From 39d610a53a116f6d82fd1c597bc3f234bc95c661 Mon Sep 17 00:00:00 2001 From: NguyenHal Date: Mon, 1 Jun 2026 17:08:45 +0700 Subject: [PATCH 01/18] feat: selfhost-layers and first initial testing success from cf worker --- .env.example | 6 + .github/workflows/release.yml | 64 + .gitignore | 2 + bundle.json | 1 + bundle.sha256 | 1 + layers/auth/shared/permissions.ts | 4 +- layers/selfhost/CLAUDE.md | 109 + layers/selfhost/SMOKE-TEST.md | 215 + layers/selfhost/app/api/useSelfhostApi.ts | 72 + .../Selfhost/SelfhostSecretsCard.vue | 182 + .../selfhost/app/pages/settings/self-host.vue | 285 + .../plugins/99.contribute.selfhost.client.ts | 15 + layers/selfhost/nuxt.config.ts | 5 + layers/selfhost/package.json | 6 + .../selfhost/server/api/selfhost/audit.get.ts | 16 + .../server/api/selfhost/cf-accounts.post.ts | 13 + .../server/api/selfhost/deploy.post.ts | 191 + .../server/api/selfhost/disconnect.post.ts | 27 + .../server/api/selfhost/secrets.get.ts | 28 + .../server/api/selfhost/secrets.patch.ts | 54 + .../server/api/selfhost/status.get.ts | 32 + .../server/api/selfhost/test-email.post.ts | 33 + layers/selfhost/server/db/schema.ts | 49 + layers/selfhost/server/services/cloudflare.ts | 397 ++ layers/selfhost/server/services/github.ts | 75 + layers/selfhost/server/services/secrets.ts | 80 + layers/selfhost/shared/schemas/deploy.ts | 12 + layers/selfhost/shared/schemas/secret.ts | 14 + layers/selfhost/test/unit/cloudflare.test.ts | 250 + layers/selfhost/test/unit/github.test.ts | 168 + nuxt.config.ts | 3 + package.json | 1 + scripts/make-deploy-bundle.mjs | 86 + .../sqlite/0016_aromatic_jack_murdock.sql | 30 + .../sqlite/0017_brave_pete_wisdom.sql | 12 + .../migrations/sqlite/meta/0011_snapshot.json | 3502 +++++++------ .../migrations/sqlite/meta/0012_snapshot.json | 4054 ++++++++------- .../migrations/sqlite/meta/0013_snapshot.json | 4604 ++++++++--------- .../migrations/sqlite/meta/0014_snapshot.json | 4604 ++++++++--------- .../migrations/sqlite/meta/0015_snapshot.json | 4604 ++++++++--------- .../migrations/sqlite/meta/0016_snapshot.json | 2512 +++++++++ .../migrations/sqlite/meta/0017_snapshot.json | 2594 ++++++++++ .../db/migrations/sqlite/meta/_journal.json | 248 +- server/utils/crypto.ts | 29 + test/unit/crypto.test.ts | 41 + vitest.config.ts | 1 + 46 files changed, 18502 insertions(+), 10829 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 bundle.json create mode 100644 bundle.sha256 create mode 100644 layers/selfhost/CLAUDE.md create mode 100644 layers/selfhost/SMOKE-TEST.md create mode 100644 layers/selfhost/app/api/useSelfhostApi.ts create mode 100644 layers/selfhost/app/components/Selfhost/SelfhostSecretsCard.vue create mode 100644 layers/selfhost/app/pages/settings/self-host.vue create mode 100644 layers/selfhost/app/plugins/99.contribute.selfhost.client.ts create mode 100644 layers/selfhost/nuxt.config.ts create mode 100644 layers/selfhost/package.json create mode 100644 layers/selfhost/server/api/selfhost/audit.get.ts create mode 100644 layers/selfhost/server/api/selfhost/cf-accounts.post.ts create mode 100644 layers/selfhost/server/api/selfhost/deploy.post.ts create mode 100644 layers/selfhost/server/api/selfhost/disconnect.post.ts create mode 100644 layers/selfhost/server/api/selfhost/secrets.get.ts create mode 100644 layers/selfhost/server/api/selfhost/secrets.patch.ts create mode 100644 layers/selfhost/server/api/selfhost/status.get.ts create mode 100644 layers/selfhost/server/api/selfhost/test-email.post.ts create mode 100644 layers/selfhost/server/db/schema.ts create mode 100644 layers/selfhost/server/services/cloudflare.ts create mode 100644 layers/selfhost/server/services/github.ts create mode 100644 layers/selfhost/server/services/secrets.ts create mode 100644 layers/selfhost/shared/schemas/deploy.ts create mode 100644 layers/selfhost/shared/schemas/secret.ts create mode 100644 layers/selfhost/test/unit/cloudflare.test.ts create mode 100644 layers/selfhost/test/unit/github.test.ts create mode 100644 scripts/make-deploy-bundle.mjs create mode 100644 server/db/migrations/sqlite/0016_aromatic_jack_murdock.sql create mode 100644 server/db/migrations/sqlite/0017_brave_pete_wisdom.sql create mode 100644 server/db/migrations/sqlite/meta/0016_snapshot.json create mode 100644 server/db/migrations/sqlite/meta/0017_snapshot.json create mode 100644 server/utils/crypto.ts create mode 100644 test/unit/crypto.test.ts diff --git a/.env.example b/.env.example index 592786b2..359b1635 100644 --- a/.env.example +++ b/.env.example @@ -45,6 +45,12 @@ NUXT_GOOGLE_CLIENT_SECRET= NUXT_GITHUB_CLIENT_ID= NUXT_GITHUB_CLIENT_SECRET= +# ============================================================================= +# Github release repo +# ============================================================================= +NUXT_GITHUB_RELEASE_REPO="thecodeorigin/nuxt-template" +NUXT_GITHUB_TOKEN="" + # ============================================================================= # SePay (Vietnamese bank transfer payments) # ============================================================================= diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..b49ce65b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,64 @@ +name: Release + +on: + push: + tags: + - 'v*' + +permissions: + contents: write + +jobs: + release: + name: Build self-host bundle + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 10 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build (Cloudflare Workers preset) + run: pnpm build + env: + NITRO_PRESET: cloudflare-module + + - name: Pack self-host bundle + run: node scripts/make-deploy-bundle.mjs + env: + RELEASE_TAG: ${{ github.ref_name }} + + - name: Pack tarball (manual deploy convenience) + run: tar -czf nuxt-template-${{ github.ref_name }}-cloudflare.tar.gz -C .output . + + - name: Read SHA-256 + id: hash + run: echo "sha256=$(cat bundle.sha256)" >> "$GITHUB_OUTPUT" + + - name: Create release + uses: softprops/action-gh-release@v2 + with: + files: | + bundle.json + nuxt-template-*-cloudflare.tar.gz + body: | + Self-host deployable bundle for `${{ github.ref_name }}`. + + sha256:${{ steps.hash.outputs.sha256 }} + + **For users self-hosting:** the application running on the upstream + instance will fetch `bundle.json` from this release automatically + when you click Deploy on the Self-hosting settings page. The SHA-256 + above is verified before the worker is uploaded to your account. + + **For manual deploy:** download `nuxt-template-${{ github.ref_name }}-cloudflare.tar.gz`, + extract, and run `wrangler deploy` against your account. diff --git a/.gitignore b/.gitignore index b3e54f2b..3ffdd4c8 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,5 @@ test-results/ ux/ .wrangler + +.tmp/* \ No newline at end of file diff --git a/bundle.json b/bundle.json new file mode 100644 index 00000000..5e8005fc --- /dev/null +++ b/bundle.json @@ -0,0 +1 @@ +{ "main": "index.mjs", "compatibilityDate": "2025-02-11", "modules": { "chunks/_/auth.mjs": "aW1wb3J0e0ggYXMgdCxJIGFzIGEsSiBhcyBpLGMgYXMgcyxrIGFzIGUsZCBhcyBuLGggYXMgcix1IGFzIG99ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtTIGFzIGQsYiBhcyB1LHcgYXMgY31mcm9tIi4vc2Vzc2lvbi5tanMiO2Z1bmN0aW9uIGRlZmluZUF1dGhlbnRpY2F0ZWRIYW5kbGVyKGwpe3JldHVybiB0KGFzeW5jIHQ9Pnt2YXIgZyxoLGY7Y29uc3Qgdj1hKHQsInNlc3Npb25pZCIpfHxpKHQsIngtc2Vzc2lvbi1pZCIpO2lmKCF2KXRocm93IHMoe3N0YXR1c0NvZGU6NDAxLHN0YXR1c01lc3NhZ2U6IlVuYXV0aG9yaXplZCJ9KTtjb25zdCB3PWF3YWl0IGUuZ2V0KGBzZXNzaW9uOiR7dn1gKTtpZighdyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7bGV0IHo7aWYoKG51bGwhPShnPXcuZ2VuZXJhdGlvbik/ZzowKTxkKXtjb25zdCB0PWF3YWl0IG4ucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6cihvLmlkLHcuaWQpfSk7aWYoIXQpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDEsc3RhdHVzTWVzc2FnZToiVW5hdXRob3JpemVkIn0pO3o9YXdhaXQgdSh0LHtwcm92aWRlcjp3LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOncuYWN0aXZlT3JnYW5pemF0aW9uSWQsaW1wZXJzb25hdG9yOncuaW1wZXJzb25hdG9yfSksYXdhaXQgYyh2LHopfWVsc2Ugej17Li4udyxhYmlsaXRpZXM6bnVsbCE9KGg9dy5hYmlsaXRpZXMpP2g6W10sYWN0aXZlT3JnYW5pemF0aW9uSWQ6bnVsbCE9KGY9dy5hY3RpdmVPcmdhbml6YXRpb25JZCk/ZjpudWxsfTtyZXR1cm4gdC5jb250ZXh0LmF1dGhVc2VyPXosdC5jb250ZXh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkPXouYWN0aXZlT3JnYW5pemF0aW9uSWQsbCh0LHopfSl9ZXhwb3J0e2RlZmluZUF1dGhlbnRpY2F0ZWRIYW5kbGVyIGFzIGR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hdXRoLm1qcy5tYXAK", "chunks/_/billing.mjs": "aW1wb3J0e28gYXMgdCxzIGFzIGEsVCBhcyBuLGE3IGFzIG8sRyBhcyBzfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCByPXQoe2Ftb3VudDpuKCkuaW50KCkubWluKDFlNCkubWF4KDVlNyl9KSxlPXQoe2lkOm8oW2EoKSxzKCldKS50cmFuc2Zvcm0oU3RyaW5nKSx0cmFuc2ZlckFtb3VudDpuKCkuaW50KCkucG9zaXRpdmUoKSx0cmFuc2ZlclR5cGU6YSgpLGNvbnRlbnQ6YSgpLmRlZmF1bHQoIiIpLGNvZGU6YSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKX0pO2V4cG9ydHtyIGFzIEMsZSBhcyBTfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmlsbGluZy5tanMubWFwCg==", "chunks/_/casl.mjs": "aW1wb3J0e2MgYXMgZSxtIGFzIHR9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGF9ZnJvbSIuL2F1dGgubWpzIjtpbXBvcnR7cyBhcyBuLHAgYXMgcn1mcm9tIi4vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgbz1uZXcgTWFwO2FzeW5jIGZ1bmN0aW9uIGV2YWx1YXRlQWJpbGl0eVN0cmluZyh0LGEscyl7dmFyIGksbDtpZighbihhLmFiaWxpdGllcyx0KSlyZXR1cm57YWxsb3dlZDohMX07Y29uc3R7c3ViamVjdDp1LHNjb3BlOmR9PXIodCk7aWYoInNlbGYiIT09ZClyZXR1cm57YWxsb3dlZDohMH07Y29uc3QgYz1vLmdldCh1KTtpZighYyl0aHJvdyBlKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOmBTdWJqZWN0ICIke3V9IiBub3QgcmVnaXN0ZXJlZC4gQ2FsbCBkZWZpbmVTdWJqZWN0KCcke3V9JywgeyBmZXRjaCB9KSBiZWZvcmUgdXNpbmcgYSAiOnNlbGYiIGFiaWxpdHkuYH0pO2NvbnN0IGY9bnVsbCE9KGk9Yy5wYXJhbU5hbWUpP2k6ImlkIix3PW51bGwhPShsPWMub3duZXJLZXkpP2w6InVzZXJfaWQiLG09cy5nZXRQYXJhbShmKTtpZighbSlyZXR1cm57YWxsb3dlZDohMX07Y29uc3QgZz1hd2FpdCBjLmZldGNoKG0scy5ldmVudCk7cmV0dXJuIGc/Z1t3XSE9PWEuaWQ/e2FsbG93ZWQ6ITF9OnthbGxvd2VkOiEwLGV4dHJhczp7W3VdOmd9fTp7YWxsb3dlZDohMX19YXN5bmMgZnVuY3Rpb24gcnVuQXV0aG9yaXplZEhhbmRsZXIoYSxuLHIsbyl7dmFyIHM7Y29uc3QgaT1hd2FpdCBhc3luYyBmdW5jdGlvbihlLGEsbil7Y29uc3Qgcj17ZXZlbnQ6bixnZXRQYXJhbTplPT50KG4sZSl9O2Zvcihjb25zdCB0IG9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT1hd2FpdCBldmFsdWF0ZUFiaWxpdHlTdHJpbmcodCxhLHIpO2lmKGUuYWxsb3dlZClyZXR1cm4gZTtjb250aW51ZX1jb25zdCBlPWF3YWl0IHQobixhKTtpZihlLmFsbG93ZWQpe2NvbnN0e2FsbG93ZWQ6dCwuLi5hfT1lO3JldHVybnthbGxvd2VkOnQsZXh0cmFzOmF9fX1yZXR1cm57YWxsb3dlZDohMX19KGEsbixyKTtpZighaS5hbGxvd2VkKXRocm93IGUoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6IkZvcmJpZGRlbiJ9KTtyZXR1cm4gbyhyLHtzZXNzaW9uOm4sLi4ubnVsbCE9KHM9aS5leHRyYXMpP3M6e319KX1mdW5jdGlvbiBkZWZpbmVBdXRob3JpemVkSGFuZGxlcihlLHQpe3JldHVybiBhKChhLG4pPT5ydW5BdXRob3JpemVkSGFuZGxlcihlLG4sYSx0KSl9ZXhwb3J0e2RlZmluZUF1dGhvcml6ZWRIYW5kbGVyIGFzIGR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jYXNsLm1qcy5tYXAK", "chunks/_/cloudflare.mjs": "aW1wb3J0e2MgYXMgdH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgZT0iaHR0cHM6Ly9hcGkuY2xvdWRmbGFyZS5jb20vY2xpZW50L3Y0Ijthc3luYyBmdW5jdGlvbiBjZih0LGEscyxuKXtyZXR1cm4oYXdhaXQgZmV0Y2goYCR7ZX0ke3N9YCx7bWV0aG9kOmEsaGVhZGVyczp7QXV0aG9yaXphdGlvbjpgQmVhcmVyICR7dH1gLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpuP0pTT04uc3RyaW5naWZ5KG4pOnZvaWQgMH0pKS5qc29uKCl9YXN5bmMgZnVuY3Rpb24gY2ZSYXcodCxhLHMsbil7cmV0dXJuIGZldGNoKGAke2V9JHtzfWAse21ldGhvZDphLGhlYWRlcnM6e0F1dGhvcml6YXRpb246YEJlYXJlciAke3R9YCwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6dm9pZCAwfSl9YXN5bmMgZnVuY3Rpb24gdmVyaWZ5VG9rZW4oZSl7dmFyIGE7Y29uc3Qgcz1hd2FpdCBjZihlLCJHRVQiLCIvdXNlci90b2tlbnMvdmVyaWZ5Iik7aWYoImFjdGl2ZSIhPT0obnVsbD09KGE9bnVsbD09cz92b2lkIDA6cy5yZXN1bHQpP3ZvaWQgMDphLnN0YXR1cykpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiVG9rZW4gaXMgbm90IGFjdGl2ZSJ9KTtyZXR1cm4gcy5yZXN1bHR9YXN5bmMgZnVuY3Rpb24gbGlzdEFjY291bnRzKGUpe3ZhciBhO2NvbnN0IHM9YXdhaXQgY2YoZSwiR0VUIiwiL2FjY291bnRzIik7aWYoIShudWxsPT0oYT1udWxsPT1zP3ZvaWQgMDpzLnJlc3VsdCk/dm9pZCAwOmEubGVuZ3RoKSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJUb2tlbiBoYXMgbm8gYWNjb3VudCBhY2Nlc3MifSk7cmV0dXJuIHMucmVzdWx0Lm1hcCh0PT4oe2lkOnQuaWQsbmFtZTp0Lm5hbWV9KSl9YXN5bmMgZnVuY3Rpb24gcHJvYmVDYXBhYmlsaXRpZXModCxhKXtjb25zdCBzPWBfcHJvYmUtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX1gLG49W107e2NvbnN0IG89bmV3IEZvcm1EYXRhO28uYXBwZW5kKCJtZXRhZGF0YSIsbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHttYWluX21vZHVsZToiaW5kZXgubWpzIixjb21wYXRpYmlsaXR5X2RhdGU6IjIwMjUtMDEtMDEifSldLHt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pKSxvLmFwcGVuZCgiaW5kZXgubWpzIixuZXcgQmxvYihbJ2V4cG9ydCBkZWZhdWx0IHsgZmV0Y2g6ICgpID0+IG5ldyBSZXNwb25zZSgiIikgfSddLHt0eXBlOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0K21vZHVsZSJ9KSwiaW5kZXgubWpzIik7Y29uc3QgaT1hd2FpdCBmZXRjaChgJHtlfS9hY2NvdW50cy8ke2F9L3dvcmtlcnMvc2NyaXB0cy8ke3N9YCx7bWV0aG9kOiJQVVQiLGhlYWRlcnM6e0F1dGhvcml6YXRpb246YEJlYXJlciAke3R9YH0sYm9keTpvfSk7NDAzPT09aS5zdGF0dXM/bi5wdXNoKCJXb3JrZXJzIFNjcmlwdHMiKTppLm9rJiZhd2FpdCBjZlJhdyh0LCJERUxFVEUiLGAvYWNjb3VudHMvJHthfS93b3JrZXJzL3NjcmlwdHMvJHtzfWApfXtjb25zdCBlPWF3YWl0IGNmKHQsIlBPU1QiLGAvYWNjb3VudHMvJHthfS9kMS9kYXRhYmFzZWAse25hbWU6c30pOyEobnVsbD09ZT92b2lkIDA6ZS5zdWNjZXNzKSYmSlNPTi5zdHJpbmdpZnkoZSkuaW5jbHVkZXMoImZvcmJpZGRlbiIpP24ucHVzaCgiRDEiKToobnVsbD09ZT92b2lkIDA6ZS5zdWNjZXNzKSYmYXdhaXQgY2ZSYXcodCwiREVMRVRFIixgL2FjY291bnRzLyR7YX0vZDEvZGF0YWJhc2UvJHtlLnJlc3VsdC51dWlkfWApfXtjb25zdCBlPWF3YWl0IGNmKHQsIlBPU1QiLGAvYWNjb3VudHMvJHthfS9zdG9yYWdlL2t2L25hbWVzcGFjZXNgLHt0aXRsZTpzfSk7IShudWxsPT1lP3ZvaWQgMDplLnN1Y2Nlc3MpJiZKU09OLnN0cmluZ2lmeShlKS5pbmNsdWRlcygiZm9yYmlkZGVuIik/bi5wdXNoKCJLViIpOihudWxsPT1lP3ZvaWQgMDplLnN1Y2Nlc3MpJiZhd2FpdCBjZlJhdyh0LCJERUxFVEUiLGAvYWNjb3VudHMvJHthfS9zdG9yYWdlL2t2L25hbWVzcGFjZXMvJHtlLnJlc3VsdC5pZH1gKX17Y29uc3QgZT1hd2FpdCBjZih0LCJQT1NUIixgL2FjY291bnRzLyR7YX0vcjIvYnVja2V0c2Ase25hbWU6c30pO2lmKG51bGw9PWU/dm9pZCAwOmUuc3VjY2Vzcylhd2FpdCBjZlJhdyh0LCJERUxFVEUiLGAvYWNjb3VudHMvJHthfS9yMi9idWNrZXRzLyR7c31gKTtlbHNle2NvbnN0IHQ9SlNPTi5zdHJpbmdpZnkoZSkudG9Mb3dlckNhc2UoKTt0LmluY2x1ZGVzKCJmb3JiaWRkZW4iKT9uLnB1c2goIlIyIik6L25vdCBlbmFibGVkfHN1YnNjcmlwdGlvbnx0ZXJtcy8udGVzdCh0KSYmbi5wdXNoKCJSMiAobm90IGVuYWJsZWQgb24gYWNjb3VudCDigJQgYWNjZXB0IFIyIHRlcm1zIGluIENGIGRhc2hib2FyZCBmaXJzdCkiKX19NDAzPT09KGF3YWl0IGNmUmF3KHQsIkdFVCIsYC9hY2NvdW50cy8ke2F9L3dvcmtlcnMvc3ViZG9tYWluYCkpLnN0YXR1cyYmbi5wdXNoKCJXb3JrZXJzIFN1YmRvbWFpbiIpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIGVuc3VyZVJlc291cmNlKHQsZSxhLHMpe3ZhciBuLG87Y29uc3QgaT1hd2FpdCBjZih0LCJQT1NUIixlLGEpO2lmKG51bGw9PWk/dm9pZCAwOmkuc3VjY2VzcylyZXR1cm4gaS5yZXN1bHRbc107Y29uc3QgYz1hd2FpdCBjZih0LCJHRVQiLGUpLHI9bnVsbD09KG49bnVsbD09Yz92b2lkIDA6Yy5yZXN1bHQpP3ZvaWQgMDpuLmZpbmQodD0+dC5uYW1lPT09YS5uYW1lfHx0LnRpdGxlPT09YS50aXRsZSk7cmV0dXJuIG51bGwhPShvPW51bGw9PXI/dm9pZCAwOnJbc10pP286bnVsbH1hc3luYyBmdW5jdGlvbiBwcm92aXNpb25SZXNvdXJjZXMoZSxhLHM9Im51eHQtdGVtcGxhdGUiKXtjb25zdCBuPWF3YWl0IGVuc3VyZVJlc291cmNlKGUsYC9hY2NvdW50cy8ke2F9L2QxL2RhdGFiYXNlYCx7bmFtZTpgJHtzfS1kYmB9LCJ1dWlkIiksbz1hd2FpdCBlbnN1cmVSZXNvdXJjZShlLGAvYWNjb3VudHMvJHthfS9zdG9yYWdlL2t2L25hbWVzcGFjZXNgLHt0aXRsZTpgJHtzfS1rdmB9LCJpZCIpO2lmKGF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsYSxzKXt2YXIgbixvLGksYyxyO2NvbnN0IHU9YXdhaXQgY2YoZSwiUE9TVCIsYC9hY2NvdW50cy8ke2F9L3IyL2J1Y2tldHNgLHtuYW1lOnN9KTtpZihudWxsPT11P3ZvaWQgMDp1LnN1Y2Nlc3MpcmV0dXJuO2NvbnN0IGw9YXdhaXQgY2YoZSwiR0VUIixgL2FjY291bnRzLyR7YX0vcjIvYnVja2V0c2ApO2lmKG51bGw9PShvPW51bGw9PShuPW51bGw9PWw/dm9pZCAwOmwucmVzdWx0KT92b2lkIDA6bi5idWNrZXRzKT92b2lkIDA6by5zb21lKHQ9PnQubmFtZT09PXMpKXJldHVybjtjb25zdCBkPW51bGwhPShyPW51bGw9PShjPW51bGw9PShpPW51bGw9PXU/dm9pZCAwOnUuZXJyb3JzKT92b2lkIDA6aVswXSk/dm9pZCAwOmMubWVzc2FnZSk/cjoiVW5rbm93biByZWFzb24iLHA9L25vdCBlbmFibGVkfHN1YnNjcmlwdGlvbnx0ZXJtcy9pLnRlc3QoZCk/IiDigJQgb3BlbiB0aGUgUjIgZGFzaGJvYXJkIGFuZCBlbmFibGUgUjIgKGZyZWUgdGllciBpcyBmaW5lKSwgdGhlbiByZXRyeS4iOiIiO3Rocm93IHQoe3N0YXR1c0NvZGU6NTAyLHN0YXR1c01lc3NhZ2U6YEZhaWxlZCB0byBjcmVhdGUgUjIgYnVja2V0ICcke3N9JzogJHtkfSR7cH1gfSl9KGUsYSxgJHtzfS1ibG9iYCksIW58fCFvKXRocm93IHQoe3N0YXR1c0NvZGU6NTAyLHN0YXR1c01lc3NhZ2U6IkZhaWxlZCB0byBwcm92aXNpb24gcmVxdWlyZWQgcmVzb3VyY2VzIChEMSBvciBLVikifSk7cmV0dXJue2RiSWQ6bixrdklkOm8sYnVja2V0TmFtZTpgJHtzfS1ibG9iYH19YXN5bmMgZnVuY3Rpb24gYXBwbHlNaWdyYXRpb25zKHQsZSxhLHMpe3ZhciBuLG8saTthd2FpdCBjZih0LCJQT1NUIixgL2FjY291bnRzLyR7ZX0vZDEvZGF0YWJhc2UvJHthfS9xdWVyeWAse3NxbDoiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgZDFfbWlncmF0aW9ucyAobmFtZSBURVhUIFBSSU1BUlkgS0VZLCBhcHBsaWVkX2F0IFRFWFQpIn0pO2Zvcihjb25zdCBjIG9mIHMpe2NvbnN0IHM9YXdhaXQgY2YodCwiUE9TVCIsYC9hY2NvdW50cy8ke2V9L2QxL2RhdGFiYXNlLyR7YX0vcXVlcnlgLHtzcWw6IlNFTEVDVCBuYW1lIEZST00gZDFfbWlncmF0aW9ucyBXSEVSRSBuYW1lID0gPyIscGFyYW1zOltjLm5hbWVdfSk7KG51bGw9PShpPW51bGw9PShvPW51bGw9PShuPW51bGw9PXM/dm9pZCAwOnMucmVzdWx0KT92b2lkIDA6blswXSk/dm9pZCAwOm8ucmVzdWx0cyk/dm9pZCAwOmkubGVuZ3RoKXx8KGF3YWl0IGNmKHQsIlBPU1QiLGAvYWNjb3VudHMvJHtlfS9kMS9kYXRhYmFzZS8ke2F9L3F1ZXJ5YCx7c3FsOmMuc3FsfSksYXdhaXQgY2YodCwiUE9TVCIsYC9hY2NvdW50cy8ke2V9L2QxL2RhdGFiYXNlLyR7YX0vcXVlcnlgLHtzcWw6IklOU0VSVCBJTlRPIGQxX21pZ3JhdGlvbnMgKG5hbWUsIGFwcGxpZWRfYXQpIFZBTFVFUyAoPywgZGF0ZXRpbWUoKSkiLHBhcmFtczpbYy5uYW1lXX0pKX19Y29uc3QgYT17anM6ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLG1qczoiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsY2pzOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iixjc3M6InRleHQvY3NzIixodG1sOiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLGh0bToidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iixqc29uOiJhcHBsaWNhdGlvbi9qc29uIixtYXA6ImFwcGxpY2F0aW9uL2pzb24iLHR4dDoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIseG1sOiJhcHBsaWNhdGlvbi94bWwiLHN2ZzoiaW1hZ2Uvc3ZnK3htbCIscG5nOiJpbWFnZS9wbmciLGpwZzoiaW1hZ2UvanBlZyIsanBlZzoiaW1hZ2UvanBlZyIsZ2lmOiJpbWFnZS9naWYiLHdlYnA6ImltYWdlL3dlYnAiLGF2aWY6ImltYWdlL2F2aWYiLGljbzoiaW1hZ2UveC1pY29uIix3b2ZmOiJmb250L3dvZmYiLHdvZmYyOiJmb250L3dvZmYyIix0dGY6ImZvbnQvdHRmIixvdGY6ImZvbnQvb3RmIixlb3Q6ImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0Iix3YXNtOiJhcHBsaWNhdGlvbi93YXNtIixwZGY6ImFwcGxpY2F0aW9uL3BkZiIsd2VibWFuaWZlc3Q6ImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24ifTtmdW5jdGlvbiBtaW1lRnJvbVBhdGgodCl7dmFyIGUscyxuO2NvbnN0IG89bnVsbCE9KHM9bnVsbD09KGU9dC5zcGxpdCgiLiIpLnBvcCgpKT92b2lkIDA6ZS50b0xvd2VyQ2FzZSgpKT9zOiIiO3JldHVybiBudWxsIT0obj1hW29dKT9uOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWFzeW5jIGZ1bmN0aW9uIHVwbG9hZEFzc2V0cyhhLHMsbixvKXt2YXIgaSxjLHIsdSxsLGQ7Y29uc3QgcD1PYmplY3QuZW50cmllcyhvKTtpZigwPT09cC5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZj17fSxtPXt9LGI9e307Zm9yKGNvbnN0W3QsZV1vZiBwKXtjb25zdCBhPVVpbnQ4QXJyYXkuZnJvbShhdG9iKGUpLHQ9PnQuY2hhckNvZGVBdCgwKSkscz1hd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgiU0hBLTI1NiIsYS5idWZmZXIuc2xpY2UoYS5ieXRlT2Zmc2V0LGEuYnl0ZU9mZnNldCthLmJ5dGVMZW5ndGgpKSxuPUFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkocykpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpLnNsaWNlKDAsMzIpO2ZbdF09e2hhc2g6bixzaXplOmEuYnl0ZUxlbmd0aH0sbVtuXT1lLGJbbl09bWltZUZyb21QYXRoKHQpfWNvbnN0IHc9YXdhaXQgY2YoYSwiUE9TVCIsYC9hY2NvdW50cy8ke3N9L3dvcmtlcnMvc2NyaXB0cy8ke259L2Fzc2V0cy11cGxvYWQtc2Vzc2lvbmAse21hbmlmZXN0OmZ9KTtpZighKG51bGw9PXc/dm9pZCAwOncuc3VjY2Vzcyl8fCF3LnJlc3VsdCl0aHJvdyB0KHtzdGF0dXNDb2RlOjUwMixzdGF0dXNNZXNzYWdlOmBGYWlsZWQgdG8gc3RhcnQgYXNzZXRzIHVwbG9hZCBzZXNzaW9uOiAke251bGwhPShyPW51bGw9PShjPW51bGw9PShpPW51bGw9PXc/dm9pZCAwOncuZXJyb3JzKT92b2lkIDA6aVswXSk/dm9pZCAwOmMubWVzc2FnZSk/cjoidW5rbm93biJ9YH0pO2xldCB2PXcucmVzdWx0Lmp3dDtjb25zdCBoPW51bGwhPSh1PXcucmVzdWx0LmJ1Y2tldHMpP3U6W107Zm9yKGNvbnN0IGEgb2YgaCl7aWYoMD09PWEubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IG49bmV3IEZvcm1EYXRhO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0IGU9bVt0XSxhPW51bGwhPShsPWJbdF0pP2w6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI7bi5hcHBlbmQodCxuZXcgQmxvYihbZV0se3R5cGU6YX0pLHQpfWNvbnN0IG89YXdhaXQgZmV0Y2goYCR7ZX0vYWNjb3VudHMvJHtzfS93b3JrZXJzL2Fzc2V0cy91cGxvYWQ/YmFzZTY0PXRydWVgLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6e0F1dGhvcml6YXRpb246YEJlYXJlciAke3Z9YH0sYm9keTpufSk7aWYoIW8ub2spdGhyb3cgdCh7c3RhdHVzQ29kZTo1MDIsc3RhdHVzTWVzc2FnZTpgQXNzZXQgYnVja2V0IHVwbG9hZCBmYWlsZWQgKCR7by5zdGF0dXN9KTogJHthd2FpdCBvLnRleHQoKX1gfSk7Y29uc3QgaT1hd2FpdCBvLmpzb24oKTsobnVsbD09KGQ9aS5yZXN1bHQpP3ZvaWQgMDpkLmp3dCkmJih2PWkucmVzdWx0Lmp3dCl9cmV0dXJuIHZ9YXN5bmMgZnVuY3Rpb24gdXBsb2FkV29ya2VyKGEscyxuLG8saSxjLHIpe2NvbnN0IHU9bmV3IEZvcm1EYXRhLGw9W3t0eXBlOiJkMSIsbmFtZToiREIiLGlkOmkuZGJJZH0se3R5cGU6Imt2X25hbWVzcGFjZSIsbmFtZToiS1YiLG5hbWVzcGFjZV9pZDppLmt2SWR9LHt0eXBlOiJyMl9idWNrZXQiLG5hbWU6IkJMT0IiLGJ1Y2tldF9uYW1lOmkuYnVja2V0TmFtZX0se3R5cGU6InBsYWluX3RleHQiLG5hbWU6IkRFUExPWUVEX1ZFUlNJT04iLHRleHQ6Y31dO3ImJmwucHVzaCh7dHlwZToiYXNzZXRzIixuYW1lOiJBU1NFVFMifSk7Y29uc3QgZD17bWFpbl9tb2R1bGU6by5tYWluLGNvbXBhdGliaWxpdHlfZGF0ZTpvLmNvbXBhdGliaWxpdHlEYXRlLGNvbXBhdGliaWxpdHlfZmxhZ3M6WyJub2RlanNfY29tcGF0Il0sYmluZGluZ3M6bH07ZnVuY3Rpb24gYjY0ZGVjb2RlKHQpe2NvbnN0IGU9VWludDhBcnJheS5mcm9tKGF0b2IodCksdD0+dC5jaGFyQ29kZUF0KDApKTtyZXR1cm4gZS5idWZmZXIuc2xpY2UoZS5ieXRlT2Zmc2V0LGUuYnl0ZU9mZnNldCtlLmJ5dGVMZW5ndGgpfXImJihkLmFzc2V0cz17and0OnIsY29uZmlnOntodG1sX2hhbmRsaW5nOiJhdXRvLXRyYWlsaW5nLXNsYXNoIixub3RfZm91bmRfaGFuZGxpbmc6InNpbmdsZS1wYWdlLWFwcGxpY2F0aW9uIn19KSx1LmFwcGVuZCgibWV0YWRhdGEiLG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkKV0se3R5cGU6ImFwcGxpY2F0aW9uL2pzb24ifSkpLHUuYXBwZW5kKG8ubWFpbixuZXcgQmxvYihbYjY0ZGVjb2RlKG8ubW9kdWxlc1tvLm1haW5dKV0se3R5cGU6ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQrbW9kdWxlIn0pLG8ubWFpbik7Zm9yKGNvbnN0W3QsZV1vZiBPYmplY3QuZW50cmllcyhvLm1vZHVsZXMpKXQhPT1vLm1haW4mJnUuYXBwZW5kKHQsbmV3IEJsb2IoW2I2NGRlY29kZShlKV0se3R5cGU6ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQrbW9kdWxlIn0pLHQpO2NvbnN0IHA9YXdhaXQgZmV0Y2goYCR7ZX0vYWNjb3VudHMvJHtzfS93b3JrZXJzL3NjcmlwdHMvJHtufWAse21ldGhvZDoiUFVUIixoZWFkZXJzOntBdXRob3JpemF0aW9uOmBCZWFyZXIgJHthfWB9LGJvZHk6dX0pO2lmKCFwLm9rKXRocm93IHQoe3N0YXR1c0NvZGU6NTAyLHN0YXR1c01lc3NhZ2U6YFdvcmtlciB1cGxvYWQgZmFpbGVkOiAke2F3YWl0IHAudGV4dCgpfWB9KX1hc3luYyBmdW5jdGlvbiBzZXRXb3JrZXJTZWNyZXQoZSxhLHMsbixvLGk9InNlY3JldF90ZXh0Iil7dmFyIGMscix1O2NvbnN0IGw9YXdhaXQgY2YoZSwiUFVUIixgL2FjY291bnRzLyR7YX0vd29ya2Vycy9zY3JpcHRzLyR7c30vc2VjcmV0c2Ase25hbWU6bix0ZXh0Om8sdHlwZTppfSk7aWYoIShudWxsPT1sP3ZvaWQgMDpsLnN1Y2Nlc3MpKXtjb25zdCBlPW51bGwhPSh1PW51bGw9PShyPW51bGw9PShjPW51bGw9PWw/dm9pZCAwOmwuZXJyb3JzKT92b2lkIDA6Y1swXSk/dm9pZCAwOnIubWVzc2FnZSk/dToiVW5rbm93biBlcnJvciI7dGhyb3cgdCh7c3RhdHVzQ29kZTo1MDIsc3RhdHVzTWVzc2FnZTpgRmFpbGVkIHRvIHNldCB3b3JrZXIgc2VjcmV0ICR7bn06ICR7ZX1gfSl9fWFzeW5jIGZ1bmN0aW9uIGVuYWJsZVN1YmRvbWFpbihlLGEscyl7dmFyIG47Y29uc3Qgbz1hd2FpdCBjZihlLCJHRVQiLGAvYWNjb3VudHMvJHthfS93b3JrZXJzL3N1YmRvbWFpbmApLGk9bnVsbD09KG49bnVsbD09bz92b2lkIDA6by5yZXN1bHQpP3ZvaWQgMDpuLnN1YmRvbWFpbjtpZighaSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyB3b3JrZXJzLmRldiBzdWJkb21haW4gY29uZmlndXJlZCBmb3IgdGhpcyBhY2NvdW50In0pO3JldHVybiBhd2FpdCBjZihlLCJQT1NUIixgL2FjY291bnRzLyR7YX0vd29ya2Vycy9zY3JpcHRzLyR7c30vc3ViZG9tYWluYCx7ZW5hYmxlZDohMH0pLGBodHRwczovLyR7c30uJHtpfS53b3JrZXJzLmRldmB9ZXhwb3J0e3Byb3Zpc2lvblJlc291cmNlcyBhcyBhLGFwcGx5TWlncmF0aW9ucyBhcyBiLHVwbG9hZFdvcmtlciBhcyBjLGVuYWJsZVN1YmRvbWFpbiBhcyBlLGxpc3RBY2NvdW50cyBhcyBsLHByb2JlQ2FwYWJpbGl0aWVzIGFzIHAsc2V0V29ya2VyU2VjcmV0IGFzIHMsdXBsb2FkQXNzZXRzIGFzIHUsdmVyaWZ5VG9rZW4gYXMgdn07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb3VkZmxhcmUubWpzLm1hcAo=", "chunks/_/deploy.mjs": "aW1wb3J0e28scyBhcyBufWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBhPW8oe3Rva2VuOm4oKS5taW4oMjApLm1heCgyMDApLm9wdGlvbmFsKCksYWNjb3VudF9pZDpuKCkubWluKDgpLm1heCg2NCkub3B0aW9uYWwoKX0pLHQ9byh7dG9rZW46bigpLm1pbigyMCkubWF4KDIwMCl9KTtleHBvcnR7dCBhcyBDLGEgYXMgRH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlcGxveS5tanMubWFwCg==", "chunks/_/dispatch.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIGksZiBhcyBhLGcgYXMgbixoIGFzIHQsdSBhcyBvLGkgYXMgcixqIGFzIHMsbH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2kgYXMgbX1mcm9tIi4vdXNlci1lbWFpbC5tanMiO2FzeW5jIGZ1bmN0aW9uIGdldERpc3BhdGNoT3B0aW9ucygpe2NvbnN0IG89YXdhaXQgZS5zZWxlY3Qoe2lkOmkuaWQsbmFtZTppLm5hbWV9KS5mcm9tKGkpLm9yZGVyQnkoYShpLm5hbWUpKSxyPWF3YWl0IGUuc2VsZWN0KHtpZDpuLmlkLG5hbWU6bi5uYW1lLG9yZ05hbWU6aS5uYW1lfSkuZnJvbShuKS5pbm5lckpvaW4oaSx0KGkuaWQsbi5vcmdhbml6YXRpb25faWQpKS5vcmRlckJ5KGEoaS5uYW1lKSxhKG4ubmFtZSkpO3JldHVybntvcmdhbml6YXRpb25zOm8ubWFwKGU9Pih7aWQ6ZS5pZCxsYWJlbDplLm5hbWV9KSkscm9sZXM6ci5tYXAoZT0+KHtpZDplLmlkLGxhYmVsOmAke2Uub3JnTmFtZX0gwrcgJHtlLm5hbWV9YH0pKX19Y29uc3QgYz17aWQ6by5pZCxwcmltYXJ5X2VtYWlsOm8ucHJpbWFyeV9lbWFpbCxuYW1lOm8ubmFtZSxub3RpZmljYXRpb25fcHJlZnM6by5ub3RpZmljYXRpb25fcHJlZnN9O2FzeW5jIGZ1bmN0aW9uIHJlc29sdmVEaXNwYXRjaFJlY2lwaWVudHMoaSl7Y29uc3QgYT1uZXcgTWFwLGFkZD1lPT57Zm9yKGNvbnN0IGkgb2YgZSlhLnNldChpLmlkLGkpfTtpLmFsbFVzZXJzP2FkZChhd2FpdCBlLnNlbGVjdChjKS5mcm9tKG8pKTooaS5vcmdhbml6YXRpb25JZHMubGVuZ3RoJiZhZGQoYXdhaXQgZS5zZWxlY3QoYykuZnJvbShyKS5pbm5lckpvaW4obyx0KG8uaWQsci51c2VyX2lkKSkud2hlcmUocyhyLm9yZ2FuaXphdGlvbl9pZCxpLm9yZ2FuaXphdGlvbklkcykpKSxpLnJvbGVJZHMubGVuZ3RoJiZhZGQoYXdhaXQgZS5zZWxlY3QoYykuZnJvbShsKS5pbm5lckpvaW4ocix0KHIuaWQsbC5tZW1iZXJfaWQpKS5pbm5lckpvaW4obyx0KG8uaWQsci51c2VyX2lkKSkud2hlcmUocyhsLnJvbGVfaWQsaS5yb2xlSWRzKSkpLGkuZW1haWxzLmxlbmd0aCYmYWRkKGF3YWl0IGUuc2VsZWN0KGMpLmZyb20obykud2hlcmUocyhvLnByaW1hcnlfZW1haWwsaS5lbWFpbHMpKSkpO2NvbnN0IG49Wy4uLmEudmFsdWVzKCldLGQ9bi5maWx0ZXIoZT0+bShlLm5vdGlmaWNhdGlvbl9wcmVmcykpO3JldHVybntlbmFibGVkOmQsc2tpcHBlZENvdW50Om4ubGVuZ3RoLWQubGVuZ3RoLHRvdGFsOm4ubGVuZ3RofX1mdW5jdGlvbiBjb21wb3NlRW1haWxIdG1sKGUsaSl7cmV0dXJuYDwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5IHN0eWxlPSJmb250LWZhbWlseTpzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojMTExMTExIj48aDEgc3R5bGU9ImZvbnQtc2l6ZToxOHB4O21hcmdpbjowIDAgMTJweCI+JHtlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNlKC8iL2csIiZxdW90OyIpLnJlcGxhY2UoLycvZywiJiMzOTsiKX08L2gxPjxkaXY+JHtpfTwvZGl2PjwvYm9keT48L2h0bWw+YH1leHBvcnR7Y29tcG9zZUVtYWlsSHRtbCBhcyBjLGdldERpc3BhdGNoT3B0aW9ucyBhcyBnLHJlc29sdmVEaXNwYXRjaFJlY2lwaWVudHMgYXMgcn07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRpc3BhdGNoLm1qcy5tYXAK", "chunks/_/dispatch2.mjs": "aW1wb3J0e28gYXMgZSxhIGFzIHQscyBhcyBhLGIgYXMgbn1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgaT1lKHthbGxVc2VyczpuKCkuZGVmYXVsdCghMSksb3JnYW5pemF0aW9uSWRzOnQoYSgpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSkscm9sZUlkczp0KGEoKS5taW4oMSkpLm1heCgxMDApLmRlZmF1bHQoW10pLGVtYWlsczp0KGEoKS50cmltKCkudG9Mb3dlckNhc2UoKS5lbWFpbCgpKS5tYXgoMjAwKS5kZWZhdWx0KFtdKX0pLnJlZmluZShlPT5lLmFsbFVzZXJzfHxlLm9yZ2FuaXphdGlvbklkcy5sZW5ndGg+MHx8ZS5yb2xlSWRzLmxlbmd0aD4wfHxlLmVtYWlscy5sZW5ndGg+MCx7bWVzc2FnZToiU2VsZWN0IGF0IGxlYXN0IG9uZSByZWNpcGllbnQgY3JpdGVyaW9uIn0pLHI9LzxbXj5dKj4vZyxzPS8mbmJzcDsvZ2ksbz0vPGltZ1xiL2k7Y29uc3QgbD1lKHtmaWx0ZXI6aSxzdWJqZWN0OmEoKS50cmltKCkubWluKDEpLm1heCgyMDApLnJlZ2V4KC9eW15cclxuXSokLywiU3ViamVjdCBjYW5ub3QgY29udGFpbiBsaW5lIGJyZWFrcyIpLGJvZHk6YSgpLnRyaW0oKS5taW4oMSkubWF4KDVlNCkucmVmaW5lKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UociwiIikucmVwbGFjZShzLCIgIikudHJpbSgpLmxlbmd0aD4wfHxvLnRlc3QoZSl9LCJCb2R5IGNhbm5vdCBiZSBlbXB0eSIpfSk7ZXhwb3J0e2kgYXMgRCxsIGFzIGF9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kaXNwYXRjaDIubWpzLm1hcAo=", "chunks/_/error-500.mjs": "aW1wb3J0e1IgYXMgZX1mcm9tIi4vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IHQ9e2FwcE5hbWU6Ik51eHQiLHN0YXR1czo1MDAsc3RhdHVzVGV4dDoiSW50ZXJuYWwgc2VydmVyIGVycm9yIixkZXNjcmlwdGlvbjoiVGhpcyBwYWdlIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlLiIscmVmcmVzaDoiUmVmcmVzaCB0aGlzIHBhZ2UifSx0ZW1wbGF0ZT1yPT4ocj17Li4udCwuLi5yfSwnPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjx0aXRsZT4nK2Uoci5zdGF0dXMpKyIgLSAiK2Uoci5zdGF0dXNUZXh0KSsiIHwgIitlKHIuYXBwTmFtZSkrJzwvdGl0bGU+PG1ldGEgY2hhcnNldD0idXRmLTgiPjxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtaW5pbXVtLXNjYWxlPTEuMCIgbmFtZT0idmlld3BvcnQiPjxzY3JpcHQ+IWZ1bmN0aW9uKCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZighKGUmJmUuc3VwcG9ydHMmJmUuc3VwcG9ydHMoIm1vZHVsZXByZWxvYWQiKSkpe2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdXCcpKXIoZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2Zvcihjb25zdCBvIG9mIGUpaWYoImNoaWxkTGlzdCI9PT1vLnR5cGUpZm9yKGNvbnN0IGUgb2Ygby5hZGRlZE5vZGVzKSJMSU5LIj09PWUudGFnTmFtZSYmIm1vZHVsZXByZWxvYWQiPT09ZS5yZWwmJnIoZSl9KS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfWZ1bmN0aW9uIHIoZSl7aWYoZS5lcClyZXR1cm47ZS5lcD0hMDtjb25zdCByPWZ1bmN0aW9uKGUpe2NvbnN0IHI9e307cmV0dXJuIGUuaW50ZWdyaXR5JiYoci5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHkpLGUucmVmZXJyZXJQb2xpY3kmJihyLnJlZmVycmVyUG9saWN5PWUucmVmZXJyZXJQb2xpY3kpLCJ1c2UtY3JlZGVudGlhbHMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjoiYW5vbnltb3VzIj09PWUuY3Jvc3NPcmlnaW4/ci5jcmVkZW50aWFscz0ib21pdCI6ci5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLHJ9KGUpO2ZldGNoKGUuaHJlZixyKX19KCk7PFwvc2NyaXB0PjxzdHlsZT4qLDphZnRlciw6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS11bi1kZWZhdWx0LWJvcmRlci1jb2xvciwjZTVlN2ViKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjA7Ym94LXNpemluZzpib3JkZXItYm94fTphZnRlciw6YmVmb3Jley0tdW4tY29udGVudDoiIn1odG1se2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjB9aDEsaDJ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1oMSxoMixwe21hcmdpbjowfSosOmFmdGVyLDpiZWZvcmV7LS11bi1yb3RhdGU6MDstLXVuLXJvdGF0ZS14OjA7LS11bi1yb3RhdGUteTowOy0tdW4tcm90YXRlLXo6MDstLXVuLXNjYWxlLXg6MTstLXVuLXNjYWxlLXk6MTstLXVuLXNjYWxlLXo6MTstLXVuLXNrZXcteDowOy0tdW4tc2tldy15OjA7LS11bi10cmFuc2xhdGUteDowOy0tdW4tdHJhbnNsYXRlLXk6MDstLXVuLXRyYW5zbGF0ZS16OjA7LS11bi1wYW4teDogOy0tdW4tcGFuLXk6IDstLXVuLXBpbmNoLXpvb206IDstLXVuLXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdW4tb3JkaW5hbDogOy0tdW4tc2xhc2hlZC16ZXJvOiA7LS11bi1udW1lcmljLWZpZ3VyZTogOy0tdW4tbnVtZXJpYy1zcGFjaW5nOiA7LS11bi1udW1lcmljLWZyYWN0aW9uOiA7LS11bi1ib3JkZXItc3BhY2luZy14OjA7LS11bi1ib3JkZXItc3BhY2luZy15OjA7LS11bi1yaW5nLW9mZnNldC1zaGFkb3c6MCAwIHRyYW5zcGFyZW50Oy0tdW4tcmluZy1zaGFkb3c6MCAwIHRyYW5zcGFyZW50Oy0tdW4tc2hhZG93LWluc2V0OiA7LS11bi1zaGFkb3c6MCAwIHRyYW5zcGFyZW50Oy0tdW4tcmluZy1pbnNldDogOy0tdW4tcmluZy1vZmZzZXQtd2lkdGg6MHB4Oy0tdW4tcmluZy1vZmZzZXQtY29sb3I6I2ZmZjstLXVuLXJpbmctd2lkdGg6MHB4Oy0tdW4tcmluZy1jb2xvcjpyZ2JhKDE0NywxOTcsMjUzLC41KTstLXVuLWJsdXI6IDstLXVuLWJyaWdodG5lc3M6IDstLXVuLWNvbnRyYXN0OiA7LS11bi1kcm9wLXNoYWRvdzogOy0tdW4tZ3JheXNjYWxlOiA7LS11bi1odWUtcm90YXRlOiA7LS11bi1pbnZlcnQ6IDstLXVuLXNhdHVyYXRlOiA7LS11bi1zZXBpYTogOy0tdW4tYmFja2Ryb3AtYmx1cjogOy0tdW4tYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdW4tYmFja2Ryb3AtY29udHJhc3Q6IDstLXVuLWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdW4tYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdW4tYmFja2Ryb3AtaW52ZXJ0OiA7LS11bi1iYWNrZHJvcC1vcGFjaXR5OiA7LS11bi1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdW4tYmFja2Ryb3Atc2VwaWE6IH0uZ3JpZHtkaXNwbGF5OmdyaWR9Lm1iLTJ7bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItNHttYXJnaW4tYm90dG9tOjFyZW19Lm1heC13LTUyMHB4e21heC13aWR0aDo1MjBweH0ubWluLWgtc2NyZWVue21pbi1oZWlnaHQ6MTAwdmh9LnBsYWNlLWNvbnRlbnQtY2VudGVye3BsYWNlLWNvbnRlbnQ6Y2VudGVyfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5iZy13aGl0ZXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSl9LnB4LTJ7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LVxcWzgwcHhcXF17Zm9udC1zaXplOjgwcHh9LnRleHQtMnhse2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1cXFtcXCMwMjA0MjBcXF17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS50ZXh0LVxcW1xcIzY0NzQ4QlxcXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0uZm9udC1zZW1pYm9sZHtmb250LXdlaWdodDo2MDB9LmxlYWRpbmctbm9uZXtsaW5lLWhlaWdodDoxfS50cmFja2luZy13aWRle2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5ze2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxOb3RvIFNhbnMsc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2wsTm90byBDb2xvciBFbW9qaX0udGFidWxhci1udW1zey0tdW4tbnVtZXJpYy1zcGFjaW5nOnRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS11bi1vcmRpbmFsKSB2YXIoLS11bi1zbGFzaGVkLXplcm8pIHZhcigtLXVuLW51bWVyaWMtZmlndXJlKSB2YXIoLS11bi1udW1lcmljLXNwYWNpbmcpIHZhcigtLXVuLW51bWVyaWMtZnJhY3Rpb24pfS5hbnRpYWxpYXNlZHstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpiZy1cXFtcXCMwMjA0MjBcXF17LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLWJnLW9wYWNpdHkpKX0uZGFya1xcOnRleHQtd2hpdGV7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9fUBtZWRpYShtaW4td2lkdGg6NjQwcHgpey5zbVxcOnRleHQtXFxbMTEwcHhcXF17Zm9udC1zaXplOjExMHB4fS5zbVxcOnRleHQtM3hse2ZvbnQtc2l6ZToxLjg3NXJlbTtsaW5lLWhlaWdodDoyLjI1cmVtfX08L3N0eWxlPjwvaGVhZD48Ym9keSBjbGFzcz0iYW50aWFsaWFzZWQgYmctd2hpdGUgZGFyazpiZy1bIzAyMDQyMF0gZGFyazp0ZXh0LXdoaXRlIGZvbnQtc2FucyBncmlkIG1pbi1oLXNjcmVlbiBvdmVyZmxvdy1oaWRkZW4gcGxhY2UtY29udGVudC1jZW50ZXIgdGV4dC1bIzAyMDQyMF0gdHJhY2tpbmctd2lkZSI+PGRpdiBjbGFzcz0ibWF4LXctNTIwcHggdGV4dC1jZW50ZXIiPjxoMSBjbGFzcz0iZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgbWItNCBzbTp0ZXh0LVsxMTBweF0gdGFidWxhci1udW1zIHRleHQtWzgwcHhdIj4nK2Uoci5zdGF0dXMpKyc8L2gxPjxoMiBjbGFzcz0iZm9udC1zZW1pYm9sZCBtYi0yIHNtOnRleHQtM3hsIHRleHQtMnhsIj4nK2Uoci5zdGF0dXNUZXh0KSsnPC9oMj48cCBjbGFzcz0ibWItNCBweC0yIHRleHQtWyM2NDc0OEJdIHRleHQtbWQiPicrZShyLmRlc2NyaXB0aW9uKSsiPC9wPjwvZGl2PjwvYm9keT48L2h0bWw+Iik7ZXhwb3J0e3RlbXBsYXRlfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3ItNTAwLm1qcy5tYXAK", "chunks/_/github.mjs": "aW1wb3J0e2MgYXMgdCx2IGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGF1dGhIZWFkZXJzKCl7Y29uc3QgdD17QWNjZXB0OiJhcHBsaWNhdGlvbi92bmQuZ2l0aHViK2pzb24iLCJYLUdpdEh1Yi1BcGktVmVyc2lvbiI6IjIwMjItMTEtMjgiLCJVc2VyLUFnZW50IjoibnV4dC10ZW1wbGF0ZS1zZWxmaG9zdCJ9LGE9ZSgpLmdpdGh1YlRva2VuO3JldHVybiBhJiYodC5BdXRob3JpemF0aW9uPWBCZWFyZXIgJHthfWApLHR9YXN5bmMgZnVuY3Rpb24gZmV0Y2hSZWxlYXNlKGUpe2NvbnN0IGE9YXdhaXQgZmV0Y2goYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtlfS9yZWxlYXNlcy9sYXRlc3RgLHtoZWFkZXJzOmF1dGhIZWFkZXJzKCl9KTtpZighYS5vayl0aHJvdyB0KHtzdGF0dXNDb2RlOmEuc3RhdHVzLHN0YXR1c01lc3NhZ2U6YEdpdEh1YiByZWxlYXNlcyBBUEkgJHthLnN0YXR1c30gJHthLnN0YXR1c1RleHR9YH0pO3JldHVybiBhLmpzb24oKX1hc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RCdW5kbGUoYSl7dmFyIHMsbjtjb25zdCBvPWF3YWl0IGZldGNoUmVsZWFzZShhKSxyPW51bGw9PShzPW8uYXNzZXRzKT92b2lkIDA6cy5maW5kKHQ9PiJidW5kbGUuanNvbiI9PT10Lm5hbWUpO2lmKCFyKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vIGJ1bmRsZS5qc29uIGZvdW5kIGluIGxhdGVzdCByZWxlYXNlIn0pO2NvbnN0IGk9ZSgpLmdpdGh1YlRva2VuP2F3YWl0IGZldGNoKHIudXJsLHtoZWFkZXJzOnsuLi5hdXRoSGVhZGVycygpLEFjY2VwdDoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn19KTphd2FpdCBmZXRjaChyLmJyb3dzZXJfZG93bmxvYWRfdXJsKTtpZighaS5vayl0aHJvdyB0KHtzdGF0dXNDb2RlOjUwMixzdGF0dXNNZXNzYWdlOmBGYWlsZWQgdG8gZG93bmxvYWQgYnVuZGxlOiAke2kuc3RhdHVzfWB9KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KGF3YWl0IGkuYXJyYXlCdWZmZXIoKSksYz1hd2FpdCBhc3luYyBmdW5jdGlvbih0KXtjb25zdCBlPWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixVaW50OEFycmF5LmZyb20odCkpO3JldHVybiBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGUpKS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX0odSk7aWYoKG51bGw9PShuPW8uYm9keSk/dm9pZCAwOm4uaW5jbHVkZXMoInNoYTI1NjoiKSkmJiFvLmJvZHkuaW5jbHVkZXMoYykpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiQnVuZGxlIFNIQS0yNTYgbWlzbWF0Y2gg4oCUIHBvc3NpYmxlIHRhbXBlcmluZyJ9KTtjb25zdCBsPUpTT04ucGFyc2UoKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKHUpKTtyZXR1cm57dmVyc2lvbjpvLnRhZ19uYW1lLGJ1bmRsZTpsLHNoYTI1NjpjfX1hc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RWZXJzaW9uKHQpe3ZhciBlO3RyeXtyZXR1cm4gbnVsbCE9KGU9KGF3YWl0IGZldGNoUmVsZWFzZSh0KSkudGFnX25hbWUpP2U6bnVsbH1jYXRjaHtyZXR1cm4gbnVsbH19ZXhwb3J0e2dldExhdGVzdFZlcnNpb24gYXMgYSxnZXRMYXRlc3RCdW5kbGUgYXMgZ307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWdpdGh1Yi5tanMubWFwCg==", "chunks/_/impersonate.mjs": "aW1wb3J0e2FqIGFzIG99ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2NvbnN0IHI9InVzZXI6aW1wZXJzb25hdGUiO2Z1bmN0aW9uIGltcGVyc29uYXRvckluZm9Gcm9tU2Vzc2lvbihyKXtyZXR1cm4gbyhyLFsiaWQiLCJ1c2VybmFtZSIsIm5hbWUiLCJwcmltYXJ5X2VtYWlsIiwiYWJpbGl0aWVzIl0pfWZ1bmN0aW9uIGJhY2t1cEtleShvKXtyZXR1cm5gaW1wZXJzb25hdG9yOnNlc3Npb246JHtvfWB9ZXhwb3J0e3IgYXMgSSxiYWNrdXBLZXkgYXMgYixpbXBlcnNvbmF0b3JJbmZvRnJvbVNlc3Npb24gYXMgaX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWltcGVyc29uYXRlLm1qcy5tYXAK", "chunks/_/invoice.mjs": "aW1wb3J0e28gYXMgdCxhLHMgYXMgbixfIGFzIGksRyBhcyBvfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBlPXQoe2Rlc2NyaXB0aW9uOm4oKS5taW4oMSkubWF4KDUwMCkscXVhbnRpdHk6bygpLmludCgpLm1pbigxKS5kZWZhdWx0KDEpLHVuaXRfcHJpY2U6bygpLmludCgpLm1pbigwKSxjdXJyZW5jeTpuKCkubGVuZ3RoKDMpLmRlZmF1bHQoIlVTRCIpfSkscz10KHtzdGF0dXM6aShbImRyYWZ0Iiwic2VudCIsInBhaWQiLCJvdmVyZHVlIiwiY2FuY2VsbGVkIl0pLmRlZmF1bHQoImRyYWZ0IiksY3VycmVuY3k6bigpLmxlbmd0aCgzKS5kZWZhdWx0KCJVU0QiKSxub3RlczpuKCkubWF4KDJlMykub3B0aW9uYWwoKSxkdWVfYXQ6bigpLmRhdGV0aW1lKCkub3B0aW9uYWwoKSxpdGVtczphKGUpLm1pbigxKX0pO3Mub21pdCh7aXRlbXM6ITB9KS5wYXJ0aWFsKCk7Y29uc3QgbD10KHtjb21wYW55X25hbWU6bigpLm1heCgyMDApLm9wdGlvbmFsKCksdGF4X2lkOm4oKS5tYXgoMTAwKS5vcHRpb25hbCgpLGFkZHJlc3M6bigpLm1heCg1MDApLm9wdGlvbmFsKCksY2l0eTpuKCkubWF4KDEwMCkub3B0aW9uYWwoKSxjb3VudHJ5Om4oKS5sZW5ndGgoMikub3B0aW9uYWwoKSxjdXJyZW5jeTpuKCkubGVuZ3RoKDMpLm9wdGlvbmFsKCl9KTtleHBvcnR7cyBhcyBDLGwgYXMgVX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWludm9pY2UubWpzLm1hcAo=", "chunks/_/member.mjs": "aW1wb3J0e1QgYXMgYX1mcm9tIi4vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e28gYXMgZSxhIGFzIGksc31mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgcj1lKHtlbWFpbDpzKCkuZW1haWwoKX0pLHQ9ZSh7YWJpbGl0aWVzOmkocygpKS5yZWZpbmUoZT0+ZS5ldmVyeShlPT5hLmhhcyhlKSkse21lc3NhZ2U6Ik9ubHkgdGVuYW50IGFiaWxpdGllcyAodXNlcjoqLCBwcm9qZWN0OiosIGJpbGxpbmc6KikgY2FuIGJlIGdyYW50ZWQgaGVyZSJ9KX0pO2V4cG9ydHtyIGFzIEEsdCBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVtYmVyLm1qcy5tYXAK", "chunks/_/notification.mjs": "aW1wb3J0e28gYXMgdCxUIGFzIGEsYTEgYXMgZSxiIGFzIGkscyBhcyBvfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjt0KHtpZDpvKCksc2VuZGVyTmFtZTpvKCksYm9keTpvKCksaXNSZWFkOmkoKSxjcmVhdGVkQXQ6ZSgpfSk7Y29uc3QgZD10KHtvZmZzZXQ6YSgpLmludCgpLm1pbigwKS5kZWZhdWx0KDApLGxpbWl0OmEoKS5pbnQoKS5taW4oMSkubWF4KDUwKS5kZWZhdWx0KDIwKX0pO2Z1bmN0aW9uIHRvTm90aWZpY2F0aW9uKHQpe3JldHVybntpZDp0LmlkLHNlbmRlck5hbWU6dC5zZW5kZXJfbmFtZSxib2R5OnQuYm9keSxpc1JlYWQ6dC5pc19yZWFkLGNyZWF0ZWRBdDp0LmNyZWF0ZWRfYXQudG9JU09TdHJpbmcoKX19ZXhwb3J0e2QgYXMgTix0b05vdGlmaWNhdGlvbiBhcyB0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm90aWZpY2F0aW9uLm1qcy5tYXAK", "chunks/_/organization.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIGksZSBhcyBuLGkgYXMgYSxGIGFzIHQsSyBhcyByLGcgYXMgcyxMIGFzIG8sbCxNIGFzIHUsTiBhcyBkLE8gYXMgYyxmIGFzIG0sUCBhcyBnLHUgYXMgZn1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7ZnVuY3Rpb24gcGFyc2VBYmlsaXR5KGUpe2NvbnN0W2k9IiIsbj0iIixhXT1lLnNwbGl0KCI6Iik7cmV0dXJue3N1YmplY3Q6aSxhY3Rpb246bixzY29wZTphfX1jb25zdCB5PW5ldyBTZXQoWyJyZWFkIiwid3JpdGUiLCJkZWxldGUiXSk7ZnVuY3Rpb24gc2F0aXNmaWVzQWJpbGl0eShlLGkpe2NvbnN0e3N1YmplY3Q6bixhY3Rpb246YSxzY29wZTp0fT1wYXJzZUFiaWxpdHkoaSk7cmV0dXJuIGUuc29tZShlPT57Y29uc3R7c3ViamVjdDppLGFjdGlvbjpyLHNjb3BlOnN9PXBhcnNlQWJpbGl0eShlKTtyZXR1cm4gaT09PW4mJighKCJtYW5hZ2UiIT09cnx8cyE9PXR8fCF5LmhhcyhhKSl8fHI9PT1hJiZzPT09dCl9KX1jb25zdCB3PVsicmVhZCIsIndyaXRlIiwiZGVsZXRlIiwibWFuYWdlIl0sYj1uZXcgU2V0KFsidXNlcjppbXBlcnNvbmF0ZSIsInN5c3RlbTptYW5hZ2UiLCJzdXBwb3J0Om1hbmFnZSIsInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0OmRlbGV0ZSIsInByb2R1Y3Q6bWFuYWdlIl0pLHA9bmV3IFNldChbInVzZXIiLCJwcm9qZWN0IiwiYmlsbGluZyIsInNlbGZob3N0Il0uZmxhdE1hcChlPT53Lm1hcChpPT5gJHtlfToke2l9YCkpKSxfPW5ldyBTZXQoW10pLHY9WyJ1c2VyOm1hbmFnZSIsInByb2plY3Q6bWFuYWdlIiwiYmlsbGluZzptYW5hZ2UiLCJiaWxsaW5nOnJlYWQiLCJzZWxmaG9zdDptYW5hZ2UiLCJzZWxmaG9zdDpyZWFkIl0saD1bInByb2plY3Q6cmVhZCIsInByb2plY3Q6d3JpdGUiLCJiaWxsaW5nOnJlYWQiXSx6PXtyZWFkOiJWaWV3Iix3cml0ZToiQ3JlYXRlIGFuZCBlZGl0IixkZWxldGU6IkRlbGV0ZSIsbWFuYWdlOiJGdWxsIGNvbnRyb2wgb3ZlciIsaW1wZXJzb25hdGU6IkltcGVyc29uYXRlIn07ZnVuY3Rpb24gb3JnS2luZE9mKGUpe3JldHVybiBiLmhhcyhlKT8ic3lzdGVtIjoidGVuYW50In1mdW5jdGlvbiBkZWYoZSl7dmFyIGk7Y29uc3R7c3ViamVjdDpuLGFjdGlvbjphLHNjb3BlOnR9PXBhcnNlQWJpbGl0eShlKSxyPWAke251bGwhPShpPXpbYV0pP2k6YX0gJHtufWA7cmV0dXJue2tleTplLHN1YmplY3Q6bixhY3Rpb246YSxzY29wZTpudWxsIT10P3Q6bnVsbCxvcmdfa2luZDpvcmdLaW5kT2YoZSksZGVzY3JpcHRpb246InNlbGYiPT09dD9gJHtyfSAob3duIG9ubHkpYDpyfX1mdW5jdGlvbiBidWlsZFBlcm1pc3Npb25DYXRhbG9nKCl7cmV0dXJuWy4uLnAsLi4uYiwuLi5fXS5tYXAoZGVmKX1mdW5jdGlvbiBrZXlzQWxsb3dlZEZvcihlKXtyZXR1cm4gZT9iOm5ldyBTZXQoWy4uLnAsLi4uX10pfWZ1bmN0aW9uIG1lcmdlT3JnQWJpbGl0aWVzKGUsaSxuKXtjb25zdCBhPWUuZmlsdGVyKGU9PmIuaGFzKGUpKSx0PWkuZmlsdGVyKGU9PmtleXNBbGxvd2VkRm9yKG4pLmhhcyhlKSk7cmV0dXJuWy4uLm5ldyBTZXQoWy4uLmEsLi4udF0pXX1mdW5jdGlvbiBhc3NlcnRHcmFudGFibGUoZSxpKXtjb25zdCBuPWtleXNBbGxvd2VkRm9yKCExKSxhPWkuZmlsdGVyKGU9PiFuLmhhcyhlKSksdD1pLmZpbHRlcihpPT5uLmhhcyhpKSYmIXNhdGlzZmllc0FiaWxpdHkoZSxpKSk7cmV0dXJuWy4uLm5ldyBTZXQoWy4uLmEsLi4udF0pXX1hc3luYyBmdW5jdGlvbiBnZXRTeXN0ZW1Pcmdhbml6YXRpb25JZCgpe3ZhciBhO2NvbnN0IHQ9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkobi5pc19zeXN0ZW0sITApLGNvbHVtbnM6e2lkOiEwfX0pO3JldHVybiBudWxsIT0oYT1udWxsPT10P3ZvaWQgMDp0LmlkKT9hOm51bGx9YXN5bmMgZnVuY3Rpb24gbWVtYmVyc2hpcEFiaWxpdGllcyhuLHIpe3ZhciBzO2NvbnN0IG89YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25NZW1iZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnQoaShhLnVzZXJfaWQsbiksaShhLm9yZ2FuaXphdGlvbl9pZCxyKSksY29sdW1uczp7YWJpbGl0aWVzOiEwfX0pO3JldHVybiBudWxsIT0ocz1udWxsPT1vP3ZvaWQgMDpvLmFiaWxpdGllcyk/czpbXX1hc3luYyBmdW5jdGlvbiByb2xlQWJpbGl0aWVzKG4scil7cmV0dXJuKGF3YWl0IGUuc2VsZWN0KHtwZXJtaXNzaW9uczpzLnBlcm1pc3Npb25zfSkuZnJvbShhKS5pbm5lckpvaW4obCxpKGwubWVtYmVyX2lkLGEuaWQpKS5pbm5lckpvaW4ocyxpKHMuaWQsbC5yb2xlX2lkKSkud2hlcmUodChpKGEudXNlcl9pZCxuKSxpKGEub3JnYW5pemF0aW9uX2lkLHIpKSkpLmZsYXRNYXAoZT0+e3ZhciBpO3JldHVybiBudWxsIT0oaT1lLnBlcm1pc3Npb25zKT9pOltdfSl9YXN5bmMgZnVuY3Rpb24gZWZmZWN0aXZlT3JnR3JhbnRzKGUsaSl7Y29uc3RbbixhXT1hd2FpdCBQcm9taXNlLmFsbChbbWVtYmVyc2hpcEFiaWxpdGllcyhlLGkpLHJvbGVBYmlsaXRpZXMoZSxpKV0pO3JldHVyblsuLi5uZXcgU2V0KFsuLi5uLC4uLmFdKV19YXN5bmMgZnVuY3Rpb24gbG9hZEVmZmVjdGl2ZUFiaWxpdGllcyhlLGkpe2NvbnN0IG49YXdhaXQgZ2V0U3lzdGVtT3JnYW5pemF0aW9uSWQoKSxhPW4/YXdhaXQgZWZmZWN0aXZlT3JnR3JhbnRzKGUsbik6W107aWYoIWkpcmV0dXJuIG1lcmdlT3JnQWJpbGl0aWVzKGEsW10sITEpO3JldHVybiBtZXJnZU9yZ0FiaWxpdGllcyhhLGF3YWl0IGVmZmVjdGl2ZU9yZ0dyYW50cyhlLGkpLGk9PT1uKX1hc3luYyBmdW5jdGlvbiBkZWZhdWx0QWN0aXZlT3JnYW5pemF0aW9uSWQodCl7dmFyIHIscyxvLGw7Y29uc3QgdT0oYXdhaXQgZS5zZWxlY3Qoe29yZzpuLmlkLHBlcnNvbmFsOm4uaXNfcGVyc29uYWwsc3lzdGVtOm4uaXNfc3lzdGVtfSkuZnJvbShhKS5pbm5lckpvaW4obixpKG4uaWQsYS5vcmdhbml6YXRpb25faWQpKS53aGVyZShpKGEudXNlcl9pZCx0KSkpLmZpbHRlcihlPT4hZS5zeXN0ZW0pO3JldHVybiBudWxsIT0obD1udWxsIT0obz1udWxsPT0ocj11LmZpbmQoZT0+ZS5wZXJzb25hbCkpP3ZvaWQgMDpyLm9yZyk/bzpudWxsPT0ocz11WzBdKT92b2lkIDA6cy5vcmcpP2w6bnVsbH1hc3luYyBmdW5jdGlvbiBlbnN1cmVPcmdhbml6YXRpb24oYSx0LHI9e30pe2NvbnN0IHM9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkobi5zbHVnLGEpfSk7aWYocylyZXR1cm4gcztjb25zdFtvXT1hd2FpdCBlLmluc2VydChuKS52YWx1ZXMoe3NsdWc6YSxuYW1lOnQsaXNfc3lzdGVtOiEhci5pc19zeXN0ZW19KS5yZXR1cm5pbmcoKTtyZXR1cm4gYXdhaXQgZW5zdXJlU3lzdGVtUm9sZXMoby5pZCksb31hc3luYyBmdW5jdGlvbiBlbnN1cmVNZW1iZXJzaGlwKGksbix0KXthd2FpdCBlLmluc2VydChhKS52YWx1ZXMoe3VzZXJfaWQ6aSxvcmdhbml6YXRpb25faWQ6bixhYmlsaXRpZXM6Wy4uLnRdfSkub25Db25mbGljdERvTm90aGluZygpfWFzeW5jIGZ1bmN0aW9uIGlzTWVtYmVyKG4scil7cmV0dXJuISFhd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvbk1lbWJlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6dChpKGEudXNlcl9pZCxuKSxpKGEub3JnYW5pemF0aW9uX2lkLHIpKSxjb2x1bW5zOntpZDohMH19KX1hc3luYyBmdW5jdGlvbiBjb3VudE9yZ01hbmFnZXJzKG4pe2NvbnN0IHQ9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25NZW1iZXJUYWJsZS5maW5kTWFueSh7d2hlcmU6aShhLm9yZ2FuaXphdGlvbl9pZCxuKSxjb2x1bW5zOnt1c2VyX2lkOiEwfX0pO2xldCByPTA7Zm9yKGNvbnN0IGUgb2YgdCkoYXdhaXQgZWZmZWN0aXZlT3JnR3JhbnRzKGUudXNlcl9pZCxuKSkuaW5jbHVkZXMoInVzZXI6bWFuYWdlIikmJnIrKztyZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBlbnN1cmVTeXN0ZW1Sb2xlcyhuKXtyZXR1cm4gYXdhaXQgZS5pbnNlcnQocykudmFsdWVzKFt7b3JnYW5pemF0aW9uX2lkOm4sbmFtZToiQWRtaW4iLGRlc2NyaXB0aW9uOiJGdWxsIHdvcmtzcGFjZSBjb250cm9sIixwZXJtaXNzaW9uczpbLi4udl0saXNfc3lzdGVtOiEwfSx7b3JnYW5pemF0aW9uX2lkOm4sbmFtZToiTWVtYmVyIixkZXNjcmlwdGlvbjoiU3RhbmRhcmQgbWVtYmVyIixwZXJtaXNzaW9uczpbLi4uaF0saXNfc3lzdGVtOiEwfV0pLm9uQ29uZmxpY3REb05vdGhpbmcoKSxlLnF1ZXJ5LnJvbGVUYWJsZS5maW5kTWFueSh7d2hlcmU6aShzLm9yZ2FuaXphdGlvbl9pZCxuKX0pfWFzeW5jIGZ1bmN0aW9uIGFzc2lnblJvbGUoaSxuKXthd2FpdCBlLmluc2VydChsKS52YWx1ZXMoe21lbWJlcl9pZDppLHJvbGVfaWQ6bn0pLm9uQ29uZmxpY3REb05vdGhpbmcoKX1hc3luYyBmdW5jdGlvbiBtZW1iZXJzV2l0aFJvbGUobil7cmV0dXJuKGF3YWl0IGUuc2VsZWN0KHt1c2VyX2lkOmEudXNlcl9pZH0pLmZyb20obCkuaW5uZXJKb2luKGEsaShhLmlkLGwubWVtYmVyX2lkKSkud2hlcmUoaShsLnJvbGVfaWQsbikpKS5tYXAoZT0+ZS51c2VyX2lkKX1hc3luYyBmdW5jdGlvbiB1bmlxdWVTbHVnKGEpe2NvbnN0IHQ9YS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XSsvZywiLSIpLnJlcGxhY2UoL14tfC0kL2csIiIpfHwib3JnIjtmb3IobGV0IGE9MDthPDU7YSsrKXtjb25zdCByPTA9PT1hP3Q6YCR7dH0tJHtvKCkuc2xpY2UoMCw2KX1gO2lmKCFhd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShuLnNsdWcsciksY29sdW1uczp7aWQ6ITB9fSkpcmV0dXJuIHJ9cmV0dXJuYCR7dH0tJHtvKCl9YH1hc3luYyBmdW5jdGlvbiBjcmVhdGVQZXJzb25hbE9yZ2FuaXphdGlvbihyKXt2YXIgcyxvLGw7Y29uc3QgdT1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6dChpKG4ub3duZXJfaWQsci5pZCksaShuLmlzX3BlcnNvbmFsLCEwKSl9KTtpZih1KXJldHVybiB1O2NvbnN0W2RdPWF3YWl0IGUuaW5zZXJ0KG4pLnZhbHVlcyh7bmFtZTpgJHtudWxsIT0obz1udWxsIT0ocz1yLm5hbWUpP3M6ci51c2VybmFtZSk/bzoiTXkifSBPcmdhbml6YXRpb25gLHNsdWc6YXdhaXQgdW5pcXVlU2x1ZyhudWxsIT0obD1yLnVzZXJuYW1lKT9sOnIucHJpbWFyeV9lbWFpbC5zcGxpdCgiQCIpWzBdKSxvd25lcl9pZDpyLmlkLGlzX3BlcnNvbmFsOiEwfSkucmV0dXJuaW5nKCk7YXdhaXQgZS5pbnNlcnQoYSkudmFsdWVzKHt1c2VyX2lkOnIuaWQsb3JnYW5pemF0aW9uX2lkOmQuaWQsYWJpbGl0aWVzOlsuLi52XX0pLm9uQ29uZmxpY3REb05vdGhpbmcoKTtjb25zdCBjPShhd2FpdCBlbnN1cmVTeXN0ZW1Sb2xlcyhkLmlkKSkuZmluZChlPT4iQWRtaW4iPT09ZS5uYW1lKTtpZihjKXtjb25zdCBuPWF3YWl0IGUucXVlcnkub3JnYW5pemF0aW9uTWVtYmVyVGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KGkoYS51c2VyX2lkLHIuaWQpLGkoYS5vcmdhbml6YXRpb25faWQsZC5pZCkpLGNvbHVtbnM6e2lkOiEwfX0pO24mJmF3YWl0IGFzc2lnblJvbGUobi5pZCxjLmlkKX1yZXR1cm4gZH1hc3luYyBmdW5jdGlvbiBjcmVhdGVUZW5hbnRPcmdhbml6YXRpb24ocixzKXtjb25zdCBvPWF3YWl0IHVuaXF1ZVNsdWcocyksW2xdPWF3YWl0IGUuaW5zZXJ0KG4pLnZhbHVlcyh7bmFtZTpzLHNsdWc6byxvd25lcl9pZDpyLGlzX3BlcnNvbmFsOiExfSkucmV0dXJuaW5nKCk7YXdhaXQgZS5pbnNlcnQoYSkudmFsdWVzKHt1c2VyX2lkOnIsb3JnYW5pemF0aW9uX2lkOmwuaWQsYWJpbGl0aWVzOlsuLi52XX0pLm9uQ29uZmxpY3REb05vdGhpbmcoKTtjb25zdCB1PShhd2FpdCBlbnN1cmVTeXN0ZW1Sb2xlcyhsLmlkKSkuZmluZChlPT4iQWRtaW4iPT09ZS5uYW1lKTtpZih1KXtjb25zdCBuPWF3YWl0IGUucXVlcnkub3JnYW5pemF0aW9uTWVtYmVyVGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KGkoYS51c2VyX2lkLHIpLGkoYS5vcmdhbml6YXRpb25faWQsbC5pZCkpLGNvbHVtbnM6e2lkOiEwfX0pO24mJmF3YWl0IGFzc2lnblJvbGUobi5pZCx1LmlkKX1yZXR1cm4gbH1hc3luYyBmdW5jdGlvbiBnZXRPcmdhbml6YXRpb25CeUlkKGEpe2NvbnN0IHQ9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkobi5pZCxhKX0pO3JldHVybiBudWxsIT10P3Q6bnVsbH1hc3luYyBmdW5jdGlvbiBnZXRPcmdJbnZpdGF0aW9ucyhuKXtyZXR1cm4gZS5xdWVyeS5vcmdhbml6YXRpb25JbnZpdGF0aW9uVGFibGUuZmluZE1hbnkoe3doZXJlOmkoci5vcmdhbml6YXRpb25faWQsbil9KX1hc3luYyBmdW5jdGlvbiBjcmVhdGVJbnZpdGF0aW9uKGksbixhLHQscz1bXSl7Y29uc3Qgbz1jcnlwdG8ucmFuZG9tVVVJRCgpLGw9bmV3IERhdGUoRGF0ZS5ub3coKSs2MDQ4ZTUpLFt1XT1hd2FpdCBlLmluc2VydChyKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDppLGVtYWlsOm4scm9sZV9pZDphLHRva2VuOm8saW52aXRlZF9ieTp0LGV4cGlyZXNfYXQ6bCxwcm9qZWN0X2lkczpzfSkucmV0dXJuaW5nKCk7cmV0dXJuIHV9YXN5bmMgZnVuY3Rpb24gZ2V0SW52aXRhdGlvbkJ5VG9rZW4obil7Y29uc3QgYT1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvbkludml0YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkoci50b2tlbixuKX0pO3JldHVybiBudWxsIT1hP2E6bnVsbH1hc3luYyBmdW5jdGlvbiByZXZva2VJbnZpdGF0aW9uKG4sYSl7YXdhaXQgZS5kZWxldGUocikud2hlcmUodChpKHIuaWQsbiksaShyLm9yZ2FuaXphdGlvbl9pZCxhKSkpfWFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUludml0YXRpb24obil7YXdhaXQgZS5kZWxldGUocikud2hlcmUoaShyLmlkLG4pKX1mdW5jdGlvbiBuYW1lRW1haWxGaWx0ZXIoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IGk9YCUke3UoZSl9JWA7cmV0dXJuIGQoY2Ake2YubmFtZX0gTElLRSAke2l9IEVTQ0FQRSAnXFwnYCxjYCR7Zi51c2VybmFtZX0gTElLRSAke2l9IEVTQ0FQRSAnXFwnYCxjYCR7Zi5wcmltYXJ5X2VtYWlsfSBMSUtFICR7aX0gRVNDQVBFICdcXCdgKX1hc3luYyBmdW5jdGlvbiBnZXRVc2VyT3JnYW5pemF0aW9uc1BhZ2Uocix7cTpzLGxpbWl0Om8sb2Zmc2V0Omx9KXtjb25zdCBnPXM/YCUke3Uocyl9JWA6dm9pZCAwLGY9dChpKGEudXNlcl9pZCxyKSxpKG4uaXNfc3lzdGVtLCExKSxnP2QoY2Ake24ubmFtZX0gTElLRSAke2d9IEVTQ0FQRSAnXFwnYCxjYCR7bi5zbHVnfSBMSUtFICR7Z30gRVNDQVBFICdcXCdgKTp2b2lkIDApLHk9YXdhaXQgZS5zZWxlY3Qoe2lkOm4uaWQsbmFtZTpuLm5hbWUsc2x1ZzpuLnNsdWcsaXNfcGVyc29uYWw6bi5pc19wZXJzb25hbH0pLmZyb20oYSkuaW5uZXJKb2luKG4saShuLmlkLGEub3JnYW5pemF0aW9uX2lkKSkud2hlcmUoZikub3JkZXJCeShtKG4ubmFtZSkpLmxpbWl0KG8rMSkub2Zmc2V0KGwpO3JldHVybntpdGVtczp5LnNsaWNlKDAsbyksaGFzTW9yZTp5Lmxlbmd0aD5vfX1hc3luYyBmdW5jdGlvbiBnZXRPcmdNZW1iZXJzUGFnZShuLHtxOnIsbGltaXQ6cyxvZmZzZXQ6b30pe2NvbnN0IGw9dChpKGEub3JnYW5pemF0aW9uX2lkLG4pLG5hbWVFbWFpbEZpbHRlcihyKSksdT1hd2FpdCBlLnNlbGVjdCh7aWQ6Zi5pZCxuYW1lOmYubmFtZSx1c2VybmFtZTpmLnVzZXJuYW1lLHByaW1hcnlfZW1haWw6Zi5wcmltYXJ5X2VtYWlsLGF2YXRhcjpmLmF2YXRhcixhYmlsaXRpZXM6YS5hYmlsaXRpZXMsaXNfc3VzcGVuZGVkOmYuaXNfc3VzcGVuZGVkfSkuZnJvbShhKS5pbm5lckpvaW4oZixpKGYuaWQsYS51c2VyX2lkKSkud2hlcmUobCkub3JkZXJCeShtKGYubmFtZSkpLmxpbWl0KHMrMSkub2Zmc2V0KG8pO3JldHVybntpdGVtczp1LnNsaWNlKDAscyksaGFzTW9yZTp1Lmxlbmd0aD5zfX1hc3luYyBmdW5jdGlvbiBnZXRJbXBlcnNvbmF0aW9uQ2FuZGlkYXRlc1BhZ2UoaSx7cTpuLGxpbWl0OmEsb2Zmc2V0OnJ9KXtjb25zdCBzPXQoZyhmLmlkLGkpLG5hbWVFbWFpbEZpbHRlcihuKSksbz1hd2FpdCBlLnF1ZXJ5LnVzZXJUYWJsZS5maW5kTWFueSh7d2hlcmU6cyxvcmRlckJ5Om0oZi5uYW1lKSxsaW1pdDphKzEsb2Zmc2V0OnIsY29sdW1uczp7aWQ6ITAsdXNlcm5hbWU6ITAsbmFtZTohMCxwcmltYXJ5X2VtYWlsOiEwLGF2YXRhcjohMCxpc19zdXNwZW5kZWQ6ITB9fSk7cmV0dXJue2l0ZW1zOm8uc2xpY2UoMCxhKSxoYXNNb3JlOm8ubGVuZ3RoPmF9fW5ldyBTZXQoYnVpbGRQZXJtaXNzaW9uQ2F0YWxvZygpLm1hcChlPT5lLmtleSkpO2V4cG9ydHtidWlsZFBlcm1pc3Npb25DYXRhbG9nIGFzIEEsaCBhcyBELF8gYXMgUyxwIGFzIFQsZW5zdXJlTWVtYmVyc2hpcCBhcyBhLGdldEltcGVyc29uYXRpb25DYW5kaWRhdGVzUGFnZSBhcyBiLGNyZWF0ZVBlcnNvbmFsT3JnYW5pemF0aW9uIGFzIGMsZGVmYXVsdEFjdGl2ZU9yZ2FuaXphdGlvbklkIGFzIGQsZW5zdXJlT3JnYW5pemF0aW9uIGFzIGUsZ2V0SW52aXRhdGlvbkJ5VG9rZW4gYXMgZixnZXRTeXN0ZW1Pcmdhbml6YXRpb25JZCBhcyBnLGdldE9yZ2FuaXphdGlvbkJ5SWQgYXMgaCxpc01lbWJlciBhcyBpLGFzc2lnblJvbGUgYXMgaixlbnN1cmVTeXN0ZW1Sb2xlcyBhcyBrLGxvYWRFZmZlY3RpdmVBYmlsaXRpZXMgYXMgbCxkZWxldGVJbnZpdGF0aW9uIGFzIG0sZ2V0T3JnSW52aXRhdGlvbnMgYXMgbixjcmVhdGVJbnZpdGF0aW9uIGFzIG8scGFyc2VBYmlsaXR5IGFzIHAsa2V5c0FsbG93ZWRGb3IgYXMgcSxyZXZva2VJbnZpdGF0aW9uIGFzIHIsc2F0aXNmaWVzQWJpbGl0eSBhcyBzLGNvdW50T3JnTWFuYWdlcnMgYXMgdCxlZmZlY3RpdmVPcmdHcmFudHMgYXMgdSxhc3NlcnRHcmFudGFibGUgYXMgdixnZXRPcmdNZW1iZXJzUGFnZSBhcyB3LGdldFVzZXJPcmdhbml6YXRpb25zUGFnZSBhcyB4LGNyZWF0ZVRlbmFudE9yZ2FuaXphdGlvbiBhcyB5LG1lbWJlcnNXaXRoUm9sZSBhcyB6fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3JnYW5pemF0aW9uLm1qcy5tYXAK", "chunks/_/organization2.mjs": "aW1wb3J0e28gYXMgbSxzIGFzIGF9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2NvbnN0IGk9bSh7b3JnYW5pemF0aW9uX2lkOmEoKS5taW4oMSl9KSxuPW0oe25hbWU6YSgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCl9KSxvPW0oe25hbWU6YSgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCl9KTtleHBvcnR7byBhcyBDLGkgYXMgUyxuIGFzIFV9OwovLyMgc291cmNlTWFwcGluZ1VSTD1vcmdhbml6YXRpb24yLm1qcy5tYXAK", "chunks/_/pagination.mjs": "aW1wb3J0e28gYXMgdCxUIGFzIGkscyBhcyBhfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBvPXQoe3E6YSgpLnRyaW0oKS5tYXgoMTAwKS5vcHRpb25hbCgpLmRlZmF1bHQoIiIpLGxpbWl0OmkoKS5pbnQoKS5taW4oMSkubWF4KDUwKS5kZWZhdWx0KDIwKSxvZmZzZXQ6aSgpLmludCgpLm1pbigwKS5kZWZhdWx0KDApfSk7ZXhwb3J0e28gYXMgTH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhZ2luYXRpb24ubWpzLm1hcAo=", "chunks/_/product.mjs": "aW1wb3J0e28gYXMgaSxfIGFzIGUsRyBhcyByLHMgYXMgdH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgYT1pKHtuYW1lOnQoKS5taW4oMSkubWF4KDIwMCksZGVzY3JpcHRpb246dCgpLm1heCgyZTMpLm9wdGlvbmFsKCksdHlwZTplKFsib25lX3RpbWUiLCJyZWN1cnJpbmciXSkuZGVmYXVsdCgib25lX3RpbWUiKSxwcmljZTpyKCkuaW50KCkubWluKDApLHByaWNlX2N1cnJlbmN5OmUoWyJVU0QiLCJFVVIiLCJHQlAiLCJWTkQiLCJKUFkiLCJBVUQiLCJDQUQiXSkuZGVmYXVsdCgiVVNEIiksYmlsbGluZ19pbnRlcnZhbDplKFsibW9udGgiLCJ5ZWFyIl0pLm9wdGlvbmFsKCksc3RhdHVzOmUoWyJhY3RpdmUiLCJpbmFjdGl2ZSJdKS5kZWZhdWx0KCJhY3RpdmUiKX0pLG49YS5yZWZpbmUoaT0+InJlY3VycmluZyIhPT1pLnR5cGV8fCEhaS5iaWxsaW5nX2ludGVydmFsLHttZXNzYWdlOiJiaWxsaW5nX2ludGVydmFsIGlzIHJlcXVpcmVkIGZvciByZWN1cnJpbmcgcHJvZHVjdHMiLHBhdGg6WyJiaWxsaW5nX2ludGVydmFsIl19KSxsPWEucGFydGlhbCgpO2V4cG9ydHtuIGFzIEMsbCBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvZHVjdC5tanMubWFwCg==", "chunks/_/project.mjs": "aW1wb3J0e28gYXMgYSxfIGFzIGUscyBhcyBpLEcgYXMgdH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgcj1hKHtuYW1lOmkoKS5taW4oMSkubWF4KDIwMCksZGVzY3JpcHRpb246aSgpLm1heCgyZTMpLm9wdGlvbmFsKCksc3RhdHVzOmUoWyJhY3RpdmUiLCJhcmNoaXZlZCJdKS5kZWZhdWx0KCJhY3RpdmUiKX0pLHM9ci5wYXJ0aWFsKCksbz1hKHtwcm9kdWN0X2lkOmkoKS51dWlkKCkscXVhbnRpdHk6dCgpLmludCgpLm1pbigxKS5kZWZhdWx0KDEpfSksbT1hKHt1c2VyX2lkOmkoKS51dWlkKCkscm9sZTplKFsib3duZXIiLCJtZW1iZXIiLCJ2aWV3ZXIiXSkuZGVmYXVsdCgibWVtYmVyIil9KTtleHBvcnR7bSBhcyBBLHIgYXMgQyxzIGFzIFUsbyBhcyBhfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvamVjdC5tanMubWFwCg==", "chunks/_/role.mjs": "aW1wb3J0e28gYXMgcyxhLHMgYXMgaX1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgZT1hKGkoKSkubWF4KDY0KSxvPXMoe25hbWU6aSgpLnRyaW0oKS5taW4oMSkubWF4KDUwKSxkZXNjcmlwdGlvbjppKCkudHJpbSgpLm1heCgyMDApLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6ZX0pLG09by5wYXJ0aWFsKCkucmVmaW5lKHM9Pk9iamVjdC5rZXlzKHMpLmxlbmd0aD4wLHttZXNzYWdlOiJObyBjaGFuZ2VzIn0pLHI9cyh7cm9sZV9pZHM6YShpKCkpfSk7ZXhwb3J0e3IgYXMgQSxvIGFzIEMsbSBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm9sZS5tanMubWFwCg==", "chunks/_/schema.mjs": "aW1wb3J0e3kgYXMgZSx6IGFzIHQsQSBhcyBhLEIgYXMgbyxDIGFzIG4scSBhcyBpLEQgYXMgZH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgcz1lKCJzZWxmaG9zdF9kZXBsb3ltZW50cyIse29yZ2FuaXphdGlvbl9pZDpvKCJvcmdhbml6YXRpb25faWQiKS5wcmltYXJ5S2V5KCkucmVmZXJlbmNlcygoKT0+aS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSksY2ZfYWNjb3VudF9pZDpvKCJjZl9hY2NvdW50X2lkIiksY2Zfc2NyaXB0X25hbWU6bygiY2Zfc2NyaXB0X25hbWUiKSx3b3JrZXJzX2Rldl91cmw6bygid29ya2Vyc19kZXZfdXJsIiksZGVwbG95ZWRfdmVyc2lvbjpvKCJkZXBsb3llZF92ZXJzaW9uIiksZGVwbG95ZWRfYXQ6YSgiZGVwbG95ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksY2ZfdG9rZW5fY2lwaGVydGV4dDpvKCJjZl90b2tlbl9jaXBoZXJ0ZXh0IiksY2ZfdG9rZW5faXY6bygiY2ZfdG9rZW5faXYiKSxjZl90b2tlbl9leHBpcmVzX2F0OmEoImNmX3Rva2VuX2V4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksc3RhdHVzOm8oInN0YXR1cyIse2VudW06WyJpZGxlIiwiZGVwbG95aW5nIiwiZGVwbG95ZWQiLCJmYWlsZWQiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJpZGxlIiksbGFzdF9lcnJvcjpvKCJsYXN0X2Vycm9yIil9KSxyPWUoInNlbGZob3N0X2F1ZGl0Iix7aWQ6bygiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDpvKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksYWN0b3JfdXNlcl9pZDpvKCJhY3Rvcl91c2VyX2lkIikucmVmZXJlbmNlcygoKT0+bi5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGFjdGlvbjpvKCJhY3Rpb24iLHtlbnVtOlsiZGVwbG95IiwicmVkZXBsb3kiLCJkaXNjb25uZWN0Il19KS5ub3ROdWxsKCksc3VjY2VzczphKCJzdWNjZXNzIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCksY2ZfYWNjb3VudF9pZDpvKCJjZl9hY2NvdW50X2lkIiksZXJyb3JfbWVzc2FnZTpvKCJlcnJvcl9tZXNzYWdlIiksc3RhcnRlZF9hdDphKCJzdGFydGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksZmluaXNoZWRfYXQ6YSgiZmluaXNoZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSl9LGU9Plt0KCJzZWxmaG9zdF9hdWRpdF9vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLHQoInNlbGZob3N0X2F1ZGl0X3N0YXJ0ZWRfaWR4Iikub24oZS5zdGFydGVkX2F0KV0pLF89ZSgic2VsZmhvc3RfZGVwbG95bWVudF9zZWNyZXRzIix7aWQ6bygiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDpvKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksa2V5Om8oImtleSIpLm5vdE51bGwoKSxjaXBoZXJ0ZXh0Om8oImNpcGhlcnRleHQiKS5ub3ROdWxsKCksaXY6bygiaXYiKS5ub3ROdWxsKCksY3JlYXRlZF9hdDphKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDphKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2QoInNlbGZob3N0X3NlY3JldHNfb3JnX2tleV91bmlxdWUiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCxlLmtleSldKTtleHBvcnR7cyBhcyBhLF8gYXMgYixyIGFzIHN9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zY2hlbWEubWpzLm1hcAo=", "chunks/_/schema2.mjs": "aW1wb3J0e3kgYXMgZSxBIGFzIHQsQiBhcyBhLEMgYXMgZCxxIGFzIG8seiBhcyBuLGEyIGFzIHJ9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2NvbnN0IGk9ZSgicHJvamVjdHMiLHtpZDphKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOmEoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9Pm8uaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxuYW1lOmEoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246YSgiZGVzY3JpcHRpb24iKSxzdGF0dXM6YSgic3RhdHVzIix7ZW51bTpbImFjdGl2ZSIsImFyY2hpdmVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgiYWN0aXZlIiksY3JlYXRlZF9ieTphKCJjcmVhdGVkX2J5IikucmVmZXJlbmNlcygoKT0+ZC5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGNyZWF0ZWRfYXQ6dCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6dCgidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9PltuKCJwcm9qZWN0c19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLG4oInByb2plY3RzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxzPWUoInByb2plY3RfcHJvZHVjdHMiLHtwcm9qZWN0X2lkOmEoInByb2plY3RfaWQiKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscHJvZHVjdF9pZDphKCJwcm9kdWN0X2lkIikubm90TnVsbCgpLHF1YW50aXR5OnQoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksYWRkZWRfYXQ6dCgiYWRkZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3Ioe2NvbHVtbnM6W2UucHJvamVjdF9pZCxlLnByb2R1Y3RfaWRdfSldKSxsPWUoInByb2plY3RfbWVtYmVycyIse3Byb2plY3RfaWQ6YSgicHJvamVjdF9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOmEoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5kLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscm9sZTphKCJyb2xlIix7ZW51bTpbIm93bmVyIiwibWVtYmVyIiwidmlld2VyIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgibWVtYmVyIiksYWRkZWRfYXQ6dCgiYWRkZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3Ioe2NvbHVtbnM6W2UucHJvamVjdF9pZCxlLnVzZXJfaWRdfSksbigicHJvamVjdF9tZW1iZXJzX3VzZXJfaWR4Iikub24oZS51c2VyX2lkKV0pO2V4cG9ydHtsIGFzIGEscyBhcyBiLGkgYXMgcH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjaGVtYTIubWpzLm1hcAo=", "chunks/_/schema3.mjs": "aW1wb3J0e3kgYXMgdCx6IGFzIGUsQSBhcyBhLEIgYXMgbn1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgaT10KCJwcm9kdWN0cyIse2lkOm4oImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxuYW1lOm4oIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246bigiZGVzY3JpcHRpb24iKSx0eXBlOm4oInR5cGUiLHtlbnVtOlsib25lX3RpbWUiLCJyZWN1cnJpbmciXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJvbmVfdGltZSIpLHByaWNlOmEoInByaWNlIikubm90TnVsbCgpLHByaWNlX2N1cnJlbmN5Om4oInByaWNlX2N1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGJpbGxpbmdfaW50ZXJ2YWw6bigiYmlsbGluZ19pbnRlcnZhbCIse2VudW06WyJtb250aCIsInllYXIiXX0pLHN0YXR1czpuKCJzdGF0dXMiLHtlbnVtOlsiYWN0aXZlIiwiaW5hY3RpdmUiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJhY3RpdmUiKSxjcmVhdGVkX2F0OmEoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmEoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSx0PT5bZSgicHJvZHVjdHNfc3RhdHVzX2lkeCIpLm9uKHQuc3RhdHVzKSxlKCJwcm9kdWN0c190eXBlX2lkeCIpLm9uKHQudHlwZSldKTtleHBvcnR7aSBhcyBwfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2NoZW1hMy5tanMubWFwCg==", "chunks/_/schema4.mjs": "aW1wb3J0e3kgYXMgZSx6IGFzIHQsQSBhcyBhLEIgYXMgbixxIGFzIGksQyBhcyBkfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBvPWUoIm9yZ2FuaXphdGlvbl9iaWxsaW5nX3NldHRpbmdzIix7b3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxjb21wYW55X25hbWU6bigiY29tcGFueV9uYW1lIiksdGF4X2lkOm4oInRheF9pZCIpLGFkZHJlc3M6bigiYWRkcmVzcyIpLGNpdHk6bigiY2l0eSIpLGNvdW50cnk6bigiY291bnRyeSIpLmRlZmF1bHQoIlVTIiksY3VycmVuY3k6bigiY3VycmVuY3kiKS5ub3ROdWxsKCkuZGVmYXVsdCgiVVNEIiksdXBkYXRlZF9hdDphKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0pLHU9ZSgiaW52b2ljZXMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxudW1iZXI6bigibnVtYmVyIikubm90TnVsbCgpLnVuaXF1ZSgpLHN0YXR1czpuKCJzdGF0dXMiLHtlbnVtOlsiZHJhZnQiLCJzZW50IiwicGFpZCIsIm92ZXJkdWUiLCJjYW5jZWxsZWQiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJkcmFmdCIpLGN1cnJlbmN5Om4oImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLHN1YnRvdGFsOmEoInN1YnRvdGFsIikubm90TnVsbCgpLmRlZmF1bHQoMCksdGF4OmEoInRheCIpLm5vdE51bGwoKS5kZWZhdWx0KDApLHRvdGFsOmEoInRvdGFsIikubm90TnVsbCgpLmRlZmF1bHQoMCksaXNzdWVkX2F0OmEoImlzc3VlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxkdWVfYXQ6YSgiZHVlX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLHBhaWRfYXQ6YSgicGFpZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxub3RlczpuKCJub3RlcyIpLGNyZWF0ZWRfYXQ6YSgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6YSgidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9Plt0KCJpbnZvaWNlc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLHQoImludm9pY2VzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxyPWUoImludm9pY2VfaXRlbXMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksaW52b2ljZV9pZDpuKCJpbnZvaWNlX2lkIikucmVmZXJlbmNlcygoKT0+dS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGRlc2NyaXB0aW9uOm4oImRlc2NyaXB0aW9uIikubm90TnVsbCgpLHF1YW50aXR5OmEoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksdW5pdF9wcmljZTphKCJ1bml0X3ByaWNlIikubm90TnVsbCgpLGN1cnJlbmN5Om4oImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGFtb3VudDphKCJhbW91bnQiKS5ub3ROdWxsKCl9LGU9Plt0KCJpbnZvaWNlX2l0ZW1zX2ludm9pY2VfaWR4Iikub24oZS5pbnZvaWNlX2lkKV0pO2UoIm9yZ2FuaXphdGlvbl9jcmVkaXRzIix7b3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxiYWxhbmNlOmEoImJhbGFuY2UiKS5ub3ROdWxsKCkuZGVmYXVsdCgwKSx1cGRhdGVkX2F0OmEoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSk7Y29uc3Qgcz1lKCJ0cmFuc2FjdGlvbnMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOm4oInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5kLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksdHlwZTpuKCJ0eXBlIix7ZW51bTpbInRvcF91cCIsInJlZmVycmFsX3Jld2FyZCJdfSkubm90TnVsbCgpLHN0YXR1czpuKCJzdGF0dXMiLHtlbnVtOlsicGVuZGluZyIsInN1Y2Nlc3MiLCJmYWlsZWQiLCJleHBpcmVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgicGVuZGluZyIpLGFtb3VudDphKCJhbW91bnQiKS5ub3ROdWxsKCksZ2F0ZXdheV9yZWY6bigiZ2F0ZXdheV9yZWYiKS51bmlxdWUoKSxzZXBheV9ldmVudF9pZDpuKCJzZXBheV9ldmVudF9pZCIpLnVuaXF1ZSgpLG1ldGFkYXRhOm4oIm1ldGFkYXRhIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoe30pLGV4cGlyZXNfYXQ6YSgiZXhwaXJlc19hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxjcmVhdGVkX2F0OmEoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmEoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bdCgidHJhbnNhY3Rpb25zX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksdCgidHJhbnNhY3Rpb25zX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKTtleHBvcnR7ciBhcyBhLHUgYXMgaSxvLHMgYXMgdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjaGVtYTQubWpzLm1hcAo=", "chunks/_/secret.mjs": "aW1wb3J0e28gYXMgYSxhIGFzIG0sc31mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgbz1hKHt1cGRhdGVzOm0oYSh7a2V5OnMoKS5taW4oMSkubWF4KDEyOCksdmFsdWU6cygpLm1pbigxKS5tYXgoMmUzKX0pKS5taW4oMSkubWF4KDUwKX0pLGk9YSh7dG86cygpLmVtYWlsKCl9KTtleHBvcnR7byBhcyBQLGkgYXMgVH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlY3JldC5tanMubWFwCg==", "chunks/_/secrets.mjs": "Y29uc3QgZT1be2tleToiTlVYVF9BVVRIX1NFQ1JFVCIsbGFiZWw6IkF1dGggc2lnbmluZyBzZWNyZXQiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGVuY3J5cHQgc2Vzc2lvbiB0b2tlbnMuIFN0YWJsZSBhY3Jvc3MgcmVkZXBsb3lzIOKAlCByb3RhdGluZyBsb2dzIGFsbCB1c2VycyBvdXQuIixjYXRlZ29yeToic3lzdGVtIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzoicmFuZG9tLWhleC0zMiJ9LHtrZXk6Ik5VWFRfV0VCSE9PS19TSUdOSU5HX1NFQ1JFVCIsbGFiZWw6IldlYmhvb2sgc2lnbmluZyBzZWNyZXQiLGRlc2NyaXB0aW9uOiJITUFDIGtleSBmb3Igb3V0Ym91bmQgd2ViaG9vayBzaWduYXR1cmVzLiIsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86InJhbmRvbS1oZXgtMzIifSx7a2V5OiJOVVhUX1RBU0tfU0VDUkVUIixsYWJlbDoiVGFzayBiZWFyZXIgc2VjcmV0IixkZXNjcmlwdGlvbjoiQmVhcmVyIGd1YXJkIGZvciBpbnRlcm5hbCAvYXBpL3Rhc2tzLyoqIHJvdXRlcy4iLGNhdGVnb3J5OiJzeXN0ZW0iLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOiJyYW5kb20taGV4LTMyIn0se2tleToiTlVYVF9DUk9OX1NFQ1JFVCIsbGFiZWw6IkNyb24gYmVhcmVyIHNlY3JldCIsZGVzY3JpcHRpb246IkJlYXJlciBndWFyZCBmb3IgL2FwaS9jcm9uLyoqIHJvdXRlcy4iLGNhdGVnb3J5OiJzeXN0ZW0iLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOiJyYW5kb20taGV4LTMyIn0se2tleToiTlVYVF9QVUJMSUNfQkFTRV9ET01BSU4iLGxhYmVsOiJQdWJsaWMgYmFzZSBkb21haW4iLGRlc2NyaXB0aW9uOiJEZXJpdmVkIGZyb20geW91ciB3b3JrZXJzLmRldiBVUkwuIFNlcnZlci1zaWRlIHJlYWRzIG9ubHk7IGNsaWVudC1zaWRlIGJ1bmRsZXMgdXNlIHRoZSBidWlsZC10aW1lIHZhbHVlLiIsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86ImRlcml2ZS1iYXNlLWRvbWFpbiJ9LHtrZXk6Ik5VWFRfUFVCTElDX1NTTF9FTkFCTEVEIixsYWJlbDoiU1NMIGVuYWJsZWQgZmxhZyIsZGVzY3JpcHRpb246J0Fsd2F5cyAidHJ1ZSIgZm9yIHdvcmtlcnMuZGV2IGRlcGxveW1lbnRzLicsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86ImRlcml2ZS1zc2wtZW5hYmxlZCJ9LHtrZXk6Ik5VWFRfR0lUSFVCX1JFTEVBU0VfUkVQTyIsbGFiZWw6IlJlbGVhc2UgcmVwbyIsZGVzY3JpcHRpb246Ik9XTkVSL1JFUE8gdGhhdCB0aGUgZGVwbG95ZWQgd29ya2VyIGNoZWNrcyBmb3Igc2VsZi11cGRhdGVzLiIsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86ImRlcml2ZS1yZWxlYXNlLXJlcG8ifSx7a2V5OiJOVVhUX0dPT0dMRV9DTElFTlRfSUQiLGxhYmVsOiJHb29nbGUgT0F1dGggY2xpZW50IElEIixkZXNjcmlwdGlvbjoiRnJvbSBHb29nbGUgQ2xvdWQgQ29uc29sZSDihpIgQ3JlZGVudGlhbHMuIFdoaXRlbGlzdCB5b3VyIHdvcmtlciBVUkwgKyAvYXBpL2F1dGgvZ29vZ2xlL2NhbGxiYWNrLiIsY2F0ZWdvcnk6Im9hdXRoIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX0dPT0dMRV9DTElFTlRfU0VDUkVUIixsYWJlbDoiR29vZ2xlIE9BdXRoIGNsaWVudCBzZWNyZXQiLGRlc2NyaXB0aW9uOiJQYWlycyB3aXRoIHRoZSBjbGllbnQgSUQgYWJvdmUuIixjYXRlZ29yeToib2F1dGgiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfR0lUSFVCX0NMSUVOVF9JRCIsbGFiZWw6IkdpdEh1YiBPQXV0aCBjbGllbnQgSUQiLGRlc2NyaXB0aW9uOiJGcm9tIEdpdEh1YiBEZXZlbG9wZXIgU2V0dGluZ3Mg4oaSIE9BdXRoIEFwcHMuIFdoaXRlbGlzdCB5b3VyIHdvcmtlciBVUkwgKyAvYXBpL2F1dGgvZ2l0aHViL2NhbGxiYWNrLiIsY2F0ZWdvcnk6Im9hdXRoIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX0dJVEhVQl9DTElFTlRfU0VDUkVUIixsYWJlbDoiR2l0SHViIE9BdXRoIGNsaWVudCBzZWNyZXQiLGRlc2NyaXB0aW9uOiJQYWlycyB3aXRoIHRoZSBjbGllbnQgSUQgYWJvdmUuIixjYXRlZ29yeToib2F1dGgiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfR0lUSFVCX1RPS0VOIixsYWJlbDoiR2l0SHViIHRva2VuIChwcml2YXRlIHJlcG8gdXBkYXRlcykiLGRlc2NyaXB0aW9uOiJQQVQgd2l0aCBjb250ZW50czpyZWFkLiBPbmx5IG5lZWRlZCBpZiB5b3VyIHJlbGVhc2UgcmVwbyBpcyBwcml2YXRlLiIsY2F0ZWdvcnk6Im9hdXRoIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX1NNVFBfSE9TVCIsbGFiZWw6IlNNVFAgaG9zdCIsZGVzY3JpcHRpb246ImUuZy4gc210cC5yZXNlbmQuY29tLCBzbXRwLnNlbmRncmlkLm5ldC4iLGNhdGVnb3J5OiJzbXRwIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX1NNVFBfUE9SVCIsbGFiZWw6IlNNVFAgcG9ydCIsZGVzY3JpcHRpb246IlR5cGljYWxseSA1ODcgKFNUQVJUVExTKSBvciA0NjUgKFNTTCkuIixjYXRlZ29yeToic210cCIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH0se2tleToiTlVYVF9TTVRQX1VTRVIiLGxhYmVsOiJTTVRQIHVzZXJuYW1lIixkZXNjcmlwdGlvbjonT2Z0ZW4gImFwaWtleSIgZm9yIHNlcnZpY2VzIGxpa2UgU2VuZEdyaWQvUmVzZW5kLicsY2F0ZWdvcnk6InNtdHAiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfU01UUF9QQVNTIixsYWJlbDoiU01UUCBwYXNzd29yZCAvIEFQSSBrZXkiLGRlc2NyaXB0aW9uOiJUaGUgYWN0dWFsIHByb3ZpZGVyIEFQSSBrZXkuIixjYXRlZ29yeToic210cCIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH0se2tleToiTlVYVF9TTVRQX0ZST00iLGxhYmVsOiJGcm9tIGFkZHJlc3MiLGRlc2NyaXB0aW9uOidlLmcuICJNeUFwcCA8bm8tcmVwbHlAbXlicmFuZC5jb20+Ii4gTXVzdCBiZSBhIHZlcmlmaWVkIHNlbmRlci4nLGNhdGVnb3J5OiJzbXRwIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX1NFUEFZX1RSQU5TQUNUSU9OX1BSRUZJWCIsbGFiZWw6IlNlcGF5IHRyYW5zYWN0aW9uIHByZWZpeCIsZGVzY3JpcHRpb246IlVzZWQgdG8gaWRlbnRpZnkgeW91ciB0cmFuc2FjdGlvbnMgaW4gYmFuayB0cmFuc2ZlciBkZXNjcmlwdGlvbnMuIixjYXRlZ29yeToicGF5bWVudHMiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfU0VQQVlfQkFOS19OVU1CRVIiLGxhYmVsOiJTZXBheSBiYW5rIGFjY291bnQgbnVtYmVyIixkZXNjcmlwdGlvbjoiWW91ciBiYW5rIGFjY291bnQgdG8gcmVjZWl2ZSBwYXltZW50cy4iLGNhdGVnb3J5OiJwYXltZW50cyIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH0se2tleToiTlVYVF9TRVBBWV9CQU5LX05BTUUiLGxhYmVsOiJTZXBheSBiYW5rIG5hbWUiLGRlc2NyaXB0aW9uOidCYW5rIHNob3J0IGNvZGUsIGUuZy4gIlZDQiIgZm9yIFZpZXRjb21iYW5rLicsY2F0ZWdvcnk6InBheW1lbnRzIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX0NVU1RPTUVSX1NVUFBPUlRfRU1BSUwiLGxhYmVsOiJDdXN0b21lciBzdXBwb3J0IGVtYWlsIixkZXNjcmlwdGlvbjoiU3VyZmFjZXMgaW4gc3VwcG9ydCBlbWFpbHMgYW5kIHRoZSBjb250YWN0IGZvcm0uIixjYXRlZ29yeToic3VwcG9ydCIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH1dLHQ9bmV3IFNldChlLm1hcChlPT5lLmtleSkpO2Z1bmN0aW9uIGlzS25vd25TZWNyZXRLZXkoZSl7cmV0dXJuIHQuaGFzKGUpfWZ1bmN0aW9uIGZpbmRTZWNyZXREZWYodCl7cmV0dXJuIGUuZmluZChlPT5lLmtleT09PXQpfWZ1bmN0aW9uIGdlbmVyYXRlQXV0b1NlY3JldChlLHQpe3N3aXRjaChlLmF1dG8pe2Nhc2UicmFuZG9tLWhleC0zMiI6e2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoMzIpO3JldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpLEFycmF5LmZyb20oZSkubWFwKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIil9Y2FzZSJkZXJpdmUtYmFzZS1kb21haW4iOnJldHVybiBuZXcgVVJMKHQud29ya2Vyc0RldlVybCkuaG9zdDtjYXNlImRlcml2ZS1zc2wtZW5hYmxlZCI6cmV0dXJuInRydWUiO2Nhc2UiZGVyaXZlLXJlbGVhc2UtcmVwbyI6cmV0dXJuIHQucmVsZWFzZVJlcG87ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZXhwb3J0e2UgYXMgUyxmaW5kU2VjcmV0RGVmIGFzIGYsZ2VuZXJhdGVBdXRvU2VjcmV0IGFzIGcsaXNLbm93blNlY3JldEtleSBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VjcmV0cy5tanMubWFwCg==", "chunks/_/seed.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIGEsdSBhcyByfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7YyBhcyBpfWZyb20iLi9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBtPXtzbHVnOiJzeXN0ZW0iLG5hbWU6IlN5c3RlbSJ9LG49e3NsdWc6ImRlbW8iLG5hbWU6IkRlbW8gT3JnYW5pemF0aW9uIn0scz17YWRtaW46WyJ1c2VyOmltcGVyc29uYXRlIiwic3lzdGVtOm1hbmFnZSIsInN1cHBvcnQ6bWFuYWdlIiwicHJvZHVjdDptYW5hZ2UiXX0sbz17YWRtaW46WyJ1c2VyOm1hbmFnZSIsInByb2plY3Q6bWFuYWdlIiwiYmlsbGluZzptYW5hZ2UiLCJiaWxsaW5nOnJlYWQiXSxtZW1iZXI6WyJ1c2VyOnJlYWQiLCJwcm9qZWN0OnJlYWQiLCJwcm9qZWN0OndyaXRlIiwiYmlsbGluZzpyZWFkIl0sZ3Vlc3Q6WyJwcm9qZWN0OnJlYWQiXX0sbD1be3ByaW1hcnlfZW1haWw6ImFkbWluQHNlZWQubG9jYWwiLHVzZXJuYW1lOiJzZWVkX2FkbWluIixuYW1lOiJTZWVkIEFkbWluIixwcmltYXJ5X3Bob25lOiIrMTAwMDAwMDAwMDEifSx7cHJpbWFyeV9lbWFpbDoiYWxpY2VAc2VlZC5sb2NhbCIsdXNlcm5hbWU6InNlZWRfYWxpY2UiLG5hbWU6IlNlZWQgQWxpY2UiLHByaW1hcnlfcGhvbmU6IisxMDAwMDAwMDAwMiJ9LHtwcmltYXJ5X2VtYWlsOiJib2JAc2VlZC5sb2NhbCIsdXNlcm5hbWU6InNlZWRfYm9iIixuYW1lOiJTZWVkIEJvYiIscHJpbWFyeV9waG9uZToiKzEwMDAwMDAwMDAzIn1dO2FzeW5jIGZ1bmN0aW9uIHNlZWRVc2VycyhtPWwpe3ZhciBuLHM7Y29uc3Qgbz1bXTtmb3IoY29uc3QgbCBvZiBtKXtjb25zdCBtPWF3YWl0IGUucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6YShyLnByaW1hcnlfZW1haWwsbC5wcmltYXJ5X2VtYWlsKX0pO2lmKG0pe2NvbnN0W3NdPWF3YWl0IGUudXBkYXRlKHIpLnNldCh7dXNlcm5hbWU6bC51c2VybmFtZSxuYW1lOmwubmFtZSxwcmltYXJ5X3Bob25lOm51bGwhPShuPWwucHJpbWFyeV9waG9uZSk/bjpudWxsLHZlcmlmaWVkOiEwfSkud2hlcmUoYShyLmlkLG0uaWQpKS5yZXR1cm5pbmcoKTthd2FpdCBpKHMpLG8ucHVzaCh7aWQ6cy5pZCxwcmltYXJ5X2VtYWlsOnMucHJpbWFyeV9lbWFpbH0pfWVsc2V7Y29uc3RbYV09YXdhaXQgZS5pbnNlcnQocikudmFsdWVzKHtwcmltYXJ5X2VtYWlsOmwucHJpbWFyeV9lbWFpbCx1c2VybmFtZTpsLnVzZXJuYW1lLG5hbWU6bC5uYW1lLHByaW1hcnlfcGhvbmU6bnVsbCE9KHM9bC5wcmltYXJ5X3Bob25lKT9zOm51bGwsdmVyaWZpZWQ6ITB9KS5yZXR1cm5pbmcoKTthd2FpdCBpKGEpLG8ucHVzaCh7aWQ6YS5pZCxwcmltYXJ5X2VtYWlsOmEucHJpbWFyeV9lbWFpbH0pfX1yZXR1cm4gb31leHBvcnR7biBhcyBELHMgYXMgUyxtIGFzIGEsbyBhcyBiLHNlZWRVc2VycyBhcyBzfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VlZC5tanMubWFwCg==", "chunks/_/session.mjs": "aW1wb3J0e0wgYXMgaSxrIGFzIHMsUiBhcyBhLGQgYXMgZSxoIGFzIG4sdSBhcyB0fWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByLGwgYXMgbyxpIGFzIGx9ZnJvbSIuL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGQ9NjA0ODAwLHU9Mjthc3luYyBmdW5jdGlvbiBidWlsZFNlc3Npb24oaSxzKXt2YXIgYSxlLG4sdCxsO2NvbnN0IGQ9dm9pZCAwIT09cy5hY3RpdmVPcmdhbml6YXRpb25JZD9zLmFjdGl2ZU9yZ2FuaXphdGlvbklkOmF3YWl0IHIoaS5pZCksdT1hd2FpdCBvKGkuaWQsZCk7cmV0dXJue2lkOmkuaWQscHJpbWFyeV9lbWFpbDppLnByaW1hcnlfZW1haWwscHJpbWFyeV9waG9uZTppLnByaW1hcnlfcGhvbmUsdXNlcm5hbWU6bnVsbCE9KGE9aS51c2VybmFtZSk/YToiIixuYW1lOm51bGwhPShlPWkubmFtZSk/ZToiIixhdmF0YXI6aS5hdmF0YXIsYmlvOm51bGwhPShuPWkuYmlvKT9uOm51bGwsdmVyaWZpZWQ6bnVsbCE9KHQ9aS52ZXJpZmllZCkmJnQscHJvdmlkZXI6cy5wcm92aWRlcixhYmlsaXRpZXM6dSxhY3RpdmVPcmdhbml6YXRpb25JZDpkLGltcGVyc29uYXRvcjpudWxsIT0obD1zLmltcGVyc29uYXRvcik/bDpudWxsLGdlbmVyYXRpb246Mn19YXN5bmMgZnVuY3Rpb24gcGVyc2lzdFNlc3Npb24oZSxuLHQpe3ZhciByO2NvbnN0IG89YXdhaXQgYnVpbGRTZXNzaW9uKG4sdCksbD1udWxsIT0ocj10LnNlc3Npb25JZCk/cjppKCk7cmV0dXJuIGF3YWl0IHMuc2V0KGBzZXNzaW9uOiR7bH1gLG8se3R0bDpkfSksYShlLCJzZXNzaW9uaWQiLGwse2h0dHBPbmx5OiEwLHNlY3VyZTohMCxzYW1lU2l0ZToibGF4IixtYXhBZ2U6ZCxwYXRoOiIvIn0pLHtzZXNzaW9uOm8sc2Vzc2lvbklkOmx9fWFzeW5jIGZ1bmN0aW9uIHdyaXRlU2Vzc2lvbihpLGEpe2F3YWl0IHMuc2V0KGBzZXNzaW9uOiR7aX1gLGEse3R0bDpkfSl9YXN5bmMgZnVuY3Rpb24gcmVmcmVzaFVzZXJTZXNzaW9ucyhpKXtjb25zdCBhPWF3YWl0IHMua2V5cygic2Vzc2lvbjoiKTtpZigwPT09YS5sZW5ndGgpcmV0dXJuIDA7Y29uc3Qgbz1hd2FpdCBlLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOm4odC5pZCxpKX0pO2lmKCFvKXJldHVybiAwO2xldCBkPTA7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgYT1hd2FpdCBzLmdldChlKTtpZighYXx8YS5pZCE9PWkpY29udGludWU7Y29uc3Qgbj1lLnNsaWNlKDgpO2xldCB0PWEuYWN0aXZlT3JnYW5pemF0aW9uSWQ7dCYmIWF3YWl0IGwoaSx0KSYmKHQ9YXdhaXQgcihpKSk7Y29uc3QgdT1hd2FpdCBidWlsZFNlc3Npb24obyx7cHJvdmlkZXI6YS5wcm92aWRlcixhY3RpdmVPcmdhbml6YXRpb25JZDp0LGltcGVyc29uYXRvcjphLmltcGVyc29uYXRvcn0pO2F3YWl0IHdyaXRlU2Vzc2lvbihuLHUpLGQrK31yZXR1cm4gZH1leHBvcnR7dSBhcyBTLGJ1aWxkU2Vzc2lvbiBhcyBiLHBlcnNpc3RTZXNzaW9uIGFzIHAscmVmcmVzaFVzZXJTZXNzaW9ucyBhcyByLHdyaXRlU2Vzc2lvbiBhcyB3fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2Vzc2lvbi5tanMubWFwCg==", "chunks/_/shared.esm-bundler.mjs": "aW1wb3J0e2F6IGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIG1ha2VNYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBhIG9mIGUuc3BsaXQoIiwiKSl0W2FdPTE7cmV0dXJuIGU9PmUgaW4gdH1jb25zdCB0PXt9LGE9W10sTk9PUD0oKT0+e30sTk89KCk9PiExLGlzT249ZT0+MTExPT09ZS5jaGFyQ29kZUF0KDApJiYxMTA9PT1lLmNoYXJDb2RlQXQoMSkmJihlLmNoYXJDb2RlQXQoMik+MTIyfHxlLmNoYXJDb2RlQXQoMik8OTcpLGlzTW9kZWxMaXN0ZW5lcj1lPT5lLnN0YXJ0c1dpdGgoIm9uVXBkYXRlOiIpLG49T2JqZWN0LmFzc2lnbixyZW1vdmU9KGUsdCk9Pntjb25zdCBhPWUuaW5kZXhPZih0KTthPi0xJiZlLnNwbGljZShhLDEpfSxyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksaGFzT3duPShlLHQpPT5yLmNhbGwoZSx0KSxpPUFycmF5LmlzQXJyYXksaXNNYXA9ZT0+IltvYmplY3QgTWFwXSI9PT10b1R5cGVTdHJpbmcoZSksaXNTZXQ9ZT0+IltvYmplY3QgU2V0XSI9PT10b1R5cGVTdHJpbmcoZSksaXNEYXRlPWU9PiJbb2JqZWN0IERhdGVdIj09PXRvVHlwZVN0cmluZyhlKSxpc1JlZ0V4cD1lPT4iW29iamVjdCBSZWdFeHBdIj09PXRvVHlwZVN0cmluZyhlKSxpc0Z1bmN0aW9uPWU9PiJmdW5jdGlvbiI9PXR5cGVvZiBlLGlzU3RyaW5nPWU9PiJzdHJpbmciPT10eXBlb2YgZSxpc1N5bWJvbD1lPT4ic3ltYm9sIj09dHlwZW9mIGUsaXNPYmplY3Q9ZT0+bnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSxpc1Byb21pc2U9ZT0+KGlzT2JqZWN0KGUpfHxpc0Z1bmN0aW9uKGUpKSYmaXNGdW5jdGlvbihlLnRoZW4pJiZpc0Z1bmN0aW9uKGUuY2F0Y2gpLG89T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyx0b1R5cGVTdHJpbmc9ZT0+by5jYWxsKGUpLHRvUmF3VHlwZT1lPT50b1R5cGVTdHJpbmcoZSkuc2xpY2UoOCwtMSksaXNQbGFpbk9iamVjdD1lPT4iW29iamVjdCBPYmplY3RdIj09PXRvVHlwZVN0cmluZyhlKSxpc0ludGVnZXJLZXk9ZT0+aXNTdHJpbmcoZSkmJiJOYU4iIT09ZSYmIi0iIT09ZVswXSYmIiIrcGFyc2VJbnQoZSwxMCk9PT1lLHM9bWFrZU1hcCgiLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LG9uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCxvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLG9uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWQiKSxsPW1ha2VNYXAoImJpbmQsY2xvYWssZWxzZS1pZixlbHNlLGZvcixodG1sLGlmLG1vZGVsLG9uLG9uY2UscHJlLHNob3csc2xvdCx0ZXh0LG1lbW8iKSxjYWNoZVN0cmluZ0Z1bmN0aW9uPWU9Pntjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGE9PnRbYV18fCh0W2FdPWUoYSkpfSxjPS8tXHcvZyxwPWNhY2hlU3RyaW5nRnVuY3Rpb24oZT0+ZS5yZXBsYWNlKGMsZT0+ZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpKSksbT0vXEIoW0EtWl0pL2csZD1jYWNoZVN0cmluZ0Z1bmN0aW9uKGU9PmUucmVwbGFjZShtLCItJDEiKS50b0xvd2VyQ2FzZSgpKSxmPWNhY2hlU3RyaW5nRnVuY3Rpb24oZT0+ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKSx1PWNhY2hlU3RyaW5nRnVuY3Rpb24oZT0+ZT9gb24ke2YoZSl9YDoiIiksaGFzQ2hhbmdlZD0oZSx0KT0+IU9iamVjdC5pcyhlLHQpLGludm9rZUFycmF5Rm5zPShlLC4uLnQpPT57Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspZVthXSguLi50KX0sZGVmPShlLHQsYSxuPSExKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOm4sdmFsdWU6YX0pfSxsb29zZVRvTnVtYmVyPWU9Pntjb25zdCB0PXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHQpP2U6dH0sdG9OdW1iZXI9ZT0+e2NvbnN0IHQ9aXNTdHJpbmcoZSk/TnVtYmVyKGUpOk5hTjtyZXR1cm4gaXNOYU4odCk/ZTp0fTtsZXQgZztjb25zdCBnZXRHbG9iYWxUaGlzPSgpPT5nfHwoZz0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp2b2lkIDAhPT1lP2U6e30pLGg9L15bXyRhLXpBLVpceEEwLVx1RkZGRl1bXyRhLXpBLVowLTlceEEwLVx1RkZGRl0qJC87Y29uc3QgeT17MToiVEVYVCIsMjoiQ0xBU1MiLDQ6IlNUWUxFIiw4OiJQUk9QUyIsMTY6IkZVTExfUFJPUFMiLDMyOiJORUVEX0hZRFJBVElPTiIsNjQ6IlNUQUJMRV9GUkFHTUVOVCIsMTI4OiJLRVlFRF9GUkFHTUVOVCIsMjU2OiJVTktFWUVEX0ZSQUdNRU5UIiw1MTI6Ik5FRURfUEFUQ0giLDEwMjQ6IkRZTkFNSUNfU0xPVFMiLDIwNDg6IkRFVl9ST09UX0ZSQUdNRU5UIixbLTFdOiJDQUNIRUQiLFstMl06IkJBSUwifSxiPXsxOiJTVEFCTEUiLDI6IkRZTkFNSUMiLDM6IkZPUldBUkRFRCJ9LEU9bWFrZU1hcCgiSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTixwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCxNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsQmlnSW50LGNvbnNvbGUsRXJyb3IsU3ltYm9sIiksUz1FO2Z1bmN0aW9uIGdlbmVyYXRlQ29kZUZyYW1lKGUsdD0wLGE9ZS5sZW5ndGgpe2lmKCh0PU1hdGgubWF4KDAsTWF0aC5taW4odCxlLmxlbmd0aCkpKT4oYT1NYXRoLm1heCgwLE1hdGgubWluKGEsZS5sZW5ndGgpKSkpcmV0dXJuIiI7bGV0IG49ZS5zcGxpdCgvKFxyP1xuKS8pO2NvbnN0IHI9bi5maWx0ZXIoKGUsdCk9PnQlMj09MSk7bj1uLmZpbHRlcigoZSx0KT0+dCUyPT0wKTtsZXQgaT0wO2NvbnN0IG89W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspaWYoaSs9bltlXS5sZW5ndGgrKHJbZV0mJnJbZV0ubGVuZ3RofHwwKSxpPj10KXtmb3IobGV0IHM9ZS0yO3M8PWUrMnx8YT5pO3MrKyl7aWYoczwwfHxzPj1uLmxlbmd0aCljb250aW51ZTtjb25zdCBsPXMrMTtvLnB1c2goYCR7bH0keyIgIi5yZXBlYXQoTWF0aC5tYXgoMy1TdHJpbmcobCkubGVuZ3RoLDApKX18ICAke25bc119YCk7Y29uc3QgYz1uW3NdLmxlbmd0aCxwPXJbc10mJnJbc10ubGVuZ3RofHwwO2lmKHM9PT1lKXtjb25zdCBlPXQtKGktKGMrcCkpLG49TWF0aC5tYXgoMSxhPmk/Yy1lOmEtdCk7by5wdXNoKCIgICB8ICAiKyIgIi5yZXBlYXQoZSkrIl4iLnJlcGVhdChuKSl9ZWxzZSBpZihzPmUpe2lmKGE+aSl7Y29uc3QgZT1NYXRoLm1heChNYXRoLm1pbihhLWksYyksMSk7by5wdXNoKCIgICB8ICAiKyJeIi5yZXBlYXQoZSkpfWkrPWMrcH19YnJlYWt9cmV0dXJuIG8uam9pbigiXG4iKX1mdW5jdGlvbiBub3JtYWxpemVTdHlsZShlKXtpZihpKGUpKXtjb25zdCB0PXt9O2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCBuPWVbYV0scj1pc1N0cmluZyhuKT9wYXJzZVN0cmluZ1N0eWxlKG4pOm5vcm1hbGl6ZVN0eWxlKG4pO2lmKHIpZm9yKGNvbnN0IGUgaW4gcil0W2VdPXJbZV19cmV0dXJuIHR9aWYoaXNTdHJpbmcoZSl8fGlzT2JqZWN0KGUpKXJldHVybiBlfWNvbnN0IEE9LzsoPyFbXihdKlwpKS9nLFQ9LzooW15dKykvLE49L1wvXCpbXl0qP1wqXC8vZztmdW5jdGlvbiBwYXJzZVN0cmluZ1N0eWxlKGUpe2NvbnN0IHQ9e307cmV0dXJuIGUucmVwbGFjZShOLCIiKS5zcGxpdChBKS5mb3JFYWNoKGU9PntpZihlKXtjb25zdCBhPWUuc3BsaXQoVCk7YS5sZW5ndGg+MSYmKHRbYVswXS50cmltKCldPWFbMV0udHJpbSgpKX19KSx0fWZ1bmN0aW9uIHN0cmluZ2lmeVN0eWxlKGUpe2lmKCFlKXJldHVybiIiO2lmKGlzU3RyaW5nKGUpKXJldHVybiBlO2xldCB0PSIiO2Zvcihjb25zdCBhIGluIGUpe2NvbnN0IG49ZVthXTtpZihpc1N0cmluZyhuKXx8Im51bWJlciI9PXR5cGVvZiBuKXt0Kz1gJHthLnN0YXJ0c1dpdGgoIi0tIik/YTpkKGEpfToke259O2B9fXJldHVybiB0fWZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzKGUpe2xldCB0PSIiO2lmKGlzU3RyaW5nKGUpKXQ9ZTtlbHNlIGlmKGkoZSkpZm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IG49bm9ybWFsaXplQ2xhc3MoZVthXSk7biYmKHQrPW4rIiAiKX1lbHNlIGlmKGlzT2JqZWN0KGUpKWZvcihjb25zdCBhIGluIGUpZVthXSYmKHQrPWErIiAiKTtyZXR1cm4gdC50cmltKCl9ZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMoZSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0e2NsYXNzOnQsc3R5bGU6YX09ZTtyZXR1cm4gdCYmIWlzU3RyaW5nKHQpJiYoZS5jbGFzcz1ub3JtYWxpemVDbGFzcyh0KSksYSYmKGUuc3R5bGU9bm9ybWFsaXplU3R5bGUoYSkpLGV9Y29uc3Qgaz1tYWtlTWFwKCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsaDEsaDIsaDMsaDQsaDUsaDYsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsc3VtbWFyeSx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCIpLE89bWFrZU1hcCgic3ZnLGFuaW1hdGUsYW5pbWF0ZU1vdGlvbixhbmltYXRlVHJhbnNmb3JtLGNpcmNsZSxjbGlwUGF0aCxjb2xvci1wcm9maWxlLGRlZnMsZGVzYyxkaXNjYXJkLGVsbGlwc2UsZmVCbGVuZCxmZUNvbG9yTWF0cml4LGZlQ29tcG9uZW50VHJhbnNmZXIsZmVDb21wb3NpdGUsZmVDb252b2x2ZU1hdHJpeCxmZURpZmZ1c2VMaWdodGluZyxmZURpc3BsYWNlbWVudE1hcCxmZURpc3RhbnRMaWdodCxmZURyb3BTaGFkb3csZmVGbG9vZCxmZUZ1bmNBLGZlRnVuY0IsZmVGdW5jRyxmZUZ1bmNSLGZlR2F1c3NpYW5CbHVyLGZlSW1hZ2UsZmVNZXJnZSxmZU1lcmdlTm9kZSxmZU1vcnBob2xvZ3ksZmVPZmZzZXQsZmVQb2ludExpZ2h0LGZlU3BlY3VsYXJMaWdodGluZyxmZVNwb3RMaWdodCxmZVRpbGUsZmVUdXJidWxlbmNlLGZpbHRlcixmb3JlaWduT2JqZWN0LGcsaGF0Y2gsaGF0Y2hwYXRoLGltYWdlLGxpbmUsbGluZWFyR3JhZGllbnQsbWFya2VyLG1hc2ssbWVzaCxtZXNoZ3JhZGllbnQsbWVzaHBhdGNoLG1lc2hyb3csbWV0YWRhdGEsbXBhdGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUscmFkaWFsR3JhZGllbnQscmVjdCxzZXQsc29saWRjb2xvcixzdG9wLHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0UGF0aCx0aXRsZSx0c3Bhbix1bmtub3duLHVzZSx2aWV3IiksTT1tYWtlTWFwKCJhbm5vdGF0aW9uLGFubm90YXRpb24teG1sLG1hY3Rpb24sbWFsaWduZ3JvdXAsbWFsaWdubWFyayxtYXRoLG1lbmNsb3NlLG1lcnJvcixtZmVuY2VkLG1mcmFjLG1mcmFjdGlvbixtZ2x5cGgsbWksbWxhYmVsZWR0cixtbG9uZ2RpdixtbXVsdGlzY3JpcHRzLG1uLG1vLG1vdmVyLG1wYWRkZWQsbXBoYW50b20sbXByZXNjcmlwdHMsbXJvb3QsbXJvdyxtcyxtc2NhcnJpZXMsbXNjYXJyeSxtc2dyb3VwLG1zbGluZSxtc3BhY2UsbXNxcnQsbXNyb3csbXN0YWNrLG1zdHlsZSxtc3ViLG1zdWJzdXAsbXN1cCxtdGFibGUsbXRkLG10ZXh0LG10cixtdW5kZXIsbXVuZGVyb3Zlcixub25lLHNlbWFudGljcyIpLEM9bWFrZU1hcCgiYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxocixpbWcsaW5wdXQsbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnIiKSx4PSJpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHkiLHY9bWFrZU1hcCh4KSxSPW1ha2VNYXAoeCsiLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjb250cm9scyxkZWZhdWx0LGRlZmVyLGRpc2FibGVkLGhpZGRlbixpbmVydCxsb29wLG9wZW4scmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLGNoZWNrZWQsbXV0ZWQsbXVsdGlwbGUsc2VsZWN0ZWQiKTtmdW5jdGlvbiBpbmNsdWRlQm9vbGVhbkF0dHIoZSl7cmV0dXJuISFlfHwiIj09PWV9Y29uc3QgXz0vWz4vPSInXHUwMDA5XHUwMDBhXHUwMDBjXHUwMDIwXS8sTD17fTtmdW5jdGlvbiBpc1NTUlNhZmVBdHRyTmFtZShlKXtpZihMLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMW2VdO2NvbnN0IHQ9Xy50ZXN0KGUpO3JldHVybiB0JiZjb25zb2xlLmVycm9yKGB1bnNhZmUgYXR0cmlidXRlIG5hbWU6ICR7ZX1gKSxMW2VdPSF0fWNvbnN0IFA9e2FjY2VwdENoYXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVpdjoiaHR0cC1lcXVpdiJ9LHc9bWFrZU1hcCgiYWNjZXB0LGFjY2VwdC1jaGFyc2V0LGFjY2Vzc2tleSxhY3Rpb24sYWxpZ24sYWxsb3csYWx0LGFzeW5jLGF1dG9jYXBpdGFsaXplLGF1dG9jb21wbGV0ZSxhdXRvZm9jdXMsYXV0b3BsYXksYmFja2dyb3VuZCxiZ2NvbG9yLGJvcmRlcixidWZmZXJlZCxjYXB0dXJlLGNoYWxsZW5nZSxjaGFyc2V0LGNoZWNrZWQsY2l0ZSxjbGFzcyxjb2RlLGNvZGViYXNlLGNvbG9yLGNvbHMsY29sc3Bhbixjb250ZW50LGNvbnRlbnRlZGl0YWJsZSxjb250ZXh0bWVudSxjb250cm9scyxjb29yZHMsY3Jvc3NvcmlnaW4sY3NwLGRhdGEsZGF0ZXRpbWUsZGVjb2RpbmcsZGVmYXVsdCxkZWZlcixkaXIsZGlybmFtZSxkaXNhYmxlZCxkb3dubG9hZCxkcmFnZ2FibGUsZHJvcHpvbmUsZW5jdHlwZSxlbnRlcmtleWhpbnQsZm9yLGZvcm0sZm9ybWFjdGlvbixmb3JtZW5jdHlwZSxmb3JtbWV0aG9kLGZvcm1ub3ZhbGlkYXRlLGZvcm10YXJnZXQsaGVhZGVycyxoZWlnaHQsaGlkZGVuLGhpZ2gsaHJlZixocmVmbGFuZyxodHRwLWVxdWl2LGljb24saWQsaW1wb3J0YW5jZSxpbmVydCxpbnRlZ3JpdHksaXNtYXAsaXRlbXByb3Asa2V5dHlwZSxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9hZGluZyxsaXN0LGxvb3AsbG93LG1hbmlmZXN0LG1heCxtYXhsZW5ndGgsbWlubGVuZ3RoLG1lZGlhLG1pbixtdWx0aXBsZSxtdXRlZCxuYW1lLG5vdmFsaWRhdGUsb3BlbixvcHRpbXVtLHBhdHRlcm4scGluZyxwbGFjZWhvbGRlcixwb3N0ZXIscHJlbG9hZCxyYWRpb2dyb3VwLHJlYWRvbmx5LHJlZmVycmVycG9saWN5LHJlbCxyZXF1aXJlZCxyZXZlcnNlZCxyb3dzLHJvd3NwYW4sc2FuZGJveCxzY29wZSxzY29wZWQsc2VsZWN0ZWQsc2hhcGUsc2l6ZSxzaXplcyxzbG90LHNwYW4sc3BlbGxjaGVjayxzcmMsc3JjZG9jLHNyY2xhbmcsc3Jjc2V0LHN0YXJ0LHN0ZXAsc3R5bGUsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbHVlLHdpZHRoLHdyYXAiKSxEPW1ha2VNYXAoInhtbG5zLGFjY2VudC1oZWlnaHQsYWNjdW11bGF0ZSxhZGRpdGl2ZSxhbGlnbm1lbnQtYmFzZWxpbmUsYWxwaGFiZXRpYyxhbXBsaXR1ZGUsYXJhYmljLWZvcm0sYXNjZW50LGF0dHJpYnV0ZU5hbWUsYXR0cmlidXRlVHlwZSxhemltdXRoLGJhc2VGcmVxdWVuY3ksYmFzZWxpbmUtc2hpZnQsYmFzZVByb2ZpbGUsYmJveCxiZWdpbixiaWFzLGJ5LGNhbGNNb2RlLGNhcC1oZWlnaHQsY2xhc3MsY2xpcCxjbGlwUGF0aFVuaXRzLGNsaXAtcGF0aCxjbGlwLXJ1bGUsY29sb3IsY29sb3ItaW50ZXJwb2xhdGlvbixjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMsY29sb3ItcHJvZmlsZSxjb2xvci1yZW5kZXJpbmcsY29udGVudFNjcmlwdFR5cGUsY29udGVudFN0eWxlVHlwZSxjcm9zc29yaWdpbixjdXJzb3IsY3gsY3ksZCxkZWNlbGVyYXRlLGRlc2NlbnQsZGlmZnVzZUNvbnN0YW50LGRpcmVjdGlvbixkaXNwbGF5LGRpdmlzb3IsZG9taW5hbnQtYmFzZWxpbmUsZHVyLGR4LGR5LGVkZ2VNb2RlLGVsZXZhdGlvbixlbmFibGUtYmFja2dyb3VuZCxlbmQsZXhwb25lbnQsZmlsbCxmaWxsLW9wYWNpdHksZmlsbC1ydWxlLGZpbHRlcixmaWx0ZXJSZXMsZmlsdGVyVW5pdHMsZmxvb2QtY29sb3IsZmxvb2Qtb3BhY2l0eSxmb250LWZhbWlseSxmb250LXNpemUsZm9udC1zaXplLWFkanVzdCxmb250LXN0cmV0Y2gsZm9udC1zdHlsZSxmb250LXZhcmlhbnQsZm9udC13ZWlnaHQsZm9ybWF0LGZyb20sZnIsZngsZnksZzEsZzIsZ2x5cGgtbmFtZSxnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsLGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsLGdseXBoUmVmLGdyYWRpZW50VHJhbnNmb3JtLGdyYWRpZW50VW5pdHMsaGFuZ2luZyxoZWlnaHQsaHJlZixocmVmbGFuZyxob3Jpei1hZHYteCxob3Jpei1vcmlnaW4teCxpZCxpZGVvZ3JhcGhpYyxpbWFnZS1yZW5kZXJpbmcsaW4saW4yLGludGVyY2VwdCxrLGsxLGsyLGszLGs0LGtlcm5lbE1hdHJpeCxrZXJuZWxVbml0TGVuZ3RoLGtlcm5pbmcsa2V5UG9pbnRzLGtleVNwbGluZXMsa2V5VGltZXMsbGFuZyxsZW5ndGhBZGp1c3QsbGV0dGVyLXNwYWNpbmcsbGlnaHRpbmctY29sb3IsbGltaXRpbmdDb25lQW5nbGUsbG9jYWwsbWFya2VyLWVuZCxtYXJrZXItbWlkLG1hcmtlci1zdGFydCxtYXJrZXJIZWlnaHQsbWFya2VyVW5pdHMsbWFya2VyV2lkdGgsbWFzayxtYXNrQ29udGVudFVuaXRzLG1hc2tVbml0cyxtYXRoZW1hdGljYWwsbWF4LG1lZGlhLG1ldGhvZCxtaW4sbW9kZSxuYW1lLG51bU9jdGF2ZXMsb2Zmc2V0LG9wYWNpdHksb3BlcmF0b3Isb3JkZXIsb3JpZW50LG9yaWVudGF0aW9uLG9yaWdpbixvdmVyZmxvdyxvdmVybGluZS1wb3NpdGlvbixvdmVybGluZS10aGlja25lc3MscGFub3NlLTEscGFpbnQtb3JkZXIscGF0aCxwYXRoTGVuZ3RoLHBhdHRlcm5Db250ZW50VW5pdHMscGF0dGVyblRyYW5zZm9ybSxwYXR0ZXJuVW5pdHMscGluZyxwb2ludGVyLWV2ZW50cyxwb2ludHMscG9pbnRzQXRYLHBvaW50c0F0WSxwb2ludHNBdFoscHJlc2VydmVBbHBoYSxwcmVzZXJ2ZUFzcGVjdFJhdGlvLHByaW1pdGl2ZVVuaXRzLHIscmFkaXVzLHJlZmVycmVyUG9saWN5LHJlZlgscmVmWSxyZWwscmVuZGVyaW5nLWludGVudCxyZXBlYXRDb3VudCxyZXBlYXREdXIscmVxdWlyZWRFeHRlbnNpb25zLHJlcXVpcmVkRmVhdHVyZXMscmVzdGFydCxyZXN1bHQscm90YXRlLHJ4LHJ5LHNjYWxlLHNlZWQsc2hhcGUtcmVuZGVyaW5nLHNsb3BlLHNwYWNpbmcsc3BlY3VsYXJDb25zdGFudCxzcGVjdWxhckV4cG9uZW50LHNwZWVkLHNwcmVhZE1ldGhvZCxzdGFydE9mZnNldCxzdGREZXZpYXRpb24sc3RlbWgsc3RlbXYsc3RpdGNoVGlsZXMsc3RvcC1jb2xvcixzdG9wLW9wYWNpdHksc3RyaWtldGhyb3VnaC1wb3NpdGlvbixzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyxzdHJpbmcsc3Ryb2tlLHN0cm9rZS1kYXNoYXJyYXksc3Ryb2tlLWRhc2hvZmZzZXQsc3Ryb2tlLWxpbmVjYXAsc3Ryb2tlLWxpbmVqb2luLHN0cm9rZS1taXRlcmxpbWl0LHN0cm9rZS1vcGFjaXR5LHN0cm9rZS13aWR0aCxzdHlsZSxzdXJmYWNlU2NhbGUsc3lzdGVtTGFuZ3VhZ2UsdGFiaW5kZXgsdGFibGVWYWx1ZXMsdGFyZ2V0LHRhcmdldFgsdGFyZ2V0WSx0ZXh0LWFuY2hvcix0ZXh0LWRlY29yYXRpb24sdGV4dC1yZW5kZXJpbmcsdGV4dExlbmd0aCx0byx0cmFuc2Zvcm0sdHJhbnNmb3JtLW9yaWdpbix0eXBlLHUxLHUyLHVuZGVybGluZS1wb3NpdGlvbix1bmRlcmxpbmUtdGhpY2tuZXNzLHVuaWNvZGUsdW5pY29kZS1iaWRpLHVuaWNvZGUtcmFuZ2UsdW5pdHMtcGVyLWVtLHYtYWxwaGFiZXRpYyx2LWhhbmdpbmcsdi1pZGVvZ3JhcGhpYyx2LW1hdGhlbWF0aWNhbCx2YWx1ZXMsdmVjdG9yLWVmZmVjdCx2ZXJzaW9uLHZlcnQtYWR2LXksdmVydC1vcmlnaW4teCx2ZXJ0LW9yaWdpbi15LHZpZXdCb3gsdmlld1RhcmdldCx2aXNpYmlsaXR5LHdpZHRoLHdpZHRocyx3b3JkLXNwYWNpbmcsd3JpdGluZy1tb2RlLHgseC1oZWlnaHQseDEseDIseENoYW5uZWxTZWxlY3Rvcix4bGluazphY3R1YXRlLHhsaW5rOmFyY3JvbGUseGxpbms6aHJlZix4bGluazpyb2xlLHhsaW5rOnNob3cseGxpbms6dGl0bGUseGxpbms6dHlwZSx4bWxuczp4bGluayx4bWw6YmFzZSx4bWw6bGFuZyx4bWw6c3BhY2UseSx5MSx5Mix5Q2hhbm5lbFNlbGVjdG9yLHosem9vbUFuZFBhbiIpLEY9bWFrZU1hcCgiYWNjZW50LGFjY2VudHVuZGVyLGFjdGlvbnR5cGUsYWxpZ24sYWxpZ25tZW50c2NvcGUsYWx0aW1nLGFsdGltZy1oZWlnaHQsYWx0aW1nLXZhbGlnbixhbHRpbWctd2lkdGgsYWx0dGV4dCxiZXZlbGxlZCxjbG9zZSxjb2x1bW5zYWxpZ24sY29sdW1ubGluZXMsY29sdW1uc3BhbixkZW5vbWFsaWduLGRlcHRoLGRpcixkaXNwbGF5LGRpc3BsYXlzdHlsZSxlbmNvZGluZyxlcXVhbGNvbHVtbnMsZXF1YWxyb3dzLGZlbmNlLGZvbnRzdHlsZSxmb250d2VpZ2h0LGZvcm0sZnJhbWUsZnJhbWVzcGFjaW5nLGdyb3VwYWxpZ24saGVpZ2h0LGhyZWYsaWQsaW5kZW50YWxpZ24saW5kZW50YWxpZ25maXJzdCxpbmRlbnRhbGlnbmxhc3QsaW5kZW50c2hpZnQsaW5kZW50c2hpZnRmaXJzdCxpbmRlbnRzaGlmdGxhc3QsaW5kZXh0eXBlLGp1c3RpZnksbGFyZ2V0b3AsbGFyZ2VvcCxscXVvdGUsbHNwYWNlLG1hdGhiYWNrZ3JvdW5kLG1hdGhjb2xvcixtYXRoc2l6ZSxtYXRodmFyaWFudCxtYXhzaXplLG1pbmxhYmVsc3BhY2luZyxtb2RlLG90aGVyLG92ZXJmbG93LHBvc2l0aW9uLHJvd2FsaWduLHJvd2xpbmVzLHJvd3NwYW4scnF1b3RlLHJzcGFjZSxzY3JpcHRsZXZlbCxzY3JpcHRtaW5zaXplLHNjcmlwdHNpemVtdWx0aXBsaWVyLHNlbGVjdGlvbixzZXBhcmF0b3Isc2VwYXJhdG9ycyxzaGlmdCxzaWRlLHNyYyxzdGFja2FsaWduLHN0cmV0Y2h5LHN1YnNjcmlwdHNoaWZ0LHN1cGVyc2NyaXB0c2hpZnQsc3ltbWV0cmljLHZvZmZzZXQsd2lkdGgsd2lkdGhzLHhsaW5rOmhyZWYseGxpbms6c2hvdyx4bGluazp0eXBlLHhtbG5zIik7ZnVuY3Rpb24gaXNSZW5kZXJhYmxlQXR0clZhbHVlKGUpe2lmKG51bGw9PWUpcmV0dXJuITE7Y29uc3QgdD10eXBlb2YgZTtyZXR1cm4ic3RyaW5nIj09PXR8fCJudW1iZXIiPT09dHx8ImJvb2xlYW4iPT09dH1jb25zdCB6PS9bIicmPD5dLztmdW5jdGlvbiBlc2NhcGVIdG1sKGUpe2NvbnN0IHQ9IiIrZSxhPXouZXhlYyh0KTtpZighYSlyZXR1cm4gdDtsZXQgbixyLGk9IiIsbz0wO2ZvcihyPWEuaW5kZXg7cjx0Lmxlbmd0aDtyKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQocikpe2Nhc2UgMzQ6bj0iJnF1b3Q7IjticmVhaztjYXNlIDM4Om49IiZhbXA7IjticmVhaztjYXNlIDM5Om49IiYjMzk7IjticmVhaztjYXNlIDYwOm49IiZsdDsiO2JyZWFrO2Nhc2UgNjI6bj0iJmd0OyI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1vIT09ciYmKGkrPXQuc2xpY2UobyxyKSksbz1yKzEsaSs9bn1yZXR1cm4gbyE9PXI/aSt0LnNsaWNlKG8scik6aX1jb25zdCBJPS9eLT8+fDwhLS18LS0+fC0tIT58PCEtJC9nO2Z1bmN0aW9uIGVzY2FwZUh0bWxDb21tZW50KGUpe3JldHVybiBlLnJlcGxhY2UoSSwiIil9Y29uc3QgVT0vWyAhIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxcXV5ge3x9fl0vZztmdW5jdGlvbiBsb29zZUVxdWFsKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7bGV0IGE9aXNEYXRlKGUpLG49aXNEYXRlKHQpO2lmKGF8fG4pcmV0dXJuISghYXx8IW4pJiZlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGE9aXNTeW1ib2woZSksbj1pc1N5bWJvbCh0KSxhfHxuKXJldHVybiBlPT09dDtpZihhPWkoZSksbj1pKHQpLGF8fG4pcmV0dXJuISghYXx8IW4pJiZmdW5jdGlvbihlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7bGV0IGE9ITA7Zm9yKGxldCBuPTA7YSYmbjxlLmxlbmd0aDtuKyspYT1sb29zZUVxdWFsKGVbbl0sdFtuXSk7cmV0dXJuIGF9KGUsdCk7aWYoYT1pc09iamVjdChlKSxuPWlzT2JqZWN0KHQpLGF8fG4pe2lmKCFhfHwhbilyZXR1cm4hMTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGghPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuITE7Zm9yKGNvbnN0IGEgaW4gZSl7Y29uc3Qgbj1lLmhhc093blByb3BlcnR5KGEpLHI9dC5oYXNPd25Qcm9wZXJ0eShhKTtpZihuJiYhcnx8IW4mJnJ8fCFsb29zZUVxdWFsKGVbYV0sdFthXSkpcmV0dXJuITF9fXJldHVybiBTdHJpbmcoZSk9PT1TdHJpbmcodCl9ZnVuY3Rpb24gbG9vc2VJbmRleE9mKGUsdCl7cmV0dXJuIGUuZmluZEluZGV4KGU9Pmxvb3NlRXF1YWwoZSx0KSl9Y29uc3QgaXNSZWY9ZT0+ISghZXx8ITAhPT1lLl9fdl9pc1JlZiksdG9EaXNwbGF5U3RyaW5nPWU9PmlzU3RyaW5nKGUpP2U6bnVsbD09ZT8iIjppKGUpfHxpc09iamVjdChlKSYmKGUudG9TdHJpbmc9PT1vfHwhaXNGdW5jdGlvbihlLnRvU3RyaW5nKSk/aXNSZWYoZSk/dG9EaXNwbGF5U3RyaW5nKGUudmFsdWUpOkpTT04uc3RyaW5naWZ5KGUscmVwbGFjZXIsMik6U3RyaW5nKGUpLHJlcGxhY2VyPShlLHQpPT5pc1JlZih0KT9yZXBsYWNlcihlLHQudmFsdWUpOmlzTWFwKHQpP3tbYE1hcCgke3Quc2l6ZX0pYF06Wy4uLnQuZW50cmllcygpXS5yZWR1Y2UoKGUsW3QsYV0sbik9PihlW3N0cmluZ2lmeVN5bWJvbCh0LG4pKyIgPT4iXT1hLGUpLHt9KX06aXNTZXQodCk/e1tgU2V0KCR7dC5zaXplfSlgXTpbLi4udC52YWx1ZXMoKV0ubWFwKGU9PnN0cmluZ2lmeVN5bWJvbChlKSl9OmlzU3ltYm9sKHQpP3N0cmluZ2lmeVN5bWJvbCh0KTohaXNPYmplY3QodCl8fGkodCl8fGlzUGxhaW5PYmplY3QodCk/dDpTdHJpbmcodCksc3RyaW5naWZ5U3ltYm9sPShlLHQ9IiIpPT57dmFyIGE7cmV0dXJuIGlzU3ltYm9sKGUpP2BTeW1ib2woJHtudWxsIT0oYT1lLmRlc2NyaXB0aW9uKT9hOnR9KWA6ZX07ZnVuY3Rpb24gbm9ybWFsaXplQ3NzVmFyVmFsdWUoZSl7cmV0dXJuIG51bGw9PWU/ImluaXRpYWwiOiJzdHJpbmciPT10eXBlb2YgZT8iIj09PWU/IiAiOmU6U3RyaW5nKGUpfWNvbnN0IGo9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLEVNUFRZX0FSUjphLEVNUFRZX09CSjp0LE5POk5PLE5PT1A6Tk9PUCxQYXRjaEZsYWdOYW1lczp5LFBhdGNoRmxhZ3M6e1RFWFQ6MSwxOiJURVhUIixDTEFTUzoyLDI6IkNMQVNTIixTVFlMRTo0LDQ6IlNUWUxFIixQUk9QUzo4LDg6IlBST1BTIixGVUxMX1BST1BTOjE2LDE2OiJGVUxMX1BST1BTIixORUVEX0hZRFJBVElPTjozMiwzMjoiTkVFRF9IWURSQVRJT04iLFNUQUJMRV9GUkFHTUVOVDo2NCw2NDoiU1RBQkxFX0ZSQUdNRU5UIixLRVlFRF9GUkFHTUVOVDoxMjgsMTI4OiJLRVlFRF9GUkFHTUVOVCIsVU5LRVlFRF9GUkFHTUVOVDoyNTYsMjU2OiJVTktFWUVEX0ZSQUdNRU5UIixORUVEX1BBVENIOjUxMiw1MTI6Ik5FRURfUEFUQ0giLERZTkFNSUNfU0xPVFM6MTAyNCwxMDI0OiJEWU5BTUlDX1NMT1RTIixERVZfUk9PVF9GUkFHTUVOVDoyMDQ4LDIwNDg6IkRFVl9ST09UX0ZSQUdNRU5UIixDQUNIRUQ6LTEsIi0xIjoiQ0FDSEVEIixCQUlMOi0yLCItMiI6IkJBSUwifSxTaGFwZUZsYWdzOntFTEVNRU5UOjEsMToiRUxFTUVOVCIsRlVOQ1RJT05BTF9DT01QT05FTlQ6MiwyOiJGVU5DVElPTkFMX0NPTVBPTkVOVCIsU1RBVEVGVUxfQ09NUE9ORU5UOjQsNDoiU1RBVEVGVUxfQ09NUE9ORU5UIixURVhUX0NISUxEUkVOOjgsODoiVEVYVF9DSElMRFJFTiIsQVJSQVlfQ0hJTERSRU46MTYsMTY6IkFSUkFZX0NISUxEUkVOIixTTE9UU19DSElMRFJFTjozMiwzMjoiU0xPVFNfQ0hJTERSRU4iLFRFTEVQT1JUOjY0LDY0OiJURUxFUE9SVCIsU1VTUEVOU0U6MTI4LDEyODoiU1VTUEVOU0UiLENPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRToyNTYsMjU2OiJDT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUiLENPTVBPTkVOVF9LRVBUX0FMSVZFOjUxMiw1MTI6IkNPTVBPTkVOVF9LRVBUX0FMSVZFIixDT01QT05FTlQ6Niw2OiJDT01QT05FTlQifSxTbG90RmxhZ3M6e1NUQUJMRToxLDE6IlNUQUJMRSIsRFlOQU1JQzoyLDI6IkRZTkFNSUMiLEZPUldBUkRFRDozLDM6IkZPUldBUkRFRCJ9LGNhbWVsaXplOnAsY2FwaXRhbGl6ZTpmLGNzc1Zhck5hbWVFc2NhcGVTeW1ib2xzUkU6VSxkZWY6ZGVmLGVzY2FwZUh0bWw6ZXNjYXBlSHRtbCxlc2NhcGVIdG1sQ29tbWVudDplc2NhcGVIdG1sQ29tbWVudCxleHRlbmQ6bixnZW5DYWNoZUtleTpmdW5jdGlvbihlLHQpe3JldHVybiBlK0pTT04uc3RyaW5naWZ5KHQsKGUsdCk9PiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QudG9TdHJpbmcoKTp0KX0sZ2VuUHJvcHNBY2Nlc3NFeHA6ZnVuY3Rpb24oZSl7cmV0dXJuIGgudGVzdChlKT9gX19wcm9wcy4ke2V9YDpgX19wcm9wc1ske0pTT04uc3RyaW5naWZ5KGUpfV1gfSxnZW5lcmF0ZUNvZGVGcmFtZTpnZW5lcmF0ZUNvZGVGcmFtZSxnZXRFc2NhcGVkQ3NzVmFyTmFtZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UoVSxlPT50PyciJz09PWU/J1xcXFxcXCInOmBcXFxcJHtlfWA6YFxcJHtlfWApfSxnZXRHbG9iYWxUaGlzOmdldEdsb2JhbFRoaXMsaGFzQ2hhbmdlZDpoYXNDaGFuZ2VkLGhhc093bjpoYXNPd24saHlwaGVuYXRlOmQsaW5jbHVkZUJvb2xlYW5BdHRyOmluY2x1ZGVCb29sZWFuQXR0cixpbnZva2VBcnJheUZuczppbnZva2VBcnJheUZucyxpc0FycmF5OmksaXNCb29sZWFuQXR0cjpSLGlzQnVpbHRJbkRpcmVjdGl2ZTpsLGlzRGF0ZTppc0RhdGUsaXNGdW5jdGlvbjppc0Z1bmN0aW9uLGlzR2xvYmFsbHlBbGxvd2VkOkUsaXNHbG9iYWxseVdoaXRlbGlzdGVkOlMsaXNIVE1MVGFnOmssaXNJbnRlZ2VyS2V5OmlzSW50ZWdlcktleSxpc0tub3duSHRtbEF0dHI6dyxpc0tub3duTWF0aE1MQXR0cjpGLGlzS25vd25TdmdBdHRyOkQsaXNNYXA6aXNNYXAsaXNNYXRoTUxUYWc6TSxpc01vZGVsTGlzdGVuZXI6aXNNb2RlbExpc3RlbmVyLGlzT2JqZWN0OmlzT2JqZWN0LGlzT246aXNPbixpc1BsYWluT2JqZWN0OmlzUGxhaW5PYmplY3QsaXNQcm9taXNlOmlzUHJvbWlzZSxpc1JlZ0V4cDppc1JlZ0V4cCxpc1JlbmRlcmFibGVBdHRyVmFsdWU6aXNSZW5kZXJhYmxlQXR0clZhbHVlLGlzUmVzZXJ2ZWRQcm9wOnMsaXNTU1JTYWZlQXR0ck5hbWU6aXNTU1JTYWZlQXR0ck5hbWUsaXNTVkdUYWc6Tyxpc1NldDppc1NldCxpc1NwZWNpYWxCb29sZWFuQXR0cjp2LGlzU3RyaW5nOmlzU3RyaW5nLGlzU3ltYm9sOmlzU3ltYm9sLGlzVm9pZFRhZzpDLGxvb3NlRXF1YWw6bG9vc2VFcXVhbCxsb29zZUluZGV4T2Y6bG9vc2VJbmRleE9mLGxvb3NlVG9OdW1iZXI6bG9vc2VUb051bWJlcixtYWtlTWFwOm1ha2VNYXAsbm9ybWFsaXplQ2xhc3M6bm9ybWFsaXplQ2xhc3Msbm9ybWFsaXplQ3NzVmFyVmFsdWU6bm9ybWFsaXplQ3NzVmFyVmFsdWUsbm9ybWFsaXplUHJvcHM6bm9ybWFsaXplUHJvcHMsbm9ybWFsaXplU3R5bGU6bm9ybWFsaXplU3R5bGUsb2JqZWN0VG9TdHJpbmc6byxwYXJzZVN0cmluZ1N0eWxlOnBhcnNlU3RyaW5nU3R5bGUscHJvcHNUb0F0dHJNYXA6UCxyZW1vdmU6cmVtb3ZlLHNsb3RGbGFnc1RleHQ6YixzdHJpbmdpZnlTdHlsZTpzdHJpbmdpZnlTdHlsZSx0b0Rpc3BsYXlTdHJpbmc6dG9EaXNwbGF5U3RyaW5nLHRvSGFuZGxlcktleTp1LHRvTnVtYmVyOnRvTnVtYmVyLHRvUmF3VHlwZTp0b1Jhd1R5cGUsdG9UeXBlU3RyaW5nOnRvVHlwZVN0cmluZ30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtleHBvcnR7ayBhcyAkLHAgYXMgQSxsb29zZVRvTnVtYmVyIGFzIEIsdSBhcyBDLGQgYXMgRCx0IGFzIEUsbG9vc2VFcXVhbCBhcyBGLGlzUmVnRXhwIGFzIEcsdG9OdW1iZXIgYXMgSCxmIGFzIEksRSBhcyBKLGluY2x1ZGVCb29sZWFuQXR0ciBhcyBLLHYgYXMgTCxsb29zZUluZGV4T2YgYXMgTSxOT09QIGFzIE4sbm9ybWFsaXplQ3NzVmFyVmFsdWUgYXMgTyxub3JtYWxpemVQcm9wcyBhcyBQLHRvRGlzcGxheVN0cmluZyBhcyBRLGVzY2FwZUh0bWwgYXMgUixlc2NhcGVIdG1sQ29tbWVudCBhcyBTLEMgYXMgVCxzdHJpbmdpZnlTdHlsZSBhcyBVLGlzUmVuZGVyYWJsZUF0dHJWYWx1ZSBhcyBWLE8gYXMgVyxQIGFzIFgsUiBhcyBZLGlzU1NSU2FmZUF0dHJOYW1lIGFzIFosbCBhcyBfLGlzU3ltYm9sIGFzIGEsTSBhcyBhMCxwYXJzZVN0cmluZ1N0eWxlIGFzIGExLGdlbmVyYXRlQ29kZUZyYW1lIGFzIGEyLGogYXMgYTMsaSBhcyBiLGlzT2JqZWN0IGFzIGMsZGVmIGFzIGQsaGFzQ2hhbmdlZCBhcyBlLGlzTWFwIGFzIGYsbiBhcyBnLGhhc093biBhcyBoLGlzRnVuY3Rpb24gYXMgaSxpc0ludGVnZXJLZXkgYXMgaixpc1NldCBhcyBrLGlzUGxhaW5PYmplY3QgYXMgbCxtYWtlTWFwIGFzIG0saXNTdHJpbmcgYXMgbixub3JtYWxpemVDbGFzcyBhcyBvLG5vcm1hbGl6ZVN0eWxlIGFzIHAsaXNPbiBhcyBxLHJlbW92ZSBhcyByLGlzTW9kZWxMaXN0ZW5lciBhcyBzLHRvUmF3VHlwZSBhcyB0LGlzUHJvbWlzZSBhcyB1LGdldEdsb2JhbFRoaXMgYXMgdixpbnZva2VBcnJheUZucyBhcyB3LE5PIGFzIHgsYSBhcyB5LHMgYXMgen07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYXJlZC5lc20tYnVuZGxlci5tanMubWFwCg==", "chunks/_/ticket.mjs": "aW1wb3J0e2QgYXMgZSxTIGFzIHQseSBhcyBhLEEgYXMgcyxCIGFzIG4sQyBhcyBpLHEgYXMgbyx6IGFzIHIsbyBhcyBkLFQgYXMgdSxfIGFzIGwscyBhcyBjLFUgYXMgbSxiIGFzIGcsViBhcyBfLFcgYXMgcCxGIGFzIHksaCBhcyBmLGMgYXMgaCxwIGFzIGssayBhcyB3LGYgYXMgYixOIGFzIFQsTyBhcyBOLFggYXMgdixqIGFzIEQsdSBhcyAkLFkgYXMgTSxaIGFzIGosJCBhcyBDLGEwIGFzIFN9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtzIGFzIEF9ZnJvbSIuL3VzZXItZW1haWwubWpzIjtpbXBvcnR7dCBhcyBJfWZyb20iLi9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBVPVt7c2VuZGVyTmFtZToiSm9yZGFuIEJyb3duIixib2R5OiJzZW50IHlvdSBhIG1lc3NhZ2UifSx7c2VuZGVyTmFtZToiVGF5bG9yIEdyZWVuIixib2R5OiJzZW50IHlvdSBhIG1lc3NhZ2UifSx7c2VuZGVyTmFtZToiQ291cnRuZXkgSGVucnkiLGJvZHk6ImFkZGVkIHlvdSB0byBhIHByb2plY3QifSx7c2VuZGVyTmFtZToiTGluZHNheSBXYWx0b24iLGJvZHk6InN1YnNjcmliZWQgdG8geW91ciBlbWFpbCBsaXN0In0se3NlbmRlck5hbWU6IlRvbSBDb29rIixib2R5OiJhYmFuZG9ubmVkIGNhcnQifSx7c2VuZGVyTmFtZToiQ2FzZXkgVGhvbWFzIixib2R5OiJwdXJjaGFzZWQgeW91ciBwcm9kdWN0In0se3NlbmRlck5hbWU6IldoaXRuZXkgRnJhbmNpcyIsYm9keToiY29tbWVudGVkIG9uIHlvdXIgcG9zdCJ9LHtzZW5kZXJOYW1lOiJMZW9uYXJkIEtyYXNuZXIiLGJvZHk6InNoYXJlZCBhIGZpbGUgd2l0aCB5b3UifV07YXN5bmMgZnVuY3Rpb24gc2VlZERlbW9Ob3RpZmljYXRpb25zKGEscyl7Y29uc3Qgbj1EYXRlLm5vdygpO2ZvcihsZXQgaT0wO2k8VS5sZW5ndGg7aSsrKXtjb25zdCBvPVVbaV07YXdhaXQgZS5pbnNlcnQodCkudmFsdWVzKHt1c2VyX2lkOmEsb3JnYW5pemF0aW9uX2lkOnMsc2VuZGVyX25hbWU6by5zZW5kZXJOYW1lLGJvZHk6by5ib2R5LGlzX3JlYWQ6aT49MyxkZWR1cGVfa2V5OmBkZW1vLSR7aX1gLGNyZWF0ZWRfYXQ6bmV3IERhdGUobi0zNmU1KmkpfSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6W3QudXNlcl9pZCx0Lm9yZ2FuaXphdGlvbl9pZCx0LmRlZHVwZV9rZXldLHNldDp7aXNfcmVhZDppPj0zfX0pfX1mdW5jdGlvbiBlc2NhcGVFbWFpbEh0bWwoZSl7cmV0dXJuIGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpfWNvbnN0IEU9WyJmZWVkYmFjayIsInN1cHBvcnQiXSx4PVsiYWNjb3VudCIsImJpbGxpbmciLCJ0ZWNobmljYWwiLCJvdGhlciJdLHo9WyJvcGVuIiwiYWN0aXZlIiwiY2xvc2VkIl0scT1bInVzZXIiLCJhZ2VudCJdLFI9YSgic3VwcG9ydF90aWNrZXRzIix7aWQ6bigiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6bigidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxvcmdhbml6YXRpb25faWQ6bigib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+by5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGtpbmQ6bigia2luZCIse2VudW06RX0pLm5vdE51bGwoKSxjYXRlZ29yeTpuKCJjYXRlZ29yeSIse2VudW06eH0pLHN1YmplY3Q6bigic3ViamVjdCIpLm5vdE51bGwoKSxzdGF0dXM6bigic3RhdHVzIix7ZW51bTp6fSkubm90TnVsbCgpLmRlZmF1bHQoIm9wZW4iKSxhc3NpZ25lZF90bzpuKCJhc3NpZ25lZF90byIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxsYXN0X21lc3NhZ2VfYXQ6cygibGFzdF9tZXNzYWdlX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksbGFzdF9tZXNzYWdlX3JvbGU6bigibGFzdF9tZXNzYWdlX3JvbGUiLHtlbnVtOnF9KS5ub3ROdWxsKCkuZGVmYXVsdCgidXNlciIpLHJlbWluZGVyX3NlbnRfYXQ6cygicmVtaW5kZXJfc2VudF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxjcmVhdGVkX2F0OnMoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OnMoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bcigic3VwcG9ydF90aWNrZXRzX3VzZXJfaWR4Iikub24oZS51c2VyX2lkKSxyKCJzdXBwb3J0X3RpY2tldHNfc3RhdHVzX2lkeCIpLm9uKGUuc3RhdHVzKSxyKCJzdXBwb3J0X3RpY2tldHNfYXNzaWduZWRfaWR4Iikub24oZS5hc3NpZ25lZF90bykscigic3VwcG9ydF90aWNrZXRzX3JlbWluZGVyX2lkeCIpLm9uKGUubGFzdF9tZXNzYWdlX3JvbGUsZS5sYXN0X21lc3NhZ2VfYXQpXSk7YSgic3VwcG9ydF90aWNrZXRfbWVzc2FnZXMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdGlja2V0X2lkOm4oInRpY2tldF9pZCIpLnJlZmVyZW5jZXMoKCk9PlIuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhdXRob3JfaWQ6bigiYXV0aG9yX2lkIikucmVmZXJlbmNlcygoKT0+aS5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGF1dGhvcl9yb2xlOm4oImF1dGhvcl9yb2xlIix7ZW51bTpxfSkubm90TnVsbCgpLGJvZHk6bigiYm9keSIpLm5vdE51bGwoKSxjcmVhdGVkX2F0OnMoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3IoInN1cHBvcnRfdGlja2V0X21lc3NhZ2VzX3RpY2tldF9pZHgiKS5vbihlLnRpY2tldF9pZCxlLmNyZWF0ZWRfYXQpXSk7Y29uc3QgTD1sKEUpLEY9bCh4KSxPPWwoeiksQj1jKCkudHJpbSgpLm1pbigxKS5tYXgoMjAwKSxIPWMoKS50cmltKCkubWluKDEpLm1heCg1ZTMpLEs9ZCh7a2luZDpMLGNhdGVnb3J5OkYub3B0aW9uYWwoKSxzdWJqZWN0OkIsYm9keTpIfSkucmVmaW5lKGU9PiJmZWVkYmFjayI9PT1lLmtpbmQ/dm9pZCAwPT09ZS5jYXRlZ29yeTp2b2lkIDAhPT1lLmNhdGVnb3J5LHttZXNzYWdlOiJTdXBwb3J0IHJlcXVlc3RzIHJlcXVpcmUgYSBjYXRlZ29yeTsgZmVlZGJhY2sgbXVzdCBub3QgaGF2ZSBvbmUuIixwYXRoOlsiY2F0ZWdvcnkiXX0pLFc9ZCh7Ym9keTpIfSksUD1kKHtvZmZzZXQ6dSgpLmludCgpLm1pbigwKS5kZWZhdWx0KDApLGxpbWl0OnUoKS5pbnQoKS5taW4oMSkubWF4KDUwKS5kZWZhdWx0KDIwKX0pLFk9UC5leHRlbmQoe3N0YXR1czpPLm9wdGlvbmFsKCksa2luZDpMLm9wdGlvbmFsKCksbWluZU9ubHk6bShlPT52b2lkIDA9PT1lP3ZvaWQgMDoidHJ1ZSI9PT1lfHwhMD09PWUsZygpLm9wdGlvbmFsKCkpLHNlYXJjaDpjKCkudHJpbSgpLm1heCgyMDApLm9wdGlvbmFsKCl9KSxHPWQoe3N0YXR1czpPLm9wdGlvbmFsKCksYXNzaWduZWRUbzpjKCkubnVsbGFibGUoKS5vcHRpb25hbCgpfSkucmVmaW5lKGU9PnZvaWQgMCE9PWUuc3RhdHVzfHx2b2lkIDAhPT1lLmFzc2lnbmVkVG8se21lc3NhZ2U6IlByb3ZpZGUgc3RhdHVzIGFuZC9vciBhc3NpZ25lZFRvLiJ9KTtmdW5jdGlvbiB0b1RpY2tldFN1bW1hcnkoZSl7dmFyIHQsYTtyZXR1cm57aWQ6ZS5pZCxraW5kOmUua2luZCxjYXRlZ29yeTpudWxsIT0odD1lLmNhdGVnb3J5KT90Om51bGwsc3ViamVjdDplLnN1YmplY3Qsc3RhdHVzOmUuc3RhdHVzLGFzc2lnbmVkVG86bnVsbCE9KGE9ZS5hc3NpZ25lZF90byk/YTpudWxsLGxhc3RNZXNzYWdlQXQ6ZS5sYXN0X21lc3NhZ2VfYXQudG9JU09TdHJpbmcoKSxsYXN0TWVzc2FnZVJvbGU6ZS5sYXN0X21lc3NhZ2Vfcm9sZSxjcmVhdGVkQXQ6ZS5jcmVhdGVkX2F0LnRvSVNPU3RyaW5nKCl9fWZ1bmN0aW9uIHRvVGlja2V0TWVzc2FnZShlKXtyZXR1cm57aWQ6ZS5pZCxhdXRob3JSb2xlOmUuYXV0aG9yX3JvbGUsYm9keTplLmJvZHksY3JlYXRlZEF0OmUuY3JlYXRlZF9hdC50b0lTT1N0cmluZygpfX1jb25zdCBKPTg2NGU1O2Z1bmN0aW9uIHJlbWluZGVyRW1haWwoZSl7Y29uc3QgdD1lc2NhcGVFbWFpbEh0bWwoZS5hZ2VudE5hbWUpLGE9ZXNjYXBlRW1haWxIdG1sKGUuc3ViamVjdCkscz1NKGooQygpLCJzdXBwb3J0Iikse3RpY2tldDplLnRpY2tldElkfSk7cmV0dXJue3N1YmplY3Q6YFlvdSBoYXZlIGEgbmV3IG1lc3NhZ2UgZnJvbSAke2UuYWdlbnROYW1lfWAsaHRtbDpgPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS41O2NvbG9yOiMxMTExMTEiPjxwPiR7dH0gcmVwbGllZCB0byB5b3VyIHJlcXVlc3QgIjxzdHJvbmc+JHthfTwvc3Ryb25nPiIuPC9wPjxwPlBsZWFzZSA8YSBocmVmPSIke3N9Ij5jb250aW51ZSB0aGUgY29udmVyc2F0aW9uPC9hPiB0byByZXNwb25kLjwvcD48L2JvZHk+PC9odG1sPmAsdGV4dDpgJHtlLmFnZW50TmFtZX0gcmVwbGllZCB0byB5b3VyIHJlcXVlc3QgIiR7ZS5zdWJqZWN0fSIuIENvbnRpbnVlOiAke3N9YH19YXN5bmMgZnVuY3Rpb24gbG9hZE1lc3NhZ2VzKHQpe3JldHVybihhd2FpdCBlLnNlbGVjdCgpLmZyb20ocCkud2hlcmUoZihwLnRpY2tldF9pZCx0KSkub3JkZXJCeShiKHAuY3JlYXRlZF9hdCkpKS5tYXAodG9UaWNrZXRNZXNzYWdlKX1hc3luYyBmdW5jdGlvbiBjcmVhdGVUaWNrZXQodCl7dmFyIGE7Y29uc3Qgcz1jcnlwdG8ucmFuZG9tVVVJRCgpLG49bmV3IERhdGU7YXdhaXQgZS5iYXRjaChbZS5pbnNlcnQoXykudmFsdWVzKHtpZDpzLHVzZXJfaWQ6dC51c2VySWQsb3JnYW5pemF0aW9uX2lkOnQub3JnYW5pemF0aW9uSWQsa2luZDp0LmtpbmQsY2F0ZWdvcnk6bnVsbCE9KGE9dC5jYXRlZ29yeSk/YTpudWxsLHN1YmplY3Q6dC5zdWJqZWN0LHN0YXR1czoib3BlbiIsbGFzdF9tZXNzYWdlX2F0Om4sbGFzdF9tZXNzYWdlX3JvbGU6InVzZXIifSksZS5pbnNlcnQocCkudmFsdWVzKHt0aWNrZXRfaWQ6cyxhdXRob3JfaWQ6dC51c2VySWQsYXV0aG9yX3JvbGU6InVzZXIiLGJvZHk6dC5ib2R5fSldKTtjb25zdFtpXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oXykud2hlcmUoZihfLmlkLHMpKTtyZXR1cm57Li4udG9UaWNrZXRTdW1tYXJ5KGkpLG1lc3NhZ2VzOmF3YWl0IGxvYWRNZXNzYWdlcyhzKX19YXN5bmMgZnVuY3Rpb24gbGlzdFVzZXJUaWNrZXRzKHQsYSxzKXtjb25zdCBuPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShmKF8udXNlcl9pZCx0KSkub3JkZXJCeShrKF8ubGFzdF9tZXNzYWdlX2F0KSkubGltaXQocysxKS5vZmZzZXQoYSk7cmV0dXJue2l0ZW1zOm4uc2xpY2UoMCxzKS5tYXAodG9UaWNrZXRTdW1tYXJ5KSxoYXNNb3JlOm4ubGVuZ3RoPnN9fWFzeW5jIGZ1bmN0aW9uIGdldFVzZXJUaWNrZXQodCxhKXtjb25zdFtzXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oXykud2hlcmUoeShmKF8uaWQsYSksZihfLnVzZXJfaWQsdCkpKTtpZighcyl0aHJvdyBoKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJUaWNrZXQgbm90IGZvdW5kIn0pO3JldHVybnsuLi50b1RpY2tldFN1bW1hcnkocyksbWVzc2FnZXM6YXdhaXQgbG9hZE1lc3NhZ2VzKGEpfX1hc3luYyBmdW5jdGlvbiBhZGRVc2VyTWVzc2FnZSh0LGEscyl7YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgdD1gcmF0ZWxpbWl0OnN1cHBvcnQtbXNnOiR7ZX1gLGE9YXdhaXQgdy5nZXQodCl8fDA7aWYoYT49MzApdGhyb3cgaCh7c3RhdHVzQ29kZTo0Mjksc3RhdHVzTWVzc2FnZToiVG9vIG1hbnkgbWVzc2FnZXMuIFRyeSBhZ2FpbiBsYXRlci4ifSk7YXdhaXQgdy5zZXQodCxhKzEse3R0bDozNjAwfSl9KHQpO2NvbnN0W25dPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZSh5KGYoXy5pZCxhKSxmKF8udXNlcl9pZCx0KSkpO2lmKCFuKXRocm93IGgoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlRpY2tldCBub3QgZm91bmQifSk7aWYoImNsb3NlZCI9PT1uLnN0YXR1cyl0aHJvdyBoKHtzdGF0dXNDb2RlOjQwOSxzdGF0dXNNZXNzYWdlOiJUaGlzIHJlcXVlc3QgaXMgY2xvc2VkLiJ9KTtjb25zdCBpPW5ldyBEYXRlO3JldHVybiBhd2FpdCBlLmluc2VydChwKS52YWx1ZXMoe3RpY2tldF9pZDphLGF1dGhvcl9pZDp0LGF1dGhvcl9yb2xlOiJ1c2VyIixib2R5OnN9KSxhd2FpdCBlLnVwZGF0ZShfKS5zZXQoe2xhc3RfbWVzc2FnZV9hdDppLGxhc3RfbWVzc2FnZV9yb2xlOiJ1c2VyIn0pLndoZXJlKGYoXy5pZCxhKSksZ2V0VXNlclRpY2tldCh0LGEpfWFzeW5jIGZ1bmN0aW9uIGxpc3RBZ2VudFRpY2tldHModCl7Y29uc3QgYT1bXTt0LnN0YXR1cyYmYS5wdXNoKGYoXy5zdGF0dXMsdC5zdGF0dXMpKSx0LmtpbmQmJmEucHVzaChmKF8ua2luZCx0LmtpbmQpKSx0Lm1pbmVPbmx5JiZhLnB1c2goZihfLmFzc2lnbmVkX3RvLHQuYWdlbnRJZCkpLHQuc2VhcmNoJiZhLnB1c2goUyhfLnN1YmplY3QsYCUke3Quc2VhcmNofSVgKSk7Y29uc3Qgcz1hLmxlbmd0aD95KC4uLmEpOnZvaWQgMCxuPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShzKS5vcmRlckJ5KGsoXy5sYXN0X21lc3NhZ2VfYXQpKS5saW1pdCh0LmxpbWl0KzEpLm9mZnNldCh0Lm9mZnNldCk7cmV0dXJue2l0ZW1zOm4uc2xpY2UoMCx0LmxpbWl0KS5tYXAodG9UaWNrZXRTdW1tYXJ5KSxoYXNNb3JlOm4ubGVuZ3RoPnQubGltaXR9fWFzeW5jIGZ1bmN0aW9uIGxvYWRSZXF1ZXN0ZXIodCl7dmFyIGE7Y29uc3Rbc109YXdhaXQgZS5zZWxlY3Qoe2lkOiQuaWQsbmFtZTokLm5hbWUsZW1haWw6JC5wcmltYXJ5X2VtYWlsfSkuZnJvbSgkKS53aGVyZShmKCQuaWQsdCkpO3JldHVybiBzP3tpZDpzLmlkLG5hbWU6bnVsbCE9KGE9cy5uYW1lKT9hOm51bGwsZW1haWw6cy5lbWFpbH06dm9pZCAwfWFzeW5jIGZ1bmN0aW9uIGdldEFnZW50VGlja2V0KHQpe2NvbnN0W2FdPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShmKF8uaWQsdCkpO2lmKCFhKXRocm93IGgoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlRpY2tldCBub3QgZm91bmQifSk7cmV0dXJuey4uLnRvVGlja2V0U3VtbWFyeShhKSxtZXNzYWdlczphd2FpdCBsb2FkTWVzc2FnZXModCkscmVxdWVzdGVyOmF3YWl0IGxvYWRSZXF1ZXN0ZXIoYS51c2VyX2lkKX19YXN5bmMgZnVuY3Rpb24gYWdlbnREaXNwbGF5TmFtZSh0KXt2YXIgYTtpZighdClyZXR1cm4gbnVsbDtjb25zdFtzXT1hd2FpdCBlLnNlbGVjdCh7bmFtZTokLm5hbWV9KS5mcm9tKCQpLndoZXJlKGYoJC5pZCx0KSk7cmV0dXJuIG51bGwhPShhPW51bGw9PXM/dm9pZCAwOnMubmFtZSk/YTpudWxsfWFzeW5jIGZ1bmN0aW9uIGFkZEFnZW50TWVzc2FnZShhLHMsbil7dmFyIGk7Y29uc3Rbb109YXdhaXQgZS5zZWxlY3QoKS5mcm9tKF8pLndoZXJlKGYoXy5pZCxzKSk7aWYoIW8pdGhyb3cgaCh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiVGlja2V0IG5vdCBmb3VuZCJ9KTtjb25zdCByPW5ldyBEYXRlO2F3YWl0IGUuaW5zZXJ0KHApLnZhbHVlcyh7dGlja2V0X2lkOnMsYXV0aG9yX2lkOmEsYXV0aG9yX3JvbGU6ImFnZW50Iixib2R5Om59KSxhd2FpdCBlLnVwZGF0ZShfKS5zZXQoe2xhc3RfbWVzc2FnZV9hdDpyLGxhc3RfbWVzc2FnZV9yb2xlOiJhZ2VudCIsYXNzaWduZWRfdG86TmBDT0FMRVNDRSgke18uYXNzaWduZWRfdG99LCAke2F9KWAsc3RhdHVzOk5gQ0FTRSBXSEVOICR7Xy5zdGF0dXN9ID0gJ29wZW4nIFRIRU4gJ2FjdGl2ZScgRUxTRSAke18uc3RhdHVzfSBFTkRgfSkud2hlcmUoZihfLmlkLHMpKTtjb25zdCBkPW51bGwhPShpPWF3YWl0IGFnZW50RGlzcGxheU5hbWUoYSkpP2k6IlN1cHBvcnQgdGVhbSI7cmV0dXJuIGF3YWl0IGFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBzO2NvbnN0W25dPWF3YWl0IGUuaW5zZXJ0KHQpLnZhbHVlcyh7dXNlcl9pZDphLnVzZXJJZCxvcmdhbml6YXRpb25faWQ6YS5vcmdhbml6YXRpb25JZCxzZW5kZXJfbmFtZTphLnNlbmRlck5hbWUsYm9keTphLmJvZHksZGVkdXBlX2tleTpudWxsIT0ocz1hLmRlZHVwZUtleSk/czpudWxsfSkub25Db25mbGljdERvTm90aGluZygpLnJldHVybmluZygpO3JldHVybiBuP0kobik6bnVsbH0oe3VzZXJJZDpvLnVzZXJfaWQsb3JnYW5pemF0aW9uSWQ6by5vcmdhbml6YXRpb25faWQsc2VuZGVyTmFtZTpkLGJvZHk6YHJlcGxpZWQgdG8geW91ciByZXF1ZXN0OiAke28uc3ViamVjdH1gLGRlZHVwZUtleTpgc3VwcG9ydC1yZXBseToke3N9OiR7ci5nZXRUaW1lKCl9YH0pLGdldEFnZW50VGlja2V0KHMpfWFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVRpY2tldCh0LGEpe2NvbnN0W3NdPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShmKF8uaWQsdCkpO2lmKCFzKXRocm93IGgoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlRpY2tldCBub3QgZm91bmQifSk7Y29uc3Qgbj17fTtyZXR1cm4gdm9pZCAwIT09YS5zdGF0dXMmJihuLnN0YXR1cz1hLnN0YXR1cyksdm9pZCAwIT09YS5hc3NpZ25lZFRvJiYobi5hc3NpZ25lZF90bz1hLmFzc2lnbmVkVG8pLGF3YWl0IGUudXBkYXRlKF8pLnNldChuKS53aGVyZShmKF8uaWQsdCkpLGdldEFnZW50VGlja2V0KHQpfWFzeW5jIGZ1bmN0aW9uIHNlbmRUaWNrZXRSZW1pbmRlcnModD1uZXcgRGF0ZSl7dmFyIGE7Y29uc3Qgcz1uZXcgRGF0ZSh0LmdldFRpbWUoKS1KKSxuPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZSh5KGYoXy5sYXN0X21lc3NhZ2Vfcm9sZSwiYWdlbnQiKSxEKF8uc3RhdHVzLFsib3BlbiIsImFjdGl2ZSJdKSx2KF8ubGFzdF9tZXNzYWdlX2F0LHMpLFQoTmAke18ucmVtaW5kZXJfc2VudF9hdH0gSVMgTlVMTGAsTmAke18ucmVtaW5kZXJfc2VudF9hdH0gPCAke18ubGFzdF9tZXNzYWdlX2F0fWApKSkub3JkZXJCeShiKF8ubGFzdF9tZXNzYWdlX2F0KSkubGltaXQoMTAwKTtsZXQgaT0wLG89MDtmb3IoY29uc3QgcyBvZiBuKXtpZighKGF3YWl0IGUudXBkYXRlKF8pLnNldCh7cmVtaW5kZXJfc2VudF9hdDp0fSkud2hlcmUoeShmKF8uaWQscy5pZCksZihfLmxhc3RfbWVzc2FnZV9yb2xlLCJhZ2VudCIpLFQoTmAke18ucmVtaW5kZXJfc2VudF9hdH0gSVMgTlVMTGAsTmAke18ucmVtaW5kZXJfc2VudF9hdH0gPCAke18ubGFzdF9tZXNzYWdlX2F0fWApKSkucmV0dXJuaW5nKHtpZDpfLmlkfSkpLmxlbmd0aCl7bysrO2NvbnRpbnVlfWNvbnN0W25dPWF3YWl0IGUuc2VsZWN0KHtpZDokLmlkLHByaW1hcnlfZW1haWw6JC5wcmltYXJ5X2VtYWlsLG5vdGlmaWNhdGlvbl9wcmVmczokLm5vdGlmaWNhdGlvbl9wcmVmc30pLmZyb20oJCkud2hlcmUoZigkLmlkLHMudXNlcl9pZCkpO2lmKCFuKXtvKys7Y29udGludWV9Y29uc3Qgcj1yZW1pbmRlckVtYWlsKHthZ2VudE5hbWU6bnVsbCE9KGE9YXdhaXQgYWdlbnREaXNwbGF5TmFtZShzLmFzc2lnbmVkX3RvKSk/YToiU3VwcG9ydCB0ZWFtIixzdWJqZWN0OnMuc3ViamVjdCx0aWNrZXRJZDpzLmlkfSk7dHJ5eyhhd2FpdCBBKG4scikpLnNlbnQ/aSsrOm8rK31jYXRjaHtvKyt9fXJldHVybntzY2FubmVkOm4ubGVuZ3RoLHJlbWluZGVkOmksc2tpcHBlZDpvfX1hc3luYyBmdW5jdGlvbiBzZWVkRGVtb1RpY2tldHModCxhKXtjb25zdCBzPURhdGUubm93KCksbj1be2k6MCxraW5kOiJmZWVkYmFjayIsY2F0ZWdvcnk6bnVsbCxzdWJqZWN0OiJMb3ZlIHRoZSBuZXcgZGFzaGJvYXJkIixzdGF0dXM6Im9wZW4iLGFnZW50UmVwbHlBZ29NczpudWxsfSx7aToxLGtpbmQ6InN1cHBvcnQiLGNhdGVnb3J5OiJiaWxsaW5nIixzdWJqZWN0OiJJbnZvaWNlIGxvb2tzIHdyb25nIixzdGF0dXM6ImFjdGl2ZSIsYWdlbnRSZXBseUFnb01zOjcyZTV9LHtpOjIsa2luZDoic3VwcG9ydCIsY2F0ZWdvcnk6InRlY2huaWNhbCIsc3ViamVjdDoiRXhwb3J0IGtlZXBzIGZhaWxpbmciLHN0YXR1czoiYWN0aXZlIixhZ2VudFJlcGx5QWdvTXM6MipKfV07Zm9yKGNvbnN0IGkgb2Ygbil7Y29uc3Qgbj1gZGVtby10aWNrZXQtJHt0fS0ke2kuaX1gLG89bmV3IERhdGUocy02MCooaS5pKzEpKjYwKjFlMykscj1udWxsPT1pLmFnZW50UmVwbHlBZ29Ncz9udWxsOm5ldyBEYXRlKHMtaS5hZ2VudFJlcGx5QWdvTXMpO2F3YWl0IGUuaW5zZXJ0KF8pLnZhbHVlcyh7aWQ6bix1c2VyX2lkOnQsb3JnYW5pemF0aW9uX2lkOmEsa2luZDppLmtpbmQsY2F0ZWdvcnk6aS5jYXRlZ29yeSxzdWJqZWN0Omkuc3ViamVjdCxzdGF0dXM6aS5zdGF0dXMsbGFzdF9tZXNzYWdlX2F0Om51bGwhPXI/cjpvLGxhc3RfbWVzc2FnZV9yb2xlOnI/ImFnZW50IjoidXNlciIsY3JlYXRlZF9hdDpvfSkub25Db25mbGljdERvTm90aGluZygpLGF3YWl0IGUuaW5zZXJ0KHApLnZhbHVlcyh7aWQ6YCR7bn0tbTBgLHRpY2tldF9pZDpuLGF1dGhvcl9pZDp0LGF1dGhvcl9yb2xlOiJ1c2VyIixib2R5OmAoZGVtbykgJHtpLnN1YmplY3R9IOKAlCBkZXRhaWxzIGhlcmUuYCxjcmVhdGVkX2F0Om99KS5vbkNvbmZsaWN0RG9Ob3RoaW5nKCksciYmYXdhaXQgZS5pbnNlcnQocCkudmFsdWVzKHtpZDpgJHtufS1tMWAsdGlja2V0X2lkOm4sYXV0aG9yX2lkOm51bGwsYXV0aG9yX3JvbGU6ImFnZW50Iixib2R5OiIoZGVtbykgVGhhbmtzIGZvciByZWFjaGluZyBvdXQg4oCUIGNvdWxkIHlvdSBzaGFyZSBtb3JlIGRldGFpbD8iLGNyZWF0ZWRfYXQ6cn0pLm9uQ29uZmxpY3REb05vdGhpbmcoKX19ZXhwb3J0e1kgYXMgQSxLIGFzIEMsVyBhcyBQLFAgYXMgVCxHIGFzIFUsYWRkQWdlbnRNZXNzYWdlIGFzIGEsZ2V0VXNlclRpY2tldCBhcyBiLGFkZFVzZXJNZXNzYWdlIGFzIGMsbGlzdFVzZXJUaWNrZXRzIGFzIGQsY3JlYXRlVGlja2V0IGFzIGUsc2VlZERlbW9UaWNrZXRzIGFzIGYsZ2V0QWdlbnRUaWNrZXQgYXMgZyxzZW5kVGlja2V0UmVtaW5kZXJzIGFzIGgsbGlzdEFnZW50VGlja2V0cyBhcyBsLHNlZWREZW1vTm90aWZpY2F0aW9ucyBhcyBzLHVwZGF0ZVRpY2tldCBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGlja2V0Lm1qcy5tYXAK", "chunks/_/user-email.mjs": "aW1wb3J0e3YgYXMgdCxRIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGlzRW1haWxFbmFibGVkKHQpe3JldHVybiExIT09KG51bGw9PXQ/dm9pZCAwOnQuZW1haWwpfWFzeW5jIGZ1bmN0aW9uIHNlbmRVc2VyRW1haWwoaSxzKXtpZighaXNFbWFpbEVuYWJsZWQoaS5ub3RpZmljYXRpb25fcHJlZnMpKXJldHVybntzZW50OiExLHJlYXNvbjoib3B0ZWRfb3V0In07Y29uc3Qgbj10KCkse2VtYWlsczphfT1lKCk7cmV0dXJuIGF3YWl0IGEuc2VuZCh7ZnJvbTpuLnNtdHBGcm9tLHRvOmkucHJpbWFyeV9lbWFpbCxzdWJqZWN0OnMuc3ViamVjdCxodG1sOnMuaHRtbCx0ZXh0OnMudGV4dH0pLHtzZW50OiEwfX1leHBvcnR7aXNFbWFpbEVuYWJsZWQgYXMgaSxzZW5kVXNlckVtYWlsIGFzIHN9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2VyLWVtYWlsLm1qcy5tYXAK", "chunks/_/user.mjs": "aW1wb3J0e28gYXMgZSxzIGFzIHQsYiBhcyBzfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBhPWUoe25hbWU6dCgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCkub3B0aW9uYWwoKSx1c2VybmFtZTp0KCkudHJpbSgpLm1pbigzKS5tYXgoNTApLnJlZ2V4KC9eXHcrJC8sIkxldHRlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmUiKS5vcHRpb25hbCgpLGJpbzp0KCkudHJpbSgpLm1heCg1MDApLm9wdGlvbmFsKCl9KS5yZWZpbmUoZT0+T2JqZWN0LmtleXMoZSkubGVuZ3RoPjAse21lc3NhZ2U6IkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCJ9KSxpPWUoe2VtYWlsOnMoKSxwcm9kdWN0X3VwZGF0ZXM6cygpLHdlZWtseV9kaWdlc3Q6cygpLGltcG9ydGFudF91cGRhdGVzOnMoKX0pO2V4cG9ydHtpIGFzIE4sYSBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlci5tanMubWFwCg==", "chunks/build/Alert-CVB5YXue.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyByLGUgYXMgbyx0IGFzIGEsZyBhcyBzLGIgYXMgbixfIGFzIGksUCBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7ZiBhcyBjLGcgYXMgdSxqIGFzIGQscSBhcyBnLHQgYXMgdn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IHA9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gdy1mdWxsIHJvdW5kZWQtbGcgcC00IGZsZXggZ2FwLTIuNSIsd3JhcHBlcjoibWluLXctMCBmbGV4LTEgZmxleCBmbGV4LWNvbCIsdGl0bGU6InRleHQtc20gZm9udC1tZWRpdW0iLGRlc2NyaXB0aW9uOiJ0ZXh0LXNtIG9wYWNpdHktOTAiLGljb246InNocmluay0wIHNpemUtNSIsYXZhdGFyOiJzaHJpbmstMCIsYXZhdGFyU2l6ZToiMnhsIixhY3Rpb25zOiJmbGV4IGZsZXgtd3JhcCBnYXAtMS41IHNocmluay0wIixjbG9zZToicC0wIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIifSxvcmllbnRhdGlvbjp7aG9yaXpvbnRhbDp7cm9vdDoiaXRlbXMtY2VudGVyIixhY3Rpb25zOiJpdGVtcy1jZW50ZXIifSx2ZXJ0aWNhbDp7cm9vdDoiaXRlbXMtc3RhcnQiLGFjdGlvbnM6Iml0ZW1zLXN0YXJ0IG10LTIuNSJ9fSx0aXRsZTp7dHJ1ZTp7ZGVzY3JpcHRpb246Im10LTEifX19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1wcmltYXJ5IHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvbGlkIixjbGFzczp7cm9vdDoiYmctc2Vjb25kYXJ5IHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLXN1Y2Nlc3MgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczp7cm9vdDoiYmctaW5mbyB0ZXh0LWludmVydGVkIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy13YXJuaW5nIHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1lcnJvciB0ZXh0LWludmVydGVkIn19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzI1In19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1In19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1In19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOntyb290OiJ0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1In19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctc2Vjb25kYXJ5LzEwIHRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLWluZm8vMTAgdGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLXdhcm5pbmcvMTAgdGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOntyb290OiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIn19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkgcmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS8yNSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctc2Vjb25kYXJ5LzEwIHRleHQtc2Vjb25kYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeS8yNSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIHJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvMjUifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1pbmZvLzEwIHRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1In19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctd2FybmluZy8xMCB0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1In19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1kZWZhdWx0In19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCJ9fSxmPXtfX25hbWU6IlVBbGVydCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2ZXJ0aWNhbCJ9LGFjdGlvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGNsb3NlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGNsb3NlSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZix7ZW1pdDptfSl7Y29uc3QgeD1mLHk9bSxiPWUudXNlU2xvdHMoKSx7dDprfT10KCksaD1yKCksdz1vKCJhbGVydCIseCksJD1lLmNvbXB1dGVkKCgpPT5hKHtleHRlbmQ6YShwKSwuLi5oLnVpPy5hbGVydHx8e319KSh7Y29sb3I6eC5jb2xvcix2YXJpYW50OngudmFyaWFudCxvcmllbnRhdGlvbjp4Lm9yaWVudGF0aW9uLHRpdGxlOiEheC50aXRsZXx8ISFiLnRpdGxlfSkpO3JldHVybih0LHIsbyxhKT0+e3IoYyhlLnVucmVmKGwpLGUubWVyZ2VQcm9wcyh7YXM6Zi5hcywiZGF0YS1vcmllbnRhdGlvbiI6Zi5vcmllbnRhdGlvbiwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6JC52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZih3KT8ucm9vdCx4LmNsYXNzXX0pfSxhKSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbyxhLGwpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse3VpOiQudmFsdWV9LCgpPT5bZi5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhzLGUubWVyZ2VQcm9wcyh7a2V5OjAsc2l6ZTplLnVucmVmKHcpPy5hdmF0YXJTaXplfHwkLnZhbHVlLmF2YXRhclNpemUoKX0sZi5hdmF0YXIseyJkYXRhLXNsb3QiOiJhdmF0YXIiLGNsYXNzOiQudmFsdWUuYXZhdGFyKHtjbGFzczplLnVucmVmKHcpPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmYuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKG4se2tleToxLG5hbWU6Zi5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczokLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYodyk/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6JC52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHcpPy53cmFwcGVyfSl9LFtmLnRpdGxlfHxiLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6JC52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih3KT8udGl0bGV9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZi50aXRsZSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxmLmRlc2NyaXB0aW9ufHxiLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6JC52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih3KT8uZGVzY3JpcHRpb259KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZi5kZXNjcmlwdGlvbiksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwidmVydGljYWwiPT09Zi5vcmllbnRhdGlvbiYmKGYuYWN0aW9ucz8ubGVuZ3RofHxiLmFjdGlvbnMpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJhY3Rpb25zIixjbGFzczokLnZhbHVlLmFjdGlvbnMoe2NsYXNzOmUudW5yZWYodyk/LmFjdGlvbnN9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChmLmFjdGlvbnMsKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soaSxlLm1lcmdlUHJvcHMoe2tleTpyLHNpemU6InhzIn0se3JlZl9mb3I6ITB9LHQpLG51bGwsMTYpKSksMTI4KSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksImhvcml6b250YWwiPT09Zi5vcmllbnRhdGlvbiYmKGYuYWN0aW9ucz8ubGVuZ3RofHxiLmFjdGlvbnMpfHxmLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJhY3Rpb25zIixjbGFzczokLnZhbHVlLmFjdGlvbnMoe2NsYXNzOmUudW5yZWYodyk/LmFjdGlvbnMsb3JpZW50YXRpb246Imhvcml6b250YWwifSl9LFsiaG9yaXpvbnRhbCI9PT1mLm9yaWVudGF0aW9uJiYoZi5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/ZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJhY3Rpb25zIix7a2V5OjB9LCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoZi5hY3Rpb25zLCh0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGksZS5tZXJnZVByb3BzKHtrZXk6cixzaXplOiJ4cyJ9LHtyZWZfZm9yOiEwfSx0KSxudWxsLDE2KSkpLDEyOCkpXSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY2xvc2UiLHt1aTokLnZhbHVlfSwoKT0+W2YuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhpLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjpmLmNsb3NlSWNvbnx8ZS51bnJlZihoKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsImFyaWEtbGFiZWwiOmUudW5yZWYoaykoImFsZXJ0LmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgZi5jbG9zZT9mLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOiQudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYodyk/LmNsb3NlfSksb25DbGljazplPT55KCJ1cGRhdGU6b3BlbiIsITEpfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiLCJvbkNsaWNrIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07dSh0LiRzbG90cywibGVhZGluZyIse3VpOiQudmFsdWV9LCgpPT57Zi5hdmF0YXI/byhjKHMsZS5tZXJnZVByb3BzKHtzaXplOmUudW5yZWYodyk/LmF2YXRhclNpemV8fCQudmFsdWUuYXZhdGFyU2l6ZSgpfSxmLmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6JC52YWx1ZS5hdmF0YXIoe2NsYXNzOmUudW5yZWYodyk/LmF2YXRhcn0pfSksbnVsbCxhLGwpKTpmLmljb24/byhjKG4se25hbWU6Zi5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczokLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYodyk/Lmljb259KX0sbnVsbCxhLGwpKTpvKCJceDNjIS0tLS1ceDNlIil9LG8sYSxsKSxvKGA8ZGl2IGRhdGEtc2xvdD0id3JhcHBlciIgY2xhc3M9IiR7ZCgkLnZhbHVlLndyYXBwZXIoe2NsYXNzOmUudW5yZWYodyk/LndyYXBwZXJ9KSl9IiR7bH0+YCksZi50aXRsZXx8Yi50aXRsZT8obyhgPGRpdiBkYXRhLXNsb3Q9InRpdGxlIiBjbGFzcz0iJHtkKCQudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYodyk/LnRpdGxlfSkpfSIke2x9PmApLHUodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+e28oYCR7ZyhmLnRpdGxlKX1gKX0sbyxhLGwpLG8oIjwvZGl2PiIpKTpvKCJceDNjIS0tLS1ceDNlIiksZi5kZXNjcmlwdGlvbnx8Yi5kZXNjcmlwdGlvbj8obyhgPGRpdiBkYXRhLXNsb3Q9ImRlc2NyaXB0aW9uIiBjbGFzcz0iJHtkKCQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYodyk/LmRlc2NyaXB0aW9ufSkpfSIke2x9PmApLHUodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+e28oYCR7ZyhmLmRlc2NyaXB0aW9uKX1gKX0sbyxhLGwpLG8oIjwvZGl2PiIpKTpvKCJceDNjIS0tLS1ceDNlIiksInZlcnRpY2FsIj09PWYub3JpZW50YXRpb24mJihmLmFjdGlvbnM/Lmxlbmd0aHx8Yi5hY3Rpb25zKT8obyhgPGRpdiBkYXRhLXNsb3Q9ImFjdGlvbnMiIGNsYXNzPSIke2QoJC52YWx1ZS5hY3Rpb25zKHtjbGFzczplLnVucmVmKHcpPy5hY3Rpb25zfSkpfSIke2x9PmApLHUodC4kc2xvdHMsImFjdGlvbnMiLHt9LCgpPT57bygiXHgzYyEtLVstLVx4M2UiKSx2KGYuYWN0aW9ucywodCxyKT0+e28oYyhpLGUubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZToieHMifSx7cmVmX2ZvcjohMH0sdCksbnVsbCxhLGwpKX0pLG8oIlx4M2MhLS1dLS1ceDNlIil9LG8sYSxsKSxvKCI8L2Rpdj4iKSk6bygiXHgzYyEtLS0tXHgzZSIpLG8oIjwvZGl2PiIpLCJob3Jpem9udGFsIj09PWYub3JpZW50YXRpb24mJihmLmFjdGlvbnM/Lmxlbmd0aHx8Yi5hY3Rpb25zKXx8Zi5jbG9zZT8obyhgPGRpdiBkYXRhLXNsb3Q9ImFjdGlvbnMiIGNsYXNzPSIke2QoJC52YWx1ZS5hY3Rpb25zKHtjbGFzczplLnVucmVmKHcpPy5hY3Rpb25zLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIn0pKX0iJHtsfT5gKSwiaG9yaXpvbnRhbCI9PT1mLm9yaWVudGF0aW9uJiYoZi5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/dSh0LiRzbG90cywiYWN0aW9ucyIse30sKCk9PntvKCJceDNjIS0tWy0tXHgzZSIpLHYoZi5hY3Rpb25zLCh0LHIpPT57byhjKGksZS5tZXJnZVByb3BzKHtrZXk6cixzaXplOiJ4cyJ9LHtyZWZfZm9yOiEwfSx0KSxudWxsLGEsbCkpfSksbygiXHgzYyEtLV0tLVx4M2UiKX0sbyxhLGwpOm8oIlx4M2MhLS0tLVx4M2UiKSx1KHQuJHNsb3RzLCJjbG9zZSIse3VpOiQudmFsdWV9LCgpPT57Zi5jbG9zZT9vKGMoaSxlLm1lcmdlUHJvcHMoe2ljb246Zi5jbG9zZUljb258fGUudW5yZWYoaCkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjplLnVucmVmKGspKCJhbGVydC5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIGYuY2xvc2U/Zi5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczokLnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKHcpPy5jbG9zZX0pLG9uQ2xpY2s6ZT0+eSgidXBkYXRlOm9wZW4iLCExKX0pLG51bGwsYSxsKSk6bygiXHgzYyEtLS0tXHgzZSIpfSxvLGEsbCksbygiPC9kaXY+IikpOm8oIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sbykpfX19LG09Zi5zZXR1cDtmLnNldHVwPSh0LHIpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQWxlcnQudnVlIiksbT9tKHQscik6dm9pZCAwfTtleHBvcnR7ZiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWxlcnQtQ1ZCNVlYdWUubWpzLm1hcAo=", "chunks/build/Badge-BB0KlMQV.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIGEsZSBhcyByLHEgYXMgbixzLHQgYXMgaSxiIGFzIGwsZyBhcyB0LFAgYXMgb31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2YgYXMgYyxnIGFzIHUsaiBhcyBkLHEgYXMgZ31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IHY9e3Nsb3RzOntiYXNlOiJmb250LW1lZGl1bSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGxhYmVsOiJ0cnVuY2F0ZSIsbGVhZGluZ0ljb246InNocmluay0wIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmdJY29uOiJzaHJpbmstMCJ9LHZhcmlhbnRzOntmaWVsZEdyb3VwOntob3Jpem9udGFsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWUtbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtcy1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSIsdmVydGljYWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtYi1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC10LW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIn0sY29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LHZhcmlhbnQ6e3NvbGlkOiIiLG91dGxpbmU6IiIsc29mdDoiIixzdWJ0bGU6IiJ9LHNpemU6e3hzOntiYXNlOiJ0ZXh0LVs4cHhdLzMgcHgtMSBweS0wLjUgZ2FwLTEgcm91bmRlZC1zbSIsbGVhZGluZ0ljb246InNpemUtMyIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTMifSxzbTp7YmFzZToidGV4dC1bMTBweF0vMyBweC0xLjUgcHktMSBnYXAtMSByb3VuZGVkLXNtIixsZWFkaW5nSWNvbjoic2l6ZS0zIixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtMyJ9LG1kOntiYXNlOiJ0ZXh0LXhzIHB4LTIgcHktMSBnYXAtMSByb3VuZGVkLW1kIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LGxnOntiYXNlOiJ0ZXh0LXNtIHB4LTIgcHktMSBnYXAtMS41IHJvdW5kZWQtbWQiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InRleHQtYmFzZSBweC0yLjUgcHktMSBnYXAtMS41IHJvdW5kZWQtbWQiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02In19LHNxdWFyZTp7dHJ1ZToiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1wcmltYXJ5IHRleHQtaW52ZXJ0ZWQifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1zZWNvbmRhcnkgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1zdWNjZXNzIHRleHQtaW52ZXJ0ZWQifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoiYmctaW5mbyB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXdhcm5pbmcgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoiYmctZXJyb3IgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzUwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy81MCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzUwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC13YXJuaW5nIHJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvNTAifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci81MCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy1zdWNjZXNzLzEwIHRleHQtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLWluZm8vMTAgdGV4dC1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctd2FybmluZy8xMCB0ZXh0LXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctZXJyb3IvMTAgdGV4dC1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkgcmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS8yNSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1zdWNjZXNzLzEwIHRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzI1In0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1pbmZvLzEwIHRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1In0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy13YXJuaW5nLzEwIHRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1In0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoiYmctZXJyb3IvMTAgdGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9LHtzaXplOiJ4cyIsc3F1YXJlOiEwLGNsYXNzOiJwLTAuNSJ9LHtzaXplOiJzbSIsc3F1YXJlOiEwLGNsYXNzOiJwLTEifSx7c2l6ZToibWQiLHNxdWFyZTohMCxjbGFzczoicC0xIn0se3NpemU6ImxnIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9LHtzaXplOiJ4bCIsc3F1YXJlOiEwLGNsYXNzOiJwLTEifV0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLHNpemU6Im1kIn19LHA9e19fbmFtZToiVUJhZGdlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn0sbGFiZWw6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3F1YXJlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocCl7Y29uc3QgZj1wLGI9ZS51c2VTbG90cygpLHg9YSgpLG09cigiYmFkZ2UiLGYpLHtvcmllbnRhdGlvbjp5LHNpemU6en09bihmKSx7aXNMZWFkaW5nOkksaXNUcmFpbGluZzpxLGxlYWRpbmdJY29uTmFtZTpTLHRyYWlsaW5nSWNvbk5hbWU6QX09cyhmKSxrPWUuY29tcHV0ZWQoKCk9Pmkoe2V4dGVuZDppKHYpLC4uLngudWk/LmJhZGdlfHx7fX0pKHtjb2xvcjpmLmNvbG9yLHZhcmlhbnQ6Zi52YXJpYW50LHNpemU6ei52YWx1ZXx8Zi5zaXplLHNxdWFyZTpmLnNxdWFyZXx8IWIuZGVmYXVsdCYmIWYubGFiZWwsZmllbGRHcm91cDp5LnZhbHVlfSkpO3JldHVybihhLHIsbixzKT0+e3IoYyhlLnVucmVmKG8pLGUubWVyZ2VQcm9wcyh7YXM6cC5hcywiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6ay52YWx1ZS5iYXNlKHtjbGFzczpbZS51bnJlZihtKT8uYmFzZSxmLmNsYXNzXX0pfSxzKSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixzLGkpPT57aWYoIW4pcmV0dXJuW2UucmVuZGVyU2xvdChhLiRzbG90cywibGVhZGluZyIse3VpOmsudmFsdWV9LCgpPT5bZS51bnJlZihJKSYmZS51bnJlZihTKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGwse2tleTowLG5hbWU6ZS51bnJlZihTKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmsudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYobSk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6cC5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh0LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKG0pPy5sZWFkaW5nQXZhdGFyU2l6ZXx8ay52YWx1ZS5sZWFkaW5nQXZhdGFyU2l6ZSgpfSxwLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxlYWRpbmdBdmF0YXIiLGNsYXNzOmsudmFsdWUubGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihtKT8ubGVhZGluZ0F2YXRhcn0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJkZWZhdWx0Iix7dWk6ay52YWx1ZX0sKCk9Plt2b2lkIDAhPT1wLmxhYmVsJiZudWxsIT09cC5sYWJlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczprLnZhbHVlLmxhYmVsKHtjbGFzczplLnVucmVmKG0pPy5sYWJlbH0pfSxlLnRvRGlzcGxheVN0cmluZyhwLmxhYmVsKSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJ0cmFpbGluZyIse3VpOmsudmFsdWV9LCgpPT5bZS51bnJlZihxKSYmZS51bnJlZihBKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGwse2tleTowLG5hbWU6ZS51bnJlZihBKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczprLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihtKT8udHJhaWxpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO3UoYS4kc2xvdHMsImxlYWRpbmciLHt1aTprLnZhbHVlfSwoKT0+e2UudW5yZWYoSSkmJmUudW5yZWYoUyk/bihjKGwse25hbWU6ZS51bnJlZihTKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmsudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYobSk/LmxlYWRpbmdJY29ufSl9LG51bGwscyxpKSk6cC5hdmF0YXI/bihjKHQsZS5tZXJnZVByb3BzKHtzaXplOmUudW5yZWYobSk/LmxlYWRpbmdBdmF0YXJTaXplfHxrLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LHAuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6ay52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczplLnVucmVmKG0pPy5sZWFkaW5nQXZhdGFyfSl9KSxudWxsLHMsaSkpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixzLGkpLHUoYS4kc2xvdHMsImRlZmF1bHQiLHt1aTprLnZhbHVlfSwoKT0+e3ZvaWQgMCE9PXAubGFiZWwmJm51bGwhPT1wLmxhYmVsP24oYDxzcGFuIGRhdGEtc2xvdD0ibGFiZWwiIGNsYXNzPSIke2Qoay52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZihtKT8ubGFiZWx9KSl9IiR7aX0+JHtnKHAubGFiZWwpfTwvc3Bhbj5gKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scyxpKSx1KGEuJHNsb3RzLCJ0cmFpbGluZyIse3VpOmsudmFsdWV9LCgpPT57ZS51bnJlZihxKSYmZS51bnJlZihBKT9uKGMobCx7bmFtZTplLnVucmVmKEEpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOmsudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKG0pPy50cmFpbGluZ0ljb259KX0sbnVsbCxzLGkpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scyxpKX0pLF86M30sbikpfX19LGY9cC5zZXR1cDtwLnNldHVwPShhLHIpPT57Y29uc3Qgbj1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQmFkZ2UudnVlIiksZj9mKGEscik6dm9pZCAwfTtleHBvcnR7cCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFkZ2UtQkIwS2xNUVYubWpzLm1hcAo=", "chunks/build/Card-novgqRop.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBvLHQgYXMgcyxQIGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIHIsaiBhcyBpLGcgYXMgbCxxIGFzIGF9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBuPXtzbG90czp7cm9vdDoicm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW4iLGhlYWRlcjoicC00IHNtOnB4LTYiLHRpdGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGZvbnQtc2VtaWJvbGQiLGRlc2NyaXB0aW9uOiJtdC0xIHRleHQtbXV0ZWQgdGV4dC1zbSIsYm9keToicC00IHNtOnAtNiIsZm9vdGVyOiJwLTQgc206cHgtNiJ9LHZhcmlhbnRzOnt2YXJpYW50Ontzb2xpZDp7cm9vdDoiYmctaW52ZXJ0ZWQgdGV4dC1pbnZlcnRlZCIsdGl0bGU6InRleHQtaW52ZXJ0ZWQiLGRlc2NyaXB0aW9uOiJ0ZXh0LWRpbW1lZCJ9LG91dGxpbmU6e3Jvb3Q6ImJnLWRlZmF1bHQgcmluZyByaW5nLWRlZmF1bHQgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxzb2Z0Ontyb290OiJiZy1lbGV2YXRlZC81MCBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9LHN1YnRsZTp7cm9vdDoiYmctZWxldmF0ZWQvNTAgcmluZyByaW5nLWRlZmF1bHQgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX19LGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDoib3V0bGluZSJ9fSxjPXtfX25hbWU6IlVDYXJkIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoYyl7Y29uc3QgdT1jLHA9ZS51c2VTbG90cygpLHY9dCgpLGY9bygiY2FyZCIsdSksbT1lLmNvbXB1dGVkKCgpPT5zKHtleHRlbmQ6cyhuKSwuLi52LnVpPy5jYXJkfHx7fX0pKHt2YXJpYW50OnUudmFyaWFudH0pKTtyZXR1cm4odCxvLHMsbik9PntvKHIoZS51bnJlZihkKSxlLm1lcmdlUHJvcHMoe2FzOmMuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOm0udmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoZik/LnJvb3QsdS5jbGFzc119KX0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLHMsZCxyKT0+e2lmKCFzKXJldHVybltwLmhlYWRlcnx8Yy50aXRsZXx8cC50aXRsZXx8Yy5kZXNjcmlwdGlvbnx8cC5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczptLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihmKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImhlYWRlciIse30sKCk9PltjLnRpdGxlfHxwLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6bS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihmKT8udGl0bGV9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoYy50aXRsZSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxjLmRlc2NyaXB0aW9ufHxwLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6bS52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihmKT8uZGVzY3JpcHRpb259KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoYy5kZXNjcmlwdGlvbiksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHAuZGVmYXVsdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6bS52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKGYpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxwLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczptLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihmKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImZvb3RlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtwLmhlYWRlcnx8Yy50aXRsZXx8cC50aXRsZXx8Yy5kZXNjcmlwdGlvbnx8cC5kZXNjcmlwdGlvbj8ocyhgPGRpdiBkYXRhLXNsb3Q9ImhlYWRlciIgY2xhc3M9IiR7aShtLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihmKT8uaGVhZGVyfSkpfSIke3J9PmApLGwodC4kc2xvdHMsImhlYWRlciIse30sKCk9PntjLnRpdGxlfHxwLnRpdGxlPyhzKGA8ZGl2IGRhdGEtc2xvdD0idGl0bGUiIGNsYXNzPSIke2kobS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihmKT8udGl0bGV9KSl9IiR7cn0+YCksbCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT57cyhgJHthKGMudGl0bGUpfWApfSxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKSxjLmRlc2NyaXB0aW9ufHxwLmRlc2NyaXB0aW9uPyhzKGA8ZGl2IGRhdGEtc2xvdD0iZGVzY3JpcHRpb24iIGNsYXNzPSIke2kobS52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihmKT8uZGVzY3JpcHRpb259KSl9IiR7cn0+YCksbCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT57cyhgJHthKGMuZGVzY3JpcHRpb24pfWApfSxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKX0scyxkLHIpLHMoIjwvZGl2PiIpKTpzKCJceDNjIS0tLS1ceDNlIikscC5kZWZhdWx0PyhzKGA8ZGl2IGRhdGEtc2xvdD0iYm9keSIgY2xhc3M9IiR7aShtLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoZik/LmJvZHl9KSl9IiR7cn0+YCksbCh0LiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKSxwLmZvb3Rlcj8ocyhgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7aShtLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihmKT8uZm9vdGVyfSkpfSIke3J9PmApLGwodC4kc2xvdHMsImZvb3RlciIse30sbnVsbCxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30scykpfX19LHU9Yy5zZXR1cDtjLnNldHVwPSh0LG8pPT57Y29uc3Qgcz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4ocy5tb2R1bGVzfHwocy5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQ2FyZC52dWUiKSx1P3UodCxvKTp2b2lkIDB9O2V4cG9ydHtjIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1DYXJkLW5vdmdxUm9wLm1qcy5tYXAK", "chunks/build/DashboardNavbar-2JpQqwJ7.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLXBrSUVhZE9KLm1qcyI7aW1wb3J0e18gYXMgcn1mcm9tIi4vRGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLUNRQ1pPdFhILm1qcyI7aW1wb3J0e3YgYXMgdCxhMCBhcyBvfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBzfWZyb20iLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7aW1wb3J0e2YgYXMgYSxnIGFzIG59ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBsPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRhc2hib2FyZE5hdmJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3RpdGxlOnt9fSxzZXR1cChsKXtjb25zdCBpPXMoKSxtPXQuY29tcHV0ZWQoKCk9PlsuLi5pLm5hdmJhckl0ZW1zLnZhbHVlXS5zb3J0KChlLHIpPT5lLnByaW9yaXR5LXIucHJpb3JpdHkpKTtyZXR1cm4ocyxpLHUsZCk9Pntjb25zdCBwPXIsYz1vO2koYShlLHQubWVyZ2VQcm9wcyh7dGl0bGU6bC50aXRsZX0sZCkse2xlYWRpbmc6dC53aXRoQ3R4KChlLHIsbyxzKT0+e2lmKCFyKXJldHVyblt0LmNyZWF0ZVZOb2RlKHApXTtyKGEocCxudWxsLG51bGwsbyxzKSl9KSxyaWdodDp0LndpdGhDdHgoKGUscixvLGwpPT57aWYoIXIpcmV0dXJuW3QucmVuZGVyU2xvdChzLiRzbG90cywicmlnaHQiKSx0LmNyZWF0ZVZOb2RlKGMsbnVsbCx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9PlsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdCh0LnVucmVmKG0pLGU9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLmNvbXBvbmVudCkse2tleTplLmlkfSkpKSwxMjgpKV0pLF86MX0pXTtuKHMuJHNsb3RzLCJyaWdodCIse30sbnVsbCxyLG8sbCkscihhKGMsbnVsbCx7fSxvLGwpKX0pLF86M30sdSkpfX19KSxpPWwuc2V0dXA7bC5zZXR1cD0oZSxyKT0+e2NvbnN0IG89dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCJjb21wb25lbnRzL0Rhc2hib2FyZC9EYXNoYm9hcmROYXZiYXIudnVlIiksaT9pKGUscik6dm9pZCAwfTtleHBvcnR7bCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcy5tYXAK", "chunks/build/DashboardNavbar-pkIEadOJ.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBsLGsgYXMgcyx0IGFzIHIsYiBhcyBvLFAgYXMgYX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3UgYXMgbn1mcm9tIi4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS1DSE1NaWJfVy5tanMiO2ltcG9ydHtmIGFzIHUsZyBhcyBkLGogYXMgYyxxIGFzIGd9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBmPXtzbG90czp7cm9vdDoiaC0oLS11aS1oZWFkZXItaGVpZ2h0KSBzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUiLGxlZnQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgbWluLXctMCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IHNlbGYtY2VudGVyIG1lLTEuNSIsdGl0bGU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIHRydW5jYXRlIixjZW50ZXI6ImhpZGRlbiBsZzpmbGV4IixyaWdodDoiZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTEuNSIsdG9nZ2xlOiIifSx2YXJpYW50czp7dG9nZ2xlU2lkZTp7bGVmdDp7dG9nZ2xlOiIifSxyaWdodDp7dG9nZ2xlOiIifX19fSxtPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZE5hdmJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0b2dnbGU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0b2dnbGVTaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAobSl7Y29uc3QgcD1tLHY9ZS51c2VTbG90cygpLGg9dCgpLHg9bCgiZGFzaGJvYXJkTmF2YmFyIixwKSxiPW4oe30pLFtTLCRdPXMoKSxrPWUuY29tcHV0ZWQoKCk9PnIoe2V4dGVuZDpyKGYpLC4uLmgudWk/LmRhc2hib2FyZE5hdmJhcnx8e319KSgpKTtyZXR1cm4odCxsLHMscik9PntsKCJceDNjIS0tWy0tXHgzZSIpLGwodShlLnVucmVmKFMpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLHMscixvKT0+e2lmKCFzKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsInRvZ2dsZSIsey4uLmUudW5yZWYoYiksdWk6ay52YWx1ZX0sKCk9PlttLnRvZ2dsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGksZS5tZXJnZVByb3BzKHtrZXk6MH0sIm9iamVjdCI9PXR5cGVvZiBtLnRvZ2dsZT9tLnRvZ2dsZTp7fSx7c2lkZTptLnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6ay52YWx1ZS50b2dnbGUoe2NsYXNzOmUudW5yZWYoeCk/LnRvZ2dsZSx0b2dnbGVTaWRlOm0udG9nZ2xlU2lkZX0pfSksbnVsbCwxNixbInNpZGUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO2QodC4kc2xvdHMsInRvZ2dsZSIsey4uLmUudW5yZWYoYiksdWk6ay52YWx1ZX0sKCk9PnttLnRvZ2dsZT9zKHUoaSxlLm1lcmdlUHJvcHMoIm9iamVjdCI9PXR5cGVvZiBtLnRvZ2dsZT9tLnRvZ2dsZTp7fSx7c2lkZTptLnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6ay52YWx1ZS50b2dnbGUoe2NsYXNzOmUudW5yZWYoeCk/LnRvZ2dsZSx0b2dnbGVTaWRlOm0udG9nZ2xlU2lkZX0pfSksbnVsbCxyLG8pKTpzKCJceDNjIS0tLS1ceDNlIil9LHMscixvKX0pLF86M30scykpLGwodShlLnVucmVmKGEpLGUubWVyZ2VQcm9wcyh7YXM6bS5hc30sdC4kYXR0cnMseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczprLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHgpPy5yb290LHAuY2xhc3NdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKGwscyxyLGEpPT57aWYoIXMpcmV0dXJuW2UuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJsZWZ0IixjbGFzczprLnZhbHVlLmxlZnQoe2NsYXNzOmUudW5yZWYoeCk/LmxlZnR9KX0sWyJsZWZ0Ij09PW0udG9nZ2xlU2lkZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJCkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImxlZnQiLGUudW5yZWYoYiksKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImxlYWRpbmciLHsuLi5lLnVucmVmKGIpLHVpOmsudmFsdWV9LCgpPT5bbS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sobyx7a2V5OjAsbmFtZTptLmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOmsudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih4KT8uaWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoImgxIix7ImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczprLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKHgpPy50aXRsZX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhtLnRpdGxlKSwxKV0pXSwyKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsInRyYWlsaW5nIix7Li4uZS51bnJlZihiKSx1aTprLnZhbHVlfSldKV0sMiksdi5kZWZhdWx0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJjZW50ZXIiLGNsYXNzOmsudmFsdWUuY2VudGVyKHtjbGFzczplLnVucmVmKHgpPy5jZW50ZXJ9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIsZS51bnJlZihiKSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6InJpZ2h0IixjbGFzczprLnZhbHVlLnJpZ2h0KHtjbGFzczplLnVucmVmKHgpPy5yaWdodH0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJyaWdodCIsZS51bnJlZihiKSksInJpZ2h0Ij09PW0udG9nZ2xlU2lkZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJCkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildO3MoYDxkaXYgZGF0YS1zbG90PSJsZWZ0IiBjbGFzcz0iJHtjKGsudmFsdWUubGVmdCh7Y2xhc3M6ZS51bnJlZih4KT8ubGVmdH0pKX0iJHthfT5gKSwibGVmdCI9PT1tLnRvZ2dsZVNpZGU/cyh1KGUudW5yZWYoJCksbnVsbCxudWxsLHIsYSkpOnMoIlx4M2MhLS0tLVx4M2UiKSxkKHQuJHNsb3RzLCJsZWZ0IixlLnVucmVmKGIpLCgpPT57ZCh0LiRzbG90cywibGVhZGluZyIsey4uLmUudW5yZWYoYiksdWk6ay52YWx1ZX0sKCk9PnttLmljb24/cyh1KG8se25hbWU6bS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczprLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeCk/Lmljb259KX0sbnVsbCxyLGEpKTpzKCJceDNjIS0tLS1ceDNlIil9LHMscixhKSxzKGA8aDEgZGF0YS1zbG90PSJ0aXRsZSIgY2xhc3M9IiR7YyhrLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKHgpPy50aXRsZX0pKX0iJHthfT5gKSxkKHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntzKGAke2cobS50aXRsZSl9YCl9LHMscixhKSxzKCI8L2gxPiIpLGQodC4kc2xvdHMsInRyYWlsaW5nIix7Li4uZS51bnJlZihiKSx1aTprLnZhbHVlfSxudWxsLHMscixhKX0scyxyLGEpLHMoIjwvZGl2PiIpLHYuZGVmYXVsdD8ocyhgPGRpdiBkYXRhLXNsb3Q9ImNlbnRlciIgY2xhc3M9IiR7YyhrLnZhbHVlLmNlbnRlcih7Y2xhc3M6ZS51bnJlZih4KT8uY2VudGVyfSkpfSIke2F9PmApLGQodC4kc2xvdHMsImRlZmF1bHQiLGUudW5yZWYoYiksbnVsbCxzLHIsYSkscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKSxzKGA8ZGl2IGRhdGEtc2xvdD0icmlnaHQiIGNsYXNzPSIke2Moay52YWx1ZS5yaWdodCh7Y2xhc3M6ZS51bnJlZih4KT8ucmlnaHR9KSl9IiR7YX0+YCksZCh0LiRzbG90cywicmlnaHQiLGUudW5yZWYoYiksbnVsbCxzLHIsYSksInJpZ2h0Ij09PW0udG9nZ2xlU2lkZT9zKHUoZS51bnJlZigkKSxudWxsLG51bGwscixhKSk6cygiXHgzYyEtLS0tXHgzZSIpLHMoIjwvZGl2PiIpfSksXzozfSxzKSksbCgiXHgzYyEtLV0tLVx4M2UiKX19fSkscD1tLnNldHVwO20uc2V0dXA9KHQsbCk9Pntjb25zdCBzPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9EYXNoYm9hcmROYXZiYXIudnVlIikscD9wKHQsbCk6dm9pZCAwfTtleHBvcnR7bSBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkTmF2YmFyLXBrSUVhZE9KLm1qcy5tYXAK", "chunks/build/DashboardPanel-CFKYSqc5.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHMsdiBhcyBvLHQgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3UgYXMgYSxhIGFzIHQsXyBhcyBsfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7byBhcyBuLGcgYXMgdSxqIGFzIGQsZiBhcyBpfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgZj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGZsZXggZmxleC1jb2wgbWluLXctMCBtaW4taC1zdmggbGc6bm90LWxhc3Q6Ym9yZGVyLWUgbGc6bm90LWxhc3Q6Ym9yZGVyLWRlZmF1bHQgc2hyaW5rLTAiLGJvZHk6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgZmxleC0xIG92ZXJmbG93LXktYXV0byBwLTQgc206cC02IixoYW5kbGU6IiJ9LHZhcmlhbnRzOntzaXplOnt0cnVlOntyb290OiJ3LWZ1bGwgbGc6dy0oLS13aWR0aCkifSxmYWxzZTp7cm9vdDoiZmxleC0xIn19fX0sYj1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVEYXNoYm9hcmRQYW5lbCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2NsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtaW5TaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjE1fSxtYXhTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFNpemU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyZXNpemFibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfX0sc2V0dXAoYil7Y29uc3QgYz1iLG09ZSgpLHA9cygiZGFzaGJvYXJkUGFuZWwiLGMpLGg9YSh7c3RvcmFnZUtleToiZGFzaGJvYXJkIix1bml0OiIlIn0pLHg9YCR7aC5zdG9yYWdlS2V5fS1wYW5lbC0ke2MuaWR8fG8udXNlSWQoKX1gLHtlbDpnLHNpemU6dixpc0RyYWdnaW5nOnksb25Nb3VzZURvd246JCxvblRvdWNoU3RhcnQ6dyxvbkRvdWJsZUNsaWNrOnp9PXQoeCxvLnRvUmVmKCgpPT4oey4uLmgsLi4uY30pKSksXz1vLmNvbXB1dGVkKCgpPT5yKHtleHRlbmQ6cihmKSwuLi5tLnVpPy5kYXNoYm9hcmRQYW5lbHx8e319KSh7c2l6ZTohIXYudmFsdWV9KSk7cmV0dXJuKGUscyxyLGEpPT57cyhgXHgzYyEtLVstLVx4M2U8ZGl2JHtuKG8ubWVyZ2VQcm9wcyh7aWQ6eCxyZWZfa2V5OiJlbCIscmVmOmd9LGUuJGF0dHJzLHsiZGF0YS1kcmFnZ2luZyI6by51bnJlZih5KSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Xy52YWx1ZS5yb290KHtjbGFzczpbby51bnJlZihwKT8ucm9vdCxjLmNsYXNzXX0pLHN0eWxlOltvLnVucmVmKHYpP3siLS13aWR0aCI6YCR7by51bnJlZih2KX0ke28udW5yZWYoaCkudW5pdH1gfTp2b2lkIDBdfSkpfT5gKSx1KGUuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+e3UoZS4kc2xvdHMsImhlYWRlciIse30sbnVsbCxzLHIpLHMoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtkKF8udmFsdWUuYm9keSh7Y2xhc3M6by51bnJlZihwKT8uYm9keX0pKX0iPmApLHUoZS4kc2xvdHMsImJvZHkiLHt9LG51bGwscyxyKSxzKCI8L2Rpdj4iKSx1KGUuJHNsb3RzLCJmb290ZXIiLHt9LG51bGwscyxyKX0scyxyKSxzKCI8L2Rpdj4iKSx1KGUuJHNsb3RzLCJyZXNpemUtaGFuZGxlIix7b25Nb3VzZURvd246by51bnJlZigkKSxvblRvdWNoU3RhcnQ6by51bnJlZih3KSxvbkRvdWJsZUNsaWNrOm8udW5yZWYoeil9LCgpPT57Yi5yZXNpemFibGU/cyhpKGwseyJhcmlhLWNvbnRyb2xzIjp4LCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOl8udmFsdWUuaGFuZGxlKHtjbGFzczpvLnVucmVmKHApPy5oYW5kbGV9KSxvbk1vdXNlZG93bjpvLnVucmVmKCQpLG9uVG91Y2hzdGFydDpvLnVucmVmKHcpLG9uRGJsY2xpY2s6by51bnJlZih6KX0sbnVsbCxyKSk6cygiXHgzYyEtLS0tXHgzZSIpfSxzLHIpLHMoIlx4M2MhLS1dLS1ceDNlIil9fX0pLGM9Yi5zZXR1cDtiLnNldHVwPShlLHMpPT57Y29uc3Qgcj1vLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oci5tb2R1bGVzfHwoci5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkUGFuZWwudnVlIiksYz9jKGUscyk6dm9pZCAwfTtleHBvcnR7YiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzLm1hcAo=", "chunks/build/DashboardResizeHandle-BRuAGFE5.mjs": "aW1wb3J0e20gYXMgZSx2IGFzIHQsZiBhcyBhLG4gYXMgbyxkIGFzIGwsZSBhcyBzLHQgYXMgdSxQIGFzIG4sbyBhcyBpLHAgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2FGIGFzIGQsYVYgYXMgdixhVyBhcyBjLGFYIGFzIHAsUiBhcyBmLEkgYXMgbSxhYiBhcyBofWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZiBhcyBiLGcgYXMgen1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IGc9e3BhdGg6Ii8iLHdhdGNoOiEwLGRlY29kZTplPT5mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9PWUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJlN0cmluZyh0KSE9PWU/ZTp0fWNhdGNoe3JldHVybiBlfX0oZGVjb2RlVVJJQ29tcG9uZW50KGUpKSxlbmNvZGU6ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZXx8InVuZGVmaW5lZCI9PT1lKXJldHVybiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZSkpO3RyeXtpZigic3RyaW5nIiE9dHlwZW9mIEpTT04ucGFyc2UoZSkpcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2h7fXJldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSl9LHJlZnJlc2g6ITF9O2Z1bmN0aW9uIHVzZUNvb2tpZShlLGEpe2NvbnN0IG89ey4uLmcsLi4uYX07by5maWx0ZXI/Pz10PT50PT09ZTtjb25zdCBsPWZ1bmN0aW9uKGU9e30pe3JldHVybiB2KGMocigpLCJjb29raWUiKXx8IiIsZSl9KG8pfHx7fTtsZXQgczt2b2lkIDAhPT1vLm1heEFnZT9zPTFlMypvLm1heEFnZTpvLmV4cGlyZXMmJihzPW8uZXhwaXJlcy5nZXRUaW1lKCktRGF0ZS5ub3coKSk7Y29uc3QgdT1kKHZvaWQgMCE9PXMmJnM8PTA/dm9pZCAwOmxbZV0/P28uZGVmYXVsdD8uKCkpLG49ZnVuY3Rpb24oZSxhKXtjb25zdCBvPXQucmVmKGEpLGw9aSgpO3JldHVybiB0LmN1c3RvbVJlZigodCxhKT0+KHtnZXQ6KCk9Pih0KCksby52YWx1ZSksc2V0KHQpe2wuX2Nvb2tpZXNDaGFuZ2VkfHw9e30sbC5fY29va2llc0NoYW5nZWRbZV09ITAsby52YWx1ZT10LGEoKX19KSl9KGUsdSk7e2NvbnN0IHQ9aSgpLHdyaXRlRmluYWxDb29raWVWYWx1ZT0oKT0+e2NvbnN0IGE9cChuLnZhbHVlLGxbZV0pO28ucmVhZG9ubHl8fGEmJiFvLnJlZnJlc2h8fCh0Ll9jb29raWVzQ2hhbmdlZHx8PXt9LGEmJm8ucmVmcmVzaCYmIXQuX2Nvb2tpZXNDaGFuZ2VkW2VdfHwodC5fY29va2llc3x8PXt9LGUgaW4gdC5fY29va2llcyYmcChuLnZhbHVlLHQuX2Nvb2tpZXNbZV0pfHwodC5fY29va2llc1tlXT1uLnZhbHVlLGZ1bmN0aW9uKGUsdCxhLG89e30pe2lmKGUpe2lmKG51bGwhPWEpcmV0dXJuIGYoZSx0LGEsbyk7aWYodm9pZCAwIT09bShlLHQpKWgoZSx0LG8pfX0ocih0KSxlLG4udmFsdWUsbykpKSl9LGE9dC5ob29rcy5ob29rT25jZSgiYXBwOnJlbmRlcmVkIix3cml0ZUZpbmFsQ29va2llVmFsdWUpO3QuaG9va3MuaG9va09uY2UoImFwcDplcnJvciIsKCk9PihhKCksd3JpdGVGaW5hbENvb2tpZVZhbHVlKCkpKX1yZXR1cm4gbn1mdW5jdGlvbiB1c2VSZXNpemFibGUoZSxsPXt9LHtjb2xsYXBzZWQ6cz10LnJlZighMSl9PXt9KXtjb25zdCB1PXQucmVmKG51bGwpLG49dC5jb21wdXRlZCgoKT0+KHtzaWRlOiJsZWZ0IixtaW5TaXplOjAsbWF4U2l6ZToxMDAsZGVmYXVsdFNpemU6MCxzdG9yYWdlOiJjb29raWUiLHBlcnNpc3RlbnQ6ITAsY29sbGFwc2libGU6ITEsY29sbGFwc2VkU2l6ZTowLHJlc2l6YWJsZTohMCx1bml0OiIlIiwuLi50LmlzUmVmKGwpP2wudmFsdWU6bH0pKSx7ZGlyOml9PWEoKSxyPXtzaXplOm4udmFsdWUuZGVmYXVsdFNpemUsY29sbGFwc2VkOnQudW5yZWYocyk/PyExfSxkPW4udmFsdWUucGVyc2lzdGVudCYmKG4udmFsdWUucmVzaXphYmxlfHxuLnZhbHVlLmNvbGxhcHNpYmxlKT8iY29va2llIj09PW4udmFsdWUuc3RvcmFnZT91c2VDb29raWUoZSx7ZGVmYXVsdDooKT0+cn0pOm8oZSxyKTp0LnJlZihyKSx2PXQuY29tcHV0ZWQoe2dldDooKT0+ZC52YWx1ZS5jb2xsYXBzZWQsc2V0OmU9PntuLnZhbHVlLmNvbGxhcHNpYmxlJiYodC5pc1JlZihzKSYmKHMudmFsdWU9ZSksZC52YWx1ZS5jb2xsYXBzZWQ9ZSl9fSksYz10LnJlZihuLnZhbHVlLmRlZmF1bHRTaXplKSxwPXQuY29tcHV0ZWQoe2dldDooKT0+ZC52YWx1ZS5zaXplLHNldDplPT57ZC52YWx1ZS5zaXplPWV9fSksZj10LmNvbXB1dGVkKCgpPT52LnZhbHVlP24udmFsdWUuY29sbGFwc2VkU2l6ZTpwLnZhbHVlKSxtPXQucmVmKCExKSxjb2xsYXBzZT1lPT57aWYoIW4udmFsdWUuY29sbGFwc2libGUpcmV0dXJuO2NvbnN0IHQ9ZT8/IXYudmFsdWU7dCYmIXYudmFsdWU/Yy52YWx1ZT1wLnZhbHVlOiF0JiZ2LnZhbHVlJiYocC52YWx1ZT1jLnZhbHVlKSx2LnZhbHVlPXR9O3JldHVybiB0LmlzUmVmKHMpJiZkLnZhbHVlLmNvbGxhcHNlZCYmKHMudmFsdWU9ZC52YWx1ZS5jb2xsYXBzZWQpLHQuaXNSZWYocykmJnQud2F0Y2gocyxlPT57bi52YWx1ZS5jb2xsYXBzaWJsZSYmZC52YWx1ZS5jb2xsYXBzZWQhPT1lJiYoZC52YWx1ZS5jb2xsYXBzZWQ9ZSl9KSx7ZWw6dSxzaXplOmYsaXNEcmFnZ2luZzptLGlzQ29sbGFwc2VkOnYsb25Nb3VzZURvd246ZT0+e2lmKCF1LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGUpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO2NvbnN0IHQ9dS52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtpZighdClyZXR1cm47Y29uc3QgYT1lLmNsaWVudFgsbz10O20udmFsdWU9ITA7Y29uc3QgaGFuZGxlTW91c2VNb3ZlPWU9PnsoKGUsdCxhKT0+e2lmKCF1LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGUpcmV0dXJuO2NvbnN0IG89dS52YWx1ZS5wYXJlbnRFbGVtZW50Py5vZmZzZXRXaWR0aHx8MTtsZXQgbDtsPSJydGwiPT09aS52YWx1ZT8ibGVmdCI9PT1uLnZhbHVlLnNpZGU/dC1lLmNsaWVudFg6ZS5jbGllbnRYLXQ6ImxlZnQiPT09bi52YWx1ZS5zaWRlP2UuY2xpZW50WC10OnQtZS5jbGllbnRYO2NvbnN0IHM9YStsO2xldCByO3I9InJlbSI9PT1uLnZhbHVlLnVuaXQ/cy9OdW1iZXIucGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKCh2b2lkIDApLmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpOiJweCI9PT1uLnZhbHVlLnVuaXQ/czpzL28qMTAwO24udmFsdWUuY29sbGFwc2libGUmJnI8bi52YWx1ZS5jb2xsYXBzZWRTaXplKzQ/Y29sbGFwc2UoITApOih2LnZhbHVlJiZjb2xsYXBzZSghMSkscC52YWx1ZT1NYXRoLm1pbihuLnZhbHVlLm1heFNpemUsTWF0aC5tYXgobi52YWx1ZS5taW5TaXplLHIpKSl9KShlLGEsbyl9LGhhbmRsZU1vdXNlVXA9KCk9PnttLnZhbHVlPSExLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsaGFuZGxlTW91c2VNb3ZlKSwodm9pZCAwKS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixoYW5kbGVNb3VzZVVwKX07KHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixoYW5kbGVNb3VzZU1vdmUpLCh2b2lkIDApLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGhhbmRsZU1vdXNlVXApfSxvblRvdWNoU3RhcnQ6ZT0+e2lmKCF1LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGV8fCFlLnRvdWNoZXNbMF0pcmV0dXJuO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO2NvbnN0IHQ9dS52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtpZighdClyZXR1cm47Y29uc3QgYT1lLnRvdWNoZXNbMF0uY2xpZW50WCxvPXQ7bS52YWx1ZT0hMDtjb25zdCBoYW5kbGVUb3VjaE1vdmU9ZT0+eygoZSx0LGEpPT57aWYoIXUudmFsdWV8fCFuLnZhbHVlLnJlc2l6YWJsZXx8IWUudG91Y2hlc1swXSlyZXR1cm47Y29uc3Qgbz11LnZhbHVlLnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRofHwxO2xldCBsO2w9InJ0bCI9PT1pLnZhbHVlPyJsZWZ0Ij09PW4udmFsdWUuc2lkZT90LWUudG91Y2hlc1swXS5jbGllbnRYOmUudG91Y2hlc1swXS5jbGllbnRYLXQ6ImxlZnQiPT09bi52YWx1ZS5zaWRlP2UudG91Y2hlc1swXS5jbGllbnRYLXQ6dC1lLnRvdWNoZXNbMF0uY2xpZW50WDtjb25zdCBzPWErbDtsZXQgcjtyPSJyZW0iPT09bi52YWx1ZS51bml0P3MvTnVtYmVyLnBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSgodm9pZCAwKS5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKToicHgiPT09bi52YWx1ZS51bml0P3M6cy9vKjEwMDtuLnZhbHVlLmNvbGxhcHNpYmxlJiZyPG4udmFsdWUuY29sbGFwc2VkU2l6ZSs0P2NvbGxhcHNlKCEwKToodi52YWx1ZSYmY29sbGFwc2UoITEpLHAudmFsdWU9TWF0aC5taW4obi52YWx1ZS5tYXhTaXplLE1hdGgubWF4KG4udmFsdWUubWluU2l6ZSxyKSkpfSkoZSxhLG8pfSxoYW5kbGVUb3VjaEVuZD0oKT0+e20udmFsdWU9ITEsKHZvaWQgMCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixoYW5kbGVUb3VjaE1vdmUpLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixoYW5kbGVUb3VjaEVuZCksKHZvaWQgMCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLGhhbmRsZVRvdWNoRW5kKX07KHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixoYW5kbGVUb3VjaE1vdmUse3Bhc3NpdmU6ITF9KSwodm9pZCAwKS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsaGFuZGxlVG91Y2hFbmQpLCh2b2lkIDApLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIixoYW5kbGVUb3VjaEVuZCl9LG9uRG91YmxlQ2xpY2s6ZT0+e3UudmFsdWUmJm4udmFsdWUucmVzaXphYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdi52YWx1ZSYmY29sbGFwc2UoITEpLHAudmFsdWU9bi52YWx1ZS5kZWZhdWx0U2l6ZSl9LGNvbGxhcHNlOmNvbGxhcHNlfX1jb25zdFtTLFJdPWUoIkRhc2hib2FyZEdyb3VwIiksaz17YmFzZToiaGlkZGVuIGxnOmJsb2NrIHRvdWNoLW5vbmUgc2VsZWN0LW5vbmUgY3Vyc29yLWV3LXJlc2l6ZSByZWxhdGl2ZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOmluc2V0LXktMCBiZWZvcmU6LWxlZnQtMS41IGJlZm9yZTotcmlnaHQtMS41IGJlZm9yZTp6LTEifSxDPXtfX25hbWU6IlVEYXNoYm9hcmRSZXNpemVIYW5kbGUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBhPWUsbz1sKCksaT1zKCJkYXNoYm9hcmRSZXNpemVIYW5kbGUiLGEpLHI9dC5jb21wdXRlZCgoKT0+dSh7ZXh0ZW5kOnUoayksLi4uby51aT8uZGFzaGJvYXJkUmVzaXplSGFuZGxlfHx7fX0pKTtyZXR1cm4obyxsLHMsdSk9PntsKGIodC51bnJlZihuKSx0Lm1lcmdlUHJvcHMoe2FzOmUuYXMscm9sZToic2VwYXJhdG9yIixjbGFzczpyLnZhbHVlKHtjbGFzczpbdC51bnJlZihpKT8uYmFzZSxhLmNsYXNzXX0pfSx1KSx7ZGVmYXVsdDp0LndpdGhDdHgoKGUsYSxsLHMpPT57aWYoIWEpcmV0dXJuW3QucmVuZGVyU2xvdChvLiRzbG90cywiZGVmYXVsdCIpXTt6KG8uJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLGEsbCxzKX0pLF86M30scykpfX19LHg9Qy5zZXR1cDtDLnNldHVwPShlLGEpPT57Y29uc3Qgbz10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkUmVzaXplSGFuZGxlLnZ1ZSIpLHg/eChlLGEpOnZvaWQgMH07ZXhwb3J0e0MgYXMgXyx1c2VSZXNpemFibGUgYXMgYSxSIGFzIHAsUyBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcy5tYXAK", "chunks/build/DashboardSessionCard-DKC9fkMe.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHtfIGFzIHR9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e3YgYXMgcixoIGFzIHN9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGEsdCBhcyBuLHEgYXMgaX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IG89ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGFzaGJvYXJkU2Vzc2lvbkNhcmQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKG8pe2NvbnN0IGQ9cygpO3JldHVybihzLG8sYyxsKT0+e2NvbnN0IG09dDtvKGEoZSxyLm1lcmdlUHJvcHMoeyJkYXRhLXRlc3RpZCI6InNlc3Npb24tY2FyZCJ9LGwpLHtoZWFkZXI6ci53aXRoQ3R4KChlLHQscyxuKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIn0sW3IuY3JlYXRlVk5vZGUoImRpdiIsbnVsbCxbci5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFNpZ25lZCBpbiBhcyAiKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiwiZGF0YS10ZXN0aWQiOiJjdXJyZW50LXVzZXItbmFtZSJ9LHIudG9EaXNwbGF5U3RyaW5nKHIudW5yZWYoZCkuY3VycmVudFVzZXI/Lm5hbWU/P3IudW5yZWYoZCkuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwpLDEpLHIuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIiwiZGF0YS10ZXN0aWQiOiJjdXJyZW50LXVzZXItZW1haWwifSxyLnRvRGlzcGxheVN0cmluZyhyLnVucmVmKGQpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsKSwxKV0pLHIudW5yZWYoZCkuaXNJbXBlcnNvbmF0aW5nPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2sobSx7a2V5OjAsY29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGljb246ImktbHVjaWRlLXVzZXItY29nIiwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0aW5nLWJhZGdlIn0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVUZXh0Vk5vZGUoIiBJbXBlcnNvbmF0aW5nICIpXSksXzoxfSkpOnIuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIiJHtufT48ZGl2JHtufT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7bn0+IFNpZ25lZCBpbiBhcyA8L3A+PHAgY2xhc3M9InRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiBkYXRhLXRlc3RpZD0iY3VycmVudC11c2VyLW5hbWUiJHtufT4ke2koci51bnJlZihkKS5jdXJyZW50VXNlcj8ubmFtZT8/ci51bnJlZihkKS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbCl9PC9wPjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQiIGRhdGEtdGVzdGlkPSJjdXJyZW50LXVzZXItZW1haWwiJHtufT4ke2koci51bnJlZihkKS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbCl9PC9wPjwvZGl2PmApLHIudW5yZWYoZCkuaXNJbXBlcnNvbmF0aW5nP3QoYShtLHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsaWNvbjoiaS1sdWNpZGUtdXNlci1jb2ciLCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRpbmctYmFkZ2UifSx7ZGVmYXVsdDpyLndpdGhDdHgoKGUsdCxzLGEpPT57aWYoIXQpcmV0dXJuW3IuY3JlYXRlVGV4dFZOb2RlKCIgSW1wZXJzb25hdGluZyAiKV07dCgiIEltcGVyc29uYXRpbmcgIil9KSxfOjF9LHMsbikpOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCI8L2Rpdj4iKX0pLGRlZmF1bHQ6ci53aXRoQ3R4KChlLHQscyxvKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS0zIn0sW3IuY3JlYXRlVk5vZGUoImRpdiIsbnVsbCxbci5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSJ9LCIgQWJpbGl0aWVzICIpLHIuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtd3JhcCBnYXAtMSJ9LFsoci5vcGVuQmxvY2soITApLHIuY3JlYXRlQmxvY2soci5GcmFnbWVudCxudWxsLHIucmVuZGVyTGlzdChyLnVucmVmKGQpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLGU9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2sobSx7a2V5OmUsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToic20ifSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVRleHRWTm9kZShyLnRvRGlzcGxheVN0cmluZyhlKSwxKV0pLF86Mn0sMTAyNCkpKSwxMjgpKSxyLnVucmVmKGQpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/Lmxlbmd0aD9yLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLGNsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSwiIChub25lKSAiKSldKV0pLHIudW5yZWYoZCkuaXNJbXBlcnNvbmF0aW5nJiZyLnVucmVmKGQpLmltcGVyc29uYXRvcj8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MH0sW3IuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIG1iLTEifSwiIFJlYWwgdXNlciAiKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20ifSxbci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoci51bnJlZihkKS5pbXBlcnNvbmF0b3IubmFtZSkrIiAiLDEpLHIuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCLCtyAiK3IudG9EaXNwbGF5U3RyaW5nKHIudW5yZWYoZCkuaW1wZXJzb25hdG9yLnByaW1hcnlfZW1haWwpLDEpXSldKSk6ci5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktMyIke299PjxkaXYke299PjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSIke299PiBBYmlsaXRpZXMgPC9wPjxkaXYgY2xhc3M9ImZsZXggZmxleC13cmFwIGdhcC0xIiR7b30+XHgzYyEtLVstLVx4M2VgKSxuKHIudW5yZWYoZCkuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sZT0+e3QoYShtLHtrZXk6ZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJzbSJ9LHtkZWZhdWx0OnIud2l0aEN0eCgodCxzLGEsbik9PntpZighcylyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZSksMSldO3MoYCR7aShlKX1gKX0pLF86Mn0scyxvKSl9KSx0KCJceDNjIS0tXS0tXHgzZSIpLHIudW5yZWYoZCkuY3VycmVudFVzZXI/LmFiaWxpdGllcz8ubGVuZ3RoP3QoIlx4M2MhLS0tLVx4M2UiKTp0KGA8c3BhbiBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIiR7b30+IChub25lKSA8L3NwYW4+YCksdCgiPC9kaXY+PC9kaXY+Iiksci51bnJlZihkKS5pc0ltcGVyc29uYXRpbmcmJnIudW5yZWYoZCkuaW1wZXJzb25hdG9yP3QoYDxkaXYke299PjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSIke299PiBSZWFsIHVzZXIgPC9wPjxwIGNsYXNzPSJ0ZXh0LXNtIiR7b30+JHtpKHIudW5yZWYoZCkuaW1wZXJzb25hdG9yLm5hbWUpfSA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke299PsK3ICR7aShyLnVucmVmKGQpLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKX08L3NwYW4+PC9wPjwvZGl2PmApOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCI8L2Rpdj4iKX0pLF86MX0sYykpfX19KSxkPW8uc2V0dXA7by5zZXR1cD0oZSx0KT0+e2NvbnN0IHM9ci51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHMubW9kdWxlc3x8KHMubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCJjb21wb25lbnRzL0Rhc2hib2FyZC9EYXNoYm9hcmRTZXNzaW9uQ2FyZC52dWUiKSxkP2QoZSx0KTp2b2lkIDB9O2V4cG9ydHtvIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1EYXNoYm9hcmRTZXNzaW9uQ2FyZC1ES0M5ZmtNZS5tanMubWFwCg==", "chunks/build/DashboardSidebarCollapse-CQCZOtXH.mjs": "aW1wb3J0e2wgYXMgZSxyLGYgYXMgYSxkIGFzIGwsZSBhcyBpLHYgYXMgZCx0IGFzIG4sXyBhcyBzfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBvfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7ZiBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgdD17YmFzZToiaGlkZGVuIGxnOmZsZXgiLHZhcmlhbnRzOntzaWRlOntsZWZ0OiIiLHJpZ2h0OiIifX19LHA9e19fbmFtZToiVURhc2hib2FyZFNpZGViYXJDb2xsYXBzZSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2NvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJnaG9zdCJ9LHNpZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxlZnQifSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNxdWFyZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxibG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAocCl7Y29uc3QgYz1wLGI9ZShyKGMsImljb24iLCJzaWRlIiwiY2xhc3MiKSkse3Q6eX09YSgpLHE9bCgpLGY9aSgiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlIixjKSx7c2lkZWJhckNvbGxhcHNlZDptLGNvbGxhcHNlU2lkZWJhcjpnfT1vKHtzaWRlYmFyQ29sbGFwc2VkOmQucmVmKCExKSxjb2xsYXBzZVNpZGViYXI6KCk9Pnt9fSksQz1kLmNvbXB1dGVkKCgpPT5uKHtleHRlbmQ6bih0KSwuLi5xLnVpPy5kYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2V8fHt9fSkpO3JldHVybihlLHIsYSxsKT0+e3IodShzLGQubWVyZ2VQcm9wcyh7Li4uZC51bnJlZihiKSxpY29uOmMuaWNvbnx8KGQudW5yZWYobSk/ZC51bnJlZihxKS51aS5pY29ucy5wYW5lbE9wZW46ZC51bnJlZihxKS51aS5pY29ucy5wYW5lbENsb3NlKSwiYXJpYS1sYWJlbCI6ZC51bnJlZihtKT9kLnVucmVmKHkpKCJkYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UuZXhwYW5kIik6ZC51bnJlZih5KSgiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLmNvbGxhcHNlIiksLi4uZS4kYXR0cnN9LHtjbGFzczpDLnZhbHVlKHtjbGFzczpbZC51bnJlZihmKT8uYmFzZSxjLmNsYXNzXSxzaWRlOmMuc2lkZX0pLG9uQ2xpY2s6ZT0+ZC51bnJlZihnKT8uKCFkLnVucmVmKG0pKX0sbCksbnVsbCxhKSl9fX0sYz1wLnNldHVwO3Auc2V0dXA9KGUscik9Pntjb25zdCBhPWQudXNlU1NSQ29udGV4dCgpO3JldHVybihhLm1vZHVsZXN8fChhLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UudnVlIiksYz9jKGUscik6dm9pZCAwfTtleHBvcnR7cCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLUNRQ1pPdFhILm1qcy5tYXAK", "chunks/build/DashboardSidebarToggle-CHMMib_W.mjs": "aW1wb3J0e2wgYXMgZSxyLGYgYXMgaSxkIGFzIGEsZSBhcyBuLHYgYXMgdCx0IGFzIGQsXyBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBvfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7ZiBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3Qgcz17YmFzZToibGc6aGlkZGVuIix2YXJpYW50czp7c2lkZTp7bGVmdDoiIixyaWdodDoiIn19fSxwPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNpZGViYXJUb2dnbGUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZ2hvc3QifSxzaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZVZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYmxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25DbGljazp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmlld1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHApe2NvbnN0IGM9cCxiPWUocihjLCJpY29uIiwic2lkZSIsImNsYXNzIikpLHt0Omd9PWkoKSx5PWEoKSxxPW4oImRhc2hib2FyZFNpZGViYXJUb2dnbGUiLGMpLHtzaWRlYmFyT3BlbjpmLHRvZ2dsZVNpZGViYXI6bX09byh7c2lkZWJhck9wZW46dC5yZWYoITEpLHRvZ2dsZVNpZGViYXI6KCk9Pnt9fSksUz10LmNvbXB1dGVkKCgpPT5kKHtleHRlbmQ6ZChzKSwuLi55LnVpPy5kYXNoYm9hcmRTaWRlYmFyVG9nZ2xlfHx7fX0pKTtyZXR1cm4oZSxyLGksYSk9PntyKHUobCx0Lm1lcmdlUHJvcHMoey4uLnQudW5yZWYoYiksaWNvbjpjLmljb258fCh0LnVucmVmKGYpP3QudW5yZWYoeSkudWkuaWNvbnMuY2xvc2U6dC51bnJlZih5KS51aS5pY29ucy5tZW51KSwiYXJpYS1sYWJlbCI6dC51bnJlZihmKT90LnVucmVmKGcpKCJkYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLmNsb3NlIik6dC51bnJlZihnKSgiZGFzaGJvYXJkU2lkZWJhclRvZ2dsZS5vcGVuIiksLi4uZS4kYXR0cnN9LHtjbGFzczpTLnZhbHVlKHtjbGFzczpbdC51bnJlZihxKT8uYmFzZSxjLmNsYXNzXSxzaWRlOmMuc2lkZX0pLG9uQ2xpY2s6dC51bnJlZihtKX0sYSksbnVsbCxpKSl9fX0pLGM9cC5zZXR1cDtwLnNldHVwPShlLHIpPT57Y29uc3QgaT10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oaS5tb2R1bGVzfHwoaS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS52dWUiKSxjP2MoZSxyKTp2b2lkIDB9O2V4cG9ydHtwIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcy5tYXAK", "chunks/build/DashboardToolbar-BtABYzKH.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHQsdiBhcyBzLHQgYXMgcixQIGFzIGx9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIG8sZyBhcyBhLGogYXMgZH1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IHU9e3Nsb3RzOntyb290OiJzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUgb3ZlcmZsb3cteC1hdXRvIG1pbi1oLVs0OXB4XSIsbGVmdDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSIscmlnaHQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUifX0sbj17X19uYW1lOiJVRGFzaGJvYXJkVG9vbGJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IGk9bixmPWUoKSxjPXQoImRhc2hib2FyZFRvb2xiYXIiLGkpLHA9cy5jb21wdXRlZCgoKT0+cih7ZXh0ZW5kOnIodSksLi4uZi51aT8uZGFzaGJvYXJkVG9vbGJhcnx8e319KSgpKTtyZXR1cm4oZSx0LHIsdSk9Pnt0KG8ocy51bnJlZihsKSxzLm1lcmdlUHJvcHMoe2FzOm4uYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnAudmFsdWUucm9vdCh7Y2xhc3M6W3MudW5yZWYoYyk/LnJvb3QsaS5jbGFzc119KX0sdSkse2RlZmF1bHQ6cy53aXRoQ3R4KCh0LHIsbCxvKT0+e2lmKCFyKXJldHVybltzLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bcy5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImxlZnQiLGNsYXNzOnAudmFsdWUubGVmdCh7Y2xhc3M6W3MudW5yZWYoYyk/LmxlZnRdfSl9LFtzLnJlbmRlclNsb3QoZS4kc2xvdHMsImxlZnQiKV0sMikscy5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6InJpZ2h0IixjbGFzczpwLnZhbHVlLnJpZ2h0KHtjbGFzczpbcy51bnJlZihjKT8ucmlnaHRdfSl9LFtzLnJlbmRlclNsb3QoZS4kc2xvdHMsInJpZ2h0IildLDIpXSldO2EoZS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT57cihgPGRpdiBkYXRhLXNsb3Q9ImxlZnQiIGNsYXNzPSIke2QocC52YWx1ZS5sZWZ0KHtjbGFzczpbcy51bnJlZihjKT8ubGVmdF19KSl9IiR7b30+YCksYShlLiRzbG90cywibGVmdCIse30sbnVsbCxyLGwsbykscihgPC9kaXY+PGRpdiBkYXRhLXNsb3Q9InJpZ2h0IiBjbGFzcz0iJHtkKHAudmFsdWUucmlnaHQoe2NsYXNzOltzLnVucmVmKGMpPy5yaWdodF19KSl9IiR7b30+YCksYShlLiRzbG90cywicmlnaHQiLHt9LG51bGwscixsLG8pLHIoIjwvZGl2PiIpfSxyLGwsbyl9KSxfOjN9LHIpKX19fSxpPW4uc2V0dXA7bi5zZXR1cD0oZSx0KT0+e2NvbnN0IHI9cy51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHIubW9kdWxlc3x8KHIubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Rhc2hib2FyZFRvb2xiYXIudnVlIiksaT9pKGUsdCk6dm9pZCAwfTtleHBvcnR7biBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkVG9vbGJhci1CdEFCWXpLSC5tanMubWFwCg==", "chunks/build/DropdownMenu-CecPceJa.mjs": "aW1wb3J0e2FFIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt2IGFzIHQsZCBhcyBpLGUgYXMgbCxFIGFzIGEsRiBhcyByLHQgYXMgbyxmIGFzIG4sRyBhcyBzLHIgYXMgYyxrIGFzIGQsSSBhcyB1LGIgYXMgbSxnIGFzIHAsSyBhcyBmLEogYXMgZyxhaCBhcyB4LGFpIGFzIGIsYWogYXMgdixhSiBhcyBofWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7RCBhcyB5LGIgYXMgayxjIGFzIHcsXyBhcyBCLGQgYXMgU31mcm9tIi4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0e3UgYXMgSX1mcm9tIi4vdXNlRmlsdGVyLUNsQ1phb2k4Lm1qcyI7aW1wb3J0e18gYXMgQ31mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7ZiBhcyBfLGcgYXMgTyxqIGFzIFYscSBhcyBMLHQgYXMgVCxrIGFzIHp9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBOPXtfX25hbWU6IlVEcm9wZG93bk1lbnVDb250ZW50IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7aXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxzdWI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXh0ZXJuYWxJY29uOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGZpbHRlcjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxmaWx0ZXJGaWVsZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGlnbm9yZUZpbHRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sdWlPdmVycmlkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6c2VhcmNoVGVybSIsImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGwse2VtaXQ6cn0pe2NvbnN0IG89bCx5PXIsaz10LnVzZVNsb3RzKCkse3Q6dyxkaXI6JH09bigpLEs9aSgpLHtmaWx0ZXJHcm91cHM6Rn09SSgpLHE9dC5yZWYoIiIpLFA9dC5jb21wdXRlZCh7Z2V0OigpPT5vLnNlYXJjaFRlcm0/P3EudmFsdWUsc2V0OmU9PntxLnZhbHVlPWUseSgidXBkYXRlOnNlYXJjaFRlcm0iLGUpfX0pLEE9dC50b1JlZigoKT0+ZShvLmZpbHRlcix7cGxhY2Vob2xkZXI6dygiZHJvcGRvd25NZW51LnNlYXJjaCIpLHZhcmlhbnQ6Im5vbmUifSkpLFU9cyh0LnRvUmVmKCgpPT5vLnBvcnRhbCkpLEQ9YShjKG8sInN1YiIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWxLZXkiLCJkZXNjcmlwdGlvbktleSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJzaXplIiwiZmlsdGVyIiwiZmlsdGVyRmllbGRzIiwiaWdub3JlRmlsdGVyIiwic2VhcmNoVGVybSIsImNsYXNzIiwidWkiLCJ1aU92ZXJyaWRlIikseSksZ2V0UHJveHlTbG90cz0oKT0+aChrLFsiZGVmYXVsdCJdKSxbTSxqXT1kKCksRT10LmNvbXB1dGVkKCgpPT4icnRsIj09PSQudmFsdWU/Sy51aS5pY29ucy5jaGV2cm9uTGVmdDpLLnVpLmljb25zLmNoZXZyb25SaWdodCksVz10LmNvbXB1dGVkKCgpPT5vLml0ZW1zPy5sZW5ndGg/dShvLml0ZW1zKT9vLml0ZW1zOltvLml0ZW1zXTpbXSksaXNTdHJ1Y3R1cmFsSXRlbT1lPT4hIWUudHlwZSYmWyJsYWJlbCIsInNlcGFyYXRvciJdLmluY2x1ZGVzKGUudHlwZSksUj10LmNvbXB1dGVkKCgpPT57aWYoIW8uZmlsdGVyfHxvLmlnbm9yZUZpbHRlcnx8IVAudmFsdWUpcmV0dXJuIFcudmFsdWU7Y29uc3QgZT1BcnJheS5pc0FycmF5KG8uZmlsdGVyRmllbGRzKSYmby5maWx0ZXJGaWVsZHMubGVuZ3RoP28uZmlsdGVyRmllbGRzOltvLmxhYmVsS2V5XTtyZXR1cm4gRihXLnZhbHVlLFAudmFsdWUse2ZpZWxkczplLGlzU3RydWN0dXJhbDppc1N0cnVjdHVyYWxJdGVtfSl9KSxHPXQuY29tcHV0ZWQoKCk9PlIudmFsdWUuc29tZShlPT5lLnNvbWUoZT0+IWlzU3RydWN0dXJhbEl0ZW0oZSkpKSk7cmV0dXJuKGUsaSxhLHIpPT57aSgiXHgzYyEtLVstLVx4M2UiKSxpKF8odC51bnJlZihNKSxudWxsLHtkZWZhdWx0OnQud2l0aEN0eCgoe2l0ZW06aSxhY3RpdmU6YSxpbmRleDpyfSxuLHMsYyk9PntpZighbilyZXR1cm5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLGkuc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTpsLnVpfSwoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sZWFkaW5nYDoiaXRlbS1sZWFkaW5nIix7aXRlbTppLGFjdGl2ZTphLGluZGV4OnIsdWk6bC51aX0sKCk9PltpLmxvYWRpbmc/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayhtLHtrZXk6MCxuYW1lOmwubG9hZGluZ0ljb258fHQudW5yZWYoSykudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpsLnVpLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsbG9hZGluZzohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuaWNvbj8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKG0se2tleToxLG5hbWU6aS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmwudWkuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxjb2xvcjppPy5jb2xvcixhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuYXZhdGFyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2socCx0Lm1lcmdlUHJvcHMoe2tleToyLHNpemU6aS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxsLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8bC51aS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0saS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6bC51aS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdBdmF0YXIsaS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTphfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSx0LnVucmVmKGYpKGksby5sYWJlbEtleSl8fGtbaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KXx8a1tpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczpsLnVpLml0ZW1XcmFwcGVyKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtV3JhcHBlcixpLnVpPy5pdGVtV3JhcHBlcl19KX0sW3QuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczpsLnVpLml0ZW1MYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxhYmVsLGkudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOmF9KX0sW3QucmVuZGVyU2xvdChlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksYWN0aXZlOmEsaW5kZXg6cn0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGYpKGksby5sYWJlbEtleSkpLDEpXSksIl9ibGFuayI9PT1pLnRhcmdldCYmITEhPT1sLmV4dGVybmFsSWNvbj8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKG0se2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBsLmV4dGVybmFsSWNvbj9sLmV4dGVybmFsSWNvbjp0LnVucmVmKEspLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOmwudWkuaXRlbUxhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtTGFiZWxFeHRlcm5hbEljb24saS51aT8uaXRlbUxhYmVsRXh0ZXJuYWxJY29uXSxjb2xvcjppPy5jb2xvcixhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksdC51bnJlZihmKShpLG8uZGVzY3JpcHRpb25LZXkpfHxrW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczpsLnVpLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbURlc2NyaXB0aW9uLGkudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW3QucmVuZGVyU2xvdChlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmksYWN0aXZlOmEsaW5kZXg6cn0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGYpKGksby5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOmwudWkuaXRlbVRyYWlsaW5nKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmcsaS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06aSxhY3RpdmU6YSxpbmRleDpyLHVpOmwudWl9LCgpPT5baS5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sobSx7a2V5OjAsbmFtZTpFLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpsLnVpLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmtiZHM/Lmxlbmd0aD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0tiZHMiLGNsYXNzOmwudWkuaXRlbVRyYWlsaW5nS2Jkcyh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nS2JkcyxpLnVpPy5pdGVtVHJhaWxpbmdLYmRzXX0pfSxbKHQub3BlbkJsb2NrKCEwKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQsbnVsbCx0LnJlbmRlckxpc3QoaS5rYmRzLChlLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKEIsdC5tZXJnZVByb3BzKHtrZXk6YSxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIGU/e3ZhbHVlOmV9OmUpLG51bGwsMTYsWyJzaXplIl0pKSksMTI4KSldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSx0LmNyZWF0ZVZOb2RlKHQudW5yZWYoUykuSXRlbUluZGljYXRvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZShtLHtuYW1lOmwuY2hlY2tlZEljb258fHQudW5yZWYoSykudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmwudWkuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXSxjb2xvcjppPy5jb2xvcn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXTtPKGUuJHNsb3RzLGkuc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTpsLnVpfSwoKT0+e08oZS4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06aSxhY3RpdmU6YSxpbmRleDpyLHVpOmwudWl9LCgpPT57aS5sb2FkaW5nP24oXyhtLHtuYW1lOmwubG9hZGluZ0ljb258fHQudW5yZWYoSykudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpsLnVpLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsbG9hZGluZzohMH0pfSxudWxsLHMsYykpOmkuaWNvbj9uKF8obSx7bmFtZTppLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6bC51aS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nSWNvbixpLnVpPy5pdGVtTGVhZGluZ0ljb25dLGNvbG9yOmk/LmNvbG9yLGFjdGl2ZTphfSl9LG51bGwscyxjKSk6aS5hdmF0YXI/bihfKHAsdC5tZXJnZVByb3BzKHtzaXplOmkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8bC51aU92ZXJyaWRlPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGwudWkuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LGkuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmwudWkuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nQXZhdGFyLGkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6YX0pfSksbnVsbCxzLGMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scyxjKSx0LnVucmVmKGYpKGksby5sYWJlbEtleSl8fGtbaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KXx8a1tpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8obihgPHNwYW4gZGF0YS1zbG90PSJpdGVtV3JhcHBlciIgY2xhc3M9IiR7VihsLnVpLml0ZW1XcmFwcGVyKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtV3JhcHBlcixpLnVpPy5pdGVtV3JhcHBlcl19KSl9IiR7Y30+PHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWwiIGNsYXNzPSIke1YobC51aS5pdGVtTGFiZWwoe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1MYWJlbCxpLnVpPy5pdGVtTGFiZWxdLGFjdGl2ZTphfSkpfSIke2N9PmApLE8oZS4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIix7aXRlbTppLGFjdGl2ZTphLGluZGV4OnJ9LCgpPT57bihgJHtMKHQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSl9YCl9LG4scyxjKSwiX2JsYW5rIj09PWkudGFyZ2V0JiYhMSE9PWwuZXh0ZXJuYWxJY29uP24oXyhtLHtuYW1lOiJzdHJpbmciPT10eXBlb2YgbC5leHRlcm5hbEljb24/bC5leHRlcm5hbEljb246dC51bnJlZihLKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpsLnVpLml0ZW1MYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxhYmVsRXh0ZXJuYWxJY29uLGkudWk/Lml0ZW1MYWJlbEV4dGVybmFsSWNvbl0sY29sb3I6aT8uY29sb3IsYWN0aXZlOmF9KX0sbnVsbCxzLGMpKTpuKCJceDNjIS0tLS1ceDNlIiksbigiPC9zcGFuPiIpLHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KXx8a1tpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8obihgPHNwYW4gZGF0YS1zbG90PSJpdGVtRGVzY3JpcHRpb24iIGNsYXNzPSIke1YobC51aS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1EZXNjcmlwdGlvbixpLnVpPy5pdGVtRGVzY3JpcHRpb25dfSkpfSIke2N9PmApLE8oZS4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTppLGFjdGl2ZTphLGluZGV4OnJ9LCgpPT57bihgJHtMKHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KSl9YCl9LG4scyxjKSxuKCI8L3NwYW4+IikpOm4oIlx4M2MhLS0tLVx4M2UiKSxuKCI8L3NwYW4+IikpOm4oIlx4M2MhLS0tLVx4M2UiKSxuKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1UcmFpbGluZyIgY2xhc3M9IiR7VihsLnVpLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nLGkudWk/Lml0ZW1UcmFpbGluZ119KSl9IiR7Y30+YCksTyhlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciLHtpdGVtOmksYWN0aXZlOmEsaW5kZXg6cix1aTpsLnVpfSwoKT0+e2kuY2hpbGRyZW4/Lmxlbmd0aD9uKF8obSx7bmFtZTpFLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpsLnVpLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsYWN0aXZlOmF9KX0sbnVsbCxzLGMpKTppLmtiZHM/Lmxlbmd0aD8obihgPHNwYW4gZGF0YS1zbG90PSJpdGVtVHJhaWxpbmdLYmRzIiBjbGFzcz0iJHtWKGwudWkuaXRlbVRyYWlsaW5nS2Jkcyh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nS2JkcyxpLnVpPy5pdGVtVHJhaWxpbmdLYmRzXX0pKX0iJHtjfT5ceDNjIS0tWy0tXHgzZWApLFQoaS5rYmRzLChlLGEpPT57bihfKEIsdC5tZXJnZVByb3BzKHtrZXk6YSxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIGU/e3ZhbHVlOmV9OmUpLG51bGwscyxjKSl9KSxuKCJceDNjIS0tXS0tXHgzZTwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpfSxuLHMsYyksbihfKHQudW5yZWYoUykuSXRlbUluZGljYXRvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGEscixvKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKG0se25hbWU6bC5jaGVja2VkSWNvbnx8dC51bnJlZihLKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6bC51aS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dLGNvbG9yOmk/LmNvbG9yfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV07YShfKG0se25hbWU6bC5jaGVja2VkSWNvbnx8dC51bnJlZihLKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6bC51aS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dLGNvbG9yOmk/LmNvbG9yfSl9LG51bGwscixvKSl9KSxfOjJ9LHMsYykpLG4oIjwvc3Bhbj4iKX0sbixzLGMpfSksXzozfSxhKSksaShfKHQudW5yZWYoUykuUG9ydGFsLHQudW5yZWYoVSkse2RlZmF1bHQ6dC53aXRoQ3R4KChpLGEscixuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoZyksbnVsbCx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9PlsodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQobC5zdWI/dC51bnJlZihTKS5TdWJDb250ZW50OnQudW5yZWYoUykuQ29udGVudCksdC5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6bC51aS5jb250ZW50KHtjbGFzczpbbC51aU92ZXJyaWRlPy5jb250ZW50LG8uY2xhc3NdfSl9LHQudW5yZWYoRCkpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W2wuZmlsdGVyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5GaWx0ZXIse2tleTowLG1vZGVsVmFsdWU6UC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+UC52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoQyx0Lm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTpsLnNpemV9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6bC51aS5pbnB1dCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5pbnB1dH0pLG9uQ2hhbmdlOnQud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQtdG9wIix7c3ViOmwuc3ViPz8hMX0pLCFQLnZhbHVlfHxHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpsLnVpLnZpZXdwb3J0KHtjbGFzczpsLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdChSLnZhbHVlLChpLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuR3JvdXAse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpsLnVpLmdyb3VwKHtjbGFzczpsLnVpT3ZlcnJpZGU/Lmdyb3VwfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+Wyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGkscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke2F9LSR7cn1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLmF9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxhLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLFAudmFsdWUmJiFHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6bC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKHcpKCJkcm9wZG93bk1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06UC52YWx1ZX0pKSwxKV0pXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpLHQucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudC1ib3R0b20iLHtzdWI6bC5zdWI/PyExfSldKSxfOjN9LDE2LFsiY2xhc3MiXSkpXSksXzozfSldO2EoXyh0LnVucmVmKGcpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KChpLGEscixuKT0+e2lmKCFhKXJldHVyblsodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQobC5zdWI/dC51bnJlZihTKS5TdWJDb250ZW50OnQudW5yZWYoUykuQ29udGVudCksdC5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6bC51aS5jb250ZW50KHtjbGFzczpbbC51aU92ZXJyaWRlPy5jb250ZW50LG8uY2xhc3NdfSl9LHQudW5yZWYoRCkpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W2wuZmlsdGVyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5GaWx0ZXIse2tleTowLG1vZGVsVmFsdWU6UC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+UC52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoQyx0Lm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTpsLnNpemV9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6bC51aS5pbnB1dCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5pbnB1dH0pLG9uQ2hhbmdlOnQud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQtdG9wIix7c3ViOmwuc3ViPz8hMX0pLCFQLnZhbHVlfHxHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpsLnVpLnZpZXdwb3J0KHtjbGFzczpsLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdChSLnZhbHVlLChpLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuR3JvdXAse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpsLnVpLmdyb3VwKHtjbGFzczpsLnVpT3ZlcnJpZGU/Lmdyb3VwfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+Wyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGkscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke2F9LSR7cn1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLmF9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxhLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLFAudmFsdWUmJiFHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6bC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKHcpKCJkcm9wZG93bk1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06UC52YWx1ZX0pKSwxKV0pXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpLHQucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudC1ib3R0b20iLHtzdWI6bC5zdWI/PyExfSldKSxfOjN9LDE2LFsiY2xhc3MiXSkpXTt6KGEsdC5jcmVhdGVWTm9kZSh0LnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGwuc3ViP3QudW5yZWYoUykuU3ViQ29udGVudDp0LnVucmVmKFMpLkNvbnRlbnQpLHQubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOmwudWkuY29udGVudCh7Y2xhc3M6W2wudWlPdmVycmlkZT8uY29udGVudCxvLmNsYXNzXX0pfSx0LnVucmVmKEQpKSx7ZGVmYXVsdDp0LndpdGhDdHgoKGksYSxyLG4pPT57aWYoIWEpcmV0dXJuW2wuZmlsdGVyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5GaWx0ZXIse2tleTowLG1vZGVsVmFsdWU6UC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+UC52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoQyx0Lm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTpsLnNpemV9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6bC51aS5pbnB1dCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5pbnB1dH0pLG9uQ2hhbmdlOnQud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQtdG9wIix7c3ViOmwuc3ViPz8hMX0pLCFQLnZhbHVlfHxHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpsLnVpLnZpZXdwb3J0KHtjbGFzczpsLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdChSLnZhbHVlLChpLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuR3JvdXAse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpsLnVpLmdyb3VwKHtjbGFzczpsLnVpT3ZlcnJpZGU/Lmdyb3VwfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+Wyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGkscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke2F9LSR7cn1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLmF9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxhLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLFAudmFsdWUmJiFHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6bC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKHcpKCJkcm9wZG93bk1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06UC52YWx1ZX0pKSwxKV0pXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpLHQucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudC1ib3R0b20iLHtzdWI6bC5zdWI/PyExfSldO2wuZmlsdGVyP2EoXyh0LnVucmVmKFMpLkZpbHRlcix7bW9kZWxWYWx1ZTpQLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5QLnZhbHVlPWUsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksYSxyKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVZOb2RlKEMsdC5tZXJnZVByb3BzKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6bC5zaXplfSxBLnZhbHVlLHsiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOmwudWkuaW5wdXQoe2NsYXNzOmwudWlPdmVycmlkZT8uaW5wdXR9KSxvbkNoYW5nZTp0LndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV07aShfKEMsdC5tZXJnZVByb3BzKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6bC5zaXplfSxBLnZhbHVlLHsiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOmwudWkuaW5wdXQoe2NsYXNzOmwudWlPdmVycmlkZT8uaW5wdXR9KSxvbkNoYW5nZTooKT0+e319KSxudWxsLGEscikpfSksXzoxfSxyLG4pKTphKCJceDNjIS0tLS1ceDNlIiksTyhlLiRzbG90cywiY29udGVudC10b3AiLHtzdWI6bC5zdWI/PyExfSxudWxsLGEscixuKSwhUC52YWx1ZXx8Ry52YWx1ZT8oYShgPGRpdiByb2xlPSJwcmVzZW50YXRpb24iIGRhdGEtc2xvdD0idmlld3BvcnQiIGNsYXNzPSIke1YobC51aS52aWV3cG9ydCh7Y2xhc3M6bC51aU92ZXJyaWRlPy52aWV3cG9ydH0pKX0iJHtufT5ceDNjIS0tWy0tXHgzZWApLFQoUi52YWx1ZSwoaSxzKT0+e2EoXyh0LnVucmVmKFMpLkdyb3VwLHtrZXk6YGdyb3VwLSR7c31gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6bC51aS5ncm91cCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5ncm91cH0pfSx7ZGVmYXVsdDp0LndpdGhDdHgoKGEscixuLGMpPT57aWYoIXIpcmV0dXJuWyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGksYSk9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke3N9LSR7YX1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLnJ9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxyLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldO3IoIlx4M2MhLS1bLS1ceDNlIiksVChpLChpLGEpPT57cigiXHgzYyEtLVstLVx4M2UiKSwibGFiZWwiPT09aS50eXBlP3IoXyh0LnVucmVmKFMpLkxhYmVsLHsiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmwudWkubGFiZWwoe2NsYXNzOltsLnVpT3ZlcnJpZGU/LmxhYmVsLGkudWk/LmxhYmVsLGkuY2xhc3NdfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxsLHIsbyk9PntpZighbClyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKF8odC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwscixvKSl9KSxfOjJ9LG4sYykpOiJzZXBhcmF0b3IiPT09aS50eXBlP3IoXyh0LnVucmVmKFMpLlNlcGFyYXRvcix7ImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6bC51aS5zZXBhcmF0b3Ioe2NsYXNzOltsLnVpT3ZlcnJpZGU/LnNlcGFyYXRvcixpLnVpPy5zZXBhcmF0b3IsaS5jbGFzc119KX0sbnVsbCxuLGMpKTppPy5jaGlsZHJlbj8ubGVuZ3RoP3IoXyh0LnVucmVmKFMpLlN1Yix7b3BlbjppLm9wZW4sImRlZmF1bHQtb3BlbiI6aS5kZWZhdWx0T3Blbn0se2RlZmF1bHQ6dC53aXRoQ3R4KChyLG4scyxjKT0+e2lmKCFuKXJldHVyblt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoUykuU3ViVHJpZ2dlcix7YXM6ImJ1dHRvbiIsdHlwZToiYnV0dG9uIixkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbImRpc2FibGVkIiwidGV4dC12YWx1ZSIsImNsYXNzIl0pLHQuY3JlYXRlVk5vZGUoTix0Lm1lcmdlUHJvcHMoe3N1YjoiIixjbGFzczppLnVpPy5jb250ZW50LHVpOmwudWksInVpLW92ZXJyaWRlIjpsLnVpT3ZlcnJpZGUscG9ydGFsOmwucG9ydGFsLGl0ZW1zOmkuY2hpbGRyZW4sYWxpZ246InN0YXJ0IiwiYWxpZ24tb2Zmc2V0IjotNCwic2lkZS1vZmZzZXQiOjMsImxhYmVsLWtleSI6bC5sYWJlbEtleSwiZGVzY3JpcHRpb24ta2V5IjpsLmRlc2NyaXB0aW9uS2V5LCJjaGVja2VkLWljb24iOmwuY2hlY2tlZEljb24sImxvYWRpbmctaWNvbiI6bC5sb2FkaW5nSWNvbiwiZXh0ZXJuYWwtaWNvbiI6bC5leHRlcm5hbEljb24sc2l6ZTpsLnNpemUsZmlsdGVyOmkuZmlsdGVyLCJmaWx0ZXItZmllbGRzIjppLmZpbHRlckZpZWxkc3x8bC5maWx0ZXJGaWVsZHMsImlnbm9yZS1maWx0ZXIiOmkuaWdub3JlRmlsdGVyPz9sLmlnbm9yZUZpbHRlcn0se3JlZl9mb3I6ITB9LGkuY29udGVudCksdC5jcmVhdGVTbG90cyh7XzoyfSxbdC5yZW5kZXJMaXN0KGdldFByb3h5U2xvdHMoKSwoaSxsKT0+KHtuYW1lOmwsZm46dC53aXRoQ3R4KGk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsbCx0Lm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGkpKV0pfSkpXSksMTA0MCxbImNsYXNzIiwidWkiLCJ1aS1vdmVycmlkZSIsInBvcnRhbCIsIml0ZW1zIiwibGFiZWwta2V5IiwiZGVzY3JpcHRpb24ta2V5IiwiY2hlY2tlZC1pY29uIiwibG9hZGluZy1pY29uIiwiZXh0ZXJuYWwtaWNvbiIsInNpemUiLCJmaWx0ZXIiLCJmaWx0ZXItZmllbGRzIiwiaWdub3JlLWZpbHRlciJdKV07bihfKHQudW5yZWYoUykuU3ViVHJpZ2dlcix7YXM6ImJ1dHRvbiIsdHlwZToiYnV0dG9uIixkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxsLHIsbyk9PntpZighbClyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKF8odC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwscixvKSl9KSxfOjJ9LHMsYykpLG4oXyhOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoKGksYSxyLG8pPT57aWYoIWEpcmV0dXJuW3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXTtPKGUuJHNsb3RzLGwsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxpKSxudWxsLGEscixvKX0pfSkpXSkscyxjKSl9KSxfOjJ9LG4sYykpOiJjaGVja2JveCI9PT1pLnR5cGU/cihfKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHsibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxsLHIsbyk9PntpZighbClyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKF8odC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwscixvKSl9KSxfOjJ9LG4sYykpOnIoXyh4LHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sdC51bnJlZihiKShpKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6dC53aXRoQ3R4KCh7YWN0aXZlOmUsLi4ucn0sbixzLGMpPT57aWYoIW4pcmV0dXJuW3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxyLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldO24oXyh0LnVucmVmKFMpLkl0ZW0seyJhcy1jaGlsZCI6IiIsZGlzYWJsZWQ6aS5kaXNhYmxlZCwidGV4dC12YWx1ZSI6dC51bnJlZihmKShpLG8ubGFiZWxLZXkpLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgobyxuLHMsYyk9PntpZighbilyZXR1cm5bdC5jcmVhdGVWTm9kZSh2LHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0scix7ImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yLGFjdGl2ZTplfSl9KSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoaikse2l0ZW06aSxhY3RpdmU6ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07bihfKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxyLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgobCxyLG8sbik9PntpZighcilyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksYWN0aXZlOmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXTtyKF8odC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OmF9LG51bGwsbyxuKSl9KSxfOjJ9LHMsYykpfSksXzoyfSxzLGMpKX0pLF86Mn0sbixjKSkscigiXHgzYyEtLV0tLVx4M2UiKX0pLHIoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9LHIsbikpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLFAudmFsdWUmJiFHLnZhbHVlPyhhKGA8ZGl2IGRhdGEtc2xvdD0iZW1wdHkiIGNsYXNzPSIke1YobC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pKX0iJHtufT5gKSxPKGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9PnthKGAke0wodC51bnJlZih3KSgiZHJvcGRvd25NZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOlAudmFsdWV9KSl9YCl9LGEscixuKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLE8oZS4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsYSxyLG4pLE8oZS4kc2xvdHMsImNvbnRlbnQtYm90dG9tIix7c3ViOmwuc3ViPz8hMX0sbnVsbCxhLHIsbil9KSxfOjN9KSxyLG4pfSksXzozfSxyLG4pKX0pLF86M30sYSkpLGkoIlx4M2MhLS1dLS1ceDNlIil9fX0sJD1OLnNldHVwO04uc2V0dXA9KGUsaSk9Pntjb25zdCBsPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ecm9wZG93bk1lbnVDb250ZW50LnZ1ZSIpLCQ/JChlLGkpOnZvaWQgMH07Y29uc3QgSz17c2xvdHM6e2NvbnRlbnQ6Im1pbi13LTMyIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgb3ZlcmZsb3ctaGlkZGVuIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSBvcmlnaW4tKC0tcmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgZmxleCBmbGV4LWNvbCIsaW5wdXQ6ImJvcmRlci1iIGJvcmRlci1kZWZhdWx0IixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsdmlld3BvcnQ6InJlbGF0aXZlIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IHNjcm9sbC1weS0xIG92ZXJmbG93LXktYXV0byBmbGV4LTEiLGFycm93OiJmaWxsLWJnIHN0cm9rZS1kZWZhdWx0Iixncm91cDoicC0xIGlzb2xhdGUiLGxhYmVsOiJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIixzZXBhcmF0b3I6Ii1teC0xIG15LTEgaC1weCBiZy1ib3JkZXIiLGl0ZW06Imdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IixpdGVtTGVhZGluZ0ljb246InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtVHJhaWxpbmc6Im1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtVHJhaWxpbmdLYmRzOiJoaWRkZW4gbGc6aW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNocmluay0wIixpdGVtVHJhaWxpbmdLYmRzU2l6ZToiIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgdGV4dC1zdGFydCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQiLGl0ZW1MYWJlbEV4dGVybmFsSWNvbjoiaW5saW5lLWJsb2NrIHNpemUtMyBhbGlnbi10b3AgdGV4dC1kaW1tZWQifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LGFjdGl2ZTp7dHJ1ZTp7aXRlbToidGV4dC1oaWdobGlnaHRlZCBiZWZvcmU6YmctZWxldmF0ZWQiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1kZWZhdWx0In0sZmFsc2U6e2l0ZW06WyJ0ZXh0LWRlZmF1bHQgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWhpZ2hsaWdodGVkIGRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6YmctZWxldmF0ZWQvNTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLWVsZXZhdGVkLzUwIiwidHJhbnNpdGlvbi1jb2xvcnMgYmVmb3JlOnRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdJY29uOlsidGV4dC1kaW1tZWQgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWRlZmF1bHQgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXX19LGxvYWRpbmc6e3RydWU6e2l0ZW1MZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHNpemU6e3hzOntsYWJlbDoicC0xIHRleHQteHMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixlbXB0eToicC0yIHRleHQteHMiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToic20ifSxzbTp7bGFiZWw6InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC14cyBnYXAtMS41IixlbXB0eToicC0yLjUgdGV4dC14cyIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJzbSJ9LG1kOntsYWJlbDoicC0xLjUgdGV4dC1zbSBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGVtcHR5OiJwLTIuNSB0ZXh0LXNtIixpdGVtTGVhZGluZ0ljb246InNpemUtNSIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6Im1kIn0sbGc6e2xhYmVsOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGVtcHR5OiJwLTMgdGV4dC1zbSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0xIixpdGVtVHJhaWxpbmdLYmRzU2l6ZToibWQifSx4bDp7bGFiZWw6InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGVtcHR5OiJwLTMgdGV4dC1iYXNlIixpdGVtTGVhZGluZ0ljb246InNpemUtNiIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS02IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6ImxnIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLGFjdGl2ZTohMSxjbGFzczp7aXRlbToidGV4dC1wcmltYXJ5IGRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1wcmltYXJ5IGRhdGEtaGlnaGxpZ2h0ZWQ6YmVmb3JlOmJnLXByaW1hcnkvMTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLXByaW1hcnkvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1wcmltYXJ5Lzc1IGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1wcmltYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LXNlY29uZGFyeSBkYXRhLWhpZ2hsaWdodGVkOnRleHQtc2Vjb25kYXJ5IGRhdGEtaGlnaGxpZ2h0ZWQ6YmVmb3JlOmJnLXNlY29uZGFyeS8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6Ymctc2Vjb25kYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5Lzc1IGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1zZWNvbmRhcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zZWNvbmRhcnkifX0se2NvbG9yOiJzdWNjZXNzIixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtc3VjY2VzcyBkYXRhLWhpZ2hsaWdodGVkOnRleHQtc3VjY2VzcyBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1zdWNjZXNzLzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1zdWNjZXNzLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc3VjY2Vzcy83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtc3VjY2VzcyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtaW5mbyBkYXRhLWhpZ2hsaWdodGVkOnRleHQtaW5mbyBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1pbmZvLzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1pbmZvLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtaW5mby83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtaW5mbyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtd2FybmluZyBkYXRhLWhpZ2hsaWdodGVkOnRleHQtd2FybmluZyBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy13YXJuaW5nLzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy13YXJuaW5nLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtd2FybmluZy83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtd2FybmluZyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXdhcm5pbmcifX0se2NvbG9yOiJlcnJvciIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LWVycm9yIGRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1lcnJvciBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1lcnJvci8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctZXJyb3IvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1lcnJvci83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtZXJyb3IgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1lcnJvciJ9fSx7Y29sb3I6InByaW1hcnkiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1wcmltYXJ5IGJlZm9yZTpiZy1wcmltYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LXNlY29uZGFyeSBiZWZvcmU6Ymctc2Vjb25kYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LXN1Y2Nlc3MgYmVmb3JlOmJnLXN1Y2Nlc3MvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LWluZm8gYmVmb3JlOmJnLWluZm8vMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LXdhcm5pbmcgYmVmb3JlOmJnLXdhcm5pbmcvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1lcnJvciBiZWZvcmU6YmctZXJyb3IvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1lcnJvciJ9fV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCJ9fSxGPXtfX25hbWU6IlVEcm9wZG93bk1lbnUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnQubWVyZ2VNb2RlbHMoe3NpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXh0ZXJuYWxJY29uOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9LGRlc2NyaXB0aW9uS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGVzY3JpcHRpb24ifSxmaWx0ZXI6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxmaWx0ZXJGaWVsZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGlnbm9yZUZpbHRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSx7c2VhcmNoVGVybTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2VhcmNoVGVybU1vZGlmaWVyczp7fX0pLGVtaXRzOnQubWVyZ2VNb2RlbHMoWyJ1cGRhdGU6b3BlbiJdLFsidXBkYXRlOnNlYXJjaFRlcm0iXSksc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYz1uLGQ9cyx1PXQudXNlU2xvdHMoKSxtPXQudXNlTW9kZWwobiwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KSxwPWkoKSxmPWwoImRyb3Bkb3duTWVudSIsYyksZz1hKHIoYywiZGVmYXVsdE9wZW4iLCJvcGVuIiwibW9kYWwiKSxkKSx4PXQudG9SZWYoKCk9PmUoYy5jb250ZW50LHtzaWRlOiJib3R0b20iLHNpZGVPZmZzZXQ6OCxjb2xsaXNpb25QYWRkaW5nOjh9KSksYj10LnRvUmVmKCgpPT5lKGMuYXJyb3cse3JvdW5kZWQ6ITB9KSksZ2V0UHJveHlTbG90cz0oKT0+aCh1LFsiZGVmYXVsdCJdKSx2PXQuY29tcHV0ZWQoKCk9Pm8oe2V4dGVuZDpvKEspLC4uLnAudWk/LmRyb3Bkb3duTWVudXx8e319KSh7c2l6ZTpjLnNpemV9KSk7cmV0dXJuKGUsaSxsLGEpPT57aShfKHQudW5yZWYodyksdC5tZXJnZVByb3BzKHQudW5yZWYoZyksYSkse2RlZmF1bHQ6dC53aXRoQ3R4KCh7b3BlbjppfSxsLGEscik9PntpZighbClyZXR1cm5bdS5kZWZhdWx0Pyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZih5KSx7a2V5OjAsImFzLWNoaWxkIjoiIixjbGFzczpjLmNsYXNzLGRpc2FibGVkOm4uZGlzYWJsZWR9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse29wZW46aX0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuY3JlYXRlVk5vZGUoTix0Lm1lcmdlUHJvcHMoeyJzZWFyY2gtdGVybSI6bS52YWx1ZSwib25VcGRhdGU6c2VhcmNoVGVybSI6ZT0+bS52YWx1ZT1lLGNsYXNzOnYudmFsdWUuY29udGVudCh7Y2xhc3M6WyF1LmRlZmF1bHQmJmMuY2xhc3MsdC51bnJlZihmKT8uY29udGVudF19KSx1aTp2LnZhbHVlLCJ1aS1vdmVycmlkZSI6dC51bnJlZihmKX0seC52YWx1ZSx7aXRlbXM6bi5pdGVtcyxwb3J0YWw6bi5wb3J0YWwsImxhYmVsLWtleSI6bi5sYWJlbEtleSwiZGVzY3JpcHRpb24ta2V5IjpuLmRlc2NyaXB0aW9uS2V5LCJjaGVja2VkLWljb24iOm4uY2hlY2tlZEljb24sImxvYWRpbmctaWNvbiI6bi5sb2FkaW5nSWNvbiwiZXh0ZXJuYWwtaWNvbiI6bi5leHRlcm5hbEljb24sc2l6ZTpuLnNpemUsZmlsdGVyOm4uZmlsdGVyLCJmaWx0ZXItZmllbGRzIjpuLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6bi5pZ25vcmVGaWx0ZXJ9KSx0LmNyZWF0ZVNsb3RzKHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W24uYXJyb3c/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKGspLHQubWVyZ2VQcm9wcyh7a2V5OjB9LGIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6di52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZihmKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoyfSxbdC5yZW5kZXJMaXN0KGdldFByb3h5U2xvdHMoKSwoaSxsKT0+KHtuYW1lOmwsZm46dC53aXRoQ3R4KGk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsbCxpKV0pfSkpXSksMTA0MCxbInNlYXJjaC10ZXJtIiwib25VcGRhdGU6c2VhcmNoVGVybSIsImNsYXNzIiwidWkiLCJ1aS1vdmVycmlkZSIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWwta2V5IiwiZGVzY3JpcHRpb24ta2V5IiwiY2hlY2tlZC1pY29uIiwibG9hZGluZy1pY29uIiwiZXh0ZXJuYWwtaWNvbiIsInNpemUiLCJmaWx0ZXIiLCJmaWx0ZXItZmllbGRzIiwiaWdub3JlLWZpbHRlciJdKV07dS5kZWZhdWx0P2woXyh0LnVucmVmKHkpLHsiYXMtY2hpbGQiOiIiLGNsYXNzOmMuY2xhc3MsZGlzYWJsZWQ6bi5kaXNhYmxlZH0se2RlZmF1bHQ6dC53aXRoQ3R4KChsLGEscixvKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOml9KV07TyhlLiRzbG90cywiZGVmYXVsdCIse29wZW46aX0sbnVsbCxhLHIsbyl9KSxfOjJ9LGEscikpOmwoIlx4M2MhLS0tLVx4M2UiKSxsKF8oTix0Lm1lcmdlUHJvcHMoeyJzZWFyY2gtdGVybSI6bS52YWx1ZSwib25VcGRhdGU6c2VhcmNoVGVybSI6ZT0+bS52YWx1ZT1lLGNsYXNzOnYudmFsdWUuY29udGVudCh7Y2xhc3M6WyF1LmRlZmF1bHQmJmMuY2xhc3MsdC51bnJlZihmKT8uY29udGVudF19KSx1aTp2LnZhbHVlLCJ1aS1vdmVycmlkZSI6dC51bnJlZihmKX0seC52YWx1ZSx7aXRlbXM6bi5pdGVtcyxwb3J0YWw6bi5wb3J0YWwsImxhYmVsLWtleSI6bi5sYWJlbEtleSwiZGVzY3JpcHRpb24ta2V5IjpuLmRlc2NyaXB0aW9uS2V5LCJjaGVja2VkLWljb24iOm4uY2hlY2tlZEljb24sImxvYWRpbmctaWNvbiI6bi5sb2FkaW5nSWNvbiwiZXh0ZXJuYWwtaWNvbiI6bi5leHRlcm5hbEljb24sc2l6ZTpuLnNpemUsZmlsdGVyOm4uZmlsdGVyLCJmaWx0ZXItZmllbGRzIjpuLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6bi5pZ25vcmVGaWx0ZXJ9KSx0LmNyZWF0ZVNsb3RzKHtkZWZhdWx0OnQud2l0aEN0eCgoZSxpLGwsYSk9PntpZighaSlyZXR1cm5bbi5hcnJvdz8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoayksdC5tZXJnZVByb3BzKHtrZXk6MH0sYi52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczp2LnZhbHVlLmFycm93KHtjbGFzczp0LnVucmVmKGYpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO24uYXJyb3c/aShfKHQudW5yZWYoayksdC5tZXJnZVByb3BzKGIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6di52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZihmKT8uYXJyb3d9KX0pLG51bGwsbCxhKSk6aSgiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxbdC5yZW5kZXJMaXN0KGdldFByb3h5U2xvdHMoKSwoaSxsKT0+KHtuYW1lOmwsZm46dC53aXRoQ3R4KChpLGEscixvKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsbCxpKV07TyhlLiRzbG90cyxsLGksbnVsbCxhLHIsbyl9KX0pKV0pLGEscikpfSksXzozfSxsKSl9fX0scT1GLnNldHVwO0Yuc2V0dXA9KGUsaSk9Pntjb25zdCBsPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ecm9wZG93bk1lbnUudnVlIikscT9xKGUsaSk6dm9pZCAwfTtleHBvcnR7RiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25NZW51LUNlY1BjZUphLm1qcy5tYXAK", "chunks/build/Form-CeNf1I5q.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHIsdiBhcyB0LHQgYXMgYSxhRSBhcyBuLGFGIGFzIG8sQSBhcyBzLEIgYXMgaSxhRyBhcyB1LGFIIGFzIGwsYUkgYXMgbX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2sgYXMgZCxnIGFzIGN9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjbGFzcyBGb3JtVmFsaWRhdGlvbkV4Y2VwdGlvbiBleHRlbmRzIEVycm9ye2Zvcm1JZDtlcnJvcnM7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigiRm9ybSB2YWxpZGF0aW9uIGV4Y2VwdGlvbiIpLHRoaXMuZm9ybUlkPWUsdGhpcy5lcnJvcnM9cixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxGb3JtVmFsaWRhdGlvbkV4Y2VwdGlvbi5wcm90b3R5cGUpfX1jb25zdCBmPXtiYXNlOiIifSxwPXtfX25hbWU6IlVGb3JtIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7aWQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxzY2hlbWE6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3RhdGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFsaWRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT246e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+WyJpbnB1dCIsImJsdXIiLCJjaGFuZ2UiXX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YWxpZGF0ZU9uSW5wdXREZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LHRyYW5zZm9ybTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiEwfSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9uU3VibWl0Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzdWJtaXQiLCJlcnJvciJdLHNldHVwKHAse2V4cG9zZTp2LGVtaXQ6eX0pe2NvbnN0IGc9cCxoPXksYj1lKCksRT1yKCJmb3JtIixnKSx3PXQuY29tcHV0ZWQoKCk9PmEoe2V4dGVuZDphKGYpLC4uLmIudWk/LmZvcm18fHt9fSkpLEY9Zy5pZD8/dC51c2VJZCgpLHg9dC51c2VUZW1wbGF0ZVJlZigiZm9ybVJlZiIpLFM9bShgZm9ybS0ke0Z9YCkscT0hMD09PWcubmVzdGVkJiZ0LmluamVjdChuLHZvaWQgMCksXz0hMD09PWcubmVzdGVkP3QuaW5qZWN0KG8sdm9pZCAwKTp2b2lkIDAsaj10LmNvbXB1dGVkKCgpPT57cmV0dXJuIF8/LnZhbHVlP2cubmFtZT8oZT1fLnZhbHVlLChyPWcubmFtZSk/ci5zcGxpdCgiLiIpLnJlZHVjZSgoZSxyKT0+ZT8uW3JdLGUpOmUpOl8udmFsdWU6Zy5zdGF0ZTt2YXIgZSxyfSk7dC5wcm92aWRlKG4sUyksdC5wcm92aWRlKG8saik7Y29uc3QgST10LnJlZihuZXcgTWFwKSxSPXQucmVmKFtdKTt0LnByb3ZpZGUocyxSKTtjb25zdCBOPXQucmVmKHt9KTt0LnByb3ZpZGUoaSxOKTtjb25zdCBPPXQucmVhY3RpdmUobmV3IFNldCksQT10LnJlYWN0aXZlKG5ldyBTZXQpLFQ9dC5yZWFjdGl2ZShuZXcgU2V0KTtmdW5jdGlvbiByZXNvbHZlRXJyb3JJZHMoZSl7cmV0dXJuIGUubWFwKGU9Pih7Li4uZSxpZDplPy5uYW1lP04udmFsdWVbZS5uYW1lXT8uaWQ6dm9pZCAwfSkpfWNvbnN0IFY9dC5yZWYobnVsbCk7YXN5bmMgZnVuY3Rpb24gZ2V0RXJyb3JzKCl7bGV0IGU9Zy52YWxpZGF0ZT9hd2FpdCBnLnZhbGlkYXRlKGoudmFsdWUpPz9bXTpbXTtpZihnLnNjaGVtYSl7Y29uc3R7ZXJyb3JzOnIscmVzdWx0OnR9PWF3YWl0IGZ1bmN0aW9uKGUscil7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIn5zdGFuZGFyZCJpbiBlfShyKSlyZXR1cm4gYXN5bmMgZnVuY3Rpb24oZSxyKXtjb25zdCB0PWF3YWl0IHJbIn5zdGFuZGFyZCJdLnZhbGlkYXRlKGUpO3JldHVybiB0Lmlzc3Vlcz97ZXJyb3JzOnQuaXNzdWVzPy5tYXAoZT0+KHtuYW1lOmUucGF0aD8ubWFwKGU9PiJvYmplY3QiPT10eXBlb2YgZT9lLmtleTplKS5qb2luKCIuIil8fCIiLG1lc3NhZ2U6ZS5tZXNzYWdlfSkpfHxbXSxyZXN1bHQ6bnVsbH06e2Vycm9yczpudWxsLHJlc3VsdDp0LnZhbHVlfX0oZSxyKTtpZihmdW5jdGlvbihlKXtyZXR1cm4ic2NoZW1hImluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvZXJjZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnZhbGlkYXRvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUucmVmaW5lcn0ocikpcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKGUscil7Y29uc3RbdCxhXT1yLnZhbGlkYXRlKGUpO3JldHVybiB0P3tlcnJvcnM6dC5mYWlsdXJlcygpLm1hcChlPT4oe21lc3NhZ2U6ZS5tZXNzYWdlLG5hbWU6ZS5wYXRoLmpvaW4oIi4iKX0pKSxyZXN1bHQ6bnVsbH06e2Vycm9yczpudWxsLHJlc3VsdDphfX0oZSxyKTt0aHJvdyBuZXcgRXJyb3IoIkZvcm0gdmFsaWRhdGlvbiBmYWlsZWQ6IFVuc3VwcG9ydGVkIGZvcm0gc2NoZW1hIil9KGoudmFsdWUsZy5zY2hlbWEpO3I/ZT1lLmNvbmNhdChyKTpWLnZhbHVlPXR9cmV0dXJuIHJlc29sdmVFcnJvcklkcyhlKX1hc3luYyBmdW5jdGlvbiBfdmFsaWRhdGUoZT17c2lsZW50OiExLG5lc3RlZDohMSx0cmFuc2Zvcm06ITF9KXtjb25zdCByPWUubmFtZSYmIUFycmF5LmlzQXJyYXkoZS5uYW1lKT9bZS5uYW1lXTplLm5hbWU7bGV0IHQ9W10sYT1bXTtpZighciYmZS5uZXN0ZWQpe2NvbnN0IHI9QXJyYXkuZnJvbShJLnZhbHVlLnZhbHVlcygpKS5tYXAocj0+YXN5bmMgZnVuY3Rpb24oZSxyKXt0cnl7Y29uc3QgdD1hd2FpdCBlLnZhbGlkYXRlKHsuLi5yLHNpbGVudDohMX0pO3JldHVybntuYW1lOmUubmFtZSxvdXRwdXQ6dH19Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgRm9ybVZhbGlkYXRpb25FeGNlcHRpb24pKXRocm93IHI7cmV0dXJue25hbWU6ZS5uYW1lLGVycm9yOnJ9fX0ocixlKSksbj1hd2FpdCBQcm9taXNlLmFsbChyKTthPW4uZmlsdGVyKGU9PmUuZXJyb3IpLmZsYXRNYXAoZT0+ZS5lcnJvci5lcnJvcnMubWFwKHI9PntyZXR1cm4gdD1yLChhPWUubmFtZSkmJnQubmFtZT97Li4udCxuYW1lOmErIi4iK3QubmFtZX06dDt2YXIgdCxhfSkpLHQ9bi5maWx0ZXIoZT0+dm9pZCAwIT09ZS5vdXRwdXQpfWNvbnN0IG49Wy4uLmF3YWl0IGdldEVycm9ycygpLC4uLmFdO2lmKFIudmFsdWU9cj9mdW5jdGlvbihlLHIpe2NvbnN0IHQ9bmV3IFNldChyKSxhPXIubWFwKGU9Pk4udmFsdWU/LltlXT8ucGF0dGVybikuZmlsdGVyKEJvb2xlYW4pLG1hdGNoZXNOYW1lcz1lPT4hIWUubmFtZSYmKCEhdC5oYXMoZS5uYW1lKXx8YS5zb21lKHI9PnIudGVzdChlLm5hbWUpKSksbj1SLnZhbHVlLmZpbHRlcihlPT4hbWF0Y2hlc05hbWVzKGUpKSxvPWUuZmlsdGVyKG1hdGNoZXNOYW1lcyk7cmV0dXJuWy4uLm4sLi4ub119KG4scik6bixSLnZhbHVlPy5sZW5ndGgpe2lmKGUuc2lsZW50KXJldHVybiExO3Rocm93IG5ldyBGb3JtVmFsaWRhdGlvbkV4Y2VwdGlvbihGLFIudmFsdWUpfXJldHVybiBlLnRyYW5zZm9ybT8odC5mb3JFYWNoKGU9PntlLm5hbWU/ZnVuY3Rpb24oZSxyLHQpe2lmKCFyKXJldHVybiBPYmplY3QuYXNzaWduKGUsdCk7aWYoIWUpcmV0dXJuIGU7Y29uc3QgYT1yLnNwbGl0KCIuIik7bGV0IG49ZTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoLTE7ZSsrKXtjb25zdCByPWFbZV07dm9pZCAwIT09bltyXSYmbnVsbCE9PW5bcl18fChlKzE8YS5sZW5ndGgmJiFOdW1iZXIuaXNOYU4oTnVtYmVyKGFbZSsxXSkpP25bcl09W106bltyXT17fSksbj1uW3JdfW5bYVthLmxlbmd0aC0xXV09dH0oVi52YWx1ZSxlLm5hbWUsZS5vdXRwdXQpOk9iamVjdC5hc3NpZ24oVi52YWx1ZSxlLm91dHB1dCl9KSxWLnZhbHVlPz9qLnZhbHVlKTpqLnZhbHVlfWNvbnN0IFc9dC5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIG9uU3VibWl0V3JhcHBlcihlKXtXLnZhbHVlPWcubG9hZGluZ0F1dG8mJiEwO2NvbnN0IHI9ZTt0cnl7ci5kYXRhPWF3YWl0IF92YWxpZGF0ZSh7bmVzdGVkOiEwLHRyYW5zZm9ybTpnLnRyYW5zZm9ybX0pLGF3YWl0KGcub25TdWJtaXQ/LihyKSksTy5jbGVhcigpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEZvcm1WYWxpZGF0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO2NvbnN0IHQ9ey4uLnIsZXJyb3JzOmUuZXJyb3JzfTtoKCJlcnJvciIsdCl9ZmluYWxseXtXLnZhbHVlPSExfX10LnByb3ZpZGUodSx0LnJlYWRvbmx5KFcpKTtjb25zdCBCPXQuY29tcHV0ZWQoKCk9PmcuZGlzYWJsZWR8fFcudmFsdWUpO2Z1bmN0aW9uIGZpbHRlckZvcm1FcnJvcnMoZSxyKXtyZXR1cm4gcj9lLmZpbHRlcihlPT5lPy5uYW1lPy5zdGFydHNXaXRoKHIrIi4iKSkubWFwKGU9PmZ1bmN0aW9uKGUscil7Y29uc3QgdD1yKyIuIixhPWU/Lm5hbWU/LnN0YXJ0c1dpdGgodCk/ZS5uYW1lLnN1YnN0cmluZyh0Lmxlbmd0aCk6ZS5uYW1lO3JldHVybnsuLi5lLG5hbWU6YX19KGUscikpOmV9ZnVuY3Rpb24gZ2V0Rm9ybUVycm9ycyhlKXtyZXR1cm4gZS5hcGkuZ2V0RXJyb3JzKCkubWFwKHI9PmUubmFtZT97Li4ucixuYW1lOmUubmFtZSsiLiIrci5uYW1lfTpyKX1mdW5jdGlvbiBtYXRjaGVzVGFyZ2V0KGUscil7cmV0dXJuIWV8fCFyfHwoZSBpbnN0YW5jZW9mIFJlZ0V4cD9lLnRlc3Qocik6cj09PWV8fCJzdHJpbmciPT10eXBlb2YgZSYmZS5zdGFydHNXaXRoKHIrIi4iKSl9ZnVuY3Rpb24gZ2V0TmVzdGVkVGFyZ2V0KGUscil7cmV0dXJuIWV8fGUgaW5zdGFuY2VvZiBSZWdFeHA/ZTpyIT09ZT8ic3RyaW5nIj09dHlwZW9mIGUmJmUuc3RhcnRzV2l0aChyKyIuIik/ZS5zdWJzdHJpbmcoci5sZW5ndGgrMSk6ZTp2b2lkIDB9ZnVuY3Rpb24gaXNMb2NhbEVycm9yKGUpe3JldHVybiFlLm5hbWV8fCEhTi52YWx1ZVtlLm5hbWVdfXQucHJvdmlkZShsLHQuY29tcHV0ZWQoKCk9Pih7ZGlzYWJsZWQ6Qi52YWx1ZSx2YWxpZGF0ZU9uSW5wdXREZWxheTpnLnZhbGlkYXRlT25JbnB1dERlbGF5fSkpKTtyZXR1cm4gdih7dmFsaWRhdGU6X3ZhbGlkYXRlLGVycm9yczpSLHNldEVycm9ycyhlLHIpe2NvbnN0IHQ9cmVzb2x2ZUVycm9ySWRzKGUuZmlsdGVyKGlzTG9jYWxFcnJvcikpLGE9W107Zm9yKGNvbnN0IHQgb2YgSS52YWx1ZS52YWx1ZXMoKSlpZihtYXRjaGVzVGFyZ2V0KHIsdC5uYW1lKSl7Y29uc3Qgbj1maWx0ZXJGb3JtRXJyb3JzKGUsdC5uYW1lKTt0LmFwaS5zZXRFcnJvcnMobixnZXROZXN0ZWRUYXJnZXQocix0Lm5hbWV8fCIiKSksYS5wdXNoKC4uLmdldEZvcm1FcnJvcnModCkpfWlmKHIpe2NvbnN0IGU9KG49Ui52YWx1ZSxvPXIsbi5maWx0ZXIoZT0+byBpbnN0YW5jZW9mIFJlZ0V4cD8hKGUubmFtZSYmby50ZXN0KGUubmFtZSkpOiFlLm5hbWV8fGUubmFtZSE9PW8pKTtSLnZhbHVlPVsuLi5lLC4uLnQsLi4uYV19ZWxzZSBSLnZhbHVlPVsuLi50LC4uLmFdO3ZhciBuLG99LGFzeW5jIHN1Ym1pdCgpe3gudmFsdWUgaW5zdGFuY2VvZiBIVE1MRm9ybUVsZW1lbnQmJiExPT09eC52YWx1ZS5yZXBvcnRWYWxpZGl0eSgpfHxhd2FpdCBvblN1Ym1pdFdyYXBwZXIobmV3IEV2ZW50KCJzdWJtaXQiKSl9LGdldEVycm9yczplPT5lP1IudmFsdWUuZmlsdGVyKHI9PmUgaW5zdGFuY2VvZiBSZWdFeHA/ci5uYW1lJiZlLnRlc3Qoci5uYW1lKTpyLm5hbWU9PT1lKTpSLnZhbHVlLGNsZWFyKGUpe2NvbnN0IHI9ZT9SLnZhbHVlLmZpbHRlcihyPT5pc0xvY2FsRXJyb3IocikmJihlIGluc3RhbmNlb2YgUmVnRXhwPyEoci5uYW1lJiZlLnRlc3Qoci5uYW1lKSk6ci5uYW1lIT09ZSkpOltdLHQ9W107Zm9yKGNvbnN0IHIgb2YgSS52YWx1ZS52YWx1ZXMoKSltYXRjaGVzVGFyZ2V0KGUsci5uYW1lKSYmci5hcGkuY2xlYXIoKSx0LnB1c2goLi4uZ2V0Rm9ybUVycm9ycyhyKSk7Ui52YWx1ZT1bLi4uciwuLi50XX0sZGlzYWJsZWQ6Qixsb2FkaW5nOlcsZGlydHk6dC5jb21wdXRlZCgoKT0+ISFPLnNpemUpLGRpcnR5RmllbGRzOnQucmVhZG9ubHkoTyksYmx1cnJlZEZpZWxkczp0LnJlYWRvbmx5KFQpLHRvdWNoZWRGaWVsZHM6dC5yZWFkb25seShBKX0pLChlLHIsYSxuKT0+e2Qocix0LmNyZWF0ZVZOb2RlKHQucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodC51bnJlZihxKT8iZGl2IjoiZm9ybSIpLHQubWVyZ2VQcm9wcyh7aWQ6dC51bnJlZihGKSxyZWZfa2V5OiJmb3JtUmVmIixyZWY6eCxjbGFzczp3LnZhbHVlKHtjbGFzczpbdC51bnJlZihFKT8uYmFzZSxnLmNsYXNzXX0pLG9uU3VibWl0Om9uU3VibWl0V3JhcHBlcn0sbikse2RlZmF1bHQ6dC53aXRoQ3R4KChyLGEsbixvKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtlcnJvcnM6Ui52YWx1ZSxsb2FkaW5nOlcudmFsdWV9KV07YyhlLiRzbG90cywiZGVmYXVsdCIse2Vycm9yczpSLnZhbHVlLGxvYWRpbmc6Vy52YWx1ZX0sbnVsbCxhLG4sbyl9KSxfOjN9KSxhKX19fSx2PXAuc2V0dXA7cC5zZXR1cD0oZSxyKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Zvcm0udnVlIiksdj92KGUscik6dm9pZCAwfTtleHBvcnR7cCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9ybS1DZU5mMUk1cS5tanMubWFwCg==", "chunks/build/FormField-CVLIzRLY.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHIsZSBhcyB0LHQgYXMgYSxBIGFzIGwsQiBhcyBvLEMgYXMgaSxEIGFzIHMsUCBhcyBufWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7TCBhcyBkfWZyb20iLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydHtmIGFzIHAsaiBhcyB1LGcgYXMgYyxxIGFzIHYseiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgZj17c2xvdHM6e3Jvb3Q6IiIsd3JhcHBlcjoiIixsYWJlbFdyYXBwZXI6ImZsZXggY29udGVudC1jZW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMSIsbGFiZWw6ImJsb2NrIGZvbnQtbWVkaXVtIHRleHQtZGVmYXVsdCIsY29udGFpbmVyOiJyZWxhdGl2ZSIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQiLGVycm9yOiJtdC0yIHRleHQtZXJyb3IiLGhpbnQ6InRleHQtbXV0ZWQiLGhlbHA6Im10LTIgdGV4dC1tdXRlZCJ9LHZhcmlhbnRzOntzaXplOnt4czp7cm9vdDoidGV4dC14cyJ9LHNtOntyb290OiJ0ZXh0LXhzIn0sbWQ6e3Jvb3Q6InRleHQtc20ifSxsZzp7cm9vdDoidGV4dC1zbSJ9LHhsOntyb290OiJ0ZXh0LWJhc2UifX0scmVxdWlyZWQ6e3RydWU6e2xhYmVsOiJhZnRlcjpjb250ZW50LVsnKiddIGFmdGVyOm1zLTAuNSBhZnRlcjp0ZXh0LWVycm9yIn19LG9yaWVudGF0aW9uOnt2ZXJ0aWNhbDp7Y29udGFpbmVyOiJtdC0xIn0saG9yaXpvbnRhbDp7cm9vdDoiZmxleCBqdXN0aWZ5LWJldHdlZW4gcGxhY2UtaXRlbXMtYmFzZWxpbmUgZ2FwLTIifX19LGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCJ9fSxoPXtfX25hbWU6IlVGb3JtRmllbGQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3JQYXR0ZXJuOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoZWxwOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3I6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0saGludDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZWFnZXJWYWxpZGF0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT25JbnB1dERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoaCl7Y29uc3QgYj1oLCQ9ZS51c2VTbG90cygpLHg9cigpLHk9dCgiZm9ybUZpZWxkIixiKSxnPWUuY29tcHV0ZWQoKCk9PmEoe2V4dGVuZDphKGYpLC4uLngudWk/LmZvcm1GaWVsZHx8e319KSh7c2l6ZTpiLnNpemUscmVxdWlyZWQ6Yi5yZXF1aXJlZCxvcmllbnRhdGlvbjpiLm9yaWVudGF0aW9ufSkpLFM9ZS5pbmplY3QobCxudWxsKSxxPWUuY29tcHV0ZWQoKCk9PmIuZXJyb3J8fFM/LnZhbHVlPy5maW5kKGU9PmUubmFtZT09PWIubmFtZXx8Yi5lcnJvclBhdHRlcm4mJmUubmFtZT8ubWF0Y2goYi5lcnJvclBhdHRlcm4pKT8ubWVzc2FnZSksVj1lLnJlZihlLnVzZUlkKCkpLGs9Vi52YWx1ZSxCPWUuaW5qZWN0KG8sdm9pZCAwKTtyZXR1cm4gZS53YXRjaChWLCgpPT57QiYmYi5uYW1lJiYoQi52YWx1ZVtiLm5hbWVdPXtpZDpWLnZhbHVlLHBhdHRlcm46Yi5lcnJvclBhdHRlcm59KX0se2ltbWVkaWF0ZTohMH0pLGUucHJvdmlkZShpLFYpLGUucHJvdmlkZShzLGUuY29tcHV0ZWQoKCk9Pih7ZXJyb3I6cS52YWx1ZSxuYW1lOmIubmFtZSxzaXplOmIuc2l6ZSxlYWdlclZhbGlkYXRpb246Yi5lYWdlclZhbGlkYXRpb24sdmFsaWRhdGVPbklucHV0RGVsYXk6Yi52YWxpZGF0ZU9uSW5wdXREZWxheSxlcnJvclBhdHRlcm46Yi5lcnJvclBhdHRlcm4saGludDpiLmhpbnQsZGVzY3JpcHRpb246Yi5kZXNjcmlwdGlvbixoZWxwOmIuaGVscCxhcmlhSWQ6a30pKSksKHIsdCxhLGwpPT57dChwKGUudW5yZWYobiksZS5tZXJnZVByb3BzKHthczpoLmFzLCJkYXRhLW9yaWVudGF0aW9uIjpoLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpnLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHkpPy5yb290LGIuY2xhc3NdfSl9LGwpLHtkZWZhdWx0OmUud2l0aEN0eCgodCxhLGwsbyk9PntpZighYSlyZXR1cm5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOmcudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pfSxbaC5sYWJlbHx8JC5sYWJlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWxXcmFwcGVyIixjbGFzczpnLnZhbHVlLmxhYmVsV3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWxXcmFwcGVyfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoZCkse2ZvcjpWLnZhbHVlLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Zy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHIuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmgubGFiZWx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaC5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pLGguaGludHx8JC5oaW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCxpZDpgJHtlLnVucmVmKGspfS1oaW50YCwiZGF0YS1zbG90IjoiaGludCIsY2xhc3M6Zy52YWx1ZS5oaW50KHtjbGFzczplLnVucmVmKHkpPy5oaW50fSl9LFtlLnJlbmRlclNsb3Qoci4kc2xvdHMsImhpbnQiLHtoaW50OmguaGludH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmhpbnQpLDEpXSldLDEwLFsiaWQiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxoLmRlc2NyaXB0aW9ufHwkLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MSxpZDpgJHtlLnVucmVmKGspfS1kZXNjcmlwdGlvbmAsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpnLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pfSxbZS5yZW5kZXJTbG90KHIuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmguZGVzY3JpcHRpb259LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaC5kZXNjcmlwdGlvbiksMSldKV0sMTAsWyJpZCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczpbKGgubGFiZWx8fCEhJC5sYWJlbHx8aC5kZXNjcmlwdGlvbnx8ISEkLmRlc2NyaXB0aW9uKSYmZy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoeSk/LmNvbnRhaW5lcn0pXX0sW2UucmVuZGVyU2xvdChyLiRzbG90cywiZGVmYXVsdCIse2Vycm9yOnEudmFsdWV9KSwhMSE9PWIuZXJyb3ImJigic3RyaW5nIj09dHlwZW9mIHEudmFsdWUmJnEudmFsdWV8fCQuZXJyb3IpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGlkOmAke2UudW5yZWYoayl9LWVycm9yYCwiZGF0YS1zbG90IjoiZXJyb3IiLGNsYXNzOmcudmFsdWUuZXJyb3Ioe2NsYXNzOmUudW5yZWYoeSk/LmVycm9yfSl9LFtlLnJlbmRlclNsb3Qoci4kc2xvdHMsImVycm9yIix7ZXJyb3I6cS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhxLnZhbHVlKSwxKV0pXSwxMCxbImlkIl0pKTpoLmhlbHB8fCQuaGVscD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxpZDpgJHtlLnVucmVmKGspfS1oZWxwYCwiZGF0YS1zbG90IjoiaGVscCIsY2xhc3M6Zy52YWx1ZS5oZWxwKHtjbGFzczplLnVucmVmKHkpPy5oZWxwfSl9LFtlLnJlbmRlclNsb3Qoci4kc2xvdHMsImhlbHAiLHtoZWxwOmguaGVscH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmhlbHApLDEpXSldLDEwLFsiaWQiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildO2EoYDxkaXYgZGF0YS1zbG90PSJ3cmFwcGVyIiBjbGFzcz0iJHt1KGcudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pKX0iJHtvfT5gKSxoLmxhYmVsfHwkLmxhYmVsPyhhKGA8ZGl2IGRhdGEtc2xvdD0ibGFiZWxXcmFwcGVyIiBjbGFzcz0iJHt1KGcudmFsdWUubGFiZWxXcmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy5sYWJlbFdyYXBwZXJ9KSl9IiR7b30+YCksYShwKGUudW5yZWYoZCkse2ZvcjpWLnZhbHVlLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Zy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbCxvKT0+e2lmKCFhKXJldHVybltlLnJlbmRlclNsb3Qoci4kc2xvdHMsImxhYmVsIix7bGFiZWw6aC5sYWJlbH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmxhYmVsKSwxKV0pXTtjKHIuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmgubGFiZWx9LCgpPT57YShgJHt2KGgubGFiZWwpfWApfSxhLGwsbyl9KSxfOjN9LGwsbykpLGguaGludHx8JC5oaW50PyhhKGA8c3BhbiR7bSgiaWQiLGAke2UudW5yZWYoayl9LWhpbnRgKX0gZGF0YS1zbG90PSJoaW50IiBjbGFzcz0iJHt1KGcudmFsdWUuaGludCh7Y2xhc3M6ZS51bnJlZih5KT8uaGludH0pKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJoaW50Iix7aGludDpoLmhpbnR9LCgpPT57YShgJHt2KGguaGludCl9YCl9LGEsbCxvKSxhKCI8L3NwYW4+IikpOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGguZGVzY3JpcHRpb258fCQuZGVzY3JpcHRpb24/KGEoYDxwJHttKCJpZCIsYCR7ZS51bnJlZihrKX0tZGVzY3JpcHRpb25gKX0gZGF0YS1zbG90PSJkZXNjcmlwdGlvbiIgY2xhc3M9IiR7dShnLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmguZGVzY3JpcHRpb259LCgpPT57YShgJHt2KGguZGVzY3JpcHRpb24pfWApfSxhLGwsbyksYSgiPC9wPiIpKTphKCJceDNjIS0tLS1ceDNlIiksYShgPC9kaXY+PGRpdiBjbGFzcz0iJHt1KFsoaC5sYWJlbHx8ISEkLmxhYmVsfHxoLmRlc2NyaXB0aW9ufHwhISQuZGVzY3JpcHRpb24pJiZnLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZih5KT8uY29udGFpbmVyfSldKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJkZWZhdWx0Iix7ZXJyb3I6cS52YWx1ZX0sbnVsbCxhLGwsbyksITEhPT1iLmVycm9yJiYoInN0cmluZyI9PXR5cGVvZiBxLnZhbHVlJiZxLnZhbHVlfHwkLmVycm9yKT8oYShgPGRpdiR7bSgiaWQiLGAke2UudW5yZWYoayl9LWVycm9yYCl9IGRhdGEtc2xvdD0iZXJyb3IiIGNsYXNzPSIke3UoZy52YWx1ZS5lcnJvcih7Y2xhc3M6ZS51bnJlZih5KT8uZXJyb3J9KSl9IiR7b30+YCksYyhyLiRzbG90cywiZXJyb3IiLHtlcnJvcjpxLnZhbHVlfSwoKT0+e2EoYCR7dihxLnZhbHVlKX1gKX0sYSxsLG8pLGEoIjwvZGl2PiIpKTpoLmhlbHB8fCQuaGVscD8oYShgPGRpdiR7bSgiaWQiLGAke2UudW5yZWYoayl9LWhlbHBgKX0gZGF0YS1zbG90PSJoZWxwIiBjbGFzcz0iJHt1KGcudmFsdWUuaGVscCh7Y2xhc3M6ZS51bnJlZih5KT8uaGVscH0pKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJoZWxwIix7aGVscDpoLmhlbHB9LCgpPT57YShgJHt2KGguaGVscCl9YCl9LGEsbCxvKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoIjwvZGl2PiIpfSksXzozfSxhKSl9fX0sYj1oLnNldHVwO2guc2V0dXA9KHIsdCk9Pntjb25zdCBhPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihhLm1vZHVsZXN8fChhLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Gb3JtRmllbGQudnVlIiksYj9iKHIsdCk6dm9pZCAwfTtleHBvcnR7aCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9ybUZpZWxkLUNWTEl6UkxZLm1qcy5tYXAK", "chunks/build/Input-DGyvQQRd.mjs": "aW1wb3J0e3YgYXMgZSxTIGFzIGksZCBhcyBhLGUgYXMgbixIIGFzIGwscSBhcyByLHMgYXMgdCx0IGFzIHMsYiBhcyBvLGcgYXMgdSxQIGFzIGQsUiBhcyBnfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7ZiBhcyBjLG8gYXMgcCxnIGFzIGYsaiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3Qgdj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsYmFzZTpbInctZnVsbCByb3VuZGVkLW1kIGJvcmRlci0wIGFwcGVhcmFuY2Utbm9uZSBwbGFjZWhvbGRlcjp0ZXh0LWRpbW1lZCBmb2N1czpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxlYWRpbmc6ImFic29sdXRlIGluc2V0LXktMCBzdGFydC0wIGZsZXggaXRlbXMtY2VudGVyIixsZWFkaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIGVuZC0wIGZsZXggaXRlbXMtY2VudGVyIix0cmFpbGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6e3Jvb3Q6Imdyb3VwIGhhcy1mb2N1cy12aXNpYmxlOnotWzFdIixiYXNlOiJncm91cC1ub3Qtb25seTpncm91cC1maXJzdDpyb3VuZGVkLWUtbm9uZSBncm91cC1ub3Qtb25seTpncm91cC1sYXN0OnJvdW5kZWQtcy1ub25lIGdyb3VwLW5vdC1sYXN0Omdyb3VwLW5vdC1maXJzdDpyb3VuZGVkLW5vbmUifSx2ZXJ0aWNhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtYi1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC10LW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9fSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQtc20vNCBnYXAtMSIsbGVhZGluZzoicHMtMiIsdHJhaWxpbmc6InBlLTIiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbS80IGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxtZDp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LWJhc2UvNSBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0sbGc6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UvNSBnYXAtMiIsbGVhZGluZzoicHMtMyIsdHJhaWxpbmc6InBlLTMiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02In19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCIsc29mdDoidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZC81MCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1lbGV2YXRlZC81MCIsc3VidGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixnaG9zdDoidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50Iixub25lOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50In0sY29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LGxlYWRpbmc6e3RydWU6IiJ9LHRyYWlsaW5nOnt0cnVlOiIifSxsb2FkaW5nOnt0cnVlOiIifSxoaWdobGlnaHQ6e3RydWU6IiJ9LGZpeGVkOntmYWxzZToiIn0sdHlwZTp7ZmlsZToiZmlsZTptZS0xLjUgZmlsZTpmb250LW1lZGl1bSBmaWxlOnRleHQtbXV0ZWQgZmlsZTpvdXRsaW5lLW5vbmUifX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIn19LGI9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVSW5wdXQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidGV4dCJ9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9jb21wbGV0ZTp7dHlwZTpbU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDoib2ZmIn0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1c0RlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmaXhlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImJsdXIiLCJjaGFuZ2UiXSxzZXR1cChiLHtleHBvc2U6aCxlbWl0Onl9KXtjb25zdCB4PWIsej15LEk9ZS51c2VTbG90cygpLHE9aSh4LCJtb2RlbFZhbHVlIix6LHtkZWZhdWx0VmFsdWU6eC5kZWZhdWx0VmFsdWV9KSxCPWEoKSxTPW4oImlucHV0Iix4KSx7ZW1pdEZvcm1CbHVyOmssZW1pdEZvcm1JbnB1dDpBLGVtaXRGb3JtQ2hhbmdlOlYsc2l6ZTokLGNvbG9yOl8saWQ6QyxuYW1lOncsaGlnaGxpZ2h0Ok0sZGlzYWJsZWQ6TixlbWl0Rm9ybUZvY3VzOlIsYXJpYUF0dHJzOmp9PWwoeCx7ZGVmZXJJbnB1dFZhbGlkYXRpb246ITB9KSx7b3JpZW50YXRpb246RixzaXplOlB9PXIoeCkse2lzTGVhZGluZzpPLGlzVHJhaWxpbmc6RyxsZWFkaW5nSWNvbk5hbWU6VCx0cmFpbGluZ0ljb25OYW1lOkR9PXQoeCksSD1lLmNvbXB1dGVkKCgpPT5QLnZhbHVlfHwkLnZhbHVlKSxMPWUuY29tcHV0ZWQoKCk9PnMoe2V4dGVuZDpzKHYpLC4uLkIudWk/LmlucHV0fHx7fX0pKHt0eXBlOngudHlwZSxjb2xvcjpfLnZhbHVlLHZhcmlhbnQ6eC52YXJpYW50LHNpemU6SD8udmFsdWUsbG9hZGluZzp4LmxvYWRpbmcsaGlnaGxpZ2h0Ok0udmFsdWUsZml4ZWQ6eC5maXhlZCxsZWFkaW5nOk8udmFsdWV8fCEheC5hdmF0YXJ8fCEhSS5sZWFkaW5nLHRyYWlsaW5nOkcudmFsdWV8fCEhSS50cmFpbGluZyxmaWVsZEdyb3VwOkYudmFsdWV9KSksVT1lLnVzZVRlbXBsYXRlUmVmKCJpbnB1dFJlZiIpO2Z1bmN0aW9uIHVwZGF0ZUlucHV0KGUpeyF4Lm1vZGVsTW9kaWZpZXJzPy50cmltfHwic3RyaW5nIiE9dHlwZW9mIGUmJm51bGwhPWV8fChlPWU/LnRyaW0oKT8/bnVsbCksKHgubW9kZWxNb2RpZmllcnM/Lm51bWJlcnx8Im51bWJlciI9PT14LnR5cGUpJiYoZT1nKGUpKSx4Lm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmKGV8fD1udWxsKSx4Lm1vZGVsTW9kaWZpZXJzPy5vcHRpb25hbCYmIXgubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiZudWxsIT09ZSYmKGV8fD12b2lkIDApLHEudmFsdWU9ZSxBKCl9ZnVuY3Rpb24gb25JbnB1dChlKXt4Lm1vZGVsTW9kaWZpZXJzPy5sYXp5fHx1cGRhdGVJbnB1dChlLnRhcmdldC52YWx1ZSl9ZnVuY3Rpb24gb25DaGFuZ2UoZSl7Y29uc3QgaT1lLnRhcmdldC52YWx1ZTt4Lm1vZGVsTW9kaWZpZXJzPy5sYXp5JiZ1cGRhdGVJbnB1dChpKSx4Lm1vZGVsTW9kaWZpZXJzPy50cmltJiYoZS50YXJnZXQudmFsdWU9aS50cmltKCkpLFYoKSx6KCJjaGFuZ2UiLGUpfWZ1bmN0aW9uIG9uQmx1cihlKXtrKCkseigiYmx1ciIsZSl9cmV0dXJuIGgoe2lucHV0UmVmOlV9KSwoaSxhLG4sbCk9PnthKGMoZS51bnJlZihkKSxlLm1lcmdlUHJvcHMoe2FzOmIuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOkwudmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoUyk/LnJvb3QseC5jbGFzc119KX0sbCkse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLG4sbCxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKCJpbnB1dCIsZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKEMpLHJlZl9rZXk6ImlucHV0UmVmIixyZWY6VSx0eXBlOmIudHlwZSx2YWx1ZTplLnVucmVmKHEpLG5hbWU6ZS51bnJlZih3KSxwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpMLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmJhc2V9KSxkaXNhYmxlZDplLnVucmVmKE4pLHJlcXVpcmVkOmIucmVxdWlyZWQsYXV0b2NvbXBsZXRlOmIuYXV0b2NvbXBsZXRlfSx7Li4uaS4kYXR0cnMsLi4uZS51bnJlZihqKX0se29uSW5wdXQ6b25JbnB1dCxvbkJsdXI6b25CbHVyLG9uQ2hhbmdlOm9uQ2hhbmdlLG9uRm9jdXM6ZS51bnJlZihSKX0pLG51bGwsMTYsWyJpZCIsInR5cGUiLCJ2YWx1ZSIsIm5hbWUiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJhdXRvY29tcGxldGUiLCJvbkZvY3VzIl0pLGUucmVuZGVyU2xvdChpLiRzbG90cywiZGVmYXVsdCIse3VpOkwudmFsdWV9KSxlLnVucmVmKE8pfHxiLmF2YXRhcnx8SS5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6TC52YWx1ZS5sZWFkaW5nKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nfSl9LFtlLnJlbmRlclNsb3QoaS4kc2xvdHMsImxlYWRpbmciLHt1aTpMLnZhbHVlfSwoKT0+W2UudW5yZWYoTykmJmUudW5yZWYoVCk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhvLHtrZXk6MCxuYW1lOmUudW5yZWYoVCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpMLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmIuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodSxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6ZS51bnJlZihTKT8ubGVhZGluZ0F2YXRhclNpemV8fEwudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sYi5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpMLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoUyk/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUudW5yZWYoRyl8fEkudHJhaWxpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6TC52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihTKT8udHJhaWxpbmd9KX0sW2UucmVuZGVyU2xvdChpLiRzbG90cywidHJhaWxpbmciLHt1aTpMLnZhbHVlfSwoKT0+W2UudW5yZWYoRCk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhvLHtrZXk6MCxuYW1lOmUudW5yZWYoRCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6TC52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOmUudW5yZWYoUyk/LnRyYWlsaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtuKGA8aW5wdXQke3AoZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKEMpLHJlZl9rZXk6ImlucHV0UmVmIixyZWY6VSx0eXBlOmIudHlwZSx2YWx1ZTplLnVucmVmKHEpLG5hbWU6ZS51bnJlZih3KSxwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpMLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmJhc2V9KSxkaXNhYmxlZDplLnVucmVmKE4pLHJlcXVpcmVkOmIucmVxdWlyZWQsYXV0b2NvbXBsZXRlOmIuYXV0b2NvbXBsZXRlfSx7Li4uaS4kYXR0cnMsLi4uZS51bnJlZihqKX0pKX0ke3J9PmApLGYoaS4kc2xvdHMsImRlZmF1bHQiLHt1aTpMLnZhbHVlfSxudWxsLG4sbCxyKSxlLnVucmVmKE8pfHxiLmF2YXRhcnx8SS5sZWFkaW5nPyhuKGA8c3BhbiBkYXRhLXNsb3Q9ImxlYWRpbmciIGNsYXNzPSIke20oTC52YWx1ZS5sZWFkaW5nKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nfSkpfSIke3J9PmApLGYoaS4kc2xvdHMsImxlYWRpbmciLHt1aTpMLnZhbHVlfSwoKT0+e2UudW5yZWYoTykmJmUudW5yZWYoVCk/bihjKG8se25hbWU6ZS51bnJlZihUKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOkwudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoUyk/LmxlYWRpbmdJY29ufSl9LG51bGwsbCxyKSk6Yi5hdmF0YXI/bihjKHUsZS5tZXJnZVByb3BzKHtzaXplOmUudW5yZWYoUyk/LmxlYWRpbmdBdmF0YXJTaXplfHxMLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LGIuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6TC52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nQXZhdGFyfSl9KSxudWxsLGwscikpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixsLHIpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpLGUudW5yZWYoRyl8fEkudHJhaWxpbmc/KG4oYDxzcGFuIGRhdGEtc2xvdD0idHJhaWxpbmciIGNsYXNzPSIke20oTC52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihTKT8udHJhaWxpbmd9KSl9IiR7cn0+YCksZihpLiRzbG90cywidHJhaWxpbmciLHt1aTpMLnZhbHVlfSwoKT0+e2UudW5yZWYoRCk/bihjKG8se25hbWU6ZS51bnJlZihEKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczpMLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihTKT8udHJhaWxpbmdJY29ufSl9LG51bGwsbCxyKSk6bigiXHgzYyEtLS0tXHgzZSIpfSxuLGwsciksbigiPC9zcGFuPiIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LG4pKX19fSksaD1iLnNldHVwO2Iuc2V0dXA9KGksYSk9Pntjb25zdCBuPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9JbnB1dC52dWUiKSxoP2goaSxhKTp2b2lkIDB9O2V4cG9ydHtiIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1JbnB1dC1ER3l2UVFSZC5tanMubWFwCg==", "chunks/build/Kbd-AWGJveXK.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHQsdiBhcyByLHQgYXMgbyxQIGFzIG4sYWEgYXMgYSxNIGFzIGksRSBhcyB1LFEgYXMgbCxUIGFzIGQsUyBhcyBzLG0gYXMgcCxsIGFzIGMsYW4gYXMgZixhMSBhcyB5LGFvIGFzIGcsciBhcyB2LGFwIGFzIG0sYXEgYXMgaCxhciBhcyBxLE4gYXMgQixYIGFzIGJ9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHthIGFzIHcsUCBhcyBDLGIgYXMgayxkIGFzIHgsYyBhcyBTLHUgYXMgUCxlIGFzIF99ZnJvbSIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0e3UgYXMgTyxELGEgYXMgRixiIGFzIEEsRiBhcyBOLGcgYXMgUixTIGFzIE0sYyBhcyBFLGkgYXMgSSxkIGFzIFQsZSBhcyBWLGggYXMgJCxqIGFzIEssayBhcyB6LEwsZiBhcyBVLEkgYXMgR31mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7dSBhcyBqfWZyb20iLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnR7UiBhcyBXfWZyb20iLi9Sb3ZpbmdGb2N1c0dyb3VwLUJyYXFDWEhfLm1qcyI7aW1wb3J0e2YgYXMgSCxnIGFzIFgscSBhcyBZfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgUT1bIklOUFVUIiwiVEVYVEFSRUEiXTtmdW5jdGlvbiB1c2VBcnJvd05hdmlnYXRpb24oZSx0LHIsbz17fSl7aWYoIXR8fG8uZW5hYmxlSWdub3JlZEVsZW1lbnQmJlEuaW5jbHVkZXModC5ub2RlTmFtZSkpcmV0dXJuIG51bGw7Y29uc3R7YXJyb3dLZXlPcHRpb25zOm49ImJvdGgiLGF0dHJpYnV0ZU5hbWU6YT0iW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dIixpdGVtc0FycmF5Omk9W10sbG9vcDp1PSEwLGRpcjpsPSJsdHIiLHByZXZlbnRTY3JvbGw6ZD0hMCxmb2N1czpzPSExfT1vLFtwLGMsZix5LGcsdl09WyJBcnJvd1JpZ2h0Ij09PWUua2V5LCJBcnJvd0xlZnQiPT09ZS5rZXksIkFycm93VXAiPT09ZS5rZXksIkFycm93RG93biI9PT1lLmtleSwiSG9tZSI9PT1lLmtleSwiRW5kIj09PWUua2V5XSxtPWZ8fHksaD1wfHxjO2lmKCFnJiYhdiYmKCFtJiYhaHx8InZlcnRpY2FsIj09PW4mJmh8fCJob3Jpem9udGFsIj09PW4mJm0pKXJldHVybiBudWxsO2NvbnN0IHE9cj9BcnJheS5mcm9tKHIucXVlcnlTZWxlY3RvckFsbChhKSk6aTtpZighcS5sZW5ndGgpcmV0dXJuIG51bGw7ZCYmZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBCPW51bGw7aWYoaHx8bSl7Qj1maW5kTmV4dEZvY3VzYWJsZUVsZW1lbnQocSx0LHtnb0ZvcndhcmQ6bT95OiJsdHIiPT09bD9wOmMsbG9vcDp1fSl9ZWxzZSBnP0I9cS5hdCgwKXx8bnVsbDp2JiYoQj1xLmF0KC0xKXx8bnVsbCk7cmV0dXJuIHMmJkI/LmZvY3VzKCksQn1mdW5jdGlvbiBmaW5kTmV4dEZvY3VzYWJsZUVsZW1lbnQoZSx0LHIsbz0oZS5pbmNsdWRlcyh0KT9lLmxlbmd0aDplLmxlbmd0aCsxKSl7aWYoMD09PS0tbylyZXR1cm4gbnVsbDtjb25zdCBuPWUuaW5kZXhPZih0KTtsZXQgYTtpZihhPS0xPT09bj9yLmdvRm9yd2FyZD8wOmUubGVuZ3RoLTE6ci5nb0ZvcndhcmQ/bisxOm4tMSwhci5sb29wJiYoYTwwfHxhPj1lLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgaT1lWyhhK2UubGVuZ3RoKSVlLmxlbmd0aF07aWYoIWkpcmV0dXJuIG51bGw7cmV0dXJuIGkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpJiYiZmFsc2UiIT09aS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik/ZmluZE5leHRGb2N1c2FibGVFbGVtZW50KGUsaSxyLG8pOml9ZnVuY3Rpb24gdXNlR3JhY2VBcmVhKGUsdCl7Y29uc3Qgbz15KCExLDMwMCk7ZygoKT0+e28udmFsdWU9ITF9KTtjb25zdCBuPXIucmVmKG51bGwpLGE9bSgpO2Z1bmN0aW9uIGhhbmRsZVJlbW92ZUdyYWNlQXJlYSgpe24udmFsdWU9bnVsbCxvLnZhbHVlPSExfWZ1bmN0aW9uIGhhbmRsZUNyZWF0ZUdyYWNlQXJlYShlLHQpe2lmKCF0KXJldHVybjtjb25zdCByPWUuY3VycmVudFRhcmdldCxhPXt4OmUuY2xpZW50WCx5OmUuY2xpZW50WX0saT1mdW5jdGlvbihlLHQscj01KXtjb25zdCBvPVtdO3N3aXRjaCh0KXtjYXNlInRvcCI6by5wdXNoKHt4OmUueC1yLHk6ZS55K3J9LHt4OmUueCtyLHk6ZS55K3J9KTticmVhaztjYXNlImJvdHRvbSI6by5wdXNoKHt4OmUueC1yLHk6ZS55LXJ9LHt4OmUueCtyLHk6ZS55LXJ9KTticmVhaztjYXNlImxlZnQiOm8ucHVzaCh7eDplLngrcix5OmUueS1yfSx7eDplLngrcix5OmUueStyfSk7YnJlYWs7Y2FzZSJyaWdodCI6by5wdXNoKHt4OmUueC1yLHk6ZS55LXJ9LHt4OmUueC1yLHk6ZS55K3J9KX1yZXR1cm4gb30oYSxmdW5jdGlvbihlLHQpe2NvbnN0IHI9TWF0aC5hYnModC50b3AtZS55KSxvPU1hdGguYWJzKHQuYm90dG9tLWUueSksbj1NYXRoLmFicyh0LnJpZ2h0LWUueCksYT1NYXRoLmFicyh0LmxlZnQtZS54KTtzd2l0Y2goTWF0aC5taW4ocixvLG4sYSkpe2Nhc2UgYTpyZXR1cm4ibGVmdCI7Y2FzZSBuOnJldHVybiJyaWdodCI7Y2FzZSByOnJldHVybiJ0b3AiO2Nhc2UgbzpyZXR1cm4iYm90dG9tIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19KGEsci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksMSksdT1mdW5jdGlvbihlKXtjb25zdCB0PWUuc2xpY2UoKTtyZXR1cm4gdC5zb3J0KChlLHQpPT5lLng8dC54Py0xOmUueD50Lng/MTplLnk8dC55Py0xOmUueT50Lnk/MTowKSxmdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5zbGljZSgpO2NvbnN0IHQ9W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG89ZVtyXTtmb3IoO3QubGVuZ3RoPj0yOyl7Y29uc3QgZT10LmF0KC0xKSxyPXRbdC5sZW5ndGgtMl07aWYoISgoZS54LXIueCkqKG8ueS1yLnkpPj0oZS55LXIueSkqKG8ueC1yLngpKSlicmVhazt0LnBvcCgpfXQucHVzaChvKX10LnBvcCgpO2NvbnN0IHI9W107Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IG89ZVt0XTtmb3IoO3IubGVuZ3RoPj0yOyl7Y29uc3QgZT1yLmF0KC0xKSx0PXJbci5sZW5ndGgtMl07aWYoISgoZS54LXQueCkqKG8ueS10LnkpPj0oZS55LXQueSkqKG8ueC10LngpKSlicmVhaztyLnBvcCgpfXIucHVzaChvKX1yZXR1cm4gci5wb3AoKSwxPT09dC5sZW5ndGgmJjE9PT1yLmxlbmd0aCYmdFswXS54PT09clswXS54JiZ0WzBdLnk9PT1yWzBdLnk/dDp0LmNvbmNhdChyKX0odCl9KFsuLi5pLC4uLmZ1bmN0aW9uKGUpe2NvbnN0e3RvcDp0LHJpZ2h0OnIsYm90dG9tOm8sbGVmdDpufT1lO3JldHVyblt7eDpuLHk6dH0se3g6cix5OnR9LHt4OnIseTpvfSx7eDpuLHk6b31dfSh0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKV0pO24udmFsdWU9dSxvLnZhbHVlPSEwfXJldHVybiByLndhdGNoRWZmZWN0KHI9PntpZihlLnZhbHVlJiZ0LnZhbHVlKXtjb25zdCBoYW5kbGVUcmlnZ2VyTGVhdmU9ZT0+aGFuZGxlQ3JlYXRlR3JhY2VBcmVhKGUsdC52YWx1ZSksaGFuZGxlQ29udGVudExlYXZlPXQ9PmhhbmRsZUNyZWF0ZUdyYWNlQXJlYSh0LGUudmFsdWUpO2UudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVUcmlnZ2VyTGVhdmUpLHQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVDb250ZW50TGVhdmUpLHIoKCk9PntlLnZhbHVlPy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLGhhbmRsZVRyaWdnZXJMZWF2ZSksdC52YWx1ZT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVDb250ZW50TGVhdmUpfSl9fSksci53YXRjaEVmZmVjdChyPT57aWYobi52YWx1ZSl7Y29uc3QgaGFuZGxlVHJhY2tQb2ludGVyR3JhY2U9cj0+e2lmKCEobi52YWx1ZSYmci50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSlyZXR1cm47Y29uc3Qgbz1yLnRhcmdldCxpPXt4OnIuY2xpZW50WCx5OnIuY2xpZW50WX0sdT1lLnZhbHVlPy5jb250YWlucyhvKXx8dC52YWx1ZT8uY29udGFpbnMobyksbD0hZnVuY3Rpb24oZSx0KXtjb25zdHt4OnIseTpvfT1lO2xldCBuPSExO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGgtMTtlPHQubGVuZ3RoO2E9ZSsrKXtjb25zdCBpPXRbZV0ueCx1PXRbZV0ueSxsPXRbYV0ueCxkPXRbYV0ueTt1Pm8hPWQ+byYmcjwobC1pKSooby11KS8oZC11KStpJiYobj0hbil9cmV0dXJuIG59KGksbi52YWx1ZSksZD0hIW8uY2xvc2VzdCgiW2RhdGEtZ3JhY2UtYXJlYS10cmlnZ2VyXSIpO3U/aGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk6KGx8fGQpJiYoaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCksYS50cmlnZ2VyKCkpfTtlLnZhbHVlPy5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSkscigoKT0+ZS52YWx1ZT8ub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlVHJhY2tQb2ludGVyR3JhY2UpKX19KSx7aXNQb2ludGVySW5UcmFuc2l0Om8sb25Qb2ludGVyRXhpdDphLm9ufX12YXIgSj1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51QW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKEMpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFo9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudUFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKHcpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0IGVlPWEoZnVuY3Rpb24oKXtyZXR1cm4gci5yZWYoITEpfSksW3RlLHJlXT1wKFsiTWVudVJvb3QiLCJNZW51U3ViIl0sIk1lbnVDb250ZXh0IiksW29lLG5lXT1wKCJNZW51Um9vdCIpO3ZhciBhZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51Um9vdCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCx7bW9kYWw6YSxkaXI6aX09ci50b1JlZnMobyksdT1qKGkpLGw9cyhvLCJvcGVuIixuKSxkPXIucmVmKCkscD1lZSgpO3JldHVybiByZSh7b3BlbjpsLG9uT3BlbkNoYW5nZTplPT57bC52YWx1ZT1lfSxjb250ZW50OmQsb25Db250ZW50Q2hhbmdlOmU9PntkLnZhbHVlPWV9fSksbmUoe29uQ2xvc2U6KCk9PntsLnZhbHVlPSExfSxpc1VzaW5nS2V5Ym9hcmRSZWY6cCxkaXI6dSxtb2RhbDphfSksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihrKSxudWxsLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpfX0pO2NvbnN0W2llLHVlXT1wKCJNZW51Q29udGVudCIpO3ZhciBsZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51Q29udGVudEltcGwiLHByb3BzOnIubWVyZ2VEZWZhdWx0cyh7bG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uX30pLGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImVudHJ5Rm9jdXMiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiLCJkaXNtaXNzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCxhPXRlKCksdT1vZSgpLHt0cmFwRm9jdXM6bCxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6ZCxsb29wOnN9PXIudG9SZWZzKG8pO1MoKSxGKGQudmFsdWUpO2NvbnN0IHA9ci5yZWYoIiIpLGM9ci5yZWYoMCksZj1yLnJlZigwKSx5PXIucmVmKG51bGwpLGc9ci5yZWYoInJpZ2h0Iiksdj1yLnJlZigwKSxtPXIucmVmKG51bGwpLGg9ci5yZWYoKSx7Zm9yd2FyZFJlZjpxLGN1cnJlbnRFbGVtZW50OkJ9PWkoKSx7aGFuZGxlVHlwZWFoZWFkU2VhcmNoOnd9PVAoKSxDPXIucmVmKCk7Y29uc3Qgaz1yLnJlZigpLF89ci5yZWYoKTtmdW5jdGlvbiBpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZSl7cmV0dXJuIGcudmFsdWU9PT15LnZhbHVlPy5zaWRlJiZLKGUseS52YWx1ZT8uYXJlYSl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlTW91bnRBdXRvRm9jdXMoZSl7bigib3BlbkF1dG9Gb2N1cyIsZSksZS5kZWZhdWx0UHJldmVudGVkfHwoZS5wcmV2ZW50RGVmYXVsdCgpLEIudmFsdWU/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpfWZ1bmN0aW9uIGhhbmRsZUtleURvd24oZSl7aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB0PWUudGFyZ2V0LHI9dC5jbG9zZXN0KCJbZGF0YS1yZWthLW1lbnUtY29udGVudF0iKT09PWUuY3VycmVudFRhcmdldCxvPVsiaW5wdXQiLCJ0ZXh0YXJlYSJdLmluY2x1ZGVzKHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSxuPWUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0YUtleSxhPTE9PT1lLmtleS5sZW5ndGgsaT11c2VBcnJvd05hdmlnYXRpb24oZSxiKCksQi52YWx1ZSx7bG9vcDpzLnZhbHVlLGFycm93S2V5T3B0aW9uczoidmVydGljYWwiLGRpcjp1Py5kaXIudmFsdWUsZm9jdXM6ITAsYXR0cmlidXRlTmFtZToiW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dOm5vdChbZGF0YS1kaXNhYmxlZF0pIn0pO2lmKGkpcmV0dXJuIGk/LmZvY3VzKCk7aWYoIlNwYWNlIj09PWUuY29kZSlyZXR1cm47Y29uc3QgbD1oLnZhbHVlPy5nZXRJdGVtcygpPz9bXTtpZihyJiYoIlRhYiI9PT1lLmtleSYmZS5wcmV2ZW50RGVmYXVsdCgpLG58fCFhfHxvfHx3KGUua2V5LGwpKSxlLnRhcmdldCE9PUIudmFsdWUpcmV0dXJuO2lmKCF6LmluY2x1ZGVzKGUua2V5KSlyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGQ9Wy4uLmwubWFwKGU9PmUucmVmKV07TC5pbmNsdWRlcyhlLmtleSkmJmQucmV2ZXJzZSgpLFUoZCl9ZnVuY3Rpb24gaGFuZGxlQmx1cihlKXtlPy5jdXJyZW50VGFyZ2V0Py5jb250YWlucz8uKGUudGFyZ2V0KXx8KCh2b2lkIDApLmNsZWFyVGltZW91dChjLnZhbHVlKSxwLnZhbHVlPSIiKX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyTW92ZShlKXtpZighJChlKSlyZXR1cm47Y29uc3QgdD1lLnRhcmdldCxyPXYudmFsdWUhPT1lLmNsaWVudFg7aWYoZT8uY3VycmVudFRhcmdldD8uY29udGFpbnModCkmJnIpe2NvbnN0IHQ9ZS5jbGllbnRYPnYudmFsdWU/InJpZ2h0IjoibGVmdCI7Zy52YWx1ZT10LHYudmFsdWU9ZS5jbGllbnRYfX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyRW50ZXIoZSl7JChlKSYmay52YWx1ZSYmay52YWx1ZS5mb2N1cygpfXJldHVybiByLndhdGNoKEMsZT0+eyFfLnZhbHVlfHx2b2lkIDAhPT1lJiZlPT09Xy52YWx1ZS50cmlnZ2VyLnZhbHVlfHwoXy52YWx1ZS5vbk9wZW5DaGFuZ2UoITEpLF8udmFsdWU9dm9pZCAwKX0pLHIud2F0Y2goQixlPT57YS5vbkNvbnRlbnRDaGFuZ2UoZSl9KSx1ZSh7b25JdGVtRW50ZXI6ZT0+ISFpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZSksb25JdGVtTGVhdmU6ZT0+e2lmKGlzUG9pbnRlck1vdmluZ1RvU3VibWVudShlKSlyZXR1cm47WyJJTlBVVCIsIlRFWFRBUkVBIl0uaW5jbHVkZXMoYigpPy50YWdOYW1lfHwiIil8fEIudmFsdWU/LmZvY3VzKCksbS52YWx1ZT1udWxsfSxvblRyaWdnZXJMZWF2ZTplPT4hIWlzUG9pbnRlck1vdmluZ1RvU3VibWVudShlKSxzZWFyY2hSZWY6cCxoaWdobGlnaHRlZEVsZW1lbnQ6QyxvbktleWRvd25OYXZpZ2F0aW9uOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dXNlQXJyb3dOYXZpZ2F0aW9uKGUsQy52YWx1ZXx8YigpLEIudmFsdWUse2xvb3A6cy52YWx1ZSxhcnJvd0tleU9wdGlvbnM6InZlcnRpY2FsIixkaXI6dT8uZGlyLnZhbHVlLGZvY3VzOiExLGF0dHJpYnV0ZU5hbWU6IltkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXTpub3QoW2RhdGEtZGlzYWJsZWRdKSJ9KTt0JiYoQy52YWx1ZT10LHQuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0In0pKX0sb25LZXlkb3duRW50ZXI6ZnVuY3Rpb24oKXtDLnZhbHVlJiZDLnZhbHVlLmNsaWNrKCl9LGZpbHRlckVsZW1lbnQ6ayxvbkZpbHRlckVsZW1lbnRDaGFuZ2U6ZT0+e2sudmFsdWU9ZX0sYWN0aXZlU3VibWVudUNvbnRleHQ6Xyxwb2ludGVyR3JhY2VUaW1lclJlZjpmLG9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlOmU9Pnt5LnZhbHVlPWV9fSksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihOKSx7ImFzLWNoaWxkIjoiIix0cmFwcGVkOnIudW5yZWYobCksb25Nb3VudEF1dG9Gb2N1czpoYW5kbGVNb3VudEF1dG9Gb2N1cyxvblVubW91bnRBdXRvRm9jdXM6dFs3XXx8KHRbN109ZT0+bigiY2xvc2VBdXRvRm9jdXMiLGUpKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKEQpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOnIudW5yZWYoZCksb25Fc2NhcGVLZXlEb3duOnRbMl18fCh0WzJdPWU9Pm4oImVzY2FwZUtleURvd24iLGUpKSxvblBvaW50ZXJEb3duT3V0c2lkZTp0WzNdfHwodFszXT1lPT5uKCJwb2ludGVyRG93bk91dHNpZGUiLGUpKSxvbkZvY3VzT3V0c2lkZTp0WzRdfHwodFs0XT1lPT5uKCJmb2N1c091dHNpZGUiLGUpKSxvbkludGVyYWN0T3V0c2lkZTp0WzVdfHwodFs1XT1lPT5uKCJpbnRlcmFjdE91dHNpZGUiLGUpKSxvbkRpc21pc3M6dFs2XXx8KHRbNl09ZT0+bigiZGlzbWlzcyIpKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKFcpLHtyZWZfa2V5OiJyb3ZpbmdGb2N1c0dyb3VwUmVmIixyZWY6aCwiY3VycmVudC10YWItc3RvcC1pZCI6bS52YWx1ZSwib25VcGRhdGU6Y3VycmVudFRhYlN0b3BJZCI6dFswXXx8KHRbMF09ZT0+bS52YWx1ZT1lKSwiYXMtY2hpbGQiOiIiLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsZGlyOnIudW5yZWYodSkuZGlyLnZhbHVlLGxvb3A6ci51bnJlZihzKSxvbkVudHJ5Rm9jdXM6dFsxXXx8KHRbMV09ZT0+e24oImVudHJ5Rm9jdXMiLGUpLHIudW5yZWYodSkuaXNVc2luZ0tleWJvYXJkUmVmLnZhbHVlfHxlLnByZXZlbnREZWZhdWx0KCl9KX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKHgpLHtyZWY6ci51bnJlZihxKSxyb2xlOiJtZW51IixhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJkYXRhLXJla2EtbWVudS1jb250ZW50IjoiIiwiZGF0YS1zdGF0ZSI6ci51bnJlZihSKShyLnVucmVmKGEpLm9wZW4udmFsdWUpLGRpcjpyLnVucmVmKHUpLmRpci52YWx1ZSxzaWRlOmUuc2lkZSwic2lkZS1vZmZzZXQiOmUuc2lkZU9mZnNldCxhbGlnbjplLmFsaWduLCJhbGlnbi1vZmZzZXQiOmUuYWxpZ25PZmZzZXQsImF2b2lkLWNvbGxpc2lvbnMiOmUuYXZvaWRDb2xsaXNpb25zLCJjb2xsaXNpb24tYm91bmRhcnkiOmUuY29sbGlzaW9uQm91bmRhcnksImNvbGxpc2lvbi1wYWRkaW5nIjplLmNvbGxpc2lvblBhZGRpbmcsImFycm93LXBhZGRpbmciOmUuYXJyb3dQYWRkaW5nLCJwcmlvcml0aXplLXBvc2l0aW9uIjplLnByaW9yaXRpemVQb3NpdGlvbiwicG9zaXRpb24tc3RyYXRlZ3kiOmUucG9zaXRpb25TdHJhdGVneSwidXBkYXRlLXBvc2l0aW9uLXN0cmF0ZWd5IjplLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3ksc3RpY2t5OmUuc3RpY2t5LCJoaWRlLXdoZW4tZGV0YWNoZWQiOmUuaGlkZVdoZW5EZXRhY2hlZCxyZWZlcmVuY2U6ZS5yZWZlcmVuY2Usb25LZXlkb3duOmhhbmRsZUtleURvd24sb25CbHVyOmhhbmRsZUJsdXIsb25Qb2ludGVybW92ZTpoYW5kbGVQb2ludGVyTW92ZSxvblBvaW50ZXJlbnRlcjpoYW5kbGVQb2ludGVyRW50ZXJ9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkaXIiLCJzaWRlIiwic2lkZS1vZmZzZXQiLCJhbGlnbiIsImFsaWduLW9mZnNldCIsImF2b2lkLWNvbGxpc2lvbnMiLCJjb2xsaXNpb24tYm91bmRhcnkiLCJjb2xsaXNpb24tcGFkZGluZyIsImFycm93LXBhZGRpbmciLCJwcmlvcml0aXplLXBvc2l0aW9uIiwicG9zaXRpb24tc3RyYXRlZ3kiLCJ1cGRhdGUtcG9zaXRpb24tc3RyYXRlZ3kiLCJzdGlja3kiLCJoaWRlLXdoZW4tZGV0YWNoZWQiLCJyZWZlcmVuY2UiXSldKSxfOjN9LDgsWyJjdXJyZW50LXRhYi1zdG9wLWlkIiwiZGlyIiwibG9vcCJdKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLGRlPXIuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJNZW51SXRlbUltcGwiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbz1pZSgpLHtmb3J3YXJkUmVmOmEsY3VycmVudEVsZW1lbnQ6dX09aSgpLHtDb2xsZWN0aW9uSXRlbTpsfT1CKCksZD1yLnJlZighMSkscz1yLmNvbXB1dGVkKCgpPT5kLnZhbHVlfHxvLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZT09PXUudmFsdWUpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKGUpe2lmKCFlLmRlZmF1bHRQcmV2ZW50ZWQmJiQoZSkpaWYodC5kaXNhYmxlZClvLm9uSXRlbUxlYXZlKGUpO2Vsc2V7aWYoIW8ub25JdGVtRW50ZXIoZSkpe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0O28uaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPXQ7WyJJTlBVVCIsIlRFWFRBUkVBIl0uaW5jbHVkZXMoYigpPy50YWdOYW1lfHwiIil8fHQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX19fWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJMZWF2ZShlKXthd2FpdCByLm5leHRUaWNrKCksZS5kZWZhdWx0UHJldmVudGVkfHwkKGUpJiZvLm9uSXRlbUxlYXZlKGUpfXJldHVybihlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobCkse3ZhbHVlOnt0ZXh0VmFsdWU6ZS50ZXh0VmFsdWV9fSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVZOb2RlKHIudW5yZWYobiksci5tZXJnZVByb3BzKHtyZWY6ci51bnJlZihhKSxyb2xlOiJtZW51aXRlbSIsdGFiaW5kZXg6Ii0xIn0sZS4kYXR0cnMse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImFyaWEtZGlzYWJsZWQiOmUuZGlzYWJsZWR8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZS5kaXNhYmxlZD8iIjp2b2lkIDAsImRhdGEtaGlnaGxpZ2h0ZWQiOnMudmFsdWU/IiI6dm9pZCAwLG9uUG9pbnRlcm1vdmU6aGFuZGxlUG9pbnRlck1vdmUsb25Qb2ludGVybGVhdmU6aGFuZGxlUG9pbnRlckxlYXZlLG9uRm9jdXM6dFswXXx8KHRbMF09YXN5bmMgdD0+e2F3YWl0IHIubmV4dFRpY2soKSx0LmRlZmF1bHRQcmV2ZW50ZWR8fGUuZGlzYWJsZWR8fChkLnZhbHVlPSEwLHIudW5yZWYobykuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPXQuY3VycmVudFRhcmdldCl9KSxvbkJsdXI6dFsxXXx8KHRbMV09YXN5bmMgZT0+e2F3YWl0IHIubmV4dFRpY2soKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fChkLnZhbHVlPSExKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCIsImFyaWEtZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1oaWdobGlnaHRlZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxzZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51SXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCx7Zm9yd2FyZFJlZjphLGN1cnJlbnRFbGVtZW50OnV9PWkoKSxsPW9lKCksZD1pZSgpLHM9ci5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZVNlbGVjdCgpe2NvbnN0IGU9dS52YWx1ZTtpZighby5kaXNhYmxlZCYmZSl7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQoRyx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7bigic2VsZWN0IixlKSxhd2FpdCByLm5leHRUaWNrKCksZS5kZWZhdWx0UHJldmVudGVkP3MudmFsdWU9ITE6bC5vbkNsb3NlKCl9fXJldHVybihlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKGRlLHIubWVyZ2VQcm9wcyhvLHtyZWY6ci51bnJlZihhKSxvbkNsaWNrOmhhbmRsZVNlbGVjdCxvblBvaW50ZXJkb3duOnRbMF18fCh0WzBdPSgpPT57cy52YWx1ZT0hMH0pLG9uUG9pbnRlcnVwOnRbMV18fCh0WzFdPWFzeW5jIGU9Pnthd2FpdCByLm5leHRUaWNrKCksZS5kZWZhdWx0UHJldmVudGVkfHxzLnZhbHVlfHxlLmN1cnJlbnRUYXJnZXQ/LmNsaWNrKCl9KSxvbktleWRvd246dFsyXXx8KHRbMl09YXN5bmMgdD0+e2NvbnN0IG89IiIhPT1yLnVucmVmKGQpLnNlYXJjaFJlZi52YWx1ZTtlLmRpc2FibGVkfHxvJiYiICI9PT10LmtleXx8ci51bnJlZihUKS5pbmNsdWRlcyh0LmtleSkmJih0LmN1cnJlbnRUYXJnZXQ/LmNsaWNrKCksdC5wcmV2ZW50RGVmYXVsdCgpKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3RbcGUsY2VdPXAoWyJNZW51Q2hlY2tib3hJdGVtIiwiTWVudVJhZGlvSXRlbSJdLCJNZW51SXRlbUluZGljYXRvckNvbnRleHQiKTt2YXIgZmU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudUl0ZW1JbmRpY2F0b3IiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKGUpe2NvbnN0IHQ9cGUoe21vZGVsVmFsdWU6ci5yZWYoITEpfSk7cmV0dXJuKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihsKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHIudW5yZWYoSSkoci51bnJlZih0KS5tb2RlbFZhbHVlLnZhbHVlKXx8ITA9PT1yLnVucmVmKHQpLm1vZGVsVmFsdWUudmFsdWV9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZihuKSx7YXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCwiZGF0YS1zdGF0ZSI6ci51bnJlZihFKShyLnVucmVmKHQpLm1vZGVsVmFsdWUudmFsdWUpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXN0YXRlIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSkseWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudUNoZWNrYm94SXRlbSIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCxhPXYobyxbIm1vZGVsVmFsdWUiXSksaT1jKGEpLHU9cyhvLCJtb2RlbFZhbHVlIixuKTtyZXR1cm4gY2Uoe21vZGVsVmFsdWU6dX0pLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHNlLHIubWVyZ2VQcm9wcyh7cm9sZToibWVudWl0ZW1jaGVja2JveCJ9LHIudW5yZWYoaSkseyJhcmlhLWNoZWNrZWQiOnIudW5yZWYoSSkoci51bnJlZih1KSk/Im1peGVkIjpyLnVucmVmKHUpLCJkYXRhLXN0YXRlIjpyLnVucmVmKEUpKHIudW5yZWYodSkpLG9uU2VsZWN0OnRbMF18fCh0WzBdPWFzeW5jIGU9PntuKCJzZWxlY3QiLGUpLHIudW5yZWYoSSkoci51bnJlZih1KSk/dS52YWx1ZT0hMDp1LnZhbHVlPSFyLnVucmVmKHUpfSl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnIudW5yZWYodSl9KV0pLF86M30sMTYsWyJhcmlhLWNoZWNrZWQiLCJkYXRhLXN0YXRlIl0pKX19KSxnZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51Um9vdENvbnRlbnRNb2RhbCIscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImVudHJ5Rm9jdXMiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPXQsbj11KGUsbyksYT10ZSgpLHtmb3J3YXJkUmVmOmwsY3VycmVudEVsZW1lbnQ6ZH09aSgpO3JldHVybiBBKGQpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKGxlLHIubWVyZ2VQcm9wcyhyLnVucmVmKG4pLHtyZWY6ci51bnJlZihsKSwidHJhcC1mb2N1cyI6ci51bnJlZihhKS5vcGVuLnZhbHVlLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOnIudW5yZWYoYSkub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXNjcm9sbCI6ITAsb25EaXNtaXNzOnRbMF18fCh0WzBdPWU9PnIudW5yZWYoYSkub25PcGVuQ2hhbmdlKCExKSksb25Gb2N1c091dHNpZGU6dFsxXXx8KHRbMV09ci53aXRoTW9kaWZpZXJzKGU9Pm8oImZvY3VzT3V0c2lkZSIsZSksWyJwcmV2ZW50Il0pKX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInRyYXAtZm9jdXMiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSkpfX0pLHZlPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVSb290Q29udGVudE5vbk1vZGFsIixwcm9wczp7bG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpLG49dGUoKTtyZXR1cm4oZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhsZSxyLm1lcmdlUHJvcHMoci51bnJlZihvKSx7InRyYXAtZm9jdXMiOiExLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLCJkaXNhYmxlLW91dHNpZGUtc2Nyb2xsIjohMSxvbkRpc21pc3M6dFswXXx8KHRbMF09ZT0+ci51bnJlZihuKS5vbk9wZW5DaGFuZ2UoITEpKX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLG1lPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJlbnRyeUZvY3VzIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz11KGUsdCksbj10ZSgpLGE9b2UoKTtyZXR1cm4oZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGwpLHtwcmVzZW50OmUuZm9yY2VNb3VudHx8ci51bnJlZihuKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnVucmVmKGEpLm1vZGFsLnZhbHVlPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soZ2Usci5ub3JtYWxpemVQcm9wcyhyLm1lcmdlUHJvcHMoe2tleTowfSx7Li4uZS4kYXR0cnMsLi4uci51bnJlZihvKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHZlLHIubm9ybWFsaXplUHJvcHMoci5tZXJnZVByb3BzKHtrZXk6MX0sey4uLmUuJGF0dHJzLC4uLnIudW5yZWYobyl9KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KTtjb25zdFtoZSxxZV09cCgiTWVudUdyb3VwIik7dmFyIEJlPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVHcm91cCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPU8odm9pZCAwLCJyZWthLW1lbnUtZ3JvdXAiKTtyZXR1cm4gcWUoe2lkOm99KSwoZSxhKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKG4pLHIubWVyZ2VQcm9wcyh7cm9sZToiZ3JvdXAifSx0LHsiYXJpYS1sYWJlbGxlZGJ5IjpyLnVucmVmKG8pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxiZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51TGFiZWwiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPWhlKHtpZDoiIn0pO3JldHVybihlLGEpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobiksci5tZXJnZVByb3BzKHQse2lkOnIudW5yZWYobykuaWR8fHZvaWQgMH0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSx3ZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybihlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoZCksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3RbQ2Usa2VdPXAoIk1lbnVSYWRpb0dyb3VwIik7dmFyIHhlPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVSYWRpb0dyb3VwIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6IiJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9dihvLFsibW9kZWxWYWx1ZSJdKSxpPWMoYSksdT1zKG8sIm1vZGVsVmFsdWUiLG4pO3JldHVybiBrZSh7bW9kZWxWYWx1ZTp1LG9uVmFsdWVDaGFuZ2U6ZT0+e3UudmFsdWU9ZX19KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhCZSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHIudW5yZWYoaSkpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnIudW5yZWYodSl9KV0pLF86M30sMTYpKX19KSxTZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51UmFkaW9JdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9dihvLFsidmFsdWUiXSksaT1jKGEpLHt2YWx1ZTp1fT1yLnRvUmVmcyhvKSxsPUNlKCksZD1yLmNvbXB1dGVkKCgpPT5sLm1vZGVsVmFsdWUudmFsdWU9PT11Py52YWx1ZSk7cmV0dXJuIGNlKHttb2RlbFZhbHVlOmR9KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhzZSxyLm1lcmdlUHJvcHMoe3JvbGU6Im1lbnVpdGVtcmFkaW8ifSxyLnVucmVmKGkpLHsiYXJpYS1jaGVja2VkIjpkLnZhbHVlLCJkYXRhLXN0YXRlIjpyLnVucmVmKEUpKGQudmFsdWUpLG9uU2VsZWN0OnRbMF18fCh0WzBdPWFzeW5jIGU9PntuKCJzZWxlY3QiLGUpLHIudW5yZWYobCkub25WYWx1ZUNoYW5nZShyLnVucmVmKHUpKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1jaGVja2VkIiwiZGF0YS1zdGF0ZSJdKSl9fSksUGU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudVNlcGFyYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKG4pLHIubWVyZ2VQcm9wcyh0LHtyb2xlOiJzZXBhcmF0b3IiLCJhcmlhLW9yaWVudGF0aW9uIjoiaG9yaXpvbnRhbCJ9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtjb25zdFtfZSxPZV09cCgiTWVudVN1YiIpO3ZhciBEZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51U3ViIixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89cyhlLCJvcGVuIix0LHtkZWZhdWx0VmFsdWU6ITEscGFzc2l2ZTp2b2lkIDA9PT1lLm9wZW59KSxuPXRlKCksYT1yLnJlZigpLGk9ci5yZWYoKTtyZXR1cm4gci53YXRjaEVmZmVjdChlPT57ITE9PT1uPy5vcGVuLnZhbHVlJiYoby52YWx1ZT0hMSksZSgoKT0+by52YWx1ZT0hMSl9KSxyZSh7b3BlbjpvLG9uT3BlbkNoYW5nZTplPT57by52YWx1ZT1lfSxjb250ZW50Omksb25Db250ZW50Q2hhbmdlOmU9PntpLnZhbHVlPWV9fSksT2Uoe3RyaWdnZXJJZDoiIixjb250ZW50SWQ6IiIsdHJpZ2dlcjphLG9uVHJpZ2dlckNoYW5nZTplPT57YS52YWx1ZT1lfX0pLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoayksbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30pKX19KSxGZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51U3ViQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpLG49dGUoKSxhPW9lKCksZD1fZSgpLHM9aWUoKSx7Zm9yd2FyZFJlZjpwLGN1cnJlbnRFbGVtZW50OmN9PWkoKTtyZXR1cm4gZC5jb250ZW50SWR8fD1PKHZvaWQgMCwicmVrYS1tZW51LXN1Yi1jb250ZW50IiksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihsKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHIudW5yZWYobikub3Blbi52YWx1ZX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShsZSxyLm1lcmdlUHJvcHMoci51bnJlZihvKSx7aWQ6ci51bnJlZihkKS5jb250ZW50SWQscmVmOnIudW5yZWYocCksImFyaWEtbGFiZWxsZWRieSI6ci51bnJlZihkKS50cmlnZ2VySWQsYWxpZ246InN0YXJ0IixzaWRlOiJydGwiPT09ci51bnJlZihhKS5kaXIudmFsdWU/ImxlZnQiOiJyaWdodCIsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6ITEsImRpc2FibGUtb3V0c2lkZS1zY3JvbGwiOiExLCJ0cmFwLWZvY3VzIjohMSxvbk9wZW5BdXRvRm9jdXM6dFswXXx8KHRbMF09ci53aXRoTW9kaWZpZXJzKGU9PntyLnVucmVmKGEpLmlzVXNpbmdLZXlib2FyZFJlZi52YWx1ZSYmci51bnJlZihjKT8uZm9jdXMoKX0sWyJwcmV2ZW50Il0pKSxvbkNsb3NlQXV0b0ZvY3VzOnRbMV18fCh0WzFdPXIud2l0aE1vZGlmaWVycygoKT0+e30sWyJwcmV2ZW50Il0pKSxvbkZvY3VzT3V0c2lkZTp0WzJdfHwodFsyXT1lPT57aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB0PXIudW5yZWYocykuZmlsdGVyRWxlbWVudC52YWx1ZT8uY29udGFpbnMoZS50YXJnZXQpO2UudGFyZ2V0PT09ci51bnJlZihkKS50cmlnZ2VyLnZhbHVlfHx0fHxyLnVucmVmKG4pLm9uT3BlbkNoYW5nZSghMSl9KSxvbkVzY2FwZUtleURvd246dFszXXx8KHRbM109ZT0+e3IudW5yZWYoYSkub25DbG9zZSgpLGUucHJldmVudERlZmF1bHQoKX0pLG9uS2V5ZG93bjp0WzRdfHwodFs0XT1lPT57Y29uc3QgdD1lLmN1cnJlbnRUYXJnZXQ/LmNvbnRhaW5zKGUudGFyZ2V0KSxvPXIudW5yZWYoTSlbci51bnJlZihhKS5kaXIudmFsdWVdLmluY2x1ZGVzKGUua2V5KTt0JiZvJiYoci51bnJlZihuKS5vbk9wZW5DaGFuZ2UoITEpLHIudW5yZWYocykuZmlsdGVyRWxlbWVudC52YWx1ZT8oci51bnJlZihzKS5maWx0ZXJFbGVtZW50LnZhbHVlLmZvY3VzKCksci51bnJlZihzKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU9ci51bnJlZihkKS50cmlnZ2VyLnZhbHVlLHIudW5yZWYoZCkudHJpZ2dlci52YWx1ZT8uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0In0pKTpyLnVucmVmKGQpLnRyaWdnZXIudmFsdWU/LmZvY3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJhcmlhLWxhYmVsbGVkYnkiLCJzaWRlIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksQWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudVN1YlRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbz10ZSgpLG49b2UoKSxhPV9lKCksaT1pZSgpO3Iud2F0Y2goby5vcGVuLGU9PntlP2kuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9e29uT3BlbkNoYW5nZTpvLm9uT3BlbkNoYW5nZSx0cmlnZ2VyOmEudHJpZ2dlcn06aS5hY3RpdmVTdWJtZW51Q29udGV4dC52YWx1ZT8udHJpZ2dlci52YWx1ZT09PWEudHJpZ2dlci52YWx1ZSYmKGkuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9dm9pZCAwKX0pO2NvbnN0IHU9ci5yZWYobnVsbCk7ZnVuY3Rpb24gY2xlYXJPcGVuVGltZXIoKXt1LnZhbHVlJiYodm9pZCAwKS5jbGVhclRpbWVvdXQodS52YWx1ZSksdS52YWx1ZT1udWxsfWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKGUpe2lmKCEkKGUpKXJldHVybjtpLm9uSXRlbUVudGVyKGUpfHx0LmRpc2FibGVkfHxvLm9wZW4udmFsdWV8fHUudmFsdWV8fChpLm9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlKG51bGwpLHUudmFsdWU9KHZvaWQgMCkuc2V0VGltZW91dCgoKT0+e28ub25PcGVuQ2hhbmdlKCEwKSxjbGVhck9wZW5UaW1lcigpfSwxMDApKX1hc3luYyBmdW5jdGlvbiBoYW5kbGVQb2ludGVyTGVhdmUoZSl7aWYoISQoZSkpcmV0dXJuO2NsZWFyT3BlblRpbWVyKCk7Y29uc3QgdD1vLmNvbnRlbnQudmFsdWU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHQ/LndpZHRoKXtjb25zdCByPW8uY29udGVudC52YWx1ZT8uZGF0YXNldC5zaWRlLG49InJpZ2h0Ij09PXIsYT1uPy01OjUsdT10W24/ImxlZnQiOiJyaWdodCJdLGw9dFtuPyJyaWdodCI6ImxlZnQiXTtpLm9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlKHthcmVhOlt7eDplLmNsaWVudFgrYSx5OmUuY2xpZW50WX0se3g6dSx5OnQudG9wfSx7eDpsLHk6dC50b3B9LHt4OmwseTp0LmJvdHRvbX0se3g6dSx5OnQuYm90dG9tfV0sc2lkZTpyfSksKHZvaWQgMCkuY2xlYXJUaW1lb3V0KGkucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWUpLGkucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWU9KHZvaWQgMCkuc2V0VGltZW91dCgoKT0+aS5vblBvaW50ZXJHcmFjZUludGVudENoYW5nZShudWxsKSwzMDApfWVsc2V7aWYoaS5vblRyaWdnZXJMZWF2ZShlKSlyZXR1cm47aS5vblBvaW50ZXJHcmFjZUludGVudENoYW5nZShudWxsKX19YXN5bmMgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKXtjb25zdCBhPSIiIT09aS5zZWFyY2hSZWYudmFsdWU7dC5kaXNhYmxlZHx8YSYmIiAiPT09ZS5rZXl8fFZbbi5kaXIudmFsdWVdLmluY2x1ZGVzKGUua2V5KSYmKG8ub25PcGVuQ2hhbmdlKCEwKSxhd2FpdCByLm5leHRUaWNrKCksby5jb250ZW50LnZhbHVlPy5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKSl9cmV0dXJuIGEudHJpZ2dlcklkfHw9Tyh2b2lkIDAsInJla2EtbWVudS1zdWItdHJpZ2dlciIpLChlLG4pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKEoseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoZGUsci5tZXJnZVByb3BzKHQse2lkOnIudW5yZWYoYSkudHJpZ2dlcklkLHJlZjplPT57ZSYmci51bnJlZihhKT8ub25UcmlnZ2VyQ2hhbmdlKGU/LiRlbCl9LCJhcmlhLWhhc3BvcHVwIjoibWVudSIsImFyaWEtZXhwYW5kZWQiOnIudW5yZWYobykub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6ci51bnJlZihhKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOnIudW5yZWYoUikoci51bnJlZihvKS5vcGVuLnZhbHVlKSxvbkNsaWNrOm5bMF18fChuWzBdPWFzeW5jIGU9Pnt0LmRpc2FibGVkfHxlLmRlZmF1bHRQcmV2ZW50ZWR8fChlLmN1cnJlbnRUYXJnZXQ/LmZvY3VzKCksci51bnJlZihvKS5vcGVuLnZhbHVlfHxyLnVucmVmKG8pLm9uT3BlbkNoYW5nZSghMCkpfSksb25Qb2ludGVybW92ZTpoYW5kbGVQb2ludGVyTW92ZSxvblBvaW50ZXJsZWF2ZTpoYW5kbGVQb2ludGVyTGVhdmUsb25LZXlkb3duOmhhbmRsZUtleURvd259KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSJdKV0pLF86M30pKX19KTtjb25zdFtOZSxSZV09cCgiUG9wb3ZlclJvb3QiKTt2YXIgTWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlclJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89ZSxuPXQse21vZGFsOmF9PXIudG9SZWZzKG8pLGk9cyhvLCJvcGVuIixuLHtkZWZhdWx0VmFsdWU6by5kZWZhdWx0T3BlbixwYXNzaXZlOnZvaWQgMD09PW8ub3Blbn0pLHU9ci5yZWYoKSxsPXIucmVmKCExKTtyZXR1cm4gUmUoe2NvbnRlbnRJZDoiIix0cmlnZ2VySWQ6IiIsbW9kYWw6YSxvcGVuOmksb25PcGVuQ2hhbmdlOmU9PntpLnZhbHVlPWV9LG9uT3BlblRvZ2dsZTooKT0+e2kudmFsdWU9IWkudmFsdWV9LHRyaWdnZXJFbGVtZW50OnUsaGFzQ3VzdG9tQW5jaG9yOmx9KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGspLG51bGwse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyLnVucmVmKGkpLGNsb3NlOigpPT5pLnZhbHVlPSExfSldKSxfOjN9KSl9fSksRWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlckFuY2hvciIscHJvcHM6e3JlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIGkoKSxOZSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoQyksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksSWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlckFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1fSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzdmcifX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBpKCksKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZih3KSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHQpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxUZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyQ2xvc2UiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZTtpKCk7Y29uc3Qgbz1OZSgpO3JldHVybihlLGEpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobikse3R5cGU6ImJ1dHRvbiI9PT1lLmFzPyJidXR0b24iOnZvaWQgMCxhczplLmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLG9uQ2xpY2s6YVswXXx8KGFbMF09ZT0+ci51bnJlZihvKS5vbk9wZW5DaGFuZ2UoITEpKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0eXBlIiwiYXMiLCJhcy1jaGlsZCJdKSl9fSksVmU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlckNvbnRlbnRJbXBsIixwcm9wczp7dHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz10LG49Yyh2KGUsInRyYXBGb2N1cyIsImRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyIpKSx7Zm9yd2FyZFJlZjphfT1pKCksdT1OZSgpO3JldHVybiBTKCksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihOKSx7ImFzLWNoaWxkIjoiIixsb29wOiIiLHRyYXBwZWQ6ZS50cmFwRm9jdXMsb25Nb3VudEF1dG9Gb2N1czp0WzVdfHwodFs1XT1lPT5vKCJvcGVuQXV0b0ZvY3VzIixlKSksb25Vbm1vdW50QXV0b0ZvY3VzOnRbNl18fCh0WzZdPWU9Pm8oImNsb3NlQXV0b0ZvY3VzIixlKSl9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZihEKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjplLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvblBvaW50ZXJEb3duT3V0c2lkZTp0WzBdfHwodFswXT1lPT5vKCJwb2ludGVyRG93bk91dHNpZGUiLGUpKSxvbkludGVyYWN0T3V0c2lkZTp0WzFdfHwodFsxXT1lPT5vKCJpbnRlcmFjdE91dHNpZGUiLGUpKSxvbkVzY2FwZUtleURvd246dFsyXXx8KHRbMl09ZT0+bygiZXNjYXBlS2V5RG93biIsZSkpLG9uRm9jdXNPdXRzaWRlOnRbM118fCh0WzNdPWU9Pm8oImZvY3VzT3V0c2lkZSIsZSkpLG9uRGlzbWlzczp0WzRdfHwodFs0XT1lPT5yLnVucmVmKHUpLm9uT3BlbkNoYW5nZSghMSkpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVZOb2RlKHIudW5yZWYoeCksci5tZXJnZVByb3BzKHIudW5yZWYobikse2lkOnIudW5yZWYodSkuY29udGVudElkLHJlZjpyLnVucmVmKGEpLCJkYXRhLXN0YXRlIjpyLnVucmVmKHUpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLCJhcmlhLWxhYmVsbGVkYnkiOnIudW5yZWYodSkudHJpZ2dlcklkLHN0eWxlOnsiLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtcG9wb3Zlci1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtcG9wb3Zlci1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1wb3BvdmVyLXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLXBvcG92ZXItdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9LHJvbGU6ImRpYWxvZyJ9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImRhdGEtc3RhdGUiLCJhcmlhLWxhYmVsbGVkYnkiXSldKSxfOjN9LDgsWyJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSldKSxfOjN9LDgsWyJ0cmFwcGVkIl0pKX19KSwkZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyQ29udGVudE1vZGFsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9TmUoKSxsPXIucmVmKCExKTtGKCEwKTtjb25zdCBkPXUobyxuKSx7Zm9yd2FyZFJlZjpzLGN1cnJlbnRFbGVtZW50OnB9PWkoKTtyZXR1cm4gQShwKSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhWZSxyLm1lcmdlUHJvcHMoci51bnJlZihkKSx7cmVmOnIudW5yZWYocyksInRyYXAtZm9jdXMiOnIudW5yZWYoYSkub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjoiIixvbkNsb3NlQXV0b0ZvY3VzOnRbMF18fCh0WzBdPXIud2l0aE1vZGlmaWVycyhlPT57bigiY2xvc2VBdXRvRm9jdXMiLGUpLGwudmFsdWV8fHIudW5yZWYoYSkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCl9LFsicHJldmVudCJdKSksb25Qb2ludGVyRG93bk91dHNpZGU6dFsxXXx8KHRbMV09ZT0+e24oInBvaW50ZXJEb3duT3V0c2lkZSIsZSk7Y29uc3QgdD1lLmRldGFpbC5vcmlnaW5hbEV2ZW50LHI9MD09PXQuYnV0dG9uJiYhMD09PXQuY3RybEtleSxvPTI9PT10LmJ1dHRvbnx8cjtsLnZhbHVlPW99KSxvbkZvY3VzT3V0c2lkZTp0WzJdfHwodFsyXT1yLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxLZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyQ29udGVudE5vbk1vZGFsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9TmUoKSxpPXIucmVmKCExKSxsPXIucmVmKCExKSxkPXUobyxuKTtyZXR1cm4oZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhWZSxyLm1lcmdlUHJvcHMoci51bnJlZihkKSx7InRyYXAtZm9jdXMiOiExLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uQ2xvc2VBdXRvRm9jdXM6dFswXXx8KHRbMF09ZT0+e24oImNsb3NlQXV0b0ZvY3VzIixlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fChpLnZhbHVlfHxyLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKSksaS52YWx1ZT0hMSxsLnZhbHVlPSExfSksb25JbnRlcmFjdE91dHNpZGU6dFsxXXx8KHRbMV09YXN5bmMgZT0+e24oImludGVyYWN0T3V0c2lkZSIsZSksZS5kZWZhdWx0UHJldmVudGVkfHwoaS52YWx1ZT0hMCwicG9pbnRlcmRvd24iPT09ZS5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiYobC52YWx1ZT0hMCkpO2NvbnN0IHQ9ZS50YXJnZXQsbz1yLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyh0KTtvJiZlLnByZXZlbnREZWZhdWx0KCksImZvY3VzaW4iPT09ZS5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiZsLnZhbHVlJiZlLnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHplPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBvcG92ZXJDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89ZSxuPXQsYT1OZSgpLGQ9dShvLG4pLHtmb3J3YXJkUmVmOnN9PWkoKTtyZXR1cm4gYS5jb250ZW50SWR8fD1PKHZvaWQgMCwicmVrYS1wb3BvdmVyLWNvbnRlbnQiKSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGwpLHtwcmVzZW50OmUuZm9yY2VNb3VudHx8ci51bnJlZihhKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnVucmVmKGEpLm1vZGFsLnZhbHVlPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soJGUsci5tZXJnZVByb3BzKHtrZXk6MH0sci51bnJlZihkKSx7cmVmOnIudW5yZWYocyl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKEtlLHIubWVyZ2VQcm9wcyh7a2V5OjF9LHIudW5yZWYoZCkse3JlZjpyLnVucmVmKHMpfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxMZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyUG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybihlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoZCksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksVWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlclRyaWdnZXIiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPU5lKCkse2ZvcndhcmRSZWY6YX09aSgpO3JldHVybiBvLnRyaWdnZXJJZHx8PU8odm9pZCAwLCJyZWthLXBvcG92ZXItdHJpZ2dlciIpLChlLGkpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoci51bnJlZihvKS5oYXNDdXN0b21BbmNob3IudmFsdWU/ci51bnJlZihuKTpyLnVucmVmKEMpKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKG4pLHtpZDpyLnVucmVmKG8pLnRyaWdnZXJJZCxyZWY6ci51bnJlZihhKSx0eXBlOiJidXR0b24iPT09ZS5hcz8iYnV0dG9uIjp2b2lkIDAsImFyaWEtaGFzcG9wdXAiOiJkaWFsb2ciLCJhcmlhLWV4cGFuZGVkIjpyLnVucmVmKG8pLm9wZW4udmFsdWUsImFyaWEtY29udHJvbHMiOnIudW5yZWYobykuY29udGVudElkLCJkYXRhLXN0YXRlIjpyLnVucmVmKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLGFzOmUuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGQsb25DbGljazpyLnVucmVmKG8pLm9uT3BlblRvZ2dsZX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJpZCIsInR5cGUiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1jb250cm9scyIsImRhdGEtc3RhdGUiLCJhcyIsImFzLWNoaWxkIiwib25DbGljayJdKV0pLF86M30pKX19KSxHZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoWiksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksamU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49cSh0KTtyZXR1cm4gaSgpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoeWUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLm8sLi4uci51bnJlZihuKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtjb25zdFtXZSxIZV09cCgiRHJvcGRvd25NZW51Um9vdCIpO3ZhciBYZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dDtpKCk7Y29uc3QgYT1zKG8sIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpvLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09by5vcGVufSksdT1yLnJlZigpLHttb2RhbDpsLGRpcjpkfT1yLnRvUmVmcyhvKSxwPWooZCk7cmV0dXJuIEhlKHtvcGVuOmEsb25PcGVuQ2hhbmdlOmU9PnthLnZhbHVlPWV9LG9uT3BlblRvZ2dsZTooKT0+e2EudmFsdWU9IWEudmFsdWV9LHRyaWdnZXJJZDoiIix0cmlnZ2VyRWxlbWVudDp1LGNvbnRlbnRJZDoiIixtb2RhbDpsLGRpcjpwfSksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihhZSkse29wZW46ci51bnJlZihhKSwib25VcGRhdGU6b3BlbiI6dFswXXx8KHRbMF09ZT0+ci5pc1JlZihhKT9hLnZhbHVlPWU6bnVsbCksZGlyOnIudW5yZWYocCksbW9kYWw6ci51bnJlZihsKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyLnVucmVmKGEpfSldKSxfOjN9LDgsWyJvcGVuIiwiZGlyIiwibW9kYWwiXSkpfX0pLFllPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz11KGUsdCk7aSgpO2NvbnN0IG49V2UoKSxhPXIucmVmKCExKTtmdW5jdGlvbiBoYW5kbGVDbG9zZUF1dG9Gb2N1cyhlKXtlLmRlZmF1bHRQcmV2ZW50ZWR8fChhLnZhbHVlfHxzZXRUaW1lb3V0KCgpPT57bi50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoKX0sMCksYS52YWx1ZT0hMSxlLnByZXZlbnREZWZhdWx0KCkpfXJldHVybiBuLmNvbnRlbnRJZHx8PU8odm9pZCAwLCJyZWthLWRyb3Bkb3duLW1lbnUtY29udGVudCIpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobWUpLHIubWVyZ2VQcm9wcyhyLnVucmVmKG8pLHtpZDpyLnVucmVmKG4pLmNvbnRlbnRJZCwiYXJpYS1sYWJlbGxlZGJ5IjpyLnVucmVmKG4pPy50cmlnZ2VySWQsc3R5bGU6eyItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4iOiJ2YXIoLS1yZWthLXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS10cmlnZ2VyLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn0sb25DbG9zZUF1dG9Gb2N1czpoYW5kbGVDbG9zZUF1dG9Gb2N1cyxvbkludGVyYWN0T3V0c2lkZTp0WzBdfHwodFswXT1lPT57aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB0PWUuZGV0YWlsLm9yaWdpbmFsRXZlbnQsbz0wPT09dC5idXR0b24mJiEwPT09dC5jdHJsS2V5LGk9Mj09PXQuYnV0dG9ufHxvO3IudW5yZWYobikubW9kYWwudmFsdWUmJiFpfHwoYS52YWx1ZT0hMCksci51bnJlZihuKS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uY29udGFpbnMoZS50YXJnZXQpJiZlLnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxRZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVGaWx0ZXIiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbnB1dCJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLGE9cyhvLCJtb2RlbFZhbHVlIix0LHtkZWZhdWx0VmFsdWU6IiIscGFzc2l2ZTp2b2lkIDA9PT1vLm1vZGVsVmFsdWV9KTtvZSgpO2NvbnN0IGk9aWUoKTtfZShudWxsKSxyLndhdGNoKGEsZT0+e2kuc2VhcmNoUmVmLnZhbHVlPWU/PyIifSx7aW1tZWRpYXRlOiEwfSk7Y29uc3R7cHJpbWl0aXZlRWxlbWVudDp1fT1oKCksbD1yLmNvbXB1dGVkKCgpPT5vLmRpc2FibGVkfHwhMSksZD1yLnJlZigpO2Z1bmN0aW9uIGhhbmRsZUlucHV0KGUpe2lmKGwudmFsdWUpcmV0dXJuO2NvbnN0IHQ9ZS50YXJnZXQ7YS52YWx1ZT10LnZhbHVlLGkuc2VhcmNoUmVmLnZhbHVlPXQudmFsdWV9ZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKXtsLnZhbHVlfHwoWyJBcnJvd0Rvd24iLCJBcnJvd1VwIiwiSG9tZSIsIkVuZCJdLmluY2x1ZGVzKGUua2V5KT8oZS5wcmV2ZW50RGVmYXVsdCgpLGkub25LZXlkb3duTmF2aWdhdGlvbihlKSk6IkVudGVyIj09PWUua2V5PyhlLnByZXZlbnREZWZhdWx0KCksaS5vbktleWRvd25FbnRlcihlKSk6IkVzY2FwZSI9PT1lLmtleSYmYS52YWx1ZSYmKGUuc3RvcFByb3BhZ2F0aW9uKCksYS52YWx1ZT0iIixpLnNlYXJjaFJlZi52YWx1ZT0iIikpfXJldHVybiByLndhdGNoU3luY0VmZmVjdCgoKT0+ZC52YWx1ZT1pLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZT8uaWQpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobikse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjp1LGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsdmFsdWU6ci51bnJlZihhKSxkaXNhYmxlZDpsLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6bC52YWx1ZT8iIjp2b2lkIDAsImFyaWEtZGlzYWJsZWQiOiEhbC52YWx1ZXx8dm9pZCAwLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOmQudmFsdWUsdHlwZToidGV4dCIscm9sZToic2VhcmNoYm94IixvbklucHV0OmhhbmRsZUlucHV0LG9uS2V5ZG93bjpoYW5kbGVLZXlEb3dufSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnIudW5yZWYoYSl9KV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiXSkpfX0pLEplPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudUdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBpKCksKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihCZSksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksWmU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51SXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49cSh0KTtyZXR1cm4gaSgpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoc2UpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLm8sLi4uci51bnJlZihuKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxldD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVJdGVtSW5kaWNhdG9yIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIGkoKSwoZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGZlKSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHQpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx0dD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVMYWJlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoYmUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHJ0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudVBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKHdlKSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHQpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxvdD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVSYWRpb0dyb3VwIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49cSh0KTtyZXR1cm4gaSgpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoeGUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLm8sLi4uci51bnJlZihuKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxudD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVSYWRpb0l0ZW0iLHByb3BzOnt2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpO3JldHVybiBpKCksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihTZSksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyhyLnVucmVmKG8pKSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksYXQ9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBpKCksKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihQZSksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksaXQ9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51U3ViIixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89ZSxuPXMobywib3BlbiIsdCx7cGFzc2l2ZTp2b2lkIDA9PT1vLm9wZW4sZGVmYXVsdFZhbHVlOm8uZGVmYXVsdE9wZW4/PyExfSk7cmV0dXJuIGkoKSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKERlKSx7b3BlbjpyLnVucmVmKG4pLCJvblVwZGF0ZTpvcGVuIjp0WzBdfHwodFswXT1lPT5yLmlzUmVmKG4pP24udmFsdWU9ZTpudWxsKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyLnVucmVmKG4pfSldKSxfOjN9LDgsWyJvcGVuIl0pKX19KSx1dD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVTdWJDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpO3JldHVybiBpKCksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihGZSksci5tZXJnZVByb3BzKHIudW5yZWYobykse3N0eWxlOnsiLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksbHQ9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoQWUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGR0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudVRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPVdlKCkse2ZvcndhcmRSZWY6YX09aSgpO3JldHVybiBvLnRyaWdnZXJJZHx8PU8odm9pZCAwLCJyZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlciIpLChlLGkpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoSikseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZihuKSx7aWQ6ci51bnJlZihvKS50cmlnZ2VySWQscmVmOnIudW5yZWYoYSksdHlwZToiYnV0dG9uIj09PWUuYXM/ImJ1dHRvbiI6dm9pZCAwLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGFzOmUuYXMsImFyaWEtaGFzcG9wdXAiOiJtZW51IiwiYXJpYS1leHBhbmRlZCI6ci51bnJlZihvKS5vcGVuLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjpyLnVucmVmKG8pLm9wZW4udmFsdWU/ci51bnJlZihvKS5jb250ZW50SWQ6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjplLmRpc2FibGVkPyIiOnZvaWQgMCxkaXNhYmxlZDplLmRpc2FibGVkLCJkYXRhLXN0YXRlIjpyLnVucmVmKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLG9uQ2xpY2s6aVswXXx8KGlbMF09YXN5bmMgdD0+e2UuZGlzYWJsZWR8fDAhPT10LmJ1dHRvbnx8ITEhPT10LmN0cmxLZXl8fChyLnVucmVmKG8pPy5vbk9wZW5Ub2dnbGUoKSxhd2FpdCByLm5leHRUaWNrKCksci51bnJlZihvKS5vcGVuLnZhbHVlJiZ0LnByZXZlbnREZWZhdWx0KCkpfSksb25LZXlkb3duOmlbMV18fChpWzFdPXIud2l0aEtleXModD0+e2UuZGlzYWJsZWR8fChbIkVudGVyIiwiICJdLmluY2x1ZGVzKHQua2V5KSYmci51bnJlZihvKS5vbk9wZW5Ub2dnbGUoKSwiQXJyb3dEb3duIj09PXQua2V5JiZyLnVucmVmKG8pLm9uT3BlbkNoYW5nZSghMCksWyJFbnRlciIsIiAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyh0LmtleSkmJnQucHJldmVudERlZmF1bHQoKSl9LFsiZW50ZXIiLCJzcGFjZSIsImFycm93LWRvd24iXSkpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImlkIiwidHlwZSIsImFzLWNoaWxkIiwiYXMiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1jb250cm9scyIsImRhdGEtZGlzYWJsZWQiLCJkaXNhYmxlZCIsImRhdGEtc3RhdGUiXSldKSxfOjN9KSl9fSksc3Q9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSG92ZXJDYXJkQXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIGkoKSwoZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKHcpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0W3B0LGN0XT1wKCJIb3ZlckNhcmRSb290Iik7dmFyIGZ0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZFJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sb3BlbkRlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjcwMH0sY2xvc2VEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCx7b3BlbkRlbGF5OmEsY2xvc2VEZWxheTp1fT1yLnRvUmVmcyhvKTtpKCk7Y29uc3QgbD1zKG8sIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpvLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09by5vcGVufSksZD1yLnJlZigwKSxwPXIucmVmKDApLGM9ci5yZWYoITEpLGY9ci5yZWYoITEpLHk9ci5yZWYoITEpLGc9ci5yZWYoKTtyZXR1cm4gY3Qoe29wZW46bCxvbk9wZW5DaGFuZ2UoZSl7bC52YWx1ZT1lfSxvbk9wZW46ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocC52YWx1ZSksZC52YWx1ZT0odm9pZCAwKS5zZXRUaW1lb3V0KCgpPT5sLnZhbHVlPSEwLGEudmFsdWUpfSxvbkNsb3NlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQudmFsdWUpLGMudmFsdWV8fGYudmFsdWV8fChwLnZhbHVlPSh2b2lkIDApLnNldFRpbWVvdXQoKCk9PmwudmFsdWU9ITEsdS52YWx1ZSkpfSxvbkRpc21pc3M6ZnVuY3Rpb24oKXtsLnZhbHVlPSExfSxoYXNTZWxlY3Rpb25SZWY6Yyxpc1BvaW50ZXJEb3duT25Db250ZW50UmVmOmYsaXNQb2ludGVySW5UcmFuc2l0UmVmOnksdHJpZ2dlckVsZW1lbnQ6Z30pLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoayksbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnIudW5yZWYobCl9KV0pLF86M30pKX19KTtmdW5jdGlvbiBleGNsdWRlVG91Y2goZSl7cmV0dXJuIHQ9PiJ0b3VjaCI9PT10LnBvaW50ZXJUeXBlP3ZvaWQgMDplKCl9dmFyIHl0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnRJbXBsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dCxuPWMoZSkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDp1fT1pKCksbD1wdCgpLHtpc1BvaW50ZXJJblRyYW5zaXQ6ZCxvblBvaW50ZXJFeGl0OnN9PXVzZUdyYWNlQXJlYShsLnRyaWdnZXJFbGVtZW50LHUpO2YobC5pc1BvaW50ZXJJblRyYW5zaXRSZWYsZCx7ZGlyZWN0aW9uOiJydGwifSkscygoKT0+e2wub25DbG9zZSgpfSk7Y29uc3QgcD1yLnJlZighMSk7bGV0IHk7cmV0dXJuIHIud2F0Y2hFZmZlY3QoZT0+e2lmKHAudmFsdWUpe2NvbnN0IHQ9KHZvaWQgMCkuYm9keTt5PXQuc3R5bGUudXNlclNlbGVjdHx8dC5zdHlsZS53ZWJraXRVc2VyU2VsZWN0LHQuc3R5bGUudXNlclNlbGVjdD0ibm9uZSIsdC5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PSJub25lIixlKCgpPT57dC5zdHlsZS51c2VyU2VsZWN0PXksdC5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PXl9KX19KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKEQpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uRXNjYXBlS2V5RG93bjp0WzFdfHwodFsxXT1lPT5vKCJlc2NhcGVLZXlEb3duIixlKSksb25Qb2ludGVyRG93bk91dHNpZGU6dFsyXXx8KHRbMl09ZT0+bygicG9pbnRlckRvd25PdXRzaWRlIixlKSksb25Gb2N1c091dHNpZGU6dFszXXx8KHRbM109ci53aXRoTW9kaWZpZXJzKGU9Pm8oImZvY3VzT3V0c2lkZSIsZSksWyJwcmV2ZW50Il0pKSxvbkRpc21pc3M6ci51bnJlZihsKS5vbkRpc21pc3N9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZih4KSxyLm1lcmdlUHJvcHMoey4uLnIudW5yZWYobiksLi4uZS4kYXR0cnN9LHtyZWY6ci51bnJlZihhKSwiZGF0YS1zdGF0ZSI6ci51bnJlZihsKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixzdHlsZTp7dXNlclNlbGVjdDpwLnZhbHVlPyJ0ZXh0Ijp2b2lkIDAsV2Via2l0VXNlclNlbGVjdDpwLnZhbHVlPyJ0ZXh0Ijp2b2lkIDAsIi0tcmVrYS1ob3Zlci1jYXJkLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbiI6InZhcigtLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pIiwiLS1yZWthLWhvdmVyLWNhcmQtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLWhvdmVyLWNhcmQtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCkiLCItLXJla2EtaG92ZXItY2FyZC10cmlnZ2VyLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLXdpZHRoKSIsIi0tcmVrYS1ob3Zlci1jYXJkLXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifSxvblBvaW50ZXJkb3duOnRbMF18fCh0WzBdPWU9PntlLmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZS50YXJnZXQpJiYocC52YWx1ZT0hMCksci51bnJlZihsKS5oYXNTZWxlY3Rpb25SZWYudmFsdWU9ITEsci51bnJlZihsKS5pc1BvaW50ZXJEb3duT25Db250ZW50UmVmLnZhbHVlPSEwfSl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIiwic3R5bGUiXSldKSxfOjN9LDgsWyJvbkRpc21pc3MiXSkpfX0pLGd0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPXUoZSx0KSx7Zm9yd2FyZFJlZjpufT1pKCksYT1wdCgpO3JldHVybihlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobCkse3ByZXNlbnQ6ZS5mb3JjZU1vdW50fHxyLnVucmVmKGEpLm9wZW4udmFsdWV9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoeXQsci5tZXJnZVByb3BzKHIudW5yZWYobykse3JlZjpyLnVucmVmKG4pLG9uUG9pbnRlcmVudGVyOnRbMF18fCh0WzBdPWU9PnIudW5yZWYoZXhjbHVkZVRvdWNoKShyLnVucmVmKGEpLm9uT3BlbikoZSkpfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLHZ0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGQpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0IG10PXtSb290OlhlLFRyaWdnZXI6ZHQsUG9ydGFsOnJ0LENvbnRlbnQ6WWUsQXJyb3c6R2UsSXRlbTpaZSxHcm91cDpKZSxTZXBhcmF0b3I6YXQsQ2hlY2tib3hJdGVtOmplLEl0ZW1JbmRpY2F0b3I6ZXQsTGFiZWw6dHQsUmFkaW9Hcm91cDpvdCxSYWRpb0l0ZW06bnQsU3ViOml0LFN1YkNvbnRlbnQ6dXQsU3ViVHJpZ2dlcjpsdCxGaWx0ZXI6UWV9LGh0PXtSb290OmZ0LFRyaWdnZXI6ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSG92ZXJDYXJkVHJpZ2dlciIscHJvcHM6e3JlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYSJ9fSxzZXR1cChlKXtjb25zdHtmb3J3YXJkUmVmOnQsY3VycmVudEVsZW1lbnQ6b309aSgpLGE9cHQoKTtmdW5jdGlvbiBoYW5kbGVMZWF2ZSgpe3NldFRpbWVvdXQoKCk9PnthLmlzUG9pbnRlckluVHJhbnNpdFJlZi52YWx1ZXx8YS5vcGVuLnZhbHVlfHxhLm9uQ2xvc2UoKX0sMCl9cmV0dXJuIGEudHJpZ2dlckVsZW1lbnQ9bywoZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKEMpLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTplLnJlZmVyZW5jZX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKG4pLHtyZWY6ci51bnJlZih0KSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLCJkYXRhLXN0YXRlIjpyLnVucmVmKGEpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLCJkYXRhLWdyYWNlLWFyZWEtdHJpZ2dlciI6IiIsb25Qb2ludGVyZW50ZXI6b1swXXx8KG9bMF09ZT0+ci51bnJlZihleGNsdWRlVG91Y2gpKHIudW5yZWYoYSkub25PcGVuKShlKSksb25Qb2ludGVybGVhdmU6b1sxXXx8KG9bMV09ZT0+ci51bnJlZihleGNsdWRlVG91Y2gpKGhhbmRsZUxlYXZlKShlKSksb25Gb2N1czpvWzJdfHwob1syXT1lPT5yLnVucmVmKGEpLm9uT3BlbigpKSxvbkJsdXI6b1szXXx8KG9bM109ZT0+ci51bnJlZihhKS5vbkNsb3NlKCkpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiLCJkYXRhLXN0YXRlIl0pXSksXzozfSw4LFsicmVmZXJlbmNlIl0pKX19KSxQb3J0YWw6dnQsQ29udGVudDpndCxBcnJvdzpzdH0scXQ9e1Jvb3Q6TWUsVHJpZ2dlcjpVZSxQb3J0YWw6TGUsQ29udGVudDp6ZSxBcnJvdzpJZSxDbG9zZTpUZSxBbmNob3I6RWV9LEJ0PXttZXRhOiIiLGN0cmw6IiIsYWx0OiIiLHdpbjoi4oqeIixjb21tYW5kOiLijJgiLHNoaWZ0OiLih6ciLGNvbnRyb2w6IuKMgyIsb3B0aW9uOiLijKUiLGVudGVyOiLihrUiLGRlbGV0ZToi4oymIixiYWNrc3BhY2U6IuKMqyIsZXNjYXBlOiJFc2MiLHRhYjoi4oelIixjYXBzbG9jazoi4oeqIixhcnJvd3VwOiLihpEiLGFycm93cmlnaHQ6IuKGkiIsYXJyb3dkb3duOiLihpMiLGFycm93bGVmdDoi4oaQIixwYWdldXA6IuKHniIscGFnZWRvd246IuKHnyIsaG9tZToi4oaWIixlbmQ6IuKGmCJ9LGJ0PWEoKCk9Pntjb25zdCBlPXIuY29tcHV0ZWQoKCk9PiExKSx0PXIucmVhY3RpdmUoe21ldGE6IiAiLGFsdDoiICIsY3RybDoiICJ9KTtyZXR1cm57bWFjT1M6ZSxnZXRLYmRLZXk6ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm5bIm1ldGEiLCJhbHQiLCJjdHJsIl0uaW5jbHVkZXMoZSk/dFtlXTpCdFtlXXx8ZX19fSksd3Q9e2Jhc2U6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0xIHJvdW5kZWQtc20gZm9udC1tZWRpdW0gZm9udC1zYW5zIHVwcGVyY2FzZSIsdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIifSxzaXplOntzbToiaC00IG1pbi13LVsxNnB4XSB0ZXh0LVsxMHB4XSIsbWQ6ImgtNSBtaW4tdy1bMjBweF0gdGV4dC1bMTFweF0iLGxnOiJoLTYgbWluLXctWzI0cHhdIHRleHQtWzEycHhdIn19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvNTAgdGV4dC1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAgdGV4dC1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIHRleHQtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vNTAgdGV4dC1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCB0ZXh0LXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvNTAgdGV4dC1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtcHJpbWFyeSBiZy1wcmltYXJ5LzEwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBiZy1zZWNvbmRhcnkvMTAifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgYmctc3VjY2Vzcy8xMCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtaW5mbyBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC13YXJuaW5nIGJnLXdhcm5pbmcvMTAifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1lcnJvciBiZy1lcnJvci8xMCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvMjUgYmctcHJpbWFyeS8xMCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUgYmctc2Vjb25kYXJ5LzEwIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSBiZy1zdWNjZXNzLzEwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWluZm8gcmluZyByaW5nLWluc2V0IHJpbmctaW5mby8yNSBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSBiZy13YXJuaW5nLzEwIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSBiZy1lcnJvci8xMCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9XSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6Im91dGxpbmUiLGNvbG9yOiJuZXV0cmFsIixzaXplOiJtZCJ9fSxDdD17X19uYW1lOiJVS2JkIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJrYmQifSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoYSl7Y29uc3QgaT1hLHtnZXRLYmRLZXk6dX09YnQoKSxsPWUoKSxkPXQoImtiZCIsaSkscz1yLmNvbXB1dGVkKCgpPT5vKHtleHRlbmQ6byh3dCksLi4ubC51aT8ua2JkfHx7fX0pKTtyZXR1cm4oZSx0LG8sbCk9Pnt0KEgoci51bnJlZihuKSxyLm1lcmdlUHJvcHMoe2FzOmEuYXMsY2xhc3M6cy52YWx1ZSh7Y2xhc3M6W3IudW5yZWYoZCk/LmJhc2UsaS5jbGFzc10sY29sb3I6aS5jb2xvcix2YXJpYW50OmkudmFyaWFudCxzaXplOmkuc2l6ZX0pfSxsKSx7ZGVmYXVsdDpyLndpdGhDdHgoKHQsbyxuLGkpPT57aWYoIW8pcmV0dXJuW3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse30sKCk9PltyLmNyZWF0ZVRleHRWTm9kZShyLnRvRGlzcGxheVN0cmluZyhyLnVucmVmKHUpKGEudmFsdWUpKSwxKV0pXTtYKGUuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+e28oYCR7WShyLnVucmVmKHUpKGEudmFsdWUpKX1gKX0sbyxuLGkpfSksXzozfSxvKSl9fX0sa3Q9Q3Quc2V0dXA7Q3Quc2V0dXA9KGUsdCk9Pntjb25zdCBvPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihvLm1vZHVsZXN8fChvLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9LYmQudnVlIiksa3Q/a3QoZSx0KTp2b2lkIDB9O2V4cG9ydHtkdCBhcyBELGh0IGFzIEgscXQgYXMgUCxDdCBhcyBfLHVzZUdyYWNlQXJlYSBhcyBhLEdlIGFzIGIsWGUgYXMgYyxtdCBhcyBkLGJ0IGFzIGUsdXNlQXJyb3dOYXZpZ2F0aW9uIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD1LYmQtQVdHSnZlWEsubWpzLm1hcAo=", "chunks/build/Label-BUWLzyGL.mjs": "aW1wb3J0e3YgYXMgZSxNIGFzIHIsUCBhcyB0fWZyb20iLi9zZXJ2ZXIubWpzIjt2YXIgbz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9fSxzZXR1cChvKXtjb25zdCBhPW87cmV0dXJuIHIoKSwocixvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHQpLGUubWVyZ2VQcm9wcyhhLHtvbk1vdXNlZG93bjpvWzBdfHwob1swXT1lPT57IWUuZGVmYXVsdFByZXZlbnRlZCYmZS5kZXRhaWw+MSYmZS5wcmV2ZW50RGVmYXVsdCgpfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtleHBvcnR7byBhcyBMfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGFiZWwtQlVXTHp5R0wubWpzLm1hcAo=", "chunks/build/Modal-B0yWPxW_.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBvLGUgYXMgbCxFIGFzIHIsRiBhcyBhLEcgYXMgbixrIGFzIHMsdCBhcyBjLFkgYXMgaSxfIGFzIGQsSiBhcyB1LE0gYXMgcCxQIGFzIGYsVCBhcyB5LGFyIGFzIG0sUSBhcyB2LFMgYXMgayxtIGFzIEJ9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHt1IGFzIEMsYiBhcyBoLGEgYXMgeCxGIGFzIGcsRCBhcyB3LGcgYXMgX31mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7cCBhcyBifWZyb20iLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0e2YgYXMgUyxnIGFzICQscSBhcyBWLGogYXMgTn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0W0QscV09QigiRGlhbG9nUm9vdCIpO3ZhciBPPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJEaWFsb2dSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cCh0LHtlbWl0Om99KXtjb25zdCBsPXQscj1rKGwsIm9wZW4iLG8se2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09bC5vcGVufSksYT1lLnJlZigpLG49ZS5yZWYoKSx7bW9kYWw6c309ZS50b1JlZnMobCk7cmV0dXJuIHEoe29wZW46cixtb2RhbDpzLG9wZW5Nb2RhbDooKT0+e3IudmFsdWU9ITB9LG9uT3BlbkNoYW5nZTplPT57ci52YWx1ZT1lfSxvbk9wZW5Ub2dnbGU6KCk9PntyLnZhbHVlPSFyLnZhbHVlfSxjb250ZW50SWQ6IiIsdGl0bGVJZDoiIixkZXNjcmlwdGlvbklkOiIiLHRyaWdnZXJFbGVtZW50OmEsY29udGVudEVsZW1lbnQ6bn0pLCh0LG8pPT5lLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmUudW5yZWYociksY2xvc2U6KCk9PnIudmFsdWU9ITF9KX19KSxQPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ0Nsb3NlIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBvPXQ7cCgpO2NvbnN0IGw9RCgpO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZiksZS5tZXJnZVByb3BzKG8se3R5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCxvbkNsaWNrOnJbMF18fChyWzBdPXQ9PmUudW5yZWYobCkub25PcGVuQ2hhbmdlKCExKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIl0pKX19KSxBPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ0NvbnRlbnRJbXBsIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFwRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHQse2VtaXQ6b30pe2NvbnN0IGw9dCxyPW8sYT1EKCkse2ZvcndhcmRSZWY6bixjdXJyZW50RWxlbWVudDpzfT1wKCk7cmV0dXJuIGEudGl0bGVJZHx8PUModm9pZCAwLCJyZWthLWRpYWxvZy10aXRsZSIpLGEuZGVzY3JpcHRpb25JZHx8PUModm9pZCAwLCJyZWthLWRpYWxvZy1kZXNjcmlwdGlvbiIpLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZykseyJhcy1jaGlsZCI6IiIsbG9vcDoiIix0cmFwcGVkOmwudHJhcEZvY3VzLG9uTW91bnRBdXRvRm9jdXM6b1s1XXx8KG9bNV09ZT0+cigib3BlbkF1dG9Gb2N1cyIsZSkpLG9uVW5tb3VudEF1dG9Gb2N1czpvWzZdfHwob1s2XT1lPT5yKCJjbG9zZUF1dG9Gb2N1cyIsZSkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodyksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKGEpLmNvbnRlbnRJZCxyZWY6ZS51bnJlZihuKSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOnQuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLHJvbGU6ImRpYWxvZyIsImFyaWEtZGVzY3JpYmVkYnkiOmUudW5yZWYoYSkuZGVzY3JpcHRpb25JZCwiYXJpYS1sYWJlbGxlZGJ5IjplLnVucmVmKGEpLnRpdGxlSWQsImRhdGEtc3RhdGUiOmUudW5yZWYoXykoZS51bnJlZihhKS5vcGVuLnZhbHVlKX0sdC4kYXR0cnMse29uRGlzbWlzczpvWzBdfHwob1swXT10PT5lLnVucmVmKGEpLm9uT3BlbkNoYW5nZSghMSkpLG9uRXNjYXBlS2V5RG93bjpvWzFdfHwob1sxXT1lPT5yKCJlc2NhcGVLZXlEb3duIixlKSksb25Gb2N1c091dHNpZGU6b1syXXx8KG9bMl09ZT0+cigiZm9jdXNPdXRzaWRlIixlKSksb25JbnRlcmFjdE91dHNpZGU6b1szXXx8KG9bM109ZT0+cigiaW50ZXJhY3RPdXRzaWRlIixlKSksb25Qb2ludGVyRG93bk91dHNpZGU6b1s0XXx8KG9bNF09ZT0+cigicG9pbnRlckRvd25PdXRzaWRlIixlKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFzIiwiYXMtY2hpbGQiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYS1sYWJlbGxlZGJ5IiwiZGF0YS1zdGF0ZSJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLEY9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nQ29udGVudE1vZGFsIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFwRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHQse2VtaXQ6b30pe2NvbnN0IGw9dCxyPW8sYT1EKCksbj1tKHIpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6Y309cCgpO3JldHVybiBoKGMpLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEEsZS5tZXJnZVByb3BzKHsuLi5sLC4uLmUudW5yZWYobil9LHtyZWY6ZS51bnJlZihzKSwidHJhcC1mb2N1cyI6ZS51bnJlZihhKS5vcGVuLnZhbHVlLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiEwLG9uQ2xvc2VBdXRvRm9jdXM6b1swXXx8KG9bMF09dD0+e3QuZGVmYXVsdFByZXZlbnRlZHx8KHQucHJldmVudERlZmF1bHQoKSxlLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cygpKX0pLG9uUG9pbnRlckRvd25PdXRzaWRlOm9bMV18fChvWzFdPWU9Pntjb25zdCB0PWUuZGV0YWlsLm9yaWdpbmFsRXZlbnQsbz0wPT09dC5idXR0b24mJiEwPT09dC5jdHJsS2V5OygyPT09dC5idXR0b258fG8pJiZlLnByZXZlbnREZWZhdWx0KCl9KSxvbkZvY3VzT3V0c2lkZTpvWzJdfHwob1syXT1lPT57ZS5wcmV2ZW50RGVmYXVsdCgpfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxJPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ0NvbnRlbnROb25Nb2RhbCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cCh0LHtlbWl0Om99KXtjb25zdCBsPXQscj1tKG8pO3AoKTtjb25zdCBhPUQoKSxuPWUucmVmKCExKSxzPWUucmVmKCExKTtyZXR1cm4odCxvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhBLGUubWVyZ2VQcm9wcyh7Li4ubCwuLi5lLnVucmVmKHIpfSx7InRyYXAtZm9jdXMiOiExLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uQ2xvc2VBdXRvRm9jdXM6b1swXXx8KG9bMF09dD0+e3QuZGVmYXVsdFByZXZlbnRlZHx8KG4udmFsdWV8fGUudW5yZWYoYSkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCksdC5wcmV2ZW50RGVmYXVsdCgpKSxuLnZhbHVlPSExLHMudmFsdWU9ITF9KSxvbkludGVyYWN0T3V0c2lkZTpvWzFdfHwob1sxXT10PT57dC5kZWZhdWx0UHJldmVudGVkfHwobi52YWx1ZT0hMCwicG9pbnRlcmRvd24iPT09dC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiYocy52YWx1ZT0hMCkpO2NvbnN0IG89dC50YXJnZXQsbD1lLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyhvKTtsJiZ0LnByZXZlbnREZWZhdWx0KCksImZvY3VzaW4iPT09dC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiZzLnZhbHVlJiZ0LnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFQ9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHQse2VtaXQ6b30pe2NvbnN0IGw9dCxyPW8sYT1EKCksbj1tKHIpLHtmb3J3YXJkUmVmOnN9PXAoKTtyZXR1cm4odCxvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHYpLHtwcmVzZW50OnQuZm9yY2VNb3VudHx8ZS51bnJlZihhKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKGEpLm1vZGFsLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRixlLm1lcmdlUHJvcHMoe2tleTowLHJlZjplLnVucmVmKHMpfSx7Li4ubCwuLi5lLnVucmVmKG4pLC4uLnQuJGF0dHJzfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhJLGUubWVyZ2VQcm9wcyh7a2V5OjEscmVmOmUudW5yZWYocyl9LHsuLi5sLC4uLmUudW5yZWYobiksLi4udC4kYXR0cnN9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nRGVzY3JpcHRpb24iLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoicCJ9fSxzZXR1cCh0KXtjb25zdCBvPXQ7cCgpO2NvbnN0IGw9RCgpO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZiksZS5tZXJnZVByb3BzKG8se2lkOmUudW5yZWYobCkuZGVzY3JpcHRpb25JZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxqPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ092ZXJsYXlJbXBsIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3Qgbz1EKCk7cmV0dXJuIHgoITApLHAoKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGYpLHthczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJkYXRhLXN0YXRlIjplLnVucmVmKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLHN0eWxlOnsicG9pbnRlci1ldmVudHMiOiJhdXRvIn19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiXSkpfX0pLE09ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nT3ZlcmxheSIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3Qgbz1EKCkse2ZvcndhcmRSZWY6bH09cCgpO3JldHVybih0LHIpPT5lLnVucmVmKG8pPy5tb2RhbC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodikse2tleTowLHByZXNlbnQ6dC5mb3JjZU1vdW50fHxlLnVucmVmKG8pLm9wZW4udmFsdWV9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoaixlLm1lcmdlUHJvcHModC4kYXR0cnMse3JlZjplLnVucmVmKGwpLGFzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGR9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxSPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ1BvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IG89dDtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHkpLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMobykpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEs9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nVGl0bGUiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaDIifX0sc2V0dXAodCl7Y29uc3Qgbz10LGw9RCgpO3JldHVybiBwKCksKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmKSxlLm1lcmdlUHJvcHMobyx7aWQ6ZS51bnJlZihsKS50aXRsZUlkfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiXSkpfX0pLEw9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3Qgbz10LGw9RCgpLHtmb3J3YXJkUmVmOnJ9PXAoKTtyZXR1cm4gbC5jb250ZW50SWR8fD1DKHZvaWQgMCwicmVrYS1kaWFsb2ctY29udGVudCIpLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZiksZS5tZXJnZVByb3BzKG8se3JlZjplLnVucmVmKHIpLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCwiYXJpYS1oYXNwb3B1cCI6ImRpYWxvZyIsImFyaWEtZXhwYW5kZWQiOmUudW5yZWYobCkub3Blbi52YWx1ZXx8ITEsImFyaWEtY29udHJvbHMiOmUudW5yZWYobCkub3Blbi52YWx1ZT9lLnVucmVmKGwpLmNvbnRlbnRJZDp2b2lkIDAsImRhdGEtc3RhdGUiOmUudW5yZWYobCkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsb25DbGljazplLnVucmVmKGwpLm9uT3BlblRvZ2dsZX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInR5cGUiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1jb250cm9scyIsImRhdGEtc3RhdGUiLCJvbkNsaWNrIl0pKX19KTtjb25zdCBIPXtzbG90czp7b3ZlcmxheToiZml4ZWQgaW5zZXQtMCIsY29udGVudDoiYmctZGVmYXVsdCBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCBmbGV4IGZsZXgtY29sIGZvY3VzOm91dGxpbmUtbm9uZSIsaGVhZGVyOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHAtNCBzbTpweC02IG1pbi1oLSgtLXVpLWhlYWRlci1oZWlnaHQpIix3cmFwcGVyOiIiLGJvZHk6ImZsZXgtMSBwLTQgc206cC02Iixmb290ZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYiLHRpdGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGZvbnQtc2VtaWJvbGQiLGRlc2NyaXB0aW9uOiJtdC0xIHRleHQtbXV0ZWQgdGV4dC1zbSIsY2xvc2U6ImFic29sdXRlIHRvcC00IGVuZC00In0sdmFyaWFudHM6e3RyYW5zaXRpb246e3RydWU6e292ZXJsYXk6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW2ZhZGUtaW5fMjAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bZmFkZS1vdXRfMjAwbXNfZWFzZS1pbl0iLGNvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzIwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8yMDBtc19lYXNlLWluXSJ9fSxmdWxsc2NyZWVuOnt0cnVlOntjb250ZW50OiJpbnNldC0wIn0sZmFsc2U6e2NvbnRlbnQ6InctW2NhbGMoMTAwdnctMnJlbSldIG1heC13LWxnIHJvdW5kZWQtbGcgc2hhZG93LWxnIHJpbmcgcmluZy1kZWZhdWx0In19LG92ZXJsYXk6e3RydWU6e292ZXJsYXk6ImJnLWVsZXZhdGVkLzc1In19LHNjcm9sbGFibGU6e3RydWU6e292ZXJsYXk6Im92ZXJmbG93LXktYXV0byIsY29udGVudDoicmVsYXRpdmUifSxmYWxzZTp7Y29udGVudDoiZml4ZWQiLGJvZHk6Im92ZXJmbG93LXktYXV0byJ9fX0sY29tcG91bmRWYXJpYW50czpbe3Njcm9sbGFibGU6ITAsZnVsbHNjcmVlbjohMSxjbGFzczp7b3ZlcmxheToiZ3JpZCBwbGFjZS1pdGVtcy1jZW50ZXIgcC00IHNtOnB5LTgifX0se3Njcm9sbGFibGU6ITEsZnVsbHNjcmVlbjohMSxjbGFzczp7Y29udGVudDoidG9wLTEvMiBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgbWF4LWgtW2NhbGMoMTAwZHZoLTJyZW0pXSBzbTptYXgtaC1bY2FsYygxMDBkdmgtNHJlbSldIG92ZXJmbG93LWhpZGRlbiJ9fV19LHo9e19fbmFtZToiVU1vZGFsIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7dGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvdmVybGF5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2Nyb2xsYWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJhZnRlcjpsZWF2ZSIsImFmdGVyOmVudGVyIiwiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAocCx7ZW1pdDpmfSl7Y29uc3QgeT1wLG09Zix2PWUudXNlU2xvdHMoKSx7dDprfT10KCksQj1vKCksQz1sKCJtb2RhbCIseSksaD1yKGEoeSwib3BlbiIsImRlZmF1bHRPcGVuIiwibW9kYWwiKSxtKSx4PW4oZS50b1JlZigoKT0+eS5wb3J0YWwpKSxnPWUudG9SZWYoKCk9PnkuY29udGVudCksdz1lLmNvbXB1dGVkKCgpPT57aWYoIXkuZGlzbWlzc2libGUpe3JldHVyblsiaW50ZXJhY3RPdXRzaWRlIiwiZXNjYXBlS2V5RG93biJdLnJlZHVjZSgoZSx0KT0+KGVbdF09ZT0+e2UucHJldmVudERlZmF1bHQoKSxtKCJjbG9zZTpwcmV2ZW50Iil9LGUpLHt9KX1yZXR1cm57cG9pbnRlckRvd25PdXRzaWRlOmU9PmIoZSx7c2Nyb2xsYWJsZTp5LnNjcm9sbGFibGV9KX19KSxbXyxEXT1zKCkscT1lLmNvbXB1dGVkKCgpPT5jKHtleHRlbmQ6YyhIKSwuLi5CLnVpPy5tb2RhbHx8e319KSh7dHJhbnNpdGlvbjp5LnRyYW5zaXRpb24sZnVsbHNjcmVlbjp5LmZ1bGxzY3JlZW4sb3ZlcmxheTp5Lm92ZXJsYXksc2Nyb2xsYWJsZTp5LnNjcm9sbGFibGV9KSk7cmV0dXJuKHQsbyxsLHIpPT57byhTKGUudW5yZWYoTyksZS5tZXJnZVByb3BzKGUudW5yZWYoaCkscikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3BlbjpvLGNsb3NlOmx9LHIsYSxuKT0+e2lmKCFyKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXyksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVCksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6cS52YWx1ZS5jb250ZW50KHtjbGFzczpbIXYuZGVmYXVsdCYmeS5jbGFzcyxlLnVucmVmKEMpPy5jb250ZW50XX0pfSxnLnZhbHVlLHtvbkFmdGVyRW50ZXI6ZT0+bSgiYWZ0ZXI6ZW50ZXIiKSxvbkFmdGVyTGVhdmU6ZT0+bSgiYWZ0ZXI6bGVhdmUiKX0sZS50b0hhbmRsZXJzKHcudmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlshcC50aXRsZSYmIXYudGl0bGV8fCFwLmRlc2NyaXB0aW9uJiYhdi5kZXNjcmlwdGlvbnx8di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihpKSx7a2V5OjB9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AudGl0bGV8fHYudGl0bGU/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihLKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MH0pKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uP3YuY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudCIse2Nsb3NlOmx9LCgpPT5bdi5oZWFkZXJ8fHAudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb258fHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6cS52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoQyk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTpsfSwoKT0+W3AudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnEudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZihDKT8ud3JhcHBlcn0pfSxbcC50aXRsZXx8di50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6cS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihDKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpxLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiYWN0aW9ucyIpLHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFApLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNsb3NlIix7dWk6cS52YWx1ZX0sKCk9Plt5LmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCxlLm1lcmdlUHJvcHMoe2tleTowLGljb246cC5jbG9zZUljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihrKSgibW9kYWwuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiB5LmNsb3NlP3kuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6cS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZihDKT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHYuYm9keT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6cS52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKEMpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImJvZHkiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6cS52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoQyk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImNsYXNzIiwib25BZnRlckVudGVyIiwib25BZnRlckxlYXZlIl0pXSksXzoyfSwxMDI0KSx2LmRlZmF1bHQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEwpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLGNsYXNzOnkuY2xhc3N9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46b30pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoUiksZS51bnJlZih4KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLnNjcm9sbGFibGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE0pLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6cS52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKEMpPy5vdmVybGF5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3Aub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXSw2NCkpXSksXzoxfSldKSxfOjF9LDE2KV07cihTKGUudW5yZWYoXyksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8scixhLG4pPT57aWYoIXIpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihUKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpxLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshdi5kZWZhdWx0JiZ5LmNsYXNzLGUudW5yZWYoQyk/LmNvbnRlbnRdfSl9LGcudmFsdWUse29uQWZ0ZXJFbnRlcjplPT5tKCJhZnRlcjplbnRlciIpLG9uQWZ0ZXJMZWF2ZTplPT5tKCJhZnRlcjpsZWF2ZSIpfSxlLnRvSGFuZGxlcnMody52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyFwLnRpdGxlJiYhdi50aXRsZXx8IXAuZGVzY3JpcHRpb24mJiF2LmRlc2NyaXB0aW9ufHx2LmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGkpLHtrZXk6MH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bcC50aXRsZXx8di50aXRsZT92LmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowfSkpLHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6bH0sKCk9Plt2LmhlYWRlcnx8cC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbnx8eS5jbG9zZXx8di5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpxLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihDKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOmx9LCgpPT5bcC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6cS52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSl9LFtwLnRpdGxlfHx2LnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihLKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpxLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKEMpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEUpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnEudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoQyk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJhY3Rpb25zIikseS5jbG9zZXx8di5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUCkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY2xvc2UiLHt1aTpxLnZhbHVlfSwoKT0+W3kuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjpwLmNsb3NlSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGspKCJtb2RhbC5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIHkuY2xvc2U/eS5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczpxLnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKEMpPy5jbG9zZX0pfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksXzoyfSwxMDI0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5ib2R5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpxLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoQyk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiYm9keSIse2Nsb3NlOmx9KV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx2LmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpxLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImZvb3RlciIse2Nsb3NlOmx9KV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksXzoyfSwxMDQwLFsiY2xhc3MiLCJvbkFmdGVyRW50ZXIiLCJvbkFmdGVyTGVhdmUiXSldO3IoUyhlLnVucmVmKFQpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnEudmFsdWUuY29udGVudCh7Y2xhc3M6WyF2LmRlZmF1bHQmJnkuY2xhc3MsZS51bnJlZihDKT8uY29udGVudF19KX0sZy52YWx1ZSx7b25BZnRlckVudGVyOmU9Pm0oImFmdGVyOmVudGVyIiksb25BZnRlckxlYXZlOmU9Pm0oImFmdGVyOmxlYXZlIil9LGUudG9IYW5kbGVycyh3LnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLHIsYSxuKT0+e2lmKCFyKXJldHVyblshcC50aXRsZSYmIXYudGl0bGV8fCFwLmRlc2NyaXB0aW9uJiYhdi5kZXNjcmlwdGlvbnx8di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihpKSx7a2V5OjB9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AudGl0bGV8fHYudGl0bGU/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihLKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MH0pKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uP3YuY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudCIse2Nsb3NlOmx9LCgpPT5bdi5oZWFkZXJ8fHAudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb258fHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6cS52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoQyk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTpsfSwoKT0+W3AudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnEudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZihDKT8ud3JhcHBlcn0pfSxbcC50aXRsZXx8di50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6cS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihDKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpxLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiYWN0aW9ucyIpLHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFApLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNsb3NlIix7dWk6cS52YWx1ZX0sKCk9Plt5LmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCxlLm1lcmdlUHJvcHMoe2tleTowLGljb246cC5jbG9zZUljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihrKSgibW9kYWwuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiB5LmNsb3NlP3kuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6cS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZihDKT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHYuYm9keT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6cS52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKEMpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImJvZHkiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6cS52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoQyk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07IXAudGl0bGUmJiF2LnRpdGxlfHwhcC5kZXNjcmlwdGlvbiYmIXYuZGVzY3JpcHRpb258fHYuY29udGVudD9yKFMoZS51bnJlZihpKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgobyxsLHIsYSk9PntpZighbClyZXR1cm5bcC50aXRsZXx8di50aXRsZT92LmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowfSkpLHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEUpLHtrZXk6Mn0pKV07cC50aXRsZXx8di50aXRsZT92LmNvbnRlbnQ/bChTKGUudW5yZWYoSyksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8sbCxyLGEpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC50aXRsZSksMSldKV07JCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT57bChgJHtWKHAudGl0bGUpfWApfSxsLHIsYSl9KSxfOjJ9LHIsYSkpOmwoIlx4M2MhLS0tLVx4M2UiKTpsKFMoZS51bnJlZihLKSxudWxsLG51bGwscixhKSkscC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj92LmNvbnRlbnQ/bChTKGUudW5yZWYoRSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8sbCxyLGEpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV07JCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT57bChgJHtWKHAuZGVzY3JpcHRpb24pfWApfSxsLHIsYSl9KSxfOjJ9LHIsYSkpOmwoIlx4M2MhLS0tLVx4M2UiKTpsKFMoZS51bnJlZihFKSxudWxsLG51bGwscixhKSl9KSxfOjJ9LGEsbikpOnIoIlx4M2MhLS0tLVx4M2UiKSwkKHQuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6bH0sKCk9Pnt2LmhlYWRlcnx8cC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbnx8eS5jbG9zZXx8di5jbG9zZT8ocihgPGRpdiBkYXRhLXNsb3Q9ImhlYWRlciIgY2xhc3M9IiR7TihxLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihDKT8uaGVhZGVyfSkpfSIke259PmApLCQodC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOmx9LCgpPT57cC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj8ocihgPGRpdiBkYXRhLXNsb3Q9IndyYXBwZXIiIGNsYXNzPSIke04ocS52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSkpfSIke259PmApLHAudGl0bGV8fHYudGl0bGU/cihTKGUudW5yZWYoSykseyJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6cS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihDKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGwscixhKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAudGl0bGUpLDEpXSldOyQodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+e2woYCR7VihwLnRpdGxlKX1gKX0sbCxyLGEpfSksXzoyfSxhLG4pKTpyKCJceDNjIS0tLS1ceDNlIikscC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj9yKFMoZS51bnJlZihFKSx7ImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpxLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKG8sbCxyLGEpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV07JCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT57bChgJHtWKHAuZGVzY3JpcHRpb24pfWApfSxsLHIsYSl9KSxfOjJ9LGEsbikpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLCQodC4kc2xvdHMsImFjdGlvbnMiLHt9LG51bGwscixhLG4pLHkuY2xvc2V8fHYuY2xvc2U/cihTKGUudW5yZWYoUCkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgobyxsLHIsYSk9PntpZighbClyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjbG9zZSIse3VpOnEudmFsdWV9LCgpPT5beS5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQsZS5tZXJnZVByb3BzKHtrZXk6MCxpY29uOnAuY2xvc2VJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoaykoIm1vZGFsLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgeS5jbG9zZT95LmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnEudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoQyk/LmNsb3NlfSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldOyQodC4kc2xvdHMsImNsb3NlIix7dWk6cS52YWx1ZX0sKCk9Pnt5LmNsb3NlP2woUyhkLGUubWVyZ2VQcm9wcyh7aWNvbjpwLmNsb3NlSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGspKCJtb2RhbC5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIHkuY2xvc2U/eS5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczpxLnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKEMpPy5jbG9zZX0pfSksbnVsbCxyLGEpKTpsKCJceDNjIS0tLS1ceDNlIil9LGwscixhKX0pLF86Mn0sYSxuKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLGEsbikscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSx2LmJvZHk/KHIoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtOKHEudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZihDKT8uYm9keX0pKX0iJHtufT5gKSwkKHQuJHNsb3RzLCJib2R5Iix7Y2xvc2U6bH0sbnVsbCxyLGEsbikscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSx2LmZvb3Rlcj8ocihgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7TihxLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSkpfSIke259PmApLCQodC4kc2xvdHMsImZvb3RlciIse2Nsb3NlOmx9LG51bGwscixhLG4pLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIil9LHIsYSxuKX0pLF86Mn0sYSxuKSl9KSxfOjJ9LGEsbikpLHYuZGVmYXVsdD9yKFMoZS51bnJlZihMKSx7ImFzLWNoaWxkIjoiIixjbGFzczp5LmNsYXNzfSx7ZGVmYXVsdDplLndpdGhDdHgoKGwscixhLG4pPT57aWYoIXIpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46b30pXTskKHQuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpvfSxudWxsLHIsYSxuKX0pLF86Mn0sYSxuKSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoUyhlLnVucmVmKFIpLGUudW5yZWYoeCkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8sbCxyKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLnNjcm9sbGFibGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE0pLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6cS52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKEMpPy5vdmVybGF5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3Aub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXSw2NCkpXSksXzoxfSldO28oUyhlLnVucmVmKHUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8sbCxyKT0+e2lmKCFvKXJldHVybltwLnNjcm9sbGFibGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE0pLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6cS52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKEMpPy5vdmVybGF5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3Aub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXSw2NCkpXTtwLnNjcm9sbGFibGU/byhTKGUudW5yZWYoTSkseyJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8sbCxyKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXTtvKFMoZS51bnJlZihEKSxudWxsLG51bGwsbCxyKSl9KSxfOjJ9LGwscikpOihvKCJceDNjIS0tWy0tXHgzZSIpLHAub3ZlcmxheT9vKFMoZS51bnJlZihNKSx7ImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnEudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZihDKT8ub3ZlcmxheX0pfSxudWxsLGwscikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKFMoZS51bnJlZihEKSxudWxsLG51bGwsbCxyKSksbygiXHgzYyEtLV0tLVx4M2UiKSl9KSxfOjJ9LGwscikpfSksXzoyfSxhLG4pKX0pLF86M30sbCkpfX19LFU9ei5zZXR1cDt6LnNldHVwPSh0LG8pPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvTW9kYWwudnVlIiksVT9VKHQsbyk6dm9pZCAwfTtleHBvcnR7TCBhcyBELHogYXMgXyxLIGFzIGEsRSBhcyBiLFIgYXMgYyxNIGFzIGQsVCBhcyBlLFAgYXMgZixPIGFzIGd9OwovLyMgc291cmNlTWFwcGluZ1VSTD1Nb2RhbC1CMHlXUHhXXy5tanMubWFwCg==", "chunks/build/NavigationMenu-dNaFFhma.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBsLEUgYXMgYSxGIGFzIG4sayBhcyBpLHQgYXMgbyxJIGFzIHIsZyBhcyBjLEwgYXMgcyxiIGFzIGQsSyBhcyB1LGFoIGFzIGYsYWkgYXMgdixhaiBhcyBwLE0gYXMgaCxOIGFzIGssUCBhcyBtLGExIGFzIGcsWSBhcyBMLEcgYXMgYixKIGFzIHgsciBhcyB5LGFrIGFzIEksUSBhcyBDLFogYXMgQixTIGFzIHcsYWwgYXMgVixtIGFzIF8sWCBhcyBOLFYgYXMgUyxhbSBhcyBEfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBFfWZyb20iLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnR7aSBhcyBQfWZyb20iLi9pc1ZhbHVlRXF1YWxPckV4aXN0LURtUHluNWJOLm1qcyI7aW1wb3J0e0ggYXMgJCxQIGFzIFQsdSBhcyBxfWZyb20iLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnR7dSBhcyB6LEQgYXMgT31mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7YUUgYXMgSyxhWCBhcyBBfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7XyBhcyBSfWZyb20iLi9CYWRnZS1CQjBLbE1RVi5tanMiO2ltcG9ydHtwIGFzIE19ZnJvbSIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtpbXBvcnR7XyBhcyBGfWZyb20iLi9Ub29sdGlwLUJQOHpiOERLLm1qcyI7aW1wb3J0e2YgYXMgVyxnIGFzIEgsaixxIGFzIFUsayBhcyBYLHQgYXMgR31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0W0osUV09XygiQ29sbGFwc2libGVSb290Iik7dmFyIFk9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29sbGFwc2libGVSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAodCx7ZXhwb3NlOmwsZW1pdDphfSl7Y29uc3Qgbj10LGk9dyhuLCJvcGVuIixhLHtkZWZhdWx0VmFsdWU6bi5kZWZhdWx0T3BlbixwYXNzaXZlOnZvaWQgMD09PW4ub3Blbn0pLHtkaXNhYmxlZDpvLHVubW91bnRPbkhpZGU6cn09ZS50b1JlZnMobik7cmV0dXJuIFEoe2NvbnRlbnRJZDoiIixkaXNhYmxlZDpvLG9wZW46aSx1bm1vdW50T25IaWRlOnIsb25PcGVuVG9nZ2xlOigpPT57by52YWx1ZXx8KGkudmFsdWU9IWkudmFsdWUpfX0pLGwoe29wZW46aX0pLGgoKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHthczp0LmFzLCJhcy1jaGlsZCI6bi5hc0NoaWxkLCJkYXRhLXN0YXRlIjplLnVucmVmKGkpPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihvKT8iIjp2b2lkIDB9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46ZS51bnJlZihpKX0pXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIl0pKX19KSxaPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJDb2xsYXBzaWJsZUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiY29udGVudEZvdW5kIl0sc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3QgYT10LG49bCxpPUooKTtpLmNvbnRlbnRJZHx8PXoodm9pZCAwLCJyZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQiKTtjb25zdCBvPWUucmVmKCkse2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDpjfT1oKCkscz1lLnJlZigwKSxkPWUucmVmKDApLHU9ZS5jb21wdXRlZCgoKT0+aS5vcGVuLnZhbHVlKSxmPWUucmVmKHUudmFsdWUpLHY9ZS5yZWYoKTtlLndhdGNoKCgpPT5bdS52YWx1ZSxvLnZhbHVlPy5wcmVzZW50XSxhc3luYygpPT57YXdhaXQgZS5uZXh0VGljaygpO2NvbnN0IHQ9Yy52YWx1ZTtpZighdClyZXR1cm47di52YWx1ZT12LnZhbHVlfHx7dHJhbnNpdGlvbkR1cmF0aW9uOnQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uLGFuaW1hdGlvbk5hbWU6dC5zdHlsZS5hbmltYXRpb25OYW1lfSx0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj0iMHMiLHQuc3R5bGUuYW5pbWF0aW9uTmFtZT0ibm9uZSI7Y29uc3QgbD10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2QudmFsdWU9bC5oZWlnaHQscy52YWx1ZT1sLndpZHRoLGYudmFsdWV8fCh0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj12LnZhbHVlLnRyYW5zaXRpb25EdXJhdGlvbix0LnN0eWxlLmFuaW1hdGlvbk5hbWU9di52YWx1ZS5hbmltYXRpb25OYW1lKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHA9ZS5jb21wdXRlZCgoKT0+Zi52YWx1ZSYmaS5vcGVuLnZhbHVlKTtyZXR1cm4gVihjLCJiZWZvcmVtYXRjaCIsZT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2kub25PcGVuVG9nZ2xlKCksbigiY29udGVudEZvdW5kIil9KX0pLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQykse3JlZl9rZXk6InByZXNlbnRSZWYiLHJlZjpvLHByZXNlbnQ6dC5mb3JjZU1vdW50fHxlLnVucmVmKGkpLm9wZW4udmFsdWUsImZvcmNlLW1vdW50IjohMH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh7cHJlc2VudDpsfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobSksZS5tZXJnZVByb3BzKHQuJGF0dHJzLHtpZDplLnVucmVmKGkpLmNvbnRlbnRJZCxyZWY6ZS51bnJlZihyKSwiYXMtY2hpbGQiOmEuYXNDaGlsZCxhczp0LmFzLGhpZGRlbjpsP3ZvaWQgMDplLnVucmVmKGkpLnVubW91bnRPbkhpZGUudmFsdWU/IiI6InVudGlsLWZvdW5kIiwiZGF0YS1zdGF0ZSI6cC52YWx1ZT92b2lkIDA6ZS51bnJlZihpKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihpKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLHN0eWxlOnsiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0IjpgJHtkLnZhbHVlfXB4YCwiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtd2lkdGgiOmAke3MudmFsdWV9cHhgfX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyFlLnVucmVmKGkpLnVubW91bnRPbkhpZGUudmFsdWV8fGw/ZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApXSksXzoyfSwxMDQwLFsiaWQiLCJhcy1jaGlsZCIsImFzIiwiaGlkZGVuIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJzdHlsZSJdKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLGVlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbGxhcHNpYmxlVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3QgbD10O2goKTtjb25zdCBhPUooKTtyZXR1cm4odCxuKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHt0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDAsYXM6dC5hcywiYXMtY2hpbGQiOmwuYXNDaGlsZCwiYXJpYS1jb250cm9scyI6ZS51bnJlZihhKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOmUudW5yZWYoYSkub3Blbi52YWx1ZSwiZGF0YS1zdGF0ZSI6ZS51bnJlZihhKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihhKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLGRpc2FibGVkOmUudW5yZWYoYSkuZGlzYWJsZWQ/LnZhbHVlLG9uQ2xpY2s6ZS51bnJlZihhKS5vbk9wZW5Ub2dnbGV9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidHlwZSIsImFzIiwiYXMtY2hpbGQiLCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1leHBhbmRlZCIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pKX19KTtmdW5jdGlvbiBnZXREZWZhdWx0VHlwZSh7dHlwZTplLGRlZmF1bHRWYWx1ZTp0LG1vZGVsVmFsdWU6bH0pe3JldHVybiBlfHxmdW5jdGlvbih7dHlwZTplLGRlZmF1bHRWYWx1ZTp0LG1vZGVsVmFsdWU6bH0pe2NvbnN0IGE9bHx8dDtyZXR1cm4gdm9pZCAwIT09bHx8dm9pZCAwIT09dD9BcnJheS5pc0FycmF5KGEpPyJtdWx0aXBsZSI6InNpbmdsZSI6ZT8/InNpbmdsZSJ9KHt0eXBlOmUsZGVmYXVsdFZhbHVlOnQsbW9kZWxWYWx1ZTpsfSl9ZnVuY3Rpb24gZ2V0RGVmYXVsdFZhbHVlKHt0eXBlOmUsZGVmYXVsdFZhbHVlOnR9KXtyZXR1cm4gdm9pZCAwIT09dD90OiJzaW5nbGUiPT09ZT92b2lkIDA6W119Y29uc3RbdGUsbGVdPV8oIkFjY29yZGlvblJvb3QiKTt2YXIgYWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQWNjb3JkaW9uUm9vdCIscHJvcHM6e2NvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmVydGljYWwifSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBhPXQsbj1sLHtkaXI6aSxkaXNhYmxlZDpvLHVubW91bnRPbkhpZGU6cn09ZS50b1JlZnMoYSksYz1FKGkpLHttb2RlbFZhbHVlOnMsY2hhbmdlTW9kZWxWYWx1ZTpkLGlzU2luZ2xlOnV9PWZ1bmN0aW9uKHQsbCl7Y29uc3QgYT1lLmNvbXB1dGVkKCgpPT5nZXREZWZhdWx0VHlwZSh0KSksbj13KHQsIm1vZGVsVmFsdWUiLGwse2RlZmF1bHRWYWx1ZTpnZXREZWZhdWx0VmFsdWUodCkscGFzc2l2ZTp2b2lkIDA9PT10Lm1vZGVsVmFsdWUsZGVlcDohMH0pLGk9ZS5jb21wdXRlZCgoKT0+InNpbmdsZSI9PT1hLnZhbHVlKTtyZXR1cm57bW9kZWxWYWx1ZTpuLGNoYW5nZU1vZGVsVmFsdWU6ZnVuY3Rpb24oZSl7aWYoInNpbmdsZSI9PT1hLnZhbHVlKW4udmFsdWU9QShlLG4udmFsdWUpP3ZvaWQgMDplO2Vsc2V7Y29uc3QgdD1BcnJheS5pc0FycmF5KG4udmFsdWUpP1suLi5uLnZhbHVlfHxbXV06W24udmFsdWVdLmZpbHRlcihCb29sZWFuKTtpZihQKHQsZSkpe2NvbnN0IGw9dC5maW5kSW5kZXgodD0+QSh0LGUpKTt0LnNwbGljZShsLDEpfWVsc2UgdC5wdXNoKGUpO24udmFsdWU9dH19LGlzU2luZ2xlOml9fShhLG4pLHtmb3J3YXJkUmVmOmYsY3VycmVudEVsZW1lbnQ6dn09aCgpO3JldHVybiBsZSh7ZGlzYWJsZWQ6byxkaXJlY3Rpb246YyxvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHBhcmVudEVsZW1lbnQ6dixpc1NpbmdsZTp1LGNvbGxhcHNpYmxlOmEuY29sbGFwc2libGUsbW9kZWxWYWx1ZTpzLGNoYW5nZU1vZGVsVmFsdWU6ZCx1bm1vdW50T25IaWRlOnJ9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHtyZWY6ZS51bnJlZihmKSwiYXMtY2hpbGQiOnQuYXNDaGlsZCxhczp0LmFzfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmUudW5yZWYocyl9KV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiXSkpfX0pLG5lPWZ1bmN0aW9uKGUpe3JldHVybiBlLk9wZW49Im9wZW4iLGUuQ2xvc2VkPSJjbG9zZWQiLGV9KG5lfHx7fSk7Y29uc3RbaWUsb2VdPV8oIkFjY29yZGlvbkl0ZW0iKTt2YXIgcmU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQWNjb3JkaW9uSXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0LHtleHBvc2U6bH0pe2NvbnN0IGE9dCxuPXRlKCksaT1lLmNvbXB1dGVkKCgpPT5uLmlzU2luZ2xlLnZhbHVlP2EudmFsdWU9PT1uLm1vZGVsVmFsdWUudmFsdWU6QXJyYXkuaXNBcnJheShuLm1vZGVsVmFsdWUudmFsdWUpJiZuLm1vZGVsVmFsdWUudmFsdWUuaW5jbHVkZXMoYS52YWx1ZSkpLG89ZS5jb21wdXRlZCgoKT0+bi5kaXNhYmxlZC52YWx1ZXx8YS5kaXNhYmxlZCkscj1lLmNvbXB1dGVkKCgpPT5vLnZhbHVlPyIiOnZvaWQgMCksYz1lLmNvbXB1dGVkKCgpPT5pLnZhbHVlP25lLk9wZW46bmUuQ2xvc2VkKTtsKHtvcGVuOmksZGF0YURpc2FibGVkOnJ9KTtjb25zdHtjdXJyZW50UmVmOnMsY3VycmVudEVsZW1lbnQ6ZH09aCgpO2Z1bmN0aW9uIGhhbmRsZUFycm93S2V5KGUpe2NvbnN0IHQ9ZS50YXJnZXQ7aWYoLTE9PT1BcnJheS5mcm9tKG4ucGFyZW50RWxlbWVudC52YWx1ZT8ucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dIik/P1tdKS5maW5kSW5kZXgoZT0+ZT09PXQpKXJldHVybiBudWxsO3EoZSx0LG4ucGFyZW50RWxlbWVudC52YWx1ZSx7YXJyb3dLZXlPcHRpb25zOm4ub3JpZW50YXRpb24sZGlyOm4uZGlyZWN0aW9uLnZhbHVlLGZvY3VzOiEwfSl9cmV0dXJuIG9lKHtvcGVuOmksZGF0YVN0YXRlOmMsZGlzYWJsZWQ6byxkYXRhRGlzYWJsZWQ6cix0cmlnZ2VySWQ6IiIsY3VycmVudFJlZjpzLGN1cnJlbnRFbGVtZW50OmQsdmFsdWU6ZS5jb21wdXRlZCgoKT0+YS52YWx1ZSl9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFkpLHsiZGF0YS1vcmllbnRhdGlvbiI6ZS51bnJlZihuKS5vcmllbnRhdGlvbiwiZGF0YS1kaXNhYmxlZCI6ci52YWx1ZSwiZGF0YS1zdGF0ZSI6Yy52YWx1ZSxkaXNhYmxlZDpvLnZhbHVlLG9wZW46aS52YWx1ZSxhczphLmFzLCJhcy1jaGlsZCI6YS5hc0NoaWxkLCJ1bm1vdW50LW9uLWhpZGUiOmEudW5tb3VudE9uSGlkZT8/ZS51bnJlZihuKS51bm1vdW50T25IaWRlLnZhbHVlLG9uS2V5ZG93bjplLndpdGhLZXlzKGhhbmRsZUFycm93S2V5LFsidXAiLCJkb3duIiwibGVmdCIsInJpZ2h0IiwiaG9tZSIsImVuZCJdKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjppLnZhbHVlfSldKSxfOjN9LDgsWyJkYXRhLW9yaWVudGF0aW9uIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtc3RhdGUiLCJkaXNhYmxlZCIsIm9wZW4iLCJhcyIsImFzLWNoaWxkIiwidW5tb3VudC1vbi1oaWRlIl0pKX19KSxjZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJBY2NvcmRpb25Db250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBsPXQsYT10ZSgpLG49aWUoKTtyZXR1cm4gaCgpLCh0LGkpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoWikse3JvbGU6InJlZ2lvbiIsImFzLWNoaWxkIjpsLmFzQ2hpbGQsYXM6dC5hcywiZm9yY2UtbW91bnQiOmwuZm9yY2VNb3VudCwiYXJpYS1sYWJlbGxlZGJ5IjplLnVucmVmKG4pLnRyaWdnZXJJZCwiZGF0YS1zdGF0ZSI6ZS51bnJlZihuKS5kYXRhU3RhdGUudmFsdWUsImRhdGEtZGlzYWJsZWQiOmUudW5yZWYobikuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjplLnVucmVmKGEpLm9yaWVudGF0aW9uLHN0eWxlOnsiLS1yZWthLWFjY29yZGlvbi1jb250ZW50LXdpZHRoIjoidmFyKC0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKSIsIi0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQiOiJ2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KSJ9LG9uQ29udGVudEZvdW5kOmlbMF18fChpWzBdPXQ9PmUudW5yZWYoYSkuY2hhbmdlTW9kZWxWYWx1ZShlLnVucmVmKG4pLnZhbHVlLnZhbHVlKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyIsImZvcmNlLW1vdW50IiwiYXJpYS1sYWJlbGxlZGJ5IiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLW9yaWVudGF0aW9uIl0pKX19KSxzZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJBY2NvcmRpb25UcmlnZ2VyIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgbD10LGE9dGUoKSxuPWllKCk7ZnVuY3Rpb24gY2hhbmdlSXRlbSgpe2NvbnN0IGU9YS5pc1NpbmdsZS52YWx1ZSYmbi5vcGVuLnZhbHVlJiYhYS5jb2xsYXBzaWJsZTtuLmRpc2FibGVkLnZhbHVlfHxlfHxhLmNoYW5nZU1vZGVsVmFsdWUobi52YWx1ZS52YWx1ZSl9cmV0dXJuIG4udHJpZ2dlcklkfHw9eih2b2lkIDAsInJla2EtYWNjb3JkaW9uLXRyaWdnZXIiKSwodCxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGVlKSx7aWQ6ZS51bnJlZihuKS50cmlnZ2VySWQscmVmOmUudW5yZWYobikuY3VycmVudFJlZiwiZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbSI6IiIsYXM6bC5hcywiYXMtY2hpbGQiOmwuYXNDaGlsZCwiYXJpYS1kaXNhYmxlZCI6ZS51bnJlZihuKS5kaXNhYmxlZC52YWx1ZXx8dm9pZCAwLCJhcmlhLWV4cGFuZGVkIjplLnVucmVmKG4pLm9wZW4udmFsdWV8fCExLCJkYXRhLWRpc2FibGVkIjplLnVucmVmKG4pLmRhdGFEaXNhYmxlZC52YWx1ZSwiZGF0YS1vcmllbnRhdGlvbiI6ZS51bnJlZihhKS5vcmllbnRhdGlvbiwiZGF0YS1zdGF0ZSI6ZS51bnJlZihuKS5kYXRhU3RhdGUudmFsdWUsZGlzYWJsZWQ6ZS51bnJlZihuKS5kaXNhYmxlZC52YWx1ZSxvbkNsaWNrOmNoYW5nZUl0ZW19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiaWQiLCJhcyIsImFzLWNoaWxkIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtZXhwYW5kZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1vcmllbnRhdGlvbiIsImRhdGEtc3RhdGUiLCJkaXNhYmxlZCJdKSl9fSk7ZnVuY3Rpb24gZ2V0T3BlblN0YXRlKGUpe3JldHVybiBlPyJvcGVuIjoiY2xvc2VkIn1mdW5jdGlvbiBtYWtlQ29udGVudElkKGUsdCl7cmV0dXJuYCR7ZX0tY29udGVudC0ke3R9YH1jb25zdCBkZT0ibmF2aWdhdGlvbk1lbnUucm9vdENvbnRlbnREaXNtaXNzIjtmdW5jdGlvbiBnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoZSl7Y29uc3QgdD1bXSxsPSh2b2lkIDApLmNyZWF0ZVRyZWVXYWxrZXIoZSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTplPT57Y29uc3QgdD0iSU5QVVQiPT09ZS50YWdOYW1lJiYiaGlkZGVuIj09PWUudHlwZTtyZXR1cm4gZS5kaXNhYmxlZHx8ZS5oaWRkZW58fHQ/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDplLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7bC5uZXh0Tm9kZSgpOyl0LnB1c2gobC5jdXJyZW50Tm9kZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZm9jdXNGaXJzdChlKXtjb25zdCB0PU4oKTtyZXR1cm4gZS5zb21lKGU9PmU9PT10fHwoZS5mb2N1cygpLE4oKSE9PXQpKX1mdW5jdGlvbiB3aGVuTW91c2UoZSl7cmV0dXJuIHQ9PiJtb3VzZSI9PT10LnBvaW50ZXJUeXBlP2UodCk6dm9pZCAwfWNvbnN0W3VlLGZlXT1fKFsiTmF2aWdhdGlvbk1lbnVSb290IiwiTmF2aWdhdGlvbk1lbnVTdWIiXSwiTmF2aWdhdGlvbk1lbnVDb250ZXh0Iik7dmFyIHZlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik5hdmlnYXRpb25NZW51Um9vdCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGRlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MjAwfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LGRpc2FibGVDbGlja1RyaWdnZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXNhYmxlSG92ZXJUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmF2In19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBhPXQsbj13KGEsIm1vZGVsVmFsdWUiLGwse2RlZmF1bHRWYWx1ZTphLmRlZmF1bHRWYWx1ZT8/IiIscGFzc2l2ZTp2b2lkIDA9PT1hLm1vZGVsVmFsdWV9KSxpPWUucmVmKCIiKSx7Zm9yd2FyZFJlZjpvLGN1cnJlbnRFbGVtZW50OnJ9PWgoKSxjPWUucmVmKCkscz1lLnJlZigpLGQ9ZS5yZWYoKSx7Z2V0SXRlbXM6dSxDb2xsZWN0aW9uU2xvdDpmfT1rKHtrZXk6Ik5hdmlnYXRpb25NZW51Iixpc1Byb3ZpZGVyOiEwfSkse2RlbGF5RHVyYXRpb246dixza2lwRGVsYXlEdXJhdGlvbjpwLGRpcjpMLGRpc2FibGVDbGlja1RyaWdnZXI6YixkaXNhYmxlSG92ZXJUcmlnZ2VyOngsdW5tb3VudE9uSGlkZTp5fT1lLnRvUmVmcyhhKSxJPUUoTCksQz1nKCExLHApLEI9ZS5jb21wdXRlZCgoKT0+IiIhPT1uLnZhbHVlfHxDLnZhbHVlPzE1MDp2LnZhbHVlKSxfPUQoZT0+eyJzdHJpbmciPT10eXBlb2YgZSYmKGkudmFsdWU9bi52YWx1ZSxuLnZhbHVlPWUpfSxCKTtmdW5jdGlvbiBvbkl0ZW1EaXNtaXNzKCl7aS52YWx1ZT1uLnZhbHVlLG4udmFsdWU9IiJ9cmV0dXJuIGUud2F0Y2hFZmZlY3QoKCk9PntpZighbi52YWx1ZSlyZXR1cm47Y29uc3QgZT11KCkubWFwKGU9PmUucmVmKTtkLnZhbHVlPWUuZmluZChlPT5lLmlkLmluY2x1ZGVzKG4udmFsdWUpKX0pLFYocixkZSxvbkl0ZW1EaXNtaXNzKSxmZSh7aXNSb290TWVudTohMCxtb2RlbFZhbHVlOm4scHJldmlvdXNWYWx1ZTppLGJhc2VJZDp6KHZvaWQgMCwicmVrYS1uYXZpZ2F0aW9uLW1lbnUiKSxkaXNhYmxlQ2xpY2tUcmlnZ2VyOmIsZGlzYWJsZUhvdmVyVHJpZ2dlcjp4LGRpcjpJLHVubW91bnRPbkhpZGU6eSxvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHJvb3ROYXZpZ2F0aW9uTWVudTpyLGluZGljYXRvclRyYWNrOmMsYWN0aXZlVHJpZ2dlcjpkLG9uSW5kaWNhdG9yVHJhY2tDaGFuZ2U6ZT0+e2MudmFsdWU9ZX0sdmlld3BvcnQ6cyxvblZpZXdwb3J0Q2hhbmdlOmU9PntzLnZhbHVlPWV9LG9uVHJpZ2dlckVudGVyOmU9PntfKGUpfSxvblRyaWdnZXJMZWF2ZTooKT0+e0MudmFsdWU9ITAsXygiIil9LG9uQ29udGVudEVudGVyOigpPT57XygpfSxvbkNvbnRlbnRMZWF2ZTooKT0+e2EuZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlfHxfKCIiKX0sb25JdGVtU2VsZWN0OmU9PntpLnZhbHVlPW4udmFsdWUsbi52YWx1ZT1lfSxvbkl0ZW1EaXNtaXNzOm9uSXRlbURpc21pc3N9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGYpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLHtyZWY6ZS51bnJlZihvKSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJkYXRhLW9yaWVudGF0aW9uIjp0Lm9yaWVudGF0aW9uLGRpcjplLnVucmVmKEkpLCJkYXRhLXJla2EtbmF2aWdhdGlvbi1tZW51IjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKG4pfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1vcmllbnRhdGlvbiIsImRpciJdKV0pLF86M30pKX19KTtjb25zdFtwZSxoZV09XygiTmF2aWdhdGlvbk1lbnVJdGVtIik7dmFyIGtlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik5hdmlnYXRpb25NZW51SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LHNldHVwKHQpe2NvbnN0IGw9dDtoKCk7Y29uc3R7Z2V0SXRlbXM6YX09ayh7a2V5OiJOYXZpZ2F0aW9uTWVudSJ9KSxuPXVlKCksaT16KGwudmFsdWUpLG89ZS5yZWYoKSxyPWUucmVmKCksYz1tYWtlQ29udGVudElkKG4uYmFzZUlkLGkpO2xldCByZXN0b3JlQ29udGVudFRhYk9yZGVyUmVmPSgpPT4oe30pO2NvbnN0IHM9ZS5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZUNvbnRlbnRFbnRyeShlPSJzdGFydCIpe2NvbnN0IHQ9KHZvaWQgMCkuZ2V0RWxlbWVudEJ5SWQoYyk7aWYodCl7cmVzdG9yZUNvbnRlbnRUYWJPcmRlclJlZigpO2NvbnN0IGw9Z2V0VGFiYmFibGVDYW5kaWRhdGVzKHQpO2wubGVuZ3RoJiZmb2N1c0ZpcnN0KCJzdGFydCI9PT1lP2w6bC5yZXZlcnNlKCkpfX1mdW5jdGlvbiBoYW5kbGVDb250ZW50RXhpdCgpe2NvbnN0IGU9KHZvaWQgMCkuZ2V0RWxlbWVudEJ5SWQoYyk7aWYoZSl7Y29uc3QgdD1nZXRUYWJiYWJsZUNhbmRpZGF0ZXMoZSk7dC5sZW5ndGgmJihyZXN0b3JlQ29udGVudFRhYk9yZGVyUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBlLmZvckVhY2goZT0+e2UuZGF0YXNldC50YWJpbmRleD1lLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8IiIsZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKX0pLCgpPT57ZS5mb3JFYWNoKGU9Pntjb25zdCB0PWUuZGF0YXNldC50YWJpbmRleDtlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHQpfSl9fSh0KSl9fWZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSl7Y29uc3QgdD1OKCk7aWYoMzI9PT1lLmtleUNvZGV8fCJFbnRlciI9PT1lLmtleSlyZXR1cm4gbi5tb2RlbFZhbHVlLnZhbHVlPT09aT8obi5vbkl0ZW1EaXNtaXNzKCksby52YWx1ZT8uZm9jdXMoKSx2b2lkIGUucHJldmVudERlZmF1bHQoKSk6KGUudGFyZ2V0LmNsaWNrKCksdm9pZCBlLnByZXZlbnREZWZhdWx0KCkpO2NvbnN0IGw9YSgpLmZpbHRlcihlPT5lLnJlZi5wYXJlbnRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoImRhdGEtbWVudS1pdGVtIikpLm1hcChlPT5lLnJlZik7aWYoIWwuaW5jbHVkZXModCkpcmV0dXJuO2NvbnN0IHI9cShlLHQsdm9pZCAwLHtpdGVtc0FycmF5OmwsbG9vcDohMX0pO3ImJnI/LmZvY3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCl9cmV0dXJuIGhlKHt2YWx1ZTppLGNvbnRlbnRJZDpjLHRyaWdnZXJSZWY6byxmb2N1c1Byb3h5UmVmOnIsd2FzRXNjYXBlQ2xvc2VSZWY6cyxvbkVudHJ5S2V5RG93bjpoYW5kbGVDb250ZW50RW50cnksb25Gb2N1c1Byb3h5RW50ZXI6aGFuZGxlQ29udGVudEVudHJ5LG9uQ29udGVudEZvY3VzT3V0c2lkZTpoYW5kbGVDb250ZW50RXhpdCxvblJvb3RDb250ZW50Q2xvc2U6aGFuZGxlQ29udGVudEV4aXR9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHsiYXMtY2hpbGQiOnQuYXNDaGlsZCxhczp0LmFzLCJkYXRhLW1lbnUtaXRlbSI6IiIsb25LZXlkb3duOmUud2l0aEtleXMoaGFuZGxlS2V5ZG93bixbInVwIiwiZG93biIsImxlZnQiLCJyaWdodCIsImhvbWUiLCJlbmQiLCJzcGFjZSJdKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KSxtZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJOYXZpZ2F0aW9uTWVudUNvbnRlbnRJbXBsIixwcm9wczp7ZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKHQse2VtaXQ6bH0pe2NvbnN0IGE9dCxuPWwse2dldEl0ZW1zOml9PWsoe2tleToiTmF2aWdhdGlvbk1lbnUifSkse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpyfT1oKCksYz11ZSgpLHM9cGUoKSxkPSh1PWMuYmFzZUlkLGY9cy52YWx1ZSxgJHt1fS10cmlnZ2VyLSR7Zn1gKTt2YXIgdSxmO2NvbnN0IHY9bWFrZUNvbnRlbnRJZChjLmJhc2VJZCxzLnZhbHVlKSxwPWUucmVmKG51bGwpLG09ZS5jb21wdXRlZCgoKT0+e2NvbnN0IGU9aSgpLm1hcChlPT5lLnJlZi5pZC5zcGxpdCgidHJpZ2dlci0iKVsxXSk7InJ0bCI9PT1jLmRpci52YWx1ZSYmZS5yZXZlcnNlKCk7Y29uc3QgdD1lLmluZGV4T2YoYy5tb2RlbFZhbHVlLnZhbHVlKSxsPWUuaW5kZXhPZihjLnByZXZpb3VzVmFsdWUudmFsdWUpLGE9cy52YWx1ZT09PWMubW9kZWxWYWx1ZS52YWx1ZSxuPWw9PT1lLmluZGV4T2Yocy52YWx1ZSk7aWYoIWEmJiFuKXJldHVybiBwLnZhbHVlO2NvbnN0IG89KCgpPT57aWYodCE9PWwpe2lmKGEmJi0xIT09bClyZXR1cm4gdD5sPyJmcm9tLWVuZCI6ImZyb20tc3RhcnQiO2lmKG4mJi0xIT09dClyZXR1cm4gdD5sPyJ0by1zdGFydCI6InRvLWVuZCJ9cmV0dXJuIG51bGx9KSgpO3JldHVybiBwLnZhbHVlPW8sb30pO2Z1bmN0aW9uIGhhbmRsZUZvY3VzT3V0c2lkZShlKXtuKCJmb2N1c091dHNpZGUiLGUpLG4oImludGVyYWN0T3V0c2lkZSIsZSk7aWYoZS5kZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQuaGFzQXR0cmlidXRlKCJkYXRhLW5hdmlnYXRpb24tbWVudS10cmlnZ2VyIikmJmUucHJldmVudERlZmF1bHQoKSwhZS5kZWZhdWx0UHJldmVudGVkKXtzLm9uQ29udGVudEZvY3VzT3V0c2lkZSgpO2NvbnN0IHQ9ZS50YXJnZXQ7Yy5yb290TmF2aWdhdGlvbk1lbnU/LnZhbHVlPy5jb250YWlucyh0KSYmZS5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUoZSl7aWYobigicG9pbnRlckRvd25PdXRzaWRlIixlKSwhZS5kZWZhdWx0UHJldmVudGVkKXtjb25zdCB0PWUudGFyZ2V0LGw9aSgpLnNvbWUoZT0+ZS5yZWYuY29udGFpbnModCkpLGE9Yy5pc1Jvb3RNZW51JiZjLnZpZXdwb3J0LnZhbHVlPy5jb250YWlucyh0KTsobHx8YXx8IWMuaXNSb290TWVudSkmJmUucHJldmVudERlZmF1bHQoKX19ZnVuY3Rpb24gaGFuZGxlRXNjYXBlS2V5RG93bihlKXtuKCJlc2NhcGVLZXlEb3duIixlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fChjLm9uSXRlbURpc21pc3MoKSxzLnRyaWdnZXJSZWY/LnZhbHVlPy5mb2N1cygpLHMud2FzRXNjYXBlQ2xvc2VSZWYudmFsdWU9ITApfWZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSl7aWYoZS50YXJnZXQuY2xvc2VzdCgiW2RhdGEtcmVrYS1uYXZpZ2F0aW9uLW1lbnVdIikhPT1jLnJvb3ROYXZpZ2F0aW9uTWVudS52YWx1ZSlyZXR1cm47Y29uc3QgdD1lLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXksbD0iVGFiIj09PWUua2V5JiYhdCxhPWdldFRhYmJhYmxlQ2FuZGlkYXRlcyhlLmN1cnJlbnRUYXJnZXQpO2lmKGwpe2NvbnN0IHQ9TigpLGw9YS5maW5kSW5kZXgoZT0+ZT09PXQpO2lmKCFmb2N1c0ZpcnN0KGUuc2hpZnRLZXk/YS5zbGljZSgwLGwpLnJldmVyc2UoKTphLnNsaWNlKGwrMSxhLmxlbmd0aCkpKXJldHVybiB2b2lkIHMuZm9jdXNQcm94eVJlZi52YWx1ZT8uZm9jdXMoKTtlLnByZXZlbnREZWZhdWx0KCl9Y29uc3Qgbj1xKGUsTigpLHZvaWQgMCx7aXRlbXNBcnJheTphLGxvb3A6ITEsZW5hYmxlSWdub3JlZEVsZW1lbnQ6ITB9KTtuPy5mb2N1cygpfWZ1bmN0aW9uIGhhbmRsZURpc21pc3MoKXtjb25zdCBlPW5ldyBFdmVudChkZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7ci52YWx1ZT8uZGlzcGF0Y2hFdmVudChlKX1yZXR1cm4gZS53YXRjaEVmZmVjdChlPT57Y29uc3QgdD1yLnZhbHVlO2lmKGMuaXNSb290TWVudSYmdCl7Y29uc3QgaGFuZGxlQ2xvc2U9KCk9PntjLm9uSXRlbURpc21pc3MoKSxzLm9uUm9vdENvbnRlbnRDbG9zZSgpLHQuY29udGFpbnMoTigpKSYmcy50cmlnZ2VyUmVmLnZhbHVlPy5mb2N1cygpfTt0LmFkZEV2ZW50TGlzdGVuZXIoZGUsaGFuZGxlQ2xvc2UpLGUoKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihkZSxoYW5kbGVDbG9zZSkpfX0pLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTyksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKHYpLHJlZjplLnVucmVmKG8pLCJhcmlhLWxhYmVsbGVkYnkiOmUudW5yZWYoZCksImRhdGEtbW90aW9uIjptLnZhbHVlLCJkYXRhLXN0YXRlIjplLnVucmVmKGdldE9wZW5TdGF0ZSkoZS51bnJlZihjKS5tb2RlbFZhbHVlLnZhbHVlPT09ZS51bnJlZihzKS52YWx1ZSksImRhdGEtb3JpZW50YXRpb24iOmUudW5yZWYoYykub3JpZW50YXRpb259LGEse29uS2V5ZG93bjpoYW5kbGVLZXlkb3duLG9uRXNjYXBlS2V5RG93bjpoYW5kbGVFc2NhcGVLZXlEb3duLG9uUG9pbnRlckRvd25PdXRzaWRlOmhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSxvbkZvY3VzT3V0c2lkZTpoYW5kbGVGb2N1c091dHNpZGUsb25EaXNtaXNzOmhhbmRsZURpc21pc3N9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsImRhdGEtbW90aW9uIiwiZGF0YS1zdGF0ZSIsImRhdGEtb3JpZW50YXRpb24iXSkpfX0pLGdlPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBuPWwsaT1hKHkodCwiZm9yY2VNb3VudCIpLG4pLHtmb3J3YXJkUmVmOm99PWgoKSxyPXVlKCksYz1wZSgpLHM9ZS5jb21wdXRlZCgoKT0+Yy52YWx1ZT09PXIubW9kZWxWYWx1ZS52YWx1ZSksZD1lLmNvbXB1dGVkKCgpPT4hKCFyLnZpZXdwb3J0LnZhbHVlfHxyLm1vZGVsVmFsdWUudmFsdWV8fCFyLnByZXZpb3VzVmFsdWUudmFsdWUpJiZyLnByZXZpb3VzVmFsdWUudmFsdWU9PT1jLnZhbHVlKTtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLlRlbGVwb3J0LHt0bzplLnVucmVmKEkpJiZlLnVucmVmKHIpLnZpZXdwb3J0LnZhbHVlP2UudW5yZWYocikudmlld3BvcnQudmFsdWU6ImJvZHkiLGRpc2FibGVkOiFlLnVucmVmKEkpfHwhZS51bnJlZihyKS52aWV3cG9ydC52YWx1ZXx8IWUudW5yZWYocikudmlld3BvcnQudmFsdWV9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQykse3ByZXNlbnQ6dC5mb3JjZU1vdW50fHxzLnZhbHVlfHxkLnZhbHVlLCJmb3JjZS1tb3VudCI6IWUudW5yZWYocikudW5tb3VudE9uSGlkZS52YWx1ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh7cHJlc2VudDphfSk9PltlLmNyZWF0ZVZOb2RlKG1lLGUubWVyZ2VQcm9wcyh7cmVmOmUudW5yZWYobyksImRhdGEtc3RhdGUiOmUudW5yZWYoZ2V0T3BlblN0YXRlKShzLnZhbHVlKSxzdHlsZTp7cG9pbnRlckV2ZW50czohcy52YWx1ZSYmZS51bnJlZihyKS5pc1Jvb3RNZW51PyJub25lIjp2b2lkIDB9fSx7Li4udC4kYXR0cnMsLi4uZS51bnJlZihpKX0se2hpZGRlbjohYSxvblBvaW50ZXJlbnRlcjpsWzBdfHwobFswXT10PT5lLnVucmVmKHIpLm9uQ29udGVudEVudGVyKGUudW5yZWYoYykudmFsdWUpKSxvblBvaW50ZXJsZWF2ZTpsWzFdfHwobFsxXT10PT5lLnVucmVmKHdoZW5Nb3VzZSkoKCk9PmUudW5yZWYocikub25Db250ZW50TGVhdmUoKSkodCkpLG9uUG9pbnRlckRvd25PdXRzaWRlOmxbMl18fChsWzJdPWU9Pm4oInBvaW50ZXJEb3duT3V0c2lkZSIsZSkpLG9uRm9jdXNPdXRzaWRlOmxbM118fChsWzNdPWU9Pm4oImZvY3VzT3V0c2lkZSIsZSkpLG9uSW50ZXJhY3RPdXRzaWRlOmxbNF18fChsWzRdPWU9Pm4oImludGVyYWN0T3V0c2lkZSIsZSkpfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjJ9LDEwNDAsWyJkYXRhLXN0YXRlIiwic3R5bGUiLCJoaWRkZW4iXSldKSxfOjN9LDgsWyJwcmVzZW50IiwiZm9yY2UtbW91bnQiXSldLDgsWyJ0byIsImRpc2FibGVkIl0pKX19KSxMZT1lLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiTmF2aWdhdGlvbk1lbnVJbmRpY2F0b3IiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGw9dCx7Zm9yd2FyZFJlZjphfT1oKCksbj11ZSgpLGk9ZS5yZWYoKSxvPWUuY29tcHV0ZWQoKCk9PiJob3Jpem9udGFsIj09PW4ub3JpZW50YXRpb24pLHI9ZS5jb21wdXRlZCgoKT0+ISFuLm1vZGVsVmFsdWUudmFsdWUpLHthY3RpdmVUcmlnZ2VyOmN9PW47ZnVuY3Rpb24gaGFuZGxlUG9zaXRpb25DaGFuZ2UoKXtjLnZhbHVlJiYoaS52YWx1ZT17c2l6ZTpvLnZhbHVlP2MudmFsdWUub2Zmc2V0V2lkdGg6Yy52YWx1ZS5vZmZzZXRIZWlnaHQscG9zaXRpb246by52YWx1ZT9jLnZhbHVlLm9mZnNldExlZnQ6Yy52YWx1ZS5vZmZzZXRUb3B9KX1yZXR1cm4gZS53YXRjaEVmZmVjdCgoKT0+e24ubW9kZWxWYWx1ZS52YWx1ZSYmaGFuZGxlUG9zaXRpb25DaGFuZ2UoKX0pLEIoYyxoYW5kbGVQb3NpdGlvbkNoYW5nZSksQihuLmluZGljYXRvclRyYWNrLGhhbmRsZVBvc2l0aW9uQ2hhbmdlKSwodCxvKT0+ZS51bnJlZihuKS5pbmRpY2F0b3JUcmFjay52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuVGVsZXBvcnQse2tleTowLHRvOmUudW5yZWYobikuaW5kaWNhdG9yVHJhY2sudmFsdWV9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQykse3ByZXNlbnQ6dC5mb3JjZU1vdW50fHxyLnZhbHVlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobSksZS5tZXJnZVByb3BzKHtyZWY6ZS51bnJlZihhKSwiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiZGF0YS1zdGF0ZSI6ci52YWx1ZT8idmlzaWJsZSI6ImhpZGRlbiIsImRhdGEtb3JpZW50YXRpb24iOmUudW5yZWYobikub3JpZW50YXRpb24sImFzLWNoaWxkIjpsLmFzQ2hpbGQsYXM6dC5hcyxzdHlsZTp7Li4uaS52YWx1ZT97Ii0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUiOmAke2kudmFsdWUuc2l6ZX1weGAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uIjpgJHtpLnZhbHVlLnBvc2l0aW9ufXB4YH06e319fSx0LiRhdHRycykse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsImRhdGEtb3JpZW50YXRpb24iLCJhcy1jaGlsZCIsImFzIiwic3R5bGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pXSw4LFsidG8iXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCl9fSksYmU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTmF2aWdhdGlvbk1lbnVMaW5rIixwcm9wczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJhIn19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3QgYT10LG49bCx7Q29sbGVjdGlvbkl0ZW06aX09ayh7a2V5OiJOYXZpZ2F0aW9uTWVudSJ9KTthc3luYyBmdW5jdGlvbiBoYW5kbGVDbGljayhlKXtjb25zdCB0PW5ldyBDdXN0b21FdmVudCgibmF2aWdhdGlvbk1lbnUubGlua1NlbGVjdCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxkZXRhaWw6e29yaWdpbmFsRXZlbnQ6ZX19KTtpZihuKCJzZWxlY3QiLHQpLCF0LmRlZmF1bHRQcmV2ZW50ZWQmJiFlLm1ldGFLZXkpe2NvbnN0IHQ9bmV3IEN1c3RvbUV2ZW50KGRlLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTtlLnRhcmdldD8uZGlzcGF0Y2hFdmVudCh0KX19cmV0dXJuIGgoKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLHthczp0LmFzLCJkYXRhLWFjdGl2ZSI6dC5hY3RpdmU/IiI6dm9pZCAwLCJhcmlhLWN1cnJlbnQiOnQuYWN0aXZlPyJwYWdlIjp2b2lkIDAsImFzLWNoaWxkIjphLmFzQ2hpbGQsb25DbGljazpoYW5kbGVDbGlja30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImRhdGEtYWN0aXZlIiwiYXJpYS1jdXJyZW50IiwiYXMtY2hpbGQiXSldKSxfOjN9KSl9fSkseGU9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik5hdmlnYXRpb25NZW51TGlzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ1bCJ9fSxzZXR1cCh0KXtjb25zdCBsPXQsYT11ZSgpLHtmb3J3YXJkUmVmOm59PWgoKTtyZXR1cm4odCxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHtyZWY6ZS51bnJlZihuKSxzdHlsZTp7cG9zaXRpb246InJlbGF0aXZlIn19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihtKSxlLm1lcmdlUHJvcHModC4kYXR0cnMseyJhcy1jaGlsZCI6bC5hc0NoaWxkLGFzOnQuYXMsImRhdGEtb3JpZW50YXRpb24iOmUudW5yZWYoYSkub3JpZW50YXRpb259KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcy1jaGlsZCIsImFzIiwiZGF0YS1vcmllbnRhdGlvbiJdKV0pLF86M30sNTEyKSl9fSk7Y29uc3QgeWU9WyJhcmlhLW93bnMiXTt2YXIgSWU9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik5hdmlnYXRpb25NZW51VHJpZ2dlciIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3QgbD10LGE9dWUoKSxuPXBlKCkse0NvbGxlY3Rpb25JdGVtOml9PWsoe2tleToiTmF2aWdhdGlvbk1lbnUifSkse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpyfT1oKCksYz1lLnJlZigiIikscz1lLnJlZigiIiksZD1nKCExLDMwMCksdT1lLnJlZighMSksZj1lLmNvbXB1dGVkKCgpPT5uLnZhbHVlPT09YS5tb2RlbFZhbHVlLnZhbHVlKTtmdW5jdGlvbiBoYW5kbGVQb2ludGVyRW50ZXIoKXthLmRpc2FibGVIb3ZlclRyaWdnZXIudmFsdWV8fCh1LnZhbHVlPSExLG4ud2FzRXNjYXBlQ2xvc2VSZWYudmFsdWU9ITEpfWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKGUpe2lmKCFhLmRpc2FibGVIb3ZlclRyaWdnZXIudmFsdWUmJiJtb3VzZSI9PT1lLnBvaW50ZXJUeXBlKXtpZihsLmRpc2FibGVkfHx1LnZhbHVlfHxuLndhc0VzY2FwZUNsb3NlUmVmLnZhbHVlfHxkLnZhbHVlKXJldHVybjthLm9uVHJpZ2dlckVudGVyKG4udmFsdWUpLGQudmFsdWU9ITB9fWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJMZWF2ZShlKXtpZighYS5kaXNhYmxlSG92ZXJUcmlnZ2VyLnZhbHVlJiYibW91c2UiPT09ZS5wb2ludGVyVHlwZSl7aWYobC5kaXNhYmxlZClyZXR1cm47YS5vblRyaWdnZXJMZWF2ZSgpLGQudmFsdWU9ITF9fWZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpeygicG9pbnRlclR5cGUiaW4gZSYmIm1vdXNlIiE9PWUucG9pbnRlclR5cGV8fCFhLmRpc2FibGVDbGlja1RyaWdnZXIudmFsdWUpJiYoZC52YWx1ZXx8KGYudmFsdWU/YS5vbkl0ZW1TZWxlY3QoIiIpOmEub25JdGVtU2VsZWN0KG4udmFsdWUpLHUudmFsdWU9Zi52YWx1ZSkpfWZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSl7Y29uc3QgdD17aG9yaXpvbnRhbDoiQXJyb3dEb3duIix2ZXJ0aWNhbDoicnRsIj09PWEuZGlyLnZhbHVlPyJBcnJvd0xlZnQiOiJBcnJvd1JpZ2h0In1bYS5vcmllbnRhdGlvbl07Zi52YWx1ZSYmZS5rZXk9PT10JiYobi5vbkVudHJ5S2V5RG93bigpLGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKX1mdW5jdGlvbiBzZXRGb2N1c1Byb3h5UmVmKGUpe2UmJihuLmZvY3VzUHJveHlSZWYudmFsdWU9UyhlKSl9ZnVuY3Rpb24gaGFuZGxlVmlzdWFsbHlIaWRkZW5Gb2N1cyhlKXtjb25zdCB0PSh2b2lkIDApLmdldEVsZW1lbnRCeUlkKG4uY29udGVudElkKSxsPWUucmVsYXRlZFRhcmdldCxhPWw9PT1yLnZhbHVlLGk9dD8uY29udGFpbnMobCk7IWEmJml8fG4ub25Gb2N1c1Byb3h5RW50ZXIoYT8ic3RhcnQiOiJlbmQiKX1yZXR1cm4odCxuKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoaSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobSksZS5tZXJnZVByb3BzKHtpZDpjLnZhbHVlLHJlZjplLnVucmVmKG8pLGRpc2FibGVkOnQuZGlzYWJsZWQsImRhdGEtZGlzYWJsZWQiOnQuZGlzYWJsZWQ/IiI6dm9pZCAwLCJkYXRhLXN0YXRlIjplLnVucmVmKGdldE9wZW5TdGF0ZSkoZi52YWx1ZSksImRhdGEtbmF2aWdhdGlvbi1tZW51LXRyaWdnZXIiOiIiLCJhcmlhLWV4cGFuZGVkIjpmLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjpzLnZhbHVlLCJhcy1jaGlsZCI6bC5hc0NoaWxkLGFzOnQuYXN9LHQuJGF0dHJzLHtvblBvaW50ZXJlbnRlcjpoYW5kbGVQb2ludGVyRW50ZXIsb25Qb2ludGVybW92ZTpoYW5kbGVQb2ludGVyTW92ZSxvblBvaW50ZXJsZWF2ZTpoYW5kbGVQb2ludGVyTGVhdmUsb25DbGljazpoYW5kbGVDbGljayxvbktleWRvd246aGFuZGxlS2V5ZG93bn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwiZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1zdGF0ZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30pLGYudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoTCkse3JlZjpzZXRGb2N1c1Byb3h5UmVmLCJhcmlhLWhpZGRlbiI6InRydWUiLHRhYmluZGV4OjAsb25Gb2N1czpoYW5kbGVWaXN1YWxseUhpZGRlbkZvY3VzfSksZS51bnJlZihhKS52aWV3cG9ydD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jaygic3BhbiIse2tleTowLCJhcmlhLW93bnMiOnMudmFsdWV9LG51bGwsOCx5ZSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCldLDY0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0sNjQpKX19KSxDZT1lLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiTmF2aWdhdGlvbk1lbnVWaWV3cG9ydCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImNlbnRlciJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGw9dCx7Zm9yd2FyZFJlZjphLGN1cnJlbnRFbGVtZW50Om59PWgoKSxpPXVlKCkse2FjdGl2ZVRyaWdnZXI6byxyb290TmF2aWdhdGlvbk1lbnU6cixtb2RlbFZhbHVlOmN9PWkscz1lLnJlZigpLGQ9ZS5yZWYoKSx1PWUuY29tcHV0ZWQoKCk9PiEhaS5tb2RlbFZhbHVlLnZhbHVlKTtlLndhdGNoKG4sKCk9PntpLm9uVmlld3BvcnRDaGFuZ2Uobi52YWx1ZSl9KTtjb25zdCBmPWUucmVmKCk7ZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oKXtpZihmLnZhbHVlJiZvLnZhbHVlJiZyLnZhbHVlKXtjb25zdCBlPSh2b2lkIDApLmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCx0PSh2b2lkIDApLmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQsYT1yLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49by52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7b2Zmc2V0V2lkdGg6aSxvZmZzZXRIZWlnaHQ6Y309Zi52YWx1ZSxzPW4ubGVmdC1hLmxlZnQsdT1uLnRvcC1hLnRvcDtsZXQgdj1udWxsLHA9bnVsbDtzd2l0Y2gobC5hbGlnbil7Y2FzZSJzdGFydCI6dj1zLHA9dTticmVhaztjYXNlImVuZCI6dj1zLWkrbi53aWR0aCxwPXUtYytuLmhlaWdodDticmVhaztkZWZhdWx0OnY9cy1pLzIrbi53aWR0aC8yLHA9dS1jLzIrbi5oZWlnaHQvMn1jb25zdCBoPTEwO3YrYS5sZWZ0PGgmJih2PWgtYS5sZWZ0KTtjb25zdCBrPXYrYS5sZWZ0K2k7az5lLWgmJih2LT1rLWUraCx2PGgtYS5sZWZ0JiYodj1oLWEubGVmdCkpLHArYS50b3A8aCYmKHA9aC1hLnRvcCk7Y29uc3QgbT1wK2EudG9wK2M7bT50LWgmJihwLT1tLXQraCxwPGgtYS50b3AmJihwPWgtYS50b3ApKSx2PU1hdGgucm91bmQodikscD1NYXRoLnJvdW5kKHApLGQudmFsdWU9e2xlZnQ6dix0b3A6cH19fXJldHVybiBlLndhdGNoKFtjLHVdLCgpPT57ZS5uZXh0VGljaygoKT0+e24udmFsdWUmJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9bi52YWx1ZT8ucXVlcnlTZWxlY3RvcigiW2RhdGEtc3RhdGU9b3Blbl0iKTtmLnZhbHVlPWV9KX0pfSx7aW1tZWRpYXRlOiEwfSksQihmLCgpPT57Zi52YWx1ZSYmKHMudmFsdWU9e3dpZHRoOmYudmFsdWUub2Zmc2V0V2lkdGgsaGVpZ2h0OmYudmFsdWUub2Zmc2V0SGVpZ2h0fSx1cGRhdGVQb3NpdGlvbigpKX0pLEIoW2dsb2JhbFRoaXMuZG9jdW1lbnQ/LmJvZHkscl0sKCk9Pnt1cGRhdGVQb3NpdGlvbigpfSksKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihDKSx7cHJlc2VudDp0LmZvcmNlTW91bnR8fHUudmFsdWUsImZvcmNlLW1vdW50IjohZS51bnJlZihpKS51bm1vdW50T25IaWRlLnZhbHVlLG9uQWZ0ZXJMZWF2ZTpsWzJdfHwobFsyXT0oKT0+e3MudmFsdWU9dm9pZCAwLGQudmFsdWU9dm9pZCAwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoe3ByZXNlbnQ6bn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLGUubWVyZ2VQcm9wcyh0LiRhdHRycyx7cmVmOmUudW5yZWYoYSksYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiZGF0YS1zdGF0ZSI6ZS51bnJlZihnZXRPcGVuU3RhdGUpKHUudmFsdWUpLCJkYXRhLW9yaWVudGF0aW9uIjplLnVucmVmKGkpLm9yaWVudGF0aW9uLHN0eWxlOntwb2ludGVyRXZlbnRzOiF1LnZhbHVlJiZlLnVucmVmKGkpLmlzUm9vdE1lbnU/Im5vbmUiOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCI6cy52YWx1ZT9gJHtzLnZhbHVlPy53aWR0aH1weGA6dm9pZCAwLCItLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWhlaWdodCI6cy52YWx1ZT9gJHtzLnZhbHVlPy5oZWlnaHR9cHhgOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0IjpkLnZhbHVlP2Ake2QudmFsdWU/LmxlZnR9cHhgOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC10b3AiOmQudmFsdWU/YCR7ZC52YWx1ZT8udG9wfXB4YDp2b2lkIDB9LGhpZGRlbjohbixvblBvaW50ZXJlbnRlcjpsWzBdfHwobFswXT10PT5lLnVucmVmKGkpLm9uQ29udGVudEVudGVyKGUudW5yZWYoaSkubW9kZWxWYWx1ZS52YWx1ZSkpLG9uUG9pbnRlcmxlYXZlOmxbMV18fChsWzFdPXQ9PmUudW5yZWYod2hlbk1vdXNlKSgoKT0+ZS51bnJlZihpKS5vbkNvbnRlbnRMZWF2ZSgpKSh0KSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86Mn0sMTA0MCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXN0YXRlIiwiZGF0YS1vcmllbnRhdGlvbiIsInN0eWxlIiwiaGlkZGVuIl0pXSksXzozfSw4LFsicHJlc2VudCIsImZvcmNlLW1vdW50Il0pKX19KTtjb25zdCBCZT17c2xvdHM6e2NvbnRlbnQ6ImJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIG9yaWdpbi0oLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSBmb2N1czpvdXRsaW5lLW5vbmUgcG9pbnRlci1ldmVudHMtYXV0byIsYXJyb3c6ImZpbGwtYmcgc3Ryb2tlLWRlZmF1bHQifX0sd2U9e19fbmFtZToiVVBvcG92ZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnttb2RlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiY2xpY2sifSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sYXJyb3c6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3BlbkRlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsb3NlRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH19LGVtaXRzOlsiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoaSx7ZW1pdDpyfSl7Y29uc3QgYz1pLHM9cixkPWUudXNlU2xvdHMoKSx1PXQoKSxmPWwoInBvcG92ZXIiLGMpLHY9ImhvdmVyIj09PWMubW9kZT9uKGMsImRlZmF1bHRPcGVuIiwib3BlbiIsIm9wZW5EZWxheSIsImNsb3NlRGVsYXkiKTpuKGMsImRlZmF1bHRPcGVuIiwib3BlbiIsIm1vZGFsIikscD1hKHYscyksaD1iKGUudG9SZWYoKCk9PmMucG9ydGFsKSksaz1lLnRvUmVmKCgpPT5LKGMuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4fSkpLG09ZS5jb21wdXRlZCgoKT0+e2lmKCFjLmRpc21pc3NpYmxlKXtyZXR1cm5bImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKGUsdCk9PihlW3RdPWU9PntlLnByZXZlbnREZWZhdWx0KCkscygiY2xvc2U6cHJldmVudCIpfSxlKSx7fSl9cmV0dXJue3BvaW50ZXJEb3duT3V0c2lkZTpNfX0pLGc9ZS50b1JlZigoKT0+SyhjLmFycm93LHtyb3VuZGVkOiEwfSkpLEw9ZS5jb21wdXRlZCgoKT0+byh7ZXh0ZW5kOm8oQmUpLC4uLnUudWk/LnBvcG92ZXJ8fHt9fSkoe3NpZGU6ay52YWx1ZS5zaWRlfSkpLHk9ZS5jb21wdXRlZCgoKT0+ImhvdmVyIj09PWMubW9kZT8kOlQpO3JldHVybih0LGwsYSxuKT0+e2woVyhlLnVucmVmKHkpLlJvb3QsZS5tZXJnZVByb3BzKGUudW5yZWYocCksbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3BlbjpsLGNsb3NlOmF9LG4sbyxyKT0+e2lmKCFuKXJldHVybltkLmRlZmF1bHR8fGkucmVmZXJlbmNlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5UcmlnZ2VyLHtrZXk6MCwiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTppLnJlZmVyZW5jZSxjbGFzczpjLmNsYXNzfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmx9KV0pLF86Mn0sMTAzMixbInJlZmVyZW5jZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksIkFuY2hvciJpbiB5LnZhbHVlJiZkLmFuY2hvcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoeSkuQW5jaG9yLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImFuY2hvciIsYT97Y2xvc2U6YX06e30pXSksXzoyfSwxMDI0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih5KS5Qb3J0YWwsZS51bnJlZihoKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeSkuQ29udGVudCxlLm1lcmdlUHJvcHMoay52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkwudmFsdWUuY29udGVudCh7Y2xhc3M6WyFkLmRlZmF1bHQmJmMuY2xhc3MsZS51bnJlZihmKT8uY29udGVudF19KX0sZS50b0hhbmRsZXJzKG0udmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQiLGE/e2Nsb3NlOmF9Ont9KSxpLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoe2tleTowfSxnLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkwudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoZik/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDI0KV0pLF86Mn0sMTA0MCldO2QuZGVmYXVsdHx8aS5yZWZlcmVuY2U/bihXKGUudW5yZWYoeSkuVHJpZ2dlcix7ImFzLWNoaWxkIjoiIixyZWZlcmVuY2U6aS5yZWZlcmVuY2UsY2xhc3M6Yy5jbGFzc30se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLG4saSxvKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmx9KV07SCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46bH0sbnVsbCxuLGksbyl9KSxfOjJ9LG8scikpOm4oIlx4M2MhLS0tLVx4M2UiKSwiQW5jaG9yImluIHkudmFsdWUmJmQuYW5jaG9yP24oVyhlLnVucmVmKHkpLkFuY2hvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG4saSxvKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImFuY2hvciIsYT97Y2xvc2U6YX06e30pXTtIKHQuJHNsb3RzLCJhbmNob3IiLGE/e2Nsb3NlOmF9Ont9LG51bGwsbixpLG8pfSksXzoyfSxvLHIpKTpuKCJceDNjIS0tLS1ceDNlIiksbihXKGUudW5yZWYoeSkuUG9ydGFsLGUudW5yZWYoaCkse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG4sbyxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeSkuQ29udGVudCxlLm1lcmdlUHJvcHMoay52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkwudmFsdWUuY29udGVudCh7Y2xhc3M6WyFkLmRlZmF1bHQmJmMuY2xhc3MsZS51bnJlZihmKT8uY29udGVudF19KX0sZS50b0hhbmRsZXJzKG0udmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQiLGE/e2Nsb3NlOmF9Ont9KSxpLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoe2tleTowfSxnLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkwudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoZik/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDI0KV07bihXKGUudW5yZWYoeCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGwsbixvLHIpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih5KS5Db250ZW50LGUubWVyZ2VQcm9wcyhrLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6TC52YWx1ZS5jb250ZW50KHtjbGFzczpbIWQuZGVmYXVsdCYmYy5jbGFzcyxlLnVucmVmKGYpPy5jb250ZW50XX0pfSxlLnRvSGFuZGxlcnMobS52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudCIsYT97Y2xvc2U6YX06e30pLGkuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHkpLkFycm93LGUubWVyZ2VQcm9wcyh7a2V5OjB9LGcudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6TC52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihmKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldO24oVyhlLnVucmVmKHkpLkNvbnRlbnQsZS5tZXJnZVByb3BzKGsudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpMLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshZC5kZWZhdWx0JiZjLmNsYXNzLGUudW5yZWYoZik/LmNvbnRlbnRdfSl9LGUudG9IYW5kbGVycyhtLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG4sbyxyKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQiLGE/e2Nsb3NlOmF9Ont9KSxpLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoe2tleTowfSxnLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkwudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoZik/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07SCh0LiRzbG90cywiY29udGVudCIsYT97Y2xvc2U6YX06e30sbnVsbCxuLG8sciksaS5hcnJvdz9uKFcoZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoZy52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpMLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKGYpPy5hcnJvd30pfSksbnVsbCxvLHIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9LG8scikpfSksXzoyfSxvLHIpKX0pLF86Mn0sbyxyKSl9KSxfOjN9LGEpKX19fSxWZT13ZS5zZXR1cDt3ZS5zZXR1cD0odCxsKT0+e2NvbnN0IGE9ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1BvcG92ZXIudnVlIiksVmU/VmUodCxsKTp2b2lkIDB9O2NvbnN0IF9lPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCBnYXAtMS41IFsmPmRpdl06bWluLXctMCIsbGlzdDoiaXNvbGF0ZSBtaW4tdy0wIixsYWJlbDoidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1zZW1pYm9sZCB0ZXh0LXhzLzUgdGV4dC1oaWdobGlnaHRlZCBweC0yLjUgcHktMS41IixpdGVtOiJtaW4tdy0wIixsaW5rOiJncm91cCByZWxhdGl2ZSB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBmb250LW1lZGl1bSB0ZXh0LXNtIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTpyb3VuZGVkLW1kIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy0yIixsaW5rTGVhZGluZ0ljb246InNocmluay0wIHNpemUtNSIsbGlua0xlYWRpbmdBdmF0YXI6InNocmluay0wIixsaW5rTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsbGlua0xlYWRpbmdDaGlwU2l6ZToic20iLGxpbmtUcmFpbGluZzoiZ3JvdXAgbXMtYXV0byBpbmxpbmUtZmxleCBnYXAtMS41IGl0ZW1zLWNlbnRlciIsbGlua1RyYWlsaW5nQmFkZ2U6InNocmluay0wIixsaW5rVHJhaWxpbmdCYWRnZVNpemU6InNtIixsaW5rVHJhaWxpbmdJY29uOiJzaXplLTUgdHJhbnNmb3JtIHNocmluay0wIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnJvdGF0ZS0xODAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwIixsaW5rTGFiZWw6InRydW5jYXRlIixsaW5rTGFiZWxFeHRlcm5hbEljb246ImlubGluZS1ibG9jayBzaXplLTMgYWxpZ24tdG9wIHRleHQtZGltbWVkIixjaGlsZExpc3Q6Imlzb2xhdGUiLGNoaWxkTGFiZWw6InRleHQteHMgdGV4dC1oaWdobGlnaHRlZCIsY2hpbGRJdGVtOiIiLGNoaWxkTGluazoiZ3JvdXAgcmVsYXRpdmUgc2l6ZS1mdWxsIGZsZXggaXRlbXMtc3RhcnQgdGV4dC1zdGFydCB0ZXh0LXNtIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTpyb3VuZGVkLW1kIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy0yIixjaGlsZExpbmtXcmFwcGVyOiJtaW4tdy0wIixjaGlsZExpbmtJY29uOiJzaXplLTUgc2hyaW5rLTAiLGNoaWxkTGlua0xhYmVsOiJ0cnVuY2F0ZSIsY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb246ImlubGluZS1ibG9jayBzaXplLTMgYWxpZ24tdG9wIHRleHQtZGltbWVkIixjaGlsZExpbmtEZXNjcmlwdGlvbjoidGV4dC1tdXRlZCIsc2VwYXJhdG9yOiJweC0yIGgtcHggYmctYm9yZGVyIix2aWV3cG9ydFdyYXBwZXI6ImFic29sdXRlIHRvcC1mdWxsIGxlZnQtMCBmbGV4IHctZnVsbCIsdmlld3BvcnQ6InJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiBiZy1kZWZhdWx0IHNoYWRvdy1sZyByb3VuZGVkLW1kIHJpbmcgcmluZy1kZWZhdWx0IGgtKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtaGVpZ2h0KSB3LWZ1bGwgdHJhbnNpdGlvbi1bd2lkdGgsaGVpZ2h0LGxlZnQscmlnaHRdIGR1cmF0aW9uLTIwMCBvcmlnaW4tW3RvcF9jZW50ZXJdIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSB6LTEiLGNvbnRlbnQ6IiIsaW5kaWNhdG9yOiJhYnNvbHV0ZSBsZWZ0LTAgZGF0YS1bc3RhdGU9dmlzaWJsZV06YW5pbWF0ZS1bZmFkZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9aGlkZGVuXTphbmltYXRlLVtmYWRlLW91dF8xMDBtc19lYXNlLWluXSBkYXRhLVtzdGF0ZT1oaWRkZW5dOm9wYWNpdHktMCBib3R0b20tMCB6LTIgdy0oLS1yZWthLW5hdmlnYXRpb24tbWVudS1pbmRpY2F0b3Itc2l6ZSkgdHJhbnNsYXRlLXgtKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uKSBmbGV4IGgtMi41IGl0ZW1zLWVuZCBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gdHJhbnNpdGlvbi1bdHJhbnNsYXRlLHdpZHRoXSBkdXJhdGlvbi0yMDAiLGFycm93OiJyZWxhdGl2ZSB0b3AtWzUwJV0gc2l6ZS0yLjUgcm90YXRlLTQ1IGJvcmRlciBib3JkZXItZGVmYXVsdCBiZy1kZWZhdWx0IHotMSByb3VuZGVkLXhzIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXByaW1hcnkiLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1wcmltYXJ5In0sc2Vjb25kYXJ5OntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXNlY29uZGFyeSIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2xpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctc3VjY2VzcyIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXN1Y2Nlc3MifSxpbmZvOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWluZm8iLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1pbmZvIn0sd2FybmluZzp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy13YXJuaW5nIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctd2FybmluZyJ9LGVycm9yOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWVycm9yIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctZXJyb3IifSxuZXV0cmFsOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWludmVydGVkIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW52ZXJ0ZWQifX0saGlnaGxpZ2h0Q29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LHZhcmlhbnQ6e3BpbGw6IiIsbGluazoiIn0sb3JpZW50YXRpb246e2hvcml6b250YWw6e3Jvb3Q6Iml0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iLGxpc3Q6ImZsZXggaXRlbXMtY2VudGVyIixpdGVtOiJweS0yIixsaW5rOiJweC0yLjUgcHktMS41IGJlZm9yZTppbnNldC14LXB4IGJlZm9yZTppbnNldC15LTAiLGNoaWxkTGlzdDoiZ3JpZCBwLTIiLGNoaWxkTGluazoicHgtMyBweS0yIGdhcC0yIGJlZm9yZTppbnNldC14LXB4IGJlZm9yZTppbnNldC15LTAiLGNoaWxkTGlua0xhYmVsOiJmb250LW1lZGl1bSIsY29udGVudDoiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBtYXgtaC1bNzB2aF0gb3ZlcmZsb3cteS1hdXRvIn0sdmVydGljYWw6e3Jvb3Q6ImZsZXgtY29sIixsaW5rOiJmbGV4LXJvdyBweC0yLjUgcHktMS41IGJlZm9yZTppbnNldC15LXB4IGJlZm9yZTppbnNldC14LTAiLGNoaWxkTGFiZWw6InB4LTEuNSBweS0wLjUiLGNoaWxkTGluazoicC0xLjUgZ2FwLTEuNSBiZWZvcmU6aW5zZXQteS1weCBiZWZvcmU6aW5zZXQteC0wIn19LGNvbnRlbnRPcmllbnRhdGlvbjp7aG9yaXpvbnRhbDp7dmlld3BvcnRXcmFwcGVyOiJqdXN0aWZ5LWNlbnRlciIsY29udGVudDoiZGF0YS1bbW90aW9uPWZyb20tc3RhcnRdOmFuaW1hdGUtW2VudGVyLWZyb20tbGVmdF8yMDBtc19lYXNlXSBkYXRhLVttb3Rpb249ZnJvbS1lbmRdOmFuaW1hdGUtW2VudGVyLWZyb20tcmlnaHRfMjAwbXNfZWFzZV0gZGF0YS1bbW90aW9uPXRvLXN0YXJ0XTphbmltYXRlLVtleGl0LXRvLWxlZnRfMjAwbXNfZWFzZV0gZGF0YS1bbW90aW9uPXRvLWVuZF06YW5pbWF0ZS1bZXhpdC10by1yaWdodF8yMDBtc19lYXNlXSJ9LHZlcnRpY2FsOnt2aWV3cG9ydDoic206dy0oLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCkgbGVmdC0oLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0KSBydGw6bGVmdC1hdXRvIHJ0bDpyaWdodC1bY2FsYygxMDAlLXZhcigtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWxlZnQpLXZhcigtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LXdpZHRoKSldIn19LGFjdGl2ZTp7dHJ1ZTp7Y2hpbGRMaW5rOiJiZWZvcmU6YmctZWxldmF0ZWQgdGV4dC1oaWdobGlnaHRlZCIsY2hpbGRMaW5rSWNvbjoidGV4dC1kZWZhdWx0In0sZmFsc2U6e2xpbms6InRleHQtbXV0ZWQiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1kaW1tZWQiLGNoaWxkTGluazpbImhvdmVyOmJlZm9yZTpiZy1lbGV2YXRlZC81MCB0ZXh0LWRlZmF1bHQgaG92ZXI6dGV4dC1oaWdobGlnaHRlZCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGNoaWxkTGlua0ljb246WyJ0ZXh0LWRpbW1lZCBncm91cC1ob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0sZGlzYWJsZWQ6e3RydWU6e2xpbms6ImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTc1In19LGhpZ2hsaWdodDp7dHJ1ZToiIn0sbGV2ZWw6e3RydWU6IiJ9LGNvbGxhcHNlZDp7dHJ1ZToiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY29udGVudE9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczp7Y2hpbGRMaXN0OiJncmlkLWNvbHMtMiBnYXAtMiJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGNvbnRlbnRPcmllbnRhdGlvbjoidmVydGljYWwiLGNsYXNzOntjaGlsZExpc3Q6ImdhcC0xIixjb250ZW50OiJ3LTYwIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGNvbGxhcHNlZDohMSxjbGFzczp7Y2hpbGRMaXN0OiJtcy01IGJvcmRlci1zIGJvcmRlci1kZWZhdWx0IixjaGlsZEl0ZW06InBzLTEuNSAtbXMtcHgiLGNvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW2NvbGxhcHNpYmxlLWRvd25fMjAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bY29sbGFwc2libGUtdXBfMjAwbXNfZWFzZS1vdXRdIG92ZXJmbG93LWhpZGRlbiJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixjb2xsYXBzZWQ6ITAsY2xhc3M6e2xpbms6InB4LTEuNSIsbGlua0xhYmVsOiJoaWRkZW4iLGxpbmtUcmFpbGluZzoiaGlkZGVuIixjb250ZW50OiJzaGFkb3ctc20gcm91bmRlZC1zbSBtaW4taC02IHAtMSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGhpZ2hsaWdodDohMCxjbGFzczp7bGluazpbImFmdGVyOmFic29sdXRlIGFmdGVyOi1ib3R0b20tMiBhZnRlcjppbnNldC14LTIuNSBhZnRlcjpibG9jayBhZnRlcjpoLXB4IGFmdGVyOnJvdW5kZWQtZnVsbCIsImFmdGVyOnRyYW5zaXRpb24tY29sb3JzIl19fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsY2xhc3M6e2xpbms6WyJhZnRlcjphYnNvbHV0ZSBhZnRlcjotc3RhcnQtMS41IGFmdGVyOmluc2V0LXktMC41IGFmdGVyOmJsb2NrIGFmdGVyOnctcHggYWZ0ZXI6cm91bmRlZC1mdWxsIiwiYWZ0ZXI6dHJhbnNpdGlvbi1jb2xvcnMiXX19LHtkaXNhYmxlZDohMSxhY3RpdmU6ITEsdmFyaWFudDoicGlsbCIsY2xhc3M6e2xpbms6WyJob3Zlcjp0ZXh0LWhpZ2hsaWdodGVkIGhvdmVyOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGxpbmtMZWFkaW5nSWNvbjpbImdyb3VwLWhvdmVyOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19fSx7ZGlzYWJsZWQ6ITEsYWN0aXZlOiExLHZhcmlhbnQ6InBpbGwiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczp7bGluazoiZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1oaWdobGlnaHRlZCIsbGlua0xlYWRpbmdJY29uOiJncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWRlZmF1bHQifX0se2Rpc2FibGVkOiExLHZhcmlhbnQ6InBpbGwiLGhpZ2hsaWdodDohMCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1lbGV2YXRlZC81MCJ9fSx7ZGlzYWJsZWQ6ITEsdmFyaWFudDoicGlsbCIsaGlnaGxpZ2h0OiExLGFjdGl2ZTohMSxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1lbGV2YXRlZC81MCJ9fSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1wcmltYXJ5IixsaW5rTGVhZGluZ0ljb246InRleHQtcHJpbWFyeSBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1zZWNvbmRhcnkiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1zZWNvbmRhcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zZWNvbmRhcnkifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtc3VjY2VzcyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXN1Y2Nlc3MgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LWluZm8iLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1pbmZvIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaW5mbyJ9fSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC13YXJuaW5nIixsaW5rTGVhZGluZ0ljb246InRleHQtd2FybmluZyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXdhcm5pbmcifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LWVycm9yIixsaW5rTGVhZGluZ0ljb246InRleHQtZXJyb3IgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1lcnJvciJ9fSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1oaWdobGlnaHRlZCIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWhpZ2hsaWdodGVkIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQifX0se3ZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxoaWdobGlnaHQ6ITEsY2xhc3M6e2xpbms6ImJlZm9yZTpiZy1lbGV2YXRlZCJ9fSx7dmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGhpZ2hsaWdodDohMCxkaXNhYmxlZDohMSxjbGFzczp7bGluazpbImhvdmVyOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsImJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdfX0se2Rpc2FibGVkOiExLGFjdGl2ZTohMSx2YXJpYW50OiJsaW5rIixjbGFzczp7bGluazpbImhvdmVyOnRleHQtaGlnaGxpZ2h0ZWQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxpbmtMZWFkaW5nSWNvbjpbImdyb3VwLWhvdmVyOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19fSx7ZGlzYWJsZWQ6ITEsYWN0aXZlOiExLHZhcmlhbnQ6ImxpbmsiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczp7bGluazoiZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1oaWdobGlnaHRlZCIsbGlua0xlYWRpbmdJY29uOiJncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWRlZmF1bHQifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtcHJpbWFyeSIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXByaW1hcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1wcmltYXJ5In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtc2Vjb25kYXJ5IixsaW5rTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXN1Y2Nlc3MiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1zdWNjZXNzIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6ImxpbmsiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1pbmZvIixsaW5rTGVhZGluZ0ljb246InRleHQtaW5mbyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtd2FybmluZyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXdhcm5pbmcgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6ImxpbmsiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1lcnJvciIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWVycm9yIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZXJyb3IifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1oaWdobGlnaHRlZCBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWhpZ2hsaWdodGVkIn19LHtoaWdobGlnaHRDb2xvcjoicHJpbWFyeSIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6YmctcHJpbWFyeSJ9fSx7aGlnaGxpZ2h0Q29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6Ymctc2Vjb25kYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6Ymctc3VjY2VzcyJ9fSx7aGlnaGxpZ2h0Q29sb3I6ImluZm8iLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLWluZm8ifX0se2hpZ2hsaWdodENvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJhZnRlcjpiZy13YXJuaW5nIn19LHtoaWdobGlnaHRDb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLWVycm9yIn19LHtoaWdobGlnaHRDb2xvcjoibmV1dHJhbCIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6YmctaW52ZXJ0ZWQifX1dLGRlZmF1bHRWYXJpYW50czp7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodENvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJwaWxsIn19LE5lPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVU5hdmlnYXRpb25NZW51IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im11bHRpcGxlIn0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGV4dGVybmFsSWNvbjp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGNvbGxhcHNlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0b29sdGlwOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcG92ZXI6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodENvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb250ZW50T3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJob3Jpem9udGFsIn0sYXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdmFsdWVLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2YWx1ZSJ9LGxhYmVsS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGRlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sZGlzYWJsZUNsaWNrVHJpZ2dlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlSG92ZXJUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNraXBEZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsYXBzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoaCx7ZW1pdDprfSl7Y29uc3QgbT1oLGc9ayxMPWUudXNlU2xvdHMoKSxiPXQoKSx4PWwoIm5hdmlnYXRpb25NZW51IixtKSx5PWEoZS5jb21wdXRlZCgoKT0+KHthczptLmFzLGRlbGF5RHVyYXRpb246bS5kZWxheUR1cmF0aW9uLHNraXBEZWxheUR1cmF0aW9uOm0uc2tpcERlbGF5RHVyYXRpb24sb3JpZW50YXRpb246bS5vcmllbnRhdGlvbixkaXNhYmxlQ2xpY2tUcmlnZ2VyOm0uZGlzYWJsZUNsaWNrVHJpZ2dlcixkaXNhYmxlSG92ZXJUcmlnZ2VyOm0uZGlzYWJsZUhvdmVyVHJpZ2dlcixkaXNhYmxlUG9pbnRlckxlYXZlQ2xvc2U6bS5kaXNhYmxlUG9pbnRlckxlYXZlQ2xvc2UsdW5tb3VudE9uSGlkZTptLnVubW91bnRPbkhpZGV9KSksZyksST1hKG4obSwiY29sbGFwc2libGUiLCJkaXNhYmxlZCIsInR5cGUiLCJ1bm1vdW50T25IaWRlIiksZyksQz1lLnRvUmVmKCgpPT5tLmNvbnRlbnQpLEI9ZS50b1JlZigoKT0+SygiYm9vbGVhbiI9PXR5cGVvZiBtLnRvb2x0aXA/e306bS50b29sdGlwLHsuLi4idmVydGljYWwiPT09bS5vcmllbnRhdGlvbiYme2RlbGF5RHVyYXRpb246MCxjb250ZW50OntzaWRlOiJyaWdodCJ9fX0pKSx3PWUudG9SZWYoKCk9PksoImJvb2xlYW4iPT10eXBlb2YgbS5wb3BvdmVyP3t9Om0ucG9wb3Zlcix7bW9kZToiaG92ZXIiLGNvbnRlbnQ6e3NpZGU6InJpZ2h0IixhbGlnbjoic3RhcnQiLGFsaWduT2Zmc2V0OjJ9fSkpLFtWLF9dPWkoKSxbTixTXT1pKHtwcm9wczp7aXRlbTpPYmplY3QsaW5kZXg6TnVtYmVyLGxldmVsOk51bWJlcixsaXN0SW5kZXg6TnVtYmVyfX0pLEQ9ZS5jb21wdXRlZCgoKT0+byh7ZXh0ZW5kOm8oX2UpLC4uLmIudWk/Lm5hdmlnYXRpb25NZW51fHx7fX0pKHtvcmllbnRhdGlvbjptLm9yaWVudGF0aW9uLGNvbnRlbnRPcmllbnRhdGlvbjoidmVydGljYWwiPT09bS5vcmllbnRhdGlvbj92b2lkIDA6bS5jb250ZW50T3JpZW50YXRpb24sY29sbGFwc2VkOm0uY29sbGFwc2VkLGNvbG9yOm0uY29sb3IsdmFyaWFudDptLnZhcmlhbnQsaGlnaGxpZ2h0Om0uaGlnaGxpZ2h0LGhpZ2hsaWdodENvbG9yOm0uaGlnaGxpZ2h0Q29sb3J8fG0uY29sb3J9KSksRT1lLmNvbXB1dGVkKCgpPT5tLml0ZW1zPy5sZW5ndGg/cihtLml0ZW1zKT9tLml0ZW1zOlttLml0ZW1zXTpbXSk7ZnVuY3Rpb24gZ2V0SXRlbVZhbHVlKGUsdCxsLGEpe2NvbnN0IG49RS52YWx1ZS5sZW5ndGg+MT9gZ3JvdXAtJHthfS1gOiIiO3JldHVybiB1KGUsbS52YWx1ZUtleSk/PyhsPjA/YCR7bn1pdGVtLSR7bH0tJHt0fWA6YCR7bn1pdGVtLSR7dH1gKX1mdW5jdGlvbiBnZXRBY2NvcmRpb25EZWZhdWx0VmFsdWUoZSx0PTAsbD0wKXtjb25zdCBhPWUucmVkdWNlKChlLGEsbik9PigoYS5kZWZhdWx0T3Blbnx8YS5vcGVuKSYmZS5wdXNoKGdldEl0ZW1WYWx1ZShhLG4sdCxsKSksZSksW10pO3JldHVybiJzaW5nbGUiPT09bS50eXBlP2FbMF06YX1mdW5jdGlvbiBvbkxpbmtUcmFpbGluZ0NsaWNrKGUsdCl7dC5jaGlsZHJlbj8ubGVuZ3RoJiYoImhvcml6b250YWwiPT09bS5vcmllbnRhdGlvbj9lLnByZXZlbnREZWZhdWx0KCk6InZlcnRpY2FsIiE9PW0ub3JpZW50YXRpb258fG0uY29sbGFwc2VkfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4odCxsLGEsbik9PntsKCJceDNjIS0tWy0tXHgzZSIpLGwoVyhlLnVucmVmKFYpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7aXRlbTpsLGFjdGl2ZTphLGluZGV4Om59LGksbyxyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsbC5zbG90fHwiaXRlbSIse2l0ZW06bCxpbmRleDpuLGFjdGl2ZTphLHVpOkQudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOmwsYWN0aXZlOmEsaW5kZXg6bix1aTpELnZhbHVlfSwoKT0+W2wuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYyxlLm1lcmdlUHJvcHMoe2tleTowLHNpemU6bC51aT8ubGlua0xlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKHgpPy5saW5rTGVhZGluZ0F2YXRhclNpemV8fEQudmFsdWUubGlua0xlYWRpbmdBdmF0YXJTaXplKCl9LGwuYXZhdGFyLHsiZGF0YS1zbG90IjoibGlua0xlYWRpbmdBdmF0YXIiLGNsYXNzOkQudmFsdWUubGlua0xlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGVhZGluZ0F2YXRhcixsLnVpPy5saW5rTGVhZGluZ0F2YXRhcl0sYWN0aXZlOmEsZGlzYWJsZWQ6ISFsLmRpc2FibGVkfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpsLmljb24mJmwuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHMsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmwudWk/LmxpbmtMZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoeCk/LmxpbmtMZWFkaW5nQ2hpcFNpemV8fEQudmFsdWUubGlua0xlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIifSwib2JqZWN0Ij09dHlwZW9mIGwuY2hpcD9sLmNoaXA6e30seyJkYXRhLXNsb3QiOiJsaW5rTGVhZGluZ0NoaXAifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOmwuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtMZWFkaW5nSWNvbixsLnVpPy5saW5rTGVhZGluZ0ljb25dLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJzaXplIl0pKTpsLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MixuYW1lOmwuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtMZWFkaW5nSWNvbixsLnVpPy5saW5rTGVhZGluZ0ljb25dLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUudW5yZWYodSkobCxtLmxhYmVsS2V5KXx8TFtsLnNsb3Q/YCR7bC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5saW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWwsbC51aT8ubGlua0xhYmVsXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpufSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkobCxtLmxhYmVsS2V5KSksMSldKSwiX2JsYW5rIj09PWwudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImxpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8ubGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxsLmJhZGdlfHwwPT09bC5iYWRnZXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pfHwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RofHxsLnRyYWlsaW5nSWNvbnx8TFtsLnNsb3Q/YCR7bC5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkP2UudW5yZWYoc2UpOiJzcGFuIikse2tleToxLGFzOiJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGgmJiFoLmNvbGxhcHNlZD8ic3BhbiI6dm9pZCAwLCJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmciLGNsYXNzOkQudmFsdWUubGlua1RyYWlsaW5nKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nLGwudWk/LmxpbmtUcmFpbGluZ119KSxvbkNsaWNrOmU9Pm9uTGlua1RyYWlsaW5nQ2xpY2soZSxsKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT5bbC5iYWRnZXx8MD09PWwuYmFkZ2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhSLGUubWVyZ2VQcm9wcyh7a2V5OjAsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLHNpemU6bC51aT8ubGlua1RyYWlsaW5nQmFkZ2VTaXplfHxlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZVNpemV8fEQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2VTaXplKCl9LCJzdHJpbmciPT10eXBlb2YgbC5iYWRnZXx8Im51bWJlciI9PXR5cGVvZiBsLmJhZGdlP3tsYWJlbDpsLmJhZGdlfTpsLmJhZGdlLHsiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nQmFkZ2UiLGNsYXNzOkQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2Uoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZSxsLnVpPy5saW5rVHJhaWxpbmdCYWRnZV19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSl8fCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MSxuYW1lOmwudHJhaWxpbmdJY29ufHxoLnRyYWlsaW5nSWNvbnx8ZS51bnJlZihiKS51aS5pY29ucy5jaGV2cm9uRG93biwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmwudHJhaWxpbmdJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjIsbmFtZTpsLnRyYWlsaW5nSWNvbiwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksXzoyfSwxMDMyLFsiYXMiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTtIKHQuJHNsb3RzLGwuc2xvdHx8Iml0ZW0iLHtpdGVtOmwsaW5kZXg6bixhY3RpdmU6YSx1aTpELnZhbHVlfSwoKT0+e0godC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT57bC5hdmF0YXI/aShXKGMsZS5tZXJnZVByb3BzKHtzaXplOmwudWk/LmxpbmtMZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZih4KT8ubGlua0xlYWRpbmdBdmF0YXJTaXplfHxELnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyU2l6ZSgpfSxsLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQXZhdGFyIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZih4KT8ubGlua0xlYWRpbmdBdmF0YXIsbC51aT8ubGlua0xlYWRpbmdBdmF0YXJdLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSksbnVsbCxvLHIpKTpsLmljb24mJmwuY2hpcD9pKFcocyxlLm1lcmdlUHJvcHMoe3NpemU6bC51aT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZih4KT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8RC52YWx1ZS5saW5rTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiJ9LCJvYmplY3QiPT10eXBlb2YgbC5jaGlwP2wuY2hpcDp7fSx7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQ2hpcCJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbixpLG8pPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZCx7bmFtZTpsLmljb24sImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGVhZGluZ0ljb24sbC51aT8ubGlua0xlYWRpbmdJY29uXSxhY3RpdmU6YSxkaXNhYmxlZDohIWwuZGlzYWJsZWR9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXTtuKFcoZCx7bmFtZTpsLmljb24sImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGVhZGluZ0ljb24sbC51aT8ubGlua0xlYWRpbmdJY29uXSxhY3RpdmU6YSxkaXNhYmxlZDohIWwuZGlzYWJsZWR9KX0sbnVsbCxpLG8pKX0pLF86Mn0sbyxyKSk6bC5pY29uP2koVyhkLHtuYW1lOmwuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtMZWFkaW5nSWNvbixsLnVpPy5saW5rTGVhZGluZ0ljb25dLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxvLHIpLGUudW5yZWYodSkobCxtLmxhYmVsS2V5KXx8TFtsLnNsb3Q/YCR7bC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXT8oaShgPHNwYW4gZGF0YS1zbG90PSJsaW5rTGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5saW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWwsbC51aT8ubGlua0xhYmVsXX0pKX0iJHtyfT5gKSxIKHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpufSwoKT0+e2koYCR7VShlLnVucmVmKHUpKGwsbS5sYWJlbEtleSkpfWApfSxpLG8sciksIl9ibGFuayI9PT1sLnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj9pKFcoZCx7bmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImxpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8ubGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L3NwYW4+IikpOmkoIlx4M2MhLS0tLVx4M2UiKSxsLmJhZGdlfHwwPT09bC5iYWRnZXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pfHwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RofHxsLnRyYWlsaW5nSWNvbnx8TFtsLnNsb3Q/YCR7bC5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciXT9YKGksZS5jcmVhdGVWTm9kZShlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGgmJiFoLmNvbGxhcHNlZD9lLnVucmVmKHNlKToic3BhbiIpLHthczoidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYhaC5jb2xsYXBzZWQ/InNwYW4iOnZvaWQgMCwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nIixjbGFzczpELnZhbHVlLmxpbmtUcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtUcmFpbGluZyxsLnVpPy5saW5rVHJhaWxpbmddfSksb25DbGljazplPT5vbkxpbmtUcmFpbGluZ0NsaWNrKGUsbCl9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxvLHIsYyk9PntpZighbylyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT5bbC5iYWRnZXx8MD09PWwuYmFkZ2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhSLGUubWVyZ2VQcm9wcyh7a2V5OjAsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLHNpemU6bC51aT8ubGlua1RyYWlsaW5nQmFkZ2VTaXplfHxlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZVNpemV8fEQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2VTaXplKCl9LCJzdHJpbmciPT10eXBlb2YgbC5iYWRnZXx8Im51bWJlciI9PXR5cGVvZiBsLmJhZGdlP3tsYWJlbDpsLmJhZGdlfTpsLmJhZGdlLHsiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nQmFkZ2UiLGNsYXNzOkQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2Uoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZSxsLnVpPy5saW5rVHJhaWxpbmdCYWRnZV19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSl8fCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MSxuYW1lOmwudHJhaWxpbmdJY29ufHxoLnRyYWlsaW5nSWNvbnx8ZS51bnJlZihiKS51aS5pY29ucy5jaGV2cm9uRG93biwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmwudHJhaWxpbmdJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjIsbmFtZTpsLnRyYWlsaW5nSWNvbiwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTtIKHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT57bC5iYWRnZXx8MD09PWwuYmFkZ2U/byhXKFIsZS5tZXJnZVByb3BzKHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoib3V0bGluZSIsc2l6ZTpsLnVpPy5saW5rVHJhaWxpbmdCYWRnZVNpemV8fGUudW5yZWYoeCk/LmxpbmtUcmFpbGluZ0JhZGdlU2l6ZXx8RC52YWx1ZS5saW5rVHJhaWxpbmdCYWRnZVNpemUoKX0sInN0cmluZyI9PXR5cGVvZiBsLmJhZGdlfHwibnVtYmVyIj09dHlwZW9mIGwuYmFkZ2U/e2xhYmVsOmwuYmFkZ2V9OmwuYmFkZ2UseyJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmdCYWRnZSIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdCYWRnZSh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtUcmFpbGluZ0JhZGdlLGwudWk/LmxpbmtUcmFpbGluZ0JhZGdlXX0pfSksbnVsbCxyLGMpKTpvKCJceDNjIS0tLS1ceDNlIiksImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pfHwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoP28oVyhkLHtuYW1lOmwudHJhaWxpbmdJY29ufHxoLnRyYWlsaW5nSWNvbnx8ZS51bnJlZihiKS51aS5pY29ucy5jaGV2cm9uRG93biwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLHIsYykpOmwudHJhaWxpbmdJY29uP28oVyhkLHtuYW1lOmwudHJhaWxpbmdJY29uLCJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtUcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdJY29uLGwudWk/LmxpbmtUcmFpbGluZ0ljb25dLGFjdGl2ZTphfSl9LG51bGwscixjKSk6bygiXHgzYyEtLS0tXHgzZSIpfSxvLHIsYyl9KSxfOjJ9KSxvLHIpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxvLHIpfSksXzozfSxhKSksbChXKGUudW5yZWYoTiksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtOmwsaW5kZXg6YSxsZXZlbDpuPTAsbGlzdEluZGV4Omk9MH0sbyxyLGMpPT57aWYoIW8pcmV0dXJuWyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8aC5jb2xsYXBzZWQ/ZS51bnJlZihrZSk6ZS51bnJlZihyZSkpLGUubWVyZ2VQcm9wcyh7YXM6ImxpIn0sInZlcnRpY2FsIiE9PWgub3JpZW50YXRpb258fGguY29sbGFwc2VkP3t9OntkaXNhYmxlZDohIWwuZGlzYWJsZWR9LHt2YWx1ZTpnZXRJdGVtVmFsdWUobCxhLG4saSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8ImxhYmVsIiE9PWwudHlwZXx8aC5jb2xsYXBzZWQ/ImxhYmVsIiE9PWwudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGYsZS5tZXJnZVByb3BzKHtrZXk6MX0sInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkJiYidHJpZ2dlciI9PT1sLnR5cGU/e306ZS51bnJlZih2KShsKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmksLi4ub30pPT5bKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJihsLmNoaWxkcmVuPy5sZW5ndGh8fExbbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT9lLnVucmVmKEllKToidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8IWwuY2hpbGRyZW4/Lmxlbmd0aHx8aC5jb2xsYXBzZWR8fG8uaHJlZj9lLnVucmVmKGJlKTplLnVucmVmKHNlKSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOmwuZGlzYWJsZWQsb25TZWxlY3Q6bC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmguY29sbGFwc2VkJiZsLmNoaWxkcmVuPy5sZW5ndGgmJihtLnBvcG92ZXJ8fGwucG9wb3Zlcik/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh3ZSxlLm1lcmdlUHJvcHMoe2tleTowfSx7Li4udy52YWx1ZSwuLi4iYm9vbGVhbiI9PXR5cGVvZiBsLnBvcG92ZXI/e306bC5wb3BvdmVyfHx7fX0se3VpOntjb250ZW50OkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX19KSx7Y29udGVudDplLndpdGhDdHgoKHtjbG9zZTpufSk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCIse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YSx1aTpELnZhbHVlLGNsb3NlOm59LCgpPT5bZS5jcmVhdGVWTm9kZSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9LFtlLmNyZWF0ZVZOb2RlKCJsaSIseyJkYXRhLXNsb3QiOiJjaGlsZExhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExhYmVsLGwudWk/LmNoaWxkTGFiZWxdfSl9LGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkobCxtLmxhYmVsS2V5KSksMyksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobC5jaGlsZHJlbiwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygibGkiLHtrZXk6YSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpELnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkSXRlbSxsLnVpPy5jaGlsZEl0ZW1dfSl9LFtlLmNyZWF0ZVZOb2RlKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoYmUpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTphLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4seyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rLGwudWk/LmNoaWxkTGluayx0LmNsYXNzXSxhY3RpdmU6YX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0ljb24sbC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKSsiICIsMSksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0sMikpKSwxMjgpKV0sMildKV0pLGRlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyhvLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6RC52YWx1ZS5saW5rKHtjbGFzczpbZS51bnJlZih4KT8ubGluayxsLnVpPy5saW5rLGwuY2xhc3NdLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDohIWwuZGlzYWJsZWQsbGV2ZWw6bj4wfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJ1aSJdKSk6InZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmguY29sbGFwc2VkJiYobS50b29sdGlwfHxsLnRvb2x0aXApfHwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiZsLnRvb2x0aXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhGLGUubWVyZ2VQcm9wcyh7a2V5OjEsdGV4dDplLnVucmVmKHUpKGwsbS5sYWJlbEtleSl9LHsuLi5CLnZhbHVlLC4uLiJib29sZWFuIj09dHlwZW9mIGwudG9vbHRpcD97fTpsLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyhvLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6RC52YWx1ZS5saW5rKHtjbGFzczpbZS51bnJlZih4KT8ubGluayxsLnVpPy5saW5rLGwuY2xhc3NdLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDohIWwuZGlzYWJsZWQsbGV2ZWw6bj4wfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJ0ZXh0Il0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHAsZS5tZXJnZVByb3BzKHtrZXk6Mn0sbyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOiJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb258fG4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKV0pLF86Mn0sMTA2NCxbImFjdGl2ZSIsImRpc2FibGVkIiwib25TZWxlY3QiXSkpLCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJihsLmNoaWxkcmVuPy5sZW5ndGh8fExbbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZ2UpLGUubWVyZ2VQcm9wcyh7a2V5OjB9LEMudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCIse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YSx1aTpELnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobC5jaGlsZHJlbiwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygibGkiLHtrZXk6YSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpELnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkSXRlbSxsLnVpPy5jaGlsZEl0ZW1dfSl9LFtlLmNyZWF0ZVZOb2RlKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoYmUpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTphLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4seyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rLGwudWk/LmNoaWxkTGluayx0LmNsYXNzXSxhY3RpdmU6YX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0ljb24sbC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua1dyYXBwZXIiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua1dyYXBwZXIsbC51aT8uY2hpbGRMaW5rV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInAiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLHQuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygicCIse2tleTowLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtEZXNjcmlwdGlvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtEZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uLGwudWk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uXSxhY3RpdmU6YX0pfSxlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiYWN0aXZlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXSwyKSkpLDEyOCkpXSwyKV0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOkQudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5sYWJlbCxsLnVpPy5sYWJlbCxsLmNsYXNzXX0pfSxbZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSwyKSksInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihjZSkse2tleToyLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihhZSksZS5tZXJnZVByb3BzKHsuLi5lLnVucmVmKEkpLGRlZmF1bHRWYWx1ZTpnZXRBY2NvcmRpb25EZWZhdWx0VmFsdWUobC5jaGlsZHJlbixuKzEsaSl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihTKSx7a2V5OmwsaXRlbTp0LGluZGV4OmwsbGV2ZWw6bisxLCJsaXN0LWluZGV4IjppLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLHQudWk/LmNoaWxkSXRlbV19KX0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwibGV2ZWwiLCJsaXN0LWluZGV4IiwiY2xhc3MiXSkpKSwxMjgpKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbInZhbHVlIl0pKV07WChvLGUuY3JlYXRlVk5vZGUoZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8aC5jb2xsYXBzZWQ/ZS51bnJlZihrZSk6ZS51bnJlZihyZSkpLGUubWVyZ2VQcm9wcyh7YXM6ImxpIn0sInZlcnRpY2FsIiE9PWgub3JpZW50YXRpb258fGguY29sbGFwc2VkP3t9OntkaXNhYmxlZDohIWwuZGlzYWJsZWR9LHt2YWx1ZTpnZXRJdGVtVmFsdWUobCxhLG4saSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKG8scixjLHMpPT57aWYoIXIpcmV0dXJuWyJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHwibGFiZWwiIT09bC50eXBlfHxoLmNvbGxhcHNlZD8ibGFiZWwiIT09bC50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZixlLm1lcmdlUHJvcHMoe2tleToxfSwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYhaC5jb2xsYXBzZWQmJiJ0cmlnZ2VyIj09PWwudHlwZT97fTplLnVucmVmKHYpKGwpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6aSwuLi5vfSk9PlsoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pP2UudW5yZWYoSWUpOiJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHwhbC5jaGlsZHJlbj8ubGVuZ3RofHxoLmNvbGxhcHNlZHx8by5ocmVmP2UudW5yZWYoYmUpOmUudW5yZWYoc2UpKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6bC5kaXNhYmxlZCxvblNlbGVjdDpsLm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmaC5jb2xsYXBzZWQmJmwuY2hpbGRyZW4/Lmxlbmd0aCYmKG0ucG9wb3Zlcnx8bC5wb3BvdmVyKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHdlLGUubWVyZ2VQcm9wcyh7a2V5OjB9LHsuLi53LnZhbHVlLC4uLiJib29sZWFuIj09dHlwZW9mIGwucG9wb3Zlcj97fTpsLnBvcG92ZXJ8fHt9fSx7dWk6e2NvbnRlbnQ6RC52YWx1ZS5jb250ZW50KHtjbGFzczpbZS51bnJlZih4KT8uY29udGVudCxsLnVpPy5jb250ZW50XX0pfX0pLHtjb250ZW50OmUud2l0aEN0eCgoe2Nsb3NlOm59KT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWUsY2xvc2U6bn0sKCk9PltlLmNyZWF0ZVZOb2RlKCJ1bCIseyJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0sW2UuY3JlYXRlVk5vZGUoImxpIix7ImRhdGEtc2xvdCI6ImNoaWxkTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGFiZWwsbC51aT8uY2hpbGRMYWJlbF19KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KShsLG0ubGFiZWxLZXkpKSwzKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiYWN0aXZlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXSwyKSkpLDEyOCkpXSwyKV0pXSksZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDpuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTA0MCxbInVpIl0pKToidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmaC5jb2xsYXBzZWQmJihtLnRvb2x0aXB8fGwudG9vbHRpcCl8fCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJmwudG9vbHRpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEYsZS5tZXJnZVByb3BzKHtrZXk6MSx0ZXh0OmUudW5yZWYodSkobCxtLmxhYmVsS2V5KX0sey4uLkIudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC50b29sdGlwP3t9OmwudG9vbHRpcHx8e319KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDpuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTA0MCxbInRleHQiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToyfSxvLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6RC52YWx1ZS5saW5rKHtjbGFzczpbZS51bnJlZih4KT8ubGluayxsLnVpPy5saW5rLGwuY2xhc3NdLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDohIWwuZGlzYWJsZWQsbGV2ZWw6Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbnx8bj4wfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSkpXSksXzoyfSwxMDY0LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvblNlbGVjdCJdKSksImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihnZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sQy52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWV9LCgpPT5bZS5jcmVhdGVWTm9kZSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rV3JhcHBlciIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtXcmFwcGVyKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rV3JhcHBlcixsLnVpPy5jaGlsZExpbmtXcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgicCIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKSsiICIsMSksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksdC5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjAsImRhdGEtc2xvdCI6ImNoaWxkTGlua0Rlc2NyaXB0aW9uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0Rlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rRGVzY3JpcHRpb24sbC51aT8uY2hpbGRMaW5rRGVzY3JpcHRpb25dLGFjdGl2ZTphfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoyfSwxMDQwKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6RC52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmxhYmVsLGwudWk/LmxhYmVsLGwuY2xhc3NdfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldLDIpKSwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYhaC5jb2xsYXBzZWQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGNlKSx7a2V5OjIsImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGFlKSxlLm1lcmdlUHJvcHMoey4uLmUudW5yZWYoSSksZGVmYXVsdFZhbHVlOmdldEFjY29yZGlvbkRlZmF1bHRWYWx1ZShsLmNoaWxkcmVuLG4rMSxpKX0se2FzOiJ1bCIsImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobC5jaGlsZHJlbiwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFMpLHtrZXk6bCxpdGVtOnQsaW5kZXg6bCxsZXZlbDpuKzEsImxpc3QtaW5kZXgiOmksImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sdC51aT8uY2hpbGRJdGVtXX0pfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJsZXZlbCIsImxpc3QtaW5kZXgiLCJjbGFzcyJdKSkpLDEyOCkpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTsidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8ImxhYmVsIiE9PWwudHlwZXx8aC5jb2xsYXBzZWQ/ImxhYmVsIiE9PWwudHlwZT9yKFcoZixlLm1lcmdlUHJvcHMoInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkJiYidHJpZ2dlciI9PT1sLnR5cGU/e306ZS51bnJlZih2KShsKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmksLi4ub30scixjLHMpPT57aWYoIXIpcmV0dXJuWyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSk/ZS51bnJlZihJZSk6InZlcnRpY2FsIiE9PWgub3JpZW50YXRpb258fCFsLmNoaWxkcmVuPy5sZW5ndGh8fGguY29sbGFwc2VkfHxvLmhyZWY/ZS51bnJlZihiZSk6ZS51bnJlZihzZSkpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDpsLmRpc2FibGVkLG9uU2VsZWN0Omwub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYobS5wb3BvdmVyfHxsLnBvcG92ZXIpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sod2UsZS5tZXJnZVByb3BzKHtrZXk6MH0sey4uLncudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC5wb3BvdmVyP3t9OmwucG9wb3Zlcnx8e319LHt1aTp7Y29udGVudDpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9fSkse2NvbnRlbnQ6ZS53aXRoQ3R4KCh7Y2xvc2U6bn0pPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZSxjbG9zZTpufSwoKT0+W2UuY3JlYXRlVk5vZGUoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSxbZS5jcmVhdGVWTm9kZSgibGkiLHsiZGF0YS1zbG90IjoiY2hpbGRMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMYWJlbCxsLnVpPy5jaGlsZExhYmVsXX0pfSxlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKGwsbS5sYWJlbEtleSkpLDMpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImxpIix7a2V5OmEsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sbC51aT8uY2hpbGRJdGVtXX0pfSxbZS5jcmVhdGVWTm9kZShmLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sZS51bnJlZih2KSh0KSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmEsLi4ubn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidWkiXSkpOiJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmKG0udG9vbHRpcHx8bC50b29sdGlwKXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmbC50b29sdGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRixlLm1lcmdlUHJvcHMoe2tleToxLHRleHQ6ZS51bnJlZih1KShsLG0ubGFiZWxLZXkpfSx7Li4uQi52YWx1ZSwuLi4iYm9vbGVhbiI9PXR5cGVvZiBsLnRvb2x0aXA/e306bC50b29sdGlwfHx7fX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidGV4dCJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjJ9LG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDoiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9ufHxuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldKSxfOjJ9LDEwNjQsWyJhY3RpdmUiLCJkaXNhYmxlZCIsIm9uU2VsZWN0Il0pKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGdlKSxlLm1lcmdlUHJvcHMoe2tleTowfSxDLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6RC52YWx1ZS5jb250ZW50KHtjbGFzczpbZS51bnJlZih4KT8uY29udGVudCxsLnVpPy5jb250ZW50XX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZX0sKCk9PltlLmNyZWF0ZVZOb2RlKCJ1bCIseyJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImxpIix7a2V5OmEsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sbC51aT8uY2hpbGRJdGVtXX0pfSxbZS5jcmVhdGVWTm9kZShmLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sZS51bnJlZih2KSh0KSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmEsLi4ubn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtXcmFwcGVyIixjbGFzczpELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJwIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSx0LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rRGVzY3JpcHRpb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtEZXNjcmlwdGlvbixsLnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOmF9KX0sZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0sMikpKSwxMjgpKV0sMildKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO1gocixlLmNyZWF0ZVZOb2RlKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pP2UudW5yZWYoSWUpOiJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHwhbC5jaGlsZHJlbj8ubGVuZ3RofHxoLmNvbGxhcHNlZHx8by5ocmVmP2UudW5yZWYoYmUpOmUudW5yZWYoc2UpKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6bC5kaXNhYmxlZCxvblNlbGVjdDpsLm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsYyxzLGspPT57aWYoIWMpcmV0dXJuWyJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYobS5wb3BvdmVyfHxsLnBvcG92ZXIpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sod2UsZS5tZXJnZVByb3BzKHtrZXk6MH0sey4uLncudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC5wb3BvdmVyP3t9OmwucG9wb3Zlcnx8e319LHt1aTp7Y29udGVudDpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9fSkse2NvbnRlbnQ6ZS53aXRoQ3R4KCh7Y2xvc2U6bn0pPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZSxjbG9zZTpufSwoKT0+W2UuY3JlYXRlVk5vZGUoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSxbZS5jcmVhdGVWTm9kZSgibGkiLHsiZGF0YS1zbG90IjoiY2hpbGRMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMYWJlbCxsLnVpPy5jaGlsZExhYmVsXX0pfSxlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKGwsbS5sYWJlbEtleSkpLDMpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImxpIix7a2V5OmEsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sbC51aT8uY2hpbGRJdGVtXX0pfSxbZS5jcmVhdGVWTm9kZShmLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sZS51bnJlZih2KSh0KSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmEsLi4ubn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidWkiXSkpOiJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmKG0udG9vbHRpcHx8bC50b29sdGlwKXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmbC50b29sdGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRixlLm1lcmdlUHJvcHMoe2tleToxLHRleHQ6ZS51bnJlZih1KShsLG0ubGFiZWxLZXkpfSx7Li4uQi52YWx1ZSwuLi4iYm9vbGVhbiI9PXR5cGVvZiBsLnRvb2x0aXA/e306bC50b29sdGlwfHx7fX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidGV4dCJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjJ9LG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDoiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9ufHxuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldOyJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYobS5wb3BvdmVyfHxsLnBvcG92ZXIpP2MoVyh3ZSxlLm1lcmdlUHJvcHMoey4uLncudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC5wb3BvdmVyP3t9OmwucG9wb3Zlcnx8e319LHt1aTp7Y29udGVudDpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9fSkse2NvbnRlbnQ6ZS53aXRoQ3R4KCh7Y2xvc2U6bn0sbyxyLGMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWUsY2xvc2U6bn0sKCk9PltlLmNyZWF0ZVZOb2RlKCJ1bCIseyJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0sW2UuY3JlYXRlVk5vZGUoImxpIix7ImRhdGEtc2xvdCI6ImNoaWxkTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGFiZWwsbC51aT8uY2hpbGRMYWJlbF19KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KShsLG0ubGFiZWxLZXkpKSwzKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiYWN0aXZlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXSwyKSkpLDEyOCkpXSwyKV0pXTtIKHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZSxjbG9zZTpufSwoKT0+e28oYDx1bCBkYXRhLXNsb3Q9ImNoaWxkTGlzdCIgY2xhc3M9IiR7aihELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSkpfSIke2N9PjxsaSBkYXRhLXNsb3Q9ImNoaWxkTGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5jaGlsZExhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMYWJlbCxsLnVpPy5jaGlsZExhYmVsXX0pKX0iJHtjfT4ke1UoZS51bnJlZih1KShsLG0ubGFiZWxLZXkpKX08L2xpPlx4M2MhLS1bLS1ceDNlYCksRyhsLmNoaWxkcmVuLCh0LGEpPT57byhgPGxpIGRhdGEtc2xvdD0iY2hpbGRJdGVtIiBjbGFzcz0iJHtqKEQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KSl9IiR7Y30+YCksbyhXKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSxpLG8scik9PntpZighaSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV07aShXKGUudW5yZWYoYmUpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTphLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxvLHIsYyk9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTtvKFcocCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4seyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rLGwudWk/LmNoaWxkTGluayx0LmNsYXNzXSxhY3RpdmU6YX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChuLGksbyxyKT0+e2lmKCFpKXJldHVyblt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV07dC5pY29uP2koVyhkLHtuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKGA8c3BhbiBkYXRhLXNsb3Q9ImNoaWxkTGlua0xhYmVsIiBjbGFzcz0iJHtqKEQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KSl9IiR7cn0+JHtVKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSl9IGApLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/aShXKGQse25hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L3NwYW4+Iil9KSxfOjJ9LHIsYykpfSksXzoyfSxvLHIpKX0pLF86Mn0scixjKSksbygiPC9saT4iKX0pLG8oIlx4M2MhLS1dLS1ceDNlPC91bD4iKX0sbyxyLGMpfSksZGVmYXVsdDplLndpdGhDdHgoKHQscixjLHMpPT57aWYoIXIpcmV0dXJuW2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTtyKFcocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG4sbyxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXTtuKFcoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLG8scikpfSksXzoyfSxjLHMpKX0pLF86Mn0scyxrKSk6InZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmguY29sbGFwc2VkJiYobS50b29sdGlwfHxsLnRvb2x0aXApfHwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiZsLnRvb2x0aXA/YyhXKEYsZS5tZXJnZVByb3BzKHt0ZXh0OmUudW5yZWYodSkobCxtLmxhYmVsS2V5KX0sey4uLkIudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC50b29sdGlwP3t9OmwudG9vbHRpcHx8e319KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQscixjLHMpPT57aWYoIXIpcmV0dXJuW2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTtyKFcocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG4sbyxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXTtuKFcoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLG8scikpfSksXzoyfSxjLHMpKX0pLF86Mn0scyxrKSk6YyhXKHAsZS5tZXJnZVByb3BzKG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDoiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9ufHxuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgodCxuLG8scik9PntpZighbilyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV07bihXKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCxvLHIpKX0pLF86Mn0scyxrKSl9KSxfOjJ9KSxjLHMpLCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJihsLmNoaWxkcmVuPy5sZW5ndGh8fExbbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT9yKFcoZS51bnJlZihnZSksZS5tZXJnZVByb3BzKEMudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKG4sbyxyLGMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWV9LCgpPT5bZS5jcmVhdGVWTm9kZSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rV3JhcHBlciIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtXcmFwcGVyKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rV3JhcHBlcixsLnVpPy5jaGlsZExpbmtXcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgicCIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKSsiICIsMSksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksdC5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjAsImRhdGEtc2xvdCI6ImNoaWxkTGlua0Rlc2NyaXB0aW9uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0Rlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rRGVzY3JpcHRpb24sbC51aT8uY2hpbGRMaW5rRGVzY3JpcHRpb25dLGFjdGl2ZTphfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldO0godC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCIse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YSx1aTpELnZhbHVlfSwoKT0+e28oYDx1bCBkYXRhLXNsb3Q9ImNoaWxkTGlzdCIgY2xhc3M9IiR7aihELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSkpfSIke2N9Plx4M2MhLS1bLS1ceDNlYCksRyhsLmNoaWxkcmVuLCh0LGEpPT57byhgPGxpIGRhdGEtc2xvdD0iY2hpbGRJdGVtIiBjbGFzcz0iJHtqKEQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KSl9IiR7Y30+YCksbyhXKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSxpLG8scik9PntpZighaSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtXcmFwcGVyIixjbGFzczpELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJwIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSx0LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rRGVzY3JpcHRpb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtEZXNjcmlwdGlvbixsLnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOmF9KX0sZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXTtpKFcoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KChpLG8scixjKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtXcmFwcGVyIixjbGFzczpELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJwIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSx0LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rRGVzY3JpcHRpb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtEZXNjcmlwdGlvbixsLnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOmF9KX0sZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07byhXKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgobixpLG8scik9PntpZighaSlyZXR1cm5bdC5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0ljb24sbC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua1dyYXBwZXIiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua1dyYXBwZXIsbC51aT8uY2hpbGRMaW5rV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInAiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLHQuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygicCIse2tleTowLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtEZXNjcmlwdGlvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtEZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uLGwudWk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uXSxhY3RpdmU6YX0pfSxlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV07dC5pY29uP2koVyhkLHtuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKGA8ZGl2IGRhdGEtc2xvdD0iY2hpbGRMaW5rV3JhcHBlciIgY2xhc3M9IiR7aihELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSkpfSIke3J9PjxwIGRhdGEtc2xvdD0iY2hpbGRMaW5rTGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pKX0iJHtyfT4ke1UoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKX0gYCksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj9pKFcoZCx7bmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsbyxyKSk6aSgiXHgzYyEtLS0tXHgzZSIpLGkoIjwvcD4iKSx0LmRlc2NyaXB0aW9uP2koYDxwIGRhdGEtc2xvdD0iY2hpbGRMaW5rRGVzY3JpcHRpb24iIGNsYXNzPSIke2ooRC52YWx1ZS5jaGlsZExpbmtEZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uLGwudWk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uXSxhY3RpdmU6YX0pKX0iJHtyfT4ke1UodC5kZXNjcmlwdGlvbil9PC9wPmApOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L2Rpdj4iKX0pLF86Mn0scixjKSl9KSxfOjJ9LG8scikpfSksXzoyfSxyLGMpKSxvKCI8L2xpPiIpfSksbygiXHgzYyEtLV0tLVx4M2U8L3VsPiIpfSxvLHIsYyl9KSxfOjJ9LGMscykpOnIoIlx4M2MhLS0tLVx4M2UiKX0pLF86Mn0sYyxzKSk6cigiXHgzYyEtLS0tXHgzZSIpOihyKGA8ZGl2IGRhdGEtc2xvdD0ibGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmxhYmVsLGwudWk/LmxhYmVsLGwuY2xhc3NdfSkpfSIke3N9PmApLHIoVyhlLnVucmVmKF8pLHtpdGVtOmwsaW5kZXg6YX0sbnVsbCxjLHMpKSxyKCI8L2Rpdj4iKSksInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkP3IoVyhlLnVucmVmKGNlKSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbyxyKT0+e2lmKCFhKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoYWUpLGUubWVyZ2VQcm9wcyh7Li4uZS51bnJlZihJKSxkZWZhdWx0VmFsdWU6Z2V0QWNjb3JkaW9uRGVmYXVsdFZhbHVlKGwuY2hpbGRyZW4sbisxLGkpfSx7YXM6InVsIiwiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUykse2tleTpsLGl0ZW06dCxpbmRleDpsLGxldmVsOm4rMSwibGlzdC1pbmRleCI6aSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpELnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkSXRlbSx0LnVpPy5jaGlsZEl0ZW1dfSl9LG51bGwsOCxbIml0ZW0iLCJpbmRleCIsImxldmVsIiwibGlzdC1pbmRleCIsImNsYXNzIl0pKSksMTI4KSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07YShXKGUudW5yZWYoYWUpLGUubWVyZ2VQcm9wcyh7Li4uZS51bnJlZihJKSxkZWZhdWx0VmFsdWU6Z2V0QWNjb3JkaW9uRGVmYXVsdFZhbHVlKGwuY2hpbGRyZW4sbisxLGkpfSx7YXM6InVsIiwiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsYSxvLHIpPT57aWYoIWEpcmV0dXJuWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihTKSx7a2V5OmwsaXRlbTp0LGluZGV4OmwsbGV2ZWw6bisxLCJsaXN0LWluZGV4IjppLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLHQudWk/LmNoaWxkSXRlbV19KX0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwibGV2ZWwiLCJsaXN0LWluZGV4IiwiY2xhc3MiXSkpKSwxMjgpKV07YSgiXHgzYyEtLVstLVx4M2UiKSxHKGwuY2hpbGRyZW4sKHQsbCk9PnthKFcoZS51bnJlZihTKSx7a2V5OmwsaXRlbTp0LGluZGV4OmwsbGV2ZWw6bisxLCJsaXN0LWluZGV4IjppLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLHQudWk/LmNoaWxkSXRlbV19KX0sbnVsbCxvLHIpKX0pLGEoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9LG8scikpfSksXzoyfSxjLHMpKTpyKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9KSxyLGMpfSksXzozfSxhKSksbChXKGUudW5yZWYodmUpLGUubWVyZ2VQcm9wcyh7Li4uZS51bnJlZih5KSwuLi4iaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uP3ttb2RlbFZhbHVlOmgubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6aC5kZWZhdWx0VmFsdWV9Ont9LC4uLnQuJGF0dHJzfSx7ImRhdGEtY29sbGFwc2VkIjpoLmNvbGxhcHNlZCwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6RC52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZih4KT8ucm9vdCxtLmNsYXNzXX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLGEsbixpKT0+e2lmKCFhKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImxpc3QtbGVhZGluZyIpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KEUudmFsdWUsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OmBsaXN0LSR7bH1gfSxbKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uP2UudW5yZWYoYWUpOmUudW5yZWYoeGUpKSxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LCJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHxoLmNvbGxhcHNlZD97fTp7Li4uZS51bnJlZihJKSxtb2RlbFZhbHVlOmgubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6aC5kZWZhdWx0VmFsdWU/P2dldEFjY29yZGlvbkRlZmF1bHRWYWx1ZSh0LDAsbCl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJsaXN0IixjbGFzczpELnZhbHVlLmxpc3Qoe2NsYXNzOmUudW5yZWYoeCk/Lmxpc3R9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHQsKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihTKSx7a2V5OmBsaXN0LSR7bH0tJHthfWAsaXRlbTp0LGluZGV4OmEsImxpc3QtaW5kZXgiOmwsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOkQudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/Lml0ZW0sdC51aT8uaXRlbV19KX0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwibGlzdC1pbmRleCIsImNsYXNzIl0pKSksMTI4KSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSksInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmw8RS52YWx1ZS5sZW5ndGgtMT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpELnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6ZS51bnJlZih4KT8uc2VwYXJhdG9yfSl9LG51bGwsMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKSksMTI4KSksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsaXN0LXRyYWlsaW5nIiksImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoidmlld3BvcnRXcmFwcGVyIixjbGFzczpELnZhbHVlLnZpZXdwb3J0V3JhcHBlcih7Y2xhc3M6ZS51bnJlZih4KT8udmlld3BvcnRXcmFwcGVyfSl9LFtoLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihMZSkse2tleTowLCJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczplLnVucmVmKHgpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpELnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKHgpPy5hcnJvd30pfSxudWxsLDIpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQ2UpLHsiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOkQudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoeCk/LnZpZXdwb3J0fSl9LG51bGwsOCxbImNsYXNzIl0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtIKHQuJHNsb3RzLCJsaXN0LWxlYWRpbmciLHt9LG51bGwsYSxuLGkpLGEoIlx4M2MhLS1bLS1ceDNlIiksRyhFLnZhbHVlLCh0LGwpPT57YSgiXHgzYyEtLVstLVx4M2UiKSxYKGEsZS5jcmVhdGVWTm9kZShlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uP2UudW5yZWYoYWUpOmUudW5yZWYoeGUpKSxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LCJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHxoLmNvbGxhcHNlZD97fTp7Li4uZS51bnJlZihJKSxtb2RlbFZhbHVlOmgubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6aC5kZWZhdWx0VmFsdWU/P2dldEFjY29yZGlvbkRlZmF1bHRWYWx1ZSh0LDAsbCl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJsaXN0IixjbGFzczpELnZhbHVlLmxpc3Qoe2NsYXNzOmUudW5yZWYoeCk/Lmxpc3R9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxuLGksbyk9PntpZighbilyZXR1cm5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodCwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFMpLHtrZXk6YGxpc3QtJHtsfS0ke2F9YCxpdGVtOnQsaW5kZXg6YSwibGlzdC1pbmRleCI6bCwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6RC52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZih4KT8uaXRlbSx0LnVpPy5pdGVtXX0pfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJsaXN0LWluZGV4IiwiY2xhc3MiXSkpKSwxMjgpKV07bigiXHgzYyEtLVstLVx4M2UiKSxHKHQsKHQsYSk9PntuKFcoZS51bnJlZihTKSx7a2V5OmBsaXN0LSR7bH0tJHthfWAsaXRlbTp0LGluZGV4OmEsImxpc3QtaW5kZXgiOmwsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOkQudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/Lml0ZW0sdC51aT8uaXRlbV19KX0sbnVsbCxpLG8pKX0pLG4oIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9KSxuLGkpLCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsPEUudmFsdWUubGVuZ3RoLTE/YShgPGRpdiBkYXRhLXNsb3Q9InNlcGFyYXRvciIgY2xhc3M9IiR7aihELnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6ZS51bnJlZih4KT8uc2VwYXJhdG9yfSkpfSIke2l9PjwvZGl2PmApOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCJceDNjIS0tXS0tXHgzZSIpfSksYSgiXHgzYyEtLV0tLVx4M2UiKSxIKHQuJHNsb3RzLCJsaXN0LXRyYWlsaW5nIix7fSxudWxsLGEsbixpKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uPyhhKGA8ZGl2IGRhdGEtc2xvdD0idmlld3BvcnRXcmFwcGVyIiBjbGFzcz0iJHtqKEQudmFsdWUudmlld3BvcnRXcmFwcGVyKHtjbGFzczplLnVucmVmKHgpPy52aWV3cG9ydFdyYXBwZXJ9KSl9IiR7aX0+YCksaC5hcnJvdz9hKFcoZS51bnJlZihMZSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczplLnVucmVmKHgpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGwsYSxuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkQudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoeCk/LmFycm93fSl9LG51bGwsMildO2woYDxkaXYgZGF0YS1zbG90PSJhcnJvdyIgY2xhc3M9IiR7aihELnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKHgpPy5hcnJvd30pKX0iJHtufT48L2Rpdj5gKX0pLF86MX0sbixpKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoVyhlLnVucmVmKENlKSx7ImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpELnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKHgpPy52aWV3cG9ydH0pfSxudWxsLG4saSkpLGEoIjwvZGl2PiIpKTphKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LGEpKSxsKCJceDNjIS0tXS0tXHgzZSIpfX19KSxTZT1OZS5zZXR1cDtOZS5zZXR1cD0odCxsKT0+e2NvbnN0IGE9ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL05hdmlnYXRpb25NZW51LnZ1ZSIpLFNlP1NlKHQsbCk6dm9pZCAwfTtleHBvcnR7TmUgYXMgXyx3ZSBhcyBhfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzLm1hcAo=", "chunks/build/PageCard-Bw-W4qxs.mjs": "aW1wb3J0e3YgYXMgZSxhdSBhcyB0LGQgYXMgbyxlIGFzIHIsYXYgYXMgaSx0IGFzIGwsYXcgYXMgYSxiIGFzIHMsYWggYXMgbixQIGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGMsaiBhcyBnLGcgYXMgcCxxIGFzIHV9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBoPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCByb3VuZGVkLWxnIixzcG90bGlnaHQ6ImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1baW5oZXJpdF0gcG9pbnRlci1ldmVudHMtbm9uZSBiZy1kZWZhdWx0LzkwIixjb250YWluZXI6InJlbGF0aXZlIGZsZXggZmxleC1jb2wgZmxleC0xIGxnOmdyaWQgZ2FwLXgtOCBnYXAteS00IHAtNCBzbTpwLTYiLHdyYXBwZXI6ImZsZXggZmxleC1jb2wgZmxleC0xIGl0ZW1zLXN0YXJ0IixoZWFkZXI6Im1iLTQiLGJvZHk6ImZsZXgtMSIsZm9vdGVyOiJwdC00IG10LWF1dG8iLGxlYWRpbmc6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUgc2hyaW5rLTAgdGV4dC1wcmltYXJ5Iix0aXRsZToidGV4dC1iYXNlIHRleHQtcHJldHR5IGZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsZGVzY3JpcHRpb246InRleHQtWzE1cHhdIHRleHQtcHJldHR5In0sdmFyaWFudHM6e29yaWVudGF0aW9uOntob3Jpem9udGFsOntjb250YWluZXI6ImxnOmdyaWQtY29scy0yIGxnOml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntjb250YWluZXI6IiJ9fSxyZXZlcnNlOnt0cnVlOnt3cmFwcGVyOiJvcmRlci1sYXN0In19LHZhcmlhbnQ6e3NvbGlkOntyb290OiJiZy1pbnZlcnRlZCB0ZXh0LWludmVydGVkIix0aXRsZToidGV4dC1pbnZlcnRlZCIsZGVzY3JpcHRpb246InRleHQtZGltbWVkIn0sb3V0bGluZTp7cm9vdDoiYmctZGVmYXVsdCByaW5nIHJpbmctZGVmYXVsdCIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQifSxzb2Z0Ontyb290OiJiZy1lbGV2YXRlZC81MCIsZGVzY3JpcHRpb246InRleHQtdG9uZWQifSxzdWJ0bGU6e3Jvb3Q6ImJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1kZWZhdWx0IixkZXNjcmlwdGlvbjoidGV4dC10b25lZCJ9LGdob3N0OntkZXNjcmlwdGlvbjoidGV4dC1tdXRlZCJ9LG5ha2VkOntjb250YWluZXI6InAtMCBzbTpwLTAiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn19LHRvOnt0cnVlOntyb290OlsiaGFzLWZvY3VzLXZpc2libGU6cmluZy0yIGhhcy1mb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSIsInRyYW5zaXRpb24iXX19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fSxoaWdobGlnaHQ6e3RydWU6e3Jvb3Q6InJpbmctMiJ9fSxoaWdobGlnaHRDb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sc3BvdGxpZ2h0Ont0cnVlOntyb290OiJbLS1zcG90bGlnaHQtc2l6ZTo0MDBweF0gYmVmb3JlOmFic29sdXRlIGJlZm9yZTotaW5zZXQtcHggYmVmb3JlOnBvaW50ZXItZXZlbnRzLW5vbmUgYmVmb3JlOnJvdW5kZWQtW2luaGVyaXRdIGJlZm9yZTpiZy1bcmFkaWFsLWdyYWRpZW50KHZhcigtLXNwb3RsaWdodC1zaXplKV92YXIoLS1zcG90bGlnaHQtc2l6ZSlfYXRfY2FsYyh2YXIoLS1zcG90bGlnaHQteCwwcHgpKV9jYWxjKHZhcigtLXNwb3RsaWdodC15LDBweCkpLHZhcigtLXNwb3RsaWdodC1jb2xvciksdHJhbnNwYXJlbnRfNzAlKV0ifX0sc3BvdGxpZ2h0Q29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7dmFyaWFudDoic29saWQiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1pbnZlcnRlZC85MCJ9fSx7dmFyaWFudDoib3V0bGluZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkLzUwIn19LHt2YXJpYW50OiJzb2Z0Iix0bzohMCxjbGFzczp7cm9vdDoiaG92ZXI6YmctZWxldmF0ZWQifX0se3ZhcmlhbnQ6InN1YnRsZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkIn19LHt2YXJpYW50OiJzdWJ0bGUiLHRvOiEwLGhpZ2hsaWdodDohMSxjbGFzczp7cm9vdDoiaG92ZXI6cmluZy1hY2NlbnRlZCJ9fSx7dmFyaWFudDoiZ2hvc3QiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1lbGV2YXRlZC81MCJ9fSx7aGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1wcmltYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctc2Vjb25kYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOntyb290OiJyaW5nLXN1Y2Nlc3MifX0se2hpZ2hsaWdodENvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctaW5mbyJ9fSx7aGlnaGxpZ2h0Q29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy13YXJuaW5nIn19LHtoaWdobGlnaHRDb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1lcnJvciJ9fSx7aGlnaGxpZ2h0Q29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1pbnZlcnRlZCJ9fSx7c3BvdGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLXByaW1hcnkpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6InNlY29uZGFyeSIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KV0ifX0se3Nwb3RsaWdodENvbG9yOiJzdWNjZXNzIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKV0ifX0se3Nwb3RsaWdodENvbG9yOiJpbmZvIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1pbmZvKV0ifX0se3Nwb3RsaWdodENvbG9yOiJ3YXJuaW5nIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKV0ifX0se3Nwb3RsaWdodENvbG9yOiJlcnJvciIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktZXJyb3IpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6Im5ldXRyYWwiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKV0ifX1dLGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDoib3V0bGluZSIsaGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodENvbG9yOiJwcmltYXJ5In19LHY9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVUGFnZUNhcmQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0scmV2ZXJzZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Q29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3BvdGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNwb3RsaWdodENvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cCh2KXtjb25zdCBmPXYsbT1lLnVzZVNsb3RzKCkseT1lLnJlZigpLHg9dCgpLGI9bygpLEM9cigicGFnZUNhcmQiLGYpLHtlbGVtZW50WDokLGVsZW1lbnRZOmt9PWkoeSx7ZXZlbnRGaWx0ZXI6eC5ldmVudEZpbHRlcn0pLEI9ZS5jb21wdXRlZCgoKT0+Zi5zcG90bGlnaHQmJigwIT09JC52YWx1ZXx8MCE9PWsudmFsdWUpKTtlLndhdGNoKCgpPT5mLnNwb3RsaWdodCxlPT57ZT94LnJlc3VtZSgpOngucGF1c2UoKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHc9ZS5jb21wdXRlZCgoKT0+bCh7ZXh0ZW5kOmwoaCksLi4uYi51aT8ucGFnZUNhcmR8fHt9fSkoe29yaWVudGF0aW9uOmYub3JpZW50YXRpb24scmV2ZXJzZTpmLnJldmVyc2UsdmFyaWFudDpmLnZhcmlhbnQsdG86ISFmLnRvfHwhIWYub25DbGljayx0aXRsZTohIWYudGl0bGV8fCEhbS50aXRsZSxoaWdobGlnaHQ6Zi5oaWdobGlnaHQsaGlnaGxpZ2h0Q29sb3I6Zi5oaWdobGlnaHRDb2xvcixzcG90bGlnaHQ6Qi52YWx1ZSxzcG90bGlnaHRDb2xvcjpmLnNwb3RsaWdodENvbG9yfSkpLHE9ZS5jb21wdXRlZCgoKT0+KG0udGl0bGUmJmEobS50aXRsZSgpKXx8Zi50aXRsZXx8IkNhcmQgbGluayIpLnRyaW0oKSk7cmV0dXJuKHQsbyxyLGkpPT57byhjKGUudW5yZWYoZCksZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJjYXJkUmVmIixyZWY6eSxhczp2LmFzLCJkYXRhLW9yaWVudGF0aW9uIjp2Lm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczp3LnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKEMpPy5yb290LGYuY2xhc3NdfSksc3R5bGU6Qi52YWx1ZSYmeyItLXNwb3RsaWdodC14IjpgJHtlLnVucmVmKCQpfXB4YCwiLS1zcG90bGlnaHQteSI6YCR7ZS51bnJlZihrKX1weGB9LG9uQ2xpY2s6di5vbkNsaWNrfSxpKSx7ZGVmYXVsdDplLndpdGhDdHgoKG8scixpLGwpPT57aWYoIXIpcmV0dXJuW2Yuc3BvdGxpZ2h0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJzcG90bGlnaHQiLGNsYXNzOncudmFsdWUuc3BvdGxpZ2h0KHtjbGFzczplLnVucmVmKEMpPy5zcG90bGlnaHR9KX0sbnVsbCwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOncudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKEMpPy5jb250YWluZXJ9KX0sW20uaGVhZGVyfHx2Lmljb258fG0ubGVhZGluZ3x8bS5ib2R5fHx2LnRpdGxlfHxtLnRpdGxlfHx2LmRlc2NyaXB0aW9ufHxtLmRlc2NyaXB0aW9ufHxtLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6dy52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSl9LFttLmhlYWRlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp3LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihDKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImhlYWRlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHYuaWNvbnx8bS5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJsZWFkaW5nIixjbGFzczp3LnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse3VpOncudmFsdWV9LCgpPT5bdi5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTp2Lmljb24sImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp3LnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG0uYm9keXx8di50aXRsZXx8bS50aXRsZXx8di5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6dy52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKEMpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImJvZHkiLHt9LCgpPT5bdi50aXRsZXx8bS50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOncudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYoQyk/LnRpdGxlfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHYudGl0bGUpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOncudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoQyk/LmRlc2NyaXB0aW9ufSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHYuZGVzY3JpcHRpb24pLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxtLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MywiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczp3LnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImZvb3RlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSwyKSx2LnRvPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sobixlLm1lcmdlUHJvcHMoe2tleToxLCJhcmlhLWxhYmVsIjpxLnZhbHVlfSx7dG86di50byx0YXJnZXQ6di50YXJnZXQsLi4udC4kYXR0cnN9LHtjbGFzczoiZm9jdXM6b3V0bGluZS1ub25lIHBlZXIiLHJhdzoiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoiYWJzb2x1dGUgaW5zZXQtMCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KV0pLF86MX0sMTYsWyJhcmlhLWxhYmVsIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2Yuc3BvdGxpZ2h0P3IoYDxkaXYgZGF0YS1zbG90PSJzcG90bGlnaHQiIGNsYXNzPSIke2cody52YWx1ZS5zcG90bGlnaHQoe2NsYXNzOmUudW5yZWYoQyk/LnNwb3RsaWdodH0pKX0iJHtsfT48L2Rpdj5gKTpyKCJceDNjIS0tLS1ceDNlIikscihgPGRpdiBkYXRhLXNsb3Q9ImNvbnRhaW5lciIgY2xhc3M9IiR7Zyh3LnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZihDKT8uY29udGFpbmVyfSkpfSIke2x9PmApLG0uaGVhZGVyfHx2Lmljb258fG0ubGVhZGluZ3x8bS5ib2R5fHx2LnRpdGxlfHxtLnRpdGxlfHx2LmRlc2NyaXB0aW9ufHxtLmRlc2NyaXB0aW9ufHxtLmZvb3Rlcj8ocihgPGRpdiBkYXRhLXNsb3Q9IndyYXBwZXIiIGNsYXNzPSIke2cody52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSkpfSIke2x9PmApLG0uaGVhZGVyPyhyKGA8ZGl2IGRhdGEtc2xvdD0iaGVhZGVyIiBjbGFzcz0iJHtnKHcudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKEMpPy5oZWFkZXJ9KSl9IiR7bH0+YCkscCh0LiRzbG90cywiaGVhZGVyIix7fSxudWxsLHIsaSxsKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHYuaWNvbnx8bS5sZWFkaW5nPyhyKGA8ZGl2IGRhdGEtc2xvdD0ibGVhZGluZyIgY2xhc3M9IiR7Zyh3LnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmd9KSl9IiR7bH0+YCkscCh0LiRzbG90cywibGVhZGluZyIse3VpOncudmFsdWV9LCgpPT57di5pY29uP3IoYyhzLHtuYW1lOnYuaWNvbiwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOncudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmdJY29ufSl9LG51bGwsaSxsKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLGksbCkscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxtLmJvZHl8fHYudGl0bGV8fG0udGl0bGV8fHYuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KHIoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtnKHcudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZihDKT8uYm9keX0pKX0iJHtsfT5gKSxwKHQuJHNsb3RzLCJib2R5Iix7fSwoKT0+e3YudGl0bGV8fG0udGl0bGU/KHIoYDxkaXYgZGF0YS1zbG90PSJ0aXRsZSIgY2xhc3M9IiR7Zyh3LnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKEMpPy50aXRsZX0pKX0iJHtsfT5gKSxwKHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntyKGAke3Uodi50aXRsZSl9YCl9LHIsaSxsKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHYuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KHIoYDxkaXYgZGF0YS1zbG90PSJkZXNjcmlwdGlvbiIgY2xhc3M9IiR7Zyh3LnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pKX0iJHtsfT5gKSxwKHQuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntyKGAke3Uodi5kZXNjcmlwdGlvbil9YCl9LHIsaSxsKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLGksbCkscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxtLmZvb3Rlcj8ocihgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7Zyh3LnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSkpfSIke2x9PmApLHAodC4kc2xvdHMsImZvb3RlciIse30sbnVsbCxyLGksbCkscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHAodC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwscixpLGwpLHIoIjwvZGl2PiIpLHYudG8/cihjKG4sZS5tZXJnZVByb3BzKHsiYXJpYS1sYWJlbCI6cS52YWx1ZX0se3RvOnYudG8sdGFyZ2V0OnYudGFyZ2V0LC4uLnQuJGF0dHJzfSx7Y2xhc3M6ImZvY3VzOm91dGxpbmUtbm9uZSBwZWVyIixyYXc6IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbyxyLGkpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoiYWJzb2x1dGUgaW5zZXQtMCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KV07byhgPHNwYW4gY2xhc3M9ImFic29sdXRlIGluc2V0LTAiIGFyaWEtaGlkZGVuPSJ0cnVlIiR7aX0+PC9zcGFuPmApfSksXzoxfSxpLGwpKTpyKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LHIpKX19fSksZj12LnNldHVwO3Yuc2V0dXA9KHQsbyk9Pntjb25zdCByPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9QYWdlQ2FyZC52dWUiKSxmP2YodCxvKTp2b2lkIDB9O2V4cG9ydHt2IGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1QYWdlQ2FyZC1Cdy1XNHF4cy5tanMubWFwCg==", "chunks/build/Pagination-CzrEiPJd.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBhLGUgYXMgbCxFIGFzIG8sRiBhcyByLHQgYXMgcyxfIGFzIGksTSBhcyBuLFAgYXMgdSxTIGFzIGMsbSBhcyBkfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7ZiBhcyBwLGcgYXMgdix0IGFzIGZ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjt2YXIgZz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQYWdpbmF0aW9uRWxsaXBzaXMiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuIG4oKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyhhLHsiZGF0YS10eXBlIjoiZWxsaXBzaXMifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2xbMF18fChsWzBdPWUuY3JlYXRlVGV4dFZOb2RlKCLigKYiKSldKV0pLF86M30sMTYpKX19KTtjb25zdFttLGhdPWQoIlBhZ2luYXRpb25Sb290Iik7dmFyIEM9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvblJvb3QiLHByb3BzOntwYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFBhZ2U6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MX0saXRlbXNQZXJQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMH0sdG90YWw6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sc2libGluZ0NvdW50Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNob3dFZGdlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuYXYifX0sZW1pdHM6WyJ1cGRhdGU6cGFnZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxvPWEse3NpYmxpbmdDb3VudDpyLGRpc2FibGVkOnMsc2hvd0VkZ2VzOml9PWUudG9SZWZzKGwpO24oKTtjb25zdCBkPWMobCwicGFnZSIsbyx7ZGVmYXVsdFZhbHVlOmwuZGVmYXVsdFBhZ2UscGFzc2l2ZTp2b2lkIDA9PT1sLnBhZ2V9KSxwPWUuY29tcHV0ZWQoKCk9Pk1hdGgubWF4KDEsTWF0aC5jZWlsKGwudG90YWwvKGwuaXRlbXNQZXJQYWdlfHwxKSkpKTtyZXR1cm4gaCh7cGFnZTpkLG9uUGFnZUNoYW5nZShlKXtkLnZhbHVlPWV9LHBhZ2VDb3VudDpwLHNpYmxpbmdDb3VudDpyLGRpc2FibGVkOnMsc2hvd0VkZ2VzOml9KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLHthczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtwYWdlOmUudW5yZWYoZCkscGFnZUNvdW50OnAudmFsdWV9KV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiXSkpfX0pLGI9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvbkZpcnN0Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1tKCk7bigpO2NvbnN0IG89ZS5jb21wdXRlZCgoKT0+MT09PWwucGFnZS52YWx1ZXx8bC5kaXNhYmxlZC52YWx1ZSk7cmV0dXJuKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih1KSxlLm1lcmdlUHJvcHMoYSx7ImFyaWEtbGFiZWwiOiJGaXJzdCBQYWdlIix0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDAsZGlzYWJsZWQ6by52YWx1ZSxvbkNsaWNrOnJbMF18fChyWzBdPXQ9PiFvLnZhbHVlJiZlLnVucmVmKGwpLm9uUGFnZUNoYW5nZSgxKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bclsxXXx8KHJbMV09ZS5jcmVhdGVUZXh0Vk5vZGUoIkZpcnN0IHBhZ2UiKSldKV0pLF86M30sMTYsWyJ0eXBlIiwiZGlzYWJsZWQiXSkpfX0pLHg9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvbkxhc3QiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHQpe2NvbnN0IGE9dCxsPW0oKTtuKCk7Y29uc3Qgbz1lLmNvbXB1dGVkKCgpPT5sLnBhZ2UudmFsdWU9PT1sLnBhZ2VDb3VudC52YWx1ZXx8bC5kaXNhYmxlZC52YWx1ZSk7cmV0dXJuKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih1KSxlLm1lcmdlUHJvcHMoYSx7ImFyaWEtbGFiZWwiOiJMYXN0IFBhZ2UiLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCxkaXNhYmxlZDpvLnZhbHVlLG9uQ2xpY2s6clswXXx8KHJbMF09dD0+IW8udmFsdWUmJmUudW5yZWYobCkub25QYWdlQ2hhbmdlKGUudW5yZWYobCkucGFnZUNvdW50LnZhbHVlKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bclsxXXx8KHJbMV09ZS5jcmVhdGVUZXh0Vk5vZGUoIkxhc3QgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSk7ZnVuY3Rpb24gcmFuZ2UoZSx0KXtjb25zdCBhPXQtZSsxO3JldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6YX0sKHQsYSk9PmErZSl9Y29uc3QgeT0iZWxsaXBzaXMiO3ZhciB6PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBhZ2luYXRpb25MaXN0Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10O24oKTtjb25zdCBsPW0oKSxvPWUuY29tcHV0ZWQoKCk9PmZ1bmN0aW9uKGUsdCxhLGwpe2NvbnN0IG89dCxyPU1hdGgubWF4KGUtYSwxKSxzPU1hdGgubWluKGUrYSxvKTtpZihsKXtjb25zdCBlPU1hdGgubWluKDIqYSs1LHQpLTIsbD1yPjMmJk1hdGguYWJzKG8tZS0xKzEpPjImJk1hdGguYWJzKHItMSk+MixpPXM8by0yJiZNYXRoLmFicyhvLWUpPjImJk1hdGguYWJzKG8tcyk+MjtpZighbCYmaSlyZXR1cm5bLi4ucmFuZ2UoMSxlKSx5LG9dO2lmKGwmJiFpKXtjb25zdCB0PXJhbmdlKG8tZSsxLG8pO3JldHVyblsxLHksLi4udF19aWYobCYmaSl7Y29uc3QgZT1yYW5nZShyLHMpO3JldHVyblsxLHksLi4uZSx5LG9dfXJldHVybiByYW5nZSgxLG8pfXtjb25zdCBsPTIqYSsxO3JldHVybiB0PGw/cmFuZ2UoMSxvKTplPD1hKzE/cmFuZ2UoMSxsKTp0LWU8PWE/cmFuZ2UodC1sKzEsbyk6cmFuZ2UocixzKX19KGwucGFnZS52YWx1ZSxsLnBhZ2VDb3VudC52YWx1ZSxsLnNpYmxpbmdDb3VudC52YWx1ZSxsLnNob3dFZGdlcy52YWx1ZSkubWFwKGU9PiJudW1iZXIiPT10eXBlb2YgZT97dHlwZToicGFnZSIsdmFsdWU6ZX06e3R5cGU6ImVsbGlwc2lzIn0pKTtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse2l0ZW1zOm8udmFsdWV9KV0pLF86M30sMTYpKX19KSxrPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBhZ2luYXRpb25MaXN0SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQ7bigpO2NvbnN0IGw9bSgpLG89ZS5jb21wdXRlZCgoKT0+bC5wYWdlLnZhbHVlPT09YS52YWx1ZSkscj1lLmNvbXB1dGVkKCgpPT5sLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4odCxzKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyhhLHsiZGF0YS10eXBlIjoicGFnZSIsImFyaWEtbGFiZWwiOmBQYWdlICR7dC52YWx1ZX1gLCJhcmlhLWN1cnJlbnQiOm8udmFsdWU/InBhZ2UiOnZvaWQgMCwiZGF0YS1zZWxlY3RlZCI6by52YWx1ZT8idHJ1ZSI6dm9pZCAwLGRpc2FibGVkOnIudmFsdWUsdHlwZToiYnV0dG9uIj09PXQuYXM/ImJ1dHRvbiI6dm9pZCAwLG9uQ2xpY2s6c1swXXx8KHNbMF09YT0+IXIudmFsdWUmJmUudW5yZWYobCkub25QYWdlQ2hhbmdlKHQudmFsdWUpKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnZhbHVlKSwxKV0pXSksXzozfSwxNixbImFyaWEtbGFiZWwiLCJhcmlhLWN1cnJlbnQiLCJkYXRhLXNlbGVjdGVkIiwiZGlzYWJsZWQiLCJ0eXBlIl0pKX19KSxCPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBhZ2luYXRpb25OZXh0Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQ7bigpO2NvbnN0IGw9bSgpLG89ZS5jb21wdXRlZCgoKT0+bC5wYWdlLnZhbHVlPT09bC5wYWdlQ291bnQudmFsdWV8fGwuZGlzYWJsZWQudmFsdWUpO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodSksZS5tZXJnZVByb3BzKGEseyJhcmlhLWxhYmVsIjoiTmV4dCBQYWdlIix0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDAsZGlzYWJsZWQ6by52YWx1ZSxvbkNsaWNrOnJbMF18fChyWzBdPXQ9PiFvLnZhbHVlJiZlLnVucmVmKGwpLm9uUGFnZUNoYW5nZShlLnVucmVmKGwpLnBhZ2UudmFsdWUrMSkpfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3JbMV18fChyWzFdPWUuY3JlYXRlVGV4dFZOb2RlKCJOZXh0IHBhZ2UiKSldKV0pLF86M30sMTYsWyJ0eXBlIiwiZGlzYWJsZWQiXSkpfX0pLF89ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvblByZXYiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHQpe2NvbnN0IGE9dDtuKCk7Y29uc3QgbD1tKCksbz1lLmNvbXB1dGVkKCgpPT4xPT09bC5wYWdlLnZhbHVlfHxsLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4odCxyKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyhhLHsiYXJpYS1sYWJlbCI6IlByZXZpb3VzIFBhZ2UiLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCxkaXNhYmxlZDpvLnZhbHVlLG9uQ2xpY2s6clswXXx8KHJbMF09dD0+IW8udmFsdWUmJmUudW5yZWYobCkub25QYWdlQ2hhbmdlKGUudW5yZWYobCkucGFnZS52YWx1ZS0xKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bclsxXXx8KHJbMV09ZS5jcmVhdGVUZXh0Vk5vZGUoIlByZXYgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSk7Y29uc3QgUD17c2xvdHM6e3Jvb3Q6IiIsbGlzdDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEiLGVsbGlwc2lzOiJwb2ludGVyLWV2ZW50cy1ub25lIixsYWJlbDoibWluLXctNSB0ZXh0LWNlbnRlciIsZmlyc3Q6IiIscHJldjoiIixpdGVtOiIiLG5leHQ6IiIsbGFzdDoiIn19LHE9e19fbmFtZToiVVBhZ2luYXRpb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxmaXJzdEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scHJldkljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbmV4dEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFzdEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZWxsaXBzaXNJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJvdXRsaW5lIn0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJwcmltYXJ5In0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNvbGlkIn0sc2hvd0NvbnRyb2xzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0bzp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWZhdWx0UGFnZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGl0ZW1zUGVyUGFnZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0scGFnZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNob3dFZGdlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHNpYmxpbmdDb3VudDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoyfSx0b3RhbDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfX0sZW1pdHM6WyJ1cGRhdGU6cGFnZSJdLHNldHVwKG4se2VtaXQ6dX0pe2NvbnN0IGM9bixkPXUsbT1lLnVzZVNsb3RzKCkse2RpcjpofT10KCkseT1hKCkscT1sKCJwYWdpbmF0aW9uIixjKSx3PW8ocihjLCJhcyIsImRlZmF1bHRQYWdlIiwiZGlzYWJsZWQiLCJpdGVtc1BlclBhZ2UiLCJwYWdlIiwic2hvd0VkZ2VzIiwic2libGluZ0NvdW50IiwidG90YWwiKSxkKSxOPWUuY29tcHV0ZWQoKCk9PmMuZmlyc3RJY29ufHwoInJ0bCI9PT1oLnZhbHVlP3kudWkuaWNvbnMuY2hldnJvbkRvdWJsZVJpZ2h0OnkudWkuaWNvbnMuY2hldnJvbkRvdWJsZUxlZnQpKSxWPWUuY29tcHV0ZWQoKCk9PmMucHJldkljb258fCgicnRsIj09PWgudmFsdWU/eS51aS5pY29ucy5jaGV2cm9uUmlnaHQ6eS51aS5pY29ucy5jaGV2cm9uTGVmdCkpLFM9ZS5jb21wdXRlZCgoKT0+Yy5uZXh0SWNvbnx8KCJydGwiPT09aC52YWx1ZT95LnVpLmljb25zLmNoZXZyb25MZWZ0OnkudWkuaWNvbnMuY2hldnJvblJpZ2h0KSksJD1lLmNvbXB1dGVkKCgpPT5jLmxhc3RJY29ufHwoInJ0bCI9PT1oLnZhbHVlP3kudWkuaWNvbnMuY2hldnJvbkRvdWJsZUxlZnQ6eS51aS5pY29ucy5jaGV2cm9uRG91YmxlUmlnaHQpKSxJPWUuY29tcHV0ZWQoKCk9PnMoe2V4dGVuZDpzKFApLC4uLnkudWk/LnBhZ2luYXRpb258fHt9fSkoKSk7cmV0dXJuKHQsYSxsLG8pPT57YShwKGUudW5yZWYoQyksZS5tZXJnZVByb3BzKGUudW5yZWYodykseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczpJLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHEpPy5yb290LGMuY2xhc3NdfSl9LG8pLHtkZWZhdWx0OmUud2l0aEN0eCgoe3BhZ2U6YSxwYWdlQ291bnQ6bH0sbyxyLHMpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih6KSx7ImRhdGEtc2xvdCI6Imxpc3QiLGNsYXNzOkkudmFsdWUubGlzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGlzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtczpvfSk9PltuLnNob3dDb250cm9sc3x8bS5maXJzdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYikse2tleTowLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6ImZpcnN0IixjbGFzczpJLnZhbHVlLmZpcnN0KHtjbGFzczplLnVucmVmKHEpPy5maXJzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImZpcnN0Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOk4udmFsdWUsdG86bi50bz8uKDEpfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uc2hvd0NvbnRyb2xzfHxtLnByZXY/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF8pLHtrZXk6MSwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJwcmV2IixjbGFzczpJLnZhbHVlLnByZXYoe2NsYXNzOmUudW5yZWYocSk/LnByZXZ9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJwcmV2Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOlYudmFsdWUsdG86YT4xP24udG8/LihhLTEpOnZvaWQgMH0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChvLChvLHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTpyfSxbInBhZ2UiPT09by50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrKSx7a2V5OjAsImFzLWNoaWxkIjoiIix2YWx1ZTpvLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpJLnZhbHVlLml0ZW0oe2NsYXNzOmUudW5yZWYocSk/Lml0ZW19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LHtpdGVtOm8saW5kZXg6cixwYWdlOmEscGFnZUNvdW50Omx9KSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6YT09PW8udmFsdWU/bi5hY3RpdmVDb2xvcjpuLmNvbG9yLHZhcmlhbnQ6YT09PW8udmFsdWU/bi5hY3RpdmVWYXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxsYWJlbDpTdHJpbmcoby52YWx1ZSksdWk6e2xhYmVsOkkudmFsdWUubGFiZWwoKX0sdG86bi50bz8uKG8udmFsdWUpLHNxdWFyZToiIn0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImxhYmVsIiwidWkiLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsidmFsdWUiLCJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGcpLHtrZXk6MSwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJlbGxpcHNpcyIsY2xhc3M6SS52YWx1ZS5lbGxpcHNpcyh7Y2xhc3M6ZS51bnJlZihxKT8uZWxsaXBzaXN9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbGxpcHNpcyIse3VpOkkudmFsdWV9LCgpPT5bZS5jcmVhdGVWTm9kZShpLHthczoiZGl2Iixjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246bi5lbGxpcHNpc0ljb258fGUudW5yZWYoeSkudWkuaWNvbnMuZWxsaXBzaXN9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIl0pXSldKSxfOjN9LDgsWyJjbGFzcyJdKSldLDY0KSkpLDEyOCkpLG4uc2hvd0NvbnRyb2xzfHxtLm5leHQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEIpLHtrZXk6MiwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJuZXh0IixjbGFzczpJLnZhbHVlLm5leHQoe2NsYXNzOmUudW5yZWYocSk/Lm5leHR9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJuZXh0Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOlMudmFsdWUsdG86YTxsP24udG8/LihhKzEpOnZvaWQgMH0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLnNob3dDb250cm9sc3x8bS5sYXN0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih4KSx7a2V5OjMsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoibGFzdCIsY2xhc3M6SS52YWx1ZS5sYXN0KHtjbGFzczplLnVucmVmKHEpPy5sYXN0fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywibGFzdCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjokLnZhbHVlLHRvOm4udG8/LihsKX0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXTtvKHAoZS51bnJlZih6KSx7ImRhdGEtc2xvdCI6Imxpc3QiLGNsYXNzOkkudmFsdWUubGlzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGlzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtczpvfSxyLHMsdSk9PntpZighcilyZXR1cm5bbi5zaG93Q29udHJvbHN8fG0uZmlyc3Q/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGIpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJmaXJzdCIsY2xhc3M6SS52YWx1ZS5maXJzdCh7Y2xhc3M6ZS51bnJlZihxKT8uZmlyc3R9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJmaXJzdCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpOLnZhbHVlLHRvOm4udG8/LigxKX0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLnNob3dDb250cm9sc3x8bS5wcmV2PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfKSx7a2V5OjEsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoicHJldiIsY2xhc3M6SS52YWx1ZS5wcmV2KHtjbGFzczplLnVucmVmKHEpPy5wcmV2fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywicHJldiIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpWLnZhbHVlLHRvOmE+MT9uLnRvPy4oYS0xKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobywobyxyKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6cn0sWyJwYWdlIj09PW8udHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoaykse2tleTowLCJhcy1jaGlsZCI6IiIsdmFsdWU6by52YWx1ZSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6SS52YWx1ZS5pdGVtKHtjbGFzczplLnVucmVmKHEpPy5pdGVtfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSx7aXRlbTpvLGluZGV4OnIscGFnZTphLHBhZ2VDb3VudDpsfSksKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOmE9PT1vLnZhbHVlP24uYWN0aXZlQ29sb3I6bi5jb2xvcix2YXJpYW50OmE9PT1vLnZhbHVlP24uYWN0aXZlVmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsbGFiZWw6U3RyaW5nKG8udmFsdWUpLHVpOntsYWJlbDpJLnZhbHVlLmxhYmVsKCl9LHRvOm4udG8/LihvLnZhbHVlKSxzcXVhcmU6IiJ9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJsYWJlbCIsInVpIiwidG8iXSldKV0pLF86Mn0sMTAzMixbInZhbHVlIiwiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihnKSx7a2V5OjEsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoiZWxsaXBzaXMiLGNsYXNzOkkudmFsdWUuZWxsaXBzaXMoe2NsYXNzOmUudW5yZWYocSk/LmVsbGlwc2lzfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZWxsaXBzaXMiLHt1aTpJLnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7YXM6ImRpdiIsY29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOm4uZWxsaXBzaXNJY29ufHxlLnVucmVmKHkpLnVpLmljb25zLmVsbGlwc2lzfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiJdKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpXSw2NCkpKSwxMjgpKSxuLnNob3dDb250cm9sc3x8bS5uZXh0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCKSx7a2V5OjIsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoibmV4dCIsY2xhc3M6SS52YWx1ZS5uZXh0KHtjbGFzczplLnVucmVmKHEpPy5uZXh0fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywibmV4dCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpTLnZhbHVlLHRvOmE8bD9uLnRvPy4oYSsxKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5zaG93Q29udHJvbHN8fG0ubGFzdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoeCkse2tleTozLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6Imxhc3QiLGNsYXNzOkkudmFsdWUubGFzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGFzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImxhc3QiLHt9LCgpPT5bZS5jcmVhdGVWTm9kZShpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246JC52YWx1ZSx0bzpuLnRvPy4obCl9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO24uc2hvd0NvbnRyb2xzfHxtLmZpcnN0P3IocChlLnVucmVmKGIpLHsiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJmaXJzdCIsY2xhc3M6SS52YWx1ZS5maXJzdCh7Y2xhc3M6ZS51bnJlZihxKT8uZmlyc3R9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwsbyxyKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImZpcnN0Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOk4udmFsdWUsdG86bi50bz8uKDEpfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldO3YodC4kc2xvdHMsImZpcnN0Iix7fSwoKT0+e2wocChpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246Ti52YWx1ZSx0bzpuLnRvPy4oMSl9LG51bGwsbyxyKSl9LGwsbyxyKX0pLF86Mn0scyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpLG4uc2hvd0NvbnRyb2xzfHxtLnByZXY/cihwKGUudW5yZWYoXykseyJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6InByZXYiLGNsYXNzOkkudmFsdWUucHJldih7Y2xhc3M6ZS51bnJlZihxKT8ucHJldn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGwsbyxyLHMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywicHJldiIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpWLnZhbHVlLHRvOmE+MT9uLnRvPy4oYS0xKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV07dih0LiRzbG90cywicHJldiIse30sKCk9PntvKHAoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOlYudmFsdWUsdG86YT4xP24udG8/LihhLTEpOnZvaWQgMH0sbnVsbCxyLHMpKX0sbyxyLHMpfSksXzoyfSxzLHUpKTpyKCJceDNjIS0tLS1ceDNlIikscigiXHgzYyEtLVstLVx4M2UiKSxmKG8sKG8sYyk9PntyKCJceDNjIS0tWy0tXHgzZSIpLCJwYWdlIj09PW8udHlwZT9yKHAoZS51bnJlZihrKSx7ImFzLWNoaWxkIjoiIix2YWx1ZTpvLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpJLnZhbHVlLml0ZW0oe2NsYXNzOmUudW5yZWYocSk/Lml0ZW19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChyLHMsdSxkKT0+e2lmKCFzKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0iLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0se2l0ZW06byxpbmRleDpjLHBhZ2U6YSxwYWdlQ291bnQ6bH0pLCgpPT5bZS5jcmVhdGVWTm9kZShpLHtjb2xvcjphPT09by52YWx1ZT9uLmFjdGl2ZUNvbG9yOm4uY29sb3IsdmFyaWFudDphPT09by52YWx1ZT9uLmFjdGl2ZVZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGxhYmVsOlN0cmluZyhvLnZhbHVlKSx1aTp7bGFiZWw6SS52YWx1ZS5sYWJlbCgpfSx0bzpuLnRvPy4oby52YWx1ZSksc3F1YXJlOiIifSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwibGFiZWwiLCJ1aSIsInRvIl0pXSldO3YodC4kc2xvdHMsIml0ZW0iLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0se2l0ZW06byxpbmRleDpjLHBhZ2U6YSxwYWdlQ291bnQ6bH0pLCgpPT57cyhwKGkse2NvbG9yOmE9PT1vLnZhbHVlP24uYWN0aXZlQ29sb3I6bi5jb2xvcix2YXJpYW50OmE9PT1vLnZhbHVlP24uYWN0aXZlVmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsbGFiZWw6U3RyaW5nKG8udmFsdWUpLHVpOntsYWJlbDpJLnZhbHVlLmxhYmVsKCl9LHRvOm4udG8/LihvLnZhbHVlKSxzcXVhcmU6IiJ9LG51bGwsdSxkKSl9LHMsdSxkKX0pLF86Mn0scyx1KSk6cihwKGUudW5yZWYoZykseyJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6ImVsbGlwc2lzIixjbGFzczpJLnZhbHVlLmVsbGlwc2lzKHtjbGFzczplLnVucmVmKHEpPy5lbGxpcHNpc30pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbCxvLHIpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZWxsaXBzaXMiLHt1aTpJLnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7YXM6ImRpdiIsY29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOm4uZWxsaXBzaXNJY29ufHxlLnVucmVmKHkpLnVpLmljb25zLmVsbGlwc2lzfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiJdKV0pXTt2KHQuJHNsb3RzLCJlbGxpcHNpcyIse3VpOkkudmFsdWV9LCgpPT57bChwKGkse2FzOiJkaXYiLGNvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpuLmVsbGlwc2lzSWNvbnx8ZS51bnJlZih5KS51aS5pY29ucy5lbGxpcHNpc30sbnVsbCxvLHIpKX0sbCxvLHIpfSksXzoyfSxzLHUpKSxyKCJceDNjIS0tXS0tXHgzZSIpfSkscigiXHgzYyEtLV0tLVx4M2UiKSxuLnNob3dDb250cm9sc3x8bS5uZXh0P3IocChlLnVucmVmKEIpLHsiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJuZXh0IixjbGFzczpJLnZhbHVlLm5leHQoe2NsYXNzOmUudW5yZWYocSk/Lm5leHR9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLHIscyx1KT0+e2lmKCFyKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsIm5leHQiLHt9LCgpPT5bZS5jcmVhdGVWTm9kZShpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246Uy52YWx1ZSx0bzphPGw/bi50bz8uKGErMSk6dm9pZCAwfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldO3YodC4kc2xvdHMsIm5leHQiLHt9LCgpPT57cihwKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpTLnZhbHVlLHRvOmE8bD9uLnRvPy4oYSsxKTp2b2lkIDB9LG51bGwscyx1KSl9LHIscyx1KX0pLF86Mn0scyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpLG4uc2hvd0NvbnRyb2xzfHxtLmxhc3Q/cihwKGUudW5yZWYoeCkseyJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6Imxhc3QiLGNsYXNzOkkudmFsdWUubGFzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGFzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbyxyLHMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGFzdCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjokLnZhbHVlLHRvOm4udG8/LihsKX0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXTt2KHQuJHNsb3RzLCJsYXN0Iix7fSwoKT0+e28ocChpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246JC52YWx1ZSx0bzpuLnRvPy4obCl9LG51bGwscixzKSl9LG8scixzKX0pLF86Mn0scyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxyLHMpKX0pLF86M30sbCkpfX19LHc9cS5zZXR1cDtxLnNldHVwPSh0LGEpPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvUGFnaW5hdGlvbi52dWUiKSx3P3codCxhKTp2b2lkIDB9O2V4cG9ydHtxIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1QYWdpbmF0aW9uLUN6ckVpUEpkLm1qcy5tYXAK", "chunks/build/PopperArrow-BEyWUJiQ.mjs": "aW1wb3J0e3YgYXMgZSxNIGFzIHQsUCBhcyBuLGExIGFzIG8sbSBhcyByLGEyIGFzIGksWCBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VGb2N1c0d1YXJkcygpe2Uud2F0Y2hFZmZlY3QoZT0+e30pfWZ1bmN0aW9uIHVzZVR5cGVhaGVhZChlKXtjb25zdCB0PW8oIiIsMWUzKTtyZXR1cm57c2VhcmNoOnQsaGFuZGxlVHlwZWFoZWFkU2VhcmNoOihlLG4pPT57dC52YWx1ZT10LnZhbHVlK2U7e2NvbnN0IGU9bCgpLG89bi5tYXAoZT0+KHsuLi5lLHRleHRWYWx1ZTplLnZhbHVlPy50ZXh0VmFsdWU/P2UucmVmLnRleHRDb250ZW50Py50cmltKCk/PyIifSkpLHI9by5maW5kKHQ9PnQucmVmPT09ZSksaT1nZXROZXh0TWF0Y2goby5tYXAoZT0+ZS50ZXh0VmFsdWUpLHQudmFsdWUscj8udGV4dFZhbHVlKSxhPW8uZmluZChlPT5lLnRleHRWYWx1ZT09PWkpO3JldHVybiBhJiZhLnJlZi5mb2N1cygpLGE/LnJlZn19LHJlc2V0VHlwZWFoZWFkOigpPT57dC52YWx1ZT0iIn19fWZ1bmN0aW9uIGdldE5leHRNYXRjaChlLHQsbil7Y29uc3Qgbz10Lmxlbmd0aD4xJiZBcnJheS5mcm9tKHQpLmV2ZXJ5KGU9PmU9PT10WzBdKT90WzBdOnQscj1uP2UuaW5kZXhPZihuKTotMTtsZXQgaT0obD1lLGE9TWF0aC5tYXgociwwKSxsLm1hcCgoZSx0KT0+bFsoYSt0KSVsLmxlbmd0aF0pKTt2YXIgbCxhOzE9PT1vLmxlbmd0aCYmKGk9aS5maWx0ZXIoZT0+ZSE9PW4pKTtjb25zdCBzPWkuZmluZChlPT5lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChvLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gcyE9PW4/czp2b2lkIDB9Y29uc3RbYSxzXT1yKCJQb3BwZXJSb290Iik7dmFyIGM9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlBvcHBlclJvb3QiLHNldHVwKHQpe2NvbnN0IG49ZS5yZWYoKTtyZXR1cm4gcyh7YW5jaG9yOm4sb25BbmNob3JDaGFuZ2U6ZT0+bi52YWx1ZT1lfSksKHQsbik9PmUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpfX0pLHU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wcGVyQW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG8pe2NvbnN0IHI9byx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50Omx9PXQoKSxzPWEoKTtyZXR1cm4gZS53YXRjaFBvc3RFZmZlY3QoKCk9PntzLm9uQW5jaG9yQ2hhbmdlKHIucmVmZXJlbmNlPz9sLnZhbHVlKX0pLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobikse3JlZjplLnVucmVmKGkpLGFzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGR9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCJdKSl9fSk7Y29uc3QgZD17a2V5OjAsZDoiTTAgMEw2IDZMMTIgMCJ9LGY9e2tleToxLGQ6Ik0wIDBMNC41ODU3OSA0LjU4NTc5QzUuMzY2ODMgNS4zNjY4MyA2LjYzMzE2IDUuMzY2ODQgNy40MTQyMSA0LjU4NTc5TDEyIDAifTt2YXIgcD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKG8pe2NvbnN0IHI9bztyZXR1cm4gdCgpLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobiksZS5tZXJnZVByb3BzKHIse3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LHZpZXdCb3g6dC5hc0NoaWxkP3ZvaWQgMDoiMCAwIDEyIDYiLHByZXNlcnZlQXNwZWN0UmF0aW86dC5hc0NoaWxkP3ZvaWQgMDoibm9uZSJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bdC5yb3VuZGVkPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJwYXRoIixmKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soInBhdGgiLGQpKV0pXSksXzozfSwxNixbIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iXSkpfX0pO2Z1bmN0aW9uIGlzTm90TnVsbChlKXtyZXR1cm4gbnVsbCE9PWV9ZnVuY3Rpb24gdHJhbnNmb3JtT3JpZ2luKGUpe3JldHVybntuYW1lOiJ0cmFuc2Zvcm1PcmlnaW4iLG9wdGlvbnM6ZSxmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixyZWN0czpvLG1pZGRsZXdhcmVEYXRhOnJ9PXQsaT0wIT09ci5hcnJvdz8uY2VudGVyT2Zmc2V0LGw9aT8wOmUuYXJyb3dXaWR0aCxhPWk/MDplLmFycm93SGVpZ2h0LFtzLGNdPWdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQobiksdT17c3RhcnQ6IjAlIixjZW50ZXI6IjUwJSIsZW5kOiIxMDAlIn1bY10sZD0oci5hcnJvdz8ueD8/MCkrbC8yLGY9KHIuYXJyb3c/Lnk/PzApK2EvMjtsZXQgcD0iIixnPSIiO3JldHVybiJib3R0b20iPT09cz8ocD1pP3U6YCR7ZH1weGAsZz0tYSsicHgiKToidG9wIj09PXM/KHA9aT91OmAke2R9cHhgLGc9YCR7by5mbG9hdGluZy5oZWlnaHQrYX1weGApOiJyaWdodCI9PT1zPyhwPS1hKyJweCIsZz1pP3U6YCR7Zn1weGApOiJsZWZ0Ij09PXMmJihwPWAke28uZmxvYXRpbmcud2lkdGgrYX1weGAsZz1pP3U6YCR7Zn1weGApLHtkYXRhOnt4OnAseTpnfX19fX1mdW5jdGlvbiBnZXRTaWRlQW5kQWxpZ25Gcm9tUGxhY2VtZW50KGUpe2NvbnN0W3Qsbj0iY2VudGVyIl09ZS5zcGxpdCgiLSIpO3JldHVyblt0LG5dfWNvbnN0IGc9WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSxtPU1hdGgubWluLGg9TWF0aC5tYXgseT1NYXRoLnJvdW5kLHY9TWF0aC5mbG9vcixjcmVhdGVDb29yZHM9ZT0+KHt4OmUseTplfSksdz17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtmdW5jdGlvbiBjbGFtcChlLHQsbil7cmV0dXJuIGgoZSxtKHQsbikpfWZ1bmN0aW9uIGV2YWx1YXRlKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0KTplfWZ1bmN0aW9uIGdldFNpZGUoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVswXX1mdW5jdGlvbiBnZXRBbGlnbm1lbnQoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVsxXX1mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoZSl7cmV0dXJuIngiPT09ZT8ieSI6IngifWZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoZSl7cmV0dXJuInkiPT09ZT8iaGVpZ2h0Ijoid2lkdGgifWZ1bmN0aW9uIGdldFNpZGVBeGlzKGUpe2NvbnN0IHQ9ZVswXTtyZXR1cm4idCI9PT10fHwiYiI9PT10PyJ5IjoieCJ9ZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhlKXtyZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKGUpKX1mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChlKXtyZXR1cm4gZS5pbmNsdWRlcygic3RhcnQiKT9lLnJlcGxhY2UoInN0YXJ0IiwiZW5kIik6ZS5yZXBsYWNlKCJlbmQiLCJzdGFydCIpfWNvbnN0IHg9WyJsZWZ0IiwicmlnaHQiXSxBPVsicmlnaHQiLCJsZWZ0Il0sYj1bInRvcCIsImJvdHRvbSJdLFM9WyJib3R0b20iLCJ0b3AiXTtmdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGUsdCxuLG8pe2NvbnN0IHI9Z2V0QWxpZ25tZW50KGUpO2xldCBpPWZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2goZSl7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpyZXR1cm4gbj90P0E6eDp0P3g6QTtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnJldHVybiB0P2I6UztkZWZhdWx0OnJldHVybltdfX0oZ2V0U2lkZShlKSwic3RhcnQiPT09bixvKTtyZXR1cm4gciYmKGk9aS5tYXAoZT0+ZSsiLSIrciksdCYmKGk9aS5jb25jYXQoaS5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKSkpLGl9ZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoZSl7Y29uc3QgdD1nZXRTaWRlKGUpO3JldHVybiB3W3RdK2Uuc2xpY2UodC5sZW5ndGgpfWZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QoZSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBlP2Z1bmN0aW9uKGUpe3JldHVybnt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MCwuLi5lfX0oZSk6e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfX1mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KGUpe2NvbnN0e3g6dCx5Om4sd2lkdGg6byxoZWlnaHQ6cn09ZTtyZXR1cm57d2lkdGg6byxoZWlnaHQ6cix0b3A6bixsZWZ0OnQscmlnaHQ6dCtvLGJvdHRvbTpuK3IseDp0LHk6bn19ZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoZSx0LG4pe2xldHtyZWZlcmVuY2U6byxmbG9hdGluZzpyfT1lO2NvbnN0IGk9Z2V0U2lkZUF4aXModCksbD1nZXRBbGlnbm1lbnRBeGlzKHQpLGE9Z2V0QXhpc0xlbmd0aChsKSxzPWdldFNpZGUodCksYz0ieSI9PT1pLHU9by54K28ud2lkdGgvMi1yLndpZHRoLzIsZD1vLnkrby5oZWlnaHQvMi1yLmhlaWdodC8yLGY9b1thXS8yLXJbYV0vMjtsZXQgcDtzd2l0Y2gocyl7Y2FzZSJ0b3AiOnA9e3g6dSx5Om8ueS1yLmhlaWdodH07YnJlYWs7Y2FzZSJib3R0b20iOnA9e3g6dSx5Om8ueStvLmhlaWdodH07YnJlYWs7Y2FzZSJyaWdodCI6cD17eDpvLngrby53aWR0aCx5OmR9O2JyZWFrO2Nhc2UibGVmdCI6cD17eDpvLngtci53aWR0aCx5OmR9O2JyZWFrO2RlZmF1bHQ6cD17eDpvLngseTpvLnl9fXN3aXRjaChnZXRBbGlnbm1lbnQodCkpe2Nhc2Uic3RhcnQiOnBbbF0tPWYqKG4mJmM/LTE6MSk7YnJlYWs7Y2FzZSJlbmQiOnBbbF0rPWYqKG4mJmM/LTE6MSl9cmV0dXJuIHB9YXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD17fSk7Y29uc3R7eDpvLHk6cixwbGF0Zm9ybTppLHJlY3RzOmwsZWxlbWVudHM6YSxzdHJhdGVneTpzfT1lLHtib3VuZGFyeTpjPSJjbGlwcGluZ0FuY2VzdG9ycyIscm9vdEJvdW5kYXJ5OnU9InZpZXdwb3J0IixlbGVtZW50Q29udGV4dDpkPSJmbG9hdGluZyIsYWx0Qm91bmRhcnk6Zj0hMSxwYWRkaW5nOnA9MH09ZXZhbHVhdGUodCxlKSxnPWdldFBhZGRpbmdPYmplY3QocCksbT1hW2Y/ImZsb2F0aW5nIj09PWQ/InJlZmVyZW5jZSI6ImZsb2F0aW5nIjpkXSxoPXJlY3RUb0NsaWVudFJlY3QoYXdhaXQgaS5nZXRDbGlwcGluZ1JlY3Qoe2VsZW1lbnQ6bnVsbD09KG49YXdhaXQobnVsbD09aS5pc0VsZW1lbnQ/dm9pZCAwOmkuaXNFbGVtZW50KG0pKSl8fG4/bTptLmNvbnRleHRFbGVtZW50fHxhd2FpdChudWxsPT1pLmdldERvY3VtZW50RWxlbWVudD92b2lkIDA6aS5nZXREb2N1bWVudEVsZW1lbnQoYS5mbG9hdGluZykpLGJvdW5kYXJ5OmMscm9vdEJvdW5kYXJ5OnUsc3RyYXRlZ3k6c30pKSx5PSJmbG9hdGluZyI9PT1kP3t4Om8seTpyLHdpZHRoOmwuZmxvYXRpbmcud2lkdGgsaGVpZ2h0OmwuZmxvYXRpbmcuaGVpZ2h0fTpsLnJlZmVyZW5jZSx2PWF3YWl0KG51bGw9PWkuZ2V0T2Zmc2V0UGFyZW50P3ZvaWQgMDppLmdldE9mZnNldFBhcmVudChhLmZsb2F0aW5nKSksdz1hd2FpdChudWxsPT1pLmlzRWxlbWVudD92b2lkIDA6aS5pc0VsZW1lbnQodikpJiZhd2FpdChudWxsPT1pLmdldFNjYWxlP3ZvaWQgMDppLmdldFNjYWxlKHYpKXx8e3g6MSx5OjF9LHg9cmVjdFRvQ2xpZW50UmVjdChpLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IGkuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOmEscmVjdDp5LG9mZnNldFBhcmVudDp2LHN0cmF0ZWd5OnN9KTp5KTtyZXR1cm57dG9wOihoLnRvcC14LnRvcCtnLnRvcCkvdy55LGJvdHRvbTooeC5ib3R0b20taC5ib3R0b20rZy5ib3R0b20pL3cueSxsZWZ0OihoLmxlZnQteC5sZWZ0K2cubGVmdCkvdy54LHJpZ2h0Oih4LnJpZ2h0LWgucmlnaHQrZy5yaWdodCkvdy54fX1mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQoZSl7cmV0dXJuIGcuc29tZSh0PT5lW3RdPj0wKX1jb25zdCBPPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2Z1bmN0aW9uIGdldE5vZGVOYW1lKGUpe3JldHVybiBpc05vZGUoKT8oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6IiNkb2N1bWVudCJ9ZnVuY3Rpb24gZ2V0V2luZG93KGUpe3ZhciB0O3JldHVybihudWxsPT1lfHxudWxsPT0odD1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8dm9pZCAwfWZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlKXt2YXIgdDtyZXR1cm4gbnVsbD09KHQ9KGlzTm9kZSgpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8KHZvaWQgMCkuZG9jdW1lbnQpP3ZvaWQgMDp0LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBpc05vZGUoZSl7cmV0dXJuITF9ZnVuY3Rpb24gaXNFbGVtZW50KGUpe3JldHVybiExfWZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGUpe2NvbnN0e292ZXJmbG93OnQsb3ZlcmZsb3dYOm4sb3ZlcmZsb3dZOm8sZGlzcGxheTpyfT1nZXRDb21wdXRlZFN0eWxlJDEoZSk7cmV0dXJuL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3QodCtvK24pJiYiaW5saW5lIiE9PXImJiJjb250ZW50cyIhPT1yfWZ1bmN0aW9uIGlzVG9wTGF5ZXIoZSl7dHJ5e2lmKGUubWF0Y2hlcygiOnBvcG92ZXItb3BlbiIpKXJldHVybiEwfWNhdGNoKGUpe310cnl7cmV0dXJuIGUubWF0Y2hlcygiOm1vZGFsIil9Y2F0Y2goZSl7cmV0dXJuITF9fWNvbnN0IFA9L3RyYW5zZm9ybXx0cmFuc2xhdGV8c2NhbGV8cm90YXRlfHBlcnNwZWN0aXZlfGZpbHRlci8sQz0vcGFpbnR8bGF5b3V0fHN0cmljdHxjb250ZW50Lyxpc05vdE5vbmU9ZT0+ISFlJiYibm9uZSIhPT1lO2xldCBSO2Z1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaXNOb3ROb25lKHQudHJhbnNmb3JtKXx8aXNOb3ROb25lKHQudHJhbnNsYXRlKXx8aXNOb3ROb25lKHQuc2NhbGUpfHxpc05vdE5vbmUodC5yb3RhdGUpfHxpc05vdE5vbmUodC5wZXJzcGVjdGl2ZSl8fCFpc1dlYktpdCgpJiYoaXNOb3ROb25lKHQuYmFja2Ryb3BGaWx0ZXIpfHxpc05vdE5vbmUodC5maWx0ZXIpKXx8UC50ZXN0KHQud2lsbENoYW5nZXx8IiIpfHxDLnRlc3QodC5jb250YWlufHwiIil9ZnVuY3Rpb24gaXNXZWJLaXQoKXtyZXR1cm4gbnVsbD09UiYmKFI9InVuZGVmaW5lZCIhPXR5cGVvZiBDU1MmJkNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKCItd2Via2l0LWJhY2tkcm9wLWZpbHRlciIsIm5vbmUiKSksUn1mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoZSl7cmV0dXJuL14oaHRtbHxib2R5fCNkb2N1bWVudCkkLy50ZXN0KGdldE5vZGVOYW1lKGUpKX1mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZSl7cmV0dXJuIGdldFdpbmRvdyhlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZSl7cmV0dXJue3Njcm9sbExlZnQ6ZS5zY3JvbGxYLHNjcm9sbFRvcDplLnNjcm9sbFl9fWZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZSl7aWYoImh0bWwiPT09Z2V0Tm9kZU5hbWUoZSkpcmV0dXJuIGU7Y29uc3QgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxnZXREb2N1bWVudEVsZW1lbnQoZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IoZSl7Y29uc3QgdD1nZXRQYXJlbnROb2RlKGUpO3JldHVybiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk/ZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudC5ib2R5OmUuYm9keTpnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcih0KX1mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlLHQsbil7dmFyIG87dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PW4mJihuPSEwKTtjb25zdCByPWdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKGUpLGk9cj09PShudWxsPT0obz1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDpvLmJvZHkpLGw9Z2V0V2luZG93KHIpO2lmKGkpe2NvbnN0IGU9Z2V0RnJhbWVFbGVtZW50KGwpO3JldHVybiB0LmNvbmNhdChsLGwudmlzdWFsVmlld3BvcnR8fFtdLGlzT3ZlcmZsb3dFbGVtZW50KHIpP3I6W10sZSYmbj9nZXRPdmVyZmxvd0FuY2VzdG9ycyhlKTpbXSl9cmV0dXJuIHQuY29uY2F0KHIsZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocixbXSxuKSl9ZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KGUpe3JldHVybiBlLnBhcmVudCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUucGFyZW50KT9lLmZyYW1lRWxlbWVudDpudWxsfWZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZSl7Y29uc3QgdD1nZXRDb21wdXRlZFN0eWxlJDEoZSk7bGV0IG49cGFyc2VGbG9hdCh0LndpZHRoKXx8MCxvPXBhcnNlRmxvYXQodC5oZWlnaHQpfHwwO2NvbnN0IHI9bixpPW8sbD15KG4pIT09cnx8eShvKSE9PWk7cmV0dXJuIGwmJihuPXIsbz1pKSx7d2lkdGg6bixoZWlnaHQ6bywkOmx9fWZ1bmN0aW9uIHVud3JhcEVsZW1lbnQkMShlKXtyZXR1cm4gZS5jb250ZXh0RWxlbWVudH1mdW5jdGlvbiBnZXRTY2FsZShlKXt1bndyYXBFbGVtZW50JDEoZSk7cmV0dXJuIGNyZWF0ZUNvb3JkcygxKX1jb25zdCBFPWNyZWF0ZUNvb3JkcygwKTtmdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGUpe2NvbnN0IHQ9Z2V0V2luZG93KGUpO3JldHVybiBpc1dlYktpdCgpJiZ0LnZpc3VhbFZpZXdwb3J0P3t4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfTpFfWZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlLHQsbixvKXt2b2lkIDA9PT10JiYodD0hMSksdm9pZCAwPT09biYmKG49ITEpO2NvbnN0IHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXVud3JhcEVsZW1lbnQkMShlKTtsZXQgbD1jcmVhdGVDb29yZHMoMSk7dCYmKG98fChsPWdldFNjYWxlKGUpKSk7Y29uc3QgYT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSwhKCFufHx0JiZuIT09Z2V0V2luZG93KGUpKSYmdH0oaSxuLG8pP2dldFZpc3VhbE9mZnNldHMoaSk6Y3JlYXRlQ29vcmRzKDApO2xldCBzPShyLmxlZnQrYS54KS9sLngsYz0oci50b3ArYS55KS9sLnksdT1yLndpZHRoL2wueCxkPXIuaGVpZ2h0L2wueTtpZihpKXtjb25zdCBlPW87bGV0IHQ9Z2V0V2luZG93KGkpLG49Z2V0RnJhbWVFbGVtZW50KHQpO2Zvcig7biYmbyYmZSE9PXQ7KXtjb25zdCBlPWdldFNjYWxlKG4pLG89bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWdldENvbXB1dGVkU3R5bGUkMShuKSxpPW8ubGVmdCsobi5jbGllbnRMZWZ0K3BhcnNlRmxvYXQoci5wYWRkaW5nTGVmdCkpKmUueCxsPW8udG9wKyhuLmNsaWVudFRvcCtwYXJzZUZsb2F0KHIucGFkZGluZ1RvcCkpKmUueTtzKj1lLngsYyo9ZS55LHUqPWUueCxkKj1lLnkscys9aSxjKz1sLHQ9Z2V0V2luZG93KG4pLG49Z2V0RnJhbWVFbGVtZW50KHQpfX1yZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7d2lkdGg6dSxoZWlnaHQ6ZCx4OnMseTpjfSl9ZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlLHQpe2NvbnN0IG49Z2V0Tm9kZVNjcm9sbChlKS5zY3JvbGxMZWZ0O3JldHVybiB0P3QubGVmdCtuOmdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZSkpLmxlZnQrbn1mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGUsdCl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt4Om4ubGVmdCt0LnNjcm9sbExlZnQtZ2V0V2luZG93U2Nyb2xsQmFyWChlLG4pLHk6bi50b3ArdC5zY3JvbGxUb3B9fWZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlLHQsbil7bGV0IG87aWYoInZpZXdwb3J0Ij09PXQpbz1mdW5jdGlvbihlLHQpe2NvbnN0IG49Z2V0V2luZG93KGUpLG89Z2V0RG9jdW1lbnRFbGVtZW50KGUpLHI9bi52aXN1YWxWaWV3cG9ydDtsZXQgaT1vLmNsaWVudFdpZHRoLGw9by5jbGllbnRIZWlnaHQsYT0wLHM9MDtpZihyKXtpPXIud2lkdGgsbD1yLmhlaWdodDtjb25zdCBlPWlzV2ViS2l0KCk7KCFlfHxlJiYiZml4ZWQiPT09dCkmJihhPXIub2Zmc2V0TGVmdCxzPXIub2Zmc2V0VG9wKX1jb25zdCBjPWdldFdpbmRvd1Njcm9sbEJhclgobyk7aWYoYzw9MCl7Y29uc3QgZT1vLm93bmVyRG9jdW1lbnQsdD1lLmJvZHksbj1nZXRDb21wdXRlZFN0eWxlKHQpLHI9IkNTUzFDb21wYXQiPT09ZS5jb21wYXRNb2RlJiZwYXJzZUZsb2F0KG4ubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChuLm1hcmdpblJpZ2h0KXx8MCxsPU1hdGguYWJzKG8uY2xpZW50V2lkdGgtdC5jbGllbnRXaWR0aC1yKTtsPD0yNSYmKGktPWwpfWVsc2UgYzw9MjUmJihpKz1jKTtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6bCx4OmEseTpzfX0oZSxuKTtlbHNlIGlmKCJkb2N1bWVudCI9PT10KW89ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXREb2N1bWVudEVsZW1lbnQoZSksbj1nZXROb2RlU2Nyb2xsKGUpLG89ZS5vd25lckRvY3VtZW50LmJvZHkscj1oKHQuc2Nyb2xsV2lkdGgsdC5jbGllbnRXaWR0aCxvLnNjcm9sbFdpZHRoLG8uY2xpZW50V2lkdGgpLGk9aCh0LnNjcm9sbEhlaWdodCx0LmNsaWVudEhlaWdodCxvLnNjcm9sbEhlaWdodCxvLmNsaWVudEhlaWdodCk7bGV0IGw9LW4uc2Nyb2xsTGVmdCtnZXRXaW5kb3dTY3JvbGxCYXJYKGUpO2NvbnN0IGE9LW4uc2Nyb2xsVG9wO3JldHVybiJydGwiPT09Z2V0Q29tcHV0ZWRTdHlsZSQxKG8pLmRpcmVjdGlvbiYmKGwrPWgodC5jbGllbnRXaWR0aCxvLmNsaWVudFdpZHRoKS1yKSx7d2lkdGg6cixoZWlnaHQ6aSx4OmwseTphfX0oZ2V0RG9jdW1lbnRFbGVtZW50KGUpKTtlbHNle3tjb25zdCBuPWdldFZpc3VhbE9mZnNldHMoZSk7bz17eDp0Lngtbi54LHk6dC55LW4ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fXJldHVybiByZWN0VG9DbGllbnRSZWN0KG8pfWZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlLHQpe2dldFBhcmVudE5vZGUoZSk7cmV0dXJuITF9ZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZSx0LG4pe2NvbnN0IG89Z2V0RG9jdW1lbnRFbGVtZW50KHQpLHI9ImZpeGVkIj09PW4saT1nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSwhMCxyLHQpO2xldCBsPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9O2NvbnN0IGE9Y3JlYXRlQ29vcmRzKDApO2Z1bmN0aW9uIHNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKXthLng9Z2V0V2luZG93U2Nyb2xsQmFyWChvKX1yfHwoKCJib2R5IiE9PWdldE5vZGVOYW1lKHQpfHxpc092ZXJmbG93RWxlbWVudChvKSkmJihsPWdldE5vZGVTY3JvbGwodCkpLG8mJnNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKSksciYmbyYmc2V0TGVmdFJUTFNjcm9sbGJhck9mZnNldCgpO2NvbnN0IHM9byYmIXI/Z2V0SFRNTE9mZnNldChvLGwpOmNyZWF0ZUNvb3JkcygwKTtyZXR1cm57eDppLmxlZnQrbC5zY3JvbGxMZWZ0LWEueC1zLngseTppLnRvcCtsLnNjcm9sbFRvcC1hLnktcy55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX1mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZSl7cmV0dXJuInN0YXRpYyI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkucG9zaXRpb259ZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGUsdCl7Y29uc3Qgbj1nZXRXaW5kb3coZSk7aWYoaXNUb3BMYXllcihlKSlyZXR1cm4gbjt7bGV0IHQ9Z2V0UGFyZW50Tm9kZShlKTtmb3IoO3QmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk7KXtpZihpc0VsZW1lbnQoKSYmIWlzU3RhdGljUG9zaXRpb25lZCh0KSlyZXR1cm4gdDt0PWdldFBhcmVudE5vZGUodCl9cmV0dXJuIG59fWNvbnN0IEI9e2NvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0OmZ1bmN0aW9uKGUpe2xldHtlbGVtZW50czp0LHJlY3Q6bixvZmZzZXRQYXJlbnQ6byxzdHJhdGVneTpyfT1lO2NvbnN0IGk9ImZpeGVkIj09PXIsbD1nZXREb2N1bWVudEVsZW1lbnQobyksYT0hIXQmJmlzVG9wTGF5ZXIodC5mbG9hdGluZyk7aWYobz09PWx8fGEmJmkpcmV0dXJuIG47bGV0IHM9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0sYz1jcmVhdGVDb29yZHMoMSk7Y29uc3QgdT1jcmVhdGVDb29yZHMoMCk7aXx8KCJib2R5IiE9PWdldE5vZGVOYW1lKG8pfHxpc092ZXJmbG93RWxlbWVudChsKSkmJihzPWdldE5vZGVTY3JvbGwobykpO2NvbnN0IGQ9bCYmIWk/Z2V0SFRNTE9mZnNldChsLHMpOmNyZWF0ZUNvb3JkcygwKTtyZXR1cm57d2lkdGg6bi53aWR0aCpjLngsaGVpZ2h0Om4uaGVpZ2h0KmMueSx4Om4ueCpjLngtcy5zY3JvbGxMZWZ0KmMueCt1LngrZC54LHk6bi55KmMueS1zLnNjcm9sbFRvcCpjLnkrdS55K2QueX19LGdldERvY3VtZW50RWxlbWVudDpnZXREb2N1bWVudEVsZW1lbnQsZ2V0Q2xpcHBpbmdSZWN0OmZ1bmN0aW9uKGUpe2xldHtlbGVtZW50OnQsYm91bmRhcnk6bixyb290Qm91bmRhcnk6byxzdHJhdGVneTpyfT1lO2NvbnN0IGk9Wy4uLiJjbGlwcGluZ0FuY2VzdG9ycyI9PT1uP2lzVG9wTGF5ZXIodCk/W106ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXQuZ2V0KGUpO2lmKG4pcmV0dXJuIG47bGV0IG89Z2V0T3ZlcmZsb3dBbmNlc3RvcnMoZSxbXSwhMSkuZmlsdGVyKGU9PiExKSxyPW51bGw7Y29uc3QgaT0iZml4ZWQiPT09Z2V0Q29tcHV0ZWRTdHlsZSQxKGUpLnBvc2l0aW9uO2xldCBsPWk/Z2V0UGFyZW50Tm9kZShlKTplO2Zvcig7aXNFbGVtZW50KCkmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobCk7KXtjb25zdCB0PWdldENvbXB1dGVkU3R5bGUkMShsKSxuPWlzQ29udGFpbmluZ0Jsb2NrKGwpO258fCJmaXhlZCIhPT10LnBvc2l0aW9ufHwocj1udWxsKSwoaT8hbiYmIXI6IW4mJiJzdGF0aWMiPT09dC5wb3NpdGlvbiYmciYmKCJhYnNvbHV0ZSI9PT1yLnBvc2l0aW9ufHwiZml4ZWQiPT09ci5wb3NpdGlvbil8fGlzT3ZlcmZsb3dFbGVtZW50KGwpJiYhbiYmaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGUpKT9vPW8uZmlsdGVyKGU9PmUhPT1sKTpyPXQsbD1nZXRQYXJlbnROb2RlKGwpfXJldHVybiB0LnNldChlLG8pLG99KHQsdGhpcy5fYyk6W10uY29uY2F0KG4pLG9dLGw9Z2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKHQsaVswXSxyKTtsZXQgYT1sLnRvcCxzPWwucmlnaHQsYz1sLmJvdHRvbSx1PWwubGVmdDtmb3IobGV0IGU9MTtlPGkubGVuZ3RoO2UrKyl7Y29uc3Qgbj1nZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IodCxpW2VdLHIpO2E9aChuLnRvcCxhKSxzPW0obi5yaWdodCxzKSxjPW0obi5ib3R0b20sYyksdT1oKG4ubGVmdCx1KX1yZXR1cm57d2lkdGg6cy11LGhlaWdodDpjLWEseDp1LHk6YX19LGdldE9mZnNldFBhcmVudDpnZXRPZmZzZXRQYXJlbnQsZ2V0RWxlbWVudFJlY3RzOmFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fGdldE9mZnNldFBhcmVudCxuPXRoaXMuZ2V0RGltZW5zaW9ucyxvPWF3YWl0IG4oZS5mbG9hdGluZyk7cmV0dXJue3JlZmVyZW5jZTpnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlLnJlZmVyZW5jZSxhd2FpdCB0KGUuZmxvYXRpbmcpLGUuc3RyYXRlZ3kpLGZsb2F0aW5nOnt4OjAseTowLHdpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fX19LGdldENsaWVudFJlY3RzOmZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSl9LGdldERpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7Y29uc3R7d2lkdGg6dCxoZWlnaHQ6bn09Z2V0Q3NzRGltZW5zaW9ucyhlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19LGdldFNjYWxlOmdldFNjYWxlLGlzRWxlbWVudDppc0VsZW1lbnQsaXNSVEw6ZnVuY3Rpb24oZSl7cmV0dXJuInJ0bCI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkuZGlyZWN0aW9ufX07ZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChlLHQpe3JldHVybiBlLng9PT10LngmJmUueT09PXQueSYmZS53aWR0aD09PXQud2lkdGgmJmUuaGVpZ2h0PT09dC5oZWlnaHR9ZnVuY3Rpb24gYXV0b1VwZGF0ZShlLHQsbixvKXt2b2lkIDA9PT1vJiYobz17fSk7Y29uc3R7YW5jZXN0b3JTY3JvbGw6cj0hMCxhbmNlc3RvclJlc2l6ZTppPSEwLGVsZW1lbnRSZXNpemU6bD0iZnVuY3Rpb24iPT10eXBlb2YgUmVzaXplT2JzZXJ2ZXIsbGF5b3V0U2hpZnQ6YT0iZnVuY3Rpb24iPT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsYW5pbWF0aW9uRnJhbWU6cz0hMX09byxjPXVud3JhcEVsZW1lbnQkMShlKSx1PXJ8fGk/Wy4uLmM/Z2V0T3ZlcmZsb3dBbmNlc3RvcnMoYyk6W10sLi4udD9nZXRPdmVyZmxvd0FuY2VzdG9ycyh0KTpbXV06W107dS5mb3JFYWNoKGU9PntyJiZlLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsbix7cGFzc2l2ZTohMH0pLGkmJmUuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixuKX0pO2NvbnN0IGQ9YyYmYT9mdW5jdGlvbihlLHQpe2xldCBuLG89bnVsbDtjb25zdCByPWdldERvY3VtZW50RWxlbWVudChlKTtmdW5jdGlvbiBjbGVhbnVwKCl7dmFyIGU7Y2xlYXJUaW1lb3V0KG4pLG51bGw9PShlPW8pfHxlLmRpc2Nvbm5lY3QoKSxvPW51bGx9cmV0dXJuIGZ1bmN0aW9uIHJlZnJlc2goaSxsKXt2b2lkIDA9PT1pJiYoaT0hMSksdm9pZCAwPT09bCYmKGw9MSksY2xlYW51cCgpO2NvbnN0IGE9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7bGVmdDpzLHRvcDpjLHdpZHRoOnUsaGVpZ2h0OmR9PWE7aWYoaXx8dCgpLCF1fHwhZClyZXR1cm47Y29uc3QgZj17cm9vdE1hcmdpbjotdihjKSsicHggIistdihyLmNsaWVudFdpZHRoLShzK3UpKSsicHggIistdihyLmNsaWVudEhlaWdodC0oYytkKSkrInB4ICIrLXYocykrInB4Iix0aHJlc2hvbGQ6aCgwLG0oMSxsKSl8fDF9O2xldCBwPSEwO2Z1bmN0aW9uIGhhbmRsZU9ic2VydmUodCl7Y29uc3Qgbz10WzBdLmludGVyc2VjdGlvblJhdGlvO2lmKG8hPT1sKXtpZighcClyZXR1cm4gcmVmcmVzaCgpO28/cmVmcmVzaCghMSxvKTpuPXNldFRpbWVvdXQoKCk9PntyZWZyZXNoKCExLDFlLTcpfSwxZTMpfTEhPT1vfHxyZWN0c0FyZUVxdWFsKGEsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSl8fHJlZnJlc2goKSxwPSExfXRyeXtvPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLHsuLi5mLHJvb3Q6ci5vd25lckRvY3VtZW50fSl9Y2F0Y2goZSl7bz1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSxmKX1vLm9ic2VydmUoZSl9KCEwKSxjbGVhbnVwfShjLG4pOm51bGw7bGV0IGYscD0tMSxnPW51bGw7bCYmKGc9bmV3IFJlc2l6ZU9ic2VydmVyKGU9PntsZXRbb109ZTtvJiZvLnRhcmdldD09PWMmJmcmJnQmJihnLnVub2JzZXJ2ZSh0KSxjYW5jZWxBbmltYXRpb25GcmFtZShwKSxwPXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBlO251bGw9PShlPWcpfHxlLm9ic2VydmUodCl9KSksbigpfSksYyYmIXMmJmcub2JzZXJ2ZShjKSx0JiZnLm9ic2VydmUodCkpO2xldCB5PXM/Z2V0Qm91bmRpbmdDbGllbnRSZWN0KGUpOm51bGw7cmV0dXJuIHMmJmZ1bmN0aW9uIGZyYW1lTG9vcCgpe2NvbnN0IHQ9Z2V0Qm91bmRpbmdDbGllbnRSZWN0KGUpO3kmJiFyZWN0c0FyZUVxdWFsKHksdCkmJm4oKTt5PXQsZj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKX0oKSxuKCksKCk9Pnt2YXIgZTt1LmZvckVhY2goZT0+e3ImJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixuKSxpJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KSxudWxsPT1kfHxkKCksbnVsbD09KGU9Zyl8fGUuZGlzY29ubmVjdCgpLGc9bnVsbCxzJiZjYW5jZWxBbmltYXRpb25GcmFtZShmKX19Y29uc3Qgb2Zmc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4sbztjb25zdHt4OnIseTppLHBsYWNlbWVudDpsLG1pZGRsZXdhcmVEYXRhOmF9PXQscz1hd2FpdCBhc3luYyBmdW5jdGlvbihlLHQpe2NvbnN0e3BsYWNlbWVudDpuLHBsYXRmb3JtOm8sZWxlbWVudHM6cn09ZSxpPWF3YWl0KG51bGw9PW8uaXNSVEw/dm9pZCAwOm8uaXNSVEwoci5mbG9hdGluZykpLGw9Z2V0U2lkZShuKSxhPWdldEFsaWdubWVudChuKSxzPSJ5Ij09PWdldFNpZGVBeGlzKG4pLGM9Ty5oYXMobCk/LTE6MSx1PWkmJnM/LTE6MSxkPWV2YWx1YXRlKHQsZSk7bGV0e21haW5BeGlzOmYsY3Jvc3NBeGlzOnAsYWxpZ25tZW50QXhpczpnfT0ibnVtYmVyIj09dHlwZW9mIGQ/e21haW5BeGlzOmQsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6ZC5tYWluQXhpc3x8MCxjcm9zc0F4aXM6ZC5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpkLmFsaWdubWVudEF4aXN9O3JldHVybiBhJiYibnVtYmVyIj09dHlwZW9mIGcmJihwPSJlbmQiPT09YT8tMSpnOmcpLHM/e3g6cCp1LHk6ZipjfTp7eDpmKmMseTpwKnV9fSh0LGUpO3JldHVybiBsPT09KG51bGw9PShuPWEub2Zmc2V0KT92b2lkIDA6bi5wbGFjZW1lbnQpJiZudWxsIT0obz1hLmFycm93KSYmby5hbGlnbm1lbnRPZmZzZXQ/e306e3g6citzLngseTppK3MueSxkYXRhOnsuLi5zLHBsYWNlbWVudDpsfX19fX0sc2hpZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToic2hpZnQiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpvLHBsYWNlbWVudDpyLHBsYXRmb3JtOml9PXQse21haW5BeGlzOmw9ITAsY3Jvc3NBeGlzOmE9ITEsbGltaXRlcjpzPXtmbjplPT57bGV0e3g6dCx5Om59PWU7cmV0dXJue3g6dCx5Om59fX0sLi4uY309ZXZhbHVhdGUoZSx0KSx1PXt4Om4seTpvfSxkPWF3YWl0IGkuZGV0ZWN0T3ZlcmZsb3codCxjKSxmPWdldFNpZGVBeGlzKGdldFNpZGUocikpLHA9Z2V0T3Bwb3NpdGVBeGlzKGYpO2xldCBnPXVbcF0sbT11W2ZdO2lmKGwpe2NvbnN0IGU9InkiPT09cD8iYm90dG9tIjoicmlnaHQiO2c9Y2xhbXAoZytkWyJ5Ij09PXA/InRvcCI6ImxlZnQiXSxnLGctZFtlXSl9aWYoYSl7Y29uc3QgZT0ieSI9PT1mPyJib3R0b20iOiJyaWdodCI7bT1jbGFtcChtK2RbInkiPT09Zj8idG9wIjoibGVmdCJdLG0sbS1kW2VdKX1jb25zdCBoPXMuZm4oey4uLnQsW3BdOmcsW2ZdOm19KTtyZXR1cm57Li4uaCxkYXRhOnt4OmgueC1uLHk6aC55LW8sZW5hYmxlZDp7W3BdOmwsW2ZdOmF9fX19fX0sZmxpcD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJmbGlwIixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4sbztjb25zdHtwbGFjZW1lbnQ6cixtaWRkbGV3YXJlRGF0YTppLHJlY3RzOmwsaW5pdGlhbFBsYWNlbWVudDphLHBsYXRmb3JtOnMsZWxlbWVudHM6Y309dCx7bWFpbkF4aXM6dT0hMCxjcm9zc0F4aXM6ZD0hMCxmYWxsYmFja1BsYWNlbWVudHM6ZixmYWxsYmFja1N0cmF0ZWd5OnA9ImJlc3RGaXQiLGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246Zz0ibm9uZSIsZmxpcEFsaWdubWVudDptPSEwLC4uLmh9PWV2YWx1YXRlKGUsdCk7aWYobnVsbCE9KG49aS5hcnJvdykmJm4uYWxpZ25tZW50T2Zmc2V0KXJldHVybnt9O2NvbnN0IHk9Z2V0U2lkZShyKSx2PWdldFNpZGVBeGlzKGEpLHc9Z2V0U2lkZShhKT09PWEseD1hd2FpdChudWxsPT1zLmlzUlRMP3ZvaWQgMDpzLmlzUlRMKGMuZmxvYXRpbmcpKSxBPWZ8fCh3fHwhbT9bZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoYSldOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9Z2V0T3Bwb3NpdGVQbGFjZW1lbnQoZSk7cmV0dXJuW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KGUpLHQsZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQodCldfShhKSksYj0ibm9uZSIhPT1nOyFmJiZiJiZBLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhhLG0sZyx4KSk7Y29uc3QgUz1bYSwuLi5BXSxPPWF3YWl0IHMuZGV0ZWN0T3ZlcmZsb3codCxoKSxQPVtdO2xldCBDPShudWxsPT0obz1pLmZsaXApP3ZvaWQgMDpvLm92ZXJmbG93cyl8fFtdO2lmKHUmJlAucHVzaChPW3ldKSxkKXtjb25zdCBlPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0hMSk7Y29uc3Qgbz1nZXRBbGlnbm1lbnQoZSkscj1nZXRBbGlnbm1lbnRBeGlzKGUpLGk9Z2V0QXhpc0xlbmd0aChyKTtsZXQgbD0ieCI9PT1yP289PT0obj8iZW5kIjoic3RhcnQiKT8icmlnaHQiOiJsZWZ0Ijoic3RhcnQiPT09bz8iYm90dG9tIjoidG9wIjtyZXR1cm4gdC5yZWZlcmVuY2VbaV0+dC5mbG9hdGluZ1tpXSYmKGw9Z2V0T3Bwb3NpdGVQbGFjZW1lbnQobCkpLFtsLGdldE9wcG9zaXRlUGxhY2VtZW50KGwpXX0ocixsLHgpO1AucHVzaChPW2VbMF1dLE9bZVsxXV0pfWlmKEM9Wy4uLkMse3BsYWNlbWVudDpyLG92ZXJmbG93czpQfV0sIVAuZXZlcnkoZT0+ZTw9MCkpe3ZhciBSLEU7Y29uc3QgZT0oKG51bGw9PShSPWkuZmxpcCk/dm9pZCAwOlIuaW5kZXgpfHwwKSsxLHQ9U1tlXTtpZih0KXtpZighKCJhbGlnbm1lbnQiPT09ZCYmdiE9PWdldFNpZGVBeGlzKHQpKXx8Qy5ldmVyeShlPT5nZXRTaWRlQXhpcyhlLnBsYWNlbWVudCkhPT12fHxlLm92ZXJmbG93c1swXT4wKSlyZXR1cm57ZGF0YTp7aW5kZXg6ZSxvdmVyZmxvd3M6Q30scmVzZXQ6e3BsYWNlbWVudDp0fX19bGV0IG49bnVsbD09KEU9Qy5maWx0ZXIoZT0+ZS5vdmVyZmxvd3NbMF08PTApLnNvcnQoKGUsdCk9PmUub3ZlcmZsb3dzWzFdLXQub3ZlcmZsb3dzWzFdKVswXSk/dm9pZCAwOkUucGxhY2VtZW50O2lmKCFuKXN3aXRjaChwKXtjYXNlImJlc3RGaXQiOnt2YXIgQjtjb25zdCBlPW51bGw9PShCPUMuZmlsdGVyKGU9PntpZihiKXtjb25zdCB0PWdldFNpZGVBeGlzKGUucGxhY2VtZW50KTtyZXR1cm4gdD09PXZ8fCJ5Ij09PXR9cmV0dXJuITB9KS5tYXAoZT0+W2UucGxhY2VtZW50LGUub3ZlcmZsb3dzLmZpbHRlcihlPT5lPjApLnJlZHVjZSgoZSx0KT0+ZSt0LDApXSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKVswXSk/dm9pZCAwOkJbMF07ZSYmKG49ZSk7YnJlYWt9Y2FzZSJpbml0aWFsUGxhY2VtZW50IjpuPWF9aWYociE9PW4pcmV0dXJue3Jlc2V0OntwbGFjZW1lbnQ6bn19fXJldHVybnt9fX19LHNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToic2l6ZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLG87Y29uc3R7cGxhY2VtZW50OnIscmVjdHM6aSxwbGF0Zm9ybTpsLGVsZW1lbnRzOmF9PXQse2FwcGx5OnM9KCk9Pnt9LC4uLmN9PWV2YWx1YXRlKGUsdCksdT1hd2FpdCBsLmRldGVjdE92ZXJmbG93KHQsYyksZD1nZXRTaWRlKHIpLGY9Z2V0QWxpZ25tZW50KHIpLHA9InkiPT09Z2V0U2lkZUF4aXMocikse3dpZHRoOmcsaGVpZ2h0Onl9PWkuZmxvYXRpbmc7bGV0IHYsdzsidG9wIj09PWR8fCJib3R0b20iPT09ZD8odj1kLHc9Zj09PShhd2FpdChudWxsPT1sLmlzUlRMP3ZvaWQgMDpsLmlzUlRMKGEuZmxvYXRpbmcpKT8ic3RhcnQiOiJlbmQiKT8ibGVmdCI6InJpZ2h0Iik6KHc9ZCx2PSJlbmQiPT09Zj8idG9wIjoiYm90dG9tIik7Y29uc3QgeD15LXUudG9wLXUuYm90dG9tLEE9Zy11LmxlZnQtdS5yaWdodCxiPW0oeS11W3ZdLHgpLFM9bShnLXVbd10sQSksTz0hdC5taWRkbGV3YXJlRGF0YS5zaGlmdDtsZXQgUD1iLEM9UztpZihudWxsIT0obj10Lm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSYmbi5lbmFibGVkLngmJihDPUEpLG51bGwhPShvPXQubWlkZGxld2FyZURhdGEuc2hpZnQpJiZvLmVuYWJsZWQueSYmKFA9eCksTyYmIWYpe2NvbnN0IGU9aCh1LmxlZnQsMCksdD1oKHUucmlnaHQsMCksbj1oKHUudG9wLDApLG89aCh1LmJvdHRvbSwwKTtwP0M9Zy0yKigwIT09ZXx8MCE9PXQ/ZSt0OmgodS5sZWZ0LHUucmlnaHQpKTpQPXktMiooMCE9PW58fDAhPT1vP24rbzpoKHUudG9wLHUuYm90dG9tKSl9YXdhaXQgcyh7Li4udCxhdmFpbGFibGVXaWR0aDpDLGF2YWlsYWJsZUhlaWdodDpQfSk7Y29uc3QgUj1hd2FpdCBsLmdldERpbWVuc2lvbnMoYS5mbG9hdGluZyk7cmV0dXJuIGchPT1SLndpZHRofHx5IT09Ui5oZWlnaHQ/e3Jlc2V0OntyZWN0czohMH19Ont9fX19LGhpZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToiaGlkZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3JlY3RzOm4scGxhdGZvcm06b309dCx7c3RyYXRlZ3k6cj0icmVmZXJlbmNlSGlkZGVuIiwuLi5pfT1ldmFsdWF0ZShlLHQpO3N3aXRjaChyKXtjYXNlInJlZmVyZW5jZUhpZGRlbiI6e2NvbnN0IGU9Z2V0U2lkZU9mZnNldHMoYXdhaXQgby5kZXRlY3RPdmVyZmxvdyh0LHsuLi5pLGVsZW1lbnRDb250ZXh0OiJyZWZlcmVuY2UifSksbi5yZWZlcmVuY2UpO3JldHVybntkYXRhOntyZWZlcmVuY2VIaWRkZW5PZmZzZXRzOmUscmVmZXJlbmNlSGlkZGVuOmlzQW55U2lkZUZ1bGx5Q2xpcHBlZChlKX19fWNhc2UiZXNjYXBlZCI6e2NvbnN0IGU9Z2V0U2lkZU9mZnNldHMoYXdhaXQgby5kZXRlY3RPdmVyZmxvdyh0LHsuLi5pLGFsdEJvdW5kYXJ5OiEwfSksbi5mbG9hdGluZyk7cmV0dXJue2RhdGE6e2VzY2FwZWRPZmZzZXRzOmUsZXNjYXBlZDppc0FueVNpZGVGdWxseUNsaXBwZWQoZSl9fX1kZWZhdWx0OnJldHVybnt9fX19fSxhcnJvdyQxPWU9Pih7bmFtZToiYXJyb3ciLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpvLHBsYWNlbWVudDpyLHJlY3RzOmkscGxhdGZvcm06bCxlbGVtZW50czphLG1pZGRsZXdhcmVEYXRhOnN9PXQse2VsZW1lbnQ6YyxwYWRkaW5nOnU9MH09ZXZhbHVhdGUoZSx0KXx8e307aWYobnVsbD09YylyZXR1cm57fTtjb25zdCBkPWdldFBhZGRpbmdPYmplY3QodSksZj17eDpuLHk6b30scD1nZXRBbGlnbm1lbnRBeGlzKHIpLGc9Z2V0QXhpc0xlbmd0aChwKSxoPWF3YWl0IGwuZ2V0RGltZW5zaW9ucyhjKSx5PSJ5Ij09PXAsdj15PyJ0b3AiOiJsZWZ0Iix3PXk/ImJvdHRvbSI6InJpZ2h0Iix4PXk/ImNsaWVudEhlaWdodCI6ImNsaWVudFdpZHRoIixBPWkucmVmZXJlbmNlW2ddK2kucmVmZXJlbmNlW3BdLWZbcF0taS5mbG9hdGluZ1tnXSxiPWZbcF0taS5yZWZlcmVuY2VbcF0sUz1hd2FpdChudWxsPT1sLmdldE9mZnNldFBhcmVudD92b2lkIDA6bC5nZXRPZmZzZXRQYXJlbnQoYykpO2xldCBPPVM/U1t4XTowO08mJmF3YWl0KG51bGw9PWwuaXNFbGVtZW50P3ZvaWQgMDpsLmlzRWxlbWVudChTKSl8fChPPWEuZmxvYXRpbmdbeF18fGkuZmxvYXRpbmdbZ10pO2NvbnN0IFA9QS8yLWIvMixDPU8vMi1oW2ddLzItMSxSPW0oZFt2XSxDKSxFPW0oZFt3XSxDKSxCPVIsTD1PLWhbZ10tRSxOPU8vMi1oW2ddLzIrUCxUPWNsYW1wKEIsTixMKSxEPSFzLmFycm93JiZudWxsIT1nZXRBbGlnbm1lbnQocikmJk4hPT1UJiZpLnJlZmVyZW5jZVtnXS8yLShOPEI/UjpFKS1oW2ddLzI8MCxGPUQ/TjxCP04tQjpOLUw6MDtyZXR1cm57W3BdOmZbcF0rRixkYXRhOntbcF06VCxjZW50ZXJPZmZzZXQ6Ti1ULUYsLi4uRCYme2FsaWdubWVudE9mZnNldDpGfX0scmVzZXQ6RH19fSksbGltaXRTaGlmdD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtvcHRpb25zOmUsZm4odCl7Y29uc3R7eDpuLHk6byxwbGFjZW1lbnQ6cixyZWN0czppLG1pZGRsZXdhcmVEYXRhOmx9PXQse29mZnNldDphPTAsbWFpbkF4aXM6cz0hMCxjcm9zc0F4aXM6Yz0hMH09ZXZhbHVhdGUoZSx0KSx1PXt4Om4seTpvfSxkPWdldFNpZGVBeGlzKHIpLGY9Z2V0T3Bwb3NpdGVBeGlzKGQpO2xldCBwPXVbZl0sZz11W2RdO2NvbnN0IG09ZXZhbHVhdGUoYSx0KSxoPSJudW1iZXIiPT10eXBlb2YgbT97bWFpbkF4aXM6bSxjcm9zc0F4aXM6MH06e21haW5BeGlzOjAsY3Jvc3NBeGlzOjAsLi4ubX07aWYocyl7Y29uc3QgZT0ieSI9PT1mPyJoZWlnaHQiOiJ3aWR0aCIsdD1pLnJlZmVyZW5jZVtmXS1pLmZsb2F0aW5nW2VdK2gubWFpbkF4aXMsbj1pLnJlZmVyZW5jZVtmXStpLnJlZmVyZW5jZVtlXS1oLm1haW5BeGlzO3A8dD9wPXQ6cD5uJiYocD1uKX1pZihjKXt2YXIgeSx2O2NvbnN0IGU9InkiPT09Zj8id2lkdGgiOiJoZWlnaHQiLHQ9Ty5oYXMoZ2V0U2lkZShyKSksbj1pLnJlZmVyZW5jZVtkXS1pLmZsb2F0aW5nW2VdKyh0JiYobnVsbD09KHk9bC5vZmZzZXQpP3ZvaWQgMDp5W2RdKXx8MCkrKHQ/MDpoLmNyb3NzQXhpcyksbz1pLnJlZmVyZW5jZVtkXStpLnJlZmVyZW5jZVtlXSsodD8wOihudWxsPT0odj1sLm9mZnNldCk/dm9pZCAwOnZbZF0pfHwwKS0odD9oLmNyb3NzQXhpczowKTtnPG4/Zz1uOmc+byYmKGc9byl9cmV0dXJue1tmXTpwLFtkXTpnfX19fSxjb21wdXRlUG9zaXRpb249KGUsdCxuKT0+e2NvbnN0IG89bmV3IE1hcCxyPXtwbGF0Zm9ybTpCLC4uLm59LGk9ey4uLnIucGxhdGZvcm0sX2M6b307cmV0dXJuKGFzeW5jKGUsdCxuKT0+e2NvbnN0e3BsYWNlbWVudDpvPSJib3R0b20iLHN0cmF0ZWd5OnI9ImFic29sdXRlIixtaWRkbGV3YXJlOmk9W10scGxhdGZvcm06bH09bixhPWwuZGV0ZWN0T3ZlcmZsb3c/bDp7Li4ubCxkZXRlY3RPdmVyZmxvdzpkZXRlY3RPdmVyZmxvd30scz1hd2FpdChudWxsPT1sLmlzUlRMP3ZvaWQgMDpsLmlzUlRMKHQpKTtsZXQgYz1hd2FpdCBsLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dCxzdHJhdGVneTpyfSkse3g6dSx5OmR9PWNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KGMsbyxzKSxmPW8scD0wO2NvbnN0IGc9e307Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDtuKyspe2NvbnN0IG09aVtuXTtpZighbSljb250aW51ZTtjb25zdHtuYW1lOmgsZm46eX09bSx7eDp2LHk6dyxkYXRhOngscmVzZXQ6QX09YXdhaXQgeSh7eDp1LHk6ZCxpbml0aWFsUGxhY2VtZW50Om8scGxhY2VtZW50OmYsc3RyYXRlZ3k6cixtaWRkbGV3YXJlRGF0YTpnLHJlY3RzOmMscGxhdGZvcm06YSxlbGVtZW50czp7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dH19KTt1PW51bGwhPXY/djp1LGQ9bnVsbCE9dz93OmQsZ1toXT17Li4uZ1toXSwuLi54fSxBJiZwPDUwJiYocCsrLCJvYmplY3QiPT10eXBlb2YgQSYmKEEucGxhY2VtZW50JiYoZj1BLnBsYWNlbWVudCksQS5yZWN0cyYmKGM9ITA9PT1BLnJlY3RzP2F3YWl0IGwuZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5OnJ9KTpBLnJlY3RzKSwoe3g6dSx5OmR9PWNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KGMsZixzKSkpLG49LTEpfXJldHVybnt4OnUseTpkLHBsYWNlbWVudDpmLHN0cmF0ZWd5OnIsbWlkZGxld2FyZURhdGE6Z319KShlLHQsey4uLnIscGxhdGZvcm06aX0pfTtmdW5jdGlvbiB1bndyYXBFbGVtZW50KGUpe2lmKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiIkZWwiaW4gZX0oZSkpe2NvbnN0IHQ9ZS4kZWw7cmV0dXJuIHR9cmV0dXJuIGV9ZnVuY3Rpb24gdG9WYWx1ZSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KCk6ZS51bnJlZih0KX1mdW5jdGlvbiByb3VuZEJ5RFBSKGUsdCl7cmV0dXJuIE1hdGgucm91bmQoMSp0KS8xfWNvbnN0IEw9e3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDowLHNpZGVGbGlwOiEwLGFsaWduOiJjZW50ZXIiLGFsaWduT2Zmc2V0OjAsYWxpZ25GbGlwOiEwLGFycm93UGFkZGluZzowLGhpZGVTaGlmdGVkQXJyb3c6ITAsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OigpPT5bXSxjb2xsaXNpb25QYWRkaW5nOjAsc3RpY2t5OiJwYXJ0aWFsIixoaWRlV2hlbkRldGFjaGVkOiExLHBvc2l0aW9uU3RyYXRlZ3k6ImZpeGVkIix1cGRhdGVQb3NpdGlvblN0cmF0ZWd5OiJvcHRpbWl6ZWQiLHByaW9yaXRpemVQb3NpdGlvbjohMX0sW04sVF09cigiUG9wcGVyQ29udGVudCIpO3ZhciBEPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJQb3BwZXJDb250ZW50Iixwcm9wczplLm1lcmdlRGVmYXVsdHMoe3NpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uTH0pLGVtaXRzOlsicGxhY2VkIl0sc2V0dXAobyx7ZW1pdDpyfSl7Y29uc3QgbD1vLHM9cixjPWEoKSx7Zm9yd2FyZFJlZjp1LGN1cnJlbnRFbGVtZW50OmR9PXQoKSxmPWUucmVmKCkscD1lLnJlZigpLHt3aWR0aDpnLGhlaWdodDptfT1mdW5jdGlvbigpe2NvbnN0IHQ9ZS5yZWYoKTtyZXR1cm57d2lkdGg6ZS5jb21wdXRlZCgoKT0+dC52YWx1ZT8ud2lkdGg/PzApLGhlaWdodDplLmNvbXB1dGVkKCgpPT50LnZhbHVlPy5oZWlnaHQ/PzApfX0oKSxoPWUuY29tcHV0ZWQoKCk9Pmwuc2lkZSsoImNlbnRlciIhPT1sLmFsaWduP2AtJHtsLmFsaWdufWA6IiIpKSx5PWUuY29tcHV0ZWQoKCk9PiJudW1iZXIiPT10eXBlb2YgbC5jb2xsaXNpb25QYWRkaW5nP2wuY29sbGlzaW9uUGFkZGluZzp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjAsLi4ubC5jb2xsaXNpb25QYWRkaW5nfSksdj1lLmNvbXB1dGVkKCgpPT5BcnJheS5pc0FycmF5KGwuY29sbGlzaW9uQm91bmRhcnkpP2wuY29sbGlzaW9uQm91bmRhcnk6W2wuY29sbGlzaW9uQm91bmRhcnldKSx3PWUuY29tcHV0ZWQoKCk9Pih7cGFkZGluZzp5LnZhbHVlLGJvdW5kYXJ5OnYudmFsdWUuZmlsdGVyKGlzTm90TnVsbCksYWx0Qm91bmRhcnk6di52YWx1ZS5sZW5ndGg+MH0pKSx4PWUuY29tcHV0ZWQoKCk9Pih7bWFpbkF4aXM6bC5zaWRlRmxpcCxjcm9zc0F4aXM6bC5hbGlnbkZsaXB9KSksQT1pKCgpPT57cmV0dXJuW29mZnNldCh7bWFpbkF4aXM6bC5zaWRlT2Zmc2V0K20udmFsdWUsYWxpZ25tZW50QXhpczpsLmFsaWduT2Zmc2V0fSksbC5wcmlvcml0aXplUG9zaXRpb24mJmwuYXZvaWRDb2xsaXNpb25zJiZmbGlwKHsuLi53LnZhbHVlLC4uLngudmFsdWV9KSxsLmF2b2lkQ29sbGlzaW9ucyYmc2hpZnQoe21haW5BeGlzOiEwLGNyb3NzQXhpczohIWwucHJpb3JpdGl6ZVBvc2l0aW9uLGxpbWl0ZXI6InBhcnRpYWwiPT09bC5zdGlja3k/bGltaXRTaGlmdCgpOnZvaWQgMCwuLi53LnZhbHVlfSksIWwucHJpb3JpdGl6ZVBvc2l0aW9uJiZsLmF2b2lkQ29sbGlzaW9ucyYmZmxpcCh7Li4udy52YWx1ZSwuLi54LnZhbHVlfSksc2l6ZSh7Li4udy52YWx1ZSxhcHBseTooe2VsZW1lbnRzOmUscmVjdHM6dCxhdmFpbGFibGVXaWR0aDpuLGF2YWlsYWJsZUhlaWdodDpvfSk9Pntjb25zdHt3aWR0aDpyLGhlaWdodDppfT10LnJlZmVyZW5jZSxsPWUuZmxvYXRpbmcuc3R5bGU7bC5zZXRQcm9wZXJ0eSgiLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgiLGAke259cHhgKSxsLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQiLGAke299cHhgKSxsLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCIsYCR7cn1weGApLGwuc2V0UHJvcGVydHkoIi0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCIsYCR7aX1weGApfX0pLHAudmFsdWUmJihlPXtlbGVtZW50OnAudmFsdWUscGFkZGluZzpsLmFycm93UGFkZGluZ30se25hbWU6ImFycm93IixvcHRpb25zOmUsZm4odCl7Y29uc3Qgbj11bndyYXBFbGVtZW50KHRvVmFsdWUoZS5lbGVtZW50KSk7cmV0dXJuIG51bGw9PW4/e306YXJyb3ckMSh7ZWxlbWVudDpuLHBhZGRpbmc6ZS5wYWRkaW5nfSkuZm4odCl9fSksdHJhbnNmb3JtT3JpZ2luKHthcnJvd1dpZHRoOmcudmFsdWUsYXJyb3dIZWlnaHQ6bS52YWx1ZX0pLGwuaGlkZVdoZW5EZXRhY2hlZCYmaGlkZSh7c3RyYXRlZ3k6InJlZmVyZW5jZUhpZGRlbiIsLi4udy52YWx1ZX0pXTt2YXIgZX0pLGI9ZS5jb21wdXRlZCgoKT0+bC5yZWZlcmVuY2U/P2MuYW5jaG9yLnZhbHVlKSx7ZmxvYXRpbmdTdHlsZXM6UyxwbGFjZW1lbnQ6Tyxpc1Bvc2l0aW9uZWQ6UCxtaWRkbGV3YXJlRGF0YTpDfT1mdW5jdGlvbih0LG4sbyl7dm9pZCAwPT09byYmKG89e30pO2NvbnN0IHI9by53aGlsZUVsZW1lbnRzTW91bnRlZCxpPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4gbnVsbD09KGU9dG9WYWx1ZShvLm9wZW4pKXx8ZX0pLGw9ZS5jb21wdXRlZCgoKT0+dG9WYWx1ZShvLm1pZGRsZXdhcmUpKSxhPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dG9WYWx1ZShvLnBsYWNlbWVudCkpP2U6ImJvdHRvbSJ9KSxzPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dG9WYWx1ZShvLnN0cmF0ZWd5KSk/ZToiYWJzb2x1dGUifSksYz1lLmNvbXB1dGVkKCgpPT57dmFyIGU7cmV0dXJuIG51bGw9PShlPXRvVmFsdWUoby50cmFuc2Zvcm0pKXx8ZX0pLHU9ZS5jb21wdXRlZCgoKT0+dW53cmFwRWxlbWVudCh0LnZhbHVlKSksZD1lLmNvbXB1dGVkKCgpPT51bndyYXBFbGVtZW50KG4udmFsdWUpKSxmPWUucmVmKDApLHA9ZS5yZWYoMCksZz1lLnJlZihzLnZhbHVlKSxtPWUucmVmKGEudmFsdWUpLGg9ZS5zaGFsbG93UmVmKHt9KSx5PWUucmVmKCExKSx2PWUuY29tcHV0ZWQoKCk9Pntjb25zdCBlPXtwb3NpdGlvbjpnLnZhbHVlLGxlZnQ6IjAiLHRvcDoiMCJ9O2lmKCFkLnZhbHVlKXJldHVybiBlO2NvbnN0IHQ9cm91bmRCeURQUihkLnZhbHVlLGYudmFsdWUpLG49cm91bmRCeURQUihkLnZhbHVlLHAudmFsdWUpO3JldHVybiBjLnZhbHVlP3suLi5lLHRyYW5zZm9ybToidHJhbnNsYXRlKCIrdCsicHgsICIrbisicHgpIiwuLi4oZC52YWx1ZSwhMSl9Ontwb3NpdGlvbjpnLnZhbHVlLGxlZnQ6dCsicHgiLHRvcDpuKyJweCJ9fSk7bGV0IHc7ZnVuY3Rpb24gdXBkYXRlKCl7aWYobnVsbD09dS52YWx1ZXx8bnVsbD09ZC52YWx1ZSlyZXR1cm47Y29uc3QgZT1pLnZhbHVlO2NvbXB1dGVQb3NpdGlvbih1LnZhbHVlLGQudmFsdWUse21pZGRsZXdhcmU6bC52YWx1ZSxwbGFjZW1lbnQ6YS52YWx1ZSxzdHJhdGVneTpzLnZhbHVlfSkudGhlbih0PT57Zi52YWx1ZT10LngscC52YWx1ZT10LnksZy52YWx1ZT10LnN0cmF0ZWd5LG0udmFsdWU9dC5wbGFjZW1lbnQsaC52YWx1ZT10Lm1pZGRsZXdhcmVEYXRhLHkudmFsdWU9ITEhPT1lfSl9ZnVuY3Rpb24gY2xlYW51cCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3JiYodygpLHc9dm9pZCAwKX1yZXR1cm4gZS53YXRjaChbbCxhLHMsaV0sdXBkYXRlLHtmbHVzaDoic3luYyJ9KSxlLndhdGNoKFt1LGRdLGZ1bmN0aW9uKCl7Y2xlYW51cCgpLHZvaWQgMCE9PXI/bnVsbD09dS52YWx1ZXx8bnVsbD09ZC52YWx1ZXx8KHc9cih1LnZhbHVlLGQudmFsdWUsdXBkYXRlKSk6dXBkYXRlKCl9LHtmbHVzaDoic3luYyJ9KSxlLndhdGNoKGksZnVuY3Rpb24oKXtpLnZhbHVlfHwoeS52YWx1ZT0hMSl9LHtmbHVzaDoic3luYyJ9KSxlLmdldEN1cnJlbnRTY29wZSgpJiZlLm9uU2NvcGVEaXNwb3NlKGNsZWFudXApLHt4OmUuc2hhbGxvd1JlYWRvbmx5KGYpLHk6ZS5zaGFsbG93UmVhZG9ubHkocCksc3RyYXRlZ3k6ZS5zaGFsbG93UmVhZG9ubHkoZykscGxhY2VtZW50OmUuc2hhbGxvd1JlYWRvbmx5KG0pLG1pZGRsZXdhcmVEYXRhOmUuc2hhbGxvd1JlYWRvbmx5KGgpLGlzUG9zaXRpb25lZDplLnNoYWxsb3dSZWFkb25seSh5KSxmbG9hdGluZ1N0eWxlczp2LHVwZGF0ZTp1cGRhdGV9fShiLGYse3N0cmF0ZWd5OmwucG9zaXRpb25TdHJhdGVneSxwbGFjZW1lbnQ6aCx3aGlsZUVsZW1lbnRzTW91bnRlZDooLi4uZSk9PmF1dG9VcGRhdGUoLi4uZSx7bGF5b3V0U2hpZnQ6IWwuZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQsYW5pbWF0aW9uRnJhbWU6ImFsd2F5cyI9PT1sLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3l9KSxtaWRkbGV3YXJlOkF9KSxSPWUuY29tcHV0ZWQoKCk9PmdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQoTy52YWx1ZSlbMF0pLEU9ZS5jb21wdXRlZCgoKT0+Z2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChPLnZhbHVlKVsxXSk7ZS53YXRjaFBvc3RFZmZlY3QoKCk9PntQLnZhbHVlJiZzKCJwbGFjZWQiKX0pO2NvbnN0IEI9ZS5jb21wdXRlZCgoKT0+e2NvbnN0IGU9MCE9PUMudmFsdWUuYXJyb3c/LmNlbnRlck9mZnNldDtyZXR1cm4gbC5oaWRlU2hpZnRlZEFycm93JiZlfSksTD1lLnJlZigiIik7ZS53YXRjaEVmZmVjdCgoKT0+e2QudmFsdWUmJihMLnZhbHVlPSh2b2lkIDApLmdldENvbXB1dGVkU3R5bGUoZC52YWx1ZSkuekluZGV4KX0pO2NvbnN0IE49ZS5jb21wdXRlZCgoKT0+Qy52YWx1ZS5hcnJvdz8ueD8/MCksRD1lLmNvbXB1dGVkKCgpPT5DLnZhbHVlLmFycm93Py55Pz8wKTtyZXR1cm4gVCh7cGxhY2VkU2lkZTpSLG9uQXJyb3dDaGFuZ2U6ZT0+cC52YWx1ZT1lLGFycm93WDpOLGFycm93WTpELHNob3VsZEhpZGVBcnJvdzpCfSksKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJkaXYiLHtyZWZfa2V5OiJmbG9hdGluZ1JlZiIscmVmOmYsImRhdGEtcmVrYS1wb3BwZXItY29udGVudC13cmFwcGVyIjoiIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHsuLi5lLnVucmVmKFMpLHRyYW5zZm9ybTplLnVucmVmKFApP2UudW5yZWYoUykudHJhbnNmb3JtOiJ0cmFuc2xhdGUoMCwgLTIwMCUpIixtaW5XaWR0aDoibWF4LWNvbnRlbnQiLHpJbmRleDpMLnZhbHVlLCItLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4iOltlLnVucmVmKEMpLnRyYW5zZm9ybU9yaWdpbj8ueCxlLnVucmVmKEMpLnRyYW5zZm9ybU9yaWdpbj8ueV0uam9pbigiICIpLC4uLmUudW5yZWYoQykuaGlkZT8ucmVmZXJlbmNlSGlkZGVuJiZ7dmlzaWJpbGl0eToiaGlkZGVuIixwb2ludGVyRXZlbnRzOiJub25lIn19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihuKSxlLm1lcmdlUHJvcHMoe3JlZjplLnVucmVmKHUpfSx0LiRhdHRycyx7ImFzLWNoaWxkIjpsLmFzQ2hpbGQsYXM6dC5hcywiZGF0YS1zaWRlIjpSLnZhbHVlLCJkYXRhLWFsaWduIjpFLnZhbHVlLHN0eWxlOnthbmltYXRpb246ZS51bnJlZihQKT92b2lkIDA6Im5vbmUifX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzLWNoaWxkIiwiYXMiLCJkYXRhLXNpZGUiLCJkYXRhLWFsaWduIiwic3R5bGUiXSldLDQpKX19KTtjb25zdCBGPXt0b3A6ImJvdHRvbSIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCJ9O3ZhciBrPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJQb3BwZXJBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKG4pe2NvbnN0e2ZvcndhcmRSZWY6b309dCgpLHI9TigpLGk9ZS5jb21wdXRlZCgoKT0+RltyLnBsYWNlZFNpZGUudmFsdWVdKTtyZXR1cm4odCxuKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soInNwYW4iLHtyZWY6dD0+e2UudW5yZWYocikub25BcnJvd0NoYW5nZSh0Pz92b2lkIDApfSxzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6ZS51bnJlZihyKS5hcnJvd1g/LnZhbHVlP2Ake2UudW5yZWYocikuYXJyb3dYPy52YWx1ZX1weGA6dm9pZCAwLHRvcDplLnVucmVmKHIpLmFycm93WT8udmFsdWU/YCR7ZS51bnJlZihyKS5hcnJvd1k/LnZhbHVlfXB4YDp2b2lkIDAsW2kudmFsdWVdOjAsdHJhbnNmb3JtT3JpZ2luOnt0b3A6IiIscmlnaHQ6IjAgMCIsYm90dG9tOiJjZW50ZXIgMCIsbGVmdDoiMTAwJSAwIn1bZS51bnJlZihyKS5wbGFjZWRTaWRlLnZhbHVlXSx0cmFuc2Zvcm06e3RvcDoidHJhbnNsYXRlWSgxMDAlKSIscmlnaHQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoOTBkZWcpIHRyYW5zbGF0ZVgoLTUwJSkiLGJvdHRvbToicm90YXRlKDE4MGRlZykiLGxlZnQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSkifVtlLnVucmVmKHIpLnBsYWNlZFNpZGUudmFsdWVdLHZpc2liaWxpdHk6ZS51bnJlZihyKS5zaG91bGRIaWRlQXJyb3cudmFsdWU/ImhpZGRlbiI6dm9pZCAwfSl9LFtlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHQuJGF0dHJzLHtyZWY6ZS51bnJlZihvKSxzdHlsZTp7ZGlzcGxheToiYmxvY2sifSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLHJvdW5kZWQ6dC5yb3VuZGVkLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCIsInJvdW5kZWQiLCJ3aWR0aCIsImhlaWdodCJdKV0sNCkpfX0pO2V4cG9ydHt1IGFzIFAsayBhcyBhLGMgYXMgYix1c2VGb2N1c0d1YXJkcyBhcyBjLEQgYXMgZCxMIGFzIGUsZ2V0TmV4dE1hdGNoIGFzIGcsdXNlVHlwZWFoZWFkIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD1Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMubWFwCg==", "chunks/build/RovingFocusGroup-BraqCXH_.mjs": "aW1wb3J0e20gYXMgZSx2IGFzIHQsUyBhcyBvLE4gYXMgcixQIGFzIGF9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHt1IGFzIG59ZnJvbSIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydHtmIGFzIHUsRSBhcyBpLGEgYXMgbH1mcm9tIi4vdXRpbHMtREluN0VMWVYubWpzIjtjb25zdFtkLHNdPWUoIlJvdmluZ0ZvY3VzR3JvdXAiKTt2YXIgYz10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJSb3ZpbmdGb2N1c0dyb3VwIixwcm9wczp7b3JpZW50YXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sY3VycmVudFRhYlN0b3BJZDp7dHlwZTpbU3RyaW5nLG51bGxdLHJlcXVpcmVkOiExfSxkZWZhdWx0Q3VycmVudFRhYlN0b3BJZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVudHJ5Rm9jdXMiLCJ1cGRhdGU6Y3VycmVudFRhYlN0b3BJZCJdLHNldHVwKGUse2V4cG9zZTpkLGVtaXQ6Y30pe2NvbnN0IHA9ZSxmPWMse2xvb3A6dixvcmllbnRhdGlvbjptLGRpcjpTfT10LnRvUmVmcyhwKSxnPW4oUyksYj1vKHAsImN1cnJlbnRUYWJTdG9wSWQiLGYse2RlZmF1bHRWYWx1ZTpwLmRlZmF1bHRDdXJyZW50VGFiU3RvcElkLHBhc3NpdmU6dm9pZCAwPT09cC5jdXJyZW50VGFiU3RvcElkfSksaD10LnJlZighMSksST10LnJlZighMSkseT10LnJlZigwKSx7Z2V0SXRlbXM6RixDb2xsZWN0aW9uU2xvdDpUfT1yKHtpc1Byb3ZpZGVyOiEwfSk7ZnVuY3Rpb24gaGFuZGxlRm9jdXMoZSl7Y29uc3QgdD0hSS52YWx1ZTtpZihlLmN1cnJlbnRUYXJnZXQmJmUudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0JiZ0JiYhaC52YWx1ZSl7Y29uc3QgdD1uZXcgQ3VzdG9tRXZlbnQoaSxsKTtpZihlLmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudCh0KSxmKCJlbnRyeUZvY3VzIix0KSwhdC5kZWZhdWx0UHJldmVudGVkKXtjb25zdCBlPUYoKS5tYXAoZT0+ZS5yZWYpLmZpbHRlcihlPT4iIiE9PWUuZGF0YXNldC5kaXNhYmxlZCksdD1bZS5maW5kKGU9PiIiPT09ZS5nZXRBdHRyaWJ1dGUoImRhdGEtYWN0aXZlIikpLGUuZmluZChlPT4iIj09PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWhpZ2hsaWdodGVkIikpLGUuZmluZChlPT5lLmlkPT09Yi52YWx1ZSksLi4uZV0uZmlsdGVyKEJvb2xlYW4pO3UodCxwLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpfX1JLnZhbHVlPSExfWZ1bmN0aW9uIGhhbmRsZU1vdXNlVXAoKXtzZXRUaW1lb3V0KCgpPT57SS52YWx1ZT0hMX0sMSl9cmV0dXJuIGQoe2dldEl0ZW1zOkZ9KSxzKHtsb29wOnYsZGlyOmcsb3JpZW50YXRpb246bSxjdXJyZW50VGFiU3RvcElkOmIsb25JdGVtRm9jdXM6ZT0+e2IudmFsdWU9ZX0sb25JdGVtU2hpZnRUYWI6KCk9PntoLnZhbHVlPSEwfSxvbkZvY3VzYWJsZUl0ZW1BZGQ6KCk9Pnt5LnZhbHVlKyt9LG9uRm9jdXNhYmxlSXRlbVJlbW92ZTooKT0+e3kudmFsdWUtLX19KSwoZSxvKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKFQpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGEpLHt0YWJpbmRleDpoLnZhbHVlfHwwPT09eS52YWx1ZT8tMTowLCJkYXRhLW9yaWVudGF0aW9uIjp0LnVucmVmKG0pLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsZGlyOnQudW5yZWYoZyksc3R5bGU6e291dGxpbmU6Im5vbmUifSxvbk1vdXNlZG93bjpvWzBdfHwob1swXT1lPT5JLnZhbHVlPSEwKSxvbk1vdXNldXA6aGFuZGxlTW91c2VVcCxvbkZvY3VzOmhhbmRsZUZvY3VzLG9uQmx1cjpvWzFdfHwob1sxXT1lPT5oLnZhbHVlPSExKX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0YWJpbmRleCIsImRhdGEtb3JpZW50YXRpb24iLCJhcyIsImFzLWNoaWxkIiwiZGlyIl0pXSksXzozfSkpfX0pO2V4cG9ydHtjIGFzIFIsZCBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Um92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMubWFwCg==", "chunks/build/Select-DiailfUc.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBhLEUgYXMgbCxGIGFzIGksRyBhcyByLEggYXMgbixxIGFzIG8scyx0IGFzIHUsSSBhcyBjLGIgYXMgZCxnIGFzIHAsSiBhcyBtLEsgYXMgZixMIGFzIGcsTSBhcyB2LE4gYXMgeSxQIGFzIGgsTyBhcyBTLFQgYXMgayxRIGFzIHgsUiBhcyBiLFMgYXMgSSxVIGFzIEIsbSBhcyBDLGwgYXMgTCxWIGFzIHcsVyBhcyBxLFggYXMgVixZIGFzIHosWiBhcyBffWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBUfWZyb20iLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnR7dSBhcyBOfWZyb20iLi91c2VGb3JtQ29udHJvbC1CTS1NZldtby5tanMiO2ltcG9ydHt1IGFzIEEsUCBhcyAkLGEgYXMgUCxiIGFzIEQsYyBhcyBLLGQgYXMgRX1mcm9tIi4vUG9wcGVyQXJyb3ctQkV5V1VKaVEubWpzIjtpbXBvcnR7dSBhcyBPLGEgYXMgUixiIGFzIEYsRiBhcyBXLEQgYXMgTSxmIGFzIGp9ZnJvbSIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0e2ggYXMgVX1mcm9tIi4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydHthRSBhcyBILGFYIGFzIEd9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt1IGFzIFl9ZnJvbSIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnR7ZiBhcyBYLGogYXMgSixnIGFzIFEsdCBhcyBaLHEgYXMgZWUsayBhcyB0ZX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2Z1bmN0aW9uIGNsYW1wKGUsdD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe3JldHVybiBNYXRoLm1pbihhLE1hdGgubWF4KHQsZSkpfWNvbnN0IGFlPVsiICIsIkVudGVyIiwiQXJyb3dVcCIsIkFycm93RG93biJdLGxlPVsiICIsIkVudGVyIl0saWU9MTA7ZnVuY3Rpb24gdmFsdWVDb21wYXJhdG9yKGUsdCxhKXtyZXR1cm4gdm9pZCAwIT09ZSYmKEFycmF5LmlzQXJyYXkoZSk/ZS5zb21lKGU9PmNvbXBhcmUoZSx0LGEpKTpjb21wYXJlKGUsdCxhKSl9ZnVuY3Rpb24gY29tcGFyZShlLHQsYSl7cmV0dXJuIHZvaWQgMCE9PWUmJnZvaWQgMCE9PXQmJigic3RyaW5nIj09dHlwZW9mIGU/ZT09PXQ6ImZ1bmN0aW9uIj09dHlwZW9mIGE/YShlLHQpOiJzdHJpbmciPT10eXBlb2YgYT9lPy5bYV09PT10Py5bYV06RyhlLHQpKX1mdW5jdGlvbiBzaG91bGRTaG93UGxhY2Vob2xkZXIoZSl7cmV0dXJuIG51bGw9PWV8fCIiPT09ZXx8QXJyYXkuaXNBcnJheShlKSYmMD09PWUubGVuZ3RofWNvbnN0IHJlPXtrZXk6MCx2YWx1ZToiIn0sW25lLG9lXT1DKCJTZWxlY3RSb290Iik7dmFyIHNlPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJTZWxlY3RSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm9wZW4iXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQsaT1hLHtyZXF1aXJlZDpyLGRpc2FibGVkOm4sbXVsdGlwbGU6byxkaXI6c309ZS50b1JlZnMobCksdT1JKGwsIm1vZGVsVmFsdWUiLGkse2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRWYWx1ZT8/KG8udmFsdWU/W106dm9pZCAwKSxwYXNzaXZlOnZvaWQgMD09PWwubW9kZWxWYWx1ZSxkZWVwOiEwfSksYz1JKGwsIm9wZW4iLGkse2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09bC5vcGVufSksZD1lLnJlZigpLHA9ZS5yZWYoKSxtPWUucmVmKHt4OjAseTowfSksZj1lLmNvbXB1dGVkKCgpPT5vLnZhbHVlJiZBcnJheS5pc0FycmF5KHUudmFsdWUpPzA9PT11LnZhbHVlPy5sZW5ndGg6Qih1LnZhbHVlKSk7eSh7aXNQcm92aWRlcjohMH0pO2NvbnN0IGc9VChzKSx2PU4oZCksaD1lLnJlZihuZXcgU2V0KSxTPWUuY29tcHV0ZWQoKCk9PkFycmF5LmZyb20oaC52YWx1ZSkubWFwKGU9PmUudmFsdWUpLmpvaW4oIjsiKSk7ZnVuY3Rpb24gZ2V0T3B0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKGgudmFsdWUpLmZpbmQodD0+dmFsdWVDb21wYXJhdG9yKGUsdC52YWx1ZSxsLmJ5KSl9cmV0dXJuIG9lKHt0cmlnZ2VyRWxlbWVudDpkLG9uVHJpZ2dlckNoYW5nZTplPT57ZC52YWx1ZT1lfSx2YWx1ZUVsZW1lbnQ6cCxvblZhbHVlRWxlbWVudENoYW5nZTplPT57cC52YWx1ZT1lfSxjb250ZW50SWQ6IiIsbW9kZWxWYWx1ZTp1LG9uVmFsdWVDaGFuZ2U6ZnVuY3Rpb24oZSl7aWYoby52YWx1ZSl7Y29uc3QgdD1BcnJheS5pc0FycmF5KHUudmFsdWUpP1suLi51LnZhbHVlXTpbXSxhPXQuZmluZEluZGV4KHQ9PmNvbXBhcmUodCxlLGwuYnkpKTstMT09PWE/dC5wdXNoKGUpOnQuc3BsaWNlKGEsMSksdS52YWx1ZT1bLi4udF19ZWxzZSB1LnZhbHVlPWV9LGJ5OmwuYnksb3BlbjpjLG11bHRpcGxlOm8scmVxdWlyZWQ6cixvbk9wZW5DaGFuZ2U6ZT0+e2MudmFsdWU9ZX0sZGlyOmcsdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOm0sZGlzYWJsZWQ6bixpc0VtcHR5TW9kZWxWYWx1ZTpmLG9wdGlvbnNTZXQ6aCxvbk9wdGlvbkFkZDplPT57Y29uc3QgdD1nZXRPcHRpb24oZS52YWx1ZSk7dCYmaC52YWx1ZS5kZWxldGUodCksaC52YWx1ZS5hZGQoZSl9LG9uT3B0aW9uUmVtb3ZlOmU9Pntjb25zdCB0PWdldE9wdGlvbihlLnZhbHVlKTt0JiZoLnZhbHVlLmRlbGV0ZSh0KX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEQpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKHUpLG9wZW46ZS51bnJlZihjKX0pLGUudW5yZWYodikmJnQubmFtZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHVlLHtrZXk6Uy52YWx1ZSwiYXJpYS1oaWRkZW4iOiJ0cnVlIix0YWJpbmRleDoiLTEiLG11bHRpcGxlOmUudW5yZWYobykscmVxdWlyZWQ6ZS51bnJlZihyKSxuYW1lOnQubmFtZSxhdXRvY29tcGxldGU6dC5hdXRvY29tcGxldGUsZGlzYWJsZWQ6ZS51bnJlZihuKSx2YWx1ZTplLnVucmVmKHUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKEIpKGUudW5yZWYodSkpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJvcHRpb24iLHJlKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoQXJyYXkuZnJvbShoLnZhbHVlKSx0PT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jaygib3B0aW9uIixlLm1lcmdlUHJvcHMoe2tleTp0LnZhbHVlPz8iIn0se3JlZl9mb3I6ITB9LHQpLG51bGwsMTYpKSksMTI4KSldKSxfOjF9LDgsWyJtdWx0aXBsZSIsInJlcXVpcmVkIiwibmFtZSIsImF1dG9jb21wbGV0ZSIsImRpc2FibGVkIiwidmFsdWUiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCldKSxfOjN9KSl9fSksdWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQnViYmxlU2VsZWN0Iixwcm9wczp7YXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcm06e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1lLnJlZigpLGk9bmUoKTtmdW5jdGlvbiBoYW5kbGVJbnB1dChlKXtpLm9uVmFsdWVDaGFuZ2UoZS50YXJnZXQudmFsdWUpfXJldHVybiBlLndhdGNoKCgpPT5hLnZhbHVlLChlLHQpPT57Y29uc3QgYT0odm9pZCAwKS5IVE1MU2VsZWN0RWxlbWVudC5wcm90b3R5cGUsaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsInZhbHVlIikuc2V0O2lmKGUhPT10JiZpJiZsLnZhbHVlKXtjb25zdCB0PW5ldyBFdmVudCgiY2hhbmdlIix7YnViYmxlczohMH0pO2kuY2FsbChsLnZhbHVlLGUpLGwudmFsdWUuZGlzcGF0Y2hFdmVudCh0KX19KSwodCxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHopLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZUVsZW1lbnRWTm9kZSgic2VsZWN0IixlLm1lcmdlUHJvcHMoe3JlZl9rZXk6InNlbGVjdEVsZW1lbnQiLHJlZjpsfSxhLHtvbklucHV0OmhhbmRsZUlucHV0fSksW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSwxNildKSxfOjN9KSl9fSksY2U9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0UG9wcGVyUG9zaXRpb24iLHByb3BzOntzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN0YXJ0In0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6aWV9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT1MKHQpO3JldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRSksZS5tZXJnZVByb3BzKGUudW5yZWYoYSkse3N0eWxlOntib3hTaXppbmc6ImJvcmRlci1ib3giLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbiI6InZhcigtLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pIiwiLS1yZWthLXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLXdpZHRoKSIsIi0tcmVrYS1zZWxlY3QtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3QgZGU9e29uVmlld3BvcnRDaGFuZ2U6KCk9Pnt9LGl0ZW1UZXh0UmVmQ2FsbGJhY2s6KCk9Pnt9LGl0ZW1SZWZDYWxsYmFjazooKT0+e319LFtwZSxtZV09QygiU2VsZWN0Q29udGVudCIpO3ZhciBmZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RDb250ZW50SW1wbCIscHJvcHM6e3Bvc2l0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJpdGVtLWFsaWduZWQifSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3RhcnQifSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJjbG9zZUF1dG9Gb2N1cyIsImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQsaT1hLHI9bmUoKTtLKCksUihsLmJvZHlMb2NrKTtjb25zdHtDb2xsZWN0aW9uU2xvdDpuLGdldEl0ZW1zOm99PXkoKSxzPWUucmVmKCk7RihzKTtjb25zdHtzZWFyY2g6dSxoYW5kbGVUeXBlYWhlYWRTZWFyY2g6Y309QSgpLGQ9ZS5yZWYoKSxwPWUucmVmKCksbT1lLnJlZigpLGY9ZS5yZWYoITEpLGc9ZS5yZWYoITEpLHY9ZS5yZWYoITEpO2Z1bmN0aW9uIGZvY3VzU2VsZWN0ZWRJdGVtKCl7cC52YWx1ZSYmcy52YWx1ZSYmaihbcC52YWx1ZSxzLnZhbHVlXSl9ZS53YXRjaChmLCgpPT57Zm9jdXNTZWxlY3RlZEl0ZW0oKX0pO2NvbnN0e29uT3BlbkNoYW5nZTpoLHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjpTfT1yO2Z1bmN0aW9uIGhhbmRsZUtleURvd24oZSl7Y29uc3QgdD1lLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXk7aWYoIlRhYiI9PT1lLmtleSYmZS5wcmV2ZW50RGVmYXVsdCgpLHR8fDEhPT1lLmtleS5sZW5ndGh8fGMoZS5rZXksbygpKSxbIkFycm93VXAiLCJBcnJvd0Rvd24iLCJIb21lIiwiRW5kIl0uaW5jbHVkZXMoZS5rZXkpKXtsZXQgdD1bLi4ubygpLm1hcChlPT5lLnJlZildO2lmKFsiQXJyb3dVcCIsIkVuZCJdLmluY2x1ZGVzKGUua2V5KSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSksWyJBcnJvd1VwIiwiQXJyb3dEb3duIl0uaW5jbHVkZXMoZS5rZXkpKXtjb25zdCBhPWUudGFyZ2V0LGw9dC5pbmRleE9mKGEpO3Q9dC5zbGljZShsKzEpfXNldFRpbWVvdXQoKCk9PmoodCkpLGUucHJldmVudERlZmF1bHQoKX19ZS53YXRjaEVmZmVjdChlPT57aWYoIXMudmFsdWUpcmV0dXJuO2xldCB0PXt4OjAseTowfTtjb25zdCBoYW5kbGVQb2ludGVyTW92ZT1lPT57dD17eDpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVgpLShTLnZhbHVlPy54Pz8wKSkseTpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVkpLShTLnZhbHVlPy55Pz8wKSl9fSxoYW5kbGVQb2ludGVyVXA9ZT0+eyJ0b3VjaCIhPT1lLnBvaW50ZXJUeXBlJiYodC54PD0xMCYmdC55PD0xMD9lLnByZXZlbnREZWZhdWx0KCk6cy52YWx1ZT8uY29udGFpbnMoZS50YXJnZXQpfHxoKCExKSwodm9pZCAwKS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUG9pbnRlck1vdmUpLFMudmFsdWU9bnVsbCl9O251bGwhPT1TLnZhbHVlJiYoKHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGhhbmRsZVBvaW50ZXJNb3ZlKSwodm9pZCAwKS5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLGhhbmRsZVBvaW50ZXJVcCx7Y2FwdHVyZTohMCxvbmNlOiEwfSkpLGUoKCk9Pnsodm9pZCAwKS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUG9pbnRlck1vdmUpLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsaGFuZGxlUG9pbnRlclVwLHtjYXB0dXJlOiEwfSl9KX0pO2NvbnN0IGs9ZS5jb21wdXRlZCgoKT0+InBvcHBlciI9PT1sLnBvc2l0aW9uP2w6e30pLHg9TChrLnZhbHVlKTtyZXR1cm4gbWUoe2NvbnRlbnQ6cyx2aWV3cG9ydDpkLG9uVmlld3BvcnRDaGFuZ2U6ZT0+e2QudmFsdWU9ZX0saXRlbVJlZkNhbGxiYWNrOihlLHQsYSk9Pntjb25zdCBsPSFnLnZhbHVlJiYhYSxpPXZhbHVlQ29tcGFyYXRvcihyLm1vZGVsVmFsdWUudmFsdWUsdCxyLmJ5KTtpZihyLm11bHRpcGxlLnZhbHVlKXtpZih2LnZhbHVlKXJldHVybjsoaXx8bCkmJihwLnZhbHVlPWUsaSYmKHYudmFsdWU9ITApKX1lbHNlKGl8fGwpJiYocC52YWx1ZT1lKTtsJiYoZy52YWx1ZT0hMCl9LHNlbGVjdGVkSXRlbTpwLHNlbGVjdGVkSXRlbVRleHQ6bSxvbkl0ZW1MZWF2ZTooKT0+e3MudmFsdWU/LmZvY3VzKCl9LGl0ZW1UZXh0UmVmQ2FsbGJhY2s6KGUsdCxhKT0+e2NvbnN0IGw9IWcudmFsdWUmJiFhOyh2YWx1ZUNvbXBhcmF0b3Ioci5tb2RlbFZhbHVlLnZhbHVlLHQsci5ieSl8fGwpJiYobS52YWx1ZT1lKX0sZm9jdXNTZWxlY3RlZEl0ZW06Zm9jdXNTZWxlY3RlZEl0ZW0scG9zaXRpb246bC5wb3NpdGlvbixpc1Bvc2l0aW9uZWQ6ZixzZWFyY2hSZWY6dX0pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobiksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVykseyJhcy1jaGlsZCI6IiIsb25Nb3VudEF1dG9Gb2N1czphWzZdfHwoYVs2XT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25Vbm1vdW50QXV0b0ZvY3VzOmFbN118fChhWzddPXQ9PntpKCJjbG9zZUF1dG9Gb2N1cyIsdCksdC5kZWZhdWx0UHJldmVudGVkfHwoZS51bnJlZihyKS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSx0LnByZXZlbnREZWZhdWx0KCkpfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihNKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0LmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkZvY3VzT3V0c2lkZTphWzJdfHwoYVsyXT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25EaXNtaXNzOmFbM118fChhWzNdPXQ9PmUudW5yZWYocikub25PcGVuQ2hhbmdlKCExKSksb25Fc2NhcGVLZXlEb3duOmFbNF18fChhWzRdPWU9PmkoImVzY2FwZUtleURvd24iLGUpKSxvblBvaW50ZXJEb3duT3V0c2lkZTphWzVdfHwoYVs1XT1lPT5pKCJwb2ludGVyRG93bk91dHNpZGUiLGUpKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJwb3BwZXIiPT09dC5wb3NpdGlvbj9jZTp5ZSksZS5tZXJnZVByb3BzKHsuLi50LiRhdHRycywuLi5lLnVucmVmKHgpfSx7aWQ6ZS51bnJlZihyKS5jb250ZW50SWQscmVmOnQ9PntpZighdClyZXR1cm47Y29uc3QgYT1lLnVucmVmKHcpKHQpO2E/Lmhhc0F0dHJpYnV0ZSgiZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXIiKT9zLnZhbHVlPWEuZmlyc3RFbGVtZW50Q2hpbGQ6cy52YWx1ZT1hfSxyb2xlOiJsaXN0Ym94IiwiZGF0YS1zdGF0ZSI6ZS51bnJlZihyKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixkaXI6ZS51bnJlZihyKS5kaXIudmFsdWUsc3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsb3V0bGluZToibm9uZSJ9LG9uQ29udGV4dG1lbnU6YVswXXx8KGFbMF09ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiXSkpLG9uUGxhY2VkOmFbMV18fChhWzFdPWU9PmYudmFsdWU9ITApLG9uS2V5ZG93bjpoYW5kbGVLZXlEb3dufSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJkYXRhLXN0YXRlIiwiZGlyIiwib25LZXlkb3duIl0pKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30pXSksXzozfSkpfX0pO2NvbnN0W2dlLHZlXT1DKCJTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIik7dmFyIHllPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJwbGFjZWQiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQsaT1hLHtnZXRJdGVtczpyfT15KCksbj1uZSgpLG89cGUoKSxzPWUucmVmKCExKSx1PWUucmVmKCEwKSxjPWUucmVmKCkse2ZvcndhcmRSZWY6ZCxjdXJyZW50RWxlbWVudDpwfT12KCkse3ZpZXdwb3J0Om0sc2VsZWN0ZWRJdGVtOmYsc2VsZWN0ZWRJdGVtVGV4dDpnLGZvY3VzU2VsZWN0ZWRJdGVtOlN9PW87ZnVuY3Rpb24gcG9zaXRpb24oKXtpZihuLnRyaWdnZXJFbGVtZW50LnZhbHVlJiZuLnZhbHVlRWxlbWVudC52YWx1ZSYmYy52YWx1ZSYmcC52YWx1ZSYmbT8udmFsdWUmJmY/LnZhbHVlJiZnPy52YWx1ZSl7Y29uc3QgZT1uLnRyaWdnZXJFbGVtZW50LnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9cC52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPW4udmFsdWVFbGVtZW50LnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9Zy52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZigicnRsIiE9PW4uZGlyLnZhbHVlKXtjb25zdCBpPWwubGVmdC10LmxlZnQscj1hLmxlZnQtaSxuPWUubGVmdC1yLG89ZS53aWR0aCtuLHM9TWF0aC5tYXgobyx0LndpZHRoKSx1PSh2b2lkIDApLmlubmVyV2lkdGgtaWUsZD1jbGFtcChyLGllLE1hdGgubWF4KGllLHUtcykpO2MudmFsdWUuc3R5bGUubWluV2lkdGg9YCR7b31weGAsYy52YWx1ZS5zdHlsZS5sZWZ0PWAke2R9cHhgfWVsc2V7Y29uc3QgaT10LnJpZ2h0LWwucmlnaHQscj0odm9pZCAwKS5pbm5lcldpZHRoLWEucmlnaHQtaSxuPSh2b2lkIDApLmlubmVyV2lkdGgtZS5yaWdodC1yLG89ZS53aWR0aCtuLHM9TWF0aC5tYXgobyx0LndpZHRoKSx1PSh2b2lkIDApLmlubmVyV2lkdGgtaWUsZD1jbGFtcChyLGllLE1hdGgubWF4KGllLHUtcykpO2MudmFsdWUuc3R5bGUubWluV2lkdGg9YCR7b31weGAsYy52YWx1ZS5zdHlsZS5yaWdodD1gJHtkfXB4YH1jb25zdCBvPXIoKS5tYXAoZT0+ZS5yZWYpLHU9KHZvaWQgMCkuaW5uZXJIZWlnaHQtMjAsZD1tLnZhbHVlLnNjcm9sbEhlaWdodCx2PSh2b2lkIDApLmdldENvbXB1dGVkU3R5bGUocC52YWx1ZSkseT1OdW1iZXIucGFyc2VJbnQodi5ib3JkZXJUb3BXaWR0aCwxMCksaD1OdW1iZXIucGFyc2VJbnQodi5wYWRkaW5nVG9wLDEwKSxTPU51bWJlci5wYXJzZUludCh2LmJvcmRlckJvdHRvbVdpZHRoLDEwKSxrPXkraCtkK051bWJlci5wYXJzZUludCh2LnBhZGRpbmdCb3R0b20sMTApK1MseD1NYXRoLm1pbig1KmYudmFsdWUub2Zmc2V0SGVpZ2h0LGspLGI9KHZvaWQgMCkuZ2V0Q29tcHV0ZWRTdHlsZShtLnZhbHVlKSxJPU51bWJlci5wYXJzZUludChiLnBhZGRpbmdUb3AsMTApLEI9TnVtYmVyLnBhcnNlSW50KGIucGFkZGluZ0JvdHRvbSwxMCksQz1lLnRvcCtlLmhlaWdodC8yLWllLEw9dS1DLHc9Zi52YWx1ZS5vZmZzZXRIZWlnaHQvMixxPXkraCsoZi52YWx1ZS5vZmZzZXRUb3ArdyksVj1rLXE7aWYocTw9Qyl7Y29uc3QgZT1mLnZhbHVlPT09by5hdCgtMSk7Yy52YWx1ZS5zdHlsZS5ib3R0b209IjBweCI7Y29uc3QgdD1wLnZhbHVlLmNsaWVudEhlaWdodC1tLnZhbHVlLm9mZnNldFRvcC1tLnZhbHVlLm9mZnNldEhlaWdodCxhPXErTWF0aC5tYXgoTCx3KyhlP0I6MCkrdCtTKTtjLnZhbHVlLnN0eWxlLmhlaWdodD1gJHthfXB4YH1lbHNle2NvbnN0IGU9Zi52YWx1ZT09PW9bMF07Yy52YWx1ZS5zdHlsZS50b3A9IjBweCI7Y29uc3QgdD1NYXRoLm1heChDLHkrbS52YWx1ZS5vZmZzZXRUb3ArKGU/STowKSt3KStWO2MudmFsdWUuc3R5bGUuaGVpZ2h0PWAke3R9cHhgLG0udmFsdWUuc2Nyb2xsVG9wPXEtQyttLnZhbHVlLm9mZnNldFRvcH1jLnZhbHVlLnN0eWxlLm1hcmdpbj0iMTBweCAwIixjLnZhbHVlLnN0eWxlLm1pbkhlaWdodD1gJHt4fXB4YCxjLnZhbHVlLnN0eWxlLm1heEhlaWdodD1gJHt1fXB4YCxpKCJwbGFjZWQiKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnMudmFsdWU9ITApfX1jb25zdCBrPWUucmVmKCIiKTtyZXR1cm4gXyhuLnRyaWdnZXJFbGVtZW50LCgpPT57cG9zaXRpb24oKX0pLHZlKHtjb250ZW50V3JhcHBlcjpjLHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOnMsb25TY3JvbGxCdXR0b25DaGFuZ2U6ZnVuY3Rpb24oZSl7ZSYmITA9PT11LnZhbHVlJiYocG9zaXRpb24oKSxTPy4oKSx1LnZhbHVlPSExKX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soImRpdiIse3JlZl9rZXk6ImNvbnRlbnRXcmFwcGVyRWxlbWVudCIscmVmOmMsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixwb3NpdGlvbjoiZml4ZWQiLHpJbmRleDprLnZhbHVlfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoaCksZS5tZXJnZVByb3BzKHtyZWY6ZS51bnJlZihkKSxzdHlsZTp7Ym94U2l6aW5nOiJib3JkZXItYm94IixtYXhIZWlnaHQ6IjEwMCUifX0sey4uLnQuJGF0dHJzLC4uLmx9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpXSw0KSl9fSksaGU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0QXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1wZShkZSk7cmV0dXJuKHQsaSk9PiJwb3BwZXIiPT09ZS51bnJlZihsKS5wb3NpdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUCksZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSxhKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxTZT1lLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0UHJvdmlkZXIiLHByb3BzOntjb250ZXh0Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMH19LHNldHVwOnQ9PihvZSh0LmNvbnRleHQpLG1lKGRlKSwodCxhKT0+ZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IikpfSk7Y29uc3Qga2U9e2tleToxfTt2YXIgeGU9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlNlbGVjdENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYm9keUxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImNsb3NlQXV0b0ZvY3VzIiwiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGk9dCxyPWwoaSxhKSxuPW5lKCksbz1lLnJlZigpLHM9ZS5yZWYoKSx1PWUuY29tcHV0ZWQoKCk9PmkuZm9yY2VNb3VudHx8bi5vcGVuLnZhbHVlKSxjPWUucmVmKHUudmFsdWUpO3JldHVybiBlLndhdGNoKHUsKCk9PntzZXRUaW1lb3V0KCgpPT5jLnZhbHVlPXUudmFsdWUpfSksKHQsYSk9PnUudmFsdWV8fGMudmFsdWV8fHMudmFsdWU/LnByZXNlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHgpLHtrZXk6MCxyZWZfa2V5OiJwcmVzZW5jZVJlZiIscmVmOnMscHJlc2VudDp1LnZhbHVlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGZlLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLmUudW5yZWYociksLi4udC4kYXR0cnN9KSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KV0pLF86M30sOCxbInByZXNlbnQiXSkpOm8udmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soImRpdiIsa2UsWyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5UZWxlcG9ydCx7dG86by52YWx1ZX0sW2UuY3JlYXRlVk5vZGUoU2Use2NvbnRleHQ6ZS51bnJlZihuKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJjb250ZXh0Il0pXSw4LFsidG8iXSkpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCl9fSk7Y29uc3RbYmUsSWVdPUMoIlNlbGVjdEdyb3VwIik7dmFyIEJlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlNlbGVjdEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LGw9Tyh2b2lkIDAsInJla2Etc2VsZWN0LWdyb3VwIik7cmV0dXJuIEllKHtpZDpsfSksKHQsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe3JvbGU6Imdyb3VwIn0sYSx7ImFyaWEtbGFiZWxsZWRieSI6ZS51bnJlZihsKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFyaWEtbGFiZWxsZWRieSJdKSl9fSk7Y29uc3RbQ2UsTGVdPUMoIlNlbGVjdEl0ZW0iKTt2YXIgd2U9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3QgbD10LGk9YSx7ZGlzYWJsZWQ6cn09ZS50b1JlZnMobCksbj1uZSgpLG89cGUoKSx7Zm9yd2FyZFJlZjpzfT12KCkse0NvbGxlY3Rpb25JdGVtOnV9PXkoKSxjPWUuY29tcHV0ZWQoKCk9PnZhbHVlQ29tcGFyYXRvcihuLm1vZGVsVmFsdWU/LnZhbHVlLGwudmFsdWUsbi5ieSkpLGQ9ZS5yZWYoITEpLHA9ZS5yZWYobC50ZXh0VmFsdWU/PyIiKSxtPU8odm9pZCAwLCJyZWthLXNlbGVjdC1pdGVtLXRleHQiKTthc3luYyBmdW5jdGlvbiBoYW5kbGVTZWxlY3RDdXN0b21FdmVudChlKXtpZihlLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IHQ9e29yaWdpbmFsRXZlbnQ6ZSx2YWx1ZTpsLnZhbHVlfTtVKCJzZWxlY3Quc2VsZWN0IixoYW5kbGVTZWxlY3QsdCl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2VsZWN0KHQpe2F3YWl0IGUubmV4dFRpY2soKSxpKCJzZWxlY3QiLHQpLHQuZGVmYXVsdFByZXZlbnRlZHx8ci52YWx1ZXx8KG4ub25WYWx1ZUNoYW5nZShsLnZhbHVlKSxuLm11bHRpcGxlLnZhbHVlfHxuLm9uT3BlbkNoYW5nZSghMSkpfWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKHQpe2F3YWl0IGUubmV4dFRpY2soKSx0LmRlZmF1bHRQcmV2ZW50ZWR8fChyLnZhbHVlP28ub25JdGVtTGVhdmU/LigpOnQuY3VycmVudFRhcmdldD8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlUG9pbnRlckxlYXZlKHQpe2F3YWl0IGUubmV4dFRpY2soKSx0LmRlZmF1bHRQcmV2ZW50ZWR8fHQuY3VycmVudFRhcmdldD09PVYoKSYmby5vbkl0ZW1MZWF2ZT8uKCl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlS2V5RG93bih0KXtpZihhd2FpdCBlLm5leHRUaWNrKCksdC5kZWZhdWx0UHJldmVudGVkKXJldHVybjsiIiE9PW8uc2VhcmNoUmVmPy52YWx1ZSYmIiAiPT09dC5rZXl8fChsZS5pbmNsdWRlcyh0LmtleSkmJmhhbmRsZVNlbGVjdEN1c3RvbUV2ZW50KHQpLCIgIj09PXQua2V5JiZ0LnByZXZlbnREZWZhdWx0KCkpfWlmKCIiPT09bC52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoIkEgPFNlbGVjdEl0ZW0gLz4gbXVzdCBoYXZlIGEgdmFsdWUgcHJvcCB0aGF0IGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcuIFRoaXMgaXMgYmVjYXVzZSB0aGUgU2VsZWN0IHZhbHVlIGNhbiBiZSBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBzZWxlY3Rpb24gYW5kIHNob3cgdGhlIHBsYWNlaG9sZGVyLiIpO3JldHVybiBMZSh7dmFsdWU6bC52YWx1ZSxkaXNhYmxlZDpyLHRleHRJZDptLGlzU2VsZWN0ZWQ6Yyxvbkl0ZW1UZXh0Q2hhbmdlOmU9PntwLnZhbHVlPSgocC52YWx1ZXx8ZT8udGV4dENvbnRlbnQpPz8iIikudHJpbSgpfX0pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodSkse3ZhbHVlOnt0ZXh0VmFsdWU6cC52YWx1ZX19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihoKSx7cmVmOmUudW5yZWYocykscm9sZToib3B0aW9uIiwiYXJpYS1sYWJlbGxlZGJ5IjplLnVucmVmKG0pLCJkYXRhLWhpZ2hsaWdodGVkIjpkLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1zZWxlY3RlZCI6Yy52YWx1ZSwiZGF0YS1zdGF0ZSI6Yy52YWx1ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCIsImFyaWEtZGlzYWJsZWQiOmUudW5yZWYocil8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihyKT8iIjp2b2lkIDAsdGFiaW5kZXg6ZS51bnJlZihyKT92b2lkIDA6LTEsYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCxvbkZvY3VzOmFbMF18fChhWzBdPWU9PmQudmFsdWU9ITApLG9uQmx1cjphWzFdfHwoYVsxXT1lPT5kLnZhbHVlPSExKSxvblBvaW50ZXJ1cDpoYW5kbGVTZWxlY3RDdXN0b21FdmVudCxvblBvaW50ZXJkb3duOmFbMl18fChhWzJdPWU9PntlLmN1cnJlbnRUYXJnZXQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0pLG9uVG91Y2hlbmQ6YVszXXx8KGFbM109ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiLCJzdG9wIl0pKSxvblBvaW50ZXJtb3ZlOmhhbmRsZVBvaW50ZXJNb3ZlLG9uUG9pbnRlcmxlYXZlOmhhbmRsZVBvaW50ZXJMZWF2ZSxvbktleWRvd246aGFuZGxlS2V5RG93bn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLWhpZ2hsaWdodGVkIiwiYXJpYS1zZWxlY3RlZCIsImRhdGEtc3RhdGUiLCJhcmlhLWRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsInRhYmluZGV4IiwiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxxZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RJdGVtSW5kaWNhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgYT10LGw9Q2UoKTtyZXR1cm4odCxpKT0+ZS51bnJlZihsKS5pc1NlbGVjdGVkLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe2tleTowLCJhcmlhLWhpZGRlbiI6InRydWUifSxhKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pLFZlPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJTZWxlY3RJdGVtVGV4dCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKHQpe2NvbnN0IGE9dDtuZSgpLHBlKCk7Y29uc3QgbD1DZSgpLHtmb3J3YXJkUmVmOmksY3VycmVudEVsZW1lbnQ6cn09digpO3JldHVybiBlLmNvbXB1dGVkKCgpPT4oe3ZhbHVlOmwudmFsdWUsZGlzYWJsZWQ6bC5kaXNhYmxlZC52YWx1ZSx0ZXh0Q29udGVudDpyLnZhbHVlPy50ZXh0Q29udGVudD8/bC52YWx1ZT8udG9TdHJpbmcoKT8/IiJ9KSksKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe2lkOmUudW5yZWYobCkudGV4dElkLHJlZjplLnVucmVmKGkpfSx7Li4uYSwuLi50LiRhdHRyc30pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSx6ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAodCl7Y29uc3QgYT10LGw9YmUoe2lkOiIifSk7cmV0dXJuKHQsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoYSx7aWQ6ZS51bnJlZihsKS5pZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxfZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrKSxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKGEpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxUZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RTZXBhcmF0b3IiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoeyJhcmlhLWhpZGRlbiI6InRydWUifSxhKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxOZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RUcmlnZ2VyIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3QgYT10LGw9bmUoKSx7Zm9yd2FyZFJlZjppfT12KCkscj1lLmNvbXB1dGVkKCgpPT5sLmRpc2FibGVkPy52YWx1ZXx8YS5kaXNhYmxlZCk7bC5jb250ZW50SWR8fD1PKHZvaWQgMCwicmVrYS1zZWxlY3QtY29udGVudCIpO2NvbnN0e2dldEl0ZW1zOm59PXkoKSx7c2VhcmNoOm8saGFuZGxlVHlwZWFoZWFkU2VhcmNoOnMscmVzZXRUeXBlYWhlYWQ6dX09QSgpO2Z1bmN0aW9uIGhhbmRsZU9wZW4oKXtyLnZhbHVlfHwobC5vbk9wZW5DaGFuZ2UoITApLHUoKSl9ZnVuY3Rpb24gaGFuZGxlUG9pbnRlck9wZW4oZSl7aGFuZGxlT3BlbigpLGwudHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLnZhbHVlPXt4Ok1hdGgucm91bmQoZS5wYWdlWCkseTpNYXRoLnJvdW5kKGUucGFnZVkpfX1yZXR1cm4odCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKCQpLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTp0LnJlZmVyZW5jZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGgpLHtyZWY6ZS51bnJlZihpKSxyb2xlOiJjb21ib2JveCIsdHlwZToiYnV0dG9uIj09PXQuYXM/ImJ1dHRvbiI6dm9pZCAwLCJhcmlhLWNvbnRyb2xzIjplLnVucmVmKGwpLmNvbnRlbnRJZCwiYXJpYS1leHBhbmRlZCI6ZS51bnJlZihsKS5vcGVuLnZhbHVlfHwhMSwiYXJpYS1yZXF1aXJlZCI6ZS51bnJlZihsKS5yZXF1aXJlZD8udmFsdWUsImFyaWEtYXV0b2NvbXBsZXRlIjoibm9uZSIsZGlzYWJsZWQ6ci52YWx1ZSxkaXI6ZS51bnJlZihsKT8uZGlyLnZhbHVlLCJkYXRhLXN0YXRlIjplLnVucmVmKGwpPy5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ci52YWx1ZT8iIjp2b2lkIDAsImRhdGEtcGxhY2Vob2xkZXIiOmUudW5yZWYoc2hvdWxkU2hvd1BsYWNlaG9sZGVyKShlLnVucmVmKGwpLm1vZGVsVmFsdWU/LnZhbHVlKT8iIjp2b2lkIDAsImFzLWNoaWxkIjp0LmFzQ2hpbGQsYXM6dC5hcyxvbkNsaWNrOmFbMF18fChhWzBdPWU9PntlPy5jdXJyZW50VGFyZ2V0Py5mb2N1cygpfSksb25Qb2ludGVyZG93bjphWzFdfHwoYVsxXT1lPT57aWYoInRvdWNoIj09PWUucG9pbnRlclR5cGUpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKTtjb25zdCB0PWUudGFyZ2V0O3QuaGFzUG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpJiZ0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCksMD09PWUuYnV0dG9uJiYhMT09PWUuY3RybEtleSYmKGhhbmRsZVBvaW50ZXJPcGVuKGUpLGUucHJldmVudERlZmF1bHQoKSl9KSxvblBvaW50ZXJ1cDphWzJdfHwoYVsyXT1lLndpdGhNb2RpZmllcnMoZT0+eyJ0b3VjaCI9PT1lLnBvaW50ZXJUeXBlJiZoYW5kbGVQb2ludGVyT3BlbihlKX0sWyJwcmV2ZW50Il0pKSxvbktleWRvd246YVszXXx8KGFbM109dD0+e2NvbnN0IGE9IiIhPT1lLnVucmVmKG8pOyEodC5jdHJsS2V5fHx0LmFsdEtleXx8dC5tZXRhS2V5KSYmMT09PXQua2V5Lmxlbmd0aCYmYSYmIiAiPT09dC5rZXl8fChlLnVucmVmKHMpKHQua2V5LGUudW5yZWYobikoKSksZS51bnJlZihhZSkuaW5jbHVkZXModC5rZXkpJiYoaGFuZGxlT3BlbigpLHQucHJldmVudERlZmF1bHQoKSkpfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidHlwZSIsImFyaWEtY29udHJvbHMiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1yZXF1aXJlZCIsImRpc2FibGVkIiwiZGlyIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLXBsYWNlaG9sZGVyIiwiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30sOCxbInJlZmVyZW5jZSJdKSl9fSksQWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0VmFsdWUiLHByb3BzOntwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiIn0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgYT10LHtmb3J3YXJkUmVmOmx9PXYoKSxpPW5lKCkscj1lLmNvbXB1dGVkKCgpPT57bGV0IGU9W107Y29uc3QgdD1BcnJheS5mcm9tKGkub3B0aW9uc1NldC52YWx1ZSksZ2V0T3B0aW9uPWU9PnQuZmluZCh0PT52YWx1ZUNvbXBhcmF0b3IoZSx0LnZhbHVlLGkuYnkpKTtyZXR1cm4gZT1BcnJheS5pc0FycmF5KGkubW9kZWxWYWx1ZS52YWx1ZSk/aS5tb2RlbFZhbHVlLnZhbHVlLm1hcChlPT5nZXRPcHRpb24oZSk/LnRleHRDb250ZW50Pz8iIik6W2dldE9wdGlvbihpLm1vZGVsVmFsdWUudmFsdWUpPy50ZXh0Q29udGVudD8/IiJdLGUuZmlsdGVyKEJvb2xlYW4pfSksbj1lLmNvbXB1dGVkKCgpPT5yLnZhbHVlLmxlbmd0aD9yLnZhbHVlLmpvaW4oIiwgIik6YS5wbGFjZWhvbGRlcik7cmV0dXJuKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSx7cmVmOmUudW5yZWYobCksYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCxzdHlsZTp7cG9pbnRlckV2ZW50czoibm9uZSJ9LCJkYXRhLXBsYWNlaG9sZGVyIjpyLnZhbHVlLmxlbmd0aD92b2lkIDA6YS5wbGFjZWhvbGRlcn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7c2VsZWN0ZWRMYWJlbDpyLnZhbHVlLG1vZGVsVmFsdWU6ZS51bnJlZihpKS5tb2RlbFZhbHVlLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKG4udmFsdWUpLDEpXSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1wbGFjZWhvbGRlciJdKSl9fSksJGU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0Vmlld3BvcnQiLHByb3BzOntub25jZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGE9dCx7bm9uY2U6bH09ZS50b1JlZnMoYSksaT1mdW5jdGlvbih0KXtjb25zdCBhPXEoe25vbmNlOmUucmVmKCl9KTtyZXR1cm4gZS5jb21wdXRlZCgoKT0+dD8udmFsdWV8fGEubm9uY2U/LnZhbHVlKX0obCkscj0iaXRlbS1hbGlnbmVkIj09PXBlKCkucG9zaXRpb24/Z2UoKTp2b2lkIDAse2ZvcndhcmRSZWY6bn09digpLG89ZS5yZWYoMCk7ZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGUpe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0LHtzaG91bGRFeHBhbmRPblNjcm9sbFJlZjphLGNvbnRlbnRXcmFwcGVyOmx9PXI/P3t9O2lmKGE/LnZhbHVlJiZsPy52YWx1ZSl7Y29uc3QgZT1NYXRoLmFicyhvLnZhbHVlLXQuc2Nyb2xsVG9wKTtpZihlPjApe2NvbnN0IGE9KHZvaWQgMCkuaW5uZXJIZWlnaHQtMjAsaT1OdW1iZXIucGFyc2VGbG9hdChsLnZhbHVlLnN0eWxlLm1pbkhlaWdodCkscj1OdW1iZXIucGFyc2VGbG9hdChsLnZhbHVlLnN0eWxlLmhlaWdodCksbj1NYXRoLm1heChpLHIpO2lmKG48YSl7Y29uc3QgaT1uK2Uscj1NYXRoLm1pbihhLGkpLG89aS1yO2wudmFsdWUuc3R5bGUuaGVpZ2h0PWAke3J9cHhgLCIwcHgiPT09bC52YWx1ZS5zdHlsZS5ib3R0b20mJih0LnNjcm9sbFRvcD1vPjA/bzowLGwudmFsdWUuc3R5bGUuanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIil9fX1vLnZhbHVlPXQuc2Nyb2xsVG9wfXJldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsW2UuY3JlYXRlVk5vZGUoZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe3JlZjplLnVucmVmKG4pLCJkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0IjoiIixyb2xlOiJwcmVzZW50YXRpb24ifSx7Li4udC4kYXR0cnMsLi4uYX0se3N0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXg6MSxvdmVyZmxvdzoiaGlkZGVuIGF1dG8ifSxvblNjcm9sbDpoYW5kbGVTY3JvbGx9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpLGUuY3JlYXRlVk5vZGUoZS51bnJlZihoKSx7YXM6InN0eWxlIixub25jZTplLnVucmVmKGkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PmxbMF18fChsWzBdPVtlLmNyZWF0ZVRleHRWTm9kZSgiIC8qIEhpZGUgc2Nyb2xsYmFycyBjcm9zcy1icm93c2VyIGFuZCBlbmFibGUgbW9tZW50dW0gc2Nyb2xsIGZvciB0b3VjaCBkZXZpY2VzICovIFtkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0XSB7IHNjcm9sbGJhci13aWR0aDpub25lOyAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfSBbZGF0YS1yZWthLXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfSAiKV0pKSxfOjEsX186WzBdfSw4LFsibm9uY2UiXSldLDY0KSl9fSk7Y29uc3QgUGU9e3Nsb3RzOntiYXNlOlsicmVsYXRpdmUgZ3JvdXAgcm91bmRlZC1tZCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsZWFkaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgc3RhcnQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsbGVhZGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmc6ImFic29sdXRlIGluc2V0LXktMCBlbmQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsdHJhaWxpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsdmFsdWU6InRydW5jYXRlIHBvaW50ZXItZXZlbnRzLW5vbmUiLHBsYWNlaG9sZGVyOiJ0cnVuY2F0ZSB0ZXh0LWRpbW1lZCIsYXJyb3c6ImZpbGwtYmcgc3Ryb2tlLWRlZmF1bHQiLGNvbnRlbnQ6Im1heC1oLTYwIHctKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aCkgYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBvdmVyZmxvdy1oaWRkZW4gb3JpZ2luLSgtLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGZsZXgtY29sIix2aWV3cG9ydDoicmVsYXRpdmUgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQgc2Nyb2xsLXB5LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSIsZ3JvdXA6InAtMSBpc29sYXRlIixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsbGFiZWw6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsc2VwYXJhdG9yOiItbXgtMSBteS0xIGgtcHggYmctYm9yZGVyIixpdGVtOlsiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtc3RhcnQgc2VsZWN0LW5vbmUgb3V0bGluZS1ub25lIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTppbnNldC1weCBiZWZvcmU6cm91bmRlZC1tZCBkYXRhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNzUgdGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInNocmluay0wIHRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWdyb3VwLWRhdGEtZGlzYWJsZWQ6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtTGVhZGluZ0NoaXA6InNocmluay0wIixpdGVtTGVhZGluZ0NoaXBTaXplOiIiLGl0ZW1UcmFpbGluZzoibXMtYXV0byBpbmxpbmUtZmxleCBnYXAtMS41IGl0ZW1zLWNlbnRlciIsaXRlbVRyYWlsaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1XcmFwcGVyOiJmbGV4LTEgZmxleCBmbGV4LWNvbCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1lLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXMtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0iLHZlcnRpY2FsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWItbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtdC1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSJ9LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC14cyBnYXAtMSIsbGVhZGluZzoicHMtMiIsdHJhaWxpbmc6InBlLTIiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xIHRleHQtWzEwcHhdLzMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixlbXB0eToicC0yIHRleHQteHMifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQiLGxhYmVsOiJwLTEuNSB0ZXh0LVsxMHB4XS8zIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMi41IHRleHQteHMifSxtZDp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQtc20gZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMi41IHRleHQtc20ifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtc20gZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSIsbGFiZWw6InAtMiB0ZXh0LXhzIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMyB0ZXh0LXNtIn0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02IixsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS02IixpdGVtTGVhZGluZ0F2YXRhclNpemU6InhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNiIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibGciLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsZW1wdHk6InAtMyB0ZXh0LWJhc2UifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIGhvdmVyOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWRlZmF1bHQiLHNvZnQ6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctZWxldmF0ZWQvNTAiLHN1YnRsZToidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1hY2NlbnRlZC83NSBkaXNhYmxlZDpiZy1lbGV2YXRlZCIsZ2hvc3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCIsbm9uZToidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCJ9LGNvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSxsZWFkaW5nOnt0cnVlOiIifSx0cmFpbGluZzp7dHJ1ZToiIn0sbG9hZGluZzp7dHJ1ZToiIn0saGlnaGxpZ2h0Ont0cnVlOiIifSxmaXhlZDp7ZmFsc2U6IiJ9LHR5cGU6e2ZpbGU6ImZpbGU6bWUtMS41IGZpbGU6Zm9udC1tZWRpdW0gZmlsZTp0ZXh0LW11dGVkIGZpbGU6b3V0bGluZS1ub25lIn0scG9zaXRpb246e3BvcHBlcjp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIn0sIml0ZW0tYWxpZ25lZCI6e2NvbnRlbnQ6IiJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixwb3NpdGlvbjoicG9wcGVyIn19LERlPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVNlbGVjdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2lkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNlbGVjdGVkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sYXJyb3c6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmFsdWUifSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkZXNjcmlwdGlvbiJ9LGl0ZW1zOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsTW9kaWZpZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjaGFuZ2UiLCJibHVyIiwiZm9jdXMiLCJ1cGRhdGU6bW9kZWxWYWx1ZSIsInVwZGF0ZTpvcGVuIl0sc2V0dXAodix7ZXhwb3NlOnksZW1pdDpofSl7Y29uc3Qgaz12LHg9aCxJPWUudXNlU2xvdHMoKSxCPXQoKSxDPWEoInNlbGVjdCIsayksTD1sKGkoaywib3BlbiIsImRlZmF1bHRPcGVuIiwiZGlzYWJsZWQiLCJhdXRvY29tcGxldGUiLCJyZXF1aXJlZCIsIm11bHRpcGxlIikseCksdz1yKGUudG9SZWYoKCk9PmsucG9ydGFsKSkse3Bvc2l0aW9uOnF9PVkoInNlbGVjdCIsayxQZSxbInBvc2l0aW9uIl0se3Bvc2l0aW9uOigpPT5rLmNvbnRlbnQ/LnBvc2l0aW9ufSksVj1lLnRvUmVmKCgpPT5IKGsuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4LHBvc2l0aW9uOnEudmFsdWV9KSksej1lLnRvUmVmKCgpPT5IKGsuYXJyb3cse3JvdW5kZWQ6ITB9KSkse2VtaXRGb3JtQ2hhbmdlOl8sZW1pdEZvcm1JbnB1dDpULGVtaXRGb3JtQmx1cjpOLGVtaXRGb3JtRm9jdXM6QSxzaXplOiQsY29sb3I6UCxpZDpELG5hbWU6SyxoaWdobGlnaHQ6RSxkaXNhYmxlZDpPLGFyaWFBdHRyczpSfT1uKGspLHtvcmllbnRhdGlvbjpGLHNpemU6V309byhrKSx7aXNMZWFkaW5nOk0saXNUcmFpbGluZzpqLGxlYWRpbmdJY29uTmFtZTpVLHRyYWlsaW5nSWNvbk5hbWU6R309cyhlLnRvUmVmKCgpPT5IKGsse3RyYWlsaW5nSWNvbjpCLnVpLmljb25zLmNoZXZyb25Eb3dufSkpKSxhZT1lLmNvbXB1dGVkKCgpPT5XLnZhbHVlfHwkLnZhbHVlKSxsZT1lLmNvbXB1dGVkKCgpPT4iaXRlbS1hbGlnbmVkIj09PXEudmFsdWUpLGllPWUuY29tcHV0ZWQoKCk9PnUoe2V4dGVuZDp1KFBlKSwuLi5CLnVpPy5zZWxlY3R8fHt9fSkoe2NvbG9yOlAudmFsdWUsdmFyaWFudDprLnZhcmlhbnQsc2l6ZTphZT8udmFsdWUsbG9hZGluZzprLmxvYWRpbmcsaGlnaGxpZ2h0OkUudmFsdWUsbGVhZGluZzpNLnZhbHVlfHwhIWsuYXZhdGFyfHwhIUkubGVhZGluZyx0cmFpbGluZzpqLnZhbHVlfHwhIUkudHJhaWxpbmcsZmllbGRHcm91cDpGLnZhbHVlLHBvc2l0aW9uOnEudmFsdWV9KSkscmU9ZS5jb21wdXRlZCgoKT0+ay5pdGVtcz8ubGVuZ3RoP2Moay5pdGVtcyk/ay5pdGVtczpbay5pdGVtc106W10pLG5lPWUuY29tcHV0ZWQoKCk9PnJlLnZhbHVlLmZsYXRNYXAoZT0+ZSkpO2Z1bmN0aW9uIGRpc3BsYXlWYWx1ZShlKXtpZihrLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubWFwKGU9PlMobmUudmFsdWUsZSx7bGFiZWxLZXk6ay5sYWJlbEtleSx2YWx1ZUtleTprLnZhbHVlS2V5fSkpLmZpbHRlcihlPT5udWxsIT1lJiYiIiE9PWUpO3JldHVybiB0Lmxlbmd0aD4wP3Quam9pbigiLCAiKTp2b2lkIDB9cmV0dXJuIFMobmUudmFsdWUsZSx7bGFiZWxLZXk6ay5sYWJlbEtleSx2YWx1ZUtleTprLnZhbHVlS2V5fSl9Y29uc3Qgb2U9ZS51c2VUZW1wbGF0ZVJlZigidHJpZ2dlclJlZiIpO2Z1bmN0aW9uIG9uVXBkYXRlKGUpeyFrLm1vZGVsTW9kaWZpZXJzPy50cmltfHwic3RyaW5nIiE9dHlwZW9mIGUmJm51bGwhPWV8fChlPWU/LnRyaW0oKT8/bnVsbCksay5tb2RlbE1vZGlmaWVycz8ubnVtYmVyJiYoZT1iKGUpKSxrLm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmKGU/Pz1udWxsKSxrLm1vZGVsTW9kaWZpZXJzPy5vcHRpb25hbCYmIWsubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiZudWxsIT09ZSYmKGU/Pz12b2lkIDApO2NvbnN0IHQ9bmV3IEV2ZW50KCJjaGFuZ2UiLHt0YXJnZXQ6e3ZhbHVlOmV9fSk7eCgiY2hhbmdlIix0KSxfKCksVCgpfWZ1bmN0aW9uIG9uVXBkYXRlT3BlbihlKXtpZihlKXtjb25zdCBlPW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO3goImZvY3VzIixlKSxBKCl9ZWxzZXtjb25zdCBlPW5ldyBGb2N1c0V2ZW50KCJibHVyIik7eCgiYmx1ciIsZSksTigpfX1mdW5jdGlvbiBpc1NlbGVjdEl0ZW0oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZX1jb25zdCB1ZT1lLnVzZVRlbXBsYXRlUmVmKCJ2aWV3cG9ydFJlZiIpO3JldHVybiB5KHt0cmlnZ2VyUmVmOmUudG9SZWYoKCk9Pm9lLnZhbHVlPy4kZWwpLHZpZXdwb3J0UmVmOmUudG9SZWYoKCk9Pntjb25zdCBlPXVlLnZhbHVlO3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiIkZWwiaW4gZT9lLiRlbDplfSl9KSwodCxhLGwsaSk9PnthKFgoZS51bnJlZihzZSksZS5tZXJnZVByb3BzKHtuYW1lOmUudW5yZWYoSyl9LGUudW5yZWYoTCkse2F1dG9jb21wbGV0ZTp2LmF1dG9jb21wbGV0ZSxkaXNhYmxlZDplLnVucmVmKE8pLCJkZWZhdWx0LXZhbHVlIjp2LmRlZmF1bHRWYWx1ZSwibW9kZWwtdmFsdWUiOnYubW9kZWxWYWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b25VcGRhdGUsIm9uVXBkYXRlOm9wZW4iOm9uVXBkYXRlT3Blbn0saSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7bW9kZWxWYWx1ZTphLG9wZW46bH0saSxyLG4pPT57aWYoIWkpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihOZSksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKEQpLHJlZl9rZXk6InRyaWdnZXJSZWYiLHJlZjpvZSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6aWUudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoQyk/LmJhc2Usay5jbGFzc119KX0sey4uLnQuJGF0dHJzLC4uLmUudW5yZWYoUil9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKE0pfHx2LmF2YXRhcnx8SS5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6aWUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihDKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PltlLnVucmVmKE0pJiZlLnVucmVmKFUpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTplLnVucmVmKFUpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6di5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx2LmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFtkaXNwbGF5VmFsdWUoYSldLGk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihBZSkse2tleTppLCJkYXRhLXNsb3QiOm51bGwhPWk/InZhbHVlIjoicGxhY2Vob2xkZXIiLGNsYXNzOm51bGwhPWk/aWUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoQyk/LnZhbHVlfSk6aWUudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmUudW5yZWYoQyk/LnBsYWNlaG9sZGVyfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6aWUudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaT8/di5wbGFjZWhvbGRlcj8/IsKgIiksMSldKV0pLF86Mn0sMTAzMixbImRhdGEtc2xvdCIsImNsYXNzIl0pKSksMTI4KSksZS51bnJlZihqKXx8SS50cmFpbGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczppZS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihDKT8udHJhaWxpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOmllLnZhbHVlfSwoKT0+W2UudW5yZWYoRyk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmUudW5yZWYoRyksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbImlkIiwiY2xhc3MiXSksZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSxlLnVucmVmKHcpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihtKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZih4ZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6aWUudmFsdWUuY29udGVudCh7Y2xhc3M6ZS51bnJlZihDKT8uY29udGVudH0pfSxWLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtdG9wIiksKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGxlLnZhbHVlP2UudW5yZWYoJGUpOiJkaXYiKSx7cmVmX2tleToidmlld3BvcnRSZWYiLHJlZjp1ZSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6aWUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoQyk/LnZpZXdwb3J0fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHJlLnZhbHVlLChhLGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQmUpLHtrZXk6YGdyb3VwLSR7bH1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6aWUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoQyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGEsKGEsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OmBncm91cC0ke2x9LSR7aX1gfSxbaXNTZWxlY3RJdGVtKGEpJiYibGFiZWwiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih6ZSkse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6aWUudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5sYWJlbCxhLnVpPy5sYWJlbCxhLmNsYXNzXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5sYWJlbEtleSkpLDEpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmInNlcGFyYXRvciI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFRlKSx7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6aWUudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihDKT8uc2VwYXJhdG9yLGEudWk/LnNlcGFyYXRvcixhLmNsYXNzXX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHdlKSx7a2V5OjIsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmllLnZhbHVlLml0ZW0oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEuY2xhc3NdfSksZGlzYWJsZWQ6aXNTZWxlY3RJdGVtKGEpJiZhLmRpc2FibGVkLHZhbHVlOmlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay52YWx1ZUtleSk6YSxvblNlbGVjdDplPT5pc1NlbGVjdEl0ZW0oYSkmJmEub25TZWxlY3Q/LihlKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0sKCk9Pltpc1NlbGVjdEl0ZW0oYSkmJmEuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHAsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0se3JlZl9mb3I6ITB9LGEuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXIsYS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sYS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXAsYS51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6aWUudmFsdWUuaXRlbVdyYXBwZXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtV3JhcHBlcixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZShlLnVucmVmKFZlKSx7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6aWUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxhYmVsLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbUxhYmVsXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsubGFiZWxLZXkpOmEpLDEpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSxpc1NlbGVjdEl0ZW0oYSkmJihlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSl8fElbIml0ZW0tZGVzY3JpcHRpb24iXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOmllLnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1EZXNjcmlwdGlvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDppfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSksZS5jcmVhdGVWTm9kZShlLnVucmVmKHFlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOnYuc2VsZWN0ZWRJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyIsImRpc2FibGVkIiwidmFsdWUiLCJvblNlbGVjdCJdKSldLDY0KSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0pLF86M30sOCxbImNsYXNzIl0pKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIiksdi5hcnJvdz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoaGUpLGUubWVyZ2VQcm9wcyh7a2V5OjB9LHoudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6aWUudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoQyk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86M30sMTYsWyJjbGFzcyJdKV0pLF86M30pXSksXzozfSwxNildO2koWChlLnVucmVmKE5lKSxlLm1lcmdlUHJvcHMoe2lkOmUudW5yZWYoRCkscmVmX2tleToidHJpZ2dlclJlZiIscmVmOm9lLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczppZS52YWx1ZS5iYXNlKHtjbGFzczpbZS51bnJlZihDKT8uYmFzZSxrLmNsYXNzXX0pfSx7Li4udC4kYXR0cnMsLi4uZS51bnJlZihSKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLG4sbyk9PntpZighcilyZXR1cm5bZS51bnJlZihNKXx8di5hdmF0YXJ8fEkubGVhZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOmllLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6aWUudmFsdWV9LCgpPT5bZS51bnJlZihNKSYmZS51bnJlZihVKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6ZS51bnJlZihVKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnYuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sdi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChbZGlzcGxheVZhbHVlKGEpXSxpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQWUpLHtrZXk6aSwiZGF0YS1zbG90IjpudWxsIT1pPyJ2YWx1ZSI6InBsYWNlaG9sZGVyIixjbGFzczpudWxsIT1pP2llLnZhbHVlLnZhbHVlKHtjbGFzczplLnVucmVmKEMpPy52YWx1ZX0pOmllLnZhbHVlLnBsYWNlaG9sZGVyKHtjbGFzczplLnVucmVmKEMpPy5wbGFjZWhvbGRlcn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOmllLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGk/P3YucGxhY2Vob2xkZXI/PyLCoCIpLDEpXSldKSxfOjJ9LDEwMzIsWyJkYXRhLXNsb3QiLCJjbGFzcyJdKSkpLDEyOCkpLGUudW5yZWYoail8fEkudHJhaWxpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6aWUudmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoQyk/LnRyYWlsaW5nfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsInRyYWlsaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PltlLnVucmVmKEcpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTplLnVucmVmKEcpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihDKT8udHJhaWxpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2UudW5yZWYoTSl8fHYuYXZhdGFyfHxJLmxlYWRpbmc/KHIoYDxzcGFuIGRhdGEtc2xvdD0ibGVhZGluZyIgY2xhc3M9IiR7SihpZS52YWx1ZS5sZWFkaW5nKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nfSkpfSIke299PmApLFEodC4kc2xvdHMsImxlYWRpbmciLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOmllLnZhbHVlfSwoKT0+e2UudW5yZWYoTSkmJmUudW5yZWYoVSk/cihYKGQse25hbWU6ZS51bnJlZihVKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLG4sbykpOnYuYXZhdGFyP3IoWChwLGUubWVyZ2VQcm9wcyh7c2l6ZTplLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx2LmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsbixvKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLG4sbykscigiPC9zcGFuPiIpKTpyKCJceDNjIS0tLS1ceDNlIikscigiXHgzYyEtLVstLVx4M2UiKSxaKFtkaXNwbGF5VmFsdWUoYSldLGk9PntyKFgoZS51bnJlZihBZSkseyJkYXRhLXNsb3QiOm51bGwhPWk/InZhbHVlIjoicGxhY2Vob2xkZXIiLGNsYXNzOm51bGwhPWk/aWUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoQyk/LnZhbHVlfSk6aWUudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmUudW5yZWYoQyk/LnBsYWNlaG9sZGVyfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgocixuLG8scyk9PntpZighbilyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpPz92LnBsYWNlaG9sZGVyPz8iwqAiKSwxKV0pXTtRKHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PntuKGAke2VlKGk/P3YucGxhY2Vob2xkZXI/PyLCoCIpfWApfSxuLG8scyl9KSxfOjJ9LG4sbykpfSkscigiXHgzYyEtLV0tLVx4M2UiKSxlLnVucmVmKGopfHxJLnRyYWlsaW5nPyhyKGA8c3BhbiBkYXRhLXNsb3Q9InRyYWlsaW5nIiBjbGFzcz0iJHtKKGllLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEMpPy50cmFpbGluZ30pKX0iJHtvfT5gKSxRKHQuJHNsb3RzLCJ0cmFpbGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6aWUudmFsdWV9LCgpPT57ZS51bnJlZihHKT9yKFgoZCx7bmFtZTplLnVucmVmKEcpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihDKT8udHJhaWxpbmdJY29ufSl9LG51bGwsbixvKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLG4sbykscigiPC9zcGFuPiIpKTpyKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9LHIsbikpLGkoWChlLnVucmVmKF9lKSxlLnVucmVmKHcpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLGkscik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKHhlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczppZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEMpPy5jb250ZW50fSl9LFYudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC10b3AiKSwoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQobGUudmFsdWU/ZS51bnJlZigkZSk6ImRpdiIpLHtyZWZfa2V5OiJ2aWV3cG9ydFJlZiIscmVmOnVlLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczppZS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZS51bnJlZihDKT8udmlld3BvcnR9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QocmUudmFsdWUsKGEsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCZSkse2tleTpgZ3JvdXAtJHtsfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczppZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihDKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoYSwoYSxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6YGdyb3VwLSR7bH0tJHtpfWB9LFtpc1NlbGVjdEl0ZW0oYSkmJiJsYWJlbCI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczppZS52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/LmxhYmVsLGEudWk/LmxhYmVsLGEuY2xhc3NdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmxhYmVsS2V5KSksMSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiYic2VwYXJhdG9yIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVGUpLHtrZXk6MSwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczppZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEMpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYod2UpLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6aWUudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS5jbGFzc119KSxkaXNhYmxlZDppc1NlbGVjdEl0ZW0oYSkmJmEuZGlzYWJsZWQsdmFsdWU6aXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLnZhbHVlS2V5KTphLG9uU2VsZWN0OmU9PmlzU2VsZWN0SXRlbShhKSYmYS5vblNlbGVjdD8uKGUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0iLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0sKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSwoKT0+W2lzU2VsZWN0SXRlbShhKSYmYS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTphLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdJY29uLGEudWk/Lml0ZW1MZWFkaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZyxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6YS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LHtyZWZfZm9yOiEwfSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczppZS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1XcmFwcGVyLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczppZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sYWJlbCIse2l0ZW06YSxpbmRleDppfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay5sYWJlbEtleSk6YSksMSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KXx8SVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6aWUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Oml9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9KSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYocWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGQse25hbWU6di5zZWxlY3RlZEljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSksXzozfSw4LFsiY2xhc3MiXSkpLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC1ib3R0b20iKSx2LmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sei52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczppZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihDKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldO2woWChlLnVucmVmKG0pLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwsaSxyKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeGUpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOmllLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUudW5yZWYoQyk/LmNvbnRlbnR9KX0sVi52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LXRvcCIpLChlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChsZS52YWx1ZT9lLnVucmVmKCRlKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6dWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOmllLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEMpPy52aWV3cG9ydH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChyZS52YWx1ZSwoYSxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEJlKSx7a2V5OmBncm91cC0ke2x9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOmllLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEMpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChhLChhLGkpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTpgZ3JvdXAtJHtsfS0ke2l9YH0sW2lzU2VsZWN0SXRlbShhKSYmImxhYmVsIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoemUpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmllLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJiJzZXBhcmF0b3IiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihUZSkse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmllLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoQyk/LnNlcGFyYXRvcixhLnVpPy5zZXBhcmF0b3IsYS5jbGFzc119KX0sbnVsbCw4LFsiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih3ZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczppZS52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLmNsYXNzXX0pLGRpc2FibGVkOmlzU2VsZWN0SXRlbShhKSYmYS5kaXNhYmxlZCx2YWx1ZTppc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsudmFsdWVLZXkpOmEsb25TZWxlY3Q6ZT0+aXNTZWxlY3RJdGVtKGEpJiZhLm9uU2VsZWN0Py4oZSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHtyZWZfZm9yOiEwfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0se3JlZl9mb3I6ITB9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOmllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihWZSkseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOmllLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Oml9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpfHxJWyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczppZS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtRGVzY3JpcHRpb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmcsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tdHJhaWxpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0pLGUuY3JlYXRlVk5vZGUoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZCx7bmFtZTp2LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCIsInZhbHVlIiwib25TZWxlY3QiXSkpXSw2NCkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSldKSxfOjN9LDgsWyJjbGFzcyJdKSksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpLHYuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGhlKSxlLm1lcmdlUHJvcHMoe2tleTowfSx6LnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOmllLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKEMpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldO2woWChlLnVucmVmKHhlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczppZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEMpPy5jb250ZW50fSl9LFYudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLGkscik9PntpZighbClyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LXRvcCIpLChlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChsZS52YWx1ZT9lLnVucmVmKCRlKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6dWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOmllLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEMpPy52aWV3cG9ydH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChyZS52YWx1ZSwoYSxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEJlKSx7a2V5OmBncm91cC0ke2x9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOmllLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEMpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChhLChhLGkpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTpgZ3JvdXAtJHtsfS0ke2l9YH0sW2lzU2VsZWN0SXRlbShhKSYmImxhYmVsIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoemUpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmllLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJiJzZXBhcmF0b3IiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihUZSkse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmllLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoQyk/LnNlcGFyYXRvcixhLnVpPy5zZXBhcmF0b3IsYS5jbGFzc119KX0sbnVsbCw4LFsiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih3ZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczppZS52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLmNsYXNzXX0pLGRpc2FibGVkOmlzU2VsZWN0SXRlbShhKSYmYS5kaXNhYmxlZCx2YWx1ZTppc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsudmFsdWVLZXkpOmEsb25TZWxlY3Q6ZT0+aXNTZWxlY3RJdGVtKGEpJiZhLm9uU2VsZWN0Py4oZSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHtyZWZfZm9yOiEwfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0se3JlZl9mb3I6ITB9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOmllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihWZSkseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOmllLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Oml9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpfHxJWyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczppZS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtRGVzY3JpcHRpb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmcsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tdHJhaWxpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0pLGUuY3JlYXRlVk5vZGUoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZCx7bmFtZTp2LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCIsInZhbHVlIiwib25TZWxlY3QiXSkpXSw2NCkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSldKSxfOjN9LDgsWyJjbGFzcyJdKSksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpLHYuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGhlKSxlLm1lcmdlUHJvcHMoe2tleTowfSx6LnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOmllLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKEMpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO1EodC4kc2xvdHMsImNvbnRlbnQtdG9wIix7fSxudWxsLGwsaSxyKSx0ZShsLGUuY3JlYXRlVk5vZGUoZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChsZS52YWx1ZT9lLnVucmVmKCRlKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6dWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOmllLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEMpPy52aWV3cG9ydH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbCxpLHIpPT57aWYoIWwpcmV0dXJuWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHJlLnZhbHVlLChhLGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQmUpLHtrZXk6YGdyb3VwLSR7bH1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6aWUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoQyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGEsKGEsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OmBncm91cC0ke2x9LSR7aX1gfSxbaXNTZWxlY3RJdGVtKGEpJiYibGFiZWwiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih6ZSkse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6aWUudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5sYWJlbCxhLnVpPy5sYWJlbCxhLmNsYXNzXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5sYWJlbEtleSkpLDEpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmInNlcGFyYXRvciI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFRlKSx7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6aWUudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihDKT8uc2VwYXJhdG9yLGEudWk/LnNlcGFyYXRvcixhLmNsYXNzXX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHdlKSx7a2V5OjIsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmllLnZhbHVlLml0ZW0oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEuY2xhc3NdfSksZGlzYWJsZWQ6aXNTZWxlY3RJdGVtKGEpJiZhLmRpc2FibGVkLHZhbHVlOmlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay52YWx1ZUtleSk6YSxvblNlbGVjdDplPT5pc1NlbGVjdEl0ZW0oYSkmJmEub25TZWxlY3Q/LihlKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0sKCk9Pltpc1NlbGVjdEl0ZW0oYSkmJmEuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHAsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0se3JlZl9mb3I6ITB9LGEuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXIsYS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sYS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXAsYS51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6aWUudmFsdWUuaXRlbVdyYXBwZXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtV3JhcHBlcixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZShlLnVucmVmKFZlKSx7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6aWUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxhYmVsLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbUxhYmVsXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsubGFiZWxLZXkpOmEpLDEpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSxpc1NlbGVjdEl0ZW0oYSkmJihlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSl8fElbIml0ZW0tZGVzY3JpcHRpb24iXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOmllLnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1EZXNjcmlwdGlvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDppfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSksZS5jcmVhdGVWTm9kZShlLnVucmVmKHFlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOnYuc2VsZWN0ZWRJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyIsImRpc2FibGVkIiwidmFsdWUiLCJvblNlbGVjdCJdKSldLDY0KSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV07bCgiXHgzYyEtLVstLVx4M2UiKSxaKHJlLnZhbHVlLChhLG4pPT57bChYKGUudW5yZWYoQmUpLHtrZXk6YGdyb3VwLSR7bn1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6aWUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoQyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgobCxpLHIsbyk9PntpZighaSlyZXR1cm5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoYSwoYSxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6YGdyb3VwLSR7bn0tJHtsfWB9LFtpc1NlbGVjdEl0ZW0oYSkmJiJsYWJlbCI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczppZS52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/LmxhYmVsLGEudWk/LmxhYmVsLGEuY2xhc3NdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmxhYmVsS2V5KSksMSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiYic2VwYXJhdG9yIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVGUpLHtrZXk6MSwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczppZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEMpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYod2UpLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6aWUudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS5jbGFzc119KSxkaXNhYmxlZDppc1NlbGVjdEl0ZW0oYSkmJmEuZGlzYWJsZWQsdmFsdWU6aXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLnZhbHVlS2V5KTphLG9uU2VsZWN0OmU9PmlzU2VsZWN0SXRlbShhKSYmYS5vblNlbGVjdD8uKGUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0iLHtpdGVtOmEsaW5kZXg6bCx1aTppZS52YWx1ZX0sKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06YSxpbmRleDpsLHVpOmllLnZhbHVlfSwoKT0+W2lzU2VsZWN0SXRlbShhKSYmYS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTphLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdJY29uLGEudWk/Lml0ZW1MZWFkaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZyxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6YS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LHtyZWZfZm9yOiEwfSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczppZS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1XcmFwcGVyLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczppZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sYWJlbCIse2l0ZW06YSxpbmRleDpsfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay5sYWJlbEtleSk6YSksMSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KXx8SVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6aWUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9KSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYocWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGQse25hbWU6di5zZWxlY3RlZEljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV0sNjQpKSksMTI4KSldO2koIlx4M2MhLS1bLS1ceDNlIiksWihhLChhLGwpPT57aSgiXHgzYyEtLVstLVx4M2UiKSxpc1NlbGVjdEl0ZW0oYSkmJiJsYWJlbCI9PT1hLnR5cGU/aShYKGUudW5yZWYoemUpLHsiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmllLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGwsaSxyKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5sYWJlbEtleSkpLDEpXTtsKGAke2VlKGUudW5yZWYoZikoYSxrLmxhYmVsS2V5KSl9YCl9KSxfOjJ9LHIsbykpOmlzU2VsZWN0SXRlbShhKSYmInNlcGFyYXRvciI9PT1hLnR5cGU/aShYKGUudW5yZWYoVGUpLHsiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczppZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEMpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwscixvKSk6aShYKGUudW5yZWYod2UpLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6aWUudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS5jbGFzc119KSxkaXNhYmxlZDppc1NlbGVjdEl0ZW0oYSkmJmEuZGlzYWJsZWQsdmFsdWU6aXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLnZhbHVlS2V5KTphLG9uU2VsZWN0OmU9PmlzU2VsZWN0SXRlbShhKSYmYS5vblNlbGVjdD8uKGUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKGkscixuLG8pPT57aWYoIXIpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDpsLHVpOmllLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHtyZWZfZm9yOiEwfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0se3JlZl9mb3I6ITB9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOmllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihWZSkseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOmllLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpfHxJWyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczppZS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtRGVzY3JpcHRpb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmEsaW5kZXg6bH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmcsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tdHJhaWxpbmciLHtpdGVtOmEsaW5kZXg6bCx1aTppZS52YWx1ZX0pLGUuY3JlYXRlVk5vZGUoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZCx7bmFtZTp2LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXTtRKHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9LCgpPT57USh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9LCgpPT57aXNTZWxlY3RJdGVtKGEpJiZhLmljb24/cihYKGQse25hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsbixvKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj9yKFgocCxlLm1lcmdlUHJvcHMoe3NpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsbixvKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/cihYKGcsZS5tZXJnZVByb3BzKHtzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sYS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXAsYS51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCxuLG8pKTpyKCJceDNjIS0tLS1ceDNlIil9LHIsbixvKSxyKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1XcmFwcGVyIiBjbGFzcz0iJHtKKGllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KSl9IiR7b30+YCkscihYKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczppZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLG4sbyk9PntpZighcilyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXTtRKHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT57cihgJHtlZShpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsubGFiZWxLZXkpOmEpfWApfSxyLG4sbyl9KSxfOjJ9LG4sbykpLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KXx8SVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8ocihgPHNwYW4gZGF0YS1zbG90PSJpdGVtRGVzY3JpcHRpb24iIGNsYXNzPSIke0ooaWUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0iJHtvfT5gKSxRKHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Omx9LCgpPT57cihgJHtlZShlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpfWApfSxyLG4sbykscigiPC9zcGFuPiIpKTpyKCJceDNjIS0tLS1ceDNlIikscihgPC9zcGFuPjxzcGFuIGRhdGEtc2xvdD0iaXRlbVRyYWlsaW5nIiBjbGFzcz0iJHtKKGllLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KSl9IiR7b30+YCksUSh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDpsLHVpOmllLnZhbHVlfSxudWxsLHIsbixvKSxyKFgoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxsLGkscik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOnYuc2VsZWN0ZWRJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV07bChYKGQse25hbWU6di5zZWxlY3RlZEljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCxpLHIpKX0pLF86Mn0sbixvKSkscigiPC9zcGFuPiIpfSxyLG4sbyl9KSxfOjJ9LHIsbykpLGkoIlx4M2MhLS1dLS1ceDNlIil9KSxpKCJceDNjIS0tXS0tXHgzZSIpfSksXzoyfSxpLHIpKX0pLGwoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9KSxpLHIpLFEodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIix7fSxudWxsLGwsaSxyKSx2LmFycm93P2woWChlLnVucmVmKGhlKSxlLm1lcmdlUHJvcHMoei52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczppZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihDKT8uYXJyb3d9KX0pLG51bGwsaSxyKSk6bCgiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxpLHIpKX0pLF86Mn0saSxyKSl9KSxfOjJ9LHIsbikpfSksXzozfSxsKSl9fX0pLEtlPURlLnNldHVwO0RlLnNldHVwPSh0LGEpPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2VsZWN0LnZ1ZSIpLEtlP0tlKHQsYSk6dm9pZCAwfTtleHBvcnR7RGUgYXMgX307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVNlbGVjdC1EaWFpbGZVYy5tanMubWFwCg==", "chunks/build/SelectMenu-BaAPw4-k.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBhLGUgYXMgbCxFIGFzIHIsRiBhcyBuLEcgYXMgbyxIIGFzIGkscSBhcyBzLHMgYXMgdSxrIGFzIGMsdCBhcyBkLEkgYXMgcCxhQSBhcyBtLEsgYXMgZixiIGFzIGcsZyBhcyB2LEwgYXMgaCxfIGFzIHksSiBhcyBrLGFxIGFzIGIsTSBhcyB4LFAgYXMgQixPIGFzIEMsVCBhcyBTLFEgYXMgVixTIGFzIHcsUiBhcyBJLG0gYXMgcSxsIGFzIHosYXAgYXMgTn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e0YgYXMgXyx1IGFzIEwsYSBhcyAkLGIgYXMgVCxEIGFzIE19ZnJvbSIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0e3UgYXMgT31mcm9tIi4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0e3UgYXMgUCxhIGFzIEF9ZnJvbSIuL3VzZUZpbHRlci1DbENaYW9pOC5tanMiO2ltcG9ydHtnIGFzIEYsTCBhcyBELGEgYXMgSyxpIGFzIEUsYiBhcyBSLGMgYXMgaixkIGFzIFUsZSBhcyBXLGYgYXMgR31mcm9tIi4vdmlydHVhbGl6ZXItQnlxaTB1QUsubWpzIjtpbXBvcnR7UCBhcyBILGEgYXMgUSxiIGFzIEosYyBhcyBaLGQgYXMgWH1mcm9tIi4vUG9wcGVyQXJyb3ctQkV5V1VKaVEubWpzIjtpbXBvcnR7YUUgYXMgWX1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e18gYXMgZWV9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e2YgYXMgdGUsaiBhcyBhZSxnIGFzIGxlLHEgYXMgcmUsdCBhcyBuZX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0W29lLGllXT1xKCJDb21ib2JveFJvb3QiKTt2YXIgc2U9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29tYm9ib3hSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXNldFNlYXJjaFRlcm1PbkJsdXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZXNldFNlYXJjaFRlcm1PblNlbGVjdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG9wZW5PbkZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbk9uQ2xpY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxpZ25vcmVGaWx0ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVzZXRNb2RlbFZhbHVlT25DbGVhcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodE9uSG92ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiLCJoaWdobGlnaHQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6bH0pe2NvbnN0IHI9dCxuPWwse3ByaW1pdGl2ZUVsZW1lbnQ6byxjdXJyZW50RWxlbWVudDppfT1iKCkse211bHRpcGxlOnMsZGlzYWJsZWQ6dSxpZ25vcmVGaWx0ZXI6YyxyZXNldFNlYXJjaFRlcm1PblNlbGVjdDpkLG9wZW5PbkZvY3VzOnAsb3Blbk9uQ2xpY2s6bSxkaXI6ZixyZXNldE1vZGVsVmFsdWVPbkNsZWFyOmcsaGlnaGxpZ2h0T25Ib3Zlcjp2fT1lLnRvUmVmcyhyKSxoPU8oZikseT13KHIsIm1vZGVsVmFsdWUiLG4se2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRWYWx1ZT8/KHMudmFsdWU/W106dm9pZCAwKSxwYXNzaXZlOnZvaWQgMD09PXIubW9kZWxWYWx1ZSxkZWVwOiEwfSksaz13KHIsIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09ci5vcGVufSk7Y29uc3QgeD1OKCksQj1lLnJlZighMSksQz1lLnJlZighMSksUz1lLnJlZigpLFY9ZS5yZWYoKSxJPWUuY29tcHV0ZWQoKCk9Pm8udmFsdWU/LmhpZ2hsaWdodGVkRWxlbWVudD8/dm9pZCAwKSxxPWUucmVmKG5ldyBNYXApLHo9ZS5yZWYobmV3IE1hcCkse2NvbnRhaW5zOl99PUEoe3NlbnNpdGl2aXR5OiJiYXNlIn0pLEw9ZS5yZWYoIiIpLCQ9ZS5jb21wdXRlZChlPT57aWYoIUwudmFsdWV8fHIuaWdub3JlRmlsdGVyfHxDLnZhbHVlKXJldHVybntjb3VudDpxLnZhbHVlLnNpemUsaXRlbXM6ZT8uaXRlbXM/P25ldyBNYXAsZ3JvdXBzOmU/Lmdyb3Vwcz8/bmV3IFNldCh6LnZhbHVlLmtleXMoKSl9O2xldCB0PTA7Y29uc3QgYT1uZXcgTWFwLGw9bmV3IFNldDtmb3IoY29uc3RbZSxsXW9mIHEudmFsdWUpe2NvbnN0IHI9XyhsLEwudmFsdWUpO2Euc2V0KGUscj8xOjApLHImJnQrK31mb3IoY29uc3RbZSx0XW9mIHoudmFsdWUpZm9yKGNvbnN0IHIgb2YgdClpZihhLmdldChyKT4wKXtsLmFkZChlKTticmVha31yZXR1cm57Y291bnQ6dCxpdGVtczphLGdyb3VwczpsfX0pO3JldHVybiBlLmdldEN1cnJlbnRJbnN0YW5jZSgpLGEoe2ZpbHRlcmVkOiQsaGlnaGxpZ2h0ZWRFbGVtZW50OkksaGlnaGxpZ2h0SXRlbTpvLnZhbHVlPy5oaWdobGlnaHRJdGVtLGhpZ2hsaWdodEZpcnN0SXRlbTpvLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0saGlnaGxpZ2h0U2VsZWN0ZWQ6by52YWx1ZT8uaGlnaGxpZ2h0U2VsZWN0ZWR9KSxpZSh7bW9kZWxWYWx1ZTp5LG11bHRpcGxlOnMsZGlzYWJsZWQ6dSxvcGVuOmssb25PcGVuQ2hhbmdlOmFzeW5jIGZ1bmN0aW9uKHQpe2sudmFsdWU9dCxMLnZhbHVlPSIiLHQ/KGF3YWl0IGUubmV4dFRpY2soKSxvLnZhbHVlPy5oaWdobGlnaHRTZWxlY3RlZCgpLEIudmFsdWU9ITAsUy52YWx1ZT8uZm9jdXMoKSk6KEIudmFsdWU9ITEsc2V0VGltZW91dCgoKT0+eyF0JiZyLnJlc2V0U2VhcmNoVGVybU9uQmx1ciYmeC50cmlnZ2VyKCl9LDEpKX0sY29udGVudElkOiIiLGlzVXNlcklucHV0dGVkOkIsaXNWaXJ0dWFsOkMsaW5wdXRFbGVtZW50OlMsaGlnaGxpZ2h0ZWRFbGVtZW50Okksb25JbnB1dEVsZW1lbnRDaGFuZ2U6ZT0+Uy52YWx1ZT1lLHRyaWdnZXJFbGVtZW50OlYsb25UcmlnZ2VyRWxlbWVudENoYW5nZTplPT5WLnZhbHVlPWUscGFyZW50RWxlbWVudDppLHJlc2V0U2VhcmNoVGVybU9uU2VsZWN0OmQsb25SZXNldFNlYXJjaFRlcm06eC5vbixhbGxJdGVtczpxLGFsbEdyb3Vwczp6LGZpbHRlclNlYXJjaDpMLGZpbHRlclN0YXRlOiQsaWdub3JlRmlsdGVyOmMsb3Blbk9uRm9jdXM6cCxvcGVuT25DbGljazptLHJlc2V0TW9kZWxWYWx1ZU9uQ2xlYXI6Z30pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSiksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVyksZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6b30sdC4kYXR0cnMse21vZGVsVmFsdWU6ZS51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8KGFbMF09dD0+ZS5pc1JlZih5KT95LnZhbHVlPXQ6bnVsbCksc3R5bGU6e3BvaW50ZXJFdmVudHM6ZS51bnJlZihrKT8iYXV0byI6dm9pZCAwfSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpcjplLnVucmVmKGgpLG11bHRpcGxlOmUudW5yZWYocyksbmFtZTp0Lm5hbWUscmVxdWlyZWQ6dC5yZXF1aXJlZCxkaXNhYmxlZDplLnVucmVmKHUpLCJoaWdobGlnaHQtb24taG92ZXIiOmUudW5yZWYodiksYnk6ci5ieSxvbkhpZ2hsaWdodDphWzFdfHwoYVsxXT1lPT5uKCJoaWdobGlnaHQiLGUpKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46ZS51bnJlZihrKSxtb2RlbFZhbHVlOmUudW5yZWYoeSl9KV0pLF86M30sMTYsWyJtb2RlbFZhbHVlIiwic3R5bGUiLCJhcyIsImFzLWNoaWxkIiwiZGlyIiwibXVsdGlwbGUiLCJuYW1lIiwicmVxdWlyZWQiLCJkaXNhYmxlZCIsImhpZ2hsaWdodC1vbi1ob3ZlciIsImJ5Il0pXSksXzozfSkpfX0pLHVlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94QW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0e2ZvcndhcmRSZWY6YX09eCgpO3JldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSCkseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOnQucmVmZXJlbmNlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKHtyZWY6ZS51bnJlZihhKSwiYXMtY2hpbGQiOnQuYXNDaGlsZCxhczp0LmFzfSx0LiRhdHRycykse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30sOCxbInJlZmVyZW5jZSJdKSl9fSk7Y29uc3RbY2UsZGVdPXEoIkNvbWJvYm94Q29udGVudCIpO3ZhciBwZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveENvbnRlbnRJbXBsIixwcm9wczp7cG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImlubGluZSJ9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZGVXaGVuRW1wdHk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQscj1hLHtwb3NpdGlvbjpufT1lLnRvUmVmcyhsKSxvPW9lKCksaT1lLmNvbXB1dGVkKCgpPT5vLmlnbm9yZUZpbHRlci52YWx1ZT8wPT09by5hbGxJdGVtcy52YWx1ZS5zaXplOjA9PT1vLmZpbHRlclN0YXRlLnZhbHVlLmNvdW50KSx7Zm9yd2FyZFJlZjpzfT14KCk7JChsLmJvZHlMb2NrKSxaKCksVChvLnBhcmVudEVsZW1lbnQpO2NvbnN0IHU9ZS5jb21wdXRlZCgoKT0+InBvcHBlciI9PT1sLnBvc2l0aW9uP2w6e30pLGM9eih1LnZhbHVlKSxkPXtib3hTaXppbmc6ImJvcmRlci1ib3giLCItLXJla2EtY29tYm9ib3gtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtY29tYm9ib3gtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifTtyZXR1cm4gZGUoe3Bvc2l0aW9uOm59KSxlLnJlZighMSksKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihHKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHsiYXMtY2hpbGQiOiIiLG9uTW91bnRBdXRvRm9jdXM6YVs1XXx8KGFbNV09ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiXSkpLG9uVW5tb3VudEF1dG9Gb2N1czphWzZdfHwoYVs2XT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihNKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0LmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkRpc21pc3M6YVswXXx8KGFbMF09dD0+ZS51bnJlZihvKS5vbk9wZW5DaGFuZ2UoITEpKSxvbkZvY3VzT3V0c2lkZTphWzFdfHwoYVsxXT10PT57ZS51bnJlZihvKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyh0LnRhcmdldCkmJnQucHJldmVudERlZmF1bHQoKSxyKCJmb2N1c091dHNpZGUiLHQpfSksb25JbnRlcmFjdE91dHNpZGU6YVsyXXx8KGFbMl09ZT0+cigiaW50ZXJhY3RPdXRzaWRlIixlKSksb25Fc2NhcGVLZXlEb3duOmFbM118fChhWzNdPWU9PnIoImVzY2FwZUtleURvd24iLGUpKSxvblBvaW50ZXJEb3duT3V0c2lkZTphWzRdfHwoYVs0XT10PT57ZS51bnJlZihvKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyh0LnRhcmdldCkmJnQucHJldmVudERlZmF1bHQoKSxyKCJwb2ludGVyRG93bk91dHNpZGUiLHQpfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgicG9wcGVyIj09PWUudW5yZWYobik/ZS51bnJlZihYKTplLnVucmVmKEIpKSxlLm1lcmdlUHJvcHMoey4uLnQuJGF0dHJzLC4uLmUudW5yZWYoYyl9LHtpZDplLnVucmVmKG8pLmNvbnRlbnRJZCxyZWY6ZS51bnJlZihzKSwiZGF0YS1zdGF0ZSI6ZS51bnJlZihvKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1lbXB0eSI6aS52YWx1ZT8iIjp2b2lkIDAsc3R5bGU6e2Rpc3BsYXk6bC5oaWRlV2hlbkVtcHR5JiZpLnZhbHVlPyJub25lIjoiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdXRsaW5lOiJub25lIiwuLi4icG9wcGVyIj09PWUudW5yZWYobik/ZDp7fX19KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImRhdGEtc3RhdGUiLCJkYXRhLWVtcHR5Iiwic3R5bGUiXSkpXSksXzozfSw4LFsiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIl0pXSksXzozfSldKSxfOjN9KSl9fSksbWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29tYm9ib3hBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHQpe2NvbnN0IGE9dCxsPW9lKCkscj1jZSgpO3JldHVybiB4KCksKHQsbik9PmUudW5yZWYobCkub3Blbi52YWx1ZSYmInBvcHBlciI9PT1lLnVucmVmKHIpLnBvc2l0aW9uLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihRKSxlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LGEpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pLGZlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94Q2FuY2VsIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQ7eCgpO2NvbnN0IGw9b2UoKTtmdW5jdGlvbiBoYW5kbGVDbGljaygpe2wuZmlsdGVyU2VhcmNoLnZhbHVlPSIiLGwuaW5wdXRFbGVtZW50LnZhbHVlJiYobC5pbnB1dEVsZW1lbnQudmFsdWUudmFsdWU9IiIsbC5pbnB1dEVsZW1lbnQudmFsdWUuZm9jdXMoKSksbC5yZXNldE1vZGVsVmFsdWVPbkNsZWFyPy52YWx1ZSYmKGwubW9kZWxWYWx1ZS52YWx1ZT1sLm11bHRpcGxlLnZhbHVlP1tdOm51bGwpfXJldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKHt0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDB9LGEse3RhYmluZGV4OiItMSIsb25DbGljazpoYW5kbGVDbGlja30pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInR5cGUiXSkpfX0pLGdlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94Q29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWRlV2hlbkVtcHR5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIl0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3QgbD1yKHQsYSkse2ZvcndhcmRSZWY6bn09eCgpLG89b2UoKTtyZXR1cm4gby5jb250ZW50SWR8fD1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1jb250ZW50IiksKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWKSx7cHJlc2VudDp0LmZvcmNlTW91bnR8fGUudW5yZWYobykub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwZSxlLm1lcmdlUHJvcHMoey4uLmUudW5yZWYobCksLi4udC4kYXR0cnN9LHtyZWY6ZS51bnJlZihuKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNildKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSx2ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveEVtcHR5Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LGw9b2UoKSxyPWUuY29tcHV0ZWQoKCk9PmwuaWdub3JlRmlsdGVyLnZhbHVlPzA9PT1sLmFsbEl0ZW1zLnZhbHVlLnNpemU6MD09PWwuZmlsdGVyU3RhdGUudmFsdWUuY291bnQpO3JldHVybih0LGwpPT5yLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCKSxlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LGEpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bbFswXXx8KGxbMF09ZS5jcmVhdGVUZXh0Vk5vZGUoIk5vIG9wdGlvbnMiKSldKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pO2NvbnN0W2hlLHllXT1xKCJDb21ib2JveEdyb3VwIik7dmFyIGtlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94R3JvdXAiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1ncm91cCIpLHI9b2UoKSxuPWUuY29tcHV0ZWQoKCk9PiEhci5pZ25vcmVGaWx0ZXIudmFsdWV8fCghci5maWx0ZXJTZWFyY2gudmFsdWV8fHIuZmlsdGVyU3RhdGUudmFsdWUuZ3JvdXBzLmhhcyhsKSkpLG89eWUoe2lkOmwsbGFiZWxJZDoiIn0pO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVSksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKGwpLCJhcmlhLWxhYmVsbGVkYnkiOmUudW5yZWYobykubGFiZWxJZH0sYSx7aGlkZGVuOiFuLnZhbHVlfHx2b2lkIDB9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsImhpZGRlbiJdKSl9fSksYmU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29tYm9ib3hJbnB1dCIscHJvcHM6e2Rpc3BsYXlWYWx1ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaW5wdXQifX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxyPWEsbj1vZSgpLG89RSgpLHtwcmltaXRpdmVFbGVtZW50Oml9PWIoKSxzPXcobCwibW9kZWxWYWx1ZSIscix7cGFzc2l2ZTp2b2lkIDA9PT1sLm1vZGVsVmFsdWV9KTtmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGUpe24ub3Blbi52YWx1ZXx8bi5vbk9wZW5DaGFuZ2UoITApfWZ1bmN0aW9uIGhhbmRsZUlucHV0KHQpe2NvbnN0IGE9dC50YXJnZXQ7bi5vcGVuLnZhbHVlP24uZmlsdGVyU2VhcmNoLnZhbHVlPWEudmFsdWU6KG4ub25PcGVuQ2hhbmdlKCEwKSxlLm5leHRUaWNrKCgpPT57YS52YWx1ZSYmKG4uZmlsdGVyU2VhcmNoLnZhbHVlPWEudmFsdWUsby5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9KSl9ZnVuY3Rpb24gaGFuZGxlRm9jdXMoKXtuLm9wZW5PbkZvY3VzLnZhbHVlJiYhbi5vcGVuLnZhbHVlJiZuLm9uT3BlbkNoYW5nZSghMCl9ZnVuY3Rpb24gaGFuZGxlQmx1cihlKXtpZighbi5vcGVuLnZhbHVlKXJldHVybjtjb25zdCB0PWUucmVsYXRlZFRhcmdldDtpZighdClyZXR1cm47Y29uc3QgYT1uLnBhcmVudEVsZW1lbnQudmFsdWU/LmNvbnRhaW5zKHQpLGw9KHZvaWQgMCkuZ2V0RWxlbWVudEJ5SWQobi5jb250ZW50SWQpPy5jb250YWlucyh0KTthfHxsfHxuLm9uT3BlbkNoYW5nZSghMSl9ZnVuY3Rpb24gaGFuZGxlQ2xpY2soKXtuLm9wZW5PbkNsaWNrLnZhbHVlJiYhbi5vcGVuLnZhbHVlJiZuLm9uT3BlbkNoYW5nZSghMCl9ZnVuY3Rpb24gcmVzZXRTZWFyY2hUZXJtKCl7Y29uc3QgdD1uLm1vZGVsVmFsdWUudmFsdWU7bC5kaXNwbGF5VmFsdWU/cy52YWx1ZT1sLmRpc3BsYXlWYWx1ZSh0KTpuLm11bHRpcGxlLnZhbHVlfHwhdHx8QXJyYXkuaXNBcnJheSh0KT9zLnZhbHVlPSIiOnMudmFsdWU9Im9iamVjdCIhPXR5cGVvZiB0P3QudG9TdHJpbmcoKToiIixlLm5leHRUaWNrKCgpPT57cy52YWx1ZT1zLnZhbHVlfSl9cmV0dXJuIG4ub25SZXNldFNlYXJjaFRlcm0oKCk9PntyZXNldFNlYXJjaFRlcm0oKX0pLGUud2F0Y2gobi5tb2RlbFZhbHVlLGFzeW5jKCk9Pnshbi5pc1VzZXJJbnB1dHRlZC52YWx1ZSYmbi5yZXNldFNlYXJjaFRlcm1PblNlbGVjdC52YWx1ZSYmcmVzZXRTZWFyY2hUZXJtKCl9LHtpbW1lZGlhdGU6ITAsZGVlcDohMH0pLGUud2F0Y2gobi5maWx0ZXJTdGF0ZSwoZSx0KT0+e24uaXNWaXJ0dWFsLnZhbHVlfHwwIT09dC5jb3VudHx8by5oaWdobGlnaHRGaXJzdEl0ZW0oKX0pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUikse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjppLG1vZGVsVmFsdWU6ZS51bnJlZihzKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8KGFbMF09dD0+ZS5pc1JlZihzKT9zLnZhbHVlPXQ6bnVsbCksYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiYXV0by1mb2N1cyI6dC5hdXRvRm9jdXMsZGlzYWJsZWQ6dC5kaXNhYmxlZCwiYXJpYS1leHBhbmRlZCI6ZS51bnJlZihuKS5vcGVuLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjplLnVucmVmKG4pLmNvbnRlbnRJZCwiYXJpYS1hdXRvY29tcGxldGUiOiJsaXN0Iixyb2xlOiJjb21ib2JveCIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uQ2xpY2s6aGFuZGxlQ2xpY2ssb25JbnB1dDpoYW5kbGVJbnB1dCxvbktleWRvd246ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoaGFuZGxlS2V5RG93bixbInByZXZlbnQiXSksWyJkb3duIiwidXAiXSksb25Gb2N1czpoYW5kbGVGb2N1cyxvbkJsdXI6aGFuZGxlQmx1cn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJtb2RlbFZhbHVlIiwiYXMiLCJhcy1jaGlsZCIsImF1dG8tZm9jdXMiLCJkaXNhYmxlZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwib25LZXlkb3duIl0pKX19KSx4ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveEl0ZW0iLHByb3BzOnt0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxyPWEsbj1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1pdGVtIiksbz1vZSgpO2hlKG51bGwpO2NvbnN0e3ByaW1pdGl2ZUVsZW1lbnQ6aX09YigpO2lmKCIiPT09bC52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoIkEgPENvbWJvYm94SXRlbSAvPiBtdXN0IGhhdmUgYSB2YWx1ZSBwcm9wIHRoYXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBDb21ib2JveCB2YWx1ZSBjYW4gYmUgc2V0IHRvIGFuIGVtcHR5IHN0cmluZyB0byBjbGVhciB0aGUgc2VsZWN0aW9uIGFuZCBzaG93IHRoZSBwbGFjZWhvbGRlci4iKTtjb25zdCBzPWUuY29tcHV0ZWQoKCk9PntpZihvLmlzVmlydHVhbC52YWx1ZXx8by5pZ25vcmVGaWx0ZXIudmFsdWV8fCFvLmZpbHRlclNlYXJjaC52YWx1ZSlyZXR1cm4hMDt7Y29uc3QgZT1vLmZpbHRlclN0YXRlLnZhbHVlLml0ZW1zLmdldChuKTtyZXR1cm4gdm9pZCAwPT09ZXx8ZT4wfX0pO3JldHVybih0LGEpPT5zLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihEKSxlLm1lcmdlUHJvcHMoe2tleTowfSxsLHtpZDplLnVucmVmKG4pLHJlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjppLGRpc2FibGVkOmUudW5yZWYobykuZGlzYWJsZWQudmFsdWV8fHQuZGlzYWJsZWQsb25TZWxlY3Q6YVswXXx8KGFbMF09YT0+e3IoInNlbGVjdCIsYSksYS5kZWZhdWx0UHJldmVudGVkfHwoZS51bnJlZihvKS5tdWx0aXBsZS52YWx1ZXx8dC5kaXNhYmxlZHx8ZS51bnJlZihvKS5kaXNhYmxlZC52YWx1ZT9lLnVucmVmKG8pLm11bHRpcGxlLnZhbHVlJiZlLnVucmVmKG8pLmlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTooYS5wcmV2ZW50RGVmYXVsdCgpLGUudW5yZWYobykub25PcGVuQ2hhbmdlKCExKSxlLnVucmVmKG8pLm1vZGVsVmFsdWUudmFsdWU9bC52YWx1ZSkpfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC52YWx1ZSksMSldKV0pLF86M30sMTYsWyJpZCIsImRpc2FibGVkIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pLEJlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94SXRlbUluZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKHQpe2NvbnN0IGE9dDtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLENlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94TGFiZWwiLHByb3BzOntmb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LHNldHVwKHQpe2NvbnN0IGE9dDt4KCk7Y29uc3QgbD1oZSh7aWQ6IiIsbGFiZWxJZDoiIn0pO3JldHVybiBsLmxhYmVsSWR8fD1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1ncm91cC1sYWJlbCIpLCh0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKGEse2lkOmUudW5yZWYobCkubGFiZWxJZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxTZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGE9dDtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFMpLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFZlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10O3JldHVybiB4KCksKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCKSxlLm1lcmdlUHJvcHMoYSx7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx3ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveFRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHQpe2NvbnN0IGE9dCx7Zm9yd2FyZFJlZjpsfT14KCkscj1vZSgpLG49ZS5jb21wdXRlZCgoKT0+YS5kaXNhYmxlZHx8ci5kaXNhYmxlZC52YWx1ZXx8ITEpO3JldHVybih0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKGEse3JlZjplLnVucmVmKGwpLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCx0YWJpbmRleDoiLTEiLCJhcmlhLWxhYmVsIjoiU2hvdyBwb3B1cCIsImFyaWEtaGFzcG9wdXAiOiJsaXN0Ym94IiwiYXJpYS1leHBhbmRlZCI6ZS51bnJlZihyKS5vcGVuLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjplLnVucmVmKHIpLmNvbnRlbnRJZCwiZGF0YS1zdGF0ZSI6ZS51bnJlZihyKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixkaXNhYmxlZDpuLnZhbHVlLCJkYXRhLWRpc2FibGVkIjpuLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1kaXNhYmxlZCI6bi52YWx1ZT8/dm9pZCAwLG9uQ2xpY2s6b1swXXx8KG9bMF09dD0+ZS51bnJlZihyKS5vbk9wZW5DaGFuZ2UoIWUudW5yZWYocikub3Blbi52YWx1ZSkpfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsidHlwZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiXSkpfX0pLEllPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94VmlydHVhbGl6ZXIiLHByb3BzOntvcHRpb25zOnt0eXBlOkFycmF5LHJlcXVpcmVkOiEwfSxvdmVyc2Nhbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGVzdGltYXRlU2l6ZTp7dHlwZTpbTnVtYmVyLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sdGV4dENvbnRlbnQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuIG9lKCkuaXNWaXJ0dWFsLnZhbHVlPSEwLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGosZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhhKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KGE9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpKV0pLF86M30sMTYpKX19KTtjb25zdCBxZT17c2xvdHM6e2Jhc2U6WyJyZWxhdGl2ZSBncm91cCByb3VuZGVkLW1kIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxlYWRpbmc6ImFic29sdXRlIGluc2V0LXktMCBzdGFydC0wIGZsZXggaXRlbXMtY2VudGVyIixsZWFkaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIGVuZC0wIGZsZXggaXRlbXMtY2VudGVyIix0cmFpbGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIix2YWx1ZToidHJ1bmNhdGUgcG9pbnRlci1ldmVudHMtbm9uZSIscGxhY2Vob2xkZXI6InRydW5jYXRlIHRleHQtZGltbWVkIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsY29udGVudDpbIm1heC1oLTYwIHctKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aCkgYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBvdmVyZmxvdy1oaWRkZW4gb3JpZ2luLSgtLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGZsZXgtY29sIiwib3JpZ2luLSgtLXJla2EtY29tYm9ib3gtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSB3LSgtLXJla2EtY29tYm9ib3gtdHJpZ2dlci13aWR0aCkiXSx2aWV3cG9ydDoicmVsYXRpdmUgc2Nyb2xsLXB5LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSIsZ3JvdXA6InAtMSBpc29sYXRlIixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsbGFiZWw6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsc2VwYXJhdG9yOiItbXgtMSBteS0xIGgtcHggYmctYm9yZGVyIixpdGVtOlsiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtc3RhcnQgc2VsZWN0LW5vbmUgb3V0bGluZS1ub25lIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTppbnNldC1weCBiZWZvcmU6cm91bmRlZC1tZCBkYXRhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNzUgdGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInNocmluay0wIHRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWdyb3VwLWRhdGEtZGlzYWJsZWQ6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtTGVhZGluZ0NoaXA6InNocmluay0wIixpdGVtTGVhZGluZ0NoaXBTaXplOiIiLGl0ZW1UcmFpbGluZzoibXMtYXV0byBpbmxpbmUtZmxleCBnYXAtMS41IGl0ZW1zLWNlbnRlciIsaXRlbVRyYWlsaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1XcmFwcGVyOiJmbGV4LTEgZmxleCBmbGV4LWNvbCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQiLGlucHV0OiJib3JkZXItYiBib3JkZXItZGVmYXVsdCIsZm9jdXNTY29wZToiZmxleCBmbGV4LWNvbCBtaW4taC0wIix0cmFpbGluZ0NsZWFyOiJwLTAifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1lLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXMtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0iLHZlcnRpY2FsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWItbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtdC1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSJ9LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC14cyBnYXAtMSIsbGVhZGluZzoicHMtMiIsdHJhaWxpbmc6InBlLTIiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xIHRleHQtWzEwcHhdLzMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixlbXB0eToicC0yIHRleHQteHMifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQiLGxhYmVsOiJwLTEuNSB0ZXh0LVsxMHB4XS8zIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMi41IHRleHQteHMifSxtZDp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQtc20gZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMi41IHRleHQtc20ifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtc20gZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSIsbGFiZWw6InAtMiB0ZXh0LXhzIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMyB0ZXh0LXNtIn0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02IixsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS02IixpdGVtTGVhZGluZ0F2YXRhclNpemU6InhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNiIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibGciLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsZW1wdHk6InAtMyB0ZXh0LWJhc2UifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIGhvdmVyOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWRlZmF1bHQiLHNvZnQ6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctZWxldmF0ZWQvNTAiLHN1YnRsZToidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1hY2NlbnRlZC83NSBkaXNhYmxlZDpiZy1lbGV2YXRlZCIsZ2hvc3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCIsbm9uZToidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCJ9LGNvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSxsZWFkaW5nOnt0cnVlOiIifSx0cmFpbGluZzp7dHJ1ZToiIn0sbG9hZGluZzp7dHJ1ZToiIn0saGlnaGxpZ2h0Ont0cnVlOiIifSxmaXhlZDp7ZmFsc2U6IiJ9LHR5cGU6e2ZpbGU6ImZpbGU6bWUtMS41IGZpbGU6Zm9udC1tZWRpdW0gZmlsZTp0ZXh0LW11dGVkIGZpbGU6b3V0bGluZS1ub25lIn0scG9zaXRpb246e3BvcHBlcjp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIn0sIml0ZW0tYWxpZ25lZCI6e2NvbnRlbnQ6IiJ9fSx2aXJ0dWFsaXplOnt0cnVlOnt2aWV3cG9ydDoicC0xIGlzb2xhdGUifSxmYWxzZTp7dmlld3BvcnQ6ImRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW52ZXJ0ZWQifSx7bGVhZGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBzLTcifSx7bGVhZGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBzLTgifSx7bGVhZGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBzLTkifSx7bGVhZGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBzLTEwIn0se2xlYWRpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwcy0xMSJ9LHt0cmFpbGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBlLTcifSx7dHJhaWxpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwZS04In0se3RyYWlsaW5nOiEwLHNpemU6Im1kIixjbGFzczoicGUtOSJ9LHt0cmFpbGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBlLTEwIn0se3RyYWlsaW5nOiEwLHNpemU6InhsIixjbGFzczoicGUtMTEifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtmaXhlZDohMSxzaXplOiJ4cyIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToic20iLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6Im1kIixjbGFzczoibWQ6dGV4dC1zbSJ9LHtmaXhlZDohMSxzaXplOiJsZyIsY2xhc3M6Im1kOnRleHQtc20ifV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCIsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUiLHBvc2l0aW9uOiJwb3BwZXIifX0semU9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVU2VsZWN0TWVudSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6ZS5tZXJnZU1vZGVscyh7aWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNlYXJjaElucHV0Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzZWxlY3RlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xlYXI6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sY2xlYXJJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sdmlydHVhbGl6ZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifSxkZXNjcmlwdGlvbktleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRlc2NyaXB0aW9uIn0saXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxNb2RpZmllcnM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNyZWF0ZUl0ZW06e3R5cGU6W0Jvb2xlYW4sU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITF9LGZpbHRlckZpZWxkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saWdub3JlRmlsdGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXNEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlc2V0U2VhcmNoVGVybU9uQmx1cjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHJlc2V0U2VhcmNoVGVybU9uU2VsZWN0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0scmVzZXRNb2RlbFZhbHVlT25DbGVhcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGhpZ2hsaWdodE9uSG92ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYnk6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7c2VhcmNoVGVybTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2VhcmNoVGVybU1vZGlmaWVyczp7fX0pLGVtaXRzOmUubWVyZ2VNb2RlbHMoWyJjaGFuZ2UiLCJibHVyIiwiZm9jdXMiLCJjcmVhdGUiLCJjbGVhciIsImhpZ2hsaWdodCIsInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm9wZW4iXSxbInVwZGF0ZTpzZWFyY2hUZXJtIl0pLHNldHVwKGIse2V4cG9zZTp4LGVtaXQ6Qn0pe2NvbnN0IFM9YixWPUIsdz1lLnVzZVNsb3RzKCkscT1lLnVzZU1vZGVsKGIsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSkse3Q6en09dCgpLE49YSgpLEw9bCgic2VsZWN0TWVudSIsUykse2ZpbHRlckdyb3VwczokfT1QKCksVD1yKG4oUywibW9kZWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsIm9wZW4iLCJkZWZhdWx0T3BlbiIsInJlcXVpcmVkIiwibXVsdGlwbGUiLCJyZXNldFNlYXJjaFRlcm1PbkJsdXIiLCJyZXNldFNlYXJjaFRlcm1PblNlbGVjdCIsInJlc2V0TW9kZWxWYWx1ZU9uQ2xlYXIiLCJoaWdobGlnaHRPbkhvdmVyIiwiYnkiKSxWKSxNPW8oZS50b1JlZigoKT0+Uy5wb3J0YWwpKSxPPWUudG9SZWYoKCk9PlkoUy5jb250ZW50LHtzaWRlOiJib3R0b20iLHNpZGVPZmZzZXQ6OCxjb2xsaXNpb25QYWRkaW5nOjgscG9zaXRpb246InBvcHBlciJ9KSksQT1lLnRvUmVmKCgpPT5ZKFMuYXJyb3cse3JvdW5kZWQ6ITB9KSksRD1lLmNvbXB1dGVkKCgpPT4ib2JqZWN0Ij09dHlwZW9mIFMuY2xlYXI/Uy5jbGVhcjp7fSksSz1lLnRvUmVmKCgpPT4hIVMudmlydHVhbGl6ZSYmWSgiYm9vbGVhbiI9PXR5cGVvZiBTLnZpcnR1YWxpemU/e306Uy52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6RihBZS52YWx1ZSx6ZS52YWx1ZXx8Im1kIixTLmRlc2NyaXB0aW9uS2V5LCEhd1siaXRlbS1kZXNjcmlwdGlvbiJdKX0pKSxFPWUudG9SZWYoKCk9PlkoUy5zZWFyY2hJbnB1dCx7cGxhY2Vob2xkZXI6eigic2VsZWN0TWVudS5zZWFyY2giKSx2YXJpYW50OiJub25lIn0pKSx7ZW1pdEZvcm1CbHVyOlIsZW1pdEZvcm1Gb2N1czpqLGVtaXRGb3JtSW5wdXQ6VSxlbWl0Rm9ybUNoYW5nZTpXLHNpemU6Ryxjb2xvcjpILGlkOlEsbmFtZTpKLGhpZ2hsaWdodDpaLGRpc2FibGVkOlgsYXJpYUF0dHJzOm9lfT1pKFMpLHtvcmllbnRhdGlvbjppZSxzaXplOmNlfT1zKFMpLHtpc0xlYWRpbmc6ZGUsaXNUcmFpbGluZzpwZSxsZWFkaW5nSWNvbk5hbWU6aGUsdHJhaWxpbmdJY29uTmFtZTp5ZX09dShlLnRvUmVmKCgpPT5ZKFMse3RyYWlsaW5nSWNvbjpOLnVpLmljb25zLmNoZXZyb25Eb3dufSkpKSx6ZT1lLmNvbXB1dGVkKCgpPT5jZS52YWx1ZXx8Ry52YWx1ZSksW05lLF9lXT1jKCksW0xlLCRlXT1jKHtwcm9wczp7aXRlbTp7dHlwZTpbT2JqZWN0LFN0cmluZyxOdW1iZXIsQm9vbGVhbl0scmVxdWlyZWQ6ITB9LGluZGV4Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX19fSksVGU9ZS5jb21wdXRlZCgoKT0+ZCh7ZXh0ZW5kOmQocWUpLC4uLk4udWk/LnNlbGVjdE1lbnV8fHt9fSkoe2NvbG9yOkgudmFsdWUsdmFyaWFudDpTLnZhcmlhbnQsc2l6ZTp6ZT8udmFsdWUsbG9hZGluZzpTLmxvYWRpbmcsaGlnaGxpZ2h0OloudmFsdWUsbGVhZGluZzpkZS52YWx1ZXx8ISFTLmF2YXRhcnx8ISF3LmxlYWRpbmcsdHJhaWxpbmc6cGUudmFsdWV8fCEhdy50cmFpbGluZyxmaWVsZEdyb3VwOmllLnZhbHVlLHZpcnR1YWxpemU6ISFTLnZpcnR1YWxpemV9KSk7ZnVuY3Rpb24gZGlzcGxheVZhbHVlKGUpe2lmKFMubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9ZS5tYXAoZT0+QyhPZS52YWx1ZSxlLHtsYWJlbEtleTpTLmxhYmVsS2V5LHZhbHVlS2V5OlMudmFsdWVLZXksYnk6Uy5ieX0pKS5maWx0ZXIoZT0+bnVsbCE9ZSYmIiIhPT1lKTtyZXR1cm4gdC5sZW5ndGg+MD90LmpvaW4oIiwgIik6dm9pZCAwfXJldHVybiBDKE9lLnZhbHVlLGUse2xhYmVsS2V5OlMubGFiZWxLZXksdmFsdWVLZXk6Uy52YWx1ZUtleSxieTpTLmJ5fSl9Y29uc3QgTWU9ZS5jb21wdXRlZCgoKT0+Uy5pdGVtcz8ubGVuZ3RoP3AoUy5pdGVtcyk/Uy5pdGVtczpbUy5pdGVtc106W10pLE9lPWUuY29tcHV0ZWQoKCk9Pk1lLnZhbHVlLmZsYXRNYXAoZT0+ZSkpLFBlPWUuY29tcHV0ZWQoKCk9PntpZihTLmlnbm9yZUZpbHRlcnx8IXEudmFsdWUpcmV0dXJuIE1lLnZhbHVlO2NvbnN0IGU9QXJyYXkuaXNBcnJheShTLmZpbHRlckZpZWxkcyk/Uy5maWx0ZXJGaWVsZHM6W1MubGFiZWxLZXldO3JldHVybiAkKE1lLnZhbHVlLHEudmFsdWUse2ZpZWxkczplLGlzU3RydWN0dXJhbDplPT5pc1NlbGVjdEl0ZW0oZSkmJiEhZS50eXBlJiZbImxhYmVsIiwic2VwYXJhdG9yIl0uaW5jbHVkZXMoZS50eXBlKX0pfSksQWU9ZS5jb21wdXRlZCgoKT0+UGUudmFsdWUuZmxhdE1hcChlPT5lKSksRmU9ZS5jb21wdXRlZCgoKT0+e2lmKCFTLmNyZWF0ZUl0ZW18fCFxLnZhbHVlKXJldHVybiExO2NvbnN0IGU9Uy52YWx1ZUtleT97W1MudmFsdWVLZXldOnEudmFsdWV9OnEudmFsdWU7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBTLmNyZWF0ZUl0ZW0mJiJhbHdheXMiPT09Uy5jcmVhdGVJdGVtLndoZW58fCJhbHdheXMiPT09Uy5jcmVhdGVJdGVtPyFBZS52YWx1ZS5maW5kKHQ9Pm0odCxlLFMuYnk/P1MudmFsdWVLZXkpKTohQWUudmFsdWUubGVuZ3RofSksRGU9ZS5jb21wdXRlZCgoKT0+Im9iamVjdCI9PXR5cGVvZiBTLmNyZWF0ZUl0ZW0/Uy5jcmVhdGVJdGVtLnBvc2l0aW9uOiJib3R0b20iKSxLZT1lLnVzZVRlbXBsYXRlUmVmKCJ0cmlnZ2VyUmVmIik7ZnVuY3Rpb24gb25VcGRhdGUodCl7aWYoZS50b1JhdyhTLm1vZGVsVmFsdWUpPT09dClyZXR1cm47IVMubW9kZWxNb2RpZmllcnM/LnRyaW18fCJzdHJpbmciIT10eXBlb2YgdCYmbnVsbCE9dHx8KHQ9dD8udHJpbSgpPz9udWxsKSxTLm1vZGVsTW9kaWZpZXJzPy5udW1iZXImJih0PUkodCkpLFMubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiYodD8/PW51bGwpLFMubW9kZWxNb2RpZmllcnM/Lm9wdGlvbmFsJiYhUy5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJm51bGwhPT10JiYodD8/PXZvaWQgMCk7Y29uc3QgYT1uZXcgRXZlbnQoImNoYW5nZSIse3RhcmdldDp7dmFsdWU6dH19KTtWKCJjaGFuZ2UiLGEpLFcoKSxVKCksUy5yZXNldFNlYXJjaFRlcm1PblNlbGVjdCYmKHEudmFsdWU9IiIpfWZ1bmN0aW9uIG9uVXBkYXRlT3BlbihlKXtsZXQgdDtpZihlKXtjb25zdCBlPW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO1YoImZvY3VzIixlKSxqKCksY2xlYXJUaW1lb3V0KHQpfWVsc2V7Y29uc3QgZT1uZXcgRm9jdXNFdmVudCgiYmx1ciIpO2lmKFYoImJsdXIiLGUpLFIoKSxTLnJlc2V0U2VhcmNoVGVybU9uQmx1cil7dD1zZXRUaW1lb3V0KCgpPT57cS52YWx1ZT0iIn0sMTAwKX19fWZ1bmN0aW9uIG9uQ3JlYXRlKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLFYoImNyZWF0ZSIscS52YWx1ZSl9ZnVuY3Rpb24gb25TZWxlY3QoZSx0KXtpc1NlbGVjdEl0ZW0odCkmJih0LmRpc2FibGVkP2UucHJldmVudERlZmF1bHQoKTp0Lm9uU2VsZWN0Py4oZSkpfWZ1bmN0aW9uIGlzU2VsZWN0SXRlbShlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfWZ1bmN0aW9uIGlzTW9kZWxWYWx1ZUVtcHR5KGUpe3JldHVybiBTLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KGUpPzA9PT1lLmxlbmd0aDpudWxsPT1lfHwiIj09PWV9ZnVuY3Rpb24gb25DbGVhcigpe1YoImNsZWFyIil9Y29uc3QgRWU9ZS51c2VUZW1wbGF0ZVJlZigidmlld3BvcnRSZWYiKTtyZXR1cm4geCh7dHJpZ2dlclJlZjplLnRvUmVmKCgpPT5LZS52YWx1ZT8uJGVsKSx2aWV3cG9ydFJlZjplLnRvUmVmKCgpPT5FZS52YWx1ZSl9KSwodCxhLGwscik9PnthKCJceDNjIS0tWy0tXHgzZSIpLGEodGUoZS51bnJlZihOZSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbCxyLG4pPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih4ZSkseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpUZS52YWx1ZS5pdGVtKHtjbGFzczplLnVucmVmKEwpPy5pdGVtfSksdmFsdWU6cS52YWx1ZSxvblNlbGVjdDpvbkNyZWF0ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOlRlLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6ZS51bnJlZihMKT8uaXRlbUxhYmVsfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImNyZWF0ZS1pdGVtLWxhYmVsIix7aXRlbTpxLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoeikoInNlbGVjdE1lbnUuY3JlYXRlIix7bGFiZWw6cS52YWx1ZX0pKSwxKV0pXSwyKV0pLF86M30sOCxbImNsYXNzIiwidmFsdWUiXSldO2wodGUoZS51bnJlZih4ZSkseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpUZS52YWx1ZS5pdGVtKHtjbGFzczplLnVucmVmKEwpPy5pdGVtfSksdmFsdWU6cS52YWx1ZSxvblNlbGVjdDpvbkNyZWF0ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6VGUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczplLnVucmVmKEwpPy5pdGVtTGFiZWx9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiY3JlYXRlLWl0ZW0tbGFiZWwiLHtpdGVtOnEudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih6KSgic2VsZWN0TWVudS5jcmVhdGUiLHtsYWJlbDpxLnZhbHVlfSkpLDEpXSldLDIpXTtsKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbCIgY2xhc3M9IiR7YWUoVGUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczplLnVucmVmKEwpPy5pdGVtTGFiZWx9KSl9IiR7bn0+YCksbGUodC4kc2xvdHMsImNyZWF0ZS1pdGVtLWxhYmVsIix7aXRlbTpxLnZhbHVlfSwoKT0+e2woYCR7cmUoZS51bnJlZih6KSgic2VsZWN0TWVudS5jcmVhdGUiLHtsYWJlbDpxLnZhbHVlfSkpfWApfSxsLHIsbiksbCgiPC9zcGFuPiIpfSksXzozfSxyLG4pKX0pLF86M30sbCkpLGEodGUoZS51bnJlZihMZSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtOmEsaW5kZXg6bH0scixuLG8pPT57aWYoIXIpcmV0dXJuW2lzU2VsZWN0SXRlbShhKSYmImxhYmVsIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQ2UpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlRlLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihMKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLFMubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJiJzZXBhcmF0b3IiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWZSkse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOlRlLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoTCk/LnNlcGFyYXRvcixhLnVpPy5zZXBhcmF0b3IsYS5jbGFzc119KX0sbnVsbCw4LFsiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih4ZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpUZS52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLmNsYXNzXX0pLGRpc2FibGVkOmlzU2VsZWN0SXRlbShhKSYmYS5kaXNhYmxlZCx2YWx1ZTpTLnZhbHVlS2V5JiZpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLFMudmFsdWVLZXkpOmEsb25TZWxlY3Q6ZT0+b25TZWxlY3QoZSxhKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmEsaW5kZXg6bCx1aTpUZS52YWx1ZX0sKCk9Pltpc1NlbGVjdEl0ZW0oYSkmJmEuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcse2tleTowLG5hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHYsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soaCxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6YS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8VGUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOlRlLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczpUZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6bH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLFMubGFiZWxLZXkpOmEpLDEpXSldLDIpLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxTLmRlc2NyaXB0aW9uS2V5KXx8d1siaXRlbS1kZXNjcmlwdGlvbiJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6VGUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLFMuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6VGUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9KSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQmUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGcse25hbWU6Yi5zZWxlY3RlZEljb258fGUudW5yZWYoTikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV07aXNTZWxlY3RJdGVtKGEpJiYibGFiZWwiPT09YS50eXBlP3IodGUoZS51bnJlZihDZSkseyJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6VGUudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKEwpPy5sYWJlbCxhLnVpPy5sYWJlbCxhLmNsYXNzXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxyLG4pPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxTLmxhYmVsS2V5KSksMSldO2woYCR7cmUoZS51bnJlZihmKShhLFMubGFiZWxLZXkpKX1gKX0pLF86Mn0sbixvKSk6aXNTZWxlY3RJdGVtKGEpJiYic2VwYXJhdG9yIj09PWEudHlwZT9yKHRlKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpUZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEwpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwsbixvKSk6cih0ZShlLnVucmVmKHhlKSx7ImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOlRlLnZhbHVlLml0ZW0oe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEuY2xhc3NdfSksZGlzYWJsZWQ6aXNTZWxlY3RJdGVtKGEpJiZhLmRpc2FibGVkLHZhbHVlOlMudmFsdWVLZXkmJmlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsUy52YWx1ZUtleSk6YSxvblNlbGVjdDplPT5vblNlbGVjdChlLGEpfSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixvLGkpPT57aWYoIW4pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh2LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LGEuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXIsYS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGgsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczpUZS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1XcmFwcGVyLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6VGUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxhYmVsLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbUxhYmVsXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxTLmxhYmVsS2V5KTphKSwxKV0pXSwyKSxpc1NlbGVjdEl0ZW0oYSkmJihlLnVucmVmKGYpKGEsUy5kZXNjcmlwdGlvbktleSl8fHdbIml0ZW0tZGVzY3JpcHRpb24iXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOlRlLnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1EZXNjcmlwdGlvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDpsfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxTLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOlRlLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSksZS5jcmVhdGVWTm9kZShlLnVucmVmKEJlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShnLHtuYW1lOmIuc2VsZWN0ZWRJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpUZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldO2xlKHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9LCgpPT57bGUodC4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSwoKT0+e2lzU2VsZWN0SXRlbShhKSYmYS5pY29uP24odGUoZyx7bmFtZTphLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxlYWRpbmdJY29uLGEudWk/Lml0ZW1MZWFkaW5nSWNvbl19KX0sbnVsbCxvLGkpKTppc1NlbGVjdEl0ZW0oYSkmJmEuYXZhdGFyP24odGUodixlLm1lcmdlUHJvcHMoe3NpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCxvLGkpKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD9uKHRlKGgsZS5tZXJnZVByb3BzKHtzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLG8saSkpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixvLGkpLG4oYDxzcGFuIGRhdGEtc2xvdD0iaXRlbVdyYXBwZXIiIGNsYXNzPSIke2FlKFRlLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KSl9IiR7aX0+PHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWwiIGNsYXNzPSIke2FlKFRlLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KSl9IiR7aX0+YCksbGUodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6bH0sKCk9PntuKGAke3JlKGlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsUy5sYWJlbEtleSk6YSl9YCl9LG4sbyxpKSxuKCI8L3NwYW4+IiksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLFMuZGVzY3JpcHRpb25LZXkpfHx3WyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhuKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1EZXNjcmlwdGlvbiIgY2xhc3M9IiR7YWUoVGUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0iJHtpfT5gKSxsZSh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDpsfSwoKT0+e24oYCR7cmUoZS51bnJlZihmKShhLFMuZGVzY3JpcHRpb25LZXkpKX1gKX0sbixvLGkpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpLG4oYDwvc3Bhbj48c3BhbiBkYXRhLXNsb3Q9Iml0ZW1UcmFpbGluZyIgY2xhc3M9IiR7YWUoVGUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pKX0iJHtpfT5gKSxsZSh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSxudWxsLG4sbyxpKSxuKHRlKGUudW5yZWYoQmUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxyLG4pPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZyx7bmFtZTpiLnNlbGVjdGVkSWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldO2wodGUoZyx7bmFtZTpiLnNlbGVjdGVkSWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLHIsbikpfSksXzoyfSxvLGkpKSxuKCI8L3NwYW4+Iil9LG4sbyxpKX0pLF86Mn0sbixvKSl9KSxfOjN9LGwpKSxhKHRlKGUudW5yZWYoc2UpLGUubWVyZ2VQcm9wcyh7aWQ6ZS51bnJlZihRKX0sey4uLmUudW5yZWYoVCksLi4udC4kYXR0cnMsLi4uZS51bnJlZihvZSl9LHsiaWdub3JlLWZpbHRlciI6IiIsImFzLWNoaWxkIjoiIixuYW1lOmUudW5yZWYoSiksZGlzYWJsZWQ6ZS51bnJlZihYKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b25VcGRhdGUsIm9uVXBkYXRlOm9wZW4iOm9uVXBkYXRlT3Blbn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe21vZGVsVmFsdWU6YSxvcGVuOmx9LHIsbixvKT0+e2lmKCFyKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYod2UpLHtyZWZfa2V5OiJ0cmlnZ2VyUmVmIixyZWY6S2UsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOlRlLnZhbHVlLmJhc2Uoe2NsYXNzOltlLnVucmVmKEwpPy5iYXNlLFMuY2xhc3NdfSksdGFiaW5kZXg6IjAifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKGRlKXx8Yi5hdmF0YXJ8fHcubGVhZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOlRlLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoTCk/LmxlYWRpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bZS51bnJlZihkZSkmJmUudW5yZWYoaGUpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZyx7a2V5OjAsbmFtZTplLnVucmVmKGhlKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmIuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodixlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sYi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOlRlLnZhbHVlfSwoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFtkaXNwbGF5VmFsdWUoYSldLHQ9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OnR9LFtudWxsIT10PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoidmFsdWUiLGNsYXNzOlRlLnZhbHVlLnZhbHVlKHtjbGFzczplLnVucmVmKEwpPy52YWx1ZX0pfSxlLnRvRGlzcGxheVN0cmluZyh0KSwzKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJwbGFjZWhvbGRlciIsY2xhc3M6VGUudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmUudW5yZWYoTCk/LnBsYWNlaG9sZGVyfSl9LGUudG9EaXNwbGF5U3RyaW5nKGIucGxhY2Vob2xkZXI/PyLCoCIpLDMpKV0sNjQpKSksMTI4KSldKSxlLnVucmVmKHBlKXx8dy50cmFpbGluZ3x8Yi5jbGVhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczpUZS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOlRlLnZhbHVlfSwoKT0+W2IuY2xlYXImJiFpc01vZGVsVmFsdWVFbXB0eShhKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHksZS5tZXJnZVByb3BzKHthczoic3BhbiIsaWNvbjpiLmNsZWFySWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jbG9zZSxzaXplOnplLnZhbHVlLHZhcmlhbnQ6ImxpbmsiLGNvbG9yOiJuZXV0cmFsIix0YWJpbmRleDoiLTEifSxELnZhbHVlLHsiZGF0YS1zbG90IjoidHJhaWxpbmdDbGVhciIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdDbGVhcih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdDbGVhcn0pLG9uQ2xpY2s6ZS53aXRoTW9kaWZpZXJzKG9uQ2xlYXIsWyJzdG9wIl0pfSksbnVsbCwxNixbImljb24iLCJzaXplIiwiY2xhc3MiXSldKSxfOjF9KSk6ZS51bnJlZih5ZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MSxuYW1lOmUudW5yZWYoeWUpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV0pLF86Mn0sMTAyNCksZS5jcmVhdGVWTm9kZShlLnVucmVmKFNlKSxlLnVucmVmKE0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihrKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihnZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6VGUudmFsdWUuY29udGVudCh7Y2xhc3M6ZS51bnJlZihMKT8uY29udGVudH0pfSxPLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse3RyYXBwZWQ6IiIsImRhdGEtc2xvdCI6ImZvY3VzU2NvcGUiLGNsYXNzOlRlLnZhbHVlLmZvY3VzU2NvcGUoe2NsYXNzOmUudW5yZWYoTCk/LmZvY3VzU2NvcGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LXRvcCIpLGIuc2VhcmNoSW5wdXQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGJlKSx7a2V5OjAsbW9kZWxWYWx1ZTpxLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5xLnZhbHVlPWUsImRpc3BsYXktdmFsdWUiOigpPT5xLnZhbHVlLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZWUsZS5tZXJnZVByb3BzKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6emUudmFsdWV9LEUudmFsdWUseyJtb2RlbC1tb2RpZmllcnMiOnt0cmltOmIubW9kZWxNb2RpZmllcnM/LnRyaW19LCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6VGUudmFsdWUuaW5wdXQoe2NsYXNzOmUudW5yZWYoTCk/LmlucHV0fSksb25DaGFuZ2U6ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInN0b3AiXSl9KSxudWxsLDE2LFsic2l6ZSIsIm1vZGVsLW1vZGlmaWVycyIsImNsYXNzIiwib25DaGFuZ2UiXSldKSxfOjF9LDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsImRpc3BsYXktdmFsdWUiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYodmUpLHsiZGF0YS1zbG90IjoiZW1wdHkiLGNsYXNzOlRlLnZhbHVlLmVtcHR5KHtjbGFzczplLnVucmVmKEwpPy5lbXB0eX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpxLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHEudmFsdWU/ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub01hdGNoIix7c2VhcmNoVGVybTpxLnZhbHVlfSk6ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub0RhdGEiKSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pLGUuY3JlYXRlVk5vZGUoImRpdiIse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6RWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOlRlLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEwpPy52aWV3cG9ydH0pfSxbYi52aXJ0dWFsaXplPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoX2UpLHtrZXk6MH0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKEllKSxlLm1lcmdlUHJvcHMoe29wdGlvbnM6QWUudmFsdWUsInRleHQtY29udGVudCI6dD0+aXNTZWxlY3RJdGVtKHQpP2UudW5yZWYoZikodCxTLmxhYmVsS2V5KTpTdHJpbmcodCl9LEsudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoe29wdGlvbjp0LHZpcnR1YWxJdGVtOmF9KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZigkZSkse2l0ZW06dCxpbmRleDphLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldKSxfOjF9LDE2LFsib3B0aW9ucyIsInRleHQtY29udGVudCJdKSxGZS52YWx1ZSYmImJvdHRvbSI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoX2UpLHtrZXk6MX0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW0ZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleTowLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfZSkpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChQZS52YWx1ZSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OmBncm91cC0ke2F9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0LCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJGUpLHtrZXk6YGdyb3VwLSR7YX0tJHtsfWAsaXRlbTp0LGluZGV4Omx9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKSxGZS52YWx1ZSYmImJvdHRvbSI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6MSwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV0pLF86MX0sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSldLDIpLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC1ib3R0b20iKV0pLF86M30sOCxbImNsYXNzIl0pLGIuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSxlLm1lcmdlUHJvcHMoe2tleTowfSxBLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOlRlLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKEwpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldKSxfOjN9KV0pLF86M30sMTYpXTtyKHRlKGUudW5yZWYodWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixvLGkpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih3ZSkse3JlZl9rZXk6InRyaWdnZXJSZWYiLHJlZjpLZSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6VGUudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoTCk/LmJhc2UsUy5jbGFzc119KSx0YWJpbmRleDoiMCJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UudW5yZWYoZGUpfHxiLmF2YXRhcnx8dy5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6VGUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihMKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PltlLnVucmVmKGRlKSYmZS51bnJlZihoZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MCxuYW1lOmUudW5yZWYoaGUpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoTCk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6Yi5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh2LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxiLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoW2Rpc3BsYXlWYWx1ZShhKV0sdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6dH0sW251bGwhPXQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ2YWx1ZSIsY2xhc3M6VGUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoTCk/LnZhbHVlfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQpLDMpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InBsYWNlaG9sZGVyIixjbGFzczpUZS52YWx1ZS5wbGFjZWhvbGRlcih7Y2xhc3M6ZS51bnJlZihMKT8ucGxhY2Vob2xkZXJ9KX0sZS50b0Rpc3BsYXlTdHJpbmcoYi5wbGFjZWhvbGRlcj8/IsKgIiksMykpXSw2NCkpKSwxMjgpKV0pLGUudW5yZWYocGUpfHx3LnRyYWlsaW5nfHxiLmNsZWFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0cmFpbGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bYi5jbGVhciYmIWlzTW9kZWxWYWx1ZUVtcHR5KGEpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoeSxlLm1lcmdlUHJvcHMoe2FzOiJzcGFuIixpY29uOmIuY2xlYXJJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNsb3NlLHNpemU6emUudmFsdWUsdmFyaWFudDoibGluayIsY29sb3I6Im5ldXRyYWwiLHRhYmluZGV4OiItMSJ9LEQudmFsdWUseyJkYXRhLXNsb3QiOiJ0cmFpbGluZ0NsZWFyIixjbGFzczpUZS52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazplLndpdGhNb2RpZmllcnMob25DbGVhcixbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsInNpemUiLCJjbGFzcyJdKV0pLF86MX0pKTplLnVucmVmKHllKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcse2tleToxLG5hbWU6ZS51bnJlZih5ZSksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXTtuKHRlKGUudW5yZWYod2UpLHtyZWZfa2V5OiJ0cmlnZ2VyUmVmIixyZWY6S2UsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOlRlLnZhbHVlLmJhc2Uoe2NsYXNzOltlLnVucmVmKEwpPy5iYXNlLFMuY2xhc3NdfSksdGFiaW5kZXg6IjAifSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixvLGkpPT57aWYoIW4pcmV0dXJuW2UudW5yZWYoZGUpfHxiLmF2YXRhcnx8dy5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6VGUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihMKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PltlLnVucmVmKGRlKSYmZS51bnJlZihoZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MCxuYW1lOmUudW5yZWYoaGUpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoTCk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6Yi5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh2LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxiLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoW2Rpc3BsYXlWYWx1ZShhKV0sdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6dH0sW251bGwhPXQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ2YWx1ZSIsY2xhc3M6VGUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoTCk/LnZhbHVlfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQpLDMpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InBsYWNlaG9sZGVyIixjbGFzczpUZS52YWx1ZS5wbGFjZWhvbGRlcih7Y2xhc3M6ZS51bnJlZihMKT8ucGxhY2Vob2xkZXJ9KX0sZS50b0Rpc3BsYXlTdHJpbmcoYi5wbGFjZWhvbGRlcj8/IsKgIiksMykpXSw2NCkpKSwxMjgpKV0pLGUudW5yZWYocGUpfHx3LnRyYWlsaW5nfHxiLmNsZWFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0cmFpbGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bYi5jbGVhciYmIWlzTW9kZWxWYWx1ZUVtcHR5KGEpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoeSxlLm1lcmdlUHJvcHMoe2FzOiJzcGFuIixpY29uOmIuY2xlYXJJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNsb3NlLHNpemU6emUudmFsdWUsdmFyaWFudDoibGluayIsY29sb3I6Im5ldXRyYWwiLHRhYmluZGV4OiItMSJ9LEQudmFsdWUseyJkYXRhLXNsb3QiOiJ0cmFpbGluZ0NsZWFyIixjbGFzczpUZS52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazplLndpdGhNb2RpZmllcnMob25DbGVhcixbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsInNpemUiLCJjbGFzcyJdKV0pLF86MX0pKTplLnVucmVmKHllKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcse2tleToxLG5hbWU6ZS51bnJlZih5ZSksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07ZS51bnJlZihkZSl8fGIuYXZhdGFyfHx3LmxlYWRpbmc/KG4oYDxzcGFuIGRhdGEtc2xvdD0ibGVhZGluZyIgY2xhc3M9IiR7YWUoVGUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihMKT8ubGVhZGluZ30pKX0iJHtpfT5gKSxsZSh0LiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT57ZS51bnJlZihkZSkmJmUudW5yZWYoaGUpP24odGUoZyx7bmFtZTplLnVucmVmKGhlKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy5sZWFkaW5nSWNvbn0pfSxudWxsLG8saSkpOmIuYXZhdGFyP24odGUodixlLm1lcmdlUHJvcHMoe3NpemU6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sYi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyfSl9KSxudWxsLG8saSkpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixvLGkpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpLGxlKHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PntuKCJceDNjIS0tWy0tXHgzZSIpLG5lKFtkaXNwbGF5VmFsdWUoYSldLHQ9PntuKCJceDNjIS0tWy0tXHgzZSIpLG4obnVsbCE9dD9gPHNwYW4gZGF0YS1zbG90PSJ2YWx1ZSIgY2xhc3M9IiR7YWUoVGUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoTCk/LnZhbHVlfSkpfSIke2l9PiR7cmUodCl9PC9zcGFuPmA6YDxzcGFuIGRhdGEtc2xvdD0icGxhY2Vob2xkZXIiIGNsYXNzPSIke2FlKFRlLnZhbHVlLnBsYWNlaG9sZGVyKHtjbGFzczplLnVucmVmKEwpPy5wbGFjZWhvbGRlcn0pKX0iJHtpfT4ke3JlKGIucGxhY2Vob2xkZXI/PyLCoCIpfTwvc3Bhbj5gKSxuKCJceDNjIS0tXS0tXHgzZSIpfSksbigiXHgzYyEtLV0tLVx4M2UiKX0sbixvLGkpLGUudW5yZWYocGUpfHx3LnRyYWlsaW5nfHxiLmNsZWFyPyhuKGA8c3BhbiBkYXRhLXNsb3Q9InRyYWlsaW5nIiBjbGFzcz0iJHthZShUZS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmd9KSl9IiR7aX0+YCksbGUodC4kc2xvdHMsInRyYWlsaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PntiLmNsZWFyJiYhaXNNb2RlbFZhbHVlRW1wdHkoYSk/bih0ZShlLnVucmVmKGZlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbCxyKT0+e2lmKCFhKXJldHVybltlLmNyZWF0ZVZOb2RlKHksZS5tZXJnZVByb3BzKHthczoic3BhbiIsaWNvbjpiLmNsZWFySWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jbG9zZSxzaXplOnplLnZhbHVlLHZhcmlhbnQ6ImxpbmsiLGNvbG9yOiJuZXV0cmFsIix0YWJpbmRleDoiLTEifSxELnZhbHVlLHsiZGF0YS1zbG90IjoidHJhaWxpbmdDbGVhciIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdDbGVhcih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdDbGVhcn0pLG9uQ2xpY2s6ZS53aXRoTW9kaWZpZXJzKG9uQ2xlYXIsWyJzdG9wIl0pfSksbnVsbCwxNixbImljb24iLCJzaXplIiwiY2xhc3MiXSldO2EodGUoeSxlLm1lcmdlUHJvcHMoe2FzOiJzcGFuIixpY29uOmIuY2xlYXJJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNsb3NlLHNpemU6emUudmFsdWUsdmFyaWFudDoibGluayIsY29sb3I6Im5ldXRyYWwiLHRhYmluZGV4OiItMSJ9LEQudmFsdWUseyJkYXRhLXNsb3QiOiJ0cmFpbGluZ0NsZWFyIixjbGFzczpUZS52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazpvbkNsZWFyfSksbnVsbCxsLHIpKX0pLF86Mn0sbyxpKSk6ZS51bnJlZih5ZSk/bih0ZShnLHtuYW1lOmUudW5yZWYoeWUpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdJY29ufSl9LG51bGwsbyxpKSk6bigiXHgzYyEtLS0tXHgzZSIpfSxuLG8saSksbigiPC9zcGFuPiIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9LG8saSkpfSksXzoyfSxuLG8pKSxyKHRlKGUudW5yZWYoU2UpLGUudW5yZWYoTSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoayksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoZ2UpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOlRlLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUudW5yZWYoTCk/LmNvbnRlbnR9KX0sTy52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHt0cmFwcGVkOiIiLCJkYXRhLXNsb3QiOiJmb2N1c1Njb3BlIixjbGFzczpUZS52YWx1ZS5mb2N1c1Njb3BlKHtjbGFzczplLnVucmVmKEwpPy5mb2N1c1Njb3BlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC10b3AiKSxiLnNlYXJjaElucHV0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleTowLG1vZGVsVmFsdWU6cS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cS52YWx1ZT1lLCJkaXNwbGF5LXZhbHVlIjooKT0+cS52YWx1ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGVlLGUubWVyZ2VQcm9wcyh7YXV0b2ZvY3VzOiIiLGF1dG9jb21wbGV0ZToib2ZmIixzaXplOnplLnZhbHVlfSxFLnZhbHVlLHsibW9kZWwtbW9kaWZpZXJzIjp7dHJpbTpiLm1vZGVsTW9kaWZpZXJzPy50cmltfSwiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOlRlLnZhbHVlLmlucHV0KHtjbGFzczplLnVucmVmKEwpPy5pbnB1dH0pLG9uQ2hhbmdlOmUud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJtb2RlbC1tb2RpZmllcnMiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJkaXNwbGF5LXZhbHVlIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpUZS52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihMKT8uZW1wdHl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06cS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhxLnZhbHVlP2UudW5yZWYoeikoInNlbGVjdE1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06cS52YWx1ZX0pOmUudW5yZWYoeikoInNlbGVjdE1lbnUubm9EYXRhIikpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHtyZWZfa2V5OiJ2aWV3cG9ydFJlZiIscmVmOkVlLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpUZS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZS51bnJlZihMKT8udmlld3BvcnR9KX0sW2IudmlydHVhbGl6ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjB9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihJZSksZS5tZXJnZVByb3BzKHtvcHRpb25zOkFlLnZhbHVlLCJ0ZXh0LWNvbnRlbnQiOnQ9PmlzU2VsZWN0SXRlbSh0KT9lLnVucmVmKGYpKHQsUy5sYWJlbEtleSk6U3RyaW5nKHQpfSxLLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTphfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjF9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6MCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV0pLF86MX0sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoUGUudmFsdWUsKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodCwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKCRlKSx7a2V5OmBncm91cC0ke2F9LSR7bH1gLGl0ZW06dCxpbmRleDpsfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjEsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpXSwyKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIildKSxfOjN9LDgsWyJjbGFzcyJdKSxiLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sQS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpUZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihMKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldO2wodGUoZS51bnJlZihrKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLHIsbik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGdlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpUZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEwpPy5jb250ZW50fSl9LE8udmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7dHJhcHBlZDoiIiwiZGF0YS1zbG90IjoiZm9jdXNTY29wZSIsY2xhc3M6VGUudmFsdWUuZm9jdXNTY29wZSh7Y2xhc3M6ZS51bnJlZihMKT8uZm9jdXNTY29wZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtdG9wIiksYi5zZWFyY2hJbnB1dD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYmUpLHtrZXk6MCxtb2RlbFZhbHVlOnEudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnEudmFsdWU9ZSwiZGlzcGxheS12YWx1ZSI6KCk9PnEudmFsdWUsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTplLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwibW9kZWwtbW9kaWZpZXJzIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzcGxheS12YWx1ZSJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih2ZSkseyJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6VGUudmFsdWUuZW1wdHkoe2NsYXNzOmUudW5yZWYoTCk/LmVtcHR5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOnEudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocS52YWx1ZT9lLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOnEudmFsdWV9KTplLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vRGF0YSIpKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSksZS5jcmVhdGVWTm9kZSgiZGl2Iix7cmVmX2tleToidmlld3BvcnRSZWYiLHJlZjpFZSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6VGUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoTCk/LnZpZXdwb3J0fSl9LFtiLnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW0ZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSWUpLGUubWVyZ2VQcm9wcyh7b3B0aW9uczpBZS52YWx1ZSwidGV4dC1jb250ZW50Ijp0PT5pc1NlbGVjdEl0ZW0odCk/ZS51bnJlZihmKSh0LFMubGFiZWxLZXkpOlN0cmluZyh0KX0sSy52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3B0aW9uOnQsdmlydHVhbEl0ZW06YX0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKCRlKSx7aXRlbTp0LGluZGV4OmEuaW5kZXh9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86MX0sMTYsWyJvcHRpb25zIiwidGV4dC1jb250ZW50Il0pLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleToxfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFBlLnZhbHVlLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6YGdyb3VwLSR7YX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHQsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZigkZSkse2tleTpgZ3JvdXAtJHthfS0ke2x9YCxpdGVtOnQsaW5kZXg6bH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleToxLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfZSkpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0sMiksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpXSksXzozfSw4LFsiY2xhc3MiXSksYi5hcnJvdz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLGUubWVyZ2VQcm9wcyh7a2V5OjB9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6VGUudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoTCk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86M30sMTYsWyJjbGFzcyJdKV07bCh0ZShlLnVucmVmKGdlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpUZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEwpPy5jb250ZW50fSl9LE8udmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLHIsbik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHt0cmFwcGVkOiIiLCJkYXRhLXNsb3QiOiJmb2N1c1Njb3BlIixjbGFzczpUZS52YWx1ZS5mb2N1c1Njb3BlKHtjbGFzczplLnVucmVmKEwpPy5mb2N1c1Njb3BlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC10b3AiKSxiLnNlYXJjaElucHV0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleTowLG1vZGVsVmFsdWU6cS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cS52YWx1ZT1lLCJkaXNwbGF5LXZhbHVlIjooKT0+cS52YWx1ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGVlLGUubWVyZ2VQcm9wcyh7YXV0b2ZvY3VzOiIiLGF1dG9jb21wbGV0ZToib2ZmIixzaXplOnplLnZhbHVlfSxFLnZhbHVlLHsibW9kZWwtbW9kaWZpZXJzIjp7dHJpbTpiLm1vZGVsTW9kaWZpZXJzPy50cmltfSwiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOlRlLnZhbHVlLmlucHV0KHtjbGFzczplLnVucmVmKEwpPy5pbnB1dH0pLG9uQ2hhbmdlOmUud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJtb2RlbC1tb2RpZmllcnMiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJkaXNwbGF5LXZhbHVlIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpUZS52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihMKT8uZW1wdHl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06cS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhxLnZhbHVlP2UudW5yZWYoeikoInNlbGVjdE1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06cS52YWx1ZX0pOmUudW5yZWYoeikoInNlbGVjdE1lbnUubm9EYXRhIikpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHtyZWZfa2V5OiJ2aWV3cG9ydFJlZiIscmVmOkVlLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpUZS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZS51bnJlZihMKT8udmlld3BvcnR9KX0sW2IudmlydHVhbGl6ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjB9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihJZSksZS5tZXJnZVByb3BzKHtvcHRpb25zOkFlLnZhbHVlLCJ0ZXh0LWNvbnRlbnQiOnQ9PmlzU2VsZWN0SXRlbSh0KT9lLnVucmVmKGYpKHQsUy5sYWJlbEtleSk6U3RyaW5nKHQpfSxLLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTphfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjF9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6MCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV0pLF86MX0sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoUGUudmFsdWUsKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodCwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKCRlKSx7a2V5OmBncm91cC0ke2F9LSR7bH1gLGl0ZW06dCxpbmRleDpsfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjEsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpXSwyKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIildKSxfOjN9LDgsWyJjbGFzcyJdKSxiLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sQS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpUZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihMKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtsKHRlKGUudW5yZWYoXykse3RyYXBwZWQ6IiIsImRhdGEtc2xvdCI6ImZvY3VzU2NvcGUiLGNsYXNzOlRlLnZhbHVlLmZvY3VzU2NvcGUoe2NsYXNzOmUudW5yZWYoTCk/LmZvY3VzU2NvcGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtdG9wIiksYi5zZWFyY2hJbnB1dD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYmUpLHtrZXk6MCxtb2RlbFZhbHVlOnEudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnEudmFsdWU9ZSwiZGlzcGxheS12YWx1ZSI6KCk9PnEudmFsdWUsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTplLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwibW9kZWwtbW9kaWZpZXJzIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzcGxheS12YWx1ZSJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih2ZSkseyJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6VGUudmFsdWUuZW1wdHkoe2NsYXNzOmUudW5yZWYoTCk/LmVtcHR5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOnEudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocS52YWx1ZT9lLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOnEudmFsdWV9KTplLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vRGF0YSIpKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSksZS5jcmVhdGVWTm9kZSgiZGl2Iix7cmVmX2tleToidmlld3BvcnRSZWYiLHJlZjpFZSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6VGUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoTCk/LnZpZXdwb3J0fSl9LFtiLnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW0ZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSWUpLGUubWVyZ2VQcm9wcyh7b3B0aW9uczpBZS52YWx1ZSwidGV4dC1jb250ZW50Ijp0PT5pc1NlbGVjdEl0ZW0odCk/ZS51bnJlZihmKSh0LFMubGFiZWxLZXkpOlN0cmluZyh0KX0sSy52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3B0aW9uOnQsdmlydHVhbEl0ZW06YX0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKCRlKSx7aXRlbTp0LGluZGV4OmEuaW5kZXh9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86MX0sMTYsWyJvcHRpb25zIiwidGV4dC1jb250ZW50Il0pLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleToxfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFBlLnZhbHVlLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6YGdyb3VwLSR7YX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHQsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZigkZSkse2tleTpgZ3JvdXAtJHthfS0ke2x9YCxpdGVtOnQsaW5kZXg6bH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleToxLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfZSkpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0sMiksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpXTtsZSh0LiRzbG90cywiY29udGVudC10b3AiLHt9LG51bGwsbCxyLG4pLGIuc2VhcmNoSW5wdXQ/bCh0ZShlLnVucmVmKGJlKSx7bW9kZWxWYWx1ZTpxLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5xLnZhbHVlPWUsImRpc3BsYXktdmFsdWUiOigpPT5xLnZhbHVlLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxhLGwscik9PntpZighYSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTplLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwibW9kZWwtbW9kaWZpZXJzIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV07YSh0ZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTooKT0+e319KSxudWxsLGwscikpfSksXzoyfSxyLG4pKTpsKCJceDNjIS0tLS1ceDNlIiksbCh0ZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpUZS52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihMKT8uZW1wdHl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpxLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHEudmFsdWU/ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub01hdGNoIix7c2VhcmNoVGVybTpxLnZhbHVlfSk6ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub0RhdGEiKSksMSldKV07bGUodC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpxLnZhbHVlfSwoKT0+e2woYCR7cmUocS52YWx1ZT9lLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOnEudmFsdWV9KTplLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vRGF0YSIpKX1gKX0sbCxyLG4pfSksXzoyfSxyLG4pKSxsKGA8ZGl2IHJvbGU9InByZXNlbnRhdGlvbiIgZGF0YS1zbG90PSJ2aWV3cG9ydCIgY2xhc3M9IiR7YWUoVGUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoTCk/LnZpZXdwb3J0fSkpfSIke259PmApLGIudmlydHVhbGl6ZT8obCgiXHgzYyEtLVstLVx4M2UiKSxGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT9sKHRlKGUudW5yZWYoX2UpLG51bGwsbnVsbCxyLG4pKTpsKCJceDNjIS0tLS1ceDNlIiksbCh0ZShlLnVucmVmKEllKSxlLm1lcmdlUHJvcHMoe29wdGlvbnM6QWUudmFsdWUsInRleHQtY29udGVudCI6dD0+aXNTZWxlY3RJdGVtKHQpP2UudW5yZWYoZikodCxTLmxhYmVsS2V5KTpTdHJpbmcodCl9LEsudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoe29wdGlvbjp0LHZpcnR1YWxJdGVtOmF9LGwscixuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKHRlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCxyLG4pKX0pLF86Mn0scixuKSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/bCh0ZShlLnVucmVmKF9lKSxudWxsLG51bGwscixuKSk6bCgiXHgzYyEtLS0tXHgzZSIpLGwoIlx4M2MhLS1dLS1ceDNlIikpOihsKCJceDNjIS0tWy0tXHgzZSIpLEZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlP2wodGUoZS51bnJlZihrZSkseyJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxhLGwscik9PntpZighYSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldO2EodGUoZS51bnJlZihfZSksbnVsbCxudWxsLGwscikpfSksXzoyfSxyLG4pKTpsKCJceDNjIS0tLS1ceDNlIiksbCgiXHgzYyEtLVstLVx4M2UiKSxuZShQZS52YWx1ZSwodCxhKT0+e2wodGUoZS51bnJlZihrZSkse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChsLHIsbixvKT0+e2lmKCFyKXJldHVyblsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0LCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJGUpLHtrZXk6YGdyb3VwLSR7YX0tJHtsfWAsaXRlbTp0LGluZGV4Omx9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKSkpLDEyOCkpXTtyKCJceDNjIS0tWy0tXHgzZSIpLG5lKHQsKHQsbCk9PntyKHRlKGUudW5yZWYoJGUpLHtrZXk6YGdyb3VwLSR7YX0tJHtsfWAsaXRlbTp0LGluZGV4Omx9LG51bGwsbixvKSl9KSxyKCJceDNjIS0tXS0tXHgzZSIpfSksXzoyfSxyLG4pKX0pLGwoIlx4M2MhLS1dLS1ceDNlIiksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/bCh0ZShlLnVucmVmKGtlKSx7ImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbCxyKT0+e2lmKCFhKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV07YSh0ZShlLnVucmVmKF9lKSxudWxsLG51bGwsbCxyKSl9KSxfOjJ9LHIsbikpOmwoIlx4M2MhLS0tLVx4M2UiKSxsKCJceDNjIS0tXS0tXHgzZSIpKSxsKCI8L2Rpdj4iKSxsZSh0LiRzbG90cywiY29udGVudC1ib3R0b20iLHt9LG51bGwsbCxyLG4pfSksXzoyfSxyLG4pKSxiLmFycm93P2wodGUoZS51bnJlZihtZSksZS5tZXJnZVByb3BzKEEudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6VGUudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoTCk/LmFycm93fSl9KSxudWxsLHIsbikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86Mn0scixuKSl9KSxfOjJ9LHIsbikpfSksXzoyfSxuLG8pKX0pLF86M30sbCkpLGEoIlx4M2MhLS1dLS1ceDNlIil9fX0pLE5lPXplLnNldHVwO3plLnNldHVwPSh0LGEpPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2VsZWN0TWVudS52dWUiKSxOZT9OZSh0LGEpOnZvaWQgMH07ZXhwb3J0e3plIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1TZWxlY3RNZW51LUJhQVB3NC1rLm1qcy5tYXAK", "chunks/build/Separator-C9BM_fkO.mjs": "aW1wb3J0e3YgYXMgZSxQIGFzIHJ9ZnJvbSIuL3NlcnZlci5tanMiO3ZhciB0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkJhc2VTZXBhcmF0b3IiLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGRlY29yYXRpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3Qgbz10LGE9WyJob3Jpem9udGFsIiwidmVydGljYWwiXTtjb25zdCBuPWUuY29tcHV0ZWQoKCk9PntyZXR1cm4gZT1vLm9yaWVudGF0aW9uLGEuaW5jbHVkZXMoZSk/by5vcmllbnRhdGlvbjoiaG9yaXpvbnRhbCI7dmFyIGV9KSxpPWUuY29tcHV0ZWQoKCk9PiJ2ZXJ0aWNhbCI9PT1uLnZhbHVlP28ub3JpZW50YXRpb246dm9pZCAwKSxsPWUuY29tcHV0ZWQoKCk9Pm8uZGVjb3JhdGl2ZT97cm9sZToibm9uZSJ9OnsiYXJpYS1vcmllbnRhdGlvbiI6aS52YWx1ZSxyb2xlOiJzZXBhcmF0b3IifSk7cmV0dXJuKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihyKSxlLm1lcmdlUHJvcHMoe2FzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGQsImRhdGEtb3JpZW50YXRpb24iOm4udmFsdWV9LGwudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiLCJkYXRhLW9yaWVudGF0aW9uIl0pKX19KSxvPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlNlcGFyYXRvciIscHJvcHM6e29yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJob3Jpem9udGFsIn0sZGVjb3JhdGl2ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuKHIsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodCxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKG8pKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtleHBvcnR7byBhcyBTfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VwYXJhdG9yLUM5Qk1fZmtPLm1qcy5tYXAK", "chunks/build/Separator-DwcR9PM1.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHIsZSBhcyBhLGwgYXMgbyxGIGFzIHQsdCBhcyBzLGIgYXMgbCxnIGFzIG59ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtTIGFzIGl9ZnJvbSIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2ltcG9ydHtmIGFzIGQsaiBhcyBjLGcgYXMgdSxxIGFzIGJ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBwPXtzbG90czp7cm9vdDoiZmxleCBpdGVtcy1jZW50ZXIgYWxpZ24tY2VudGVyIHRleHQtY2VudGVyIixib3JkZXI6IiIsY29udGFpbmVyOiJmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQgZmxleCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IixhdmF0YXI6InNocmluay0wIixhdmF0YXJTaXplOiIyeHMiLGxhYmVsOiJ0ZXh0LXNtIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5Ontib3JkZXI6ImJvcmRlci1wcmltYXJ5In0sc2Vjb25kYXJ5Ontib3JkZXI6ImJvcmRlci1zZWNvbmRhcnkifSxzdWNjZXNzOntib3JkZXI6ImJvcmRlci1zdWNjZXNzIn0saW5mbzp7Ym9yZGVyOiJib3JkZXItaW5mbyJ9LHdhcm5pbmc6e2JvcmRlcjoiYm9yZGVyLXdhcm5pbmcifSxlcnJvcjp7Ym9yZGVyOiJib3JkZXItZXJyb3IifSxuZXV0cmFsOntib3JkZXI6ImJvcmRlci1kZWZhdWx0In19LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJ3LWZ1bGwgZmxleC1yb3ciLGJvcmRlcjoidy1mdWxsIixjb250YWluZXI6Im14LTMgd2hpdGVzcGFjZS1ub3dyYXAifSx2ZXJ0aWNhbDp7cm9vdDoiaC1mdWxsIGZsZXgtY29sIixib3JkZXI6ImgtZnVsbCIsY29udGFpbmVyOiJteS0yIn19LHNpemU6e3hzOiIiLHNtOiIiLG1kOiIiLGxnOiIiLHhsOiIifSx0eXBlOntzb2xpZDp7Ym9yZGVyOiJib3JkZXItc29saWQifSxkYXNoZWQ6e2JvcmRlcjoiYm9yZGVyLWRhc2hlZCJ9LGRvdHRlZDp7Ym9yZGVyOiJib3JkZXItZG90dGVkIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhzIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdCJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InNtIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bMnB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bM3B4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6ImxnIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNHB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhsIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNXB4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4cyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToic20iLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVsycHhdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItcy1bM3B4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJsZyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMtWzRweF0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToieGwiLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVs1cHhdIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJuZXV0cmFsIixzaXplOiJ4cyIsdHlwZToic29saWQifX0sdj17X19uYW1lOiJVU2VwYXJhdG9yIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWNvcmF0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cCh2KXtjb25zdCBmPXYsbT1lLnVzZVNsb3RzKCkseD1yKCksej1hKCJzZXBhcmF0b3IiLGYpLHk9byh0KGYsImFzIiwiZGVjb3JhdGl2ZSIsIm9yaWVudGF0aW9uIikpLFM9ZS5jb21wdXRlZCgoKT0+cyh7ZXh0ZW5kOnMocCksLi4ueC51aT8uc2VwYXJhdG9yfHx7fX0pKHtjb2xvcjpmLmNvbG9yLG9yaWVudGF0aW9uOmYub3JpZW50YXRpb24sc2l6ZTpmLnNpemUsdHlwZTpmLnR5cGV9KSk7cmV0dXJuKHIsYSxvLHQpPT57YShkKGUudW5yZWYoaSksZS5tZXJnZVByb3BzKGUudW5yZWYoeSkseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczpTLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHopPy5yb290LGYuY2xhc3NdfSl9LHQpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxvLHQscyk9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImJvcmRlciIsY2xhc3M6Uy52YWx1ZS5ib3JkZXIoe2NsYXNzOmUudW5yZWYoeik/LmJvcmRlcn0pfSxudWxsLDIpLHYubGFiZWx8fHYuaWNvbnx8di5hdmF0YXJ8fG0uZGVmYXVsdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6Uy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoeik/LmNvbnRhaW5lcn0pfSxbZS5yZW5kZXJTbG90KHIuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Uy52YWx1ZX0sKCk9Plt2LmxhYmVsPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlMudmFsdWUubGFiZWwoe2NsYXNzOmUudW5yZWYoeik/LmxhYmVsfSl9LGUudG9EaXNwbGF5U3RyaW5nKHYubGFiZWwpLDMpKTp2Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhsLHtrZXk6MSxuYW1lOnYuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6Uy52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHopPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6di5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhuLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTplLnVucmVmKHopPy5hdmF0YXJTaXplfHxTLnZhbHVlLmF2YXRhclNpemUoKX0sdi5hdmF0YXIseyJkYXRhLXNsb3QiOiJhdmF0YXIiLGNsYXNzOlMudmFsdWUuYXZhdGFyKHtjbGFzczplLnVucmVmKHopPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9yZGVyIixjbGFzczpTLnZhbHVlLmJvcmRlcih7Y2xhc3M6ZS51bnJlZih6KT8uYm9yZGVyfSl9LG51bGwsMildLDY0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtvKGA8ZGl2IGRhdGEtc2xvdD0iYm9yZGVyIiBjbGFzcz0iJHtjKFMudmFsdWUuYm9yZGVyKHtjbGFzczplLnVucmVmKHopPy5ib3JkZXJ9KSl9IiR7c30+PC9kaXY+YCksdi5sYWJlbHx8di5pY29ufHx2LmF2YXRhcnx8bS5kZWZhdWx0PyhvKGBceDNjIS0tWy0tXHgzZTxkaXYgZGF0YS1zbG90PSJjb250YWluZXIiIGNsYXNzPSIke2MoUy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoeik/LmNvbnRhaW5lcn0pKX0iJHtzfT5gKSx1KHIuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Uy52YWx1ZX0sKCk9Pnt2LmxhYmVsP28oYDxzcGFuIGRhdGEtc2xvdD0ibGFiZWwiIGNsYXNzPSIke2MoUy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih6KT8ubGFiZWx9KSl9IiR7c30+JHtiKHYubGFiZWwpfTwvc3Bhbj5gKTp2Lmljb24/byhkKGwse25hbWU6di5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpTLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeik/Lmljb259KX0sbnVsbCx0LHMpKTp2LmF2YXRhcj9vKGQobixlLm1lcmdlUHJvcHMoe3NpemU6ZS51bnJlZih6KT8uYXZhdGFyU2l6ZXx8Uy52YWx1ZS5hdmF0YXJTaXplKCl9LHYuYXZhdGFyLHsiZGF0YS1zbG90IjoiYXZhdGFyIixjbGFzczpTLnZhbHVlLmF2YXRhcih7Y2xhc3M6ZS51bnJlZih6KT8uYXZhdGFyfSl9KSxudWxsLHQscykpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyx0LHMpLG8oYDwvZGl2PjxkaXYgZGF0YS1zbG90PSJib3JkZXIiIGNsYXNzPSIke2MoUy52YWx1ZS5ib3JkZXIoe2NsYXNzOmUudW5yZWYoeik/LmJvcmRlcn0pKX0iJHtzfT48L2Rpdj5ceDNjIS0tXS0tXHgzZWApKTpvKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LG8pKX19fSxmPXYuc2V0dXA7di5zZXR1cD0ocixhKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1NlcGFyYXRvci52dWUiKSxmP2YocixhKTp2b2lkIDB9O2V4cG9ydHt2IGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1TZXBhcmF0b3ItRHdjUjlQTTEubWpzLm1hcAo=", "chunks/build/Skeleton-BftqyGp3.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHMsdiBhcyB0LHQgYXMgcixQIGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGEsZyBhcyBsfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3Qgbj17YmFzZToiYW5pbWF0ZS1wdWxzZSByb3VuZGVkLW1kIGJnLWVsZXZhdGVkIn0sbz17X19uYW1lOiJVU2tlbGV0b24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cChvKXtjb25zdCBkPW8saT1lKCksbT1zKCJza2VsZXRvbiIsZCkscD10LmNvbXB1dGVkKCgpPT5yKHtleHRlbmQ6cihuKSwuLi5pLnVpPy5za2VsZXRvbnx8e319KSk7cmV0dXJuKGUscyxyLG4pPT57cyhhKHQudW5yZWYodSksdC5tZXJnZVByb3BzKHthczpvLmFzLCJhcmlhLWJ1c3kiOiJ0cnVlIiwiYXJpYS1sYWJlbCI6ImxvYWRpbmciLCJhcmlhLWxpdmUiOiJwb2xpdGUiLHJvbGU6ImFsZXJ0IixjbGFzczpwLnZhbHVlKHtjbGFzczpbdC51bnJlZihtKT8uYmFzZSxkLmNsYXNzXX0pfSxuKSx7ZGVmYXVsdDp0LndpdGhDdHgoKHMscix1LGEpPT57aWYoIXIpcmV0dXJuW3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXTtsKGUuJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLHIsdSxhKX0pLF86M30scikpfX19LGQ9by5zZXR1cDtvLnNldHVwPShlLHMpPT57Y29uc3Qgcj10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oci5tb2R1bGVzfHwoci5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2tlbGV0b24udnVlIiksZD9kKGUscyk6dm9pZCAwfTtleHBvcnR7byBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2tlbGV0b24tQmZ0cXlHcDMubWpzLm1hcAo=", "chunks/build/SupportConversation-BXDjvgCH.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7diBhcyB0LF8gYXMgb31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e28gYXMgcyx0IGFzIHIsaiBhcyBuLHEgYXMgYSxmIGFzIGx9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBpPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnttZXNzYWdlczp7fSx2aWV3ZXJSb2xlOnt9LGNhblJlcGx5Ont0eXBlOkJvb2xlYW59LHNlbmRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic2VuZCJdLHNldHVwKGkse2VtaXQ6cH0pe2NvbnN0IHU9aSxkPXAsbT10LnJlZigiIik7ZnVuY3Rpb24gc3VibWl0KCl7Y29uc3QgZT1tLnZhbHVlLnRyaW0oKTtlJiYhdS5zZW5kaW5nJiYoZCgic2VuZCIsZSksbS52YWx1ZT0iIil9ZnVuY3Rpb24gaXNNaW5lKGUpe3JldHVybiBlLmF1dGhvclJvbGU9PT11LnZpZXdlclJvbGV9cmV0dXJuKGkscCxkLGMpPT57Y29uc3QgZj1lLHg9bztwKGA8ZGl2JHtzKHQubWVyZ2VQcm9wcyh7Y2xhc3M6ImZsZXggZmxleC1jb2wgaC1mdWxsIn0sYykpfT48ZGl2IGNsYXNzPSJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTMgcC00Ij5ceDNjIS0tWy0tXHgzZWApLHIodS5tZXNzYWdlcyxlPT57cChgPGRpdiBjbGFzcz0iJHtuKFtpc01pbmUoZSk/Imp1c3RpZnktZW5kIjoianVzdGlmeS1zdGFydCIsImZsZXgiXSl9Ij48ZGl2IGNsYXNzPSIke24oW2lzTWluZShlKT8iYmctcHJpbWFyeSB0ZXh0LWludmVydGVkIjoiYmctZWxldmF0ZWQgdGV4dC1kZWZhdWx0IiwibWF4LXctWzgwJV0gcm91bmRlZC1sZyBweC0zIHB5LTIgdGV4dC1zbSJdKX0iPjxwIGNsYXNzPSJ3aGl0ZXNwYWNlLXByZS13cmFwIGJyZWFrLXdvcmRzIj4ke2EoZS5ib2R5KX08L3A+PHAgY2xhc3M9Im10LTEgdGV4dC1bMTBweF0gb3BhY2l0eS03MCI+JHthKCJhZ2VudCI9PT1lLmF1dGhvclJvbGU/IlN1cHBvcnQiOiJZb3UiKX0gwrcgJHthKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9RGF0ZS5ub3coKS1uZXcgRGF0ZShlKS5nZXRUaW1lKCksbz1NYXRoLmZsb29yKHQvNmU0KTtpZihvPDEpcmV0dXJuImp1c3Qgbm93IjtpZihvPDYwKXJldHVybmAke299bSBhZ29gO2NvbnN0IHM9TWF0aC5mbG9vcihvLzYwKTtyZXR1cm4gczwyND9gJHtzfWggYWdvYDpgJHtNYXRoLmZsb29yKHMvMjQpfWQgYWdvYH0oZS5jcmVhdGVkQXQpKX08L3A+PC9kaXY+PC9kaXY+YCl9KSxwKCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpLHUuY2FuUmVwbHk/KHAoJzxmb3JtIGNsYXNzPSJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTMgZmxleCBpdGVtcy1lbmQgZ2FwLTIiPicpLHAobChmLHttb2RlbFZhbHVlOnQudW5yZWYobSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQuaXNSZWYobSk/bS52YWx1ZT1lOm51bGwscm93czoyLGF1dG9yZXNpemU6IiIscGxhY2Vob2xkZXI6IldyaXRlIGEgcmVwbHnigKYiLGNsYXNzOiJmbGV4LTEiLG9uS2V5ZG93bjpzdWJtaXR9LG51bGwsZCkpLHAobCh4LHt0eXBlOiJzdWJtaXQiLGljb246ImktbHVjaWRlLXNlbmQiLGxvYWRpbmc6dS5zZW5kaW5nLGRpc2FibGVkOiF0LnVucmVmKG0pLnRyaW0oKX0sbnVsbCxkKSkscCgiPC9mb3JtPiIpKTpwKCJceDNjIS0tLS1ceDNlIikscCgiPC9kaXY+Iil9fX0pLHA9aS5zZXR1cDtpLnNldHVwPShlLG8pPT57Y29uc3Qgcz10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4ocy5tb2R1bGVzfHwocy5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9zdXBwb3J0L2FwcC9jb21wb25lbnRzL1N1cHBvcnQvU3VwcG9ydENvbnZlcnNhdGlvbi52dWUiKSxwP3AoZSxvKTp2b2lkIDB9O2NvbnN0IHU9T2JqZWN0LmFzc2lnbihpLHtfX25hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24ifSk7ZXhwb3J0e3UgYXMgU307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVN1cHBvcnRDb252ZXJzYXRpb24tQlhEanZnQ0gubWpzLm1hcAo=", "chunks/build/Switch-ByW0BULi.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIGEsZSBhcyB0LEUgYXMgbCxGIGFzIG4sSCBhcyBjLHQgYXMgcixiIGFzIHMsUCBhcyBvLFMgYXMgZCxNIGFzIGksbSBhcyB1fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7TCBhcyBwfWZyb20iLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydHt1IGFzIG19ZnJvbSIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0e1YgYXMgZn1mcm9tIi4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydHtmIGFzIGgsaiBhcyBrLGcgYXMgYixxIGFzIHZ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdFtnLHldPXUoIlN3aXRjaFJvb3QiKTt2YXIgeD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTd2l0Y2hSb290Iixwcm9wczp7ZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoib24ifSx0cnVlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT4hMH0sZmFsc2VWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoYSx7ZW1pdDp0fSl7Y29uc3QgbD1hLG49dCx7ZGlzYWJsZWQ6Y309ZS50b1JlZnMobCkscj1kKGwsIm1vZGVsVmFsdWUiLG4se2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRWYWx1ZT8/bC5mYWxzZVZhbHVlLHBhc3NpdmU6dm9pZCAwPT09bC5tb2RlbFZhbHVlfSkscz1lLmNvbXB1dGVkKCgpPT5yLnZhbHVlPT09bC50cnVlVmFsdWUpO2Z1bmN0aW9uIHRvZ2dsZUNoZWNrKCl7Yy52YWx1ZXx8KHIudmFsdWU9cy52YWx1ZT9sLmZhbHNlVmFsdWU6bC50cnVlVmFsdWUpfWNvbnN0e2ZvcndhcmRSZWY6dSxjdXJyZW50RWxlbWVudDpwfT1pKCksaD1tKHApLGs9ZS5jb21wdXRlZCgoKT0+bC5pZCYmcC52YWx1ZT8odm9pZCAwKS5xdWVyeVNlbGVjdG9yKGBbZm9yPSIke2wuaWR9Il1gKT8uaW5uZXJUZXh0OnZvaWQgMCk7cmV0dXJuIHkoe2NoZWNrZWQ6cyx0b2dnbGVDaGVjazp0b2dnbGVDaGVjayxkaXNhYmxlZDpjfSksKGEsdCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihvKSxlLm1lcmdlUHJvcHMoYS4kYXR0cnMse2lkOmEuaWQscmVmOmUudW5yZWYodSkscm9sZToic3dpdGNoIix0eXBlOiJidXR0b24iPT09YS5hcz8iYnV0dG9uIjp2b2lkIDAsdmFsdWU6YS52YWx1ZSwiYXJpYS1sYWJlbCI6YS4kYXR0cnNbImFyaWEtbGFiZWwiXXx8ay52YWx1ZSwiYXJpYS1jaGVja2VkIjpzLnZhbHVlLCJhcmlhLXJlcXVpcmVkIjphLnJlcXVpcmVkLCJkYXRhLXN0YXRlIjpzLnZhbHVlPyJjaGVja2VkIjoidW5jaGVja2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihjKT8iIjp2b2lkIDAsImFzLWNoaWxkIjphLmFzQ2hpbGQsYXM6YS5hcyxkaXNhYmxlZDplLnVucmVmKGMpLG9uQ2xpY2s6dG9nZ2xlQ2hlY2ssb25LZXlkb3duOmUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKHRvZ2dsZUNoZWNrLFsicHJldmVudCJdKSxbImVudGVyIl0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKHIpLGNoZWNrZWQ6cy52YWx1ZX0pLGUudW5yZWYoaCkmJmEubmFtZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZikse2tleTowLHR5cGU6ImNoZWNrYm94IixuYW1lOmEubmFtZSxkaXNhYmxlZDplLnVucmVmKGMpLHJlcXVpcmVkOmEucmVxdWlyZWQsdmFsdWU6YS52YWx1ZSxjaGVja2VkOnMudmFsdWV9LG51bGwsOCxbIm5hbWUiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwidmFsdWUiLCJjaGVja2VkIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApXSksXzozfSwxNixbImlkIiwidHlwZSIsInZhbHVlIiwiYXJpYS1sYWJlbCIsImFyaWEtY2hlY2tlZCIsImFyaWEtcmVxdWlyZWQiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImFzLWNoaWxkIiwiYXMiLCJkaXNhYmxlZCIsIm9uS2V5ZG93biJdKSl9fSksdz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTd2l0Y2hUaHVtYiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKGEpe2NvbnN0IHQ9ZygpO3JldHVybiBpKCksKGEsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihvKSx7ImRhdGEtc3RhdGUiOmUudW5yZWYodCkuY2hlY2tlZC52YWx1ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCIsImRhdGEtZGlzYWJsZWQiOmUudW5yZWYodCkuZGlzYWJsZWQudmFsdWU/IiI6dm9pZCAwLCJhcy1jaGlsZCI6YS5hc0NoaWxkLGFzOmEuYXN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJhcy1jaGlsZCIsImFzIl0pKX19KTtjb25zdCBxPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCBpdGVtcy1zdGFydCIsYmFzZTpbImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzaHJpbmstMCByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXRyYW5zcGFyZW50IGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOmJnLWFjY2VudGVkIiwidHJhbnNpdGlvbi1bYmFja2dyb3VuZF0gZHVyYXRpb24tMjAwIl0sY29udGFpbmVyOiJmbGV4IGl0ZW1zLWNlbnRlciIsdGh1bWI6Imdyb3VwIHBvaW50ZXItZXZlbnRzLW5vbmUgcm91bmRlZC1mdWxsIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJpbmctMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDAgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTp0cmFuc2xhdGUteC0wIGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIixpY29uOlsiYWJzb2x1dGUgc2hyaW5rLTAgZ3JvdXAtZGF0YS1bc3RhdGU9dW5jaGVja2VkXTp0ZXh0LWRpbW1lZCBvcGFjaXR5LTAgc2l6ZS0xMC8xMiIsInRyYW5zaXRpb24tW2NvbG9yLG9wYWNpdHldIGR1cmF0aW9uLTIwMCJdLHdyYXBwZXI6Im1zLTIiLGxhYmVsOiJibG9jayBmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OntiYXNlOiJkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1wcmltYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5IixpY29uOiJncm91cC1kYXRhLVtzdGF0ZT1jaGVja2VkXTp0ZXh0LXByaW1hcnkifSxzZWNvbmRhcnk6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXNlY29uZGFyeSBmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5IixpY29uOiJncm91cC1kYXRhLVtzdGF0ZT1jaGVja2VkXTp0ZXh0LXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXN1Y2Nlc3MgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXN1Y2Nlc3MiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtc3VjY2VzcyJ9LGluZm86e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLWluZm8gZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZm8iLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtaW5mbyJ9LHdhcm5pbmc6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXdhcm5pbmcgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXdhcm5pbmciLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtd2FybmluZyJ9LGVycm9yOntiYXNlOiJkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1lcnJvciBmb2N1cy12aXNpYmxlOm91dGxpbmUtZXJyb3IiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtZXJyb3IifSxuZXV0cmFsOntiYXNlOiJkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1pbnZlcnRlZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtaW52ZXJ0ZWQiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtaGlnaGxpZ2h0ZWQifX0sc2l6ZTp7eHM6e2Jhc2U6InctNyIsY29udGFpbmVyOiJoLTQiLHRodW1iOiJzaXplLTMgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtMyBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTMiLHdyYXBwZXI6InRleHQteHMifSxzbTp7YmFzZToidy04Iixjb250YWluZXI6ImgtNCIsdGh1bWI6InNpemUtMy41IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTMuNSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTMuNSIsd3JhcHBlcjoidGV4dC14cyJ9LG1kOntiYXNlOiJ3LTkiLGNvbnRhaW5lcjoiaC01Iix0aHVtYjoic2l6ZS00IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTQgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC00Iix3cmFwcGVyOiJ0ZXh0LXNtIn0sbGc6e2Jhc2U6InctMTAiLGNvbnRhaW5lcjoiaC01Iix0aHVtYjoic2l6ZS00LjUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtNC41IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnJ0bDotdHJhbnNsYXRlLXgtNC41Iix3cmFwcGVyOiJ0ZXh0LXNtIn0seGw6e2Jhc2U6InctMTEiLGNvbnRhaW5lcjoiaC02Iix0aHVtYjoic2l6ZS01IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC01Iix3cmFwcGVyOiJ0ZXh0LWJhc2UifX0sY2hlY2tlZDp7dHJ1ZTp7aWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06b3BhY2l0eS0xMDAifX0sdW5jaGVja2VkOnt0cnVlOntpY29uOiJncm91cC1kYXRhLVtzdGF0ZT11bmNoZWNrZWRdOm9wYWNpdHktMTAwIn19LGxvYWRpbmc6e3RydWU6e2ljb246ImFuaW1hdGUtc3BpbiJ9fSxyZXF1aXJlZDp7dHJ1ZTp7bGFiZWw6ImFmdGVyOmNvbnRlbnQtWycqJ10gYWZ0ZXI6bXMtMC41IGFmdGVyOnRleHQtZXJyb3IifX0sZGlzYWJsZWQ6e3RydWU6e3Jvb3Q6Im9wYWNpdHktNzUiLGJhc2U6ImN1cnNvci1ub3QtYWxsb3dlZCIsbGFiZWw6ImN1cnNvci1ub3QtYWxsb3dlZCIsZGVzY3JpcHRpb246ImN1cnNvci1ub3QtYWxsb3dlZCJ9fX0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSIsc2l6ZToibWQifX0sQj1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVTd2l0Y2giLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdW5jaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRydWVWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxmYWxzZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImNoYW5nZSIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZCx7ZW1pdDppfSl7Y29uc3QgdT1kLG09ZS51c2VTbG90cygpLGY9aSxnPWEoKSx5PXQoInN3aXRjaCIsdSksQj1sKG4odSwicmVxdWlyZWQiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIm1vZGVsVmFsdWUiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiksZikse2lkOlYsZW1pdEZvcm1DaGFuZ2U6QyxlbWl0Rm9ybUlucHV0Okksc2l6ZTpTLGNvbG9yOl8sbmFtZTokLGRpc2FibGVkOk4sYXJpYUF0dHJzOnp9PWModSksaj1WLnZhbHVlPz9lLnVzZUlkKCksRj1lLnVzZUF0dHJzKCksVT1lLmNvbXB1dGVkKCgpPT57Y29uc3R7ImRhdGEtc3RhdGUiOmUsLi4uYX09RjtyZXR1cm4gYX0pLFA9ZS5jb21wdXRlZCgoKT0+cih7ZXh0ZW5kOnIocSksLi4uZy51aT8uc3dpdGNofHx7fX0pKHtzaXplOlMudmFsdWUsY29sb3I6Xy52YWx1ZSxyZXF1aXJlZDp1LnJlcXVpcmVkLGxvYWRpbmc6dS5sb2FkaW5nLGRpc2FibGVkOk4udmFsdWV8fHUubG9hZGluZ30pKTtmdW5jdGlvbiBvblVwZGF0ZShlKXtjb25zdCBhPW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTplfX0pO2YoImNoYW5nZSIsYSksQygpLEkoKX1yZXR1cm4oYSx0LGwsbik9Pnt0KGgoZS51bnJlZihvKSxlLm1lcmdlUHJvcHMoe2FzOmQuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOlAudmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoeSk/LnJvb3QsdS5jbGFzc119KX0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGwsbixjKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY29udGFpbmVyIixjbGFzczpQLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZih5KT8uY29udGFpbmVyfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeCksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKGopfSx7Li4uZS51bnJlZihCKSwuLi5VLnZhbHVlLC4uLmUudW5yZWYoeil9LHtuYW1lOmUudW5yZWYoJCksZGlzYWJsZWQ6ZS51bnJlZihOKXx8ZC5sb2FkaW5nLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpQLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoeSk/LmJhc2V9KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b25VcGRhdGV9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodykseyJkYXRhLXNsb3QiOiJ0aHVtYiIsY2xhc3M6UC52YWx1ZS50aHVtYih7Y2xhc3M6ZS51bnJlZih5KT8udGh1bWJ9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZC5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmxvYWRpbmdJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtkLmNoZWNrZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmNoZWNrZWRJY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpQLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeSk/Lmljb24sY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxkLnVuY2hlY2tlZEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhzLHtrZXk6MSxuYW1lOmQudW5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0pLF86MX0sOCxbImNsYXNzIl0pXSksXzoxfSwxNixbImlkIiwibmFtZSIsImRpc2FibGVkIiwiY2xhc3MiXSldLDIpLGQubGFiZWx8fG0ubGFiZWx8fGQuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOlAudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pfSxbZC5sYWJlbHx8bS5sYWJlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYocCkse2tleTowLGZvcjplLnVucmVmKGopLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6UC52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmQubGFiZWx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZC5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZC5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpQLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pfSxbZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmQuZGVzY3JpcHRpb259LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZC5kZXNjcmlwdGlvbiksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07bChgPGRpdiBkYXRhLXNsb3Q9ImNvbnRhaW5lciIgY2xhc3M9IiR7ayhQLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZih5KT8uY29udGFpbmVyfSkpfSIke2N9PmApLGwoaChlLnVucmVmKHgpLGUubWVyZ2VQcm9wcyh7aWQ6ZS51bnJlZihqKX0sey4uLmUudW5yZWYoQiksLi4uVS52YWx1ZSwuLi5lLnVucmVmKHopfSx7bmFtZTplLnVucmVmKCQpLGRpc2FibGVkOmUudW5yZWYoTil8fGQubG9hZGluZywiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6UC52YWx1ZS5iYXNlKHtjbGFzczplLnVucmVmKHkpPy5iYXNlfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9uVXBkYXRlfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLHQsbCxuKT0+e2lmKCF0KXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodykseyJkYXRhLXNsb3QiOiJ0aHVtYiIsY2xhc3M6UC52YWx1ZS50aHVtYih7Y2xhc3M6ZS51bnJlZih5KT8udGh1bWJ9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZC5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmxvYWRpbmdJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtkLmNoZWNrZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmNoZWNrZWRJY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpQLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeSk/Lmljb24sY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxkLnVuY2hlY2tlZEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhzLHtrZXk6MSxuYW1lOmQudW5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0pLF86MX0sOCxbImNsYXNzIl0pXTt0KGgoZS51bnJlZih3KSx7ImRhdGEtc2xvdCI6InRodW1iIixjbGFzczpQLnZhbHVlLnRodW1iKHtjbGFzczplLnVucmVmKHkpPy50aHVtYn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsdCxsLG4pPT57aWYoIXQpcmV0dXJuW2QubG9hZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHMse2tleTowLG5hbWU6ZC5sb2FkaW5nSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpQLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeSk/Lmljb24sY2hlY2tlZDohMCx1bmNoZWNrZWQ6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZC5jaGVja2VkSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHMse2tleTowLG5hbWU6ZC5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLGNoZWNrZWQ6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZC51bmNoZWNrZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjEsbmFtZTpkLnVuY2hlY2tlZEljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbix1bmNoZWNrZWQ6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSldO2QubG9hZGluZz90KGgocyx7bmFtZTpkLmxvYWRpbmdJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pfSxudWxsLGwsbikpOih0KCJceDNjIS0tWy0tXHgzZSIpLGQuY2hlY2tlZEljb24/dChoKHMse25hbWU6ZC5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLGNoZWNrZWQ6ITB9KX0sbnVsbCxsLG4pKTp0KCJceDNjIS0tLS1ceDNlIiksZC51bmNoZWNrZWRJY29uP3QoaChzLHtuYW1lOmQudW5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLHVuY2hlY2tlZDohMH0pfSxudWxsLGwsbikpOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCJceDNjIS0tXS0tXHgzZSIpKX0pLF86MX0sbCxuKSl9KSxfOjF9LG4sYykpLGwoIjwvZGl2PiIpLGQubGFiZWx8fG0ubGFiZWx8fGQuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KGwoYDxkaXYgZGF0YS1zbG90PSJ3cmFwcGVyIiBjbGFzcz0iJHtrKFAudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pKX0iJHtjfT5gKSxkLmxhYmVsfHxtLmxhYmVsP2woaChlLnVucmVmKHApLHtmb3I6ZS51bnJlZihqKSwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlAudmFsdWUubGFiZWwoe2NsYXNzOmUudW5yZWYoeSk/LmxhYmVsfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxsLG4sYyk9PntpZighbClyZXR1cm5bZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmQubGFiZWx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZC5sYWJlbCksMSldKV07YihhLiRzbG90cywibGFiZWwiLHtsYWJlbDpkLmxhYmVsfSwoKT0+e2woYCR7dihkLmxhYmVsKX1gKX0sbCxuLGMpfSksXzozfSxuLGMpKTpsKCJceDNjIS0tLS1ceDNlIiksZC5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8obChgPHAgZGF0YS1zbG90PSJkZXNjcmlwdGlvbiIgY2xhc3M9IiR7ayhQLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pKX0iJHtjfT5gKSxiKGEuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmQuZGVzY3JpcHRpb259LCgpPT57bChgJHt2KGQuZGVzY3JpcHRpb24pfWApfSxsLG4sYyksbCgiPC9wPiIpKTpsKCJceDNjIS0tLS1ceDNlIiksbCgiPC9kaXY+IikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sbCkpfX19KSxWPUIuc2V0dXA7Qi5zZXR1cD0oYSx0KT0+e2NvbnN0IGw9ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGwubW9kdWxlc3x8KGwubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1N3aXRjaC52dWUiKSxWP1YoYSx0KTp2b2lkIDB9O2V4cG9ydHtCIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1Td2l0Y2gtQnlXMEJVTGkubWpzLm1hcAo=", "chunks/build/Table-0URnC8OH.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBuLGUgYXMgbyxheCBhcyBsLHQgYXMgYSxrIGFzIHIsbCBhcyBpLEYgYXMgcyxQIGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHthWSBhcyBkLGFFIGFzIGd9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtBIGFzIGMsYiBhcyBwLHcgYXMgbSxhIGFzIGYsQiBhcyB2LGQgYXMgaCxoIGFzIFMsdSBhcyBiLGYgYXMgdyx6IGFzIEMsaiBhcyBSLHksdCBhcyB4LGcgYXMgRixxIGFzIE19ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnR7dSBhcyBWfWZyb20iLi9pbmRleC1CMVBPVExtYS5tanMiO2Z1bmN0aW9uIGZ1bmN0aW9uYWxVcGRhdGUoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQpOmV9ZnVuY3Rpb24gbWFrZVN0YXRlVXBkYXRlcihlLHQpe3JldHVybiBuPT57dC5zZXRTdGF0ZSh0PT4oey4uLnQsW2VdOmZ1bmN0aW9uYWxVcGRhdGUobix0W2VdKX0pKX19ZnVuY3Rpb24gaXNGdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufWZ1bmN0aW9uIG1lbW8oZSx0LG4pe2xldCBvLGw9W107cmV0dXJuIGE9PntsZXQgcjtuLmtleSYmbi5kZWJ1ZyYmKHI9RGF0ZS5ub3coKSk7Y29uc3QgaT1lKGEpO2lmKCEoaS5sZW5ndGghPT1sLmxlbmd0aHx8aS5zb21lKChlLHQpPT5sW3RdIT09ZSkpKXJldHVybiBvO2xldCBzO2lmKGw9aSxuLmtleSYmbi5kZWJ1ZyYmKHM9RGF0ZS5ub3coKSksbz10KC4uLmkpLG51bGw9PW58fG51bGw9PW4ub25DaGFuZ2V8fG4ub25DaGFuZ2Uobyksbi5rZXkmJm4uZGVidWcmJm51bGwhPW4mJm4uZGVidWcoKSl7Y29uc3QgZT1NYXRoLnJvdW5kKDEwMCooRGF0ZS5ub3coKS1yKSkvMTAwLHQ9TWF0aC5yb3VuZCgxMDAqKERhdGUubm93KCktcykpLzEwMCxvPXQvMTYscGFkPShlLHQpPT57Zm9yKGU9U3RyaW5nKGUpO2UubGVuZ3RoPHQ7KWU9IiAiK2U7cmV0dXJuIGV9O2NvbnNvbGUuaW5mbyhgJWPij7EgJHtwYWQodCw1KX0gLyR7cGFkKGUsNSl9IG1zYCxgXG4gICAgICAgICAgICBmb250LXNpemU6IC42cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBjb2xvcjogaHNsKCR7TWF0aC5tYXgoMCxNYXRoLm1pbigxMjAtMTIwKm8sMTIwKSl9ZGVnIDEwMCUgMzElKTtgLG51bGw9PW4/dm9pZCAwOm4ua2V5KX1yZXR1cm4gb319ZnVuY3Rpb24gZ2V0TWVtb09wdGlvbnMoZSx0LG4sbyl7cmV0dXJue2RlYnVnOigpPT57dmFyIG47cmV0dXJuIG51bGwhPShuPW51bGw9PWU/dm9pZCAwOmUuZGVidWdBbGwpP246ZVt0XX0sa2V5OiExLG9uQ2hhbmdlOm99fWNvbnN0IFA9ImRlYnVnSGVhZGVycyI7ZnVuY3Rpb24gY3JlYXRlSGVhZGVyKGUsdCxuKXt2YXIgbztsZXQgbD17aWQ6bnVsbCE9KG89bi5pZCk/bzp0LmlkLGNvbHVtbjp0LGluZGV4Om4uaW5kZXgsaXNQbGFjZWhvbGRlcjohIW4uaXNQbGFjZWhvbGRlcixwbGFjZWhvbGRlcklkOm4ucGxhY2Vob2xkZXJJZCxkZXB0aDpuLmRlcHRoLHN1YkhlYWRlcnM6W10sY29sU3BhbjowLHJvd1NwYW46MCxoZWFkZXJHcm91cDpudWxsLGdldExlYWZIZWFkZXJzOigpPT57Y29uc3QgZT1bXSxyZWN1cnNlSGVhZGVyPXQ9Pnt0LnN1YkhlYWRlcnMmJnQuc3ViSGVhZGVycy5sZW5ndGgmJnQuc3ViSGVhZGVycy5tYXAocmVjdXJzZUhlYWRlciksZS5wdXNoKHQpfTtyZXR1cm4gcmVjdXJzZUhlYWRlcihsKSxlfSxnZXRDb250ZXh0OigpPT4oe3RhYmxlOmUsaGVhZGVyOmwsY29sdW1uOnR9KX07cmV0dXJuIGUuX2ZlYXR1cmVzLmZvckVhY2godD0+e251bGw9PXQuY3JlYXRlSGVhZGVyfHx0LmNyZWF0ZUhlYWRlcihsLGUpfSksbH1jb25zdCBJPXtjcmVhdGVUYWJsZTplPT57ZS5nZXRIZWFkZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKHQsbixvLGwpPT57dmFyIGEscjtjb25zdCBpPW51bGwhPShhPW51bGw9PW8/dm9pZCAwOm8ubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKSk/YTpbXSxzPW51bGwhPShyPW51bGw9PWw/dm9pZCAwOmwubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKSk/cjpbXTtyZXR1cm4gYnVpbGRIZWFkZXJHcm91cHModCxbLi4uaSwuLi5uLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZS5pZCl8fG51bGwhPWwmJmwuaW5jbHVkZXMoZS5pZCkpKSwuLi5zXSxlKX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldENlbnRlckhlYWRlckdyb3Vwcz1tZW1vKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLG8sbCk9PmJ1aWxkSGVhZGVyR3JvdXBzKHQsbj1uLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZS5pZCl8fG51bGwhPWwmJmwuaW5jbHVkZXMoZS5pZCkpKSxlLCJjZW50ZXIiKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0TGVmdEhlYWRlckdyb3Vwcz1tZW1vKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0XSwodCxuLG8pPT57dmFyIGw7cmV0dXJuIGJ1aWxkSGVhZGVyR3JvdXBzKHQsbnVsbCE9KGw9bnVsbD09bz92b2lkIDA6by5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pKT9sOltdLGUsImxlZnQiKX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldFJpZ2h0SGVhZGVyR3JvdXBzPW1lbW8oKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLG8pPT57dmFyIGw7cmV0dXJuIGJ1aWxkSGVhZGVyR3JvdXBzKHQsbnVsbCE9KGw9bnVsbD09bz92b2lkIDA6by5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pKT9sOltdLGUsInJpZ2h0Iil9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucyxQKSksZS5nZXRGb290ZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0SGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldExlZnRGb290ZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0TGVmdEhlYWRlckdyb3VwcygpXSxlPT5bLi4uZV0ucmV2ZXJzZSgpLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucyxQKSksZS5nZXRDZW50ZXJGb290ZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0Q2VudGVySGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldFJpZ2h0Rm9vdGVyR3JvdXBzPW1lbW8oKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldEZsYXRIZWFkZXJzPW1lbW8oKCk9PltlLmdldEhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0TGVmdEZsYXRIZWFkZXJzPW1lbW8oKCk9PltlLmdldExlZnRIZWFkZXJHcm91cHMoKV0sZT0+ZS5tYXAoZT0+ZS5oZWFkZXJzKS5mbGF0KCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldENlbnRlckZsYXRIZWFkZXJzPW1lbW8oKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0UmlnaHRGbGF0SGVhZGVycz1tZW1vKCgpPT5bZS5nZXRSaWdodEhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0Q2VudGVyTGVhZkhlYWRlcnM9bWVtbygoKT0+W2UuZ2V0Q2VudGVyRmxhdEhlYWRlcnMoKV0sZT0+ZS5maWx0ZXIoZT0+e3ZhciB0O3JldHVybiEobnVsbCE9KHQ9ZS5zdWJIZWFkZXJzKSYmdC5sZW5ndGgpfSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldExlZnRMZWFmSGVhZGVycz1tZW1vKCgpPT5bZS5nZXRMZWZ0RmxhdEhlYWRlcnMoKV0sZT0+ZS5maWx0ZXIoZT0+e3ZhciB0O3JldHVybiEobnVsbCE9KHQ9ZS5zdWJIZWFkZXJzKSYmdC5sZW5ndGgpfSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldFJpZ2h0TGVhZkhlYWRlcnM9bWVtbygoKT0+W2UuZ2V0UmlnaHRGbGF0SGVhZGVycygpXSxlPT5lLmZpbHRlcihlPT57dmFyIHQ7cmV0dXJuIShudWxsIT0odD1lLnN1YkhlYWRlcnMpJiZ0Lmxlbmd0aCl9KSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0TGVhZkhlYWRlcnM9bWVtbygoKT0+W2UuZ2V0TGVmdEhlYWRlckdyb3VwcygpLGUuZ2V0Q2VudGVySGVhZGVyR3JvdXBzKCksZS5nZXRSaWdodEhlYWRlckdyb3VwcygpXSwoZSx0LG4pPT57dmFyIG8sbCxhLHIsaSxzO3JldHVyblsuLi5udWxsIT0obz1udWxsPT0obD1lWzBdKT92b2lkIDA6bC5oZWFkZXJzKT9vOltdLC4uLm51bGwhPShhPW51bGw9PShyPXRbMF0pP3ZvaWQgMDpyLmhlYWRlcnMpP2E6W10sLi4ubnVsbCE9KGk9bnVsbD09KHM9blswXSk/dm9pZCAwOnMuaGVhZGVycyk/aTpbXV0ubWFwKGU9PmUuZ2V0TGVhZkhlYWRlcnMoKSkuZmxhdCgpfSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpfX07ZnVuY3Rpb24gYnVpbGRIZWFkZXJHcm91cHMoZSx0LG4sbyl7dmFyIGwsYTtsZXQgcj0wO2NvbnN0IGZpbmRNYXhEZXB0aD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PTEpLHI9TWF0aC5tYXgocix0KSxlLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZSgpKS5mb3JFYWNoKGU9Pnt2YXIgbjtudWxsIT0obj1lLmNvbHVtbnMpJiZuLmxlbmd0aCYmZmluZE1heERlcHRoKGUuY29sdW1ucyx0KzEpfSwwKX07ZmluZE1heERlcHRoKGUpO2xldCBpPVtdO2NvbnN0IGNyZWF0ZUhlYWRlckdyb3VwPShlLHQpPT57Y29uc3QgbD17ZGVwdGg6dCxpZDpbbyxgJHt0fWBdLmZpbHRlcihCb29sZWFuKS5qb2luKCJfIiksaGVhZGVyczpbXX0sYT1bXTtlLmZvckVhY2goZT0+e2NvbnN0IHI9Wy4uLmFdLnJldmVyc2UoKVswXTtsZXQgaSxzPSExO2lmKGUuY29sdW1uLmRlcHRoPT09bC5kZXB0aCYmZS5jb2x1bW4ucGFyZW50P2k9ZS5jb2x1bW4ucGFyZW50OihpPWUuY29sdW1uLHM9ITApLHImJihudWxsPT1yP3ZvaWQgMDpyLmNvbHVtbik9PT1pKXIuc3ViSGVhZGVycy5wdXNoKGUpO2Vsc2V7Y29uc3QgbD1jcmVhdGVIZWFkZXIobixpLHtpZDpbbyx0LGkuaWQsbnVsbD09ZT92b2lkIDA6ZS5pZF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIl8iKSxpc1BsYWNlaG9sZGVyOnMscGxhY2Vob2xkZXJJZDpzP2Ake2EuZmlsdGVyKGU9PmUuY29sdW1uPT09aSkubGVuZ3RofWA6dm9pZCAwLGRlcHRoOnQsaW5kZXg6YS5sZW5ndGh9KTtsLnN1YkhlYWRlcnMucHVzaChlKSxhLnB1c2gobCl9bC5oZWFkZXJzLnB1c2goZSksZS5oZWFkZXJHcm91cD1sfSksaS5wdXNoKGwpLHQ+MCYmY3JlYXRlSGVhZGVyR3JvdXAoYSx0LTEpfSxzPXQubWFwKChlLHQpPT5jcmVhdGVIZWFkZXIobixlLHtkZXB0aDpyLGluZGV4OnR9KSk7Y3JlYXRlSGVhZGVyR3JvdXAocyxyLTEpLGkucmV2ZXJzZSgpO2NvbnN0IHJlY3Vyc2VIZWFkZXJzRm9yU3BhbnM9ZT0+ZS5maWx0ZXIoZT0+ZS5jb2x1bW4uZ2V0SXNWaXNpYmxlKCkpLm1hcChlPT57bGV0IHQ9MCxuPTAsbz1bMF07ZS5zdWJIZWFkZXJzJiZlLnN1YkhlYWRlcnMubGVuZ3RoPyhvPVtdLHJlY3Vyc2VIZWFkZXJzRm9yU3BhbnMoZS5zdWJIZWFkZXJzKS5mb3JFYWNoKGU9PntsZXR7Y29sU3BhbjpuLHJvd1NwYW46bH09ZTt0Kz1uLG8ucHVzaChsKX0pKTp0PTE7cmV0dXJuIG4rPU1hdGgubWluKC4uLm8pLGUuY29sU3Bhbj10LGUucm93U3Bhbj1uLHtjb2xTcGFuOnQscm93U3BhbjpufX0pO3JldHVybiByZWN1cnNlSGVhZGVyc0ZvclNwYW5zKG51bGwhPShsPW51bGw9PShhPWlbMF0pP3ZvaWQgMDphLmhlYWRlcnMpP2w6W10pLGl9Y29uc3QgY3JlYXRlUm93PShlLHQsbixvLGwsYSxyKT0+e2xldCBpPXtpZDp0LGluZGV4Om8sb3JpZ2luYWw6bixkZXB0aDpsLHBhcmVudElkOnIsX3ZhbHVlc0NhY2hlOnt9LF91bmlxdWVWYWx1ZXNDYWNoZTp7fSxnZXRWYWx1ZTp0PT57aWYoaS5fdmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGkuX3ZhbHVlc0NhY2hlW3RdO2NvbnN0IG49ZS5nZXRDb2x1bW4odCk7cmV0dXJuIG51bGwhPW4mJm4uYWNjZXNzb3JGbj8oaS5fdmFsdWVzQ2FjaGVbdF09bi5hY2Nlc3NvckZuKGkub3JpZ2luYWwsbyksaS5fdmFsdWVzQ2FjaGVbdF0pOnZvaWQgMH0sZ2V0VW5pcXVlVmFsdWVzOnQ9PntpZihpLl91bmlxdWVWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gaS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF07Y29uc3Qgbj1lLmdldENvbHVtbih0KTtyZXR1cm4gbnVsbCE9biYmbi5hY2Nlc3NvckZuP24uY29sdW1uRGVmLmdldFVuaXF1ZVZhbHVlcz8oaS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF09bi5jb2x1bW5EZWYuZ2V0VW5pcXVlVmFsdWVzKGkub3JpZ2luYWwsbyksaS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pOihpLl91bmlxdWVWYWx1ZXNDYWNoZVt0XT1baS5nZXRWYWx1ZSh0KV0saS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pOnZvaWQgMH0scmVuZGVyVmFsdWU6dD0+e3ZhciBuO3JldHVybiBudWxsIT0obj1pLmdldFZhbHVlKHQpKT9uOmUub3B0aW9ucy5yZW5kZXJGYWxsYmFja1ZhbHVlfSxzdWJSb3dzOltdLGdldExlYWZSb3dzOigpPT5mdW5jdGlvbihlLHQpe2NvbnN0IG49W10scmVjdXJzZT1lPT57ZS5mb3JFYWNoKGU9PntuLnB1c2goZSk7Y29uc3Qgbz10KGUpO251bGwhPW8mJm8ubGVuZ3RoJiZyZWN1cnNlKG8pfSl9O3JldHVybiByZWN1cnNlKGUpLG59KGkuc3ViUm93cyxlPT5lLnN1YlJvd3MpLGdldFBhcmVudFJvdzooKT0+aS5wYXJlbnRJZD9lLmdldFJvdyhpLnBhcmVudElkLCEwKTp2b2lkIDAsZ2V0UGFyZW50Um93czooKT0+e2xldCBlPVtdLHQ9aTtmb3IoOzspe2NvbnN0IG49dC5nZXRQYXJlbnRSb3coKTtpZighbilicmVhaztlLnB1c2gobiksdD1ufXJldHVybiBlLnJldmVyc2UoKX0sZ2V0QWxsQ2VsbHM6bWVtbygoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKV0sdD0+dC5tYXAodD0+ZnVuY3Rpb24oZSx0LG4sbyl7Y29uc3QgbD17aWQ6YCR7dC5pZH1fJHtuLmlkfWAscm93OnQsY29sdW1uOm4sZ2V0VmFsdWU6KCk9PnQuZ2V0VmFsdWUobykscmVuZGVyVmFsdWU6KCk9Pnt2YXIgdDtyZXR1cm4gbnVsbCE9KHQ9bC5nZXRWYWx1ZSgpKT90OmUub3B0aW9ucy5yZW5kZXJGYWxsYmFja1ZhbHVlfSxnZXRDb250ZXh0Om1lbW8oKCk9PltlLG4sdCxsXSwoZSx0LG4sbyk9Pih7dGFibGU6ZSxjb2x1bW46dCxyb3c6bixjZWxsOm8sZ2V0VmFsdWU6by5nZXRWYWx1ZSxyZW5kZXJWYWx1ZTpvLnJlbmRlclZhbHVlfSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z0NlbGxzIikpfTtyZXR1cm4gZS5fZmVhdHVyZXMuZm9yRWFjaChvPT57bnVsbD09by5jcmVhdGVDZWxsfHxvLmNyZWF0ZUNlbGwobCxuLHQsZSl9LHt9KSxsfShlLGksdCx0LmlkKSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksX2dldEFsbENlbGxzQnlDb2x1bW5JZDptZW1vKCgpPT5baS5nZXRBbGxDZWxscygpXSxlPT5lLnJlZHVjZSgoZSx0KT0+KGVbdC5jb2x1bW4uaWRdPXQsZSkse30pLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdSb3dzIikpfTtmb3IobGV0IHQ9MDt0PGUuX2ZlYXR1cmVzLmxlbmd0aDt0Kyspe2NvbnN0IG49ZS5fZmVhdHVyZXNbdF07bnVsbD09bnx8bnVsbD09bi5jcmVhdGVSb3d8fG4uY3JlYXRlUm93KGksZSl9cmV0dXJuIGl9LE89e2NyZWF0ZUNvbHVtbjooZSx0KT0+e2UuX2dldEZhY2V0ZWRSb3dNb2RlbD10Lm9wdGlvbnMuZ2V0RmFjZXRlZFJvd01vZGVsJiZ0Lm9wdGlvbnMuZ2V0RmFjZXRlZFJvd01vZGVsKHQsZS5pZCksZS5nZXRGYWNldGVkUm93TW9kZWw9KCk9PmUuX2dldEZhY2V0ZWRSb3dNb2RlbD9lLl9nZXRGYWNldGVkUm93TW9kZWwoKTp0LmdldFByZUZpbHRlcmVkUm93TW9kZWwoKSxlLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzPXQub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzJiZ0Lm9wdGlvbnMuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcyh0LGUuaWQpLGUuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcz0oKT0+ZS5fZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcz9lLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzKCk6bmV3IE1hcCxlLl9nZXRGYWNldGVkTWluTWF4VmFsdWVzPXQub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzJiZ0Lm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyh0LGUuaWQpLGUuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcz0oKT0+e2lmKGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXMpcmV0dXJuIGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXMoKX19fSxpbmNsdWRlc1N0cmluZz0oZSx0LG4pPT57dmFyIG8sbDtjb25zdCBhPW51bGw9PW58fG51bGw9PShvPW4udG9TdHJpbmcoKSk/dm9pZCAwOm8udG9Mb3dlckNhc2UoKTtyZXR1cm4gQm9vbGVhbihudWxsPT0obD1lLmdldFZhbHVlKHQpKXx8bnVsbD09KGw9bC50b1N0cmluZygpKXx8bnVsbD09KGw9bC50b0xvd2VyQ2FzZSgpKT92b2lkIDA6bC5pbmNsdWRlcyhhKSl9O2luY2x1ZGVzU3RyaW5nLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKTtjb25zdCBpbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZT0oZSx0LG4pPT57dmFyIG87cmV0dXJuIEJvb2xlYW4obnVsbD09KG89ZS5nZXRWYWx1ZSh0KSl8fG51bGw9PShvPW8udG9TdHJpbmcoKSk/dm9pZCAwOm8uaW5jbHVkZXMobikpfTtpbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZS5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSk7Y29uc3QgZXF1YWxzU3RyaW5nPShlLHQsbik9Pnt2YXIgbztyZXR1cm4obnVsbD09KG89ZS5nZXRWYWx1ZSh0KSl8fG51bGw9PShvPW8udG9TdHJpbmcoKSk/dm9pZCAwOm8udG9Mb3dlckNhc2UoKSk9PT0obnVsbD09bj92b2lkIDA6bi50b0xvd2VyQ2FzZSgpKX07ZXF1YWxzU3RyaW5nLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKTtjb25zdCBhcnJJbmNsdWRlcz0oZSx0LG4pPT57dmFyIG87cmV0dXJuIG51bGw9PShvPWUuZ2V0VmFsdWUodCkpP3ZvaWQgMDpvLmluY2x1ZGVzKG4pfTthcnJJbmNsdWRlcy5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSk7Y29uc3QgYXJySW5jbHVkZXNBbGw9KGUsdCxuKT0+IW4uc29tZShuPT57dmFyIG87cmV0dXJuIShudWxsIT0obz1lLmdldFZhbHVlKHQpKSYmby5pbmNsdWRlcyhuKSl9KTthcnJJbmNsdWRlc0FsbC5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSl8fCEobnVsbCE9ZSYmZS5sZW5ndGgpO2NvbnN0IGFyckluY2x1ZGVzU29tZT0oZSx0LG4pPT5uLnNvbWUobj0+e3ZhciBvO3JldHVybiBudWxsPT0obz1lLmdldFZhbHVlKHQpKT92b2lkIDA6by5pbmNsdWRlcyhuKX0pO2FyckluY2x1ZGVzU29tZS5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSl8fCEobnVsbCE9ZSYmZS5sZW5ndGgpO2NvbnN0IGVxdWFscz0oZSx0LG4pPT5lLmdldFZhbHVlKHQpPT09bjtlcXVhbHMuYXV0b1JlbW92ZT1lPT50ZXN0RmFsc2V5KGUpO2NvbnN0IHdlYWtFcXVhbHM9KGUsdCxuKT0+ZS5nZXRWYWx1ZSh0KT09bjt3ZWFrRXF1YWxzLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKTtjb25zdCBpbk51bWJlclJhbmdlPShlLHQsbik9PntsZXRbbyxsXT1uO2NvbnN0IGE9ZS5nZXRWYWx1ZSh0KTtyZXR1cm4gYT49byYmYTw9bH07aW5OdW1iZXJSYW5nZS5yZXNvbHZlRmlsdGVyVmFsdWU9ZT0+e2xldFt0LG5dPWUsbz0ibnVtYmVyIiE9dHlwZW9mIHQ/cGFyc2VGbG9hdCh0KTp0LGw9Im51bWJlciIhPXR5cGVvZiBuP3BhcnNlRmxvYXQobik6bixhPW51bGw9PT10fHxOdW1iZXIuaXNOYU4obyk/LTEvMDpvLHI9bnVsbD09PW58fE51bWJlci5pc05hTihsKT8xLzA6bDtpZihhPnIpe2NvbnN0IGU9YTthPXIscj1lfXJldHVyblthLHJdfSxpbk51bWJlclJhbmdlLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKXx8dGVzdEZhbHNleShlWzBdKSYmdGVzdEZhbHNleShlWzFdKTtjb25zdCBfPXtpbmNsdWRlc1N0cmluZzppbmNsdWRlc1N0cmluZyxpbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZTppbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZSxlcXVhbHNTdHJpbmc6ZXF1YWxzU3RyaW5nLGFyckluY2x1ZGVzOmFyckluY2x1ZGVzLGFyckluY2x1ZGVzQWxsOmFyckluY2x1ZGVzQWxsLGFyckluY2x1ZGVzU29tZTphcnJJbmNsdWRlc1NvbWUsZXF1YWxzOmVxdWFscyx3ZWFrRXF1YWxzOndlYWtFcXVhbHMsaW5OdW1iZXJSYW5nZTppbk51bWJlclJhbmdlfTtmdW5jdGlvbiB0ZXN0RmFsc2V5KGUpe3JldHVybiBudWxsPT1lfHwiIj09PWV9Y29uc3Qgaz17Z2V0RGVmYXVsdENvbHVtbkRlZjooKT0+KHtmaWx0ZXJGbjoiYXV0byJ9KSxnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5GaWx0ZXJzOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uRmlsdGVyc0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5GaWx0ZXJzIixlKSxmaWx0ZXJGcm9tTGVhZlJvd3M6ITEsbWF4TGVhZlJvd0ZpbHRlckRlcHRoOjEwMH0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UuZ2V0QXV0b0ZpbHRlckZuPSgpPT57Y29uc3Qgbj10LmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdLG89bnVsbD09bj92b2lkIDA6bi5nZXRWYWx1ZShlLmlkKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG8/Xy5pbmNsdWRlc1N0cmluZzoibnVtYmVyIj09dHlwZW9mIG8/Xy5pbk51bWJlclJhbmdlOiJib29sZWFuIj09dHlwZW9mIG98fG51bGwhPT1vJiYib2JqZWN0Ij09dHlwZW9mIG8/Xy5lcXVhbHM6QXJyYXkuaXNBcnJheShvKT9fLmFyckluY2x1ZGVzOl8ud2Vha0VxdWFsc30sZS5nZXRGaWx0ZXJGbj0oKT0+e3ZhciBuLG87cmV0dXJuIGlzRnVuY3Rpb24oZS5jb2x1bW5EZWYuZmlsdGVyRm4pP2UuY29sdW1uRGVmLmZpbHRlckZuOiJhdXRvIj09PWUuY29sdW1uRGVmLmZpbHRlckZuP2UuZ2V0QXV0b0ZpbHRlckZuKCk6bnVsbCE9KG49bnVsbD09KG89dC5vcHRpb25zLmZpbHRlckZucyk/dm9pZCAwOm9bZS5jb2x1bW5EZWYuZmlsdGVyRm5dKT9uOl9bZS5jb2x1bW5EZWYuZmlsdGVyRm5dfSxlLmdldENhbkZpbHRlcj0oKT0+e3ZhciBuLG8sbDtyZXR1cm4obnVsbD09KG49ZS5jb2x1bW5EZWYuZW5hYmxlQ29sdW1uRmlsdGVyKXx8bikmJihudWxsPT0obz10Lm9wdGlvbnMuZW5hYmxlQ29sdW1uRmlsdGVycyl8fG8pJiYobnVsbD09KGw9dC5vcHRpb25zLmVuYWJsZUZpbHRlcnMpfHxsKSYmISFlLmFjY2Vzc29yRm59LGUuZ2V0SXNGaWx0ZXJlZD0oKT0+ZS5nZXRGaWx0ZXJJbmRleCgpPi0xLGUuZ2V0RmlsdGVyVmFsdWU9KCk9Pnt2YXIgbjtyZXR1cm4gbnVsbD09KG49dC5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMpfHxudWxsPT0obj1uLmZpbmQodD0+dC5pZD09PWUuaWQpKT92b2lkIDA6bi52YWx1ZX0sZS5nZXRGaWx0ZXJJbmRleD0oKT0+e3ZhciBuLG87cmV0dXJuIG51bGwhPShuPW51bGw9PShvPXQuZ2V0U3RhdGUoKS5jb2x1bW5GaWx0ZXJzKT92b2lkIDA6by5maW5kSW5kZXgodD0+dC5pZD09PWUuaWQpKT9uOi0xfSxlLnNldEZpbHRlclZhbHVlPW49Pnt0LnNldENvbHVtbkZpbHRlcnModD0+e2NvbnN0IG89ZS5nZXRGaWx0ZXJGbigpLGw9bnVsbD09dD92b2lkIDA6dC5maW5kKHQ9PnQuaWQ9PT1lLmlkKSxhPWZ1bmN0aW9uYWxVcGRhdGUobixsP2wudmFsdWU6dm9pZCAwKTt2YXIgcjtpZihzaG91bGRBdXRvUmVtb3ZlRmlsdGVyKG8sYSxlKSlyZXR1cm4gbnVsbCE9KHI9bnVsbD09dD92b2lkIDA6dC5maWx0ZXIodD0+dC5pZCE9PWUuaWQpKT9yOltdO2NvbnN0IGk9e2lkOmUuaWQsdmFsdWU6YX07dmFyIHM7cmV0dXJuIGw/bnVsbCE9KHM9bnVsbD09dD92b2lkIDA6dC5tYXAodD0+dC5pZD09PWUuaWQ/aTp0KSk/czpbXTpudWxsIT10JiZ0Lmxlbmd0aD9bLi4udCxpXTpbaV19KX19LGNyZWF0ZVJvdzooZSx0KT0+e2UuY29sdW1uRmlsdGVycz17fSxlLmNvbHVtbkZpbHRlcnNNZXRhPXt9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5GaWx0ZXJzPXQ9Pntjb25zdCBuPWUuZ2V0QWxsTGVhZkNvbHVtbnMoKTtudWxsPT1lLm9wdGlvbnMub25Db2x1bW5GaWx0ZXJzQ2hhbmdlfHxlLm9wdGlvbnMub25Db2x1bW5GaWx0ZXJzQ2hhbmdlKGU9Pnt2YXIgbztyZXR1cm4gbnVsbD09KG89ZnVuY3Rpb25hbFVwZGF0ZSh0LGUpKT92b2lkIDA6by5maWx0ZXIoZT0+e2NvbnN0IHQ9bi5maW5kKHQ9PnQuaWQ9PT1lLmlkKTtpZih0KXtpZihzaG91bGRBdXRvUmVtb3ZlRmlsdGVyKHQuZ2V0RmlsdGVyRm4oKSxlLnZhbHVlLHQpKXJldHVybiExfXJldHVybiEwfSl9KX0sZS5yZXNldENvbHVtbkZpbHRlcnM9dD0+e3ZhciBuLG87ZS5zZXRDb2x1bW5GaWx0ZXJzKHQ/W106bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmNvbHVtbkZpbHRlcnMpP246W10pfSxlLmdldFByZUZpbHRlcmVkUm93TW9kZWw9KCk9PmUuZ2V0Q29yZVJvd01vZGVsKCksZS5nZXRGaWx0ZXJlZFJvd01vZGVsPSgpPT4oIWUuX2dldEZpbHRlcmVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRGaWx0ZXJlZFJvd01vZGVsJiYoZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RmlsdGVyZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEZpbHRlcmluZ3x8IWUuX2dldEZpbHRlcmVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbCgpKX19O2Z1bmN0aW9uIHNob3VsZEF1dG9SZW1vdmVGaWx0ZXIoZSx0LG4pe3JldHVybiEoIWV8fCFlLmF1dG9SZW1vdmUpJiZlLmF1dG9SZW1vdmUodCxuKXx8dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0JiYhdH1jb25zdCBBPXtzdW06KGUsdCxuKT0+bi5yZWR1Y2UoKHQsbik9Pntjb25zdCBvPW4uZ2V0VmFsdWUoZSk7cmV0dXJuIHQrKCJudW1iZXIiPT10eXBlb2Ygbz9vOjApfSwwKSxtaW46KGUsdCxuKT0+e2xldCBvO3JldHVybiBuLmZvckVhY2godD0+e2NvbnN0IG49dC5nZXRWYWx1ZShlKTtudWxsIT1uJiYobz5ufHx2b2lkIDA9PT1vJiZuPj1uKSYmKG89bil9KSxvfSxtYXg6KGUsdCxuKT0+e2xldCBvO3JldHVybiBuLmZvckVhY2godD0+e2NvbnN0IG49dC5nZXRWYWx1ZShlKTtudWxsIT1uJiYobzxufHx2b2lkIDA9PT1vJiZuPj1uKSYmKG89bil9KSxvfSxleHRlbnQ6KGUsdCxuKT0+e2xldCBvLGw7cmV0dXJuIG4uZm9yRWFjaCh0PT57Y29uc3Qgbj10LmdldFZhbHVlKGUpO251bGwhPW4mJih2b2lkIDA9PT1vP24+PW4mJihvPWw9bik6KG8+biYmKG89biksbDxuJiYobD1uKSkpfSksW28sbF19LG1lYW46KGUsdCk9PntsZXQgbj0wLG89MDtpZih0LmZvckVhY2godD0+e2xldCBsPXQuZ2V0VmFsdWUoZSk7bnVsbCE9bCYmKGw9K2wpPj1sJiYoKytuLG8rPWwpfSksbilyZXR1cm4gby9ufSxtZWRpYW46KGUsdCk9PntpZighdC5sZW5ndGgpcmV0dXJuO2NvbnN0IG49dC5tYXAodD0+dC5nZXRWYWx1ZShlKSk7aWYobz1uLCFBcnJheS5pc0FycmF5KG8pfHwhby5ldmVyeShlPT4ibnVtYmVyIj09dHlwZW9mIGUpKXJldHVybjt2YXIgbztpZigxPT09bi5sZW5ndGgpcmV0dXJuIG5bMF07Y29uc3QgbD1NYXRoLmZsb29yKG4ubGVuZ3RoLzIpLGE9bi5zb3J0KChlLHQpPT5lLXQpO3JldHVybiBuLmxlbmd0aCUyIT0wP2FbbF06KGFbbC0xXSthW2xdKS8yfSx1bmlxdWU6KGUsdCk9PkFycmF5LmZyb20obmV3IFNldCh0Lm1hcCh0PT50LmdldFZhbHVlKGUpKSkudmFsdWVzKCkpLHVuaXF1ZUNvdW50OihlLHQpPT5uZXcgU2V0KHQubWFwKHQ9PnQuZ2V0VmFsdWUoZSkpKS5zaXplLGNvdW50OihlLHQpPT50Lmxlbmd0aH0sej17Z2V0RGVmYXVsdENvbHVtbkRlZjooKT0+KHthZ2dyZWdhdGVkQ2VsbDplPT57dmFyIHQsbjtyZXR1cm4gbnVsbCE9KHQ9bnVsbD09KG49ZS5nZXRWYWx1ZSgpKXx8bnVsbD09bi50b1N0cmluZz92b2lkIDA6bi50b1N0cmluZygpKT90Om51bGx9LGFnZ3JlZ2F0aW9uRm46ImF1dG8ifSksZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Z3JvdXBpbmc6W10sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Hcm91cGluZ0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJncm91cGluZyIsZSksZ3JvdXBlZENvbHVtbk1vZGU6InJlb3JkZXIifSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS50b2dnbGVHcm91cGluZz0oKT0+e3Quc2V0R3JvdXBpbmcodD0+bnVsbCE9dCYmdC5pbmNsdWRlcyhlLmlkKT90LmZpbHRlcih0PT50IT09ZS5pZCk6Wy4uLm51bGwhPXQ/dDpbXSxlLmlkXSl9LGUuZ2V0Q2FuR3JvdXA9KCk9Pnt2YXIgbixvO3JldHVybihudWxsPT0obj1lLmNvbHVtbkRlZi5lbmFibGVHcm91cGluZyl8fG4pJiYobnVsbD09KG89dC5vcHRpb25zLmVuYWJsZUdyb3VwaW5nKXx8bykmJighIWUuYWNjZXNzb3JGbnx8ISFlLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKX0sZS5nZXRJc0dyb3VwZWQ9KCk9Pnt2YXIgbjtyZXR1cm4gbnVsbD09KG49dC5nZXRTdGF0ZSgpLmdyb3VwaW5nKT92b2lkIDA6bi5pbmNsdWRlcyhlLmlkKX0sZS5nZXRHcm91cGVkSW5kZXg9KCk9Pnt2YXIgbjtyZXR1cm4gbnVsbD09KG49dC5nZXRTdGF0ZSgpLmdyb3VwaW5nKT92b2lkIDA6bi5pbmRleE9mKGUuaWQpfSxlLmdldFRvZ2dsZUdyb3VwaW5nSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5Hcm91cCgpO3JldHVybigpPT57dCYmZS50b2dnbGVHcm91cGluZygpfX0sZS5nZXRBdXRvQWdncmVnYXRpb25Gbj0oKT0+e2NvbnN0IG49dC5nZXRDb3JlUm93TW9kZWwoKS5mbGF0Um93c1swXSxvPW51bGw9PW4/dm9pZCAwOm4uZ2V0VmFsdWUoZS5pZCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBvP0Euc3VtOiJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKT9BLmV4dGVudDp2b2lkIDB9LGUuZ2V0QWdncmVnYXRpb25Gbj0oKT0+e3ZhciBuLG87aWYoIWUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBpc0Z1bmN0aW9uKGUuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm4pP2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm46ImF1dG8iPT09ZS5jb2x1bW5EZWYuYWdncmVnYXRpb25Gbj9lLmdldEF1dG9BZ2dyZWdhdGlvbkZuKCk6bnVsbCE9KG49bnVsbD09KG89dC5vcHRpb25zLmFnZ3JlZ2F0aW9uRm5zKT92b2lkIDA6b1tlLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuXSk/bjpBW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0R3JvdXBpbmc9dD0+bnVsbD09ZS5vcHRpb25zLm9uR3JvdXBpbmdDaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vbkdyb3VwaW5nQ2hhbmdlKHQpLGUucmVzZXRHcm91cGluZz10PT57dmFyIG4sbztlLnNldEdyb3VwaW5nKHQ/W106bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmdyb3VwaW5nKT9uOltdKX0sZS5nZXRQcmVHcm91cGVkUm93TW9kZWw9KCk9PmUuZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLGUuZ2V0R3JvdXBlZFJvd01vZGVsPSgpPT4oIWUuX2dldEdyb3VwZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEdyb3VwZWRSb3dNb2RlbCYmKGUuX2dldEdyb3VwZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0R3JvdXBlZFJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsR3JvdXBpbmd8fCFlLl9nZXRHcm91cGVkUm93TW9kZWw/ZS5nZXRQcmVHcm91cGVkUm93TW9kZWwoKTplLl9nZXRHcm91cGVkUm93TW9kZWwoKSl9LGNyZWF0ZVJvdzooZSx0KT0+e2UuZ2V0SXNHcm91cGVkPSgpPT4hIWUuZ3JvdXBpbmdDb2x1bW5JZCxlLmdldEdyb3VwaW5nVmFsdWU9bj0+e2lmKGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkobikpcmV0dXJuIGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGVbbl07Y29uc3Qgbz10LmdldENvbHVtbihuKTtyZXR1cm4gbnVsbCE9byYmby5jb2x1bW5EZWYuZ2V0R3JvdXBpbmdWYWx1ZT8oZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXT1vLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKGUub3JpZ2luYWwpLGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGVbbl0pOmUuZ2V0VmFsdWUobil9LGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGU9e319LGNyZWF0ZUNlbGw6KGUsdCxuLG8pPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PnQuZ2V0SXNHcm91cGVkKCkmJnQuaWQ9PT1uLmdyb3VwaW5nQ29sdW1uSWQsZS5nZXRJc1BsYWNlaG9sZGVyPSgpPT4hZS5nZXRJc0dyb3VwZWQoKSYmdC5nZXRJc0dyb3VwZWQoKSxlLmdldElzQWdncmVnYXRlZD0oKT0+e3ZhciB0O3JldHVybiFlLmdldElzR3JvdXBlZCgpJiYhZS5nZXRJc1BsYWNlaG9sZGVyKCkmJiEobnVsbD09KHQ9bi5zdWJSb3dzKXx8IXQubGVuZ3RoKX19fTtjb25zdCBCPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5PcmRlcjpbXSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtbk9yZGVyQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoImNvbHVtbk9yZGVyIixlKX0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UuZ2V0SW5kZXg9bWVtbyhlPT5bX2dldFZpc2libGVMZWFmQ29sdW1ucyh0LGUpXSx0PT50LmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCksZ2V0TWVtb09wdGlvbnModC5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSksZS5nZXRJc0ZpcnN0Q29sdW1uPW49Pnt2YXIgbztyZXR1cm4obnVsbD09KG89X2dldFZpc2libGVMZWFmQ29sdW1ucyh0LG4pWzBdKT92b2lkIDA6by5pZCk9PT1lLmlkfSxlLmdldElzTGFzdENvbHVtbj1uPT57dmFyIG87Y29uc3QgbD1fZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHQsbik7cmV0dXJuKG51bGw9PShvPWxbbC5sZW5ndGgtMV0pP3ZvaWQgMDpvLmlkKT09PWUuaWR9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5PcmRlcj10PT5udWxsPT1lLm9wdGlvbnMub25Db2x1bW5PcmRlckNoYW5nZT92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uT3JkZXJDaGFuZ2UodCksZS5yZXNldENvbHVtbk9yZGVyPXQ9Pnt2YXIgbjtlLnNldENvbHVtbk9yZGVyKHQ/W106bnVsbCE9KG49ZS5pbml0aWFsU3RhdGUuY29sdW1uT3JkZXIpP246W10pfSxlLl9nZXRPcmRlckNvbHVtbnNGbj1tZW1vKCgpPT5bZS5nZXRTdGF0ZSgpLmNvbHVtbk9yZGVyLGUuZ2V0U3RhdGUoKS5ncm91cGluZyxlLm9wdGlvbnMuZ3JvdXBlZENvbHVtbk1vZGVdLChlLHQsbik9Pm89PntsZXQgbD1bXTtpZihudWxsIT1lJiZlLmxlbmd0aCl7Y29uc3QgdD1bLi4uZV0sbj1bLi4ub107Zm9yKDtuLmxlbmd0aCYmdC5sZW5ndGg7KXtjb25zdCBlPXQuc2hpZnQoKSxvPW4uZmluZEluZGV4KHQ9PnQuaWQ9PT1lKTtvPi0xJiZsLnB1c2gobi5zcGxpY2UobywxKVswXSl9bD1bLi4ubCwuLi5uXX1lbHNlIGw9bztyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PXR8fCF0Lmxlbmd0aHx8IW4pcmV0dXJuIGU7Y29uc3Qgbz1lLmZpbHRlcihlPT4hdC5pbmNsdWRlcyhlLmlkKSk7cmV0dXJuInJlbW92ZSI9PT1uP286Wy4uLnQubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSwuLi5vXX0obCx0LG4pfSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSl9fSxFPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5QaW5uaW5nOntsZWZ0OltdLHJpZ2h0OltdfSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtblBpbm5pbmdDaGFuZ2U6bWFrZVN0YXRlVXBkYXRlcigiY29sdW1uUGlubmluZyIsZSl9KSxjcmVhdGVDb2x1bW46KGUsdCk9PntlLnBpbj1uPT57Y29uc3Qgbz1lLmdldExlYWZDb2x1bW5zKCkubWFwKGU9PmUuaWQpLmZpbHRlcihCb29sZWFuKTt0LnNldENvbHVtblBpbm5pbmcoZT0+e3ZhciB0LGwsYSxyLGkscztyZXR1cm4icmlnaHQiPT09bj97bGVmdDoobnVsbCE9KGE9bnVsbD09ZT92b2lkIDA6ZS5sZWZ0KT9hOltdKS5maWx0ZXIoZT0+IShudWxsIT1vJiZvLmluY2x1ZGVzKGUpKSkscmlnaHQ6Wy4uLihudWxsIT0ocj1udWxsPT1lP3ZvaWQgMDplLnJpZ2h0KT9yOltdKS5maWx0ZXIoZT0+IShudWxsIT1vJiZvLmluY2x1ZGVzKGUpKSksLi4ub119OiJsZWZ0Ij09PW4/e2xlZnQ6Wy4uLihudWxsIT0oaT1udWxsPT1lP3ZvaWQgMDplLmxlZnQpP2k6W10pLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZSkpKSwuLi5vXSxyaWdodDoobnVsbCE9KHM9bnVsbD09ZT92b2lkIDA6ZS5yaWdodCk/czpbXSkuZmlsdGVyKGU9PiEobnVsbCE9byYmby5pbmNsdWRlcyhlKSkpfTp7bGVmdDoobnVsbCE9KHQ9bnVsbD09ZT92b2lkIDA6ZS5sZWZ0KT90OltdKS5maWx0ZXIoZT0+IShudWxsIT1vJiZvLmluY2x1ZGVzKGUpKSkscmlnaHQ6KG51bGwhPShsPW51bGw9PWU/dm9pZCAwOmUucmlnaHQpP2w6W10pLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZSkpKX19KX0sZS5nZXRDYW5QaW49KCk9PmUuZ2V0TGVhZkNvbHVtbnMoKS5zb21lKGU9Pnt2YXIgbixvLGw7cmV0dXJuKG51bGw9PShuPWUuY29sdW1uRGVmLmVuYWJsZVBpbm5pbmcpfHxuKSYmKG51bGw9PShvPW51bGwhPShsPXQub3B0aW9ucy5lbmFibGVDb2x1bW5QaW5uaW5nKT9sOnQub3B0aW9ucy5lbmFibGVQaW5uaW5nKXx8byl9KSxlLmdldElzUGlubmVkPSgpPT57Y29uc3Qgbj1lLmdldExlYWZDb2x1bW5zKCkubWFwKGU9PmUuaWQpLHtsZWZ0Om8scmlnaHQ6bH09dC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcsYT1uLnNvbWUoZT0+bnVsbD09bz92b2lkIDA6by5pbmNsdWRlcyhlKSkscj1uLnNvbWUoZT0+bnVsbD09bD92b2lkIDA6bC5pbmNsdWRlcyhlKSk7cmV0dXJuIGE/ImxlZnQiOiEhciYmInJpZ2h0In0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e3ZhciBuLG87Y29uc3QgbD1lLmdldElzUGlubmVkKCk7cmV0dXJuIGw/bnVsbCE9KG49bnVsbD09KG89dC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcpfHxudWxsPT0obz1vW2xdKT92b2lkIDA6by5pbmRleE9mKGUuaWQpKT9uOi0xOjB9fSxjcmVhdGVSb3c6KGUsdCk9PntlLmdldENlbnRlclZpc2libGVDZWxscz1tZW1vKCgpPT5bZS5fZ2V0QWxsVmlzaWJsZUNlbGxzKCksdC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCx0LmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKGUsdCxuKT0+e2NvbnN0IG89Wy4uLm51bGwhPXQ/dDpbXSwuLi5udWxsIT1uP246W11dO3JldHVybiBlLmZpbHRlcihlPT4hby5pbmNsdWRlcyhlLmNvbHVtbi5pZCkpfSxnZXRNZW1vT3B0aW9ucyh0Lm9wdGlvbnMsImRlYnVnUm93cyIpKSxlLmdldExlZnRWaXNpYmxlQ2VsbHM9bWVtbygoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChlLHQpPT4obnVsbCE9dD90OltdKS5tYXAodD0+ZS5maW5kKGU9PmUuY29sdW1uLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKS5tYXAoZT0+KHsuLi5lLHBvc2l0aW9uOiJsZWZ0In0pKSxnZXRNZW1vT3B0aW9ucyh0Lm9wdGlvbnMsImRlYnVnUm93cyIpKSxlLmdldFJpZ2h0VmlzaWJsZUNlbGxzPW1lbW8oKCk9PltlLl9nZXRBbGxWaXNpYmxlQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKGUsdCk9PihudWxsIT10P3Q6W10pLm1hcCh0PT5lLmZpbmQoZT0+ZS5jb2x1bW4uaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246InJpZ2h0In0pKSxnZXRNZW1vT3B0aW9ucyh0Lm9wdGlvbnMsImRlYnVnUm93cyIpKX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uUGlubmluZz10PT5udWxsPT1lLm9wdGlvbnMub25Db2x1bW5QaW5uaW5nQ2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5QaW5uaW5nQ2hhbmdlKHQpLGUucmVzZXRDb2x1bW5QaW5uaW5nPXQ9Pnt2YXIgbixvO3JldHVybiBlLnNldENvbHVtblBpbm5pbmcodD97bGVmdDpbXSxyaWdodDpbXX06bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmNvbHVtblBpbm5pbmcpP246e2xlZnQ6W10scmlnaHQ6W119KX0sZS5nZXRJc1NvbWVDb2x1bW5zUGlubmVkPXQ9Pnt2YXIgbjtjb25zdCBvPWUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nO3ZhciBsLGE7cmV0dXJuIHQ/Qm9vbGVhbihudWxsPT0obj1vW3RdKT92b2lkIDA6bi5sZW5ndGgpOkJvb2xlYW4oKG51bGw9PShsPW8ubGVmdCk/dm9pZCAwOmwubGVuZ3RoKXx8KG51bGw9PShhPW8ucmlnaHQpP3ZvaWQgMDphLmxlbmd0aCkpfSxlLmdldExlZnRMZWFmQ29sdW1ucz1tZW1vKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChlLHQpPT4obnVsbCE9dD90OltdKS5tYXAodD0+ZS5maW5kKGU9PmUuaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUuZ2V0UmlnaHRMZWFmQ29sdW1ucz1tZW1vKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KG51bGwhPXQ/dDpbXSkubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldENlbnRlckxlYWZDb2x1bW5zPW1lbW8oKCk9PltlLmdldEFsbExlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKGUsdCxuKT0+e2NvbnN0IG89Wy4uLm51bGwhPXQ/dDpbXSwuLi5udWxsIT1uP246W11dO3JldHVybiBlLmZpbHRlcihlPT4hby5pbmNsdWRlcyhlLmlkKSl9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpfX07Y29uc3QgRD17c2l6ZToxNTAsbWluU2l6ZToyMCxtYXhTaXplOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSfSwkPXtnZXREZWZhdWx0Q29sdW1uRGVmOigpPT5ELGdldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtblNpemluZzp7fSxjb2x1bW5TaXppbmdJbmZvOntzdGFydE9mZnNldDpudWxsLHN0YXJ0U2l6ZTpudWxsLGRlbHRhT2Zmc2V0Om51bGwsZGVsdGFQZXJjZW50YWdlOm51bGwsaXNSZXNpemluZ0NvbHVtbjohMSxjb2x1bW5TaXppbmdTdGFydDpbXX0sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7Y29sdW1uUmVzaXplTW9kZToib25FbmQiLGNvbHVtblJlc2l6ZURpcmVjdGlvbjoibHRyIixvbkNvbHVtblNpemluZ0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5TaXppbmciLGUpLG9uQ29sdW1uU2l6aW5nSW5mb0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5TaXppbmdJbmZvIixlKX0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UuZ2V0U2l6ZT0oKT0+e3ZhciBuLG8sbDtjb25zdCBhPXQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmdbZS5pZF07cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG51bGwhPShuPWUuY29sdW1uRGVmLm1pblNpemUpP246RC5taW5TaXplLG51bGwhPShvPW51bGwhPWE/YTplLmNvbHVtbkRlZi5zaXplKT9vOkQuc2l6ZSksbnVsbCE9KGw9ZS5jb2x1bW5EZWYubWF4U2l6ZSk/bDpELm1heFNpemUpfSxlLmdldFN0YXJ0PW1lbW8oZT0+W2UsX2dldFZpc2libGVMZWFmQ29sdW1ucyh0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKDAsZS5nZXRJbmRleCh0KSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLGdldE1lbW9PcHRpb25zKHQub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUuZ2V0QWZ0ZXI9bWVtbyhlPT5bZSxfZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHQsZSksdC5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ10sKHQsbik9Pm4uc2xpY2UoZS5nZXRJbmRleCh0KSsxKS5yZWR1Y2UoKGUsdCk9PmUrdC5nZXRTaXplKCksMCksZ2V0TWVtb09wdGlvbnModC5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSksZS5yZXNldFNpemU9KCk9Pnt0LnNldENvbHVtblNpemluZyh0PT57bGV0e1tlLmlkXTpuLC4uLm99PXQ7cmV0dXJuIG99KX0sZS5nZXRDYW5SZXNpemU9KCk9Pnt2YXIgbixvO3JldHVybihudWxsPT0obj1lLmNvbHVtbkRlZi5lbmFibGVSZXNpemluZyl8fG4pJiYobnVsbD09KG89dC5vcHRpb25zLmVuYWJsZUNvbHVtblJlc2l6aW5nKXx8byl9LGUuZ2V0SXNSZXNpemluZz0oKT0+dC5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ0luZm8uaXNSZXNpemluZ0NvbHVtbj09PWUuaWR9LGNyZWF0ZUhlYWRlcjooZSx0KT0+e2UuZ2V0U2l6ZT0oKT0+e2xldCB0PTA7Y29uc3QgcmVjdXJzZT1lPT57dmFyIG47ZS5zdWJIZWFkZXJzLmxlbmd0aD9lLnN1YkhlYWRlcnMuZm9yRWFjaChyZWN1cnNlKTp0Kz1udWxsIT0obj1lLmNvbHVtbi5nZXRTaXplKCkpP246MH07cmV0dXJuIHJlY3Vyc2UoZSksdH0sZS5nZXRTdGFydD0oKT0+e2lmKGUuaW5kZXg+MCl7Y29uc3QgdD1lLmhlYWRlckdyb3VwLmhlYWRlcnNbZS5pbmRleC0xXTtyZXR1cm4gdC5nZXRTdGFydCgpK3QuZ2V0U2l6ZSgpfXJldHVybiAwfSxlLmdldFJlc2l6ZUhhbmRsZXI9bj0+e2NvbnN0IG89dC5nZXRDb2x1bW4oZS5jb2x1bW4uaWQpLGw9bnVsbD09bz92b2lkIDA6by5nZXRDYW5SZXNpemUoKTtyZXR1cm4gYT0+e2lmKCFvfHwhbClyZXR1cm47aWYobnVsbD09YS5wZXJzaXN0fHxhLnBlcnNpc3QoKSxpc1RvdWNoU3RhcnRFdmVudChhKSYmYS50b3VjaGVzJiZhLnRvdWNoZXMubGVuZ3RoPjEpcmV0dXJuO2NvbnN0IHI9ZS5nZXRTaXplKCksaT1lP2UuZ2V0TGVhZkhlYWRlcnMoKS5tYXAoZT0+W2UuY29sdW1uLmlkLGUuY29sdW1uLmdldFNpemUoKV0pOltbby5pZCxvLmdldFNpemUoKV1dLHM9aXNUb3VjaFN0YXJ0RXZlbnQoYSk/TWF0aC5yb3VuZChhLnRvdWNoZXNbMF0uY2xpZW50WCk6YS5jbGllbnRYLHU9e30sdXBkYXRlT2Zmc2V0PShlLG4pPT57Im51bWJlciI9PXR5cGVvZiBuJiYodC5zZXRDb2x1bW5TaXppbmdJbmZvKGU9Pnt2YXIgbyxsO2NvbnN0IGE9InJ0bCI9PT10Lm9wdGlvbnMuY29sdW1uUmVzaXplRGlyZWN0aW9uPy0xOjEscj0obi0obnVsbCE9KG89bnVsbD09ZT92b2lkIDA6ZS5zdGFydE9mZnNldCk/bzowKSkqYSxpPU1hdGgubWF4KHIvKG51bGwhPShsPW51bGw9PWU/dm9pZCAwOmUuc3RhcnRTaXplKT9sOjApLC0uOTk5OTk5KTtyZXR1cm4gZS5jb2x1bW5TaXppbmdTdGFydC5mb3JFYWNoKGU9PntsZXRbdCxuXT1lO3VbdF09TWF0aC5yb3VuZCgxMDAqTWF0aC5tYXgobituKmksMCkpLzEwMH0pLHsuLi5lLGRlbHRhT2Zmc2V0OnIsZGVsdGFQZXJjZW50YWdlOml9fSksIm9uQ2hhbmdlIiE9PXQub3B0aW9ucy5jb2x1bW5SZXNpemVNb2RlJiYiZW5kIiE9PWV8fHQuc2V0Q29sdW1uU2l6aW5nKGU9Pih7Li4uZSwuLi51fSkpKX0sb25Nb3ZlPWU9PnVwZGF0ZU9mZnNldCgibW92ZSIsZSksb25FbmQ9ZT0+e3VwZGF0ZU9mZnNldCgiZW5kIixlKSx0LnNldENvbHVtblNpemluZ0luZm8oZT0+KHsuLi5lLGlzUmVzaXppbmdDb2x1bW46ITEsc3RhcnRPZmZzZXQ6bnVsbCxzdGFydFNpemU6bnVsbCxkZWx0YU9mZnNldDpudWxsLGRlbHRhUGVyY2VudGFnZTpudWxsLGNvbHVtblNpemluZ1N0YXJ0OltdfSkpfSxkPW58fCgidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50Om51bGwpO2NvbnN0IGc9e21vdmVIYW5kbGVyOmU9Pm9uTW92ZShlLmNsaWVudFgpLHVwSGFuZGxlcjplPT57bnVsbD09ZHx8ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGcubW92ZUhhbmRsZXIpLG51bGw9PWR8fGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsZy51cEhhbmRsZXIpLG9uRW5kKGUuY2xpZW50WCl9fSxjPXttb3ZlSGFuZGxlcjplPT4oZS5jYW5jZWxhYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpLG9uTW92ZShlLnRvdWNoZXNbMF0uY2xpZW50WCksITEpLHVwSGFuZGxlcjplPT57dmFyIHQ7bnVsbD09ZHx8ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGMubW92ZUhhbmRsZXIpLG51bGw9PWR8fGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLGMudXBIYW5kbGVyKSxlLmNhbmNlbGFibGUmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSksb25FbmQobnVsbD09KHQ9ZS50b3VjaGVzWzBdKT92b2lkIDA6dC5jbGllbnRYKX19LHA9ISFmdW5jdGlvbigpe2lmKCJib29sZWFuIj09dHlwZW9mIEcpcmV0dXJuIEc7bGV0IGU9ITE7dHJ5e2NvbnN0IHQ9e2dldCBwYXNzaXZlKCl7cmV0dXJuIGU9ITAsITF9fSxub29wPSgpPT57fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbm9vcCx0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsbm9vcCl9Y2F0Y2godCl7ZT0hMX1yZXR1cm4gRz1lLEd9KCkmJntwYXNzaXZlOiExfTtpc1RvdWNoU3RhcnRFdmVudChhKT8obnVsbD09ZHx8ZC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGMubW92ZUhhbmRsZXIscCksbnVsbD09ZHx8ZC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsYy51cEhhbmRsZXIscCkpOihudWxsPT1kfHxkLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZy5tb3ZlSGFuZGxlcixwKSxudWxsPT1kfHxkLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGcudXBIYW5kbGVyLHApKSx0LnNldENvbHVtblNpemluZ0luZm8oZT0+KHsuLi5lLHN0YXJ0T2Zmc2V0OnMsc3RhcnRTaXplOnIsZGVsdGFPZmZzZXQ6MCxkZWx0YVBlcmNlbnRhZ2U6MCxjb2x1bW5TaXppbmdTdGFydDppLGlzUmVzaXppbmdDb2x1bW46by5pZH0pKX19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5TaXppbmc9dD0+bnVsbD09ZS5vcHRpb25zLm9uQ29sdW1uU2l6aW5nQ2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5TaXppbmdDaGFuZ2UodCksZS5zZXRDb2x1bW5TaXppbmdJbmZvPXQ9Pm51bGw9PWUub3B0aW9ucy5vbkNvbHVtblNpemluZ0luZm9DaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtblNpemluZ0luZm9DaGFuZ2UodCksZS5yZXNldENvbHVtblNpemluZz10PT57dmFyIG47ZS5zZXRDb2x1bW5TaXppbmcodD97fTpudWxsIT0obj1lLmluaXRpYWxTdGF0ZS5jb2x1bW5TaXppbmcpP246e30pfSxlLnJlc2V0SGVhZGVyU2l6ZUluZm89dD0+e3ZhciBuO2Uuc2V0Q29sdW1uU2l6aW5nSW5mbyh0P3tzdGFydE9mZnNldDpudWxsLHN0YXJ0U2l6ZTpudWxsLGRlbHRhT2Zmc2V0Om51bGwsZGVsdGFQZXJjZW50YWdlOm51bGwsaXNSZXNpemluZ0NvbHVtbjohMSxjb2x1bW5TaXppbmdTdGFydDpbXX06bnVsbCE9KG49ZS5pbml0aWFsU3RhdGUuY29sdW1uU2l6aW5nSW5mbyk/bjp7c3RhcnRPZmZzZXQ6bnVsbCxzdGFydFNpemU6bnVsbCxkZWx0YU9mZnNldDpudWxsLGRlbHRhUGVyY2VudGFnZTpudWxsLGlzUmVzaXppbmdDb2x1bW46ITEsY29sdW1uU2l6aW5nU3RhcnQ6W119KX0sZS5nZXRUb3RhbFNpemU9KCk9Pnt2YXIgdCxuO3JldHVybiBudWxsIT0odD1udWxsPT0obj1lLmdldEhlYWRlckdyb3VwcygpWzBdKT92b2lkIDA6bi5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKSk/dDowfSxlLmdldExlZnRUb3RhbFNpemU9KCk9Pnt2YXIgdCxuO3JldHVybiBudWxsIT0odD1udWxsPT0obj1lLmdldExlZnRIZWFkZXJHcm91cHMoKVswXSk/dm9pZCAwOm4uaGVhZGVycy5yZWR1Y2UoKGUsdCk9PmUrdC5nZXRTaXplKCksMCkpP3Q6MH0sZS5nZXRDZW50ZXJUb3RhbFNpemU9KCk9Pnt2YXIgdCxuO3JldHVybiBudWxsIT0odD1udWxsPT0obj1lLmdldENlbnRlckhlYWRlckdyb3VwcygpWzBdKT92b2lkIDA6bi5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKSk/dDowfSxlLmdldFJpZ2h0VG90YWxTaXplPSgpPT57dmFyIHQsbjtyZXR1cm4gbnVsbCE9KHQ9bnVsbD09KG49ZS5nZXRSaWdodEhlYWRlckdyb3VwcygpWzBdKT92b2lkIDA6bi5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKSk/dDowfX19O2xldCBHPW51bGw7ZnVuY3Rpb24gaXNUb3VjaFN0YXJ0RXZlbnQoZSl7cmV0dXJuInRvdWNoc3RhcnQiPT09ZS50eXBlfWZ1bmN0aW9uIF9nZXRWaXNpYmxlTGVhZkNvbHVtbnMoZSx0KXtyZXR1cm4gdD8iY2VudGVyIj09PXQ/ZS5nZXRDZW50ZXJWaXNpYmxlTGVhZkNvbHVtbnMoKToibGVmdCI9PT10P2UuZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1ucygpOmUuZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnMoKTplLmdldFZpc2libGVMZWFmQ29sdW1ucygpfWNvbnN0IEw9e2dldEluaXRpYWxTdGF0ZTplPT4oe3Jvd1NlbGVjdGlvbjp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1NlbGVjdGlvbkNoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJyb3dTZWxlY3Rpb24iLGUpLGVuYWJsZVJvd1NlbGVjdGlvbjohMCxlbmFibGVNdWx0aVJvd1NlbGVjdGlvbjohMCxlbmFibGVTdWJSb3dTZWxlY3Rpb246ITB9KSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dTZWxlY3Rpb249dD0+bnVsbD09ZS5vcHRpb25zLm9uUm93U2VsZWN0aW9uQ2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Sb3dTZWxlY3Rpb25DaGFuZ2UodCksZS5yZXNldFJvd1NlbGVjdGlvbj10PT57dmFyIG47cmV0dXJuIGUuc2V0Um93U2VsZWN0aW9uKHQ/e306bnVsbCE9KG49ZS5pbml0aWFsU3RhdGUucm93U2VsZWN0aW9uKT9uOnt9KX0sZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQ9dD0+e2Uuc2V0Um93U2VsZWN0aW9uKG49Pnt0PXZvaWQgMCE9PXQ/dDohZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpO2NvbnN0IG89ey4uLm59LGw9ZS5nZXRQcmVHcm91cGVkUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4gdD9sLmZvckVhY2goZT0+e2UuZ2V0Q2FuU2VsZWN0KCkmJihvW2UuaWRdPSEwKX0pOmwuZm9yRWFjaChlPT57ZGVsZXRlIG9bZS5pZF19KSxvfSl9LGUudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZD10PT5lLnNldFJvd1NlbGVjdGlvbihuPT57Y29uc3Qgbz12b2lkIDAhPT10P3Q6IWUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKCksbD17Li4ubn07cmV0dXJuIGUuZ2V0Um93TW9kZWwoKS5yb3dzLmZvckVhY2godD0+e211dGF0ZVJvd0lzU2VsZWN0ZWQobCx0LmlkLG8sITAsZSl9KSxsfSksZS5nZXRQcmVTZWxlY3RlZFJvd01vZGVsPSgpPT5lLmdldENvcmVSb3dNb2RlbCgpLGUuZ2V0U2VsZWN0ZWRSb3dNb2RlbD1tZW1vKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldENvcmVSb3dNb2RlbCgpXSwodCxuKT0+T2JqZWN0LmtleXModCkubGVuZ3RoP3NlbGVjdFJvd3NGbihlLG4pOntyb3dzOltdLGZsYXRSb3dzOltdLHJvd3NCeUlkOnt9fSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWw9bWVtbygoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCldLCh0LG4pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg/c2VsZWN0Um93c0ZuKGUsbik6e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIpKSxlLmdldEdyb3VwZWRTZWxlY3RlZFJvd01vZGVsPW1lbW8oKCk9PltlLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLGUuZ2V0U29ydGVkUm93TW9kZWwoKV0sKHQsbik9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD9zZWxlY3RSb3dzRm4oZSxuKTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIikpLGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQ9KCk9Pntjb25zdCB0PWUuZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLmZsYXRSb3dzLHtyb3dTZWxlY3Rpb246bn09ZS5nZXRTdGF0ZSgpO2xldCBvPUJvb2xlYW4odC5sZW5ndGgmJk9iamVjdC5rZXlzKG4pLmxlbmd0aCk7cmV0dXJuIG8mJnQuc29tZShlPT5lLmdldENhblNlbGVjdCgpJiYhbltlLmlkXSkmJihvPSExKSxvfSxlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IHQ9ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5maWx0ZXIoZT0+ZS5nZXRDYW5TZWxlY3QoKSkse3Jvd1NlbGVjdGlvbjpufT1lLmdldFN0YXRlKCk7bGV0IG89ISF0Lmxlbmd0aDtyZXR1cm4gbyYmdC5zb21lKGU9PiFuW2UuaWRdKSYmKG89ITEpLG99LGUuZ2V0SXNTb21lUm93c1NlbGVjdGVkPSgpPT57dmFyIHQ7Y29uc3Qgbj1PYmplY3Qua2V5cyhudWxsIT0odD1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uKT90Ont9KS5sZW5ndGg7cmV0dXJuIG4+MCYmbjxlLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cy5sZW5ndGh9LGUuZ2V0SXNTb21lUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IHQ9ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4hZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKSYmdC5maWx0ZXIoZT0+ZS5nZXRDYW5TZWxlY3QoKSkuc29tZShlPT5lLmdldElzU2VsZWN0ZWQoKXx8ZS5nZXRJc1NvbWVTZWxlY3RlZCgpKX0sZS5nZXRUb2dnbGVBbGxSb3dzU2VsZWN0ZWRIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQodC50YXJnZXQuY2hlY2tlZCl9LGUuZ2V0VG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZEhhbmRsZXI9KCk9PnQ9PntlLnRvZ2dsZUFsbFBhZ2VSb3dzU2VsZWN0ZWQodC50YXJnZXQuY2hlY2tlZCl9fSxjcmVhdGVSb3c6KGUsdCk9PntlLnRvZ2dsZVNlbGVjdGVkPShuLG8pPT57Y29uc3QgbD1lLmdldElzU2VsZWN0ZWQoKTt0LnNldFJvd1NlbGVjdGlvbihhPT57dmFyIHI7aWYobj12b2lkIDAhPT1uP246IWwsZS5nZXRDYW5TZWxlY3QoKSYmbD09PW4pcmV0dXJuIGE7Y29uc3QgaT17Li4uYX07cmV0dXJuIG11dGF0ZVJvd0lzU2VsZWN0ZWQoaSxlLmlkLG4sbnVsbD09KHI9bnVsbD09bz92b2lkIDA6by5zZWxlY3RDaGlsZHJlbil8fHIsdCksaX0pfSxlLmdldElzU2VsZWN0ZWQ9KCk9Pntjb25zdHtyb3dTZWxlY3Rpb246bn09dC5nZXRTdGF0ZSgpO3JldHVybiBpc1Jvd1NlbGVjdGVkKGUsbil9LGUuZ2V0SXNTb21lU2VsZWN0ZWQ9KCk9Pntjb25zdHtyb3dTZWxlY3Rpb246bn09dC5nZXRTdGF0ZSgpO3JldHVybiJzb21lIj09PWlzU3ViUm93U2VsZWN0ZWQoZSxuKX0sZS5nZXRJc0FsbFN1YlJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0e3Jvd1NlbGVjdGlvbjpufT10LmdldFN0YXRlKCk7cmV0dXJuImFsbCI9PT1pc1N1YlJvd1NlbGVjdGVkKGUsbil9LGUuZ2V0Q2FuU2VsZWN0PSgpPT57dmFyIG47cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQub3B0aW9ucy5lbmFibGVSb3dTZWxlY3Rpb24/dC5vcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbihlKTpudWxsPT0obj10Lm9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uKXx8bn0sZS5nZXRDYW5TZWxlY3RTdWJSb3dzPSgpPT57dmFyIG47cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQub3B0aW9ucy5lbmFibGVTdWJSb3dTZWxlY3Rpb24/dC5vcHRpb25zLmVuYWJsZVN1YlJvd1NlbGVjdGlvbihlKTpudWxsPT0obj10Lm9wdGlvbnMuZW5hYmxlU3ViUm93U2VsZWN0aW9uKXx8bn0sZS5nZXRDYW5NdWx0aVNlbGVjdD0oKT0+e3ZhciBuO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0Lm9wdGlvbnMuZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb24/dC5vcHRpb25zLmVuYWJsZU11bHRpUm93U2VsZWN0aW9uKGUpOm51bGw9PShuPXQub3B0aW9ucy5lbmFibGVNdWx0aVJvd1NlbGVjdGlvbil8fG59LGUuZ2V0VG9nZ2xlU2VsZWN0ZWRIYW5kbGVyPSgpPT57Y29uc3QgdD1lLmdldENhblNlbGVjdCgpO3JldHVybiBuPT57dmFyIG87dCYmZS50b2dnbGVTZWxlY3RlZChudWxsPT0obz1uLnRhcmdldCk/dm9pZCAwOm8uY2hlY2tlZCl9fX19LG11dGF0ZVJvd0lzU2VsZWN0ZWQ9KGUsdCxuLG8sbCk9Pnt2YXIgYTtjb25zdCByPWwuZ2V0Um93KHQsITApO24/KHIuZ2V0Q2FuTXVsdGlTZWxlY3QoKXx8T2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT5kZWxldGUgZVt0XSksci5nZXRDYW5TZWxlY3QoKSYmKGVbdF09ITApKTpkZWxldGUgZVt0XSxvJiZudWxsIT0oYT1yLnN1YlJvd3MpJiZhLmxlbmd0aCYmci5nZXRDYW5TZWxlY3RTdWJSb3dzKCkmJnIuc3ViUm93cy5mb3JFYWNoKHQ9Pm11dGF0ZVJvd0lzU2VsZWN0ZWQoZSx0LmlkLG4sbyxsKSl9O2Z1bmN0aW9uIHNlbGVjdFJvd3NGbihlLHQpe2NvbnN0IG49ZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixvPVtdLGw9e30scmVjdXJzZVJvd3M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoZT0+e3ZhciB0O2NvbnN0IGE9aXNSb3dTZWxlY3RlZChlLG4pO2lmKGEmJihvLnB1c2goZSksbFtlLmlkXT1lKSxudWxsIT0odD1lLnN1YlJvd3MpJiZ0Lmxlbmd0aCYmKGU9ey4uLmUsc3ViUm93czpyZWN1cnNlUm93cyhlLnN1YlJvd3MpfSksYSlyZXR1cm4gZX0pLmZpbHRlcihCb29sZWFuKX07cmV0dXJue3Jvd3M6cmVjdXJzZVJvd3ModC5yb3dzKSxmbGF0Um93czpvLHJvd3NCeUlkOmx9fWZ1bmN0aW9uIGlzUm93U2VsZWN0ZWQoZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9KG49dFtlLmlkXSkmJm59ZnVuY3Rpb24gaXNTdWJSb3dTZWxlY3RlZChlLHQsbil7dmFyIG87aWYobnVsbD09KG89ZS5zdWJSb3dzKXx8IW8ubGVuZ3RoKXJldHVybiExO2xldCBsPSEwLGE9ITE7cmV0dXJuIGUuc3ViUm93cy5mb3JFYWNoKGU9PntpZigoIWF8fGwpJiYoZS5nZXRDYW5TZWxlY3QoKSYmKGlzUm93U2VsZWN0ZWQoZSx0KT9hPSEwOmw9ITEpLGUuc3ViUm93cyYmZS5zdWJSb3dzLmxlbmd0aCkpe2NvbnN0IG49aXNTdWJSb3dTZWxlY3RlZChlLHQpOyJhbGwiPT09bj9hPSEwOiJzb21lIj09PW4/KGE9ITAsbD0hMSk6bD0hMX19KSxsPyJhbGwiOiEhYSYmInNvbWUifWNvbnN0IEg9LyhbMC05XSspL2dtO2Z1bmN0aW9uIGNvbXBhcmVCYXNpYyhlLHQpe3JldHVybiBlPT09dD8wOmU+dD8xOi0xfWZ1bmN0aW9uIHRvU3RyaW5nKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9pc05hTihlKXx8ZT09PTEvMHx8ZT09PS0xLzA/IiI6U3RyaW5nKGUpOiJzdHJpbmciPT10eXBlb2YgZT9lOiIifWZ1bmN0aW9uIGNvbXBhcmVBbHBoYW51bWVyaWMoZSx0KXtjb25zdCBuPWUuc3BsaXQoSCkuZmlsdGVyKEJvb2xlYW4pLG89dC5zcGxpdChIKS5maWx0ZXIoQm9vbGVhbik7Zm9yKDtuLmxlbmd0aCYmby5sZW5ndGg7KXtjb25zdCBlPW4uc2hpZnQoKSx0PW8uc2hpZnQoKSxsPXBhcnNlSW50KGUsMTApLGE9cGFyc2VJbnQodCwxMCkscj1bbCxhXS5zb3J0KCk7aWYoaXNOYU4oclswXSkpe2lmKGU+dClyZXR1cm4gMTtpZih0PmUpcmV0dXJuLTF9ZWxzZXtpZihpc05hTihyWzFdKSlyZXR1cm4gaXNOYU4obCk/LTE6MTtpZihsPmEpcmV0dXJuIDE7aWYoYT5sKXJldHVybi0xfX1yZXR1cm4gbi5sZW5ndGgtby5sZW5ndGh9Y29uc3QgcT17YWxwaGFudW1lcmljOihlLHQsbik9PmNvbXBhcmVBbHBoYW51bWVyaWModG9TdHJpbmcoZS5nZXRWYWx1ZShuKSkudG9Mb3dlckNhc2UoKSx0b1N0cmluZyh0LmdldFZhbHVlKG4pKS50b0xvd2VyQ2FzZSgpKSxhbHBoYW51bWVyaWNDYXNlU2Vuc2l0aXZlOihlLHQsbik9PmNvbXBhcmVBbHBoYW51bWVyaWModG9TdHJpbmcoZS5nZXRWYWx1ZShuKSksdG9TdHJpbmcodC5nZXRWYWx1ZShuKSkpLHRleHQ6KGUsdCxuKT0+Y29tcGFyZUJhc2ljKHRvU3RyaW5nKGUuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCksdG9TdHJpbmcodC5nZXRWYWx1ZShuKSkudG9Mb3dlckNhc2UoKSksdGV4dENhc2VTZW5zaXRpdmU6KGUsdCxuKT0+Y29tcGFyZUJhc2ljKHRvU3RyaW5nKGUuZ2V0VmFsdWUobikpLHRvU3RyaW5nKHQuZ2V0VmFsdWUobikpKSxkYXRldGltZTooZSx0LG4pPT57Y29uc3Qgbz1lLmdldFZhbHVlKG4pLGw9dC5nZXRWYWx1ZShuKTtyZXR1cm4gbz5sPzE6bzxsPy0xOjB9LGJhc2ljOihlLHQsbik9PmNvbXBhcmVCYXNpYyhlLmdldFZhbHVlKG4pLHQuZ2V0VmFsdWUobikpfSxqPVtJLHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5WaXNpYmlsaXR5Ont9LC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5WaXNpYmlsaXR5IixlKX0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UudG9nZ2xlVmlzaWJpbGl0eT1uPT57ZS5nZXRDYW5IaWRlKCkmJnQuc2V0Q29sdW1uVmlzaWJpbGl0eSh0PT4oey4uLnQsW2UuaWRdOm51bGwhPW4/bjohZS5nZXRJc1Zpc2libGUoKX0pKX0sZS5nZXRJc1Zpc2libGU9KCk9Pnt2YXIgbixvO2NvbnN0IGw9ZS5jb2x1bW5zO3JldHVybiBudWxsPT0obj1sLmxlbmd0aD9sLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGUoKSk6bnVsbD09KG89dC5nZXRTdGF0ZSgpLmNvbHVtblZpc2liaWxpdHkpP3ZvaWQgMDpvW2UuaWRdKXx8bn0sZS5nZXRDYW5IaWRlPSgpPT57dmFyIG4sbztyZXR1cm4obnVsbD09KG49ZS5jb2x1bW5EZWYuZW5hYmxlSGlkaW5nKXx8bikmJihudWxsPT0obz10Lm9wdGlvbnMuZW5hYmxlSGlkaW5nKXx8byl9LGUuZ2V0VG9nZ2xlVmlzaWJpbGl0eUhhbmRsZXI9KCk9PnQ9PntudWxsPT1lLnRvZ2dsZVZpc2liaWxpdHl8fGUudG9nZ2xlVmlzaWJpbGl0eSh0LnRhcmdldC5jaGVja2VkKX19LGNyZWF0ZVJvdzooZSx0KT0+e2UuX2dldEFsbFZpc2libGVDZWxscz1tZW1vKCgpPT5bZS5nZXRBbGxDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5WaXNpYmlsaXR5XSxlPT5lLmZpbHRlcihlPT5lLmNvbHVtbi5nZXRJc1Zpc2libGUoKSksZ2V0TWVtb09wdGlvbnModC5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRWaXNpYmxlQ2VsbHM9bWVtbygoKT0+W2UuZ2V0TGVmdFZpc2libGVDZWxscygpLGUuZ2V0Q2VudGVyVmlzaWJsZUNlbGxzKCksZS5nZXRSaWdodFZpc2libGVDZWxscygpXSwoZSx0LG4pPT5bLi4uZSwuLi50LC4uLm5dLGdldE1lbW9PcHRpb25zKHQub3B0aW9ucywiZGVidWdSb3dzIikpfSxjcmVhdGVUYWJsZTplPT57Y29uc3QgbWFrZVZpc2libGVDb2x1bW5zTWV0aG9kPSh0LG4pPT5tZW1vKCgpPT5bbigpLG4oKS5maWx0ZXIoZT0+ZS5nZXRJc1Zpc2libGUoKSkubWFwKGU9PmUuaWQpLmpvaW4oIl8iKV0sZT0+ZS5maWx0ZXIoZT0+bnVsbD09ZS5nZXRJc1Zpc2libGU/dm9pZCAwOmUuZ2V0SXNWaXNpYmxlKCkpLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpO2UuZ2V0VmlzaWJsZUZsYXRDb2x1bW5zPW1ha2VWaXNpYmxlQ29sdW1uc01ldGhvZCgwLCgpPT5lLmdldEFsbEZsYXRDb2x1bW5zKCkpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zPW1ha2VWaXNpYmxlQ29sdW1uc01ldGhvZCgwLCgpPT5lLmdldEFsbExlYWZDb2x1bW5zKCkpLGUuZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1ucz1tYWtlVmlzaWJsZUNvbHVtbnNNZXRob2QoMCwoKT0+ZS5nZXRMZWZ0TGVhZkNvbHVtbnMoKSksZS5nZXRSaWdodFZpc2libGVMZWFmQ29sdW1ucz1tYWtlVmlzaWJsZUNvbHVtbnNNZXRob2QoMCwoKT0+ZS5nZXRSaWdodExlYWZDb2x1bW5zKCkpLGUuZ2V0Q2VudGVyVmlzaWJsZUxlYWZDb2x1bW5zPW1ha2VWaXNpYmxlQ29sdW1uc01ldGhvZCgwLCgpPT5lLmdldENlbnRlckxlYWZDb2x1bW5zKCkpLGUuc2V0Q29sdW1uVmlzaWJpbGl0eT10PT5udWxsPT1lLm9wdGlvbnMub25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlKHQpLGUucmVzZXRDb2x1bW5WaXNpYmlsaXR5PXQ9Pnt2YXIgbjtlLnNldENvbHVtblZpc2liaWxpdHkodD97fTpudWxsIT0obj1lLmluaXRpYWxTdGF0ZS5jb2x1bW5WaXNpYmlsaXR5KT9uOnt9KX0sZS50b2dnbGVBbGxDb2x1bW5zVmlzaWJsZT10PT57dmFyIG47dD1udWxsIT0obj10KT9uOiFlLmdldElzQWxsQ29sdW1uc1Zpc2libGUoKSxlLnNldENvbHVtblZpc2liaWxpdHkoZS5nZXRBbGxMZWFmQ29sdW1ucygpLnJlZHVjZSgoZSxuKT0+KHsuLi5lLFtuLmlkXTp0fHwhKG51bGwhPW4uZ2V0Q2FuSGlkZSYmbi5nZXRDYW5IaWRlKCkpfSkse30pKX0sZS5nZXRJc0FsbENvbHVtbnNWaXNpYmxlPSgpPT4hZS5nZXRBbGxMZWFmQ29sdW1ucygpLnNvbWUoZT0+IShudWxsIT1lLmdldElzVmlzaWJsZSYmZS5nZXRJc1Zpc2libGUoKSkpLGUuZ2V0SXNTb21lQ29sdW1uc1Zpc2libGU9KCk9PmUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5zb21lKGU9Pm51bGw9PWUuZ2V0SXNWaXNpYmxlP3ZvaWQgMDplLmdldElzVmlzaWJsZSgpKSxlLmdldFRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5SGFuZGxlcj0oKT0+dD0+e3ZhciBuO2UudG9nZ2xlQWxsQ29sdW1uc1Zpc2libGUobnVsbD09KG49dC50YXJnZXQpP3ZvaWQgMDpuLmNoZWNrZWQpfX19LEIsRSxPLGsse2NyZWF0ZVRhYmxlOmU9PntlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9ZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbChlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9KCk9PmUub3B0aW9ucy5tYW51YWxGaWx0ZXJpbmd8fCFlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsKCksZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz1lLm9wdGlvbnMuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcyYmZS5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoZSwiX19nbG9iYWxfXyIpLGUuZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz0oKT0+ZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz9lLl9nZXRHbG9iYWxGYWNldGVkVW5pcXVlVmFsdWVzKCk6bmV3IE1hcCxlLl9nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPWUub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzJiZlLm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyhlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcygpfX19LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtnbG9iYWxGaWx0ZXI6dm9pZCAwLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR2xvYmFsRmlsdGVyQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoImdsb2JhbEZpbHRlciIsZSksZ2xvYmFsRmlsdGVyRm46ImF1dG8iLGdldENvbHVtbkNhbkdsb2JhbEZpbHRlcjp0PT57dmFyIG47Y29uc3Qgbz1udWxsPT0obj1lLmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdKXx8bnVsbD09KG49bi5fZ2V0QWxsQ2VsbHNCeUNvbHVtbklkKClbdC5pZF0pP3ZvaWQgMDpuLmdldFZhbHVlKCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBvfHwibnVtYmVyIj09dHlwZW9mIG99fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRDYW5HbG9iYWxGaWx0ZXI9KCk9Pnt2YXIgbixvLGwsYTtyZXR1cm4obnVsbD09KG49ZS5jb2x1bW5EZWYuZW5hYmxlR2xvYmFsRmlsdGVyKXx8bikmJihudWxsPT0obz10Lm9wdGlvbnMuZW5hYmxlR2xvYmFsRmlsdGVyKXx8bykmJihudWxsPT0obD10Lm9wdGlvbnMuZW5hYmxlRmlsdGVycyl8fGwpJiYobnVsbD09KGE9bnVsbD09dC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcj92b2lkIDA6dC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcihlKSl8fGEpJiYhIWUuYWNjZXNzb3JGbn19LGNyZWF0ZVRhYmxlOmU9PntlLmdldEdsb2JhbEF1dG9GaWx0ZXJGbj0oKT0+Xy5pbmNsdWRlc1N0cmluZyxlLmdldEdsb2JhbEZpbHRlckZuPSgpPT57dmFyIHQsbjtjb25zdHtnbG9iYWxGaWx0ZXJGbjpvfT1lLm9wdGlvbnM7cmV0dXJuIGlzRnVuY3Rpb24obyk/bzoiYXV0byI9PT1vP2UuZ2V0R2xvYmFsQXV0b0ZpbHRlckZuKCk6bnVsbCE9KHQ9bnVsbD09KG49ZS5vcHRpb25zLmZpbHRlckZucyk/dm9pZCAwOm5bb10pP3Q6X1tvXX0sZS5zZXRHbG9iYWxGaWx0ZXI9dD0+e251bGw9PWUub3B0aW9ucy5vbkdsb2JhbEZpbHRlckNoYW5nZXx8ZS5vcHRpb25zLm9uR2xvYmFsRmlsdGVyQ2hhbmdlKHQpfSxlLnJlc2V0R2xvYmFsRmlsdGVyPXQ9PntlLnNldEdsb2JhbEZpbHRlcih0P3ZvaWQgMDplLmluaXRpYWxTdGF0ZS5nbG9iYWxGaWx0ZXIpfX19LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtzb3J0aW5nOltdLC4uLmV9KSxnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe3NvcnRpbmdGbjoiYXV0byIsc29ydFVuZGVmaW5lZDoxfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblNvcnRpbmdDaGFuZ2U6bWFrZVN0YXRlVXBkYXRlcigic29ydGluZyIsZSksaXNNdWx0aVNvcnRFdmVudDplPT5lLnNoaWZ0S2V5fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRBdXRvU29ydGluZ0ZuPSgpPT57Y29uc3Qgbj10LmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cy5zbGljZSgxMCk7bGV0IG89ITE7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3Qgbj1udWxsPT10P3ZvaWQgMDp0LmdldFZhbHVlKGUuaWQpO2lmKCJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSlyZXR1cm4gcS5kYXRldGltZTtpZigic3RyaW5nIj09dHlwZW9mIG4mJihvPSEwLG4uc3BsaXQoSCkubGVuZ3RoPjEpKXJldHVybiBxLmFscGhhbnVtZXJpY31yZXR1cm4gbz9xLnRleHQ6cS5iYXNpY30sZS5nZXRBdXRvU29ydERpcj0oKT0+e2NvbnN0IG49dC5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3NbMF07cmV0dXJuInN0cmluZyI9PXR5cGVvZihudWxsPT1uP3ZvaWQgMDpuLmdldFZhbHVlKGUuaWQpKT8iYXNjIjoiZGVzYyJ9LGUuZ2V0U29ydGluZ0ZuPSgpPT57dmFyIG4sbztpZighZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGlzRnVuY3Rpb24oZS5jb2x1bW5EZWYuc29ydGluZ0ZuKT9lLmNvbHVtbkRlZi5zb3J0aW5nRm46ImF1dG8iPT09ZS5jb2x1bW5EZWYuc29ydGluZ0ZuP2UuZ2V0QXV0b1NvcnRpbmdGbigpOm51bGwhPShuPW51bGw9PShvPXQub3B0aW9ucy5zb3J0aW5nRm5zKT92b2lkIDA6b1tlLmNvbHVtbkRlZi5zb3J0aW5nRm5dKT9uOnFbZS5jb2x1bW5EZWYuc29ydGluZ0ZuXX0sZS50b2dnbGVTb3J0aW5nPShuLG8pPT57Y29uc3QgbD1lLmdldE5leHRTb3J0aW5nT3JkZXIoKSxhPW51bGwhPW47dC5zZXRTb3J0aW5nKHI9Pntjb25zdCBpPW51bGw9PXI/dm9pZCAwOnIuZmluZCh0PT50LmlkPT09ZS5pZCkscz1udWxsPT1yP3ZvaWQgMDpyLmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCk7bGV0IHUsZD1bXSxnPWE/bjoiZGVzYyI9PT1sO3ZhciBjOyh1PW51bGwhPXImJnIubGVuZ3RoJiZlLmdldENhbk11bHRpU29ydCgpJiZvP2k/InRvZ2dsZSI6ImFkZCI6bnVsbCE9ciYmci5sZW5ndGgmJnMhPT1yLmxlbmd0aC0xPyJyZXBsYWNlIjppPyJ0b2dnbGUiOiJyZXBsYWNlIiwidG9nZ2xlIj09PXUmJihhfHxsfHwodT0icmVtb3ZlIikpLCJhZGQiPT09dSk/KGQ9Wy4uLnIse2lkOmUuaWQsZGVzYzpnfV0sZC5zcGxpY2UoMCxkLmxlbmd0aC0obnVsbCE9KGM9dC5vcHRpb25zLm1heE11bHRpU29ydENvbENvdW50KT9jOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSkpOmQ9InRvZ2dsZSI9PT11P3IubWFwKHQ9PnQuaWQ9PT1lLmlkP3suLi50LGRlc2M6Z306dCk6InJlbW92ZSI9PT11P3IuZmlsdGVyKHQ9PnQuaWQhPT1lLmlkKTpbe2lkOmUuaWQsZGVzYzpnfV07cmV0dXJuIGR9KX0sZS5nZXRGaXJzdFNvcnREaXI9KCk9Pnt2YXIgbixvO3JldHVybihudWxsIT0obj1udWxsIT0obz1lLmNvbHVtbkRlZi5zb3J0RGVzY0ZpcnN0KT9vOnQub3B0aW9ucy5zb3J0RGVzY0ZpcnN0KT9uOiJkZXNjIj09PWUuZ2V0QXV0b1NvcnREaXIoKSk/ImRlc2MiOiJhc2MifSxlLmdldE5leHRTb3J0aW5nT3JkZXI9bj0+e3ZhciBvLGw7Y29uc3QgYT1lLmdldEZpcnN0U29ydERpcigpLHI9ZS5nZXRJc1NvcnRlZCgpO3JldHVybiByPyEhKHI9PT1hfHxudWxsIT0obz10Lm9wdGlvbnMuZW5hYmxlU29ydGluZ1JlbW92YWwpJiYhb3x8biYmbnVsbCE9KGw9dC5vcHRpb25zLmVuYWJsZU11bHRpUmVtb3ZlKSYmIWwpJiYoImRlc2MiPT09cj8iYXNjIjoiZGVzYyIpOmF9LGUuZ2V0Q2FuU29ydD0oKT0+e3ZhciBuLG87cmV0dXJuKG51bGw9PShuPWUuY29sdW1uRGVmLmVuYWJsZVNvcnRpbmcpfHxuKSYmKG51bGw9PShvPXQub3B0aW9ucy5lbmFibGVTb3J0aW5nKXx8bykmJiEhZS5hY2Nlc3NvckZufSxlLmdldENhbk11bHRpU29ydD0oKT0+e3ZhciBuLG87cmV0dXJuIG51bGwhPShuPW51bGwhPShvPWUuY29sdW1uRGVmLmVuYWJsZU11bHRpU29ydCk/bzp0Lm9wdGlvbnMuZW5hYmxlTXVsdGlTb3J0KT9uOiEhZS5hY2Nlc3NvckZufSxlLmdldElzU29ydGVkPSgpPT57dmFyIG47Y29uc3Qgbz1udWxsPT0obj10LmdldFN0YXRlKCkuc29ydGluZyk/dm9pZCAwOm4uZmluZCh0PT50LmlkPT09ZS5pZCk7cmV0dXJuISFvJiYoby5kZXNjPyJkZXNjIjoiYXNjIil9LGUuZ2V0U29ydEluZGV4PSgpPT57dmFyIG4sbztyZXR1cm4gbnVsbCE9KG49bnVsbD09KG89dC5nZXRTdGF0ZSgpLnNvcnRpbmcpP3ZvaWQgMDpvLmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCkpP246LTF9LGUuY2xlYXJTb3J0aW5nPSgpPT57dC5zZXRTb3J0aW5nKHQ9Pm51bGwhPXQmJnQubGVuZ3RoP3QuZmlsdGVyKHQ9PnQuaWQhPT1lLmlkKTpbXSl9LGUuZ2V0VG9nZ2xlU29ydGluZ0hhbmRsZXI9KCk9Pntjb25zdCBuPWUuZ2V0Q2FuU29ydCgpO3JldHVybiBvPT57biYmKG51bGw9PW8ucGVyc2lzdHx8by5wZXJzaXN0KCksbnVsbD09ZS50b2dnbGVTb3J0aW5nfHxlLnRvZ2dsZVNvcnRpbmcodm9pZCAwLCEhZS5nZXRDYW5NdWx0aVNvcnQoKSYmKG51bGw9PXQub3B0aW9ucy5pc011bHRpU29ydEV2ZW50P3ZvaWQgMDp0Lm9wdGlvbnMuaXNNdWx0aVNvcnRFdmVudChvKSkpKX19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRTb3J0aW5nPXQ9Pm51bGw9PWUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2UodCksZS5yZXNldFNvcnRpbmc9dD0+e3ZhciBuLG87ZS5zZXRTb3J0aW5nKHQ/W106bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLnNvcnRpbmcpP246W10pfSxlLmdldFByZVNvcnRlZFJvd01vZGVsPSgpPT5lLmdldEdyb3VwZWRSb3dNb2RlbCgpLGUuZ2V0U29ydGVkUm93TW9kZWw9KCk9PighZS5fZ2V0U29ydGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbCYmKGUuX2dldFNvcnRlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFNvcnRpbmd8fCFlLl9nZXRTb3J0ZWRSb3dNb2RlbD9lLmdldFByZVNvcnRlZFJvd01vZGVsKCk6ZS5fZ2V0U29ydGVkUm93TW9kZWwoKSl9fSx6LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtleHBhbmRlZDp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkV4cGFuZGVkQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoImV4cGFuZGVkIixlKSxwYWdpbmF0ZUV4cGFuZGVkUm93czohMH0pLGNyZWF0ZVRhYmxlOmU9PntsZXQgdD0hMSxuPSExO2UuX2F1dG9SZXNldEV4cGFuZGVkPSgpPT57dmFyIG8sbDtpZih0KXtpZihudWxsIT0obz1udWxsIT0obD1lLm9wdGlvbnMuYXV0b1Jlc2V0QWxsKT9sOmUub3B0aW9ucy5hdXRvUmVzZXRFeHBhbmRlZCk/bzohZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZyl7aWYobilyZXR1cm47bj0hMCxlLl9xdWV1ZSgoKT0+e2UucmVzZXRFeHBhbmRlZCgpLG49ITF9KX19ZWxzZSBlLl9xdWV1ZSgoKT0+e3Q9ITB9KX0sZS5zZXRFeHBhbmRlZD10PT5udWxsPT1lLm9wdGlvbnMub25FeHBhbmRlZENoYW5nZT92b2lkIDA6ZS5vcHRpb25zLm9uRXhwYW5kZWRDaGFuZ2UodCksZS50b2dnbGVBbGxSb3dzRXhwYW5kZWQ9dD0+eyhudWxsIT10P3Q6IWUuZ2V0SXNBbGxSb3dzRXhwYW5kZWQoKSk/ZS5zZXRFeHBhbmRlZCghMCk6ZS5zZXRFeHBhbmRlZCh7fSl9LGUucmVzZXRFeHBhbmRlZD10PT57dmFyIG4sbztlLnNldEV4cGFuZGVkKHQ/e306bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmV4cGFuZGVkKT9uOnt9KX0sZS5nZXRDYW5Tb21lUm93c0V4cGFuZD0oKT0+ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PmUuZ2V0Q2FuRXhwYW5kKCkpLGUuZ2V0VG9nZ2xlQWxsUm93c0V4cGFuZGVkSGFuZGxlcj0oKT0+dD0+e251bGw9PXQucGVyc2lzdHx8dC5wZXJzaXN0KCksZS50b2dnbGVBbGxSb3dzRXhwYW5kZWQoKX0sZS5nZXRJc1NvbWVSb3dzRXhwYW5kZWQ9KCk9Pntjb25zdCB0PWUuZ2V0U3RhdGUoKS5leHBhbmRlZDtyZXR1cm4hMD09PXR8fE9iamVjdC52YWx1ZXModCkuc29tZShCb29sZWFuKX0sZS5nZXRJc0FsbFJvd3NFeHBhbmRlZD0oKT0+e2NvbnN0IHQ9ZS5nZXRTdGF0ZSgpLmV4cGFuZGVkO3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/ITA9PT10OiEhT2JqZWN0LmtleXModCkubGVuZ3RoJiYhZS5nZXRSb3dNb2RlbCgpLmZsYXRSb3dzLnNvbWUoZT0+IWUuZ2V0SXNFeHBhbmRlZCgpKX0sZS5nZXRFeHBhbmRlZERlcHRoPSgpPT57bGV0IHQ9MDtyZXR1cm4oITA9PT1lLmdldFN0YXRlKCkuZXhwYW5kZWQ/T2JqZWN0LmtleXMoZS5nZXRSb3dNb2RlbCgpLnJvd3NCeUlkKTpPYmplY3Qua2V5cyhlLmdldFN0YXRlKCkuZXhwYW5kZWQpKS5mb3JFYWNoKGU9Pntjb25zdCBuPWUuc3BsaXQoIi4iKTt0PU1hdGgubWF4KHQsbi5sZW5ndGgpfSksdH0sZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsPSgpPT5lLmdldFNvcnRlZFJvd01vZGVsKCksZS5nZXRFeHBhbmRlZFJvd01vZGVsPSgpPT4oIWUuX2dldEV4cGFuZGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRFeHBhbmRlZFJvd01vZGVsJiYoZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RXhwYW5kZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZ3x8IWUuX2dldEV4cGFuZGVkUm93TW9kZWw/ZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsKCk6ZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS50b2dnbGVFeHBhbmRlZD1uPT57dC5zZXRFeHBhbmRlZChvPT57dmFyIGw7Y29uc3QgYT0hMD09PW98fCEobnVsbD09b3x8IW9bZS5pZF0pO2xldCByPXt9O2lmKCEwPT09bz9PYmplY3Qua2V5cyh0LmdldFJvd01vZGVsKCkucm93c0J5SWQpLmZvckVhY2goZT0+e3JbZV09ITB9KTpyPW8sbj1udWxsIT0obD1uKT9sOiFhLCFhJiZuKXJldHVybnsuLi5yLFtlLmlkXTohMH07aWYoYSYmIW4pe2NvbnN0e1tlLmlkXTp0LC4uLm59PXI7cmV0dXJuIG59cmV0dXJuIG99KX0sZS5nZXRJc0V4cGFuZGVkPSgpPT57dmFyIG47Y29uc3Qgbz10LmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuISEobnVsbCE9KG49bnVsbD09dC5vcHRpb25zLmdldElzUm93RXhwYW5kZWQ/dm9pZCAwOnQub3B0aW9ucy5nZXRJc1Jvd0V4cGFuZGVkKGUpKT9uOiEwPT09b3x8KG51bGw9PW8/dm9pZCAwOm9bZS5pZF0pKX0sZS5nZXRDYW5FeHBhbmQ9KCk9Pnt2YXIgbixvLGw7cmV0dXJuIG51bGwhPShuPW51bGw9PXQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQ/dm9pZCAwOnQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQoZSkpP246KG51bGw9PShvPXQub3B0aW9ucy5lbmFibGVFeHBhbmRpbmcpfHxvKSYmIShudWxsPT0obD1lLnN1YlJvd3MpfHwhbC5sZW5ndGgpfSxlLmdldElzQWxsUGFyZW50c0V4cGFuZGVkPSgpPT57bGV0IG49ITAsbz1lO2Zvcig7biYmby5wYXJlbnRJZDspbz10LmdldFJvdyhvLnBhcmVudElkLCEwKSxuPW8uZ2V0SXNFeHBhbmRlZCgpO3JldHVybiBufSxlLmdldFRvZ2dsZUV4cGFuZGVkSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5FeHBhbmQoKTtyZXR1cm4oKT0+e3QmJmUudG9nZ2xlRXhwYW5kZWQoKX19fX0se2dldEluaXRpYWxTdGF0ZTplPT4oey4uLmUscGFnaW5hdGlvbjp7cGFnZUluZGV4OjAscGFnZVNpemU6MTAsLi4ubnVsbD09ZT92b2lkIDA6ZS5wYWdpbmF0aW9ufX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25QYWdpbmF0aW9uQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoInBhZ2luYXRpb24iLGUpfSksY3JlYXRlVGFibGU6ZT0+e2xldCB0PSExLG49ITE7ZS5fYXV0b1Jlc2V0UGFnZUluZGV4PSgpPT57dmFyIG8sbDtpZih0KXtpZihudWxsIT0obz1udWxsIT0obD1lLm9wdGlvbnMuYXV0b1Jlc2V0QWxsKT9sOmUub3B0aW9ucy5hdXRvUmVzZXRQYWdlSW5kZXgpP286IWUub3B0aW9ucy5tYW51YWxQYWdpbmF0aW9uKXtpZihuKXJldHVybjtuPSEwLGUuX3F1ZXVlKCgpPT57ZS5yZXNldFBhZ2VJbmRleCgpLG49ITF9KX19ZWxzZSBlLl9xdWV1ZSgoKT0+e3Q9ITB9KX0sZS5zZXRQYWdpbmF0aW9uPXQ9Pm51bGw9PWUub3B0aW9ucy5vblBhZ2luYXRpb25DaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vblBhZ2luYXRpb25DaGFuZ2UoZT0+ZnVuY3Rpb25hbFVwZGF0ZSh0LGUpKSxlLnJlc2V0UGFnaW5hdGlvbj10PT57dmFyIG47ZS5zZXRQYWdpbmF0aW9uKHQ/e3BhZ2VJbmRleDowLHBhZ2VTaXplOjEwfTpudWxsIT0obj1lLmluaXRpYWxTdGF0ZS5wYWdpbmF0aW9uKT9uOntwYWdlSW5kZXg6MCxwYWdlU2l6ZToxMH0pfSxlLnNldFBhZ2VJbmRleD10PT57ZS5zZXRQYWdpbmF0aW9uKG49PntsZXQgbz1mdW5jdGlvbmFsVXBkYXRlKHQsbi5wYWdlSW5kZXgpO2NvbnN0IGw9dm9pZCAwPT09ZS5vcHRpb25zLnBhZ2VDb3VudHx8LTE9PT1lLm9wdGlvbnMucGFnZUNvdW50P051bWJlci5NQVhfU0FGRV9JTlRFR0VSOmUub3B0aW9ucy5wYWdlQ291bnQtMTtyZXR1cm4gbz1NYXRoLm1heCgwLE1hdGgubWluKG8sbCkpLHsuLi5uLHBhZ2VJbmRleDpvfX0pfSxlLnJlc2V0UGFnZUluZGV4PXQ9Pnt2YXIgbixvO2Uuc2V0UGFnZUluZGV4KHQ/MDpudWxsIT0obj1udWxsPT0obz1lLmluaXRpYWxTdGF0ZSl8fG51bGw9PShvPW8ucGFnaW5hdGlvbik/dm9pZCAwOm8ucGFnZUluZGV4KT9uOjApfSxlLnJlc2V0UGFnZVNpemU9dD0+e3ZhciBuLG87ZS5zZXRQYWdlU2l6ZSh0PzEwOm51bGwhPShuPW51bGw9PShvPWUuaW5pdGlhbFN0YXRlKXx8bnVsbD09KG89by5wYWdpbmF0aW9uKT92b2lkIDA6by5wYWdlU2l6ZSk/bjoxMCl9LGUuc2V0UGFnZVNpemU9dD0+e2Uuc2V0UGFnaW5hdGlvbihlPT57Y29uc3Qgbj1NYXRoLm1heCgxLGZ1bmN0aW9uYWxVcGRhdGUodCxlLnBhZ2VTaXplKSksbz1lLnBhZ2VTaXplKmUucGFnZUluZGV4LGw9TWF0aC5mbG9vcihvL24pO3JldHVybnsuLi5lLHBhZ2VJbmRleDpsLHBhZ2VTaXplOm59fSl9LGUuc2V0UGFnZUNvdW50PXQ9PmUuc2V0UGFnaW5hdGlvbihuPT57dmFyIG87bGV0IGw9ZnVuY3Rpb25hbFVwZGF0ZSh0LG51bGwhPShvPWUub3B0aW9ucy5wYWdlQ291bnQpP286LTEpO3JldHVybiJudW1iZXIiPT10eXBlb2YgbCYmKGw9TWF0aC5tYXgoLTEsbCkpLHsuLi5uLHBhZ2VDb3VudDpsfX0pLGUuZ2V0UGFnZU9wdGlvbnM9bWVtbygoKT0+W2UuZ2V0UGFnZUNvdW50KCldLGU9PntsZXQgdD1bXTtyZXR1cm4gZSYmZT4wJiYodD1bLi4ubmV3IEFycmF5KGUpXS5maWxsKG51bGwpLm1hcCgoZSx0KT0+dCkpLHR9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIpKSxlLmdldENhblByZXZpb3VzUGFnZT0oKT0+ZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZUluZGV4PjAsZS5nZXRDYW5OZXh0UGFnZT0oKT0+e2NvbnN0e3BhZ2VJbmRleDp0fT1lLmdldFN0YXRlKCkucGFnaW5hdGlvbixuPWUuZ2V0UGFnZUNvdW50KCk7cmV0dXJuLTE9PT1ufHwwIT09biYmdDxuLTF9LGUucHJldmlvdXNQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlPT5lLTEpLGUubmV4dFBhZ2U9KCk9PmUuc2V0UGFnZUluZGV4KGU9PmUrMSksZS5maXJzdFBhZ2U9KCk9PmUuc2V0UGFnZUluZGV4KDApLGUubGFzdFBhZ2U9KCk9PmUuc2V0UGFnZUluZGV4KGUuZ2V0UGFnZUNvdW50KCktMSksZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWw9KCk9PmUuZ2V0RXhwYW5kZWRSb3dNb2RlbCgpLGUuZ2V0UGFnaW5hdGlvblJvd01vZGVsPSgpPT4oIWUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbCYmZS5vcHRpb25zLmdldFBhZ2luYXRpb25Sb3dNb2RlbCYmKGUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbD1lLm9wdGlvbnMuZ2V0UGFnaW5hdGlvblJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsUGFnaW5hdGlvbnx8IWUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbD9lLmdldFByZVBhZ2luYXRpb25Sb3dNb2RlbCgpOmUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbCgpKSxlLmdldFBhZ2VDb3VudD0oKT0+e3ZhciB0O3JldHVybiBudWxsIT0odD1lLm9wdGlvbnMucGFnZUNvdW50KT90Ok1hdGguY2VpbChlLmdldFJvd0NvdW50KCkvZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemUpfSxlLmdldFJvd0NvdW50PSgpPT57dmFyIHQ7cmV0dXJuIG51bGwhPSh0PWUub3B0aW9ucy5yb3dDb3VudCk/dDplLmdldFByZVBhZ2luYXRpb25Sb3dNb2RlbCgpLnJvd3MubGVuZ3RofX19LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dQaW5uaW5nOnt0b3A6W10sYm90dG9tOltdfSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1Bpbm5pbmdDaGFuZ2U6bWFrZVN0YXRlVXBkYXRlcigicm93UGlubmluZyIsZSl9KSxjcmVhdGVSb3c6KGUsdCk9PntlLnBpbj0obixvLGwpPT57Y29uc3QgYT1vP2UuZ2V0TGVhZlJvd3MoKS5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSk6W10scj1sP2UuZ2V0UGFyZW50Um93cygpLm1hcChlPT57bGV0e2lkOnR9PWU7cmV0dXJuIHR9KTpbXSxpPW5ldyBTZXQoWy4uLnIsZS5pZCwuLi5hXSk7dC5zZXRSb3dQaW5uaW5nKGU9Pnt2YXIgdCxvLGwsYSxyLHM7cmV0dXJuImJvdHRvbSI9PT1uP3t0b3A6KG51bGwhPShsPW51bGw9PWU/dm9pZCAwOmUudG9wKT9sOltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLGJvdHRvbTpbLi4uKG51bGwhPShhPW51bGw9PWU/dm9pZCAwOmUuYm90dG9tKT9hOltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLC4uLkFycmF5LmZyb20oaSldfToidG9wIj09PW4/e3RvcDpbLi4uKG51bGwhPShyPW51bGw9PWU/dm9pZCAwOmUudG9wKT9yOltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLC4uLkFycmF5LmZyb20oaSldLGJvdHRvbToobnVsbCE9KHM9bnVsbD09ZT92b2lkIDA6ZS5ib3R0b20pP3M6W10pLmZpbHRlcihlPT4hKG51bGwhPWkmJmkuaGFzKGUpKSl9Ont0b3A6KG51bGwhPSh0PW51bGw9PWU/dm9pZCAwOmUudG9wKT90OltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLGJvdHRvbToobnVsbCE9KG89bnVsbD09ZT92b2lkIDA6ZS5ib3R0b20pP286W10pLmZpbHRlcihlPT4hKG51bGwhPWkmJmkuaGFzKGUpKSl9fSl9LGUuZ2V0Q2FuUGluPSgpPT57dmFyIG47Y29uc3R7ZW5hYmxlUm93UGlubmluZzpvLGVuYWJsZVBpbm5pbmc6bH09dC5vcHRpb25zO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBvP28oZSk6bnVsbD09KG49bnVsbCE9bz9vOmwpfHxufSxlLmdldElzUGlubmVkPSgpPT57Y29uc3Qgbj1bZS5pZF0se3RvcDpvLGJvdHRvbTpsfT10LmdldFN0YXRlKCkucm93UGlubmluZyxhPW4uc29tZShlPT5udWxsPT1vP3ZvaWQgMDpvLmluY2x1ZGVzKGUpKSxyPW4uc29tZShlPT5udWxsPT1sP3ZvaWQgMDpsLmluY2x1ZGVzKGUpKTtyZXR1cm4gYT8idG9wIjohIXImJiJib3R0b20ifSxlLmdldFBpbm5lZEluZGV4PSgpPT57dmFyIG4sbztjb25zdCBsPWUuZ2V0SXNQaW5uZWQoKTtpZighbClyZXR1cm4tMTtjb25zdCBhPW51bGw9PShuPSJ0b3AiPT09bD90LmdldFRvcFJvd3MoKTp0LmdldEJvdHRvbVJvd3MoKSk/dm9pZCAwOm4ubWFwKGU9PntsZXR7aWQ6dH09ZTtyZXR1cm4gdH0pO3JldHVybiBudWxsIT0obz1udWxsPT1hP3ZvaWQgMDphLmluZGV4T2YoZS5pZCkpP286LTF9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dQaW5uaW5nPXQ9Pm51bGw9PWUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2UodCksZS5yZXNldFJvd1Bpbm5pbmc9dD0+e3ZhciBuLG87cmV0dXJuIGUuc2V0Um93UGlubmluZyh0P3t0b3A6W10sYm90dG9tOltdfTpudWxsIT0obj1udWxsPT0obz1lLmluaXRpYWxTdGF0ZSk/dm9pZCAwOm8ucm93UGlubmluZyk/bjp7dG9wOltdLGJvdHRvbTpbXX0pfSxlLmdldElzU29tZVJvd3NQaW5uZWQ9dD0+e3ZhciBuO2NvbnN0IG89ZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmc7dmFyIGwsYTtyZXR1cm4gdD9Cb29sZWFuKG51bGw9PShuPW9bdF0pP3ZvaWQgMDpuLmxlbmd0aCk6Qm9vbGVhbigobnVsbD09KGw9by50b3ApP3ZvaWQgMDpsLmxlbmd0aCl8fChudWxsPT0oYT1vLmJvdHRvbSk/dm9pZCAwOmEubGVuZ3RoKSl9LGUuX2dldFBpbm5lZFJvd3M9KHQsbixvKT0+e3ZhciBsO3JldHVybihudWxsPT0obD1lLm9wdGlvbnMua2VlcFBpbm5lZFJvd3MpfHxsPyhudWxsIT1uP246W10pLm1hcCh0PT57Y29uc3Qgbj1lLmdldFJvdyh0LCEwKTtyZXR1cm4gbi5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZCgpP246bnVsbH0pOihudWxsIT1uP246W10pLm1hcChlPT50LmZpbmQodD0+dC5pZD09PWUpKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246b30pKX0sZS5nZXRUb3BSb3dzPW1lbW8oKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3BdLCh0LG4pPT5lLl9nZXRQaW5uZWRSb3dzKHQsbiwidG9wIiksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRCb3R0b21Sb3dzPW1lbW8oKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy5ib3R0b21dLCh0LG4pPT5lLl9nZXRQaW5uZWRSb3dzKHQsbiwiYm90dG9tIiksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRDZW50ZXJSb3dzPW1lbW8oKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3AsZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcuYm90dG9tXSwoZSx0LG4pPT57Y29uc3Qgbz1uZXcgU2V0KFsuLi5udWxsIT10P3Q6W10sLi4ubnVsbCE9bj9uOltdXSk7cmV0dXJuIGUuZmlsdGVyKGU9PiFvLmhhcyhlLmlkKSl9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdSb3dzIikpfX0sTCwkXTtmdW5jdGlvbiBjcmVhdGVUYWJsZShlKXt2YXIgdCxuO2NvbnN0IG89Wy4uLmosLi4ubnVsbCE9KHQ9ZS5fZmVhdHVyZXMpP3Q6W11dO2xldCBsPXtfZmVhdHVyZXM6b307Y29uc3QgYT1sLl9mZWF0dXJlcy5yZWR1Y2UoKGUsdCk9Pk9iamVjdC5hc3NpZ24oZSxudWxsPT10LmdldERlZmF1bHRPcHRpb25zP3ZvaWQgMDp0LmdldERlZmF1bHRPcHRpb25zKGwpKSx7fSk7bGV0IHI9ey4uLm51bGwhPShuPWUuaW5pdGlhbFN0YXRlKT9uOnt9fTtsLl9mZWF0dXJlcy5mb3JFYWNoKGU9Pnt2YXIgdDtyPW51bGwhPSh0PW51bGw9PWUuZ2V0SW5pdGlhbFN0YXRlP3ZvaWQgMDplLmdldEluaXRpYWxTdGF0ZShyKSk/dDpyfSk7Y29uc3QgaT1bXTtsZXQgcz0hMTtjb25zdCB1PXtfZmVhdHVyZXM6byxvcHRpb25zOnsuLi5hLC4uLmV9LGluaXRpYWxTdGF0ZTpyLF9xdWV1ZTplPT57aS5wdXNoKGUpLHN8fChzPSEwLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pntmb3IoO2kubGVuZ3RoOylpLnNoaWZ0KCkoKTtzPSExfSkuY2F0Y2goZT0+c2V0VGltZW91dCgoKT0+e3Rocm93IGV9KSkpfSxyZXNldDooKT0+e2wuc2V0U3RhdGUobC5pbml0aWFsU3RhdGUpfSxzZXRPcHRpb25zOmU9Pntjb25zdCB0PWZ1bmN0aW9uYWxVcGRhdGUoZSxsLm9wdGlvbnMpO2wub3B0aW9ucz0oZT0+bC5vcHRpb25zLm1lcmdlT3B0aW9ucz9sLm9wdGlvbnMubWVyZ2VPcHRpb25zKGEsZSk6ey4uLmEsLi4uZX0pKHQpfSxnZXRTdGF0ZTooKT0+bC5vcHRpb25zLnN0YXRlLHNldFN0YXRlOmU9PntudWxsPT1sLm9wdGlvbnMub25TdGF0ZUNoYW5nZXx8bC5vcHRpb25zLm9uU3RhdGVDaGFuZ2UoZSl9LF9nZXRSb3dJZDooZSx0LG4pPT57dmFyIG87cmV0dXJuIG51bGwhPShvPW51bGw9PWwub3B0aW9ucy5nZXRSb3dJZD92b2lkIDA6bC5vcHRpb25zLmdldFJvd0lkKGUsdCxuKSk/bzpgJHtuP1tuLmlkLHRdLmpvaW4oIi4iKTp0fWB9LGdldENvcmVSb3dNb2RlbDooKT0+KGwuX2dldENvcmVSb3dNb2RlbHx8KGwuX2dldENvcmVSb3dNb2RlbD1sLm9wdGlvbnMuZ2V0Q29yZVJvd01vZGVsKGwpKSxsLl9nZXRDb3JlUm93TW9kZWwoKSksZ2V0Um93TW9kZWw6KCk9PmwuZ2V0UGFnaW5hdGlvblJvd01vZGVsKCksZ2V0Um93OihlLHQpPT57bGV0IG49KHQ/bC5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTpsLmdldFJvd01vZGVsKCkpLnJvd3NCeUlkW2VdO2lmKCFuJiYobj1sLmdldENvcmVSb3dNb2RlbCgpLnJvd3NCeUlkW2VdLCFuKSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIG59LF9nZXREZWZhdWx0Q29sdW1uRGVmOm1lbW8oKCk9PltsLm9wdGlvbnMuZGVmYXVsdENvbHVtbl0sZT0+e3ZhciB0O3JldHVybiBlPW51bGwhPSh0PWUpP3Q6e30se2hlYWRlcjplPT57Y29uc3QgdD1lLmhlYWRlci5jb2x1bW4uY29sdW1uRGVmO3JldHVybiB0LmFjY2Vzc29yS2V5P3QuYWNjZXNzb3JLZXk6dC5hY2Nlc3NvckZuP3QuaWQ6bnVsbH0sY2VsbDplPT57dmFyIHQsbjtyZXR1cm4gbnVsbCE9KHQ9bnVsbD09KG49ZS5yZW5kZXJWYWx1ZSgpKXx8bnVsbD09bi50b1N0cmluZz92b2lkIDA6bi50b1N0cmluZygpKT90Om51bGx9LC4uLmwuX2ZlYXR1cmVzLnJlZHVjZSgoZSx0KT0+T2JqZWN0LmFzc2lnbihlLG51bGw9PXQuZ2V0RGVmYXVsdENvbHVtbkRlZj92b2lkIDA6dC5nZXREZWZhdWx0Q29sdW1uRGVmKCkpLHt9KSwuLi5lfX0sZ2V0TWVtb09wdGlvbnMoZSwiZGVidWdDb2x1bW5zIikpLF9nZXRDb2x1bW5EZWZzOigpPT5sLm9wdGlvbnMuY29sdW1ucyxnZXRBbGxDb2x1bW5zOm1lbW8oKCk9PltsLl9nZXRDb2x1bW5EZWZzKCldLGU9Pntjb25zdCByZWN1cnNlQ29sdW1ucz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLGUubWFwKGU9Pntjb25zdCBvPWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBsLGE7Y29uc3Qgcj17Li4uZS5fZ2V0RGVmYXVsdENvbHVtbkRlZigpLC4uLnR9LGk9ci5hY2Nlc3NvcktleTtsZXQgcyx1PW51bGwhPShsPW51bGwhPShhPXIuaWQpP2E6aT8iZnVuY3Rpb24iPT10eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsP2kucmVwbGFjZUFsbCgiLiIsIl8iKTppLnJlcGxhY2UoL1wuL2csIl8iKTp2b2lkIDApP2w6InN0cmluZyI9PXR5cGVvZiByLmhlYWRlcj9yLmhlYWRlcjp2b2lkIDA7aWYoci5hY2Nlc3NvckZuP3M9ci5hY2Nlc3NvckZuOmkmJihzPWkuaW5jbHVkZXMoIi4iKT9lPT57bGV0IHQ9ZTtmb3IoY29uc3QgZSBvZiBpLnNwbGl0KCIuIikpe3ZhciBuO3Q9bnVsbD09KG49dCk/dm9pZCAwOm5bZV19cmV0dXJuIHR9OmU9PmVbci5hY2Nlc3NvcktleV0pLCF1KXRocm93IG5ldyBFcnJvcjtsZXQgZD17aWQ6YCR7U3RyaW5nKHUpfWAsYWNjZXNzb3JGbjpzLHBhcmVudDpvLGRlcHRoOm4sY29sdW1uRGVmOnIsY29sdW1uczpbXSxnZXRGbGF0Q29sdW1uczptZW1vKCgpPT5bITBdLCgpPT57dmFyIGU7cmV0dXJuW2QsLi4ubnVsbD09KGU9ZC5jb2x1bW5zKT92b2lkIDA6ZS5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSldfSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxnZXRMZWFmQ29sdW1uczptZW1vKCgpPT5bZS5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sZT0+e3ZhciB0O2lmKG51bGwhPSh0PWQuY29sdW1ucykmJnQubGVuZ3RoKXtsZXQgdD1kLmNvbHVtbnMuZmxhdE1hcChlPT5lLmdldExlYWZDb2x1bW5zKCkpO3JldHVybiBlKHQpfXJldHVybltkXX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSl9O2Zvcihjb25zdCB0IG9mIGUuX2ZlYXR1cmVzKW51bGw9PXQuY3JlYXRlQ29sdW1ufHx0LmNyZWF0ZUNvbHVtbihkLGUpO3JldHVybiBkfShsLGUsbix0KSxhPWU7cmV0dXJuIG8uY29sdW1ucz1hLmNvbHVtbnM/cmVjdXJzZUNvbHVtbnMoYS5jb2x1bW5zLG8sbisxKTpbXSxvfSl9O3JldHVybiByZWN1cnNlQ29sdW1ucyhlKX0sZ2V0TWVtb09wdGlvbnMoZSwiZGVidWdDb2x1bW5zIikpLGdldEFsbEZsYXRDb2x1bW5zOm1lbW8oKCk9PltsLmdldEFsbENvbHVtbnMoKV0sZT0+ZS5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSksZ2V0TWVtb09wdGlvbnMoZSwiZGVidWdDb2x1bW5zIikpLF9nZXRBbGxGbGF0Q29sdW1uc0J5SWQ6bWVtbygoKT0+W2wuZ2V0QWxsRmxhdENvbHVtbnMoKV0sZT0+ZS5yZWR1Y2UoKGUsdCk9PihlW3QuaWRdPXQsZSkse30pLGdldE1lbW9PcHRpb25zKGUsImRlYnVnQ29sdW1ucyIpKSxnZXRBbGxMZWFmQ29sdW1uczptZW1vKCgpPT5bbC5nZXRBbGxDb2x1bW5zKCksbC5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sKGUsdCk9PnQoZS5mbGF0TWFwKGU9PmUuZ2V0TGVhZkNvbHVtbnMoKSkpLGdldE1lbW9PcHRpb25zKGUsImRlYnVnQ29sdW1ucyIpKSxnZXRDb2x1bW46ZT0+bC5fZ2V0QWxsRmxhdENvbHVtbnNCeUlkKClbZV19O09iamVjdC5hc3NpZ24obCx1KTtmb3IobGV0IGU9MDtlPGwuX2ZlYXR1cmVzLmxlbmd0aDtlKyspe2NvbnN0IHQ9bC5fZmVhdHVyZXNbZV07bnVsbD09dHx8bnVsbD09dC5jcmVhdGVUYWJsZXx8dC5jcmVhdGVUYWJsZShsKX1yZXR1cm4gbH1mdW5jdGlvbiBmaWx0ZXJSb3dzKGUsdCxuKXtyZXR1cm4gbi5vcHRpb25zLmZpbHRlckZyb21MZWFmUm93cz9mdW5jdGlvbihlLHQsbil7dmFyIG87Y29uc3QgbD1bXSxhPXt9LHI9bnVsbCE9KG89bi5vcHRpb25zLm1heExlYWZSb3dGaWx0ZXJEZXB0aCk/bzoxMDAscmVjdXJzZUZpbHRlclJvd3M9ZnVuY3Rpb24oZSxvKXt2b2lkIDA9PT1vJiYobz0wKTtjb25zdCBpPVtdO2ZvcihsZXQgdT0wO3U8ZS5sZW5ndGg7dSsrKXt2YXIgcztsZXQgZD1lW3VdO2NvbnN0IGc9Y3JlYXRlUm93KG4sZC5pZCxkLm9yaWdpbmFsLGQuaW5kZXgsZC5kZXB0aCwwLGQucGFyZW50SWQpO2lmKGcuY29sdW1uRmlsdGVycz1kLmNvbHVtbkZpbHRlcnMsbnVsbCE9KHM9ZC5zdWJSb3dzKSYmcy5sZW5ndGgmJm88cil7aWYoZy5zdWJSb3dzPXJlY3Vyc2VGaWx0ZXJSb3dzKGQuc3ViUm93cyxvKzEpLGQ9Zyx0KGQpJiYhZy5zdWJSb3dzLmxlbmd0aCl7aS5wdXNoKGQpLGFbZC5pZF09ZCxsLnB1c2goZCk7Y29udGludWV9aWYodChkKXx8Zy5zdWJSb3dzLmxlbmd0aCl7aS5wdXNoKGQpLGFbZC5pZF09ZCxsLnB1c2goZCk7Y29udGludWV9fWVsc2UgZD1nLHQoZCkmJihpLnB1c2goZCksYVtkLmlkXT1kLGwucHVzaChkKSl9cmV0dXJuIGl9O3JldHVybntyb3dzOnJlY3Vyc2VGaWx0ZXJSb3dzKGUpLGZsYXRSb3dzOmwscm93c0J5SWQ6YX19KGUsdCxuKTpmdW5jdGlvbihlLHQsbil7dmFyIG87Y29uc3QgbD1bXSxhPXt9LHI9bnVsbCE9KG89bi5vcHRpb25zLm1heExlYWZSb3dGaWx0ZXJEZXB0aCk/bzoxMDAscmVjdXJzZUZpbHRlclJvd3M9ZnVuY3Rpb24oZSxvKXt2b2lkIDA9PT1vJiYobz0wKTtjb25zdCBpPVtdO2ZvcihsZXQgdT0wO3U8ZS5sZW5ndGg7dSsrKXtsZXQgZD1lW3VdO2lmKHQoZCkpe3ZhciBzO2lmKG51bGwhPShzPWQuc3ViUm93cykmJnMubGVuZ3RoJiZvPHIpe2NvbnN0IGU9Y3JlYXRlUm93KG4sZC5pZCxkLm9yaWdpbmFsLGQuaW5kZXgsZC5kZXB0aCwwLGQucGFyZW50SWQpO2Uuc3ViUm93cz1yZWN1cnNlRmlsdGVyUm93cyhkLnN1YlJvd3MsbysxKSxkPWV9aS5wdXNoKGQpLGwucHVzaChkKSxhW2QuaWRdPWR9fXJldHVybiBpfTtyZXR1cm57cm93czpyZWN1cnNlRmlsdGVyUm93cyhlKSxmbGF0Um93czpsLHJvd3NCeUlkOmF9fShlLHQsbil9ZnVuY3Rpb24gdHJ1ZUZuKCl7cmV0dXJuITB9Y29uc3QgVD1TeW1ib2woIm1lcmdlLXByb3h5IiksVT17Z2V0OihlLHQsbik9PnQ9PT1UP246ZS5nZXQodCksaGFzOihlLHQpPT5lLmhhcyh0KSxzZXQ6dHJ1ZUZuLGRlbGV0ZVByb3BlcnR5OnRydWVGbixnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6KGUsdCk9Pih7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OigpPT5lLmdldCh0KSxzZXQ6dHJ1ZUZuLGRlbGV0ZVByb3BlcnR5OnRydWVGbn0pLG93bktleXM6ZT0+ZS5rZXlzKCl9O2Z1bmN0aW9uIHJlc29sdmVTb3VyY2UoZSl7cmV0dXJuInZhbHVlImluIGU/ZS52YWx1ZTplfWZ1bmN0aW9uIG1lcmdlUHJveHkoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbmV3IFByb3h5KHtnZXQoZSl7Zm9yKGxldCBuPXQubGVuZ3RoLTE7bj49MDtuLS0pe2NvbnN0IG89cmVzb2x2ZVNvdXJjZSh0W25dKVtlXTtpZih2b2lkIDAhPT1vKXJldHVybiBvfX0saGFzKGUpe2ZvcihsZXQgbj10Lmxlbmd0aC0xO24+PTA7bi0tKWlmKGUgaW4gcmVzb2x2ZVNvdXJjZSh0W25dKSlyZXR1cm4hMDtyZXR1cm4hMX0sa2V5cygpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZS5wdXNoKC4uLk9iamVjdC5rZXlzKHJlc29sdmVTb3VyY2UodFtuXSkpKTtyZXR1cm5bLi4uQXJyYXkuZnJvbShuZXcgU2V0KGUpKV19fSxVKX1jb25zdCBOPWgoe3Byb3BzOlsicmVuZGVyIiwicHJvcHMiXSxzZXR1cDplPT4oKT0+ImZ1bmN0aW9uIj09dHlwZW9mIGUucmVuZGVyfHwib2JqZWN0Ij09dHlwZW9mIGUucmVuZGVyP1MoZS5yZW5kZXIsZS5wcm9wcyk6ZS5yZW5kZXJ9KTtmdW5jdGlvbiBnZXRPcHRpb25zV2l0aFJlYWN0aXZlRGF0YShlKXtyZXR1cm4gbWVyZ2VQcm94eShlLHtkYXRhOmIoZS5kYXRhKX0pfWNvbnN0IFg9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBvdmVyZmxvdy1hdXRvIixiYXNlOiJtaW4tdy1mdWxsIG92ZXJmbG93LWNsaXAiLGNhcHRpb246InNyLW9ubHkiLHRoZWFkOiJyZWxhdGl2ZSIsdGJvZHk6Imlzb2xhdGUgWyY+dHJdOmRhdGEtW3NlbGVjdGFibGU9dHJ1ZV06aG92ZXI6YmctZWxldmF0ZWQvNTAgWyY+dHJdOmRhdGEtW3NlbGVjdGFibGU9dHJ1ZV06Zm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiLHRmb290OiJyZWxhdGl2ZSIsdHI6ImRhdGEtW3NlbGVjdGVkPXRydWVdOmJnLWVsZXZhdGVkLzUwIix0aDoicHgtNCBweS0zLjUgdGV4dC1zbSB0ZXh0LWhpZ2hsaWdodGVkIHRleHQtbGVmdCBydGw6dGV4dC1yaWdodCBmb250LXNlbWlib2xkIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwZS0wIix0ZDoicC00IHRleHQtc20gdGV4dC1tdXRlZCB3aGl0ZXNwYWNlLW5vd3JhcCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cGUtMCIsc2VwYXJhdG9yOiJhYnNvbHV0ZSB6LTEgbGVmdC0wIHctZnVsbCBoLXB4IGJnLSgtLXVpLWJvcmRlci1hY2NlbnRlZCkiLGVtcHR5OiJweS02IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCIsbG9hZGluZzoicHktNiB0ZXh0LWNlbnRlciJ9LHZhcmlhbnRzOntwaW5uZWQ6e3RydWU6e3RoOiJzdGlja3kgYmctZGVmYXVsdC83NSB6LTEiLHRkOiJzdGlja3kgYmctZGVmYXVsdC83NSB6LTEifX0sc3RpY2t5Ont0cnVlOnt0aGVhZDoic3RpY2t5IHRvcC0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIix0Zm9vdDoic3RpY2t5IGJvdHRvbS0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIn0saGVhZGVyOnt0aGVhZDoic3RpY2t5IHRvcC0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIn0sZm9vdGVyOnt0Zm9vdDoic3RpY2t5IGJvdHRvbS0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIn19LGxvYWRpbmc6e3RydWU6e3RoZWFkOiJhZnRlcjphYnNvbHV0ZSBhZnRlcjp6LTEgYWZ0ZXI6aC1weCJ9fSxsb2FkaW5nQW5pbWF0aW9uOntjYXJvdXNlbDoiIiwiY2Fyb3VzZWwtaW52ZXJzZSI6IiIsc3dpbmc6IiIsZWxhc3RpYzoiIn0sbG9hZGluZ0NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifX0sY29tcG91bmRWYXJpYW50czpbe2xvYWRpbmc6ITAsbG9hZGluZ0NvbG9yOiJwcmltYXJ5IixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLXByaW1hcnkifX0se2xvYWRpbmc6ITAsbG9hZGluZ0NvbG9yOiJzZWNvbmRhcnkiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6Ymctc2Vjb25kYXJ5In19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoic3VjY2VzcyIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1zdWNjZXNzIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoiaW5mbyIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1pbmZvIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoid2FybmluZyIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy13YXJuaW5nIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoiZXJyb3IiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YmctZXJyb3IifX0se2xvYWRpbmc6ITAsbG9hZGluZ0NvbG9yOiJuZXV0cmFsIixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLWludmVydGVkIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdBbmltYXRpb246ImNhcm91c2VsIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSBydGw6YWZ0ZXI6YW5pbWF0ZS1bY2Fyb3VzZWwtcnRsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQW5pbWF0aW9uOiJjYXJvdXNlbC1pbnZlcnNlIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2VfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIHJ0bDphZnRlcjphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se2xvYWRpbmc6ITAsbG9hZGluZ0FuaW1hdGlvbjoic3dpbmciLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YW5pbWF0ZS1bc3dpbmdfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdBbmltYXRpb246ImVsYXN0aWMiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YW5pbWF0ZS1bZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX1dLGRlZmF1bHRWYXJpYW50czp7bG9hZGluZ0NvbG9yOiJwcmltYXJ5Iixsb2FkaW5nQW5pbWF0aW9uOiJjYXJvdXNlbCJ9fSxLPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVRhYmxlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczplLm1lcmdlTW9kZWxzKHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkYXRhOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxjb2x1bW5zOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxjYXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbWV0YTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHZpcnR1YWxpemU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxlbXB0eTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nQW5pbWF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHdhdGNoT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+KHtkZWVwOiEwfSl9LGdsb2JhbEZpbHRlck9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb2x1bW5GaWx0ZXJzT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbHVtblBpbm5pbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29sdW1uU2l6aW5nT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHZpc2liaWxpdHlPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sc29ydGluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxncm91cGluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxleHBhbmRlZE9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxyb3dTZWxlY3Rpb25PcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scm93UGlubmluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxwYWdpbmF0aW9uT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGZhY2V0ZWRPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb25TZWxlY3Q6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uSG92ZXI6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQ29udGV4dG1lbnU6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxzdGF0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9uU3RhdGVDaGFuZ2U6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LHJlbmRlckZhbGxiYWNrVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sX2ZlYXR1cmVzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxhdXRvUmVzZXRBbGw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdBbGw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdDZWxsczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWJ1Z0NvbHVtbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdIZWFkZXJzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnUm93czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWJ1Z1RhYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRDb2x1bW46e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxnZXRSb3dJZDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sZ2V0U3ViUm93czp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0saW5pdGlhbFN0YXRlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbWVyZ2VPcHRpb25zOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfX0se2dsb2JhbEZpbHRlcjp7dHlwZTpTdHJpbmd9LGdsb2JhbEZpbHRlck1vZGlmaWVyczp7fSxjb2x1bW5GaWx0ZXJzOnt0eXBlOkFycmF5fSxjb2x1bW5GaWx0ZXJzTW9kaWZpZXJzOnt9LGNvbHVtbk9yZGVyOnt0eXBlOkFycmF5fSxjb2x1bW5PcmRlck1vZGlmaWVyczp7fSxjb2x1bW5WaXNpYmlsaXR5Ont0eXBlOk9iamVjdH0sY29sdW1uVmlzaWJpbGl0eU1vZGlmaWVyczp7fSxjb2x1bW5QaW5uaW5nOnt0eXBlOk9iamVjdH0sY29sdW1uUGlubmluZ01vZGlmaWVyczp7fSxjb2x1bW5TaXppbmc6e3R5cGU6T2JqZWN0fSxjb2x1bW5TaXppbmdNb2RpZmllcnM6e30sY29sdW1uU2l6aW5nSW5mbzp7dHlwZTpPYmplY3R9LGNvbHVtblNpemluZ0luZm9Nb2RpZmllcnM6e30scm93U2VsZWN0aW9uOnt0eXBlOk9iamVjdH0scm93U2VsZWN0aW9uTW9kaWZpZXJzOnt9LHJvd1Bpbm5pbmc6e3R5cGU6T2JqZWN0fSxyb3dQaW5uaW5nTW9kaWZpZXJzOnt9LHNvcnRpbmc6e3R5cGU6QXJyYXl9LHNvcnRpbmdNb2RpZmllcnM6e30sZ3JvdXBpbmc6e3R5cGU6QXJyYXl9LGdyb3VwaW5nTW9kaWZpZXJzOnt9LGV4cGFuZGVkOnt0eXBlOltCb29sZWFuLE9iamVjdF19LGV4cGFuZGVkTW9kaWZpZXJzOnt9LHBhZ2luYXRpb246e3R5cGU6T2JqZWN0fSxwYWdpbmF0aW9uTW9kaWZpZXJzOnt9fSksZW1pdHM6WyJ1cGRhdGU6Z2xvYmFsRmlsdGVyIiwidXBkYXRlOmNvbHVtbkZpbHRlcnMiLCJ1cGRhdGU6Y29sdW1uT3JkZXIiLCJ1cGRhdGU6Y29sdW1uVmlzaWJpbGl0eSIsInVwZGF0ZTpjb2x1bW5QaW5uaW5nIiwidXBkYXRlOmNvbHVtblNpemluZyIsInVwZGF0ZTpjb2x1bW5TaXppbmdJbmZvIiwidXBkYXRlOnJvd1NlbGVjdGlvbiIsInVwZGF0ZTpyb3dQaW5uaW5nIiwidXBkYXRlOnNvcnRpbmciLCJ1cGRhdGU6Z3JvdXBpbmciLCJ1cGRhdGU6ZXhwYW5kZWQiLCJ1cGRhdGU6cGFnaW5hdGlvbiJdLHNldHVwKGgse2V4cG9zZTpTfSl7Y29uc3QgYj1oLFA9ZS51c2VTbG90cygpLHt0Okl9PXQoKSxPPW4oKSxfPW8oInRhYmxlIixiKSxrPWwoYi5kYXRhPz9bXSwhMSE9PWIud2F0Y2hPcHRpb25zPy5kZWVwKSxBPWUuY29tcHV0ZWQoKCk9PmIubWV0YT8/e30pLHo9ZS5jb21wdXRlZCgoKT0+cHJvY2Vzc0NvbHVtbnMoYi5jb2x1bW5zPz9PYmplY3Qua2V5cyhrLnZhbHVlWzBdPz97fSkubWFwKGU9Pih7YWNjZXNzb3JLZXk6ZSxoZWFkZXI6ZChlKX0pKSkpO2Z1bmN0aW9uIHByb2Nlc3NDb2x1bW5zKGUpe3JldHVybiBlLm1hcChlPT57Y29uc3QgdD17Li4uZX07cmV0dXJuImNvbHVtbnMiaW4gdCYmdC5jb2x1bW5zJiYodC5jb2x1bW5zPXByb2Nlc3NDb2x1bW5zKHQuY29sdW1ucykpLHQuY2VsbHx8KHQuY2VsbD0oe2dldFZhbHVlOmV9KT0+e2NvbnN0IHQ9ZSgpO3JldHVybiIiPT09dHx8bnVsbD09dD8iwqAiOlN0cmluZyh0KX0pLHR9KX1jb25zdCBCPWUuY29tcHV0ZWQoKCk9PmEoe2V4dGVuZDphKFgpLC4uLk8udWk/LnRhYmxlfHx7fX0pKHtzdGlja3k6Yi5zdGlja3ksbG9hZGluZzpiLmxvYWRpbmcsbG9hZGluZ0NvbG9yOmIubG9hZGluZ0NvbG9yLGxvYWRpbmdBbmltYXRpb246Yi5sb2FkaW5nQW5pbWF0aW9ufSkpLFtFLERdPXIoKSxbJCxHXT1yKHtwcm9wczp7cm93Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sc3R5bGU6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX19KSxMPWUuY29tcHV0ZWQoKCk9PmZ1bmN0aW9uIGhhc0Zvb3RlclJlY3Vyc2l2ZShlKXtmb3IoY29uc3QgdCBvZiBlKXtpZigiZm9vdGVyImluIHQpcmV0dXJuITA7aWYoImNvbHVtbnMiaW4gdCYmaGFzRm9vdGVyUmVjdXJzaXZlKHQuY29sdW1ucykpcmV0dXJuITB9cmV0dXJuITF9KHoudmFsdWUpKSxIPWUudXNlTW9kZWwoaCwiZ2xvYmFsRmlsdGVyIikscT1lLnVzZU1vZGVsKGgsImNvbHVtbkZpbHRlcnMiKSxqPWUudXNlTW9kZWwoaCwiY29sdW1uT3JkZXIiKSxUPWUudXNlTW9kZWwoaCwiY29sdW1uVmlzaWJpbGl0eSIpLFU9ZS51c2VNb2RlbChoLCJjb2x1bW5QaW5uaW5nIiksSz1lLnVzZU1vZGVsKGgsImNvbHVtblNpemluZyIpLFc9ZS51c2VNb2RlbChoLCJjb2x1bW5TaXppbmdJbmZvIiksWT1lLnVzZU1vZGVsKGgsInJvd1NlbGVjdGlvbiIpLEo9ZS51c2VNb2RlbChoLCJyb3dQaW5uaW5nIiksUT1lLnVzZU1vZGVsKGgsInNvcnRpbmciKSxaPWUudXNlTW9kZWwoaCwiZ3JvdXBpbmciKSxlZT1lLnVzZU1vZGVsKGgsImV4cGFuZGVkIiksdGU9ZS51c2VNb2RlbChoLCJwYWdpbmF0aW9uIiksbmU9ZS51c2VUZW1wbGF0ZVJlZigicm9vdFJlZiIpLG9lPWUudXNlVGVtcGxhdGVSZWYoInRhYmxlUmVmIiksbGU9ZnVuY3Rpb24oZSl7Y29uc3QgdD1jKGUuZGF0YSksbj1jcmVhdGVUYWJsZShtZXJnZVByb3h5KHtzdGF0ZTp7fSxvblN0YXRlQ2hhbmdlOigpPT57fSxyZW5kZXJGYWxsYmFja1ZhbHVlOm51bGwsbWVyZ2VPcHRpb25zOihlLG4pPT50P3suLi5lLC4uLm59Om1lcmdlUHJveHkoZSxuKX0sdD9nZXRPcHRpb25zV2l0aFJlYWN0aXZlRGF0YShlKTplKSk7aWYodCl7Y29uc3QgdD1wKGUuZGF0YSk7bSh0LCgpPT57bi5zZXRTdGF0ZShlPT4oey4uLmUsZGF0YTp0LnZhbHVlfSkpfSx7aW1tZWRpYXRlOiEwfSl9Y29uc3Qgbz1mKG4uaW5pdGlhbFN0YXRlKTtyZXR1cm4gdigoKT0+e24uc2V0T3B0aW9ucyhuPT57dmFyIGw7Y29uc3QgYT1uZXcgUHJveHkoe30se2dldDooZSx0KT0+by52YWx1ZVt0XX0pO3JldHVybiBtZXJnZVByb3h5KG4sdD9nZXRPcHRpb25zV2l0aFJlYWN0aXZlRGF0YShlKTplLHtzdGF0ZTptZXJnZVByb3h5KGEsbnVsbCE9KGw9ZS5zdGF0ZSk/bDp7fSksb25TdGF0ZUNoYW5nZTp0PT57by52YWx1ZT10IGluc3RhbmNlb2YgRnVuY3Rpb24/dChvLnZhbHVlKTp0LG51bGw9PWUub25TdGF0ZUNoYW5nZXx8ZS5vblN0YXRlQ2hhbmdlKHQpfX0pfSl9KSxufSh7Li4uaShzKGIsIl9mZWF0dXJlcyIsImF1dG9SZXNldEFsbCIsImRlYnVnQWxsIiwiZGVidWdDZWxscyIsImRlYnVnQ29sdW1ucyIsImRlYnVnSGVhZGVycyIsImRlYnVnUm93cyIsImRlYnVnVGFibGUiLCJkZWZhdWx0Q29sdW1uIiwiZ2V0Um93SWQiLCJnZXRTdWJSb3dzIiwiaW5pdGlhbFN0YXRlIiwibWVyZ2VPcHRpb25zIiwicmVuZGVyRmFsbGJhY2tWYWx1ZSIpKS52YWx1ZSxnZXQgZGF0YSgpe3JldHVybiBrLnZhbHVlfSxnZXQgY29sdW1ucygpe3JldHVybiB6LnZhbHVlfSxtZXRhOkEudmFsdWUsZ2V0Q29yZVJvd01vZGVsOmU9Pm1lbW8oKCk9PltlLm9wdGlvbnMuZGF0YV0sdD0+e2NvbnN0IG49e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LGFjY2Vzc1Jvd3M9ZnVuY3Rpb24odCxvLGwpe3ZvaWQgMD09PW8mJihvPTApO2NvbnN0IGE9W107Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IHM9Y3JlYXRlUm93KGUsZS5fZ2V0Um93SWQodFtpXSxpLGwpLHRbaV0saSxvLDAsbnVsbD09bD92b2lkIDA6bC5pZCk7dmFyIHI7bi5mbGF0Um93cy5wdXNoKHMpLG4ucm93c0J5SWRbcy5pZF09cyxhLnB1c2gocyksZS5vcHRpb25zLmdldFN1YlJvd3MmJihzLm9yaWdpbmFsU3ViUm93cz1lLm9wdGlvbnMuZ2V0U3ViUm93cyh0W2ldLGkpLG51bGwhPShyPXMub3JpZ2luYWxTdWJSb3dzKSYmci5sZW5ndGgmJihzLnN1YlJvd3M9YWNjZXNzUm93cyhzLm9yaWdpbmFsU3ViUm93cyxvKzEscykpKX1yZXR1cm4gYX07cmV0dXJuIG4ucm93cz1hY2Nlc3NSb3dzKHQpLG59LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIsMCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKSwuLi5iLmdsb2JhbEZpbHRlck9wdGlvbnN8fHt9LC4uLnZvaWQgMCE9PUgudmFsdWUmJntvbkdsb2JhbEZpbHRlckNoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxIKX0sLi4uYi5jb2x1bW5GaWx0ZXJzT3B0aW9uc3x8e30sZ2V0RmlsdGVyZWRSb3dNb2RlbDplPT5tZW1vKCgpPT5bZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCksZS5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMsZS5nZXRTdGF0ZSgpLmdsb2JhbEZpbHRlcl0sKHQsbixvKT0+e2lmKCF0LnJvd3MubGVuZ3RofHwobnVsbD09bnx8IW4ubGVuZ3RoKSYmIW8pe2ZvcihsZXQgZT0wO2U8dC5mbGF0Um93cy5sZW5ndGg7ZSsrKXQuZmxhdFJvd3NbZV0uY29sdW1uRmlsdGVycz17fSx0LmZsYXRSb3dzW2VdLmNvbHVtbkZpbHRlcnNNZXRhPXt9O3JldHVybiB0fWNvbnN0IGw9W10sYT1bXTsobnVsbCE9bj9uOltdKS5mb3JFYWNoKHQ9Pnt2YXIgbjtjb25zdCBvPWUuZ2V0Q29sdW1uKHQuaWQpO2lmKCFvKXJldHVybjtjb25zdCBhPW8uZ2V0RmlsdGVyRm4oKTthJiZsLnB1c2goe2lkOnQuaWQsZmlsdGVyRm46YSxyZXNvbHZlZFZhbHVlOm51bGwhPShuPW51bGw9PWEucmVzb2x2ZUZpbHRlclZhbHVlP3ZvaWQgMDphLnJlc29sdmVGaWx0ZXJWYWx1ZSh0LnZhbHVlKSk/bjp0LnZhbHVlfSl9KTtjb25zdCByPShudWxsIT1uP246W10pLm1hcChlPT5lLmlkKSxpPWUuZ2V0R2xvYmFsRmlsdGVyRm4oKSxzPWUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5maWx0ZXIoZT0+ZS5nZXRDYW5HbG9iYWxGaWx0ZXIoKSk7bGV0IHUsZDtvJiZpJiZzLmxlbmd0aCYmKHIucHVzaCgiX19nbG9iYWxfXyIpLHMuZm9yRWFjaChlPT57dmFyIHQ7YS5wdXNoKHtpZDplLmlkLGZpbHRlckZuOmkscmVzb2x2ZWRWYWx1ZTpudWxsIT0odD1udWxsPT1pLnJlc29sdmVGaWx0ZXJWYWx1ZT92b2lkIDA6aS5yZXNvbHZlRmlsdGVyVmFsdWUobykpP3Q6b30pfSkpO2ZvcihsZXQgZT0wO2U8dC5mbGF0Um93cy5sZW5ndGg7ZSsrKXtjb25zdCBuPXQuZmxhdFJvd3NbZV07aWYobi5jb2x1bW5GaWx0ZXJzPXt9LGwubGVuZ3RoKWZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSsrKXt1PWxbZV07Y29uc3QgdD11LmlkO24uY29sdW1uRmlsdGVyc1t0XT11LmZpbHRlckZuKG4sdCx1LnJlc29sdmVkVmFsdWUsZT0+e24uY29sdW1uRmlsdGVyc01ldGFbdF09ZX0pfWlmKGEubGVuZ3RoKXtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7ZD1hW2VdO2NvbnN0IHQ9ZC5pZDtpZihkLmZpbHRlckZuKG4sdCxkLnJlc29sdmVkVmFsdWUsZT0+e24uY29sdW1uRmlsdGVyc01ldGFbdF09ZX0pKXtuLmNvbHVtbkZpbHRlcnMuX19nbG9iYWxfXz0hMDticmVha319ITAhPT1uLmNvbHVtbkZpbHRlcnMuX19nbG9iYWxfXyYmKG4uY29sdW1uRmlsdGVycy5fX2dsb2JhbF9fPSExKX19cmV0dXJuIGZpbHRlclJvd3ModC5yb3dzLGU9Pntmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylpZighMT09PWUuY29sdW1uRmlsdGVyc1tyW3RdXSlyZXR1cm4hMTtyZXR1cm4hMH0sZSl9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIsMCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKSwuLi52b2lkIDAhPT1xLnZhbHVlJiZ7b25Db2x1bW5GaWx0ZXJzQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLHEpfSwuLi52b2lkIDAhPT1qLnZhbHVlJiZ7b25Db2x1bW5PcmRlckNoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxqKX0sLi4uYi52aXNpYmlsaXR5T3B0aW9uc3x8e30sLi4udm9pZCAwIT09VC52YWx1ZSYme29uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxUKX0sLi4uYi5jb2x1bW5QaW5uaW5nT3B0aW9uc3x8e30sLi4udm9pZCAwIT09VS52YWx1ZSYme29uQ29sdW1uUGlubmluZ0NoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxVKX0sLi4uYi5jb2x1bW5TaXppbmdPcHRpb25zfHx7fSwuLi52b2lkIDAhPT1LLnZhbHVlJiZ7b25Db2x1bW5TaXppbmdDaGFuZ2U6ZT0+dmFsdWVVcGRhdGVyKGUsSyl9LC4uLnZvaWQgMCE9PVcudmFsdWUmJntvbkNvbHVtblNpemluZ0luZm9DaGFuZ2U6ZT0+dmFsdWVVcGRhdGVyKGUsVyl9LC4uLmIucm93U2VsZWN0aW9uT3B0aW9uc3x8e30sLi4udm9pZCAwIT09WS52YWx1ZSYme29uUm93U2VsZWN0aW9uQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLFkpfSwuLi5iLnJvd1Bpbm5pbmdPcHRpb25zfHx7fSwuLi52b2lkIDAhPT1KLnZhbHVlJiZ7b25Sb3dQaW5uaW5nQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLEopfSwuLi5iLnNvcnRpbmdPcHRpb25zfHx7fSxnZXRTb3J0ZWRSb3dNb2RlbDplPT5tZW1vKCgpPT5bZS5nZXRTdGF0ZSgpLnNvcnRpbmcsZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpXSwodCxuKT0+e2lmKCFuLnJvd3MubGVuZ3RofHxudWxsPT10fHwhdC5sZW5ndGgpcmV0dXJuIG47Y29uc3Qgbz1lLmdldFN0YXRlKCkuc29ydGluZyxsPVtdLGE9by5maWx0ZXIodD0+e3ZhciBuO3JldHVybiBudWxsPT0obj1lLmdldENvbHVtbih0LmlkKSk/dm9pZCAwOm4uZ2V0Q2FuU29ydCgpfSkscj17fTthLmZvckVhY2godD0+e2NvbnN0IG49ZS5nZXRDb2x1bW4odC5pZCk7biYmKHJbdC5pZF09e3NvcnRVbmRlZmluZWQ6bi5jb2x1bW5EZWYuc29ydFVuZGVmaW5lZCxpbnZlcnRTb3J0aW5nOm4uY29sdW1uRGVmLmludmVydFNvcnRpbmcsc29ydGluZ0ZuOm4uZ2V0U29ydGluZ0ZuKCl9KX0pO2NvbnN0IHNvcnREYXRhPWU9Pntjb25zdCB0PWUubWFwKGU9Pih7Li4uZX0pKTtyZXR1cm4gdC5zb3J0KChlLHQpPT57Zm9yKGxldCBvPTA7bzxhLmxlbmd0aDtvKz0xKXt2YXIgbjtjb25zdCBsPWFbb10saT1yW2wuaWRdLHM9aS5zb3J0VW5kZWZpbmVkLHU9bnVsbCE9KG49bnVsbD09bD92b2lkIDA6bC5kZXNjKSYmbjtsZXQgZD0wO2lmKHMpe2NvbnN0IG49dm9pZCAwPT09ZS5nZXRWYWx1ZShsLmlkKSxvPXZvaWQgMD09PXQuZ2V0VmFsdWUobC5pZCk7aWYobnx8byl7aWYoImZpcnN0Ij09PXMpcmV0dXJuIG4/LTE6MTtpZigibGFzdCI9PT1zKXJldHVybiBuPzE6LTE7ZD1uJiZvPzA6bj9zOi1zfX1pZigwPT09ZCYmKGQ9aS5zb3J0aW5nRm4oZSx0LGwuaWQpKSwwIT09ZClyZXR1cm4gdSYmKGQqPS0xKSxpLmludmVydFNvcnRpbmcmJihkKj0tMSksZH1yZXR1cm4gZS5pbmRleC10LmluZGV4fSksdC5mb3JFYWNoKGU9Pnt2YXIgdDtsLnB1c2goZSksbnVsbCE9KHQ9ZS5zdWJSb3dzKSYmdC5sZW5ndGgmJihlLnN1YlJvd3M9c29ydERhdGEoZS5zdWJSb3dzKSl9KSx0fTtyZXR1cm57cm93czpzb3J0RGF0YShuLnJvd3MpLGZsYXRSb3dzOmwscm93c0J5SWQ6bi5yb3dzQnlJZH19LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIsMCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKSwuLi52b2lkIDAhPT1RLnZhbHVlJiZ7b25Tb3J0aW5nQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLFEpfSwuLi5iLmdyb3VwaW5nT3B0aW9uc3x8e30sLi4udm9pZCAwIT09Wi52YWx1ZSYme29uR3JvdXBpbmdDaGFuZ2U6ZT0+dmFsdWVVcGRhdGVyKGUsWil9LC4uLmIuZXhwYW5kZWRPcHRpb25zfHx7fSxnZXRFeHBhbmRlZFJvd01vZGVsOmU9Pm1lbW8oKCk9PltlLmdldFN0YXRlKCkuZXhwYW5kZWQsZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsKCksZS5vcHRpb25zLnBhZ2luYXRlRXhwYW5kZWRSb3dzXSwoZSx0LG4pPT4hdC5yb3dzLmxlbmd0aHx8ITAhPT1lJiYhT2JqZWN0LmtleXMobnVsbCE9ZT9lOnt9KS5sZW5ndGg/dDpuP2Z1bmN0aW9uKGUpe2NvbnN0IHQ9W10saGFuZGxlUm93PWU9Pnt2YXIgbjt0LnB1c2goZSksbnVsbCE9KG49ZS5zdWJSb3dzKSYmbi5sZW5ndGgmJmUuZ2V0SXNFeHBhbmRlZCgpJiZlLnN1YlJvd3MuZm9yRWFjaChoYW5kbGVSb3cpfTtyZXR1cm4gZS5yb3dzLmZvckVhY2goaGFuZGxlUm93KSx7cm93czp0LGZsYXRSb3dzOmUuZmxhdFJvd3Mscm93c0J5SWQ6ZS5yb3dzQnlJZH19KHQpOnQsZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIikpLC4uLnZvaWQgMCE9PWVlLnZhbHVlJiZ7b25FeHBhbmRlZENoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxlZSl9LC4uLmIucGFnaW5hdGlvbk9wdGlvbnN8fHt9LC4uLnZvaWQgMCE9PXRlLnZhbHVlJiZ7b25QYWdpbmF0aW9uQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLHRlKX0sLi4uYi5mYWNldGVkT3B0aW9uc3x8e30sc3RhdGU6e2dldCBnbG9iYWxGaWx0ZXIoKXtyZXR1cm4gSC52YWx1ZX0sZ2V0IGNvbHVtbkZpbHRlcnMoKXtyZXR1cm4gcS52YWx1ZX0sZ2V0IGNvbHVtbk9yZGVyKCl7cmV0dXJuIGoudmFsdWV9LGdldCBjb2x1bW5WaXNpYmlsaXR5KCl7cmV0dXJuIFQudmFsdWV9LGdldCBjb2x1bW5QaW5uaW5nKCl7cmV0dXJuIFUudmFsdWV9LGdldCBleHBhbmRlZCgpe3JldHVybiBlZS52YWx1ZX0sZ2V0IHJvd1NlbGVjdGlvbigpe3JldHVybiBZLnZhbHVlfSxnZXQgc29ydGluZygpe3JldHVybiBRLnZhbHVlfSxnZXQgZ3JvdXBpbmcoKXtyZXR1cm4gWi52YWx1ZX0sZ2V0IHJvd1Bpbm5pbmcoKXtyZXR1cm4gSi52YWx1ZX0sZ2V0IGNvbHVtblNpemluZygpe3JldHVybiBLLnZhbHVlfSxnZXQgY29sdW1uU2l6aW5nSW5mbygpe3JldHVybiBXLnZhbHVlfSxnZXQgcGFnaW5hdGlvbigpe3JldHVybiB0ZS52YWx1ZX19fSksYWU9ZS5jb21wdXRlZCgoKT0+bGUuZ2V0Um93TW9kZWwoKS5yb3dzKSxyZT1lLmNvbXB1dGVkKCgpPT5iLnZpcnR1YWxpemU/W106bGUuZ2V0VG9wUm93cygpKSxpZT1lLmNvbXB1dGVkKCgpPT5iLnZpcnR1YWxpemU/W106bGUuZ2V0Qm90dG9tUm93cygpKSxzZT1lLmNvbXB1dGVkKCgpPT5yZS52YWx1ZS5sZW5ndGh8fGllLnZhbHVlLmxlbmd0aD9sZS5nZXRDZW50ZXJSb3dzKCk6YWUudmFsdWUpLHVlPWUudG9SZWYoKCk9PmcoImJvb2xlYW4iPT10eXBlb2YgYi52aXJ0dWFsaXplP3t9OmIudmlydHVhbGl6ZSx7ZXN0aW1hdGVTaXplOjY1LG92ZXJzY2FuOjEyfSkpLGRlPSEhYi52aXJ0dWFsaXplJiZWKHsuLi51ZS52YWx1ZSxnZXQgY291bnQoKXtyZXR1cm4gc2UudmFsdWUubGVuZ3RofSxnZXRTY3JvbGxFbGVtZW50OigpPT5uZS52YWx1ZT8uJGVsLGVzdGltYXRlU2l6ZTplPT57Y29uc3QgdD11ZS52YWx1ZS5lc3RpbWF0ZVNpemU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChlKTp0fX0pLGdlPWUuY29tcHV0ZWQoKCk9PmRlP2RlLnZhbHVlLmdldFZpcnR1YWxJdGVtcygpOltdKSxjZT1lLmNvbXB1dGVkKCgpPT5nZS52YWx1ZVswXT8uc3RhcnQ/PzApLHBlPWUuY29tcHV0ZWQoKCk9PmRlJiZnZS52YWx1ZS5sZW5ndGg/ZGUudmFsdWUuZ2V0VG90YWxTaXplKCktKGdlLnZhbHVlW2dlLnZhbHVlLmxlbmd0aC0xXT8uZW5kPz8wKTowKTtmdW5jdGlvbiB2YWx1ZVVwZGF0ZXIoZSx0KXt0LnZhbHVlPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UodC52YWx1ZSk6ZX1mdW5jdGlvbiBvblJvd0hvdmVyKGUsdCl7Yi5vbkhvdmVyJiZiLm9uSG92ZXIoZSx0KX1mdW5jdGlvbiByZXNvbHZlVmFsdWUoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQpOmV9ZnVuY3Rpb24gZ2V0Q29sdW1uU3R5bGVzKGUpe2NvbnN0IHQ9e30sbj1lLmdldElzUGlubmVkKCk7cmV0dXJuImxlZnQiPT09bj90LmxlZnQ9YCR7ZS5nZXRTdGFydCgibGVmdCIpfXB4YDoicmlnaHQiPT09biYmKHQucmlnaHQ9YCR7ZS5nZXRBZnRlcigicmlnaHQiKX1weGApLHR9cmV0dXJuIGUud2F0Y2goKCk9PmIuZGF0YSwoKT0+e2sudmFsdWU9Yi5kYXRhP1suLi5iLmRhdGFdOltdfSxiLndhdGNoT3B0aW9ucyksUyh7Z2V0ICRlbCgpe3JldHVybiBuZS52YWx1ZT8uJGVsfSx0YWJsZVJlZjpvZSx0YWJsZUFwaTpsZX0pLCh0LG4sbyxsKT0+e24oIlx4M2MhLS1bLS1ceDNlIiksbih3KGUudW5yZWYoJCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKHtyb3c6bixzdHlsZTpvfSxsLGEscik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZSgidHIiLHsiZGF0YS1zZWxlY3RlZCI6bi5nZXRJc1NlbGVjdGVkKCksImRhdGEtc2VsZWN0YWJsZSI6ISFiLm9uU2VsZWN0fHwhIWIub25Ib3Zlcnx8ISFiLm9uQ29udGV4dG1lbnUsImRhdGEtZXhwYW5kZWQiOm4uZ2V0SXNFeHBhbmRlZCgpLCJkYXRhLXBpbm5lZCI6bi5nZXRJc1Bpbm5lZCgpfHx2b2lkIDAscm9sZTpiLm9uU2VsZWN0PyJidXR0b24iOnZvaWQgMCx0YWJpbmRleDpiLm9uU2VsZWN0PzA6dm9pZCAwLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6Qi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyLHJlc29sdmVWYWx1ZShlLnVucmVmKGxlKS5vcHRpb25zLm1ldGE/LmNsYXNzPy50cixuKV19KSxzdHlsZTpbcmVzb2x2ZVZhbHVlKGUudW5yZWYobGUpLm9wdGlvbnMubWV0YT8uc3R5bGU/LnRyLG4pLG9dLG9uQ2xpY2s6ZT0+ZnVuY3Rpb24oZSx0KXtpZighYi5vblNlbGVjdClyZXR1cm47Y29uc3Qgbj1lLnRhcmdldDtuLmNsb3Nlc3QoImJ1dHRvbiIpfHxuLmNsb3Nlc3QoImEiKXx8KGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLGIub25TZWxlY3QoZSx0KSl9KGUsbiksb25Qb2ludGVyZW50ZXI6ZT0+b25Sb3dIb3ZlcihlLG4pLG9uUG9pbnRlcmxlYXZlOmU9Pm9uUm93SG92ZXIoZSxudWxsKSxvbkNvbnRleHRtZW51OmU9PmZ1bmN0aW9uKGUsdCl7Yi5vbkNvbnRleHRtZW51JiYoQXJyYXkuaXNBcnJheShiLm9uQ29udGV4dG1lbnUpP2Iub25Db250ZXh0bWVudS5mb3JFYWNoKG49Pm4oZSx0KSk6Yi5vbkNvbnRleHRtZW51KGUsdCkpfShlLG4pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qobi5nZXRWaXNpYmxlQ2VsbHMoKSxuPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0ZCIse2tleTpuLmlkLCJkYXRhLXBpbm5lZCI6bi5jb2x1bW4uZ2V0SXNQaW5uZWQoKSxjb2xzcGFuOnJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uY29sc3Bhbj8udGQsbikscm93c3BhbjpyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnJvd3NwYW4/LnRkLG4pLCJkYXRhLXNsb3QiOiJ0ZCIsY2xhc3M6Qi52YWx1ZS50ZCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRkLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uY2xhc3M/LnRkLG4pXSxwaW5uZWQ6ISFuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpfSksc3R5bGU6W2dldENvbHVtblN0eWxlcyhuLmNvbHVtbikscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5zdHlsZT8udGQsbildfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLGAke24uY29sdW1uLmlkfS1jZWxsYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihOKSx7cmVuZGVyOm4uY29sdW1uLmNvbHVtbkRlZi5jZWxsLHByb3BzOm4uZ2V0Q29udGV4dCgpfSxudWxsLDgsWyJyZW5kZXIiLCJwcm9wcyJdKV0pXSwxNCxbImRhdGEtcGlubmVkIiwiY29sc3BhbiIsInJvd3NwYW4iXSkpKSwxMjgpKV0sNDYsWyJkYXRhLXNlbGVjdGVkIiwiZGF0YS1zZWxlY3RhYmxlIiwiZGF0YS1leHBhbmRlZCIsImRhdGEtcGlubmVkIiwicm9sZSIsInRhYmluZGV4Iiwib25DbGljayIsIm9uUG9pbnRlcmVudGVyIiwib25Qb2ludGVybGVhdmUiLCJvbkNvbnRleHRtZW51Il0pLG4uZ2V0SXNFeHBhbmRlZCgpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRyIix7a2V5OjAsImRhdGEtc2xvdCI6InRyIixjbGFzczpCLnZhbHVlLnRyKHtjbGFzczpbZS51bnJlZihfKT8udHJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46bi5nZXRBbGxDZWxscygpLmxlbmd0aCwiZGF0YS1zbG90IjoidGQiLGNsYXNzOkIudmFsdWUudGQoe2NsYXNzOltlLnVucmVmKF8pPy50ZF19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZXhwYW5kZWQiLHtyb3c6bn0pXSwxMCxbImNvbHNwYW4iXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2woYDx0ciR7QygiZGF0YS1zZWxlY3RlZCIsbi5nZXRJc1NlbGVjdGVkKCkpfSR7QygiZGF0YS1zZWxlY3RhYmxlIiwhIWIub25TZWxlY3R8fCEhYi5vbkhvdmVyfHwhIWIub25Db250ZXh0bWVudSl9JHtDKCJkYXRhLWV4cGFuZGVkIixuLmdldElzRXhwYW5kZWQoKSl9JHtDKCJkYXRhLXBpbm5lZCIsbi5nZXRJc1Bpbm5lZCgpfHx2b2lkIDApfSR7Qygicm9sZSIsYi5vblNlbGVjdD8iYnV0dG9uIjp2b2lkIDApfSR7QygidGFiaW5kZXgiLGIub25TZWxlY3Q/MDp2b2lkIDApfSBkYXRhLXNsb3Q9InRyIiBjbGFzcz0iJHtSKEIudmFsdWUudHIoe2NsYXNzOltlLnVucmVmKF8pPy50cixyZXNvbHZlVmFsdWUoZS51bnJlZihsZSkub3B0aW9ucy5tZXRhPy5jbGFzcz8udHIsbildfSkpfSIgc3R5bGU9IiR7eShbcmVzb2x2ZVZhbHVlKGUudW5yZWYobGUpLm9wdGlvbnMubWV0YT8uc3R5bGU/LnRyLG4pLG9dKX0iJHtyfT5ceDNjIS0tWy0tXHgzZWApLHgobi5nZXRWaXNpYmxlQ2VsbHMoKSxuPT57bChgPHRkJHtDKCJkYXRhLXBpbm5lZCIsbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKSl9JHtDKCJjb2xzcGFuIixyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNvbHNwYW4/LnRkLG4pKX0ke0MoInJvd3NwYW4iLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8ucm93c3Bhbj8udGQsbikpfSBkYXRhLXNsb3Q9InRkIiBjbGFzcz0iJHtSKEIudmFsdWUudGQoe2NsYXNzOltlLnVucmVmKF8pPy50ZCxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50ZCxuKV0scGlubmVkOiEhbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKX0iIHN0eWxlPSIke3koW2dldENvbHVtblN0eWxlcyhuLmNvbHVtbikscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5zdHlsZT8udGQsbildKX0iJHtyfT5gKSxGKHQuJHNsb3RzLGAke24uY29sdW1uLmlkfS1jZWxsYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+e2wodyhlLnVucmVmKE4pLHtyZW5kZXI6bi5jb2x1bW4uY29sdW1uRGVmLmNlbGwscHJvcHM6bi5nZXRDb250ZXh0KCl9LG51bGwsYSxyKSl9LGwsYSxyKSxsKCI8L3RkPiIpfSksbCgiXHgzYyEtLV0tLVx4M2U8L3RyPiIpLG4uZ2V0SXNFeHBhbmRlZCgpPyhsKGA8dHIgZGF0YS1zbG90PSJ0ciIgY2xhc3M9IiR7UihCLnZhbHVlLnRyKHtjbGFzczpbZS51bnJlZihfKT8udHJdfSkpfSIke3J9Pjx0ZCR7QygiY29sc3BhbiIsbi5nZXRBbGxDZWxscygpLmxlbmd0aCl9IGRhdGEtc2xvdD0idGQiIGNsYXNzPSIke1IoQi52YWx1ZS50ZCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRkXX0pKX0iJHtyfT5gKSxGKHQuJHNsb3RzLCJleHBhbmRlZCIse3JvdzpufSxudWxsLGwsYSxyKSxsKCI8L3RkPjwvdHI+IikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sbykpLG4odyhlLnVucmVmKEUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChuLG8sbCxhKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKCJ0YWJsZSIse3JlZl9rZXk6InRhYmxlUmVmIixyZWY6b2UsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkIudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoXyk/LmJhc2VdfSl9LFtoLmNhcHRpb258fFAuY2FwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJjYXB0aW9uIix7a2V5OjAsImRhdGEtc2xvdCI6ImNhcHRpb24iLGNsYXNzOkIudmFsdWUuY2FwdGlvbih7Y2xhc3M6W2UudW5yZWYoXyk/LmNhcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImNhcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaC5jYXB0aW9uKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInRoZWFkIix7ImRhdGEtc2xvdCI6InRoZWFkIixjbGFzczpCLnZhbHVlLnRoZWFkKHtjbGFzczpbZS51bnJlZihfKT8udGhlYWRdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKGxlKS5nZXRIZWFkZXJHcm91cHMoKSxuPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0ciIse2tleTpuLmlkLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6Qi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyXX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qobi5oZWFkZXJzLG49PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRoIix7a2V5Om4uaWQsImRhdGEtcGlubmVkIjpuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpLHNjb3BlOm4uY29sU3Bhbj4xPyJjb2xncm91cCI6ImNvbCIsY29sc3BhbjpuLmNvbFNwYW4+MT9uLmNvbFNwYW46dm9pZCAwLHJvd3NwYW46bi5yb3dTcGFuPjE/bi5yb3dTcGFuOnZvaWQgMCwiZGF0YS1zbG90IjoidGgiLGNsYXNzOkIudmFsdWUudGgoe2NsYXNzOltlLnVucmVmKF8pPy50aCxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxuKV0scGlubmVkOiEhbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pLHN0eWxlOltnZXRDb2x1bW5TdHlsZXMobi5jb2x1bW4pLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uc3R5bGU/LnRoLG4pXX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cyxgJHtuLmlkfS1oZWFkZXJgLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbi5nZXRDb250ZXh0KCkpLCgpPT5bbi5pc1BsYWNlaG9sZGVyP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTikse2tleTowLHJlbmRlcjpuLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLHByb3BzOm4uZ2V0Q29udGV4dCgpfSxudWxsLDgsWyJyZW5kZXIiLCJwcm9wcyJdKSldKV0sMTQsWyJkYXRhLXBpbm5lZCIsInNjb3BlIiwiY29sc3BhbiIsInJvd3NwYW4iXSkpKSwxMjgpKV0sMikpKSwxMjgpKSxlLmNyZWF0ZVZOb2RlKCJ0ciIseyJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOkIudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihfKT8uc2VwYXJhdG9yXX0pfSxudWxsLDIpXSwyKSxlLmNyZWF0ZVZOb2RlKCJ0Ym9keSIseyJkYXRhLXNsb3QiOiJ0Ym9keSIsY2xhc3M6Qi52YWx1ZS50Ym9keSh7Y2xhc3M6W2UudW5yZWYoXyk/LnRib2R5XX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJib2R5LXRvcCIpLGFlLnZhbHVlLmxlbmd0aD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QocmUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCw4LFsicm93Il0pKSksMTI4KSksZS51bnJlZihkZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW2NlLnZhbHVlPjA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygidHIiLHtrZXk6MCxzdHlsZTp7aGVpZ2h0OmAke2NlLnZhbHVlfXB4YH0sImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46ZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGh9LG51bGwsOCxbImNvbHNwYW4iXSldLDQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoZ2UudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6c2UudmFsdWVbdC5pbmRleF0/LmlkPz9gdmlydHVhbC0ke3QuaW5kZXh9YH0sW3NlLnZhbHVlW3QuaW5kZXhdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihHKSx7a2V5OjAscm93OnNlLnZhbHVlW3QuaW5kZXhdLHN0eWxlOntoZWlnaHQ6YCR7dC5zaXplfXB4YH19LG51bGwsOCxbInJvdyIsInN0eWxlIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSkpLDEyOCkpLHBlLnZhbHVlPjA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygidHIiLHtrZXk6MSxzdHlsZTp7aGVpZ2h0OmAke3BlLnZhbHVlfXB4YH0sImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46ZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGh9LG51bGwsOCxbImNvbHNwYW4iXSldLDQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSk6KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3Qoc2UudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCw4LFsicm93Il0pKSksMTI4KSksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoaWUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCw4LFsicm93Il0pKSksMTI4KSldLDY0KSk6aC5sb2FkaW5nJiZQLmxvYWRpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygidHIiLHtrZXk6MX0sW2UuY3JlYXRlVk5vZGUoInRkIix7Y29sc3BhbjplLnVucmVmKGxlKS5nZXRBbGxMZWFmQ29sdW1ucygpLmxlbmd0aCwiZGF0YS1zbG90IjoibG9hZGluZyIsY2xhc3M6Qi52YWx1ZS5sb2FkaW5nKHtjbGFzczplLnVucmVmKF8pPy5sb2FkaW5nfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImxvYWRpbmciKV0sMTAsWyJjb2xzcGFuIl0pXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRyIix7a2V5OjJ9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46ZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgsImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpCLnZhbHVlLmVtcHR5KHtjbGFzczplLnVucmVmKF8pPy5lbXB0eX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbXB0eSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmVtcHR5fHxlLnVucmVmKEkpKCJ0YWJsZS5ub0RhdGEiKSksMSldKV0sMTAsWyJjb2xzcGFuIl0pXSkpLGUucmVuZGVyU2xvdCh0LiRzbG90cywiYm9keS1ib3R0b20iKV0sMiksTC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0Zm9vdCIse2tleToxLCJkYXRhLXNsb3QiOiJ0Zm9vdCIsY2xhc3M6Qi52YWx1ZS50Zm9vdCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRmb290XX0pfSxbZS5jcmVhdGVWTm9kZSgidHIiLHsiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpCLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoXyk/LnNlcGFyYXRvcl19KX0sbnVsbCwyKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKGxlKS5nZXRGb290ZXJHcm91cHMoKSxuPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0ciIse2tleTpuLmlkLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6Qi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyXX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qobi5oZWFkZXJzLG49PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRoIix7a2V5Om4uaWQsImRhdGEtcGlubmVkIjpuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpLGNvbHNwYW46bi5jb2xTcGFuPjE/bi5jb2xTcGFuOnZvaWQgMCxyb3dzcGFuOm4ucm93U3Bhbj4xP24ucm93U3Bhbjp2b2lkIDAsImRhdGEtc2xvdCI6InRoIixjbGFzczpCLnZhbHVlLnRoKHtjbGFzczpbZS51bnJlZihfKT8udGgscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5jbGFzcz8udGgsbildLHBpbm5lZDohIW4uY29sdW1uLmdldElzUGlubmVkKCl9KSxzdHlsZTpbZ2V0Q29sdW1uU3R5bGVzKG4uY29sdW1uKSxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnN0eWxlPy50aCxuKV19LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsYCR7bi5pZH0tZm9vdGVyYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+W24uaXNQbGFjZWhvbGRlcj9lLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE4pLHtrZXk6MCxyZW5kZXI6bi5jb2x1bW4uY29sdW1uRGVmLmZvb3Rlcixwcm9wczpuLmdldENvbnRleHQoKX0sbnVsbCw4LFsicmVuZGVyIiwicHJvcHMiXSkpXSldLDE0LFsiZGF0YS1waW5uZWQiLCJjb2xzcGFuIiwicm93c3BhbiJdKSkpLDEyOCkpXSwyKSkpLDEyOCkpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV07byhgPHRhYmxlIGRhdGEtc2xvdD0iYmFzZSIgY2xhc3M9IiR7UihCLnZhbHVlLmJhc2Uoe2NsYXNzOltlLnVucmVmKF8pPy5iYXNlXX0pKX0iJHthfT5gKSxoLmNhcHRpb258fFAuY2FwdGlvbj8obyhgPGNhcHRpb24gZGF0YS1zbG90PSJjYXB0aW9uIiBjbGFzcz0iJHtSKEIudmFsdWUuY2FwdGlvbih7Y2xhc3M6W2UudW5yZWYoXyk/LmNhcHRpb25dfSkpfSIke2F9PmApLEYodC4kc2xvdHMsImNhcHRpb24iLHt9LCgpPT57byhgJHtNKGguY2FwdGlvbil9YCl9LG8sbCxhKSxvKCI8L2NhcHRpb24+IikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKGA8dGhlYWQgZGF0YS1zbG90PSJ0aGVhZCIgY2xhc3M9IiR7UihCLnZhbHVlLnRoZWFkKHtjbGFzczpbZS51bnJlZihfKT8udGhlYWRdfSkpfSIke2F9Plx4M2MhLS1bLS1ceDNlYCkseChlLnVucmVmKGxlKS5nZXRIZWFkZXJHcm91cHMoKSxuPT57byhgPHRyIGRhdGEtc2xvdD0idHIiIGNsYXNzPSIke1IoQi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyXX0pKX0iJHthfT5ceDNjIS0tWy0tXHgzZWApLHgobi5oZWFkZXJzLG49PntvKGA8dGgke0MoImRhdGEtcGlubmVkIixuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpKX0ke0MoInNjb3BlIixuLmNvbFNwYW4+MT8iY29sZ3JvdXAiOiJjb2wiKX0ke0MoImNvbHNwYW4iLG4uY29sU3Bhbj4xP24uY29sU3Bhbjp2b2lkIDApfSR7Qygicm93c3BhbiIsbi5yb3dTcGFuPjE/bi5yb3dTcGFuOnZvaWQgMCl9IGRhdGEtc2xvdD0idGgiIGNsYXNzPSIke1IoQi52YWx1ZS50aCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRoLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uY2xhc3M/LnRoLG4pXSxwaW5uZWQ6ISFuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpfSkpfSIgc3R5bGU9IiR7eShbZ2V0Q29sdW1uU3R5bGVzKG4uY29sdW1uKSxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnN0eWxlPy50aCxuKV0pfSIke2F9PmApLEYodC4kc2xvdHMsYCR7bi5pZH0taGVhZGVyYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+e24uaXNQbGFjZWhvbGRlcj9vKCJceDNjIS0tLS1ceDNlIik6byh3KGUudW5yZWYoTikse3JlbmRlcjpuLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLHByb3BzOm4uZ2V0Q29udGV4dCgpfSxudWxsLGwsYSkpfSxvLGwsYSksbygiPC90aD4iKX0pLG8oIlx4M2MhLS1dLS1ceDNlPC90cj4iKX0pLG8oYFx4M2MhLS1dLS1ceDNlPHRyIGRhdGEtc2xvdD0ic2VwYXJhdG9yIiBjbGFzcz0iJHtSKEIudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihfKT8uc2VwYXJhdG9yXX0pKX0iJHthfT48L3RyPjwvdGhlYWQ+PHRib2R5IGRhdGEtc2xvdD0idGJvZHkiIGNsYXNzPSIke1IoQi52YWx1ZS50Ym9keSh7Y2xhc3M6W2UudW5yZWYoXyk/LnRib2R5XX0pKX0iJHthfT5gKSxGKHQuJHNsb3RzLCJib2R5LXRvcCIse30sbnVsbCxvLGwsYSksYWUudmFsdWUubGVuZ3RoPyhvKCJceDNjIS0tWy0tXHgzZVx4M2MhLS1bLS1ceDNlIikseChyZS52YWx1ZSx0PT57byh3KGUudW5yZWYoRykse2tleTp0LmlkLHJvdzp0fSxudWxsLGwsYSkpfSksbygiXHgzYyEtLV0tLVx4M2UiKSxlLnVucmVmKGRlKT8obygiXHgzYyEtLVstLVx4M2UiKSxjZS52YWx1ZT4wP28oYDx0ciBzdHlsZT0iJHt5KHtoZWlnaHQ6YCR7Y2UudmFsdWV9cHhgfSl9IiBhcmlhLWhpZGRlbj0idHJ1ZSIke2F9Pjx0ZCR7QygiY29sc3BhbiIsZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgpfSR7YX0+PC90ZD48L3RyPmApOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCJceDNjIS0tWy0tXHgzZSIpLHgoZ2UudmFsdWUsdD0+e28oIlx4M2MhLS1bLS1ceDNlIiksc2UudmFsdWVbdC5pbmRleF0/byh3KGUudW5yZWYoRykse3JvdzpzZS52YWx1ZVt0LmluZGV4XSxzdHlsZTp7aGVpZ2h0OmAke3Quc2l6ZX1weGB9fSxudWxsLGwsYSkpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCJceDNjIS0tXS0tXHgzZSIpfSksbygiXHgzYyEtLV0tLVx4M2UiKSxwZS52YWx1ZT4wP28oYDx0ciBzdHlsZT0iJHt5KHtoZWlnaHQ6YCR7cGUudmFsdWV9cHhgfSl9IiBhcmlhLWhpZGRlbj0idHJ1ZSIke2F9Pjx0ZCR7QygiY29sc3BhbiIsZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgpfSR7YX0+PC90ZD48L3RyPmApOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCJceDNjIS0tXS0tXHgzZSIpKToobygiXHgzYyEtLVstLVx4M2UiKSx4KHNlLnZhbHVlLHQ9PntvKHcoZS51bnJlZihHKSx7a2V5OnQuaWQscm93OnR9LG51bGwsbCxhKSl9KSxvKCJceDNjIS0tXS0tXHgzZSIpKSxvKCJceDNjIS0tWy0tXHgzZSIpLHgoaWUudmFsdWUsdD0+e28odyhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCxsLGEpKX0pLG8oIlx4M2MhLS1dLS1ceDNlXHgzYyEtLV0tLVx4M2UiKSk6aC5sb2FkaW5nJiZQLmxvYWRpbmc/KG8oYDx0ciR7YX0+PHRkJHtDKCJjb2xzcGFuIixlLnVucmVmKGxlKS5nZXRBbGxMZWFmQ29sdW1ucygpLmxlbmd0aCl9IGRhdGEtc2xvdD0ibG9hZGluZyIgY2xhc3M9IiR7UihCLnZhbHVlLmxvYWRpbmcoe2NsYXNzOmUudW5yZWYoXyk/LmxvYWRpbmd9KSl9IiR7YX0+YCksRih0LiRzbG90cywibG9hZGluZyIse30sbnVsbCxvLGwsYSksbygiPC90ZD48L3RyPiIpKToobyhgPHRyJHthfT48dGQke0MoImNvbHNwYW4iLGUudW5yZWYobGUpLmdldEFsbExlYWZDb2x1bW5zKCkubGVuZ3RoKX0gZGF0YS1zbG90PSJlbXB0eSIgY2xhc3M9IiR7UihCLnZhbHVlLmVtcHR5KHtjbGFzczplLnVucmVmKF8pPy5lbXB0eX0pKX0iJHthfT5gKSxGKHQuJHNsb3RzLCJlbXB0eSIse30sKCk9PntvKGAke00oaC5lbXB0eXx8ZS51bnJlZihJKSgidGFibGUubm9EYXRhIikpfWApfSxvLGwsYSksbygiPC90ZD48L3RyPiIpKSxGKHQuJHNsb3RzLCJib2R5LWJvdHRvbSIse30sbnVsbCxvLGwsYSksbygiPC90Ym9keT4iKSxMLnZhbHVlPyhvKGA8dGZvb3QgZGF0YS1zbG90PSJ0Zm9vdCIgY2xhc3M9IiR7UihCLnZhbHVlLnRmb290KHtjbGFzczpbZS51bnJlZihfKT8udGZvb3RdfSkpfSIke2F9Pjx0ciBkYXRhLXNsb3Q9InNlcGFyYXRvciIgY2xhc3M9IiR7UihCLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoXyk/LnNlcGFyYXRvcl19KSl9IiR7YX0+PC90cj5ceDNjIS0tWy0tXHgzZWApLHgoZS51bnJlZihsZSkuZ2V0Rm9vdGVyR3JvdXBzKCksbj0+e28oYDx0ciBkYXRhLXNsb3Q9InRyIiBjbGFzcz0iJHtSKEIudmFsdWUudHIoe2NsYXNzOltlLnVucmVmKF8pPy50cl19KSl9IiR7YX0+XHgzYyEtLVstLVx4M2VgKSx4KG4uaGVhZGVycyxuPT57byhgPHRoJHtDKCJkYXRhLXBpbm5lZCIsbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKSl9JHtDKCJjb2xzcGFuIixuLmNvbFNwYW4+MT9uLmNvbFNwYW46dm9pZCAwKX0ke0MoInJvd3NwYW4iLG4ucm93U3Bhbj4xP24ucm93U3Bhbjp2b2lkIDApfSBkYXRhLXNsb3Q9InRoIiBjbGFzcz0iJHtSKEIudmFsdWUudGgoe2NsYXNzOltlLnVucmVmKF8pPy50aCxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxuKV0scGlubmVkOiEhbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKX0iIHN0eWxlPSIke3koW2dldENvbHVtblN0eWxlcyhuLmNvbHVtbikscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5zdHlsZT8udGgsbildKX0iJHthfT5gKSxGKHQuJHNsb3RzLGAke24uaWR9LWZvb3RlcmAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLmdldENvbnRleHQoKSksKCk9PntuLmlzUGxhY2Vob2xkZXI/bygiXHgzYyEtLS0tXHgzZSIpOm8odyhlLnVucmVmKE4pLHtyZW5kZXI6bi5jb2x1bW4uY29sdW1uRGVmLmZvb3Rlcixwcm9wczpuLmdldENvbnRleHQoKX0sbnVsbCxsLGEpKX0sbyxsLGEpLG8oIjwvdGg+Iil9KSxvKCJceDNjIS0tXS0tXHgzZTwvdHI+Iil9KSxvKCJceDNjIS0tXS0tXHgzZTwvdGZvb3Q+IikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCI8L3RhYmxlPiIpfSksXzozfSxvKSksbih3KGUudW5yZWYodSksZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJyb290UmVmIixyZWY6bmUsYXM6aC5hc30sdC4kYXR0cnMseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczpCLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKF8pPy5yb290LGIuY2xhc3NdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbixvLGwpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldO24odyhlLnVucmVmKEQpLG51bGwsbnVsbCxvLGwpKX0pLF86MX0sbykpLG4oIlx4M2MhLS1dLS1ceDNlIil9fX0pLFc9Sy5zZXR1cDtLLnNldHVwPSh0LG4pPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvVGFibGUudnVlIiksVz9XKHQsbik6dm9pZCAwfTtleHBvcnR7SyBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGUtMFVSbkM4T0gubWpzLm1hcAo=", "chunks/build/Textarea-BytpaMVH.mjs": "aW1wb3J0e3YgYXMgZSxTIGFzIGEsZCBhcyBpLGUgYXMgbixIIGFzIGwscyBhcyByLHQgYXMgcyxiIGFzIHQsZyBhcyBvLFAgYXMgdSxSIGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGcsbyBhcyBjLHEgYXMgcCxnIGFzIGYsaiBhcyB2fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgbT17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsYmFzZTpbInctZnVsbCByb3VuZGVkLW1kIGJvcmRlci0wIGFwcGVhcmFuY2Utbm9uZSBwbGFjZWhvbGRlcjp0ZXh0LWRpbW1lZCBmb2N1czpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxlYWRpbmc6ImFic29sdXRlIHN0YXJ0LTAgZmxleCBpdGVtcy1zdGFydCIsbGVhZGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmc6ImFic29sdXRlIGVuZC0wIGZsZXggaXRlbXMtc3RhcnQiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtZS1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC1zLW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9LHZlcnRpY2FsOntyb290OiJncm91cCBoYXMtZm9jdXMtdmlzaWJsZTp6LVsxXSIsYmFzZToiZ3JvdXAtbm90LW9ubHk6Z3JvdXAtZmlyc3Q6cm91bmRlZC1iLW5vbmUgZ3JvdXAtbm90LW9ubHk6Z3JvdXAtbGFzdDpyb3VuZGVkLXQtbm9uZSBncm91cC1ub3QtbGFzdDpncm91cC1ub3QtZmlyc3Q6cm91bmRlZC1ub25lIn19LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC1zbS80IGdhcC0xIixsZWFkaW5nOiJwcy0yIGluc2V0LXktMSIsdHJhaWxpbmc6InBlLTIgaW5zZXQteS0xIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LHNtOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtc20vNCBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUgaW5zZXQteS0xLjUiLHRyYWlsaW5nOiJwZS0yLjUgaW5zZXQteS0xLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1iYXNlLzUgZ2FwLTEuNSIsbGVhZGluZzoicHMtMi41IGluc2V0LXktMS41Iix0cmFpbGluZzoicGUtMi41IGluc2V0LXktMS41IixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSJ9LGxnOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlLzUgZ2FwLTIiLGxlYWRpbmc6InBzLTMgaW5zZXQteS0yIix0cmFpbGluZzoicGUtMyBpbnNldC15LTIiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMgaW5zZXQteS0yIix0cmFpbGluZzoicGUtMyBpbnNldC15LTIiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9LGF1dG9yZXNpemU6e3RydWU6e2Jhc2U6InJlc2l6ZS1ub25lIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW52ZXJ0ZWQifSx7bGVhZGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBzLTcifSx7bGVhZGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBzLTgifSx7bGVhZGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBzLTkifSx7bGVhZGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBzLTEwIn0se2xlYWRpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwcy0xMSJ9LHt0cmFpbGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBlLTcifSx7dHJhaWxpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwZS04In0se3RyYWlsaW5nOiEwLHNpemU6Im1kIixjbGFzczoicGUtOSJ9LHt0cmFpbGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBlLTEwIn0se3RyYWlsaW5nOiEwLHNpemU6InhsIixjbGFzczoicGUtMTEifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtmaXhlZDohMSxzaXplOiJ4cyIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToic20iLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6Im1kIixjbGFzczoibWQ6dGV4dC1zbSJ9LHtmaXhlZDohMSxzaXplOiJsZyIsY2xhc3M6Im1kOnRleHQtc20ifV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCIsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUifX0sYj1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVUZXh0YXJlYSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXNEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfSxhdXRvcmVzaXplOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9yZXNpemVEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyb3dzOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjN9LG1heHJvd3M6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZpeGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsTW9kaWZpZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwiYmx1ciIsImNoYW5nZSJdLHNldHVwKGIse2V4cG9zZTp4LGVtaXQ6eX0pe2NvbnN0IGg9Yix6PXksST1lLnVzZVNsb3RzKCkscT1hKGgsIm1vZGVsVmFsdWUiLHose2RlZmF1bHRWYWx1ZTpoLmRlZmF1bHRWYWx1ZX0pLHc9aSgpLEI9bigidGV4dGFyZWEiLGgpLHtlbWl0Rm9ybUZvY3VzOmssZW1pdEZvcm1CbHVyOlMsZW1pdEZvcm1JbnB1dDpBLGVtaXRGb3JtQ2hhbmdlOiQsc2l6ZTpOLGNvbG9yOlYsaWQ6UixuYW1lOkMsaGlnaGxpZ2h0Ol8sZGlzYWJsZWQ6TSxhcmlhQXR0cnM6Rn09bChoLHtkZWZlcklucHV0VmFsaWRhdGlvbjohMH0pLHtpc0xlYWRpbmc6aixpc1RyYWlsaW5nOlAsbGVhZGluZ0ljb25OYW1lOlQsdHJhaWxpbmdJY29uTmFtZTpIfT1yKGgpLE89ZS5jb21wdXRlZCgoKT0+cyh7ZXh0ZW5kOnMobSksLi4udy51aT8udGV4dGFyZWF8fHt9fSkoe2NvbG9yOlYudmFsdWUsdmFyaWFudDpoLnZhcmlhbnQsc2l6ZTpOPy52YWx1ZSxsb2FkaW5nOmgubG9hZGluZyxoaWdobGlnaHQ6Xy52YWx1ZSxmaXhlZDpoLmZpeGVkLGF1dG9yZXNpemU6aC5hdXRvcmVzaXplLGxlYWRpbmc6ai52YWx1ZXx8ISFoLmF2YXRhcnx8ISFJLmxlYWRpbmcsdHJhaWxpbmc6UC52YWx1ZXx8ISFJLnRyYWlsaW5nfSkpLEQ9ZS51c2VUZW1wbGF0ZVJlZigidGV4dGFyZWFSZWYiKTtmdW5jdGlvbiB1cGRhdGVJbnB1dChlKXshaC5tb2RlbE1vZGlmaWVycz8udHJpbXx8InN0cmluZyIhPXR5cGVvZiBlJiZudWxsIT1lfHwoZT1lPy50cmltKCk/P251bGwpLGgubW9kZWxNb2RpZmllcnM/Lm51bWJlciYmKGU9ZChlKSksaC5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJihlfHw9bnVsbCksaC5tb2RlbE1vZGlmaWVycz8ub3B0aW9uYWwmJiFoLm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmbnVsbCE9PWUmJihlfHw9dm9pZCAwKSxxLnZhbHVlPWUsQSgpfWZ1bmN0aW9uIG9uSW5wdXQoZSl7YXV0b1Jlc2l6ZSgpLGgubW9kZWxNb2RpZmllcnM/Lmxhenl8fHVwZGF0ZUlucHV0KGUudGFyZ2V0LnZhbHVlKX1mdW5jdGlvbiBvbkNoYW5nZShlKXtjb25zdCBhPWUudGFyZ2V0LnZhbHVlO2gubW9kZWxNb2RpZmllcnM/LmxhenkmJnVwZGF0ZUlucHV0KGEpLGgubW9kZWxNb2RpZmllcnM/LnRyaW0mJihlLnRhcmdldC52YWx1ZT1hLnRyaW0oKSksJCgpLHooImNoYW5nZSIsZSl9ZnVuY3Rpb24gb25CbHVyKGUpe1MoKSx6KCJibHVyIixlKX1mdW5jdGlvbiBhdXRvUmVzaXplKCl7aWYoaC5hdXRvcmVzaXplJiZELnZhbHVlKXtELnZhbHVlLnJvd3M9aC5yb3dzO2NvbnN0IGU9RC52YWx1ZS5zdHlsZS5vdmVyZmxvdztELnZhbHVlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2NvbnN0IGE9KHZvaWQgMCkuZ2V0Q29tcHV0ZWRTdHlsZShELnZhbHVlKSxpPU51bWJlci5wYXJzZUludChhLnBhZGRpbmdUb3ApK051bWJlci5wYXJzZUludChhLnBhZGRpbmdCb3R0b20pLG49TnVtYmVyLnBhcnNlSW50KGEubGluZUhlaWdodCkse3Njcm9sbEhlaWdodDpsfT1ELnZhbHVlLHI9KGwtaSkvbjtyPmgucm93cyYmKEQudmFsdWUucm93cz1oLm1heHJvd3M/TWF0aC5taW4ocixoLm1heHJvd3MpOnIpLEQudmFsdWUuc3R5bGUub3ZlcmZsb3c9ZX19cmV0dXJuIGUud2F0Y2gocSwoKT0+e2UubmV4dFRpY2soYXV0b1Jlc2l6ZSl9KSx4KHt0ZXh0YXJlYVJlZjpELGF1dG9SZXNpemU6YXV0b1Jlc2l6ZX0pLChhLGksbixsKT0+e2xldCByO2koZyhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyh7YXM6Yi5hcywiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Ty52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZihCKT8ucm9vdCxoLmNsYXNzXX0pfSxsKSx7ZGVmYXVsdDplLndpdGhDdHgoKGksbixsLHMpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoInRleHRhcmVhIixlLm1lcmdlUHJvcHMoe2lkOmUudW5yZWYoUikscmVmX2tleToidGV4dGFyZWFSZWYiLHJlZjpELHZhbHVlOmUudW5yZWYocSksbmFtZTplLnVucmVmKEMpLHJvd3M6Yi5yb3dzLHBsYWNlaG9sZGVyOmIucGxhY2Vob2xkZXIsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOk8udmFsdWUuYmFzZSh7Y2xhc3M6ZS51bnJlZihCKT8uYmFzZX0pLGRpc2FibGVkOmUudW5yZWYoTSkscmVxdWlyZWQ6Yi5yZXF1aXJlZH0sey4uLmEuJGF0dHJzLC4uLmUudW5yZWYoRil9LHtvbklucHV0Om9uSW5wdXQsb25CbHVyOm9uQmx1cixvbkNoYW5nZTpvbkNoYW5nZSxvbkZvY3VzOmUudW5yZWYoayl9KSxudWxsLDE2LFsiaWQiLCJ2YWx1ZSIsIm5hbWUiLCJyb3dzIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwib25Gb2N1cyJdKSxlLnJlbmRlclNsb3QoYS4kc2xvdHMsImRlZmF1bHQiLHt1aTpPLnZhbHVlfSksZS51bnJlZihqKXx8Yi5hdmF0YXJ8fEkubGVhZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOk8udmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJsZWFkaW5nIix7dWk6Ty52YWx1ZX0sKCk9PltlLnVucmVmKGopJiZlLnVucmVmKFQpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodCx7a2V5OjAsbmFtZTplLnVucmVmKFQpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6Ty52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpiLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKG8sZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmUudW5yZWYoQik/LmxlYWRpbmdBdmF0YXJTaXplfHxPLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LGIuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6Ty52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczplLnVucmVmKEIpPy5sZWFkaW5nQXZhdGFyfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnVucmVmKFApfHxJLnRyYWlsaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOk8udmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoQik/LnRyYWlsaW5nfSl9LFtlLnJlbmRlclNsb3QoYS4kc2xvdHMsInRyYWlsaW5nIix7dWk6Ty52YWx1ZX0sKCk9PltlLnVucmVmKEgpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodCx7a2V5OjAsbmFtZTplLnVucmVmKEgpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOk8udmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEIpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07bihgPHRleHRhcmVhJHtjKHI9ZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKFIpLHJlZl9rZXk6InRleHRhcmVhUmVmIixyZWY6RCx2YWx1ZTplLnVucmVmKHEpLG5hbWU6ZS51bnJlZihDKSxyb3dzOmIucm93cyxwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpPLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoQik/LmJhc2V9KSxkaXNhYmxlZDplLnVucmVmKE0pLHJlcXVpcmVkOmIucmVxdWlyZWR9LHsuLi5hLiRhdHRycywuLi5lLnVucmVmKEYpfSksInRleHRhcmVhIil9JHtzfT4ke3AoInZhbHVlImluIHI/ci52YWx1ZToiIil9PC90ZXh0YXJlYT5gKSxmKGEuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Ty52YWx1ZX0sbnVsbCxuLGwscyksZS51bnJlZihqKXx8Yi5hdmF0YXJ8fEkubGVhZGluZz8obihgPHNwYW4gZGF0YS1zbG90PSJsZWFkaW5nIiBjbGFzcz0iJHt2KE8udmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ30pKX0iJHtzfT5gKSxmKGEuJHNsb3RzLCJsZWFkaW5nIix7dWk6Ty52YWx1ZX0sKCk9PntlLnVucmVmKGopJiZlLnVucmVmKFQpP24oZyh0LHtuYW1lOmUudW5yZWYoVCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpPLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEIpPy5sZWFkaW5nSWNvbn0pfSxudWxsLGwscykpOmIuYXZhdGFyP24oZyhvLGUubWVyZ2VQcm9wcyh7c2l6ZTplLnVucmVmKEIpPy5sZWFkaW5nQXZhdGFyU2l6ZXx8Ty52YWx1ZS5sZWFkaW5nQXZhdGFyU2l6ZSgpfSxiLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxlYWRpbmdBdmF0YXIiLGNsYXNzOk8udmFsdWUubGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ0F2YXRhcn0pfSksbnVsbCxsLHMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4sbCxzKSxuKCI8L3NwYW4+IikpOm4oIlx4M2MhLS0tLVx4M2UiKSxlLnVucmVmKFApfHxJLnRyYWlsaW5nPyhuKGA8c3BhbiBkYXRhLXNsb3Q9InRyYWlsaW5nIiBjbGFzcz0iJHt2KE8udmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoQik/LnRyYWlsaW5nfSkpfSIke3N9PmApLGYoYS4kc2xvdHMsInRyYWlsaW5nIix7dWk6Ty52YWx1ZX0sKCk9PntlLnVucmVmKEgpP24oZyh0LHtuYW1lOmUudW5yZWYoSCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6Ty52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOmUudW5yZWYoQik/LnRyYWlsaW5nSWNvbn0pfSxudWxsLGwscykpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixsLHMpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpfSksXzozfSxuKSl9fX0pLHg9Yi5zZXR1cDtiLnNldHVwPShhLGkpPT57Y29uc3Qgbj1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvVGV4dGFyZWEudnVlIikseD94KGEsaSk6dm9pZCAwfTtleHBvcnR7YiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dGFyZWEtQnl0cGFNVkgubWpzLm1hcAo=", "chunks/build/Tooltip-BP8zb8DK.mjs": "aW1wb3J0e2FFIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt2IGFzIHQsZCBhcyByLGUgYXMgbyxhcyBhcyBhLEUgYXMgbixGIGFzIGwsRyBhcyBzLHQgYXMgaSxKIGFzIGQsTSBhcyB1LFAgYXMgYyxUIGFzIHAsUSBhcyBmLFMgYXMgZyxhdCBhcyBtLG0gYXMgeSxZIGFzIHYsbCBhcyBrfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7UCBhcyBiLGEgYXMgaCxiIGFzIEIsZCBhcyBDfWZyb20iLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydHt1IGFzIHEsRCBhcyB4fWZyb20iLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydHtfIGFzIHcsYSBhcyBTfWZyb20iLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnR7ZiBhcyBfLGcgYXMgUCxqIGFzIE4scSBhcyBULHQgYXMgT31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO3ZhciBEPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlRvb2x0aXBBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdCByPWU7cmV0dXJuIHUoKSwoZSxvKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKGgpLHQubm9ybWFsaXplUHJvcHModC5ndWFyZFJlYWN0aXZlUHJvcHMocikpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0W1YsJF09eSgiVG9vbHRpcFJvb3QiKTt2YXIgej10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJUb29sdGlwUm9vdCIscHJvcHM6e2RlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChlLHtlbWl0OnJ9KXtjb25zdCBvPWUsbj1yO3UoKTtjb25zdCBsPWEoKSxzPXQuY29tcHV0ZWQoKCk9Pm8uZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ/P2wuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQudmFsdWUpLGk9dC5jb21wdXRlZCgoKT0+by5kaXNhYmxlQ2xvc2luZ1RyaWdnZXI/P2wuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlKSxkPXQuY29tcHV0ZWQoKCk9Pm8uZGlzYWJsZWQ/P2wuZGlzYWJsZWQudmFsdWUpLGM9dC5jb21wdXRlZCgoKT0+by5kZWxheUR1cmF0aW9uPz9sLmRlbGF5RHVyYXRpb24udmFsdWUpLHA9dC5jb21wdXRlZCgoKT0+by5pZ25vcmVOb25LZXlib2FyZEZvY3VzPz9sLmlnbm9yZU5vbktleWJvYXJkRm9jdXMudmFsdWUpLGY9ZyhvLCJvcGVuIixuLHtkZWZhdWx0VmFsdWU6by5kZWZhdWx0T3BlbixwYXNzaXZlOnZvaWQgMD09PW8ub3Blbn0pO3Qud2F0Y2goZixlPT57bC5vbkNsb3NlJiYoZT8obC5vbk9wZW4oKSwodm9pZCAwKS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidG9vbHRpcC5vcGVuIikpKTpsLm9uQ2xvc2UoKSl9KTtjb25zdCB5PXQucmVmKCExKSx2PXQucmVmKCksaz10LmNvbXB1dGVkKCgpPT5mLnZhbHVlP3kudmFsdWU/ImRlbGF5ZWQtb3BlbiI6Imluc3RhbnQtb3BlbiI6ImNsb3NlZCIpLHtzdGFydDpiLHN0b3A6aH09bSgoKT0+e3kudmFsdWU9ITAsZi52YWx1ZT0hMH0sYyx7aW1tZWRpYXRlOiExfSk7ZnVuY3Rpb24gaGFuZGxlT3Blbigpe2goKSx5LnZhbHVlPSExLGYudmFsdWU9ITB9ZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKXtoKCksZi52YWx1ZT0hMX1yZXR1cm4gJCh7Y29udGVudElkOiIiLG9wZW46ZixzdGF0ZUF0dHJpYnV0ZTprLHRyaWdnZXI6dixvblRyaWdnZXJDaGFuZ2UoZSl7di52YWx1ZT1lfSxvblRyaWdnZXJFbnRlcigpe2wuaXNPcGVuRGVsYXllZC52YWx1ZT9iKCk6aGFuZGxlT3BlbigpfSxvblRyaWdnZXJMZWF2ZSgpe3MudmFsdWU/aGFuZGxlQ2xvc2UoKTpoKCl9LG9uT3BlbjpoYW5kbGVPcGVuLG9uQ2xvc2U6aGFuZGxlQ2xvc2UsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6cyxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6aSxkaXNhYmxlZDpkLGlnbm9yZU5vbktleWJvYXJkRm9jdXM6cH0pLChlLHIpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoQiksbnVsbCx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnQudW5yZWYoZil9KV0pLF86M30pKX19KSxSPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlRvb2x0aXBDb250ZW50SW1wbCIscHJvcHM6e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3Qgbj1yLGw9byxzPVYoKSxpPWEoKSx7Zm9yd2FyZFJlZjpkLGN1cnJlbnRFbGVtZW50OmN9PXUoKSxwPXQuY29tcHV0ZWQoKCk9Pm4uYXJpYUxhYmVsfHxjLnZhbHVlPy50ZXh0Q29udGVudCksZj10LmNvbXB1dGVkKCgpPT57Y29uc3R7YXJpYUxhYmVsOnQsLi4ucn09bjtyZXR1cm4gZShyLGkuY29udGVudC52YWx1ZT8/e30se3NpZGU6InRvcCIsc2lkZU9mZnNldDowLGFsaWduOiJjZW50ZXIiLGF2b2lkQ29sbGlzaW9uczohMCxjb2xsaXNpb25Cb3VuZGFyeTpbXSxjb2xsaXNpb25QYWRkaW5nOjAsYXJyb3dQYWRkaW5nOjAsc3RpY2t5OiJwYXJ0aWFsIixoaWRlV2hlbkRldGFjaGVkOiExfSl9KTtyZXR1cm4oZSxyKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKHgpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uRXNjYXBlS2V5RG93bjpyWzBdfHwoclswXT1lPT5sKCJlc2NhcGVLZXlEb3duIixlKSksb25Qb2ludGVyRG93bk91dHNpZGU6clsxXXx8KHJbMV09ZT0+e3QudW5yZWYocykuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlJiZ0LnVucmVmKHMpLnRyaWdnZXIudmFsdWU/LmNvbnRhaW5zKGUudGFyZ2V0KSYmZS5wcmV2ZW50RGVmYXVsdCgpLGwoInBvaW50ZXJEb3duT3V0c2lkZSIsZSl9KSxvbkZvY3VzT3V0c2lkZTpyWzJdfHwoclsyXT10LndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25EaXNtaXNzOnJbM118fChyWzNdPWU9PnQudW5yZWYocykub25DbG9zZSgpKX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKEMpLHQubWVyZ2VQcm9wcyh7cmVmOnQudW5yZWYoZCksImRhdGEtc3RhdGUiOnQudW5yZWYocykuc3RhdGVBdHRyaWJ1dGUudmFsdWV9LHsuLi5lLiRhdHRycywuLi5mLnZhbHVlfSx7c3R5bGU6eyItLXJla2EtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4iOiJ2YXIoLS1yZWthLXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKSIsIi0tcmVrYS10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmVrYS10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLXRvb2x0aXAtdHJpZ2dlci13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCkiLCItLXJla2EtdG9vbHRpcC10cmlnZ2VyLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn19KSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKSx0LmNyZWF0ZVZOb2RlKHQudW5yZWYodikse2lkOnQudW5yZWYocykuY29udGVudElkLHJvbGU6InRvb2x0aXAifSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyhwLnZhbHVlKSwxKV0pLF86MX0sOCxbImlkIl0pXSksXzozfSwxNixbImRhdGEtc3RhdGUiXSldKSxfOjN9KSl9fSksRj10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJUb29sdGlwQ29udGVudEhvdmVyYWJsZSIscHJvcHM6e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3Qgcj1rKGUpLHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6bn09dSgpLHt0cmlnZ2VyOmwsb25DbG9zZTpzfT1WKCksaT1hKCkse2lzUG9pbnRlckluVHJhbnNpdDpkLG9uUG9pbnRlckV4aXQ6Y309UyhsLG4pO3JldHVybiBpLmlzUG9pbnRlckluVHJhbnNpdFJlZj1kLGMoKCk9PntzKCl9KSwoZSxhKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayhSLHQubWVyZ2VQcm9wcyh7cmVmOnQudW5yZWYobyl9LHQudW5yZWYocikpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGo9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9vbHRpcENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIl0sc2V0dXAoZSx7ZW1pdDpyfSl7Y29uc3Qgbz1lLGE9cixsPVYoKSxzPW4obyxhKSx7Zm9yd2FyZFJlZjppfT11KCk7cmV0dXJuKGUscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihmKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHQudW5yZWYobCkub3Blbi52YWx1ZX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bKHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnJlc29sdmVEeW5hbWljQ29tcG9uZW50KHQudW5yZWYobCkuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQudmFsdWU/UjpGKSx0Lm1lcmdlUHJvcHMoe3JlZjp0LnVucmVmKGkpfSx0LnVucmVmKHMpKSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEw9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9vbHRpcFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHI9ZTtyZXR1cm4oZSxvKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKHApLHQubm9ybWFsaXplUHJvcHModC5ndWFyZFJlYWN0aXZlUHJvcHMocikpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEs9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9vbHRpcFRyaWdnZXIiLHByb3BzOntyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChlKXtjb25zdCByPWUsbz1WKCksbj1hKCk7by5jb250ZW50SWR8fD1xKHZvaWQgMCwicmVrYS10b29sdGlwLWNvbnRlbnQiKTtjb25zdHtmb3J3YXJkUmVmOmx9PXUoKSxzPXQucmVmKCExKSxpPXQucmVmKCExKSxkPXQuY29tcHV0ZWQoKCk9Pm8uZGlzYWJsZWQudmFsdWU/e306e2NsaWNrOmhhbmRsZUNsaWNrLGZvY3VzOmhhbmRsZUZvY3VzLHBvaW50ZXJtb3ZlOmhhbmRsZVBvaW50ZXJNb3ZlLHBvaW50ZXJsZWF2ZTpoYW5kbGVQb2ludGVyTGVhdmUscG9pbnRlcmRvd246aGFuZGxlUG9pbnRlckRvd24sYmx1cjpoYW5kbGVCbHVyfSk7ZnVuY3Rpb24gaGFuZGxlUG9pbnRlclVwKCl7c2V0VGltZW91dCgoKT0+e3MudmFsdWU9ITF9LDEpfWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJEb3duKCl7by5vcGVuJiYhby5kaXNhYmxlQ2xvc2luZ1RyaWdnZXIudmFsdWUmJm8ub25DbG9zZSgpLHMudmFsdWU9ITAsKHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixoYW5kbGVQb2ludGVyVXAse29uY2U6ITB9KX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyTW92ZShlKXsidG91Y2giIT09ZS5wb2ludGVyVHlwZSYmKGkudmFsdWV8fG4uaXNQb2ludGVySW5UcmFuc2l0UmVmLnZhbHVlfHwoby5vblRyaWdnZXJFbnRlcigpLGkudmFsdWU9ITApKX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyTGVhdmUoKXtvLm9uVHJpZ2dlckxlYXZlKCksaS52YWx1ZT0hMX1mdW5jdGlvbiBoYW5kbGVGb2N1cyhlKXtzLnZhbHVlfHxvLmlnbm9yZU5vbktleWJvYXJkRm9jdXMudmFsdWUmJiFlLnRhcmdldC5tYXRjaGVzPy4oIjpmb2N1cy12aXNpYmxlIil8fG8ub25PcGVuKCl9ZnVuY3Rpb24gaGFuZGxlQmx1cigpe28ub25DbG9zZSgpfWZ1bmN0aW9uIGhhbmRsZUNsaWNrKCl7by5kaXNhYmxlQ2xvc2luZ1RyaWdnZXIudmFsdWV8fG8ub25DbG9zZSgpfXJldHVybihlLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoYikseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOmUucmVmZXJlbmNlfSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoYyksdC5tZXJnZVByb3BzKHtyZWY6dC51bnJlZihsKSwiYXJpYS1kZXNjcmliZWRieSI6dC51bnJlZihvKS5vcGVuLnZhbHVlP3QudW5yZWYobykuY29udGVudElkOnZvaWQgMCwiZGF0YS1zdGF0ZSI6dC51bnJlZihvKS5zdGF0ZUF0dHJpYnV0ZS52YWx1ZSxhczplLmFzLCJhcy1jaGlsZCI6ci5hc0NoaWxkLCJkYXRhLWdyYWNlLWFyZWEtdHJpZ2dlciI6IiJ9LHQudG9IYW5kbGVycyhkLnZhbHVlKSkse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1kZXNjcmliZWRieSIsImRhdGEtc3RhdGUiLCJhcyIsImFzLWNoaWxkIl0pXSksXzozfSw4LFsicmVmZXJlbmNlIl0pKX19KTtjb25zdCBFPXtzbG90czp7Y29udGVudDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgYmctZGVmYXVsdCB0ZXh0LWhpZ2hsaWdodGVkIHNoYWRvdy1zbSByb3VuZGVkLXNtIHJpbmcgcmluZy1kZWZhdWx0IGgtNiBweC0yLjUgcHktMSB0ZXh0LXhzIHNlbGVjdC1ub25lIGRhdGEtW3N0YXRlPWRlbGF5ZWQtb3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIG9yaWdpbi0oLS1yZWthLXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSBwb2ludGVyLWV2ZW50cy1hdXRvIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsdGV4dDoidHJ1bmNhdGUiLGtiZHM6ImhpZGRlbiBsZzppbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTAuNSBub3QtZmlyc3Qtb2YtdHlwZTpiZWZvcmU6Y29udGVudC1bJ8K3J10gbm90LWZpcnN0LW9mLXR5cGU6YmVmb3JlOm1lLTAuNSIsa2Jkc1NpemU6InNtIn19LEk9e19fbmFtZToiVVRvb2x0aXAiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnt0ZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sa2Jkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxkaXNhYmxlSG92ZXJhYmxlQ29udGVudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saWdub3JlTm9uS2V5Ym9hcmRGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKHUse2VtaXQ6Y30pe2NvbnN0IHA9dSxmPWMsZz10LnVzZVNsb3RzKCksbT1yKCkseT1vKCJ0b29sdGlwIixwKSx2PWEoKSxrPW4obChwLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJkZWxheUR1cmF0aW9uIiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQiLCJkaXNhYmxlQ2xvc2luZ1RyaWdnZXIiLCJpZ25vcmVOb25LZXlib2FyZEZvY3VzIiksZiksYj1zKHQudG9SZWYoKCk9PnAucG9ydGFsKSksaD10LnRvUmVmKCgpPT5lKHAuY29udGVudCx2LmNvbnRlbnQudmFsdWUse3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDo4LGNvbGxpc2lvblBhZGRpbmc6OH0pKSxCPXQudG9SZWYoKCk9PmUocC5hcnJvdyx7cm91bmRlZDohMH0pKSxDPXQuY29tcHV0ZWQoKCk9Pmkoe2V4dGVuZDppKEUpLC4uLm0udWk/LnRvb2x0aXB8fHt9fSkoe3NpZGU6aC52YWx1ZS5zaWRlfSkpO3JldHVybihlLHIsbyxhKT0+e3IoXyh0LnVucmVmKHopLHQubWVyZ2VQcm9wcyh0LnVucmVmKGspLHtkaXNhYmxlZDohKHUudGV4dHx8dS5rYmRzPy5sZW5ndGh8fGcuY29udGVudCl8fHAuZGlzYWJsZWR9LGEpLHtkZWZhdWx0OnQud2l0aEN0eCgoe29wZW46cn0sbyxhLG4pPT57aWYoIW8pcmV0dXJuW2cuZGVmYXVsdHx8dS5yZWZlcmVuY2U/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKEspLHQubWVyZ2VQcm9wcyh7a2V5OjB9LGUuJGF0dHJzLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTp1LnJlZmVyZW5jZSxjbGFzczpwLmNsYXNzfSkse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyfSldKSxfOjJ9LDEwNDAsWyJyZWZlcmVuY2UiLCJjbGFzcyJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuY3JlYXRlVk5vZGUodC51bnJlZihMKSx0LnVucmVmKGIpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihkKSxudWxsLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx0Lm1lcmdlUHJvcHMoaC52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkMudmFsdWUuY29udGVudCh7Y2xhc3M6WyFnLmRlZmF1bHQmJnAuY2xhc3MsdC51bnJlZih5KT8uY29udGVudF19KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudCIse3VpOkMudmFsdWV9LCgpPT5bdS50ZXh0Pyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoidGV4dCIsY2xhc3M6Qy52YWx1ZS50ZXh0KHtjbGFzczp0LnVucmVmKHkpPy50ZXh0fSl9LHQudG9EaXNwbGF5U3RyaW5nKHUudGV4dCksMykpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx1LmtiZHM/Lmxlbmd0aD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6ImtiZHMiLGNsYXNzOkMudmFsdWUua2Jkcyh7Y2xhc3M6dC51bnJlZih5KT8ua2Jkc30pfSxbKHQub3BlbkJsb2NrKCEwKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQsbnVsbCx0LnJlbmRlckxpc3QodS5rYmRzLChlLHIpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHcsdC5tZXJnZVByb3BzKHtrZXk6cixzaXplOnQudW5yZWYoeSk/LmtiZHNTaXplfHxDLnZhbHVlLmtiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIGU/e3ZhbHVlOmV9OmUpLG51bGwsMTYsWyJzaXplIl0pKSksMTI4KSldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSx1LmFycm93Pyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihEKSx0Lm1lcmdlUHJvcHMoe2tleTowfSxCLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkMudmFsdWUuYXJyb3coe2NsYXNzOnQudW5yZWYoeSk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86M30sMTYsWyJjbGFzcyJdKV0pLF86M30pXSksXzozfSwxNildO2cuZGVmYXVsdHx8dS5yZWZlcmVuY2U/byhfKHQudW5yZWYoSyksdC5tZXJnZVByb3BzKGUuJGF0dHJzLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTp1LnJlZmVyZW5jZSxjbGFzczpwLmNsYXNzfSkse2RlZmF1bHQ6dC53aXRoQ3R4KChvLGEsbixsKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnJ9KV07UChlLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0sbnVsbCxhLG4sbCl9KSxfOjJ9LGEsbikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKF8odC51bnJlZihMKSx0LnVucmVmKGIpLHtkZWZhdWx0OnQud2l0aEN0eCgocixvLGEsbik9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGQpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHQubWVyZ2VQcm9wcyhoLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qy52YWx1ZS5jb250ZW50KHtjbGFzczpbIWcuZGVmYXVsdCYmcC5jbGFzcyx0LnVucmVmKHkpPy5jb250ZW50XX0pfSkse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJjb250ZW50Iix7dWk6Qy52YWx1ZX0sKCk9Plt1LnRleHQ/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ0ZXh0IixjbGFzczpDLnZhbHVlLnRleHQoe2NsYXNzOnQudW5yZWYoeSk/LnRleHR9KX0sdC50b0Rpc3BsYXlTdHJpbmcodS50ZXh0KSwzKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHUua2Jkcz8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90Ijoia2JkcyIsY2xhc3M6Qy52YWx1ZS5rYmRzKHtjbGFzczp0LnVucmVmKHkpPy5rYmRzfSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdCh1LmtiZHMsKGUscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodyx0Lm1lcmdlUHJvcHMoe2tleTpyLHNpemU6dC51bnJlZih5KT8ua2Jkc1NpemV8fEMudmFsdWUua2Jkc1NpemUoKX0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgZT97dmFsdWU6ZX06ZSksbnVsbCwxNixbInNpemUiXSkpKSwxMjgpKV0sMikpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLHUuYXJyb3c/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKEQpLHQubWVyZ2VQcm9wcyh7a2V5OjB9LEIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6Qy52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZih5KT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldO28oXyh0LnVucmVmKGQpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KChyLG8sYSxuKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoaiksdC5tZXJnZVByb3BzKGgudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpDLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshZy5kZWZhdWx0JiZwLmNsYXNzLHQudW5yZWYoeSk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQiLHt1aTpDLnZhbHVlfSwoKT0+W3UudGV4dD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6InRleHQiLGNsYXNzOkMudmFsdWUudGV4dCh7Y2xhc3M6dC51bnJlZih5KT8udGV4dH0pfSx0LnRvRGlzcGxheVN0cmluZyh1LnRleHQpLDMpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdS5rYmRzPy5sZW5ndGg/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJrYmRzIixjbGFzczpDLnZhbHVlLmtiZHMoe2NsYXNzOnQudW5yZWYoeSk/LmtiZHN9KX0sWyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KHUua2JkcywoZSxyKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh3LHQubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZTp0LnVucmVmKHkpPy5rYmRzU2l6ZXx8Qy52YWx1ZS5rYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiBlP3t2YWx1ZTplfTplKSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksdS5hcnJvdz8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoRCksdC5tZXJnZVByb3BzKHtrZXk6MH0sQi52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpDLnZhbHVlLmFycm93KHtjbGFzczp0LnVucmVmKHkpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldO28oXyh0LnVucmVmKGopLHQubWVyZ2VQcm9wcyhoLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qy52YWx1ZS5jb250ZW50KHtjbGFzczpbIWcuZGVmYXVsdCYmcC5jbGFzcyx0LnVucmVmKHkpPy5jb250ZW50XX0pfSkse2RlZmF1bHQ6dC53aXRoQ3R4KChyLG8sYSxuKT0+e2lmKCFvKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQiLHt1aTpDLnZhbHVlfSwoKT0+W3UudGV4dD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6InRleHQiLGNsYXNzOkMudmFsdWUudGV4dCh7Y2xhc3M6dC51bnJlZih5KT8udGV4dH0pfSx0LnRvRGlzcGxheVN0cmluZyh1LnRleHQpLDMpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdS5rYmRzPy5sZW5ndGg/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJrYmRzIixjbGFzczpDLnZhbHVlLmtiZHMoe2NsYXNzOnQudW5yZWYoeSk/LmtiZHN9KX0sWyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KHUua2JkcywoZSxyKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh3LHQubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZTp0LnVucmVmKHkpPy5rYmRzU2l6ZXx8Qy52YWx1ZS5rYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiBlP3t2YWx1ZTplfTplKSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksdS5hcnJvdz8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoRCksdC5tZXJnZVByb3BzKHtrZXk6MH0sQi52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpDLnZhbHVlLmFycm93KHtjbGFzczp0LnVucmVmKHkpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO1AoZS4kc2xvdHMsImNvbnRlbnQiLHt1aTpDLnZhbHVlfSwoKT0+e3UudGV4dD9vKGA8c3BhbiBkYXRhLXNsb3Q9InRleHQiIGNsYXNzPSIke04oQy52YWx1ZS50ZXh0KHtjbGFzczp0LnVucmVmKHkpPy50ZXh0fSkpfSIke259PiR7VCh1LnRleHQpfTwvc3Bhbj5gKTpvKCJceDNjIS0tLS1ceDNlIiksdS5rYmRzPy5sZW5ndGg/KG8oYDxzcGFuIGRhdGEtc2xvdD0ia2JkcyIgY2xhc3M9IiR7TihDLnZhbHVlLmtiZHMoe2NsYXNzOnQudW5yZWYoeSk/LmtiZHN9KSl9IiR7bn0+XHgzYyEtLVstLVx4M2VgKSxPKHUua2JkcywoZSxyKT0+e28oXyh3LHQubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZTp0LnVucmVmKHkpPy5rYmRzU2l6ZXx8Qy52YWx1ZS5rYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiBlP3t2YWx1ZTplfTplKSxudWxsLGEsbikpfSksbygiXHgzYyEtLV0tLVx4M2U8L3NwYW4+IikpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyxhLG4pLHUuYXJyb3c/byhfKHQudW5yZWYoRCksdC5tZXJnZVByb3BzKEIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6Qy52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZih5KT8uYXJyb3d9KX0pLG51bGwsYSxuKSk6bygiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxhLG4pKX0pLF86Mn0sYSxuKSl9KSxfOjJ9LGEsbikpfSksXzozfSxvKSl9fX0sSD1JLnNldHVwO0kuc2V0dXA9KGUscik9Pntjb25zdCBvPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihvLm1vZHVsZXN8fChvLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ub29sdGlwLnZ1ZSIpLEg/SChlLHIpOnZvaWQgMH07ZXhwb3J0e0kgYXMgX307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvb2x0aXAtQlA4emI4REsubWpzLm1hcAo=", "chunks/build/VisuallyHiddenInput-D7mGP_JW.mjs": "aW1wb3J0e3YgYXMgZSxhcSBhcyB0LFkgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7dmFyIGE9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlZpc3VhbGx5SGlkZGVuSW5wdXRCdWJibGUiLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sdmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sY2hlY2tlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmZWF0dXJlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJmdWxseS1oaWRkZW4ifX0sc2V0dXAoYSl7Y29uc3QgbD1hLHtwcmltaXRpdmVFbGVtZW50Om4sY3VycmVudEVsZW1lbnQ6dX09dCgpLG89ZS5jb21wdXRlZCgoKT0+bC5jaGVja2VkPz9sLnZhbHVlKTtyZXR1cm4gZS53YXRjaChvLChlLHQpPT57aWYoIXUudmFsdWUpcmV0dXJuO2NvbnN0IHI9dS52YWx1ZSxhPSh2b2lkIDApLkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLCJ2YWx1ZSIpLnNldDtpZihsJiZlIT09dCl7Y29uc3QgdD1uZXcgRXZlbnQoImlucHV0Iix7YnViYmxlczohMH0pLGE9bmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSk7bC5jYWxsKHIsZSksci5kaXNwYXRjaEV2ZW50KHQpLHIuZGlzcGF0Y2hFdmVudChhKX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhyLGUubWVyZ2VQcm9wcyh7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOm59LHsuLi5sLC4uLnQuJGF0dHJzfSx7YXM6ImlucHV0In0pLG51bGwsMTYpKX19KSxsPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJWaXN1YWxseUhpZGRlbklucHV0Iixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGNoZWNrZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZmVhdHVyZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZnVsbHktaGlkZGVuIn19LHNldHVwKHQpe2NvbnN0IHI9dCxsPWUuY29tcHV0ZWQoKCk9PiJvYmplY3QiPT10eXBlb2Ygci52YWx1ZSYmQXJyYXkuaXNBcnJheShyLnZhbHVlKSYmMD09PXIudmFsdWUubGVuZ3RoJiZyLnJlcXVpcmVkKSxuPWUuY29tcHV0ZWQoKCk9PiJzdHJpbmciPT10eXBlb2Ygci52YWx1ZXx8Im51bWJlciI9PXR5cGVvZiByLnZhbHVlfHwiYm9vbGVhbiI9PXR5cGVvZiByLnZhbHVlfHxudWxsPT09ci52YWx1ZXx8dm9pZCAwPT09ci52YWx1ZT9be25hbWU6ci5uYW1lLHZhbHVlOnIudmFsdWV9XToib2JqZWN0Ij09dHlwZW9mIHIudmFsdWUmJkFycmF5LmlzQXJyYXkoci52YWx1ZSk/ci52YWx1ZS5mbGF0TWFwKChlLHQpPT4ib2JqZWN0Ij09dHlwZW9mIGU/T2JqZWN0LmVudHJpZXMoZSkubWFwKChbZSxhXSk9Pih7bmFtZTpgJHtyLm5hbWV9WyR7dH1dWyR7ZX1dYCx2YWx1ZTphfSkpOntuYW1lOmAke3IubmFtZX1bJHt0fV1gLHZhbHVlOmV9KTpudWxsPT09ci52YWx1ZXx8Im9iamVjdCIhPXR5cGVvZiByLnZhbHVlfHxBcnJheS5pc0FycmF5KHIudmFsdWUpP1tdOk9iamVjdC5lbnRyaWVzKHIudmFsdWUpLm1hcCgoW2UsdF0pPT4oe25hbWU6YCR7ci5uYW1lfVske2V9XWAsdmFsdWU6dH0pKSk7cmV0dXJuKHQsdSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxbZS5jcmVhdGVDb21tZW50Vk5vZGUoIiBXZSByZW5kZXIgc2luZ2xlIGlucHV0IGlmIGl0J3MgcmVxdWlyZWQgIiksbC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGEsZS5tZXJnZVByb3BzKHtrZXk6dC5uYW1lfSx7Li4uciwuLi50LiRhdHRyc30se25hbWU6dC5uYW1lLHZhbHVlOnQudmFsdWV9KSxudWxsLDE2LFsibmFtZSIsInZhbHVlIl0pKTooZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3Qobi52YWx1ZSxsPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGEsZS5tZXJnZVByb3BzKHtrZXk6bC5uYW1lfSx7cmVmX2ZvcjohMH0sey4uLnIsLi4udC4kYXR0cnN9LHtuYW1lOmwubmFtZSx2YWx1ZTpsLnZhbHVlfSksbnVsbCwxNixbIm5hbWUiLCJ2YWx1ZSJdKSkpLDEyOCkpXSwyMTEyKSl9fSk7ZXhwb3J0e2wgYXMgVn07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVZpc3VhbGx5SGlkZGVuSW5wdXQtRDdtR1BfSlcubWpzLm1hcAo=", "chunks/build/_id_-DzdVtYf5.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7diBhcyBsLHcgYXMgdCxhLGkgYXMgcix1IGFzIG8sXyBhcyBkLGcgYXMgcyx5IGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e18gYXMgbn1mcm9tIi4vRm9ybUZpZWxkLUNWTEl6UkxZLm1qcyI7aW1wb3J0e18gYXMgY31mcm9tIi4vU2VsZWN0LURpYWlsZlVjLm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7XyBhcyBmfWZyb20iLi9Ta2VsZXRvbi1CZnRxeUdwMy5tanMiO2ltcG9ydHt1IGFzIHB9ZnJvbSIuL3VzZVByb2R1Y3RBcGktQlp1TmpPaGsubWpzIjtpbXBvcnR7dSBhcyB2fWZyb20iLi91c2VQcm9qZWN0QXBpLUNUTDJLNkpWLm1qcyI7aW1wb3J0e18gYXMgYn1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcyI7aW1wb3J0e3cgYXMgeH1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7ZiBhcyBWLHEgYXMgaCx0IGFzIHd9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnQiLi91c2VGb3JtQ29udHJvbC1CTS1NZldtby5tanMiO2ltcG9ydCIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi9oYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50LUJrX0FWU1NvLm1qcyI7aW1wb3J0Ii4vdXNlUmVzb2x2ZWRWYXJpYW50cy1EaEh1NnZSSy5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgZz1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJbaWRdIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChnKXtjb25zdCB5PXQoKSxrPXYoKSxOPXUoKSxfPXAoKSxDPWEoKSxqPXkucGFyYW1zLmlkLHtkYXRhOkIsZXJyb3I6VSxyZWZyZXNoOlN9PXIoYHByb2plY3QtJHtqfWAsKCk9PmsuZmV0Y2hQcm9qZWN0KGopKTt4KFUpLG8oKCk9Pih7dGl0bGU6Qi52YWx1ZT8ubmFtZT8/IlByb2plY3QifSkpO2NvbnN0e2RhdGE6TX09cigib3JnLW1lbWJlcnMtZm9yLXByb2plY3QiLCgpPT5OLmZldGNoTWVtYmVycyh7bGltaXQ6MTAwfSkse2RlZmF1bHQ6KCk9Pih7aXRlbXM6W10saGFzTW9yZTohMX0pfSkse2RhdGE6Un09cigicHJvZHVjdHMtZm9yLXByb2plY3QiLCgpPT5fLmZldGNoUHJvZHVjdHMoImFjdGl2ZSIpLHtkZWZhdWx0OigpPT5bXX0pLCQ9bC5yZWYoIiIpLEQ9bC5yZWYoMSksUD1sLnJlZighMSksQT1sLnJlZigiIiksVD1sLnJlZigibWVtYmVyIiksej1sLnJlZighMSkscT1sLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1uZXcgU2V0KEIudmFsdWU/LnByb2R1Y3RzLm1hcChlPT5lLnByb2R1Y3RfaWQpPz9bXSk7cmV0dXJuKFIudmFsdWU/P1tdKS5maWx0ZXIobD0+IWUuaGFzKGwuaWQpKX0pLEk9bC5jb21wdXRlZCgoKT0+e2NvbnN0IGU9bmV3IFNldChCLnZhbHVlPy5tZW1iZXJzLm1hcChlPT5lLnVzZXJfaWQpPz9bXSk7cmV0dXJuKE0udmFsdWU/Lml0ZW1zPz9bXSkuZmlsdGVyKGw9PiFlLmhhcyhsLmlkKSl9KTthc3luYyBmdW5jdGlvbiBhZGRQcm9kdWN0KCl7aWYoJC52YWx1ZSl7UC52YWx1ZT0hMDt0cnl7YXdhaXQgay5hZGRQcm9kdWN0KGose3Byb2R1Y3RfaWQ6JC52YWx1ZSxxdWFudGl0eTpELnZhbHVlfSksYXdhaXQgUygpLCQudmFsdWU9IiIsRC52YWx1ZT0xLEMuYWRkKHt0aXRsZToiUHJvZHVjdCBhZGRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Y29uc3QgbD1lO0MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtQLnZhbHVlPSExfX19YXN5bmMgZnVuY3Rpb24gcmVtb3ZlUHJvZHVjdChlKXt0cnl7YXdhaXQgay5yZW1vdmVQcm9kdWN0KGosZSksYXdhaXQgUygpLEMuYWRkKHt0aXRsZToiUHJvZHVjdCByZW1vdmVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBsPWU7Qy5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246bD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19YXN5bmMgZnVuY3Rpb24gYWRkTWVtYmVyKCl7aWYoQS52YWx1ZSl7ei52YWx1ZT0hMDt0cnl7YXdhaXQgay5hZGRNZW1iZXIoaix7dXNlcl9pZDpBLnZhbHVlLHJvbGU6VC52YWx1ZX0pLGF3YWl0IFMoKSxBLnZhbHVlPSIiLFQudmFsdWU9Im1lbWJlciIsQy5hZGQoe3RpdGxlOiJNZW1iZXIgYWRkZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IGw9ZTtDLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7ei52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIHJlbW92ZU1lbWJlcihlKXt0cnl7YXdhaXQgay5yZW1vdmVNZW1iZXIoaixlKSxhd2FpdCBTKCksQy5hZGQoe3RpdGxlOiJNZW1iZXIgcmVtb3ZlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Y29uc3QgbD1lO0MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9fXJldHVybih0LGEscixvKT0+e2NvbnN0IHU9ZSxwPWQsdj1pLHg9bC5yZXNvbHZlQ29tcG9uZW50KCJDYW4iKSxnPW4seT1jLGs9bSxOPXMsXz1mO2EoVih1LGwubWVyZ2VQcm9wcyh7aWQ6InByb2plY3QtZGV0YWlsIn0sbykse2hlYWRlcjpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUoYix7dGl0bGU6bC51bnJlZihCKT8ubmFtZT8/IlByb2plY3QifSx7bGVhZGluZzpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHAse2ljb246ImktbHVjaWRlLWFycm93LWxlZnQiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsdG86Ii9wcm9qZWN0cyJ9KV0pLHJpZ2h0Omwud2l0aEN0eCgoKT0+W2wudW5yZWYoQik/KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jayh2LHtrZXk6MCxjb2xvcjoiYWN0aXZlIj09PWwudW5yZWYoQikuc3RhdHVzPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVUZXh0Vk5vZGUobC50b0Rpc3BsYXlTdHJpbmcobC51bnJlZihCKS5zdGF0dXMpLDEpXSksXzoxfSw4LFsiY29sb3IiXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86MX0sOCxbInRpdGxlIl0pXTt0KFYoYix7dGl0bGU6bC51bnJlZihCKT8ubmFtZT8/IlByb2plY3QifSx7bGVhZGluZzpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUocCx7aWNvbjoiaS1sdWNpZGUtYXJyb3ctbGVmdCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0Iix0bzoiL3Byb2plY3RzIn0pXTt0KFYocCx7aWNvbjoiaS1sdWNpZGUtYXJyb3ctbGVmdCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0Iix0bzoiL3Byb2plY3RzIn0sbnVsbCxhLHIpKX0pLHJpZ2h0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC51bnJlZihCKT8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKHYse2tleTowLGNvbG9yOiJhY3RpdmUiPT09bC51bnJlZihCKS5zdGF0dXM/InN1Y2Nlc3MiOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVRleHRWTm9kZShsLnRvRGlzcGxheVN0cmluZyhsLnVucmVmKEIpLnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtsLnVucmVmKEIpP3QoVih2LHtjb2xvcjoiYWN0aXZlIj09PWwudW5yZWYoQikuc3RhdHVzPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVRleHRWTm9kZShsLnRvRGlzcGxheVN0cmluZyhsLnVucmVmKEIpLnN0YXR1cyksMSldO3QoYCR7aChsLnVucmVmKEIpLnN0YXR1cyl9YCl9KSxfOjF9LGEscikpOnQoIlx4M2MhLS0tLVx4M2UiKX0pLF86MX0sYSxyKSl9KSxib2R5Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC51bnJlZihCKT8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00IHNwYWNlLXktNiJ9LFtsLnVucmVmKEIpLmRlc2NyaXB0aW9uPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soInAiLHtrZXk6MCxjbGFzczoidGV4dC1tdXRlZCJ9LGwudG9EaXNwbGF5U3RyaW5nKGwudW5yZWYoQikuZGVzY3JpcHRpb24pLDEpKTpsLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbC5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFtsLmNyZWF0ZVZOb2RlKCJoMiIse2NsYXNzOiJmb250LXNlbWlib2xkIG1iLTMifSwiIFByb2R1Y3RzICgiK2wudG9EaXNwbGF5U3RyaW5nKGwudW5yZWYoQikucHJvZHVjdHMubGVuZ3RoKSsiKSAiLDEpLDA9PT1sLnVucmVmKEIpLnByb2R1Y3RzLmxlbmd0aD8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIG1iLTMifSwiIE5vIHByb2R1Y3RzIGxpbmtlZC4gIikpOihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJzcGFjZS15LTIgbWItMyJ9LFsobC5vcGVuQmxvY2soITApLGwuY3JlYXRlQmxvY2sobC5GcmFnbWVudCxudWxsLGwucmVuZGVyTGlzdChsLnVucmVmKEIpLnByb2R1Y3RzLGU9PihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTplLnByb2R1Y3RfaWQsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTMgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxbbC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIn0sbC50b0Rpc3BsYXlTdHJpbmcobC51bnJlZihSKT8uZmluZChsPT5sLmlkPT09ZS5wcm9kdWN0X2lkKT8ubmFtZT8/ZS5wcm9kdWN0X2lkKSwxKSxsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxbbC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSwicXR5OiAiK2wudG9EaXNwbGF5U3RyaW5nKGUucXVhbnRpdHkpLDEpLGwuY3JlYXRlVk5vZGUocCx7aWNvbjoiaS1sdWNpZGUteCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsb25DbGljazpsPT5yZW1vdmVQcm9kdWN0KGUucHJvZHVjdF9pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSldKV0pKSksMTI4KSldKSksbC5jcmVhdGVWTm9kZSh4LHtJOiJ3cml0ZSIsYToicHJvamVjdCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wudW5yZWYocSkubGVuZ3RoPjA/KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsY2xhc3M6ImZsZXggaXRlbXMtZW5kIGdhcC0yIn0sW2wuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IkFkZCBwcm9kdWN0IixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOmwudW5yZWYoJCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoJCk/JC52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihxKS5tYXAoZT0+KHtsYWJlbDplLm5hbWUsdmFsdWU6ZS5pZH0pKSxwbGFjZWhvbGRlcjoiU2VsZWN0IGEgcHJvZHVjdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJRdHkiLGNsYXNzOiJ3LTIwIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShrLHttb2RlbFZhbHVlOmwudW5yZWYoRCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRCk/RC52YWx1ZT1lOm51bGwsbW9kZWxNb2RpZmllcnM6e251bWJlcjohMH0sdHlwZToibnVtYmVyIixtaW46IjEifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUocCx7bG9hZGluZzpsLnVucmVmKFApLGRpc2FibGVkOiFsLnVucmVmKCQpLGljb246ImktbHVjaWRlLXBsdXMiLG9uQ2xpY2s6YWRkUHJvZHVjdH0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVUZXh0Vk5vZGUoIiBBZGQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoxfSldKSxsLmNyZWF0ZVZOb2RlKCJkaXYiLG51bGwsW2wuY3JlYXRlVk5vZGUoImgyIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgbWItMyJ9LCIgTWVtYmVycyAoIitsLnRvRGlzcGxheVN0cmluZyhsLnVucmVmKEIpLm1lbWJlcnMubGVuZ3RoKSsiKSAiLDEpLDA9PT1sLnVucmVmKEIpLm1lbWJlcnMubGVuZ3RoPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbWItMyJ9LCIgTm8gbWVtYmVycy4gIikpOihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJzcGFjZS15LTIgbWItMyJ9LFsobC5vcGVuQmxvY2soITApLGwuY3JlYXRlQmxvY2sobC5GcmFnbWVudCxudWxsLGwucmVuZGVyTGlzdChsLnVucmVmKEIpLm1lbWJlcnMsZT0+KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OmUudXNlcl9pZCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBiZy1lbGV2YXRlZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGVmYXVsdCJ9LFtsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxbbC5jcmVhdGVWTm9kZShOLHtzcmM6ZS5hdmF0YXI/P3ZvaWQgMCxhbHQ6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQsc2l6ZToieHMifSxudWxsLDgsWyJzcmMiLCJhbHQiXSksbC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LXNtIn0sbC50b0Rpc3BsYXlTdHJpbmcoZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQpLDEpLGwuY3JlYXRlVk5vZGUodix7dmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVGV4dFZOb2RlKGwudG9EaXNwbGF5U3RyaW5nKGUucm9sZSksMSldKSxfOjJ9LDEwMjQpXSksbC5jcmVhdGVWTm9kZShwLHtpY29uOiJpLWx1Y2lkZS14Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InhzIixvbkNsaWNrOmw9PnJlbW92ZU1lbWJlcihlLnVzZXJfaWQpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSkpKSwxMjgpKV0pKSxsLmNyZWF0ZVZOb2RlKHgse0k6IndyaXRlIixhOiJwcm9qZWN0In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC51bnJlZihJKS5sZW5ndGg+MD8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1lbmQgZ2FwLTIifSxbbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiQWRkIG1lbWJlciIsY2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKEEpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEEpP0EudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoSSkubWFwKGU9Pih7bGFiZWw6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnByaW1hcnlfZW1haWwsdmFsdWU6ZS5pZH0pKSxwbGFjZWhvbGRlcjoiU2VsZWN0IGEgbWVtYmVyIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IlJvbGUifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihUKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihUKT9ULnZhbHVlPWU6bnVsbCxpdGVtczpbe2xhYmVsOiJPd25lciIsdmFsdWU6Im93bmVyIn0se2xhYmVsOiJNZW1iZXIiLHZhbHVlOiJtZW1iZXIifSx7bGFiZWw6IlZpZXdlciIsdmFsdWU6InZpZXdlciJ9XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKHAse2xvYWRpbmc6bC51bnJlZih6KSxkaXNhYmxlZDohbC51bnJlZihBKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZE1lbWJlcn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVUZXh0Vk5vZGUoIiBBZGQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoxfSldKV0pKToobC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC00OCB0ZXh0LW11dGVkIn0sW2wuY3JlYXRlVk5vZGUoXyx7Y2xhc3M6ImgtNDggdy1mdWxsIG1heC13LTN4bCJ9KV0pKV07bC51bnJlZihCKT8odChgPGRpdiBjbGFzcz0ibWF4LXctM3hsIG14LWF1dG8gcC00IHNwYWNlLXktNiIke3J9PmApLGwudW5yZWYoQikuZGVzY3JpcHRpb24/dChgPHAgY2xhc3M9InRleHQtbXV0ZWQiJHtyfT4ke2gobC51bnJlZihCKS5kZXNjcmlwdGlvbil9PC9wPmApOnQoIlx4M2MhLS0tLVx4M2UiKSx0KGA8ZGl2JHtyfT48aDIgY2xhc3M9ImZvbnQtc2VtaWJvbGQgbWItMyIke3J9PiBQcm9kdWN0cyAoJHtoKGwudW5yZWYoQikucHJvZHVjdHMubGVuZ3RoKX0pIDwvaDI+YCksMD09PWwudW5yZWYoQikucHJvZHVjdHMubGVuZ3RoP3QoYDxkaXYgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCBtYi0zIiR7cn0+IE5vIHByb2R1Y3RzIGxpbmtlZC4gPC9kaXY+YCk6KHQoYDxkaXYgY2xhc3M9InNwYWNlLXktMiBtYi0zIiR7cn0+XHgzYyEtLVstLVx4M2VgKSx3KGwudW5yZWYoQikucHJvZHVjdHMsZT0+e3QoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTMgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQiJHtyfT48c3BhbiBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSIke3J9PiR7aChsLnVucmVmKFIpPy5maW5kKGw9PmwuaWQ9PT1lLnByb2R1Y3RfaWQpPy5uYW1lPz9lLnByb2R1Y3RfaWQpfTwvc3Bhbj48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiIke3J9PjxzcGFuIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQiJHtyfT5xdHk6ICR7aChlLnF1YW50aXR5KX08L3NwYW4+YCksdChWKHAse2ljb246ImktbHVjaWRlLXgiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLG9uQ2xpY2s6bD0+cmVtb3ZlUHJvZHVjdChlLnByb2R1Y3RfaWQpfSxudWxsLGEscikpLHQoIjwvZGl2PjwvZGl2PiIpfSksdCgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSksdChWKHgse0k6IndyaXRlIixhOiJwcm9qZWN0In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLnVucmVmKHEpLmxlbmd0aD4wPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJmbGV4IGl0ZW1zLWVuZCBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJBZGQgcHJvZHVjdCIsY2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKCQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKCQpPyQudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYocSkubWFwKGU9Pih7bGFiZWw6ZS5uYW1lLHZhbHVlOmUuaWR9KSkscGxhY2Vob2xkZXI6IlNlbGVjdCBhIHByb2R1Y3QiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiUXR5IixjbGFzczoidy0yMCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoayx7bW9kZWxWYWx1ZTpsLnVucmVmKEQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEQpP0QudmFsdWU9ZTpudWxsLG1vZGVsTW9kaWZpZXJzOntudW1iZXI6ITB9LHR5cGU6Im51bWJlciIsbWluOiIxIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKHAse2xvYWRpbmc6bC51bnJlZihQKSxkaXNhYmxlZDohbC51bnJlZigkKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZFByb2R1Y3R9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVGV4dFZOb2RlKCIgQWRkICIpXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07bC51bnJlZihxKS5sZW5ndGg+MD8odChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1lbmQgZ2FwLTIiJHtyfT5gKSx0KFYoZyx7bGFiZWw6IkFkZCBwcm9kdWN0IixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZigkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZigkKT8kLnZhbHVlPWU6bnVsbCxpdGVtczpsLnVucmVmKHEpLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBwcm9kdWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyJdKV07dChWKHkse21vZGVsVmFsdWU6bC51bnJlZigkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZigkKT8kLnZhbHVlPWU6bnVsbCxpdGVtczpsLnVucmVmKHEpLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBwcm9kdWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCxhLHIpKX0pLF86MX0sYSxyKSksdChWKGcse2xhYmVsOiJRdHkiLGNsYXNzOiJ3LTIwIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGsse21vZGVsVmFsdWU6bC51bnJlZihEKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihEKT9ELnZhbHVlPWU6bnVsbCxtb2RlbE1vZGlmaWVyczp7bnVtYmVyOiEwfSx0eXBlOiJudW1iZXIiLG1pbjoiMSJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KFYoayx7bW9kZWxWYWx1ZTpsLnVucmVmKEQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEQpP0QudmFsdWU9ZTpudWxsLG1vZGVsTW9kaWZpZXJzOntudW1iZXI6ITB9LHR5cGU6Im51bWJlciIsbWluOiIxIn0sbnVsbCxhLHIpKX0pLF86MX0sYSxyKSksdChWKHAse2xvYWRpbmc6bC51bnJlZihQKSxkaXNhYmxlZDohbC51bnJlZigkKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZFByb2R1Y3R9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVUZXh0Vk5vZGUoIiBBZGQgIildO3QoIiBBZGQgIil9KSxfOjF9LGEscikpLHQoIjwvZGl2PiIpKTp0KCJceDNjIS0tLS1ceDNlIil9KSxfOjF9LGEscikpLHQoYDwvZGl2PjxkaXYke3J9PjxoMiBjbGFzcz0iZm9udC1zZW1pYm9sZCBtYi0zIiR7cn0+IE1lbWJlcnMgKCR7aChsLnVucmVmKEIpLm1lbWJlcnMubGVuZ3RoKX0pIDwvaDI+YCksMD09PWwudW5yZWYoQikubWVtYmVycy5sZW5ndGg/dChgPGRpdiBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIG1iLTMiJHtyfT4gTm8gbWVtYmVycy4gPC9kaXY+YCk6KHQoYDxkaXYgY2xhc3M9InNwYWNlLXktMiBtYi0zIiR7cn0+XHgzYyEtLVstLVx4M2VgKSx3KGwudW5yZWYoQikubWVtYmVycyxlPT57dChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBiZy1lbGV2YXRlZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGVmYXVsdCIke3J9PjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIiR7cn0+YCksdChWKE4se3NyYzplLmF2YXRhcj8/dm9pZCAwLGFsdDplLm5hbWU/P2UudXNlcm5hbWU/P2UudXNlcl9pZCxzaXplOiJ4cyJ9LG51bGwsYSxyKSksdChgPHNwYW4gY2xhc3M9InRleHQtc20iJHtyfT4ke2goZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQpfTwvc3Bhbj5gKSx0KFYodix7dmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgodCxhLHIsbyk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVUZXh0Vk5vZGUobC50b0Rpc3BsYXlTdHJpbmcoZS5yb2xlKSwxKV07YShgJHtoKGUucm9sZSl9YCl9KSxfOjJ9LGEscikpLHQoIjwvZGl2PiIpLHQoVihwLHtpY29uOiJpLWx1Y2lkZS14Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InhzIixvbkNsaWNrOmw9PnJlbW92ZU1lbWJlcihlLnVzZXJfaWQpfSxudWxsLGEscikpLHQoIjwvZGl2PiIpfSksdCgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSksdChWKHgse0k6IndyaXRlIixhOiJwcm9qZWN0In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLnVucmVmKEkpLmxlbmd0aD4wPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJmbGV4IGl0ZW1zLWVuZCBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJBZGQgbWVtYmVyIixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOmwudW5yZWYoQSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoQSk/QS52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihJKS5tYXAoZT0+KHtsYWJlbDplLm5hbWU/P2UudXNlcm5hbWU/P2UucHJpbWFyeV9lbWFpbCx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBtZW1iZXIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKFQpP1QudmFsdWU9ZTpudWxsLGl0ZW1zOlt7bGFiZWw6Ik93bmVyIix2YWx1ZToib3duZXIifSx7bGFiZWw6Ik1lbWJlciIsdmFsdWU6Im1lbWJlciJ9LHtsYWJlbDoiVmlld2VyIix2YWx1ZToidmlld2VyIn1dfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUocCx7bG9hZGluZzpsLnVucmVmKHopLGRpc2FibGVkOiFsLnVucmVmKEEpLGljb246ImktbHVjaWRlLXBsdXMiLG9uQ2xpY2s6YWRkTWVtYmVyfSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVRleHRWTm9kZSgiIEFkZCAiKV0pLF86MX0sOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pKTpsLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2wudW5yZWYoSSkubGVuZ3RoPjA/KHQoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtZW5kIGdhcC0yIiR7cn0+YCksdChWKGcse2xhYmVsOiJBZGQgbWVtYmVyIixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihBKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihBKT9BLnZhbHVlPWU6bnVsbCxpdGVtczpsLnVucmVmKEkpLm1hcChlPT4oe2xhYmVsOmUubmFtZT8/ZS51c2VybmFtZT8/ZS5wcmltYXJ5X2VtYWlsLHZhbHVlOmUuaWR9KSkscGxhY2Vob2xkZXI6IlNlbGVjdCBhIG1lbWJlciIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO3QoVih5LHttb2RlbFZhbHVlOmwudW5yZWYoQSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoQSk/QS52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihJKS5tYXAoZT0+KHtsYWJlbDplLm5hbWU/P2UudXNlcm5hbWU/P2UucHJpbWFyeV9lbWFpbCx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBtZW1iZXIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEscikpfSksXzoxfSxhLHIpKSx0KFYoZyx7bGFiZWw6IlJvbGUifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKFQpP1QudmFsdWU9ZTpudWxsLGl0ZW1zOlt7bGFiZWw6Ik93bmVyIix2YWx1ZToib3duZXIifSx7bGFiZWw6Ik1lbWJlciIsdmFsdWU6Im1lbWJlciJ9LHtsYWJlbDoiVmlld2VyIix2YWx1ZToidmlld2VyIn1dfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChWKHkse21vZGVsVmFsdWU6bC51bnJlZihUKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihUKT9ULnZhbHVlPWU6bnVsbCxpdGVtczpbe2xhYmVsOiJPd25lciIsdmFsdWU6Im93bmVyIn0se2xhYmVsOiJNZW1iZXIiLHZhbHVlOiJtZW1iZXIifSx7bGFiZWw6IlZpZXdlciIsdmFsdWU6InZpZXdlciJ9XX0sbnVsbCxhLHIpKX0pLF86MX0sYSxyKSksdChWKHAse2xvYWRpbmc6bC51bnJlZih6KSxkaXNhYmxlZDohbC51bnJlZihBKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZE1lbWJlcn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVRleHRWTm9kZSgiIEFkZCAiKV07dCgiIEFkZCAiKX0pLF86MX0sYSxyKSksdCgiPC9kaXY+IikpOnQoIlx4M2MhLS0tLVx4M2UiKX0pLF86MX0sYSxyKSksdCgiPC9kaXY+PC9kaXY+IikpOih0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTQ4IHRleHQtbXV0ZWQiJHtyfT5gKSx0KFYoXyx7Y2xhc3M6ImgtNDggdy1mdWxsIG1heC13LTN4bCJ9LG51bGwsYSxyKSksdCgiPC9kaXY+IikpfSksXzoxfSxyKSl9fX0pLHk9Zy5zZXR1cDtnLnNldHVwPShlLHQpPT57Y29uc3QgYT1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9baWRdLnZ1ZSIpLHk/eShlLHQpOnZvaWQgMH07ZXhwb3J0e2cgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8tRHpkVnRZZjUubWpzLm1hcAo=", "chunks/build/_token_-BMRvL9xC.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHt2IGFzIHQsdyBhcyBuLHggYXMgbyxoIGFzIHIsYSxpLHUgYXMgcyxiIGFzIGMsXyBhcyBsLHkgYXMgZH1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3cgYXMgdX1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7byBhcyBtLGYgYXMgcCxxIGFzIGZ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgdj10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJbdG9rZW5dIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cCh2KXtjb25zdCB4PW4oKSxnPW8oKSxoPXgucGFyYW1zLnRva2VuLGs9ZCgpLHk9cigpLE49YSgpLHtkYXRhOmIsZXJyb3I6Q309aShgaW52aXRhdGlvbi0ke2h9YCwoKT0+ay5mZXRjaEludml0YXRpb24oaCkpO3UoQykscyh7dGl0bGU6KCk9PmIudmFsdWU/YEpvaW4gJHtiLnZhbHVlLm9yZy5uYW1lfWA6Ikludml0YXRpb24ifSk7Y29uc3QgJD10LnJlZighMSk7YXN5bmMgZnVuY3Rpb24gYWNjZXB0KCl7aWYoeS5jdXJyZW50VXNlcil7JC52YWx1ZT0hMDt0cnl7Y29uc3QgZT1hd2FpdCBrLmFjY2VwdEludml0YXRpb24oaCk7YXdhaXQgeS5mZXRjaEN1cnJlbnRVc2VyKCksTi5hZGQoe3RpdGxlOmBKb2luZWQgJHtlLm9yZy5uYW1lfWAsY29sb3I6InN1Y2Nlc3MifSksYXdhaXQgZy5wdXNoKCIvZGFzaGJvYXJkIil9Y2F0Y2goZSl7Y29uc3QgdD1lO04uYWRkKHt0aXRsZToiRmFpbGVkIHRvIGFjY2VwdCBpbnZpdGF0aW9uIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7JC52YWx1ZT0hMX19ZWxzZSBhd2FpdCBnLnB1c2goIi9hdXRoL2xvZ2luIil9cmV0dXJuKG4sbyxyLGEpPT57Y29uc3QgaT1lLHM9YyxkPWw7byhgPGRpdiR7bSh0Lm1lcmdlUHJvcHMoe2NsYXNzOiJtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00In0sYSkpfT5gKSxvKHAoaSx7Y2xhc3M6InctZnVsbCBtYXgtdy1tZCJ9LHQuY3JlYXRlU2xvdHMoe2hlYWRlcjp0LndpdGhDdHgoKGUsbixvLHIpPT57aWYoIW4pcmV0dXJuW3QuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1sZyBmb250LXNlbWlib2xkIn0sIiBPcmdhbml6YXRpb24gaW52aXRhdGlvbiAiKV07bihgPHAgY2xhc3M9InRleHQtbGcgZm9udC1zZW1pYm9sZCIke3J9PiBPcmdhbml6YXRpb24gaW52aXRhdGlvbiA8L3A+YCl9KSxkZWZhdWx0OnQud2l0aEN0eCgoZSxuLG8scik9PntpZighbilyZXR1cm5bdC51bnJlZihDKXx8IXQudW5yZWYoYik/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsY2xhc3M6InRleHQtY2VudGVyIHB5LTQifSxbdC5jcmVhdGVWTm9kZShzLHtuYW1lOiJpLWx1Y2lkZS1jaXJjbGUteCIsY2xhc3M6InNpemUtMTIgdGV4dC1lcnJvciBteC1hdXRvIG1iLTMifSksdC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LW1lZGl1bSJ9LCIgSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCAiKSx0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCBtdC0xIn0sIiBUaGUgaW52aXRhdGlvbiBsaW5rIG1heSBoYXZlIGJlZW4gcmV2b2tlZCBvciBpcyBubyBsb25nZXIgdmFsaWQuICIpXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJzcGFjZS15LTQifSxbdC5jcmVhdGVWTm9kZSgicCIsbnVsbCxbdC5jcmVhdGVUZXh0Vk5vZGUoIiBZb3UgaGF2ZSBiZWVuIGludml0ZWQgdG8gam9pbiAiKSx0LmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwsdC50b0Rpc3BsYXlTdHJpbmcodC51bnJlZihiKS5vcmcubmFtZSksMSksdC51bnJlZihiKS5yb2xlTmFtZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQse2tleTowfSxbdC5jcmVhdGVUZXh0Vk5vZGUoIiBhcyBhICIpLHQuY3JlYXRlVk5vZGUoInN0cm9uZyIsbnVsbCx0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGIpLnJvbGVOYW1lKSwxKV0sNjQpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5jcmVhdGVUZXh0Vk5vZGUoIi4gIildKSx0LnVucmVmKHkpLmN1cnJlbnRVc2VyP3QuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKToodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBTaWduIGluIHRvIGFjY2VwdCB0aGlzIGludml0YXRpb24uICIpKV0pKV07dC51bnJlZihDKXx8IXQudW5yZWYoYik/KG4oYDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHB5LTQiJHtyfT5gKSxuKHAocyx7bmFtZToiaS1sdWNpZGUtY2lyY2xlLXgiLGNsYXNzOiJzaXplLTEyIHRleHQtZXJyb3IgbXgtYXV0byBtYi0zIn0sbnVsbCxvLHIpKSxuKGA8cCBjbGFzcz0iZm9udC1tZWRpdW0iJHtyfT4gSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCA8L3A+PHAgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCBtdC0xIiR7cn0+IFRoZSBpbnZpdGF0aW9uIGxpbmsgbWF5IGhhdmUgYmVlbiByZXZva2VkIG9yIGlzIG5vIGxvbmdlciB2YWxpZC4gPC9wPjwvZGl2PmApKToobihgPGRpdiBjbGFzcz0ic3BhY2UteS00IiR7cn0+PHAke3J9PiBZb3UgaGF2ZSBiZWVuIGludml0ZWQgdG8gam9pbiA8c3Ryb25nJHtyfT4ke2YodC51bnJlZihiKS5vcmcubmFtZSl9PC9zdHJvbmc+YCksdC51bnJlZihiKS5yb2xlTmFtZT9uKGBceDNjIS0tWy0tXHgzZSBhcyBhIDxzdHJvbmcke3J9PiR7Zih0LnVucmVmKGIpLnJvbGVOYW1lKX08L3N0cm9uZz5ceDNjIS0tXS0tXHgzZWApOm4oIlx4M2MhLS0tLVx4M2UiKSxuKCIuIDwvcD4iKSx0LnVucmVmKHkpLmN1cnJlbnRVc2VyP24oIlx4M2MhLS0tLVx4M2UiKTpuKGA8ZGl2IGNsYXNzPSJ0ZXh0LXNtIHRleHQtbXV0ZWQiJHtyfT4gU2lnbiBpbiB0byBhY2NlcHQgdGhpcyBpbnZpdGF0aW9uLiA8L2Rpdj5gKSxuKCI8L2Rpdj4iKSl9KSxfOjJ9LFt0LnVucmVmKGIpP3tuYW1lOiJmb290ZXIiLGZuOnQud2l0aEN0eCgoZSxuLG8scik9PntpZighbilyZXR1cm5bdC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxbdC5jcmVhdGVWTm9kZShkLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6ZT0+dC51bnJlZihnKS5wdXNoKCIvIil9LG51bGwsOCxbIm9uQ2xpY2siXSksdC5jcmVhdGVWTm9kZShkLHtsYWJlbDp0LnVucmVmKHkpLmN1cnJlbnRVc2VyPyJBY2NlcHQgaW52aXRhdGlvbiI6IlNpZ24gaW4gdG8gYWNjZXB0Iixsb2FkaW5nOnQudW5yZWYoJCksb25DbGljazphY2NlcHR9LG51bGwsOCxbImxhYmVsIiwibG9hZGluZyJdKV0pXTtuKGA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIiR7cn0+YCksbihwKGQse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT50LnVucmVmKGcpLnB1c2goIi8iKX0sbnVsbCxvLHIpKSxuKHAoZCx7bGFiZWw6dC51bnJlZih5KS5jdXJyZW50VXNlcj8iQWNjZXB0IGludml0YXRpb24iOiJTaWduIGluIHRvIGFjY2VwdCIsbG9hZGluZzp0LnVucmVmKCQpLG9uQ2xpY2s6YWNjZXB0fSxudWxsLG8scikpLG4oIjwvZGl2PiIpfSksa2V5OiIwIn06dm9pZCAwXSkscikpLG8oIjwvZGl2PiIpfX19KSx4PXYuc2V0dXA7di5zZXR1cD0oZSxuKT0+e2NvbnN0IG89dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvam9pbi9bdG9rZW5dLnZ1ZSIpLHg/eChlLG4pOnZvaWQgMH07ZXhwb3J0e3YgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV90b2tlbl8tQk1Sdkw5eEMubWpzLm1hcAo=", "chunks/build/auth-DRtN7LuV.mjs": "aW1wb3J0e2FUIGFzIGUsdiBhcyBzfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7byxnIGFzIHJ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3QgdD17fTtjb25zdCBuPXQuc2V0dXA7dC5zZXR1cD0oZSxvKT0+e2NvbnN0IHI9cy51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHIubW9kdWxlc3x8KHIubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvbGF5b3V0cy9hdXRoLnZ1ZSIpLG4/bihlLG8pOnZvaWQgMH07Y29uc3QgbT1lKHQsW1sic3NyUmVuZGVyIixmdW5jdGlvbihlLHQsbixtKXt0KGA8ZGl2JHtvKHMubWVyZ2VQcm9wcyh7Y2xhc3M6Im1pbi1oLXNjcmVlbiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC00IHB5LTE2IGJnLWRlZmF1bHQifSxtKSl9PmApLHIoZS4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsdCxuKSx0KCI8L2Rpdj4iKX1dXSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWF1dGgtRFJ0TjdMdVYubWpzLm1hcAo=", "chunks/build/billing-Bwq8NYM_.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7diBhcyB0LHUgYXMgYSxpIGFzIGwsXyBhcyBuLGEgYXMgcyxhTCBhcyBvLGIgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e18gYXMgY31mcm9tIi4vRm9ybUZpZWxkLUNWTEl6UkxZLm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7XyBhcyB1fWZyb20iLi9UYWJsZS0wVVJuQzhPSC5tanMiO2ltcG9ydHtfIGFzIGR9ZnJvbSIuL1BhZ2luYXRpb24tQ3pyRWlQSmQubWpzIjtpbXBvcnR7dSBhcyBwfWZyb20iLi91c2VCaWxsaW5nQXBpLUNvLWJUU0tULm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vTW9kYWwtQjB5V1B4V18ubWpzIjtpbXBvcnR7dyBhcyBmfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIHYsZiBhcyB4LHogYXMgZyxxIGFzIGIsdCBhcyB5fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vaW5kZXgtQjFQT1RMbWEubWpzIjtpbXBvcnQiLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydCIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtjb25zdCBrPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkJpbGxpbmdNb2RhbCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsidXBkYXRlOm9wZW4iLCJzdWNjZXNzIl0sc2V0dXAoZSx7ZW1pdDphfSl7Y29uc3QgbD1lLGM9YSxpPXAoKSx1PXMoKSxkPVs1ZTQsMWU1LDJlNSw1ZTVdLGY9dC5yZWYoZFsxXSksdj10LnJlZighMSksaz10LnJlZighMSksTj10LnJlZihudWxsKSxDPXQucmVmKG51bGwpLGg9dC5yZWYobnVsbCksVj10LnJlZihudWxsKSx7cGF1c2U6QixyZXN1bWU6JH09byhhc3luYygpPT57aWYoTi52YWx1ZSl0cnl7Y29uc3R7c3RhdHVzOmV9PWF3YWl0IGkuZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyhOLnZhbHVlKTsic3VjY2VzcyI9PT1lJiYoQigpLGsudmFsdWU9ITAsYygic3VjY2VzcyIpKX1jYXRjaHt9fSwzZTMse2ltbWVkaWF0ZTohMX0pO2FzeW5jIGZ1bmN0aW9uIHN0YXJ0Q2hlY2tvdXQoKXt2LnZhbHVlPSEwO3RyeXtjb25zdCBlPWF3YWl0IGkuY2hlY2tvdXQoZi52YWx1ZSk7Ti52YWx1ZT1lLnRyYW5zYWN0aW9uSWQsQy52YWx1ZT1lLnFyVXJsLGgudmFsdWU9ZS5iYW5rLFYudmFsdWU9ZS5vcmRlckNvZGUsJCgpLHNldFRpbWVvdXQoQiwzZTUpfWNhdGNoKGUpe2NvbnN0IHQ9ZTt1LmFkZCh7dGl0bGU6IkNoZWNrb3V0IGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3YudmFsdWU9ITF9fWZ1bmN0aW9uIGNsb3NlKCl7QigpLE4udmFsdWU9bnVsbCxDLnZhbHVlPW51bGwsaC52YWx1ZT1udWxsLFYudmFsdWU9bnVsbCxrLnZhbHVlPSExLGMoInVwZGF0ZTpvcGVuIiwhMSl9cmV0dXJuIHQud2F0Y2goKCk9Pmwub3BlbixlPT57ZXx8Y2xvc2UoKX0pLChhLGwscyxvKT0+e2NvbnN0IGk9cix1PW47bCh4KG0sdC5tZXJnZVByb3BzKHtvcGVuOmUub3Blbix0aXRsZToiVG9wIHVwIGJhbGFuY2UiLCJvblVwZGF0ZTpvcGVuIjplPT5jKCJ1cGRhdGU6b3BlbiIsZSl9LG8pLHtib2R5OnQud2l0aEN0eCgoZSxhLGwsbik9PntpZighYSlyZXR1cm5bdC51bnJlZihrKT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1jZW50ZXIgcHktNiJ9LFt0LmNyZWF0ZVZOb2RlKGkse25hbWU6ImktbHVjaWRlLWNpcmNsZS1jaGVjayIsY2xhc3M6InNpemUtMTIgdGV4dC1zdWNjZXNzIG14LWF1dG8gbWItMyJ9KSx0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1sZyJ9LCIgUGF5bWVudCByZWNlaXZlZCEgIiksdC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSJ9LCIgWW91ciBiYWxhbmNlIGhhcyBiZWVuIHVwZGF0ZWQuICIpXSkpOnQudW5yZWYoQyk/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsY2xhc3M6InNwYWNlLXktNCJ9LFt0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoidGV4dC1jZW50ZXIifSxbdC5jcmVhdGVWTm9kZSgiaW1nIix7c3JjOnQudW5yZWYoQyksYWx0OiJTZVBheSBRUiBjb2RlIixjbGFzczoibXgtYXV0byBtYXgtdy1bMjAwcHhdIHJvdW5kZWQifSxudWxsLDgsWyJzcmMiXSldKSx0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoidGV4dC1zbSBzcGFjZS15LTEgYmctZWxldmF0ZWQgcm91bmRlZCBwLTMifSxbdC5jcmVhdGVWTm9kZSgicCIsbnVsbCxbdC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkJhbms6IiksdC5jcmVhdGVUZXh0Vk5vZGUoIiAiK3QudG9EaXNwbGF5U3RyaW5nKHQudW5yZWYoaCk/LmJhbmtOYW1lKSwxKV0pLHQuY3JlYXRlVk5vZGUoInAiLG51bGwsW3QuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJBY2NvdW50OiIpLHQuY3JlYXRlVGV4dFZOb2RlKCIgIit0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGgpPy5hY2NvdW50TnVtYmVyKSwxKV0pLHQuY3JlYXRlVk5vZGUoInAiLG51bGwsW3QuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJNZW1vOiIpLHQuY3JlYXRlVGV4dFZOb2RlKCksdC5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJmb250LW1vbm8ifSx0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGgpPy5wcmVmaXgpK3QudG9EaXNwbGF5U3RyaW5nKHQudW5yZWYoVikpLDEpXSldKSx0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciJ9LCIgV2FpdGluZyBmb3IgcGF5bWVudCBjb25maXJtYXRpb27igKYgIildKSk6KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsY2xhc3M6InNwYWNlLXktNCJ9LFt0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LCIgU2VsZWN0IHRoZSBhbW91bnQgdG8gdG9wIHVwOiAiKSx0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiJ9LFsodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQsbnVsbCx0LnJlbmRlckxpc3QoZCxlPT50LmNyZWF0ZVZOb2RlKHUse2tleTplLHZhcmlhbnQ6dC51bnJlZihmKT09PWU/InNvbGlkIjoib3V0bGluZSIsY29sb3I6Im5ldXRyYWwiLGJsb2NrOiIiLG9uQ2xpY2s6dD0+Zi52YWx1ZT1lfSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyhlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpKSsiIOKCqyAiLDEpXSksXzoyfSwxMDMyLFsidmFyaWFudCIsIm9uQ2xpY2siXSkpLDY0KSldKV0pKV07dC51bnJlZihrKT8oYShgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgcHktNiIke259PmApLGEoeChpLHtuYW1lOiJpLWx1Y2lkZS1jaXJjbGUtY2hlY2siLGNsYXNzOiJzaXplLTEyIHRleHQtc3VjY2VzcyBteC1hdXRvIG1iLTMifSxudWxsLGwsbikpLGEoYDxwIGNsYXNzPSJmb250LXNlbWlib2xkIHRleHQtbGciJHtufT4gUGF5bWVudCByZWNlaXZlZCEgPC9wPjxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSIke259PiBZb3VyIGJhbGFuY2UgaGFzIGJlZW4gdXBkYXRlZC4gPC9wPjwvZGl2PmApKTp0LnVucmVmKEMpP2EoYDxkaXYgY2xhc3M9InNwYWNlLXktNCIke259PjxkaXYgY2xhc3M9InRleHQtY2VudGVyIiR7bn0+PGltZyR7Zygic3JjIix0LnVucmVmKEMpKX0gYWx0PSJTZVBheSBRUiBjb2RlIiBjbGFzcz0ibXgtYXV0byBtYXgtdy1bMjAwcHhdIHJvdW5kZWQiJHtufT48L2Rpdj48ZGl2IGNsYXNzPSJ0ZXh0LXNtIHNwYWNlLXktMSBiZy1lbGV2YXRlZCByb3VuZGVkIHAtMyIke259PjxwJHtufT48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke259PkJhbms6PC9zcGFuPiAke2IodC51bnJlZihoKT8uYmFua05hbWUpfTwvcD48cCR7bn0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHtufT5BY2NvdW50Ojwvc3Bhbj4gJHtiKHQudW5yZWYoaCk/LmFjY291bnROdW1iZXIpfTwvcD48cCR7bn0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHtufT5NZW1vOjwvc3Bhbj4gPGNvZGUgY2xhc3M9ImZvbnQtbW9ubyIke259PiR7Yih0LnVucmVmKGgpPy5wcmVmaXgpfSR7Yih0LnVucmVmKFYpKX08L2NvZGU+PC9wPjwvZGl2PjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIiJHtufT4gV2FpdGluZyBmb3IgcGF5bWVudCBjb25maXJtYXRpb27igKYgPC9wPjwvZGl2PmApOihhKGA8ZGl2IGNsYXNzPSJzcGFjZS15LTQiJHtufT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7bn0+IFNlbGVjdCB0aGUgYW1vdW50IHRvIHRvcCB1cDogPC9wPjxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTIiJHtufT5ceDNjIS0tWy0tXHgzZWApLHkoZCxlPT57YSh4KHUse2tleTplLHZhcmlhbnQ6dC51bnJlZihmKT09PWU/InNvbGlkIjoib3V0bGluZSIsY29sb3I6Im5ldXRyYWwiLGJsb2NrOiIiLG9uQ2xpY2s6dD0+Zi52YWx1ZT1lfSx7ZGVmYXVsdDp0LndpdGhDdHgoKGEsbCxuLHMpPT57aWYoIWwpcmV0dXJuW3QuY3JlYXRlVGV4dFZOb2RlKHQudG9EaXNwbGF5U3RyaW5nKGUudG9Mb2NhbGVTdHJpbmcoInZpLVZOIikpKyIg4oKrICIsMSldO2woYCR7YihlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpKX0g4oKrIGApfSksXzoyfSxsLG4pKX0pLGEoIlx4M2MhLS1dLS1ceDNlPC9kaXY+PC9kaXY+IikpfSksZm9vdGVyOnQud2l0aEN0eCgoZSxhLGwsbik9PntpZighYSlyZXR1cm5bdC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxbdC5jcmVhdGVWTm9kZSh1LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDbG9zZSIsb25DbGljazplPT5jbG9zZSgpfSxudWxsLDgsWyJvbkNsaWNrIl0pLHQudW5yZWYoQyl8fHQudW5yZWYoayk/dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodSx7a2V5OjAsbGFiZWw6IkdlbmVyYXRlIFFSIixsb2FkaW5nOnQudW5yZWYodiksb25DbGljazplPT5zdGFydENoZWNrb3V0KCl9LG51bGwsOCxbImxvYWRpbmciLCJvbkNsaWNrIl0pKV0pXTthKGA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIiR7bn0+YCksYSh4KHUse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNsb3NlIixvbkNsaWNrOmU9PmNsb3NlKCl9LG51bGwsbCxuKSksdC51bnJlZihDKXx8dC51bnJlZihrKT9hKCJceDNjIS0tLS1ceDNlIik6YSh4KHUse2xhYmVsOiJHZW5lcmF0ZSBRUiIsbG9hZGluZzp0LnVucmVmKHYpLG9uQ2xpY2s6ZT0+c3RhcnRDaGVja291dCgpfSxudWxsLGwsbikpLGEoIjwvZGl2PiIpfSksXzoxfSxzKSl9fX0pLE49ay5zZXR1cDtrLnNldHVwPShlLGEpPT57Y29uc3QgbD10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9iaWxsaW5nL2FwcC9jb21wb25lbnRzL0JpbGxpbmcvQmlsbGluZ01vZGFsLnZ1ZSIpLE4/TihlLGEpOnZvaWQgMH07Y29uc3QgQz1PYmplY3QuYXNzaWduKGsse19fbmFtZToiQmlsbGluZ01vZGFsIn0pLGg9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiYmlsbGluZyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAocyl7YSh7dGl0bGU6IkJpbGxpbmcifSk7Y29uc3Qgbz1wKCkse2RhdGE6cixyZWZyZXNoOm0sZXJyb3I6Z309bCgiYmlsbGluZy1iYWxhbmNlIiwoKT0+by5mZXRjaEJhbGFuY2UoKSx7ZGVmYXVsdDooKT0+KHtiYWxhbmNlOjB9KX0pO2YoZyk7Y29uc3QgYj10LnJlZigxKSx7ZGF0YTp5LGVycm9yOmt9PWwoKCk9PmBiaWxsaW5nLXRyYW5zYWN0aW9ucy0ke2IudmFsdWV9YCwoKT0+by5mZXRjaFRyYW5zYWN0aW9ucyhiLnZhbHVlKSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxwYWdlOjEsbGltaXQ6MjB9KSx3YXRjaDpbYl19KTtmKGspO2NvbnN0IE49dC5yZWYoITEpLGg9W3thY2Nlc3NvcktleToidHlwZSIsaGVhZGVyOiJUeXBlIn0se2FjY2Vzc29yS2V5OiJzdGF0dXMiLGhlYWRlcjoiU3RhdHVzIn0se2FjY2Vzc29yS2V5OiJhbW91bnQiLGhlYWRlcjoiQW1vdW50IixjZWxsOih7cm93OmV9KT0+bmV3IEludGwuTnVtYmVyRm9ybWF0KCJ2aS1WTiIse3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3k6IlZORCJ9KS5mb3JtYXQoZS5vcmlnaW5hbC5hbW91bnQpfSx7YWNjZXNzb3JLZXk6ImNyZWF0ZWRfYXQiLGhlYWRlcjoiRGF0ZSIsY2VsbDooe3JvdzplfSk9Pm5ldyBEYXRlKGUub3JpZ2luYWwuY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9XTtyZXR1cm4oYSxsLHMsbyk9Pntjb25zdCBwPWUsZj1uLGc9YyxrPWksVj11LEI9ZDtsKGA8ZGl2JHt2KHQubWVyZ2VQcm9wcyh7Y2xhc3M6InNwYWNlLXktNiJ9LG8pKX0+YCksbCh4KHAse3RpdGxlOiJCaWxsaW5nIixkZXNjcmlwdGlvbjoiT3JnYW5pemF0aW9uIGNyZWRpdCBiYWxhbmNlIGFuZCB0b3AtdXAuIix2YXJpYW50OiJuYWtlZCIsb3JpZW50YXRpb246Imhvcml6b250YWwifSx7ZGVmYXVsdDp0LndpdGhDdHgoKGUsYSxsLG4pPT57aWYoIWEpcmV0dXJuW3QuY3JlYXRlVk5vZGUoZix7bGFiZWw6IlRvcCB1cCIsaWNvbjoiaS1sdWNpZGUtcGx1cyIsY2xhc3M6InctZml0IGxnOm1zLWF1dG8iLG9uQ2xpY2s6ZT0+Ti52YWx1ZT0hMH0sbnVsbCw4LFsib25DbGljayJdKV07YSh4KGYse2xhYmVsOiJUb3AgdXAiLGljb246ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIixvbkNsaWNrOmU9Pk4udmFsdWU9ITB9LG51bGwsbCxuKSl9KSxfOjF9LHMpKSxsKHgocCx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGEsbCxuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJDcmVkaXQgYmFsYW5jZSIsY2xhc3M6ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtNCJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoayx7bGFiZWw6YCR7dC51bnJlZihyKS5iYWxhbmNlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpfSDigqtgLGNvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6ImxnIn0sbnVsbCw4LFsibGFiZWwiXSldKSxfOjJ9LDEwMjQpXTthKHgoZyx7bGFiZWw6IkNyZWRpdCBiYWxhbmNlIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGEsbCxuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKGsse2xhYmVsOmAke3QudW5yZWYocikuYmFsYW5jZS50b0xvY2FsZVN0cmluZygidmktVk4iKX0g4oKrYCxjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixzaXplOiJsZyJ9LG51bGwsOCxbImxhYmVsIl0pXTthKHgoayx7bGFiZWw6YCR7dC51bnJlZihyKS5iYWxhbmNlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpfSDigqtgLGNvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6ImxnIn0sbnVsbCxsLG4pKX0pLF86MX0sbCxuKSl9KSxfOjF9LHMpKSxsKCc8ZGl2PjxoMyBjbGFzcz0idGV4dC1zbSBmb250LXNlbWlib2xkIG1iLTMgdGV4dC1tdXRlZCI+IFRyYW5zYWN0aW9ucyA8L2gzPicpLGwoeChWLHtkYXRhOnQudW5yZWYoeSk/Lml0ZW1zPz9bXSxjb2x1bW5zOmh9LG51bGwscykpLCh0LnVucmVmKHkpPy5pdGVtcz8ubGVuZ3RoPz8wKT09PXQudW5yZWYoeSk/LmxpbWl0PyhsKCc8ZGl2IGNsYXNzPSJtdC0zIGZsZXgganVzdGlmeS1lbmQiPicpLGwoeChCLHtwYWdlOnQudW5yZWYoYiksIm9uVXBkYXRlOnBhZ2UiOmU9PnQuaXNSZWYoYik/Yi52YWx1ZT1lOm51bGwsdG90YWw6dC51bnJlZihiKSp0LnVucmVmKHkpLmxpbWl0KzEsInBhZ2UtY291bnQiOnQudW5yZWYoeSkubGltaXR9LG51bGwscykpLGwoIjwvZGl2PiIpKTpsKCJceDNjIS0tLS1ceDNlIiksbCgiPC9kaXY+IiksbCh4KEMse29wZW46dC51bnJlZihOKSwib25VcGRhdGU6b3BlbiI6ZT0+dC5pc1JlZihOKT9OLnZhbHVlPWU6bnVsbCxvblN1Y2Nlc3M6ZT0+dC51bnJlZihtKSgpfSxudWxsLHMpKSxsKCI8L2Rpdj4iKX19fSksVj1oLnNldHVwO2guc2V0dXA9KGUsYSk9Pntjb25zdCBsPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL3NldHRpbmdzL2JpbGxpbmcudnVlIiksVj9WKGUsYSk6dm9pZCAwfTtleHBvcnR7aCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmlsbGluZy1Cd3E4TllNXy5tanMubWFwCg==", "chunks/build/client.precomputed.mjs": "Y29uc3QgZT17ZGVwZW5kZW5jaWVzOnsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOntzY3JpcHRzOnsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnM9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJvOHRkX0cwSi5qcyIsbmFtZToiZW50cnkiLHNyYzoiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLGlzRW50cnk6ITAsZHluYW1pY0ltcG9ydHM6WyJsYXlvdXRzL2RlZmF1bHQudnVlIiwiLi4vbGF5ZXJzL2F1dGgvYXBwL2xheW91dHMvYXV0aC52dWUiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTQwNC52dWUiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWUiXSxjc3M6WyJlbnRyeS56ZFQzMUVZNS5jc3MiXSxhc3NldHM6W119fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnA9e2ZpbGU6ImVudHJ5LnpkVDMxRVk1LmNzcyIscmVzb3VyY2VUeXBlOiJzdHlsZSIscHJlZmV0Y2g6ITAscHJlbG9hZDohMH19LHByZWxvYWQ6eyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvbGF5b3V0cy9hdXRoLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL2xheW91dHMvYXV0aC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRGwtRHptN3ouanMiLG5hbWU6ImF1dGgiLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL2xheW91dHMvYXV0aC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX1pKVmswb2xOLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfWkpWazBvbE4uanMiOmQ9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJaSlZrMG9sTi5qcyIsbmFtZToiQWxlcnQiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0JTUktxR3JQLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQlNSS3FHclAuanMiOnQ9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJCU1JLcUdyUC5qcyIsbmFtZToiQ2FyZCIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvYXV0aC9sb2dpbi52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9hdXRoL2xvZ2luLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEX2N1LXFNUi5qcyIsbmFtZToibG9naW4iLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2F1dGgvbG9naW4udnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfWkpWazBvbE4uanMiLCJfQlNSS3FHclAuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9aSlZrMG9sTi5qcyI6ZCwiX0JTUktxR3JQLmpzIjp0fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvZm9yYmlkZGVuLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2ZvcmJpZGRlbi52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRFdmV3FNSnEuanMiLG5hbWU6ImZvcmJpZGRlbiIsc3JjOiIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvZm9yYmlkZGVuLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvam9pbi9bdG9rZW5dLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2pvaW4vW3Rva2VuXS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ3hjWnJZM1cuanMiLG5hbWU6Il90b2tlbl8iLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2pvaW4vW3Rva2VuXS52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CU1JLcUdyUC5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0JTUktxR3JQLmpzIjp0fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfRHhDV1FzbmwuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9EeENXUXNubC5qcyI6cj17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkR4Q1dRc25sLmpzIixuYW1lOiJpc1ZhbHVlRXF1YWxPckV4aXN0IixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CdDhTMGRtbC5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0J0OFMwZG1sLmpzIjpuPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQnQ4UzBkbWwuanMiLG5hbWU6InV0aWxzIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9EdmRoeXBEaS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0R2ZGh5cERpLmpzIjpvPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRHZkaHlwRGkuanMiLG5hbWU6IlJvdmluZ0ZvY3VzR3JvdXAiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CdDhTMGRtbC5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0J0OFMwZG1sLmpzIjpufSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ1lhbXpMbTUuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DWWFtekxtNS5qcyI6dT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNZYW16TG01LmpzIixuYW1lOiJLYmQiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9EdmRoeXBEaS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm59LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9fMmxTZHIxMy5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX18ybFNkcjEzLmpzIjppPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiXzJsU2RyMTMuanMiLG5hbWU6IkJhZGdlIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9DWG9jNFVFUi5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0NYb2M0VUVSLmpzIjpsPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ1hvYzRVRVIuanMiLG5hbWU6IlRvb2x0aXAiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DWWFtekxtNS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0NZYW16TG01LmpzIjp1LCJfRHZkaHlwRGkuanMiOm8sIl9CdDhTMGRtbC5qcyI6bn0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0RUdlhULW5SLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfRFR2WFQtblIuanMiOmI9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEVHZYVC1uUi5qcyIsbmFtZToiTmF2aWdhdGlvbk1lbnUiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9EeENXUXNubC5qcyIsIl9DWWFtekxtNS5qcyIsIl9fMmxTZHIxMy5qcyIsIl9DWG9jNFVFUi5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0R4Q1dRc25sLmpzIjpyLCJfQ1lhbXpMbTUuanMiOnUsIl9EdmRoeXBEaS5qcyI6bywiX0J0OFMwZG1sLmpzIjpuLCJfXzJsU2RyMTMuanMiOmksIl9DWG9jNFVFUi5qcyI6bH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0NjTU1GMWc5LmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQ2NNTUYxZzkuanMiOmM9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDY01NRjFnOS5qcyIsbmFtZToiRGFzaGJvYXJkVG9vbGJhciIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ3RhMTVzRy0uanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DdGExNXNHLS5qcyI6bT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkN0YTE1c0ctLmpzIixuYW1lOiJEYXNoYm9hcmRSZXNpemVIYW5kbGUiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0MxT1FpeVVELmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQzFPUWl5VUQuanMiOl89e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDMU9RaXlVRC5qcyIsbmFtZToiRGFzaGJvYXJkUGFuZWwiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DdGExNXNHLS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ2M2emloLVIuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DYzZ6aWgtUi5qcyI6YT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNjNnppaC1SLmpzIixuYW1lOiJEYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DdGExNXNHLS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQmhXUzE4aTcuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9CaFdTMThpNy5qcyI6eT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJoV1MxOGk3LmpzIixuYW1lOiJEYXNoYm9hcmRTaWRlYmFyVG9nZ2xlIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ3RhMTVzRy0uanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DdGExNXNHLS5qcyI6bX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX2docVliSVNULmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfZ2hxWWJJU1QuanMiOmo9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJnaHFZYklTVC5qcyIsbmFtZToiRGFzaGJvYXJkTmF2YmFyIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ3RhMTVzRy0uanMiLCJfQmhXUzE4aTcuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DdGExNXNHLS5qcyI6bSwiX0JoV1MxOGk3LmpzIjp5fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQmQ0LU9jMzYuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9CZDQtT2MzNi5qcyI6VD17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJkNC1PYzM2LmpzIixuYW1lOiJEYXNoYm9hcmROYXZiYXIudnVlIixpbXBvcnRzOlsiX0NjNnppaC1SLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfZ2hxWWJJU1QuanMiXX0sIl9DYzZ6aWgtUi5qcyI6YSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptLCJfZ2hxWWJJU1QuanMiOmosIl9CaFdTMThpNy5qcyI6eX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24udnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNzSzUxcXRkLmpzIixuYW1lOiJvcmdhbml6YXRpb24iLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfRFR2WFQtblIuanMiLCJfQ2NNTUYxZzkuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DMU9RaXlVRC5qcyIsIl9CZDQtT2MzNi5qcyIsIl9EeENXUXNubC5qcyIsIl9DWWFtekxtNS5qcyIsIl9EdmRoeXBEaS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9fMmxTZHIxMy5qcyIsIl9DWG9jNFVFUi5qcyIsIl9DdGExNXNHLS5qcyIsIl9DYzZ6aWgtUi5qcyIsIl9naHFZYklTVC5qcyIsIl9CaFdTMThpNy5qcyJdfSwiX0RUdlhULW5SLmpzIjpiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfRHhDV1FzbmwuanMiOnIsIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9fMmxTZHIxMy5qcyI6aSwiX0NYb2M0VUVSLmpzIjpsLCJfQ2NNTUYxZzkuanMiOmMsIl9DMU9RaXlVRC5qcyI6XywiX0N0YTE1c0ctLmpzIjptLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CMU1lTHJpMy5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0IxTWVMcmkzLmpzIjpmPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQjFNZUxyaTMuanMiLG5hbWU6IlBhZ2VDYXJkIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9kXzBOd1FMVS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX2RfME53UUxVLmpzIjp4PXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiZF8wTndRTFUuanMiLG5hbWU6IlNlcGFyYXRvciIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfN2NWU09DY3UuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il83Y1ZTT0NjdS5qcyI6aD17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IjdjVlNPQ2N1LmpzIixuYW1lOiJTZXBhcmF0b3IiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9kXzBOd1FMVS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX2RfME53UUxVLmpzIjp4fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL2luZGV4LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbmRleC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ0lDN3ZzWjUuanMiLG5hbWU6ImluZGV4IixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW5kZXgudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQjFNZUxyaTMuanMiLCJfN2NWU09DY3UuanMiLCJfXzJsU2RyMTMuanMiLCJfZF8wTndRTFUuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9CMU1lTHJpMy5qcyI6ZiwiXzdjVlNPQ2N1LmpzIjpoLCJfZF8wTndRTFUuanMiOngsIl9fMmxTZHIxMy5qcyI6aX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0I3czVwampSLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQjdzNXBqalIuanMiOlk9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJCN3M1cGpqUi5qcyIsbmFtZToidXNlRmlsdGVyIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9tMjBrZEd4VS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX20yMGtkR3hVLmpzIjpDPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToibTIwa2RHeFUuanMiLG5hbWU6IlZpc3VhbGx5SGlkZGVuSW5wdXQiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0M3WXk2dFIzLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQzdZeTZ0UjMuanMiOkU9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDN1l5NnRSMy5qcyIsbmFtZToiaW5kZXgiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0RIQ3dFTFdwLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfREhDd0VMV3AuanMiOno9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJESEN3RUxXcC5qcyIsbmFtZToidmlydHVhbGl6ZXIiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9tMjBrZEd4VS5qcyIsIl9DN1l5NnRSMy5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0J0OFMwZG1sLmpzIjpuLCJfbTIwa2RHeFUuanMiOkMsIl9DN1l5NnRSMy5qcyI6RX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX1dtRFhIWUtrLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfV21EWEhZS2suanMiOnY9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJXbURYSFlLay5qcyIsbmFtZToiU2VsZWN0TWVudSIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0I3czVwampSLmpzIiwiX0RIQ3dFTFdwLmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQjdzNXBqalIuanMiOlksIl9ESEN3RUxXcC5qcyI6eiwiX0J0OFMwZG1sLmpzIjpuLCJfbTIwa2RHeFUuanMiOkMsIl9DN1l5NnRSMy5qcyI6RX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0NXOGZLbkZFLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQ1c4ZktuRkUuanMiOmc9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDVzhmS25GRS5qcyIsbmFtZToiVGFibGUiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DN1l5NnRSMy5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0M3WXk2dFIzLmpzIjpFfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ0FVQVg1VnIuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DQVVBWDVWci5qcyI6RD17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNBVUFYNVZyLmpzIixuYW1lOiJTd2l0Y2giLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9tMjBrZEd4VS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX20yMGtkR3hVLmpzIjpDfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ2ZfZncxRTkuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DZl9mdzFFOS5qcyI6Qj17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNmX2Z3MUU5LmpzIixuYW1lOiJ1c2VQcm9qZWN0QXBpIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CQXVuaS1xZC5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0JBdW5pLXFkLmpzIjpTPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQkF1bmktcWQuanMiLG5hbWU6InVzZUluZmluaXRlTGlzdCIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfRG03OTRxeEkuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9EbTc5NHF4SS5qcyI6Uj17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRtNzk0cXhJLmpzIixuYW1lOiJ1cmwiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9tZW1iZXJzLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9tZW1iZXJzLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDZmhZRllPWS5qcyIsbmFtZToibWVtYmVycyIsc3JjOiIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL21lbWJlcnMudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX1pKVmswb2xOLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfXzJsU2RyMTMuanMiLCJfV21EWEhZS2suanMiLCJfQlNSS3FHclAuanMiLCJfQ1c4ZktuRkUuanMiLCJfQ0FVQVg1VnIuanMiLCJfQ2ZfZncxRTkuanMiLCJfQkF1bmktcWQuanMiLCJfRG03OTRxeEkuanMiLCJfQjdzNXBqalIuanMiLCJfREhDd0VMV3AuanMiLCJfQnQ4UzBkbWwuanMiLCJfbTIwa2RHeFUuanMiLCJfQzdZeTZ0UjMuanMiXX0sIl9aSlZrMG9sTi5qcyI6ZCwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX18ybFNkcjEzLmpzIjppLCJfV21EWEhZS2suanMiOnYsIl9CN3M1cGpqUi5qcyI6WSwiX0RIQ3dFTFdwLmpzIjp6LCJfQnQ4UzBkbWwuanMiOm4sIl9tMjBrZEd4VS5qcyI6QywiX0M3WXk2dFIzLmpzIjpFLCJfQlNSS3FHclAuanMiOnQsIl9DVzhmS25GRS5qcyI6ZywiX0NBVUFYNVZyLmpzIjpELCJfQ2ZfZncxRTkuanMiOkIsIl9CQXVuaS1xZC5qcyI6UywiX0RtNzk0cXhJLmpzIjpSfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL3JvbGVzLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9yb2xlcy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQld2cWx3NWYuanMiLG5hbWU6InJvbGVzIixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vcm9sZXMudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQjFNZUxyaTMuanMiLCJfRHhDV1FzbmwuanMiLCJfbTIwa2RHeFUuanMiLCJfQnQ4UzBkbWwuanMiLCJfRHZkaHlwRGkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9CMU1lTHJpMy5qcyI6ZiwiX0R4Q1dRc25sLmpzIjpyLCJfbTIwa2RHeFUuanMiOkMsIl9CdDhTMGRtbC5qcyI6biwiX0R2ZGh5cERpLmpzIjpvfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ2w0aTRyU00uanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DbDRpNHJTTS5qcyI6Rz17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNsNGk0clNNLmpzIixuYW1lOiJEYXNoYm9hcmRTZXNzaW9uQ2FyZC52dWUiLGltcG9ydHM6WyJfXzJsU2RyMTMuanMiLCJfQlNSS3FHclAuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiX18ybFNkcjEzLmpzIjppLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQlNSS3FHclAuanMiOnR9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zYW5kYm94L2ltcGVyc29uYXRlLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NhbmRib3gvaW1wZXJzb25hdGUudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRUVExyNUhyLmpzIixuYW1lOiJpbXBlcnNvbmF0ZSIsc3JjOiIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2FuZGJveC9pbXBlcnNvbmF0ZS52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQzFPUWl5VUQuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CU1JLcUdyUC5qcyIsIl9DbDRpNHJTTS5qcyIsIl9DdGExNXNHLS5qcyIsIl9CaFdTMThpNy5qcyIsIl9fMmxTZHIxMy5qcyJdfSwiX0NjNnppaC1SLmpzIjphLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQ3RhMTVzRy0uanMiOm0sIl9naHFZYklTVC5qcyI6aiwiX0JoV1MxOGk3LmpzIjp5LCJfQzFPUWl5VUQuanMiOl8sIl9CU1JLcUdyUC5qcyI6dCwiX0NsNGk0clNNLmpzIjpHLCJfXzJsU2RyMTMuanMiOml9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ3F5V3JOTnguanMiLG5hbWU6InNldHRpbmdzIixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfRFR2WFQtblIuanMiLCJfQ2NNTUYxZzkuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DMU9RaXlVRC5qcyIsIl9CZDQtT2MzNi5qcyIsIl9EeENXUXNubC5qcyIsIl9DWWFtekxtNS5qcyIsIl9EdmRoeXBEaS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9fMmxTZHIxMy5qcyIsIl9DWG9jNFVFUi5qcyIsIl9DdGExNXNHLS5qcyIsIl9DYzZ6aWgtUi5qcyIsIl9naHFZYklTVC5qcyIsIl9CaFdTMThpNy5qcyJdfSwiX0RUdlhULW5SLmpzIjpiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfRHhDV1FzbmwuanMiOnIsIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9fMmxTZHIxMy5qcyI6aSwiX0NYb2M0VUVSLmpzIjpsLCJfQ2NNTUYxZzkuanMiOmMsIl9DMU9RaXlVRC5qcyI6XywiX0N0YTE1c0ctLmpzIjptLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9ET0NGRFRjWS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0RPQ0ZEVGNZLmpzIjpVPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRE9DRkRUY1kuanMiLG5hbWU6IkZvcm0iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0J1TFN1QThNLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6e30scHJlbG9hZDp7Il9CdUxTdUE4TS5qcyI6TT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJ1TFN1QThNLmpzIixuYW1lOiJzY2hlbWFzIn19LHByZWZldGNoOnt9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJCTXliRzRPay5qcyIsbmFtZToiaW5kZXgiLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0IxTWVMcmkzLmpzIiwiXzdjVlNPQ2N1LmpzIiwiX0RPQ0ZEVGNZLmpzIiwiX0J1TFN1QThNLmpzIiwiX2RfME53UUxVLmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQjFNZUxyaTMuanMiOmYsIl83Y1ZTT0NjdS5qcyI6aCwiX2RfME53UUxVLmpzIjp4LCJfRE9DRkRUY1kuanMiOlUsIl9CdUxTdUE4TS5qcyI6TX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL25vdGlmaWNhdGlvbnMudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvbm90aWZpY2F0aW9ucy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ1ltbE1JWHouanMiLG5hbWU6Im5vdGlmaWNhdGlvbnMiLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL25vdGlmaWNhdGlvbnMudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX0IxTWVMcmkzLmpzIiwiX0NBVUFYNVZyLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfbTIwa2RHeFUuanMiXX0sIl9CMU1lTHJpMy5qcyI6ZiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0NBVUFYNVZyLmpzIjpELCJfbTIwa2RHeFUuanMiOkN9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9zZWN1cml0eS52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9zZWN1cml0eS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQnJOUlZJQkEuanMiLG5hbWU6InNlY3VyaXR5IixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9zZWN1cml0eS52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfQjFNZUxyaTMuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiX0IxTWVMcmkzLmpzIjpmLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfRGM0NlF3REouanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9EYzQ2UXdESi5qcyI6Vz17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRjNDZRd0RKLmpzIixuYW1lOiJ1c2VCaWxsaW5nQXBpIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9iaWxsaW5nL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW52b2ljZS52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9iaWxsaW5nL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW52b2ljZS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRHVFQWZuaHEuanMiLG5hbWU6Imludm9pY2UiLHNyYzoiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbnZvaWNlLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0IxTWVMcmkzLmpzIiwiX0NXOGZLbkZFLmpzIiwiX0RjNDZRd0RKLmpzIiwiX0M3WXk2dFIzLmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQjFNZUxyaTMuanMiOmYsIl9DVzhmS25GRS5qcyI6ZywiX0M3WXk2dFIzLmpzIjpFLCJfRGM0NlF3REouanMiOld9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CZFpYNXhnZi5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0JkWlg1eGdmLmpzIjpMPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQmRaWDV4Z2YuanMiLG5hbWU6IlBhZ2luYXRpb24iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL3NldHRpbmdzL2JpbGxpbmcudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvYmlsbGluZy9hcHAvcGFnZXMvc2V0dGluZ3MvYmlsbGluZy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQmVFTUN5dVouanMiLG5hbWU6ImJpbGxpbmciLHNyYzoiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL3NldHRpbmdzL2JpbGxpbmcudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQjFNZUxyaTMuanMiLCJfXzJsU2RyMTMuanMiLCJfQ1c4ZktuRkUuanMiLCJfQmRaWDV4Z2YuanMiLCJfRGM0NlF3REouanMiLCJfQzdZeTZ0UjMuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9CMU1lTHJpMy5qcyI6ZiwiX18ybFNkcjEzLmpzIjppLCJfQ1c4ZktuRkUuanMiOmcsIl9DN1l5NnRSMy5qcyI6RSwiX0JkWlg1eGdmLmpzIjpMLCJfRGM0NlF3REouanMiOld9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9EWVpsZzAtNS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0RZWmxnMC01LmpzIjpxPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRFlabGcwLTUuanMiLG5hbWU6InVzZVByb2R1Y3RBcGkiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0NHWGdTTVpoLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQ0dYZ1NNWmguanMiOlg9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDR1hnU01aaC5qcyIsbmFtZToiU2tlbGV0b24iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiXzRsSG15SGJILmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfNGxIbXlIYkguanMiOk89e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiI0bEhteUhiSC5qcyIsbmFtZToiRHJvcGRvd25NZW51IixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ1lhbXpMbTUuanMiLCJfQjdzNXBqalIuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9CN3M1cGpqUi5qcyI6WX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL3Byb2R1Y3QvYXBwL3BhZ2VzL3Byb2R1Y3RzLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3Byb2R1Y3QvYXBwL3BhZ2VzL3Byb2R1Y3RzLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEcEF2dE44Zy5qcyIsbmFtZToicHJvZHVjdHMiLHNyYzoiLi4vbGF5ZXJzL3Byb2R1Y3QvYXBwL3BhZ2VzL3Byb2R1Y3RzLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0MxT1FpeVVELmpzIiwiX0RZWmxnMC01LmpzIiwiX0RPQ0ZEVGNZLmpzIiwiX0J1TFN1QThNLmpzIiwiX0NHWGdTTVpoLmpzIiwiX18ybFNkcjEzLmpzIiwiXzRsSG15SGJILmpzIiwiX0JkNC1PYzM2LmpzIiwiX0N0YTE1c0ctLmpzIiwiX0NZYW16TG01LmpzIiwiX0R2ZGh5cERpLmpzIiwiX0J0OFMwZG1sLmpzIiwiX0I3czVwampSLmpzIiwiX0NjNnppaC1SLmpzIiwiX2docVliSVNULmpzIiwiX0JoV1MxOGk3LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQzFPUWl5VUQuanMiOl8sIl9DdGExNXNHLS5qcyI6bSwiX0RZWmxnMC01LmpzIjpxLCJfRE9DRkRUY1kuanMiOlUsIl9CdUxTdUE4TS5qcyI6TSwiX0NHWGdTTVpoLmpzIjpYLCJfXzJsU2RyMTMuanMiOmksIl80bEhteUhiSC5qcyI6TywiX0NZYW16TG01LmpzIjp1LCJfRHZkaHlwRGkuanMiOm8sIl9CdDhTMGRtbC5qcyI6biwiX0I3czVwampSLmpzIjpZLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9baWRdLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3Byb2plY3QvYXBwL3BhZ2VzL3Byb2plY3RzL1tpZF0udnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6ImNkS19BNk5tLmpzIixuYW1lOiJfaWRfIixzcmM6Ii4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9baWRdLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX18ybFNkcjEzLmpzIiwiX0NHWGdTTVpoLmpzIiwiX0MxT1FpeVVELmpzIiwiX0RZWmxnMC01LmpzIiwiX0NmX2Z3MUU5LmpzIiwiX0JkNC1PYzM2LmpzIiwiX0N0YTE1c0ctLmpzIiwiX0NjNnppaC1SLmpzIiwiX2docVliSVNULmpzIiwiX0JoV1MxOGk3LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfXzJsU2RyMTMuanMiOmksIl9DR1hnU01aaC5qcyI6WCwiX0MxT1FpeVVELmpzIjpfLCJfQ3RhMTVzRy0uanMiOm0sIl9EWVpsZzAtNS5qcyI6cSwiX0NmX2Z3MUU5LmpzIjpCLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9pbmRleC52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9pbmRleC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ29JZHo0a2EuanMiLG5hbWU6ImluZGV4IixzcmM6Ii4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9pbmRleC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DMU9RaXlVRC5qcyIsIl9DZl9mdzFFOS5qcyIsIl9ET0NGRFRjWS5qcyIsIl9CdUxTdUE4TS5qcyIsIl9DR1hnU01aaC5qcyIsIl9fMmxTZHIxMy5qcyIsIl80bEhteUhiSC5qcyIsIl9CZDQtT2MzNi5qcyIsIl9DdGExNXNHLS5qcyIsIl9DWWFtekxtNS5qcyIsIl9EdmRoeXBEaS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9CN3M1cGpqUi5qcyIsIl9DYzZ6aWgtUi5qcyIsIl9naHFZYklTVC5qcyIsIl9CaFdTMThpNy5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0MxT1FpeVVELmpzIjpfLCJfQ3RhMTVzRy0uanMiOm0sIl9DZl9mdzFFOS5qcyI6QiwiX0RPQ0ZEVGNZLmpzIjpVLCJfQnVMU3VBOE0uanMiOk0sIl9DR1hnU01aaC5qcyI6WCwiX18ybFNkcjEzLmpzIjppLCJfNGxIbXlIYkguanMiOk8sIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9CN3M1cGpqUi5qcyI6WSwiX0JkNC1PYzM2LmpzIjpULCJfQ2M2emloLVIuanMiOmEsIl9naHFZYklTVC5qcyI6aiwiX0JoV1MxOGk3LmpzIjp5fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvcmVmZXJyYWwvYXBwL3BhZ2VzL3JlZmVycmFsLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9wYWdlcy9yZWZlcnJhbC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQlN5MGkyQWYuanMiLG5hbWU6InJlZmVycmFsIixzcmM6Ii4uL2xheWVycy9yZWZlcnJhbC9hcHAvcGFnZXMvcmVmZXJyYWwudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX18ybFNkcjEzLmpzIiwiX0IxTWVMcmkzLmpzIiwiX0JTUktxR3JQLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ1c4ZktuRkUuanMiLCJfQmRaWDV4Z2YuanMiLCJfQzFPUWl5VUQuanMiLCJfRG03OTRxeEkuanMiLCJfQmQ0LU9jMzYuanMiLCJfQzdZeTZ0UjMuanMiLCJfQ3RhMTVzRy0uanMiLCJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQmhXUzE4aTcuanMiXX0sIl9fMmxTZHIxMy5qcyI6aSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0IxTWVMcmkzLmpzIjpmLCJfQlNSS3FHclAuanMiOnQsIl9DVzhmS25GRS5qcyI6ZywiX0M3WXk2dFIzLmpzIjpFLCJfQmRaWDV4Z2YuanMiOkwsIl9DMU9RaXlVRC5qcyI6XywiX0N0YTE1c0ctLmpzIjptLCJfRG03OTRxeEkuanMiOlIsIl9CZDQtT2MzNi5qcyI6VCwiX0NjNnppaC1SLmpzIjphLCJfZ2hxWWJJU1QuanMiOmosIl9CaFdTMThpNy5qcyI6eX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL3NlbGZob3N0L2FwcC9wYWdlcy9zZXR0aW5ncy9zZWxmLWhvc3QudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRHRTdGZWbVQuanMiLG5hbWU6InNlbGYtaG9zdCIsc3JjOiIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9aSlZrMG9sTi5qcyIsIl9fMmxTZHIxMy5qcyIsIl9CU1JLcUdyUC5qcyIsIl9DMU9RaXlVRC5qcyIsIl9DdGExNXNHLS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX1pKVmswb2xOLmpzIjpkLCJfXzJsU2RyMTMuanMiOmksIl9CU1JLcUdyUC5qcyI6dCwiX0MxT1FpeVVELmpzIjpfLCJfQ3RhMTVzRy0uanMiOm19LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CWmxOTmZrNC5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0JabE5OZms0LmpzIjprPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQlpsTk5mazQuanMiLG5hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL3N1cHBvcnQvYXBwL3BhZ2VzL3N1cHBvcnQudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvc3VwcG9ydC9hcHAvcGFnZXMvc3VwcG9ydC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQkZPTm82M1guanMiLG5hbWU6InN1cHBvcnQiLHNyYzoiLi4vbGF5ZXJzL3N1cHBvcnQvYXBwL3BhZ2VzL3N1cHBvcnQudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX2docVliSVNULmpzIiwiX18ybFNkcjEzLmpzIiwiX0MxT1FpeVVELmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQlpsTk5mazQuanMiLCJfQ3RhMTVzRy0uanMiLCJfQmhXUzE4aTcuanMiXX0sIl9naHFZYklTVC5qcyI6aiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptLCJfQmhXUzE4aTcuanMiOnksIl9fMmxTZHIxMy5qcyI6aSwiX0MxT1FpeVVELmpzIjpfLCJfQlpsTk5mazQuanMiOmt9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQlNHdDN4UlcuanMiLG5hbWU6InN5c3RlbSIsc3JjOiIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0udnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX0RUdlhULW5SLmpzIiwiX0NjTU1GMWc5LmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQzFPUWl5VUQuanMiLCJfQmQ0LU9jMzYuanMiLCJfRHhDV1FzbmwuanMiLCJfQ1lhbXpMbTUuanMiLCJfRHZkaHlwRGkuanMiLCJfQnQ4UzBkbWwuanMiLCJfXzJsU2RyMTMuanMiLCJfQ1hvYzRVRVIuanMiLCJfQ3RhMTVzRy0uanMiLCJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQmhXUzE4aTcuanMiXX0sIl9EVHZYVC1uUi5qcyI6YiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0R4Q1dRc25sLmpzIjpyLCJfQ1lhbXpMbTUuanMiOnUsIl9EdmRoeXBEaS5qcyI6bywiX0J0OFMwZG1sLmpzIjpuLCJfXzJsU2RyMTMuanMiOmksIl9DWG9jNFVFUi5qcyI6bCwiX0NjTU1GMWc5LmpzIjpjLCJfQzFPUWl5VUQuanMiOl8sIl9DdGExNXNHLS5qcyI6bSwiX0JkNC1PYzM2LmpzIjpULCJfQ2M2emloLVIuanMiOmEsIl9naHFZYklTVC5qcyI6aiwiX0JoV1MxOGk3LmpzIjp5fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vaW5kZXgudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vaW5kZXgudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IjFESWtCeU1kLmpzIixuYW1lOiJpbmRleCIsc3JjOiIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vaW5kZXgudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS9ub3RpZmljYXRpb25zLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL25vdGlmaWNhdGlvbnMudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRiQzRwM1FBLmpzIixuYW1lOiJub3RpZmljYXRpb25zIixzcmM6Ii4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS9ub3RpZmljYXRpb25zLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIl9CMU1lTHJpMy5qcyIsIl9DQVVBWDVWci5qcyIsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX1dtRFhIWUtrLmpzIiwiX2RfME53UUxVLmpzIiwiXzRsSG15SGJILmpzIiwiX0NYb2M0VUVSLmpzIiwiX1pKVmswb2xOLmpzIiwiX0J1TFN1QThNLmpzIiwiX20yMGtkR3hVLmpzIiwiX0I3czVwampSLmpzIiwiX0RIQ3dFTFdwLmpzIiwiX0J0OFMwZG1sLmpzIiwiX0M3WXk2dFIzLmpzIiwiX0NZYW16TG01LmpzIiwiX0R2ZGh5cERpLmpzIl19LCJfQjFNZUxyaTMuanMiOmYsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DQVVBWDVWci5qcyI6RCwiX20yMGtkR3hVLmpzIjpDLCJfV21EWEhZS2suanMiOnYsIl9CN3M1cGpqUi5qcyI6WSwiX0RIQ3dFTFdwLmpzIjp6LCJfQnQ4UzBkbWwuanMiOm4sIl9DN1l5NnRSMy5qcyI6RSwiX2RfME53UUxVLmpzIjp4LCJfNGxIbXlIYkguanMiOk8sIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQ1hvYzRVRVIuanMiOmwsIl9aSlZrMG9sTi5qcyI6ZCwiX0J1TFN1QThNLmpzIjpNfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vdGlja2V0cy52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS90aWNrZXRzLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJONkswcnF0Yy5qcyIsbmFtZToidGlja2V0cyIsc3JjOiIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vdGlja2V0cy52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DQVVBWDVWci5qcyIsIl9fMmxTZHIxMy5qcyIsIl9CWmxOTmZrNC5qcyIsIl9tMjBrZEd4VS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0NBVUFYNVZyLmpzIjpELCJfbTIwa2RHeFUuanMiOkMsIl9fMmxTZHIxMy5qcyI6aSwiX0JabE5OZms0LmpzIjprfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTQwNC52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEUGZaa2wyZS5qcyIsbmFtZToiZXJyb3ItNDA0IixzcmM6Ii4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl0sY3NzOltdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyI6e3NjcmlwdHM6e30sc3R5bGVzOnt9LHByZWxvYWQ6eyJlcnJvci00MDQuQ0ZVNW9nTm0uY3NzIjp7ZmlsZToiZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyIscmVzb3VyY2VUeXBlOiJzdHlsZSIscHJlZmV0Y2g6ITAscHJlbG9hZDohMH19LHByZWZldGNoOnt9fSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci01MDAudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiWlpzZlA5S1ouanMiLG5hbWU6ImVycm9yLTUwMCIsc3JjOiIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdLGNzczpbXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sImVycm9yLTUwMC5CNWFUNFA3Wi5jc3MiOntzY3JpcHRzOnt9LHN0eWxlczp7fSxwcmVsb2FkOnsiZXJyb3ItNTAwLkI1YVQ0UDdaLmNzcyI6e2ZpbGU6ImVycm9yLTUwMC5CNWFUNFA3Wi5jc3MiLHJlc291cmNlVHlwZToic3R5bGUiLHByZWZldGNoOiEwLHByZWxvYWQ6ITB9fSxwcmVmZXRjaDp7fX0sImVudHJ5LnpkVDMxRVk1LmNzcyI6e3NjcmlwdHM6e30sc3R5bGVzOnt9LHByZWxvYWQ6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnt9fSwibGF5b3V0cy9kZWZhdWx0LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsibGF5b3V0cy9kZWZhdWx0LnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDRkJ0Y0I3by5qcyIsbmFtZToiZGVmYXVsdCIsc3JjOiJsYXlvdXRzL2RlZmF1bHQudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ3RhMTVzRy0uanMiLCJfQ1lhbXpMbTUuanMiLCJfQ1hvYzRVRVIuanMiLCJfRFR2WFQtblIuanMiLCJfQmhXUzE4aTcuanMiLCJfREhDd0VMV3AuanMiLCJfNGxIbXlIYkguanMiLCJfQkF1bmktcWQuanMiLCJfRHZkaHlwRGkuanMiLCJfQnQ4UzBkbWwuanMiLCJfRHhDV1FzbmwuanMiLCJfXzJsU2RyMTMuanMiLCJfbTIwa2RHeFUuanMiLCJfQzdZeTZ0UjMuanMiLCJfQjdzNXBqalIuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DdGExNXNHLS5qcyI6bSwiX0NZYW16TG01LmpzIjp1LCJfRHZkaHlwRGkuanMiOm8sIl9CdDhTMGRtbC5qcyI6biwiX0NYb2M0VUVSLmpzIjpsLCJfRFR2WFQtblIuanMiOmIsIl9EeENXUXNubC5qcyI6ciwiX18ybFNkcjEzLmpzIjppLCJfQmhXUzE4aTcuanMiOnksIl9ESEN3RUxXcC5qcyI6eiwiX20yMGtkR3hVLmpzIjpDLCJfQzdZeTZ0UjMuanMiOkUsIl80bEhteUhiSC5qcyI6TywiX0I3czVwampSLmpzIjpZLCJfQkF1bmktcWQuanMiOlN9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sInBhZ2VzL2Rhc2hib2FyZC52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7InBhZ2VzL2Rhc2hib2FyZC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiczNwMGMwM00uanMiLG5hbWU6ImRhc2hib2FyZCIsc3JjOiJwYWdlcy9kYXNoYm9hcmQudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX0MxT1FpeVVELmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQlNSS3FHclAuanMiLCJfQmQ0LU9jMzYuanMiLCJfQ2w0aTRyU00uanMiLCJfQ3RhMTVzRy0uanMiLCJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQmhXUzE4aTcuanMiLCJfXzJsU2RyMTMuanMiXX0sIl9DMU9RaXlVRC5qcyI6XywiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptLCJfQlNSS3FHclAuanMiOnQsIl9CZDQtT2MzNi5qcyI6VCwiX0NjNnppaC1SLmpzIjphLCJfZ2hxWWJJU1QuanMiOmosIl9CaFdTMThpNy5qcyI6eSwiX0NsNGk0clNNLmpzIjpHLCJfXzJsU2RyMTMuanMiOml9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sInBhZ2VzL2luZGV4LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsicGFnZXMvaW5kZXgudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJoYUdvYXpvLmpzIixuYW1lOiJpbmRleCIsc3JjOiJwYWdlcy9pbmRleC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fX0sZW50cnlwb2ludHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdLG1vZHVsZXM6eyIuLi9sYXllcnMvYXV0aC9hcHAvbGF5b3V0cy9hdXRoLnZ1ZSI6e2ZpbGU6IkRsLUR6bTd6LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9hdXRoL2xvZ2luLnZ1ZSI6e2ZpbGU6IkRfY3UtcU1SLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9mb3JiaWRkZW4udnVlIjp7ZmlsZToiRFdmV3FNSnEuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2pvaW4vW3Rva2VuXS52dWUiOntmaWxlOiJDeGNaclkzVy5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uLnZ1ZSI6e2ZpbGU6IkNzSzUxcXRkLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW5kZXgudnVlIjp7ZmlsZToiQ0lDN3ZzWjUuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9tZW1iZXJzLnZ1ZSI6e2ZpbGU6IkNmaFlGWU9ZLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vcm9sZXMudnVlIjp7ZmlsZToiQld2cWx3NWYuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NhbmRib3gvaW1wZXJzb25hdGUudnVlIjp7ZmlsZToiRFRUTHI1SHIuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzLnZ1ZSI6e2ZpbGU6IkNxeVdyTk54LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9pbmRleC52dWUiOntmaWxlOiJCTXliRzRPay5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvbm90aWZpY2F0aW9ucy52dWUiOntmaWxlOiJDWW1sTUlYei5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvc2VjdXJpdHkudnVlIjp7ZmlsZToiQnJOUlZJQkEuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbnZvaWNlLnZ1ZSI6e2ZpbGU6IkR1RUFmbmhxLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9iaWxsaW5nL2FwcC9wYWdlcy9zZXR0aW5ncy9iaWxsaW5nLnZ1ZSI6e2ZpbGU6IkJlRU1DeXVaLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9wcm9kdWN0L2FwcC9wYWdlcy9wcm9kdWN0cy52dWUiOntmaWxlOiJEcEF2dE44Zy5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvcHJvamVjdC9hcHAvcGFnZXMvcHJvamVjdHMvW2lkXS52dWUiOntmaWxlOiJjZEtfQTZObS5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvcHJvamVjdC9hcHAvcGFnZXMvcHJvamVjdHMvaW5kZXgudnVlIjp7ZmlsZToiQ29JZHo0a2EuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9wYWdlcy9yZWZlcnJhbC52dWUiOntmaWxlOiJCU3kwaTJBZi5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiOntmaWxlOiJEdFN0ZlZtVC5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvc3VwcG9ydC9hcHAvcGFnZXMvc3VwcG9ydC52dWUiOntmaWxlOiJCRk9ObzYzWC5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0udnVlIjp7ZmlsZToiQlNHdDN4UlcuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL2luZGV4LnZ1ZSI6e2ZpbGU6IjFESWtCeU1kLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS9ub3RpZmljYXRpb25zLnZ1ZSI6e2ZpbGU6IkRiQzRwM1FBLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS90aWNrZXRzLnZ1ZSI6e2ZpbGU6Ik42SzBycXRjLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSI6e2ZpbGU6IkRQZlprbDJlLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sImVycm9yLTQwNC5DRlU1b2dObS5jc3MiOntmaWxlOiJlcnJvci00MDQuQ0ZVNW9nTm0uY3NzIixyZXNvdXJjZVR5cGU6InN0eWxlIixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOnZvaWQgMH0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNTAwLnZ1ZSI6e2ZpbGU6Ilpac2ZQOUtaLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sImVycm9yLTUwMC5CNWFUNFA3Wi5jc3MiOntmaWxlOiJlcnJvci01MDAuQjVhVDRQN1ouY3NzIixyZXNvdXJjZVR5cGU6InN0eWxlIixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOnZvaWQgMH0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjp7ZmlsZToibzh0ZF9HMEouanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiZW50cnkuemRUMzFFWTUuY3NzIjp7ZmlsZToiZW50cnkuemRUMzFFWTUuY3NzIixyZXNvdXJjZVR5cGU6InN0eWxlIixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOnZvaWQgMH0sIl80bEhteUhiSC5qcyI6e2ZpbGU6IjRsSG15SGJILmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl83Y1ZTT0NjdS5qcyI6e2ZpbGU6IjdjVlNPQ2N1LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CMU1lTHJpMy5qcyI6e2ZpbGU6IkIxTWVMcmkzLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CN3M1cGpqUi5qcyI6e2ZpbGU6IkI3czVwampSLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CQXVuaS1xZC5qcyI6e2ZpbGU6IkJBdW5pLXFkLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CU1JLcUdyUC5qcyI6e2ZpbGU6IkJTUktxR3JQLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CWmxOTmZrNC5qcyI6e2ZpbGU6IkJabE5OZms0LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CZDQtT2MzNi5qcyI6e2ZpbGU6IkJkNC1PYzM2LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CZFpYNXhnZi5qcyI6e2ZpbGU6IkJkWlg1eGdmLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CaFdTMThpNy5qcyI6e2ZpbGU6IkJoV1MxOGk3LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CdDhTMGRtbC5qcyI6e2ZpbGU6IkJ0OFMwZG1sLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CdUxTdUE4TS5qcyI6e2ZpbGU6IkJ1TFN1QThNLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DMU9RaXlVRC5qcyI6e2ZpbGU6IkMxT1FpeVVELmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DN1l5NnRSMy5qcyI6e2ZpbGU6IkM3WXk2dFIzLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DQVVBWDVWci5qcyI6e2ZpbGU6IkNBVUFYNVZyLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DR1hnU01aaC5qcyI6e2ZpbGU6IkNHWGdTTVpoLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DVzhmS25GRS5qcyI6e2ZpbGU6IkNXOGZLbkZFLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DWG9jNFVFUi5qcyI6e2ZpbGU6IkNYb2M0VUVSLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DWWFtekxtNS5qcyI6e2ZpbGU6IkNZYW16TG01LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DYzZ6aWgtUi5qcyI6e2ZpbGU6IkNjNnppaC1SLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DY01NRjFnOS5qcyI6e2ZpbGU6IkNjTU1GMWc5LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DZl9mdzFFOS5qcyI6e2ZpbGU6IkNmX2Z3MUU5LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DbDRpNHJTTS5qcyI6e2ZpbGU6IkNsNGk0clNNLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DdGExNXNHLS5qcyI6e2ZpbGU6IkN0YTE1c0ctLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9ESEN3RUxXcC5qcyI6e2ZpbGU6IkRIQ3dFTFdwLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9ET0NGRFRjWS5qcyI6e2ZpbGU6IkRPQ0ZEVGNZLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EVHZYVC1uUi5qcyI6e2ZpbGU6IkRUdlhULW5SLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EWVpsZzAtNS5qcyI6e2ZpbGU6IkRZWmxnMC01LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EYzQ2UXdESi5qcyI6e2ZpbGU6IkRjNDZRd0RKLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EbTc5NHF4SS5qcyI6e2ZpbGU6IkRtNzk0cXhJLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EdmRoeXBEaS5qcyI6e2ZpbGU6IkR2ZGh5cERpLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EeENXUXNubC5qcyI6e2ZpbGU6IkR4Q1dRc25sLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9XbURYSFlLay5qcyI6e2ZpbGU6IldtRFhIWUtrLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9aSlZrMG9sTi5qcyI6e2ZpbGU6IlpKVmswb2xOLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9fMmxTZHIxMy5qcyI6e2ZpbGU6Il8ybFNkcjEzLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9kXzBOd1FMVS5qcyI6e2ZpbGU6ImRfME53UUxVLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9naHFZYklTVC5qcyI6e2ZpbGU6ImdocVliSVNULmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9tMjBrZEd4VS5qcyI6e2ZpbGU6Im0yMGtkR3hVLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sImxheW91dHMvZGVmYXVsdC52dWUiOntmaWxlOiJDRkJ0Y0I3by5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCJwYWdlcy9kYXNoYm9hcmQudnVlIjp7ZmlsZToiczNwMGMwM00uanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwicGFnZXMvaW5kZXgudnVlIjp7ZmlsZToiQmhhR29hem8uanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfX19O3ZhciBzLHAsZCx0LHIsbixvLHUsaSxsLGIsYyxtLF8sYSx5LGosVCxmLHgsaCxZLEMsRSx6LHYsZyxELEIsUyxSLEcsVSxNLFcsTCxxLFgsTyxrO2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jbGllbnQucHJlY29tcHV0ZWQubWpzLm1hcAo=", "chunks/build/dashboard-kTV2AP-w.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9DYXJkLW5vdmdxUm9wLm1qcyI7aW1wb3J0e3YgYXMgcyx1IGFzIHIsaCBhcyBvLGIgYXMgYX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e18gYXMgZH1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vRGFzaGJvYXJkU2Vzc2lvbkNhcmQtREtDOWZrTWUubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtjb25zdCBtPXMuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRhc2hib2FyZEdldHRpbmdTdGFydGVkIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCByPW8oKSxkPXMuY29tcHV0ZWQoKCk9PihyLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKS5pbmNsdWRlcygidXNlcjppbXBlcnNvbmF0ZSIpKTtyZXR1cm4oZSxyLG8saSk9Pntjb25zdCBtPWE7cihuKHQsaSx7aGVhZGVyOnMud2l0aEN0eCgoZSx0LHIsbyk9PntpZighdClyZXR1cm5bcy5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIEdldCBzdGFydGVkICIpXTt0KGA8cCBjbGFzcz0iZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7b30+IEdldCBzdGFydGVkIDwvcD5gKX0pLGRlZmF1bHQ6cy53aXRoQ3R4KChlLHQscixvKT0+e2lmKCF0KXJldHVybltzLmNyZWF0ZVZOb2RlKCJ1bCIse2NsYXNzOiJzcGFjZS15LTIgdGV4dC1zbSJ9LFtzLnVucmVmKGQpPyhzLm9wZW5CbG9jaygpLHMuY3JlYXRlQmxvY2soImxpIix7a2V5OjAsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIn0sW3MuY3JlYXRlVk5vZGUobSx7bmFtZToiaS1sdWNpZGUtdXNlci1jb2ciLGNsYXNzOiJzaXplLTQgdGV4dC1tdXRlZCJ9KSxzLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVXNlIHRoZSBkcm9wZG93biBhdCB0aGUgdG9wIG9mIHRoZSBzaWRlYmFyIHRvIGltcGVyc29uYXRlIGFueSB1c2VyLiIpXSkpOnMuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTt0KGA8dWwgY2xhc3M9InNwYWNlLXktMiB0ZXh0LXNtIiR7b30+YCkscy51bnJlZihkKT8odChgPGxpIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiIke299PmApLHQobihtLHtuYW1lOiJpLWx1Y2lkZS11c2VyLWNvZyIsY2xhc3M6InNpemUtNCB0ZXh0LW11dGVkIn0sbnVsbCxyLG8pKSx0KGA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke299PlVzZSB0aGUgZHJvcGRvd24gYXQgdGhlIHRvcCBvZiB0aGUgc2lkZWJhciB0byBpbXBlcnNvbmF0ZSBhbnkgdXNlci48L3NwYW4+PC9saT5gKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoIjwvdWw+Iil9KSxfOjF9LG8pKX19fSksbD1tLnNldHVwO20uc2V0dXA9KGUsdCk9Pntjb25zdCByPXMudXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiY29tcG9uZW50cy9EYXNoYm9hcmQvRGFzaGJvYXJkR2V0dGluZ1N0YXJ0ZWQudnVlIiksbD9sKGUsdCk6dm9pZCAwfTtjb25zdCBwPXMuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6ImRhc2hib2FyZCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXA6dD0+KHIoe3RpdGxlOiJEYXNoYm9hcmQifSksKHQscixvLGEpPT57cihuKGUscy5tZXJnZVByb3BzKHtpZDoiZGFzaGJvYXJkIn0sYSkse2hlYWRlcjpzLndpdGhDdHgoKGUsdCxyLG8pPT57aWYoIXQpcmV0dXJuW3MuY3JlYXRlVk5vZGUoZCx7dGl0bGU6IkhvbWUifSldO3QobihkLHt0aXRsZToiSG9tZSJ9LG51bGwscixvKSl9KSxib2R5OnMud2l0aEN0eCgoZSx0LHIsbyk9PntpZighdClyZXR1cm5bcy5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InNwYWNlLXktNiJ9LFtzLmNyZWF0ZVZOb2RlKGkpLHMuY3JlYXRlVk5vZGUobSldKV07dChgPGRpdiBjbGFzcz0ic3BhY2UteS02IiR7b30+YCksdChuKGksbnVsbCxudWxsLHIsbykpLHQobihtLG51bGwsbnVsbCxyLG8pKSx0KCI8L2Rpdj4iKX0pLF86MX0sbykpfSl9KSx1PXAuc2V0dXA7cC5zZXR1cD0oZSx0KT0+e2NvbnN0IHI9cy51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHIubW9kdWxlc3x8KHIubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCJwYWdlcy9kYXNoYm9hcmQudnVlIiksdT91KGUsdCk6dm9pZCAwfTtleHBvcnR7cCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGFzaGJvYXJkLWtUVjJBUC13Lm1qcy5tYXAK", "chunks/build/default-CRttjkka.mjs": "aW1wb3J0e3YgYXMgZSxoIGFzIHQsYTAgYXMgbCxhZSBhcyBvLGFmIGFzIGksdyBhcyBuLGYgYXMgcixkIGFzIHMsZSBhcyB1LGsgYXMgZCx0IGFzIGYsbCBhcyBnLHIgYXMgeSxfIGFzIGIsYVAgYXMgayxGIGFzIHgsYUogYXMgQixvIGFzIFMsRSBhcyB3LEcgYXMgTixKIGFzIEksWSBhcyBWLGEgYXMgQSxheSBhcyB6LGIgYXMgTSx4IGFzIFAsYW0gYXMgcSxhbCBhcyBGLGFRIGFzIE8sYVIgYXMgRSxhaCBhcyBSLGFpIGFzIGosSyBhcyBVLGFqIGFzIFcsZyBhcyBHLEwgYXMgSixhTSBhcyBRLGFTIGFzIFgsUCBhcyBZLG0gYXMgWixqIGFzIGVlLHkgYXMgdGV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHt1IGFzIGFlLGEgYXMgbGUsXyBhcyBvZSxwIGFzIHJlfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7YUUgYXMgc2V9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtfIGFzIGNlfWZyb20iLi9EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcyI7aW1wb3J0e18gYXMgdWUsRCBhcyBwZSxhIGFzIGZlLGIgYXMgbWUsYyBhcyBnZSxkIGFzIHZlLGUgYXMgeWUsZiBhcyBiZSxnIGFzIGtlfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHtwIGFzIHhlfWZyb20iLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0e18gYXMgQmUsZSBhcyBTZX1mcm9tIi4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0e18gYXMgQ2V9ZnJvbSIuL1Rvb2x0aXAtQlA4emI4REsubWpzIjtpbXBvcnR7XyBhcyBfZSxhIGFzIExlfWZyb20iLi9OYXZpZ2F0aW9uTWVudS1kTmFGRmhtYS5tanMiO2ltcG9ydHtnIGFzIE5lLEwgYXMgSWUsYSBhcyBWZSxiIGFzIERlLGYgYXMgQWUsYyBhcyB6ZSxkIGFzIE1lLGUgYXMgUGUsaCBhcyBxZX1mcm9tIi4vdmlydHVhbGl6ZXItQnlxaTB1QUsubWpzIjtpbXBvcnR7XyBhcyBGZX1mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7XyBhcyBLZX1mcm9tIi4vRHJvcGRvd25NZW51LUNlY1BjZUphLm1qcyI7aW1wb3J0e3UgYXMgT2V9ZnJvbSIuL3VzZUluZmluaXRlTGlzdC1VVWduYlNtei5tanMiO2ltcG9ydHtfIGFzIEVlfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7dSBhcyBSZX1mcm9tIi4vdXNlTGF5ZXJSZWdpc3RyeS1DOUNCMjBVSC5tanMiO2ltcG9ydHtmIGFzIGplLGcgYXMgSGUsbyBhcyBVZSxqIGFzIFdlLHQgYXMgR2UsayBhcyBKZSxxIGFzIFFlfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e0sgYXMgWGV9ZnJvbSIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydCIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vaXNWYWx1ZUVxdWFsT3JFeGlzdC1EbVB5bjViTi5tanMiO2ltcG9ydCIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0Ii4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydCIuL2luZGV4LUIxUE9UTG1hLm1qcyI7aW1wb3J0Ii4vdXNlRmlsdGVyLUNsQ1phb2k4Lm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtmdW5jdGlvbiB1c2VSdW50aW1lSG9vayh0LGwpe2NvbnN0IG89UygpLmhvb2sodCxsKTtlLm9uU2NvcGVEaXNwb3NlKG8pfXZhciBZZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94R3JvdXBMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAodCl7Y29uc3QgbD10LG89cWUoe2lkOiIifSk7cmV0dXJuKHQsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihZKSxlLm1lcmdlUHJvcHMobCx7aWQ6ZS51bnJlZihvKS5pZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KTtjb25zdCBaZT17YmFzZToiZml4ZWQgaW5zZXQtMCBmbGV4IG92ZXJmbG93LWhpZGRlbiJ9LGV0PXtfX25hbWU6IlVEYXNoYm9hcmRHcm91cCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sc3RvcmFnZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiY29va2llIn0sc3RvcmFnZUtleTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGFzaGJvYXJkIn0scGVyc2lzdGVudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHVuaXQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6IiUifX0sc2V0dXAodCl7Y29uc3QgbD10LG89UygpLGk9cygpLG49dSgiZGFzaGJvYXJkR3JvdXAiLGwpLHI9ZS5jb21wdXRlZCgoKT0+Zih7ZXh0ZW5kOmYoWmUpLC4uLmkudWk/LmRhc2hib2FyZEdyb3VwfHx7fX0pKSxkPWUucmVmKCExKSxnPWUucmVmKCExKTtyZXR1cm4gcmUoe3N0b3JhZ2U6bC5zdG9yYWdlLHN0b3JhZ2VLZXk6bC5zdG9yYWdlS2V5LHBlcnNpc3RlbnQ6bC5wZXJzaXN0ZW50LHVuaXQ6bC51bml0LHNpZGViYXJPcGVuOmQsdG9nZ2xlU2lkZWJhcjooKT0+e28uaG9va3MuY2FsbEhvb2soImRhc2hib2FyZDpzaWRlYmFyOnRvZ2dsZSIpfSxzaWRlYmFyQ29sbGFwc2VkOmcsY29sbGFwc2VTaWRlYmFyOmU9PntvLmhvb2tzLmNhbGxIb29rKCJkYXNoYm9hcmQ6c2lkZWJhcjpjb2xsYXBzZSIsZSl9LHRvZ2dsZVNlYXJjaDooKT0+e28uaG9va3MuY2FsbEhvb2soImRhc2hib2FyZDpzZWFyY2g6dG9nZ2xlIil9fSksKG8saSxzLHUpPT57aShqZShlLnVucmVmKFkpLGUubWVyZ2VQcm9wcyh7YXM6dC5hcyxjbGFzczpyLnZhbHVlKHtjbGFzczpbZS51bnJlZihuKT8uYmFzZSxsLmNsYXNzXX0pfSx1KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxpLG4pPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdChvLiRzbG90cywiZGVmYXVsdCIpXTtIZShvLiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxsLGksbil9KSxfOjN9LHMpKX19fSx0dD1ldC5zZXR1cDtldC5zZXR1cD0odCxsKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Rhc2hib2FyZEdyb3VwLnZ1ZSIpLHR0P3R0KHQsbCk6dm9pZCAwfTtjb25zdCBhdD17c2xvdHM6e292ZXJsYXk6ImZpeGVkIGluc2V0LTAgYmctZWxldmF0ZWQvNzUiLGNvbnRlbnQ6ImZpeGVkIGJnLWRlZmF1bHQgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQgc206cmluZyByaW5nLWRlZmF1bHQgc206c2hhZG93LWxnIGZsZXggZmxleC1jb2wgZm9jdXM6b3V0bGluZS1ub25lIixoZWFkZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYgbWluLWgtKC0tdWktaGVhZGVyLWhlaWdodCkiLHdyYXBwZXI6IiIsYm9keToiZmxleC0xIG92ZXJmbG93LXktYXV0byBwLTQgc206cC02Iixmb290ZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYiLHRpdGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGZvbnQtc2VtaWJvbGQiLGRlc2NyaXB0aW9uOiJtdC0xIHRleHQtbXV0ZWQgdGV4dC1zbSIsY2xvc2U6ImFic29sdXRlIHRvcC00IGVuZC00In0sdmFyaWFudHM6e3NpZGU6e3RvcDp7Y29udGVudDoiIn0scmlnaHQ6e2NvbnRlbnQ6Im1heC13LW1kIn0sYm90dG9tOntjb250ZW50OiIifSxsZWZ0Ontjb250ZW50OiJtYXgtdy1tZCJ9fSxpbnNldDp7dHJ1ZTp7Y29udGVudDoicm91bmRlZC1sZyJ9fSx0cmFuc2l0aW9uOnt0cnVlOntvdmVybGF5OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtmYWRlLWluXzIwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW2ZhZGUtb3V0XzIwMG1zX2Vhc2UtaW5dIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7c2lkZToidG9wIixpbnNldDohMCxjbGFzczp7Y29udGVudDoibWF4LWgtW2NhbGMoMTAwJS0ycmVtKV0gaW5zZXQteC00IHRvcC00In19LHtzaWRlOiJ0b3AiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJtYXgtaC1mdWxsIGluc2V0LXgtMCB0b3AtMCJ9fSx7c2lkZToicmlnaHQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJ3LVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXktNCByaWdodC00In19LHtzaWRlOiJyaWdodCIsaW5zZXQ6ITEsY2xhc3M6e2NvbnRlbnQ6InctZnVsbCBpbnNldC15LTAgcmlnaHQtMCJ9fSx7c2lkZToiYm90dG9tIixpbnNldDohMCxjbGFzczp7Y29udGVudDoibWF4LWgtW2NhbGMoMTAwJS0ycmVtKV0gaW5zZXQteC00IGJvdHRvbS00In19LHtzaWRlOiJib3R0b20iLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJtYXgtaC1mdWxsIGluc2V0LXgtMCBib3R0b20tMCJ9fSx7c2lkZToibGVmdCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6InctW2NhbGMoMTAwJS0ycmVtKV0gaW5zZXQteS00IGxlZnQtNCJ9fSx7c2lkZToibGVmdCIsaW5zZXQ6ITEsY2xhc3M6e2NvbnRlbnQ6InctZnVsbCBpbnNldC15LTAgbGVmdC0wIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6InRvcCIsY2xhc3M6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NsaWRlLWluLWZyb20tdG9wXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NsaWRlLW91dC10by10b3BfMjAwbXNfZWFzZS1pbi1vdXRdIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6InJpZ2h0IixjbGFzczp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2xpZGUtaW4tZnJvbS1yaWdodF8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzbGlkZS1vdXQtdG8tcmlnaHRfMjAwbXNfZWFzZS1pbi1vdXRdIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6ImJvdHRvbSIsY2xhc3M6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NsaWRlLWluLWZyb20tYm90dG9tXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NsaWRlLW91dC10by1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRdIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6ImxlZnQiLGNsYXNzOntjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzbGlkZS1pbi1mcm9tLWxlZnRfMjAwbXNfZWFzZS1pbi1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2xpZGUtb3V0LXRvLWxlZnRfMjAwbXNfZWFzZS1pbi1vdXRdIn19XX0sbHQ9e19fbmFtZToiVVNsaWRlb3ZlciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3RpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3ZlcmxheTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHRyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoicmlnaHQifSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJhZnRlcjpsZWF2ZSIsImFmdGVyOmVudGVyIiwiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3Qgbz10LGk9bCxuPWUudXNlU2xvdHMoKSx7dDpkfT1yKCksZz1zKCkseT11KCJzbGlkZW92ZXIiLG8pLGs9dyh4KG8sIm9wZW4iLCJkZWZhdWx0T3BlbiIsIm1vZGFsIiksaSksQj1OKGUudG9SZWYoKCk9Pm8ucG9ydGFsKSksUz1lLnRvUmVmKCgpPT5vLmNvbnRlbnQpLEE9ZS5jb21wdXRlZCgoKT0+e2lmKCFvLmRpc21pc3NpYmxlKXtyZXR1cm5bImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKGUsdCk9PihlW3RdPWU9PntlLnByZXZlbnREZWZhdWx0KCksaSgiY2xvc2U6cHJldmVudCIpfSxlKSx7fSl9cmV0dXJue3BvaW50ZXJEb3duT3V0c2lkZTp4ZX19KSx6PWUuY29tcHV0ZWQoKCk9PmYoe2V4dGVuZDpmKGF0KSwuLi5nLnVpPy5zbGlkZW92ZXJ8fHt9fSkoe3RyYW5zaXRpb246by50cmFuc2l0aW9uLHNpZGU6by5zaWRlLGluc2V0Om8uaW5zZXR9KSk7cmV0dXJuKGwscixzLHUpPT57cihqZShlLnVucmVmKGtlKSxlLm1lcmdlUHJvcHMoZS51bnJlZihrKSx1KSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcGVuOnIsY2xvc2U6c30sdSxmLGspPT57aWYoIXUpcmV0dXJuW24uZGVmYXVsdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYocGUpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLGNsYXNzOm8uY2xhc3N9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoZ2UpLGUudW5yZWYoQikse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKEkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5vdmVybGF5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2ZSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczp6LnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoeSk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeWUpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2lkZSI6dC5zaWRlLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczp6LnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZvLmNsYXNzLGUudW5yZWYoeSk/LmNvbnRlbnRdfSl9LFMudmFsdWUse29uQWZ0ZXJFbnRlcjplPT5pKCJhZnRlcjplbnRlciIpLG9uQWZ0ZXJMZWF2ZTplPT5pKCJhZnRlcjpsZWF2ZSIpfSxlLnRvSGFuZGxlcnMoQS52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyF0LnRpdGxlJiYhbi50aXRsZXx8IXQuZGVzY3JpcHRpb24mJiFuLmRlc2NyaXB0aW9ufHxuLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFYpLHtrZXk6MH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC50aXRsZXx8bi50aXRsZT9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjB9KSksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdChsLiRzbG90cywiY29udGVudCIse2Nsb3NlOnN9LCgpPT5bbi5oZWFkZXJ8fHQudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb258fG8uY2xvc2V8fG4uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6ei52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoeSk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTpzfSwoKT0+W3QudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnoudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pfSxbdC50aXRsZXx8bi50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOnoudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYoeSk/LnRpdGxlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnoudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoeSk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJhY3Rpb25zIiksby5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYmUpLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImNsb3NlIix7dWk6ei52YWx1ZX0sKCk9PltvLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYixlLm1lcmdlUHJvcHMoe2tleTowLGljb246dC5jbG9zZUljb258fGUudW5yZWYoZykudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihkKSgic2xpZGVvdmVyLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2Ygby5jbG9zZT9vLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoeSk/LmNsb3NlfSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjJ9LDEwMjQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6ei52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKHkpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImJvZHkiLHtjbG9zZTpzfSldLDIpLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOnoudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKHkpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIix7Y2xvc2U6c30pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJkYXRhLXNpZGUiLCJjbGFzcyIsIm9uQWZ0ZXJFbnRlciIsIm9uQWZ0ZXJMZWF2ZSJdKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwNDApXTtuLmRlZmF1bHQ/dShqZShlLnVucmVmKHBlKSx7ImFzLWNoaWxkIjoiIixjbGFzczpvLmNsYXNzfSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbyxpLG4pPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0pXTtIZShsLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0sbnVsbCxvLGksbil9KSxfOjJ9LGYsaykpOnUoIlx4M2MhLS0tLVx4M2UiKSx1KGplKGUudW5yZWYoZ2UpLGUudW5yZWYoQikse2RlZmF1bHQ6ZS53aXRoQ3R4KChyLHUsZixrKT0+e2lmKCF1KXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lm92ZXJsYXk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZlKSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnoudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZih5KT8ub3ZlcmxheX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih5ZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zaWRlIjp0LnNpZGUsImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnoudmFsdWUuY29udGVudCh7Y2xhc3M6WyFuLmRlZmF1bHQmJm8uY2xhc3MsZS51bnJlZih5KT8uY29udGVudF19KX0sUy52YWx1ZSx7b25BZnRlckVudGVyOmU9PmkoImFmdGVyOmVudGVyIiksb25BZnRlckxlYXZlOmU9PmkoImFmdGVyOmxlYXZlIil9LGUudG9IYW5kbGVycyhBLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleTowfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PltuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp6LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih5KT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOnN9LCgpPT5bdC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSl9LFt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6ei52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih5KT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih5KT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImFjdGlvbnMiKSxvLmNsb3NlfHxuLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W28uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGQpKCJzbGlkZW92ZXIuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBvLmNsb3NlP28uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZih5KT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp6LnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeSk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIse2Nsb3NlOnN9KV0sMiksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6ei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoeSk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpzfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImRhdGEtc2lkZSIsImNsYXNzIiwib25BZnRlckVudGVyIiwib25BZnRlckxlYXZlIl0pXSksXzoyfSwxMDI0KV07dShqZShlLnVucmVmKEkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChyLHUsZixrKT0+e2lmKCF1KXJldHVyblt0Lm92ZXJsYXk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZlKSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnoudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZih5KT8ub3ZlcmxheX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih5ZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zaWRlIjp0LnNpZGUsImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnoudmFsdWUuY29udGVudCh7Y2xhc3M6WyFuLmRlZmF1bHQmJm8uY2xhc3MsZS51bnJlZih5KT8uY29udGVudF19KX0sUy52YWx1ZSx7b25BZnRlckVudGVyOmU9PmkoImFmdGVyOmVudGVyIiksb25BZnRlckxlYXZlOmU9PmkoImFmdGVyOmxlYXZlIil9LGUudG9IYW5kbGVycyhBLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleTowfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PltuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp6LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih5KT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOnN9LCgpPT5bdC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSl9LFt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6ei52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih5KT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih5KT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImFjdGlvbnMiKSxvLmNsb3NlfHxuLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W28uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGQpKCJzbGlkZW92ZXIuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBvLmNsb3NlP28uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZih5KT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp6LnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeSk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIse2Nsb3NlOnN9KV0sMiksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6ei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoeSk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpzfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImRhdGEtc2lkZSIsImNsYXNzIiwib25BZnRlckVudGVyIiwib25BZnRlckxlYXZlIl0pXTt0Lm92ZXJsYXk/dShqZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnoudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZih5KT8ub3ZlcmxheX0pfSxudWxsLGYsaykpOnUoIlx4M2MhLS0tLVx4M2UiKSx1KGplKGUudW5yZWYoeWUpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2lkZSI6dC5zaWRlLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczp6LnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZvLmNsYXNzLGUudW5yZWYoeSk/LmNvbnRlbnRdfSl9LFMudmFsdWUse29uQWZ0ZXJFbnRlcjplPT5pKCJhZnRlcjplbnRlciIpLG9uQWZ0ZXJMZWF2ZTplPT5pKCJhZnRlcjpsZWF2ZSIpfSxlLnRvSGFuZGxlcnMoQS52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLHUsZik9PntpZighcilyZXR1cm5bIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleTowfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PltuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp6LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih5KT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOnN9LCgpPT5bdC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSl9LFt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6ei52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih5KT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih5KT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImFjdGlvbnMiKSxvLmNsb3NlfHxuLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W28uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGQpKCJzbGlkZW92ZXIuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBvLmNsb3NlP28uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZih5KT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp6LnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeSk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIse2Nsb3NlOnN9KV0sMiksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6ei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoeSk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpzfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07IXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD9yKGplKGUudW5yZWYoViksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxyLHMpPT57aWYoIWkpcmV0dXJuW3QudGl0bGV8fG4udGl0bGU/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowfSkpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToyfSkpXTt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD9pKGplKGUudW5yZWYoZmUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldO0hlKGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntpKGAke1FlKHQudGl0bGUpfWApfSxpLG4scil9KSxfOjJ9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYoZmUpLG51bGwsbnVsbCxyLHMpKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD9pKGplKGUudW5yZWYobWUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldO0hlKGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntpKGAke1FlKHQuZGVzY3JpcHRpb24pfWApfSxpLG4scil9KSxfOjJ9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYobWUpLG51bGwsbnVsbCxyLHMpKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpLEhlKGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PntuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8ocihgPGRpdiBkYXRhLXNsb3Q9ImhlYWRlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoeSk/LmhlYWRlcn0pKX0iJHtmfT5gKSxIZShsLiRzbG90cywiaGVhZGVyIix7Y2xvc2U6c30sKCk9Pnt0LnRpdGxlfHxuLnRpdGxlfHx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhyKGA8ZGl2IGRhdGEtc2xvdD0id3JhcHBlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSkpfSIke2Z9PmApLHQudGl0bGV8fG4udGl0bGU/cihqZShlLnVucmVmKGZlKSx7ImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczp6LnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKHkpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxuLHIpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV07SGUobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+e2koYCR7UWUodC50aXRsZSl9YCl9LGksbixyKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/cihqZShlLnVucmVmKG1lKSx7ImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczp6LnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxuLHIpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV07SGUobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+e2koYCR7UWUodC5kZXNjcmlwdGlvbil9YCl9LGksbixyKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIiksSGUobC4kc2xvdHMsImFjdGlvbnMiLHt9LG51bGwscix1LGYpLG8uY2xvc2V8fG4uY2xvc2U/cihqZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KChpLG4scixzKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImNsb3NlIix7dWk6ei52YWx1ZX0sKCk9PltvLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYixlLm1lcmdlUHJvcHMoe2tleTowLGljb246dC5jbG9zZUljb258fGUudW5yZWYoZykudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihkKSgic2xpZGVvdmVyLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2Ygby5jbG9zZT9vLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoeSk/LmNsb3NlfSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO0hlKGwuJHNsb3RzLCJjbG9zZSIse3VpOnoudmFsdWV9LCgpPT57by5jbG9zZT9uKGplKGIsZS5tZXJnZVByb3BzKHtpY29uOnQuY2xvc2VJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoZCkoInNsaWRlb3Zlci5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIG8uY2xvc2U/by5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczp6LnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKHkpPy5jbG9zZX0pfSksbnVsbCxyLHMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scixzKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLHUsZikscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKGA8ZGl2IGRhdGEtc2xvdD0iYm9keSIgY2xhc3M9IiR7V2Uoei52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKHkpPy5ib2R5fSkpfSIke2Z9PmApLEhlKGwuJHNsb3RzLCJib2R5Iix7Y2xvc2U6c30sbnVsbCxyLHUsZikscigiPC9kaXY+Iiksbi5mb290ZXI/KHIoYDxkaXYgZGF0YS1zbG90PSJmb290ZXIiIGNsYXNzPSIke1dlKHoudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKHkpPy5mb290ZXJ9KSl9IiR7Zn0+YCksSGUobC4kc2xvdHMsImZvb3RlciIse2Nsb3NlOnN9LG51bGwscix1LGYpLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIil9LHIsdSxmKX0pLF86Mn0sZixrKSl9KSxfOjJ9LGYsaykpfSksXzoyfSxmLGspKX0pLF86M30scykpfX19LG90PWx0LnNldHVwO2x0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2xpZGVvdmVyLnZ1ZSIpLG90P290KHQsbCk6dm9pZCAwfSxmdW5jdGlvbigpe3RyeXswfWNhdGNoKGUpe319KCk7dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmKGdsb2JhbFRoaXMsV29ya2VyR2xvYmFsU2NvcGUpO2Z1bmN0aW9uICRlKHQsbCxvLGk9e30pe3ZhciBuLHIscztjb25zdHtjbG9uZTp1PSExLHBhc3NpdmU6ZD0hMSxldmVudE5hbWU6ZixkZWVwOmc9ITEsZGVmYXVsdFZhbHVlOnksc2hvdWxkRW1pdDpifT1pLGs9ZS5nZXRDdXJyZW50SW5zdGFuY2UoKSx4PW98fChudWxsPT1rP3ZvaWQgMDprLmVtaXQpfHwobnVsbD09KG49bnVsbD09az92b2lkIDA6ay4kZW1pdCk/dm9pZCAwOm4uYmluZChrKSl8fChudWxsPT0ocz1udWxsPT0ocj1udWxsPT1rP3ZvaWQgMDprLnByb3h5KT92b2lkIDA6ci4kZW1pdCk/dm9pZCAwOnMuYmluZChudWxsPT1rP3ZvaWQgMDprLnByb3h5KSk7bGV0IEI9ZjtsfHwobD0ibW9kZWxWYWx1ZSIpLEI9Qnx8YHVwZGF0ZToke2wudG9TdHJpbmcoKX1gO2NvbnN0IEw9ZT0+dT8iZnVuY3Rpb24iPT10eXBlb2YgdT91KGUpOmZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKX0oZSk6ZSxIPSgpPT4oZT0+dHlwZW9mIGU8InUiKSh0W2xdKT9MKHRbbF0pOnkscD1lPT57Yj9iKGUpJiZ4KEIsZSk6eChCLGUpfTtpZihkKXtjb25zdCBvPUgoKSxpPWUucmVmKG8pO2xldCBuPSExO3JldHVybiBlLndhdGNoKCgpPT50W2xdLHQ9PntufHwobj0hMCxpLnZhbHVlPUwodCksZS5uZXh0VGljaygoKT0+bj0hMSkpfSksZS53YXRjaChpLGU9PnshbiYmKGUhPT10W2xdfHxnKSYmcChlKX0se2RlZXA6Z30pLGl9cmV0dXJuIGUuY29tcHV0ZWQoe2dldDooKT0+SCgpLHNldChlKXtwKGUpfX0pfWNvbnN0W2l0LG50XT1aKCJEcmF3ZXJSb290IikscnQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gQyhlLHQsbD0hMSl7aWYoIShlJiZlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnQpKXJldHVybjtjb25zdCBvPXt9O09iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKFt0LGxdKT0+e3Quc3RhcnRzV2l0aCgiLS0iKT9lLnN0eWxlLnNldFByb3BlcnR5KHQsbCk6KG9bdF09ZS5zdHlsZVt0XSxlLnN0eWxlW3RdPWwpfSksIWwmJnJ0LnNldChlLG8pfWZ1bmN0aW9uIGllKGUsdCl7Y29uc3QgbD0odm9pZCAwKS5nZXRDb21wdXRlZFN0eWxlKGUpLG89bC50cmFuc2Zvcm18fGwud2Via2l0VHJhbnNmb3JtfHxsLm1velRyYW5zZm9ybTtsZXQgaT1vLm1hdGNoKC9ebWF0cml4M2RcKCguKylcKSQvKTtyZXR1cm4gaT9OdW1iZXIucGFyc2VGbG9hdChpWzFdLnNwbGl0KCIsICIpW18odCk/MTM6MTJdKTooaT1vLm1hdGNoKC9ebWF0cml4XCgoLispXCkkLyksaT9OdW1iZXIucGFyc2VGbG9hdChpWzFdLnNwbGl0KCIsICIpW18odCk/NTo0XSk6bnVsbCl9ZnVuY3Rpb24gXyhlKXtzd2l0Y2goZSl7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpyZXR1cm4hMDtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuIGV9fWZ1bmN0aW9uIGRlKGUsdCl7aWYoIWUpcmV0dXJuKCk9Pnt9O2NvbnN0IGw9ZS5zdHlsZS5jc3NUZXh0O3JldHVybiBPYmplY3QuYXNzaWduKGUuc3R5bGUsdCksKCk9PntlLnN0eWxlLmNzc1RleHQ9bH19Y29uc3Qgc3Q9e0RVUkFUSU9OOi41LEVBU0U6Wy4zMiwuNzIsMCwxXX0sY3Q9InZhdWwtZHJhZ2dpbmciO2Z1bmN0aW9uIFRlKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdCgodm9pZCAwKS51c2VyQWdlbnQpfWxldCB1dD1udWxsO2Z1bmN0aW9uIHd0KHQpe2NvbnN0e2lzT3BlbjpsLG1vZGFsOm8sbmVzdGVkOmksaGFzQmVlbk9wZW5lZDpuLHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjpyLG5vQm9keVN0eWxlczpzfT10LHU9ZS5yZWYoIiIpLGQ9ZS5yZWYoMCk7ZnVuY3Rpb24gVCgpe2lmKFRlKCkmJm51bGwhPT11dCYmIXMudmFsdWUpe2NvbnN0IGU9LU51bWJlci5wYXJzZUludCgodm9pZCAwKS5ib2R5LnN0eWxlLnRvcCwxMCksdD0tTnVtYmVyLnBhcnNlSW50KCh2b2lkIDApLmJvZHkuc3R5bGUubGVmdCwxMCk7T2JqZWN0LmFzc2lnbigodm9pZCAwKS5ib2R5LnN0eWxlLHV0KSwodm9pZCAwKS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntyLnZhbHVlJiZ1LnZhbHVlIT09KHZvaWQgMCkubG9jYXRpb24uaHJlZj91LnZhbHVlPSh2b2lkIDApLmxvY2F0aW9uLmhyZWY6KHZvaWQgMCkuc2Nyb2xsVG8odCxlKX0pLHV0PW51bGx9fXJldHVybiBlLndhdGNoKFtsLG4sdV0sKCk9PntpLnZhbHVlfHwhbi52YWx1ZXx8KGwudmFsdWU/KCh2b2lkIDApLm1hdGNoTWVkaWEoIihkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpIikubWF0Y2hlc3x8ZnVuY3Rpb24oKXtpZihUZSgpJiZudWxsPT09dXQmJmwudmFsdWUmJiFzLnZhbHVlKXt1dD17cG9zaXRpb246KHZvaWQgMCkuYm9keS5zdHlsZS5wb3NpdGlvbix0b3A6KHZvaWQgMCkuYm9keS5zdHlsZS50b3AsbGVmdDoodm9pZCAwKS5ib2R5LnN0eWxlLmxlZnQsaGVpZ2h0Oih2b2lkIDApLmJvZHkuc3R5bGUuaGVpZ2h0fTtjb25zdHtzY3JvbGxYOmUsaW5uZXJIZWlnaHQ6dH09dm9pZCAwOyh2b2lkIDApLmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInBvc2l0aW9uIiwiZml4ZWQiLCJpbXBvcnRhbnQiKSxPYmplY3QuYXNzaWduKCh2b2lkIDApLmJvZHkuc3R5bGUse3RvcDotZC52YWx1ZSsicHgiLGxlZnQ6LWUrInB4IixyaWdodDoiMHB4IixoZWlnaHQ6ImF1dG8ifSksc2V0VGltZW91dCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9dC0odm9pZCAwKS5pbm5lckhlaWdodDtlJiZkLnZhbHVlPj10JiYoKHZvaWQgMCkuYm9keS5zdHlsZS50b3A9YC0ke2QudmFsdWUrZX1weGApfSl9LDMwMCl9fSgpLG8udmFsdWV8fHNldFRpbWVvdXQoKCk9PntUKCl9LDUwMCkpOlQoKSl9KSx7cmVzdG9yZVBvc2l0aW9uU2V0dGluZzpUfX1mdW5jdGlvbiB5dCh0KXtjb25zdHtlbWl0RHJhZzpsLGVtaXRSZWxlYXNlOm8sZW1pdENsb3NlOmksZW1pdE9wZW5DaGFuZ2U6bixvcGVuOnIsZGlzbWlzc2libGU6cyxuZXN0ZWQ6dSxtb2RhbDpkLHNob3VsZFNjYWxlQmFja2dyb3VuZDpmLHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6ZyxzY3JvbGxMb2NrVGltZW91dDp5LGNsb3NlVGhyZXNob2xkOmIsYWN0aXZlU25hcFBvaW50OmssZmFkZUZyb21JbmRleDp4LGRpcmVjdGlvbjpCLG5vQm9keVN0eWxlczpTLGhhbmRsZU9ubHk6dyxwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb246Tn09dCxJPWUucmVmKHIudmFsdWU/PyExKSxWPWUucmVmKCExKSxBPWUucmVmKCExKSx6PWUucmVmKCExKSxNPWUucmVmKG51bGwpLFA9ZS5yZWYobnVsbCkscT1lLnJlZihudWxsKSxGPWUucmVmKG51bGwpLE89ZS5yZWYobnVsbCksRT1lLnJlZighMSksUj1lLnJlZihudWxsKSxqPWUucmVmKDApLFU9ZS5yZWYoITEpO2UucmVmKDApO2NvbnN0IFc9ZS5yZWYobnVsbCk7ZS5yZWYoMCk7Y29uc3QgRz1lLmNvbXB1dGVkKCgpPT57dmFyIGU7cmV0dXJuKG51bGw9PShlPVcudmFsdWUpP3ZvaWQgMDplLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpfHwwfSksSj1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLnZhbHVlP2U6dH0odC5zbmFwUG9pbnRzLGUucmVmKHZvaWQgMCkpLFE9ZS5jb21wdXRlZCgoKT0+e3ZhciBlO3JldHVybiBKJiYoKG51bGw9PShlPUoudmFsdWUpP3ZvaWQgMDplLmxlbmd0aCk/PzApPjB9KSxYPWUucmVmKG51bGwpLHthY3RpdmVTbmFwUG9pbnRJbmRleDpZLG9uUmVsZWFzZTpaLHNuYXBQb2ludHNPZmZzZXQ6ZWUsb25EcmFnOnRlLHNob3VsZEZhZGU6YWUsZ2V0UGVyY2VudGFnZURyYWdnZWQ6bGV9PWZ1bmN0aW9uKHthY3RpdmVTbmFwUG9pbnQ6dCxzbmFwUG9pbnRzOmwsZHJhd2VyUmVmOm8sb3ZlcmxheVJlZjppLGZhZGVGcm9tSW5kZXg6bixvblNuYXBQb2ludENoYW5nZTpyLGRpcmVjdGlvbjpzfSl7Y29uc3QgdT1lLnJlZih2b2lkIDApLGQ9ZS5jb21wdXRlZCgoKT0+KGwudmFsdWUmJnQudmFsdWU9PT1sLnZhbHVlW2wudmFsdWUubGVuZ3RoLTFdKT8/bnVsbCksZj1lLmNvbXB1dGVkKCgpPT5sLnZhbHVlJiZsLnZhbHVlLmxlbmd0aD4wJiYoKG51bGw9PW4/dm9pZCAwOm4udmFsdWUpfHwwPT09KG51bGw9PW4/dm9pZCAwOm4udmFsdWUpKSYmIU51bWJlci5pc05hTihudWxsPT1uP3ZvaWQgMDpuLnZhbHVlKSYmbC52YWx1ZVsobnVsbD09bj92b2lkIDA6bi52YWx1ZSk/Py0xXT09PXQudmFsdWV8fCFsLnZhbHVlKSxnPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4obnVsbD09KGU9bC52YWx1ZSk/dm9pZCAwOmUuZmluZEluZGV4KGU9PmU9PT10LnZhbHVlKSk/P251bGx9KSx5PWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4obnVsbD09KGU9bC52YWx1ZSk/dm9pZCAwOmUubWFwKGU9Pntjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZTtsZXQgbD0wO2lmKHQmJihsPU51bWJlci5wYXJzZUludChlLDEwKSksXyhzLnZhbHVlKSl7Y29uc3Qgbz10P2w6dS52YWx1ZT9lKnUudmFsdWUuaW5uZXJIZWlnaHQ6MDtyZXR1cm4gdS52YWx1ZT8iYm90dG9tIj09PXMudmFsdWU/dS52YWx1ZS5pbm5lckhlaWdodC1vOi11LnZhbHVlLmlubmVySGVpZ2h0K286b31jb25zdCBvPXQ/bDp1LnZhbHVlP2UqdS52YWx1ZS5pbm5lcldpZHRoOjA7cmV0dXJuIHUudmFsdWU/InJpZ2h0Ij09PXMudmFsdWU/dS52YWx1ZS5pbm5lcldpZHRoLW86LXUudmFsdWUuaW5uZXJXaWR0aCtvOm99KSk/P1tdfSksYj1lLmNvbXB1dGVkKCgpPT57dmFyIGU7cmV0dXJuIG51bGwhPT1nLnZhbHVlP251bGw9PShlPXkudmFsdWUpP3ZvaWQgMDplW2cudmFsdWVdOm51bGx9KSxtPXU9Pnt2YXIgZCxmLGcsYjtjb25zdCBrPShudWxsPT0oZD15LnZhbHVlKT92b2lkIDA6ZC5maW5kSW5kZXgoZT0+ZT09PXUpKT8/bnVsbDtlLm5leHRUaWNrKCgpPT57dmFyIGU7cihrLHkudmFsdWUpLEMobnVsbD09KGU9by52YWx1ZSk/dm9pZCAwOmUuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtzdC5EVVJBVElPTn1zIGN1YmljLWJlemllcigke3N0LkVBU0Uuam9pbigiLCIpfSlgLHRyYW5zZm9ybTpfKHMudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke3V9cHgsIDApYDpgdHJhbnNsYXRlM2QoJHt1fXB4LCAwLCAwKWB9KX0pLHkudmFsdWUmJmshPT15LnZhbHVlLmxlbmd0aC0xJiZrIT09KG51bGw9PW4/dm9pZCAwOm4udmFsdWUpP0MobnVsbD09KGY9aS52YWx1ZSk/dm9pZCAwOmYuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIwIn0pOkMobnVsbD09KGc9aS52YWx1ZSk/dm9pZCAwOmcuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIxIn0pLHQudmFsdWU9bnVsbCE9PWs/KG51bGw9PShiPWwudmFsdWUpP3ZvaWQgMDpiW2tdKT8/bnVsbDpudWxsfTtyZXR1cm4gZS53YXRjaChbdCx5LGxdLCgpPT57dmFyIGU7aWYodC52YWx1ZSl7Y29uc3Qgbz0obnVsbD09KGU9bC52YWx1ZSk/dm9pZCAwOmUuZmluZEluZGV4KGU9PmU9PT10LnZhbHVlKSk/Py0xO3kudmFsdWUmJi0xIT09byYmIm51bWJlciI9PXR5cGVvZiB5LnZhbHVlW29dJiZtKHkudmFsdWVbb10pfX0se2ltbWVkaWF0ZTohMH0pLHtpc0xhc3RTbmFwUG9pbnQ6ZCxzaG91bGRGYWRlOmYsZ2V0UGVyY2VudGFnZURyYWdnZWQ6ZnVuY3Rpb24oZSx0KXtpZighbC52YWx1ZXx8Im51bWJlciIhPXR5cGVvZiBnLnZhbHVlfHwheS52YWx1ZXx8dm9pZCAwPT09bi52YWx1ZSlyZXR1cm4gbnVsbDtjb25zdCBvPWcudmFsdWU9PT1uLnZhbHVlLTE7aWYoZy52YWx1ZT49bi52YWx1ZSYmdClyZXR1cm4gMDtpZihvJiYhdClyZXR1cm4gMTtpZighZi52YWx1ZSYmIW8pcmV0dXJuIG51bGw7Y29uc3QgaT1vP2cudmFsdWUrMTpnLnZhbHVlLTEscj1vP3kudmFsdWVbaV0teS52YWx1ZVtpLTFdOnkudmFsdWVbaSsxXS15LnZhbHVlW2ldLHM9ZS9NYXRoLmFicyhyKTtyZXR1cm4gbz8xLXM6c30sYWN0aXZlU25hcFBvaW50SW5kZXg6ZyxvblJlbGVhc2U6ZnVuY3Rpb24oe2RyYWdnZWREaXN0YW5jZTplLGNsb3NlRHJhd2VyOnQsdmVsb2NpdHk6byxkaXNtaXNzaWJsZTpyfSl7dmFyIHUsZixrO2lmKHZvaWQgMD09PW4udmFsdWUpcmV0dXJuO2NvbnN0IHg9ImJvdHRvbSI9PT1zLnZhbHVlfHwicmlnaHQiPT09cy52YWx1ZT8oYi52YWx1ZT8/MCktZTooYi52YWx1ZT8/MCkrZSxCPWcudmFsdWU9PT1uLnZhbHVlLTEsUz0wPT09Zy52YWx1ZSx3PWU+MDtpZihCJiZDKG51bGw9PSh1PWkudmFsdWUpP3ZvaWQgMDp1LiRlbCx7dHJhbnNpdGlvbjpgb3BhY2l0eSAke3N0LkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7c3QuRUFTRS5qb2luKCIsIil9KWB9KSxvPjImJiF3KXJldHVybiB2b2lkKHI/dCgpOm0oeS52YWx1ZVswXSkpO2lmKG8+MiYmdyYmeSYmbC52YWx1ZSlyZXR1cm4gdm9pZCBtKHkudmFsdWVbbC52YWx1ZS5sZW5ndGgtMV0pO2NvbnN0IE49bnVsbD09KGY9eS52YWx1ZSk/dm9pZCAwOmYucmVkdWNlKChlLHQpPT4ibnVtYmVyIiE9dHlwZW9mIGV8fCJudW1iZXIiIT10eXBlb2YgdD9lOk1hdGguYWJzKHQteCk8TWF0aC5hYnMoZS14KT90OmUpLEk9XyhzLnZhbHVlKT8odm9pZCAwKS5pbm5lckhlaWdodDoodm9pZCAwKS5pbm5lcldpZHRoO2lmKG8+LjQmJk1hdGguYWJzKGUpPC40Kkkpe2NvbnN0IGU9dz8xOi0xO2lmKGU+MCYmZClyZXR1cm4gdm9pZCBtKHkudmFsdWVbKChudWxsPT0oaz1sLnZhbHVlKT92b2lkIDA6ay5sZW5ndGgpPz8wKS0xXSk7aWYoUyYmZTwwJiZyJiZ0KCksbnVsbD09PWcudmFsdWUpcmV0dXJuO3JldHVybiB2b2lkIG0oeS52YWx1ZVtnLnZhbHVlK2VdKX1tKE4pfSxvbkRyYWc6ZnVuY3Rpb24oe2RyYWdnZWREaXN0YW5jZTplfSl7dmFyIHQ7aWYobnVsbD09PWIudmFsdWUpcmV0dXJuO2NvbnN0IGw9ImJvdHRvbSI9PT1zLnZhbHVlfHwicmlnaHQiPT09cy52YWx1ZT9iLnZhbHVlLWU6Yi52YWx1ZStlOygiYm90dG9tIj09PXMudmFsdWV8fCJyaWdodCI9PT1zLnZhbHVlKSYmbDx5LnZhbHVlW3kudmFsdWUubGVuZ3RoLTFdfHwoInRvcCI9PT1zLnZhbHVlfHwibGVmdCI9PT1zLnZhbHVlKSYmbD55LnZhbHVlW3kudmFsdWUubGVuZ3RoLTFdfHxDKG51bGw9PSh0PW8udmFsdWUpP3ZvaWQgMDp0LiRlbCx7dHJhbnNmb3JtOl8ocy52YWx1ZSk/YHRyYW5zbGF0ZTNkKDAsICR7bH1weCwgMClgOmB0cmFuc2xhdGUzZCgke2x9cHgsIDAsIDApYH0pfSxzbmFwUG9pbnRzT2Zmc2V0Onl9fSh7c25hcFBvaW50czpKLGFjdGl2ZVNuYXBQb2ludDprLGRyYXdlclJlZjpXLGZhZGVGcm9tSW5kZXg6eCxvdmVybGF5UmVmOk0sb25TbmFwUG9pbnRDaGFuZ2U6ZnVuY3Rpb24oZSx0KXtKLnZhbHVlJiZlPT09dC5sZW5ndGgtMSYmKFAudmFsdWU9bmV3IERhdGUpfSxkaXJlY3Rpb246Qn0pO2Z1bmN0aW9uIG5lKCl7cmV0dXJuKCh2b2lkIDApLmlubmVyV2lkdGgtMjYpLyh2b2lkIDApLmlubmVyV2lkdGh9ZnVuY3Rpb24gd2UoZSx0KXt2YXIgbDtpZighZSlyZXR1cm4hMTtsZXQgbz1lO2NvbnN0IGk9bnVsbD09KGw9KHZvaWQgMCkuZ2V0U2VsZWN0aW9uKCkpP3ZvaWQgMDpsLnRvU3RyaW5nKCksbj1XLnZhbHVlP2llKFcudmFsdWUuJGVsLEIudmFsdWUpOm51bGwscj1uZXcgRGF0ZTtpZihvLmhhc0F0dHJpYnV0ZSgiZGF0YS12YXVsLW5vLWRyYWciKXx8by5jbG9zZXN0KCJbZGF0YS12YXVsLW5vLWRyYWddIikpcmV0dXJuITE7aWYoInJpZ2h0Ij09PUIudmFsdWV8fCJsZWZ0Ij09PUIudmFsdWUpcmV0dXJuITA7aWYoUC52YWx1ZSYmci5nZXRUaW1lKCktUC52YWx1ZS5nZXRUaW1lKCk8NTAwKXJldHVybiExO2lmKG51bGwhPT1uJiYoImJvdHRvbSI9PT1CLnZhbHVlP24+MDpuPDApKXJldHVybiEwO2lmKGkmJmkubGVuZ3RoPjApcmV0dXJuITE7aWYoTy52YWx1ZSYmci5nZXRUaW1lKCktTy52YWx1ZS5nZXRUaW1lKCk8eS52YWx1ZSYmMD09PW58fHQpcmV0dXJuIE8udmFsdWU9ciwhMTtmb3IoO287KXtpZihvLnNjcm9sbEhlaWdodD5vLmNsaWVudEhlaWdodCl7aWYoMCE9PW8uc2Nyb2xsVG9wKXJldHVybiBPLnZhbHVlPW5ldyBEYXRlLCExO2lmKCJkaWFsb2ciPT09by5nZXRBdHRyaWJ1dGUoInJvbGUiKSlyZXR1cm4hMH1vPW8ucGFyZW50Tm9kZX1yZXR1cm4hMH1mdW5jdGlvbiBoZSgpe3ZhciBlO2lmKCFXLnZhbHVlKXJldHVybjtjb25zdCB0PSh2b2lkIDApLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXZhdWwtZHJhd2VyLXdyYXBwZXJdIil8fCh2b2lkIDApLnF1ZXJ5U2VsZWN0b3IoIlt2YXVsLWRyYXdlci13cmFwcGVyXSIpLGw9aWUoVy52YWx1ZS4kZWwsQi52YWx1ZSk7QyhXLnZhbHVlLiRlbCx7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgwLCAwLCAwKSIsdHJhbnNpdGlvbjpgdHJhbnNmb3JtICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYH0pLEMobnVsbD09KGU9TS52YWx1ZSk/dm9pZCAwOmUuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIxIn0pLGYudmFsdWUmJmwmJmw+MCYmSS52YWx1ZSYmQyh0LHtib3JkZXJSYWRpdXM6IjhweCIsb3ZlcmZsb3c6ImhpZGRlbiIsLi4uXyhCLnZhbHVlKT97dHJhbnNmb3JtOmBzY2FsZSgke25lKCl9KSB0cmFuc2xhdGUzZCgwLCBjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwKWAsdHJhbnNmb3JtT3JpZ2luOiJ0b3AifTp7dHJhbnNmb3JtOmBzY2FsZSgke25lKCl9KSB0cmFuc2xhdGUzZChjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwLCAwKWAsdHJhbnNmb3JtT3JpZ2luOiJsZWZ0In0sdHJhbnNpdGlvblByb3BlcnR5OiJ0cmFuc2Zvcm0sIGJvcmRlci1yYWRpdXMiLHRyYW5zaXRpb25EdXJhdGlvbjpgJHtzdC5EVVJBVElPTn1zYCx0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246YGN1YmljLWJlemllcigke3N0LkVBU0Uuam9pbigiLCIpfSlgfSwhMCl9ZnVuY3Rpb24gSyhlKXtXLnZhbHVlJiYoaSgpLGV8fChJLnZhbHVlPSExKSwodm9pZCAwKS5zZXRUaW1lb3V0KCgpPT57Si52YWx1ZSYmKGsudmFsdWU9Si52YWx1ZVswXSl9LDFlMypzdC5EVVJBVElPTikpfXJldHVybiB3dCh7aXNPcGVuOkksbW9kYWw6ZCxuZXN0ZWQ6dSxoYXNCZWVuT3BlbmVkOlYsbm9Cb2R5U3R5bGVzOlMscHJldmVudFNjcm9sbFJlc3RvcmF0aW9uOk59KSxlLndhdGNoRWZmZWN0KCgpPT57IUkudmFsdWUmJmYudmFsdWUsMH0pLGUud2F0Y2gociwoKT0+e0kudmFsdWU9ci52YWx1ZSxyLnZhbHVlfHxLKCl9KSxlLndhdGNoKEksZT0+e2UmJihQLnZhbHVlPW5ldyBEYXRlKSxuKGUpfSx7aW1tZWRpYXRlOiEwfSkse29wZW46cixpc09wZW46SSxtb2RhbDpkLGtleWJvYXJkSXNPcGVuOlUsaGFzQmVlbk9wZW5lZDpWLGRyYXdlclJlZjpXLGRyYXdlckhlaWdodFJlZjpHLG92ZXJsYXlSZWY6TSxoYW5kbGVSZWY6WCxpc0RyYWdnaW5nOkEsZHJhZ1N0YXJ0VGltZTpxLGlzQWxsb3dlZFRvRHJhZzpFLHNuYXBQb2ludHM6SixhY3RpdmVTbmFwUG9pbnQ6ayxoYXNTbmFwUG9pbnRzOlEscG9pbnRlclN0YXJ0OmosZGlzbWlzc2libGU6cyxzbmFwUG9pbnRzT2Zmc2V0OmVlLGRpcmVjdGlvbjpCLHNob3VsZEZhZGU6YWUsZmFkZUZyb21JbmRleDp4LHNob3VsZFNjYWxlQmFja2dyb3VuZDpmLHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6ZyxvblByZXNzOmZ1bmN0aW9uKGUpeyFzLnZhbHVlJiYhSi52YWx1ZXx8Vy52YWx1ZSYmIVcudmFsdWUuJGVsLmNvbnRhaW5zKGUudGFyZ2V0KXx8KEEudmFsdWU9ITAscS52YWx1ZT1uZXcgRGF0ZSxlLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCksai52YWx1ZT1fKEIudmFsdWUpP2UuY2xpZW50WTplLmNsaWVudFgpfSxvbkRyYWc6ZnVuY3Rpb24oZSl7dmFyIHQsbyxpLG4scix1O2lmKFcudmFsdWUmJkEudmFsdWUpe2NvbnN0IGQ9ImJvdHRvbSI9PT1CLnZhbHVlfHwicmlnaHQiPT09Qi52YWx1ZT8xOi0xLGc9KGoudmFsdWUtKF8oQi52YWx1ZSk/ZS5jbGllbnRZOmUuY2xpZW50WCkpKmQseT1nPjAsYj1KLnZhbHVlJiYhcy52YWx1ZSYmIXk7aWYoYiYmMD09PVkudmFsdWUpcmV0dXJuO2NvbnN0IGs9TWF0aC5hYnMoZyksUz0odm9pZCAwKS5xdWVyeVNlbGVjdG9yKCJbZGF0YS12YXVsLWRyYXdlci13cmFwcGVyXSIpfHwodm9pZCAwKS5xdWVyeVNlbGVjdG9yKCJbdmF1bC1kcmF3ZXItd3JhcHBlcl0iKTtsZXQgdz1rL0cudmFsdWU7Y29uc3QgTj1sZShrLHkpO2lmKG51bGwhPT1OJiYodz1OKSxiJiZ3Pj0xfHwhRS52YWx1ZSYmIXdlKGUudGFyZ2V0LHkpKXJldHVybjtpZihudWxsPT0odD1udWxsPT1XP3ZvaWQgMDpXLnZhbHVlKXx8dC4kZWwuY2xhc3NMaXN0LmFkZChjdCksRS52YWx1ZT0hMCxDKG51bGw9PShvPVcudmFsdWUpP3ZvaWQgMDpvLiRlbCx7dHJhbnNpdGlvbjoibm9uZSJ9KSxDKG51bGw9PShpPU0udmFsdWUpP3ZvaWQgMDppLiRlbCx7dHJhbnNpdGlvbjoibm9uZSJ9KSxKLnZhbHVlJiZ0ZSh7ZHJhZ2dlZERpc3RhbmNlOmd9KSx5JiYhSi52YWx1ZSl7Y29uc3QgZT1mdW5jdGlvbihlKXtyZXR1cm4gOCooTWF0aC5sb2coZSsxKS0yKX0oZyksdD1NYXRoLm1pbigtMSplLDApKmQ7cmV0dXJuIHZvaWQgQyhudWxsPT0obj1XLnZhbHVlKT92b2lkIDA6bi4kZWwse3RyYW5zZm9ybTpfKEIudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke3R9cHgsIDApYDpgdHJhbnNsYXRlM2QoJHt0fXB4LCAwLCAwKWB9KX1jb25zdCBJPTEtdztpZigoYWUudmFsdWV8fHgudmFsdWUmJlkudmFsdWU9PT14LnZhbHVlLTEpJiYobCh3KSxDKG51bGw9PShyPU0udmFsdWUpP3ZvaWQgMDpyLiRlbCx7b3BhY2l0eTpgJHtJfWAsdHJhbnNpdGlvbjoibm9uZSJ9LCEwKSksUyYmTS52YWx1ZSYmZi52YWx1ZSl7Y29uc3QgZT1NYXRoLm1pbihuZSgpK3cqKDEtbmUoKSksMSksdD04LTgqdyxsPU1hdGgubWF4KDAsMTQtMTQqdyk7QyhTLHtib3JkZXJSYWRpdXM6YCR7dH1weGAsdHJhbnNmb3JtOl8oQi52YWx1ZSk/YHNjYWxlKCR7ZX0pIHRyYW5zbGF0ZTNkKDAsICR7bH1weCwgMClgOmBzY2FsZSgke2V9KSB0cmFuc2xhdGUzZCgke2x9cHgsIDAsIDApYCx0cmFuc2l0aW9uOiJub25lIn0sITApfWlmKCFKLnZhbHVlKXtjb25zdCBlPWsqZDtDKG51bGw9PSh1PVcudmFsdWUpP3ZvaWQgMDp1LiRlbCx7dHJhbnNmb3JtOl8oQi52YWx1ZSk/YHRyYW5zbGF0ZTNkKDAsICR7ZX1weCwgMClgOmB0cmFuc2xhdGUzZCgke2V9cHgsIDAsIDApYH0pfX19LG9uUmVsZWFzZTpmdW5jdGlvbihlKXtpZighQS52YWx1ZXx8IVcudmFsdWUpcmV0dXJuO1cudmFsdWUuJGVsLmNsYXNzTGlzdC5yZW1vdmUoY3QpLEUudmFsdWU9ITEsQS52YWx1ZT0hMSxGLnZhbHVlPW5ldyBEYXRlO2NvbnN0IHQ9aWUoVy52YWx1ZS4kZWwsQi52YWx1ZSk7aWYoIXdlKGUudGFyZ2V0LCExKXx8IXR8fE51bWJlci5pc05hTih0KXx8bnVsbD09PXEudmFsdWUpcmV0dXJuO2NvbnN0IGw9Ri52YWx1ZS5nZXRUaW1lKCktcS52YWx1ZS5nZXRUaW1lKCksaT1qLnZhbHVlLShfKEIudmFsdWUpP2UuY2xpZW50WTplLmNsaWVudFgpLG49TWF0aC5hYnMoaSkvbDtpZihuPi4wNSYmKHoudmFsdWU9ITAsKHZvaWQgMCkuc2V0VGltZW91dCgoKT0+e3oudmFsdWU9ITF9LDIwMCkpLEoudmFsdWUpe2NvbnN0IGU9ImJvdHRvbSI9PT1CLnZhbHVlfHwicmlnaHQiPT09Qi52YWx1ZT8xOi0xO3JldHVybiBaKHtkcmFnZ2VkRGlzdGFuY2U6aSplLGNsb3NlRHJhd2VyOkssdmVsb2NpdHk6bixkaXNtaXNzaWJsZTpzLnZhbHVlfSksdm9pZCBvKCEwKX1pZigiYm90dG9tIj09PUIudmFsdWV8fCJyaWdodCI9PT1CLnZhbHVlP2k+MDppPDApcmV0dXJuIGhlKCksdm9pZCBvKCEwKTtpZihuPi40KXJldHVybiBLKCksdm9pZCBvKCExKTtpZih0Pj1NYXRoLm1pbihXLnZhbHVlLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ/PzAsKHZvaWQgMCkuaW5uZXJIZWlnaHQpKmIudmFsdWUpcmV0dXJuIEsoKSx2b2lkIG8oITEpO28oITApLGhlKCl9LGNsb3NlRHJhd2VyOkssb25OZXN0ZWREcmFnOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGU8MClyZXR1cm47Y29uc3QgbD1fKEIudmFsdWUpPyh2b2lkIDApLmlubmVySGVpZ2h0Oih2b2lkIDApLmlubmVyV2lkdGgsbz0obC0xNikvbCxpPW8rZSooMS1vKSxuPTE2KmUtMTY7QyhudWxsPT0odD1XLnZhbHVlKT92b2lkIDA6dC4kZWwse3RyYW5zZm9ybTpfKEIudmFsdWUpP2BzY2FsZSgke2l9KSB0cmFuc2xhdGUzZCgwLCAke259cHgsIDApYDpgc2NhbGUoJHtpfSkgdHJhbnNsYXRlM2QoJHtufXB4LCAwLCAwKWAsdHJhbnNpdGlvbjoibm9uZSJ9KX0sb25OZXN0ZWRSZWxlYXNlOmZ1bmN0aW9uKGUpe3ZhciB0O2NvbnN0IGw9XyhCLnZhbHVlKT8odm9pZCAwKS5pbm5lckhlaWdodDoodm9pZCAwKS5pbm5lcldpZHRoLG89ZT8obC0xNikvbDoxLGk9ZT8tMTY6MDtlJiZDKG51bGw9PSh0PVcudmFsdWUpP3ZvaWQgMDp0LiRlbCx7dHJhbnNpdGlvbjpgdHJhbnNmb3JtICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06XyhCLnZhbHVlKT9gc2NhbGUoJHtvfSkgdHJhbnNsYXRlM2QoMCwgJHtpfXB4LCAwKWA6YHNjYWxlKCR7b30pIHRyYW5zbGF0ZTNkKCR7aX1weCwgMCwgMClgfSl9LG9uTmVzdGVkT3BlbkNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdCxsO2NvbnN0IG89ZT8oKHZvaWQgMCkuaW5uZXJXaWR0aC0xNikvKHZvaWQgMCkuaW5uZXJXaWR0aDoxLGk9ZT8tMTY6MDtSLnZhbHVlJiYodm9pZCAwKS5jbGVhclRpbWVvdXQoUi52YWx1ZSksQyhudWxsPT0odD1XLnZhbHVlKT92b2lkIDA6dC4kZWwse3RyYW5zaXRpb246YHRyYW5zZm9ybSAke3N0LkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7c3QuRUFTRS5qb2luKCIsIil9KWAsdHJhbnNmb3JtOmBzY2FsZSgke299KSB0cmFuc2xhdGUzZCgwLCAke2l9cHgsIDApYH0pLCFlJiZudWxsIT0obD1XLnZhbHVlKSYmbC4kZWwmJihSLnZhbHVlPSh2b2lkIDApLnNldFRpbWVvdXQoKCk9Pnt2YXIgZSx0O2NvbnN0IGw9aWUobnVsbD09KGU9Vy52YWx1ZSk/dm9pZCAwOmUuJGVsLEIudmFsdWUpO0MobnVsbD09KHQ9Vy52YWx1ZSk/dm9pZCAwOnQuJGVsLHt0cmFuc2l0aW9uOiJub25lIix0cmFuc2Zvcm06XyhCLnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHtsfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7bH1weCwgMCwgMClgfSl9LDUwMCkpfSxlbWl0Q2xvc2U6aSxlbWl0RHJhZzpsLGVtaXRSZWxlYXNlOm8sZW1pdE9wZW5DaGFuZ2U6bixuZXN0ZWQ6dSxoYW5kbGVPbmx5Oncsbm9Cb2R5U3R5bGVzOlN9fWNvbnN0IGR0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyYXdlclJvb3QiLHByb3BzOnthY3RpdmVTbmFwUG9pbnQ6e2RlZmF1bHQ6dm9pZCAwfSxjbG9zZVRocmVzaG9sZDp7ZGVmYXVsdDouMjV9LHNob3VsZFNjYWxlQmFja2dyb3VuZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc2Nyb2xsTG9ja1RpbWVvdXQ6e2RlZmF1bHQ6MTAwfSxmaXhlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LG1vZGFsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sb3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXJlY3Rpb246e2RlZmF1bHQ6ImJvdHRvbSJ9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFufSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scHJldmVudFNjcm9sbFJlc3RvcmF0aW9uOnt0eXBlOkJvb2xlYW59LHNuYXBQb2ludHM6e2RlZmF1bHQ6dm9pZCAwfSxmYWRlRnJvbUluZGV4OntkZWZhdWx0OnZvaWQgMH19LGVtaXRzOlsiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2V4cG9zZTpsLGVtaXQ6b30pe2NvbnN0IGk9dCxuPW87ZS51c2VTbG90cygpO2NvbnN0IHI9ZS5jb21wdXRlZCgoKT0+aS5mYWRlRnJvbUluZGV4Pz8oaS5zbmFwUG9pbnRzJiZpLnNuYXBQb2ludHMubGVuZ3RoLTEpKSxzPSRlKGksIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTppLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09aS5vcGVufSksdT0kZShpLCJhY3RpdmVTbmFwUG9pbnQiLG4se3Bhc3NpdmU6dm9pZCAwPT09aS5hY3RpdmVTbmFwUG9pbnR9KSxkPXtlbWl0RHJhZzplPT5uKCJkcmFnIixlKSxlbWl0UmVsZWFzZTplPT5uKCJyZWxlYXNlIixlKSxlbWl0Q2xvc2U6KCk9Pm4oImNsb3NlIiksZW1pdE9wZW5DaGFuZ2U6ZT0+e24oInVwZGF0ZTpvcGVuIixlKSxzZXRUaW1lb3V0KCgpPT57bigiYW5pbWF0aW9uRW5kIixlKX0sMWUzKnN0LkRVUkFUSU9OKX19LHtjbG9zZURyYXdlcjpmLGhhc0JlZW5PcGVuZWQ6Zyxtb2RhbDp5LGlzT3BlbjpifT1udCh5dCh7Li4uZCwuLi5lLnRvUmVmcyhpKSxhY3RpdmVTbmFwUG9pbnQ6dSxmYWRlRnJvbUluZGV4OnIsb3BlbjpzfSkpO2Z1bmN0aW9uIGgoZSl7dm9pZCAwPT09cy52YWx1ZT8oYi52YWx1ZT1lLGU/Zy52YWx1ZT0hMDpmKCkpOmQuZW1pdE9wZW5DaGFuZ2UoZSl9cmV0dXJuIGwoe29wZW46Yn0pLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtvcGVuOmUudW5yZWYoYiksbW9kYWw6ZS51bnJlZih5KSwib25VcGRhdGU6b3BlbiI6aH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjplLnVucmVmKGIpfSldKSxfOjN9LDgsWyJvcGVuIiwibW9kYWwiXSkpfX0pLHB0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyYXdlclJvb3ROZXN0ZWQiLHByb3BzOnthY3RpdmVTbmFwUG9pbnQ6e30sY2xvc2VUaHJlc2hvbGQ6e30sc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOnt0eXBlOkJvb2xlYW59LHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6e3R5cGU6Qm9vbGVhbn0sc2Nyb2xsTG9ja1RpbWVvdXQ6e30sZml4ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbn0sbW9kYWw6e3R5cGU6Qm9vbGVhbn0sb3Blbjp7dHlwZTpCb29sZWFufSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFufSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlyZWN0aW9uOnt9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFufSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW59LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjp7dHlwZTpCb29sZWFufSxzbmFwUG9pbnRzOnt9LGZhZGVGcm9tSW5kZXg6e319LGVtaXRzOlsiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2VtaXQ6bH0pe2NvbnN0IG89dCxpPWwse29uTmVzdGVkRHJhZzpuLG9uTmVzdGVkT3BlbkNoYW5nZTpyLG9uTmVzdGVkUmVsZWFzZTpzfT1pdCgpO2Z1bmN0aW9uIHYoKXtyKCExKX1mdW5jdGlvbiBEKGUpe24oZSl9ZnVuY3Rpb24gJChlKXtlJiZyKGUpLGkoInVwZGF0ZTpvcGVuIixlKX1jb25zdCB1PXcobyxpKTtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkdCxlLm1lcmdlUHJvcHMoZS51bnJlZih1KSx7bmVzdGVkOiIiLG9uQ2xvc2U6dixvbkRyYWc6RCxvblJlbGVhc2U6ZS51bnJlZihzKSwib25VcGRhdGU6b3BlbiI6JH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbIm9uUmVsZWFzZSJdKSl9fSksZnQ9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJhd2VyT3ZlcmxheSIsc2V0dXAodCl7Y29uc3R7b3ZlcmxheVJlZjpsLGhhc1NuYXBQb2ludHM6byxpc09wZW46aSxzaG91bGRGYWRlOm59PWl0KCk7cmV0dXJuKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2ZSkse3JlZl9rZXk6Im92ZXJsYXlSZWYiLHJlZjpsLCJkYXRhLXZhdWwtb3ZlcmxheSI6IiIsImRhdGEtdmF1bC1zbmFwLXBvaW50cyI6ZS51bnJlZihpKSYmZS51bnJlZihvKT8idHJ1ZSI6ImZhbHNlIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzLW92ZXJsYXkiOmUudW5yZWYoaSkmJmUudW5yZWYobik/InRydWUiOiJmYWxzZSJ9LG51bGwsOCxbImRhdGEtdmF1bC1zbmFwLXBvaW50cyIsImRhdGEtdmF1bC1zbmFwLXBvaW50cy1vdmVybGF5Il0pKX19KTtjb25zdCBtdD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcmF3ZXJDb250ZW50IixzZXR1cCh0KXtjb25zdHtvcGVuOmwsaXNPcGVuOm8sc25hcFBvaW50c09mZnNldDppLGhhc1NuYXBQb2ludHM6bixkcmF3ZXJSZWY6cixvblByZXNzOnMsb25EcmFnOnUsb25SZWxlYXNlOmQsbW9kYWw6ZixlbWl0T3BlbkNoYW5nZTpnLGRpc21pc3NpYmxlOnksa2V5Ym9hcmRJc09wZW46YixjbG9zZURyYXdlcjprLGRpcmVjdGlvbjp4LGhhbmRsZU9ubHk6Qn09aXQoKTshZnVuY3Rpb24oKXtjb25zdHtkaXJlY3Rpb246dCxpc09wZW46bCxzaG91bGRTY2FsZUJhY2tncm91bmQ6byxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOmksbm9Cb2R5U3R5bGVzOm59PWl0KCkscj1lLnJlZihudWxsKSxzPWUucmVmKCh2b2lkIDApLmJvZHkuc3R5bGUuYmFja2dyb3VuZENvbG9yKTtmdW5jdGlvbiB2KCl7cmV0dXJuKCh2b2lkIDApLmlubmVyV2lkdGgtMjYpLyh2b2lkIDApLmlubmVyV2lkdGh9ZS53YXRjaEVmZmVjdChlPT57aWYobC52YWx1ZSYmby52YWx1ZSl7ci52YWx1ZSYmY2xlYXJUaW1lb3V0KHIudmFsdWUpO2NvbnN0IGw9KHZvaWQgMCkucXVlcnlTZWxlY3RvcigiW2RhdGEtdmF1bC1kcmF3ZXItd3JhcHBlcl0iKXx8KHZvaWQgMCkucXVlcnlTZWxlY3RvcigiW3ZhdWwtZHJhd2VyLXdyYXBwZXJdIik7aWYoIWwpcmV0dXJuO2kudmFsdWUmJiFuLnZhbHVlJiZkZSgodm9pZCAwKS5ib2R5LHtiYWNrZ3JvdW5kOiJibGFjayJ9KSxkZShsLHt0cmFuc2Zvcm1PcmlnaW46Xyh0LnZhbHVlKT8idG9wIjoibGVmdCIsdHJhbnNpdGlvblByb3BlcnR5OiJ0cmFuc2Zvcm0sIGJvcmRlci1yYWRpdXMiLHRyYW5zaXRpb25EdXJhdGlvbjpgJHtzdC5EVVJBVElPTn1zYCx0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246YGN1YmljLWJlemllcigke3N0LkVBU0Uuam9pbigiLCIpfSlgfSk7Y29uc3Qgbz1kZShsLHtib3JkZXJSYWRpdXM6IjhweCIsb3ZlcmZsb3c6ImhpZGRlbiIsLi4uXyh0LnZhbHVlKT97dHJhbnNmb3JtOmBzY2FsZSgke3YoKX0pIHRyYW5zbGF0ZTNkKDAsIGNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC10b3ApICsgMTRweCksIDApYH06e3RyYW5zZm9ybTpgc2NhbGUoJHt2KCl9KSB0cmFuc2xhdGUzZChjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwLCAwKWB9fSk7ZSgoKT0+e28oKSxyLnZhbHVlPSh2b2lkIDApLnNldFRpbWVvdXQoKCk9PntzLnZhbHVlPyh2b2lkIDApLmJvZHkuc3R5bGUuYmFja2dyb3VuZD1zLnZhbHVlOih2b2lkIDApLmJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoImJhY2tncm91bmQiKX0sMWUzKnN0LkRVUkFUSU9OKX0pfX0se2ZsdXNoOiJwcmUifSl9KCk7Y29uc3QgUz1lLnJlZighMSksdz1lLmNvbXB1dGVkKCgpPT5pLnZhbHVlJiZpLnZhbHVlLmxlbmd0aD4wP2Ake2kudmFsdWVbMF19cHhgOiIwIik7ZnVuY3Rpb24gcChlKXtmLnZhbHVlJiYhZS5kZWZhdWx0UHJldmVudGVkPyhiLnZhbHVlJiYoYi52YWx1ZT0hMSkseS52YWx1ZT9nKCExKTplLnByZXZlbnREZWZhdWx0KCkpOmUucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBhKGUpe0IudmFsdWV8fHMoZSl9ZnVuY3Rpb24gYyhlKXtCLnZhbHVlfHx1KGUpfXJldHVybiBlLndhdGNoRWZmZWN0KCgpPT57bi52YWx1ZSYmKHZvaWQgMCkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Uy52YWx1ZT0hMH0pfSksKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5ZSkse3JlZl9rZXk6ImRyYXdlclJlZiIscmVmOnIsImRhdGEtdmF1bC1kcmF3ZXIiOiIiLCJkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbiI6ZS51bnJlZih4KSwiZGF0YS12YXVsLWRlbGF5ZWQtc25hcC1wb2ludHMiOlMudmFsdWU/InRydWUiOiJmYWxzZSIsImRhdGEtdmF1bC1zbmFwLXBvaW50cyI6ZS51bnJlZihvKSYmZS51bnJlZihuKT8idHJ1ZSI6ImZhbHNlIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHsiLS1zbmFwLXBvaW50LWhlaWdodCI6dy52YWx1ZX0pLG9uUG9pbnRlcmRvd246YSxvblBvaW50ZXJtb3ZlOmMsb25Qb2ludGVydXA6ZS51bnJlZihkKSxvblBvaW50ZXJEb3duT3V0c2lkZTpwLG9uT3BlbkF1dG9Gb2N1czpsWzBdfHwobFswXT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25Fc2NhcGVLZXlEb3duOmxbMV18fChsWzFdPXQ9PntlLnVucmVmKHkpfHx0LnByZXZlbnREZWZhdWx0KCl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbiIsImRhdGEtdmF1bC1kZWxheWVkLXNuYXAtcG9pbnRzIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzIiwic3R5bGUiLCJvblBvaW50ZXJ1cCJdKSl9fSksaHQ9WyJkYXRhLXZhdWwtZHJhd2VyLXZpc2libGUiXSxndD17ImRhdGEtdmF1bC1oYW5kbGUtaGl0YXJlYSI6IiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHZ0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyYXdlckhhbmRsZSIscHJvcHM6e3ByZXZlbnRDeWNsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxzZXR1cCh0KXtjb25zdCBsPXQse29uUHJlc3M6byxvbkRyYWc6aSxoYW5kbGVSZWY6bixoYW5kbGVPbmx5OnIsaXNPcGVuOnMsc25hcFBvaW50czp1LGFjdGl2ZVNuYXBQb2ludDpkLGlzRHJhZ2dpbmc6ZixkaXNtaXNzaWJsZTpnLGNsb3NlRHJhd2VyOnl9PWl0KCksYj1lLnJlZihudWxsKSxrPWUucmVmKCExKTtmdW5jdGlvbiBtKCl7ay52YWx1ZT9IKCk6KHZvaWQgMCkuc2V0VGltZW91dCgoKT0+eyFmdW5jdGlvbigpe2lmKGYudmFsdWV8fGwucHJldmVudEN5Y2xlfHxrLnZhbHVlKXJldHVybiB2b2lkIEgoKTtpZihIKCksIXUudmFsdWV8fDA9PT11LnZhbHVlLmxlbmd0aClyZXR1cm4gdm9pZChnLnZhbHVlfHx5KCkpO2NvbnN0IGU9ZC52YWx1ZT09PXUudmFsdWVbdS52YWx1ZS5sZW5ndGgtMV07aWYoZSYmZy52YWx1ZSlyZXR1cm4gdm9pZCB5KCk7Y29uc3QgdD11LnZhbHVlLmZpbmRJbmRleChlPT5lPT09ZC52YWx1ZSk7aWYoLTE9PT10KXJldHVybjtjb25zdCBvPWU/MDp0KzE7ZC52YWx1ZT11LnZhbHVlW29dfSgpfSwxMjApfWZ1bmN0aW9uIEgoKXtiLnZhbHVlJiYodm9pZCAwKS5jbGVhclRpbWVvdXQoYi52YWx1ZSksay52YWx1ZT0hMX1mdW5jdGlvbiBwKGUpe3IudmFsdWUmJm8oZSksYi52YWx1ZT0odm9pZCAwKS5zZXRUaW1lb3V0KCgpPT57ay52YWx1ZT0hMH0sMjUwKX1mdW5jdGlvbiBhKGUpe3IudmFsdWUmJmkoZSl9cmV0dXJuKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJkaXYiLHtyZWZfa2V5OiJoYW5kbGVSZWYiLHJlZjpuLCJkYXRhLXZhdWwtZHJhd2VyLXZpc2libGUiOmUudW5yZWYocyk/InRydWUiOiJmYWxzZSIsImRhdGEtdmF1bC1oYW5kbGUiOiIiLCJhcmlhLWhpZGRlbiI6InRydWUiLG9uQ2xpY2s6bSxvblBvaW50ZXJjYW5jZWw6SCxvblBvaW50ZXJkb3duOnAsb25Qb2ludGVybW92ZTphfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoInNwYW4iLGd0LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pXSw0MCxodCkpfX0pLGJ0PXtzbG90czp7b3ZlcmxheToiZml4ZWQgaW5zZXQtMCBiZy1lbGV2YXRlZC83NSIsY29udGVudDoiZml4ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctZGVmYXVsdCBmbGV4IGZvY3VzOm91dGxpbmUtbm9uZSIsaGFuZGxlOlsic2hyaW5rLTAgIWJnLWFjY2VudGVkIiwidHJhbnNpdGlvbi1vcGFjaXR5Il0sY29udGFpbmVyOiJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBnYXAtNCBwLTQgb3ZlcmZsb3cteS1hdXRvIixoZWFkZXI6IiIsdGl0bGU6InRleHQtaGlnaGxpZ2h0ZWQgZm9udC1zZW1pYm9sZCIsZGVzY3JpcHRpb246Im10LTEgdGV4dC1tdXRlZCB0ZXh0LXNtIixib2R5OiJmbGV4LTEiLGZvb3RlcjoiZmxleCBmbGV4LWNvbCBnYXAtMS41In0sdmFyaWFudHM6e2RpcmVjdGlvbjp7dG9wOntjb250ZW50OiJtYi0yNCBmbGV4LWNvbC1yZXZlcnNlIixoYW5kbGU6Im1iLTQifSxyaWdodDp7Y29udGVudDoiZmxleC1yb3ciLGhhbmRsZToiIW1sLTQifSxib3R0b206e2NvbnRlbnQ6Im10LTI0IGZsZXgtY29sIixoYW5kbGU6Im10LTQifSxsZWZ0Ontjb250ZW50OiJmbGV4LXJvdy1yZXZlcnNlIixoYW5kbGU6IiFtci00In19LGluc2V0Ont0cnVlOntjb250ZW50OiJyb3VuZGVkLWxnIGFmdGVyOmhpZGRlbiBvdmVyZmxvdy1oaWRkZW4gWy0taW5pdGlhbC10cmFuc2Zvcm06Y2FsYygxMDAlKzEuNXJlbSldIn19LHNuYXBQb2ludHM6e3RydWU6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7ZGlyZWN0aW9uOlsidG9wIiwiYm90dG9tIl0sY2xhc3M6e2NvbnRlbnQ6ImgtYXV0byBtYXgtaC1bOTYlXSIsaGFuZGxlOiIhdy0xMiAhaC0xLjUgbXgtYXV0byJ9fSx7ZGlyZWN0aW9uOlsidG9wIiwiYm90dG9tIl0sc25hcFBvaW50czohMCxjbGFzczp7Y29udGVudDoiaC1mdWxsIn19LHtkaXJlY3Rpb246WyJyaWdodCIsImxlZnQiXSxjbGFzczp7Y29udGVudDoidy1hdXRvIG1heC13LVtjYWxjKDEwMCUtMnJlbSldIixoYW5kbGU6IiFoLTEyICF3LTEuNSBtdC1hdXRvIG1iLWF1dG8ifX0se2RpcmVjdGlvbjpbInJpZ2h0IiwibGVmdCJdLHNuYXBQb2ludHM6ITAsY2xhc3M6e2NvbnRlbnQ6InctZnVsbCJ9fSx7ZGlyZWN0aW9uOiJ0b3AiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC14LTQgdG9wLTQifX0se2RpcmVjdGlvbjoidG9wIixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteC0wIHRvcC0wIHJvdW5kZWQtYi1sZyJ9fSx7ZGlyZWN0aW9uOiJib3R0b20iLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC14LTQgYm90dG9tLTQifX0se2RpcmVjdGlvbjoiYm90dG9tIixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteC0wIGJvdHRvbS0wIHJvdW5kZWQtdC1sZyJ9fSx7ZGlyZWN0aW9uOiJsZWZ0IixpbnNldDohMCxjbGFzczp7Y29udGVudDoiaW5zZXQteS00IGxlZnQtNCJ9fSx7ZGlyZWN0aW9uOiJsZWZ0IixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteS0wIGxlZnQtMCByb3VuZGVkLXItbGcifX0se2RpcmVjdGlvbjoicmlnaHQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC15LTQgcmlnaHQtNCJ9fSx7ZGlyZWN0aW9uOiJyaWdodCIsaW5zZXQ6ITEsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXktMCByaWdodC0wIHJvdW5kZWQtbC1sZyJ9fV19LGt0PXtfX25hbWU6IlVEcmF3ZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0aXRsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saW5zZXQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG92ZXJsYXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxoYW5kbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sbmVzdGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sYWN0aXZlU25hcFBvaW50Ont0eXBlOltOdW1iZXIsU3RyaW5nLG51bGxdLHJlcXVpcmVkOiExfSxjbG9zZVRocmVzaG9sZDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNob3VsZFNjYWxlQmFja2dyb3VuZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNjcm9sbExvY2tUaW1lb3V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZml4ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlyZWN0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJib3R0b20ifSxub0JvZHlTdHlsZXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGFuZGxlT25seTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc25hcFBvaW50czp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX19LGVtaXRzOlsiY2xvc2U6cHJldmVudCIsImRyYWciLCJyZWxlYXNlIiwiY2xvc2UiLCJ1cGRhdGU6b3BlbiIsInVwZGF0ZTphY3RpdmVTbmFwUG9pbnQiLCJhbmltYXRpb25FbmQiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBvPXQsaT1sLG49ZS51c2VTbG90cygpLHI9cygpLGQ9dSgiZHJhd2VyIixvKSxnPXcoeChvLCJhY3RpdmVTbmFwUG9pbnQiLCJjbG9zZVRocmVzaG9sZCIsInNob3VsZFNjYWxlQmFja2dyb3VuZCIsInNldEJhY2tncm91bmRDb2xvck9uU2NhbGUiLCJzY3JvbGxMb2NrVGltZW91dCIsImZpeGVkIiwiZGlzbWlzc2libGUiLCJtb2RhbCIsIm9wZW4iLCJkZWZhdWx0T3BlbiIsIm5lc3RlZCIsImRpcmVjdGlvbiIsIm5vQm9keVN0eWxlcyIsImhhbmRsZU9ubHkiLCJwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb24iLCJzbmFwUG9pbnRzIiksaSkseT1OKGUudG9SZWYoKCk9Pm8ucG9ydGFsKSksYj1lLnRvUmVmKCgpPT5vLmNvbnRlbnQpLGs9ZS5jb21wdXRlZCgoKT0+e2lmKCFvLmRpc21pc3NpYmxlKXtyZXR1cm5bImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKGUsdCk9PihlW3RdPWU9PntlLnByZXZlbnREZWZhdWx0KCksaSgiY2xvc2U6cHJldmVudCIpfSxlKSx7fSl9cmV0dXJue3BvaW50ZXJEb3duT3V0c2lkZTp4ZX19KSxCPWUuY29tcHV0ZWQoKCk9PmYoe2V4dGVuZDpmKGJ0KSwuLi5yLnVpPy5kcmF3ZXJ8fHt9fSkoe2RpcmVjdGlvbjpvLmRpcmVjdGlvbixpbnNldDpvLmluc2V0LHNuYXBQb2ludHM6by5zbmFwUG9pbnRzJiZvLnNuYXBQb2ludHMubGVuZ3RoPjB9KSk7cmV0dXJuKGwsaSxyLHMpPT57SmUoaSxlLmNyZWF0ZVZOb2RlKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodC5uZXN0ZWQ/ZS51bnJlZihwdCk6ZS51bnJlZihkdCkpLGUubWVyZ2VQcm9wcyhlLnVucmVmKGcpLHMpLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLHMsdSk9PntpZighcilyZXR1cm5bbi5kZWZhdWx0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihwZSkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6by5jbGFzc30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihnZSksZS51bnJlZih5KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lm92ZXJsYXk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZ0KSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOkIudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZihkKT8ub3ZlcmxheX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihtdCksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qi52YWx1ZS5jb250ZW50KHtjbGFzczpbIW4uZGVmYXVsdCYmby5jbGFzcyxlLnVucmVmKGQpPy5jb250ZW50XX0pfSxiLnZhbHVlLGUudG9IYW5kbGVycyhrLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5oYW5kbGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZ0KSx7a2V5OjAsImRhdGEtc2xvdCI6ImhhbmRsZSIsY2xhc3M6Qi52YWx1ZS5oYW5kbGUoe2NsYXNzOmUudW5yZWYoZCk/LmhhbmRsZX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLCF0LnRpdGxlJiYhbi50aXRsZXx8IXQuZGVzY3JpcHRpb24mJiFuLmRlc2NyaXB0aW9ufHxuLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFYpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC50aXRsZXx8bi50aXRsZT9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjB9KSksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdChsLiRzbG90cywiY29udGVudCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY29udGFpbmVyIixjbGFzczpCLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZihkKT8uY29udGFpbmVyfSl9LFtuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpCLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihkKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse30sKCk9Plt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6Qi52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihkKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6Qi52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihkKT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uYm9keT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6Qi52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKGQpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImJvZHkiKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpCLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihkKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImZvb3RlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldKSxfOjN9LDE2KV07bi5kZWZhdWx0P3IoamUoZS51bnJlZihwZSkseyJhcy1jaGlsZCI6IiIsY2xhc3M6by5jbGFzc30se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8saSxuKT0+e2lmKCFvKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlZmF1bHQiKV07SGUobC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsbyxpLG4pfSksXzozfSxzLHUpKTpyKCJceDNjIS0tLS1ceDNlIikscihqZShlLnVucmVmKGdlKSxlLnVucmVmKHkpLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLHMsdSk9PntpZighcilyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKEkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5vdmVybGF5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmdCkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpCLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoZCk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYobXQpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkIudmFsdWUuY29udGVudCh7Y2xhc3M6WyFuLmRlZmF1bHQmJm8uY2xhc3MsZS51bnJlZihkKT8uY29udGVudF19KX0sYi52YWx1ZSxlLnRvSGFuZGxlcnMoay52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaGFuZGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2dCkse2tleTowLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOkIudmFsdWUuaGFuZGxlKHtjbGFzczplLnVucmVmKGQpPy5oYW5kbGV9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwhdC50aXRsZSYmIW4udGl0bGV8fCF0LmRlc2NyaXB0aW9uJiYhbi5kZXNjcmlwdGlvbnx8bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QudGl0bGV8fG4udGl0bGU/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowfSkpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToyfSkpXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImNvbnRlbnQiLHt9LCgpPT5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6Qi52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoZCk/LmNvbnRhaW5lcn0pfSxbbi5oZWFkZXJ8fHQudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6Qi52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoZCk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJoZWFkZXIiLHt9LCgpPT5bdC50aXRsZXx8bi50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOkIudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYoZCk/LnRpdGxlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOkIudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoZCk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLmJvZHk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOkIudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZihkKT8uYm9keX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJib2R5IildLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6Qi52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoZCk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKV0pLF86M30sMTYsWyJjbGFzcyJdKV0pLF86M30pXTtyKGplKGUudW5yZWYoSSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGkscixzLHUpPT57aWYoIXIpcmV0dXJuW3Qub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZnQpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6Qi52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKGQpPy5vdmVybGF5fSl9LG51bGwsOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKG10KSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpCLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZvLmNsYXNzLGUudW5yZWYoZCk/LmNvbnRlbnRdfSl9LGIudmFsdWUsZS50b0hhbmRsZXJzKGsudmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LmhhbmRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodnQpLHtrZXk6MCwiZGF0YS1zbG90IjoiaGFuZGxlIixjbGFzczpCLnZhbHVlLmhhbmRsZSh7Y2xhc3M6ZS51bnJlZihkKT8uaGFuZGxlfSl9LG51bGwsOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOkIudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKGQpPy5jb250YWluZXJ9KX0sW24uaGVhZGVyfHx0LnRpdGxlfHxuLnRpdGxlfHx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOkIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKGQpPy5oZWFkZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiaGVhZGVyIix7fSwoKT0+W3QudGl0bGV8fG4udGl0bGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpCLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKGQpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpCLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKGQpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5ib2R5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpCLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoZCk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOkIudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKGQpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIildLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSldKSxfOjN9LDE2LFsiY2xhc3MiXSldO3Qub3ZlcmxheT9yKGplKGUudW5yZWYoZnQpLHsiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6Qi52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKGQpPy5vdmVybGF5fSl9LG51bGwscyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoamUoZS51bnJlZihtdCksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qi52YWx1ZS5jb250ZW50KHtjbGFzczpbIW4uZGVmYXVsdCYmby5jbGFzcyxlLnVucmVmKGQpPy5jb250ZW50XX0pfSxiLnZhbHVlLGUudG9IYW5kbGVycyhrLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGkscixzKT0+e2lmKCFpKXJldHVyblt0LmhhbmRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodnQpLHtrZXk6MCwiZGF0YS1zbG90IjoiaGFuZGxlIixjbGFzczpCLnZhbHVlLmhhbmRsZSh7Y2xhc3M6ZS51bnJlZihkKT8uaGFuZGxlfSl9LG51bGwsOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOkIudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKGQpPy5jb250YWluZXJ9KX0sW24uaGVhZGVyfHx0LnRpdGxlfHxuLnRpdGxlfHx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOkIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKGQpPy5oZWFkZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiaGVhZGVyIix7fSwoKT0+W3QudGl0bGV8fG4udGl0bGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpCLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKGQpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpCLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKGQpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5ib2R5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpCLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoZCk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOkIudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKGQpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIildLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSldO3QuaGFuZGxlP2koamUoZS51bnJlZih2dCkseyJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOkIudmFsdWUuaGFuZGxlKHtjbGFzczplLnVucmVmKGQpPy5oYW5kbGV9KX0sbnVsbCxyLHMpKTppKCJceDNjIS0tLS1ceDNlIiksIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD9pKGplKGUudW5yZWYoViksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxyLHMpPT57aWYoIWkpcmV0dXJuW3QudGl0bGV8fG4udGl0bGU/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowfSkpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToyfSkpXTt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD9pKGplKGUudW5yZWYoZmUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldO0hlKGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntpKGAke1FlKHQudGl0bGUpfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYoZmUpLG51bGwsbnVsbCxyLHMpKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD9pKGplKGUudW5yZWYobWUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldO0hlKGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntpKGAke1FlKHQuZGVzY3JpcHRpb24pfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYobWUpLG51bGwsbnVsbCxyLHMpKX0pLF86M30scixzKSk6aSgiXHgzYyEtLS0tXHgzZSIpLEhlKGwuJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+e2koYDxkaXYgZGF0YS1zbG90PSJjb250YWluZXIiIGNsYXNzPSIke1dlKEIudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKGQpPy5jb250YWluZXJ9KSl9IiR7c30+YCksbi5oZWFkZXJ8fHQudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGkoYDxkaXYgZGF0YS1zbG90PSJoZWFkZXIiIGNsYXNzPSIke1dlKEIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKGQpPy5oZWFkZXJ9KSl9IiR7c30+YCksSGUobC4kc2xvdHMsImhlYWRlciIse30sKCk9Pnt0LnRpdGxlfHxuLnRpdGxlP2koamUoZS51bnJlZihmZSkseyJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6Qi52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihkKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldO0hlKGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntpKGAke1FlKHQudGl0bGUpfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP2koamUoZS51bnJlZihtZSkseyJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6Qi52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihkKT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldO0hlKGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntpKGAke1FlKHQuZGVzY3JpcHRpb24pfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxyLHMpLGkoIjwvZGl2PiIpKTppKCJceDNjIS0tLS1ceDNlIiksbi5ib2R5PyhpKGA8ZGl2IGRhdGEtc2xvdD0iYm9keSIgY2xhc3M9IiR7V2UoQi52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKGQpPy5ib2R5fSkpfSIke3N9PmApLEhlKGwuJHNsb3RzLCJib2R5Iix7fSxudWxsLGkscixzKSxpKCI8L2Rpdj4iKSk6aSgiXHgzYyEtLS0tXHgzZSIpLG4uZm9vdGVyPyhpKGA8ZGl2IGRhdGEtc2xvdD0iZm9vdGVyIiBjbGFzcz0iJHtXZShCLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihkKT8uZm9vdGVyfSkpfSIke3N9PmApLEhlKGwuJHNsb3RzLCJmb290ZXIiLHt9LG51bGwsaSxyLHMpLGkoIjwvZGl2PiIpKTppKCJceDNjIS0tLS1ceDNlIiksaSgiPC9kaXY+Iil9LGkscixzKX0pLF86M30scyx1KSl9KSxfOjN9LHMsdSkpfSksXzozfSxzLHUpKX0pLF86M30pLHIpfX19LHh0PWt0LnNldHVwO2t0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRHJhd2VyLnZ1ZSIpLHh0P3h0KHQsbCk6dm9pZCAwfTtjb25zdCBCdD17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGhpZGRlbiBsZzpmbGV4IGZsZXgtY29sIG1pbi1oLXN2aCBtaW4tdy0xNiB3LSgtLXdpZHRoKSBzaHJpbmstMCIsaGVhZGVyOiJoLSgtLXVpLWhlYWRlci1oZWlnaHQpIHNocmluay0wIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtNCIsYm9keToiZmxleCBmbGV4LWNvbCBnYXAtNCBmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHB4LTQgcHktMiIsZm9vdGVyOiJzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTQgcHktMiIsdG9nZ2xlOiIiLGhhbmRsZToiIixjb250ZW50OiJsZzpoaWRkZW4iLG92ZXJsYXk6ImxnOmhpZGRlbiJ9LHZhcmlhbnRzOnttZW51Ont0cnVlOntoZWFkZXI6InNtOnB4LTYiLGJvZHk6InNtOnB4LTYiLGZvb3Rlcjoic206cHgtNiJ9fSxzaWRlOntsZWZ0Ontyb290OiJib3JkZXItZSBib3JkZXItZGVmYXVsdCJ9LHJpZ2h0Ontyb290OiIifX0sdG9nZ2xlU2lkZTp7bGVmdDp7dG9nZ2xlOiIifSxyaWdodDp7dG9nZ2xlOiJtcy1hdXRvIn19fX0sU3Q9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVRGFzaGJvYXJkU2lkZWJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6ZS5tZXJnZU1vZGVscyh7bW9kZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNsaWRlb3ZlciJ9LG1lbnU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG9nZ2xlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sdG9nZ2xlU2lkZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGVmdCJ9LGF1dG9DbG9zZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sbWluU2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0sbWF4U2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoyMH0sZGVmYXVsdFNpemU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTV9LHJlc2l6YWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGNvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sY29sbGFwc2VkU2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfX0se29wZW46e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxvcGVuTW9kaWZpZXJzOnt9LGNvbGxhcHNlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNvbGxhcHNlZE1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOm9wZW4iLCJ1cGRhdGU6Y29sbGFwc2VkIl0sc2V0dXAodCl7Y29uc3QgbD10LG89ZS51c2VTbG90cygpLGk9ZS51c2VNb2RlbCh0LCJvcGVuIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSxnPWUudXNlTW9kZWwodCwiY29sbGFwc2VkIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSx5PW4oKSx7dDpifT1yKCksaz1zKCkseD11KCJkYXNoYm9hcmRTaWRlYmFyIixsKSxCPWFlKHtzdG9yYWdlS2V5OiJkYXNoYm9hcmQiLHVuaXQ6IiUiLHNpZGViYXJPcGVuOmUucmVmKCExKSxzaWRlYmFyQ29sbGFwc2VkOmUucmVmKCExKX0pLFM9YCR7Qi5zdG9yYWdlS2V5fS1zaWRlYmFyLSR7bC5pZHx8ZS51c2VJZCgpfWAse2VsOncsc2l6ZTpOLGNvbGxhcHNlOkksaXNDb2xsYXBzZWQ6Vixpc0RyYWdnaW5nOkEsb25Nb3VzZURvd246eixvblRvdWNoU3RhcnQ6TSxvbkRvdWJsZUNsaWNrOlB9PWxlKFMsZS50b1JlZigoKT0+KHsuLi5CLC4uLmx9KSkse2NvbGxhcHNlZDpnfSksW3EsRl09ZCgpLFtPLEVdPWQoKTt1c2VSdW50aW1lSG9vaygiZGFzaGJvYXJkOnNpZGViYXI6dG9nZ2xlIiwoKT0+e2kudmFsdWU9IWkudmFsdWV9KSx1c2VSdW50aW1lSG9vaygiZGFzaGJvYXJkOnNpZGViYXI6Y29sbGFwc2UiLGU9PntWLnZhbHVlPWV9KSxlLndhdGNoKGksKCk9PkIuc2lkZWJhck9wZW4udmFsdWU9aS52YWx1ZSx7aW1tZWRpYXRlOiEwfSksZS53YXRjaChWLCgpPT5CLnNpZGViYXJDb2xsYXBzZWQudmFsdWU9Vi52YWx1ZSx7aW1tZWRpYXRlOiEwfSksZS53YXRjaCgoKT0+eS5mdWxsUGF0aCwoKT0+e2wuYXV0b0Nsb3NlJiYoaS52YWx1ZT0hMSl9KTtjb25zdCBSPWUuY29tcHV0ZWQoKCk9PmYoe2V4dGVuZDpmKEJ0KSwuLi5rLnVpPy5kYXNoYm9hcmRTaWRlYmFyfHx7fX0pKHtzaWRlOmwuc2lkZX0pKSxqPWUuY29tcHV0ZWQoKCk9Pih7c2xpZGVvdmVyOmx0LG1vZGFsOnVlLGRyYXdlcjprdH1bbC5tb2RlXSkpLFU9ZS50b1JlZigoKT0+c2UobC5tZW51LHt9LCJtb2RhbCI9PT1sLm1vZGU/e2Z1bGxzY3JlZW46ITAsdHJhbnNpdGlvbjohMX06InNsaWRlb3ZlciI9PT1sLm1vZGU/e3NpZGU6ImxlZnQifTp7fSkpO2Z1bmN0aW9uIHRvZ2dsZU9wZW4oKXtpLnZhbHVlPSFpLnZhbHVlfXJldHVybihuLHIscyx1KT0+e3IoIlx4M2MhLS1bLS1ceDNlIikscihqZShlLnVucmVmKHEpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG8scixzKT0+e2lmKCFvKXJldHVybltlLnJlbmRlclNsb3Qobi4kc2xvdHMsInRvZ2dsZSIse29wZW46aS52YWx1ZSx0b2dnbGU6dG9nZ2xlT3Blbix1aTpSLnZhbHVlfSwoKT0+W3QudG9nZ2xlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soY2UsZS5tZXJnZVByb3BzKHtrZXk6MH0sIm9iamVjdCI9PXR5cGVvZiB0LnRvZ2dsZT90LnRvZ2dsZTp7fSx7c2lkZTp0LnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6Ui52YWx1ZS50b2dnbGUoe2NsYXNzOmUudW5yZWYoeCk/LnRvZ2dsZSx0b2dnbGVTaWRlOnQudG9nZ2xlU2lkZX0pfSksbnVsbCwxNixbInNpZGUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO0hlKG4uJHNsb3RzLCJ0b2dnbGUiLHtvcGVuOmkudmFsdWUsdG9nZ2xlOnRvZ2dsZU9wZW4sdWk6Ui52YWx1ZX0sKCk9Pnt0LnRvZ2dsZT9vKGplKGNlLGUubWVyZ2VQcm9wcygib2JqZWN0Ij09dHlwZW9mIHQudG9nZ2xlP3QudG9nZ2xlOnt9LHtzaWRlOnQudG9nZ2xlU2lkZSwiZGF0YS1zbG90IjoidG9nZ2xlIixjbGFzczpSLnZhbHVlLnRvZ2dsZSh7Y2xhc3M6ZS51bnJlZih4KT8udG9nZ2xlLHRvZ2dsZVNpZGU6dC50b2dnbGVTaWRlfSl9KSxudWxsLHIscykpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyxyLHMpfSksXzozfSxzKSkscihqZShlLnVucmVmKE8pLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG8saSxyKT0+e2lmKCFvKXJldHVybltlLnJlbmRlclNsb3Qobi4kc2xvdHMsInJlc2l6ZS1oYW5kbGUiLHtvbk1vdXNlRG93bjplLnVucmVmKHopLG9uVG91Y2hTdGFydDplLnVucmVmKE0pLG9uRG91YmxlQ2xpY2s6ZS51bnJlZihQKSx1aTpSLnZhbHVlfSwoKT0+W3QucmVzaXphYmxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sob2Use2tleTowLCJhcmlhLWNvbnRyb2xzIjpTLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOlIudmFsdWUuaGFuZGxlKHtjbGFzczplLnVucmVmKHgpPy5oYW5kbGV9KSxvbk1vdXNlZG93bjplLnVucmVmKHopLG9uVG91Y2hzdGFydDplLnVucmVmKE0pLG9uRGJsY2xpY2s6ZS51bnJlZihQKX0sbnVsbCw4LFsiY2xhc3MiLCJvbk1vdXNlZG93biIsIm9uVG91Y2hzdGFydCIsIm9uRGJsY2xpY2siXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTtIZShuLiRzbG90cywicmVzaXplLWhhbmRsZSIse29uTW91c2VEb3duOmUudW5yZWYoeiksb25Ub3VjaFN0YXJ0OmUudW5yZWYoTSksb25Eb3VibGVDbGljazplLnVucmVmKFApLHVpOlIudmFsdWV9LCgpPT57dC5yZXNpemFibGU/byhqZShvZSx7ImFyaWEtY29udHJvbHMiOlMsImRhdGEtc2xvdCI6ImhhbmRsZSIsY2xhc3M6Ui52YWx1ZS5oYW5kbGUoe2NsYXNzOmUudW5yZWYoeCk/LmhhbmRsZX0pLG9uTW91c2Vkb3duOmUudW5yZWYoeiksb25Ub3VjaHN0YXJ0OmUudW5yZWYoTSksb25EYmxjbGljazplLnVucmVmKFApfSxudWxsLGkscikpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyxpLHIpfSksXzozfSxzKSksInJpZ2h0Ij09PXQuc2lkZT9yKGplKGUudW5yZWYoRSksbnVsbCxudWxsLHMpKTpyKCJceDNjIS0tLS1ceDNlIikscihgPGRpdiR7VWUoZS5tZXJnZVByb3BzKHtpZDpTLHJlZl9rZXk6ImVsIixyZWY6d30sbi4kYXR0cnMseyJkYXRhLWNvbGxhcHNlZCI6ZS51bnJlZihWKSwiZGF0YS1kcmFnZ2luZyI6ZS51bnJlZihBKSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Ui52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZih4KT8ucm9vdCxsLmNsYXNzXX0pLHN0eWxlOnsiLS13aWR0aCI6YCR7ZS51bnJlZihOKXx8MH0ke2UudW5yZWYoQikudW5pdH1gfX0pKX0+YCksby5oZWFkZXI/KHIoYDxkaXYgZGF0YS1zbG90PSJoZWFkZXIiIGNsYXNzPSIke1dlKFIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKHgpPy5oZWFkZXJ9KSl9Ij5gKSxIZShuLiRzbG90cywiaGVhZGVyIix7Y29sbGFwc2VkOmUudW5yZWYoViksY29sbGFwc2U6ZS51bnJlZihJKX0sbnVsbCxyLHMpLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIikscihgPGRpdiBkYXRhLXNsb3Q9ImJvZHkiIGNsYXNzPSIke1dlKFIudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZih4KT8uYm9keX0pKX0iPmApLEhlKG4uJHNsb3RzLCJkZWZhdWx0Iix7Y29sbGFwc2VkOmUudW5yZWYoViksY29sbGFwc2U6ZS51bnJlZihJKX0sbnVsbCxyLHMpLHIoIjwvZGl2PiIpLG8uZm9vdGVyPyhyKGA8ZGl2IGRhdGEtc2xvdD0iZm9vdGVyIiBjbGFzcz0iJHtXZShSLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZih4KT8uZm9vdGVyfSkpfSI+YCksSGUobi4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDplLnVucmVmKFYpLGNvbGxhcHNlOmUudW5yZWYoSSl9LG51bGwscixzKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoIjwvZGl2PiIpLCJsZWZ0Ij09PXQuc2lkZT9yKGplKGUudW5yZWYoRSksbnVsbCxudWxsLHMpKTpyKCJceDNjIS0tLS1ceDNlIikscihqZShlLnVucmVmKGopLGUubWVyZ2VQcm9wcyh7b3BlbjppLnZhbHVlLCJvblVwZGF0ZTpvcGVuIjplPT5pLnZhbHVlPWUsdGl0bGU6ZS51bnJlZihiKSgiZGFzaGJvYXJkU2lkZWJhci50aXRsZSIpLGRlc2NyaXB0aW9uOmUudW5yZWYoYikoImRhc2hib2FyZFNpZGViYXIuZGVzY3JpcHRpb24iKX0sVS52YWx1ZSx7dWk6e292ZXJsYXk6Ui52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKHgpPy5vdmVybGF5fSksY29udGVudDpSLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUudW5yZWYoeCk/LmNvbnRlbnR9KX19KSx7Y29udGVudDplLndpdGhDdHgoKGwsaSxyLHMpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChuLiRzbG90cywiY29udGVudCIsbCwoKT0+W28uaGVhZGVyfHwiZHJhd2VyIiE9PXQubW9kZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpSLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih4KT8uaGVhZGVyLG1lbnU6ITB9KX0sWyJkcmF3ZXIiIT09dC5tb2RlJiYibGVmdCI9PT10LnRvZ2dsZVNpZGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEYpLHtrZXk6MH0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KG4uJHNsb3RzLCJoZWFkZXIiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSksImRyYXdlciIhPT10Lm1vZGUmJiJyaWdodCI9PT10LnRvZ2dsZVNpZGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEYpLHtrZXk6MX0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOlIudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZih4KT8uYm9keSxtZW51OiEwfSl9LFtlLnJlbmRlclNsb3Qobi4kc2xvdHMsImRlZmF1bHQiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSldLDIpLG8uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOlIudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKHgpPy5mb290ZXIsbWVudTohMH0pfSxbZS5yZW5kZXJTbG90KG4uJHNsb3RzLCJmb290ZXIiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07SGUobi4kc2xvdHMsImNvbnRlbnQiLGwsKCk9PntvLmhlYWRlcnx8ImRyYXdlciIhPT10Lm1vZGU/KGkoYDxkaXYgZGF0YS1zbG90PSJoZWFkZXIiIGNsYXNzPSIke1dlKFIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKHgpPy5oZWFkZXIsbWVudTohMH0pKX0iJHtzfT5gKSwiZHJhd2VyIiE9PXQubW9kZSYmImxlZnQiPT09dC50b2dnbGVTaWRlP2koamUoZS51bnJlZihGKSxudWxsLG51bGwscixzKSk6aSgiXHgzYyEtLS0tXHgzZSIpLEhlKG4uJHNsb3RzLCJoZWFkZXIiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSxudWxsLGkscixzKSwiZHJhd2VyIiE9PXQubW9kZSYmInJpZ2h0Ij09PXQudG9nZ2xlU2lkZT9pKGplKGUudW5yZWYoRiksbnVsbCxudWxsLHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L2Rpdj4iKSk6aSgiXHgzYyEtLS0tXHgzZSIpLGkoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtXZShSLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeCk/LmJvZHksbWVudTohMH0pKX0iJHtzfT5gKSxIZShuLiRzbG90cywiZGVmYXVsdCIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319LG51bGwsaSxyLHMpLGkoIjwvZGl2PiIpLG8uZm9vdGVyPyhpKGA8ZGl2IGRhdGEtc2xvdD0iZm9vdGVyIiBjbGFzcz0iJHtXZShSLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZih4KT8uZm9vdGVyLG1lbnU6ITB9KSl9IiR7c30+YCksSGUobi4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319LG51bGwsaSxyLHMpLGkoIjwvZGl2PiIpKTppKCJceDNjIS0tLS1ceDNlIil9LGkscixzKX0pLF86M30scykpLHIoIlx4M2MhLS1dLS1ceDNlIil9fX0pLEN0PVN0LnNldHVwO1N0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkU2lkZWJhci52dWUiKSxDdD9DdCh0LGwpOnZvaWQgMH07Y29uc3QgJHQ9e3Nsb3RzOntiYXNlOiIiLGxhYmVsOiIiLHRyYWlsaW5nOiJoaWRkZW4gbGc6ZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNSBtcy1hdXRvIn0sdmFyaWFudHM6e2NvbGxhcHNlZDp7dHJ1ZTp7bGFiZWw6ImhpZGRlbiIsdHJhaWxpbmc6ImxnOmhpZGRlbiJ9fX19LF90PU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNlYXJjaEJ1dHRvbiIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxhcHNlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHRvb2x0aXA6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxrYmRzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PlsibWV0YSIsImsiXX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3RpdmVDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3F1YXJlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJsb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdBdXRvOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgbD10LG89ZS51c2VTbG90cygpLFtpLG5dPWQoKSxnZXRQcm94eVNsb3RzPSgpPT5CKG8sWyJ0cmFpbGluZyJdKSx4PWcoeShsLCJpY29uIiwibGFiZWwiLCJ2YXJpYW50IiwiY29sbGFwc2VkIiwidG9vbHRpcCIsImtiZHMiLCJjbGFzcyIsInVpIikpLFM9ZS50b1JlZigoKT0+c2UoImJvb2xlYW4iPT10eXBlb2YgbC50b29sdGlwP3t9OmwudG9vbHRpcCx7ZGVsYXlEdXJhdGlvbjowLGNvbnRlbnQ6e3NpZGU6InJpZ2h0In19KSkse3Q6d309cigpLE49cygpLEk9dSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uIixsKSx7dG9nZ2xlU2VhcmNoOlZ9PWFlKHt0b2dnbGVTZWFyY2g6KCk9Pnt9fSksQT1lLmNvbXB1dGVkKCgpPT5mKHtleHRlbmQ6ZigkdCksLi4uTi51aT8uZGFzaGJvYXJkU2VhcmNoQnV0dG9ufHx7fX0pKHtjb2xsYXBzZWQ6bC5jb2xsYXBzZWR9KSk7cmV0dXJuKG8scixzLHUpPT57cigiXHgzYyEtLVstLVx4M2UiKSxyKGplKGUudW5yZWYoaSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGksbixyLHMpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoYixlLm1lcmdlUHJvcHMoe2ljb246dC5pY29ufHxlLnVucmVmKE4pLnVpLmljb25zLnNlYXJjaCxsYWJlbDp0LmxhYmVsfHxlLnVucmVmKHcpKCJkYXNoYm9hcmRTZWFyY2hCdXR0b24ubGFiZWwiKSx2YXJpYW50OnQudmFyaWFudHx8KHQuY29sbGFwc2VkPyJnaG9zdCI6Im91dGxpbmUiKX0sey4uLmUudW5yZWYoeCksLi4udC5jb2xsYXBzZWQ/e3NxdWFyZTohMCwiYXJpYS1sYWJlbCI6dC5sYWJlbHx8ZS51bnJlZih3KSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uLmxhYmVsIil9Ont9LC4uLm8uJGF0dHJzfSx7Y2xhc3M6QS52YWx1ZS5iYXNlKHtjbGFzczpbZS51bnJlZihJKT8uYmFzZSxsLmNsYXNzXX0pLHVpOmUudW5yZWYoaykoQS52YWx1ZSxlLnVucmVmKEkpKSxvbkNsaWNrOmUudW5yZWYoVil9KSxlLmNyZWF0ZVNsb3RzKHt0cmFpbGluZzplLndpdGhDdHgoKHt1aTpsfSk9PltlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczpBLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEkpPy50cmFpbGluZ30pfSxbZS5yZW5kZXJTbG90KG8uJHNsb3RzLCJ0cmFpbGluZyIse3VpOmx9LCgpPT5bdC5rYmRzPy5sZW5ndGg/KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxlLnJlbmRlckxpc3QodC5rYmRzLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEJlLGUubWVyZ2VQcm9wcyh7a2V5OmwsdmFyaWFudDoic3VidGxlIn0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgdD97dmFsdWU6dH06dCksbnVsbCwxNikpKSwxMjgpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMildKSxfOjJ9LFtlLnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLCh0LGwpPT4oe25hbWU6bCxmbjplLndpdGhDdHgodD0+W2UucmVuZGVyU2xvdChvLiRzbG90cyxsLHQpXSl9KSldKSwxMDQwLFsiaWNvbiIsImxhYmVsIiwidmFyaWFudCIsImNsYXNzIiwidWkiLCJvbkNsaWNrIl0pXTtuKGplKGIsZS5tZXJnZVByb3BzKHtpY29uOnQuaWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5zZWFyY2gsbGFiZWw6dC5sYWJlbHx8ZS51bnJlZih3KSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uLmxhYmVsIiksdmFyaWFudDp0LnZhcmlhbnR8fCh0LmNvbGxhcHNlZD8iZ2hvc3QiOiJvdXRsaW5lIil9LHsuLi5lLnVucmVmKHgpLC4uLnQuY29sbGFwc2VkP3tzcXVhcmU6ITAsImFyaWEtbGFiZWwiOnQubGFiZWx8fGUudW5yZWYodykoImRhc2hib2FyZFNlYXJjaEJ1dHRvbi5sYWJlbCIpfTp7fSwuLi5vLiRhdHRyc30se2NsYXNzOkEudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoSSk/LmJhc2UsbC5jbGFzc119KSx1aTplLnVucmVmKGspKEEudmFsdWUsZS51bnJlZihJKSksb25DbGljazplLnVucmVmKFYpfSksZS5jcmVhdGVTbG90cyh7dHJhaWxpbmc6ZS53aXRoQ3R4KCh7dWk6bH0saSxuLHIpPT57aWYoIWkpcmV0dXJuW2UuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOkEudmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoSSk/LnRyYWlsaW5nfSl9LFtlLnJlbmRlclNsb3Qoby4kc2xvdHMsInRyYWlsaW5nIix7dWk6bH0sKCk9Plt0LmtiZHM/Lmxlbmd0aD8oZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LGUucmVuZGVyTGlzdCh0LmtiZHMsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soQmUsZS5tZXJnZVByb3BzKHtrZXk6bCx2YXJpYW50OiJzdWJ0bGUifSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiB0P3t2YWx1ZTp0fTp0KSxudWxsLDE2KSkpLDEyOCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKV07aShgPHNwYW4gZGF0YS1zbG90PSJ0cmFpbGluZyIgY2xhc3M9IiR7V2UoQS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihJKT8udHJhaWxpbmd9KSl9IiR7cn0+YCksSGUoby4kc2xvdHMsInRyYWlsaW5nIix7dWk6bH0sKCk9Pnt0LmtiZHM/Lmxlbmd0aD8oaSgiXHgzYyEtLVstLVx4M2UiKSxHZSh0LmtiZHMsKHQsbCk9PntpKGplKEJlLGUubWVyZ2VQcm9wcyh7a2V5OmwsdmFyaWFudDoic3VidGxlIn0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgdD97dmFsdWU6dH06dCksbnVsbCxuLHIpKX0pLGkoIlx4M2MhLS1dLS1ceDNlIikpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxuLHIpLGkoIjwvc3Bhbj4iKX0pLF86Mn0sW2UucmVuZGVyTGlzdChnZXRQcm94eVNsb3RzKCksKHQsbCk9Pih7bmFtZTpsLGZuOmUud2l0aEN0eCgodCxpLG4scik9PntpZighaSlyZXR1cm5bZS5yZW5kZXJTbG90KG8uJHNsb3RzLGwsdCldO0hlKG8uJHNsb3RzLGwsdCxudWxsLGksbixyKX0pfSkpXSkscixzKSl9KSxfOjN9LHMpKSx0LmNvbGxhcHNlZCYmdC50b29sdGlwP3IoamUoQ2UsZS5tZXJnZVByb3BzKHt0ZXh0OnQubGFiZWx8fGUudW5yZWYodykoImRhc2hib2FyZFNlYXJjaEJ1dHRvbi5sYWJlbCIpfSxTLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihuKSldO2woamUoZS51bnJlZihuKSxudWxsLG51bGwsbyxpKSl9KSxfOjF9LHMpKTpyKGplKGUudW5yZWYobiksbnVsbCxudWxsLHMpKSxyKCJceDNjIS0tXS0tXHgzZSIpfX19KSxMdD1fdC5zZXR1cDtmdW5jdGlvbiBpc0FycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXkoZSk6IltvYmplY3QgQXJyYXldIj09PWdldFRhZyhlKX1mdW5jdGlvbiB0b1N0cmluZyhlKXtyZXR1cm4gbnVsbD09ZT8iIjpmdW5jdGlvbihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoImJpZ2ludCI9PXR5cGVvZiBlKXJldHVybiBlLnRvU3RyaW5nKCk7Y29uc3QgdD1lKyIiO3JldHVybiIwIj09dCYmMS9lPT0tMS8wPyItMCI6dH0oZSl9ZnVuY3Rpb24gaXNTdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfWZ1bmN0aW9uIGlzTnVtYmVyKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBpc0Jvb2xlYW4oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV8fGZ1bmN0aW9uKGUpe3JldHVybiBpc09iamVjdChlKSYmbnVsbCE9PWV9KGUpJiYiW29iamVjdCBCb29sZWFuXSI9PWdldFRhZyhlKX1mdW5jdGlvbiBpc09iamVjdChlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rpb24gaXNEZWZpbmVkKGUpe3JldHVybiBudWxsIT1lfWZ1bmN0aW9uIGlzQmxhbmsoZSl7cmV0dXJuIWUudHJpbSgpLmxlbmd0aH1mdW5jdGlvbiBnZXRUYWcoZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfV90LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkU2VhcmNoQnV0dG9uLnZ1ZSIpLEx0P0x0KHQsbCk6dm9pZCAwfTtjb25zdCBOdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NsYXNzIEtleVN0b3Jle2NvbnN0cnVjdG9yKGUpe3RoaXMuX2tleXM9W10sdGhpcy5fa2V5TWFwPXt9O2xldCB0PTA7ZS5mb3JFYWNoKGU9Pntjb25zdCBsPWNyZWF0ZUtleShlKTt0aGlzLl9rZXlzLnB1c2gobCksdGhpcy5fa2V5TWFwW2wuaWRdPWwsdCs9bC53ZWlnaHR9KSx0aGlzLl9rZXlzLmZvckVhY2goZT0+e2Uud2VpZ2h0Lz10fSl9Z2V0KGUpe3JldHVybiB0aGlzLl9rZXlNYXBbZV19a2V5cygpe3JldHVybiB0aGlzLl9rZXlzfXRvSlNPTigpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9rZXlzKX19ZnVuY3Rpb24gY3JlYXRlS2V5KGUpe2xldCB0PW51bGwsbD1udWxsLG89bnVsbCxpPTEsbj1udWxsO2lmKGlzU3RyaW5nKGUpfHxpc0FycmF5KGUpKW89ZSx0PWNyZWF0ZUtleVBhdGgoZSksbD1jcmVhdGVLZXlJZChlKTtlbHNle2lmKCFOdC5jYWxsKGUsIm5hbWUiKSl0aHJvdyBuZXcgRXJyb3IoKGU9PmBNaXNzaW5nICR7ZX0gcHJvcGVydHkgaW4ga2V5YCkoIm5hbWUiKSk7Y29uc3Qgcj1lLm5hbWU7aWYobz1yLE50LmNhbGwoZSwid2VpZ2h0IikmJihpPWUud2VpZ2h0LGk8PTApKXRocm93IG5ldyBFcnJvcigoZT0+YFByb3BlcnR5ICd3ZWlnaHQnIGluIGtleSAnJHtlfScgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXJgKShyKSk7dD1jcmVhdGVLZXlQYXRoKHIpLGw9Y3JlYXRlS2V5SWQociksbj1lLmdldEZufXJldHVybntwYXRoOnQsaWQ6bCx3ZWlnaHQ6aSxzcmM6byxnZXRGbjpufX1mdW5jdGlvbiBjcmVhdGVLZXlQYXRoKGUpe3JldHVybiBpc0FycmF5KGUpP2U6ZS5zcGxpdCgiLiIpfWZ1bmN0aW9uIGNyZWF0ZUtleUlkKGUpe3JldHVybiBpc0FycmF5KGUpP2Uuam9pbigiLiIpOmV9Y29uc3QgSXQ9e3VzZUV4dGVuZGVkU2VhcmNoOiExLHVzZVRva2VuU2VhcmNoOiExLGdldEZuOmZ1bmN0aW9uKGUsdCl7Y29uc3QgbD1bXTtsZXQgbz0hMTtjb25zdCBkZWVwR2V0PShlLHQsaSxuKT0+e2lmKGlzRGVmaW5lZChlKSlpZih0W2ldKXtjb25zdCByPWVbdFtpXV07aWYoIWlzRGVmaW5lZChyKSlyZXR1cm47aWYoaT09PXQubGVuZ3RoLTEmJihpc1N0cmluZyhyKXx8aXNOdW1iZXIocil8fGlzQm9vbGVhbihyKXx8ImJpZ2ludCI9PXR5cGVvZiByKSlsLnB1c2godm9pZCAwIT09bj97djp0b1N0cmluZyhyKSxpOm59OnRvU3RyaW5nKHIpKTtlbHNlIGlmKGlzQXJyYXkocikpe289ITA7Zm9yKGxldCBlPTAsbD1yLmxlbmd0aDtlPGw7ZSs9MSlkZWVwR2V0KHJbZV0sdCxpKzEsZSl9ZWxzZSB0Lmxlbmd0aCYmZGVlcEdldChyLHQsaSsxLG4pfWVsc2UgbC5wdXNoKHZvaWQgMCE9PW4/e3Y6ZSxpOm59OmUpfTtyZXR1cm4gZGVlcEdldChlLGlzU3RyaW5nKHQpP3Quc3BsaXQoIi4iKTp0LDApLG8/bDpsWzBdfSxpZ25vcmVMb2NhdGlvbjohMSxpZ25vcmVGaWVsZE5vcm06ITEsZmllbGROb3JtV2VpZ2h0OjF9LFZ0PU9iamVjdC5mcmVlemUoe2lzQ2FzZVNlbnNpdGl2ZTohMSxpZ25vcmVEaWFjcml0aWNzOiExLGluY2x1ZGVTY29yZTohMSxrZXlzOltdLHNob3VsZFNvcnQ6ITAsc29ydEZuOihlLHQpPT5lLnNjb3JlPT09dC5zY29yZT9lLmlkeDx0LmlkeD8tMToxOmUuc2NvcmU8dC5zY29yZT8tMToxLGluY2x1ZGVNYXRjaGVzOiExLGZpbmRBbGxNYXRjaGVzOiExLG1pbk1hdGNoQ2hhckxlbmd0aDoxLGxvY2F0aW9uOjAsdGhyZXNob2xkOi42LGRpc3RhbmNlOjEwMCwuLi5JdH0pLFR0PS9bXiBdKy9nO2NsYXNzIEZ1c2VJbmRleHtjb25zdHJ1Y3Rvcih7Z2V0Rm46ZT1WdC5nZXRGbixmaWVsZE5vcm1XZWlnaHQ6dD1WdC5maWVsZE5vcm1XZWlnaHR9PXt9KXt0aGlzLm5vcm09ZnVuY3Rpb24oZT0xLHQ9Myl7Y29uc3QgbD1uZXcgTWFwLG89TWF0aC5wb3coMTAsdCk7cmV0dXJue2dldCh0KXtjb25zdCBpPXQubWF0Y2goVHQpLmxlbmd0aDtpZihsLmhhcyhpKSlyZXR1cm4gbC5nZXQoaSk7Y29uc3Qgbj0xL01hdGgucG93KGksLjUqZSkscj1wYXJzZUZsb2F0KE1hdGgucm91bmQobipvKS9vKTtyZXR1cm4gbC5zZXQoaSxyKSxyfSxjbGVhcigpe2wuY2xlYXIoKX19fSh0LDMpLHRoaXMuZ2V0Rm49ZSx0aGlzLmlzQ3JlYXRlZD0hMSx0aGlzLmRvY3M9W10sdGhpcy5rZXlzPVtdLHRoaXMuX2tleXNNYXA9e30sdGhpcy5zZXRJbmRleFJlY29yZHMoKX1zZXRTb3VyY2VzKGU9W10pe3RoaXMuZG9jcz1lfXNldEluZGV4UmVjb3JkcyhlPVtdKXt0aGlzLnJlY29yZHM9ZX1zZXRLZXlzKGU9W10pe3RoaXMua2V5cz1lLHRoaXMuX2tleXNNYXA9e30sZS5mb3JFYWNoKChlLHQpPT57dGhpcy5fa2V5c01hcFtlLmlkXT10fSl9Y3JlYXRlKCl7IXRoaXMuaXNDcmVhdGVkJiZ0aGlzLmRvY3MubGVuZ3RoJiYodGhpcy5pc0NyZWF0ZWQ9ITAsaXNTdHJpbmcodGhpcy5kb2NzWzBdKT90aGlzLmRvY3MuZm9yRWFjaCgoZSx0KT0+e3RoaXMuX2FkZFN0cmluZyhlLHQpfSk6dGhpcy5kb2NzLmZvckVhY2goKGUsdCk9Pnt0aGlzLl9hZGRPYmplY3QoZSx0KX0pLHRoaXMubm9ybS5jbGVhcigpKX1hZGQoZSl7Y29uc3QgdD10aGlzLnNpemUoKTtpc1N0cmluZyhlKT90aGlzLl9hZGRTdHJpbmcoZSx0KTp0aGlzLl9hZGRPYmplY3QoZSx0KX1yZW1vdmVBdChlKXt0aGlzLnJlY29yZHMuc3BsaWNlKGUsMSk7Zm9yKGxldCB0PWUsbD10aGlzLnNpemUoKTt0PGw7dCs9MSl0aGlzLnJlY29yZHNbdF0uaS09MX1yZW1vdmVBbGwoZSl7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LT0xKXRoaXMucmVjb3Jkcy5zcGxpY2UoZVt0XSwxKTtmb3IobGV0IGU9MCx0PXRoaXMucmVjb3Jkcy5sZW5ndGg7ZTx0O2UrPTEpdGhpcy5yZWNvcmRzW2VdLmk9ZX1nZXRWYWx1ZUZvckl0ZW1BdEtleUlkKGUsdCl7cmV0dXJuIGVbdGhpcy5fa2V5c01hcFt0XV19c2l6ZSgpe3JldHVybiB0aGlzLnJlY29yZHMubGVuZ3RofV9hZGRTdHJpbmcoZSx0KXtpZighaXNEZWZpbmVkKGUpfHxpc0JsYW5rKGUpKXJldHVybjtjb25zdCBsPXt2OmUsaTp0LG46dGhpcy5ub3JtLmdldChlKX07dGhpcy5yZWNvcmRzLnB1c2gobCl9X2FkZE9iamVjdChlLHQpe2NvbnN0IGw9e2k6dCwkOnt9fTt0aGlzLmtleXMuZm9yRWFjaCgodCxvKT0+e2NvbnN0IGk9dC5nZXRGbj90LmdldEZuKGUpOnRoaXMuZ2V0Rm4oZSx0LnBhdGgpO2lmKGlzRGVmaW5lZChpKSlpZihpc0FycmF5KGkpKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGw9aS5sZW5ndGg7dDxsO3QrPTEpe2NvbnN0IGw9aVt0XTtpZihpc0RlZmluZWQobCkpaWYoaXNTdHJpbmcobCkpe2lmKCFpc0JsYW5rKGwpKXtjb25zdCBvPXt2OmwsaTp0LG46dGhpcy5ub3JtLmdldChsKX07ZS5wdXNoKG8pfX1lbHNlIGlmKGlzRGVmaW5lZChsLnYpKXtjb25zdCB0PWlzU3RyaW5nKGwudik/bC52OnRvU3RyaW5nKGwudik7aWYoIWlzQmxhbmsodCkpe2NvbnN0IG89e3Y6dCxpOmwuaSxuOnRoaXMubm9ybS5nZXQodCl9O2UucHVzaChvKX19fWwuJFtvXT1lfWVsc2UgaWYoaXNTdHJpbmcoaSkmJiFpc0JsYW5rKGkpKXtjb25zdCBlPXt2Omksbjp0aGlzLm5vcm0uZ2V0KGkpfTtsLiRbb109ZX19KSx0aGlzLnJlY29yZHMucHVzaChsKX10b0pTT04oKXtyZXR1cm57a2V5czp0aGlzLmtleXMubWFwKCh7Z2V0Rm46ZSwuLi50fSk9PnQpLHJlY29yZHM6dGhpcy5yZWNvcmRzfX19ZnVuY3Rpb24gY3JlYXRlSW5kZXgoZSx0LHtnZXRGbjpsPVZ0LmdldEZuLGZpZWxkTm9ybVdlaWdodDpvPVZ0LmZpZWxkTm9ybVdlaWdodH09e30pe2NvbnN0IGk9bmV3IEZ1c2VJbmRleCh7Z2V0Rm46bCxmaWVsZE5vcm1XZWlnaHQ6b30pO3JldHVybiBpLnNldEtleXMoZS5tYXAoY3JlYXRlS2V5KSksaS5zZXRTb3VyY2VzKHQpLGkuY3JlYXRlKCksaX1jb25zdCBEdD0zMjtmdW5jdGlvbiBzZWFyY2goZSx0LGwse2xvY2F0aW9uOm89VnQubG9jYXRpb24sZGlzdGFuY2U6aT1WdC5kaXN0YW5jZSx0aHJlc2hvbGQ6bj1WdC50aHJlc2hvbGQsZmluZEFsbE1hdGNoZXM6cj1WdC5maW5kQWxsTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6cz1WdC5taW5NYXRjaENoYXJMZW5ndGgsaW5jbHVkZU1hdGNoZXM6dT1WdC5pbmNsdWRlTWF0Y2hlcyxpZ25vcmVMb2NhdGlvbjpkPVZ0Lmlnbm9yZUxvY2F0aW9ufT17fSl7aWYodC5sZW5ndGg+RHQpdGhyb3cgbmV3IEVycm9yKGBQYXR0ZXJuIGxlbmd0aCBleGNlZWRzIG1heCBvZiAke0R0fS5gKTtjb25zdCBmPXQubGVuZ3RoLGc9ZS5sZW5ndGgseT1NYXRoLm1heCgwLE1hdGgubWluKG8sZykpO2xldCBiPW4saz15O2NvbnN0IGNhbGNTY29yZT0oZSx0KT0+e2NvbnN0IGw9ZS9mO2lmKGQpcmV0dXJuIGw7Y29uc3Qgbz1NYXRoLmFicyh5LXQpO3JldHVybiBpP2wrby9pOm8/MTpsfSx4PXM+MXx8dSxCPXg/QXJyYXkoZyk6W107bGV0IFM7Zm9yKDsoUz1lLmluZGV4T2YodCxrKSk+LTE7KXtjb25zdCBlPWNhbGNTY29yZSgwLFMpO2lmKGI9TWF0aC5taW4oZSxiKSxrPVMrZix4KXtsZXQgZT0wO2Zvcig7ZTxmOylCW1MrZV09MSxlKz0xfX1rPS0xO2xldCB3PVtdLE49MSxJPWYrZztjb25zdCBWPTE8PGYtMTtmb3IobGV0IHQ9MDt0PGY7dCs9MSl7bGV0IG89MCxpPUk7Zm9yKDtvPGk7KXtjYWxjU2NvcmUodCx5K2kpPD1iP289aTpJPWksaT1NYXRoLmZsb29yKChJLW8pLzIrbyl9ST1pO2xldCBuPU1hdGgubWF4KDEseS1pKzEpO2NvbnN0IHM9cj9nOk1hdGgubWluKHkraSxnKStmLHU9QXJyYXkocysyKTt1W3MrMV09KDE8PHQpLTE7Zm9yKGxldCBvPXM7bz49bjtvLT0xKXtjb25zdCBpPW8tMSxyPWxbZVtpXV07aWYoeCYmKEJbaV09KyEhciksdVtvXT0odVtvKzFdPDwxfDEpJnIsdCYmKHVbb118PSh3W28rMV18d1tvXSk8PDF8MXx3W28rMV0pLHVbb10mViYmKE49Y2FsY1Njb3JlKHQsaSksTjw9Yikpe2lmKGI9TixrPWksazw9eSlicmVhaztuPU1hdGgubWF4KDEsMip5LWspfX1pZihjYWxjU2NvcmUodCsxLHkpPmIpYnJlYWs7dz11fWNvbnN0IEE9e2lzTWF0Y2g6az49MCxzY29yZTpNYXRoLm1heCguMDAxLE4pfTtpZih4KXtjb25zdCBlPWZ1bmN0aW9uKGU9W10sdD1WdC5taW5NYXRjaENoYXJMZW5ndGgpe2NvbnN0IGw9W107bGV0IG89LTEsaT0tMSxuPTA7Zm9yKGxldCByPWUubGVuZ3RoO248cjtuKz0xKXtjb25zdCByPWVbbl07ciYmLTE9PT1vP289bjpyfHwtMT09PW98fChpPW4tMSxpLW8rMT49dCYmbC5wdXNoKFtvLGldKSxvPS0xKX1yZXR1cm4gZVtuLTFdJiZuLW8+PXQmJmwucHVzaChbbyxuLTFdKSxsfShCLHMpO2UubGVuZ3RoP3UmJihBLmluZGljZXM9ZSk6QS5pc01hdGNoPSExfXJldHVybiBBfWZ1bmN0aW9uIGNyZWF0ZVBhdHRlcm5BbHBoYWJldChlKXtjb25zdCB0PXt9O2ZvcihsZXQgbD0wLG89ZS5sZW5ndGg7bDxvO2wrPTEpe2NvbnN0IGk9ZS5jaGFyQXQobCk7dFtpXT0odFtpXXx8MCl8MTw8by1sLTF9cmV0dXJuIHR9ZnVuY3Rpb24gbWVyZ2VJbmRpY2VzKGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2Uuc29ydCgoZSx0KT0+ZVswXS10WzBdfHxlWzFdLXRbMV0pO2NvbnN0IHQ9W2VbMF1dO2ZvcihsZXQgbD0xLG89ZS5sZW5ndGg7bDxvO2wrPTEpe2NvbnN0IG89dFt0Lmxlbmd0aC0xXSxpPWVbbF07aVswXTw9b1sxXSsxP29bMV09TWF0aC5tYXgob1sxXSxpWzFdKTp0LnB1c2goaSl9cmV0dXJuIHR9Y29uc3QgQXQ9eyLFgiI6ImwiLCLFgSI6IkwiLCLEkSI6ImQiLCLEkCI6IkQiLCLDuCI6Im8iLCLDmCI6Ik8iLCLEpyI6ImgiLCLEpiI6IkgiLCLFpyI6InQiLCLFpiI6IlQiLCLEsSI6ImkiLCLDnyI6InNzIn0senQ9bmV3IFJlZ0V4cCgiWyIrT2JqZWN0LmtleXMoQXQpLmpvaW4oIiIpKyJdIiwiZyIpLE10PVN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplP2U9PmUubm9ybWFsaXplKCJORkQiKS5yZXBsYWNlKC9bXHUwMzAwLVx1MDM2Rlx1MDQ4My1cdTA0ODlcdTA1OTEtXHUwNUJEXHUwNUJGXHUwNUMxXHUwNUMyXHUwNUM0XHUwNUM1XHUwNUM3XHUwNjEwLVx1MDYxQVx1MDY0Qi1cdTA2NUZcdTA2NzBcdTA2RDYtXHUwNkRDXHUwNkRGLVx1MDZFNFx1MDZFN1x1MDZFOFx1MDZFQS1cdTA2RURcdTA3MTFcdTA3MzAtXHUwNzRBXHUwN0E2LVx1MDdCMFx1MDdFQi1cdTA3RjNcdTA3RkRcdTA4MTYtXHUwODE5XHUwODFCLVx1MDgyM1x1MDgyNS1cdTA4MjdcdTA4MjktXHUwODJEXHUwODU5LVx1MDg1Qlx1MDhEMy1cdTA4RTFcdTA4RTMtXHUwOTAzXHUwOTNBLVx1MDkzQ1x1MDkzRS1cdTA5NEZcdTA5NTEtXHUwOTU3XHUwOTYyXHUwOTYzXHUwOTgxLVx1MDk4M1x1MDlCQ1x1MDlCRS1cdTA5QzRcdTA5QzdcdTA5QzhcdTA5Q0ItXHUwOUNEXHUwOUQ3XHUwOUUyXHUwOUUzXHUwOUZFXHUwQTAxLVx1MEEwM1x1MEEzQ1x1MEEzRS1cdTBBNDJcdTBBNDdcdTBBNDhcdTBBNEItXHUwQTREXHUwQTUxXHUwQTcwXHUwQTcxXHUwQTc1XHUwQTgxLVx1MEE4M1x1MEFCQ1x1MEFCRS1cdTBBQzVcdTBBQzctXHUwQUM5XHUwQUNCLVx1MEFDRFx1MEFFMlx1MEFFM1x1MEFGQS1cdTBBRkZcdTBCMDEtXHUwQjAzXHUwQjNDXHUwQjNFLVx1MEI0NFx1MEI0N1x1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTZcdTBCNTdcdTBCNjJcdTBCNjNcdTBCODJcdTBCQkUtXHUwQkMyXHUwQkM2LVx1MEJDOFx1MEJDQS1cdTBCQ0RcdTBCRDdcdTBDMDAtXHUwQzA0XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1XHUwQzU2XHUwQzYyXHUwQzYzXHUwQzgxLVx1MEM4M1x1MENCQ1x1MENCRS1cdTBDQzRcdTBDQzYtXHUwQ0M4XHUwQ0NBLVx1MENDRFx1MENENVx1MENENlx1MENFMlx1MENFM1x1MEQwMC1cdTBEMDNcdTBEM0JcdTBEM0NcdTBEM0UtXHUwRDQ0XHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENERcdTBENTdcdTBENjJcdTBENjNcdTBEODJcdTBEODNcdTBEQ0FcdTBEQ0YtXHUwREQ0XHUwREQ2XHUwREQ4LVx1MERERlx1MERGMlx1MERGM1x1MEUzMVx1MEUzNC1cdTBFM0FcdTBFNDctXHUwRTRFXHUwRUIxXHUwRUI0LVx1MEVCOVx1MEVCQlx1MEVCQ1x1MEVDOC1cdTBFQ0RcdTBGMThcdTBGMTlcdTBGMzVcdTBGMzdcdTBGMzlcdTBGM0VcdTBGM0ZcdTBGNzEtXHUwRjg0XHUwRjg2XHUwRjg3XHUwRjhELVx1MEY5N1x1MEY5OS1cdTBGQkNcdTBGQzZcdTEwMkItXHUxMDNFXHUxMDU2LVx1MTA1OVx1MTA1RS1cdTEwNjBcdTEwNjItXHUxMDY0XHUxMDY3LVx1MTA2RFx1MTA3MS1cdTEwNzRcdTEwODItXHUxMDhEXHUxMDhGXHUxMDlBLVx1MTA5RFx1MTM1RC1cdTEzNUZcdTE3MTItXHUxNzE0XHUxNzMyLVx1MTczNFx1MTc1Mlx1MTc1M1x1MTc3Mlx1MTc3M1x1MTdCNC1cdTE3RDNcdTE3RERcdTE4MEItXHUxODBEXHUxODg1XHUxODg2XHUxOEE5XHUxOTIwLVx1MTkyQlx1MTkzMC1cdTE5M0JcdTFBMTctXHUxQTFCXHUxQTU1LVx1MUE1RVx1MUE2MC1cdTFBN0NcdTFBN0ZcdTFBQjAtXHUxQUJFXHUxQjAwLVx1MUIwNFx1MUIzNC1cdTFCNDRcdTFCNkItXHUxQjczXHUxQjgwLVx1MUI4Mlx1MUJBMS1cdTFCQURcdTFCRTYtXHUxQkYzXHUxQzI0LVx1MUMzN1x1MUNEMC1cdTFDRDJcdTFDRDQtXHUxQ0U4XHUxQ0VEXHUxQ0YyLVx1MUNGNFx1MUNGNy1cdTFDRjlcdTFEQzAtXHUxREY5XHUxREZCLVx1MURGRlx1MjBEMC1cdTIwRjBcdTJDRUYtXHUyQ0YxXHUyRDdGXHUyREUwLVx1MkRGRlx1MzAyQS1cdTMwMkZcdTMwOTlcdTMwOUFcdUE2NkYtXHVBNjcyXHVBNjc0LVx1QTY3RFx1QTY5RVx1QTY5Rlx1QTZGMFx1QTZGMVx1QTgwMlx1QTgwNlx1QTgwQlx1QTgyMy1cdUE4MjdcdUE4ODBcdUE4ODFcdUE4QjQtXHVBOEM1XHVBOEUwLVx1QThGMVx1QThGRlx1QTkyNi1cdUE5MkRcdUE5NDctXHVBOTUzXHVBOTgwLVx1QTk4M1x1QTlCMy1cdUE5QzBcdUE5RTVcdUFBMjktXHVBQTM2XHVBQTQzXHVBQTRDXHVBQTREXHVBQTdCLVx1QUE3RFx1QUFCMFx1QUFCMi1cdUFBQjRcdUFBQjdcdUFBQjhcdUFBQkVcdUFBQkZcdUFBQzFcdUFBRUItXHVBQUVGXHVBQUY1XHVBQUY2XHVBQkUzLVx1QUJFQVx1QUJFQ1x1QUJFRFx1RkIxRVx1RkUwMC1cdUZFMEZcdUZFMjAtXHVGRTJGXS9nLCIiKS5yZXBsYWNlKHp0LGU9PkF0W2VdKTplPT5lO2NsYXNzIEJpdGFwU2VhcmNoe2NvbnN0cnVjdG9yKGUse2xvY2F0aW9uOnQ9VnQubG9jYXRpb24sdGhyZXNob2xkOmw9VnQudGhyZXNob2xkLGRpc3RhbmNlOm89VnQuZGlzdGFuY2UsaW5jbHVkZU1hdGNoZXM6aT1WdC5pbmNsdWRlTWF0Y2hlcyxmaW5kQWxsTWF0Y2hlczpuPVZ0LmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpyPVZ0Lm1pbk1hdGNoQ2hhckxlbmd0aCxpc0Nhc2VTZW5zaXRpdmU6cz1WdC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczp1PVZ0Lmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246ZD1WdC5pZ25vcmVMb2NhdGlvbn09e30pe2lmKHRoaXMub3B0aW9ucz17bG9jYXRpb246dCx0aHJlc2hvbGQ6bCxkaXN0YW5jZTpvLGluY2x1ZGVNYXRjaGVzOmksZmluZEFsbE1hdGNoZXM6bixtaW5NYXRjaENoYXJMZW5ndGg6cixpc0Nhc2VTZW5zaXRpdmU6cyxpZ25vcmVEaWFjcml0aWNzOnUsaWdub3JlTG9jYXRpb246ZH0sZT1zP2U6ZS50b0xvd2VyQ2FzZSgpLGU9dT9NdChlKTplLHRoaXMucGF0dGVybj1lLHRoaXMuY2h1bmtzPVtdLCF0aGlzLnBhdHRlcm4ubGVuZ3RoKXJldHVybjtjb25zdCBhZGRDaHVuaz0oZSx0KT0+e3RoaXMuY2h1bmtzLnB1c2goe3BhdHRlcm46ZSxhbHBoYWJldDpjcmVhdGVQYXR0ZXJuQWxwaGFiZXQoZSksc3RhcnRJbmRleDp0fSl9LGY9dGhpcy5wYXR0ZXJuLmxlbmd0aDtpZihmPkR0KXtsZXQgZT0wO2NvbnN0IHQ9ZiVEdCxsPWYtdDtmb3IoO2U8bDspYWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihlLER0KSxlKSxlKz1EdDtpZih0KXtjb25zdCBlPWYtRHQ7YWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihlKSxlKX19ZWxzZSBhZGRDaHVuayh0aGlzLnBhdHRlcm4sMCl9c2VhcmNoSW4oZSl7Y29uc3R7aXNDYXNlU2Vuc2l0aXZlOnQsaWdub3JlRGlhY3JpdGljczpsLGluY2x1ZGVNYXRjaGVzOm99PXRoaXMub3B0aW9ucztpZihlPXQ/ZTplLnRvTG93ZXJDYXNlKCksZT1sP010KGUpOmUsdGhpcy5wYXR0ZXJuPT09ZSl7Y29uc3QgdD17aXNNYXRjaDohMCxzY29yZTowfTtyZXR1cm4gbyYmKHQuaW5kaWNlcz1bWzAsZS5sZW5ndGgtMV1dKSx0fWNvbnN0e2xvY2F0aW9uOmksZGlzdGFuY2U6bix0aHJlc2hvbGQ6cixmaW5kQWxsTWF0Y2hlczpzLG1pbk1hdGNoQ2hhckxlbmd0aDp1LGlnbm9yZUxvY2F0aW9uOmR9PXRoaXMub3B0aW9ucyxmPVtdO2xldCBnPTAseT0hMTt0aGlzLmNodW5rcy5mb3JFYWNoKCh7cGF0dGVybjp0LGFscGhhYmV0Omwsc3RhcnRJbmRleDpifSk9Pntjb25zdHtpc01hdGNoOmssc2NvcmU6eCxpbmRpY2VzOkJ9PXNlYXJjaChlLHQsbCx7bG9jYXRpb246aStiLGRpc3RhbmNlOm4sdGhyZXNob2xkOnIsZmluZEFsbE1hdGNoZXM6cyxtaW5NYXRjaENoYXJMZW5ndGg6dSxpbmNsdWRlTWF0Y2hlczpvLGlnbm9yZUxvY2F0aW9uOmR9KTtrJiYoeT0hMCksZys9eCxrJiZCJiZmLnB1c2goLi4uQil9KTtjb25zdCBiPXtpc01hdGNoOnksc2NvcmU6eT9nL3RoaXMuY2h1bmtzLmxlbmd0aDoxfTtyZXR1cm4geSYmbyYmKGIuaW5kaWNlcz1tZXJnZUluZGljZXMoZikpLGJ9fWNsYXNzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlKXt0aGlzLnBhdHRlcm49ZX1zdGF0aWMgaXNNdWx0aU1hdGNoKGUpe3JldHVybiBnZXRNYXRjaChlLHRoaXMubXVsdGlSZWdleCl9c3RhdGljIGlzU2luZ2xlTWF0Y2goZSl7cmV0dXJuIGdldE1hdGNoKGUsdGhpcy5zaW5nbGVSZWdleCl9c2VhcmNoKGUpe3JldHVybntpc01hdGNoOiExLHNjb3JlOjF9fX1mdW5jdGlvbiBnZXRNYXRjaChlLHQpe2NvbnN0IGw9ZS5tYXRjaCh0KTtyZXR1cm4gbD9sWzFdOm51bGx9Y2xhc3MgRnV6enlNYXRjaCBleHRlbmRzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlLHtsb2NhdGlvbjp0PVZ0LmxvY2F0aW9uLHRocmVzaG9sZDpsPVZ0LnRocmVzaG9sZCxkaXN0YW5jZTpvPVZ0LmRpc3RhbmNlLGluY2x1ZGVNYXRjaGVzOmk9VnQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6bj1WdC5maW5kQWxsTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6cj1WdC5taW5NYXRjaENoYXJMZW5ndGgsaXNDYXNlU2Vuc2l0aXZlOnM9VnQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dT1WdC5pZ25vcmVEaWFjcml0aWNzLGlnbm9yZUxvY2F0aW9uOmQ9VnQuaWdub3JlTG9jYXRpb259PXt9KXtzdXBlcihlKSx0aGlzLl9iaXRhcFNlYXJjaD1uZXcgQml0YXBTZWFyY2goZSx7bG9jYXRpb246dCx0aHJlc2hvbGQ6bCxkaXN0YW5jZTpvLGluY2x1ZGVNYXRjaGVzOmksZmluZEFsbE1hdGNoZXM6bixtaW5NYXRjaENoYXJMZW5ndGg6cixpc0Nhc2VTZW5zaXRpdmU6cyxpZ25vcmVEaWFjcml0aWNzOnUsaWdub3JlTG9jYXRpb246ZH0pfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJmdXp6eSJ9c3RhdGljIGdldCBtdWx0aVJlZ2V4KCl7cmV0dXJuL14iKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14oLiopJC99c2VhcmNoKGUpe3JldHVybiB0aGlzLl9iaXRhcFNlYXJjaC5zZWFyY2hJbihlKX19Y2xhc3MgSW5jbHVkZU1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJpbmNsdWRlIn1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiciKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14nKC4qKSQvfXNlYXJjaChlKXtsZXQgdCxsPTA7Y29uc3Qgbz1bXSxpPXRoaXMucGF0dGVybi5sZW5ndGg7Zm9yKDsodD1lLmluZGV4T2YodGhpcy5wYXR0ZXJuLGwpKT4tMTspbD10K2ksby5wdXNoKFt0LGwtMV0pO2NvbnN0IG49ISFvLmxlbmd0aDtyZXR1cm57aXNNYXRjaDpuLHNjb3JlOm4/MDoxLGluZGljZXM6b319fWNvbnN0IFB0PVtjbGFzcyBleHRlbmRzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9ePSIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXj0oLiopJC99c2VhcmNoKGUpe2NvbnN0IHQ9ZT09PXRoaXMucGF0dGVybjtyZXR1cm57aXNNYXRjaDp0LHNjb3JlOnQ/MDoxLGluZGljZXM6WzAsdGhpcy5wYXR0ZXJuLmxlbmd0aC0xXX19fSxJbmNsdWRlTWF0Y2gsY2xhc3MgZXh0ZW5kcyBCYXNlTWF0Y2h7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuInByZWZpeC1leGFjdCJ9c3RhdGljIGdldCBtdWx0aVJlZ2V4KCl7cmV0dXJuL15cXiIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXlxeKC4qKSQvfXNlYXJjaChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOnQsc2NvcmU6dD8wOjEsaW5kaWNlczpbMCx0aGlzLnBhdHRlcm4ubGVuZ3RoLTFdfX19LGNsYXNzIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJpbnZlcnNlLXByZWZpeC1leGFjdCJ9c3RhdGljIGdldCBtdWx0aVJlZ2V4KCl7cmV0dXJuL14hXF4iKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14hXF4oLiopJC99c2VhcmNoKGUpe2NvbnN0IHQ9IWUuc3RhcnRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOnQsc2NvcmU6dD8wOjEsaW5kaWNlczpbMCxlLmxlbmd0aC0xXX19fSxjbGFzcyBleHRlbmRzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iaW52ZXJzZS1zdWZmaXgtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eISIoLiopIlwkJC99c3RhdGljIGdldCBzaW5nbGVSZWdleCgpe3JldHVybi9eISguKilcJCQvfXNlYXJjaChlKXtjb25zdCB0PSFlLmVuZHNXaXRoKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6dCxzY29yZTp0PzA6MSxpbmRpY2VzOlswLGUubGVuZ3RoLTFdfX19LGNsYXNzIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJzdWZmaXgtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eIiguKikiXCQkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14oLiopXCQkL31zZWFyY2goZSl7Y29uc3QgdD1lLmVuZHNXaXRoKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6dCxzY29yZTp0PzA6MSxpbmRpY2VzOltlLmxlbmd0aC10aGlzLnBhdHRlcm4ubGVuZ3RoLGUubGVuZ3RoLTFdfX19LGNsYXNzIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJpbnZlcnNlLWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiEiKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14hKC4qKSQvfXNlYXJjaChlKXtjb25zdCB0PS0xPT09ZS5pbmRleE9mKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6dCxzY29yZTp0PzA6MSxpbmRpY2VzOlswLGUubGVuZ3RoLTFdfX19LEZ1enp5TWF0Y2hdLHF0PVB0Lmxlbmd0aDtjb25zdCBGdD1uZXcgU2V0KFtGdXp6eU1hdGNoLnR5cGUsSW5jbHVkZU1hdGNoLnR5cGVdKTtjbGFzcyBFeHRlbmRlZFNlYXJjaHtjb25zdHJ1Y3RvcihlLHtpc0Nhc2VTZW5zaXRpdmU6dD1WdC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczpsPVZ0Lmlnbm9yZURpYWNyaXRpY3MsaW5jbHVkZU1hdGNoZXM6bz1WdC5pbmNsdWRlTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6aT1WdC5taW5NYXRjaENoYXJMZW5ndGgsaWdub3JlTG9jYXRpb246bj1WdC5pZ25vcmVMb2NhdGlvbixmaW5kQWxsTWF0Y2hlczpyPVZ0LmZpbmRBbGxNYXRjaGVzLGxvY2F0aW9uOnM9VnQubG9jYXRpb24sdGhyZXNob2xkOnU9VnQudGhyZXNob2xkLGRpc3RhbmNlOmQ9VnQuZGlzdGFuY2V9PXt9KXt0aGlzLnF1ZXJ5PW51bGwsdGhpcy5vcHRpb25zPXtpc0Nhc2VTZW5zaXRpdmU6dCxpZ25vcmVEaWFjcml0aWNzOmwsaW5jbHVkZU1hdGNoZXM6byxtaW5NYXRjaENoYXJMZW5ndGg6aSxmaW5kQWxsTWF0Y2hlczpyLGlnbm9yZUxvY2F0aW9uOm4sbG9jYXRpb246cyx0aHJlc2hvbGQ6dSxkaXN0YW5jZTpkfSxlPXQ/ZTplLnRvTG93ZXJDYXNlKCksZT1sP010KGUpOmUsdGhpcy5wYXR0ZXJuPWUsdGhpcy5xdWVyeT1mdW5jdGlvbihlLHQ9e30pe3JldHVybiBlLnJlcGxhY2UoL1xcXHwvZywiXDAiKS5zcGxpdCgifCIpLm1hcChlPT57Y29uc3QgbD1mdW5jdGlvbihlKXtjb25zdCB0PVtdLGw9ZS5sZW5ndGg7bGV0IG89MDtmb3IoO288bDspe2Zvcig7bzxsJiYiICI9PT1lW29dOylvKys7aWYobz49bClicmVhaztsZXQgaT1vO2Zvcig7aTxsJiYiICIhPT1lW2ldJiYnIichPT1lW2ldOylpKys7aWYoaTxsJiYnIic9PT1lW2ldKXtmb3IoaSsrO2k8bDspe2lmKCciJz09PWVbaV0pe2NvbnN0IHQ9aSsxO2lmKHQ+PWx8fCIgIj09PWVbdF0pe2krKzticmVha31pZigiJCI9PT1lW3RdJiYodCsxPj1sfHwiICI9PT1lW3QrMV0pKXtpKz0yO2JyZWFrfX1pKyt9dC5wdXNoKGUuc3Vic3RyaW5nKG8saSkpLG89aX1lbHNle2Zvcig7aTxsJiYiICIhPT1lW2ldOylpKys7dC5wdXNoKGUuc3Vic3RyaW5nKG8saSkpLG89aX19cmV0dXJuIHR9KGUucmVwbGFjZSgvXHUwMDAwL2csInwiKS50cmltKCkpLmZpbHRlcihlPT5lJiYhIWUudHJpbSgpKSxvPVtdO2ZvcihsZXQgZT0wLGk9bC5sZW5ndGg7ZTxpO2UrPTEpe2NvbnN0IGk9bFtlXTtsZXQgbj0hMSxyPS0xO2Zvcig7IW4mJisrcjxxdDspe2NvbnN0IGU9UHRbcl0sbD1lLmlzTXVsdGlNYXRjaChpKTtsJiYoby5wdXNoKG5ldyBlKGwsdCkpLG49ITApfWlmKCFuKWZvcihyPS0xOysrcjxxdDspe2NvbnN0IGU9UHRbcl0sbD1lLmlzU2luZ2xlTWF0Y2goaSk7aWYobCl7by5wdXNoKG5ldyBlKGwsdCkpO2JyZWFrfX19cmV0dXJuIG99KX0odGhpcy5wYXR0ZXJuLHRoaXMub3B0aW9ucyl9c3RhdGljIGNvbmRpdGlvbihlLHQpe3JldHVybiB0LnVzZUV4dGVuZGVkU2VhcmNofXNlYXJjaEluKGUpe2NvbnN0IHQ9dGhpcy5xdWVyeTtpZighdClyZXR1cm57aXNNYXRjaDohMSxzY29yZToxfTtjb25zdHtpbmNsdWRlTWF0Y2hlczpsLGlzQ2FzZVNlbnNpdGl2ZTpvLGlnbm9yZURpYWNyaXRpY3M6aX09dGhpcy5vcHRpb25zO2U9bz9lOmUudG9Mb3dlckNhc2UoKSxlPWk/TXQoZSk6ZTtsZXQgbj0wO2NvbnN0IHI9W107bGV0IHM9MCx1PSExO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rPTEpe2NvbnN0IGk9dFtvXTtyLmxlbmd0aD0wLG49MCx1PSExO2ZvcihsZXQgdD0wLG89aS5sZW5ndGg7dDxvO3QrPTEpe2NvbnN0IG89aVt0XSx7aXNNYXRjaDpkLGluZGljZXM6ZixzY29yZTpnfT1vLnNlYXJjaChlKTtpZighZCl7cz0wLG49MCxyLmxlbmd0aD0wLHU9ITE7YnJlYWt9e24rPTEscys9Zztjb25zdCBlPW8uY29uc3RydWN0b3IudHlwZTtlLnN0YXJ0c1dpdGgoImludmVyc2UiKSYmKHU9ITApLGwmJihGdC5oYXMoZSk/ci5wdXNoKC4uLmYpOnIucHVzaChmKSl9fWlmKG4pe2NvbnN0IGU9e2lzTWF0Y2g6ITAsc2NvcmU6cy9ufTtyZXR1cm4gdSYmKGUuaGFzSW52ZXJzZT0hMCksbCYmKGUuaW5kaWNlcz1tZXJnZUluZGljZXMocikpLGV9fXJldHVybntpc01hdGNoOiExLHNjb3JlOjF9fX1jb25zdCBLdD1bXTtmdW5jdGlvbiByZWdpc3RlciguLi5lKXtLdC5wdXNoKC4uLmUpfWZ1bmN0aW9uIGNyZWF0ZVNlYXJjaGVyKGUsdCl7Zm9yKGxldCBsPTAsbz1LdC5sZW5ndGg7bDxvO2wrPTEpe2NvbnN0IG89S3RbbF07aWYoby5jb25kaXRpb24oZSx0KSlyZXR1cm4gbmV3IG8oZSx0KX1yZXR1cm4gbmV3IEJpdGFwU2VhcmNoKGUsdCl9Y29uc3QgT3Q9IiRhbmQiLEV0PSIkb3IiLFJ0PSIkcGF0aCIsanQ9IiR2YWwiLGlzRXhwcmVzc2lvbj1lPT4hKCFlW090XSYmIWVbRXRdKSxjb252ZXJ0VG9FeHBsaWNpdD1lPT4oe1tPdF06T2JqZWN0LmtleXMoZSkubWFwKHQ9Pih7W3RdOmVbdF19KSl9KTtmdW5jdGlvbiBwYXJzZShlLHQse2F1dG86bD0hMH09e30pe2NvbnN0IG5leHQ9ZT0+e2lmKGlzU3RyaW5nKGUpKXtjb25zdCBvPXtrZXlJZDpudWxsLHBhdHRlcm46ZX07cmV0dXJuIGwmJihvLnNlYXJjaGVyPWNyZWF0ZVNlYXJjaGVyKGUsdCkpLG99Y29uc3Qgbz1PYmplY3Qua2V5cyhlKSxpPShlPT4hIWVbUnRdKShlKTtpZighaSYmby5sZW5ndGg+MSYmIWlzRXhwcmVzc2lvbihlKSlyZXR1cm4gbmV4dChjb252ZXJ0VG9FeHBsaWNpdChlKSk7aWYoKGU9PiFpc0FycmF5KGUpJiZpc09iamVjdChlKSYmIWlzRXhwcmVzc2lvbihlKSkoZSkpe2NvbnN0IG49aT9lW1J0XTpvWzBdLHI9aT9lW2p0XTplW25dO2lmKCFpc1N0cmluZyhyKSl0aHJvdyBuZXcgRXJyb3IoKGU9PmBJbnZhbGlkIHZhbHVlIGZvciBrZXkgJHtlfWApKG4pKTtjb25zdCBzPXtrZXlJZDpjcmVhdGVLZXlJZChuKSxwYXR0ZXJuOnJ9O3JldHVybiBsJiYocy5zZWFyY2hlcj1jcmVhdGVTZWFyY2hlcihyLHQpKSxzfWNvbnN0IG49e2NoaWxkcmVuOltdLG9wZXJhdG9yOm9bMF19O3JldHVybiBvLmZvckVhY2godD0+e2NvbnN0IGw9ZVt0XTtpc0FycmF5KGwpJiZsLmZvckVhY2goZT0+e24uY2hpbGRyZW4ucHVzaChuZXh0KGUpKX0pfSksbn07cmV0dXJuIGlzRXhwcmVzc2lvbihlKXx8KGU9Y29udmVydFRvRXhwbGljaXQoZSkpLG5leHQoZSl9ZnVuY3Rpb24gY29tcHV0ZVNjb3JlU2luZ2xlKGUse2lnbm9yZUZpZWxkTm9ybTp0PVZ0Lmlnbm9yZUZpZWxkTm9ybX0pe2xldCBsPTE7cmV0dXJuIGUuZm9yRWFjaCgoe2tleTplLG5vcm06byxzY29yZTppfSk9Pntjb25zdCBuPWU/ZS53ZWlnaHQ6bnVsbDtsKj1NYXRoLnBvdygwPT09aSYmbj9OdW1iZXIuRVBTSUxPTjppLChufHwxKSoodD8xOm8pKX0pLGx9Y2xhc3MgTWF4SGVhcHtjb25zdHJ1Y3RvcihlKXt0aGlzLmxpbWl0PWUsdGhpcy5oZWFwPVtdfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuaGVhcC5sZW5ndGh9c2hvdWxkSW5zZXJ0KGUpe3JldHVybiB0aGlzLnNpemU8dGhpcy5saW1pdHx8ZTx0aGlzLmhlYXBbMF0uc2NvcmV9aW5zZXJ0KGUpe3RoaXMuc2l6ZTx0aGlzLmxpbWl0Pyh0aGlzLmhlYXAucHVzaChlKSx0aGlzLl9idWJibGVVcCh0aGlzLnNpemUtMSkpOmUuc2NvcmU8dGhpcy5oZWFwWzBdLnNjb3JlJiYodGhpcy5oZWFwWzBdPWUsdGhpcy5fc2lua0Rvd24oMCkpfWV4dHJhY3RTb3J0ZWQoZSl7cmV0dXJuIHRoaXMuaGVhcC5zb3J0KGUpfV9idWJibGVVcChlKXtjb25zdCB0PXRoaXMuaGVhcDtmb3IoO2U+MDspe2NvbnN0IGw9ZS0xPj4xO2lmKHRbZV0uc2NvcmU8PXRbbF0uc2NvcmUpYnJlYWs7Y29uc3Qgbz10W2VdO3RbZV09dFtsXSx0W2xdPW8sZT1sfX1fc2lua0Rvd24oZSl7Y29uc3QgdD10aGlzLmhlYXAsbD10Lmxlbmd0aDtsZXQgbz1lO2Rve2NvbnN0IGk9MiooZT1vKSsxLG49MiplKzI7aWYoaTxsJiZ0W2ldLnNjb3JlPnRbb10uc2NvcmUmJihvPWkpLG48bCYmdFtuXS5zY29yZT50W29dLnNjb3JlJiYobz1uKSxvIT09ZSl7Y29uc3QgbD10W2VdO3RbZV09dFtvXSx0W29dPWx9fXdoaWxlKG8hPT1lKX19ZnVuY3Rpb24gdHJhbnNmb3JtTWF0Y2hlcyhlLHQpe2NvbnN0IGw9ZS5tYXRjaGVzO3QubWF0Y2hlcz1bXSxpc0RlZmluZWQobCkmJmwuZm9yRWFjaChlPT57aWYoIWlzRGVmaW5lZChlLmluZGljZXMpfHwhZS5pbmRpY2VzLmxlbmd0aClyZXR1cm47Y29uc3R7aW5kaWNlczpsLHZhbHVlOm99PWUsaT17aW5kaWNlczpsLHZhbHVlOm99O2Uua2V5JiYoaS5rZXk9ZS5rZXkuc3JjKSxlLmlkeD4tMSYmKGkucmVmSW5kZXg9ZS5pZHgpLHQubWF0Y2hlcy5wdXNoKGkpfSl9ZnVuY3Rpb24gdHJhbnNmb3JtU2NvcmUoZSx0KXt0LnNjb3JlPWUuc2NvcmV9Y29uc3QgSHQ9L1xiXHcrXGIvZztmdW5jdGlvbiBjcmVhdGVBbmFseXplcih7aXNDYXNlU2Vuc2l0aXZlOmU9ITEsaWdub3JlRGlhY3JpdGljczp0PSExfT17fSl7cmV0dXJue3Rva2VuaXplOmw9PihlfHwobD1sLnRvTG93ZXJDYXNlKCkpLHQmJihsPU10KGwpKSxsLm1hdGNoKEh0KXx8W10pfX1mdW5jdGlvbiByZW1vdmVGcm9tSW52ZXJ0ZWRJbmRleChlLHQpe2Zvcihjb25zdFtsLG9db2YgZS50ZXJtcyl7Y29uc3QgaT1vLmZpbHRlcihlPT5lLmRvY0lkeCE9PXQpLG49by5sZW5ndGgtaS5sZW5ndGg7bj4wJiYoZS5maWVsZENvdW50LT1uLGUuZGYuc2V0KGwsKGUuZGYuZ2V0KGwpfHwwKS1uKSwwPT09aS5sZW5ndGg/KGUudGVybXMuZGVsZXRlKGwpLGUuZGYuZGVsZXRlKGwpKTplLnRlcm1zLnNldChsLGkpKX19Y2xhc3MgRnVzZXtjb25zdHJ1Y3RvcihlLHQsbCl7dGhpcy5vcHRpb25zPXsuLi5WdCwuLi50fSx0aGlzLm9wdGlvbnMudXNlRXh0ZW5kZWRTZWFyY2gsdGhpcy5vcHRpb25zLnVzZVRva2VuU2VhcmNoLHRoaXMuX2tleVN0b3JlPW5ldyBLZXlTdG9yZSh0aGlzLm9wdGlvbnMua2V5cyksdGhpcy5fZG9jcz1lLHRoaXMuX215SW5kZXg9bnVsbCx0aGlzLl9pbnZlcnRlZEluZGV4PW51bGwsdGhpcy5zZXRDb2xsZWN0aW9uKGUsbCksdGhpcy5fbGFzdFF1ZXJ5PW51bGwsdGhpcy5fbGFzdFNlYXJjaGVyPW51bGx9X2dldFNlYXJjaGVyKGUpe2lmKHRoaXMuX2xhc3RRdWVyeT09PWUpcmV0dXJuIHRoaXMuX2xhc3RTZWFyY2hlcjtjb25zdCB0PWNyZWF0ZVNlYXJjaGVyKGUsdGhpcy5faW52ZXJ0ZWRJbmRleD97Li4udGhpcy5vcHRpb25zLF9pbnZlcnRlZEluZGV4OnRoaXMuX2ludmVydGVkSW5kZXh9OnRoaXMub3B0aW9ucyk7cmV0dXJuIHRoaXMuX2xhc3RRdWVyeT1lLHRoaXMuX2xhc3RTZWFyY2hlcj10LHR9c2V0Q29sbGVjdGlvbihlLHQpe2lmKHRoaXMuX2RvY3M9ZSx0JiYhKHQgaW5zdGFuY2VvZiBGdXNlSW5kZXgpKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0ICdpbmRleCcgdHlwZSIpO2lmKHRoaXMuX215SW5kZXg9dHx8Y3JlYXRlSW5kZXgodGhpcy5vcHRpb25zLmtleXMsdGhpcy5fZG9jcyx7Z2V0Rm46dGhpcy5vcHRpb25zLmdldEZuLGZpZWxkTm9ybVdlaWdodDp0aGlzLm9wdGlvbnMuZmllbGROb3JtV2VpZ2h0fSksdGhpcy5vcHRpb25zLnVzZVRva2VuU2VhcmNoKXtjb25zdCBlPWNyZWF0ZUFuYWx5emVyKHtpc0Nhc2VTZW5zaXRpdmU6dGhpcy5vcHRpb25zLmlzQ2FzZVNlbnNpdGl2ZSxpZ25vcmVEaWFjcml0aWNzOnRoaXMub3B0aW9ucy5pZ25vcmVEaWFjcml0aWNzfSk7dGhpcy5faW52ZXJ0ZWRJbmRleD1mdW5jdGlvbihlLHQsbCl7Y29uc3Qgbz1uZXcgTWFwLGk9bmV3IE1hcDtsZXQgbj0wO2Z1bmN0aW9uIGFkZEZpZWxkKGUsdCxyLHMpe2NvbnN0IHU9bC50b2tlbml6ZShlKTtpZighdS5sZW5ndGgpcmV0dXJuO24rKztjb25zdCBkPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdSlkLnNldChlLChkLmdldChlKXx8MCkrMSk7Zm9yKGNvbnN0W2UsbF1vZiBkKXtjb25zdCBuPXtkb2NJZHg6dCxrZXlJZHg6cixzdWJJZHg6cyx0ZjpsfTtsZXQgdT1vLmdldChlKTt1fHwodT1bXSxvLnNldChlLHUpKSx1LnB1c2gobiksaS5zZXQoZSwoaS5nZXQoZSl8fDApKzEpfX1mb3IoY29uc3QgbCBvZiBlKXtjb25zdHtpOmUsdjpvLCQ6aX09bDtpZih2b2lkIDA9PT1vKXtpZihpKWZvcihsZXQgbD0wO2w8dDtsKyspe2NvbnN0IHQ9aVtsXTtpZih0KWlmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IG8gb2YgdClhZGRGaWVsZChvLnYsZSxsLG8uaT8/LTEpO2Vsc2UgYWRkRmllbGQodC52LGUsbCwtMSl9fWVsc2UgYWRkRmllbGQobyxlLC0xLC0xKX1yZXR1cm57dGVybXM6byxmaWVsZENvdW50Om4sZGY6aX19KHRoaXMuX215SW5kZXgucmVjb3Jkcyx0aGlzLl9teUluZGV4LmtleXMubGVuZ3RoLGUpfX1hZGQoZSl7aWYoaXNEZWZpbmVkKGUpJiYodGhpcy5fZG9jcy5wdXNoKGUpLHRoaXMuX215SW5kZXguYWRkKGUpLHRoaXMuX2ludmVydGVkSW5kZXgpKXtjb25zdCBlPXRoaXMuX215SW5kZXgucmVjb3Jkc1t0aGlzLl9teUluZGV4LnJlY29yZHMubGVuZ3RoLTFdLHQ9Y3JlYXRlQW5hbHl6ZXIoe2lzQ2FzZVNlbnNpdGl2ZTp0aGlzLm9wdGlvbnMuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dGhpcy5vcHRpb25zLmlnbm9yZURpYWNyaXRpY3N9KTshZnVuY3Rpb24oZSx0LGwsbyl7Y29uc3R7aTppLHY6biwkOnJ9PXQ7ZnVuY3Rpb24gYWRkRmllbGQodCxsLG4pe2NvbnN0IHI9by50b2tlbml6ZSh0KTtpZighci5sZW5ndGgpcmV0dXJuO2UuZmllbGRDb3VudCsrO2NvbnN0IHM9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiByKXMuc2V0KGUsKHMuZ2V0KGUpfHwwKSsxKTtmb3IoY29uc3RbdCxvXW9mIHMpe2NvbnN0IHI9e2RvY0lkeDppLGtleUlkeDpsLHN1YklkeDpuLHRmOm99O2xldCBzPWUudGVybXMuZ2V0KHQpO3N8fChzPVtdLGUudGVybXMuc2V0KHQscykpLHMucHVzaChyKSxlLmRmLnNldCh0LChlLmRmLmdldCh0KXx8MCkrMSl9fWlmKHZvaWQgMD09PW4pe2lmKHIpZm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1yW2VdO2lmKHQpaWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgbCBvZiB0KWFkZEZpZWxkKGwudixlLGwuaT8/LTEpO2Vsc2UgYWRkRmllbGQodC52LGUsLTEpfX1lbHNlIGFkZEZpZWxkKG4sLTEsLTEpfSh0aGlzLl9pbnZlcnRlZEluZGV4LGUsdGhpcy5fbXlJbmRleC5rZXlzLmxlbmd0aCx0KX19cmVtb3ZlKGU9KCk9PiExKXtjb25zdCB0PVtdLGw9W107Zm9yKGxldCBvPTAsaT10aGlzLl9kb2NzLmxlbmd0aDtvPGk7bys9MSllKHRoaXMuX2RvY3Nbb10sbykmJih0LnB1c2godGhpcy5fZG9jc1tvXSksbC5wdXNoKG8pKTtpZihsLmxlbmd0aCl7aWYodGhpcy5faW52ZXJ0ZWRJbmRleClmb3IoY29uc3QgZSBvZiBsKXJlbW92ZUZyb21JbnZlcnRlZEluZGV4KHRoaXMuX2ludmVydGVkSW5kZXgsZSk7Zm9yKGxldCBlPWwubGVuZ3RoLTE7ZT49MDtlLT0xKXRoaXMuX2RvY3Muc3BsaWNlKGxbZV0sMSk7dGhpcy5fbXlJbmRleC5yZW1vdmVBbGwobCl9cmV0dXJuIHR9cmVtb3ZlQXQoZSl7dGhpcy5faW52ZXJ0ZWRJbmRleCYmcmVtb3ZlRnJvbUludmVydGVkSW5kZXgodGhpcy5faW52ZXJ0ZWRJbmRleCxlKTtjb25zdCB0PXRoaXMuX2RvY3Muc3BsaWNlKGUsMSlbMF07cmV0dXJuIHRoaXMuX215SW5kZXgucmVtb3ZlQXQoZSksdH1nZXRJbmRleCgpe3JldHVybiB0aGlzLl9teUluZGV4fXNlYXJjaChlLHQpe2NvbnN0e2xpbWl0Omw9LTF9PXR8fHt9LHtpbmNsdWRlTWF0Y2hlczpvLGluY2x1ZGVTY29yZTppLHNob3VsZFNvcnQ6bixzb3J0Rm46cixpZ25vcmVGaWVsZE5vcm06c309dGhpcy5vcHRpb25zO2lmKGlzU3RyaW5nKGUpJiYhZS50cmltKCkpe2xldCBlPXRoaXMuX2RvY3MubWFwKChlLHQpPT4oe2l0ZW06ZSxyZWZJbmRleDp0fSkpO3JldHVybiBpc051bWJlcihsKSYmbD4tMSYmKGU9ZS5zbGljZSgwLGwpKSxlfWxldCB1O2lmKGlzTnVtYmVyKGwpJiZsPjAmJmlzU3RyaW5nKGUpKXtjb25zdCB0PW5ldyBNYXhIZWFwKGwpO2lzU3RyaW5nKHRoaXMuX2RvY3NbMF0pP3RoaXMuX3NlYXJjaFN0cmluZ0xpc3QoZSx7aGVhcDp0LGlnbm9yZUZpZWxkTm9ybTpzfSk6dGhpcy5fc2VhcmNoT2JqZWN0TGlzdChlLHtoZWFwOnQsaWdub3JlRmllbGROb3JtOnN9KSx1PXQuZXh0cmFjdFNvcnRlZChyKX1lbHNlIHU9aXNTdHJpbmcoZSk/aXNTdHJpbmcodGhpcy5fZG9jc1swXSk/dGhpcy5fc2VhcmNoU3RyaW5nTGlzdChlKTp0aGlzLl9zZWFyY2hPYmplY3RMaXN0KGUpOnRoaXMuX3NlYXJjaExvZ2ljYWwoZSksZnVuY3Rpb24oZSx7aWdub3JlRmllbGROb3JtOnQ9VnQuaWdub3JlRmllbGROb3JtfSl7ZS5mb3JFYWNoKGU9PntlLnNjb3JlPWNvbXB1dGVTY29yZVNpbmdsZShlLm1hdGNoZXMse2lnbm9yZUZpZWxkTm9ybTp0fSl9KX0odSx7aWdub3JlRmllbGROb3JtOnN9KSxuJiZ1LnNvcnQociksaXNOdW1iZXIobCkmJmw+LTEmJih1PXUuc2xpY2UoMCxsKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCx7aW5jbHVkZU1hdGNoZXM6bD1WdC5pbmNsdWRlTWF0Y2hlcyxpbmNsdWRlU2NvcmU6bz1WdC5pbmNsdWRlU2NvcmV9PXt9KXtjb25zdCBpPVtdO3JldHVybiBsJiZpLnB1c2godHJhbnNmb3JtTWF0Y2hlcyksbyYmaS5wdXNoKHRyYW5zZm9ybVNjb3JlKSxlLm1hcChlPT57Y29uc3R7aWR4Omx9PWUsbz17aXRlbTp0W2xdLHJlZkluZGV4Omx9O3JldHVybiBpLmxlbmd0aCYmaS5mb3JFYWNoKHQ9Pnt0KGUsbyl9KSxvfSl9KHUsdGhpcy5fZG9jcyx7aW5jbHVkZU1hdGNoZXM6byxpbmNsdWRlU2NvcmU6aX0pfV9zZWFyY2hTdHJpbmdMaXN0KGUse2hlYXA6dCxpZ25vcmVGaWVsZE5vcm06bH09e30pe2NvbnN0IG89dGhpcy5fZ2V0U2VhcmNoZXIoZSkse3JlY29yZHM6aX09dGhpcy5fbXlJbmRleCxuPXQ/bnVsbDpbXTtyZXR1cm4gaS5mb3JFYWNoKCh7djplLGk6aSxuOnJ9KT0+e2lmKCFpc0RlZmluZWQoZSkpcmV0dXJuO2NvbnN0e2lzTWF0Y2g6cyxzY29yZTp1LGluZGljZXM6ZH09by5zZWFyY2hJbihlKTtpZihzKXtjb25zdCBvPXtpdGVtOmUsaWR4OmksbWF0Y2hlczpbe3Njb3JlOnUsdmFsdWU6ZSxub3JtOnIsaW5kaWNlczpkfV19O3Q/KG8uc2NvcmU9Y29tcHV0ZVNjb3JlU2luZ2xlKG8ubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOmx9KSx0LnNob3VsZEluc2VydChvLnNjb3JlKSYmdC5pbnNlcnQobykpOm4ucHVzaChvKX19KSxufV9zZWFyY2hMb2dpY2FsKGUpe2NvbnN0IHQ9cGFyc2UoZSx0aGlzLm9wdGlvbnMpLGV2YWx1YXRlPShlLHQsbCk9PntpZighKCJjaGlsZHJlbiJpbiBlKSl7Y29uc3R7a2V5SWQ6byxzZWFyY2hlcjppfT1lO2xldCBuO3JldHVybiBudWxsPT09bz8obj1bXSx0aGlzLl9teUluZGV4LmtleXMuZm9yRWFjaCgoZSxsKT0+e24ucHVzaCguLi50aGlzLl9maW5kTWF0Y2hlcyh7a2V5OmUsdmFsdWU6dFtsXSxzZWFyY2hlcjppfSkpfSkpOm49dGhpcy5fZmluZE1hdGNoZXMoe2tleTp0aGlzLl9rZXlTdG9yZS5nZXQobyksdmFsdWU6dGhpcy5fbXlJbmRleC5nZXRWYWx1ZUZvckl0ZW1BdEtleUlkKHQsbyksc2VhcmNoZXI6aX0pLG4mJm4ubGVuZ3RoP1t7aWR4OmwsaXRlbTp0LG1hdGNoZXM6bn1dOltdfWNvbnN0e2NoaWxkcmVuOm8sb3BlcmF0b3I6aX09ZSxuPVtdO2ZvcihsZXQgZT0wLHI9by5sZW5ndGg7ZTxyO2UrPTEpe2NvbnN0IHI9b1tlXSxzPWV2YWx1YXRlKHIsdCxsKTtpZihzLmxlbmd0aCluLnB1c2goLi4ucyk7ZWxzZSBpZihpPT09T3QpcmV0dXJuW119cmV0dXJuIG59LGw9dGhpcy5fbXlJbmRleC5yZWNvcmRzLG89bmV3IE1hcCxpPVtdO3JldHVybiBsLmZvckVhY2goKHskOmUsaTpsfSk9PntpZihpc0RlZmluZWQoZSkpe2NvbnN0IG49ZXZhbHVhdGUodCxlLGwpO24ubGVuZ3RoJiYoby5oYXMobCl8fChvLnNldChsLHtpZHg6bCxpdGVtOmUsbWF0Y2hlczpbXX0pLGkucHVzaChvLmdldChsKSkpLG4uZm9yRWFjaCgoe21hdGNoZXM6ZX0pPT57by5nZXQobCkubWF0Y2hlcy5wdXNoKC4uLmUpfSkpfX0pLGl9X3NlYXJjaE9iamVjdExpc3QoZSx7aGVhcDp0LGlnbm9yZUZpZWxkTm9ybTpsfT17fSl7Y29uc3Qgbz10aGlzLl9nZXRTZWFyY2hlcihlKSx7a2V5czppLHJlY29yZHM6bn09dGhpcy5fbXlJbmRleCxyPXQ/bnVsbDpbXTtyZXR1cm4gbi5mb3JFYWNoKCh7JDplLGk6bn0pPT57aWYoIWlzRGVmaW5lZChlKSlyZXR1cm47Y29uc3Qgcz1bXTtsZXQgdT0hMSxkPSExO2lmKGkuZm9yRWFjaCgodCxsKT0+e2NvbnN0IGk9dGhpcy5fZmluZE1hdGNoZXMoe2tleTp0LHZhbHVlOmVbbF0sc2VhcmNoZXI6b30pO2kubGVuZ3RoPyhzLnB1c2goLi4uaSksaVswXS5oYXNJbnZlcnNlJiYoZD0hMCkpOnU9ITB9KSwoIWR8fCF1KSYmcy5sZW5ndGgpe2NvbnN0IG89e2lkeDpuLGl0ZW06ZSxtYXRjaGVzOnN9O3Q/KG8uc2NvcmU9Y29tcHV0ZVNjb3JlU2luZ2xlKG8ubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOmx9KSx0LnNob3VsZEluc2VydChvLnNjb3JlKSYmdC5pbnNlcnQobykpOnIucHVzaChvKX19KSxyfV9maW5kTWF0Y2hlcyh7a2V5OmUsdmFsdWU6dCxzZWFyY2hlcjpsfSl7aWYoIWlzRGVmaW5lZCh0KSlyZXR1cm5bXTtjb25zdCBvPVtdO2lmKGlzQXJyYXkodCkpdC5mb3JFYWNoKCh7djp0LGk6aSxuOm59KT0+e2lmKCFpc0RlZmluZWQodCkpcmV0dXJuO2NvbnN0e2lzTWF0Y2g6cixzY29yZTpzLGluZGljZXM6dSxoYXNJbnZlcnNlOmR9PWwuc2VhcmNoSW4odCk7ciYmby5wdXNoKHtzY29yZTpzLGtleTplLHZhbHVlOnQsaWR4Omksbm9ybTpuLGluZGljZXM6dSxoYXNJbnZlcnNlOmR9KX0pO2Vsc2V7Y29uc3R7djppLG46bn09dCx7aXNNYXRjaDpyLHNjb3JlOnMsaW5kaWNlczp1LGhhc0ludmVyc2U6ZH09bC5zZWFyY2hJbihpKTtyJiZvLnB1c2goe3Njb3JlOnMsa2V5OmUsdmFsdWU6aSxub3JtOm4saW5kaWNlczp1LGhhc0ludmVyc2U6ZH0pfXJldHVybiBvfX1jbGFzcyBUb2tlblNlYXJjaHtzdGF0aWMgY29uZGl0aW9uKGUsdCl7cmV0dXJuIHQudXNlVG9rZW5TZWFyY2h9Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9wdGlvbnM9dCx0aGlzLmFuYWx5emVyPWNyZWF0ZUFuYWx5emVyKHtpc0Nhc2VTZW5zaXRpdmU6dC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczp0Lmlnbm9yZURpYWNyaXRpY3N9KTtjb25zdCBsPXRoaXMuYW5hbHl6ZXIudG9rZW5pemUoZSksbz10Ll9pbnZlcnRlZEluZGV4LHtkZjppLGZpZWxkQ291bnQ6bn09bzt0aGlzLnRlcm1TZWFyY2hlcnM9W10sdGhpcy5pZGZXZWlnaHRzPVtdO2Zvcihjb25zdCBlIG9mIGwpe3RoaXMudGVybVNlYXJjaGVycy5wdXNoKG5ldyBCaXRhcFNlYXJjaChlLHtsb2NhdGlvbjp0LmxvY2F0aW9uLHRocmVzaG9sZDp0LnRocmVzaG9sZCxkaXN0YW5jZTp0LmRpc3RhbmNlLGluY2x1ZGVNYXRjaGVzOnQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6dC5maW5kQWxsTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6dC5taW5NYXRjaENoYXJMZW5ndGgsaXNDYXNlU2Vuc2l0aXZlOnQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dC5pZ25vcmVEaWFjcml0aWNzLGlnbm9yZUxvY2F0aW9uOiEwfSkpO2NvbnN0IGw9aS5nZXQoZSl8fDAsbz1NYXRoLmxvZygxKyhuLWwrLjUpLyhsKy41KSk7dGhpcy5pZGZXZWlnaHRzLnB1c2gobyl9fXNlYXJjaEluKGUpe2lmKCF0aGlzLnRlcm1TZWFyY2hlcnMubGVuZ3RoKXJldHVybntpc01hdGNoOiExLHNjb3JlOjF9O2NvbnN0IHQ9W107bGV0IGw9MCxvPTAsaT0wO2ZvcihsZXQgbj0wO248dGhpcy50ZXJtU2VhcmNoZXJzLmxlbmd0aDtuKyspe2NvbnN0IHI9dGhpcy50ZXJtU2VhcmNoZXJzW25dLnNlYXJjaEluKGUpLHM9dGhpcy5pZGZXZWlnaHRzW25dO28rPXMsci5pc01hdGNoJiYoaSsrLGwrPXMqKDEtci5zY29yZSksci5pbmRpY2VzJiZ0LnB1c2goLi4uci5pbmRpY2VzKSl9aWYoMD09PWkpcmV0dXJue2lzTWF0Y2g6ITEsc2NvcmU6MX07Y29uc3Qgbj1vPjA/MS1sL286MCxyPXtpc01hdGNoOiEwLHNjb3JlOk1hdGgubWF4KC4wMDEsbil9O3JldHVybiB0aGlzLm9wdGlvbnMuaW5jbHVkZU1hdGNoZXMmJnQubGVuZ3RoJiYoci5pbmRpY2VzPW1lcmdlSW5kaWNlcyh0KSkscn19RnVzZS52ZXJzaW9uPSI3LjMuMCIsRnVzZS5jcmVhdGVJbmRleD1jcmVhdGVJbmRleCxGdXNlLnBhcnNlSW5kZXg9ZnVuY3Rpb24oZSx7Z2V0Rm46dD1WdC5nZXRGbixmaWVsZE5vcm1XZWlnaHQ6bD1WdC5maWVsZE5vcm1XZWlnaHR9PXt9KXtjb25zdHtrZXlzOm8scmVjb3JkczppfT1lLG49bmV3IEZ1c2VJbmRleCh7Z2V0Rm46dCxmaWVsZE5vcm1XZWlnaHQ6bH0pO3JldHVybiBuLnNldEtleXMobyksbi5zZXRJbmRleFJlY29yZHMoaSksbn0sRnVzZS5jb25maWc9VnQsRnVzZS5tYXRjaD1mdW5jdGlvbihlLHQsbCl7cmV0dXJuIGNyZWF0ZVNlYXJjaGVyKGUsey4uLlZ0LC4uLmx9KS5zZWFyY2hJbih0KX0sRnVzZS5wYXJzZVF1ZXJ5PXBhcnNlLHJlZ2lzdGVyKEV4dGVuZGVkU2VhcmNoKSxyZWdpc3RlcihUb2tlblNlYXJjaCksRnVzZS51c2U9ZnVuY3Rpb24oLi4uZSl7ZS5mb3JFYWNoKGU9PnJlZ2lzdGVyKGUpKX07Y29uc3QgVXQ9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9O2Z1bmN0aW9uIHNhbml0aXplKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7Ly50ZXN0KGUpfShlKT9lOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1smPD4iJ10vZyxlPT5VdFtlXSl9KGUpfWZ1bmN0aW9uIGhpZ2hsaWdodChlLHQsbCxvKXtmdW5jdGlvbiBnZW5lcmF0ZUhpZ2hsaWdodGVkVGV4dChlLGw9W10pe2U9ZXx8IiI7bGV0IG89IiIsaT0wO2wuZm9yRWFjaChsPT57aWYoMj09PWwubGVuZ3RoJiZsWzBdPT09bFsxXSlyZXR1cm47Y29uc3Qgbj1sWzFdKzEscj1uLWxbMF0+PXQubGVuZ3RoO28rPVtzYW5pdGl6ZShlLnN1YnN0cmluZyhpLGxbMF0pKSxyJiYiPG1hcms+IixzYW5pdGl6ZShlLnN1YnN0cmluZyhsWzBdLG4pKSxyJiYiPC9tYXJrPiJdLmZpbHRlcihCb29sZWFuKS5qb2luKCIiKSxpPW59KSxvKz1zYW5pdGl6ZShlLnN1YnN0cmluZyhpKSk7Y29uc3Qgbj1vLmluZGV4T2YoIjxtYXJrPiIpO3JldHVybi0xIT09biYmKG89ZnVuY3Rpb24oZSx0KXtsZXQgbD0iIixvPTAsaT0hMTtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7aWYoIj4iPT09ZVtuXSlpPSEwO2Vsc2UgaWYoIjwiPT09ZVtuXSl7aT0hMSxsPWVbbl0rbDtjb250aW51ZX1pZihpfHxvKyssIShvPD10KSl7bD0iLi4uIitsO2JyZWFrfWw9ZVtuXStsfXJldHVybiBsfShvLG8ubGVuZ3RoLW4pKSxvfWlmKGUubWF0Y2hlcz8ubGVuZ3RoKWZvcihjb25zdCB0IG9mIGUubWF0Y2hlcylpZighKGwmJnQua2V5IT09bHx8bz8uaW5jbHVkZXModC5rZXkpKSlyZXR1cm4gZ2VuZXJhdGVIaWdobGlnaHRlZFRleHQodC52YWx1ZSx0LmluZGljZXMpfWNvbnN0IFd0PXtzbG90czp7cm9vdDoiZmxleCBmbGV4LWNvbCBtaW4taC0wIG1pbi13LTAgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiLGlucHV0OiIiLGNsb3NlOiIiLGJhY2s6InAtMCIsY29udGVudDoicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIGZsZXggZmxleC1jb2wiLGZvb3RlcjoicC0xIix2aWV3cG9ydDoicmVsYXRpdmUgc2Nyb2xsLXB5LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSBmb2N1czpvdXRsaW5lLW5vbmUiLGdyb3VwOiJwLTEgaXNvbGF0ZSIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLGxhYmVsOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLGl0ZW06Imdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IixpdGVtTGVhZGluZ0ljb246InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtTGVhZGluZ0NoaXA6InNocmluay0wIixpdGVtTGVhZGluZ0NoaXBTaXplOiIiLGl0ZW1UcmFpbGluZzoibXMtYXV0byBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNocmluay0wIHRleHQtZGltbWVkIGhpZGRlbiBncm91cC1kYXRhLWhpZ2hsaWdodGVkOmlubGluZS1mbGV4IixpdGVtVHJhaWxpbmdLYmRzOiJoaWRkZW4gbGc6aW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNocmluay0wIixpdGVtVHJhaWxpbmdLYmRzU2l6ZToiIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgdGV4dC1zdGFydCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIHNwYWNlLXgtMSB0ZXh0LWRpbW1lZCIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIixpdGVtTGFiZWxCYXNlOiJ0ZXh0LWhpZ2hsaWdodGVkIFsmPm1hcmtdOnRleHQtaW52ZXJ0ZWQgWyY+bWFya106YmctcHJpbWFyeSIsaXRlbUxhYmVsUHJlZml4OiJ0ZXh0LWRlZmF1bHQiLGl0ZW1MYWJlbFN1ZmZpeDoidGV4dC1kaW1tZWQgWyY+bWFya106dGV4dC1pbnZlcnRlZCBbJj5tYXJrXTpiZy1wcmltYXJ5In0sdmFyaWFudHM6e3ZpcnR1YWxpemU6e3RydWU6e3ZpZXdwb3J0OiJwLTEgaXNvbGF0ZSJ9LGZhbHNlOnt2aWV3cG9ydDoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX0sc2l6ZTp7eHM6e2lucHV0OiJbJj5pbnB1dF06aC0xMCIsZW1wdHk6InB5LTMgdGV4dC14cyIsbGFiZWw6InAtMSB0ZXh0LVsxMHB4XS8zIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZzoiZ2FwLTEiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uOiJzaXplLTQiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJzbSJ9LHNtOntpbnB1dDoiWyY+aW5wdXRdOmgtMTEiLGVtcHR5OiJweS00IHRleHQteHMiLGxhYmVsOiJwLTEuNSB0ZXh0LVsxMHB4XS8zIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZzoiZ2FwLTEuNSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNCIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6InNtIn0sbWQ6e2lucHV0OiJbJj5pbnB1dF06aC0xMiIsZW1wdHk6InB5LTYgdGV4dC1zbSIsbGFiZWw6InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC1zbSBnYXAtMS41IixpdGVtTGVhZGluZ0ljb246InNpemUtNSIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS01IixpdGVtTGVhZGluZ0NoaXBTaXplOiJtZCIsaXRlbVRyYWlsaW5nOiJnYXAtMS41IixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToibWQifSxsZzp7aW5wdXQ6IlsmPmlucHV0XTpoLTEzIixlbXB0eToicHktNyB0ZXh0LXNtIixsYWJlbDoicC0yIHRleHQteHMgZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LXNtIGdhcC0yIixpdGVtTGVhZGluZ0ljb246InNpemUtNSIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS01IixpdGVtTGVhZGluZ0NoaXBTaXplOiJtZCIsaXRlbVRyYWlsaW5nOiJnYXAtMiIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNSIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6Im1kIn0seGw6e2lucHV0OiJbJj5pbnB1dF06aC0xNCIsZW1wdHk6InB5LTggdGV4dC1iYXNlIixsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS02IixpdGVtTGVhZGluZ0F2YXRhclNpemU6InhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNiIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibGciLGl0ZW1UcmFpbGluZzoiZ2FwLTIiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uOiJzaXplLTYiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJsZyJ9fSxhY3RpdmU6e3RydWU6e2l0ZW06InRleHQtaGlnaGxpZ2h0ZWQgYmVmb3JlOmJnLWVsZXZhdGVkIixpdGVtTGVhZGluZ0ljb246InRleHQtZGVmYXVsdCJ9LGZhbHNlOntpdGVtOlsidGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWdyb3VwLWRhdGEtZGlzYWJsZWQ6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXX19LGxvYWRpbmc6e3RydWU6e2l0ZW1MZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIn19LEd0PU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNvbW1hbmRQYWxldHRlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczplLm1lcmdlTW9kZWxzKHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNlbGVjdGVkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjaGlsZHJlbkljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYmFjazp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGJhY2tJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlucHV0Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZ3JvdXBzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxmdXNlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sdmlydHVhbGl6ZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifSxkZXNjcmlwdGlvbktleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRlc2NyaXB0aW9uIn0scHJlc2VydmVHcm91cE9yZGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sc2VhcmNoRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxoaWdobGlnaHRPbkhvdmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2VsZWN0aW9uQmVoYXZpb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0se3NlYXJjaFRlcm06e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHNlYXJjaFRlcm1Nb2RpZmllcnM6e319KSxlbWl0czplLm1lcmdlTW9kZWxzKFsidXBkYXRlOm1vZGVsVmFsdWUiLCJoaWdobGlnaHQiLCJlbnRyeUZvY3VzIiwibGVhdmUiLCJ1cGRhdGU6b3BlbiJdLFsidXBkYXRlOnNlYXJjaFRlcm0iXSksc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3Qgbz10LGk9bCxuPWUudXNlU2xvdHMoKSxnPWUudXNlTW9kZWwodCwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KSx7dDp5fT1yKCksaz1zKCksUz11KCJjb21tYW5kUGFsZXR0ZSIsbyksTj13KHgobywiYXMiLCJkaXNhYmxlZCIsIm11bHRpcGxlIiwibW9kZWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImhpZ2hsaWdodE9uSG92ZXIiLCJieSIpLGkpLEk9ZS50b1JlZigoKT0+ISFvLnZpcnR1YWxpemUmJnNlKCJib29sZWFuIj09dHlwZW9mIG8udmlydHVhbGl6ZT97fTpvLnZpcnR1YWxpemUse2VzdGltYXRlU2l6ZTpOZShhZS52YWx1ZSwibWQiLG8uZGVzY3JpcHRpb25LZXksISFuWyJpdGVtLWRlc2NyaXB0aW9uIl0pfSkpLFtWLEFdPWQoe3Byb3BzOntpdGVtOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sZ3JvdXA6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpbmRleDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9fX0pLHo9ZS5jb21wdXRlZCgoKT0+Zih7ZXh0ZW5kOmYoV3QpLC4uLmsudWk/LmNvbW1hbmRQYWxldHRlfHx7fX0pKHtzaXplOm8uc2l6ZSx2aXJ0dWFsaXplOiEhby52aXJ0dWFsaXplfSkpLFA9ZS5jb21wdXRlZCgoKT0+c2Uoe30sby5mdXNlLHtmdXNlT3B0aW9uczp7aWdub3JlTG9jYXRpb246ITAsdGhyZXNob2xkOi4xLGtleXM6W28ubGFiZWxLZXksInN1ZmZpeCJdfSxyZXN1bHRMaW1pdDoxMixtYXRjaEFsbFdoZW5TZWFyY2hFbXB0eTohMH0pKSxxPWUucmVmKFtdKSxGPWUuY29tcHV0ZWQoKCk9PnEudmFsdWVbcS52YWx1ZS5sZW5ndGgtMV0/LnBsYWNlaG9sZGVyfHxvLnBsYWNlaG9sZGVyfHx5KCJjb21tYW5kUGFsZXR0ZS5wbGFjZWhvbGRlciIpKSxRPWUuY29tcHV0ZWQoKCk9PnEudmFsdWU/Lmxlbmd0aD9bcS52YWx1ZVtxLnZhbHVlLmxlbmd0aC0xXV06by5ncm91cHMpLFg9ZS5jb21wdXRlZCgoKT0+US52YWx1ZT8uZmlsdGVyKGU9PiEhZS5pZCYmIWUuaWdub3JlRmlsdGVyKT8uZmxhdE1hcChlPT5lLml0ZW1zPy5tYXAodD0+KHsuLi50LGdyb3VwOmUuaWR9KSl8fFtdKXx8W10pLFk9TyhnLCgpPT5vLnNlYXJjaERlbGF5KSx7cmVzdWx0czpafT1mdW5jdGlvbih0LGwsbyl7Y29uc3QgY3JlYXRlRnVzZT0oKT0+e3ZhciB0LGk7cmV0dXJuIG5ldyBGdXNlKG51bGwhPT0odD1lLnRvVmFsdWUobCkpJiZ2b2lkIDAhPT10P3Q6W10sbnVsbD09PShpPWUudG9WYWx1ZShvKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuZnVzZU9wdGlvbnMpfSxpPWUucmVmKGNyZWF0ZUZ1c2UoKSk7cmV0dXJuIGUud2F0Y2goKCk9Pnt2YXIgdDtyZXR1cm4gbnVsbD09PSh0PWUudG9WYWx1ZShvKSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZnVzZU9wdGlvbnN9LCgpPT57aS52YWx1ZT1jcmVhdGVGdXNlKCl9LHtkZWVwOiEwfSksZS53YXRjaCgoKT0+ZS50b1ZhbHVlKGwpLGU9PntpLnZhbHVlLnNldENvbGxlY3Rpb24oZSl9LHtkZWVwOiEwfSkse2Z1c2U6aSxyZXN1bHRzOmUuY29tcHV0ZWQoKCk9Pntjb25zdCBuPWUudG9WYWx1ZShvKTtpZigobnVsbD09bj92b2lkIDA6bi5tYXRjaEFsbFdoZW5TZWFyY2hFbXB0eSkmJiFlLnRvVmFsdWUodCkpcmV0dXJuIGUudG9WYWx1ZShsKS5tYXAoKGUsdCk9Pih7aXRlbTplLHJlZkluZGV4OnR9KSk7Y29uc3Qgcj1udWxsPT1uP3ZvaWQgMDpuLnJlc3VsdExpbWl0O3JldHVybiBpLnZhbHVlLnNlYXJjaChlLnRvVmFsdWUodCkscj97bGltaXQ6cn06dm9pZCAwKX0pfX0oWSxYLFApLGVlPUUoWiwxNiwhMCk7ZnVuY3Rpb24gcHJvY2Vzc0dyb3VwSXRlbXMoZSx0KXtsZXQgbD10O3JldHVybiBlPy5wb3N0RmlsdGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0RmlsdGVyJiYobD1lLnBvc3RGaWx0ZXIoWS52YWx1ZSxsKSksey4uLmUsaXRlbXM6bC5zbGljZSgwLFAudmFsdWUucmVzdWx0TGltaXQpLm1hcChlPT4oey4uLmUsbGFiZWxIdG1sOmhpZ2hsaWdodChlLFkudmFsdWUsby5sYWJlbEtleSksc3VmZml4SHRtbDpoaWdobGlnaHQoZSxZLnZhbHVlLHZvaWQgMCxbby5sYWJlbEtleV0pfSkpfX1jb25zdCB0ZT1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1RLnZhbHVlLHQ9ZWUudmFsdWUucmVkdWNlKChlLHQpPT57Y29uc3R7aXRlbTpsLG1hdGNoZXM6b309dDtyZXR1cm4gbC5ncm91cD8oZVtsLmdyb3VwXXx8PVtdLGVbbC5ncm91cF0/LnB1c2goey4uLmwsbWF0Y2hlczpvfSksZSk6ZX0se30pO2lmKG8ucHJlc2VydmVHcm91cE9yZGVyKXtjb25zdCBsPVtdO2Zvcihjb25zdCBvIG9mIGV8fFtdKXtpZighby5pdGVtcz8ubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IGU9by5pZ25vcmVGaWx0ZXI/by5pdGVtczp0W28uaWRdO2lmKCFlPy5sZW5ndGgpY29udGludWU7Y29uc3QgaT1wcm9jZXNzR3JvdXBJdGVtcyhvLGUpO2kuaXRlbXM/Lmxlbmd0aCYmbC5wdXNoKGkpfXJldHVybiBsfWNvbnN0IGw9T2JqZWN0LmVudHJpZXModCkubWFwKChbdCxsXSk9Pntjb25zdCBvPWU/LmZpbmQoZT0+ZS5pZD09PXQpO2lmKCFvKXJldHVybjtjb25zdCBpPXByb2Nlc3NHcm91cEl0ZW1zKG8sbCk7cmV0dXJuIGkuaXRlbXM/Lmxlbmd0aD9pOnZvaWQgMH0pLmZpbHRlcihlPT4hIWUpO3JldHVybihlPy5tYXAoKGUsdCk9Pih7Li4uZSxpbmRleDp0fSkpPy5maWx0ZXIoZT0+ZS5pZ25vcmVGaWx0ZXImJmUuaXRlbXM/Lmxlbmd0aCk/Lm1hcChlPT4oey4uLnByb2Nlc3NHcm91cEl0ZW1zKGUsZS5pdGVtc3x8W10pLGluZGV4OmUuaW5kZXh9KSk/LmZpbHRlcihlPT5lLml0ZW1zPy5sZW5ndGgpfHxbXSkucmVkdWNlKChlLHQpPT4oZS5zcGxpY2UodC5pbmRleCwwLHQpLGUpLFsuLi5sXSl9KSxhZT1lLmNvbXB1dGVkKCgpPT50ZS52YWx1ZS5mbGF0TWFwKGU9PmUuaXRlbXN8fFtdKSksbGU9ZS51c2VUZW1wbGF0ZVJlZigicm9vdFJlZiIpO2Z1bmN0aW9uIG5hdmlnYXRlQmFjaygpe3EudmFsdWUubGVuZ3RoJiYocS52YWx1ZS5wb3AoKSxnLnZhbHVlPSIiLGxlLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9ZnVuY3Rpb24gb25CYWNrc3BhY2UoKXtnLnZhbHVlfHxuYXZpZ2F0ZUJhY2soKX1mdW5jdGlvbiBvblNlbGVjdChlLHQpe3QuY2hpbGRyZW4/Lmxlbmd0aD8oZS5wcmV2ZW50RGVmYXVsdCgpLGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4/Lmxlbmd0aCYmKHEudmFsdWUucHVzaCh7aWQ6YGhpc3RvcnktJHtxLnZhbHVlLmxlbmd0aH1gLGxhYmVsOmUubGFiZWwsc2xvdDplLnNsb3QscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlcixpdGVtczplLmNoaWxkcmVufSksZy52YWx1ZT0iIixsZS52YWx1ZT8uaGlnaGxpZ2h0Rmlyc3RJdGVtKCkpfSh0KSk6dC5vblNlbGVjdD8uKGUpfXJldHVybihsLHIscyx1KT0+e3IoIlx4M2MhLS1bLS1ceDNlIikscihqZShlLnVucmVmKFYpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7aXRlbTppLGluZGV4OnIsZ3JvdXA6c30sdSxkLGYpPT57aWYoIXUpcmV0dXJuW2UuY3JlYXRlVk5vZGUoUixlLm1lcmdlUHJvcHMoZS51bnJlZihqKShpKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOnUsLi4uZH0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKEllKSx7dmFsdWU6by52YWx1ZUtleT9lLnVucmVmKFUpKGksby52YWx1ZUtleSk6ZS51bnJlZihCKShpLFsibWF0Y2hlcyIsImdyb3VwIiwib25TZWxlY3QiLCJsYWJlbEh0bWwiLCJzdWZmaXhIdG1sIiwiY2hpbGRyZW4iXSksZGlzYWJsZWQ6aS5kaXNhYmxlZCwiYXMtY2hpbGQiOiIiLG9uU2VsZWN0OmU9Pm9uU2VsZWN0KGUsaSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoVyxlLm1lcmdlUHJvcHMoZCx7ImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOnoudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW0saS51aT8uaXRlbSxpLmNsYXNzXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3R8fHM/LnNsb3R8fCJpdGVtIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGVhZGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kubG9hZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleTowLG5hbWU6dC5sb2FkaW5nSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sbG9hZGluZzohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleToxLG5hbWU6aS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhHLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTppLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0saS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmkuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEosZS5tZXJnZVByb3BzKHtrZXk6MyxzaXplOmkudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fHoudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGkuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0NoaXAsaS51aT8uaXRlbUxlYWRpbmdDaGlwXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGkucHJlZml4fHxpLmxhYmVsSHRtbHx8ZS51bnJlZihVKShpLG8ubGFiZWxLZXkpfHxpLnN1ZmZpeEh0bWx8fGkuc3VmZml4fHxuW2kuc2xvdD9gJHtpLnNsb3R9LWxhYmVsYDpzPy5zbG90P2Ake3Muc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fGUudW5yZWYoVSkoaSxvLmRlc2NyaXB0aW9uS2V5KXx8bltpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6cz8uc2xvdD9gJHtzLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOnoudmFsdWUuaXRlbVdyYXBwZXIoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtV3JhcHBlcixpLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbCxpLnVpPy5pdGVtTGFiZWxdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWxhYmVsYDpzPy5zbG90P2Ake3Muc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltpLnByZWZpeD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFByZWZpeCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxQcmVmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxQcmVmaXgsaS51aT8uaXRlbUxhYmVsUHJlZml4XX0pfSxlLnRvRGlzcGxheVN0cmluZyhpLnByZWZpeCksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxpLmxhYmVsSHRtbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbEJhc2UiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbEJhc2UsaS51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOnV8fGkuYWN0aXZlfSksaW5uZXJIVE1MOmkubGFiZWxIdG1sfSxudWxsLDEwLFsiaW5uZXJIVE1MIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjIsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbEJhc2UiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbEJhc2UsaS51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KSksMykpLGkuc3VmZml4SHRtbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjMsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFN1ZmZpeCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KSxpbm5lckhUTUw6aS5zdWZmaXhIdG1sfSxudWxsLDEwLFsiaW5uZXJIVE1MIl0pKTppLnN1ZmZpeD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjQsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFN1ZmZpeCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sZS50b0Rpc3BsYXlTdHJpbmcoaS5zdWZmaXgpLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMiksZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpfHxuW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOnoudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbURlc2NyaXB0aW9uLGkudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6cz8uc2xvdD9gJHtzLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZyxpLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tdHJhaWxpbmdgOnM/LnNsb3Q/YCR7cy5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kuY2hpbGRyZW4mJmkuY2hpbGRyZW4ubGVuZ3RoPjA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MCxuYW1lOnQuY2hpbGRyZW5JY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNoZXZyb25SaWdodCwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkua2Jkcz8ubGVuZ3RoPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nS2JkcyIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nS2JkcyxpLnVpPy5pdGVtVHJhaWxpbmdLYmRzXX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoaS5rYmRzLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEJlLGUubWVyZ2VQcm9wcyh7a2V5Omwsc2l6ZTppLnVpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nS2Jkc1NpemV8fHoudmFsdWUuaXRlbVRyYWlsaW5nS2Jkc1NpemUoKX0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgdD97dmFsdWU6dH06dCksbnVsbCwxNixbInNpemUiXSkpKSwxMjgpKV0sMikpOnM/LmhpZ2hsaWdodGVkSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleToyLG5hbWU6cy5oaWdobGlnaHRlZEljb24sImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb24saS51aT8uaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGkuY2hpbGRyZW4/Lmxlbmd0aD9lLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFZlKSx7a2V5OjAsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShNLHtuYW1lOnQuc2VsZWN0ZWRJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCkpXSwyKV0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJ2YWx1ZSIsImRpc2FibGVkIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXTt1KGplKFIsZS5tZXJnZVByb3BzKGUudW5yZWYoaikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTp1LC4uLmR9LGYsZyx5KT0+e2lmKCFmKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSWUpLHt2YWx1ZTpvLnZhbHVlS2V5P2UudW5yZWYoVSkoaSxvLnZhbHVlS2V5KTplLnVucmVmKEIpKGksWyJtYXRjaGVzIiwiZ3JvdXAiLCJvblNlbGVjdCIsImxhYmVsSHRtbCIsInN1ZmZpeEh0bWwiLCJjaGlsZHJlbiJdKSxkaXNhYmxlZDppLmRpc2FibGVkLCJhcy1jaGlsZCI6IiIsb25TZWxlY3Q6ZT0+b25TZWxlY3QoZSxpKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShXLGUubWVyZ2VQcm9wcyhkLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ei52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdHx8cz8uc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sZWFkaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjAsbmFtZTp0LmxvYWRpbmdJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxsb2FkaW5nOiEwfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjEsbmFtZTppLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHx6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxpLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXIsaS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soSixlLm1lcmdlUHJvcHMoe2tleTozLHNpemU6aS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0saS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcCxpLnVpPy5pdGVtTGVhZGluZ0NoaXBdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5wcmVmaXh8fGkubGFiZWxIdG1sfHxlLnVucmVmKFUpKGksby5sYWJlbEtleSl8fGkuc3VmZml4SHRtbHx8aS5zdWZmaXh8fG5baS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXXx8ZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpfHxuW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6ei52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1XcmFwcGVyLGkudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsLGkudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kucHJlZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsUHJlZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFByZWZpeCxpLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSl9LGUudG9EaXNwbGF5U3RyaW5nKGkucHJlZml4KSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGkubGFiZWxIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KSxpbm5lckhUTUw6aS5sYWJlbEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKShpLG8ubGFiZWxLZXkpKSwzKSksaS5zdWZmaXhIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MywiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pLGlubmVySFRNTDppLnN1ZmZpeEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOmkuc3VmZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6NCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxlLnRvRGlzcGxheVN0cmluZyhpLnN1ZmZpeCksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtRGVzY3JpcHRpb24saS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nLGkudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS10cmFpbGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5jaGlsZHJlbiYmaS5jaGlsZHJlbi5sZW5ndGg+MD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleTowLG5hbWU6dC5jaGlsZHJlbkljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hldnJvblJpZ2h0LCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5rYmRzPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdLYmRzIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzLGkudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChpLmtiZHMsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soQmUsZS5tZXJnZVByb3BzKHtrZXk6bCxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ei52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiB0P3t2YWx1ZTp0fTp0KSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6cz8uaGlnaGxpZ2h0ZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjIsbmFtZTpzLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5jaGlsZHJlbj8ubGVuZ3RoP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKE0se25hbWU6dC5zZWxlY3RlZEljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KSldLDIpXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbInZhbHVlIiwiZGlzYWJsZWQiLCJvblNlbGVjdCJdKV07ZihqZShlLnVucmVmKEllKSx7dmFsdWU6by52YWx1ZUtleT9lLnVucmVmKFUpKGksby52YWx1ZUtleSk6ZS51bnJlZihCKShpLFsibWF0Y2hlcyIsImdyb3VwIiwib25TZWxlY3QiLCJsYWJlbEh0bWwiLCJzdWZmaXhIdG1sIiwiY2hpbGRyZW4iXSksZGlzYWJsZWQ6aS5kaXNhYmxlZCwiYXMtY2hpbGQiOiIiLG9uU2VsZWN0OmU9Pm9uU2VsZWN0KGUsaSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoZixnLHksYik9PntpZighZylyZXR1cm5bZS5jcmVhdGVWTm9kZShXLGUubWVyZ2VQcm9wcyhkLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ei52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdHx8cz8uc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sZWFkaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjAsbmFtZTp0LmxvYWRpbmdJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxsb2FkaW5nOiEwfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjEsbmFtZTppLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHx6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxpLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXIsaS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soSixlLm1lcmdlUHJvcHMoe2tleTozLHNpemU6aS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0saS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcCxpLnVpPy5pdGVtTGVhZGluZ0NoaXBdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5wcmVmaXh8fGkubGFiZWxIdG1sfHxlLnVucmVmKFUpKGksby5sYWJlbEtleSl8fGkuc3VmZml4SHRtbHx8aS5zdWZmaXh8fG5baS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXXx8ZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpfHxuW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6ei52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1XcmFwcGVyLGkudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsLGkudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kucHJlZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsUHJlZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFByZWZpeCxpLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSl9LGUudG9EaXNwbGF5U3RyaW5nKGkucHJlZml4KSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGkubGFiZWxIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KSxpbm5lckhUTUw6aS5sYWJlbEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKShpLG8ubGFiZWxLZXkpKSwzKSksaS5zdWZmaXhIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MywiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pLGlubmVySFRNTDppLnN1ZmZpeEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOmkuc3VmZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6NCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxlLnRvRGlzcGxheVN0cmluZyhpLnN1ZmZpeCksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtRGVzY3JpcHRpb24saS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nLGkudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS10cmFpbGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5jaGlsZHJlbiYmaS5jaGlsZHJlbi5sZW5ndGg+MD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleTowLG5hbWU6dC5jaGlsZHJlbkljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hldnJvblJpZ2h0LCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5rYmRzPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdLYmRzIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzLGkudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChpLmtiZHMsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soQmUsZS5tZXJnZVByb3BzKHtrZXk6bCxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ei52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiB0P3t2YWx1ZTp0fTp0KSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6cz8uaGlnaGxpZ2h0ZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjIsbmFtZTpzLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5jaGlsZHJlbj8ubGVuZ3RoP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKE0se25hbWU6dC5zZWxlY3RlZEljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KSldLDIpXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07ZyhqZShXLGUubWVyZ2VQcm9wcyhkLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ei52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChkLGYsZyx5KT0+e2lmKCFmKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90fHxzPy5zbG90fHwiaXRlbSIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWxlYWRpbmdgOnM/LnNsb3Q/YCR7cy5zbG90fS1sZWFkaW5nYDoiaXRlbS1sZWFkaW5nIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltpLmxvYWRpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MCxuYW1lOnQubG9hZGluZ0ljb258fGUudW5yZWYoaykudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nSWNvbixpLnVpPy5pdGVtTGVhZGluZ0ljb25dLGxvYWRpbmc6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MSxuYW1lOmkuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nSWNvbixpLnVpPy5pdGVtTGVhZGluZ0ljb25dLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRyxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6aS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fHoudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LGkuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0F2YXRhcixpLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhKLGUubWVyZ2VQcm9wcyh7a2V5OjMsc2l6ZTppLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHx6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSxpLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwLGkudWk/Lml0ZW1MZWFkaW5nQ2hpcF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxpLnByZWZpeHx8aS5sYWJlbEh0bWx8fGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KXx8aS5zdWZmaXhIdG1sfHxpLnN1ZmZpeHx8bltpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6cz8uc2xvdD9gJHtzLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCJdfHxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczp6LnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVdyYXBwZXIsaS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWwsaS51aT8uaXRlbUxhYmVsXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6cz8uc2xvdD9gJHtzLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5wcmVmaXg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxQcmVmaXgiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsUHJlZml4KHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsUHJlZml4LGkudWk/Lml0ZW1MYWJlbFByZWZpeF19KX0sZS50b0Rpc3BsYXlTdHJpbmcoaS5wcmVmaXgpLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksaS5sYWJlbEh0bWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pLGlubmVySFRNTDppLmxhYmVsSHRtbH0sbnVsbCwxMCxbImlubmVySFRNTCJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKFUpKGksby5sYWJlbEtleSkpLDMpKSxpLnN1ZmZpeEh0bWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTozLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsU3VmZml4KHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsU3VmZml4LGkudWk/Lml0ZW1MYWJlbFN1ZmZpeF0sYWN0aXZlOnV8fGkuYWN0aXZlfSksaW5uZXJIVE1MOmkuc3VmZml4SHRtbH0sbnVsbCwxMCxbImlubmVySFRNTCJdKSk6aS5zdWZmaXg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTo0LCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsU3VmZml4KHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsU3VmZml4LGkudWk/Lml0ZW1MYWJlbFN1ZmZpeF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LGUudG9EaXNwbGF5U3RyaW5nKGkuc3VmZml4KSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpLGUudW5yZWYoVSkoaSxvLmRlc2NyaXB0aW9uS2V5KXx8bltpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6cz8uc2xvdD9gJHtzLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczp6LnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1EZXNjcmlwdGlvbixpLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkoaSxvLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmcsaS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LXRyYWlsaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltpLmNoaWxkcmVuJiZpLmNoaWxkcmVuLmxlbmd0aD4wPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjAsbmFtZTp0LmNoaWxkcmVuSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGV2cm9uUmlnaHQsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmtiZHM/Lmxlbmd0aD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0tiZHMiLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nS2Jkcyh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0tiZHMsaS51aT8uaXRlbVRyYWlsaW5nS2Jkc119KX0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGkua2JkcywodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhCZSxlLm1lcmdlUHJvcHMoe2tleTpsLHNpemU6aS51aT8uaXRlbVRyYWlsaW5nS2Jkc1NpemV8fGUudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHx6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIHQ/e3ZhbHVlOnR9OnQpLG51bGwsMTYsWyJzaXplIl0pKSksMTI4KSldLDIpKTpzPy5oaWdobGlnaHRlZEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MixuYW1lOnMuaGlnaGxpZ2h0ZWRJY29uLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxpLmNoaWxkcmVuPy5sZW5ndGg/ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWZSkse2tleTowLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoTSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpKV0sMildKV07SGUobC4kc2xvdHMsaS5zbG90fHxzPy5zbG90fHwiaXRlbSIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT57SGUobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGVhZGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+e2kubG9hZGluZz9mKGplKE0se25hbWU6dC5sb2FkaW5nSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sbG9hZGluZzohMH0pfSxudWxsLGcseSkpOmkuaWNvbj9mKGplKE0se25hbWU6aS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LG51bGwsZyx5KSk6aS5hdmF0YXI/ZihqZShHLGUubWVyZ2VQcm9wcyh7c2l6ZTppLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0saS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLG51bGwsZyx5KSk6aS5jaGlwP2YoamUoSixlLm1lcmdlUHJvcHMoe3NpemU6aS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0saS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcCxpLnVpPy5pdGVtTGVhZGluZ0NoaXBdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCxnLHkpKTpmKCJceDNjIS0tLS1ceDNlIil9LGYsZyx5KSxpLnByZWZpeHx8aS5sYWJlbEh0bWx8fGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KXx8aS5zdWZmaXhIdG1sfHxpLnN1ZmZpeHx8bltpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6cz8uc2xvdD9gJHtzLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCJdfHxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtV3JhcHBlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1XcmFwcGVyLGkudWk/Lml0ZW1XcmFwcGVyXX0pKX0iJHt5fT48c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbCIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWwsaS51aT8uaXRlbUxhYmVsXSxhY3RpdmU6dXx8aS5hY3RpdmV9KSl9IiR7eX0+YCksSGUobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+e2kucHJlZml4P2YoYDxzcGFuIGRhdGEtc2xvdD0iaXRlbUxhYmVsUHJlZml4IiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFByZWZpeCxpLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSkpfSIke3l9PiR7UWUoaS5wcmVmaXgpfTwvc3Bhbj5gKTpmKCJceDNjIS0tLS1ceDNlIiksaS5sYWJlbEh0bWw/ZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWxCYXNlIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pKX0iJHt5fT4ke2kubGFiZWxIdG1sPz8iIn08L3NwYW4+YCk6ZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWxCYXNlIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pKX0iJHt5fT4ke1FlKGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KSl9PC9zcGFuPmApLGkuc3VmZml4SHRtbD9mKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbFN1ZmZpeCIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KSl9IiR7eX0+JHtpLnN1ZmZpeEh0bWw/PyIifTwvc3Bhbj5gKTppLnN1ZmZpeD9mKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbFN1ZmZpeCIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KSl9IiR7eX0+JHtRZShpLnN1ZmZpeCl9PC9zcGFuPmApOmYoIlx4M2MhLS0tLVx4M2UiKX0sZixnLHkpLGYoIjwvc3Bhbj4iKSxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtRGVzY3JpcHRpb24iIGNsYXNzPSIke1dlKHoudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbURlc2NyaXB0aW9uLGkudWk/Lml0ZW1EZXNjcmlwdGlvbl19KSl9IiR7eX0+YCksSGUobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+e2YoYCR7UWUoZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpKX1gKX0sZixnLHkpLGYoIjwvc3Bhbj4iKSk6ZigiXHgzYyEtLS0tXHgzZSIpLGYoIjwvc3Bhbj4iKSk6ZigiXHgzYyEtLS0tXHgzZSIpLGYoYDxzcGFuIGRhdGEtc2xvdD0iaXRlbVRyYWlsaW5nIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZyxpLnVpPy5pdGVtVHJhaWxpbmddfSkpfSIke3l9PmApLEhlKGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LXRyYWlsaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PntpLmNoaWxkcmVuJiZpLmNoaWxkcmVuLmxlbmd0aD4wP2YoamUoTSx7bmFtZTp0LmNoaWxkcmVuSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGV2cm9uUmlnaHQsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCxnLHkpKTppLmtiZHM/Lmxlbmd0aD8oZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtVHJhaWxpbmdLYmRzIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzLGkudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSkpfSIke3l9Plx4M2MhLS1bLS1ceDNlYCksR2UoaS5rYmRzLCh0LGwpPT57ZihqZShCZSxlLm1lcmdlUHJvcHMoe2tleTpsLHNpemU6aS51aT8uaXRlbVRyYWlsaW5nS2Jkc1NpemV8fGUudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHx6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIHQ/e3ZhbHVlOnR9OnQpLG51bGwsZyx5KSl9KSxmKCJceDNjIS0tXS0tXHgzZTwvc3Bhbj4iKSk6ZihzPy5oaWdobGlnaHRlZEljb24/amUoTSx7bmFtZTpzLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb25dfSl9LG51bGwsZyx5KToiXHgzYyEtLS0tXHgzZSIpfSxmLGcseSksaS5jaGlsZHJlbj8ubGVuZ3RoP2YoIlx4M2MhLS0tLVx4M2UiKTpmKGplKGUudW5yZWYoVmUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKGwsbyxuLHIpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoTSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldO28oamUoTSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLG4scikpfSksXzoyfSxnLHkpKSxmKCI8L3NwYW4+Iil9LGYsZyx5KX0pLF86Mn0seSxiKSl9KSxfOjJ9LGcseSkpfSksXzoyfSxkLGYpKX0pLF86M30scykpLHIoamUoZS51bnJlZihQZSksZS5tZXJnZVByb3BzKHsuLi5lLnVucmVmKE4pLC4uLmwuJGF0dHJzfSx7cmVmX2tleToicm9vdFJlZiIscmVmOmxlLCJzZWxlY3Rpb24tYmVoYXZpb3IiOnQuc2VsZWN0aW9uQmVoYXZpb3IsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnoudmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoUyk/LnJvb3Qsby5jbGFzc119KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgocixzLHUsZCk9PntpZighcylyZXR1cm5bdC5pbnB1dD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRGUpLHtrZXk6MCxtb2RlbFZhbHVlOmcudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmcudmFsdWU9ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKEZlLGUubWVyZ2VQcm9wcyh7dmFyaWFudDoibm9uZSIsc2l6ZTp0LnNpemV9LCJvYmplY3QiPT10eXBlb2Ygby5pbnB1dD9vLmlucHV0Ont9LHtwbGFjZWhvbGRlcjpGLnZhbHVlLGF1dG9mb2N1czp0LmF1dG9mb2N1cyxsb2FkaW5nOnQubG9hZGluZywibG9hZGluZy1pY29uIjp0LmxvYWRpbmdJY29uLCJ0cmFpbGluZy1pY29uIjp0LnRyYWlsaW5nSWNvbixpY29uOnQuaWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5zZWFyY2gsImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczp6LnZhbHVlLmlucHV0KHtjbGFzczplLnVucmVmKFMpPy5pbnB1dH0pLG9uS2V5ZG93bjplLndpdGhLZXlzKG9uQmFja3NwYWNlLFsiYmFja3NwYWNlIl0pfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbcS52YWx1ZT8ubGVuZ3RoJiYodC5iYWNrfHxuLmJhY2spP3tuYW1lOiJsZWFkaW5nIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImJhY2siLHt1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoYixlLm1lcmdlUHJvcHMoe3NpemU6dC5zaXplLGljb246dC5iYWNrSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5hcnJvd0xlZnQsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjplLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5iYWNrIil9LCJvYmplY3QiPT10eXBlb2YgdC5iYWNrP3QuYmFjazp7fSx7ImRhdGEtc2xvdCI6ImJhY2siLGNsYXNzOnoudmFsdWUuYmFjayh7Y2xhc3M6ZS51bnJlZihTKT8uYmFja30pLG9uQ2xpY2s6bmF2aWdhdGVCYWNrfSksbnVsbCwxNixbInNpemUiLCJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pXSldKSxrZXk6IjAifTp2b2lkIDAsdC5jbG9zZXx8bi5jbG9zZT97bmFtZToidHJhaWxpbmciLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W3QuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsc2l6ZTp0LnNpemUsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIHQuY2xvc2U/dC5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczp6LnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKFMpPy5jbG9zZX0pLG9uQ2xpY2s6ZT0+aSgidXBkYXRlOm9wZW4iLCExKX0pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksa2V5OiIxIn06dm9pZCAwXSksMTA0MCxbInNpemUiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImxvYWRpbmciLCJsb2FkaW5nLWljb24iLCJ0cmFpbGluZy1pY29uIiwiaWNvbiIsImNsYXNzIl0pXSksXzozfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQWUpLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6ei52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKFMpPy5jb250ZW50fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3RlLnZhbHVlPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnoudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoUyk/LnZpZXdwb3J0fSl9LFt0LnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSxlLm1lcmdlUHJvcHMoe2tleTowLG9wdGlvbnM6YWUudmFsdWUsInRleHQtY29udGVudCI6dD0+ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpfSxJLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTpsfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQSkse2l0ZW06dCxpbmRleDpsLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldKSxfOjF9LDE2LFsib3B0aW9ucyIsInRleHQtY29udGVudCJdKSk6KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3QodGUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE1lKSx7a2V5OmBncm91cC0ke3QuaWR9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOnoudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoUyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UudW5yZWYoVSkodCxvLmxhYmVsS2V5KXx8blt0LnNsb3Q/YCR7dC5zbG90fS1ncm91cC1sYWJlbGA6Imdyb3VwLWxhYmVsIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFllKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp6LnZhbHVlLmxhYmVsKHtjbGFzczplLnVucmVmKFMpPy5sYWJlbH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCIse2dyb3VwOnQsbGFiZWw6ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpLHVpOnoudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0Lml0ZW1zLChsLG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQSkse2tleTpgZ3JvdXAtJHt0LmlkfS0ke299YCxpdGVtOmwsaW5kZXg6byxncm91cDp0fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJncm91cCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6ei52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihTKT8uZW1wdHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOmcudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZy52YWx1ZT9lLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTpnLnZhbHVlfSk6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpLDEpXSldLDIpKV0pLF86M30sOCxbImNsYXNzIl0pLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOnoudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKFMpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIix7dWk6ei52YWx1ZX0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTt0LmlucHV0P3MoamUoZS51bnJlZihEZSkse21vZGVsVmFsdWU6Zy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+Zy52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgocixzLHUsZCk9PntpZighcylyZXR1cm5bZS5jcmVhdGVWTm9kZShGZSxlLm1lcmdlUHJvcHMoe3ZhcmlhbnQ6Im5vbmUiLHNpemU6dC5zaXplfSwib2JqZWN0Ij09dHlwZW9mIG8uaW5wdXQ/by5pbnB1dDp7fSx7cGxhY2Vob2xkZXI6Ri52YWx1ZSxhdXRvZm9jdXM6dC5hdXRvZm9jdXMsbG9hZGluZzp0LmxvYWRpbmcsImxvYWRpbmctaWNvbiI6dC5sb2FkaW5nSWNvbiwidHJhaWxpbmctaWNvbiI6dC50cmFpbGluZ0ljb24saWNvbjp0Lmljb258fGUudW5yZWYoaykudWkuaWNvbnMuc2VhcmNoLCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6ei52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihTKT8uaW5wdXR9KSxvbktleWRvd246ZS53aXRoS2V5cyhvbkJhY2tzcGFjZSxbImJhY2tzcGFjZSJdKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW3EudmFsdWU/Lmxlbmd0aCYmKHQuYmFja3x8bi5iYWNrKT97bmFtZToibGVhZGluZyIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJiYWNrIix7dWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVZOb2RlKGIsZS5tZXJnZVByb3BzKHtzaXplOnQuc2l6ZSxpY29uOnQuYmFja0ljb258fGUudW5yZWYoaykudWkuaWNvbnMuYXJyb3dMZWZ0LGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUuYmFjayIpfSwib2JqZWN0Ij09dHlwZW9mIHQuYmFjaz90LmJhY2s6e30seyJkYXRhLXNsb3QiOiJiYWNrIixjbGFzczp6LnZhbHVlLmJhY2soe2NsYXNzOmUudW5yZWYoUyk/LmJhY2t9KSxvbkNsaWNrOm5hdmlnYXRlQmFja30pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKV0pXSksa2V5OiIwIn06dm9pZCAwLHQuY2xvc2V8fG4uY2xvc2U/e25hbWU6InRyYWlsaW5nIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImNsb3NlIix7dWk6ei52YWx1ZX0sKCk9Plt0LmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYixlLm1lcmdlUHJvcHMoe2tleTowLHNpemU6dC5zaXplLGljb246dC5jbG9zZUljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiB0LmNsb3NlP3QuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZihTKT8uY2xvc2V9KSxvbkNsaWNrOmU9PmkoInVwZGF0ZTpvcGVuIiwhMSl9KSxudWxsLDE2LFsic2l6ZSIsImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiLCJvbkNsaWNrIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLGtleToiMSJ9OnZvaWQgMF0pLDEwNDAsWyJzaXplIiwicGxhY2Vob2xkZXIiLCJhdXRvZm9jdXMiLCJsb2FkaW5nIiwibG9hZGluZy1pY29uIiwidHJhaWxpbmctaWNvbiIsImljb24iLCJjbGFzcyJdKV07cyhqZShGZSxlLm1lcmdlUHJvcHMoe3ZhcmlhbnQ6Im5vbmUiLHNpemU6dC5zaXplfSwib2JqZWN0Ij09dHlwZW9mIG8uaW5wdXQ/by5pbnB1dDp7fSx7cGxhY2Vob2xkZXI6Ri52YWx1ZSxhdXRvZm9jdXM6dC5hdXRvZm9jdXMsbG9hZGluZzp0LmxvYWRpbmcsImxvYWRpbmctaWNvbiI6dC5sb2FkaW5nSWNvbiwidHJhaWxpbmctaWNvbiI6dC50cmFpbGluZ0ljb24saWNvbjp0Lmljb258fGUudW5yZWYoaykudWkuaWNvbnMuc2VhcmNoLCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6ei52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihTKT8uaW5wdXR9KSxvbktleWRvd246b25CYWNrc3BhY2V9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtxLnZhbHVlPy5sZW5ndGgmJih0LmJhY2t8fG4uYmFjayk/e25hbWU6ImxlYWRpbmciLGZuOmUud2l0aEN0eCgobyxpLG4scik9PntpZighaSlyZXR1cm5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJiYWNrIix7dWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVZOb2RlKGIsZS5tZXJnZVByb3BzKHtzaXplOnQuc2l6ZSxpY29uOnQuYmFja0ljb258fGUudW5yZWYoaykudWkuaWNvbnMuYXJyb3dMZWZ0LGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUuYmFjayIpfSwib2JqZWN0Ij09dHlwZW9mIHQuYmFjaz90LmJhY2s6e30seyJkYXRhLXNsb3QiOiJiYWNrIixjbGFzczp6LnZhbHVlLmJhY2soe2NsYXNzOmUudW5yZWYoUyk/LmJhY2t9KSxvbkNsaWNrOm5hdmlnYXRlQmFja30pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKV0pXTtIZShsLiRzbG90cywiYmFjayIse3VpOnoudmFsdWV9LCgpPT57aShqZShiLGUubWVyZ2VQcm9wcyh7c2l6ZTp0LnNpemUsaWNvbjp0LmJhY2tJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmFycm93TGVmdCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsImFyaWEtbGFiZWwiOmUudW5yZWYoeSkoImNvbW1hbmRQYWxldHRlLmJhY2siKX0sIm9iamVjdCI9PXR5cGVvZiB0LmJhY2s/dC5iYWNrOnt9LHsiZGF0YS1zbG90IjoiYmFjayIsY2xhc3M6ei52YWx1ZS5iYWNrKHtjbGFzczplLnVucmVmKFMpPy5iYWNrfSksb25DbGljazpuYXZpZ2F0ZUJhY2t9KSxudWxsLG4scikpfSxpLG4scil9KSxrZXk6IjAifTp2b2lkIDAsdC5jbG9zZXx8bi5jbG9zZT97bmFtZToidHJhaWxpbmciLGZuOmUud2l0aEN0eCgobyxuLHIscyk9PntpZighbilyZXR1cm5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjbG9zZSIse3VpOnoudmFsdWV9LCgpPT5bdC5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGIsZS5tZXJnZVByb3BzKHtrZXk6MCxzaXplOnQuc2l6ZSxpY29uOnQuY2xvc2VJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoeSkoImNvbW1hbmRQYWxldHRlLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgdC5jbG9zZT90LmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmNsb3NlfSksb25DbGljazplPT5pKCJ1cGRhdGU6b3BlbiIsITEpfSksbnVsbCwxNixbInNpemUiLCJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIiwib25DbGljayJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO0hlKGwuJHNsb3RzLCJjbG9zZSIse3VpOnoudmFsdWV9LCgpPT57dC5jbG9zZT9uKGplKGIsZS5tZXJnZVByb3BzKHtzaXplOnQuc2l6ZSxpY29uOnQuY2xvc2VJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoeSkoImNvbW1hbmRQYWxldHRlLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgdC5jbG9zZT90LmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmNsb3NlfSksb25DbGljazplPT5pKCJ1cGRhdGU6b3BlbiIsITEpfSksbnVsbCxyLHMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scixzKX0pLGtleToiMSJ9OnZvaWQgMF0pLHUsZCkpfSksXzozfSx1LGQpKTpzKCJceDNjIS0tLS1ceDNlIikscyhqZShlLnVucmVmKEFlKSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnoudmFsdWUuY29udGVudCh7Y2xhc3M6ZS51bnJlZihTKT8uY29udGVudH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGkscixzLHUpPT57aWYoIXIpcmV0dXJuW3RlLnZhbHVlPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnoudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoUyk/LnZpZXdwb3J0fSl9LFt0LnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSxlLm1lcmdlUHJvcHMoe2tleTowLG9wdGlvbnM6YWUudmFsdWUsInRleHQtY29udGVudCI6dD0+ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpfSxJLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTpsfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQSkse2l0ZW06dCxpbmRleDpsLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldKSxfOjF9LDE2LFsib3B0aW9ucyIsInRleHQtY29udGVudCJdKSk6KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3QodGUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE1lKSx7a2V5OmBncm91cC0ke3QuaWR9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOnoudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoUyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UudW5yZWYoVSkodCxvLmxhYmVsS2V5KXx8blt0LnNsb3Q/YCR7dC5zbG90fS1ncm91cC1sYWJlbGA6Imdyb3VwLWxhYmVsIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFllKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp6LnZhbHVlLmxhYmVsKHtjbGFzczplLnVucmVmKFMpPy5sYWJlbH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCIse2dyb3VwOnQsbGFiZWw6ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpLHVpOnoudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0Lml0ZW1zLChsLG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQSkse2tleTpgZ3JvdXAtJHt0LmlkfS0ke299YCxpdGVtOmwsaW5kZXg6byxncm91cDp0fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJncm91cCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6ei52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihTKT8uZW1wdHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOmcudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZy52YWx1ZT9lLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTpnLnZhbHVlfSk6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpLDEpXSldLDIpKV07dGUudmFsdWU/Lmxlbmd0aD8ocihgPGRpdiByb2xlPSJwcmVzZW50YXRpb24iIGRhdGEtc2xvdD0idmlld3BvcnQiIGNsYXNzPSIke1dlKHoudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoUyk/LnZpZXdwb3J0fSkpfSIke3V9PmApLHQudmlydHVhbGl6ZT9yKGplKGUudW5yZWYoemUpLGUubWVyZ2VQcm9wcyh7b3B0aW9uczphZS52YWx1ZSwidGV4dC1jb250ZW50Ijp0PT5lLnVucmVmKFUpKHQsby5sYWJlbEtleSl9LEkudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoe29wdGlvbjp0LHZpcnR1YWxJdGVtOmx9LG8saSxuKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQSkse2l0ZW06dCxpbmRleDpsLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldO28oamUoZS51bnJlZihBKSx7aXRlbTp0LGluZGV4OmwuaW5kZXh9LG51bGwsaSxuKSl9KSxfOjF9LHMsdSkpOihyKCJceDNjIS0tWy0tXHgzZSIpLEdlKHRlLnZhbHVlLHQ9PntyKGplKGUudW5yZWYoTWUpLHtrZXk6YGdyb3VwLSR7dC5pZH1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6ei52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihTKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChpLHIscyx1KT0+e2lmKCFyKXJldHVybltlLnVucmVmKFUpKHQsby5sYWJlbEtleSl8fG5bdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihZZSkse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6ei52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZihTKT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiLHtncm91cDp0LGxhYmVsOmUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSx1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSksMSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodC5pdGVtcywobCxvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEEpLHtrZXk6YGdyb3VwLSR7dC5pZH0tJHtvfWAsaXRlbTpsLGluZGV4Om8sZ3JvdXA6dH0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwiZ3JvdXAiXSkpKSwxMjgpKV07ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpfHxuW3Quc2xvdD9gJHt0LnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiXT9yKGplKGUudW5yZWYoWWUpLHsiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOnoudmFsdWUubGFiZWwoe2NsYXNzOmUudW5yZWYoUyk/LmxhYmVsfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxuLHIscyk9PntpZighbilyZXR1cm5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiLHtncm91cDp0LGxhYmVsOmUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSx1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSksMSldKV07SGUobC4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCIse2dyb3VwOnQsbGFiZWw6ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpLHVpOnoudmFsdWV9LCgpPT57bihgJHtRZShlLnVucmVmKFUpKHQsby5sYWJlbEtleSkpfWApfSxuLHIscyl9KSxfOjJ9LHMsdSkpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKCJceDNjIS0tWy0tXHgzZSIpLEdlKHQuaXRlbXMsKGwsbyk9PntyKGplKGUudW5yZWYoQSkse2tleTpgZ3JvdXAtJHt0LmlkfS0ke299YCxpdGVtOmwsaW5kZXg6byxncm91cDp0fSxudWxsLHMsdSkpfSkscigiXHgzYyEtLV0tLVx4M2UiKX0pLF86Mn0scyx1KSl9KSxyKCJceDNjIS0tXS0tXHgzZSIpKSxyKCI8L2Rpdj4iKSk6KHIoYDxkaXYgZGF0YS1zbG90PSJlbXB0eSIgY2xhc3M9IiR7V2Uoei52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihTKT8uZW1wdHl9KSl9IiR7dX0+YCksSGUobC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpnLnZhbHVlfSwoKT0+e3IoYCR7UWUoZy52YWx1ZT9lLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTpnLnZhbHVlfSk6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpfWApfSxyLHMsdSkscigiPC9kaXY+IikpfSksXzozfSx1LGQpKSxuLmZvb3Rlcj8ocyhgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoUyk/LmZvb3Rlcn0pKX0iJHtkfT5gKSxIZShsLiRzbG90cywiZm9vdGVyIix7dWk6ei52YWx1ZX0sbnVsbCxzLHUsZCkscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30scykpLHIoIlx4M2MhLS1dLS1ceDNlIil9fX0pLEp0PUd0LnNldHVwO0d0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQ29tbWFuZFBhbGV0dGUudnVlIiksSnQ/SnQodCxsKTp2b2lkIDB9O2NvbnN0IFF0PXtzbG90czp7bW9kYWw6IiIsaW5wdXQ6IiJ9LHZhcmlhbnRzOntmdWxsc2NyZWVuOntmYWxzZTp7bW9kYWw6InNtOm1heC13LTN4bCBoLWZ1bGwgc206aC1bMjhyZW1dIn19LHNpemU6e3hzOnt9LHNtOnt9LG1kOnt9LGxnOnt9LHhsOnt9fX0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCJ9fSx1c2VDb2xvck1vZGU9KCk9Pm8oImNvbG9yLW1vZGUiKS52YWx1ZSxYdD0vXlteLV0rLiotLipbXi1dKyQvLFl0PS9eW15fXSsuKl8uKlteX10rJC8sWnQ9WyJhcnJvd2xlZnQiLCJhcnJvd3JpZ2h0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJ0YWIiLCJlc2NhcGUiLCJlbnRlciIsImJhY2tzcGFjZSJdO2Z1bmN0aW9uIGNvbnZlcnRLZXlUb0NvZGUoZSl7aWYoL15bYS16XSQvaS50ZXN0KGUpKXJldHVybmBLZXkke2UudG9VcHBlckNhc2UoKX1gO2lmKC9eXGQkLy50ZXN0KGUpKXJldHVybmBEaWdpdCR7ZX1gO2lmKC9eZlxkKyQvaS50ZXN0KGUpKXJldHVybiBlLnRvVXBwZXJDYXNlKCk7cmV0dXJue3NwYWNlOiJTcGFjZSIsZW50ZXI6IkVudGVyIixlc2NhcGU6IkVzY2FwZSIsdGFiOiJUYWIiLGJhY2tzcGFjZToiQmFja3NwYWNlIixkZWxldGU6IkRlbGV0ZSIsYXJyb3d1cDoiQXJyb3dVcCIsYXJyb3dkb3duOiJBcnJvd0Rvd24iLGFycm93bGVmdDoiQXJyb3dMZWZ0IixhcnJvd3JpZ2h0OiJBcnJvd1JpZ2h0In1bZS50b0xvd2VyQ2FzZSgpXXx8ZX1jb25zdCBlYT17X19uYW1lOiJVRGFzaGJvYXJkU2VhcmNoIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczplLm1lcmdlTW9kZWxzKHtzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsb3NlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2hvcnRjdXQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im1ldGFfayJ9LHNlYXJjaERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwMH0sY29sb3JNb2RlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSx0aXRsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sb3ZlcmxheTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmdWxsc2NyZWVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGdyb3Vwczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sZnVzZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSx7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9wZW5Nb2RpZmllcnM6e30sc2VhcmNoVGVybTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2VhcmNoVGVybU1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOm9wZW4iLCJ1cGRhdGU6c2VhcmNoVGVybSJdLHNldHVwKHQse2V4cG9zZTpsfSl7Y29uc3Qgbz10LGk9ZS51c2VTbG90cygpLG49ZS51c2VNb2RlbCh0LCJvcGVuIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSxkPWUudXNlTW9kZWwodCwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KTt1c2VSdW50aW1lSG9vaygiZGFzaGJvYXJkOnNlYXJjaDp0b2dnbGUiLCgpPT57bi52YWx1ZT0hbi52YWx1ZX0pO2NvbnN0e3Q6eX09cigpLGI9dXNlQ29sb3JNb2RlKCksUz1zKCksdz11KCJkYXNoYm9hcmRTZWFyY2giLG8pLE49Zyh4KG8sInNpemUiLCJpY29uIiwicGxhY2Vob2xkZXIiLCJhdXRvZm9jdXMiLCJsb2FkaW5nIiwibG9hZGluZ0ljb24iLCJjbG9zZSIsImNsb3NlSWNvbiIsInNlYXJjaERlbGF5IikpLEk9Zyh4KG8sIm92ZXJsYXkiLCJ0cmFuc2l0aW9uIiwiY29udGVudCIsImRpc21pc3NpYmxlIiwiZnVsbHNjcmVlbiIsIm1vZGFsIiwicG9ydGFsIikpLGdldFByb3h5U2xvdHM9KCk9PkIoaSxbImNvbnRlbnQiXSksVj1lLmNvbXB1dGVkKCgpPT5zZSh7fSxvLmZ1c2Use2Z1c2VPcHRpb25zOnt9fSkpLEE9ZS5jb21wdXRlZCgoKT0+Zih7ZXh0ZW5kOmYoUXQpLC4uLlMudWk/LmRhc2hib2FyZFNlYXJjaHx8e319KSh7c2l6ZTpvLnNpemUsZnVsbHNjcmVlbjpvLmZ1bGxzY3JlZW59KSksej1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1bXTtyZXR1cm4gZS5wdXNoKC4uLm8uZ3JvdXBzfHxbXSksby5jb2xvck1vZGUmJiFiPy5mb3JjZWQmJmUucHVzaCh7aWQ6InRoZW1lIixsYWJlbDp5KCJkYXNoYm9hcmRTZWFyY2gudGhlbWUiKSxpdGVtczpbe2xhYmVsOnkoImNvbG9yTW9kZS5zeXN0ZW0iKSxpY29uOlMudWkuaWNvbnMuc3lzdGVtLGFjdGl2ZToic3lzdGVtIj09PWIucHJlZmVyZW5jZSxvblNlbGVjdDooKT0+e2IucHJlZmVyZW5jZT0ic3lzdGVtIn19LHtsYWJlbDp5KCJjb2xvck1vZGUubGlnaHQiKSxpY29uOlMudWkuaWNvbnMubGlnaHQsYWN0aXZlOiJsaWdodCI9PT1iLnByZWZlcmVuY2Usb25TZWxlY3Q6KCk9PntiLnByZWZlcmVuY2U9ImxpZ2h0In19LHtsYWJlbDp5KCJjb2xvck1vZGUuZGFyayIpLGljb246Uy51aS5pY29ucy5kYXJrLGFjdGl2ZToiZGFyayI9PT1iLnByZWZlcmVuY2Usb25TZWxlY3Q6KCk9PntiLnByZWZlcmVuY2U9ImRhcmsifX1dfSksZX0pLE09ZS51c2VUZW1wbGF0ZVJlZigiY29tbWFuZFBhbGV0dGVSZWYiKTtmdW5jdGlvbiBvblNlbGVjdChlKXtlLmRpc2FibGVkfHwobi52YWx1ZT0hMSxkLnZhbHVlPSIiKX1yZXR1cm4gZnVuY3Rpb24odCxsPXt9KXtjb25zdCBvPWUucmVmKFtdKSxjbGVhckNoYWluZWRJbnB1dD0oKT0+e28udmFsdWUuc3BsaWNlKDAsby52YWx1ZS5sZW5ndGgpfSxpPXEoY2xlYXJDaGFpbmVkSW5wdXQsbC5jaGFpbkRlbGF5Pz84MDApLHttYWNPUzpufT1TZSgpLHI9WCgpLHM9bC5sYXlvdXRJbmRlcGVuZGVudD8/ITEsdT1adC5tYXAoZT0+Y29udmVydEtleVRvQ29kZShlKSksZD1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1yLnZhbHVlPy50YWdOYW1lLHQ9ci52YWx1ZT8uY29udGVudEVkaXRhYmxlO3JldHVybiEoIklOUFVUIiE9PWUmJiJURVhUQVJFQSIhPT1lJiYidHJ1ZSIhPT10JiYicGxhaW50ZXh0LW9ubHkiIT09dCkmJihyLnZhbHVlPy5uYW1lfHwhMCl9KSxmPWUuY29tcHV0ZWQoKCk9Pk9iamVjdC5lbnRyaWVzKGUudG9WYWx1ZSh0KSkubWFwKChbZSx0XSk9PntpZighdClyZXR1cm4gbnVsbDtsZXQgbDtlLmluY2x1ZGVzKCItIikmJiItIiE9PWUmJiFlLmluY2x1ZGVzKCJfIikmJmUubWF0Y2goWHQpLGUuaW5jbHVkZXMoIl8iKSYmIl8iIT09ZSYmZS5tYXRjaChZdCk7Y29uc3Qgbz1lLmluY2x1ZGVzKCItIikmJiItIiE9PWUmJiFlLmluY2x1ZGVzKCJfIik7aWYobylsPXM/e2tleTplLnNwbGl0KCItIikubWFwKGU9PmNvbnZlcnRLZXlUb0NvZGUoZSkpLmpvaW4oIi0iKSxtZXRhS2V5OiExLGN0cmxLZXk6ITEsc2hpZnRLZXk6ITEsYWx0S2V5OiExfTp7a2V5OmUudG9Mb3dlckNhc2UoKSxtZXRhS2V5OiExLGN0cmxLZXk6ITEsc2hpZnRLZXk6ITEsYWx0S2V5OiExfTtlbHNle2NvbnN0IHQ9ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCJfIikubWFwKGU9PmUpO2xldCBvPXQuZmlsdGVyKGU9PiFbIm1ldGEiLCJjb21tYW5kIiwiY3RybCIsInNoaWZ0IiwiYWx0Iiwib3B0aW9uIl0uaW5jbHVkZXMoZSkpLmpvaW4oIl8iKTtzJiYobz1jb252ZXJ0S2V5VG9Db2RlKG8pKSxsPXtrZXk6byxtZXRhS2V5OnQuaW5jbHVkZXMoIm1ldGEiKXx8dC5pbmNsdWRlcygiY29tbWFuZCIpLGN0cmxLZXk6dC5pbmNsdWRlcygiY3RybCIpLHNoaWZ0S2V5OnQuaW5jbHVkZXMoInNoaWZ0IiksYWx0S2V5OnQuaW5jbHVkZXMoImFsdCIpfHx0LmluY2x1ZGVzKCJvcHRpb24iKX19aWYobC5jaGFpbmVkPW8sbi52YWx1ZXx8IWwubWV0YUtleXx8bC5jdHJsS2V5fHwobC5tZXRhS2V5PSExLGwuY3RybEtleT0hMCksImZ1bmN0aW9uIj09dHlwZW9mIHQ/bC5oYW5kbGVyPXQ6Im9iamVjdCI9PXR5cGVvZiB0JiYobD17Li4ubCxoYW5kbGVyOnQuaGFuZGxlcn0pLCFsLmhhbmRsZXIpcmV0dXJuIG51bGw7bGV0IGk9ITA7cmV0dXJuIHQudXNpbmdJbnB1dD8ic3RyaW5nIj09dHlwZW9mIHQudXNpbmdJbnB1dCYmKGk9ZC52YWx1ZT09PXQudXNpbmdJbnB1dCk6aT0hZC52YWx1ZSxsLmVuYWJsZWQ9aSxsfSkuZmlsdGVyKEJvb2xlYW4pKTtGKCJrZXlkb3duIixlPT57aWYoIWUua2V5KXJldHVybjtjb25zdCB0PXM/L15LZXlbQS1aXSQvaS50ZXN0KGUuY29kZSk6L15bYS16XXsxfSQvaS50ZXN0KGUua2V5KSxsPXM/dS5pbmNsdWRlcyhlLmNvZGUpOlp0LmluY2x1ZGVzKGUua2V5LnRvTG93ZXJDYXNlKCkpO2xldCBuO2lmKG8udmFsdWUucHVzaChzP2UuY29kZTplLmtleSksby52YWx1ZS5sZW5ndGg+PTIpe249by52YWx1ZS5zbGljZSgtMikuam9pbigiLSIpO2Zvcihjb25zdCB0IG9mIGYudmFsdWUuZmlsdGVyKGU9PmUuY2hhaW5lZCkpaWYodC5rZXk9PT1uKXJldHVybiB0LmVuYWJsZWQmJihlLnByZXZlbnREZWZhdWx0KCksdC5oYW5kbGVyKGUpKSx2b2lkIGNsZWFyQ2hhaW5lZElucHV0KCl9Zm9yKGNvbnN0IG8gb2YgZi52YWx1ZS5maWx0ZXIoZT0+IWUuY2hhaW5lZCkpe2lmKHMpe2lmKGUuY29kZSE9PW8ua2V5KWNvbnRpbnVlfWVsc2UgaWYoZS5rZXkudG9Mb3dlckNhc2UoKSE9PW8ua2V5KWNvbnRpbnVlO2lmKGUubWV0YUtleT09PW8ubWV0YUtleSYmZS5jdHJsS2V5PT09by5jdHJsS2V5JiZlLmFsdEtleT09PW8uYWx0S2V5JiYoISh0fHxsfHxvLnNoaWZ0S2V5fHxlLnNoaWZ0S2V5JiYoZS5tZXRhS2V5fHxlLmN0cmxLZXkpKXx8ZS5zaGlmdEtleT09PW8uc2hpZnRLZXkpKXJldHVybiBvLmVuYWJsZWQmJihlLnByZXZlbnREZWZhdWx0KCksby5oYW5kbGVyKGUpKSx2b2lkIGNsZWFyQ2hhaW5lZElucHV0KCl9aSgpfSl9KHtbby5zaG9ydGN1dF06e3VzaW5nSW5wdXQ6ITAsaGFuZGxlcjooKT0+bi52YWx1ZT0hbi52YWx1ZX19KSxsKHtjb21tYW5kUGFsZXR0ZVJlZjpNfSksKGwsaSxyLHMpPT57aShqZSh1ZSxlLm1lcmdlUHJvcHMoe29wZW46bi52YWx1ZSwib25VcGRhdGU6b3BlbiI6ZT0+bi52YWx1ZT1lLHRpdGxlOnQudGl0bGV8fGUudW5yZWYoeSkoImRhc2hib2FyZFNlYXJjaC50aXRsZSIpLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb258fGUudW5yZWYoeSkoImRhc2hib2FyZFNlYXJjaC5kZXNjcmlwdGlvbiIpfSxlLnVucmVmKEkpLHsiZGF0YS1zbG90IjoibW9kYWwiLGNsYXNzOkEudmFsdWUubW9kYWwoe2NsYXNzOltlLnVucmVmKHcpPy5tb2RhbCxvLmNsYXNzXX0pfSxzKSx7Y29udGVudDplLndpdGhDdHgoKHQsbyxpLHIpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywiY29udGVudCIsdCwoKT0+W2UuY3JlYXRlVk5vZGUoR3QsZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJjb21tYW5kUGFsZXR0ZVJlZiIscmVmOk0sInNlYXJjaC10ZXJtIjpkLnZhbHVlLCJvblVwZGF0ZTpzZWFyY2hUZXJtIjplPT5kLnZhbHVlPWV9LGUudW5yZWYoTikse2dyb3Vwczp6LnZhbHVlLGZ1c2U6Vi52YWx1ZSxpbnB1dDp7Zml4ZWQ6ITB9LHVpOmUudW5yZWYoaykoZS51bnJlZihCKShBLnZhbHVlLFsibW9kYWwiXSksZS51bnJlZih3KSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9uU2VsZWN0LCJvblVwZGF0ZTpvcGVuIjplPT5uLnZhbHVlPWV9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLCh0LG8pPT4oe25hbWU6byxmbjplLndpdGhDdHgodD0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxvLHQpXSl9KSldKSwxMDQwLFsic2VhcmNoLXRlcm0iLCJvblVwZGF0ZTpzZWFyY2hUZXJtIiwiZ3JvdXBzIiwiZnVzZSIsInVpIiwib25VcGRhdGU6b3BlbiJdKV0pXTtIZShsLiRzbG90cywiY29udGVudCIsdCwoKT0+e28oamUoR3QsZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJjb21tYW5kUGFsZXR0ZVJlZiIscmVmOk0sInNlYXJjaC10ZXJtIjpkLnZhbHVlLCJvblVwZGF0ZTpzZWFyY2hUZXJtIjplPT5kLnZhbHVlPWV9LGUudW5yZWYoTikse2dyb3Vwczp6LnZhbHVlLGZ1c2U6Vi52YWx1ZSxpbnB1dDp7Zml4ZWQ6ITB9LHVpOmUudW5yZWYoaykoZS51bnJlZihCKShBLnZhbHVlLFsibW9kYWwiXSksZS51bnJlZih3KSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9uU2VsZWN0LCJvblVwZGF0ZTpvcGVuIjplPT5uLnZhbHVlPWV9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLCh0LG8pPT4oe25hbWU6byxmbjplLndpdGhDdHgoKHQsaSxuLHIpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cyxvLHQpXTtIZShsLiRzbG90cyxvLHQsbnVsbCxpLG4scil9KX0pKV0pLGkscikpfSxvLGkscil9KSxfOjN9LHIpKX19fSx0YT1lYS5zZXR1cDtlYS5zZXR1cD0odCxsKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Rhc2hib2FyZFNlYXJjaC52dWUiKSx0YT90YSh0LGwpOnZvaWQgMH07Y29uc3QgYWE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSW1wZXJzb25hdGVNZW51IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7Y29sbGFwc2VkOnt0eXBlOkJvb2xlYW59fSxzZXR1cChsKXtjb25zdCBvPWVlKCksbj10KCkscj1BKCkscz1lLmNvbXB1dGVkKCgpPT4obi5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSkuaW5jbHVkZXMoInVzZXI6aW1wZXJzb25hdGUiKXx8bi5pc0ltcGVyc29uYXRpbmcpLHU9ZS5jb21wdXRlZCgoKT0+aShuLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLCJ1c2VyOnJlYWQiKSksZD1lLmNvbXB1dGVkKCgpPT5zLnZhbHVlfHx1LnZhbHVlKSxmPWUucmVmKCExKSxnPWUucmVmKG51bGwpLHk9ZS5yZWYoITEpLHtpdGVtczprLHE6eCxoYXNNb3JlOkIsbG9hZGluZzpTLGxvYWRNb3JlOncscmVzZXQ6Tn09T2UoZT0+by5mZXRjaEltcGVyc29uYXRpb25DYW5kaWRhdGVzKGUpLnRoZW4oZT0+ZSkse2ltbWVkaWF0ZTohMX0pO3ooZyx3LHtkaXN0YW5jZTo4MCxjYW5Mb2FkTW9yZTooKT0+Qi52YWx1ZX0pLGUud2F0Y2goZixlPT57ZSYmKE4oKSx3KCkpfSk7Y29uc3QgST1lLmNvbXB1dGVkKCgpPT5uLmlzSW1wZXJzb25hdGluZz9uLmN1cnJlbnRVc2VyPy5uYW1lPz9uLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsOm4uY3VycmVudFVzZXI/Lm5hbWU/P24uY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWw/PyJndWVzdCIpLFY9ZS5jb21wdXRlZCgoKT0+bi5pc0ltcGVyc29uYXRpbmc/ImktbHVjaWRlLXVzZXItY29nIjoiaS1sdWNpZGUtY3Vib2lkIiksUD1lLmNvbXB1dGVkKCgpPT5bW3tsYWJlbDpgUmVhbCB1c2VyOiAke24uaW1wZXJzb25hdG9yPy5uYW1lPz9uLmltcGVyc29uYXRvcj8ucHJpbWFyeV9lbWFpbH1gLGljb246ImktbHVjaWRlLXNoaWVsZCIsZGlzYWJsZWQ6ITB9LHtsYWJlbDoiU3RvcCBpbXBlcnNvbmF0aW5nIixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0Iixjb2xvcjoid2FybmluZyIsb25TZWxlY3Q6KCk9PnshYXN5bmMgZnVuY3Rpb24oKXt5LnZhbHVlPSEwO3RyeXthd2FpdCBuLnN0b3BJbXBlcnNvbmF0aW9uKCksci5hZGQoe3RpdGxlOiJTdG9wcGVkIGltcGVyc29uYXRpb24iLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtyLmFkZCh7dGl0bGU6IlN0b3AgaW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt5LnZhbHVlPSExfX0oKX19XV0pO3JldHVybih0LG8saSx1KT0+e2NvbnN0IEI9S2Usdz1iLE49TGUsQT1GZSx6PU07ZS51bnJlZihkKT8obyhgPGRpdiR7VWUodSl9PmApLGUudW5yZWYobikuaXNJbXBlcnNvbmF0aW5nP28oamUoQix7aXRlbXM6ZS51bnJlZihQKSxjb250ZW50OnthbGlnbjoiY2VudGVyIixjb2xsaXNpb25QYWRkaW5nOjEyfSx1aTp7Y29udGVudDpsLmNvbGxhcHNlZD8idy01NiI6InctKC0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgpIn19LHtkZWZhdWx0OmUud2l0aEN0eCgodCxvLGksbik9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZSh3LHtpY29uOmUudW5yZWYoViksbGFiZWw6bC5jb2xsYXBzZWQ/dm9pZCAwOmUudW5yZWYoSSksInRyYWlsaW5nLWljb24iOmwuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGJsb2NrOiIiLHNxdWFyZTpsLmNvbGxhcHNlZCxjbGFzczoiZGF0YS1bc3RhdGU9b3Blbl06YmctZWxldmF0ZWQgcHktMiIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0ZS1tZW51LXRyaWdnZXIifSxudWxsLDgsWyJpY29uIiwibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXTtvKGplKHcse2ljb246ZS51bnJlZihWKSxsYWJlbDpsLmNvbGxhcHNlZD92b2lkIDA6ZS51bnJlZihJKSwidHJhaWxpbmctaWNvbiI6bC5jb2xsYXBzZWQ/dm9pZCAwOiJpLWx1Y2lkZS1jaGV2cm9ucy11cC1kb3duIixjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCBweS0yIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9LCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRlLW1lbnUtdHJpZ2dlciJ9LG51bGwsaSxuKSl9KSxfOjF9LGkpKTplLnVucmVmKHMpP28oamUoTix7b3BlbjplLnVucmVmKGYpLCJvblVwZGF0ZTpvcGVuIjp0PT5lLmlzUmVmKGYpP2YudmFsdWU9dDpudWxsLGNvbnRlbnQ6e2FsaWduOiJjZW50ZXIiLGNvbGxpc2lvblBhZGRpbmc6MTJ9fSx7Y29udGVudDplLndpdGhDdHgoKHQsbyxpLHMpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOihsLmNvbGxhcHNlZCwidy01NiIpfSxbZS5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCJ9LFtlLmNyZWF0ZVZOb2RlKEEse21vZGVsVmFsdWU6ZS51bnJlZih4KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dD0+ZS5pc1JlZih4KT94LnZhbHVlPXQ6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggdXNlcnPigKYiLHNpemU6InNtIixhdXRvZm9jdXM6IiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksZS5jcmVhdGVWTm9kZSgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjpnLGNsYXNzOiJtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8gcHktMSJ9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKGspLHQ9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImJ1dHRvbiIse2tleTp0LmlkLHR5cGU6ImJ1dHRvbiIsZGlzYWJsZWQ6ISF0LmlzX3N1c3BlbmRlZHx8ZS51bnJlZih5KSxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdy1mdWxsIHB4LTMgcHktMS41IHRleHQtc20gaG92ZXI6YmctZWxldmF0ZWQgY3Vyc29yLXBvaW50ZXIgdGV4dC1sZWZ0IGRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIixvbkNsaWNrOmU9PmFzeW5jIGZ1bmN0aW9uKGUsdCl7eS52YWx1ZT0hMCxmLnZhbHVlPSExO3RyeXthd2FpdCBuLnN0YXJ0SW1wZXJzb25hdGlvbihlKSxyLmFkZCh7dGl0bGU6YE5vdyBpbXBlcnNvbmF0aW5nICR7dH1gLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtyLmFkZCh7dGl0bGU6IkltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz90Py5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7eS52YWx1ZT0hMX19KHQuaWQsdC5uYW1lPz90LnByaW1hcnlfZW1haWwpfSxbZS5jcmVhdGVWTm9kZSh6LHtuYW1lOiJpLWx1Y2lkZS11c2VyIixjbGFzczoic2l6ZS00IHNocmluay0wIn0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidHJ1bmNhdGUifSxlLnRvRGlzcGxheVN0cmluZyh0Lm5hbWU/P3QudXNlcm5hbWU/P3QucHJpbWFyeV9lbWFpbCksMSldLDgsWyJkaXNhYmxlZCIsIm9uQ2xpY2siXSkpKSwxMjgpKSxlLnVucmVmKFMpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJweC0zIHB5LTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIExvYWRpbmfigKYgIikpOjA9PT1lLnVucmVmKGspLmxlbmd0aD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyB1c2VycyBhdmFpbGFibGUuICIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDUxMildLDIpXTtvKGA8ZGl2IGNsYXNzPSIke1dlKChsLmNvbGxhcHNlZCwidy01NiIpKX0iJHtzfT48ZGl2IGNsYXNzPSJwLTIgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQiJHtzfT5gKSxvKGplKEEse21vZGVsVmFsdWU6ZS51bnJlZih4KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dD0+ZS5pc1JlZih4KT94LnZhbHVlPXQ6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggdXNlcnPigKYiLHNpemU6InNtIixhdXRvZm9jdXM6IiJ9LG51bGwsaSxzKSksbyhgPC9kaXY+PGRpdiBjbGFzcz0ibWF4LWgtNjAgb3ZlcmZsb3cteS1hdXRvIHB5LTEiJHtzfT5ceDNjIS0tWy0tXHgzZWApLEdlKGUudW5yZWYoayksdD0+e28oYDxidXR0b24gdHlwZT0iYnV0dG9uIiR7WGUoISF0LmlzX3N1c3BlbmRlZHx8ZS51bnJlZih5KSk/IiBkaXNhYmxlZCI6IiJ9IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQiJHtzfT5gKSxvKGplKHose25hbWU6ImktbHVjaWRlLXVzZXIiLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAifSxudWxsLGkscykpLG8oYDxzcGFuIGNsYXNzPSJ0cnVuY2F0ZSIke3N9PiR7UWUodC5uYW1lPz90LnVzZXJuYW1lPz90LnByaW1hcnlfZW1haWwpfTwvc3Bhbj48L2J1dHRvbj5gKX0pLG8oIlx4M2MhLS1dLS1ceDNlIiksZS51bnJlZihTKT9vKGA8ZGl2IGNsYXNzPSJweC0zIHB5LTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQiJHtzfT4gTG9hZGluZ+KApiA8L2Rpdj5gKTowPT09ZS51bnJlZihrKS5sZW5ndGg/byhgPGRpdiBjbGFzcz0icHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIiR7c30+IE5vIHVzZXJzIGF2YWlsYWJsZS4gPC9kaXY+YCk6bygiXHgzYyEtLS0tXHgzZSIpLG8oIjwvZGl2PjwvZGl2PiIpfSksZGVmYXVsdDplLndpdGhDdHgoKHQsbyxpLG4pPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUodyx7aWNvbjplLnVucmVmKFYpLGxhYmVsOmwuY29sbGFwc2VkP3ZvaWQgMDplLnVucmVmKEkpLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCBweS0yIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9LCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRlLW1lbnUtdHJpZ2dlciJ9LG51bGwsOCxbImljb24iLCJsYWJlbCIsInRyYWlsaW5nLWljb24iLCJzcXVhcmUiXSldO28oamUodyx7aWNvbjplLnVucmVmKFYpLGxhYmVsOmwuY29sbGFwc2VkP3ZvaWQgMDplLnVucmVmKEkpLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCBweS0yIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9LCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRlLW1lbnUtdHJpZ2dlciJ9LG51bGwsaSxuKSl9KSxfOjF9LGkpKToobygnPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiBweS0yIiBkYXRhLXRlc3RpZD0iYnJhbmQtbWFyayI+JyksbyhqZSh6LHtuYW1lOiJpLWx1Y2lkZS1jdWJvaWQiLGNsYXNzOiJzaXplLTUgdGV4dC1wcmltYXJ5In0sbnVsbCxpKSksbC5jb2xsYXBzZWQ/bygiXHgzYyEtLS0tXHgzZSIpOm8oJzxzcGFuIGNsYXNzPSJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiPk51eHQgVGVtcGxhdGU8L3NwYW4+JyksbygiPC9kaXY+IikpLG8oIjwvZGl2PiIpKToobyhgPGRpdiR7VWUoZS5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiBweS0yIiwiZGF0YS10ZXN0aWQiOiJicmFuZC1tYXJrIn0sdSkpfT5gKSxvKGplKHose25hbWU6ImktbHVjaWRlLWN1Ym9pZCIsY2xhc3M6InNpemUtNSB0ZXh0LXByaW1hcnkifSxudWxsLGkpKSxsLmNvbGxhcHNlZD9vKCJceDNjIS0tLS1ceDNlIik6bygnPHNwYW4gY2xhc3M9ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCI+TnV4dCBUZW1wbGF0ZTwvc3Bhbj4nKSxvKCI8L2Rpdj4iKSl9fX0pLGxhPWFhLnNldHVwO2FhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL0ltcGVyc29uYXRlL0ltcGVyc29uYXRlTWVudS52dWUiKSxsYT9sYSh0LGwpOnZvaWQgMH07Y29uc3Qgb2E9T2JqZWN0LmFzc2lnbihhYSx7X19uYW1lOiJJbXBlcnNvbmF0ZU1lbnUifSksaWE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiT3JnYW5pemF0aW9uTWVudSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2NvbGxhcHNlZDp7dHlwZTpCb29sZWFufX0sc2V0dXAobCl7Y29uc3Qgbz10KCksaT10ZSgpLG49QSgpLHI9UCgpLHM9ZS5yZWYobnVsbCkse2l0ZW1zOnUscTpkLGhhc01vcmU6Zixsb2FkaW5nOmcsbG9hZE1vcmU6eSxyZXNldDprfT1PZShlPT5pLmZldGNoT3JnYW5pemF0aW9ucyhlKS50aGVuKGU9PmUpLHtpbW1lZGlhdGU6ITF9KTt6KHMseSx7ZGlzdGFuY2U6ODAsY2FuTG9hZE1vcmU6KCk9PmYudmFsdWV9KTtjb25zdCB4PWUucmVmKCExKSxCPWUucmVmKCExKSxTPWUucmVmKCExKSx3PWUucmVmKCIiKTthc3luYyBmdW5jdGlvbiBzdWJtaXRDcmVhdGUoKXtjb25zdCBlPXcudmFsdWUudHJpbSgpO2lmKGUpe1MudmFsdWU9ITA7dHJ5e2NvbnN0IHQ9YXdhaXQgaS5jcmVhdGVPcmdhbml6YXRpb24oe25hbWU6ZX0pO24uYWRkKHt0aXRsZToiT3JnYW5pemF0aW9uIGNyZWF0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pLEIudmFsdWU9ITEseC52YWx1ZT0hMSxhd2FpdCBvLnN3aXRjaE9yZ2FuaXphdGlvbih0LmlkKX1jYXRjaChlKXtjb25zdCB0PWU7bi5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gY3JlYXRlIG9yZ2FuaXphdGlvbiIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1MudmFsdWU9ITF9fX1lLndhdGNoKHgsZT0+e2UmJihrKCkseSgpKX0pLGUud2F0Y2goQixlPT57ZXx8KHcudmFsdWU9IiIpfSk7Y29uc3QgTj1lLmNvbXB1dGVkKCgpPT51LnZhbHVlLmZpbmQoZT0+ZS5pZD09PW8uYWN0aXZlT3JnYW5pemF0aW9uSWQpPy5uYW1lPz9vLmN1cnJlbnRVc2VyPy5uYW1lPz8iT3JnYW5pemF0aW9uIik7cmV0dXJuKHQsaSxuLGYpPT57Y29uc3QgeT1MZSxrPWIsST1GZSxWPU0sQT11ZSx6PUVlO2koIlx4M2MhLS1bLS1ceDNlIiksaShqZSh5LHtvcGVuOmUudW5yZWYoeCksIm9uVXBkYXRlOm9wZW4iOnQ9PmUuaXNSZWYoeCk/eC52YWx1ZT10Om51bGwsY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn19LHtjb250ZW50OmUud2l0aEN0eCgodCxsLGksbik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InctNTYgZmxleCBmbGV4LWNvbCJ9LFtlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoicC0yIGJvcmRlci1iIGJvcmRlci1kZWZhdWx0In0sW2UuY3JlYXRlVk5vZGUoSSx7bW9kZWxWYWx1ZTplLnVucmVmKGQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5lLmlzUmVmKGQpP2QudmFsdWU9dDpudWxsLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IlNlYXJjaCBvcmdhbml6YXRpb25z4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLGUuY3JlYXRlVk5vZGUoImRpdiIse3JlZl9rZXk6InNjcm9sbEVsIixyZWY6cyxjbGFzczoibWF4LWgtNjAgb3ZlcmZsb3cteS1hdXRvIHB5LTEifSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoZS51bnJlZih1KSx0PT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJidXR0b24iLHtrZXk6dC5pZCx0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQiLG9uQ2xpY2s6ZT0+YXN5bmMgZnVuY3Rpb24oZSl7ZSE9PW8uYWN0aXZlT3JnYW5pemF0aW9uSWQmJih4LnZhbHVlPSExLGF3YWl0IG8uc3dpdGNoT3JnYW5pemF0aW9uKGUpKX0odC5pZCl9LFtlLmNyZWF0ZVZOb2RlKFYse25hbWU6dC5pZD09PWUudW5yZWYobykuYWN0aXZlT3JnYW5pemF0aW9uSWQ/ImktbHVjaWRlLWNoZWNrIjoiaS1sdWNpZGUtYnVpbGRpbmciLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAifSxudWxsLDgsWyJuYW1lIl0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidHJ1bmNhdGUifSxlLnRvRGlzcGxheVN0cmluZyh0Lm5hbWUpLDEpXSw4LFsib25DbGljayJdKSkpLDEyOCkpLGUudW5yZWYoZyk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsY2xhc3M6InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCJ9LCIgTG9hZGluZ+KApiAiKSk6MCE9PWUudW5yZWYodSkubGVuZ3RofHxlLnVucmVmKGcpP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyBvcmdhbml6YXRpb25zIGZvdW5kLiAiKSldLDUxMiksZS5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImJvcmRlci10IGJvcmRlci1kZWZhdWx0IHAtMSJ9LFtlLmNyZWF0ZVZOb2RlKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgcm91bmRlZCIsb25DbGljazp0PT57eC52YWx1ZT0hMSxlLnVucmVmKHIpLnB1c2goIi9vcmdhbml6YXRpb24iKX19LFtlLmNyZWF0ZVZOb2RlKFYse25hbWU6ImktbHVjaWRlLXNldHRpbmdzIixjbGFzczoic2l6ZS00IHNocmluay0wIHRleHQtbXV0ZWQifSksZS5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIk1hbmFnZSBvcmdhbml6YXRpb24iKV0sOCxbIm9uQ2xpY2siXSksZS5jcmVhdGVWTm9kZSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdy1mdWxsIHB4LTMgcHktMS41IHRleHQtc20gaG92ZXI6YmctZWxldmF0ZWQgY3Vyc29yLXBvaW50ZXIgdGV4dC1sZWZ0IHJvdW5kZWQiLG9uQ2xpY2s6ZT0+e3gudmFsdWU9ITEsQi52YWx1ZT0hMH19LFtlLmNyZWF0ZVZOb2RlKFYse25hbWU6ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAgdGV4dC1tdXRlZCJ9KSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiQ3JlYXRlIG9yZ2FuaXphdGlvbiIpXSw4LFsib25DbGljayJdKV0pXSldO2woYDxkaXYgY2xhc3M9InctNTYgZmxleCBmbGV4LWNvbCIke259PjxkaXYgY2xhc3M9InAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCIke259PmApLGwoamUoSSx7bW9kZWxWYWx1ZTplLnVucmVmKGQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5lLmlzUmVmKGQpP2QudmFsdWU9dDpudWxsLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IlNlYXJjaCBvcmdhbml6YXRpb25z4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLGksbikpLGwoYDwvZGl2PjxkaXYgY2xhc3M9Im1heC1oLTYwIG92ZXJmbG93LXktYXV0byBweS0xIiR7bn0+XHgzYyEtLVstLVx4M2VgKSxHZShlLnVucmVmKHUpLHQ9PntsKGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCIke259PmApLGwoamUoVix7bmFtZTp0LmlkPT09ZS51bnJlZihvKS5hY3RpdmVPcmdhbml6YXRpb25JZD8iaS1sdWNpZGUtY2hlY2siOiJpLWx1Y2lkZS1idWlsZGluZyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCJ9LG51bGwsaSxuKSksbChgPHNwYW4gY2xhc3M9InRydW5jYXRlIiR7bn0+JHtRZSh0Lm5hbWUpfTwvc3Bhbj48L2J1dHRvbj5gKX0pLGwoIlx4M2MhLS1dLS1ceDNlIiksZS51bnJlZihnKT9sKGA8ZGl2IGNsYXNzPSJweC0zIHB5LTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQiJHtufT4gTG9hZGluZ+KApiA8L2Rpdj5gKTowIT09ZS51bnJlZih1KS5sZW5ndGh8fGUudW5yZWYoZyk/bCgiXHgzYyEtLS0tXHgzZSIpOmwoYDxkaXYgY2xhc3M9InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCIke259PiBObyBvcmdhbml6YXRpb25zIGZvdW5kLiA8L2Rpdj5gKSxsKGA8L2Rpdj48ZGl2IGNsYXNzPSJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTEiJHtufT48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCByb3VuZGVkIiR7bn0+YCksbChqZShWLHtuYW1lOiJpLWx1Y2lkZS1zZXR0aW5ncyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCB0ZXh0LW11dGVkIn0sbnVsbCxpLG4pKSxsKGA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke259Pk1hbmFnZSBvcmdhbml6YXRpb248L3NwYW4+PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgcm91bmRlZCIke259PmApLGwoamUoVix7bmFtZToiaS1sdWNpZGUtcGx1cyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCB0ZXh0LW11dGVkIn0sbnVsbCxpLG4pKSxsKGA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke259PkNyZWF0ZSBvcmdhbml6YXRpb248L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+YCl9KSxkZWZhdWx0OmUud2l0aEN0eCgodCxvLGksbik9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZShrLHtsYWJlbDpsLmNvbGxhcHNlZD92b2lkIDA6ZS51bnJlZihOKSxpY29uOiJpLWx1Y2lkZS1idWlsZGluZyIsInRyYWlsaW5nLWljb24iOmwuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixibG9jazoiIixzcXVhcmU6bC5jb2xsYXBzZWQsY2xhc3M6ImRhdGEtW3N0YXRlPW9wZW5dOmJnLWVsZXZhdGVkIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9fSxudWxsLDgsWyJsYWJlbCIsInRyYWlsaW5nLWljb24iLCJzcXVhcmUiXSldO28oamUoayx7bGFiZWw6bC5jb2xsYXBzZWQ/dm9pZCAwOmUudW5yZWYoTiksaWNvbjoiaS1sdWNpZGUtYnVpbGRpbmciLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifX0sbnVsbCxpLG4pKX0pLF86MX0sbikpLGkoamUoQSx7b3BlbjplLnVucmVmKEIpLCJvblVwZGF0ZTpvcGVuIjp0PT5lLmlzUmVmKEIpP0IudmFsdWU9dDpudWxsLHRpdGxlOiJDcmVhdGUgb3JnYW5pemF0aW9uIn0se2JvZHk6ZS53aXRoQ3R4KCh0LGwsbyxpKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKHose2xhYmVsOiJOYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShJLHttb2RlbFZhbHVlOmUudW5yZWYodyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnQ9PmUuaXNSZWYodyk/dy52YWx1ZT10Om51bGwscGxhY2Vob2xkZXI6ImUuZy4gQWNtZSBDb3JwIixjbGFzczoidy1mdWxsIixhdXRvZm9jdXM6IiIsb25LZXlkb3duOmUud2l0aEtleXMoc3VibWl0Q3JlYXRlLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSldO2woamUoeix7bGFiZWw6Ik5hbWUiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoSSx7bW9kZWxWYWx1ZTplLnVucmVmKHcpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5lLmlzUmVmKHcpP3cudmFsdWU9dDpudWxsLHBsYWNlaG9sZGVyOiJlLmcuIEFjbWUgQ29ycCIsY2xhc3M6InctZnVsbCIsYXV0b2ZvY3VzOiIiLG9uS2V5ZG93bjplLndpdGhLZXlzKHN1Ym1pdENyZWF0ZSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChqZShJLHttb2RlbFZhbHVlOmUudW5yZWYodyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnQ9PmUuaXNSZWYodyk/dy52YWx1ZT10Om51bGwscGxhY2Vob2xkZXI6ImUuZy4gQWNtZSBDb3JwIixjbGFzczoidy1mdWxsIixhdXRvZm9jdXM6IiIsb25LZXlkb3duOnN1Ym1pdENyZWF0ZX0sbnVsbCxvLGkpKX0pLF86MX0sbyxpKSl9KSxmb290ZXI6ZS53aXRoQ3R4KCh0LGwsbyxpKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LFtlLmNyZWF0ZVZOb2RlKGsse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5CLnZhbHVlPSExfSxudWxsLDgsWyJvbkNsaWNrIl0pLGUuY3JlYXRlVk5vZGUoayx7bGFiZWw6IkNyZWF0ZSIsbG9hZGluZzplLnVucmVmKFMpLGRpc2FibGVkOiFlLnVucmVmKHcpLnRyaW0oKSxvbkNsaWNrOnN1Ym1pdENyZWF0ZX0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldO2woYDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIiJHtpfT5gKSxsKGplKGsse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5CLnZhbHVlPSExfSxudWxsLG8saSkpLGwoamUoayx7bGFiZWw6IkNyZWF0ZSIsbG9hZGluZzplLnVucmVmKFMpLGRpc2FibGVkOiFlLnVucmVmKHcpLnRyaW0oKSxvbkNsaWNrOnN1Ym1pdENyZWF0ZX0sbnVsbCxvLGkpKSxsKCI8L2Rpdj4iKX0pLF86MX0sbikpLGkoIlx4M2MhLS1dLS1ceDNlIil9fX0pLG5hPWlhLnNldHVwO2lhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL09yZ2FuaXphdGlvbi9Pcmdhbml6YXRpb25NZW51LnZ1ZSIpLG5hP25hKHQsbCk6dm9pZCAwfTtjb25zdCByYT1PYmplY3QuYXNzaWduKGlhLHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbnUifSksc2E9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVXNlck1lbnUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntjb2xsYXBzZWQ6e3R5cGU6Qm9vbGVhbn19LHNldHVwKGwpe2NvbnN0IG89dXNlQ29sb3JNb2RlKCksaT10KCksbj1BKCkscj1lLmNvbXB1dGVkKCgpPT4oe25hbWU6aS5jdXJyZW50VXNlcj8ubmFtZT8/aS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbD8/Ikd1ZXN0IixlbWFpbDppLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsPz8iIixhdmF0YXI6aS5jdXJyZW50VXNlcj8uYXZhdGFyP3tzcmM6aS5jdXJyZW50VXNlci5hdmF0YXIsYWx0OmkuY3VycmVudFVzZXIubmFtZT8/IiJ9OnZvaWQgMH0pKTtjb25zdCBzPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVtdO3JldHVybiBlLnB1c2goW3t0eXBlOiJsYWJlbCIsbGFiZWw6ci52YWx1ZS5uYW1lLGF2YXRhcjpyLnZhbHVlLmF2YXRhcn1dKSxpLmlzSW1wZXJzb25hdGluZyYmZS5wdXNoKFt7bGFiZWw6YEJhY2sgdG8gJHtpLmltcGVyc29uYXRvcj8ubmFtZT8/aS5pbXBlcnNvbmF0b3I/LnByaW1hcnlfZW1haWw/PyJhZG1pbiJ9YCxpY29uOiJpLWx1Y2lkZS1zaGllbGQiLGNvbG9yOiJ3YXJuaW5nIixvblNlbGVjdDooKT0+eyFhc3luYyBmdW5jdGlvbigpe3RyeXthd2FpdCBpLnN0b3BJbXBlcnNvbmF0aW9uKCksbi5hZGQoe3RpdGxlOiJTdG9wcGVkIGltcGVyc29uYXRpb24iLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtuLmFkZCh7dGl0bGU6IlN0b3AgaW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9fSgpfX1dKSxlLnB1c2goW3tsYWJlbDoiUHJvZmlsZSIsaWNvbjoiaS1sdWNpZGUtdXNlciIsdG86Ii9zZXR0aW5ncyJ9XSksZS5wdXNoKFt7bGFiZWw6IkFwcGVhcmFuY2UiLGljb246ImktbHVjaWRlLXN1bi1tb29uIixjaGlsZHJlbjpbe2xhYmVsOiJMaWdodCIsaWNvbjoiaS1sdWNpZGUtc3VuIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDoibGlnaHQiPT09by52YWx1ZSxvblNlbGVjdChlKXtlLnByZXZlbnREZWZhdWx0KCksby5wcmVmZXJlbmNlPSJsaWdodCJ9fSx7bGFiZWw6IkRhcmsiLGljb246ImktbHVjaWRlLW1vb24iLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOiJkYXJrIj09PW8udmFsdWUsb25TZWxlY3QoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLG8ucHJlZmVyZW5jZT0iZGFyayJ9fSx7bGFiZWw6IlN5c3RlbSIsaWNvbjoiaS1sdWNpZGUtbGFwdG9wIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDoic3lzdGVtIj09PW8ucHJlZmVyZW5jZSxvblNlbGVjdChlKXtlLnByZXZlbnREZWZhdWx0KCksby5wcmVmZXJlbmNlPSJzeXN0ZW0ifX1dfV0pLGUucHVzaChbe2xhYmVsOiJEb2N1bWVudGF0aW9uIixpY29uOiJpLWx1Y2lkZS1ib29rLW9wZW4iLHRvOiJodHRwczovL3VpLm51eHQuY29tL2RvY3MvZ2V0dGluZy1zdGFydGVkL2luc3RhbGxhdGlvbi9udXh0Iix0YXJnZXQ6Il9ibGFuayJ9LHtsYWJlbDoiR2l0SHViIHJlcG9zaXRvcnkiLGljb246Imktc2ltcGxlLWljb25zLWdpdGh1YiIsdG86Imh0dHBzOi8vZ2l0aHViLmNvbS90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUiLHRhcmdldDoiX2JsYW5rIn0se2xhYmVsOiJMb2cgb3V0IixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0IixvblNlbGVjdDooKT0+eyFhc3luYyBmdW5jdGlvbigpe3RyeXthd2FpdCBpLmxvZ291dCgpfWZpbmFsbHl7YXdhaXQgUSgiL2F1dGgvbG9naW4iKX19KCl9fV0pLGV9KTtyZXR1cm4odCxvLGksbik9Pntjb25zdCB1PWI7byhqZShLZSxlLm1lcmdlUHJvcHMoe2l0ZW1zOmUudW5yZWYocyksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn0sdWk6e2NvbnRlbnQ6bC5jb2xsYXBzZWQ/InctNTYiOiJ3LSgtLXJla2EtZHJvcGRvd24tbWVudS10cmlnZ2VyLXdpZHRoKSJ9fSxuKSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbyxpLG4pPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUodSxlLm1lcmdlUHJvcHMoZS51bnJlZihyKS5hdmF0YXI/e2F2YXRhcjplLnVucmVmKHIpLmF2YXRhcn06e2ljb246ImktbHVjaWRlLXVzZXIifSx7bGFiZWw6bC5jb2xsYXBzZWQ/dm9pZCAwOmUudW5yZWYocikubmFtZSwidHJhaWxpbmctaWNvbiI6bC5jb2xsYXBzZWQ/dm9pZCAwOiJpLWx1Y2lkZS1jaGV2cm9ucy11cC1kb3duIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGJsb2NrOiIiLHNxdWFyZTpsLmNvbGxhcHNlZCxjbGFzczoiZGF0YS1bc3RhdGU9b3Blbl06YmctZWxldmF0ZWQiLHVpOnt0cmFpbGluZ0ljb246InRleHQtZGltbWVkIn0sImRhdGEtdGVzdGlkIjoidXNlci1tZW51LXRyaWdnZXIifSksbnVsbCwxNixbImxhYmVsIiwidHJhaWxpbmctaWNvbiIsInNxdWFyZSJdKV07byhqZSh1LGUubWVyZ2VQcm9wcyhlLnVucmVmKHIpLmF2YXRhcj97YXZhdGFyOmUudW5yZWYocikuYXZhdGFyfTp7aWNvbjoiaS1sdWNpZGUtdXNlciJ9LHtsYWJlbDpsLmNvbGxhcHNlZD92b2lkIDA6ZS51bnJlZihyKS5uYW1lLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJ1c2VyLW1lbnUtdHJpZ2dlciJ9KSxudWxsLGksbikpfSksXzoxfSxpKSl9fX0pLGNhPXNhLnNldHVwO3NhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL1VzZXIvVXNlck1lbnUudnVlIiksY2E/Y2EodCxsKTp2b2lkIDB9O2NvbnN0IHVhPU9iamVjdC5hc3NpZ24oc2Ese19fbmFtZToiVXNlck1lbnUifSksZGE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiZGVmYXVsdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobyl7Y29uc3Qgbj1lLnJlZighMSkscj11c2VDb2xvck1vZGUoKSxzPXQoKSx1PVJlKCk7ZnVuY3Rpb24gc2V0VGhlbWUoZSl7ci5wcmVmZXJlbmNlPWV9Y29uc3QgZD1lLmNvbXB1dGVkKCgpPT5zLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKTtmdW5jdGlvbiBjYW5TaG93KGUpe2lmKCFlLmFiaWxpdHkpcmV0dXJuITA7cmV0dXJuKEFycmF5LmlzQXJyYXkoZS5hYmlsaXR5KT9lLmFiaWxpdHk6W2UuYWJpbGl0eV0pLnNvbWUoZT0+aShkLnZhbHVlLGUpKX1mdW5jdGlvbiB0b01lbnVJdGVtKGUpe3JldHVybntsYWJlbDplLmxhYmVsLGljb246ZS5pY29uLHRvOmUudG8sdHlwZTplLnR5cGUsZGVmYXVsdE9wZW46ZS5kZWZhdWx0T3BlbixjaGlsZHJlbjplLmNoaWxkcmVuPy5maWx0ZXIoY2FuU2hvdykubWFwKHRvTWVudUl0ZW0pLG9uU2VsZWN0KCl7ZS5vblNlbGVjdD8uKCksZS5jaGlsZHJlbj8ubGVuZ3RofHwobi52YWx1ZT0hMSl9fX1jb25zdCBmPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVsuLi51Lm5hdkl0ZW1zLnZhbHVlXS5zb3J0KChlLHQpPT5lLnByaW9yaXR5LXQucHJpb3JpdHkpO3JldHVybltbLi4uZS5maWx0ZXIoZT0+Im1haW4iPT09ZS5zZWN0aW9uJiZjYW5TaG93KGUpKS5tYXAodG9NZW51SXRlbSkse2xhYmVsOiJTZXR0aW5ncyIsaWNvbjoiaS1sdWNpZGUtc2V0dGluZ3MiLGRlZmF1bHRPcGVuOiEwLHR5cGU6InRyaWdnZXIiLGNoaWxkcmVuOmUuZmlsdGVyKGU9PiJzZXR0aW5ncyI9PT1lLnNlY3Rpb24mJmNhblNob3coZSkpLm1hcCh0b01lbnVJdGVtKX1dLGUuZmlsdGVyKGU9PiJzdWIiPT09ZS5zZWN0aW9uJiZjYW5TaG93KGUpKS5tYXAodG9NZW51SXRlbSldfSksZz1lLmNvbXB1dGVkKCgpPT5be2lkOiJnb3RvIixsYWJlbDoiR28gdG8iLGl0ZW1zOmYudmFsdWUuZmxhdCgpLmZsYXRNYXAoZT0+ZS5jaGlsZHJlbj8ubGVuZ3RoP2UuY2hpbGRyZW46W2VdKX0se2lkOiJ0aGVtZSIsbGFiZWw6IlRoZW1lIixpdGVtczpbe2xhYmVsOiJTeXN0ZW0iLGljb246ImktbHVjaWRlLW1vbml0b3IiLG9uU2VsZWN0OigpPT5zZXRUaGVtZSgic3lzdGVtIil9LHtsYWJlbDoiTGlnaHQiLGljb246ImktbHVjaWRlLXN1biIsb25TZWxlY3Q6KCk9PnNldFRoZW1lKCJsaWdodCIpfSx7bGFiZWw6IkRhcmsiLGljb246ImktbHVjaWRlLW1vb24iLG9uU2VsZWN0OigpPT5zZXRUaGVtZSgiZGFyayIpfV19XSk7cmV0dXJuKHQsbyxpLHIpPT57Y29uc3Qgcz1TdCxkPV90LHk9bCxiPV9lLGs9ZWE7byhqZShldCxlLm1lcmdlUHJvcHMoe3VuaXQ6InJlbSJ9LHIpLHtkZWZhdWx0OmUud2l0aEN0eCgobCxvLGkscik9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZShzLHtpZDoiZGVmYXVsdCIsb3BlbjplLnVucmVmKG4pLCJvblVwZGF0ZTpvcGVuIjp0PT5lLmlzUmVmKG4pP24udmFsdWU9dDpudWxsLGNvbGxhcHNpYmxlOiIiLHJlc2l6YWJsZToiIixjbGFzczoiYmctZWxldmF0ZWQvMjUiLHVpOntoZWFkZXI6ImxnOmJvcmRlci1iIGxnOmJvcmRlci1kZWZhdWx0Iixmb290ZXI6ImxnOmJvcmRlci10IGxnOmJvcmRlci1kZWZhdWx0Iixib2R5OiJnYXAtMiBweS00In19LHtoZWFkZXI6ZS53aXRoQ3R4KCh7Y29sbGFwc2VkOnR9KT0+W2UuY3JlYXRlVk5vZGUocmEse2NvbGxhcHNlZDp0fSxudWxsLDgsWyJjb2xsYXBzZWQiXSldKSxkZWZhdWx0OmUud2l0aEN0eCgoe2NvbGxhcHNlZDp0fSk9PltlLmNyZWF0ZVZOb2RlKGQse2NvbGxhcHNlZDp0LGNsYXNzOiJiZy10cmFuc3BhcmVudCByaW5nLWRlZmF1bHQifSxudWxsLDgsWyJjb2xsYXBzZWQiXSksZS5jcmVhdGVWTm9kZShvYSx7Y29sbGFwc2VkOnR9LG51bGwsOCxbImNvbGxhcHNlZCJdKSxlLmNyZWF0ZVZOb2RlKHksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGIse2NvbGxhcHNlZDp0LGl0ZW1zOmUudW5yZWYoZilbMF0sb3JpZW50YXRpb246InZlcnRpY2FsIix0b29sdGlwOiIiLHBvcG92ZXI6IiJ9LG51bGwsOCxbImNvbGxhcHNlZCIsIml0ZW1zIl0pLGUuY3JlYXRlVk5vZGUoYix7Y29sbGFwc2VkOnQsaXRlbXM6ZS51bnJlZihmKVsxXSxvcmllbnRhdGlvbjoidmVydGljYWwiLHRvb2x0aXA6IiIscG9wb3ZlcjoiIixjbGFzczoibXQtYXV0byJ9LG51bGwsOCxbImNvbGxhcHNlZCIsIml0ZW1zIl0pXSksXzoyfSwxMDI0KV0pLGZvb3RlcjplLndpdGhDdHgoKHtjb2xsYXBzZWQ6dH0pPT5bZS5jcmVhdGVWTm9kZSh1YSx7Y29sbGFwc2VkOnR9LG51bGwsOCxbImNvbGxhcHNlZCJdKV0pLF86MX0sOCxbIm9wZW4iLCJvblVwZGF0ZTpvcGVuIl0pLGUuY3JlYXRlVk5vZGUoayx7Z3JvdXBzOmUudW5yZWYoZyl9LG51bGwsOCxbImdyb3VwcyJdKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKSxlLmNyZWF0ZVZOb2RlKHksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKHUpLm92ZXJsYXlzLnZhbHVlLHQ9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCh0LmNvbXBvbmVudCkse2tleTp0LmlkfSkpKSwxMjgpKV0pLF86MX0pXTtvKGplKHMse2lkOiJkZWZhdWx0IixvcGVuOmUudW5yZWYobiksIm9uVXBkYXRlOm9wZW4iOnQ9PmUuaXNSZWYobik/bi52YWx1ZT10Om51bGwsY29sbGFwc2libGU6IiIscmVzaXphYmxlOiIiLGNsYXNzOiJiZy1lbGV2YXRlZC8yNSIsdWk6e2hlYWRlcjoibGc6Ym9yZGVyLWIgbGc6Ym9yZGVyLWRlZmF1bHQiLGZvb3RlcjoibGc6Ym9yZGVyLXQgbGc6Ym9yZGVyLWRlZmF1bHQiLGJvZHk6ImdhcC0yIHB5LTQifX0se2hlYWRlcjplLndpdGhDdHgoKHtjb2xsYXBzZWQ6dH0sbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUocmEse2NvbGxhcHNlZDp0fSxudWxsLDgsWyJjb2xsYXBzZWQiXSldO2woamUocmEse2NvbGxhcHNlZDp0fSxudWxsLG8saSkpfSksZGVmYXVsdDplLndpdGhDdHgoKHtjb2xsYXBzZWQ6dH0sbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZCx7Y29sbGFwc2VkOnQsY2xhc3M6ImJnLXRyYW5zcGFyZW50IHJpbmctZGVmYXVsdCJ9LG51bGwsOCxbImNvbGxhcHNlZCJdKSxlLmNyZWF0ZVZOb2RlKG9hLHtjb2xsYXBzZWQ6dH0sbnVsbCw4LFsiY29sbGFwc2VkIl0pLGUuY3JlYXRlVk5vZGUoeSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoYix7Y29sbGFwc2VkOnQsaXRlbXM6ZS51bnJlZihmKVswXSxvcmllbnRhdGlvbjoidmVydGljYWwiLHRvb2x0aXA6IiIscG9wb3ZlcjoiIn0sbnVsbCw4LFsiY29sbGFwc2VkIiwiaXRlbXMiXSksZS5jcmVhdGVWTm9kZShiLHtjb2xsYXBzZWQ6dCxpdGVtczplLnVucmVmKGYpWzFdLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsdG9vbHRpcDoiIixwb3BvdmVyOiIiLGNsYXNzOiJtdC1hdXRvIn0sbnVsbCw4LFsiY29sbGFwc2VkIiwiaXRlbXMiXSldKSxfOjJ9LDEwMjQpXTtsKGplKGQse2NvbGxhcHNlZDp0LGNsYXNzOiJiZy10cmFuc3BhcmVudCByaW5nLWRlZmF1bHQifSxudWxsLG8saSkpLGwoamUob2Ese2NvbGxhcHNlZDp0fSxudWxsLG8saSkpLGwoamUoeSxudWxsLHt9LG8saSkpfSksZm9vdGVyOmUud2l0aEN0eCgoe2NvbGxhcHNlZDp0fSxsLG8saSk9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZSh1YSx7Y29sbGFwc2VkOnR9LG51bGwsOCxbImNvbGxhcHNlZCJdKV07bChqZSh1YSx7Y29sbGFwc2VkOnR9LG51bGwsbyxpKSl9KSxfOjF9LGkscikpLG8oamUoayx7Z3JvdXBzOmUudW5yZWYoZyl9LG51bGwsaSxyKSksSGUodC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsbyxpLHIpLG8oamUoeSxudWxsLHt9LGkscikpfSksXzozfSxpKSl9fX0pLHBhPWRhLnNldHVwO2RhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoImxheW91dHMvZGVmYXVsdC52dWUiKSxwYT9wYSh0LGwpOnZvaWQgMH07ZXhwb3J0e2RhIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZWZhdWx0LUNSdHRqa2thLm1qcy5tYXAK", "chunks/build/error-404-CzWfL_oH.mjs": "aW1wb3J0e2FUIGFzIGUsdSBhcyB0LHYgYXMgcixhSyBhcyBufWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7byxxIGFzIHMsZiBhcyBhfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IGk9e19fbmFtZToiZXJyb3ItNDA0IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXBwTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiTnV4dCJ9LHN0YXR1czp7dHlwZTpOdW1iZXIsZGVmYXVsdDo0MDR9LHN0YXR1c1RleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlBhZ2Ugbm90IGZvdW5kIn0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlNvcnJ5LCB0aGUgcGFnZSB5b3UgYXJlIGxvb2tpbmcgZm9yIGNvdWxkIG5vdCBiZSBmb3VuZC4ifSxiYWNrSG9tZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiR28gYmFjayBob21lIn19LHNldHVwKGUpe2NvbnN0IGk9ZTtyZXR1cm4gdCh7dGl0bGU6YCR7aS5zdGF0dXN9IC0gJHtpLnN0YXR1c1RleHR9IHwgJHtpLmFwcE5hbWV9YCxzY3JpcHQ6W3tpbm5lckhUTUw6JyFmdW5jdGlvbigpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYoIShlJiZlLnN1cHBvcnRzJiZlLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpKXtmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwnbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXVwnKSlyKGUpO25ldyBNdXRhdGlvbk9ic2VydmVyKGU9Pntmb3IoY29uc3QgbyBvZiBlKWlmKCJjaGlsZExpc3QiPT09by50eXBlKWZvcihjb25zdCBlIG9mIG8uYWRkZWROb2RlcykiTElOSyI9PT1lLnRhZ05hbWUmJiJtb2R1bGVwcmVsb2FkIj09PWUucmVsJiZyKGUpfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KX1mdW5jdGlvbiByKGUpe2lmKGUuZXApcmV0dXJuO2UuZXA9ITA7Y29uc3Qgcj1mdW5jdGlvbihlKXtjb25zdCByPXt9O3JldHVybiBlLmludGVncml0eSYmKHIuaW50ZWdyaXR5PWUuaW50ZWdyaXR5KSxlLnJlZmVycmVyUG9saWN5JiYoci5yZWZlcnJlclBvbGljeT1lLnJlZmVycmVyUG9saWN5KSwidXNlLWNyZWRlbnRpYWxzIj09PWUuY3Jvc3NPcmlnaW4/ci5jcmVkZW50aWFscz0iaW5jbHVkZSI6ImFub255bW91cyI9PT1lLmNyb3NzT3JpZ2luP3IuY3JlZGVudGlhbHM9Im9taXQiOnIuY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixyfShlKTtmZXRjaChlLmhyZWYscil9fSgpOyd9XSxzdHlsZTpbe2lubmVySFRNTDonKiw6YWZ0ZXIsOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0tdW4tZGVmYXVsdC1ib3JkZXItY29sb3IsI2U1ZTdlYik7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowO2JveC1zaXppbmc6Ym9yZGVyLWJveH06YWZ0ZXIsOmJlZm9yZXstLXVuLWNvbnRlbnQ6IiJ9aHRtbHtsaW5lLWhlaWdodDoxLjU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2wsTm90byBDb2xvciBFbW9qaTtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDstbW96LXRhYi1zaXplOjQ7dGFiLXNpemU6NDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keXtsaW5lLWhlaWdodDppbmhlcml0O21hcmdpbjowfWgxLGgye2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0fWgxLGgyLHB7bWFyZ2luOjB9Kiw6YWZ0ZXIsOmJlZm9yZXstLXVuLXJvdGF0ZTowOy0tdW4tcm90YXRlLXg6MDstLXVuLXJvdGF0ZS15OjA7LS11bi1yb3RhdGUtejowOy0tdW4tc2NhbGUteDoxOy0tdW4tc2NhbGUteToxOy0tdW4tc2NhbGUtejoxOy0tdW4tc2tldy14OjA7LS11bi1za2V3LXk6MDstLXVuLXRyYW5zbGF0ZS14OjA7LS11bi10cmFuc2xhdGUteTowOy0tdW4tdHJhbnNsYXRlLXo6MDstLXVuLXBhbi14OiA7LS11bi1wYW4teTogOy0tdW4tcGluY2gtem9vbTogOy0tdW4tc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczpwcm94aW1pdHk7LS11bi1vcmRpbmFsOiA7LS11bi1zbGFzaGVkLXplcm86IDstLXVuLW51bWVyaWMtZmlndXJlOiA7LS11bi1udW1lcmljLXNwYWNpbmc6IDstLXVuLW51bWVyaWMtZnJhY3Rpb246IDstLXVuLWJvcmRlci1zcGFjaW5nLXg6MDstLXVuLWJvcmRlci1zcGFjaW5nLXk6MDstLXVuLXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1zaGFkb3ctaW5zZXQ6IDstLXVuLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLWluc2V0OiA7LS11bi1yaW5nLW9mZnNldC13aWR0aDowcHg7LS11bi1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdW4tcmluZy13aWR0aDowcHg7LS11bi1yaW5nLWNvbG9yOnJnYmEoMTQ3LDE5NywyNTMsLjUpOy0tdW4tYmx1cjogOy0tdW4tYnJpZ2h0bmVzczogOy0tdW4tY29udHJhc3Q6IDstLXVuLWRyb3Atc2hhZG93OiA7LS11bi1ncmF5c2NhbGU6IDstLXVuLWh1ZS1yb3RhdGU6IDstLXVuLWludmVydDogOy0tdW4tc2F0dXJhdGU6IDstLXVuLXNlcGlhOiA7LS11bi1iYWNrZHJvcC1ibHVyOiA7LS11bi1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS11bi1iYWNrZHJvcC1jb250cmFzdDogOy0tdW4tYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS11bi1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS11bi1iYWNrZHJvcC1pbnZlcnQ6IDstLXVuLWJhY2tkcm9wLW9wYWNpdHk6IDstLXVuLWJhY2tkcm9wLXNhdHVyYXRlOiA7LS11bi1iYWNrZHJvcC1zZXBpYTogfSd9XX0pLCh0LGksdSxkKT0+e2NvbnN0IGM9bjtpKGA8ZGl2JHtvKHIubWVyZ2VQcm9wcyh7Y2xhc3M6ImFudGlhbGlhc2VkIGJnLXdoaXRlIGRhcms6YmctWyMwMjA0MjBdIGRhcms6dGV4dC13aGl0ZSBmb250LXNhbnMgZ3JpZCBtaW4taC1zY3JlZW4gb3ZlcmZsb3ctaGlkZGVuIHBsYWNlLWNvbnRlbnQtY2VudGVyIHRleHQtWyMwMjA0MjBdIHRyYWNraW5nLXdpZGUifSxkKSl9IGRhdGEtdi02ZDdiYWNmZj48ZGl2IGNsYXNzPSJtYXgtdy01MjBweCB0ZXh0LWNlbnRlciIgZGF0YS12LTZkN2JhY2ZmPjxoMSBjbGFzcz0iZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgbWItNCBzbTp0ZXh0LVsxMTBweF0gdGFidWxhci1udW1zIHRleHQtWzgwcHhdIiBkYXRhLXYtNmQ3YmFjZmY+JHtzKGUuc3RhdHVzKX08L2gxPjxoMiBjbGFzcz0iZm9udC1zZW1pYm9sZCBtYi0yIHNtOnRleHQtM3hsIHRleHQtMnhsIiBkYXRhLXYtNmQ3YmFjZmY+JHtzKGUuc3RhdHVzVGV4dCl9PC9oMj48cCBjbGFzcz0ibWItNCBweC0yIHRleHQtWyM2NDc0OEJdIHRleHQtbWQiIGRhdGEtdi02ZDdiYWNmZj4ke3MoZS5kZXNjcmlwdGlvbil9PC9wPjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHctZnVsbCIgZGF0YS12LTZkN2JhY2ZmPmApLGkoYShjLHt0bzoiLyIsY2xhc3M6ImZvbnQtbWVkaXVtIGhvdmVyOnRleHQtWyMwMERDODJdIHRleHQtc20gdW5kZXJsaW5lIHVuZGVybGluZS1vZmZzZXQtMyJ9LHtkZWZhdWx0OnIud2l0aEN0eCgodCxuLG8sYSk9PntpZighbilyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZS5iYWNrSG9tZSksMSldO24oYCR7cyhlLmJhY2tIb21lKX1gKX0pLF86MX0sdSkpLGkoIjwvZGl2PjwvZGl2PjwvZGl2PiIpfX19LHU9aS5zZXR1cDtpLnNldHVwPShlLHQpPT57Y29uc3Qgbj1yLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSIpLHU/dShlLHQpOnZvaWQgMH07Y29uc3QgZD1lKGksW1siX19zY29wZUlkIiwiZGF0YS12LTZkN2JhY2ZmIl1dKTtleHBvcnR7ZCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3ItNDA0LUN6V2ZMX29ILm1qcy5tYXAK", "chunks/build/error-404-styles.CB4zfhTP.mjs": "Y29uc3QgYT1bIi5ncmlkW2RhdGEtdi02ZDdiYWNmZl17ZGlzcGxheTpncmlkfS5tYi0yW2RhdGEtdi02ZDdiYWNmZl17bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItNFtkYXRhLXYtNmQ3YmFjZmZde21hcmdpbi1ib3R0b206MXJlbX0ubWF4LXctNTIwcHhbZGF0YS12LTZkN2JhY2ZmXXttYXgtd2lkdGg6NTIwcHh9Lm1pbi1oLXNjcmVlbltkYXRhLXYtNmQ3YmFjZmZde21pbi1oZWlnaHQ6MTAwdmh9LnctZnVsbFtkYXRhLXYtNmQ3YmFjZmZde3dpZHRoOjEwMCV9LmZsZXhbZGF0YS12LTZkN2JhY2ZmXXtkaXNwbGF5OmZsZXh9LnBsYWNlLWNvbnRlbnQtY2VudGVyW2RhdGEtdi02ZDdiYWNmZl17cGxhY2UtY29udGVudDpjZW50ZXJ9Lml0ZW1zLWNlbnRlcltkYXRhLXYtNmQ3YmFjZmZde2FsaWduLWl0ZW1zOmNlbnRlcn0uanVzdGlmeS1jZW50ZXJbZGF0YS12LTZkN2JhY2ZmXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5vdmVyZmxvdy1oaWRkZW5bZGF0YS12LTZkN2JhY2ZmXXtvdmVyZmxvdzpoaWRkZW59LmJnLXdoaXRlW2RhdGEtdi02ZDdiYWNmZl17LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYmctb3BhY2l0eSkpfS5weC0yW2RhdGEtdi02ZDdiYWNmZl17cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnRleHQtY2VudGVyW2RhdGEtdi02ZDdiYWNmZl17dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtXFxbODBweFxcXVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTo4MHB4fS50ZXh0LTJ4bFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1zbVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LnRleHQtXFxbXFwjMDIwNDIwXFxdW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS50ZXh0LVxcW1xcIzY0NzQ4QlxcXVtkYXRhLXYtNmQ3YmFjZmZdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDEwMCAxMTYgMTM5L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS5ob3ZlclxcOnRleHQtXFxbXFwjMDBEQzgyXFxdW2RhdGEtdi02ZDdiYWNmZl06aG92ZXJ7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMCAyMjAgMTMwL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS5mb250LW1lZGl1bVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtd2VpZ2h0OjUwMH0uZm9udC1zZW1pYm9sZFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1ub25lW2RhdGEtdi02ZDdiYWNmZl17bGluZS1oZWlnaHQ6MX0udHJhY2tpbmctd2lkZVtkYXRhLXYtNmQ3YmFjZmZde2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5zW2RhdGEtdi02ZDdiYWNmZl17Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppfS50YWJ1bGFyLW51bXNbZGF0YS12LTZkN2JhY2ZmXXstLXVuLW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdW4tb3JkaW5hbCkgdmFyKC0tdW4tc2xhc2hlZC16ZXJvKSB2YXIoLS11bi1udW1lcmljLWZpZ3VyZSkgdmFyKC0tdW4tbnVtZXJpYy1zcGFjaW5nKSB2YXIoLS11bi1udW1lcmljLWZyYWN0aW9uKX0udW5kZXJsaW5lW2RhdGEtdi02ZDdiYWNmZl17dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS51bmRlcmxpbmUtb2Zmc2V0LTNbZGF0YS12LTZkN2JhY2ZmXXt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4fS5hbnRpYWxpYXNlZFtkYXRhLXYtNmQ3YmFjZmZdey13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfUBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXsuZGFya1xcOmJnLVxcW1xcIzAyMDQyMFxcXVtkYXRhLXYtNmQ3YmFjZmZdey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi1iZy1vcGFjaXR5KSl9LmRhcmtcXDp0ZXh0LXdoaXRlW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9fUBtZWRpYShtaW4td2lkdGg6NjQwcHgpey5zbVxcOnRleHQtXFxbMTEwcHhcXF1bZGF0YS12LTZkN2JhY2ZmXXtmb250LXNpemU6MTEwcHh9LnNtXFw6dGV4dC0zeGxbZGF0YS12LTZkN2JhY2ZmXXtmb250LXNpemU6MS44NzVyZW07bGluZS1oZWlnaHQ6Mi4yNXJlbX19Il07ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9yLTQwNC1zdHlsZXMuQ0I0emZoVFAubWpzLm1hcAo=", "chunks/build/error-500-DzHtsjEu.mjs": "aW1wb3J0e2FUIGFzIGUsdSBhcyB0LHYgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e28gYXMgbixxIGFzIG99ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgcz17X19uYW1lOiJlcnJvci01MDAiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthcHBOYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJOdXh0In0sc3RhdHVzOnt0eXBlOk51bWJlcixkZWZhdWx0OjUwMH0sc3RhdHVzVGV4dDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiSW50ZXJuYWwgc2VydmVyIGVycm9yIn0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlRoaXMgcGFnZSBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZS4ifSxyZWZyZXNoOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJSZWZyZXNoIHRoaXMgcGFnZSJ9fSxzZXR1cChlKXtjb25zdCBzPWU7cmV0dXJuIHQoe3RpdGxlOmAke3Muc3RhdHVzfSAtICR7cy5zdGF0dXNUZXh0fSB8ICR7cy5hcHBOYW1lfWAsc2NyaXB0Olt7aW5uZXJIVE1MOichZnVuY3Rpb24oKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKS5yZWxMaXN0O2lmKCEoZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKSl7Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl1cJykpcihlKTtuZXcgTXV0YXRpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IG8gb2YgZSlpZigiY2hpbGRMaXN0Ij09PW8udHlwZSlmb3IoY29uc3QgZSBvZiBvLmFkZGVkTm9kZXMpIkxJTksiPT09ZS50YWdOYW1lJiYibW9kdWxlcHJlbG9hZCI9PT1lLnJlbCYmcihlKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSl9ZnVuY3Rpb24gcihlKXtpZihlLmVwKXJldHVybjtlLmVwPSEwO2NvbnN0IHI9ZnVuY3Rpb24oZSl7Y29uc3Qgcj17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJihyLmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKHIucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksInVzZS1jcmVkZW50aWFscyI9PT1lLmNyb3NzT3JpZ2luP3IuY3JlZGVudGlhbHM9ImluY2x1ZGUiOiJhbm9ueW1vdXMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJvbWl0IjpyLmNyZWRlbnRpYWxzPSJzYW1lLW9yaWdpbiIscn0oZSk7ZmV0Y2goZS5ocmVmLHIpfX0oKTsnfV0sc3R5bGU6W3tpbm5lckhUTUw6JyosOmFmdGVyLDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLXVuLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCNlNWU3ZWIpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MDtib3gtc2l6aW5nOmJvcmRlci1ib3h9OmFmdGVyLDpiZWZvcmV7LS11bi1jb250ZW50OiIifWh0bWx7bGluZS1oZWlnaHQ6MS41Oy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sLE5vdG8gQ29sb3IgRW1vamk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7LW1vei10YWItc2l6ZTo0O3RhYi1zaXplOjQ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWJvZHl7bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46MH1oMSxoMntmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0fWgxLGgyLHB7bWFyZ2luOjB9Kiw6YWZ0ZXIsOmJlZm9yZXstLXVuLXJvdGF0ZTowOy0tdW4tcm90YXRlLXg6MDstLXVuLXJvdGF0ZS15OjA7LS11bi1yb3RhdGUtejowOy0tdW4tc2NhbGUteDoxOy0tdW4tc2NhbGUteToxOy0tdW4tc2NhbGUtejoxOy0tdW4tc2tldy14OjA7LS11bi1za2V3LXk6MDstLXVuLXRyYW5zbGF0ZS14OjA7LS11bi10cmFuc2xhdGUteTowOy0tdW4tdHJhbnNsYXRlLXo6MDstLXVuLXBhbi14OiA7LS11bi1wYW4teTogOy0tdW4tcGluY2gtem9vbTogOy0tdW4tc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczpwcm94aW1pdHk7LS11bi1vcmRpbmFsOiA7LS11bi1zbGFzaGVkLXplcm86IDstLXVuLW51bWVyaWMtZmlndXJlOiA7LS11bi1udW1lcmljLXNwYWNpbmc6IDstLXVuLW51bWVyaWMtZnJhY3Rpb246IDstLXVuLWJvcmRlci1zcGFjaW5nLXg6MDstLXVuLWJvcmRlci1zcGFjaW5nLXk6MDstLXVuLXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1zaGFkb3ctaW5zZXQ6IDstLXVuLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLWluc2V0OiA7LS11bi1yaW5nLW9mZnNldC13aWR0aDowcHg7LS11bi1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdW4tcmluZy13aWR0aDowcHg7LS11bi1yaW5nLWNvbG9yOnJnYmEoMTQ3LDE5NywyNTMsLjUpOy0tdW4tYmx1cjogOy0tdW4tYnJpZ2h0bmVzczogOy0tdW4tY29udHJhc3Q6IDstLXVuLWRyb3Atc2hhZG93OiA7LS11bi1ncmF5c2NhbGU6IDstLXVuLWh1ZS1yb3RhdGU6IDstLXVuLWludmVydDogOy0tdW4tc2F0dXJhdGU6IDstLXVuLXNlcGlhOiA7LS11bi1iYWNrZHJvcC1ibHVyOiA7LS11bi1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS11bi1iYWNrZHJvcC1jb250cmFzdDogOy0tdW4tYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS11bi1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS11bi1iYWNrZHJvcC1pbnZlcnQ6IDstLXVuLWJhY2tkcm9wLW9wYWNpdHk6IDstLXVuLWJhY2tkcm9wLXNhdHVyYXRlOiA7LS11bi1iYWNrZHJvcC1zZXBpYTogfSd9XX0pLCh0LHMsYSxpKT0+e3MoYDxkaXYke24oci5tZXJnZVByb3BzKHtjbGFzczoiYW50aWFsaWFzZWQgYmctd2hpdGUgZGFyazpiZy1bIzAyMDQyMF0gZGFyazp0ZXh0LXdoaXRlIGZvbnQtc2FucyBncmlkIG1pbi1oLXNjcmVlbiBvdmVyZmxvdy1oaWRkZW4gcGxhY2UtY29udGVudC1jZW50ZXIgdGV4dC1bIzAyMDQyMF0gdHJhY2tpbmctd2lkZSJ9LGkpKX0gZGF0YS12LTI0ODQzMWQyPjxkaXYgY2xhc3M9Im1heC13LTUyMHB4IHRleHQtY2VudGVyIiBkYXRhLXYtMjQ4NDMxZDI+PGgxIGNsYXNzPSJmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSBtYi00IHNtOnRleHQtWzExMHB4XSB0YWJ1bGFyLW51bXMgdGV4dC1bODBweF0iIGRhdGEtdi0yNDg0MzFkMj4ke28oZS5zdGF0dXMpfTwvaDE+PGgyIGNsYXNzPSJmb250LXNlbWlib2xkIG1iLTIgc206dGV4dC0zeGwgdGV4dC0yeGwiIGRhdGEtdi0yNDg0MzFkMj4ke28oZS5zdGF0dXNUZXh0KX08L2gyPjxwIGNsYXNzPSJtYi00IHB4LTIgdGV4dC1bIzY0NzQ4Ql0gdGV4dC1tZCIgZGF0YS12LTI0ODQzMWQyPiR7byhlLmRlc2NyaXB0aW9uKX08L3A+PC9kaXY+PC9kaXY+YCl9fX0sYT1zLnNldHVwO3Muc2V0dXA9KGUsdCk9Pntjb25zdCBuPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci01MDAudnVlIiksYT9hKGUsdCk6dm9pZCAwfTtjb25zdCBpPWUocyxbWyJfX3Njb3BlSWQiLCJkYXRhLXYtMjQ4NDMxZDIiXV0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvci01MDAtRHpIdHNqRXUubWpzLm1hcAo=", "chunks/build/error-500-styles.M1DcLsO6.mjs": "Y29uc3QgdD1bIi5ncmlkW2RhdGEtdi0yNDg0MzFkMl17ZGlzcGxheTpncmlkfS5tYi0yW2RhdGEtdi0yNDg0MzFkMl17bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItNFtkYXRhLXYtMjQ4NDMxZDJde21hcmdpbi1ib3R0b206MXJlbX0ubWF4LXctNTIwcHhbZGF0YS12LTI0ODQzMWQyXXttYXgtd2lkdGg6NTIwcHh9Lm1pbi1oLXNjcmVlbltkYXRhLXYtMjQ4NDMxZDJde21pbi1oZWlnaHQ6MTAwdmh9LnBsYWNlLWNvbnRlbnQtY2VudGVyW2RhdGEtdi0yNDg0MzFkMl17cGxhY2UtY29udGVudDpjZW50ZXJ9Lm92ZXJmbG93LWhpZGRlbltkYXRhLXYtMjQ4NDMxZDJde292ZXJmbG93OmhpZGRlbn0uYmctd2hpdGVbZGF0YS12LTI0ODQzMWQyXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSl9LnB4LTJbZGF0YS12LTI0ODQzMWQyXXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0udGV4dC1jZW50ZXJbZGF0YS12LTI0ODQzMWQyXXt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1cXFs4MHB4XFxdW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjgwcHh9LnRleHQtMnhsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDoycmVtfS50ZXh0LVxcW1xcIzAyMDQyMFxcXVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0udGV4dC1cXFtcXCM2NDc0OEJcXF1bZGF0YS12LTI0ODQzMWQyXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0uZm9udC1zZW1pYm9sZFtkYXRhLXYtMjQ4NDMxZDJde2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1ub25lW2RhdGEtdi0yNDg0MzFkMl17bGluZS1oZWlnaHQ6MX0udHJhY2tpbmctd2lkZVtkYXRhLXYtMjQ4NDMxZDJde2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5zW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppfS50YWJ1bGFyLW51bXNbZGF0YS12LTI0ODQzMWQyXXstLXVuLW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdW4tb3JkaW5hbCkgdmFyKC0tdW4tc2xhc2hlZC16ZXJvKSB2YXIoLS11bi1udW1lcmljLWZpZ3VyZSkgdmFyKC0tdW4tbnVtZXJpYy1zcGFjaW5nKSB2YXIoLS11bi1udW1lcmljLWZyYWN0aW9uKX0uYW50aWFsaWFzZWRbZGF0YS12LTI0ODQzMWQyXXstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpiZy1cXFtcXCMwMjA0MjBcXF1bZGF0YS12LTI0ODQzMWQyXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyIDQgMzIvdmFyKC0tdW4tYmctb3BhY2l0eSkpfS5kYXJrXFw6dGV4dC13aGl0ZVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfX1AbWVkaWEobWluLXdpZHRoOjY0MHB4KXsuc21cXDp0ZXh0LVxcWzExMHB4XFxdW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjExMHB4fS5zbVxcOnRleHQtM3hsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuODc1cmVtO2xpbmUtaGVpZ2h0OjIuMjVyZW19fSJdO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvci01MDAtc3R5bGVzLk0xRGNMc082Lm1qcy5tYXAK", "chunks/build/error-JXSGuuIA.mjs": "aW1wb3J0e3ogYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gd2hlbkVycm9yKG8sZSl7cihvKX1leHBvcnR7d2hlbkVycm9yIGFzIHd9OwovLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvci1KWFNHdXVJQS5tanMubWFwCg==", "chunks/build/forbidden-eHxsGLKf.mjs": "aW1wb3J0e3YgYXMgZSx1IGFzIHQsYiBhcyBzLF8gYXMgbyxkIGFzIHIsZSBhcyBkLHQgYXMgbixQIGFzIGF9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGksZyBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IGw9e2Jhc2U6InctZnVsbCBtYXgtdy0oLS11aS1jb250YWluZXIpIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTgifSxtPXtfX25hbWU6IlVDb250YWluZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBzPXQsbz1yKCksbT1kKCJjb250YWluZXIiLHMpLGM9ZS5jb21wdXRlZCgoKT0+bih7ZXh0ZW5kOm4obCksLi4uby51aT8uY29udGFpbmVyfHx7fX0pKTtyZXR1cm4obyxyLGQsbik9PntyKGkoZS51bnJlZihhKSxlLm1lcmdlUHJvcHMoe2FzOnQuYXMsY2xhc3M6Yy52YWx1ZSh7Y2xhc3M6W2UudW5yZWYobSk/LmJhc2Uscy5jbGFzc119KX0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LHMscixkKT0+e2lmKCFzKXJldHVybltlLnJlbmRlclNsb3Qoby4kc2xvdHMsImRlZmF1bHQiKV07dShvLiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxzLHIsZCl9KSxfOjN9LGQpKX19fSxjPW0uc2V0dXA7bS5zZXR1cD0odCxzKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0NvbnRhaW5lci52dWUiKSxjP2ModCxzKTp2b2lkIDB9O2NvbnN0IHA9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiZm9yYmlkZGVuIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cDpyPT4odCh7dGl0bGU6IkZvcmJpZGRlbiJ9KSwodCxyLGQsbik9Pntjb25zdCBhPXMsdT1vO3IoaShtLGUubWVyZ2VQcm9wcyh7Y2xhc3M6InB5LTI0In0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LHMsbyxyKT0+e2lmKCFzKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibWF4LXctbWQgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTQifSxbZS5jcmVhdGVWTm9kZShhLHtuYW1lOiJpLWx1Y2lkZS1sb2NrIixjbGFzczoic2l6ZS0xMiB0ZXh0LW11dGVkIG14LWF1dG8ifSksZS5jcmVhdGVWTm9kZSgiaDEiLHtjbGFzczoidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIDQwMyDigJQgRm9yYmlkZGVuICIpLGUuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1tdXRlZCJ9LCIgWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IHRoaXMgcGFnZS4gIiksZS5jcmVhdGVWTm9kZSh1LHt0bzoiLyIsaWNvbjoiaS1sdWNpZGUtaG9tZSJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKCIgQmFjayBob21lICIpXSksXzoxfSldKV07cyhgPGRpdiBjbGFzcz0ibWF4LXctbWQgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTQiJHtyfT5gKSxzKGkoYSx7bmFtZToiaS1sdWNpZGUtbG9jayIsY2xhc3M6InNpemUtMTIgdGV4dC1tdXRlZCBteC1hdXRvIn0sbnVsbCxvLHIpKSxzKGA8aDEgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7cn0+IDQwMyDigJQgRm9yYmlkZGVuIDwvaDE+PHAgY2xhc3M9InRleHQtbXV0ZWQiJHtyfT4gWW91IGRvbiYjMzk7dCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyB0aGlzIHBhZ2UuIDwvcD5gKSxzKGkodSx7dG86Ii8iLGljb246ImktbHVjaWRlLWhvbWUifSx7ZGVmYXVsdDplLndpdGhDdHgoKHQscyxvLHIpPT57aWYoIXMpcmV0dXJuW2UuY3JlYXRlVGV4dFZOb2RlKCIgQmFjayBob21lICIpXTtzKCIgQmFjayBob21lICIpfSksXzoxfSxvLHIpKSxzKCI8L2Rpdj4iKX0pLF86MX0sZCkpfSl9KSx4PXAuc2V0dXA7cC5zZXR1cD0odCxzKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvZm9yYmlkZGVuLnZ1ZSIpLHg/eCh0LHMpOnZvaWQgMH07ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcmJpZGRlbi1lSHhzR0xLZi5tanMubWFwCg==", "chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs": "ZnVuY3Rpb24gaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCh0LGUsbil7Y29uc3QgYT1uLm9yaWdpbmFsRXZlbnQudGFyZ2V0LHM9bmV3IEN1c3RvbUV2ZW50KHQse2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMCxkZXRhaWw6bn0pO2UmJmEuYWRkRXZlbnRMaXN0ZW5lcih0LGUse29uY2U6ITB9KSxhLmRpc3BhdGNoRXZlbnQocyl9ZXhwb3J0e2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQgYXMgaH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzLm1hcAo=", "chunks/build/impersonate-CsY9wrgf.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmROYXZiYXItcGtJRWFkT0oubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9DYXJkLW5vdmdxUm9wLm1qcyI7aW1wb3J0e3YgYXMgcix1IGFzIGksaCBhcyBvLGEgYXMgbixfIGFzIGQsYiBhcyBsLGkgYXMgbSxqIGFzIGN9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIHB9ZnJvbSIuL0Rhc2hib2FyZFNlc3Npb25DYXJkLURLQzlma01lLm1qcyI7aW1wb3J0e2YgYXMgdSxxIGFzIGYsdCBhcyB4LHogYXMgZ31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtjb25zdCBoPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkltcGVyc29uYXRlQ2FuZGlkYXRlTGlzdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAoZSl7Y29uc3QgdD1jKCksYT1vKCksaT1uKCksbD1yLnJlZihbXSkscD1yLnJlZihudWxsKSxoPXIucmVmKG51bGwpO2FzeW5jIGZ1bmN0aW9uIHN0YXJ0SW1wZXJzb25hdGlvbihlKXtoLnZhbHVlPWUuaWQ7dHJ5e2F3YWl0IGEuc3RhcnRJbXBlcnNvbmF0aW9uKGUuaWQpLGkuYWRkKHt0aXRsZTpgTm93IGltcGVyc29uYXRpbmcgJHtlLm5hbWU/P2UucHJpbWFyeV9lbWFpbH1gLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtpLmFkZCh7dGl0bGU6IkltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz90Py5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7aC52YWx1ZT1udWxsfX1yZXR1cm4gbSgiaW1wZXJzb25hdGUtY2FuZGlkYXRlcyIsKCk9PmFzeW5jIGZ1bmN0aW9uKCl7cC52YWx1ZT1udWxsO3RyeXtjb25zdCBlPWF3YWl0IHQuZmV0Y2hJbXBlcnNvbmF0aW9uQ2FuZGlkYXRlcygpO2wudmFsdWU9ZT8uaXRlbXM/P1tdfWNhdGNoKGUpe2NvbnN0IHQ9ZTtwLnZhbHVlPXQ/LnN0YXR1c01lc3NhZ2U/PyJGYWlsZWQgdG8gbG9hZCB1c2VycyIsbC52YWx1ZT1bXX19KCkpLChlLHQsaSxvKT0+e2NvbnN0IG49ZDt0KHUocyxvLHtoZWFkZXI6ci53aXRoQ3R4KChlLHQsYSxzKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgQXZhaWxhYmxlIHVzZXJzICIpXTt0KGA8cCBjbGFzcz0iZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7c30+IEF2YWlsYWJsZSB1c2VycyA8L3A+YCl9KSxkZWZhdWx0OnIud2l0aEN0eCgoZSx0LHMsaSk9PntpZighdClyZXR1cm5bci51bnJlZihwKT8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LWVycm9yIiwiZGF0YS10ZXN0aWQiOiJjYW5kaWRhdGVzLWVycm9yIn0sci50b0Rpc3BsYXlTdHJpbmcoci51bnJlZihwKSksMSkpOjA9PT1yLnVucmVmKGwpLmxlbmd0aD8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBweS04In0sIiBObyBvdGhlciB1c2VycyB0byBpbXBlcnNvbmF0ZS4gIikpOihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soInVsIix7a2V5OjIsY2xhc3M6ImRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IiwiZGF0YS10ZXN0aWQiOiJjYW5kaWRhdGVzLWxpc3QifSxbKHIub3BlbkJsb2NrKCEwKSxyLmNyZWF0ZUJsb2NrKHIuRnJhZ21lbnQsbnVsbCxyLnJlbmRlckxpc3Qoci51bnJlZihsKSxlPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJsaSIse2tleTplLmlkLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweS0zIiwiZGF0YS10ZXN0aWQiOmBjYW5kaWRhdGUtJHtlLnByaW1hcnlfZW1haWx9YH0sW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4LTEifSxbci5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LW1lZGl1bSJ9LHIudG9EaXNwbGF5U3RyaW5nKGUubmFtZT8/ZS51c2VybmFtZT8/ZS5wcmltYXJ5X2VtYWlsKSwxKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LHIudG9EaXNwbGF5U3RyaW5nKGUucHJpbWFyeV9lbWFpbCksMSldKSxyLmNyZWF0ZVZOb2RlKG4se3NpemU6InNtIixpY29uOiJpLWx1Y2lkZS11c2VyLWNoZWNrIixsb2FkaW5nOnIudW5yZWYoaCk9PT1lLmlkLGRpc2FibGVkOnIudW5yZWYoYSkuaXNJbXBlcnNvbmF0aW5nfHwhIWUuaXNfc3VzcGVuZGVkLCJkYXRhLXRlc3RpZCI6YGltcGVyc29uYXRlLSR7ZS5wcmltYXJ5X2VtYWlsfWAsb25DbGljazp0PT5zdGFydEltcGVyc29uYXRpb24oZSl9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVGV4dFZOb2RlKCIgSW1wZXJzb25hdGUgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJkYXRhLXRlc3RpZCIsIm9uQ2xpY2siXSldLDgsWyJkYXRhLXRlc3RpZCJdKSkpLDEyOCkpXSkpXTtyLnVucmVmKHApP3QoYDxkaXYgY2xhc3M9InRleHQtc20gdGV4dC1lcnJvciIgZGF0YS10ZXN0aWQ9ImNhbmRpZGF0ZXMtZXJyb3IiJHtpfT4ke2Yoci51bnJlZihwKSl9PC9kaXY+YCk6MD09PXIudW5yZWYobCkubGVuZ3RoP3QoYDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHRleHQtbXV0ZWQgcHktOCIke2l9PiBObyBvdGhlciB1c2VycyB0byBpbXBlcnNvbmF0ZS4gPC9kaXY+YCk6KHQoYDx1bCBjbGFzcz0iZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiIGRhdGEtdGVzdGlkPSJjYW5kaWRhdGVzLWxpc3QiJHtpfT5ceDNjIS0tWy0tXHgzZWApLHgoci51bnJlZihsKSxlPT57dChgPGxpIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweS0zIiR7ZygiZGF0YS10ZXN0aWQiLGBjYW5kaWRhdGUtJHtlLnByaW1hcnlfZW1haWx9YCl9JHtpfT48ZGl2IGNsYXNzPSJmbGV4LTEiJHtpfT48cCBjbGFzcz0iZm9udC1tZWRpdW0iJHtpfT4ke2YoZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnByaW1hcnlfZW1haWwpfTwvcD48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIiR7aX0+JHtmKGUucHJpbWFyeV9lbWFpbCl9PC9wPjwvZGl2PmApLHQodShuLHtzaXplOiJzbSIsaWNvbjoiaS1sdWNpZGUtdXNlci1jaGVjayIsbG9hZGluZzpyLnVucmVmKGgpPT09ZS5pZCxkaXNhYmxlZDpyLnVucmVmKGEpLmlzSW1wZXJzb25hdGluZ3x8ISFlLmlzX3N1c3BlbmRlZCwiZGF0YS10ZXN0aWQiOmBpbXBlcnNvbmF0ZS0ke2UucHJpbWFyeV9lbWFpbH1gLG9uQ2xpY2s6dD0+c3RhcnRJbXBlcnNvbmF0aW9uKGUpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKGUsdCxhLHMpPT57aWYoIXQpcmV0dXJuW3IuY3JlYXRlVGV4dFZOb2RlKCIgSW1wZXJzb25hdGUgIildO3QoIiBJbXBlcnNvbmF0ZSAiKX0pLF86Mn0scyxpKSksdCgiPC9saT4iKX0pLHQoIlx4M2MhLS1dLS1ceDNlPC91bD4iKSl9KSxfOjF9LGkpKX19fSksdj1oLnNldHVwO2guc2V0dXA9KGUsdCk9Pntjb25zdCBhPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihhLm1vZHVsZXN8fChhLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL2NvbXBvbmVudHMvSW1wZXJzb25hdGUvSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0LnZ1ZSIpLHY/dihlLHQpOnZvaWQgMH07Y29uc3QgeT1PYmplY3QuYXNzaWduKGgse19fbmFtZToiSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0In0pLF89ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSW1wZXJzb25hdGVTdG9wQnV0dG9uIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCB0PW8oKSxhPW4oKSxpPXIucmVmKCExKTthc3luYyBmdW5jdGlvbiBzdG9wSW1wZXJzb25hdGlvbigpe2kudmFsdWU9ITA7dHJ5e2F3YWl0IHQuc3RvcEltcGVyc29uYXRpb24oKSxhLmFkZCh7dGl0bGU6IlN0b3BwZWQgaW1wZXJzb25hdGlvbiIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Y29uc3QgdD1lO2EuYWRkKHt0aXRsZToiU3RvcCBpbXBlcnNvbmF0aW9uIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/dD8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2kudmFsdWU9ITF9fXJldHVybihlLGEsbyxuKT0+e2NvbnN0IG09cyxjPWwscD1kO3IudW5yZWYodCkuaXNJbXBlcnNvbmF0aW5nJiZyLnVucmVmKHQpLmltcGVyc29uYXRvcj9hKHUobSxyLm1lcmdlUHJvcHMoeyJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRvci1jYXJkIn0sbikse2hlYWRlcjpyLndpdGhDdHgoKGUsdCxhLHMpPT57aWYoIXQpcmV0dXJuW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtyLmNyZWF0ZVZOb2RlKGMse25hbWU6ImktbHVjaWRlLXVzZXItY29nIixjbGFzczoic2l6ZS00IHRleHQtd2FybmluZyJ9KSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgSW1wZXJzb25hdG9yIChyZWFsIHNlc3Npb24pICIpXSldO3QoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIiR7c30+YCksdCh1KGMse25hbWU6ImktbHVjaWRlLXVzZXItY29nIixjbGFzczoic2l6ZS00IHRleHQtd2FybmluZyJ9LG51bGwsYSxzKSksdChgPHAgY2xhc3M9ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIke3N9PiBJbXBlcnNvbmF0b3IgKHJlYWwgc2Vzc2lvbikgPC9wPjwvZGl2PmApfSksZGVmYXVsdDpyLndpdGhDdHgoKGUsYSxzLG8pPT57aWYoIWEpcmV0dXJuW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQifSxbci5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFtyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIiwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0b3ItbmFtZSJ9LHIudG9EaXNwbGF5U3RyaW5nKHIudW5yZWYodCkuaW1wZXJzb25hdG9yLm5hbWUpLDEpLHIuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIiwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0b3ItZW1haWwifSxyLnRvRGlzcGxheVN0cmluZyhyLnVucmVmKHQpLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKSwxKV0pLHIuY3JlYXRlVk5vZGUocCx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0Iixsb2FkaW5nOnIudW5yZWYoaSksImRhdGEtdGVzdGlkIjoic3RvcC1pbXBlcnNvbmF0aW9uIixvbkNsaWNrOnN0b3BJbXBlcnNvbmF0aW9ufSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVRleHRWTm9kZSgiIFN0b3AgaW1wZXJzb25hdGluZyAiKV0pLF86MX0sOCxbImxvYWRpbmciXSldKV07YShgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00IiR7b30+PGRpdiR7b30+PHAgY2xhc3M9ImZvbnQtbWVkaXVtIiBkYXRhLXRlc3RpZD0iaW1wZXJzb25hdG9yLW5hbWUiJHtvfT4ke2Yoci51bnJlZih0KS5pbXBlcnNvbmF0b3IubmFtZSl9PC9wPjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQiIGRhdGEtdGVzdGlkPSJpbXBlcnNvbmF0b3ItZW1haWwiJHtvfT4ke2Yoci51bnJlZih0KS5pbXBlcnNvbmF0b3IucHJpbWFyeV9lbWFpbCl9PC9wPjwvZGl2PmApLGEodShwLHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29saWQiLGljb246ImktbHVjaWRlLWxvZy1vdXQiLGxvYWRpbmc6ci51bnJlZihpKSwiZGF0YS10ZXN0aWQiOiJzdG9wLWltcGVyc29uYXRpb24iLG9uQ2xpY2s6c3RvcEltcGVyc29uYXRpb259LHtkZWZhdWx0OnIud2l0aEN0eCgoZSx0LGEscyk9PntpZighdClyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoIiBTdG9wIGltcGVyc29uYXRpbmcgIildO3QoIiBTdG9wIGltcGVyc29uYXRpbmcgIil9KSxfOjF9LHMsbykpLGEoIjwvZGl2PiIpfSksXzoxfSxvKSk6YSgiXHgzYyEtLS0tXHgzZSIpfX19KSxDPV8uc2V0dXA7Xy5zZXR1cD0oZSx0KT0+e2NvbnN0IGE9ci51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvY29tcG9uZW50cy9JbXBlcnNvbmF0ZS9JbXBlcnNvbmF0ZVN0b3BCdXR0b24udnVlIiksQz9DKGUsdCk6dm9pZCAwfTtjb25zdCBJPU9iamVjdC5hc3NpZ24oXyx7X19uYW1lOiJJbXBlcnNvbmF0ZVN0b3BCdXR0b24ifSksYj1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbXBlcnNvbmF0ZSIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAocyl7aSh7dGl0bGU6IkltcGVyc29uYXRpb24gc2FuZGJveCJ9KTtjb25zdCBuPW8oKTtyZXR1cm4ocyxpLG8sZCk9Pntjb25zdCBsPXQsbT1hO2kodShlLHIubWVyZ2VQcm9wcyh7aWQ6ImltcGVyc29uYXRlLXNhbmRib3gifSxkKSx7aGVhZGVyOnIud2l0aEN0eCgoZSx0LGEscyk9PntpZighdClyZXR1cm5bci5jcmVhdGVWTm9kZShsLHt0aXRsZToiSW1wZXJzb25hdGlvbiBzYW5kYm94In0se2xlYWRpbmc6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShtKV0pLF86MX0pXTt0KHUobCx7dGl0bGU6IkltcGVyc29uYXRpb24gc2FuZGJveCJ9LHtsZWFkaW5nOnIud2l0aEN0eCgoZSx0LGEscyk9PntpZighdClyZXR1cm5bci5jcmVhdGVWTm9kZShtKV07dCh1KG0sbnVsbCxudWxsLGEscykpfSksXzoxfSxhLHMpKX0pLGJvZHk6ci53aXRoQ3R4KChlLHQsYSxzKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS02IG1heC13LTN4bCJ9LFtyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LFtyLmNyZWF0ZVRleHRWTm9kZSgiIEFkbWlucyB3aXRoIHRoZSAiKSxyLmNyZWF0ZVZOb2RlKCJjb2RlIixudWxsLCJ1c2VyOmltcGVyc29uYXRlIiksci5jcmVhdGVUZXh0Vk5vZGUoIiBhYmlsaXR5IGNhbiBzaWduIGluIGFzIGFueSBvdGhlciB1c2VyLiBUaGUgS1Ygc2Vzc2lvbiBzd2FwcyB0byB0aGUgdGFyZ2V0IHNvIGV2ZXJ5IGF1dGhvcml6YXRpb24gY2hlY2sgKHNlcnZlciBhbmQgY2xpZW50KSByZWZsZWN0cyB0aGUgaW1wZXJzb25hdGVkIHVzZXIuICIpXSksci5jcmVhdGVWTm9kZShwKSxyLmNyZWF0ZVZOb2RlKEkpLHIudW5yZWYobikuaXNJbXBlcnNvbmF0aW5nP3IuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHkse2tleTowfSkpXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktNiBtYXgtdy0zeGwiJHtzfT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7c30+IEFkbWlucyB3aXRoIHRoZSA8Y29kZSR7c30+dXNlcjppbXBlcnNvbmF0ZTwvY29kZT4gYWJpbGl0eSBjYW4gc2lnbiBpbiBhcyBhbnkgb3RoZXIgdXNlci4gVGhlIEtWIHNlc3Npb24gc3dhcHMgdG8gdGhlIHRhcmdldCBzbyBldmVyeSBhdXRob3JpemF0aW9uIGNoZWNrIChzZXJ2ZXIgYW5kIGNsaWVudCkgcmVmbGVjdHMgdGhlIGltcGVyc29uYXRlZCB1c2VyLiA8L3A+YCksdCh1KHAsbnVsbCxudWxsLGEscykpLHQodShJLG51bGwsbnVsbCxhLHMpKSxyLnVucmVmKG4pLmlzSW1wZXJzb25hdGluZz90KCJceDNjIS0tLS1ceDNlIik6dCh1KHksbnVsbCxudWxsLGEscykpLHQoIjwvZGl2PiIpfSksXzoxfSxvKSl9fX0pLHc9Yi5zZXR1cDtiLnNldHVwPShlLHQpPT57Y29uc3QgYT1yLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zYW5kYm94L2ltcGVyc29uYXRlLnZ1ZSIpLHc/dyhlLHQpOnZvaWQgMH07ZXhwb3J0e2IgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWltcGVyc29uYXRlLUNzWTl3cmdmLm1qcy5tYXAK", "chunks/build/index-B1POTLma.mjs": "aW1wb3J0e3YgYXMgdH1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gbWVtbyh0LGUscyl7bGV0IGksbj1zLmluaXRpYWxEZXBzPz9bXSxsPSEwO2Z1bmN0aW9uIG1lbW9pemVkRnVuY3Rpb24oKXt2YXIgbyxyLGE7cy5rZXkmJihudWxsPT0obz1zLmRlYnVnKXx8by5jYWxsKHMpKTtjb25zdCBoPXQoKTtyZXR1cm4gaC5sZW5ndGghPT1uLmxlbmd0aHx8aC5zb21lKCh0LGUpPT5uW2VdIT09dCk/KG49aCxzLmtleSYmKG51bGw9PShyPXMuZGVidWcpfHxyLmNhbGwocykpLGk9ZSguLi5oKSxzLmtleSYmKG51bGw9PShhPXMuZGVidWcpfHxhLmNhbGwocykpLCEobnVsbD09cz92b2lkIDA6cy5vbkNoYW5nZSl8fGwmJnMuc2tpcEluaXRpYWxPbkNoYW5nZXx8cy5vbkNoYW5nZShpKSxsPSExLGkpOml9cmV0dXJuIG1lbW9pemVkRnVuY3Rpb24udXBkYXRlRGVwcz10PT57bj10fSxtZW1vaXplZEZ1bmN0aW9ufWZ1bmN0aW9uIG5vdFVuZGVmaW5lZCh0LGUpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHVuZGVmaW5lZCIpO3JldHVybiB0fWNvbnN0IGRlYm91bmNlPSh0LGUscyk9PntsZXQgaTtyZXR1cm4gZnVuY3Rpb24oLi4ubil7dC5jbGVhclRpbWVvdXQoaSksaT10LnNldFRpbWVvdXQoKCk9PmUuYXBwbHkodGhpcyxuKSxzKX19LGdldFJlY3Q9dD0+e2NvbnN0e29mZnNldFdpZHRoOmUsb2Zmc2V0SGVpZ2h0OnN9PXQ7cmV0dXJue3dpZHRoOmUsaGVpZ2h0OnN9fSxkZWZhdWx0S2V5RXh0cmFjdG9yPXQ9PnQsZGVmYXVsdFJhbmdlRXh0cmFjdG9yPXQ9Pntjb25zdCBlPU1hdGgubWF4KHQuc3RhcnRJbmRleC10Lm92ZXJzY2FuLDApLHM9TWF0aC5taW4odC5lbmRJbmRleCt0Lm92ZXJzY2FuLHQuY291bnQtMSksaT1bXTtmb3IobGV0IHQ9ZTt0PD1zO3QrKylpLnB1c2godCk7cmV0dXJuIGl9LG9ic2VydmVFbGVtZW50UmVjdD0odCxlKT0+e2NvbnN0IHM9dC5zY3JvbGxFbGVtZW50O2lmKCFzKXJldHVybjtjb25zdCBpPXQudGFyZ2V0V2luZG93O2lmKCFpKXJldHVybjtjb25zdCBoYW5kbGVyPXQ9Pntjb25zdHt3aWR0aDpzLGhlaWdodDppfT10O2Uoe3dpZHRoOk1hdGgucm91bmQocyksaGVpZ2h0Ok1hdGgucm91bmQoaSl9KX07aWYoaGFuZGxlcihnZXRSZWN0KHMpKSwhaS5SZXNpemVPYnNlcnZlcilyZXR1cm4oKT0+e307Y29uc3Qgbj1uZXcgaS5SZXNpemVPYnNlcnZlcihlPT57Y29uc3QgcnVuPSgpPT57Y29uc3QgdD1lWzBdO2lmKG51bGw9PXQ/dm9pZCAwOnQuYm9yZGVyQm94U2l6ZSl7Y29uc3QgZT10LmJvcmRlckJveFNpemVbMF07aWYoZSlyZXR1cm4gdm9pZCBoYW5kbGVyKHt3aWR0aDplLmlubGluZVNpemUsaGVpZ2h0OmUuYmxvY2tTaXplfSl9aGFuZGxlcihnZXRSZWN0KHMpKX07dC5vcHRpb25zLnVzZUFuaW1hdGlvbkZyYW1lV2l0aFJlc2l6ZU9ic2VydmVyP3JlcXVlc3RBbmltYXRpb25GcmFtZShydW4pOnJ1bigpfSk7cmV0dXJuIG4ub2JzZXJ2ZShzLHtib3g6ImJvcmRlci1ib3gifSksKCk9PntuLnVub2JzZXJ2ZShzKX19LGU9e3Bhc3NpdmU6ITB9LHM9ITAsb2JzZXJ2ZUVsZW1lbnRPZmZzZXQ9KHQsaSk9Pntjb25zdCBuPXQuc2Nyb2xsRWxlbWVudDtpZighbilyZXR1cm47Y29uc3QgbD10LnRhcmdldFdpbmRvdztpZighbClyZXR1cm47bGV0IG89MDtjb25zdCByPXQub3B0aW9ucy51c2VTY3JvbGxlbmRFdmVudD8oKT0+e306ZGVib3VuY2UobCwoKT0+e2kobywhMSl9LHQub3B0aW9ucy5pc1Njcm9sbGluZ1Jlc2V0RGVsYXkpLGNyZWF0ZUhhbmRsZXI9ZT0+KCk9Pntjb25zdHtob3Jpem9udGFsOnMsaXNSdGw6bH09dC5vcHRpb25zO289cz9uLnNjcm9sbExlZnQqKGw/LTE6MSk6bi5zY3JvbGxUb3AscigpLGkobyxlKX0sYT1jcmVhdGVIYW5kbGVyKCEwKSxoPWNyZWF0ZUhhbmRsZXIoITEpO24uYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhLGUpO2NvbnN0IGM9dC5vcHRpb25zLnVzZVNjcm9sbGVuZEV2ZW50JiZzO3JldHVybiBjJiZuLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbGVuZCIsaCxlKSwoKT0+e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhKSxjJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbGVuZCIsaCl9fSxtZWFzdXJlRWxlbWVudD0odCxlLHMpPT57aWYobnVsbD09ZT92b2lkIDA6ZS5ib3JkZXJCb3hTaXplKXtjb25zdCB0PWUuYm9yZGVyQm94U2l6ZVswXTtpZih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0W3Mub3B0aW9ucy5ob3Jpem9udGFsPyJpbmxpbmVTaXplIjoiYmxvY2tTaXplIl0pfX1yZXR1cm4gdFtzLm9wdGlvbnMuaG9yaXpvbnRhbD8ib2Zmc2V0V2lkdGgiOiJvZmZzZXRIZWlnaHQiXX0sZWxlbWVudFNjcm9sbD0odCx7YWRqdXN0bWVudHM6ZT0wLGJlaGF2aW9yOnN9LGkpPT57dmFyIG4sbDtjb25zdCBvPXQrZTtudWxsPT0obD1udWxsPT0obj1pLnNjcm9sbEVsZW1lbnQpP3ZvaWQgMDpuLnNjcm9sbFRvKXx8bC5jYWxsKG4se1tpLm9wdGlvbnMuaG9yaXpvbnRhbD8ibGVmdCI6InRvcCJdOm8sYmVoYXZpb3I6c30pfTtjbGFzcyBWaXJ0dWFsaXplcntjb25zdHJ1Y3Rvcih0KXt0aGlzLnVuc3Vicz1bXSx0aGlzLnNjcm9sbEVsZW1lbnQ9bnVsbCx0aGlzLnRhcmdldFdpbmRvdz1udWxsLHRoaXMuaXNTY3JvbGxpbmc9ITEsdGhpcy5zY3JvbGxTdGF0ZT1udWxsLHRoaXMubWVhc3VyZW1lbnRzQ2FjaGU9W10sdGhpcy5pdGVtU2l6ZUNhY2hlPW5ldyBNYXAsdGhpcy5sYW5lQXNzaWdubWVudHM9bmV3IE1hcCx0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcz1bXSx0aGlzLnByZXZMYW5lcz12b2lkIDAsdGhpcy5sYW5lc0NoYW5nZWRGbGFnPSExLHRoaXMubGFuZXNTZXR0bGluZz0hMSx0aGlzLnNjcm9sbFJlY3Q9bnVsbCx0aGlzLnNjcm9sbE9mZnNldD1udWxsLHRoaXMuc2Nyb2xsRGlyZWN0aW9uPW51bGwsdGhpcy5zY3JvbGxBZGp1c3RtZW50cz0wLHRoaXMuZWxlbWVudHNDYWNoZT1uZXcgTWFwLHRoaXMubm93PSgpPT57dmFyIHQsZSxzO3JldHVybihudWxsPT0ocz1udWxsPT0oZT1udWxsPT0odD10aGlzLnRhcmdldFdpbmRvdyk/dm9pZCAwOnQucGVyZm9ybWFuY2UpP3ZvaWQgMDplLm5vdyk/dm9pZCAwOnMuY2FsbChlKSk/P0RhdGUubm93KCl9LHRoaXMub2JzZXJ2ZXI9KCgpPT57bGV0IHQ9bnVsbDtjb25zdCBnZXQ9KCk9PnR8fCh0aGlzLnRhcmdldFdpbmRvdyYmdGhpcy50YXJnZXRXaW5kb3cuUmVzaXplT2JzZXJ2ZXI/dD1uZXcgdGhpcy50YXJnZXRXaW5kb3cuUmVzaXplT2JzZXJ2ZXIodD0+e3QuZm9yRWFjaCh0PT57Y29uc3QgcnVuPSgpPT57Y29uc3QgZT10LnRhcmdldCxzPXRoaXMuaW5kZXhGcm9tRWxlbWVudChlKTtlLmlzQ29ubmVjdGVkP3RoaXMuc2hvdWxkTWVhc3VyZUR1cmluZ1Njcm9sbChzKSYmdGhpcy5yZXNpemVJdGVtKHMsdGhpcy5vcHRpb25zLm1lYXN1cmVFbGVtZW50KGUsdCx0aGlzKSk6dGhpcy5vYnNlcnZlci51bm9ic2VydmUoZSl9O3RoaXMub3B0aW9ucy51c2VBbmltYXRpb25GcmFtZVdpdGhSZXNpemVPYnNlcnZlcj9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocnVuKTpydW4oKX0pfSk6bnVsbCk7cmV0dXJue2Rpc2Nvbm5lY3Q6KCk9Pnt2YXIgZTtudWxsPT0oZT1nZXQoKSl8fGUuZGlzY29ubmVjdCgpLHQ9bnVsbH0sb2JzZXJ2ZTp0PT57dmFyIGU7cmV0dXJuIG51bGw9PShlPWdldCgpKT92b2lkIDA6ZS5vYnNlcnZlKHQse2JveDoiYm9yZGVyLWJveCJ9KX0sdW5vYnNlcnZlOnQ9Pnt2YXIgZTtyZXR1cm4gbnVsbD09KGU9Z2V0KCkpP3ZvaWQgMDplLnVub2JzZXJ2ZSh0KX19fSkoKSx0aGlzLnJhbmdlPW51bGwsdGhpcy5zZXRPcHRpb25zPXQ9PntPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbZSxzXSk9Pnt2b2lkIDA9PT1zJiZkZWxldGUgdFtlXX0pLHRoaXMub3B0aW9ucz17ZGVidWc6ITEsaW5pdGlhbE9mZnNldDowLG92ZXJzY2FuOjEscGFkZGluZ1N0YXJ0OjAscGFkZGluZ0VuZDowLHNjcm9sbFBhZGRpbmdTdGFydDowLHNjcm9sbFBhZGRpbmdFbmQ6MCxob3Jpem9udGFsOiExLGdldEl0ZW1LZXk6ZGVmYXVsdEtleUV4dHJhY3RvcixyYW5nZUV4dHJhY3RvcjpkZWZhdWx0UmFuZ2VFeHRyYWN0b3Isb25DaGFuZ2U6KCk9Pnt9LG1lYXN1cmVFbGVtZW50Om1lYXN1cmVFbGVtZW50LGluaXRpYWxSZWN0Ont3aWR0aDowLGhlaWdodDowfSxzY3JvbGxNYXJnaW46MCxnYXA6MCxpbmRleEF0dHJpYnV0ZToiZGF0YS1pbmRleCIsaW5pdGlhbE1lYXN1cmVtZW50c0NhY2hlOltdLGxhbmVzOjEsaXNTY3JvbGxpbmdSZXNldERlbGF5OjE1MCxlbmFibGVkOiEwLGlzUnRsOiExLHVzZVNjcm9sbGVuZEV2ZW50OiExLHVzZUFuaW1hdGlvbkZyYW1lV2l0aFJlc2l6ZU9ic2VydmVyOiExLGxhbmVBc3NpZ25tZW50TW9kZToiZXN0aW1hdGUiLC4uLnR9fSx0aGlzLm5vdGlmeT10PT57dmFyIGUscztudWxsPT0ocz0oZT10aGlzLm9wdGlvbnMpLm9uQ2hhbmdlKXx8cy5jYWxsKGUsdGhpcyx0KX0sdGhpcy5tYXliZU5vdGlmeT1tZW1vKCgpPT4odGhpcy5jYWxjdWxhdGVSYW5nZSgpLFt0aGlzLmlzU2Nyb2xsaW5nLHRoaXMucmFuZ2U/dGhpcy5yYW5nZS5zdGFydEluZGV4Om51bGwsdGhpcy5yYW5nZT90aGlzLnJhbmdlLmVuZEluZGV4Om51bGxdKSx0PT57dGhpcy5ub3RpZnkodCl9LHtrZXk6ITEsZGVidWc6KCk9PnRoaXMub3B0aW9ucy5kZWJ1Zyxpbml0aWFsRGVwczpbdGhpcy5pc1Njcm9sbGluZyx0aGlzLnJhbmdlP3RoaXMucmFuZ2Uuc3RhcnRJbmRleDpudWxsLHRoaXMucmFuZ2U/dGhpcy5yYW5nZS5lbmRJbmRleDpudWxsXX0pLHRoaXMuY2xlYW51cD0oKT0+e3RoaXMudW5zdWJzLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKHQ9PnQoKSksdGhpcy51bnN1YnM9W10sdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCksbnVsbCE9dGhpcy5yYWZJZCYmdGhpcy50YXJnZXRXaW5kb3cmJih0aGlzLnRhcmdldFdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnJhZklkKSx0aGlzLnJhZklkPW51bGwpLHRoaXMuc2Nyb2xsU3RhdGU9bnVsbCx0aGlzLnNjcm9sbEVsZW1lbnQ9bnVsbCx0aGlzLnRhcmdldFdpbmRvdz1udWxsfSx0aGlzLl9kaWRNb3VudD0oKT0+KCk9Pnt0aGlzLmNsZWFudXAoKX0sdGhpcy5fd2lsbFVwZGF0ZT0oKT0+e3ZhciB0O2NvbnN0IGU9dGhpcy5vcHRpb25zLmVuYWJsZWQ/dGhpcy5vcHRpb25zLmdldFNjcm9sbEVsZW1lbnQoKTpudWxsO2lmKHRoaXMuc2Nyb2xsRWxlbWVudCE9PWUpe2lmKHRoaXMuY2xlYW51cCgpLCFlKXJldHVybiB2b2lkIHRoaXMubWF5YmVOb3RpZnkoKTt0aGlzLnNjcm9sbEVsZW1lbnQ9ZSx0aGlzLnNjcm9sbEVsZW1lbnQmJiJvd25lckRvY3VtZW50ImluIHRoaXMuc2Nyb2xsRWxlbWVudD90aGlzLnRhcmdldFdpbmRvdz10aGlzLnNjcm9sbEVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp0aGlzLnRhcmdldFdpbmRvdz0obnVsbD09KHQ9dGhpcy5zY3JvbGxFbGVtZW50KT92b2lkIDA6dC53aW5kb3cpPz9udWxsLHRoaXMuZWxlbWVudHNDYWNoZS5mb3JFYWNoKHQ9Pnt0aGlzLm9ic2VydmVyLm9ic2VydmUodCl9KSx0aGlzLnVuc3Vicy5wdXNoKHRoaXMub3B0aW9ucy5vYnNlcnZlRWxlbWVudFJlY3QodGhpcyx0PT57dGhpcy5zY3JvbGxSZWN0PXQsdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMudW5zdWJzLnB1c2godGhpcy5vcHRpb25zLm9ic2VydmVFbGVtZW50T2Zmc2V0KHRoaXMsKHQsZSk9Pnt0aGlzLnNjcm9sbEFkanVzdG1lbnRzPTAsdGhpcy5zY3JvbGxEaXJlY3Rpb249ZT90aGlzLmdldFNjcm9sbE9mZnNldCgpPHQ/ImZvcndhcmQiOiJiYWNrd2FyZCI6bnVsbCx0aGlzLnNjcm9sbE9mZnNldD10LHRoaXMuaXNTY3JvbGxpbmc9ZSx0aGlzLnNjcm9sbFN0YXRlJiZ0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCksdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCkse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjp2b2lkIDB9KX19LHRoaXMucmFmSWQ9bnVsbCx0aGlzLmdldFNpemU9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbFJlY3Q9dGhpcy5zY3JvbGxSZWN0Pz90aGlzLm9wdGlvbnMuaW5pdGlhbFJlY3QsdGhpcy5zY3JvbGxSZWN0W3RoaXMub3B0aW9ucy5ob3Jpem9udGFsPyJ3aWR0aCI6ImhlaWdodCJdKToodGhpcy5zY3JvbGxSZWN0PW51bGwsMCksdGhpcy5nZXRTY3JvbGxPZmZzZXQ9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbE9mZnNldD10aGlzLnNjcm9sbE9mZnNldD8/KCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldD90aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldCgpOnRoaXMub3B0aW9ucy5pbml0aWFsT2Zmc2V0KSx0aGlzLnNjcm9sbE9mZnNldCk6KHRoaXMuc2Nyb2xsT2Zmc2V0PW51bGwsMCksdGhpcy5nZXRGdXJ0aGVzdE1lYXN1cmVtZW50PSh0LGUpPT57Y29uc3Qgcz1uZXcgTWFwLGk9bmV3IE1hcDtmb3IobGV0IG49ZS0xO24+PTA7bi0tKXtjb25zdCBlPXRbbl07aWYocy5oYXMoZS5sYW5lKSljb250aW51ZTtjb25zdCBsPWkuZ2V0KGUubGFuZSk7aWYobnVsbD09bHx8ZS5lbmQ+bC5lbmQ/aS5zZXQoZS5sYW5lLGUpOmUuZW5kPGwuZW5kJiZzLnNldChlLmxhbmUsITApLHMuc2l6ZT09PXRoaXMub3B0aW9ucy5sYW5lcylicmVha31yZXR1cm4gaS5zaXplPT09dGhpcy5vcHRpb25zLmxhbmVzP0FycmF5LmZyb20oaS52YWx1ZXMoKSkuc29ydCgodCxlKT0+dC5lbmQ9PT1lLmVuZD90LmluZGV4LWUuaW5kZXg6dC5lbmQtZS5lbmQpWzBdOnZvaWQgMH0sdGhpcy5nZXRNZWFzdXJlbWVudE9wdGlvbnM9bWVtbygoKT0+W3RoaXMub3B0aW9ucy5jb3VudCx0aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0LHRoaXMub3B0aW9ucy5zY3JvbGxNYXJnaW4sdGhpcy5vcHRpb25zLmdldEl0ZW1LZXksdGhpcy5vcHRpb25zLmVuYWJsZWQsdGhpcy5vcHRpb25zLmxhbmVzLHRoaXMub3B0aW9ucy5sYW5lQXNzaWdubWVudE1vZGVdLCh0LGUscyxpLG4sbCxvKT0+KHZvaWQgMCE9PXRoaXMucHJldkxhbmVzJiZ0aGlzLnByZXZMYW5lcyE9PWwmJih0aGlzLmxhbmVzQ2hhbmdlZEZsYWc9ITApLHRoaXMucHJldkxhbmVzPWwsdGhpcy5wZW5kaW5nTWVhc3VyZWRDYWNoZUluZGV4ZXM9W10se2NvdW50OnQscGFkZGluZ1N0YXJ0OmUsc2Nyb2xsTWFyZ2luOnMsZ2V0SXRlbUtleTppLGVuYWJsZWQ6bixsYW5lczpsLGxhbmVBc3NpZ25tZW50TW9kZTpvfSkse2tleTohMX0pLHRoaXMuZ2V0TWVhc3VyZW1lbnRzPW1lbW8oKCk9Plt0aGlzLmdldE1lYXN1cmVtZW50T3B0aW9ucygpLHRoaXMuaXRlbVNpemVDYWNoZV0sKHtjb3VudDp0LHBhZGRpbmdTdGFydDplLHNjcm9sbE1hcmdpbjpzLGdldEl0ZW1LZXk6aSxlbmFibGVkOm4sbGFuZXM6bCxsYW5lQXNzaWdubWVudE1vZGU6b30scik9PntpZighbilyZXR1cm4gdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLFtdO2lmKHRoaXMubGFuZUFzc2lnbm1lbnRzLnNpemU+dClmb3IoY29uc3QgZSBvZiB0aGlzLmxhbmVBc3NpZ25tZW50cy5rZXlzKCkpZT49dCYmdGhpcy5sYW5lQXNzaWdubWVudHMuZGVsZXRlKGUpO3RoaXMubGFuZXNDaGFuZ2VkRmxhZyYmKHRoaXMubGFuZXNDaGFuZ2VkRmxhZz0hMSx0aGlzLmxhbmVzU2V0dGxpbmc9ITAsdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLHRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzPVtdKSwwIT09dGhpcy5tZWFzdXJlbWVudHNDYWNoZS5sZW5ndGh8fHRoaXMubGFuZXNTZXR0bGluZ3x8KHRoaXMubWVhc3VyZW1lbnRzQ2FjaGU9dGhpcy5vcHRpb25zLmluaXRpYWxNZWFzdXJlbWVudHNDYWNoZSx0aGlzLm1lYXN1cmVtZW50c0NhY2hlLmZvckVhY2godD0+e3RoaXMuaXRlbVNpemVDYWNoZS5zZXQodC5rZXksdC5zaXplKX0pKTtjb25zdCBhPXRoaXMubGFuZXNTZXR0bGluZz8wOnRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzLmxlbmd0aD4wP01hdGgubWluKC4uLnRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzKTowO3RoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzPVtdLHRoaXMubGFuZXNTZXR0bGluZyYmdGhpcy5tZWFzdXJlbWVudHNDYWNoZS5sZW5ndGg9PT10JiYodGhpcy5sYW5lc1NldHRsaW5nPSExKTtjb25zdCBoPXRoaXMubWVhc3VyZW1lbnRzQ2FjaGUuc2xpY2UoMCxhKSxjPW5ldyBBcnJheShsKS5maWxsKHZvaWQgMCk7Zm9yKGxldCB0PTA7dDxhO3QrKyl7Y29uc3QgZT1oW3RdO2UmJihjW2UubGFuZV09dCl9Zm9yKGxldCBuPWE7bjx0O24rKyl7Y29uc3QgdD1pKG4pLGw9dGhpcy5sYW5lQXNzaWdubWVudHMuZ2V0KG4pO2xldCBhLGQ7Y29uc3QgdT0iZXN0aW1hdGUiPT09b3x8ci5oYXModCk7aWYodm9pZCAwIT09bCYmdGhpcy5vcHRpb25zLmxhbmVzPjEpe2E9bDtjb25zdCB0PWNbYV0saT12b2lkIDAhPT10P2hbdF06dm9pZCAwO2Q9aT9pLmVuZCt0aGlzLm9wdGlvbnMuZ2FwOmUrc31lbHNle2NvbnN0IHQ9MT09PXRoaXMub3B0aW9ucy5sYW5lcz9oW24tMV06dGhpcy5nZXRGdXJ0aGVzdE1lYXN1cmVtZW50KGgsbik7ZD10P3QuZW5kK3RoaXMub3B0aW9ucy5nYXA6ZStzLGE9dD90LmxhbmU6biV0aGlzLm9wdGlvbnMubGFuZXMsdGhpcy5vcHRpb25zLmxhbmVzPjEmJnUmJnRoaXMubGFuZUFzc2lnbm1lbnRzLnNldChuLGEpfWNvbnN0IG09ci5nZXQodCksZz0ibnVtYmVyIj09dHlwZW9mIG0/bTp0aGlzLm9wdGlvbnMuZXN0aW1hdGVTaXplKG4pLGY9ZCtnO2hbbl09e2luZGV4Om4sc3RhcnQ6ZCxzaXplOmcsZW5kOmYsa2V5OnQsbGFuZTphfSxjW2FdPW59cmV0dXJuIHRoaXMubWVhc3VyZW1lbnRzQ2FjaGU9aCxofSx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWd9KSx0aGlzLmNhbGN1bGF0ZVJhbmdlPW1lbW8oKCk9Plt0aGlzLmdldE1lYXN1cmVtZW50cygpLHRoaXMuZ2V0U2l6ZSgpLHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCksdGhpcy5vcHRpb25zLmxhbmVzXSwodCxlLHMsaSk9PnRoaXMucmFuZ2U9dC5sZW5ndGg+MCYmZT4wP2Z1bmN0aW9uKHttZWFzdXJlbWVudHM6dCxvdXRlclNpemU6ZSxzY3JvbGxPZmZzZXQ6cyxsYW5lczppfSl7Y29uc3Qgbj10Lmxlbmd0aC0xLGdldE9mZnNldD1lPT50W2VdLnN0YXJ0O2lmKHQubGVuZ3RoPD1pKXJldHVybntzdGFydEluZGV4OjAsZW5kSW5kZXg6bn07bGV0IGw9ZmluZE5lYXJlc3RCaW5hcnlTZWFyY2goMCxuLGdldE9mZnNldCxzKSxvPWw7aWYoMT09PWkpZm9yKDtvPG4mJnRbb10uZW5kPHMrZTspbysrO2Vsc2UgaWYoaT4xKXtjb25zdCByPUFycmF5KGkpLmZpbGwoMCk7Zm9yKDtvPG4mJnIuc29tZSh0PT50PHMrZSk7KXtjb25zdCBlPXRbb107cltlLmxhbmVdPWUuZW5kLG8rK31jb25zdCBhPUFycmF5KGkpLmZpbGwocytlKTtmb3IoO2w+PTAmJmEuc29tZSh0PT50Pj1zKTspe2NvbnN0IGU9dFtsXTthW2UubGFuZV09ZS5zdGFydCxsLS19bD1NYXRoLm1heCgwLGwtbCVpKSxvPU1hdGgubWluKG4sbysoaS0xLW8laSkpfXJldHVybntzdGFydEluZGV4OmwsZW5kSW5kZXg6b319KHttZWFzdXJlbWVudHM6dCxvdXRlclNpemU6ZSxzY3JvbGxPZmZzZXQ6cyxsYW5lczppfSk6bnVsbCx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWd9KSx0aGlzLmdldFZpcnR1YWxJbmRleGVzPW1lbW8oKCk9PntsZXQgdD1udWxsLGU9bnVsbDtjb25zdCBzPXRoaXMuY2FsY3VsYXRlUmFuZ2UoKTtyZXR1cm4gcyYmKHQ9cy5zdGFydEluZGV4LGU9cy5lbmRJbmRleCksdGhpcy5tYXliZU5vdGlmeS51cGRhdGVEZXBzKFt0aGlzLmlzU2Nyb2xsaW5nLHQsZV0pLFt0aGlzLm9wdGlvbnMucmFuZ2VFeHRyYWN0b3IsdGhpcy5vcHRpb25zLm92ZXJzY2FuLHRoaXMub3B0aW9ucy5jb3VudCx0LGVdfSwodCxlLHMsaSxuKT0+bnVsbD09PWl8fG51bGw9PT1uP1tdOnQoe3N0YXJ0SW5kZXg6aSxlbmRJbmRleDpuLG92ZXJzY2FuOmUsY291bnQ6c30pLHtrZXk6ITEsZGVidWc6KCk9PnRoaXMub3B0aW9ucy5kZWJ1Z30pLHRoaXMuaW5kZXhGcm9tRWxlbWVudD10PT57Y29uc3QgZT10aGlzLm9wdGlvbnMuaW5kZXhBdHRyaWJ1dGUscz10LmdldEF0dHJpYnV0ZShlKTtyZXR1cm4gcz9wYXJzZUludChzLDEwKTotMX0sdGhpcy5zaG91bGRNZWFzdXJlRHVyaW5nU2Nyb2xsPXQ9Pnt2YXIgZTtpZighdGhpcy5zY3JvbGxTdGF0ZXx8InNtb290aCIhPT10aGlzLnNjcm9sbFN0YXRlLmJlaGF2aW9yKXJldHVybiEwO2NvbnN0IHM9dGhpcy5zY3JvbGxTdGF0ZS5pbmRleD8/KG51bGw9PShlPXRoaXMuZ2V0VmlydHVhbEl0ZW1Gb3JPZmZzZXQodGhpcy5zY3JvbGxTdGF0ZS5sYXN0VGFyZ2V0T2Zmc2V0KSk/dm9pZCAwOmUuaW5kZXgpO2lmKHZvaWQgMCE9PXMmJnRoaXMucmFuZ2Upe2NvbnN0IGU9TWF0aC5tYXgodGhpcy5vcHRpb25zLm92ZXJzY2FuLE1hdGguY2VpbCgodGhpcy5yYW5nZS5lbmRJbmRleC10aGlzLnJhbmdlLnN0YXJ0SW5kZXgpLzIpKSxpPU1hdGgubWF4KDAscy1lKSxuPU1hdGgubWluKHRoaXMub3B0aW9ucy5jb3VudC0xLHMrZSk7cmV0dXJuIHQ+PWkmJnQ8PW59cmV0dXJuITB9LHRoaXMubWVhc3VyZUVsZW1lbnQ9dD0+e2lmKCF0KXJldHVybiB2b2lkIHRoaXMuZWxlbWVudHNDYWNoZS5mb3JFYWNoKCh0LGUpPT57dC5pc0Nvbm5lY3RlZHx8KHRoaXMub2JzZXJ2ZXIudW5vYnNlcnZlKHQpLHRoaXMuZWxlbWVudHNDYWNoZS5kZWxldGUoZSkpfSk7Y29uc3QgZT10aGlzLmluZGV4RnJvbUVsZW1lbnQodCkscz10aGlzLm9wdGlvbnMuZ2V0SXRlbUtleShlKSxpPXRoaXMuZWxlbWVudHNDYWNoZS5nZXQocyk7aSE9PXQmJihpJiZ0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZShpKSx0aGlzLm9ic2VydmVyLm9ic2VydmUodCksdGhpcy5lbGVtZW50c0NhY2hlLnNldChzLHQpKSx0aGlzLmlzU2Nyb2xsaW5nJiYhdGhpcy5zY3JvbGxTdGF0ZXx8IXRoaXMuc2hvdWxkTWVhc3VyZUR1cmluZ1Njcm9sbChlKXx8dGhpcy5yZXNpemVJdGVtKGUsdGhpcy5vcHRpb25zLm1lYXN1cmVFbGVtZW50KHQsdm9pZCAwLHRoaXMpKX0sdGhpcy5yZXNpemVJdGVtPSh0LGUpPT57dmFyIHM7Y29uc3QgaT10aGlzLm1lYXN1cmVtZW50c0NhY2hlW3RdO2lmKCFpKXJldHVybjtjb25zdCBuPWUtKHRoaXMuaXRlbVNpemVDYWNoZS5nZXQoaS5rZXkpPz9pLnNpemUpOzAhPT1uJiYoInNtb290aCIhPT0obnVsbD09KHM9dGhpcy5zY3JvbGxTdGF0ZSk/dm9pZCAwOnMuYmVoYXZpb3IpJiYodm9pZCAwIT09dGhpcy5zaG91bGRBZGp1c3RTY3JvbGxQb3NpdGlvbk9uSXRlbVNpemVDaGFuZ2U/dGhpcy5zaG91bGRBZGp1c3RTY3JvbGxQb3NpdGlvbk9uSXRlbVNpemVDaGFuZ2UoaSxuLHRoaXMpOmkuc3RhcnQ8dGhpcy5nZXRTY3JvbGxPZmZzZXQoKSt0aGlzLnNjcm9sbEFkanVzdG1lbnRzKSYmdGhpcy5fc2Nyb2xsVG9PZmZzZXQodGhpcy5nZXRTY3JvbGxPZmZzZXQoKSx7YWRqdXN0bWVudHM6dGhpcy5zY3JvbGxBZGp1c3RtZW50cys9bixiZWhhdmlvcjp2b2lkIDB9KSx0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcy5wdXNoKGkuaW5kZXgpLHRoaXMuaXRlbVNpemVDYWNoZT1uZXcgTWFwKHRoaXMuaXRlbVNpemVDYWNoZS5zZXQoaS5rZXksZSkpLHRoaXMubm90aWZ5KCExKSl9LHRoaXMuZ2V0VmlydHVhbEl0ZW1zPW1lbW8oKCk9Plt0aGlzLmdldFZpcnR1YWxJbmRleGVzKCksdGhpcy5nZXRNZWFzdXJlbWVudHMoKV0sKHQsZSk9Pntjb25zdCBzPVtdO2ZvcihsZXQgaT0wLG49dC5sZW5ndGg7aTxuO2krKyl7Y29uc3Qgbj1lW3RbaV1dO3MucHVzaChuKX1yZXR1cm4gc30se2tleTohMSxkZWJ1ZzooKT0+dGhpcy5vcHRpb25zLmRlYnVnfSksdGhpcy5nZXRWaXJ0dWFsSXRlbUZvck9mZnNldD10PT57Y29uc3QgZT10aGlzLmdldE1lYXN1cmVtZW50cygpO2lmKDAhPT1lLmxlbmd0aClyZXR1cm4gbm90VW5kZWZpbmVkKGVbZmluZE5lYXJlc3RCaW5hcnlTZWFyY2goMCxlLmxlbmd0aC0xLHQ9Pm5vdFVuZGVmaW5lZChlW3RdKS5zdGFydCx0KV0pfSx0aGlzLmdldE1heFNjcm9sbE9mZnNldD0oKT0+e2lmKCF0aGlzLnNjcm9sbEVsZW1lbnQpcmV0dXJuIDA7aWYoInNjcm9sbEhlaWdodCJpbiB0aGlzLnNjcm9sbEVsZW1lbnQpcmV0dXJuIHRoaXMub3B0aW9ucy5ob3Jpem9udGFsP3RoaXMuc2Nyb2xsRWxlbWVudC5zY3JvbGxXaWR0aC10aGlzLnNjcm9sbEVsZW1lbnQuY2xpZW50V2lkdGg6dGhpcy5zY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodC10aGlzLnNjcm9sbEVsZW1lbnQuY2xpZW50SGVpZ2h0O3tjb25zdCB0PXRoaXMuc2Nyb2xsRWxlbWVudC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIHRoaXMub3B0aW9ucy5ob3Jpem9udGFsP3Quc2Nyb2xsV2lkdGgtdGhpcy5zY3JvbGxFbGVtZW50LmlubmVyV2lkdGg6dC5zY3JvbGxIZWlnaHQtdGhpcy5zY3JvbGxFbGVtZW50LmlubmVySGVpZ2h0fX0sdGhpcy5nZXRPZmZzZXRGb3JBbGlnbm1lbnQ9KHQsZSxzPTApPT57aWYoIXRoaXMuc2Nyb2xsRWxlbWVudClyZXR1cm4gMDtjb25zdCBpPXRoaXMuZ2V0U2l6ZSgpLG49dGhpcy5nZXRTY3JvbGxPZmZzZXQoKTsiYXV0byI9PT1lJiYoZT10Pj1uK2k/ImVuZCI6InN0YXJ0IiksImNlbnRlciI9PT1lP3QrPShzLWkpLzI6ImVuZCI9PT1lJiYodC09aSk7Y29uc3QgbD10aGlzLmdldE1heFNjcm9sbE9mZnNldCgpO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihsLHQpLDApfSx0aGlzLmdldE9mZnNldEZvckluZGV4PSh0LGU9ImF1dG8iKT0+e3Q9TWF0aC5tYXgoMCxNYXRoLm1pbih0LHRoaXMub3B0aW9ucy5jb3VudC0xKSk7Y29uc3Qgcz10aGlzLmdldFNpemUoKSxpPXRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCksbj10aGlzLm1lYXN1cmVtZW50c0NhY2hlW3RdO2lmKCFuKXJldHVybjtpZigiYXV0byI9PT1lKWlmKG4uZW5kPj1pK3MtdGhpcy5vcHRpb25zLnNjcm9sbFBhZGRpbmdFbmQpZT0iZW5kIjtlbHNle2lmKCEobi5zdGFydDw9aSt0aGlzLm9wdGlvbnMuc2Nyb2xsUGFkZGluZ1N0YXJ0KSlyZXR1cm5baSxlXTtlPSJzdGFydCJ9aWYoImVuZCI9PT1lJiZ0PT09dGhpcy5vcHRpb25zLmNvdW50LTEpcmV0dXJuW3RoaXMuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCksZV07Y29uc3QgbD0iZW5kIj09PWU/bi5lbmQrdGhpcy5vcHRpb25zLnNjcm9sbFBhZGRpbmdFbmQ6bi5zdGFydC10aGlzLm9wdGlvbnMuc2Nyb2xsUGFkZGluZ1N0YXJ0O3JldHVyblt0aGlzLmdldE9mZnNldEZvckFsaWdubWVudChsLGUsbi5zaXplKSxlXX0sdGhpcy5zY3JvbGxUb09mZnNldD0odCx7YWxpZ246ZT0ic3RhcnQiLGJlaGF2aW9yOnM9ImF1dG8ifT17fSk9Pntjb25zdCBpPXRoaXMuZ2V0T2Zmc2V0Rm9yQWxpZ25tZW50KHQsZSksbj10aGlzLm5vdygpO3RoaXMuc2Nyb2xsU3RhdGU9e2luZGV4Om51bGwsYWxpZ246ZSxiZWhhdmlvcjpzLHN0YXJ0ZWRBdDpuLGxhc3RUYXJnZXRPZmZzZXQ6aSxzdGFibGVGcmFtZXM6MH0sdGhpcy5fc2Nyb2xsVG9PZmZzZXQoaSx7YWRqdXN0bWVudHM6dm9pZCAwLGJlaGF2aW9yOnN9KSx0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl9LHRoaXMuc2Nyb2xsVG9JbmRleD0odCx7YWxpZ246ZT0iYXV0byIsYmVoYXZpb3I6cz0iYXV0byJ9PXt9KT0+e3Q9TWF0aC5tYXgoMCxNYXRoLm1pbih0LHRoaXMub3B0aW9ucy5jb3VudC0xKSk7Y29uc3QgaT10aGlzLmdldE9mZnNldEZvckluZGV4KHQsZSk7aWYoIWkpcmV0dXJuO2NvbnN0W24sbF09aSxvPXRoaXMubm93KCk7dGhpcy5zY3JvbGxTdGF0ZT17aW5kZXg6dCxhbGlnbjpsLGJlaGF2aW9yOnMsc3RhcnRlZEF0Om8sbGFzdFRhcmdldE9mZnNldDpuLHN0YWJsZUZyYW1lczowfSx0aGlzLl9zY3JvbGxUb09mZnNldChuLHthZGp1c3RtZW50czp2b2lkIDAsYmVoYXZpb3I6c30pLHRoaXMuc2NoZWR1bGVTY3JvbGxSZWNvbmNpbGUoKX0sdGhpcy5zY3JvbGxCeT0odCx7YmVoYXZpb3I6ZT0iYXV0byJ9PXt9KT0+e2NvbnN0IHM9dGhpcy5nZXRTY3JvbGxPZmZzZXQoKSt0LGk9dGhpcy5ub3coKTt0aGlzLnNjcm9sbFN0YXRlPXtpbmRleDpudWxsLGFsaWduOiJzdGFydCIsYmVoYXZpb3I6ZSxzdGFydGVkQXQ6aSxsYXN0VGFyZ2V0T2Zmc2V0OnMsc3RhYmxlRnJhbWVzOjB9LHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHMse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjplfSksdGhpcy5zY2hlZHVsZVNjcm9sbFJlY29uY2lsZSgpfSx0aGlzLmdldFRvdGFsU2l6ZT0oKT0+e3ZhciB0O2NvbnN0IGU9dGhpcy5nZXRNZWFzdXJlbWVudHMoKTtsZXQgcztpZigwPT09ZS5sZW5ndGgpcz10aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0O2Vsc2UgaWYoMT09PXRoaXMub3B0aW9ucy5sYW5lcylzPShudWxsPT0odD1lW2UubGVuZ3RoLTFdKT92b2lkIDA6dC5lbmQpPz8wO2Vsc2V7Y29uc3QgdD1BcnJheSh0aGlzLm9wdGlvbnMubGFuZXMpLmZpbGwobnVsbCk7bGV0IGk9ZS5sZW5ndGgtMTtmb3IoO2k+PTAmJnQuc29tZSh0PT5udWxsPT09dCk7KXtjb25zdCBzPWVbaV07bnVsbD09PXRbcy5sYW5lXSYmKHRbcy5sYW5lXT1zLmVuZCksaS0tfXM9TWF0aC5tYXgoLi4udC5maWx0ZXIodD0+bnVsbCE9PXQpKX1yZXR1cm4gTWF0aC5tYXgocy10aGlzLm9wdGlvbnMuc2Nyb2xsTWFyZ2luK3RoaXMub3B0aW9ucy5wYWRkaW5nRW5kLDApfSx0aGlzLl9zY3JvbGxUb09mZnNldD0odCx7YWRqdXN0bWVudHM6ZSxiZWhhdmlvcjpzfSk9Pnt0aGlzLm9wdGlvbnMuc2Nyb2xsVG9Gbih0LHtiZWhhdmlvcjpzLGFkanVzdG1lbnRzOmV9LHRoaXMpfSx0aGlzLm1lYXN1cmU9KCk9Pnt0aGlzLml0ZW1TaXplQ2FjaGU9bmV3IE1hcCx0aGlzLmxhbmVBc3NpZ25tZW50cz1uZXcgTWFwLHRoaXMubm90aWZ5KCExKX0sdGhpcy5zZXRPcHRpb25zKHQpfXNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl7dGhpcy50YXJnZXRXaW5kb3c/bnVsbD09dGhpcy5yYWZJZCYmKHRoaXMucmFmSWQ9dGhpcy50YXJnZXRXaW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5yYWZJZD1udWxsLHRoaXMucmVjb25jaWxlU2Nyb2xsKCl9KSk6dGhpcy5zY3JvbGxTdGF0ZT1udWxsfXJlY29uY2lsZVNjcm9sbCgpe2lmKCF0aGlzLnNjcm9sbFN0YXRlKXJldHVybjtpZighdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybjtpZih0aGlzLm5vdygpLXRoaXMuc2Nyb2xsU3RhdGUuc3RhcnRlZEF0PjVlMylyZXR1cm4gdm9pZCh0aGlzLnNjcm9sbFN0YXRlPW51bGwpO2NvbnN0IHQ9bnVsbCE9dGhpcy5zY3JvbGxTdGF0ZS5pbmRleD90aGlzLmdldE9mZnNldEZvckluZGV4KHRoaXMuc2Nyb2xsU3RhdGUuaW5kZXgsdGhpcy5zY3JvbGxTdGF0ZS5hbGlnbik6dm9pZCAwLGU9dD90WzBdOnRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldCxzPWUhPT10aGlzLnNjcm9sbFN0YXRlLmxhc3RUYXJnZXRPZmZzZXQ7aWYoIXMmJihpPWUsbj10aGlzLmdldFNjcm9sbE9mZnNldCgpLE1hdGguYWJzKGktbik8MS4wMSkpe2lmKHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzKyssdGhpcy5zY3JvbGxTdGF0ZS5zdGFibGVGcmFtZXM+PTEpcmV0dXJuIHZvaWQodGhpcy5zY3JvbGxTdGF0ZT1udWxsKX1lbHNlIHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzPTAscyYmKHRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldD1lLHRoaXMuc2Nyb2xsU3RhdGUuYmVoYXZpb3I9ImF1dG8iLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KGUse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjoiYXV0byJ9KSk7dmFyIGksbjt0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl9fWNvbnN0IGZpbmROZWFyZXN0QmluYXJ5U2VhcmNoPSh0LGUscyxpKT0+e2Zvcig7dDw9ZTspe2NvbnN0IG49KHQrZSkvMnwwLGw9cyhuKTtpZihsPGkpdD1uKzE7ZWxzZXtpZighKGw+aSkpcmV0dXJuIG47ZT1uLTF9fXJldHVybiB0PjA/dC0xOjB9O2Z1bmN0aW9uIHVzZVZpcnR1YWxpemVyKGUpe3JldHVybiBmdW5jdGlvbihlKXtjb25zdCBzPW5ldyBWaXJ0dWFsaXplcih0LnVucmVmKGUpKSxpPXQuc2hhbGxvd1JlZihzKSxuPXMuX2RpZE1vdW50KCk7cmV0dXJuIHQud2F0Y2goKCk9PnQudW5yZWYoZSkuZ2V0U2Nyb2xsRWxlbWVudCgpLHQ9Pnt0JiZzLl93aWxsVXBkYXRlKCl9LHtpbW1lZGlhdGU6ITB9KSx0LndhdGNoKCgpPT50LnVucmVmKGUpLGU9PntzLnNldE9wdGlvbnMoey4uLmUsb25DaGFuZ2U6KHMsbik9Pnt2YXIgbDt0LnRyaWdnZXJSZWYoaSksbnVsbD09KGw9ZS5vbkNoYW5nZSl8fGwuY2FsbChlLHMsbil9fSkscy5fd2lsbFVwZGF0ZSgpLHQudHJpZ2dlclJlZihpKX0se2ltbWVkaWF0ZTohMH0pLHQub25TY29wZURpc3Bvc2UobiksaX0odC5jb21wdXRlZCgoKT0+KHtvYnNlcnZlRWxlbWVudFJlY3Q6b2JzZXJ2ZUVsZW1lbnRSZWN0LG9ic2VydmVFbGVtZW50T2Zmc2V0Om9ic2VydmVFbGVtZW50T2Zmc2V0LHNjcm9sbFRvRm46ZWxlbWVudFNjcm9sbCwuLi50LnVucmVmKGUpfSkpKX1leHBvcnR7dXNlVmlydHVhbGl6ZXIgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LUIxUE9UTG1hLm1qcy5tYXAK", "chunks/build/index-BvUPl8hD.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRm9ybS1DZU5mMUk1cS5tanMiO2ltcG9ydHtfIGFzIGF9ZnJvbSIuL1BhZ2VDYXJkLUJ3LVc0cXhzLm1qcyI7aW1wb3J0e3YgYXMgbCxoIGFzIHQsYSBhcyByLF8gYXMgbixnIGFzIG99ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIHN9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgdX1mcm9tIi4vU2VwYXJhdG9yLUR3Y1I5UE0xLm1qcyI7aW1wb3J0e18gYXMgZH1mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7ZiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e28gYXMgYyxzIGFzIGYsYiBhcyBwfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQiLi4vXy9zaGFyZWQuZXNtLWJ1bmRsZXIubWpzIjtpbXBvcnQiLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydCIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBnPWMoe25hbWU6ZigpLnRyaW0oKS5taW4oMSkubWF4KDEwMCkub3B0aW9uYWwoKSx1c2VybmFtZTpmKCkudHJpbSgpLm1pbigzKS5tYXgoNTApLnJlZ2V4KC9eXHcrJC8sIkxldHRlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmUiKS5vcHRpb25hbCgpLGJpbzpmKCkudHJpbSgpLm1heCg1MDApLm9wdGlvbmFsKCl9KS5yZWZpbmUoZT0+T2JqZWN0LmtleXMoZSkubGVuZ3RoPjAse21lc3NhZ2U6IkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCJ9KTtjKHtlbWFpbDpwKCkscHJvZHVjdF91cGRhdGVzOnAoKSx3ZWVrbHlfZGlnZXN0OnAoKSxpbXBvcnRhbnRfdXBkYXRlczpwKCl9KTtjb25zdCBWPWwuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6ImluZGV4IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChjKXtjb25zdCBmPXQoKSxwPXIoKSxWPWwucmVmKHtuYW1lOmYuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHVzZXJuYW1lOmYuY3VycmVudFVzZXI/LnVzZXJuYW1lPz8iIixiaW86Zi5jdXJyZW50VXNlcj8uYmlvPz8iIn0pLGI9bC5yZWYoITEpLHg9bC5yZWYobnVsbCksdj1sLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gb25TdWJtaXQoKXtiLnZhbHVlPSEwO3RyeXthd2FpdCBmLnVwZGF0ZUN1cnJlbnRVc2VyKHtuYW1lOlYudmFsdWUubmFtZSx1c2VybmFtZTpWLnZhbHVlLnVzZXJuYW1lLGJpbzpWLnZhbHVlLmJpb30pLHAuYWRkKHt0aXRsZToiUHJvZmlsZSB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBhPWU7cC5hZGQoe3RpdGxlOiJVcGRhdGUgZmFpbGVkIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Yi52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gb25BdmF0YXJDaGFuZ2UoZSl7Y29uc3QgYT1lLnRhcmdldC5maWxlcz8uWzBdO2lmKGEpaWYoYS5zaXplPjIwOTcxNTIpcC5hZGQoe3RpdGxlOiJBdmF0YXIgbXVzdCBiZSDiiaQgMk1CIixjb2xvcjoiZXJyb3IifSk7ZWxzZXt2LnZhbHVlPSEwO3RyeXthd2FpdCBmLnVwZGF0ZUF2YXRhcihhKSxwLmFkZCh7dGl0bGU6IkF2YXRhciB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBhPWU7cC5hZGQoe3RpdGxlOiJVcGxvYWQgZmFpbGVkIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7di52YWx1ZT0hMSx4LnZhbHVlJiYoeC52YWx1ZS52YWx1ZT0iIil9fX1yZXR1cm4odCxyLGMscCk9Pntjb25zdCB3PWEsaD1uLE49aSx5PXMsVT11LEM9byxfPWQ7cihtKGUsbC5tZXJnZVByb3BzKHtzY2hlbWE6bC51bnJlZihnKSxzdGF0ZTpsLnVucmVmKFYpLG9uU3VibWl0Om9uU3VibWl0fSxwKSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUodyx7dGl0bGU6IlByb2ZpbGUiLGRlc2NyaXB0aW9uOiJUaGVzZSBpbmZvcm1hdGlvbnMgd2lsbCBiZSBkaXNwbGF5ZWQgcHVibGljbHkuIix2YXJpYW50OiJuYWtlZCIsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOiJtYi00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShoLHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIGNoYW5nZXMiLGxvYWRpbmc6bC51bnJlZihiKSxjbGFzczoidy1maXQgbGc6bXMtYXV0byJ9LG51bGwsOCxbImxvYWRpbmciXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKHcse3ZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoTix7bmFtZToibmFtZSIsbGFiZWw6Ik5hbWUiLGRlc2NyaXB0aW9uOiJXaWxsIGFwcGVhciBvbiByZWNlaXB0cywgaW52b2ljZXMsIGFuZCBvdGhlciBjb21tdW5pY2F0aW9uLiIscmVxdWlyZWQ6IiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoVikubmFtZT1lLGF1dG9jb21wbGV0ZToib2ZmIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKFUpLGwuY3JlYXRlVk5vZGUoTix7bmFtZToiZW1haWwiLGxhYmVsOiJFbWFpbCIsZGVzY3JpcHRpb246IlVzZWQgdG8gc2lnbiBpbiwgZm9yIGVtYWlsIHJlY2VpcHRzIGFuZCBwcm9kdWN0IHVwZGF0ZXMuIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHsibW9kZWwtdmFsdWUiOmwudW5yZWYoZikuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShVKSxsLmNyZWF0ZVZOb2RlKE4se25hbWU6InVzZXJuYW1lIixsYWJlbDoiVXNlcm5hbWUiLGRlc2NyaXB0aW9uOiJZb3VyIHVuaXF1ZSB1c2VybmFtZSBmb3IgbG9nZ2luZyBpbiBhbmQgeW91ciBwcm9maWxlIFVSTC4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihWKS51c2VybmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS51c2VybmFtZT1lfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoVSksbC5jcmVhdGVWTm9kZShOLHtuYW1lOiJhdmF0YXIiLGxhYmVsOiJBdmF0YXIiLGRlc2NyaXB0aW9uOiJQTkcsIEpQRUcsIEdJRiBvciBXRUJQLiBNYXggMk1CLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBzbTppdGVtcy1jZW50ZXIgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxbbC5jcmVhdGVWTm9kZShDLHtzcmM6bC51bnJlZihmKS5jdXJyZW50VXNlcj8uYXZhdGFyPz92b2lkIDAsYWx0OmwudW5yZWYoZikuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHNpemU6ImxnIn0sbnVsbCw4LFsic3JjIiwiYWx0Il0pLGwuY3JlYXRlVk5vZGUoaCx7bGFiZWw6IkNoYW5nZSIsaWNvbjoiaS1sdWNpZGUtdXBsb2FkIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOmwudW5yZWYodiksb25DbGljazplPT5sLnVucmVmKHgpPy5jbGljaygpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKSxsLmNyZWF0ZVZOb2RlKCJpbnB1dCIse3JlZl9rZXk6ImZpbGVJbnB1dCIscmVmOngsdHlwZToiZmlsZSIsYWNjZXB0OiJpbWFnZS9wbmcsaW1hZ2UvanBlZyxpbWFnZS9naWYsaW1hZ2Uvd2VicCIsY2xhc3M6ImhpZGRlbiIsb25DaGFuZ2U6b25BdmF0YXJDaGFuZ2V9LG51bGwsNTQ0KV0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShVKSxsLmNyZWF0ZVZOb2RlKE4se25hbWU6ImJpbyIsbGFiZWw6IkJpbyIsZGVzY3JpcHRpb246IkJyaWVmIGRlc2NyaXB0aW9uIGZvciB5b3VyIHByb2ZpbGUuIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShfLHttb2RlbFZhbHVlOmwudW5yZWYoVikuYmlvLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLmJpbz1lLHJvd3M6NCxhdXRvcmVzaXplOiIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pXSksXzoxfSldO2EobSh3LHt0aXRsZToiUHJvZmlsZSIsZGVzY3JpcHRpb246IlRoZXNlIGluZm9ybWF0aW9ucyB3aWxsIGJlIGRpc3BsYXllZCBwdWJsaWNseS4iLHZhcmlhbnQ6Im5ha2VkIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6Im1iLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoaCx7dHlwZToic3VibWl0IixsYWJlbDoiU2F2ZSBjaGFuZ2VzIixsb2FkaW5nOmwudW5yZWYoYiksY2xhc3M6InctZml0IGxnOm1zLWF1dG8ifSxudWxsLDgsWyJsb2FkaW5nIl0pXTthKG0oaCx7dHlwZToic3VibWl0IixsYWJlbDoiU2F2ZSBjaGFuZ2VzIixsb2FkaW5nOmwudW5yZWYoYiksY2xhc3M6InctZml0IGxnOm1zLWF1dG8ifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxhKG0odyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxyKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKE4se25hbWU6Im5hbWUiLGxhYmVsOiJOYW1lIixkZXNjcmlwdGlvbjoiV2lsbCBhcHBlYXIgb24gcmVjZWlwdHMsIGludm9pY2VzLCBhbmQgb3RoZXIgY29tbXVuaWNhdGlvbi4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihWKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLm5hbWU9ZSxhdXRvY29tcGxldGU6Im9mZiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShVKSxsLmNyZWF0ZVZOb2RlKE4se25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHNpZ24gaW4sIGZvciBlbWFpbCByZWNlaXB0cyBhbmQgcHJvZHVjdCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7Im1vZGVsLXZhbHVlIjpsLnVucmVmKGYpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsLGRpc2FibGVkOiIifSxudWxsLDgsWyJtb2RlbC12YWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoVSksbC5jcmVhdGVWTm9kZShOLHtuYW1lOiJ1c2VybmFtZSIsbGFiZWw6IlVzZXJuYW1lIixkZXNjcmlwdGlvbjoiWW91ciB1bmlxdWUgdXNlcm5hbWUgZm9yIGxvZ2dpbmcgaW4gYW5kIHlvdXIgcHJvZmlsZSBVUkwuIixyZXF1aXJlZDoiIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOmwudW5yZWYoVikudXNlcm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoVikudXNlcm5hbWU9ZX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKFUpLGwuY3JlYXRlVk5vZGUoTix7bmFtZToiYXZhdGFyIixsYWJlbDoiQXZhdGFyIixkZXNjcmlwdGlvbjoiUE5HLCBKUEVHLCBHSUYgb3IgV0VCUC4gTWF4IDJNQi4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gc206aXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIn0sW2wuY3JlYXRlVk5vZGUoQyx7c3JjOmwudW5yZWYoZikuY3VycmVudFVzZXI/LmF2YXRhcj8/dm9pZCAwLGFsdDpsLnVucmVmKGYpLmN1cnJlbnRVc2VyPy5uYW1lPz8iIixzaXplOiJsZyJ9LG51bGwsOCxbInNyYyIsImFsdCJdKSxsLmNyZWF0ZVZOb2RlKGgse2xhYmVsOiJDaGFuZ2UiLGljb246ImktbHVjaWRlLXVwbG9hZCIsdmFyaWFudDoib3V0bGluZSIsbG9hZGluZzpsLnVucmVmKHYpLG9uQ2xpY2s6ZT0+bC51bnJlZih4KT8uY2xpY2soKX0sbnVsbCw4LFsibG9hZGluZyIsIm9uQ2xpY2siXSksbC5jcmVhdGVWTm9kZSgiaW5wdXQiLHtyZWZfa2V5OiJmaWxlSW5wdXQiLHJlZjp4LHR5cGU6ImZpbGUiLGFjY2VwdDoiaW1hZ2UvcG5nLGltYWdlL2pwZWcsaW1hZ2UvZ2lmLGltYWdlL3dlYnAiLGNsYXNzOiJoaWRkZW4iLG9uQ2hhbmdlOm9uQXZhdGFyQ2hhbmdlfSxudWxsLDU0NCldKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoVSksbC5jcmVhdGVWTm9kZShOLHtuYW1lOiJiaW8iLGxhYmVsOiJCaW8iLGRlc2NyaXB0aW9uOiJCcmllZiBkZXNjcmlwdGlvbiBmb3IgeW91ciBwcm9maWxlLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoXyx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLmJpbywib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS5iaW89ZSxyb3dzOjQsYXV0b3Jlc2l6ZToiIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KV07YShtKE4se25hbWU6Im5hbWUiLGxhYmVsOiJOYW1lIixkZXNjcmlwdGlvbjoiV2lsbCBhcHBlYXIgb24gcmVjZWlwdHMsIGludm9pY2VzLCBhbmQgb3RoZXIgY29tbXVuaWNhdGlvbi4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoVikubmFtZT1lLGF1dG9jb21wbGV0ZToib2ZmIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO2EobSh5LHttb2RlbFZhbHVlOmwudW5yZWYoVikubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS5uYW1lPWUsYXV0b2NvbXBsZXRlOiJvZmYifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxhKG0oVSxudWxsLG51bGwsdCxyKSksYShtKE4se25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHNpZ24gaW4sIGZvciBlbWFpbCByZWNlaXB0cyBhbmQgcHJvZHVjdCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQscik9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZSh5LHsibW9kZWwtdmFsdWUiOmwudW5yZWYoZikuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXTthKG0oeSx7Im1vZGVsLXZhbHVlIjpsLnVucmVmKGYpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsLGRpc2FibGVkOiIifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxhKG0oVSxudWxsLG51bGwsdCxyKSksYShtKE4se25hbWU6InVzZXJuYW1lIixsYWJlbDoiVXNlcm5hbWUiLGRlc2NyaXB0aW9uOiJZb3VyIHVuaXF1ZSB1c2VybmFtZSBmb3IgbG9nZ2luZyBpbiBhbmQgeW91ciBwcm9maWxlIFVSTC4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLnVzZXJuYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLnVzZXJuYW1lPWV9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTthKG0oeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLnVzZXJuYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLnVzZXJuYW1lPWV9LG51bGwsdCxyKSl9KSxfOjF9LHQscikpLGEobShVLG51bGwsbnVsbCx0LHIpKSxhKG0oTix7bmFtZToiYXZhdGFyIixsYWJlbDoiQXZhdGFyIixkZXNjcmlwdGlvbjoiUE5HLCBKUEVHLCBHSUYgb3IgV0VCUC4gTWF4IDJNQi4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gc206aXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxyKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxbbC5jcmVhdGVWTm9kZShDLHtzcmM6bC51bnJlZihmKS5jdXJyZW50VXNlcj8uYXZhdGFyPz92b2lkIDAsYWx0OmwudW5yZWYoZikuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHNpemU6ImxnIn0sbnVsbCw4LFsic3JjIiwiYWx0Il0pLGwuY3JlYXRlVk5vZGUoaCx7bGFiZWw6IkNoYW5nZSIsaWNvbjoiaS1sdWNpZGUtdXBsb2FkIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOmwudW5yZWYodiksb25DbGljazplPT5sLnVucmVmKHgpPy5jbGljaygpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKSxsLmNyZWF0ZVZOb2RlKCJpbnB1dCIse3JlZl9rZXk6ImZpbGVJbnB1dCIscmVmOngsdHlwZToiZmlsZSIsYWNjZXB0OiJpbWFnZS9wbmcsaW1hZ2UvanBlZyxpbWFnZS9naWYsaW1hZ2Uvd2VicCIsY2xhc3M6ImhpZGRlbiIsb25DaGFuZ2U6b25BdmF0YXJDaGFuZ2V9LG51bGwsNTQ0KV0pXTthKGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyIke3J9PmApLGEobShDLHtzcmM6bC51bnJlZihmKS5jdXJyZW50VXNlcj8uYXZhdGFyPz92b2lkIDAsYWx0OmwudW5yZWYoZikuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHNpemU6ImxnIn0sbnVsbCx0LHIpKSxhKG0oaCx7bGFiZWw6IkNoYW5nZSIsaWNvbjoiaS1sdWNpZGUtdXBsb2FkIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOmwudW5yZWYodiksb25DbGljazplPT5sLnVucmVmKHgpPy5jbGljaygpfSxudWxsLHQscikpLGEoYDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdlL3BuZyxpbWFnZS9qcGVnLGltYWdlL2dpZixpbWFnZS93ZWJwIiBjbGFzcz0iaGlkZGVuIiR7cn0+PC9kaXY+YCl9KSxfOjF9LHQscikpLGEobShVLG51bGwsbnVsbCx0LHIpKSxhKG0oTix7bmFtZToiYmlvIixsYWJlbDoiQmlvIixkZXNjcmlwdGlvbjoiQnJpZWYgZGVzY3JpcHRpb24gZm9yIHlvdXIgcHJvZmlsZS4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoXyx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLmJpbywib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS5iaW89ZSxyb3dzOjQsYXV0b3Jlc2l6ZToiIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO2EobShfLHttb2RlbFZhbHVlOmwudW5yZWYoVikuYmlvLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLmJpbz1lLHJvd3M6NCxhdXRvcmVzaXplOiIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLHQscikpfSksXzoxfSx0LHIpKX0pLF86MX0sdCxyKSl9KSxfOjF9LGMpKX19fSksYj1WLnNldHVwO1Yuc2V0dXA9KGUsYSk9Pntjb25zdCB0PWwudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSIpLGI/YihlLGEpOnZvaWQgMH07ZXhwb3J0e1YgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LUJ2VVBsOGhELm1qcy5tYXAK", "chunks/build/index-C2QN8gzE.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7diBhcyB0LHUgYXMgbyxhLGkgYXMgbCxfIGFzIHIsYiBhcyBuLGFLIGFzIHN9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL01vZGFsLUIweVdQeFdfLm1qcyI7aW1wb3J0e3V9ZnJvbSIuL3VzZVByb2plY3RBcGktQ1RMMks2SlYubWpzIjtpbXBvcnR7XyBhcyBkfWZyb20iLi9Gb3JtLUNlTmYxSTVxLm1qcyI7aW1wb3J0e18gYXMgY31mcm9tIi4vRm9ybUZpZWxkLUNWTEl6UkxZLm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7XyBhcyBwfWZyb20iLi9UZXh0YXJlYS1CeXRwYU1WSC5tanMiO2ltcG9ydHtfIGFzIGZ9ZnJvbSIuL1NlbGVjdC1EaWFpbGZVYy5tanMiO2ltcG9ydHtfIGFzIGp9ZnJvbSIuL1NrZWxldG9uLUJmdHF5R3AzLm1qcyI7aW1wb3J0e18gYXMgdn1mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7XyBhcyBifWZyb20iLi9Ecm9wZG93bk1lbnUtQ2VjUGNlSmEubWpzIjtpbXBvcnR7XyBhcyBWfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7dyBhcyBofWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtmIGFzIHgsbyBhcyBDLHQgYXMgXyxxIGFzIHd9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnR7byBhcyB5LF8gYXMgZyxzIGFzIFB9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vb3ZlcmxheS1DanlCekwxQy5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzIjtpbXBvcnQiLi91c2VSZXNvbHZlZFZhcmlhbnRzLURoSHU2dlJLLm1qcyI7aW1wb3J0Ii4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vdXNlRmlsdGVyLUNsQ1phb2k4Lm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkTmF2YmFyLXBrSUVhZE9KLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS1DSE1NaWJfVy5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJDb2xsYXBzZS1DUUNaT3RYSC5tanMiO2ltcG9ydCIuL3VzZUxheWVyUmVnaXN0cnktQzlDQjIwVUgubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3QgUz10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9qZWN0Rm9ybSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2luaXRpYWxWYWx1ZXM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJzdWJtaXQiLCJjYW5jZWwiXSxzZXR1cChlLHtlbWl0Om99KXtjb25zdCBhPWUsbD1vLG49eSh7bmFtZTpQKCkubWluKDEsIk5hbWUgaXMgcmVxdWlyZWQiKS5tYXgoMjAwKSxkZXNjcmlwdGlvbjpQKCkubWF4KDJlMykub3B0aW9uYWwoKSxzdGF0dXM6ZyhbImFjdGl2ZSIsImFyY2hpdmVkIl0pfSkscz10LnJlYWN0aXZlKHtuYW1lOmEuaW5pdGlhbFZhbHVlcz8ubmFtZT8/IiIsZGVzY3JpcHRpb246YS5pbml0aWFsVmFsdWVzPy5kZXNjcmlwdGlvbj8/IiIsc3RhdHVzOmEuaW5pdGlhbFZhbHVlcz8uc3RhdHVzPz8iYWN0aXZlIn0pLGk9W3tsYWJlbDoiQWN0aXZlIix2YWx1ZToiYWN0aXZlIn0se2xhYmVsOiJBcmNoaXZlZCIsdmFsdWU6ImFyY2hpdmVkIn1dO2Z1bmN0aW9uIG9uU3VibWl0KGUpe2woInN1Ym1pdCIsZS5kYXRhKX1yZXR1cm4obyxhLHUsaik9Pntjb25zdCB2PWMsYj1tLFY9cCxoPWYsQz1yO2EoeChkLHQubWVyZ2VQcm9wcyh7c2NoZW1hOnQudW5yZWYobiksc3RhdGU6dC51bnJlZihzKSxjbGFzczoic3BhY2UteS00IixvblN1Ym1pdDpvblN1Ym1pdH0saikse2RlZmF1bHQ6dC53aXRoQ3R4KChvLGEscixuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKHYse2xhYmVsOiJOYW1lIixuYW1lOiJuYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZShiLHttb2RlbFZhbHVlOnQudW5yZWYocykubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+dC51bnJlZihzKS5uYW1lPWUscGxhY2Vob2xkZXI6IlByb2plY3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksdC5jcmVhdGVWTm9kZSh2LHtsYWJlbDoiRGVzY3JpcHRpb24iLG5hbWU6ImRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZShWLHttb2RlbFZhbHVlOnQudW5yZWYocykuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuZGVzY3JpcHRpb249ZSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSx0LmNyZWF0ZVZOb2RlKHYse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoaCx7bW9kZWxWYWx1ZTp0LnVucmVmKHMpLnN0YXR1cywib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+dC51bnJlZihzKS5zdGF0dXM9ZSxpdGVtczppLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSx0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LFt0LmNyZWF0ZVZOb2RlKEMse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5sKCJjYW5jZWwiKX0sbnVsbCw4LFsib25DbGljayJdKSx0LmNyZWF0ZVZOb2RlKEMse3R5cGU6InN1Ym1pdCIsbGFiZWw6IlNhdmUiLGxvYWRpbmc6ZS5sb2FkaW5nfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldO2EoeCh2LHtsYWJlbDoiTmFtZSIsbmFtZToibmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShiLHttb2RlbFZhbHVlOnQudW5yZWYocykubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+dC51bnJlZihzKS5uYW1lPWUscGxhY2Vob2xkZXI6IlByb2plY3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTtvKHgoYix7bW9kZWxWYWx1ZTp0LnVucmVmKHMpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykubmFtZT1lLHBsYWNlaG9sZGVyOiJQcm9qZWN0IG5hbWUiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEsbCkpfSksXzoxfSxyLG4pKSxhKHgodix7bGFiZWw6IkRlc2NyaXB0aW9uIixuYW1lOiJkZXNjcmlwdGlvbiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShWLHttb2RlbFZhbHVlOnQudW5yZWYocykuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuZGVzY3JpcHRpb249ZSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO28oeChWLHttb2RlbFZhbHVlOnQudW5yZWYocykuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuZGVzY3JpcHRpb249ZSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCxhLGwpKX0pLF86MX0scixuKSksYSh4KHYse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShoLHttb2RlbFZhbHVlOnQudW5yZWYocykuc3RhdHVzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT50LnVucmVmKHMpLnN0YXR1cz1lLGl0ZW1zOmksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07byh4KGgse21vZGVsVmFsdWU6dC51bnJlZihzKS5zdGF0dXMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuc3RhdHVzPWUsaXRlbXM6aSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxsKSl9KSxfOjF9LHIsbikpLGEoYDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIiJHtufT5gKSxhKHgoQyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PmwoImNhbmNlbCIpfSxudWxsLHIsbikpLGEoeChDLHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIixsb2FkaW5nOmUubG9hZGluZ30sbnVsbCxyLG4pKSxhKCI8L2Rpdj4iKX0pLF86MX0sdSkpfX19KSxOPVMuc2V0dXA7Uy5zZXR1cD0oZSxvKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvamVjdC9hcHAvY29tcG9uZW50cy9Qcm9qZWN0L1Byb2plY3RGb3JtLnZ1ZSIpLE4/TihlLG8pOnZvaWQgMH07Y29uc3QgRD1PYmplY3QuYXNzaWduKFMse19fbmFtZToiUHJvamVjdEZvcm0ifSksaz10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9qZWN0SXRlbSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3Byb2plY3Q6e319LGVtaXRzOlsiZWRpdCIsImRlbGV0ZSJdLHNldHVwKGUse2VtaXQ6b30pe2NvbnN0IGE9ZSxsPW8sbj1bW3tsYWJlbDoiVmlldyIsaWNvbjoiaS1sdWNpZGUtZXllIix0bzpgL3Byb2plY3RzLyR7YS5wcm9qZWN0LmlkfWB9LHtsYWJlbDoiRWRpdCIsaWNvbjoiaS1sdWNpZGUtcGVuY2lsIixvblNlbGVjdDooKT0+bCgiZWRpdCIsYS5wcm9qZWN0KX0se2xhYmVsOiJEZWxldGUiLGljb246ImktbHVjaWRlLXRyYXNoLTIiLGNvbG9yOiJlcnJvciIsb25TZWxlY3Q6KCk9PmwoImRlbGV0ZSIsYS5wcm9qZWN0KX1dXTtyZXR1cm4obyxhLGwsaSk9Pntjb25zdCB1PXMsZD12LGM9YixtPXI7YShgPGRpdiR7Qyh0Lm1lcmdlUHJvcHMoe2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJnLWVsZXZhdGVkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1kZWZhdWx0In0saSkpfT48ZGl2IGNsYXNzPSJmbGV4LTEgbWluLXctMCI+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiPmApLGEoeCh1LHt0bzpgL3Byb2plY3RzLyR7ZS5wcm9qZWN0LmlkfWAsY2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQgaG92ZXI6dW5kZXJsaW5lIHRydW5jYXRlIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChvLGEsbCxyKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyhlLnByb2plY3QubmFtZSksMSldO2EoYCR7dyhlLnByb2plY3QubmFtZSl9YCl9KSxfOjF9LGwpKSxhKHgoZCx7Y29sb3I6ImFjdGl2ZSI9PT1lLnByb2plY3Quc3RhdHVzPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0OnQud2l0aEN0eCgobyxhLGwscik9PntpZighYSlyZXR1cm5bdC5jcmVhdGVUZXh0Vk5vZGUodC50b0Rpc3BsYXlTdHJpbmcoZS5wcm9qZWN0LnN0YXR1cyksMSldO2EoYCR7dyhlLnByb2plY3Quc3RhdHVzKX1gKX0pLF86MX0sbCkpLGEoIjwvZGl2PiIpLGUucHJvamVjdC5kZXNjcmlwdGlvbj9hKGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIG10LTAuNSB0cnVuY2F0ZSI+JHt3KGUucHJvamVjdC5kZXNjcmlwdGlvbil9PC9wPmApOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCI8L2Rpdj4iKSxhKHgoYyx7aXRlbXM6bn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLG8sYSxsKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKG0se2ljb246ImktbHVjaWRlLWVsbGlwc2lzLXZlcnRpY2FsIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InNtIn0pXTtvKHgobSx7aWNvbjoiaS1sdWNpZGUtZWxsaXBzaXMtdmVydGljYWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToic20ifSxudWxsLGEsbCkpfSksXzoxfSxsKSksYSgiPC9kaXY+Iil9fX0pLFU9ay5zZXR1cDtrLnNldHVwPShlLG8pPT57Y29uc3QgYT10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9qZWN0L2FwcC9jb21wb25lbnRzL1Byb2plY3QvUHJvamVjdEl0ZW0udnVlIiksVT9VKGUsbyk6dm9pZCAwfTtjb25zdCBSPU9iamVjdC5hc3NpZ24oayx7X19uYW1lOiJQcm9qZWN0SXRlbSJ9KSxCPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlByb2plY3RMaXN0IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7cHJvamVjdHM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz10O3JldHVybih0LGEsbCxyKT0+e2NvbnN0IHM9aixpPW47YShgPGRpdiR7QyhyKX0+YCksZS5sb2FkaW5nPyhhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksXygzLGU9PnthKHgocyx7a2V5OmUsY2xhc3M6ImgtMTYgcm91bmRlZC1sZyJ9LG51bGwsbCkpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSk6MD09PWUucHJvamVjdHMubGVuZ3RoPyhhKCc8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBweS0xMiB0ZXh0LW11dGVkIj4nKSxhKHgoaSx7bmFtZToiaS1sdWNpZGUtZm9sZGVyLWthbmJhbiIsY2xhc3M6InNpemUtMTAgbXgtYXV0byBtYi0zIG9wYWNpdHktNDAifSxudWxsLGwpKSxhKCI8cD5ObyBwcm9qZWN0cyB5ZXQ8L3A+PC9kaXY+IikpOihhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksXyhlLnByb2plY3RzLGU9PnthKHgoUix7a2V5OmUuaWQscHJvamVjdDplLG9uRWRpdDplPT5vKCJlZGl0IixlKSxvbkRlbGV0ZTplPT5vKCJkZWxldGUiLGUpfSxudWxsLGwpKX0pLGEoIlx4M2MhLS1dLS1ceDNlPC9kaXY+IikpLGEoIjwvZGl2PiIpfX19KSxFPUIuc2V0dXA7Qi5zZXR1cD0oZSxvKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvamVjdC9hcHAvY29tcG9uZW50cy9Qcm9qZWN0L1Byb2plY3RMaXN0LnZ1ZSIpLEU/RShlLG8pOnZvaWQgMH07Y29uc3QgST1PYmplY3QuYXNzaWduKEIse19fbmFtZToiUHJvamVjdExpc3QifSksTD1TeW1ib2woInByb2plY3RzIikscT10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbmRleCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobil7byh7dGl0bGU6IlByb2plY3RzIn0pO2NvbnN0IHM9dSgpLGQ9YSgpLGM9dC5yZWYoITEpLG09dC5yZWYoITEpLHA9dC5yZWYobnVsbCkse2RhdGE6ZixzdGF0dXM6aixlcnJvcjp2LHJlZnJlc2g6Yn09bCgicHJvamVjdHMiLCgpPT5zLmZldGNoUHJvamVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTtoKHYpO2NvbnN0IEM9dC5jb21wdXRlZCgoKT0+InBlbmRpbmciPT09ai52YWx1ZSk7ZnVuY3Rpb24gb3BlbkNyZWF0ZSgpe3AudmFsdWU9bnVsbCxtLnZhbHVlPSEwfWZ1bmN0aW9uIG9wZW5FZGl0KGUpe3AudmFsdWU9ZSxtLnZhbHVlPSEwfWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChlKXtjLnZhbHVlPSEwO3RyeXtjb25zdCB0PSEhcC52YWx1ZTtwLnZhbHVlP2F3YWl0IHMudXBkYXRlUHJvamVjdChwLnZhbHVlLmlkLGUpOmF3YWl0IHMuY3JlYXRlUHJvamVjdChlKSxhd2FpdCBiKCksbS52YWx1ZT0hMSxkLmFkZCh7dGl0bGU6dD8iUHJvamVjdCB1cGRhdGVkIjoiUHJvamVjdCBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCB0PWU7ZC5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2MudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVByb2plY3QoZSl7YXdhaXQgcy5kZWxldGVQcm9qZWN0KGUpLGF3YWl0IGIoKX1hc3luYyBmdW5jdGlvbiBoYW5kbGVEZWxldGUoZSl7dHJ5e2F3YWl0IGRlbGV0ZVByb2plY3QoZS5pZCksZC5hZGQoe3RpdGxlOiJQcm9qZWN0IGRlbGV0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtkLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1yZXR1cm4gdC5wcm92aWRlKEwse3Byb2plY3RzOmYsZmV0Y2hQcm9qZWN0czphc3luYyBmdW5jdGlvbigpe2F3YWl0IGIoKX0sY3JlYXRlUHJvamVjdDphc3luYyBmdW5jdGlvbihlKXtyZXR1cm4gcy5jcmVhdGVQcm9qZWN0KGUpfSx1cGRhdGVQcm9qZWN0OmFzeW5jIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMudXBkYXRlUHJvamVjdChlLHQpfSxkZWxldGVQcm9qZWN0OmRlbGV0ZVByb2plY3R9KSwobyxhLGwsbik9Pntjb25zdCBzPWUsdT1yLGQ9aTthKCJceDNjIS0tWy0tXHgzZSIpLGEoeChzLHtpZDoicHJvamVjdHMifSx7aGVhZGVyOnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShWLHt0aXRsZToiUHJvamVjdHMifSx7cmlnaHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh1LHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2plY3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksXzoxfSldO28oeChWLHt0aXRsZToiUHJvamVjdHMifSx7cmlnaHQ6dC53aXRoQ3R4KChlLG8sYSxsKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKHUse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvamVjdCIsb25DbGljazplPT5vcGVuQ3JlYXRlKCl9LG51bGwsOCxbIm9uQ2xpY2siXSldO28oeCh1LHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2plY3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLGEsbCkpfSksXzoxfSxhLGwpKX0pLGJvZHk6dC53aXRoQ3R4KChlLG8sYSxsKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00In0sW3QuY3JlYXRlVk5vZGUoSSx7cHJvamVjdHM6dC51bnJlZihmKSxsb2FkaW5nOnQudW5yZWYoQyksb25FZGl0Om9wZW5FZGl0LG9uRGVsZXRlOmhhbmRsZURlbGV0ZX0sbnVsbCw4LFsicHJvamVjdHMiLCJsb2FkaW5nIl0pXSldO28oYDxkaXYgY2xhc3M9Im1heC13LTN4bCBteC1hdXRvIHAtNCIke2x9PmApLG8oeChJLHtwcm9qZWN0czp0LnVucmVmKGYpLGxvYWRpbmc6dC51bnJlZihDKSxvbkVkaXQ6b3BlbkVkaXQsb25EZWxldGU6aGFuZGxlRGVsZXRlfSxudWxsLGEsbCkpLG8oIjwvZGl2PiIpfSksXzoxfSxsKSksYSh4KGQse29wZW46dC51bnJlZihtKSwib25VcGRhdGU6b3BlbiI6ZT0+dC5pc1JlZihtKT9tLnZhbHVlPWU6bnVsbCx0aXRsZTp0LnVucmVmKHApPyJFZGl0IHByb2plY3QiOiJOZXcgcHJvamVjdCJ9LHtib2R5OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShELHsiaW5pdGlhbC12YWx1ZXMiOnQudW5yZWYocCk/ey4uLnQudW5yZWYocCksZGVzY3JpcHRpb246dC51bnJlZihwKS5kZXNjcmlwdGlvbj8/dm9pZCAwfTp2b2lkIDAsbG9hZGluZzp0LnVucmVmKGMpLG9uU3VibWl0OmhhbmRsZVN1Ym1pdCxvbkNhbmNlbDplPT5tLnZhbHVlPSExfSxudWxsLDgsWyJpbml0aWFsLXZhbHVlcyIsImxvYWRpbmciLCJvbkNhbmNlbCJdKV07byh4KEQseyJpbml0aWFsLXZhbHVlcyI6dC51bnJlZihwKT97Li4udC51bnJlZihwKSxkZXNjcmlwdGlvbjp0LnVucmVmKHApLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOnQudW5yZWYoYyksb25TdWJtaXQ6aGFuZGxlU3VibWl0LG9uQ2FuY2VsOmU9Pm0udmFsdWU9ITF9LG51bGwsYSxsKSl9KSxfOjF9LGwpKSxhKCJceDNjIS0tXS0tXHgzZSIpfX19KSxGPXEuc2V0dXA7cS5zZXR1cD0oZSxvKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvamVjdC9hcHAvcGFnZXMvcHJvamVjdHMvaW5kZXgudnVlIiksRj9GKGUsbyk6dm9pZCAwfTtleHBvcnR7cSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgtQzJRTjhnekUubWpzLm1hcAo=", "chunks/build/index-C9g0NVk3.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7diBhcyBhLGggYXMgbCxhIGFzIHQsaSBhcyByLGFmIGFzIHMsYW4gYXMgbixfIGFzIG8seSBhcyB1fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBpfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBkfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHtfIGFzIG19ZnJvbSIuL1NlcGFyYXRvci1Ed2NSOVBNMS5tanMiO2ltcG9ydHtfIGFzIGZ9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e3cgYXMgY31mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7byBhcyBwLGYgYXMgYn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vXy9zaGFyZWQuZXNtLWJ1bmRsZXIubWpzIjtpbXBvcnQiLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydCIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2NvbnN0IHY9YS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiaW5kZXgiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHYpe2NvbnN0IGc9bCgpLHg9dSgpLF89dCgpLHtkYXRhOlYscmVmcmVzaDp3LGVycm9yOnl9PXIoImFjdGl2ZS1vcmciLCgpPT54LmZldGNoT3JnYW5pemF0aW9uKCkpO2MoeSk7Y29uc3QgQz1hLmNvbXB1dGVkKCgpPT5zKGcuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6bWFuYWdlIikpLGg9YS5yZWYoVi52YWx1ZT8ubmFtZT8/IiIpO24oVixoLHtkaXJlY3Rpb246Imx0ciIsdHJhbnNmb3JtOntsdHI6ZT0+ZT8ubmFtZT8/IiJ9fSk7Y29uc3Qgaj1hLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gc2F2ZSgpe2oudmFsdWU9ITA7dHJ5e2F3YWl0IHgudXBkYXRlT3JnYW5pemF0aW9uKHtuYW1lOmgudmFsdWV9KSxhd2FpdCB3KCksXy5hZGQoe3RpdGxlOiJPcmdhbml6YXRpb24gdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Xy5hZGQoe3RpdGxlOiJVcGRhdGUgZmFpbGVkIixkZXNjcmlwdGlvbjplPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtqLnZhbHVlPSExfX1yZXR1cm4obCx0LHIscyk9Pntjb25zdCBuPWUsdT1vLGM9aSx2PWQsZz1tLHg9Zjt0KGA8ZGl2JHtwKHMpfT5gKSx0KGIobix7dGl0bGU6IkdlbmVyYWwiLGRlc2NyaXB0aW9uOiJZb3VyIG9yZ2FuaXphdGlvbiBkZXRhaWxzLiIsdmFyaWFudDoibmFrZWQiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczoibWItNCJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoZSxsLHQscik9PntpZighbClyZXR1cm5bYS51bnJlZihDKSYmIWEudW5yZWYoVik/LmlzX3N5c3RlbT8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKHUse2tleTowLGxhYmVsOiJTYXZlIGNoYW5nZXMiLGxvYWRpbmc6YS51bnJlZihqKSxjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpzYXZlfSxudWxsLDgsWyJsb2FkaW5nIl0pKTphLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2EudW5yZWYoQykmJiFhLnVucmVmKFYpPy5pc19zeXN0ZW0/bChiKHUse2xhYmVsOiJTYXZlIGNoYW5nZXMiLGxvYWRpbmc6YS51bnJlZihqKSxjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpzYXZlfSxudWxsLHQscikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86MX0scikpLHQoYihuLHt2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDphLndpdGhDdHgoKGUsbCx0LHIpPT57aWYoIWwpcmV0dXJuW2EuY3JlYXRlVk5vZGUoYyx7bGFiZWw6Ik5hbWUiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDphLndpdGhDdHgoKCk9PlthLmNyZWF0ZVZOb2RlKHYse21vZGVsVmFsdWU6YS51bnJlZihoKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihoKT9oLnZhbHVlPWU6bnVsbCxkaXNhYmxlZDohYS51bnJlZihDKXx8YS51bnJlZihWKT8uaXNfc3lzdGVtfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsImRpc2FibGVkIl0pXSksXzoxfSksYS5jcmVhdGVWTm9kZShnKSxhLmNyZWF0ZVZOb2RlKGMse2xhYmVsOiJTbHVnIixkZXNjcmlwdGlvbjoiVXNlZCBpbiBVUkxzLiBSZWFkLW9ubHkuIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5jcmVhdGVWTm9kZSh2LHsibW9kZWwtdmFsdWUiOmEudW5yZWYoVik/LnNsdWcsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXSksXzoxfSksYS5jcmVhdGVWTm9kZShnKSxhLmNyZWF0ZVZOb2RlKGMse2xhYmVsOiJNZW1iZXJzIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5jcmVhdGVWTm9kZSh4LHtsYWJlbDpgJHthLnVucmVmKFYpPy5tZW1iZXJDb3VudD8/MH1gLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUifSxudWxsLDgsWyJsYWJlbCJdKV0pLF86MX0pXTtsKGIoYyx7bGFiZWw6Ik5hbWUiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDphLndpdGhDdHgoKGUsbCx0LHIpPT57aWYoIWwpcmV0dXJuW2EuY3JlYXRlVk5vZGUodix7bW9kZWxWYWx1ZTphLnVucmVmKGgpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5hLmlzUmVmKGgpP2gudmFsdWU9ZTpudWxsLGRpc2FibGVkOiFhLnVucmVmKEMpfHxhLnVucmVmKFYpPy5pc19zeXN0ZW19LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldO2woYih2LHttb2RlbFZhbHVlOmEudW5yZWYoaCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYoaCk/aC52YWx1ZT1lOm51bGwsZGlzYWJsZWQ6IWEudW5yZWYoQyl8fGEudW5yZWYoVik/LmlzX3N5c3RlbX0sbnVsbCx0LHIpKX0pLF86MX0sdCxyKSksbChiKGcsbnVsbCxudWxsLHQscikpLGwoYihjLHtsYWJlbDoiU2x1ZyIsZGVzY3JpcHRpb246IlVzZWQgaW4gVVJMcy4gUmVhZC1vbmx5LiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoZSxsLHQscik9PntpZighbClyZXR1cm5bYS5jcmVhdGVWTm9kZSh2LHsibW9kZWwtdmFsdWUiOmEudW5yZWYoVik/LnNsdWcsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXTtsKGIodix7Im1vZGVsLXZhbHVlIjphLnVucmVmKFYpPy5zbHVnLGRpc2FibGVkOiIifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxsKGIoZyxudWxsLG51bGwsdCxyKSksbChiKGMse2xhYmVsOiJNZW1iZXJzIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLGwsdCxyKT0+e2lmKCFsKXJldHVyblthLmNyZWF0ZVZOb2RlKHgse2xhYmVsOmAke2EudW5yZWYoVik/Lm1lbWJlckNvdW50Pz8wfWAsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSJ9LG51bGwsOCxbImxhYmVsIl0pXTtsKGIoeCx7bGFiZWw6YCR7YS51bnJlZihWKT8ubWVtYmVyQ291bnQ/PzB9YCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0sbnVsbCx0LHIpKX0pLF86MX0sdCxyKSl9KSxfOjF9LHIpKSx0KCI8L2Rpdj4iKX19fSksZz12LnNldHVwO3Yuc2V0dXA9KGUsbCk9Pntjb25zdCB0PWEudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbmRleC52dWUiKSxnP2coZSxsKTp2b2lkIDB9O2V4cG9ydHt2IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC1DOWcwTlZrMy5tanMubWFwCg==", "chunks/build/index-CyQmH4st.mjs": "aW1wb3J0e3YgYXMgZX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e299ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgcj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbmRleCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXA6ZT0+KGUscixzLHQpPT57cihgPGRpdiR7byh0KX0+PC9kaXY+YCl9fSkscz1yLnNldHVwO3Iuc2V0dXA9KG8scik9Pntjb25zdCB0PWUudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgicGFnZXMvaW5kZXgudnVlIikscz9zKG8scik6dm9pZCAwfTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgtQ3lRbUg0c3QubWpzLm1hcAo=", "chunks/build/index-etqsKZ-m.mjs": "aW1wb3J0e3YgYXMgZX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e299ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgcj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbmRleCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXA6ZT0+KGUscixzLHQpPT57cihgPGRpdiR7byh0KX0+PC9kaXY+YCl9fSkscz1yLnNldHVwO3Iuc2V0dXA9KG8scik9Pntjb25zdCB0PWUudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL2luZGV4LnZ1ZSIpLHM/cyhvLHIpOnZvaWQgMH07ZXhwb3J0e3IgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LWV0cXNLWi1tLm1qcy5tYXAK", "chunks/build/index-mH_0pvGP.mjs": "Y29uc3QgdD1uZXcgVGV4dERlY29kZXIsdG9VVEY4U3RyaW5nPShlLGk9MCxuPWUubGVuZ3RoKT0+dC5kZWNvZGUoZS5zbGljZShpLG4pKSx0b0hleFN0cmluZz0odCxlPTAsaT10Lmxlbmd0aCk9PnQuc2xpY2UoZSxpKS5yZWR1Y2UoKHQsZSk9PnQrKCIwIitlLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLCIiKSxyZWFkSW50MTZMRT0odCxlPTApPT57Y29uc3QgaT10W2VdKzI1Nip0W2UrMV07cmV0dXJuIGl8MTMxMDcwKigzMjc2OCZpKX0scmVhZFVJbnQxNkJFPSh0LGU9MCk9PjI1Nip0W2VdK3RbZSsxXSxyZWFkVUludDE2TEU9KHQsZT0wKT0+dFtlXSsyNTYqdFtlKzFdLHJlYWRVSW50MjRMRT0odCxlPTApPT50W2VdKzI1Nip0W2UrMV0rNjU1MzYqdFtlKzJdLHJlYWRJbnQzMkxFPSh0LGU9MCk9PnRbZV0rMjU2KnRbZSsxXSs2NTUzNip0W2UrMl0rKHRbZSszXTw8MjQpLHJlYWRVSW50MzJCRT0odCxlPTApPT50W2VdKjIqKjI0KzY1NTM2KnRbZSsxXSsyNTYqdFtlKzJdK3RbZSszXSxyZWFkVUludDMyTEU9KHQsZT0wKT0+dFtlXSsyNTYqdFtlKzFdKzY1NTM2KnRbZSsyXSt0W2UrM10qMioqMjQsZT17cmVhZFVJbnQxNkJFOnJlYWRVSW50MTZCRSxyZWFkVUludDE2TEU6cmVhZFVJbnQxNkxFLHJlYWRVSW50MzJCRTpyZWFkVUludDMyQkUscmVhZFVJbnQzMkxFOnJlYWRVSW50MzJMRX07ZnVuY3Rpb24gcmVhZFVJbnQodCxpLG4scil7bj1ufHwwO3JldHVybiBlWyJyZWFkVUludCIraSsocj8iQkUiOiJMRSIpXSh0LG4pfWNvbnN0IGk9e3ZhbGlkYXRlOnQ9PiJCTSI9PT10b1VURjhTdHJpbmcodCwwLDIpLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpNYXRoLmFicyhyZWFkSW50MzJMRSh0LDIyKSksd2lkdGg6cmVhZFVJbnQzMkxFKHQsMTgpfSl9O2Z1bmN0aW9uIGdldFNpemVGcm9tT2Zmc2V0KHQsZSl7Y29uc3QgaT10W2VdO3JldHVybiAwPT09aT8yNTY6aX1mdW5jdGlvbiBnZXRJbWFnZVNpemUkMSh0LGUpe2NvbnN0IGk9NisxNiplO3JldHVybntoZWlnaHQ6Z2V0U2l6ZUZyb21PZmZzZXQodCxpKzEpLHdpZHRoOmdldFNpemVGcm9tT2Zmc2V0KHQsaSl9fWNvbnN0IG49e3ZhbGlkYXRlKHQpe2NvbnN0IGU9cmVhZFVJbnQxNkxFKHQsMCksaT1yZWFkVUludDE2TEUodCw0KTtpZigwIT09ZXx8MD09PWkpcmV0dXJuITE7cmV0dXJuIDE9PT1yZWFkVUludDE2TEUodCwyKX0sY2FsY3VsYXRlKHQpe2NvbnN0IGU9cmVhZFVJbnQxNkxFKHQsNCksaT1nZXRJbWFnZVNpemUkMSh0LDApO2lmKDE9PT1lKXJldHVybiBpO2NvbnN0IG49W2ldO2ZvcihsZXQgaT0xO2k8ZTtpKz0xKW4ucHVzaChnZXRJbWFnZVNpemUkMSh0LGkpKTtyZXR1cm57aGVpZ2h0OmkuaGVpZ2h0LGltYWdlczpuLHdpZHRoOmkud2lkdGh9fX0scj17dmFsaWRhdGUodCl7Y29uc3QgZT1yZWFkVUludDE2TEUodCwwKSxpPXJlYWRVSW50MTZMRSh0LDQpO2lmKDAhPT1lfHwwPT09aSlyZXR1cm4hMTtyZXR1cm4gMj09PXJlYWRVSW50MTZMRSh0LDIpfSxjYWxjdWxhdGU6dD0+bi5jYWxjdWxhdGUodCl9LG89e3ZhbGlkYXRlOnQ9PjU0MjMyNzg3Nj09PXJlYWRVSW50MzJMRSh0LDApLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpyZWFkVUludDMyTEUodCwxMiksd2lkdGg6cmVhZFVJbnQzMkxFKHQsMTYpfSl9LGM9L15HSUY4Wzc5XWEvLGg9e3ZhbGlkYXRlOnQ9PmMudGVzdCh0b1VURjhTdHJpbmcodCwwLDYpKSxjYWxjdWxhdGU6dD0+KHtoZWlnaHQ6cmVhZFVJbnQxNkxFKHQsOCksd2lkdGg6cmVhZFVJbnQxNkxFKHQsNil9KX0sYT17dmFsaWRhdGU6dD0+e2NvbnN0IGU9ZmluZEJveCQxKHQsImZ0eXAiKTtpZighZSlyZXR1cm4hMTtjb25zdCBpPXRvVVRGOFN0cmluZyh0LGUub2Zmc2V0KzgsZS5vZmZzZXQrMTIpO3JldHVyblsiaGVpYyIsImhlaXgiLCJoZXZjIiwiaGV2eCIsIm1pZjEiLCJtc2YxIl0uaW5jbHVkZXMoaSl9LGNhbGN1bGF0ZTp0PT57Y29uc3QgZT1maW5kQm94JDEodCwibWV0YSIpO2lmKCFlKXRocm93IG5ldyBUeXBlRXJyb3IoImhlaWM6IG1ldGEgYm94IG5vdCBmb3VuZCIpO2NvbnN0IGk9ZmluZEJveCQxKHQsImlwcnAiLGUub2Zmc2V0KzEyLGUub2Zmc2V0K2Uuc2l6ZSk7aWYoIWkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaGVpYzogaXBycCBib3ggbm90IGZvdW5kIik7Y29uc3Qgbj1maW5kQm94JDEodCwiaXBjbyIsaS5vZmZzZXQrOCxpLm9mZnNldCtpLnNpemUpO2lmKCFuKXRocm93IG5ldyBUeXBlRXJyb3IoImhlaWM6IGlwY28gYm94IG5vdCBmb3VuZCIpO2NvbnN0IHI9ZnVuY3Rpb24odCxlLGk9MCxuPXQubGVuZ3RoKXtsZXQgcj1pO2NvbnN0IG89W107Zm9yKDtyPG47KXtjb25zdCBpPXJlYWRVSW50MzJCRSh0LHIpO2lmKHRvVVRGOFN0cmluZyh0LHIrNCxyKzgpPT09ZSYmby5wdXNoKHtvZmZzZXQ6cixzaXplOml9KSxpPD0wfHxyK2k+bilicmVhaztyKz1pfXJldHVybiBvfSh0LCJpc3BlIixuLm9mZnNldCs4LG4ub2Zmc2V0K24uc2l6ZSkubWFwKGU9Pih7d2lkdGg6cmVhZFVJbnQzMkJFKHQsZS5vZmZzZXQrMTIpLGhlaWdodDpyZWFkVUludDMyQkUodCxlLm9mZnNldCsxNil9KSk7aWYoMD09PXIubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoImhlaWM6IGlzcGUgYm94IG5vdCBmb3VuZCIpO2xldCBvPXJbMF07Zm9yKGxldCB0PTE7dDxyLmxlbmd0aDt0Kyspe2NvbnN0IGU9clt0XTtlLndpZHRoKmUuaGVpZ2h0Pm8ud2lkdGgqby5oZWlnaHQmJihvPWUpfXJldHVybiBvfX07ZnVuY3Rpb24gZmluZEJveCQxKHQsZSxpPTAsbj10Lmxlbmd0aCl7bGV0IHI9aTtmb3IoO3I8bjspe2NvbnN0IGk9cmVhZFVJbnQzMkJFKHQscik7aWYodG9VVEY4U3RyaW5nKHQscis0LHIrOCk9PT1lKXJldHVybntvZmZzZXQ6cixzaXplOml9O2lmKGk8PTB8fHIraT5uKWJyZWFrO3IrPWl9fWNvbnN0IGY9e0lDT046MzIsIklDTiMiOjMyLCJpY20jIjoxNixpY200OjE2LGljbTg6MTYsImljcyMiOjE2LGljczQ6MTYsaWNzODoxNixpczMyOjE2LHM4bWs6MTYsaWNwNDoxNixpY2w0OjMyLGljbDg6MzIsaWwzMjozMixsOG1rOjMyLGljcDU6MzIsaWMxMTozMixpY2g0OjQ4LGljaDg6NDgsaWgzMjo0OCxoOG1rOjQ4LGljcDY6NjQsaWMxMjozMixpdDMyOjEyOCx0OG1rOjEyOCxpYzA3OjEyOCxpYzA4OjI1NixpYzEzOjI1NixpYzA5OjUxMixpYzE0OjUxMixpYzEwOjEwMjR9O2Z1bmN0aW9uIHJlYWRJbWFnZUhlYWRlcih0LGUpe2NvbnN0IGk9ZSs0O3JldHVyblt0b1VURjhTdHJpbmcodCxlLGkpLHJlYWRVSW50MzJCRSh0LGkpXX1mdW5jdGlvbiBnZXRJbWFnZVNpemUodCl7Y29uc3QgZT1mW3RdO3JldHVybnt3aWR0aDplLGhlaWdodDplLHR5cGU6dH19Y29uc3Qgcz17dmFsaWRhdGU6dD0+ImljbnMiPT09dG9VVEY4U3RyaW5nKHQsMCw0KSxjYWxjdWxhdGUodCl7Y29uc3QgZT10Lmxlbmd0aCxpPXJlYWRVSW50MzJCRSh0LDQpO2xldCBuPTgscj1yZWFkSW1hZ2VIZWFkZXIodCxuKSxvPWdldEltYWdlU2l6ZShyWzBdKTtpZihuKz1yWzFdLG49PT1pKXJldHVybiBvO2NvbnN0IGM9e2hlaWdodDpvLmhlaWdodCxpbWFnZXM6W29dLHdpZHRoOm8ud2lkdGh9O2Zvcig7bjxpJiZuPGU7KXI9cmVhZEltYWdlSGVhZGVyKHQsbiksbz1nZXRJbWFnZVNpemUoclswXSksbis9clsxXSxjLmltYWdlcy5wdXNoKG8pO3JldHVybiBjfX0sZD17dmFsaWRhdGU6dD0+ImZmNGZmZjUxIj09PXRvSGV4U3RyaW5nKHQsMCw0KSxjYWxjdWxhdGU6dD0+KHtoZWlnaHQ6cmVhZFVJbnQzMkJFKHQsMTIpLHdpZHRoOnJlYWRVSW50MzJCRSh0LDgpfSl9LGw9IjY2NzQ3OTcwIix1PSI2YTcwMzI2OCIsZz0iNmE1MDIwMjAiLHc9IjcyNzI2NTcxIixwYXJzZUlIRFI9dD0+KHtoZWlnaHQ6cmVhZFVJbnQzMkJFKHQsNCksd2lkdGg6cmVhZFVJbnQzMkJFKHQsOCl9KSxwPXt2YWxpZGF0ZSh0KXtjb25zdCBlPXRvSGV4U3RyaW5nKHQsNCw4KSxpPXJlYWRVSW50MzJCRSh0LDApO2lmKGUhPT1nfHxpPDEpcmV0dXJuITE7Y29uc3Qgbj1pKzQscj1yZWFkVUludDMyQkUodCxpKSxvPXQuc2xpY2UobixuK3IpO3JldHVybiB0b0hleFN0cmluZyhvLDAsNCk9PT1sfSxjYWxjdWxhdGUodCl7Y29uc3QgZT1yZWFkVUludDMyQkUodCwwKTtsZXQgaT1lKzQrcmVhZFVJbnQxNkJFKHQsZSsyKTtzd2l0Y2godG9IZXhTdHJpbmcodCxpLGkrNCkpe2Nhc2UgdzpyZXR1cm4gaT1pKzQrNCsodD0+e2NvbnN0IGU9dFswXTtsZXQgaT0xKzIqZTtyZXR1cm4gaT1pKzIrcmVhZFVJbnQxNkJFKHQsaSkqKDIrZSksaSsyK3JlYWRVSW50MTZCRSh0LGkpKigxNitlKX0pKHQuc2xpY2UoaSs0KSkscGFyc2VJSERSKHQuc2xpY2UoaSs4LGkrMjQpKTtjYXNlIHU6cmV0dXJuIHBhcnNlSUhEUih0LnNsaWNlKGkrOCxpKzI0KSk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbnN1cHBvcnRlZCBoZWFkZXIgZm91bmQ6ICIrdG9VVEY4U3RyaW5nKHQsaSxpKzQpKX19fTtmdW5jdGlvbiBpc0VYSUYodCl7cmV0dXJuIjQ1Nzg2OTY2Ij09PXRvSGV4U3RyaW5nKHQsMiw2KX1mdW5jdGlvbiBleHRyYWN0U2l6ZSh0LGUpe3JldHVybntoZWlnaHQ6cmVhZFVJbnQxNkJFKHQsZSksd2lkdGg6cmVhZFVJbnQxNkJFKHQsZSsyKX19ZnVuY3Rpb24gdmFsaWRhdGVFeGlmQmxvY2sodCxlKXtjb25zdCBpPXQuc2xpY2UoMixlKSxuPXRvSGV4U3RyaW5nKGksNiw4KSxyPSI0ZDRkIj09PW47aWYocnx8IjQ5NDkiPT09bilyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBpPXJlYWRVSW50KHQsMTYsMTQsZSk7Zm9yKGxldCBuPTA7bjxpO24rKyl7Y29uc3QgaT0xNisxMipuLHI9aSsxMjtpZihpPnQubGVuZ3RoKXJldHVybjtjb25zdCBvPXQuc2xpY2UoaSxyKTtpZigyNzQ9PT1yZWFkVUludChvLDE2LDAsZSkpe2lmKDMhPT1yZWFkVUludChvLDE2LDIsZSkpcmV0dXJuO2lmKDEhPT1yZWFkVUludChvLDMyLDQsZSkpcmV0dXJuO3JldHVybiByZWFkVUludChvLDE2LDgsZSl9fX0oaSxyKX1mdW5jdGlvbiB2YWxpZGF0ZUlucHV0KHQsZSl7aWYoZT50Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDb3JydXB0IEpQRywgZXhjZWVkZWQgYnVmZmVyIGxpbWl0cyIpO2lmKDI1NSE9PXRbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBKUEcsIG1hcmtlciB0YWJsZSBjb3JydXB0ZWQiKX1jb25zdCBtPXt2YWxpZGF0ZTp0PT4iZmZkOCI9PT10b0hleFN0cmluZyh0LDAsMiksY2FsY3VsYXRlKHQpe2xldCBlLGk7Zm9yKHQ9dC5zbGljZSg0KTt0Lmxlbmd0aD4wOyl7Y29uc3Qgbj1yZWFkVUludDE2QkUodCwwKTtpZihpc0VYSUYodCkmJihlPXZhbGlkYXRlRXhpZkJsb2NrKHQsbikpLHZhbGlkYXRlSW5wdXQodCxuKSxpPXRbbisxXSwxOTI9PT1pfHwxOTM9PT1pfHwxOTQ9PT1pKXtjb25zdCBpPWV4dHJhY3RTaXplKHQsbis1KTtyZXR1cm4gZT97aGVpZ2h0OmkuaGVpZ2h0LG9yaWVudGF0aW9uOmUsd2lkdGg6aS53aWR0aH06aX10PXQuc2xpY2UobisyKX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIEpQRywgbm8gc2l6ZSBmb3VuZCIpfX0sST17dmFsaWRhdGU6dD0+IktUWCAxMSI9PT10b1VURjhTdHJpbmcodCwxLDcpLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpyZWFkVUludDMyTEUodCw0MCksd2lkdGg6cmVhZFVJbnQzMkxFKHQsMzYpfSl9LHY9IkNnQkkiLHg9e3ZhbGlkYXRlKHQpe2lmKCJQTkdcclxuGlxuIj09PXRvVVRGOFN0cmluZyh0LDEsOCkpe2xldCBlPXRvVVRGOFN0cmluZyh0LDEyLDE2KTtpZihlPT09diYmKGU9dG9VVEY4U3RyaW5nKHQsMjgsMzIpKSwiSUhEUiIhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgUE5HIik7cmV0dXJuITB9cmV0dXJuITF9LGNhbGN1bGF0ZTp0PT50b1VURjhTdHJpbmcodCwxMiwxNik9PT12P3toZWlnaHQ6cmVhZFVJbnQzMkJFKHQsMzYpLHdpZHRoOnJlYWRVSW50MzJCRSh0LDMyKX06e2hlaWdodDpyZWFkVUludDMyQkUodCwyMCksd2lkdGg6cmVhZFVJbnQzMkJFKHQsMTYpfX0sYj17UDE6InBibS9hc2NpaSIsUDI6InBnbS9hc2NpaSIsUDM6InBwbS9hc2NpaSIsUDQ6InBibSIsUDU6InBnbSIsUDY6InBwbSIsUDc6InBhbSIsUEY6InBmbSJ9LEU9e2RlZmF1bHQ6dD0+e2xldCBlPVtdO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGk9dC5zaGlmdCgpO2lmKCIjIiE9PWlbMF0pe2U9aS5zcGxpdCgiICIpO2JyZWFrfX1pZigyPT09ZS5sZW5ndGgpcmV0dXJue2hlaWdodDpOdW1iZXIucGFyc2VJbnQoZVsxXSwxMCksd2lkdGg6TnVtYmVyLnBhcnNlSW50KGVbMF0sMTApfTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIFBOTSIpfSxwYW06dD0+e2NvbnN0IGU9e307Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3QgaT10LnNoaWZ0KCk7aWYoaS5sZW5ndGg+MTZ8fChpLmNvZGVQb2ludEF0KDApfHwwKT4xMjgpY29udGludWU7Y29uc3RbbixyXT1pLnNwbGl0KCIgIik7aWYobiYmciYmKGVbbi50b0xvd2VyQ2FzZSgpXT1OdW1iZXIucGFyc2VJbnQociwxMCkpLGUuaGVpZ2h0JiZlLndpZHRoKWJyZWFrfWlmKGUuaGVpZ2h0JiZlLndpZHRoKXJldHVybntoZWlnaHQ6ZS5oZWlnaHQsd2lkdGg6ZS53aWR0aH07dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBQQU0iKX19LHk9e3ZhbGlkYXRlOnQ9PnRvVVRGOFN0cmluZyh0LDAsMilpbiBiLGNhbGN1bGF0ZSh0KXtjb25zdCBlPXRvVVRGOFN0cmluZyh0LDAsMiksaT1iW2VdLG49dG9VVEY4U3RyaW5nKHQsMykuc3BsaXQoL1tcblxyXSsvKTtyZXR1cm4oRVtpXXx8RS5kZWZhdWx0KShuKX19LFA9e3ZhbGlkYXRlOnQ9PiI4QlBTIj09PXRvVVRGOFN0cmluZyh0LDAsNCksY2FsY3VsYXRlOnQ9Pih7aGVpZ2h0OnJlYWRVSW50MzJCRSh0LDE0KSx3aWR0aDpyZWFkVUludDMyQkUodCwxOCl9KX0sVD0vPHN2Z1xzKFteIic+XXwiW14iXSoifCdbXiddKicpKj4vLHo9e2hlaWdodDovXHNoZWlnaHQ9KFsiJ10pKFteJV0rPylcMS8scm9vdDpULHZpZXdib3g6L1xzdmlld2JveD0oWyInXSkoLis/KVwxL2ksd2lkdGg6L1xzd2lkdGg9KFsiJ10pKFteJV0rPylcMS99LEI9Mi41NCxVPXtpbjo5NixjbTo5Ni9CLGVtOjE2LGV4OjgsbTo5Ni9CKjEwMCxtbTo5Ni9CLzEwLHBjOjk2LzcyLzEyLHB0Ojk2LzcyLHB4OjF9LGs9bmV3IFJlZ0V4cChgXihbMC05Ll0rKD86ZVxcZCspPykoJHtPYmplY3Qua2V5cyhVKS5qb2luKCJ8Iil9KT8kYCk7ZnVuY3Rpb24gcGFyc2VMZW5ndGgodCl7Y29uc3QgZT1rLmV4ZWModCk7aWYoZSlyZXR1cm4gTWF0aC5yb3VuZChOdW1iZXIoZVsxXSkqKFVbZVsyXV18fDEpKX1mdW5jdGlvbiBwYXJzZVZpZXdib3godCl7Y29uc3QgZT10LnNwbGl0KCIgIik7cmV0dXJue2hlaWdodDpwYXJzZUxlbmd0aChlWzNdKSx3aWR0aDpwYXJzZUxlbmd0aChlWzJdKX19Y29uc3QgUz17dmFsaWRhdGU6dD0+VC50ZXN0KHRvVVRGOFN0cmluZyh0LDAsMWUzKSksY2FsY3VsYXRlKHQpe2NvbnN0IGU9dG9VVEY4U3RyaW5nKHQpLm1hdGNoKHoucm9vdCk7aWYoZSl7Y29uc3QgdD1mdW5jdGlvbih0KXtjb25zdCBlPXQubWF0Y2goei53aWR0aCksaT10Lm1hdGNoKHouaGVpZ2h0KSxuPXQubWF0Y2goei52aWV3Ym94KTtyZXR1cm57aGVpZ2h0OmkmJnBhcnNlTGVuZ3RoKGlbMl0pLHZpZXdib3g6biYmcGFyc2VWaWV3Ym94KG5bMl0pLHdpZHRoOmUmJnBhcnNlTGVuZ3RoKGVbMl0pfX0oZVswXSk7aWYodC53aWR0aCYmdC5oZWlnaHQpcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybntoZWlnaHQ6dC5oZWlnaHQsd2lkdGg6dC53aWR0aH19KHQpO2lmKHQudmlld2JveClyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBpPWUud2lkdGgvZS5oZWlnaHQ7cmV0dXJuIHQud2lkdGg/e2hlaWdodDpNYXRoLmZsb29yKHQud2lkdGgvaSksd2lkdGg6dC53aWR0aH06dC5oZWlnaHQ/e2hlaWdodDp0LmhlaWdodCx3aWR0aDpNYXRoLmZsb29yKHQuaGVpZ2h0KmkpfTp7aGVpZ2h0OmUuaGVpZ2h0LHdpZHRoOmUud2lkdGh9fSh0LHQudmlld2JveCl9dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBTVkciKX19LE09e3ZhbGlkYXRlOnQ9PjA9PT1yZWFkVUludDE2TEUodCwwKSYmMD09PXJlYWRVSW50MTZMRSh0LDQpLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpyZWFkVUludDE2TEUodCwxNCksd2lkdGg6cmVhZFVJbnQxNkxFKHQsMTIpfSl9O2Z1bmN0aW9uIHJlYWRWYWx1ZSh0LGUpe2NvbnN0IGk9cmVhZFVJbnQodCwxNiw4LGUpO3JldHVybihyZWFkVUludCh0LDE2LDEwLGUpPDwxNikraX1mdW5jdGlvbiBuZXh0VGFnKHQpe2lmKHQubGVuZ3RoPjI0KXJldHVybiB0LnNsaWNlKDEyKX1jb25zdCAkPW5ldyBTZXQoWyI0OTQ5MmEwMCIsIjRkNGQwMDJhIl0pO2Z1bmN0aW9uIGZpbmRCb3godCxlLGk9MCxuPXQubGVuZ3RoKXtmb3IobGV0IHI9aTtyPG47KXtjb25zdCBpPXJlYWRVSW50MzJCRSh0LHIpO2lmKHRvVVRGOFN0cmluZyh0LHIrNCxyKzgpPT09ZSlyZXR1cm57b2Zmc2V0OnIsc2l6ZTppfTtpZihpPD0wfHxyK2k+bilicmVhaztyKz1pfXRocm93IG5ldyBFcnJvcihgJHtlfSBib3ggbm90IGZvdW5kYCl9Y29uc3QgTD17Ym1wOmksY3VyOnIsZGRzOm8sZ2lmOmgsaGVpYzphLGljbnM6cyxpY286bixqMmM6ZCxqcDI6cCxqcGc6bSxrdHg6SSxwbmc6eCxwbm06eSxwc2Q6UCxzdmc6Uyx0Z2E6TSx0aWZmOnt2YWxpZGF0ZTp0PT4kLmhhcyh0b0hleFN0cmluZyh0LDAsNCkpLGNhbGN1bGF0ZSh0KXtjb25zdCBlPSJCRSI9PT1mdW5jdGlvbih0KXtjb25zdCBlPXRvVVRGOFN0cmluZyh0LDAsMik7cmV0dXJuIklJIj09PWU/IkxFIjoiTU0iPT09ZT8iQkUiOnZvaWQgMH0odCksaT1mdW5jdGlvbih0LGUpe2NvbnN0IGk9cmVhZFVJbnQodCwzMiw0LGUpO2xldCBuPTEwMjQ7Y29uc3Qgcj10Lmxlbmd0aDtyZXR1cm4gaStuPnImJihuPXItaS0xMCksdC5zbGljZShpKzIsaSsyK24pfSh0LGUpLG49ZnVuY3Rpb24odCxlKXtjb25zdCBpPXt9O2xldCBuPXQ7Zm9yKDtuJiZuLmxlbmd0aD4wOyl7Y29uc3QgdD1yZWFkVUludChuLDE2LDAsZSkscj1yZWFkVUludChuLDE2LDIsZSksbz1yZWFkVUludChuLDMyLDQsZSk7aWYoMD09PXQpYnJlYWs7MSE9PW98fDMhPT1yJiY0IT09cnx8KGlbdF09cmVhZFZhbHVlKG4sZSkpLG49bmV4dFRhZyhuKX1yZXR1cm4gaX0oaSxlKSxyPW5bMjU2XSxvPW5bMjU3XTtpZighcnx8IW8pdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBUaWZmLiBNaXNzaW5nIHRhZ3MiKTtyZXR1cm57aGVpZ2h0Om8sd2lkdGg6cn19fSx3ZWJwOnt2YWxpZGF0ZSh0KXtjb25zdCBlPSJSSUZGIj09PXRvVVRGOFN0cmluZyh0LDAsNCksaT0iV0VCUCI9PT10b1VURjhTdHJpbmcodCw4LDEyKSxuPSJWUDgiPT09dG9VVEY4U3RyaW5nKHQsMTIsMTUpO3JldHVybiBlJiZpJiZufSxjYWxjdWxhdGUodCl7Y29uc3QgZT10b1VURjhTdHJpbmcodCwxMiwxNik7aWYodD10LnNsaWNlKDIwLDMwKSwiVlA4WCI9PT1lKXtjb25zdCBlPXRbMF07aWYoISgxOTImZSkmJiEoMSZlKSlyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJue2hlaWdodDoxK3JlYWRVSW50MjRMRSh0LDcpLHdpZHRoOjErcmVhZFVJbnQyNExFKHQsNCl9fSh0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIFdlYlAiKX1pZigiVlA4ICI9PT1lJiY0NyE9PXRbMF0pcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybntoZWlnaHQ6MTYzODMmcmVhZEludDE2TEUodCw4KSx3aWR0aDoxNjM4MyZyZWFkSW50MTZMRSh0LDYpfX0odCk7Y29uc3QgaT10b0hleFN0cmluZyh0LDMsNik7aWYoIlZQOEwiPT09ZSYmIjlkMDEyYSIhPT1pKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm57aGVpZ2h0OjErKCgxNSZ0WzRdKTw8MTB8dFszXTw8MnwoMTkyJnRbMl0pPj42KSx3aWR0aDoxKygoNjMmdFsyXSk8PDh8dFsxXSl9fSh0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIFdlYlAiKX19LGF2aWY6e3ZhbGlkYXRlOnQ9PiJhdmlmIj09PXRvVVRGOFN0cmluZyh0LDgsMTIpLGNhbGN1bGF0ZTp0PT57Y29uc3QgZT1maW5kQm94KHQsIm1ldGEiKSxpPWZpbmRCb3godCwiaXBycCIsZS5vZmZzZXQrMTIsZS5vZmZzZXQrZS5zaXplKSxuPWZpbmRCb3godCwiaXBjbyIsaS5vZmZzZXQrOCxpLm9mZnNldCtpLnNpemUpLHI9ZmluZEJveCh0LCJpc3BlIixuLm9mZnNldCs4LG4ub2Zmc2V0K24uc2l6ZSk7cmV0dXJue3dpZHRoOnJlYWRVSW50MzJCRSh0LHIub2Zmc2V0KzEyKSxoZWlnaHQ6cmVhZFVJbnQzMkJFKHQsci5vZmZzZXQrMTYpfX19fSxGPU9iamVjdC5rZXlzKEwpLE49ezU2OiJwc2QiLDY2OiJibXAiLDY4OiJkZHMiLDcxOiJnaWYiLDczOiJ0aWZmIiw3NzoidGlmZiIsODI6IndlYnAiLDEwNToiaWNucyIsMTM3OiJwbmciLDI1NToianBnIn07ZnVuY3Rpb24gaW1hZ2VNZXRhKHQpe2lmKCEodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoIklucHV0IHNob3VsZCBiZSBhIFVpbnQ4QXJyYXkiKTtjb25zdCBlPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dFswXTtpZihlIGluIE4pe2NvbnN0IGk9TltlXTtpZihpJiZMW2ldLnZhbGlkYXRlKHQpKXJldHVybiBpfXJldHVybiBGLmZpbmQoZT0+TFtlXS52YWxpZGF0ZSh0KSl9KHQpO2lmKHZvaWQgMCE9PWUmJmUgaW4gTCl7Y29uc3QgaT1MW2VdLmNhbGN1bGF0ZSh0KTtpZih2b2lkIDAhPT1pKXJldHVybiBpLnR5cGU9ZSxpfXRocm93IG5ldyBUeXBlRXJyb3IoYFVuc3VwcG9ydGVkIGZpbGUgdHlwZTogJHtlfWApfWV4cG9ydHtpbWFnZU1ldGF9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC1tSF8wcHZHUC5tanMubWFwCg==", "chunks/build/invoice-D6pBLxKL.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyBsfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHt2IGFzIG8sdSBhcyB0LGEgYXMgbixpIGFzIHIsXyBhcyBkfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyB1fWZyb20iLi9UYWJsZS0wVVJuQzhPSC5tanMiO2ltcG9ydHt1IGFzIGN9ZnJvbSIuL3VzZUJpbGxpbmdBcGktQ28tYlRTS1QubWpzIjtpbXBvcnR7dyBhcyBzfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIGksZiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vaW5kZXgtQjFQT1RMbWEubWpzIjtjb25zdCBmPW8uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Imludm9pY2UiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKGYpe3Qoe3RpdGxlOiJJbnZvaWNlIn0pO2NvbnN0IHA9YygpLFY9bigpLHtkYXRhOnksZXJyb3I6aH09cigiYmlsbGluZy1zZXR0aW5ncyIsKCk9PnAuZmV0Y2hCaWxsaW5nU2V0dGluZ3MoKSx7ZGVmYXVsdDooKT0+KHtvcmdhbml6YXRpb25faWQ6IiIsY3VycmVuY3k6IlVTRCJ9KX0pO3MoaCk7Y29uc3R7ZGF0YTpfLGVycm9yOlV9PXIoImludm9pY2VzIiwoKT0+cC5mZXRjaEludm9pY2VzKCkse2RlZmF1bHQ6KCk9PltdfSk7cyhVKTtjb25zdCB4PW8ucmVhY3RpdmUoe2NvbXBhbnlfbmFtZToiIix0YXhfaWQ6IiIsYWRkcmVzczoiIixjaXR5OiIiLGNvdW50cnk6IlVTIixjdXJyZW5jeToiVVNEIn0pO28ud2F0Y2goeSxlPT57ZSYmKHguY29tcGFueV9uYW1lPWUuY29tcGFueV9uYW1lPz8iIix4LnRheF9pZD1lLnRheF9pZD8/IiIseC5hZGRyZXNzPWUuYWRkcmVzcz8/IiIseC5jaXR5PWUuY2l0eT8/IiIseC5jb3VudHJ5PWUuY291bnRyeT8/IlVTIix4LmN1cnJlbmN5PWUuY3VycmVuY3k/PyJVU0QiKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHY9by5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIHNhdmVTZXR0aW5ncygpe3YudmFsdWU9ITA7dHJ5e2F3YWl0IHAudXBkYXRlQmlsbGluZ1NldHRpbmdzKHtjb21wYW55X25hbWU6eC5jb21wYW55X25hbWV8fHZvaWQgMCx0YXhfaWQ6eC50YXhfaWR8fHZvaWQgMCxhZGRyZXNzOnguYWRkcmVzc3x8dm9pZCAwLGNpdHk6eC5jaXR5fHx2b2lkIDAsY291bnRyeTp4LmNvdW50cnl8fHZvaWQgMCxjdXJyZW5jeTp4LmN1cnJlbmN5fHx2b2lkIDB9KSxWLmFkZCh7dGl0bGU6IlNldHRpbmdzIHNhdmVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBsPWU7Vi5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246bD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3YudmFsdWU9ITF9fWNvbnN0IHc9W3thY2Nlc3NvcktleToibnVtYmVyIixoZWFkZXI6Ik51bWJlciJ9LHthY2Nlc3NvcktleToic3RhdHVzIixoZWFkZXI6IlN0YXR1cyJ9LHthY2Nlc3NvcktleToidG90YWwiLGhlYWRlcjoiVG90YWwiLGNlbGw6KHtyb3c6ZX0pPT5uZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIix7c3R5bGU6ImN1cnJlbmN5IixjdXJyZW5jeTplLm9yaWdpbmFsLmN1cnJlbmN5fSkuZm9ybWF0KGUub3JpZ2luYWwudG90YWwvMTAwKX0se2FjY2Vzc29yS2V5OiJjcmVhdGVkX2F0IixoZWFkZXI6IkRhdGUiLGNlbGw6KHtyb3c6ZX0pPT5uZXcgRGF0ZShlLm9yaWdpbmFsLmNyZWF0ZWRfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZygpfV07cmV0dXJuKHQsbixyLGMpPT57Y29uc3Qgcz1lLGY9bCxwPWEsVj1kLHk9dTtuKGA8ZGl2JHtpKG8ubWVyZ2VQcm9wcyh7Y2xhc3M6InNwYWNlLXktNiJ9LGMpKX0+YCksbihtKHMse3RpdGxlOiJJbnZvaWNlIEluZm9ybWF0aW9uIixkZXNjcmlwdGlvbjoiQ29tcGFueSBkZXRhaWxzIHRoYXQgYXBwZWFyIG9uIGludm9pY2VzLiIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLGwsYSx0KT0+e2lmKCFsKXJldHVybltvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMSBzbTpncmlkLWNvbHMtMiBnYXAtNCBtdC00In0sW28uY3JlYXRlVk5vZGUoZix7bGFiZWw6IkNvbXBhbnkgbmFtZSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmNvbXBhbnlfbmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jb21wYW55X25hbWU9ZSxwbGFjZWhvbGRlcjoiQWNtZSBJbmMuIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJUYXggSUQifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6by51bnJlZih4KS50YXhfaWQsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkudGF4X2lkPWUscGxhY2Vob2xkZXI6IjEyMy00NTYtNzg5IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJBZGRyZXNzIixjbGFzczoic206Y29sLXNwYW4tMiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmFkZHJlc3MsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuYWRkcmVzcz1lLHBsYWNlaG9sZGVyOiIxMjMgTWFpbiBTdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksby5jcmVhdGVWTm9kZShmLHtsYWJlbDoiQ2l0eSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmNpdHksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuY2l0eT1lLHBsYWNlaG9sZGVyOiJTYW4gRnJhbmNpc2NvIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJDb3VudHJ5In0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY291bnRyeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jb3VudHJ5PWUscGxhY2Vob2xkZXI6IlVTIixjbGFzczoidy1mdWxsIixtYXhsZW5ndGg6IjIifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLG8uY3JlYXRlVk5vZGUoZix7bGFiZWw6IkRlZmF1bHQgQ3VycmVuY3kifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jdXJyZW5jeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jdXJyZW5jeT1lLHBsYWNlaG9sZGVyOiJVU0QiLGNsYXNzOiJ3LWZ1bGwiLG1heGxlbmd0aDoiMyJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSldKSxvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibXQtNCBmbGV4IGp1c3RpZnktZW5kIn0sW28uY3JlYXRlVk5vZGUoVix7bGFiZWw6IlNhdmUiLGxvYWRpbmc6by51bnJlZih2KSxvbkNsaWNrOmU9PnNhdmVTZXR0aW5ncygpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKV0pXTtsKGA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIHNtOmdyaWQtY29scy0yIGdhcC00IG10LTQiJHt0fT5gKSxsKG0oZix7bGFiZWw6IkNvbXBhbnkgbmFtZSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY29tcGFueV9uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLmNvbXBhbnlfbmFtZT1lLHBsYWNlaG9sZGVyOiJBY21lIEluYy4iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jb21wYW55X25hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuY29tcGFueV9uYW1lPWUscGxhY2Vob2xkZXI6IkFjbWUgSW5jLiIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiVGF4IElEIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLGwsYSx0KT0+e2lmKCFsKXJldHVybltvLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6by51bnJlZih4KS50YXhfaWQsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkudGF4X2lkPWUscGxhY2Vob2xkZXI6IjEyMy00NTYtNzg5IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO2wobShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkudGF4X2lkLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLnRheF9pZD1lLHBsYWNlaG9sZGVyOiIxMjMtNDU2LTc4OSIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiQWRkcmVzcyIsY2xhc3M6InNtOmNvbC1zcGFuLTIifSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsbCxhLHQpPT57aWYoIWwpcmV0dXJuW28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmFkZHJlc3MsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuYWRkcmVzcz1lLHBsYWNlaG9sZGVyOiIxMjMgTWFpbiBTdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTtsKG0ocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmFkZHJlc3MsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuYWRkcmVzcz1lLHBsYWNlaG9sZGVyOiIxMjMgTWFpbiBTdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiQ2l0eSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY2l0eSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jaXR5PWUscGxhY2Vob2xkZXI6IlNhbiBGcmFuY2lzY28iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jaXR5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLmNpdHk9ZSxwbGFjZWhvbGRlcjoiU2FuIEZyYW5jaXNjbyIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiQ291bnRyeSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY291bnRyeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jb3VudHJ5PWUscGxhY2Vob2xkZXI6IlVTIixjbGFzczoidy1mdWxsIixtYXhsZW5ndGg6IjIifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jb3VudHJ5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLmNvdW50cnk9ZSxwbGFjZWhvbGRlcjoiVVMiLGNsYXNzOiJ3LWZ1bGwiLG1heGxlbmd0aDoiMiJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiRGVmYXVsdCBDdXJyZW5jeSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY3VycmVuY3ksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuY3VycmVuY3k9ZSxwbGFjZWhvbGRlcjoiVVNEIixjbGFzczoidy1mdWxsIixtYXhsZW5ndGg6IjMifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jdXJyZW5jeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jdXJyZW5jeT1lLHBsYWNlaG9sZGVyOiJVU0QiLGNsYXNzOiJ3LWZ1bGwiLG1heGxlbmd0aDoiMyJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwoYDwvZGl2PjxkaXYgY2xhc3M9Im10LTQgZmxleCBqdXN0aWZ5LWVuZCIke3R9PmApLGwobShWLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpvLnVucmVmKHYpLG9uQ2xpY2s6ZT0+c2F2ZVNldHRpbmdzKCl9LG51bGwsYSx0KSksbCgiPC9kaXY+Iil9KSxfOjF9LHIpKSxuKCc8ZGl2PjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0zIj48aDMgY2xhc3M9ImZvbnQtc2VtaWJvbGQiPiBJbnZvaWNlcyA8L2gzPjwvZGl2PicpLG4obSh5LHtkYXRhOm8udW5yZWYoXyksY29sdW1uczp3fSxudWxsLHIpKSwwPT09by51bnJlZihfKS5sZW5ndGg/bignPHAgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciBweS02Ij4gTm8gaW52b2ljZXMgeWV0LiA8L3A+Jyk6bigiXHgzYyEtLS0tXHgzZSIpLG4oIjwvZGl2PjwvZGl2PiIpfX19KSxwPWYuc2V0dXA7Zi5zZXR1cD0oZSxsKT0+e2NvbnN0IGE9by51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYmlsbGluZy9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL2ludm9pY2UudnVlIikscD9wKGUsbCk6dm9pZCAwfTtleHBvcnR7ZiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW52b2ljZS1ENnBCTHhLTC5tanMubWFwCg==", "chunks/build/isValueEqualOrExist-DmPyn5bN.mjs": "aW1wb3J0e1UgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2FYIGFzIHN9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGlzVmFsdWVFcXVhbE9yRXhpc3QoaSxhKXtyZXR1cm4hcihpKSYmKEFycmF5LmlzQXJyYXkoaSk/aS5zb21lKHI9PnMocixhKSk6cyhpLGEpKX1leHBvcnR7aXNWYWx1ZUVxdWFsT3JFeGlzdCBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNWYWx1ZUVxdWFsT3JFeGlzdC1EbVB5bjViTi5tanMubWFwCg==", "chunks/build/login-DOQQ_dY9.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHt2IGFzIHQsdSBhcyBpLGEgYXMgbixfIGFzIG8sYiBhcyBhLGMgYXMgc31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e18gYXMgbH1mcm9tIi4vQWxlcnQtQ1ZCNVlYdWUubWpzIjtpbXBvcnR7ZiBhcyByfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IGQ9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQXV0aExvZ2luQ2FyZCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAoaSl7Y29uc3QgZD1zKCksYz10LmNvbXB1dGVkKCgpPT5Cb29sZWFuKGQucHVibGljLmRlbW9Nb2RlKSksdT1uKCksZz10LnJlZihudWxsKTthc3luYyBmdW5jdGlvbiBzaWduSW5Bc0RlbW9BZ2VudChlKXtnLnZhbHVlPWU7dHJ5e2F3YWl0ICRmZXRjaCgiL2FwaS9hdXRoL2RlbW8tbG9naW4iLHttZXRob2Q6IlBPU1QiLGJvZHk6e2FnZW50OmV9LGNyZWRlbnRpYWxzOiJpbmNsdWRlIn0pLCh2b2lkIDApLmxvY2F0aW9uLmhyZWY9Ii9kYXNoYm9hcmQifWNhdGNoKGUpe2NvbnN0IHQ9ZTt1LmFkZCh7dGl0bGU6IkRlbW8gc2lnbi1pbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LmRhdGE/Lm1lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/P3Q/Lm1lc3NhZ2U/P2BTdGF0dXMgJHt0Py5zdGF0dXNDb2RlPz8idW5rbm93biJ9YCxjb2xvcjoiZXJyb3IifSksZy52YWx1ZT1udWxsfX1yZXR1cm4oaSxuLHMsZCk9Pntjb25zdCB1PWEsbT1sLHA9bztuKHIoZSx0Lm1lcmdlUHJvcHMoe2NsYXNzOiJ3LWZ1bGwgbWF4LXctbWQiLCJkYXRhLXRlc3RpZCI6ImxvZ2luLWNhcmQifSxkKSx7aGVhZGVyOnQud2l0aEN0eCgoZSxpLG4sbyk9PntpZighaSlyZXR1cm5bdC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InRleHQtY2VudGVyIHNwYWNlLXktMiJ9LFt0LmNyZWF0ZVZOb2RlKHUse25hbWU6ImktbHVjaWRlLWxvZy1pbiIsY2xhc3M6InNpemUtOCBteC1hdXRvIHRleHQtcHJpbWFyeSJ9KSx0LmNyZWF0ZVZOb2RlKCJoMSIse2NsYXNzOiJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIFNpZ24gaW4gIiksdC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFdlbGNvbWUgYmFjay4gQ2hvb3NlIGhvdyB5b3UnZCBsaWtlIHRvIHNpZ24gaW4uICIpXSldO2koYDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHNwYWNlLXktMiIke299PmApLGkocih1LHtuYW1lOiJpLWx1Y2lkZS1sb2ctaW4iLGNsYXNzOiJzaXplLTggbXgtYXV0byB0ZXh0LXByaW1hcnkifSxudWxsLG4sbykpLGkoYDxoMSBjbGFzcz0idGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7b30+IFNpZ24gaW4gPC9oMT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7b30+IFdlbGNvbWUgYmFjay4gQ2hvb3NlIGhvdyB5b3UmIzM5O2QgbGlrZSB0byBzaWduIGluLiA8L3A+PC9kaXY+YCl9KSxkZWZhdWx0OnQud2l0aEN0eCgoZSxpLG4sbyk9PntpZighaSlyZXR1cm5bdC51bnJlZihjKT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoic3BhY2UteS0zIiwiZGF0YS10ZXN0aWQiOiJkZW1vLWJsb2NrIn0sW3QuY3JlYXRlVk5vZGUobSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InN1YnRsZSIsaWNvbjoiaS1sdWNpZGUtZmxhc2stY29uaWNhbCIsdGl0bGU6IkRlbW8gbW9kZSIsZGVzY3JpcHRpb246IlNhbmRib3ggZGVwbG95bWVudCB3aXRoIHNlZWRlZCBmYWtlIHVzZXJzLiBEbyBub3QgdXNlIHJlYWwgY3JlZGVudGlhbHMuIn0pLHQuY3JlYXRlVk5vZGUocCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJwcmltYXJ5IixpY29uOiJpLWx1Y2lkZS1zaGllbGQtY2hlY2siLGxvYWRpbmc6ImFkbWluIj09PXQudW5yZWYoZyksZGlzYWJsZWQ6bnVsbCE9PXQudW5yZWYoZyksImRhdGEtdGVzdGlkIjoic2lnbmluLWFkbWluLWFnZW50IixvbkNsaWNrOmU9PnNpZ25JbkFzRGVtb0FnZW50KCJhZG1pbiIpfSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSgiIFNpZ24gaW4gYXMgQWRtaW4gQWdlbnQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pLHQuY3JlYXRlVk5vZGUocCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixpY29uOiJpLWx1Y2lkZS11c2VyIixsb2FkaW5nOiJ1c2VyIj09PXQudW5yZWYoZyksZGlzYWJsZWQ6bnVsbCE9PXQudW5yZWYoZyksImRhdGEtdGVzdGlkIjoic2lnbmluLXVzZXItYWdlbnQiLG9uQ2xpY2s6ZT0+c2lnbkluQXNEZW1vQWdlbnQoInVzZXIiKX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVUZXh0Vk5vZGUoIiBTaWduIGluIGFzIFVzZXIgQWdlbnQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pLHQuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIHRleHQtY2VudGVyIHB0LTIifSxbdC5jcmVhdGVUZXh0Vk5vZGUoIiBBZG1pbiBBZ2VudCBoYXMgdGhlICIpLHQuY3JlYXRlVk5vZGUoImNvZGUiLG51bGwsInVzZXI6aW1wZXJzb25hdGUiKSx0LmNyZWF0ZVRleHRWTm9kZSgiIGFiaWxpdHkuIFVzZXIgQWdlbnQgZG9lcyBub3QuICIpXSldKSk6KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsY2xhc3M6InNwYWNlLXktMyB0ZXh0LWNlbnRlciJ9LFt0LmNyZWF0ZVZOb2RlKHAse3RvOiIvYXBpL2F1dGgvZ29vZ2xlIixleHRlcm5hbDoiIixibG9jazoiIixzaXplOiJsZyIsaWNvbjoiaS1sb2dvcy1nb29nbGUtaWNvbiIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUifSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSgiIENvbnRpbnVlIHdpdGggR29vZ2xlICIpXSksXzoxfSksdC5jcmVhdGVWTm9kZShwLHt0bzoiL2FwaS9hdXRoL2dpdGh1YiIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ2l0aHViLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVUZXh0Vk5vZGUoIiBDb250aW51ZSB3aXRoIEdpdEh1YiAiKV0pLF86MX0pXSkpXTt0LnVucmVmKGMpPyhpKGA8ZGl2IGNsYXNzPSJzcGFjZS15LTMiIGRhdGEtdGVzdGlkPSJkZW1vLWJsb2NrIiR7b30+YCksaShyKG0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLWZsYXNrLWNvbmljYWwiLHRpdGxlOiJEZW1vIG1vZGUiLGRlc2NyaXB0aW9uOiJTYW5kYm94IGRlcGxveW1lbnQgd2l0aCBzZWVkZWQgZmFrZSB1c2Vycy4gRG8gbm90IHVzZSByZWFsIGNyZWRlbnRpYWxzLiJ9LG51bGwsbixvKSksaShyKHAse2Jsb2NrOiIiLHNpemU6ImxnIixjb2xvcjoicHJpbWFyeSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkLWNoZWNrIixsb2FkaW5nOiJhZG1pbiI9PT10LnVucmVmKGcpLGRpc2FibGVkOm51bGwhPT10LnVucmVmKGcpLCJkYXRhLXRlc3RpZCI6InNpZ25pbi1hZG1pbi1hZ2VudCIsb25DbGljazplPT5zaWduSW5Bc0RlbW9BZ2VudCgiYWRtaW4iKX0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIFNpZ24gaW4gYXMgQWRtaW4gQWdlbnQgIildO2koIiBTaWduIGluIGFzIEFkbWluIEFnZW50ICIpfSksXzoxfSxuLG8pKSxpKHIocCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixpY29uOiJpLWx1Y2lkZS11c2VyIixsb2FkaW5nOiJ1c2VyIj09PXQudW5yZWYoZyksZGlzYWJsZWQ6bnVsbCE9PXQudW5yZWYoZyksImRhdGEtdGVzdGlkIjoic2lnbmluLXVzZXItYWdlbnQiLG9uQ2xpY2s6ZT0+c2lnbkluQXNEZW1vQWdlbnQoInVzZXIiKX0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIFNpZ24gaW4gYXMgVXNlciBBZ2VudCAiKV07aSgiIFNpZ24gaW4gYXMgVXNlciBBZ2VudCAiKX0pLF86MX0sbixvKSksaShgPHAgY2xhc3M9InRleHQteHMgdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciBwdC0yIiR7b30+IEFkbWluIEFnZW50IGhhcyB0aGUgPGNvZGUke299PnVzZXI6aW1wZXJzb25hdGU8L2NvZGU+IGFiaWxpdHkuIFVzZXIgQWdlbnQgZG9lcyBub3QuIDwvcD48L2Rpdj5gKSk6KGkoYDxkaXYgY2xhc3M9InNwYWNlLXktMyB0ZXh0LWNlbnRlciIke299PmApLGkocihwLHt0bzoiL2FwaS9hdXRoL2dvb2dsZSIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ29vZ2xlLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIENvbnRpbnVlIHdpdGggR29vZ2xlICIpXTtpKCIgQ29udGludWUgd2l0aCBHb29nbGUgIil9KSxfOjF9LG4sbykpLGkocihwLHt0bzoiL2FwaS9hdXRoL2dpdGh1YiIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ2l0aHViLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIENvbnRpbnVlIHdpdGggR2l0SHViICIpXTtpKCIgQ29udGludWUgd2l0aCBHaXRIdWIgIil9KSxfOjF9LG4sbykpLGkoIjwvZGl2PiIpKX0pLF86MX0scykpfX19KSxjPWQuc2V0dXA7ZC5zZXR1cD0oZSxpKT0+e2NvbnN0IG49dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG4ubW9kdWxlc3x8KG4ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvY29tcG9uZW50cy9BdXRoL0F1dGhMb2dpbkNhcmQudnVlIiksYz9jKGUsaSk6dm9pZCAwfTtjb25zdCB1PU9iamVjdC5hc3NpZ24oZCx7X19uYW1lOiJBdXRoTG9naW5DYXJkIn0pLGc9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToibG9naW4iLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwOmU9PihpKHt0aXRsZToiU2lnbiBpbiJ9KSwoZSx0LGksbik9Pnt0KHIodSxuLG51bGwsaSkpfSl9KSxtPWcuc2V0dXA7Zy5zZXR1cD0oZSxpKT0+e2NvbnN0IG49dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG4ubW9kdWxlc3x8KG4ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvYXV0aC9sb2dpbi52dWUiKSxtP20oZSxpKTp2b2lkIDB9O2V4cG9ydHtnIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1sb2dpbi1ET1FRX2RZOS5tanMubWFwCg==", "chunks/build/members-DgrH9_HQ.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQWxlcnQtQ1ZCNVlYdWUubWpzIjtpbXBvcnR7diBhcyBsLHUgYXMgYSxpIGFzIHQseSBhcyBpLGggYXMgbyxhIGFzIG4sYWYgYXMgcixheSBhcyBzLGF6IGFzIGQsXyBhcyB1fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBtfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHtfIGFzIGN9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e18gYXMgcH1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHtfIGFzIGZ9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIHZ9ZnJvbSIuL1NlbGVjdC1EaWFpbGZVYy5tanMiO2ltcG9ydHtfIGFzIGJ9ZnJvbSIuL1NlbGVjdE1lbnUtQmFBUHc0LWsubWpzIjtpbXBvcnR7XyBhcyB4fWZyb20iLi9UYWJsZS0wVVJuQzhPSC5tanMiO2ltcG9ydHtaIGFzIHl9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtfIGFzIGd9ZnJvbSIuL01vZGFsLUIweVdQeFdfLm1qcyI7aW1wb3J0e18gYXMga31mcm9tIi4vU3dpdGNoLUJ5VzBCVUxpLm1qcyI7aW1wb3J0e3cgYXMgaH1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7dSBhcyBWfWZyb20iLi91c2VQcm9qZWN0QXBpLUNUTDJLNkpWLm1qcyI7aW1wb3J0e3UgYXMgd31mcm9tIi4vdXNlSW5maW5pdGVMaXN0LVVVZ25iU216Lm1qcyI7aW1wb3J0e3UgYXMgan1mcm9tIi4vdXJsLUJmQm95akpaLm1qcyI7aW1wb3J0e28gYXMgQyxmIGFzIF8sdCBhcyBOLHEgYXMgQn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnQiLi91c2VGaWx0ZXItQ2xDWmFvaTgubWpzIjtpbXBvcnQiLi92aXJ0dWFsaXplci1CeXFpMHVBSy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydCIuL2luZGV4LUIxUE9UTG1hLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtjb25zdCBVPVN5bWJvbCgib3JnLW1lbWJlcnMiKTtmdW5jdGlvbiB1c2VPcmdhbml6YXRpb25NZW1iZXJzKCl7Y29uc3QgZT1sLmluamVjdChVKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoInVzZU9yZ2FuaXphdGlvbk1lbWJlcnMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoaW4gdGhlIG1lbWJlcnMgcGFnZSIpO3JldHVybiBlfWNvbnN0IE09bC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiT3JnYW5pemF0aW9uTWVtYmVyUGVybWlzc2lvbnNNb2RhbCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6bC5tZXJnZU1vZGVscyh7bWVtYmVyOnt9fSx7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9wZW5Nb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSl7Y29uc3QgYT1lLHM9bC51c2VNb2RlbChlLCJvcGVuIiksZD1vKCksbT1uKCksYz1pKCkse3Blcm1pc3Npb25zOnAsdXBkYXRlTWVtYmVyQWJpbGl0aWVzOmZ9PXVzZU9yZ2FuaXphdGlvbk1lbWJlcnMoKSx7ZGF0YTp2LGVycm9yOnh9PXQoIm9yZy1yb2xlcyIsKCk9PmMuZmV0Y2hSb2xlcygpLHtkZWZhdWx0OigpPT5bXX0pO2goeCk7Y29uc3QgeT1sLnJlZihbXSksVj1sLnJlZihbXSk7bC53YXRjaCgoKT0+YS5tZW1iZXIsZT0+e3kudmFsdWU9ZT8oZS5hYmlsaXRpZXM/P1tdKS5maWx0ZXIoZT0+IWUuZW5kc1dpdGgoIjpzZWxmIikpOltdLFYudmFsdWU9W119LHtpbW1lZGlhdGU6ITB9KTtjb25zdCB3PWwucmVmKCExKSxqPWwuY29tcHV0ZWQoKCk9Pntjb25zdCBlPXAudmFsdWUuZmlsdGVyKGU9Pm51bGw9PT1lLnNjb3BlKTtyZXR1cm5bLi4ubmV3IFNldChlLm1hcChlPT5lLnN1YmplY3QpKV0ubWFwKGw9Pih7c3ViamVjdDpsLHBlcm1pc3Npb25zOmUuZmlsdGVyKGU9PmUuc3ViamVjdD09PWwpfSkpfSksQz1sLmNvbXB1dGVkKCgpPT52LnZhbHVlLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpKTtmdW5jdGlvbiBjYW5HcmFudChlKXtyZXR1cm4gcihkLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLGUpfWZ1bmN0aW9uIHRvZ2dsZShlKXtjYW5HcmFudChlKSYmKHkudmFsdWUuaW5jbHVkZXMoZSk/eS52YWx1ZT15LnZhbHVlLmZpbHRlcihsPT5sIT09ZSk6eS52YWx1ZT1bLi4ueS52YWx1ZSxlXSl9YXN5bmMgZnVuY3Rpb24gc2F2ZSgpe2lmKGEubWVtYmVyKXt3LnZhbHVlPSEwO3RyeXthd2FpdCBQcm9taXNlLmFsbChbZihhLm1lbWJlci5pZCx5LnZhbHVlKSxjLmFzc2lnbk1lbWJlclJvbGVzKGEubWVtYmVyLmlkLFYudmFsdWUpXSksbS5hZGQoe3RpdGxlOiJQZXJtaXNzaW9ucyB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KSxzLnZhbHVlPSExfWNhdGNoKGUpe2NvbnN0IGw9ZTttLmFkZCh7dGl0bGU6IkZhaWxlZCB0byB1cGRhdGUgcGVybWlzc2lvbnMiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt3LnZhbHVlPSExfX19cmV0dXJuKGEsdCxpLG8pPT57Y29uc3Qgbj1iLHI9ayxkPXU7dChfKGcsbC5tZXJnZVByb3BzKHtvcGVuOnMudmFsdWUsIm9uVXBkYXRlOm9wZW4iOmU9PnMudmFsdWU9ZSx0aXRsZTplLm1lbWJlcj9gUGVybWlzc2lvbnMg4oCUICR7ZS5tZW1iZXIubmFtZT8/ZS5tZW1iZXIucHJpbWFyeV9lbWFpbH1gOiJQZXJtaXNzaW9ucyIsdWk6e2Zvb3RlcjoianVzdGlmeS1lbmQifX0sbykse2JvZHk6bC53aXRoQ3R4KChlLGEsdCxpKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS00In0sW2wudW5yZWYodikubGVuZ3RoPjA/KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjB9LFtsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUifSwiIFJvbGVzICIpLGwuY3JlYXRlVk5vZGUobix7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKFYpP1YudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoQyksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgcm9sZXPigKYifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwobC5vcGVuQmxvY2soITApLGwuY3JlYXRlQmxvY2sobC5GcmFnbWVudCxudWxsLGwucmVuZGVyTGlzdChsLnVucmVmKGopLGU9PihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTplLnN1YmplY3R9LFtsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUifSxsLnRvRGlzcGxheVN0cmluZyhlLnN1YmplY3QpLDEpLGwuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTIifSxbKGwub3BlbkJsb2NrKCEwKSxsLmNyZWF0ZUJsb2NrKGwuRnJhZ21lbnQsbnVsbCxsLnJlbmRlckxpc3QoZS5wZXJtaXNzaW9ucyxlPT4obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6ZS5rZXksY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LFtsLmNyZWF0ZVZOb2RlKCJkaXYiLG51bGwsW2wuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSJ9LGwudG9EaXNwbGF5U3RyaW5nKGUuZGVzY3JpcHRpb24/P2Uua2V5KSwxKSxsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LGwudG9EaXNwbGF5U3RyaW5nKGUua2V5KSwxKV0pLGwuY3JlYXRlVk5vZGUocix7Im1vZGVsLXZhbHVlIjpsLnVucmVmKHkpLmluY2x1ZGVzKGUua2V5KSxkaXNhYmxlZDohY2FuR3JhbnQoZS5rZXkpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpsPT50b2dnbGUoZS5rZXkpfSxudWxsLDgsWyJtb2RlbC12YWx1ZSIsImRpc2FibGVkIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pKSksMTI4KSldKV0pKSksMTI4KSldKV07YShgPGRpdiBjbGFzcz0ic3BhY2UteS00IiR7aX0+YCksbC51bnJlZih2KS5sZW5ndGg+MD8oYShgPGRpdiR7aX0+PHAgY2xhc3M9InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUiJHtpfT4gUm9sZXMgPC9wPmApLGEoXyhuLHttb2RlbFZhbHVlOmwudW5yZWYoViksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoVik/Vi52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihDKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsbXVsdGlwbGU6IiIscGxhY2Vob2xkZXI6IlNlbGVjdCByb2xlc+KApiJ9LG51bGwsdCxpKSksYSgiPC9kaXY+IikpOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCJceDNjIS0tWy0tXHgzZSIpLE4obC51bnJlZihqKSxlPT57YShgPGRpdiR7aX0+PHAgY2xhc3M9InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUiJHtpfT4ke0IoZS5zdWJqZWN0KX08L3A+PGRpdiBjbGFzcz0ic3BhY2UteS0yIiR7aX0+XHgzYyEtLVstLVx4M2VgKSxOKGUucGVybWlzc2lvbnMsZT0+e2EoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiIke2l9PjxkaXYke2l9PjxwIGNsYXNzPSJ0ZXh0LXNtIiR7aX0+JHtCKGUuZGVzY3JpcHRpb24/P2Uua2V5KX08L3A+PHAgY2xhc3M9InRleHQteHMgdGV4dC1tdXRlZCIke2l9PiR7QihlLmtleSl9PC9wPjwvZGl2PmApLGEoXyhyLHsibW9kZWwtdmFsdWUiOmwudW5yZWYoeSkuaW5jbHVkZXMoZS5rZXkpLGRpc2FibGVkOiFjYW5HcmFudChlLmtleSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmw9PnRvZ2dsZShlLmtleSl9LG51bGwsdCxpKSksYSgiPC9kaXY+Iil9KSxhKCJceDNjIS0tXS0tXHgzZTwvZGl2PjwvZGl2PiIpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKX0pLGZvb3RlcjpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoZCx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnMudmFsdWU9ITF9LG51bGwsOCxbIm9uQ2xpY2siXSksbC5jcmVhdGVWTm9kZShkLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpsLnVucmVmKHcpLG9uQ2xpY2s6c2F2ZX0sbnVsbCw4LFsibG9hZGluZyJdKV07YShfKGQse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5zLnZhbHVlPSExfSxudWxsLHQsaSkpLGEoXyhkLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpsLnVucmVmKHcpLG9uQ2xpY2s6c2F2ZX0sbnVsbCx0LGkpKX0pLF86MX0saSkpfX19KSxSPU0uc2V0dXA7TS5zZXR1cD0oZSxhKT0+e2NvbnN0IHQ9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHQubW9kdWxlc3x8KHQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvY29tcG9uZW50cy9Pcmdhbml6YXRpb24vT3JnYW5pemF0aW9uTWVtYmVyUGVybWlzc2lvbnNNb2RhbC52dWUiKSxSP1IoZSxhKTp2b2lkIDB9O2NvbnN0IHo9T2JqZWN0LmFzc2lnbihNLHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbWJlclBlcm1pc3Npb25zTW9kYWwifSksTD1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJPcmdhbml6YXRpb25NZW1iZXJMaXN0IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCBhPW8oKSxnPW4oKSxrPWkoKSx7aW52aXRhdGlvbnM6QyxyZW1vdmVNZW1iZXI6QixjcmVhdGVJbnZpdGF0aW9uOlUscmV2b2tlSW52aXRhdGlvbjpNfT11c2VPcmdhbml6YXRpb25NZW1iZXJzKCksUj1sLmNvbXB1dGVkKCgpPT5yKGEuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6bWFuYWdlIikpLEw9bC5yZWYobnVsbCkse2l0ZW1zOkkscTpTLGhhc01vcmU6JCxsb2FkaW5nOlAsbG9hZE1vcmU6TyxyZXNldDpBfT13KGU9PmsuZmV0Y2hNZW1iZXJzKGUpLnRoZW4oZT0+ZSkse2ltbWVkaWF0ZTohMH0pO3MoTCxPLHtkaXN0YW5jZToxMjAsY2FuTG9hZE1vcmU6KCk9PiQudmFsdWV9KTtjb25zdCBEPWwucmVmKCIiKSxGPWwucmVmKCIiKSxHPWwucmVmKFtdKSxLPWwucmVmKCExKSxFPWwucmVmKCIiKSx7ZGF0YTpXLGVycm9yOnF9PXQoIm9yZy1yb2xlcyIsKCk9PmsuZmV0Y2hSb2xlcygpLHtkZWZhdWx0OigpPT5bXX0pO2gocSk7Y29uc3QgSj1sLmNvbXB1dGVkKCgpPT5XLnZhbHVlLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpKSxRPWwucmVmKFtdKSxIPVYoKSx7ZGF0YTpULGVycm9yOll9PXQoIm9yZy1pbnZpdGUtcHJvamVjdHMiLCgpPT5ILmZldGNoUHJvamVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTtoKFkpLGwud2F0Y2goVCxlPT57US52YWx1ZT1lLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgWj1qKCk7ZnVuY3Rpb24gam9pbkxpbmsoZSl7cmV0dXJuIHkoWi5vcmlnaW4sImpvaW4iLGUpfWFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlSW52aXRhdGlvbigpe2lmKEQudmFsdWUudHJpbSgpKXtLLnZhbHVlPSEwLEUudmFsdWU9IiI7dHJ5e2NvbnN0IGU9YXdhaXQgVShELnZhbHVlLnRyaW0oKSxGLnZhbHVlfHx2b2lkIDAsRy52YWx1ZS5sZW5ndGg/Ry52YWx1ZTp2b2lkIDApO0UudmFsdWU9am9pbkxpbmsoZS50b2tlbiksRC52YWx1ZT0iIixGLnZhbHVlPSIiLEcudmFsdWU9W119Y2F0Y2goZSl7Y29uc3QgbD1lO2cuYWRkKHt0aXRsZToiRmFpbGVkIHRvIGNyZWF0ZSBpbnZpdGF0aW9uIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Sy52YWx1ZT0hMX19fWNvbnN0e2NvcHk6WH09ZCgpO2FzeW5jIGZ1bmN0aW9uIGNvcHlMaW5rKGUpe2F3YWl0IFgoZSksZy5hZGQoe3RpdGxlOiJJbnZpdGF0aW9uIGxpbmsgY29waWVkIixjb2xvcjoic3VjY2VzcyJ9KX1jb25zdCBlZT1be2FjY2Vzc29yS2V5OiJlbWFpbCIsaGVhZGVyOiJFbWFpbCJ9LHtpZDoibGluayIsaGVhZGVyOiJJbnZpdGF0aW9uIGxpbmsiLGNlbGw6KHtyb3c6ZX0pPT57Y29uc3QgYT1qb2luTGluayhlLm9yaWdpbmFsLnRva2VuKTtyZXR1cm4gbC5oKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxbbC5oKG0se21vZGVsVmFsdWU6YSx0eXBlOiJwYXNzd29yZCIscmVhZG9ubHk6ITAsc2l6ZToieHMiLGNsYXNzOiJmbGV4LTEgZm9udC1tb25vIiwiYXJpYS1sYWJlbCI6Ikludml0YXRpb24gbGluayJ9KSxsLmgodSx7aWNvbjoiaS1sdWNpZGUtY29weSIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsImFyaWEtbGFiZWwiOiJDb3B5IGxpbmsiLG9uQ2xpY2s6KCk9PmNvcHlMaW5rKGEpfSldKX19LHtpZDoiYWN0aW9ucyIsaGVhZGVyOiIiLG1ldGE6e2NsYXNzOnt0ZDoidGV4dC1yaWdodCJ9fSxjZWxsOih7cm93OmV9KT0+Ui52YWx1ZT9sLmgodSx7bGFiZWw6IlJldm9rZSIsY29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIixvbkNsaWNrOigpPT5hc3luYyBmdW5jdGlvbihlKXt0cnl7YXdhaXQgTShlKSxnLmFkZCh7dGl0bGU6Ikludml0YXRpb24gcmV2b2tlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2h7Zy5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gcmV2b2tlIGludml0YXRpb24iLGNvbG9yOiJlcnJvciJ9KX19KGUub3JpZ2luYWwuaWQpfSk6bnVsbH1dLGxlPWwucmVmKG51bGwpLGFlPWwucmVmKCExKSx0ZT1sLnJlZihudWxsKSxpZT1sLnJlZih7fSksb2U9W3tpZDoibmFtZSIsaGVhZGVyOiJOYW1lIixjZWxsOih7cm93OmV9KT0+bC5oKCJkaXYiLFtsLmgoInAiLHtjbGFzczoiZm9udC1tZWRpdW0ifSxlLm9yaWdpbmFsLm5hbWU/P2Uub3JpZ2luYWwudXNlcm5hbWU/P2Uub3JpZ2luYWwucHJpbWFyeV9lbWFpbCksbC5oKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LGUub3JpZ2luYWwucHJpbWFyeV9lbWFpbCldKX0se2lkOiJhYmlsaXRpZXMiLGhlYWRlcjoiQWJpbGl0aWVzIixjZWxsOih7cm93OmV9KT0+bC5oKCJkaXYiLHtjbGFzczoiZmxleCBmbGV4LXdyYXAgZ2FwLTEifSwoZS5vcmlnaW5hbC5hYmlsaXRpZXM/P1tdKS5maWx0ZXIoZT0+IWUuZW5kc1dpdGgoIjpzZWxmIikpLm1hcChlPT5sLmgoYyx7bGFiZWw6ZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0pKSl9LHtpZDoiYWN0aW9ucyIsaGVhZGVyOiIiLG1ldGE6e2NsYXNzOnt0ZDoidGV4dC1yaWdodCJ9fSxjZWxsOih7cm93OmV9KT0+Ui52YWx1ZSYmZS5vcmlnaW5hbC5pZCE9PWEuY3VycmVudFVzZXI/LmlkP2wuaCgiZGl2Iix7Y2xhc3M6ImZsZXggZ2FwLTIganVzdGlmeS1lbmQifSxbbC5oKHUse2ljb246ImktbHVjaWRlLXBlbmNpbCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsImFyaWEtbGFiZWwiOiJFZGl0IHBlcm1pc3Npb25zIixvbkNsaWNrOigpPT57bGUudmFsdWU9ZS5vcmlnaW5hbCxhZS52YWx1ZT0hMH19KSxsLmgodSx7aWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsY29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLCJhcmlhLWxhYmVsIjoiUmVtb3ZlIG1lbWJlciIsbG9hZGluZzp0ZS52YWx1ZT09PWUub3JpZ2luYWwuaWQsb25DbGljazooKT0+YXN5bmMgZnVuY3Rpb24oZSl7dGUudmFsdWU9ZS5pZDt0cnl7YXdhaXQgQihlLmlkKSxnLmFkZCh7dGl0bGU6YCR7ZS5uYW1lPz9lLnByaW1hcnlfZW1haWx9IHJlbW92ZWRgLGNvbG9yOiJzdWNjZXNzIn0pLEEoKSxhd2FpdCBPKCl9Y2F0Y2goZSl7Y29uc3QgbD1lO2cuYWRkKHt0aXRsZToiRmFpbGVkIHRvIHJlbW92ZSBtZW1iZXIiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt0ZS52YWx1ZT1udWxsfX0oZS5vcmlnaW5hbCl9KV0pOm51bGx9XTtyZXR1cm4gbC53YXRjaChhZSxhc3luYyBlPT57ZXx8KEEoKSxhd2FpdCBPKCkpfSksKGUsYSx0LGkpPT57Y29uc3Qgbz1wLG49ZixyPW0scz12LGQ9Yix5PXUsZz14LGs9YzthKCdceDNjIS0tWy0tXHgzZTxkaXYgY2xhc3M9InNwYWNlLXktNiI+JyksbC51bnJlZihSKT8oYSgnPGRpdiBjbGFzcz0ic3BhY2UteS0zIj48cCBjbGFzcz0iZm9udC1zZW1pYm9sZCI+IEludml0ZSBhIG1lbWJlciA8L3A+JyksYShfKG8sbnVsbCx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC0zIHNtOmZsZXgtcm93IHNtOml0ZW1zLWVuZCJ9LFtsLmNyZWF0ZVZOb2RlKG4se2xhYmVsOiJFbWFpbCIsY2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUocix7bW9kZWxWYWx1ZTpsLnVucmVmKEQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEQpP0QudmFsdWU9ZTpudWxsLHR5cGU6ImVtYWlsIixwbGFjZWhvbGRlcjoidXNlckBleGFtcGxlLmNvbSIsY2xhc3M6InctZnVsbCIsb25LZXlkb3duOmwud2l0aEtleXMoZ2VuZXJhdGVJbnZpdGF0aW9uLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShuLHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUocyx7bW9kZWxWYWx1ZTpsLnVucmVmKEYpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEYpP0YudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoSiksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLHBsYWNlaG9sZGVyOiJEZWZhdWx0IixjbGFzczoibWluLXctNDAifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksbC51bnJlZihRKS5sZW5ndGg+MD8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKG4se2tleTowLGxhYmVsOiJQcm9qZWN0cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoZCx7bW9kZWxWYWx1ZTpsLnVucmVmKEcpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEcpP0cudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoUSksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJOb25lIixjbGFzczoibWluLXctNDgifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxsLmNyZWF0ZVZOb2RlKHkse2xhYmVsOiJHZW5lcmF0ZSBpbnZpdGUgbGluayIsaWNvbjoiaS1sdWNpZGUtbGluayIsbG9hZGluZzpsLnVucmVmKEspLGRpc2FibGVkOiFsLnVucmVmKEQpLnRyaW0oKSxvbkNsaWNrOmdlbmVyYXRlSW52aXRhdGlvbn0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSksbC51bnJlZihFKT8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoibXQtMyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKHIseyJtb2RlbC12YWx1ZSI6bC51bnJlZihFKSx0eXBlOiJwYXNzd29yZCIscmVhZG9ubHk6IiIsY2xhc3M6ImZsZXgtMSBmb250LW1vbm8gdGV4dC14cyIsImFyaWEtbGFiZWwiOiJHZW5lcmF0ZWQgaW52aXRhdGlvbiBsaW5rIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSksbC5jcmVhdGVWTm9kZSh5LHtpY29uOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjoiQ29weSBsaW5rIixvbkNsaWNrOmU9PmNvcHlMaW5rKGwudW5yZWYoRSkpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07YShgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtMyBzbTpmbGV4LXJvdyBzbTppdGVtcy1lbmQiJHtpfT5gKSxhKF8obix7bGFiZWw6IkVtYWlsIixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxpKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKHIse21vZGVsVmFsdWU6bC51bnJlZihEKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihEKT9ELnZhbHVlPWU6bnVsbCx0eXBlOiJlbWFpbCIscGxhY2Vob2xkZXI6InVzZXJAZXhhbXBsZS5jb20iLGNsYXNzOiJ3LWZ1bGwiLG9uS2V5ZG93bjpsLndpdGhLZXlzKGdlbmVyYXRlSW52aXRhdGlvbixbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07YShfKHIse21vZGVsVmFsdWU6bC51bnJlZihEKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihEKT9ELnZhbHVlPWU6bnVsbCx0eXBlOiJlbWFpbCIscGxhY2Vob2xkZXI6InVzZXJAZXhhbXBsZS5jb20iLGNsYXNzOiJ3LWZ1bGwiLG9uS2V5ZG93bjpnZW5lcmF0ZUludml0YXRpb259LG51bGwsdCxpKSl9KSxfOjF9LHQsaSkpLGEoXyhuLHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQsaSk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZShzLHttb2RlbFZhbHVlOmwudW5yZWYoRiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRik/Ri52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihKKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIscGxhY2Vob2xkZXI6IkRlZmF1bHQiLGNsYXNzOiJtaW4tdy00MCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO2EoXyhzLHttb2RlbFZhbHVlOmwudW5yZWYoRiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRik/Ri52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihKKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIscGxhY2Vob2xkZXI6IkRlZmF1bHQiLGNsYXNzOiJtaW4tdy00MCJ9LG51bGwsdCxpKSl9KSxfOjF9LHQsaSkpLGwudW5yZWYoUSkubGVuZ3RoPjA/YShfKG4se2xhYmVsOiJQcm9qZWN0cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQsaSk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZShkLHttb2RlbFZhbHVlOmwudW5yZWYoRyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRyk/Ry52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihRKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsbXVsdGlwbGU6IiIscGxhY2Vob2xkZXI6Ik5vbmUiLGNsYXNzOiJtaW4tdy00OCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO2EoXyhkLHttb2RlbFZhbHVlOmwudW5yZWYoRyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRyk/Ry52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihRKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsbXVsdGlwbGU6IiIscGxhY2Vob2xkZXI6Ik5vbmUiLGNsYXNzOiJtaW4tdy00OCJ9LG51bGwsdCxpKSl9KSxfOjF9LHQsaSkpOmEoIlx4M2MhLS0tLVx4M2UiKSxhKF8oeSx7bGFiZWw6IkdlbmVyYXRlIGludml0ZSBsaW5rIixpY29uOiJpLWx1Y2lkZS1saW5rIixsb2FkaW5nOmwudW5yZWYoSyksZGlzYWJsZWQ6IWwudW5yZWYoRCkudHJpbSgpLG9uQ2xpY2s6Z2VuZXJhdGVJbnZpdGF0aW9ufSxudWxsLHQsaSkpLGEoIjwvZGl2PiIpLGwudW5yZWYoRSk/KGEoYDxkaXYgY2xhc3M9Im10LTMgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiJHtpfT5gKSxhKF8ocix7Im1vZGVsLXZhbHVlIjpsLnVucmVmKEUpLHR5cGU6InBhc3N3b3JkIixyZWFkb25seToiIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyB0ZXh0LXhzIiwiYXJpYS1sYWJlbCI6IkdlbmVyYXRlZCBpbnZpdGF0aW9uIGxpbmsifSxudWxsLHQsaSkpLGEoXyh5LHtpY29uOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjoiQ29weSBsaW5rIixvbkNsaWNrOmU9PmNvcHlMaW5rKGwudW5yZWYoRSkpfSxudWxsLHQsaSkpLGEoIjwvZGl2PiIpKTphKCJceDNjIS0tLS1ceDNlIil9KSxfOjF9LHQpKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGwudW5yZWYoQykubGVuZ3RoPjA/KGEoJzxkaXYgY2xhc3M9InNwYWNlLXktMyI+PHAgY2xhc3M9ImZvbnQtc2VtaWJvbGQiPiBQZW5kaW5nIGludml0YXRpb25zIDwvcD4nKSxhKF8obyx7dWk6e2JvZHk6InNtOnAtMCJ9fSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoZyx7Y29sdW1uczplZSxkYXRhOmwudW5yZWYoQyl9LG51bGwsOCxbImRhdGEiXSldO2EoXyhnLHtjb2x1bW5zOmVlLGRhdGE6bC51bnJlZihDKX0sbnVsbCx0LGkpKX0pLF86MX0sdCkpLGEoIjwvZGl2PiIpKTphKCJceDNjIS0tLS1ceDNlIiksYSgnPGRpdiBjbGFzcz0ic3BhY2UteS0zIj48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyI+PHAgY2xhc3M9ImZvbnQtc2VtaWJvbGQgZmxleC0xIj4gTWVtYmVycyA8L3A+JyksYShfKHIse21vZGVsVmFsdWU6bC51bnJlZihTKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihTKT9TLnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggbWVtYmVyc+KApiIsc2l6ZToic20iLGNsYXNzOiJ3LTU2In0sbnVsbCx0KSksYSgiPC9kaXY+IiksYShfKG8se3VpOntib2R5OiJzbTpwLTAifX0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxpKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtyZWZfa2V5OiJzY3JvbGxFbCIscmVmOkx9LFtsLmNyZWF0ZVZOb2RlKGcse2V4cGFuZGVkOmwudW5yZWYoaWUpLCJvblVwZGF0ZTpleHBhbmRlZCI6ZT0+bC5pc1JlZihpZSk/aWUudmFsdWU9ZTpudWxsLGNvbHVtbnM6b2UsZGF0YTpsLnVucmVmKEkpfSx7ZW1wdHk6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InRleHQtY2VudGVyIHRleHQtbXV0ZWQgcHktOCJ9LCIgTm8gbWVtYmVycyBpbiB0aGlzIG9yZ2FuaXphdGlvbi4gIildKSxleHBhbmRlZDpsLndpdGhDdHgoKHtyb3c6ZX0pPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InAtNCBzcGFjZS15LTEifSxbbC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIn0sIiBBbGwgcGVybWlzc2lvbnMgIiksbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggZmxleC13cmFwIGdhcC0xLjUifSxbKGwub3BlbkJsb2NrKCEwKSxsLmNyZWF0ZUJsb2NrKGwuRnJhZ21lbnQsbnVsbCxsLnJlbmRlckxpc3QoZS5vcmlnaW5hbC5hYmlsaXRpZXMsZT0+KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jayhrLHtrZXk6ZSxsYWJlbDplLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InNtIn0sbnVsbCw4LFsibGFiZWwiXSkpKSwxMjgpKV0pXSldKSxfOjF9LDgsWyJleHBhbmRlZCIsIm9uVXBkYXRlOmV4cGFuZGVkIiwiZGF0YSJdKSxsLnVucmVmKFApPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJweS0zIHRleHQtY2VudGVyIHRleHQtbXV0ZWQgdGV4dC1zbSJ9LCIgTG9hZGluZ+KApiAiKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw1MTIpXTthKGA8ZGl2JHtpfT5gKSxhKF8oZyx7ZXhwYW5kZWQ6bC51bnJlZihpZSksIm9uVXBkYXRlOmV4cGFuZGVkIjplPT5sLmlzUmVmKGllKT9pZS52YWx1ZT1lOm51bGwsY29sdW1uczpvZSxkYXRhOmwudW5yZWYoSSl9LHtlbXB0eTpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgifSwiIE5vIG1lbWJlcnMgaW4gdGhpcyBvcmdhbml6YXRpb24uICIpXTthKGA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgiJHtpfT4gTm8gbWVtYmVycyBpbiB0aGlzIG9yZ2FuaXphdGlvbi4gPC9kaXY+YCl9KSxleHBhbmRlZDpsLndpdGhDdHgoKHtyb3c6ZX0sYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJwLTQgc3BhY2UteS0xIn0sW2wuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtbXV0ZWQgbWItMiJ9LCIgQWxsIHBlcm1pc3Npb25zICIpLGwuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtd3JhcCBnYXAtMS41In0sWyhsLm9wZW5CbG9jayghMCksbC5jcmVhdGVCbG9jayhsLkZyYWdtZW50LG51bGwsbC5yZW5kZXJMaXN0KGUub3JpZ2luYWwuYWJpbGl0aWVzLGU9PihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soayx7a2V5OmUsbGFiZWw6ZSxjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixzaXplOiJzbSJ9LG51bGwsOCxbImxhYmVsIl0pKSksMTI4KSldKV0pXTthKGA8ZGl2IGNsYXNzPSJwLTQgc3BhY2UteS0xIiR7aX0+PHAgY2xhc3M9InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIiJHtpfT4gQWxsIHBlcm1pc3Npb25zIDwvcD48ZGl2IGNsYXNzPSJmbGV4IGZsZXgtd3JhcCBnYXAtMS41IiR7aX0+XHgzYyEtLVstLVx4M2VgKSxOKGUub3JpZ2luYWwuYWJpbGl0aWVzLGU9PnthKF8oayx7a2V5OmUsbGFiZWw6ZSxjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixzaXplOiJzbSJ9LG51bGwsdCxpKSl9KSxhKCJceDNjIS0tXS0tXHgzZTwvZGl2PjwvZGl2PiIpfSksXzoxfSx0LGkpKSxsLnVucmVmKFApP2EoYDxkaXYgY2xhc3M9InB5LTMgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZCB0ZXh0LXNtIiR7aX0+IExvYWRpbmfigKYgPC9kaXY+YCk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoIjwvZGl2PiIpfSksXzoxfSx0KSksYSgiPC9kaXY+PC9kaXY+IiksYShfKHose29wZW46bC51bnJlZihhZSksIm9uVXBkYXRlOm9wZW4iOltlPT5sLmlzUmVmKGFlKT9hZS52YWx1ZT1lOm51bGwsZT0+e2V8fChsZS52YWx1ZT1udWxsKX1dLG1lbWJlcjpsLnVucmVmKGxlKX0sbnVsbCx0KSksYSgiXHgzYyEtLV0tLVx4M2UiKX19fSksST1MLnNldHVwO0wuc2V0dXA9KGUsYSk9Pntjb25zdCB0PWwudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL2NvbXBvbmVudHMvT3JnYW5pemF0aW9uL09yZ2FuaXphdGlvbk1lbWJlckxpc3QudnVlIiksST9JKGUsYSk6dm9pZCAwfTtjb25zdCBTPU9iamVjdC5hc3NpZ24oTCx7X19uYW1lOiJPcmdhbml6YXRpb25NZW1iZXJMaXN0In0pLCQ9bC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToibWVtYmVycyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobyl7YSh7dGl0bGU6Ik1lbWJlcnMifSk7Y29uc3Qgbj1pKCkse2RhdGE6cn09dCgib3JnLXBlcm1pc3Npb25zIiwoKT0+bi5mZXRjaFBlcm1pc3Npb25zKCkse2RlZmF1bHQ6KCk9PltdfSkse2RhdGE6c309dCgib3JnLWludml0YXRpb25zIiwoKT0+bi5mZXRjaEludml0YXRpb25zKCkse2RlZmF1bHQ6KCk9PltdfSk7cmV0dXJuIGwucHJvdmlkZShVLHtpbnZpdGF0aW9uczpzLHBlcm1pc3Npb25zOnIsYXN5bmMgYWRkTWVtYmVyKGUpe2F3YWl0IG4uYWRkTWVtYmVyKHtlbWFpbDplfSl9LGFzeW5jIHVwZGF0ZU1lbWJlckFiaWxpdGllcyhlLGwpe2F3YWl0IG4udXBkYXRlTWVtYmVyQWJpbGl0aWVzKGUse2FiaWxpdGllczpsfSl9LGFzeW5jIHJlbW92ZU1lbWJlcihlKXthd2FpdCBuLnJlbW92ZU1lbWJlcihlKX0sYXN5bmMgY3JlYXRlSW52aXRhdGlvbihlLGwsYSl7Y29uc3QgdD1hd2FpdCBuLmNyZWF0ZUludml0YXRpb24oe2VtYWlsOmUscm9sZV9pZDpsLHByb2plY3RfaWRzOmE/Lmxlbmd0aD9hOnZvaWQgMH0pO3JldHVybiBzLnZhbHVlPVsuLi5zLnZhbHVlLHRdLHR9LGFzeW5jIHJldm9rZUludml0YXRpb24oZSl7YXdhaXQgbi5yZXZva2VJbnZpdGF0aW9uKGUpLHMudmFsdWU9cy52YWx1ZS5maWx0ZXIobD0+bC5pZCE9PWUpfX0pLChhLHQsaSxvKT0+e2NvbnN0IG49ZTt0KGA8ZGl2JHtDKGwubWVyZ2VQcm9wcyh7Y2xhc3M6InNwYWNlLXktNCJ9LG8pKX0+YCksdChfKG4se2ljb246ImktbHVjaWRlLWluZm8iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHRpdGxlOiJQZXJtaXNzaW9uIGNoYW5nZXMgYXBwbHkgdG8gdGhpcyBvcmdhbml6YXRpb24gYW5kIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LiJ9LG51bGwsaSkpLHQoXyhTLG51bGwsbnVsbCxpKSksdCgiPC9kaXY+Iil9fX0pLFA9JC5zZXR1cDskLnNldHVwPShlLGEpPT57Y29uc3QgdD1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4odC5tb2R1bGVzfHwodC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vbWVtYmVycy52dWUiKSxQP1AoZSxhKTp2b2lkIDB9O2V4cG9ydHskIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1tZW1iZXJzLURnckg5X0hRLm1qcy5tYXAK", "chunks/build/notifications-B0mXUhvI.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBufWZyb20iLi9Td2l0Y2gtQnlXMEJVTGkubWpzIjtpbXBvcnR7XyBhcyByfWZyb20iLi9TZWxlY3RNZW51LUJhQVB3NC1rLm1qcyI7aW1wb3J0e18gYXMgb31mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7XyBhcyBpfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHthRSBhcyBzLG8gYXMgbCxhLHMgYXMgYyxiIGFzIGR9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt2IGFzIHAsdSBhcyBmLGEgYXMgbSxpIGFzIHksYW4gYXMgdyxfIGFzIGIsZCBhcyB2LGUgYXMgeCx0IGFzIFMsbCBhcyBDLHIgYXMgQSxQIGFzIE8sSSBhcyBFLGFPIGFzIE4sYUogYXMgUiwkIGFzIER9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtDIGFzIFAsRCBhcyAkLGQgYXMgTCxoIGFzIHosQixuIGFzIEYsdSBhcyBILGEgYXMgXyxFIGFzIGosRiBhcyBxLGIgYXMgVSxHIGFzIFcsZiBhcyBLLG8gYXMgWCxxIGFzIFEsZyBhcyBaLHQgYXMgWSxqIGFzIGVlfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e1MgYXMgdGV9ZnJvbSIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2ltcG9ydHtfIGFzIG5lfWZyb20iLi9Ecm9wZG93bk1lbnUtQ2VjUGNlSmEubWpzIjtpbXBvcnR7XyBhcyByZX1mcm9tIi4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydHtfIGFzIG9lfWZyb20iLi9BbGVydC1DVkI1WVh1ZS5tanMiO2ltcG9ydHtfIGFzIGllfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9WaXN1YWxseUhpZGRlbklucHV0LUQ3bUdQX0pXLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnQiLi91c2VGaWx0ZXItQ2xDWmFvaTgubWpzIjtpbXBvcnQiLi92aXJ0dWFsaXplci1CeXFpMHVBSy5tanMiO2ltcG9ydCIuL2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vaW5kZXgtQjFQT1RMbWEubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtmdW5jdGlvbiBPcmRlcmVkTWFwKGUpe3RoaXMuY29udGVudD1lfWZ1bmN0aW9uIGZpbmREaWZmU3RhcnQoZSx0LG4pe2ZvcihsZXQgcj0wOztyKyspe2lmKHI9PWUuY2hpbGRDb3VudHx8cj09dC5jaGlsZENvdW50KXJldHVybiBlLmNoaWxkQ291bnQ9PXQuY2hpbGRDb3VudD9udWxsOm47bGV0IG89ZS5jaGlsZChyKSxpPXQuY2hpbGQocik7aWYobyE9aSl7aWYoIW8uc2FtZU1hcmt1cChpKSlyZXR1cm4gbjtpZihvLmlzVGV4dCYmby50ZXh0IT1pLnRleHQpe2ZvcihsZXQgZT0wO28udGV4dFtlXT09aS50ZXh0W2VdO2UrKyluKys7cmV0dXJuIG59aWYoby5jb250ZW50LnNpemV8fGkuY29udGVudC5zaXplKXtsZXQgZT1maW5kRGlmZlN0YXJ0KG8uY29udGVudCxpLmNvbnRlbnQsbisxKTtpZihudWxsIT1lKXJldHVybiBlfW4rPW8ubm9kZVNpemV9ZWxzZSBuKz1vLm5vZGVTaXplfX1mdW5jdGlvbiBmaW5kRGlmZkVuZChlLHQsbixyKXtmb3IobGV0IG89ZS5jaGlsZENvdW50LGk9dC5jaGlsZENvdW50Ozspe2lmKDA9PW98fDA9PWkpcmV0dXJuIG89PWk/bnVsbDp7YTpuLGI6cn07bGV0IHM9ZS5jaGlsZCgtLW8pLGw9dC5jaGlsZCgtLWkpLGE9cy5ub2RlU2l6ZTtpZihzIT1sKXtpZighcy5zYW1lTWFya3VwKGwpKXJldHVybnthOm4sYjpyfTtpZihzLmlzVGV4dCYmcy50ZXh0IT1sLnRleHQpe2xldCBlPTAsdD1NYXRoLm1pbihzLnRleHQubGVuZ3RoLGwudGV4dC5sZW5ndGgpO2Zvcig7ZTx0JiZzLnRleHRbcy50ZXh0Lmxlbmd0aC1lLTFdPT1sLnRleHRbbC50ZXh0Lmxlbmd0aC1lLTFdOyllKyssbi0tLHItLTtyZXR1cm57YTpuLGI6cn19aWYocy5jb250ZW50LnNpemV8fGwuY29udGVudC5zaXplKXtsZXQgZT1maW5kRGlmZkVuZChzLmNvbnRlbnQsbC5jb250ZW50LG4tMSxyLTEpO2lmKGUpcmV0dXJuIGV9bi09YSxyLT1hfWVsc2Ugbi09YSxyLT1hfX1PcmRlcmVkTWFwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6T3JkZXJlZE1hcCxmaW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5jb250ZW50Lmxlbmd0aDt0Kz0yKWlmKHRoaXMuY29udGVudFt0XT09PWUpcmV0dXJuIHQ7cmV0dXJuLTF9LGdldDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbmQoZSk7cmV0dXJuLTE9PXQ/dm9pZCAwOnRoaXMuY29udGVudFt0KzFdfSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4hPWU/dGhpcy5yZW1vdmUobik6dGhpcyxvPXIuZmluZChlKSxpPXIuY29udGVudC5zbGljZSgpO3JldHVybi0xPT1vP2kucHVzaChufHxlLHQpOihpW28rMV09dCxuJiYoaVtvXT1uKSksbmV3IE9yZGVyZWRNYXAoaSl9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbmQoZSk7aWYoLTE9PXQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5jb250ZW50LnNsaWNlKCk7cmV0dXJuIG4uc3BsaWNlKHQsMiksbmV3IE9yZGVyZWRNYXAobil9LGFkZFRvU3RhcnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IE9yZGVyZWRNYXAoW2UsdF0uY29uY2F0KHRoaXMucmVtb3ZlKGUpLmNvbnRlbnQpKX0sYWRkVG9FbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJlbW92ZShlKS5jb250ZW50LnNsaWNlKCk7cmV0dXJuIG4ucHVzaChlLHQpLG5ldyBPcmRlcmVkTWFwKG4pfSxhZGRCZWZvcmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMucmVtb3ZlKHQpLG89ci5jb250ZW50LnNsaWNlKCksaT1yLmZpbmQoZSk7cmV0dXJuIG8uc3BsaWNlKC0xPT1pP28ubGVuZ3RoOmksMCx0LG4pLG5ldyBPcmRlcmVkTWFwKG8pfSxmb3JFYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5jb250ZW50Lmxlbmd0aDt0Kz0yKWUodGhpcy5jb250ZW50W3RdLHRoaXMuY29udGVudFt0KzFdKX0scHJlcGVuZDpmdW5jdGlvbihlKXtyZXR1cm4oZT1PcmRlcmVkTWFwLmZyb20oZSkpLnNpemU/bmV3IE9yZGVyZWRNYXAoZS5jb250ZW50LmNvbmNhdCh0aGlzLnN1YnRyYWN0KGUpLmNvbnRlbnQpKTp0aGlzfSxhcHBlbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGU9T3JkZXJlZE1hcC5mcm9tKGUpKS5zaXplP25ldyBPcmRlcmVkTWFwKHRoaXMuc3VidHJhY3QoZSkuY29udGVudC5jb25jYXQoZS5jb250ZW50KSk6dGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlPU9yZGVyZWRNYXAuZnJvbShlKTtmb3IodmFyIG49MDtuPGUuY29udGVudC5sZW5ndGg7bis9Mil0PXQucmVtb3ZlKGUuY29udGVudFtuXSk7cmV0dXJuIHR9LHRvT2JqZWN0OmZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2VbdF09bn0pLGV9LGdldCBzaXplKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg+PjF9fSxPcmRlcmVkTWFwLmZyb209ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIE9yZGVyZWRNYXApcmV0dXJuIGU7dmFyIHQ9W107aWYoZSlmb3IodmFyIG4gaW4gZSl0LnB1c2gobixlW25dKTtyZXR1cm4gbmV3IE9yZGVyZWRNYXAodCl9O2NsYXNzIEZyYWdtZW50e2NvbnN0cnVjdG9yKGUsdCl7aWYodGhpcy5jb250ZW50PWUsdGhpcy5zaXplPXR8fDAsbnVsbD09dClmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnNpemUrPWVbdF0ubm9kZVNpemV9bm9kZXNCZXR3ZWVuKGUsdCxuLHI9MCxvKXtmb3IobGV0IGk9MCxzPTA7czx0O2krKyl7bGV0IGw9dGhpcy5jb250ZW50W2ldLGE9cytsLm5vZGVTaXplO2lmKGE+ZSYmITEhPT1uKGwscitzLG98fG51bGwsaSkmJmwuY29udGVudC5zaXplKXtsZXQgbz1zKzE7bC5ub2Rlc0JldHdlZW4oTWF0aC5tYXgoMCxlLW8pLE1hdGgubWluKGwuY29udGVudC5zaXplLHQtbyksbixyK28pfXM9YX19ZGVzY2VuZGFudHMoZSl7dGhpcy5ub2Rlc0JldHdlZW4oMCx0aGlzLnNpemUsZSl9dGV4dEJldHdlZW4oZSx0LG4scil7bGV0IG89IiIsaT0hMDtyZXR1cm4gdGhpcy5ub2Rlc0JldHdlZW4oZSx0LChzLGwpPT57bGV0IGE9cy5pc1RleHQ/cy50ZXh0LnNsaWNlKE1hdGgubWF4KGUsbCktbCx0LWwpOnMuaXNMZWFmP3I/ImZ1bmN0aW9uIj09dHlwZW9mIHI/cihzKTpyOnMudHlwZS5zcGVjLmxlYWZUZXh0P3MudHlwZS5zcGVjLmxlYWZUZXh0KHMpOiIiOiIiO3MuaXNCbG9jayYmKHMuaXNMZWFmJiZhfHxzLmlzVGV4dGJsb2NrKSYmbiYmKGk/aT0hMTpvKz1uKSxvKz1hfSwwKSxvfWFwcGVuZChlKXtpZighZS5zaXplKXJldHVybiB0aGlzO2lmKCF0aGlzLnNpemUpcmV0dXJuIGU7bGV0IHQ9dGhpcy5sYXN0Q2hpbGQsbj1lLmZpcnN0Q2hpbGQscj10aGlzLmNvbnRlbnQuc2xpY2UoKSxvPTA7Zm9yKHQuaXNUZXh0JiZ0LnNhbWVNYXJrdXAobikmJihyW3IubGVuZ3RoLTFdPXQud2l0aFRleHQodC50ZXh0K24udGV4dCksbz0xKTtvPGUuY29udGVudC5sZW5ndGg7bysrKXIucHVzaChlLmNvbnRlbnRbb10pO3JldHVybiBuZXcgRnJhZ21lbnQocix0aGlzLnNpemUrZS5zaXplKX1jdXQoZSx0PXRoaXMuc2l6ZSl7aWYoMD09ZSYmdD09dGhpcy5zaXplKXJldHVybiB0aGlzO2xldCBuPVtdLHI9MDtpZih0PmUpZm9yKGxldCBvPTAsaT0wO2k8dDtvKyspe2xldCBzPXRoaXMuY29udGVudFtvXSxsPWkrcy5ub2RlU2l6ZTtsPmUmJigoaTxlfHxsPnQpJiYocz1zLmlzVGV4dD9zLmN1dChNYXRoLm1heCgwLGUtaSksTWF0aC5taW4ocy50ZXh0Lmxlbmd0aCx0LWkpKTpzLmN1dChNYXRoLm1heCgwLGUtaS0xKSxNYXRoLm1pbihzLmNvbnRlbnQuc2l6ZSx0LWktMSkpKSxuLnB1c2gocykscis9cy5ub2RlU2l6ZSksaT1sfXJldHVybiBuZXcgRnJhZ21lbnQobixyKX1jdXRCeUluZGV4KGUsdCl7cmV0dXJuIGU9PXQ/RnJhZ21lbnQuZW1wdHk6MD09ZSYmdD09dGhpcy5jb250ZW50Lmxlbmd0aD90aGlzOm5ldyBGcmFnbWVudCh0aGlzLmNvbnRlbnQuc2xpY2UoZSx0KSl9cmVwbGFjZUNoaWxkKGUsdCl7bGV0IG49dGhpcy5jb250ZW50W2VdO2lmKG49PXQpcmV0dXJuIHRoaXM7bGV0IHI9dGhpcy5jb250ZW50LnNsaWNlKCksbz10aGlzLnNpemUrdC5ub2RlU2l6ZS1uLm5vZGVTaXplO3JldHVybiByW2VdPXQsbmV3IEZyYWdtZW50KHIsbyl9YWRkVG9TdGFydChlKXtyZXR1cm4gbmV3IEZyYWdtZW50KFtlXS5jb25jYXQodGhpcy5jb250ZW50KSx0aGlzLnNpemUrZS5ub2RlU2l6ZSl9YWRkVG9FbmQoZSl7cmV0dXJuIG5ldyBGcmFnbWVudCh0aGlzLmNvbnRlbnQuY29uY2F0KGUpLHRoaXMuc2l6ZStlLm5vZGVTaXplKX1lcShlKXtpZih0aGlzLmNvbnRlbnQubGVuZ3RoIT1lLmNvbnRlbnQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgdD0wO3Q8dGhpcy5jb250ZW50Lmxlbmd0aDt0KyspaWYoIXRoaXMuY29udGVudFt0XS5lcShlLmNvbnRlbnRbdF0pKXJldHVybiExO3JldHVybiEwfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50WzBdOm51bGx9Z2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RoP3RoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdOm51bGx9Z2V0IGNoaWxkQ291bnQoKXtyZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aH1jaGlsZChlKXtsZXQgdD10aGlzLmNvbnRlbnRbZV07aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4ICIrZSsiIG91dCBvZiByYW5nZSBmb3IgIit0aGlzKTtyZXR1cm4gdH1tYXliZUNoaWxkKGUpe3JldHVybiB0aGlzLmNvbnRlbnRbZV18fG51bGx9Zm9yRWFjaChlKXtmb3IobGV0IHQ9MCxuPTA7dDx0aGlzLmNvbnRlbnQubGVuZ3RoO3QrKyl7bGV0IHI9dGhpcy5jb250ZW50W3RdO2UocixuLHQpLG4rPXIubm9kZVNpemV9fWZpbmREaWZmU3RhcnQoZSx0PTApe3JldHVybiBmaW5kRGlmZlN0YXJ0KHRoaXMsZSx0KX1maW5kRGlmZkVuZChlLHQ9dGhpcy5zaXplLG49ZS5zaXplKXtyZXR1cm4gZmluZERpZmZFbmQodGhpcyxlLHQsbil9ZmluZEluZGV4KGUpe2lmKDA9PWUpcmV0dXJuIHJldEluZGV4KDAsZSk7aWYoZT09dGhpcy5zaXplKXJldHVybiByZXRJbmRleCh0aGlzLmNvbnRlbnQubGVuZ3RoLGUpO2lmKGU+dGhpcy5zaXplfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFBvc2l0aW9uICR7ZX0gb3V0c2lkZSBvZiBmcmFnbWVudCAoJHt0aGlzfSlgKTtmb3IobGV0IHQ9MCxuPTA7O3QrKyl7bGV0IHI9bit0aGlzLmNoaWxkKHQpLm5vZGVTaXplO2lmKHI+PWUpcmV0dXJuIHI9PWU/cmV0SW5kZXgodCsxLHIpOnJldEluZGV4KHQsbik7bj1yfX10b1N0cmluZygpe3JldHVybiI8Iit0aGlzLnRvU3RyaW5nSW5uZXIoKSsiPiJ9dG9TdHJpbmdJbm5lcigpe3JldHVybiB0aGlzLmNvbnRlbnQuam9pbigiLCAiKX10b0pTT04oKXtyZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aD90aGlzLmNvbnRlbnQubWFwKGU9PmUudG9KU09OKCkpOm51bGx9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpcmV0dXJuIEZyYWdtZW50LmVtcHR5O2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBGcmFnbWVudC5mcm9tSlNPTiIpO3JldHVybiBuZXcgRnJhZ21lbnQodC5tYXAoZS5ub2RlRnJvbUpTT04pKX1zdGF0aWMgZnJvbUFycmF5KGUpe2lmKCFlLmxlbmd0aClyZXR1cm4gRnJhZ21lbnQuZW1wdHk7bGV0IHQsbj0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbz1lW3JdO24rPW8ubm9kZVNpemUsciYmby5pc1RleHQmJmVbci0xXS5zYW1lTWFya3VwKG8pPyh0fHwodD1lLnNsaWNlKDAscikpLHRbdC5sZW5ndGgtMV09by53aXRoVGV4dCh0W3QubGVuZ3RoLTFdLnRleHQrby50ZXh0KSk6dCYmdC5wdXNoKG8pfXJldHVybiBuZXcgRnJhZ21lbnQodHx8ZSxuKX1zdGF0aWMgZnJvbShlKXtpZighZSlyZXR1cm4gRnJhZ21lbnQuZW1wdHk7aWYoZSBpbnN0YW5jZW9mIEZyYWdtZW50KXJldHVybiBlO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHRoaXMuZnJvbUFycmF5KGUpO2lmKGUuYXR0cnMpcmV0dXJuIG5ldyBGcmFnbWVudChbZV0sZS5ub2RlU2l6ZSk7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNhbiBub3QgY29udmVydCAiK2UrIiB0byBhIEZyYWdtZW50IisoZS5ub2Rlc0JldHdlZW4/IiAobG9va3MgbGlrZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBwcm9zZW1pcnJvci1tb2RlbCB3ZXJlIGxvYWRlZCkiOiIiKSl9fUZyYWdtZW50LmVtcHR5PW5ldyBGcmFnbWVudChbXSwwKTtjb25zdCBzZT17aW5kZXg6MCxvZmZzZXQ6MH07ZnVuY3Rpb24gcmV0SW5kZXgoZSx0KXtyZXR1cm4gc2UuaW5kZXg9ZSxzZS5vZmZzZXQ9dCxzZX1mdW5jdGlvbiBjb21wYXJlRGVlcChlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKCFlfHwib2JqZWN0IiE9dHlwZW9mIGV8fCF0fHwib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuITE7bGV0IG49QXJyYXkuaXNBcnJheShlKTtpZihBcnJheS5pc0FycmF5KHQpIT1uKXJldHVybiExO2lmKG4pe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylpZighY29tcGFyZURlZXAoZVtuXSx0W25dKSlyZXR1cm4hMX1lbHNle2ZvcihsZXQgbiBpbiBlKWlmKCEobiBpbiB0KXx8IWNvbXBhcmVEZWVwKGVbbl0sdFtuXSkpcmV0dXJuITE7Zm9yKGxldCBuIGluIHQpaWYoIShuIGluIGUpKXJldHVybiExfXJldHVybiEwfWxldCBsZT1jbGFzcyBNYXJre2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWUsdGhpcy5hdHRycz10fWFkZFRvU2V0KGUpe2xldCB0LG49ITE7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2xldCBvPWVbcl07aWYodGhpcy5lcShvKSlyZXR1cm4gZTtpZih0aGlzLnR5cGUuZXhjbHVkZXMoby50eXBlKSl0fHwodD1lLnNsaWNlKDAscikpO2Vsc2V7aWYoby50eXBlLmV4Y2x1ZGVzKHRoaXMudHlwZSkpcmV0dXJuIGU7IW4mJm8udHlwZS5yYW5rPnRoaXMudHlwZS5yYW5rJiYodHx8KHQ9ZS5zbGljZSgwLHIpKSx0LnB1c2godGhpcyksbj0hMCksdCYmdC5wdXNoKG8pfX1yZXR1cm4gdHx8KHQ9ZS5zbGljZSgpKSxufHx0LnB1c2godGhpcyksdH1yZW1vdmVGcm9tU2V0KGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuZXEoZVt0XSkpcmV0dXJuIGUuc2xpY2UoMCx0KS5jb25jYXQoZS5zbGljZSh0KzEpKTtyZXR1cm4gZX1pc0luU2V0KGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuZXEoZVt0XSkpcmV0dXJuITA7cmV0dXJuITF9ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fHRoaXMudHlwZT09ZS50eXBlJiZjb21wYXJlRGVlcCh0aGlzLmF0dHJzLGUuYXR0cnMpfXRvSlNPTigpe2xldCBlPXt0eXBlOnRoaXMudHlwZS5uYW1lfTtmb3IobGV0IHQgaW4gdGhpcy5hdHRycyl7ZS5hdHRycz10aGlzLmF0dHJzO2JyZWFrfXJldHVybiBlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBNYXJrLmZyb21KU09OIik7bGV0IG49ZS5tYXJrc1t0LnR5cGVdO2lmKCFuKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSBpcyBubyBtYXJrIHR5cGUgJHt0LnR5cGV9IGluIHRoaXMgc2NoZW1hYCk7bGV0IHI9bi5jcmVhdGUodC5hdHRycyk7cmV0dXJuIG4uY2hlY2tBdHRycyhyLmF0dHJzKSxyfXN0YXRpYyBzYW1lU2V0KGUsdCl7aWYoZT09dClyZXR1cm4hMDtpZihlLmxlbmd0aCE9dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYoIWVbbl0uZXEodFtuXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIHNldEZyb20oZSl7aWYoIWV8fEFycmF5LmlzQXJyYXkoZSkmJjA9PWUubGVuZ3RoKXJldHVybiBNYXJrLm5vbmU7aWYoZSBpbnN0YW5jZW9mIE1hcmspcmV0dXJuW2VdO2xldCB0PWUuc2xpY2UoKTtyZXR1cm4gdC5zb3J0KChlLHQpPT5lLnR5cGUucmFuay10LnR5cGUucmFuayksdH19O2xlLm5vbmU9W107Y2xhc3MgUmVwbGFjZUVycm9yIGV4dGVuZHMgRXJyb3J7fWNsYXNzIFNsaWNle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmNvbnRlbnQ9ZSx0aGlzLm9wZW5TdGFydD10LHRoaXMub3BlbkVuZD1ufWdldCBzaXplKCl7cmV0dXJuIHRoaXMuY29udGVudC5zaXplLXRoaXMub3BlblN0YXJ0LXRoaXMub3BlbkVuZH1pbnNlcnRBdChlLHQpe2xldCBuPWluc2VydEludG8odGhpcy5jb250ZW50LGUrdGhpcy5vcGVuU3RhcnQsdCk7cmV0dXJuIG4mJm5ldyBTbGljZShuLHRoaXMub3BlblN0YXJ0LHRoaXMub3BlbkVuZCl9cmVtb3ZlQmV0d2VlbihlLHQpe3JldHVybiBuZXcgU2xpY2UocmVtb3ZlUmFuZ2UodGhpcy5jb250ZW50LGUrdGhpcy5vcGVuU3RhcnQsdCt0aGlzLm9wZW5TdGFydCksdGhpcy5vcGVuU3RhcnQsdGhpcy5vcGVuRW5kKX1lcShlKXtyZXR1cm4gdGhpcy5jb250ZW50LmVxKGUuY29udGVudCkmJnRoaXMub3BlblN0YXJ0PT1lLm9wZW5TdGFydCYmdGhpcy5vcGVuRW5kPT1lLm9wZW5FbmR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jb250ZW50KyIoIit0aGlzLm9wZW5TdGFydCsiLCIrdGhpcy5vcGVuRW5kKyIpIn10b0pTT04oKXtpZighdGhpcy5jb250ZW50LnNpemUpcmV0dXJuIG51bGw7bGV0IGU9e2NvbnRlbnQ6dGhpcy5jb250ZW50LnRvSlNPTigpfTtyZXR1cm4gdGhpcy5vcGVuU3RhcnQ+MCYmKGUub3BlblN0YXJ0PXRoaXMub3BlblN0YXJ0KSx0aGlzLm9wZW5FbmQ+MCYmKGUub3BlbkVuZD10aGlzLm9wZW5FbmQpLGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpcmV0dXJuIFNsaWNlLmVtcHR5O2xldCBuPXQub3BlblN0YXJ0fHwwLHI9dC5vcGVuRW5kfHwwO2lmKCJudW1iZXIiIT10eXBlb2Ygbnx8Im51bWJlciIhPXR5cGVvZiByKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBTbGljZS5mcm9tSlNPTiIpO3JldHVybiBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbUpTT04oZSx0LmNvbnRlbnQpLG4scil9c3RhdGljIG1heE9wZW4oZSx0PSEwKXtsZXQgbj0wLHI9MDtmb3IobGV0IHI9ZS5maXJzdENoaWxkO3ImJiFyLmlzTGVhZiYmKHR8fCFyLnR5cGUuc3BlYy5pc29sYXRpbmcpO3I9ci5maXJzdENoaWxkKW4rKztmb3IobGV0IG49ZS5sYXN0Q2hpbGQ7biYmIW4uaXNMZWFmJiYodHx8IW4udHlwZS5zcGVjLmlzb2xhdGluZyk7bj1uLmxhc3RDaGlsZClyKys7cmV0dXJuIG5ldyBTbGljZShlLG4scil9fWZ1bmN0aW9uIHJlbW92ZVJhbmdlKGUsdCxuKXtsZXR7aW5kZXg6cixvZmZzZXQ6b309ZS5maW5kSW5kZXgodCksaT1lLm1heWJlQ2hpbGQocikse2luZGV4OnMsb2Zmc2V0Omx9PWUuZmluZEluZGV4KG4pO2lmKG89PXR8fGkuaXNUZXh0KXtpZihsIT1uJiYhZS5jaGlsZChzKS5pc1RleHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJlbW92aW5nIG5vbi1mbGF0IHJhbmdlIik7cmV0dXJuIGUuY3V0KDAsdCkuYXBwZW5kKGUuY3V0KG4pKX1pZihyIT1zKXRocm93IG5ldyBSYW5nZUVycm9yKCJSZW1vdmluZyBub24tZmxhdCByYW5nZSIpO3JldHVybiBlLnJlcGxhY2VDaGlsZChyLGkuY29weShyZW1vdmVSYW5nZShpLmNvbnRlbnQsdC1vLTEsbi1vLTEpKSl9ZnVuY3Rpb24gaW5zZXJ0SW50byhlLHQsbixyKXtsZXR7aW5kZXg6byxvZmZzZXQ6aX09ZS5maW5kSW5kZXgodCkscz1lLm1heWJlQ2hpbGQobyk7aWYoaT09dHx8cy5pc1RleHQpcmV0dXJuIHImJiFyLmNhblJlcGxhY2UobyxvLG4pP251bGw6ZS5jdXQoMCx0KS5hcHBlbmQobikuYXBwZW5kKGUuY3V0KHQpKTtsZXQgbD1pbnNlcnRJbnRvKHMuY29udGVudCx0LWktMSxuLHMpO3JldHVybiBsJiZlLnJlcGxhY2VDaGlsZChvLHMuY29weShsKSl9ZnVuY3Rpb24gcmVwbGFjZShlLHQsbil7aWYobi5vcGVuU3RhcnQ+ZS5kZXB0aCl0aHJvdyBuZXcgUmVwbGFjZUVycm9yKCJJbnNlcnRlZCBjb250ZW50IGRlZXBlciB0aGFuIGluc2VydGlvbiBwb3NpdGlvbiIpO2lmKGUuZGVwdGgtbi5vcGVuU3RhcnQhPXQuZGVwdGgtbi5vcGVuRW5kKXRocm93IG5ldyBSZXBsYWNlRXJyb3IoIkluY29uc2lzdGVudCBvcGVuIGRlcHRocyIpO3JldHVybiByZXBsYWNlT3V0ZXIoZSx0LG4sMCl9ZnVuY3Rpb24gcmVwbGFjZU91dGVyKGUsdCxuLHIpe2xldCBvPWUuaW5kZXgociksaT1lLm5vZGUocik7aWYobz09dC5pbmRleChyKSYmcjxlLmRlcHRoLW4ub3BlblN0YXJ0KXtsZXQgcz1yZXBsYWNlT3V0ZXIoZSx0LG4scisxKTtyZXR1cm4gaS5jb3B5KGkuY29udGVudC5yZXBsYWNlQ2hpbGQobyxzKSl9aWYobi5jb250ZW50LnNpemUpe2lmKG4ub3BlblN0YXJ0fHxuLm9wZW5FbmR8fGUuZGVwdGghPXJ8fHQuZGVwdGghPXIpe2xldHtzdGFydDpvLGVuZDpzfT1mdW5jdGlvbihlLHQpe2xldCBuPXQuZGVwdGgtZS5vcGVuU3RhcnQscj10Lm5vZGUobikuY29weShlLmNvbnRlbnQpO2ZvcihsZXQgZT1uLTE7ZT49MDtlLS0pcj10Lm5vZGUoZSkuY29weShGcmFnbWVudC5mcm9tKHIpKTtyZXR1cm57c3RhcnQ6ci5yZXNvbHZlTm9DYWNoZShlLm9wZW5TdGFydCtuKSxlbmQ6ci5yZXNvbHZlTm9DYWNoZShyLmNvbnRlbnQuc2l6ZS1lLm9wZW5FbmQtbil9fShuLGUpO3JldHVybiBjbG9zZShpLHJlcGxhY2VUaHJlZVdheShlLG8scyx0LHIpKX17bGV0IHI9ZS5wYXJlbnQsbz1yLmNvbnRlbnQ7cmV0dXJuIGNsb3NlKHIsby5jdXQoMCxlLnBhcmVudE9mZnNldCkuYXBwZW5kKG4uY29udGVudCkuYXBwZW5kKG8uY3V0KHQucGFyZW50T2Zmc2V0KSkpfX1yZXR1cm4gY2xvc2UoaSxyZXBsYWNlVHdvV2F5KGUsdCxyKSl9ZnVuY3Rpb24gY2hlY2tKb2luKGUsdCl7aWYoIXQudHlwZS5jb21wYXRpYmxlQ29udGVudChlLnR5cGUpKXRocm93IG5ldyBSZXBsYWNlRXJyb3IoIkNhbm5vdCBqb2luICIrdC50eXBlLm5hbWUrIiBvbnRvICIrZS50eXBlLm5hbWUpfWZ1bmN0aW9uIGpvaW5hYmxlJDEoZSx0LG4pe2xldCByPWUubm9kZShuKTtyZXR1cm4gY2hlY2tKb2luKHIsdC5ub2RlKG4pKSxyfWZ1bmN0aW9uIGFkZE5vZGUoZSx0KXtsZXQgbj10Lmxlbmd0aC0xO24+PTAmJmUuaXNUZXh0JiZlLnNhbWVNYXJrdXAodFtuXSk/dFtuXT1lLndpdGhUZXh0KHRbbl0udGV4dCtlLnRleHQpOnQucHVzaChlKX1mdW5jdGlvbiBhZGRSYW5nZShlLHQsbixyKXtsZXQgbz0odHx8ZSkubm9kZShuKSxpPTAscz10P3QuaW5kZXgobik6by5jaGlsZENvdW50O2UmJihpPWUuaW5kZXgobiksZS5kZXB0aD5uP2krKzplLnRleHRPZmZzZXQmJihhZGROb2RlKGUubm9kZUFmdGVyLHIpLGkrKykpO2ZvcihsZXQgZT1pO2U8cztlKyspYWRkTm9kZShvLmNoaWxkKGUpLHIpO3QmJnQuZGVwdGg9PW4mJnQudGV4dE9mZnNldCYmYWRkTm9kZSh0Lm5vZGVCZWZvcmUscil9ZnVuY3Rpb24gY2xvc2UoZSx0KXtyZXR1cm4gZS50eXBlLmNoZWNrQ29udGVudCh0KSxlLmNvcHkodCl9ZnVuY3Rpb24gcmVwbGFjZVRocmVlV2F5KGUsdCxuLHIsbyl7bGV0IGk9ZS5kZXB0aD5vJiZqb2luYWJsZSQxKGUsdCxvKzEpLHM9ci5kZXB0aD5vJiZqb2luYWJsZSQxKG4scixvKzEpLGw9W107cmV0dXJuIGFkZFJhbmdlKG51bGwsZSxvLGwpLGkmJnMmJnQuaW5kZXgobyk9PW4uaW5kZXgobyk/KGNoZWNrSm9pbihpLHMpLGFkZE5vZGUoY2xvc2UoaSxyZXBsYWNlVGhyZWVXYXkoZSx0LG4scixvKzEpKSxsKSk6KGkmJmFkZE5vZGUoY2xvc2UoaSxyZXBsYWNlVHdvV2F5KGUsdCxvKzEpKSxsKSxhZGRSYW5nZSh0LG4sbyxsKSxzJiZhZGROb2RlKGNsb3NlKHMscmVwbGFjZVR3b1dheShuLHIsbysxKSksbCkpLGFkZFJhbmdlKHIsbnVsbCxvLGwpLG5ldyBGcmFnbWVudChsKX1mdW5jdGlvbiByZXBsYWNlVHdvV2F5KGUsdCxuKXtsZXQgcj1bXTtpZihhZGRSYW5nZShudWxsLGUsbixyKSxlLmRlcHRoPm4pe2FkZE5vZGUoY2xvc2Uoam9pbmFibGUkMShlLHQsbisxKSxyZXBsYWNlVHdvV2F5KGUsdCxuKzEpKSxyKX1yZXR1cm4gYWRkUmFuZ2UodCxudWxsLG4sciksbmV3IEZyYWdtZW50KHIpfVNsaWNlLmVtcHR5PW5ldyBTbGljZShGcmFnbWVudC5lbXB0eSwwLDApO2NsYXNzIFJlc29sdmVkUG9ze2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnBvcz1lLHRoaXMucGF0aD10LHRoaXMucGFyZW50T2Zmc2V0PW4sdGhpcy5kZXB0aD10Lmxlbmd0aC8zLTF9cmVzb2x2ZURlcHRoKGUpe3JldHVybiBudWxsPT1lP3RoaXMuZGVwdGg6ZTwwP3RoaXMuZGVwdGgrZTplfWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5ub2RlKHRoaXMuZGVwdGgpfWdldCBkb2MoKXtyZXR1cm4gdGhpcy5ub2RlKDApfW5vZGUoZSl7cmV0dXJuIHRoaXMucGF0aFszKnRoaXMucmVzb2x2ZURlcHRoKGUpXX1pbmRleChlKXtyZXR1cm4gdGhpcy5wYXRoWzMqdGhpcy5yZXNvbHZlRGVwdGgoZSkrMV19aW5kZXhBZnRlcihlKXtyZXR1cm4gZT10aGlzLnJlc29sdmVEZXB0aChlKSx0aGlzLmluZGV4KGUpKyhlIT10aGlzLmRlcHRofHx0aGlzLnRleHRPZmZzZXQ/MTowKX1zdGFydChlKXtyZXR1cm4gMD09KGU9dGhpcy5yZXNvbHZlRGVwdGgoZSkpPzA6dGhpcy5wYXRoWzMqZS0xXSsxfWVuZChlKXtyZXR1cm4gZT10aGlzLnJlc29sdmVEZXB0aChlKSx0aGlzLnN0YXJ0KGUpK3RoaXMubm9kZShlKS5jb250ZW50LnNpemV9YmVmb3JlKGUpe2lmKCEoZT10aGlzLnJlc29sdmVEZXB0aChlKSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRoZXJlIGlzIG5vIHBvc2l0aW9uIGJlZm9yZSB0aGUgdG9wLWxldmVsIG5vZGUiKTtyZXR1cm4gZT09dGhpcy5kZXB0aCsxP3RoaXMucG9zOnRoaXMucGF0aFszKmUtMV19YWZ0ZXIoZSl7aWYoIShlPXRoaXMucmVzb2x2ZURlcHRoKGUpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlcmUgaXMgbm8gcG9zaXRpb24gYWZ0ZXIgdGhlIHRvcC1sZXZlbCBub2RlIik7cmV0dXJuIGU9PXRoaXMuZGVwdGgrMT90aGlzLnBvczp0aGlzLnBhdGhbMyplLTFdK3RoaXMucGF0aFszKmVdLm5vZGVTaXplfWdldCB0ZXh0T2Zmc2V0KCl7cmV0dXJuIHRoaXMucG9zLXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdfWdldCBub2RlQWZ0ZXIoKXtsZXQgZT10aGlzLnBhcmVudCx0PXRoaXMuaW5kZXgodGhpcy5kZXB0aCk7aWYodD09ZS5jaGlsZENvdW50KXJldHVybiBudWxsO2xldCBuPXRoaXMucG9zLXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdLHI9ZS5jaGlsZCh0KTtyZXR1cm4gbj9lLmNoaWxkKHQpLmN1dChuKTpyfWdldCBub2RlQmVmb3JlKCl7bGV0IGU9dGhpcy5pbmRleCh0aGlzLmRlcHRoKSx0PXRoaXMucG9zLXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdO3JldHVybiB0P3RoaXMucGFyZW50LmNoaWxkKGUpLmN1dCgwLHQpOjA9PWU/bnVsbDp0aGlzLnBhcmVudC5jaGlsZChlLTEpfXBvc0F0SW5kZXgoZSx0KXt0PXRoaXMucmVzb2x2ZURlcHRoKHQpO2xldCBuPXRoaXMucGF0aFszKnRdLHI9MD09dD8wOnRoaXMucGF0aFszKnQtMV0rMTtmb3IobGV0IHQ9MDt0PGU7dCsrKXIrPW4uY2hpbGQodCkubm9kZVNpemU7cmV0dXJuIHJ9bWFya3MoKXtsZXQgZT10aGlzLnBhcmVudCx0PXRoaXMuaW5kZXgoKTtpZigwPT1lLmNvbnRlbnQuc2l6ZSlyZXR1cm4gbGUubm9uZTtpZih0aGlzLnRleHRPZmZzZXQpcmV0dXJuIGUuY2hpbGQodCkubWFya3M7bGV0IG49ZS5tYXliZUNoaWxkKHQtMSkscj1lLm1heWJlQ2hpbGQodCk7aWYoIW4pe2xldCBlPW47bj1yLHI9ZX1sZXQgbz1uLm1hcmtzO2Zvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKSExIT09b1tpXS50eXBlLnNwZWMuaW5jbHVzaXZlfHxyJiZvW2ldLmlzSW5TZXQoci5tYXJrcyl8fChvPW9baS0tXS5yZW1vdmVGcm9tU2V0KG8pKTtyZXR1cm4gb31tYXJrc0Fjcm9zcyhlKXtsZXQgdD10aGlzLnBhcmVudC5tYXliZUNoaWxkKHRoaXMuaW5kZXgoKSk7aWYoIXR8fCF0LmlzSW5saW5lKXJldHVybiBudWxsO2xldCBuPXQubWFya3Mscj1lLnBhcmVudC5tYXliZUNoaWxkKGUuaW5kZXgoKSk7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspITEhPT1uW29dLnR5cGUuc3BlYy5pbmNsdXNpdmV8fHImJm5bb10uaXNJblNldChyLm1hcmtzKXx8KG49bltvLS1dLnJlbW92ZUZyb21TZXQobikpO3JldHVybiBufXNoYXJlZERlcHRoKGUpe2ZvcihsZXQgdD10aGlzLmRlcHRoO3Q+MDt0LS0paWYodGhpcy5zdGFydCh0KTw9ZSYmdGhpcy5lbmQodCk+PWUpcmV0dXJuIHQ7cmV0dXJuIDB9YmxvY2tSYW5nZShlPXRoaXMsdCl7aWYoZS5wb3M8dGhpcy5wb3MpcmV0dXJuIGUuYmxvY2tSYW5nZSh0aGlzKTtmb3IobGV0IG49dGhpcy5kZXB0aC0odGhpcy5wYXJlbnQuaW5saW5lQ29udGVudHx8dGhpcy5wb3M9PWUucG9zPzE6MCk7bj49MDtuLS0paWYoZS5wb3M8PXRoaXMuZW5kKG4pJiYoIXR8fHQodGhpcy5ub2RlKG4pKSkpcmV0dXJuIG5ldyBOb2RlUmFuZ2UodGhpcyxlLG4pO3JldHVybiBudWxsfXNhbWVQYXJlbnQoZSl7cmV0dXJuIHRoaXMucG9zLXRoaXMucGFyZW50T2Zmc2V0PT1lLnBvcy1lLnBhcmVudE9mZnNldH1tYXgoZSl7cmV0dXJuIGUucG9zPnRoaXMucG9zP2U6dGhpc31taW4oZSl7cmV0dXJuIGUucG9zPHRoaXMucG9zP2U6dGhpc310b1N0cmluZygpe2xldCBlPSIiO2ZvcihsZXQgdD0xO3Q8PXRoaXMuZGVwdGg7dCsrKWUrPShlPyIvIjoiIikrdGhpcy5ub2RlKHQpLnR5cGUubmFtZSsiXyIrdGhpcy5pbmRleCh0LTEpO3JldHVybiBlKyI6Iit0aGlzLnBhcmVudE9mZnNldH1zdGF0aWMgcmVzb2x2ZShlLHQpe2lmKCEodD49MCYmdDw9ZS5jb250ZW50LnNpemUpKXRocm93IG5ldyBSYW5nZUVycm9yKCJQb3NpdGlvbiAiK3QrIiBvdXQgb2YgcmFuZ2UiKTtsZXQgbj1bXSxyPTAsbz10O2ZvcihsZXQgdD1lOzspe2xldHtpbmRleDplLG9mZnNldDppfT10LmNvbnRlbnQuZmluZEluZGV4KG8pLHM9by1pO2lmKG4ucHVzaCh0LGUscitpKSwhcylicmVhaztpZih0PXQuY2hpbGQoZSksdC5pc1RleHQpYnJlYWs7bz1zLTEscis9aSsxfXJldHVybiBuZXcgUmVzb2x2ZWRQb3ModCxuLG8pfXN0YXRpYyByZXNvbHZlQ2FjaGVkKGUsdCl7bGV0IG49Y2UuZ2V0KGUpO2lmKG4pZm9yKGxldCBlPTA7ZTxuLmVsdHMubGVuZ3RoO2UrKyl7bGV0IHI9bi5lbHRzW2VdO2lmKHIucG9zPT10KXJldHVybiByfWVsc2UgY2Uuc2V0KGUsbj1uZXcgUmVzb2x2ZUNhY2hlKTtsZXQgcj1uLmVsdHNbbi5pXT1SZXNvbHZlZFBvcy5yZXNvbHZlKGUsdCk7cmV0dXJuIG4uaT0obi5pKzEpJWFlLHJ9fWNsYXNzIFJlc29sdmVDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuZWx0cz1bXSx0aGlzLmk9MH19Y29uc3QgYWU9MTIsY2U9bmV3IFdlYWtNYXA7Y2xhc3MgTm9kZVJhbmdle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLiRmcm9tPWUsdGhpcy4kdG89dCx0aGlzLmRlcHRoPW59Z2V0IHN0YXJ0KCl7cmV0dXJuIHRoaXMuJGZyb20uYmVmb3JlKHRoaXMuZGVwdGgrMSl9Z2V0IGVuZCgpe3JldHVybiB0aGlzLiR0by5hZnRlcih0aGlzLmRlcHRoKzEpfWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy4kZnJvbS5ub2RlKHRoaXMuZGVwdGgpfWdldCBzdGFydEluZGV4KCl7cmV0dXJuIHRoaXMuJGZyb20uaW5kZXgodGhpcy5kZXB0aCl9Z2V0IGVuZEluZGV4KCl7cmV0dXJuIHRoaXMuJHRvLmluZGV4QWZ0ZXIodGhpcy5kZXB0aCl9fWNvbnN0IGRlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTm9kZXtjb25zdHJ1Y3RvcihlLHQsbixyPWxlLm5vbmUpe3RoaXMudHlwZT1lLHRoaXMuYXR0cnM9dCx0aGlzLm1hcmtzPXIsdGhpcy5jb250ZW50PW58fEZyYWdtZW50LmVtcHR5fWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmNvbnRlbnQuY29udGVudH1nZXQgbm9kZVNpemUoKXtyZXR1cm4gdGhpcy5pc0xlYWY/MToyK3RoaXMuY29udGVudC5zaXplfWdldCBjaGlsZENvdW50KCl7cmV0dXJuIHRoaXMuY29udGVudC5jaGlsZENvdW50fWNoaWxkKGUpe3JldHVybiB0aGlzLmNvbnRlbnQuY2hpbGQoZSl9bWF5YmVDaGlsZChlKXtyZXR1cm4gdGhpcy5jb250ZW50Lm1heWJlQ2hpbGQoZSl9Zm9yRWFjaChlKXt0aGlzLmNvbnRlbnQuZm9yRWFjaChlKX1ub2Rlc0JldHdlZW4oZSx0LG4scj0wKXt0aGlzLmNvbnRlbnQubm9kZXNCZXR3ZWVuKGUsdCxuLHIsdGhpcyl9ZGVzY2VuZGFudHMoZSl7dGhpcy5ub2Rlc0JldHdlZW4oMCx0aGlzLmNvbnRlbnQuc2l6ZSxlKX1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5pc0xlYWYmJnRoaXMudHlwZS5zcGVjLmxlYWZUZXh0P3RoaXMudHlwZS5zcGVjLmxlYWZUZXh0KHRoaXMpOnRoaXMudGV4dEJldHdlZW4oMCx0aGlzLmNvbnRlbnQuc2l6ZSwiIil9dGV4dEJldHdlZW4oZSx0LG4scil7cmV0dXJuIHRoaXMuY29udGVudC50ZXh0QmV0d2VlbihlLHQsbixyKX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNvbnRlbnQuZmlyc3RDaGlsZH1nZXQgbGFzdENoaWxkKCl7cmV0dXJuIHRoaXMuY29udGVudC5sYXN0Q2hpbGR9ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fHRoaXMuc2FtZU1hcmt1cChlKSYmdGhpcy5jb250ZW50LmVxKGUuY29udGVudCl9c2FtZU1hcmt1cChlKXtyZXR1cm4gdGhpcy5oYXNNYXJrdXAoZS50eXBlLGUuYXR0cnMsZS5tYXJrcyl9aGFzTWFya3VwKGUsdCxuKXtyZXR1cm4gdGhpcy50eXBlPT1lJiZjb21wYXJlRGVlcCh0aGlzLmF0dHJzLHR8fGUuZGVmYXVsdEF0dHJzfHxkZSkmJmxlLnNhbWVTZXQodGhpcy5tYXJrcyxufHxsZS5ub25lKX1jb3B5KGU9bnVsbCl7cmV0dXJuIGU9PXRoaXMuY29udGVudD90aGlzOm5ldyBOb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9bWFyayhlKXtyZXR1cm4gZT09dGhpcy5tYXJrcz90aGlzOm5ldyBOb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLHRoaXMuY29udGVudCxlKX1jdXQoZSx0PXRoaXMuY29udGVudC5zaXplKXtyZXR1cm4gMD09ZSYmdD09dGhpcy5jb250ZW50LnNpemU/dGhpczp0aGlzLmNvcHkodGhpcy5jb250ZW50LmN1dChlLHQpKX1zbGljZShlLHQ9dGhpcy5jb250ZW50LnNpemUsbj0hMSl7aWYoZT09dClyZXR1cm4gU2xpY2UuZW1wdHk7bGV0IHI9dGhpcy5yZXNvbHZlKGUpLG89dGhpcy5yZXNvbHZlKHQpLGk9bj8wOnIuc2hhcmVkRGVwdGgodCkscz1yLnN0YXJ0KGkpLGw9ci5ub2RlKGkpLmNvbnRlbnQuY3V0KHIucG9zLXMsby5wb3Mtcyk7cmV0dXJuIG5ldyBTbGljZShsLHIuZGVwdGgtaSxvLmRlcHRoLWkpfXJlcGxhY2UoZSx0LG4pe3JldHVybiByZXBsYWNlKHRoaXMucmVzb2x2ZShlKSx0aGlzLnJlc29sdmUodCksbil9bm9kZUF0KGUpe2ZvcihsZXQgdD10aGlzOzspe2xldHtpbmRleDpuLG9mZnNldDpyfT10LmNvbnRlbnQuZmluZEluZGV4KGUpO2lmKHQ9dC5tYXliZUNoaWxkKG4pLCF0KXJldHVybiBudWxsO2lmKHI9PWV8fHQuaXNUZXh0KXJldHVybiB0O2UtPXIrMX19Y2hpbGRBZnRlcihlKXtsZXR7aW5kZXg6dCxvZmZzZXQ6bn09dGhpcy5jb250ZW50LmZpbmRJbmRleChlKTtyZXR1cm57bm9kZTp0aGlzLmNvbnRlbnQubWF5YmVDaGlsZCh0KSxpbmRleDp0LG9mZnNldDpufX1jaGlsZEJlZm9yZShlKXtpZigwPT1lKXJldHVybntub2RlOm51bGwsaW5kZXg6MCxvZmZzZXQ6MH07bGV0e2luZGV4OnQsb2Zmc2V0Om59PXRoaXMuY29udGVudC5maW5kSW5kZXgoZSk7aWYobjxlKXJldHVybntub2RlOnRoaXMuY29udGVudC5jaGlsZCh0KSxpbmRleDp0LG9mZnNldDpufTtsZXQgcj10aGlzLmNvbnRlbnQuY2hpbGQodC0xKTtyZXR1cm57bm9kZTpyLGluZGV4OnQtMSxvZmZzZXQ6bi1yLm5vZGVTaXplfX1yZXNvbHZlKGUpe3JldHVybiBSZXNvbHZlZFBvcy5yZXNvbHZlQ2FjaGVkKHRoaXMsZSl9cmVzb2x2ZU5vQ2FjaGUoZSl7cmV0dXJuIFJlc29sdmVkUG9zLnJlc29sdmUodGhpcyxlKX1yYW5nZUhhc01hcmsoZSx0LG4pe2xldCByPSExO3JldHVybiB0PmUmJnRoaXMubm9kZXNCZXR3ZWVuKGUsdCxlPT4obi5pc0luU2V0KGUubWFya3MpJiYocj0hMCksIXIpKSxyfWdldCBpc0Jsb2NrKCl7cmV0dXJuIHRoaXMudHlwZS5pc0Jsb2NrfWdldCBpc1RleHRibG9jaygpe3JldHVybiB0aGlzLnR5cGUuaXNUZXh0YmxvY2t9Z2V0IGlubGluZUNvbnRlbnQoKXtyZXR1cm4gdGhpcy50eXBlLmlubGluZUNvbnRlbnR9Z2V0IGlzSW5saW5lKCl7cmV0dXJuIHRoaXMudHlwZS5pc0lubGluZX1nZXQgaXNUZXh0KCl7cmV0dXJuIHRoaXMudHlwZS5pc1RleHR9Z2V0IGlzTGVhZigpe3JldHVybiB0aGlzLnR5cGUuaXNMZWFmfWdldCBpc0F0b20oKXtyZXR1cm4gdGhpcy50eXBlLmlzQXRvbX10b1N0cmluZygpe2lmKHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcpcmV0dXJuIHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcodGhpcyk7bGV0IGU9dGhpcy50eXBlLm5hbWU7cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZSs9IigiK3RoaXMuY29udGVudC50b1N0cmluZ0lubmVyKCkrIikiKSx3cmFwTWFya3ModGhpcy5tYXJrcyxlKX1jb250ZW50TWF0Y2hBdChlKXtsZXQgdD10aGlzLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQodGhpcy5jb250ZW50LDAsZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDYWxsZWQgY29udGVudE1hdGNoQXQgb24gYSBub2RlIHdpdGggaW52YWxpZCBjb250ZW50Iik7cmV0dXJuIHR9Y2FuUmVwbGFjZShlLHQsbj1GcmFnbWVudC5lbXB0eSxyPTAsbz1uLmNoaWxkQ291bnQpe2xldCBpPXRoaXMuY29udGVudE1hdGNoQXQoZSkubWF0Y2hGcmFnbWVudChuLHIsbykscz1pJiZpLm1hdGNoRnJhZ21lbnQodGhpcy5jb250ZW50LHQpO2lmKCFzfHwhcy52YWxpZEVuZClyZXR1cm4hMTtmb3IobGV0IGU9cjtlPG87ZSsrKWlmKCF0aGlzLnR5cGUuYWxsb3dzTWFya3Mobi5jaGlsZChlKS5tYXJrcykpcmV0dXJuITE7cmV0dXJuITB9Y2FuUmVwbGFjZVdpdGgoZSx0LG4scil7aWYociYmIXRoaXMudHlwZS5hbGxvd3NNYXJrcyhyKSlyZXR1cm4hMTtsZXQgbz10aGlzLmNvbnRlbnRNYXRjaEF0KGUpLm1hdGNoVHlwZShuKSxpPW8mJm8ubWF0Y2hGcmFnbWVudCh0aGlzLmNvbnRlbnQsdCk7cmV0dXJuISFpJiZpLnZhbGlkRW5kfWNhbkFwcGVuZChlKXtyZXR1cm4gZS5jb250ZW50LnNpemU/dGhpcy5jYW5SZXBsYWNlKHRoaXMuY2hpbGRDb3VudCx0aGlzLmNoaWxkQ291bnQsZS5jb250ZW50KTp0aGlzLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQoZS50eXBlKX1jaGVjaygpe3RoaXMudHlwZS5jaGVja0NvbnRlbnQodGhpcy5jb250ZW50KSx0aGlzLnR5cGUuY2hlY2tBdHRycyh0aGlzLmF0dHJzKTtsZXQgZT1sZS5ub25lO2ZvcihsZXQgdD0wO3Q8dGhpcy5tYXJrcy5sZW5ndGg7dCsrKXtsZXQgbj10aGlzLm1hcmtzW3RdO24udHlwZS5jaGVja0F0dHJzKG4uYXR0cnMpLGU9bi5hZGRUb1NldChlKX1pZighbGUuc2FtZVNldChlLHRoaXMubWFya3MpKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIGNvbGxlY3Rpb24gb2YgbWFya3MgZm9yIG5vZGUgJHt0aGlzLnR5cGUubmFtZX06ICR7dGhpcy5tYXJrcy5tYXAoZT0+ZS50eXBlLm5hbWUpfWApO3RoaXMuY29udGVudC5mb3JFYWNoKGU9PmUuY2hlY2soKSl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZS5jb250ZW50PXRoaXMuY29udGVudC50b0pTT04oKSksdGhpcy5tYXJrcy5sZW5ndGgmJihlLm1hcmtzPXRoaXMubWFya3MubWFwKGU9PmUudG9KU09OKCkpKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlLmZyb21KU09OIik7bGV0IG47aWYodC5tYXJrcyl7aWYoIUFycmF5LmlzQXJyYXkodC5tYXJrcykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbWFyayBkYXRhIGZvciBOb2RlLmZyb21KU09OIik7bj10Lm1hcmtzLm1hcChlLm1hcmtGcm9tSlNPTil9aWYoInRleHQiPT10LnR5cGUpe2lmKCJzdHJpbmciIT10eXBlb2YgdC50ZXh0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRleHQgbm9kZSBpbiBKU09OIik7cmV0dXJuIGUudGV4dCh0LnRleHQsbil9bGV0IHI9RnJhZ21lbnQuZnJvbUpTT04oZSx0LmNvbnRlbnQpLG89ZS5ub2RlVHlwZSh0LnR5cGUpLmNyZWF0ZSh0LmF0dHJzLHIsbik7cmV0dXJuIG8udHlwZS5jaGVja0F0dHJzKG8uYXR0cnMpLG99fU5vZGUucHJvdG90eXBlLnRleHQ9dm9pZCAwO2NsYXNzIFRleHROb2RlIGV4dGVuZHMgTm9kZXtjb25zdHJ1Y3RvcihlLHQsbixyKXtpZihzdXBlcihlLHQsbnVsbCxyKSwhbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRW1wdHkgdGV4dCBub2RlcyBhcmUgbm90IGFsbG93ZWQiKTt0aGlzLnRleHQ9bn10b1N0cmluZygpe3JldHVybiB0aGlzLnR5cGUuc3BlYy50b0RlYnVnU3RyaW5nP3RoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcodGhpcyk6d3JhcE1hcmtzKHRoaXMubWFya3MsSlNPTi5zdHJpbmdpZnkodGhpcy50ZXh0KSl9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMudGV4dH10ZXh0QmV0d2VlbihlLHQpe3JldHVybiB0aGlzLnRleHQuc2xpY2UoZSx0KX1nZXQgbm9kZVNpemUoKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH1tYXJrKGUpe3JldHVybiBlPT10aGlzLm1hcmtzP3RoaXM6bmV3IFRleHROb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLHRoaXMudGV4dCxlKX13aXRoVGV4dChlKXtyZXR1cm4gZT09dGhpcy50ZXh0P3RoaXM6bmV3IFRleHROb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9Y3V0KGU9MCx0PXRoaXMudGV4dC5sZW5ndGgpe3JldHVybiAwPT1lJiZ0PT10aGlzLnRleHQubGVuZ3RoP3RoaXM6dGhpcy53aXRoVGV4dCh0aGlzLnRleHQuc2xpY2UoZSx0KSl9ZXEoZSl7cmV0dXJuIHRoaXMuc2FtZU1hcmt1cChlKSYmdGhpcy50ZXh0PT1lLnRleHR9dG9KU09OKCl7bGV0IGU9c3VwZXIudG9KU09OKCk7cmV0dXJuIGUudGV4dD10aGlzLnRleHQsZX19ZnVuY3Rpb24gd3JhcE1hcmtzKGUsdCl7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pdD1lW25dLnR5cGUubmFtZSsiKCIrdCsiKSI7cmV0dXJuIHR9Y2xhc3MgQ29udGVudE1hdGNoe2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsaWRFbmQ9ZSx0aGlzLm5leHQ9W10sdGhpcy53cmFwQ2FjaGU9W119c3RhdGljIHBhcnNlKGUsdCl7bGV0IG49bmV3IFRva2VuU3RyZWFtKGUsdCk7aWYobnVsbD09bi5uZXh0KXJldHVybiBDb250ZW50TWF0Y2guZW1wdHk7bGV0IHI9cGFyc2VFeHByKG4pO24ubmV4dCYmbi5lcnIoIlVuZXhwZWN0ZWQgdHJhaWxpbmcgdGV4dCIpO2xldCBvPWZ1bmN0aW9uKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGV4cGxvcmUobnVsbEZyb20oZSwwKSk7ZnVuY3Rpb24gZXhwbG9yZShuKXtsZXQgcj1bXTtuLmZvckVhY2godD0+e2VbdF0uZm9yRWFjaCgoe3Rlcm06dCx0bzpufSk9PntpZighdClyZXR1cm47bGV0IG87Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspcltlXVswXT09dCYmKG89cltlXVsxXSk7bnVsbEZyb20oZSxuKS5mb3JFYWNoKGU9PntvfHxyLnB1c2goW3Qsbz1bXV0pLC0xPT1vLmluZGV4T2YoZSkmJm8ucHVzaChlKX0pfSl9KTtsZXQgbz10W24uam9pbigiLCIpXT1uZXcgQ29udGVudE1hdGNoKG4uaW5kZXhPZihlLmxlbmd0aC0xKT4tMSk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe2xldCBuPXJbZV1bMV0uc29ydChjbXApO28ubmV4dC5wdXNoKHt0eXBlOnJbZV1bMF0sbmV4dDp0W24uam9pbigiLCIpXXx8ZXhwbG9yZShuKX0pfXJldHVybiBvfX0oZnVuY3Rpb24oZSl7bGV0IHQ9W1tdXTtyZXR1cm4gY29ubmVjdChjb21waWxlKGUsMCksbm9kZSgpKSx0O2Z1bmN0aW9uIG5vZGUoKXtyZXR1cm4gdC5wdXNoKFtdKS0xfWZ1bmN0aW9uIGVkZ2UoZSxuLHIpe2xldCBvPXt0ZXJtOnIsdG86bn07cmV0dXJuIHRbZV0ucHVzaChvKSxvfWZ1bmN0aW9uIGNvbm5lY3QoZSx0KXtlLmZvckVhY2goZT0+ZS50bz10KX1mdW5jdGlvbiBjb21waWxlKGUsdCl7aWYoImNob2ljZSI9PWUudHlwZSlyZXR1cm4gZS5leHBycy5yZWR1Y2UoKGUsbik9PmUuY29uY2F0KGNvbXBpbGUobix0KSksW10pO2lmKCJzZXEiIT1lLnR5cGUpe2lmKCJzdGFyIj09ZS50eXBlKXtsZXQgbj1ub2RlKCk7cmV0dXJuIGVkZ2UodCxuKSxjb25uZWN0KGNvbXBpbGUoZS5leHByLG4pLG4pLFtlZGdlKG4pXX1pZigicGx1cyI9PWUudHlwZSl7bGV0IG49bm9kZSgpO3JldHVybiBjb25uZWN0KGNvbXBpbGUoZS5leHByLHQpLG4pLGNvbm5lY3QoY29tcGlsZShlLmV4cHIsbiksbiksW2VkZ2UobildfWlmKCJvcHQiPT1lLnR5cGUpcmV0dXJuW2VkZ2UodCldLmNvbmNhdChjb21waWxlKGUuZXhwcix0KSk7aWYoInJhbmdlIj09ZS50eXBlKXtsZXQgbj10O2ZvcihsZXQgdD0wO3Q8ZS5taW47dCsrKXtsZXQgdD1ub2RlKCk7Y29ubmVjdChjb21waWxlKGUuZXhwcixuKSx0KSxuPXR9aWYoLTE9PWUubWF4KWNvbm5lY3QoY29tcGlsZShlLmV4cHIsbiksbik7ZWxzZSBmb3IobGV0IHQ9ZS5taW47dDxlLm1heDt0Kyspe2xldCB0PW5vZGUoKTtlZGdlKG4sdCksY29ubmVjdChjb21waWxlKGUuZXhwcixuKSx0KSxuPXR9cmV0dXJuW2VkZ2UobildfWlmKCJuYW1lIj09ZS50eXBlKXJldHVybltlZGdlKHQsdm9pZCAwLGUudmFsdWUpXTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZXhwciB0eXBlIil9Zm9yKGxldCBuPTA7O24rKyl7bGV0IHI9Y29tcGlsZShlLmV4cHJzW25dLHQpO2lmKG49PWUuZXhwcnMubGVuZ3RoLTEpcmV0dXJuIHI7Y29ubmVjdChyLHQ9bm9kZSgpKX19fShyKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKGxldCBuPTAscj1bZV07bjxyLmxlbmd0aDtuKyspe2xldCBlPXJbbl0sbz0hZS52YWxpZEVuZCxpPVtdO2ZvcihsZXQgdD0wO3Q8ZS5uZXh0Lmxlbmd0aDt0Kyspe2xldHt0eXBlOm4sbmV4dDpzfT1lLm5leHRbdF07aS5wdXNoKG4ubmFtZSksIW98fG4uaXNUZXh0fHxuLmhhc1JlcXVpcmVkQXR0cnMoKXx8KG89ITEpLC0xPT1yLmluZGV4T2YocykmJnIucHVzaChzKX1vJiZ0LmVycigiT25seSBub24tZ2VuZXJhdGFibGUgbm9kZXMgKCIraS5qb2luKCIsICIpKyIpIGluIGEgcmVxdWlyZWQgcG9zaXRpb24gKHNlZSBodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL2d1aWRlLyNnZW5lcmF0YWJsZSkiKX19KG8sbiksb31tYXRjaFR5cGUoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm5leHQubGVuZ3RoO3QrKylpZih0aGlzLm5leHRbdF0udHlwZT09ZSlyZXR1cm4gdGhpcy5uZXh0W3RdLm5leHQ7cmV0dXJuIG51bGx9bWF0Y2hGcmFnbWVudChlLHQ9MCxuPWUuY2hpbGRDb3VudCl7bGV0IHI9dGhpcztmb3IobGV0IG89dDtyJiZvPG47bysrKXI9ci5tYXRjaFR5cGUoZS5jaGlsZChvKS50eXBlKTtyZXR1cm4gcn1nZXQgaW5saW5lQ29udGVudCgpe3JldHVybiAwIT10aGlzLm5leHQubGVuZ3RoJiZ0aGlzLm5leHRbMF0udHlwZS5pc0lubGluZX1nZXQgZGVmYXVsdFR5cGUoKXtmb3IobGV0IGU9MDtlPHRoaXMubmV4dC5sZW5ndGg7ZSsrKXtsZXR7dHlwZTp0fT10aGlzLm5leHRbZV07aWYoIXQuaXNUZXh0JiYhdC5oYXNSZXF1aXJlZEF0dHJzKCkpcmV0dXJuIHR9cmV0dXJuIG51bGx9Y29tcGF0aWJsZShlKXtmb3IobGV0IHQ9MDt0PHRoaXMubmV4dC5sZW5ndGg7dCsrKWZvcihsZXQgbj0wO248ZS5uZXh0Lmxlbmd0aDtuKyspaWYodGhpcy5uZXh0W3RdLnR5cGU9PWUubmV4dFtuXS50eXBlKXJldHVybiEwO3JldHVybiExfWZpbGxCZWZvcmUoZSx0PSExLG49MCl7bGV0IHI9W3RoaXNdO3JldHVybiBmdW5jdGlvbiBzZWFyY2gobyxpKXtsZXQgcz1vLm1hdGNoRnJhZ21lbnQoZSxuKTtpZihzJiYoIXR8fHMudmFsaWRFbmQpKXJldHVybiBGcmFnbWVudC5mcm9tKGkubWFwKGU9PmUuY3JlYXRlQW5kRmlsbCgpKSk7Zm9yKGxldCBlPTA7ZTxvLm5leHQubGVuZ3RoO2UrKyl7bGV0e3R5cGU6dCxuZXh0Om59PW8ubmV4dFtlXTtpZighdC5pc1RleHQmJiF0Lmhhc1JlcXVpcmVkQXR0cnMoKSYmLTE9PXIuaW5kZXhPZihuKSl7ci5wdXNoKG4pO2xldCBlPXNlYXJjaChuLGkuY29uY2F0KHQpKTtpZihlKXJldHVybiBlfX1yZXR1cm4gbnVsbH0odGhpcyxbXSl9ZmluZFdyYXBwaW5nKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy53cmFwQ2FjaGUubGVuZ3RoO3QrPTIpaWYodGhpcy53cmFwQ2FjaGVbdF09PWUpcmV0dXJuIHRoaXMud3JhcENhY2hlW3QrMV07bGV0IHQ9dGhpcy5jb21wdXRlV3JhcHBpbmcoZSk7cmV0dXJuIHRoaXMud3JhcENhY2hlLnB1c2goZSx0KSx0fWNvbXB1dGVXcmFwcGluZyhlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpLG49W3ttYXRjaDp0aGlzLHR5cGU6bnVsbCx2aWE6bnVsbH1dO2Zvcig7bi5sZW5ndGg7KXtsZXQgcj1uLnNoaWZ0KCksbz1yLm1hdGNoO2lmKG8ubWF0Y2hUeXBlKGUpKXtsZXQgZT1bXTtmb3IobGV0IHQ9cjt0LnR5cGU7dD10LnZpYSllLnB1c2godC50eXBlKTtyZXR1cm4gZS5yZXZlcnNlKCl9Zm9yKGxldCBlPTA7ZTxvLm5leHQubGVuZ3RoO2UrKyl7bGV0e3R5cGU6aSxuZXh0OnN9PW8ubmV4dFtlXTtpLmlzTGVhZnx8aS5oYXNSZXF1aXJlZEF0dHJzKCl8fGkubmFtZSBpbiB0fHxyLnR5cGUmJiFzLnZhbGlkRW5kfHwobi5wdXNoKHttYXRjaDppLmNvbnRlbnRNYXRjaCx0eXBlOmksdmlhOnJ9KSx0W2kubmFtZV09ITApfX1yZXR1cm4gbnVsbH1nZXQgZWRnZUNvdW50KCl7cmV0dXJuIHRoaXMubmV4dC5sZW5ndGh9ZWRnZShlKXtpZihlPj10aGlzLm5leHQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSdzIG5vICR7ZX10aCBlZGdlIGluIHRoaXMgY29udGVudCBtYXRjaGApO3JldHVybiB0aGlzLm5leHRbZV19dG9TdHJpbmcoKXtsZXQgZT1bXTtyZXR1cm4gZnVuY3Rpb24gc2Nhbih0KXtlLnB1c2godCk7Zm9yKGxldCBuPTA7bjx0Lm5leHQubGVuZ3RoO24rKyktMT09ZS5pbmRleE9mKHQubmV4dFtuXS5uZXh0KSYmc2Nhbih0Lm5leHRbbl0ubmV4dCl9KHRoaXMpLGUubWFwKCh0LG4pPT57bGV0IHI9bisodC52YWxpZEVuZD8iKiI6IiAiKSsiICI7Zm9yKGxldCBuPTA7bjx0Lm5leHQubGVuZ3RoO24rKylyKz0obj8iLCAiOiIiKSt0Lm5leHRbbl0udHlwZS5uYW1lKyItPiIrZS5pbmRleE9mKHQubmV4dFtuXS5uZXh0KTtyZXR1cm4gcn0pLmpvaW4oIlxuIil9fUNvbnRlbnRNYXRjaC5lbXB0eT1uZXcgQ29udGVudE1hdGNoKCEwKTtjbGFzcyBUb2tlblN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyaW5nPWUsdGhpcy5ub2RlVHlwZXM9dCx0aGlzLmlubGluZT1udWxsLHRoaXMucG9zPTAsdGhpcy50b2tlbnM9ZS5zcGxpdCgvXHMqKD89XGJ8XFd8JCkvKSwiIj09dGhpcy50b2tlbnNbdGhpcy50b2tlbnMubGVuZ3RoLTFdJiZ0aGlzLnRva2Vucy5wb3AoKSwiIj09dGhpcy50b2tlbnNbMF0mJnRoaXMudG9rZW5zLnNoaWZ0KCl9Z2V0IG5leHQoKXtyZXR1cm4gdGhpcy50b2tlbnNbdGhpcy5wb3NdfWVhdChlKXtyZXR1cm4gdGhpcy5uZXh0PT1lJiYodGhpcy5wb3MrK3x8ITApfWVycihlKXt0aHJvdyBuZXcgU3ludGF4RXJyb3IoZSsiIChpbiBjb250ZW50IGV4cHJlc3Npb24gJyIrdGhpcy5zdHJpbmcrIicpIil9fWZ1bmN0aW9uIHBhcnNlRXhwcihlKXtsZXQgdD1bXTtkb3t0LnB1c2gocGFyc2VFeHByU2VxKGUpKX13aGlsZShlLmVhdCgifCIpKTtyZXR1cm4gMT09dC5sZW5ndGg/dFswXTp7dHlwZToiY2hvaWNlIixleHByczp0fX1mdW5jdGlvbiBwYXJzZUV4cHJTZXEoZSl7bGV0IHQ9W107ZG97dC5wdXNoKHBhcnNlRXhwclN1YnNjcmlwdChlKSl9d2hpbGUoZS5uZXh0JiYiKSIhPWUubmV4dCYmInwiIT1lLm5leHQpO3JldHVybiAxPT10Lmxlbmd0aD90WzBdOnt0eXBlOiJzZXEiLGV4cHJzOnR9fWZ1bmN0aW9uIHBhcnNlRXhwclN1YnNjcmlwdChlKXtsZXQgdD1mdW5jdGlvbihlKXtpZihlLmVhdCgiKCIpKXtsZXQgdD1wYXJzZUV4cHIoZSk7cmV0dXJuIGUuZWF0KCIpIil8fGUuZXJyKCJNaXNzaW5nIGNsb3NpbmcgcGFyZW4iKSx0fWlmKCEvXFcvLnRlc3QoZS5uZXh0KSl7bGV0IHQ9ZnVuY3Rpb24oZSx0KXtsZXQgbj1lLm5vZGVUeXBlcyxyPW5bdF07aWYocilyZXR1cm5bcl07bGV0IG89W107Zm9yKGxldCBlIGluIG4pe2xldCByPW5bZV07ci5pc0luR3JvdXAodCkmJm8ucHVzaChyKX0wPT1vLmxlbmd0aCYmZS5lcnIoIk5vIG5vZGUgdHlwZSBvciBncm91cCAnIit0KyInIGZvdW5kIik7cmV0dXJuIG99KGUsZS5uZXh0KS5tYXAodD0+KG51bGw9PWUuaW5saW5lP2UuaW5saW5lPXQuaXNJbmxpbmU6ZS5pbmxpbmUhPXQuaXNJbmxpbmUmJmUuZXJyKCJNaXhpbmcgaW5saW5lIGFuZCBibG9jayBjb250ZW50Iikse3R5cGU6Im5hbWUiLHZhbHVlOnR9KSk7cmV0dXJuIGUucG9zKyssMT09dC5sZW5ndGg/dFswXTp7dHlwZToiY2hvaWNlIixleHByczp0fX1lLmVycigiVW5leHBlY3RlZCB0b2tlbiAnIitlLm5leHQrIiciKX0oZSk7Zm9yKDs7KWlmKGUuZWF0KCIrIikpdD17dHlwZToicGx1cyIsZXhwcjp0fTtlbHNlIGlmKGUuZWF0KCIqIikpdD17dHlwZToic3RhciIsZXhwcjp0fTtlbHNlIGlmKGUuZWF0KCI/IikpdD17dHlwZToib3B0IixleHByOnR9O2Vsc2V7aWYoIWUuZWF0KCJ7IikpYnJlYWs7dD1wYXJzZUV4cHJSYW5nZShlLHQpfXJldHVybiB0fWZ1bmN0aW9uIHBhcnNlTnVtKGUpey9cRC8udGVzdChlLm5leHQpJiZlLmVycigiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgJyIrZS5uZXh0KyInIik7bGV0IHQ9TnVtYmVyKGUubmV4dCk7cmV0dXJuIGUucG9zKyssdH1mdW5jdGlvbiBwYXJzZUV4cHJSYW5nZShlLHQpe2xldCBuPXBhcnNlTnVtKGUpLHI9bjtyZXR1cm4gZS5lYXQoIiwiKSYmKHI9In0iIT1lLm5leHQ/cGFyc2VOdW0oZSk6LTEpLGUuZWF0KCJ9Iil8fGUuZXJyKCJVbmNsb3NlZCBicmFjZWQgcmFuZ2UiKSx7dHlwZToicmFuZ2UiLG1pbjpuLG1heDpyLGV4cHI6dH19ZnVuY3Rpb24gY21wKGUsdCl7cmV0dXJuIHQtZX1mdW5jdGlvbiBudWxsRnJvbShlLHQpe2xldCBuPVtdO3JldHVybiBmdW5jdGlvbiBzY2FuKHQpe2xldCByPWVbdF07aWYoMT09ci5sZW5ndGgmJiFyWzBdLnRlcm0pcmV0dXJuIHNjYW4oclswXS50byk7bi5wdXNoKHQpO2ZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXtsZXR7dGVybTp0LHRvOm99PXJbZV07dHx8LTEhPW4uaW5kZXhPZihvKXx8c2NhbihvKX19KHQpLG4uc29ydChjbXApfWZ1bmN0aW9uIGRlZmF1bHRBdHRycyhlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lW25dO2lmKCFyLmhhc0RlZmF1bHQpcmV0dXJuIG51bGw7dFtuXT1yLmRlZmF1bHR9cmV0dXJuIHR9ZnVuY3Rpb24gY29tcHV0ZUF0dHJzKGUsdCl7bGV0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHIgaW4gZSl7bGV0IG89dCYmdFtyXTtpZih2b2lkIDA9PT1vKXtsZXQgdD1lW3JdO2lmKCF0Lmhhc0RlZmF1bHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIHZhbHVlIHN1cHBsaWVkIGZvciBhdHRyaWJ1dGUgIityKTtvPXQuZGVmYXVsdH1uW3JdPW99cmV0dXJuIG59ZnVuY3Rpb24gY2hlY2tBdHRycyhlLHQsbixyKXtmb3IobGV0IHIgaW4gdClpZighKHIgaW4gZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFVuc3VwcG9ydGVkIGF0dHJpYnV0ZSAke3J9IGZvciAke259IG9mIHR5cGUgJHtyfWApO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lW25dO3IudmFsaWRhdGUmJnIudmFsaWRhdGUodFtuXSl9fWZ1bmN0aW9uIGluaXRBdHRycyhlLHQpe2xldCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYodClmb3IobGV0IHIgaW4gdCluW3JdPW5ldyBBdHRyaWJ1dGUoZSxyLHRbcl0pO3JldHVybiBufWxldCBwZT1jbGFzcyBOb2RlVHlwZXtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5uYW1lPWUsdGhpcy5zY2hlbWE9dCx0aGlzLnNwZWM9bix0aGlzLm1hcmtTZXQ9bnVsbCx0aGlzLmdyb3Vwcz1uLmdyb3VwP24uZ3JvdXAuc3BsaXQoIiAiKTpbXSx0aGlzLmF0dHJzPWluaXRBdHRycyhlLG4uYXR0cnMpLHRoaXMuZGVmYXVsdEF0dHJzPWRlZmF1bHRBdHRycyh0aGlzLmF0dHJzKSx0aGlzLmNvbnRlbnRNYXRjaD1udWxsLHRoaXMuaW5saW5lQ29udGVudD1udWxsLHRoaXMuaXNCbG9jaz0hKG4uaW5saW5lfHwidGV4dCI9PWUpLHRoaXMuaXNUZXh0PSJ0ZXh0Ij09ZX1nZXQgaXNJbmxpbmUoKXtyZXR1cm4hdGhpcy5pc0Jsb2NrfWdldCBpc1RleHRibG9jaygpe3JldHVybiB0aGlzLmlzQmxvY2smJnRoaXMuaW5saW5lQ29udGVudH1nZXQgaXNMZWFmKCl7cmV0dXJuIHRoaXMuY29udGVudE1hdGNoPT1Db250ZW50TWF0Y2guZW1wdHl9Z2V0IGlzQXRvbSgpe3JldHVybiB0aGlzLmlzTGVhZnx8ISF0aGlzLnNwZWMuYXRvbX1pc0luR3JvdXAoZSl7cmV0dXJuIHRoaXMuZ3JvdXBzLmluZGV4T2YoZSk+LTF9Z2V0IHdoaXRlc3BhY2UoKXtyZXR1cm4gdGhpcy5zcGVjLndoaXRlc3BhY2V8fCh0aGlzLnNwZWMuY29kZT8icHJlIjoibm9ybWFsIil9aGFzUmVxdWlyZWRBdHRycygpe2ZvcihsZXQgZSBpbiB0aGlzLmF0dHJzKWlmKHRoaXMuYXR0cnNbZV0uaXNSZXF1aXJlZClyZXR1cm4hMDtyZXR1cm4hMX1jb21wYXRpYmxlQ29udGVudChlKXtyZXR1cm4gdGhpcz09ZXx8dGhpcy5jb250ZW50TWF0Y2guY29tcGF0aWJsZShlLmNvbnRlbnRNYXRjaCl9Y29tcHV0ZUF0dHJzKGUpe3JldHVybiFlJiZ0aGlzLmRlZmF1bHRBdHRycz90aGlzLmRlZmF1bHRBdHRyczpjb21wdXRlQXR0cnModGhpcy5hdHRycyxlKX1jcmVhdGUoZT1udWxsLHQsbil7aWYodGhpcy5pc1RleHQpdGhyb3cgbmV3IEVycm9yKCJOb2RlVHlwZS5jcmVhdGUgY2FuJ3QgY29uc3RydWN0IHRleHQgbm9kZXMiKTtyZXR1cm4gbmV3IE5vZGUodGhpcyx0aGlzLmNvbXB1dGVBdHRycyhlKSxGcmFnbWVudC5mcm9tKHQpLGxlLnNldEZyb20obikpfWNyZWF0ZUNoZWNrZWQoZT1udWxsLHQsbil7cmV0dXJuIHQ9RnJhZ21lbnQuZnJvbSh0KSx0aGlzLmNoZWNrQ29udGVudCh0KSxuZXcgTm9kZSh0aGlzLHRoaXMuY29tcHV0ZUF0dHJzKGUpLHQsbGUuc2V0RnJvbShuKSl9Y3JlYXRlQW5kRmlsbChlPW51bGwsdCxuKXtpZihlPXRoaXMuY29tcHV0ZUF0dHJzKGUpLCh0PUZyYWdtZW50LmZyb20odCkpLnNpemUpe2xldCBlPXRoaXMuY29udGVudE1hdGNoLmZpbGxCZWZvcmUodCk7aWYoIWUpcmV0dXJuIG51bGw7dD1lLmFwcGVuZCh0KX1sZXQgcj10aGlzLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KHQpLG89ciYmci5maWxsQmVmb3JlKEZyYWdtZW50LmVtcHR5LCEwKTtyZXR1cm4gbz9uZXcgTm9kZSh0aGlzLGUsdC5hcHBlbmQobyksbGUuc2V0RnJvbShuKSk6bnVsbH12YWxpZENvbnRlbnQoZSl7bGV0IHQ9dGhpcy5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudChlKTtpZighdHx8IXQudmFsaWRFbmQpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDxlLmNoaWxkQ291bnQ7dCsrKWlmKCF0aGlzLmFsbG93c01hcmtzKGUuY2hpbGQodCkubWFya3MpKXJldHVybiExO3JldHVybiEwfWNoZWNrQ29udGVudChlKXtpZighdGhpcy52YWxpZENvbnRlbnQoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgY29udGVudCBmb3Igbm9kZSAke3RoaXMubmFtZX06ICR7ZS50b1N0cmluZygpLnNsaWNlKDAsNTApfWApfWNoZWNrQXR0cnMoZSl7Y2hlY2tBdHRycyh0aGlzLmF0dHJzLGUsIm5vZGUiLHRoaXMubmFtZSl9YWxsb3dzTWFya1R5cGUoZSl7cmV0dXJuIG51bGw9PXRoaXMubWFya1NldHx8dGhpcy5tYXJrU2V0LmluZGV4T2YoZSk+LTF9YWxsb3dzTWFya3MoZSl7aWYobnVsbD09dGhpcy5tYXJrU2V0KXJldHVybiEwO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCF0aGlzLmFsbG93c01hcmtUeXBlKGVbdF0udHlwZSkpcmV0dXJuITE7cmV0dXJuITB9YWxsb3dlZE1hcmtzKGUpe2lmKG51bGw9PXRoaXMubWFya1NldClyZXR1cm4gZTtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLmFsbG93c01hcmtUeXBlKGVbbl0udHlwZSk/dCYmdC5wdXNoKGVbbl0pOnR8fCh0PWUuc2xpY2UoMCxuKSk7cmV0dXJuIHQ/dC5sZW5ndGg/dDpsZS5ub25lOmV9c3RhdGljIGNvbXBpbGUoZSx0KXtsZXQgbj1PYmplY3QuY3JlYXRlKG51bGwpO2UuZm9yRWFjaCgoZSxyKT0+bltlXT1uZXcgTm9kZVR5cGUoZSx0LHIpKTtsZXQgcj10LnNwZWMudG9wTm9kZXx8ImRvYyI7aWYoIW5bcl0pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGl0cyB0b3Agbm9kZSB0eXBlICgnIityKyInKSIpO2lmKCFuLnRleHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkV2ZXJ5IHNjaGVtYSBuZWVkcyBhICd0ZXh0JyB0eXBlIik7Zm9yKGxldCBlIGluIG4udGV4dC5hdHRycyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlIHRleHQgbm9kZSB0eXBlIHNob3VsZCBub3QgaGF2ZSBhdHRyaWJ1dGVzIik7cmV0dXJuIG59fTtjbGFzcyBBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuaGFzRGVmYXVsdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobiwiZGVmYXVsdCIpLHRoaXMuZGVmYXVsdD1uLmRlZmF1bHQsdGhpcy52YWxpZGF0ZT0ic3RyaW5nIj09dHlwZW9mIG4udmFsaWRhdGU/ZnVuY3Rpb24oZSx0LG4pe2xldCByPW4uc3BsaXQoInwiKTtyZXR1cm4gbj0+e2xldCBvPW51bGw9PT1uPyJudWxsIjp0eXBlb2YgbjtpZihyLmluZGV4T2Yobyk8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSAke3J9IGZvciBhdHRyaWJ1dGUgJHt0fSBvbiB0eXBlICR7ZX0sIGdvdCAke299YCl9fShlLHQsbi52YWxpZGF0ZSk6bi52YWxpZGF0ZX1nZXQgaXNSZXF1aXJlZCgpe3JldHVybiF0aGlzLmhhc0RlZmF1bHR9fWNsYXNzIE1hcmtUeXBle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMubmFtZT1lLHRoaXMucmFuaz10LHRoaXMuc2NoZW1hPW4sdGhpcy5zcGVjPXIsdGhpcy5hdHRycz1pbml0QXR0cnMoZSxyLmF0dHJzKSx0aGlzLmV4Y2x1ZGVkPW51bGw7bGV0IG89ZGVmYXVsdEF0dHJzKHRoaXMuYXR0cnMpO3RoaXMuaW5zdGFuY2U9bz9uZXcgbGUodGhpcyxvKTpudWxsfWNyZWF0ZShlPW51bGwpe3JldHVybiFlJiZ0aGlzLmluc3RhbmNlP3RoaXMuaW5zdGFuY2U6bmV3IGxlKHRoaXMsY29tcHV0ZUF0dHJzKHRoaXMuYXR0cnMsZSkpfXN0YXRpYyBjb21waWxlKGUsdCl7bGV0IG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPTA7cmV0dXJuIGUuZm9yRWFjaCgoZSxvKT0+bltlXT1uZXcgTWFya1R5cGUoZSxyKyssdCxvKSksbn1yZW1vdmVGcm9tU2V0KGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0udHlwZT09dGhpcyYmKGU9ZS5zbGljZSgwLHQpLmNvbmNhdChlLnNsaWNlKHQrMSkpLHQtLSk7cmV0dXJuIGV9aXNJblNldChlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZihlW3RdLnR5cGU9PXRoaXMpcmV0dXJuIGVbdF19Y2hlY2tBdHRycyhlKXtjaGVja0F0dHJzKHRoaXMuYXR0cnMsZSwibWFyayIsdGhpcy5uYW1lKX1leGNsdWRlcyhlKXtyZXR1cm4gdGhpcy5leGNsdWRlZC5pbmRleE9mKGUpPi0xfX1jbGFzcyBTY2hlbWF7Y29uc3RydWN0b3IoZSl7dGhpcy5saW5lYnJlYWtSZXBsYWNlbWVudD1udWxsLHRoaXMuY2FjaGVkPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9dGhpcy5zcGVjPXt9O2ZvcihsZXQgbiBpbiBlKXRbbl09ZVtuXTt0Lm5vZGVzPU9yZGVyZWRNYXAuZnJvbShlLm5vZGVzKSx0Lm1hcmtzPU9yZGVyZWRNYXAuZnJvbShlLm1hcmtzfHx7fSksdGhpcy5ub2Rlcz1wZS5jb21waWxlKHRoaXMuc3BlYy5ub2Rlcyx0aGlzKSx0aGlzLm1hcmtzPU1hcmtUeXBlLmNvbXBpbGUodGhpcy5zcGVjLm1hcmtzLHRoaXMpO2xldCBuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlIGluIHRoaXMubm9kZXMpe2lmKGUgaW4gdGhpcy5tYXJrcyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihlKyIgY2FuIG5vdCBiZSBib3RoIGEgbm9kZSBhbmQgYSBtYXJrIik7bGV0IHQ9dGhpcy5ub2Rlc1tlXSxyPXQuc3BlYy5jb250ZW50fHwiIixvPXQuc3BlYy5tYXJrcztpZih0LmNvbnRlbnRNYXRjaD1uW3JdfHwobltyXT1Db250ZW50TWF0Y2gucGFyc2Uocix0aGlzLm5vZGVzKSksdC5pbmxpbmVDb250ZW50PXQuY29udGVudE1hdGNoLmlubGluZUNvbnRlbnQsdC5zcGVjLmxpbmVicmVha1JlcGxhY2VtZW50KXtpZih0aGlzLmxpbmVicmVha1JlcGxhY2VtZW50KXRocm93IG5ldyBSYW5nZUVycm9yKCJNdWx0aXBsZSBsaW5lYnJlYWsgbm9kZXMgZGVmaW5lZCIpO2lmKCF0LmlzSW5saW5lfHwhdC5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkxpbmVicmVhayByZXBsYWNlbWVudCBub2RlcyBtdXN0IGJlIGlubGluZSBsZWFmIG5vZGVzIik7dGhpcy5saW5lYnJlYWtSZXBsYWNlbWVudD10fXQubWFya1NldD0iXyI9PW8/bnVsbDpvP2dhdGhlck1hcmtzKHRoaXMsby5zcGxpdCgiICIpKToiIiE9byYmdC5pbmxpbmVDb250ZW50P251bGw6W119Zm9yKGxldCBlIGluIHRoaXMubWFya3Mpe2xldCB0PXRoaXMubWFya3NbZV0sbj10LnNwZWMuZXhjbHVkZXM7dC5leGNsdWRlZD1udWxsPT1uP1t0XToiIj09bj9bXTpnYXRoZXJNYXJrcyh0aGlzLG4uc3BsaXQoIiAiKSl9dGhpcy5ub2RlRnJvbUpTT049ZT0+Tm9kZS5mcm9tSlNPTih0aGlzLGUpLHRoaXMubWFya0Zyb21KU09OPWU9PmxlLmZyb21KU09OKHRoaXMsZSksdGhpcy50b3BOb2RlVHlwZT10aGlzLm5vZGVzW3RoaXMuc3BlYy50b3BOb2RlfHwiZG9jIl0sdGhpcy5jYWNoZWQud3JhcHBpbmdzPU9iamVjdC5jcmVhdGUobnVsbCl9bm9kZShlLHQ9bnVsbCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgZSllPXRoaXMubm9kZVR5cGUoZSk7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbm9kZSB0eXBlOiAiK2UpO2lmKGUuc2NoZW1hIT10aGlzKXRocm93IG5ldyBSYW5nZUVycm9yKCJOb2RlIHR5cGUgZnJvbSBkaWZmZXJlbnQgc2NoZW1hIHVzZWQgKCIrZS5uYW1lKyIpIil9cmV0dXJuIGUuY3JlYXRlQ2hlY2tlZCh0LG4scil9dGV4dChlLHQpe2xldCBuPXRoaXMubm9kZXMudGV4dDtyZXR1cm4gbmV3IFRleHROb2RlKG4sbi5kZWZhdWx0QXR0cnMsZSxsZS5zZXRGcm9tKHQpKX1tYXJrKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYoZT10aGlzLm1hcmtzW2VdKSxlLmNyZWF0ZSh0KX1ub2RlVHlwZShlKXtsZXQgdD10aGlzLm5vZGVzW2VdO2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJVbmtub3duIG5vZGUgdHlwZTogIitlKTtyZXR1cm4gdH19ZnVuY3Rpb24gZ2F0aGVyTWFya3MoZSx0KXtsZXQgbj1bXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bGV0IG89dFtyXSxpPWUubWFya3Nbb10scz1pO2lmKGkpbi5wdXNoKGkpO2Vsc2UgZm9yKGxldCB0IGluIGUubWFya3Mpe2xldCByPWUubWFya3NbdF07KCJfIj09b3x8ci5zcGVjLmdyb3VwJiZyLnNwZWMuZ3JvdXAuc3BsaXQoIiAiKS5pbmRleE9mKG8pPi0xKSYmbi5wdXNoKHM9cil9aWYoIXMpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJVbmtub3duIG1hcmsgdHlwZTogJyIrdFtyXSsiJyIpfXJldHVybiBufWNsYXNzIERPTVBhcnNlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5ydWxlcz10LHRoaXMudGFncz1bXSx0aGlzLnN0eWxlcz1bXTtsZXQgbj10aGlzLm1hdGNoZWRTdHlsZXM9W107dC5mb3JFYWNoKGU9PntpZihmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZS50YWd9KGUpKXRoaXMudGFncy5wdXNoKGUpO2Vsc2UgaWYoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuc3R5bGV9KGUpKXtsZXQgdD0vW149XSovLmV4ZWMoZS5zdHlsZSlbMF07bi5pbmRleE9mKHQpPDAmJm4ucHVzaCh0KSx0aGlzLnN0eWxlcy5wdXNoKGUpfX0pLHRoaXMubm9ybWFsaXplTGlzdHM9IXRoaXMudGFncy5zb21lKHQ9PntpZighL14odWx8b2wpXGIvLnRlc3QodC50YWcpfHwhdC5ub2RlKXJldHVybiExO2xldCBuPWUubm9kZXNbdC5ub2RlXTtyZXR1cm4gbi5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKG4pfSl9cGFyc2UoZSx0PXt9KXtsZXQgbj1uZXcgUGFyc2VDb250ZXh0KHRoaXMsdCwhMSk7cmV0dXJuIG4uYWRkQWxsKGUsbGUubm9uZSx0LmZyb20sdC50byksbi5maW5pc2goKX1wYXJzZVNsaWNlKGUsdD17fSl7bGV0IG49bmV3IFBhcnNlQ29udGV4dCh0aGlzLHQsITApO3JldHVybiBuLmFkZEFsbChlLGxlLm5vbmUsdC5mcm9tLHQudG8pLFNsaWNlLm1heE9wZW4obi5maW5pc2goKSl9bWF0Y2hUYWcoZSx0LG4pe2ZvcihsZXQgcj1uP3RoaXMudGFncy5pbmRleE9mKG4pKzE6MDtyPHRoaXMudGFncy5sZW5ndGg7cisrKXtsZXQgbj10aGlzLnRhZ3Nbcl07aWYobWF0Y2hlcyhlLG4udGFnKSYmKHZvaWQgMD09PW4ubmFtZXNwYWNlfHxlLm5hbWVzcGFjZVVSST09bi5uYW1lc3BhY2UpJiYoIW4uY29udGV4dHx8dC5tYXRjaGVzQ29udGV4dChuLmNvbnRleHQpKSl7aWYobi5nZXRBdHRycyl7bGV0IHQ9bi5nZXRBdHRycyhlKTtpZighMT09PXQpY29udGludWU7bi5hdHRycz10fHx2b2lkIDB9cmV0dXJuIG59fX1tYXRjaFN0eWxlKGUsdCxuLHIpe2ZvcihsZXQgbz1yP3RoaXMuc3R5bGVzLmluZGV4T2YocikrMTowO288dGhpcy5zdHlsZXMubGVuZ3RoO28rKyl7bGV0IHI9dGhpcy5zdHlsZXNbb10saT1yLnN0eWxlO2lmKCEoMCE9aS5pbmRleE9mKGUpfHxyLmNvbnRleHQmJiFuLm1hdGNoZXNDb250ZXh0KHIuY29udGV4dCl8fGkubGVuZ3RoPmUubGVuZ3RoJiYoNjEhPWkuY2hhckNvZGVBdChlLmxlbmd0aCl8fGkuc2xpY2UoZS5sZW5ndGgrMSkhPXQpKSl7aWYoci5nZXRBdHRycyl7bGV0IGU9ci5nZXRBdHRycyh0KTtpZighMT09PWUpY29udGludWU7ci5hdHRycz1lfHx2b2lkIDB9cmV0dXJuIHJ9fX1zdGF0aWMgc2NoZW1hUnVsZXMoZSl7bGV0IHQ9W107ZnVuY3Rpb24gaW5zZXJ0KGUpe2xldCBuPW51bGw9PWUucHJpb3JpdHk/NTA6ZS5wcmlvcml0eSxyPTA7Zm9yKDtyPHQubGVuZ3RoO3IrKyl7bGV0IGU9dFtyXTtpZigobnVsbD09ZS5wcmlvcml0eT81MDplLnByaW9yaXR5KTxuKWJyZWFrfXQuc3BsaWNlKHIsMCxlKX1mb3IobGV0IHQgaW4gZS5tYXJrcyl7bGV0IG49ZS5tYXJrc1t0XS5zcGVjLnBhcnNlRE9NO24mJm4uZm9yRWFjaChlPT57aW5zZXJ0KGU9Y29weShlKSksZS5tYXJrfHxlLmlnbm9yZXx8ZS5jbGVhck1hcmt8fChlLm1hcms9dCl9KX1mb3IobGV0IHQgaW4gZS5ub2Rlcyl7bGV0IG49ZS5ub2Rlc1t0XS5zcGVjLnBhcnNlRE9NO24mJm4uZm9yRWFjaChlPT57aW5zZXJ0KGU9Y29weShlKSksZS5ub2RlfHxlLmlnbm9yZXx8ZS5tYXJrfHwoZS5ub2RlPXQpfSl9cmV0dXJuIHR9c3RhdGljIGZyb21TY2hlbWEoZSl7cmV0dXJuIGUuY2FjaGVkLmRvbVBhcnNlcnx8KGUuY2FjaGVkLmRvbVBhcnNlcj1uZXcgRE9NUGFyc2VyKGUsRE9NUGFyc2VyLnNjaGVtYVJ1bGVzKGUpKSl9fWNvbnN0IGhlPXthZGRyZXNzOiEwLGFydGljbGU6ITAsYXNpZGU6ITAsYmxvY2txdW90ZTohMCxjYW52YXM6ITAsZGQ6ITAsZGl2OiEwLGRsOiEwLGZpZWxkc2V0OiEwLGZpZ2NhcHRpb246ITAsZmlndXJlOiEwLGZvb3RlcjohMCxmb3JtOiEwLGgxOiEwLGgyOiEwLGgzOiEwLGg0OiEwLGg1OiEwLGg2OiEwLGhlYWRlcjohMCxoZ3JvdXA6ITAsaHI6ITAsbGk6ITAsbm9zY3JpcHQ6ITAsb2w6ITAsb3V0cHV0OiEwLHA6ITAscHJlOiEwLHNlY3Rpb246ITAsdGFibGU6ITAsdGZvb3Q6ITAsdWw6ITB9LHVlPXtoZWFkOiEwLG5vc2NyaXB0OiEwLG9iamVjdDohMCxzY3JpcHQ6ITAsc3R5bGU6ITAsdGl0bGU6ITB9LG1lPXtvbDohMCx1bDohMH07ZnVuY3Rpb24gd3NPcHRpb25zRm9yKGUsdCxuKXtyZXR1cm4gbnVsbCE9dD8odD8xOjApfCgiZnVsbCI9PT10PzI6MCk6ZSYmInByZSI9PWUud2hpdGVzcGFjZT8zOi01Jm59Y2xhc3MgTm9kZUNvbnRleHR7Y29uc3RydWN0b3IoZSx0LG4scixvLGkpe3RoaXMudHlwZT1lLHRoaXMuYXR0cnM9dCx0aGlzLm1hcmtzPW4sdGhpcy5zb2xpZD1yLHRoaXMub3B0aW9ucz1pLHRoaXMuY29udGVudD1bXSx0aGlzLmFjdGl2ZU1hcmtzPWxlLm5vbmUsdGhpcy5tYXRjaD1vfHwoNCZpP251bGw6ZS5jb250ZW50TWF0Y2gpfWZpbmRXcmFwcGluZyhlKXtpZighdGhpcy5tYXRjaCl7aWYoIXRoaXMudHlwZSlyZXR1cm5bXTtsZXQgdD10aGlzLnR5cGUuY29udGVudE1hdGNoLmZpbGxCZWZvcmUoRnJhZ21lbnQuZnJvbShlKSk7aWYoIXQpe2xldCB0LG49dGhpcy50eXBlLmNvbnRlbnRNYXRjaDtyZXR1cm4odD1uLmZpbmRXcmFwcGluZyhlLnR5cGUpKT8odGhpcy5tYXRjaD1uLHQpOm51bGx9dGhpcy5tYXRjaD10aGlzLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQodCl9cmV0dXJuIHRoaXMubWF0Y2guZmluZFdyYXBwaW5nKGUudHlwZSl9ZmluaXNoKGUpe2lmKCEoMSZ0aGlzLm9wdGlvbnMpKXtsZXQgZSx0PXRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdO2lmKHQmJnQuaXNUZXh0JiYoZT0vWyBcdFxyXG5cdTAwMGNdKyQvLmV4ZWModC50ZXh0KSkpe2xldCBuPXQ7dC50ZXh0Lmxlbmd0aD09ZVswXS5sZW5ndGg/dGhpcy5jb250ZW50LnBvcCgpOnRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdPW4ud2l0aFRleHQobi50ZXh0LnNsaWNlKDAsbi50ZXh0Lmxlbmd0aC1lWzBdLmxlbmd0aCkpfX1sZXQgdD1GcmFnbWVudC5mcm9tKHRoaXMuY29udGVudCk7cmV0dXJuIWUmJnRoaXMubWF0Y2gmJih0PXQuYXBwZW5kKHRoaXMubWF0Y2guZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCkpKSx0aGlzLnR5cGU/dGhpcy50eXBlLmNyZWF0ZSh0aGlzLmF0dHJzLHQsdGhpcy5tYXJrcyk6dH1pbmxpbmVDb250ZXh0KGUpe3JldHVybiB0aGlzLnR5cGU/dGhpcy50eXBlLmlubGluZUNvbnRlbnQ6dGhpcy5jb250ZW50Lmxlbmd0aD90aGlzLmNvbnRlbnRbMF0uaXNJbmxpbmU6ZS5wYXJlbnROb2RlJiYhaGUuaGFzT3duUHJvcGVydHkoZS5wYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfX1jbGFzcyBQYXJzZUNvbnRleHR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMucGFyc2VyPWUsdGhpcy5vcHRpb25zPXQsdGhpcy5pc09wZW49bix0aGlzLm9wZW49MCx0aGlzLmxvY2FsUHJlc2VydmVXUz0hMTtsZXQgcixvPXQudG9wTm9kZSxpPXdzT3B0aW9uc0ZvcihudWxsLHQucHJlc2VydmVXaGl0ZXNwYWNlLDApfChuPzQ6MCk7cj1vP25ldyBOb2RlQ29udGV4dChvLnR5cGUsby5hdHRycyxsZS5ub25lLCEwLHQudG9wTWF0Y2h8fG8udHlwZS5jb250ZW50TWF0Y2gsaSk6bmV3IE5vZGVDb250ZXh0KG4/bnVsbDplLnNjaGVtYS50b3BOb2RlVHlwZSxudWxsLGxlLm5vbmUsITAsbnVsbCxpKSx0aGlzLm5vZGVzPVtyXSx0aGlzLmZpbmQ9dC5maW5kUG9zaXRpb25zLHRoaXMubmVlZHNCbG9jaz0hMX1nZXQgdG9wKCl7cmV0dXJuIHRoaXMubm9kZXNbdGhpcy5vcGVuXX1hZGRET00oZSx0KXszPT1lLm5vZGVUeXBlP3RoaXMuYWRkVGV4dE5vZGUoZSx0KToxPT1lLm5vZGVUeXBlJiZ0aGlzLmFkZEVsZW1lbnQoZSx0KX1hZGRUZXh0Tm9kZShlLHQpe2xldCBuPWUubm9kZVZhbHVlLHI9dGhpcy50b3Asbz0yJnIub3B0aW9ucz8iZnVsbCI6dGhpcy5sb2NhbFByZXNlcnZlV1N8fCgxJnIub3B0aW9ucyk+MCx7c2NoZW1hOml9PXRoaXMucGFyc2VyO2lmKCJmdWxsIj09PW98fHIuaW5saW5lQ29udGV4dChlKXx8L1teIFx0XHJcblx1MDAwY10vLnRlc3Qobikpe2lmKG8paWYoImZ1bGwiPT09byluPW4ucmVwbGFjZSgvXHJcbj8vZywiXG4iKTtlbHNlIGlmKGkubGluZWJyZWFrUmVwbGFjZW1lbnQmJi9bXHJcbl0vLnRlc3QobikmJnRoaXMudG9wLmZpbmRXcmFwcGluZyhpLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKSl7bGV0IGU9bi5zcGxpdCgvXHI/XG58XHIvKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyluJiZ0aGlzLmluc2VydE5vZGUoaS5saW5lYnJlYWtSZXBsYWNlbWVudC5jcmVhdGUoKSx0LCEwKSxlW25dJiZ0aGlzLmluc2VydE5vZGUoaS50ZXh0KGVbbl0pLHQsIS9cUy8udGVzdChlW25dKSk7bj0iIn1lbHNlIG49bi5yZXBsYWNlKC9ccj9cbnxcci9nLCIgIik7ZWxzZSBpZihuPW4ucmVwbGFjZSgvWyBcdFxyXG5cdTAwMGNdKy9nLCIgIiksL15bIFx0XHJcblx1MDAwY10vLnRlc3QobikmJnRoaXMub3Blbj09dGhpcy5ub2Rlcy5sZW5ndGgtMSl7bGV0IHQ9ci5jb250ZW50W3IuY29udGVudC5sZW5ndGgtMV0sbz1lLnByZXZpb3VzU2libGluZzsoIXR8fG8mJiJCUiI9PW8ubm9kZU5hbWV8fHQuaXNUZXh0JiYvWyBcdFxyXG5cdTAwMGNdJC8udGVzdCh0LnRleHQpKSYmKG49bi5zbGljZSgxKSl9biYmdGhpcy5pbnNlcnROb2RlKGkudGV4dChuKSx0LCEvXFMvLnRlc3QobikpLHRoaXMuZmluZEluVGV4dChlKX1lbHNlIHRoaXMuZmluZEluc2lkZShlKX1hZGRFbGVtZW50KGUsdCxuKXtsZXQgcj10aGlzLmxvY2FsUHJlc2VydmVXUyxvPXRoaXMudG9wOygiUFJFIj09ZS50YWdOYW1lfHwvcHJlLy50ZXN0KGUuc3R5bGUmJmUuc3R5bGUud2hpdGVTcGFjZSkpJiYodGhpcy5sb2NhbFByZXNlcnZlV1M9ITApO2xldCBpLHM9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO21lLmhhc093blByb3BlcnR5KHMpJiZ0aGlzLnBhcnNlci5ub3JtYWxpemVMaXN0cyYmZnVuY3Rpb24oZSl7Zm9yKGxldCB0PWUuZmlyc3RDaGlsZCxuPW51bGw7dDt0PXQubmV4dFNpYmxpbmcpe2xldCBlPTE9PXQubm9kZVR5cGU/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGw7ZSYmbWUuaGFzT3duUHJvcGVydHkoZSkmJm4/KG4uYXBwZW5kQ2hpbGQodCksdD1uKToibGkiPT1lP249dDplJiYobj1udWxsKX19KGUpO2xldCBsPXRoaXMub3B0aW9ucy5ydWxlRnJvbU5vZGUmJnRoaXMub3B0aW9ucy5ydWxlRnJvbU5vZGUoZSl8fChpPXRoaXMucGFyc2VyLm1hdGNoVGFnKGUsdGhpcyxuKSk7ZTppZihsP2wuaWdub3JlOnVlLmhhc093blByb3BlcnR5KHMpKXRoaXMuZmluZEluc2lkZShlKSx0aGlzLmlnbm9yZUZhbGxiYWNrKGUsdCk7ZWxzZSBpZighbHx8bC5za2lwfHxsLmNsb3NlUGFyZW50KXtsJiZsLmNsb3NlUGFyZW50P3RoaXMub3Blbj1NYXRoLm1heCgwLHRoaXMub3Blbi0xKTpsJiZsLnNraXAubm9kZVR5cGUmJihlPWwuc2tpcCk7bGV0IG4scj10aGlzLm5lZWRzQmxvY2s7aWYoaGUuaGFzT3duUHJvcGVydHkocykpby5jb250ZW50Lmxlbmd0aCYmby5jb250ZW50WzBdLmlzSW5saW5lJiZ0aGlzLm9wZW4mJih0aGlzLm9wZW4tLSxvPXRoaXMudG9wKSxuPSEwLG8udHlwZXx8KHRoaXMubmVlZHNCbG9jaz0hMCk7ZWxzZSBpZighZS5maXJzdENoaWxkKXt0aGlzLmxlYWZGYWxsYmFjayhlLHQpO2JyZWFrIGV9bGV0IGk9bCYmbC5za2lwP3Q6dGhpcy5yZWFkU3R5bGVzKGUsdCk7aSYmdGhpcy5hZGRBbGwoZSxpKSxuJiZ0aGlzLnN5bmMobyksdGhpcy5uZWVkc0Jsb2NrPXJ9ZWxzZXtsZXQgbj10aGlzLnJlYWRTdHlsZXMoZSx0KTtuJiZ0aGlzLmFkZEVsZW1lbnRCeVJ1bGUoZSxsLG4sITE9PT1sLmNvbnN1bWluZz9pOnZvaWQgMCl9dGhpcy5sb2NhbFByZXNlcnZlV1M9cn1sZWFmRmFsbGJhY2soZSx0KXsiQlIiPT1lLm5vZGVOYW1lJiZ0aGlzLnRvcC50eXBlJiZ0aGlzLnRvcC50eXBlLmlubGluZUNvbnRlbnQmJnRoaXMuYWRkVGV4dE5vZGUoZS5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcbiIpLHQpfWlnbm9yZUZhbGxiYWNrKGUsdCl7IkJSIiE9ZS5ub2RlTmFtZXx8dGhpcy50b3AudHlwZSYmdGhpcy50b3AudHlwZS5pbmxpbmVDb250ZW50fHx0aGlzLmZpbmRQbGFjZSh0aGlzLnBhcnNlci5zY2hlbWEudGV4dCgiLSIpLHQsITApfXJlYWRTdHlsZXMoZSx0KXtsZXQgbj1lLnN0eWxlO2lmKG4mJm4ubGVuZ3RoKWZvcihsZXQgZT0wO2U8dGhpcy5wYXJzZXIubWF0Y2hlZFN0eWxlcy5sZW5ndGg7ZSsrKXtsZXQgcj10aGlzLnBhcnNlci5tYXRjaGVkU3R5bGVzW2VdLG89bi5nZXRQcm9wZXJ0eVZhbHVlKHIpO2lmKG8pZm9yKGxldCBlOzspe2xldCBuPXRoaXMucGFyc2VyLm1hdGNoU3R5bGUocixvLHRoaXMsZSk7aWYoIW4pYnJlYWs7aWYobi5pZ25vcmUpcmV0dXJuIG51bGw7aWYodD1uLmNsZWFyTWFyaz90LmZpbHRlcihlPT4hbi5jbGVhck1hcmsoZSkpOnQuY29uY2F0KHRoaXMucGFyc2VyLnNjaGVtYS5tYXJrc1tuLm1hcmtdLmNyZWF0ZShuLmF0dHJzKSksITEhPT1uLmNvbnN1bWluZylicmVhaztlPW59fXJldHVybiB0fWFkZEVsZW1lbnRCeVJ1bGUoZSx0LG4scil7bGV0IG8saTtpZih0Lm5vZGUpaWYoaT10aGlzLnBhcnNlci5zY2hlbWEubm9kZXNbdC5ub2RlXSxpLmlzTGVhZil0aGlzLmluc2VydE5vZGUoaS5jcmVhdGUodC5hdHRycyksbiwiQlIiPT1lLm5vZGVOYW1lKXx8dGhpcy5sZWFmRmFsbGJhY2soZSxuKTtlbHNle2xldCBlPXRoaXMuZW50ZXIoaSx0LmF0dHJzfHxudWxsLG4sdC5wcmVzZXJ2ZVdoaXRlc3BhY2UpO2UmJihvPSEwLG49ZSl9ZWxzZXtsZXQgZT10aGlzLnBhcnNlci5zY2hlbWEubWFya3NbdC5tYXJrXTtuPW4uY29uY2F0KGUuY3JlYXRlKHQuYXR0cnMpKX1sZXQgcz10aGlzLnRvcDtpZihpJiZpLmlzTGVhZil0aGlzLmZpbmRJbnNpZGUoZSk7ZWxzZSBpZihyKXRoaXMuYWRkRWxlbWVudChlLG4scik7ZWxzZSBpZih0LmdldENvbnRlbnQpdGhpcy5maW5kSW5zaWRlKGUpLHQuZ2V0Q29udGVudChlLHRoaXMucGFyc2VyLnNjaGVtYSkuZm9yRWFjaChlPT50aGlzLmluc2VydE5vZGUoZSxuLCExKSk7ZWxzZXtsZXQgcj1lOyJzdHJpbmciPT10eXBlb2YgdC5jb250ZW50RWxlbWVudD9yPWUucXVlcnlTZWxlY3Rvcih0LmNvbnRlbnRFbGVtZW50KToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb250ZW50RWxlbWVudD9yPXQuY29udGVudEVsZW1lbnQoZSk6dC5jb250ZW50RWxlbWVudCYmKHI9dC5jb250ZW50RWxlbWVudCksdGhpcy5maW5kQXJvdW5kKGUsciwhMCksdGhpcy5hZGRBbGwocixuKSx0aGlzLmZpbmRBcm91bmQoZSxyLCExKX1vJiZ0aGlzLnN5bmMocykmJnRoaXMub3Blbi0tfWFkZEFsbChlLHQsbixyKXtsZXQgbz1ufHwwO2ZvcihsZXQgaT1uP2UuY2hpbGROb2Rlc1tuXTplLmZpcnN0Q2hpbGQscz1udWxsPT1yP251bGw6ZS5jaGlsZE5vZGVzW3JdO2khPXM7aT1pLm5leHRTaWJsaW5nLCsrbyl0aGlzLmZpbmRBdFBvaW50KGUsbyksdGhpcy5hZGRET00oaSx0KTt0aGlzLmZpbmRBdFBvaW50KGUsbyl9ZmluZFBsYWNlKGUsdCxuKXtsZXQgcixvO2ZvcihsZXQgdD10aGlzLm9wZW4saT0wO3Q+PTA7dC0tKXtsZXQgcz10aGlzLm5vZGVzW3RdLGw9cy5maW5kV3JhcHBpbmcoZSk7aWYobCYmKCFyfHxyLmxlbmd0aD5sLmxlbmd0aCtpKSYmKHI9bCxvPXMsIWwubGVuZ3RoKSlicmVhaztpZihzLnNvbGlkKXtpZihuKWJyZWFrO2krPTJ9fWlmKCFyKXJldHVybiBudWxsO3RoaXMuc3luYyhvKTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl0PXRoaXMuZW50ZXJJbm5lcihyW2VdLG51bGwsdCwhMSk7cmV0dXJuIHR9aW5zZXJ0Tm9kZShlLHQsbil7aWYoZS5pc0lubGluZSYmdGhpcy5uZWVkc0Jsb2NrJiYhdGhpcy50b3AudHlwZSl7bGV0IGU9dGhpcy50ZXh0YmxvY2tGcm9tQ29udGV4dCgpO2UmJih0PXRoaXMuZW50ZXJJbm5lcihlLG51bGwsdCkpfWxldCByPXRoaXMuZmluZFBsYWNlKGUsdCxuKTtpZihyKXt0aGlzLmNsb3NlRXh0cmEoKTtsZXQgdD10aGlzLnRvcDt0Lm1hdGNoJiYodC5tYXRjaD10Lm1hdGNoLm1hdGNoVHlwZShlLnR5cGUpKTtsZXQgbj1sZS5ub25lO2ZvcihsZXQgbyBvZiByLmNvbmNhdChlLm1hcmtzKSkodC50eXBlP3QudHlwZS5hbGxvd3NNYXJrVHlwZShvLnR5cGUpOm1hcmtNYXlBcHBseShvLnR5cGUsZS50eXBlKSkmJihuPW8uYWRkVG9TZXQobikpO3JldHVybiB0LmNvbnRlbnQucHVzaChlLm1hcmsobikpLCEwfXJldHVybiExfWVudGVyKGUsdCxuLHIpe2xldCBvPXRoaXMuZmluZFBsYWNlKGUuY3JlYXRlKHQpLG4sITEpO3JldHVybiBvJiYobz10aGlzLmVudGVySW5uZXIoZSx0LG4sITAscikpLG99ZW50ZXJJbm5lcihlLHQsbixyPSExLG8pe3RoaXMuY2xvc2VFeHRyYSgpO2xldCBpPXRoaXMudG9wO2kubWF0Y2g9aS5tYXRjaCYmaS5tYXRjaC5tYXRjaFR5cGUoZSk7bGV0IHM9d3NPcHRpb25zRm9yKGUsbyxpLm9wdGlvbnMpOzQmaS5vcHRpb25zJiYwPT1pLmNvbnRlbnQubGVuZ3RoJiYoc3w9NCk7bGV0IGw9bGUubm9uZTtyZXR1cm4gbj1uLmZpbHRlcih0PT4hKGkudHlwZT9pLnR5cGUuYWxsb3dzTWFya1R5cGUodC50eXBlKTptYXJrTWF5QXBwbHkodC50eXBlLGUpKXx8KGw9dC5hZGRUb1NldChsKSwhMSkpLHRoaXMubm9kZXMucHVzaChuZXcgTm9kZUNvbnRleHQoZSx0LGwscixudWxsLHMpKSx0aGlzLm9wZW4rKyxufWNsb3NlRXh0cmEoZT0hMSl7bGV0IHQ9dGhpcy5ub2Rlcy5sZW5ndGgtMTtpZih0PnRoaXMub3Blbil7Zm9yKDt0PnRoaXMub3Blbjt0LS0pdGhpcy5ub2Rlc1t0LTFdLmNvbnRlbnQucHVzaCh0aGlzLm5vZGVzW3RdLmZpbmlzaChlKSk7dGhpcy5ub2Rlcy5sZW5ndGg9dGhpcy5vcGVuKzF9fWZpbmlzaCgpe3JldHVybiB0aGlzLm9wZW49MCx0aGlzLmNsb3NlRXh0cmEodGhpcy5pc09wZW4pLHRoaXMubm9kZXNbMF0uZmluaXNoKCEoIXRoaXMuaXNPcGVuJiYhdGhpcy5vcHRpb25zLnRvcE9wZW4pKX1zeW5jKGUpe2ZvcihsZXQgdD10aGlzLm9wZW47dD49MDt0LS0pe2lmKHRoaXMubm9kZXNbdF09PWUpcmV0dXJuIHRoaXMub3Blbj10LCEwO3RoaXMubG9jYWxQcmVzZXJ2ZVdTJiYodGhpcy5ub2Rlc1t0XS5vcHRpb25zfD0xKX1yZXR1cm4hMX1nZXQgY3VycmVudFBvcygpe3RoaXMuY2xvc2VFeHRyYSgpO2xldCBlPTA7Zm9yKGxldCB0PXRoaXMub3Blbjt0Pj0wO3QtLSl7bGV0IG49dGhpcy5ub2Rlc1t0XS5jb250ZW50O2ZvcihsZXQgdD1uLmxlbmd0aC0xO3Q+PTA7dC0tKWUrPW5bdF0ubm9kZVNpemU7dCYmZSsrfXJldHVybiBlfWZpbmRBdFBvaW50KGUsdCl7aWYodGhpcy5maW5kKWZvcihsZXQgbj0wO248dGhpcy5maW5kLmxlbmd0aDtuKyspdGhpcy5maW5kW25dLm5vZGU9PWUmJnRoaXMuZmluZFtuXS5vZmZzZXQ9PXQmJih0aGlzLmZpbmRbbl0ucG9zPXRoaXMuY3VycmVudFBvcyl9ZmluZEluc2lkZShlKXtpZih0aGlzLmZpbmQpZm9yKGxldCB0PTA7dDx0aGlzLmZpbmQubGVuZ3RoO3QrKyludWxsPT10aGlzLmZpbmRbdF0ucG9zJiYxPT1lLm5vZGVUeXBlJiZlLmNvbnRhaW5zKHRoaXMuZmluZFt0XS5ub2RlKSYmKHRoaXMuZmluZFt0XS5wb3M9dGhpcy5jdXJyZW50UG9zKX1maW5kQXJvdW5kKGUsdCxuKXtpZihlIT10JiZ0aGlzLmZpbmQpZm9yKGxldCByPTA7cjx0aGlzLmZpbmQubGVuZ3RoO3IrKylpZihudWxsPT10aGlzLmZpbmRbcl0ucG9zJiYxPT1lLm5vZGVUeXBlJiZlLmNvbnRhaW5zKHRoaXMuZmluZFtyXS5ub2RlKSl7dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzLmZpbmRbcl0ubm9kZSkmKG4/Mjo0KSYmKHRoaXMuZmluZFtyXS5wb3M9dGhpcy5jdXJyZW50UG9zKX19ZmluZEluVGV4dChlKXtpZih0aGlzLmZpbmQpZm9yKGxldCB0PTA7dDx0aGlzLmZpbmQubGVuZ3RoO3QrKyl0aGlzLmZpbmRbdF0ubm9kZT09ZSYmKHRoaXMuZmluZFt0XS5wb3M9dGhpcy5jdXJyZW50UG9zLShlLm5vZGVWYWx1ZS5sZW5ndGgtdGhpcy5maW5kW3RdLm9mZnNldCkpfW1hdGNoZXNDb250ZXh0KGUpe2lmKGUuaW5kZXhPZigifCIpPi0xKXJldHVybiBlLnNwbGl0KC9ccypcfFxzKi8pLnNvbWUodGhpcy5tYXRjaGVzQ29udGV4dCx0aGlzKTtsZXQgdD1lLnNwbGl0KCIvIiksbj10aGlzLm9wdGlvbnMuY29udGV4dCxyPSEodGhpcy5pc09wZW58fG4mJm4ucGFyZW50LnR5cGUhPXRoaXMubm9kZXNbMF0udHlwZSksbz0tKG4/bi5kZXB0aCsxOjApKyhyPzA6MSksbWF0Y2g9KGUsaSk9Pntmb3IoO2U+PTA7ZS0tKXtsZXQgcz10W2VdO2lmKCIiPT1zKXtpZihlPT10Lmxlbmd0aC0xfHwwPT1lKWNvbnRpbnVlO2Zvcig7aT49bztpLS0paWYobWF0Y2goZS0xLGkpKXJldHVybiEwO3JldHVybiExfXtsZXQgZT1pPjB8fDA9PWkmJnI/dGhpcy5ub2Rlc1tpXS50eXBlOm4mJmk+PW8/bi5ub2RlKGktbykudHlwZTpudWxsO2lmKCFlfHxlLm5hbWUhPXMmJiFlLmlzSW5Hcm91cChzKSlyZXR1cm4hMTtpLS19fXJldHVybiEwfTtyZXR1cm4gbWF0Y2godC5sZW5ndGgtMSx0aGlzLm9wZW4pfXRleHRibG9ja0Zyb21Db250ZXh0KCl7bGV0IGU9dGhpcy5vcHRpb25zLmNvbnRleHQ7aWYoZSlmb3IobGV0IHQ9ZS5kZXB0aDt0Pj0wO3QtLSl7bGV0IG49ZS5ub2RlKHQpLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcih0KSkuZGVmYXVsdFR5cGU7aWYobiYmbi5pc1RleHRibG9jayYmbi5kZWZhdWx0QXR0cnMpcmV0dXJuIG59Zm9yKGxldCBlIGluIHRoaXMucGFyc2VyLnNjaGVtYS5ub2Rlcyl7bGV0IHQ9dGhpcy5wYXJzZXIuc2NoZW1hLm5vZGVzW2VdO2lmKHQuaXNUZXh0YmxvY2smJnQuZGVmYXVsdEF0dHJzKXJldHVybiB0fX19ZnVuY3Rpb24gbWF0Y2hlcyhlLHQpe3JldHVybihlLm1hdGNoZXN8fGUubXNNYXRjaGVzU2VsZWN0b3J8fGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxlLm1vek1hdGNoZXNTZWxlY3RvcikuY2FsbChlLHQpfWZ1bmN0aW9uIGNvcHkoZSl7bGV0IHQ9e307Zm9yKGxldCBuIGluIGUpdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIG1hcmtNYXlBcHBseShlLHQpe2xldCBuPXQuc2NoZW1hLm5vZGVzO2ZvcihsZXQgciBpbiBuKXtsZXQgbz1uW3JdO2lmKCFvLmFsbG93c01hcmtUeXBlKGUpKWNvbnRpbnVlO2xldCBpPVtdLHNjYW49ZT0+e2kucHVzaChlKTtmb3IobGV0IG49MDtuPGUuZWRnZUNvdW50O24rKyl7bGV0e3R5cGU6cixuZXh0Om99PWUuZWRnZShuKTtpZihyPT10KXJldHVybiEwO2lmKGkuaW5kZXhPZihvKTwwJiZzY2FuKG8pKXJldHVybiEwfX07aWYoc2NhbihvLmNvbnRlbnRNYXRjaCkpcmV0dXJuITB9fWNsYXNzIERPTVNlcmlhbGl6ZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVzPWUsdGhpcy5tYXJrcz10fXNlcmlhbGl6ZUZyYWdtZW50KGUsdD17fSxuKXtufHwobj1kb2MkMSh0KS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO2xldCByPW4sbz1bXTtyZXR1cm4gZS5mb3JFYWNoKGU9PntpZihvLmxlbmd0aHx8ZS5tYXJrcy5sZW5ndGgpe2xldCBuPTAsaT0wO2Zvcig7bjxvLmxlbmd0aCYmaTxlLm1hcmtzLmxlbmd0aDspe2xldCB0PWUubWFya3NbaV07aWYodGhpcy5tYXJrc1t0LnR5cGUubmFtZV0pe2lmKCF0LmVxKG9bbl1bMF0pfHwhMT09PXQudHlwZS5zcGVjLnNwYW5uaW5nKWJyZWFrO24rKyxpKyt9ZWxzZSBpKyt9Zm9yKDtuPG8ubGVuZ3RoOylyPW8ucG9wKClbMV07Zm9yKDtpPGUubWFya3MubGVuZ3RoOyl7bGV0IG49ZS5tYXJrc1tpKytdLHM9dGhpcy5zZXJpYWxpemVNYXJrKG4sZS5pc0lubGluZSx0KTtzJiYoby5wdXNoKFtuLHJdKSxyLmFwcGVuZENoaWxkKHMuZG9tKSxyPXMuY29udGVudERPTXx8cy5kb20pfX1yLmFwcGVuZENoaWxkKHRoaXMuc2VyaWFsaXplTm9kZUlubmVyKGUsdCkpfSksbn1zZXJpYWxpemVOb2RlSW5uZXIoZSx0KXtsZXR7ZG9tOm4sY29udGVudERPTTpyfT1yZW5kZXJTcGVjKGRvYyQxKHQpLHRoaXMubm9kZXNbZS50eXBlLm5hbWVdKGUpLG51bGwsZS5hdHRycyk7aWYocil7aWYoZS5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBub3QgYWxsb3dlZCBpbiBhIGxlYWYgbm9kZSBzcGVjIik7dGhpcy5zZXJpYWxpemVGcmFnbWVudChlLmNvbnRlbnQsdCxyKX1yZXR1cm4gbn1zZXJpYWxpemVOb2RlKGUsdD17fSl7bGV0IG49dGhpcy5zZXJpYWxpemVOb2RlSW5uZXIoZSx0KTtmb3IobGV0IHI9ZS5tYXJrcy5sZW5ndGgtMTtyPj0wO3ItLSl7bGV0IG89dGhpcy5zZXJpYWxpemVNYXJrKGUubWFya3Nbcl0sZS5pc0lubGluZSx0KTtvJiYoKG8uY29udGVudERPTXx8by5kb20pLmFwcGVuZENoaWxkKG4pLG49by5kb20pfXJldHVybiBufXNlcmlhbGl6ZU1hcmsoZSx0LG49e30pe2xldCByPXRoaXMubWFya3NbZS50eXBlLm5hbWVdO3JldHVybiByJiZyZW5kZXJTcGVjKGRvYyQxKG4pLHIoZSx0KSxudWxsLGUuYXR0cnMpfXN0YXRpYyByZW5kZXJTcGVjKGUsdCxuPW51bGwscil7cmV0dXJuIHJlbmRlclNwZWMoZSx0LG4scil9c3RhdGljIGZyb21TY2hlbWEoZSl7cmV0dXJuIGUuY2FjaGVkLmRvbVNlcmlhbGl6ZXJ8fChlLmNhY2hlZC5kb21TZXJpYWxpemVyPW5ldyBET01TZXJpYWxpemVyKHRoaXMubm9kZXNGcm9tU2NoZW1hKGUpLHRoaXMubWFya3NGcm9tU2NoZW1hKGUpKSl9c3RhdGljIG5vZGVzRnJvbVNjaGVtYShlKXtsZXQgdD1nYXRoZXJUb0RPTShlLm5vZGVzKTtyZXR1cm4gdC50ZXh0fHwodC50ZXh0PWU9PmUudGV4dCksdH1zdGF0aWMgbWFya3NGcm9tU2NoZW1hKGUpe3JldHVybiBnYXRoZXJUb0RPTShlLm1hcmtzKX19ZnVuY3Rpb24gZ2F0aGVyVG9ET00oZSl7bGV0IHQ9e307Zm9yKGxldCBuIGluIGUpe2xldCByPWVbbl0uc3BlYy50b0RPTTtyJiYodFtuXT1yKX1yZXR1cm4gdH1mdW5jdGlvbiBkb2MkMShlKXtyZXR1cm4gZS5kb2N1bWVudHx8d2luZG93LmRvY3VtZW50fWNvbnN0IHllPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHN1c3BpY2lvdXNBdHRyaWJ1dGVzKGUpe2xldCB0PXllLmdldChlKTtyZXR1cm4gdm9pZCAwPT09dCYmeWUuc2V0KGUsdD1mdW5jdGlvbihlKXtsZXQgdD1udWxsO2Z1bmN0aW9uIHNjYW4oZSl7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpaWYoInN0cmluZyI9PXR5cGVvZiBlWzBdKXR8fCh0PVtdKSx0LnB1c2goZSk7ZWxzZSBmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylzY2FuKGVbdF0pO2Vsc2UgZm9yKGxldCB0IGluIGUpc2NhbihlW3RdKX1yZXR1cm4gc2NhbihlKSx0fShlKSksdH1mdW5jdGlvbiByZW5kZXJTcGVjKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm57ZG9tOmUuY3JlYXRlVGV4dE5vZGUodCl9O2lmKG51bGwhPXQubm9kZVR5cGUpcmV0dXJue2RvbTp0fTtpZih0LmRvbSYmbnVsbCE9dC5kb20ubm9kZVR5cGUpcmV0dXJuIHQ7bGV0IG8saT10WzBdO2lmKCJzdHJpbmciIT10eXBlb2YgaSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBhcnJheSBwYXNzZWQgdG8gcmVuZGVyU3BlYyIpO2lmKHImJihvPXN1c3BpY2lvdXNBdHRyaWJ1dGVzKHIpKSYmby5pbmRleE9mKHQpPi0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2luZyBhbiBhcnJheSBmcm9tIGFuIGF0dHJpYnV0ZSBvYmplY3QgYXMgYSBET00gc3BlYy4gVGhpcyBtYXkgYmUgYW4gYXR0ZW1wdGVkIGNyb3NzIHNpdGUgc2NyaXB0aW5nIGF0dGFjay4iKTtsZXQgcyxsPWkuaW5kZXhPZigiICIpO2w+MCYmKG49aS5zbGljZSgwLGwpLGk9aS5zbGljZShsKzEpKTtsZXQgYT1uP2UuY3JlYXRlRWxlbWVudE5TKG4saSk6ZS5jcmVhdGVFbGVtZW50KGkpLGM9dFsxXSxkPTE7aWYoYyYmIm9iamVjdCI9PXR5cGVvZiBjJiZudWxsPT1jLm5vZGVUeXBlJiYhQXJyYXkuaXNBcnJheShjKSl7ZD0yO2ZvcihsZXQgZSBpbiBjKWlmKG51bGwhPWNbZV0pe2xldCB0PWUuaW5kZXhPZigiICIpO3Q+MD9hLnNldEF0dHJpYnV0ZU5TKGUuc2xpY2UoMCx0KSxlLnNsaWNlKHQrMSksY1tlXSk6InN0eWxlIj09ZSYmYS5zdHlsZT9hLnN0eWxlLmNzc1RleHQ9Y1tlXTphLnNldEF0dHJpYnV0ZShlLGNbZV0pfX1mb3IobGV0IG89ZDtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvXTtpZigwPT09aSl7aWYobzx0Lmxlbmd0aC0xfHxvPmQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBtdXN0IGJlIHRoZSBvbmx5IGNoaWxkIG9mIGl0cyBwYXJlbnQgbm9kZSIpO3JldHVybntkb206YSxjb250ZW50RE9NOmF9fXtsZXR7ZG9tOnQsY29udGVudERPTTpvfT1yZW5kZXJTcGVjKGUsaSxuLHIpO2lmKGEuYXBwZW5kQ2hpbGQodCksbyl7aWYocyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTXVsdGlwbGUgY29udGVudCBob2xlcyIpO3M9b319fXJldHVybntkb206YSxjb250ZW50RE9NOnN9fWNvbnN0IHdlPU1hdGgucG93KDIsMTYpO2Z1bmN0aW9uIG1ha2VSZWNvdmVyKGUsdCl7cmV0dXJuIGUrdCp3ZX1mdW5jdGlvbiByZWNvdmVySW5kZXgoZSl7cmV0dXJuIDY1NTM1JmV9Y2xhc3MgTWFwUmVzdWx0e2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnBvcz1lLHRoaXMuZGVsSW5mbz10LHRoaXMucmVjb3Zlcj1ufWdldCBkZWxldGVkKCl7cmV0dXJuKDgmdGhpcy5kZWxJbmZvKT4wfWdldCBkZWxldGVkQmVmb3JlKCl7cmV0dXJuKDUmdGhpcy5kZWxJbmZvKT4wfWdldCBkZWxldGVkQWZ0ZXIoKXtyZXR1cm4oNiZ0aGlzLmRlbEluZm8pPjB9Z2V0IGRlbGV0ZWRBY3Jvc3MoKXtyZXR1cm4oNCZ0aGlzLmRlbEluZm8pPjB9fWNsYXNzIFN0ZXBNYXB7Y29uc3RydWN0b3IoZSx0PSExKXtpZih0aGlzLnJhbmdlcz1lLHRoaXMuaW52ZXJ0ZWQ9dCwhZS5sZW5ndGgmJlN0ZXBNYXAuZW1wdHkpcmV0dXJuIFN0ZXBNYXAuZW1wdHl9cmVjb3ZlcihlKXtsZXQgdD0wLG49cmVjb3ZlckluZGV4KGUpO2lmKCF0aGlzLmludmVydGVkKWZvcihsZXQgZT0wO2U8bjtlKyspdCs9dGhpcy5yYW5nZXNbMyplKzJdLXRoaXMucmFuZ2VzWzMqZSsxXTtyZXR1cm4gdGhpcy5yYW5nZXNbMypuXSt0K2Z1bmN0aW9uKGUpe3JldHVybihlLSg2NTUzNSZlKSkvd2V9KGUpfW1hcFJlc3VsdChlLHQ9MSl7cmV0dXJuIHRoaXMuX21hcChlLHQsITEpfW1hcChlLHQ9MSl7cmV0dXJuIHRoaXMuX21hcChlLHQsITApfV9tYXAoZSx0LG4pe2xldCByPTAsbz10aGlzLmludmVydGVkPzI6MSxpPXRoaXMuaW52ZXJ0ZWQ/MToyO2ZvcihsZXQgcz0wO3M8dGhpcy5yYW5nZXMubGVuZ3RoO3MrPTMpe2xldCBsPXRoaXMucmFuZ2VzW3NdLSh0aGlzLmludmVydGVkP3I6MCk7aWYobD5lKWJyZWFrO2xldCBhPXRoaXMucmFuZ2VzW3Mrb10sYz10aGlzLnJhbmdlc1tzK2ldLGQ9bCthO2lmKGU8PWQpe2xldCBvPWwrcisoKGE/ZT09bD8tMTplPT1kPzE6dDp0KTwwPzA6Yyk7aWYobilyZXR1cm4gbztsZXQgaT1lPT0odDwwP2w6ZCk/bnVsbDptYWtlUmVjb3ZlcihzLzMsZS1sKSxwPWU9PWw/MjplPT1kPzE6NDtyZXR1cm4odDwwP2UhPWw6ZSE9ZCkmJihwfD04KSxuZXcgTWFwUmVzdWx0KG8scCxpKX1yKz1jLWF9cmV0dXJuIG4/ZStyOm5ldyBNYXBSZXN1bHQoZStyLDAsbnVsbCl9dG91Y2hlcyhlLHQpe2xldCBuPTAscj1yZWNvdmVySW5kZXgodCksbz10aGlzLmludmVydGVkPzI6MSxpPXRoaXMuaW52ZXJ0ZWQ/MToyO2ZvcihsZXQgdD0wO3Q8dGhpcy5yYW5nZXMubGVuZ3RoO3QrPTMpe2xldCBzPXRoaXMucmFuZ2VzW3RdLSh0aGlzLmludmVydGVkP246MCk7aWYocz5lKWJyZWFrO2xldCBsPXRoaXMucmFuZ2VzW3Qrb107aWYoZTw9cytsJiZ0PT0zKnIpcmV0dXJuITA7bis9dGhpcy5yYW5nZXNbdCtpXS1sfXJldHVybiExfWZvckVhY2goZSl7bGV0IHQ9dGhpcy5pbnZlcnRlZD8yOjEsbj10aGlzLmludmVydGVkPzE6Mjtmb3IobGV0IHI9MCxvPTA7cjx0aGlzLnJhbmdlcy5sZW5ndGg7cis9Myl7bGV0IGk9dGhpcy5yYW5nZXNbcl0scz1pLSh0aGlzLmludmVydGVkP286MCksbD1pKyh0aGlzLmludmVydGVkPzA6byksYT10aGlzLnJhbmdlc1tyK3RdLGM9dGhpcy5yYW5nZXNbcituXTtlKHMscythLGwsbCtjKSxvKz1jLWF9fWludmVydCgpe3JldHVybiBuZXcgU3RlcE1hcCh0aGlzLnJhbmdlcywhdGhpcy5pbnZlcnRlZCl9dG9TdHJpbmcoKXtyZXR1cm4odGhpcy5pbnZlcnRlZD8iLSI6IiIpK0pTT04uc3RyaW5naWZ5KHRoaXMucmFuZ2VzKX1zdGF0aWMgb2Zmc2V0KGUpe3JldHVybiAwPT1lP1N0ZXBNYXAuZW1wdHk6bmV3IFN0ZXBNYXAoZTwwP1swLC1lLDBdOlswLDAsZV0pfX1TdGVwTWFwLmVtcHR5PW5ldyBTdGVwTWFwKFtdKTtjbGFzcyBNYXBwaW5ne2NvbnN0cnVjdG9yKGUsdCxuPTAscj0oZT9lLmxlbmd0aDowKSl7dGhpcy5taXJyb3I9dCx0aGlzLmZyb209bix0aGlzLnRvPXIsdGhpcy5fbWFwcz1lfHxbXSx0aGlzLm93bkRhdGE9IShlfHx0KX1nZXQgbWFwcygpe3JldHVybiB0aGlzLl9tYXBzfXNsaWNlKGU9MCx0PXRoaXMubWFwcy5sZW5ndGgpe3JldHVybiBuZXcgTWFwcGluZyh0aGlzLl9tYXBzLHRoaXMubWlycm9yLGUsdCl9YXBwZW5kTWFwKGUsdCl7dGhpcy5vd25EYXRhfHwodGhpcy5fbWFwcz10aGlzLl9tYXBzLnNsaWNlKCksdGhpcy5taXJyb3I9dGhpcy5taXJyb3ImJnRoaXMubWlycm9yLnNsaWNlKCksdGhpcy5vd25EYXRhPSEwKSx0aGlzLnRvPXRoaXMuX21hcHMucHVzaChlKSxudWxsIT10JiZ0aGlzLnNldE1pcnJvcih0aGlzLl9tYXBzLmxlbmd0aC0xLHQpfWFwcGVuZE1hcHBpbmcoZSl7Zm9yKGxldCB0PTAsbj10aGlzLl9tYXBzLmxlbmd0aDt0PGUuX21hcHMubGVuZ3RoO3QrKyl7bGV0IHI9ZS5nZXRNaXJyb3IodCk7dGhpcy5hcHBlbmRNYXAoZS5fbWFwc1t0XSxudWxsIT1yJiZyPHQ/bityOnZvaWQgMCl9fWdldE1pcnJvcihlKXtpZih0aGlzLm1pcnJvcilmb3IobGV0IHQ9MDt0PHRoaXMubWlycm9yLmxlbmd0aDt0KyspaWYodGhpcy5taXJyb3JbdF09PWUpcmV0dXJuIHRoaXMubWlycm9yW3QrKHQlMj8tMToxKV19c2V0TWlycm9yKGUsdCl7dGhpcy5taXJyb3J8fCh0aGlzLm1pcnJvcj1bXSksdGhpcy5taXJyb3IucHVzaChlLHQpfWFwcGVuZE1hcHBpbmdJbnZlcnRlZChlKXtmb3IobGV0IHQ9ZS5tYXBzLmxlbmd0aC0xLG49dGhpcy5fbWFwcy5sZW5ndGgrZS5fbWFwcy5sZW5ndGg7dD49MDt0LS0pe2xldCByPWUuZ2V0TWlycm9yKHQpO3RoaXMuYXBwZW5kTWFwKGUuX21hcHNbdF0uaW52ZXJ0KCksbnVsbCE9ciYmcj50P24tci0xOnZvaWQgMCl9fWludmVydCgpe2xldCBlPW5ldyBNYXBwaW5nO3JldHVybiBlLmFwcGVuZE1hcHBpbmdJbnZlcnRlZCh0aGlzKSxlfW1hcChlLHQ9MSl7aWYodGhpcy5taXJyb3IpcmV0dXJuIHRoaXMuX21hcChlLHQsITApO2ZvcihsZXQgbj10aGlzLmZyb207bjx0aGlzLnRvO24rKyllPXRoaXMuX21hcHNbbl0ubWFwKGUsdCk7cmV0dXJuIGV9bWFwUmVzdWx0KGUsdD0xKXtyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMSl9X21hcChlLHQsbil7bGV0IHI9MDtmb3IobGV0IG49dGhpcy5mcm9tO248dGhpcy50bztuKyspe2xldCBvPXRoaXMuX21hcHNbbl0ubWFwUmVzdWx0KGUsdCk7aWYobnVsbCE9by5yZWNvdmVyKXtsZXQgdD10aGlzLmdldE1pcnJvcihuKTtpZihudWxsIT10JiZ0Pm4mJnQ8dGhpcy50byl7bj10LGU9dGhpcy5fbWFwc1t0XS5yZWNvdmVyKG8ucmVjb3Zlcik7Y29udGludWV9fXJ8PW8uZGVsSW5mbyxlPW8ucG9zfXJldHVybiBuP2U6bmV3IE1hcFJlc3VsdChlLHIsbnVsbCl9fWNvbnN0IGJlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgU3RlcHtnZXRNYXAoKXtyZXR1cm4gU3RlcE1hcC5lbXB0eX1tZXJnZShlKXtyZXR1cm4gbnVsbH1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZighdHx8IXQuc3RlcFR5cGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFN0ZXAuZnJvbUpTT04iKTtsZXQgbj1iZVt0LnN0ZXBUeXBlXTtpZighbil0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gc3RlcCB0eXBlICR7dC5zdGVwVHlwZX0gZGVmaW5lZGApO3JldHVybiBuLmZyb21KU09OKGUsdCl9c3RhdGljIGpzb25JRChlLHQpe2lmKGUgaW4gYmUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkR1cGxpY2F0ZSB1c2Ugb2Ygc3RlcCBKU09OIElEICIrZSk7cmV0dXJuIGJlW2VdPXQsdC5wcm90b3R5cGUuanNvbklEPWUsdH19Y2xhc3MgU3RlcFJlc3VsdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZG9jPWUsdGhpcy5mYWlsZWQ9dH1zdGF0aWMgb2soZSl7cmV0dXJuIG5ldyBTdGVwUmVzdWx0KGUsbnVsbCl9c3RhdGljIGZhaWwoZSl7cmV0dXJuIG5ldyBTdGVwUmVzdWx0KG51bGwsZSl9c3RhdGljIGZyb21SZXBsYWNlKGUsdCxuLHIpe3RyeXtyZXR1cm4gU3RlcFJlc3VsdC5vayhlLnJlcGxhY2UodCxuLHIpKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgUmVwbGFjZUVycm9yKXJldHVybiBTdGVwUmVzdWx0LmZhaWwoZS5tZXNzYWdlKTt0aHJvdyBlfX19ZnVuY3Rpb24gbWFwRnJhZ21lbnQoZSx0LG4pe2xldCByPVtdO2ZvcihsZXQgbz0wO288ZS5jaGlsZENvdW50O28rKyl7bGV0IGk9ZS5jaGlsZChvKTtpLmNvbnRlbnQuc2l6ZSYmKGk9aS5jb3B5KG1hcEZyYWdtZW50KGkuY29udGVudCx0LGkpKSksaS5pc0lubGluZSYmKGk9dChpLG4sbykpLHIucHVzaChpKX1yZXR1cm4gRnJhZ21lbnQuZnJvbUFycmF5KHIpfWNsYXNzIEFkZE1hcmtTdGVwIGV4dGVuZHMgU3RlcHtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy5tYXJrPW59YXBwbHkoZSl7bGV0IHQ9ZS5zbGljZSh0aGlzLmZyb20sdGhpcy50byksbj1lLnJlc29sdmUodGhpcy5mcm9tKSxyPW4ubm9kZShuLnNoYXJlZERlcHRoKHRoaXMudG8pKSxvPW5ldyBTbGljZShtYXBGcmFnbWVudCh0LmNvbnRlbnQsKGUsdCk9PmUuaXNBdG9tJiZ0LnR5cGUuYWxsb3dzTWFya1R5cGUodGhpcy5tYXJrLnR5cGUpP2UubWFyayh0aGlzLm1hcmsuYWRkVG9TZXQoZS5tYXJrcykpOmUsciksdC5vcGVuU3RhcnQsdC5vcGVuRW5kKTtyZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShlLHRoaXMuZnJvbSx0aGlzLnRvLG8pfWludmVydCgpe3JldHVybiBuZXcgUmVtb3ZlTWFya1N0ZXAodGhpcy5mcm9tLHRoaXMudG8sdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLG49ZS5tYXBSZXN1bHQodGhpcy50bywtMSk7cmV0dXJuIHQuZGVsZXRlZCYmbi5kZWxldGVkfHx0LnBvcz49bi5wb3M/bnVsbDpuZXcgQWRkTWFya1N0ZXAodC5wb3Msbi5wb3MsdGhpcy5tYXJrKX1tZXJnZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEFkZE1hcmtTdGVwJiZlLm1hcmsuZXEodGhpcy5tYXJrKSYmdGhpcy5mcm9tPD1lLnRvJiZ0aGlzLnRvPj1lLmZyb20/bmV3IEFkZE1hcmtTdGVwKE1hdGgubWluKHRoaXMuZnJvbSxlLmZyb20pLE1hdGgubWF4KHRoaXMudG8sZS50byksdGhpcy5tYXJrKTpudWxsfXRvSlNPTigpe3JldHVybntzdGVwVHlwZToiYWRkTWFyayIsbWFyazp0aGlzLm1hcmsudG9KU09OKCksZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b319c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LmZyb218fCJudW1iZXIiIT10eXBlb2YgdC50byl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgQWRkTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEFkZE1hcmtTdGVwKHQuZnJvbSx0LnRvLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1TdGVwLmpzb25JRCgiYWRkTWFyayIsQWRkTWFya1N0ZXApO2NsYXNzIFJlbW92ZU1hcmtTdGVwIGV4dGVuZHMgU3RlcHtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy5tYXJrPW59YXBwbHkoZSl7bGV0IHQ9ZS5zbGljZSh0aGlzLmZyb20sdGhpcy50byksbj1uZXcgU2xpY2UobWFwRnJhZ21lbnQodC5jb250ZW50LGU9PmUubWFyayh0aGlzLm1hcmsucmVtb3ZlRnJvbVNldChlLm1hcmtzKSksZSksdC5vcGVuU3RhcnQsdC5vcGVuRW5kKTtyZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShlLHRoaXMuZnJvbSx0aGlzLnRvLG4pfWludmVydCgpe3JldHVybiBuZXcgQWRkTWFya1N0ZXAodGhpcy5mcm9tLHRoaXMudG8sdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLG49ZS5tYXBSZXN1bHQodGhpcy50bywtMSk7cmV0dXJuIHQuZGVsZXRlZCYmbi5kZWxldGVkfHx0LnBvcz49bi5wb3M/bnVsbDpuZXcgUmVtb3ZlTWFya1N0ZXAodC5wb3Msbi5wb3MsdGhpcy5tYXJrKX1tZXJnZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlbW92ZU1hcmtTdGVwJiZlLm1hcmsuZXEodGhpcy5tYXJrKSYmdGhpcy5mcm9tPD1lLnRvJiZ0aGlzLnRvPj1lLmZyb20/bmV3IFJlbW92ZU1hcmtTdGVwKE1hdGgubWluKHRoaXMuZnJvbSxlLmZyb20pLE1hdGgubWF4KHRoaXMudG8sZS50byksdGhpcy5tYXJrKTpudWxsfXRvSlNPTigpe3JldHVybntzdGVwVHlwZToicmVtb3ZlTWFyayIsbWFyazp0aGlzLm1hcmsudG9KU09OKCksZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b319c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LmZyb218fCJudW1iZXIiIT10eXBlb2YgdC50byl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgUmVtb3ZlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IFJlbW92ZU1hcmtTdGVwKHQuZnJvbSx0LnRvLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1TdGVwLmpzb25JRCgicmVtb3ZlTWFyayIsUmVtb3ZlTWFya1N0ZXApO2NsYXNzIEFkZE5vZGVNYXJrU3RlcCBleHRlbmRzIFN0ZXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMucG9zPWUsdGhpcy5tYXJrPXR9YXBwbHkoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKCF0KXJldHVybiBTdGVwUmVzdWx0LmZhaWwoIk5vIG5vZGUgYXQgbWFyayBzdGVwJ3MgcG9zaXRpb24iKTtsZXQgbj10LnR5cGUuY3JlYXRlKHQuYXR0cnMsbnVsbCx0aGlzLm1hcmsuYWRkVG9TZXQodC5tYXJrcykpO3JldHVybiBTdGVwUmVzdWx0LmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShuKSwwLHQuaXNMZWFmPzA6MSkpfWludmVydChlKXtsZXQgdD1lLm5vZGVBdCh0aGlzLnBvcyk7aWYodCl7bGV0IGU9dGhpcy5tYXJrLmFkZFRvU2V0KHQubWFya3MpO2lmKGUubGVuZ3RoPT10Lm1hcmtzLmxlbmd0aCl7Zm9yKGxldCBuPTA7bjx0Lm1hcmtzLmxlbmd0aDtuKyspaWYoIXQubWFya3Nbbl0uaXNJblNldChlKSlyZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0Lm1hcmtzW25dKTtyZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0aGlzLm1hcmspfX1yZXR1cm4gbmV3IFJlbW92ZU5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0aGlzLm1hcmspfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLnBvcywxKTtyZXR1cm4gdC5kZWxldGVkQWZ0ZXI/bnVsbDpuZXcgQWRkTm9kZU1hcmtTdGVwKHQucG9zLHRoaXMubWFyayl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhZGROb2RlTWFyayIscG9zOnRoaXMucG9zLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQucG9zKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBBZGROb2RlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0LnBvcyxlLm1hcmtGcm9tSlNPTih0Lm1hcmspKX19U3RlcC5qc29uSUQoImFkZE5vZGVNYXJrIixBZGROb2RlTWFya1N0ZXApO2NsYXNzIFJlbW92ZU5vZGVNYXJrU3RlcCBleHRlbmRzIFN0ZXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMucG9zPWUsdGhpcy5tYXJrPXR9YXBwbHkoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKCF0KXJldHVybiBTdGVwUmVzdWx0LmZhaWwoIk5vIG5vZGUgYXQgbWFyayBzdGVwJ3MgcG9zaXRpb24iKTtsZXQgbj10LnR5cGUuY3JlYXRlKHQuYXR0cnMsbnVsbCx0aGlzLm1hcmsucmVtb3ZlRnJvbVNldCh0Lm1hcmtzKSk7cmV0dXJuIFN0ZXBSZXN1bHQuZnJvbVJlcGxhY2UoZSx0aGlzLnBvcyx0aGlzLnBvcysxLG5ldyBTbGljZShGcmFnbWVudC5mcm9tKG4pLDAsdC5pc0xlYWY/MDoxKSl9aW52ZXJ0KGUpe2xldCB0PWUubm9kZUF0KHRoaXMucG9zKTtyZXR1cm4gdCYmdGhpcy5tYXJrLmlzSW5TZXQodC5tYXJrcyk/bmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0aGlzLm1hcmspOnRoaXN9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMucG9zLDEpO3JldHVybiB0LmRlbGV0ZWRBZnRlcj9udWxsOm5ldyBSZW1vdmVOb2RlTWFya1N0ZXAodC5wb3MsdGhpcy5tYXJrKX10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6InJlbW92ZU5vZGVNYXJrIixwb3M6dGhpcy5wb3MsbWFyazp0aGlzLm1hcmsudG9KU09OKCl9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCJudW1iZXIiIT10eXBlb2YgdC5wb3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlbW92ZU5vZGVNYXJrU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUmVtb3ZlTm9kZU1hcmtTdGVwKHQucG9zLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1TdGVwLmpzb25JRCgicmVtb3ZlTm9kZU1hcmsiLFJlbW92ZU5vZGVNYXJrU3RlcCk7Y2xhc3MgUmVwbGFjZVN0ZXAgZXh0ZW5kcyBTdGVwe2NvbnN0cnVjdG9yKGUsdCxuLHI9ITEpe3N1cGVyKCksdGhpcy5mcm9tPWUsdGhpcy50bz10LHRoaXMuc2xpY2U9bix0aGlzLnN0cnVjdHVyZT1yfWFwcGx5KGUpe3JldHVybiB0aGlzLnN0cnVjdHVyZSYmY29udGVudEJldHdlZW4oZSx0aGlzLmZyb20sdGhpcy50byk/U3RlcFJlc3VsdC5mYWlsKCJTdHJ1Y3R1cmUgcmVwbGFjZSB3b3VsZCBvdmVyd3JpdGUgY29udGVudCIpOlN0ZXBSZXN1bHQuZnJvbVJlcGxhY2UoZSx0aGlzLmZyb20sdGhpcy50byx0aGlzLnNsaWNlKX1nZXRNYXAoKXtyZXR1cm4gbmV3IFN0ZXBNYXAoW3RoaXMuZnJvbSx0aGlzLnRvLXRoaXMuZnJvbSx0aGlzLnNsaWNlLnNpemVdKX1pbnZlcnQoZSl7cmV0dXJuIG5ldyBSZXBsYWNlU3RlcCh0aGlzLmZyb20sdGhpcy5mcm9tK3RoaXMuc2xpY2Uuc2l6ZSxlLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvKSl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMudG8sLTEpLG49dGhpcy5mcm9tPT10aGlzLnRvJiZSZXBsYWNlU3RlcC5NQVBfQklBUzwwP3Q6ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpO3JldHVybiBuLmRlbGV0ZWRBY3Jvc3MmJnQuZGVsZXRlZEFjcm9zcz9udWxsOm5ldyBSZXBsYWNlU3RlcChuLnBvcyxNYXRoLm1heChuLnBvcyx0LnBvcyksdGhpcy5zbGljZSx0aGlzLnN0cnVjdHVyZSl9bWVyZ2UoZSl7aWYoIShlIGluc3RhbmNlb2YgUmVwbGFjZVN0ZXApfHxlLnN0cnVjdHVyZXx8dGhpcy5zdHJ1Y3R1cmUpcmV0dXJuIG51bGw7aWYodGhpcy5mcm9tK3RoaXMuc2xpY2Uuc2l6ZSE9ZS5mcm9tfHx0aGlzLnNsaWNlLm9wZW5FbmR8fGUuc2xpY2Uub3BlblN0YXJ0KXtpZihlLnRvIT10aGlzLmZyb218fHRoaXMuc2xpY2Uub3BlblN0YXJ0fHxlLnNsaWNlLm9wZW5FbmQpcmV0dXJuIG51bGw7e2xldCB0PXRoaXMuc2xpY2Uuc2l6ZStlLnNsaWNlLnNpemU9PTA/U2xpY2UuZW1wdHk6bmV3IFNsaWNlKGUuc2xpY2UuY29udGVudC5hcHBlbmQodGhpcy5zbGljZS5jb250ZW50KSxlLnNsaWNlLm9wZW5TdGFydCx0aGlzLnNsaWNlLm9wZW5FbmQpO3JldHVybiBuZXcgUmVwbGFjZVN0ZXAoZS5mcm9tLHRoaXMudG8sdCx0aGlzLnN0cnVjdHVyZSl9fXtsZXQgdD10aGlzLnNsaWNlLnNpemUrZS5zbGljZS5zaXplPT0wP1NsaWNlLmVtcHR5Om5ldyBTbGljZSh0aGlzLnNsaWNlLmNvbnRlbnQuYXBwZW5kKGUuc2xpY2UuY29udGVudCksdGhpcy5zbGljZS5vcGVuU3RhcnQsZS5zbGljZS5vcGVuRW5kKTtyZXR1cm4gbmV3IFJlcGxhY2VTdGVwKHRoaXMuZnJvbSx0aGlzLnRvKyhlLnRvLWUuZnJvbSksdCx0aGlzLnN0cnVjdHVyZSl9fXRvSlNPTigpe2xldCBlPXtzdGVwVHlwZToicmVwbGFjZSIsZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b307cmV0dXJuIHRoaXMuc2xpY2Uuc2l6ZSYmKGUuc2xpY2U9dGhpcy5zbGljZS50b0pTT04oKSksdGhpcy5zdHJ1Y3R1cmUmJihlLnN0cnVjdHVyZT0hMCksZX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQuZnJvbXx8Im51bWJlciIhPXR5cGVvZiB0LnRvKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBSZXBsYWNlU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUmVwbGFjZVN0ZXAodC5mcm9tLHQudG8sU2xpY2UuZnJvbUpTT04oZSx0LnNsaWNlKSwhIXQuc3RydWN0dXJlKX19UmVwbGFjZVN0ZXAuTUFQX0JJQVM9MSxTdGVwLmpzb25JRCgicmVwbGFjZSIsUmVwbGFjZVN0ZXApO2NsYXNzIFJlcGxhY2VBcm91bmRTdGVwIGV4dGVuZHMgU3RlcHtjb25zdHJ1Y3RvcihlLHQsbixyLG8saSxzPSExKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLmdhcEZyb209bix0aGlzLmdhcFRvPXIsdGhpcy5zbGljZT1vLHRoaXMuaW5zZXJ0PWksdGhpcy5zdHJ1Y3R1cmU9c31hcHBseShlKXtpZih0aGlzLnN0cnVjdHVyZSYmKGNvbnRlbnRCZXR3ZWVuKGUsdGhpcy5mcm9tLHRoaXMuZ2FwRnJvbSl8fGNvbnRlbnRCZXR3ZWVuKGUsdGhpcy5nYXBUbyx0aGlzLnRvKSkpcmV0dXJuIFN0ZXBSZXN1bHQuZmFpbCgiU3RydWN0dXJlIGdhcC1yZXBsYWNlIHdvdWxkIG92ZXJ3cml0ZSBjb250ZW50Iik7bGV0IHQ9ZS5zbGljZSh0aGlzLmdhcEZyb20sdGhpcy5nYXBUbyk7aWYodC5vcGVuU3RhcnR8fHQub3BlbkVuZClyZXR1cm4gU3RlcFJlc3VsdC5mYWlsKCJHYXAgaXMgbm90IGEgZmxhdCByYW5nZSIpO2xldCBuPXRoaXMuc2xpY2UuaW5zZXJ0QXQodGhpcy5pbnNlcnQsdC5jb250ZW50KTtyZXR1cm4gbj9TdGVwUmVzdWx0LmZyb21SZXBsYWNlKGUsdGhpcy5mcm9tLHRoaXMudG8sbik6U3RlcFJlc3VsdC5mYWlsKCJDb250ZW50IGRvZXMgbm90IGZpdCBpbiBnYXAiKX1nZXRNYXAoKXtyZXR1cm4gbmV3IFN0ZXBNYXAoW3RoaXMuZnJvbSx0aGlzLmdhcEZyb20tdGhpcy5mcm9tLHRoaXMuaW5zZXJ0LHRoaXMuZ2FwVG8sdGhpcy50by10aGlzLmdhcFRvLHRoaXMuc2xpY2Uuc2l6ZS10aGlzLmluc2VydF0pfWludmVydChlKXtsZXQgdD10aGlzLmdhcFRvLXRoaXMuZ2FwRnJvbTtyZXR1cm4gbmV3IFJlcGxhY2VBcm91bmRTdGVwKHRoaXMuZnJvbSx0aGlzLmZyb20rdGhpcy5zbGljZS5zaXplK3QsdGhpcy5mcm9tK3RoaXMuaW5zZXJ0LHRoaXMuZnJvbSt0aGlzLmluc2VydCt0LGUuc2xpY2UodGhpcy5mcm9tLHRoaXMudG8pLnJlbW92ZUJldHdlZW4odGhpcy5nYXBGcm9tLXRoaXMuZnJvbSx0aGlzLmdhcFRvLXRoaXMuZnJvbSksdGhpcy5nYXBGcm9tLXRoaXMuZnJvbSx0aGlzLnN0cnVjdHVyZSl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMuZnJvbSwxKSxuPWUubWFwUmVzdWx0KHRoaXMudG8sLTEpLHI9dGhpcy5mcm9tPT10aGlzLmdhcEZyb20/dC5wb3M6ZS5tYXAodGhpcy5nYXBGcm9tLC0xKSxvPXRoaXMudG89PXRoaXMuZ2FwVG8/bi5wb3M6ZS5tYXAodGhpcy5nYXBUbywxKTtyZXR1cm4gdC5kZWxldGVkQWNyb3NzJiZuLmRlbGV0ZWRBY3Jvc3N8fHI8dC5wb3N8fG8+bi5wb3M/bnVsbDpuZXcgUmVwbGFjZUFyb3VuZFN0ZXAodC5wb3Msbi5wb3MscixvLHRoaXMuc2xpY2UsdGhpcy5pbnNlcnQsdGhpcy5zdHJ1Y3R1cmUpfXRvSlNPTigpe2xldCBlPXtzdGVwVHlwZToicmVwbGFjZUFyb3VuZCIsZnJvbTp0aGlzLmZyb20sdG86dGhpcy50byxnYXBGcm9tOnRoaXMuZ2FwRnJvbSxnYXBUbzp0aGlzLmdhcFRvLGluc2VydDp0aGlzLmluc2VydH07cmV0dXJuIHRoaXMuc2xpY2Uuc2l6ZSYmKGUuc2xpY2U9dGhpcy5zbGljZS50b0pTT04oKSksdGhpcy5zdHJ1Y3R1cmUmJihlLnN0cnVjdHVyZT0hMCksZX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQuZnJvbXx8Im51bWJlciIhPXR5cGVvZiB0LnRvfHwibnVtYmVyIiE9dHlwZW9mIHQuZ2FwRnJvbXx8Im51bWJlciIhPXR5cGVvZiB0LmdhcFRvfHwibnVtYmVyIiE9dHlwZW9mIHQuaW5zZXJ0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBSZXBsYWNlQXJvdW5kU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUmVwbGFjZUFyb3VuZFN0ZXAodC5mcm9tLHQudG8sdC5nYXBGcm9tLHQuZ2FwVG8sU2xpY2UuZnJvbUpTT04oZSx0LnNsaWNlKSx0Lmluc2VydCwhIXQuc3RydWN0dXJlKX19ZnVuY3Rpb24gY29udGVudEJldHdlZW4oZSx0LG4pe2xldCByPWUucmVzb2x2ZSh0KSxvPW4tdCxpPXIuZGVwdGg7Zm9yKDtvPjAmJmk+MCYmci5pbmRleEFmdGVyKGkpPT1yLm5vZGUoaSkuY2hpbGRDb3VudDspaS0tLG8tLTtpZihvPjApe2xldCBlPXIubm9kZShpKS5tYXliZUNoaWxkKHIuaW5kZXhBZnRlcihpKSk7Zm9yKDtvPjA7KXtpZighZXx8ZS5pc0xlYWYpcmV0dXJuITA7ZT1lLmZpcnN0Q2hpbGQsby0tfX1yZXR1cm4hMX1mdW5jdGlvbiBjbGVhckluY29tcGF0aWJsZShlLHQsbixyPW4uY29udGVudE1hdGNoLG89ITApe2xldCBpPWUuZG9jLm5vZGVBdCh0KSxzPVtdLGw9dCsxO2ZvcihsZXQgdD0wO3Q8aS5jaGlsZENvdW50O3QrKyl7bGV0IGE9aS5jaGlsZCh0KSxjPWwrYS5ub2RlU2l6ZSxkPXIubWF0Y2hUeXBlKGEudHlwZSk7aWYoZCl7cj1kO2ZvcihsZXQgdD0wO3Q8YS5tYXJrcy5sZW5ndGg7dCsrKW4uYWxsb3dzTWFya1R5cGUoYS5tYXJrc1t0XS50eXBlKXx8ZS5zdGVwKG5ldyBSZW1vdmVNYXJrU3RlcChsLGMsYS5tYXJrc1t0XSkpO2lmKG8mJmEuaXNUZXh0JiYicHJlIiE9bi53aGl0ZXNwYWNlKXtsZXQgZSx0LHI9L1xyP1xufFxyL2c7Zm9yKDtlPXIuZXhlYyhhLnRleHQpOyl0fHwodD1uZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShuLnNjaGVtYS50ZXh0KCIgIixuLmFsbG93ZWRNYXJrcyhhLm1hcmtzKSkpLDAsMCkpLHMucHVzaChuZXcgUmVwbGFjZVN0ZXAobCtlLmluZGV4LGwrZS5pbmRleCtlWzBdLmxlbmd0aCx0KSl9fWVsc2Ugcy5wdXNoKG5ldyBSZXBsYWNlU3RlcChsLGMsU2xpY2UuZW1wdHkpKTtsPWN9aWYoIXIudmFsaWRFbmQpe2xldCB0PXIuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCk7ZS5yZXBsYWNlKGwsbCxuZXcgU2xpY2UodCwwLDApKX1mb3IobGV0IHQ9cy5sZW5ndGgtMTt0Pj0wO3QtLSllLnN0ZXAoc1t0XSl9ZnVuY3Rpb24gY2FuQ3V0KGUsdCxuKXtyZXR1cm4oMD09dHx8ZS5jYW5SZXBsYWNlKHQsZS5jaGlsZENvdW50KSkmJihuPT1lLmNoaWxkQ291bnR8fGUuY2FuUmVwbGFjZSgwLG4pKX1mdW5jdGlvbiBsaWZ0VGFyZ2V0KGUpe2xldCB0PWUucGFyZW50LmNvbnRlbnQuY3V0QnlJbmRleChlLnN0YXJ0SW5kZXgsZS5lbmRJbmRleCk7Zm9yKGxldCBuPWUuZGVwdGgscj0wLG89MDs7LS1uKXtsZXQgaT1lLiRmcm9tLm5vZGUobikscz1lLiRmcm9tLmluZGV4KG4pK3IsbD1lLiR0by5pbmRleEFmdGVyKG4pLW87aWYobjxlLmRlcHRoJiZpLmNhblJlcGxhY2UocyxsLHQpKXJldHVybiBuO2lmKDA9PW58fGkudHlwZS5zcGVjLmlzb2xhdGluZ3x8IWNhbkN1dChpLHMsbCkpYnJlYWs7cyYmKHI9MSksbDxpLmNoaWxkQ291bnQmJihvPTEpfXJldHVybiBudWxsfWZ1bmN0aW9uIGZpbmRXcmFwcGluZyhlLHQsbj1udWxsLHI9ZSl7bGV0IG89ZnVuY3Rpb24oZSx0KXtsZXR7cGFyZW50Om4sc3RhcnRJbmRleDpyLGVuZEluZGV4Om99PWUsaT1uLmNvbnRlbnRNYXRjaEF0KHIpLmZpbmRXcmFwcGluZyh0KTtpZighaSlyZXR1cm4gbnVsbDtsZXQgcz1pLmxlbmd0aD9pWzBdOnQ7cmV0dXJuIG4uY2FuUmVwbGFjZVdpdGgocixvLHMpP2k6bnVsbH0oZSx0KSxpPW8mJmZ1bmN0aW9uKGUsdCl7bGV0e3BhcmVudDpuLHN0YXJ0SW5kZXg6cixlbmRJbmRleDpvfT1lLGk9bi5jaGlsZChyKSxzPXQuY29udGVudE1hdGNoLmZpbmRXcmFwcGluZyhpLnR5cGUpO2lmKCFzKXJldHVybiBudWxsO2xldCBsPShzLmxlbmd0aD9zW3MubGVuZ3RoLTFdOnQpLmNvbnRlbnRNYXRjaDtmb3IobGV0IGU9cjtsJiZlPG87ZSsrKWw9bC5tYXRjaFR5cGUobi5jaGlsZChlKS50eXBlKTtyZXR1cm4gbCYmbC52YWxpZEVuZD9zOm51bGx9KHIsdCk7cmV0dXJuIGk/by5tYXAod2l0aEF0dHJzKS5jb25jYXQoe3R5cGU6dCxhdHRyczpufSkuY29uY2F0KGkubWFwKHdpdGhBdHRycykpOm51bGx9ZnVuY3Rpb24gd2l0aEF0dHJzKGUpe3JldHVybnt0eXBlOmUsYXR0cnM6bnVsbH19ZnVuY3Rpb24gcmVwbGFjZU5ld2xpbmVzKGUsdCxuLHIpe3QuZm9yRWFjaCgobyxpKT0+e2lmKG8uaXNUZXh0KXtsZXQgcyxsPS9ccj9cbnxcci9nO2Zvcig7cz1sLmV4ZWMoby50ZXh0KTspe2xldCBvPWUubWFwcGluZy5zbGljZShyKS5tYXAobisxK2krcy5pbmRleCk7ZS5yZXBsYWNlV2l0aChvLG8rMSx0LnR5cGUuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKX19fSl9ZnVuY3Rpb24gcmVwbGFjZUxpbmVicmVha3MoZSx0LG4scil7dC5mb3JFYWNoKChvLGkpPT57aWYoby50eXBlPT1vLnR5cGUuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50KXtsZXQgbz1lLm1hcHBpbmcuc2xpY2UocikubWFwKG4rMStpKTtlLnJlcGxhY2VXaXRoKG8sbysxLHQudHlwZS5zY2hlbWEudGV4dCgiXG4iKSl9fSl9ZnVuY3Rpb24gY2FuU3BsaXQoZSx0LG49MSxyKXtsZXQgbz1lLnJlc29sdmUodCksaT1vLmRlcHRoLW4scz1yJiZyW3IubGVuZ3RoLTFdfHxvLnBhcmVudDtpZihpPDB8fG8ucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmd8fCFvLnBhcmVudC5jYW5SZXBsYWNlKG8uaW5kZXgoKSxvLnBhcmVudC5jaGlsZENvdW50KXx8IXMudHlwZS52YWxpZENvbnRlbnQoby5wYXJlbnQuY29udGVudC5jdXRCeUluZGV4KG8uaW5kZXgoKSxvLnBhcmVudC5jaGlsZENvdW50KSkpcmV0dXJuITE7Zm9yKGxldCBlPW8uZGVwdGgtMSx0PW4tMjtlPmk7ZS0tLHQtLSl7bGV0IG49by5ub2RlKGUpLGk9by5pbmRleChlKTtpZihuLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IHM9bi5jb250ZW50LmN1dEJ5SW5kZXgoaSxuLmNoaWxkQ291bnQpLGw9ciYmclt0KzFdO2wmJihzPXMucmVwbGFjZUNoaWxkKDAsbC50eXBlLmNyZWF0ZShsLmF0dHJzKSkpO2xldCBhPXImJnJbdF18fG47aWYoIW4uY2FuUmVwbGFjZShpKzEsbi5jaGlsZENvdW50KXx8IWEudHlwZS52YWxpZENvbnRlbnQocykpcmV0dXJuITF9bGV0IGw9by5pbmRleEFmdGVyKGkpLGE9ciYmclswXTtyZXR1cm4gby5ub2RlKGkpLmNhblJlcGxhY2VXaXRoKGwsbCxhP2EudHlwZTpvLm5vZGUoaSsxKS50eXBlKX1mdW5jdGlvbiBjYW5Kb2luKGUsdCl7bGV0IG49ZS5yZXNvbHZlKHQpLHI9bi5pbmRleCgpO3JldHVybiBqb2luYWJsZShuLm5vZGVCZWZvcmUsbi5ub2RlQWZ0ZXIpJiZuLnBhcmVudC5jYW5SZXBsYWNlKHIscisxKX1mdW5jdGlvbiBqb2luYWJsZShlLHQpe3JldHVybiEoIWV8fCF0fHxlLmlzTGVhZnx8IWZ1bmN0aW9uKGUsdCl7dC5jb250ZW50LnNpemV8fGUudHlwZS5jb21wYXRpYmxlQ29udGVudCh0LnR5cGUpO2xldCBuPWUuY29udGVudE1hdGNoQXQoZS5jaGlsZENvdW50KSx7bGluZWJyZWFrUmVwbGFjZW1lbnQ6cn09ZS50eXBlLnNjaGVtYTtmb3IobGV0IG89MDtvPHQuY2hpbGRDb3VudDtvKyspe2xldCBpPXQuY2hpbGQobykscz1pLnR5cGU9PXI/ZS50eXBlLnNjaGVtYS5ub2Rlcy50ZXh0OmkudHlwZTtpZihuPW4ubWF0Y2hUeXBlKHMpLCFuKXJldHVybiExO2lmKCFlLnR5cGUuYWxsb3dzTWFya3MoaS5tYXJrcykpcmV0dXJuITF9cmV0dXJuIG4udmFsaWRFbmR9KGUsdCkpfWZ1bmN0aW9uIGpvaW5Qb2ludChlLHQsbj0tMSl7bGV0IHI9ZS5yZXNvbHZlKHQpO2ZvcihsZXQgZT1yLmRlcHRoOztlLS0pe2xldCBvLGkscz1yLmluZGV4KGUpO2lmKGU9PXIuZGVwdGg/KG89ci5ub2RlQmVmb3JlLGk9ci5ub2RlQWZ0ZXIpOm4+MD8obz1yLm5vZGUoZSsxKSxzKyssaT1yLm5vZGUoZSkubWF5YmVDaGlsZChzKSk6KG89ci5ub2RlKGUpLm1heWJlQ2hpbGQocy0xKSxpPXIubm9kZShlKzEpKSxvJiYhby5pc1RleHRibG9jayYmam9pbmFibGUobyxpKSYmci5ub2RlKGUpLmNhblJlcGxhY2UocyxzKzEpKXJldHVybiB0O2lmKDA9PWUpYnJlYWs7dD1uPDA/ci5iZWZvcmUoZSk6ci5hZnRlcihlKX19ZnVuY3Rpb24gZHJvcFBvaW50KGUsdCxuKXtsZXQgcj1lLnJlc29sdmUodCk7aWYoIW4uY29udGVudC5zaXplKXJldHVybiB0O2xldCBvPW4uY29udGVudDtmb3IobGV0IGU9MDtlPG4ub3BlblN0YXJ0O2UrKylvPW8uZmlyc3RDaGlsZC5jb250ZW50O2ZvcihsZXQgZT0xO2U8PSgwPT1uLm9wZW5TdGFydCYmbi5zaXplPzI6MSk7ZSsrKWZvcihsZXQgdD1yLmRlcHRoO3Q+PTA7dC0tKXtsZXQgbj10PT1yLmRlcHRoPzA6ci5wb3M8PShyLnN0YXJ0KHQrMSkrci5lbmQodCsxKSkvMj8tMToxLGk9ci5pbmRleCh0KSsobj4wPzE6MCkscz1yLm5vZGUodCksbD0hMTtpZigxPT1lKWw9cy5jYW5SZXBsYWNlKGksaSxvKTtlbHNle2xldCBlPXMuY29udGVudE1hdGNoQXQoaSkuZmluZFdyYXBwaW5nKG8uZmlyc3RDaGlsZC50eXBlKTtsPWUmJnMuY2FuUmVwbGFjZVdpdGgoaSxpLGVbMF0pfWlmKGwpcmV0dXJuIDA9PW4/ci5wb3M6bjwwP3IuYmVmb3JlKHQrMSk6ci5hZnRlcih0KzEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHJlcGxhY2VTdGVwKGUsdCxuPXQscj1TbGljZS5lbXB0eSl7aWYodD09biYmIXIuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgbz1lLnJlc29sdmUodCksaT1lLnJlc29sdmUobik7cmV0dXJuIGZpdHNUcml2aWFsbHkobyxpLHIpP25ldyBSZXBsYWNlU3RlcCh0LG4scik6bmV3IEZpdHRlcihvLGkscikuZml0KCl9ZnVuY3Rpb24gZml0c1RyaXZpYWxseShlLHQsbil7cmV0dXJuIW4ub3BlblN0YXJ0JiYhbi5vcGVuRW5kJiZlLnN0YXJ0KCk9PXQuc3RhcnQoKSYmZS5wYXJlbnQuY2FuUmVwbGFjZShlLmluZGV4KCksdC5pbmRleCgpLG4uY29udGVudCl9U3RlcC5qc29uSUQoInJlcGxhY2VBcm91bmQiLFJlcGxhY2VBcm91bmRTdGVwKTtjbGFzcyBGaXR0ZXJ7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuJGZyb209ZSx0aGlzLiR0bz10LHRoaXMudW5wbGFjZWQ9bix0aGlzLmZyb250aWVyPVtdLHRoaXMucGxhY2VkPUZyYWdtZW50LmVtcHR5O2ZvcihsZXQgdD0wO3Q8PWUuZGVwdGg7dCsrKXtsZXQgbj1lLm5vZGUodCk7dGhpcy5mcm9udGllci5wdXNoKHt0eXBlOm4udHlwZSxtYXRjaDpuLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcih0KSl9KX1mb3IobGV0IHQ9ZS5kZXB0aDt0PjA7dC0tKXRoaXMucGxhY2VkPUZyYWdtZW50LmZyb20oZS5ub2RlKHQpLmNvcHkodGhpcy5wbGFjZWQpKX1nZXQgZGVwdGgoKXtyZXR1cm4gdGhpcy5mcm9udGllci5sZW5ndGgtMX1maXQoKXtmb3IoO3RoaXMudW5wbGFjZWQuc2l6ZTspe2xldCBlPXRoaXMuZmluZEZpdHRhYmxlKCk7ZT90aGlzLnBsYWNlTm9kZXMoZSk6dGhpcy5vcGVuTW9yZSgpfHx0aGlzLmRyb3BOb2RlKCl9bGV0IGU9dGhpcy5tdXN0TW92ZUlubGluZSgpLHQ9dGhpcy5wbGFjZWQuc2l6ZS10aGlzLmRlcHRoLXRoaXMuJGZyb20uZGVwdGgsbj10aGlzLiRmcm9tLHI9dGhpcy5jbG9zZShlPDA/dGhpcy4kdG86bi5kb2MucmVzb2x2ZShlKSk7aWYoIXIpcmV0dXJuIG51bGw7bGV0IG89dGhpcy5wbGFjZWQsaT1uLmRlcHRoLHM9ci5kZXB0aDtmb3IoO2kmJnMmJjE9PW8uY2hpbGRDb3VudDspbz1vLmZpcnN0Q2hpbGQuY29udGVudCxpLS0scy0tO2xldCBsPW5ldyBTbGljZShvLGkscyk7cmV0dXJuIGU+LTE/bmV3IFJlcGxhY2VBcm91bmRTdGVwKG4ucG9zLGUsdGhpcy4kdG8ucG9zLHRoaXMuJHRvLmVuZCgpLGwsdCk6bC5zaXplfHxuLnBvcyE9dGhpcy4kdG8ucG9zP25ldyBSZXBsYWNlU3RlcChuLnBvcyxyLnBvcyxsKTpudWxsfWZpbmRGaXR0YWJsZSgpe2xldCBlPXRoaXMudW5wbGFjZWQub3BlblN0YXJ0O2ZvcihsZXQgdD10aGlzLnVucGxhY2VkLmNvbnRlbnQsbj0wLHI9dGhpcy51bnBsYWNlZC5vcGVuRW5kO248ZTtuKyspe2xldCBvPXQuZmlyc3RDaGlsZDtpZih0LmNoaWxkQ291bnQ+MSYmKHI9MCksby50eXBlLnNwZWMuaXNvbGF0aW5nJiZyPD1uKXtlPW47YnJlYWt9dD1vLmNvbnRlbnR9Zm9yKGxldCB0PTE7dDw9Mjt0KyspZm9yKGxldCBuPTE9PXQ/ZTp0aGlzLnVucGxhY2VkLm9wZW5TdGFydDtuPj0wO24tLSl7bGV0IGUscj1udWxsO24/KHI9Y29udGVudEF0KHRoaXMudW5wbGFjZWQuY29udGVudCxuLTEpLmZpcnN0Q2hpbGQsZT1yLmNvbnRlbnQpOmU9dGhpcy51bnBsYWNlZC5jb250ZW50O2xldCBvPWUuZmlyc3RDaGlsZDtmb3IobGV0IGU9dGhpcy5kZXB0aDtlPj0wO2UtLSl7bGV0IGkse3R5cGU6cyxtYXRjaDpsfT10aGlzLmZyb250aWVyW2VdLGE9bnVsbDtpZigxPT10JiYobz9sLm1hdGNoVHlwZShvLnR5cGUpfHwoYT1sLmZpbGxCZWZvcmUoRnJhZ21lbnQuZnJvbShvKSwhMSkpOnImJnMuY29tcGF0aWJsZUNvbnRlbnQoci50eXBlKSkpcmV0dXJue3NsaWNlRGVwdGg6bixmcm9udGllckRlcHRoOmUscGFyZW50OnIsaW5qZWN0OmF9O2lmKDI9PXQmJm8mJihpPWwuZmluZFdyYXBwaW5nKG8udHlwZSkpKXJldHVybntzbGljZURlcHRoOm4sZnJvbnRpZXJEZXB0aDplLHBhcmVudDpyLHdyYXA6aX07aWYociYmbC5tYXRjaFR5cGUoci50eXBlKSlicmVha319fW9wZW5Nb3JlKCl7bGV0e2NvbnRlbnQ6ZSxvcGVuU3RhcnQ6dCxvcGVuRW5kOm59PXRoaXMudW5wbGFjZWQscj1jb250ZW50QXQoZSx0KTtyZXR1cm4hKCFyLmNoaWxkQ291bnR8fHIuZmlyc3RDaGlsZC5pc0xlYWYpJiYodGhpcy51bnBsYWNlZD1uZXcgU2xpY2UoZSx0KzEsTWF0aC5tYXgobixyLnNpemUrdD49ZS5zaXplLW4/dCsxOjApKSwhMCl9ZHJvcE5vZGUoKXtsZXR7Y29udGVudDplLG9wZW5TdGFydDp0LG9wZW5FbmQ6bn09dGhpcy51bnBsYWNlZCxyPWNvbnRlbnRBdChlLHQpO2lmKHIuY2hpbGRDb3VudDw9MSYmdD4wKXtsZXQgbz1lLnNpemUtdDw9dCtyLnNpemU7dGhpcy51bnBsYWNlZD1uZXcgU2xpY2UoZHJvcEZyb21GcmFnbWVudChlLHQtMSwxKSx0LTEsbz90LTE6bil9ZWxzZSB0aGlzLnVucGxhY2VkPW5ldyBTbGljZShkcm9wRnJvbUZyYWdtZW50KGUsdCwxKSx0LG4pfXBsYWNlTm9kZXMoe3NsaWNlRGVwdGg6ZSxmcm9udGllckRlcHRoOnQscGFyZW50Om4saW5qZWN0OnIsd3JhcDpvfSl7Zm9yKDt0aGlzLmRlcHRoPnQ7KXRoaXMuY2xvc2VGcm9udGllck5vZGUoKTtpZihvKWZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXRoaXMub3BlbkZyb250aWVyTm9kZShvW2VdKTtsZXQgaT10aGlzLnVucGxhY2VkLHM9bj9uLmNvbnRlbnQ6aS5jb250ZW50LGw9aS5vcGVuU3RhcnQtZSxhPTAsYz1bXSx7bWF0Y2g6ZCx0eXBlOnB9PXRoaXMuZnJvbnRpZXJbdF07aWYocil7Zm9yKGxldCBlPTA7ZTxyLmNoaWxkQ291bnQ7ZSsrKWMucHVzaChyLmNoaWxkKGUpKTtkPWQubWF0Y2hGcmFnbWVudChyKX1sZXQgZj1zLnNpemUrZS0oaS5jb250ZW50LnNpemUtaS5vcGVuRW5kKTtmb3IoO2E8cy5jaGlsZENvdW50Oyl7bGV0IGU9cy5jaGlsZChhKSx0PWQubWF0Y2hUeXBlKGUudHlwZSk7aWYoIXQpYnJlYWs7YSsrLChhPjF8fDA9PWx8fGUuY29udGVudC5zaXplKSYmKGQ9dCxjLnB1c2goY2xvc2VOb2RlU3RhcnQoZS5tYXJrKHAuYWxsb3dlZE1hcmtzKGUubWFya3MpKSwxPT1hP2w6MCxhPT1zLmNoaWxkQ291bnQ/ZjotMSkpKX1sZXQgbT1hPT1zLmNoaWxkQ291bnQ7bXx8KGY9LTEpLHRoaXMucGxhY2VkPWFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsdCxGcmFnbWVudC5mcm9tKGMpKSx0aGlzLmZyb250aWVyW3RdLm1hdGNoPWQsbSYmZjwwJiZuJiZuLnR5cGU9PXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0udHlwZSYmdGhpcy5mcm9udGllci5sZW5ndGg+MSYmdGhpcy5jbG9zZUZyb250aWVyTm9kZSgpO2ZvcihsZXQgZT0wLHQ9cztlPGY7ZSsrKXtsZXQgZT10Lmxhc3RDaGlsZDt0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6ZS50eXBlLG1hdGNoOmUuY29udGVudE1hdGNoQXQoZS5jaGlsZENvdW50KX0pLHQ9ZS5jb250ZW50fXRoaXMudW5wbGFjZWQ9bT8wPT1lP1NsaWNlLmVtcHR5Om5ldyBTbGljZShkcm9wRnJvbUZyYWdtZW50KGkuY29udGVudCxlLTEsMSksZS0xLGY8MD9pLm9wZW5FbmQ6ZS0xKTpuZXcgU2xpY2UoZHJvcEZyb21GcmFnbWVudChpLmNvbnRlbnQsZSxhKSxpLm9wZW5TdGFydCxpLm9wZW5FbmQpfW11c3RNb3ZlSW5saW5lKCl7aWYoIXRoaXMuJHRvLnBhcmVudC5pc1RleHRibG9jaylyZXR1cm4tMTtsZXQgZSx0PXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF07aWYoIXQudHlwZS5pc1RleHRibG9ja3x8IWNvbnRlbnRBZnRlckZpdHModGhpcy4kdG8sdGhpcy4kdG8uZGVwdGgsdC50eXBlLHQubWF0Y2gsITEpfHx0aGlzLiR0by5kZXB0aD09dGhpcy5kZXB0aCYmKGU9dGhpcy5maW5kQ2xvc2VMZXZlbCh0aGlzLiR0bykpJiZlLmRlcHRoPT10aGlzLmRlcHRoKXJldHVybi0xO2xldHtkZXB0aDpufT10aGlzLiR0byxyPXRoaXMuJHRvLmFmdGVyKG4pO2Zvcig7bj4xJiZyPT10aGlzLiR0by5lbmQoLS1uKTspKytyO3JldHVybiByfWZpbmRDbG9zZUxldmVsKGUpe2U6Zm9yKGxldCB0PU1hdGgubWluKHRoaXMuZGVwdGgsZS5kZXB0aCk7dD49MDt0LS0pe2xldHttYXRjaDpuLHR5cGU6cn09dGhpcy5mcm9udGllclt0XSxvPXQ8ZS5kZXB0aCYmZS5lbmQodCsxKT09ZS5wb3MrKGUuZGVwdGgtKHQrMSkpLGk9Y29udGVudEFmdGVyRml0cyhlLHQscixuLG8pO2lmKGkpe2ZvcihsZXQgbj10LTE7bj49MDtuLS0pe2xldHttYXRjaDp0LHR5cGU6cn09dGhpcy5mcm9udGllcltuXSxvPWNvbnRlbnRBZnRlckZpdHMoZSxuLHIsdCwhMCk7aWYoIW98fG8uY2hpbGRDb3VudCljb250aW51ZSBlfXJldHVybntkZXB0aDp0LGZpdDppLG1vdmU6bz9lLmRvYy5yZXNvbHZlKGUuYWZ0ZXIodCsxKSk6ZX19fX1jbG9zZShlKXtsZXQgdD10aGlzLmZpbmRDbG9zZUxldmVsKGUpO2lmKCF0KXJldHVybiBudWxsO2Zvcig7dGhpcy5kZXB0aD50LmRlcHRoOyl0aGlzLmNsb3NlRnJvbnRpZXJOb2RlKCk7dC5maXQuY2hpbGRDb3VudCYmKHRoaXMucGxhY2VkPWFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsdC5kZXB0aCx0LmZpdCkpLGU9dC5tb3ZlO2ZvcihsZXQgbj10LmRlcHRoKzE7bjw9ZS5kZXB0aDtuKyspe2xldCB0PWUubm9kZShuKSxyPXQudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZSh0LmNvbnRlbnQsITAsZS5pbmRleChuKSk7dGhpcy5vcGVuRnJvbnRpZXJOb2RlKHQudHlwZSx0LmF0dHJzLHIpfXJldHVybiBlfW9wZW5Gcm9udGllck5vZGUoZSx0PW51bGwsbil7bGV0IHI9dGhpcy5mcm9udGllclt0aGlzLmRlcHRoXTtyLm1hdGNoPXIubWF0Y2gubWF0Y2hUeXBlKGUpLHRoaXMucGxhY2VkPWFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsdGhpcy5kZXB0aCxGcmFnbWVudC5mcm9tKGUuY3JlYXRlKHQsbikpKSx0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6ZSxtYXRjaDplLmNvbnRlbnRNYXRjaH0pfWNsb3NlRnJvbnRpZXJOb2RlKCl7bGV0IGU9dGhpcy5mcm9udGllci5wb3AoKS5tYXRjaC5maWxsQmVmb3JlKEZyYWdtZW50LmVtcHR5LCEwKTtlLmNoaWxkQ291bnQmJih0aGlzLnBsYWNlZD1hZGRUb0ZyYWdtZW50KHRoaXMucGxhY2VkLHRoaXMuZnJvbnRpZXIubGVuZ3RoLGUpKX19ZnVuY3Rpb24gZHJvcEZyb21GcmFnbWVudChlLHQsbil7cmV0dXJuIDA9PXQ/ZS5jdXRCeUluZGV4KG4sZS5jaGlsZENvdW50KTplLnJlcGxhY2VDaGlsZCgwLGUuZmlyc3RDaGlsZC5jb3B5KGRyb3BGcm9tRnJhZ21lbnQoZS5maXJzdENoaWxkLmNvbnRlbnQsdC0xLG4pKSl9ZnVuY3Rpb24gYWRkVG9GcmFnbWVudChlLHQsbil7cmV0dXJuIDA9PXQ/ZS5hcHBlbmQobik6ZS5yZXBsYWNlQ2hpbGQoZS5jaGlsZENvdW50LTEsZS5sYXN0Q2hpbGQuY29weShhZGRUb0ZyYWdtZW50KGUubGFzdENoaWxkLmNvbnRlbnQsdC0xLG4pKSl9ZnVuY3Rpb24gY29udGVudEF0KGUsdCl7Zm9yKGxldCBuPTA7bjx0O24rKyllPWUuZmlyc3RDaGlsZC5jb250ZW50O3JldHVybiBlfWZ1bmN0aW9uIGNsb3NlTm9kZVN0YXJ0KGUsdCxuKXtpZih0PD0wKXJldHVybiBlO2xldCByPWUuY29udGVudDtyZXR1cm4gdD4xJiYocj1yLnJlcGxhY2VDaGlsZCgwLGNsb3NlTm9kZVN0YXJ0KHIuZmlyc3RDaGlsZCx0LTEsMT09ci5jaGlsZENvdW50P24tMTowKSkpLHQ+MCYmKHI9ZS50eXBlLmNvbnRlbnRNYXRjaC5maWxsQmVmb3JlKHIpLmFwcGVuZChyKSxuPD0wJiYocj1yLmFwcGVuZChlLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQocikuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCkpKSksZS5jb3B5KHIpfWZ1bmN0aW9uIGNvbnRlbnRBZnRlckZpdHMoZSx0LG4scixvKXtsZXQgaT1lLm5vZGUodCkscz1vP2UuaW5kZXhBZnRlcih0KTplLmluZGV4KHQpO2lmKHM9PWkuY2hpbGRDb3VudCYmIW4uY29tcGF0aWJsZUNvbnRlbnQoaS50eXBlKSlyZXR1cm4gbnVsbDtsZXQgbD1yLmZpbGxCZWZvcmUoaS5jb250ZW50LCEwLHMpO3JldHVybiBsJiYhZnVuY3Rpb24oZSx0LG4pe2ZvcihsZXQgcj1uO3I8dC5jaGlsZENvdW50O3IrKylpZighZS5hbGxvd3NNYXJrcyh0LmNoaWxkKHIpLm1hcmtzKSlyZXR1cm4hMDtyZXR1cm4hMX0obixpLmNvbnRlbnQscyk/bDpudWxsfWZ1bmN0aW9uIGRlZmluZXNDb250ZW50KGUpe3JldHVybiBlLnNwZWMuZGVmaW5pbmd8fGUuc3BlYy5kZWZpbmluZ0ZvckNvbnRlbnR9ZnVuY3Rpb24gY2xvc2VGcmFnbWVudChlLHQsbixyLG8pe2lmKHQ8bil7bGV0IG89ZS5maXJzdENoaWxkO2U9ZS5yZXBsYWNlQ2hpbGQoMCxvLmNvcHkoY2xvc2VGcmFnbWVudChvLmNvbnRlbnQsdCsxLG4scixvKSkpfWlmKHQ+cil7bGV0IHQ9by5jb250ZW50TWF0Y2hBdCgwKSxuPXQuZmlsbEJlZm9yZShlKS5hcHBlbmQoZSk7ZT1uLmFwcGVuZCh0Lm1hdGNoRnJhZ21lbnQobikuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCkpfXJldHVybiBlfWZ1bmN0aW9uIGNvdmVyZWREZXB0aHMoZSx0KXtsZXQgbj1bXTtmb3IobGV0IHI9TWF0aC5taW4oZS5kZXB0aCx0LmRlcHRoKTtyPj0wO3ItLSl7bGV0IG89ZS5zdGFydChyKTtpZihvPGUucG9zLShlLmRlcHRoLXIpfHx0LmVuZChyKT50LnBvcysodC5kZXB0aC1yKXx8ZS5ub2RlKHIpLnR5cGUuc3BlYy5pc29sYXRpbmd8fHQubm9kZShyKS50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrOyhvPT10LnN0YXJ0KHIpfHxyPT1lLmRlcHRoJiZyPT10LmRlcHRoJiZlLnBhcmVudC5pbmxpbmVDb250ZW50JiZ0LnBhcmVudC5pbmxpbmVDb250ZW50JiZyJiZ0LnN0YXJ0KHItMSk9PW8tMSkmJm4ucHVzaChyKX1yZXR1cm4gbn1jbGFzcyBBdHRyU3RlcCBleHRlbmRzIFN0ZXB7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCksdGhpcy5wb3M9ZSx0aGlzLmF0dHI9dCx0aGlzLnZhbHVlPW59YXBwbHkoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKCF0KXJldHVybiBTdGVwUmVzdWx0LmZhaWwoIk5vIG5vZGUgYXQgYXR0cmlidXRlIHN0ZXAncyBwb3NpdGlvbiIpO2xldCBuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlIGluIHQuYXR0cnMpbltlXT10LmF0dHJzW2VdO25bdGhpcy5hdHRyXT10aGlzLnZhbHVlO2xldCByPXQudHlwZS5jcmVhdGUobixudWxsLHQubWFya3MpO3JldHVybiBTdGVwUmVzdWx0LmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShyKSwwLHQuaXNMZWFmPzA6MSkpfWdldE1hcCgpe3JldHVybiBTdGVwTWFwLmVtcHR5fWludmVydChlKXtyZXR1cm4gbmV3IEF0dHJTdGVwKHRoaXMucG9zLHRoaXMuYXR0cixlLm5vZGVBdCh0aGlzLnBvcykuYXR0cnNbdGhpcy5hdHRyXSl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMucG9zLDEpO3JldHVybiB0LmRlbGV0ZWRBZnRlcj9udWxsOm5ldyBBdHRyU3RlcCh0LnBvcyx0aGlzLmF0dHIsdGhpcy52YWx1ZSl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhdHRyIixwb3M6dGhpcy5wb3MsYXR0cjp0aGlzLmF0dHIsdmFsdWU6dGhpcy52YWx1ZX19c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LnBvc3x8InN0cmluZyIhPXR5cGVvZiB0LmF0dHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEF0dHJTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyBBdHRyU3RlcCh0LnBvcyx0LmF0dHIsdC52YWx1ZSl9fVN0ZXAuanNvbklEKCJhdHRyIixBdHRyU3RlcCk7Y2xhc3MgRG9jQXR0clN0ZXAgZXh0ZW5kcyBTdGVwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLmF0dHI9ZSx0aGlzLnZhbHVlPXR9YXBwbHkoZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IG4gaW4gZS5hdHRycyl0W25dPWUuYXR0cnNbbl07dFt0aGlzLmF0dHJdPXRoaXMudmFsdWU7bGV0IG49ZS50eXBlLmNyZWF0ZSh0LGUuY29udGVudCxlLm1hcmtzKTtyZXR1cm4gU3RlcFJlc3VsdC5vayhuKX1nZXRNYXAoKXtyZXR1cm4gU3RlcE1hcC5lbXB0eX1pbnZlcnQoZSl7cmV0dXJuIG5ldyBEb2NBdHRyU3RlcCh0aGlzLmF0dHIsZS5hdHRyc1t0aGlzLmF0dHJdKX1tYXAoZSl7cmV0dXJuIHRoaXN9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJkb2NBdHRyIixhdHRyOnRoaXMuYXR0cix2YWx1ZTp0aGlzLnZhbHVlfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQuYXR0cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgRG9jQXR0clN0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IERvY0F0dHJTdGVwKHQuYXR0cix0LnZhbHVlKX19U3RlcC5qc29uSUQoImRvY0F0dHIiLERvY0F0dHJTdGVwKTtsZXQgdmU9Y2xhc3MgZXh0ZW5kcyBFcnJvcnt9O3ZlPWZ1bmN0aW9uIFRyYW5zZm9ybUVycm9yKGUpe2xldCB0PUVycm9yLmNhbGwodGhpcyxlKTtyZXR1cm4gdC5fX3Byb3RvX189VHJhbnNmb3JtRXJyb3IucHJvdG90eXBlLHR9LCh2ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj12ZSx2ZS5wcm90b3R5cGUubmFtZT0iVHJhbnNmb3JtRXJyb3IiO2NsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3RvcihlKXt0aGlzLmRvYz1lLHRoaXMuc3RlcHM9W10sdGhpcy5kb2NzPVtdLHRoaXMubWFwcGluZz1uZXcgTWFwcGluZ31nZXQgYmVmb3JlKCl7cmV0dXJuIHRoaXMuZG9jcy5sZW5ndGg/dGhpcy5kb2NzWzBdOnRoaXMuZG9jfXN0ZXAoZSl7bGV0IHQ9dGhpcy5tYXliZVN0ZXAoZSk7aWYodC5mYWlsZWQpdGhyb3cgbmV3IHZlKHQuZmFpbGVkKTtyZXR1cm4gdGhpc31tYXliZVN0ZXAoZSl7bGV0IHQ9ZS5hcHBseSh0aGlzLmRvYyk7cmV0dXJuIHQuZmFpbGVkfHx0aGlzLmFkZFN0ZXAoZSx0LmRvYyksdH1nZXQgZG9jQ2hhbmdlZCgpe3JldHVybiB0aGlzLnN0ZXBzLmxlbmd0aD4wfWNoYW5nZWRSYW5nZSgpe2xldCBlPTFlOSx0PS0xZTk7Zm9yKGxldCBuPTA7bjx0aGlzLm1hcHBpbmcubWFwcy5sZW5ndGg7bisrKXtsZXQgcj10aGlzLm1hcHBpbmcubWFwc1tuXTtuJiYoZT1yLm1hcChlLDEpLHQ9ci5tYXAodCwtMSkpLHIuZm9yRWFjaCgobixyLG8saSk9PntlPU1hdGgubWluKGUsbyksdD1NYXRoLm1heCh0LGkpfSl9cmV0dXJuIDFlOT09ZT9udWxsOntmcm9tOmUsdG86dH19YWRkU3RlcChlLHQpe3RoaXMuZG9jcy5wdXNoKHRoaXMuZG9jKSx0aGlzLnN0ZXBzLnB1c2goZSksdGhpcy5tYXBwaW5nLmFwcGVuZE1hcChlLmdldE1hcCgpKSx0aGlzLmRvYz10fXJlcGxhY2UoZSx0PWUsbj1TbGljZS5lbXB0eSl7bGV0IHI9cmVwbGFjZVN0ZXAodGhpcy5kb2MsZSx0LG4pO3JldHVybiByJiZ0aGlzLnN0ZXAociksdGhpc31yZXBsYWNlV2l0aChlLHQsbil7cmV0dXJuIHRoaXMucmVwbGFjZShlLHQsbmV3IFNsaWNlKEZyYWdtZW50LmZyb20obiksMCwwKSl9ZGVsZXRlKGUsdCl7cmV0dXJuIHRoaXMucmVwbGFjZShlLHQsU2xpY2UuZW1wdHkpfWluc2VydChlLHQpe3JldHVybiB0aGlzLnJlcGxhY2VXaXRoKGUsZSx0KX1yZXBsYWNlUmFuZ2UoZSx0LG4pe3JldHVybiBmdW5jdGlvbihlLHQsbixyKXtpZighci5zaXplKXJldHVybiBlLmRlbGV0ZVJhbmdlKHQsbik7bGV0IG89ZS5kb2MucmVzb2x2ZSh0KSxpPWUuZG9jLnJlc29sdmUobik7aWYoZml0c1RyaXZpYWxseShvLGkscikpcmV0dXJuIGUuc3RlcChuZXcgUmVwbGFjZVN0ZXAodCxuLHIpKTtsZXQgcz1jb3ZlcmVkRGVwdGhzKG8saSk7MD09c1tzLmxlbmd0aC0xXSYmcy5wb3AoKTtsZXQgbD0tKG8uZGVwdGgrMSk7cy51bnNoaWZ0KGwpO2ZvcihsZXQgZT1vLmRlcHRoLHQ9by5wb3MtMTtlPjA7ZS0tLHQtLSl7bGV0IG49by5ub2RlKGUpLnR5cGUuc3BlYztpZihuLmRlZmluaW5nfHxuLmRlZmluaW5nQXNDb250ZXh0fHxuLmlzb2xhdGluZylicmVhaztzLmluZGV4T2YoZSk+LTE/bD1lOm8uYmVmb3JlKGUpPT10JiZzLnNwbGljZSgxLDAsLWUpfWxldCBhPXMuaW5kZXhPZihsKSxjPVtdLGQ9ci5vcGVuU3RhcnQ7Zm9yKGxldCBlPXIuY29udGVudCx0PTA7O3QrKyl7bGV0IG49ZS5maXJzdENoaWxkO2lmKGMucHVzaChuKSx0PT1yLm9wZW5TdGFydClicmVhaztlPW4uY29udGVudH1mb3IobGV0IGU9ZC0xO2U+PTA7ZS0tKXtsZXQgdD1jW2VdLG49ZGVmaW5lc0NvbnRlbnQodC50eXBlKTtpZihuJiYhdC5zYW1lTWFya3VwKG8ubm9kZShNYXRoLmFicyhsKS0xKSkpZD1lO2Vsc2UgaWYobnx8IXQudHlwZS5pc1RleHRibG9jaylicmVha31mb3IobGV0IHQ9ci5vcGVuU3RhcnQ7dD49MDt0LS0pe2xldCBsPSh0K2QrMSklKHIub3BlblN0YXJ0KzEpLHA9Y1tsXTtpZihwKWZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKXtsZXQgYz1zWyh0K2EpJXMubGVuZ3RoXSxkPSEwO2M8MCYmKGQ9ITEsYz0tYyk7bGV0IGY9by5ub2RlKGMtMSksbT1vLmluZGV4KGMtMSk7aWYoZi5jYW5SZXBsYWNlV2l0aChtLG0scC50eXBlLHAubWFya3MpKXJldHVybiBlLnJlcGxhY2Uoby5iZWZvcmUoYyksZD9pLmFmdGVyKGMpOm4sbmV3IFNsaWNlKGNsb3NlRnJhZ21lbnQoci5jb250ZW50LDAsci5vcGVuU3RhcnQsbCksbCxyLm9wZW5FbmQpKX19bGV0IHA9ZS5zdGVwcy5sZW5ndGg7Zm9yKGxldCBsPXMubGVuZ3RoLTE7bD49MCYmKGUucmVwbGFjZSh0LG4sciksIShlLnN0ZXBzLmxlbmd0aD5wKSk7bC0tKXtsZXQgZT1zW2xdO2U8MHx8KHQ9by5iZWZvcmUoZSksbj1pLmFmdGVyKGUpKX19KHRoaXMsZSx0LG4pLHRoaXN9cmVwbGFjZVJhbmdlV2l0aChlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFyLmlzSW5saW5lJiZ0PT1uJiZlLmRvYy5yZXNvbHZlKHQpLnBhcmVudC5jb250ZW50LnNpemUpe2xldCBvPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLnJlc29sdmUodCk7aWYoci5wYXJlbnQuY2FuUmVwbGFjZVdpdGgoci5pbmRleCgpLHIuaW5kZXgoKSxuKSlyZXR1cm4gdDtpZigwPT1yLnBhcmVudE9mZnNldClmb3IobGV0IGU9ci5kZXB0aC0xO2U+PTA7ZS0tKXtsZXQgdD1yLmluZGV4KGUpO2lmKHIubm9kZShlKS5jYW5SZXBsYWNlV2l0aCh0LHQsbikpcmV0dXJuIHIuYmVmb3JlKGUrMSk7aWYodD4wKXJldHVybiBudWxsfWlmKHIucGFyZW50T2Zmc2V0PT1yLnBhcmVudC5jb250ZW50LnNpemUpZm9yKGxldCBlPXIuZGVwdGgtMTtlPj0wO2UtLSl7bGV0IHQ9ci5pbmRleEFmdGVyKGUpO2lmKHIubm9kZShlKS5jYW5SZXBsYWNlV2l0aCh0LHQsbikpcmV0dXJuIHIuYWZ0ZXIoZSsxKTtpZih0PHIubm9kZShlKS5jaGlsZENvdW50KXJldHVybiBudWxsfXJldHVybiBudWxsfShlLmRvYyx0LHIudHlwZSk7bnVsbCE9byYmKHQ9bj1vKX1lLnJlcGxhY2VSYW5nZSh0LG4sbmV3IFNsaWNlKEZyYWdtZW50LmZyb20ociksMCwwKSl9KHRoaXMsZSx0LG4pLHRoaXN9ZGVsZXRlUmFuZ2UoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2xldCByPWUuZG9jLnJlc29sdmUodCksbz1lLmRvYy5yZXNvbHZlKG4pO2lmKHIucGFyZW50LmlzVGV4dGJsb2NrJiZvLnBhcmVudC5pc1RleHRibG9jayYmci5zdGFydCgpIT1vLnN0YXJ0KCkmJjA9PXIucGFyZW50T2Zmc2V0JiYwPT1vLnBhcmVudE9mZnNldCl7bGV0IGk9ci5zaGFyZWREZXB0aChuKSxzPSExO2ZvcihsZXQgZT1yLmRlcHRoO2U+aTtlLS0pci5ub2RlKGUpLnR5cGUuc3BlYy5pc29sYXRpbmcmJihzPSEwKTtmb3IobGV0IGU9by5kZXB0aDtlPmk7ZS0tKW8ubm9kZShlKS50eXBlLnNwZWMuaXNvbGF0aW5nJiYocz0hMCk7aWYoIXMpe2ZvcihsZXQgZT1yLmRlcHRoO2U+MCYmdD09ci5zdGFydChlKTtlLS0pdD1yLmJlZm9yZShlKTtmb3IobGV0IGU9by5kZXB0aDtlPjAmJm49PW8uc3RhcnQoZSk7ZS0tKW49by5iZWZvcmUoZSk7cj1lLmRvYy5yZXNvbHZlKHQpLG89ZS5kb2MucmVzb2x2ZShuKX19bGV0IGk9Y292ZXJlZERlcHRocyhyLG8pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgbj1pW3RdLHM9dD09aS5sZW5ndGgtMTtpZihzJiYwPT1ufHxyLm5vZGUobikudHlwZS5jb250ZW50TWF0Y2gudmFsaWRFbmQpcmV0dXJuIGUuZGVsZXRlKHIuc3RhcnQobiksby5lbmQobikpO2lmKG4+MCYmKHN8fHIubm9kZShuLTEpLmNhblJlcGxhY2Uoci5pbmRleChuLTEpLG8uaW5kZXhBZnRlcihuLTEpKSkpcmV0dXJuIGUuZGVsZXRlKHIuYmVmb3JlKG4pLG8uYWZ0ZXIobikpfWZvcihsZXQgaT0xO2k8PXIuZGVwdGgmJmk8PW8uZGVwdGg7aSsrKWlmKHQtci5zdGFydChpKT09ci5kZXB0aC1pJiZuPnIuZW5kKGkpJiZvLmVuZChpKS1uIT1vLmRlcHRoLWkmJnIuc3RhcnQoaS0xKT09by5zdGFydChpLTEpJiZyLm5vZGUoaS0xKS5jYW5SZXBsYWNlKHIuaW5kZXgoaS0xKSxvLmluZGV4KGktMSkpKXJldHVybiBlLmRlbGV0ZShyLmJlZm9yZShpKSxuKTtlLmRlbGV0ZSh0LG4pfSh0aGlzLGUsdCksdGhpc31saWZ0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtsZXR7JGZyb206ciwkdG86byxkZXB0aDppfT10LHM9ci5iZWZvcmUoaSsxKSxsPW8uYWZ0ZXIoaSsxKSxhPXMsYz1sLGQ9RnJhZ21lbnQuZW1wdHkscD0wO2ZvcihsZXQgZT1pLHQ9ITE7ZT5uO2UtLSl0fHxyLmluZGV4KGUpPjA/KHQ9ITAsZD1GcmFnbWVudC5mcm9tKHIubm9kZShlKS5jb3B5KGQpKSxwKyspOmEtLTtsZXQgZj1GcmFnbWVudC5lbXB0eSxtPTA7Zm9yKGxldCBlPWksdD0hMTtlPm47ZS0tKXR8fG8uYWZ0ZXIoZSsxKTxvLmVuZChlKT8odD0hMCxmPUZyYWdtZW50LmZyb20oby5ub2RlKGUpLmNvcHkoZikpLG0rKyk6YysrO2Uuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAoYSxjLHMsbCxuZXcgU2xpY2UoZC5hcHBlbmQoZikscCxtKSxkLnNpemUtcCwhMCkpfSh0aGlzLGUsdCksdGhpc31qb2luKGUsdD0xKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2xldCByPW51bGwse2xpbmVicmVha1JlcGxhY2VtZW50Om99PWUuZG9jLnR5cGUuc2NoZW1hLGk9ZS5kb2MucmVzb2x2ZSh0LW4pLHM9aS5ub2RlKCkudHlwZTtpZihvJiZzLmlubGluZUNvbnRlbnQpe2xldCBlPSJwcmUiPT1zLndoaXRlc3BhY2UsdD0hIXMuY29udGVudE1hdGNoLm1hdGNoVHlwZShvKTtlJiYhdD9yPSExOiFlJiZ0JiYocj0hMCl9bGV0IGw9ZS5zdGVwcy5sZW5ndGg7aWYoITE9PT1yKXtsZXQgcj1lLmRvYy5yZXNvbHZlKHQrbik7cmVwbGFjZUxpbmVicmVha3MoZSxyLm5vZGUoKSxyLmJlZm9yZSgpLGwpfXMuaW5saW5lQ29udGVudCYmY2xlYXJJbmNvbXBhdGlibGUoZSx0K24tMSxzLGkubm9kZSgpLmNvbnRlbnRNYXRjaEF0KGkuaW5kZXgoKSksbnVsbD09cik7bGV0IGE9ZS5tYXBwaW5nLnNsaWNlKGwpLGM9YS5tYXAodC1uKTtpZihlLnN0ZXAobmV3IFJlcGxhY2VTdGVwKGMsYS5tYXAodCtuLC0xKSxTbGljZS5lbXB0eSwhMCkpLCEwPT09cil7bGV0IHQ9ZS5kb2MucmVzb2x2ZShjKTtyZXBsYWNlTmV3bGluZXMoZSx0Lm5vZGUoKSx0LmJlZm9yZSgpLGUuc3RlcHMubGVuZ3RoKX19KHRoaXMsZSx0KSx0aGlzfXdyYXAoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2xldCByPUZyYWdtZW50LmVtcHR5O2ZvcihsZXQgZT1uLmxlbmd0aC0xO2U+PTA7ZS0tKXtpZihyLnNpemUpe2xldCB0PW5bZV0udHlwZS5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudChyKTtpZighdHx8IXQudmFsaWRFbmQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIldyYXBwZXIgdHlwZSBnaXZlbiB0byBUcmFuc2Zvcm0ud3JhcCBkb2VzIG5vdCBmb3JtIHZhbGlkIGNvbnRlbnQgb2YgaXRzIHBhcmVudCB3cmFwcGVyIil9cj1GcmFnbWVudC5mcm9tKG5bZV0udHlwZS5jcmVhdGUobltlXS5hdHRycyxyKSl9bGV0IG89dC5zdGFydCxpPXQuZW5kO2Uuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAobyxpLG8saSxuZXcgU2xpY2UociwwLDApLG4ubGVuZ3RoLCEwKSl9KHRoaXMsZSx0KSx0aGlzfXNldEJsb2NrVHlwZShlLHQ9ZSxuLHI9bnVsbCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoIXIuaXNUZXh0YmxvY2spdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlR5cGUgZ2l2ZW4gdG8gc2V0QmxvY2tUeXBlIHNob3VsZCBiZSBhIHRleHRibG9jayIpO2xldCBpPWUuc3RlcHMubGVuZ3RoO2UuZG9jLm5vZGVzQmV0d2Vlbih0LG4sKHQsbik9PntsZXQgcz0iZnVuY3Rpb24iPT10eXBlb2Ygbz9vKHQpOm87aWYodC5pc1RleHRibG9jayYmIXQuaGFzTWFya3VwKHIscykmJmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLnJlc29sdmUodCksbz1yLmluZGV4KCk7cmV0dXJuIHIucGFyZW50LmNhblJlcGxhY2VXaXRoKG8sbysxLG4pfShlLmRvYyxlLm1hcHBpbmcuc2xpY2UoaSkubWFwKG4pLHIpKXtsZXQgbz1udWxsO2lmKHIuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50KXtsZXQgZT0icHJlIj09ci53aGl0ZXNwYWNlLHQ9ISFyLmNvbnRlbnRNYXRjaC5tYXRjaFR5cGUoci5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpO2UmJiF0P289ITE6IWUmJnQmJihvPSEwKX0hMT09PW8mJnJlcGxhY2VMaW5lYnJlYWtzKGUsdCxuLGkpLGNsZWFySW5jb21wYXRpYmxlKGUsZS5tYXBwaW5nLnNsaWNlKGkpLm1hcChuLDEpLHIsdm9pZCAwLG51bGw9PT1vKTtsZXQgbD1lLm1hcHBpbmcuc2xpY2UoaSksYT1sLm1hcChuLDEpLGM9bC5tYXAobit0Lm5vZGVTaXplLDEpO3JldHVybiBlLnN0ZXAobmV3IFJlcGxhY2VBcm91bmRTdGVwKGEsYyxhKzEsYy0xLG5ldyBTbGljZShGcmFnbWVudC5mcm9tKHIuY3JlYXRlKHMsbnVsbCx0Lm1hcmtzKSksMCwwKSwxLCEwKSksITA9PT1vJiZyZXBsYWNlTmV3bGluZXMoZSx0LG4saSksITF9fSl9KHRoaXMsZSx0LG4sciksdGhpc31zZXROb2RlTWFya3VwKGUsdCxuPW51bGwscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7bGV0IGk9ZS5kb2Mubm9kZUF0KHQpO2lmKCFpKXRocm93IG5ldyBSYW5nZUVycm9yKCJObyBub2RlIGF0IGdpdmVuIHBvc2l0aW9uIik7bnx8KG49aS50eXBlKTtsZXQgcz1uLmNyZWF0ZShyLG51bGwsb3x8aS5tYXJrcyk7aWYoaS5pc0xlYWYpcmV0dXJuIGUucmVwbGFjZVdpdGgodCx0K2kubm9kZVNpemUscyk7aWYoIW4udmFsaWRDb250ZW50KGkuY29udGVudCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgY29udGVudCBmb3Igbm9kZSB0eXBlICIrbi5uYW1lKTtlLnN0ZXAobmV3IFJlcGxhY2VBcm91bmRTdGVwKHQsdCtpLm5vZGVTaXplLHQrMSx0K2kubm9kZVNpemUtMSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShzKSwwLDApLDEsITApKX0odGhpcyxlLHQsbixyKSx0aGlzfXNldE5vZGVBdHRyaWJ1dGUoZSx0LG4pe3JldHVybiB0aGlzLnN0ZXAobmV3IEF0dHJTdGVwKGUsdCxuKSksdGhpc31zZXREb2NBdHRyaWJ1dGUoZSx0KXtyZXR1cm4gdGhpcy5zdGVwKG5ldyBEb2NBdHRyU3RlcChlLHQpKSx0aGlzfWFkZE5vZGVNYXJrKGUsdCl7cmV0dXJuIHRoaXMuc3RlcChuZXcgQWRkTm9kZU1hcmtTdGVwKGUsdCkpLHRoaXN9cmVtb3ZlTm9kZU1hcmsoZSx0KXtsZXQgbj10aGlzLmRvYy5ub2RlQXQoZSk7aWYoIW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIG5vZGUgYXQgcG9zaXRpb24gIitlKTtpZih0IGluc3RhbmNlb2YgbGUpdC5pc0luU2V0KG4ubWFya3MpJiZ0aGlzLnN0ZXAobmV3IFJlbW92ZU5vZGVNYXJrU3RlcChlLHQpKTtlbHNle2xldCByLG89bi5tYXJrcyxpPVtdO2Zvcig7cj10LmlzSW5TZXQobyk7KWkucHVzaChuZXcgUmVtb3ZlTm9kZU1hcmtTdGVwKGUscikpLG89ci5yZW1vdmVGcm9tU2V0KG8pO2ZvcihsZXQgZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMuc3RlcChpW2VdKX1yZXR1cm4gdGhpc31zcGxpdChlLHQ9MSxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG49MSxyKXtsZXQgbz1lLmRvYy5yZXNvbHZlKHQpLGk9RnJhZ21lbnQuZW1wdHkscz1GcmFnbWVudC5lbXB0eTtmb3IobGV0IGU9by5kZXB0aCx0PW8uZGVwdGgtbixsPW4tMTtlPnQ7ZS0tLGwtLSl7aT1GcmFnbWVudC5mcm9tKG8ubm9kZShlKS5jb3B5KGkpKTtsZXQgdD1yJiZyW2xdO3M9RnJhZ21lbnQuZnJvbSh0P3QudHlwZS5jcmVhdGUodC5hdHRycyxzKTpvLm5vZGUoZSkuY29weShzKSl9ZS5zdGVwKG5ldyBSZXBsYWNlU3RlcCh0LHQsbmV3IFNsaWNlKGkuYXBwZW5kKHMpLG4sbiksITApKX0odGhpcyxlLHQsbiksdGhpc31hZGRNYXJrKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7bGV0IG8saSxzPVtdLGw9W107ZS5kb2Mubm9kZXNCZXR3ZWVuKHQsbiwoZSxhLGMpPT57aWYoIWUuaXNJbmxpbmUpcmV0dXJuO2xldCBkPWUubWFya3M7aWYoIXIuaXNJblNldChkKSYmYy50eXBlLmFsbG93c01hcmtUeXBlKHIudHlwZSkpe2xldCBjPU1hdGgubWF4KGEsdCkscD1NYXRoLm1pbihhK2Uubm9kZVNpemUsbiksZj1yLmFkZFRvU2V0KGQpO2ZvcihsZXQgZT0wO2U8ZC5sZW5ndGg7ZSsrKWRbZV0uaXNJblNldChmKXx8KG8mJm8udG89PWMmJm8ubWFyay5lcShkW2VdKT9vLnRvPXA6cy5wdXNoKG89bmV3IFJlbW92ZU1hcmtTdGVwKGMscCxkW2VdKSkpO2kmJmkudG89PWM/aS50bz1wOmwucHVzaChpPW5ldyBBZGRNYXJrU3RlcChjLHAscikpfX0pLHMuZm9yRWFjaCh0PT5lLnN0ZXAodCkpLGwuZm9yRWFjaCh0PT5lLnN0ZXAodCkpfSh0aGlzLGUsdCxuKSx0aGlzfXJlbW92ZU1hcmsoZSx0LG4pe3JldHVybiBmdW5jdGlvbihlLHQsbixyKXtsZXQgbz1bXSxpPTA7ZS5kb2Mubm9kZXNCZXR3ZWVuKHQsbiwoZSxzKT0+e2lmKCFlLmlzSW5saW5lKXJldHVybjtpKys7bGV0IGw9bnVsbDtpZihyIGluc3RhbmNlb2YgTWFya1R5cGUpe2xldCB0LG49ZS5tYXJrcztmb3IoO3Q9ci5pc0luU2V0KG4pOykobHx8KGw9W10pKS5wdXNoKHQpLG49dC5yZW1vdmVGcm9tU2V0KG4pfWVsc2Ugcj9yLmlzSW5TZXQoZS5tYXJrcykmJihsPVtyXSk6bD1lLm1hcmtzO2lmKGwmJmwubGVuZ3RoKXtsZXQgcj1NYXRoLm1pbihzK2Uubm9kZVNpemUsbik7Zm9yKGxldCBlPTA7ZTxsLmxlbmd0aDtlKyspe2xldCBuLGE9bFtlXTtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IHQ9b1tlXTt0LnN0ZXA9PWktMSYmYS5lcShvW2VdLnN0eWxlKSYmKG49dCl9bj8obi50bz1yLG4uc3RlcD1pKTpvLnB1c2goe3N0eWxlOmEsZnJvbTpNYXRoLm1heChzLHQpLHRvOnIsc3RlcDppfSl9fX0pLG8uZm9yRWFjaCh0PT5lLnN0ZXAobmV3IFJlbW92ZU1hcmtTdGVwKHQuZnJvbSx0LnRvLHQuc3R5bGUpKSl9KHRoaXMsZSx0LG4pLHRoaXN9Y2xlYXJJbmNvbXBhdGlibGUoZSx0LG4pe3JldHVybiBjbGVhckluY29tcGF0aWJsZSh0aGlzLGUsdCxuKSx0aGlzfX1jb25zdCB4ZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIFNlbGVjdGlvbntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy4kYW5jaG9yPWUsdGhpcy4kaGVhZD10LHRoaXMucmFuZ2VzPW58fFtuZXcgU2VsZWN0aW9uUmFuZ2UoZS5taW4odCksZS5tYXgodCkpXX1nZXQgYW5jaG9yKCl7cmV0dXJuIHRoaXMuJGFuY2hvci5wb3N9Z2V0IGhlYWQoKXtyZXR1cm4gdGhpcy4kaGVhZC5wb3N9Z2V0IGZyb20oKXtyZXR1cm4gdGhpcy4kZnJvbS5wb3N9Z2V0IHRvKCl7cmV0dXJuIHRoaXMuJHRvLnBvc31nZXQgJGZyb20oKXtyZXR1cm4gdGhpcy5yYW5nZXNbMF0uJGZyb219Z2V0ICR0bygpe3JldHVybiB0aGlzLnJhbmdlc1swXS4kdG99Z2V0IGVtcHR5KCl7bGV0IGU9dGhpcy5yYW5nZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS4kZnJvbS5wb3MhPWVbdF0uJHRvLnBvcylyZXR1cm4hMTtyZXR1cm4hMH1jb250ZW50KCl7cmV0dXJuIHRoaXMuJGZyb20uZG9jLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvLCEwKX1yZXBsYWNlKGUsdD1TbGljZS5lbXB0eSl7bGV0IG49dC5jb250ZW50Lmxhc3RDaGlsZCxyPW51bGw7Zm9yKGxldCBlPTA7ZTx0Lm9wZW5FbmQ7ZSsrKXI9bixuPW4ubGFzdENoaWxkO2xldCBvPWUuc3RlcHMubGVuZ3RoLGk9dGhpcy5yYW5nZXM7Zm9yKGxldCBzPTA7czxpLmxlbmd0aDtzKyspe2xldHskZnJvbTpsLCR0bzphfT1pW3NdLGM9ZS5tYXBwaW5nLnNsaWNlKG8pO2UucmVwbGFjZVJhbmdlKGMubWFwKGwucG9zKSxjLm1hcChhLnBvcykscz9TbGljZS5lbXB0eTp0KSwwPT1zJiZzZWxlY3Rpb25Ub0luc2VydGlvbkVuZCQxKGUsbywobj9uLmlzSW5saW5lOnImJnIuaXNUZXh0YmxvY2spPy0xOjEpfX1yZXBsYWNlV2l0aChlLHQpe2xldCBuPWUuc3RlcHMubGVuZ3RoLHI9dGhpcy5yYW5nZXM7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspe2xldHskZnJvbTppLCR0bzpzfT1yW29dLGw9ZS5tYXBwaW5nLnNsaWNlKG4pLGE9bC5tYXAoaS5wb3MpLGM9bC5tYXAocy5wb3MpO28/ZS5kZWxldGVSYW5nZShhLGMpOihlLnJlcGxhY2VSYW5nZVdpdGgoYSxjLHQpLHNlbGVjdGlvblRvSW5zZXJ0aW9uRW5kJDEoZSxuLHQuaXNJbmxpbmU/LTE6MSkpfX1zdGF0aWMgZmluZEZyb20oZSx0LG49ITEpe2xldCByPWUucGFyZW50LmlubGluZUNvbnRlbnQ/bmV3IFRleHRTZWxlY3Rpb24oZSk6ZmluZFNlbGVjdGlvbkluKGUubm9kZSgwKSxlLnBhcmVudCxlLnBvcyxlLmluZGV4KCksdCxuKTtpZihyKXJldHVybiByO2ZvcihsZXQgcj1lLmRlcHRoLTE7cj49MDtyLS0pe2xldCBvPXQ8MD9maW5kU2VsZWN0aW9uSW4oZS5ub2RlKDApLGUubm9kZShyKSxlLmJlZm9yZShyKzEpLGUuaW5kZXgociksdCxuKTpmaW5kU2VsZWN0aW9uSW4oZS5ub2RlKDApLGUubm9kZShyKSxlLmFmdGVyKHIrMSksZS5pbmRleChyKSsxLHQsbik7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH1zdGF0aWMgbmVhcihlLHQ9MSl7cmV0dXJuIHRoaXMuZmluZEZyb20oZSx0KXx8dGhpcy5maW5kRnJvbShlLC10KXx8bmV3IEFsbFNlbGVjdGlvbihlLm5vZGUoMCkpfXN0YXRpYyBhdFN0YXJ0KGUpe3JldHVybiBmaW5kU2VsZWN0aW9uSW4oZSxlLDAsMCwxKXx8bmV3IEFsbFNlbGVjdGlvbihlKX1zdGF0aWMgYXRFbmQoZSl7cmV0dXJuIGZpbmRTZWxlY3Rpb25JbihlLGUsZS5jb250ZW50LnNpemUsZS5jaGlsZENvdW50LC0xKXx8bmV3IEFsbFNlbGVjdGlvbihlKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZighdHx8IXQudHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgU2VsZWN0aW9uLmZyb21KU09OIik7bGV0IG49eGVbdC50eXBlXTtpZighbil0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gc2VsZWN0aW9uIHR5cGUgJHt0LnR5cGV9IGRlZmluZWRgKTtyZXR1cm4gbi5mcm9tSlNPTihlLHQpfXN0YXRpYyBqc29uSUQoZSx0KXtpZihlIGluIHhlKXRocm93IG5ldyBSYW5nZUVycm9yKCJEdXBsaWNhdGUgdXNlIG9mIHNlbGVjdGlvbiBKU09OIElEICIrZSk7cmV0dXJuIHhlW2VdPXQsdC5wcm90b3R5cGUuanNvbklEPWUsdH1nZXRCb29rbWFyaygpe3JldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4odGhpcy4kYW5jaG9yLHRoaXMuJGhlYWQpLmdldEJvb2ttYXJrKCl9fVNlbGVjdGlvbi5wcm90b3R5cGUudmlzaWJsZT0hMDtjbGFzcyBTZWxlY3Rpb25SYW5nZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuJGZyb209ZSx0aGlzLiR0bz10fX1sZXQgU2U9ITE7ZnVuY3Rpb24gY2hlY2tUZXh0U2VsZWN0aW9uKGUpe1NlfHxlLnBhcmVudC5pbmxpbmVDb250ZW50fHwoU2U9ITAsY29uc29sZS53YXJuKCJUZXh0U2VsZWN0aW9uIGVuZHBvaW50IG5vdCBwb2ludGluZyBpbnRvIGEgbm9kZSB3aXRoIGlubGluZSBjb250ZW50ICgiK2UucGFyZW50LnR5cGUubmFtZSsiKSIpKX1jbGFzcyBUZXh0U2VsZWN0aW9uIGV4dGVuZHMgU2VsZWN0aW9ue2NvbnN0cnVjdG9yKGUsdD1lKXtjaGVja1RleHRTZWxlY3Rpb24oZSksY2hlY2tUZXh0U2VsZWN0aW9uKHQpLHN1cGVyKGUsdCl9Z2V0ICRjdXJzb3IoKXtyZXR1cm4gdGhpcy4kYW5jaG9yLnBvcz09dGhpcy4kaGVhZC5wb3M/dGhpcy4kaGVhZDpudWxsfW1hcChlLHQpe2xldCBuPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLmhlYWQpKTtpZighbi5wYXJlbnQuaW5saW5lQ29udGVudClyZXR1cm4gU2VsZWN0aW9uLm5lYXIobik7bGV0IHI9ZS5yZXNvbHZlKHQubWFwKHRoaXMuYW5jaG9yKSk7cmV0dXJuIG5ldyBUZXh0U2VsZWN0aW9uKHIucGFyZW50LmlubGluZUNvbnRlbnQ/cjpuLG4pfXJlcGxhY2UoZSx0PVNsaWNlLmVtcHR5KXtpZihzdXBlci5yZXBsYWNlKGUsdCksdD09U2xpY2UuZW1wdHkpe2xldCB0PXRoaXMuJGZyb20ubWFya3NBY3Jvc3ModGhpcy4kdG8pO3QmJmUuZW5zdXJlTWFya3ModCl9fWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbiYmZS5hbmNob3I9PXRoaXMuYW5jaG9yJiZlLmhlYWQ9PXRoaXMuaGVhZH1nZXRCb29rbWFyaygpe3JldHVybiBuZXcgVGV4dEJvb2ttYXJrKHRoaXMuYW5jaG9yLHRoaXMuaGVhZCl9dG9KU09OKCl7cmV0dXJue3R5cGU6InRleHQiLGFuY2hvcjp0aGlzLmFuY2hvcixoZWFkOnRoaXMuaGVhZH19c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LmFuY2hvcnx8Im51bWJlciIhPXR5cGVvZiB0LmhlYWQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFRleHRTZWxlY3Rpb24uZnJvbUpTT04iKTtyZXR1cm4gbmV3IFRleHRTZWxlY3Rpb24oZS5yZXNvbHZlKHQuYW5jaG9yKSxlLnJlc29sdmUodC5oZWFkKSl9c3RhdGljIGNyZWF0ZShlLHQsbj10KXtsZXQgcj1lLnJlc29sdmUodCk7cmV0dXJuIG5ldyB0aGlzKHIsbj09dD9yOmUucmVzb2x2ZShuKSl9c3RhdGljIGJldHdlZW4oZSx0LG4pe2xldCByPWUucG9zLXQucG9zO2lmKG4mJiFyfHwobj1yPj0wPzE6LTEpLCF0LnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgZT1TZWxlY3Rpb24uZmluZEZyb20odCxuLCEwKXx8U2VsZWN0aW9uLmZpbmRGcm9tKHQsLW4sITApO2lmKCFlKXJldHVybiBTZWxlY3Rpb24ubmVhcih0LG4pO3Q9ZS4kaGVhZH1yZXR1cm4gZS5wYXJlbnQuaW5saW5lQ29udGVudHx8KDA9PXJ8fChlPShTZWxlY3Rpb24uZmluZEZyb20oZSwtbiwhMCl8fFNlbGVjdGlvbi5maW5kRnJvbShlLG4sITApKS4kYW5jaG9yKS5wb3M8dC5wb3MhPXI8MCkmJihlPXQpLG5ldyBUZXh0U2VsZWN0aW9uKGUsdCl9fVNlbGVjdGlvbi5qc29uSUQoInRleHQiLFRleHRTZWxlY3Rpb24pO2NsYXNzIFRleHRCb29rbWFya3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuYW5jaG9yPWUsdGhpcy5oZWFkPXR9bWFwKGUpe3JldHVybiBuZXcgVGV4dEJvb2ttYXJrKGUubWFwKHRoaXMuYW5jaG9yKSxlLm1hcCh0aGlzLmhlYWQpKX1yZXNvbHZlKGUpe3JldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4oZS5yZXNvbHZlKHRoaXMuYW5jaG9yKSxlLnJlc29sdmUodGhpcy5oZWFkKSl9fWNsYXNzIE5vZGVTZWxlY3Rpb24gZXh0ZW5kcyBTZWxlY3Rpb257Y29uc3RydWN0b3IoZSl7bGV0IHQ9ZS5ub2RlQWZ0ZXIsbj1lLm5vZGUoMCkucmVzb2x2ZShlLnBvcyt0Lm5vZGVTaXplKTtzdXBlcihlLG4pLHRoaXMubm9kZT10fW1hcChlLHQpe2xldHtkZWxldGVkOm4scG9zOnJ9PXQubWFwUmVzdWx0KHRoaXMuYW5jaG9yKSxvPWUucmVzb2x2ZShyKTtyZXR1cm4gbj9TZWxlY3Rpb24ubmVhcihvKTpuZXcgTm9kZVNlbGVjdGlvbihvKX1jb250ZW50KCl7cmV0dXJuIG5ldyBTbGljZShGcmFnbWVudC5mcm9tKHRoaXMubm9kZSksMCwwKX1lcShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24mJmUuYW5jaG9yPT10aGlzLmFuY2hvcn10b0pTT04oKXtyZXR1cm57dHlwZToibm9kZSIsYW5jaG9yOnRoaXMuYW5jaG9yfX1nZXRCb29rbWFyaygpe3JldHVybiBuZXcgTm9kZUJvb2ttYXJrKHRoaXMuYW5jaG9yKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQuYW5jaG9yKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlU2VsZWN0aW9uLmZyb21KU09OIik7cmV0dXJuIG5ldyBOb2RlU2VsZWN0aW9uKGUucmVzb2x2ZSh0LmFuY2hvcikpfXN0YXRpYyBjcmVhdGUoZSx0KXtyZXR1cm4gbmV3IE5vZGVTZWxlY3Rpb24oZS5yZXNvbHZlKHQpKX1zdGF0aWMgaXNTZWxlY3RhYmxlKGUpe3JldHVybiFlLmlzVGV4dCYmITEhPT1lLnR5cGUuc3BlYy5zZWxlY3RhYmxlfX1Ob2RlU2VsZWN0aW9uLnByb3RvdHlwZS52aXNpYmxlPSExLFNlbGVjdGlvbi5qc29uSUQoIm5vZGUiLE5vZGVTZWxlY3Rpb24pO2NsYXNzIE5vZGVCb29rbWFya3tjb25zdHJ1Y3RvcihlKXt0aGlzLmFuY2hvcj1lfW1hcChlKXtsZXR7ZGVsZXRlZDp0LHBvczpufT1lLm1hcFJlc3VsdCh0aGlzLmFuY2hvcik7cmV0dXJuIHQ/bmV3IFRleHRCb29rbWFyayhuLG4pOm5ldyBOb2RlQm9va21hcmsobil9cmVzb2x2ZShlKXtsZXQgdD1lLnJlc29sdmUodGhpcy5hbmNob3IpLG49dC5ub2RlQWZ0ZXI7cmV0dXJuIG4mJk5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG4pP25ldyBOb2RlU2VsZWN0aW9uKHQpOlNlbGVjdGlvbi5uZWFyKHQpfX1jbGFzcyBBbGxTZWxlY3Rpb24gZXh0ZW5kcyBTZWxlY3Rpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZS5yZXNvbHZlKDApLGUucmVzb2x2ZShlLmNvbnRlbnQuc2l6ZSkpfXJlcGxhY2UoZSx0PVNsaWNlLmVtcHR5KXtpZih0PT1TbGljZS5lbXB0eSl7ZS5kZWxldGUoMCxlLmRvYy5jb250ZW50LnNpemUpO2xldCB0PVNlbGVjdGlvbi5hdFN0YXJ0KGUuZG9jKTt0LmVxKGUuc2VsZWN0aW9uKXx8ZS5zZXRTZWxlY3Rpb24odCl9ZWxzZSBzdXBlci5yZXBsYWNlKGUsdCl9dG9KU09OKCl7cmV0dXJue3R5cGU6ImFsbCJ9fXN0YXRpYyBmcm9tSlNPTihlKXtyZXR1cm4gbmV3IEFsbFNlbGVjdGlvbihlKX1tYXAoZSl7cmV0dXJuIG5ldyBBbGxTZWxlY3Rpb24oZSl9ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBBbGxTZWxlY3Rpb259Z2V0Qm9va21hcmsoKXtyZXR1cm4gVGV9fVNlbGVjdGlvbi5qc29uSUQoImFsbCIsQWxsU2VsZWN0aW9uKTtjb25zdCBUZT17bWFwKCl7cmV0dXJuIHRoaXN9LHJlc29sdmU6ZT0+bmV3IEFsbFNlbGVjdGlvbihlKX07ZnVuY3Rpb24gZmluZFNlbGVjdGlvbkluKGUsdCxuLHIsbyxpPSExKXtpZih0LmlubGluZUNvbnRlbnQpcmV0dXJuIFRleHRTZWxlY3Rpb24uY3JlYXRlKGUsbik7Zm9yKGxldCBzPXItKG8+MD8wOjEpO28+MD9zPHQuY2hpbGRDb3VudDpzPj0wO3MrPW8pe2xldCByPXQuY2hpbGQocyk7aWYoci5pc0F0b20pe2lmKCFpJiZOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShyKSlyZXR1cm4gTm9kZVNlbGVjdGlvbi5jcmVhdGUoZSxuLShvPDA/ci5ub2RlU2l6ZTowKSl9ZWxzZXtsZXQgdD1maW5kU2VsZWN0aW9uSW4oZSxyLG4rbyxvPDA/ci5jaGlsZENvdW50OjAsbyxpKTtpZih0KXJldHVybiB0fW4rPXIubm9kZVNpemUqb31yZXR1cm4gbnVsbH1mdW5jdGlvbiBzZWxlY3Rpb25Ub0luc2VydGlvbkVuZCQxKGUsdCxuKXtsZXQgcj1lLnN0ZXBzLmxlbmd0aC0xO2lmKHI8dClyZXR1cm47bGV0IG8saT1lLnN0ZXBzW3JdOyhpIGluc3RhbmNlb2YgUmVwbGFjZVN0ZXB8fGkgaW5zdGFuY2VvZiBSZXBsYWNlQXJvdW5kU3RlcCkmJihlLm1hcHBpbmcubWFwc1tyXS5mb3JFYWNoKChlLHQsbixyKT0+e251bGw9PW8mJihvPXIpfSksZS5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uLm5lYXIoZS5kb2MucmVzb2x2ZShvKSxuKSkpfWNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUuZG9jKSx0aGlzLmN1clNlbGVjdGlvbkZvcj0wLHRoaXMudXBkYXRlZD0wLHRoaXMubWV0YT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMudGltZT1EYXRlLm5vdygpLHRoaXMuY3VyU2VsZWN0aW9uPWUuc2VsZWN0aW9uLHRoaXMuc3RvcmVkTWFya3M9ZS5zdG9yZWRNYXJrc31nZXQgc2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuY3VyU2VsZWN0aW9uRm9yPHRoaXMuc3RlcHMubGVuZ3RoJiYodGhpcy5jdXJTZWxlY3Rpb249dGhpcy5jdXJTZWxlY3Rpb24ubWFwKHRoaXMuZG9jLHRoaXMubWFwcGluZy5zbGljZSh0aGlzLmN1clNlbGVjdGlvbkZvcikpLHRoaXMuY3VyU2VsZWN0aW9uRm9yPXRoaXMuc3RlcHMubGVuZ3RoKSx0aGlzLmN1clNlbGVjdGlvbn1zZXRTZWxlY3Rpb24oZSl7aWYoZS4kZnJvbS5kb2MhPXRoaXMuZG9jKXRocm93IG5ldyBSYW5nZUVycm9yKCJTZWxlY3Rpb24gcGFzc2VkIHRvIHNldFNlbGVjdGlvbiBtdXN0IHBvaW50IGF0IHRoZSBjdXJyZW50IGRvY3VtZW50Iik7cmV0dXJuIHRoaXMuY3VyU2VsZWN0aW9uPWUsdGhpcy5jdXJTZWxlY3Rpb25Gb3I9dGhpcy5zdGVwcy5sZW5ndGgsdGhpcy51cGRhdGVkPS0zJnRoaXMudXBkYXRlZHwxLHRoaXMuc3RvcmVkTWFya3M9bnVsbCx0aGlzfWdldCBzZWxlY3Rpb25TZXQoKXtyZXR1cm4oMSZ0aGlzLnVwZGF0ZWQpPjB9c2V0U3RvcmVkTWFya3MoZSl7cmV0dXJuIHRoaXMuc3RvcmVkTWFya3M9ZSx0aGlzLnVwZGF0ZWR8PTIsdGhpc31lbnN1cmVNYXJrcyhlKXtyZXR1cm4gbGUuc2FtZVNldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kZnJvbS5tYXJrcygpLGUpfHx0aGlzLnNldFN0b3JlZE1hcmtzKGUpLHRoaXN9YWRkU3RvcmVkTWFyayhlKXtyZXR1cm4gdGhpcy5lbnN1cmVNYXJrcyhlLmFkZFRvU2V0KHRoaXMuc3RvcmVkTWFya3N8fHRoaXMuc2VsZWN0aW9uLiRoZWFkLm1hcmtzKCkpKX1yZW1vdmVTdG9yZWRNYXJrKGUpe3JldHVybiB0aGlzLmVuc3VyZU1hcmtzKGUucmVtb3ZlRnJvbVNldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSl9Z2V0IHN0b3JlZE1hcmtzU2V0KCl7cmV0dXJuKDImdGhpcy51cGRhdGVkKT4wfWFkZFN0ZXAoZSx0KXtzdXBlci5hZGRTdGVwKGUsdCksdGhpcy51cGRhdGVkPS0zJnRoaXMudXBkYXRlZCx0aGlzLnN0b3JlZE1hcmtzPW51bGx9c2V0VGltZShlKXtyZXR1cm4gdGhpcy50aW1lPWUsdGhpc31yZXBsYWNlU2VsZWN0aW9uKGUpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHRoaXMsZSksdGhpc31yZXBsYWNlU2VsZWN0aW9uV2l0aChlLHQ9ITApe2xldCBuPXRoaXMuc2VsZWN0aW9uO3JldHVybiB0JiYoZT1lLm1hcmsodGhpcy5zdG9yZWRNYXJrc3x8KG4uZW1wdHk/bi4kZnJvbS5tYXJrcygpOm4uJGZyb20ubWFya3NBY3Jvc3Mobi4kdG8pfHxsZS5ub25lKSkpLG4ucmVwbGFjZVdpdGgodGhpcyxlKSx0aGlzfWRlbGV0ZVNlbGVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHRoaXMpLHRoaXN9aW5zZXJ0VGV4dChlLHQsbil7bGV0IHI9dGhpcy5kb2MudHlwZS5zY2hlbWE7aWYobnVsbD09dClyZXR1cm4gZT90aGlzLnJlcGxhY2VTZWxlY3Rpb25XaXRoKHIudGV4dChlKSwhMCk6dGhpcy5kZWxldGVTZWxlY3Rpb24oKTt7aWYobnVsbD09biYmKG49dCksIWUpcmV0dXJuIHRoaXMuZGVsZXRlUmFuZ2UodCxuKTtsZXQgbz10aGlzLnN0b3JlZE1hcmtzO2lmKCFvKXtsZXQgZT10aGlzLmRvYy5yZXNvbHZlKHQpO289bj09dD9lLm1hcmtzKCk6ZS5tYXJrc0Fjcm9zcyh0aGlzLmRvYy5yZXNvbHZlKG4pKX1yZXR1cm4gdGhpcy5yZXBsYWNlUmFuZ2VXaXRoKHQsbixyLnRleHQoZSxvKSksdGhpcy5zZWxlY3Rpb24uZW1wdHl8fHRoaXMuc2VsZWN0aW9uLnRvIT10K2UubGVuZ3RofHx0aGlzLnNldFNlbGVjdGlvbihTZWxlY3Rpb24ubmVhcih0aGlzLnNlbGVjdGlvbi4kdG8pKSx0aGlzfX1zZXRNZXRhKGUsdCl7cmV0dXJuIHRoaXMubWV0YVsic3RyaW5nIj09dHlwZW9mIGU/ZTplLmtleV09dCx0aGlzfWdldE1ldGEoZSl7cmV0dXJuIHRoaXMubWV0YVsic3RyaW5nIj09dHlwZW9mIGU/ZTplLmtleV19Z2V0IGlzR2VuZXJpYygpe2ZvcihsZXQgZSBpbiB0aGlzLm1ldGEpcmV0dXJuITE7cmV0dXJuITB9c2Nyb2xsSW50b1ZpZXcoKXtyZXR1cm4gdGhpcy51cGRhdGVkfD00LHRoaXN9Z2V0IHNjcm9sbGVkSW50b1ZpZXcoKXtyZXR1cm4oNCZ0aGlzLnVwZGF0ZWQpPjB9fWZ1bmN0aW9uIGJpbmQoZSx0KXtyZXR1cm4gdCYmZT9lLmJpbmQodCk6ZX1jbGFzcyBGaWVsZERlc2N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMubmFtZT1lLHRoaXMuaW5pdD1iaW5kKHQuaW5pdCxuKSx0aGlzLmFwcGx5PWJpbmQodC5hcHBseSxuKX19Y29uc3QgQ2U9W25ldyBGaWVsZERlc2MoImRvYyIse2luaXQ6ZT0+ZS5kb2N8fGUuc2NoZW1hLnRvcE5vZGVUeXBlLmNyZWF0ZUFuZEZpbGwoKSxhcHBseTplPT5lLmRvY30pLG5ldyBGaWVsZERlc2MoInNlbGVjdGlvbiIse2luaXQ6KGUsdCk9PmUuc2VsZWN0aW9ufHxTZWxlY3Rpb24uYXRTdGFydCh0LmRvYyksYXBwbHk6ZT0+ZS5zZWxlY3Rpb259KSxuZXcgRmllbGREZXNjKCJzdG9yZWRNYXJrcyIse2luaXQ6ZT0+ZS5zdG9yZWRNYXJrc3x8bnVsbCxhcHBseTooZSx0LG4scik9PnIuc2VsZWN0aW9uLiRjdXJzb3I/ZS5zdG9yZWRNYXJrczpudWxsfSksbmV3IEZpZWxkRGVzYygic2Nyb2xsVG9TZWxlY3Rpb24iLHtpbml0OigpPT4wLGFwcGx5OihlLHQpPT5lLnNjcm9sbGVkSW50b1ZpZXc/dCsxOnR9KV07Y2xhc3MgQ29uZmlndXJhdGlvbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5wbHVnaW5zPVtdLHRoaXMucGx1Z2luc0J5S2V5PU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5maWVsZHM9Q2Uuc2xpY2UoKSx0JiZ0LmZvckVhY2goZT0+e2lmKHRoaXMucGx1Z2luc0J5S2V5W2Uua2V5XSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQWRkaW5nIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgYSBrZXllZCBwbHVnaW4gKCIrZS5rZXkrIikiKTt0aGlzLnBsdWdpbnMucHVzaChlKSx0aGlzLnBsdWdpbnNCeUtleVtlLmtleV09ZSxlLnNwZWMuc3RhdGUmJnRoaXMuZmllbGRzLnB1c2gobmV3IEZpZWxkRGVzYyhlLmtleSxlLnNwZWMuc3RhdGUsZSkpfSl9fWNsYXNzIEVkaXRvclN0YXRle2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uZmlnPWV9Z2V0IHNjaGVtYSgpe3JldHVybiB0aGlzLmNvbmZpZy5zY2hlbWF9Z2V0IHBsdWdpbnMoKXtyZXR1cm4gdGhpcy5jb25maWcucGx1Z2luc31hcHBseShlKXtyZXR1cm4gdGhpcy5hcHBseVRyYW5zYWN0aW9uKGUpLnN0YXRlfWZpbHRlclRyYW5zYWN0aW9uKGUsdD0tMSl7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbmZpZy5wbHVnaW5zLmxlbmd0aDtuKyspaWYobiE9dCl7bGV0IHQ9dGhpcy5jb25maWcucGx1Z2luc1tuXTtpZih0LnNwZWMuZmlsdGVyVHJhbnNhY3Rpb24mJiF0LnNwZWMuZmlsdGVyVHJhbnNhY3Rpb24uY2FsbCh0LGUsdGhpcykpcmV0dXJuITF9cmV0dXJuITB9YXBwbHlUcmFuc2FjdGlvbihlKXtpZighdGhpcy5maWx0ZXJUcmFuc2FjdGlvbihlKSlyZXR1cm57c3RhdGU6dGhpcyx0cmFuc2FjdGlvbnM6W119O2xldCB0PVtlXSxuPXRoaXMuYXBwbHlJbm5lcihlKSxyPW51bGw7Zm9yKDs7KXtsZXQgbz0hMTtmb3IobGV0IGk9MDtpPHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoO2krKyl7bGV0IHM9dGhpcy5jb25maWcucGx1Z2luc1tpXTtpZihzLnNwZWMuYXBwZW5kVHJhbnNhY3Rpb24pe2xldCBsPXI/cltpXS5uOjAsYT1yP3JbaV0uc3RhdGU6dGhpcyxjPWw8dC5sZW5ndGgmJnMuc3BlYy5hcHBlbmRUcmFuc2FjdGlvbi5jYWxsKHMsbD90LnNsaWNlKGwpOnQsYSxuKTtpZihjJiZuLmZpbHRlclRyYW5zYWN0aW9uKGMsaSkpe2lmKGMuc2V0TWV0YSgiYXBwZW5kZWRUcmFuc2FjdGlvbiIsZSksIXIpe3I9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbmZpZy5wbHVnaW5zLmxlbmd0aDtlKyspci5wdXNoKGU8aT97c3RhdGU6bixuOnQubGVuZ3RofTp7c3RhdGU6dGhpcyxuOjB9KX10LnB1c2goYyksbj1uLmFwcGx5SW5uZXIoYyksbz0hMH1yJiYocltpXT17c3RhdGU6bixuOnQubGVuZ3RofSl9fWlmKCFvKXJldHVybntzdGF0ZTpuLHRyYW5zYWN0aW9uczp0fX19YXBwbHlJbm5lcihlKXtpZighZS5iZWZvcmUuZXEodGhpcy5kb2MpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBcHBseWluZyBhIG1pc21hdGNoZWQgdHJhbnNhY3Rpb24iKTtsZXQgdD1uZXcgRWRpdG9yU3RhdGUodGhpcy5jb25maWcpLG49dGhpcy5jb25maWcuZmllbGRzO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKXtsZXQgbz1uW3JdO3Rbby5uYW1lXT1vLmFwcGx5KGUsdGhpc1tvLm5hbWVdLHRoaXMsdCl9cmV0dXJuIHR9Z2V0IHRyKCl7cmV0dXJuIG5ldyBUcmFuc2FjdGlvbih0aGlzKX1zdGF0aWMgY3JlYXRlKGUpe2xldCB0PW5ldyBDb25maWd1cmF0aW9uKGUuZG9jP2UuZG9jLnR5cGUuc2NoZW1hOmUuc2NoZW1hLGUucGx1Z2lucyksbj1uZXcgRWRpdG9yU3RhdGUodCk7Zm9yKGxldCByPTA7cjx0LmZpZWxkcy5sZW5ndGg7cisrKW5bdC5maWVsZHNbcl0ubmFtZV09dC5maWVsZHNbcl0uaW5pdChlLG4pO3JldHVybiBufXJlY29uZmlndXJlKGUpe2xldCB0PW5ldyBDb25maWd1cmF0aW9uKHRoaXMuc2NoZW1hLGUucGx1Z2lucyksbj10LmZpZWxkcyxyPW5ldyBFZGl0b3JTdGF0ZSh0KTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7bGV0IG89blt0XS5uYW1lO3Jbb109dGhpcy5oYXNPd25Qcm9wZXJ0eShvKT90aGlzW29dOm5bdF0uaW5pdChlLHIpfXJldHVybiByfXRvSlNPTihlKXtsZXQgdD17ZG9jOnRoaXMuZG9jLnRvSlNPTigpLHNlbGVjdGlvbjp0aGlzLnNlbGVjdGlvbi50b0pTT04oKX07aWYodGhpcy5zdG9yZWRNYXJrcyYmKHQuc3RvcmVkTWFya3M9dGhpcy5zdG9yZWRNYXJrcy5tYXAoZT0+ZS50b0pTT04oKSkpLGUmJiJvYmplY3QiPT10eXBlb2YgZSlmb3IobGV0IG4gaW4gZSl7aWYoImRvYyI9PW58fCJzZWxlY3Rpb24iPT1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgSlNPTiBmaWVsZHMgYGRvY2AgYW5kIGBzZWxlY3Rpb25gIGFyZSByZXNlcnZlZCIpO2xldCByPWVbbl0sbz1yLnNwZWMuc3RhdGU7byYmby50b0pTT04mJih0W25dPW8udG9KU09OLmNhbGwocix0aGlzW3Iua2V5XSkpfXJldHVybiB0fXN0YXRpYyBmcm9tSlNPTihlLHQsbil7aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEVkaXRvclN0YXRlLmZyb21KU09OIik7aWYoIWUuc2NoZW1hKXRocm93IG5ldyBSYW5nZUVycm9yKCJSZXF1aXJlZCBjb25maWcgZmllbGQgJ3NjaGVtYScgbWlzc2luZyIpO2xldCByPW5ldyBDb25maWd1cmF0aW9uKGUuc2NoZW1hLGUucGx1Z2lucyksbz1uZXcgRWRpdG9yU3RhdGUocik7cmV0dXJuIHIuZmllbGRzLmZvckVhY2gocj0+e2lmKCJkb2MiPT1yLm5hbWUpby5kb2M9Tm9kZS5mcm9tSlNPTihlLnNjaGVtYSx0LmRvYyk7ZWxzZSBpZigic2VsZWN0aW9uIj09ci5uYW1lKW8uc2VsZWN0aW9uPVNlbGVjdGlvbi5mcm9tSlNPTihvLmRvYyx0LnNlbGVjdGlvbik7ZWxzZSBpZigic3RvcmVkTWFya3MiPT1yLm5hbWUpdC5zdG9yZWRNYXJrcyYmKG8uc3RvcmVkTWFya3M9dC5zdG9yZWRNYXJrcy5tYXAoZS5zY2hlbWEubWFya0Zyb21KU09OKSk7ZWxzZXtpZihuKWZvcihsZXQgaSBpbiBuKXtsZXQgcz1uW2ldLGw9cy5zcGVjLnN0YXRlO2lmKHMua2V5PT1yLm5hbWUmJmwmJmwuZnJvbUpTT04mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpKXJldHVybiB2b2lkKG9bci5uYW1lXT1sLmZyb21KU09OLmNhbGwocyxlLHRbaV0sbykpfW9bci5uYW1lXT1yLmluaXQoZSxvKX19KSxvfX1mdW5jdGlvbiBiaW5kUHJvcHMoZSx0LG4pe2ZvcihsZXQgciBpbiBlKXtsZXQgbz1lW3JdO28gaW5zdGFuY2VvZiBGdW5jdGlvbj9vPW8uYmluZCh0KToiaGFuZGxlRE9NRXZlbnRzIj09ciYmKG89YmluZFByb3BzKG8sdCx7fSkpLG5bcl09b31yZXR1cm4gbn1jbGFzcyBQbHVnaW57Y29uc3RydWN0b3IoZSl7dGhpcy5zcGVjPWUsdGhpcy5wcm9wcz17fSxlLnByb3BzJiZiaW5kUHJvcHMoZS5wcm9wcyx0aGlzLHRoaXMucHJvcHMpLHRoaXMua2V5PWUua2V5P2Uua2V5LmtleTpjcmVhdGVLZXkoInBsdWdpbiIpfWdldFN0YXRlKGUpe3JldHVybiBlW3RoaXMua2V5XX19Y29uc3QgTWU9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBjcmVhdGVLZXkoZSl7cmV0dXJuIGUgaW4gTWU/ZSsiJCIrICsrTWVbZV06KE1lW2VdPTAsZSsiJCIpfWNsYXNzIFBsdWdpbktleXtjb25zdHJ1Y3RvcihlPSJrZXkiKXt0aGlzLmtleT1jcmVhdGVLZXkoZSl9Z2V0KGUpe3JldHVybiBlLmNvbmZpZy5wbHVnaW5zQnlLZXlbdGhpcy5rZXldfWdldFN0YXRlKGUpe3JldHVybiBlW3RoaXMua2V5XX19Y29uc3QgZGVsZXRlU2VsZWN0aW9uJDE9KGUsdCk9PiFlLnNlbGVjdGlvbi5lbXB0eSYmKHQmJnQoZS50ci5kZWxldGVTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpKSwhMCk7ZnVuY3Rpb24gYXRCbG9ja1N0YXJ0KGUsdCl7bGV0eyRjdXJzb3I6bn09ZS5zZWxlY3Rpb247cmV0dXJuIW58fCh0PyF0LmVuZE9mVGV4dGJsb2NrKCJiYWNrd2FyZCIsZSk6bi5wYXJlbnRPZmZzZXQ+MCk/bnVsbDpufWNvbnN0IGpvaW5CYWNrd2FyZCQxPShlLHQsbik9PntsZXQgcj1hdEJsb2NrU3RhcnQoZSxuKTtpZighcilyZXR1cm4hMTtsZXQgbz1maW5kQ3V0QmVmb3JlKHIpO2lmKCFvKXtsZXQgbj1yLmJsb2NrUmFuZ2UoKSxvPW4mJmxpZnRUYXJnZXQobik7cmV0dXJuIG51bGwhPW8mJih0JiZ0KGUudHIubGlmdChuLG8pLnNjcm9sbEludG9WaWV3KCkpLCEwKX1sZXQgaT1vLm5vZGVCZWZvcmU7aWYoZGVsZXRlQmFycmllcihlLG8sdCwtMSkpcmV0dXJuITA7aWYoMD09ci5wYXJlbnQuY29udGVudC5zaXplJiYodGV4dGJsb2NrQXQoaSwiZW5kIil8fE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGkpKSlmb3IobGV0IG49ci5kZXB0aDs7bi0tKXtsZXQgcz1yZXBsYWNlU3RlcChlLmRvYyxyLmJlZm9yZShuKSxyLmFmdGVyKG4pLFNsaWNlLmVtcHR5KTtpZihzJiZzLnNsaWNlLnNpemU8cy50by1zLmZyb20pe2lmKHQpe2xldCBuPWUudHIuc3RlcChzKTtuLnNldFNlbGVjdGlvbih0ZXh0YmxvY2tBdChpLCJlbmQiKT9TZWxlY3Rpb24uZmluZEZyb20obi5kb2MucmVzb2x2ZShuLm1hcHBpbmcubWFwKG8ucG9zLC0xKSksLTEpOk5vZGVTZWxlY3Rpb24uY3JlYXRlKG4uZG9jLG8ucG9zLWkubm9kZVNpemUpKSx0KG4uc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9aWYoMT09bnx8ci5ub2RlKG4tMSkuY2hpbGRDb3VudD4xKWJyZWFrfXJldHVybiEoIWkuaXNBdG9tfHxvLmRlcHRoIT1yLmRlcHRoLTEpJiYodCYmdChlLnRyLmRlbGV0ZShvLnBvcy1pLm5vZGVTaXplLG8ucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9O2Z1bmN0aW9uIGpvaW5UZXh0YmxvY2tzQXJvdW5kKGUsdCxuKXtsZXQgcj10Lm5vZGVCZWZvcmUsbz10LnBvcy0xO2Zvcig7IXIuaXNUZXh0YmxvY2s7by0tKXtpZihyLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IGU9ci5sYXN0Q2hpbGQ7aWYoIWUpcmV0dXJuITE7cj1lfWxldCBpPXQubm9kZUFmdGVyLHM9dC5wb3MrMTtmb3IoOyFpLmlzVGV4dGJsb2NrO3MrKyl7aWYoaS50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiExO2xldCBlPWkuZmlyc3RDaGlsZDtpZighZSlyZXR1cm4hMTtpPWV9bGV0IGw9cmVwbGFjZVN0ZXAoZS5kb2MsbyxzLFNsaWNlLmVtcHR5KTtpZighbHx8bC5mcm9tIT1vfHxsIGluc3RhbmNlb2YgUmVwbGFjZVN0ZXAmJmwuc2xpY2Uuc2l6ZT49cy1vKXJldHVybiExO2lmKG4pe2xldCB0PWUudHIuc3RlcChsKTt0LnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0LmRvYyxvKSksbih0LnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfWZ1bmN0aW9uIHRleHRibG9ja0F0KGUsdCxuPSExKXtmb3IobGV0IHI9ZTtyO3I9InN0YXJ0Ij09dD9yLmZpcnN0Q2hpbGQ6ci5sYXN0Q2hpbGQpe2lmKHIuaXNUZXh0YmxvY2spcmV0dXJuITA7aWYobiYmMSE9ci5jaGlsZENvdW50KXJldHVybiExfXJldHVybiExfWNvbnN0IHNlbGVjdE5vZGVCYWNrd2FyZCQxPShlLHQsbik9PntsZXR7JGhlYWQ6cixlbXB0eTpvfT1lLnNlbGVjdGlvbixpPXI7aWYoIW8pcmV0dXJuITE7aWYoci5wYXJlbnQuaXNUZXh0YmxvY2spe2lmKG4/IW4uZW5kT2ZUZXh0YmxvY2soImJhY2t3YXJkIixlKTpyLnBhcmVudE9mZnNldD4wKXJldHVybiExO2k9ZmluZEN1dEJlZm9yZShyKX1sZXQgcz1pJiZpLm5vZGVCZWZvcmU7cmV0dXJuISghc3x8IU5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKHMpKSYmKHQmJnQoZS50ci5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUoZS5kb2MsaS5wb3Mtcy5ub2RlU2l6ZSkpLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24gZmluZEN1dEJlZm9yZShlKXtpZighZS5wYXJlbnQudHlwZS5zcGVjLmlzb2xhdGluZylmb3IobGV0IHQ9ZS5kZXB0aC0xO3Q+PTA7dC0tKXtpZihlLmluZGV4KHQpPjApcmV0dXJuIGUuZG9jLnJlc29sdmUoZS5iZWZvcmUodCsxKSk7aWYoZS5ub2RlKHQpLnR5cGUuc3BlYy5pc29sYXRpbmcpYnJlYWt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gYXRCbG9ja0VuZChlLHQpe2xldHskY3Vyc29yOm59PWUuc2VsZWN0aW9uO3JldHVybiFufHwodD8hdC5lbmRPZlRleHRibG9jaygiZm9yd2FyZCIsZSk6bi5wYXJlbnRPZmZzZXQ8bi5wYXJlbnQuY29udGVudC5zaXplKT9udWxsOm59Y29uc3Qgam9pbkZvcndhcmQkMT0oZSx0LG4pPT57bGV0IHI9YXRCbG9ja0VuZChlLG4pO2lmKCFyKXJldHVybiExO2xldCBvPWZpbmRDdXRBZnRlcihyKTtpZighbylyZXR1cm4hMTtsZXQgaT1vLm5vZGVBZnRlcjtpZihkZWxldGVCYXJyaWVyKGUsbyx0LDEpKXJldHVybiEwO2lmKDA9PXIucGFyZW50LmNvbnRlbnQuc2l6ZSYmKHRleHRibG9ja0F0KGksInN0YXJ0Iil8fE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGkpKSl7bGV0IG49cmVwbGFjZVN0ZXAoZS5kb2Msci5iZWZvcmUoKSxyLmFmdGVyKCksU2xpY2UuZW1wdHkpO2lmKG4mJm4uc2xpY2Uuc2l6ZTxuLnRvLW4uZnJvbSl7aWYodCl7bGV0IHI9ZS50ci5zdGVwKG4pO3Iuc2V0U2VsZWN0aW9uKHRleHRibG9ja0F0KGksInN0YXJ0Iik/U2VsZWN0aW9uLmZpbmRGcm9tKHIuZG9jLnJlc29sdmUoci5tYXBwaW5nLm1hcChvLnBvcykpLDEpOk5vZGVTZWxlY3Rpb24uY3JlYXRlKHIuZG9jLHIubWFwcGluZy5tYXAoby5wb3MpKSksdChyLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1yZXR1cm4hKCFpLmlzQXRvbXx8by5kZXB0aCE9ci5kZXB0aC0xKSYmKHQmJnQoZS50ci5kZWxldGUoby5wb3Msby5wb3MraS5ub2RlU2l6ZSkuc2Nyb2xsSW50b1ZpZXcoKSksITApfSxzZWxlY3ROb2RlRm9yd2FyZCQxPShlLHQsbik9PntsZXR7JGhlYWQ6cixlbXB0eTpvfT1lLnNlbGVjdGlvbixpPXI7aWYoIW8pcmV0dXJuITE7aWYoci5wYXJlbnQuaXNUZXh0YmxvY2spe2lmKG4/IW4uZW5kT2ZUZXh0YmxvY2soImZvcndhcmQiLGUpOnIucGFyZW50T2Zmc2V0PHIucGFyZW50LmNvbnRlbnQuc2l6ZSlyZXR1cm4hMTtpPWZpbmRDdXRBZnRlcihyKX1sZXQgcz1pJiZpLm5vZGVBZnRlcjtyZXR1cm4hKCFzfHwhTm9kZVNlbGVjdGlvbi5pc1NlbGVjdGFibGUocykpJiYodCYmdChlLnRyLnNldFNlbGVjdGlvbihOb2RlU2VsZWN0aW9uLmNyZWF0ZShlLmRvYyxpLnBvcykpLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24gZmluZEN1dEFmdGVyKGUpe2lmKCFlLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKWZvcihsZXQgdD1lLmRlcHRoLTE7dD49MDt0LS0pe2xldCBuPWUubm9kZSh0KTtpZihlLmluZGV4KHQpKzE8bi5jaGlsZENvdW50KXJldHVybiBlLmRvYy5yZXNvbHZlKGUuYWZ0ZXIodCsxKSk7aWYobi50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrfXJldHVybiBudWxsfWNvbnN0IG5ld2xpbmVJbkNvZGUkMT0oZSx0KT0+e2xldHskaGVhZDpuLCRhbmNob3I6cn09ZS5zZWxlY3Rpb247cmV0dXJuISghbi5wYXJlbnQudHlwZS5zcGVjLmNvZGV8fCFuLnNhbWVQYXJlbnQocikpJiYodCYmdChlLnRyLmluc2VydFRleHQoIlxuIikuc2Nyb2xsSW50b1ZpZXcoKSksITApfTtmdW5jdGlvbiBkZWZhdWx0QmxvY2tBdCQxKGUpe2ZvcihsZXQgdD0wO3Q8ZS5lZGdlQ291bnQ7dCsrKXtsZXR7dHlwZTpufT1lLmVkZ2UodCk7aWYobi5pc1RleHRibG9jayYmIW4uaGFzUmVxdWlyZWRBdHRycygpKXJldHVybiBufXJldHVybiBudWxsfWNvbnN0IGNyZWF0ZVBhcmFncmFwaE5lYXIkMT0oZSx0KT0+e2xldCBuPWUuc2VsZWN0aW9uLHskZnJvbTpyLCR0bzpvfT1uO2lmKG4gaW5zdGFuY2VvZiBBbGxTZWxlY3Rpb258fHIucGFyZW50LmlubGluZUNvbnRlbnR8fG8ucGFyZW50LmlubGluZUNvbnRlbnQpcmV0dXJuITE7bGV0IGk9ZGVmYXVsdEJsb2NrQXQkMShvLnBhcmVudC5jb250ZW50TWF0Y2hBdChvLmluZGV4QWZ0ZXIoKSkpO2lmKCFpfHwhaS5pc1RleHRibG9jaylyZXR1cm4hMTtpZih0KXtsZXQgbj0oIXIucGFyZW50T2Zmc2V0JiZvLmluZGV4KCk8by5wYXJlbnQuY2hpbGRDb3VudD9yOm8pLnBvcyxzPWUudHIuaW5zZXJ0KG4saS5jcmVhdGVBbmRGaWxsKCkpO3Muc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24uY3JlYXRlKHMuZG9jLG4rMSkpLHQocy5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH0sbGlmdEVtcHR5QmxvY2skMT0oZSx0KT0+e2xldHskY3Vyc29yOm59PWUuc2VsZWN0aW9uO2lmKCFufHxuLnBhcmVudC5jb250ZW50LnNpemUpcmV0dXJuITE7aWYobi5kZXB0aD4xJiZuLmFmdGVyKCkhPW4uZW5kKC0xKSl7bGV0IHI9bi5iZWZvcmUoKTtpZihjYW5TcGxpdChlLmRvYyxyKSlyZXR1cm4gdCYmdChlLnRyLnNwbGl0KHIpLnNjcm9sbEludG9WaWV3KCkpLCEwfWxldCByPW4uYmxvY2tSYW5nZSgpLG89ciYmbGlmdFRhcmdldChyKTtyZXR1cm4gbnVsbCE9byYmKHQmJnQoZS50ci5saWZ0KHIsbykuc2Nyb2xsSW50b1ZpZXcoKSksITApfTtjb25zdCBzcGxpdEJsb2NrJDE9KGUsdCk9PntsZXR7JGZyb206biwkdG86cn09ZS5zZWxlY3Rpb247aWYoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uJiZlLnNlbGVjdGlvbi5ub2RlLmlzQmxvY2spcmV0dXJuISghbi5wYXJlbnRPZmZzZXR8fCFjYW5TcGxpdChlLmRvYyxuLnBvcyl8fCh0JiZ0KGUudHIuc3BsaXQobi5wb3MpLnNjcm9sbEludG9WaWV3KCkpLDApKTtpZighbi5kZXB0aClyZXR1cm4hMTtsZXQgbyxpLHM9W10sbD0hMSxhPSExO2ZvcihsZXQgZT1uLmRlcHRoOztlLS0pe2lmKG4ubm9kZShlKS5pc0Jsb2NrKXtsPW4uZW5kKGUpPT1uLnBvcysobi5kZXB0aC1lKSxhPW4uc3RhcnQoZSk9PW4ucG9zLShuLmRlcHRoLWUpLGk9ZGVmYXVsdEJsb2NrQXQkMShuLm5vZGUoZS0xKS5jb250ZW50TWF0Y2hBdChuLmluZGV4QWZ0ZXIoZS0xKSkpLHMudW5zaGlmdChsJiZpP3t0eXBlOml9Om51bGwpLG89ZTticmVha31pZigxPT1lKXJldHVybiExO3MudW5zaGlmdChudWxsKX1sZXQgYz1lLnRyOyhlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb258fGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgQWxsU2VsZWN0aW9uKSYmYy5kZWxldGVTZWxlY3Rpb24oKTtsZXQgZD1jLm1hcHBpbmcubWFwKG4ucG9zKSxwPWNhblNwbGl0KGMuZG9jLGQscy5sZW5ndGgscyk7aWYocHx8KHNbMF09aT97dHlwZTppfTpudWxsLHA9Y2FuU3BsaXQoYy5kb2MsZCxzLmxlbmd0aCxzKSksIXApcmV0dXJuITE7aWYoYy5zcGxpdChkLHMubGVuZ3RoLHMpLCFsJiZhJiZuLm5vZGUobykudHlwZSE9aSl7bGV0IGU9Yy5tYXBwaW5nLm1hcChuLmJlZm9yZShvKSksdD1jLmRvYy5yZXNvbHZlKGUpO2kmJm4ubm9kZShvLTEpLmNhblJlcGxhY2VXaXRoKHQuaW5kZXgoKSx0LmluZGV4KCkrMSxpKSYmYy5zZXROb2RlTWFya3VwKGMubWFwcGluZy5tYXAobi5iZWZvcmUobykpLGkpfXJldHVybiB0JiZ0KGMuc2Nyb2xsSW50b1ZpZXcoKSksITB9O2Z1bmN0aW9uIGRlbGV0ZUJhcnJpZXIoZSx0LG4scil7bGV0IG8saSxzPXQubm9kZUJlZm9yZSxsPXQubm9kZUFmdGVyLGE9cy50eXBlLnNwZWMuaXNvbGF0aW5nfHxsLnR5cGUuc3BlYy5pc29sYXRpbmc7aWYoIWEmJmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj10Lm5vZGVCZWZvcmUsbz10Lm5vZGVBZnRlcixpPXQuaW5kZXgoKTtyZXR1cm4hKCEociYmbyYmci50eXBlLmNvbXBhdGlibGVDb250ZW50KG8udHlwZSkpfHwoIXIuY29udGVudC5zaXplJiZ0LnBhcmVudC5jYW5SZXBsYWNlKGktMSxpKT8obiYmbihlLnRyLmRlbGV0ZSh0LnBvcy1yLm5vZGVTaXplLHQucG9zKS5zY3JvbGxJbnRvVmlldygpKSwwKTohdC5wYXJlbnQuY2FuUmVwbGFjZShpLGkrMSl8fCFvLmlzVGV4dGJsb2NrJiYhY2FuSm9pbihlLmRvYyx0LnBvcyl8fChuJiZuKGUudHIuam9pbih0LnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksMCkpKX0oZSx0LG4pKXJldHVybiEwO2xldCBjPSFhJiZ0LnBhcmVudC5jYW5SZXBsYWNlKHQuaW5kZXgoKSx0LmluZGV4KCkrMSk7aWYoYyYmKG89KGk9cy5jb250ZW50TWF0Y2hBdChzLmNoaWxkQ291bnQpKS5maW5kV3JhcHBpbmcobC50eXBlKSkmJmkubWF0Y2hUeXBlKG9bMF18fGwudHlwZSkudmFsaWRFbmQpe2lmKG4pe2xldCByPXQucG9zK2wubm9kZVNpemUsaT1GcmFnbWVudC5lbXB0eTtmb3IobGV0IGU9by5sZW5ndGgtMTtlPj0wO2UtLSlpPUZyYWdtZW50LmZyb20ob1tlXS5jcmVhdGUobnVsbCxpKSk7aT1GcmFnbWVudC5mcm9tKHMuY29weShpKSk7bGV0IGE9ZS50ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcCh0LnBvcy0xLHIsdC5wb3MscixuZXcgU2xpY2UoaSwxLDApLG8ubGVuZ3RoLCEwKSksYz1hLmRvYy5yZXNvbHZlKHIrMipvLmxlbmd0aCk7Yy5ub2RlQWZ0ZXImJmMubm9kZUFmdGVyLnR5cGU9PXMudHlwZSYmY2FuSm9pbihhLmRvYyxjLnBvcykmJmEuam9pbihjLnBvcyksbihhLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfWxldCBkPWwudHlwZS5zcGVjLmlzb2xhdGluZ3x8cj4wJiZhP251bGw6U2VsZWN0aW9uLmZpbmRGcm9tKHQsMSkscD1kJiZkLiRmcm9tLmJsb2NrUmFuZ2UoZC4kdG8pLGY9cCYmbGlmdFRhcmdldChwKTtpZihudWxsIT1mJiZmPj10LmRlcHRoKXJldHVybiBuJiZuKGUudHIubGlmdChwLGYpLnNjcm9sbEludG9WaWV3KCkpLCEwO2lmKGMmJnRleHRibG9ja0F0KGwsInN0YXJ0IiwhMCkmJnRleHRibG9ja0F0KHMsImVuZCIpKXtsZXQgcj1zLG89W107Zm9yKDtvLnB1c2gociksIXIuaXNUZXh0YmxvY2s7KXI9ci5sYXN0Q2hpbGQ7bGV0IGk9bCxhPTE7Zm9yKDshaS5pc1RleHRibG9jaztpPWkuZmlyc3RDaGlsZClhKys7aWYoci5jYW5SZXBsYWNlKHIuY2hpbGRDb3VudCxyLmNoaWxkQ291bnQsaS5jb250ZW50KSl7aWYobil7bGV0IHI9RnJhZ21lbnQuZW1wdHk7Zm9yKGxldCBlPW8ubGVuZ3RoLTE7ZT49MDtlLS0pcj1GcmFnbWVudC5mcm9tKG9bZV0uY29weShyKSk7bihlLnRyLnN0ZXAobmV3IFJlcGxhY2VBcm91bmRTdGVwKHQucG9zLW8ubGVuZ3RoLHQucG9zK2wubm9kZVNpemUsdC5wb3MrYSx0LnBvcytsLm5vZGVTaXplLWEsbmV3IFNsaWNlKHIsby5sZW5ndGgsMCksMCwhMCkpLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBzZWxlY3RUZXh0YmxvY2tTaWRlKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe2xldCByPXQuc2VsZWN0aW9uLG89ZTwwP3IuJGZyb206ci4kdG8saT1vLmRlcHRoO2Zvcig7by5ub2RlKGkpLmlzSW5saW5lOyl7aWYoIWkpcmV0dXJuITE7aS0tfXJldHVybiEhby5ub2RlKGkpLmlzVGV4dGJsb2NrJiYobiYmbih0LnRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0LmRvYyxlPDA/by5zdGFydChpKTpvLmVuZChpKSkpKSwhMCl9fWNvbnN0IEFlPXNlbGVjdFRleHRibG9ja1NpZGUoLTEpLE9lPXNlbGVjdFRleHRibG9ja1NpZGUoMSk7ZnVuY3Rpb24gc2V0QmxvY2tUeXBlKGUsdD1udWxsKXtyZXR1cm4gZnVuY3Rpb24obixyKXtsZXQgbz0hMTtmb3IobGV0IHI9MDtyPG4uc2VsZWN0aW9uLnJhbmdlcy5sZW5ndGgmJiFvO3IrKyl7bGV0eyRmcm9tOntwb3M6aX0sJHRvOntwb3M6c319PW4uc2VsZWN0aW9uLnJhbmdlc1tyXTtuLmRvYy5ub2Rlc0JldHdlZW4oaSxzLChyLGkpPT57aWYobylyZXR1cm4hMTtpZihyLmlzVGV4dGJsb2NrJiYhci5oYXNNYXJrdXAoZSx0KSlpZihyLnR5cGU9PWUpbz0hMDtlbHNle2xldCB0PW4uZG9jLnJlc29sdmUoaSkscj10LmluZGV4KCk7bz10LnBhcmVudC5jYW5SZXBsYWNlV2l0aChyLHIrMSxlKX19KX1pZighbylyZXR1cm4hMTtpZihyKXtsZXQgbz1uLnRyO2ZvcihsZXQgcj0wO3I8bi5zZWxlY3Rpb24ucmFuZ2VzLmxlbmd0aDtyKyspe2xldHskZnJvbTp7cG9zOml9LCR0bzp7cG9zOnN9fT1uLnNlbGVjdGlvbi5yYW5nZXNbcl07by5zZXRCbG9ja1R5cGUoaSxzLGUsdCl9cihvLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1mdW5jdGlvbiBjaGFpbkNvbW1hbmRzKC4uLmUpe3JldHVybiBmdW5jdGlvbih0LG4scil7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaWYoZVtvXSh0LG4scikpcmV0dXJuITA7cmV0dXJuITF9fWZ1bmN0aW9uIHdyYXBJbkxpc3QkMShlLHQ9bnVsbCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7bGV0eyRmcm9tOm8sJHRvOml9PW4uc2VsZWN0aW9uLHM9by5ibG9ja1JhbmdlKGkpO2lmKCFzKXJldHVybiExO2xldCBsPXI/bi50cjpudWxsO3JldHVybiEhZnVuY3Rpb24oZSx0LG4scj1udWxsKXtsZXQgbz0hMSxpPXQscz10LiRmcm9tLmRvYztpZih0LmRlcHRoPj0yJiZ0LiRmcm9tLm5vZGUodC5kZXB0aC0xKS50eXBlLmNvbXBhdGlibGVDb250ZW50KG4pJiYwPT10LnN0YXJ0SW5kZXgpe2lmKDA9PXQuJGZyb20uaW5kZXgodC5kZXB0aC0xKSlyZXR1cm4hMTtsZXQgZT1zLnJlc29sdmUodC5zdGFydC0yKTtpPW5ldyBOb2RlUmFuZ2UoZSxlLHQuZGVwdGgpLHQuZW5kSW5kZXg8dC5wYXJlbnQuY2hpbGRDb3VudCYmKHQ9bmV3IE5vZGVSYW5nZSh0LiRmcm9tLHMucmVzb2x2ZSh0LiR0by5lbmQodC5kZXB0aCkpLHQuZGVwdGgpKSxvPSEwfWxldCBsPWZpbmRXcmFwcGluZyhpLG4scix0KTtpZighbClyZXR1cm4hMTtlJiZmdW5jdGlvbihlLHQsbixyLG8pe2xldCBpPUZyYWdtZW50LmVtcHR5O2ZvcihsZXQgZT1uLmxlbmd0aC0xO2U+PTA7ZS0tKWk9RnJhZ21lbnQuZnJvbShuW2VdLnR5cGUuY3JlYXRlKG5bZV0uYXR0cnMsaSkpO2Uuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAodC5zdGFydC0ocj8yOjApLHQuZW5kLHQuc3RhcnQsdC5lbmQsbmV3IFNsaWNlKGksMCwwKSxuLmxlbmd0aCwhMCkpO2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspbltlXS50eXBlPT1vJiYocz1lKzEpO2xldCBsPW4ubGVuZ3RoLXMsYT10LnN0YXJ0K24ubGVuZ3RoLShyPzI6MCksYz10LnBhcmVudDtmb3IobGV0IG49dC5zdGFydEluZGV4LHI9dC5lbmRJbmRleCxvPSEwO248cjtuKyssbz0hMSkhbyYmY2FuU3BsaXQoZS5kb2MsYSxsKSYmKGUuc3BsaXQoYSxsKSxhKz0yKmwpLGErPWMuY2hpbGQobikubm9kZVNpemV9KGUsdCxsLG8sbik7cmV0dXJuITB9KGwscyxlLHQpJiYociYmcihsLnNjcm9sbEludG9WaWV3KCkpLCEwKX19ZnVuY3Rpb24gbGlmdExpc3RJdGVtJDEoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7bGV0eyRmcm9tOnIsJHRvOm99PXQuc2VsZWN0aW9uLGk9ci5ibG9ja1JhbmdlKG8sdD0+dC5jaGlsZENvdW50PjAmJnQuZmlyc3RDaGlsZC50eXBlPT1lKTtyZXR1cm4hIWkmJighbnx8KHIubm9kZShpLmRlcHRoLTEpLnR5cGU9PWU/ZnVuY3Rpb24oZSx0LG4scil7bGV0IG89ZS50cixpPXIuZW5kLHM9ci4kdG8uZW5kKHIuZGVwdGgpO2k8cyYmKG8uc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAoaS0xLHMsaSxzLG5ldyBTbGljZShGcmFnbWVudC5mcm9tKG4uY3JlYXRlKG51bGwsci5wYXJlbnQuY29weSgpKSksMSwwKSwxLCEwKSkscj1uZXcgTm9kZVJhbmdlKG8uZG9jLnJlc29sdmUoci4kZnJvbS5wb3MpLG8uZG9jLnJlc29sdmUocyksci5kZXB0aCkpO2NvbnN0IGw9bGlmdFRhcmdldChyKTtpZihudWxsPT1sKXJldHVybiExO28ubGlmdChyLGwpO2xldCBhPW8uZG9jLnJlc29sdmUoby5tYXBwaW5nLm1hcChpLC0xKS0xKTtjYW5Kb2luKG8uZG9jLGEucG9zKSYmYS5ub2RlQmVmb3JlLnR5cGU9PWEubm9kZUFmdGVyLnR5cGUmJm8uam9pbihhLnBvcyk7cmV0dXJuIHQoby5zY3JvbGxJbnRvVmlldygpKSwhMH0odCxuLGUsaSk6ZnVuY3Rpb24oZSx0LG4pe2xldCByPWUudHIsbz1uLnBhcmVudDtmb3IobGV0IGU9bi5lbmQsdD1uLmVuZEluZGV4LTEsaT1uLnN0YXJ0SW5kZXg7dD5pO3QtLSllLT1vLmNoaWxkKHQpLm5vZGVTaXplLHIuZGVsZXRlKGUtMSxlKzEpO2xldCBpPXIuZG9jLnJlc29sdmUobi5zdGFydCkscz1pLm5vZGVBZnRlcjtpZihyLm1hcHBpbmcubWFwKG4uZW5kKSE9bi5zdGFydCtpLm5vZGVBZnRlci5ub2RlU2l6ZSlyZXR1cm4hMTtsZXQgbD0wPT1uLnN0YXJ0SW5kZXgsYT1uLmVuZEluZGV4PT1vLmNoaWxkQ291bnQsYz1pLm5vZGUoLTEpLGQ9aS5pbmRleCgtMSk7aWYoIWMuY2FuUmVwbGFjZShkKyhsPzA6MSksZCsxLHMuY29udGVudC5hcHBlbmQoYT9GcmFnbWVudC5lbXB0eTpGcmFnbWVudC5mcm9tKG8pKSkpcmV0dXJuITE7bGV0IHA9aS5wb3MsZj1wK3Mubm9kZVNpemU7cmV0dXJuIHIuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAocC0obD8xOjApLGYrKGE/MTowKSxwKzEsZi0xLG5ldyBTbGljZSgobD9GcmFnbWVudC5lbXB0eTpGcmFnbWVudC5mcm9tKG8uY29weShGcmFnbWVudC5lbXB0eSkpKS5hcHBlbmQoYT9GcmFnbWVudC5lbXB0eTpGcmFnbWVudC5mcm9tKG8uY29weShGcmFnbWVudC5lbXB0eSkpKSxsPzA6MSxhPzA6MSksbD8wOjEpKSx0KHIuc2Nyb2xsSW50b1ZpZXcoKSksITB9KHQsbixpKSkpfX1jaGFpbkNvbW1hbmRzKGRlbGV0ZVNlbGVjdGlvbiQxLGpvaW5CYWNrd2FyZCQxLHNlbGVjdE5vZGVCYWNrd2FyZCQxKSxjaGFpbkNvbW1hbmRzKGRlbGV0ZVNlbGVjdGlvbiQxLGpvaW5Gb3J3YXJkJDEsc2VsZWN0Tm9kZUZvcndhcmQkMSksY2hhaW5Db21tYW5kcyhuZXdsaW5lSW5Db2RlJDEsY3JlYXRlUGFyYWdyYXBoTmVhciQxLGxpZnRFbXB0eUJsb2NrJDEsc3BsaXRCbG9jayQxKSwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj8vTWFjfGlQKGhvbmV8W29hXWQpLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk6InVuZGVmaW5lZCIhPXR5cGVvZiBvcyYmb3MucGxhdGZvcm0mJm9zLnBsYXRmb3JtKCk7Y29uc3QgZG9tSW5kZXg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7O3QrKylpZighKGU9ZS5wcmV2aW91c1NpYmxpbmcpKXJldHVybiB0fSxwYXJlbnROb2RlPWZ1bmN0aW9uKGUpe2xldCB0PWUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGU7cmV0dXJuIHQmJjExPT10Lm5vZGVUeXBlP3QuaG9zdDp0fTtsZXQgRWU9bnVsbDtjb25zdCB0ZXh0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe2xldCByPUVlfHwoRWU9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSk7cmV0dXJuIHIuc2V0RW5kKGUsbnVsbD09bj9lLm5vZGVWYWx1ZS5sZW5ndGg6biksci5zZXRTdGFydChlLHR8fDApLHJ9LGlzRXF1aXZhbGVudFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuJiYoc2NhbkZvcihlLHQsbixyLC0xKXx8c2NhbkZvcihlLHQsbixyLDEpKX0sTmU9L14oaW1nfGJyfGlucHV0fHRleHRhcmVhfGhyKSQvaTtmdW5jdGlvbiBzY2FuRm9yKGUsdCxuLHIsbyl7Zm9yKHZhciBpOzspe2lmKGU9PW4mJnQ9PXIpcmV0dXJuITA7aWYodD09KG88MD8wOm5vZGVTaXplKGUpKSl7bGV0IG49ZS5wYXJlbnROb2RlO2lmKCFufHwxIT1uLm5vZGVUeXBlfHxoYXNCbG9ja0Rlc2MoZSl8fE5lLnRlc3QoZS5ub2RlTmFtZSl8fCJmYWxzZSI9PWUuY29udGVudEVkaXRhYmxlKXJldHVybiExO3Q9ZG9tSW5kZXgoZSkrKG88MD8wOjEpLGU9bn1lbHNle2lmKDEhPWUubm9kZVR5cGUpcmV0dXJuITE7e2xldCBuPWUuY2hpbGROb2Rlc1t0KyhvPDA/LTE6MCldO2lmKDE9PW4ubm9kZVR5cGUmJiJmYWxzZSI9PW4uY29udGVudEVkaXRhYmxlKXtpZighKG51bGw9PT0oaT1uLnBtVmlld0Rlc2MpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmlnbm9yZUZvclNlbGVjdGlvbikpcmV0dXJuITE7dCs9b31lbHNlIGU9bix0PW88MD9ub2RlU2l6ZShlKTowfX19fWZ1bmN0aW9uIG5vZGVTaXplKGUpe3JldHVybiAzPT1lLm5vZGVUeXBlP2Uubm9kZVZhbHVlLmxlbmd0aDplLmNoaWxkTm9kZXMubGVuZ3RofWZ1bmN0aW9uIGhhc0Jsb2NrRGVzYyhlKXtsZXQgdDtmb3IobGV0IG49ZTtuJiYhKHQ9bi5wbVZpZXdEZXNjKTtuPW4ucGFyZW50Tm9kZSk7cmV0dXJuIHQmJnQubm9kZSYmdC5ub2RlLmlzQmxvY2smJih0LmRvbT09ZXx8dC5jb250ZW50RE9NPT1lKX1jb25zdCBzZWxlY3Rpb25Db2xsYXBzZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9jdXNOb2RlJiZpc0VxdWl2YWxlbnRQb3NpdGlvbihlLmZvY3VzTm9kZSxlLmZvY3VzT2Zmc2V0LGUuYW5jaG9yTm9kZSxlLmFuY2hvck9mZnNldCl9O2Z1bmN0aW9uIGtleUV2ZW50KGUsdCl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIG4uaW5pdEV2ZW50KCJrZXlkb3duIiwhMCwhMCksbi5rZXlDb2RlPWUsbi5rZXk9bi5jb2RlPXQsbn1jb25zdCBSZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3I6bnVsbCxEZT0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50Om51bGwsUGU9UmUmJlJlLnVzZXJBZ2VudHx8IiIsSWU9L0VkZ2VcLyhcZCspLy5leGVjKFBlKSwkZT0vTVNJRSBcZC8uZXhlYyhQZSksTGU9L1RyaWRlbnRcLyg/Ols3LTldfFxkezIsfSlcLi4qcnY6KFxkKykvLmV4ZWMoUGUpLHplPSEhKCRlfHxMZXx8SWUpLEJlPSRlP2RvY3VtZW50LmRvY3VtZW50TW9kZTpMZT8rTGVbMV06SWU/K0llWzFdOjAsRmU9IXplJiYvZ2Vja29cLyhcZCspL2kudGVzdChQZSk7RmUmJigvRmlyZWZveFwvKFxkKykvLmV4ZWMoUGUpfHxbMCwwXSlbMV07Y29uc3QgSGU9IXplJiYvQ2hyb21lXC8oXGQrKS8uZXhlYyhQZSksVmU9ISFIZSxfZT1IZT8rSGVbMV06MCxqZT0hemUmJiEhUmUmJi9BcHBsZSBDb21wdXRlci8udGVzdChSZS52ZW5kb3IpLHFlPWplJiYoL01vYmlsZVwvXHcrLy50ZXN0KFBlKXx8ISFSZSYmUmUubWF4VG91Y2hQb2ludHM+MiksVWU9cWV8fCEhUmUmJi9NYWMvLnRlc3QoUmUucGxhdGZvcm0pLFdlPSEhUmUmJi9XaW4vLnRlc3QoUmUucGxhdGZvcm0pLEtlPS9BbmRyb2lkIFxkLy50ZXN0KFBlKSxKZT0hIURlJiYid2Via2l0Rm9udFNtb290aGluZyJpbiBEZS5kb2N1bWVudEVsZW1lbnQuc3R5bGUsR2U9SmU/KygvXGJBcHBsZVdlYktpdFwvKFxkKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCl8fFswLDBdKVsxXTowO2Z1bmN0aW9uIHdpbmRvd1JlY3QoZSl7bGV0IHQ9ZS5kZWZhdWx0VmlldyYmZS5kZWZhdWx0Vmlldy52aXN1YWxWaWV3cG9ydDtyZXR1cm4gdD97bGVmdDowLHJpZ2h0OnQud2lkdGgsdG9wOjAsYm90dG9tOnQuaGVpZ2h0fTp7bGVmdDowLHJpZ2h0OmUuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHRvcDowLGJvdHRvbTplLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR9fWZ1bmN0aW9uIGdldFNpZGUkMShlLHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9lOmVbdF19ZnVuY3Rpb24gY2xpZW50UmVjdChlKXtsZXQgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC53aWR0aC9lLm9mZnNldFdpZHRofHwxLHI9dC5oZWlnaHQvZS5vZmZzZXRIZWlnaHR8fDE7cmV0dXJue2xlZnQ6dC5sZWZ0LHJpZ2h0OnQubGVmdCtlLmNsaWVudFdpZHRoKm4sdG9wOnQudG9wLGJvdHRvbTp0LnRvcCtlLmNsaWVudEhlaWdodCpyfX1mdW5jdGlvbiBzY3JvbGxSZWN0SW50b1ZpZXcoZSx0LG4pe2xldCByPWUuc29tZVByb3AoInNjcm9sbFRocmVzaG9sZCIpfHwwLG89ZS5zb21lUHJvcCgic2Nyb2xsTWFyZ2luIil8fDUsaT1lLmRvbS5vd25lckRvY3VtZW50O2ZvcihsZXQgcz1ufHxlLmRvbTtzOyl7aWYoMSE9cy5ub2RlVHlwZSl7cz1wYXJlbnROb2RlKHMpO2NvbnRpbnVlfWxldCBlPXMsbj1lPT1pLmJvZHksbD1uP3dpbmRvd1JlY3QoaSk6Y2xpZW50UmVjdChlKSxhPTAsYz0wO2lmKHQudG9wPGwudG9wK2dldFNpZGUkMShyLCJ0b3AiKT9jPS0obC50b3AtdC50b3ArZ2V0U2lkZSQxKG8sInRvcCIpKTp0LmJvdHRvbT5sLmJvdHRvbS1nZXRTaWRlJDEociwiYm90dG9tIikmJihjPXQuYm90dG9tLXQudG9wPmwuYm90dG9tLWwudG9wP3QudG9wK2dldFNpZGUkMShvLCJ0b3AiKS1sLnRvcDp0LmJvdHRvbS1sLmJvdHRvbStnZXRTaWRlJDEobywiYm90dG9tIikpLHQubGVmdDxsLmxlZnQrZ2V0U2lkZSQxKHIsImxlZnQiKT9hPS0obC5sZWZ0LXQubGVmdCtnZXRTaWRlJDEobywibGVmdCIpKTp0LnJpZ2h0PmwucmlnaHQtZ2V0U2lkZSQxKHIsInJpZ2h0IikmJihhPXQucmlnaHQtbC5yaWdodCtnZXRTaWRlJDEobywicmlnaHQiKSksYXx8YylpZihuKWkuZGVmYXVsdFZpZXcuc2Nyb2xsQnkoYSxjKTtlbHNle2xldCBuPWUuc2Nyb2xsTGVmdCxyPWUuc2Nyb2xsVG9wO2MmJihlLnNjcm9sbFRvcCs9YyksYSYmKGUuc2Nyb2xsTGVmdCs9YSk7bGV0IG89ZS5zY3JvbGxMZWZ0LW4saT1lLnNjcm9sbFRvcC1yO3Q9e2xlZnQ6dC5sZWZ0LW8sdG9wOnQudG9wLWkscmlnaHQ6dC5yaWdodC1vLGJvdHRvbTp0LmJvdHRvbS1pfX1sZXQgZD1uPyJmaXhlZCI6Z2V0Q29tcHV0ZWRTdHlsZShzKS5wb3NpdGlvbjtpZigvXihmaXhlZHxzdGlja3kpJC8udGVzdChkKSlicmVhaztzPSJhYnNvbHV0ZSI9PWQ/cy5vZmZzZXRQYXJlbnQ6cGFyZW50Tm9kZShzKX19ZnVuY3Rpb24gc2Nyb2xsU3RhY2soZSl7bGV0IHQ9W10sbj1lLm93bmVyRG9jdW1lbnQ7Zm9yKGxldCByPWU7ciYmKHQucHVzaCh7ZG9tOnIsdG9wOnIuc2Nyb2xsVG9wLGxlZnQ6ci5zY3JvbGxMZWZ0fSksZSE9bik7cj1wYXJlbnROb2RlKHIpKTtyZXR1cm4gdH1mdW5jdGlvbiByZXN0b3JlU2Nyb2xsU3RhY2soZSx0KXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0e2RvbTpyLHRvcDpvLGxlZnQ6aX09ZVtuXTtyLnNjcm9sbFRvcCE9byt0JiYoci5zY3JvbGxUb3A9byt0KSxyLnNjcm9sbExlZnQhPWkmJihyLnNjcm9sbExlZnQ9aSl9fWxldCBYZT1udWxsO2Z1bmN0aW9uIGZpbmRPZmZzZXRJbk5vZGUoZSx0KXtsZXQgbixyLG8saSxzPTJlOCxsPTAsYT10LnRvcCxjPXQudG9wO2ZvcihsZXQgZD1lLmZpcnN0Q2hpbGQscD0wO2Q7ZD1kLm5leHRTaWJsaW5nLHArKyl7bGV0IGU7aWYoMT09ZC5ub2RlVHlwZSllPWQuZ2V0Q2xpZW50UmVjdHMoKTtlbHNle2lmKDMhPWQubm9kZVR5cGUpY29udGludWU7ZT10ZXh0UmFuZ2UoZCkuZ2V0Q2xpZW50UmVjdHMoKX1mb3IobGV0IGY9MDtmPGUubGVuZ3RoO2YrKyl7bGV0IG09ZVtmXTtpZihtLnRvcDw9YSYmbS5ib3R0b20+PWMpe2E9TWF0aC5tYXgobS5ib3R0b20sYSksYz1NYXRoLm1pbihtLnRvcCxjKTtsZXQgZT1tLmxlZnQ+dC5sZWZ0P20ubGVmdC10LmxlZnQ6bS5yaWdodDx0LmxlZnQ/dC5sZWZ0LW0ucmlnaHQ6MDtpZihlPHMpe249ZCxzPWUscj1lJiYzPT1uLm5vZGVUeXBlP3tsZWZ0Om0ucmlnaHQ8dC5sZWZ0P20ucmlnaHQ6bS5sZWZ0LHRvcDp0LnRvcH06dCwxPT1kLm5vZGVUeXBlJiZlJiYobD1wKyh0LmxlZnQ+PShtLmxlZnQrbS5yaWdodCkvMj8xOjApKTtjb250aW51ZX19ZWxzZSBtLnRvcD50LnRvcCYmIW8mJm0ubGVmdDw9dC5sZWZ0JiZtLnJpZ2h0Pj10LmxlZnQmJihvPWQsaT17bGVmdDpNYXRoLm1heChtLmxlZnQsTWF0aC5taW4obS5yaWdodCx0LmxlZnQpKSx0b3A6bS50b3B9KTshbiYmKHQubGVmdD49bS5yaWdodCYmdC50b3A+PW0udG9wfHx0LmxlZnQ+PW0ubGVmdCYmdC50b3A+PW0uYm90dG9tKSYmKGw9cCsxKX19cmV0dXJuIW4mJm8mJihuPW8scj1pLHM9MCksbiYmMz09bi5ub2RlVHlwZT9mdW5jdGlvbihlLHQpe2xldCBuLHI9ZS5ub2RlVmFsdWUubGVuZ3RoLG89ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtmb3IobGV0IGk9MDtpPHI7aSsrKXtvLnNldEVuZChlLGkrMSksby5zZXRTdGFydChlLGkpO2xldCByPXNpbmdsZVJlY3QobywxKTtpZihyLnRvcCE9ci5ib3R0b20mJmluUmVjdCh0LHIpKXtuPXtub2RlOmUsb2Zmc2V0OmkrKHQubGVmdD49KHIubGVmdCtyLnJpZ2h0KS8yPzE6MCl9O2JyZWFrfX1yZXR1cm4gby5kZXRhY2goKSxufHx7bm9kZTplLG9mZnNldDowfX0obixyKTohbnx8cyYmMT09bi5ub2RlVHlwZT97bm9kZTplLG9mZnNldDpsfTpmaW5kT2Zmc2V0SW5Ob2RlKG4scil9ZnVuY3Rpb24gaW5SZWN0KGUsdCl7cmV0dXJuIGUubGVmdD49dC5sZWZ0LTEmJmUubGVmdDw9dC5yaWdodCsxJiZlLnRvcD49dC50b3AtMSYmZS50b3A8PXQuYm90dG9tKzF9ZnVuY3Rpb24gZWxlbWVudEZyb21Qb2ludChlLHQsbil7bGV0IHI9ZS5jaGlsZE5vZGVzLmxlbmd0aDtpZihyJiZuLnRvcDxuLmJvdHRvbSlmb3IobGV0IG89TWF0aC5tYXgoMCxNYXRoLm1pbihyLTEsTWF0aC5mbG9vcihyKih0LnRvcC1uLnRvcCkvKG4uYm90dG9tLW4udG9wKSktMikpLGk9bzs7KXtsZXQgbj1lLmNoaWxkTm9kZXNbaV07aWYoMT09bi5ub2RlVHlwZSl7bGV0IGU9bi5nZXRDbGllbnRSZWN0cygpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbz1lW3JdO2lmKGluUmVjdCh0LG8pKXJldHVybiBlbGVtZW50RnJvbVBvaW50KG4sdCxvKX19aWYoKGk9KGkrMSklcik9PW8pYnJlYWt9cmV0dXJuIGV9ZnVuY3Rpb24gcG9zQXRDb29yZHMoZSx0KXtsZXQgbixyPWUuZG9tLm93bmVyRG9jdW1lbnQsbz0wLGk9ZnVuY3Rpb24oZSx0LG4pe2lmKGUuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCl0cnl7bGV0IHI9ZS5jYXJldFBvc2l0aW9uRnJvbVBvaW50KHQsbik7aWYocilyZXR1cm57bm9kZTpyLm9mZnNldE5vZGUsb2Zmc2V0Ok1hdGgubWluKG5vZGVTaXplKHIub2Zmc2V0Tm9kZSksci5vZmZzZXQpfX1jYXRjaChlKXt9aWYoZS5jYXJldFJhbmdlRnJvbVBvaW50KXtsZXQgcj1lLmNhcmV0UmFuZ2VGcm9tUG9pbnQodCxuKTtpZihyKXJldHVybntub2RlOnIuc3RhcnRDb250YWluZXIsb2Zmc2V0Ok1hdGgubWluKG5vZGVTaXplKHIuc3RhcnRDb250YWluZXIpLHIuc3RhcnRPZmZzZXQpfX19KHIsdC5sZWZ0LHQudG9wKTtpJiYoe25vZGU6bixvZmZzZXQ6b309aSk7bGV0IHMsbD0oZS5yb290LmVsZW1lbnRGcm9tUG9pbnQ/ZS5yb290OnIpLmVsZW1lbnRGcm9tUG9pbnQodC5sZWZ0LHQudG9wKTtpZighbHx8IWUuZG9tLmNvbnRhaW5zKDEhPWwubm9kZVR5cGU/bC5wYXJlbnROb2RlOmwpKXtsZXQgbj1lLmRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZighaW5SZWN0KHQsbikpcmV0dXJuIG51bGw7aWYobD1lbGVtZW50RnJvbVBvaW50KGUuZG9tLHQsbiksIWwpcmV0dXJuIG51bGx9aWYoamUpZm9yKGxldCBlPWw7biYmZTtlPXBhcmVudE5vZGUoZSkpZS5kcmFnZ2FibGUmJihuPXZvaWQgMCk7aWYobD1mdW5jdGlvbihlLHQpe2xldCBuPWUucGFyZW50Tm9kZTtyZXR1cm4gbiYmL15saSQvaS50ZXN0KG4ubm9kZU5hbWUpJiZ0LmxlZnQ8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0P246ZX0obCx0KSxuKXtpZihGZSYmMT09bi5ub2RlVHlwZSYmKG89TWF0aC5taW4obyxuLmNoaWxkTm9kZXMubGVuZ3RoKSxvPG4uY2hpbGROb2Rlcy5sZW5ndGgpKXtsZXQgZSxyPW4uY2hpbGROb2Rlc1tvXTsiSU1HIj09ci5ub2RlTmFtZSYmKGU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkucmlnaHQ8PXQubGVmdCYmZS5ib3R0b20+dC50b3AmJm8rK31sZXQgcjtKZSYmbyYmMT09bi5ub2RlVHlwZSYmMT09KHI9bi5jaGlsZE5vZGVzW28tMV0pLm5vZGVUeXBlJiYiZmFsc2UiPT1yLmNvbnRlbnRFZGl0YWJsZSYmci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A+PXQudG9wJiZvLS0sbj09ZS5kb20mJm89PW4uY2hpbGROb2Rlcy5sZW5ndGgtMSYmMT09bi5sYXN0Q2hpbGQubm9kZVR5cGUmJnQudG9wPm4ubGFzdENoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbT9zPWUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZTowIT1vJiYxPT1uLm5vZGVUeXBlJiYiQlIiPT1uLmNoaWxkTm9kZXNbby0xXS5ub2RlTmFtZXx8KHM9ZnVuY3Rpb24oZSx0LG4scil7bGV0IG89LTE7Zm9yKGxldCBuPXQsaT0hMTtuIT1lLmRvbTspe2xldCB0LHM9ZS5kb2NWaWV3Lm5lYXJlc3REZXNjKG4sITApO2lmKCFzKXJldHVybiBudWxsO2lmKDE9PXMuZG9tLm5vZGVUeXBlJiYocy5ub2RlLmlzQmxvY2smJnMucGFyZW50fHwhcy5jb250ZW50RE9NKSYmKCh0PXMuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS53aWR0aHx8dC5oZWlnaHQpJiYocy5ub2RlLmlzQmxvY2smJnMucGFyZW50JiYhL15UKFJ8Qk9EWXxIRUFEfEZPT1QpJC8udGVzdChzLmRvbS5ub2RlTmFtZSkmJighaSYmdC5sZWZ0PnIubGVmdHx8dC50b3A+ci50b3A/bz1zLnBvc0JlZm9yZTooIWkmJnQucmlnaHQ8ci5sZWZ0fHx0LmJvdHRvbTxyLnRvcCkmJihvPXMucG9zQWZ0ZXIpLGk9ITApLCFzLmNvbnRlbnRET00mJm88MCYmIXMubm9kZS5pc1RleHQpKXJldHVybihzLm5vZGUuaXNCbG9jaz9yLnRvcDwodC50b3ArdC5ib3R0b20pLzI6ci5sZWZ0PCh0LmxlZnQrdC5yaWdodCkvMik/cy5wb3NCZWZvcmU6cy5wb3NBZnRlcjtuPXMuZG9tLnBhcmVudE5vZGV9cmV0dXJuIG8+LTE/bzplLmRvY1ZpZXcucG9zRnJvbURPTSh0LG4sLTEpfShlLG4sbyx0KSl9bnVsbD09cyYmKHM9ZnVuY3Rpb24oZSx0LG4pe2xldHtub2RlOnIsb2Zmc2V0Om99PWZpbmRPZmZzZXRJbk5vZGUodCxuKSxpPS0xO2lmKDE9PXIubm9kZVR5cGUmJiFyLmZpcnN0Q2hpbGQpe2xldCBlPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aT1lLmxlZnQhPWUucmlnaHQmJm4ubGVmdD4oZS5sZWZ0K2UucmlnaHQpLzI/MTotMX1yZXR1cm4gZS5kb2NWaWV3LnBvc0Zyb21ET00ocixvLGkpfShlLGwsdCkpO2xldCBhPWUuZG9jVmlldy5uZWFyZXN0RGVzYyhsLCEwKTtyZXR1cm57cG9zOnMsaW5zaWRlOmE/YS5wb3NBdFN0YXJ0LWEuYm9yZGVyOi0xfX1mdW5jdGlvbiBub25aZXJvKGUpe3JldHVybiBlLnRvcDxlLmJvdHRvbXx8ZS5sZWZ0PGUucmlnaHR9ZnVuY3Rpb24gc2luZ2xlUmVjdChlLHQpe2xldCBuPWUuZ2V0Q2xpZW50UmVjdHMoKTtpZihuLmxlbmd0aCl7bGV0IGU9blt0PDA/MDpuLmxlbmd0aC0xXTtpZihub25aZXJvKGUpKXJldHVybiBlfXJldHVybiBBcnJheS5wcm90b3R5cGUuZmluZC5jYWxsKG4sbm9uWmVybyl8fGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y29uc3QgUWU9L1tcdTA1OTAtXHUwNWY0XHUwNjAwLVx1MDZmZlx1MDcwMC1cdTA4YWNdLztmdW5jdGlvbiBjb29yZHNBdFBvcyhlLHQsbil7bGV0e25vZGU6cixvZmZzZXQ6byxhdG9tOml9PWUuZG9jVmlldy5kb21Gcm9tUG9zKHQsbjwwPy0xOjEpLHM9SmV8fEZlO2lmKDM9PXIubm9kZVR5cGUpe2lmKCFzfHwhUWUudGVzdChyLm5vZGVWYWx1ZSkmJihuPDA/bzpvIT1yLm5vZGVWYWx1ZS5sZW5ndGgpKXtsZXQgZT1vLHQ9byxpPW48MD8xOi0xO3JldHVybiBuPDAmJiFvPyh0KyssaT0tMSk6bj49MCYmbz09ci5ub2RlVmFsdWUubGVuZ3RoPyhlLS0saT0xKTpuPDA/ZS0tOnQrKyxmbGF0dGVuVihzaW5nbGVSZWN0KHRleHRSYW5nZShyLGUsdCksaSksaTwwKX17bGV0IGU9c2luZ2xlUmVjdCh0ZXh0UmFuZ2UocixvLG8pLG4pO2lmKEZlJiZvJiYvXHMvLnRlc3Qoci5ub2RlVmFsdWVbby0xXSkmJm88ci5ub2RlVmFsdWUubGVuZ3RoKXtsZXQgdD1zaW5nbGVSZWN0KHRleHRSYW5nZShyLG8tMSxvLTEpLC0xKTtpZih0LnRvcD09ZS50b3Ape2xldCBuPXNpbmdsZVJlY3QodGV4dFJhbmdlKHIsbyxvKzEpLC0xKTtpZihuLnRvcCE9ZS50b3ApcmV0dXJuIGZsYXR0ZW5WKG4sbi5sZWZ0PHQubGVmdCl9fXJldHVybiBlfX1pZighZS5zdGF0ZS5kb2MucmVzb2x2ZSh0LShpfHwwKSkucGFyZW50LmlubGluZUNvbnRlbnQpe2lmKG51bGw9PWkmJm8mJihuPDB8fG89PW5vZGVTaXplKHIpKSl7bGV0IGU9ci5jaGlsZE5vZGVzW28tMV07aWYoMT09ZS5ub2RlVHlwZSlyZXR1cm4gZmxhdHRlbkgoZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwhMSl9aWYobnVsbD09aSYmbzxub2RlU2l6ZShyKSl7bGV0IGU9ci5jaGlsZE5vZGVzW29dO2lmKDE9PWUubm9kZVR5cGUpcmV0dXJuIGZsYXR0ZW5IKGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksITApfXJldHVybiBmbGF0dGVuSChyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG4+PTApfWlmKG51bGw9PWkmJm8mJihuPDB8fG89PW5vZGVTaXplKHIpKSl7bGV0IGU9ci5jaGlsZE5vZGVzW28tMV0sdD0zPT1lLm5vZGVUeXBlP3RleHRSYW5nZShlLG5vZGVTaXplKGUpLShzPzA6MSkpOjEhPWUubm9kZVR5cGV8fCJCUiI9PWUubm9kZU5hbWUmJmUubmV4dFNpYmxpbmc/bnVsbDplO2lmKHQpcmV0dXJuIGZsYXR0ZW5WKHNpbmdsZVJlY3QodCwxKSwhMSl9aWYobnVsbD09aSYmbzxub2RlU2l6ZShyKSl7bGV0IGU9ci5jaGlsZE5vZGVzW29dO2Zvcig7ZS5wbVZpZXdEZXNjJiZlLnBtVmlld0Rlc2MuaWdub3JlRm9yQ29vcmRzOyllPWUubmV4dFNpYmxpbmc7bGV0IHQ9ZT8zPT1lLm5vZGVUeXBlP3RleHRSYW5nZShlLDAscz8wOjEpOjE9PWUubm9kZVR5cGU/ZTpudWxsOm51bGw7aWYodClyZXR1cm4gZmxhdHRlblYoc2luZ2xlUmVjdCh0LC0xKSwhMCl9cmV0dXJuIGZsYXR0ZW5WKHNpbmdsZVJlY3QoMz09ci5ub2RlVHlwZT90ZXh0UmFuZ2Uocik6ciwtbiksbj49MCl9ZnVuY3Rpb24gZmxhdHRlblYoZSx0KXtpZigwPT1lLndpZHRoKXJldHVybiBlO2xldCBuPXQ/ZS5sZWZ0OmUucmlnaHQ7cmV0dXJue3RvcDplLnRvcCxib3R0b206ZS5ib3R0b20sbGVmdDpuLHJpZ2h0Om59fWZ1bmN0aW9uIGZsYXR0ZW5IKGUsdCl7aWYoMD09ZS5oZWlnaHQpcmV0dXJuIGU7bGV0IG49dD9lLnRvcDplLmJvdHRvbTtyZXR1cm57dG9wOm4sYm90dG9tOm4sbGVmdDplLmxlZnQscmlnaHQ6ZS5yaWdodH19ZnVuY3Rpb24gd2l0aEZsdXNoZWRTdGF0ZShlLHQsbil7bGV0IHI9ZS5zdGF0ZSxvPWUucm9vdC5hY3RpdmVFbGVtZW50O3IhPXQmJmUudXBkYXRlU3RhdGUodCksbyE9ZS5kb20mJmUuZm9jdXMoKTt0cnl7cmV0dXJuIG4oKX1maW5hbGx5e3IhPXQmJmUudXBkYXRlU3RhdGUociksbyE9ZS5kb20mJm8mJm8uZm9jdXMoKX19Y29uc3QgWmU9L1tcdTA1OTAtXHUwOGFjXS87bGV0IFllPW51bGwsZXQ9bnVsbCxudD0hMTtmdW5jdGlvbiBlbmRPZlRleHRibG9jayhlLHQsbil7cmV0dXJuIFllPT10JiZldD09bj9udDooWWU9dCxldD1uLG50PSJ1cCI9PW58fCJkb3duIj09bj9mdW5jdGlvbihlLHQsbil7bGV0IHI9dC5zZWxlY3Rpb24sbz0idXAiPT1uP3IuJGZyb206ci4kdG87cmV0dXJuIHdpdGhGbHVzaGVkU3RhdGUoZSx0LCgpPT57bGV0e25vZGU6dH09ZS5kb2NWaWV3LmRvbUZyb21Qb3Moby5wb3MsInVwIj09bj8tMToxKTtmb3IoOzspe2xldCBuPWUuZG9jVmlldy5uZWFyZXN0RGVzYyh0LCEwKTtpZighbilicmVhaztpZihuLm5vZGUuaXNCbG9jayl7dD1uLmNvbnRlbnRET018fG4uZG9tO2JyZWFrfXQ9bi5kb20ucGFyZW50Tm9kZX1sZXQgcj1jb29yZHNBdFBvcyhlLG8ucG9zLDEpO2ZvcihsZXQgZT10LmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpe2xldCB0O2lmKDE9PWUubm9kZVR5cGUpdD1lLmdldENsaWVudFJlY3RzKCk7ZWxzZXtpZigzIT1lLm5vZGVUeXBlKWNvbnRpbnVlO3Q9dGV4dFJhbmdlKGUsMCxlLm5vZGVWYWx1ZS5sZW5ndGgpLmdldENsaWVudFJlY3RzKCl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBvPXRbZV07aWYoby5ib3R0b20+by50b3ArMSYmKCJ1cCI9PW4/ci50b3Atby50b3A+Miooby5ib3R0b20tci50b3ApOm8uYm90dG9tLXIuYm90dG9tPjIqKHIuYm90dG9tLW8udG9wKSkpcmV0dXJuITF9fXJldHVybiEwfSl9KGUsdCxuKTpmdW5jdGlvbihlLHQsbil7bGV0eyRoZWFkOnJ9PXQuc2VsZWN0aW9uO2lmKCFyLnBhcmVudC5pc1RleHRibG9jaylyZXR1cm4hMTtsZXQgbz1yLnBhcmVudE9mZnNldCxpPSFvLHM9bz09ci5wYXJlbnQuY29udGVudC5zaXplLGw9ZS5kb21TZWxlY3Rpb24oKTtyZXR1cm4gbD9aZS50ZXN0KHIucGFyZW50LnRleHRDb250ZW50KSYmbC5tb2RpZnk/d2l0aEZsdXNoZWRTdGF0ZShlLHQsKCk9PntsZXR7Zm9jdXNOb2RlOnQsZm9jdXNPZmZzZXQ6byxhbmNob3JOb2RlOmksYW5jaG9yT2Zmc2V0OnN9PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxhPWwuY2FyZXRCaWRpTGV2ZWw7bC5tb2RpZnkoIm1vdmUiLG4sImNoYXJhY3RlciIpO2xldCBjPXIuZGVwdGg/ZS5kb2NWaWV3LmRvbUFmdGVyUG9zKHIuYmVmb3JlKCkpOmUuZG9tLHtmb2N1c05vZGU6ZCxmb2N1c09mZnNldDpwfT1lLmRvbVNlbGVjdGlvblJhbmdlKCksZj1kJiYhYy5jb250YWlucygxPT1kLm5vZGVUeXBlP2Q6ZC5wYXJlbnROb2RlKXx8dD09ZCYmbz09cDt0cnl7bC5jb2xsYXBzZShpLHMpLHQmJih0IT1pfHxvIT1zKSYmbC5leHRlbmQmJmwuZXh0ZW5kKHQsbyl9Y2F0Y2goZSl7fXJldHVybiBudWxsIT1hJiYobC5jYXJldEJpZGlMZXZlbD1hKSxmfSk6ImxlZnQiPT1ufHwiYmFja3dhcmQiPT1uP2k6czpyLnBvcz09ci5zdGFydCgpfHxyLnBvcz09ci5lbmQoKX0oZSx0LG4pKX1jbGFzcyBWaWV3RGVzY3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnBhcmVudD1lLHRoaXMuY2hpbGRyZW49dCx0aGlzLmRvbT1uLHRoaXMuY29udGVudERPTT1yLHRoaXMuZGlydHk9MCxuLnBtVmlld0Rlc2M9dGhpc31tYXRjaGVzV2lkZ2V0KGUpe3JldHVybiExfW1hdGNoZXNNYXJrKGUpe3JldHVybiExfW1hdGNoZXNOb2RlKGUsdCxuKXtyZXR1cm4hMX1tYXRjaGVzSGFjayhlKXtyZXR1cm4hMX1wYXJzZVJ1bGUoKXtyZXR1cm4gbnVsbH1zdG9wRXZlbnQoZSl7cmV0dXJuITF9Z2V0IHNpemUoKXtsZXQgZT0wO2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKWUrPXRoaXMuY2hpbGRyZW5bdF0uc2l6ZTtyZXR1cm4gZX1nZXQgYm9yZGVyKCl7cmV0dXJuIDB9ZGVzdHJveSgpe3RoaXMucGFyZW50PXZvaWQgMCx0aGlzLmRvbS5wbVZpZXdEZXNjPT10aGlzJiYodGhpcy5kb20ucG1WaWV3RGVzYz12b2lkIDApO2ZvcihsZXQgZT0wO2U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZSsrKXRoaXMuY2hpbGRyZW5bZV0uZGVzdHJveSgpfXBvc0JlZm9yZUNoaWxkKGUpe2ZvcihsZXQgdD0wLG49dGhpcy5wb3NBdFN0YXJ0Ozt0Kyspe2xldCByPXRoaXMuY2hpbGRyZW5bdF07aWYocj09ZSlyZXR1cm4gbjtuKz1yLnNpemV9fWdldCBwb3NCZWZvcmUoKXtyZXR1cm4gdGhpcy5wYXJlbnQucG9zQmVmb3JlQ2hpbGQodGhpcyl9Z2V0IHBvc0F0U3RhcnQoKXtyZXR1cm4gdGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQucG9zQmVmb3JlQ2hpbGQodGhpcykrdGhpcy5ib3JkZXI6MH1nZXQgcG9zQWZ0ZXIoKXtyZXR1cm4gdGhpcy5wb3NCZWZvcmUrdGhpcy5zaXplfWdldCBwb3NBdEVuZCgpe3JldHVybiB0aGlzLnBvc0F0U3RhcnQrdGhpcy5zaXplLTIqdGhpcy5ib3JkZXJ9bG9jYWxQb3NGcm9tRE9NKGUsdCxuKXtpZih0aGlzLmNvbnRlbnRET00mJnRoaXMuY29udGVudERPTS5jb250YWlucygxPT1lLm5vZGVUeXBlP2U6ZS5wYXJlbnROb2RlKSl7aWYobjwwKXtsZXQgbixyO2lmKGU9PXRoaXMuY29udGVudERPTSluPWUuY2hpbGROb2Rlc1t0LTFdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7bj1lLnByZXZpb3VzU2libGluZ31mb3IoO24mJighKHI9bi5wbVZpZXdEZXNjKXx8ci5wYXJlbnQhPXRoaXMpOyluPW4ucHJldmlvdXNTaWJsaW5nO3JldHVybiBuP3RoaXMucG9zQmVmb3JlQ2hpbGQocikrci5zaXplOnRoaXMucG9zQXRTdGFydH17bGV0IG4scjtpZihlPT10aGlzLmNvbnRlbnRET00pbj1lLmNoaWxkTm9kZXNbdF07ZWxzZXtmb3IoO2UucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NOyllPWUucGFyZW50Tm9kZTtuPWUubmV4dFNpYmxpbmd9Zm9yKDtuJiYoIShyPW4ucG1WaWV3RGVzYyl8fHIucGFyZW50IT10aGlzKTspbj1uLm5leHRTaWJsaW5nO3JldHVybiBuP3RoaXMucG9zQmVmb3JlQ2hpbGQocik6dGhpcy5wb3NBdEVuZH19bGV0IHI7aWYoZT09dGhpcy5kb20mJnRoaXMuY29udGVudERPTSlyPXQ+ZG9tSW5kZXgodGhpcy5jb250ZW50RE9NKTtlbHNlIGlmKHRoaXMuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NIT10aGlzLmRvbSYmdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKSlyPTImZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzLmNvbnRlbnRET00pO2Vsc2UgaWYodGhpcy5kb20uZmlyc3RDaGlsZCl7aWYoMD09dClmb3IobGV0IHQ9ZTs7dD10LnBhcmVudE5vZGUpe2lmKHQ9PXRoaXMuZG9tKXtyPSExO2JyZWFrfWlmKHQucHJldmlvdXNTaWJsaW5nKWJyZWFrfWlmKG51bGw9PXImJnQ9PWUuY2hpbGROb2Rlcy5sZW5ndGgpZm9yKGxldCB0PWU7O3Q9dC5wYXJlbnROb2RlKXtpZih0PT10aGlzLmRvbSl7cj0hMDticmVha31pZih0Lm5leHRTaWJsaW5nKWJyZWFrfX1yZXR1cm4obnVsbD09cj9uPjA6cik/dGhpcy5wb3NBdEVuZDp0aGlzLnBvc0F0U3RhcnR9bmVhcmVzdERlc2MoZSx0PSExKXtmb3IobGV0IG49ITAscj1lO3I7cj1yLnBhcmVudE5vZGUpe2xldCBvLGk9dGhpcy5nZXREZXNjKHIpO2lmKGkmJighdHx8aS5ub2RlKSl7aWYoIW58fCEobz1pLm5vZGVET00pfHwoMT09by5ub2RlVHlwZT9vLmNvbnRhaW5zKDE9PWUubm9kZVR5cGU/ZTplLnBhcmVudE5vZGUpOm89PWUpKXJldHVybiBpO249ITF9fX1nZXREZXNjKGUpe2xldCB0PWUucG1WaWV3RGVzYztmb3IobGV0IGU9dDtlO2U9ZS5wYXJlbnQpaWYoZT09dGhpcylyZXR1cm4gdH1wb3NGcm9tRE9NKGUsdCxuKXtmb3IobGV0IHI9ZTtyO3I9ci5wYXJlbnROb2RlKXtsZXQgbz10aGlzLmdldERlc2Mocik7aWYobylyZXR1cm4gby5sb2NhbFBvc0Zyb21ET00oZSx0LG4pfXJldHVybi0xfWRlc2NBdChlKXtmb3IobGV0IHQ9MCxuPTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2xldCByPXRoaXMuY2hpbGRyZW5bdF0sbz1uK3Iuc2l6ZTtpZihuPT1lJiZvIT1uKXtmb3IoOyFyLmJvcmRlciYmci5jaGlsZHJlbi5sZW5ndGg7KWZvcihsZXQgZT0wO2U8ci5jaGlsZHJlbi5sZW5ndGg7ZSsrKXtsZXQgdD1yLmNoaWxkcmVuW2VdO2lmKHQuc2l6ZSl7cj10O2JyZWFrfX1yZXR1cm4gcn1pZihlPG8pcmV0dXJuIHIuZGVzY0F0KGUtbi1yLmJvcmRlcik7bj1vfX1kb21Gcm9tUG9zKGUsdCl7aWYoIXRoaXMuY29udGVudERPTSlyZXR1cm57bm9kZTp0aGlzLmRvbSxvZmZzZXQ6MCxhdG9tOmUrMX07bGV0IG49MCxyPTA7Zm9yKGxldCB0PTA7bjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtuKyspe2xldCBvPXRoaXMuY2hpbGRyZW5bbl0saT10K28uc2l6ZTtpZihpPmV8fG8gaW5zdGFuY2VvZiBUcmFpbGluZ0hhY2tWaWV3RGVzYyl7cj1lLXQ7YnJlYWt9dD1pfWlmKHIpcmV0dXJuIHRoaXMuY2hpbGRyZW5bbl0uZG9tRnJvbVBvcyhyLXRoaXMuY2hpbGRyZW5bbl0uYm9yZGVyLHQpO2ZvcihsZXQgZTtuJiYhKGU9dGhpcy5jaGlsZHJlbltuLTFdKS5zaXplJiZlIGluc3RhbmNlb2YgV2lkZ2V0Vmlld0Rlc2MmJmUuc2lkZT49MDtuLS0pO2lmKHQ8PTApe2xldCBlLHI9ITA7Zm9yKDtlPW4/dGhpcy5jaGlsZHJlbltuLTFdOm51bGwsZSYmZS5kb20ucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NO24tLSxyPSExKTtyZXR1cm4gZSYmdCYmciYmIWUuYm9yZGVyJiYhZS5kb21BdG9tP2UuZG9tRnJvbVBvcyhlLnNpemUsdCk6e25vZGU6dGhpcy5jb250ZW50RE9NLG9mZnNldDplP2RvbUluZGV4KGUuZG9tKSsxOjB9fXtsZXQgZSxyPSEwO2Zvcig7ZT1uPHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bbl06bnVsbCxlJiZlLmRvbS5wYXJlbnROb2RlIT10aGlzLmNvbnRlbnRET007bisrLHI9ITEpO3JldHVybiBlJiZyJiYhZS5ib3JkZXImJiFlLmRvbUF0b20/ZS5kb21Gcm9tUG9zKDAsdCk6e25vZGU6dGhpcy5jb250ZW50RE9NLG9mZnNldDplP2RvbUluZGV4KGUuZG9tKTp0aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGh9fX1wYXJzZVJhbmdlKGUsdCxuPTApe2lmKDA9PXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXJldHVybntub2RlOnRoaXMuY29udGVudERPTSxmcm9tOmUsdG86dCxmcm9tT2Zmc2V0OjAsdG9PZmZzZXQ6dGhpcy5jb250ZW50RE9NLmNoaWxkTm9kZXMubGVuZ3RofTtsZXQgcj0tMSxvPS0xO2ZvcihsZXQgaT1uLHM9MDs7cysrKXtsZXQgbj10aGlzLmNoaWxkcmVuW3NdLGw9aStuLnNpemU7aWYoLTE9PXImJmU8PWwpe2xldCBvPWkrbi5ib3JkZXI7aWYoZT49byYmdDw9bC1uLmJvcmRlciYmbi5ub2RlJiZuLmNvbnRlbnRET00mJnRoaXMuY29udGVudERPTS5jb250YWlucyhuLmNvbnRlbnRET00pKXJldHVybiBuLnBhcnNlUmFuZ2UoZSx0LG8pO2U9aTtmb3IobGV0IHQ9czt0PjA7dC0tKXtsZXQgbj10aGlzLmNoaWxkcmVuW3QtMV07aWYobi5zaXplJiZuLmRvbS5wYXJlbnROb2RlPT10aGlzLmNvbnRlbnRET00mJiFuLmVtcHR5Q2hpbGRBdCgxKSl7cj1kb21JbmRleChuLmRvbSkrMTticmVha31lLT1uLnNpemV9LTE9PXImJihyPTApfWlmKHI+LTEmJihsPnR8fHM9PXRoaXMuY2hpbGRyZW4ubGVuZ3RoLTEpKXt0PWw7Zm9yKGxldCBlPXMrMTtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKyl7bGV0IG49dGhpcy5jaGlsZHJlbltlXTtpZihuLnNpemUmJm4uZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIW4uZW1wdHlDaGlsZEF0KC0xKSl7bz1kb21JbmRleChuLmRvbSk7YnJlYWt9dCs9bi5zaXplfS0xPT1vJiYobz10aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGgpO2JyZWFrfWk9bH1yZXR1cm57bm9kZTp0aGlzLmNvbnRlbnRET00sZnJvbTplLHRvOnQsZnJvbU9mZnNldDpyLHRvT2Zmc2V0Om99fWVtcHR5Q2hpbGRBdChlKXtpZih0aGlzLmJvcmRlcnx8IXRoaXMuY29udGVudERPTXx8IXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiExO2xldCB0PXRoaXMuY2hpbGRyZW5bZTwwPzA6dGhpcy5jaGlsZHJlbi5sZW5ndGgtMV07cmV0dXJuIDA9PXQuc2l6ZXx8dC5lbXB0eUNoaWxkQXQoZSl9ZG9tQWZ0ZXJQb3MoZSl7bGV0e25vZGU6dCxvZmZzZXQ6bn09dGhpcy5kb21Gcm9tUG9zKGUsMCk7aWYoMSE9dC5ub2RlVHlwZXx8bj09dC5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gbm9kZSBhZnRlciBwb3MgIitlKTtyZXR1cm4gdC5jaGlsZE5vZGVzW25dfXNldFNlbGVjdGlvbihlLHQsbixyPSExKXtsZXQgbz1NYXRoLm1pbihlLHQpLGk9TWF0aC5tYXgoZSx0KTtmb3IobGV0IHM9MCxsPTA7czx0aGlzLmNoaWxkcmVuLmxlbmd0aDtzKyspe2xldCBhPXRoaXMuY2hpbGRyZW5bc10sYz1sK2Euc2l6ZTtpZihvPmwmJmk8YylyZXR1cm4gYS5zZXRTZWxlY3Rpb24oZS1sLWEuYm9yZGVyLHQtbC1hLmJvcmRlcixuLHIpO2w9Y31sZXQgcz10aGlzLmRvbUZyb21Qb3MoZSxlPy0xOjEpLGw9dD09ZT9zOnRoaXMuZG9tRnJvbVBvcyh0LHQ/LTE6MSksYT1uLnJvb3QuZ2V0U2VsZWN0aW9uKCksYz1uLmRvbVNlbGVjdGlvblJhbmdlKCksZD0hMTtpZigoRmV8fGplKSYmZT09dCl7bGV0e25vZGU6ZSxvZmZzZXQ6dH09cztpZigzPT1lLm5vZGVUeXBlKXtpZihkPSEoIXR8fCJcbiIhPWUubm9kZVZhbHVlW3QtMV0pLGQmJnQ9PWUubm9kZVZhbHVlLmxlbmd0aClmb3IobGV0IHQsbj1lO247bj1uLnBhcmVudE5vZGUpe2lmKHQ9bi5uZXh0U2libGluZyl7IkJSIj09dC5ub2RlTmFtZSYmKHM9bD17bm9kZTp0LnBhcmVudE5vZGUsb2Zmc2V0OmRvbUluZGV4KHQpKzF9KTticmVha31sZXQgZT1uLnBtVmlld0Rlc2M7aWYoZSYmZS5ub2RlJiZlLm5vZGUuaXNCbG9jaylicmVha319ZWxzZXtsZXQgbj1lLmNoaWxkTm9kZXNbdC0xXTtkPW4mJigiQlIiPT1uLm5vZGVOYW1lfHwiZmFsc2UiPT1uLmNvbnRlbnRFZGl0YWJsZSl9fWlmKEZlJiZjLmZvY3VzTm9kZSYmYy5mb2N1c05vZGUhPWwubm9kZSYmMT09Yy5mb2N1c05vZGUubm9kZVR5cGUpe2xldCBlPWMuZm9jdXNOb2RlLmNoaWxkTm9kZXNbYy5mb2N1c09mZnNldF07ZSYmImZhbHNlIj09ZS5jb250ZW50RWRpdGFibGUmJihyPSEwKX1pZighKHJ8fGQmJmplKSYmaXNFcXVpdmFsZW50UG9zaXRpb24ocy5ub2RlLHMub2Zmc2V0LGMuYW5jaG9yTm9kZSxjLmFuY2hvck9mZnNldCkmJmlzRXF1aXZhbGVudFBvc2l0aW9uKGwubm9kZSxsLm9mZnNldCxjLmZvY3VzTm9kZSxjLmZvY3VzT2Zmc2V0KSlyZXR1cm47bGV0IHA9ITE7aWYoKGEuZXh0ZW5kfHxlPT10KSYmKCFkfHwhRmUpKXthLmNvbGxhcHNlKHMubm9kZSxzLm9mZnNldCk7dHJ5e2UhPXQmJmEuZXh0ZW5kKGwubm9kZSxsLm9mZnNldCkscD0hMH1jYXRjaChlKXt9fWlmKCFwKXtpZihlPnQpe2xldCBlPXM7cz1sLGw9ZX1sZXQgbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO24uc2V0RW5kKGwubm9kZSxsLm9mZnNldCksbi5zZXRTdGFydChzLm5vZGUscy5vZmZzZXQpLGEucmVtb3ZlQWxsUmFuZ2VzKCksYS5hZGRSYW5nZShuKX19aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIXRoaXMuY29udGVudERPTSYmInNlbGVjdGlvbiIhPWUudHlwZX1nZXQgY29udGVudExvc3QoKXtyZXR1cm4gdGhpcy5jb250ZW50RE9NJiZ0aGlzLmNvbnRlbnRET00hPXRoaXMuZG9tJiYhdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKX1tYXJrRGlydHkoZSx0KXtmb3IobGV0IG49MCxyPTA7cjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtyKyspe2xldCBvPXRoaXMuY2hpbGRyZW5bcl0saT1uK28uc2l6ZTtpZihuPT1pP2U8PWkmJnQ+PW46ZTxpJiZ0Pm4pe2xldCByPW4rby5ib3JkZXIscz1pLW8uYm9yZGVyO2lmKGU+PXImJnQ8PXMpcmV0dXJuIHRoaXMuZGlydHk9ZT09bnx8dD09aT8yOjEsdm9pZChlIT1yfHx0IT1zfHwhby5jb250ZW50TG9zdCYmby5kb20ucGFyZW50Tm9kZT09dGhpcy5jb250ZW50RE9NP28ubWFya0RpcnR5KGUtcix0LXIpOm8uZGlydHk9Myk7by5kaXJ0eT1vLmRvbSE9by5jb250ZW50RE9NfHxvLmRvbS5wYXJlbnROb2RlIT10aGlzLmNvbnRlbnRET018fG8uY2hpbGRyZW4ubGVuZ3RoPzM6Mn1uPWl9dGhpcy5kaXJ0eT0yfW1hcmtQYXJlbnRzRGlydHkoKXtsZXQgZT0xO2ZvcihsZXQgdD10aGlzLnBhcmVudDt0O3Q9dC5wYXJlbnQsZSsrKXtsZXQgbj0xPT1lPzI6MTt0LmRpcnR5PG4mJih0LmRpcnR5PW4pfX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWdldCBpZ25vcmVGb3JDb29yZHMoKXtyZXR1cm4hMX1nZXQgaWdub3JlRm9yU2VsZWN0aW9uKCl7cmV0dXJuITF9aXNUZXh0KGUpe3JldHVybiExfX1jbGFzcyBXaWRnZXRWaWV3RGVzYyBleHRlbmRzIFZpZXdEZXNje2NvbnN0cnVjdG9yKGUsdCxuLHIpe2xldCBvLGk9dC50eXBlLnRvRE9NO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiYoaT1pKG4sKCk9Pm8/by5wYXJlbnQ/by5wYXJlbnQucG9zQmVmb3JlQ2hpbGQobyk6dm9pZCAwOnIpKSwhdC50eXBlLnNwZWMucmF3KXtpZigxIT1pLm5vZGVUeXBlKXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5hcHBlbmRDaGlsZChpKSxpPWV9aS5jb250ZW50RWRpdGFibGU9ImZhbHNlIixpLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLXdpZGdldCIpfXN1cGVyKGUsW10saSxudWxsKSx0aGlzLndpZGdldD10LHRoaXMud2lkZ2V0PXQsbz10aGlzfW1hdGNoZXNXaWRnZXQoZSl7cmV0dXJuIDA9PXRoaXMuZGlydHkmJmUudHlwZS5lcSh0aGlzLndpZGdldC50eXBlKX1wYXJzZVJ1bGUoKXtyZXR1cm57aWdub3JlOiEwfX1zdG9wRXZlbnQoZSl7bGV0IHQ9dGhpcy53aWRnZXQuc3BlYy5zdG9wRXZlbnQ7cmV0dXJuISF0JiZ0KGUpfWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiJzZWxlY3Rpb24iIT1lLnR5cGV8fHRoaXMud2lkZ2V0LnNwZWMuaWdub3JlU2VsZWN0aW9ufWRlc3Ryb3koKXt0aGlzLndpZGdldC50eXBlLmRlc3Ryb3kodGhpcy5kb20pLHN1cGVyLmRlc3Ryb3koKX1nZXQgZG9tQXRvbSgpe3JldHVybiEwfWdldCBpZ25vcmVGb3JTZWxlY3Rpb24oKXtyZXR1cm4hIXRoaXMud2lkZ2V0LnR5cGUuc3BlYy5yZWxheGVkU2lkZX1nZXQgc2lkZSgpe3JldHVybiB0aGlzLndpZGdldC50eXBlLnNpZGV9fWNsYXNzIENvbXBvc2l0aW9uVmlld0Rlc2MgZXh0ZW5kcyBWaWV3RGVzY3tjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLFtdLHQsbnVsbCksdGhpcy50ZXh0RE9NPW4sdGhpcy50ZXh0PXJ9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH1sb2NhbFBvc0Zyb21ET00oZSx0KXtyZXR1cm4gZSE9dGhpcy50ZXh0RE9NP3RoaXMucG9zQXRTdGFydCsodD90aGlzLnNpemU6MCk6dGhpcy5wb3NBdFN0YXJ0K3R9ZG9tRnJvbVBvcyhlKXtyZXR1cm57bm9kZTp0aGlzLnRleHRET00sb2Zmc2V0OmV9fWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiJjaGFyYWN0ZXJEYXRhIj09PWUudHlwZSYmZS50YXJnZXQubm9kZVZhbHVlPT1lLm9sZFZhbHVlfX1jbGFzcyBNYXJrVmlld0Rlc2MgZXh0ZW5kcyBWaWV3RGVzY3tjb25zdHJ1Y3RvcihlLHQsbixyLG8pe3N1cGVyKGUsW10sbixyKSx0aGlzLm1hcms9dCx0aGlzLnNwZWM9b31zdGF0aWMgY3JlYXRlKGUsdCxuLHIpe2xldCBvPXIubm9kZVZpZXdzW3QudHlwZS5uYW1lXSxpPW8mJm8odCxyLG4pO3JldHVybiBpJiZpLmRvbXx8KGk9RE9NU2VyaWFsaXplci5yZW5kZXJTcGVjKGRvY3VtZW50LHQudHlwZS5zcGVjLnRvRE9NKHQsbiksbnVsbCx0LmF0dHJzKSksbmV3IE1hcmtWaWV3RGVzYyhlLHQsaS5kb20saS5jb250ZW50RE9NfHxpLmRvbSxpKX1wYXJzZVJ1bGUoKXtyZXR1cm4gMyZ0aGlzLmRpcnR5fHx0aGlzLm1hcmsudHlwZS5zcGVjLnJlcGFyc2VJblZpZXc/bnVsbDp7bWFyazp0aGlzLm1hcmsudHlwZS5uYW1lLGF0dHJzOnRoaXMubWFyay5hdHRycyxjb250ZW50RWxlbWVudDp0aGlzLmNvbnRlbnRET019fW1hdGNoZXNNYXJrKGUpe3JldHVybiAzIT10aGlzLmRpcnR5JiZ0aGlzLm1hcmsuZXEoZSl9bWFya0RpcnR5KGUsdCl7aWYoc3VwZXIubWFya0RpcnR5KGUsdCksMCE9dGhpcy5kaXJ0eSl7bGV0IGU9dGhpcy5wYXJlbnQ7Zm9yKDshZS5ub2RlOyllPWUucGFyZW50O2UuZGlydHk8dGhpcy5kaXJ0eSYmKGUuZGlydHk9dGhpcy5kaXJ0eSksdGhpcy5kaXJ0eT0wfX1zbGljZShlLHQsbil7bGV0IHI9TWFya1ZpZXdEZXNjLmNyZWF0ZSh0aGlzLnBhcmVudCx0aGlzLm1hcmssITAsbiksbz10aGlzLmNoaWxkcmVuLGk9dGhpcy5zaXplO3Q8aSYmKG89cmVwbGFjZU5vZGVzKG8sdCxpLG4pKSxlPjAmJihvPXJlcGxhY2VOb2RlcyhvLDAsZSxuKSk7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspb1tlXS5wYXJlbnQ9cjtyZXR1cm4gci5jaGlsZHJlbj1vLHJ9aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIHRoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbj90aGlzLnNwZWMuaWdub3JlTXV0YXRpb24oZSk6c3VwZXIuaWdub3JlTXV0YXRpb24oZSl9ZGVzdHJveSgpe3RoaXMuc3BlYy5kZXN0cm95JiZ0aGlzLnNwZWMuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX19Y2xhc3MgTm9kZVZpZXdEZXNjIGV4dGVuZHMgVmlld0Rlc2N7Y29uc3RydWN0b3IoZSx0LG4scixvLGkscyxsLGEpe3N1cGVyKGUsW10sbyxpKSx0aGlzLm5vZGU9dCx0aGlzLm91dGVyRGVjbz1uLHRoaXMuaW5uZXJEZWNvPXIsdGhpcy5ub2RlRE9NPXN9c3RhdGljIGNyZWF0ZShlLHQsbixyLG8saSl7bGV0IHMsbD1vLm5vZGVWaWV3c1t0LnR5cGUubmFtZV0sYT1sJiZsKHQsbywoKT0+cz9zLnBhcmVudD9zLnBhcmVudC5wb3NCZWZvcmVDaGlsZChzKTp2b2lkIDA6aSxuLHIpLGM9YSYmYS5kb20sZD1hJiZhLmNvbnRlbnRET007aWYodC5pc1RleHQpaWYoYyl7aWYoMyE9Yy5ub2RlVHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGV4dCBtdXN0IGJlIHJlbmRlcmVkIGFzIGEgRE9NIHRleHQgbm9kZSIpfWVsc2UgYz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpO2Vsc2UgaWYoIWMpe2xldCBlPURPTVNlcmlhbGl6ZXIucmVuZGVyU3BlYyhkb2N1bWVudCx0LnR5cGUuc3BlYy50b0RPTSh0KSxudWxsLHQuYXR0cnMpOyh7ZG9tOmMsY29udGVudERPTTpkfT1lKX1kfHx0LmlzVGV4dHx8IkJSIj09Yy5ub2RlTmFtZXx8KGMuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8KGMuY29udGVudEVkaXRhYmxlPSJmYWxzZSIpLHQudHlwZS5zcGVjLmRyYWdnYWJsZSYmKGMuZHJhZ2dhYmxlPSEwKSk7bGV0IHA9YztyZXR1cm4gYz1hcHBseU91dGVyRGVjbyhjLG4sdCksYT9zPW5ldyBDdXN0b21Ob2RlVmlld0Rlc2MoZSx0LG4scixjLGR8fG51bGwscCxhLG8saSsxKTp0LmlzVGV4dD9uZXcgVGV4dFZpZXdEZXNjKGUsdCxuLHIsYyxwLG8pOm5ldyBOb2RlVmlld0Rlc2MoZSx0LG4scixjLGR8fG51bGwscCxvLGkrMSl9cGFyc2VSdWxlKCl7aWYodGhpcy5ub2RlLnR5cGUuc3BlYy5yZXBhcnNlSW5WaWV3KXJldHVybiBudWxsO2xldCBlPXtub2RlOnRoaXMubm9kZS50eXBlLm5hbWUsYXR0cnM6dGhpcy5ub2RlLmF0dHJzfTtpZigicHJlIj09dGhpcy5ub2RlLnR5cGUud2hpdGVzcGFjZSYmKGUucHJlc2VydmVXaGl0ZXNwYWNlPSJmdWxsIiksdGhpcy5jb250ZW50RE9NKWlmKHRoaXMuY29udGVudExvc3Qpe2ZvcihsZXQgdD10aGlzLmNoaWxkcmVuLmxlbmd0aC0xO3Q+PTA7dC0tKXtsZXQgbj10aGlzLmNoaWxkcmVuW3RdO2lmKHRoaXMuZG9tLmNvbnRhaW5zKG4uZG9tLnBhcmVudE5vZGUpKXtlLmNvbnRlbnRFbGVtZW50PW4uZG9tLnBhcmVudE5vZGU7YnJlYWt9fWUuY29udGVudEVsZW1lbnR8fChlLmdldENvbnRlbnQ9KCk9PkZyYWdtZW50LmVtcHR5KX1lbHNlIGUuY29udGVudEVsZW1lbnQ9dGhpcy5jb250ZW50RE9NO2Vsc2UgZS5nZXRDb250ZW50PSgpPT50aGlzLm5vZGUuY29udGVudDtyZXR1cm4gZX1tYXRjaGVzTm9kZShlLHQsbil7cmV0dXJuIDA9PXRoaXMuZGlydHkmJmUuZXEodGhpcy5ub2RlKSYmc2FtZU91dGVyRGVjbyh0LHRoaXMub3V0ZXJEZWNvKSYmbi5lcSh0aGlzLmlubmVyRGVjbyl9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVTaXplfWdldCBib3JkZXIoKXtyZXR1cm4gdGhpcy5ub2RlLmlzTGVhZj8wOjF9dXBkYXRlQ2hpbGRyZW4oZSx0KXtsZXQgbj10aGlzLm5vZGUuaW5saW5lQ29udGVudCxyPXQsbz1lLmNvbXBvc2luZz90aGlzLmxvY2FsQ29tcG9zaXRpb25JbmZvKGUsdCk6bnVsbCxpPW8mJm8ucG9zPi0xP286bnVsbCxzPW8mJm8ucG9zPDAsbD1uZXcgVmlld1RyZWVVcGRhdGVyKHRoaXMsaSYmaS5ub2RlLGUpOyFmdW5jdGlvbihlLHQsbixyKXtsZXQgbz10LmxvY2FscyhlKSxpPTA7aWYoMD09by5sZW5ndGgpe2ZvcihsZXQgbj0wO248ZS5jaGlsZENvdW50O24rKyl7bGV0IHM9ZS5jaGlsZChuKTtyKHMsbyx0LmZvckNoaWxkKGkscyksbiksaSs9cy5ub2RlU2l6ZX1yZXR1cm59bGV0IHM9MCxsPVtdLGE9bnVsbDtmb3IobGV0IGM9MDs7KXtsZXQgZCxwLGYsbTtmb3IoO3M8by5sZW5ndGgmJm9bc10udG89PWk7KXtsZXQgZT1vW3MrK107ZS53aWRnZXQmJihkPyhwfHwocD1bZF0pKS5wdXNoKGUpOmQ9ZSl9aWYoZClpZihwKXtwLnNvcnQoY29tcGFyZVNpZGUpO2ZvcihsZXQgZT0wO2U8cC5sZW5ndGg7ZSsrKW4ocFtlXSxjLCEhYSl9ZWxzZSBuKGQsYywhIWEpO2lmKGEpbT0tMSxmPWEsYT1udWxsO2Vsc2V7aWYoIShjPGUuY2hpbGRDb3VudCkpYnJlYWs7bT1jLGY9ZS5jaGlsZChjKyspfWZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSsrKWxbZV0udG88PWkmJmwuc3BsaWNlKGUtLSwxKTtmb3IoO3M8by5sZW5ndGgmJm9bc10uZnJvbTw9aSYmb1tzXS50bz5pOylsLnB1c2gob1tzKytdKTtsZXQgeT1pK2Yubm9kZVNpemU7aWYoZi5pc1RleHQpe2xldCBlPXk7czxvLmxlbmd0aCYmb1tzXS5mcm9tPGUmJihlPW9bc10uZnJvbSk7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0KyspbFt0XS50bzxlJiYoZT1sW3RdLnRvKTtlPHkmJihhPWYuY3V0KGUtaSksZj1mLmN1dCgwLGUtaSkseT1lLG09LTEpfWVsc2UgZm9yKDtzPG8ubGVuZ3RoJiZvW3NdLnRvPHk7KXMrKztyKGYsZi5pc0lubGluZSYmIWYuaXNMZWFmP2wuZmlsdGVyKGU9PiFlLmlubGluZSk6bC5zbGljZSgpLHQuZm9yQ2hpbGQoaSxmKSxtKSxpPXl9fSh0aGlzLm5vZGUsdGhpcy5pbm5lckRlY28sKHQsbyxpKT0+e3Quc3BlYy5tYXJrcz9sLnN5bmNUb01hcmtzKHQuc3BlYy5tYXJrcyxuLGUsbyk6dC50eXBlLnNpZGU+PTAmJiFpJiZsLnN5bmNUb01hcmtzKG89PXRoaXMubm9kZS5jaGlsZENvdW50P2xlLm5vbmU6dGhpcy5ub2RlLmNoaWxkKG8pLm1hcmtzLG4sZSxvKSxsLnBsYWNlV2lkZ2V0KHQsZSxyKX0sKHQsaSxhLGMpPT57bGV0IGQ7bC5zeW5jVG9NYXJrcyh0Lm1hcmtzLG4sZSxjKSxsLmZpbmROb2RlTWF0Y2godCxpLGEsYyl8fHMmJmUuc3RhdGUuc2VsZWN0aW9uLmZyb20+ciYmZS5zdGF0ZS5zZWxlY3Rpb24udG88cit0Lm5vZGVTaXplJiYoZD1sLmZpbmRJbmRleFdpdGhDaGlsZChvLm5vZGUpKT4tMSYmbC51cGRhdGVOb2RlQXQodCxpLGEsZCxlKXx8bC51cGRhdGVOZXh0Tm9kZSh0LGksYSxlLGMscil8fGwuYWRkTm9kZSh0LGksYSxlLHIpLHIrPXQubm9kZVNpemV9KSxsLnN5bmNUb01hcmtzKFtdLG4sZSwwKSx0aGlzLm5vZGUuaXNUZXh0YmxvY2smJmwuYWRkVGV4dGJsb2NrSGFja3MoKSxsLmRlc3Ryb3lSZXN0KCksKGwuY2hhbmdlZHx8Mj09dGhpcy5kaXJ0eSkmJihpJiZ0aGlzLnByb3RlY3RMb2NhbENvbXBvc2l0aW9uKGUsaSkscmVuZGVyRGVzY3ModGhpcy5jb250ZW50RE9NLHRoaXMuY2hpbGRyZW4sZSkscWUmJmZ1bmN0aW9uKGUpe2lmKCJVTCI9PWUubm9kZU5hbWV8fCJPTCI9PWUubm9kZU5hbWUpe2xldCB0PWUuc3R5bGUuY3NzVGV4dDtlLnN0eWxlLmNzc1RleHQ9dCsiOyBsaXN0LXN0eWxlOiBzcXVhcmUgIWltcG9ydGFudCIsd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkubGlzdFN0eWxlLGUuc3R5bGUuY3NzVGV4dD10fX0odGhpcy5kb20pKX1sb2NhbENvbXBvc2l0aW9uSW5mbyhlLHQpe2xldHtmcm9tOm4sdG86cn09ZS5zdGF0ZS5zZWxlY3Rpb247aWYoIShlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pfHxuPHR8fHI+dCt0aGlzLm5vZGUuY29udGVudC5zaXplKXJldHVybiBudWxsO2xldCBvPWUuaW5wdXQuY29tcG9zaXRpb25Ob2RlO2lmKCFvfHwhdGhpcy5kb20uY29udGFpbnMoby5wYXJlbnROb2RlKSlyZXR1cm4gbnVsbDtpZih0aGlzLm5vZGUuaW5saW5lQ29udGVudCl7bGV0IGU9by5ub2RlVmFsdWUsaT1mdW5jdGlvbihlLHQsbixyKXtmb3IobGV0IG89MCxpPTA7bzxlLmNoaWxkQ291bnQmJmk8PXI7KXtsZXQgcz1lLmNoaWxkKG8rKyksbD1pO2lmKGkrPXMubm9kZVNpemUsIXMuaXNUZXh0KWNvbnRpbnVlO2xldCBhPXMudGV4dDtmb3IoO288ZS5jaGlsZENvdW50Oyl7bGV0IHQ9ZS5jaGlsZChvKyspO2lmKGkrPXQubm9kZVNpemUsIXQuaXNUZXh0KWJyZWFrO2ErPXQudGV4dH1pZihpPj1uKXtpZihpPj1yJiZhLnNsaWNlKHItdC5sZW5ndGgtbCxyLWwpPT10KXJldHVybiByLXQubGVuZ3RoO2xldCBlPWw8cj9hLmxhc3RJbmRleE9mKHQsci1sLTEpOi0xO2lmKGU+PTAmJmUrdC5sZW5ndGgrbD49bilyZXR1cm4gbCtlO2lmKG49PXImJmEubGVuZ3RoPj1yK3QubGVuZ3RoLWwmJmEuc2xpY2Uoci1sLHItbCt0Lmxlbmd0aCk9PXQpcmV0dXJuIHJ9fXJldHVybi0xfSh0aGlzLm5vZGUuY29udGVudCxlLG4tdCxyLXQpO3JldHVybiBpPDA/bnVsbDp7bm9kZTpvLHBvczppLHRleHQ6ZX19cmV0dXJue25vZGU6byxwb3M6LTEsdGV4dDoiIn19cHJvdGVjdExvY2FsQ29tcG9zaXRpb24oZSx7bm9kZTp0LHBvczpuLHRleHQ6cn0pe2lmKHRoaXMuZ2V0RGVzYyh0KSlyZXR1cm47bGV0IG89dDtmb3IoO28ucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NO289by5wYXJlbnROb2RlKXtmb3IoO28ucHJldmlvdXNTaWJsaW5nOylvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoby5wcmV2aW91c1NpYmxpbmcpO2Zvcig7by5uZXh0U2libGluZzspby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8ubmV4dFNpYmxpbmcpO28ucG1WaWV3RGVzYyYmKG8ucG1WaWV3RGVzYz12b2lkIDApfWxldCBpPW5ldyBDb21wb3NpdGlvblZpZXdEZXNjKHRoaXMsbyx0LHIpO2UuaW5wdXQuY29tcG9zaXRpb25Ob2Rlcy5wdXNoKGkpLHRoaXMuY2hpbGRyZW49cmVwbGFjZU5vZGVzKHRoaXMuY2hpbGRyZW4sbixuK3IubGVuZ3RoLGUsaSl9dXBkYXRlKGUsdCxuLHIpe3JldHVybiEoMz09dGhpcy5kaXJ0eXx8IWUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpKSYmKHRoaXMudXBkYXRlSW5uZXIoZSx0LG4sciksITApfXVwZGF0ZUlubmVyKGUsdCxuLHIpe3RoaXMudXBkYXRlT3V0ZXJEZWNvKHQpLHRoaXMubm9kZT1lLHRoaXMuaW5uZXJEZWNvPW4sdGhpcy5jb250ZW50RE9NJiZ0aGlzLnVwZGF0ZUNoaWxkcmVuKHIsdGhpcy5wb3NBdFN0YXJ0KSx0aGlzLmRpcnR5PTB9dXBkYXRlT3V0ZXJEZWNvKGUpe2lmKHNhbWVPdXRlckRlY28oZSx0aGlzLm91dGVyRGVjbykpcmV0dXJuO2xldCB0PTEhPXRoaXMubm9kZURPTS5ub2RlVHlwZSxuPXRoaXMuZG9tO3RoaXMuZG9tPXBhdGNoT3V0ZXJEZWNvKHRoaXMuZG9tLHRoaXMubm9kZURPTSxjb21wdXRlT3V0ZXJEZWNvKHRoaXMub3V0ZXJEZWNvLHRoaXMubm9kZSx0KSxjb21wdXRlT3V0ZXJEZWNvKGUsdGhpcy5ub2RlLHQpKSx0aGlzLmRvbSE9biYmKG4ucG1WaWV3RGVzYz12b2lkIDAsdGhpcy5kb20ucG1WaWV3RGVzYz10aGlzKSx0aGlzLm91dGVyRGVjbz1lfXNlbGVjdE5vZGUoKXsxPT10aGlzLm5vZGVET00ubm9kZVR5cGUmJih0aGlzLm5vZGVET00uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlIiksIXRoaXMuY29udGVudERPTSYmdGhpcy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGV8fCh0aGlzLm5vZGVET00uZHJhZ2dhYmxlPSEwKSl9ZGVzZWxlY3ROb2RlKCl7MT09dGhpcy5ub2RlRE9NLm5vZGVUeXBlJiYodGhpcy5ub2RlRE9NLmNsYXNzTGlzdC5yZW1vdmUoIlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZSIpLCF0aGlzLmNvbnRlbnRET00mJnRoaXMubm9kZS50eXBlLnNwZWMuZHJhZ2dhYmxlfHx0aGlzLm5vZGVET00ucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKSl9Z2V0IGRvbUF0b20oKXtyZXR1cm4gdGhpcy5ub2RlLmlzQXRvbX19ZnVuY3Rpb24gZG9jVmlld0Rlc2MoZSx0LG4scixvKXthcHBseU91dGVyRGVjbyhyLHQsZSk7bGV0IGk9bmV3IE5vZGVWaWV3RGVzYyh2b2lkIDAsZSx0LG4scixyLHIsbywwKTtyZXR1cm4gaS5jb250ZW50RE9NJiZpLnVwZGF0ZUNoaWxkcmVuKG8sMCksaX1jbGFzcyBUZXh0Vmlld0Rlc2MgZXh0ZW5kcyBOb2RlVmlld0Rlc2N7Y29uc3RydWN0b3IoZSx0LG4scixvLGkscyl7c3VwZXIoZSx0LG4scixvLG51bGwsaSxzLDApfXBhcnNlUnVsZSgpe2xldCBlPXRoaXMubm9kZURPTS5wYXJlbnROb2RlO2Zvcig7ZSYmZSE9dGhpcy5kb20mJiFlLnBtSXNEZWNvOyllPWUucGFyZW50Tm9kZTtyZXR1cm57c2tpcDplfHwhMH19dXBkYXRlKGUsdCxuLHIpe3JldHVybiEoMz09dGhpcy5kaXJ0eXx8MCE9dGhpcy5kaXJ0eSYmIXRoaXMuaW5QYXJlbnQoKXx8IWUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpKSYmKHRoaXMudXBkYXRlT3V0ZXJEZWNvKHQpLDA9PXRoaXMuZGlydHkmJmUudGV4dD09dGhpcy5ub2RlLnRleHR8fGUudGV4dD09dGhpcy5ub2RlRE9NLm5vZGVWYWx1ZXx8KHRoaXMubm9kZURPTS5ub2RlVmFsdWU9ZS50ZXh0LHIudHJhY2tXcml0ZXM9PXRoaXMubm9kZURPTSYmKHIudHJhY2tXcml0ZXM9bnVsbCkpLHRoaXMubm9kZT1lLHRoaXMuZGlydHk9MCwhMCl9aW5QYXJlbnQoKXtsZXQgZT10aGlzLnBhcmVudC5jb250ZW50RE9NO2ZvcihsZXQgdD10aGlzLm5vZGVET007dDt0PXQucGFyZW50Tm9kZSlpZih0PT1lKXJldHVybiEwO3JldHVybiExfWRvbUZyb21Qb3MoZSl7cmV0dXJue25vZGU6dGhpcy5ub2RlRE9NLG9mZnNldDplfX1sb2NhbFBvc0Zyb21ET00oZSx0LG4pe3JldHVybiBlPT10aGlzLm5vZGVET00/dGhpcy5wb3NBdFN0YXJ0K01hdGgubWluKHQsdGhpcy5ub2RlLnRleHQubGVuZ3RoKTpzdXBlci5sb2NhbFBvc0Zyb21ET00oZSx0LG4pfWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiJjaGFyYWN0ZXJEYXRhIiE9ZS50eXBlJiYic2VsZWN0aW9uIiE9ZS50eXBlfXNsaWNlKGUsdCxuKXtsZXQgcj10aGlzLm5vZGUuY3V0KGUsdCksbz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShyLnRleHQpO3JldHVybiBuZXcgVGV4dFZpZXdEZXNjKHRoaXMucGFyZW50LHIsdGhpcy5vdXRlckRlY28sdGhpcy5pbm5lckRlY28sbyxvLG4pfW1hcmtEaXJ0eShlLHQpe3N1cGVyLm1hcmtEaXJ0eShlLHQpLHRoaXMuZG9tPT10aGlzLm5vZGVET018fDAhPWUmJnQhPXRoaXMubm9kZURPTS5ub2RlVmFsdWUubGVuZ3RofHwodGhpcy5kaXJ0eT0zKX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWlzVGV4dChlKXtyZXR1cm4gdGhpcy5ub2RlLnRleHQ9PWV9fWNsYXNzIFRyYWlsaW5nSGFja1ZpZXdEZXNjIGV4dGVuZHMgVmlld0Rlc2N7cGFyc2VSdWxlKCl7cmV0dXJue2lnbm9yZTohMH19bWF0Y2hlc0hhY2soZSl7cmV0dXJuIDA9PXRoaXMuZGlydHkmJnRoaXMuZG9tLm5vZGVOYW1lPT1lfWdldCBkb21BdG9tKCl7cmV0dXJuITB9Z2V0IGlnbm9yZUZvckNvb3Jkcygpe3JldHVybiJJTUciPT10aGlzLmRvbS5ub2RlTmFtZX19Y2xhc3MgQ3VzdG9tTm9kZVZpZXdEZXNjIGV4dGVuZHMgTm9kZVZpZXdEZXNje2NvbnN0cnVjdG9yKGUsdCxuLHIsbyxpLHMsbCxhLGMpe3N1cGVyKGUsdCxuLHIsbyxpLHMsYSxjKSx0aGlzLnNwZWM9bH11cGRhdGUoZSx0LG4scil7aWYoMz09dGhpcy5kaXJ0eSlyZXR1cm4hMTtpZih0aGlzLnNwZWMudXBkYXRlJiYodGhpcy5ub2RlLnR5cGU9PWUudHlwZXx8dGhpcy5zcGVjLm11bHRpVHlwZSkpe2xldCBvPXRoaXMuc3BlYy51cGRhdGUoZSx0LG4pO3JldHVybiBvJiZ0aGlzLnVwZGF0ZUlubmVyKGUsdCxuLHIpLG99cmV0dXJuISghdGhpcy5jb250ZW50RE9NJiYhZS5pc0xlYWYpJiZzdXBlci51cGRhdGUoZSx0LG4scil9c2VsZWN0Tm9kZSgpe3RoaXMuc3BlYy5zZWxlY3ROb2RlP3RoaXMuc3BlYy5zZWxlY3ROb2RlKCk6c3VwZXIuc2VsZWN0Tm9kZSgpfWRlc2VsZWN0Tm9kZSgpe3RoaXMuc3BlYy5kZXNlbGVjdE5vZGU/dGhpcy5zcGVjLmRlc2VsZWN0Tm9kZSgpOnN1cGVyLmRlc2VsZWN0Tm9kZSgpfXNldFNlbGVjdGlvbihlLHQsbixyKXt0aGlzLnNwZWMuc2V0U2VsZWN0aW9uP3RoaXMuc3BlYy5zZXRTZWxlY3Rpb24oZSx0LG4ucm9vdCk6c3VwZXIuc2V0U2VsZWN0aW9uKGUsdCxuLHIpfWRlc3Ryb3koKXt0aGlzLnNwZWMuZGVzdHJveSYmdGhpcy5zcGVjLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9c3RvcEV2ZW50KGUpe3JldHVybiEhdGhpcy5zcGVjLnN0b3BFdmVudCYmdGhpcy5zcGVjLnN0b3BFdmVudChlKX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gdGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uP3RoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihlKTpzdXBlci5pZ25vcmVNdXRhdGlvbihlKX19ZnVuY3Rpb24gcmVuZGVyRGVzY3MoZSx0LG4pe2xldCByPWUuZmlyc3RDaGlsZCxvPSExO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtsZXQgcz10W2ldLGw9cy5kb207aWYobC5wYXJlbnROb2RlPT1lKXtmb3IoO2whPXI7KXI9cm0ociksbz0hMDtyPXIubmV4dFNpYmxpbmd9ZWxzZSBvPSEwLGUuaW5zZXJ0QmVmb3JlKGwscik7aWYocyBpbnN0YW5jZW9mIE1hcmtWaWV3RGVzYyl7bGV0IHQ9cj9yLnByZXZpb3VzU2libGluZzplLmxhc3RDaGlsZDtyZW5kZXJEZXNjcyhzLmNvbnRlbnRET00scy5jaGlsZHJlbixuKSxyPXQ/dC5uZXh0U2libGluZzplLmZpcnN0Q2hpbGR9fWZvcig7cjspcj1ybShyKSxvPSEwO28mJm4udHJhY2tXcml0ZXM9PWUmJihuLnRyYWNrV3JpdGVzPW51bGwpfWNvbnN0IE91dGVyRGVjb0xldmVsPWZ1bmN0aW9uKGUpe2UmJih0aGlzLm5vZGVOYW1lPWUpfTtPdXRlckRlY29MZXZlbC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBydD1bbmV3IE91dGVyRGVjb0xldmVsXTtmdW5jdGlvbiBjb21wdXRlT3V0ZXJEZWNvKGUsdCxuKXtpZigwPT1lLmxlbmd0aClyZXR1cm4gcnQ7bGV0IHI9bj9ydFswXTpuZXcgT3V0ZXJEZWNvTGV2ZWwsbz1bcl07Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2xldCBzPWVbaV0udHlwZS5hdHRycztpZihzKXtzLm5vZGVOYW1lJiZvLnB1c2gocj1uZXcgT3V0ZXJEZWNvTGV2ZWwocy5ub2RlTmFtZSkpO2ZvcihsZXQgZSBpbiBzKXtsZXQgaT1zW2VdO251bGwhPWkmJihuJiYxPT1vLmxlbmd0aCYmby5wdXNoKHI9bmV3IE91dGVyRGVjb0xldmVsKHQuaXNJbmxpbmU/InNwYW4iOiJkaXYiKSksImNsYXNzIj09ZT9yLmNsYXNzPShyLmNsYXNzP3IuY2xhc3MrIiAiOiIiKStpOiJzdHlsZSI9PWU/ci5zdHlsZT0oci5zdHlsZT9yLnN0eWxlKyI7IjoiIikraToibm9kZU5hbWUiIT1lJiYocltlXT1pKSl9fX1yZXR1cm4gb31mdW5jdGlvbiBwYXRjaE91dGVyRGVjbyhlLHQsbixyKXtpZihuPT1ydCYmcj09cnQpcmV0dXJuIHQ7bGV0IG89dDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7bGV0IGk9clt0XSxzPW5bdF07aWYodCl7bGV0IHQ7cyYmcy5ub2RlTmFtZT09aS5ub2RlTmFtZSYmbyE9ZSYmKHQ9by5wYXJlbnROb2RlKSYmdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT1pLm5vZGVOYW1lfHwodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGkubm9kZU5hbWUpLHQucG1Jc0RlY289ITAsdC5hcHBlbmRDaGlsZChvKSxzPXJ0WzBdKSxvPXR9cGF0Y2hBdHRyaWJ1dGVzKG8sc3x8cnRbMF0saSl9cmV0dXJuIG99ZnVuY3Rpb24gcGF0Y2hBdHRyaWJ1dGVzKGUsdCxuKXtmb3IobGV0IHIgaW4gdCkiY2xhc3MiPT1yfHwic3R5bGUiPT1yfHwibm9kZU5hbWUiPT1yfHxyIGluIG58fGUucmVtb3ZlQXR0cmlidXRlKHIpO2ZvcihsZXQgciBpbiBuKSJjbGFzcyIhPXImJiJzdHlsZSIhPXImJiJub2RlTmFtZSIhPXImJm5bcl0hPXRbcl0mJmUuc2V0QXR0cmlidXRlKHIsbltyXSk7aWYodC5jbGFzcyE9bi5jbGFzcyl7bGV0IHI9dC5jbGFzcz90LmNsYXNzLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pOltdLG89bi5jbGFzcz9uLmNsYXNzLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pOltdO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKS0xPT1vLmluZGV4T2Yoclt0XSkmJmUuY2xhc3NMaXN0LnJlbW92ZShyW3RdKTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyktMT09ci5pbmRleE9mKG9bdF0pJiZlLmNsYXNzTGlzdC5hZGQob1t0XSk7MD09ZS5jbGFzc0xpc3QubGVuZ3RoJiZlLnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX1pZih0LnN0eWxlIT1uLnN0eWxlKXtpZih0LnN0eWxlKXtsZXQgbixyPS9ccyooW1x3XC1ceGExLVx1ZmZmZl0rKVxzKjooPzoiKD86XFwufFteIl0pKiJ8Jyg/OlxcLnxbXiddKSonfFwoLio/XCl8W147XSkqL2c7Zm9yKDtuPXIuZXhlYyh0LnN0eWxlKTspZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuWzFdKX1uLnN0eWxlJiYoZS5zdHlsZS5jc3NUZXh0Kz1uLnN0eWxlKX19ZnVuY3Rpb24gYXBwbHlPdXRlckRlY28oZSx0LG4pe3JldHVybiBwYXRjaE91dGVyRGVjbyhlLGUscnQsY29tcHV0ZU91dGVyRGVjbyh0LG4sMSE9ZS5ub2RlVHlwZSkpfWZ1bmN0aW9uIHNhbWVPdXRlckRlY28oZSx0KXtpZihlLmxlbmd0aCE9dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYoIWVbbl0udHlwZS5lcSh0W25dLnR5cGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHJtKGUpe2xldCB0PWUubmV4dFNpYmxpbmc7cmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSx0fWNsYXNzIFZpZXdUcmVlVXBkYXRlcntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5sb2NrPXQsdGhpcy52aWV3PW4sdGhpcy5pbmRleD0wLHRoaXMuc3RhY2s9W10sdGhpcy5jaGFuZ2VkPSExLHRoaXMudG9wPWUsdGhpcy5wcmVNYXRjaD1mdW5jdGlvbihlLHQpe2xldCBuPXQscj1uLmNoaWxkcmVuLmxlbmd0aCxvPWUuY2hpbGRDb3VudCxpPW5ldyBNYXAscz1bXTtlOmZvcig7bz4wOyl7bGV0IGw7Zm9yKDs7KWlmKHIpe2xldCBlPW4uY2hpbGRyZW5bci0xXTtpZighKGUgaW5zdGFuY2VvZiBNYXJrVmlld0Rlc2MpKXtsPWUsci0tO2JyZWFrfW49ZSxyPWUuY2hpbGRyZW4ubGVuZ3RofWVsc2V7aWYobj09dClicmVhayBlO3I9bi5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihuKSxuPW4ucGFyZW50fWxldCBhPWwubm9kZTtpZihhKXtpZihhIT1lLmNoaWxkKG8tMSkpYnJlYWs7LS1vLGkuc2V0KGwsbykscy5wdXNoKGwpfX1yZXR1cm57aW5kZXg6byxtYXRjaGVkOmksbWF0Y2hlczpzLnJldmVyc2UoKX19KGUubm9kZS5jb250ZW50LGUpfWRlc3Ryb3lCZXR3ZWVuKGUsdCl7aWYoZSE9dCl7Zm9yKGxldCBuPWU7bjx0O24rKyl0aGlzLnRvcC5jaGlsZHJlbltuXS5kZXN0cm95KCk7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKGUsdC1lKSx0aGlzLmNoYW5nZWQ9ITB9fWRlc3Ryb3lSZXN0KCl7dGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aCl9c3luY1RvTWFya3MoZSx0LG4scil7bGV0IG89MCxpPXRoaXMuc3RhY2subGVuZ3RoPj4xLHM9TWF0aC5taW4oaSxlLmxlbmd0aCk7Zm9yKDtvPHMmJihvPT1pLTE/dGhpcy50b3A6dGhpcy5zdGFja1tvKzE8PDFdKS5tYXRjaGVzTWFyayhlW29dKSYmITEhPT1lW29dLnR5cGUuc3BlYy5zcGFubmluZzspbysrO2Zvcig7bzxpOyl0aGlzLmRlc3Ryb3lSZXN0KCksdGhpcy50b3AuZGlydHk9MCx0aGlzLmluZGV4PXRoaXMuc3RhY2sucG9wKCksdGhpcy50b3A9dGhpcy5zdGFjay5wb3AoKSxpLS07Zm9yKDtpPGUubGVuZ3RoOyl7dGhpcy5zdGFjay5wdXNoKHRoaXMudG9wLHRoaXMuaW5kZXgrMSk7bGV0IG89LTEscz10aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGg7cjx0aGlzLnByZU1hdGNoLmluZGV4JiYocz1NYXRoLm1pbih0aGlzLmluZGV4KzMscykpO2ZvcihsZXQgdD10aGlzLmluZGV4O3Q8czt0Kyspe2xldCBuPXRoaXMudG9wLmNoaWxkcmVuW3RdO2lmKG4ubWF0Y2hlc01hcmsoZVtpXSkmJiF0aGlzLmlzTG9ja2VkKG4uZG9tKSl7bz10O2JyZWFrfX1pZihvPi0xKW8+dGhpcy5pbmRleCYmKHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsbykpLHRoaXMudG9wPXRoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdO2Vsc2V7bGV0IHI9TWFya1ZpZXdEZXNjLmNyZWF0ZSh0aGlzLnRvcCxlW2ldLHQsbik7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgsMCxyKSx0aGlzLnRvcD1yLHRoaXMuY2hhbmdlZD0hMH10aGlzLmluZGV4PTAsaSsrfX1maW5kTm9kZU1hdGNoKGUsdCxuLHIpe2xldCBvLGk9LTE7aWYocj49dGhpcy5wcmVNYXRjaC5pbmRleCYmKG89dGhpcy5wcmVNYXRjaC5tYXRjaGVzW3ItdGhpcy5wcmVNYXRjaC5pbmRleF0pLnBhcmVudD09dGhpcy50b3AmJm8ubWF0Y2hlc05vZGUoZSx0LG4pKWk9dGhpcy50b3AuY2hpbGRyZW4uaW5kZXhPZihvLHRoaXMuaW5kZXgpO2Vsc2UgZm9yKGxldCByPXRoaXMuaW5kZXgsbz1NYXRoLm1pbih0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGgscis1KTtyPG87cisrKXtsZXQgbz10aGlzLnRvcC5jaGlsZHJlbltyXTtpZihvLm1hdGNoZXNOb2RlKGUsdCxuKSYmIXRoaXMucHJlTWF0Y2gubWF0Y2hlZC5oYXMobykpe2k9cjticmVha319cmV0dXJuIShpPDApJiYodGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGkpLHRoaXMuaW5kZXgrKywhMCl9dXBkYXRlTm9kZUF0KGUsdCxuLHIsbyl7bGV0IGk9dGhpcy50b3AuY2hpbGRyZW5bcl07cmV0dXJuIDM9PWkuZGlydHkmJmkuZG9tPT1pLmNvbnRlbnRET00mJihpLmRpcnR5PTIpLCEhaS51cGRhdGUoZSx0LG4sbykmJih0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsciksdGhpcy5pbmRleCsrLCEwKX1maW5kSW5kZXhXaXRoQ2hpbGQoZSl7Zm9yKDs7KXtsZXQgdD1lLnBhcmVudE5vZGU7aWYoIXQpcmV0dXJuLTE7aWYodD09dGhpcy50b3AuY29udGVudERPTSl7bGV0IHQ9ZS5wbVZpZXdEZXNjO2lmKHQpZm9yKGxldCBlPXRoaXMuaW5kZXg7ZTx0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGg7ZSsrKWlmKHRoaXMudG9wLmNoaWxkcmVuW2VdPT10KXJldHVybiBlO3JldHVybi0xfWU9dH19dXBkYXRlTmV4dE5vZGUoZSx0LG4scixvLGkpe2ZvcihsZXQgcz10aGlzLmluZGV4O3M8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoO3MrKyl7bGV0IGw9dGhpcy50b3AuY2hpbGRyZW5bc107aWYobCBpbnN0YW5jZW9mIE5vZGVWaWV3RGVzYyl7bGV0IGE9dGhpcy5wcmVNYXRjaC5tYXRjaGVkLmdldChsKTtpZihudWxsIT1hJiZhIT1vKXJldHVybiExO2xldCBjLGQ9bC5kb20scD10aGlzLmlzTG9ja2VkKGQpJiYhKGUuaXNUZXh0JiZsLm5vZGUmJmwubm9kZS5pc1RleHQmJmwubm9kZURPTS5ub2RlVmFsdWU9PWUudGV4dCYmMyE9bC5kaXJ0eSYmc2FtZU91dGVyRGVjbyh0LGwub3V0ZXJEZWNvKSk7aWYoIXAmJmwudXBkYXRlKGUsdCxuLHIpKXJldHVybiB0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgscyksbC5kb20hPWQmJih0aGlzLmNoYW5nZWQ9ITApLHRoaXMuaW5kZXgrKywhMDtpZighcCYmKGM9dGhpcy5yZWNyZWF0ZVdyYXBwZXIobCxlLHQsbixyLGkpKSlyZXR1cm4gdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LHMpLHRoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdPWMsYy5jb250ZW50RE9NJiYoYy5kaXJ0eT0yLGMudXBkYXRlQ2hpbGRyZW4ocixpKzEpLGMuZGlydHk9MCksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuaW5kZXgrKywhMDticmVha319cmV0dXJuITF9cmVjcmVhdGVXcmFwcGVyKGUsdCxuLHIsbyxpKXtpZihlLmRpcnR5fHx0LmlzQXRvbXx8IWUuY2hpbGRyZW4ubGVuZ3RofHwhZS5ub2RlLmNvbnRlbnQuZXEodC5jb250ZW50KXx8IXNhbWVPdXRlckRlY28obixlLm91dGVyRGVjbyl8fCFyLmVxKGUuaW5uZXJEZWNvKSlyZXR1cm4gbnVsbDtsZXQgcz1Ob2RlVmlld0Rlc2MuY3JlYXRlKHRoaXMudG9wLHQsbixyLG8saSk7aWYocy5jb250ZW50RE9NKXtzLmNoaWxkcmVuPWUuY2hpbGRyZW4sZS5jaGlsZHJlbj1bXTtmb3IobGV0IGUgb2Ygcy5jaGlsZHJlbillLnBhcmVudD1zfXJldHVybiBlLmRlc3Ryb3koKSxzfWFkZE5vZGUoZSx0LG4scixvKXtsZXQgaT1Ob2RlVmlld0Rlc2MuY3JlYXRlKHRoaXMudG9wLGUsdCxuLHIsbyk7aS5jb250ZW50RE9NJiZpLnVwZGF0ZUNoaWxkcmVuKHIsbysxKSx0aGlzLnRvcC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCsrLDAsaSksdGhpcy5jaGFuZ2VkPSEwfXBsYWNlV2lkZ2V0KGUsdCxuKXtsZXQgcj10aGlzLmluZGV4PHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aD90aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XTpudWxsO2lmKCFyfHwhci5tYXRjaGVzV2lkZ2V0KGUpfHxlIT1yLndpZGdldCYmci53aWRnZXQudHlwZS50b0RPTS5wYXJlbnROb2RlKXtsZXQgcj1uZXcgV2lkZ2V0Vmlld0Rlc2ModGhpcy50b3AsZSx0LG4pO3RoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxyKSx0aGlzLmNoYW5nZWQ9ITB9ZWxzZSB0aGlzLmluZGV4Kyt9YWRkVGV4dGJsb2NrSGFja3MoKXtsZXQgZT10aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4LTFdLHQ9dGhpcy50b3A7Zm9yKDtlIGluc3RhbmNlb2YgTWFya1ZpZXdEZXNjOyl0PWUsZT10LmNoaWxkcmVuW3QuY2hpbGRyZW4ubGVuZ3RoLTFdOyghZXx8IShlIGluc3RhbmNlb2YgVGV4dFZpZXdEZXNjKXx8L1xuJC8udGVzdChlLm5vZGUudGV4dCl8fHRoaXMudmlldy5yZXF1aXJlc0dlY2tvSGFja05vZGUmJi9ccyQvLnRlc3QoZS5ub2RlLnRleHQpKSYmKChqZXx8VmUpJiZlJiYiZmFsc2UiPT1lLmRvbS5jb250ZW50RWRpdGFibGUmJnRoaXMuYWRkSGFja05vZGUoIklNRyIsdCksdGhpcy5hZGRIYWNrTm9kZSgiQlIiLHRoaXMudG9wKSl9YWRkSGFja05vZGUoZSx0KXtpZih0PT10aGlzLnRvcCYmdGhpcy5pbmRleDx0LmNoaWxkcmVuLmxlbmd0aCYmdC5jaGlsZHJlblt0aGlzLmluZGV4XS5tYXRjaGVzSGFjayhlKSl0aGlzLmluZGV4Kys7ZWxzZXtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpOyJJTUciPT1lJiYobi5jbGFzc05hbWU9IlByb3NlTWlycm9yLXNlcGFyYXRvciIsbi5hbHQ9IiIpLCJCUiI9PWUmJihuLmNsYXNzTmFtZT0iUHJvc2VNaXJyb3ItdHJhaWxpbmdCcmVhayIpO2xldCByPW5ldyBUcmFpbGluZ0hhY2tWaWV3RGVzYyh0aGlzLnRvcCxbXSxuLG51bGwpO3QhPXRoaXMudG9wP3QuY2hpbGRyZW4ucHVzaChyKTp0LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxyKSx0aGlzLmNoYW5nZWQ9ITB9fWlzTG9ja2VkKGUpe3JldHVybiB0aGlzLmxvY2smJihlPT10aGlzLmxvY2t8fDE9PWUubm9kZVR5cGUmJmUuY29udGFpbnModGhpcy5sb2NrLnBhcmVudE5vZGUpKX19ZnVuY3Rpb24gY29tcGFyZVNpZGUoZSx0KXtyZXR1cm4gZS50eXBlLnNpZGUtdC50eXBlLnNpZGV9ZnVuY3Rpb24gcmVwbGFjZU5vZGVzKGUsdCxuLHIsbyl7bGV0IGk9W107Zm9yKGxldCBzPTAsbD0wO3M8ZS5sZW5ndGg7cysrKXtsZXQgYT1lW3NdLGM9bCxkPWwrPWEuc2l6ZTtjPj1ufHxkPD10P2kucHVzaChhKTooYzx0JiZpLnB1c2goYS5zbGljZSgwLHQtYyxyKSksbyYmKGkucHVzaChvKSxvPXZvaWQgMCksZD5uJiZpLnB1c2goYS5zbGljZShuLWMsYS5zaXplLHIpKSl9cmV0dXJuIGl9ZnVuY3Rpb24gc2VsZWN0aW9uRnJvbURPTShlLHQ9bnVsbCl7bGV0IG49ZS5kb21TZWxlY3Rpb25SYW5nZSgpLHI9ZS5zdGF0ZS5kb2M7aWYoIW4uZm9jdXNOb2RlKXJldHVybiBudWxsO2xldCBvPWUuZG9jVmlldy5uZWFyZXN0RGVzYyhuLmZvY3VzTm9kZSksaT1vJiYwPT1vLnNpemUscz1lLmRvY1ZpZXcucG9zRnJvbURPTShuLmZvY3VzTm9kZSxuLmZvY3VzT2Zmc2V0LDEpO2lmKHM8MClyZXR1cm4gbnVsbDtsZXQgbCxhLGM9ci5yZXNvbHZlKHMpO2lmKHNlbGVjdGlvbkNvbGxhcHNlZChuKSl7Zm9yKGw9cztvJiYhby5ub2RlOylvPW8ucGFyZW50O2xldCBlPW8ubm9kZTtpZihvJiZlLmlzQXRvbSYmTm9kZVNlbGVjdGlvbi5pc1NlbGVjdGFibGUoZSkmJm8ucGFyZW50JiYoIWUuaXNJbmxpbmV8fCFmdW5jdGlvbihlLHQsbil7Zm9yKGxldCByPTA9PXQsbz10PT1ub2RlU2l6ZShlKTtyfHxvOyl7aWYoZT09bilyZXR1cm4hMDtsZXQgdD1kb21JbmRleChlKTtpZighKGU9ZS5wYXJlbnROb2RlKSlyZXR1cm4hMTtyPXImJjA9PXQsbz1vJiZ0PT1ub2RlU2l6ZShlKX19KG4uZm9jdXNOb2RlLG4uZm9jdXNPZmZzZXQsby5kb20pKSl7bGV0IGU9by5wb3NCZWZvcmU7YT1uZXcgTm9kZVNlbGVjdGlvbihzPT1lP2M6ci5yZXNvbHZlKGUpKX19ZWxzZXtpZihuIGluc3RhbmNlb2YgZS5kb20ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TZWxlY3Rpb24mJm4ucmFuZ2VDb3VudD4xKXtsZXQgdD1zLG89cztmb3IobGV0IHI9MDtyPG4ucmFuZ2VDb3VudDtyKyspe2xldCBpPW4uZ2V0UmFuZ2VBdChyKTt0PU1hdGgubWluKHQsZS5kb2NWaWV3LnBvc0Zyb21ET00oaS5zdGFydENvbnRhaW5lcixpLnN0YXJ0T2Zmc2V0LDEpKSxvPU1hdGgubWF4KG8sZS5kb2NWaWV3LnBvc0Zyb21ET00oaS5lbmRDb250YWluZXIsaS5lbmRPZmZzZXQsLTEpKX1pZih0PDApcmV0dXJuIG51bGw7W2wsc109bz09ZS5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yP1tvLHRdOlt0LG9dLGM9ci5yZXNvbHZlKHMpfWVsc2UgbD1lLmRvY1ZpZXcucG9zRnJvbURPTShuLmFuY2hvck5vZGUsbi5hbmNob3JPZmZzZXQsMSk7aWYobDwwKXJldHVybiBudWxsfWxldCBkPXIucmVzb2x2ZShsKTtpZighYSl7YT1zZWxlY3Rpb25CZXR3ZWVuKGUsZCxjLCJwb2ludGVyIj09dHx8ZS5zdGF0ZS5zZWxlY3Rpb24uaGVhZDxjLnBvcyYmIWk/MTotMSl9cmV0dXJuIGF9ZnVuY3Rpb24gZWRpdG9yT3duc1NlbGVjdGlvbihlKXtyZXR1cm4gZS5lZGl0YWJsZT9lLmhhc0ZvY3VzKCk6aGFzU2VsZWN0aW9uKGUpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNvbnRhaW5zKGUuZG9tKX1mdW5jdGlvbiBzZWxlY3Rpb25Ub0RPTShlLHQ9ITEpe2xldCBuPWUuc3RhdGUuc2VsZWN0aW9uO2lmKHN5bmNOb2RlU2VsZWN0aW9uKGUsbiksZWRpdG9yT3duc1NlbGVjdGlvbihlKSl7aWYoIXQmJmUuaW5wdXQubW91c2VEb3duJiZlLmlucHV0Lm1vdXNlRG93bi5hbGxvd0RlZmF1bHQmJlZlKXtsZXQgdD1lLmRvbVNlbGVjdGlvblJhbmdlKCksbj1lLmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb247aWYodC5hbmNob3JOb2RlJiZuLmFuY2hvck5vZGUmJmlzRXF1aXZhbGVudFBvc2l0aW9uKHQuYW5jaG9yTm9kZSx0LmFuY2hvck9mZnNldCxuLmFuY2hvck5vZGUsbi5hbmNob3JPZmZzZXQpKXJldHVybiBlLmlucHV0Lm1vdXNlRG93bi5kZWxheWVkU2VsZWN0aW9uU3luYz0hMCx2b2lkIGUuZG9tT2JzZXJ2ZXIuc2V0Q3VyU2VsZWN0aW9uKCl9aWYoZS5kb21PYnNlcnZlci5kaXNjb25uZWN0U2VsZWN0aW9uKCksZS5jdXJzb3JXcmFwcGVyKSFmdW5jdGlvbihlKXtsZXQgdD1lLmRvbVNlbGVjdGlvbigpO2lmKCF0KXJldHVybjtsZXQgbj1lLmN1cnNvcldyYXBwZXIuZG9tLHI9IklNRyI9PW4ubm9kZU5hbWU7cj90LmNvbGxhcHNlKG4ucGFyZW50Tm9kZSxkb21JbmRleChuKSsxKTp0LmNvbGxhcHNlKG4sMCk7IXImJiFlLnN0YXRlLnNlbGVjdGlvbi52aXNpYmxlJiZ6ZSYmQmU8PTExJiYobi5kaXNhYmxlZD0hMCxuLmRpc2FibGVkPSExKX0oZSk7ZWxzZXtsZXQgcixvLHthbmNob3I6aSxoZWFkOnN9PW47IW90fHxuIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbnx8KG4uJGZyb20ucGFyZW50LmlubGluZUNvbnRlbnR8fChyPXRlbXBvcmFyaWx5RWRpdGFibGVOZWFyKGUsbi5mcm9tKSksbi5lbXB0eXx8bi4kZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudHx8KG89dGVtcG9yYXJpbHlFZGl0YWJsZU5lYXIoZSxuLnRvKSkpLGUuZG9jVmlldy5zZXRTZWxlY3Rpb24oaSxzLGUsdCksb3QmJihyJiZyZXNldEVkaXRhYmxlKHIpLG8mJnJlc2V0RWRpdGFibGUobykpLG4udmlzaWJsZT9lLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uIik6KGUuZG9tLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24iKSwib25zZWxlY3Rpb25jaGFuZ2UiaW4gZG9jdW1lbnQmJmZ1bmN0aW9uKGUpe2xldCB0PWUuZG9tLm93bmVyRG9jdW1lbnQ7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGUuaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkKTtsZXQgbj1lLmRvbVNlbGVjdGlvblJhbmdlKCkscj1uLmFuY2hvck5vZGUsbz1uLmFuY2hvck9mZnNldDt0LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsZS5pbnB1dC5oaWRlU2VsZWN0aW9uR3VhcmQ9KCk9PntuLmFuY2hvck5vZGU9PXImJm4uYW5jaG9yT2Zmc2V0PT1vfHwodC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGUuaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkKSxzZXRUaW1lb3V0KCgpPT57ZWRpdG9yT3duc1NlbGVjdGlvbihlKSYmIWUuc3RhdGUuc2VsZWN0aW9uLnZpc2libGV8fGUuZG9tLmNsYXNzTGlzdC5yZW1vdmUoIlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24iKX0sMjApKX0pfShlKSl9ZS5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKSxlLmRvbU9ic2VydmVyLmNvbm5lY3RTZWxlY3Rpb24oKX19Y29uc3Qgb3Q9amV8fFZlJiZfZTw2MztmdW5jdGlvbiB0ZW1wb3JhcmlseUVkaXRhYmxlTmVhcihlLHQpe2xldHtub2RlOm4sb2Zmc2V0OnJ9PWUuZG9jVmlldy5kb21Gcm9tUG9zKHQsMCksbz1yPG4uY2hpbGROb2Rlcy5sZW5ndGg/bi5jaGlsZE5vZGVzW3JdOm51bGwsaT1yP24uY2hpbGROb2Rlc1tyLTFdOm51bGw7aWYoamUmJm8mJiJmYWxzZSI9PW8uY29udGVudEVkaXRhYmxlKXJldHVybiBzZXRFZGl0YWJsZShvKTtpZighKG8mJiJmYWxzZSIhPW8uY29udGVudEVkaXRhYmxlfHxpJiYiZmFsc2UiIT1pLmNvbnRlbnRFZGl0YWJsZSkpe2lmKG8pcmV0dXJuIHNldEVkaXRhYmxlKG8pO2lmKGkpcmV0dXJuIHNldEVkaXRhYmxlKGkpfX1mdW5jdGlvbiBzZXRFZGl0YWJsZShlKXtyZXR1cm4gZS5jb250ZW50RWRpdGFibGU9InRydWUiLGplJiZlLmRyYWdnYWJsZSYmKGUuZHJhZ2dhYmxlPSExLGUud2FzRHJhZ2dhYmxlPSEwKSxlfWZ1bmN0aW9uIHJlc2V0RWRpdGFibGUoZSl7ZS5jb250ZW50RWRpdGFibGU9ImZhbHNlIixlLndhc0RyYWdnYWJsZSYmKGUuZHJhZ2dhYmxlPSEwLGUud2FzRHJhZ2dhYmxlPW51bGwpfWZ1bmN0aW9uIHN5bmNOb2RlU2VsZWN0aW9uKGUsdCl7aWYodCBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pe2xldCBuPWUuZG9jVmlldy5kZXNjQXQodC5mcm9tKTtuIT1lLmxhc3RTZWxlY3RlZFZpZXdEZXNjJiYoY2xlYXJOb2RlU2VsZWN0aW9uKGUpLG4mJm4uc2VsZWN0Tm9kZSgpLGUubGFzdFNlbGVjdGVkVmlld0Rlc2M9bil9ZWxzZSBjbGVhck5vZGVTZWxlY3Rpb24oZSl9ZnVuY3Rpb24gY2xlYXJOb2RlU2VsZWN0aW9uKGUpe2UubGFzdFNlbGVjdGVkVmlld0Rlc2MmJihlLmxhc3RTZWxlY3RlZFZpZXdEZXNjLnBhcmVudCYmZS5sYXN0U2VsZWN0ZWRWaWV3RGVzYy5kZXNlbGVjdE5vZGUoKSxlLmxhc3RTZWxlY3RlZFZpZXdEZXNjPXZvaWQgMCl9ZnVuY3Rpb24gc2VsZWN0aW9uQmV0d2VlbihlLHQsbixyKXtyZXR1cm4gZS5zb21lUHJvcCgiY3JlYXRlU2VsZWN0aW9uQmV0d2VlbiIscj0+cihlLHQsbikpfHxUZXh0U2VsZWN0aW9uLmJldHdlZW4odCxuLHIpfWZ1bmN0aW9uIGhhc0ZvY3VzQW5kU2VsZWN0aW9uKGUpe3JldHVybiEoZS5lZGl0YWJsZSYmIWUuaGFzRm9jdXMoKSkmJmhhc1NlbGVjdGlvbihlKX1mdW5jdGlvbiBoYXNTZWxlY3Rpb24oZSl7bGV0IHQ9ZS5kb21TZWxlY3Rpb25SYW5nZSgpO2lmKCF0LmFuY2hvck5vZGUpcmV0dXJuITE7dHJ5e3JldHVybiBlLmRvbS5jb250YWlucygzPT10LmFuY2hvck5vZGUubm9kZVR5cGU/dC5hbmNob3JOb2RlLnBhcmVudE5vZGU6dC5hbmNob3JOb2RlKSYmKGUuZWRpdGFibGV8fGUuZG9tLmNvbnRhaW5zKDM9PXQuZm9jdXNOb2RlLm5vZGVUeXBlP3QuZm9jdXNOb2RlLnBhcmVudE5vZGU6dC5mb2N1c05vZGUpKX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gbW92ZVNlbGVjdGlvbkJsb2NrKGUsdCl7bGV0eyRhbmNob3I6biwkaGVhZDpyfT1lLnNlbGVjdGlvbixvPXQ+MD9uLm1heChyKTpuLm1pbihyKSxpPW8ucGFyZW50LmlubGluZUNvbnRlbnQ/by5kZXB0aD9lLmRvYy5yZXNvbHZlKHQ+MD9vLmFmdGVyKCk6by5iZWZvcmUoKSk6bnVsbDpvO3JldHVybiBpJiZTZWxlY3Rpb24uZmluZEZyb20oaSx0KX1mdW5jdGlvbiBhcHBseShlLHQpe3JldHVybiBlLmRpc3BhdGNoKGUuc3RhdGUudHIuc2V0U2VsZWN0aW9uKHQpLnNjcm9sbEludG9WaWV3KCkpLCEwfWZ1bmN0aW9uIHNlbGVjdEhvcml6b250YWxseShlLHQsbil7bGV0IHI9ZS5zdGF0ZS5zZWxlY3Rpb247aWYoIShyIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbikpe2lmKHIgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uJiZyLm5vZGUuaXNJbmxpbmUpcmV0dXJuIGFwcGx5KGUsbmV3IFRleHRTZWxlY3Rpb24odD4wP3IuJHRvOnIuJGZyb20pKTt7bGV0IG49bW92ZVNlbGVjdGlvbkJsb2NrKGUuc3RhdGUsdCk7cmV0dXJuISFuJiZhcHBseShlLG4pfX1pZihuLmluZGV4T2YoInMiKT4tMSl7bGV0eyRoZWFkOm59PXIsbz1uLnRleHRPZmZzZXQ/bnVsbDp0PDA/bi5ub2RlQmVmb3JlOm4ubm9kZUFmdGVyO2lmKCFvfHxvLmlzVGV4dHx8IW8uaXNMZWFmKXJldHVybiExO2xldCBpPWUuc3RhdGUuZG9jLnJlc29sdmUobi5wb3Mrby5ub2RlU2l6ZSoodDwwPy0xOjEpKTtyZXR1cm4gYXBwbHkoZSxuZXcgVGV4dFNlbGVjdGlvbihyLiRhbmNob3IsaSkpfWlmKCFyLmVtcHR5KXJldHVybiExO2lmKGUuZW5kT2ZUZXh0YmxvY2sodD4wPyJmb3J3YXJkIjoiYmFja3dhcmQiKSl7bGV0IG49bW92ZVNlbGVjdGlvbkJsb2NrKGUuc3RhdGUsdCk7cmV0dXJuISEobiYmbiBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pJiZhcHBseShlLG4pfWlmKCEoVWUmJm4uaW5kZXhPZigibSIpPi0xKSl7bGV0IG4sbz1yLiRoZWFkLGk9by50ZXh0T2Zmc2V0P251bGw6dDwwP28ubm9kZUJlZm9yZTpvLm5vZGVBZnRlcjtpZighaXx8aS5pc1RleHQpcmV0dXJuITE7bGV0IHM9dDwwP28ucG9zLWkubm9kZVNpemU6by5wb3M7cmV0dXJuISEoaS5pc0F0b218fChuPWUuZG9jVmlldy5kZXNjQXQocykpJiYhbi5jb250ZW50RE9NKSYmKE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGkpP2FwcGx5KGUsbmV3IE5vZGVTZWxlY3Rpb24odDwwP2Uuc3RhdGUuZG9jLnJlc29sdmUoby5wb3MtaS5ub2RlU2l6ZSk6bykpOiEhSmUmJmFwcGx5KGUsbmV3IFRleHRTZWxlY3Rpb24oZS5zdGF0ZS5kb2MucmVzb2x2ZSh0PDA/czpzK2kubm9kZVNpemUpKSkpfX1mdW5jdGlvbiBub2RlTGVuKGUpe3JldHVybiAzPT1lLm5vZGVUeXBlP2Uubm9kZVZhbHVlLmxlbmd0aDplLmNoaWxkTm9kZXMubGVuZ3RofWZ1bmN0aW9uIGlzSWdub3JhYmxlKGUsdCl7bGV0IG49ZS5wbVZpZXdEZXNjO3JldHVybiBuJiYwPT1uLnNpemUmJih0PDB8fGUubmV4dFNpYmxpbmd8fCJCUiIhPWUubm9kZU5hbWUpfWZ1bmN0aW9uIHNraXBJZ25vcmVkTm9kZXMoZSx0KXtyZXR1cm4gdDwwP2Z1bmN0aW9uKGUpe2xldCB0PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxuPXQuZm9jdXNOb2RlLHI9dC5mb2N1c09mZnNldDtpZighbilyZXR1cm47bGV0IG8saSxzPSExO0ZlJiYxPT1uLm5vZGVUeXBlJiZyPG5vZGVMZW4obikmJmlzSWdub3JhYmxlKG4uY2hpbGROb2Rlc1tyXSwtMSkmJihzPSEwKTtmb3IoOzspaWYocj4wKXtpZigxIT1uLm5vZGVUeXBlKWJyZWFrO3tsZXQgZT1uLmNoaWxkTm9kZXNbci0xXTtpZihpc0lnbm9yYWJsZShlLC0xKSlvPW4saT0tLXI7ZWxzZXtpZigzIT1lLm5vZGVUeXBlKWJyZWFrO249ZSxyPW4ubm9kZVZhbHVlLmxlbmd0aH19fWVsc2V7aWYoaXNCbG9ja05vZGUobikpYnJlYWs7e2xldCB0PW4ucHJldmlvdXNTaWJsaW5nO2Zvcig7dCYmaXNJZ25vcmFibGUodCwtMSk7KW89bi5wYXJlbnROb2RlLGk9ZG9tSW5kZXgodCksdD10LnByZXZpb3VzU2libGluZztpZih0KW49dCxyPW5vZGVMZW4obik7ZWxzZXtpZihuPW4ucGFyZW50Tm9kZSxuPT1lLmRvbSlicmVhaztyPTB9fX1zP3NldFNlbEZvY3VzKGUsbixyKTpvJiZzZXRTZWxGb2N1cyhlLG8saSl9KGUpOmZ1bmN0aW9uKGUpe2xldCB0PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxuPXQuZm9jdXNOb2RlLHI9dC5mb2N1c09mZnNldDtpZighbilyZXR1cm47bGV0IG8saSxzPW5vZGVMZW4obik7Zm9yKDs7KWlmKHI8cyl7aWYoMSE9bi5ub2RlVHlwZSlicmVhaztpZighaXNJZ25vcmFibGUobi5jaGlsZE5vZGVzW3JdLDEpKWJyZWFrO289bixpPSsrcn1lbHNle2lmKGlzQmxvY2tOb2RlKG4pKWJyZWFrO3tsZXQgdD1uLm5leHRTaWJsaW5nO2Zvcig7dCYmaXNJZ25vcmFibGUodCwxKTspbz10LnBhcmVudE5vZGUsaT1kb21JbmRleCh0KSsxLHQ9dC5uZXh0U2libGluZztpZih0KW49dCxyPTAscz1ub2RlTGVuKG4pO2Vsc2V7aWYobj1uLnBhcmVudE5vZGUsbj09ZS5kb20pYnJlYWs7cj1zPTB9fX1vJiZzZXRTZWxGb2N1cyhlLG8saSl9KGUpfWZ1bmN0aW9uIGlzQmxvY2tOb2RlKGUpe2xldCB0PWUucG1WaWV3RGVzYztyZXR1cm4gdCYmdC5ub2RlJiZ0Lm5vZGUuaXNCbG9ja31mdW5jdGlvbiBzZXRTZWxGb2N1cyhlLHQsbil7aWYoMyE9dC5ub2RlVHlwZSl7bGV0IGUscjsocj1mdW5jdGlvbihlLHQpe2Zvcig7ZSYmdD09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmIWhhc0Jsb2NrRGVzYyhlKTspdD1kb21JbmRleChlKSsxLGU9ZS5wYXJlbnROb2RlO2Zvcig7ZSYmdDxlLmNoaWxkTm9kZXMubGVuZ3RoOyl7bGV0IG49ZS5jaGlsZE5vZGVzW3RdO2lmKDM9PW4ubm9kZVR5cGUpcmV0dXJuIG47aWYoMT09bi5ub2RlVHlwZSYmImZhbHNlIj09bi5jb250ZW50RWRpdGFibGUpYnJlYWs7ZT1uLHQ9MH19KHQsbikpPyh0PXIsbj0wKTooZT1mdW5jdGlvbihlLHQpe2Zvcig7ZSYmIXQmJiFoYXNCbG9ja0Rlc2MoZSk7KXQ9ZG9tSW5kZXgoZSksZT1lLnBhcmVudE5vZGU7Zm9yKDtlJiZ0Oyl7bGV0IG49ZS5jaGlsZE5vZGVzW3QtMV07aWYoMz09bi5ub2RlVHlwZSlyZXR1cm4gbjtpZigxPT1uLm5vZGVUeXBlJiYiZmFsc2UiPT1uLmNvbnRlbnRFZGl0YWJsZSlicmVhazt0PShlPW4pLmNoaWxkTm9kZXMubGVuZ3RofX0odCxuKSkmJih0PWUsbj1lLm5vZGVWYWx1ZS5sZW5ndGgpfWxldCByPWUuZG9tU2VsZWN0aW9uKCk7aWYoIXIpcmV0dXJuO2lmKHNlbGVjdGlvbkNvbGxhcHNlZChyKSl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtlLnNldEVuZCh0LG4pLGUuc2V0U3RhcnQodCxuKSxyLnJlbW92ZUFsbFJhbmdlcygpLHIuYWRkUmFuZ2UoZSl9ZWxzZSByLmV4dGVuZCYmci5leHRlbmQodCxuKTtlLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpO2xldHtzdGF0ZTpvfT1lO3NldFRpbWVvdXQoKCk9PntlLnN0YXRlPT1vJiZzZWxlY3Rpb25Ub0RPTShlKX0sNTApfWZ1bmN0aW9uIGZpbmREaXJlY3Rpb24oZSx0KXtsZXQgbj1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpO2lmKCFWZSYmIVdlJiZuLnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgcj1lLmNvb3Jkc0F0UG9zKHQpO2lmKHQ+bi5zdGFydCgpKXtsZXQgbj1lLmNvb3Jkc0F0UG9zKHQtMSksbz0obi50b3Arbi5ib3R0b20pLzI7aWYobz5yLnRvcCYmbzxyLmJvdHRvbSYmTWF0aC5hYnMobi5sZWZ0LXIubGVmdCk+MSlyZXR1cm4gbi5sZWZ0PHIubGVmdD8ibHRyIjoicnRsIn1pZih0PG4uZW5kKCkpe2xldCBuPWUuY29vcmRzQXRQb3ModCsxKSxvPShuLnRvcCtuLmJvdHRvbSkvMjtpZihvPnIudG9wJiZvPHIuYm90dG9tJiZNYXRoLmFicyhuLmxlZnQtci5sZWZ0KT4xKXJldHVybiBuLmxlZnQ+ci5sZWZ0PyJsdHIiOiJydGwifX1yZXR1cm4icnRsIj09Z2V0Q29tcHV0ZWRTdHlsZShlLmRvbSkuZGlyZWN0aW9uPyJydGwiOiJsdHIifWZ1bmN0aW9uIHNlbGVjdFZlcnRpY2FsbHkoZSx0LG4pe2xldCByPWUuc3RhdGUuc2VsZWN0aW9uO2lmKHIgaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uJiYhci5lbXB0eXx8bi5pbmRleE9mKCJzIik+LTEpcmV0dXJuITE7aWYoVWUmJm4uaW5kZXhPZigibSIpPi0xKXJldHVybiExO2xldHskZnJvbTpvLCR0bzppfT1yO2lmKCFvLnBhcmVudC5pbmxpbmVDb250ZW50fHxlLmVuZE9mVGV4dGJsb2NrKHQ8MD8idXAiOiJkb3duIikpe2xldCBuPW1vdmVTZWxlY3Rpb25CbG9jayhlLnN0YXRlLHQpO2lmKG4mJm4gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKXJldHVybiBhcHBseShlLG4pfWlmKCFvLnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgbj10PDA/bzppLHM9ciBpbnN0YW5jZW9mIEFsbFNlbGVjdGlvbj9TZWxlY3Rpb24ubmVhcihuLHQpOlNlbGVjdGlvbi5maW5kRnJvbShuLHQpO3JldHVybiEhcyYmYXBwbHkoZSxzKX1yZXR1cm4hMX1mdW5jdGlvbiBzdG9wTmF0aXZlSG9yaXpvbnRhbERlbGV0ZShlLHQpe2lmKCEoZS5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uKSlyZXR1cm4hMDtsZXR7JGhlYWQ6biwkYW5jaG9yOnIsZW1wdHk6b309ZS5zdGF0ZS5zZWxlY3Rpb247aWYoIW4uc2FtZVBhcmVudChyKSlyZXR1cm4hMDtpZighbylyZXR1cm4hMTtpZihlLmVuZE9mVGV4dGJsb2NrKHQ+MD8iZm9yd2FyZCI6ImJhY2t3YXJkIikpcmV0dXJuITA7bGV0IGk9IW4udGV4dE9mZnNldCYmKHQ8MD9uLm5vZGVCZWZvcmU6bi5ub2RlQWZ0ZXIpO2lmKGkmJiFpLmlzVGV4dCl7bGV0IHI9ZS5zdGF0ZS50cjtyZXR1cm4gdDwwP3IuZGVsZXRlKG4ucG9zLWkubm9kZVNpemUsbi5wb3MpOnIuZGVsZXRlKG4ucG9zLG4ucG9zK2kubm9kZVNpemUpLGUuZGlzcGF0Y2gociksITB9cmV0dXJuITF9ZnVuY3Rpb24gc3dpdGNoRWRpdGFibGUoZSx0LG4pe2UuZG9tT2JzZXJ2ZXIuc3RvcCgpLHQuY29udGVudEVkaXRhYmxlPW4sZS5kb21PYnNlcnZlci5zdGFydCgpfWZ1bmN0aW9uIGNhcHR1cmVLZXlEb3duKGUsdCl7bGV0IG49dC5rZXlDb2RlLHI9ZnVuY3Rpb24oZSl7bGV0IHQ9IiI7cmV0dXJuIGUuY3RybEtleSYmKHQrPSJjIiksZS5tZXRhS2V5JiYodCs9Im0iKSxlLmFsdEtleSYmKHQrPSJhIiksZS5zaGlmdEtleSYmKHQrPSJzIiksdH0odCk7aWYoOD09bnx8VWUmJjcyPT1uJiYiYyI9PXIpcmV0dXJuIHN0b3BOYXRpdmVIb3Jpem9udGFsRGVsZXRlKGUsLTEpfHxza2lwSWdub3JlZE5vZGVzKGUsLTEpO2lmKDQ2PT1uJiYhdC5zaGlmdEtleXx8VWUmJjY4PT1uJiYiYyI9PXIpcmV0dXJuIHN0b3BOYXRpdmVIb3Jpem9udGFsRGVsZXRlKGUsMSl8fHNraXBJZ25vcmVkTm9kZXMoZSwxKTtpZigxMz09bnx8Mjc9PW4pcmV0dXJuITA7aWYoMzc9PW58fFVlJiY2Nj09biYmImMiPT1yKXtsZXQgdD0zNz09bj8ibHRyIj09ZmluZERpcmVjdGlvbihlLGUuc3RhdGUuc2VsZWN0aW9uLmZyb20pPy0xOjE6LTE7cmV0dXJuIHNlbGVjdEhvcml6b250YWxseShlLHQscil8fHNraXBJZ25vcmVkTm9kZXMoZSx0KX1pZigzOT09bnx8VWUmJjcwPT1uJiYiYyI9PXIpe2xldCB0PTM5PT1uPyJsdHIiPT1maW5kRGlyZWN0aW9uKGUsZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbSk/MTotMToxO3JldHVybiBzZWxlY3RIb3Jpem9udGFsbHkoZSx0LHIpfHxza2lwSWdub3JlZE5vZGVzKGUsdCl9cmV0dXJuIDM4PT1ufHxVZSYmODA9PW4mJiJjIj09cj9zZWxlY3RWZXJ0aWNhbGx5KGUsLTEscil8fHNraXBJZ25vcmVkTm9kZXMoZSwtMSk6NDA9PW58fFVlJiY3OD09biYmImMiPT1yP2Z1bmN0aW9uKGUpe2lmKCFqZXx8ZS5zdGF0ZS5zZWxlY3Rpb24uJGhlYWQucGFyZW50T2Zmc2V0PjApcmV0dXJuITE7bGV0e2ZvY3VzTm9kZTp0LGZvY3VzT2Zmc2V0Om59PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZih0JiYxPT10Lm5vZGVUeXBlJiYwPT1uJiZ0LmZpcnN0Q2hpbGQmJiJmYWxzZSI9PXQuZmlyc3RDaGlsZC5jb250ZW50RWRpdGFibGUpe2xldCBuPXQuZmlyc3RDaGlsZDtzd2l0Y2hFZGl0YWJsZShlLG4sInRydWUiKSxzZXRUaW1lb3V0KCgpPT5zd2l0Y2hFZGl0YWJsZShlLG4sImZhbHNlIiksMjApfXJldHVybiExfShlKXx8c2VsZWN0VmVydGljYWxseShlLDEscil8fHNraXBJZ25vcmVkTm9kZXMoZSwxKTpyPT0oVWU/Im0iOiJjIikmJig2Nj09bnx8NzM9PW58fDg5PT1ufHw5MD09bil9ZnVuY3Rpb24gc2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUsdCl7ZS5zb21lUHJvcCgidHJhbnNmb3JtQ29waWVkIixuPT57dD1uKHQsZSl9KTtsZXQgbj1bXSx7Y29udGVudDpyLG9wZW5TdGFydDpvLG9wZW5FbmQ6aX09dDtmb3IoO28+MSYmaT4xJiYxPT1yLmNoaWxkQ291bnQmJjE9PXIuZmlyc3RDaGlsZC5jaGlsZENvdW50Oyl7by0tLGktLTtsZXQgZT1yLmZpcnN0Q2hpbGQ7bi5wdXNoKGUudHlwZS5uYW1lLGUuYXR0cnMhPWUudHlwZS5kZWZhdWx0QXR0cnM/ZS5hdHRyczpudWxsKSxyPWUuY29udGVudH1sZXQgcz1lLnNvbWVQcm9wKCJjbGlwYm9hcmRTZXJpYWxpemVyIil8fERPTVNlcmlhbGl6ZXIuZnJvbVNjaGVtYShlLnN0YXRlLnNjaGVtYSksbD1kZXRhY2hlZERvYygpLGE9bC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKHMuc2VyaWFsaXplRnJhZ21lbnQocix7ZG9jdW1lbnQ6bH0pKTtsZXQgYyxkPWEuZmlyc3RDaGlsZCxwPTA7Zm9yKDtkJiYxPT1kLm5vZGVUeXBlJiYoYz1zdFtkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKTspe2ZvcihsZXQgZT1jLmxlbmd0aC0xO2U+PTA7ZS0tKXtsZXQgdD1sLmNyZWF0ZUVsZW1lbnQoY1tlXSk7Zm9yKDthLmZpcnN0Q2hpbGQ7KXQuYXBwZW5kQ2hpbGQoYS5maXJzdENoaWxkKTthLmFwcGVuZENoaWxkKHQpLHArK31kPWEuZmlyc3RDaGlsZH1yZXR1cm4gZCYmMT09ZC5ub2RlVHlwZSYmZC5zZXRBdHRyaWJ1dGUoImRhdGEtcG0tc2xpY2UiLGAke299ICR7aX0ke3A/YCAtJHtwfWA6IiJ9ICR7SlNPTi5zdHJpbmdpZnkobil9YCkse2RvbTphLHRleHQ6ZS5zb21lUHJvcCgiY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXIiLG49Pm4odCxlKSl8fHQuY29udGVudC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLCJcblxuIiksc2xpY2U6dH19ZnVuY3Rpb24gcGFyc2VGcm9tQ2xpcGJvYXJkKGUsdCxuLHIsbyl7bGV0IGkscyxsPW8ucGFyZW50LnR5cGUuc3BlYy5jb2RlO2lmKCFuJiYhdClyZXR1cm4gbnVsbDtsZXQgYT0hIXQmJihyfHxsfHwhbik7aWYoYSl7aWYoZS5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkVGV4dCIsbj0+e3Q9bih0LGx8fHIsZSl9KSxsKXJldHVybiBzPW5ldyBTbGljZShGcmFnbWVudC5mcm9tKGUuc3RhdGUuc2NoZW1hLnRleHQodC5yZXBsYWNlKC9cclxuPy9nLCJcbiIpKSksMCwwKSxlLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWQiLHQ9PntzPXQocyxlLCEwKX0pLHM7bGV0IG49ZS5zb21lUHJvcCgiY2xpcGJvYXJkVGV4dFBhcnNlciIsbj0+bih0LG8scixlKSk7aWYobilzPW47ZWxzZXtsZXQgbj1vLm1hcmtzKCkse3NjaGVtYTpyfT1lLnN0YXRlLHM9RE9NU2VyaWFsaXplci5mcm9tU2NoZW1hKHIpO2k9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5zcGxpdCgvKD86XHJcbj98XG4pKy8pLmZvckVhY2goZT0+e2xldCB0PWkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpKTtlJiZ0LmFwcGVuZENoaWxkKHMuc2VyaWFsaXplTm9kZShyLnRleHQoZSxuKSkpfSl9fWVsc2UgZS5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkSFRNTCIsdD0+e249dChuLGUpfSksaT1mdW5jdGlvbihlKXtsZXQgdD0vXihccyo8bWV0YSBbXj5dKj4pKi8uZXhlYyhlKTt0JiYoZT1lLnNsaWNlKHRbMF0ubGVuZ3RoKSk7bGV0IG4scj1kZXRhY2hlZERvYygpLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG89LzwoW2Etel1bXj5cc10rKS9pLmV4ZWMoZSk7KG49byYmc3Rbb1sxXS50b0xvd2VyQ2FzZSgpXSkmJihlPW4ubWFwKGU9PiI8IitlKyI+Iikuam9pbigiIikrZStuLm1hcChlPT4iPC8iK2UrIj4iKS5yZXZlcnNlKCkuam9pbigiIikpO2lmKHIuaW5uZXJIVE1MPWZ1bmN0aW9uKGUpe2xldCB0PXdpbmRvdy50cnVzdGVkVHlwZXM7aWYoIXQpcmV0dXJuIGU7YXR8fChhdD10LmRlZmF1bHRQb2xpY3l8fHQuY3JlYXRlUG9saWN5KCJQcm9zZU1pcnJvckNsaXBib2FyZCIse2NyZWF0ZUhUTUw6ZT0+ZX0pKTtyZXR1cm4gYXQuY3JlYXRlSFRNTChlKX0oZSksbilmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylyPXIucXVlcnlTZWxlY3RvcihuW2VdKXx8cjtyZXR1cm4gcn0obiksSmUmJmZ1bmN0aW9uKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvckFsbChWZT8ic3Bhbjpub3QoW2NsYXNzXSk6bm90KFtzdHlsZV0pIjoic3Bhbi5BcHBsZS1jb252ZXJ0ZWQtc3BhY2UiKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IHI9dFtuXTsxPT1yLmNoaWxkTm9kZXMubGVuZ3RoJiYiwqAiPT1yLnRleHRDb250ZW50JiZyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZS5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikscil9fShpKTtsZXQgYz1pJiZpLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXBtLXNsaWNlXSIpLGQ9YyYmL14oXGQrKSAoXGQrKSg/OiAtKFxkKykpPyAoLiopLy5leGVjKGMuZ2V0QXR0cmlidXRlKCJkYXRhLXBtLXNsaWNlIil8fCIiKTtpZihkJiZkWzNdKWZvcihsZXQgZT0rZFszXTtlPjA7ZS0tKXtsZXQgZT1pLmZpcnN0Q2hpbGQ7Zm9yKDtlJiYxIT1lLm5vZGVUeXBlOyllPWUubmV4dFNpYmxpbmc7aWYoIWUpYnJlYWs7aT1lfWlmKCFzKXtsZXQgdD1lLnNvbWVQcm9wKCJjbGlwYm9hcmRQYXJzZXIiKXx8ZS5zb21lUHJvcCgiZG9tUGFyc2VyIil8fERPTVBhcnNlci5mcm9tU2NoZW1hKGUuc3RhdGUuc2NoZW1hKTtzPXQucGFyc2VTbGljZShpLHtwcmVzZXJ2ZVdoaXRlc3BhY2U6ISghYSYmIWQpLGNvbnRleHQ6byxydWxlRnJvbU5vZGU6ZT0+IkJSIiE9ZS5ub2RlTmFtZXx8ZS5uZXh0U2libGluZ3x8IWUucGFyZW50Tm9kZXx8aXQudGVzdChlLnBhcmVudE5vZGUubm9kZU5hbWUpP251bGw6e2lnbm9yZTohMH19KX1pZihkKXM9ZnVuY3Rpb24oZSx0KXtpZighZS5zaXplKXJldHVybiBlO2xldCBuLHI9ZS5jb250ZW50LmZpcnN0Q2hpbGQudHlwZS5zY2hlbWE7dHJ5e249SlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm4gZX1sZXR7Y29udGVudDpvLG9wZW5TdGFydDppLG9wZW5FbmQ6c309ZTtmb3IobGV0IGU9bi5sZW5ndGgtMjtlPj0wO2UtPTIpe2xldCB0PXIubm9kZXNbbltlXV07aWYoIXR8fHQuaGFzUmVxdWlyZWRBdHRycygpKWJyZWFrO289RnJhZ21lbnQuZnJvbSh0LmNyZWF0ZShuW2UrMV0sbykpLGkrKyxzKyt9cmV0dXJuIG5ldyBTbGljZShvLGkscyl9KGNsb3NlU2xpY2UocywrZFsxXSwrZFsyXSksZFs0XSk7ZWxzZSBpZihzPVNsaWNlLm1heE9wZW4oZnVuY3Rpb24oZSx0KXtpZihlLmNoaWxkQ291bnQ8MilyZXR1cm4gZTtmb3IobGV0IG49dC5kZXB0aDtuPj0wO24tLSl7bGV0IHIsbz10Lm5vZGUobikuY29udGVudE1hdGNoQXQodC5pbmRleChuKSksaT1bXTtpZihlLmZvckVhY2goZT0+e2lmKCFpKXJldHVybjtsZXQgdCxuPW8uZmluZFdyYXBwaW5nKGUudHlwZSk7aWYoIW4pcmV0dXJuIGk9bnVsbDtpZih0PWkubGVuZ3RoJiZyLmxlbmd0aCYmYWRkVG9TaWJsaW5nKG4scixlLGlbaS5sZW5ndGgtMV0sMCkpaVtpLmxlbmd0aC0xXT10O2Vsc2V7aS5sZW5ndGgmJihpW2kubGVuZ3RoLTFdPWNsb3NlUmlnaHQoaVtpLmxlbmd0aC0xXSxyLmxlbmd0aCkpO2xldCB0PXdpdGhXcmFwcGVycyhlLG4pO2kucHVzaCh0KSxvPW8ubWF0Y2hUeXBlKHQudHlwZSkscj1ufX0pLGkpcmV0dXJuIEZyYWdtZW50LmZyb20oaSl9cmV0dXJuIGV9KHMuY29udGVudCxvKSwhMCkscy5vcGVuU3RhcnR8fHMub3BlbkVuZCl7bGV0IGU9MCx0PTA7Zm9yKGxldCB0PXMuY29udGVudC5maXJzdENoaWxkO2U8cy5vcGVuU3RhcnQmJiF0LnR5cGUuc3BlYy5pc29sYXRpbmc7ZSsrLHQ9dC5maXJzdENoaWxkKTtmb3IobGV0IGU9cy5jb250ZW50Lmxhc3RDaGlsZDt0PHMub3BlbkVuZCYmIWUudHlwZS5zcGVjLmlzb2xhdGluZzt0KyssZT1lLmxhc3RDaGlsZCk7cz1jbG9zZVNsaWNlKHMsZSx0KX1yZXR1cm4gZS5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkIix0PT57cz10KHMsZSxhKX0pLHN9Y29uc3QgaXQ9L14oYXxhYmJyfGFjcm9ueW18YnxjaXRlfGNvZGV8ZGVsfGVtfGl8aW5zfGtiZHxsYWJlbHxvdXRwdXR8cXxydWJ5fHN8c2FtcHxzcGFufHN0cm9uZ3xzdWJ8c3VwfHRpbWV8dXx0dHx2YXIpJC9pO2Z1bmN0aW9uIHdpdGhXcmFwcGVycyhlLHQsbj0wKXtmb3IobGV0IHI9dC5sZW5ndGgtMTtyPj1uO3ItLSllPXRbcl0uY3JlYXRlKG51bGwsRnJhZ21lbnQuZnJvbShlKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYWRkVG9TaWJsaW5nKGUsdCxuLHIsbyl7aWYobzxlLmxlbmd0aCYmbzx0Lmxlbmd0aCYmZVtvXT09dFtvXSl7bGV0IGk9YWRkVG9TaWJsaW5nKGUsdCxuLHIubGFzdENoaWxkLG8rMSk7aWYoaSlyZXR1cm4gci5jb3B5KHIuY29udGVudC5yZXBsYWNlQ2hpbGQoci5jaGlsZENvdW50LTEsaSkpO2lmKHIuY29udGVudE1hdGNoQXQoci5jaGlsZENvdW50KS5tYXRjaFR5cGUobz09ZS5sZW5ndGgtMT9uLnR5cGU6ZVtvKzFdKSlyZXR1cm4gci5jb3B5KHIuY29udGVudC5hcHBlbmQoRnJhZ21lbnQuZnJvbSh3aXRoV3JhcHBlcnMobixlLG8rMSkpKSl9fWZ1bmN0aW9uIGNsb3NlUmlnaHQoZSx0KXtpZigwPT10KXJldHVybiBlO2xldCBuPWUuY29udGVudC5yZXBsYWNlQ2hpbGQoZS5jaGlsZENvdW50LTEsY2xvc2VSaWdodChlLmxhc3RDaGlsZCx0LTEpKSxyPWUuY29udGVudE1hdGNoQXQoZS5jaGlsZENvdW50KS5maWxsQmVmb3JlKEZyYWdtZW50LmVtcHR5LCEwKTtyZXR1cm4gZS5jb3B5KG4uYXBwZW5kKHIpKX1mdW5jdGlvbiBjbG9zZVJhbmdlKGUsdCxuLHIsbyxpKXtsZXQgcz10PDA/ZS5maXJzdENoaWxkOmUubGFzdENoaWxkLGw9cy5jb250ZW50O3JldHVybiBlLmNoaWxkQ291bnQ+MSYmKGk9MCksbzxyLTEmJihsPWNsb3NlUmFuZ2UobCx0LG4scixvKzEsaSkpLG8+PW4mJihsPXQ8MD9zLmNvbnRlbnRNYXRjaEF0KDApLmZpbGxCZWZvcmUobCxpPD1vKS5hcHBlbmQobCk6bC5hcHBlbmQocy5jb250ZW50TWF0Y2hBdChzLmNoaWxkQ291bnQpLmZpbGxCZWZvcmUoRnJhZ21lbnQuZW1wdHksITApKSksZS5yZXBsYWNlQ2hpbGQodDwwPzA6ZS5jaGlsZENvdW50LTEscy5jb3B5KGwpKX1mdW5jdGlvbiBjbG9zZVNsaWNlKGUsdCxuKXtyZXR1cm4gdDxlLm9wZW5TdGFydCYmKGU9bmV3IFNsaWNlKGNsb3NlUmFuZ2UoZS5jb250ZW50LC0xLHQsZS5vcGVuU3RhcnQsMCxlLm9wZW5FbmQpLHQsZS5vcGVuRW5kKSksbjxlLm9wZW5FbmQmJihlPW5ldyBTbGljZShjbG9zZVJhbmdlKGUuY29udGVudCwxLG4sZS5vcGVuRW5kLDAsMCksZS5vcGVuU3RhcnQsbikpLGV9Y29uc3Qgc3Q9e3RoZWFkOlsidGFibGUiXSx0Ym9keTpbInRhYmxlIl0sdGZvb3Q6WyJ0YWJsZSJdLGNhcHRpb246WyJ0YWJsZSJdLGNvbGdyb3VwOlsidGFibGUiXSxjb2w6WyJ0YWJsZSIsImNvbGdyb3VwIl0sdHI6WyJ0YWJsZSIsInRib2R5Il0sdGQ6WyJ0YWJsZSIsInRib2R5IiwidHIiXSx0aDpbInRhYmxlIiwidGJvZHkiLCJ0ciJdfTtsZXQgbHQ9bnVsbDtmdW5jdGlvbiBkZXRhY2hlZERvYygpe3JldHVybiBsdHx8KGx0PWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgidGl0bGUiKSl9bGV0IGF0PW51bGw7Y29uc3QgY3Q9e30sZHQ9e30scHQ9e3RvdWNoc3RhcnQ6ITAsdG91Y2htb3ZlOiEwfTtjbGFzcyBJbnB1dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5zaGlmdEtleT0hMSx0aGlzLm1vdXNlRG93bj1udWxsLHRoaXMubGFzdEtleUNvZGU9bnVsbCx0aGlzLmxhc3RLZXlDb2RlVGltZT0wLHRoaXMubGFzdENsaWNrPXt0aW1lOjAseDowLHk6MCx0eXBlOiIiLGJ1dHRvbjowfSx0aGlzLmxhc3RTZWxlY3Rpb25PcmlnaW49bnVsbCx0aGlzLmxhc3RTZWxlY3Rpb25UaW1lPTAsdGhpcy5sYXN0SU9TRW50ZXI9MCx0aGlzLmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dD0tMSx0aGlzLmxhc3RGb2N1cz0wLHRoaXMubGFzdFRvdWNoPTAsdGhpcy5sYXN0Q2hyb21lRGVsZXRlPTAsdGhpcy5jb21wb3Npbmc9ITEsdGhpcy5jb21wb3NpdGlvbk5vZGU9bnVsbCx0aGlzLmNvbXBvc2luZ1RpbWVvdXQ9LTEsdGhpcy5jb21wb3NpdGlvbk5vZGVzPVtdLHRoaXMuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsdGhpcy5jb21wb3NpdGlvbklEPTEsdGhpcy5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMSx0aGlzLmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCx0aGlzLmRvbUNoYW5nZUNvdW50PTAsdGhpcy5ldmVudEhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5oaWRlU2VsZWN0aW9uR3VhcmQ9bnVsbH19ZnVuY3Rpb24gc2V0U2VsZWN0aW9uT3JpZ2luKGUsdCl7ZS5pbnB1dC5sYXN0U2VsZWN0aW9uT3JpZ2luPXQsZS5pbnB1dC5sYXN0U2VsZWN0aW9uVGltZT1EYXRlLm5vdygpfWZ1bmN0aW9uIGVuc3VyZUxpc3RlbmVycyhlKXtlLnNvbWVQcm9wKCJoYW5kbGVET01FdmVudHMiLHQ9Pntmb3IobGV0IG4gaW4gdCllLmlucHV0LmV2ZW50SGFuZGxlcnNbbl18fGUuZG9tLmFkZEV2ZW50TGlzdGVuZXIobixlLmlucHV0LmV2ZW50SGFuZGxlcnNbbl09dD0+cnVuQ3VzdG9tSGFuZGxlcihlLHQpKX0pfWZ1bmN0aW9uIHJ1bkN1c3RvbUhhbmRsZXIoZSx0KXtyZXR1cm4gZS5zb21lUHJvcCgiaGFuZGxlRE9NRXZlbnRzIixuPT57bGV0IHI9blt0LnR5cGVdO3JldHVybiEhciYmKHIoZSx0KXx8dC5kZWZhdWx0UHJldmVudGVkKX0pfWZ1bmN0aW9uIGV2ZW50QmVsb25nc1RvVmlldyhlLHQpe2lmKCF0LmJ1YmJsZXMpcmV0dXJuITA7aWYodC5kZWZhdWx0UHJldmVudGVkKXJldHVybiExO2ZvcihsZXQgbj10LnRhcmdldDtuIT1lLmRvbTtuPW4ucGFyZW50Tm9kZSlpZighbnx8MTE9PW4ubm9kZVR5cGV8fG4ucG1WaWV3RGVzYyYmbi5wbVZpZXdEZXNjLnN0b3BFdmVudCh0KSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBldmVudENvb3JkcyhlKXtyZXR1cm57bGVmdDplLmNsaWVudFgsdG9wOmUuY2xpZW50WX19ZnVuY3Rpb24gcnVuSGFuZGxlck9uQ29udGV4dChlLHQsbixyLG8pe2lmKC0xPT1yKXJldHVybiExO2xldCBpPWUuc3RhdGUuZG9jLnJlc29sdmUocik7Zm9yKGxldCByPWkuZGVwdGgrMTtyPjA7ci0tKWlmKGUuc29tZVByb3AodCx0PT5yPmkuZGVwdGg/dChlLG4saS5ub2RlQWZ0ZXIsaS5iZWZvcmUociksbywhMCk6dChlLG4saS5ub2RlKHIpLGkuYmVmb3JlKHIpLG8sITEpKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB1cGRhdGVTZWxlY3Rpb24oZSx0LG4pe2lmKGUuZm9jdXNlZHx8ZS5mb2N1cygpLGUuc3RhdGUuc2VsZWN0aW9uLmVxKHQpKXJldHVybjtsZXQgcj1lLnN0YXRlLnRyLnNldFNlbGVjdGlvbih0KTtyLnNldE1ldGEoInBvaW50ZXIiLCEwKSxlLmRpc3BhdGNoKHIpfWZ1bmN0aW9uIGhhbmRsZVNpbmdsZUNsaWNrKGUsdCxuLHIsbyl7cmV0dXJuIHJ1bkhhbmRsZXJPbkNvbnRleHQoZSwiaGFuZGxlQ2xpY2tPbiIsdCxuLHIpfHxlLnNvbWVQcm9wKCJoYW5kbGVDbGljayIsbj0+bihlLHQscikpfHwobz9mdW5jdGlvbihlLHQpe2lmKC0xPT10KXJldHVybiExO2xldCBuLHIsbz1lLnN0YXRlLnNlbGVjdGlvbjtvIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiYmKG49by5ub2RlKTtsZXQgaT1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpO2ZvcihsZXQgZT1pLmRlcHRoKzE7ZT4wO2UtLSl7bGV0IHQ9ZT5pLmRlcHRoP2kubm9kZUFmdGVyOmkubm9kZShlKTtpZihOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZSh0KSl7cj1uJiZvLiRmcm9tLmRlcHRoPjAmJmU+PW8uJGZyb20uZGVwdGgmJmkuYmVmb3JlKG8uJGZyb20uZGVwdGgrMSk9PW8uJGZyb20ucG9zP2kuYmVmb3JlKG8uJGZyb20uZGVwdGgpOmkuYmVmb3JlKGUpO2JyZWFrfX1yZXR1cm4gbnVsbCE9ciYmKHVwZGF0ZVNlbGVjdGlvbihlLE5vZGVTZWxlY3Rpb24uY3JlYXRlKGUuc3RhdGUuZG9jLHIpKSwhMCl9KGUsbik6ZnVuY3Rpb24oZSx0KXtpZigtMT09dClyZXR1cm4hMTtsZXQgbj1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpLHI9bi5ub2RlQWZ0ZXI7cmV0dXJuISEociYmci5pc0F0b20mJk5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKHIpKSYmKHVwZGF0ZVNlbGVjdGlvbihlLG5ldyBOb2RlU2VsZWN0aW9uKG4pKSwhMCl9KGUsbikpfWZ1bmN0aW9uIGhhbmRsZURvdWJsZUNsaWNrKGUsdCxuLHIpe3JldHVybiBydW5IYW5kbGVyT25Db250ZXh0KGUsImhhbmRsZURvdWJsZUNsaWNrT24iLHQsbixyKXx8ZS5zb21lUHJvcCgiaGFuZGxlRG91YmxlQ2xpY2siLG49Pm4oZSx0LHIpKX1mdW5jdGlvbiBoYW5kbGVUcmlwbGVDbGljayhlLHQsbixyKXtyZXR1cm4gcnVuSGFuZGxlck9uQ29udGV4dChlLCJoYW5kbGVUcmlwbGVDbGlja09uIix0LG4scil8fGUuc29tZVByb3AoImhhbmRsZVRyaXBsZUNsaWNrIixuPT5uKGUsdCxyKSl8fGZ1bmN0aW9uKGUsdCxuKXtpZigwIT1uLmJ1dHRvbilyZXR1cm4hMTtsZXQgcj1lLnN0YXRlLmRvYztpZigtMT09dClyZXR1cm4hIXIuaW5saW5lQ29udGVudCYmKHVwZGF0ZVNlbGVjdGlvbihlLFRleHRTZWxlY3Rpb24uY3JlYXRlKHIsMCxyLmNvbnRlbnQuc2l6ZSkpLCEwKTtsZXQgbz1yLnJlc29sdmUodCk7Zm9yKGxldCB0PW8uZGVwdGgrMTt0PjA7dC0tKXtsZXQgbj10Pm8uZGVwdGg/by5ub2RlQWZ0ZXI6by5ub2RlKHQpLGk9by5iZWZvcmUodCk7aWYobi5pbmxpbmVDb250ZW50KXVwZGF0ZVNlbGVjdGlvbihlLFRleHRTZWxlY3Rpb24uY3JlYXRlKHIsaSsxLGkrMStuLmNvbnRlbnQuc2l6ZSkpO2Vsc2V7aWYoIU5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG4pKWNvbnRpbnVlO3VwZGF0ZVNlbGVjdGlvbihlLE5vZGVTZWxlY3Rpb24uY3JlYXRlKHIsaSkpfXJldHVybiEwfX0oZSxuLHIpfWZ1bmN0aW9uIGZvcmNlRE9NRmx1c2goZSl7cmV0dXJuIGVuZENvbXBvc2l0aW9uKGUpfWR0LmtleWRvd249KGUsdCk9PntsZXQgbj10O2lmKGUuaW5wdXQuc2hpZnRLZXk9MTY9PW4ua2V5Q29kZXx8bi5zaGlmdEtleSwhaW5Pck5lYXJDb21wb3NpdGlvbihlLG4pJiYoZS5pbnB1dC5sYXN0S2V5Q29kZT1uLmtleUNvZGUsZS5pbnB1dC5sYXN0S2V5Q29kZVRpbWU9RGF0ZS5ub3coKSwhS2V8fCFWZXx8MTMhPW4ua2V5Q29kZSkpaWYoMjI5IT1uLmtleUNvZGUmJmUuZG9tT2JzZXJ2ZXIuZm9yY2VGbHVzaCgpLCFxZXx8MTMhPW4ua2V5Q29kZXx8bi5jdHJsS2V5fHxuLmFsdEtleXx8bi5tZXRhS2V5KWUuc29tZVByb3AoImhhbmRsZUtleURvd24iLHQ9PnQoZSxuKSl8fGNhcHR1cmVLZXlEb3duKGUsbik/bi5wcmV2ZW50RGVmYXVsdCgpOnNldFNlbGVjdGlvbk9yaWdpbihlLCJrZXkiKTtlbHNle2xldCB0PURhdGUubm93KCk7ZS5pbnB1dC5sYXN0SU9TRW50ZXI9dCxlLmlucHV0Lmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dD1zZXRUaW1lb3V0KCgpPT57ZS5pbnB1dC5sYXN0SU9TRW50ZXI9PXQmJihlLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIix0PT50KGUsa2V5RXZlbnQoMTMsIkVudGVyIikpKSxlLmlucHV0Lmxhc3RJT1NFbnRlcj0wKX0sMjAwKX19LGR0LmtleXVwPShlLHQpPT57MTY9PXQua2V5Q29kZSYmKGUuaW5wdXQuc2hpZnRLZXk9ITEpfSxkdC5rZXlwcmVzcz0oZSx0KT0+e2xldCBuPXQ7aWYoaW5Pck5lYXJDb21wb3NpdGlvbihlLG4pfHwhbi5jaGFyQ29kZXx8bi5jdHJsS2V5JiYhbi5hbHRLZXl8fFVlJiZuLm1ldGFLZXkpcmV0dXJuO2lmKGUuc29tZVByb3AoImhhbmRsZUtleVByZXNzIix0PT50KGUsbikpKXJldHVybiB2b2lkIG4ucHJldmVudERlZmF1bHQoKTtsZXQgcj1lLnN0YXRlLnNlbGVjdGlvbjtpZighKHIgaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uJiZyLiRmcm9tLnNhbWVQYXJlbnQoci4kdG8pKSl7bGV0IHQ9U3RyaW5nLmZyb21DaGFyQ29kZShuLmNoYXJDb2RlKSxkZWZsdD0oKT0+ZS5zdGF0ZS50ci5pbnNlcnRUZXh0KHQpLnNjcm9sbEludG9WaWV3KCk7L1tcclxuXS8udGVzdCh0KXx8ZS5zb21lUHJvcCgiaGFuZGxlVGV4dElucHV0IixuPT5uKGUsci4kZnJvbS5wb3Msci4kdG8ucG9zLHQsZGVmbHQpKXx8ZS5kaXNwYXRjaChkZWZsdCgpKSxuLnByZXZlbnREZWZhdWx0KCl9fTtjb25zdCBodD1VZT8ibWV0YUtleSI6ImN0cmxLZXkiO2N0Lm1vdXNlZG93bj0oZSx0KT0+e2xldCBuPXQ7ZS5pbnB1dC5zaGlmdEtleT1uLnNoaWZ0S2V5O2xldCByPWZvcmNlRE9NRmx1c2goZSksbz1EYXRlLm5vdygpLGk9InNpbmdsZUNsaWNrIjtvLWUuaW5wdXQubGFzdENsaWNrLnRpbWU8NTAwJiZmdW5jdGlvbihlLHQpe2xldCBuPXQueC1lLmNsaWVudFgscj10LnktZS5jbGllbnRZO3JldHVybiBuKm4rcipyPDEwMH0obixlLmlucHV0Lmxhc3RDbGljaykmJiFuW2h0XSYmZS5pbnB1dC5sYXN0Q2xpY2suYnV0dG9uPT1uLmJ1dHRvbiYmKCJzaW5nbGVDbGljayI9PWUuaW5wdXQubGFzdENsaWNrLnR5cGU/aT0iZG91YmxlQ2xpY2siOiJkb3VibGVDbGljayI9PWUuaW5wdXQubGFzdENsaWNrLnR5cGUmJihpPSJ0cmlwbGVDbGljayIpKSxlLmlucHV0Lmxhc3RDbGljaz17dGltZTpvLHg6bi5jbGllbnRYLHk6bi5jbGllbnRZLHR5cGU6aSxidXR0b246bi5idXR0b259O2xldCBzPWUucG9zQXRDb29yZHMoZXZlbnRDb29yZHMobikpO3MmJigic2luZ2xlQ2xpY2siPT1pPyhlLmlucHV0Lm1vdXNlRG93biYmZS5pbnB1dC5tb3VzZURvd24uZG9uZSgpLGUuaW5wdXQubW91c2VEb3duPW5ldyBNb3VzZURvd24oZSxzLG4sISFyKSk6KCJkb3VibGVDbGljayI9PWk/aGFuZGxlRG91YmxlQ2xpY2s6aGFuZGxlVHJpcGxlQ2xpY2spKGUscy5wb3Mscy5pbnNpZGUsbik/bi5wcmV2ZW50RGVmYXVsdCgpOnNldFNlbGVjdGlvbk9yaWdpbihlLCJwb2ludGVyIikpfTtjbGFzcyBNb3VzZURvd257Y29uc3RydWN0b3IoZSx0LG4scil7bGV0IG8saTtpZih0aGlzLnZpZXc9ZSx0aGlzLnBvcz10LHRoaXMuZXZlbnQ9bix0aGlzLmZsdXNoZWQ9cix0aGlzLmRlbGF5ZWRTZWxlY3Rpb25TeW5jPSExLHRoaXMubWlnaHREcmFnPW51bGwsdGhpcy5zdGFydERvYz1lLnN0YXRlLmRvYyx0aGlzLnNlbGVjdE5vZGU9ISFuW2h0XSx0aGlzLmFsbG93RGVmYXVsdD1uLnNoaWZ0S2V5LHQuaW5zaWRlPi0xKW89ZS5zdGF0ZS5kb2Mubm9kZUF0KHQuaW5zaWRlKSxpPXQuaW5zaWRlO2Vsc2V7bGV0IG49ZS5zdGF0ZS5kb2MucmVzb2x2ZSh0LnBvcyk7bz1uLnBhcmVudCxpPW4uZGVwdGg/bi5iZWZvcmUoKTowfWNvbnN0IHM9cj9udWxsOm4udGFyZ2V0LGw9cz9lLmRvY1ZpZXcubmVhcmVzdERlc2MocywhMCk6bnVsbDt0aGlzLnRhcmdldD1sJiYxPT1sLm5vZGVET00ubm9kZVR5cGU/bC5ub2RlRE9NOm51bGw7bGV0e3NlbGVjdGlvbjphfT1lLnN0YXRlOzA9PW4uYnV0dG9uJiYoby50eXBlLnNwZWMuZHJhZ2dhYmxlJiYhMSE9PW8udHlwZS5zcGVjLnNlbGVjdGFibGV8fGEgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uJiZhLmZyb208PWkmJmEudG8+aSkmJih0aGlzLm1pZ2h0RHJhZz17bm9kZTpvLHBvczppLGFkZEF0dHI6ISghdGhpcy50YXJnZXR8fHRoaXMudGFyZ2V0LmRyYWdnYWJsZSksc2V0VW5lZGl0YWJsZTohKCF0aGlzLnRhcmdldHx8IUZlfHx0aGlzLnRhcmdldC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRFZGl0YWJsZSIpKX0pLHRoaXMudGFyZ2V0JiZ0aGlzLm1pZ2h0RHJhZyYmKHRoaXMubWlnaHREcmFnLmFkZEF0dHJ8fHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUpJiYodGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKSx0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyJiYodGhpcy50YXJnZXQuZHJhZ2dhYmxlPSEwKSx0aGlzLm1pZ2h0RHJhZy5zZXRVbmVkaXRhYmxlJiZzZXRUaW1lb3V0KCgpPT57dGhpcy52aWV3LmlucHV0Lm1vdXNlRG93bj09dGhpcyYmdGhpcy50YXJnZXQuc2V0QXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiLCJmYWxzZSIpfSwyMCksdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCkpLGUucm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnVwPXRoaXMudXAuYmluZCh0aGlzKSksZS5yb290LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3ZlPXRoaXMubW92ZS5iaW5kKHRoaXMpKSxzZXRTZWxlY3Rpb25PcmlnaW4oZSwicG9pbnRlciIpfWRvbmUoKXt0aGlzLnZpZXcucm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnVwKSx0aGlzLnZpZXcucm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubW92ZSksdGhpcy5taWdodERyYWcmJnRoaXMudGFyZ2V0JiYodGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKSx0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyJiZ0aGlzLnRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoImRyYWdnYWJsZSIpLHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUmJnRoaXMudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgiY29udGVudEVkaXRhYmxlIiksdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCkpLHRoaXMuZGVsYXllZFNlbGVjdGlvblN5bmMmJnNldFRpbWVvdXQoKCk9PnNlbGVjdGlvblRvRE9NKHRoaXMudmlldykpLHRoaXMudmlldy5pbnB1dC5tb3VzZURvd249bnVsbH11cChlKXtpZih0aGlzLmRvbmUoKSwhdGhpcy52aWV3LmRvbS5jb250YWlucyhlLnRhcmdldCkpcmV0dXJuO2xldCB0PXRoaXMucG9zO3RoaXMudmlldy5zdGF0ZS5kb2MhPXRoaXMuc3RhcnREb2MmJih0PXRoaXMudmlldy5wb3NBdENvb3JkcyhldmVudENvb3JkcyhlKSkpLHRoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGUpLHRoaXMuYWxsb3dEZWZhdWx0fHwhdD9zZXRTZWxlY3Rpb25PcmlnaW4odGhpcy52aWV3LCJwb2ludGVyIik6aGFuZGxlU2luZ2xlQ2xpY2sodGhpcy52aWV3LHQucG9zLHQuaW5zaWRlLGUsdGhpcy5zZWxlY3ROb2RlKT9lLnByZXZlbnREZWZhdWx0KCk6MD09ZS5idXR0b24mJih0aGlzLmZsdXNoZWR8fGplJiZ0aGlzLm1pZ2h0RHJhZyYmIXRoaXMubWlnaHREcmFnLm5vZGUuaXNBdG9tfHxWZSYmIXRoaXMudmlldy5zdGF0ZS5zZWxlY3Rpb24udmlzaWJsZSYmTWF0aC5taW4oTWF0aC5hYnModC5wb3MtdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi5mcm9tKSxNYXRoLmFicyh0LnBvcy10aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLnRvKSk8PTIpPyh1cGRhdGVTZWxlY3Rpb24odGhpcy52aWV3LFNlbGVjdGlvbi5uZWFyKHRoaXMudmlldy5zdGF0ZS5kb2MucmVzb2x2ZSh0LnBvcykpKSxlLnByZXZlbnREZWZhdWx0KCkpOnNldFNlbGVjdGlvbk9yaWdpbih0aGlzLnZpZXcsInBvaW50ZXIiKX1tb3ZlKGUpe3RoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGUpLHNldFNlbGVjdGlvbk9yaWdpbih0aGlzLnZpZXcsInBvaW50ZXIiKSwwPT1lLmJ1dHRvbnMmJnRoaXMuZG9uZSgpfXVwZGF0ZUFsbG93RGVmYXVsdChlKXshdGhpcy5hbGxvd0RlZmF1bHQmJihNYXRoLmFicyh0aGlzLmV2ZW50LngtZS5jbGllbnRYKT40fHxNYXRoLmFicyh0aGlzLmV2ZW50LnktZS5jbGllbnRZKT40KSYmKHRoaXMuYWxsb3dEZWZhdWx0PSEwKX19ZnVuY3Rpb24gaW5Pck5lYXJDb21wb3NpdGlvbihlLHQpe3JldHVybiEhZS5jb21wb3Npbmd8fCEhKGplJiZNYXRoLmFicyh0LnRpbWVTdGFtcC1lLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdCk8NTAwKSYmKGUuaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsITApfWN0LnRvdWNoc3RhcnQ9ZT0+e2UuaW5wdXQubGFzdFRvdWNoPURhdGUubm93KCksZm9yY2VET01GbHVzaChlKSxzZXRTZWxlY3Rpb25PcmlnaW4oZSwicG9pbnRlciIpfSxjdC50b3VjaG1vdmU9ZT0+e2UuaW5wdXQubGFzdFRvdWNoPURhdGUubm93KCksc2V0U2VsZWN0aW9uT3JpZ2luKGUsInBvaW50ZXIiKX0sY3QuY29udGV4dG1lbnU9ZT0+Zm9yY2VET01GbHVzaChlKTtjb25zdCB1dD1LZT81ZTM6LTE7ZnVuY3Rpb24gc2NoZWR1bGVDb21wb3NlRW5kKGUsdCl7Y2xlYXJUaW1lb3V0KGUuaW5wdXQuY29tcG9zaW5nVGltZW91dCksdD4tMSYmKGUuaW5wdXQuY29tcG9zaW5nVGltZW91dD1zZXRUaW1lb3V0KCgpPT5lbmRDb21wb3NpdGlvbihlKSx0KSl9ZnVuY3Rpb24gY2xlYXJDb21wb3NpdGlvbihlKXtmb3IoZS5jb21wb3NpbmcmJihlLmlucHV0LmNvbXBvc2luZz0hMSxlLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD1mdW5jdGlvbigpe2xldCBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiBlLmluaXRFdmVudCgiZXZlbnQiLCEwLCEwKSxlLnRpbWVTdGFtcH0oKSk7ZS5pbnB1dC5jb21wb3NpdGlvbk5vZGVzLmxlbmd0aD4wOyllLmlucHV0LmNvbXBvc2l0aW9uTm9kZXMucG9wKCkubWFya1BhcmVudHNEaXJ0eSgpfWZ1bmN0aW9uIGZpbmRDb21wb3NpdGlvbk5vZGUoZSl7bGV0IHQ9ZS5kb21TZWxlY3Rpb25SYW5nZSgpO2lmKCF0LmZvY3VzTm9kZSlyZXR1cm4gbnVsbDtsZXQgbj1mdW5jdGlvbihlLHQpe2Zvcig7Oyl7aWYoMz09ZS5ub2RlVHlwZSYmdClyZXR1cm4gZTtpZigxPT1lLm5vZGVUeXBlJiZ0PjApe2lmKCJmYWxzZSI9PWUuY29udGVudEVkaXRhYmxlKXJldHVybiBudWxsO3Q9bm9kZVNpemUoZT1lLmNoaWxkTm9kZXNbdC0xXSl9ZWxzZXtpZighZS5wYXJlbnROb2RlfHxoYXNCbG9ja0Rlc2MoZSkpcmV0dXJuIG51bGw7dD1kb21JbmRleChlKSxlPWUucGFyZW50Tm9kZX19fSh0LmZvY3VzTm9kZSx0LmZvY3VzT2Zmc2V0KSxyPWZ1bmN0aW9uKGUsdCl7Zm9yKDs7KXtpZigzPT1lLm5vZGVUeXBlJiZ0PGUubm9kZVZhbHVlLmxlbmd0aClyZXR1cm4gZTtpZigxPT1lLm5vZGVUeXBlJiZ0PGUuY2hpbGROb2Rlcy5sZW5ndGgpe2lmKCJmYWxzZSI9PWUuY29udGVudEVkaXRhYmxlKXJldHVybiBudWxsO2U9ZS5jaGlsZE5vZGVzW3RdLHQ9MH1lbHNle2lmKCFlLnBhcmVudE5vZGV8fGhhc0Jsb2NrRGVzYyhlKSlyZXR1cm4gbnVsbDt0PWRvbUluZGV4KGUpKzEsZT1lLnBhcmVudE5vZGV9fX0odC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCk7aWYobiYmciYmbiE9cil7bGV0IHQ9ci5wbVZpZXdEZXNjLG89ZS5kb21PYnNlcnZlci5sYXN0Q2hhbmdlZFRleHROb2RlO2lmKG49PW98fHI9PW8pcmV0dXJuIG87aWYoIXR8fCF0LmlzVGV4dChyLm5vZGVWYWx1ZSkpcmV0dXJuIHI7aWYoZS5pbnB1dC5jb21wb3NpdGlvbk5vZGU9PXIpe2xldCBlPW4ucG1WaWV3RGVzYztpZihlJiZlLmlzVGV4dChuLm5vZGVWYWx1ZSkpcmV0dXJuIHJ9fXJldHVybiBufHxyfWZ1bmN0aW9uIGVuZENvbXBvc2l0aW9uKGUsdD0hMSl7aWYoIShLZSYmZS5kb21PYnNlcnZlci5mbHVzaGluZ1Nvb24+PTApKXtpZihlLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKSxjbGVhckNvbXBvc2l0aW9uKGUpLHR8fGUuZG9jVmlldyYmZS5kb2NWaWV3LmRpcnR5KXtsZXQgbj1zZWxlY3Rpb25Gcm9tRE9NKGUpLHI9ZS5zdGF0ZS5zZWxlY3Rpb247cmV0dXJuIG4mJiFuLmVxKHIpP2UuZGlzcGF0Y2goZS5zdGF0ZS50ci5zZXRTZWxlY3Rpb24obikpOiFlLm1hcmtDdXJzb3ImJiF0fHxyLiRmcm9tLm5vZGUoci4kZnJvbS5zaGFyZWREZXB0aChyLnRvKSkuaW5saW5lQ29udGVudD9lLnVwZGF0ZVN0YXRlKGUuc3RhdGUpOmUuZGlzcGF0Y2goZS5zdGF0ZS50ci5kZWxldGVTZWxlY3Rpb24oKSksITB9cmV0dXJuITF9fWR0LmNvbXBvc2l0aW9uc3RhcnQ9ZHQuY29tcG9zaXRpb251cGRhdGU9ZT0+e2lmKCFlLmNvbXBvc2luZyl7ZS5kb21PYnNlcnZlci5mbHVzaCgpO2xldHtzdGF0ZTp0fT1lLG49dC5zZWxlY3Rpb24uJHRvO2lmKHQuc2VsZWN0aW9uIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbiYmKHQuc3RvcmVkTWFya3N8fCFuLnRleHRPZmZzZXQmJm4ucGFyZW50T2Zmc2V0JiZuLm5vZGVCZWZvcmUubWFya3Muc29tZShlPT4hMT09PWUudHlwZS5zcGVjLmluY2x1c2l2ZSl8fFZlJiZXZSYmZnVuY3Rpb24oZSl7bGV0e2ZvY3VzTm9kZTp0LGZvY3VzT2Zmc2V0Om59PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZighdHx8MSE9dC5ub2RlVHlwZXx8bj49dC5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm4hMTtsZXQgcj10LmNoaWxkTm9kZXNbbl07cmV0dXJuIDE9PXIubm9kZVR5cGUmJiJmYWxzZSI9PXIuY29udGVudEVkaXRhYmxlfShlKSkpZS5tYXJrQ3Vyc29yPWUuc3RhdGUuc3RvcmVkTWFya3N8fG4ubWFya3MoKSxlbmRDb21wb3NpdGlvbihlLCEwKSxlLm1hcmtDdXJzb3I9bnVsbDtlbHNlIGlmKGVuZENvbXBvc2l0aW9uKGUsIXQuc2VsZWN0aW9uLmVtcHR5KSxGZSYmdC5zZWxlY3Rpb24uZW1wdHkmJm4ucGFyZW50T2Zmc2V0JiYhbi50ZXh0T2Zmc2V0JiZuLm5vZGVCZWZvcmUubWFya3MubGVuZ3RoKXtsZXQgdD1lLmRvbVNlbGVjdGlvblJhbmdlKCk7Zm9yKGxldCBuPXQuZm9jdXNOb2RlLHI9dC5mb2N1c09mZnNldDtuJiYxPT1uLm5vZGVUeXBlJiYwIT1yOyl7bGV0IHQ9cjwwP24ubGFzdENoaWxkOm4uY2hpbGROb2Rlc1tyLTFdO2lmKCF0KWJyZWFrO2lmKDM9PXQubm9kZVR5cGUpe2xldCBuPWUuZG9tU2VsZWN0aW9uKCk7biYmbi5jb2xsYXBzZSh0LHQubm9kZVZhbHVlLmxlbmd0aCk7YnJlYWt9bj10LHI9LTF9fWUuaW5wdXQuY29tcG9zaW5nPSEwfXNjaGVkdWxlQ29tcG9zZUVuZChlLHV0KX0sZHQuY29tcG9zaXRpb25lbmQ9KGUsdCk9PntlLmNvbXBvc2luZyYmKGUuaW5wdXQuY29tcG9zaW5nPSExLGUuaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0PXQudGltZVN0YW1wLGUuaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlcz1lLmRvbU9ic2VydmVyLnBlbmRpbmdSZWNvcmRzKCkubGVuZ3RoP2UuaW5wdXQuY29tcG9zaXRpb25JRDowLGUuaW5wdXQuY29tcG9zaXRpb25Ob2RlPW51bGwsZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbj9lLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKTplLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXMmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmUuZG9tT2JzZXJ2ZXIuZmx1c2goKSksZS5pbnB1dC5jb21wb3NpdGlvbklEKyssc2NoZWR1bGVDb21wb3NlRW5kKGUsMjApKX07Y29uc3QgZnQ9emUmJkJlPDE1fHxxZSYmR2U8NjA0O2Z1bmN0aW9uIGRvUGFzdGUoZSx0LG4scixvKXtsZXQgaT1wYXJzZUZyb21DbGlwYm9hcmQoZSx0LG4scixlLnN0YXRlLnNlbGVjdGlvbi4kZnJvbSk7aWYoZS5zb21lUHJvcCgiaGFuZGxlUGFzdGUiLHQ9PnQoZSxvLGl8fFNsaWNlLmVtcHR5KSkpcmV0dXJuITA7aWYoIWkpcmV0dXJuITE7bGV0IHM9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PWUub3BlblN0YXJ0JiYwPT1lLm9wZW5FbmQmJjE9PWUuY29udGVudC5jaGlsZENvdW50P2UuY29udGVudC5maXJzdENoaWxkOm51bGx9KGkpLGw9cz9lLnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKHMscik6ZS5zdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uKGkpO3JldHVybiBlLmRpc3BhdGNoKGwuc2Nyb2xsSW50b1ZpZXcoKS5zZXRNZXRhKCJwYXN0ZSIsITApLnNldE1ldGEoInVpRXZlbnQiLCJwYXN0ZSIpKSwhMH1mdW5jdGlvbiBnZXRUZXh0JDEoZSl7bGV0IHQ9ZS5nZXREYXRhKCJ0ZXh0L3BsYWluIil8fGUuZ2V0RGF0YSgiVGV4dCIpO2lmKHQpcmV0dXJuIHQ7bGV0IG49ZS5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0Iik7cmV0dXJuIG4/bi5yZXBsYWNlKC9ccj9cbi9nLCIgIik6IiJ9Y3QuY29weT1kdC5jdXQ9KGUsdCk9PntsZXQgbj10LHI9ZS5zdGF0ZS5zZWxlY3Rpb24sbz0iY3V0Ij09bi50eXBlO2lmKHIuZW1wdHkpcmV0dXJuO2xldCBpPWZ0P251bGw6bi5jbGlwYm9hcmREYXRhLHM9ci5jb250ZW50KCkse2RvbTpsLHRleHQ6YX09c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUscyk7aT8obi5wcmV2ZW50RGVmYXVsdCgpLGkuY2xlYXJEYXRhKCksaS5zZXREYXRhKCJ0ZXh0L2h0bWwiLGwuaW5uZXJIVE1MKSxpLnNldERhdGEoInRleHQvcGxhaW4iLGEpKTpmdW5jdGlvbihlLHQpe2lmKCFlLmRvbS5wYXJlbnROb2RlKXJldHVybjtsZXQgbj1lLmRvbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtuLmFwcGVuZENoaWxkKHQpLG4uc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGZpeGVkOyBsZWZ0OiAtMTAwMDBweDsgdG9wOiAxMHB4IjtsZXQgcj1nZXRTZWxlY3Rpb24oKSxvPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7by5zZWxlY3ROb2RlQ29udGVudHModCksZS5kb20uYmx1cigpLHIucmVtb3ZlQWxsUmFuZ2VzKCksci5hZGRSYW5nZShvKSxzZXRUaW1lb3V0KCgpPT57bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobiksZS5mb2N1cygpfSw1MCl9KGUsbCksbyYmZS5kaXNwYXRjaChlLnN0YXRlLnRyLmRlbGV0ZVNlbGVjdGlvbigpLnNjcm9sbEludG9WaWV3KCkuc2V0TWV0YSgidWlFdmVudCIsImN1dCIpKX0sZHQucGFzdGU9KGUsdCk9PntsZXQgbj10O2lmKGUuY29tcG9zaW5nJiYhS2UpcmV0dXJuO2xldCByPWZ0P251bGw6bi5jbGlwYm9hcmREYXRhLG89ZS5pbnB1dC5zaGlmdEtleSYmNDUhPWUuaW5wdXQubGFzdEtleUNvZGU7ciYmZG9QYXN0ZShlLGdldFRleHQkMShyKSxyLmdldERhdGEoInRleHQvaHRtbCIpLG8sbik/bi5wcmV2ZW50RGVmYXVsdCgpOmZ1bmN0aW9uKGUsdCl7aWYoIWUuZG9tLnBhcmVudE5vZGUpcmV0dXJuO2xldCBuPWUuaW5wdXQuc2hpZnRLZXl8fGUuc3RhdGUuc2VsZWN0aW9uLiRmcm9tLnBhcmVudC50eXBlLnNwZWMuY29kZSxyPWUuZG9tLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuPyJ0ZXh0YXJlYSI6ImRpdiIpKTtufHwoci5jb250ZW50RWRpdGFibGU9InRydWUiKSxyLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOiBmaXhlZDsgbGVmdDogLTEwMDAwcHg7IHRvcDogMTBweCIsci5mb2N1cygpO2xldCBvPWUuaW5wdXQuc2hpZnRLZXkmJjQ1IT1lLmlucHV0Lmxhc3RLZXlDb2RlO3NldFRpbWVvdXQoKCk9PntlLmZvY3VzKCksci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQociksbj9kb1Bhc3RlKGUsci52YWx1ZSxudWxsLG8sdCk6ZG9QYXN0ZShlLHIudGV4dENvbnRlbnQsci5pbm5lckhUTUwsbyx0KX0sNTApfShlLG4pfTtjbGFzcyBEcmFnZ2luZ3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5zbGljZT1lLHRoaXMubW92ZT10LHRoaXMubm9kZT1ufX1jb25zdCBtdD1VZT8iYWx0S2V5IjoiY3RybEtleSI7ZnVuY3Rpb24gZHJhZ01vdmVzKGUsdCl7bGV0IG47cmV0dXJuIGUuc29tZVByb3AoImRyYWdDb3BpZXMiLGU9PntuPW58fGUodCl9KSxudWxsIT1uPyFuOiF0W210XX1jdC5kcmFnc3RhcnQ9KGUsdCk9PntsZXQgbj10LHI9ZS5pbnB1dC5tb3VzZURvd247aWYociYmci5kb25lKCksIW4uZGF0YVRyYW5zZmVyKXJldHVybjtsZXQgbyxpPWUuc3RhdGUuc2VsZWN0aW9uLHM9aS5lbXB0eT9udWxsOmUucG9zQXRDb29yZHMoZXZlbnRDb29yZHMobikpO2lmKHMmJnMucG9zPj1pLmZyb20mJnMucG9zPD0oaSBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24/aS50by0xOmkudG8pKTtlbHNlIGlmKHImJnIubWlnaHREcmFnKW89Tm9kZVNlbGVjdGlvbi5jcmVhdGUoZS5zdGF0ZS5kb2Msci5taWdodERyYWcucG9zKTtlbHNlIGlmKG4udGFyZ2V0JiYxPT1uLnRhcmdldC5ub2RlVHlwZSl7bGV0IHQ9ZS5kb2NWaWV3Lm5lYXJlc3REZXNjKG4udGFyZ2V0LCEwKTt0JiZ0Lm5vZGUudHlwZS5zcGVjLmRyYWdnYWJsZSYmdCE9ZS5kb2NWaWV3JiYobz1Ob2RlU2VsZWN0aW9uLmNyZWF0ZShlLnN0YXRlLmRvYyx0LnBvc0JlZm9yZSkpfWxldCBsPShvfHxlLnN0YXRlLnNlbGVjdGlvbikuY29udGVudCgpLHtkb206YSx0ZXh0OmMsc2xpY2U6ZH09c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUsbCk7KCFuLmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGh8fCFWZXx8X2U+MTIwKSYmbi5kYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCksbi5kYXRhVHJhbnNmZXIuc2V0RGF0YShmdD8iVGV4dCI6InRleHQvaHRtbCIsYS5pbm5lckhUTUwpLG4uZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9ImNvcHlNb3ZlIixmdHx8bi5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsYyksZS5kcmFnZ2luZz1uZXcgRHJhZ2dpbmcoZCxkcmFnTW92ZXMoZSxuKSxvKX0sY3QuZHJhZ2VuZD1lPT57bGV0IHQ9ZS5kcmFnZ2luZzt3aW5kb3cuc2V0VGltZW91dCgoKT0+e2UuZHJhZ2dpbmc9PXQmJihlLmRyYWdnaW5nPW51bGwpfSw1MCl9LGR0LmRyYWdvdmVyPWR0LmRyYWdlbnRlcj0oZSx0KT0+dC5wcmV2ZW50RGVmYXVsdCgpLGR0LmRyb3A9KGUsdCk9Pnt0cnl7IWZ1bmN0aW9uKGUsdCxuKXtpZighdC5kYXRhVHJhbnNmZXIpcmV0dXJuO2xldCByPWUucG9zQXRDb29yZHMoZXZlbnRDb29yZHModCkpO2lmKCFyKXJldHVybjtsZXQgbz1lLnN0YXRlLmRvYy5yZXNvbHZlKHIucG9zKSxpPW4mJm4uc2xpY2U7aT9lLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWQiLHQ9PntpPXQoaSxlLCExKX0pOmk9cGFyc2VGcm9tQ2xpcGJvYXJkKGUsZ2V0VGV4dCQxKHQuZGF0YVRyYW5zZmVyKSxmdD9udWxsOnQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvaHRtbCIpLCExLG8pO2xldCBzPSEoIW58fCFkcmFnTW92ZXMoZSx0KSk7aWYoZS5zb21lUHJvcCgiaGFuZGxlRHJvcCIsbj0+bihlLHQsaXx8U2xpY2UuZW1wdHkscykpKXJldHVybiB2b2lkIHQucHJldmVudERlZmF1bHQoKTtpZighaSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO2xldCBsPWk/ZHJvcFBvaW50KGUuc3RhdGUuZG9jLG8ucG9zLGkpOm8ucG9zO251bGw9PWwmJihsPW8ucG9zKTtsZXQgYT1lLnN0YXRlLnRyO2lmKHMpe2xldHtub2RlOmV9PW47ZT9lLnJlcGxhY2UoYSk6YS5kZWxldGVTZWxlY3Rpb24oKX1sZXQgYz1hLm1hcHBpbmcubWFwKGwpLGQ9MD09aS5vcGVuU3RhcnQmJjA9PWkub3BlbkVuZCYmMT09aS5jb250ZW50LmNoaWxkQ291bnQscD1hLmRvYztkP2EucmVwbGFjZVJhbmdlV2l0aChjLGMsaS5jb250ZW50LmZpcnN0Q2hpbGQpOmEucmVwbGFjZVJhbmdlKGMsYyxpKTtpZihhLmRvYy5lcShwKSlyZXR1cm47bGV0IGY9YS5kb2MucmVzb2x2ZShjKTtpZihkJiZOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShpLmNvbnRlbnQuZmlyc3RDaGlsZCkmJmYubm9kZUFmdGVyJiZmLm5vZGVBZnRlci5zYW1lTWFya3VwKGkuY29udGVudC5maXJzdENoaWxkKSlhLnNldFNlbGVjdGlvbihuZXcgTm9kZVNlbGVjdGlvbihmKSk7ZWxzZXtsZXQgdD1hLm1hcHBpbmcubWFwKGwpO2EubWFwcGluZy5tYXBzW2EubWFwcGluZy5tYXBzLmxlbmd0aC0xXS5mb3JFYWNoKChlLG4scixvKT0+dD1vKSxhLnNldFNlbGVjdGlvbihzZWxlY3Rpb25CZXR3ZWVuKGUsZixhLmRvYy5yZXNvbHZlKHQpKSl9ZS5mb2N1cygpLGUuZGlzcGF0Y2goYS5zZXRNZXRhKCJ1aUV2ZW50IiwiZHJvcCIpKX0oZSx0LGUuZHJhZ2dpbmcpfWZpbmFsbHl7ZS5kcmFnZ2luZz1udWxsfX0sY3QuZm9jdXM9ZT0+e2UuaW5wdXQubGFzdEZvY3VzPURhdGUubm93KCksZS5mb2N1c2VkfHwoZS5kb21PYnNlcnZlci5zdG9wKCksZS5kb20uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3ItZm9jdXNlZCIpLGUuZG9tT2JzZXJ2ZXIuc3RhcnQoKSxlLmZvY3VzZWQ9ITAsc2V0VGltZW91dCgoKT0+e2UuZG9jVmlldyYmZS5oYXNGb2N1cygpJiYhZS5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmVxKGUuZG9tU2VsZWN0aW9uUmFuZ2UoKSkmJnNlbGVjdGlvblRvRE9NKGUpfSwyMCkpfSxjdC5ibHVyPShlLHQpPT57bGV0IG49dDtlLmZvY3VzZWQmJihlLmRvbU9ic2VydmVyLnN0b3AoKSxlLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1mb2N1c2VkIiksZS5kb21PYnNlcnZlci5zdGFydCgpLG4ucmVsYXRlZFRhcmdldCYmZS5kb20uY29udGFpbnMobi5yZWxhdGVkVGFyZ2V0KSYmZS5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmNsZWFyKCksZS5mb2N1c2VkPSExKX0sY3QuYmVmb3JlaW5wdXQ9KGUsdCk9PntpZihWZSYmS2UmJiJkZWxldGVDb250ZW50QmFja3dhcmQiPT10LmlucHV0VHlwZSl7ZS5kb21PYnNlcnZlci5mbHVzaFNvb24oKTtsZXR7ZG9tQ2hhbmdlQ291bnQ6dH09ZS5pbnB1dDtzZXRUaW1lb3V0KCgpPT57aWYoZS5pbnB1dC5kb21DaGFuZ2VDb3VudCE9dClyZXR1cm47aWYoZS5kb20uYmx1cigpLGUuZm9jdXMoKSxlLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIix0PT50KGUsa2V5RXZlbnQoOCwiQmFja3NwYWNlIikpKSlyZXR1cm47bGV0eyRjdXJzb3I6bn09ZS5zdGF0ZS5zZWxlY3Rpb247biYmbi5wb3M+MCYmZS5kaXNwYXRjaChlLnN0YXRlLnRyLmRlbGV0ZShuLnBvcy0xLG4ucG9zKS5zY3JvbGxJbnRvVmlldygpKX0sNTApfX07Zm9yKGxldCBlIGluIGR0KWN0W2VdPWR0W2VdO2Z1bmN0aW9uIGNvbXBhcmVPYmpzKGUsdCl7aWYoZT09dClyZXR1cm4hMDtmb3IobGV0IG4gaW4gZSlpZihlW25dIT09dFtuXSlyZXR1cm4hMTtmb3IobGV0IG4gaW4gdClpZighKG4gaW4gZSkpcmV0dXJuITE7cmV0dXJuITB9Y2xhc3MgV2lkZ2V0VHlwZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudG9ET009ZSx0aGlzLnNwZWM9dHx8eXQsdGhpcy5zaWRlPXRoaXMuc3BlYy5zaWRlfHwwfW1hcChlLHQsbixyKXtsZXR7cG9zOm8sZGVsZXRlZDppfT1lLm1hcFJlc3VsdCh0LmZyb20rcix0aGlzLnNpZGU8MD8tMToxKTtyZXR1cm4gaT9udWxsOm5ldyBEZWNvcmF0aW9uKG8tbixvLW4sdGhpcyl9dmFsaWQoKXtyZXR1cm4hMH1lcShlKXtyZXR1cm4gdGhpcz09ZXx8ZSBpbnN0YW5jZW9mIFdpZGdldFR5cGUmJih0aGlzLnNwZWMua2V5JiZ0aGlzLnNwZWMua2V5PT1lLnNwZWMua2V5fHx0aGlzLnRvRE9NPT1lLnRvRE9NJiZjb21wYXJlT2Jqcyh0aGlzLnNwZWMsZS5zcGVjKSl9ZGVzdHJveShlKXt0aGlzLnNwZWMuZGVzdHJveSYmdGhpcy5zcGVjLmRlc3Ryb3koZSl9fWNsYXNzIElubGluZVR5cGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fHl0fW1hcChlLHQsbixyKXtsZXQgbz1lLm1hcCh0LmZyb20rcix0aGlzLnNwZWMuaW5jbHVzaXZlU3RhcnQ/LTE6MSktbixpPWUubWFwKHQudG8rcix0aGlzLnNwZWMuaW5jbHVzaXZlRW5kPzE6LTEpLW47cmV0dXJuIG8+PWk/bnVsbDpuZXcgRGVjb3JhdGlvbihvLGksdGhpcyl9dmFsaWQoZSx0KXtyZXR1cm4gdC5mcm9tPHQudG99ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fGUgaW5zdGFuY2VvZiBJbmxpbmVUeXBlJiZjb21wYXJlT2Jqcyh0aGlzLmF0dHJzLGUuYXR0cnMpJiZjb21wYXJlT2Jqcyh0aGlzLnNwZWMsZS5zcGVjKX1zdGF0aWMgaXMoZSl7cmV0dXJuIGUudHlwZSBpbnN0YW5jZW9mIElubGluZVR5cGV9ZGVzdHJveSgpe319Y2xhc3MgTm9kZVR5cGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fHl0fW1hcChlLHQsbixyKXtsZXQgbz1lLm1hcFJlc3VsdCh0LmZyb20rciwxKTtpZihvLmRlbGV0ZWQpcmV0dXJuIG51bGw7bGV0IGk9ZS5tYXBSZXN1bHQodC50bytyLC0xKTtyZXR1cm4gaS5kZWxldGVkfHxpLnBvczw9by5wb3M/bnVsbDpuZXcgRGVjb3JhdGlvbihvLnBvcy1uLGkucG9zLW4sdGhpcyl9dmFsaWQoZSx0KXtsZXQgbix7aW5kZXg6cixvZmZzZXQ6b309ZS5jb250ZW50LmZpbmRJbmRleCh0LmZyb20pO3JldHVybiBvPT10LmZyb20mJiEobj1lLmNoaWxkKHIpKS5pc1RleHQmJm8rbi5ub2RlU2l6ZT09dC50b31lcShlKXtyZXR1cm4gdGhpcz09ZXx8ZSBpbnN0YW5jZW9mIE5vZGVUeXBlJiZjb21wYXJlT2Jqcyh0aGlzLmF0dHJzLGUuYXR0cnMpJiZjb21wYXJlT2Jqcyh0aGlzLnNwZWMsZS5zcGVjKX1kZXN0cm95KCl7fX1jbGFzcyBEZWNvcmF0aW9ue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy50eXBlPW59Y29weShlLHQpe3JldHVybiBuZXcgRGVjb3JhdGlvbihlLHQsdGhpcy50eXBlKX1lcShlLHQ9MCl7cmV0dXJuIHRoaXMudHlwZS5lcShlLnR5cGUpJiZ0aGlzLmZyb20rdD09ZS5mcm9tJiZ0aGlzLnRvK3Q9PWUudG99bWFwKGUsdCxuKXtyZXR1cm4gdGhpcy50eXBlLm1hcChlLHRoaXMsdCxuKX1zdGF0aWMgd2lkZ2V0KGUsdCxuKXtyZXR1cm4gbmV3IERlY29yYXRpb24oZSxlLG5ldyBXaWRnZXRUeXBlKHQsbikpfXN0YXRpYyBpbmxpbmUoZSx0LG4scil7cmV0dXJuIG5ldyBEZWNvcmF0aW9uKGUsdCxuZXcgSW5saW5lVHlwZShuLHIpKX1zdGF0aWMgbm9kZShlLHQsbixyKXtyZXR1cm4gbmV3IERlY29yYXRpb24oZSx0LG5ldyBOb2RlVHlwZShuLHIpKX1nZXQgc3BlYygpe3JldHVybiB0aGlzLnR5cGUuc3BlY31nZXQgaW5saW5lKCl7cmV0dXJuIHRoaXMudHlwZSBpbnN0YW5jZW9mIElubGluZVR5cGV9Z2V0IHdpZGdldCgpe3JldHVybiB0aGlzLnR5cGUgaW5zdGFuY2VvZiBXaWRnZXRUeXBlfX1jb25zdCBndD1bXSx5dD17fTtjbGFzcyBEZWNvcmF0aW9uU2V0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sb2NhbD1lLmxlbmd0aD9lOmd0LHRoaXMuY2hpbGRyZW49dC5sZW5ndGg/dDpndH1zdGF0aWMgY3JlYXRlKGUsdCl7cmV0dXJuIHQubGVuZ3RoP2J1aWxkVHJlZSh0LGUsMCx5dCk6a3R9ZmluZChlLHQsbil7bGV0IHI9W107cmV0dXJuIHRoaXMuZmluZElubmVyKG51bGw9PWU/MDplLG51bGw9PXQ/MWU5OnQsciwwLG4pLHJ9ZmluZElubmVyKGUsdCxuLHIsbyl7Zm9yKGxldCBpPTA7aTx0aGlzLmxvY2FsLmxlbmd0aDtpKyspe2xldCBzPXRoaXMubG9jYWxbaV07cy5mcm9tPD10JiZzLnRvPj1lJiYoIW98fG8ocy5zcGVjKSkmJm4ucHVzaChzLmNvcHkocy5mcm9tK3Iscy50bytyKSl9Zm9yKGxldCBpPTA7aTx0aGlzLmNoaWxkcmVuLmxlbmd0aDtpKz0zKWlmKHRoaXMuY2hpbGRyZW5baV08dCYmdGhpcy5jaGlsZHJlbltpKzFdPmUpe2xldCBzPXRoaXMuY2hpbGRyZW5baV0rMTt0aGlzLmNoaWxkcmVuW2krMl0uZmluZElubmVyKGUtcyx0LXMsbixyK3Msbyl9fW1hcChlLHQsbil7cmV0dXJuIHRoaXM9PWt0fHwwPT1lLm1hcHMubGVuZ3RoP3RoaXM6dGhpcy5tYXBJbm5lcihlLHQsMCwwLG58fHl0KX1tYXBJbm5lcihlLHQsbixyLG8pe2xldCBpO2ZvcihsZXQgcz0wO3M8dGhpcy5sb2NhbC5sZW5ndGg7cysrKXtsZXQgbD10aGlzLmxvY2FsW3NdLm1hcChlLG4scik7bCYmbC50eXBlLnZhbGlkKHQsbCk/KGl8fChpPVtdKSkucHVzaChsKTpvLm9uUmVtb3ZlJiZvLm9uUmVtb3ZlKHRoaXMubG9jYWxbc10uc3BlYyl9cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuLHIsbyxpLHMpe2xldCBsPWUuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWk7ZTxuLm1hcHMubGVuZ3RoO2UrKyl7bGV0IHI9MDtuLm1hcHNbZV0uZm9yRWFjaCgoZSxuLG8saSk9PntsZXQgcz1pLW8tKG4tZSk7Zm9yKGxldCBvPTA7bzxsLmxlbmd0aDtvKz0zKXtsZXQgaT1sW28rMV07aWYoaTwwfHxlPmkrdC1yKWNvbnRpbnVlO2xldCBhPWxbb10rdC1yO24+PWE/bFtvKzFdPWU8PWE/LTI6LTE6ZT49dCYmcyYmKGxbb10rPXMsbFtvKzFdKz1zKX1yKz1zfSksdD1uLm1hcHNbZV0ubWFwKHQsLTEpfWxldCBhPSExO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCs9MylpZihsW3QrMV08MCl7aWYoLTI9PWxbdCsxXSl7YT0hMCxsW3QrMV09LTE7Y29udGludWV9bGV0IGM9bi5tYXAoZVt0XStpKSxkPWMtbztpZihkPDB8fGQ+PXIuY29udGVudC5zaXplKXthPSEwO2NvbnRpbnVlfWxldCBwPW4ubWFwKGVbdCsxXStpLC0xKS1vLHtpbmRleDpmLG9mZnNldDptfT1yLmNvbnRlbnQuZmluZEluZGV4KGQpLHk9ci5tYXliZUNoaWxkKGYpO2lmKHkmJm09PWQmJm0reS5ub2RlU2l6ZT09cCl7bGV0IHI9bFt0KzJdLm1hcElubmVyKG4seSxjKzEsZVt0XStpKzEscyk7ciE9a3Q/KGxbdF09ZCxsW3QrMV09cCxsW3QrMl09cik6KGxbdCsxXT0tMixhPSEwKX1lbHNlIGE9ITB9aWYoYSl7bGV0IGE9ZnVuY3Rpb24oZSx0LG4scixvLGkscyl7ZnVuY3Rpb24gZ2F0aGVyKGUsdCl7Zm9yKGxldCBpPTA7aTxlLmxvY2FsLmxlbmd0aDtpKyspe2xldCBsPWUubG9jYWxbaV0ubWFwKHIsbyx0KTtsP24ucHVzaChsKTpzLm9uUmVtb3ZlJiZzLm9uUmVtb3ZlKGUubG9jYWxbaV0uc3BlYyl9Zm9yKGxldCBuPTA7bjxlLmNoaWxkcmVuLmxlbmd0aDtuKz0zKWdhdGhlcihlLmNoaWxkcmVuW24rMl0sZS5jaGlsZHJlbltuXSt0KzEpfWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9MyktMT09ZVtuKzFdJiZnYXRoZXIoZVtuKzJdLHRbbl0raSsxKTtyZXR1cm4gbn0obCxlLHQsbixvLGkscyksYz1idWlsZFRyZWUoYSxyLDAscyk7dD1jLmxvY2FsO2ZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSs9MylsW2UrMV08MCYmKGwuc3BsaWNlKGUsMyksZS09Myk7Zm9yKGxldCBlPTAsdD0wO2U8Yy5jaGlsZHJlbi5sZW5ndGg7ZSs9Myl7bGV0IG49Yy5jaGlsZHJlbltlXTtmb3IoO3Q8bC5sZW5ndGgmJmxbdF08bjspdCs9MztsLnNwbGljZSh0LDAsYy5jaGlsZHJlbltlXSxjLmNoaWxkcmVuW2UrMV0sYy5jaGlsZHJlbltlKzJdKX19cmV0dXJuIG5ldyBEZWNvcmF0aW9uU2V0KHQuc29ydChieVBvcyksbCl9KHRoaXMuY2hpbGRyZW4saXx8W10sZSx0LG4scixvKTppP25ldyBEZWNvcmF0aW9uU2V0KGkuc29ydChieVBvcyksZ3QpOmt0fWFkZChlLHQpe3JldHVybiB0Lmxlbmd0aD90aGlzPT1rdD9EZWNvcmF0aW9uU2V0LmNyZWF0ZShlLHQpOnRoaXMuYWRkSW5uZXIoZSx0LDApOnRoaXN9YWRkSW5uZXIoZSx0LG4pe2xldCByLG89MDtlLmZvckVhY2goKGUsaSk9PntsZXQgcyxsPWkrbjtpZihzPXRha2VTcGFuc0Zvck5vZGUodCxlLGwpKXtmb3Iocnx8KHI9dGhpcy5jaGlsZHJlbi5zbGljZSgpKTtvPHIubGVuZ3RoJiZyW29dPGk7KW8rPTM7cltvXT09aT9yW28rMl09cltvKzJdLmFkZElubmVyKGUscyxsKzEpOnIuc3BsaWNlKG8sMCxpLGkrZS5ub2RlU2l6ZSxidWlsZFRyZWUocyxlLGwrMSx5dCkpLG8rPTN9fSk7bGV0IGk9bW92ZVNwYW5zKG8/d2l0aG91dE51bGxzKHQpOnQsLW4pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWlbdF0udHlwZS52YWxpZChlLGlbdF0pfHxpLnNwbGljZSh0LS0sMSk7cmV0dXJuIG5ldyBEZWNvcmF0aW9uU2V0KGkubGVuZ3RoP3RoaXMubG9jYWwuY29uY2F0KGkpLnNvcnQoYnlQb3MpOnRoaXMubG9jYWwscnx8dGhpcy5jaGlsZHJlbil9cmVtb3ZlKGUpe3JldHVybiAwPT1lLmxlbmd0aHx8dGhpcz09a3Q/dGhpczp0aGlzLnJlbW92ZUlubmVyKGUsMCl9cmVtb3ZlSW5uZXIoZSx0KXtsZXQgbj10aGlzLmNoaWxkcmVuLHI9dGhpcy5sb2NhbDtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrPTMpe2xldCBvLGk9bltyXSt0LHM9bltyKzFdK3Q7Zm9yKGxldCB0LG49MDtuPGUubGVuZ3RoO24rKykodD1lW25dKSYmdC5mcm9tPmkmJnQudG88cyYmKGVbbl09bnVsbCwob3x8KG89W10pKS5wdXNoKHQpKTtpZighbyljb250aW51ZTtuPT10aGlzLmNoaWxkcmVuJiYobj10aGlzLmNoaWxkcmVuLnNsaWNlKCkpO2xldCBsPW5bcisyXS5yZW1vdmVJbm5lcihvLGkrMSk7bCE9a3Q/bltyKzJdPWw6KG4uc3BsaWNlKHIsMyksci09Myl9aWYoci5sZW5ndGgpZm9yKGxldCBuLG89MDtvPGUubGVuZ3RoO28rKylpZihuPWVbb10pZm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspcltlXS5lcShuLHQpJiYocj09dGhpcy5sb2NhbCYmKHI9dGhpcy5sb2NhbC5zbGljZSgpKSxyLnNwbGljZShlLS0sMSkpO3JldHVybiBuPT10aGlzLmNoaWxkcmVuJiZyPT10aGlzLmxvY2FsP3RoaXM6ci5sZW5ndGh8fG4ubGVuZ3RoP25ldyBEZWNvcmF0aW9uU2V0KHIsbik6a3R9Zm9yQ2hpbGQoZSx0KXtpZih0aGlzPT1rdClyZXR1cm4gdGhpcztpZih0LmlzTGVhZilyZXR1cm4gRGVjb3JhdGlvblNldC5lbXB0eTtsZXQgbixyO2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCs9MylpZih0aGlzLmNoaWxkcmVuW3RdPj1lKXt0aGlzLmNoaWxkcmVuW3RdPT1lJiYobj10aGlzLmNoaWxkcmVuW3QrMl0pO2JyZWFrfWxldCBvPWUrMSxpPW8rdC5jb250ZW50LnNpemU7Zm9yKGxldCBlPTA7ZTx0aGlzLmxvY2FsLmxlbmd0aDtlKyspe2xldCB0PXRoaXMubG9jYWxbZV07aWYodC5mcm9tPGkmJnQudG8+byYmdC50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZSl7bGV0IGU9TWF0aC5tYXgobyx0LmZyb20pLW8sbj1NYXRoLm1pbihpLHQudG8pLW87ZTxuJiYocnx8KHI9W10pKS5wdXNoKHQuY29weShlLG4pKX19aWYocil7bGV0IGU9bmV3IERlY29yYXRpb25TZXQoci5zb3J0KGJ5UG9zKSxndCk7cmV0dXJuIG4/bmV3IERlY29yYXRpb25Hcm91cChbZSxuXSk6ZX1yZXR1cm4gbnx8a3R9ZXEoZSl7aWYodGhpcz09ZSlyZXR1cm4hMDtpZighKGUgaW5zdGFuY2VvZiBEZWNvcmF0aW9uU2V0KXx8dGhpcy5sb2NhbC5sZW5ndGghPWUubG9jYWwubGVuZ3RofHx0aGlzLmNoaWxkcmVuLmxlbmd0aCE9ZS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLmxvY2FsLmxlbmd0aDt0KyspaWYoIXRoaXMubG9jYWxbdF0uZXEoZS5sb2NhbFt0XSkpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kz0zKWlmKHRoaXMuY2hpbGRyZW5bdF0hPWUuY2hpbGRyZW5bdF18fHRoaXMuY2hpbGRyZW5bdCsxXSE9ZS5jaGlsZHJlblt0KzFdfHwhdGhpcy5jaGlsZHJlblt0KzJdLmVxKGUuY2hpbGRyZW5bdCsyXSkpcmV0dXJuITE7cmV0dXJuITB9bG9jYWxzKGUpe3JldHVybiByZW1vdmVPdmVybGFwKHRoaXMubG9jYWxzSW5uZXIoZSkpfWxvY2Fsc0lubmVyKGUpe2lmKHRoaXM9PWt0KXJldHVybiBndDtpZihlLmlubGluZUNvbnRlbnR8fCF0aGlzLmxvY2FsLnNvbWUoSW5saW5lVHlwZS5pcykpcmV0dXJuIHRoaXMubG9jYWw7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmxvY2FsLmxlbmd0aDtlKyspdGhpcy5sb2NhbFtlXS50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZXx8dC5wdXNoKHRoaXMubG9jYWxbZV0pO3JldHVybiB0fWZvckVhY2hTZXQoZSl7ZSh0aGlzKX19RGVjb3JhdGlvblNldC5lbXB0eT1uZXcgRGVjb3JhdGlvblNldChbXSxbXSksRGVjb3JhdGlvblNldC5yZW1vdmVPdmVybGFwPXJlbW92ZU92ZXJsYXA7Y29uc3Qga3Q9RGVjb3JhdGlvblNldC5lbXB0eTtjbGFzcyBEZWNvcmF0aW9uR3JvdXB7Y29uc3RydWN0b3IoZSl7dGhpcy5tZW1iZXJzPWV9bWFwKGUsdCl7Y29uc3Qgbj10aGlzLm1lbWJlcnMubWFwKG49Pm4ubWFwKGUsdCx5dCkpO3JldHVybiBEZWNvcmF0aW9uR3JvdXAuZnJvbShuKX1mb3JDaGlsZChlLHQpe2lmKHQuaXNMZWFmKXJldHVybiBEZWNvcmF0aW9uU2V0LmVtcHR5O2xldCBuPVtdO2ZvcihsZXQgcj0wO3I8dGhpcy5tZW1iZXJzLmxlbmd0aDtyKyspe2xldCBvPXRoaXMubWVtYmVyc1tyXS5mb3JDaGlsZChlLHQpO28hPWt0JiYobyBpbnN0YW5jZW9mIERlY29yYXRpb25Hcm91cD9uPW4uY29uY2F0KG8ubWVtYmVycyk6bi5wdXNoKG8pKX1yZXR1cm4gRGVjb3JhdGlvbkdyb3VwLmZyb20obil9ZXEoZSl7aWYoIShlIGluc3RhbmNlb2YgRGVjb3JhdGlvbkdyb3VwKXx8ZS5tZW1iZXJzLmxlbmd0aCE9dGhpcy5tZW1iZXJzLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMubWVtYmVycy5sZW5ndGg7dCsrKWlmKCF0aGlzLm1lbWJlcnNbdF0uZXEoZS5tZW1iZXJzW3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1sb2NhbHMoZSl7bGV0IHQsbj0hMDtmb3IobGV0IHI9MDtyPHRoaXMubWVtYmVycy5sZW5ndGg7cisrKXtsZXQgbz10aGlzLm1lbWJlcnNbcl0ubG9jYWxzSW5uZXIoZSk7aWYoby5sZW5ndGgpaWYodCl7biYmKHQ9dC5zbGljZSgpLG49ITEpO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXQucHVzaChvW2VdKX1lbHNlIHQ9b31yZXR1cm4gdD9yZW1vdmVPdmVybGFwKG4/dDp0LnNvcnQoYnlQb3MpKTpndH1zdGF0aWMgZnJvbShlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4ga3Q7Y2FzZSAxOnJldHVybiBlWzBdO2RlZmF1bHQ6cmV0dXJuIG5ldyBEZWNvcmF0aW9uR3JvdXAoZS5ldmVyeShlPT5lIGluc3RhbmNlb2YgRGVjb3JhdGlvblNldCk/ZTplLnJlZHVjZSgoZSx0KT0+ZS5jb25jYXQodCBpbnN0YW5jZW9mIERlY29yYXRpb25TZXQ/dDp0Lm1lbWJlcnMpLFtdKSl9fWZvckVhY2hTZXQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm1lbWJlcnMubGVuZ3RoO3QrKyl0aGlzLm1lbWJlcnNbdF0uZm9yRWFjaFNldChlKX19ZnVuY3Rpb24gbW92ZVNwYW5zKGUsdCl7aWYoIXR8fCFlLmxlbmd0aClyZXR1cm4gZTtsZXQgbj1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IG89ZVtyXTtuLnB1c2gobmV3IERlY29yYXRpb24oby5mcm9tK3Qsby50byt0LG8udHlwZSkpfXJldHVybiBufWZ1bmN0aW9uIHRha2VTcGFuc0Zvck5vZGUoZSx0LG4pe2lmKHQuaXNMZWFmKXJldHVybiBudWxsO2xldCByPW4rdC5ub2RlU2l6ZSxvPW51bGw7Zm9yKGxldCB0LGk9MDtpPGUubGVuZ3RoO2krKykodD1lW2ldKSYmdC5mcm9tPm4mJnQudG88ciYmKChvfHwobz1bXSkpLnB1c2godCksZVtpXT1udWxsKTtyZXR1cm4gb31mdW5jdGlvbiB3aXRob3V0TnVsbHMoZSl7bGV0IHQ9W107Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspbnVsbCE9ZVtuXSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGJ1aWxkVHJlZShlLHQsbixyKXtsZXQgbz1bXSxpPSExO3QuZm9yRWFjaCgodCxzKT0+e2xldCBsPXRha2VTcGFuc0Zvck5vZGUoZSx0LHMrbik7aWYobCl7aT0hMDtsZXQgZT1idWlsZFRyZWUobCx0LG4rcysxLHIpO2UhPWt0JiZvLnB1c2gocyxzK3Qubm9kZVNpemUsZSl9fSk7bGV0IHM9bW92ZVNwYW5zKGk/d2l0aG91dE51bGxzKGUpOmUsLW4pLnNvcnQoYnlQb3MpO2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXNbZV0udHlwZS52YWxpZCh0LHNbZV0pfHwoci5vblJlbW92ZSYmci5vblJlbW92ZShzW2VdLnNwZWMpLHMuc3BsaWNlKGUtLSwxKSk7cmV0dXJuIHMubGVuZ3RofHxvLmxlbmd0aD9uZXcgRGVjb3JhdGlvblNldChzLG8pOmt0fWZ1bmN0aW9uIGJ5UG9zKGUsdCl7cmV0dXJuIGUuZnJvbS10LmZyb218fGUudG8tdC50b31mdW5jdGlvbiByZW1vdmVPdmVybGFwKGUpe2xldCB0PWU7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aC0xO24rKyl7bGV0IHI9dFtuXTtpZihyLmZyb20hPXIudG8pZm9yKGxldCBvPW4rMTtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvXTtpZihpLmZyb20hPXIuZnJvbSl7aS5mcm9tPHIudG8mJih0PT1lJiYodD1lLnNsaWNlKCkpLHRbbl09ci5jb3B5KHIuZnJvbSxpLmZyb20pLGluc2VydEFoZWFkKHQsbyxyLmNvcHkoaS5mcm9tLHIudG8pKSk7YnJlYWt9aS50byE9ci50byYmKHQ9PWUmJih0PWUuc2xpY2UoKSksdFtvXT1pLmNvcHkoaS5mcm9tLHIudG8pLGluc2VydEFoZWFkKHQsbysxLGkuY29weShyLnRvLGkudG8pKSl9fXJldHVybiB0fWZ1bmN0aW9uIGluc2VydEFoZWFkKGUsdCxuKXtmb3IoO3Q8ZS5sZW5ndGgmJmJ5UG9zKG4sZVt0XSk+MDspdCsrO2Uuc3BsaWNlKHQsMCxuKX1mdW5jdGlvbiB2aWV3RGVjb3JhdGlvbnMoZSl7bGV0IHQ9W107cmV0dXJuIGUuc29tZVByb3AoImRlY29yYXRpb25zIixuPT57bGV0IHI9bihlLnN0YXRlKTtyJiZyIT1rdCYmdC5wdXNoKHIpfSksZS5jdXJzb3JXcmFwcGVyJiZ0LnB1c2goRGVjb3JhdGlvblNldC5jcmVhdGUoZS5zdGF0ZS5kb2MsW2UuY3Vyc29yV3JhcHBlci5kZWNvXSkpLERlY29yYXRpb25Hcm91cC5mcm9tKHQpfWNvbnN0IHd0PXtjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMCxjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6ITAsYXR0cmlidXRlczohMCxhdHRyaWJ1dGVPbGRWYWx1ZTohMCxzdWJ0cmVlOiEwfSxidD16ZSYmQmU8PTExO2NsYXNzIFNlbGVjdGlvblN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5hbmNob3JOb2RlPW51bGwsdGhpcy5hbmNob3JPZmZzZXQ9MCx0aGlzLmZvY3VzTm9kZT1udWxsLHRoaXMuZm9jdXNPZmZzZXQ9MH1zZXQoZSl7dGhpcy5hbmNob3JOb2RlPWUuYW5jaG9yTm9kZSx0aGlzLmFuY2hvck9mZnNldD1lLmFuY2hvck9mZnNldCx0aGlzLmZvY3VzTm9kZT1lLmZvY3VzTm9kZSx0aGlzLmZvY3VzT2Zmc2V0PWUuZm9jdXNPZmZzZXR9Y2xlYXIoKXt0aGlzLmFuY2hvck5vZGU9dGhpcy5mb2N1c05vZGU9bnVsbH1lcShlKXtyZXR1cm4gZS5hbmNob3JOb2RlPT10aGlzLmFuY2hvck5vZGUmJmUuYW5jaG9yT2Zmc2V0PT10aGlzLmFuY2hvck9mZnNldCYmZS5mb2N1c05vZGU9PXRoaXMuZm9jdXNOb2RlJiZlLmZvY3VzT2Zmc2V0PT10aGlzLmZvY3VzT2Zmc2V0fX1jbGFzcyBET01PYnNlcnZlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMudmlldz1lLHRoaXMuaGFuZGxlRE9NQ2hhbmdlPXQsdGhpcy5xdWV1ZT1bXSx0aGlzLmZsdXNoaW5nU29vbj0tMSx0aGlzLm9ic2VydmVyPW51bGwsdGhpcy5jdXJyZW50U2VsZWN0aW9uPW5ldyBTZWxlY3Rpb25TdGF0ZSx0aGlzLm9uQ2hhckRhdGE9bnVsbCx0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcz0hMSx0aGlzLmxhc3RDaGFuZ2VkVGV4dE5vZGU9bnVsbCx0aGlzLm9ic2VydmVyPXdpbmRvdy5NdXRhdGlvbk9ic2VydmVyJiZuZXcgd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIodD0+e2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMucXVldWUucHVzaCh0W2VdKTt6ZSYmQmU8PTExJiZ0LnNvbWUoZT0+ImNoaWxkTGlzdCI9PWUudHlwZSYmZS5yZW1vdmVkTm9kZXMubGVuZ3RofHwiY2hhcmFjdGVyRGF0YSI9PWUudHlwZSYmZS5vbGRWYWx1ZS5sZW5ndGg+ZS50YXJnZXQubm9kZVZhbHVlLmxlbmd0aCk/dGhpcy5mbHVzaFNvb24oKTpqZSYmZS5jb21wb3NpbmcmJnQuc29tZShlPT4iY2hpbGRMaXN0Ij09ZS50eXBlJiYiVFIiPT1lLnRhcmdldC5ub2RlTmFtZSk/KGUuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb249ITAsdGhpcy5mbHVzaFNvb24oKSk6dGhpcy5mbHVzaCgpfSksYnQmJih0aGlzLm9uQ2hhckRhdGE9ZT0+e3RoaXMucXVldWUucHVzaCh7dGFyZ2V0OmUudGFyZ2V0LHR5cGU6ImNoYXJhY3RlckRhdGEiLG9sZFZhbHVlOmUucHJldlZhbHVlfSksdGhpcy5mbHVzaFNvb24oKX0pLHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9dGhpcy5vblNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpfWZsdXNoU29vbigpe3RoaXMuZmx1c2hpbmdTb29uPDAmJih0aGlzLmZsdXNoaW5nU29vbj13aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMuZmx1c2hpbmdTb29uPS0xLHRoaXMuZmx1c2goKX0sMjApKX1mb3JjZUZsdXNoKCl7dGhpcy5mbHVzaGluZ1Nvb24+LTEmJih3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuZmx1c2hpbmdTb29uKSx0aGlzLmZsdXNoaW5nU29vbj0tMSx0aGlzLmZsdXNoKCkpfXN0YXJ0KCl7dGhpcy5vYnNlcnZlciYmKHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSx0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy52aWV3LmRvbSx3dCkpLHRoaXMub25DaGFyRGF0YSYmdGhpcy52aWV3LmRvbS5hZGRFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLHRoaXMub25DaGFyRGF0YSksdGhpcy5jb25uZWN0U2VsZWN0aW9uKCl9c3RvcCgpe2lmKHRoaXMub2JzZXJ2ZXIpe2xldCBlPXRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtpZihlLmxlbmd0aCl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5xdWV1ZS5wdXNoKGVbdF0pO3dpbmRvdy5zZXRUaW1lb3V0KCgpPT50aGlzLmZsdXNoKCksMjApfXRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpfXRoaXMub25DaGFyRGF0YSYmdGhpcy52aWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLHRoaXMub25DaGFyRGF0YSksdGhpcy5kaXNjb25uZWN0U2VsZWN0aW9uKCl9Y29ubmVjdFNlbGVjdGlvbigpe3RoaXMudmlldy5kb20ub3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHRoaXMub25TZWxlY3Rpb25DaGFuZ2UpfWRpc2Nvbm5lY3RTZWxlY3Rpb24oKXt0aGlzLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIix0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKX1zdXBwcmVzc1NlbGVjdGlvblVwZGF0ZXMoKXt0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcz0hMCxzZXRUaW1lb3V0KCgpPT50aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcz0hMSw1MCl9b25TZWxlY3Rpb25DaGFuZ2UoKXtpZihoYXNGb2N1c0FuZFNlbGVjdGlvbih0aGlzLnZpZXcpKXtpZih0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcylyZXR1cm4gc2VsZWN0aW9uVG9ET00odGhpcy52aWV3KTtpZih6ZSYmQmU8PTExJiYhdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi5lbXB0eSl7bGV0IGU9dGhpcy52aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7aWYoZS5mb2N1c05vZGUmJmlzRXF1aXZhbGVudFBvc2l0aW9uKGUuZm9jdXNOb2RlLGUuZm9jdXNPZmZzZXQsZS5hbmNob3JOb2RlLGUuYW5jaG9yT2Zmc2V0KSlyZXR1cm4gdGhpcy5mbHVzaFNvb24oKX10aGlzLmZsdXNoKCl9fXNldEN1clNlbGVjdGlvbigpe3RoaXMuY3VycmVudFNlbGVjdGlvbi5zZXQodGhpcy52aWV3LmRvbVNlbGVjdGlvblJhbmdlKCkpfWlnbm9yZVNlbGVjdGlvbkNoYW5nZShlKXtpZighZS5mb2N1c05vZGUpcmV0dXJuITA7bGV0IHQsbj1uZXcgU2V0O2ZvcihsZXQgdD1lLmZvY3VzTm9kZTt0O3Q9cGFyZW50Tm9kZSh0KSluLmFkZCh0KTtmb3IobGV0IHI9ZS5hbmNob3JOb2RlO3I7cj1wYXJlbnROb2RlKHIpKWlmKG4uaGFzKHIpKXt0PXI7YnJlYWt9bGV0IHI9dCYmdGhpcy52aWV3LmRvY1ZpZXcubmVhcmVzdERlc2ModCk7cmV0dXJuIHImJnIuaWdub3JlTXV0YXRpb24oe3R5cGU6InNlbGVjdGlvbiIsdGFyZ2V0OjM9PXQubm9kZVR5cGU/dC5wYXJlbnROb2RlOnR9KT8odGhpcy5zZXRDdXJTZWxlY3Rpb24oKSwhMCk6dm9pZCAwfXBlbmRpbmdSZWNvcmRzKCl7aWYodGhpcy5vYnNlcnZlcilmb3IobGV0IGUgb2YgdGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpKXRoaXMucXVldWUucHVzaChlKTtyZXR1cm4gdGhpcy5xdWV1ZX1mbHVzaCgpe2xldHt2aWV3OmV9PXRoaXM7aWYoIWUuZG9jVmlld3x8dGhpcy5mbHVzaGluZ1Nvb24+LTEpcmV0dXJuO2xldCB0PXRoaXMucGVuZGluZ1JlY29yZHMoKTt0Lmxlbmd0aCYmKHRoaXMucXVldWU9W10pO2xldCBuPWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxyPSF0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcyYmIXRoaXMuY3VycmVudFNlbGVjdGlvbi5lcShuKSYmaGFzRm9jdXNBbmRTZWxlY3Rpb24oZSkmJiF0aGlzLmlnbm9yZVNlbGVjdGlvbkNoYW5nZShuKSxvPS0xLGk9LTEscz0hMSxsPVtdO2lmKGUuZWRpdGFibGUpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRoaXMucmVnaXN0ZXJNdXRhdGlvbih0W2VdLGwpO24mJihvPW88MD9uLmZyb206TWF0aC5taW4obi5mcm9tLG8pLGk9aTwwP24udG86TWF0aC5tYXgobi50byxpKSxuLnR5cGVPdmVyJiYocz0hMCkpfWlmKCFsLnNvbWUoZT0+IkJSIj09ZS5ub2RlTmFtZSl8fDghPWUuaW5wdXQubGFzdEtleUNvZGUmJjQ2IT1lLmlucHV0Lmxhc3RLZXlDb2RlKXtpZihGZSYmbC5sZW5ndGgpe2xldCB0PWwuZmlsdGVyKGU9PiJCUiI9PWUubm9kZU5hbWUpO2lmKDI9PXQubGVuZ3RoKXtsZXRbZSxuXT10O2UucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnBhcmVudE5vZGU9PW4ucGFyZW50Tm9kZT9uLnJlbW92ZSgpOmUucmVtb3ZlKCl9ZWxzZXtsZXR7Zm9jdXNOb2RlOm59PXRoaXMuY3VycmVudFNlbGVjdGlvbjtmb3IobGV0IHIgb2YgdCl7bGV0IHQ9ci5wYXJlbnROb2RlOyF0fHwiTEkiIT10Lm5vZGVOYW1lfHxuJiZibG9ja1BhcmVudChlLG4pPT10fHxyLnJlbW92ZSgpfX19fWVsc2UgZm9yKGxldCBlIG9mIGwpaWYoIkJSIj09ZS5ub2RlTmFtZSYmZS5wYXJlbnROb2RlKXtsZXQgdD1lLm5leHRTaWJsaW5nO2Zvcig7dCYmMT09dC5ub2RlVHlwZTspe2lmKCJmYWxzZSI9PXQuY29udGVudEVkaXRhYmxlKXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7YnJlYWt9dD10LmZpcnN0Q2hpbGR9fWxldCBhPW51bGw7bzwwJiZyJiZlLmlucHV0Lmxhc3RGb2N1cz5EYXRlLm5vdygpLTIwMCYmTWF0aC5tYXgoZS5pbnB1dC5sYXN0VG91Y2gsZS5pbnB1dC5sYXN0Q2xpY2sudGltZSk8RGF0ZS5ub3coKS0zMDAmJnNlbGVjdGlvbkNvbGxhcHNlZChuKSYmKGE9c2VsZWN0aW9uRnJvbURPTShlKSkmJmEuZXEoU2VsZWN0aW9uLm5lYXIoZS5zdGF0ZS5kb2MucmVzb2x2ZSgwKSwxKSk/KGUuaW5wdXQubGFzdEZvY3VzPTAsc2VsZWN0aW9uVG9ET00oZSksdGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldChuKSxlLnNjcm9sbFRvU2VsZWN0aW9uKCkpOihvPi0xfHxyKSYmKG8+LTEmJihlLmRvY1ZpZXcubWFya0RpcnR5KG8saSksZnVuY3Rpb24oZSl7aWYodnQuaGFzKGUpKXJldHVybjtpZih2dC5zZXQoZSxudWxsKSwtMSE9PVsibm9ybWFsIiwibm93cmFwIiwicHJlLWxpbmUiXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUoZS5kb20pLndoaXRlU3BhY2UpKXtpZihlLnJlcXVpcmVzR2Vja29IYWNrTm9kZT1GZSx4dClyZXR1cm47Y29uc29sZS53YXJuKCJQcm9zZU1pcnJvciBleHBlY3RzIHRoZSBDU1Mgd2hpdGUtc3BhY2UgcHJvcGVydHkgdG8gYmUgc2V0LCBwcmVmZXJhYmx5IHRvICdwcmUtd3JhcCcuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGxvYWQgc3R5bGUvcHJvc2VtaXJyb3IuY3NzIGZyb20gdGhlIHByb3NlbWlycm9yLXZpZXcgcGFja2FnZS4iKSx4dD0hMH19KGUpKSxlLmlucHV0LmJhZFNhZmFyaUNvbXBvc2l0aW9uJiYoZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMSxmdW5jdGlvbihlLHQpe3ZhciBuO2xldHtmb2N1c05vZGU6cixmb2N1c09mZnNldDpvfT1lLmRvbVNlbGVjdGlvblJhbmdlKCk7Zm9yKGxldCBpIG9mIHQpaWYoIlRSIj09KG51bGw9PT0obj1pLnBhcmVudE5vZGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm5vZGVOYW1lKSl7bGV0IHQ9aS5uZXh0U2libGluZztmb3IoO3QmJiJURCIhPXQubm9kZU5hbWUmJiJUSCIhPXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZztpZih0KXtsZXQgbj10O2Zvcig7Oyl7bGV0IGU9bi5maXJzdENoaWxkO2lmKCFlfHwxIT1lLm5vZGVUeXBlfHwiZmFsc2UiPT1lLmNvbnRlbnRFZGl0YWJsZXx8L14oQlJ8SU1HKSQvLnRlc3QoZS5ub2RlTmFtZSkpYnJlYWs7bj1lfW4uaW5zZXJ0QmVmb3JlKGksbi5maXJzdENoaWxkKSxyPT1pJiZlLmRvbVNlbGVjdGlvbigpLmNvbGxhcHNlKGksbyl9ZWxzZSBpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSl9fShlLGwpKSx0aGlzLmhhbmRsZURPTUNoYW5nZShvLGkscyxsKSxlLmRvY1ZpZXcmJmUuZG9jVmlldy5kaXJ0eT9lLnVwZGF0ZVN0YXRlKGUuc3RhdGUpOnRoaXMuY3VycmVudFNlbGVjdGlvbi5lcShuKXx8c2VsZWN0aW9uVG9ET00oZSksdGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldChuKSl9cmVnaXN0ZXJNdXRhdGlvbihlLHQpe2lmKHQuaW5kZXhPZihlLnRhcmdldCk+LTEpcmV0dXJuIG51bGw7bGV0IG49dGhpcy52aWV3LmRvY1ZpZXcubmVhcmVzdERlc2MoZS50YXJnZXQpO2lmKCJhdHRyaWJ1dGVzIj09ZS50eXBlJiYobj09dGhpcy52aWV3LmRvY1ZpZXd8fCJjb250ZW50ZWRpdGFibGUiPT1lLmF0dHJpYnV0ZU5hbWV8fCJzdHlsZSI9PWUuYXR0cmlidXRlTmFtZSYmIWUub2xkVmFsdWUmJiFlLnRhcmdldC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpKXJldHVybiBudWxsO2lmKCFufHxuLmlnbm9yZU11dGF0aW9uKGUpKXJldHVybiBudWxsO2lmKCJjaGlsZExpc3QiPT1lLnR5cGUpe2ZvcihsZXQgbj0wO248ZS5hZGRlZE5vZGVzLmxlbmd0aDtuKyspe2xldCByPWUuYWRkZWROb2Rlc1tuXTt0LnB1c2gociksMz09ci5ub2RlVHlwZSYmKHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1yKX1pZihuLmNvbnRlbnRET00mJm4uY29udGVudERPTSE9bi5kb20mJiFuLmNvbnRlbnRET00uY29udGFpbnMoZS50YXJnZXQpKXJldHVybntmcm9tOm4ucG9zQmVmb3JlLHRvOm4ucG9zQWZ0ZXJ9O2xldCByPWUucHJldmlvdXNTaWJsaW5nLG89ZS5uZXh0U2libGluZztpZih6ZSYmQmU8PTExJiZlLmFkZGVkTm9kZXMubGVuZ3RoKWZvcihsZXQgdD0wO3Q8ZS5hZGRlZE5vZGVzLmxlbmd0aDt0Kyspe2xldHtwcmV2aW91c1NpYmxpbmc6bixuZXh0U2libGluZzppfT1lLmFkZGVkTm9kZXNbdF07KCFufHxBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUuYWRkZWROb2RlcyxuKTwwKSYmKHI9biksKCFpfHxBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUuYWRkZWROb2RlcyxpKTwwKSYmKG89aSl9bGV0IGk9ciYmci5wYXJlbnROb2RlPT1lLnRhcmdldD9kb21JbmRleChyKSsxOjAscz1uLmxvY2FsUG9zRnJvbURPTShlLnRhcmdldCxpLC0xKSxsPW8mJm8ucGFyZW50Tm9kZT09ZS50YXJnZXQ/ZG9tSW5kZXgobyk6ZS50YXJnZXQuY2hpbGROb2Rlcy5sZW5ndGg7cmV0dXJue2Zyb206cyx0bzpuLmxvY2FsUG9zRnJvbURPTShlLnRhcmdldCxsLDEpfX1yZXR1cm4iYXR0cmlidXRlcyI9PWUudHlwZT97ZnJvbTpuLnBvc0F0U3RhcnQtbi5ib3JkZXIsdG86bi5wb3NBdEVuZCtuLmJvcmRlcn06KHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1lLnRhcmdldCx7ZnJvbTpuLnBvc0F0U3RhcnQsdG86bi5wb3NBdEVuZCx0eXBlT3ZlcjplLnRhcmdldC5ub2RlVmFsdWU9PWUub2xkVmFsdWV9KX19bGV0IHZ0PW5ldyBXZWFrTWFwLHh0PSExO2Z1bmN0aW9uIHJhbmdlVG9TZWxlY3Rpb25SYW5nZShlLHQpe2xldCBuPXQuc3RhcnRDb250YWluZXIscj10LnN0YXJ0T2Zmc2V0LG89dC5lbmRDb250YWluZXIsaT10LmVuZE9mZnNldCxzPWUuZG9tQXRQb3MoZS5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yKTtyZXR1cm4gaXNFcXVpdmFsZW50UG9zaXRpb24ocy5ub2RlLHMub2Zmc2V0LG8saSkmJihbbixyLG8saV09W28saSxuLHJdKSx7YW5jaG9yTm9kZTpuLGFuY2hvck9mZnNldDpyLGZvY3VzTm9kZTpvLGZvY3VzT2Zmc2V0Oml9fWZ1bmN0aW9uIGJsb2NrUGFyZW50KGUsdCl7Zm9yKGxldCBuPXQucGFyZW50Tm9kZTtuJiZuIT1lLmRvbTtuPW4ucGFyZW50Tm9kZSl7bGV0IHQ9ZS5kb2NWaWV3Lm5lYXJlc3REZXNjKG4sITApO2lmKHQmJnQubm9kZS5pc0Jsb2NrKXJldHVybiBufXJldHVybiBudWxsfWZ1bmN0aW9uIHJ1bGVGcm9tTm9kZShlKXtsZXQgdD1lLnBtVmlld0Rlc2M7aWYodClyZXR1cm4gdC5wYXJzZVJ1bGUoKTtpZigiQlIiPT1lLm5vZGVOYW1lJiZlLnBhcmVudE5vZGUpe2lmKGplJiYvXih1bHxvbCkkL2kudGVzdChlLnBhcmVudE5vZGUubm9kZU5hbWUpKXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpKSx7c2tpcDplfX1pZihlLnBhcmVudE5vZGUubGFzdENoaWxkPT1lfHxqZSYmL14odHJ8dGFibGUpJC9pLnRlc3QoZS5wYXJlbnROb2RlLm5vZGVOYW1lKSlyZXR1cm57aWdub3JlOiEwfX1lbHNlIGlmKCJJTUciPT1lLm5vZGVOYW1lJiZlLmdldEF0dHJpYnV0ZSgibWFyay1wbGFjZWhvbGRlciIpKXJldHVybntpZ25vcmU6ITB9O3JldHVybiBudWxsfWNvbnN0IFN0PS9eKGF8YWJicnxhY3JvbnltfGJ8YmRbaW9dfGJpZ3xicnxidXR0b258Y2l0ZXxjb2RlfGRhdGEobGlzdCk/fGRlbHxkZm58ZW18aXxpbWd8aW5zfGtiZHxsYWJlbHxtYXB8bWFya3xtZXRlcnxvdXRwdXR8cXxydWJ5fHN8c2FtcHxzbWFsbHxzcGFufHN0cm9uZ3xzdVticF18dGltZXx1fHR0fHZhcikkL2k7ZnVuY3Rpb24gcmVhZERPTUNoYW5nZShlLHQsbixyLG8pe2xldCBpPWUuaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlc3x8KGUuY29tcG9zaW5nP2UuaW5wdXQuY29tcG9zaXRpb25JRDowKTtpZihlLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCx0PDApe2xldCB0PWUuaW5wdXQubGFzdFNlbGVjdGlvblRpbWU+RGF0ZS5ub3coKS01MD9lLmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW46bnVsbCxuPXNlbGVjdGlvbkZyb21ET00oZSx0KTtpZihuJiYhZS5zdGF0ZS5zZWxlY3Rpb24uZXEobikpe2lmKFZlJiZLZSYmMTM9PT1lLmlucHV0Lmxhc3RLZXlDb2RlJiZEYXRlLm5vdygpLTEwMDxlLmlucHV0Lmxhc3RLZXlDb2RlVGltZSYmZS5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsdD0+dChlLGtleUV2ZW50KDEzLCJFbnRlciIpKSkpcmV0dXJuO2xldCByPWUuc3RhdGUudHIuc2V0U2VsZWN0aW9uKG4pOyJwb2ludGVyIj09dD9yLnNldE1ldGEoInBvaW50ZXIiLCEwKToia2V5Ij09dCYmci5zY3JvbGxJbnRvVmlldygpLGkmJnIuc2V0TWV0YSgiY29tcG9zaXRpb24iLGkpLGUuZGlzcGF0Y2gocil9cmV0dXJufWxldCBzPWUuc3RhdGUuZG9jLnJlc29sdmUodCksbD1zLnNoYXJlZERlcHRoKG4pO3Q9cy5iZWZvcmUobCsxKSxuPWUuc3RhdGUuZG9jLnJlc29sdmUobikuYWZ0ZXIobCsxKTtsZXQgYSxjLGQ9ZS5zdGF0ZS5zZWxlY3Rpb24scD1mdW5jdGlvbihlLHQsbil7bGV0IHIse25vZGU6byxmcm9tT2Zmc2V0OmksdG9PZmZzZXQ6cyxmcm9tOmwsdG86YX09ZS5kb2NWaWV3LnBhcnNlUmFuZ2UodCxuKSxjPWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxkPWMuYW5jaG9yTm9kZTtpZihkJiZlLmRvbS5jb250YWlucygxPT1kLm5vZGVUeXBlP2Q6ZC5wYXJlbnROb2RlKSYmKHI9W3tub2RlOmQsb2Zmc2V0OmMuYW5jaG9yT2Zmc2V0fV0sc2VsZWN0aW9uQ29sbGFwc2VkKGMpfHxyLnB1c2goe25vZGU6Yy5mb2N1c05vZGUsb2Zmc2V0OmMuZm9jdXNPZmZzZXR9KSksVmUmJjg9PT1lLmlucHV0Lmxhc3RLZXlDb2RlKWZvcihsZXQgZT1zO2U+aTtlLS0pe2xldCB0PW8uY2hpbGROb2Rlc1tlLTFdLG49dC5wbVZpZXdEZXNjO2lmKCJCUiI9PXQubm9kZU5hbWUmJiFuKXtzPWU7YnJlYWt9aWYoIW58fG4uc2l6ZSlicmVha31sZXQgcD1lLnN0YXRlLmRvYyxmPWUuc29tZVByb3AoImRvbVBhcnNlciIpfHxET01QYXJzZXIuZnJvbVNjaGVtYShlLnN0YXRlLnNjaGVtYSksbT1wLnJlc29sdmUobCkseT1udWxsLHc9Zi5wYXJzZShvLHt0b3BOb2RlOm0ucGFyZW50LHRvcE1hdGNoOm0ucGFyZW50LmNvbnRlbnRNYXRjaEF0KG0uaW5kZXgoKSksdG9wT3BlbjohMCxmcm9tOmksdG86cyxwcmVzZXJ2ZVdoaXRlc3BhY2U6InByZSIhPW0ucGFyZW50LnR5cGUud2hpdGVzcGFjZXx8ImZ1bGwiLGZpbmRQb3NpdGlvbnM6cixydWxlRnJvbU5vZGU6cnVsZUZyb21Ob2RlLGNvbnRleHQ6bX0pO2lmKHImJm51bGwhPXJbMF0ucG9zKXtsZXQgZT1yWzBdLnBvcyx0PXJbMV0mJnJbMV0ucG9zO251bGw9PXQmJih0PWUpLHk9e2FuY2hvcjplK2wsaGVhZDp0K2x9fXJldHVybntkb2M6dyxzZWw6eSxmcm9tOmwsdG86YX19KGUsdCxuKSxmPWUuc3RhdGUuZG9jLG09Zi5zbGljZShwLmZyb20scC50byk7OD09PWUuaW5wdXQubGFzdEtleUNvZGUmJkRhdGUubm93KCktMTAwPGUuaW5wdXQubGFzdEtleUNvZGVUaW1lPyhhPWUuc3RhdGUuc2VsZWN0aW9uLnRvLGM9ImVuZCIpOihhPWUuc3RhdGUuc2VsZWN0aW9uLmZyb20sYz0ic3RhcnQiKSxlLmlucHV0Lmxhc3RLZXlDb2RlPW51bGw7bGV0IHk9ZnVuY3Rpb24oZSx0LG4scixvKXtsZXQgaT1lLmZpbmREaWZmU3RhcnQodCxuKTtpZihudWxsPT1pKXJldHVybiBudWxsO2xldHthOnMsYjpsfT1lLmZpbmREaWZmRW5kKHQsbitlLnNpemUsbit0LnNpemUpO2lmKCJlbmQiPT1vKXtyLT1zK01hdGgubWF4KDAsaS1NYXRoLm1pbihzLGwpKS1pfWlmKHM8aSYmZS5zaXplPHQuc2l6ZSl7bGV0IGU9cjw9aSYmcj49cz9pLXI6MDtpLT1lLGkmJmk8dC5zaXplJiZpc1N1cnJvZ2F0ZVBhaXIodC50ZXh0QmV0d2VlbihpLTEsaSsxKSkmJihpKz1lPzE6LTEpLGw9aSsobC1zKSxzPWl9ZWxzZSBpZihsPGkpe2xldCB0PXI8PWkmJnI+PWw/aS1yOjA7aS09dCxpJiZpPGUuc2l6ZSYmaXNTdXJyb2dhdGVQYWlyKGUudGV4dEJldHdlZW4oaS0xLGkrMSkpJiYoaSs9dD8xOi0xKSxzPWkrKHMtbCksbD1pfXJldHVybntzdGFydDppLGVuZEE6cyxlbmRCOmx9fShtLmNvbnRlbnQscC5kb2MuY29udGVudCxwLmZyb20sYSxjKTtpZih5JiZlLmlucHV0LmRvbUNoYW5nZUNvdW50KyssKHFlJiZlLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNXx8S2UpJiZvLnNvbWUoZT0+MT09ZS5ub2RlVHlwZSYmIVN0LnRlc3QoZS5ub2RlTmFtZSkpJiYoIXl8fHkuZW5kQT49eS5lbmRCKSYmZS5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsdD0+dChlLGtleUV2ZW50KDEzLCJFbnRlciIpKSkpcmV0dXJuIHZvaWQoZS5pbnB1dC5sYXN0SU9TRW50ZXI9MCk7aWYoIXkpe2lmKCEociYmZCBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24mJiFkLmVtcHR5JiZkLiRoZWFkLnNhbWVQYXJlbnQoZC4kYW5jaG9yKSl8fGUuY29tcG9zaW5nfHxwLnNlbCYmcC5zZWwuYW5jaG9yIT1wLnNlbC5oZWFkKXtpZihwLnNlbCl7bGV0IHQ9cmVzb2x2ZVNlbGVjdGlvbihlLGUuc3RhdGUuZG9jLHAuc2VsKTtpZih0JiYhdC5lcShlLnN0YXRlLnNlbGVjdGlvbikpe2xldCBuPWUuc3RhdGUudHIuc2V0U2VsZWN0aW9uKHQpO2kmJm4uc2V0TWV0YSgiY29tcG9zaXRpb24iLGkpLGUuZGlzcGF0Y2gobil9fXJldHVybn15PXtzdGFydDpkLmZyb20sZW5kQTpkLnRvLGVuZEI6ZC50b319ZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbTxlLnN0YXRlLnNlbGVjdGlvbi50byYmeS5zdGFydD09eS5lbmRCJiZlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24mJih5LnN0YXJ0PmUuc3RhdGUuc2VsZWN0aW9uLmZyb20mJnkuc3RhcnQ8PWUuc3RhdGUuc2VsZWN0aW9uLmZyb20rMiYmZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbT49cC5mcm9tP3kuc3RhcnQ9ZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbTp5LmVuZEE8ZS5zdGF0ZS5zZWxlY3Rpb24udG8mJnkuZW5kQT49ZS5zdGF0ZS5zZWxlY3Rpb24udG8tMiYmZS5zdGF0ZS5zZWxlY3Rpb24udG88PXAudG8mJih5LmVuZEIrPWUuc3RhdGUuc2VsZWN0aW9uLnRvLXkuZW5kQSx5LmVuZEE9ZS5zdGF0ZS5zZWxlY3Rpb24udG8pKSx6ZSYmQmU8PTExJiZ5LmVuZEI9PXkuc3RhcnQrMSYmeS5lbmRBPT15LnN0YXJ0JiZ5LnN0YXJ0PnAuZnJvbSYmIiDCoCI9PXAuZG9jLnRleHRCZXR3ZWVuKHkuc3RhcnQtcC5mcm9tLTEseS5zdGFydC1wLmZyb20rMSkmJih5LnN0YXJ0LS0seS5lbmRBLS0seS5lbmRCLS0pO2xldCB3PXAuZG9jLnJlc29sdmVOb0NhY2hlKHkuc3RhcnQtcC5mcm9tKSxiPXAuZG9jLnJlc29sdmVOb0NhY2hlKHkuZW5kQi1wLmZyb20pLHY9Zi5yZXNvbHZlKHkuc3RhcnQpLHg9dy5zYW1lUGFyZW50KGIpJiZ3LnBhcmVudC5pbmxpbmVDb250ZW50JiZ2LmVuZCgpPj15LmVuZEE7aWYoKHFlJiZlLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNSYmKCF4fHxvLnNvbWUoZT0+IkRJViI9PWUubm9kZU5hbWV8fCJQIj09ZS5ub2RlTmFtZSkpfHwheCYmdy5wb3M8cC5kb2MuY29udGVudC5zaXplJiYoIXcuc2FtZVBhcmVudChiKXx8IXcucGFyZW50LmlubGluZUNvbnRlbnQpJiZ3LnBvczxiLnBvcyYmIS9cUy8udGVzdChwLmRvYy50ZXh0QmV0d2Vlbih3LnBvcyxiLnBvcywiIiwiIikpKSYmZS5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsdD0+dChlLGtleUV2ZW50KDEzLCJFbnRlciIpKSkpcmV0dXJuIHZvaWQoZS5pbnB1dC5sYXN0SU9TRW50ZXI9MCk7aWYoZS5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yPnkuc3RhcnQmJmZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYobi10PD1vLnBvcy1yLnBvc3x8c2tpcENsb3NpbmdBbmRPcGVuaW5nKHIsITAsITEpPG8ucG9zKXJldHVybiExO2xldCBpPWUucmVzb2x2ZSh0KTtpZighci5wYXJlbnQuaXNUZXh0YmxvY2spe2xldCBlPWkubm9kZUFmdGVyO3JldHVybiBudWxsIT1lJiZuPT10K2Uubm9kZVNpemV9aWYoaS5wYXJlbnRPZmZzZXQ8aS5wYXJlbnQuY29udGVudC5zaXplfHwhaS5wYXJlbnQuaXNUZXh0YmxvY2spcmV0dXJuITE7bGV0IHM9ZS5yZXNvbHZlKHNraXBDbG9zaW5nQW5kT3BlbmluZyhpLCEwLCEwKSk7cmV0dXJuISghcy5wYXJlbnQuaXNUZXh0YmxvY2t8fHMucG9zPm58fHNraXBDbG9zaW5nQW5kT3BlbmluZyhzLCEwLCExKTxuKSYmci5wYXJlbnQuY29udGVudC5jdXQoci5wYXJlbnRPZmZzZXQpLmVxKHMucGFyZW50LmNvbnRlbnQpfShmLHkuc3RhcnQseS5lbmRBLHcsYikmJmUuc29tZVByb3AoImhhbmRsZUtleURvd24iLHQ9PnQoZSxrZXlFdmVudCg4LCJCYWNrc3BhY2UiKSkpKXJldHVybiB2b2lkKEtlJiZWZSYmZS5kb21PYnNlcnZlci5zdXBwcmVzc1NlbGVjdGlvblVwZGF0ZXMoKSk7VmUmJnkuZW5kQj09eS5zdGFydCYmKGUuaW5wdXQubGFzdENocm9tZURlbGV0ZT1EYXRlLm5vdygpKSxLZSYmIXgmJncuc3RhcnQoKSE9Yi5zdGFydCgpJiYwPT1iLnBhcmVudE9mZnNldCYmdy5kZXB0aD09Yi5kZXB0aCYmcC5zZWwmJnAuc2VsLmFuY2hvcj09cC5zZWwuaGVhZCYmcC5zZWwuaGVhZD09eS5lbmRBJiYoeS5lbmRCLT0yLGI9cC5kb2MucmVzb2x2ZU5vQ2FjaGUoeS5lbmRCLXAuZnJvbSksc2V0VGltZW91dCgoKT0+e2Uuc29tZVByb3AoImhhbmRsZUtleURvd24iLGZ1bmN0aW9uKHQpe3JldHVybiB0KGUsa2V5RXZlbnQoMTMsIkVudGVyIikpfSl9LDIwKSk7bGV0IFMsQz15LnN0YXJ0LEE9eS5lbmRBLG1rVHI9dD0+e2xldCBuPXR8fGUuc3RhdGUudHIucmVwbGFjZShDLEEscC5kb2Muc2xpY2UoeS5zdGFydC1wLmZyb20seS5lbmRCLXAuZnJvbSkpO2lmKHAuc2VsKXtsZXQgdD1yZXNvbHZlU2VsZWN0aW9uKGUsbi5kb2MscC5zZWwpO3QmJiEoVmUmJmUuY29tcG9zaW5nJiZ0LmVtcHR5JiYoeS5zdGFydCE9eS5lbmRCfHxlLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU8RGF0ZS5ub3coKS0xMDApJiYodC5oZWFkPT1DfHx0LmhlYWQ9PW4ubWFwcGluZy5tYXAoQSktMSl8fHplJiZ0LmVtcHR5JiZ0LmhlYWQ9PUMpJiZuLnNldFNlbGVjdGlvbih0KX1yZXR1cm4gaSYmbi5zZXRNZXRhKCJjb21wb3NpdGlvbiIsaSksbi5zY3JvbGxJbnRvVmlldygpfTtpZih4KWlmKHcucG9zPT1iLnBvcyl7emUmJkJlPD0xMSYmMD09dy5wYXJlbnRPZmZzZXQmJihlLmRvbU9ic2VydmVyLnN1cHByZXNzU2VsZWN0aW9uVXBkYXRlcygpLHNldFRpbWVvdXQoKCk9PnNlbGVjdGlvblRvRE9NKGUpLDIwKSk7bGV0IHQ9bWtUcihlLnN0YXRlLnRyLmRlbGV0ZShDLEEpKSxuPWYucmVzb2x2ZSh5LnN0YXJ0KS5tYXJrc0Fjcm9zcyhmLnJlc29sdmUoeS5lbmRBKSk7biYmdC5lbnN1cmVNYXJrcyhuKSxlLmRpc3BhdGNoKHQpfWVsc2UgaWYoeS5lbmRBPT15LmVuZEImJihTPWZ1bmN0aW9uKGUsdCl7bGV0IG4scixvLGk9ZS5maXJzdENoaWxkLm1hcmtzLHM9dC5maXJzdENoaWxkLm1hcmtzLGw9aSxhPXM7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspbD1zW2VdLnJlbW92ZUZyb21TZXQobCk7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspYT1pW2VdLnJlbW92ZUZyb21TZXQoYSk7aWYoMT09bC5sZW5ndGgmJjA9PWEubGVuZ3RoKXI9bFswXSxuPSJhZGQiLG89ZT0+ZS5tYXJrKHIuYWRkVG9TZXQoZS5tYXJrcykpO2Vsc2V7aWYoMCE9bC5sZW5ndGh8fDEhPWEubGVuZ3RoKXJldHVybiBudWxsO3I9YVswXSxuPSJyZW1vdmUiLG89ZT0+ZS5tYXJrKHIucmVtb3ZlRnJvbVNldChlLm1hcmtzKSl9bGV0IGM9W107Zm9yKGxldCBlPTA7ZTx0LmNoaWxkQ291bnQ7ZSsrKWMucHVzaChvKHQuY2hpbGQoZSkpKTtpZihGcmFnbWVudC5mcm9tKGMpLmVxKGUpKXJldHVybnttYXJrOnIsdHlwZTpufX0ody5wYXJlbnQuY29udGVudC5jdXQody5wYXJlbnRPZmZzZXQsYi5wYXJlbnRPZmZzZXQpLHYucGFyZW50LmNvbnRlbnQuY3V0KHYucGFyZW50T2Zmc2V0LHkuZW5kQS12LnN0YXJ0KCkpKSkpe2xldCB0PW1rVHIoZS5zdGF0ZS50cik7ImFkZCI9PVMudHlwZT90LmFkZE1hcmsoQyxBLFMubWFyayk6dC5yZW1vdmVNYXJrKEMsQSxTLm1hcmspLGUuZGlzcGF0Y2godCl9ZWxzZSBpZih3LnBhcmVudC5jaGlsZCh3LmluZGV4KCkpLmlzVGV4dCYmdy5pbmRleCgpPT1iLmluZGV4KCktKGIudGV4dE9mZnNldD8wOjEpKXtsZXQgdD13LnBhcmVudC50ZXh0QmV0d2Vlbih3LnBhcmVudE9mZnNldCxiLnBhcmVudE9mZnNldCksZGVmbHQ9KCk9Pm1rVHIoZS5zdGF0ZS50ci5pbnNlcnRUZXh0KHQsQyxBKSk7ZS5zb21lUHJvcCgiaGFuZGxlVGV4dElucHV0IixuPT5uKGUsQyxBLHQsZGVmbHQpKXx8ZS5kaXNwYXRjaChkZWZsdCgpKX1lbHNlIGUuZGlzcGF0Y2gobWtUcigpKTtlbHNlIGUuZGlzcGF0Y2gobWtUcigpKX1mdW5jdGlvbiByZXNvbHZlU2VsZWN0aW9uKGUsdCxuKXtyZXR1cm4gTWF0aC5tYXgobi5hbmNob3Isbi5oZWFkKT50LmNvbnRlbnQuc2l6ZT9udWxsOnNlbGVjdGlvbkJldHdlZW4oZSx0LnJlc29sdmUobi5hbmNob3IpLHQucmVzb2x2ZShuLmhlYWQpKX1mdW5jdGlvbiBza2lwQ2xvc2luZ0FuZE9wZW5pbmcoZSx0LG4pe2xldCByPWUuZGVwdGgsbz10P2UuZW5kKCk6ZS5wb3M7Zm9yKDtyPjAmJih0fHxlLmluZGV4QWZ0ZXIocik9PWUubm9kZShyKS5jaGlsZENvdW50KTspci0tLG8rKyx0PSExO2lmKG4pe2xldCB0PWUubm9kZShyKS5tYXliZUNoaWxkKGUuaW5kZXhBZnRlcihyKSk7Zm9yKDt0JiYhdC5pc0xlYWY7KXQ9dC5maXJzdENoaWxkLG8rK31yZXR1cm4gb31mdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIoZSl7aWYoMiE9ZS5sZW5ndGgpcmV0dXJuITE7bGV0IHQ9ZS5jaGFyQ29kZUF0KDApLG49ZS5jaGFyQ29kZUF0KDEpO3JldHVybiB0Pj01NjMyMCYmdDw9NTczNDMmJm4+PTU1Mjk2JiZuPD01NjMxOX1jbGFzcyBFZGl0b3JWaWV3e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnRyYWNrV3JpdGVzPW51bGwsdGhpcy5tb3VudGVkPSExLHRoaXMubWFya0N1cnNvcj1udWxsLHRoaXMuY3Vyc29yV3JhcHBlcj1udWxsLHRoaXMubGFzdFNlbGVjdGVkVmlld0Rlc2M9dm9pZCAwLHRoaXMuaW5wdXQ9bmV3IElucHV0U3RhdGUsdGhpcy5wcmV2RGlyZWN0UGx1Z2lucz1bXSx0aGlzLnBsdWdpblZpZXdzPVtdLHRoaXMucmVxdWlyZXNHZWNrb0hhY2tOb2RlPSExLHRoaXMuZHJhZ2dpbmc9bnVsbCx0aGlzLl9wcm9wcz10LHRoaXMuc3RhdGU9dC5zdGF0ZSx0aGlzLmRpcmVjdFBsdWdpbnM9dC5wbHVnaW5zfHxbXSx0aGlzLmRpcmVjdFBsdWdpbnMuZm9yRWFjaChjaGVja1N0YXRlQ29tcG9uZW50KSx0aGlzLmRpc3BhdGNoPXRoaXMuZGlzcGF0Y2guYmluZCh0aGlzKSx0aGlzLmRvbT1lJiZlLm1vdW50fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlJiYoZS5hcHBlbmRDaGlsZD9lLmFwcGVuZENoaWxkKHRoaXMuZG9tKToiZnVuY3Rpb24iPT10eXBlb2YgZT9lKHRoaXMuZG9tKTplLm1vdW50JiYodGhpcy5tb3VudGVkPSEwKSksdGhpcy5lZGl0YWJsZT1nZXRFZGl0YWJsZSh0aGlzKSx1cGRhdGVDdXJzb3JXcmFwcGVyKHRoaXMpLHRoaXMubm9kZVZpZXdzPWJ1aWxkTm9kZVZpZXdzKHRoaXMpLHRoaXMuZG9jVmlldz1kb2NWaWV3RGVzYyh0aGlzLnN0YXRlLmRvYyxjb21wdXRlRG9jRGVjbyh0aGlzKSx2aWV3RGVjb3JhdGlvbnModGhpcyksdGhpcy5kb20sdGhpcyksdGhpcy5kb21PYnNlcnZlcj1uZXcgRE9NT2JzZXJ2ZXIodGhpcywoZSx0LG4scik9PnJlYWRET01DaGFuZ2UodGhpcyxlLHQsbixyKSksdGhpcy5kb21PYnNlcnZlci5zdGFydCgpLGZ1bmN0aW9uKGUpe2ZvcihsZXQgdCBpbiBjdCl7bGV0IG49Y3RbdF07ZS5kb20uYWRkRXZlbnRMaXN0ZW5lcih0LGUuaW5wdXQuZXZlbnRIYW5kbGVyc1t0XT10PT57IWV2ZW50QmVsb25nc1RvVmlldyhlLHQpfHxydW5DdXN0b21IYW5kbGVyKGUsdCl8fCFlLmVkaXRhYmxlJiZ0LnR5cGUgaW4gZHR8fG4oZSx0KX0scHRbdF0/e3Bhc3NpdmU6ITB9OnZvaWQgMCl9amUmJmUuZG9tLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoKT0+bnVsbCksZW5zdXJlTGlzdGVuZXJzKGUpfSh0aGlzKSx0aGlzLnVwZGF0ZVBsdWdpblZpZXdzKCl9Z2V0IGNvbXBvc2luZygpe3JldHVybiB0aGlzLmlucHV0LmNvbXBvc2luZ31nZXQgcHJvcHMoKXtpZih0aGlzLl9wcm9wcy5zdGF0ZSE9dGhpcy5zdGF0ZSl7bGV0IGU9dGhpcy5fcHJvcHM7dGhpcy5fcHJvcHM9e307Zm9yKGxldCB0IGluIGUpdGhpcy5fcHJvcHNbdF09ZVt0XTt0aGlzLl9wcm9wcy5zdGF0ZT10aGlzLnN0YXRlfXJldHVybiB0aGlzLl9wcm9wc311cGRhdGUoZSl7ZS5oYW5kbGVET01FdmVudHMhPXRoaXMuX3Byb3BzLmhhbmRsZURPTUV2ZW50cyYmZW5zdXJlTGlzdGVuZXJzKHRoaXMpO2xldCB0PXRoaXMuX3Byb3BzO3RoaXMuX3Byb3BzPWUsZS5wbHVnaW5zJiYoZS5wbHVnaW5zLmZvckVhY2goY2hlY2tTdGF0ZUNvbXBvbmVudCksdGhpcy5kaXJlY3RQbHVnaW5zPWUucGx1Z2lucyksdGhpcy51cGRhdGVTdGF0ZUlubmVyKGUuc3RhdGUsdCl9c2V0UHJvcHMoZSl7bGV0IHQ9e307Zm9yKGxldCBlIGluIHRoaXMuX3Byb3BzKXRbZV09dGhpcy5fcHJvcHNbZV07dC5zdGF0ZT10aGlzLnN0YXRlO2ZvcihsZXQgbiBpbiBlKXRbbl09ZVtuXTt0aGlzLnVwZGF0ZSh0KX11cGRhdGVTdGF0ZShlKXt0aGlzLnVwZGF0ZVN0YXRlSW5uZXIoZSx0aGlzLl9wcm9wcyl9dXBkYXRlU3RhdGVJbm5lcihlLHQpe3ZhciBuO2xldCByPXRoaXMuc3RhdGUsbz0hMSxpPSExO2Uuc3RvcmVkTWFya3MmJnRoaXMuY29tcG9zaW5nJiYoY2xlYXJDb21wb3NpdGlvbih0aGlzKSxpPSEwKSx0aGlzLnN0YXRlPWU7bGV0IHM9ci5wbHVnaW5zIT1lLnBsdWdpbnN8fHRoaXMuX3Byb3BzLnBsdWdpbnMhPXQucGx1Z2lucztpZihzfHx0aGlzLl9wcm9wcy5wbHVnaW5zIT10LnBsdWdpbnN8fHRoaXMuX3Byb3BzLm5vZGVWaWV3cyE9dC5ub2RlVmlld3Mpe2xldCBlPWJ1aWxkTm9kZVZpZXdzKHRoaXMpOyhmdW5jdGlvbihlLHQpe2xldCBuPTAscj0wO2ZvcihsZXQgciBpbiBlKXtpZihlW3JdIT10W3JdKXJldHVybiEwO24rK31mb3IobGV0IGUgaW4gdClyKys7cmV0dXJuIG4hPXJ9KShlLHRoaXMubm9kZVZpZXdzKSYmKHRoaXMubm9kZVZpZXdzPWUsbz0hMCl9KHN8fHQuaGFuZGxlRE9NRXZlbnRzIT10aGlzLl9wcm9wcy5oYW5kbGVET01FdmVudHMpJiZlbnN1cmVMaXN0ZW5lcnModGhpcyksdGhpcy5lZGl0YWJsZT1nZXRFZGl0YWJsZSh0aGlzKSx1cGRhdGVDdXJzb3JXcmFwcGVyKHRoaXMpO2xldCBsPXZpZXdEZWNvcmF0aW9ucyh0aGlzKSxhPWNvbXB1dGVEb2NEZWNvKHRoaXMpLGM9ci5wbHVnaW5zPT1lLnBsdWdpbnN8fHIuZG9jLmVxKGUuZG9jKT9lLnNjcm9sbFRvU2VsZWN0aW9uPnIuc2Nyb2xsVG9TZWxlY3Rpb24/InRvIHNlbGVjdGlvbiI6InByZXNlcnZlIjoicmVzZXQiLGQ9b3x8IXRoaXMuZG9jVmlldy5tYXRjaGVzTm9kZShlLmRvYyxhLGwpOyFkJiZlLnNlbGVjdGlvbi5lcShyLnNlbGVjdGlvbil8fChpPSEwKTtsZXQgcD0icHJlc2VydmUiPT1jJiZpJiZudWxsPT10aGlzLmRvbS5zdHlsZS5vdmVyZmxvd0FuY2hvciYmZnVuY3Rpb24oZSl7bGV0IHQsbixyPWUuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89TWF0aC5tYXgoMCxyLnRvcCk7Zm9yKGxldCBpPShyLmxlZnQrci5yaWdodCkvMixzPW8rMTtzPE1hdGgubWluKGlubmVySGVpZ2h0LHIuYm90dG9tKTtzKz01KXtsZXQgcj1lLnJvb3QuZWxlbWVudEZyb21Qb2ludChpLHMpO2lmKCFyfHxyPT1lLmRvbXx8IWUuZG9tLmNvbnRhaW5zKHIpKWNvbnRpbnVlO2xldCBsPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYobC50b3A+PW8tMjApe3Q9cixuPWwudG9wO2JyZWFrfX1yZXR1cm57cmVmRE9NOnQscmVmVG9wOm4sc3RhY2s6c2Nyb2xsU3RhY2soZS5kb20pfX0odGhpcyk7aWYoaSl7dGhpcy5kb21PYnNlcnZlci5zdG9wKCk7bGV0IHQ9ZCYmKHplfHxWZSkmJiF0aGlzLmNvbXBvc2luZyYmIXIuc2VsZWN0aW9uLmVtcHR5JiYhZS5zZWxlY3Rpb24uZW1wdHkmJmZ1bmN0aW9uKGUsdCl7bGV0IG49TWF0aC5taW4oZS4kYW5jaG9yLnNoYXJlZERlcHRoKGUuaGVhZCksdC4kYW5jaG9yLnNoYXJlZERlcHRoKHQuaGVhZCkpO3JldHVybiBlLiRhbmNob3Iuc3RhcnQobikhPXQuJGFuY2hvci5zdGFydChuKX0oci5zZWxlY3Rpb24sZS5zZWxlY3Rpb24pO2lmKGQpe2xldCBuPVZlP3RoaXMudHJhY2tXcml0ZXM9dGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpLmZvY3VzTm9kZTpudWxsO3RoaXMuY29tcG9zaW5nJiYodGhpcy5pbnB1dC5jb21wb3NpdGlvbk5vZGU9ZmluZENvbXBvc2l0aW9uTm9kZSh0aGlzKSksIW8mJnRoaXMuZG9jVmlldy51cGRhdGUoZS5kb2MsYSxsLHRoaXMpfHwodGhpcy5kb2NWaWV3LnVwZGF0ZU91dGVyRGVjbyhhKSx0aGlzLmRvY1ZpZXcuZGVzdHJveSgpLHRoaXMuZG9jVmlldz1kb2NWaWV3RGVzYyhlLmRvYyxhLGwsdGhpcy5kb20sdGhpcykpLCFufHx0aGlzLnRyYWNrV3JpdGVzJiZ0aGlzLmRvbS5jb250YWlucyh0aGlzLnRyYWNrV3JpdGVzKXx8KHQ9ITApfXR8fCEodGhpcy5pbnB1dC5tb3VzZURvd24mJnRoaXMuZG9tT2JzZXJ2ZXIuY3VycmVudFNlbGVjdGlvbi5lcSh0aGlzLmRvbVNlbGVjdGlvblJhbmdlKCkpJiZmdW5jdGlvbihlKXtsZXQgdD1lLmRvY1ZpZXcuZG9tRnJvbVBvcyhlLnN0YXRlLnNlbGVjdGlvbi5hbmNob3IsMCksbj1lLmRvbVNlbGVjdGlvblJhbmdlKCk7cmV0dXJuIGlzRXF1aXZhbGVudFBvc2l0aW9uKHQubm9kZSx0Lm9mZnNldCxuLmFuY2hvck5vZGUsbi5hbmNob3JPZmZzZXQpfSh0aGlzKSk/c2VsZWN0aW9uVG9ET00odGhpcyx0KTooc3luY05vZGVTZWxlY3Rpb24odGhpcyxlLnNlbGVjdGlvbiksdGhpcy5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKSksdGhpcy5kb21PYnNlcnZlci5zdGFydCgpfXRoaXMudXBkYXRlUGx1Z2luVmlld3MociksKG51bGw9PT0obj10aGlzLmRyYWdnaW5nKXx8dm9pZCAwPT09bj92b2lkIDA6bi5ub2RlKSYmIXIuZG9jLmVxKGUuZG9jKSYmdGhpcy51cGRhdGVEcmFnZ2VkTm9kZSh0aGlzLmRyYWdnaW5nLHIpLCJyZXNldCI9PWM/dGhpcy5kb20uc2Nyb2xsVG9wPTA6InRvIHNlbGVjdGlvbiI9PWM/dGhpcy5zY3JvbGxUb1NlbGVjdGlvbigpOnAmJmZ1bmN0aW9uKHtyZWZET006ZSxyZWZUb3A6dCxzdGFjazpufSl7bGV0IHI9ZT9lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDowO3Jlc3RvcmVTY3JvbGxTdGFjayhuLDA9PXI/MDpyLXQpfShwKX1zY3JvbGxUb1NlbGVjdGlvbigpe2xldCBlPXRoaXMuZG9tU2VsZWN0aW9uUmFuZ2UoKS5mb2N1c05vZGU7aWYoZSYmdGhpcy5kb20uY29udGFpbnMoMT09ZS5ub2RlVHlwZT9lOmUucGFyZW50Tm9kZSkpaWYodGhpcy5zb21lUHJvcCgiaGFuZGxlU2Nyb2xsVG9TZWxlY3Rpb24iLGU9PmUodGhpcykpKTtlbHNlIGlmKHRoaXMuc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbil7bGV0IHQ9dGhpcy5kb2NWaWV3LmRvbUFmdGVyUG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZyb20pOzE9PXQubm9kZVR5cGUmJnNjcm9sbFJlY3RJbnRvVmlldyh0aGlzLHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZSl9ZWxzZSBzY3JvbGxSZWN0SW50b1ZpZXcodGhpcyx0aGlzLmNvb3Jkc0F0UG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmhlYWQsMSksZSk7ZWxzZTt9ZGVzdHJveVBsdWdpblZpZXdzKCl7bGV0IGU7Zm9yKDtlPXRoaXMucGx1Z2luVmlld3MucG9wKCk7KWUuZGVzdHJveSYmZS5kZXN0cm95KCl9dXBkYXRlUGx1Z2luVmlld3MoZSl7aWYoZSYmZS5wbHVnaW5zPT10aGlzLnN0YXRlLnBsdWdpbnMmJnRoaXMuZGlyZWN0UGx1Z2lucz09dGhpcy5wcmV2RGlyZWN0UGx1Z2lucylmb3IobGV0IHQ9MDt0PHRoaXMucGx1Z2luVmlld3MubGVuZ3RoO3QrKyl7bGV0IG49dGhpcy5wbHVnaW5WaWV3c1t0XTtuLnVwZGF0ZSYmbi51cGRhdGUodGhpcyxlKX1lbHNle3RoaXMucHJldkRpcmVjdFBsdWdpbnM9dGhpcy5kaXJlY3RQbHVnaW5zLHRoaXMuZGVzdHJveVBsdWdpblZpZXdzKCk7Zm9yKGxldCBlPTA7ZTx0aGlzLmRpcmVjdFBsdWdpbnMubGVuZ3RoO2UrKyl7bGV0IHQ9dGhpcy5kaXJlY3RQbHVnaW5zW2VdO3Quc3BlYy52aWV3JiZ0aGlzLnBsdWdpblZpZXdzLnB1c2godC5zcGVjLnZpZXcodGhpcykpfWZvcihsZXQgZT0wO2U8dGhpcy5zdGF0ZS5wbHVnaW5zLmxlbmd0aDtlKyspe2xldCB0PXRoaXMuc3RhdGUucGx1Z2luc1tlXTt0LnNwZWMudmlldyYmdGhpcy5wbHVnaW5WaWV3cy5wdXNoKHQuc3BlYy52aWV3KHRoaXMpKX19fXVwZGF0ZURyYWdnZWROb2RlKGUsdCl7bGV0IG49ZS5ub2RlLHI9LTE7aWYobi5mcm9tPHRoaXMuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSYmdGhpcy5zdGF0ZS5kb2Mubm9kZUF0KG4uZnJvbSk9PW4ubm9kZSlyPW4uZnJvbTtlbHNle2xldCBlPW4uZnJvbSsodGhpcy5zdGF0ZS5kb2MuY29udGVudC5zaXplLXQuZG9jLmNvbnRlbnQuc2l6ZSk7KGU+MCYmZTx0aGlzLnN0YXRlLmRvYy5jb250ZW50LnNpemUmJnRoaXMuc3RhdGUuZG9jLm5vZGVBdChlKSk9PW4ubm9kZSYmKHI9ZSl9dGhpcy5kcmFnZ2luZz1uZXcgRHJhZ2dpbmcoZS5zbGljZSxlLm1vdmUscjwwP3ZvaWQgMDpOb2RlU2VsZWN0aW9uLmNyZWF0ZSh0aGlzLnN0YXRlLmRvYyxyKSl9c29tZVByb3AoZSx0KXtsZXQgbixyPXRoaXMuX3Byb3BzJiZ0aGlzLl9wcm9wc1tlXTtpZihudWxsIT1yJiYobj10P3Qocik6cikpcmV0dXJuIG47Zm9yKGxldCByPTA7cjx0aGlzLmRpcmVjdFBsdWdpbnMubGVuZ3RoO3IrKyl7bGV0IG89dGhpcy5kaXJlY3RQbHVnaW5zW3JdLnByb3BzW2VdO2lmKG51bGwhPW8mJihuPXQ/dChvKTpvKSlyZXR1cm4gbn1sZXQgbz10aGlzLnN0YXRlLnBsdWdpbnM7aWYobylmb3IobGV0IHI9MDtyPG8ubGVuZ3RoO3IrKyl7bGV0IGk9b1tyXS5wcm9wc1tlXTtpZihudWxsIT1pJiYobj10P3QoaSk6aSkpcmV0dXJuIG59fWhhc0ZvY3VzKCl7aWYoemUpe2xldCBlPXRoaXMucm9vdC5hY3RpdmVFbGVtZW50O2lmKGU9PXRoaXMuZG9tKXJldHVybiEwO2lmKCFlfHwhdGhpcy5kb20uY29udGFpbnMoZSkpcmV0dXJuITE7Zm9yKDtlJiZ0aGlzLmRvbSE9ZSYmdGhpcy5kb20uY29udGFpbnMoZSk7KXtpZigiZmFsc2UiPT1lLmNvbnRlbnRFZGl0YWJsZSlyZXR1cm4hMTtlPWUucGFyZW50RWxlbWVudH1yZXR1cm4hMH1yZXR1cm4gdGhpcy5yb290LmFjdGl2ZUVsZW1lbnQ9PXRoaXMuZG9tfWZvY3VzKCl7dGhpcy5kb21PYnNlcnZlci5zdG9wKCksdGhpcy5lZGl0YWJsZSYmZnVuY3Rpb24oZSl7aWYoZS5zZXRBY3RpdmUpcmV0dXJuIGUuc2V0QWN0aXZlKCk7aWYoWGUpcmV0dXJuIGUuZm9jdXMoWGUpO2xldCB0PXNjcm9sbFN0YWNrKGUpO2UuZm9jdXMobnVsbD09WGU/e2dldCBwcmV2ZW50U2Nyb2xsKCl7cmV0dXJuIFhlPXtwcmV2ZW50U2Nyb2xsOiEwfSwhMH19OnZvaWQgMCksWGV8fChYZT0hMSxyZXN0b3JlU2Nyb2xsU3RhY2sodCwwKSl9KHRoaXMuZG9tKSxzZWxlY3Rpb25Ub0RPTSh0aGlzKSx0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCl9Z2V0IHJvb3QoKXtsZXQgZT10aGlzLl9yb290O2lmKG51bGw9PWUpZm9yKGxldCBlPXRoaXMuZG9tLnBhcmVudE5vZGU7ZTtlPWUucGFyZW50Tm9kZSlpZig5PT1lLm5vZGVUeXBlfHwxMT09ZS5ub2RlVHlwZSYmZS5ob3N0KXJldHVybiBlLmdldFNlbGVjdGlvbnx8KE9iamVjdC5nZXRQcm90b3R5cGVPZihlKS5nZXRTZWxlY3Rpb249KCk9PmUub3duZXJEb2N1bWVudC5nZXRTZWxlY3Rpb24oKSksdGhpcy5fcm9vdD1lO3JldHVybiBlfHxkb2N1bWVudH11cGRhdGVSb290KCl7dGhpcy5fcm9vdD1udWxsfXBvc0F0Q29vcmRzKGUpe3JldHVybiBwb3NBdENvb3Jkcyh0aGlzLGUpfWNvb3Jkc0F0UG9zKGUsdD0xKXtyZXR1cm4gY29vcmRzQXRQb3ModGhpcyxlLHQpfWRvbUF0UG9zKGUsdD0wKXtyZXR1cm4gdGhpcy5kb2NWaWV3LmRvbUZyb21Qb3MoZSx0KX1ub2RlRE9NKGUpe2xldCB0PXRoaXMuZG9jVmlldy5kZXNjQXQoZSk7cmV0dXJuIHQ/dC5ub2RlRE9NOm51bGx9cG9zQXRET00oZSx0LG49LTEpe2xldCByPXRoaXMuZG9jVmlldy5wb3NGcm9tRE9NKGUsdCxuKTtpZihudWxsPT1yKXRocm93IG5ldyBSYW5nZUVycm9yKCJET00gcG9zaXRpb24gbm90IGluc2lkZSB0aGUgZWRpdG9yIik7cmV0dXJuIHJ9ZW5kT2ZUZXh0YmxvY2soZSx0KXtyZXR1cm4gZW5kT2ZUZXh0YmxvY2sodGhpcyx0fHx0aGlzLnN0YXRlLGUpfXBhc3RlSFRNTChlLHQpe3JldHVybiBkb1Bhc3RlKHRoaXMsIiIsZSwhMSx0fHxuZXcgQ2xpcGJvYXJkRXZlbnQoInBhc3RlIikpfXBhc3RlVGV4dChlLHQpe3JldHVybiBkb1Bhc3RlKHRoaXMsZSxudWxsLCEwLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUpe3JldHVybiBzZXJpYWxpemVGb3JDbGlwYm9hcmQodGhpcyxlKX1kZXN0cm95KCl7dGhpcy5kb2NWaWV3JiYoIWZ1bmN0aW9uKGUpe2UuZG9tT2JzZXJ2ZXIuc3RvcCgpO2ZvcihsZXQgdCBpbiBlLmlucHV0LmV2ZW50SGFuZGxlcnMpZS5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUuaW5wdXQuZXZlbnRIYW5kbGVyc1t0XSk7Y2xlYXJUaW1lb3V0KGUuaW5wdXQuY29tcG9zaW5nVGltZW91dCksY2xlYXJUaW1lb3V0KGUuaW5wdXQubGFzdElPU0VudGVyRmFsbGJhY2tUaW1lb3V0KX0odGhpcyksdGhpcy5kZXN0cm95UGx1Z2luVmlld3MoKSx0aGlzLm1vdW50ZWQ/KHRoaXMuZG9jVmlldy51cGRhdGUodGhpcy5zdGF0ZS5kb2MsW10sdmlld0RlY29yYXRpb25zKHRoaXMpLHRoaXMpLHRoaXMuZG9tLnRleHRDb250ZW50PSIiKTp0aGlzLmRvbS5wYXJlbnROb2RlJiZ0aGlzLmRvbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZG9tKSx0aGlzLmRvY1ZpZXcuZGVzdHJveSgpLHRoaXMuZG9jVmlldz1udWxsLEVlPW51bGwpfWdldCBpc0Rlc3Ryb3llZCgpe3JldHVybiBudWxsPT10aGlzLmRvY1ZpZXd9ZGlzcGF0Y2hFdmVudChlKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtydW5DdXN0b21IYW5kbGVyKGUsdCl8fCFjdFt0LnR5cGVdfHwhZS5lZGl0YWJsZSYmdC50eXBlIGluIGR0fHxjdFt0LnR5cGVdKGUsdCl9KHRoaXMsZSl9ZG9tU2VsZWN0aW9uUmFuZ2UoKXtsZXQgZT10aGlzLmRvbVNlbGVjdGlvbigpO3JldHVybiBlP2plJiYxMT09PXRoaXMucm9vdC5ub2RlVHlwZSYmZnVuY3Rpb24oZSl7bGV0IHQ9ZS5hY3RpdmVFbGVtZW50O2Zvcig7dCYmdC5zaGFkb3dSb290Oyl0PXQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O3JldHVybiB0fSh0aGlzLmRvbS5vd25lckRvY3VtZW50KT09dGhpcy5kb20mJmZ1bmN0aW9uKGUsdCl7aWYodC5nZXRDb21wb3NlZFJhbmdlcyl7bGV0IG49dC5nZXRDb21wb3NlZFJhbmdlcyhlLnJvb3QpWzBdO2lmKG4pcmV0dXJuIHJhbmdlVG9TZWxlY3Rpb25SYW5nZShlLG4pfWxldCBuO2Z1bmN0aW9uIHJlYWQoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksbj1lLmdldFRhcmdldFJhbmdlcygpWzBdfXJldHVybiBlLmRvbS5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIscmVhZCwhMCksZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluZGVudCIpLGUuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IixyZWFkLCEwKSxuP3JhbmdlVG9TZWxlY3Rpb25SYW5nZShlLG4pOm51bGx9KHRoaXMsZSl8fGU6e2ZvY3VzTm9kZTpudWxsLGZvY3VzT2Zmc2V0OjAsYW5jaG9yTm9kZTpudWxsLGFuY2hvck9mZnNldDowfX1kb21TZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290LmdldFNlbGVjdGlvbigpfX1mdW5jdGlvbiBjb21wdXRlRG9jRGVjbyhlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiB0LmNsYXNzPSJQcm9zZU1pcnJvciIsdC5jb250ZW50ZWRpdGFibGU9U3RyaW5nKGUuZWRpdGFibGUpLGUuc29tZVByb3AoImF0dHJpYnV0ZXMiLG49PntpZigiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49bihlLnN0YXRlKSksbilmb3IobGV0IGUgaW4gbikiY2xhc3MiPT1lP3QuY2xhc3MrPSIgIituW2VdOiJzdHlsZSI9PWU/dC5zdHlsZT0odC5zdHlsZT90LnN0eWxlKyI7IjoiIikrbltlXTp0W2VdfHwiY29udGVudGVkaXRhYmxlIj09ZXx8Im5vZGVOYW1lIj09ZXx8KHRbZV09U3RyaW5nKG5bZV0pKX0pLHQudHJhbnNsYXRlfHwodC50cmFuc2xhdGU9Im5vIiksW0RlY29yYXRpb24ubm9kZSgwLGUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSx0KV19ZnVuY3Rpb24gdXBkYXRlQ3Vyc29yV3JhcHBlcihlKXtpZihlLm1hcmtDdXJzb3Ipe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO3QuY2xhc3NOYW1lPSJQcm9zZU1pcnJvci1zZXBhcmF0b3IiLHQuc2V0QXR0cmlidXRlKCJtYXJrLXBsYWNlaG9sZGVyIiwidHJ1ZSIpLHQuc2V0QXR0cmlidXRlKCJhbHQiLCIiKSxlLmN1cnNvcldyYXBwZXI9e2RvbTp0LGRlY286RGVjb3JhdGlvbi53aWRnZXQoZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbSx0LHtyYXc6ITAsbWFya3M6ZS5tYXJrQ3Vyc29yfSl9fWVsc2UgZS5jdXJzb3JXcmFwcGVyPW51bGx9ZnVuY3Rpb24gZ2V0RWRpdGFibGUoZSl7cmV0dXJuIWUuc29tZVByb3AoImVkaXRhYmxlIix0PT4hMT09PXQoZS5zdGF0ZSkpfWZ1bmN0aW9uIGJ1aWxkTm9kZVZpZXdzKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gYWRkKGUpe2ZvcihsZXQgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHwodFtuXT1lW25dKX1yZXR1cm4gZS5zb21lUHJvcCgibm9kZVZpZXdzIixhZGQpLGUuc29tZVByb3AoIm1hcmtWaWV3cyIsYWRkKSx0fWZ1bmN0aW9uIGNoZWNrU3RhdGVDb21wb25lbnQoZSl7aWYoZS5zcGVjLnN0YXRlfHxlLnNwZWMuZmlsdGVyVHJhbnNhY3Rpb258fGUuc3BlYy5hcHBlbmRUcmFuc2FjdGlvbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUGx1Z2lucyBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHZpZXcgbXVzdCBub3QgaGF2ZSBhIHN0YXRlIGNvbXBvbmVudCIpfUVkaXRvclZpZXcucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGUpe2xldCB0PXRoaXMuX3Byb3BzLmRpc3BhdGNoVHJhbnNhY3Rpb247dD90LmNhbGwodGhpcyxlKTp0aGlzLnVwZGF0ZVN0YXRlKHRoaXMuc3RhdGUuYXBwbHkoZSkpfTtmb3IodmFyIFR0PXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTA6IkVudGVyIiwxMjoiTnVtTG9jayIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ0OiJQcmludFNjcmVlbiIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsNTk6IjsiLDYxOiI9Iiw5MToiTWV0YSIsOTI6Ik1ldGEiLDEwNjoiKiIsMTA3OiIrIiwxMDg6IiwiLDEwOToiLSIsMTEwOiIuIiwxMTE6Ii8iLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwxNjA6IlNoaWZ0IiwxNjE6IlNoaWZ0IiwxNjI6IkNvbnRyb2wiLDE2MzoiQ29udHJvbCIsMTY0OiJBbHQiLDE2NToiQWx0IiwxNzM6Ii0iLDE4NjoiOyIsMTg3OiI9IiwxODg6IiwiLDE4OToiLSIsMTkwOiIuIiwxOTE6Ii8iLDE5MjoiYCIsMjE5OiJbIiwyMjA6IlxcIiwyMjE6Il0iLDIyMjoiJyJ9LEN0PXs0ODoiKSIsNDk6IiEiLDUwOiJAIiw1MToiIyIsNTI6IiQiLDUzOiIlIiw1NDoiXiIsNTU6IiYiLDU2OiIqIiw1NzoiKCIsNTk6IjoiLDYxOiIrIiwxNzM6Il8iLDE4NjoiOiIsMTg3OiIrIiwxODg6IjwiLDE4OToiXyIsMTkwOiI+IiwxOTE6Ij8iLDE5MjoifiIsMjE5OiJ7IiwyMjA6InwiLDIyMToifSIsMjIyOiciJ30sTXQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSxBdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmL01TSUUgXGR8VHJpZGVudFwvKD86WzctOV18XGR7Mix9KVwuLipydjooXGQrKS8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KSxPdD0wO090PDEwO090KyspVHRbNDgrT3RdPVR0Wzk2K090XT1TdHJpbmcoT3QpO2ZvcihPdD0xO090PD0yNDtPdCsrKVR0W090KzExMV09IkYiK090O2ZvcihPdD02NTtPdDw9OTA7T3QrKylUdFtPdF09U3RyaW5nLmZyb21DaGFyQ29kZShPdCszMiksQ3RbT3RdPVN0cmluZy5mcm9tQ2hhckNvZGUoT3QpO2Zvcih2YXIgRXQgaW4gVHQpQ3QuaGFzT3duUHJvcGVydHkoRXQpfHwoQ3RbRXRdPVR0W0V0XSk7Y29uc3QgTnQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9NYWN8aVAoaG9uZXxbb2FdZCkvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSxSdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmL1dpbi8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO2Z1bmN0aW9uIG5vcm1hbGl6ZUtleU5hbWUkMShlKXtsZXQgdCxuLHIsbyxpPWUuc3BsaXQoLy0oPyEkKS8pLHM9aVtpLmxlbmd0aC0xXTsiU3BhY2UiPT1zJiYocz0iICIpO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGgtMTtlKyspe2xldCBzPWlbZV07aWYoL14oY21kfG1ldGF8bSkkL2kudGVzdChzKSlvPSEwO2Vsc2UgaWYoL15hKGx0KT8kL2kudGVzdChzKSl0PSEwO2Vsc2UgaWYoL14oY3xjdHJsfGNvbnRyb2wpJC9pLnRlc3Qocykpbj0hMDtlbHNlIGlmKC9ecyhoaWZ0KT8kL2kudGVzdChzKSlyPSEwO2Vsc2V7aWYoIS9ebW9kJC9pLnRlc3QocykpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgbW9kaWZpZXIgbmFtZTogIitzKTtOdD9vPSEwOm49ITB9fXJldHVybiB0JiYocz0iQWx0LSIrcyksbiYmKHM9IkN0cmwtIitzKSxvJiYocz0iTWV0YS0iK3MpLHImJihzPSJTaGlmdC0iK3MpLHN9ZnVuY3Rpb24gbW9kaWZpZXJzKGUsdCxuPSEwKXtyZXR1cm4gdC5hbHRLZXkmJihlPSJBbHQtIitlKSx0LmN0cmxLZXkmJihlPSJDdHJsLSIrZSksdC5tZXRhS2V5JiYoZT0iTWV0YS0iK2UpLG4mJnQuc2hpZnRLZXkmJihlPSJTaGlmdC0iK2UpLGV9ZnVuY3Rpb24ga2V5ZG93bkhhbmRsZXIoZSl7bGV0IHQ9ZnVuY3Rpb24oZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IG4gaW4gZSl0W25vcm1hbGl6ZUtleU5hbWUkMShuKV09ZVtuXTtyZXR1cm4gdH0oZSk7cmV0dXJuIGZ1bmN0aW9uKGUsbil7bGV0IHIsbz1mdW5jdGlvbihlKXt2YXIgdD0hKE10JiZlLm1ldGFLZXkmJmUuc2hpZnRLZXkmJiFlLmN0cmxLZXkmJiFlLmFsdEtleXx8QXQmJmUuc2hpZnRLZXkmJmUua2V5JiYxPT1lLmtleS5sZW5ndGh8fCJVbmlkZW50aWZpZWQiPT1lLmtleSkmJmUua2V5fHwoZS5zaGlmdEtleT9DdDpUdClbZS5rZXlDb2RlXXx8ZS5rZXl8fCJVbmlkZW50aWZpZWQiO3JldHVybiJFc2MiPT10JiYodD0iRXNjYXBlIiksIkRlbCI9PXQmJih0PSJEZWxldGUiKSwiTGVmdCI9PXQmJih0PSJBcnJvd0xlZnQiKSwiVXAiPT10JiYodD0iQXJyb3dVcCIpLCJSaWdodCI9PXQmJih0PSJBcnJvd1JpZ2h0IiksIkRvd24iPT10JiYodD0iQXJyb3dEb3duIiksdH0obiksaT10W21vZGlmaWVycyhvLG4pXTtpZihpJiZpKGUuc3RhdGUsZS5kaXNwYXRjaCxlKSlyZXR1cm4hMDtpZigxPT1vLmxlbmd0aCYmIiAiIT1vKXtpZihuLnNoaWZ0S2V5KXtsZXQgcj10W21vZGlmaWVycyhvLG4sITEpXTtpZihyJiZyKGUuc3RhdGUsZS5kaXNwYXRjaCxlKSlyZXR1cm4hMH1pZigobi5hbHRLZXl8fG4ubWV0YUtleXx8bi5jdHJsS2V5KSYmIShSdCYmbi5jdHJsS2V5JiZuLmFsdEtleSkmJihyPVR0W24ua2V5Q29kZV0pJiZyIT1vKXtsZXQgbz10W21vZGlmaWVycyhyLG4pXTtpZihvJiZvKGUuc3RhdGUsZS5kaXNwYXRjaCxlKSlyZXR1cm4hMH19cmV0dXJuITF9fXZhciBEdD1PYmplY3QuZGVmaW5lUHJvcGVydHksX19leHBvcnQkMT0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KUR0KGUsbix7Z2V0OnRbbl0sZW51bWVyYWJsZTohMH0pfTtmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVTdGF0ZShlKXtjb25zdHtzdGF0ZTp0LHRyYW5zYWN0aW9uOm59PWU7bGV0e3NlbGVjdGlvbjpyfT1uLHtkb2M6b309bix7c3RvcmVkTWFya3M6aX09bjtyZXR1cm57Li4udCxhcHBseTp0LmFwcGx5LmJpbmQodCksYXBwbHlUcmFuc2FjdGlvbjp0LmFwcGx5VHJhbnNhY3Rpb24uYmluZCh0KSxwbHVnaW5zOnQucGx1Z2lucyxzY2hlbWE6dC5zY2hlbWEscmVjb25maWd1cmU6dC5yZWNvbmZpZ3VyZS5iaW5kKHQpLHRvSlNPTjp0LnRvSlNPTi5iaW5kKHQpLGdldCBzdG9yZWRNYXJrcygpe3JldHVybiBpfSxnZXQgc2VsZWN0aW9uKCl7cmV0dXJuIHJ9LGdldCBkb2MoKXtyZXR1cm4gb30sZ2V0IHRyKCl7cmV0dXJuIHI9bi5zZWxlY3Rpb24sbz1uLmRvYyxpPW4uc3RvcmVkTWFya3Msbn19fXZhciBQdD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmVkaXRvcj1lLmVkaXRvcix0aGlzLnJhd0NvbW1hbmRzPXRoaXMuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuY29tbWFuZHMsdGhpcy5jdXN0b21TdGF0ZT1lLnN0YXRlfWdldCBoYXNDdXN0b21TdGF0ZSgpe3JldHVybiEhdGhpcy5jdXN0b21TdGF0ZX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5jdXN0b21TdGF0ZXx8dGhpcy5lZGl0b3Iuc3RhdGV9Z2V0IGNvbW1hbmRzKCl7Y29uc3R7cmF3Q29tbWFuZHM6ZSxlZGl0b3I6dCxzdGF0ZTpufT10aGlzLHt2aWV3OnJ9PXQse3RyOm99PW4saT10aGlzLmJ1aWxkUHJvcHMobyk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5tYXAoKFtlLHRdKT0+W2UsKC4uLmUpPT57Y29uc3Qgbj10KC4uLmUpKGkpO3JldHVybiBvLmdldE1ldGEoInByZXZlbnREaXNwYXRjaCIpfHx0aGlzLmhhc0N1c3RvbVN0YXRlfHxyLmRpc3BhdGNoKG8pLG59XSkpfWdldCBjaGFpbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNoYWluKCl9Z2V0IGNhbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNhbigpfWNyZWF0ZUNoYWluKGUsdD0hMCl7Y29uc3R7cmF3Q29tbWFuZHM6bixlZGl0b3I6cixzdGF0ZTpvfT10aGlzLHt2aWV3Oml9PXIscz1bXSxsPSEhZSxhPWV8fG8udHIsYz17Li4uT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLm1hcCgoW2Usbl0pPT5bZSwoLi4uZSk9Pntjb25zdCByPXRoaXMuYnVpbGRQcm9wcyhhLHQpLG89biguLi5lKShyKTtyZXR1cm4gcy5wdXNoKG8pLGN9XSkpLHJ1bjooKT0+KGx8fCF0fHxhLmdldE1ldGEoInByZXZlbnREaXNwYXRjaCIpfHx0aGlzLmhhc0N1c3RvbVN0YXRlfHxpLmRpc3BhdGNoKGEpLHMuZXZlcnkoZT0+ITA9PT1lKSl9O3JldHVybiBjfWNyZWF0ZUNhbihlKXtjb25zdHtyYXdDb21tYW5kczp0LHN0YXRlOm59PXRoaXMscj0hMSxvPWV8fG4udHIsaT10aGlzLmJ1aWxkUHJvcHMobyxyKTtyZXR1cm57Li4uT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoW2UsdF0pPT5bZSwoLi4uZSk9PnQoLi4uZSkoey4uLmksZGlzcGF0Y2g6dm9pZCAwfSldKSksY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4obyxyKX19YnVpbGRQcm9wcyhlLHQ9ITApe2NvbnN0e3Jhd0NvbW1hbmRzOm4sZWRpdG9yOnIsc3RhdGU6b309dGhpcyx7dmlldzppfT1yLHM9e3RyOmUsZWRpdG9yOnIsdmlldzppLHN0YXRlOmNyZWF0ZUNoYWluYWJsZVN0YXRlKHtzdGF0ZTpvLHRyYW5zYWN0aW9uOmV9KSxkaXNwYXRjaDp0PygpPT57fTp2b2lkIDAsY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4oZSx0KSxjYW46KCk9PnRoaXMuY3JlYXRlQ2FuKGUpLGdldCBjb21tYW5kcygpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMobikubWFwKChbZSx0XSk9PltlLCguLi5lKT0+dCguLi5lKShzKV0pKX19O3JldHVybiBzfX0sSXQ9e307X19leHBvcnQkMShJdCx7Ymx1cjooKT0+Ymx1cixjbGVhckNvbnRlbnQ6KCk9PmNsZWFyQ29udGVudCxjbGVhck5vZGVzOigpPT5jbGVhck5vZGVzLGNvbW1hbmQ6KCk9PmNvbW1hbmQsY3JlYXRlUGFyYWdyYXBoTmVhcjooKT0+Y3JlYXRlUGFyYWdyYXBoTmVhcixjdXQ6KCk9PmN1dCxkZWxldGVDdXJyZW50Tm9kZTooKT0+ZGVsZXRlQ3VycmVudE5vZGUsZGVsZXRlTm9kZTooKT0+ZGVsZXRlTm9kZSxkZWxldGVSYW5nZTooKT0+ZGVsZXRlUmFuZ2UsZGVsZXRlU2VsZWN0aW9uOigpPT5kZWxldGVTZWxlY3Rpb24sZW50ZXI6KCk9PmVudGVyLGV4aXRDb2RlOigpPT5leGl0Q29kZSxleHRlbmRNYXJrUmFuZ2U6KCk9PmV4dGVuZE1hcmtSYW5nZSxmaXJzdDooKT0+Zmlyc3QsZm9jdXM6KCk9PmZvY3VzLGZvckVhY2g6KCk9PmZvckVhY2gsaW5zZXJ0Q29udGVudDooKT0+aW5zZXJ0Q29udGVudCxpbnNlcnRDb250ZW50QXQ6KCk9Pmluc2VydENvbnRlbnRBdCxqb2luQmFja3dhcmQ6KCk9PmpvaW5CYWNrd2FyZCxqb2luRG93bjooKT0+am9pbkRvd24sam9pbkZvcndhcmQ6KCk9PmpvaW5Gb3J3YXJkLGpvaW5JdGVtQmFja3dhcmQ6KCk9PmpvaW5JdGVtQmFja3dhcmQsam9pbkl0ZW1Gb3J3YXJkOigpPT5qb2luSXRlbUZvcndhcmQsam9pblRleHRibG9ja0JhY2t3YXJkOigpPT5qb2luVGV4dGJsb2NrQmFja3dhcmQsam9pblRleHRibG9ja0ZvcndhcmQ6KCk9PmpvaW5UZXh0YmxvY2tGb3J3YXJkLGpvaW5VcDooKT0+am9pblVwLGtleWJvYXJkU2hvcnRjdXQ6KCk9PmtleWJvYXJkU2hvcnRjdXQsbGlmdDooKT0+bGlmdCxsaWZ0RW1wdHlCbG9jazooKT0+bGlmdEVtcHR5QmxvY2ssbGlmdExpc3RJdGVtOigpPT5saWZ0TGlzdEl0ZW0sbmV3bGluZUluQ29kZTooKT0+bmV3bGluZUluQ29kZSxyZXNldEF0dHJpYnV0ZXM6KCk9PnJlc2V0QXR0cmlidXRlcyxzY3JvbGxJbnRvVmlldzooKT0+c2Nyb2xsSW50b1ZpZXcsc2VsZWN0QWxsOigpPT5zZWxlY3RBbGwsc2VsZWN0Tm9kZUJhY2t3YXJkOigpPT5zZWxlY3ROb2RlQmFja3dhcmQsc2VsZWN0Tm9kZUZvcndhcmQ6KCk9PnNlbGVjdE5vZGVGb3J3YXJkLHNlbGVjdFBhcmVudE5vZGU6KCk9PnNlbGVjdFBhcmVudE5vZGUsc2VsZWN0VGV4dGJsb2NrRW5kOigpPT5zZWxlY3RUZXh0YmxvY2tFbmQsc2VsZWN0VGV4dGJsb2NrU3RhcnQ6KCk9PnNlbGVjdFRleHRibG9ja1N0YXJ0LHNldENvbnRlbnQ6KCk9PnNldENvbnRlbnQsc2V0TWFyazooKT0+c2V0TWFyayxzZXRNZXRhOigpPT5zZXRNZXRhLHNldE5vZGU6KCk9PnNldE5vZGUsc2V0Tm9kZVNlbGVjdGlvbjooKT0+c2V0Tm9kZVNlbGVjdGlvbixzZXRUZXh0RGlyZWN0aW9uOigpPT5zZXRUZXh0RGlyZWN0aW9uLHNldFRleHRTZWxlY3Rpb246KCk9PnNldFRleHRTZWxlY3Rpb24sc2lua0xpc3RJdGVtOigpPT5zaW5rTGlzdEl0ZW0sc3BsaXRCbG9jazooKT0+c3BsaXRCbG9jayxzcGxpdExpc3RJdGVtOigpPT5zcGxpdExpc3RJdGVtLHRvZ2dsZUxpc3Q6KCk9PnRvZ2dsZUxpc3QsdG9nZ2xlTWFyazooKT0+dG9nZ2xlTWFyayx0b2dnbGVOb2RlOigpPT50b2dnbGVOb2RlLHRvZ2dsZVdyYXA6KCk9PnRvZ2dsZVdyYXAsdW5kb0lucHV0UnVsZTooKT0+dW5kb0lucHV0UnVsZSx1bnNldEFsbE1hcmtzOigpPT51bnNldEFsbE1hcmtzLHVuc2V0TWFyazooKT0+dW5zZXRNYXJrLHVuc2V0VGV4dERpcmVjdGlvbjooKT0+dW5zZXRUZXh0RGlyZWN0aW9uLHVwZGF0ZUF0dHJpYnV0ZXM6KCk9PnVwZGF0ZUF0dHJpYnV0ZXMsd3JhcEluOigpPT53cmFwSW4sd3JhcEluTGlzdDooKT0+d3JhcEluTGlzdH0pO3ZhciBibHVyPSgpPT4oe2VkaXRvcjplLHZpZXc6dH0pPT4ocmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIG47ZS5pc0Rlc3Ryb3llZHx8KHQuZG9tLmJsdXIoKSxudWxsPT0obj1udWxsPT13aW5kb3c/dm9pZCAwOndpbmRvdy5nZXRTZWxlY3Rpb24oKSl8fG4ucmVtb3ZlQWxsUmFuZ2VzKCkpfSksITApLGNsZWFyQ29udGVudD0oZT0hMCk9Pih7Y29tbWFuZHM6dH0pPT50LnNldENvbnRlbnQoIiIse2VtaXRVcGRhdGU6ZX0pLGNsZWFyTm9kZXM9KCk9Pih7c3RhdGU6ZSx0cjp0LGRpc3BhdGNoOm59KT0+e2NvbnN0e3NlbGVjdGlvbjpyfT10LHtyYW5nZXM6b309cjtyZXR1cm4hbnx8KG8uZm9yRWFjaCgoeyRmcm9tOm4sJHRvOnJ9KT0+e2UuZG9jLm5vZGVzQmV0d2VlbihuLnBvcyxyLnBvcywoZSxuKT0+e2lmKGUudHlwZS5pc1RleHQpcmV0dXJuO2NvbnN0e2RvYzpyLG1hcHBpbmc6b309dCxpPXIucmVzb2x2ZShvLm1hcChuKSkscz1yLnJlc29sdmUoby5tYXAobitlLm5vZGVTaXplKSksbD1pLmJsb2NrUmFuZ2Uocyk7aWYoIWwpcmV0dXJuO2NvbnN0IGE9bGlmdFRhcmdldChsKTtpZihlLnR5cGUuaXNUZXh0YmxvY2spe2NvbnN0e2RlZmF1bHRUeXBlOmV9PWkucGFyZW50LmNvbnRlbnRNYXRjaEF0KGkuaW5kZXgoKSk7dC5zZXROb2RlTWFya3VwKGwuc3RhcnQsZSl9KGF8fDA9PT1hKSYmdC5saWZ0KGwsYSl9KX0pLCEwKX0sY29tbWFuZD1lPT50PT5lKHQpLGNyZWF0ZVBhcmFncmFwaE5lYXI9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9PmNyZWF0ZVBhcmFncmFwaE5lYXIkMShlLHQpLGN1dD0oZSx0KT0+KHtlZGl0b3I6bix0cjpyfSk9Pntjb25zdHtzdGF0ZTpvfT1uLGk9by5kb2Muc2xpY2UoZS5mcm9tLGUudG8pO3IuZGVsZXRlUmFuZ2UoZS5mcm9tLGUudG8pO2NvbnN0IHM9ci5tYXBwaW5nLm1hcCh0KTtyZXR1cm4gci5pbnNlcnQocyxpLmNvbnRlbnQpLHIuc2V0U2VsZWN0aW9uKG5ldyBUZXh0U2VsZWN0aW9uKHIuZG9jLnJlc29sdmUoTWF0aC5tYXgocy0xLDApKSkpLCEwfSxkZWxldGVDdXJyZW50Tm9kZT0oKT0+KHt0cjplLGRpc3BhdGNoOnR9KT0+e2NvbnN0e3NlbGVjdGlvbjpufT1lLHI9bi4kYW5jaG9yLm5vZGUoKTtpZihyLmNvbnRlbnQuc2l6ZT4wKXJldHVybiExO2NvbnN0IG89ZS5zZWxlY3Rpb24uJGFuY2hvcjtmb3IobGV0IG49by5kZXB0aDtuPjA7bi09MSl7aWYoby5ub2RlKG4pLnR5cGU9PT1yLnR5cGUpe2lmKHQpe2NvbnN0IHQ9by5iZWZvcmUobikscj1vLmFmdGVyKG4pO2UuZGVsZXRlKHQscikuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4hMH19cmV0dXJuITF9O2Z1bmN0aW9uIGdldE5vZGVUeXBlKGUsdCl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZighdC5ub2Rlc1tlXSl0aHJvdyBFcnJvcihgVGhlcmUgaXMgbm8gbm9kZSB0eXBlIG5hbWVkICcke2V9Jy4gTWF5YmUgeW91IGZvcmdvdCB0byBhZGQgdGhlIGV4dGVuc2lvbj9gKTtyZXR1cm4gdC5ub2Rlc1tlXX1yZXR1cm4gZX12YXIgZGVsZXRlTm9kZT1lPT4oe3RyOnQsc3RhdGU6bixkaXNwYXRjaDpyfSk9Pntjb25zdCBvPWdldE5vZGVUeXBlKGUsbi5zY2hlbWEpLGk9dC5zZWxlY3Rpb24uJGFuY2hvcjtmb3IobGV0IGU9aS5kZXB0aDtlPjA7ZS09MSl7aWYoaS5ub2RlKGUpLnR5cGU9PT1vKXtpZihyKXtjb25zdCBuPWkuYmVmb3JlKGUpLHI9aS5hZnRlcihlKTt0LmRlbGV0ZShuLHIpLnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9fXJldHVybiExfSxkZWxldGVSYW5nZT1lPT4oe3RyOnQsZGlzcGF0Y2g6bn0pPT57Y29uc3R7ZnJvbTpyLHRvOm99PWU7cmV0dXJuIG4mJnQuZGVsZXRlKHIsbyksITB9LGRlbGV0ZVNlbGVjdGlvbj0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+ZGVsZXRlU2VsZWN0aW9uJDEoZSx0KSxlbnRlcj0oKT0+KHtjb21tYW5kczplfSk9PmUua2V5Ym9hcmRTaG9ydGN1dCgiRW50ZXIiKSxleGl0Q29kZT0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQpPT57bGV0eyRoZWFkOm4sJGFuY2hvcjpyfT1lLnNlbGVjdGlvbjtpZighbi5wYXJlbnQudHlwZS5zcGVjLmNvZGV8fCFuLnNhbWVQYXJlbnQocikpcmV0dXJuITE7bGV0IG89bi5ub2RlKC0xKSxpPW4uaW5kZXhBZnRlcigtMSkscz1kZWZhdWx0QmxvY2tBdCQxKG8uY29udGVudE1hdGNoQXQoaSkpO2lmKCFzfHwhby5jYW5SZXBsYWNlV2l0aChpLGkscykpcmV0dXJuITE7aWYodCl7bGV0IHI9bi5hZnRlcigpLG89ZS50ci5yZXBsYWNlV2l0aChyLHIscy5jcmVhdGVBbmRGaWxsKCkpO28uc2V0U2VsZWN0aW9uKFNlbGVjdGlvbi5uZWFyKG8uZG9jLnJlc29sdmUociksMSkpLHQoby5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH0pKGUsdCk7ZnVuY3Rpb24gaXNSZWdFeHAoZSl7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gb2JqZWN0SW5jbHVkZXMoZSx0LG49e3N0cmljdDohMH0pe2NvbnN0IHI9T2JqZWN0LmtleXModCk7cmV0dXJuIXIubGVuZ3RofHxyLmV2ZXJ5KHI9Pm4uc3RyaWN0P3Rbcl09PT1lW3JdOmlzUmVnRXhwKHRbcl0pP3Rbcl0udGVzdChlW3JdKTp0W3JdPT09ZVtyXSl9ZnVuY3Rpb24gZmluZE1hcmtJblNldChlLHQsbj17fSl7cmV0dXJuIGUuZmluZChlPT5lLnR5cGU9PT10JiZvYmplY3RJbmNsdWRlcyhPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMobikubWFwKHQ9Plt0LGUuYXR0cnNbdF1dKSksbikpfWZ1bmN0aW9uIGlzTWFya0luU2V0KGUsdCxuPXt9KXtyZXR1cm4hIWZpbmRNYXJrSW5TZXQoZSx0LG4pfWZ1bmN0aW9uIGdldE1hcmtSYW5nZShlLHQsbil7aWYoIWV8fCF0KXJldHVybjtsZXQgcj1lLnBhcmVudC5jaGlsZEFmdGVyKGUucGFyZW50T2Zmc2V0KTtpZihyLm5vZGUmJnIubm9kZS5tYXJrcy5zb21lKGU9PmUudHlwZT09PXQpfHwocj1lLnBhcmVudC5jaGlsZEJlZm9yZShlLnBhcmVudE9mZnNldCkpLCFyLm5vZGV8fCFyLm5vZGUubWFya3Muc29tZShlPT5lLnR5cGU9PT10KSlyZXR1cm47aWYoIW4pe2NvbnN0IGU9ci5ub2RlLm1hcmtzLmZpbmQoZT0+ZS50eXBlPT09dCk7ZSYmKG49ZS5hdHRycyl9aWYoIWZpbmRNYXJrSW5TZXQoWy4uLnIubm9kZS5tYXJrc10sdCxuKSlyZXR1cm47bGV0IG89ci5pbmRleCxpPWUuc3RhcnQoKStyLm9mZnNldCxzPW8rMSxsPWkrci5ub2RlLm5vZGVTaXplO2Zvcig7bz4wJiZpc01hcmtJblNldChbLi4uZS5wYXJlbnQuY2hpbGQoby0xKS5tYXJrc10sdCxuKTspby09MSxpLT1lLnBhcmVudC5jaGlsZChvKS5ub2RlU2l6ZTtmb3IoO3M8ZS5wYXJlbnQuY2hpbGRDb3VudCYmaXNNYXJrSW5TZXQoWy4uLmUucGFyZW50LmNoaWxkKHMpLm1hcmtzXSx0LG4pOylsKz1lLnBhcmVudC5jaGlsZChzKS5ub2RlU2l6ZSxzKz0xO3JldHVybntmcm9tOmksdG86bH19ZnVuY3Rpb24gZ2V0TWFya1R5cGUoZSx0KXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCF0Lm1hcmtzW2VdKXRocm93IEVycm9yKGBUaGVyZSBpcyBubyBtYXJrIHR5cGUgbmFtZWQgJyR7ZX0nLiBNYXliZSB5b3UgZm9yZ290IHRvIGFkZCB0aGUgZXh0ZW5zaW9uP2ApO3JldHVybiB0Lm1hcmtzW2VdfXJldHVybiBlfXZhciBleHRlbmRNYXJrUmFuZ2U9KGUsdCk9Pih7dHI6bixzdGF0ZTpyLGRpc3BhdGNoOm99KT0+e2NvbnN0IGk9Z2V0TWFya1R5cGUoZSxyLnNjaGVtYSkse2RvYzpzLHNlbGVjdGlvbjpsfT1uLHskZnJvbTphLGZyb206Yyx0bzpkfT1sO2lmKG8pe2NvbnN0IGU9Z2V0TWFya1JhbmdlKGEsaSx0KTtpZihlJiZlLmZyb208PWMmJmUudG8+PWQpe2NvbnN0IHQ9VGV4dFNlbGVjdGlvbi5jcmVhdGUocyxlLmZyb20sZS50byk7bi5zZXRTZWxlY3Rpb24odCl9fXJldHVybiEwfSxmaXJzdD1lPT50PT57Y29uc3Qgbj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQpOmU7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKz0xKWlmKG5bZV0odCkpcmV0dXJuITA7cmV0dXJuITF9O2Z1bmN0aW9uIGlzVGV4dFNlbGVjdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb259ZnVuY3Rpb24gbWluTWF4KGU9MCx0PTAsbj0wKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxuKX1mdW5jdGlvbiByZXNvbHZlRm9jdXNQb3NpdGlvbihlLHQ9bnVsbCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgbj1TZWxlY3Rpb24uYXRTdGFydChlKSxyPVNlbGVjdGlvbi5hdEVuZChlKTtpZigic3RhcnQiPT09dHx8ITA9PT10KXJldHVybiBuO2lmKCJlbmQiPT09dClyZXR1cm4gcjtjb25zdCBvPW4uZnJvbSxpPXIudG87cmV0dXJuImFsbCI9PT10P1RleHRTZWxlY3Rpb24uY3JlYXRlKGUsbWluTWF4KDAsbyxpKSxtaW5NYXgoZS5jb250ZW50LnNpemUsbyxpKSk6VGV4dFNlbGVjdGlvbi5jcmVhdGUoZSxtaW5NYXgodCxvLGkpLG1pbk1heCh0LG8saSkpfWZ1bmN0aW9uIGlzQW5kcm9pZCgpe3JldHVybiJBbmRyb2lkIj09PW5hdmlnYXRvci5wbGF0Zm9ybXx8L2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfWZ1bmN0aW9uIGlzaU9TKCl7cmV0dXJuWyJpUGFkIFNpbXVsYXRvciIsImlQaG9uZSBTaW11bGF0b3IiLCJpUG9kIFNpbXVsYXRvciIsImlQYWQiLCJpUGhvbmUiLCJpUG9kIl0uaW5jbHVkZXMobmF2aWdhdG9yLnBsYXRmb3JtKXx8bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiTWFjIikmJiJvbnRvdWNoZW5kImluIGRvY3VtZW50fXZhciBmb2N1cz0oZT1udWxsLHQ9e30pPT4oe2VkaXRvcjpuLHZpZXc6cix0cjpvLGRpc3BhdGNoOml9KT0+e3Q9e3Njcm9sbEludG9WaWV3OiEwLC4uLnR9O2NvbnN0IGRlbGF5ZWRGb2N1cz0oKT0+eyhpc2lPUygpfHxpc0FuZHJvaWQoKSkmJnIuZG9tLmZvY3VzKCksInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfHxpc2lPUygpfHxpc0FuZHJvaWQoKXx8ci5kb20uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuLmlzRGVzdHJveWVkfHwoci5mb2N1cygpLChudWxsPT10P3ZvaWQgMDp0LnNjcm9sbEludG9WaWV3KSYmbi5jb21tYW5kcy5zY3JvbGxJbnRvVmlldygpKX0pfTt0cnl7aWYoci5oYXNGb2N1cygpJiZudWxsPT09ZXx8ITE9PT1lKXJldHVybiEwfWNhdGNoe3JldHVybiExfWlmKGkmJm51bGw9PT1lJiYhaXNUZXh0U2VsZWN0aW9uKG4uc3RhdGUuc2VsZWN0aW9uKSlyZXR1cm4gZGVsYXllZEZvY3VzKCksITA7Y29uc3Qgcz1yZXNvbHZlRm9jdXNQb3NpdGlvbihvLmRvYyxlKXx8bi5zdGF0ZS5zZWxlY3Rpb24sbD1uLnN0YXRlLnNlbGVjdGlvbi5lcShzKTtyZXR1cm4gaSYmKGx8fG8uc2V0U2VsZWN0aW9uKHMpLGwmJm8uc3RvcmVkTWFya3MmJm8uc2V0U3RvcmVkTWFya3Moby5zdG9yZWRNYXJrcyksZGVsYXllZEZvY3VzKCkpLCEwfSxmb3JFYWNoPShlLHQpPT5uPT5lLmV2ZXJ5KChlLHIpPT50KGUsey4uLm4saW5kZXg6cn0pKSxpbnNlcnRDb250ZW50PShlLHQpPT4oe3RyOm4sY29tbWFuZHM6cn0pPT5yLmluc2VydENvbnRlbnRBdCh7ZnJvbTpuLnNlbGVjdGlvbi5mcm9tLHRvOm4uc2VsZWN0aW9uLnRvfSxlLHQpO2Z1bmN0aW9uIGVsZW1lbnRGcm9tU3RyaW5nKGUpe3Rocm93IG5ldyBFcnJvcigiW3RpcHRhcCBlcnJvcl06IHRoZXJlIGlzIG5vIHdpbmRvdyBvYmplY3QgYXZhaWxhYmxlLCBzbyB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIil9ZnVuY3Rpb24gY3JlYXRlTm9kZUZyb21Db250ZW50KGUsdCxuKXtpZihlIGluc3RhbmNlb2YgTm9kZXx8ZSBpbnN0YW5jZW9mIEZyYWdtZW50KXJldHVybiBlO249e3NsaWNlOiEwLHBhcnNlT3B0aW9uczp7fSwuLi5ufTtjb25zdCByPSJzdHJpbmciPT10eXBlb2YgZTtpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lKXRyeXtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXJldHVybiBGcmFnbWVudC5mcm9tQXJyYXkoZS5tYXAoZT0+dC5ub2RlRnJvbUpTT04oZSkpKTtjb25zdCByPXQubm9kZUZyb21KU09OKGUpO3JldHVybiBuLmVycm9yT25JbnZhbGlkQ29udGVudCYmci5jaGVjaygpLHJ9Y2F0Y2gocil7aWYobi5lcnJvck9uSW52YWxpZENvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJbdGlwdGFwIGVycm9yXTogSW52YWxpZCBKU09OIGNvbnRlbnQiLHtjYXVzZTpyfSk7cmV0dXJuIGNvbnNvbGUud2FybigiW3RpcHRhcCB3YXJuXTogSW52YWxpZCBjb250ZW50LiIsIlBhc3NlZCB2YWx1ZToiLGUsIkVycm9yOiIsciksY3JlYXRlTm9kZUZyb21Db250ZW50KCIiLHQsbil9aWYocil7aWYobi5lcnJvck9uSW52YWxpZENvbnRlbnQpe2xldCBlPSExLHI9IiI7Y29uc3Qgbz1uZXcgU2NoZW1hKHt0b3BOb2RlOnQuc3BlYy50b3BOb2RlLG1hcmtzOnQuc3BlYy5tYXJrcyxub2Rlczp0LnNwZWMubm9kZXMuYXBwZW5kKHtfX3RpcHRhcF9fcHJpdmF0ZV9fdW5rbm93bl9fY2F0Y2hfX2FsbF9fbm9kZTp7Y29udGVudDoiaW5saW5lKiIsZ3JvdXA6ImJsb2NrIixwYXJzZURPTTpbe3RhZzoiKiIsZ2V0QXR0cnM6dD0+KGU9ITAscj0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0Lm91dGVySFRNTCxudWxsKX1dfX0pfSk7aWYobi5zbGljZT9ET01QYXJzZXIuZnJvbVNjaGVtYShvKS5wYXJzZVNsaWNlKGVsZW1lbnRGcm9tU3RyaW5nKCksbi5wYXJzZU9wdGlvbnMpOkRPTVBhcnNlci5mcm9tU2NoZW1hKG8pLnBhcnNlKGVsZW1lbnRGcm9tU3RyaW5nKCksbi5wYXJzZU9wdGlvbnMpLG4uZXJyb3JPbkludmFsaWRDb250ZW50JiZlKXRocm93IG5ldyBFcnJvcigiW3RpcHRhcCBlcnJvcl06IEludmFsaWQgSFRNTCBjb250ZW50Iix7Y2F1c2U6bmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgZm91bmQ6ICR7cn1gKX0pfWNvbnN0IGU9RE9NUGFyc2VyLmZyb21TY2hlbWEodCk7cmV0dXJuIG4uc2xpY2U/ZS5wYXJzZVNsaWNlKGVsZW1lbnRGcm9tU3RyaW5nKCksbi5wYXJzZU9wdGlvbnMpLmNvbnRlbnQ6ZS5wYXJzZShlbGVtZW50RnJvbVN0cmluZygpLG4ucGFyc2VPcHRpb25zKX1yZXR1cm4gY3JlYXRlTm9kZUZyb21Db250ZW50KCIiLHQsbil9dmFyIGluc2VydENvbnRlbnRBdD0oZSx0LG4pPT4oe3RyOnIsZGlzcGF0Y2g6byxlZGl0b3I6aX0pPT57dmFyIHM7aWYobyl7bGV0IG87Y29uc3QgZW1pdENvbnRlbnRFcnJvcj1lPT57aS5lbWl0KCJjb250ZW50RXJyb3IiLHtlZGl0b3I6aSxlcnJvcjplLGRpc2FibGVDb2xsYWJvcmF0aW9uOigpPT57ImNvbGxhYm9yYXRpb24iaW4gaS5zdG9yYWdlJiYib2JqZWN0Ij09dHlwZW9mIGkuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiZpLnN0b3JhZ2UuY29sbGFib3JhdGlvbiYmKGkuc3RvcmFnZS5jb2xsYWJvcmF0aW9uLmlzRGlzYWJsZWQ9ITApfX0pfSxsPXtwcmVzZXJ2ZVdoaXRlc3BhY2U6ImZ1bGwiLC4uLihuPXtwYXJzZU9wdGlvbnM6aS5vcHRpb25zLnBhcnNlT3B0aW9ucyx1cGRhdGVTZWxlY3Rpb246ITAsYXBwbHlJbnB1dFJ1bGVzOiExLGFwcGx5UGFzdGVSdWxlczohMSwuLi5ufSkucGFyc2VPcHRpb25zfTtpZighbi5lcnJvck9uSW52YWxpZENvbnRlbnQmJiFpLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrJiZpLm9wdGlvbnMuZW1pdENvbnRlbnRFcnJvcil0cnl7Y3JlYXRlTm9kZUZyb21Db250ZW50KHQsaS5zY2hlbWEse3BhcnNlT3B0aW9uczpsLGVycm9yT25JbnZhbGlkQ29udGVudDohMH0pfWNhdGNoKGUpe2VtaXRDb250ZW50RXJyb3IoZSl9dHJ5e289Y3JlYXRlTm9kZUZyb21Db250ZW50KHQsaS5zY2hlbWEse3BhcnNlT3B0aW9uczpsLGVycm9yT25JbnZhbGlkQ29udGVudDpudWxsIT0ocz1uLmVycm9yT25JbnZhbGlkQ29udGVudCk/czppLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrfSl9Y2F0Y2goZSl7cmV0dXJuIGVtaXRDb250ZW50RXJyb3IoZSksITF9bGV0e2Zyb206YSx0bzpjfT0ibnVtYmVyIj09dHlwZW9mIGU/e2Zyb206ZSx0bzplfTp7ZnJvbTplLmZyb20sdG86ZS50b30sZD0hMCxwPSEwO2lmKCgidHlwZSJpbiBvP1tvXTpvKS5mb3JFYWNoKGU9PntlLmNoZWNrKCksZD0hIWQmJihlLmlzVGV4dCYmMD09PWUubWFya3MubGVuZ3RoKSxwPSEhcCYmZS5pc0Jsb2NrfSksYT09PWMmJnApe2NvbnN0e3BhcmVudDplfT1yLmRvYy5yZXNvbHZlKGEpO2UuaXNUZXh0YmxvY2smJiFlLnR5cGUuc3BlYy5jb2RlJiYhZS5jaGlsZENvdW50JiYoYS09MSxjKz0xKX1sZXQgZjtpZihkKXtpZihBcnJheS5pc0FycmF5KHQpKWY9dC5tYXAoZT0+ZS50ZXh0fHwiIikuam9pbigiIik7ZWxzZSBpZih0IGluc3RhbmNlb2YgRnJhZ21lbnQpe2xldCBlPSIiO3QuZm9yRWFjaCh0PT57dC50ZXh0JiYoZSs9dC50ZXh0KX0pLGY9ZX1lbHNlIGY9Im9iamVjdCI9PXR5cGVvZiB0JiZ0JiZ0LnRleHQ/dC50ZXh0OnQ7ci5pbnNlcnRUZXh0KGYsYSxjKX1lbHNle2Y9bztjb25zdCBlPXIuZG9jLnJlc29sdmUoYSksdD1lLm5vZGUoKSxuPTA9PT1lLnBhcmVudE9mZnNldCxpPXQuaXNUZXh0fHx0LmlzVGV4dGJsb2NrLHM9dC5jb250ZW50LnNpemU+MDtuJiZpJiZzJiZwJiYoYT1NYXRoLm1heCgwLGEtMSkpLHIucmVwbGFjZVdpdGgoYSxjLGYpfW4udXBkYXRlU2VsZWN0aW9uJiZmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1lLnN0ZXBzLmxlbmd0aC0xO2lmKHI8dClyZXR1cm47Y29uc3Qgbz1lLnN0ZXBzW3JdO2lmKCEobyBpbnN0YW5jZW9mIFJlcGxhY2VTdGVwfHxvIGluc3RhbmNlb2YgUmVwbGFjZUFyb3VuZFN0ZXApKXJldHVybjtjb25zdCBpPWUubWFwcGluZy5tYXBzW3JdO2xldCBzPTA7aS5mb3JFYWNoKChlLHQsbixyKT0+ezA9PT1zJiYocz1yKX0pLGUuc2V0U2VsZWN0aW9uKFNlbGVjdGlvbi5uZWFyKGUuZG9jLnJlc29sdmUocyksbikpfShyLHIuc3RlcHMubGVuZ3RoLTEsLTEpLG4uYXBwbHlJbnB1dFJ1bGVzJiZyLnNldE1ldGEoImFwcGx5SW5wdXRSdWxlcyIse2Zyb206YSx0ZXh0OmZ9KSxuLmFwcGx5UGFzdGVSdWxlcyYmci5zZXRNZXRhKCJhcHBseVBhc3RlUnVsZXMiLHtmcm9tOmEsdGV4dDpmfSl9cmV0dXJuITB9LGpvaW5VcD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQpPT57bGV0IG4scj1lLnNlbGVjdGlvbixvPXIgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uO2lmKG8pe2lmKHIubm9kZS5pc1RleHRibG9ja3x8IWNhbkpvaW4oZS5kb2Msci5mcm9tKSlyZXR1cm4hMTtuPXIuZnJvbX1lbHNlIGlmKG49am9pblBvaW50KGUuZG9jLHIuZnJvbSwtMSksbnVsbD09bilyZXR1cm4hMTtpZih0KXtsZXQgcj1lLnRyLmpvaW4obik7byYmci5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUoci5kb2Msbi1lLmRvYy5yZXNvbHZlKG4pLm5vZGVCZWZvcmUubm9kZVNpemUpKSx0KHIuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9KShlLHQpLGpvaW5Eb3duPSgpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT4oKGUsdCk9PntsZXQgbixyPWUuc2VsZWN0aW9uO2lmKHIgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKXtpZihyLm5vZGUuaXNUZXh0YmxvY2t8fCFjYW5Kb2luKGUuZG9jLHIudG8pKXJldHVybiExO249ci50b31lbHNlIGlmKG49am9pblBvaW50KGUuZG9jLHIudG8sMSksbnVsbD09bilyZXR1cm4hMTtyZXR1cm4gdCYmdChlLnRyLmpvaW4obikuc2Nyb2xsSW50b1ZpZXcoKSksITB9KShlLHQpLGpvaW5CYWNrd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+am9pbkJhY2t3YXJkJDEoZSx0KSxqb2luRm9yd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+am9pbkZvcndhcmQkMShlLHQpLGpvaW5JdGVtQmFja3dhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0LHRyOm59KT0+e3RyeXtjb25zdCByPWpvaW5Qb2ludChlLmRvYyxlLnNlbGVjdGlvbi4kZnJvbS5wb3MsLTEpO3JldHVybiBudWxsIT1yJiYobi5qb2luKHIsMiksdCYmdChuKSwhMCl9Y2F0Y2h7cmV0dXJuITF9fSxqb2luSXRlbUZvcndhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0LHRyOm59KT0+e3RyeXtjb25zdCByPWpvaW5Qb2ludChlLmRvYyxlLnNlbGVjdGlvbi4kZnJvbS5wb3MsMSk7cmV0dXJuIG51bGwhPXImJihuLmpvaW4ociwyKSx0JiZ0KG4pLCEwKX1jYXRjaHtyZXR1cm4hMX19LGpvaW5UZXh0YmxvY2tCYWNrd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQsbik9PntsZXQgcj1hdEJsb2NrU3RhcnQoZSxuKTtpZighcilyZXR1cm4hMTtsZXQgbz1maW5kQ3V0QmVmb3JlKHIpO3JldHVybiEhbyYmam9pblRleHRibG9ja3NBcm91bmQoZSxvLHQpfSkoZSx0KSxqb2luVGV4dGJsb2NrRm9yd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQsbik9PntsZXQgcj1hdEJsb2NrRW5kKGUsbik7aWYoIXIpcmV0dXJuITE7bGV0IG89ZmluZEN1dEFmdGVyKHIpO3JldHVybiEhbyYmam9pblRleHRibG9ja3NBcm91bmQoZSxvLHQpfSkoZSx0KTtmdW5jdGlvbiBpc01hY09TKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKX12YXIga2V5Ym9hcmRTaG9ydGN1dD1lPT4oe2VkaXRvcjp0LHZpZXc6bix0cjpyLGRpc3BhdGNoOm99KT0+e2NvbnN0IGk9ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLnNwbGl0KC8tKD8hJCkvKTtsZXQgbixyLG8saSxzPXRbdC5sZW5ndGgtMV07IlNwYWNlIj09PXMmJihzPSIgIik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aC0xO2UrPTEpe2NvbnN0IHM9dFtlXTtpZigvXihjbWR8bWV0YXxtKSQvaS50ZXN0KHMpKWk9ITA7ZWxzZSBpZigvXmEobHQpPyQvaS50ZXN0KHMpKW49ITA7ZWxzZSBpZigvXihjfGN0cmx8Y29udHJvbCkkL2kudGVzdChzKSlyPSEwO2Vsc2UgaWYoL15zKGhpZnQpPyQvaS50ZXN0KHMpKW89ITA7ZWxzZXtpZighL15tb2QkL2kudGVzdChzKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAke3N9YCk7aXNpT1MoKXx8aXNNYWNPUygpP2k9ITA6cj0hMH19cmV0dXJuIG4mJihzPWBBbHQtJHtzfWApLHImJihzPWBDdHJsLSR7c31gKSxpJiYocz1gTWV0YS0ke3N9YCksbyYmKHM9YFNoaWZ0LSR7c31gKSxzfShlKS5zcGxpdCgvLSg/ISQpLykscz1pLmZpbmQoZT0+IVsiQWx0IiwiQ3RybCIsIk1ldGEiLCJTaGlmdCJdLmluY2x1ZGVzKGUpKSxsPW5ldyBLZXlib2FyZEV2ZW50KCJrZXlkb3duIix7a2V5OiJTcGFjZSI9PT1zPyIgIjpzLGFsdEtleTppLmluY2x1ZGVzKCJBbHQiKSxjdHJsS2V5OmkuaW5jbHVkZXMoIkN0cmwiKSxtZXRhS2V5OmkuaW5jbHVkZXMoIk1ldGEiKSxzaGlmdEtleTppLmluY2x1ZGVzKCJTaGlmdCIpLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pLGE9dC5jYXB0dXJlVHJhbnNhY3Rpb24oKCk9PntuLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixlPT5lKG4sbCkpfSk7cmV0dXJuIG51bGw9PWF8fGEuc3RlcHMuZm9yRWFjaChlPT57Y29uc3QgdD1lLm1hcChyLm1hcHBpbmcpO3QmJm8mJnIubWF5YmVTdGVwKHQpfSksITB9O2Z1bmN0aW9uIGlzTm9kZUFjdGl2ZShlLHQsbj17fSl7Y29uc3R7ZnJvbTpyLHRvOm8sZW1wdHk6aX09ZS5zZWxlY3Rpb24scz10P2dldE5vZGVUeXBlKHQsZS5zY2hlbWEpOm51bGwsbD1bXTtlLmRvYy5ub2Rlc0JldHdlZW4ocixvLChlLHQpPT57aWYoZS5pc1RleHQpcmV0dXJuO2NvbnN0IG49TWF0aC5tYXgocix0KSxpPU1hdGgubWluKG8sdCtlLm5vZGVTaXplKTtsLnB1c2goe25vZGU6ZSxmcm9tOm4sdG86aX0pfSk7Y29uc3QgYT1vLXIsYz1sLmZpbHRlcihlPT4hc3x8cy5uYW1lPT09ZS5ub2RlLnR5cGUubmFtZSkuZmlsdGVyKGU9Pm9iamVjdEluY2x1ZGVzKGUubm9kZS5hdHRycyxuLHtzdHJpY3Q6ITF9KSk7aWYoaSlyZXR1cm4hIWMubGVuZ3RoO3JldHVybiBjLnJlZHVjZSgoZSx0KT0+ZSt0LnRvLXQuZnJvbSwwKT49YX12YXIgbGlmdD0oZSx0PXt9KT0+KHtzdGF0ZTpuLGRpc3BhdGNoOnJ9KT0+ISFpc05vZGVBY3RpdmUobixnZXROb2RlVHlwZShlLG4uc2NoZW1hKSx0KSYmKChlLHQpPT57bGV0eyRmcm9tOm4sJHRvOnJ9PWUuc2VsZWN0aW9uLG89bi5ibG9ja1JhbmdlKHIpLGk9byYmbGlmdFRhcmdldChvKTtyZXR1cm4gbnVsbCE9aSYmKHQmJnQoZS50ci5saWZ0KG8saSkuc2Nyb2xsSW50b1ZpZXcoKSksITApfSkobixyKSxsaWZ0RW1wdHlCbG9jaz0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+bGlmdEVtcHR5QmxvY2skMShlLHQpLGxpZnRMaXN0SXRlbT1lPT4oe3N0YXRlOnQsZGlzcGF0Y2g6bn0pPT5saWZ0TGlzdEl0ZW0kMShnZXROb2RlVHlwZShlLHQuc2NoZW1hKSkodCxuKSxuZXdsaW5lSW5Db2RlPSgpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT5uZXdsaW5lSW5Db2RlJDEoZSx0KTtmdW5jdGlvbiBnZXRTY2hlbWFUeXBlTmFtZUJ5TmFtZShlLHQpe3JldHVybiB0Lm5vZGVzW2VdPyJub2RlIjp0Lm1hcmtzW2VdPyJtYXJrIjpudWxsfWZ1bmN0aW9uIGRlbGV0ZVByb3BzKGUsdCl7Y29uc3Qgbj0ic3RyaW5nIj09dHlwZW9mIHQ/W3RdOnQ7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZSgodCxyKT0+KG4uaW5jbHVkZXMocil8fCh0W3JdPWVbcl0pLHQpLHt9KX12YXIgcmVzZXRBdHRyaWJ1dGVzPShlLHQpPT4oe3RyOm4sc3RhdGU6cixkaXNwYXRjaDpvfSk9PntsZXQgaT1udWxsLHM9bnVsbDtjb25zdCBsPWdldFNjaGVtYVR5cGVOYW1lQnlOYW1lKCJzdHJpbmciPT10eXBlb2YgZT9lOmUubmFtZSxyLnNjaGVtYSk7aWYoIWwpcmV0dXJuITE7Im5vZGUiPT09bCYmKGk9Z2V0Tm9kZVR5cGUoZSxyLnNjaGVtYSkpLCJtYXJrIj09PWwmJihzPWdldE1hcmtUeXBlKGUsci5zY2hlbWEpKTtsZXQgYT0hMTtyZXR1cm4gbi5zZWxlY3Rpb24ucmFuZ2VzLmZvckVhY2goZT0+e3IuZG9jLm5vZGVzQmV0d2VlbihlLiRmcm9tLnBvcyxlLiR0by5wb3MsKGUscik9PntpJiZpPT09ZS50eXBlJiYoYT0hMCxvJiZuLnNldE5vZGVNYXJrdXAocix2b2lkIDAsZGVsZXRlUHJvcHMoZS5hdHRycyx0KSkpLHMmJmUubWFya3MubGVuZ3RoJiZlLm1hcmtzLmZvckVhY2goaT0+e3M9PT1pLnR5cGUmJihhPSEwLG8mJm4uYWRkTWFyayhyLHIrZS5ub2RlU2l6ZSxzLmNyZWF0ZShkZWxldGVQcm9wcyhpLmF0dHJzLHQpKSkpfSl9KX0pLGF9LHNjcm9sbEludG9WaWV3PSgpPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT4odCYmZS5zY3JvbGxJbnRvVmlldygpLCEwKSxzZWxlY3RBbGw9KCk9Pih7dHI6ZSxkaXNwYXRjaDp0fSk9PntpZih0KXtjb25zdCB0PW5ldyBBbGxTZWxlY3Rpb24oZS5kb2MpO2Uuc2V0U2VsZWN0aW9uKHQpfXJldHVybiEwfSxzZWxlY3ROb2RlQmFja3dhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9PnNlbGVjdE5vZGVCYWNrd2FyZCQxKGUsdCksc2VsZWN0Tm9kZUZvcndhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9PnNlbGVjdE5vZGVGb3J3YXJkJDEoZSx0KSxzZWxlY3RQYXJlbnROb2RlPSgpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT4oKGUsdCk9PntsZXQgbix7JGZyb206cix0bzpvfT1lLnNlbGVjdGlvbixpPXIuc2hhcmVkRGVwdGgobyk7cmV0dXJuIDAhPWkmJihuPXIuYmVmb3JlKGkpLHQmJnQoZS50ci5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUoZS5kb2MsbikpKSwhMCl9KShlLHQpLHNlbGVjdFRleHRibG9ja0VuZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+T2UoZSx0KSxzZWxlY3RUZXh0YmxvY2tTdGFydD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+QWUoZSx0KTtmdW5jdGlvbiBjcmVhdGVEb2N1bWVudChlLHQsbj17fSxyPXt9KXtyZXR1cm4gY3JlYXRlTm9kZUZyb21Db250ZW50KGUsdCx7c2xpY2U6ITEscGFyc2VPcHRpb25zOm4sZXJyb3JPbkludmFsaWRDb250ZW50OnIuZXJyb3JPbkludmFsaWRDb250ZW50fSl9dmFyIHNldENvbnRlbnQ9KGUse2Vycm9yT25JbnZhbGlkQ29udGVudDp0LGVtaXRVcGRhdGU6bj0hMCxwYXJzZU9wdGlvbnM6cj17fX09e30pPT4oe2VkaXRvcjpvLHRyOmksZGlzcGF0Y2g6cyxjb21tYW5kczpsfSk9Pntjb25zdHtkb2M6YX09aTtpZigiZnVsbCIhPT1yLnByZXNlcnZlV2hpdGVzcGFjZSl7Y29uc3QgbD1jcmVhdGVEb2N1bWVudChlLG8uc2NoZW1hLHIse2Vycm9yT25JbnZhbGlkQ29udGVudDpudWxsIT10P3Q6by5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pO3JldHVybiBzJiZpLnJlcGxhY2VXaXRoKDAsYS5jb250ZW50LnNpemUsbCkuc2V0TWV0YSgicHJldmVudFVwZGF0ZSIsIW4pLCEwfXJldHVybiBzJiZpLnNldE1ldGEoInByZXZlbnRVcGRhdGUiLCFuKSxsLmluc2VydENvbnRlbnRBdCh7ZnJvbTowLHRvOmEuY29udGVudC5zaXplfSxlLHtwYXJzZU9wdGlvbnM6cixlcnJvck9uSW52YWxpZENvbnRlbnQ6bnVsbCE9dD90Om8ub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2t9KX07ZnVuY3Rpb24gZ2V0TWFya0F0dHJpYnV0ZXMoZSx0KXtjb25zdCBuPWdldE1hcmtUeXBlKHQsZS5zY2hlbWEpLHtmcm9tOnIsdG86byxlbXB0eTppfT1lLnNlbGVjdGlvbixzPVtdO2k/KGUuc3RvcmVkTWFya3MmJnMucHVzaCguLi5lLnN0b3JlZE1hcmtzKSxzLnB1c2goLi4uZS5zZWxlY3Rpb24uJGhlYWQubWFya3MoKSkpOmUuZG9jLm5vZGVzQmV0d2VlbihyLG8sZT0+e3MucHVzaCguLi5lLm1hcmtzKX0pO2NvbnN0IGw9cy5maW5kKGU9PmUudHlwZS5uYW1lPT09bi5uYW1lKTtyZXR1cm4gbD97Li4ubC5hdHRyc306e319ZnVuY3Rpb24gY29tYmluZVRyYW5zYWN0aW9uU3RlcHMoZSx0KXtjb25zdCBuPW5ldyBUcmFuc2Zvcm0oZSk7cmV0dXJuIHQuZm9yRWFjaChlPT57ZS5zdGVwcy5mb3JFYWNoKGU9PntuLnN0ZXAoZSl9KX0pLG59ZnVuY3Rpb24gZmluZFBhcmVudE5vZGUoZSl7cmV0dXJuIHQ9PmZ1bmN0aW9uKGUsdCl7Zm9yKGxldCBuPWUuZGVwdGg7bj4wO24tPTEpe2NvbnN0IHI9ZS5ub2RlKG4pO2lmKHQocikpcmV0dXJue3BvczpuPjA/ZS5iZWZvcmUobik6MCxzdGFydDplLnN0YXJ0KG4pLGRlcHRoOm4sbm9kZTpyfX19KHQuJGZyb20sZSl9ZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uRmllbGQoZSx0LG4pe2lmKHZvaWQgMD09PWUuY29uZmlnW3RdJiZlLnBhcmVudClyZXR1cm4gZ2V0RXh0ZW5zaW9uRmllbGQoZS5wYXJlbnQsdCxuKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25maWdbdF0pe3JldHVybiBlLmNvbmZpZ1t0XS5iaW5kKHsuLi5uLHBhcmVudDplLnBhcmVudD9nZXRFeHRlbnNpb25GaWVsZChlLnBhcmVudCx0LG4pOm51bGx9KX1yZXR1cm4gZS5jb25maWdbdF19ZnVuY3Rpb24gZmxhdHRlbkV4dGVuc2lvbnMoZSl7cmV0dXJuIGUubWFwKGU9Pntjb25zdCB0PWdldEV4dGVuc2lvbkZpZWxkKGUsImFkZEV4dGVuc2lvbnMiLHtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOmUuc3RvcmFnZX0pO3JldHVybiB0P1tlLC4uLmZsYXR0ZW5FeHRlbnNpb25zKHQoKSldOmV9KS5mbGF0KDEwKX1mdW5jdGlvbiBnZXRIVE1MRnJvbUZyYWdtZW50KGUsdCl7Y29uc3Qgbj1ET01TZXJpYWxpemVyLmZyb21TY2hlbWEodCkuc2VyaWFsaXplRnJhZ21lbnQoZSkscj1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gci5hcHBlbmRDaGlsZChuKSxyLmlubmVySFRNTH1mdW5jdGlvbiBpc0Z1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIGNhbGxPclJldHVybihlLHQ9dm9pZCAwLC4uLm4pe3JldHVybiBpc0Z1bmN0aW9uKGUpP3Q/ZS5iaW5kKHQpKC4uLm4pOmUoLi4ubik6ZX1mdW5jdGlvbiBzcGxpdEV4dGVuc2lvbnMoZSl7cmV0dXJue2Jhc2VFeHRlbnNpb25zOmUuZmlsdGVyKGU9PiJleHRlbnNpb24iPT09ZS50eXBlKSxub2RlRXh0ZW5zaW9uczplLmZpbHRlcihlPT4ibm9kZSI9PT1lLnR5cGUpLG1hcmtFeHRlbnNpb25zOmUuZmlsdGVyKGU9PiJtYXJrIj09PWUudHlwZSl9fWZ1bmN0aW9uIGdldEF0dHJpYnV0ZXNGcm9tRXh0ZW5zaW9ucyhlKXtjb25zdCB0PVtdLHtub2RlRXh0ZW5zaW9uczpuLG1hcmtFeHRlbnNpb25zOnJ9PXNwbGl0RXh0ZW5zaW9ucyhlKSxvPVsuLi5uLC4uLnJdLGk9e2RlZmF1bHQ6bnVsbCx2YWxpZGF0ZTp2b2lkIDAscmVuZGVyZWQ6ITAscmVuZGVySFRNTDpudWxsLHBhcnNlSFRNTDpudWxsLGtlZXBPblNwbGl0OiEwLGlzUmVxdWlyZWQ6ITF9LHM9bi5maWx0ZXIoZT0+InRleHQiIT09ZS5uYW1lKS5tYXAoZT0+ZS5uYW1lKSxsPXIubWFwKGU9PmUubmFtZSksYT1bLi4ucywuLi5sXTtyZXR1cm4gZS5mb3JFYWNoKGU9Pntjb25zdCBuPWdldEV4dGVuc2lvbkZpZWxkKGUsImFkZEdsb2JhbEF0dHJpYnV0ZXMiLHtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOmUuc3RvcmFnZSxleHRlbnNpb25zOm99KTtpZighbilyZXR1cm47bigpLmZvckVhY2goZT0+e2xldCBuO249QXJyYXkuaXNBcnJheShlLnR5cGVzKT9lLnR5cGVzOiIqIj09PWUudHlwZXM/YToibm9kZXMiPT09ZS50eXBlcz9zOiJtYXJrcyI9PT1lLnR5cGVzP2w6W10sbi5mb3JFYWNoKG49PntPYmplY3QuZW50cmllcyhlLmF0dHJpYnV0ZXMpLmZvckVhY2goKFtlLHJdKT0+e3QucHVzaCh7dHlwZTpuLG5hbWU6ZSxhdHRyaWJ1dGU6ey4uLmksLi4ucn19KX0pfSl9KX0pLG8uZm9yRWFjaChlPT57Y29uc3Qgbj17bmFtZTplLm5hbWUsb3B0aW9uczplLm9wdGlvbnMsc3RvcmFnZTplLnN0b3JhZ2V9LHI9Z2V0RXh0ZW5zaW9uRmllbGQoZSwiYWRkQXR0cmlidXRlcyIsbik7aWYoIXIpcmV0dXJuO2NvbnN0IG89cigpO09iamVjdC5lbnRyaWVzKG8pLmZvckVhY2goKFtuLHJdKT0+e2NvbnN0IG89ey4uLmksLi4ucn07ImZ1bmN0aW9uIj09dHlwZW9mKG51bGw9PW8/dm9pZCAwOm8uZGVmYXVsdCkmJihvLmRlZmF1bHQ9by5kZWZhdWx0KCkpLChudWxsPT1vP3ZvaWQgMDpvLmlzUmVxdWlyZWQpJiZ2b2lkIDA9PT0obnVsbD09bz92b2lkIDA6by5kZWZhdWx0KSYmZGVsZXRlIG8uZGVmYXVsdCx0LnB1c2goe3R5cGU6ZS5uYW1lLG5hbWU6bixhdHRyaWJ1dGU6b30pfSl9KSx0fWZ1bmN0aW9uIHBhcnNlU3R5bGVFbnRyaWVzKGUpe2NvbnN0IHQ9W10sbj1mdW5jdGlvbihlKXtjb25zdCB0PVtdO2xldCBuPSIiLHI9ITEsbz0hMSxpPTA7Y29uc3Qgcz1lLmxlbmd0aDtmb3IobGV0IGw9MDtsPHM7bCs9MSl7Y29uc3Qgcz1lW2xdO2lmKCInIiE9PXN8fG8paWYoJyInIT09c3x8cil7aWYoIXImJiFvKXtpZigiKCI9PT1zKXtpKz0xLG4rPXM7Y29udGludWV9aWYoIikiPT09cyYmaT4wKXtpLT0xLG4rPXM7Y29udGludWV9aWYoIjsiPT09cyYmMD09PWkpe3QucHVzaChuKSxuPSIiO2NvbnRpbnVlfX1uKz1zfWVsc2Ugbz0hbyxuKz1zO2Vsc2Ugcj0hcixuKz1zfXJldHVybiBuJiZ0LnB1c2gobiksdH0oZXx8IiIpLHI9bi5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxyO2UrPTEpe2NvbnN0IHI9bltlXSxvPXIuaW5kZXhPZigiOiIpO2lmKC0xPT09byljb250aW51ZTtjb25zdCBpPXIuc2xpY2UoMCxvKS50cmltKCkscz1yLnNsaWNlKG8rMSkudHJpbSgpO2kmJnMmJnQucHVzaChbaSxzXSl9cmV0dXJuIHR9ZnVuY3Rpb24gbWVyZ2VBdHRyaWJ1dGVzKC4uLmUpe3JldHVybiBlLmZpbHRlcihlPT4hIWUpLnJlZHVjZSgoZSx0KT0+e2NvbnN0IG49ey4uLmV9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbZSx0XSk9PntpZihuW2VdKWlmKCJjbGFzcyI9PT1lKXtjb25zdCByPXQ/U3RyaW5nKHQpLnNwbGl0KCIgIik6W10sbz1uW2VdP25bZV0uc3BsaXQoIiAiKTpbXSxpPXIuZmlsdGVyKGU9PiFvLmluY2x1ZGVzKGUpKTtuW2VdPVsuLi5vLC4uLmldLmpvaW4oIiAiKX1lbHNlIGlmKCJzdHlsZSI9PT1lKXtjb25zdCByPW5ldyBNYXAoWy4uLnBhcnNlU3R5bGVFbnRyaWVzKG5bZV0pLC4uLnBhcnNlU3R5bGVFbnRyaWVzKHQpXSk7bltlXT1BcnJheS5mcm9tKHIuZW50cmllcygpKS5tYXAoKFtlLHRdKT0+YCR7ZX06ICR7dH1gKS5qb2luKCI7ICIpfWVsc2UgbltlXT10O2Vsc2UgbltlXT10fSksbn0se30pfWZ1bmN0aW9uIGdldFJlbmRlcmVkQXR0cmlidXRlcyhlLHQpe3JldHVybiB0LmZpbHRlcih0PT50LnR5cGU9PT1lLnR5cGUubmFtZSkuZmlsdGVyKGU9PmUuYXR0cmlidXRlLnJlbmRlcmVkKS5tYXAodD0+dC5hdHRyaWJ1dGUucmVuZGVySFRNTD90LmF0dHJpYnV0ZS5yZW5kZXJIVE1MKGUuYXR0cnMpfHx7fTp7W3QubmFtZV06ZS5hdHRyc1t0Lm5hbWVdfSkucmVkdWNlKChlLHQpPT5tZXJnZUF0dHJpYnV0ZXMoZSx0KSx7fSl9ZnVuY3Rpb24gaW5qZWN0RXh0ZW5zaW9uQXR0cmlidXRlc1RvUGFyc2VSdWxlKGUsdCl7cmV0dXJuInN0eWxlImluIGU/ZTp7Li4uZSxnZXRBdHRyczpuPT57Y29uc3Qgcj1lLmdldEF0dHJzP2UuZ2V0QXR0cnMobik6ZS5hdHRycztpZighMT09PXIpcmV0dXJuITE7Y29uc3Qgbz10LnJlZHVjZSgoZSx0KT0+e2NvbnN0IHI9dC5hdHRyaWJ1dGUucGFyc2VIVE1MP3QuYXR0cmlidXRlLnBhcnNlSFRNTChuKTpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/ZTplLm1hdGNoKC9eWystXT8oPzpcZCpcLik/XGQrJC8pP051bWJlcihlKToidHJ1ZSI9PT1lfHwiZmFsc2UiIT09ZSYmZX0obi5nZXRBdHRyaWJ1dGUodC5uYW1lKSk7cmV0dXJuIG51bGw9PXI/ZTp7Li4uZSxbdC5uYW1lXTpyfX0se30pO3JldHVybnsuLi5yLC4uLm99fX19ZnVuY3Rpb24gY2xlYW5VcFNjaGVtYUl0ZW0oZSl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFtlLHRdKT0+KCJhdHRycyIhPT1lfHwhZnVuY3Rpb24oZT17fSl7cmV0dXJuIDA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJmUuY29uc3RydWN0b3I9PT1PYmplY3R9KHQpKSYmbnVsbCE9dCkpfWZ1bmN0aW9uIGJ1aWxkQXR0cmlidXRlU3BlYyhlKXt2YXIgdCxuO2NvbnN0IHI9e307cmV0dXJuIShudWxsPT0odD1udWxsPT1lP3ZvaWQgMDplLmF0dHJpYnV0ZSk/dm9pZCAwOnQuaXNSZXF1aXJlZCkmJiJkZWZhdWx0ImluKChudWxsPT1lP3ZvaWQgMDplLmF0dHJpYnV0ZSl8fHt9KSYmKHIuZGVmYXVsdD1lLmF0dHJpYnV0ZS5kZWZhdWx0KSx2b2lkIDAhPT0obnVsbD09KG49bnVsbD09ZT92b2lkIDA6ZS5hdHRyaWJ1dGUpP3ZvaWQgMDpuLnZhbGlkYXRlKSYmKHIudmFsaWRhdGU9ZS5hdHRyaWJ1dGUudmFsaWRhdGUpLFtlLm5hbWUscl19ZnVuY3Rpb24gc29ydEV4dGVuc2lvbnMoZSl7cmV0dXJuIGUuc29ydCgoZSx0KT0+e2NvbnN0IG49Z2V0RXh0ZW5zaW9uRmllbGQoZSwicHJpb3JpdHkiKXx8MTAwLHI9Z2V0RXh0ZW5zaW9uRmllbGQodCwicHJpb3JpdHkiKXx8MTAwO3JldHVybiBuPnI/LTE6bjxyPzE6MH0pfWZ1bmN0aW9uIHJlc29sdmVFeHRlbnNpb25zKGUpe2NvbnN0IHQ9c29ydEV4dGVuc2lvbnMoZmxhdHRlbkV4dGVuc2lvbnMoZSkpLG49ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmZpbHRlcigodCxuKT0+ZS5pbmRleE9mKHQpIT09bik7cmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0KSl9KHQubWFwKGU9PmUubmFtZSkpO3JldHVybiBuLmxlbmd0aCYmY29uc29sZS53YXJuKGBbdGlwdGFwIHdhcm5dOiBEdXBsaWNhdGUgZXh0ZW5zaW9uIG5hbWVzIGZvdW5kOiBbJHtuLm1hcChlPT5gJyR7ZX0nYCkuam9pbigiLCAiKX1dLiBUaGlzIGNhbiBsZWFkIHRvIGlzc3Vlcy5gKSx0fWZ1bmN0aW9uIGdldFRleHRCZXR3ZWVuKGUsdCxuKXtjb25zdHtmcm9tOnIsdG86b309dCx7YmxvY2tTZXBhcmF0b3I6aT0iXG5cbiIsdGV4dFNlcmlhbGl6ZXJzOnM9e319PW58fHt9O2xldCBsPSIiO3JldHVybiBlLm5vZGVzQmV0d2VlbihyLG8sKGUsbixhLGMpPT57dmFyIGQ7ZS5pc0Jsb2NrJiZuPnImJihsKz1pKTtjb25zdCBwPW51bGw9PXM/dm9pZCAwOnNbZS50eXBlLm5hbWVdO2lmKHApcmV0dXJuIGEmJihsKz1wKHtub2RlOmUscG9zOm4scGFyZW50OmEsaW5kZXg6YyxyYW5nZTp0fSkpLCExO2UuaXNUZXh0JiYobCs9bnVsbD09KGQ9bnVsbD09ZT92b2lkIDA6ZS50ZXh0KT92b2lkIDA6ZC5zbGljZShNYXRoLm1heChyLG4pLW4sby1uKSl9KSxsfWZ1bmN0aW9uIGdldFRleHQoZSx0KXtyZXR1cm4gZ2V0VGV4dEJldHdlZW4oZSx7ZnJvbTowLHRvOmUuY29udGVudC5zaXplfSx0KX1mdW5jdGlvbiBnZXRUZXh0U2VyaWFsaXplcnNGcm9tU2NoZW1hKGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZS5ub2RlcykuZmlsdGVyKChbLGVdKT0+ZS5zcGVjLnRvVGV4dCkubWFwKChbZSx0XSk9PltlLHQuc3BlYy50b1RleHRdKSl9ZnVuY3Rpb24gZ2V0QXR0cmlidXRlcyhlLHQpe2NvbnN0IG49Z2V0U2NoZW1hVHlwZU5hbWVCeU5hbWUoInN0cmluZyI9PXR5cGVvZiB0P3Q6dC5uYW1lLGUuc2NoZW1hKTtyZXR1cm4ibm9kZSI9PT1uP2Z1bmN0aW9uKGUsdCl7Y29uc3Qgbj1nZXROb2RlVHlwZSh0LGUuc2NoZW1hKSx7ZnJvbTpyLHRvOm99PWUuc2VsZWN0aW9uLGk9W107ZS5kb2Mubm9kZXNCZXR3ZWVuKHIsbyxlPT57aS5wdXNoKGUpfSk7Y29uc3Qgcz1pLnJldmVyc2UoKS5maW5kKGU9PmUudHlwZS5uYW1lPT09bi5uYW1lKTtyZXR1cm4gcz97Li4ucy5hdHRyc306e319KGUsdCk6Im1hcmsiPT09bj9nZXRNYXJrQXR0cmlidXRlcyhlLHQpOnt9fWZ1bmN0aW9uIHNpbXBsaWZ5Q2hhbmdlZFJhbmdlcyhlKXtjb25zdCB0PWZ1bmN0aW9uKGUsdD1KU09OLnN0cmluZ2lmeSl7Y29uc3Qgbj17fTtyZXR1cm4gZS5maWx0ZXIoZT0+e2NvbnN0IHI9dChlKTtyZXR1cm4hT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihuW3JdPSEwKX0pfShlKTtyZXR1cm4gMT09PXQubGVuZ3RoP3Q6dC5maWx0ZXIoKGUsbik9Pntjb25zdCByPXQuZmlsdGVyKChlLHQpPT50IT09bik7cmV0dXJuIXIuc29tZSh0PT5lLm9sZFJhbmdlLmZyb20+PXQub2xkUmFuZ2UuZnJvbSYmZS5vbGRSYW5nZS50bzw9dC5vbGRSYW5nZS50byYmZS5uZXdSYW5nZS5mcm9tPj10Lm5ld1JhbmdlLmZyb20mJmUubmV3UmFuZ2UudG88PXQubmV3UmFuZ2UudG8pfSl9ZnVuY3Rpb24gZ2V0Q2hhbmdlZFJhbmdlcyhlKXtjb25zdHttYXBwaW5nOnQsc3RlcHM6bn09ZSxyPVtdO3JldHVybiB0Lm1hcHMuZm9yRWFjaCgoZSxvKT0+e2NvbnN0IGk9W107aWYoZS5yYW5nZXMubGVuZ3RoKWUuZm9yRWFjaCgoZSx0KT0+e2kucHVzaCh7ZnJvbTplLHRvOnR9KX0pO2Vsc2V7Y29uc3R7ZnJvbTplLHRvOnR9PW5bb107aWYodm9pZCAwPT09ZXx8dm9pZCAwPT09dClyZXR1cm47aS5wdXNoKHtmcm9tOmUsdG86dH0pfWkuZm9yRWFjaCgoe2Zyb206ZSx0bzpufSk9Pntjb25zdCBpPXQuc2xpY2UobykubWFwKGUsLTEpLHM9dC5zbGljZShvKS5tYXAobiksbD10LmludmVydCgpLm1hcChpLC0xKSxhPXQuaW52ZXJ0KCkubWFwKHMpO3IucHVzaCh7b2xkUmFuZ2U6e2Zyb206bCx0bzphfSxuZXdSYW5nZTp7ZnJvbTppLHRvOnN9fSl9KX0pLHNpbXBsaWZ5Q2hhbmdlZFJhbmdlcyhyKX1mdW5jdGlvbiBnZXRNYXJrc0JldHdlZW4oZSx0LG4pe2NvbnN0IHI9W107cmV0dXJuIGU9PT10P24ucmVzb2x2ZShlKS5tYXJrcygpLmZvckVhY2godD0+e2NvbnN0IG89Z2V0TWFya1JhbmdlKG4ucmVzb2x2ZShlKSx0LnR5cGUpO28mJnIucHVzaCh7bWFyazp0LC4uLm99KX0pOm4ubm9kZXNCZXR3ZWVuKGUsdCwoZSx0KT0+e2UmJnZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLm5vZGVTaXplKSYmci5wdXNoKC4uLmUubWFya3MubWFwKG49Pih7ZnJvbTp0LHRvOnQrZS5ub2RlU2l6ZSxtYXJrOm59KSkpfSkscn1mdW5jdGlvbiBnZXRTY2hlbWFUeXBlQnlOYW1lKGUsdCl7cmV0dXJuIHQubm9kZXNbZV18fHQubWFya3NbZV18fG51bGx9ZnVuY3Rpb24gZ2V0U3BsaXR0ZWRBdHRyaWJ1dGVzKGUsdCxuKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLmZpbHRlcigoW25dKT0+e2NvbnN0IHI9ZS5maW5kKGU9PmUudHlwZT09PXQmJmUubmFtZT09PW4pO3JldHVybiEhciYmci5hdHRyaWJ1dGUua2VlcE9uU3BsaXR9KSl9ZnVuY3Rpb24gaXNNYXJrQWN0aXZlKGUsdCxuPXt9KXtjb25zdHtlbXB0eTpyLHJhbmdlczpvfT1lLnNlbGVjdGlvbixpPXQ/Z2V0TWFya1R5cGUodCxlLnNjaGVtYSk6bnVsbDtpZihyKXJldHVybiEhKGUuc3RvcmVkTWFya3N8fGUuc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCkpLmZpbHRlcihlPT4haXx8aS5uYW1lPT09ZS50eXBlLm5hbWUpLmZpbmQoZT0+b2JqZWN0SW5jbHVkZXMoZS5hdHRycyxuLHtzdHJpY3Q6ITF9KSk7bGV0IHM9MDtjb25zdCBsPVtdO2lmKG8uZm9yRWFjaCgoeyRmcm9tOnQsJHRvOm59KT0+e2NvbnN0IHI9dC5wb3Msbz1uLnBvcztlLmRvYy5ub2Rlc0JldHdlZW4ocixvLChlLHQpPT57aWYoaSYmZS5pbmxpbmVDb250ZW50JiYhZS50eXBlLmFsbG93c01hcmtUeXBlKGkpKXJldHVybiExO2lmKCFlLmlzVGV4dCYmIWUubWFya3MubGVuZ3RoKXJldHVybjtjb25zdCBuPU1hdGgubWF4KHIsdCksYT1NYXRoLm1pbihvLHQrZS5ub2RlU2l6ZSk7cys9YS1uLGwucHVzaCguLi5lLm1hcmtzLm1hcChlPT4oe21hcms6ZSxmcm9tOm4sdG86YX0pKSl9KX0pLDA9PT1zKXJldHVybiExO2NvbnN0IGE9bC5maWx0ZXIoZT0+IWl8fGkubmFtZT09PWUubWFyay50eXBlLm5hbWUpLmZpbHRlcihlPT5vYmplY3RJbmNsdWRlcyhlLm1hcmsuYXR0cnMsbix7c3RyaWN0OiExfSkpLnJlZHVjZSgoZSx0KT0+ZSt0LnRvLXQuZnJvbSwwKSxjPWwuZmlsdGVyKGU9PiFpfHxlLm1hcmsudHlwZSE9PWkmJmUubWFyay50eXBlLmV4Y2x1ZGVzKGkpKS5yZWR1Y2UoKGUsdCk9PmUrdC50by10LmZyb20sMCk7cmV0dXJuKGE+MD9hK2M6YSk+PXN9ZnVuY3Rpb24gaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LnNvbWUodD0+KCJzdHJpbmciPT10eXBlb2YgdD90OnQubmFtZSk9PT1lLm5hbWUpOnR9ZnVuY3Rpb24gaXNMaXN0KGUsdCl7Y29uc3R7bm9kZUV4dGVuc2lvbnM6bn09c3BsaXRFeHRlbnNpb25zKHQpLHI9bi5maW5kKHQ9PnQubmFtZT09PWUpO2lmKCFyKXJldHVybiExO2NvbnN0IG89Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKHIsImdyb3VwIix7bmFtZTpyLm5hbWUsb3B0aW9uczpyLm9wdGlvbnMsc3RvcmFnZTpyLnN0b3JhZ2V9KSk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBvJiZvLnNwbGl0KCIgIikuaW5jbHVkZXMoImxpc3QiKX1mdW5jdGlvbiBpc05vZGVFbXB0eShlLHtjaGVja0NoaWxkcmVuOnQ9ITAsaWdub3JlV2hpdGVzcGFjZTpuPSExfT17fSl7dmFyIHI7aWYobil7aWYoImhhcmRCcmVhayI9PT1lLnR5cGUubmFtZSlyZXR1cm4hMDtpZihlLmlzVGV4dClyZXR1cm4hL1xTLy50ZXN0KG51bGwhPShyPWUudGV4dCk/cjoiIil9aWYoZS5pc1RleHQpcmV0dXJuIWUudGV4dDtpZihlLmlzQXRvbXx8ZS5pc0xlYWYpcmV0dXJuITE7aWYoMD09PWUuY29udGVudC5jaGlsZENvdW50KXJldHVybiEwO2lmKHQpe2xldCByPSEwO3JldHVybiBlLmNvbnRlbnQuZm9yRWFjaChlPT57ITEhPT1yJiYoaXNOb2RlRW1wdHkoZSx7aWdub3JlV2hpdGVzcGFjZTpuLGNoZWNrQ2hpbGRyZW46dH0pfHwocj0hMSkpfSkscn1yZXR1cm4hMX1mdW5jdGlvbiBpc05vZGVTZWxlY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9ufXZhciAkdD1jbGFzcyBfTWFwcGFibGVQb3NpdGlvbntjb25zdHJ1Y3RvcihlKXt0aGlzLnBvc2l0aW9uPWV9c3RhdGljIGZyb21KU09OKGUpe3JldHVybiBuZXcgX01hcHBhYmxlUG9zaXRpb24oZS5wb3NpdGlvbil9dG9KU09OKCl7cmV0dXJue3Bvc2l0aW9uOnRoaXMucG9zaXRpb259fX07ZnVuY3Rpb24gZ2V0VXBkYXRlZFBvc2l0aW9uKGUsdCl7Y29uc3Qgbj10Lm1hcHBpbmcubWFwUmVzdWx0KGUucG9zaXRpb24pO3JldHVybntwb3NpdGlvbjpuZXcgJHQobi5wb3MpLG1hcFJlc3VsdDpufX1mdW5jdGlvbiBjcmVhdGVNYXBwYWJsZVBvc2l0aW9uKGUpe3JldHVybiBuZXcgJHQoZSl9ZnVuY3Rpb24gcG9zVG9ET01SZWN0KGUsdCxuKXtjb25zdCByPWUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSxvPW1pbk1heCh0LDAsciksaT1taW5NYXgobiwwLHIpLHM9ZS5jb29yZHNBdFBvcyhvKSxsPWUuY29vcmRzQXRQb3MoaSwtMSksYT1NYXRoLm1pbihzLnRvcCxsLnRvcCksYz1NYXRoLm1heChzLmJvdHRvbSxsLmJvdHRvbSksZD1NYXRoLm1pbihzLmxlZnQsbC5sZWZ0KSxwPU1hdGgubWF4KHMucmlnaHQsbC5yaWdodCksZj17dG9wOmEsYm90dG9tOmMsbGVmdDpkLHJpZ2h0OnAsd2lkdGg6cC1kLGhlaWdodDpjLWEseDpkLHk6YX07cmV0dXJuey4uLmYsdG9KU09OOigpPT5mfX12YXIgc2V0TWFyaz0oZSx0PXt9KT0+KHt0cjpuLHN0YXRlOnIsZGlzcGF0Y2g6b30pPT57Y29uc3R7c2VsZWN0aW9uOml9PW4se2VtcHR5OnMscmFuZ2VzOmx9PWksYT1nZXRNYXJrVHlwZShlLHIuc2NoZW1hKTtpZihvKWlmKHMpe2NvbnN0IGU9Z2V0TWFya0F0dHJpYnV0ZXMocixhKTtuLmFkZFN0b3JlZE1hcmsoYS5jcmVhdGUoey4uLmUsLi4udH0pKX1lbHNlIGwuZm9yRWFjaChlPT57Y29uc3Qgbz1lLiRmcm9tLnBvcyxpPWUuJHRvLnBvcztyLmRvYy5ub2Rlc0JldHdlZW4obyxpLChlLHIpPT57Y29uc3Qgcz1NYXRoLm1heChyLG8pLGw9TWF0aC5taW4ocitlLm5vZGVTaXplLGkpO2UubWFya3MuZmluZChlPT5lLnR5cGU9PT1hKT9lLm1hcmtzLmZvckVhY2goZT0+e2E9PT1lLnR5cGUmJm4uYWRkTWFyayhzLGwsYS5jcmVhdGUoey4uLmUuYXR0cnMsLi4udH0pKX0pOm4uYWRkTWFyayhzLGwsYS5jcmVhdGUodCkpfSl9KTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByO2NvbnN0e3NlbGVjdGlvbjpvfT10O2xldCBpPW51bGw7aWYoaXNUZXh0U2VsZWN0aW9uKG8pJiYoaT1vLiRjdXJzb3IpLGkpe2NvbnN0IHQ9bnVsbCE9KHI9ZS5zdG9yZWRNYXJrcyk/cjppLm1hcmtzKCk7cmV0dXJuIGkucGFyZW50LnR5cGUuYWxsb3dzTWFya1R5cGUobikmJighIW4uaXNJblNldCh0KXx8IXQuc29tZShlPT5lLnR5cGUuZXhjbHVkZXMobikpKX1jb25zdHtyYW5nZXM6c309bztyZXR1cm4gcy5zb21lKCh7JGZyb206dCwkdG86cn0pPT57bGV0IG89MD09PXQuZGVwdGgmJmUuZG9jLmlubGluZUNvbnRlbnQmJmUuZG9jLnR5cGUuYWxsb3dzTWFya1R5cGUobik7cmV0dXJuIGUuZG9jLm5vZGVzQmV0d2Vlbih0LnBvcyxyLnBvcywoZSx0LHIpPT57aWYobylyZXR1cm4hMTtpZihlLmlzSW5saW5lKXtjb25zdCB0PSFyfHxyLnR5cGUuYWxsb3dzTWFya1R5cGUobiksaT0hIW4uaXNJblNldChlLm1hcmtzKXx8IWUubWFya3Muc29tZShlPT5lLnR5cGUuZXhjbHVkZXMobikpO289dCYmaX1yZXR1cm4hb30pLG99KX0ocixuLGEpfSxzZXRNZXRhPShlLHQpPT4oe3RyOm59KT0+KG4uc2V0TWV0YShlLHQpLCEwKSxzZXROb2RlPShlLHQ9e30pPT4oe3N0YXRlOm4sZGlzcGF0Y2g6cixjaGFpbjpvfSk9Pntjb25zdCBpPWdldE5vZGVUeXBlKGUsbi5zY2hlbWEpO2xldCBzO3JldHVybiBuLnNlbGVjdGlvbi4kYW5jaG9yLnNhbWVQYXJlbnQobi5zZWxlY3Rpb24uJGhlYWQpJiYocz1uLnNlbGVjdGlvbi4kYW5jaG9yLnBhcmVudC5hdHRycyksaS5pc1RleHRibG9jaz9vKCkuY29tbWFuZCgoe2NvbW1hbmRzOmV9KT0+ISFzZXRCbG9ja1R5cGUoaSx7Li4ucywuLi50fSkobil8fGUuY2xlYXJOb2RlcygpKS5jb21tYW5kKCh7c3RhdGU6ZX0pPT5zZXRCbG9ja1R5cGUoaSx7Li4ucywuLi50fSkoZSxyKSkucnVuKCk6KGNvbnNvbGUud2FybignW3RpcHRhcCB3YXJuXTogQ3VycmVudGx5ICJzZXROb2RlKCkiIG9ubHkgc3VwcG9ydHMgdGV4dCBibG9jayBub2Rlcy4nKSwhMSl9LHNldE5vZGVTZWxlY3Rpb249ZT0+KHt0cjp0LGRpc3BhdGNoOm59KT0+e2lmKG4pe2NvbnN0e2RvYzpufT10LHI9bWluTWF4KGUsMCxuLmNvbnRlbnQuc2l6ZSksbz1Ob2RlU2VsZWN0aW9uLmNyZWF0ZShuLHIpO3Quc2V0U2VsZWN0aW9uKG8pfXJldHVybiEwfSxzZXRUZXh0RGlyZWN0aW9uPShlLHQpPT4oe3RyOm4sc3RhdGU6cixkaXNwYXRjaDpvfSk9Pntjb25zdHtzZWxlY3Rpb246aX09cjtsZXQgcyxsO3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8ocz10LGw9dCk6dCYmImZyb20iaW4gdCYmInRvImluIHQ/KHM9dC5mcm9tLGw9dC50byk6KHM9aS5mcm9tLGw9aS50byksbyYmbi5kb2Mubm9kZXNCZXR3ZWVuKHMsbCwodCxyKT0+e3QuaXNUZXh0fHxuLnNldE5vZGVNYXJrdXAocix2b2lkIDAsey4uLnQuYXR0cnMsZGlyOmV9KX0pLCEwfSxzZXRUZXh0U2VsZWN0aW9uPWU9Pih7dHI6dCxkaXNwYXRjaDpufSk9PntpZihuKXtjb25zdHtkb2M6bn09dCx7ZnJvbTpyLHRvOm99PSJudW1iZXIiPT10eXBlb2YgZT97ZnJvbTplLHRvOmV9OmUsaT1UZXh0U2VsZWN0aW9uLmF0U3RhcnQobikuZnJvbSxzPVRleHRTZWxlY3Rpb24uYXRFbmQobikudG8sbD1taW5NYXgocixpLHMpLGE9bWluTWF4KG8saSxzKSxjPVRleHRTZWxlY3Rpb24uY3JlYXRlKG4sbCxhKTt0LnNldFNlbGVjdGlvbihjKX1yZXR1cm4hMH0sc2lua0xpc3RJdGVtPWU9Pih7c3RhdGU6dCxkaXNwYXRjaDpufSk9Pntjb25zdCByPWdldE5vZGVUeXBlKGUsdC5zY2hlbWEpO3JldHVybihvPXIsZnVuY3Rpb24oZSx0KXtsZXR7JGZyb206biwkdG86cn09ZS5zZWxlY3Rpb24saT1uLmJsb2NrUmFuZ2UocixlPT5lLmNoaWxkQ291bnQ+MCYmZS5maXJzdENoaWxkLnR5cGU9PW8pO2lmKCFpKXJldHVybiExO2xldCBzPWkuc3RhcnRJbmRleDtpZigwPT1zKXJldHVybiExO2xldCBsPWkucGFyZW50LGE9bC5jaGlsZChzLTEpO2lmKGEudHlwZSE9bylyZXR1cm4hMTtpZih0KXtsZXQgbj1hLmxhc3RDaGlsZCYmYS5sYXN0Q2hpbGQudHlwZT09bC50eXBlLHI9RnJhZ21lbnQuZnJvbShuP28uY3JlYXRlKCk6bnVsbCkscz1uZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShvLmNyZWF0ZShudWxsLEZyYWdtZW50LmZyb20obC50eXBlLmNyZWF0ZShudWxsLHIpKSkpLG4/MzoxLDApLGM9aS5zdGFydCxkPWkuZW5kO3QoZS50ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcChjLShuPzM6MSksZCxjLGQscywxLCEwKSkuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9KSh0LG4pO3ZhciBvfTtmdW5jdGlvbiBlbnN1cmVNYXJrcyhlLHQpe2NvbnN0IG49ZS5zdG9yZWRNYXJrc3x8ZS5zZWxlY3Rpb24uJHRvLnBhcmVudE9mZnNldCYmZS5zZWxlY3Rpb24uJGZyb20ubWFya3MoKTtpZihuKXtjb25zdCByPW4uZmlsdGVyKGU9Pm51bGw9PXQ/dm9pZCAwOnQuaW5jbHVkZXMoZS50eXBlLm5hbWUpKTtlLnRyLmVuc3VyZU1hcmtzKHIpfX12YXIgc3BsaXRCbG9jaz0oe2tlZXBNYXJrczplPSEwfT17fSk9Pih7dHI6dCxzdGF0ZTpuLGRpc3BhdGNoOnIsZWRpdG9yOm99KT0+e2NvbnN0e3NlbGVjdGlvbjppLGRvYzpzfT10LHskZnJvbTpsLCR0bzphfT1pLGM9Z2V0U3BsaXR0ZWRBdHRyaWJ1dGVzKG8uZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzLGwubm9kZSgpLnR5cGUubmFtZSxsLm5vZGUoKS5hdHRycyk7aWYoaSBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24mJmkubm9kZS5pc0Jsb2NrKXJldHVybiEoIWwucGFyZW50T2Zmc2V0fHwhY2FuU3BsaXQocyxsLnBvcykpJiYociYmKGUmJmVuc3VyZU1hcmtzKG4sby5leHRlbnNpb25NYW5hZ2VyLnNwbGl0dGFibGVNYXJrcyksdC5zcGxpdChsLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksITApO2lmKCFsLnBhcmVudC5pc0Jsb2NrKXJldHVybiExO2NvbnN0IGQ9YS5wYXJlbnRPZmZzZXQ9PT1hLnBhcmVudC5jb250ZW50LnNpemUscD0wPT09bC5kZXB0aD92b2lkIDA6ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTA7dDxlLmVkZ2VDb3VudDt0Kz0xKXtjb25zdHt0eXBlOm59PWUuZWRnZSh0KTtpZihuLmlzVGV4dGJsb2NrJiYhbi5oYXNSZXF1aXJlZEF0dHJzKCkpcmV0dXJuIG59cmV0dXJuIG51bGx9KGwubm9kZSgtMSkuY29udGVudE1hdGNoQXQobC5pbmRleEFmdGVyKC0xKSkpO2xldCBmPWQmJnA/W3t0eXBlOnAsYXR0cnM6Y31dOnZvaWQgMCxtPWNhblNwbGl0KHQuZG9jLHQubWFwcGluZy5tYXAobC5wb3MpLDEsZik7aWYoZnx8bXx8IWNhblNwbGl0KHQuZG9jLHQubWFwcGluZy5tYXAobC5wb3MpLDEscD9be3R5cGU6cH1dOnZvaWQgMCl8fChtPSEwLGY9cD9be3R5cGU6cCxhdHRyczpjfV06dm9pZCAwKSxyKXtpZihtJiYoaSBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24mJnQuZGVsZXRlU2VsZWN0aW9uKCksdC5zcGxpdCh0Lm1hcHBpbmcubWFwKGwucG9zKSwxLGYpLHAmJiFkJiYhbC5wYXJlbnRPZmZzZXQmJmwucGFyZW50LnR5cGUhPT1wKSl7Y29uc3QgZT10Lm1hcHBpbmcubWFwKGwuYmVmb3JlKCkpLG49dC5kb2MucmVzb2x2ZShlKTtsLm5vZGUoLTEpLmNhblJlcGxhY2VXaXRoKG4uaW5kZXgoKSxuLmluZGV4KCkrMSxwKSYmdC5zZXROb2RlTWFya3VwKHQubWFwcGluZy5tYXAobC5iZWZvcmUoKSkscCl9ZSYmZW5zdXJlTWFya3MobixvLmV4dGVuc2lvbk1hbmFnZXIuc3BsaXR0YWJsZU1hcmtzKSx0LnNjcm9sbEludG9WaWV3KCl9cmV0dXJuIG19LHNwbGl0TGlzdEl0ZW09KGUsdD17fSk9Pih7dHI6bixzdGF0ZTpyLGRpc3BhdGNoOm8sZWRpdG9yOml9KT0+e3ZhciBzO2NvbnN0IGw9Z2V0Tm9kZVR5cGUoZSxyLnNjaGVtYSkseyRmcm9tOmEsJHRvOmN9PXIuc2VsZWN0aW9uLGQ9ci5zZWxlY3Rpb24ubm9kZTtpZihkJiZkLmlzQmxvY2t8fGEuZGVwdGg8Mnx8IWEuc2FtZVBhcmVudChjKSlyZXR1cm4hMTtjb25zdCBwPWEubm9kZSgtMSk7aWYocC50eXBlIT09bClyZXR1cm4hMTtjb25zdCBmPWkuZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzO2lmKDA9PT1hLnBhcmVudC5jb250ZW50LnNpemUmJmEubm9kZSgtMSkuY2hpbGRDb3VudD09PWEuaW5kZXhBZnRlcigtMSkpe2lmKDI9PT1hLmRlcHRofHxhLm5vZGUoLTMpLnR5cGUhPT1sfHxhLmluZGV4KC0yKSE9PWEubm9kZSgtMikuY2hpbGRDb3VudC0xKXJldHVybiExO2lmKG8pe2xldCBlPUZyYWdtZW50LmVtcHR5O2NvbnN0IHI9YS5pbmRleCgtMSk/MTphLmluZGV4KC0yKT8yOjM7Zm9yKGxldCB0PWEuZGVwdGgtcjt0Pj1hLmRlcHRoLTM7dC09MSllPUZyYWdtZW50LmZyb20oYS5ub2RlKHQpLmNvcHkoZSkpO2NvbnN0IG89YS5pbmRleEFmdGVyKC0xKTxhLm5vZGUoLTIpLmNoaWxkQ291bnQ/MTphLmluZGV4QWZ0ZXIoLTIpPGEubm9kZSgtMykuY2hpbGRDb3VudD8yOjMsaT17Li4uZ2V0U3BsaXR0ZWRBdHRyaWJ1dGVzKGYsYS5ub2RlKCkudHlwZS5uYW1lLGEubm9kZSgpLmF0dHJzKSwuLi50fSxjPShudWxsPT0ocz1sLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSk/dm9pZCAwOnMuY3JlYXRlQW5kRmlsbChpKSl8fHZvaWQgMDtlPWUuYXBwZW5kKEZyYWdtZW50LmZyb20obC5jcmVhdGVBbmRGaWxsKG51bGwsYyl8fHZvaWQgMCkpO2NvbnN0IGQ9YS5iZWZvcmUoYS5kZXB0aC0oci0xKSk7bi5yZXBsYWNlKGQsYS5hZnRlcigtbyksbmV3IFNsaWNlKGUsNC1yLDApKTtsZXQgcD0tMTtuLmRvYy5ub2Rlc0JldHdlZW4oZCxuLmRvYy5jb250ZW50LnNpemUsKGUsdCk9PntpZihwPi0xKXJldHVybiExO2UuaXNUZXh0YmxvY2smJjA9PT1lLmNvbnRlbnQuc2l6ZSYmKHA9dCsxKX0pLHA+LTEmJm4uc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24ubmVhcihuLmRvYy5yZXNvbHZlKHApKSksbi5zY3JvbGxJbnRvVmlldygpfXJldHVybiEwfWNvbnN0IG09Yy5wb3M9PT1hLmVuZCgpP3AuY29udGVudE1hdGNoQXQoMCkuZGVmYXVsdFR5cGU6bnVsbCx5PXsuLi5nZXRTcGxpdHRlZEF0dHJpYnV0ZXMoZixwLnR5cGUubmFtZSxwLmF0dHJzKSwuLi50fSx3PXsuLi5nZXRTcGxpdHRlZEF0dHJpYnV0ZXMoZixhLm5vZGUoKS50eXBlLm5hbWUsYS5ub2RlKCkuYXR0cnMpLC4uLnR9O24uZGVsZXRlKGEucG9zLGMucG9zKTtjb25zdCBiPW0/W3t0eXBlOmwsYXR0cnM6eX0se3R5cGU6bSxhdHRyczp3fV06W3t0eXBlOmwsYXR0cnM6eX1dO2lmKCFjYW5TcGxpdChuLmRvYyxhLnBvcywyKSlyZXR1cm4hMTtpZihvKXtjb25zdHtzZWxlY3Rpb246ZSxzdG9yZWRNYXJrczp0fT1yLHtzcGxpdHRhYmxlTWFya3M6c309aS5leHRlbnNpb25NYW5hZ2VyLGw9dHx8ZS4kdG8ucGFyZW50T2Zmc2V0JiZlLiRmcm9tLm1hcmtzKCk7aWYobi5zcGxpdChhLnBvcywyLGIpLnNjcm9sbEludG9WaWV3KCksIWx8fCFvKXJldHVybiEwO2NvbnN0IGM9bC5maWx0ZXIoZT0+cy5pbmNsdWRlcyhlLnR5cGUubmFtZSkpO24uZW5zdXJlTWFya3MoYyl9cmV0dXJuITB9LGpvaW5MaXN0QmFja3dhcmRzPShlLHQpPT57Y29uc3Qgbj1maW5kUGFyZW50Tm9kZShlPT5lLnR5cGU9PT10KShlLnNlbGVjdGlvbik7aWYoIW4pcmV0dXJuITA7Y29uc3Qgcj1lLmRvYy5yZXNvbHZlKE1hdGgubWF4KDAsbi5wb3MtMSkpLmJlZm9yZShuLmRlcHRoKTtpZih2b2lkIDA9PT1yKXJldHVybiEwO2NvbnN0IG89ZS5kb2Mubm9kZUF0KHIpO3JldHVybiBuLm5vZGUudHlwZSE9PShudWxsPT1vP3ZvaWQgMDpvLnR5cGUpfHwhY2FuSm9pbihlLmRvYyxuLnBvcyl8fChlLmpvaW4obi5wb3MpLCEwKX0sam9pbkxpc3RGb3J3YXJkcz0oZSx0KT0+e2NvbnN0IG49ZmluZFBhcmVudE5vZGUoZT0+ZS50eXBlPT09dCkoZS5zZWxlY3Rpb24pO2lmKCFuKXJldHVybiEwO2NvbnN0IHI9ZS5kb2MucmVzb2x2ZShuLnN0YXJ0KS5hZnRlcihuLmRlcHRoKTtpZih2b2lkIDA9PT1yKXJldHVybiEwO2NvbnN0IG89ZS5kb2Mubm9kZUF0KHIpO3JldHVybiBuLm5vZGUudHlwZSE9PShudWxsPT1vP3ZvaWQgMDpvLnR5cGUpfHwhY2FuSm9pbihlLmRvYyxyKXx8KGUuam9pbihyKSwhMCl9O3ZhciB0b2dnbGVMaXN0PShlLHQsbixyPXt9KT0+KHtlZGl0b3I6byx0cjppLHN0YXRlOnMsZGlzcGF0Y2g6bCxjaGFpbjphLGNvbW1hbmRzOmMsY2FuOmR9KT0+e2NvbnN0e2V4dGVuc2lvbnM6cCxzcGxpdHRhYmxlTWFya3M6Zn09by5leHRlbnNpb25NYW5hZ2VyLG09Z2V0Tm9kZVR5cGUoZSxzLnNjaGVtYSkseT1nZXROb2RlVHlwZSh0LHMuc2NoZW1hKSx7c2VsZWN0aW9uOncsc3RvcmVkTWFya3M6Yn09cyx7JGZyb206diwkdG86eH09dyxTPXYuYmxvY2tSYW5nZSh4KSxDPWJ8fHcuJHRvLnBhcmVudE9mZnNldCYmdy4kZnJvbS5tYXJrcygpO2lmKCFTKXJldHVybiExO2NvbnN0IEE9ZmluZFBhcmVudE5vZGUoZT0+aXNMaXN0KGUudHlwZS5uYW1lLHApKSh3KSxPPTA9PT13LmZyb20mJncudG89PT1zLmRvYy5jb250ZW50LnNpemUsRT1zLmRvYy5jb250ZW50LmNvbnRlbnQsTj0xPT09RS5sZW5ndGg/RVswXTpudWxsLFI9TyYmTiYmaXNMaXN0KE4udHlwZS5uYW1lLHApP3tub2RlOk4scG9zOjB9Om51bGwsRD1udWxsIT1BP0E6UixQPSEhUjtpZigoISFBJiZTLmRlcHRoPj0xJiZTLmRlcHRoLUEuZGVwdGg8PTF8fFApJiZEKXtpZihELm5vZGUudHlwZT09PW0pcmV0dXJuIE8mJlA/YSgpLmNvbW1hbmQoKHt0cjplLGRpc3BhdGNoOnR9KT0+e2NvbnN0IG49ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmRvYyxuPXQuZmlyc3RDaGlsZDtpZighbilyZXR1cm4gbnVsbDtjb25zdCByPXQucmVzb2x2ZSgxKSxvPXQucmVzb2x2ZShuLm5vZGVTaXplLTEpO3JldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4ocixvKX0oZSk7cmV0dXJuISFuJiYoZS5zZXRTZWxlY3Rpb24obiksdCYmdChlKSwhMCl9KS5saWZ0TGlzdEl0ZW0oeSkucnVuKCk6Yy5saWZ0TGlzdEl0ZW0oeSk7aWYoaXNMaXN0KEQubm9kZS50eXBlLm5hbWUscCkmJm0udmFsaWRDb250ZW50KEQubm9kZS5jb250ZW50KSlyZXR1cm4gYSgpLmNvbW1hbmQoKCk9PihpLnNldE5vZGVNYXJrdXAoRC5wb3MsbSksITApKS5jb21tYW5kKCgpPT5qb2luTGlzdEJhY2t3YXJkcyhpLG0pKS5jb21tYW5kKCgpPT5qb2luTGlzdEZvcndhcmRzKGksbSkpLnJ1bigpfXJldHVybiBuJiZDJiZsP2EoKS5jb21tYW5kKCgpPT57Y29uc3QgZT1kKCkud3JhcEluTGlzdChtLHIpLHQ9Qy5maWx0ZXIoZT0+Zi5pbmNsdWRlcyhlLnR5cGUubmFtZSkpO3JldHVybiBpLmVuc3VyZU1hcmtzKHQpLCEhZXx8Yy5jbGVhck5vZGVzKCl9KS53cmFwSW5MaXN0KG0scikuY29tbWFuZCgoKT0+am9pbkxpc3RCYWNrd2FyZHMoaSxtKSkuY29tbWFuZCgoKT0+am9pbkxpc3RGb3J3YXJkcyhpLG0pKS5ydW4oKTphKCkuY29tbWFuZCgoKT0+ISFkKCkud3JhcEluTGlzdChtLHIpfHxjLmNsZWFyTm9kZXMoKSkud3JhcEluTGlzdChtLHIpLmNvbW1hbmQoKCk9PmpvaW5MaXN0QmFja3dhcmRzKGksbSkpLmNvbW1hbmQoKCk9PmpvaW5MaXN0Rm9yd2FyZHMoaSxtKSkucnVuKCl9LHRvZ2dsZU1hcms9KGUsdD17fSxuPXt9KT0+KHtzdGF0ZTpyLGNvbW1hbmRzOm99KT0+e2NvbnN0e2V4dGVuZEVtcHR5TWFya1JhbmdlOmk9ITF9PW4scz1nZXRNYXJrVHlwZShlLHIuc2NoZW1hKTtyZXR1cm4gaXNNYXJrQWN0aXZlKHIscyx0KT9vLnVuc2V0TWFyayhzLHtleHRlbmRFbXB0eU1hcmtSYW5nZTppfSk6by5zZXRNYXJrKHMsdCl9LHRvZ2dsZU5vZGU9KGUsdCxuPXt9KT0+KHtzdGF0ZTpyLGNvbW1hbmRzOm99KT0+e2NvbnN0IGk9Z2V0Tm9kZVR5cGUoZSxyLnNjaGVtYSkscz1nZXROb2RlVHlwZSh0LHIuc2NoZW1hKSxsPWlzTm9kZUFjdGl2ZShyLGksbik7bGV0IGE7cmV0dXJuIHIuc2VsZWN0aW9uLiRhbmNob3Iuc2FtZVBhcmVudChyLnNlbGVjdGlvbi4kaGVhZCkmJihhPXIuc2VsZWN0aW9uLiRhbmNob3IucGFyZW50LmF0dHJzKSxsP28uc2V0Tm9kZShzLGEpOm8uc2V0Tm9kZShpLHsuLi5hLC4uLm59KX0sdG9nZ2xlV3JhcD0oZSx0PXt9KT0+KHtzdGF0ZTpuLGNvbW1hbmRzOnJ9KT0+e2NvbnN0IG89Z2V0Tm9kZVR5cGUoZSxuLnNjaGVtYSk7cmV0dXJuIGlzTm9kZUFjdGl2ZShuLG8sdCk/ci5saWZ0KG8pOnIud3JhcEluKG8sdCl9LHVuZG9JbnB1dFJ1bGU9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9Pntjb25zdCBuPWUucGx1Z2lucztmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrPTEpe2NvbnN0IG89bltyXTtsZXQgaTtpZihvLnNwZWMuaXNJbnB1dFJ1bGVzJiYoaT1vLmdldFN0YXRlKGUpKSl7aWYodCl7Y29uc3QgdD1lLnRyLG49aS50cmFuc2Zvcm07Zm9yKGxldCBlPW4uc3RlcHMubGVuZ3RoLTE7ZT49MDtlLT0xKXQuc3RlcChuLnN0ZXBzW2VdLmludmVydChuLmRvY3NbZV0pKTtpZihpLnRleHQpe2NvbnN0IG49dC5kb2MucmVzb2x2ZShpLmZyb20pLm1hcmtzKCk7dC5yZXBsYWNlV2l0aChpLmZyb20saS50byxlLnNjaGVtYS50ZXh0KGkudGV4dCxuKSl9ZWxzZSB0LmRlbGV0ZShpLmZyb20saS50byl9cmV0dXJuITB9fXJldHVybiExfSx1bnNldEFsbE1hcmtzPSgpPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT57Y29uc3R7c2VsZWN0aW9uOm59PWUse2VtcHR5OnIscmFuZ2VzOm99PW47cmV0dXJuIHJ8fHQmJm8uZm9yRWFjaCh0PT57ZS5yZW1vdmVNYXJrKHQuJGZyb20ucG9zLHQuJHRvLnBvcyl9KSwhMH0sdW5zZXRNYXJrPShlLHQ9e30pPT4oe3RyOm4sc3RhdGU6cixkaXNwYXRjaDpvfSk9Pnt2YXIgaTtjb25zdHtleHRlbmRFbXB0eU1hcmtSYW5nZTpzPSExfT10LHtzZWxlY3Rpb246bH09bixhPWdldE1hcmtUeXBlKGUsci5zY2hlbWEpLHskZnJvbTpjLGVtcHR5OmQscmFuZ2VzOnB9PWw7aWYoIW8pcmV0dXJuITA7aWYoZCYmcyl7bGV0e2Zyb206ZSx0bzp0fT1sO2NvbnN0IHI9bnVsbD09KGk9Yy5tYXJrcygpLmZpbmQoZT0+ZS50eXBlPT09YSkpP3ZvaWQgMDppLmF0dHJzLG89Z2V0TWFya1JhbmdlKGMsYSxyKTtvJiYoZT1vLmZyb20sdD1vLnRvKSxuLnJlbW92ZU1hcmsoZSx0LGEpfWVsc2UgcC5mb3JFYWNoKGU9PntuLnJlbW92ZU1hcmsoZS4kZnJvbS5wb3MsZS4kdG8ucG9zLGEpfSk7cmV0dXJuIG4ucmVtb3ZlU3RvcmVkTWFyayhhKSwhMH0sdW5zZXRUZXh0RGlyZWN0aW9uPWU9Pih7dHI6dCxzdGF0ZTpuLGRpc3BhdGNoOnJ9KT0+e2NvbnN0e3NlbGVjdGlvbjpvfT1uO2xldCBpLHM7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlPyhpPWUscz1lKTplJiYiZnJvbSJpbiBlJiYidG8iaW4gZT8oaT1lLmZyb20scz1lLnRvKTooaT1vLmZyb20scz1vLnRvKSxyJiZ0LmRvYy5ub2Rlc0JldHdlZW4oaSxzLChlLG4pPT57aWYoZS5pc1RleHQpcmV0dXJuO2NvbnN0IHI9ey4uLmUuYXR0cnN9O2RlbGV0ZSByLmRpcix0LnNldE5vZGVNYXJrdXAobix2b2lkIDAscil9KSwhMH0sdXBkYXRlQXR0cmlidXRlcz0oZSx0PXt9KT0+KHt0cjpuLHN0YXRlOnIsZGlzcGF0Y2g6b30pPT57bGV0IGk9bnVsbCxzPW51bGw7Y29uc3QgbD1nZXRTY2hlbWFUeXBlTmFtZUJ5TmFtZSgic3RyaW5nIj09dHlwZW9mIGU/ZTplLm5hbWUsci5zY2hlbWEpO2lmKCFsKXJldHVybiExOyJub2RlIj09PWwmJihpPWdldE5vZGVUeXBlKGUsci5zY2hlbWEpKSwibWFyayI9PT1sJiYocz1nZXRNYXJrVHlwZShlLHIuc2NoZW1hKSk7bGV0IGE9ITE7cmV0dXJuIG4uc2VsZWN0aW9uLnJhbmdlcy5mb3JFYWNoKGU9Pntjb25zdCBsPWUuJGZyb20ucG9zLGM9ZS4kdG8ucG9zO2xldCBkLHAsZixtO24uc2VsZWN0aW9uLmVtcHR5P3IuZG9jLm5vZGVzQmV0d2VlbihsLGMsKGUsdCk9PntpJiZpPT09ZS50eXBlJiYoYT0hMCxmPU1hdGgubWF4KHQsbCksbT1NYXRoLm1pbih0K2Uubm9kZVNpemUsYyksZD10LHA9ZSl9KTpyLmRvYy5ub2Rlc0JldHdlZW4obCxjLChlLHIpPT57cjxsJiZpJiZpPT09ZS50eXBlJiYoYT0hMCxmPU1hdGgubWF4KHIsbCksbT1NYXRoLm1pbihyK2Uubm9kZVNpemUsYyksZD1yLHA9ZSkscj49bCYmcjw9YyYmKGkmJmk9PT1lLnR5cGUmJihhPSEwLG8mJm4uc2V0Tm9kZU1hcmt1cChyLHZvaWQgMCx7Li4uZS5hdHRycywuLi50fSkpLHMmJmUubWFya3MubGVuZ3RoJiZlLm1hcmtzLmZvckVhY2goaT0+e2lmKHM9PT1pLnR5cGUmJihhPSEwLG8pKXtjb25zdCBvPU1hdGgubWF4KHIsbCksYT1NYXRoLm1pbihyK2Uubm9kZVNpemUsYyk7bi5hZGRNYXJrKG8sYSxzLmNyZWF0ZSh7Li4uaS5hdHRycywuLi50fSkpfX0pKX0pLHAmJih2b2lkIDAhPT1kJiZvJiZuLnNldE5vZGVNYXJrdXAoZCx2b2lkIDAsey4uLnAuYXR0cnMsLi4udH0pLHMmJnAubWFya3MubGVuZ3RoJiZwLm1hcmtzLmZvckVhY2goZT0+e3M9PT1lLnR5cGUmJm8mJm4uYWRkTWFyayhmLG0scy5jcmVhdGUoey4uLmUuYXR0cnMsLi4udH0pKX0pKX0pLGF9LHdyYXBJbj0oZSx0PXt9KT0+KHtzdGF0ZTpuLGRpc3BhdGNoOnJ9KT0+ZnVuY3Rpb24oZSx0PW51bGwpe3JldHVybiBmdW5jdGlvbihuLHIpe2xldHskZnJvbTpvLCR0bzppfT1uLnNlbGVjdGlvbixzPW8uYmxvY2tSYW5nZShpKSxsPXMmJmZpbmRXcmFwcGluZyhzLGUsdCk7cmV0dXJuISFsJiYociYmcihuLnRyLndyYXAocyxsKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9fShnZXROb2RlVHlwZShlLG4uc2NoZW1hKSx0KShuLHIpLHdyYXBJbkxpc3Q9KGUsdD17fSk9Pih7c3RhdGU6bixkaXNwYXRjaDpyfSk9PndyYXBJbkxpc3QkMShnZXROb2RlVHlwZShlLG4uc2NoZW1hKSx0KShuLHIpLEx0PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jYWxsYmFja3M9e319b24oZSx0KXtyZXR1cm4gdGhpcy5jYWxsYmFja3NbZV18fCh0aGlzLmNhbGxiYWNrc1tlXT1bXSksdGhpcy5jYWxsYmFja3NbZV0ucHVzaCh0KSx0aGlzfWVtaXQoZSwuLi50KXtjb25zdCBuPXRoaXMuY2FsbGJhY2tzW2VdO3JldHVybiBuJiZuLmZvckVhY2goZT0+ZS5hcHBseSh0aGlzLHQpKSx0aGlzfW9mZihlLHQpe2NvbnN0IG49dGhpcy5jYWxsYmFja3NbZV07cmV0dXJuIG4mJih0P3RoaXMuY2FsbGJhY2tzW2VdPW4uZmlsdGVyKGU9PmUhPT10KTpkZWxldGUgdGhpcy5jYWxsYmFja3NbZV0pLHRoaXN9b25jZShlLHQpe2NvbnN0IG9uY2VGbj0oLi4ubik9Pnt0aGlzLm9mZihlLG9uY2VGbiksdC5hcHBseSh0aGlzLG4pfTtyZXR1cm4gdGhpcy5vbihlLG9uY2VGbil9cmVtb3ZlQWxsTGlzdGVuZXJzKCl7dGhpcy5jYWxsYmFja3M9e319fSx6dD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt2YXIgdDt0aGlzLmZpbmQ9ZS5maW5kLHRoaXMuaGFuZGxlcj1lLmhhbmRsZXIsdGhpcy51bmRvYWJsZT1udWxsPT0odD1lLnVuZG9hYmxlKXx8dH19O2Z1bmN0aW9uIHJ1biQyKGUpe3ZhciB0O2NvbnN0e2VkaXRvcjpuLGZyb206cix0bzpvLHRleHQ6aSxydWxlczpzLHBsdWdpbjpsfT1lLHt2aWV3OmF9PW47aWYoYS5jb21wb3NpbmcpcmV0dXJuITE7Y29uc3QgYz1hLnN0YXRlLmRvYy5yZXNvbHZlKHIpO2lmKGMucGFyZW50LnR5cGUuc3BlYy5jb2RlfHwobnVsbD09KHQ9Yy5ub2RlQmVmb3JlfHxjLm5vZGVBZnRlcik/dm9pZCAwOnQubWFya3MuZmluZChlPT5lLnR5cGUuc3BlYy5jb2RlKSkpcmV0dXJuITE7bGV0IGQ9ITE7Y29uc3QgcD0oKGUsdD01MDApPT57bGV0IG49IiI7Y29uc3Qgcj1lLnBhcmVudE9mZnNldDtyZXR1cm4gZS5wYXJlbnQubm9kZXNCZXR3ZWVuKE1hdGgubWF4KDAsci10KSxyLChlLHQsbyxpKT0+e3ZhciBzLGw7Y29uc3QgYT0obnVsbD09KGw9KHM9ZS50eXBlLnNwZWMpLnRvVGV4dCk/dm9pZCAwOmwuY2FsbChzLHtub2RlOmUscG9zOnQscGFyZW50Om8saW5kZXg6aX0pKXx8ZS50ZXh0Q29udGVudHx8IiVsZWFmJSI7bis9ZS5pc0F0b20mJiFlLmlzVGV4dD9hOmEuc2xpY2UoMCxNYXRoLm1heCgwLHItdCkpfSksbn0pKGMpK2k7cmV0dXJuIHMuZm9yRWFjaChlPT57aWYoZClyZXR1cm47Y29uc3QgdD0oKGUsdCk9PntpZihpc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKGUpO2NvbnN0IG49dChlKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCByPVtuLnRleHRdO3JldHVybiByLmluZGV4PW4uaW5kZXgsci5pbnB1dD1lLHIuZGF0YT1uLmRhdGEsbi5yZXBsYWNlV2l0aCYmKG4udGV4dC5pbmNsdWRlcyhuLnJlcGxhY2VXaXRoKXx8Y29uc29sZS53YXJuKCdbdGlwdGFwIHdhcm5dOiAiaW5wdXRSdWxlTWF0Y2gucmVwbGFjZVdpdGgiIG11c3QgYmUgcGFydCBvZiAiaW5wdXRSdWxlTWF0Y2gudGV4dCIuJyksci5wdXNoKG4ucmVwbGFjZVdpdGgpKSxyfSkocCxlLmZpbmQpO2lmKCF0KXJldHVybjtjb25zdCBzPWEuc3RhdGUudHIsYz1jcmVhdGVDaGFpbmFibGVTdGF0ZSh7c3RhdGU6YS5zdGF0ZSx0cmFuc2FjdGlvbjpzfSksZj17ZnJvbTpyLSh0WzBdLmxlbmd0aC1pLmxlbmd0aCksdG86b30se2NvbW1hbmRzOm0sY2hhaW46eSxjYW46d309bmV3IFB0KHtlZGl0b3I6bixzdGF0ZTpjfSk7bnVsbCE9PWUuaGFuZGxlcih7c3RhdGU6YyxyYW5nZTpmLG1hdGNoOnQsY29tbWFuZHM6bSxjaGFpbjp5LGNhbjp3fSkmJnMuc3RlcHMubGVuZ3RoJiYoZS51bmRvYWJsZSYmcy5zZXRNZXRhKGwse3RyYW5zZm9ybTpzLGZyb206cix0bzpvLHRleHQ6aX0pLGEuZGlzcGF0Y2gocyksZD0hMCl9KSxkfWZ1bmN0aW9uIGlzUGxhaW5PYmplY3QoZSl7cmV0dXJuIk9iamVjdCI9PT1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfShlKSYmKGUuY29uc3RydWN0b3I9PT1PYmplY3QmJk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGUpfWZ1bmN0aW9uIG1lcmdlRGVlcChlLHQpe2NvbnN0IG49ey4uLmV9O3JldHVybiBpc1BsYWluT2JqZWN0KGUpJiZpc1BsYWluT2JqZWN0KHQpJiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKHI9Pntpc1BsYWluT2JqZWN0KHRbcl0pJiZpc1BsYWluT2JqZWN0KGVbcl0pP25bcl09bWVyZ2VEZWVwKGVbcl0sdFtyXSk6bltyXT10W3JdfSksbn12YXIgQnQ9Y2xhc3N7Y29uc3RydWN0b3IoZT17fSl7dGhpcy50eXBlPSJleHRlbmRhYmxlIix0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGQ9bnVsbCx0aGlzLm5hbWU9IiIsdGhpcy5jb25maWc9e25hbWU6dGhpcy5uYW1lfSx0aGlzLmNvbmZpZz17Li4udGhpcy5jb25maWcsLi4uZX0sdGhpcy5uYW1lPXRoaXMuY29uZmlnLm5hbWV9Z2V0IG9wdGlvbnMoKXtyZXR1cm57Li4uY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKHRoaXMsImFkZE9wdGlvbnMiLHtuYW1lOnRoaXMubmFtZX0pKXx8e319fWdldCBzdG9yYWdlKCl7cmV0dXJuey4uLmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZCh0aGlzLCJhZGRTdG9yYWdlIix7bmFtZTp0aGlzLm5hbWUsb3B0aW9uczp0aGlzLm9wdGlvbnN9KSl8fHt9fX1jb25maWd1cmUoZT17fSl7Y29uc3QgdD10aGlzLmV4dGVuZCh7Li4udGhpcy5jb25maWcsYWRkT3B0aW9uczooKT0+bWVyZ2VEZWVwKHRoaXMub3B0aW9ucyxlKX0pO3JldHVybiB0Lm5hbWU9dGhpcy5uYW1lLHQucGFyZW50PXRoaXMucGFyZW50LHR9ZXh0ZW5kKGU9e30pe2NvbnN0IHQ9bmV3IHRoaXMuY29uc3RydWN0b3Ioey4uLnRoaXMuY29uZmlnLC4uLmV9KTtyZXR1cm4gdC5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkPXQsdC5uYW1lPSJuYW1lImluIGU/ZS5uYW1lOnQucGFyZW50Lm5hbWUsdH19LEZ0PWNsYXNzIF9NYXJrIGV4dGVuZHMgQnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0ibWFyayJ9c3RhdGljIGNyZWF0ZShlPXt9KXtjb25zdCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoKTplO3JldHVybiBuZXcgX01hcmsodCl9c3RhdGljIGhhbmRsZUV4aXQoe2VkaXRvcjplLG1hcms6dH0pe2NvbnN0e3RyOm59PWUuc3RhdGUscj1lLnN0YXRlLnNlbGVjdGlvbi4kZnJvbTtpZihyLnBvcz09PXIuZW5kKCkpe2NvbnN0IG89ci5tYXJrcygpLGk9ISFvLmZpbmQoZT0+KG51bGw9PWU/dm9pZCAwOmUudHlwZS5uYW1lKT09PXQubmFtZSk7aWYoIWkpcmV0dXJuITE7Y29uc3Qgcz1vLmZpbmQoZT0+KG51bGw9PWU/dm9pZCAwOmUudHlwZS5uYW1lKT09PXQubmFtZSk7cmV0dXJuIHMmJm4ucmVtb3ZlU3RvcmVkTWFyayhzKSxuLmluc2VydFRleHQoIiAiLHIucG9zKSxlLnZpZXcuZGlzcGF0Y2gobiksITB9cmV0dXJuITF9Y29uZmlndXJlKGUpe3JldHVybiBzdXBlci5jb25maWd1cmUoZSl9ZXh0ZW5kKGUpe2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmU7cmV0dXJuIHN1cGVyLmV4dGVuZCh0KX19O3ZhciBIdD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZpbmQ9ZS5maW5kLHRoaXMuaGFuZGxlcj1lLmhhbmRsZXJ9fTtmdW5jdGlvbiBydW4yKGUpe2NvbnN0e2VkaXRvcjp0LHN0YXRlOm4sZnJvbTpyLHRvOm8scnVsZTppLHBhc3RlRXZlbnQ6cyxkcm9wRXZlbnQ6bH09ZSx7Y29tbWFuZHM6YSxjaGFpbjpjLGNhbjpkfT1uZXcgUHQoe2VkaXRvcjp0LHN0YXRlOm59KSxwPVtdO24uZG9jLm5vZGVzQmV0d2VlbihyLG8sKGUsdCk9Pnt2YXIgZixtLHksdyxiO2lmKChudWxsPT0obT1udWxsPT0oZj1lLnR5cGUpP3ZvaWQgMDpmLnNwZWMpP3ZvaWQgMDptLmNvZGUpfHwhKGUuaXNUZXh0fHxlLmlzVGV4dGJsb2NrfHxlLmlzSW5saW5lKSlyZXR1cm47Y29uc3Qgdj1udWxsIT0oYj1udWxsIT0odz1udWxsPT0oeT1lLmNvbnRlbnQpP3ZvaWQgMDp5LnNpemUpP3c6ZS5ub2RlU2l6ZSk/YjowLHg9TWF0aC5tYXgocix0KSxTPU1hdGgubWluKG8sdCt2KTtpZih4Pj1TKXJldHVybjtjb25zdCBDPSgoZSx0LG4pPT57aWYoaXNSZWdFeHAodCkpcmV0dXJuWy4uLmUubWF0Y2hBbGwodCldO2NvbnN0IHI9dChlLG4pO3JldHVybiByP3IubWFwKHQ9Pntjb25zdCBuPVt0LnRleHRdO3JldHVybiBuLmluZGV4PXQuaW5kZXgsbi5pbnB1dD1lLG4uZGF0YT10LmRhdGEsdC5yZXBsYWNlV2l0aCYmKHQudGV4dC5pbmNsdWRlcyh0LnJlcGxhY2VXaXRoKXx8Y29uc29sZS53YXJuKCdbdGlwdGFwIHdhcm5dOiAicGFzdGVSdWxlTWF0Y2gucmVwbGFjZVdpdGgiIG11c3QgYmUgcGFydCBvZiAicGFzdGVSdWxlTWF0Y2gudGV4dCIuJyksbi5wdXNoKHQucmVwbGFjZVdpdGgpKSxufSk6W119KShlLmlzVGV4dD9lLnRleHR8fCIiOmUudGV4dEJldHdlZW4oeC10LFMtdCx2b2lkIDAsIu+/vCIpLGkuZmluZCxzKTtDLmZvckVhY2goZT0+e2lmKHZvaWQgMD09PWUuaW5kZXgpcmV0dXJuO2NvbnN0IHQ9eCtlLmluZGV4KzEscj10K2VbMF0ubGVuZ3RoLG89e2Zyb206bi50ci5tYXBwaW5nLm1hcCh0KSx0bzpuLnRyLm1hcHBpbmcubWFwKHIpfSxmPWkuaGFuZGxlcih7c3RhdGU6bixyYW5nZTpvLG1hdGNoOmUsY29tbWFuZHM6YSxjaGFpbjpjLGNhbjpkLHBhc3RlRXZlbnQ6cyxkcm9wRXZlbnQ6bH0pO3AucHVzaChmKX0pfSk7cmV0dXJuIHAuZXZlcnkoZT0+bnVsbCE9PWUpfXZhciBWdD1udWxsO2Z1bmN0aW9uIHBhc3RlUnVsZXNQbHVnaW4oZSl7Y29uc3R7ZWRpdG9yOnQscnVsZXM6bn09ZTtsZXQgcixvPW51bGwsaT0hMSxzPSExLGw9InVuZGVmaW5lZCIhPXR5cGVvZiBDbGlwYm9hcmRFdmVudD9uZXcgQ2xpcGJvYXJkRXZlbnQoInBhc3RlIik6bnVsbDt0cnl7cj0idW5kZWZpbmVkIiE9dHlwZW9mIERyYWdFdmVudD9uZXcgRHJhZ0V2ZW50KCJkcm9wIik6bnVsbH1jYXRjaHtyPW51bGx9Y29uc3QgcHJvY2Vzc0V2ZW50PSh7c3RhdGU6ZSxmcm9tOm4sdG86byxydWxlOmkscGFzdGVFdnQ6c30pPT57Y29uc3QgYT1lLnRyLGM9Y3JlYXRlQ2hhaW5hYmxlU3RhdGUoe3N0YXRlOmUsdHJhbnNhY3Rpb246YX0pO2lmKHJ1bjIoe2VkaXRvcjp0LHN0YXRlOmMsZnJvbTpNYXRoLm1heChuLTEsMCksdG86by5iLTEscnVsZTppLHBhc3RlRXZlbnQ6cyxkcm9wRXZlbnQ6cn0pJiZhLnN0ZXBzLmxlbmd0aCl7dHJ5e3I9InVuZGVmaW5lZCIhPXR5cGVvZiBEcmFnRXZlbnQ/bmV3IERyYWdFdmVudCgiZHJvcCIpOm51bGx9Y2F0Y2h7cj1udWxsfXJldHVybiBsPSJ1bmRlZmluZWQiIT10eXBlb2YgQ2xpcGJvYXJkRXZlbnQ/bmV3IENsaXBib2FyZEV2ZW50KCJwYXN0ZSIpOm51bGwsYX19O3JldHVybiBuLm1hcChlPT5uZXcgUGx1Z2luKHt2aWV3KGUpe2NvbnN0IGhhbmRsZURyYWdzdGFydD1uPT57dmFyIHI7bz0obnVsbD09KHI9ZS5kb20ucGFyZW50RWxlbWVudCk/dm9pZCAwOnIuY29udGFpbnMobi50YXJnZXQpKT9lLmRvbS5wYXJlbnRFbGVtZW50Om51bGwsbyYmKFZ0PXQpfSxoYW5kbGVEcmFnZW5kPSgpPT57VnQmJihWdD1udWxsKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLGhhbmRsZURyYWdzdGFydCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbmQiLGhhbmRsZURyYWdlbmQpLHtkZXN0cm95KCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsaGFuZGxlRHJhZ3N0YXJ0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsaGFuZGxlRHJhZ2VuZCl9fX0scHJvcHM6e2hhbmRsZURPTUV2ZW50czp7ZHJvcDooZSx0KT0+e2lmKHM9bz09PWUuZG9tLnBhcmVudEVsZW1lbnQscj10LCFzKXtjb25zdCBlPVZ0OyhudWxsPT1lP3ZvaWQgMDplLmlzRWRpdGFibGUpJiZzZXRUaW1lb3V0KCgpPT57Y29uc3QgdD1lLnN0YXRlLnNlbGVjdGlvbjt0JiZlLmNvbW1hbmRzLmRlbGV0ZVJhbmdlKHtmcm9tOnQuZnJvbSx0bzp0LnRvfSl9LDEwKX1yZXR1cm4hMX0scGFzdGU6KGUsdCk9Pnt2YXIgbjtjb25zdCByPW51bGw9PShuPXQuY2xpcGJvYXJkRGF0YSk/dm9pZCAwOm4uZ2V0RGF0YSgidGV4dC9odG1sIik7cmV0dXJuIGw9dCxpPSEhKG51bGw9PXI/dm9pZCAwOnIuaW5jbHVkZXMoImRhdGEtcG0tc2xpY2UiKSksITF9fX0sYXBwZW5kVHJhbnNhY3Rpb246KHQsbixyKT0+e2NvbnN0IG89dFswXSxhPSJwYXN0ZSI9PT1vLmdldE1ldGEoInVpRXZlbnQiKSYmIWksYz0iZHJvcCI9PT1vLmdldE1ldGEoInVpRXZlbnQiKSYmIXMsZD1vLmdldE1ldGEoImFwcGx5UGFzdGVSdWxlcyIpLHA9ISFkO2lmKCFhJiYhYyYmIXApcmV0dXJuO2lmKHApe2xldHt0ZXh0OnR9PWQ7InN0cmluZyI9PXR5cGVvZiB0fHwodD1nZXRIVE1MRnJvbUZyYWdtZW50KEZyYWdtZW50LmZyb20odCksci5zY2hlbWEpKTtjb25zdHtmcm9tOm59PWQsbz1uK3QubGVuZ3RoLGk9KGU9Pnt2YXIgdDtjb25zdCBuPW5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiLHtjbGlwYm9hcmREYXRhOm5ldyBEYXRhVHJhbnNmZXJ9KTtyZXR1cm4gbnVsbD09KHQ9bi5jbGlwYm9hcmREYXRhKXx8dC5zZXREYXRhKCJ0ZXh0L2h0bWwiLGUpLG59KSh0KTtyZXR1cm4gcHJvY2Vzc0V2ZW50KHtydWxlOmUsc3RhdGU6cixmcm9tOm4sdG86e2I6b30scGFzdGVFdnQ6aX0pfWNvbnN0IGY9bi5kb2MuY29udGVudC5maW5kRGlmZlN0YXJ0KHIuZG9jLmNvbnRlbnQpLG09bi5kb2MuY29udGVudC5maW5kRGlmZkVuZChyLmRvYy5jb250ZW50KTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGYmJm0mJmYhPT1tLmI/cHJvY2Vzc0V2ZW50KHtydWxlOmUsc3RhdGU6cixmcm9tOmYsdG86bSxwYXN0ZUV2dDpsfSk6dm9pZCAwfX0pKX12YXIgX3Q9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnNwbGl0dGFibGVNYXJrcz1bXSx0aGlzLmVkaXRvcj10LHRoaXMuYmFzZUV4dGVuc2lvbnM9ZSx0aGlzLmV4dGVuc2lvbnM9cmVzb2x2ZUV4dGVuc2lvbnMoZSksdGhpcy5zY2hlbWE9ZnVuY3Rpb24oZSx0KXt2YXIgbjtjb25zdCByPWdldEF0dHJpYnV0ZXNGcm9tRXh0ZW5zaW9ucyhlKSx7bm9kZUV4dGVuc2lvbnM6byxtYXJrRXh0ZW5zaW9uczppfT1zcGxpdEV4dGVuc2lvbnMoZSkscz1udWxsPT0obj1vLmZpbmQoZT0+Z2V0RXh0ZW5zaW9uRmllbGQoZSwidG9wTm9kZSIpKSk/dm9pZCAwOm4ubmFtZSxsPU9iamVjdC5mcm9tRW50cmllcyhvLm1hcChuPT57Y29uc3Qgbz1yLmZpbHRlcihlPT5lLnR5cGU9PT1uLm5hbWUpLGk9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6bi5zdG9yYWdlLGVkaXRvcjp0fSxzPWNsZWFuVXBTY2hlbWFJdGVtKHsuLi5lLnJlZHVjZSgoZSx0KT0+e2NvbnN0IHI9Z2V0RXh0ZW5zaW9uRmllbGQodCwiZXh0ZW5kTm9kZVNjaGVtYSIsaSk7cmV0dXJuey4uLmUsLi4ucj9yKG4pOnt9fX0se30pLGNvbnRlbnQ6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImNvbnRlbnQiLGkpKSxtYXJrczpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwibWFya3MiLGkpKSxncm91cDpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiZ3JvdXAiLGkpKSxpbmxpbmU6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImlubGluZSIsaSkpLGF0b206Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImF0b20iLGkpKSxzZWxlY3RhYmxlOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJzZWxlY3RhYmxlIixpKSksZHJhZ2dhYmxlOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJkcmFnZ2FibGUiLGkpKSxjb2RlOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJjb2RlIixpKSksd2hpdGVzcGFjZTpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwid2hpdGVzcGFjZSIsaSkpLGxpbmVicmVha1JlcGxhY2VtZW50OmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJsaW5lYnJlYWtSZXBsYWNlbWVudCIsaSkpLGRlZmluaW5nOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJkZWZpbmluZyIsaSkpLGlzb2xhdGluZzpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiaXNvbGF0aW5nIixpKSksYXR0cnM6T2JqZWN0LmZyb21FbnRyaWVzKG8ubWFwKGJ1aWxkQXR0cmlidXRlU3BlYykpfSksbD1jYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwicGFyc2VIVE1MIixpKSk7bCYmKHMucGFyc2VET009bC5tYXAoZT0+aW5qZWN0RXh0ZW5zaW9uQXR0cmlidXRlc1RvUGFyc2VSdWxlKGUsbykpKTtjb25zdCBhPWdldEV4dGVuc2lvbkZpZWxkKG4sInJlbmRlckhUTUwiLGkpO2EmJihzLnRvRE9NPWU9PmEoe25vZGU6ZSxIVE1MQXR0cmlidXRlczpnZXRSZW5kZXJlZEF0dHJpYnV0ZXMoZSxvKX0pKTtjb25zdCBjPWdldEV4dGVuc2lvbkZpZWxkKG4sInJlbmRlclRleHQiLGkpO3JldHVybiBjJiYocy50b1RleHQ9YyksW24ubmFtZSxzXX0pKSxhPU9iamVjdC5mcm9tRW50cmllcyhpLm1hcChuPT57Y29uc3Qgbz1yLmZpbHRlcihlPT5lLnR5cGU9PT1uLm5hbWUpLGk9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6bi5zdG9yYWdlLGVkaXRvcjp0fSxzPWNsZWFuVXBTY2hlbWFJdGVtKHsuLi5lLnJlZHVjZSgoZSx0KT0+e2NvbnN0IHI9Z2V0RXh0ZW5zaW9uRmllbGQodCwiZXh0ZW5kTWFya1NjaGVtYSIsaSk7cmV0dXJuey4uLmUsLi4ucj9yKG4pOnt9fX0se30pLGluY2x1c2l2ZTpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiaW5jbHVzaXZlIixpKSksZXhjbHVkZXM6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImV4Y2x1ZGVzIixpKSksZ3JvdXA6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImdyb3VwIixpKSksc3Bhbm5pbmc6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sInNwYW5uaW5nIixpKSksY29kZTpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiY29kZSIsaSkpLGF0dHJzOk9iamVjdC5mcm9tRW50cmllcyhvLm1hcChidWlsZEF0dHJpYnV0ZVNwZWMpKX0pLGw9Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sInBhcnNlSFRNTCIsaSkpO2wmJihzLnBhcnNlRE9NPWwubWFwKGU9PmluamVjdEV4dGVuc2lvbkF0dHJpYnV0ZXNUb1BhcnNlUnVsZShlLG8pKSk7Y29uc3QgYT1nZXRFeHRlbnNpb25GaWVsZChuLCJyZW5kZXJIVE1MIixpKTtyZXR1cm4gYSYmKHMudG9ET009ZT0+YSh7bWFyazplLEhUTUxBdHRyaWJ1dGVzOmdldFJlbmRlcmVkQXR0cmlidXRlcyhlLG8pfSkpLFtuLm5hbWUsc119KSk7cmV0dXJuIG5ldyBTY2hlbWEoe3RvcE5vZGU6cyxub2RlczpsLG1hcmtzOmF9KX0odGhpcy5leHRlbnNpb25zLHQpLHRoaXMuc2V0dXBFeHRlbnNpb25zKCl9Z2V0IGNvbW1hbmRzKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5yZWR1Y2UoKGUsdCk9Pntjb25zdCBuPWdldEV4dGVuc2lvbkZpZWxkKHQsImFkZENvbW1hbmRzIix7bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOnRoaXMuZWRpdG9yLHR5cGU6Z2V0U2NoZW1hVHlwZUJ5TmFtZSh0Lm5hbWUsdGhpcy5zY2hlbWEpfSk7cmV0dXJuIG4/ey4uLmUsLi4ubigpfTplfSx7fSl9Z2V0IHBsdWdpbnMoKXtjb25zdHtlZGl0b3I6ZX09dGhpcyx0PXNvcnRFeHRlbnNpb25zKFsuLi50aGlzLmV4dGVuc2lvbnNdLnJldmVyc2UoKSkuZmxhdE1hcCh0PT57Y29uc3Qgbj17bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOmUsdHlwZTpnZXRTY2hlbWFUeXBlQnlOYW1lKHQubmFtZSx0aGlzLnNjaGVtYSl9LHI9W10sbz1nZXRFeHRlbnNpb25GaWVsZCh0LCJhZGRLZXlib2FyZFNob3J0Y3V0cyIsbik7bGV0IGk9e307aWYoIm1hcmsiPT09dC50eXBlJiZnZXRFeHRlbnNpb25GaWVsZCh0LCJleGl0YWJsZSIsbikmJihpLkFycm93UmlnaHQ9KCk9PkZ0LmhhbmRsZUV4aXQoe2VkaXRvcjplLG1hcms6dH0pKSxvKXtjb25zdCB0PU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhvKCkpLm1hcCgoW3Qsbl0pPT5bdCwoKT0+bih7ZWRpdG9yOmV9KV0pKTtpPXsuLi5pLC4uLnR9fWNvbnN0IHM9bmV3IFBsdWdpbih7cHJvcHM6e2hhbmRsZUtleURvd246a2V5ZG93bkhhbmRsZXIoaSl9fSk7ci5wdXNoKHMpO2NvbnN0IGw9Z2V0RXh0ZW5zaW9uRmllbGQodCwiYWRkSW5wdXRSdWxlcyIsbik7aWYoaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQodCxlLm9wdGlvbnMuZW5hYmxlSW5wdXRSdWxlcykmJmwpe2NvbnN0IHQ9bCgpO2lmKHQmJnQubGVuZ3RoKXtjb25zdCBuPWZ1bmN0aW9uKGUpe2NvbnN0e2VkaXRvcjp0LHJ1bGVzOm59PWUscj1uZXcgUGx1Z2luKHtzdGF0ZTp7aW5pdDooKT0+bnVsbCxhcHBseShlLG8saSl7Y29uc3Qgcz1lLmdldE1ldGEocik7aWYocylyZXR1cm4gcztjb25zdCBsPWUuZ2V0TWV0YSgiYXBwbHlJbnB1dFJ1bGVzIik7cmV0dXJuISFsJiZzZXRUaW1lb3V0KCgpPT57bGV0e3RleHQ6ZX09bDsic3RyaW5nIj09dHlwZW9mIGV8fChlPWdldEhUTUxGcm9tRnJhZ21lbnQoRnJhZ21lbnQuZnJvbShlKSxpLnNjaGVtYSkpO2NvbnN0e2Zyb206b309bCxzPW8rZS5sZW5ndGg7cnVuJDIoe2VkaXRvcjp0LGZyb206byx0bzpzLHRleHQ6ZSxydWxlczpuLHBsdWdpbjpyfSl9KSxlLnNlbGVjdGlvblNldHx8ZS5kb2NDaGFuZ2VkP251bGw6b319LHByb3BzOntoYW5kbGVUZXh0SW5wdXQ6KGUsbyxpLHMpPT5ydW4kMih7ZWRpdG9yOnQsZnJvbTpvLHRvOmksdGV4dDpzLHJ1bGVzOm4scGx1Z2luOnJ9KSxoYW5kbGVET01FdmVudHM6e2NvbXBvc2l0aW9uZW5kOmU9PihzZXRUaW1lb3V0KCgpPT57Y29uc3R7JGN1cnNvcjpvfT1lLnN0YXRlLnNlbGVjdGlvbjtvJiZydW4kMih7ZWRpdG9yOnQsZnJvbTpvLnBvcyx0bzpvLnBvcyx0ZXh0OiIiLHJ1bGVzOm4scGx1Z2luOnJ9KX0pLCExKX0saGFuZGxlS2V5RG93bihlLG8pe2lmKCJFbnRlciIhPT1vLmtleSlyZXR1cm4hMTtjb25zdHskY3Vyc29yOml9PWUuc3RhdGUuc2VsZWN0aW9uO3JldHVybiEhaSYmcnVuJDIoe2VkaXRvcjp0LGZyb206aS5wb3MsdG86aS5wb3MsdGV4dDoiXG4iLHJ1bGVzOm4scGx1Z2luOnJ9KX19LGlzSW5wdXRSdWxlczohMH0pO3JldHVybiByfSh7ZWRpdG9yOmUscnVsZXM6dH0pLG89QXJyYXkuaXNBcnJheShuKT9uOltuXTtyLnB1c2goLi4ubyl9fWNvbnN0IGE9Z2V0RXh0ZW5zaW9uRmllbGQodCwiYWRkUGFzdGVSdWxlcyIsbik7aWYoaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQodCxlLm9wdGlvbnMuZW5hYmxlUGFzdGVSdWxlcykmJmEpe2NvbnN0IHQ9YSgpO2lmKHQmJnQubGVuZ3RoKXtjb25zdCBuPXBhc3RlUnVsZXNQbHVnaW4oe2VkaXRvcjplLHJ1bGVzOnR9KTtyLnB1c2goLi4ubil9fWNvbnN0IGM9Z2V0RXh0ZW5zaW9uRmllbGQodCwiYWRkUHJvc2VNaXJyb3JQbHVnaW5zIixuKTtpZihjKXtjb25zdCBlPWMoKTtyLnB1c2goLi4uZSl9cmV0dXJuIHJ9KTtyZXR1cm4gdH1nZXQgYXR0cmlidXRlcygpe3JldHVybiBnZXRBdHRyaWJ1dGVzRnJvbUV4dGVuc2lvbnModGhpcy5leHRlbnNpb25zKX1nZXQgbm9kZVZpZXdzKCl7Y29uc3R7ZWRpdG9yOmV9PXRoaXMse25vZGVFeHRlbnNpb25zOnR9PXNwbGl0RXh0ZW5zaW9ucyh0aGlzLmV4dGVuc2lvbnMpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXModC5maWx0ZXIoZT0+ISFnZXRFeHRlbnNpb25GaWVsZChlLCJhZGROb2RlVmlldyIpKS5tYXAodD0+e2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzLmZpbHRlcihlPT5lLnR5cGU9PT10Lm5hbWUpLHI9e25hbWU6dC5uYW1lLG9wdGlvbnM6dC5vcHRpb25zLHN0b3JhZ2U6dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVt0Lm5hbWVdLGVkaXRvcjplLHR5cGU6Z2V0Tm9kZVR5cGUodC5uYW1lLHRoaXMuc2NoZW1hKX0sbz1nZXRFeHRlbnNpb25GaWVsZCh0LCJhZGROb2RlVmlldyIscik7aWYoIW8pcmV0dXJuW107Y29uc3QgaT1vKCk7aWYoIWkpcmV0dXJuW107cmV0dXJuW3QubmFtZSwocixvLHMsbCxhKT0+e2NvbnN0IGM9Z2V0UmVuZGVyZWRBdHRyaWJ1dGVzKHIsbik7cmV0dXJuIGkoe25vZGU6cix2aWV3Om8sZ2V0UG9zOnMsZGVjb3JhdGlvbnM6bCxpbm5lckRlY29yYXRpb25zOmEsZWRpdG9yOmUsZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6Y30pfV19KSl9ZGlzcGF0Y2hUcmFuc2FjdGlvbihlKXtjb25zdHtlZGl0b3I6dH09dGhpcztyZXR1cm4gc29ydEV4dGVuc2lvbnMoWy4uLnRoaXMuZXh0ZW5zaW9uc10ucmV2ZXJzZSgpKS5yZWR1Y2VSaWdodCgoZSxuKT0+e2NvbnN0IHI9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVtuLm5hbWVdLGVkaXRvcjp0LHR5cGU6Z2V0U2NoZW1hVHlwZUJ5TmFtZShuLm5hbWUsdGhpcy5zY2hlbWEpfSxvPWdldEV4dGVuc2lvbkZpZWxkKG4sImRpc3BhdGNoVHJhbnNhY3Rpb24iLHIpO3JldHVybiBvP3Q9PntvLmNhbGwocix7dHJhbnNhY3Rpb246dCxuZXh0OmV9KX06ZX0sZSl9dHJhbnNmb3JtUGFzdGVkSFRNTChlKXtjb25zdHtlZGl0b3I6dH09dGhpcztyZXR1cm4gc29ydEV4dGVuc2lvbnMoWy4uLnRoaXMuZXh0ZW5zaW9uc10pLnJlZHVjZSgoZSxuKT0+e2NvbnN0IHI9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVtuLm5hbWVdLGVkaXRvcjp0LHR5cGU6Z2V0U2NoZW1hVHlwZUJ5TmFtZShuLm5hbWUsdGhpcy5zY2hlbWEpfSxvPWdldEV4dGVuc2lvbkZpZWxkKG4sInRyYW5zZm9ybVBhc3RlZEhUTUwiLHIpO3JldHVybiBvPyh0LG4pPT57Y29uc3QgaT1lKHQsbik7cmV0dXJuIG8uY2FsbChyLGkpfTplfSxlfHwoZT0+ZSkpfWdldCBtYXJrVmlld3MoKXtjb25zdHtlZGl0b3I6ZX09dGhpcyx7bWFya0V4dGVuc2lvbnM6dH09c3BsaXRFeHRlbnNpb25zKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh0LmZpbHRlcihlPT4hIWdldEV4dGVuc2lvbkZpZWxkKGUsImFkZE1hcmtWaWV3IikpLm1hcCh0PT57Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMuZmlsdGVyKGU9PmUudHlwZT09PXQubmFtZSkscj17bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOmUsdHlwZTpnZXRNYXJrVHlwZSh0Lm5hbWUsdGhpcy5zY2hlbWEpfSxvPWdldEV4dGVuc2lvbkZpZWxkKHQsImFkZE1hcmtWaWV3IixyKTtpZighbylyZXR1cm5bXTtyZXR1cm5bdC5uYW1lLChyLGkscyk9Pntjb25zdCBsPWdldFJlbmRlcmVkQXR0cmlidXRlcyhyLG4pO3JldHVybiBvKCkoe21hcms6cix2aWV3OmksaW5saW5lOnMsZWRpdG9yOmUsZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6bCx1cGRhdGVBdHRyaWJ1dGVzOnQ9PnshZnVuY3Rpb24oZSx0LG49e30pe2NvbnN0e3N0YXRlOnJ9PXQse2RvYzpvLHRyOml9PXIscz1lO28uZGVzY2VuZGFudHMoKHQscik9Pntjb25zdCBvPWkubWFwcGluZy5tYXAociksbD1pLm1hcHBpbmcubWFwKHIpK3Qubm9kZVNpemU7bGV0IGE9bnVsbDtpZih0Lm1hcmtzLmZvckVhY2goZT0+e2lmKGUhPT1zKXJldHVybiExO2E9ZX0pLCFhKXJldHVybjtsZXQgYz0hMTtpZihPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGU9PntuW2VdIT09YS5hdHRyc1tlXSYmKGM9ITApfSksYyl7Y29uc3QgdD1lLnR5cGUuY3JlYXRlKHsuLi5lLmF0dHJzLC4uLm59KTtpLnJlbW92ZU1hcmsobyxsLGUudHlwZSksaS5hZGRNYXJrKG8sbCx0KX19KSxpLmRvY0NoYW5nZWQmJnQudmlldy5kaXNwYXRjaChpKX0ocixlLHQpfX0pfV19KSl9c2V0dXBFeHRlbnNpb25zKCl7Y29uc3QgZT10aGlzLmV4dGVuc2lvbnM7dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZT1PYmplY3QuZnJvbUVudHJpZXMoZS5tYXAoZT0+W2UubmFtZSxlLnN0b3JhZ2VdKSksZS5mb3JFYWNoKGU9Pnt2YXIgdDtjb25zdCBuPXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbZS5uYW1lXSxlZGl0b3I6dGhpcy5lZGl0b3IsdHlwZTpnZXRTY2hlbWFUeXBlQnlOYW1lKGUubmFtZSx0aGlzLnNjaGVtYSl9O2lmKCJtYXJrIj09PWUudHlwZSl7KG51bGw9PSh0PWNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChlLCJrZWVwT25TcGxpdCIsbikpKXx8dCkmJnRoaXMuc3BsaXR0YWJsZU1hcmtzLnB1c2goZS5uYW1lKX1jb25zdCByPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uQmVmb3JlQ3JlYXRlIixuKSxvPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uQ3JlYXRlIixuKSxpPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uVXBkYXRlIixuKSxzPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uU2VsZWN0aW9uVXBkYXRlIixuKSxsPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uVHJhbnNhY3Rpb24iLG4pLGE9Z2V0RXh0ZW5zaW9uRmllbGQoZSwib25Gb2N1cyIsbiksYz1nZXRFeHRlbnNpb25GaWVsZChlLCJvbkJsdXIiLG4pLGQ9Z2V0RXh0ZW5zaW9uRmllbGQoZSwib25EZXN0cm95IixuKTtyJiZ0aGlzLmVkaXRvci5vbigiYmVmb3JlQ3JlYXRlIixyKSxvJiZ0aGlzLmVkaXRvci5vbigiY3JlYXRlIixvKSxpJiZ0aGlzLmVkaXRvci5vbigidXBkYXRlIixpKSxzJiZ0aGlzLmVkaXRvci5vbigic2VsZWN0aW9uVXBkYXRlIixzKSxsJiZ0aGlzLmVkaXRvci5vbigidHJhbnNhY3Rpb24iLGwpLGEmJnRoaXMuZWRpdG9yLm9uKCJmb2N1cyIsYSksYyYmdGhpcy5lZGl0b3Iub24oImJsdXIiLGMpLGQmJnRoaXMuZWRpdG9yLm9uKCJkZXN0cm95IixkKX0pfX07X3QucmVzb2x2ZT1yZXNvbHZlRXh0ZW5zaW9ucyxfdC5zb3J0PXNvcnRFeHRlbnNpb25zLF90LmZsYXR0ZW49ZmxhdHRlbkV4dGVuc2lvbnM7X19leHBvcnQkMSh7fSx7Q2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXI6KCk9PnF0LENvbW1hbmRzOigpPT5VdCxEZWxldGU6KCk9Pld0LERyb3A6KCk9Pkt0LEVkaXRhYmxlOigpPT5KdCxGb2N1c0V2ZW50czooKT0+WHQsS2V5bWFwOigpPT5RdCxQYXN0ZTooKT0+WnQsVGFiaW5kZXg6KCk9Pll0LFRleHREaXJlY3Rpb246KCk9PmVuLGZvY3VzRXZlbnRzUGx1Z2luS2V5OigpPT5HdH0pO3ZhciBqdD1jbGFzcyBfRXh0ZW5zaW9uIGV4dGVuZHMgQnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0iZXh0ZW5zaW9uIn1zdGF0aWMgY3JlYXRlKGU9e30pe2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmU7cmV0dXJuIG5ldyBfRXh0ZW5zaW9uKHQpfWNvbmZpZ3VyZShlKXtyZXR1cm4gc3VwZXIuY29uZmlndXJlKGUpfWV4dGVuZChlKXtjb25zdCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoKTplO3JldHVybiBzdXBlci5leHRlbmQodCl9fSxxdD1qdC5jcmVhdGUoe25hbWU6ImNsaXBib2FyZFRleHRTZXJpYWxpemVyIixhZGRPcHRpb25zOigpPT4oe2Jsb2NrU2VwYXJhdG9yOnZvaWQgMH0pLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgiY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXIiKSxwcm9wczp7Y2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXI6KCk9Pntjb25zdHtlZGl0b3I6ZX09dGhpcyx7c3RhdGU6dCxzY2hlbWE6bn09ZSx7ZG9jOnIsc2VsZWN0aW9uOm99PXQse3JhbmdlczppfT1vLHM9TWF0aC5taW4oLi4uaS5tYXAoZT0+ZS4kZnJvbS5wb3MpKSxsPU1hdGgubWF4KC4uLmkubWFwKGU9PmUuJHRvLnBvcykpLGE9Z2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYShuKTtyZXR1cm4gZ2V0VGV4dEJldHdlZW4ocix7ZnJvbTpzLHRvOmx9LHsuLi52b2lkIDAhPT10aGlzLm9wdGlvbnMuYmxvY2tTZXBhcmF0b3I/e2Jsb2NrU2VwYXJhdG9yOnRoaXMub3B0aW9ucy5ibG9ja1NlcGFyYXRvcn06e30sdGV4dFNlcmlhbGl6ZXJzOmF9KX19fSldfX0pLFV0PWp0LmNyZWF0ZSh7bmFtZToiY29tbWFuZHMiLGFkZENvbW1hbmRzOigpPT4oey4uLkl0fSl9KSxXdD1qdC5jcmVhdGUoe25hbWU6ImRlbGV0ZSIsb25VcGRhdGUoe3RyYW5zYWN0aW9uOmUsYXBwZW5kZWRUcmFuc2FjdGlvbnM6dH0pe3ZhciBuLHIsbztjb25zdCBjYWxsYmFjaz0oKT0+e3ZhciBuLHIsbyxpO2lmKG51bGwhPShpPW51bGw9PShvPW51bGw9PShyPW51bGw9PShuPXRoaXMuZWRpdG9yLm9wdGlvbnMuY29yZUV4dGVuc2lvbk9wdGlvbnMpP3ZvaWQgMDpuLmRlbGV0ZSk/dm9pZCAwOnIuZmlsdGVyVHJhbnNhY3Rpb24pP3ZvaWQgMDpvLmNhbGwocixlKSk/aTplLmdldE1ldGEoInktc3luYyQiKSlyZXR1cm47Y29uc3Qgcz1jb21iaW5lVHJhbnNhY3Rpb25TdGVwcyhlLmJlZm9yZSxbZSwuLi50XSk7Z2V0Q2hhbmdlZFJhbmdlcyhzKS5mb3JFYWNoKHQ9PntzLm1hcHBpbmcubWFwUmVzdWx0KHQub2xkUmFuZ2UuZnJvbSkuZGVsZXRlZEFmdGVyJiZzLm1hcHBpbmcubWFwUmVzdWx0KHQub2xkUmFuZ2UudG8pLmRlbGV0ZWRCZWZvcmUmJnMuYmVmb3JlLm5vZGVzQmV0d2Vlbih0Lm9sZFJhbmdlLmZyb20sdC5vbGRSYW5nZS50bywobixyKT0+e2NvbnN0IG89cituLm5vZGVTaXplLTIsaT10Lm9sZFJhbmdlLmZyb208PXImJm88PXQub2xkUmFuZ2UudG87dGhpcy5lZGl0b3IuZW1pdCgiZGVsZXRlIix7dHlwZToibm9kZSIsbm9kZTpuLGZyb206cix0bzpvLG5ld0Zyb206cy5tYXBwaW5nLm1hcChyKSxuZXdUbzpzLm1hcHBpbmcubWFwKG8pLGRlbGV0ZWRSYW5nZTp0Lm9sZFJhbmdlLG5ld1JhbmdlOnQubmV3UmFuZ2UscGFydGlhbDohaSxlZGl0b3I6dGhpcy5lZGl0b3IsdHJhbnNhY3Rpb246ZSxjb21iaW5lZFRyYW5zZm9ybTpzfSl9KX0pO2NvbnN0IGw9cy5tYXBwaW5nO3Muc3RlcHMuZm9yRWFjaCgodCxuKT0+e3ZhciByLG87aWYodCBpbnN0YW5jZW9mIFJlbW92ZU1hcmtTdGVwKXtjb25zdCBpPWwuc2xpY2UobikubWFwKHQuZnJvbSwtMSksYT1sLnNsaWNlKG4pLm1hcCh0LnRvKSxjPWwuaW52ZXJ0KCkubWFwKGksLTEpLGQ9bC5pbnZlcnQoKS5tYXAoYSkscD1pPjAmJihudWxsPT0ocj1zLmRvYy5ub2RlQXQoaS0xKSk/dm9pZCAwOnIubWFya3Muc29tZShlPT5lLmVxKHQubWFyaykpKSxmPW51bGw9PShvPXMuZG9jLm5vZGVBdChhKSk/dm9pZCAwOm8ubWFya3Muc29tZShlPT5lLmVxKHQubWFyaykpO3RoaXMuZWRpdG9yLmVtaXQoImRlbGV0ZSIse3R5cGU6Im1hcmsiLG1hcms6dC5tYXJrLGZyb206dC5mcm9tLHRvOnQudG8sZGVsZXRlZFJhbmdlOntmcm9tOmMsdG86ZH0sbmV3UmFuZ2U6e2Zyb206aSx0bzphfSxwYXJ0aWFsOkJvb2xlYW4oZnx8cCksZWRpdG9yOnRoaXMuZWRpdG9yLHRyYW5zYWN0aW9uOmUsY29tYmluZWRUcmFuc2Zvcm06c30pfX0pfTtudWxsPT0obz1udWxsPT0ocj1udWxsPT0obj10aGlzLmVkaXRvci5vcHRpb25zLmNvcmVFeHRlbnNpb25PcHRpb25zKT92b2lkIDA6bi5kZWxldGUpP3ZvaWQgMDpyLmFzeW5jKXx8bz9zZXRUaW1lb3V0KGNhbGxiYWNrLDApOmNhbGxiYWNrKCl9fSksS3Q9anQuY3JlYXRlKHtuYW1lOiJkcm9wIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoInRpcHRhcERyb3AiKSxwcm9wczp7aGFuZGxlRHJvcDooZSx0LG4scik9Pnt0aGlzLmVkaXRvci5lbWl0KCJkcm9wIix7ZWRpdG9yOnRoaXMuZWRpdG9yLGV2ZW50OnQsc2xpY2U6bixtb3ZlZDpyfSl9fX0pXX19KSxKdD1qdC5jcmVhdGUoe25hbWU6ImVkaXRhYmxlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImVkaXRhYmxlIikscHJvcHM6e2VkaXRhYmxlOigpPT50aGlzLmVkaXRvci5vcHRpb25zLmVkaXRhYmxlfX0pXX19KSxHdD1uZXcgUGx1Z2luS2V5KCJmb2N1c0V2ZW50cyIpLFh0PWp0LmNyZWF0ZSh7bmFtZToiZm9jdXNFdmVudHMiLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe2NvbnN0e2VkaXRvcjplfT10aGlzO3JldHVybltuZXcgUGx1Z2luKHtrZXk6R3QscHJvcHM6e2hhbmRsZURPTUV2ZW50czp7Zm9jdXM6KHQsbik9PntlLmlzRm9jdXNlZD0hMDtjb25zdCByPWUuc3RhdGUudHIuc2V0TWV0YSgiZm9jdXMiLHtldmVudDpufSkuc2V0TWV0YSgiYWRkVG9IaXN0b3J5IiwhMSk7cmV0dXJuIHQuZGlzcGF0Y2gociksITF9LGJsdXI6KHQsbik9PntlLmlzRm9jdXNlZD0hMTtjb25zdCByPWUuc3RhdGUudHIuc2V0TWV0YSgiYmx1ciIse2V2ZW50Om59KS5zZXRNZXRhKCJhZGRUb0hpc3RvcnkiLCExKTtyZXR1cm4gdC5kaXNwYXRjaChyKSwhMX19fX0pXX19KSxRdD1qdC5jcmVhdGUoe25hbWU6ImtleW1hcCIsYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtjb25zdCBoYW5kbGVCYWNrc3BhY2U9KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7Y29tbWFuZHM6ZX0pPT5bKCk9PmUudW5kb0lucHV0UnVsZSgpLCgpPT5lLmNvbW1hbmQoKHt0cjp0fSk9Pntjb25zdHtzZWxlY3Rpb246bixkb2M6cn09dCx7ZW1wdHk6bywkYW5jaG9yOml9PW4se3BvczpzLHBhcmVudDpsfT1pLGE9aS5wYXJlbnQuaXNUZXh0YmxvY2smJnM+MD90LmRvYy5yZXNvbHZlKHMtMSk6aSxjPWEucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcsZD1pLnBvcy1pLnBhcmVudE9mZnNldCxwPWMmJjE9PT1hLnBhcmVudC5jaGlsZENvdW50P2Q9PT1pLnBvczpTZWxlY3Rpb24uYXRTdGFydChyKS5mcm9tPT09cztyZXR1cm4hKCFvfHwhbC50eXBlLmlzVGV4dGJsb2NrfHxsLnRleHRDb250ZW50Lmxlbmd0aHx8IXB8fHAmJiJwYXJhZ3JhcGgiPT09aS5wYXJlbnQudHlwZS5uYW1lKSYmZS5jbGVhck5vZGVzKCl9KSwoKT0+ZS5kZWxldGVTZWxlY3Rpb24oKSwoKT0+ZS5qb2luQmFja3dhcmQoKSwoKT0+ZS5zZWxlY3ROb2RlQmFja3dhcmQoKV0pLGhhbmRsZURlbGV0ZT0oKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuZmlyc3QoKHtjb21tYW5kczplfSk9PlsoKT0+ZS5kZWxldGVTZWxlY3Rpb24oKSwoKT0+ZS5kZWxldGVDdXJyZW50Tm9kZSgpLCgpPT5lLmpvaW5Gb3J3YXJkKCksKCk9PmUuc2VsZWN0Tm9kZUZvcndhcmQoKV0pLGU9e0VudGVyOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5maXJzdCgoe2NvbW1hbmRzOmV9KT0+WygpPT5lLm5ld2xpbmVJbkNvZGUoKSwoKT0+ZS5jcmVhdGVQYXJhZ3JhcGhOZWFyKCksKCk9PmUubGlmdEVtcHR5QmxvY2soKSwoKT0+ZS5zcGxpdEJsb2NrKCldKSwiTW9kLUVudGVyIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuZXhpdENvZGUoKSxCYWNrc3BhY2U6aGFuZGxlQmFja3NwYWNlLCJNb2QtQmFja3NwYWNlIjpoYW5kbGVCYWNrc3BhY2UsIlNoaWZ0LUJhY2tzcGFjZSI6aGFuZGxlQmFja3NwYWNlLERlbGV0ZTpoYW5kbGVEZWxldGUsIk1vZC1EZWxldGUiOmhhbmRsZURlbGV0ZSwiTW9kLWEiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZWxlY3RBbGwoKX0sdD17Li4uZX0sbj17Li4uZSwiQ3RybC1oIjpoYW5kbGVCYWNrc3BhY2UsIkFsdC1CYWNrc3BhY2UiOmhhbmRsZUJhY2tzcGFjZSwiQ3RybC1kIjpoYW5kbGVEZWxldGUsIkN0cmwtQWx0LUJhY2tzcGFjZSI6aGFuZGxlRGVsZXRlLCJBbHQtRGVsZXRlIjpoYW5kbGVEZWxldGUsIkFsdC1kIjpoYW5kbGVEZWxldGUsIkN0cmwtYSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja1N0YXJ0KCksIkN0cmwtZSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja0VuZCgpfTtyZXR1cm4gaXNpT1MoKXx8aXNNYWNPUygpP246dH0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBQbHVnaW4oe2tleTpuZXcgUGx1Z2luS2V5KCJjbGVhckRvY3VtZW50IiksYXBwZW5kVHJhbnNhY3Rpb246KGUsdCxuKT0+e2lmKGUuc29tZShlPT5lLmdldE1ldGEoImNvbXBvc2l0aW9uIikpKXJldHVybjtjb25zdCByPWUuc29tZShlPT5lLmRvY0NoYW5nZWQpJiYhdC5kb2MuZXEobi5kb2MpLG89ZS5zb21lKGU9PmUuZ2V0TWV0YSgicHJldmVudENsZWFyRG9jdW1lbnQiKSk7aWYoIXJ8fG8pcmV0dXJuO2NvbnN0e2VtcHR5OmksZnJvbTpzLHRvOmx9PXQuc2VsZWN0aW9uLGE9U2VsZWN0aW9uLmF0U3RhcnQodC5kb2MpLmZyb20sYz1TZWxlY3Rpb24uYXRFbmQodC5kb2MpLnRvO2lmKGl8fCEocz09PWEmJmw9PT1jKSlyZXR1cm47aWYoIWlzTm9kZUVtcHR5KG4uZG9jKSlyZXR1cm47Y29uc3QgZD1uLnRyLHA9Y3JlYXRlQ2hhaW5hYmxlU3RhdGUoe3N0YXRlOm4sdHJhbnNhY3Rpb246ZH0pLHtjb21tYW5kczpmfT1uZXcgUHQoe2VkaXRvcjp0aGlzLmVkaXRvcixzdGF0ZTpwfSk7cmV0dXJuIGYuY2xlYXJOb2RlcygpLGQuc3RlcHMubGVuZ3RoP2Q6dm9pZCAwfX0pXX19KSxadD1qdC5jcmVhdGUoe25hbWU6InBhc3RlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoInRpcHRhcFBhc3RlIikscHJvcHM6e2hhbmRsZVBhc3RlOihlLHQsbik9Pnt0aGlzLmVkaXRvci5lbWl0KCJwYXN0ZSIse2VkaXRvcjp0aGlzLmVkaXRvcixldmVudDp0LHNsaWNlOm59KX19fSldfX0pLFl0PWp0LmNyZWF0ZSh7bmFtZToidGFiaW5kZXgiLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgidGFiaW5kZXgiKSxwcm9wczp7YXR0cmlidXRlczooKT0+dGhpcy5lZGl0b3IuaXNFZGl0YWJsZT97dGFiaW5kZXg6IjAifTp7fX19KV19fSksZW49anQuY3JlYXRlKHtuYW1lOiJ0ZXh0RGlyZWN0aW9uIixhZGRPcHRpb25zOigpPT4oe2RpcmVjdGlvbjp2b2lkIDB9KSxhZGRHbG9iYWxBdHRyaWJ1dGVzKCl7aWYoIXRoaXMub3B0aW9ucy5kaXJlY3Rpb24pcmV0dXJuW107Y29uc3R7bm9kZUV4dGVuc2lvbnM6ZX09c3BsaXRFeHRlbnNpb25zKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuW3t0eXBlczplLmZpbHRlcihlPT4idGV4dCIhPT1lLm5hbWUpLm1hcChlPT5lLm5hbWUpLGF0dHJpYnV0ZXM6e2Rpcjp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHBhcnNlSFRNTDplPT57Y29uc3QgdD1lLmdldEF0dHJpYnV0ZSgiZGlyIik7cmV0dXJuIXR8fCJsdHIiIT09dCYmInJ0bCIhPT10JiYiYXV0byIhPT10P3RoaXMub3B0aW9ucy5kaXJlY3Rpb246dH0scmVuZGVySFRNTDplPT5lLmRpcj97ZGlyOmUuZGlyfTp7fX19fV19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgidGV4dERpcmVjdGlvbiIpLHByb3BzOnthdHRyaWJ1dGVzOigpPT57Y29uc3QgZT10aGlzLm9wdGlvbnMuZGlyZWN0aW9uO3JldHVybiBlP3tkaXI6ZX06e319fX0pXX19KSx0bj1jbGFzcyBfTm9kZVBvc3tjb25zdHJ1Y3RvcihlLHQsbj0hMSxyPW51bGwpe3RoaXMuY3VycmVudE5vZGU9bnVsbCx0aGlzLmFjdHVhbERlcHRoPW51bGwsdGhpcy5pc0Jsb2NrPW4sdGhpcy5yZXNvbHZlZFBvcz1lLHRoaXMuZWRpdG9yPXQsdGhpcy5jdXJyZW50Tm9kZT1yfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMubm9kZS50eXBlLm5hbWV9Z2V0IG5vZGUoKXtyZXR1cm4gdGhpcy5jdXJyZW50Tm9kZXx8dGhpcy5yZXNvbHZlZFBvcy5ub2RlKCl9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5lZGl0b3Iudmlldy5kb21BdFBvcyh0aGlzLnBvcykubm9kZX1nZXQgZGVwdGgoKXt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dGhpcy5hY3R1YWxEZXB0aCk/ZTp0aGlzLnJlc29sdmVkUG9zLmRlcHRofWdldCBwb3MoKXtyZXR1cm4gdGhpcy5yZXNvbHZlZFBvcy5wb3N9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5ub2RlLmNvbnRlbnR9c2V0IGNvbnRlbnQoZSl7bGV0IHQ9dGhpcy5mcm9tLG49dGhpcy50bztpZih0aGlzLmlzQmxvY2spe2lmKDA9PT10aGlzLmNvbnRlbnQuc2l6ZSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKGBZb3UgY2Fu4oCZdCBzZXQgY29udGVudCBvbiBhIGJsb2NrIG5vZGUuIFRyaWVkIHRvIHNldCBjb250ZW50IG9uICR7dGhpcy5uYW1lfSBhdCAke3RoaXMucG9zfWApO3Q9dGhpcy5mcm9tKzEsbj10aGlzLnRvLTF9dGhpcy5lZGl0b3IuY29tbWFuZHMuaW5zZXJ0Q29udGVudEF0KHtmcm9tOnQsdG86bn0sZSl9Z2V0IGF0dHJpYnV0ZXMoKXtyZXR1cm4gdGhpcy5ub2RlLmF0dHJzfWdldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLm5vZGUudGV4dENvbnRlbnR9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVTaXplfWdldCBmcm9tKCl7cmV0dXJuIHRoaXMuaXNCbG9jaz90aGlzLnBvczp0aGlzLnJlc29sdmVkUG9zLnN0YXJ0KHRoaXMucmVzb2x2ZWRQb3MuZGVwdGgpfWdldCByYW5nZSgpe3JldHVybntmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvfX1nZXQgdG8oKXtyZXR1cm4gdGhpcy5pc0Jsb2NrP3RoaXMucG9zK3RoaXMuc2l6ZTp0aGlzLnJlc29sdmVkUG9zLmVuZCh0aGlzLnJlc29sdmVkUG9zLmRlcHRoKSsodGhpcy5ub2RlLmlzVGV4dD8wOjEpfWdldCBwYXJlbnQoKXtpZigwPT09dGhpcy5kZXB0aClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMucmVzb2x2ZWRQb3Muc3RhcnQodGhpcy5yZXNvbHZlZFBvcy5kZXB0aC0xKSx0PXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUoZSk7cmV0dXJuIG5ldyBfTm9kZVBvcyh0LHRoaXMuZWRpdG9yKX1nZXQgYmVmb3JlKCl7bGV0IGU9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLmZyb20tKHRoaXMuaXNCbG9jaz8xOjIpKTtyZXR1cm4gZS5kZXB0aCE9PXRoaXMuZGVwdGgmJihlPXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy5mcm9tLTMpKSxuZXcgX05vZGVQb3MoZSx0aGlzLmVkaXRvcil9Z2V0IGFmdGVyKCl7bGV0IGU9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLnRvKyh0aGlzLmlzQmxvY2s/MjoxKSk7cmV0dXJuIGUuZGVwdGghPT10aGlzLmRlcHRoJiYoZT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRoaXMudG8rMykpLG5ldyBfTm9kZVBvcyhlLHRoaXMuZWRpdG9yKX1nZXQgY2hpbGRyZW4oKXtjb25zdCBlPVtdO3JldHVybiB0aGlzLm5vZGUuY29udGVudC5mb3JFYWNoKCh0LG4pPT57Y29uc3Qgcj10LmlzQmxvY2smJiF0LmlzVGV4dGJsb2NrLG89dC5pc0F0b20mJiF0LmlzVGV4dCxpPXQuaXNJbmxpbmUscz10aGlzLnBvcytuKyhvPzA6MSk7aWYoczwwfHxzPnRoaXMucmVzb2x2ZWRQb3MuZG9jLm5vZGVTaXplLTIpcmV0dXJuO2NvbnN0IGw9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZShzKTtpZighciYmIWkmJmwuZGVwdGg8PXRoaXMuZGVwdGgpcmV0dXJuO2NvbnN0IGE9bmV3IF9Ob2RlUG9zKGwsdGhpcy5lZGl0b3IscixyfHxpP3Q6bnVsbCk7ciYmKGEuYWN0dWFsRGVwdGg9dGhpcy5kZXB0aCsxKSxlLnB1c2goYSl9KSxlfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW5bMF18fG51bGx9Z2V0IGxhc3RDaGlsZCgpe2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtyZXR1cm4gZVtlLmxlbmd0aC0xXXx8bnVsbH1jbG9zZXN0KGUsdD17fSl7bGV0IG49bnVsbCxyPXRoaXMucGFyZW50O2Zvcig7ciYmIW47KXtpZihyLm5vZGUudHlwZS5uYW1lPT09ZSlpZihPYmplY3Qua2V5cyh0KS5sZW5ndGg+MCl7Y29uc3QgZT1yLm5vZGUuYXR0cnMsbj1PYmplY3Qua2V5cyh0KTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrPTEpe2NvbnN0IG89bltyXTtpZihlW29dIT09dFtvXSlicmVha319ZWxzZSBuPXI7cj1yLnBhcmVudH1yZXR1cm4gbn1xdWVyeVNlbGVjdG9yKGUsdD17fSl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChlLHQsITApWzBdfHxudWxsfXF1ZXJ5U2VsZWN0b3JBbGwoZSx0PXt9LG49ITEpe2xldCByPVtdO2lmKCF0aGlzLmNoaWxkcmVufHwwPT09dGhpcy5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIHI7Y29uc3Qgbz1PYmplY3Qua2V5cyh0KTtyZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGk9PntpZighKG4mJnIubGVuZ3RoPjApKXtpZihpLm5vZGUudHlwZS5uYW1lPT09ZSl7by5ldmVyeShlPT50W2VdPT09aS5ub2RlLmF0dHJzW2VdKSYmci5wdXNoKGkpfW4mJnIubGVuZ3RoPjB8fChyPXIuY29uY2F0KGkucXVlcnlTZWxlY3RvckFsbChlLHQsbikpKX19KSxyfXNldEF0dHJpYnV0ZShlKXtjb25zdHt0cjp0fT10aGlzLmVkaXRvci5zdGF0ZTt0LnNldE5vZGVNYXJrdXAodGhpcy5mcm9tLHZvaWQgMCx7Li4udGhpcy5ub2RlLmF0dHJzLC4uLmV9KSx0aGlzLmVkaXRvci52aWV3LmRpc3BhdGNoKHQpfX07dmFyIG5uPWNsYXNzIGV4dGVuZHMgTHR7Y29uc3RydWN0b3IoZT17fSl7c3VwZXIoKSx0aGlzLmNzcz1udWxsLHRoaXMuY2xhc3NOYW1lPSJ0aXB0YXAiLHRoaXMuZWRpdG9yVmlldz1udWxsLHRoaXMuaXNGb2N1c2VkPSExLHRoaXMuaXNJbml0aWFsaXplZD0hMSx0aGlzLmV4dGVuc2lvblN0b3JhZ2U9e30sdGhpcy5pbnN0YW5jZUlkPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsOSksdGhpcy5vcHRpb25zPXtlbGVtZW50OiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCxjb250ZW50OiIiLGluamVjdENTUzohMCxpbmplY3ROb25jZTp2b2lkIDAsZXh0ZW5zaW9uczpbXSxhdXRvZm9jdXM6ITEsZWRpdGFibGU6ITAsdGV4dERpcmVjdGlvbjp2b2lkIDAsZWRpdG9yUHJvcHM6e30scGFyc2VPcHRpb25zOnt9LGNvcmVFeHRlbnNpb25PcHRpb25zOnt9LGVuYWJsZUlucHV0UnVsZXM6ITAsZW5hYmxlUGFzdGVSdWxlczohMCxlbmFibGVDb3JlRXh0ZW5zaW9uczohMCxlbmFibGVDb250ZW50Q2hlY2s6ITEsZW1pdENvbnRlbnRFcnJvcjohMSxvbkJlZm9yZUNyZWF0ZTooKT0+bnVsbCxvbkNyZWF0ZTooKT0+bnVsbCxvbk1vdW50OigpPT5udWxsLG9uVW5tb3VudDooKT0+bnVsbCxvblVwZGF0ZTooKT0+bnVsbCxvblNlbGVjdGlvblVwZGF0ZTooKT0+bnVsbCxvblRyYW5zYWN0aW9uOigpPT5udWxsLG9uRm9jdXM6KCk9Pm51bGwsb25CbHVyOigpPT5udWxsLG9uRGVzdHJveTooKT0+bnVsbCxvbkNvbnRlbnRFcnJvcjooe2Vycm9yOmV9KT0+e3Rocm93IGV9LG9uUGFzdGU6KCk9Pm51bGwsb25Ecm9wOigpPT5udWxsLG9uRGVsZXRlOigpPT5udWxsLGVuYWJsZUV4dGVuc2lvbkRpc3BhdGNoVHJhbnNhY3Rpb246ITB9LHRoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbj0hMSx0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb249bnVsbCx0aGlzLnV0aWxzPXtnZXRVcGRhdGVkUG9zaXRpb246Z2V0VXBkYXRlZFBvc2l0aW9uLGNyZWF0ZU1hcHBhYmxlUG9zaXRpb246Y3JlYXRlTWFwcGFibGVQb3NpdGlvbn0sdGhpcy5zZXRPcHRpb25zKGUpLHRoaXMuY3JlYXRlRXh0ZW5zaW9uTWFuYWdlcigpLHRoaXMuY3JlYXRlQ29tbWFuZE1hbmFnZXIoKSx0aGlzLmNyZWF0ZVNjaGVtYSgpLHRoaXMub24oImJlZm9yZUNyZWF0ZSIsdGhpcy5vcHRpb25zLm9uQmVmb3JlQ3JlYXRlKSx0aGlzLmVtaXQoImJlZm9yZUNyZWF0ZSIse2VkaXRvcjp0aGlzfSksdGhpcy5vbigibW91bnQiLHRoaXMub3B0aW9ucy5vbk1vdW50KSx0aGlzLm9uKCJ1bm1vdW50Iix0aGlzLm9wdGlvbnMub25Vbm1vdW50KSx0aGlzLm9uKCJjb250ZW50RXJyb3IiLHRoaXMub3B0aW9ucy5vbkNvbnRlbnRFcnJvciksdGhpcy5vbigiY3JlYXRlIix0aGlzLm9wdGlvbnMub25DcmVhdGUpLHRoaXMub24oInVwZGF0ZSIsdGhpcy5vcHRpb25zLm9uVXBkYXRlKSx0aGlzLm9uKCJzZWxlY3Rpb25VcGRhdGUiLHRoaXMub3B0aW9ucy5vblNlbGVjdGlvblVwZGF0ZSksdGhpcy5vbigidHJhbnNhY3Rpb24iLHRoaXMub3B0aW9ucy5vblRyYW5zYWN0aW9uKSx0aGlzLm9uKCJmb2N1cyIsdGhpcy5vcHRpb25zLm9uRm9jdXMpLHRoaXMub24oImJsdXIiLHRoaXMub3B0aW9ucy5vbkJsdXIpLHRoaXMub24oImRlc3Ryb3kiLHRoaXMub3B0aW9ucy5vbkRlc3Ryb3kpLHRoaXMub24oImRyb3AiLCh7ZXZlbnQ6ZSxzbGljZTp0LG1vdmVkOm59KT0+dGhpcy5vcHRpb25zLm9uRHJvcChlLHQsbikpLHRoaXMub24oInBhc3RlIiwoe2V2ZW50OmUsc2xpY2U6dH0pPT50aGlzLm9wdGlvbnMub25QYXN0ZShlLHQpKSx0aGlzLm9uKCJkZWxldGUiLHRoaXMub3B0aW9ucy5vbkRlbGV0ZSk7Y29uc3QgdD10aGlzLmNyZWF0ZURvYygpLG49cmVzb2x2ZUZvY3VzUG9zaXRpb24odCx0aGlzLm9wdGlvbnMuYXV0b2ZvY3VzKTt0aGlzLmVkaXRvclN0YXRlPUVkaXRvclN0YXRlLmNyZWF0ZSh7ZG9jOnQsc2NoZW1hOnRoaXMuc2NoZW1hLHNlbGVjdGlvbjpufHx2b2lkIDB9KSx0aGlzLm9wdGlvbnMuZWxlbWVudCYmdGhpcy5tb3VudCh0aGlzLm9wdGlvbnMuZWxlbWVudCl9bW91bnQoZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoIlt0aXB0YXAgZXJyb3JdOiBUaGUgZWRpdG9yIGNhbm5vdCBiZSBtb3VudGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gJ2RvY3VtZW50JyBkZWZpbmVkIGluIHRoaXMgZW52aXJvbm1lbnQuIik7dGhpcy5jcmVhdGVWaWV3KGUpLHRoaXMuZW1pdCgibW91bnQiLHtlZGl0b3I6dGhpc30pLHRoaXMuY3NzJiYhZG9jdW1lbnQuaGVhZC5jb250YWlucyh0aGlzLmNzcykmJmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5jc3MpLHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy5pc0Rlc3Ryb3llZHx8KCExIT09dGhpcy5vcHRpb25zLmF1dG9mb2N1cyYmbnVsbCE9PXRoaXMub3B0aW9ucy5hdXRvZm9jdXMmJnRoaXMuY29tbWFuZHMuZm9jdXModGhpcy5vcHRpb25zLmF1dG9mb2N1cyksdGhpcy5lbWl0KCJjcmVhdGUiLHtlZGl0b3I6dGhpc30pLHRoaXMuaXNJbml0aWFsaXplZD0hMCl9LDApfXVubW91bnQoKXtpZih0aGlzLmVkaXRvclZpZXcpe2NvbnN0IGU9dGhpcy5lZGl0b3JWaWV3LmRvbTsobnVsbD09ZT92b2lkIDA6ZS5lZGl0b3IpJiZkZWxldGUgZS5lZGl0b3IsdGhpcy5lZGl0b3JWaWV3LmRlc3Ryb3koKX1pZih0aGlzLmVkaXRvclZpZXc9bnVsbCx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5jc3MmJiFkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAuJHt0aGlzLmNsYXNzTmFtZX1gKS5sZW5ndGgpdHJ5eyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmNzcy5yZW1vdmU/dGhpcy5jc3MucmVtb3ZlKCk6dGhpcy5jc3MucGFyZW50Tm9kZSYmdGhpcy5jc3MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNzcyl9Y2F0Y2goZSl7Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gcmVtb3ZlIENTUyBlbGVtZW50OiIsZSl9dGhpcy5jc3M9bnVsbCx0aGlzLmVtaXQoInVubW91bnQiLHtlZGl0b3I6dGhpc30pfWdldCBzdG9yYWdlKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9uU3RvcmFnZX1nZXQgY29tbWFuZHMoKXtyZXR1cm4gdGhpcy5jb21tYW5kTWFuYWdlci5jb21tYW5kc31jaGFpbigpe3JldHVybiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNoYWluKCl9Y2FuKCl7cmV0dXJuIHRoaXMuY29tbWFuZE1hbmFnZXIuY2FuKCl9aW5qZWN0Q1NTKCl7dGhpcy5vcHRpb25zLmluamVjdENTUyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKHRoaXMuY3NzPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzdHlsZVtkYXRhLXRpcHRhcC1zdHlsZV0iKTtpZihudWxsIT09bilyZXR1cm4gbjtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQmJnIuc2V0QXR0cmlidXRlKCJub25jZSIsdCksci5zZXRBdHRyaWJ1dGUoImRhdGEtdGlwdGFwLXN0eWxlIiwiIiksci5pbm5lckhUTUw9ZSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHIpLHJ9KCcuUHJvc2VNaXJyb3Ige1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5Qcm9zZU1pcnJvciB7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xuICAtd2Via2l0LWZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7XG4gIGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogImxpZ2EiIDA7IC8qIHRoZSBhYm92ZSBkb2VzblwndCBzZWVtIHRvIHdvcmsgaW4gRWRnZSAqL1xufVxuXG4uUHJvc2VNaXJyb3IgW2NvbnRlbnRlZGl0YWJsZT0iZmFsc2UiXSB7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbi5Qcm9zZU1pcnJvciBbY29udGVudGVkaXRhYmxlPSJmYWxzZSJdIFtjb250ZW50ZWRpdGFibGU9InRydWUiXSB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuLlByb3NlTWlycm9yIHByZSB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuaW1nLlByb3NlTWlycm9yLXNlcGFyYXRvciB7XG4gIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAwICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMCAhaW1wb3J0YW50O1xufVxuXG4uUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uUHJvc2VNaXJyb3ItZ2FwY3Vyc29yOmFmdGVyIHtcbiAgY29udGVudDogIiI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTJweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbiAgYW5pbWF0aW9uOiBQcm9zZU1pcnJvci1jdXJzb3ItYmxpbmsgMS4xcyBzdGVwcygyLCBzdGFydCkgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgUHJvc2VNaXJyb3ItY3Vyc29yLWJsaW5rIHtcbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxufVxuXG4uUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvbiAqOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24gKjo6LW1vei1zZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24gKiB7XG4gIGNhcmV0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLlByb3NlTWlycm9yLWZvY3VzZWQgLlByb3NlTWlycm9yLWdhcGN1cnNvciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufScsdGhpcy5vcHRpb25zLmluamVjdE5vbmNlKSl9c2V0T3B0aW9ucyhlPXt9KXt0aGlzLm9wdGlvbnM9ey4uLnRoaXMub3B0aW9ucywuLi5lfSx0aGlzLmVkaXRvclZpZXcmJnRoaXMuc3RhdGUmJiF0aGlzLmlzRGVzdHJveWVkJiYodGhpcy5vcHRpb25zLmVkaXRvclByb3BzJiZ0aGlzLnZpZXcuc2V0UHJvcHModGhpcy5vcHRpb25zLmVkaXRvclByb3BzKSx0aGlzLnZpZXcudXBkYXRlU3RhdGUodGhpcy5zdGF0ZSkpfXNldEVkaXRhYmxlKGUsdD0hMCl7dGhpcy5zZXRPcHRpb25zKHtlZGl0YWJsZTplfSksdCYmdGhpcy5lbWl0KCJ1cGRhdGUiLHtlZGl0b3I6dGhpcyx0cmFuc2FjdGlvbjp0aGlzLnN0YXRlLnRyLGFwcGVuZGVkVHJhbnNhY3Rpb25zOltdfSl9Z2V0IGlzRWRpdGFibGUoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmVkaXRhYmxlJiZ0aGlzLnZpZXcmJnRoaXMudmlldy5lZGl0YWJsZX1nZXQgdmlldygpe3JldHVybiB0aGlzLmVkaXRvclZpZXc/dGhpcy5lZGl0b3JWaWV3Om5ldyBQcm94eSh7c3RhdGU6dGhpcy5lZGl0b3JTdGF0ZSx1cGRhdGVTdGF0ZTplPT57dGhpcy5lZGl0b3JTdGF0ZT1lfSxkaXNwYXRjaDplPT57dGhpcy5kaXNwYXRjaFRyYW5zYWN0aW9uKGUpfSxjb21wb3Npbmc6ITEsZHJhZ2dpbmc6bnVsbCxlZGl0YWJsZTohMCxpc0Rlc3Ryb3llZDohMX0se2dldDooZSx0KT0+e2lmKHRoaXMuZWRpdG9yVmlldylyZXR1cm4gdGhpcy5lZGl0b3JWaWV3W3RdO2lmKCJzdGF0ZSI9PT10KXJldHVybiB0aGlzLmVkaXRvclN0YXRlO2lmKHQgaW4gZSlyZXR1cm4gUmVmbGVjdC5nZXQoZSx0KTt0aHJvdyBuZXcgRXJyb3IoYFt0aXB0YXAgZXJyb3JdOiBUaGUgZWRpdG9yIHZpZXcgaXMgbm90IGF2YWlsYWJsZS4gQ2Fubm90IGFjY2VzcyB2aWV3Wycke3R9J10uIFRoZSBlZGl0b3IgbWF5IG5vdCBiZSBtb3VudGVkIHlldC5gKX19KX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5lZGl0b3JWaWV3JiYodGhpcy5lZGl0b3JTdGF0ZT10aGlzLnZpZXcuc3RhdGUpLHRoaXMuZWRpdG9yU3RhdGV9cmVnaXN0ZXJQbHVnaW4oZSx0KXtjb25zdCBuPWlzRnVuY3Rpb24odCk/dChlLFsuLi50aGlzLnN0YXRlLnBsdWdpbnNdKTpbLi4udGhpcy5zdGF0ZS5wbHVnaW5zLGVdLHI9dGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7cGx1Z2luczpufSk7cmV0dXJuIHRoaXMudmlldy51cGRhdGVTdGF0ZShyKSxyfXVucmVnaXN0ZXJQbHVnaW4oZSl7aWYodGhpcy5pc0Rlc3Ryb3llZClyZXR1cm47Y29uc3QgdD10aGlzLnN0YXRlLnBsdWdpbnM7bGV0IG49dDtpZihbXS5jb25jYXQoZSkuZm9yRWFjaChlPT57Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/YCR7ZX0kYDplLmtleTtuPW4uZmlsdGVyKGU9PiFlLmtleS5zdGFydHNXaXRoKHQpKX0pLHQubGVuZ3RoPT09bi5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9dGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7cGx1Z2luczpufSk7cmV0dXJuIHRoaXMudmlldy51cGRhdGVTdGF0ZShyKSxyfWNyZWF0ZUV4dGVuc2lvbk1hbmFnZXIoKXt2YXIgZSx0O2NvbnN0IG49Wy4uLnRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9ucz9bSnQscXQuY29uZmlndXJlKHtibG9ja1NlcGFyYXRvcjpudWxsPT0odD1udWxsPT0oZT10aGlzLm9wdGlvbnMuY29yZUV4dGVuc2lvbk9wdGlvbnMpP3ZvaWQgMDplLmNsaXBib2FyZFRleHRTZXJpYWxpemVyKT92b2lkIDA6dC5ibG9ja1NlcGFyYXRvcn0pLFV0LFh0LFF0LFl0LEt0LFp0LFd0LGVuLmNvbmZpZ3VyZSh7ZGlyZWN0aW9uOnRoaXMub3B0aW9ucy50ZXh0RGlyZWN0aW9ufSldLmZpbHRlcihlPT4ib2JqZWN0IiE9dHlwZW9mIHRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9uc3x8ITEhPT10aGlzLm9wdGlvbnMuZW5hYmxlQ29yZUV4dGVuc2lvbnNbZS5uYW1lXSk6W10sLi4udGhpcy5vcHRpb25zLmV4dGVuc2lvbnNdLmZpbHRlcihlPT5bImV4dGVuc2lvbiIsIm5vZGUiLCJtYXJrIl0uaW5jbHVkZXMobnVsbD09ZT92b2lkIDA6ZS50eXBlKSk7dGhpcy5leHRlbnNpb25NYW5hZ2VyPW5ldyBfdChuLHRoaXMpfWNyZWF0ZUNvbW1hbmRNYW5hZ2VyKCl7dGhpcy5jb21tYW5kTWFuYWdlcj1uZXcgUHQoe2VkaXRvcjp0aGlzfSl9Y3JlYXRlU2NoZW1hKCl7dGhpcy5zY2hlbWE9dGhpcy5leHRlbnNpb25NYW5hZ2VyLnNjaGVtYX1jcmVhdGVEb2MoKXtsZXQgZTt0cnl7ZT1jcmVhdGVEb2N1bWVudCh0aGlzLm9wdGlvbnMuY29udGVudCx0aGlzLnNjaGVtYSx0aGlzLm9wdGlvbnMucGFyc2VPcHRpb25zLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6dGhpcy5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pfWNhdGNoKHQpe2lmKCEodCBpbnN0YW5jZW9mIEVycm9yJiZbIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudCIsIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudCJdLmluY2x1ZGVzKHQubWVzc2FnZSkpKXRocm93IHQ7dGhpcy5lbWl0KCJjb250ZW50RXJyb3IiLHtlZGl0b3I6dGhpcyxlcnJvcjp0LGRpc2FibGVDb2xsYWJvcmF0aW9uOigpPT57ImNvbGxhYm9yYXRpb24iaW4gdGhpcy5zdG9yYWdlJiYib2JqZWN0Ij09dHlwZW9mIHRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiZ0aGlzLnN0b3JhZ2UuY29sbGFib3JhdGlvbiYmKHRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uLmlzRGlzYWJsZWQ9ITApLHRoaXMub3B0aW9ucy5leHRlbnNpb25zPXRoaXMub3B0aW9ucy5leHRlbnNpb25zLmZpbHRlcihlPT4iY29sbGFib3JhdGlvbiIhPT1lLm5hbWUpLHRoaXMuY3JlYXRlRXh0ZW5zaW9uTWFuYWdlcigpfX0pLGU9Y3JlYXRlRG9jdW1lbnQodGhpcy5vcHRpb25zLmNvbnRlbnQsdGhpcy5zY2hlbWEsdGhpcy5vcHRpb25zLnBhcnNlT3B0aW9ucyx7ZXJyb3JPbkludmFsaWRDb250ZW50OiExfSl9cmV0dXJuIGV9Y3JlYXRlVmlldyhlKXtjb25zdHtlZGl0b3JQcm9wczp0LGVuYWJsZUV4dGVuc2lvbkRpc3BhdGNoVHJhbnNhY3Rpb246bn09dGhpcy5vcHRpb25zLHI9dC5kaXNwYXRjaFRyYW5zYWN0aW9ufHx0aGlzLmRpc3BhdGNoVHJhbnNhY3Rpb24uYmluZCh0aGlzKSxvPW4/dGhpcy5leHRlbnNpb25NYW5hZ2VyLmRpc3BhdGNoVHJhbnNhY3Rpb24ocik6cixpPXQudHJhbnNmb3JtUGFzdGVkSFRNTCxzPXRoaXMuZXh0ZW5zaW9uTWFuYWdlci50cmFuc2Zvcm1QYXN0ZWRIVE1MKGkpO3RoaXMuZWRpdG9yVmlldz1uZXcgRWRpdG9yVmlldyhlLHsuLi50LGF0dHJpYnV0ZXM6e3JvbGU6InRleHRib3giLC4uLm51bGw9PXQ/dm9pZCAwOnQuYXR0cmlidXRlc30sZGlzcGF0Y2hUcmFuc2FjdGlvbjpvLHRyYW5zZm9ybVBhc3RlZEhUTUw6cyxzdGF0ZTp0aGlzLmVkaXRvclN0YXRlLG1hcmtWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubWFya1ZpZXdzLG5vZGVWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubm9kZVZpZXdzfSk7Y29uc3QgbD10aGlzLnN0YXRlLnJlY29uZmlndXJlKHtwbHVnaW5zOnRoaXMuZXh0ZW5zaW9uTWFuYWdlci5wbHVnaW5zfSk7dGhpcy52aWV3LnVwZGF0ZVN0YXRlKGwpLHRoaXMucHJlcGVuZENsYXNzKCksdGhpcy5pbmplY3RDU1MoKTt0aGlzLnZpZXcuZG9tLmVkaXRvcj10aGlzfWNyZWF0ZU5vZGVWaWV3cygpe3RoaXMudmlldy5pc0Rlc3Ryb3llZHx8dGhpcy52aWV3LnNldFByb3BzKHttYXJrVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm1hcmtWaWV3cyxub2RlVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm5vZGVWaWV3c30pfXByZXBlbmRDbGFzcygpe3RoaXMudmlldy5kb20uY2xhc3NOYW1lPWAke3RoaXMuY2xhc3NOYW1lfSAke3RoaXMudmlldy5kb20uY2xhc3NOYW1lfWB9Y2FwdHVyZVRyYW5zYWN0aW9uKGUpe3RoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbj0hMCxlKCksdGhpcy5pc0NhcHR1cmluZ1RyYW5zYWN0aW9uPSExO2NvbnN0IHQ9dGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uO3JldHVybiB0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb249bnVsbCx0fWRpc3BhdGNoVHJhbnNhY3Rpb24oZSl7aWYodGhpcy52aWV3LmlzRGVzdHJveWVkKXJldHVybjtpZih0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb24pcmV0dXJuIHRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbj92b2lkIGUuc3RlcHMuZm9yRWFjaChlPT57dmFyIHQ7cmV0dXJuIG51bGw9PSh0PXRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbik/dm9pZCAwOnQuc3RlcChlKX0pOnZvaWQodGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uPWUpO2NvbnN0e3N0YXRlOnQsdHJhbnNhY3Rpb25zOm59PXRoaXMuc3RhdGUuYXBwbHlUcmFuc2FjdGlvbihlKSxyPSF0aGlzLnN0YXRlLnNlbGVjdGlvbi5lcSh0LnNlbGVjdGlvbiksbz1uLmluY2x1ZGVzKGUpLGk9dGhpcy5zdGF0ZTtpZih0aGlzLmVtaXQoImJlZm9yZVRyYW5zYWN0aW9uIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZSxuZXh0U3RhdGU6dH0pLCFvKXJldHVybjt0aGlzLnZpZXcudXBkYXRlU3RhdGUodCksdGhpcy5lbWl0KCJ0cmFuc2FjdGlvbiIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOmUsYXBwZW5kZWRUcmFuc2FjdGlvbnM6bi5zbGljZSgxKX0pLHImJnRoaXMuZW1pdCgic2VsZWN0aW9uVXBkYXRlIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZX0pO2NvbnN0IHM9bi5maW5kTGFzdChlPT5lLmdldE1ldGEoImZvY3VzIil8fGUuZ2V0TWV0YSgiYmx1ciIpKSxsPW51bGw9PXM/dm9pZCAwOnMuZ2V0TWV0YSgiZm9jdXMiKSxhPW51bGw9PXM/dm9pZCAwOnMuZ2V0TWV0YSgiYmx1ciIpO2wmJnRoaXMuZW1pdCgiZm9jdXMiLHtlZGl0b3I6dGhpcyxldmVudDpsLmV2ZW50LHRyYW5zYWN0aW9uOnN9KSxhJiZ0aGlzLmVtaXQoImJsdXIiLHtlZGl0b3I6dGhpcyxldmVudDphLmV2ZW50LHRyYW5zYWN0aW9uOnN9KSxlLmdldE1ldGEoInByZXZlbnRVcGRhdGUiKXx8IW4uc29tZShlPT5lLmRvY0NoYW5nZWQpfHxpLmRvYy5lcSh0LmRvYyl8fHRoaXMuZW1pdCgidXBkYXRlIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZSxhcHBlbmRlZFRyYW5zYWN0aW9uczpuLnNsaWNlKDEpfSl9Z2V0QXR0cmlidXRlcyhlKXtyZXR1cm4gZ2V0QXR0cmlidXRlcyh0aGlzLnN0YXRlLGUpfWlzQWN0aXZlKGUsdCl7Y29uc3Qgbj0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsLHI9InN0cmluZyI9PXR5cGVvZiBlP3Q6ZTtyZXR1cm4gZnVuY3Rpb24oZSx0LG49e30pe2lmKCF0KXJldHVybiBpc05vZGVBY3RpdmUoZSxudWxsLG4pfHxpc01hcmtBY3RpdmUoZSxudWxsLG4pO2NvbnN0IHI9Z2V0U2NoZW1hVHlwZU5hbWVCeU5hbWUodCxlLnNjaGVtYSk7cmV0dXJuIm5vZGUiPT09cj9pc05vZGVBY3RpdmUoZSx0LG4pOiJtYXJrIj09PXImJmlzTWFya0FjdGl2ZShlLHQsbil9KHRoaXMuc3RhdGUsbixyKX1nZXRKU09OKCl7cmV0dXJuIHRoaXMuc3RhdGUuZG9jLnRvSlNPTigpfWdldEhUTUwoKXtyZXR1cm4gZ2V0SFRNTEZyb21GcmFnbWVudCh0aGlzLnN0YXRlLmRvYy5jb250ZW50LHRoaXMuc2NoZW1hKX1nZXRUZXh0KGUpe2NvbnN0e2Jsb2NrU2VwYXJhdG9yOnQ9IlxuXG4iLHRleHRTZXJpYWxpemVyczpuPXt9fT1lfHx7fTtyZXR1cm4gZ2V0VGV4dCh0aGlzLnN0YXRlLmRvYyx7YmxvY2tTZXBhcmF0b3I6dCx0ZXh0U2VyaWFsaXplcnM6ey4uLmdldFRleHRTZXJpYWxpemVyc0Zyb21TY2hlbWEodGhpcy5zY2hlbWEpLC4uLm59fSl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gaXNOb2RlRW1wdHkodGhpcy5zdGF0ZS5kb2MpfWRlc3Ryb3koKXt0aGlzLmVtaXQoImRlc3Ryb3kiKSx0aGlzLnVubW91bnQoKSx0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpfWdldCBpc0Rlc3Ryb3llZCgpe3ZhciBlLHQ7cmV0dXJuIG51bGw9PSh0PW51bGw9PShlPXRoaXMuZWRpdG9yVmlldyk/dm9pZCAwOmUuaXNEZXN0cm95ZWQpfHx0fSRub2RlKGUsdCl7dmFyIG47cmV0dXJuKG51bGw9PShuPXRoaXMuJGRvYyk/dm9pZCAwOm4ucXVlcnlTZWxlY3RvcihlLHQpKXx8bnVsbH0kbm9kZXMoZSx0KXt2YXIgbjtyZXR1cm4obnVsbD09KG49dGhpcy4kZG9jKT92b2lkIDA6bi5xdWVyeVNlbGVjdG9yQWxsKGUsdCkpfHxudWxsfSRwb3MoZSl7Y29uc3QgdD10aGlzLnN0YXRlLmRvYy5yZXNvbHZlKGUpO3JldHVybiBuZXcgdG4odCx0aGlzKX1nZXQgJGRvYygpe3JldHVybiB0aGlzLiRwb3MoMCl9fTtmdW5jdGlvbiBtYXJrSW5wdXRSdWxlKGUpe3JldHVybiBuZXcgenQoe2ZpbmQ6ZS5maW5kLGhhbmRsZXI6KHtzdGF0ZTp0LHJhbmdlOm4sbWF0Y2g6cn0pPT57Y29uc3Qgbz1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKTtpZighMT09PW98fG51bGw9PT1vKXJldHVybiBudWxsO2NvbnN0e3RyOml9PXQscz1yW3IubGVuZ3RoLTFdLGw9clswXTtpZihzKXtjb25zdCByPWwuc2VhcmNoKC9cUy8pLGE9bi5mcm9tK2wuaW5kZXhPZihzKSxjPWErcy5sZW5ndGg7aWYoZ2V0TWFya3NCZXR3ZWVuKG4uZnJvbSxuLnRvLHQuZG9jKS5maWx0ZXIodD0+dC5tYXJrLnR5cGUuZXhjbHVkZWQuZmluZChuPT5uPT09ZS50eXBlJiZuIT09dC5tYXJrLnR5cGUpKS5maWx0ZXIoZT0+ZS50bz5hKS5sZW5ndGgpcmV0dXJuIG51bGw7YzxuLnRvJiZpLmRlbGV0ZShjLG4udG8pLGE+bi5mcm9tJiZpLmRlbGV0ZShuLmZyb20rcixhKTtjb25zdCBkPW4uZnJvbStyK3MubGVuZ3RoO2kuYWRkTWFyayhuLmZyb20rcixkLGUudHlwZS5jcmVhdGUob3x8e30pKSxpLnJlbW92ZVN0b3JlZE1hcmsoZS50eXBlKX19LHVuZG9hYmxlOmUudW5kb2FibGV9KX1mdW5jdGlvbiBub2RlSW5wdXRSdWxlKGUpe3JldHVybiBuZXcgenQoe2ZpbmQ6ZS5maW5kLGhhbmRsZXI6KHtzdGF0ZTp0LHJhbmdlOm4sbWF0Y2g6cn0pPT57Y29uc3Qgbz1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKXx8e30se3RyOml9PXQscz1uLmZyb207bGV0IGw9bi50bztjb25zdCBhPWUudHlwZS5jcmVhdGUobyk7aWYoclsxXSl7bGV0IGU9cytyWzBdLmxhc3RJbmRleE9mKHJbMV0pO2U+bD9lPWw6bD1lK3JbMV0ubGVuZ3RoO2NvbnN0IHQ9clswXVtyWzBdLmxlbmd0aC0xXTtpLmluc2VydFRleHQodCxzK3JbMF0ubGVuZ3RoLTEpLGkucmVwbGFjZVdpdGgoZSxsLGEpfWVsc2UgaWYoclswXSl7Y29uc3QgdD1lLnR5cGUuaXNJbmxpbmU/czpzLTE7aS5pbnNlcnQodCxlLnR5cGUuY3JlYXRlKG8pKS5kZWxldGUoaS5tYXBwaW5nLm1hcChzKSxpLm1hcHBpbmcubWFwKGwpKX1pLnNjcm9sbEludG9WaWV3KCl9LHVuZG9hYmxlOmUudW5kb2FibGV9KX1mdW5jdGlvbiB0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKGUpe3JldHVybiBuZXcgenQoe2ZpbmQ6ZS5maW5kLGhhbmRsZXI6KHtzdGF0ZTp0LHJhbmdlOm4sbWF0Y2g6cn0pPT57Y29uc3Qgbz10LmRvYy5yZXNvbHZlKG4uZnJvbSksaT1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKXx8e307aWYoIW8ubm9kZSgtMSkuY2FuUmVwbGFjZVdpdGgoby5pbmRleCgtMSksby5pbmRleEFmdGVyKC0xKSxlLnR5cGUpKXJldHVybiBudWxsO3QudHIuZGVsZXRlKG4uZnJvbSxuLnRvKS5zZXRCbG9ja1R5cGUobi5mcm9tLG4uZnJvbSxlLnR5cGUsaSl9LHVuZG9hYmxlOmUudW5kb2FibGV9KX1mdW5jdGlvbiB3cmFwcGluZ0lucHV0UnVsZShlKXtyZXR1cm4gbmV3IHp0KHtmaW5kOmUuZmluZCxoYW5kbGVyOih7c3RhdGU6dCxyYW5nZTpuLG1hdGNoOnIsY2hhaW46b30pPT57Y29uc3QgaT1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKXx8e30scz10LnRyLmRlbGV0ZShuLmZyb20sbi50byksbD1zLmRvYy5yZXNvbHZlKG4uZnJvbSkuYmxvY2tSYW5nZSgpLGE9bCYmZmluZFdyYXBwaW5nKGwsZS50eXBlLGkpO2lmKCFhKXJldHVybiBudWxsO2lmKHMud3JhcChsLGEpLGUua2VlcE1hcmtzJiZlLmVkaXRvcil7Y29uc3R7c2VsZWN0aW9uOm4sc3RvcmVkTWFya3M6cn09dCx7c3BsaXR0YWJsZU1hcmtzOm99PWUuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIsaT1yfHxuLiR0by5wYXJlbnRPZmZzZXQmJm4uJGZyb20ubWFya3MoKTtpZihpKXtjb25zdCBlPWkuZmlsdGVyKGU9Pm8uaW5jbHVkZXMoZS50eXBlLm5hbWUpKTtzLmVuc3VyZU1hcmtzKGUpfX1pZihlLmtlZXBBdHRyaWJ1dGVzKXtjb25zdCB0PSJidWxsZXRMaXN0Ij09PWUudHlwZS5uYW1lfHwib3JkZXJlZExpc3QiPT09ZS50eXBlLm5hbWU/Imxpc3RJdGVtIjoidGFza0xpc3QiO28oKS51cGRhdGVBdHRyaWJ1dGVzKHQsaSkucnVuKCl9Y29uc3QgYz1zLmRvYy5yZXNvbHZlKG4uZnJvbS0xKS5ub2RlQmVmb3JlO2MmJmMudHlwZT09PWUudHlwZSYmY2FuSm9pbihzLmRvYyxuLmZyb20tMSkmJighZS5qb2luUHJlZGljYXRlfHxlLmpvaW5QcmVkaWNhdGUocixjKSkmJnMuam9pbihuLmZyb20tMSl9LHVuZG9hYmxlOmUudW5kb2FibGV9KX12YXIgcm49Y2xhc3N7Y29uc3RydWN0b3IoZSl7dmFyIHQsbixyLG8saSxzO3RoaXMuZGlyZWN0aW9ucz1bImJvdHRvbS1sZWZ0IiwiYm90dG9tLXJpZ2h0IiwidG9wLWxlZnQiLCJ0b3AtcmlnaHQiXSx0aGlzLm1pblNpemU9e2hlaWdodDo4LHdpZHRoOjh9LHRoaXMucHJlc2VydmVBc3BlY3RSYXRpbz0hMSx0aGlzLmNsYXNzTmFtZXM9e2NvbnRhaW5lcjoiIix3cmFwcGVyOiIiLGhhbmRsZToiIixyZXNpemluZzoiIn0sdGhpcy5pbml0aWFsV2lkdGg9MCx0aGlzLmluaXRpYWxIZWlnaHQ9MCx0aGlzLmFzcGVjdFJhdGlvPTEsdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5zdGFydFg9MCx0aGlzLnN0YXJ0WT0wLHRoaXMuc3RhcnRXaWR0aD0wLHRoaXMuc3RhcnRIZWlnaHQ9MCx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkPSExLHRoaXMubGFzdEVkaXRhYmxlU3RhdGU9dm9pZCAwLHRoaXMuaGFuZGxlTWFwPW5ldyBNYXAsdGhpcy5oYW5kbGVNb3VzZU1vdmU9ZT0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgdD1lLmNsaWVudFgtdGhpcy5zdGFydFgsbj1lLmNsaWVudFktdGhpcy5zdGFydFk7dGhpcy5oYW5kbGVSZXNpemUodCxuKX0sdGhpcy5oYW5kbGVUb3VjaE1vdmU9ZT0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgdD1lLnRvdWNoZXNbMF07aWYoIXQpcmV0dXJuO2NvbnN0IG49dC5jbGllbnRYLXRoaXMuc3RhcnRYLHI9dC5jbGllbnRZLXRoaXMuc3RhcnRZO3RoaXMuaGFuZGxlUmVzaXplKG4scil9LHRoaXMuaGFuZGxlTW91c2VVcD0oKT0+e2lmKCF0aGlzLmlzUmVzaXppbmcpcmV0dXJuO2NvbnN0IGU9dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoLHQ9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDt0aGlzLm9uQ29tbWl0KGUsdCksdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5jb250YWluZXIuZGF0YXNldC5yZXNpemVTdGF0ZT0iZmFsc2UiLHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyYmdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlTW91c2VVcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlEb3duKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsdGhpcy5oYW5kbGVLZXlVcCl9LHRoaXMuaGFuZGxlS2V5RG93bj1lPT57IlNoaWZ0Ij09PWUua2V5JiYodGhpcy5pc1NoaWZ0S2V5UHJlc3NlZD0hMCl9LHRoaXMuaGFuZGxlS2V5VXA9ZT0+eyJTaGlmdCI9PT1lLmtleSYmKHRoaXMuaXNTaGlmdEtleVByZXNzZWQ9ITEpfSx0aGlzLm5vZGU9ZS5ub2RlLHRoaXMuZWRpdG9yPWUuZWRpdG9yLHRoaXMuZWxlbWVudD1lLmVsZW1lbnQsdGhpcy5jb250ZW50RWxlbWVudD1lLmNvbnRlbnRFbGVtZW50LHRoaXMuZ2V0UG9zPWUuZ2V0UG9zLHRoaXMub25SZXNpemU9ZS5vblJlc2l6ZSx0aGlzLm9uQ29tbWl0PWUub25Db21taXQsdGhpcy5vblVwZGF0ZT1lLm9uVXBkYXRlLChudWxsPT0odD1lLm9wdGlvbnMpP3ZvaWQgMDp0Lm1pbikmJih0aGlzLm1pblNpemU9ey4uLnRoaXMubWluU2l6ZSwuLi5lLm9wdGlvbnMubWlufSksKG51bGw9PShuPWUub3B0aW9ucyk/dm9pZCAwOm4ubWF4KSYmKHRoaXMubWF4U2l6ZT1lLm9wdGlvbnMubWF4KSwobnVsbD09KHI9bnVsbD09ZT92b2lkIDA6ZS5vcHRpb25zKT92b2lkIDA6ci5kaXJlY3Rpb25zKSYmKHRoaXMuZGlyZWN0aW9ucz1lLm9wdGlvbnMuZGlyZWN0aW9ucyksKG51bGw9PShvPWUub3B0aW9ucyk/dm9pZCAwOm8ucHJlc2VydmVBc3BlY3RSYXRpbykmJih0aGlzLnByZXNlcnZlQXNwZWN0UmF0aW89ZS5vcHRpb25zLnByZXNlcnZlQXNwZWN0UmF0aW8pLChudWxsPT0oaT1lLm9wdGlvbnMpP3ZvaWQgMDppLmNsYXNzTmFtZSkmJih0aGlzLmNsYXNzTmFtZXM9e2NvbnRhaW5lcjplLm9wdGlvbnMuY2xhc3NOYW1lLmNvbnRhaW5lcnx8IiIsd3JhcHBlcjplLm9wdGlvbnMuY2xhc3NOYW1lLndyYXBwZXJ8fCIiLGhhbmRsZTplLm9wdGlvbnMuY2xhc3NOYW1lLmhhbmRsZXx8IiIscmVzaXppbmc6ZS5vcHRpb25zLmNsYXNzTmFtZS5yZXNpemluZ3x8IiJ9KSwobnVsbD09KHM9ZS5vcHRpb25zKT92b2lkIDA6cy5jcmVhdGVDdXN0b21IYW5kbGUpJiYodGhpcy5jcmVhdGVDdXN0b21IYW5kbGU9ZS5vcHRpb25zLmNyZWF0ZUN1c3RvbUhhbmRsZSksdGhpcy53cmFwcGVyPXRoaXMuY3JlYXRlV3JhcHBlcigpLHRoaXMuY29udGFpbmVyPXRoaXMuY3JlYXRlQ29udGFpbmVyKCksdGhpcy5hcHBseUluaXRpYWxTaXplKCksdGhpcy5hdHRhY2hIYW5kbGVzKCksdGhpcy5lZGl0b3Iub24oInVwZGF0ZSIsdGhpcy5oYW5kbGVFZGl0b3JVcGRhdGUuYmluZCh0aGlzKSl9Z2V0IGRvbSgpe3JldHVybiB0aGlzLmNvbnRhaW5lcn1nZXQgY29udGVudERPTSgpe3ZhciBlO3JldHVybiBudWxsIT0oZT10aGlzLmNvbnRlbnRFbGVtZW50KT9lOm51bGx9aGFuZGxlRWRpdG9yVXBkYXRlKCl7Y29uc3QgZT10aGlzLmVkaXRvci5pc0VkaXRhYmxlO2UhPT10aGlzLmxhc3RFZGl0YWJsZVN0YXRlJiYodGhpcy5sYXN0RWRpdGFibGVTdGF0ZT1lLGU/ZSYmMD09PXRoaXMuaGFuZGxlTWFwLnNpemUmJnRoaXMuYXR0YWNoSGFuZGxlcygpOnRoaXMucmVtb3ZlSGFuZGxlcygpKX11cGRhdGUoZSx0LG4pe3JldHVybiBlLnR5cGU9PT10aGlzLm5vZGUudHlwZSYmKHRoaXMubm9kZT1lLCF0aGlzLm9uVXBkYXRlfHx0aGlzLm9uVXBkYXRlKGUsdCxuKSl9ZGVzdHJveSgpe3RoaXMuaXNSZXNpemluZyYmKHRoaXMuY29udGFpbmVyLmRhdGFzZXQucmVzaXplU3RhdGU9ImZhbHNlIix0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcmJnRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuaGFuZGxlS2V5RG93biksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuaGFuZGxlS2V5VXApLHRoaXMuaXNSZXNpemluZz0hMSx0aGlzLmFjdGl2ZUhhbmRsZT1udWxsKSx0aGlzLmVkaXRvci5vZmYoInVwZGF0ZSIsdGhpcy5oYW5kbGVFZGl0b3JVcGRhdGUuYmluZCh0aGlzKSksdGhpcy5jb250YWluZXIucmVtb3ZlKCl9Y3JlYXRlQ29udGFpbmVyKCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5kYXRhc2V0LnJlc2l6ZUNvbnRhaW5lcj0iIixlLmRhdGFzZXQubm9kZT10aGlzLm5vZGUudHlwZS5uYW1lLGUuc3R5bGUuZGlzcGxheT10aGlzLm5vZGUudHlwZS5pc0lubGluZT8iaW5saW5lLWZsZXgiOiJmbGV4Iix0aGlzLmNsYXNzTmFtZXMuY29udGFpbmVyJiYoZS5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWVzLmNvbnRhaW5lciksZS5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIpLGV9Y3JlYXRlV3JhcHBlcigpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixlLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixlLmRhdGFzZXQucmVzaXplV3JhcHBlcj0iIix0aGlzLmNsYXNzTmFtZXMud3JhcHBlciYmKGUuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lcy53cmFwcGVyKSxlLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksZX1jcmVhdGVIYW5kbGUoZSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5kYXRhc2V0LnJlc2l6ZUhhbmRsZT1lLHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmNsYXNzTmFtZXMuaGFuZGxlJiYodC5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWVzLmhhbmRsZSksdH1wb3NpdGlvbkhhbmRsZShlLHQpe2NvbnN0IG49dC5pbmNsdWRlcygidG9wIikscj10LmluY2x1ZGVzKCJib3R0b20iKSxvPXQuaW5jbHVkZXMoImxlZnQiKSxpPXQuaW5jbHVkZXMoInJpZ2h0Iik7biYmKGUuc3R5bGUudG9wPSIwIiksciYmKGUuc3R5bGUuYm90dG9tPSIwIiksbyYmKGUuc3R5bGUubGVmdD0iMCIpLGkmJihlLnN0eWxlLnJpZ2h0PSIwIiksInRvcCIhPT10JiYiYm90dG9tIiE9PXR8fChlLnN0eWxlLmxlZnQ9IjAiLGUuc3R5bGUucmlnaHQ9IjAiKSwibGVmdCIhPT10JiYicmlnaHQiIT09dHx8KGUuc3R5bGUudG9wPSIwIixlLnN0eWxlLmJvdHRvbT0iMCIpfWF0dGFjaEhhbmRsZXMoKXt0aGlzLmRpcmVjdGlvbnMuZm9yRWFjaChlPT57bGV0IHQ7dD10aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZT90aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZShlKTp0aGlzLmNyZWF0ZUhhbmRsZShlKSx0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fChjb25zb2xlLndhcm4oYFtSZXNpemFibGVOb2RlVmlld10gY3JlYXRlQ3VzdG9tSGFuZGxlKCIke2V9IikgZGlkIG5vdCByZXR1cm4gYW4gSFRNTEVsZW1lbnQuIEZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGhhbmRsZS5gKSx0PXRoaXMuY3JlYXRlSGFuZGxlKGUpKSx0aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZXx8dGhpcy5wb3NpdGlvbkhhbmRsZSh0LGUpLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0PT50aGlzLmhhbmRsZVJlc2l6ZVN0YXJ0KHQsZSkpLHQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdD0+dGhpcy5oYW5kbGVSZXNpemVTdGFydCh0LGUpKSx0aGlzLmhhbmRsZU1hcC5zZXQoZSx0KSx0aGlzLndyYXBwZXIuYXBwZW5kQ2hpbGQodCl9KX1yZW1vdmVIYW5kbGVzKCl7dGhpcy5oYW5kbGVNYXAuZm9yRWFjaChlPT5lLnJlbW92ZSgpKSx0aGlzLmhhbmRsZU1hcC5jbGVhcigpfWFwcGx5SW5pdGlhbFNpemUoKXtjb25zdCBlPXRoaXMubm9kZS5hdHRycy53aWR0aCx0PXRoaXMubm9kZS5hdHRycy5oZWlnaHQ7ZT8odGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPWAke2V9cHhgLHRoaXMuaW5pdGlhbFdpZHRoPWUpOnRoaXMuaW5pdGlhbFdpZHRoPXRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCx0Pyh0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0PWAke3R9cHhgLHRoaXMuaW5pdGlhbEhlaWdodD10KTp0aGlzLmluaXRpYWxIZWlnaHQ9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCx0aGlzLmluaXRpYWxXaWR0aD4wJiZ0aGlzLmluaXRpYWxIZWlnaHQ+MCYmKHRoaXMuYXNwZWN0UmF0aW89dGhpcy5pbml0aWFsV2lkdGgvdGhpcy5pbml0aWFsSGVpZ2h0KX1oYW5kbGVSZXNpemVTdGFydChlLHQpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuaXNSZXNpemluZz0hMCx0aGlzLmFjdGl2ZUhhbmRsZT10LCJ0b3VjaGVzImluIGU/KHRoaXMuc3RhcnRYPWUudG91Y2hlc1swXS5jbGllbnRYLHRoaXMuc3RhcnRZPWUudG91Y2hlc1swXS5jbGllbnRZKToodGhpcy5zdGFydFg9ZS5jbGllbnRYLHRoaXMuc3RhcnRZPWUuY2xpZW50WSksdGhpcy5zdGFydFdpZHRoPXRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCx0aGlzLnN0YXJ0SGVpZ2h0PXRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQsdGhpcy5zdGFydFdpZHRoPjAmJnRoaXMuc3RhcnRIZWlnaHQ+MCYmKHRoaXMuYXNwZWN0UmF0aW89dGhpcy5zdGFydFdpZHRoL3RoaXMuc3RhcnRIZWlnaHQpLHRoaXMuZ2V0UG9zKCksdGhpcy5jb250YWluZXIuZGF0YXNldC5yZXNpemVTdGF0ZT0idHJ1ZSIsdGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nJiZ0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZU1vdXNlTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmhhbmRsZVRvdWNoTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5oYW5kbGVNb3VzZVVwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleURvd24pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIix0aGlzLmhhbmRsZUtleVVwKX1oYW5kbGVSZXNpemUoZSx0KXtpZighdGhpcy5hY3RpdmVIYW5kbGUpcmV0dXJuO2NvbnN0IG49dGhpcy5wcmVzZXJ2ZUFzcGVjdFJhdGlvfHx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkLHt3aWR0aDpyLGhlaWdodDpvfT10aGlzLmNhbGN1bGF0ZU5ld0RpbWVuc2lvbnModGhpcy5hY3RpdmVIYW5kbGUsZSx0KSxpPXRoaXMuYXBwbHlDb25zdHJhaW50cyhyLG8sbik7dGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPWAke2kud2lkdGh9cHhgLHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQ9YCR7aS5oZWlnaHR9cHhgLHRoaXMub25SZXNpemUmJnRoaXMub25SZXNpemUoaS53aWR0aCxpLmhlaWdodCl9Y2FsY3VsYXRlTmV3RGltZW5zaW9ucyhlLHQsbil7bGV0IHI9dGhpcy5zdGFydFdpZHRoLG89dGhpcy5zdGFydEhlaWdodDtjb25zdCBpPWUuaW5jbHVkZXMoInJpZ2h0Iikscz1lLmluY2x1ZGVzKCJsZWZ0IiksbD1lLmluY2x1ZGVzKCJib3R0b20iKSxhPWUuaW5jbHVkZXMoInRvcCIpO2k/cj10aGlzLnN0YXJ0V2lkdGgrdDpzJiYocj10aGlzLnN0YXJ0V2lkdGgtdCksbD9vPXRoaXMuc3RhcnRIZWlnaHQrbjphJiYobz10aGlzLnN0YXJ0SGVpZ2h0LW4pLCJyaWdodCIhPT1lJiYibGVmdCIhPT1lfHwocj10aGlzLnN0YXJ0V2lkdGgrKGk/dDotdCkpLCJ0b3AiIT09ZSYmImJvdHRvbSIhPT1lfHwobz10aGlzLnN0YXJ0SGVpZ2h0KyhsP246LW4pKTtyZXR1cm4gdGhpcy5wcmVzZXJ2ZUFzcGVjdFJhdGlvfHx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkP3RoaXMuYXBwbHlBc3BlY3RSYXRpbyhyLG8sZSk6e3dpZHRoOnIsaGVpZ2h0Om99fWFwcGx5Q29uc3RyYWludHMoZSx0LG4pe3ZhciByLG8saSxzO2lmKCFuKXtsZXQgbj1NYXRoLm1heCh0aGlzLm1pblNpemUud2lkdGgsZSksaT1NYXRoLm1heCh0aGlzLm1pblNpemUuaGVpZ2h0LHQpO3JldHVybihudWxsPT0ocj10aGlzLm1heFNpemUpP3ZvaWQgMDpyLndpZHRoKSYmKG49TWF0aC5taW4odGhpcy5tYXhTaXplLndpZHRoLG4pKSwobnVsbD09KG89dGhpcy5tYXhTaXplKT92b2lkIDA6by5oZWlnaHQpJiYoaT1NYXRoLm1pbih0aGlzLm1heFNpemUuaGVpZ2h0LGkpKSx7d2lkdGg6bixoZWlnaHQ6aX19bGV0IGw9ZSxhPXQ7cmV0dXJuIGw8dGhpcy5taW5TaXplLndpZHRoJiYobD10aGlzLm1pblNpemUud2lkdGgsYT1sL3RoaXMuYXNwZWN0UmF0aW8pLGE8dGhpcy5taW5TaXplLmhlaWdodCYmKGE9dGhpcy5taW5TaXplLmhlaWdodCxsPWEqdGhpcy5hc3BlY3RSYXRpbyksKG51bGw9PShpPXRoaXMubWF4U2l6ZSk/dm9pZCAwOmkud2lkdGgpJiZsPnRoaXMubWF4U2l6ZS53aWR0aCYmKGw9dGhpcy5tYXhTaXplLndpZHRoLGE9bC90aGlzLmFzcGVjdFJhdGlvKSwobnVsbD09KHM9dGhpcy5tYXhTaXplKT92b2lkIDA6cy5oZWlnaHQpJiZhPnRoaXMubWF4U2l6ZS5oZWlnaHQmJihhPXRoaXMubWF4U2l6ZS5oZWlnaHQsbD1hKnRoaXMuYXNwZWN0UmF0aW8pLHt3aWR0aDpsLGhlaWdodDphfX1hcHBseUFzcGVjdFJhdGlvKGUsdCxuKXtjb25zdCByPSJ0b3AiPT09bnx8ImJvdHRvbSI9PT1uO3JldHVybiJsZWZ0Ij09PW58fCJyaWdodCI9PT1uP3t3aWR0aDplLGhlaWdodDplL3RoaXMuYXNwZWN0UmF0aW99OnI/e3dpZHRoOnQqdGhpcy5hc3BlY3RSYXRpbyxoZWlnaHQ6dH06e3dpZHRoOmUsaGVpZ2h0OmUvdGhpcy5hc3BlY3RSYXRpb319fTtmdW5jdGlvbiBkZWNvZGVIdG1sRW50aXRpZXMoZSl7cmV0dXJuIGUucmVwbGFjZSgvJmx0Oy9nLCI8IikucmVwbGFjZSgvJmd0Oy9nLCI+IikucmVwbGFjZSgvJnF1b3Q7L2csJyInKS5yZXBsYWNlKC8mYW1wOy9nLCImIil9ZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKGUpe2lmKCEobnVsbD09ZT92b2lkIDA6ZS50cmltKCkpKXJldHVybnt9O2NvbnN0IHQ9e30sbj1bXSxyPWUucmVwbGFjZSgvWyInXShbXiInXSopWyInXS9nLGU9PihuLnB1c2goZSksYF9fUVVPVEVEXyR7bi5sZW5ndGgtMX1fX2ApKSxvPXIubWF0Y2goLyg/Ol58XHMpXC4oW2EtekEtWl1bXHctXSopL2cpO2lmKG8pe2NvbnN0IGU9by5tYXAoZT0+ZS50cmltKCkuc2xpY2UoMSkpO3QuY2xhc3M9ZS5qb2luKCIgIil9Y29uc3QgaT1yLm1hdGNoKC8oPzpefFxzKSMoW2EtekEtWl1bXHctXSopLyk7aSYmKHQuaWQ9aVsxXSk7QXJyYXkuZnJvbShyLm1hdGNoQWxsKC8oW2EtekEtWl1bXHctXSopXHMqPVxzKihfX1FVT1RFRF9cZCtfXykvZykpLmZvckVhY2goKFssZSxyXSk9Pnt2YXIgbztjb25zdCBpPXBhcnNlSW50KChudWxsPT0obz1yLm1hdGNoKC9fX1FVT1RFRF8oXGQrKV9fLykpP3ZvaWQgMDpvWzFdKXx8IjAiLDEwKSxzPW5baV07cyYmKHRbZV09cy5zbGljZSgxLC0xKSl9KTtjb25zdCBzPXIucmVwbGFjZSgvKD86XnxccylcLihbYS16QS1aXVtcdy1dKikvZywiIikucmVwbGFjZSgvKD86XnxccykjKFthLXpBLVpdW1x3LV0qKS9nLCIiKS5yZXBsYWNlKC8oW2EtekEtWl1bXHctXSopXHMqPVxzKl9fUVVPVEVEX1xkK19fL2csIiIpLnRyaW0oKTtpZihzKXtzLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChlPT57ZS5tYXRjaCgvXlthLXpBLVpdW1x3LV0qJC8pJiYodFtlXT0hMCl9KX1yZXR1cm4gdH1mdW5jdGlvbiBzZXJpYWxpemVBdHRyaWJ1dGVzKGUpe2lmKCFlfHwwPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoKXJldHVybiIiO2NvbnN0IHQ9W107aWYoZS5jbGFzcyl7U3RyaW5nKGUuY2xhc3MpLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChlPT50LnB1c2goYC4ke2V9YCkpfXJldHVybiBlLmlkJiZ0LnB1c2goYCMke2UuaWR9YCksT2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW2Usbl0pPT57ImNsYXNzIiE9PWUmJiJpZCIhPT1lJiYoITA9PT1uP3QucHVzaChlKTohMSE9PW4mJm51bGwhPW4mJnQucHVzaChgJHtlfT0iJHtTdHJpbmcobil9ImApKX0pLHQuam9pbigiICIpfWZ1bmN0aW9uIGNyZWF0ZUF0b21CbG9ja01hcmtkb3duU3BlYyhlKXtjb25zdHtub2RlTmFtZTp0LG5hbWU6bixwYXJzZUF0dHJpYnV0ZXM6cj1wYXJzZUF0dHJpYnV0ZXMsc2VyaWFsaXplQXR0cmlidXRlczpvPXNlcmlhbGl6ZUF0dHJpYnV0ZXMsZGVmYXVsdEF0dHJpYnV0ZXM6aT17fSxyZXF1aXJlZEF0dHJpYnV0ZXM6cz1bXSxhbGxvd2VkQXR0cmlidXRlczpsfT1lLGE9bnx8dDtyZXR1cm57cGFyc2VNYXJrZG93bjooZSxuKT0+e2NvbnN0IHI9ey4uLmksLi4uZS5hdHRyaWJ1dGVzfTtyZXR1cm4gbi5jcmVhdGVOb2RlKHQscixbXSl9LG1hcmtkb3duVG9rZW5pemVyOntuYW1lOnQsbGV2ZWw6ImJsb2NrIixzdGFydChlKXt2YXIgdDtjb25zdCBuPW5ldyBSZWdFeHAoYF46Ojoke2F9KD86XFxzfCQpYCwibSIpLHI9bnVsbD09KHQ9ZS5tYXRjaChuKSk/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PXI/cjotMX0sdG9rZW5pemUoZSxuLG8pe2NvbnN0IGk9bmV3IFJlZ0V4cChgXjo6OiR7YX0oPzpcXHMrXFx7KFtefV0qKVxcfSk/XFxzKjo6Oig/OlxcbnwkKWApLGw9ZS5tYXRjaChpKTtpZighbClyZXR1cm47Y29uc3QgYz1sWzFdfHwiIixkPXIoYyk7cmV0dXJuIHMuZmluZChlPT4hKGUgaW4gZCkpP3ZvaWQgMDp7dHlwZTp0LHJhdzpsWzBdLGF0dHJpYnV0ZXM6ZH19fSxyZW5kZXJNYXJrZG93bjplPT57Y29uc3QgdD0oZT0+e2lmKCFsKXJldHVybiBlO2NvbnN0IHQ9e307cmV0dXJuIGwuZm9yRWFjaChuPT57biBpbiBlJiYodFtuXT1lW25dKX0pLHR9KShlLmF0dHJzfHx7fSksbj1vKHQpO3JldHVybmA6Ojoke2F9JHtuP2AgeyR7bn19YDoiIn0gOjo6YH19fWZ1bmN0aW9uIGNyZWF0ZUJsb2NrTWFya2Rvd25TcGVjKGUpe2NvbnN0e25vZGVOYW1lOnQsbmFtZTpuLGdldENvbnRlbnQ6cixwYXJzZUF0dHJpYnV0ZXM6bz1wYXJzZUF0dHJpYnV0ZXMsc2VyaWFsaXplQXR0cmlidXRlczppPXNlcmlhbGl6ZUF0dHJpYnV0ZXMsZGVmYXVsdEF0dHJpYnV0ZXM6cz17fSxjb250ZW50Omw9ImJsb2NrIixhbGxvd2VkQXR0cmlidXRlczphfT1lLGM9bnx8dDtyZXR1cm57cGFyc2VNYXJrZG93bjooZSxuKT0+e2xldCBvO2lmKHIpe2NvbnN0IHQ9cihlKTtvPSJzdHJpbmciPT10eXBlb2YgdD9be3R5cGU6InRleHQiLHRleHQ6dH1dOnR9ZWxzZSBvPSJibG9jayI9PT1sP24ucGFyc2VDaGlsZHJlbihlLnRva2Vuc3x8W10pOm4ucGFyc2VJbmxpbmUoZS50b2tlbnN8fFtdKTtjb25zdCBpPXsuLi5zLC4uLmUuYXR0cmlidXRlc307cmV0dXJuIG4uY3JlYXRlTm9kZSh0LGksbyl9LG1hcmtkb3duVG9rZW5pemVyOntuYW1lOnQsbGV2ZWw6ImJsb2NrIixzdGFydChlKXt2YXIgdDtjb25zdCBuPW5ldyBSZWdFeHAoYF46Ojoke2N9YCwibSIpLHI9bnVsbD09KHQ9ZS5tYXRjaChuKSk/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PXI/cjotMX0sdG9rZW5pemUoZSxuLHIpe3ZhciBpO2NvbnN0IHM9bmV3IFJlZ0V4cChgXjo6OiR7Y30oPzpcXHMrXFx7KFtefV0qKVxcfSk/XFxzKlxcbmApLGE9ZS5tYXRjaChzKTtpZighYSlyZXR1cm47Y29uc3RbZCxwPSIiXT1hLGY9byhwKTtsZXQgbT0xO2NvbnN0IHk9ZC5sZW5ndGg7bGV0IHc9IiI7Y29uc3QgYj0vXjo6OihbXHctXSopKFxzLiopPy9nbSx2PWUuc2xpY2UoeSk7Zm9yKGIubGFzdEluZGV4PTA7Oyl7Y29uc3Qgbj1iLmV4ZWModik7aWYobnVsbD09PW4pYnJlYWs7Y29uc3Qgbz1uLmluZGV4LHM9blsxXTtpZighKG51bGw9PShpPW5bMl0pP3ZvaWQgMDppLmVuZHNXaXRoKCI6OjoiKSkpaWYocyltKz0xO2Vsc2UgaWYobS09MSwwPT09bSl7Y29uc3QgaT12LnNsaWNlKDAsbyk7dz1pLnRyaW0oKTtjb25zdCBzPWUuc2xpY2UoMCx5K28rblswXS5sZW5ndGgpO2xldCBhPVtdO2lmKHcpaWYoImJsb2NrIj09PWwpZm9yKGE9ci5ibG9ja1Rva2VucyhpKSxhLmZvckVhY2goZT0+eyFlLnRleHR8fGUudG9rZW5zJiYwIT09ZS50b2tlbnMubGVuZ3RofHwoZS50b2tlbnM9ci5pbmxpbmVUb2tlbnMoZS50ZXh0KSl9KTthLmxlbmd0aD4wOyl7Y29uc3QgZT1hW2EubGVuZ3RoLTFdO2lmKCJwYXJhZ3JhcGgiIT09ZS50eXBlfHxlLnRleHQmJiIiIT09ZS50ZXh0LnRyaW0oKSlicmVhazthLnBvcCgpfWVsc2UgYT1yLmlubGluZVRva2Vucyh3KTtyZXR1cm57dHlwZTp0LHJhdzpzLGF0dHJpYnV0ZXM6Zixjb250ZW50OncsdG9rZW5zOmF9fX19fSxyZW5kZXJNYXJrZG93bjooZSx0KT0+e2NvbnN0IG49KGU9PntpZighYSlyZXR1cm4gZTtjb25zdCB0PXt9O3JldHVybiBhLmZvckVhY2gobj0+e24gaW4gZSYmKHRbbl09ZVtuXSl9KSx0fSkoZS5hdHRyc3x8e30pLHI9aShuKSxvPXI/YCB7JHtyfX1gOiIiLHM9dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnR8fFtdLCJcblxuIik7cmV0dXJuYDo6OiR7Y30ke299XG5cbiR7c31cblxuOjo6YH19fWZ1bmN0aW9uIHBhcnNlU2hvcnRjb2RlQXR0cmlidXRlcyhlKXtpZighZS50cmltKCkpcmV0dXJue307Y29uc3QgdD17fSxuPS8oXHcrKT0oPzoiKFteIl0qKSJ8JyhbXiddKiknKS9nO2xldCByPW4uZXhlYyhlKTtmb3IoO251bGwhPT1yOyl7Y29uc3RbLG8saSxzXT1yO3Rbb109aXx8cyxyPW4uZXhlYyhlKX1yZXR1cm4gdH1mdW5jdGlvbiBzZXJpYWxpemVTaG9ydGNvZGVBdHRyaWJ1dGVzKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFssZV0pPT5udWxsIT1lKS5tYXAoKFtlLHRdKT0+YCR7ZX09IiR7dH0iYCkuam9pbigiICIpfWZ1bmN0aW9uIGNyZWF0ZUlubGluZU1hcmtkb3duU3BlYyhlKXtjb25zdHtub2RlTmFtZTp0LG5hbWU6bixnZXRDb250ZW50OnIscGFyc2VBdHRyaWJ1dGVzOm89cGFyc2VTaG9ydGNvZGVBdHRyaWJ1dGVzLHNlcmlhbGl6ZUF0dHJpYnV0ZXM6aT1zZXJpYWxpemVTaG9ydGNvZGVBdHRyaWJ1dGVzLGRlZmF1bHRBdHRyaWJ1dGVzOnM9e30sc2VsZkNsb3Npbmc6bD0hMSxhbGxvd2VkQXR0cmlidXRlczphfT1lLGM9bnx8dCxkPWMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKTtyZXR1cm57cGFyc2VNYXJrZG93bjooZSxuKT0+e2NvbnN0IG89ey4uLnMsLi4uZS5hdHRyaWJ1dGVzfTtpZihsKXJldHVybiBuLmNyZWF0ZU5vZGUodCxvKTtjb25zdCBpPXI/cihlKTplLmNvbnRlbnR8fCIiO3JldHVybiBpP24uY3JlYXRlTm9kZSh0LG8sW24uY3JlYXRlVGV4dE5vZGUoaSldKTpuLmNyZWF0ZU5vZGUodCxvLFtdKX0sbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6dCxsZXZlbDoiaW5saW5lIixzdGFydChlKXtjb25zdCB0PWw/bmV3IFJlZ0V4cChgXFxbJHtkfVxccypbXlxcXV0qXFxdYCk6bmV3IFJlZ0V4cChgXFxbJHtkfVxccypbXlxcXV0qXFxdW1xcc1xcU10qP1xcW1xcLyR7ZH1cXF1gKSxuPWUubWF0Y2godCkscj1udWxsPT1uP3ZvaWQgMDpuLmluZGV4O3JldHVybiB2b2lkIDAhPT1yP3I6LTF9LHRva2VuaXplKGUsbixyKXtjb25zdCBpPWw/bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdYCk6bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdKFtcXHNcXFNdKj8pXFxbXFwvJHtkfVxcXWApLHM9ZS5tYXRjaChpKTtpZighcylyZXR1cm47bGV0IGE9IiIsYz0iIjtpZihsKXtjb25zdFssZV09cztjPWV9ZWxzZXtjb25zdFssZSx0XT1zO2M9ZSxhPXR8fCIifWNvbnN0IHA9byhjLnRyaW0oKSk7cmV0dXJue3R5cGU6dCxyYXc6c1swXSxjb250ZW50OmEudHJpbSgpLGF0dHJpYnV0ZXM6cH19fSxyZW5kZXJNYXJrZG93bjplPT57bGV0IHQ9IiI7cj90PXIoZSk6ZS5jb250ZW50JiZlLmNvbnRlbnQubGVuZ3RoPjAmJih0PWUuY29udGVudC5maWx0ZXIoZT0+InRleHQiPT09ZS50eXBlKS5tYXAoZT0+ZS50ZXh0KS5qb2luKCIiKSk7Y29uc3Qgbj0oZT0+e2lmKCFhKXJldHVybiBlO2NvbnN0IHQ9e307cmV0dXJuIGEuZm9yRWFjaChuPT57Y29uc3Qgcj0ic3RyaW5nIj09dHlwZW9mIG4/bjpuLm5hbWUsbz0ic3RyaW5nIj09dHlwZW9mIG4/dm9pZCAwOm4uc2tpcElmRGVmYXVsdDtpZihyIGluIGUpe2NvbnN0IG49ZVtyXTtpZih2b2lkIDAhPT1vJiZuPT09bylyZXR1cm47dFtyXT1ufX0pLHR9KShlLmF0dHJzfHx7fSksbz1pKG4pLHM9bz9gICR7b31gOiIiO3JldHVybiBsP2BbJHtjfSR7c31dYDpgWyR7Y30ke3N9XSR7dH1bLyR7Y31dYH19fWZ1bmN0aW9uIHBhcnNlSW5kZW50ZWRCbG9ja3MoZSx0LG4pe3ZhciByLG8saSxzO2NvbnN0IGw9ZS5zcGxpdCgiXG4iKSxhPVtdO2xldCBjPSIiLGQ9MDtjb25zdCBwPXQuYmFzZUluZGVudFNpemV8fDI7Zm9yKDtkPGwubGVuZ3RoOyl7Y29uc3QgZT1sW2RdLGY9ZS5tYXRjaCh0Lml0ZW1QYXR0ZXJuKTtpZighZil7aWYoYS5sZW5ndGg+MClicmVhaztpZigiIj09PWUudHJpbSgpKXtkKz0xLGM9YCR7Y30ke2V9XG5gO2NvbnRpbnVlfXJldHVybn1jb25zdCBtPXQuZXh0cmFjdEl0ZW1EYXRhKGYpLHtpbmRlbnRMZXZlbDp5LG1haW5Db250ZW50Ond9PW07Yz1gJHtjfSR7ZX1cbmA7Y29uc3QgYj1bd107Zm9yKGQrPTE7ZDxsLmxlbmd0aDspe2NvbnN0IGU9bFtkXTtpZigiIj09PWUudHJpbSgpKXtjb25zdCB0PWwuc2xpY2UoZCsxKS5maW5kSW5kZXgoZT0+IiIhPT1lLnRyaW0oKSk7aWYoLTE9PT10KWJyZWFrO2lmKCgobnVsbD09KG89bnVsbD09KHI9bFtkKzErdF0ubWF0Y2goL14oXHMqKS8pKT92b2lkIDA6clsxXSk/dm9pZCAwOm8ubGVuZ3RoKXx8MCk+eSl7Yi5wdXNoKGUpLGM9YCR7Y30ke2V9XG5gLGQrPTE7Y29udGludWV9YnJlYWt9aWYoISgoKG51bGw9PShzPW51bGw9PShpPWUubWF0Y2goL14oXHMqKS8pKT92b2lkIDA6aVsxXSk/dm9pZCAwOnMubGVuZ3RoKXx8MCk+eSkpYnJlYWs7Yi5wdXNoKGUpLGM9YCR7Y30ke2V9XG5gLGQrPTF9bGV0IHY7Y29uc3QgeD1iLnNsaWNlKDEpO2lmKHgubGVuZ3RoPjApe2NvbnN0IGU9eC5tYXAoZT0+ZS5zbGljZSh5K3ApKS5qb2luKCJcbiIpO2UudHJpbSgpJiYodj10LmN1c3RvbU5lc3RlZFBhcnNlcj90LmN1c3RvbU5lc3RlZFBhcnNlcihlKTpuLmJsb2NrVG9rZW5zKGUpKX1jb25zdCBTPXQuY3JlYXRlVG9rZW4obSx2KTthLnB1c2goUyl9aWYoMCE9PWEubGVuZ3RoKXJldHVybntpdGVtczphLHJhdzpjfX1mdW5jdGlvbiByZW5kZXJOZXN0ZWRNYXJrZG93bkNvbnRlbnQoZSx0LG4scil7aWYoIWV8fCFBcnJheS5pc0FycmF5KGUuY29udGVudCkpcmV0dXJuIiI7Y29uc3Qgbz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHIpOm4sW2ksLi4uc109ZS5jb250ZW50O2xldCBsPWAke299JHt0LnJlbmRlckNoaWxkcmVuKFtpXSl9YDtyZXR1cm4gcyYmcy5sZW5ndGg+MCYmcy5mb3JFYWNoKChlLG4pPT57dmFyIHIsbztjb25zdCBpPW51bGwhPShvPW51bGw9PShyPXQucmVuZGVyQ2hpbGQpP3ZvaWQgMDpyLmNhbGwodCxlLG4rMSkpP286dC5yZW5kZXJDaGlsZHJlbihbZV0pO2lmKG51bGwhPWkpe2NvbnN0IG49aS5zcGxpdCgiXG4iKS5tYXAoZT0+ZT90LmluZGVudChlKTp0LmluZGVudCgiIikpLmpvaW4oIlxuIik7bCs9InBhcmFncmFwaCI9PT1lLnR5cGU/YFxuXG4ke259YDpgXG4ke259YH19KSxsfV9fZXhwb3J0JDEoe30se2NyZWF0ZUF0b21CbG9ja01hcmtkb3duU3BlYzooKT0+Y3JlYXRlQXRvbUJsb2NrTWFya2Rvd25TcGVjLGNyZWF0ZUJsb2NrTWFya2Rvd25TcGVjOigpPT5jcmVhdGVCbG9ja01hcmtkb3duU3BlYyxjcmVhdGVJbmxpbmVNYXJrZG93blNwZWM6KCk9PmNyZWF0ZUlubGluZU1hcmtkb3duU3BlYyxwYXJzZUF0dHJpYnV0ZXM6KCk9PnBhcnNlQXR0cmlidXRlcyxwYXJzZUluZGVudGVkQmxvY2tzOigpPT5wYXJzZUluZGVudGVkQmxvY2tzLHJlbmRlck5lc3RlZE1hcmtkb3duQ29udGVudDooKT0+cmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50LHNlcmlhbGl6ZUF0dHJpYnV0ZXM6KCk9PnNlcmlhbGl6ZUF0dHJpYnV0ZXN9KTt2YXIgb249Y2xhc3MgX05vZGUgZXh0ZW5kcyBCdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy50eXBlPSJub2RlIn1zdGF0aWMgY3JlYXRlKGU9e30pe2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmU7cmV0dXJuIG5ldyBfTm9kZSh0KX1jb25maWd1cmUoZSl7cmV0dXJuIHN1cGVyLmNvbmZpZ3VyZShlKX1leHRlbmQoZSl7Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKCk6ZTtyZXR1cm4gc3VwZXIuZXh0ZW5kKHQpfX07ZnVuY3Rpb24gbWFya1Bhc3RlUnVsZShlKXtyZXR1cm4gbmV3IEh0KHtmaW5kOmUuZmluZCxoYW5kbGVyOih7c3RhdGU6dCxyYW5nZTpuLG1hdGNoOnIscGFzdGVFdmVudDpvfSk9Pntjb25zdCBpPWNhbGxPclJldHVybihlLmdldEF0dHJpYnV0ZXMsdm9pZCAwLHIsbyk7aWYoITE9PT1pfHxudWxsPT09aSlyZXR1cm4gbnVsbDtjb25zdHt0cjpzfT10LGw9cltyLmxlbmd0aC0xXSxhPXJbMF07bGV0IGM9bi50bztpZihsKXtjb25zdCBvPWEuc2VhcmNoKC9cUy8pLGQ9bi5mcm9tK2EuaW5kZXhPZihsKSxwPWQrbC5sZW5ndGg7aWYoZ2V0TWFya3NCZXR3ZWVuKG4uZnJvbSxuLnRvLHQuZG9jKS5maWx0ZXIodD0+dC5tYXJrLnR5cGUuZXhjbHVkZWQuZmluZChuPT5uPT09ZS50eXBlJiZuIT09dC5tYXJrLnR5cGUpKS5maWx0ZXIoZT0+ZS50bz5kKS5sZW5ndGgpcmV0dXJuIG51bGw7cDxuLnRvJiZzLmRlbGV0ZShwLG4udG8pLGQ+bi5mcm9tJiZzLmRlbGV0ZShuLmZyb20rbyxkKSxjPW4uZnJvbStvK2wubGVuZ3RoLHMuYWRkTWFyayhuLmZyb20rbyxjLGUudHlwZS5jcmVhdGUoaXx8e30pKTt2b2lkIDAhPT1yLmluZGV4JiZ2b2lkIDAhPT1yLmlucHV0JiZyLmluZGV4K3JbMF0ubGVuZ3RoPj1yLmlucHV0Lmxlbmd0aHx8cy5yZW1vdmVTdG9yZWRNYXJrKGUudHlwZSl9fX0pfXZhciBzbj0vKF58W15gXSlgKFteYF0rKWAoPyFgKSQvLGxuPS8oXnxbXmBdKWAoW15gXSspYCg/IWApL2csYW49RnQuY3JlYXRlKHtuYW1lOiJjb2RlIixhZGRPcHRpb25zOigpPT4oe0hUTUxBdHRyaWJ1dGVzOnt9fSksZXhjbHVkZXM6Il8iLGNvZGU6ITAsZXhpdGFibGU6ITAscGFyc2VIVE1MOigpPT5be3RhZzoiY29kZSJ9XSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuWyJjb2RlIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLDBdfSxtYXJrZG93blRva2VuTmFtZToiY29kZXNwYW4iLHBhcnNlTWFya2Rvd246KGUsdCk9PnQuYXBwbHlNYXJrKCJjb2RlIixbe3R5cGU6InRleHQiLHRleHQ6ZS50ZXh0fHwiIn1dKSxyZW5kZXJNYXJrZG93bjooZSx0KT0+ZS5jb250ZW50P2BcYCR7dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQpfVxgYDoiIixhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlQ29kZTooKT0+KHtjb21tYW5kczplfSk9PmUudG9nZ2xlTWFyayh0aGlzLm5hbWUpLHVuc2V0Q29kZTooKT0+KHtjb21tYW5kczplfSk9PmUudW5zZXRNYXJrKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLWUiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVDb2RlKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6c24sdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bbWFya1Bhc3RlUnVsZSh7ZmluZDpsbix0eXBlOnRoaXMudHlwZX0pXX19KSxjbj1hbixkbj1vbi5jcmVhdGUoe25hbWU6Imhvcml6b250YWxSdWxlIixhZGRPcHRpb25zOigpPT4oe0hUTUxBdHRyaWJ1dGVzOnt9LG5leHROb2RlVHlwZToicGFyYWdyYXBoIn0pLGdyb3VwOiJibG9jayIscGFyc2VIVE1MOigpPT5be3RhZzoiaHIifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsiaHIiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSldfSxtYXJrZG93blRva2VuTmFtZToiaHIiLHBhcnNlTWFya2Rvd246KGUsdCk9PnQuY3JlYXRlTm9kZSgiaG9yaXpvbnRhbFJ1bGUiKSxyZW5kZXJNYXJrZG93bjooKT0+Ii0tLSIsYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SG9yaXpvbnRhbFJ1bGU6KCk9Pih7Y2hhaW46ZSxzdGF0ZTp0fSk9PntpZighZnVuY3Rpb24oZSx0KXtjb25zdHtzZWxlY3Rpb246bn09ZSx7JGZyb206cn09bjtpZihuIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbil7Y29uc3QgZT1yLmluZGV4KCk7cmV0dXJuIHIucGFyZW50LmNhblJlcGxhY2VXaXRoKGUsZSsxLHQpfWxldCBvPXIuZGVwdGg7Zm9yKDtvPj0wOyl7Y29uc3QgZT1yLmluZGV4KG8pO2lmKHIubm9kZShvKS5jb250ZW50TWF0Y2hBdChlKS5tYXRjaFR5cGUodCkpcmV0dXJuITA7by09MX1yZXR1cm4hMX0odCx0LnNjaGVtYS5ub2Rlc1t0aGlzLm5hbWVdKSlyZXR1cm4hMTtjb25zdHtzZWxlY3Rpb246bn09dCx7JHRvOnJ9PW4sbz1lKCk7cmV0dXJuIGlzTm9kZVNlbGVjdGlvbihuKT9vLmluc2VydENvbnRlbnRBdChyLnBvcyx7dHlwZTp0aGlzLm5hbWV9KTpvLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSksby5jb21tYW5kKCh7c3RhdGU6ZSx0cjp0LGRpc3BhdGNoOm59KT0+e2lmKG4pe2NvbnN0eyR0bzpufT10LnNlbGVjdGlvbixyPW4uZW5kKCk7aWYobi5ub2RlQWZ0ZXIpbi5ub2RlQWZ0ZXIuaXNUZXh0YmxvY2s/dC5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5jcmVhdGUodC5kb2Msbi5wb3MrMSkpOm4ubm9kZUFmdGVyLmlzQmxvY2s/dC5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUodC5kb2Msbi5wb3MpKTp0LnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0LmRvYyxuLnBvcykpO2Vsc2V7Y29uc3Qgbz1lLnNjaGVtYS5ub2Rlc1t0aGlzLm9wdGlvbnMubmV4dE5vZGVUeXBlXXx8bi5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2guZGVmYXVsdFR5cGUsaT1udWxsPT1vP3ZvaWQgMDpvLmNyZWF0ZSgpO2kmJih0Lmluc2VydChyLGkpLHQuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24uY3JlYXRlKHQuZG9jLHIrMSkpKX10LnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9KS5ydW4oKX19fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW25vZGVJbnB1dFJ1bGUoe2ZpbmQ6L14oPzotLS184oCULXxfX19cc3xcKlwqXCpccykkLyx0eXBlOnRoaXMudHlwZX0pXX19KSxwbj1kbixobj0vKD86XnxccykoIVxbKC4rfDo/KV1cKChcUyspKD86KD86XHMrKVsiJ10oXFMrKVsiJ10pP1wpKSQvLHVuPW9uLmNyZWF0ZSh7bmFtZToiaW1hZ2UiLGFkZE9wdGlvbnM6KCk9Pih7aW5saW5lOiExLGFsbG93QmFzZTY0OiExLEhUTUxBdHRyaWJ1dGVzOnt9LHJlc2l6ZTohMX0pLGlubGluZSgpe3JldHVybiB0aGlzLm9wdGlvbnMuaW5saW5lfSxncm91cCgpe3JldHVybiB0aGlzLm9wdGlvbnMuaW5saW5lPyJpbmxpbmUiOiJibG9jayJ9LGRyYWdnYWJsZTohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe3NyYzp7ZGVmYXVsdDpudWxsfSxhbHQ6e2RlZmF1bHQ6bnVsbH0sdGl0bGU6e2RlZmF1bHQ6bnVsbH0sd2lkdGg6e2RlZmF1bHQ6bnVsbH0saGVpZ2h0OntkZWZhdWx0Om51bGx9fSkscGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6dGhpcy5vcHRpb25zLmFsbG93QmFzZTY0PyJpbWdbc3JjXSI6J2ltZ1tzcmNdOm5vdChbc3JjXj0iZGF0YToiXSknfV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bImltZyIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKV19LHBhcnNlTWFya2Rvd246KGUsdCk9PnQuY3JlYXRlTm9kZSgiaW1hZ2UiLHtzcmM6ZS5ocmVmLHRpdGxlOmUudGl0bGUsYWx0OmUudGV4dH0pLHJlbmRlck1hcmtkb3duOmU9Pnt2YXIgdCxuLHIsbyxpLHM7Y29uc3QgbD1udWxsIT0obj1udWxsPT0odD1lLmF0dHJzKT92b2lkIDA6dC5zcmMpP246IiIsYT1udWxsIT0obz1udWxsPT0ocj1lLmF0dHJzKT92b2lkIDA6ci5hbHQpP286IiIsYz1udWxsIT0ocz1udWxsPT0oaT1lLmF0dHJzKT92b2lkIDA6aS50aXRsZSk/czoiIjtyZXR1cm4gYz9gIVske2F9XSgke2x9ICIke2N9IilgOmAhWyR7YX1dKCR7bH0pYH0sYWRkTm9kZVZpZXcoKXtpZighdGhpcy5vcHRpb25zLnJlc2l6ZXx8IXRoaXMub3B0aW9ucy5yZXNpemUuZW5hYmxlZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4gbnVsbDtjb25zdHtkaXJlY3Rpb25zOmUsbWluV2lkdGg6dCxtaW5IZWlnaHQ6bixhbHdheXNQcmVzZXJ2ZUFzcGVjdFJhdGlvOnJ9PXRoaXMub3B0aW9ucy5yZXNpemU7cmV0dXJuKHtub2RlOm8sZ2V0UG9zOmksSFRNTEF0dHJpYnV0ZXM6cyxlZGl0b3I6bH0pPT57Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtPYmplY3QuZW50cmllcyhzKS5mb3JFYWNoKChbZSx0XSk9PntpZihudWxsIT10KXN3aXRjaChlKXtjYXNlIndpZHRoIjpjYXNlImhlaWdodCI6YnJlYWs7ZGVmYXVsdDphLnNldEF0dHJpYnV0ZShlLHQpfX0pLGEuc3JjPXMuc3JjO2NvbnN0IGM9bmV3IHJuKHtlbGVtZW50OmEsZWRpdG9yOmwsbm9kZTpvLGdldFBvczppLG9uUmVzaXplOihlLHQpPT57YS5zdHlsZS53aWR0aD1gJHtlfXB4YCxhLnN0eWxlLmhlaWdodD1gJHt0fXB4YH0sb25Db21taXQ6KGUsdCk9Pntjb25zdCBuPWkoKTt2b2lkIDAhPT1uJiZ0aGlzLmVkaXRvci5jaGFpbigpLnNldE5vZGVTZWxlY3Rpb24obikudXBkYXRlQXR0cmlidXRlcyh0aGlzLm5hbWUse3dpZHRoOmUsaGVpZ2h0OnR9KS5ydW4oKX0sb25VcGRhdGU6KGUsdCxuKT0+ZS50eXBlPT09by50eXBlLG9wdGlvbnM6e2RpcmVjdGlvbnM6ZSxtaW46e3dpZHRoOnQsaGVpZ2h0Om59LHByZXNlcnZlQXNwZWN0UmF0aW86ITA9PT1yfX0pLGQ9Yy5kb207cmV0dXJuIGQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixkLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLGEub25sb2FkPSgpPT57ZC5zdHlsZS52aXNpYmlsaXR5PSIiLGQuc3R5bGUucG9pbnRlckV2ZW50cz0iIn0sY319LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEltYWdlOmU9Pih7Y29tbWFuZHM6dH0pPT50Lmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lLGF0dHJzOmV9KX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bbm9kZUlucHV0UnVsZSh7ZmluZDpobix0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOmU9Pntjb25zdFssLHQsbixyXT1lO3JldHVybntzcmM6bixhbHQ6dCx0aXRsZTpyfX19KV19fSksZm49dW47ZnVuY3Rpb24gZmluZFN1Z2dlc3Rpb25NYXRjaChlKXt2YXIgdDtjb25zdHtjaGFyOm4sYWxsb3dTcGFjZXM6cixhbGxvd1RvSW5jbHVkZUNoYXI6byxhbGxvd2VkUHJlZml4ZXM6aSxzdGFydE9mTGluZTpzLCRwb3NpdGlvbjpsfT1lLGE9ciYmIW8sYz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLS9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9KG4pLGQ9bmV3IFJlZ0V4cChgXFxzJHtjfSRgKSxwPXM/Il4iOiIiLGY9bz8iIjpjLG09YT9uZXcgUmVnRXhwKGAke3B9JHtjfS4qPyg/PVxccyR7Zn18JClgLCJnbSIpOm5ldyBSZWdFeHAoYCR7cH0oPzpeKT8ke2N9W15cXHMke2Z9XSpgLCJnbSIpLHk9KG51bGw9PSh0PWwubm9kZUJlZm9yZSk/dm9pZCAwOnQuaXNUZXh0KSYmbC5ub2RlQmVmb3JlLnRleHQ7aWYoIXkpcmV0dXJuIG51bGw7Y29uc3Qgdz1sLnBvcy15Lmxlbmd0aCxiPUFycmF5LmZyb20oeS5tYXRjaEFsbChtKSkucG9wKCk7aWYoIWJ8fHZvaWQgMD09PWIuaW5wdXR8fHZvaWQgMD09PWIuaW5kZXgpcmV0dXJuIG51bGw7Y29uc3Qgdj1iLmlucHV0LnNsaWNlKE1hdGgubWF4KDAsYi5pbmRleC0xKSxiLmluZGV4KSx4PW5ldyBSZWdFeHAoYF5bJHtudWxsPT1pP3ZvaWQgMDppLmpvaW4oIiIpfVwwXT8kYCkudGVzdCh2KTtpZihudWxsIT09aSYmIXgpcmV0dXJuIG51bGw7Y29uc3QgUz13K2IuaW5kZXg7bGV0IEM9UytiWzBdLmxlbmd0aDtyZXR1cm4gYSYmZC50ZXN0KHkuc2xpY2UoQy0xLEMrMSkpJiYoYlswXSs9IiAiLEMrPTEpLFM8bC5wb3MmJkM+PWwucG9zP3tyYW5nZTp7ZnJvbTpTLHRvOkN9LHF1ZXJ5OmJbMF0uc2xpY2Uobi5sZW5ndGgpLHRleHQ6YlswXX06bnVsbH12YXIgbW49bmV3IFBsdWdpbktleSgic3VnZ2VzdGlvbiIpO2Z1bmN0aW9uIFN1Z2dlc3Rpb24oe3BsdWdpbktleTplPW1uLGVkaXRvcjp0LGNoYXI6bj0iQCIsYWxsb3dTcGFjZXM6cj0hMSxhbGxvd1RvSW5jbHVkZUNoYXI6bz0hMSxhbGxvd2VkUHJlZml4ZXM6aT1bIiAiXSxzdGFydE9mTGluZTpzPSExLGRlY29yYXRpb25UYWc6bD0ic3BhbiIsZGVjb3JhdGlvbkNsYXNzOmE9InN1Z2dlc3Rpb24iLGRlY29yYXRpb25Db250ZW50OmM9IiIsZGVjb3JhdGlvbkVtcHR5Q2xhc3M6ZD0iaXMtZW1wdHkiLGNvbW1hbmQ6cD0oKT0+bnVsbCxpdGVtczpmPSgpPT5bXSxyZW5kZXI6bT0oKT0+KHt9KSxhbGxvdzp5PSgpPT4hMCxmaW5kU3VnZ2VzdGlvbk1hdGNoOnc9ZmluZFN1Z2dlc3Rpb25NYXRjaCxzaG91bGRTaG93OmIsc2hvdWxkUmVzZXREaXNtaXNzZWQ6dn0pe2xldCB4O2NvbnN0IFM9bnVsbD09bT92b2lkIDA6bSgpLEM9ciYmIW8sZ2V0QW5jaG9yQ2xpZW50UmVjdD0oKT0+e2NvbnN0IGU9dC5zdGF0ZS5zZWxlY3Rpb24uJGFuY2hvci5wb3Msbj10LnZpZXcuY29vcmRzQXRQb3MoZSkse3RvcDpyLHJpZ2h0Om8sYm90dG9tOmksbGVmdDpzfT1uO3RyeXtyZXR1cm4gbmV3IERPTVJlY3QocyxyLG8tcyxpLXIpfWNhdGNoe3JldHVybiBudWxsfX0sY2xpZW50UmVjdEZvcj0obixyKT0+cj8oKT0+e2NvbnN0IHI9ZS5nZXRTdGF0ZSh0LnN0YXRlKSxvPW51bGw9PXI/dm9pZCAwOnIuZGVjb3JhdGlvbklkLGk9bi5kb20ucXVlcnlTZWxlY3RvcihgW2RhdGEtZGVjb3JhdGlvbi1pZD0iJHtvfSJdYCk7cmV0dXJuKG51bGw9PWk/dm9pZCAwOmkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfHxudWxsfTpnZXRBbmNob3JDbGllbnRSZWN0O2NvbnN0IEE9bmV3IFBsdWdpbih7a2V5OmUsdmlldygpe3JldHVybnt1cGRhdGU6YXN5bmMoZSxuKT0+e3ZhciByLG8saSxzLGwsYSxjO2NvbnN0IGQ9bnVsbD09KHI9dGhpcy5rZXkpP3ZvaWQgMDpyLmdldFN0YXRlKG4pLG09bnVsbD09KG89dGhpcy5rZXkpP3ZvaWQgMDpvLmdldFN0YXRlKGUuc3RhdGUpLHk9ZC5hY3RpdmUmJm0uYWN0aXZlJiZkLnJhbmdlLmZyb20hPT1tLnJhbmdlLmZyb20sdz0hZC5hY3RpdmUmJm0uYWN0aXZlLGI9ZC5hY3RpdmUmJiFtLmFjdGl2ZSx2PSF3JiYhYiYmZC5xdWVyeSE9PW0ucXVlcnksQz13fHx5JiZ2LEE9dnx8eSxPPWJ8fHkmJnY7aWYoIUMmJiFBJiYhTylyZXR1cm47Y29uc3QgRT1PJiYhQz9kOm0sTj1lLmRvbS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1kZWNvcmF0aW9uLWlkPSIke0UuZGVjb3JhdGlvbklkfSJdYCk7eD17ZWRpdG9yOnQscmFuZ2U6RS5yYW5nZSxxdWVyeTpFLnF1ZXJ5LHRleHQ6RS50ZXh0LGl0ZW1zOltdLGNvbW1hbmQ6ZT0+cCh7ZWRpdG9yOnQscmFuZ2U6RS5yYW5nZSxwcm9wczplfSksZGVjb3JhdGlvbk5vZGU6TixjbGllbnRSZWN0OmNsaWVudFJlY3RGb3IoZSxOKX0sQyYmKG51bGw9PShpPW51bGw9PVM/dm9pZCAwOlMub25CZWZvcmVTdGFydCl8fGkuY2FsbChTLHgpKSxBJiYobnVsbD09KHM9bnVsbD09Uz92b2lkIDA6Uy5vbkJlZm9yZVVwZGF0ZSl8fHMuY2FsbChTLHgpKSwoQXx8QykmJih4Lml0ZW1zPWF3YWl0IGYoe2VkaXRvcjp0LHF1ZXJ5OkUucXVlcnl9KSksTyYmKG51bGw9PShsPW51bGw9PVM/dm9pZCAwOlMub25FeGl0KXx8bC5jYWxsKFMseCkpLEEmJihudWxsPT0oYT1udWxsPT1TP3ZvaWQgMDpTLm9uVXBkYXRlKXx8YS5jYWxsKFMseCkpLEMmJihudWxsPT0oYz1udWxsPT1TP3ZvaWQgMDpTLm9uU3RhcnQpfHxjLmNhbGwoUyx4KSl9LGRlc3Ryb3k6KCk9Pnt2YXIgZTt4JiYobnVsbD09KGU9bnVsbD09Uz92b2lkIDA6Uy5vbkV4aXQpfHxlLmNhbGwoUyx4KSl9fX0sc3RhdGU6e2luaXQ6KCk9Pih7YWN0aXZlOiExLHJhbmdlOntmcm9tOjAsdG86MH0scXVlcnk6bnVsbCx0ZXh0Om51bGwsY29tcG9zaW5nOiExLGRpc21pc3NlZFJhbmdlOm51bGx9KSxhcHBseShsLGEsYyxkKXtjb25zdHtpc0VkaXRhYmxlOnB9PXQse2NvbXBvc2luZzpmfT10LnZpZXcse3NlbGVjdGlvbjptfT1sLHtlbXB0eTp4LGZyb206U309bSxBPXsuLi5hfSxPPWwuZ2V0TWV0YShlKTtpZihPJiZPLmV4aXQpcmV0dXJuIEEuYWN0aXZlPSExLEEuZGVjb3JhdGlvbklkPW51bGwsQS5yYW5nZT17ZnJvbTowLHRvOjB9LEEucXVlcnk9bnVsbCxBLnRleHQ9bnVsbCxBLmRpc21pc3NlZFJhbmdlPWEuYWN0aXZlP3suLi5hLnJhbmdlfTphLmRpc21pc3NlZFJhbmdlLEE7aWYoQS5jb21wb3Npbmc9ZixsLmRvY0NoYW5nZWQmJm51bGwhPT1BLmRpc21pc3NlZFJhbmdlJiYoQS5kaXNtaXNzZWRSYW5nZT17ZnJvbTpsLm1hcHBpbmcubWFwKEEuZGlzbWlzc2VkUmFuZ2UuZnJvbSksdG86bC5tYXBwaW5nLm1hcChBLmRpc21pc3NlZFJhbmdlLnRvKX0pLHAmJih4fHx0LnZpZXcuY29tcG9zaW5nKSl7IShTPGEucmFuZ2UuZnJvbXx8Uz5hLnJhbmdlLnRvKXx8Znx8YS5jb21wb3Npbmd8fChBLmFjdGl2ZT0hMSk7Y29uc3QgZT13KHtjaGFyOm4sYWxsb3dTcGFjZXM6cixhbGxvd1RvSW5jbHVkZUNoYXI6byxhbGxvd2VkUHJlZml4ZXM6aSxzdGFydE9mTGluZTpzLCRwb3NpdGlvbjptLiRmcm9tfSksYz1gaWRfJHtNYXRoLmZsb29yKDQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKSl9YDtlJiZ5KHtlZGl0b3I6dCxzdGF0ZTpkLHJhbmdlOmUucmFuZ2UsaXNBY3RpdmU6YS5hY3RpdmV9KSYmKCFifHxiKHtlZGl0b3I6dCxyYW5nZTplLnJhbmdlLHF1ZXJ5OmUucXVlcnksdGV4dDplLnRleHQsdHJhbnNhY3Rpb246bH0pKT8obnVsbD09PUEuZGlzbWlzc2VkUmFuZ2V8fCgoe21hdGNoOmUsZGlzbWlzc2VkUmFuZ2U6bixzdGF0ZTpyLHRyYW5zYWN0aW9uOm99KT0+IShudWxsPT12P3ZvaWQgMDp2KHtlZGl0b3I6dCxzdGF0ZTpyLHJhbmdlOm4sbWF0Y2g6ZSx0cmFuc2FjdGlvbjpvLGFsbG93U3BhY2VzOkN9KSkmJihDP2UucmFuZ2UuZnJvbT09PW4uZnJvbTplLnJhbmdlLmZyb209PT1uLmZyb20mJiFmdW5jdGlvbihlKXtyZXR1cm4hIWUuZG9jQ2hhbmdlZCYmZS5zdGVwcy5zb21lKGU9Pntjb25zdCB0PWUuc2xpY2U7aWYoIShudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnQpKXJldHVybiExO2NvbnN0IG49dC5jb250ZW50LnRleHRCZXR3ZWVuKDAsdC5jb250ZW50LnNpemUsIlxuIik7cmV0dXJuL1xzLy50ZXN0KG4pfSl9KG8pKSkoe21hdGNoOmUsZGlzbWlzc2VkUmFuZ2U6QS5kaXNtaXNzZWRSYW5nZSxzdGF0ZTpkLHRyYW5zYWN0aW9uOmx9KXx8KEEuZGlzbWlzc2VkUmFuZ2U9bnVsbCksbnVsbD09PUEuZGlzbWlzc2VkUmFuZ2U/KEEuYWN0aXZlPSEwLEEuZGVjb3JhdGlvbklkPWEuZGVjb3JhdGlvbklkP2EuZGVjb3JhdGlvbklkOmMsQS5yYW5nZT1lLnJhbmdlLEEucXVlcnk9ZS5xdWVyeSxBLnRleHQ9ZS50ZXh0KTpBLmFjdGl2ZT0hMSk6KGV8fChBLmRpc21pc3NlZFJhbmdlPW51bGwpLEEuYWN0aXZlPSExKX1lbHNlIEEuYWN0aXZlPSExO3JldHVybiBBLmFjdGl2ZXx8KEEuZGVjb3JhdGlvbklkPW51bGwsQS5yYW5nZT17ZnJvbTowLHRvOjB9LEEucXVlcnk9bnVsbCxBLnRleHQ9bnVsbCksQX19LHByb3BzOntoYW5kbGVLZXlEb3duKG4scil7dmFyIG8saTtjb25zdHthY3RpdmU6cyxyYW5nZTpsfT1BLmdldFN0YXRlKG4uc3RhdGUpO2lmKCFzKXJldHVybiExO2lmKCJFc2NhcGUiPT09ci5rZXl8fCJFc2MiPT09ci5rZXkpe2NvbnN0IGk9QS5nZXRTdGF0ZShuLnN0YXRlKTtyZXR1cm4gbnVsbD09KG89bnVsbD09Uz92b2lkIDA6Uy5vbktleURvd24pfHxvLmNhbGwoUyx7dmlldzpuLGV2ZW50OnIscmFuZ2U6aS5yYW5nZX0pLGZ1bmN0aW9uKG4scil7dmFyIG87dHJ5e2NvbnN0IHI9ZS5nZXRTdGF0ZShuLnN0YXRlKSxpPShudWxsPT1yP3ZvaWQgMDpyLmRlY29yYXRpb25JZCk/bi5kb20ucXVlcnlTZWxlY3RvcihgW2RhdGEtZGVjb3JhdGlvbi1pZD0iJHtyLmRlY29yYXRpb25JZH0iXWApOm51bGwscz17ZWRpdG9yOnQscmFuZ2U6KG51bGw9PXI/dm9pZCAwOnIucmFuZ2UpfHx7ZnJvbTowLHRvOjB9LHF1ZXJ5OihudWxsPT1yP3ZvaWQgMDpyLnF1ZXJ5KXx8bnVsbCx0ZXh0OihudWxsPT1yP3ZvaWQgMDpyLnRleHQpfHxudWxsLGl0ZW1zOltdLGNvbW1hbmQ6ZT0+cCh7ZWRpdG9yOnQscmFuZ2U6KG51bGw9PXI/dm9pZCAwOnIucmFuZ2UpfHx7ZnJvbTowLHRvOjB9LHByb3BzOmV9KSxkZWNvcmF0aW9uTm9kZTppLGNsaWVudFJlY3Q6Y2xpZW50UmVjdEZvcihuLGkpfTtudWxsPT0obz1udWxsPT1TP3ZvaWQgMDpTLm9uRXhpdCl8fG8uY2FsbChTLHMpfWNhdGNoe31jb25zdCBpPW4uc3RhdGUudHIuc2V0TWV0YShyLHtleGl0OiEwfSk7bi5kaXNwYXRjaChpKX0obixlKSwhMH1yZXR1cm4obnVsbD09KGk9bnVsbD09Uz92b2lkIDA6Uy5vbktleURvd24pP3ZvaWQgMDppLmNhbGwoUyx7dmlldzpuLGV2ZW50OnIscmFuZ2U6bH0pKXx8ITF9LGRlY29yYXRpb25zKGUpe2NvbnN0e2FjdGl2ZTp0LHJhbmdlOm4sZGVjb3JhdGlvbklkOnIscXVlcnk6b309QS5nZXRTdGF0ZShlKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBpPSEobnVsbD09bz92b2lkIDA6by5sZW5ndGgpLHM9W2FdO3JldHVybiBpJiZzLnB1c2goZCksRGVjb3JhdGlvblNldC5jcmVhdGUoZS5kb2MsW0RlY29yYXRpb24uaW5saW5lKG4uZnJvbSxuLnRvLHtub2RlTmFtZTpsLGNsYXNzOnMuam9pbigiICIpLCJkYXRhLWRlY29yYXRpb24taWQiOnIsImRhdGEtZGVjb3JhdGlvbi1jb250ZW50IjpjfSldKX19fSk7cmV0dXJuIEF9ZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnMoZSl7cmV0dXJuKGUub3B0aW9ucy5zdWdnZXN0aW9ucy5sZW5ndGg/ZS5vcHRpb25zLnN1Z2dlc3Rpb25zOltlLm9wdGlvbnMuc3VnZ2VzdGlvbl0pLm1hcCh0PT5mdW5jdGlvbih7ZWRpdG9yOmUsb3ZlcnJpZGVTdWdnZXN0aW9uT3B0aW9uczp0LGV4dGVuc2lvbk5hbWU6bixjaGFyOnI9IkAifSl7Y29uc3Qgbz1uZXcgUGx1Z2luS2V5O3JldHVybntlZGl0b3I6ZSxjaGFyOnIscGx1Z2luS2V5Om8sY29tbWFuZDooe2VkaXRvcjplLHJhbmdlOnQscHJvcHM6b30pPT57dmFyIGkscyxsO2NvbnN0IGE9ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi4kdG8ubm9kZUFmdGVyOyhudWxsPT0oaT1udWxsPT1hP3ZvaWQgMDphLnRleHQpP3ZvaWQgMDppLnN0YXJ0c1dpdGgoIiAiKSkmJih0LnRvKz0xKSxlLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQodCxbe3R5cGU6bixhdHRyczp7Li4ubyxtZW50aW9uU3VnZ2VzdGlvbkNoYXI6cn19LHt0eXBlOiJ0ZXh0Iix0ZXh0OiIgIn1dKS5ydW4oKSxudWxsPT0obD1udWxsPT0ocz1lLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpP3ZvaWQgMDpzLmdldFNlbGVjdGlvbigpKXx8bC5jb2xsYXBzZVRvRW5kKCl9LGFsbG93Oih7c3RhdGU6ZSxyYW5nZTp0fSk9Pntjb25zdCByPWUuZG9jLnJlc29sdmUodC5mcm9tKSxvPWUuc2NoZW1hLm5vZGVzW25dO3JldHVybiEhci5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKG8pfSwuLi50fX0oe2VkaXRvcjplLmVkaXRvcixvdmVycmlkZVN1Z2dlc3Rpb25PcHRpb25zOnQsZXh0ZW5zaW9uTmFtZTplLm5hbWUsY2hhcjp0LmNoYXJ9KSl9ZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbkZyb21DaGFyKGUsdCl7Y29uc3Qgbj1nZXRTdWdnZXN0aW9ucyhlKSxyPW4uZmluZChlPT5lLmNoYXI9PT10KTtyZXR1cm4gcnx8KG4ubGVuZ3RoP25bMF06bnVsbCl9dmFyIGduPW9uLmNyZWF0ZSh7bmFtZToibWVudGlvbiIscHJpb3JpdHk6MTAxLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e30scmVuZGVyVGV4dCh7bm9kZTplLHN1Z2dlc3Rpb246dH0pe3ZhciBuLHI7cmV0dXJuYCR7bnVsbCE9KG49bnVsbD09dD92b2lkIDA6dC5jaGFyKT9uOiJAIn0ke251bGwhPShyPWUuYXR0cnMubGFiZWwpP3I6ZS5hdHRycy5pZH1gfSxkZWxldGVUcmlnZ2VyV2l0aEJhY2tzcGFjZTohMSxyZW5kZXJIVE1MKHtvcHRpb25zOmUsbm9kZTp0LHN1Z2dlc3Rpb246bn0pe3ZhciByLG87cmV0dXJuWyJzcGFuIixtZXJnZUF0dHJpYnV0ZXModGhpcy5IVE1MQXR0cmlidXRlcyxlLkhUTUxBdHRyaWJ1dGVzKSxgJHtudWxsIT0ocj1udWxsPT1uP3ZvaWQgMDpuLmNoYXIpP3I6IkAifSR7bnVsbCE9KG89dC5hdHRycy5sYWJlbCk/bzp0LmF0dHJzLmlkfWBdfSxzdWdnZXN0aW9uczpbXSxzdWdnZXN0aW9uOnt9fSksZ3JvdXA6ImlubGluZSIsaW5saW5lOiEwLHNlbGVjdGFibGU6ITEsYXRvbTohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe2lkOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJkYXRhLWlkIikscmVuZGVySFRNTDplPT5lLmlkP3siZGF0YS1pZCI6ZS5pZH06e319LGxhYmVsOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJkYXRhLWxhYmVsIikscmVuZGVySFRNTDplPT5lLmxhYmVsP3siZGF0YS1sYWJlbCI6ZS5sYWJlbH06e319LG1lbnRpb25TdWdnZXN0aW9uQ2hhcjp7ZGVmYXVsdDoiQCIscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIikscmVuZGVySFRNTDplPT4oeyJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIjplLm1lbnRpb25TdWdnZXN0aW9uQ2hhcn0pfX0pLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOmBzcGFuW2RhdGEtdHlwZT0iJHt0aGlzLm5hbWV9Il1gfV19LHJlbmRlckhUTUwoe25vZGU6ZSxIVE1MQXR0cmlidXRlczp0fSl7Y29uc3Qgbj1nZXRTdWdnZXN0aW9uRnJvbUNoYXIodGhpcyxlLmF0dHJzLm1lbnRpb25TdWdnZXN0aW9uQ2hhcik7aWYodm9pZCAwIT09dGhpcy5vcHRpb25zLnJlbmRlckxhYmVsKXJldHVybiBjb25zb2xlLndhcm4oInJlbmRlckxhYmVsIGlzIGRlcHJlY2F0ZWQgdXNlIHJlbmRlclRleHQgYW5kIHJlbmRlckhUTUwgaW5zdGVhZCIpLFsic3BhbiIsbWVyZ2VBdHRyaWJ1dGVzKHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9LHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyx0KSx0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwoe29wdGlvbnM6dGhpcy5vcHRpb25zLG5vZGU6ZSxzdWdnZXN0aW9uOm59KV07Y29uc3Qgcj17Li4udGhpcy5vcHRpb25zfTtyLkhUTUxBdHRyaWJ1dGVzPW1lcmdlQXR0cmlidXRlcyh7ImRhdGEtdHlwZSI6dGhpcy5uYW1lfSx0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsdCk7Y29uc3Qgbz10aGlzLm9wdGlvbnMucmVuZGVySFRNTCh7b3B0aW9uczpyLG5vZGU6ZSxzdWdnZXN0aW9uOm59KTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG8/WyJzcGFuIixtZXJnZUF0dHJpYnV0ZXMoeyJkYXRhLXR5cGUiOnRoaXMubmFtZX0sdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQpLG9dOm99LC4uLmNyZWF0ZUlubGluZU1hcmtkb3duU3BlYyh7bm9kZU5hbWU6Im1lbnRpb24iLG5hbWU6IkAiLHNlbGZDbG9zaW5nOiEwLGFsbG93ZWRBdHRyaWJ1dGVzOlsiaWQiLCJsYWJlbCIse25hbWU6Im1lbnRpb25TdWdnZXN0aW9uQ2hhciIsc2tpcElmRGVmYXVsdDoiQCJ9XSxwYXJzZUF0dHJpYnV0ZXM6ZT0+e2NvbnN0IHQ9e30sbj0vKFx3Kyk9KD86IihbXiJdKikifCcoW14nXSopJykvZztsZXQgcj1uLmV4ZWMoZSk7Zm9yKDtudWxsIT09cjspe2NvbnN0WyxvLGksc109cixsPW51bGwhPWk/aTpzO3RbImNoYXIiPT09bz8ibWVudGlvblN1Z2dlc3Rpb25DaGFyIjpvXT1sLHI9bi5leGVjKGUpfXJldHVybiB0fSxzZXJpYWxpemVBdHRyaWJ1dGVzOmU9Pk9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoWyxlXSk9Pm51bGwhPWUpLm1hcCgoW2UsdF0pPT5gJHsibWVudGlvblN1Z2dlc3Rpb25DaGFyIj09PWU/ImNoYXIiOmV9PSIke3R9ImApLmpvaW4oIiAiKX0pLHJlbmRlclRleHQoe25vZGU6ZX0pe2NvbnN0IHQ9e29wdGlvbnM6dGhpcy5vcHRpb25zLG5vZGU6ZSxzdWdnZXN0aW9uOmdldFN1Z2dlc3Rpb25Gcm9tQ2hhcih0aGlzLGUuYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyKX07cmV0dXJuIHZvaWQgMCE9PXRoaXMub3B0aW9ucy5yZW5kZXJMYWJlbD8oY29uc29sZS53YXJuKCJyZW5kZXJMYWJlbCBpcyBkZXByZWNhdGVkIHVzZSByZW5kZXJUZXh0IGFuZCByZW5kZXJIVE1MIGluc3RlYWQiKSx0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwodCkpOnRoaXMub3B0aW9ucy5yZW5kZXJUZXh0KHQpfSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybntCYWNrc3BhY2U6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmNvbW1hbmQoKHt0cjplLHN0YXRlOnR9KT0+e2xldCBuPSExO2NvbnN0e3NlbGVjdGlvbjpyfT10LHtlbXB0eTpvLGFuY2hvcjppfT1yO2lmKCFvKXJldHVybiExO2xldCBzPW5ldyBOb2RlLGw9MDtyZXR1cm4gdC5kb2Mubm9kZXNCZXR3ZWVuKGktMSxpLChlLHQpPT57aWYoZS50eXBlLm5hbWU9PT10aGlzLm5hbWUpcmV0dXJuIG49ITAscz1lLGw9dCwhMX0pLG4mJmUuaW5zZXJ0VGV4dCh0aGlzLm9wdGlvbnMuZGVsZXRlVHJpZ2dlcldpdGhCYWNrc3BhY2U/IiI6cy5hdHRycy5tZW50aW9uU3VnZ2VzdGlvbkNoYXIsbCxsK3Mubm9kZVNpemUpLG59KX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybiBnZXRTdWdnZXN0aW9ucyh0aGlzKS5tYXAoU3VnZ2VzdGlvbil9fSkseW49Z247ZnVuY3Rpb24gZHJvcEN1cnNvcihlPXt9KXtyZXR1cm4gbmV3IFBsdWdpbih7dmlldzp0PT5uZXcgRHJvcEN1cnNvclZpZXcodCxlKX0pfWNsYXNzIERyb3BDdXJzb3JWaWV3e2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47dGhpcy5lZGl0b3JWaWV3PWUsdGhpcy5jdXJzb3JQb3M9bnVsbCx0aGlzLmVsZW1lbnQ9bnVsbCx0aGlzLnRpbWVvdXQ9LTEsdGhpcy53aWR0aD1udWxsIT09KG49dC53aWR0aCkmJnZvaWQgMCE9PW4/bjoxLHRoaXMuY29sb3I9ITE9PT10LmNvbG9yP3ZvaWQgMDp0LmNvbG9yfHwiYmxhY2siLHRoaXMuY2xhc3M9dC5jbGFzcyx0aGlzLmhhbmRsZXJzPVsiZHJhZ292ZXIiLCJkcmFnZW5kIiwiZHJvcCIsImRyYWdsZWF2ZSJdLm1hcCh0PT57bGV0IGhhbmRsZXI9ZT0+e3RoaXNbdF0oZSl9O3JldHVybiBlLmRvbS5hZGRFdmVudExpc3RlbmVyKHQsaGFuZGxlcikse25hbWU6dCxoYW5kbGVyOmhhbmRsZXJ9fSl9ZGVzdHJveSgpe3RoaXMuaGFuZGxlcnMuZm9yRWFjaCgoe25hbWU6ZSxoYW5kbGVyOnR9KT0+dGhpcy5lZGl0b3JWaWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdCkpfXVwZGF0ZShlLHQpe251bGwhPXRoaXMuY3Vyc29yUG9zJiZ0LmRvYyE9ZS5zdGF0ZS5kb2MmJih0aGlzLmN1cnNvclBvcz5lLnN0YXRlLmRvYy5jb250ZW50LnNpemU/dGhpcy5zZXRDdXJzb3IobnVsbCk6dGhpcy51cGRhdGVPdmVybGF5KCkpfXNldEN1cnNvcihlKXtlIT10aGlzLmN1cnNvclBvcyYmKHRoaXMuY3Vyc29yUG9zPWUsbnVsbD09ZT8odGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmVsZW1lbnQ9bnVsbCk6dGhpcy51cGRhdGVPdmVybGF5KCkpfXVwZGF0ZU92ZXJsYXkoKXtsZXQgZSx0PXRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MucmVzb2x2ZSh0aGlzLmN1cnNvclBvcyksbj0hdC5wYXJlbnQuaW5saW5lQ29udGVudCxyPXRoaXMuZWRpdG9yVmlldy5kb20sbz1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9by53aWR0aC9yLm9mZnNldFdpZHRoLHM9by5oZWlnaHQvci5vZmZzZXRIZWlnaHQ7aWYobil7bGV0IG49dC5ub2RlQmVmb3JlLHI9dC5ub2RlQWZ0ZXI7aWYobnx8cil7bGV0IHQ9dGhpcy5lZGl0b3JWaWV3Lm5vZGVET00odGhpcy5jdXJzb3JQb3MtKG4/bi5ub2RlU2l6ZTowKSk7aWYodCl7bGV0IG89dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPW4/by5ib3R0b206by50b3A7biYmciYmKGk9KGkrdGhpcy5lZGl0b3JWaWV3Lm5vZGVET00odGhpcy5jdXJzb3JQb3MpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkvMik7bGV0IGw9dGhpcy53aWR0aC8yKnM7ZT17bGVmdDpvLmxlZnQscmlnaHQ6by5yaWdodCx0b3A6aS1sLGJvdHRvbTppK2x9fX19aWYoIWUpe2xldCB0PXRoaXMuZWRpdG9yVmlldy5jb29yZHNBdFBvcyh0aGlzLmN1cnNvclBvcyksbj10aGlzLndpZHRoLzIqaTtlPXtsZWZ0OnQubGVmdC1uLHJpZ2h0OnQubGVmdCtuLHRvcDp0LnRvcCxib3R0b206dC5ib3R0b219fWxldCBsLGEsYz10aGlzLmVkaXRvclZpZXcuZG9tLm9mZnNldFBhcmVudDtpZih0aGlzLmVsZW1lbnR8fCh0aGlzLmVsZW1lbnQ9Yy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSksdGhpcy5jbGFzcyYmKHRoaXMuZWxlbWVudC5jbGFzc05hbWU9dGhpcy5jbGFzcyksdGhpcy5lbGVtZW50LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNTA7IHBvaW50ZXItZXZlbnRzOiBub25lOyIsdGhpcy5jb2xvciYmKHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5jb2xvcikpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9zZW1pcnJvci1kcm9wY3Vyc29yLWJsb2NrIixuKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicHJvc2VtaXJyb3ItZHJvcGN1cnNvci1pbmxpbmUiLCFuKSwhY3x8Yz09ZG9jdW1lbnQuYm9keSYmInN0YXRpYyI9PWdldENvbXB1dGVkU3R5bGUoYykucG9zaXRpb24pbD0tcGFnZVhPZmZzZXQsYT0tcGFnZVlPZmZzZXQ7ZWxzZXtsZXQgZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9ZS53aWR0aC9jLm9mZnNldFdpZHRoLG49ZS5oZWlnaHQvYy5vZmZzZXRIZWlnaHQ7bD1lLmxlZnQtYy5zY3JvbGxMZWZ0KnQsYT1lLnRvcC1jLnNjcm9sbFRvcCpufXRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0PShlLmxlZnQtbCkvaSsicHgiLHRoaXMuZWxlbWVudC5zdHlsZS50b3A9KGUudG9wLWEpL3MrInB4Iix0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9KGUucmlnaHQtZS5sZWZ0KS9pKyJweCIsdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD0oZS5ib3R0b20tZS50b3ApL3MrInB4In1zY2hlZHVsZVJlbW92YWwoZSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksdGhpcy50aW1lb3V0PXNldFRpbWVvdXQoKCk9PnRoaXMuc2V0Q3Vyc29yKG51bGwpLGUpfWRyYWdvdmVyKGUpe2lmKCF0aGlzLmVkaXRvclZpZXcuZWRpdGFibGUpcmV0dXJuO2xldCB0PXRoaXMuZWRpdG9yVmlldy5wb3NBdENvb3Jkcyh7bGVmdDplLmNsaWVudFgsdG9wOmUuY2xpZW50WX0pLG49dCYmdC5pbnNpZGU+PTAmJnRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2Mubm9kZUF0KHQuaW5zaWRlKSxyPW4mJm4udHlwZS5zcGVjLmRpc2FibGVEcm9wQ3Vyc29yLG89ImZ1bmN0aW9uIj09dHlwZW9mIHI/cih0aGlzLmVkaXRvclZpZXcsdCxlKTpyO2lmKHQmJiFvKXtsZXQgZT10LnBvcztpZih0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcmJnRoaXMuZWRpdG9yVmlldy5kcmFnZ2luZy5zbGljZSl7bGV0IHQ9ZHJvcFBvaW50KHRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MsZSx0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcuc2xpY2UpO251bGwhPXQmJihlPXQpfXRoaXMuc2V0Q3Vyc29yKGUpLHRoaXMuc2NoZWR1bGVSZW1vdmFsKDVlMyl9fWRyYWdlbmQoKXt0aGlzLnNjaGVkdWxlUmVtb3ZhbCgyMCl9ZHJvcCgpe3RoaXMuc2NoZWR1bGVSZW1vdmFsKDIwKX1kcmFnbGVhdmUoZSl7dGhpcy5lZGl0b3JWaWV3LmRvbS5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHx0aGlzLnNldEN1cnNvcihudWxsKX19Y2xhc3MgR2FwQ3Vyc29yIGV4dGVuZHMgU2VsZWN0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsZSl9bWFwKGUsdCl7bGV0IG49ZS5yZXNvbHZlKHQubWFwKHRoaXMuaGVhZCkpO3JldHVybiBHYXBDdXJzb3IudmFsaWQobik/bmV3IEdhcEN1cnNvcihuKTpTZWxlY3Rpb24ubmVhcihuKX1jb250ZW50KCl7cmV0dXJuIFNsaWNlLmVtcHR5fWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgR2FwQ3Vyc29yJiZlLmhlYWQ9PXRoaXMuaGVhZH10b0pTT04oKXtyZXR1cm57dHlwZToiZ2FwY3Vyc29yIixwb3M6dGhpcy5oZWFkfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQucG9zKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBHYXBDdXJzb3IuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEdhcEN1cnNvcihlLnJlc29sdmUodC5wb3MpKX1nZXRCb29rbWFyaygpe3JldHVybiBuZXcgR2FwQm9va21hcmsodGhpcy5hbmNob3IpfXN0YXRpYyB2YWxpZChlKXtsZXQgdD1lLnBhcmVudDtpZih0LmlubGluZUNvbnRlbnR8fCFmdW5jdGlvbihlKXtmb3IobGV0IHQ9ZS5kZXB0aDt0Pj0wO3QtLSl7bGV0IG49ZS5pbmRleCh0KSxyPWUubm9kZSh0KTtpZigwIT1uKWZvcihsZXQgZT1yLmNoaWxkKG4tMSk7O2U9ZS5sYXN0Q2hpbGQpe2lmKDA9PWUuY2hpbGRDb3VudCYmIWUuaW5saW5lQ29udGVudHx8bmVlZHNHYXAoZS50eXBlKSlyZXR1cm4hMDtpZihlLmlubGluZUNvbnRlbnQpcmV0dXJuITF9ZWxzZSBpZihyLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITB9cmV0dXJuITB9KGUpfHwhZnVuY3Rpb24oZSl7Zm9yKGxldCB0PWUuZGVwdGg7dD49MDt0LS0pe2xldCBuPWUuaW5kZXhBZnRlcih0KSxyPWUubm9kZSh0KTtpZihuIT1yLmNoaWxkQ291bnQpZm9yKGxldCBlPXIuY2hpbGQobik7O2U9ZS5maXJzdENoaWxkKXtpZigwPT1lLmNoaWxkQ291bnQmJiFlLmlubGluZUNvbnRlbnR8fG5lZWRzR2FwKGUudHlwZSkpcmV0dXJuITA7aWYoZS5pbmxpbmVDb250ZW50KXJldHVybiExfWVsc2UgaWYoci50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiEwfXJldHVybiEwfShlKSlyZXR1cm4hMTtsZXQgbj10LnR5cGUuc3BlYy5hbGxvd0dhcEN1cnNvcjtpZihudWxsIT1uKXJldHVybiBuO2xldCByPXQuY29udGVudE1hdGNoQXQoZS5pbmRleCgpKS5kZWZhdWx0VHlwZTtyZXR1cm4gciYmci5pc1RleHRibG9ja31zdGF0aWMgZmluZEdhcEN1cnNvckZyb20oZSx0LG49ITEpe2U6Zm9yKDs7KXtpZighbiYmR2FwQ3Vyc29yLnZhbGlkKGUpKXJldHVybiBlO2xldCByPWUucG9zLG89bnVsbDtmb3IobGV0IG49ZS5kZXB0aDs7bi0tKXtsZXQgaT1lLm5vZGUobik7aWYodD4wP2UuaW5kZXhBZnRlcihuKTxpLmNoaWxkQ291bnQ6ZS5pbmRleChuKT4wKXtvPWkuY2hpbGQodD4wP2UuaW5kZXhBZnRlcihuKTplLmluZGV4KG4pLTEpO2JyZWFrfWlmKDA9PW4pcmV0dXJuIG51bGw7cis9dDtsZXQgcz1lLmRvYy5yZXNvbHZlKHIpO2lmKEdhcEN1cnNvci52YWxpZChzKSlyZXR1cm4gc31mb3IoOzspe2xldCBpPXQ+MD9vLmZpcnN0Q2hpbGQ6by5sYXN0Q2hpbGQ7aWYoIWkpe2lmKG8uaXNBdG9tJiYhby5pc1RleHQmJiFOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShvKSl7ZT1lLmRvYy5yZXNvbHZlKHIrby5ub2RlU2l6ZSp0KSxuPSExO2NvbnRpbnVlIGV9YnJlYWt9bz1pLHIrPXQ7bGV0IHM9ZS5kb2MucmVzb2x2ZShyKTtpZihHYXBDdXJzb3IudmFsaWQocykpcmV0dXJuIHN9cmV0dXJuIG51bGx9fX1HYXBDdXJzb3IucHJvdG90eXBlLnZpc2libGU9ITEsR2FwQ3Vyc29yLmZpbmRGcm9tPUdhcEN1cnNvci5maW5kR2FwQ3Vyc29yRnJvbSxTZWxlY3Rpb24uanNvbklEKCJnYXBjdXJzb3IiLEdhcEN1cnNvcik7Y2xhc3MgR2FwQm9va21hcmt7Y29uc3RydWN0b3IoZSl7dGhpcy5wb3M9ZX1tYXAoZSl7cmV0dXJuIG5ldyBHYXBCb29rbWFyayhlLm1hcCh0aGlzLnBvcykpfXJlc29sdmUoZSl7bGV0IHQ9ZS5yZXNvbHZlKHRoaXMucG9zKTtyZXR1cm4gR2FwQ3Vyc29yLnZhbGlkKHQpP25ldyBHYXBDdXJzb3IodCk6U2VsZWN0aW9uLm5lYXIodCl9fWZ1bmN0aW9uIG5lZWRzR2FwKGUpe3JldHVybiBlLmlzQXRvbXx8ZS5zcGVjLmlzb2xhdGluZ3x8ZS5zcGVjLmNyZWF0ZUdhcEN1cnNvcn1jb25zdCBrbj1rZXlkb3duSGFuZGxlcih7QXJyb3dMZWZ0OmFycm93JDMoImhvcml6IiwtMSksQXJyb3dSaWdodDphcnJvdyQzKCJob3JpeiIsMSksQXJyb3dVcDphcnJvdyQzKCJ2ZXJ0IiwtMSksQXJyb3dEb3duOmFycm93JDMoInZlcnQiLDEpfSk7ZnVuY3Rpb24gYXJyb3ckMyhlLHQpe2NvbnN0IG49InZlcnQiPT1lP3Q+MD8iZG93biI6InVwIjp0PjA/InJpZ2h0IjoibGVmdCI7cmV0dXJuIGZ1bmN0aW9uKGUscixvKXtsZXQgaT1lLnNlbGVjdGlvbixzPXQ+MD9pLiR0bzppLiRmcm9tLGw9aS5lbXB0eTtpZihpIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbil7aWYoIW8uZW5kT2ZUZXh0YmxvY2sobil8fDA9PXMuZGVwdGgpcmV0dXJuITE7bD0hMSxzPWUuZG9jLnJlc29sdmUodD4wP3MuYWZ0ZXIoKTpzLmJlZm9yZSgpKX1sZXQgYT1HYXBDdXJzb3IuZmluZEdhcEN1cnNvckZyb20ocyx0LGwpO3JldHVybiEhYSYmKHImJnIoZS50ci5zZXRTZWxlY3Rpb24obmV3IEdhcEN1cnNvcihhKSkpLCEwKX19ZnVuY3Rpb24gaGFuZGxlQ2xpY2soZSx0LG4pe2lmKCFlfHwhZS5lZGl0YWJsZSlyZXR1cm4hMTtsZXQgcj1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpO2lmKCFHYXBDdXJzb3IudmFsaWQocikpcmV0dXJuITE7bGV0IG89ZS5wb3NBdENvb3Jkcyh7bGVmdDpuLmNsaWVudFgsdG9wOm4uY2xpZW50WX0pO3JldHVybiEobyYmby5pbnNpZGU+LTEmJk5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGUuc3RhdGUuZG9jLm5vZGVBdChvLmluc2lkZSkpKSYmKGUuZGlzcGF0Y2goZS5zdGF0ZS50ci5zZXRTZWxlY3Rpb24obmV3IEdhcEN1cnNvcihyKSkpLCEwKX1mdW5jdGlvbiBiZWZvcmVpbnB1dChlLHQpe2lmKCJpbnNlcnRDb21wb3NpdGlvblRleHQiIT10LmlucHV0VHlwZXx8IShlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEdhcEN1cnNvcikpcmV0dXJuITE7bGV0eyRmcm9tOm59PWUuc3RhdGUuc2VsZWN0aW9uLHI9bi5wYXJlbnQuY29udGVudE1hdGNoQXQobi5pbmRleCgpKS5maW5kV3JhcHBpbmcoZS5zdGF0ZS5zY2hlbWEubm9kZXMudGV4dCk7aWYoIXIpcmV0dXJuITE7bGV0IG89RnJhZ21lbnQuZW1wdHk7Zm9yKGxldCBlPXIubGVuZ3RoLTE7ZT49MDtlLS0pbz1GcmFnbWVudC5mcm9tKHJbZV0uY3JlYXRlQW5kRmlsbChudWxsLG8pKTtsZXQgaT1lLnN0YXRlLnRyLnJlcGxhY2Uobi5wb3Msbi5wb3MsbmV3IFNsaWNlKG8sMCwwKSk7cmV0dXJuIGkuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24ubmVhcihpLmRvYy5yZXNvbHZlKG4ucG9zKzEpKSksZS5kaXNwYXRjaChpKSwhMX1mdW5jdGlvbiBkcmF3R2FwQ3Vyc29yKGUpe2lmKCEoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBHYXBDdXJzb3IpKXJldHVybiBudWxsO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0iUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIixEZWNvcmF0aW9uU2V0LmNyZWF0ZShlLmRvYyxbRGVjb3JhdGlvbi53aWRnZXQoZS5zZWxlY3Rpb24uaGVhZCx0LHtrZXk6ImdhcGN1cnNvciJ9KV0pfXZhciB3bj0yMDAsUm9wZVNlcXVlbmNlPWZ1bmN0aW9uKCl7fTtSb3BlU2VxdWVuY2UucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGg/KGU9Um9wZVNlcXVlbmNlLmZyb20oZSksIXRoaXMubGVuZ3RoJiZlfHxlLmxlbmd0aDx3biYmdGhpcy5sZWFmQXBwZW5kKGUpfHx0aGlzLmxlbmd0aDx3biYmZS5sZWFmUHJlcGVuZCh0aGlzKXx8dGhpcy5hcHBlbmRJbm5lcihlKSk6dGhpc30sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5wcmVwZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD9Sb3BlU2VxdWVuY2UuZnJvbShlKS5hcHBlbmQodGhpcyk6dGhpc30sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5hcHBlbmRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHZuKHRoaXMsZSl9LFJvcGVTZXF1ZW5jZS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09dCYmKHQ9dGhpcy5sZW5ndGgpLGU+PXQ/Um9wZVNlcXVlbmNlLmVtcHR5OnRoaXMuc2xpY2VJbm5lcihNYXRoLm1heCgwLGUpLE1hdGgubWluKHRoaXMubGVuZ3RoLHQpKX0sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7aWYoIShlPDB8fGU+PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpcy5nZXRJbm5lcihlKX0sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj10aGlzLmxlbmd0aCksdDw9bj90aGlzLmZvckVhY2hJbm5lcihlLHQsbiwwKTp0aGlzLmZvckVhY2hJbnZlcnRlZElubmVyKGUsdCxuLDApfSxSb3BlU2VxdWVuY2UucHJvdG90eXBlLm1hcD1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49dGhpcy5sZW5ndGgpO3ZhciByPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtyZXR1cm4gci5wdXNoKGUodCxuKSl9LHQsbikscn0sUm9wZVNlcXVlbmNlLmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSb3BlU2VxdWVuY2U/ZTplJiZlLmxlbmd0aD9uZXcgYm4oZSk6Um9wZVNlcXVlbmNlLmVtcHR5fTt2YXIgYm49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gTGVhZih0KXtlLmNhbGwodGhpcyksdGhpcy52YWx1ZXM9dH1lJiYoTGVhZi5fX3Byb3RvX189ZSksTGVhZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksTGVhZi5wcm90b3R5cGUuY29uc3RydWN0b3I9TGVhZjt2YXIgdD17bGVuZ3RoOntjb25maWd1cmFibGU6ITB9LGRlcHRoOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gTGVhZi5wcm90b3R5cGUuZmxhdHRlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlc30sTGVhZi5wcm90b3R5cGUuc2xpY2VJbm5lcj1mdW5jdGlvbihlLHQpe3JldHVybiAwPT1lJiZ0PT10aGlzLmxlbmd0aD90aGlzOm5ldyBMZWFmKHRoaXMudmFsdWVzLnNsaWNlKGUsdCkpfSxMZWFmLnByb3RvdHlwZS5nZXRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy52YWx1ZXNbZV19LExlYWYucHJvdG90eXBlLmZvckVhY2hJbm5lcj1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89dDtvPG47bysrKWlmKCExPT09ZSh0aGlzLnZhbHVlc1tvXSxyK28pKXJldHVybiExfSxMZWFmLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lcj1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89dC0xO28+PW47by0tKWlmKCExPT09ZSh0aGlzLnZhbHVlc1tvXSxyK28pKXJldHVybiExfSxMZWFmLnByb3RvdHlwZS5sZWFmQXBwZW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoK2UubGVuZ3RoPD13bilyZXR1cm4gbmV3IExlYWYodGhpcy52YWx1ZXMuY29uY2F0KGUuZmxhdHRlbigpKSl9LExlYWYucHJvdG90eXBlLmxlYWZQcmVwZW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoK2UubGVuZ3RoPD13bilyZXR1cm4gbmV3IExlYWYoZS5mbGF0dGVuKCkuY29uY2F0KHRoaXMudmFsdWVzKSl9LHQubGVuZ3RoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGh9LHQuZGVwdGguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKExlYWYucHJvdG90eXBlLHQpLExlYWZ9KFJvcGVTZXF1ZW5jZSk7Um9wZVNlcXVlbmNlLmVtcHR5PW5ldyBibihbXSk7dmFyIHZuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIEFwcGVuZCh0LG4pe2UuY2FsbCh0aGlzKSx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PW4sdGhpcy5sZW5ndGg9dC5sZW5ndGgrbi5sZW5ndGgsdGhpcy5kZXB0aD1NYXRoLm1heCh0LmRlcHRoLG4uZGVwdGgpKzF9cmV0dXJuIGUmJihBcHBlbmQuX19wcm90b19fPWUpLEFwcGVuZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksQXBwZW5kLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BcHBlbmQsQXBwZW5kLnByb3RvdHlwZS5mbGF0dGVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVmdC5mbGF0dGVuKCkuY29uY2F0KHRoaXMucmlnaHQuZmxhdHRlbigpKX0sQXBwZW5kLnByb3RvdHlwZS5nZXRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlZnQubGVuZ3RoP3RoaXMubGVmdC5nZXQoZSk6dGhpcy5yaWdodC5nZXQoZS10aGlzLmxlZnQubGVuZ3RoKX0sQXBwZW5kLnByb3RvdHlwZS5mb3JFYWNoSW5uZXI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcy5sZWZ0Lmxlbmd0aDtyZXR1cm4hKHQ8byYmITE9PT10aGlzLmxlZnQuZm9yRWFjaElubmVyKGUsdCxNYXRoLm1pbihuLG8pLHIpKSYmKCEobj5vJiYhMT09PXRoaXMucmlnaHQuZm9yRWFjaElubmVyKGUsTWF0aC5tYXgodC1vLDApLE1hdGgubWluKHRoaXMubGVuZ3RoLG4pLW8scitvKSkmJnZvaWQgMCl9LEFwcGVuZC5wcm90b3R5cGUuZm9yRWFjaEludmVydGVkSW5uZXI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcy5sZWZ0Lmxlbmd0aDtyZXR1cm4hKHQ+byYmITE9PT10aGlzLnJpZ2h0LmZvckVhY2hJbnZlcnRlZElubmVyKGUsdC1vLE1hdGgubWF4KG4sbyktbyxyK28pKSYmKCEobjxvJiYhMT09PXRoaXMubGVmdC5mb3JFYWNoSW52ZXJ0ZWRJbm5lcihlLE1hdGgubWluKHQsbyksbixyKSkmJnZvaWQgMCl9LEFwcGVuZC5wcm90b3R5cGUuc2xpY2VJbm5lcj1mdW5jdGlvbihlLHQpe2lmKDA9PWUmJnQ9PXRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3ZhciBuPXRoaXMubGVmdC5sZW5ndGg7cmV0dXJuIHQ8PW4/dGhpcy5sZWZ0LnNsaWNlKGUsdCk6ZT49bj90aGlzLnJpZ2h0LnNsaWNlKGUtbix0LW4pOnRoaXMubGVmdC5zbGljZShlLG4pLmFwcGVuZCh0aGlzLnJpZ2h0LnNsaWNlKDAsdC1uKSl9LEFwcGVuZC5wcm90b3R5cGUubGVhZkFwcGVuZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnJpZ2h0LmxlYWZBcHBlbmQoZSk7aWYodClyZXR1cm4gbmV3IEFwcGVuZCh0aGlzLmxlZnQsdCl9LEFwcGVuZC5wcm90b3R5cGUubGVhZlByZXBlbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZWZ0LmxlYWZQcmVwZW5kKGUpO2lmKHQpcmV0dXJuIG5ldyBBcHBlbmQodCx0aGlzLnJpZ2h0KX0sQXBwZW5kLnByb3RvdHlwZS5hcHBlbmRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZWZ0LmRlcHRoPj1NYXRoLm1heCh0aGlzLnJpZ2h0LmRlcHRoLGUuZGVwdGgpKzE/bmV3IEFwcGVuZCh0aGlzLmxlZnQsbmV3IEFwcGVuZCh0aGlzLnJpZ2h0LGUpKTpuZXcgQXBwZW5kKHRoaXMsZSl9LEFwcGVuZH0oUm9wZVNlcXVlbmNlKTtjbGFzcyBCcmFuY2h7Y29uc3RydWN0b3IoZSx0KXt0aGlzLml0ZW1zPWUsdGhpcy5ldmVudENvdW50PXR9cG9wRXZlbnQoZSx0KXtpZigwPT10aGlzLmV2ZW50Q291bnQpcmV0dXJuIG51bGw7bGV0IG4scixvPXRoaXMuaXRlbXMubGVuZ3RoO2Zvcig7O28tLSl7aWYodGhpcy5pdGVtcy5nZXQoby0xKS5zZWxlY3Rpb24pey0tbzticmVha319dCYmKG49dGhpcy5yZW1hcHBpbmcobyx0aGlzLml0ZW1zLmxlbmd0aCkscj1uLm1hcHMubGVuZ3RoKTtsZXQgaSxzLGw9ZS50cixhPVtdLGM9W107cmV0dXJuIHRoaXMuaXRlbXMuZm9yRWFjaCgoZSx0KT0+e2lmKCFlLnN0ZXApcmV0dXJuIG58fChuPXRoaXMucmVtYXBwaW5nKG8sdCsxKSxyPW4ubWFwcy5sZW5ndGgpLHItLSx2b2lkIGMucHVzaChlKTtpZihuKXtjLnB1c2gobmV3IEl0ZW0oZS5tYXApKTtsZXQgdCxvPWUuc3RlcC5tYXAobi5zbGljZShyKSk7byYmbC5tYXliZVN0ZXAobykuZG9jJiYodD1sLm1hcHBpbmcubWFwc1tsLm1hcHBpbmcubWFwcy5sZW5ndGgtMV0sYS5wdXNoKG5ldyBJdGVtKHQsdm9pZCAwLHZvaWQgMCxhLmxlbmd0aCtjLmxlbmd0aCkpKSxyLS0sdCYmbi5hcHBlbmRNYXAodCxyKX1lbHNlIGwubWF5YmVTdGVwKGUuc3RlcCk7cmV0dXJuIGUuc2VsZWN0aW9uPyhpPW4/ZS5zZWxlY3Rpb24ubWFwKG4uc2xpY2UocikpOmUuc2VsZWN0aW9uLHM9bmV3IEJyYW5jaCh0aGlzLml0ZW1zLnNsaWNlKDAsbykuYXBwZW5kKGMucmV2ZXJzZSgpLmNvbmNhdChhKSksdGhpcy5ldmVudENvdW50LTEpLCExKTp2b2lkIDB9LHRoaXMuaXRlbXMubGVuZ3RoLDApLHtyZW1haW5pbmc6cyx0cmFuc2Zvcm06bCxzZWxlY3Rpb246aX19YWRkVHJhbnNmb3JtKGUsdCxuLHIpe2xldCBvPVtdLGk9dGhpcy5ldmVudENvdW50LHM9dGhpcy5pdGVtcyxsPSFyJiZzLmxlbmd0aD9zLmdldChzLmxlbmd0aC0xKTpudWxsO2ZvcihsZXQgbj0wO248ZS5zdGVwcy5sZW5ndGg7bisrKXtsZXQgYSxjPWUuc3RlcHNbbl0uaW52ZXJ0KGUuZG9jc1tuXSksZD1uZXcgSXRlbShlLm1hcHBpbmcubWFwc1tuXSxjLHQpOyhhPWwmJmwubWVyZ2UoZCkpJiYoZD1hLG4/by5wb3AoKTpzPXMuc2xpY2UoMCxzLmxlbmd0aC0xKSksby5wdXNoKGQpLHQmJihpKyssdD12b2lkIDApLHJ8fChsPWQpfWxldCBhPWktbi5kZXB0aDtyZXR1cm4gYT54biYmKHM9ZnVuY3Rpb24oZSx0KXtsZXQgbjtyZXR1cm4gZS5mb3JFYWNoKChlLHIpPT57aWYoZS5zZWxlY3Rpb24mJjA9PXQtLSlyZXR1cm4gbj1yLCExfSksZS5zbGljZShuKX0ocyxhKSxpLT1hKSxuZXcgQnJhbmNoKHMuYXBwZW5kKG8pLGkpfXJlbWFwcGluZyhlLHQpe2xldCBuPW5ldyBNYXBwaW5nO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2goKHQscik9PntsZXQgbz1udWxsIT10Lm1pcnJvck9mZnNldCYmci10Lm1pcnJvck9mZnNldD49ZT9uLm1hcHMubGVuZ3RoLXQubWlycm9yT2Zmc2V0OnZvaWQgMDtuLmFwcGVuZE1hcCh0Lm1hcCxvKX0sZSx0KSxufWFkZE1hcHMoZSl7cmV0dXJuIDA9PXRoaXMuZXZlbnRDb3VudD90aGlzOm5ldyBCcmFuY2godGhpcy5pdGVtcy5hcHBlbmQoZS5tYXAoZT0+bmV3IEl0ZW0oZSkpKSx0aGlzLmV2ZW50Q291bnQpfXJlYmFzZWQoZSx0KXtpZighdGhpcy5ldmVudENvdW50KXJldHVybiB0aGlzO2xldCBuPVtdLHI9TWF0aC5tYXgoMCx0aGlzLml0ZW1zLmxlbmd0aC10KSxvPWUubWFwcGluZyxpPWUuc3RlcHMubGVuZ3RoLHM9dGhpcy5ldmVudENvdW50O3RoaXMuaXRlbXMuZm9yRWFjaChlPT57ZS5zZWxlY3Rpb24mJnMtLX0scik7bGV0IGw9dDt0aGlzLml0ZW1zLmZvckVhY2godD0+e2xldCByPW8uZ2V0TWlycm9yKC0tbCk7aWYobnVsbD09cilyZXR1cm47aT1NYXRoLm1pbihpLHIpO2xldCBhPW8ubWFwc1tyXTtpZih0LnN0ZXApe2xldCBpPWUuc3RlcHNbcl0uaW52ZXJ0KGUuZG9jc1tyXSksYz10LnNlbGVjdGlvbiYmdC5zZWxlY3Rpb24ubWFwKG8uc2xpY2UobCsxLHIpKTtjJiZzKyssbi5wdXNoKG5ldyBJdGVtKGEsaSxjKSl9ZWxzZSBuLnB1c2gobmV3IEl0ZW0oYSkpfSxyKTtsZXQgYT1bXTtmb3IobGV0IGU9dDtlPGk7ZSsrKWEucHVzaChuZXcgSXRlbShvLm1hcHNbZV0pKTtsZXQgYz10aGlzLml0ZW1zLnNsaWNlKDAscikuYXBwZW5kKGEpLmFwcGVuZChuKSxkPW5ldyBCcmFuY2goYyxzKTtyZXR1cm4gZC5lbXB0eUl0ZW1Db3VudCgpPjUwMCYmKGQ9ZC5jb21wcmVzcyh0aGlzLml0ZW1zLmxlbmd0aC1uLmxlbmd0aCkpLGR9ZW1wdHlJdGVtQ291bnQoKXtsZXQgZT0wO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2godD0+e3Quc3RlcHx8ZSsrfSksZX1jb21wcmVzcyhlPXRoaXMuaXRlbXMubGVuZ3RoKXtsZXQgdD10aGlzLnJlbWFwcGluZygwLGUpLG49dC5tYXBzLmxlbmd0aCxyPVtdLG89MDtyZXR1cm4gdGhpcy5pdGVtcy5mb3JFYWNoKChpLHMpPT57aWYocz49ZSlyLnB1c2goaSksaS5zZWxlY3Rpb24mJm8rKztlbHNlIGlmKGkuc3RlcCl7bGV0IGU9aS5zdGVwLm1hcCh0LnNsaWNlKG4pKSxzPWUmJmUuZ2V0TWFwKCk7aWYobi0tLHMmJnQuYXBwZW5kTWFwKHMsbiksZSl7bGV0IGw9aS5zZWxlY3Rpb24mJmkuc2VsZWN0aW9uLm1hcCh0LnNsaWNlKG4pKTtsJiZvKys7bGV0IGEsYz1uZXcgSXRlbShzLmludmVydCgpLGUsbCksZD1yLmxlbmd0aC0xOyhhPXIubGVuZ3RoJiZyW2RdLm1lcmdlKGMpKT9yW2RdPWE6ci5wdXNoKGMpfX1lbHNlIGkubWFwJiZuLS19LHRoaXMuaXRlbXMubGVuZ3RoLDApLG5ldyBCcmFuY2goUm9wZVNlcXVlbmNlLmZyb20oci5yZXZlcnNlKCkpLG8pfX1CcmFuY2guZW1wdHk9bmV3IEJyYW5jaChSb3BlU2VxdWVuY2UuZW1wdHksMCk7Y2xhc3MgSXRlbXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLm1hcD1lLHRoaXMuc3RlcD10LHRoaXMuc2VsZWN0aW9uPW4sdGhpcy5taXJyb3JPZmZzZXQ9cn1tZXJnZShlKXtpZih0aGlzLnN0ZXAmJmUuc3RlcCYmIWUuc2VsZWN0aW9uKXtsZXQgdD1lLnN0ZXAubWVyZ2UodGhpcy5zdGVwKTtpZih0KXJldHVybiBuZXcgSXRlbSh0LmdldE1hcCgpLmludmVydCgpLHQsdGhpcy5zZWxlY3Rpb24pfX19Y2xhc3MgSGlzdG9yeVN0YXRle2NvbnN0cnVjdG9yKGUsdCxuLHIsbyl7dGhpcy5kb25lPWUsdGhpcy51bmRvbmU9dCx0aGlzLnByZXZSYW5nZXM9bix0aGlzLnByZXZUaW1lPXIsdGhpcy5wcmV2Q29tcG9zaXRpb249b319Y29uc3QgeG49MjA7ZnVuY3Rpb24gcmFuZ2VzRm9yKGUpe2xldCB0PVtdO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTAmJjA9PXQubGVuZ3RoO24tLSllW25dLmZvckVhY2goKGUsbixyLG8pPT50LnB1c2gocixvKSk7cmV0dXJuIHR9ZnVuY3Rpb24gbWFwUmFuZ2VzKGUsdCl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IG49W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKz0yKXtsZXQgbz10Lm1hcChlW3JdLDEpLGk9dC5tYXAoZVtyKzFdLC0xKTtvPD1pJiZuLnB1c2gobyxpKX1yZXR1cm4gbn1sZXQgU249ITEsVG49bnVsbDtmdW5jdGlvbiBtdXN0UHJlc2VydmVJdGVtcyhlKXtsZXQgdD1lLnBsdWdpbnM7aWYoVG4hPXQpe1NuPSExLFRuPXQ7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5zcGVjLmhpc3RvcnlQcmVzZXJ2ZUl0ZW1zKXtTbj0hMDticmVha319cmV0dXJuIFNufWNvbnN0IENuPW5ldyBQbHVnaW5LZXkoImhpc3RvcnkiKSxNbj1uZXcgUGx1Z2luS2V5KCJjbG9zZUhpc3RvcnkiKTtmdW5jdGlvbiBoaXN0b3J5KGU9e30pe3JldHVybiBlPXtkZXB0aDplLmRlcHRofHwxMDAsbmV3R3JvdXBEZWxheTplLm5ld0dyb3VwRGVsYXl8fDUwMH0sbmV3IFBsdWdpbih7a2V5OkNuLHN0YXRlOntpbml0OigpPT5uZXcgSGlzdG9yeVN0YXRlKEJyYW5jaC5lbXB0eSxCcmFuY2guZW1wdHksbnVsbCwwLC0xKSxhcHBseToodCxuLHIpPT5mdW5jdGlvbihlLHQsbixyKXtsZXQgbyxpPW4uZ2V0TWV0YShDbik7aWYoaSlyZXR1cm4gaS5oaXN0b3J5U3RhdGU7bi5nZXRNZXRhKE1uKSYmKGU9bmV3IEhpc3RvcnlTdGF0ZShlLmRvbmUsZS51bmRvbmUsbnVsbCwwLC0xKSk7bGV0IHM9bi5nZXRNZXRhKCJhcHBlbmRlZFRyYW5zYWN0aW9uIik7aWYoMD09bi5zdGVwcy5sZW5ndGgpcmV0dXJuIGU7aWYocyYmcy5nZXRNZXRhKENuKSlyZXR1cm4gcy5nZXRNZXRhKENuKS5yZWRvP25ldyBIaXN0b3J5U3RhdGUoZS5kb25lLmFkZFRyYW5zZm9ybShuLHZvaWQgMCxyLG11c3RQcmVzZXJ2ZUl0ZW1zKHQpKSxlLnVuZG9uZSxyYW5nZXNGb3Iobi5tYXBwaW5nLm1hcHMpLGUucHJldlRpbWUsZS5wcmV2Q29tcG9zaXRpb24pOm5ldyBIaXN0b3J5U3RhdGUoZS5kb25lLGUudW5kb25lLmFkZFRyYW5zZm9ybShuLHZvaWQgMCxyLG11c3RQcmVzZXJ2ZUl0ZW1zKHQpKSxudWxsLGUucHJldlRpbWUsZS5wcmV2Q29tcG9zaXRpb24pO2lmKCExPT09bi5nZXRNZXRhKCJhZGRUb0hpc3RvcnkiKXx8cyYmITE9PT1zLmdldE1ldGEoImFkZFRvSGlzdG9yeSIpKXJldHVybihvPW4uZ2V0TWV0YSgicmViYXNlZCIpKT9uZXcgSGlzdG9yeVN0YXRlKGUuZG9uZS5yZWJhc2VkKG4sbyksZS51bmRvbmUucmViYXNlZChuLG8pLG1hcFJhbmdlcyhlLnByZXZSYW5nZXMsbi5tYXBwaW5nKSxlLnByZXZUaW1lLGUucHJldkNvbXBvc2l0aW9uKTpuZXcgSGlzdG9yeVN0YXRlKGUuZG9uZS5hZGRNYXBzKG4ubWFwcGluZy5tYXBzKSxlLnVuZG9uZS5hZGRNYXBzKG4ubWFwcGluZy5tYXBzKSxtYXBSYW5nZXMoZS5wcmV2UmFuZ2VzLG4ubWFwcGluZyksZS5wcmV2VGltZSxlLnByZXZDb21wb3NpdGlvbik7e2xldCBvPW4uZ2V0TWV0YSgiY29tcG9zaXRpb24iKSxpPTA9PWUucHJldlRpbWV8fCFzJiZlLnByZXZDb21wb3NpdGlvbiE9byYmKGUucHJldlRpbWU8KG4udGltZXx8MCktci5uZXdHcm91cERlbGF5fHwhZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4hMTtpZighZS5kb2NDaGFuZ2VkKXJldHVybiEwO2xldCBuPSExO3JldHVybiBlLm1hcHBpbmcubWFwc1swXS5mb3JFYWNoKChlLHIpPT57Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKWU8PXRbbysxXSYmcj49dFtvXSYmKG49ITApfSksbn0obixlLnByZXZSYW5nZXMpKSxsPXM/bWFwUmFuZ2VzKGUucHJldlJhbmdlcyxuLm1hcHBpbmcpOnJhbmdlc0ZvcihuLm1hcHBpbmcubWFwcyk7cmV0dXJuIG5ldyBIaXN0b3J5U3RhdGUoZS5kb25lLmFkZFRyYW5zZm9ybShuLGk/dC5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKTp2b2lkIDAscixtdXN0UHJlc2VydmVJdGVtcyh0KSksQnJhbmNoLmVtcHR5LGwsbi50aW1lLG51bGw9PW8/ZS5wcmV2Q29tcG9zaXRpb246byl9fShuLHIsdCxlKX0sY29uZmlnOmUscHJvcHM6e2hhbmRsZURPTUV2ZW50czp7YmVmb3JlaW5wdXQoZSx0KXtsZXQgbj10LmlucHV0VHlwZSxyPSJoaXN0b3J5VW5kbyI9PW4/QW46Imhpc3RvcnlSZWRvIj09bj9PbjpudWxsO3JldHVybiEoIXJ8fCFlLmVkaXRhYmxlKSYmKHQucHJldmVudERlZmF1bHQoKSxyKGUuc3RhdGUsZS5kaXNwYXRjaCkpfX19fSl9ZnVuY3Rpb24gYnVpbGRDb21tYW5kKGUsdCl7cmV0dXJuKG4scik9PntsZXQgbz1Dbi5nZXRTdGF0ZShuKTtpZighb3x8MD09KGU/by51bmRvbmU6by5kb25lKS5ldmVudENvdW50KXJldHVybiExO2lmKHIpe2xldCBpPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1tdXN0UHJlc2VydmVJdGVtcyh0KSxvPUNuLmdldCh0KS5zcGVjLmNvbmZpZyxpPShuP2UudW5kb25lOmUuZG9uZSkucG9wRXZlbnQodCxyKTtpZighaSlyZXR1cm4gbnVsbDtsZXQgcz1pLnNlbGVjdGlvbi5yZXNvbHZlKGkudHJhbnNmb3JtLmRvYyksbD0obj9lLmRvbmU6ZS51bmRvbmUpLmFkZFRyYW5zZm9ybShpLnRyYW5zZm9ybSx0LnNlbGVjdGlvbi5nZXRCb29rbWFyaygpLG8sciksYT1uZXcgSGlzdG9yeVN0YXRlKG4/bDppLnJlbWFpbmluZyxuP2kucmVtYWluaW5nOmwsbnVsbCwwLC0xKTtyZXR1cm4gaS50cmFuc2Zvcm0uc2V0U2VsZWN0aW9uKHMpLnNldE1ldGEoQ24se3JlZG86bixoaXN0b3J5U3RhdGU6YX0pfShvLG4sZSk7aSYmcih0P2kuc2Nyb2xsSW50b1ZpZXcoKTppKX1yZXR1cm4hMH19Y29uc3QgQW49YnVpbGRDb21tYW5kKCExLCEwKSxPbj1idWlsZENvbW1hbmQoITAsITApO2p0LmNyZWF0ZSh7bmFtZToiY2hhcmFjdGVyQ291bnQiLGFkZE9wdGlvbnM6KCk9Pih7bGltaXQ6bnVsbCxtb2RlOiJ0ZXh0U2l6ZSIsdGV4dENvdW50ZXI6ZT0+ZS5sZW5ndGgsd29yZENvdW50ZXI6ZT0+ZS5zcGxpdCgiICIpLmZpbHRlcihlPT4iIiE9PWUpLmxlbmd0aH0pLGFkZFN0b3JhZ2U6KCk9Pih7Y2hhcmFjdGVyczooKT0+MCx3b3JkczooKT0+MH0pLG9uQmVmb3JlQ3JlYXRlKCl7dGhpcy5zdG9yYWdlLmNoYXJhY3RlcnM9ZT0+e2NvbnN0IHQ9KG51bGw9PWU/dm9pZCAwOmUubm9kZSl8fHRoaXMuZWRpdG9yLnN0YXRlLmRvYztpZigidGV4dFNpemUiPT09KChudWxsPT1lP3ZvaWQgMDplLm1vZGUpfHx0aGlzLm9wdGlvbnMubW9kZSkpe2NvbnN0IGU9dC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLHZvaWQgMCwiICIpO3JldHVybiB0aGlzLm9wdGlvbnMudGV4dENvdW50ZXIoZSl9cmV0dXJuIHQubm9kZVNpemV9LHRoaXMuc3RvcmFnZS53b3Jkcz1lPT57Y29uc3QgdD0obnVsbD09ZT92b2lkIDA6ZS5ub2RlKXx8dGhpcy5lZGl0b3Iuc3RhdGUuZG9jLG49dC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLCIgIiwiICIpO3JldHVybiB0aGlzLm9wdGlvbnMud29yZENvdW50ZXIobil9fSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtsZXQgZT0hMTtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImNoYXJhY3RlckNvdW50IiksYXBwZW5kVHJhbnNhY3Rpb246KHQsbixyKT0+e2lmKGUpcmV0dXJuO2NvbnN0IG89dGhpcy5vcHRpb25zLmxpbWl0O2lmKG51bGw9PW98fDA9PT1vKXJldHVybiB2b2lkKGU9ITApO2NvbnN0IGk9dGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoe25vZGU6ci5kb2N9KTtpZihpPm8pe2NvbnN0IHQ9MCxuPWktbztjb25zb2xlLndhcm4oYFtDaGFyYWN0ZXJDb3VudF0gSW5pdGlhbCBjb250ZW50IGV4Y2VlZGVkIGxpbWl0IG9mICR7b30gY2hhcmFjdGVycy4gQ29udGVudCB3YXMgYXV0b21hdGljYWxseSB0cmltbWVkLmApO2NvbnN0IHM9ci50ci5kZWxldGVSYW5nZSh0LG4pO3JldHVybiBlPSEwLHN9ZT0hMH0sZmlsdGVyVHJhbnNhY3Rpb246KGUsdCk9Pntjb25zdCBuPXRoaXMub3B0aW9ucy5saW1pdDtpZighZS5kb2NDaGFuZ2VkfHwwPT09bnx8bnVsbD09bilyZXR1cm4hMDtjb25zdCByPXRoaXMuc3RvcmFnZS5jaGFyYWN0ZXJzKHtub2RlOnQuZG9jfSksbz10aGlzLnN0b3JhZ2UuY2hhcmFjdGVycyh7bm9kZTplLmRvY30pO2lmKG88PW4pcmV0dXJuITA7aWYocj5uJiZvPm4mJm88PXIpcmV0dXJuITA7aWYocj5uJiZvPm4mJm8+cilyZXR1cm4hMTtpZighZS5nZXRNZXRhKCJwYXN0ZSIpKXJldHVybiExO2NvbnN0IGk9ZS5zZWxlY3Rpb24uJGhlYWQucG9zLHM9aS0oby1uKSxsPWk7ZS5kZWxldGVSYW5nZShzLGwpO3JldHVybiEodGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoe25vZGU6ZS5kb2N9KT5uKX19KV19fSk7dmFyIEVuPWp0LmNyZWF0ZSh7bmFtZToiZHJvcEN1cnNvciIsYWRkT3B0aW9uczooKT0+KHtjb2xvcjoiY3VycmVudENvbG9yIix3aWR0aDoxLGNsYXNzOnZvaWQgMH0pLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltkcm9wQ3Vyc29yKHRoaXMub3B0aW9ucyldfX0pO2p0LmNyZWF0ZSh7bmFtZToiZm9jdXMiLGFkZE9wdGlvbnM6KCk9Pih7Y2xhc3NOYW1lOiJoYXMtZm9jdXMiLG1vZGU6ImFsbCJ9KSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImZvY3VzIikscHJvcHM6e2RlY29yYXRpb25zOih7ZG9jOmUsc2VsZWN0aW9uOnR9KT0+e2NvbnN0e2lzRWRpdGFibGU6bixpc0ZvY3VzZWQ6cn09dGhpcy5lZGl0b3Ise2FuY2hvcjpvfT10LGk9W107aWYoIW58fCFyKXJldHVybiBEZWNvcmF0aW9uU2V0LmNyZWF0ZShlLFtdKTtsZXQgcz0wOyJkZWVwZXN0Ij09PXRoaXMub3B0aW9ucy5tb2RlJiZlLmRlc2NlbmRhbnRzKChlLHQpPT57aWYoZS5pc1RleHQpcmV0dXJuO2lmKCEobz49dCYmbzw9dCtlLm5vZGVTaXplLTEpKXJldHVybiExO3MrPTF9KTtsZXQgbD0wO3JldHVybiBlLmRlc2NlbmRhbnRzKChlLHQpPT57aWYoZS5pc1RleHQpcmV0dXJuITE7aWYoIShvPj10JiZvPD10K2Uubm9kZVNpemUtMSkpcmV0dXJuITE7bCs9MTtpZigiZGVlcGVzdCI9PT10aGlzLm9wdGlvbnMubW9kZSYmcy1sPjB8fCJzaGFsbG93ZXN0Ij09PXRoaXMub3B0aW9ucy5tb2RlJiZsPjEpcmV0dXJuImRlZXBlc3QiPT09dGhpcy5vcHRpb25zLm1vZGU7aS5wdXNoKERlY29yYXRpb24ubm9kZSh0LHQrZS5ub2RlU2l6ZSx7Y2xhc3M6dGhpcy5vcHRpb25zLmNsYXNzTmFtZX0pKX0pLERlY29yYXRpb25TZXQuY3JlYXRlKGUsaSl9fX0pXX19KTt2YXIgTm49anQuY3JlYXRlKHtuYW1lOiJnYXBDdXJzb3IiLGFkZFByb3NlTWlycm9yUGx1Z2luczooKT0+W25ldyBQbHVnaW4oe3Byb3BzOntkZWNvcmF0aW9uczpkcmF3R2FwQ3Vyc29yLGNyZWF0ZVNlbGVjdGlvbkJldHdlZW46KGUsdCxuKT0+dC5wb3M9PW4ucG9zJiZHYXBDdXJzb3IudmFsaWQobik/bmV3IEdhcEN1cnNvcihuKTpudWxsLGhhbmRsZUNsaWNrOmhhbmRsZUNsaWNrLGhhbmRsZUtleURvd246a24saGFuZGxlRE9NRXZlbnRzOntiZWZvcmVpbnB1dDpiZWZvcmVpbnB1dH19fSldLGV4dGVuZE5vZGVTY2hlbWEoZSl7dmFyIHQ7cmV0dXJue2FsbG93R2FwQ3Vyc29yOm51bGwhPSh0PWNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChlLCJhbGxvd0dhcEN1cnNvciIse25hbWU6ZS5uYW1lLG9wdGlvbnM6ZS5vcHRpb25zLHN0b3JhZ2U6ZS5zdG9yYWdlfSkpKT90Om51bGx9fX0pLFJuPSJwbGFjZWhvbGRlciI7dmFyIERuPWp0LmNyZWF0ZSh7bmFtZToicGxhY2Vob2xkZXIiLGFkZE9wdGlvbnM6KCk9Pih7ZW1wdHlFZGl0b3JDbGFzczoiaXMtZWRpdG9yLWVtcHR5IixlbXB0eU5vZGVDbGFzczoiaXMtZW1wdHkiLGRhdGFBdHRyaWJ1dGU6Um4scGxhY2Vob2xkZXI6IldyaXRlIHNvbWV0aGluZyDigKYiLHNob3dPbmx5V2hlbkVkaXRhYmxlOiEwLHNob3dPbmx5Q3VycmVudDohMCxpbmNsdWRlQ2hpbGRyZW46ITF9KSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBlPXRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlP2BkYXRhLSR7dD10aGlzLm9wdGlvbnMuZGF0YUF0dHJpYnV0ZSx0LnJlcGxhY2UoL1xzKy9nLCItIikucmVwbGFjZSgvW15hLXpBLVowLTktXS9nLCIiKS5yZXBsYWNlKC9eWzAtOS1dKy8sIiIpLnJlcGxhY2UoL14tKy8sIiIpLnRvTG93ZXJDYXNlKCl9YDpgZGF0YS0ke1JufWA7dmFyIHQ7cmV0dXJuW25ldyBQbHVnaW4oe2tleTpuZXcgUGx1Z2luS2V5KCJwbGFjZWhvbGRlciIpLHByb3BzOntkZWNvcmF0aW9uczooe2RvYzp0LHNlbGVjdGlvbjpufSk9Pntjb25zdCByPXRoaXMuZWRpdG9yLmlzRWRpdGFibGV8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlXaGVuRWRpdGFibGUse2FuY2hvcjpvfT1uLGk9W107aWYoIXIpcmV0dXJuIG51bGw7Y29uc3Qgcz10aGlzLmVkaXRvci5pc0VtcHR5O3JldHVybiB0LmRlc2NlbmRhbnRzKCh0LG4pPT57Y29uc3Qgcj1vPj1uJiZvPD1uK3Qubm9kZVNpemUsbD0hdC5pc0xlYWYmJmlzTm9kZUVtcHR5KHQpO2lmKCF0LnR5cGUuaXNUZXh0YmxvY2spcmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlQ2hpbGRyZW47aWYoKHJ8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlDdXJyZW50KSYmbCl7Y29uc3Qgbz1bdGhpcy5vcHRpb25zLmVtcHR5Tm9kZUNsYXNzXTtzJiZvLnB1c2godGhpcy5vcHRpb25zLmVtcHR5RWRpdG9yQ2xhc3MpO2NvbnN0IGw9RGVjb3JhdGlvbi5ub2RlKG4sbit0Lm5vZGVTaXplLHtjbGFzczpvLmpvaW4oIiAiKSxbZV06ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcj90aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIoe2VkaXRvcjp0aGlzLmVkaXRvcixub2RlOnQscG9zOm4saGFzQW5jaG9yOnJ9KTp0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXJ9KTtpLnB1c2gobCl9cmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlQ2hpbGRyZW59KSxEZWNvcmF0aW9uU2V0LmNyZWF0ZSh0LGkpfX19KV19fSk7anQuY3JlYXRlKHtuYW1lOiJzZWxlY3Rpb24iLGFkZE9wdGlvbnM6KCk9Pih7Y2xhc3NOYW1lOiJzZWxlY3Rpb24ifSksYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7Y29uc3R7ZWRpdG9yOmUsb3B0aW9uczp0fT10aGlzO3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgic2VsZWN0aW9uIikscHJvcHM6e2RlY29yYXRpb25zOm49Pm4uc2VsZWN0aW9uLmVtcHR5fHxlLmlzRm9jdXNlZHx8IWUuaXNFZGl0YWJsZXx8aXNOb2RlU2VsZWN0aW9uKG4uc2VsZWN0aW9uKXx8ZS52aWV3LmRyYWdnaW5nP251bGw6RGVjb3JhdGlvblNldC5jcmVhdGUobi5kb2MsW0RlY29yYXRpb24uaW5saW5lKG4uc2VsZWN0aW9uLmZyb20sbi5zZWxlY3Rpb24udG8se2NsYXNzOnQuY2xhc3NOYW1lfSldKX19KV19fSk7ZnVuY3Rpb24gbm9kZUVxdWFsc1R5cGUoe3R5cGVzOmUsbm9kZTp0fSl7cmV0dXJuIHQmJkFycmF5LmlzQXJyYXkoZSkmJmUuaW5jbHVkZXModC50eXBlKXx8KG51bGw9PXQ/dm9pZCAwOnQudHlwZSk9PT1lfXZhciBQbj1qdC5jcmVhdGUoe25hbWU6InRyYWlsaW5nTm9kZSIsYWRkT3B0aW9uczooKT0+KHtub2RlOnZvaWQgMCxub3RBZnRlcjpbXX0pLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3ZhciBlO2NvbnN0IHQ9bmV3IFBsdWdpbktleSh0aGlzLm5hbWUpLG49dGhpcy5vcHRpb25zLm5vZGV8fChudWxsPT0oZT10aGlzLmVkaXRvci5zY2hlbWEudG9wTm9kZVR5cGUuY29udGVudE1hdGNoLmRlZmF1bHRUeXBlKT92b2lkIDA6ZS5uYW1lKXx8InBhcmFncmFwaCIscj1PYmplY3QuZW50cmllcyh0aGlzLmVkaXRvci5zY2hlbWEubm9kZXMpLm1hcCgoWyxlXSk9PmUpLmZpbHRlcihlPT4odGhpcy5vcHRpb25zLm5vdEFmdGVyfHxbXSkuY29uY2F0KG4pLmluY2x1ZGVzKGUubmFtZSkpO3JldHVybltuZXcgUGx1Z2luKHtrZXk6dCxhcHBlbmRUcmFuc2FjdGlvbjooZSxyLG8pPT57Y29uc3R7ZG9jOmksdHI6cyxzY2hlbWE6bH09byxhPXQuZ2V0U3RhdGUobyksYz1pLmNvbnRlbnQuc2l6ZSxkPWwubm9kZXNbbl07aWYoIWUuc29tZShlPT5lLmdldE1ldGEoInNraXBUcmFpbGluZ05vZGUiKSkmJmEpcmV0dXJuIHMuaW5zZXJ0KGMsZC5jcmVhdGUoKSl9LHN0YXRlOntpbml0OihlLHQpPT4hbm9kZUVxdWFsc1R5cGUoe25vZGU6dC50ci5kb2MubGFzdENoaWxkLHR5cGVzOnJ9KSxhcHBseTooZSx0KT0+e2lmKCFlLmRvY0NoYW5nZWQpcmV0dXJuIHQ7aWYoZS5nZXRNZXRhKCJfX3VuaXF1ZUlEVHJhbnNhY3Rpb24iKSlyZXR1cm4gdDtyZXR1cm4hbm9kZUVxdWFsc1R5cGUoe25vZGU6ZS5kb2MubGFzdENoaWxkLHR5cGVzOnJ9KX19fSldfX0pLEluPWp0LmNyZWF0ZSh7bmFtZToidW5kb1JlZG8iLGFkZE9wdGlvbnM6KCk9Pih7ZGVwdGg6MTAwLG5ld0dyb3VwRGVsYXk6NTAwfSksYWRkQ29tbWFuZHM6KCk9Pih7dW5kbzooKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+QW4oZSx0KSxyZWRvOigpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT5PbihlLHQpfSksYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW2hpc3RvcnkodGhpcy5vcHRpb25zKV19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QteiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnVuZG8oKSwiU2hpZnQtTW9kLXoiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCksIk1vZC15IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMucmVkbygpLCJNb2Qt0Y8iOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy51bmRvKCksIlNoaWZ0LU1vZC3RjyI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnJlZG8oKX19fSksJG49RG47ZnVuY3Rpb24gTSgpe3JldHVybnthc3luYzohMSxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxob29rczpudWxsLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2lsZW50OiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbH19dmFyIExuPXthc3luYzohMSxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxob29rczpudWxsLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2lsZW50OiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbH07ZnVuY3Rpb24gRyhlKXtMbj1lfXZhciB6bj17ZXhlYzooKT0+bnVsbH07ZnVuY3Rpb24gayhlLHQ9IiIpe2xldCBuPSJzdHJpbmciPT10eXBlb2YgZT9lOmUuc291cmNlLHI9e3JlcGxhY2U6KGUsdCk9PntsZXQgbz0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnNvdXJjZTtyZXR1cm4gbz1vLnJlcGxhY2UoRm4uY2FyZXQsIiQxIiksbj1uLnJlcGxhY2UoZSxvKSxyfSxnZXRSZWdleDooKT0+bmV3IFJlZ0V4cChuLHQpfTtyZXR1cm4gcn12YXIgQm49KCgpPT57dHJ5e3JldHVybiEhbmV3IFJlZ0V4cCgiKD88PTEpKD88ITEpIil9Y2F0Y2h7cmV0dXJuITF9fSkoKSxGbj17Y29kZVJlbW92ZUluZGVudDovXig/OiB7MSw0fXwgezAsM31cdCkvZ20sb3V0cHV0TGlua1JlcGxhY2U6L1xcKFtcW1xdXSkvZyxpbmRlbnRDb2RlQ29tcGVuc2F0aW9uOi9eKFxzKykoPzpgYGApLyxiZWdpbm5pbmdTcGFjZTovXlxzKy8sZW5kaW5nSGFzaDovIyQvLHN0YXJ0aW5nU3BhY2VDaGFyOi9eIC8sZW5kaW5nU3BhY2VDaGFyOi8gJC8sbm9uU3BhY2VDaGFyOi9bXiBdLyxuZXdMaW5lQ2hhckdsb2JhbDovXG4vZyx0YWJDaGFyR2xvYmFsOi9cdC9nLG11bHRpcGxlU3BhY2VHbG9iYWw6L1xzKy9nLGJsYW5rTGluZTovXlsgXHRdKiQvLGRvdWJsZUJsYW5rTGluZTovXG5bIFx0XSpcblsgXHRdKiQvLGJsb2NrcXVvdGVTdGFydDovXiB7MCwzfT4vLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlOi9cbiB7MCwzfSgoPzo9K3wtKykgKikoPz1cbnwkKS9nLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlMjovXiB7MCwzfT5bIFx0XT8vZ20sbGlzdFJlcGxhY2VOZXN0aW5nOi9eIHsxLDR9KD89KCB7NH0pKlteIF0pL2csbGlzdElzVGFzazovXlxbWyB4WF1cXSArXFMvLGxpc3RSZXBsYWNlVGFzazovXlxbWyB4WF1cXSArLyxsaXN0VGFza0NoZWNrYm94Oi9cW1sgeFhdXF0vLGFueUxpbmU6L1xuLipcbi8saHJlZkJyYWNrZXRzOi9ePCguKik+JC8sdGFibGVEZWxpbWl0ZXI6L1s6fF0vLHRhYmxlQWxpZ25DaGFyczovXlx8fFx8ICokL2csdGFibGVSb3dCbGFua0xpbmU6L1xuWyBcdF0qJC8sdGFibGVBbGlnblJpZ2h0Oi9eICotKzogKiQvLHRhYmxlQWxpZ25DZW50ZXI6L14gKjotKzogKiQvLHRhYmxlQWxpZ25MZWZ0Oi9eICo6LSsgKiQvLHN0YXJ0QVRhZzovXjxhIC9pLGVuZEFUYWc6L148XC9hPi9pLHN0YXJ0UHJlU2NyaXB0VGFnOi9ePChwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLGVuZFByZVNjcmlwdFRhZzovXjxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLHN0YXJ0QW5nbGVCcmFja2V0Oi9ePC8sZW5kQW5nbGVCcmFja2V0Oi8+JC8scGVkYW50aWNIcmVmVGl0bGU6L14oW14nIl0qW15cc10pXHMrKFsnIl0pKC4qKVwyLyx1bmljb2RlQWxwaGFOdW1lcmljOi9bXHB7TH1ccHtOfV0vdSxlc2NhcGVUZXN0Oi9bJjw+IiddLyxlc2NhcGVSZXBsYWNlOi9bJjw+IiddL2csZXNjYXBlVGVzdE5vRW5jb2RlOi9bPD4iJ118Jig/ISgjXGR7MSw3fXwjW1h4XVthLWZBLUYwLTldezEsNn18XHcrKTspLyxlc2NhcGVSZXBsYWNlTm9FbmNvZGU6L1s8PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykvZyxjYXJldDovKF58W15cW10pXF4vZyxwZXJjZW50RGVjb2RlOi8lMjUvZyxmaW5kUGlwZTovXHwvZyxzcGxpdFBpcGU6LyBcfC8sc2xhc2hQaXBlOi9cXFx8L2csY2FycmlhZ2VSZXR1cm46L1xyXG58XHIvZyxzcGFjZUxpbmU6L14gKyQvZ20sbm90U3BhY2VTdGFydDovXlxTKi8sZW5kaW5nTmV3bGluZTovXG4kLyxsaXN0SXRlbVJlZ2V4OmU9Pm5ldyBSZWdFeHAoYF4oIHswLDN9JHtlfSkoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpYCksbmV4dEJ1bGxldFJlZ2V4OmU9Pm5ldyBSZWdFeHAoYF4gezAsJHtNYXRoLm1pbigzLGUtMSl9fSg/OlsqKy1dfFxcZHsxLDl9Wy4pXSkoKD86WyBcdF1bXlxcbl0qKT8oPzpcXG58JCkpYCksaHJSZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX0oKD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpYCksZmVuY2VzQmVnaW5SZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX0oPzpcYFxgXGB8fn5+KWApLGhlYWRpbmdCZWdpblJlZ2V4OmU9Pm5ldyBSZWdFeHAoYF4gezAsJHtNYXRoLm1pbigzLGUtMSl9fSNgKSxodG1sQmVnaW5SZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX08KD86W2Etel0uKj58IS0tKWAsImkiKSxibG9ja3F1b3RlQmVnaW5SZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX0+YCl9LEhuPS9eIHswLDN9KCg/Oi1bXHQgXSopezMsfXwoPzpfWyBcdF0qKXszLH18KD86XCpbIFx0XSopezMsfSkoPzpcbit8JCkvLFZuPS8gezAsM30oPzpbKistXXxcZHsxLDl9Wy4pXSkvLF9uPS9eKD8hYnVsbCB8YmxvY2tDb2RlfGZlbmNlc3xibG9ja3F1b3RlfGhlYWRpbmd8aHRtbHx0YWJsZSkoKD86Lnxcbig/IVxzKj9cbnxidWxsIHxibG9ja0NvZGV8ZmVuY2VzfGJsb2NrcXVvdGV8aGVhZGluZ3xodG1sfHRhYmxlKSkrPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8sam49ayhfbikucmVwbGFjZSgvYnVsbC9nLFZuKS5yZXBsYWNlKC9ibG9ja0NvZGUvZywvKD86IHs0fXwgezAsM31cdCkvKS5yZXBsYWNlKC9mZW5jZXMvZywvIHswLDN9KD86YHszLH18fnszLH0pLykucmVwbGFjZSgvYmxvY2txdW90ZS9nLC8gezAsM30+LykucmVwbGFjZSgvaGVhZGluZy9nLC8gezAsM30jezEsNn0vKS5yZXBsYWNlKC9odG1sL2csLyB7MCwzfTxbXlxuPl0rPlxuLykucmVwbGFjZSgvXHx0YWJsZS9nLCIiKS5nZXRSZWdleCgpLHFuPWsoX24pLnJlcGxhY2UoL2J1bGwvZyxWbikucmVwbGFjZSgvYmxvY2tDb2RlL2csLyg/OiB7NH18IHswLDN9XHQpLykucmVwbGFjZSgvZmVuY2VzL2csLyB7MCwzfSg/OmB7Myx9fH57Myx9KS8pLnJlcGxhY2UoL2Jsb2NrcXVvdGUvZywvIHswLDN9Pi8pLnJlcGxhY2UoL2hlYWRpbmcvZywvIHswLDN9I3sxLDZ9LykucmVwbGFjZSgvaHRtbC9nLC8gezAsM308W15cbj5dKz5cbi8pLnJlcGxhY2UoL3RhYmxlL2csLyB7MCwzfVx8Pyg/Ols6XC0gXSpcfCkrW1w6XC0gXSpcbi8pLmdldFJlZ2V4KCksVW49L14oW15cbl0rKD86XG4oPyFocnxoZWFkaW5nfGxoZWFkaW5nfGJsb2NrcXVvdGV8ZmVuY2VzfGxpc3R8aHRtbHx0YWJsZXwgK1xuKVteXG5dKykqKS8sV249Lyg/IVxzKlxdKSg/OlxcW1xzXFNdfFteXFtcXVxcXSkrLyxLbj1rKC9eIHswLDN9XFsobGFiZWwpXF06ICooPzpcblsgXHRdKik/KFtePFxzXVteXHNdKnw8Lio/PikoPzooPzogKyg/OlxuWyBcdF0qKT98ICpcblsgXHRdKikodGl0bGUpKT8gKig/OlxuK3wkKS8pLnJlcGxhY2UoImxhYmVsIixXbikucmVwbGFjZSgidGl0bGUiLC8oPzoiKD86XFwiP3xbXiJcXF0pKiJ8J1teJ1xuXSooPzpcblteJ1xuXSspKlxuPyd8XChbXigpXSpcKSkvKS5nZXRSZWdleCgpLEpuPWsoL14oYnVsbCkoWyBcdF1bXlxuXSs/KT8oPzpcbnwkKS8pLnJlcGxhY2UoL2J1bGwvZyxWbikuZ2V0UmVnZXgoKSxHbj0iYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGhbMS02XXxoZWFkfGhlYWRlcnxocnxodG1sfGlmcmFtZXxsZWdlbmR8bGl8bGlua3xtYWlufG1lbnV8bWVudWl0ZW18bWV0YXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VhcmNofHNlY3Rpb258c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bCIsWG49LzwhLS0oPzotPz58W1xzXFNdKj8oPzotLT58JCkpLyxRbj1rKCJeIHswLDN9KD86PChzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVtcXHM+XVtcXHNcXFNdKj8oPzo8L1xcMT5bXlxcbl0qXFxuK3wkKXxjb21tZW50W15cXG5dKihcXG4rfCQpfDxcXD9bXFxzXFxTXSo/KD86XFw/Plxcbip8JCl8PCFbQS1aXVtcXHNcXFNdKj8oPzo+XFxuKnwkKXw8IVxcW0NEQVRBXFxbW1xcc1xcU10qPyg/OlxcXVxcXT5cXG4qfCQpfDwvPyh0YWcpKD86ICt8XFxufC8/PilbXFxzXFxTXSo/KD86KD86XFxuWyBcdF0qKStcXG58JCl8PCg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKFthLXpdW1xcdy1dKikoPzphdHRyaWJ1dGUpKj8gKi8/Pig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcblsgXHRdKikrXFxufCQpfDwvKD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbYS16XVtcXHctXSpcXHMqPig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcblsgXHRdKikrXFxufCQpKSIsImkiKS5yZXBsYWNlKCJjb21tZW50IixYbikucmVwbGFjZSgidGFnIixHbikucmVwbGFjZSgiYXR0cmlidXRlIiwvICtbYS16QS1aOl9dW1x3LjotXSooPzogKj0gKiJbXiJcbl0qInwgKj0gKidbXidcbl0qJ3wgKj0gKlteXHMiJz08PmBdKyk/LykuZ2V0UmVnZXgoKSxabj1rKFVuKS5yZXBsYWNlKCJociIsSG4pLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0oPzpcXHN8JCkiKS5yZXBsYWNlKCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ8dGFibGUiLCIiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pWyBcXHRdIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixHbikuZ2V0UmVnZXgoKSxZbj17YmxvY2txdW90ZTprKC9eKCB7MCwzfT4gPyhwYXJhZ3JhcGh8W15cbl0qKSg/OlxufCQpKSsvKS5yZXBsYWNlKCJwYXJhZ3JhcGgiLFpuKS5nZXRSZWdleCgpLGNvZGU6L14oKD86IHs0fXwgezAsM31cdClbXlxuXSsoPzpcbig/OlsgXHRdKig/OlxufCQpKSopPykrLyxkZWY6S24sZmVuY2VzOi9eIHswLDN9KGB7Myx9KD89W15gXG5dKig/OlxufCQpKXx+ezMsfSkoW15cbl0qKSg/OlxufCQpKD86fChbXHNcU10qPykoPzpcbnwkKSkoPzogezAsM31cMVt+YF0qICooPz1cbnwkKXwkKS8saGVhZGluZzovXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxocjpIbixodG1sOlFuLGxoZWFkaW5nOmpuLGxpc3Q6Sm4sbmV3bGluZTovXig/OlsgXHRdKig/OlxufCQpKSsvLHBhcmFncmFwaDpabix0YWJsZTp6bix0ZXh0Oi9eW15cbl0rL30sZXI9aygiXiAqKFteXFxuIF0uKilcXG4gezAsM30oKD86XFx8ICopPzo/LSs6PyAqKD86XFx8ICo6Py0rOj8gKikqKD86XFx8ICopPykoPzpcXG4oKD86KD8hICpcXG58aHJ8aGVhZGluZ3xibG9ja3F1b3RlfGNvZGV8ZmVuY2VzfGxpc3R8aHRtbCkuKig/OlxcbnwkKSkqKVxcbip8JCkiKS5yZXBsYWNlKCJociIsSG4pLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0oPzpcXHN8JCkiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImNvZGUiLCIoPzogezR9fCB7MCwzfVx0KVteXFxuXSIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pWyBcXHRdIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixHbikuZ2V0UmVnZXgoKSxucj17Li4uWW4sbGhlYWRpbmc6cW4sdGFibGU6ZXIscGFyYWdyYXBoOmsoVW4pLnJlcGxhY2UoImhyIixIbikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSg/Olxcc3wkKSIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInRhYmxlIixlcikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKVsgXFx0XSIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsR24pLmdldFJlZ2V4KCl9LHJyPXsuLi5ZbixodG1sOmsoIl4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OlwiW15cIl0qXCJ8J1teJ10qJ3xcXHNbXidcIi8+XFxzXSopKj8vPz4gKig/OlxcbnsyLH18XFxzKiQpKSIpLnJlcGxhY2UoImNvbW1lbnQiLFhuKS5yZXBsYWNlKC90YWcvZywiKD8hKD86YXxlbXxzdHJvbmd8c21hbGx8c3xjaXRlfHF8ZGZufGFiYnJ8ZGF0YXx0aW1lfGNvZGV8dmFyfHNhbXB8a2JkfHN1YnxzdXB8aXxifHV8bWFya3xydWJ5fHJ0fHJwfGJkaXxiZG98c3Bhbnxicnx3YnJ8aW5zfGRlbHxpbWcpXFxiKVxcdysoPyE6fFteXFx3XFxzQF0qQClcXGIiKS5nZXRSZWdleCgpLGRlZjovXiAqXFsoW15cXV0rKVxdOiAqPD8oW15ccz5dKyk+Pyg/OiArKFsiKF1bXlxuXStbIildKSk/ICooPzpcbit8JCkvLGhlYWRpbmc6L14oI3sxLDZ9KSguKikoPzpcbit8JCkvLGZlbmNlczp6bixsaGVhZGluZzovXiguKz8pXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLHBhcmFncmFwaDprKFVuKS5yZXBsYWNlKCJociIsSG4pLnJlcGxhY2UoImhlYWRpbmciLCIgKiN7MSw2fSAqW15cbl0iKS5yZXBsYWNlKCJsaGVhZGluZyIsam4pLnJlcGxhY2UoInx0YWJsZSIsIiIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgifGZlbmNlcyIsIiIpLnJlcGxhY2UoInxsaXN0IiwiIikucmVwbGFjZSgifGh0bWwiLCIiKS5yZXBsYWNlKCJ8dGFnIiwiIikuZ2V0UmVnZXgoKX0sb3I9L14oIHsyLH18XFwpXG4oPyFccyokKS8saXI9L1tccHtQfVxwe1N9XS91LHNyPS9bXHNccHtQfVxwe1N9XS91LGxyPS9bXlxzXHB7UH1ccHtTfV0vdSxhcj1rKC9eKCg/IVsqX10pcHVuY3RTcGFjZSkvLCJ1IikucmVwbGFjZSgvcHVuY3RTcGFjZS9nLHNyKS5nZXRSZWdleCgpLGNyPS8oPyF+KVtccHtQfVxwe1N9XS91LGRyPWsoL2xpbmt8cHJlY29kZS1jb2RlfGh0bWwvLCJnIikucmVwbGFjZSgibGluayIsL1xbKD86W15cW1xdYF18KD88YT5gKylbXmBdK1xrPGE+KD8hYCkpKj9cXVwoKD86XFxbXHNcU118W15cXFwoXCldfFwoKD86XFxbXHNcU118W15cXFwoXCldKSpcKSkqXCkvKS5yZXBsYWNlKCJwcmVjb2RlLSIsQm4/Iig/PCFgKSgpIjoiKF5efFteYF0pIikucmVwbGFjZSgiY29kZSIsLyg/PGI+YCspW15gXStcazxiPig/IWApLykucmVwbGFjZSgiaHRtbCIsLzwoPyEgKVtePD5dKj8+LykuZ2V0UmVnZXgoKSxwcj0vXig/OlwqKyg/OigoPyFcKilwdW5jdCl8KFteXHMqXSkpPyl8Xl8rKD86KCg/IV8pcHVuY3QpfChbXlxzX10pKT8vLGhyPWsocHIsInUiKS5yZXBsYWNlKC9wdW5jdC9nLGlyKS5nZXRSZWdleCgpLHVyPWsocHIsInUiKS5yZXBsYWNlKC9wdW5jdC9nLGNyKS5nZXRSZWdleCgpLGZyPSJeW15fKl0qP19fW15fKl0qP1xcKlteXypdKj8oPz1fXyl8W14qXSsoPz1bXipdKXwoPyFcXCopcHVuY3QoXFwqKykoPz1bXFxzXXwkKXxub3RQdW5jdFNwYWNlKFxcKispKD8hXFwqKSg/PXB1bmN0U3BhY2V8JCl8KD8hXFwqKXB1bmN0U3BhY2UoXFwqKykoPz1ub3RQdW5jdFNwYWNlKXxbXFxzXShcXCorKSg/IVxcKikoPz1wdW5jdCl8KD8hXFwqKXB1bmN0KFxcKispKD8hXFwqKSg/PXB1bmN0KXxub3RQdW5jdFNwYWNlKFxcKispKD89bm90UHVuY3RTcGFjZSkiLG1yPWsoZnIsImd1IikucmVwbGFjZSgvbm90UHVuY3RTcGFjZS9nLGxyKS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csc3IpLnJlcGxhY2UoL3B1bmN0L2csaXIpLmdldFJlZ2V4KCksZ3I9ayhmciwiZ3UiKS5yZXBsYWNlKC9ub3RQdW5jdFNwYWNlL2csLyg/OlteXHNccHtQfVxwe1N9XXx+KS91KS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csLyg/IX4pW1xzXHB7UH1ccHtTfV0vdSkucmVwbGFjZSgvcHVuY3QvZyxjcikuZ2V0UmVnZXgoKSx5cj1rKCJeW15fKl0qP1xcKlxcKlteXypdKj9fW15fKl0qPyg/PVxcKlxcKil8W15fXSsoPz1bXl9dKXwoPyFfKXB1bmN0KF8rKSg/PVtcXHNdfCQpfG5vdFB1bmN0U3BhY2UoXyspKD8hXykoPz1wdW5jdFNwYWNlfCQpfCg/IV8pcHVuY3RTcGFjZShfKykoPz1ub3RQdW5jdFNwYWNlKXxbXFxzXShfKykoPyFfKSg/PXB1bmN0KXwoPyFfKXB1bmN0KF8rKSg/IV8pKD89cHVuY3QpIiwiZ3UiKS5yZXBsYWNlKC9ub3RQdW5jdFNwYWNlL2csbHIpLnJlcGxhY2UoL3B1bmN0U3BhY2UvZyxzcikucmVwbGFjZSgvcHVuY3QvZyxpcikuZ2V0UmVnZXgoKSxrcj1rKC9efn4/KD86KCg/IX4pcHVuY3QpfFteXHN+XSkvLCJ1IikucmVwbGFjZSgvcHVuY3QvZyxpcikuZ2V0UmVnZXgoKSx3cj1rKCJeW15+XSsoPz1bXn5dKXwoPyF+KXB1bmN0KH5+PykoPz1bXFxzXXwkKXxub3RQdW5jdFNwYWNlKH5+PykoPyF+KSg/PXB1bmN0U3BhY2V8JCl8KD8hfilwdW5jdFNwYWNlKH5+PykoPz1ub3RQdW5jdFNwYWNlKXxbXFxzXSh+fj8pKD8hfikoPz1wdW5jdCl8KD8hfilwdW5jdCh+fj8pKD8hfikoPz1wdW5jdCl8bm90UHVuY3RTcGFjZSh+fj8pKD89bm90UHVuY3RTcGFjZSkiLCJndSIpLnJlcGxhY2UoL25vdFB1bmN0U3BhY2UvZyxscikucmVwbGFjZSgvcHVuY3RTcGFjZS9nLHNyKS5yZXBsYWNlKC9wdW5jdC9nLGlyKS5nZXRSZWdleCgpLGJyPWsoL1xcKHB1bmN0KS8sImd1IikucmVwbGFjZSgvcHVuY3QvZyxpcikuZ2V0UmVnZXgoKSx2cj1rKC9ePChzY2hlbWU6W15cc1x4MDAtXHgxZjw+XSp8ZW1haWwpPi8pLnJlcGxhY2UoInNjaGVtZSIsL1thLXpBLVpdW2EtekEtWjAtOSsuLV17MSwzMX0vKS5yZXBsYWNlKCJlbWFpbCIsL1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rKEApW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKyg/IVstX10pLykuZ2V0UmVnZXgoKSx4cj1rKFhuKS5yZXBsYWNlKCIoPzotLVx4M2V8JCkiLCItLVx4M2UiKS5nZXRSZWdleCgpLFNyPWsoIl5jb21tZW50fF48L1thLXpBLVpdW1xcdzotXSpcXHMqPnxePFthLXpBLVpdW1xcdy1dKig/OmF0dHJpYnV0ZSkqP1xccyovPz58XjxcXD9bXFxzXFxTXSo/XFw/PnxePCFbYS16QS1aXStcXHNbXFxzXFxTXSo/PnxePCFcXFtDREFUQVxcW1tcXHNcXFNdKj9cXF1cXF0+IikucmVwbGFjZSgiY29tbWVudCIseHIpLnJlcGxhY2UoImF0dHJpYnV0ZSIsL1xzK1thLXpBLVo6X11bXHcuOi1dKig/OlxzKj1ccyoiW14iXSoifFxzKj1ccyonW14nXSonfFxzKj1ccypbXlxzIic9PD5gXSspPy8pLmdldFJlZ2V4KCksVHI9Lyg/OlxbKD86XFxbXHNcU118W15cW1xdXFxdKSpcXXxcXFtcc1xTXXxgKyg/IWApW15gXSo/YCsoPyFgKXxgYCsoPz1cXSl8W15cW1xdXFxgXSkqPy8sQ3I9aygvXiE/XFsobGFiZWwpXF1cKFxzKihocmVmKSg/Oig/OlsgXHRdKyg/OlxuWyBcdF0qKT98XG5bIFx0XSopKHRpdGxlKSk/XHMqXCkvKS5yZXBsYWNlKCJsYWJlbCIsVHIpLnJlcGxhY2UoImhyZWYiLC88KD86XFwufFteXG48PlxcXSkrPnxbXiBcdFxuXHgwMC1ceDFmXSovKS5yZXBsYWNlKCJ0aXRsZSIsLyIoPzpcXCI/fFteIlxcXSkqInwnKD86XFwnP3xbXidcXF0pKid8XCgoPzpcXFwpP3xbXilcXF0pKlwpLykuZ2V0UmVnZXgoKSxNcj1rKC9eIT9cWyhsYWJlbClcXVxbKHJlZilcXS8pLnJlcGxhY2UoImxhYmVsIixUcikucmVwbGFjZSgicmVmIixXbikuZ2V0UmVnZXgoKSxBcj1rKC9eIT9cWyhyZWYpXF0oPzpcW1xdKT8vKS5yZXBsYWNlKCJyZWYiLFduKS5nZXRSZWdleCgpLE9yPS9baEhdW3RUXVt0VF1bcFBdW3NTXT98W2ZGXVt0VF1bcFBdLyxFcj17X2JhY2twZWRhbDp6bixhbnlQdW5jdHVhdGlvbjpicixhdXRvbGluazp2cixibG9ja1NraXA6ZHIsYnI6b3IsY29kZTovXihgKykoW15gXXxbXmBdW1xzXFNdKj9bXmBdKVwxKD8hYCkvLGRlbDp6bixkZWxMRGVsaW06em4sZGVsUkRlbGltOnpuLGVtU3Ryb25nTERlbGltOmhyLGVtU3Ryb25nUkRlbGltQXN0Om1yLGVtU3Ryb25nUkRlbGltVW5kOnlyLGVzY2FwZTovXlxcKFshIiMkJSYnKCkqKyxcLS4vOjs8PT4/QFxbXF1cXF5fYHt8fX5dKS8sbGluazpDcixub2xpbms6QXIscHVuY3R1YXRpb246YXIscmVmbGluazpNcixyZWZsaW5rU2VhcmNoOmsoInJlZmxpbmt8bm9saW5rKD8hXFwoKSIsImciKS5yZXBsYWNlKCJyZWZsaW5rIixNcikucmVwbGFjZSgibm9saW5rIixBcikuZ2V0UmVnZXgoKSx0YWc6U3IsdGV4dDovXihgK3xbXmBdKSg/Oig/PSB7Mix9XG4pfFtcc1xTXSo/KD86KD89W1xcPCFcW2AqX118XGJffCQpfFteIF0oPz0gezIsfVxuKSkpLyx1cmw6em59LE5yPXsuLi5FcixsaW5rOmsoL14hP1xbKGxhYmVsKVxdXCgoLio/KVwpLykucmVwbGFjZSgibGFiZWwiLFRyKS5nZXRSZWdleCgpLHJlZmxpbms6aygvXiE/XFsobGFiZWwpXF1ccypcWyhbXlxdXSopXF0vKS5yZXBsYWNlKCJsYWJlbCIsVHIpLmdldFJlZ2V4KCl9LFJyPXsuLi5FcixlbVN0cm9uZ1JEZWxpbUFzdDpncixlbVN0cm9uZ0xEZWxpbTp1cixkZWxMRGVsaW06a3IsZGVsUkRlbGltOndyLHVybDprKC9eKCg/OnByb3RvY29sKTpcL1wvfHd3d1wuKSg/OlthLXpBLVowLTlcLV0rXC4/KStbXlxzPF0qfF5lbWFpbC8pLnJlcGxhY2UoInByb3RvY29sIixPcikucmVwbGFjZSgiZW1haWwiLC9bQS1aYS16MC05Ll8rLV0rKEApW2EtekEtWjAtOS1fXSsoPzpcLlthLXpBLVowLTktX10qW2EtekEtWjAtOV0pKyg/IVstX10pLykuZ2V0UmVnZXgoKSxfYmFja3BlZGFsOi8oPzpbXj8hLiw6OypfJyJ+KCkmXSt8XChbXildKlwpfCYoPyFbYS16QS1aMC05XSs7JCl8Wz8hLiw6OypfJyJ+KV0rKD8hJCkpKy8sZGVsOi9eKH5+PykoPz1bXlxzfl0pKCg/OlxcW1xzXFNdfFteXFxdKSo/KD86XFxbXHNcU118W15cc35cXF0pKVwxKD89W15+XXwkKS8sdGV4dDprKC9eKFtgfl0rfFteYH5dKSg/Oig/PSB7Mix9XG4pfCg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApfFtcc1xTXSo/KD86KD89W1xcPCFcW2Aqfl9dfFxiX3xwcm90b2NvbDpcL1wvfHd3d1wufCQpfFteIF0oPz0gezIsfVxuKXxbXmEtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0oPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKSkpLykucmVwbGFjZSgicHJvdG9jb2wiLE9yKS5nZXRSZWdleCgpfSxEcj17Li4uUnIsYnI6ayhvcikucmVwbGFjZSgiezIsfSIsIioiKS5nZXRSZWdleCgpLHRleHQ6ayhSci50ZXh0KS5yZXBsYWNlKCJcXGJfIiwiXFxiX3wgezIsfVxcbiIpLnJlcGxhY2UoL1x7MixcfS9nLCIqIikuZ2V0UmVnZXgoKX0sUHI9e25vcm1hbDpZbixnZm06bnIscGVkYW50aWM6cnJ9LElyPXtub3JtYWw6RXIsZ2ZtOlJyLGJyZWFrczpEcixwZWRhbnRpYzpOcn0sJHI9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9LGtlPWU9PiRyW2VdO2Z1bmN0aW9uIFQoZSx0KXtpZih0KXtpZihGbi5lc2NhcGVUZXN0LnRlc3QoZSkpcmV0dXJuIGUucmVwbGFjZShGbi5lc2NhcGVSZXBsYWNlLGtlKX1lbHNlIGlmKEZuLmVzY2FwZVRlc3ROb0VuY29kZS50ZXN0KGUpKXJldHVybiBlLnJlcGxhY2UoRm4uZXNjYXBlUmVwbGFjZU5vRW5jb2RlLGtlKTtyZXR1cm4gZX1mdW5jdGlvbiBKKGUpe3RyeXtlPWVuY29kZVVSSShlKS5yZXBsYWNlKEZuLnBlcmNlbnREZWNvZGUsIiUiKX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gZX1mdW5jdGlvbiBWKGUsdCl7bGV0IG49ZS5yZXBsYWNlKEZuLmZpbmRQaXBlLChlLHQsbik9PntsZXQgcj0hMSxvPXQ7Zm9yKDstLW8+PTAmJiJcXCI9PT1uW29dOylyPSFyO3JldHVybiByPyJ8IjoiIHwifSkuc3BsaXQoRm4uc3BsaXRQaXBlKSxyPTA7aWYoblswXS50cmltKCl8fG4uc2hpZnQoKSxuLmxlbmd0aD4wJiYhbi5hdCgtMSk/LnRyaW0oKSYmbi5wb3AoKSx0KWlmKG4ubGVuZ3RoPnQpbi5zcGxpY2UodCk7ZWxzZSBmb3IoO24ubGVuZ3RoPHQ7KW4ucHVzaCgiIik7Zm9yKDtyPG4ubGVuZ3RoO3IrKyluW3JdPW5bcl0udHJpbSgpLnJlcGxhY2UoRm4uc2xhc2hQaXBlLCJ8Iik7cmV0dXJuIG59ZnVuY3Rpb24gSShlLHQsbil7bGV0IHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIiI7bGV0IG89MDtmb3IoO288cjspe2lmKGUuY2hhckF0KHItby0xKSE9PXQpYnJlYWs7bysrfXJldHVybiBlLnNsaWNlKDAsci1vKX1mdW5jdGlvbiBnZShlLHQ9MCl7bGV0IG49dCxyPSIiO2ZvcihsZXQgdCBvZiBlKWlmKCJcdCI9PT10KXtsZXQgZT00LW4lNDtyKz0iICIucmVwZWF0KGUpLG4rPWV9ZWxzZSByKz10LG4rKztyZXR1cm4gcn1mdW5jdGlvbiBmZShlLHQsbixyLG8pe2xldCBpPXQuaHJlZixzPXQudGl0bGV8fG51bGwsbD1lWzFdLnJlcGxhY2Uoby5vdGhlci5vdXRwdXRMaW5rUmVwbGFjZSwiJDEiKTtyLnN0YXRlLmluTGluaz0hMDtsZXQgYT17dHlwZToiISI9PT1lWzBdLmNoYXJBdCgwKT8iaW1hZ2UiOiJsaW5rIixyYXc6bixocmVmOmksdGl0bGU6cyx0ZXh0OmwsdG9rZW5zOnIuaW5saW5lVG9rZW5zKGwpfTtyZXR1cm4gci5zdGF0ZS5pbkxpbms9ITEsYX12YXIgTHI9Y2xhc3N7b3B0aW9ucztydWxlcztsZXhlcjtjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZXx8TG59c3BhY2UoZSl7bGV0IHQ9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMoZSk7aWYodCYmdFswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzp0WzBdfX1jb2RlKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suY29kZS5leGVjKGUpO2lmKHQpe2xldCBlPXRbMF0ucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLmNvZGVSZW1vdmVJbmRlbnQsIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6dFswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP2U6SShlLCJcbiIpfX19ZmVuY2VzKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMoZSk7aWYodCl7bGV0IGU9dFswXSxuPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLm1hdGNoKG4ub3RoZXIuaW5kZW50Q29kZUNvbXBlbnNhdGlvbik7aWYobnVsbD09PXIpcmV0dXJuIHQ7bGV0IG89clsxXTtyZXR1cm4gdC5zcGxpdCgiXG4iKS5tYXAoZT0+e2xldCB0PWUubWF0Y2gobi5vdGhlci5iZWdpbm5pbmdTcGFjZSk7aWYobnVsbD09PXQpcmV0dXJuIGU7bGV0W3JdPXQ7cmV0dXJuIHIubGVuZ3RoPj1vLmxlbmd0aD9lLnNsaWNlKG8ubGVuZ3RoKTplfSkuam9pbigiXG4iKX0oZSx0WzNdfHwiIix0aGlzLnJ1bGVzKTtyZXR1cm57dHlwZToiY29kZSIscmF3OmUsbGFuZzp0WzJdP3RbMl0udHJpbSgpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24sIiQxIik6dFsyXSx0ZXh0Om59fX1oZWFkaW5nKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suaGVhZGluZy5leGVjKGUpO2lmKHQpe2xldCBlPXRbMl0udHJpbSgpO2lmKHRoaXMucnVsZXMub3RoZXIuZW5kaW5nSGFzaC50ZXN0KGUpKXtsZXQgdD1JKGUsIiMiKTsodGhpcy5vcHRpb25zLnBlZGFudGljfHwhdHx8dGhpcy5ydWxlcy5vdGhlci5lbmRpbmdTcGFjZUNoYXIudGVzdCh0KSkmJihlPXQudHJpbSgpKX1yZXR1cm57dHlwZToiaGVhZGluZyIscmF3OnRbMF0sZGVwdGg6dFsxXS5sZW5ndGgsdGV4dDplLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShlKX19fWhyKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suaHIuZXhlYyhlKTtpZih0KXJldHVybnt0eXBlOiJociIscmF3OkkodFswXSwiXG4iKX19YmxvY2txdW90ZShlKXtsZXQgdD10aGlzLnJ1bGVzLmJsb2NrLmJsb2NrcXVvdGUuZXhlYyhlKTtpZih0KXtsZXQgZT1JKHRbMF0sIlxuIikuc3BsaXQoIlxuIiksbj0iIixyPSIiLG89W107Zm9yKDtlLmxlbmd0aD4wOyl7bGV0IHQsaT0hMSxzPVtdO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU3RhcnQudGVzdChlW3RdKSlzLnB1c2goZVt0XSksaT0hMDtlbHNle2lmKGkpYnJlYWs7cy5wdXNoKGVbdF0pfWU9ZS5zbGljZSh0KTtsZXQgbD1zLmpvaW4oIlxuIiksYT1sLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU2V0ZXh0UmVwbGFjZSwiXG4gICAgJDEiKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIuYmxvY2txdW90ZVNldGV4dFJlcGxhY2UyLCIiKTtuPW4/YCR7bn1cbiR7bH1gOmwscj1yP2Ake3J9XG4ke2F9YDphO2xldCBjPXRoaXMubGV4ZXIuc3RhdGUudG9wO2lmKHRoaXMubGV4ZXIuc3RhdGUudG9wPSEwLHRoaXMubGV4ZXIuYmxvY2tUb2tlbnMoYSxvLCEwKSx0aGlzLmxleGVyLnN0YXRlLnRvcD1jLDA9PT1lLmxlbmd0aClicmVhaztsZXQgZD1vLmF0KC0xKTtpZigiY29kZSI9PT1kPy50eXBlKWJyZWFrO2lmKCJibG9ja3F1b3RlIj09PWQ/LnR5cGUpe2xldCB0PWQsaT10LnJhdysiXG4iK2Uuam9pbigiXG4iKSxzPXRoaXMuYmxvY2txdW90ZShpKTtvW28ubGVuZ3RoLTFdPXMsbj1uLnN1YnN0cmluZygwLG4ubGVuZ3RoLXQucmF3Lmxlbmd0aCkrcy5yYXcscj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLXQudGV4dC5sZW5ndGgpK3MudGV4dDticmVha31pZigibGlzdCI9PT1kPy50eXBlKXtsZXQgdD1kLGk9dC5yYXcrIlxuIitlLmpvaW4oIlxuIikscz10aGlzLmxpc3QoaSk7b1tvLmxlbmd0aC0xXT1zLG49bi5zdWJzdHJpbmcoMCxuLmxlbmd0aC1kLnJhdy5sZW5ndGgpK3MucmF3LHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC10LnJhdy5sZW5ndGgpK3MucmF3LGU9aS5zdWJzdHJpbmcoby5hdCgtMSkucmF3Lmxlbmd0aCkuc3BsaXQoIlxuIik7Y29udGludWV9fXJldHVybnt0eXBlOiJibG9ja3F1b3RlIixyYXc6bix0b2tlbnM6byx0ZXh0OnJ9fX1saXN0KGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKGUpO2lmKHQpe2xldCBuPXRbMV0udHJpbSgpLHI9bi5sZW5ndGg+MSxvPXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpyLHN0YXJ0OnI/K24uc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119O249cj9gXFxkezEsOX1cXCR7bi5zbGljZSgtMSl9YDpgXFwke259YCx0aGlzLm9wdGlvbnMucGVkYW50aWMmJihuPXI/bjoiWyorLV0iKTtsZXQgaT10aGlzLnJ1bGVzLm90aGVyLmxpc3RJdGVtUmVnZXgobikscz0hMTtmb3IoO2U7KXtsZXQgbj0hMSxyPSIiLGw9IiI7aWYoISh0PWkuZXhlYyhlKSl8fHRoaXMucnVsZXMuYmxvY2suaHIudGVzdChlKSlicmVhaztyPXRbMF0sZT1lLnN1YnN0cmluZyhyLmxlbmd0aCk7bGV0IGE9Z2UodFsyXS5zcGxpdCgiXG4iLDEpWzBdLHRbMV0ubGVuZ3RoKSxjPWUuc3BsaXQoIlxuIiwxKVswXSxkPSFhLnRyaW0oKSxwPTA7aWYodGhpcy5vcHRpb25zLnBlZGFudGljPyhwPTIsbD1hLnRyaW1TdGFydCgpKTpkP3A9dFsxXS5sZW5ndGgrMToocD1hLnNlYXJjaCh0aGlzLnJ1bGVzLm90aGVyLm5vblNwYWNlQ2hhcikscD1wPjQ/MTpwLGw9YS5zbGljZShwKSxwKz10WzFdLmxlbmd0aCksZCYmdGhpcy5ydWxlcy5vdGhlci5ibGFua0xpbmUudGVzdChjKSYmKHIrPWMrIlxuIixlPWUuc3Vic3RyaW5nKGMubGVuZ3RoKzEpLG49ITApLCFuKXtsZXQgdD10aGlzLnJ1bGVzLm90aGVyLm5leHRCdWxsZXRSZWdleChwKSxuPXRoaXMucnVsZXMub3RoZXIuaHJSZWdleChwKSxvPXRoaXMucnVsZXMub3RoZXIuZmVuY2VzQmVnaW5SZWdleChwKSxpPXRoaXMucnVsZXMub3RoZXIuaGVhZGluZ0JlZ2luUmVnZXgocCkscz10aGlzLnJ1bGVzLm90aGVyLmh0bWxCZWdpblJlZ2V4KHApLGY9dGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlQmVnaW5SZWdleChwKTtmb3IoO2U7KXtsZXQgbSx5PWUuc3BsaXQoIlxuIiwxKVswXTtpZihjPXksdGhpcy5vcHRpb25zLnBlZGFudGljPyhjPWMucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLmxpc3RSZXBsYWNlTmVzdGluZywiICAiKSxtPWMpOm09Yy5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFiQ2hhckdsb2JhbCwiICAgICIpLG8udGVzdChjKXx8aS50ZXN0KGMpfHxzLnRlc3QoYyl8fGYudGVzdChjKXx8dC50ZXN0KGMpfHxuLnRlc3QoYykpYnJlYWs7aWYobS5zZWFyY2godGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIpPj1wfHwhYy50cmltKCkpbCs9IlxuIittLnNsaWNlKHApO2Vsc2V7aWYoZHx8YS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFiQ2hhckdsb2JhbCwiICAgICIpLnNlYXJjaCh0aGlzLnJ1bGVzLm90aGVyLm5vblNwYWNlQ2hhcik+PTR8fG8udGVzdChhKXx8aS50ZXN0KGEpfHxuLnRlc3QoYSkpYnJlYWs7bCs9IlxuIitjfWQ9IWMudHJpbSgpLHIrPXkrIlxuIixlPWUuc3Vic3RyaW5nKHkubGVuZ3RoKzEpLGE9bS5zbGljZShwKX19by5sb29zZXx8KHM/by5sb29zZT0hMDp0aGlzLnJ1bGVzLm90aGVyLmRvdWJsZUJsYW5rTGluZS50ZXN0KHIpJiYocz0hMCkpLG8uaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6cix0YXNrOiEhdGhpcy5vcHRpb25zLmdmbSYmdGhpcy5ydWxlcy5vdGhlci5saXN0SXNUYXNrLnRlc3QobCksbG9vc2U6ITEsdGV4dDpsLHRva2VuczpbXX0pLG8ucmF3Kz1yfWxldCBsPW8uaXRlbXMuYXQoLTEpO2lmKCFsKXJldHVybjtsLnJhdz1sLnJhdy50cmltRW5kKCksbC50ZXh0PWwudGV4dC50cmltRW5kKCksby5yYXc9by5yYXcudHJpbUVuZCgpO2ZvcihsZXQgZSBvZiBvLml0ZW1zKXtpZih0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxlLnRva2Vucz10aGlzLmxleGVyLmJsb2NrVG9rZW5zKGUudGV4dCxbXSksZS50YXNrKXtpZihlLnRleHQ9ZS50ZXh0LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLCJ0ZXh0Ij09PWUudG9rZW5zWzBdPy50eXBlfHwicGFyYWdyYXBoIj09PWUudG9rZW5zWzBdPy50eXBlKXtlLnRva2Vuc1swXS5yYXc9ZS50b2tlbnNbMF0ucmF3LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLGUudG9rZW5zWzBdLnRleHQ9ZS50b2tlbnNbMF0udGV4dC5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubGlzdFJlcGxhY2VUYXNrLCIiKTtmb3IobGV0IGU9dGhpcy5sZXhlci5pbmxpbmVRdWV1ZS5sZW5ndGgtMTtlPj0wO2UtLSlpZih0aGlzLnJ1bGVzLm90aGVyLmxpc3RJc1Rhc2sudGVzdCh0aGlzLmxleGVyLmlubGluZVF1ZXVlW2VdLnNyYykpe3RoaXMubGV4ZXIuaW5saW5lUXVldWVbZV0uc3JjPXRoaXMubGV4ZXIuaW5saW5lUXVldWVbZV0uc3JjLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpO2JyZWFrfX1sZXQgdD10aGlzLnJ1bGVzLm90aGVyLmxpc3RUYXNrQ2hlY2tib3guZXhlYyhlLnJhdyk7aWYodCl7bGV0IG49e3R5cGU6ImNoZWNrYm94IixyYXc6dFswXSsiICIsY2hlY2tlZDoiWyBdIiE9PXRbMF19O2UuY2hlY2tlZD1uLmNoZWNrZWQsby5sb29zZT9lLnRva2Vuc1swXSYmWyJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoZS50b2tlbnNbMF0udHlwZSkmJiJ0b2tlbnMiaW4gZS50b2tlbnNbMF0mJmUudG9rZW5zWzBdLnRva2Vucz8oZS50b2tlbnNbMF0ucmF3PW4ucmF3K2UudG9rZW5zWzBdLnJhdyxlLnRva2Vuc1swXS50ZXh0PW4ucmF3K2UudG9rZW5zWzBdLnRleHQsZS50b2tlbnNbMF0udG9rZW5zLnVuc2hpZnQobikpOmUudG9rZW5zLnVuc2hpZnQoe3R5cGU6InBhcmFncmFwaCIscmF3Om4ucmF3LHRleHQ6bi5yYXcsdG9rZW5zOltuXX0pOmUudG9rZW5zLnVuc2hpZnQobil9fWlmKCFvLmxvb3NlKXtsZXQgdD1lLnRva2Vucy5maWx0ZXIoZT0+InNwYWNlIj09PWUudHlwZSksbj10Lmxlbmd0aD4wJiZ0LnNvbWUoZT0+dGhpcy5ydWxlcy5vdGhlci5hbnlMaW5lLnRlc3QoZS5yYXcpKTtvLmxvb3NlPW59fWlmKG8ubG9vc2UpZm9yKGxldCBlIG9mIG8uaXRlbXMpe2UubG9vc2U9ITA7Zm9yKGxldCB0IG9mIGUudG9rZW5zKSJ0ZXh0Ij09PXQudHlwZSYmKHQudHlwZT0icGFyYWdyYXBoIil9cmV0dXJuIG99fWh0bWwoZSl7bGV0IHQ9dGhpcy5ydWxlcy5ibG9jay5odG1sLmV4ZWMoZSk7aWYodClyZXR1cm57dHlwZToiaHRtbCIsYmxvY2s6ITAscmF3OnRbMF0scHJlOiJwcmUiPT09dFsxXXx8InNjcmlwdCI9PT10WzFdfHwic3R5bGUiPT09dFsxXSx0ZXh0OnRbMF19fWRlZihlKXtsZXQgdD10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKGUpO2lmKHQpe2xldCBlPXRbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubXVsdGlwbGVTcGFjZUdsb2JhbCwiICIpLG49dFsyXT90WzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ocmVmQnJhY2tldHMsIiQxIikucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbiwiJDEiKToiIixyPXRbM10/dFszXS5zdWJzdHJpbmcoMSx0WzNdLmxlbmd0aC0xKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpOnRbM107cmV0dXJue3R5cGU6ImRlZiIsdGFnOmUscmF3OnRbMF0saHJlZjpuLHRpdGxlOnJ9fX10YWJsZShlKXtsZXQgdD10aGlzLnJ1bGVzLmJsb2NrLnRhYmxlLmV4ZWMoZSk7aWYoIXR8fCF0aGlzLnJ1bGVzLm90aGVyLnRhYmxlRGVsaW1pdGVyLnRlc3QodFsyXSkpcmV0dXJuO2xldCBuPVYodFsxXSkscj10WzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduQ2hhcnMsIiIpLnNwbGl0KCJ8Iiksbz10WzNdPy50cmltKCk/dFszXS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFibGVSb3dCbGFua0xpbmUsIiIpLnNwbGl0KCJcbiIpOltdLGk9e3R5cGU6InRhYmxlIixyYXc6dFswXSxoZWFkZXI6W10sYWxpZ246W10scm93czpbXX07aWYobi5sZW5ndGg9PT1yLmxlbmd0aCl7Zm9yKGxldCBlIG9mIHIpdGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduUmlnaHQudGVzdChlKT9pLmFsaWduLnB1c2goInJpZ2h0Iik6dGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduQ2VudGVyLnRlc3QoZSk/aS5hbGlnbi5wdXNoKCJjZW50ZXIiKTp0aGlzLnJ1bGVzLm90aGVyLnRhYmxlQWxpZ25MZWZ0LnRlc3QoZSk/aS5hbGlnbi5wdXNoKCJsZWZ0Iik6aS5hbGlnbi5wdXNoKG51bGwpO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKWkuaGVhZGVyLnB1c2goe3RleHQ6bltlXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUobltlXSksaGVhZGVyOiEwLGFsaWduOmkuYWxpZ25bZV19KTtmb3IobGV0IGUgb2YgbylpLnJvd3MucHVzaChWKGUsaS5oZWFkZXIubGVuZ3RoKS5tYXAoKGUsdCk9Pih7dGV4dDplLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShlKSxoZWFkZXI6ITEsYWxpZ246aS5hbGlnblt0XX0pKSk7cmV0dXJuIGl9fWxoZWFkaW5nKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2subGhlYWRpbmcuZXhlYyhlKTtpZih0KXtsZXQgZT10WzFdLnRyaW0oKTtyZXR1cm57dHlwZToiaGVhZGluZyIscmF3OnRbMF0sZGVwdGg6Ij0iPT09dFsyXS5jaGFyQXQoMCk/MToyLHRleHQ6ZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZSl9fX1wYXJhZ3JhcGgoZSl7bGV0IHQ9dGhpcy5ydWxlcy5ibG9jay5wYXJhZ3JhcGguZXhlYyhlKTtpZih0KXtsZXQgZT0iXG4iPT09dFsxXS5jaGFyQXQodFsxXS5sZW5ndGgtMSk/dFsxXS5zbGljZSgwLC0xKTp0WzFdO3JldHVybnt0eXBlOiJwYXJhZ3JhcGgiLHJhdzp0WzBdLHRleHQ6ZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZSl9fX10ZXh0KGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKGUpO2lmKHQpcmV0dXJue3R5cGU6InRleHQiLHJhdzp0WzBdLHRleHQ6dFswXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodFswXSl9fWVzY2FwZShlKXtsZXQgdD10aGlzLnJ1bGVzLmlubGluZS5lc2NhcGUuZXhlYyhlKTtpZih0KXJldHVybnt0eXBlOiJlc2NhcGUiLHJhdzp0WzBdLHRleHQ6dFsxXX19dGFnKGUpe2xldCB0PXRoaXMucnVsZXMuaW5saW5lLnRhZy5leGVjKGUpO2lmKHQpcmV0dXJuIXRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0QVRhZy50ZXN0KHRbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLmVuZEFUYWcudGVzdCh0WzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0UHJlU2NyaXB0VGFnLnRlc3QodFswXSk/dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmdGhpcy5ydWxlcy5vdGhlci5lbmRQcmVTY3JpcHRUYWcudGVzdCh0WzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMSkse3R5cGU6Imh0bWwiLHJhdzp0WzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2NrOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayxibG9jazohMSx0ZXh0OnRbMF19fWxpbmsoZSl7bGV0IHQ9dGhpcy5ydWxlcy5pbmxpbmUubGluay5leGVjKGUpO2lmKHQpe2xldCBlPXRbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJnRoaXMucnVsZXMub3RoZXIuc3RhcnRBbmdsZUJyYWNrZXQudGVzdChlKSl7aWYoIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QoZSkpcmV0dXJuO2xldCB0PUkoZS5zbGljZSgwLC0xKSwiXFwiKTtpZigoZS5sZW5ndGgtdC5sZW5ndGgpJTI9PTApcmV0dXJufWVsc2V7bGV0IGU9ZnVuY3Rpb24oZSx0KXtpZigtMT09PWUuaW5kZXhPZih0WzFdKSlyZXR1cm4tMTtsZXQgbj0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKCJcXCI9PT1lW3JdKXIrKztlbHNlIGlmKGVbcl09PT10WzBdKW4rKztlbHNlIGlmKGVbcl09PT10WzFdJiYobi0tLG48MCkpcmV0dXJuIHI7cmV0dXJuIG4+MD8tMjotMX0odFsyXSwiKCkiKTtpZigtMj09PWUpcmV0dXJuO2lmKGU+LTEpe2xldCBuPSgwPT09dFswXS5pbmRleE9mKCIhIik/NTo0KSt0WzFdLmxlbmd0aCtlO3RbMl09dFsyXS5zdWJzdHJpbmcoMCxlKSx0WzBdPXRbMF0uc3Vic3RyaW5nKDAsbikudHJpbSgpLHRbM109IiJ9fWxldCBuPXRbMl0scj0iIjtpZih0aGlzLm9wdGlvbnMucGVkYW50aWMpe2xldCBlPXRoaXMucnVsZXMub3RoZXIucGVkYW50aWNIcmVmVGl0bGUuZXhlYyhuKTtlJiYobj1lWzFdLHI9ZVszXSl9ZWxzZSByPXRbM10/dFszXS5zbGljZSgxLC0xKToiIjtyZXR1cm4gbj1uLnRyaW0oKSx0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0QW5nbGVCcmFja2V0LnRlc3QobikmJihuPXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QoZSk/bi5zbGljZSgxKTpuLnNsaWNlKDEsLTEpKSxmZSh0LHtocmVmOm4mJm4ucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbiwiJDEiKSx0aXRsZTpyJiZyLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24sIiQxIil9LHRbMF0sdGhpcy5sZXhlcix0aGlzLnJ1bGVzKX19cmVmbGluayhlLHQpe2xldCBuO2lmKChuPXRoaXMucnVsZXMuaW5saW5lLnJlZmxpbmsuZXhlYyhlKSl8fChuPXRoaXMucnVsZXMuaW5saW5lLm5vbGluay5leGVjKGUpKSl7bGV0IGU9dFsoblsyXXx8blsxXSkucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLm11bHRpcGxlU3BhY2VHbG9iYWwsIiAiKS50b0xvd2VyQ2FzZSgpXTtpZighZSl7bGV0IGU9blswXS5jaGFyQXQoMCk7cmV0dXJue3R5cGU6InRleHQiLHJhdzplLHRleHQ6ZX19cmV0dXJuIGZlKG4sZSxuWzBdLHRoaXMubGV4ZXIsdGhpcy5ydWxlcyl9fWVtU3Ryb25nKGUsdCxuPSIiKXtsZXQgcj10aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZ0xEZWxpbS5leGVjKGUpO2lmKHImJihyWzFdfHxyWzJdfHxyWzNdfHxyWzRdKSYmKCFyWzRdfHwhbi5tYXRjaCh0aGlzLnJ1bGVzLm90aGVyLnVuaWNvZGVBbHBoYU51bWVyaWMpKSYmKCFyWzFdJiYhclszXXx8IW58fHRoaXMucnVsZXMuaW5saW5lLnB1bmN0dWF0aW9uLmV4ZWMobikpKXtsZXQgbixvLGk9Wy4uLnJbMF1dLmxlbmd0aC0xLHM9aSxsPTAsYT0iKiI9PT1yWzBdWzBdP3RoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nUkRlbGltQXN0OnRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nUkRlbGltVW5kO2ZvcihhLmxhc3RJbmRleD0wLHQ9dC5zbGljZSgtMSplLmxlbmd0aCtpKTtudWxsIT09KHI9YS5leGVjKHQpKTspe2lmKG49clsxXXx8clsyXXx8clszXXx8cls0XXx8cls1XXx8cls2XSwhbiljb250aW51ZTtpZihvPVsuLi5uXS5sZW5ndGgsclszXXx8cls0XSl7cys9bztjb250aW51ZX1pZigocls1XXx8cls2XSkmJmklMyYmISgoaStvKSUzKSl7bCs9bztjb250aW51ZX1pZihzLT1vLHM+MCljb250aW51ZTtvPU1hdGgubWluKG8sbytzK2wpO2xldCB0PVsuLi5yWzBdXVswXS5sZW5ndGgsYT1lLnNsaWNlKDAsaStyLmluZGV4K3Qrbyk7aWYoTWF0aC5taW4oaSxvKSUyKXtsZXQgZT1hLnNsaWNlKDEsLTEpO3JldHVybnt0eXBlOiJlbSIscmF3OmEsdGV4dDplLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhlKX19bGV0IGM9YS5zbGljZSgyLC0yKTtyZXR1cm57dHlwZToic3Ryb25nIixyYXc6YSx0ZXh0OmMsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGMpfX19fWNvZGVzcGFuKGUpe2xldCB0PXRoaXMucnVsZXMuaW5saW5lLmNvZGUuZXhlYyhlKTtpZih0KXtsZXQgZT10WzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5uZXdMaW5lQ2hhckdsb2JhbCwiICIpLG49dGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIudGVzdChlKSxyPXRoaXMucnVsZXMub3RoZXIuc3RhcnRpbmdTcGFjZUNoYXIudGVzdChlKSYmdGhpcy5ydWxlcy5vdGhlci5lbmRpbmdTcGFjZUNoYXIudGVzdChlKTtyZXR1cm4gbiYmciYmKGU9ZS5zdWJzdHJpbmcoMSxlLmxlbmd0aC0xKSkse3R5cGU6ImNvZGVzcGFuIixyYXc6dFswXSx0ZXh0OmV9fX1icihlKXtsZXQgdD10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKGUpO2lmKHQpcmV0dXJue3R5cGU6ImJyIixyYXc6dFswXX19ZGVsKGUsdCxuPSIiKXtsZXQgcj10aGlzLnJ1bGVzLmlubGluZS5kZWxMRGVsaW0uZXhlYyhlKTtpZihyJiYoIXJbMV18fCFufHx0aGlzLnJ1bGVzLmlubGluZS5wdW5jdHVhdGlvbi5leGVjKG4pKSl7bGV0IG4sbyxpPVsuLi5yWzBdXS5sZW5ndGgtMSxzPWksbD10aGlzLnJ1bGVzLmlubGluZS5kZWxSRGVsaW07Zm9yKGwubGFzdEluZGV4PTAsdD10LnNsaWNlKC0xKmUubGVuZ3RoK2kpO251bGwhPT0ocj1sLmV4ZWModCkpOyl7aWYobj1yWzFdfHxyWzJdfHxyWzNdfHxyWzRdfHxyWzVdfHxyWzZdLCFufHwobz1bLi4ubl0ubGVuZ3RoLG8hPT1pKSljb250aW51ZTtpZihyWzNdfHxyWzRdKXtzKz1vO2NvbnRpbnVlfWlmKHMtPW8scz4wKWNvbnRpbnVlO289TWF0aC5taW4obyxvK3MpO2xldCB0PVsuLi5yWzBdXVswXS5sZW5ndGgsbD1lLnNsaWNlKDAsaStyLmluZGV4K3QrbyksYT1sLnNsaWNlKGksLWkpO3JldHVybnt0eXBlOiJkZWwiLHJhdzpsLHRleHQ6YSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoYSl9fX19YXV0b2xpbmsoZSl7bGV0IHQ9dGhpcy5ydWxlcy5pbmxpbmUuYXV0b2xpbmsuZXhlYyhlKTtpZih0KXtsZXQgZSxuO3JldHVybiJAIj09PXRbMl0/KGU9dFsxXSxuPSJtYWlsdG86IitlKTooZT10WzFdLG49ZSkse3R5cGU6ImxpbmsiLHJhdzp0WzBdLHRleHQ6ZSxocmVmOm4sdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmUsdGV4dDplfV19fX11cmwoZSl7bGV0IHQ7aWYodD10aGlzLnJ1bGVzLmlubGluZS51cmwuZXhlYyhlKSl7bGV0IGUsbjtpZigiQCI9PT10WzJdKWU9dFswXSxuPSJtYWlsdG86IitlO2Vsc2V7bGV0IHI7ZG97cj10WzBdLHRbMF09dGhpcy5ydWxlcy5pbmxpbmUuX2JhY2twZWRhbC5leGVjKHRbMF0pPy5bMF0/PyIifXdoaWxlKHIhPT10WzBdKTtlPXRbMF0sbj0id3d3LiI9PT10WzFdPyJodHRwOi8vIit0WzBdOnRbMF19cmV0dXJue3R5cGU6ImxpbmsiLHJhdzp0WzBdLHRleHQ6ZSxocmVmOm4sdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmUsdGV4dDplfV19fX1pbmxpbmVUZXh0KGUpe2xldCB0PXRoaXMucnVsZXMuaW5saW5lLnRleHQuZXhlYyhlKTtpZih0KXtsZXQgZT10aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s7cmV0dXJue3R5cGU6InRleHQiLHJhdzp0WzBdLHRleHQ6dFswXSxlc2NhcGVkOmV9fX19LHpyPWNsYXNzIHV7dG9rZW5zO29wdGlvbnM7c3RhdGU7aW5saW5lUXVldWU7dG9rZW5pemVyO2NvbnN0cnVjdG9yKGUpe3RoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5zLmxpbmtzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zPWV8fExuLHRoaXMub3B0aW9ucy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcnx8bmV3IExyLHRoaXMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXIsdGhpcy50b2tlbml6ZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy50b2tlbml6ZXIubGV4ZXI9dGhpcyx0aGlzLmlubGluZVF1ZXVlPVtdLHRoaXMuc3RhdGU9e2luTGluazohMSxpblJhd0Jsb2NrOiExLHRvcDohMH07bGV0IHQ9e290aGVyOkZuLGJsb2NrOlByLm5vcm1hbCxpbmxpbmU6SXIubm9ybWFsfTt0aGlzLm9wdGlvbnMucGVkYW50aWM/KHQuYmxvY2s9UHIucGVkYW50aWMsdC5pbmxpbmU9SXIucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJih0LmJsb2NrPVByLmdmbSx0aGlzLm9wdGlvbnMuYnJlYWtzP3QuaW5saW5lPUlyLmJyZWFrczp0LmlubGluZT1Jci5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPXR9c3RhdGljIGdldCBydWxlcygpe3JldHVybntibG9jazpQcixpbmxpbmU6SXJ9fXN0YXRpYyBsZXgoZSx0KXtyZXR1cm4gbmV3IHUodCkubGV4KGUpfXN0YXRpYyBsZXhJbmxpbmUoZSx0KXtyZXR1cm4gbmV3IHUodCkuaW5saW5lVG9rZW5zKGUpfWxleChlKXtlPWUucmVwbGFjZShGbi5jYXJyaWFnZVJldHVybiwiXG4iKSx0aGlzLmJsb2NrVG9rZW5zKGUsdGhpcy50b2tlbnMpO2ZvcihsZXQgZT0wO2U8dGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGg7ZSsrKXtsZXQgdD10aGlzLmlubGluZVF1ZXVlW2VdO3RoaXMuaW5saW5lVG9rZW5zKHQuc3JjLHQudG9rZW5zKX1yZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnRva2Vuc31ibG9ja1Rva2VucyhlLHQ9W10sbj0hMSl7Zm9yKHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5vcHRpb25zLnBlZGFudGljJiYoZT1lLnJlcGxhY2UoRm4udGFiQ2hhckdsb2JhbCwiICAgICIpLnJlcGxhY2UoRm4uc3BhY2VMaW5lLCIiKSk7ZTspe2xldCByO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5ibG9jaz8uc29tZShuPT4hIShyPW4uY2FsbCh7bGV4ZXI6dGhpc30sZSx0KSkmJihlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpLCEwKSkpY29udGludWU7aWYocj10aGlzLnRva2VuaXplci5zcGFjZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOzE9PT1yLnJhdy5sZW5ndGgmJnZvaWQgMCE9PW4/bi5yYXcrPSJcbiI6dC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuY29kZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOyJwYXJhZ3JhcGgiPT09bj8udHlwZXx8InRleHQiPT09bj8udHlwZT8obi5yYXcrPShuLnJhdy5lbmRzV2l0aCgiXG4iKT8iIjoiXG4iKStyLnJhdyxuLnRleHQrPSJcbiIrci50ZXh0LHRoaXMuaW5saW5lUXVldWUuYXQoLTEpLnNyYz1uLnRleHQpOnQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmZlbmNlcyhlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmhlYWRpbmcoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5ocihlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmJsb2NrcXVvdGUoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5saXN0KGUpKXtlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuaHRtbChlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmRlZihlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOyJwYXJhZ3JhcGgiPT09bj8udHlwZXx8InRleHQiPT09bj8udHlwZT8obi5yYXcrPShuLnJhdy5lbmRzV2l0aCgiXG4iKT8iIjoiXG4iKStyLnJhdyxuLnRleHQrPSJcbiIrci5yYXcsdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW4udGV4dCk6dGhpcy50b2tlbnMubGlua3Nbci50YWddfHwodGhpcy50b2tlbnMubGlua3Nbci50YWddPXtocmVmOnIuaHJlZix0aXRsZTpyLnRpdGxlfSx0LnB1c2gocikpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIudGFibGUoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5saGVhZGluZyhlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1sZXQgbz1lO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5zdGFydEJsb2NrKXtsZXQgdCxuPTEvMCxyPWUuc2xpY2UoMSk7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jay5mb3JFYWNoKGU9Pnt0PWUuY2FsbCh7bGV4ZXI6dGhpc30sciksIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wJiYobj1NYXRoLm1pbihuLHQpKX0pLG48MS8wJiZuPj0wJiYobz1lLnN1YnN0cmluZygwLG4rMSkpfWlmKHRoaXMuc3RhdGUudG9wJiYocj10aGlzLnRva2VuaXplci5wYXJhZ3JhcGgobykpKXtsZXQgaT10LmF0KC0xKTtuJiYicGFyYWdyYXBoIj09PWk/LnR5cGU/KGkucmF3Kz0oaS5yYXcuZW5kc1dpdGgoIlxuIik/IiI6IlxuIikrci5yYXcsaS50ZXh0Kz0iXG4iK3IudGV4dCx0aGlzLmlubGluZVF1ZXVlLnBvcCgpLHRoaXMuaW5saW5lUXVldWUuYXQoLTEpLnNyYz1pLnRleHQpOnQucHVzaChyKSxuPW8ubGVuZ3RoIT09ZS5sZW5ndGgsZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIudGV4dChlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOyJ0ZXh0Ij09PW4/LnR5cGU/KG4ucmF3Kz0obi5yYXcuZW5kc1dpdGgoIlxuIik/IiI6IlxuIikrci5yYXcsbi50ZXh0Kz0iXG4iK3IudGV4dCx0aGlzLmlubGluZVF1ZXVlLnBvcCgpLHRoaXMuaW5saW5lUXVldWUuYXQoLTEpLnNyYz1uLnRleHQpOnQucHVzaChyKTtjb250aW51ZX1pZihlKXtsZXQgdD0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2UuY2hhckNvZGVBdCgwKTtpZih0aGlzLm9wdGlvbnMuc2lsZW50KXtjb25zb2xlLmVycm9yKHQpO2JyZWFrfXRocm93IG5ldyBFcnJvcih0KX19cmV0dXJuIHRoaXMuc3RhdGUudG9wPSEwLHR9aW5saW5lKGUsdD1bXSl7cmV0dXJuIHRoaXMuaW5saW5lUXVldWUucHVzaCh7c3JjOmUsdG9rZW5zOnR9KSx0fWlubGluZVRva2VucyhlLHQ9W10pe3RoaXMudG9rZW5pemVyLmxleGVyPXRoaXM7bGV0IG4scj1lLG89bnVsbDtpZih0aGlzLnRva2Vucy5saW5rcyl7bGV0IGU9T2JqZWN0LmtleXModGhpcy50b2tlbnMubGlua3MpO2lmKGUubGVuZ3RoPjApZm9yKDtudWxsIT09KG89dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2guZXhlYyhyKSk7KWUuaW5jbHVkZXMob1swXS5zbGljZShvWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYocj1yLnNsaWNlKDAsby5pbmRleCkrIlsiKyJhIi5yZXBlYXQob1swXS5sZW5ndGgtMikrIl0iK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDtudWxsIT09KG89dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmV4ZWMocikpOylyPXIuc2xpY2UoMCxvLmluZGV4KSsiKysiK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmxhc3RJbmRleCk7Zm9yKDtudWxsIT09KG89dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmJsb2NrU2tpcC5leGVjKHIpKTspbj1vWzJdP29bMl0ubGVuZ3RoOjAscj1yLnNsaWNlKDAsby5pbmRleCtuKSsiWyIrImEiLnJlcGVhdChvWzBdLmxlbmd0aC1uLTIpKyJdIityLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAubGFzdEluZGV4KTtyPXRoaXMub3B0aW9ucy5ob29rcz8uZW1TdHJvbmdNYXNrPy5jYWxsKHtsZXhlcjp0aGlzfSxyKT8/cjtsZXQgaT0hMSxzPSIiO2Zvcig7ZTspe2xldCBuO2lmKGl8fChzPSIiKSxpPSExLHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5pbmxpbmU/LnNvbWUocj0+ISEobj1yLmNhbGwoe2xleGVyOnRoaXN9LGUsdCkpJiYoZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKSwhMCkpKWNvbnRpbnVlO2lmKG49dGhpcy50b2tlbml6ZXIuZXNjYXBlKGUpKXtlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksdC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIudGFnKGUpKXtlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksdC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIubGluayhlKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKTtjb250aW51ZX1pZihuPXRoaXMudG9rZW5pemVyLnJlZmxpbmsoZSx0aGlzLnRva2Vucy5saW5rcykpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKTtsZXQgcj10LmF0KC0xKTsidGV4dCI9PT1uLnR5cGUmJiJ0ZXh0Ij09PXI/LnR5cGU/KHIucmF3Kz1uLnJhdyxyLnRleHQrPW4udGV4dCk6dC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIuZW1TdHJvbmcoZSxyLHMpKXtlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksdC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIuY29kZXNwYW4oZSkpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSx0LnB1c2gobik7Y29udGludWV9aWYobj10aGlzLnRva2VuaXplci5icihlKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKTtjb250aW51ZX1pZihuPXRoaXMudG9rZW5pemVyLmRlbChlLHIscykpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSx0LnB1c2gobik7Y29udGludWV9aWYobj10aGlzLnRva2VuaXplci5hdXRvbGluayhlKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKTtjb250aW51ZX1pZighdGhpcy5zdGF0ZS5pbkxpbmsmJihuPXRoaXMudG9rZW5pemVyLnVybChlKSkpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSx0LnB1c2gobik7Y29udGludWV9bGV0IG89ZTtpZih0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucz8uc3RhcnRJbmxpbmUpe2xldCB0LG49MS8wLHI9ZS5zbGljZSgxKTt0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZS5mb3JFYWNoKGU9Pnt0PWUuY2FsbCh7bGV4ZXI6dGhpc30sciksIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wJiYobj1NYXRoLm1pbihuLHQpKX0pLG48MS8wJiZuPj0wJiYobz1lLnN1YnN0cmluZygwLG4rMSkpfWlmKG49dGhpcy50b2tlbml6ZXIuaW5saW5lVGV4dChvKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLCJfIiE9PW4ucmF3LnNsaWNlKC0xKSYmKHM9bi5yYXcuc2xpY2UoLTEpKSxpPSEwO2xldCByPXQuYXQoLTEpOyJ0ZXh0Ij09PXI/LnR5cGU/KHIucmF3Kz1uLnJhdyxyLnRleHQrPW4udGV4dCk6dC5wdXNoKG4pO2NvbnRpbnVlfWlmKGUpe2xldCB0PSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpe2NvbnNvbGUuZXJyb3IodCk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKHQpfX1yZXR1cm4gdH19LEJyPWNsYXNze29wdGlvbnM7cGFyc2VyO2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lfHxMbn1zcGFjZShlKXtyZXR1cm4iIn1jb2RlKHt0ZXh0OmUsbGFuZzp0LGVzY2FwZWQ6bn0pe2xldCByPSh0fHwiIikubWF0Y2goRm4ubm90U3BhY2VTdGFydCk/LlswXSxvPWUucmVwbGFjZShGbi5lbmRpbmdOZXdsaW5lLCIiKSsiXG4iO3JldHVybiByPyc8cHJlPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS0nK1QocikrJyI+Jysobj9vOlQobywhMCkpKyI8L2NvZGU+PC9wcmU+XG4iOiI8cHJlPjxjb2RlPiIrKG4/bzpUKG8sITApKSsiPC9jb2RlPjwvcHJlPlxuIn1ibG9ja3F1b3RlKHt0b2tlbnM6ZX0pe3JldHVybmA8YmxvY2txdW90ZT5cbiR7dGhpcy5wYXJzZXIucGFyc2UoZSl9PC9ibG9ja3F1b3RlPlxuYH1odG1sKHt0ZXh0OmV9KXtyZXR1cm4gZX1kZWYoZSl7cmV0dXJuIiJ9aGVhZGluZyh7dG9rZW5zOmUsZGVwdGg6dH0pe3JldHVybmA8aCR7dH0+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShlKX08L2gke3R9PlxuYH1ocihlKXtyZXR1cm4iPGhyPlxuIn1saXN0KGUpe2xldCB0PWUub3JkZXJlZCxuPWUuc3RhcnQscj0iIjtmb3IobGV0IHQ9MDt0PGUuaXRlbXMubGVuZ3RoO3QrKyl7bGV0IG49ZS5pdGVtc1t0XTtyKz10aGlzLmxpc3RpdGVtKG4pfWxldCBvPXQ/Im9sIjoidWwiO3JldHVybiI8IitvKyh0JiYxIT09bj8nIHN0YXJ0PSInK24rJyInOiIiKSsiPlxuIityKyI8LyIrbysiPlxuIn1saXN0aXRlbShlKXtyZXR1cm5gPGxpPiR7dGhpcy5wYXJzZXIucGFyc2UoZS50b2tlbnMpfTwvbGk+XG5gfWNoZWNrYm94KHtjaGVja2VkOmV9KXtyZXR1cm4iPGlucHV0ICIrKGU/J2NoZWNrZWQ9IiIgJzoiIikrJ2Rpc2FibGVkPSIiIHR5cGU9ImNoZWNrYm94Ij4gJ31wYXJhZ3JhcGgoe3Rva2VuczplfSl7cmV0dXJuYDxwPiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZSl9PC9wPlxuYH10YWJsZShlKXtsZXQgdD0iIixuPSIiO2ZvcihsZXQgdD0wO3Q8ZS5oZWFkZXIubGVuZ3RoO3QrKyluKz10aGlzLnRhYmxlY2VsbChlLmhlYWRlclt0XSk7dCs9dGhpcy50YWJsZXJvdyh7dGV4dDpufSk7bGV0IHI9IiI7Zm9yKGxldCB0PTA7dDxlLnJvd3MubGVuZ3RoO3QrKyl7bGV0IG89ZS5yb3dzW3RdO249IiI7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspbis9dGhpcy50YWJsZWNlbGwob1tlXSk7cis9dGhpcy50YWJsZXJvdyh7dGV4dDpufSl9cmV0dXJuIHImJihyPWA8dGJvZHk+JHtyfTwvdGJvZHk+YCksIjx0YWJsZT5cbjx0aGVhZD5cbiIrdCsiPC90aGVhZD5cbiIrcisiPC90YWJsZT5cbiJ9dGFibGVyb3coe3RleHQ6ZX0pe3JldHVybmA8dHI+XG4ke2V9PC90cj5cbmB9dGFibGVjZWxsKGUpe2xldCB0PXRoaXMucGFyc2VyLnBhcnNlSW5saW5lKGUudG9rZW5zKSxuPWUuaGVhZGVyPyJ0aCI6InRkIjtyZXR1cm4oZS5hbGlnbj9gPCR7bn0gYWxpZ249IiR7ZS5hbGlnbn0iPmA6YDwke259PmApK3QrYDwvJHtufT5cbmB9c3Ryb25nKHt0b2tlbnM6ZX0pe3JldHVybmA8c3Ryb25nPiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZSl9PC9zdHJvbmc+YH1lbSh7dG9rZW5zOmV9KXtyZXR1cm5gPGVtPiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZSl9PC9lbT5gfWNvZGVzcGFuKHt0ZXh0OmV9KXtyZXR1cm5gPGNvZGU+JHtUKGUsITApfTwvY29kZT5gfWJyKGUpe3JldHVybiI8YnI+In1kZWwoe3Rva2VuczplfSl7cmV0dXJuYDxkZWw+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShlKX08L2RlbD5gfWxpbmsoe2hyZWY6ZSx0aXRsZTp0LHRva2VuczpufSl7bGV0IHI9dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUobiksbz1KKGUpO2lmKG51bGw9PT1vKXJldHVybiByO2xldCBpPSc8YSBocmVmPSInKyhlPW8pKyciJztyZXR1cm4gdCYmKGkrPScgdGl0bGU9IicrVCh0KSsnIicpLGkrPSI+IityKyI8L2E+IixpfWltYWdlKHtocmVmOmUsdGl0bGU6dCx0ZXh0Om4sdG9rZW5zOnJ9KXtyJiYobj10aGlzLnBhcnNlci5wYXJzZUlubGluZShyLHRoaXMucGFyc2VyLnRleHRSZW5kZXJlcikpO2xldCBvPUooZSk7aWYobnVsbD09PW8pcmV0dXJuIFQobik7bGV0IGk9YDxpbWcgc3JjPSIke2U9b30iIGFsdD0iJHtUKG4pfSJgO3JldHVybiB0JiYoaSs9YCB0aXRsZT0iJHtUKHQpfSJgKSxpKz0iPiIsaX10ZXh0KGUpe3JldHVybiJ0b2tlbnMiaW4gZSYmZS50b2tlbnM/dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZS50b2tlbnMpOiJlc2NhcGVkImluIGUmJmUuZXNjYXBlZD9lLnRleHQ6VChlLnRleHQpfX0sRnI9Y2xhc3N7c3Ryb25nKHt0ZXh0OmV9KXtyZXR1cm4gZX1lbSh7dGV4dDplfSl7cmV0dXJuIGV9Y29kZXNwYW4oe3RleHQ6ZX0pe3JldHVybiBlfWRlbCh7dGV4dDplfSl7cmV0dXJuIGV9aHRtbCh7dGV4dDplfSl7cmV0dXJuIGV9dGV4dCh7dGV4dDplfSl7cmV0dXJuIGV9bGluayh7dGV4dDplfSl7cmV0dXJuIiIrZX1pbWFnZSh7dGV4dDplfSl7cmV0dXJuIiIrZX1icigpe3JldHVybiIifWNoZWNrYm94KHtyYXc6ZX0pe3JldHVybiBlfX0sSHI9Y2xhc3MgdXtvcHRpb25zO3JlbmRlcmVyO3RleHRSZW5kZXJlcjtjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZXx8TG4sdGhpcy5vcHRpb25zLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcnx8bmV3IEJyLHRoaXMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyLHRoaXMucmVuZGVyZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy5yZW5kZXJlci5wYXJzZXI9dGhpcyx0aGlzLnRleHRSZW5kZXJlcj1uZXcgRnJ9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuIG5ldyB1KHQpLnBhcnNlKGUpfXN0YXRpYyBwYXJzZUlubGluZShlLHQpe3JldHVybiBuZXcgdSh0KS5wYXJzZUlubGluZShlKX1wYXJzZShlKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCB0PSIiO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgcj1lW25dO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltyLnR5cGVdKXtsZXQgZT1yLG49dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW2UudHlwZV0uY2FsbCh7cGFyc2VyOnRoaXN9LGUpO2lmKCExIT09bnx8IVsic3BhY2UiLCJociIsImhlYWRpbmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJkZWYiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoZS50eXBlKSl7dCs9bnx8IiI7Y29udGludWV9fWxldCBvPXI7c3dpdGNoKG8udHlwZSl7Y2FzZSJzcGFjZSI6dCs9dGhpcy5yZW5kZXJlci5zcGFjZShvKTticmVhaztjYXNlImhyIjp0Kz10aGlzLnJlbmRlcmVyLmhyKG8pO2JyZWFrO2Nhc2UiaGVhZGluZyI6dCs9dGhpcy5yZW5kZXJlci5oZWFkaW5nKG8pO2JyZWFrO2Nhc2UiY29kZSI6dCs9dGhpcy5yZW5kZXJlci5jb2RlKG8pO2JyZWFrO2Nhc2UidGFibGUiOnQrPXRoaXMucmVuZGVyZXIudGFibGUobyk7YnJlYWs7Y2FzZSJibG9ja3F1b3RlIjp0Kz10aGlzLnJlbmRlcmVyLmJsb2NrcXVvdGUobyk7YnJlYWs7Y2FzZSJsaXN0Ijp0Kz10aGlzLnJlbmRlcmVyLmxpc3Qobyk7YnJlYWs7Y2FzZSJjaGVja2JveCI6dCs9dGhpcy5yZW5kZXJlci5jaGVja2JveChvKTticmVhaztjYXNlImh0bWwiOnQrPXRoaXMucmVuZGVyZXIuaHRtbChvKTticmVhaztjYXNlImRlZiI6dCs9dGhpcy5yZW5kZXJlci5kZWYobyk7YnJlYWs7Y2FzZSJwYXJhZ3JhcGgiOnQrPXRoaXMucmVuZGVyZXIucGFyYWdyYXBoKG8pO2JyZWFrO2Nhc2UidGV4dCI6dCs9dGhpcy5yZW5kZXJlci50ZXh0KG8pO2JyZWFrO2RlZmF1bHQ6e2xldCBlPSdUb2tlbiB3aXRoICInK28udHlwZSsnIiB0eXBlIHdhcyBub3QgZm91bmQuJztpZih0aGlzLm9wdGlvbnMuc2lsZW50KXJldHVybiBjb25zb2xlLmVycm9yKGUpLCIiO3Rocm93IG5ldyBFcnJvcihlKX19fXJldHVybiB0fXBhcnNlSW5saW5lKGUsdD10aGlzLnJlbmRlcmVyKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCBuPSIiO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbz1lW3JdO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltvLnR5cGVdKXtsZXQgZT10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbby50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sbyk7aWYoITEhPT1lfHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKG8udHlwZSkpe24rPWV8fCIiO2NvbnRpbnVlfX1sZXQgaT1vO3N3aXRjaChpLnR5cGUpe2Nhc2UiZXNjYXBlIjpjYXNlInRleHQiOm4rPXQudGV4dChpKTticmVhaztjYXNlImh0bWwiOm4rPXQuaHRtbChpKTticmVhaztjYXNlImxpbmsiOm4rPXQubGluayhpKTticmVhaztjYXNlImltYWdlIjpuKz10LmltYWdlKGkpO2JyZWFrO2Nhc2UiY2hlY2tib3giOm4rPXQuY2hlY2tib3goaSk7YnJlYWs7Y2FzZSJzdHJvbmciOm4rPXQuc3Ryb25nKGkpO2JyZWFrO2Nhc2UiZW0iOm4rPXQuZW0oaSk7YnJlYWs7Y2FzZSJjb2Rlc3BhbiI6bis9dC5jb2Rlc3BhbihpKTticmVhaztjYXNlImJyIjpuKz10LmJyKGkpO2JyZWFrO2Nhc2UiZGVsIjpuKz10LmRlbChpKTticmVhaztkZWZhdWx0OntsZXQgZT0nVG9rZW4gd2l0aCAiJytpLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gY29uc29sZS5lcnJvcihlKSwiIjt0aHJvdyBuZXcgRXJyb3IoZSl9fX1yZXR1cm4gbn19LFZyPWNsYXNze29wdGlvbnM7YmxvY2s7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWV8fExufXN0YXRpYyBwYXNzVGhyb3VnaEhvb2tzPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIiwiZW1TdHJvbmdNYXNrIl0pO3N0YXRpYyBwYXNzVGhyb3VnaEhvb2tzUmVzcGVjdEFzeW5jPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIl0pO3ByZXByb2Nlc3MoZSl7cmV0dXJuIGV9cG9zdHByb2Nlc3MoZSl7cmV0dXJuIGV9cHJvY2Vzc0FsbFRva2VucyhlKXtyZXR1cm4gZX1lbVN0cm9uZ01hc2soZSl7cmV0dXJuIGV9cHJvdmlkZUxleGVyKGU9dGhpcy5ibG9jayl7cmV0dXJuIGU/enIubGV4OnpyLmxleElubGluZX1wcm92aWRlUGFyc2VyKGU9dGhpcy5ibG9jayl7cmV0dXJuIGU/SHIucGFyc2U6SHIucGFyc2VJbmxpbmV9fSxfcj1uZXcgY2xhc3N7ZGVmYXVsdHM9e2FzeW5jOiExLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhvb2tzOm51bGwscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzaWxlbnQ6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsfTtvcHRpb25zPXRoaXMuc2V0T3B0aW9ucztwYXJzZT10aGlzLnBhcnNlTWFya2Rvd24oITApO3BhcnNlSW5saW5lPXRoaXMucGFyc2VNYXJrZG93bighMSk7UGFyc2VyPUhyO1JlbmRlcmVyPUJyO1RleHRSZW5kZXJlcj1GcjtMZXhlcj16cjtUb2tlbml6ZXI9THI7SG9va3M9VnI7Y29uc3RydWN0b3IoLi4uZSl7dGhpcy51c2UoLi4uZSl9d2Fsa1Rva2VucyhlLHQpe2xldCBuPVtdO2ZvcihsZXQgciBvZiBlKXN3aXRjaChuPW4uY29uY2F0KHQuY2FsbCh0aGlzLHIpKSxyLnR5cGUpe2Nhc2UidGFibGUiOntsZXQgZT1yO2ZvcihsZXQgciBvZiBlLmhlYWRlciluPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhyLnRva2Vucyx0KSk7Zm9yKGxldCByIG9mIGUucm93cylmb3IobGV0IGUgb2YgciluPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhlLnRva2Vucyx0KSk7YnJlYWt9Y2FzZSJsaXN0Ijp7bGV0IGU9cjtuPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhlLml0ZW1zLHQpKTticmVha31kZWZhdWx0OntsZXQgZT1yO3RoaXMuZGVmYXVsdHMuZXh0ZW5zaW9ucz8uY2hpbGRUb2tlbnM/LltlLnR5cGVdP3RoaXMuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1tlLnR5cGVdLmZvckVhY2gocj0+e2xldCBvPWVbcl0uZmxhdCgxLzApO249bi5jb25jYXQodGhpcy53YWxrVG9rZW5zKG8sdCkpfSk6ZS50b2tlbnMmJihuPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhlLnRva2Vucyx0KSkpfX1yZXR1cm4gbn11c2UoLi4uZSl7bGV0IHQ9dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fTtyZXR1cm4gZS5mb3JFYWNoKGU9PntsZXQgbj17Li4uZX07aWYobi5hc3luYz10aGlzLmRlZmF1bHRzLmFzeW5jfHxuLmFzeW5jfHwhMSxlLmV4dGVuc2lvbnMmJihlLmV4dGVuc2lvbnMuZm9yRWFjaChlPT57aWYoIWUubmFtZSl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBuYW1lIHJlcXVpcmVkIik7aWYoInJlbmRlcmVyImluIGUpe2xldCBuPXQucmVuZGVyZXJzW2UubmFtZV07dC5yZW5kZXJlcnNbZS5uYW1lXT1uP2Z1bmN0aW9uKC4uLnQpe2xldCByPWUucmVuZGVyZXIuYXBwbHkodGhpcyx0KTtyZXR1cm4hMT09PXImJihyPW4uYXBwbHkodGhpcyx0KSkscn06ZS5yZW5kZXJlcn1pZigidG9rZW5pemVyImluIGUpe2lmKCFlLmxldmVsfHwiYmxvY2siIT09ZS5sZXZlbCYmImlubGluZSIhPT1lLmxldmVsKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIGxldmVsIG11c3QgYmUgJ2Jsb2NrJyBvciAnaW5saW5lJyIpO2xldCBuPXRbZS5sZXZlbF07bj9uLnVuc2hpZnQoZS50b2tlbml6ZXIpOnRbZS5sZXZlbF09W2UudG9rZW5pemVyXSxlLnN0YXJ0JiYoImJsb2NrIj09PWUubGV2ZWw/dC5zdGFydEJsb2NrP3Quc3RhcnRCbG9jay5wdXNoKGUuc3RhcnQpOnQuc3RhcnRCbG9jaz1bZS5zdGFydF06ImlubGluZSI9PT1lLmxldmVsJiYodC5zdGFydElubGluZT90LnN0YXJ0SW5saW5lLnB1c2goZS5zdGFydCk6dC5zdGFydElubGluZT1bZS5zdGFydF0pKX0iY2hpbGRUb2tlbnMiaW4gZSYmZS5jaGlsZFRva2VucyYmKHQuY2hpbGRUb2tlbnNbZS5uYW1lXT1lLmNoaWxkVG9rZW5zKX0pLG4uZXh0ZW5zaW9ucz10KSxlLnJlbmRlcmVyKXtsZXQgdD10aGlzLmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgQnIodGhpcy5kZWZhdWx0cyk7Zm9yKGxldCBuIGluIGUucmVuZGVyZXIpe2lmKCEobiBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoYHJlbmRlcmVyICcke259JyBkb2VzIG5vdCBleGlzdGApO2lmKFsib3B0aW9ucyIsInBhcnNlciJdLmluY2x1ZGVzKG4pKWNvbnRpbnVlO2xldCByPW4sbz1lLnJlbmRlcmVyW3JdLGk9dFtyXTt0W3JdPSguLi5lKT0+e2xldCBuPW8uYXBwbHkodCxlKTtyZXR1cm4hMT09PW4mJihuPWkuYXBwbHkodCxlKSksbnx8IiJ9fW4ucmVuZGVyZXI9dH1pZihlLnRva2VuaXplcil7bGV0IHQ9dGhpcy5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBMcih0aGlzLmRlZmF1bHRzKTtmb3IobGV0IG4gaW4gZS50b2tlbml6ZXIpe2lmKCEobiBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoYHRva2VuaXplciAnJHtufScgZG9lcyBub3QgZXhpc3RgKTtpZihbIm9wdGlvbnMiLCJydWxlcyIsImxleGVyIl0uaW5jbHVkZXMobikpY29udGludWU7bGV0IHI9bixvPWUudG9rZW5pemVyW3JdLGk9dFtyXTt0W3JdPSguLi5lKT0+e2xldCBuPW8uYXBwbHkodCxlKTtyZXR1cm4hMT09PW4mJihuPWkuYXBwbHkodCxlKSksbn19bi50b2tlbml6ZXI9dH1pZihlLmhvb2tzKXtsZXQgdD10aGlzLmRlZmF1bHRzLmhvb2tzfHxuZXcgVnI7Zm9yKGxldCBuIGluIGUuaG9va3Mpe2lmKCEobiBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoYGhvb2sgJyR7bn0nIGRvZXMgbm90IGV4aXN0YCk7aWYoWyJvcHRpb25zIiwiYmxvY2siXS5pbmNsdWRlcyhuKSljb250aW51ZTtsZXQgcj1uLG89ZS5ob29rc1tyXSxpPXRbcl07VnIucGFzc1Rocm91Z2hIb29rcy5oYXMobik/dFtyXT1lPT57aWYodGhpcy5kZWZhdWx0cy5hc3luYyYmVnIucGFzc1Rocm91Z2hIb29rc1Jlc3BlY3RBc3luYy5oYXMobikpcmV0dXJuKGFzeW5jKCk9PntsZXQgbj1hd2FpdCBvLmNhbGwodCxlKTtyZXR1cm4gaS5jYWxsKHQsbil9KSgpO2xldCByPW8uY2FsbCh0LGUpO3JldHVybiBpLmNhbGwodCxyKX06dFtyXT0oLi4uZSk9PntpZih0aGlzLmRlZmF1bHRzLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IG49YXdhaXQgby5hcHBseSh0LGUpO3JldHVybiExPT09biYmKG49YXdhaXQgaS5hcHBseSh0LGUpKSxufSkoKTtsZXQgbj1vLmFwcGx5KHQsZSk7cmV0dXJuITE9PT1uJiYobj1pLmFwcGx5KHQsZSkpLG59fW4uaG9va3M9dH1pZihlLndhbGtUb2tlbnMpe2xldCB0PXRoaXMuZGVmYXVsdHMud2Fsa1Rva2VucyxyPWUud2Fsa1Rva2VucztuLndhbGtUb2tlbnM9ZnVuY3Rpb24oZSl7bGV0IG49W107cmV0dXJuIG4ucHVzaChyLmNhbGwodGhpcyxlKSksdCYmKG49bi5jb25jYXQodC5jYWxsKHRoaXMsZSkpKSxufX10aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLm59fSksdGhpc31zZXRPcHRpb25zKGUpe3JldHVybiB0aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLmV9LHRoaXN9bGV4ZXIoZSx0KXtyZXR1cm4genIubGV4KGUsdD8/dGhpcy5kZWZhdWx0cyl9cGFyc2VyKGUsdCl7cmV0dXJuIEhyLnBhcnNlKGUsdD8/dGhpcy5kZWZhdWx0cyl9cGFyc2VNYXJrZG93bihlKXtyZXR1cm4odCxuKT0+e2xldCByPXsuLi5ufSxvPXsuLi50aGlzLmRlZmF1bHRzLC4uLnJ9LGk9dGhpcy5vbkVycm9yKCEhby5zaWxlbnQsISFvLmFzeW5jKTtpZighMD09PXRoaXMuZGVmYXVsdHMuYXN5bmMmJiExPT09ci5hc3luYylyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBUaGUgYXN5bmMgb3B0aW9uIHdhcyBzZXQgdG8gdHJ1ZSBieSBhbiBleHRlbnNpb24uIFJlbW92ZSBhc3luYzogZmFsc2UgZnJvbSB0aGUgcGFyc2Ugb3B0aW9ucyBvYmplY3QgdG8gcmV0dXJuIGEgUHJvbWlzZS4iKSk7aWYodHlwZW9mIHQ+InUifHxudWxsPT09dClyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBpKG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKyIsIHN0cmluZyBleHBlY3RlZCIpKTtpZihvLmhvb2tzJiYoby5ob29rcy5vcHRpb25zPW8sby5ob29rcy5ibG9jaz1lKSxvLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IG49by5ob29rcz9hd2FpdCBvLmhvb2tzLnByZXByb2Nlc3ModCk6dCxyPWF3YWl0KG8uaG9va3M/YXdhaXQgby5ob29rcy5wcm92aWRlTGV4ZXIoZSk6ZT96ci5sZXg6enIubGV4SW5saW5lKShuLG8pLGk9by5ob29rcz9hd2FpdCBvLmhvb2tzLnByb2Nlc3NBbGxUb2tlbnMocik6cjtvLndhbGtUb2tlbnMmJmF3YWl0IFByb21pc2UuYWxsKHRoaXMud2Fsa1Rva2VucyhpLG8ud2Fsa1Rva2VucykpO2xldCBzPWF3YWl0KG8uaG9va3M/YXdhaXQgby5ob29rcy5wcm92aWRlUGFyc2VyKGUpOmU/SHIucGFyc2U6SHIucGFyc2VJbmxpbmUpKGksbyk7cmV0dXJuIG8uaG9va3M/YXdhaXQgby5ob29rcy5wb3N0cHJvY2VzcyhzKTpzfSkoKS5jYXRjaChpKTt0cnl7by5ob29rcyYmKHQ9by5ob29rcy5wcmVwcm9jZXNzKHQpKTtsZXQgbj0oby5ob29rcz9vLmhvb2tzLnByb3ZpZGVMZXhlcihlKTplP3pyLmxleDp6ci5sZXhJbmxpbmUpKHQsbyk7by5ob29rcyYmKG49by5ob29rcy5wcm9jZXNzQWxsVG9rZW5zKG4pKSxvLndhbGtUb2tlbnMmJnRoaXMud2Fsa1Rva2VucyhuLG8ud2Fsa1Rva2Vucyk7bGV0IHI9KG8uaG9va3M/by5ob29rcy5wcm92aWRlUGFyc2VyKGUpOmU/SHIucGFyc2U6SHIucGFyc2VJbmxpbmUpKG4sbyk7cmV0dXJuIG8uaG9va3MmJihyPW8uaG9va3MucG9zdHByb2Nlc3MocikpLHJ9Y2F0Y2goZSl7cmV0dXJuIGkoZSl9fX1vbkVycm9yKGUsdCl7cmV0dXJuIG49PntpZihuLm1lc3NhZ2UrPSJcblBsZWFzZSByZXBvcnQgdGhpcyB0byBodHRwczovL2dpdGh1Yi5jb20vbWFya2VkanMvbWFya2VkLiIsZSl7bGV0IGU9IjxwPkFuIGVycm9yIG9jY3VycmVkOjwvcD48cHJlPiIrVChuLm1lc3NhZ2UrIiIsITApKyI8L3ByZT4iO3JldHVybiB0P1Byb21pc2UucmVzb2x2ZShlKTplfWlmKHQpcmV0dXJuIFByb21pc2UucmVqZWN0KG4pO3Rocm93IG59fX07ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBfci5wYXJzZShlLHQpfWZ1bmN0aW9uIHdyYXBJbk1hcmtkb3duQmxvY2soZSx0KXtjb25zdCBuPXQuc3BsaXQoIlxuIikuZmxhdE1hcChlPT5bZSwiIl0pLm1hcCh0PT5gJHtlfSR7dH1gKS5qb2luKCJcbiIpO3JldHVybiBuLnNsaWNlKDAsbi5sZW5ndGgtMSl9ZnVuY3Rpb24gaXNUYXNrSXRlbShlKXtjb25zdCB0PShlLnJhd3x8ZS50ZXh0fHwiIikubWF0Y2goL14oXHMqKVstKypdXHMrXFsoWyB4WF0pXF1ccysvKTtyZXR1cm4gdD97aXNUYXNrOiEwLGNoZWNrZWQ6IngiPT09dFsyXS50b0xvd2VyQ2FzZSgpLGluZGVudExldmVsOnRbMV0ubGVuZ3RofTp7aXNUYXNrOiExLGluZGVudExldmVsOjB9fWZ1bmN0aW9uIGFzc3VtZUNvbnRlbnRUeXBlKGUsdCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlPyJqc29uIjp0fWcub3B0aW9ucz1nLnNldE9wdGlvbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIF9yLnNldE9wdGlvbnMoZSksZy5kZWZhdWx0cz1fci5kZWZhdWx0cyxHKGcuZGVmYXVsdHMpLGd9LGcuZ2V0RGVmYXVsdHM9TSxnLmRlZmF1bHRzPUxuLGcudXNlPWZ1bmN0aW9uKC4uLmUpe3JldHVybiBfci51c2UoLi4uZSksZy5kZWZhdWx0cz1fci5kZWZhdWx0cyxHKGcuZGVmYXVsdHMpLGd9LGcud2Fsa1Rva2Vucz1mdW5jdGlvbihlLHQpe3JldHVybiBfci53YWxrVG9rZW5zKGUsdCl9LGcucGFyc2VJbmxpbmU9X3IucGFyc2VJbmxpbmUsZy5QYXJzZXI9SHIsZy5wYXJzZXI9SHIucGFyc2UsZy5SZW5kZXJlcj1CcixnLlRleHRSZW5kZXJlcj1GcixnLkxleGVyPXpyLGcubGV4ZXI9enIubGV4LGcuVG9rZW5pemVyPUxyLGcuSG9va3M9VnIsZy5wYXJzZT1nLGcub3B0aW9ucyxnLnNldE9wdGlvbnMsZy51c2UsZy53YWxrVG9rZW5zLGcucGFyc2VJbmxpbmUsSHIucGFyc2UsenIubGV4O3ZhciBqcj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt2YXIgdCxuLHIsbyxpO2lmKHRoaXMuYWN0aXZlUGFyc2VMZXhlcj1udWxsLHRoaXMuYmFzZUV4dGVuc2lvbnM9W10sdGhpcy5leHRlbnNpb25zPVtdLHRoaXMuY29kZVR5cGVzPW5ldyBTZXQsdGhpcy5sYXN0UGFyc2VSZXN1bHQ9bnVsbCx0aGlzLm1hcmtlZEluc3RhbmNlPW51bGwhPSh0PW51bGw9PWU/dm9pZCAwOmUubWFya2VkKT90OmcsdGhpcy5pbmRlbnRTdHlsZT1udWxsIT0ocj1udWxsPT0obj1udWxsPT1lP3ZvaWQgMDplLmluZGVudGF0aW9uKT92b2lkIDA6bi5zdHlsZSk/cjoic3BhY2UiLHRoaXMuaW5kZW50U2l6ZT1udWxsIT0oaT1udWxsPT0obz1udWxsPT1lP3ZvaWQgMDplLmluZGVudGF0aW9uKT92b2lkIDA6by5zaXplKT9pOjIsdGhpcy5iYXNlRXh0ZW5zaW9ucz0obnVsbD09ZT92b2lkIDA6ZS5leHRlbnNpb25zKXx8W10sKG51bGw9PWU/dm9pZCAwOmUubWFya2VkT3B0aW9ucykmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm1hcmtlZEluc3RhbmNlLnNldE9wdGlvbnMmJnRoaXMubWFya2VkSW5zdGFuY2Uuc2V0T3B0aW9ucyhlLm1hcmtlZE9wdGlvbnMpLHRoaXMucmVnaXN0cnk9bmV3IE1hcCx0aGlzLm5vZGVUeXBlUmVnaXN0cnk9bmV3IE1hcCxudWxsPT1lP3ZvaWQgMDplLmV4dGVuc2lvbnMpe3RoaXMuYmFzZUV4dGVuc2lvbnM9ZS5leHRlbnNpb25zO2ZsYXR0ZW5FeHRlbnNpb25zKGUuZXh0ZW5zaW9ucykuZm9yRWFjaChlPT50aGlzLnJlZ2lzdGVyRXh0ZW5zaW9uKGUpKX19Z2V0IGluc3RhbmNlKCl7cmV0dXJuIHRoaXMubWFya2VkSW5zdGFuY2V9Z2V0IGluZGVudENoYXJhY3Rlcigpe3JldHVybiJzcGFjZSI9PT10aGlzLmluZGVudFN0eWxlPyIgIjoiXHQifWdldCBpbmRlbnRTdHJpbmcoKXtyZXR1cm4gdGhpcy5pbmRlbnRDaGFyYWN0ZXIucmVwZWF0KHRoaXMuaW5kZW50U2l6ZSl9aGFzTWFya2VkKCl7cmV0dXJuISF0aGlzLm1hcmtlZEluc3RhbmNlfXJlZ2lzdGVyRXh0ZW5zaW9uKGUpe3ZhciB0LG47dGhpcy5leHRlbnNpb25zLnB1c2goZSk7Y29uc3Qgcj1jYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZSwiY29kZSIpKSxvPWUubmFtZTtyJiZ0aGlzLmNvZGVUeXBlcy5hZGQobyk7Y29uc3QgaT1nZXRFeHRlbnNpb25GaWVsZChlLCJtYXJrZG93blRva2VuTmFtZSIpfHxvLHM9Z2V0RXh0ZW5zaW9uRmllbGQoZSwicGFyc2VNYXJrZG93biIpLGw9Z2V0RXh0ZW5zaW9uRmllbGQoZSwicmVuZGVyTWFya2Rvd24iKSxhPWdldEV4dGVuc2lvbkZpZWxkKGUsIm1hcmtkb3duVG9rZW5pemVyIiksYz1udWxsIT0odD1nZXRFeHRlbnNpb25GaWVsZChlLCJtYXJrZG93bk9wdGlvbnMiKSk/dDpudWxsLGQ9e3Rva2VuTmFtZTppLG5vZGVOYW1lOm8scGFyc2VNYXJrZG93bjpzLHJlbmRlck1hcmtkb3duOmwsaXNJbmRlbnRpbmc6bnVsbCE9KG49bnVsbD09Yz92b2lkIDA6Yy5pbmRlbnRzQ29udGVudCkmJm4saHRtbFJlb3BlbjpudWxsPT1jP3ZvaWQgMDpjLmh0bWxSZW9wZW4sdG9rZW5pemVyOmF9O2lmKGkmJnMpe2NvbnN0IGU9dGhpcy5yZWdpc3RyeS5nZXQoaSl8fFtdO2UucHVzaChkKSx0aGlzLnJlZ2lzdHJ5LnNldChpLGUpfWlmKGwpe2NvbnN0IGU9dGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LmdldChvKXx8W107ZS5wdXNoKGQpLHRoaXMubm9kZVR5cGVSZWdpc3RyeS5zZXQobyxlKX1hJiZ0aGlzLmhhc01hcmtlZCgpJiZ0aGlzLnJlZ2lzdGVyVG9rZW5pemVyKGEpfWNyZWF0ZUxleGVyKCl7cmV0dXJuIG5ldyB0aGlzLm1hcmtlZEluc3RhbmNlLkxleGVyfWNyZWF0ZVRva2VuaXplckhlbHBlcnMoZSl7cmV0dXJue2lubGluZVRva2Vuczp0PT5lLmlubGluZVRva2Vucyh0KSxibG9ja1Rva2Vuczp0PT5lLmJsb2NrVG9rZW5zKHQpfX10b2tlbml6ZUlubGluZShlKXt2YXIgdDtyZXR1cm4obnVsbCE9KHQ9dGhpcy5hY3RpdmVQYXJzZUxleGVyKT90OnRoaXMuY3JlYXRlTGV4ZXIoKSkuaW5saW5lVG9rZW5zKGUpfXJlZ2lzdGVyVG9rZW5pemVyKGUpe2lmKCF0aGlzLmhhc01hcmtlZCgpKXJldHVybjtjb25zdHtuYW1lOnQsc3RhcnQ6bixsZXZlbDpyPSJpbmxpbmUiLHRva2VuaXplOm99PWUsaT10aGlzLmNyZWF0ZVRva2VuaXplckhlbHBlcnMuYmluZCh0aGlzKSxzPXRoaXMuY3JlYXRlTGV4ZXIuYmluZCh0aGlzKTtsZXQgbDtsPW4/ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjplPT5lLmluZGV4T2Yobik6ZT0+e2NvbnN0IHQ9byhlLFtdLHRoaXMuY3JlYXRlVG9rZW5pemVySGVscGVycyh0aGlzLmNyZWF0ZUxleGVyKCkpKTtpZih0JiZ0LnJhdyl7cmV0dXJuIGUuaW5kZXhPZih0LnJhdyl9cmV0dXJuLTF9O2NvbnN0IGE9e25hbWU6dCxsZXZlbDpyLHN0YXJ0OmwsdG9rZW5pemVyKGUsbil7Y29uc3Qgcj10aGlzLmxleGVyP2kodGhpcy5sZXhlcik6aShzKCkpLGw9byhlLG4scik7aWYobCYmbC50eXBlKXJldHVybnsuLi5sLHR5cGU6bC50eXBlfHx0LHJhdzpsLnJhd3x8IiIsdG9rZW5zOmwudG9rZW5zfHxbXX19LGNoaWxkVG9rZW5zOltdfTt0aGlzLm1hcmtlZEluc3RhbmNlLnVzZSh7ZXh0ZW5zaW9uczpbYV19KX1nZXRIYW5kbGVyc0ZvclRva2VuKGUpe3RyeXtyZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQoZSl8fFtdfWNhdGNoe3JldHVybltdfX1nZXRIYW5kbGVyRm9yVG9rZW4oZSl7Y29uc3QgdD10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4oZSk7aWYodC5sZW5ndGg+MClyZXR1cm4gdFswXTtjb25zdCBuPXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShlKTtyZXR1cm4gbi5sZW5ndGg+MD9uWzBdOnZvaWQgMH1nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKGUpe3RyeXtyZXR1cm4gdGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LmdldChlKXx8W119Y2F0Y2h7cmV0dXJuW119fXNlcmlhbGl6ZShlKXtpZighZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMucmVuZGVyTm9kZXMoZSxlKTtyZXR1cm4gdGhpcy5pc0VtcHR5T3V0cHV0KHQpPyIiOnR9aXNFbXB0eU91dHB1dChlKXtpZighZXx8IiI9PT1lLnRyaW0oKSlyZXR1cm4hMDtyZXR1cm4iIj09PWUucmVwbGFjZSgvJm5ic3A7L2csIiIpLnJlcGxhY2UoL1x1MDBBMC9nLCIiKS50cmltKCl9cGFyc2UoZSl7aWYoIXRoaXMuaGFzTWFya2VkKCkpdGhyb3cgbmV3IEVycm9yKCJObyBtYXJrZWQgaW5zdGFuY2UgYXZhaWxhYmxlIGZvciBwYXJzaW5nIik7Y29uc3QgdD10aGlzLmFjdGl2ZVBhcnNlTGV4ZXIsbj10aGlzLmNyZWF0ZUxleGVyKCk7dGhpcy5hY3RpdmVQYXJzZUxleGVyPW47dHJ5e2NvbnN0IHQ9bi5sZXgoZSk7cmV0dXJue3R5cGU6ImRvYyIsY29udGVudDp0aGlzLnBhcnNlVG9rZW5zKHQsITApfX1maW5hbGx5e3RoaXMuYWN0aXZlUGFyc2VMZXhlcj10fX1wYXJzZVRva2VucyhlLHQ9ITEpe2NvbnN0IG49ZS5yZWR1Y2UoKGUsdCxuKT0+KCJzcGFjZSIhPT10LnR5cGUmJmUucHVzaChuKSxlKSxbXSk7bGV0IHI9LTEsbz0wO3JldHVybiBlLmZsYXRNYXAoKGUsaSk9Pntmb3IodmFyIHM7bzxuLmxlbmd0aCYmbltvXTxpOylyPW5bb10sbys9MTtpZih0JiYic3BhY2UiPT09ZS50eXBlKXtjb25zdCB0PW51bGwhPShzPW5bb10pP3M6LTE7cmV0dXJuIHRoaXMuY3JlYXRlSW1wbGljaXRFbXB0eVBhcmFncmFwaHNGcm9tU3BhY2UoZSxyLHQpfWNvbnN0IGw9dGhpcy5wYXJzZVRva2VuKGUsdCk7cmV0dXJuIG51bGw9PT1sP1tdOkFycmF5LmlzQXJyYXkobCk/bDpbbF19KX1jcmVhdGVJbXBsaWNpdEVtcHR5UGFyYWdyYXBoc0Zyb21TcGFjZShlLHQsbil7Y29uc3Qgcj10aGlzLmNvdW50UGFyYWdyYXBoU2VwYXJhdG9ycyhlLnJhd3x8IiIpO2lmKDA9PT1yKXJldHVybltdO2NvbnN0IG89LTE9PT10fHwtMT09PW4saT1NYXRoLm1heChyLShvPzA6MSksMCk7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDppfSwoKT0+KHt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6W119KSl9Y291bnRQYXJhZ3JhcGhTZXBhcmF0b3JzKGUpe3JldHVybihlLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5tYXRjaCgvXG5cbi9nKXx8W10pLmxlbmd0aH1wYXJzZVRva2VuKGUsdD0hMSl7aWYoIWUudHlwZSlyZXR1cm4gbnVsbDtpZigibGlzdCI9PT1lLnR5cGUpcmV0dXJuIHRoaXMucGFyc2VMaXN0VG9rZW4oZSk7Y29uc3Qgbj10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4oZS50eXBlKSxyPXRoaXMuY3JlYXRlUGFyc2VIZWxwZXJzKCk7aWYobi5maW5kKHQ9PntpZighdC5wYXJzZU1hcmtkb3duKXJldHVybiExO2NvbnN0IG49dC5wYXJzZU1hcmtkb3duKGUsciksbz10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KG4pO3JldHVybiEoIW98fEFycmF5LmlzQXJyYXkobykmJiEoby5sZW5ndGg+MCkpJiYodGhpcy5sYXN0UGFyc2VSZXN1bHQ9bywhMCl9KSYmdGhpcy5sYXN0UGFyc2VSZXN1bHQpe2NvbnN0IGU9dGhpcy5sYXN0UGFyc2VSZXN1bHQ7cmV0dXJuIHRoaXMubGFzdFBhcnNlUmVzdWx0PW51bGwsZX1yZXR1cm4gdGhpcy5wYXJzZUZhbGxiYWNrVG9rZW4oZSx0KX1wYXJzZUxpc3RUb2tlbihlKXtpZighZS5pdGVtc3x8MD09PWUuaXRlbXMubGVuZ3RoKXJldHVybiB0aGlzLnBhcnNlVG9rZW5XaXRoSGFuZGxlcnMoZSk7Y29uc3QgdD1lLml0ZW1zLnNvbWUoZT0+aXNUYXNrSXRlbShlKS5pc1Rhc2spLG49ZS5pdGVtcy5zb21lKGU9PiFpc1Rhc2tJdGVtKGUpLmlzVGFzayk7aWYoIXR8fCFufHwwPT09dGhpcy5nZXRIYW5kbGVyc0ZvclRva2VuKCJ0YXNrTGlzdCIpLmxlbmd0aClyZXR1cm4gdGhpcy5wYXJzZVRva2VuV2l0aEhhbmRsZXJzKGUpO2NvbnN0IHI9W107bGV0IG89W10saT1udWxsO2ZvcihsZXQgdD0wO3Q8ZS5pdGVtcy5sZW5ndGg7dCs9MSl7Y29uc3Qgbj1lLml0ZW1zW3RdLHtpc1Rhc2s6cyxjaGVja2VkOmwsaW5kZW50TGV2ZWw6YX09aXNUYXNrSXRlbShuKTtsZXQgYz1uO2lmKHMpe2NvbnN0IGU9KG4ucmF3fHxuLnRleHR8fCIiKS5zcGxpdCgiXG4iKSx0PWVbMF0ubWF0Y2goL15ccypbLSsqXVxzK1xbKFsgeFhdKVxdXHMrKC4qKSQvKSxyPXQ/dFsyXToiIjtsZXQgbz1bXTtpZihlLmxlbmd0aD4xKXtpZihlLnNsaWNlKDEpLmpvaW4oIlxuIikudHJpbSgpKXtjb25zdCB0PWUuc2xpY2UoMSksbj10LmZpbHRlcihlPT5lLnRyaW0oKSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi5uLm1hcChlPT5lLmxlbmd0aC1lLnRyaW1TdGFydCgpLmxlbmd0aCkpLHI9dC5tYXAodD0+dC50cmltKCk/dC5zbGljZShlKToiIikuam9pbigiXG4iKS50cmltKCk7ciYmKG89dGhpcy5tYXJrZWRJbnN0YW5jZS5sZXhlcihgJHtyfVxuYCkpfX19Yz17dHlwZToidGFza0l0ZW0iLHJhdzoiIixtYWluQ29udGVudDpyLGluZGVudExldmVsOmEsY2hlY2tlZDpudWxsIT1sJiZsLHRleHQ6cix0b2tlbnM6dGhpcy50b2tlbml6ZUlubGluZShyKSxuZXN0ZWRUb2tlbnM6b319Y29uc3QgZD1zPyJ0YXNrTGlzdCI6Imxpc3QiO2khPT1kPyhvLmxlbmd0aD4wJiZyLnB1c2goe3R5cGU6aSxpdGVtczpvfSksbz1bY10saT1kKTpvLnB1c2goYyl9by5sZW5ndGg+MCYmci5wdXNoKHt0eXBlOmksaXRlbXM6b30pO2NvbnN0IHM9W107Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kz0xKXtjb25zdCBuPXJbdF0sbz17Li4uZSx0eXBlOm4udHlwZSxpdGVtczpuLml0ZW1zfSxpPXRoaXMucGFyc2VUb2tlbihvKTtpJiYoQXJyYXkuaXNBcnJheShpKT9zLnB1c2goLi4uaSk6cy5wdXNoKGkpKX1yZXR1cm4gcy5sZW5ndGg+MD9zOm51bGx9cGFyc2VUb2tlbldpdGhIYW5kbGVycyhlKXtpZighZS50eXBlKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5nZXRIYW5kbGVyc0ZvclRva2VuKGUudHlwZSksbj10aGlzLmNyZWF0ZVBhcnNlSGVscGVycygpO2lmKHQuZmluZCh0PT57aWYoIXQucGFyc2VNYXJrZG93bilyZXR1cm4hMTtjb25zdCByPXQucGFyc2VNYXJrZG93bihlLG4pLG89dGhpcy5ub3JtYWxpemVQYXJzZVJlc3VsdChyKTtyZXR1cm4hKCFvfHxBcnJheS5pc0FycmF5KG8pJiYhKG8ubGVuZ3RoPjApKSYmKHRoaXMubGFzdFBhcnNlUmVzdWx0PW8sITApfSkmJnRoaXMubGFzdFBhcnNlUmVzdWx0KXtjb25zdCBlPXRoaXMubGFzdFBhcnNlUmVzdWx0O3JldHVybiB0aGlzLmxhc3RQYXJzZVJlc3VsdD1udWxsLGV9cmV0dXJuIHRoaXMucGFyc2VGYWxsYmFja1Rva2VuKGUpfWNyZWF0ZVBhcnNlSGVscGVycygpe3JldHVybntwYXJzZUlubGluZTplPT50aGlzLnBhcnNlSW5saW5lVG9rZW5zKGUpLHBhcnNlQ2hpbGRyZW46ZT0+dGhpcy5wYXJzZVRva2VucyhlKSxwYXJzZUJsb2NrQ2hpbGRyZW46ZT0+dGhpcy5wYXJzZVRva2VucyhlLCEwKSxjcmVhdGVUZXh0Tm9kZTooZSx0KT0+KHt0eXBlOiJ0ZXh0Iix0ZXh0OmUsbWFya3M6dHx8dm9pZCAwfSksY3JlYXRlTm9kZTooZSx0LG4pPT57Y29uc3Qgcj17dHlwZTplLGF0dHJzOnR8fHZvaWQgMCxjb250ZW50Om58fHZvaWQgMH07cmV0dXJuIHQmJjAhPT1PYmplY3Qua2V5cyh0KS5sZW5ndGh8fGRlbGV0ZSByLmF0dHJzLHJ9LGFwcGx5TWFyazooZSx0LG4pPT4oe21hcms6ZSxjb250ZW50OnQsYXR0cnM6biYmT2JqZWN0LmtleXMobikubGVuZ3RoPjA/bjp2b2lkIDB9KX19ZXNjYXBlUmVnZXgoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1wYXJzZUlubGluZVRva2VucyhlKXt2YXIgdCxuLHIsbztjb25zdCBpPVtdO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cys9MSl7Y29uc3QgbD1lW3NdO2lmKCJ0ZXh0Ij09PWwudHlwZSlpLnB1c2goe3R5cGU6InRleHQiLHRleHQ6ZGVjb2RlSHRtbEVudGl0aWVzKGwudGV4dHx8IiIpfSk7ZWxzZSBpZigiaHRtbCI9PT1sLnR5cGUpe2NvbnN0IGE9KG51bGwhPShuPW51bGwhPSh0PWwucmF3KT90OmwudGV4dCk/bjoiIikudG9TdHJpbmcoKSxjPS9ePFwvW1xzXSpbXHctXSsvaS50ZXN0KGEpLGQ9YS5tYXRjaCgvXjxbXHNdKihbXHctXSspKFxzfD58XC98JCkvaSk7aWYoIWMmJmQmJiEvXC8+JC8udGVzdChhKSl7Y29uc3QgdD1kWzFdLG49dGhpcy5lc2NhcGVSZWdleCh0KSxsPW5ldyBSZWdFeHAoYF48XFwvXFxzKiR7bn1cXGJgLCJpIik7bGV0IGM9LTE7Y29uc3QgcD1bYV07Zm9yKGxldCB0PXMrMTt0PGUubGVuZ3RoO3QrPTEpe2NvbnN0IG49ZVt0XSxpPShudWxsIT0obz1udWxsIT0ocj1uLnJhdyk/cjpuLnRleHQpP286IiIpLnRvU3RyaW5nKCk7aWYocC5wdXNoKGkpLCJodG1sIj09PW4udHlwZSYmbC50ZXN0KGkpKXtjPXQ7YnJlYWt9fWlmKC0xIT09Yyl7Y29uc3QgZT1wLmpvaW4oIiIpLHQ9e3R5cGU6Imh0bWwiLHJhdzplLHRleHQ6ZSxibG9jazohMX0sbj10aGlzLnBhcnNlSFRNTFRva2VuKHQpO2lmKG4pe2NvbnN0IGU9dGhpcy5ub3JtYWxpemVQYXJzZVJlc3VsdChuKTtBcnJheS5pc0FycmF5KGUpP2kucHVzaCguLi5lKTplJiZpLnB1c2goZSl9cz1jO2NvbnRpbnVlfX1jb25zdCBwPXRoaXMucGFyc2VIVE1MVG9rZW4obCk7aWYocCl7Y29uc3QgZT10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KHApO0FycmF5LmlzQXJyYXkoZSk/aS5wdXNoKC4uLmUpOmUmJmkucHVzaChlKX19ZWxzZSBpZihsLnR5cGUpe2NvbnN0IGU9dGhpcy5nZXRIYW5kbGVyRm9yVG9rZW4obC50eXBlKTtpZihlJiZlLnBhcnNlTWFya2Rvd24pe2NvbnN0IHQ9dGhpcy5jcmVhdGVQYXJzZUhlbHBlcnMoKSxuPWUucGFyc2VNYXJrZG93bihsLHQpO2lmKHRoaXMuaXNNYXJrUmVzdWx0KG4pKXtjb25zdCBlPXRoaXMuYXBwbHlNYXJrVG9Db250ZW50KG4ubWFyayxuLmNvbnRlbnQsbi5hdHRycyk7aS5wdXNoKC4uLmUpfWVsc2V7Y29uc3QgZT10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KG4pO0FycmF5LmlzQXJyYXkoZSk/aS5wdXNoKC4uLmUpOmUmJmkucHVzaChlKX19ZWxzZSBsLnRva2VucyYmaS5wdXNoKC4uLnRoaXMucGFyc2VJbmxpbmVUb2tlbnMobC50b2tlbnMpKX19cmV0dXJuIGl9YXBwbHlNYXJrVG9Db250ZW50KGUsdCxuKXtyZXR1cm4gdC5tYXAodD0+e2lmKCJ0ZXh0Ij09PXQudHlwZSl7Y29uc3Qgcj10Lm1hcmtzfHxbXSxvPW4/e3R5cGU6ZSxhdHRyczpufTp7dHlwZTplfTtyZXR1cm57Li4udCxtYXJrczpbLi4ucixvXX19cmV0dXJuey4uLnQsY29udGVudDp0LmNvbnRlbnQ/dGhpcy5hcHBseU1hcmtUb0NvbnRlbnQoZSx0LmNvbnRlbnQsbik6dm9pZCAwfX0pfWlzTWFya1Jlc3VsdChlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYibWFyayJpbiBlfW5vcm1hbGl6ZVBhcnNlUmVzdWx0KGUpe3JldHVybiBlP3RoaXMuaXNNYXJrUmVzdWx0KGUpP2UuY29udGVudDplOm51bGx9cGFyc2VGYWxsYmFja1Rva2VuKGUsdD0hMSl7c3dpdGNoKGUudHlwZSl7Y2FzZSJwYXJhZ3JhcGgiOnJldHVybnt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6ZS50b2tlbnM/dGhpcy5wYXJzZUlubGluZVRva2VucyhlLnRva2Vucyk6W119O2Nhc2UiaGVhZGluZyI6cmV0dXJue3R5cGU6ImhlYWRpbmciLGF0dHJzOntsZXZlbDplLmRlcHRofHwxfSxjb250ZW50OmUudG9rZW5zP3RoaXMucGFyc2VJbmxpbmVUb2tlbnMoZS50b2tlbnMpOltdfTtjYXNlInRleHQiOnJldHVybnt0eXBlOiJ0ZXh0Iix0ZXh0OmRlY29kZUh0bWxFbnRpdGllcyhlLnRleHR8fCIiKX07Y2FzZSJodG1sIjpyZXR1cm4gdGhpcy5wYXJzZUhUTUxUb2tlbihlKTtjYXNlInNwYWNlIjpyZXR1cm4gbnVsbDtkZWZhdWx0OnJldHVybiBlLnRva2Vucz90aGlzLnBhcnNlVG9rZW5zKGUudG9rZW5zLHQpOm51bGx9fXBhcnNlSFRNTFRva2VuKGUpe2NvbnN0IHQ9ZS50ZXh0fHxlLnJhd3x8IiI7cmV0dXJuIHQudHJpbSgpP2UuYmxvY2s/e3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6dH1dfTp7dHlwZToidGV4dCIsdGV4dDp0fTpudWxsfWVuY29kZVRleHRGb3JNYXJrZG93bihlLHQsbil7Y29uc3Qgcj1udWxsIT0obnVsbD09bj92b2lkIDA6bi50eXBlKSYmdGhpcy5jb2RlVHlwZXMuaGFzKG4udHlwZSl8fCh0Lm1hcmtzfHxbXSkuc29tZShlPT50aGlzLmNvZGVUeXBlcy5oYXMoInN0cmluZyI9PXR5cGVvZiBlP2U6ZS50eXBlKSk7cmV0dXJuIHI/ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9KGUpfXJlbmRlck5vZGVUb01hcmtkb3duKGUsdCxuPTAscj0wLG89e30pe3ZhciBpO2lmKCJ0ZXh0Ij09PWUudHlwZSlyZXR1cm4gdGhpcy5lbmNvZGVUZXh0Rm9yTWFya2Rvd24oZS50ZXh0fHwiIixlLHQpO2lmKCFlLnR5cGUpcmV0dXJuIiI7Y29uc3Qgcz10aGlzLmdldEhhbmRsZXJGb3JUb2tlbihlLnR5cGUpO2lmKCFzKXJldHVybiIiO2NvbnN0IGw9QXJyYXkuaXNBcnJheShudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnQpJiZuPjA/dC5jb250ZW50W24tMV06dm9pZCAwLGE9e3JlbmRlckNoaWxkcmVuOih0LG8pPT57Y29uc3QgaT1zLmlzSW5kZW50aW5nP3IrMTpyO3JldHVybiFBcnJheS5pc0FycmF5KHQpJiZ0LmNvbnRlbnQ/dGhpcy5yZW5kZXJOb2Rlcyh0LmNvbnRlbnQsZSxvfHwiIixuLGkpOnRoaXMucmVuZGVyTm9kZXModCxlLG98fCIiLG4saSl9LHJlbmRlckNoaWxkOih0LG4pPT57Y29uc3Qgbz1zLmlzSW5kZW50aW5nP3IrMTpyO3JldHVybiB0aGlzLnJlbmRlck5vZGVUb01hcmtkb3duKHQsZSxuLG8pfSxpbmRlbnQ6ZT0+dGhpcy5pbmRlbnRTdHJpbmcrZSx3cmFwSW5CbG9jazp3cmFwSW5NYXJrZG93bkJsb2NrfSxjPXtpbmRleDpuLGxldmVsOnIscGFyZW50VHlwZTpudWxsPT10P3ZvaWQgMDp0LnR5cGUscHJldmlvdXNOb2RlOmwsbWV0YTp7cGFyZW50QXR0cnM6bnVsbD09dD92b2lkIDA6dC5hdHRycywuLi5vfX07cmV0dXJuKG51bGw9PShpPXMucmVuZGVyTWFya2Rvd24pP3ZvaWQgMDppLmNhbGwocyxlLGEsYykpfHwiIn1yZW5kZXJOb2RlcyhlLHQsbj0iIixyPTAsbz0wKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT90aGlzLnJlbmRlck5vZGVzV2l0aE1hcmtCb3VuZGFyaWVzKGUsdCxuLG8pOmUudHlwZT90aGlzLnJlbmRlck5vZGVUb01hcmtkb3duKGUsdCxyLG8pOiIifXJlbmRlck5vZGVzV2l0aE1hcmtCb3VuZGFyaWVzKGUsdCxuPSIiLHI9MCl7Y29uc3Qgbz1bXSxpPW5ldyBNYXAscz1uZXcgU2V0LGw9bmV3IE1hcDtyZXR1cm4gZS5mb3JFYWNoKChuLGEpPT57Y29uc3QgYz1hPGUubGVuZ3RoLTE/ZVthKzFdOm51bGw7aWYobi50eXBlKWlmKCJ0ZXh0Ij09PW4udHlwZSl7bGV0IGU9dGhpcy5lbmNvZGVUZXh0Rm9yTWFya2Rvd24obi50ZXh0fHwiIixuLHQpO2NvbnN0IHI9bmV3IE1hcCgobi5tYXJrc3x8W10pLm1hcChlPT5bZS50eXBlLGVdKSksYT1mdW5jdGlvbihlLHQpe2NvbnN0IG49W107cmV0dXJuIEFycmF5LmZyb20odC5lbnRyaWVzKCkpLmZvckVhY2goKFt0LHJdKT0+e2UuaGFzKHQpfHxuLnB1c2goe3R5cGU6dCxtYXJrOnJ9KX0pLG59KGksciksZD1mdW5jdGlvbihlLHQpe2NvbnN0IG49W107cmV0dXJuIEFycmF5LmZyb20oZS5rZXlzKCkpLmZvckVhY2goZT0+e3QmJnQubWFya3MmJnQubWFya3MubWFwKGU9PmUudHlwZSkuaW5jbHVkZXMoZSl8fG4ucHVzaChlKX0pLG59KHIsYykscD1kLmZpbHRlcihlPT5pLmhhcyhlKSksZj1wLmxlbmd0aD4wJiZhLmxlbmd0aD4wO2xldCBtPSIiO2lmKGQubGVuZ3RoPjAmJiFmKXtjb25zdCB0PWUubWF0Y2goLyhccyspJC8pO3QmJihtPXRbMV0sZT1lLnNsaWNlKDAsLW0ubGVuZ3RoKSl9Znx8ZC5mb3JFYWNoKHQ9PntpZighaS5oYXModCkpcmV0dXJuO2NvbnN0IG49ci5nZXQodCksbz10aGlzLmdldE1hcmtDbG9zaW5nKHQsbixsLmdldCh0KSk7byYmKGUrPW8pLGkuaGFzKHQpJiYoaS5kZWxldGUodCksbC5kZWxldGUodCkpfSk7bGV0IHksdz0iIjtpZihhLmxlbmd0aD4wKXtjb25zdCB0PWUubWF0Y2goL14oXHMrKS8pO3QmJih3PXRbMV0sZT1lLnNsaWNlKHcubGVuZ3RoKSl9aWYoYS5mb3JFYWNoKCh7dHlwZTp0LG1hcms6bn0pPT57Y29uc3Qgcj1zLmhhcyh0KT8iaHRtbCI6Im1hcmtkb3duIixvPXRoaXMuZ2V0TWFya09wZW5pbmcodCxuLHIpO28mJihlPW8rZSksbC5zZXQodCxyKSxzLmRlbGV0ZSh0KX0pLGZ8fGEuc2xpY2UoKS5yZXZlcnNlKCkuZm9yRWFjaCgoe3R5cGU6ZSxtYXJrOnR9KT0+e2kuc2V0KGUsdCl9KSxlPXcrZSxmKXtjb25zdCBlPW5ldyBTZXQoKChudWxsPT1jP3ZvaWQgMDpjLm1hcmtzKXx8W10pLm1hcChlPT5lLnR5cGUpKTthLmZvckVhY2goKHt0eXBlOnR9KT0+e2UuaGFzKHQpJiZ0aGlzLmdldEh0bWxSZW9wZW5UYWdzKHQpJiZzLmFkZCh0KX0pLHk9Wy4uLmEubWFwKGU9PmUudHlwZSksLi4ucF19ZWxzZSB5PWZ1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89IW4saT1uJiYidGV4dCI9PT1uLnR5cGUmJighbi5tYXJrc3x8MD09PW4ubWFya3MubGVuZ3RoKSxzPW4mJiJ0ZXh0Ij09PW4udHlwZSYmbi5tYXJrcyYmIXIodCxuZXcgTWFwKG4ubWFya3MubWFwKGU9PltlLnR5cGUsZV0pKSksbD1bXTtpZihvfHxpfHxzKWlmKG4mJiJ0ZXh0Ij09PW4udHlwZSYmbi5tYXJrcyl7Y29uc3QgdD1uZXcgTWFwKG4ubWFya3MubWFwKGU9PltlLnR5cGUsZV0pKTtBcnJheS5mcm9tKGUua2V5cygpKS5yZXZlcnNlKCkuZm9yRWFjaChlPT57dC5oYXMoZSl8fGwucHVzaChlKX0pfWVsc2Uob3x8aSkmJmwucHVzaCguLi5BcnJheS5mcm9tKGUua2V5cygpKS5yZXZlcnNlKCkpO3JldHVybiBsfShpLHIsYyx0aGlzLm1hcmtTZXRzRXF1YWwuYmluZCh0aGlzKSk7bGV0IGI9IiI7aWYoeS5sZW5ndGg+MCl7Y29uc3QgdD1lLm1hdGNoKC8oXHMrKSQvKTt0JiYoYj10WzFdLGU9ZS5zbGljZSgwLC1iLmxlbmd0aCkpfXkuZm9yRWFjaCh0PT57dmFyIG47Y29uc3Qgbz1udWxsIT0obj1pLmdldCh0KSk/bjpyLmdldCh0KSxzPXRoaXMuZ2V0TWFya0Nsb3NpbmcodCxvLGwuZ2V0KHQpKTtzJiYoZSs9cyksaS5kZWxldGUodCksbC5kZWxldGUodCl9KSxlKz1iLGUrPW0sby5wdXNoKGUpfWVsc2V7Y29uc3QgZT1uZXcgTWFwKGkpLHM9bmV3IE1hcChsKSxjPWZ1bmN0aW9uKGUsdCl7bGV0IG49IiI7cmV0dXJuIEFycmF5LmZyb20oZS5rZXlzKCkpLnJldmVyc2UoKS5mb3JFYWNoKHI9Pntjb25zdCBvPWUuZ2V0KHIpLGk9dChyLG8pO2kmJihuPWkrbil9KSxlLmNsZWFyKCksbn0oaSwoZSx0KT0+dGhpcy5nZXRNYXJrQ2xvc2luZyhlLHQsbC5nZXQoZSkpKTtsLmNsZWFyKCk7Y29uc3QgZD10aGlzLnJlbmRlck5vZGVUb01hcmtkb3duKG4sdCxhLHIpLHA9ImhhcmRCcmVhayI9PT1uLnR5cGU/IiI6ZnVuY3Rpb24oZSx0LG4pe2xldCByPSIiO3JldHVybiBBcnJheS5mcm9tKGUuZW50cmllcygpKS5mb3JFYWNoKChbZSxvXSk9Pntjb25zdCBpPW4oZSxvKTtpJiYocis9aSksdC5zZXQoZSxvKX0pLHJ9KGUsaSwoZSx0KT0+e3ZhciBuO2NvbnN0IHI9bnVsbCE9KG49cy5nZXQoZSkpP246Im1hcmtkb3duIjtyZXR1cm4gbC5zZXQoZSxyKSx0aGlzLmdldE1hcmtPcGVuaW5nKGUsdCxyKX0pO28ucHVzaChjK2QrcCl9fSksby5qb2luKG4pfWdldE1hcmtPcGVuaW5nKGUsdCxuPSJtYXJrZG93biIpe3ZhciByO2lmKCJodG1sIj09PW4pcmV0dXJuKG51bGw9PShyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MoZSkpP3ZvaWQgMDpyLm9wZW4pfHwiIjtjb25zdCBvPXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShlKSxpPW8ubGVuZ3RoPjA/b1swXTp2b2lkIDA7aWYoIWl8fCFpLnJlbmRlck1hcmtkb3duKXJldHVybiIiO2NvbnN0IHM9Iu6AgF9fVElQVEFQX01BUktET1dOX1BMQUNFSE9MREVSX1/ugIEiLGw9e3R5cGU6ZSxhdHRyczp0LmF0dHJzfHx7fSxjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDpzfV19O3RyeXtjb25zdCBlPWkucmVuZGVyTWFya2Rvd24obCx7cmVuZGVyQ2hpbGRyZW46KCk9PnMscmVuZGVyQ2hpbGQ6KCk9PnMsaW5kZW50OmU9PmUsd3JhcEluQmxvY2s6KGUsdCk9PmUrdH0se2luZGV4OjAsbGV2ZWw6MCxwYXJlbnRUeXBlOiJ0ZXh0IixtZXRhOnt9fSksdD1lLmluZGV4T2Yocyk7cmV0dXJuIHQ+PTA/ZS5zdWJzdHJpbmcoMCx0KToiIn1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBvcGVuaW5nIGZvciAke2V9OiAke3R9YCl9fWdldE1hcmtDbG9zaW5nKGUsdCxuPSJtYXJrZG93biIpe3ZhciByO2lmKCJodG1sIj09PW4pcmV0dXJuKG51bGw9PShyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MoZSkpP3ZvaWQgMDpyLmNsb3NlKXx8IiI7Y29uc3Qgbz10aGlzLmdldEhhbmRsZXJzRm9yTm9kZVR5cGUoZSksaT1vLmxlbmd0aD4wP29bMF06dm9pZCAwO2lmKCFpfHwhaS5yZW5kZXJNYXJrZG93bilyZXR1cm4iIjtjb25zdCBzPSLugIBfX1RJUFRBUF9NQVJLRE9XTl9QTEFDRUhPTERFUl9f7oCBIixsPXt0eXBlOmUsYXR0cnM6dC5hdHRyc3x8e30sY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6c31dfTt0cnl7Y29uc3QgZT1pLnJlbmRlck1hcmtkb3duKGwse3JlbmRlckNoaWxkcmVuOigpPT5zLHJlbmRlckNoaWxkOigpPT5zLGluZGVudDplPT5lLHdyYXBJbkJsb2NrOihlLHQpPT5lK3R9LHtpbmRleDowLGxldmVsOjAscGFyZW50VHlwZToidGV4dCIsbWV0YTp7fX0pLHQ9ZS5pbmRleE9mKHMpLG49dCszMztyZXR1cm4gdD49MD9lLnN1YnN0cmluZyhuKToiIn1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBjbG9zaW5nIGZvciAke2V9OiAke3R9YCl9fWdldEh0bWxSZW9wZW5UYWdzKGUpe2NvbnN0IHQ9dGhpcy5nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKGUpLG49dC5sZW5ndGg+MD90WzBdOnZvaWQgMDtyZXR1cm4gbnVsbD09bj92b2lkIDA6bi5odG1sUmVvcGVufW1hcmtTZXRzRXF1YWwoZSx0KXtyZXR1cm4gZS5zaXplPT09dC5zaXplJiZBcnJheS5mcm9tKGUua2V5cygpKS5ldmVyeShlPT50LmhhcyhlKSl9fSxxcj1qdC5jcmVhdGUoe25hbWU6Im1hcmtkb3duIixhZGRPcHRpb25zOigpPT4oe2luZGVudGF0aW9uOntzdHlsZToic3BhY2UiLHNpemU6Mn0sbWFya2VkOnZvaWQgMCxtYXJrZWRPcHRpb25zOnt9fSksYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0Q29udGVudDooZSx0KT0+e2lmKCEobnVsbD09dD92b2lkIDA6dC5jb250ZW50VHlwZSkpcmV0dXJuIEl0LnNldENvbnRlbnQoZSx0KTtpZigibWFya2Rvd24iIT09YXNzdW1lQ29udGVudFR5cGUoZSxudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnRUeXBlKXx8IXRoaXMuZWRpdG9yLm1hcmtkb3duKXJldHVybiBJdC5zZXRDb250ZW50KGUsdCk7Y29uc3Qgbj10aGlzLmVkaXRvci5tYXJrZG93bi5wYXJzZShlKTtyZXR1cm4gSXQuc2V0Q29udGVudChuLHQpfSxpbnNlcnRDb250ZW50OihlLHQpPT57aWYoIShudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnRUeXBlKSlyZXR1cm4gSXQuaW5zZXJ0Q29udGVudChlLHQpO2lmKCJtYXJrZG93biIhPT1hc3N1bWVDb250ZW50VHlwZShlLG51bGw9PXQ/dm9pZCAwOnQuY29udGVudFR5cGUpfHwhdGhpcy5lZGl0b3IubWFya2Rvd24pcmV0dXJuIEl0Lmluc2VydENvbnRlbnQoZSx0KTtjb25zdCBuPXRoaXMuZWRpdG9yLm1hcmtkb3duLnBhcnNlKGUpO3JldHVybiBJdC5pbnNlcnRDb250ZW50KG4sdCl9LGluc2VydENvbnRlbnRBdDooZSx0LG4pPT57aWYoIShudWxsPT1uP3ZvaWQgMDpuLmNvbnRlbnRUeXBlKSlyZXR1cm4gSXQuaW5zZXJ0Q29udGVudEF0KGUsdCxuKTtpZigibWFya2Rvd24iIT09YXNzdW1lQ29udGVudFR5cGUodCxudWxsPT1uP3ZvaWQgMDpuLmNvbnRlbnRUeXBlKXx8IXRoaXMuZWRpdG9yLm1hcmtkb3duKXJldHVybiBJdC5pbnNlcnRDb250ZW50QXQoZSx0LG4pO2NvbnN0IHI9dGhpcy5lZGl0b3IubWFya2Rvd24ucGFyc2UodCk7cmV0dXJuIEl0Lmluc2VydENvbnRlbnRBdChlLHIsbil9fX0sYWRkU3RvcmFnZSgpe3JldHVybnttYW5hZ2VyOm5ldyBqcih7aW5kZW50YXRpb246dGhpcy5vcHRpb25zLmluZGVudGF0aW9uLG1hcmtlZDp0aGlzLm9wdGlvbnMubWFya2VkLG1hcmtlZE9wdGlvbnM6dGhpcy5vcHRpb25zLm1hcmtlZE9wdGlvbnMsZXh0ZW5zaW9uczpbXX0pfX0sb25CZWZvcmVDcmVhdGUoKXtpZih0aGlzLmVkaXRvci5tYXJrZG93bilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJbdGlwdGFwXVttYXJrZG93bl06IFRoZXJlIGlzIGFscmVhZHkgYSBgbWFya2Rvd25gIHByb3BlcnR5IG9uIHRoZSBlZGl0b3IgaW5zdGFuY2UuIFRoaXMgbWlnaHQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yLiIpO2lmKHRoaXMuc3RvcmFnZS5tYW5hZ2VyPW5ldyBqcih7aW5kZW50YXRpb246dGhpcy5vcHRpb25zLmluZGVudGF0aW9uLG1hcmtlZDp0aGlzLm9wdGlvbnMubWFya2VkLG1hcmtlZE9wdGlvbnM6dGhpcy5vcHRpb25zLm1hcmtlZE9wdGlvbnMsZXh0ZW5zaW9uczp0aGlzLmVkaXRvci5leHRlbnNpb25NYW5hZ2VyLmJhc2VFeHRlbnNpb25zfSksdGhpcy5lZGl0b3IubWFya2Rvd249dGhpcy5zdG9yYWdlLm1hbmFnZXIsdGhpcy5lZGl0b3IuZ2V0TWFya2Rvd249KCk9PnRoaXMuc3RvcmFnZS5tYW5hZ2VyLnNlcmlhbGl6ZSh0aGlzLmVkaXRvci5nZXRKU09OKCkpLCF0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnRUeXBlKXJldHVybjtpZigibWFya2Rvd24iIT09YXNzdW1lQ29udGVudFR5cGUodGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50LHRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudFR5cGUpKXJldHVybjtpZighdGhpcy5lZGl0b3IubWFya2Rvd24pdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBNYXJrZG93biBleHRlbnNpb24gaXMgbm90IGFkZGVkIHRvIHRoZSBlZGl0b3IuIFBsZWFzZSBhZGQgdGhlIE1hcmtkb3duIGV4dGVuc2lvbiB0byB1c2UgdGhpcyBmZWF0dXJlLicpO2lmKHZvaWQgMD09PXRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudHx8InN0cmluZyIhPXR5cGVvZiB0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBpbml0aWFsIGNvbnRlbnQgaXMgbm90IGEgc3RyaW5nLiBQbGVhc2UgcHJvdmlkZSB0aGUgaW5pdGlhbCBjb250ZW50IGFzIGEgbWFya2Rvd24gc3RyaW5nLicpO2NvbnN0IGU9dGhpcy5lZGl0b3IubWFya2Rvd24ucGFyc2UodGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50KTt0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQ9ZX19KSxoPShlLHQpPT57aWYoInNsb3QiPT09ZSlyZXR1cm4gMDtpZihlIGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuIGUodCk7Y29uc3R7Y2hpbGRyZW46biwuLi5yfT1udWxsIT10P3Q6e307aWYoInN2ZyI9PT1lKXRocm93IG5ldyBFcnJvcigiU1ZHIGVsZW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBKU1ggc3ludGF4LCB1c2UgdGhlIGFycmF5IHN5bnRheCBpbnN0ZWFkIik7cmV0dXJuW2UscixuXX0sVXI9L15ccyo+XHMkLyxXcj1vbi5jcmVhdGUoe25hbWU6ImJsb2NrcXVvdGUiLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxjb250ZW50OiJibG9jaysiLGdyb3VwOiJibG9jayIsZGVmaW5pbmc6ITAscGFyc2VIVE1MOigpPT5be3RhZzoiYmxvY2txdW90ZSJ9XSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuIGgoImJsb2NrcXVvdGUiLHsuLi5tZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLGNoaWxkcmVuOmgoInNsb3QiLHt9KX0pfSxwYXJzZU1hcmtkb3duOihlLHQpPT57dmFyIG47Y29uc3Qgcj1udWxsIT0obj10LnBhcnNlQmxvY2tDaGlsZHJlbik/bjp0LnBhcnNlQ2hpbGRyZW47cmV0dXJuIHQuY3JlYXRlTm9kZSgiYmxvY2txdW90ZSIsdm9pZCAwLHIoZS50b2tlbnN8fFtdKSl9LHJlbmRlck1hcmtkb3duOihlLHQpPT57aWYoIWUuY29udGVudClyZXR1cm4iIjtjb25zdCBuPVtdO3JldHVybiBlLmNvbnRlbnQuZm9yRWFjaCgoZSxyKT0+e3ZhciBvLGk7Y29uc3Qgcz0obnVsbCE9KGk9bnVsbD09KG89dC5yZW5kZXJDaGlsZCk/dm9pZCAwOm8uY2FsbCh0LGUscikpP2k6dC5yZW5kZXJDaGlsZHJlbihbZV0pKS5zcGxpdCgiXG4iKS5tYXAoZT0+IiI9PT1lLnRyaW0oKT8iPiI6YD4gJHtlfWApO24ucHVzaChzLmpvaW4oIlxuIikpfSksbi5qb2luKCJcbj5cbiIpfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRCbG9ja3F1b3RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS53cmFwSW4odGhpcy5uYW1lKSx0b2dnbGVCbG9ja3F1b3RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVXcmFwKHRoaXMubmFtZSksdW5zZXRCbG9ja3F1b3RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5saWZ0KHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LWIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVCbG9ja3F1b3RlKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW3dyYXBwaW5nSW5wdXRSdWxlKHtmaW5kOlVyLHR5cGU6dGhpcy50eXBlfSldfX0pLEtyPS8oPzpefFxzKShcKlwqKD8hXHMrXCpcKikoKD86W14qXSspKVwqXCooPyFccytcKlwqKSkkLyxKcj0vKD86XnxccykoXCpcKig/IVxzK1wqXCopKCg/OlteKl0rKSlcKlwqKD8hXHMrXCpcKikpL2csR3I9Lyg/Ol58XHMpKF9fKD8hXHMrX18pKCg/OlteX10rKSlfXyg/IVxzK19fKSkkLyxYcj0vKD86XnxccykoX18oPyFccytfXykoKD86W15fXSspKV9fKD8hXHMrX18pKS9nLFFyPUZ0LmNyZWF0ZSh7bmFtZToiYm9sZCIsYWRkT3B0aW9uczooKT0+KHtIVE1MQXR0cmlidXRlczp7fX0pLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJzdHJvbmcifSx7dGFnOiJiIixnZXRBdHRyczplPT4ibm9ybWFsIiE9PWUuc3R5bGUuZm9udFdlaWdodCYmbnVsbH0se3N0eWxlOiJmb250LXdlaWdodD00MDAiLGNsZWFyTWFyazplPT5lLnR5cGUubmFtZT09PXRoaXMubmFtZX0se3N0eWxlOiJmb250LXdlaWdodCIsZ2V0QXR0cnM6ZT0+L14oYm9sZChlcik/fFs1LTldXGR7Mix9KSQvLnRlc3QoZSkmJm51bGx9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVybiBoKCJzdHJvbmciLHsuLi5tZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLGNoaWxkcmVuOmgoInNsb3QiLHt9KX0pfSxtYXJrZG93blRva2VuTmFtZToic3Ryb25nIixwYXJzZU1hcmtkb3duOihlLHQpPT50LmFwcGx5TWFyaygiYm9sZCIsdC5wYXJzZUlubGluZShlLnRva2Vuc3x8W10pKSxtYXJrZG93bk9wdGlvbnM6e2h0bWxSZW9wZW46e29wZW46IjxzdHJvbmc+IixjbG9zZToiPC9zdHJvbmc+In19LHJlbmRlck1hcmtkb3duOihlLHQpPT5gKioke3QucmVuZGVyQ2hpbGRyZW4oZSl9KipgLGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEJvbGQ6KCk9Pih7Y29tbWFuZHM6ZX0pPT5lLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVCb2xkOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRCb2xkOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS51bnNldE1hcmsodGhpcy5uYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtYiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJvbGQoKSwiTW9kLUIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVCb2xkKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6S3IsdHlwZTp0aGlzLnR5cGV9KSxtYXJrSW5wdXRSdWxlKHtmaW5kOkdyLHR5cGU6dGhpcy50eXBlfSldfSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW21hcmtQYXN0ZVJ1bGUoe2ZpbmQ6SnIsdHlwZTp0aGlzLnR5cGV9KSxtYXJrUGFzdGVSdWxlKHtmaW5kOlhyLHR5cGU6dGhpcy50eXBlfSldfX0pLFpyPS9eYGBgKFthLXpdKyk/W1xzXG5dJC8sWXI9L15+fn4oW2Etel0rKT9bXHNcbl0kLyxlbz1vbi5jcmVhdGUoe25hbWU6ImNvZGVCbG9jayIsYWRkT3B0aW9uczooKT0+KHtsYW5ndWFnZUNsYXNzUHJlZml4OiJsYW5ndWFnZS0iLGV4aXRPblRyaXBsZUVudGVyOiEwLGV4aXRPbkFycm93RG93bjohMCxkZWZhdWx0TGFuZ3VhZ2U6bnVsbCxlbmFibGVUYWJJbmRlbnRhdGlvbjohMSx0YWJTaXplOjQsSFRNTEF0dHJpYnV0ZXM6e319KSxjb250ZW50OiJ0ZXh0KiIsbWFya3M6IiIsZ3JvdXA6ImJsb2NrIixjb2RlOiEwLGRlZmluaW5nOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57bGFuZ3VhZ2U6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLmRlZmF1bHRMYW5ndWFnZSxwYXJzZUhUTUw6ZT0+e3ZhciB0O2NvbnN0e2xhbmd1YWdlQ2xhc3NQcmVmaXg6bn09dGhpcy5vcHRpb25zO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9Wy4uLihudWxsPT0odD1lLmZpcnN0RWxlbWVudENoaWxkKT92b2lkIDA6dC5jbGFzc0xpc3QpfHxbXV0uZmlsdGVyKGU9PmUuc3RhcnRzV2l0aChuKSkubWFwKGU9PmUucmVwbGFjZShuLCIiKSlbMF07cmV0dXJuIHJ8fG51bGx9LHJlbmRlcmVkOiExfX19LHBhcnNlSFRNTDooKT0+W3t0YWc6InByZSIscHJlc2VydmVXaGl0ZXNwYWNlOiJmdWxsIn1dLHJlbmRlckhUTUwoe25vZGU6ZSxIVE1MQXR0cmlidXRlczp0fSl7cmV0dXJuWyJwcmUiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsdCksWyJjb2RlIix7Y2xhc3M6ZS5hdHRycy5sYW5ndWFnZT90aGlzLm9wdGlvbnMubGFuZ3VhZ2VDbGFzc1ByZWZpeCtlLmF0dHJzLmxhbmd1YWdlOm51bGx9LDBdXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImNvZGUiLHBhcnNlTWFya2Rvd246KGUsdCk9Pnt2YXIgbixyO3JldHVybiExPT09KG51bGw9PShuPWUucmF3KT92b2lkIDA6bi5zdGFydHNXaXRoKCJgYGAiKSkmJiExPT09KG51bGw9PShyPWUucmF3KT92b2lkIDA6ci5zdGFydHNXaXRoKCJ+fn4iKSkmJiJpbmRlbnRlZCIhPT1lLmNvZGVCbG9ja1N0eWxlP1tdOnQuY3JlYXRlTm9kZSgiY29kZUJsb2NrIix7bGFuZ3VhZ2U6ZS5sYW5nfHxudWxsfSxlLnRleHQ/W3QuY3JlYXRlVGV4dE5vZGUoZS50ZXh0KV06W10pfSxyZW5kZXJNYXJrZG93bjooZSx0KT0+e3ZhciBuO2xldCByPSIiO2NvbnN0IG89KG51bGw9PShuPWUuYXR0cnMpP3ZvaWQgMDpuLmxhbmd1YWdlKXx8IiI7aWYoZS5jb250ZW50KXtyPVtgXGBcYFxgJHtvfWAsdC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQpLCJgYGAiXS5qb2luKCJcbiIpfWVsc2Ugcj1gXGBcYFxgJHtvfVxuXG5cYFxgXGBgO3JldHVybiByfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlQmxvY2s6ZT0+KHtjb21tYW5kczp0fSk9PnQuc2V0Tm9kZSh0aGlzLm5hbWUsZSksdG9nZ2xlQ29kZUJsb2NrOmU9Pih7Y29tbWFuZHM6dH0pPT50LnRvZ2dsZU5vZGUodGhpcy5uYW1lLCJwYXJhZ3JhcGgiLGUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1BbHQtYyI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUNvZGVCbG9jaygpLEJhY2tzcGFjZTooKT0+e2NvbnN0e2VtcHR5OmUsJGFuY2hvcjp0fT10aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb24sbj0xPT09dC5wb3M7cmV0dXJuISghZXx8dC5wYXJlbnQudHlwZS5uYW1lIT09dGhpcy5uYW1lKSYmKCEoIW4mJnQucGFyZW50LnRleHRDb250ZW50Lmxlbmd0aCkmJnRoaXMuZWRpdG9yLmNvbW1hbmRzLmNsZWFyTm9kZXMoKSl9LFRhYjooe2VkaXRvcjplfSk9Pnt2YXIgdDtpZighdGhpcy5vcHRpb25zLmVuYWJsZVRhYkluZGVudGF0aW9uKXJldHVybiExO2NvbnN0IG49bnVsbCE9KHQ9dGhpcy5vcHRpb25zLnRhYlNpemUpP3Q6NCx7c3RhdGU6cn09ZSx7c2VsZWN0aW9uOm99PXIseyRmcm9tOmksZW1wdHk6c309bztpZihpLnBhcmVudC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO2NvbnN0IGw9IiAiLnJlcGVhdChuKTtyZXR1cm4gcz9lLmNvbW1hbmRzLmluc2VydENvbnRlbnQobCk6ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT57Y29uc3R7ZnJvbTp0LHRvOm59PW8saT1yLmRvYy50ZXh0QmV0d2Vlbih0LG4sIlxuIiwiXG4iKS5zcGxpdCgiXG4iKS5tYXAoZT0+bCtlKS5qb2luKCJcbiIpO3JldHVybiBlLnJlcGxhY2VXaXRoKHQsbixyLnNjaGVtYS50ZXh0KGkpKSwhMH0pfSwiU2hpZnQtVGFiIjooe2VkaXRvcjplfSk9Pnt2YXIgdDtpZighdGhpcy5vcHRpb25zLmVuYWJsZVRhYkluZGVudGF0aW9uKXJldHVybiExO2NvbnN0IG49bnVsbCE9KHQ9dGhpcy5vcHRpb25zLnRhYlNpemUpP3Q6NCx7c3RhdGU6cn09ZSx7c2VsZWN0aW9uOm99PXIseyRmcm9tOmksZW1wdHk6c309bztyZXR1cm4gaS5wYXJlbnQudHlwZT09PXRoaXMudHlwZSYmKHM/ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT57dmFyIHQ7Y29uc3R7cG9zOm99PWkscz1pLnN0YXJ0KCksbD1pLmVuZCgpLGE9ci5kb2MudGV4dEJldHdlZW4ocyxsLCJcbiIsIlxuIikuc3BsaXQoIlxuIik7bGV0IGM9MCxkPTA7Y29uc3QgcD1vLXM7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0xKXtpZihkK2FbZV0ubGVuZ3RoPj1wKXtjPWU7YnJlYWt9ZCs9YVtlXS5sZW5ndGgrMX1jb25zdCBmPShudWxsPT0odD1hW2NdLm1hdGNoKC9eICovKSk/dm9pZCAwOnRbMF0pfHwiIixtPU1hdGgubWluKGYubGVuZ3RoLG4pO2lmKDA9PT1tKXJldHVybiEwO2xldCB5PXM7Zm9yKGxldCBlPTA7ZTxjO2UrPTEpeSs9YVtlXS5sZW5ndGgrMTtlLmRlbGV0ZSh5LHkrbSk7cmV0dXJuIG8teTw9bSYmZS5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5jcmVhdGUoZS5kb2MseSkpLCEwfSk6ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT57Y29uc3R7ZnJvbTp0LHRvOml9PW8scz1yLmRvYy50ZXh0QmV0d2Vlbih0LGksIlxuIiwiXG4iKS5zcGxpdCgiXG4iKS5tYXAoZT0+e3ZhciB0O2NvbnN0IHI9KG51bGw9PSh0PWUubWF0Y2goL14gKi8pKT92b2lkIDA6dFswXSl8fCIiLG89TWF0aC5taW4oci5sZW5ndGgsbik7cmV0dXJuIGUuc2xpY2Uobyl9KS5qb2luKCJcbiIpO3JldHVybiBlLnJlcGxhY2VXaXRoKHQsaSxyLnNjaGVtYS50ZXh0KHMpKSwhMH0pKX0sRW50ZXI6KHtlZGl0b3I6ZX0pPT57aWYoIXRoaXMub3B0aW9ucy5leGl0T25UcmlwbGVFbnRlcilyZXR1cm4hMTtjb25zdHtzdGF0ZTp0fT1lLHtzZWxlY3Rpb246bn09dCx7JGZyb206cixlbXB0eTpvfT1uO2lmKCFvfHxyLnBhcmVudC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO2NvbnN0IGk9ci5wYXJlbnRPZmZzZXQ9PT1yLnBhcmVudC5ub2RlU2l6ZS0yLHM9ci5wYXJlbnQudGV4dENvbnRlbnQuZW5kc1dpdGgoIlxuXG4iKTtyZXR1cm4hKCFpfHwhcykmJmUuY2hhaW4oKS5jb21tYW5kKCh7dHI6ZX0pPT4oZS5kZWxldGUoci5wb3MtMixyLnBvcyksITApKS5leGl0Q29kZSgpLnJ1bigpfSxBcnJvd0Rvd246KHtlZGl0b3I6ZX0pPT57aWYoIXRoaXMub3B0aW9ucy5leGl0T25BcnJvd0Rvd24pcmV0dXJuITE7Y29uc3R7c3RhdGU6dH09ZSx7c2VsZWN0aW9uOm4sZG9jOnJ9PXQseyRmcm9tOm8sZW1wdHk6aX09bjtpZighaXx8by5wYXJlbnQudHlwZSE9PXRoaXMudHlwZSlyZXR1cm4hMTtpZighKG8ucGFyZW50T2Zmc2V0PT09by5wYXJlbnQubm9kZVNpemUtMikpcmV0dXJuITE7Y29uc3Qgcz1vLmFmdGVyKCk7aWYodm9pZCAwPT09cylyZXR1cm4hMTtyZXR1cm4gci5ub2RlQXQocyk/ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT4oZS5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uLm5lYXIoci5yZXNvbHZlKHMpKSksITApKTplLmNvbW1hbmRzLmV4aXRDb2RlKCl9fX0sYWRkSW5wdXRSdWxlcygpe3JldHVyblt0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKHtmaW5kOlpyLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtsYW5ndWFnZTplWzFdfSl9KSx0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKHtmaW5kOllyLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtsYW5ndWFnZTplWzFdfSl9KV19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgiY29kZUJsb2NrVlNDb2RlSGFuZGxlciIpLHByb3BzOntoYW5kbGVQYXN0ZTooZSx0KT0+e2lmKCF0LmNsaXBib2FyZERhdGEpcmV0dXJuITE7aWYodGhpcy5lZGl0b3IuaXNBY3RpdmUodGhpcy50eXBlLm5hbWUpKXJldHVybiExO2NvbnN0IG49dC5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSxyPXQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ2c2NvZGUtZWRpdG9yLWRhdGEiKSxvPXI/SlNPTi5wYXJzZShyKTp2b2lkIDAsaT1udWxsPT1vP3ZvaWQgMDpvLm1vZGU7aWYoIW58fCFpKXJldHVybiExO2NvbnN0e3RyOnMsc2NoZW1hOmx9PWUuc3RhdGUsYT1sLnRleHQobi5yZXBsYWNlKC9cclxuPy9nLCJcbiIpKTtyZXR1cm4gcy5yZXBsYWNlU2VsZWN0aW9uV2l0aCh0aGlzLnR5cGUuY3JlYXRlKHtsYW5ndWFnZTppfSxhKSkscy5zZWxlY3Rpb24uJGZyb20ucGFyZW50LnR5cGUhPT10aGlzLnR5cGUmJnMuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24ubmVhcihzLmRvYy5yZXNvbHZlKE1hdGgubWF4KDAscy5zZWxlY3Rpb24uZnJvbS0yKSkpKSxzLnNldE1ldGEoInBhc3RlIiwhMCksZS5kaXNwYXRjaChzKSwhMH19fSldfX0pLHRvPW9uLmNyZWF0ZSh7bmFtZToiZG9jIix0b3BOb2RlOiEwLGNvbnRlbnQ6ImJsb2NrKyIscmVuZGVyTWFya2Rvd246KGUsdCk9PmUuY29udGVudD90LnJlbmRlckNoaWxkcmVuKGUuY29udGVudCwiXG5cbiIpOiIifSksbm89b24uY3JlYXRlKHtuYW1lOiJoYXJkQnJlYWsiLG1hcmtkb3duVG9rZW5OYW1lOiJiciIsYWRkT3B0aW9uczooKT0+KHtrZWVwTWFya3M6ITAsSFRNTEF0dHJpYnV0ZXM6e319KSxpbmxpbmU6ITAsZ3JvdXA6ImlubGluZSIsc2VsZWN0YWJsZTohMSxsaW5lYnJlYWtSZXBsYWNlbWVudDohMCxwYXJzZUhUTUw6KCk9Plt7dGFnOiJiciJ9XSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuWyJiciIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKV19LHJlbmRlclRleHQ6KCk9PiJcbiIscmVuZGVyTWFya2Rvd246KCk9PiIgIFxuIixwYXJzZU1hcmtkb3duOigpPT4oe3R5cGU6ImhhcmRCcmVhayJ9KSxhZGRDb21tYW5kcygpe3JldHVybntzZXRIYXJkQnJlYWs6KCk9Pih7Y29tbWFuZHM6ZSxjaGFpbjp0LHN0YXRlOm4sZWRpdG9yOnJ9KT0+ZS5maXJzdChbKCk9PmUuZXhpdENvZGUoKSwoKT0+ZS5jb21tYW5kKCgpPT57Y29uc3R7c2VsZWN0aW9uOmUsc3RvcmVkTWFya3M6b309bjtpZihlLiRmcm9tLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiExO2NvbnN0e2tlZXBNYXJrczppfT10aGlzLm9wdGlvbnMse3NwbGl0dGFibGVNYXJrczpzfT1yLmV4dGVuc2lvbk1hbmFnZXIsbD1vfHxlLiR0by5wYXJlbnRPZmZzZXQmJmUuJGZyb20ubWFya3MoKTtyZXR1cm4gdCgpLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSkuY29tbWFuZCgoe3RyOmUsZGlzcGF0Y2g6dH0pPT57aWYodCYmbCYmaSl7Y29uc3QgdD1sLmZpbHRlcihlPT5zLmluY2x1ZGVzKGUudHlwZS5uYW1lKSk7ZS5lbnN1cmVNYXJrcyh0KX1yZXR1cm4hMH0pLnJ1bigpfSldKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtRW50ZXIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZXRIYXJkQnJlYWsoKSwiU2hpZnQtRW50ZXIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZXRIYXJkQnJlYWsoKX19fSkscm89b24uY3JlYXRlKHtuYW1lOiJoZWFkaW5nIixhZGRPcHRpb25zOigpPT4oe2xldmVsczpbMSwyLDMsNCw1LDZdLEhUTUxBdHRyaWJ1dGVzOnt9fSksY29udGVudDoiaW5saW5lKiIsZ3JvdXA6ImJsb2NrIixkZWZpbmluZzohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe2xldmVsOntkZWZhdWx0OjEscmVuZGVyZWQ6ITF9fSkscGFyc2VIVE1MKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMubWFwKGU9Pih7dGFnOmBoJHtlfWAsYXR0cnM6e2xldmVsOmV9fSkpfSxyZW5kZXJIVE1MKHtub2RlOmUsSFRNTEF0dHJpYnV0ZXM6dH0pe3JldHVybltgaCR7dGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhlLmF0dHJzLmxldmVsKT9lLmF0dHJzLmxldmVsOnRoaXMub3B0aW9ucy5sZXZlbHNbMF19YCxtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQpLDBdfSxwYXJzZU1hcmtkb3duOihlLHQpPT50LmNyZWF0ZU5vZGUoImhlYWRpbmciLHtsZXZlbDplLmRlcHRofHwxfSx0LnBhcnNlSW5saW5lKGUudG9rZW5zfHxbXSkpLHJlbmRlck1hcmtkb3duOihlLHQpPT57dmFyIG47Y29uc3Qgcj0obnVsbD09KG49ZS5hdHRycyk/dm9pZCAwOm4ubGV2ZWwpP3BhcnNlSW50KGUuYXR0cnMubGV2ZWwsMTApOjEsbz0iIyIucmVwZWF0KHIpO3JldHVybiBlLmNvbnRlbnQ/YCR7b30gJHt0LnJlbmRlckNoaWxkcmVuKGUuY29udGVudCl9YDoiIn0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SGVhZGluZzplPT4oe2NvbW1hbmRzOnR9KT0+ISF0aGlzLm9wdGlvbnMubGV2ZWxzLmluY2x1ZGVzKGUubGV2ZWwpJiZ0LnNldE5vZGUodGhpcy5uYW1lLGUpLHRvZ2dsZUhlYWRpbmc6ZT0+KHtjb21tYW5kczp0fSk9PiEhdGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhlLmxldmVsKSYmdC50b2dnbGVOb2RlKHRoaXMubmFtZSwicGFyYWdyYXBoIixlKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMucmVkdWNlKChlLHQpPT4oey4uLmUsW2BNb2QtQWx0LSR7dH1gXTooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSGVhZGluZyh7bGV2ZWw6dH0pfSkse30pfSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMubWFwKGU9PnRleHRibG9ja1R5cGVJbnB1dFJ1bGUoe2ZpbmQ6bmV3IFJlZ0V4cChgXigjeyR7TWF0aC5taW4oLi4udGhpcy5vcHRpb25zLmxldmVscyl9LCR7ZX19KVxccyRgKSx0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOntsZXZlbDplfX0pKX19KSxvbz0vKD86XnxccykoXCooPyFccytcKikoKD86W14qXSspKVwqKD8hXHMrXCopKSQvLGlvPS8oPzpefFxzKShcKig/IVxzK1wqKSgoPzpbXipdKykpXCooPyFccytcKikpL2csc289Lyg/Ol58XHMpKF8oPyFccytfKSgoPzpbXl9dKykpXyg/IVxzK18pKSQvLGxvPS8oPzpefFxzKShfKD8hXHMrXykoKD86W15fXSspKV8oPyFccytfKSkvZyxhbz1GdC5jcmVhdGUoe25hbWU6Iml0YWxpYyIsYWRkT3B0aW9uczooKT0+KHtIVE1MQXR0cmlidXRlczp7fX0pLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJlbSJ9LHt0YWc6ImkiLGdldEF0dHJzOmU9PiJub3JtYWwiIT09ZS5zdHlsZS5mb250U3R5bGUmJm51bGx9LHtzdHlsZToiZm9udC1zdHlsZT1ub3JtYWwiLGNsZWFyTWFyazplPT5lLnR5cGUubmFtZT09PXRoaXMubmFtZX0se3N0eWxlOiJmb250LXN0eWxlPWl0YWxpYyJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsiZW0iLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEl0YWxpYzooKT0+KHtjb21tYW5kczplfSk9PmUuc2V0TWFyayh0aGlzLm5hbWUpLHRvZ2dsZUl0YWxpYzooKT0+KHtjb21tYW5kczplfSk9PmUudG9nZ2xlTWFyayh0aGlzLm5hbWUpLHVuc2V0SXRhbGljOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS51bnNldE1hcmsodGhpcy5uYW1lKX19LG1hcmtkb3duVG9rZW5OYW1lOiJlbSIscGFyc2VNYXJrZG93bjooZSx0KT0+dC5hcHBseU1hcmsoIml0YWxpYyIsdC5wYXJzZUlubGluZShlLnRva2Vuc3x8W10pKSxtYXJrZG93bk9wdGlvbnM6e2h0bWxSZW9wZW46e29wZW46IjxlbT4iLGNsb3NlOiI8L2VtPiJ9fSxyZW5kZXJNYXJrZG93bjooZSx0KT0+YCoke3QucmVuZGVyQ2hpbGRyZW4oZSl9KmAsYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1pIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSXRhbGljKCksIk1vZC1JIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSXRhbGljKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6b28sdHlwZTp0aGlzLnR5cGV9KSxtYXJrSW5wdXRSdWxlKHtmaW5kOnNvLHR5cGU6dGhpcy50eXBlfSldfSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW21hcmtQYXN0ZVJ1bGUoe2ZpbmQ6aW8sdHlwZTp0aGlzLnR5cGV9KSxtYXJrUGFzdGVSdWxlKHtmaW5kOmxvLHR5cGU6dGhpcy50eXBlfSldfX0pO2NvbnN0IGNvPSJudW1lcmljIixwbz0iYXNjaWkiLGhvPSJhbHBoYSIsdW89ImFzY2lpbnVtZXJpYyIsZm89ImFscGhhbnVtZXJpYyIsbW89ImRvbWFpbiIsZ289ImVtb2ppIix5bz0ic2NoZW1lIixrbz0ic2xhc2hzY2hlbWUiLHdvPSJ3aGl0ZXNwYWNlIjtmdW5jdGlvbiByZWdpc3Rlckdyb3VwKGUsdCl7cmV0dXJuIGUgaW4gdHx8KHRbZV09W10pLHRbZV19ZnVuY3Rpb24gYWRkVG9Hcm91cHMoZSx0LG4pe3RbY29dJiYodFt1b109ITAsdFtmb109ITApLHRbcG9dJiYodFt1b109ITAsdFtob109ITApLHRbdW9dJiYodFtmb109ITApLHRbaG9dJiYodFtmb109ITApLHRbZm9dJiYodFttb109ITApLHRbZ29dJiYodFttb109ITApO2Zvcihjb25zdCByIGluIHQpe2NvbnN0IHQ9cmVnaXN0ZXJHcm91cChyLG4pO3QuaW5kZXhPZihlKTwwJiZ0LnB1c2goZSl9fWZ1bmN0aW9uIFN0YXRlKGU9bnVsbCl7dGhpcy5qPXt9LHRoaXMuanI9W10sdGhpcy5qZD1udWxsLHRoaXMudD1lfVN0YXRlLmdyb3Vwcz17fSxTdGF0ZS5wcm90b3R5cGU9e2FjY2VwdHMoKXtyZXR1cm4hIXRoaXMudH0sZ28oZSl7Y29uc3QgdD10aGlzLG49dC5qW2VdO2lmKG4pcmV0dXJuIG47Zm9yKGxldCBuPTA7bjx0LmpyLmxlbmd0aDtuKyspe2NvbnN0IHI9dC5qcltuXVswXSxvPXQuanJbbl1bMV07aWYobyYmci50ZXN0KGUpKXJldHVybiBvfXJldHVybiB0LmpkfSxoYXMoZSx0PSExKXtyZXR1cm4gdD9lIGluIHRoaXMuajohIXRoaXMuZ28oZSl9LHRhKGUsdCxuLHIpe2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXRoaXMudHQoZVtvXSx0LG4scil9LHRyKGUsdCxuLHIpe2xldCBvO3JldHVybiByPXJ8fFN0YXRlLmdyb3Vwcyx0JiZ0Lmo/bz10OihvPW5ldyBTdGF0ZSh0KSxuJiZyJiZhZGRUb0dyb3Vwcyh0LG4scikpLHRoaXMuanIucHVzaChbZSxvXSksb30sdHMoZSx0LG4scil7bGV0IG89dGhpcztjb25zdCBpPWUubGVuZ3RoO2lmKCFpKXJldHVybiBvO2ZvcihsZXQgdD0wO3Q8aS0xO3QrKylvPW8udHQoZVt0XSk7cmV0dXJuIG8udHQoZVtpLTFdLHQsbixyKX0sdHQoZSx0LG4scil7cj1yfHxTdGF0ZS5ncm91cHM7Y29uc3Qgbz10aGlzO2lmKHQmJnQuailyZXR1cm4gby5qW2VdPXQsdDtjb25zdCBpPXQ7bGV0IHMsbD1vLmdvKGUpO2lmKGw/KHM9bmV3IFN0YXRlLE9iamVjdC5hc3NpZ24ocy5qLGwuaikscy5qci5wdXNoLmFwcGx5KHMuanIsbC5qcikscy5qZD1sLmpkLHMudD1sLnQpOnM9bmV3IFN0YXRlLGkpe2lmKHIpaWYocy50JiYic3RyaW5nIj09dHlwZW9mIHMudCl7Y29uc3QgZT1PYmplY3QuYXNzaWduKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiB0KXRbcl0uaW5kZXhPZihlKT49MCYmKG5bcl09ITApO3JldHVybiBufShzLnQsciksbik7YWRkVG9Hcm91cHMoaSxlLHIpfWVsc2UgbiYmYWRkVG9Hcm91cHMoaSxuLHIpO3MudD1pfXJldHVybiBvLmpbZV09cyxzfX07Y29uc3QgdGE9KGUsdCxuLHIsbyk9PmUudGEodCxuLHIsbyksdHI9KGUsdCxuLHIsbyk9PmUudHIodCxuLHIsbyksdHM9KGUsdCxuLHIsbyk9PmUudHModCxuLHIsbyksdHQ9KGUsdCxuLHIsbyk9PmUudHQodCxuLHIsbyksYm89IldPUkQiLHZvPSJVV09SRCIseG89IkFTQ0lJTlVNRVJJQ0FMIixTbz0iQUxQSEFOVU1FUklDQUwiLFRvPSJMT0NBTEhPU1QiLENvPSJUTEQiLE1vPSJVVExEIixBbz0iU0NIRU1FIixPbz0iU0xBU0hfU0NIRU1FIixFbz0iTlVNIixObz0iV1MiLFJvPSJOTCIsRG89Ik9QRU5CUkFDRSIsUG89IkNMT1NFQlJBQ0UiLElvPSJPUEVOQlJBQ0tFVCIsJG89IkNMT1NFQlJBQ0tFVCIsTG89Ik9QRU5QQVJFTiIsem89IkNMT1NFUEFSRU4iLEJvPSJPUEVOQU5HTEVCUkFDS0VUIixGbz0iQ0xPU0VBTkdMRUJSQUNLRVQiLEhvPSJGVUxMV0lEVEhMRUZUUEFSRU4iLFZvPSJGVUxMV0lEVEhSSUdIVFBBUkVOIixfbz0iTEVGVENPUk5FUkJSQUNLRVQiLGpvPSJSSUdIVENPUk5FUkJSQUNLRVQiLHFvPSJMRUZUV0hJVEVDT1JORVJCUkFDS0VUIixVbz0iUklHSFRXSElURUNPUk5FUkJSQUNLRVQiLFdvPSJGVUxMV0lEVEhMRVNTVEhBTiIsS289IkZVTExXSURUSEdSRUFURVJUSEFOIixKbz0iQU1QRVJTQU5EIixHbz0iQVBPU1RST1BIRSIsWG89IkFTVEVSSVNLIixRbz0iQVQiLFpvPSJCQUNLU0xBU0giLFlvPSJCQUNLVElDSyIsZWk9IkNBUkVUIix0aT0iQ09MT04iLG5pPSJDT01NQSIscmk9IkRPTExBUiIsb2k9IkRPVCIsaWk9IkVRVUFMUyIsc2k9IkVYQ0xBTUFUSU9OIixsaT0iSFlQSEVOIixhaT0iUEVSQ0VOVCIsY2k9IlBJUEUiLGRpPSJQTFVTIixwaT0iUE9VTkQiLGhpPSJRVUVSWSIsdWk9IlFVT1RFIixmaT0iRlVMTFdJRFRITUlERExFRE9UIixtaT0iU0VNSSIsZ2k9IlNMQVNIIix5aT0iVElMREUiLGtpPSJVTkRFUlNDT1JFIix3aT0iRU1PSkkiLGJpPSJTWU0iO3ZhciB2aT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBTFBIQU5VTUVSSUNBTDpTbyxBTVBFUlNBTkQ6Sm8sQVBPU1RST1BIRTpHbyxBU0NJSU5VTUVSSUNBTDp4byxBU1RFUklTSzpYbyxBVDpRbyxCQUNLU0xBU0g6Wm8sQkFDS1RJQ0s6WW8sQ0FSRVQ6ZWksQ0xPU0VBTkdMRUJSQUNLRVQ6Rm8sQ0xPU0VCUkFDRTpQbyxDTE9TRUJSQUNLRVQ6JG8sQ0xPU0VQQVJFTjp6byxDT0xPTjp0aSxDT01NQTpuaSxET0xMQVI6cmksRE9UOm9pLEVNT0pJOndpLEVRVUFMUzppaSxFWENMQU1BVElPTjpzaSxGVUxMV0lEVEhHUkVBVEVSVEhBTjpLbyxGVUxMV0lEVEhMRUZUUEFSRU46SG8sRlVMTFdJRFRITEVTU1RIQU46V28sRlVMTFdJRFRITUlERExFRE9UOmZpLEZVTExXSURUSFJJR0hUUEFSRU46Vm8sSFlQSEVOOmxpLExFRlRDT1JORVJCUkFDS0VUOl9vLExFRlRXSElURUNPUk5FUkJSQUNLRVQ6cW8sTE9DQUxIT1NUOlRvLE5MOlJvLE5VTTpFbyxPUEVOQU5HTEVCUkFDS0VUOkJvLE9QRU5CUkFDRTpEbyxPUEVOQlJBQ0tFVDpJbyxPUEVOUEFSRU46TG8sUEVSQ0VOVDphaSxQSVBFOmNpLFBMVVM6ZGksUE9VTkQ6cGksUVVFUlk6aGksUVVPVEU6dWksUklHSFRDT1JORVJCUkFDS0VUOmpvLFJJR0hUV0hJVEVDT1JORVJCUkFDS0VUOlVvLFNDSEVNRTpBbyxTRU1JOm1pLFNMQVNIOmdpLFNMQVNIX1NDSEVNRTpPbyxTWU06YmksVElMREU6eWksVExEOkNvLFVOREVSU0NPUkU6a2ksVVRMRDpNbyxVV09SRDp2byxXT1JEOmJvLFdTOk5vfSk7Y29uc3QgeGk9L1thLXpdLyxTaT0vXHB7TH0vdSxUaT0vXHB7RW1vaml9L3UsQ2k9L1xkLyxNaT0vXHMvO2xldCBBaT1udWxsLE9pPW51bGw7ZnVuY3Rpb24gcnVuJDEoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9W10sbj1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxuOyl7bGV0IG8saT1lLmNoYXJDb2RlQXQocikscz1pPDU1Mjk2fHxpPjU2MzE5fHxyKzE9PT1ufHwobz1lLmNoYXJDb2RlQXQocisxKSk8NTYzMjB8fG8+NTczNDM/ZVtyXTplLnNsaWNlKHIscisyKTt0LnB1c2gocykscis9cy5sZW5ndGh9cmV0dXJuIHR9KHQucmVwbGFjZSgvW0EtWl0vZyxlPT5lLnRvTG93ZXJDYXNlKCkpKSxyPW4ubGVuZ3RoLG89W107bGV0IGk9MCxzPTA7Zm9yKDtzPHI7KXtsZXQgbD1lLGE9bnVsbCxjPTAsZD1udWxsLHA9LTEsZj0tMTtmb3IoO3M8ciYmKGE9bC5nbyhuW3NdKSk7KWw9YSxsLmFjY2VwdHMoKT8ocD0wLGY9MCxkPWwpOnA+PTAmJihwKz1uW3NdLmxlbmd0aCxmKyspLGMrPW5bc10ubGVuZ3RoLGkrPW5bc10ubGVuZ3RoLHMrKztpLT1wLHMtPWYsYy09cCxvLnB1c2goe3Q6ZC50LHY6dC5zbGljZShpLWMsaSksczppLWMsZTppfSl9cmV0dXJuIG99ZnVuY3Rpb24gZmFzdHRzKGUsdCxuLHIsbyl7bGV0IGk7Y29uc3Qgcz10Lmxlbmd0aDtmb3IobGV0IG49MDtuPHMtMTtuKyspe2NvbnN0IHM9dFtuXTtlLmpbc10/aT1lLmpbc106KGk9bmV3IFN0YXRlKHIpLGkuanI9by5zbGljZSgpLGUualtzXT1pKSxlPWl9cmV0dXJuIGk9bmV3IFN0YXRlKG4pLGkuanI9by5zbGljZSgpLGUualt0W3MtMV1dPWksaX1mdW5jdGlvbiBkZWNvZGVUbGRzKGUpe2NvbnN0IHQ9W10sbj1bXTtsZXQgcj0wO2Zvcig7cjxlLmxlbmd0aDspe2xldCBvPTA7Zm9yKDsiMDEyMzQ1Njc4OSIuaW5kZXhPZihlW3Irb10pPj0wOylvKys7aWYobz4wKXt0LnB1c2gobi5qb2luKCIiKSk7Zm9yKGxldCB0PXBhcnNlSW50KGUuc3Vic3RyaW5nKHIscitvKSwxMCk7dD4wO3QtLSluLnBvcCgpO3IrPW99ZWxzZSBuLnB1c2goZVtyXSkscisrfXJldHVybiB0fWNvbnN0IEVpPXtkZWZhdWx0UHJvdG9jb2w6Imh0dHAiLGV2ZW50czpudWxsLGZvcm1hdDpub29wLGZvcm1hdEhyZWY6bm9vcCxubDJicjohMSx0YWdOYW1lOiJhIix0YXJnZXQ6bnVsbCxyZWw6bnVsbCx2YWxpZGF0ZTohMCx0cnVuY2F0ZToxLzAsY2xhc3NOYW1lOm51bGwsYXR0cmlidXRlczpudWxsLGlnbm9yZVRhZ3M6W10scmVuZGVyOm51bGx9O2Z1bmN0aW9uIE9wdGlvbnMoZSx0PW51bGwpe2xldCBuPU9iamVjdC5hc3NpZ24oe30sRWkpO2UmJihuPU9iamVjdC5hc3NpZ24obixlIGluc3RhbmNlb2YgT3B0aW9ucz9lLm86ZSkpO2NvbnN0IHI9bi5pZ25vcmVUYWdzLG89W107Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspby5wdXNoKHJbZV0udG9VcHBlckNhc2UoKSk7dGhpcy5vPW4sdCYmKHRoaXMuZGVmYXVsdFJlbmRlcj10KSx0aGlzLmlnbm9yZVRhZ3M9b31mdW5jdGlvbiBub29wKGUpe3JldHVybiBlfWZ1bmN0aW9uIE11bHRpVG9rZW4oZSx0KXt0aGlzLnQ9InRva2VuIix0aGlzLnY9ZSx0aGlzLnRrPXR9ZnVuY3Rpb24gY3JlYXRlVG9rZW5DbGFzcyhlLHQpe2NsYXNzIFRva2VuIGV4dGVuZHMgTXVsdGlUb2tlbntjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsbiksdGhpcy50PWV9fWZvcihjb25zdCBlIGluIHQpVG9rZW4ucHJvdG90eXBlW2VdPXRbZV07cmV0dXJuIFRva2VuLnQ9ZSxUb2tlbn1PcHRpb25zLnByb3RvdHlwZT17bzpFaSxpZ25vcmVUYWdzOltdLGRlZmF1bHRSZW5kZXI6ZT0+ZSxjaGVjayhlKXtyZXR1cm4gdGhpcy5nZXQoInZhbGlkYXRlIixlLnRvU3RyaW5nKCksZSl9LGdldChlLHQsbil7Y29uc3Qgcj1udWxsIT10O2xldCBvPXRoaXMub1tlXTtyZXR1cm4gbz8oIm9iamVjdCI9PXR5cGVvZiBvPyhvPW4udCBpbiBvP29bbi50XTpFaVtlXSwiZnVuY3Rpb24iPT10eXBlb2YgbyYmciYmKG89byh0LG4pKSk6ImZ1bmN0aW9uIj09dHlwZW9mIG8mJnImJihvPW8odCxuLnQsbikpLG8pOm99LGdldE9iaihlLHQsbil7bGV0IHI9dGhpcy5vW2VdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiZudWxsIT10JiYocj1yKHQsbi50LG4pKSxyfSxyZW5kZXIoZSl7Y29uc3QgdD1lLnJlbmRlcih0aGlzKTtyZXR1cm4odGhpcy5nZXQoInJlbmRlciIsbnVsbCxlKXx8dGhpcy5kZWZhdWx0UmVuZGVyKSh0LGUudCxlKX19LE11bHRpVG9rZW4ucHJvdG90eXBlPXtpc0xpbms6ITEsdG9TdHJpbmcoKXtyZXR1cm4gdGhpcy52fSx0b0hyZWYoZSl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdG9Gb3JtYXR0ZWRTdHJpbmcoZSl7Y29uc3QgdD10aGlzLnRvU3RyaW5nKCksbj1lLmdldCgidHJ1bmNhdGUiLHQsdGhpcykscj1lLmdldCgiZm9ybWF0Iix0LHRoaXMpO3JldHVybiBuJiZyLmxlbmd0aD5uP3Iuc3Vic3RyaW5nKDAsbikrIuKApiI6cn0sdG9Gb3JtYXR0ZWRIcmVmKGUpe3JldHVybiBlLmdldCgiZm9ybWF0SHJlZiIsdGhpcy50b0hyZWYoZS5nZXQoImRlZmF1bHRQcm90b2NvbCIpKSx0aGlzKX0sc3RhcnRJbmRleCgpe3JldHVybiB0aGlzLnRrWzBdLnN9LGVuZEluZGV4KCl7cmV0dXJuIHRoaXMudGtbdGhpcy50ay5sZW5ndGgtMV0uZX0sdG9PYmplY3QoZT1FaS5kZWZhdWx0UHJvdG9jb2wpe3JldHVybnt0eXBlOnRoaXMudCx2YWx1ZTp0aGlzLnRvU3RyaW5nKCksaXNMaW5rOnRoaXMuaXNMaW5rLGhyZWY6dGhpcy50b0hyZWYoZSksc3RhcnQ6dGhpcy5zdGFydEluZGV4KCksZW5kOnRoaXMuZW5kSW5kZXgoKX19LHRvRm9ybWF0dGVkT2JqZWN0KGUpe3JldHVybnt0eXBlOnRoaXMudCx2YWx1ZTp0aGlzLnRvRm9ybWF0dGVkU3RyaW5nKGUpLGlzTGluazp0aGlzLmlzTGluayxocmVmOnRoaXMudG9Gb3JtYXR0ZWRIcmVmKGUpLHN0YXJ0OnRoaXMuc3RhcnRJbmRleCgpLGVuZDp0aGlzLmVuZEluZGV4KCl9fSx2YWxpZGF0ZShlKXtyZXR1cm4gZS5nZXQoInZhbGlkYXRlIix0aGlzLnRvU3RyaW5nKCksdGhpcyl9LHJlbmRlcihlKXtjb25zdCB0PXRoaXMsbj10aGlzLnRvSHJlZihlLmdldCgiZGVmYXVsdFByb3RvY29sIikpLHI9ZS5nZXQoImZvcm1hdEhyZWYiLG4sdGhpcyksbz1lLmdldCgidGFnTmFtZSIsbix0KSxpPXRoaXMudG9Gb3JtYXR0ZWRTdHJpbmcoZSkscz17fSxsPWUuZ2V0KCJjbGFzc05hbWUiLG4sdCksYT1lLmdldCgidGFyZ2V0IixuLHQpLGM9ZS5nZXQoInJlbCIsbix0KSxkPWUuZ2V0T2JqKCJhdHRyaWJ1dGVzIixuLHQpLHA9ZS5nZXRPYmooImV2ZW50cyIsbix0KTtyZXR1cm4gcy5ocmVmPXIsbCYmKHMuY2xhc3M9bCksYSYmKHMudGFyZ2V0PWEpLGMmJihzLnJlbD1jKSxkJiZPYmplY3QuYXNzaWduKHMsZCkse3RhZ05hbWU6byxhdHRyaWJ1dGVzOnMsY29udGVudDppLGV2ZW50TGlzdGVuZXJzOnB9fX07Y29uc3QgTmk9Y3JlYXRlVG9rZW5DbGFzcygiZW1haWwiLHtpc0xpbms6ITAsdG9IcmVmKCl7cmV0dXJuIm1haWx0bzoiK3RoaXMudG9TdHJpbmcoKX19KSxSaT1jcmVhdGVUb2tlbkNsYXNzKCJ0ZXh0IiksRGk9Y3JlYXRlVG9rZW5DbGFzcygibmwiKSxQaT1jcmVhdGVUb2tlbkNsYXNzKCJ1cmwiLHtpc0xpbms6ITAsdG9IcmVmKGU9RWkuZGVmYXVsdFByb3RvY29sKXtyZXR1cm4gdGhpcy5oYXNQcm90b2NvbCgpP3RoaXMudjpgJHtlfTovLyR7dGhpcy52fWB9LGhhc1Byb3RvY29sKCl7Y29uc3QgZT10aGlzLnRrO3JldHVybiBlLmxlbmd0aD49MiYmZVswXS50IT09VG8mJmVbMV0udD09PXRpfX0pLG1ha2VTdGF0ZT1lPT5uZXcgU3RhdGUoZSk7ZnVuY3Rpb24gaW5pdE11bHRpVG9rZW4oZSx0LG4pe2NvbnN0IHI9blswXS5zLG89bltuLmxlbmd0aC0xXS5lO3JldHVybiBuZXcgZSh0LnNsaWNlKHIsbyksbil9Y29uc3QgSWk9InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlJiZjb25zb2xlLndhcm58fCgoKT0+e30pLCRpPXtzY2FubmVyOm51bGwscGFyc2VyOm51bGwsdG9rZW5RdWV1ZTpbXSxwbHVnaW5RdWV1ZTpbXSxjdXN0b21TY2hlbWVzOltdLGluaXRpYWxpemVkOiExfTtmdW5jdGlvbiBpbml0KCl7JGkuc2Nhbm5lcj1mdW5jdGlvbihlPVtdKXtjb25zdCB0PXt9O1N0YXRlLmdyb3Vwcz10O2NvbnN0IG49bmV3IFN0YXRlO251bGw9PUFpJiYoQWk9ZGVjb2RlVGxkcygiYWFhMXJwM2JiMG90dDN2aWU0YzFsZTJvZ2FkbzV1ZGhhYmk3YzBhZGVteTVjZW50dXJlNm91bnRhbnQwczlvMXRvcjRkMHMxdWx0NGUwZzFybzJ0bmE0ZjBsMXJpY2E1ZzBha2hhbjVlbmN5NWkwZzFyYnVzM2ZvcmNlNXRlbDVrZG4zbDBpYmFiYTRwYXk0bGZpbmFuejZzdGF0ZTV5MnNhY2UzdG9tNW0wYXpvbjRlcmljYW5leHByZXNzN2ZhbWlseTExeDJmYW0zaWNhM3N0ZXJkYW04bmFseXRpY3M3ZHJvaWQ1cXVhbjR6Mm8wbDJwYXJ0bWVudHM4cDBsZTRxMHVhcmVsbGU4cjBhYjFtY280Y2hpM215MnBhMnQwZTNzMGRhMmlhMnNvY2lhdGVzOXQwaGxldGE1dG9ybmV5N3UwY3Rpb241ZGkwYmxlM28zc3Bvc3Q1dGhvcjNvMHM0dzBzMngwYTJ6MHVyZTViYTBieTJpZHUzbmFtZXg0ZDFrMnIwY2Vsb25hNWxheWNhcmQ0czVlZm9vdDVnYWluczZzZWJhbGw1a2V0YmFsbDh1aGF1czV5ZXJuNWIwYzF0MXZhM2NnMW4yZDFlMGF0czJ1dHk0ZXIycmxpbjRzdDBidXk1dDJmMWcxaDBhcnRpNWkwYmxlM2Qxa2UybmcwbzNvMXoyajFsYWNrMGZyaWRheTlvY2tidXN0ZXI4ZzFvbWJlcmc3dWUzbTBzMXcybjBwcGFyaWJhczlvMGF0czNlaHJpbmdlcjhmYTJtMW5kMm8wazBpbmc1c2NoMnRpazJvbjR0MXV0aXF1ZTZ4MnIwYWRlc2NvNmlkZ2VzdG9uZTlvYWR3YXk1a2VyM3RoZXI1dXNzZWxzN3MxdDF1aWxkMGVyczZzaW5lc3M2eTF6ejN2MXcxeTF6MGgzY2EwYjFmZTJsMGwxdmlua2xlaW45bTBlcmEzcDJub24zcGV0b3duNWl0YWwwb25lOHIwYXZhbjRkczJlMGVyMHM0czJzYTFlMWgxaW5vNHQwZXJpbmc1aG9saWM3YmExbjFyZTNjMWQxZW50ZXI0bzFybjNmMGExZDJnMWgwYW5lbDJuZWw0cml0eTRzZTJ0MmVhcDNpbnRhaTVyaXN0bWFzNm9tZTR1cmNoNWkwcHJpYW5pNnJjbGU0c2NvM3RhZGVsNGkwYzJ5M2sxbDBhaW1zNGVhbmluZzZpY2sybmljMXF1ZTZvdGhpbmc1dWQzdWIwbWVkNm0xbjFvMGFjaDNkZXMzZmZlZTRsbGVnZTRvZ25lNW0wbWJhbms0dW5pdHk2cGFueTJyZTN1dGVyNXNlYzRuZG9zM3N0cnVjdGlvbjh1bHRpbmc3dGFjdDNyYWN0b3JzOW9raW5nNGwxcDJyc2ljYTV1bnRyeTRwb24wczRyc2VzNnBhMnIwZWRpdDBjYXJkNHVuaW9uOWlja2V0NW93bjNzMXVpc2UwczZ1MGlzaW5lbGxhOXYxdzF4MXkwbXJ1M291M3oyZGFkMW5jZTN0YTFlMWluZzNzdW40eTJjbGszZHMyZTBhbDBlcjJzM2dyZWU0bGl2ZXJ5NWwxb2l0dGU1dGEzbW9jcmF0Nm50YWwyaXN0NXNpMGduNHYyaGwyaWFtb25kczZldDJnaXRhbDVyZWN0MG9yeTdzY291bnQzdmVyNWgyeTJqMWsxbTFucDJvMGNzMXRvcjRnMW1haW5zNXQxd25sb2FkN3JpdmU0dHYydWJhaTNubG9wNHBvbnQ0cmJhbjV2YWcycjJ6MmVhcnRoM3QyYzBvMmRla2EzdTBjYXRpb244ZTFnMW1haWwzZXJjazVuZXJneTRnaW5lZXIwaW5nOXRlcnByaXNlczEwcHNvbjRxdWlwbWVudDhyMGljc3NvbjZuaTNzMHExdGF0ZTV0MXUwcm92aXNpb244czJ2ZW50czV4Y2hhbmdlNnBlcnQzb3NlZDRyZXNzNXRyYXNwYWNlMTBmYWdlMmlsMXJ3aW5kczZ0aDNtaWx5NG4wczJybTBlcnM1c2hpb240dDNlZGV4M2VkYmFjazZycmFyaTNlcm82aTBkZWxpdHk1bzJsbTJuYWwxbmNlMWlhbDdyZTBzdG9uZTZtZGFsZTZzaDBpbmc1dDBuZXNzNmoxazFsaWNrcjNnaHRzNHIyb3Jpc3Q0d2VyczV5Mm0xbzBvMGQxdGJhbGw2cmQxZXgyc2FsZTR1bTN1bmRhdGlvbjh4MnIwZWUxc2VuaXVzN2wxb2dhbnM0bnRpZXI3dHIydWppdHN1NW4wZDJybml0dXJlN3Rib2w1eWkzZ2EwbDBsZXJ5M28xdXA0bWUwczNwMXJkZW40eTJiMGl6M2QwbjJlMGExbnQwaW5nNW9yZ2U1ZjFnMGVlM2gxaTBmdDBzM3ZlczJpbmc1bDBhc3MzZTFvYmFsMm80bTBhaWwzYmgybzF4Mm4xb2RhZGR5NWxkMHBvaW50NmYybzBkeWVhcjVnMGxlNHAxdDF2MnAxcTFyMGFpbmdlcjVwaGljczV0aXM0ZWVuM2lwZTNvY2VyeTR1cDRzMXQxdTBjY2kzZ2UyaWRlMnRhcnM1cnUzdzF5MmhhaXIybWJ1cmc1bmdvdXQ1dXMzYm8yZGZjMGJhbms3ZWFsdGgwY2FyZThscDFzaW5raTZyZTFtZXM1aXBob3A0c2FtaXRzdTd0YWNoaTV2MmswdDJtMW4xb2NrZXk0bGRpbmdzNWlkYXk1bWVkZXBvdDVnb29kczVzMGVuc2U3bmRhM3JzZTNzcGl0YWw1dDBpbmc1dDBlbHMzbWFpbDV1c2UzdzJyMXNiYzN0MXUwZ2hlczV5YXR0M3VuZGFpN2libTJjYmMyZTF1MmQxZTBlZTNmbTJrYW5vNGwxbTBhbWF0NGRiMm1vMGJpbGllbjluMGMxZHVzdHJpZXM4ZmluaXRpNW8yZzFrMXN0aXR1dGU2dXJhbmNlNGU0dDBlcm5hdGlvbmFsMTB1aXQ0dmVzdG1lbnRzMTBvMXBpcmFuZ2E3cTFyMGlzaDRzMG1haWxpNXQwYW5idWw3dDBhdTJ2M2phZ3VhcjR2YTNjYjJlMGVwMnR6dDN3ZWxyeTZpbzJsbDJtMHAybmoybzBiczF1cmc0dDF5MnAwbW9yZ2FuNnJzM3VlZ29zNG5pcGVyN2thdWZlbjVkZGkzZTBycnlob3RlbHM2cHJvcGVydGllczE0ZmgyZzFoMWkwYTFkczJtMW5kbGU0dGNoZW41d2kzbTFuMW9lbG4zbWF0c3U1c2hlcjVwMG1nMm4ycjBkMWVkM3Vva2dyb3VwOHcxeTBvdG80ejJsYTBjYWl4YTVtYm9yZ2hpbmk4ZXIzbmQwcm92ZXI2eGVzczVzYWxsZTV0MGlubzNyb2JlNXcweWVyNWIxYzFkczJlYXNlM2NsZXJjNWZyYWs0Z2FsMm8yeHVzNGdidDNpMGRsMmZlMGluc3VyYW5jZTlzdHlsZTdnaHRpbmc2a2UybGx5M21pdGVkNG8ybmNvbG40azJ2ZTFpbmc1azFsYzFwMm9hbjBzM2NrZXIzdXMzbDFuZG9uNHR0ZTFvM3ZlM3BsMGZpbmFuY2lhbDExcjFzMXQwZDBhM3UwbmRiZWNrNnhlMXVyeTV2MXkybWEwZHJpZDRpZjFzb240a2V1cDRuMGFnZW1lbnQ3Z28zcDFya2V0MGluZzNzNHJpb3R0NXNoYWxsczd0dGVsNWJhMmMwa2luc2V5N2QxZTBkMGlhM2V0Mmxib3VybmU3bWUxb3JpYWw2bjB1MnJja21zZDdnMWgxaWFtaTNjcm9zb2Z0N2wxbmkxdDJ0MHN1YmlzaGk5azFsMGIxczJtMGEybjFvMGJpMGxlNGRhMmUxaTFtMW5hc2gzZXkyc3RlcjVybW9uM3RnYWdlNnNjb3c0dG8wcmN5Y2xlczl2MGllNHAxcTFyMXMwZDJ0MG4xcjJ1MHNldW0zaWM0djF3MXgxeTF6Mm5hMGIxZ295YTRtZTJ2eTNiYTJjMWUwYzF0MGJhbms0ZmxpeDR3b3JrNXVzdGFyNXcwczJ4dDBkaXJlY3Q3dXM0ZjBsMmcwbzJoazJpMGNvMmtlMW9uM25qYTNzc2FuMXk1bDFvMGtpYTNydG9uNHcwcnV6M3R2NHAxcjBhMXcydHQydTF5YzJ6Mm9iaTFzZXJ2ZXI3ZmZpY2U1a2luYXdhNmxheWFuMGdyb3VwOWxvM20wZWdhNG5lMWcxbDBpbmU1b28ycGVuM3JhY2xlM25nZTRnMGFuaWM1aWdpbnM2c2FrYTR0c3VrYTR0MnZoM3BhMGdlMm5hc29uaWM3cmlzMnMxdG5lcnM0czF5M3kyY2N3M2UwdDJmMGl6ZXI1ZzFoMGFybWFjeTZkMWlsaXBzNW9uZTJ0bzBncmFwaHk2czR5c2lvNWljczF0ZXQydXJlczZkMW4wZzFrMm9uZWVyNXp6YTRrMWwwYWNlMnkwc3RhdGlvbjl1bWJpbmc1czNtMW4wYzJvaGwya2VyM2xpdGllNXJuMnN0M3IwYXhpM2VzczNpbWUzbzBkMHVjdGlvbnM4ZjFncmVzc2l2ZThtbzJwZXJ0aWVzM3k1dGVjdGlvbjh1MGRlbnRpYWw5czF0MXViMncwYzJ5MnFhMXBvbjN1ZWJlYzNzdDVyYWNpbmc0ZGlvNGUwYWQxbGVzdGF0ZTZ0b3IyeTRjaXBlczVkMHN0b25lNXVtYnJlbGxhOWhhYjNpc2UwbjN0MmxpYW5jZTZuMHQwYWxzNXBhaXIzb3J0M3VibGljYW44c3QwYXVyYW50OHZpZXcwczV4cm90aDZpY2gwYXJkbGk2b2gzbDFvMXAybzBja3MzZGVvM2dlcnM0b20zczB2cDN1MGdieTNocjJuMncwZTJ5dWt5dTZzYTBhcmxhbmQ2ZmUwdHk0a3VyYTRsZTFvbjNtc2NsdWI0dW5nNW5kdmlrMGNvcm9tYW50MTJvZmk0cDFybDJzMXZlMnhvM2IwaTFzMmMwYjFoYWVmZmxlcjdtaWR0NG9sYXJzaGlwczhvbDN1bGUzd2FyejVpZW5jZTVvdDNkMWUwYXJjaDN0MmN1cmUxaXR5NmVrMmxlY3Q0bmVyM3J2aWNlczZ2ZW4zdzF4MHkzZnIyZzFoMGFuZ3JpbGE2cnAzZWxsM2lhMWtzaGE1b2VzMnAwcGluZzV1amkzdzNpMGxrMm5hMWdsZXM1dGUzajFrMGkwbjJ5MHBlNGwwaW5nNG0wYXJ0M2lsZTRuMGNmM28wY2NlcjNpYWw0ZnRiYW5rNHdhcmU2aHUybGFyMnV0aW9uczduZzF5MnkycGEwY2Uzb3J0MnQzcjBsMnMxdDBhZGEycGxlczRyMXRlYmFuazRmYXJtN2MwZ3JvdXA2b2NraG9sbTZyYWdlM2UzcmVhbTR1ZGlvMnkzeWxlNHUwY2tzM3BwbGllczN5Mm9ydDVyZjFnZXJ5NXp1a2k1djF3YXRjaDRpc3M0eDF5MGRuZXk0c3RlbXM2ejJ0YWIxaXBlaTRsazJvYmFvNHJnZXQ0dGFtb3RvcnM2cjJ0b280eDBpM2MwaTJkMGsyZWFtMmNoMG5vbG9neThsMW1hc2VrNW5uaXM0dmEzZjFnMWgwZDFlYXRlcjJyZTZpYWEyY2tldHM1ZW5kYTRwczJyZXMyb2w0ajBtYXh4NHgyazBtYXh4NWwxbTBhbGw0bjFvMGRheTNreW8zb2xzM3AxcmF5M3NoaWJhNXRhbDN1cnMzd24yeW90YTNzM3IwYWRlMWluZzRpbmluZzV2ZWwwZXJzMGluc3VyYW5jZTE2dXN0M3YydDF1YmUyaTFuZXMzc2h1NHYwczJ3MXoydWExYmFuazNzMmcxazFuaWNvbTN2ZXJzaXR5OG8yb2wycHMyczF5MXoydmEwY2F0aW9uczduYTFndWFyZDdjMWUwZ2FzM250dXJlczZyaXNpZ241bcO2Z2Vuc2JlcmF0ZXIydW5nMTRzaWNoZXJ1bmcxMHQyZzFpMGFqZXM0ZGVvM2cxa2luZzRsbGFzNG4xcDFyZ2luNHNhMWlvbjR2YTFvM2xhYW5kZXJlbjluMW9ka2EzbHZvM3RlMWluZzNvMnlhZ2U1dTJ3YWxlczJtYXJ0NHRlcjRuZzBnb3U1dGNoMGVzNmVhdGhlcjBjaGFubmVsMTJiY2FtM2VyMnNpdGU1ZDBkaW5nNWlibzJyM2YxaG9zd2hvNmllbjJraTJsbGlhbWhpbGw5bjBkb3dzNGUxbmVyczZtZTJvbHRlcnNrbHV3ZXIxMW9kc2lkZTZyazBzMmxkM3cyczF0YzFmM3hib3gzZXJveDRpaHVhbjRuMnh4Mnl6M3lhY2h0czRob28zbWF4dW41bmRleDVlMW9kb2Jhc2hpN2dhMmtvaGFtYTZ1MHR1YmU2dDF1bjN6YTBwcG9zNHJhM2VybzNpcDJtMW9uZTN1ZXJpY2g2dzIiKSksbnVsbD09T2kmJihPaT1kZWNvZGVUbGRzKCLOtc67Mc+FMtCx0LMx0LXQuzPQtNC10YLQuDTQtdGOMtC60LDRgtC+0LvQuNC6NtC+0Lwz0LzQutC0MtC+0L0x0YHQutCy0LA20L7QvdC70LDQudC9NdGA0LMz0YDRg9GBMtGEMtGB0LDQudGCM9GA0LEz0YPQutGAM9Kb0LDQtzPVsNWh1bUz15nXqdeo15DXnDXXp9eV150z2KfYqNmI2LjYqNmKNdix2KfZhdmD2Yg12YTYp9ix2K/ZhjTYqNit2LHZitmGNdis2LLYp9im2LE12LPYudmI2K/ZitipNti52YTZitin2YY12YXYutix2Kg12YXYp9ix2KfYqjXbjNix2KfZhjXYqNin2LHYqjLYstin2LE02YrYqtmDM9q+2KfYsdiqNdiq2YjZhtizNNiz2YjYr9in2YYz2LHZitipNdi02KjZg9ipNNi52LHYp9mCMtioMtmF2KfZhjTZgdmE2LPYt9mK2YY22YLYt9ixM9mD2KfYq9mI2YTZitmDNtmI2YUz2YXYtdixMtmE2YrYs9mK2Kc12YjYsdmK2KrYp9mG2YrYpzfZgti5NNmH2YXYsdin2Yc12b7Yp9qp2LPYqtin2YY32oDYp9ix2Ko04KSV4KWJ4KSuM+CkqOClh+CknzPgpK3gpL7gpLDgpKQw4KSu4KWNM+Cli+CkpDXgpLjgpILgpJfgpKDgpKg14Kas4Ka+4KaC4Kay4Ka+NeCmreCmvuCmsOCmpDLgp7DgpqQ04Kit4Ki+4Kiw4KikNOCqreCqvuCqsOCqpDTgrK3grL7grLDgrKQ04K6H4K6o4K+N4K6k4K6/4K6v4K6+NuCusuCumeCvjeCuleCviDbgrprgrr/grpngr43grpXgrqrgr43grqrgr4LgrrDgr40xMeCwreCwvuCwsOCwpOCxjTXgsq3gsr7gsrDgsqQ04LSt4LS+4LSw4LSk4LSCNeC2veC2guC2muC3jzTguITguK3guKEz4LmE4LiX4LiiM+C6peC6suC6pzPhg5Lhg5Qy44G/44KT44GqM+OCouODnuOCvuODszTjgq/jg6njgqbjg4k044Kw44O844Kw44OrNOOCs+ODoDLjgrnjg4jjgqIz44K744O844OrM+ODleOCoeODg+OCt+ODp+ODszbjg53jgqTjg7Pjg4g05LiW55WMMuS4reS/oTHlm70x5ZyLMeaWh+e9kTPkuprpqazpgIoz5LyB5LiaMuS9m+WxsTLkv6Hmga8y5YGl5bq3MuWFq+WNpjLlhazlj7gx55uKMuWPsOa5vjHngaMy5ZWG5Z+OMeW6lzHmoIcy5ZiJ6YeMMOWkp+mFkuW6lzXlnKjnur8y5aSn5ou/MuWkqeS4u+aVmTPlqLHkuZAy5a626Zu7MuW5v+S4nDLlvq7ljZoy5oWI5ZaEMuaIkeeIseS9oDPmiYvmnLoy5oub6IGYMuaUv+WKoTHlupwy5paw5Yqg5Z2hMumXuzLml7blsJoy5pu457GNMuacuuaehDLmt6HpqazplKEz5ri45oiPMua+s+mWgDLngrnnnIsy56e75YqoMue7hOe7h+acuuaehDTnvZHlnYAx5bqXMeermTHnu5wy6IGU6YCaMuiwt+atjDLotK3niaky6YCa6LKpMumbhuWbojLpm7voqIrnm4jnp5E06aOe5Yip5rWmM+mjn+WTgTLppJDljoUy6aaZ5qC86YeM5ouJM+a4rzLri7frhLcx7Lu0MuyCvOyEsTLtlZzqta0yIikpLHR0KG4sIiciLEdvKSx0dChuLCJ7IixEbyksdHQobiwifSIsUG8pLHR0KG4sIlsiLElvKSx0dChuLCJdIiwkbyksdHQobiwiKCIsTG8pLHR0KG4sIikiLHpvKSx0dChuLCI8IixCbyksdHQobiwiPiIsRm8pLHR0KG4sIu+8iCIsSG8pLHR0KG4sIu+8iSIsVm8pLHR0KG4sIuOAjCIsX28pLHR0KG4sIuOAjSIsam8pLHR0KG4sIuOAjiIscW8pLHR0KG4sIuOAjyIsVW8pLHR0KG4sIu+8nCIsV28pLHR0KG4sIu+8niIsS28pLHR0KG4sIiYiLEpvKSx0dChuLCIqIixYbyksdHQobiwiQCIsUW8pLHR0KG4sImAiLFlvKSx0dChuLCJeIixlaSksdHQobiwiOiIsdGkpLHR0KG4sIiwiLG5pKSx0dChuLCIkIixyaSksdHQobiwiLiIsb2kpLHR0KG4sIj0iLGlpKSx0dChuLCIhIixzaSksdHQobiwiLSIsbGkpLHR0KG4sIiUiLGFpKSx0dChuLCJ8IixjaSksdHQobiwiKyIsZGkpLHR0KG4sIiMiLHBpKSx0dChuLCI/IixoaSksdHQobiwnIicsdWkpLHR0KG4sIi8iLGdpKSx0dChuLCI7IixtaSksdHQobiwifiIseWkpLHR0KG4sIl8iLGtpKSx0dChuLCJcXCIsWm8pLHR0KG4sIuODuyIsZmkpO2NvbnN0IHI9dHIobixDaSxFbyx7W2NvXTohMH0pO3RyKHIsQ2kscik7Y29uc3Qgbz10cihyLHhpLHhvLHtbdW9dOiEwfSksaT10cihyLFNpLFNvLHtbZm9dOiEwfSkscz10cihuLHhpLGJvLHtbcG9dOiEwfSk7dHIocyxDaSxvKSx0cihzLHhpLHMpLHRyKG8sQ2ksbyksdHIobyx4aSxvKTtjb25zdCBsPXRyKG4sU2ksdm8se1tob106ITB9KTt0cihsLHhpKSx0cihsLENpLGkpLHRyKGwsU2ksbCksdHIoaSxDaSxpKSx0cihpLHhpKSx0cihpLFNpLGkpO2NvbnN0IGE9dHQobiwiXG4iLFJvLHtbd29dOiEwfSksYz10dChuLCJcciIsTm8se1t3b106ITB9KSxkPXRyKG4sTWksTm8se1t3b106ITB9KTt0dChuLCLvv7wiLGQpLHR0KGMsIlxuIixhKSx0dChjLCLvv7wiLGQpLHRyKGMsTWksZCksdHQoZCwiXHIiKSx0dChkLCJcbiIpLHRyKGQsTWksZCksdHQoZCwi77+8IixkKTtjb25zdCBwPXRyKG4sVGksd2kse1tnb106ITB9KTt0dChwLCIjIiksdHIocCxUaSxwKSx0dChwLCLvuI8iLHApO2NvbnN0IGY9dHQocCwi4oCNIik7dHQoZiwiIyIpLHRyKGYsVGkscCk7Y29uc3QgbT1bW3hpLHNdLFtDaSxvXV0seT1bW3hpLG51bGxdLFtTaSxsXSxbQ2ksaV1dO2ZvcihsZXQgZT0wO2U8QWkubGVuZ3RoO2UrKylmYXN0dHMobixBaVtlXSxDbyxibyxtKTtmb3IobGV0IGU9MDtlPE9pLmxlbmd0aDtlKyspZmFzdHRzKG4sT2lbZV0sTW8sdm8seSk7YWRkVG9Hcm91cHMoQ28se3RsZDohMCxhc2NpaTohMH0sdCksYWRkVG9Hcm91cHMoTW8se3V0bGQ6ITAsYWxwaGE6ITB9LHQpLGZhc3R0cyhuLCJmaWxlIixBbyxibyxtKSxmYXN0dHMobiwibWFpbHRvIixBbyxibyxtKSxmYXN0dHMobiwiaHR0cCIsT28sYm8sbSksZmFzdHRzKG4sImh0dHBzIixPbyxibyxtKSxmYXN0dHMobiwiZnRwIixPbyxibyxtKSxmYXN0dHMobiwiZnRwcyIsT28sYm8sbSksYWRkVG9Hcm91cHMoQW8se3NjaGVtZTohMCxhc2NpaTohMH0sdCksYWRkVG9Hcm91cHMoT28se3NsYXNoc2NoZW1lOiEwLGFzY2lpOiEwfSx0KSxlPWUuc29ydCgoZSx0KT0+ZVswXT50WzBdPzE6LTEpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCByPWVbdF1bMF0sbz1lW3RdWzFdP3tbeW9dOiEwfTp7W2tvXTohMH07ci5pbmRleE9mKCItIik+PTA/b1ttb109ITA6eGkudGVzdChyKT9DaS50ZXN0KHIpP29bdW9dPSEwOm9bcG9dPSEwOm9bY29dPSEwLHRzKG4scixyLG8pfXJldHVybiB0cyhuLCJsb2NhbGhvc3QiLFRvLHthc2NpaTohMH0pLG4uamQ9bmV3IFN0YXRlKGJpKSx7c3RhcnQ6bix0b2tlbnM6T2JqZWN0LmFzc2lnbih7Z3JvdXBzOnR9LHZpKX19KCRpLmN1c3RvbVNjaGVtZXMpO2ZvcihsZXQgZT0wO2U8JGkudG9rZW5RdWV1ZS5sZW5ndGg7ZSsrKSRpLnRva2VuUXVldWVbZV1bMV0oe3NjYW5uZXI6JGkuc2Nhbm5lcn0pOyRpLnBhcnNlcj1mdW5jdGlvbih7Z3JvdXBzOmV9KXtjb25zdCB0PWUuZG9tYWluLmNvbmNhdChbSm8sWG8sUW8sWm8sWW8sZWkscmksaWksbGksRW8sYWksY2ksZGkscGksZ2ksYmkseWksa2ldKSxuPVtHbyx0aSxuaSxvaSxzaSxhaSxoaSx1aSxtaSxCbyxGbyxEbyxQbywkbyxJbyxMbyx6byxIbyxWbyxfbyxqbyxxbyxVbyxXbyxLb10scj1bSm8sR28sWG8sWm8sWW8sZWkscmksaWksbGksRG8sUG8sYWksY2ksZGkscGksaGksZ2ksYmkseWksa2ldLG89bWFrZVN0YXRlKCksaT10dChvLHlpKTt0YShpLHIsaSksdGEoaSxlLmRvbWFpbixpKTtjb25zdCBzPW1ha2VTdGF0ZSgpLGw9bWFrZVN0YXRlKCksYT1tYWtlU3RhdGUoKTt0YShvLGUuZG9tYWluLHMpLHRhKG8sZS5zY2hlbWUsbCksdGEobyxlLnNsYXNoc2NoZW1lLGEpLHRhKHMscixpKSx0YShzLGUuZG9tYWluLHMpO2NvbnN0IGM9dHQocyxRbyk7dHQoaSxRbyxjKSx0dChsLFFvLGMpLHR0KGEsUW8sYyk7Y29uc3QgZD10dChpLG9pKTt0YShkLHIsaSksdGEoZCxlLmRvbWFpbixpKTtjb25zdCBwPW1ha2VTdGF0ZSgpO3RhKGMsZS5kb21haW4scCksdGEocCxlLmRvbWFpbixwKTtjb25zdCBmPXR0KHAsb2kpO3RhKGYsZS5kb21haW4scCk7Y29uc3QgbT1tYWtlU3RhdGUoTmkpO3RhKGYsZS50bGQsbSksdGEoZixlLnV0bGQsbSksdHQoYyxUbyxtKTtjb25zdCB5PXR0KHAsbGkpO3R0KHksbGkseSksdGEoeSxlLmRvbWFpbixwKSx0YShtLGUuZG9tYWluLHApLHR0KG0sb2ksZiksdHQobSxsaSx5KTtjb25zdCB3PXR0KG0sdGkpO3RhKHcsZS5udW1lcmljLE5pKTtjb25zdCBiPXR0KHMsbGkpLHY9dHQocyxvaSk7dHQoYixsaSxiKSx0YShiLGUuZG9tYWluLHMpLHRhKHYscixpKSx0YSh2LGUuZG9tYWluLHMpO2NvbnN0IHg9bWFrZVN0YXRlKFBpKTt0YSh2LGUudGxkLHgpLHRhKHYsZS51dGxkLHgpLHRhKHgsZS5kb21haW4scyksdGEoeCxyLGkpLHR0KHgsb2ksdiksdHQoeCxsaSxiKSx0dCh4LFFvLGMpO2NvbnN0IFM9dHQoeCx0aSksQz1tYWtlU3RhdGUoUGkpO3RhKFMsZS5udW1lcmljLEMpO2NvbnN0IEE9bWFrZVN0YXRlKFBpKSxPPW1ha2VTdGF0ZSgpO3RhKEEsdCxBKSx0YShBLG4sTyksdGEoTyx0LEEpLHRhKE8sbixPKSx0dCh4LGdpLEEpLHR0KEMsZ2ksQSk7Y29uc3QgRT10dChsLHRpKSxOPXR0KGEsdGkpLFI9dHQoTixnaSksRD10dChSLGdpKTt0YShsLGUuZG9tYWluLHMpLHR0KGwsb2ksdiksdHQobCxsaSxiKSx0YShhLGUuZG9tYWluLHMpLHR0KGEsb2ksdiksdHQoYSxsaSxiKSx0YShFLGUuZG9tYWluLEEpLHR0KEUsZ2ksQSksdHQoRSxoaSxBKSx0YShELGUuZG9tYWluLEEpLHRhKEQsdCxBKSx0dChELGdpLEEpO2NvbnN0IFA9W1tEbyxQb10sW0lvLCRvXSxbTG8sem9dLFtCbyxGb10sW0hvLFZvXSxbX28sam9dLFtxbyxVb10sW1dvLEtvXV07Zm9yKGxldCBlPTA7ZTxQLmxlbmd0aDtlKyspe2NvbnN0W3Isb109UFtlXSxpPXR0KEEscik7dHQoTyxyLGkpLHR0KGksbyxBKTtjb25zdCBzPW1ha2VTdGF0ZShQaSk7dGEoaSx0LHMpO2NvbnN0IGw9bWFrZVN0YXRlKCk7dGEoaSxuKSx0YShzLHQscyksdGEocyxuLGwpLHRhKGwsdCxzKSx0YShsLG4sbCksdHQocyxvLEEpLHR0KGwsbyxBKX1yZXR1cm4gdHQobyxUbyx4KSx0dChvLFJvLERpKSx7c3RhcnQ6byx0b2tlbnM6dml9fSgkaS5zY2FubmVyLnRva2Vucyk7Zm9yKGxldCBlPTA7ZTwkaS5wbHVnaW5RdWV1ZS5sZW5ndGg7ZSsrKSRpLnBsdWdpblF1ZXVlW2VdWzFdKHtzY2FubmVyOiRpLnNjYW5uZXIscGFyc2VyOiRpLnBhcnNlcn0pO3JldHVybiAkaS5pbml0aWFsaXplZD0hMCwkaX1mdW5jdGlvbiB0b2tlbml6ZShlKXtyZXR1cm4gJGkuaW5pdGlhbGl6ZWR8fGluaXQoKSxmdW5jdGlvbihlLHQsbil7bGV0IHI9bi5sZW5ndGgsbz0wLGk9W10scz1bXTtmb3IoO288cjspe2xldCBsPWUsYT1udWxsLGM9bnVsbCxkPTAscD1udWxsLGY9LTE7Zm9yKDtvPHImJiEoYT1sLmdvKG5bb10udCkpOylzLnB1c2gobltvKytdKTtmb3IoO288ciYmKGM9YXx8bC5nbyhuW29dLnQpKTspYT1udWxsLGw9YyxsLmFjY2VwdHMoKT8oZj0wLHA9bCk6Zj49MCYmZisrLG8rKyxkKys7aWYoZjwwKW8tPWQsbzxyJiYocy5wdXNoKG5bb10pLG8rKyk7ZWxzZXtzLmxlbmd0aD4wJiYoaS5wdXNoKGluaXRNdWx0aVRva2VuKFJpLHQscykpLHM9W10pLG8tPWYsZC09Zjtjb25zdCBlPXAudCxyPW4uc2xpY2Uoby1kLG8pO2kucHVzaChpbml0TXVsdGlUb2tlbihlLHQscikpfX1yZXR1cm4gcy5sZW5ndGg+MCYmaS5wdXNoKGluaXRNdWx0aVRva2VuKFJpLHQscykpLGl9KCRpLnBhcnNlci5zdGFydCxlLHJ1biQxKCRpLnNjYW5uZXIuc3RhcnQsZSkpfXRva2VuaXplLnNjYW49cnVuJDE7dmFyIGZpbmRfMT1mdW5jdGlvbihlLHQ9bnVsbCxuPW51bGwpe2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCl7aWYobil0aHJvdyBFcnJvcihgbGlua2lmeWpzOiBJbnZhbGlkIGxpbmsgdHlwZSAke3R9OyBtdXN0IGJlIGEgc3RyaW5nYCk7bj10LHQ9bnVsbH1jb25zdCByPW5ldyBPcHRpb25zKG4pLG89dG9rZW5pemUoZSksaT1bXTtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3Qgbj1vW2VdOyFuLmlzTGlua3x8dCYmbi50IT09dHx8IXIuY2hlY2sobil8fGkucHVzaChuLnRvRm9ybWF0dGVkT2JqZWN0KHIpKX1yZXR1cm4gaX0scmVnaXN0ZXJDdXN0b21Qcm90b2NvbF8xPWZ1bmN0aW9uKGUsdD0hMSl7aWYoJGkuaW5pdGlhbGl6ZWQmJklpKGBsaW5raWZ5anM6IGFscmVhZHkgaW5pdGlhbGl6ZWQgLSB3aWxsIG5vdCByZWdpc3RlciBjdXN0b20gc2NoZW1lICIke2V9IiB1bnRpbCBtYW51YWwgY2FsbCBvZiBsaW5raWZ5LmluaXQoKS4gUmVnaXN0ZXIgYWxsIHNjaGVtZXMgYW5kIHBsdWdpbnMgYmVmb3JlIGludm9raW5nIGxpbmtpZnkgdGhlIGZpcnN0IHRpbWUuYCksIS9eWzAtOWEtel0rKC1bMC05YS16XSspKiQvLnRlc3QoZSkpdGhyb3cgbmV3IEVycm9yKCdsaW5raWZ5anM6IGluY29ycmVjdCBzY2hlbWUgZm9ybWF0LlxuMS4gTXVzdCBvbmx5IGNvbnRhaW4gZGlnaXRzLCBsb3dlcmNhc2UgQVNDSUkgbGV0dGVycyBvciAiLSJcbjIuIENhbm5vdCBzdGFydCBvciBlbmQgd2l0aCAiLSJcbjMuICItIiBjYW5ub3QgcmVwZWF0Jyk7JGkuY3VzdG9tU2NoZW1lcy5wdXNoKFtlLHRdKX0scmVzZXRfMT1mdW5jdGlvbigpe3JldHVybiBTdGF0ZS5ncm91cHM9e30sJGkuc2Nhbm5lcj1udWxsLCRpLnBhcnNlcj1udWxsLCRpLnRva2VuUXVldWU9W10sJGkucGx1Z2luUXVldWU9W10sJGkuY3VzdG9tU2NoZW1lcz1bXSwkaS5pbml0aWFsaXplZD0hMSwkaX0sTGk9dG9rZW5pemUsemk9IltcMC0gwqDhmoDhoI7igIAtXHUyMDI54oGf44CAXSIsQmk9bmV3IFJlZ0V4cCh6aSksRmk9bmV3IFJlZ0V4cChgJHt6aX0kYCksSGk9bmV3IFJlZ0V4cCh6aSwiZyIpO2Z1bmN0aW9uIGlzQWxsb3dlZFVyaShlLHQpe2NvbnN0IG49WyJodHRwIiwiaHR0cHMiLCJmdHAiLCJmdHBzIiwibWFpbHRvIiwidGVsIiwiY2FsbHRvIiwic21zIiwiY2lkIiwieG1wcCJdO3JldHVybiB0JiZ0LmZvckVhY2goZT0+e2NvbnN0IHQ9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5zY2hlbWU7dCYmbi5wdXNoKHQpfSksIWV8fGUucmVwbGFjZShIaSwiIikubWF0Y2gobmV3IFJlZ0V4cChgXig/Oig/OiR7bi5qb2luKCJ8Iil9KTp8W15hLXpdfFthLXowLTkrLi1dKyg/OlteYS16Ky4tOl18JCkpYCwiaSIpKX12YXIgVmk9RnQuY3JlYXRlKHtuYW1lOiJsaW5rIixwcmlvcml0eToxZTMsa2VlcE9uU3BsaXQ6ITEsZXhpdGFibGU6ITAsb25DcmVhdGUoKXt0aGlzLm9wdGlvbnMudmFsaWRhdGUmJiF0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbmsmJih0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbms9dGhpcy5vcHRpb25zLnZhbGlkYXRlLGNvbnNvbGUud2FybigiVGhlIGB2YWxpZGF0ZWAgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFJlbmFtZSB0byB0aGUgYHNob3VsZEF1dG9MaW5rYCBvcHRpb24gaW5zdGVhZC4iKSksdGhpcy5vcHRpb25zLnByb3RvY29scy5mb3JFYWNoKGU9Pnsic3RyaW5nIiE9dHlwZW9mIGU/cmVnaXN0ZXJDdXN0b21Qcm90b2NvbF8xKGUuc2NoZW1lLGUub3B0aW9uYWxTbGFzaGVzKTpyZWdpc3RlckN1c3RvbVByb3RvY29sXzEoZSl9KX0sb25EZXN0cm95KCl7cmVzZXRfMSgpfSxpbmNsdXNpdmUoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmF1dG9saW5rfSxhZGRPcHRpb25zOigpPT4oe29wZW5PbkNsaWNrOiEwLGVuYWJsZUNsaWNrU2VsZWN0aW9uOiExLGxpbmtPblBhc3RlOiEwLGF1dG9saW5rOiEwLHByb3RvY29sczpbXSxkZWZhdWx0UHJvdG9jb2w6Imh0dHAiLEhUTUxBdHRyaWJ1dGVzOnt0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIG5vZm9sbG93IixjbGFzczpudWxsfSxpc0FsbG93ZWRVcmk6KGUsdCk9PiEhaXNBbGxvd2VkVXJpKGUsdC5wcm90b2NvbHMpLHZhbGlkYXRlOmU9PiEhZSxzaG91bGRBdXRvTGluazplPT57Y29uc3QgdD0vXlthLXpdW2EtejAtOSsuLV0qOlwvXC8vaS50ZXN0KGUpLG49L15bYS16XVthLXowLTkrLi1dKjovaS50ZXN0KGUpO2lmKHR8fG4mJiFlLmluY2x1ZGVzKCJAIikpcmV0dXJuITA7Y29uc3Qgcj0oZS5pbmNsdWRlcygiQCIpP2Uuc3BsaXQoIkAiKS5wb3AoKTplKS5zcGxpdCgvWy8/IzpdLylbMF07cmV0dXJuIS9eXGR7MSwzfShcLlxkezEsM30pezN9JC8udGVzdChyKSYmISEvXC4vLnRlc3Qocil9fSksYWRkQXR0cmlidXRlcygpe3JldHVybntocmVmOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJocmVmIil9LHRhcmdldDp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMudGFyZ2V0fSxyZWw6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLnJlbH0sY2xhc3M6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLmNsYXNzfSx0aXRsZTp7ZGVmYXVsdDpudWxsfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJhW2hyZWZdIixnZXRBdHRyczplPT57Y29uc3QgdD1lLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3JldHVybiEoIXR8fCF0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKHQse2RlZmF1bHRWYWxpZGF0ZTplPT4hIWlzQWxsb3dlZFVyaShlLHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSkpJiZudWxsfX1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuIHRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkoZS5ocmVmLHtkZWZhdWx0VmFsaWRhdGU6ZT0+ISFpc0FsbG93ZWRVcmkoZSx0aGlzLm9wdGlvbnMucHJvdG9jb2xzKSxwcm90b2NvbHM6dGhpcy5vcHRpb25zLnByb3RvY29scyxkZWZhdWx0UHJvdG9jb2w6dGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbH0pP1siYSIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKSwwXTpbImEiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsey4uLmUsaHJlZjoiIn0pLDBdfSxtYXJrZG93blRva2VuTmFtZToibGluayIscGFyc2VNYXJrZG93bjooZSx0KT0+dC5hcHBseU1hcmsoImxpbmsiLHQucGFyc2VJbmxpbmUoZS50b2tlbnN8fFtdKSx7aHJlZjplLmhyZWYsdGl0bGU6ZS50aXRsZXx8bnVsbH0pLHJlbmRlck1hcmtkb3duOihlLHQpPT57dmFyIG4scixvLGk7Y29uc3Qgcz1udWxsIT0ocj1udWxsPT0obj1lLmF0dHJzKT92b2lkIDA6bi5ocmVmKT9yOiIiLGw9bnVsbCE9KGk9bnVsbD09KG89ZS5hdHRycyk/dm9pZCAwOm8udGl0bGUpP2k6IiIsYT10LnJlbmRlckNoaWxkcmVuKGUpO3JldHVybiBsP2BbJHthfV0oJHtzfSAiJHtsfSIpYDpgWyR7YX1dKCR7c30pYH0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0TGluazplPT4oe2NoYWluOnR9KT0+e2NvbnN0e2hyZWY6bn09ZTtyZXR1cm4hIXRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkobix7ZGVmYXVsdFZhbGlkYXRlOmU9PiEhaXNBbGxvd2VkVXJpKGUsdGhpcy5vcHRpb25zLnByb3RvY29scykscHJvdG9jb2xzOnRoaXMub3B0aW9ucy5wcm90b2NvbHMsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2x9KSYmdCgpLnNldE1hcmsodGhpcy5uYW1lLGUpLnNldE1ldGEoInByZXZlbnRBdXRvbGluayIsITApLnJ1bigpfSx0b2dnbGVMaW5rOmU9Pih7Y2hhaW46dH0pPT57Y29uc3R7aHJlZjpufT1lfHx7fTtyZXR1cm4hKG4mJiF0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKG4se2RlZmF1bHRWYWxpZGF0ZTplPT4hIWlzQWxsb3dlZFVyaShlLHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSkpJiZ0KCkudG9nZ2xlTWFyayh0aGlzLm5hbWUsZSx7ZXh0ZW5kRW1wdHlNYXJrUmFuZ2U6ITB9KS5zZXRNZXRhKCJwcmV2ZW50QXV0b2xpbmsiLCEwKS5ydW4oKX0sdW5zZXRMaW5rOigpPT4oe2NoYWluOmV9KT0+ZSgpLnVuc2V0TWFyayh0aGlzLm5hbWUse2V4dGVuZEVtcHR5TWFya1JhbmdlOiEwfSkuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCl9fSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW21hcmtQYXN0ZVJ1bGUoe2ZpbmQ6ZT0+e2NvbnN0IHQ9W107aWYoZSl7Y29uc3R7cHJvdG9jb2xzOm4sZGVmYXVsdFByb3RvY29sOnJ9PXRoaXMub3B0aW9ucyxvPWZpbmRfMShlKS5maWx0ZXIoZT0+ZS5pc0xpbmsmJnRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkoZS52YWx1ZSx7ZGVmYXVsdFZhbGlkYXRlOmU9PiEhaXNBbGxvd2VkVXJpKGUsbikscHJvdG9jb2xzOm4sZGVmYXVsdFByb3RvY29sOnJ9KSk7by5sZW5ndGgmJm8uZm9yRWFjaChlPT57dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rKGUudmFsdWUpJiZ0LnB1c2goe3RleHQ6ZS52YWx1ZSxkYXRhOntocmVmOmUuaHJlZn0saW5kZXg6ZS5zdGFydH0pfSl9cmV0dXJuIHR9LHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+e3ZhciB0O3JldHVybntocmVmOm51bGw9PSh0PWUuZGF0YSk/dm9pZCAwOnQuaHJlZn19fSldfSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBlPVtdLHtwcm90b2NvbHM6dCxkZWZhdWx0UHJvdG9jb2w6bn09dGhpcy5vcHRpb25zO3ZhciByO3JldHVybiB0aGlzLm9wdGlvbnMuYXV0b2xpbmsmJmUucHVzaCgocj17dHlwZTp0aGlzLnR5cGUsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsdmFsaWRhdGU6ZT0+dGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShlLHtkZWZhdWx0VmFsaWRhdGU6ZT0+ISFpc0FsbG93ZWRVcmkoZSx0KSxwcm90b2NvbHM6dCxkZWZhdWx0UHJvdG9jb2w6bn0pLHNob3VsZEF1dG9MaW5rOnRoaXMub3B0aW9ucy5zaG91bGRBdXRvTGlua30sbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImF1dG9saW5rIiksYXBwZW5kVHJhbnNhY3Rpb246KGUsdCxuKT0+e2NvbnN0IG89ZS5zb21lKGU9PmUuZG9jQ2hhbmdlZCkmJiF0LmRvYy5lcShuLmRvYyksaT1lLnNvbWUoZT0+ZS5nZXRNZXRhKCJwcmV2ZW50QXV0b2xpbmsiKSk7aWYoIW98fGkpcmV0dXJuO2NvbnN0e3RyOnN9PW47cmV0dXJuIGdldENoYW5nZWRSYW5nZXMoY29tYmluZVRyYW5zYWN0aW9uU3RlcHModC5kb2MsWy4uLmVdKSkuZm9yRWFjaCgoe25ld1JhbmdlOmV9KT0+e2NvbnN0IHQ9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9W107cmV0dXJuIGUubm9kZXNCZXR3ZWVuKHQuZnJvbSx0LnRvLChlLHQpPT57bihlKSYmci5wdXNoKHtub2RlOmUscG9zOnR9KX0pLHJ9KG4uZG9jLGUsZT0+ZS5pc1RleHRibG9jayk7bGV0IG8saTtpZih0Lmxlbmd0aD4xKW89dFswXSxpPW4uZG9jLnRleHRCZXR3ZWVuKG8ucG9zLG8ucG9zK28ubm9kZS5ub2RlU2l6ZSx2b2lkIDAsIiAiKTtlbHNlIGlmKHQubGVuZ3RoKXtjb25zdCByPW4uZG9jLnRleHRCZXR3ZWVuKGUuZnJvbSxlLnRvLCIgIiwiICIpO2lmKCFGaS50ZXN0KHIpKXJldHVybjtvPXRbMF0saT1uLmRvYy50ZXh0QmV0d2VlbihvLnBvcyxlLnRvLHZvaWQgMCwiICIpfWlmKG8mJmkpe2NvbnN0IGU9aS5zcGxpdChCaSkuZmlsdGVyKEJvb2xlYW4pO2lmKGUubGVuZ3RoPD0wKXJldHVybiExO2NvbnN0IHQ9ZVtlLmxlbmd0aC0xXSxhPW8ucG9zK2kubGFzdEluZGV4T2YodCk7aWYoIXQpcmV0dXJuITE7Y29uc3QgYz1MaSh0KS5tYXAoZT0+ZS50b09iamVjdChyLmRlZmF1bHRQcm90b2NvbCkpO2lmKCEoMT09PShsPWMpLmxlbmd0aD9sWzBdLmlzTGluazozPT09bC5sZW5ndGgmJmxbMV0uaXNMaW5rJiZbIigpIiwiW10iXS5pbmNsdWRlcyhsWzBdLnZhbHVlK2xbMl0udmFsdWUpKSlyZXR1cm4hMTtjLmZpbHRlcihlPT5lLmlzTGluaykubWFwKGU9Pih7Li4uZSxmcm9tOmErZS5zdGFydCsxLHRvOmErZS5lbmQrMX0pKS5maWx0ZXIoZT0+IW4uc2NoZW1hLm1hcmtzLmNvZGV8fCFuLmRvYy5yYW5nZUhhc01hcmsoZS5mcm9tLGUudG8sbi5zY2hlbWEubWFya3MuY29kZSkpLmZpbHRlcihlPT5yLnZhbGlkYXRlKGUudmFsdWUpKS5maWx0ZXIoZT0+ci5zaG91bGRBdXRvTGluayhlLnZhbHVlKSkuZm9yRWFjaChlPT57Z2V0TWFya3NCZXR3ZWVuKGUuZnJvbSxlLnRvLG4uZG9jKS5zb21lKGU9PmUubWFyay50eXBlPT09ci50eXBlKXx8cy5hZGRNYXJrKGUuZnJvbSxlLnRvLHIudHlwZS5jcmVhdGUoe2hyZWY6ZS5ocmVmfSkpfSl9dmFyIGx9KSxzLnN0ZXBzLmxlbmd0aD9zOnZvaWQgMH19KSkpLGUucHVzaChmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImhhbmRsZUNsaWNrTGluayIpLHByb3BzOntoYW5kbGVDbGljazoodCxuLHIpPT57dmFyIG8saTtpZigwIT09ci5idXR0b24pcmV0dXJuITE7aWYoIXQuZWRpdGFibGUpcmV0dXJuITE7bGV0IHM9bnVsbDtpZihyLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50KXM9ci50YXJnZXQ7ZWxzZXtjb25zdCB0PXIudGFyZ2V0O2lmKCF0KXJldHVybiExO2NvbnN0IG49ZS5lZGl0b3Iudmlldy5kb207cz10LmNsb3Nlc3QoImEiKSxzJiYhbi5jb250YWlucyhzKSYmKHM9bnVsbCl9aWYoIXMpcmV0dXJuITE7bGV0IGw9ITE7aWYoZS5lbmFibGVDbGlja1NlbGVjdGlvbiYmKGw9ZS5lZGl0b3IuY29tbWFuZHMuZXh0ZW5kTWFya1JhbmdlKGUudHlwZS5uYW1lKSksZS5vcGVuT25DbGljayl7Y29uc3Qgbj1nZXRBdHRyaWJ1dGVzKHQuc3RhdGUsZS50eXBlLm5hbWUpLHI9bnVsbCE9KG89cy5ocmVmKT9vOm4uaHJlZixhPW51bGwhPShpPXMudGFyZ2V0KT9pOm4udGFyZ2V0O3ImJih3aW5kb3cub3BlbihyLGEpLGw9ITApfXJldHVybiBsfX19KX0oe3R5cGU6dGhpcy50eXBlLGVkaXRvcjp0aGlzLmVkaXRvcixvcGVuT25DbGljazoid2hlbk5vdEVkaXRhYmxlIj09PXRoaXMub3B0aW9ucy5vcGVuT25DbGlja3x8dGhpcy5vcHRpb25zLm9wZW5PbkNsaWNrLGVuYWJsZUNsaWNrU2VsZWN0aW9uOnRoaXMub3B0aW9ucy5lbmFibGVDbGlja1NlbGVjdGlvbn0pKSx0aGlzLm9wdGlvbnMubGlua09uUGFzdGUmJmUucHVzaChmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImhhbmRsZVBhc3RlTGluayIpLHByb3BzOntoYW5kbGVQYXN0ZToodCxuLHIpPT57Y29uc3R7c2hvdWxkQXV0b0xpbms6b309ZSx7c3RhdGU6aX09dCx7c2VsZWN0aW9uOnN9PWkse2VtcHR5Omx9PXM7aWYobClyZXR1cm4hMTtsZXQgYT0iIjtyLmNvbnRlbnQuZm9yRWFjaChlPT57YSs9ZS50ZXh0Q29udGVudH0pO2NvbnN0IGM9ZmluZF8xKGEse2RlZmF1bHRQcm90b2NvbDplLmRlZmF1bHRQcm90b2NvbH0pLmZpbmQoZT0+ZS5pc0xpbmsmJmUudmFsdWU9PT1hKTtyZXR1cm4hKCFhfHwhY3x8dm9pZCAwIT09byYmIW8oYy52YWx1ZSkpJiZlLmVkaXRvci5jb21tYW5kcy5zZXRNYXJrKGUudHlwZSx7aHJlZjpjLmhyZWZ9KX19fSl9KHtlZGl0b3I6dGhpcy5lZGl0b3IsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsdHlwZTp0aGlzLnR5cGUsc2hvdWxkQXV0b0xpbms6dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rfSkpLGV9fSksX2k9T2JqZWN0LmRlZmluZVByb3BlcnR5LGppPSJ0ZXh0U3R5bGUiLHFpPS9eXHMqKFstKypdKVxzJC8sVWk9b24uY3JlYXRlKHtuYW1lOiJidWxsZXRMaXN0IixhZGRPcHRpb25zOigpPT4oe2l0ZW1UeXBlTmFtZToibGlzdEl0ZW0iLEhUTUxBdHRyaWJ1dGVzOnt9LGtlZXBNYXJrczohMSxrZWVwQXR0cmlidXRlczohMX0pLGdyb3VwOiJibG9jayBsaXN0Iixjb250ZW50KCl7cmV0dXJuYCR7dGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZX0rYH0scGFyc2VIVE1MOigpPT5be3RhZzoidWwifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsidWwiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJsaXN0IixwYXJzZU1hcmtkb3duOihlLHQpPT4ibGlzdCIhPT1lLnR5cGV8fGUub3JkZXJlZD9bXTp7dHlwZToiYnVsbGV0TGlzdCIsY29udGVudDplLml0ZW1zP3QucGFyc2VDaGlsZHJlbihlLml0ZW1zKTpbXX0scmVuZGVyTWFya2Rvd246KGUsdCk9PmUuY29udGVudD90LnJlbmRlckNoaWxkcmVuKGUuY29udGVudCwiXG4iKToiIixtYXJrZG93bk9wdGlvbnM6e2luZGVudHNDb250ZW50OiEwfSxhZGRDb21tYW5kcygpe3JldHVybnt0b2dnbGVCdWxsZXRMaXN0OigpPT4oe2NvbW1hbmRzOmUsY2hhaW46dH0pPT50aGlzLm9wdGlvbnMua2VlcEF0dHJpYnV0ZXM/dCgpLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcykudXBkYXRlQXR0cmlidXRlcygibGlzdEl0ZW0iLHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoamkpKS5ydW4oKTplLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcyl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LTgiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVCdWxsZXRMaXN0KCl9fSxhZGRJbnB1dFJ1bGVzKCl7bGV0IGU9d3JhcHBpbmdJbnB1dFJ1bGUoe2ZpbmQ6cWksdHlwZTp0aGlzLnR5cGV9KTtyZXR1cm4odGhpcy5vcHRpb25zLmtlZXBNYXJrc3x8dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzKSYmKGU9d3JhcHBpbmdJbnB1dFJ1bGUoe2ZpbmQ6cWksdHlwZTp0aGlzLnR5cGUsa2VlcE1hcmtzOnRoaXMub3B0aW9ucy5rZWVwTWFya3Msa2VlcEF0dHJpYnV0ZXM6dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzLGdldEF0dHJpYnV0ZXM6KCk9PnRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoamkpLGVkaXRvcjp0aGlzLmVkaXRvcn0pKSxbZV19fSksV2k9b24uY3JlYXRlKHtuYW1lOiJsaXN0SXRlbSIsYWRkT3B0aW9uczooKT0+KHtIVE1MQXR0cmlidXRlczp7fSxidWxsZXRMaXN0VHlwZU5hbWU6ImJ1bGxldExpc3QiLG9yZGVyZWRMaXN0VHlwZU5hbWU6Im9yZGVyZWRMaXN0In0pLGNvbnRlbnQ6InBhcmFncmFwaCBibG9jayoiLGRlZmluaW5nOiEwLHBhcnNlSFRNTDooKT0+W3t0YWc6ImxpIn1dLHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bImxpIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdF9pdGVtIixwYXJzZU1hcmtkb3duOihlLHQpPT57dmFyIG47aWYoImxpc3RfaXRlbSIhPT1lLnR5cGUpcmV0dXJuW107Y29uc3Qgcj1udWxsIT0obj10LnBhcnNlQmxvY2tDaGlsZHJlbik/bjp0LnBhcnNlQ2hpbGRyZW47bGV0IG89W107aWYoZS50b2tlbnMmJmUudG9rZW5zLmxlbmd0aD4wKXtpZihlLnRva2Vucy5zb21lKGU9PiJwYXJhZ3JhcGgiPT09ZS50eXBlKSlvPXIoZS50b2tlbnMpO2Vsc2V7Y29uc3Qgbj1lLnRva2Vuc1swXTtpZihuJiYidGV4dCI9PT1uLnR5cGUmJm4udG9rZW5zJiZuLnRva2Vucy5sZW5ndGg+MCl7aWYobz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDp0LnBhcnNlSW5saW5lKG4udG9rZW5zKX1dLGUudG9rZW5zLmxlbmd0aD4xKXtjb25zdCB0PXIoZS50b2tlbnMuc2xpY2UoMSkpO28ucHVzaCguLi50KX19ZWxzZSBvPXIoZS50b2tlbnMpfX1yZXR1cm4gMD09PW8ubGVuZ3RoJiYobz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbXX1dKSx7dHlwZToibGlzdEl0ZW0iLGNvbnRlbnQ6b319LHJlbmRlck1hcmtkb3duOihlLHQsbik9PnJlbmRlck5lc3RlZE1hcmtkb3duQ29udGVudChlLHQsZT0+e3ZhciB0LG47aWYoImJ1bGxldExpc3QiPT09ZS5wYXJlbnRUeXBlKXJldHVybiItICI7aWYoIm9yZGVyZWRMaXN0Ij09PWUucGFyZW50VHlwZSl7cmV0dXJuYCR7KChudWxsPT0obj1udWxsPT0odD1lLm1ldGEpP3ZvaWQgMDp0LnBhcmVudEF0dHJzKT92b2lkIDA6bi5zdGFydCl8fDEpK2UuaW5kZXh9LiBgfXJldHVybiItICJ9LG4pLGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJue0VudGVyOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zcGxpdExpc3RJdGVtKHRoaXMubmFtZSksVGFiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zaW5rTGlzdEl0ZW0odGhpcy5uYW1lKSwiU2hpZnQtVGFiIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMubGlmdExpc3RJdGVtKHRoaXMubmFtZSl9fX0pOygoZSx0KT0+e2Zvcih2YXIgbiBpbiB0KV9pKGUsbix7Z2V0OnRbbl0sZW51bWVyYWJsZTohMH0pfSkoe30se2ZpbmRMaXN0SXRlbVBvczooKT0+ZmluZExpc3RJdGVtUG9zLGdldE5leHRMaXN0RGVwdGg6KCk9PmdldE5leHRMaXN0RGVwdGgsaGFuZGxlQmFja3NwYWNlOigpPT5oYW5kbGVCYWNrc3BhY2UsaGFuZGxlRGVsZXRlOigpPT5oYW5kbGVEZWxldGUsaGFzTGlzdEJlZm9yZTooKT0+aGFzTGlzdEJlZm9yZSxoYXNMaXN0SXRlbUFmdGVyOigpPT5oYXNMaXN0SXRlbUFmdGVyLGhhc0xpc3RJdGVtQmVmb3JlOigpPT5oYXNMaXN0SXRlbUJlZm9yZSxsaXN0SXRlbUhhc1N1Ykxpc3Q6KCk9Pmxpc3RJdGVtSGFzU3ViTGlzdCxuZXh0TGlzdElzRGVlcGVyOigpPT5uZXh0TGlzdElzRGVlcGVyLG5leHRMaXN0SXNIaWdoZXI6KCk9Pm5leHRMaXN0SXNIaWdoZXJ9KTt2YXIgZmluZExpc3RJdGVtUG9zPShlLHQpPT57Y29uc3R7JGZyb206bn09dC5zZWxlY3Rpb24scj1nZXROb2RlVHlwZShlLHQuc2NoZW1hKTtsZXQgbz1udWxsLGk9bi5kZXB0aCxzPW4ucG9zLGw9bnVsbDtmb3IoO2k+MCYmbnVsbD09PWw7KW89bi5ub2RlKGkpLG8udHlwZT09PXI/bD1pOihpLT0xLHMtPTEpO3JldHVybiBudWxsPT09bD9udWxsOnskcG9zOnQuZG9jLnJlc29sdmUocyksZGVwdGg6bH19LGdldE5leHRMaXN0RGVwdGg9KGUsdCk9Pntjb25zdCBuPWZpbmRMaXN0SXRlbVBvcyhlLHQpO2lmKCFuKXJldHVybiExO2NvbnN0WyxyXT0oKGUsdCxuLHI9MjApPT57Y29uc3Qgbz1lLmRvYy5yZXNvbHZlKG4pO2xldCBpPXIscz1udWxsO2Zvcig7aT4wJiZudWxsPT09czspe2NvbnN0IGU9by5ub2RlKGkpOyhudWxsPT1lP3ZvaWQgMDplLnR5cGUubmFtZSk9PT10P3M9ZTppLT0xfXJldHVybltzLGldfSkodCxlLG4uJHBvcy5wb3MrNCk7cmV0dXJuIHJ9LGhhc0xpc3RCZWZvcmU9KGUsdCxuKT0+e2NvbnN0eyRhbmNob3I6cn09ZS5zZWxlY3Rpb24sbz1NYXRoLm1heCgwLHIucG9zLTIpLGk9ZS5kb2MucmVzb2x2ZShvKS5ub2RlKCk7cmV0dXJuISghaXx8IW4uaW5jbHVkZXMoaS50eXBlLm5hbWUpKX0saGFzTGlzdEl0ZW1CZWZvcmU9KGUsdCk9Pnt2YXIgbjtjb25zdHskYW5jaG9yOnJ9PXQuc2VsZWN0aW9uLG89dC5kb2MucmVzb2x2ZShyLnBvcy0yKTtyZXR1cm4gMCE9PW8uaW5kZXgoKSYmKG51bGw9PShuPW8ubm9kZUJlZm9yZSk/dm9pZCAwOm4udHlwZS5uYW1lKT09PWV9LGxpc3RJdGVtSGFzU3ViTGlzdD0oZSx0LG4pPT57aWYoIW4pcmV0dXJuITE7Y29uc3Qgcj1nZXROb2RlVHlwZShlLHQuc2NoZW1hKTtsZXQgbz0hMTtyZXR1cm4gbi5kZXNjZW5kYW50cyhlPT57ZS50eXBlPT09ciYmKG89ITApfSksb30saGFuZGxlQmFja3NwYWNlPShlLHQsbik9PntpZihlLmNvbW1hbmRzLnVuZG9JbnB1dFJ1bGUoKSlyZXR1cm4hMDtpZihlLnN0YXRlLnNlbGVjdGlvbi5mcm9tIT09ZS5zdGF0ZS5zZWxlY3Rpb24udG8pcmV0dXJuITE7aWYoIWlzTm9kZUFjdGl2ZShlLnN0YXRlLHQpJiZoYXNMaXN0QmVmb3JlKGUuc3RhdGUsdCxuKSl7Y29uc3R7JGFuY2hvcjpufT1lLnN0YXRlLnNlbGVjdGlvbixyPWUuc3RhdGUuZG9jLnJlc29sdmUobi5iZWZvcmUoKS0xKSxvPVtdO3Iubm9kZSgpLmRlc2NlbmRhbnRzKChlLG4pPT57ZS50eXBlLm5hbWU9PT10JiZvLnB1c2goe25vZGU6ZSxwb3M6bn0pfSk7Y29uc3QgaT1vLmF0KC0xKTtpZighaSlyZXR1cm4hMTtjb25zdCBzPWUuc3RhdGUuZG9jLnJlc29sdmUoci5zdGFydCgpK2kucG9zKzEpO3JldHVybiBlLmNoYWluKCkuY3V0KHtmcm9tOm4uc3RhcnQoKS0xLHRvOm4uZW5kKCkrMX0scy5lbmQoKSkuam9pbkZvcndhcmQoKS5ydW4oKX1pZighaXNOb2RlQWN0aXZlKGUuc3RhdGUsdCkpcmV0dXJuITE7aWYoIShlPT57Y29uc3R7JGZyb206dCwkdG86bn09ZS5zZWxlY3Rpb247cmV0dXJuISh0LnBhcmVudE9mZnNldD4wfHx0LnBvcyE9PW4ucG9zKX0pKGUuc3RhdGUpKXJldHVybiExO2NvbnN0IHI9ZmluZExpc3RJdGVtUG9zKHQsZS5zdGF0ZSk7aWYoIXIpcmV0dXJuITE7Y29uc3Qgbz1lLnN0YXRlLmRvYy5yZXNvbHZlKHIuJHBvcy5wb3MtMikubm9kZShyLmRlcHRoKSxpPWxpc3RJdGVtSGFzU3ViTGlzdCh0LGUuc3RhdGUsbyk7cmV0dXJuIGhhc0xpc3RJdGVtQmVmb3JlKHQsZS5zdGF0ZSkmJiFpP2UuY29tbWFuZHMuam9pbkl0ZW1CYWNrd2FyZCgpOmUuY2hhaW4oKS5saWZ0TGlzdEl0ZW0odCkucnVuKCl9LG5leHRMaXN0SXNEZWVwZXI9KGUsdCk9Pntjb25zdCBuPWdldE5leHRMaXN0RGVwdGgoZSx0KSxyPWZpbmRMaXN0SXRlbVBvcyhlLHQpO3JldHVybiEoIXJ8fCFuKSYmbj5yLmRlcHRofSxuZXh0TGlzdElzSGlnaGVyPShlLHQpPT57Y29uc3Qgbj1nZXROZXh0TGlzdERlcHRoKGUsdCkscj1maW5kTGlzdEl0ZW1Qb3MoZSx0KTtyZXR1cm4hKCFyfHwhbikmJm48ci5kZXB0aH0saGFuZGxlRGVsZXRlPShlLHQpPT57aWYoIWlzTm9kZUFjdGl2ZShlLnN0YXRlLHQpKXJldHVybiExO2lmKCEoKGUsdCk9Pntjb25zdHskZnJvbTpuLCR0bzpyLCRhbmNob3I6b309ZS5zZWxlY3Rpb247aWYodCl7Y29uc3Qgbj1maW5kUGFyZW50Tm9kZShlPT5lLnR5cGUubmFtZT09PXQpKGUuc2VsZWN0aW9uKTtpZighbilyZXR1cm4hMTtjb25zdCByPWUuZG9jLnJlc29sdmUobi5wb3MrMSk7cmV0dXJuIG8ucG9zKzE9PT1yLmVuZCgpfXJldHVybiEoci5wYXJlbnRPZmZzZXQ8ci5wYXJlbnQubm9kZVNpemUtMnx8bi5wb3MhPT1yLnBvcyl9KShlLnN0YXRlLHQpKXJldHVybiExO2NvbnN0e3NlbGVjdGlvbjpufT1lLnN0YXRlLHskZnJvbTpyLCR0bzpvfT1uO3JldHVybiEoIW4uZW1wdHkmJnIuc2FtZVBhcmVudChvKSkmJihuZXh0TGlzdElzRGVlcGVyKHQsZS5zdGF0ZSk/ZS5jaGFpbigpLmZvY3VzKGUuc3RhdGUuc2VsZWN0aW9uLmZyb20rNCkubGlmdCh0KS5qb2luQmFja3dhcmQoKS5ydW4oKTpuZXh0TGlzdElzSGlnaGVyKHQsZS5zdGF0ZSk/ZS5jaGFpbigpLmpvaW5Gb3J3YXJkKCkuam9pbkJhY2t3YXJkKCkucnVuKCk6ZS5jb21tYW5kcy5qb2luSXRlbUZvcndhcmQoKSl9LGhhc0xpc3RJdGVtQWZ0ZXI9KGUsdCk9Pnt2YXIgbjtjb25zdHskYW5jaG9yOnJ9PXQuc2VsZWN0aW9uLG89dC5kb2MucmVzb2x2ZShyLnBvcy1yLnBhcmVudE9mZnNldC0yKTtyZXR1cm4gby5pbmRleCgpIT09by5wYXJlbnQuY2hpbGRDb3VudC0xJiYobnVsbD09KG49by5ub2RlQWZ0ZXIpP3ZvaWQgMDpuLnR5cGUubmFtZSk9PT1lfSxLaT1qdC5jcmVhdGUoe25hbWU6Imxpc3RLZXltYXAiLGFkZE9wdGlvbnM6KCk9Pih7bGlzdFR5cGVzOlt7aXRlbU5hbWU6Imxpc3RJdGVtIix3cmFwcGVyTmFtZXM6WyJidWxsZXRMaXN0Iiwib3JkZXJlZExpc3QiXX0se2l0ZW1OYW1lOiJ0YXNrSXRlbSIsd3JhcHBlck5hbWVzOlsidGFza0xpc3QiXX1dfSksYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57RGVsZXRlOih7ZWRpdG9yOmV9KT0+e2xldCB0PSExO3JldHVybiB0aGlzLm9wdGlvbnMubGlzdFR5cGVzLmZvckVhY2goKHtpdGVtTmFtZTpufSk9Pnt2b2lkIDAhPT1lLnN0YXRlLnNjaGVtYS5ub2Rlc1tuXSYmaGFuZGxlRGVsZXRlKGUsbikmJih0PSEwKX0pLHR9LCJNb2QtRGVsZXRlIjooe2VkaXRvcjplfSk9PntsZXQgdD0hMTtyZXR1cm4gdGhpcy5vcHRpb25zLmxpc3RUeXBlcy5mb3JFYWNoKCh7aXRlbU5hbWU6bn0pPT57dm9pZCAwIT09ZS5zdGF0ZS5zY2hlbWEubm9kZXNbbl0mJmhhbmRsZURlbGV0ZShlLG4pJiYodD0hMCl9KSx0fSxCYWNrc3BhY2U6KHtlZGl0b3I6ZX0pPT57bGV0IHQ9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOm4sd3JhcHBlck5hbWVzOnJ9KT0+e3ZvaWQgMCE9PWUuc3RhdGUuc2NoZW1hLm5vZGVzW25dJiZoYW5kbGVCYWNrc3BhY2UoZSxuLHIpJiYodD0hMCl9KSx0fSwiTW9kLUJhY2tzcGFjZSI6KHtlZGl0b3I6ZX0pPT57bGV0IHQ9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOm4sd3JhcHBlck5hbWVzOnJ9KT0+e3ZvaWQgMCE9PWUuc3RhdGUuc2NoZW1hLm5vZGVzW25dJiZoYW5kbGVCYWNrc3BhY2UoZSxuLHIpJiYodD0hMCl9KSx0fX19fSksSmk9L14oXHMqKShcZCspXC5ccysoLiopJC8sR2k9L15ccy87ZnVuY3Rpb24gc3BsaXRJdGVtQ29udGVudChlKXtjb25zdCB0PVtdLG49W107bGV0IHI9ITE7cmV0dXJuIGUuZm9yRWFjaChlPT57aWYoIXIpcmV0dXJuIiI9PT1lLnRyaW0oKXx8dC5sZW5ndGg+MCYmZnVuY3Rpb24oZSl7Y29uc3QgdD1lLnRyaW1TdGFydCgpO3JldHVybi9eWy0rKl1ccysvLnRlc3QodCl8fC9eXGQrXC5ccysvLnRlc3QodCl8fC9ePlxzPy8udGVzdCh0KXx8L15gYGAvLnRlc3QodCl8fC9efn5+Ly50ZXN0KHQpfShlKT8ocj0hMCx2b2lkIG4ucHVzaChlKSk6dm9pZCB0LnB1c2goZSk7bi5wdXNoKGUpfSkse3BhcmFncmFwaExpbmVzOnQsYmxvY2tMaW5lczpufX1mdW5jdGlvbiBidWlsZE5lc3RlZFN0cnVjdHVyZShlLHQsbil7Y29uc3Qgcj1bXTtsZXQgbz0wO2Zvcig7bzxlLmxlbmd0aDspe2NvbnN0IGk9ZVtvXTtpZihpLmluZGVudD09PXQpe2NvbnN0e3BhcmFncmFwaExpbmVzOnMsYmxvY2tMaW5lczpsfT1zcGxpdEl0ZW1Db250ZW50KGkuY29udGVudExpbmVzKSxhPXMuam9pbigiXG4iKS50cmltKCksYz1bXTthJiZjLnB1c2goe3R5cGU6InBhcmFncmFwaCIscmF3OmEsdG9rZW5zOm4uaW5saW5lVG9rZW5zKGEpfSk7Y29uc3QgZD1sLmpvaW4oIlxuIikudHJpbSgpO2lmKGQpe2NvbnN0IGU9bi5ibG9ja1Rva2VucyhkKTtjLnB1c2goLi4uZSl9bGV0IHA9bysxO2NvbnN0IGY9W107Zm9yKDtwPGUubGVuZ3RoJiZlW3BdLmluZGVudD50OylmLnB1c2goZVtwXSkscCs9MTtpZihmLmxlbmd0aD4wKXtjb25zdCBlPU1hdGgubWluKC4uLmYubWFwKGU9PmUuaW5kZW50KSksdD1idWlsZE5lc3RlZFN0cnVjdHVyZShmLGUsbik7Yy5wdXNoKHt0eXBlOiJsaXN0IixvcmRlcmVkOiEwLHN0YXJ0OmZbMF0ubnVtYmVyLGl0ZW1zOnQscmF3OmYubWFwKGU9PmUucmF3KS5qb2luKCJcbiIpfSl9ci5wdXNoKHt0eXBlOiJsaXN0X2l0ZW0iLHJhdzppLnJhdyx0b2tlbnM6Y30pLG89cH1lbHNlIG8rPTF9cmV0dXJuIHJ9dmFyIFhpPSJ0ZXh0U3R5bGUiLFFpPS9eKFxkKylcLlxzJC8sWmk9b24uY3JlYXRlKHtuYW1lOiJvcmRlcmVkTGlzdCIsYWRkT3B0aW9uczooKT0+KHtpdGVtVHlwZU5hbWU6Imxpc3RJdGVtIixIVE1MQXR0cmlidXRlczp7fSxrZWVwTWFya3M6ITEsa2VlcEF0dHJpYnV0ZXM6ITF9KSxncm91cDoiYmxvY2sgbGlzdCIsY29udGVudCgpe3JldHVybmAke3RoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWV9K2B9LGFkZEF0dHJpYnV0ZXM6KCk9Pih7c3RhcnQ6e2RlZmF1bHQ6MSxwYXJzZUhUTUw6ZT0+ZS5oYXNBdHRyaWJ1dGUoInN0YXJ0Iik/cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoInN0YXJ0Iil8fCIiLDEwKToxfSx0eXBlOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJ0eXBlIil9fSkscGFyc2VIVE1MOigpPT5be3RhZzoib2wifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe2NvbnN0e3N0YXJ0OnQsLi4ubn09ZTtyZXR1cm4gMT09PXQ/WyJvbCIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXTpbIm9sIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdCIscGFyc2VNYXJrZG93bjooZSx0KT0+e2lmKCJsaXN0IiE9PWUudHlwZXx8IWUub3JkZXJlZClyZXR1cm5bXTtjb25zdCBuPWUuc3RhcnR8fDEscj1lLml0ZW1zP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGU9PntpZigibGlzdF9pdGVtIiE9PWUudHlwZSlyZXR1cm4gdC5wYXJzZUNoaWxkcmVuKFtlXSlbMF07Y29uc3Qgbj1bXTtyZXR1cm4gZS50b2tlbnMmJmUudG9rZW5zLmxlbmd0aD4wJiZlLnRva2Vucy5mb3JFYWNoKGU9PntpZigicGFyYWdyYXBoIj09PWUudHlwZXx8Imxpc3QiPT09ZS50eXBlfHwiYmxvY2txdW90ZSI9PT1lLnR5cGV8fCJjb2RlIj09PWUudHlwZSluLnB1c2goLi4udC5wYXJzZUNoaWxkcmVuKFtlXSkpO2Vsc2UgaWYoInRleHQiPT09ZS50eXBlJiZlLnRva2Vucyl7Y29uc3Qgcj10LnBhcnNlQ2hpbGRyZW4oW2VdKTtuLnB1c2goe3R5cGU6InBhcmFncmFwaCIsY29udGVudDpyfSl9ZWxzZXtjb25zdCByPXQucGFyc2VDaGlsZHJlbihbZV0pO3IubGVuZ3RoPjAmJm4ucHVzaCguLi5yKX19KSx7dHlwZToibGlzdEl0ZW0iLGNvbnRlbnQ6bn19KX0oZS5pdGVtcyx0KTpbXTtyZXR1cm4gMSE9PW4/e3R5cGU6Im9yZGVyZWRMaXN0IixhdHRyczp7c3RhcnQ6bn0sY29udGVudDpyfTp7dHlwZToib3JkZXJlZExpc3QiLGNvbnRlbnQ6cn19LHJlbmRlck1hcmtkb3duOihlLHQpPT5lLmNvbnRlbnQ/dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQsIlxuIik6IiIsbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6Im9yZGVyZWRMaXN0IixsZXZlbDoiYmxvY2siLHN0YXJ0OmU9Pntjb25zdCB0PWUubWF0Y2goL14oXHMqKShcZCspXC5ccysvKSxuPW51bGw9PXQ/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PW4/bjotMX0sdG9rZW5pemU6KGUsdCxuKT0+e3ZhciByO2NvbnN0IG89ZS5zcGxpdCgiXG4iKSxbaSxzXT1mdW5jdGlvbihlKXtjb25zdCB0PVtdO2xldCBuPTAscj0wO2Zvcig7bjxlLmxlbmd0aDspe2NvbnN0IG89ZVtuXSxpPW8ubWF0Y2goSmkpO2lmKCFpKWJyZWFrO2NvbnN0WyxzLGwsYV09aSxjPXMubGVuZ3RoLGQ9W2FdO2xldCBwPW4rMTtjb25zdCBmPVtvXTtsZXQgbT0hMTtmb3IoO3A8ZS5sZW5ndGg7KXtjb25zdCB0PWVbcF07aWYodC5tYXRjaChKaSkpYnJlYWs7aWYoIiI9PT10LnRyaW0oKSlmLnB1c2godCksZC5wdXNoKCIiKSxtPSEwLHArPTE7ZWxzZSBpZih0Lm1hdGNoKEdpKSlmLnB1c2godCksZC5wdXNoKHQuc2xpY2UoYysyKSkscCs9MTtlbHNle2lmKG0pYnJlYWs7Zi5wdXNoKHQpLGQucHVzaCh0KSxwKz0xfX10LnB1c2goe2luZGVudDpjLG51bWJlcjpwYXJzZUludChsLDEwKSxjb250ZW50OmQuam9pbigiXG4iKS50cmltKCksY29udGVudExpbmVzOmQscmF3OmYuam9pbigiXG4iKX0pLHI9cCxuPXB9cmV0dXJuW3Qscl19KG8pO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47Y29uc3QgbD1idWlsZE5lc3RlZFN0cnVjdHVyZShpLDAsbik7aWYoMD09PWwubGVuZ3RoKXJldHVybjtyZXR1cm57dHlwZToibGlzdCIsb3JkZXJlZDohMCxzdGFydDoobnVsbD09KHI9aVswXSk/dm9pZCAwOnIubnVtYmVyKXx8MSxpdGVtczpsLHJhdzpvLnNsaWNlKDAscykuam9pbigiXG4iKX19fSxtYXJrZG93bk9wdGlvbnM6e2luZGVudHNDb250ZW50OiEwfSxhZGRDb21tYW5kcygpe3JldHVybnt0b2dnbGVPcmRlcmVkTGlzdDooKT0+KHtjb21tYW5kczplLGNoYWluOnR9KT0+dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzP3QoKS50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lLHRoaXMub3B0aW9ucy5rZWVwTWFya3MpLnVwZGF0ZUF0dHJpYnV0ZXMoImxpc3RJdGVtIix0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFhpKSkucnVuKCk6ZS50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lLHRoaXMub3B0aW9ucy5rZWVwTWFya3MpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC03IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlT3JkZXJlZExpc3QoKX19LGFkZElucHV0UnVsZXMoKXtsZXQgZT13cmFwcGluZ0lucHV0UnVsZSh7ZmluZDpRaSx0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOmU9Pih7c3RhcnQ6K2VbMV19KSxqb2luUHJlZGljYXRlOihlLHQpPT50LmNoaWxkQ291bnQrdC5hdHRycy5zdGFydD09PStlWzFdfSk7cmV0dXJuKHRoaXMub3B0aW9ucy5rZWVwTWFya3N8fHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcykmJihlPXdyYXBwaW5nSW5wdXRSdWxlKHtmaW5kOlFpLHR5cGU6dGhpcy50eXBlLGtlZXBNYXJrczp0aGlzLm9wdGlvbnMua2VlcE1hcmtzLGtlZXBBdHRyaWJ1dGVzOnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcyxnZXRBdHRyaWJ1dGVzOmU9Pih7c3RhcnQ6K2VbMV0sLi4udGhpcy5lZGl0b3IuZ2V0QXR0cmlidXRlcyhYaSl9KSxqb2luUHJlZGljYXRlOihlLHQpPT50LmNoaWxkQ291bnQrdC5hdHRycy5zdGFydD09PStlWzFdLGVkaXRvcjp0aGlzLmVkaXRvcn0pKSxbZV19fSksWWk9L15ccyooXFsoWyggfHhdKT9cXSlccyQvLGVzPW9uLmNyZWF0ZSh7bmFtZToidGFza0l0ZW0iLGFkZE9wdGlvbnM6KCk9Pih7bmVzdGVkOiExLEhUTUxBdHRyaWJ1dGVzOnt9LHRhc2tMaXN0VHlwZU5hbWU6InRhc2tMaXN0IixhMTF5OnZvaWQgMH0pLGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5vcHRpb25zLm5lc3RlZD8icGFyYWdyYXBoIGJsb2NrKiI6InBhcmFncmFwaCsifSxkZWZpbmluZzohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe2NoZWNrZWQ6e2RlZmF1bHQ6ITEsa2VlcE9uU3BsaXQ6ITEscGFyc2VIVE1MOmU9Pntjb25zdCB0PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWNoZWNrZWQiKTtyZXR1cm4iIj09PXR8fCJ0cnVlIj09PXR9LHJlbmRlckhUTUw6ZT0+KHsiZGF0YS1jaGVja2VkIjplLmNoZWNrZWR9KX19KSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzpgbGlbZGF0YS10eXBlPSIke3RoaXMubmFtZX0iXWAscHJpb3JpdHk6NTF9XX0scmVuZGVySFRNTCh7bm9kZTplLEhUTUxBdHRyaWJ1dGVzOnR9KXtyZXR1cm5bImxpIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQseyJkYXRhLXR5cGUiOnRoaXMubmFtZX0pLFsibGFiZWwiLFsiaW5wdXQiLHt0eXBlOiJjaGVja2JveCIsY2hlY2tlZDplLmF0dHJzLmNoZWNrZWQ/ImNoZWNrZWQiOm51bGx9XSxbInNwYW4iXV0sWyJkaXYiLDBdXX0scGFyc2VNYXJrZG93bjooZSx0KT0+e2NvbnN0IG49W107aWYoZS50b2tlbnMmJmUudG9rZW5zLmxlbmd0aD4wP24ucHVzaCh0LmNyZWF0ZU5vZGUoInBhcmFncmFwaCIse30sdC5wYXJzZUlubGluZShlLnRva2VucykpKTplLnRleHQ/bi5wdXNoKHQuY3JlYXRlTm9kZSgicGFyYWdyYXBoIix7fSxbdC5jcmVhdGVOb2RlKCJ0ZXh0Iix7dGV4dDplLnRleHR9KV0pKTpuLnB1c2godC5jcmVhdGVOb2RlKCJwYXJhZ3JhcGgiLHt9LFtdKSksZS5uZXN0ZWRUb2tlbnMmJmUubmVzdGVkVG9rZW5zLmxlbmd0aD4wKXtjb25zdCByPXQucGFyc2VDaGlsZHJlbihlLm5lc3RlZFRva2Vucyk7bi5wdXNoKC4uLnIpfXJldHVybiB0LmNyZWF0ZU5vZGUoInRhc2tJdGVtIix7Y2hlY2tlZDplLmNoZWNrZWR8fCExfSxuKX0scmVuZGVyTWFya2Rvd246KGUsdCk9Pnt2YXIgbjtyZXR1cm4gcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50KGUsdCxgLSBbJHsobnVsbD09KG49ZS5hdHRycyk/dm9pZCAwOm4uY2hlY2tlZCk/IngiOiIgIn1dIGApfSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe2NvbnN0IGU9e0VudGVyOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zcGxpdExpc3RJdGVtKHRoaXMubmFtZSksIlNoaWZ0LVRhYiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmxpZnRMaXN0SXRlbSh0aGlzLm5hbWUpfTtyZXR1cm4gdGhpcy5vcHRpb25zLm5lc3RlZD97Li4uZSxUYWI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNpbmtMaXN0SXRlbSh0aGlzLm5hbWUpfTplfSxhZGROb2RlVmlldygpe3JldHVybih7bm9kZTplLEhUTUxBdHRyaWJ1dGVzOnQsZ2V0UG9zOm4sZWRpdG9yOnJ9KT0+e2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIiksbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdXBkYXRlQTExWT1lPT57dmFyIHQsbjtsLmFyaWFMYWJlbD0obnVsbD09KG49bnVsbD09KHQ9dGhpcy5vcHRpb25zLmExMXkpP3ZvaWQgMDp0LmNoZWNrYm94TGFiZWwpP3ZvaWQgMDpuLmNhbGwodCxlLGwuY2hlY2tlZCkpfHxgVGFzayBpdGVtIGNoZWNrYm94IGZvciAke2UudGV4dENvbnRlbnR8fCJlbXB0eSB0YXNrIGl0ZW0ifWB9O3VwZGF0ZUExMVkoZSksaS5jb250ZW50RWRpdGFibGU9ImZhbHNlIixsLnR5cGU9ImNoZWNrYm94IixsLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsZT0+ZS5wcmV2ZW50RGVmYXVsdCgpKSxsLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdD0+e2lmKCFyLmlzRWRpdGFibGUmJiF0aGlzLm9wdGlvbnMub25SZWFkT25seUNoZWNrZWQpcmV0dXJuIHZvaWQobC5jaGVja2VkPSFsLmNoZWNrZWQpO2NvbnN0e2NoZWNrZWQ6b309dC50YXJnZXQ7ci5pc0VkaXRhYmxlJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmci5jaGFpbigpLmZvY3VzKHZvaWQgMCx7c2Nyb2xsSW50b1ZpZXc6ITF9KS5jb21tYW5kKCh7dHI6ZX0pPT57Y29uc3QgdD1uKCk7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiExO2NvbnN0IHI9ZS5kb2Mubm9kZUF0KHQpO3JldHVybiBlLnNldE5vZGVNYXJrdXAodCx2b2lkIDAsey4uLm51bGw9PXI/dm9pZCAwOnIuYXR0cnMsY2hlY2tlZDpvfSksITB9KS5ydW4oKSwhci5pc0VkaXRhYmxlJiZ0aGlzLm9wdGlvbnMub25SZWFkT25seUNoZWNrZWQmJih0aGlzLm9wdGlvbnMub25SZWFkT25seUNoZWNrZWQoZSxvKXx8KGwuY2hlY2tlZD0hbC5jaGVja2VkKSl9KSxPYmplY3QuZW50cmllcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMpLmZvckVhY2goKFtlLHRdKT0+e28uc2V0QXR0cmlidXRlKGUsdCl9KSxvLmRhdGFzZXQuY2hlY2tlZD1lLmF0dHJzLmNoZWNrZWQsbC5jaGVja2VkPWUuYXR0cnMuY2hlY2tlZCxpLmFwcGVuZChsLHMpLG8uYXBwZW5kKGksYSksT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW2UsdF0pPT57by5zZXRBdHRyaWJ1dGUoZSx0KX0pO2xldCBjPW5ldyBTZXQoT2JqZWN0LmtleXModCkpO3JldHVybntkb206byxjb250ZW50RE9NOmEsdXBkYXRlOmU9PntpZihlLnR5cGUhPT10aGlzLnR5cGUpcmV0dXJuITE7by5kYXRhc2V0LmNoZWNrZWQ9ZS5hdHRycy5jaGVja2VkLGwuY2hlY2tlZD1lLmF0dHJzLmNoZWNrZWQsdXBkYXRlQTExWShlKTtjb25zdCB0PWdldFJlbmRlcmVkQXR0cmlidXRlcyhlLHIuZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzKSxuPW5ldyBTZXQoT2JqZWN0LmtleXModCkpLGk9dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzO3JldHVybiBjLmZvckVhY2goZT0+e24uaGFzKGUpfHwoZSBpbiBpP28uc2V0QXR0cmlidXRlKGUsaVtlXSk6by5yZW1vdmVBdHRyaWJ1dGUoZSkpfSksT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW2UsdF0pPT57bnVsbD09dD9lIGluIGk/by5zZXRBdHRyaWJ1dGUoZSxpW2VdKTpvLnJlbW92ZUF0dHJpYnV0ZShlKTpvLnNldEF0dHJpYnV0ZShlLHQpfSksYz1uLCEwfX19fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW3dyYXBwaW5nSW5wdXRSdWxlKHtmaW5kOllpLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtjaGVja2VkOiJ4Ij09PWVbZS5sZW5ndGgtMV19KX0pXX19KSxucz1vbi5jcmVhdGUoe25hbWU6InRhc2tMaXN0IixhZGRPcHRpb25zOigpPT4oe2l0ZW1UeXBlTmFtZToidGFza0l0ZW0iLEhUTUxBdHRyaWJ1dGVzOnt9fSksZ3JvdXA6ImJsb2NrIGxpc3QiLGNvbnRlbnQoKXtyZXR1cm5gJHt0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lfStgfSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzpgdWxbZGF0YS10eXBlPSIke3RoaXMubmFtZX0iXWAscHJpb3JpdHk6NTF9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsidWwiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSx7ImRhdGEtdHlwZSI6dGhpcy5uYW1lfSksMF19LHBhcnNlTWFya2Rvd246KGUsdCk9PnQuY3JlYXRlTm9kZSgidGFza0xpc3QiLHt9LHQucGFyc2VDaGlsZHJlbihlLml0ZW1zfHxbXSkpLHJlbmRlck1hcmtkb3duOihlLHQpPT5lLmNvbnRlbnQ/dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQsIlxuIik6IiIsbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6InRhc2tMaXN0IixsZXZlbDoiYmxvY2siLHN0YXJ0KGUpe3ZhciB0O2NvbnN0IG49bnVsbD09KHQ9ZS5tYXRjaCgvXlxzKlstKypdXHMrXFsoWyB4WF0pXF1ccysvKSk/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PW4/bjotMX0sdG9rZW5pemUoZSx0LG4pe2NvbnN0IHBhcnNlVGFza0xpc3RDb250ZW50PWU9Pntjb25zdCB0PXBhcnNlSW5kZW50ZWRCbG9ja3MoZSx7aXRlbVBhdHRlcm46L14oXHMqKShbLSsqXSlccytcWyhbIHhYXSlcXVxzKyguKikkLyxleHRyYWN0SXRlbURhdGE6ZT0+KHtpbmRlbnRMZXZlbDplWzFdLmxlbmd0aCxtYWluQ29udGVudDplWzRdLGNoZWNrZWQ6IngiPT09ZVszXS50b0xvd2VyQ2FzZSgpfSksY3JlYXRlVG9rZW46KGUsdCk9Pih7dHlwZToidGFza0l0ZW0iLHJhdzoiIixtYWluQ29udGVudDplLm1haW5Db250ZW50LGluZGVudExldmVsOmUuaW5kZW50TGV2ZWwsY2hlY2tlZDplLmNoZWNrZWQsdGV4dDplLm1haW5Db250ZW50LHRva2VuczpuLmlubGluZVRva2VucyhlLm1haW5Db250ZW50KSxuZXN0ZWRUb2tlbnM6dH0pLGN1c3RvbU5lc3RlZFBhcnNlcjpwYXJzZVRhc2tMaXN0Q29udGVudH0sbik7cmV0dXJuIHQ/W3t0eXBlOiJ0YXNrTGlzdCIscmF3OnQucmF3LGl0ZW1zOnQuaXRlbXN9XTpuLmJsb2NrVG9rZW5zKGUpfSxyPXBhcnNlSW5kZW50ZWRCbG9ja3MoZSx7aXRlbVBhdHRlcm46L14oXHMqKShbLSsqXSlccytcWyhbIHhYXSlcXVxzKyguKikkLyxleHRyYWN0SXRlbURhdGE6ZT0+KHtpbmRlbnRMZXZlbDplWzFdLmxlbmd0aCxtYWluQ29udGVudDplWzRdLGNoZWNrZWQ6IngiPT09ZVszXS50b0xvd2VyQ2FzZSgpfSksY3JlYXRlVG9rZW46KGUsdCk9Pih7dHlwZToidGFza0l0ZW0iLHJhdzoiIixtYWluQ29udGVudDplLm1haW5Db250ZW50LGluZGVudExldmVsOmUuaW5kZW50TGV2ZWwsY2hlY2tlZDplLmNoZWNrZWQsdGV4dDplLm1haW5Db250ZW50LHRva2VuczpuLmlubGluZVRva2VucyhlLm1haW5Db250ZW50KSxuZXN0ZWRUb2tlbnM6dH0pLGN1c3RvbU5lc3RlZFBhcnNlcjpwYXJzZVRhc2tMaXN0Q29udGVudH0sbik7aWYocilyZXR1cm57dHlwZToidGFza0xpc3QiLHJhdzpyLnJhdyxpdGVtczpyLml0ZW1zfX19LG1hcmtkb3duT3B0aW9uczp7aW5kZW50c0NvbnRlbnQ6ITB9LGFkZENvbW1hbmRzKCl7cmV0dXJue3RvZ2dsZVRhc2tMaXN0OigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtOSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZVRhc2tMaXN0KCl9fX0pO2p0LmNyZWF0ZSh7bmFtZToibGlzdEtpdCIsYWRkRXh0ZW5zaW9ucygpe2NvbnN0IGU9W107cmV0dXJuITEhPT10aGlzLm9wdGlvbnMuYnVsbGV0TGlzdCYmZS5wdXNoKFVpLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYnVsbGV0TGlzdCkpLCExIT09dGhpcy5vcHRpb25zLmxpc3RJdGVtJiZlLnB1c2goV2kuY29uZmlndXJlKHRoaXMub3B0aW9ucy5saXN0SXRlbSkpLCExIT09dGhpcy5vcHRpb25zLmxpc3RLZXltYXAmJmUucHVzaChLaS5jb25maWd1cmUodGhpcy5vcHRpb25zLmxpc3RLZXltYXApKSwhMSE9PXRoaXMub3B0aW9ucy5vcmRlcmVkTGlzdCYmZS5wdXNoKFppLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMub3JkZXJlZExpc3QpKSwhMSE9PXRoaXMub3B0aW9ucy50YXNrSXRlbSYmZS5wdXNoKGVzLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMudGFza0l0ZW0pKSwhMSE9PXRoaXMub3B0aW9ucy50YXNrTGlzdCYmZS5wdXNoKG5zLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMudGFza0xpc3QpKSxlfX0pO3ZhciBycz0iJm5ic3A7Iixpcz1vbi5jcmVhdGUoe25hbWU6InBhcmFncmFwaCIscHJpb3JpdHk6MWUzLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxncm91cDoiYmxvY2siLGNvbnRlbnQ6ImlubGluZSoiLHBhcnNlSFRNTDooKT0+W3t0YWc6InAifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsicCIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKSwwXX0scGFyc2VNYXJrZG93bjooZSx0KT0+e2NvbnN0IG49ZS50b2tlbnN8fFtdO2lmKDE9PT1uLmxlbmd0aCYmImltYWdlIj09PW5bMF0udHlwZSlyZXR1cm4gdC5wYXJzZUNoaWxkcmVuKFtuWzBdXSk7Y29uc3Qgcj10LnBhcnNlSW5saW5lKG4pO3JldHVybiEoMT09PW4ubGVuZ3RoJiYidGV4dCI9PT1uWzBdLnR5cGUmJihuWzBdLnJhdz09PXJzfHxuWzBdLnRleHQ9PT1yc3x8IsKgIj09PW5bMF0ucmF3fHwiwqAiPT09blswXS50ZXh0KSl8fDEhPT1yLmxlbmd0aHx8InRleHQiIT09clswXS50eXBlfHxyWzBdLnRleHQhPT1ycyYmIsKgIiE9PXJbMF0udGV4dD90LmNyZWF0ZU5vZGUoInBhcmFncmFwaCIsdm9pZCAwLHIpOnQuY3JlYXRlTm9kZSgicGFyYWdyYXBoIix2b2lkIDAsW10pfSxyZW5kZXJNYXJrZG93bjooZSx0LG4pPT57dmFyIHIsbztpZighZSlyZXR1cm4iIjtjb25zdCBpPUFycmF5LmlzQXJyYXkoZS5jb250ZW50KT9lLmNvbnRlbnQ6W107aWYoMD09PWkubGVuZ3RoKXtjb25zdCBlPUFycmF5LmlzQXJyYXkobnVsbD09KHI9bnVsbD09bj92b2lkIDA6bi5wcmV2aW91c05vZGUpP3ZvaWQgMDpyLmNvbnRlbnQpP24ucHJldmlvdXNOb2RlLmNvbnRlbnQ6W107cmV0dXJuInBhcmFncmFwaCI9PT0obnVsbD09KG89bnVsbD09bj92b2lkIDA6bi5wcmV2aW91c05vZGUpP3ZvaWQgMDpvLnR5cGUpJiYwPT09ZS5sZW5ndGg/cnM6IiJ9cmV0dXJuIHQucmVuZGVyQ2hpbGRyZW4oaSl9LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldFBhcmFncmFwaDooKT0+KHtjb21tYW5kczplfSk9PmUuc2V0Tm9kZSh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1BbHQtMCI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNldFBhcmFncmFwaCgpfX19KSxzcz0vKD86Xnxccykofn4oPyFccyt+fikoKD86W15+XSspKX5+KD8hXHMrfn4pKSQvLGxzPS8oPzpefFxzKSh+fig/IVxzK35+KSgoPzpbXn5dKykpfn4oPyFccyt+fikpL2csYXM9RnQuY3JlYXRlKHtuYW1lOiJzdHJpa2UiLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxwYXJzZUhUTUw6KCk9Plt7dGFnOiJzIn0se3RhZzoiZGVsIn0se3RhZzoic3RyaWtlIn0se3N0eWxlOiJ0ZXh0LWRlY29yYXRpb24iLGNvbnN1bWluZzohMSxnZXRBdHRyczplPT4hIWUuaW5jbHVkZXMoImxpbmUtdGhyb3VnaCIpJiZ7fX1dLHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bInMiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJkZWwiLHBhcnNlTWFya2Rvd246KGUsdCk9PnQuYXBwbHlNYXJrKCJzdHJpa2UiLHQucGFyc2VJbmxpbmUoZS50b2tlbnN8fFtdKSkscmVuZGVyTWFya2Rvd246KGUsdCk9PmB+fiR7dC5yZW5kZXJDaGlsZHJlbihlKX1+fmAsYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0U3RyaWtlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlU3RyaWtlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRTdHJpa2U6KCk9Pih7Y29tbWFuZHM6ZX0pPT5lLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC1zIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlU3RyaWtlKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6c3MsdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bbWFya1Bhc3RlUnVsZSh7ZmluZDpscyx0eXBlOnRoaXMudHlwZX0pXX19KSxjcz1vbi5jcmVhdGUoe25hbWU6InRleHQiLGdyb3VwOiJpbmxpbmUiLHBhcnNlTWFya2Rvd246ZT0+KHt0eXBlOiJ0ZXh0Iix0ZXh0OmUudGV4dHx8IiJ9KSxyZW5kZXJNYXJrZG93bjplPT5lLnRleHR8fCIifSksZHM9RnQuY3JlYXRlKHtuYW1lOiJ1bmRlcmxpbmUiLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxwYXJzZUhUTUw6KCk9Plt7dGFnOiJ1In0se3N0eWxlOiJ0ZXh0LWRlY29yYXRpb24iLGNvbnN1bWluZzohMSxnZXRBdHRyczplPT4hIWUuaW5jbHVkZXMoInVuZGVybGluZSIpJiZ7fX1dLHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bInUiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LHBhcnNlTWFya2Rvd24oZSx0KXtyZXR1cm4gdC5hcHBseU1hcmsodGhpcy5uYW1lfHwidW5kZXJsaW5lIix0LnBhcnNlSW5saW5lKGUudG9rZW5zfHxbXSkpfSxyZW5kZXJNYXJrZG93bjooZSx0KT0+YCsrJHt0LnJlbmRlckNoaWxkcmVuKGUpfSsrYCxtYXJrZG93blRva2VuaXplcjp7bmFtZToidW5kZXJsaW5lIixsZXZlbDoiaW5saW5lIixzdGFydDplPT5lLmluZGV4T2YoIisrIiksdG9rZW5pemUoZSx0LG4pe2NvbnN0IHI9L14oXCtcKykoW1xzXFNdKz8pKFwrXCspLy5leGVjKGUpO2lmKCFyKXJldHVybjtjb25zdCBvPXJbMl0udHJpbSgpO3JldHVybnt0eXBlOiJ1bmRlcmxpbmUiLHJhdzpyWzBdLHRleHQ6byx0b2tlbnM6bi5pbmxpbmVUb2tlbnMobyl9fX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0VW5kZXJsaW5lOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlVW5kZXJsaW5lOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRVbmRlcmxpbmU6KCk9Pih7Y29tbWFuZHM6ZX0pPT5lLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC11IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlVW5kZXJsaW5lKCksIk1vZC1VIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlVW5kZXJsaW5lKCl9fX0pLHBzPWp0LmNyZWF0ZSh7bmFtZToic3RhcnRlcktpdCIsYWRkRXh0ZW5zaW9ucygpe3ZhciBlLHQsbixyO2NvbnN0IG89W107cmV0dXJuITEhPT10aGlzLm9wdGlvbnMuYm9sZCYmby5wdXNoKFFyLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYm9sZCkpLCExIT09dGhpcy5vcHRpb25zLmJsb2NrcXVvdGUmJm8ucHVzaChXci5jb25maWd1cmUodGhpcy5vcHRpb25zLmJsb2NrcXVvdGUpKSwhMSE9PXRoaXMub3B0aW9ucy5idWxsZXRMaXN0JiZvLnB1c2goVWkuY29uZmlndXJlKHRoaXMub3B0aW9ucy5idWxsZXRMaXN0KSksITEhPT10aGlzLm9wdGlvbnMuY29kZSYmby5wdXNoKGFuLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZSkpLCExIT09dGhpcy5vcHRpb25zLmNvZGVCbG9jayYmby5wdXNoKGVvLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZUJsb2NrKSksITEhPT10aGlzLm9wdGlvbnMuZG9jdW1lbnQmJm8ucHVzaCh0by5jb25maWd1cmUodGhpcy5vcHRpb25zLmRvY3VtZW50KSksITEhPT10aGlzLm9wdGlvbnMuZHJvcGN1cnNvciYmby5wdXNoKEVuLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZHJvcGN1cnNvcikpLCExIT09dGhpcy5vcHRpb25zLmdhcGN1cnNvciYmby5wdXNoKE5uLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZ2FwY3Vyc29yKSksITEhPT10aGlzLm9wdGlvbnMuaGFyZEJyZWFrJiZvLnB1c2gobm8uY29uZmlndXJlKHRoaXMub3B0aW9ucy5oYXJkQnJlYWspKSwhMSE9PXRoaXMub3B0aW9ucy5oZWFkaW5nJiZvLnB1c2gocm8uY29uZmlndXJlKHRoaXMub3B0aW9ucy5oZWFkaW5nKSksITEhPT10aGlzLm9wdGlvbnMudW5kb1JlZG8mJm8ucHVzaChJbi5jb25maWd1cmUodGhpcy5vcHRpb25zLnVuZG9SZWRvKSksITEhPT10aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFJ1bGUmJm8ucHVzaChkbi5jb25maWd1cmUodGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlKSksITEhPT10aGlzLm9wdGlvbnMuaXRhbGljJiZvLnB1c2goYW8uY29uZmlndXJlKHRoaXMub3B0aW9ucy5pdGFsaWMpKSwhMSE9PXRoaXMub3B0aW9ucy5saXN0SXRlbSYmby5wdXNoKFdpLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKSwhMSE9PXRoaXMub3B0aW9ucy5saXN0S2V5bWFwJiZvLnB1c2goS2kuY29uZmlndXJlKG51bGw9PShlPXRoaXMub3B0aW9ucyk/dm9pZCAwOmUubGlzdEtleW1hcCkpLCExIT09dGhpcy5vcHRpb25zLmxpbmsmJm8ucHVzaChWaS5jb25maWd1cmUobnVsbD09KHQ9dGhpcy5vcHRpb25zKT92b2lkIDA6dC5saW5rKSksITEhPT10aGlzLm9wdGlvbnMub3JkZXJlZExpc3QmJm8ucHVzaChaaS5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSksITEhPT10aGlzLm9wdGlvbnMucGFyYWdyYXBoJiZvLnB1c2goaXMuY29uZmlndXJlKHRoaXMub3B0aW9ucy5wYXJhZ3JhcGgpKSwhMSE9PXRoaXMub3B0aW9ucy5zdHJpa2UmJm8ucHVzaChhcy5jb25maWd1cmUodGhpcy5vcHRpb25zLnN0cmlrZSkpLCExIT09dGhpcy5vcHRpb25zLnRleHQmJm8ucHVzaChjcy5jb25maWd1cmUodGhpcy5vcHRpb25zLnRleHQpKSwhMSE9PXRoaXMub3B0aW9ucy51bmRlcmxpbmUmJm8ucHVzaChkcy5jb25maWd1cmUobnVsbD09KG49dGhpcy5vcHRpb25zKT92b2lkIDA6bi51bmRlcmxpbmUpKSwhMSE9PXRoaXMub3B0aW9ucy50cmFpbGluZ05vZGUmJm8ucHVzaChQbi5jb25maWd1cmUobnVsbD09KHI9dGhpcy5vcHRpb25zKT92b2lkIDA6ci50cmFpbGluZ05vZGUpKSxvfX0pO2Z1bmN0aW9uIHVzZURlYm91bmNlZFJlZihlKXtyZXR1cm4gVygodCxuKT0+KHtnZXQ6KCk9Pih0KCksZSksc2V0KHQpe2U9dCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuKCl9KX0pfX0pKX12YXIgaHM9Y2xhc3MgZXh0ZW5kcyBubntjb25zdHJ1Y3RvcihlPXt9KXtyZXR1cm4gc3VwZXIoZSksdGhpcy5jb250ZW50Q29tcG9uZW50PW51bGwsdGhpcy5hcHBDb250ZXh0PW51bGwsdGhpcy5yZWFjdGl2ZVN0YXRlPXVzZURlYm91bmNlZFJlZih0aGlzLnZpZXcuc3RhdGUpLHRoaXMucmVhY3RpdmVFeHRlbnNpb25TdG9yYWdlPXVzZURlYm91bmNlZFJlZih0aGlzLmV4dGVuc2lvblN0b3JhZ2UpLHRoaXMub24oImJlZm9yZVRyYW5zYWN0aW9uIiwoe25leHRTdGF0ZTplfSk9Pnt0aGlzLnJlYWN0aXZlU3RhdGUudmFsdWU9ZSx0aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZS52YWx1ZT10aGlzLmV4dGVuc2lvblN0b3JhZ2V9KSxxKHRoaXMpfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGU/dGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlOnRoaXMudmlldy5zdGF0ZX1nZXQgc3RvcmFnZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZT90aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZS52YWx1ZTpzdXBlci5zdG9yYWdlfXJlZ2lzdGVyUGx1Z2luKGUsdCl7Y29uc3Qgbj1zdXBlci5yZWdpc3RlclBsdWdpbihlLHQpO3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGUmJih0aGlzLnJlYWN0aXZlU3RhdGUudmFsdWU9biksbn11bnJlZ2lzdGVyUGx1Z2luKGUpe2NvbnN0IHQ9c3VwZXIudW5yZWdpc3RlclBsdWdpbihlKTtyZXR1cm4gdGhpcy5yZWFjdGl2ZVN0YXRlJiZ0JiYodGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlPXQpLHR9fSx1cz1MKHtuYW1lOiJFZGl0b3JDb250ZW50Iixwcm9wczp7ZWRpdG9yOntkZWZhdWx0Om51bGwsdHlwZTpPYmplY3R9fSxzZXR1cChlKXtjb25zdCB0PV8oKSxuPWooKTtyZXR1cm4gQigoKT0+e2NvbnN0IHI9ZS5lZGl0b3I7ciYmci5vcHRpb25zLmVsZW1lbnQmJnQudmFsdWUmJkYoKCk9Pnt2YXIgZTtpZighdC52YWx1ZXx8IShudWxsPT0oZT1yLnZpZXcuZG9tKT92b2lkIDA6ZS5wYXJlbnROb2RlKSlyZXR1cm47Y29uc3Qgbz1IKHQudmFsdWUpO3QudmFsdWUuYXBwZW5kKC4uLnIudmlldy5kb20ucGFyZW50Tm9kZS5jaGlsZE5vZGVzKSxyLmNvbnRlbnRDb21wb25lbnQ9bi5jdHguXyxuJiYoci5hcHBDb250ZXh0PXsuLi5uLmFwcENvbnRleHQscHJvdmlkZXM6bi5wcm92aWRlc30pLHIuc2V0T3B0aW9ucyh7ZWxlbWVudDpvfSksci5jcmVhdGVOb2RlVmlld3MoKX0pfSksJCgoKT0+e2NvbnN0IHQ9ZS5lZGl0b3I7dCYmKHQuY29udGVudENvbXBvbmVudD1udWxsLHQuYXBwQ29udGV4dD1udWxsKX0pLHtyb290RWw6dH19LHJlbmRlcigpe3JldHVybiB6KCJkaXYiLHtyZWY6ZT0+e3RoaXMucm9vdEVsPWV9fSl9fSk7Y29uc3QgZnM9WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSxtcz1bInN0YXJ0IiwiZW5kIl0sZ3M9ZnMucmVkdWNlKChlLHQpPT5lLmNvbmNhdCh0LHQrIi0iK21zWzBdLHQrIi0iK21zWzFdKSxbXSkseXM9TWF0aC5taW4sa3M9TWF0aC5tYXgsd3M9TWF0aC5yb3VuZCxjcmVhdGVDb29yZHM9ZT0+KHt4OmUseTplfSksYnM9e2xlZnQ6InJpZ2h0IixyaWdodDoibGVmdCIsYm90dG9tOiJ0b3AiLHRvcDoiYm90dG9tIn07ZnVuY3Rpb24gY2xhbXAoZSx0LG4pe3JldHVybiBrcyhlLHlzKHQsbikpfWZ1bmN0aW9uIGV2YWx1YXRlKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0KTplfWZ1bmN0aW9uIGdldFNpZGUoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVswXX1mdW5jdGlvbiBnZXRBbGlnbm1lbnQoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVsxXX1mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoZSl7cmV0dXJuIngiPT09ZT8ieSI6IngifWZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoZSl7cmV0dXJuInkiPT09ZT8iaGVpZ2h0Ijoid2lkdGgifWZ1bmN0aW9uIGdldFNpZGVBeGlzKGUpe2NvbnN0IHQ9ZVswXTtyZXR1cm4idCI9PT10fHwiYiI9PT10PyJ5IjoieCJ9ZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhlKXtyZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKGUpKX1mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhlLHQsbil7dm9pZCAwPT09biYmKG49ITEpO2NvbnN0IHI9Z2V0QWxpZ25tZW50KGUpLG89Z2V0QWxpZ25tZW50QXhpcyhlKSxpPWdldEF4aXNMZW5ndGgobyk7bGV0IHM9IngiPT09bz9yPT09KG4/ImVuZCI6InN0YXJ0Iik/InJpZ2h0IjoibGVmdCI6InN0YXJ0Ij09PXI/ImJvdHRvbSI6InRvcCI7cmV0dXJuIHQucmVmZXJlbmNlW2ldPnQuZmxvYXRpbmdbaV0mJihzPWdldE9wcG9zaXRlUGxhY2VtZW50KHMpKSxbcyxnZXRPcHBvc2l0ZVBsYWNlbWVudChzKV19ZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQoZSl7cmV0dXJuIGUuaW5jbHVkZXMoInN0YXJ0Iik/ZS5yZXBsYWNlKCJzdGFydCIsImVuZCIpOmUucmVwbGFjZSgiZW5kIiwic3RhcnQiKX1jb25zdCB2cz1bImxlZnQiLCJyaWdodCJdLHhzPVsicmlnaHQiLCJsZWZ0Il0sU3M9WyJ0b3AiLCJib3R0b20iXSxUcz1bImJvdHRvbSIsInRvcCJdO2Z1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoZSx0LG4scil7Y29uc3Qgbz1nZXRBbGlnbm1lbnQoZSk7bGV0IGk9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaChlKXtjYXNlInRvcCI6Y2FzZSJib3R0b20iOnJldHVybiBuP3Q/eHM6dnM6dD92czp4cztjYXNlImxlZnQiOmNhc2UicmlnaHQiOnJldHVybiB0P1NzOlRzO2RlZmF1bHQ6cmV0dXJuW119fShnZXRTaWRlKGUpLCJzdGFydCI9PT1uLHIpO3JldHVybiBvJiYoaT1pLm1hcChlPT5lKyItIitvKSx0JiYoaT1pLmNvbmNhdChpLm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpKSksaX1mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChlKXtjb25zdCB0PWdldFNpZGUoZSk7cmV0dXJuIGJzW3RdK2Uuc2xpY2UodC5sZW5ndGgpfWZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QoZSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBlP2Z1bmN0aW9uKGUpe3JldHVybnt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MCwuLi5lfX0oZSk6e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfX1mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KGUpe2NvbnN0e3g6dCx5Om4sd2lkdGg6cixoZWlnaHQ6b309ZTtyZXR1cm57d2lkdGg6cixoZWlnaHQ6byx0b3A6bixsZWZ0OnQscmlnaHQ6dCtyLGJvdHRvbTpuK28seDp0LHk6bn19ZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoZSx0LG4pe2xldHtyZWZlcmVuY2U6cixmbG9hdGluZzpvfT1lO2NvbnN0IGk9Z2V0U2lkZUF4aXModCkscz1nZXRBbGlnbm1lbnRBeGlzKHQpLGw9Z2V0QXhpc0xlbmd0aChzKSxhPWdldFNpZGUodCksYz0ieSI9PT1pLGQ9ci54K3Iud2lkdGgvMi1vLndpZHRoLzIscD1yLnkrci5oZWlnaHQvMi1vLmhlaWdodC8yLGY9cltsXS8yLW9bbF0vMjtsZXQgbTtzd2l0Y2goYSl7Y2FzZSJ0b3AiOm09e3g6ZCx5OnIueS1vLmhlaWdodH07YnJlYWs7Y2FzZSJib3R0b20iOm09e3g6ZCx5OnIueStyLmhlaWdodH07YnJlYWs7Y2FzZSJyaWdodCI6bT17eDpyLngrci53aWR0aCx5OnB9O2JyZWFrO2Nhc2UibGVmdCI6bT17eDpyLngtby53aWR0aCx5OnB9O2JyZWFrO2RlZmF1bHQ6bT17eDpyLngseTpyLnl9fXN3aXRjaChnZXRBbGlnbm1lbnQodCkpe2Nhc2Uic3RhcnQiOm1bc10tPWYqKG4mJmM/LTE6MSk7YnJlYWs7Y2FzZSJlbmQiOm1bc10rPWYqKG4mJmM/LTE6MSl9cmV0dXJuIG19YXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD17fSk7Y29uc3R7eDpyLHk6byxwbGF0Zm9ybTppLHJlY3RzOnMsZWxlbWVudHM6bCxzdHJhdGVneTphfT1lLHtib3VuZGFyeTpjPSJjbGlwcGluZ0FuY2VzdG9ycyIscm9vdEJvdW5kYXJ5OmQ9InZpZXdwb3J0IixlbGVtZW50Q29udGV4dDpwPSJmbG9hdGluZyIsYWx0Qm91bmRhcnk6Zj0hMSxwYWRkaW5nOm09MH09ZXZhbHVhdGUodCxlKSx5PWdldFBhZGRpbmdPYmplY3QobSksdz1sW2Y/ImZsb2F0aW5nIj09PXA/InJlZmVyZW5jZSI6ImZsb2F0aW5nIjpwXSxiPXJlY3RUb0NsaWVudFJlY3QoYXdhaXQgaS5nZXRDbGlwcGluZ1JlY3Qoe2VsZW1lbnQ6bnVsbD09KG49YXdhaXQobnVsbD09aS5pc0VsZW1lbnQ/dm9pZCAwOmkuaXNFbGVtZW50KHcpKSl8fG4/dzp3LmNvbnRleHRFbGVtZW50fHxhd2FpdChudWxsPT1pLmdldERvY3VtZW50RWxlbWVudD92b2lkIDA6aS5nZXREb2N1bWVudEVsZW1lbnQobC5mbG9hdGluZykpLGJvdW5kYXJ5OmMscm9vdEJvdW5kYXJ5OmQsc3RyYXRlZ3k6YX0pKSx2PSJmbG9hdGluZyI9PT1wP3t4OnIseTpvLHdpZHRoOnMuZmxvYXRpbmcud2lkdGgsaGVpZ2h0OnMuZmxvYXRpbmcuaGVpZ2h0fTpzLnJlZmVyZW5jZSx4PWF3YWl0KG51bGw9PWkuZ2V0T2Zmc2V0UGFyZW50P3ZvaWQgMDppLmdldE9mZnNldFBhcmVudChsLmZsb2F0aW5nKSksUz1hd2FpdChudWxsPT1pLmlzRWxlbWVudD92b2lkIDA6aS5pc0VsZW1lbnQoeCkpJiZhd2FpdChudWxsPT1pLmdldFNjYWxlP3ZvaWQgMDppLmdldFNjYWxlKHgpKXx8e3g6MSx5OjF9LEM9cmVjdFRvQ2xpZW50UmVjdChpLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IGkuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOmwscmVjdDp2LG9mZnNldFBhcmVudDp4LHN0cmF0ZWd5OmF9KTp2KTtyZXR1cm57dG9wOihiLnRvcC1DLnRvcCt5LnRvcCkvUy55LGJvdHRvbTooQy5ib3R0b20tYi5ib3R0b20reS5ib3R0b20pL1MueSxsZWZ0OihiLmxlZnQtQy5sZWZ0K3kubGVmdCkvUy54LHJpZ2h0OihDLnJpZ2h0LWIucmlnaHQreS5yaWdodCkvUy54fX1mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQoZSl7cmV0dXJuIGZzLnNvbWUodD0+ZVt0XT49MCl9ZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KGUpe2NvbnN0IHQ9eXMoLi4uZS5tYXAoZT0+ZS5sZWZ0KSksbj15cyguLi5lLm1hcChlPT5lLnRvcCkpO3JldHVybnt4OnQseTpuLHdpZHRoOmtzKC4uLmUubWFwKGU9PmUucmlnaHQpKS10LGhlaWdodDprcyguLi5lLm1hcChlPT5lLmJvdHRvbSkpLW59fWNvbnN0IENzPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2Z1bmN0aW9uIGdldE5vZGVOYW1lKGUpe3JldHVybiBpc05vZGUoKT8oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6IiNkb2N1bWVudCJ9ZnVuY3Rpb24gZ2V0V2luZG93KGUpe3ZhciB0O3JldHVybihudWxsPT1lfHxudWxsPT0odD1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8d2luZG93fWZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlKXt2YXIgdDtyZXR1cm4gbnVsbD09KHQ9KGlzTm9kZSgpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8d2luZG93LmRvY3VtZW50KT92b2lkIDA6dC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gaXNOb2RlKGUpe3JldHVybiExfWZ1bmN0aW9uIGlzRWxlbWVudChlKXtyZXR1cm4hMX1mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlKXtjb25zdHtvdmVyZmxvdzp0LG92ZXJmbG93WDpuLG92ZXJmbG93WTpyLGRpc3BsYXk6b309Z2V0Q29tcHV0ZWRTdHlsZSQxKGUpO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KHQrcituKSYmImlubGluZSIhPT1vJiYiY29udGVudHMiIT09b31mdW5jdGlvbiBpc1RvcExheWVyKGUpe3RyeXtpZihlLm1hdGNoZXMoIjpwb3BvdmVyLW9wZW4iKSlyZXR1cm4hMH1jYXRjaChlKXt9dHJ5e3JldHVybiBlLm1hdGNoZXMoIjptb2RhbCIpfWNhdGNoKGUpe3JldHVybiExfX1jb25zdCBNcz0vdHJhbnNmb3JtfHRyYW5zbGF0ZXxzY2FsZXxyb3RhdGV8cGVyc3BlY3RpdmV8ZmlsdGVyLyxBcz0vcGFpbnR8bGF5b3V0fHN0cmljdHxjb250ZW50Lyxpc05vdE5vbmU9ZT0+ISFlJiYibm9uZSIhPT1lO2xldCBPcztmdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlKXtjb25zdCB0PWU7cmV0dXJuIGlzTm90Tm9uZSh0LnRyYW5zZm9ybSl8fGlzTm90Tm9uZSh0LnRyYW5zbGF0ZSl8fGlzTm90Tm9uZSh0LnNjYWxlKXx8aXNOb3ROb25lKHQucm90YXRlKXx8aXNOb3ROb25lKHQucGVyc3BlY3RpdmUpfHwhaXNXZWJLaXQoKSYmKGlzTm90Tm9uZSh0LmJhY2tkcm9wRmlsdGVyKXx8aXNOb3ROb25lKHQuZmlsdGVyKSl8fE1zLnRlc3QodC53aWxsQ2hhbmdlfHwiIil8fEFzLnRlc3QodC5jb250YWlufHwiIil9ZnVuY3Rpb24gaXNXZWJLaXQoKXtyZXR1cm4gbnVsbD09T3MmJihPcz0idW5kZWZpbmVkIiE9dHlwZW9mIENTUyYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoIi13ZWJraXQtYmFja2Ryb3AtZmlsdGVyIiwibm9uZSIpKSxPc31mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoZSl7cmV0dXJuL14oaHRtbHxib2R5fCNkb2N1bWVudCkkLy50ZXN0KGdldE5vZGVOYW1lKGUpKX1mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZSl7cmV0dXJuIGdldFdpbmRvdyhlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZSl7cmV0dXJue3Njcm9sbExlZnQ6ZS5zY3JvbGxYLHNjcm9sbFRvcDplLnNjcm9sbFl9fWZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZSl7aWYoImh0bWwiPT09Z2V0Tm9kZU5hbWUoZSkpcmV0dXJuIGU7Y29uc3QgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxnZXREb2N1bWVudEVsZW1lbnQoZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IoZSl7Y29uc3QgdD1nZXRQYXJlbnROb2RlKGUpO3JldHVybiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk/ZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudC5ib2R5OmUuYm9keTpnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcih0KX1mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlLHQsbil7dmFyIHI7dm9pZCAwPT09dCYmKHQ9W10pO2NvbnN0IG89Z2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IoZSksaT1vPT09KG51bGw9PShyPWUub3duZXJEb2N1bWVudCk/dm9pZCAwOnIuYm9keSkscz1nZXRXaW5kb3cobyk7cmV0dXJuIGk/KGdldEZyYW1lRWxlbWVudChzKSx0LmNvbmNhdChzLHMudmlzdWFsVmlld3BvcnR8fFtdLGlzT3ZlcmZsb3dFbGVtZW50KG8pP286W10sW10pKTp0LmNvbmNhdChvLGdldE92ZXJmbG93QW5jZXN0b3JzKG8sW10pKX1mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQoZSl7cmV0dXJuIGUucGFyZW50JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wYXJlbnQpP2UuZnJhbWVFbGVtZW50Om51bGx9ZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlKXtjb25zdCB0PWdldENvbXB1dGVkU3R5bGUkMShlKTtsZXQgbj1wYXJzZUZsb2F0KHQud2lkdGgpfHwwLHI9cGFyc2VGbG9hdCh0LmhlaWdodCl8fDA7Y29uc3Qgbz1uLGk9cixzPXdzKG4pIT09b3x8d3MocikhPT1pO3JldHVybiBzJiYobj1vLHI9aSkse3dpZHRoOm4saGVpZ2h0OnIsJDpzfX1mdW5jdGlvbiB1bndyYXBFbGVtZW50KGUpe3JldHVybiBlLmNvbnRleHRFbGVtZW50fWZ1bmN0aW9uIGdldFNjYWxlKGUpe3Vud3JhcEVsZW1lbnQoZSk7cmV0dXJuIGNyZWF0ZUNvb3JkcygxKX1jb25zdCBFcz1jcmVhdGVDb29yZHMoMCk7ZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlKXtjb25zdCB0PWdldFdpbmRvdyhlKTtyZXR1cm4gaXNXZWJLaXQoKSYmdC52aXN1YWxWaWV3cG9ydD97eDp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQseTp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcH06RXN9ZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PSExKSx2b2lkIDA9PT1uJiYobj0hMSk7Y29uc3Qgbz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dW53cmFwRWxlbWVudChlKTtsZXQgcz1jcmVhdGVDb29yZHMoMSk7dCYmKHJ8fChzPWdldFNjYWxlKGUpKSk7Y29uc3QgbD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSwhKCFufHx0JiZuIT09Z2V0V2luZG93KGUpKSYmdH0oaSxuLHIpP2dldFZpc3VhbE9mZnNldHMoaSk6Y3JlYXRlQ29vcmRzKDApO2xldCBhPShvLmxlZnQrbC54KS9zLngsYz0oby50b3ArbC55KS9zLnksZD1vLndpZHRoL3MueCxwPW8uaGVpZ2h0L3MueTtpZihpKXtjb25zdCBlPXI7bGV0IHQ9Z2V0V2luZG93KGkpLG49Z2V0RnJhbWVFbGVtZW50KHQpO2Zvcig7biYmciYmZSE9PXQ7KXtjb25zdCBlPWdldFNjYWxlKG4pLHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPWdldENvbXB1dGVkU3R5bGUkMShuKSxpPXIubGVmdCsobi5jbGllbnRMZWZ0K3BhcnNlRmxvYXQoby5wYWRkaW5nTGVmdCkpKmUueCxzPXIudG9wKyhuLmNsaWVudFRvcCtwYXJzZUZsb2F0KG8ucGFkZGluZ1RvcCkpKmUueTthKj1lLngsYyo9ZS55LGQqPWUueCxwKj1lLnksYSs9aSxjKz1zLHQ9Z2V0V2luZG93KG4pLG49Z2V0RnJhbWVFbGVtZW50KHQpfX1yZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7d2lkdGg6ZCxoZWlnaHQ6cCx4OmEseTpjfSl9ZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlLHQpe2NvbnN0IG49Z2V0Tm9kZVNjcm9sbChlKS5zY3JvbGxMZWZ0O3JldHVybiB0P3QubGVmdCtuOmdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZSkpLmxlZnQrbn1mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGUsdCl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt4Om4ubGVmdCt0LnNjcm9sbExlZnQtZ2V0V2luZG93U2Nyb2xsQmFyWChlLG4pLHk6bi50b3ArdC5zY3JvbGxUb3B9fWZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlLHQsbil7bGV0IHI7aWYoInZpZXdwb3J0Ij09PXQpcj1mdW5jdGlvbihlLHQpe2NvbnN0IG49Z2V0V2luZG93KGUpLHI9Z2V0RG9jdW1lbnRFbGVtZW50KGUpLG89bi52aXN1YWxWaWV3cG9ydDtsZXQgaT1yLmNsaWVudFdpZHRoLHM9ci5jbGllbnRIZWlnaHQsbD0wLGE9MDtpZihvKXtpPW8ud2lkdGgscz1vLmhlaWdodDtjb25zdCBlPWlzV2ViS2l0KCk7KCFlfHxlJiYiZml4ZWQiPT09dCkmJihsPW8ub2Zmc2V0TGVmdCxhPW8ub2Zmc2V0VG9wKX1jb25zdCBjPWdldFdpbmRvd1Njcm9sbEJhclgocik7aWYoYzw9MCl7Y29uc3QgZT1yLm93bmVyRG9jdW1lbnQsdD1lLmJvZHksbj1nZXRDb21wdXRlZFN0eWxlKHQpLG89IkNTUzFDb21wYXQiPT09ZS5jb21wYXRNb2RlJiZwYXJzZUZsb2F0KG4ubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChuLm1hcmdpblJpZ2h0KXx8MCxzPU1hdGguYWJzKHIuY2xpZW50V2lkdGgtdC5jbGllbnRXaWR0aC1vKTtzPD0yNSYmKGktPXMpfWVsc2UgYzw9MjUmJihpKz1jKTtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6cyx4OmwseTphfX0oZSxuKTtlbHNlIGlmKCJkb2N1bWVudCI9PT10KXI9ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXREb2N1bWVudEVsZW1lbnQoZSksbj1nZXROb2RlU2Nyb2xsKGUpLHI9ZS5vd25lckRvY3VtZW50LmJvZHksbz1rcyh0LnNjcm9sbFdpZHRoLHQuY2xpZW50V2lkdGgsci5zY3JvbGxXaWR0aCxyLmNsaWVudFdpZHRoKSxpPWtzKHQuc2Nyb2xsSGVpZ2h0LHQuY2xpZW50SGVpZ2h0LHIuc2Nyb2xsSGVpZ2h0LHIuY2xpZW50SGVpZ2h0KTtsZXQgcz0tbi5zY3JvbGxMZWZ0K2dldFdpbmRvd1Njcm9sbEJhclgoZSk7Y29uc3QgbD0tbi5zY3JvbGxUb3A7cmV0dXJuInJ0bCI9PT1nZXRDb21wdXRlZFN0eWxlJDEocikuZGlyZWN0aW9uJiYocys9a3ModC5jbGllbnRXaWR0aCxyLmNsaWVudFdpZHRoKS1vKSx7d2lkdGg6byxoZWlnaHQ6aSx4OnMseTpsfX0oZ2V0RG9jdW1lbnRFbGVtZW50KGUpKTtlbHNle3tjb25zdCBuPWdldFZpc3VhbE9mZnNldHMoZSk7cj17eDp0Lngtbi54LHk6dC55LW4ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fXJldHVybiByZWN0VG9DbGllbnRSZWN0KHIpfWZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlLHQpe2dldFBhcmVudE5vZGUoZSk7cmV0dXJuITF9ZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZSx0LG4pe2NvbnN0IHI9Z2V0RG9jdW1lbnRFbGVtZW50KHQpLG89ImZpeGVkIj09PW4saT1nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSwhMCxvLHQpO2xldCBzPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9O2NvbnN0IGw9Y3JlYXRlQ29vcmRzKDApO2Z1bmN0aW9uIHNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKXtsLng9Z2V0V2luZG93U2Nyb2xsQmFyWChyKX1vfHwoKCJib2R5IiE9PWdldE5vZGVOYW1lKHQpfHxpc092ZXJmbG93RWxlbWVudChyKSkmJihzPWdldE5vZGVTY3JvbGwodCkpLHImJnNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKSksbyYmciYmc2V0TGVmdFJUTFNjcm9sbGJhck9mZnNldCgpO2NvbnN0IGE9ciYmIW8/Z2V0SFRNTE9mZnNldChyLHMpOmNyZWF0ZUNvb3JkcygwKTtyZXR1cm57eDppLmxlZnQrcy5zY3JvbGxMZWZ0LWwueC1hLngseTppLnRvcCtzLnNjcm9sbFRvcC1sLnktYS55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX1mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZSl7cmV0dXJuInN0YXRpYyI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkucG9zaXRpb259ZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGUsdCl7Y29uc3Qgbj1nZXRXaW5kb3coZSk7aWYoaXNUb3BMYXllcihlKSlyZXR1cm4gbjt7bGV0IHQ9Z2V0UGFyZW50Tm9kZShlKTtmb3IoO3QmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk7KXtpZihpc0VsZW1lbnQoKSYmIWlzU3RhdGljUG9zaXRpb25lZCh0KSlyZXR1cm4gdDt0PWdldFBhcmVudE5vZGUodCl9cmV0dXJuIG59fWNvbnN0IE5zPXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpmdW5jdGlvbihlKXtsZXR7ZWxlbWVudHM6dCxyZWN0Om4sb2Zmc2V0UGFyZW50OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBpPSJmaXhlZCI9PT1vLHM9Z2V0RG9jdW1lbnRFbGVtZW50KHIpLGw9ISF0JiZpc1RvcExheWVyKHQuZmxvYXRpbmcpO2lmKHI9PT1zfHxsJiZpKXJldHVybiBuO2xldCBhPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LGM9Y3JlYXRlQ29vcmRzKDEpO2NvbnN0IGQ9Y3JlYXRlQ29vcmRzKDApO2l8fCgiYm9keSIhPT1nZXROb2RlTmFtZShyKXx8aXNPdmVyZmxvd0VsZW1lbnQocykpJiYoYT1nZXROb2RlU2Nyb2xsKHIpKTtjb25zdCBwPXMmJiFpP2dldEhUTUxPZmZzZXQocyxhKTpjcmVhdGVDb29yZHMoMCk7cmV0dXJue3dpZHRoOm4ud2lkdGgqYy54LGhlaWdodDpuLmhlaWdodCpjLnkseDpuLngqYy54LWEuc2Nyb2xsTGVmdCpjLngrZC54K3AueCx5Om4ueSpjLnktYS5zY3JvbGxUb3AqYy55K2QueStwLnl9fSxnZXREb2N1bWVudEVsZW1lbnQ6Z2V0RG9jdW1lbnRFbGVtZW50LGdldENsaXBwaW5nUmVjdDpmdW5jdGlvbihlKXtsZXR7ZWxlbWVudDp0LGJvdW5kYXJ5Om4scm9vdEJvdW5kYXJ5OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBpPSJjbGlwcGluZ0FuY2VzdG9ycyI9PT1uP2lzVG9wTGF5ZXIodCk/W106ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXQuZ2V0KGUpO2lmKG4pcmV0dXJuIG47bGV0IHI9Z2V0T3ZlcmZsb3dBbmNlc3RvcnMoZSxbXSkuZmlsdGVyKGU9PiExKSxvPW51bGw7Y29uc3QgaT0iZml4ZWQiPT09Z2V0Q29tcHV0ZWRTdHlsZSQxKGUpLnBvc2l0aW9uO2xldCBzPWk/Z2V0UGFyZW50Tm9kZShlKTplO2Zvcig7aXNFbGVtZW50KCkmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocyk7KXtjb25zdCB0PWdldENvbXB1dGVkU3R5bGUkMShzKSxuPWlzQ29udGFpbmluZ0Jsb2NrKHMpO258fCJmaXhlZCIhPT10LnBvc2l0aW9ufHwobz1udWxsKSwoaT8hbiYmIW86IW4mJiJzdGF0aWMiPT09dC5wb3NpdGlvbiYmbyYmKCJhYnNvbHV0ZSI9PT1vLnBvc2l0aW9ufHwiZml4ZWQiPT09by5wb3NpdGlvbil8fGlzT3ZlcmZsb3dFbGVtZW50KHMpJiYhbiYmaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGUpKT9yPXIuZmlsdGVyKGU9PmUhPT1zKTpvPXQscz1nZXRQYXJlbnROb2RlKHMpfXJldHVybiB0LnNldChlLHIpLHJ9KHQsdGhpcy5fYyk6W10uY29uY2F0KG4pLHM9Wy4uLmkscl0sbD1nZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IodCxzWzBdLG8pO2xldCBhPWwudG9wLGM9bC5yaWdodCxkPWwuYm90dG9tLHA9bC5sZWZ0O2ZvcihsZXQgZT0xO2U8cy5sZW5ndGg7ZSsrKXtjb25zdCBuPWdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3Rvcih0LHNbZV0sbyk7YT1rcyhuLnRvcCxhKSxjPXlzKG4ucmlnaHQsYyksZD15cyhuLmJvdHRvbSxkKSxwPWtzKG4ubGVmdCxwKX1yZXR1cm57d2lkdGg6Yy1wLGhlaWdodDpkLWEseDpwLHk6YX19LGdldE9mZnNldFBhcmVudDpnZXRPZmZzZXRQYXJlbnQsZ2V0RWxlbWVudFJlY3RzOmFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fGdldE9mZnNldFBhcmVudCxuPXRoaXMuZ2V0RGltZW5zaW9ucyxyPWF3YWl0IG4oZS5mbG9hdGluZyk7cmV0dXJue3JlZmVyZW5jZTpnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlLnJlZmVyZW5jZSxhd2FpdCB0KGUuZmxvYXRpbmcpLGUuc3RyYXRlZ3kpLGZsb2F0aW5nOnt4OjAseTowLHdpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0fX19LGdldENsaWVudFJlY3RzOmZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSl9LGdldERpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7Y29uc3R7d2lkdGg6dCxoZWlnaHQ6bn09Z2V0Q3NzRGltZW5zaW9ucyhlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19LGdldFNjYWxlOmdldFNjYWxlLGlzRWxlbWVudDppc0VsZW1lbnQsaXNSVEw6ZnVuY3Rpb24oZSl7cmV0dXJuInJ0bCI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkuZGlyZWN0aW9ufX0sb2Zmc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHt4Om8seTppLHBsYWNlbWVudDpzLG1pZGRsZXdhcmVEYXRhOmx9PXQsYT1hd2FpdCBhc3luYyBmdW5jdGlvbihlLHQpe2NvbnN0e3BsYWNlbWVudDpuLHBsYXRmb3JtOnIsZWxlbWVudHM6b309ZSxpPWF3YWl0KG51bGw9PXIuaXNSVEw/dm9pZCAwOnIuaXNSVEwoby5mbG9hdGluZykpLHM9Z2V0U2lkZShuKSxsPWdldEFsaWdubWVudChuKSxhPSJ5Ij09PWdldFNpZGVBeGlzKG4pLGM9Q3MuaGFzKHMpPy0xOjEsZD1pJiZhPy0xOjEscD1ldmFsdWF0ZSh0LGUpO2xldHttYWluQXhpczpmLGNyb3NzQXhpczptLGFsaWdubWVudEF4aXM6eX09Im51bWJlciI9PXR5cGVvZiBwP3ttYWluQXhpczpwLGNyb3NzQXhpczowLGFsaWdubWVudEF4aXM6bnVsbH06e21haW5BeGlzOnAubWFpbkF4aXN8fDAsY3Jvc3NBeGlzOnAuY3Jvc3NBeGlzfHwwLGFsaWdubWVudEF4aXM6cC5hbGlnbm1lbnRBeGlzfTtyZXR1cm4gbCYmIm51bWJlciI9PXR5cGVvZiB5JiYobT0iZW5kIj09PWw/LTEqeTp5KSxhP3t4Om0qZCx5OmYqY306e3g6ZipjLHk6bSpkfX0odCxlKTtyZXR1cm4gcz09PShudWxsPT0obj1sLm9mZnNldCk/dm9pZCAwOm4ucGxhY2VtZW50KSYmbnVsbCE9KHI9bC5hcnJvdykmJnIuYWxpZ25tZW50T2Zmc2V0P3t9Ont4Om8rYS54LHk6aSthLnksZGF0YTp7Li4uYSxwbGFjZW1lbnQ6c319fX19LGF1dG9QbGFjZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToiYXV0b1BsYWNlbWVudCIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLHIsbztjb25zdHtyZWN0czppLG1pZGRsZXdhcmVEYXRhOnMscGxhY2VtZW50OmwscGxhdGZvcm06YSxlbGVtZW50czpjfT10LHtjcm9zc0F4aXM6ZD0hMSxhbGlnbm1lbnQ6cCxhbGxvd2VkUGxhY2VtZW50czpmPWdzLGF1dG9BbGlnbm1lbnQ6bT0hMCwuLi55fT1ldmFsdWF0ZShlLHQpLHc9dm9pZCAwIT09cHx8Zj09PWdzP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4oZT9bLi4ubi5maWx0ZXIodD0+Z2V0QWxpZ25tZW50KHQpPT09ZSksLi4ubi5maWx0ZXIodD0+Z2V0QWxpZ25tZW50KHQpIT09ZSldOm4uZmlsdGVyKGU9PmdldFNpZGUoZSk9PT1lKSkuZmlsdGVyKG49PiFlfHxnZXRBbGlnbm1lbnQobik9PT1lfHwhIXQmJmdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG4pIT09bil9KHB8fG51bGwsbSxmKTpmLGI9YXdhaXQgYS5kZXRlY3RPdmVyZmxvdyh0LHkpLHY9KG51bGw9PShuPXMuYXV0b1BsYWNlbWVudCk/dm9pZCAwOm4uaW5kZXgpfHwwLHg9d1t2XTtpZihudWxsPT14KXJldHVybnt9O2NvbnN0IFM9Z2V0QWxpZ25tZW50U2lkZXMoeCxpLGF3YWl0KG51bGw9PWEuaXNSVEw/dm9pZCAwOmEuaXNSVEwoYy5mbG9hdGluZykpKTtpZihsIT09eClyZXR1cm57cmVzZXQ6e3BsYWNlbWVudDp3WzBdfX07Y29uc3QgQz1bYltnZXRTaWRlKHgpXSxiW1NbMF1dLGJbU1sxXV1dLEE9Wy4uLihudWxsPT0ocj1zLmF1dG9QbGFjZW1lbnQpP3ZvaWQgMDpyLm92ZXJmbG93cyl8fFtdLHtwbGFjZW1lbnQ6eCxvdmVyZmxvd3M6Q31dLE89d1t2KzFdO2lmKE8pcmV0dXJue2RhdGE6e2luZGV4OnYrMSxvdmVyZmxvd3M6QX0scmVzZXQ6e3BsYWNlbWVudDpPfX07Y29uc3QgRT1BLm1hcChlPT57Y29uc3QgdD1nZXRBbGlnbm1lbnQoZS5wbGFjZW1lbnQpO3JldHVybltlLnBsYWNlbWVudCx0JiZkP2Uub3ZlcmZsb3dzLnNsaWNlKDAsMikucmVkdWNlKChlLHQpPT5lK3QsMCk6ZS5vdmVyZmxvd3NbMF0sZS5vdmVyZmxvd3NdfSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKSxOPUUuZmlsdGVyKGU9PmVbMl0uc2xpY2UoMCxnZXRBbGlnbm1lbnQoZVswXSk/MjozKS5ldmVyeShlPT5lPD0wKSksUj0obnVsbD09KG89TlswXSk/dm9pZCAwOm9bMF0pfHxFWzBdWzBdO3JldHVybiBSIT09bD97ZGF0YTp7aW5kZXg6disxLG92ZXJmbG93czpBfSxyZXNldDp7cGxhY2VtZW50OlJ9fTp7fX19fSxzaGlmdD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJzaGlmdCIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50Om8scGxhdGZvcm06aX09dCx7bWFpbkF4aXM6cz0hMCxjcm9zc0F4aXM6bD0hMSxsaW1pdGVyOmE9e2ZuOmU9PntsZXR7eDp0LHk6bn09ZTtyZXR1cm57eDp0LHk6bn19fSwuLi5jfT1ldmFsdWF0ZShlLHQpLGQ9e3g6bix5OnJ9LHA9YXdhaXQgaS5kZXRlY3RPdmVyZmxvdyh0LGMpLGY9Z2V0U2lkZUF4aXMoZ2V0U2lkZShvKSksbT1nZXRPcHBvc2l0ZUF4aXMoZik7bGV0IHk9ZFttXSx3PWRbZl07aWYocyl7Y29uc3QgZT0ieSI9PT1tPyJib3R0b20iOiJyaWdodCI7eT1jbGFtcCh5K3BbInkiPT09bT8idG9wIjoibGVmdCJdLHkseS1wW2VdKX1pZihsKXtjb25zdCBlPSJ5Ij09PWY/ImJvdHRvbSI6InJpZ2h0Ijt3PWNsYW1wKHcrcFsieSI9PT1mPyJ0b3AiOiJsZWZ0Il0sdyx3LXBbZV0pfWNvbnN0IGI9YS5mbih7Li4udCxbbV06eSxbZl06d30pO3JldHVybnsuLi5iLGRhdGE6e3g6Yi54LW4seTpiLnktcixlbmFibGVkOntbbV06cyxbZl06bH19fX19fSxmbGlwPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT17fSkse25hbWU6ImZsaXAiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXt2YXIgbixyO2NvbnN0e3BsYWNlbWVudDpvLG1pZGRsZXdhcmVEYXRhOmkscmVjdHM6cyxpbml0aWFsUGxhY2VtZW50OmwscGxhdGZvcm06YSxlbGVtZW50czpjfT10LHttYWluQXhpczpkPSEwLGNyb3NzQXhpczpwPSEwLGZhbGxiYWNrUGxhY2VtZW50czpmLGZhbGxiYWNrU3RyYXRlZ3k6bT0iYmVzdEZpdCIsZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjp5PSJub25lIixmbGlwQWxpZ25tZW50Onc9ITAsLi4uYn09ZXZhbHVhdGUoZSx0KTtpZihudWxsIT0obj1pLmFycm93KSYmbi5hbGlnbm1lbnRPZmZzZXQpcmV0dXJue307Y29uc3Qgdj1nZXRTaWRlKG8pLHg9Z2V0U2lkZUF4aXMobCksUz1nZXRTaWRlKGwpPT09bCxDPWF3YWl0KG51bGw9PWEuaXNSVEw/dm9pZCAwOmEuaXNSVEwoYy5mbG9hdGluZykpLEE9Znx8KFN8fCF3P1tnZXRPcHBvc2l0ZVBsYWNlbWVudChsKV06ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXRPcHBvc2l0ZVBsYWNlbWVudChlKTtyZXR1cm5bZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQoZSksdCxnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCh0KV19KGwpKSxPPSJub25lIiE9PXk7IWYmJk8mJkEucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGwsdyx5LEMpKTtjb25zdCBFPVtsLC4uLkFdLE49YXdhaXQgYS5kZXRlY3RPdmVyZmxvdyh0LGIpLFI9W107bGV0IEQ9KG51bGw9PShyPWkuZmxpcCk/dm9pZCAwOnIub3ZlcmZsb3dzKXx8W107aWYoZCYmUi5wdXNoKE5bdl0pLHApe2NvbnN0IGU9Z2V0QWxpZ25tZW50U2lkZXMobyxzLEMpO1IucHVzaChOW2VbMF1dLE5bZVsxXV0pfWlmKEQ9Wy4uLkQse3BsYWNlbWVudDpvLG92ZXJmbG93czpSfV0sIVIuZXZlcnkoZT0+ZTw9MCkpe3ZhciBQLCQ7Y29uc3QgZT0oKG51bGw9PShQPWkuZmxpcCk/dm9pZCAwOlAuaW5kZXgpfHwwKSsxLHQ9RVtlXTtpZih0KXtpZighKCJhbGlnbm1lbnQiPT09cCYmeCE9PWdldFNpZGVBeGlzKHQpKXx8RC5ldmVyeShlPT5nZXRTaWRlQXhpcyhlLnBsYWNlbWVudCkhPT14fHxlLm92ZXJmbG93c1swXT4wKSlyZXR1cm57ZGF0YTp7aW5kZXg6ZSxvdmVyZmxvd3M6RH0scmVzZXQ6e3BsYWNlbWVudDp0fX19bGV0IG49bnVsbD09KCQ9RC5maWx0ZXIoZT0+ZS5vdmVyZmxvd3NbMF08PTApLnNvcnQoKGUsdCk9PmUub3ZlcmZsb3dzWzFdLXQub3ZlcmZsb3dzWzFdKVswXSk/dm9pZCAwOiQucGxhY2VtZW50O2lmKCFuKXN3aXRjaChtKXtjYXNlImJlc3RGaXQiOnt2YXIgTDtjb25zdCBlPW51bGw9PShMPUQuZmlsdGVyKGU9PntpZihPKXtjb25zdCB0PWdldFNpZGVBeGlzKGUucGxhY2VtZW50KTtyZXR1cm4gdD09PXh8fCJ5Ij09PXR9cmV0dXJuITB9KS5tYXAoZT0+W2UucGxhY2VtZW50LGUub3ZlcmZsb3dzLmZpbHRlcihlPT5lPjApLnJlZHVjZSgoZSx0KT0+ZSt0LDApXSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKVswXSk/dm9pZCAwOkxbMF07ZSYmKG49ZSk7YnJlYWt9Y2FzZSJpbml0aWFsUGxhY2VtZW50IjpuPWx9aWYobyE9PW4pcmV0dXJue3Jlc2V0OntwbGFjZW1lbnQ6bn19fXJldHVybnt9fX19LHNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToic2l6ZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLHI7Y29uc3R7cGxhY2VtZW50Om8scmVjdHM6aSxwbGF0Zm9ybTpzLGVsZW1lbnRzOmx9PXQse2FwcGx5OmE9KCk9Pnt9LC4uLmN9PWV2YWx1YXRlKGUsdCksZD1hd2FpdCBzLmRldGVjdE92ZXJmbG93KHQsYykscD1nZXRTaWRlKG8pLGY9Z2V0QWxpZ25tZW50KG8pLG09InkiPT09Z2V0U2lkZUF4aXMobykse3dpZHRoOnksaGVpZ2h0Ond9PWkuZmxvYXRpbmc7bGV0IGIsdjsidG9wIj09PXB8fCJib3R0b20iPT09cD8oYj1wLHY9Zj09PShhd2FpdChudWxsPT1zLmlzUlRMP3ZvaWQgMDpzLmlzUlRMKGwuZmxvYXRpbmcpKT8ic3RhcnQiOiJlbmQiKT8ibGVmdCI6InJpZ2h0Iik6KHY9cCxiPSJlbmQiPT09Zj8idG9wIjoiYm90dG9tIik7Y29uc3QgeD13LWQudG9wLWQuYm90dG9tLFM9eS1kLmxlZnQtZC5yaWdodCxDPXlzKHctZFtiXSx4KSxBPXlzKHktZFt2XSxTKSxPPSF0Lm1pZGRsZXdhcmVEYXRhLnNoaWZ0O2xldCBFPUMsTj1BO2lmKG51bGwhPShuPXQubWlkZGxld2FyZURhdGEuc2hpZnQpJiZuLmVuYWJsZWQueCYmKE49UyksbnVsbCE9KHI9dC5taWRkbGV3YXJlRGF0YS5zaGlmdCkmJnIuZW5hYmxlZC55JiYoRT14KSxPJiYhZil7Y29uc3QgZT1rcyhkLmxlZnQsMCksdD1rcyhkLnJpZ2h0LDApLG49a3MoZC50b3AsMCkscj1rcyhkLmJvdHRvbSwwKTttP049eS0yKigwIT09ZXx8MCE9PXQ/ZSt0OmtzKGQubGVmdCxkLnJpZ2h0KSk6RT13LTIqKDAhPT1ufHwwIT09cj9uK3I6a3MoZC50b3AsZC5ib3R0b20pKX1hd2FpdCBhKHsuLi50LGF2YWlsYWJsZVdpZHRoOk4sYXZhaWxhYmxlSGVpZ2h0OkV9KTtjb25zdCBSPWF3YWl0IHMuZ2V0RGltZW5zaW9ucyhsLmZsb2F0aW5nKTtyZXR1cm4geSE9PVIud2lkdGh8fHchPT1SLmhlaWdodD97cmVzZXQ6e3JlY3RzOiEwfX06e319fX0saGlkZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJoaWRlIixvcHRpb25zOmUsYXN5bmMgZm4odCl7Y29uc3R7cmVjdHM6bixwbGF0Zm9ybTpyfT10LHtzdHJhdGVneTpvPSJyZWZlcmVuY2VIaWRkZW4iLC4uLml9PWV2YWx1YXRlKGUsdCk7c3dpdGNoKG8pe2Nhc2UicmVmZXJlbmNlSGlkZGVuIjp7Y29uc3QgZT1nZXRTaWRlT2Zmc2V0cyhhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmksZWxlbWVudENvbnRleHQ6InJlZmVyZW5jZSJ9KSxuLnJlZmVyZW5jZSk7cmV0dXJue2RhdGE6e3JlZmVyZW5jZUhpZGRlbk9mZnNldHM6ZSxyZWZlcmVuY2VIaWRkZW46aXNBbnlTaWRlRnVsbHlDbGlwcGVkKGUpfX19Y2FzZSJlc2NhcGVkIjp7Y29uc3QgZT1nZXRTaWRlT2Zmc2V0cyhhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmksYWx0Qm91bmRhcnk6ITB9KSxuLmZsb2F0aW5nKTtyZXR1cm57ZGF0YTp7ZXNjYXBlZE9mZnNldHM6ZSxlc2NhcGVkOmlzQW55U2lkZUZ1bGx5Q2xpcHBlZChlKX19fWRlZmF1bHQ6cmV0dXJue319fX19LGFycm93JDE9ZT0+KHtuYW1lOiJhcnJvdyIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50Om8scmVjdHM6aSxwbGF0Zm9ybTpzLGVsZW1lbnRzOmwsbWlkZGxld2FyZURhdGE6YX09dCx7ZWxlbWVudDpjLHBhZGRpbmc6ZD0wfT1ldmFsdWF0ZShlLHQpfHx7fTtpZihudWxsPT1jKXJldHVybnt9O2NvbnN0IHA9Z2V0UGFkZGluZ09iamVjdChkKSxmPXt4Om4seTpyfSxtPWdldEFsaWdubWVudEF4aXMobykseT1nZXRBeGlzTGVuZ3RoKG0pLHc9YXdhaXQgcy5nZXREaW1lbnNpb25zKGMpLGI9InkiPT09bSx2PWI/InRvcCI6ImxlZnQiLHg9Yj8iYm90dG9tIjoicmlnaHQiLFM9Yj8iY2xpZW50SGVpZ2h0IjoiY2xpZW50V2lkdGgiLEM9aS5yZWZlcmVuY2VbeV0raS5yZWZlcmVuY2VbbV0tZlttXS1pLmZsb2F0aW5nW3ldLEE9ZlttXS1pLnJlZmVyZW5jZVttXSxPPWF3YWl0KG51bGw9PXMuZ2V0T2Zmc2V0UGFyZW50P3ZvaWQgMDpzLmdldE9mZnNldFBhcmVudChjKSk7bGV0IEU9Tz9PW1NdOjA7RSYmYXdhaXQobnVsbD09cy5pc0VsZW1lbnQ/dm9pZCAwOnMuaXNFbGVtZW50KE8pKXx8KEU9bC5mbG9hdGluZ1tTXXx8aS5mbG9hdGluZ1t5XSk7Y29uc3QgTj1DLzItQS8yLFI9RS8yLXdbeV0vMi0xLEQ9eXMocFt2XSxSKSxQPXlzKHBbeF0sUiksJD1ELEw9RS13W3ldLVAsej1FLzItd1t5XS8yK04sQj1jbGFtcCgkLHosTCksRj0hYS5hcnJvdyYmbnVsbCE9Z2V0QWxpZ25tZW50KG8pJiZ6IT09QiYmaS5yZWZlcmVuY2VbeV0vMi0oejwkP0Q6UCktd1t5XS8yPDAsSD1GP3o8JD96LSQ6ei1MOjA7cmV0dXJue1ttXTpmW21dK0gsZGF0YTp7W21dOkIsY2VudGVyT2Zmc2V0OnotQi1ILC4uLkYmJnthbGlnbm1lbnRPZmZzZXQ6SH19LHJlc2V0OkZ9fX0pLGlubGluZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJpbmxpbmUiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixlbGVtZW50czpyLHJlY3RzOm8scGxhdGZvcm06aSxzdHJhdGVneTpzfT10LHtwYWRkaW5nOmw9Mix4OmEseTpjfT1ldmFsdWF0ZShlLHQpLGQ9QXJyYXkuZnJvbShhd2FpdChudWxsPT1pLmdldENsaWVudFJlY3RzP3ZvaWQgMDppLmdldENsaWVudFJlY3RzKHIucmVmZXJlbmNlKSl8fFtdKSxwPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5zbGljZSgpLnNvcnQoKGUsdCk9PmUueS10LnkpLG49W107bGV0IHI9bnVsbDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbz10W2VdOyFyfHxvLnktci55PnIuaGVpZ2h0LzI/bi5wdXNoKFtvXSk6bltuLmxlbmd0aC0xXS5wdXNoKG8pLHI9b31yZXR1cm4gbi5tYXAoZT0+cmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QoZSkpKX0oZCksZj1yZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChkKSksbT1nZXRQYWRkaW5nT2JqZWN0KGwpO2NvbnN0IHk9YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTp7Z2V0Qm91bmRpbmdDbGllbnRSZWN0OmZ1bmN0aW9uKCl7aWYoMj09PXAubGVuZ3RoJiZwWzBdLmxlZnQ+cFsxXS5yaWdodCYmbnVsbCE9YSYmbnVsbCE9YylyZXR1cm4gcC5maW5kKGU9PmE+ZS5sZWZ0LW0ubGVmdCYmYTxlLnJpZ2h0K20ucmlnaHQmJmM+ZS50b3AtbS50b3AmJmM8ZS5ib3R0b20rbS5ib3R0b20pfHxmO2lmKHAubGVuZ3RoPj0yKXtpZigieSI9PT1nZXRTaWRlQXhpcyhuKSl7Y29uc3QgZT1wWzBdLHQ9cFtwLmxlbmd0aC0xXSxyPSJ0b3AiPT09Z2V0U2lkZShuKSxvPWUudG9wLGk9dC5ib3R0b20scz1yP2UubGVmdDp0LmxlZnQsbD1yP2UucmlnaHQ6dC5yaWdodDtyZXR1cm57dG9wOm8sYm90dG9tOmksbGVmdDpzLHJpZ2h0Omwsd2lkdGg6bC1zLGhlaWdodDppLW8seDpzLHk6b319Y29uc3QgZT0ibGVmdCI9PT1nZXRTaWRlKG4pLHQ9a3MoLi4ucC5tYXAoZT0+ZS5yaWdodCkpLHI9eXMoLi4ucC5tYXAoZT0+ZS5sZWZ0KSksbz1wLmZpbHRlcihuPT5lP24ubGVmdD09PXI6bi5yaWdodD09PXQpLGk9b1swXS50b3Ascz1vW28ubGVuZ3RoLTFdLmJvdHRvbTtyZXR1cm57dG9wOmksYm90dG9tOnMsbGVmdDpyLHJpZ2h0OnQsd2lkdGg6dC1yLGhlaWdodDpzLWkseDpyLHk6aX19cmV0dXJuIGZ9fSxmbG9hdGluZzpyLmZsb2F0aW5nLHN0cmF0ZWd5OnN9KTtyZXR1cm4gby5yZWZlcmVuY2UueCE9PXkucmVmZXJlbmNlLnh8fG8ucmVmZXJlbmNlLnkhPT15LnJlZmVyZW5jZS55fHxvLnJlZmVyZW5jZS53aWR0aCE9PXkucmVmZXJlbmNlLndpZHRofHxvLnJlZmVyZW5jZS5oZWlnaHQhPT15LnJlZmVyZW5jZS5oZWlnaHQ/e3Jlc2V0OntyZWN0czp5fX06e319fX0sY29tcHV0ZVBvc2l0aW9uPShlLHQsbik9Pntjb25zdCByPW5ldyBNYXAsbz17cGxhdGZvcm06TnMsLi4ubn0saT17Li4uby5wbGF0Zm9ybSxfYzpyfTtyZXR1cm4oYXN5bmMoZSx0LG4pPT57Y29uc3R7cGxhY2VtZW50OnI9ImJvdHRvbSIsc3RyYXRlZ3k6bz0iYWJzb2x1dGUiLG1pZGRsZXdhcmU6aT1bXSxwbGF0Zm9ybTpzfT1uLGw9cy5kZXRlY3RPdmVyZmxvdz9zOnsuLi5zLGRldGVjdE92ZXJmbG93OmRldGVjdE92ZXJmbG93fSxhPWF3YWl0KG51bGw9PXMuaXNSVEw/dm9pZCAwOnMuaXNSVEwodCkpO2xldCBjPWF3YWl0IHMuZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Om99KSx7eDpkLHk6cH09Y29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoYyxyLGEpLGY9cixtPTA7Y29uc3QgeT17fTtmb3IobGV0IG49MDtuPGkubGVuZ3RoO24rKyl7Y29uc3Qgdz1pW25dO2lmKCF3KWNvbnRpbnVlO2NvbnN0e25hbWU6Yixmbjp2fT13LHt4OngseTpTLGRhdGE6QyxyZXNldDpBfT1hd2FpdCB2KHt4OmQseTpwLGluaXRpYWxQbGFjZW1lbnQ6cixwbGFjZW1lbnQ6ZixzdHJhdGVneTpvLG1pZGRsZXdhcmVEYXRhOnkscmVjdHM6YyxwbGF0Zm9ybTpsLGVsZW1lbnRzOntyZWZlcmVuY2U6ZSxmbG9hdGluZzp0fX0pO2Q9bnVsbCE9eD94OmQscD1udWxsIT1TP1M6cCx5W2JdPXsuLi55W2JdLC4uLkN9LEEmJm08NTAmJihtKyssIm9iamVjdCI9PXR5cGVvZiBBJiYoQS5wbGFjZW1lbnQmJihmPUEucGxhY2VtZW50KSxBLnJlY3RzJiYoYz0hMD09PUEucmVjdHM/YXdhaXQgcy5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pOkEucmVjdHMpLCh7eDpkLHk6cH09Y29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoYyxmLGEpKSksbj0tMSl9cmV0dXJue3g6ZCx5OnAscGxhY2VtZW50OmYsc3RyYXRlZ3k6byxtaWRkbGV3YXJlRGF0YTp5fX0pKGUsdCx7Li4ubyxwbGF0Zm9ybTppfSl9O2xldCBScyxEcztpZigidW5kZWZpbmVkIiE9dHlwZW9mIFdlYWtNYXApe2xldCBlPW5ldyBXZWFrTWFwO1JzPXQ9PmUuZ2V0KHQpLERzPSh0LG4pPT4oZS5zZXQodCxuKSxuKX1lbHNle2NvbnN0IGU9W10sdD0xMDtsZXQgbj0wO1JzPXQ9Pntmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTIpaWYoZVtuXT09dClyZXR1cm4gZVtuKzFdfSxEcz0ocixvKT0+KG49PXQmJihuPTApLGVbbisrXT1yLGVbbisrXT1vKX12YXIgUHM9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy53aWR0aD1lLHRoaXMuaGVpZ2h0PXQsdGhpcy5tYXA9bix0aGlzLnByb2JsZW1zPXJ9ZmluZENlbGwoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm1hcC5sZW5ndGg7dCsrKXtjb25zdCBuPXRoaXMubWFwW3RdO2lmKG4hPWUpY29udGludWU7Y29uc3Qgcj10JXRoaXMud2lkdGgsbz10L3RoaXMud2lkdGh8MDtsZXQgaT1yKzEscz1vKzE7Zm9yKGxldCBlPTE7aTx0aGlzLndpZHRoJiZ0aGlzLm1hcFt0K2VdPT1uO2UrKylpKys7Zm9yKGxldCBlPTE7czx0aGlzLmhlaWdodCYmdGhpcy5tYXBbdCt0aGlzLndpZHRoKmVdPT1uO2UrKylzKys7cmV0dXJue2xlZnQ6cix0b3A6byxyaWdodDppLGJvdHRvbTpzfX10aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCB3aXRoIG9mZnNldCAke2V9IGZvdW5kYCl9Y29sQ291bnQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm1hcC5sZW5ndGg7dCsrKWlmKHRoaXMubWFwW3RdPT1lKXJldHVybiB0JXRoaXMud2lkdGg7dGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIGNlbGwgd2l0aCBvZmZzZXQgJHtlfSBmb3VuZGApfW5leHRDZWxsKGUsdCxuKXtjb25zdHtsZWZ0OnIscmlnaHQ6byx0b3A6aSxib3R0b206c309dGhpcy5maW5kQ2VsbChlKTtyZXR1cm4iaG9yaXoiPT10PyhuPDA/MD09cjpvPT10aGlzLndpZHRoKT9udWxsOnRoaXMubWFwW2kqdGhpcy53aWR0aCsobjwwP3ItMTpvKV06KG48MD8wPT1pOnM9PXRoaXMuaGVpZ2h0KT9udWxsOnRoaXMubWFwW3IrdGhpcy53aWR0aCoobjwwP2ktMTpzKV19cmVjdEJldHdlZW4oZSx0KXtjb25zdHtsZWZ0Om4scmlnaHQ6cix0b3A6byxib3R0b206aX09dGhpcy5maW5kQ2VsbChlKSx7bGVmdDpzLHJpZ2h0OmwsdG9wOmEsYm90dG9tOmN9PXRoaXMuZmluZENlbGwodCk7cmV0dXJue2xlZnQ6TWF0aC5taW4obixzKSx0b3A6TWF0aC5taW4obyxhKSxyaWdodDpNYXRoLm1heChyLGwpLGJvdHRvbTpNYXRoLm1heChpLGMpfX1jZWxsc0luUmVjdChlKXtjb25zdCB0PVtdLG49e307Zm9yKGxldCByPWUudG9wO3I8ZS5ib3R0b207cisrKWZvcihsZXQgbz1lLmxlZnQ7bzxlLnJpZ2h0O28rKyl7Y29uc3QgaT1yKnRoaXMud2lkdGgrbyxzPXRoaXMubWFwW2ldO25bc118fChuW3NdPSEwLG89PWUubGVmdCYmbyYmdGhpcy5tYXBbaS0xXT09c3x8cj09ZS50b3AmJnImJnRoaXMubWFwW2ktdGhpcy53aWR0aF09PXN8fHQucHVzaChzKSl9cmV0dXJuIHR9cG9zaXRpb25BdChlLHQsbil7Zm9yKGxldCByPTAsbz0wOztyKyspe2NvbnN0IGk9bytuLmNoaWxkKHIpLm5vZGVTaXplO2lmKHI9PWUpe2xldCBuPXQrZSp0aGlzLndpZHRoO2NvbnN0IHI9KGUrMSkqdGhpcy53aWR0aDtmb3IoO248ciYmdGhpcy5tYXBbbl08bzspbisrO3JldHVybiBuPT1yP2ktMTp0aGlzLm1hcFtuXX1vPWl9fXN0YXRpYyBnZXQoZSl7cmV0dXJuIFJzKGUpfHxEcyhlLGZ1bmN0aW9uKGUpe2lmKCJ0YWJsZSIhPWUudHlwZS5zcGVjLnRhYmxlUm9sZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm90IGEgdGFibGUgbm9kZTogIitlLnR5cGUubmFtZSk7Y29uc3QgdD1mdW5jdGlvbihlKXtsZXQgdD0tMSxuPSExO2ZvcihsZXQgcj0wO3I8ZS5jaGlsZENvdW50O3IrKyl7Y29uc3Qgbz1lLmNoaWxkKHIpO2xldCBpPTA7aWYobilmb3IobGV0IHQ9MDt0PHI7dCsrKXtjb25zdCBuPWUuY2hpbGQodCk7Zm9yKGxldCBlPTA7ZTxuLmNoaWxkQ291bnQ7ZSsrKXtjb25zdCBvPW4uY2hpbGQoZSk7dCtvLmF0dHJzLnJvd3NwYW4+ciYmKGkrPW8uYXR0cnMuY29sc3Bhbil9fWZvcihsZXQgZT0wO2U8by5jaGlsZENvdW50O2UrKyl7Y29uc3QgdD1vLmNoaWxkKGUpO2krPXQuYXR0cnMuY29sc3Bhbix0LmF0dHJzLnJvd3NwYW4+MSYmKG49ITApfS0xPT10P3Q9aTp0IT1pJiYodD1NYXRoLm1heCh0LGkpKX1yZXR1cm4gdH0oZSksbj1lLmNoaWxkQ291bnQscj1bXTtsZXQgbz0wLGk9bnVsbDtjb25zdCBzPVtdO2ZvcihsZXQgZT0wLG89dCpuO2U8bztlKyspcltlXT0wO2ZvcihsZXQgbD0wLGE9MDtsPG47bCsrKXtjb25zdCBjPWUuY2hpbGQobCk7YSsrO2ZvcihsZXQgZT0wOztlKyspe2Zvcig7bzxyLmxlbmd0aCYmMCE9cltvXTspbysrO2lmKGU9PWMuY2hpbGRDb3VudClicmVhaztjb25zdCBkPWMuY2hpbGQoZSkse2NvbHNwYW46cCxyb3dzcGFuOmYsY29sd2lkdGg6bX09ZC5hdHRycztmb3IobGV0IGU9MDtlPGY7ZSsrKXtpZihlK2w+PW4peyhpfHwoaT1bXSkpLnB1c2goe3R5cGU6Im92ZXJsb25nX3Jvd3NwYW4iLHBvczphLG46Zi1lfSk7YnJlYWt9Y29uc3QgYz1vK2UqdDtmb3IobGV0IGU9MDtlPHA7ZSsrKXswPT1yW2MrZV0/cltjK2VdPWE6KGl8fChpPVtdKSkucHVzaCh7dHlwZToiY29sbGlzaW9uIixyb3c6bCxwb3M6YSxuOnAtZX0pO2NvbnN0IG49bSYmbVtlXTtpZihuKXtjb25zdCByPShjK2UpJXQqMixvPXNbcl07bnVsbD09b3x8byE9biYmMT09c1tyKzFdPyhzW3JdPW4sc1tyKzFdPTEpOm89PW4mJnNbcisxXSsrfX19bys9cCxhKz1kLm5vZGVTaXplfWNvbnN0IGQ9KGwrMSkqdDtsZXQgcD0wO2Zvcig7bzxkOykwPT1yW28rK10mJnArKztwJiYoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJtaXNzaW5nIixyb3c6bCxuOnB9KSxhKyt9MCE9PXQmJjAhPT1ufHwoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJ6ZXJvX3NpemVkIn0pO2NvbnN0IGw9bmV3IFBzKHQsbixyLGkpO2xldCBhPSExO2ZvcihsZXQgZT0wOyFhJiZlPHMubGVuZ3RoO2UrPTIpbnVsbCE9c1tlXSYmc1tlKzFdPG4mJihhPSEwKTthJiZmdW5jdGlvbihlLHQsbil7ZS5wcm9ibGVtc3x8KGUucHJvYmxlbXM9W10pO2NvbnN0IHI9e307Zm9yKGxldCBvPTA7bzxlLm1hcC5sZW5ndGg7bysrKXtjb25zdCBpPWUubWFwW29dO2lmKHJbaV0pY29udGludWU7cltpXT0hMDtjb25zdCBzPW4ubm9kZUF0KGkpO2lmKCFzKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7aX0gZm91bmRgKTtsZXQgbD1udWxsO2NvbnN0IGE9cy5hdHRycztmb3IobGV0IG49MDtuPGEuY29sc3BhbjtuKyspe2NvbnN0IHI9dFsobytuKSVlLndpZHRoKjJdO251bGw9PXJ8fGEuY29sd2lkdGgmJmEuY29sd2lkdGhbbl09PXJ8fCgobHx8KGw9ZnJlc2hDb2xXaWR0aChhKSkpW25dPXIpfWwmJmUucHJvYmxlbXMudW5zaGlmdCh7dHlwZToiY29sd2lkdGggbWlzbWF0Y2giLHBvczppLGNvbHdpZHRoOmx9KX19KGwscyxlKTtyZXR1cm4gbH0oZSkpfX07ZnVuY3Rpb24gZnJlc2hDb2xXaWR0aChlKXtpZihlLmNvbHdpZHRoKXJldHVybiBlLmNvbHdpZHRoLnNsaWNlKCk7Y29uc3QgdD1bXTtmb3IobGV0IG49MDtuPGUuY29sc3BhbjtuKyspdC5wdXNoKDApO3JldHVybiB0fWZ1bmN0aW9uIHRhYmxlTm9kZVR5cGVzKGUpe2xldCB0PWUuY2FjaGVkLnRhYmxlTm9kZVR5cGVzO2lmKCF0KXt0PWUuY2FjaGVkLnRhYmxlTm9kZVR5cGVzPXt9O2Zvcihjb25zdCBuIGluIGUubm9kZXMpe2NvbnN0IHI9ZS5ub2Rlc1tuXSxvPXIuc3BlYy50YWJsZVJvbGU7byYmKHRbb109cil9fXJldHVybiB0fWZ1bmN0aW9uIGlzSW5UYWJsZShlKXtjb25zdCB0PWUuc2VsZWN0aW9uLiRoZWFkO2ZvcihsZXQgZT10LmRlcHRoO2U+MDtlLS0paWYoInJvdyI9PXQubm9kZShlKS50eXBlLnNwZWMudGFibGVSb2xlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHBvaW50c0F0Q2VsbChlKXtyZXR1cm4icm93Ij09ZS5wYXJlbnQudHlwZS5zcGVjLnRhYmxlUm9sZSYmISFlLm5vZGVBZnRlcn1mdW5jdGlvbiBpblNhbWVUYWJsZShlLHQpe3JldHVybiBlLmRlcHRoPT10LmRlcHRoJiZlLnBvcz49dC5zdGFydCgtMSkmJmUucG9zPD10LmVuZCgtMSl9ZnVuY3Rpb24gbmV4dENlbGwoZSx0LG4pe2NvbnN0IHI9ZS5ub2RlKC0xKSxvPVBzLmdldChyKSxpPWUuc3RhcnQoLTEpLHM9by5uZXh0Q2VsbChlLnBvcy1pLHQsbik7cmV0dXJuIG51bGw9PXM/bnVsbDplLm5vZGUoMCkucmVzb2x2ZShpK3MpfWZ1bmN0aW9uIHJlbW92ZUNvbFNwYW4oZSx0LG49MSl7Y29uc3Qgcj17Li4uZSxjb2xzcGFuOmUuY29sc3Bhbi1ufTtyZXR1cm4gci5jb2x3aWR0aCYmKHIuY29sd2lkdGg9ci5jb2x3aWR0aC5zbGljZSgpLHIuY29sd2lkdGguc3BsaWNlKHQsbiksci5jb2x3aWR0aC5zb21lKGU9PmU+MCl8fChyLmNvbHdpZHRoPW51bGwpKSxyfW5ldyBQbHVnaW5LZXkoInNlbGVjdGluZ0NlbGxzIik7dmFyIElzPWNsYXNzIENlbGxTZWxlY3Rpb24gZXh0ZW5kcyBTZWxlY3Rpb257Y29uc3RydWN0b3IoZSx0PWUpe2NvbnN0IG49ZS5ub2RlKC0xKSxyPVBzLmdldChuKSxvPWUuc3RhcnQoLTEpLGk9ci5yZWN0QmV0d2VlbihlLnBvcy1vLHQucG9zLW8pLHM9ZS5ub2RlKDApLGw9ci5jZWxsc0luUmVjdChpKS5maWx0ZXIoZT0+ZSE9dC5wb3Mtbyk7bC51bnNoaWZ0KHQucG9zLW8pO2NvbnN0IGE9bC5tYXAoZT0+e2NvbnN0IHQ9bi5ub2RlQXQoZSk7aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIGNlbGwgd2l0aCBvZmZzZXQgJHtlfSBmb3VuZGApO2NvbnN0IHI9bytlKzE7cmV0dXJuIG5ldyBTZWxlY3Rpb25SYW5nZShzLnJlc29sdmUocikscy5yZXNvbHZlKHIrdC5jb250ZW50LnNpemUpKX0pO3N1cGVyKGFbMF0uJGZyb20sYVswXS4kdG8sYSksdGhpcy4kYW5jaG9yQ2VsbD1lLHRoaXMuJGhlYWRDZWxsPXR9bWFwKGUsdCl7Y29uc3Qgbj1lLnJlc29sdmUodC5tYXAodGhpcy4kYW5jaG9yQ2VsbC5wb3MpKSxyPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLiRoZWFkQ2VsbC5wb3MpKTtpZihwb2ludHNBdENlbGwobikmJnBvaW50c0F0Q2VsbChyKSYmaW5TYW1lVGFibGUobixyKSl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLm5vZGUoLTEpIT1uLm5vZGUoLTEpO3JldHVybiBlJiZ0aGlzLmlzUm93U2VsZWN0aW9uKCk/Q2VsbFNlbGVjdGlvbi5yb3dTZWxlY3Rpb24obixyKTplJiZ0aGlzLmlzQ29sU2VsZWN0aW9uKCk/Q2VsbFNlbGVjdGlvbi5jb2xTZWxlY3Rpb24obixyKTpuZXcgQ2VsbFNlbGVjdGlvbihuLHIpfXJldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4obixyKX1jb250ZW50KCl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLm5vZGUoLTEpLHQ9UHMuZ2V0KGUpLG49dGhpcy4kYW5jaG9yQ2VsbC5zdGFydCgtMSkscj10LnJlY3RCZXR3ZWVuKHRoaXMuJGFuY2hvckNlbGwucG9zLW4sdGhpcy4kaGVhZENlbGwucG9zLW4pLG89e30saT1bXTtmb3IobGV0IG49ci50b3A7bjxyLmJvdHRvbTtuKyspe2NvbnN0IHM9W107Zm9yKGxldCBpPW4qdC53aWR0aCtyLmxlZnQsbD1yLmxlZnQ7bDxyLnJpZ2h0O2wrKyxpKyspe2NvbnN0IG49dC5tYXBbaV07aWYob1tuXSljb250aW51ZTtvW25dPSEwO2NvbnN0IGw9dC5maW5kQ2VsbChuKTtsZXQgYT1lLm5vZGVBdChuKTtpZighYSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCB3aXRoIG9mZnNldCAke259IGZvdW5kYCk7Y29uc3QgYz1yLmxlZnQtbC5sZWZ0LGQ9bC5yaWdodC1yLnJpZ2h0O2lmKGM+MHx8ZD4wKXtsZXQgZT1hLmF0dHJzO2lmKGM+MCYmKGU9cmVtb3ZlQ29sU3BhbihlLDAsYykpLGQ+MCYmKGU9cmVtb3ZlQ29sU3BhbihlLGUuY29sc3Bhbi1kLGQpKSxsLmxlZnQ8ci5sZWZ0KXtpZihhPWEudHlwZS5jcmVhdGVBbmRGaWxsKGUpLCFhKXRocm93IG5ldyBSYW5nZUVycm9yKGBDb3VsZCBub3QgY3JlYXRlIGNlbGwgd2l0aCBhdHRycyAke0pTT04uc3RyaW5naWZ5KGUpfWApfWVsc2UgYT1hLnR5cGUuY3JlYXRlKGUsYS5jb250ZW50KX1pZihsLnRvcDxyLnRvcHx8bC5ib3R0b20+ci5ib3R0b20pe2NvbnN0IGU9ey4uLmEuYXR0cnMscm93c3BhbjpNYXRoLm1pbihsLmJvdHRvbSxyLmJvdHRvbSktTWF0aC5tYXgobC50b3Asci50b3ApfTthPWwudG9wPHIudG9wP2EudHlwZS5jcmVhdGVBbmRGaWxsKGUpOmEudHlwZS5jcmVhdGUoZSxhLmNvbnRlbnQpfXMucHVzaChhKX1pLnB1c2goZS5jaGlsZChuKS5jb3B5KEZyYWdtZW50LmZyb20ocykpKX1jb25zdCBzPXRoaXMuaXNDb2xTZWxlY3Rpb24oKSYmdGhpcy5pc1Jvd1NlbGVjdGlvbigpP2U6aTtyZXR1cm4gbmV3IFNsaWNlKEZyYWdtZW50LmZyb20ocyksMSwxKX1yZXBsYWNlKGUsdD1TbGljZS5lbXB0eSl7Y29uc3Qgbj1lLnN0ZXBzLmxlbmd0aCxyPXRoaXMucmFuZ2VzO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtjb25zdHskZnJvbTppLCR0bzpzfT1yW29dLGw9ZS5tYXBwaW5nLnNsaWNlKG4pO2UucmVwbGFjZShsLm1hcChpLnBvcyksbC5tYXAocy5wb3MpLG8/U2xpY2UuZW1wdHk6dCl9Y29uc3Qgbz1TZWxlY3Rpb24uZmluZEZyb20oZS5kb2MucmVzb2x2ZShlLm1hcHBpbmcuc2xpY2UobikubWFwKHRoaXMudG8pKSwtMSk7byYmZS5zZXRTZWxlY3Rpb24obyl9cmVwbGFjZVdpdGgoZSx0KXt0aGlzLnJlcGxhY2UoZSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbSh0KSwwLDApKX1mb3JFYWNoQ2VsbChlKXtjb25zdCB0PXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSksbj1Qcy5nZXQodCkscj10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxvPW4uY2VsbHNJblJlY3Qobi5yZWN0QmV0d2Vlbih0aGlzLiRhbmNob3JDZWxsLnBvcy1yLHRoaXMuJGhlYWRDZWxsLnBvcy1yKSk7Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspZSh0Lm5vZGVBdChvW25dKSxyK29bbl0pfWlzQ29sU2VsZWN0aW9uKCl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLmluZGV4KC0xKSx0PXRoaXMuJGhlYWRDZWxsLmluZGV4KC0xKTtpZihNYXRoLm1pbihlLHQpPjApcmV0dXJuITE7Y29uc3Qgbj1lK3RoaXMuJGFuY2hvckNlbGwubm9kZUFmdGVyLmF0dHJzLnJvd3NwYW4scj10K3RoaXMuJGhlYWRDZWxsLm5vZGVBZnRlci5hdHRycy5yb3dzcGFuO3JldHVybiBNYXRoLm1heChuLHIpPT10aGlzLiRoZWFkQ2VsbC5ub2RlKC0xKS5jaGlsZENvdW50fXN0YXRpYyBjb2xTZWxlY3Rpb24oZSx0PWUpe2NvbnN0IG49ZS5ub2RlKC0xKSxyPVBzLmdldChuKSxvPWUuc3RhcnQoLTEpLGk9ci5maW5kQ2VsbChlLnBvcy1vKSxzPXIuZmluZENlbGwodC5wb3MtbyksbD1lLm5vZGUoMCk7cmV0dXJuIGkudG9wPD1zLnRvcD8oaS50b3A+MCYmKGU9bC5yZXNvbHZlKG8rci5tYXBbaS5sZWZ0XSkpLHMuYm90dG9tPHIuaGVpZ2h0JiYodD1sLnJlc29sdmUobytyLm1hcFtyLndpZHRoKihyLmhlaWdodC0xKStzLnJpZ2h0LTFdKSkpOihzLnRvcD4wJiYodD1sLnJlc29sdmUobytyLm1hcFtzLmxlZnRdKSksaS5ib3R0b208ci5oZWlnaHQmJihlPWwucmVzb2x2ZShvK3IubWFwW3Iud2lkdGgqKHIuaGVpZ2h0LTEpK2kucmlnaHQtMV0pKSksbmV3IENlbGxTZWxlY3Rpb24oZSx0KX1pc1Jvd1NlbGVjdGlvbigpe2NvbnN0IGU9dGhpcy4kYW5jaG9yQ2VsbC5ub2RlKC0xKSx0PVBzLmdldChlKSxuPXRoaXMuJGFuY2hvckNlbGwuc3RhcnQoLTEpLHI9dC5jb2xDb3VudCh0aGlzLiRhbmNob3JDZWxsLnBvcy1uKSxvPXQuY29sQ291bnQodGhpcy4kaGVhZENlbGwucG9zLW4pO2lmKE1hdGgubWluKHIsbyk+MClyZXR1cm4hMTtjb25zdCBpPXIrdGhpcy4kYW5jaG9yQ2VsbC5ub2RlQWZ0ZXIuYXR0cnMuY29sc3BhbixzPW8rdGhpcy4kaGVhZENlbGwubm9kZUFmdGVyLmF0dHJzLmNvbHNwYW47cmV0dXJuIE1hdGgubWF4KGkscyk9PXQud2lkdGh9ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDZWxsU2VsZWN0aW9uJiZlLiRhbmNob3JDZWxsLnBvcz09dGhpcy4kYW5jaG9yQ2VsbC5wb3MmJmUuJGhlYWRDZWxsLnBvcz09dGhpcy4kaGVhZENlbGwucG9zfXN0YXRpYyByb3dTZWxlY3Rpb24oZSx0PWUpe2NvbnN0IG49ZS5ub2RlKC0xKSxyPVBzLmdldChuKSxvPWUuc3RhcnQoLTEpLGk9ci5maW5kQ2VsbChlLnBvcy1vKSxzPXIuZmluZENlbGwodC5wb3MtbyksbD1lLm5vZGUoMCk7cmV0dXJuIGkubGVmdDw9cy5sZWZ0PyhpLmxlZnQ+MCYmKGU9bC5yZXNvbHZlKG8rci5tYXBbaS50b3Aqci53aWR0aF0pKSxzLnJpZ2h0PHIud2lkdGgmJih0PWwucmVzb2x2ZShvK3IubWFwW3Iud2lkdGgqKHMudG9wKzEpLTFdKSkpOihzLmxlZnQ+MCYmKHQ9bC5yZXNvbHZlKG8rci5tYXBbcy50b3Aqci53aWR0aF0pKSxpLnJpZ2h0PHIud2lkdGgmJihlPWwucmVzb2x2ZShvK3IubWFwW3Iud2lkdGgqKGkudG9wKzEpLTFdKSkpLG5ldyBDZWxsU2VsZWN0aW9uKGUsdCl9dG9KU09OKCl7cmV0dXJue3R5cGU6ImNlbGwiLGFuY2hvcjp0aGlzLiRhbmNob3JDZWxsLnBvcyxoZWFkOnRoaXMuJGhlYWRDZWxsLnBvc319c3RhdGljIGZyb21KU09OKGUsdCl7cmV0dXJuIG5ldyBDZWxsU2VsZWN0aW9uKGUucmVzb2x2ZSh0LmFuY2hvciksZS5yZXNvbHZlKHQuaGVhZCkpfXN0YXRpYyBjcmVhdGUoZSx0LG49dCl7cmV0dXJuIG5ldyBDZWxsU2VsZWN0aW9uKGUucmVzb2x2ZSh0KSxlLnJlc29sdmUobikpfWdldEJvb2ttYXJrKCl7cmV0dXJuIG5ldyAkcyh0aGlzLiRhbmNob3JDZWxsLnBvcyx0aGlzLiRoZWFkQ2VsbC5wb3MpfX07SXMucHJvdG90eXBlLnZpc2libGU9ITEsU2VsZWN0aW9uLmpzb25JRCgiY2VsbCIsSXMpO3ZhciAkcz1jbGFzcyBDZWxsQm9va21hcmt7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmFuY2hvcj1lLHRoaXMuaGVhZD10fW1hcChlKXtyZXR1cm4gbmV3IENlbGxCb29rbWFyayhlLm1hcCh0aGlzLmFuY2hvciksZS5tYXAodGhpcy5oZWFkKSl9cmVzb2x2ZShlKXtjb25zdCB0PWUucmVzb2x2ZSh0aGlzLmFuY2hvciksbj1lLnJlc29sdmUodGhpcy5oZWFkKTtyZXR1cm4icm93Ij09dC5wYXJlbnQudHlwZS5zcGVjLnRhYmxlUm9sZSYmInJvdyI9PW4ucGFyZW50LnR5cGUuc3BlYy50YWJsZVJvbGUmJnQuaW5kZXgoKTx0LnBhcmVudC5jaGlsZENvdW50JiZuLmluZGV4KCk8bi5wYXJlbnQuY2hpbGRDb3VudCYmaW5TYW1lVGFibGUodCxuKT9uZXcgSXModCxuKTpTZWxlY3Rpb24ubmVhcihuLDEpfX07ZnVuY3Rpb24gc2VsZWN0ZWRSZWN0KGUpe2NvbnN0IHQ9ZS5zZWxlY3Rpb24sbj1mdW5jdGlvbihlKXtjb25zdCB0PWUuc2VsZWN0aW9uO2lmKCIkYW5jaG9yQ2VsbCJpbiB0JiZ0LiRhbmNob3JDZWxsKXJldHVybiB0LiRhbmNob3JDZWxsLnBvcz50LiRoZWFkQ2VsbC5wb3M/dC4kYW5jaG9yQ2VsbDp0LiRoZWFkQ2VsbDtpZigibm9kZSJpbiB0JiZ0Lm5vZGUmJiJjZWxsIj09dC5ub2RlLnR5cGUuc3BlYy50YWJsZVJvbGUpcmV0dXJuIHQuJGFuY2hvcjtjb25zdCBuPWZ1bmN0aW9uKGUpe2ZvcihsZXQgdD1lLmRlcHRoLTE7dD4wO3QtLSlpZigicm93Ij09ZS5ub2RlKHQpLnR5cGUuc3BlYy50YWJsZVJvbGUpcmV0dXJuIGUubm9kZSgwKS5yZXNvbHZlKGUuYmVmb3JlKHQrMSkpO3JldHVybiBudWxsfSh0LiRoZWFkKXx8ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PWUubm9kZUFmdGVyLG49ZS5wb3M7dDt0PXQuZmlyc3RDaGlsZCxuKyspe2NvbnN0IHI9dC50eXBlLnNwZWMudGFibGVSb2xlO2lmKCJjZWxsIj09cnx8ImhlYWRlcl9jZWxsIj09cilyZXR1cm4gZS5kb2MucmVzb2x2ZShuKX1mb3IobGV0IHQ9ZS5ub2RlQmVmb3JlLG49ZS5wb3M7dDt0PXQubGFzdENoaWxkLG4tLSl7Y29uc3Qgcj10LnR5cGUuc3BlYy50YWJsZVJvbGU7aWYoImNlbGwiPT1yfHwiaGVhZGVyX2NlbGwiPT1yKXJldHVybiBlLmRvYy5yZXNvbHZlKG4tdC5ub2RlU2l6ZSl9fSh0LiRoZWFkKTtpZihuKXJldHVybiBuO3Rocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIGZvdW5kIGFyb3VuZCBwb3NpdGlvbiAke3QuaGVhZH1gKX0oZSkscj1uLm5vZGUoLTEpLG89bi5zdGFydCgtMSksaT1Qcy5nZXQocik7cmV0dXJuey4uLnQgaW5zdGFuY2VvZiBJcz9pLnJlY3RCZXR3ZWVuKHQuJGFuY2hvckNlbGwucG9zLW8sdC4kaGVhZENlbGwucG9zLW8pOmkuZmluZENlbGwobi5wb3MtbyksdGFibGVTdGFydDpvLG1hcDppLHRhYmxlOnJ9fWZ1bmN0aW9uIGlzSGVhZGVyRW5hYmxlZEJ5VHlwZShlLHQsbil7Y29uc3Qgcj10Lm1hcC5jZWxsc0luUmVjdCh7bGVmdDowLHRvcDowLHJpZ2h0OiJyb3ciPT1lP3QubWFwLndpZHRoOjEsYm90dG9tOiJjb2x1bW4iPT1lP3QubWFwLmhlaWdodDoxfSk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe2NvbnN0IG89dC50YWJsZS5ub2RlQXQocltlXSk7aWYobyYmby50eXBlIT09bi5oZWFkZXJfY2VsbClyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiB0b2dnbGVIZWFkZXIoZSx0KXtyZXR1cm4odD10fHx7dXNlRGVwcmVjYXRlZExvZ2ljOiExfSkudXNlRGVwcmVjYXRlZExvZ2ljP2Z1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCFpc0luVGFibGUodCkpcmV0dXJuITE7aWYobil7Y29uc3Qgcj10YWJsZU5vZGVUeXBlcyh0LnNjaGVtYSksbz1zZWxlY3RlZFJlY3QodCksaT10LnRyLHM9by5tYXAuY2VsbHNJblJlY3QoImNvbHVtbiI9PWU/e2xlZnQ6by5sZWZ0LHRvcDowLHJpZ2h0Om8ucmlnaHQsYm90dG9tOm8ubWFwLmhlaWdodH06InJvdyI9PWU/e2xlZnQ6MCx0b3A6by50b3AscmlnaHQ6by5tYXAud2lkdGgsYm90dG9tOm8uYm90dG9tfTpvKSxsPXMubWFwKGU9Pm8udGFibGUubm9kZUF0KGUpKTtmb3IobGV0IGU9MDtlPHMubGVuZ3RoO2UrKylsW2VdLnR5cGU9PXIuaGVhZGVyX2NlbGwmJmkuc2V0Tm9kZU1hcmt1cChvLnRhYmxlU3RhcnQrc1tlXSxyLmNlbGwsbFtlXS5hdHRycyk7aWYoMD09PWkuc3RlcHMubGVuZ3RoKWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKWkuc2V0Tm9kZU1hcmt1cChvLnRhYmxlU3RhcnQrc1tlXSxyLmhlYWRlcl9jZWxsLGxbZV0uYXR0cnMpO24oaSl9cmV0dXJuITB9fShlKTpmdW5jdGlvbih0LG4pe2lmKCFpc0luVGFibGUodCkpcmV0dXJuITE7aWYobil7Y29uc3Qgcj10YWJsZU5vZGVUeXBlcyh0LnNjaGVtYSksbz1zZWxlY3RlZFJlY3QodCksaT10LnRyLHM9aXNIZWFkZXJFbmFibGVkQnlUeXBlKCJyb3ciLG8sciksbD1pc0hlYWRlckVuYWJsZWRCeVR5cGUoImNvbHVtbiIsbyxyKSxhPSgiY29sdW1uIj09PWU/czoicm93Ij09PWUmJmwpPzE6MCxjPSJjb2x1bW4iPT1lP3tsZWZ0OjAsdG9wOmEscmlnaHQ6MSxib3R0b206by5tYXAuaGVpZ2h0fToicm93Ij09ZT97bGVmdDphLHRvcDowLHJpZ2h0Om8ubWFwLndpZHRoLGJvdHRvbToxfTpvLGQ9ImNvbHVtbiI9PWU/bD9yLmNlbGw6ci5oZWFkZXJfY2VsbDoicm93Ij09ZT9zP3IuY2VsbDpyLmhlYWRlcl9jZWxsOnIuY2VsbDtvLm1hcC5jZWxsc0luUmVjdChjKS5mb3JFYWNoKGU9Pntjb25zdCB0PWUrby50YWJsZVN0YXJ0LG49aS5kb2Mubm9kZUF0KHQpO24mJmkuc2V0Tm9kZU1hcmt1cCh0LGQsbi5hdHRycyl9KSxuKGkpfXJldHVybiEwfX1mdW5jdGlvbiBkZWxldGVDZWxsU2VsZWN0aW9uKGUsdCl7Y29uc3Qgbj1lLnNlbGVjdGlvbjtpZighKG4gaW5zdGFuY2VvZiBJcykpcmV0dXJuITE7aWYodCl7Y29uc3Qgcj1lLnRyLG89dGFibGVOb2RlVHlwZXMoZS5zY2hlbWEpLmNlbGwuY3JlYXRlQW5kRmlsbCgpLmNvbnRlbnQ7bi5mb3JFYWNoQ2VsbCgoZSx0KT0+e2UuY29udGVudC5lcShvKXx8ci5yZXBsYWNlKHIubWFwcGluZy5tYXAodCsxKSxyLm1hcHBpbmcubWFwKHQrZS5ub2RlU2l6ZS0xKSxuZXcgU2xpY2UobywwLDApKX0pLHIuZG9jQ2hhbmdlZCYmdChyKX1yZXR1cm4hMH1mdW5jdGlvbiBtYXliZVNldFNlbGVjdGlvbihlLHQsbil7cmV0dXJuIW4uZXEoZS5zZWxlY3Rpb24pJiYodCYmdChlLnRyLnNldFNlbGVjdGlvbihuKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9ZnVuY3Rpb24gYXJyb3coZSx0KXtyZXR1cm4obixyLG8pPT57aWYoIW8pcmV0dXJuITE7Y29uc3QgaT1uLnNlbGVjdGlvbjtpZihpIGluc3RhbmNlb2YgSXMpcmV0dXJuIG1heWJlU2V0U2VsZWN0aW9uKG4scixTZWxlY3Rpb24ubmVhcihpLiRoZWFkQ2VsbCx0KSk7aWYoImhvcml6IiE9ZSYmIWkuZW1wdHkpcmV0dXJuITE7Y29uc3Qgcz1hdEVuZE9mQ2VsbChvLGUsdCk7aWYobnVsbD09cylyZXR1cm4hMTtpZigiaG9yaXoiPT1lKXJldHVybiBtYXliZVNldFNlbGVjdGlvbihuLHIsU2VsZWN0aW9uLm5lYXIobi5kb2MucmVzb2x2ZShpLmhlYWQrdCksdCkpO3tjb25zdCBvPW4uZG9jLnJlc29sdmUocyksaT1uZXh0Q2VsbChvLGUsdCk7bGV0IGw7cmV0dXJuIGw9aT9TZWxlY3Rpb24ubmVhcihpLDEpOnQ8MD9TZWxlY3Rpb24ubmVhcihuLmRvYy5yZXNvbHZlKG8uYmVmb3JlKC0xKSksLTEpOlNlbGVjdGlvbi5uZWFyKG4uZG9jLnJlc29sdmUoby5hZnRlcigtMSkpLDEpLG1heWJlU2V0U2VsZWN0aW9uKG4scixsKX19fWZ1bmN0aW9uIHNoaWZ0QXJyb3coZSx0KXtyZXR1cm4obixyLG8pPT57aWYoIW8pcmV0dXJuITE7Y29uc3QgaT1uLnNlbGVjdGlvbjtsZXQgcztpZihpIGluc3RhbmNlb2YgSXMpcz1pO2Vsc2V7Y29uc3Qgcj1hdEVuZE9mQ2VsbChvLGUsdCk7aWYobnVsbD09cilyZXR1cm4hMTtzPW5ldyBJcyhuLmRvYy5yZXNvbHZlKHIpKX1jb25zdCBsPW5leHRDZWxsKHMuJGhlYWRDZWxsLGUsdCk7cmV0dXJuISFsJiZtYXliZVNldFNlbGVjdGlvbihuLHIsbmV3IElzKHMuJGFuY2hvckNlbGwsbCkpfX1mdW5jdGlvbiBhdEVuZE9mQ2VsbChlLHQsbil7aWYoIShlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pKXJldHVybiBudWxsO2NvbnN0eyRoZWFkOnJ9PWUuc3RhdGUuc2VsZWN0aW9uO2ZvcihsZXQgbz1yLmRlcHRoLTE7bz49MDtvLS0pe2NvbnN0IGk9ci5ub2RlKG8pO2lmKChuPDA/ci5pbmRleChvKTpyLmluZGV4QWZ0ZXIobykpIT0objwwPzA6aS5jaGlsZENvdW50KSlyZXR1cm4gbnVsbDtpZigiY2VsbCI9PWkudHlwZS5zcGVjLnRhYmxlUm9sZXx8ImhlYWRlcl9jZWxsIj09aS50eXBlLnNwZWMudGFibGVSb2xlKXtjb25zdCBpPXIuYmVmb3JlKG8pLHM9InZlcnQiPT10P24+MD8iZG93biI6InVwIjpuPjA/InJpZ2h0IjoibGVmdCI7cmV0dXJuIGUuZW5kT2ZUZXh0YmxvY2socyk/aTpudWxsfX1yZXR1cm4gbnVsbH1uZXcgUGx1Z2luS2V5KCJmaXgtdGFibGVzIiksdG9nZ2xlSGVhZGVyKCJyb3ciLHt1c2VEZXByZWNhdGVkTG9naWM6ITB9KSx0b2dnbGVIZWFkZXIoImNvbHVtbiIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pLHRvZ2dsZUhlYWRlcigiY2VsbCIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pLGtleWRvd25IYW5kbGVyKHtBcnJvd0xlZnQ6YXJyb3coImhvcml6IiwtMSksQXJyb3dSaWdodDphcnJvdygiaG9yaXoiLDEpLEFycm93VXA6YXJyb3coInZlcnQiLC0xKSxBcnJvd0Rvd246YXJyb3coInZlcnQiLDEpLCJTaGlmdC1BcnJvd0xlZnQiOnNoaWZ0QXJyb3coImhvcml6IiwtMSksIlNoaWZ0LUFycm93UmlnaHQiOnNoaWZ0QXJyb3coImhvcml6IiwxKSwiU2hpZnQtQXJyb3dVcCI6c2hpZnRBcnJvdygidmVydCIsLTEpLCJTaGlmdC1BcnJvd0Rvd24iOnNoaWZ0QXJyb3coInZlcnQiLDEpLEJhY2tzcGFjZTpkZWxldGVDZWxsU2VsZWN0aW9uLCJNb2QtQmFja3NwYWNlIjpkZWxldGVDZWxsU2VsZWN0aW9uLERlbGV0ZTpkZWxldGVDZWxsU2VsZWN0aW9uLCJNb2QtRGVsZXRlIjpkZWxldGVDZWxsU2VsZWN0aW9ufSksbmV3IFBsdWdpbktleSgidGFibGVDb2x1bW5SZXNpemluZyIpO3ZhciBMcz1jbGFzc3tjb25zdHJ1Y3Rvcih7ZWRpdG9yOmUsZWxlbWVudDp0LHZpZXc6bixwbHVnaW5LZXk6cj0iYnViYmxlTWVudSIsdXBkYXRlRGVsYXk6bz0yNTAscmVzaXplRGVsYXk6aT02MCxzaG91bGRTaG93OnMsYXBwZW5kVG86bCxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6YSxvcHRpb25zOmN9KXt2YXIgZDt0aGlzLnByZXZlbnRIaWRlPSExLHRoaXMuaXNWaXNpYmxlPSExLHRoaXMuc2Nyb2xsVGFyZ2V0PXdpbmRvdyx0aGlzLmZsb2F0aW5nVUlPcHRpb25zPXtzdHJhdGVneToiYWJzb2x1dGUiLHBsYWNlbWVudDoidG9wIixvZmZzZXQ6OCxmbGlwOnt9LHNoaWZ0Ont9LGFycm93OiExLHNpemU6ITEsYXV0b1BsYWNlbWVudDohMSxoaWRlOiExLGlubGluZTohMSxvblNob3c6dm9pZCAwLG9uSGlkZTp2b2lkIDAsb25VcGRhdGU6dm9pZCAwLG9uRGVzdHJveTp2b2lkIDB9LHRoaXMuc2hvdWxkU2hvdz0oe3ZpZXc6ZSxzdGF0ZTp0LGZyb206bix0bzpyfSk9Pntjb25zdHtkb2M6byxzZWxlY3Rpb246aX09dCx7ZW1wdHk6c309aSxsPSFvLnRleHRCZXR3ZWVuKG4scikubGVuZ3RoJiZpc1RleHRTZWxlY3Rpb24odC5zZWxlY3Rpb24pLGE9dGhpcy5lbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO3JldHVybiEoIWUuaGFzRm9jdXMoKSYmIWF8fHN8fGx8fCF0aGlzLmVkaXRvci5pc0VkaXRhYmxlKX0sdGhpcy5tb3VzZWRvd25IYW5kbGVyPSgpPT57dGhpcy5wcmV2ZW50SGlkZT0hMH0sdGhpcy5kcmFnc3RhcnRIYW5kbGVyPSgpPT57dGhpcy5oaWRlKCl9LHRoaXMucmVzaXplSGFuZGxlcj0oKT0+e3RoaXMucmVzaXplRGVib3VuY2VUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplRGVib3VuY2VUaW1lciksdGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy51cGRhdGVQb3NpdGlvbigpfSx0aGlzLnJlc2l6ZURlbGF5KX0sdGhpcy5mb2N1c0hhbmRsZXI9KCk9PntzZXRUaW1lb3V0KCgpPT50aGlzLnVwZGF0ZSh0aGlzLmVkaXRvci52aWV3KSl9LHRoaXMuYmx1ckhhbmRsZXI9KHtldmVudDplfSk9Pnt2YXIgdDt0aGlzLmVkaXRvci5pc0Rlc3Ryb3llZD90aGlzLmRlc3Ryb3koKTp0aGlzLnByZXZlbnRIaWRlP3RoaXMucHJldmVudEhpZGU9ITE6KG51bGw9PWU/dm9pZCAwOmUucmVsYXRlZFRhcmdldCkmJihudWxsPT0odD10aGlzLmVsZW1lbnQucGFyZW50Tm9kZSk/dm9pZCAwOnQuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSl8fChudWxsPT1lP3ZvaWQgMDplLnJlbGF0ZWRUYXJnZXQpIT09dGhpcy5lZGl0b3Iudmlldy5kb20mJnRoaXMuaGlkZSgpfSx0aGlzLmhhbmRsZURlYm91bmNlZFVwZGF0ZT0oZSx0KT0+e2NvbnN0IG49IShudWxsPT10P3ZvaWQgMDp0LnNlbGVjdGlvbi5lcShlLnN0YXRlLnNlbGVjdGlvbikpLHI9IShudWxsPT10P3ZvaWQgMDp0LmRvYy5lcShlLnN0YXRlLmRvYykpOyhufHxyKSYmKHRoaXMudXBkYXRlRGVib3VuY2VUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlRGVib3VuY2VUaW1lciksdGhpcy51cGRhdGVEZWJvdW5jZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy51cGRhdGVIYW5kbGVyKGUsbixyLHQpfSx0aGlzLnVwZGF0ZURlbGF5KSl9LHRoaXMudXBkYXRlSGFuZGxlcj0oZSx0LG4scik9Pntjb25zdHtjb21wb3Npbmc6b309ZTtpZihvfHwhdCYmIW4pcmV0dXJuO3RoaXMuZ2V0U2hvdWxkU2hvdyhyKT8odGhpcy5zaG93KCksdGhpcy51cGRhdGVQb3NpdGlvbigpKTp0aGlzLmhpZGUoKX0sdGhpcy50cmFuc2FjdGlvbkhhbmRsZXI9KHt0cmFuc2FjdGlvbjplfSk9Pntjb25zdCB0PWUuZ2V0TWV0YSh0aGlzLnBsdWdpbktleSk7InVwZGF0ZVBvc2l0aW9uIj09PXQ/dGhpcy51cGRhdGVQb3NpdGlvbigpOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmInVwZGF0ZU9wdGlvbnMiPT09dC50eXBlP3RoaXMudXBkYXRlT3B0aW9ucyh0Lm9wdGlvbnMpOiJoaWRlIj09PXQ/dGhpcy5oaWRlKCk6InNob3ciPT09dCYmKHRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLnNob3coKSl9LHRoaXMuZWRpdG9yPWUsdGhpcy5lbGVtZW50PXQsdGhpcy52aWV3PW4sdGhpcy5wbHVnaW5LZXk9cix0aGlzLnVwZGF0ZURlbGF5PW8sdGhpcy5yZXNpemVEZWxheT1pLHRoaXMuYXBwZW5kVG89bCx0aGlzLnNjcm9sbFRhcmdldD1udWxsIT0oZD1udWxsPT1jP3ZvaWQgMDpjLnNjcm9sbFRhcmdldCk/ZDp3aW5kb3csdGhpcy5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ9YSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zPXsuLi50aGlzLmZsb2F0aW5nVUlPcHRpb25zLC4uLmN9LHRoaXMuZWxlbWVudC50YWJJbmRleD0wLHMmJih0aGlzLnNob3VsZFNob3c9cyksdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5tb3VzZWRvd25IYW5kbGVyLHtjYXB0dXJlOiEwfSksdGhpcy52aWV3LmRvbS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuZHJhZ3N0YXJ0SGFuZGxlciksdGhpcy5lZGl0b3Iub24oImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub24oImJsdXIiLHRoaXMuYmx1ckhhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJ0cmFuc2FjdGlvbiIsdGhpcy50cmFuc2FjdGlvbkhhbmRsZXIpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMudXBkYXRlKG4sbi5zdGF0ZSksdGhpcy5nZXRTaG91bGRTaG93KCkmJih0aGlzLnNob3coKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpfWdldCBtaWRkbGV3YXJlcygpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuZmxpcCYmZS5wdXNoKGZsaXAoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuZmxpcDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0JiZlLnB1c2goc2hpZnQoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdD90aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0JiZlLnB1c2gob2Zmc2V0KCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0P3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXJyb3cmJmUucHVzaChhcnJvdyQxKHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXJyb3cpKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemUmJmUucHVzaChzaXplKCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZT90aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemU6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50JiZlLnB1c2goYXV0b1BsYWNlbWVudCgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQ/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaGlkZSYmZS5wdXNoKGhpZGUoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaGlkZTp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZSYmZS5wdXNoKGlubGluZSgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZT90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZTp2b2lkIDApKSxlfWdldCB2aXJ0dWFsRWxlbWVudCgpe3ZhciBlLHQsbjtjb25zdHtzZWxlY3Rpb246cn09dGhpcy5lZGl0b3Iuc3RhdGUsbz1udWxsPT0oZT10aGlzLmdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudCk/dm9pZCAwOmUuY2FsbCh0aGlzKTtpZihvKXJldHVybiBvO2lmKCEobnVsbD09KG49bnVsbD09KHQ9dGhpcy52aWV3KT92b2lkIDA6dC5kb20pP3ZvaWQgMDpuLnBhcmVudE5vZGUpKXJldHVybjtjb25zdCBpPXBvc1RvRE9NUmVjdCh0aGlzLnZpZXcsci5mcm9tLHIudG8pO2xldCBzPXtnZXRCb3VuZGluZ0NsaWVudFJlY3Q6KCk9PmksZ2V0Q2xpZW50UmVjdHM6KCk9PltpXX07aWYociBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pe2xldCBlPXRoaXMudmlldy5ub2RlRE9NKHIuZnJvbSk7Y29uc3QgdD1lLmRhdGFzZXQubm9kZVZpZXdXcmFwcGVyP2U6ZS5xdWVyeVNlbGVjdG9yKCJbZGF0YS1ub2RlLXZpZXctd3JhcHBlcl0iKTt0JiYoZT10KSxlJiYocz17Z2V0Qm91bmRpbmdDbGllbnRSZWN0OigpPT5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGdldENsaWVudFJlY3RzOigpPT5bZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKV19KX1pZihyIGluc3RhbmNlb2YgSXMpe2NvbnN0eyRhbmNob3JDZWxsOmUsJGhlYWRDZWxsOnR9PXIsbj1lP2UucG9zOnQucG9zLG89dD90LnBvczplLnBvcyxpPXRoaXMudmlldy5ub2RlRE9NKG4pLGw9dGhpcy52aWV3Lm5vZGVET00obyk7aWYoIWl8fCFsKXJldHVybjtjb25zdCBhPWk9PT1sP2kuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6ZnVuY3Rpb24oZSx0KXtjb25zdCBuPU1hdGgubWluKGUudG9wLHQudG9wKSxyPU1hdGgubWF4KGUuYm90dG9tLHQuYm90dG9tKSxvPU1hdGgubWluKGUubGVmdCx0LmxlZnQpLGk9TWF0aC5tYXgoZS5yaWdodCx0LnJpZ2h0KTtyZXR1cm4gbmV3IERPTVJlY3QobyxuLGktbyxyLW4pfShpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3M9e2dldEJvdW5kaW5nQ2xpZW50UmVjdDooKT0+YSxnZXRDbGllbnRSZWN0czooKT0+W2FdfX1yZXR1cm4gc311cGRhdGVQb3NpdGlvbigpe2lmKCF0aGlzLmlzVmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLnZpcnR1YWxFbGVtZW50O2UmJmNvbXB1dGVQb3NpdGlvbihlLHRoaXMuZWxlbWVudCx7cGxhY2VtZW50OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMucGxhY2VtZW50LHN0cmF0ZWd5OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc3RyYXRlZ3ksbWlkZGxld2FyZTp0aGlzLm1pZGRsZXdhcmVzfSkudGhlbigoe3g6ZSx5OnQsc3RyYXRlZ3k6bixtaWRkbGV3YXJlRGF0YTpyfSk9Pnt2YXIgbyxpO3RoaXMuaXNWaXNpYmxlJiYhdGhpcy5lZGl0b3IuaXNEZXN0cm95ZWQmJnRoaXMuZWxlbWVudC5pc0Nvbm5lY3RlZCYmKChudWxsPT0obz1yLmhpZGUpP3ZvaWQgMDpvLnJlZmVyZW5jZUhpZGRlbil8fChudWxsPT0oaT1yLmhpZGUpP3ZvaWQgMDppLmVzY2FwZWQpP3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iOih0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPSJtYXgtY29udGVudCIsdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uPW4sdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQ9YCR7ZX1weGAsdGhpcy5lbGVtZW50LnN0eWxlLnRvcD1gJHt0fXB4YCx0aGlzLmlzVmlzaWJsZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSgpKSl9KX11cGRhdGUoZSx0KXtjb25zdHtzdGF0ZTpufT1lLHI9bi5zZWxlY3Rpb24uZnJvbSE9PW4uc2VsZWN0aW9uLnRvO2lmKHRoaXMudXBkYXRlRGVsYXk+MCYmcilyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZURlYm91bmNlZFVwZGF0ZShlLHQpO2NvbnN0IG89IShudWxsPT10P3ZvaWQgMDp0LnNlbGVjdGlvbi5lcShlLnN0YXRlLnNlbGVjdGlvbikpLGk9IShudWxsPT10P3ZvaWQgMDp0LmRvYy5lcShlLnN0YXRlLmRvYykpO3RoaXMudXBkYXRlSGFuZGxlcihlLG8saSx0KX1nZXRTaG91bGRTaG93KGUpe3ZhciB0O2NvbnN0e3N0YXRlOm59PXRoaXMudmlldyx7c2VsZWN0aW9uOnJ9PW4se3JhbmdlczpvfT1yLGk9TWF0aC5taW4oLi4uby5tYXAoZT0+ZS4kZnJvbS5wb3MpKSxzPU1hdGgubWF4KC4uLm8ubWFwKGU9PmUuJHRvLnBvcykpO3JldHVybihudWxsPT0odD10aGlzLnNob3VsZFNob3cpP3ZvaWQgMDp0LmNhbGwodGhpcyx7ZWRpdG9yOnRoaXMuZWRpdG9yLGVsZW1lbnQ6dGhpcy5lbGVtZW50LHZpZXc6dGhpcy52aWV3LHN0YXRlOm4sb2xkU3RhdGU6ZSxmcm9tOmksdG86c30pKXx8ITF9c2hvdygpe3ZhciBlO2lmKHRoaXMuaXNWaXNpYmxlKXJldHVybjt0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLm9wYWNpdHk9IjEiO2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuYXBwZW5kVG8/dGhpcy5hcHBlbmRUbygpOnRoaXMuYXBwZW5kVG87bnVsbD09KGU9bnVsbCE9dD90OnRoaXMudmlldy5kb20ucGFyZW50RWxlbWVudCl8fGUuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uU2hvdyYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblNob3coKSx0aGlzLmlzVmlzaWJsZT0hMH1oaWRlKCl7dGhpcy5pc1Zpc2libGUmJih0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLmVsZW1lbnQuc3R5bGUub3BhY2l0eT0iMCIsdGhpcy5lbGVtZW50LnJlbW92ZSgpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25IaWRlJiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uSGlkZSgpLHRoaXMuaXNWaXNpYmxlPSExKX11cGRhdGVPcHRpb25zKGUpe3ZhciB0O2lmKHZvaWQgMCE9PWUudXBkYXRlRGVsYXkmJih0aGlzLnVwZGF0ZURlbGF5PWUudXBkYXRlRGVsYXkpLHZvaWQgMCE9PWUucmVzaXplRGVsYXkmJih0aGlzLnJlc2l6ZURlbGF5PWUucmVzaXplRGVsYXkpLHZvaWQgMCE9PWUuYXBwZW5kVG8mJih0aGlzLmFwcGVuZFRvPWUuYXBwZW5kVG8pLHZvaWQgMCE9PWUuZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50JiYodGhpcy5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ9ZS5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQpLHZvaWQgMCE9PWUuc2hvdWxkU2hvdyYmZS5zaG91bGRTaG93JiYodGhpcy5zaG91bGRTaG93PWUuc2hvdWxkU2hvdyksdm9pZCAwIT09ZS5vcHRpb25zKXtjb25zdCBuPW51bGwhPSh0PWUub3B0aW9ucy5zY3JvbGxUYXJnZXQpP3Q6d2luZG93O24hPT10aGlzLnNjcm9sbFRhcmdldCYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldD1uLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5lLm9wdGlvbnN9fX1kZXN0cm95KCl7dGhpcy5oaWRlKCksdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5tb3VzZWRvd25IYW5kbGVyLHtjYXB0dXJlOiEwfSksdGhpcy52aWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuZHJhZ3N0YXJ0SGFuZGxlciksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJmb2N1cyIsdGhpcy5mb2N1c0hhbmRsZXIpLHRoaXMuZWRpdG9yLm9mZigiYmx1ciIsdGhpcy5ibHVySGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJ0cmFuc2FjdGlvbiIsdGhpcy50cmFuc2FjdGlvbkhhbmRsZXIpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25EZXN0cm95JiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uRGVzdHJveSgpfX0senM9TCh7bmFtZToiQnViYmxlTWVudSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntwbHVnaW5LZXk6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxlZGl0b3I6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSx1cGRhdGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDp2b2lkIDB9LHJlc2l6ZURlbGF5Ont0eXBlOk51bWJlcixkZWZhdWx0OnZvaWQgMH0sb3B0aW9uczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYXBwZW5kVG86e3R5cGU6W09iamVjdCxGdW5jdGlvbl0sZGVmYXVsdDp2b2lkIDB9LHNob3VsZFNob3c6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDp2b2lkIDB9fSxzZXR1cChlLHtzbG90czp0LGF0dHJzOm59KXt2YXIgcjtjb25zdCBvPV8obnVsbCksaT1udWxsIT0ocj1lLnBsdWdpbktleSk/cjpuZXcgUGx1Z2luS2V5KCJidWJibGVNZW51Iik7cmV0dXJuIFAoKCk9Pntjb25zdHtlZGl0b3I6dCxvcHRpb25zOm4scmVzaXplRGVsYXk6cixhcHBlbmRUbzpzLHNob3VsZFNob3c6bCxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6YSx1cGRhdGVEZWxheTpjfT1lLGQ9by52YWx1ZTtkJiYoZC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixkLnJlbW92ZSgpLEYoKCk9Pnt0LnJlZ2lzdGVyUGx1Z2luKChlPT5uZXcgUGx1Z2luKHtrZXk6InN0cmluZyI9PXR5cGVvZiBlLnBsdWdpbktleT9uZXcgUGx1Z2luS2V5KGUucGx1Z2luS2V5KTplLnBsdWdpbktleSx2aWV3OnQ9Pm5ldyBMcyh7dmlldzp0LC4uLmV9KX0pKSh7ZWRpdG9yOnQsZWxlbWVudDpkLG9wdGlvbnM6bixwbHVnaW5LZXk6aSxyZXNpemVEZWxheTpyLGFwcGVuZFRvOnMsc2hvdWxkU2hvdzpsLGdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudDphLHVwZGF0ZURlbGF5OmN9KSl9KSl9KSwkKCgpPT57Y29uc3R7ZWRpdG9yOnR9PWU7dC51bnJlZ2lzdGVyUGx1Z2luKGkpfSksKCk9Pnt2YXIgZTtyZXR1cm4geigiZGl2Iix7cmVmOm8sLi4ubn0sbnVsbD09KGU9dC5kZWZhdWx0KT92b2lkIDA6ZS5jYWxsKHQpKX19fSksQnM9Y2xhc3N7Y29uc3RydWN0b3Ioe2VkaXRvcjplLGVsZW1lbnQ6dCx2aWV3Om4scGx1Z2luS2V5OnI9ImZsb2F0aW5nTWVudSIsdXBkYXRlRGVsYXk6bz0yNTAscmVzaXplRGVsYXk6aT02MCxvcHRpb25zOnMsYXBwZW5kVG86bCxzaG91bGRTaG93OmF9KXt2YXIgYzt0aGlzLnByZXZlbnRIaWRlPSExLHRoaXMuaXNWaXNpYmxlPSExLHRoaXMuc2Nyb2xsVGFyZ2V0PXdpbmRvdyx0aGlzLnNob3VsZFNob3c9KHt2aWV3OmUsc3RhdGU6dH0pPT57Y29uc3R7c2VsZWN0aW9uOm59PXQseyRhbmNob3I6cixlbXB0eTpvfT1uLGk9MT09PXIuZGVwdGgscz1yLnBhcmVudC5pc1RleHRibG9jayYmIXIucGFyZW50LnR5cGUuc3BlYy5jb2RlJiYhci5wYXJlbnQudGV4dENvbnRlbnQmJjA9PT1yLnBhcmVudC5jaGlsZENvdW50JiYhdGhpcy5nZXRUZXh0Q29udGVudChyLnBhcmVudCk7cmV0dXJuISEoZS5oYXNGb2N1cygpJiZvJiZpJiZzJiZ0aGlzLmVkaXRvci5pc0VkaXRhYmxlKX0sdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17c3RyYXRlZ3k6ImFic29sdXRlIixwbGFjZW1lbnQ6InJpZ2h0IixvZmZzZXQ6OCxmbGlwOnt9LHNoaWZ0Ont9LGFycm93OiExLHNpemU6ITEsYXV0b1BsYWNlbWVudDohMSxoaWRlOiExLGlubGluZTohMX0sdGhpcy51cGRhdGVIYW5kbGVyPShlLHQsbixyKT0+e2NvbnN0e2NvbXBvc2luZzpvfT1lO2lmKG98fCF0JiYhbilyZXR1cm47dGhpcy5nZXRTaG91bGRTaG93KHIpPyh0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5zaG93KCkpOnRoaXMuaGlkZSgpfSx0aGlzLm1vdXNlZG93bkhhbmRsZXI9KCk9Pnt0aGlzLnByZXZlbnRIaWRlPSEwfSx0aGlzLmZvY3VzSGFuZGxlcj0oKT0+e3NldFRpbWVvdXQoKCk9PnRoaXMudXBkYXRlKHRoaXMuZWRpdG9yLnZpZXcpKX0sdGhpcy5ibHVySGFuZGxlcj0oe2V2ZW50OmV9KT0+e3ZhciB0O3RoaXMucHJldmVudEhpZGU/dGhpcy5wcmV2ZW50SGlkZT0hMToobnVsbD09ZT92b2lkIDA6ZS5yZWxhdGVkVGFyZ2V0KSYmKG51bGw9PSh0PXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKT92b2lkIDA6dC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpKXx8KG51bGw9PWU/dm9pZCAwOmUucmVsYXRlZFRhcmdldCkhPT10aGlzLmVkaXRvci52aWV3LmRvbSYmdGhpcy5oaWRlKCl9LHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyPSh7dHJhbnNhY3Rpb246ZX0pPT57Y29uc3QgdD1lLmdldE1ldGEodGhpcy5wbHVnaW5LZXkpOyJ1cGRhdGVQb3NpdGlvbiI9PT10P3RoaXMudXBkYXRlUG9zaXRpb24oKTp0JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJ1cGRhdGVPcHRpb25zIj09PXQudHlwZT90aGlzLnVwZGF0ZU9wdGlvbnModC5vcHRpb25zKToiaGlkZSI9PT10P3RoaXMuaGlkZSgpOiJzaG93Ij09PXQmJih0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5zaG93KCkpfSx0aGlzLnJlc2l6ZUhhbmRsZXI9KCk9Pnt0aGlzLnJlc2l6ZURlYm91bmNlVGltZXImJmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZURlYm91bmNlVGltZXIpLHRoaXMucmVzaXplRGVib3VuY2VUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMudXBkYXRlUG9zaXRpb24oKX0sdGhpcy5yZXNpemVEZWxheSl9LHRoaXMuZWRpdG9yPWUsdGhpcy5lbGVtZW50PXQsdGhpcy52aWV3PW4sdGhpcy5wbHVnaW5LZXk9cix0aGlzLnVwZGF0ZURlbGF5PW8sdGhpcy5yZXNpemVEZWxheT1pLHRoaXMuYXBwZW5kVG89bCx0aGlzLnNjcm9sbFRhcmdldD1udWxsIT0oYz1udWxsPT1zP3ZvaWQgMDpzLnNjcm9sbFRhcmdldCk/Yzp3aW5kb3csdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5zfSx0aGlzLmVsZW1lbnQudGFiSW5kZXg9MCxhJiYodGhpcy5zaG91bGRTaG93PWEpLHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMubW91c2Vkb3duSGFuZGxlcix7Y2FwdHVyZTohMH0pLHRoaXMuZWRpdG9yLm9uKCJmb2N1cyIsdGhpcy5mb2N1c0hhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vbigidHJhbnNhY3Rpb24iLHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnVwZGF0ZShuLG4uc3RhdGUpLHRoaXMuZ2V0U2hvdWxkU2hvdygpJiYodGhpcy5zaG93KCksdGhpcy51cGRhdGVQb3NpdGlvbigpKX1nZXRUZXh0Q29udGVudChlKXtyZXR1cm4gZ2V0VGV4dChlLHt0ZXh0U2VyaWFsaXplcnM6Z2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYSh0aGlzLmVkaXRvci5zY2hlbWEpfSl9Z2V0IG1pZGRsZXdhcmVzKCl7Y29uc3QgZT1bXTtyZXR1cm4gdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwJiZlLnB1c2goZmxpcCgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXA/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQmJmUucHVzaChzaGlmdCgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0P3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQmJmUucHVzaChvZmZzZXQoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQ/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hcnJvdyYmZS5wdXNoKGFycm93JDEodGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hcnJvdykpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZSYmZS5wdXNoKHNpemUoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaXplP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZTp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQmJmUucHVzaChhdXRvUGxhY2VtZW50KCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXV0b1BsYWNlbWVudD90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlJiZlLnB1c2goaGlkZSgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGU/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lJiZlLnB1c2goaW5saW5lKCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lOnZvaWQgMCkpLGV9Z2V0U2hvdWxkU2hvdyhlKXt2YXIgdDtjb25zdHtzdGF0ZTpufT10aGlzLnZpZXcse3NlbGVjdGlvbjpyfT1uLHtyYW5nZXM6b309cixpPU1hdGgubWluKC4uLm8ubWFwKGU9PmUuJGZyb20ucG9zKSkscz1NYXRoLm1heCguLi5vLm1hcChlPT5lLiR0by5wb3MpKTtyZXR1cm4gbnVsbD09KHQ9dGhpcy5zaG91bGRTaG93KT92b2lkIDA6dC5jYWxsKHRoaXMse2VkaXRvcjp0aGlzLmVkaXRvcix2aWV3OnRoaXMudmlldyxzdGF0ZTpuLG9sZFN0YXRlOmUsZnJvbTppLHRvOnN9KX11cGRhdGVPcHRpb25zKGUpe3ZhciB0O2lmKHZvaWQgMCE9PWUudXBkYXRlRGVsYXkmJih0aGlzLnVwZGF0ZURlbGF5PWUudXBkYXRlRGVsYXkpLHZvaWQgMCE9PWUucmVzaXplRGVsYXkmJih0aGlzLnJlc2l6ZURlbGF5PWUucmVzaXplRGVsYXkpLHZvaWQgMCE9PWUuYXBwZW5kVG8mJih0aGlzLmFwcGVuZFRvPWUuYXBwZW5kVG8pLHZvaWQgMCE9PWUuc2hvdWxkU2hvdyYmZS5zaG91bGRTaG93JiYodGhpcy5zaG91bGRTaG93PWUuc2hvdWxkU2hvdyksdm9pZCAwIT09ZS5vcHRpb25zKXtjb25zdCBuPW51bGwhPSh0PWUub3B0aW9ucy5zY3JvbGxUYXJnZXQpP3Q6d2luZG93O24hPT10aGlzLnNjcm9sbFRhcmdldCYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldD1uLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5lLm9wdGlvbnN9fX11cGRhdGVQb3NpdGlvbigpe2NvbnN0e3NlbGVjdGlvbjplfT10aGlzLmVkaXRvci5zdGF0ZSx0PXBvc1RvRE9NUmVjdCh0aGlzLnZpZXcsZS5mcm9tLGUudG8pO2NvbXB1dGVQb3NpdGlvbih7Z2V0Qm91bmRpbmdDbGllbnRSZWN0OigpPT50LGdldENsaWVudFJlY3RzOigpPT5bdF19LHRoaXMuZWxlbWVudCx7cGxhY2VtZW50OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMucGxhY2VtZW50LHN0cmF0ZWd5OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc3RyYXRlZ3ksbWlkZGxld2FyZTp0aGlzLm1pZGRsZXdhcmVzfSkudGhlbigoe3g6ZSx5OnQsc3RyYXRlZ3k6bixtaWRkbGV3YXJlRGF0YTpyfSk9Pnt2YXIgbyxpOyhudWxsPT0obz1yLmhpZGUpP3ZvaWQgMDpvLnJlZmVyZW5jZUhpZGRlbil8fChudWxsPT0oaT1yLmhpZGUpP3ZvaWQgMDppLmVzY2FwZWQpP3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iOih0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPSJtYXgtY29udGVudCIsdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uPW4sdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQ9YCR7ZX1weGAsdGhpcy5lbGVtZW50LnN0eWxlLnRvcD1gJHt0fXB4YCx0aGlzLmlzVmlzaWJsZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSgpKX0pfXVwZGF0ZShlLHQpe2NvbnN0IG49IShudWxsPT10P3ZvaWQgMDp0LnNlbGVjdGlvbi5lcShlLnN0YXRlLnNlbGVjdGlvbikpLHI9IShudWxsPT10P3ZvaWQgMDp0LmRvYy5lcShlLnN0YXRlLmRvYykpO3RoaXMudXBkYXRlSGFuZGxlcihlLG4scix0KX1zaG93KCl7dmFyIGU7aWYodGhpcy5pc1Zpc2libGUpcmV0dXJuO3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLmVsZW1lbnQuc3R5bGUub3BhY2l0eT0iMSI7Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5hcHBlbmRUbz90aGlzLmFwcGVuZFRvKCk6dGhpcy5hcHBlbmRUbztudWxsPT0oZT1udWxsIT10P3Q6dGhpcy52aWV3LmRvbS5wYXJlbnRFbGVtZW50KXx8ZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25TaG93JiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uU2hvdygpLHRoaXMuaXNWaXNpYmxlPSEwfWhpZGUoKXt0aGlzLmlzVmlzaWJsZSYmKHRoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuZWxlbWVudC5zdHlsZS5vcGFjaXR5PSIwIix0aGlzLmVsZW1lbnQucmVtb3ZlKCksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkhpZGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25IaWRlKCksdGhpcy5pc1Zpc2libGU9ITEpfWRlc3Ryb3koKXt0aGlzLmhpZGUoKSx0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm1vdXNlZG93bkhhbmRsZXIse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoInRyYW5zYWN0aW9uIix0aGlzLnRyYW5zYWN0aW9uSGFuZGxlciksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkRlc3Ryb3kmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25EZXN0cm95KCl9fSxGcz1MKHtuYW1lOiJGbG9hdGluZ01lbnUiLGluaGVyaXRBdHRyczohMSxwcm9wczp7cGx1Z2luS2V5Ont0eXBlOm51bGwsZGVmYXVsdDp2b2lkIDB9LGVkaXRvcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LHVwZGF0ZURlbGF5Ont0eXBlOk51bWJlcixkZWZhdWx0OnZvaWQgMH0scmVzaXplRGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6dm9pZCAwfSxvcHRpb25zOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxhcHBlbmRUbzp7dHlwZTpbT2JqZWN0LEZ1bmN0aW9uXSxkZWZhdWx0OnZvaWQgMH0sc2hvdWxkU2hvdzp7dHlwZTpGdW5jdGlvbixkZWZhdWx0Om51bGx9fSxzZXR1cChlLHtzbG90czp0LGF0dHJzOm59KXt2YXIgcjtjb25zdCBvPV8obnVsbCksaT1udWxsIT0ocj1lLnBsdWdpbktleSk/cjpuZXcgUGx1Z2luS2V5KCJmbG9hdGluZ01lbnUiKTtyZXR1cm4gUCgoKT0+e2NvbnN0e2VkaXRvcjp0LHVwZGF0ZURlbGF5Om4scmVzaXplRGVsYXk6cixvcHRpb25zOnMsYXBwZW5kVG86bCxzaG91bGRTaG93OmF9PWUsYz1vLnZhbHVlO2MmJihjLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsYy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGMucmVtb3ZlKCksdC5yZWdpc3RlclBsdWdpbigoZT0+bmV3IFBsdWdpbih7a2V5OiJzdHJpbmciPT10eXBlb2YgZS5wbHVnaW5LZXk/bmV3IFBsdWdpbktleShlLnBsdWdpbktleSk6ZS5wbHVnaW5LZXksdmlldzp0PT5uZXcgQnMoe3ZpZXc6dCwuLi5lfSl9KSkoe3BsdWdpbktleTppLGVkaXRvcjp0LGVsZW1lbnQ6Yyx1cGRhdGVEZWxheTpuLHJlc2l6ZURlbGF5OnIsb3B0aW9uczpzLGFwcGVuZFRvOmwsc2hvdWxkU2hvdzphfSkpKX0pLCQoKCk9Pntjb25zdHtlZGl0b3I6dH09ZTt0LnVucmVnaXN0ZXJQbHVnaW4oaSl9KSwoKT0+e3ZhciBlO3JldHVybiB6KCJkaXYiLHtyZWY6bywuLi5ufSxudWxsPT0oZT10LmRlZmF1bHQpP3ZvaWQgMDplLmNhbGwodCkpfX19KTtmdW5jdGlvbiBpc05vZGVUeXBlU2VsZWN0ZWQoZSx0KXtpZighZSlyZXR1cm4hMTtjb25zdHtzZWxlY3Rpb246bn09ZS5zdGF0ZSx7JGZyb206cix0bzpvfT1uO3JldHVybiB0LnNvbWUodD0+ZS5zdGF0ZS5kb2Mubm9kZXNCZXR3ZWVuKHIucG9zLG8sZT0+ZS50eXBlLm5hbWU9PT10KSl9ZnVuY3Rpb24gaXNFeHRlbnNpb25BdmFpbGFibGUoZSx0KXtyZXR1cm4hIWUmJmUuZXh0ZW5zaW9uTWFuYWdlci5leHRlbnNpb25zLnNvbWUoZT0+ZS5uYW1lPT09dCl9ZnVuY3Rpb24gY3JlYXRlVG9nZ2xlSGFuZGxlcihlKXtjb25zdCB0PWB0b2dnbGUke2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtlLnNsaWNlKDEpfWA7cmV0dXJue2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKVt0XSgpLGV4ZWN1dGU6ZT0+ZS5jaGFpbigpLmZvY3VzKClbdF0oKSxpc0FjdGl2ZTp0PT50LmlzQWN0aXZlKGUpLGlzRGlzYWJsZWQ6ZT0+aXNOb2RlVHlwZVNlbGVjdGVkKGUsWyJpbWFnZSJdKXx8ZS5pc0FjdGl2ZSgiY29kZSIpfX1mdW5jdGlvbiBjcmVhdGVTZXRIYW5kbGVyKGUpe2NvbnN0IHQ9YHNldCR7ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke2Uuc2xpY2UoMSl9YDtyZXR1cm57Y2FuRXhlY3V0ZTplPT5lLmNhbigpW3RdKCksZXhlY3V0ZTplPT5lLmNoYWluKCkuZm9jdXMoKVt0XSgpLGlzQWN0aXZlOnQ9PnQuaXNBY3RpdmUoZSksaXNEaXNhYmxlZDplPT5pc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pfHxlLmlzQWN0aXZlKCJjb2RlIil9fWZ1bmN0aW9uIGNyZWF0ZVNpbXBsZUhhbmRsZXIoZSl7cmV0dXJue2NhbkV4ZWN1dGU6dD0+dC5jYW4oKVtlXSgpLGV4ZWN1dGU6dD0+dC5jaGFpbigpW2VdKCksaXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBjcmVhdGVMaXN0SGFuZGxlcihlKXtjb25zdCB0PXtidWxsZXRMaXN0OiJ0b2dnbGVCdWxsZXRMaXN0IixvcmRlcmVkTGlzdDoidG9nZ2xlT3JkZXJlZExpc3QiLHRhc2tMaXN0OiJ0b2dnbGVUYXNrTGlzdCJ9W2VdLG49InRhc2tMaXN0Ij09PWU/InRhc2tJdGVtIjoibGlzdEl0ZW0iLHI9WyJidWxsZXRMaXN0Iiwib3JkZXJlZExpc3QiLCJ0YXNrTGlzdCJdO3JldHVybntjYW5FeGVjdXRlOmU9PmUuY2FuKClbdF0oKXx8ZS5pc0FjdGl2ZSgibGlzdEl0ZW0iKXx8ci5zb21lKHQ9PmlzRXh0ZW5zaW9uQXZhaWxhYmxlKGUsdCkmJmUuaXNBY3RpdmUodCkpLGV4ZWN1dGU6bz0+e2NvbnN0e3N0YXRlOml9PW8se3NlbGVjdGlvbjpzfT1pO2xldCBsPW8uY2hhaW4oKS5mb2N1cygpO2lmKHMubm9kZSl7Y29uc3QgZT1zLm5vZGUsdD1lLmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQsbj1lLmxhc3RDaGlsZD8ubGFzdENoaWxkLHI9dD9zLmZyb20rdC5ub2RlU2l6ZTpzLmZyb20rMSxvPW4/cy50by1uLm5vZGVTaXplOnMudG8tMTtsPWwuc2V0VGV4dFNlbGVjdGlvbih7ZnJvbTpyLHRvOm99KS5jbGVhck5vZGVzKCl9aWYoby5pc0FjdGl2ZShlKSl7bGV0IGU9bC5saWZ0TGlzdEl0ZW0obik7Zm9yKGNvbnN0IHQgb2Ygcilpc0V4dGVuc2lvbkF2YWlsYWJsZShvLHQpJiYoZT1lLmxpZnQodCkpO3JldHVybiBlLnNlbGVjdFRleHRibG9ja0VuZCgpfWlmKHIuc29tZShlPT5pc0V4dGVuc2lvbkF2YWlsYWJsZShvLGUpJiZvLmlzQWN0aXZlKGUpKSl7Y29uc3QgZT1vLmlzQWN0aXZlKCJ0YXNrTGlzdCIpPyJ0YXNrSXRlbSI6Imxpc3RJdGVtIjtsZXQgbj1sLmxpZnRMaXN0SXRlbShlKTtmb3IoY29uc3QgZSBvZiByKWlzRXh0ZW5zaW9uQXZhaWxhYmxlKG8sZSkmJihuPW4ubGlmdChlKSk7cmV0dXJuIG5bdF0oKS5zZWxlY3RUZXh0YmxvY2tFbmQoKX1yZXR1cm4gbFt0XSgpLnNlbGVjdFRleHRibG9ja0VuZCgpfSxpc0FjdGl2ZTp0PT50LmlzQWN0aXZlKGUpLGlzRGlzYWJsZWQ6dD0+IWlzRXh0ZW5zaW9uQXZhaWxhYmxlKHQsZSl8fChpc05vZGVUeXBlU2VsZWN0ZWQodCxbImltYWdlIl0pfHx0LmlzQWN0aXZlKCJjb2RlIikpfX1mdW5jdGlvbiBjcmVhdGVNb3ZlSGFuZGxlcihlKXtyZXR1cm57Y2FuRXhlY3V0ZToodCxuKT0+e2lmKG51bGw9PW4/LnBvcylyZXR1cm4hMTtpZighdC5zdGF0ZS5kb2Mubm9kZUF0KG4ucG9zKSlyZXR1cm4hMTtjb25zdCByPXQuc3RhdGUuZG9jLnJlc29sdmUobi5wb3MpLG89ci5wYXJlbnQsaT1yLmluZGV4KCk7cmV0dXJuInVwIj09PWU/aT4wOmk8by5jaGlsZENvdW50LTF9LGV4ZWN1dGU6KHQsbik9PntpZihudWxsPT1uPy5wb3MpcmV0dXJuIHQuY2hhaW4oKTtjb25zdCByPXQuc3RhdGUuZG9jLm5vZGVBdChuLnBvcyk7aWYoIXIpcmV0dXJuIHQuY2hhaW4oKTtjb25zdCBvPXQuc3RhdGUuZG9jLnJlc29sdmUobi5wb3MpLGk9by5wYXJlbnQscz1vLmluZGV4KCk7aWYoInVwIj09PWUmJnM+MCl7Y29uc3QgZT1pLmNoaWxkKHMtMSksbz1uLnBvcy1lLm5vZGVTaXplO3JldHVybiB0LmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTpuLnBvcyx0bzpuLnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KG8sci50b0pTT04oKSl9aWYoImRvd24iPT09ZSYmczxpLmNoaWxkQ291bnQtMSl7Y29uc3QgZT1pLmNoaWxkKHMrMSksbz1uLnBvcytlLm5vZGVTaXplO3JldHVybiB0LmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTpuLnBvcyx0bzpuLnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KG8sci50b0pTT04oKSl9cmV0dXJuIHQuY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBjcmVhdGVIYW5kbGVycygpe3JldHVybnttYXJrOntjYW5FeGVjdXRlOihlLHQpPT5lLmNhbigpLnRvZ2dsZU1hcmsodC5tYXJrKSxleGVjdXRlOihlLHQpPT5lLmNoYWluKCkuZm9jdXMoKS50b2dnbGVNYXJrKHQubWFyayksaXNBY3RpdmU6KGUsdCk9PmUuaXNBY3RpdmUodC5tYXJrKSxpc0Rpc2FibGVkOihlLHQpPT4hZnVuY3Rpb24oZSx0KXtpZighdD8uc2NoZW1hKXJldHVybiExO2NvbnN0IG49InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5uYW1lO3JldHVybiB2b2lkIDAhPT10LnNjaGVtYS5zcGVjLm1hcmtzLmdldChuKX0odC5tYXJrLGUpfHxpc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pfSx0ZXh0QWxpZ246e2NhbkV4ZWN1dGU6KGUsdCk9PmUuY2FuKCkuc2V0VGV4dEFsaWduKHQuYWxpZ24pLGV4ZWN1dGU6KGUsdCk9PmUuY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbih0LmFsaWduKSxpc0FjdGl2ZTooZSx0KT0+ZS5pc0FjdGl2ZSh7dGV4dEFsaWduOnQuYWxpZ259KSxpc0Rpc2FibGVkOmU9PiFpc0V4dGVuc2lvbkF2YWlsYWJsZShlLCJ0ZXh0QWxpZ24iKXx8aXNOb2RlVHlwZVNlbGVjdGVkKGUsWyJpbWFnZSIsImhvcml6b250YWxSdWxlIl0pfSxoZWFkaW5nOntjYW5FeGVjdXRlOihlLHQpPT5lLmNhbigpLnRvZ2dsZUhlYWRpbmcoe2xldmVsOnQubGV2ZWx9KSxleGVjdXRlOihlLHQpPT5lLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDp0LmxldmVsfSksaXNBY3RpdmU6KGUsdCk9PmUuaXNBY3RpdmUoImhlYWRpbmciLHtsZXZlbDp0LmxldmVsfSksaXNEaXNhYmxlZDplPT5pc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pfHxlLmlzQWN0aXZlKCJjb2RlIil9LGxpbms6e2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKS5zZXRMaW5rKHtocmVmOiIifSl8fGUuY2FuKCkudW5zZXRMaW5rKCksZXhlY3V0ZTooZSx0KT0+e2NvbnN0IG49ZS5jaGFpbigpLHI9ZS5nZXRBdHRyaWJ1dGVzKCJsaW5rIikuaHJlZixvPWUuaXNBY3RpdmUoImNvZGUiKTtpZihyKXJldHVybiBuLmZvY3VzKCkudW5zZXRMaW5rKCk7Y29uc3QgaT10Py5ocmVmfHxwcm9tcHQoIkVudGVyIHRoZSBVUkw6Iik7cmV0dXJuIGk/bz9uLmZvY3VzKCkuZXh0ZW5kTWFya1JhbmdlKCJjb2RlIikuc2V0TGluayh7aHJlZjppfSk6bi5mb2N1cygpLnNldExpbmsoe2hyZWY6aX0pOm59LGlzQWN0aXZlOmU9PmUuaXNBY3RpdmUoImxpbmsiKSxpc0Rpc2FibGVkOmU9PntpZighaXNFeHRlbnNpb25BdmFpbGFibGUoZSwibGluayIpfHxpc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pKXJldHVybiEwO2NvbnN0e3NlbGVjdGlvbjp0fT1lLnN0YXRlO3JldHVybiB0LmVtcHR5JiYhZS5pc0FjdGl2ZSgibGluayIpfX0saW1hZ2U6e2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKS5zZXRJbWFnZSh7c3JjOiIifSksZXhlY3V0ZTooZSx0KT0+e2NvbnN0IG49ZS5jaGFpbigpLmZvY3VzKCk7aWYodD8uc3JjKXJldHVybiBuLnNldEltYWdlKHtzcmM6dC5zcmN9KTtjb25zdCByPXByb21wdCgiRW50ZXIgdGhlIGltYWdlIFVSTDoiKTtyZXR1cm4gcj9uLnNldEltYWdlKHtzcmM6cn0pOm59LGlzQWN0aXZlOmU9PmUuaXNBY3RpdmUoImltYWdlIiksaXNEaXNhYmxlZDplPT4haXNFeHRlbnNpb25BdmFpbGFibGUoZSwiaW1hZ2UiKX0sYmxvY2txdW90ZTpjcmVhdGVUb2dnbGVIYW5kbGVyKCJibG9ja3F1b3RlIiksYnVsbGV0TGlzdDpjcmVhdGVMaXN0SGFuZGxlcigiYnVsbGV0TGlzdCIpLG9yZGVyZWRMaXN0OmNyZWF0ZUxpc3RIYW5kbGVyKCJvcmRlcmVkTGlzdCIpLHRhc2tMaXN0OmNyZWF0ZUxpc3RIYW5kbGVyKCJ0YXNrTGlzdCIpLGNvZGVCbG9jazpjcmVhdGVUb2dnbGVIYW5kbGVyKCJjb2RlQmxvY2siKSxob3Jpem9udGFsUnVsZTpjcmVhdGVTZXRIYW5kbGVyKCJob3Jpem9udGFsUnVsZSIpLHBhcmFncmFwaDpjcmVhdGVTZXRIYW5kbGVyKCJwYXJhZ3JhcGgiKSx1bmRvOmNyZWF0ZVNpbXBsZUhhbmRsZXIoInVuZG8iKSxyZWRvOmNyZWF0ZVNpbXBsZUhhbmRsZXIoInJlZG8iKSxjbGVhckZvcm1hdHRpbmc6e2NhbkV4ZWN1dGU6KGUsdCk9PntpZihudWxsIT10Py5wb3Mpe3JldHVybiEhZS5zdGF0ZS5kb2Mubm9kZUF0KHQucG9zKX1yZXR1cm4gZS5jYW4oKS5jbGVhck5vZGVzKCl8fGUuY2FuKCkudW5zZXRBbGxNYXJrcygpfSxleGVjdXRlOihlLHQpPT57aWYobnVsbCE9dD8ucG9zKXtjb25zdCBuPWUuc3RhdGUuZG9jLm5vZGVBdCh0LnBvcyk7aWYoIW4pcmV0dXJuIGUuY2hhaW4oKTtjb25zdCByPXQucG9zKzEsbz10LnBvcytuLm5vZGVTaXplLTE7cmV0dXJuIGUuY2hhaW4oKS5mb2N1cygpLnNldFRleHRTZWxlY3Rpb24oe2Zyb206cix0bzpvfSkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX1yZXR1cm4gZS5jaGFpbigpLmZvY3VzKCkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxkdXBsaWNhdGU6e2NhbkV4ZWN1dGU6KGUsdCk9PntpZihudWxsPT10Py5wb3MpcmV0dXJuITE7cmV0dXJuISFlLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpfSxleGVjdXRlOihlLHQpPT57aWYobnVsbD09dD8ucG9zKXJldHVybiBlLmNoYWluKCk7Y29uc3Qgbj1lLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpO3JldHVybiBuP2UuY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnRBdCh0LnBvcytuLm5vZGVTaXplLG4udG9KU09OKCkpOmUuY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxkZWxldGU6e2NhbkV4ZWN1dGU6KGUsdCk9PntpZihudWxsPT10Py5wb3MpcmV0dXJuITE7cmV0dXJuISFlLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpfSxleGVjdXRlOihlLHQpPT57aWYobnVsbD09dD8ucG9zKXJldHVybiBlLmNoYWluKCk7Y29uc3Qgbj1lLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpO3JldHVybiBuP2UuY2hhaW4oKS5mb2N1cygpLmRlbGV0ZVJhbmdlKHtmcm9tOnQucG9zLHRvOnQucG9zK24ubm9kZVNpemV9KTplLmNoYWluKCl9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sbW92ZVVwOmNyZWF0ZU1vdmVIYW5kbGVyKCJ1cCIpLG1vdmVEb3duOmNyZWF0ZU1vdmVIYW5kbGVyKCJkb3duIiksc3VnZ2VzdGlvbjp7Y2FuRXhlY3V0ZTooKT0+ITAsZXhlY3V0ZTooZSx0KT0+e2NvbnN0e3N0YXRlOm59PWUse3NlbGVjdGlvbjpyfT1uLHskZnJvbTpvfT1yO2lmKHZvaWQgMCE9PXQ/LnBvcyl7Y29uc3Qgcj1uLmRvYy5ub2RlQXQodC5wb3MpO2lmKHIpe2NvbnN0IG49dC5wb3Mrci5ub2RlU2l6ZTtyZXR1cm4gZS5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0Q29udGVudEF0KG4se3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6Ii8ifV19KX19Y29uc3QgaT1vLm5vZGUoby5kZXB0aCkscz1vLmJlZm9yZShvLmRlcHRoKStpLm5vZGVTaXplO3JldHVybiBlLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQocyx7dHlwZToicGFyYWdyYXBoIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDoiLyJ9XX0pfSxpc0FjdGl2ZTooKT0+ITEsaXNEaXNhYmxlZDp2b2lkIDB9LG1lbnRpb246e2NhbkV4ZWN1dGU6KCk9PiEwLGV4ZWN1dGU6ZT0+e2NvbnN0e3N0YXRlOnR9PWUse3NlbGVjdGlvbjpufT10LHskZnJvbTpyfT1uLG89ci5wYXJlbnQudGV4dEJldHdlZW4oTWF0aC5tYXgoMCxyLnBhcmVudE9mZnNldC0xKSxyLnBhcmVudE9mZnNldCx2b2lkIDAsIiAiKSxpPW8mJiIgIiE9PW87cmV0dXJuIGUuY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnQoaT8iIEAiOiJAIil9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sZW1vamk6e2NhbkV4ZWN1dGU6KCk9PiEwLGV4ZWN1dGU6ZT0+e2NvbnN0e3N0YXRlOnR9PWUse3NlbGVjdGlvbjpufT10LHskZnJvbTpyfT1uLG89ci5wYXJlbnQudGV4dEJldHdlZW4oTWF0aC5tYXgoMCxyLnBhcmVudE9mZnNldC0xKSxyLnBhcmVudE9mZnNldCx2b2lkIDAsIiAiKSxpPW8mJiIgIiE9PW87cmV0dXJuIGUuY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnQoaT8iIDoiOiI6Iil9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH19fWNvbnN0IEhzPXtzbG90czp7cm9vdDoiIixjb250ZW50OiJyZWxhdGl2ZSBzaXplLWZ1bGwgZmxleC0xIixiYXNlOlsidy1mdWxsIG91dGxpbmUtbm9uZSAqOm15LTUgKjpmaXJzdDptdC0wICo6bGFzdDptYi0wIHNtOnB4LTggc2VsZWN0aW9uOmJnLXByaW1hcnkvMjAiLCJbJl9wXTpsZWFkaW5nLTciLCJbJl9hXTp0ZXh0LXByaW1hcnkgWyZfYV06Ym9yZGVyLWIgWyZfYV06Ym9yZGVyLXRyYW5zcGFyZW50IFsmX2FdOmhvdmVyOmJvcmRlci1wcmltYXJ5IFsmX2FdOmZvbnQtbWVkaXVtIiwiWyZfYV06dHJhbnNpdGlvbi1jb2xvcnMiLCJbJl9hPmNvZGVdOmJvcmRlci1kYXNoZWQgWyZfYTpob3Zlcj5jb2RlXTpib3JkZXItcHJpbWFyeSBbJl9hOmhvdmVyPmNvZGVdOnRleHQtcHJpbWFyeSIsIlsmX2E+Y29kZV06dHJhbnNpdGlvbi1jb2xvcnMiLCJbJl8ubWVudGlvbl06dGV4dC1wcmltYXJ5IFsmXy5tZW50aW9uXTpmb250LW1lZGl1bSIsIlsmXzppcyhoMSxoMixoMyxoNCxoNSxoNildOnRleHQtaGlnaGxpZ2h0ZWQgWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KV06Zm9udC1ib2xkIiwiWyZfaDFdOnRleHQtM3hsIiwiWyZfaDJdOnRleHQtMnhsIiwiWyZfaDNdOnRleHQteGwiLCJbJl9oNF06dGV4dC1sZyIsIlsmX2g1XTp0ZXh0LWJhc2UiLCJbJl9oNl06dGV4dC1iYXNlIiwiWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KT5jb2RlXTpib3JkZXItZGFzaGVkIFsmXzppcyhoMSxoMixoMyxoNCxoNSxoNik+Y29kZV06Zm9udC1ib2xkIiwiWyZfaDI+Y29kZV06dGV4dC14bC82IiwiWyZfaDM+Y29kZV06dGV4dC1sZy81IiwiWyZfYmxvY2txdW90ZV06Ym9yZGVyLXMtNCBbJl9ibG9ja3F1b3RlXTpib3JkZXItYWNjZW50ZWQgWyZfYmxvY2txdW90ZV06cHMtNCBbJl9ibG9ja3F1b3RlXTppdGFsaWMiLCJbJl9bZGF0YS10eXBlPWhvcml6b250YWxSdWxlXV06bXktOCBbJl9bZGF0YS10eXBlPWhvcml6b250YWxSdWxlXV06cHktMiIsIlsmX2hyXTpib3JkZXItdCBbJl9ocl06Ym9yZGVyLWRlZmF1bHQiLCJbJl9wcmVdOnRleHQtc20vNiBbJl9wcmVdOmJvcmRlciBbJl9wcmVdOmJvcmRlci1tdXRlZCBbJl9wcmVdOmJnLW11dGVkIFsmX3ByZV06cm91bmRlZC1tZCBbJl9wcmVdOnB4LTQgWyZfcHJlXTpweS0zIFsmX3ByZV06d2hpdGVzcGFjZS1wcmUtd3JhcCBbJl9wcmVdOmJyZWFrLXdvcmRzIFsmX3ByZV06b3ZlcmZsb3cteC1hdXRvIiwiWyZfcHJlX2NvZGVdOnAtMCBbJl9wcmVfY29kZV06dGV4dC1pbmhlcml0IFsmX3ByZV9jb2RlXTpmb250LWluaGVyaXQgWyZfcHJlX2NvZGVdOnJvdW5kZWQtbm9uZSBbJl9wcmVfY29kZV06aW5saW5lIFsmX3ByZV9jb2RlXTpib3JkZXItMCBbJl9wcmVfY29kZV06YmctdHJhbnNwYXJlbnQiLCJbJl9jb2RlXTpweC0xLjUgWyZfY29kZV06cHktMC41IFsmX2NvZGVdOnRleHQtc20gWyZfY29kZV06Zm9udC1tb25vIFsmX2NvZGVdOmZvbnQtbWVkaXVtIFsmX2NvZGVdOnJvdW5kZWQtbWQgWyZfY29kZV06aW5saW5lLWJsb2NrIFsmX2NvZGVdOmJvcmRlciBbJl9jb2RlXTpib3JkZXItbXV0ZWQgWyZfY29kZV06dGV4dC1oaWdobGlnaHRlZCBbJl9jb2RlXTpiZy1tdXRlZCIsIlsmXzppcyh1bCxvbCldOnBzLTYiLCJbJl91bF06bGlzdC1kaXNjIFsmX3VsXTptYXJrZXI6dGV4dC0oLS11aS1ib3JkZXItYWNjZW50ZWQpIiwiWyZfb2xdOmxpc3QtZGVjaW1hbCBbJl9vbF06bWFya2VyOnRleHQtbXV0ZWQiLCJbJl9saV06bXktMS41IFsmX2xpXTpwcy0xLjUiLCJbJl9pbWddOnJvdW5kZWQtbWQgWyZfaW1nXTpibG9jayBbJl9pbWddOm1heC13LWZ1bGwgWyZfaW1nLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZV06b3V0bGluZS0yIFsmX2ltZy5Qcm9zZU1pcnJvci1zZWxlY3RlZG5vZGVdOm91dGxpbmUtcHJpbWFyeSIsIlsmXy5Qcm9zZU1pcnJvci1zZWxlY3RlZG5vZGU6bm90KGltZyk6bm90KHByZSk6bm90KFtkYXRhLW5vZGUtdmlldy13cmFwcGVyXSldOmJnLXByaW1hcnkvMjAiXX0sdmFyaWFudHM6e3BsYWNlaG9sZGVyTW9kZTp7Zmlyc3RMaW5lOntiYXNlOiJbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkXTpiZWZvcmU6Y29udGVudC1bYXR0cihkYXRhLXBsYWNlaG9sZGVyKV0gWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZF06YmVmb3JlOnRleHQtZGltbWVkIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpmbG9hdC1zdGFydCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkXTpiZWZvcmU6aC0wIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpwb2ludGVyLWV2ZW50cy1ub25lIn0sZXZlcnlMaW5lOntiYXNlOiJbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpjb250ZW50LVthdHRyKGRhdGEtcGxhY2Vob2xkZXIpXSBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTp0ZXh0LWRpbW1lZCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpmbG9hdC1zdGFydCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpoLTAgWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVtcHR5XTpiZWZvcmU6cG9pbnRlci1ldmVudHMtbm9uZSJ9fX0sZGVmYXVsdFZhcmlhbnRzOntwbGFjZWhvbGRlck1vZGU6ImV2ZXJ5TGluZSJ9fSxWcz1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVFZGl0b3IiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbnRlbnRUeXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sc3RhcnRlcktpdDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sbWFya2Rvd246e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpbWFnZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG1lbnRpb246e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxoYW5kbGVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGV4dGVuc2lvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGluamVjdENTUzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpbmplY3ROb25jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6W1N0cmluZyxOdW1iZXIsQm9vbGVhbixudWxsXSxyZXF1aXJlZDohMX0sZWRpdGFibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dERpcmVjdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGVkaXRvclByb3BzOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scGFyc2VPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29yZUV4dGVuc2lvbk9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxlbmFibGVJbnB1dFJ1bGVzOnt0eXBlOltBcnJheSxCb29sZWFuXSxyZXF1aXJlZDohMX0sZW5hYmxlUGFzdGVSdWxlczp7dHlwZTpbQXJyYXksQm9vbGVhbl0scmVxdWlyZWQ6ITF9LGVuYWJsZUNvcmVFeHRlbnNpb25zOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGVuYWJsZUNvbnRlbnRDaGVjazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxlbWl0Q29udGVudEVycm9yOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQmVmb3JlQ3JlYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkNyZWF0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25Nb3VudDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25Vbm1vdW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkNvbnRlbnRFcnJvcjp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25VcGRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uU2VsZWN0aW9uVXBkYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblRyYW5zYWN0aW9uOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkZvY3VzOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkJsdXI6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uRGVzdHJveTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25QYXN0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25Ecm9wOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkRlbGV0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sZW5hYmxlRXh0ZW5zaW9uRGlzcGF0Y2hUcmFuc2FjdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKGUse2V4cG9zZTp0LGVtaXQ6bn0pe2NvbnN0IHI9ZSxvPW4saT1wLnVzZUF0dHJzKCksbD12KCksYT14KCJlZGl0b3IiLHIpLGM9cC5jb21wdXRlZCgoKT0+Uyh7ZXh0ZW5kOlMoSHMpLC4uLmwudWk/LmVkaXRvcnx8e319KSh7cGxhY2Vob2xkZXJNb2RlOiJvYmplY3QiPT10eXBlb2Ygci5wbGFjZWhvbGRlcj9yLnBsYWNlaG9sZGVyLm1vZGU6dm9pZCAwfSkpLGQ9QyhBKHIsInN0YXJ0ZXJLaXQiLCJleHRlbnNpb25zIiwiZWRpdG9yUHJvcHMiLCJjb250ZW50VHlwZSIsImNsYXNzIiwicGxhY2Vob2xkZXIiLCJtYXJrZG93biIsImltYWdlIiwibWVudGlvbiIsImhhbmRsZXJzIikpLGY9cC5jb21wdXRlZCgoKT0+cyhyLmVkaXRvclByb3BzLHthdHRyaWJ1dGVzOnthdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsLi4uaSxjbGFzczpjLnZhbHVlLmJhc2Uoe2NsYXNzOmEudmFsdWU/LmJhc2V9KX19KSksbT1wLmNvbXB1dGVkKCgpPT5yLmNvbnRlbnRUeXBlfHwoInN0cmluZyI9PXR5cGVvZiByLm1vZGVsVmFsdWU/Imh0bWwiOiJqc29uIikpLHk9cC5jb21wdXRlZCgoKT0+cyhyLnN0YXJ0ZXJLaXQse2NvZGU6ITEsaG9yaXpvbnRhbFJ1bGU6ITEsZHJvcGN1cnNvcjp7Y29sb3I6InZhcigtLXVpLXByaW1hcnkpIix3aWR0aDoyfSxsaW5rOntvcGVuT25DbGljazohMX19KSksdz1wLmNvbXB1dGVkKCgpPT57Y29uc3QgZT0ic3RyaW5nIj09dHlwZW9mIHIucGxhY2Vob2xkZXI/e3BsYWNlaG9sZGVyOnIucGxhY2Vob2xkZXJ9OnIucGxhY2Vob2xkZXIse21vZGU6dCwuLi5ufT1lfHx7fTtyZXR1cm4gcyhuLHtzaG93T25seVdoZW5FZGl0YWJsZTohMSxzaG93T25seUN1cnJlbnQ6ITB9KX0pLGI9cC5jb21wdXRlZCgoKT0+cyhyLm1hcmtkb3duLHttYXJrZWRPcHRpb25zOntnZm06ITB9fSkpLEU9cC5jb21wdXRlZCgoKT0+ImJvb2xlYW4iPT10eXBlb2Ygci5pbWFnZT97fTpyLmltYWdlKSxOPXAuY29tcHV0ZWQoKCk9PnMoImJvb2xlYW4iPT10eXBlb2Ygci5tZW50aW9uP3t9OnIubWVudGlvbix7SFRNTEF0dHJpYnV0ZXM6e2NsYXNzOiJtZW50aW9uIn0scmVuZGVyVGV4dDooe25vZGU6ZX0pPT5gJHtlLmF0dHJzLm1lbnRpb25TdWdnZXN0aW9uQ2hhcj8/IkAifSR7ZS5hdHRycy5sYWJlbD8/ZS5hdHRycy5pZH1gLHJlbmRlckhUTUw6KHtvcHRpb25zOmUsbm9kZTp0fSk9Plsic3BhbiIsbWVyZ2VBdHRyaWJ1dGVzKHsiZGF0YS10eXBlIjoibWVudGlvbiJ9LGUuSFRNTEF0dHJpYnV0ZXMpLGAke3QuYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyPz8iQCJ9JHt0LmF0dHJzLmxhYmVsPz90LmF0dHJzLmlkfWBdfSkpLFI9cC5jb21wdXRlZCgoKT0+WyJtYXJrZG93biI9PT1tLnZhbHVlJiZxci5jb25maWd1cmUoYi52YWx1ZSkscHMuY29uZmlndXJlKHkudmFsdWUpLGNuLmV4dGVuZCh7ZXhjbHVkZXM6ImNvZGUifSkscG4uZXh0ZW5kKHtyZW5kZXJIVE1MKCl7cmV0dXJuWyJkaXYiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMseyJkYXRhLXR5cGUiOnRoaXMubmFtZX0pLFsiaHIiXV19fSksITEhPT1yLmltYWdlJiZmbi5jb25maWd1cmUoRS52YWx1ZSksITEhPT1yLm1lbnRpb24mJnluLmNvbmZpZ3VyZShOLnZhbHVlKSxyLnBsYWNlaG9sZGVyJiYkbi5jb25maWd1cmUody52YWx1ZSksLi4uci5leHRlbnNpb25zfHxbXV0uZmlsdGVyKGU9PiEhZSkpLEQ9KChlPXt9KT0+e2NvbnN0IHQ9VSgpO3JldHVybiBQKCgpPT57dC52YWx1ZT1uZXcgaHMoZSl9KSwkKCgpPT57dmFyIGUsbixyLG87Y29uc3QgaT1udWxsPT0obj1udWxsPT0oZT10LnZhbHVlKT92b2lkIDA6ZS52aWV3LmRvbSk/dm9pZCAwOm4ucGFyZW50Tm9kZSxzPW51bGw9PWk/dm9pZCAwOmkuY2xvbmVOb2RlKCEwKTtudWxsPT0ocj1udWxsPT1pP3ZvaWQgMDppLnBhcmVudE5vZGUpfHxyLnJlcGxhY2VDaGlsZChzLGkpLG51bGw9PShvPXQudmFsdWUpfHxvLmRlc3Ryb3koKX0pLHR9KSh7Li4uZC52YWx1ZSxjb250ZW50OnIubW9kZWxWYWx1ZSxjb250ZW50VHlwZTptLnZhbHVlLGV4dGVuc2lvbnM6Ui52YWx1ZSxlZGl0b3JQcm9wczpmLnZhbHVlLG9uQ3JlYXRlOih7ZWRpdG9yOmV9KT0+e3IucGxhY2Vob2xkZXImJmUudmlldy5kaXNwYXRjaChlLnN0YXRlLnRyKX0sb25VcGRhdGU6KHtlZGl0b3I6ZX0pPT57bGV0IHQ7dHJ5eyJodG1sIj09PW0udmFsdWU/dD1lLmdldEhUTUwoKToianNvbiI9PT1tLnZhbHVlP3Q9ZS5nZXRKU09OKCk6Im1hcmtkb3duIj09PW0udmFsdWUmJih0PWUuZ2V0TWFya2Rvd24oKSl9Y2F0Y2gobil7dD1lLmdldFRleHQoKX1vKCJ1cGRhdGU6bW9kZWxWYWx1ZSIsdCl9fSk7cC53YXRjaCgoKT0+ci5tb2RlbFZhbHVlLGU9PntpZighRC52YWx1ZXx8bnVsbD09ZSlyZXR1cm47aWYoKCJodG1sIj09PW0udmFsdWU/RC52YWx1ZS5nZXRIVE1MKCk6Impzb24iPT09bS52YWx1ZT9KU09OLnN0cmluZ2lmeShELnZhbHVlLmdldEpTT04oKSk6Im1hcmtkb3duIj09PW0udmFsdWU/RC52YWx1ZS5nZXRNYXJrZG93bigpOkQudmFsdWUuZ2V0VGV4dCgpKSE9PSgianNvbiI9PT1tLnZhbHVlJiYib2JqZWN0Ij09dHlwZW9mIGU/SlNPTi5zdHJpbmdpZnkoZSk6U3RyaW5nKGUpKSl7Y29uc3QgdD1ELnZhbHVlLnN0YXRlLnNlbGVjdGlvbi5mcm9tO0QudmFsdWUuY29tbWFuZHMuc2V0Q29udGVudChlLHtjb250ZW50VHlwZTptLnZhbHVlfSk7dDw9RC52YWx1ZS5zdGF0ZS5kb2MuY29udGVudC5zaXplJiZELnZhbHVlLmNvbW1hbmRzLnNldFRleHRTZWxlY3Rpb24odCl9fSk7Y29uc3QgTD1wLmNvbXB1dGVkKCgpPT4oey4uLmNyZWF0ZUhhbmRsZXJzKCksLi4uci5oYW5kbGVyc30pKTtyZXR1cm4gcC5wcm92aWRlKCJlZGl0b3JIYW5kbGVycyIsTCksdCh7ZWRpdG9yOkR9KSwodCxuLG8saSk9PntuKEsocC51bnJlZihPKSxwLm1lcmdlUHJvcHMoe2FzOmUuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmMudmFsdWUucm9vdCh7Y2xhc3M6W3AudW5yZWYoYSk/LnJvb3Qsci5jbGFzc119KX0saSkse2RlZmF1bHQ6cC53aXRoQ3R4KChlLG4scixvKT0+e2lmKCFuKXJldHVybltwLnVucmVmKEQpPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCx7a2V5OjB9LFtwLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtlZGl0b3I6cC51bnJlZihEKSxoYW5kbGVyczpMLnZhbHVlfSkscC5jcmVhdGVWTm9kZShwLnVucmVmKHVzKSx7cm9sZToicHJlc2VudGF0aW9uIixlZGl0b3I6cC51bnJlZihEKSwiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Yy52YWx1ZS5jb250ZW50KHtjbGFzczpwLnVucmVmKGEpPy5jb250ZW50fSl9LG51bGwsOCxbImVkaXRvciIsImNsYXNzIl0pXSw2NCkpOnAuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07cC51bnJlZihEKT8obigiXHgzYyEtLVstLVx4M2UiKSxaKHQuJHNsb3RzLCJkZWZhdWx0Iix7ZWRpdG9yOnAudW5yZWYoRCksaGFuZGxlcnM6TC52YWx1ZX0sbnVsbCxuLHIsbyksbihLKHAudW5yZWYodXMpLHtyb2xlOiJwcmVzZW50YXRpb24iLGVkaXRvcjpwLnVucmVmKEQpLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpjLnZhbHVlLmNvbnRlbnQoe2NsYXNzOnAudW5yZWYoYSk/LmNvbnRlbnR9KX0sbnVsbCxyLG8pKSxuKCJceDNjIS0tXS0tXHgzZSIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LG8pKX19fSksX3M9VnMuc2V0dXA7VnMuc2V0dXA9KGUsdCk9Pntjb25zdCBuPXAudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9FZGl0b3IudnVlIiksX3M/X3MoZSx0KTp2b2lkIDB9O2NvbnN0IGpzPXtzbG90czp7cm9vdDoiZm9jdXM6b3V0bGluZS1ub25lIixiYXNlOiJmbGV4IGl0ZW1zLXN0cmV0Y2ggZ2FwLTEuNSIsZ3JvdXA6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0wLjUiLHNlcGFyYXRvcjoidy1weCBzZWxmLXN0cmV0Y2ggYmctYm9yZGVyIn0sdmFyaWFudHM6e2xheW91dDp7YnViYmxlOntiYXNlOiJiZy1kZWZhdWx0IGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIHAtMSJ9LGZsb2F0aW5nOntiYXNlOiJiZy1kZWZhdWx0IGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIHAtMSJ9LGZpeGVkOntiYXNlOiIifX19fSxxcz1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVFZGl0b3JUb29sYmFyIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuZXV0cmFsIn0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imdob3N0In0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJwcmltYXJ5In0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNvZnQifSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic20ifSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxlZGl0b3I6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxheW91dDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZml4ZWQifSxwbHVnaW5LZXk6e3R5cGU6W09iamVjdCxTdHJpbmddLHJlcXVpcmVkOiExfSx1cGRhdGVEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHJlc2l6ZURlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2hvdWxkU2hvdzp7dHlwZTpbRnVuY3Rpb24sbnVsbF0scmVxdWlyZWQ6ITF9LGFwcGVuZFRvOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExLHNraXBDaGVjazohMH0sZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPXYoKSxyPXgoImVkaXRvclRvb2xiYXIiLHQpLG89cC5pbmplY3QoImVkaXRvckhhbmRsZXJzIixwLmNvbXB1dGVkKCgpPT5jcmVhdGVIYW5kbGVycygpKSksaT1wLmNvbXB1dGVkKCgpPT4oe2J1YmJsZTp6cyxmbG9hdGluZzpGcyxmaXhlZDoidGVtcGxhdGUifVt0LmxheW91dF0pKSxsPUMoQSh0LCJhcyIsImNvbG9yIiwidmFyaWFudCIsImFjdGl2ZUNvbG9yIiwiYWN0aXZlVmFyaWFudCIsInNpemUiLCJpdGVtcyIsImxheW91dCIsImVkaXRvciIsImNsYXNzIiwidWkiKSksYT1wLmNvbXB1dGVkKCgpPT5zKHQub3B0aW9ucyx7b2Zmc2V0Ojgsc2hpZnQ6e3BhZGRpbmc6OH19KSksYz1wLmNvbXB1dGVkKCgpPT5TKHtleHRlbmQ6UyhqcyksLi4ubi51aT8uZWRpdG9yVG9vbGJhcnx8e319KSh7bGF5b3V0OnQubGF5b3V0fSkpLGQ9cC5jb21wdXRlZCgoKT0+dC5pdGVtcz8ubGVuZ3RoP0UodC5pdGVtcyk/dC5pdGVtczpbdC5pdGVtc106W10pO2Z1bmN0aW9uIGlzQWN0aXZlKGUpe2lmKCF0LmVkaXRvcj8uaXNFZGl0YWJsZSlyZXR1cm4hMTtpZigiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoKXJldHVybiBlLml0ZW1zPy5zb21lKGU9PmlzQWN0aXZlKGUpKXx8ITE7aWYoISgia2luZCJpbiBlKSlyZXR1cm4gZS5hY3RpdmU/PyExO2NvbnN0IG49bz8udmFsdWU/LltlLmtpbmRdO3JldHVybiBuPy5pc0FjdGl2ZSh0LmVkaXRvcixlKXx8ITF9ZnVuY3Rpb24gaXNEaXNhYmxlZChlKXtpZighdC5lZGl0b3I/LmlzRWRpdGFibGUpcmV0dXJuITA7aWYoIml0ZW1zImluIGUmJmUuaXRlbXM/Lmxlbmd0aCl7Y29uc3QgdD0oRShlLml0ZW1zKT9lLml0ZW1zLmZsYXQoKTplLml0ZW1zKS5maWx0ZXIoZT0+InNlcGFyYXRvciIhPT1lLnR5cGUmJiJsYWJlbCIhPT1lLnR5cGUpO3JldHVybiAwPT09dC5sZW5ndGh8fHQuZXZlcnkoZT0+aXNEaXNhYmxlZChlKSl9aWYoISgia2luZCJpbiBlKSlyZXR1cm4gZS5kaXNhYmxlZD8/ITE7Y29uc3Qgbj1vPy52YWx1ZT8uW2Uua2luZF07cmV0dXJuISFuJiYoISFuLmlzRGlzYWJsZWQ/Lih0LmVkaXRvcixlKXx8IW4uY2FuRXhlY3V0ZSh0LmVkaXRvcixlKSl9ZnVuY3Rpb24gb25DbGljayhlLG4pe2lmKCF0LmVkaXRvcj8uaXNFZGl0YWJsZXx8aXNEaXNhYmxlZChuKSlyZXR1cm47aWYoIml0ZW1zImluIG58fCEoImtpbmQiaW4gbikpe2lmKCJvbkNsaWNrImluIG4pZm9yKGNvbnN0IHQgb2YgQXJyYXkuaXNBcnJheShuLm9uQ2xpY2spP24ub25DbGljazpbbi5vbkNsaWNrXSl0Py4oZSk7cmV0dXJufWNvbnN0IHI9bz8udmFsdWU/LltuLmtpbmRdO3ImJnIuZXhlY3V0ZSh0LmVkaXRvcixuKS5ydW4oKX1mdW5jdGlvbiBnZXRCdXR0b25Qcm9wcyhlKXtjb25zdCBuPVIoZSxbImtpbmQiLCJtYXJrIiwiYWxpZ24iLCJsZXZlbCIsImhyZWYiLCJzcmMiLCJwb3MiLCJpdGVtcyIsInNsb3QiLCJjaGVja2VkSWNvbiIsImxvYWRpbmdJY29uIiwiZXh0ZXJuYWxJY29uIiwiY29udGVudCIsImFycm93IiwicG9ydGFsIiwibW9kYWwiLCJ0b29sdGlwIiwib25DbGljayJdKTtpZigiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoKXtjb25zdCB0PWZ1bmN0aW9uKGUpe2lmKCFlLml0ZW1zKXJldHVybjtyZXR1cm4oRShlLml0ZW1zKT9lLml0ZW1zLmZsYXQoKTplLml0ZW1zKS5maW5kKGU9PiJraW5kImluIGUmJmlzQWN0aXZlKGUpKX0oZSk7dD8uaWNvbiYmKG4uaWNvbj10Lmljb24pLHQ/LmxhYmVsJiZ2b2lkIDAhPT1uLmxhYmVsJiYobi5sYWJlbD10LmxhYmVsKX1yZXR1cm4gcyhuLHtjb2xvcjp0LmNvbG9yLGFjdGl2ZUNvbG9yOnQuYWN0aXZlQ29sb3IsYWN0aXZlVmFyaWFudDp0LmFjdGl2ZVZhcmlhbnQsdmFyaWFudDp0LnZhcmlhbnQsc2l6ZTp0LnNpemV9KX1mdW5jdGlvbiBnZXREcm9wZG93blByb3BzKGUpe2NvbnN0IG49TihlLFsic2l6ZSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJjb250ZW50IiwiYXJyb3ciLCJwb3J0YWwiLCJtb2RhbCIsInVpIl0pO3JldHVybiBzKG4se21vZGFsOiExLHNpemU6dC5zaXplfSl9ZnVuY3Rpb24gbWFwRHJvcGRvd25JdGVtKGUpe2NvbnN0IHQ9ImNoaWxkcmVuImluIGUmJkFycmF5LmlzQXJyYXkoZS5jaGlsZHJlbik/ZS5jaGlsZHJlbi5tYXAobWFwRHJvcGRvd25JdGVtKTp2b2lkIDA7aWYoISgia2luZCJpbiBlKSlyZXR1cm4gdD97Li4uZSxjaGlsZHJlbjp0fTplO2NvbnN0IG49ZTtyZXR1cm57Li4ubiwuLi50JiZ7Y2hpbGRyZW46dH0sYWN0aXZlOmlzQWN0aXZlKG4pLGRpc2FibGVkOmlzRGlzYWJsZWQobiksb25TZWxlY3Q6ZT0+b25DbGljayhlLG4pfX1mdW5jdGlvbiBnZXREcm9wZG93bkl0ZW1zKGUpe3JldHVybiBlLml0ZW1zP0UoZS5pdGVtcyk/ZS5pdGVtcy5tYXAoZT0+ZS5tYXAobWFwRHJvcGRvd25JdGVtKSk6W2UuaXRlbXMubWFwKG1hcERyb3Bkb3duSXRlbSldOltdfXJldHVybihuLG8scyxmKT0+e28oSyhwLnVucmVmKE8pLHAubWVyZ2VQcm9wcyh7YXM6aS52YWx1ZX0sInRlbXBsYXRlIiE9PWkudmFsdWU/e2VkaXRvcjplLmVkaXRvcix0YWJpbmRleDotMSxjbGFzczpjLnZhbHVlLnJvb3Qoe2NsYXNzOnAudW5yZWYocik/LnJvb3R9KSwuLi5wLnVucmVmKGwpLG9wdGlvbnM6YS52YWx1ZSwuLi5uLiRhdHRyc306ey4uLm4uJGF0dHJzfSxmKSx7ZGVmYXVsdDpwLndpdGhDdHgoKG8saSxzLGwpPT57aWYoIWkpcmV0dXJuW3AuY3JlYXRlVk5vZGUocC51bnJlZihPKSx7YXM6ZS5hcyxyb2xlOiJ0b29sYmFyIiwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Yy52YWx1ZS5iYXNlKHtjbGFzczpbcC51bnJlZihyKT8uYmFzZSx0LmNsYXNzXX0pfSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PlsocC5vcGVuQmxvY2soITApLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCxudWxsLHAucmVuZGVyTGlzdChkLnZhbHVlLChlLHQpPT4ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHAuRnJhZ21lbnQse2tleTpgZ3JvdXAtJHt0fWB9LFtwLmNyZWF0ZVZOb2RlKCJkaXYiLHtyb2xlOiJncm91cCIsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpjLnZhbHVlLmdyb3VwKHtjbGFzczpwLnVucmVmKHIpPy5ncm91cH0pfSxbKHAub3BlbkJsb2NrKCEwKSxwLmNyZWF0ZUJsb2NrKHAuRnJhZ21lbnQsbnVsbCxwLnJlbmRlckxpc3QoZSwoZSxyKT0+cC5yZW5kZXJTbG90KG4uJHNsb3RzLGUuc2xvdHx8Iml0ZW0iLHtrZXk6YGdyb3VwLSR7dH0tJHtyfWAsaXRlbTplLGluZGV4OnIsaXNBY3RpdmU6aXNBY3RpdmUsaXNEaXNhYmxlZDppc0Rpc2FibGVkLG9uQ2xpY2s6b25DbGlja30sKCk9PlsiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2sobmUscC5tZXJnZVByb3BzKHtrZXk6MCxyZWZfZm9yOiEwfSxnZXREcm9wZG93blByb3BzKGUpLHtpdGVtczpnZXREcm9wZG93bkl0ZW1zKGUpfSkse2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bZS50b29sdGlwPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socmUscC5tZXJnZVByb3BzKHtrZXk6MCxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sey4uLmUudG9vbHRpcHx8e319KSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltwLmNyZWF0ZVZOb2RlKGIscC5tZXJnZVByb3BzKHthY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHtvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSldKSxfOjJ9LDEwNDAsWyJkaXNhYmxlZCJdKSk6KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhiLHAubWVyZ2VQcm9wcyh7a2V5OjEsYWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7b25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pKV0pLF86Mn0sMTA0MCxbIml0ZW1zIl0pKTplLnRvb2x0aXA/KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhyZSxwLm1lcmdlUHJvcHMoe2tleToxLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSx7Li4uZS50b29sdGlwfHx7fX0pLHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse3VpOmUudWksb25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJ1aSIsIm9uQ2xpY2siXSldKSxfOjJ9LDEwNDAsWyJkaXNhYmxlZCJdKSk6KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhiLHAubWVyZ2VQcm9wcyh7a2V5OjIsYWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7dWk6ZS51aSxvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsInVpIiwib25DbGljayJdKSldKSksMTI4KSldLDIpLHQ8ZC52YWx1ZS5sZW5ndGgtMT8ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHAudW5yZWYodGUpLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpjLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6cC51bnJlZihyKT8uc2VwYXJhdG9yfSksb3JpZW50YXRpb246InZlcnRpY2FsIn0sbnVsbCw4LFsiY2xhc3MiXSkpOnAuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKSksMTI4KSldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pXTtpKEsocC51bnJlZihPKSx7YXM6ZS5hcyxyb2xlOiJ0b29sYmFyIiwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Yy52YWx1ZS5iYXNlKHtjbGFzczpbcC51bnJlZihyKT8uYmFzZSx0LmNsYXNzXX0pfSx7ZGVmYXVsdDpwLndpdGhDdHgoKGUsdCxvLGkpPT57aWYoIXQpcmV0dXJuWyhwLm9wZW5CbG9jayghMCkscC5jcmVhdGVCbG9jayhwLkZyYWdtZW50LG51bGwscC5yZW5kZXJMaXN0KGQudmFsdWUsKGUsdCk9PihwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCx7a2V5OmBncm91cC0ke3R9YH0sW3AuY3JlYXRlVk5vZGUoImRpdiIse3JvbGU6Imdyb3VwIiwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOmMudmFsdWUuZ3JvdXAoe2NsYXNzOnAudW5yZWYocik/Lmdyb3VwfSl9LFsocC5vcGVuQmxvY2soITApLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCxudWxsLHAucmVuZGVyTGlzdChlLChlLHIpPT5wLnJlbmRlclNsb3Qobi4kc2xvdHMsZS5zbG90fHwiaXRlbSIse2tleTpgZ3JvdXAtJHt0fS0ke3J9YCxpdGVtOmUsaW5kZXg6cixpc0FjdGl2ZTppc0FjdGl2ZSxpc0Rpc2FibGVkOmlzRGlzYWJsZWQsb25DbGljazpvbkNsaWNrfSwoKT0+WyJpdGVtcyJpbiBlJiZlLml0ZW1zPy5sZW5ndGg/KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhuZSxwLm1lcmdlUHJvcHMoe2tleTowLHJlZl9mb3I6ITB9LGdldERyb3Bkb3duUHJvcHMoZSkse2l0ZW1zOmdldERyb3Bkb3duSXRlbXMoZSl9KSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltlLnRvb2x0aXA/KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhyZSxwLm1lcmdlUHJvcHMoe2tleTowLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSx7Li4uZS50b29sdGlwfHx7fX0pLHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse29uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwib25DbGljayJdKV0pLF86Mn0sMTA0MCxbImRpc2FibGVkIl0pKToocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKGIscC5tZXJnZVByb3BzKHtrZXk6MSxhY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHtvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkpXSksXzoyfSwxMDQwLFsiaXRlbXMiXSkpOmUudG9vbHRpcD8ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHJlLHAubWVyZ2VQcm9wcyh7a2V5OjEsZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LHsuLi5lLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZShiLHAubWVyZ2VQcm9wcyh7YWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7dWk6ZS51aSxvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsInVpIiwib25DbGljayJdKV0pLF86Mn0sMTA0MCxbImRpc2FibGVkIl0pKToocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKGIscC5tZXJnZVByb3BzKHtrZXk6MixhY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHt1aTplLnVpLG9uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwidWkiLCJvbkNsaWNrIl0pKV0pKSwxMjgpKV0sMiksdDxkLnZhbHVlLmxlbmd0aC0xPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socC51bnJlZih0ZSkse2tleTowLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmMudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpwLnVucmVmKHIpPy5zZXBhcmF0b3J9KSxvcmllbnRhdGlvbjoidmVydGljYWwifSxudWxsLDgsWyJjbGFzcyJdKSk6cC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpKSwxMjgpKV07dCgiXHgzYyEtLVstLVx4M2UiKSxZKGQudmFsdWUsKGUscyk9Pnt0KGBceDNjIS0tWy0tXHgzZTxkaXYgcm9sZT0iZ3JvdXAiIGRhdGEtc2xvdD0iZ3JvdXAiIGNsYXNzPSIke2VlKGMudmFsdWUuZ3JvdXAoe2NsYXNzOnAudW5yZWYocik/Lmdyb3VwfSkpfSIke2l9Plx4M2MhLS1bLS1ceDNlYCksWShlLChlLHIpPT57WihuLiRzbG90cyxlLnNsb3R8fCJpdGVtIix7aXRlbTplLGluZGV4OnIsaXNBY3RpdmU6aXNBY3RpdmUsaXNEaXNhYmxlZDppc0Rpc2FibGVkLG9uQ2xpY2s6b25DbGlja30sKCk9PnsiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoP3QoSyhuZSxwLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGdldERyb3Bkb3duUHJvcHMoZSkse2l0ZW1zOmdldERyb3Bkb3duSXRlbXMoZSl9KSx7ZGVmYXVsdDpwLndpdGhDdHgoKHQsbixyLG8pPT57aWYoIW4pcmV0dXJuW2UudG9vbHRpcD8ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHJlLHAubWVyZ2VQcm9wcyh7a2V5OjAsZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LHsuLi5lLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZShiLHAubWVyZ2VQcm9wcyh7YWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7b25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pXSksXzoyfSwxMDQwLFsiZGlzYWJsZWQiXSkpOihwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2soYixwLm1lcmdlUHJvcHMoe2tleToxLGFjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse29uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwib25DbGljayJdKSldO2UudG9vbHRpcD9uKEsocmUscC5tZXJnZVByb3BzKHtkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sey4uLmUudG9vbHRpcHx8e319KSx7ZGVmYXVsdDpwLndpdGhDdHgoKHQsbixyLG8pPT57aWYoIW4pcmV0dXJuW3AuY3JlYXRlVk5vZGUoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse29uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwib25DbGljayJdKV07bihLKGIscC5tZXJnZVByb3BzKHthY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHtvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwscixvKSl9KSxfOjJ9LHIsbykpOm4oSyhiLHAubWVyZ2VQcm9wcyh7YWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7b25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLHIsbykpfSksXzoyfSxvLGkpKTplLnRvb2x0aXA/dChLKHJlLHAubWVyZ2VQcm9wcyh7ZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LHsuLi5lLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6cC53aXRoQ3R4KCh0LG4scixvKT0+e2lmKCFuKXJldHVybltwLmNyZWF0ZVZOb2RlKGIscC5tZXJnZVByb3BzKHthY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHt1aTplLnVpLG9uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwidWkiLCJvbkNsaWNrIl0pXTtuKEsoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse3VpOmUudWksb25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLHIsbykpfSksXzoyfSxvLGkpKTp0KEsoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse3VpOmUudWksb25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLG8saSkpfSx0LG8saSl9KSx0KCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpLHM8ZC52YWx1ZS5sZW5ndGgtMT90KEsocC51bnJlZih0ZSkseyJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmMudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpwLnVucmVmKHIpPy5zZXBhcmF0b3J9KSxvcmllbnRhdGlvbjoidmVydGljYWwifSxudWxsLG8saSkpOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCJceDNjIS0tXS0tXHgzZSIpfSksdCgiXHgzYyEtLV0tLVx4M2UiKX0pLF86M30scyxsKSl9KSxfOjN9LHMpKX19fSksVXM9cXMuc2V0dXA7cXMuc2V0dXA9KGUsdCk9Pntjb25zdCBuPXAudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9FZGl0b3JUb29sYmFyLnZ1ZSIpLFVzP1VzKGUsdCk6dm9pZCAwfTtjb25zdCBXcz1sKHthbGxVc2VyczpkKCkuZGVmYXVsdCghMSksb3JnYW5pemF0aW9uSWRzOmEoYygpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSkscm9sZUlkczphKGMoKS5taW4oMSkpLm1heCgxMDApLmRlZmF1bHQoW10pLGVtYWlsczphKGMoKS50cmltKCkudG9Mb3dlckNhc2UoKS5lbWFpbCgpKS5tYXgoMjAwKS5kZWZhdWx0KFtdKX0pLnJlZmluZShlPT5lLmFsbFVzZXJzfHxlLm9yZ2FuaXphdGlvbklkcy5sZW5ndGg+MHx8ZS5yb2xlSWRzLmxlbmd0aD4wfHxlLmVtYWlscy5sZW5ndGg+MCx7bWVzc2FnZToiU2VsZWN0IGF0IGxlYXN0IG9uZSByZWNpcGllbnQgY3JpdGVyaW9uIn0pLEtzPS88W14+XSo+L2csSnM9LyZuYnNwOy9naSxHcz0vPGltZ1xiL2k7ZnVuY3Rpb24gaHRtbEhhc1RleHQoZSl7cmV0dXJuIGUucmVwbGFjZShLcywiIikucmVwbGFjZShKcywiICIpLnRyaW0oKS5sZW5ndGg+MHx8R3MudGVzdChlKX1sKHtmaWx0ZXI6V3Msc3ViamVjdDpjKCkudHJpbSgpLm1pbigxKS5tYXgoMjAwKS5yZWdleCgvXlteXHJcbl0qJC8sIlN1YmplY3QgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MiKSxib2R5OmMoKS50cmltKCkubWluKDEpLm1heCg1ZTQpLnJlZmluZShodG1sSGFzVGV4dCwiQm9keSBjYW5ub3QgYmUgZW1wdHkiKX0pO2NvbnN0IFhzPXAuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlN5c3RlbUVtYWlsRGlzcGF0Y2giLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHMpe2NvbnN0IGw9L1tccyw7XSsvLGE9e2ZldGNoRGlzcGF0Y2hPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIEQoIi9hcGkvc3lzdGVtL2Rpc3BhdGNoL29wdGlvbnMiKX0scHJldmlld0Rpc3BhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiBEKCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9wcmV2aWV3Iix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX0sc2VuZERpc3BhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiBEKCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9zZW5kIix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX19LGM9bSgpLHtkYXRhOmR9PXkoInN5c3RlbS1kaXNwYXRjaC1vcHRpb25zIiwoKT0+YS5mZXRjaERpc3BhdGNoT3B0aW9ucygpLHtkZWZhdWx0OigpPT4oe29yZ2FuaXphdGlvbnM6W10scm9sZXM6W119KX0pLGY9cC5jb21wdXRlZCgoKT0+KGQudmFsdWU/Lm9yZ2FuaXphdGlvbnM/P1tdKS5tYXAoZT0+KHtsYWJlbDplLmxhYmVsLHZhbHVlOmUuaWR9KSkpLHY9cC5jb21wdXRlZCgoKT0+KGQudmFsdWU/LnJvbGVzPz9bXSkubWFwKGU9Pih7bGFiZWw6ZS5sYWJlbCx2YWx1ZTplLmlkfSkpKSx4PXAucmVmKHthbGxVc2VyczohMSxvcmdhbml6YXRpb25JZHM6W10scm9sZUlkczpbXSxlbWFpbHM6W119KSxTPXAucmVmKCIiKTt3KFMscC50b1JlZih4LnZhbHVlLCJlbWFpbHMiKSx7ZGlyZWN0aW9uOiJsdHIiLHRyYW5zZm9ybTp7bHRyOmU9PmUuc3BsaXQobCkubWFwKGU9PmUudHJpbSgpLnRvTG93ZXJDYXNlKCkpLmZpbHRlcihCb29sZWFuKX19KTtjb25zdCBDPXAucmVmKCIiKSxBPXAucmVmKCIiKSxPPVtbe2tpbmQ6Im1hcmsiLG1hcms6ImJvbGQiLGljb246ImktbHVjaWRlLWJvbGQiLHRvb2x0aXA6e3RleHQ6IkJvbGQifX0se2tpbmQ6Im1hcmsiLG1hcms6Iml0YWxpYyIsaWNvbjoiaS1sdWNpZGUtaXRhbGljIix0b29sdGlwOnt0ZXh0OiJJdGFsaWMifX0se2tpbmQ6Im1hcmsiLG1hcms6InN0cmlrZSIsaWNvbjoiaS1sdWNpZGUtc3RyaWtldGhyb3VnaCIsdG9vbHRpcDp7dGV4dDoiU3RyaWtldGhyb3VnaCJ9fV0sW3traW5kOiJoZWFkaW5nIixsZXZlbDoyLGljb246ImktbHVjaWRlLWhlYWRpbmctMiIsdG9vbHRpcDp7dGV4dDoiSGVhZGluZyJ9fSx7a2luZDoiYnVsbGV0TGlzdCIsaWNvbjoiaS1sdWNpZGUtbGlzdCIsdG9vbHRpcDp7dGV4dDoiQnVsbGV0IGxpc3QifX0se2tpbmQ6Im9yZGVyZWRMaXN0IixpY29uOiJpLWx1Y2lkZS1saXN0LW9yZGVyZWQiLHRvb2x0aXA6e3RleHQ6Ik51bWJlcmVkIGxpc3QifX0se2tpbmQ6ImJsb2NrcXVvdGUiLGljb246ImktbHVjaWRlLXF1b3RlIix0b29sdGlwOnt0ZXh0OiJRdW90ZSJ9fV0sW3traW5kOiJsaW5rIixpY29uOiJpLWx1Y2lkZS1saW5rIix0b29sdGlwOnt0ZXh0OiJMaW5rIn19LHtraW5kOiJ1bmRvIixpY29uOiJpLWx1Y2lkZS11bmRvLTIiLHRvb2x0aXA6e3RleHQ6IlVuZG8ifX0se2tpbmQ6InJlZG8iLGljb246ImktbHVjaWRlLXJlZG8tMiIsdG9vbHRpcDp7dGV4dDoiUmVkbyJ9fV1dLEU9cC5yZWYobnVsbCksTj1wLnJlZihudWxsKSxSPXAucmVmKCExKSxQPXAucmVmKCExKSwkPXAucmVmKCExKSxMPXAuY29tcHV0ZWQoKCk9PngudmFsdWUuYWxsVXNlcnN8fHgudmFsdWUub3JnYW5pemF0aW9uSWRzLmxlbmd0aD4wfHx4LnZhbHVlLnJvbGVJZHMubGVuZ3RoPjB8fHgudmFsdWUuZW1haWxzLmxlbmd0aD4wKSx6PXAuY29tcHV0ZWQoKCk9PkwudmFsdWUmJkMudmFsdWUudHJpbSgpLmxlbmd0aD4wJiZodG1sSGFzVGV4dChBLnZhbHVlKSk7ZnVuY3Rpb24gcmVzZXRQcmV2aWV3KCl7RS52YWx1ZT1udWxsLE4udmFsdWU9bnVsbH1hc3luYyBmdW5jdGlvbiBydW5QcmV2aWV3KCl7aWYoTC52YWx1ZSl7Ui52YWx1ZT0hMCxOLnZhbHVlPW51bGw7dHJ5e0UudmFsdWU9YXdhaXQgYS5wcmV2aWV3RGlzcGF0Y2goey4uLngudmFsdWV9KX1jYXRjaChlKXtjb25zdCB0PWU7Yy5hZGQoe3RpdGxlOiJQcmV2aWV3IGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1IudmFsdWU9ITF9fX1mdW5jdGlvbiBvcGVuQ29uZmlybSgpe3oudmFsdWUmJigkLnZhbHVlPSEwKX1hc3luYyBmdW5jdGlvbiBydW5TZW5kKCl7UC52YWx1ZT0hMDt0cnl7Ti52YWx1ZT1hd2FpdCBhLnNlbmREaXNwYXRjaCh7ZmlsdGVyOnsuLi54LnZhbHVlfSxzdWJqZWN0OkMudmFsdWUudHJpbSgpLGJvZHk6QS52YWx1ZX0pLCQudmFsdWU9ITEsRS52YWx1ZT1udWxsLGMuYWRkKHt0aXRsZTpgU2VudCAke04udmFsdWUuc2VudH0gZW1haWwocylgLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtjLmFkZCh7dGl0bGU6IkRpc3BhdGNoIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1AudmFsdWU9ITF9fXJldHVybihzLGwsYSxjKT0+e2NvbnN0IGQ9ZSxtPXQseT1uLHc9cixEPW8sQj1pLEY9VnMsSD1xcyxfPWIsaj1vZSxxPWllO2woYDxkaXYke1gocC5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNiJ9LGMpKX0+YCksbChLKGQse3RpdGxlOiJTZW5kIGVtYWlsIixkZXNjcmlwdGlvbjoiQ29tcG9zZSBhIG1lc3NhZ2UgYW5kIGRpc3BhdGNoIGl0IHRvIGEgZmlsdGVyZWQgc2V0IG9mIHVzZXJzLiBSZWNpcGllbnRzIHdobyB0dXJuZWQgb2ZmIGVtYWlsIGFyZSBza2lwcGVkLiIsdmFyaWFudDoibmFrZWQifSxudWxsLGEpKSxsKEsoZCx7dmFyaWFudDoic3VidGxlIix1aTp7Y29udGFpbmVyOiJmbGV4IGZsZXgtY29sIGdhcC00In19LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiQWxsIHVzZXJzIixkZXNjcmlwdGlvbjoiU2VuZCB0byBldmVyeSB1c2VyIChtaW51cyBvcHQtb3V0cykuIixjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIn0se2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOnAudW5yZWYoeCkuYWxsVXNlcnMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLnVucmVmKHgpLmFsbFVzZXJzPWUscmVzZXRQcmV2aWV3XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxwLnVucmVmKHgpLmFsbFVzZXJzP3AuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKToocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHAuRnJhZ21lbnQse2tleTowfSxbcC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiT3JnYW5pemF0aW9ucyIsZGVzY3JpcHRpb246Ik1lbWJlcnMgb2YgdGhlIHNlbGVjdGVkIG9yZ2FuaXphdGlvbnMuIn0se2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZSh3LHttb2RlbFZhbHVlOnAudW5yZWYoeCkub3JnYW5pemF0aW9uSWRzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+cC51bnJlZih4KS5vcmdhbml6YXRpb25JZHM9ZSxyZXNldFByZXZpZXddLGl0ZW1zOnAudW5yZWYoZiksInZhbHVlLWtleSI6InZhbHVlIixtdWx0aXBsZToiIixzZWFyY2hhYmxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgb3JnYW5pemF0aW9ucyIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSxwLmNyZWF0ZVZOb2RlKG0se2xhYmVsOiJSb2xlcyIsZGVzY3JpcHRpb246IlVzZXJzIGFzc2lnbmVkIHRoZSBzZWxlY3RlZCByb2xlcy4ifSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltwLmNyZWF0ZVZOb2RlKHcse21vZGVsVmFsdWU6cC51bnJlZih4KS5yb2xlSWRzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+cC51bnJlZih4KS5yb2xlSWRzPWUscmVzZXRQcmV2aWV3XSxpdGVtczpwLnVucmVmKHYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IHJvbGVzIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLHAuY3JlYXRlVk5vZGUobSx7bGFiZWw6IkVtYWlscyIsZGVzY3JpcHRpb246IlNwZWNpZmljIGFkZHJlc3NlcyAob25lIHBlciBsaW5lIC8gY29tbWEtc2VwYXJhdGVkKS4gT25seSBtYXRjaGluZyB1c2VycyBhcmUgZW1haWxlZC4ifSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltwLmNyZWF0ZVZOb2RlKEQse21vZGVsVmFsdWU6cC51bnJlZihTKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAuaXNSZWYoUyk/Uy52YWx1ZT1lOm51bGwscmVzZXRQcmV2aWV3XSxyb3dzOjMscGxhY2Vob2xkZXI6ImFAZXhhbXBsZS5jb20sIGJAZXhhbXBsZS5jb20iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pXSw2NCkpXTt0KEsobSx7bGFiZWw6IkFsbCB1c2VycyIsZGVzY3JpcHRpb246IlNlbmQgdG8gZXZlcnkgdXNlciAobWludXMgb3B0LW91dHMpLiIsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOnAudW5yZWYoeCkuYWxsVXNlcnMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLnVucmVmKHgpLmFsbFVzZXJzPWUscmVzZXRQcmV2aWV3XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoSyh5LHttb2RlbFZhbHVlOnAudW5yZWYoeCkuYWxsVXNlcnMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLnVucmVmKHgpLmFsbFVzZXJzPWUscmVzZXRQcmV2aWV3XX0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSkscC51bnJlZih4KS5hbGxVc2Vycz90KCJceDNjIS0tLS1ceDNlIik6KHQoIlx4M2MhLS1bLS1ceDNlIiksdChLKG0se2xhYmVsOiJPcmdhbml6YXRpb25zIixkZXNjcmlwdGlvbjoiTWVtYmVycyBvZiB0aGUgc2VsZWN0ZWQgb3JnYW5pemF0aW9ucy4ifSx7ZGVmYXVsdDpwLndpdGhDdHgoKGUsdCxuLHIpPT57aWYoIXQpcmV0dXJuW3AuY3JlYXRlVk5vZGUodyx7bW9kZWxWYWx1ZTpwLnVucmVmKHgpLm9yZ2FuaXphdGlvbklkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkub3JnYW5pemF0aW9uSWRzPWUscmVzZXRQcmV2aWV3XSxpdGVtczpwLnVucmVmKGYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IG9yZ2FuaXphdGlvbnMiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXTt0KEsodyx7bW9kZWxWYWx1ZTpwLnVucmVmKHgpLm9yZ2FuaXphdGlvbklkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkub3JnYW5pemF0aW9uSWRzPWUscmVzZXRQcmV2aWV3XSxpdGVtczpwLnVucmVmKGYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IG9yZ2FuaXphdGlvbnMiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLG4scikpfSksXzoxfSxuLHIpKSx0KEsobSx7bGFiZWw6IlJvbGVzIixkZXNjcmlwdGlvbjoiVXNlcnMgYXNzaWduZWQgdGhlIHNlbGVjdGVkIHJvbGVzLiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZSh3LHttb2RlbFZhbHVlOnAudW5yZWYoeCkucm9sZUlkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkucm9sZUlkcz1lLHJlc2V0UHJldmlld10saXRlbXM6cC51bnJlZih2KSwidmFsdWUta2V5IjoidmFsdWUiLG11bHRpcGxlOiIiLHNlYXJjaGFibGU6IiIscGxhY2Vob2xkZXI6IlNlbGVjdCByb2xlcyIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO3QoSyh3LHttb2RlbFZhbHVlOnAudW5yZWYoeCkucm9sZUlkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkucm9sZUlkcz1lLHJlc2V0UHJldmlld10saXRlbXM6cC51bnJlZih2KSwidmFsdWUta2V5IjoidmFsdWUiLG11bHRpcGxlOiIiLHNlYXJjaGFibGU6IiIscGxhY2Vob2xkZXI6IlNlbGVjdCByb2xlcyIsY2xhc3M6InctZnVsbCJ9LG51bGwsbixyKSl9KSxfOjF9LG4scikpLHQoSyhtLHtsYWJlbDoiRW1haWxzIixkZXNjcmlwdGlvbjoiU3BlY2lmaWMgYWRkcmVzc2VzIChvbmUgcGVyIGxpbmUgLyBjb21tYS1zZXBhcmF0ZWQpLiBPbmx5IG1hdGNoaW5nIHVzZXJzIGFyZSBlbWFpbGVkLiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShELHttb2RlbFZhbHVlOnAudW5yZWYoUyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLmlzUmVmKFMpP1MudmFsdWU9ZTpudWxsLHJlc2V0UHJldmlld10scm93czozLHBsYWNlaG9sZGVyOiJhQGV4YW1wbGUuY29tLCBiQGV4YW1wbGUuY29tIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoSyhELHttb2RlbFZhbHVlOnAudW5yZWYoUyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLmlzUmVmKFMpP1MudmFsdWU9ZTpudWxsLHJlc2V0UHJldmlld10scm93czozLHBsYWNlaG9sZGVyOiJhQGV4YW1wbGUuY29tLCBiQGV4YW1wbGUuY29tIixjbGFzczoidy1mdWxsIn0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSksdCgiXHgzYyEtLV0tLVx4M2UiKSl9KSxfOjF9LGEpKSxsKEsoZCx7dmFyaWFudDoic3VidGxlIix1aTp7Y29udGFpbmVyOiJmbGV4IGZsZXgtY29sIGdhcC00In19LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiU3ViamVjdCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoQix7bW9kZWxWYWx1ZTpwLnVucmVmKEMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5wLmlzUmVmKEMpP0MudmFsdWU9ZTpudWxsLG1heGxlbmd0aDoiMjAwIixwbGFjZWhvbGRlcjoiU3ViamVjdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSkscC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiQm9keSIscmVxdWlyZWQ6IiIsZGVzY3JpcHRpb246IlJpY2ggdGV4dCDigJQgZm9ybWF0dGluZyBpcyBwcmVzZXJ2ZWQgaW4gdGhlIGVtYWlsLiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoRix7bW9kZWxWYWx1ZTpwLnVucmVmKEEpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5wLmlzUmVmKEEpP0EudmFsdWU9ZTpudWxsLCJjb250ZW50LXR5cGUiOiJodG1sIixwbGFjZWhvbGRlcjoiV3JpdGUgeW91ciBtZXNzYWdl4oCmIixjbGFzczoidy1mdWxsIG1pbi1oLTQ4IHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1kZWZhdWx0IFsmXy5Qcm9zZU1pcnJvcl06cHgtNCJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoe2VkaXRvcjplfSk9PltwLmNyZWF0ZVZOb2RlKEgse2VkaXRvcjplLGl0ZW1zOk8sY2xhc3M6Im1iLTIgYm9yZGVyLWIgYm9yZGVyLW11dGVkIHAtMiJ9LG51bGwsOCxbImVkaXRvciJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSldO3QoSyhtLHtsYWJlbDoiU3ViamVjdCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShCLHttb2RlbFZhbHVlOnAudW5yZWYoQyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnAuaXNSZWYoQyk/Qy52YWx1ZT1lOm51bGwsbWF4bGVuZ3RoOiIyMDAiLHBsYWNlaG9sZGVyOiJTdWJqZWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoSyhCLHttb2RlbFZhbHVlOnAudW5yZWYoQyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnAuaXNSZWYoQyk/Qy52YWx1ZT1lOm51bGwsbWF4bGVuZ3RoOiIyMDAiLHBsYWNlaG9sZGVyOiJTdWJqZWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSksdChLKG0se2xhYmVsOiJCb2R5IixyZXF1aXJlZDoiIixkZXNjcmlwdGlvbjoiUmljaCB0ZXh0IOKAlCBmb3JtYXR0aW5nIGlzIHByZXNlcnZlZCBpbiB0aGUgZW1haWwuIn0se2RlZmF1bHQ6cC53aXRoQ3R4KChlLHQsbixyKT0+e2lmKCF0KXJldHVybltwLmNyZWF0ZVZOb2RlKEYse21vZGVsVmFsdWU6cC51bnJlZihBKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cC5pc1JlZihBKT9BLnZhbHVlPWU6bnVsbCwiY29udGVudC10eXBlIjoiaHRtbCIscGxhY2Vob2xkZXI6IldyaXRlIHlvdXIgbWVzc2FnZeKApiIsY2xhc3M6InctZnVsbCBtaW4taC00OCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZGVmYXVsdCBbJl8uUHJvc2VNaXJyb3JdOnB4LTQifSx7ZGVmYXVsdDpwLndpdGhDdHgoKHtlZGl0b3I6ZX0pPT5bcC5jcmVhdGVWTm9kZShILHtlZGl0b3I6ZSxpdGVtczpPLGNsYXNzOiJtYi0yIGJvcmRlci1iIGJvcmRlci1tdXRlZCBwLTIifSxudWxsLDgsWyJlZGl0b3IiXSldKSxfOjF9LDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChLKEYse21vZGVsVmFsdWU6cC51bnJlZihBKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cC5pc1JlZihBKT9BLnZhbHVlPWU6bnVsbCwiY29udGVudC10eXBlIjoiaHRtbCIscGxhY2Vob2xkZXI6IldyaXRlIHlvdXIgbWVzc2FnZeKApiIsY2xhc3M6InctZnVsbCBtaW4taC00OCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZGVmYXVsdCBbJl8uUHJvc2VNaXJyb3JdOnB4LTQifSx7ZGVmYXVsdDpwLndpdGhDdHgoKHtlZGl0b3I6ZX0sdCxuLHIpPT57aWYoIXQpcmV0dXJuW3AuY3JlYXRlVk5vZGUoSCx7ZWRpdG9yOmUsaXRlbXM6TyxjbGFzczoibWItMiBib3JkZXItYiBib3JkZXItbXV0ZWQgcC0yIn0sbnVsbCw4LFsiZWRpdG9yIl0pXTt0KEsoSCx7ZWRpdG9yOmUsaXRlbXM6TyxjbGFzczoibWItMiBib3JkZXItYiBib3JkZXItbXV0ZWQgcC0yIn0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSl9KSxfOjF9LG4scikpfSksXzoxfSxhKSksbCgnPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMiPicpLGwoSyhfLHtsYWJlbDoiUHJldmlldyByZWNpcGllbnRzIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOnAudW5yZWYoUiksZGlzYWJsZWQ6IXAudW5yZWYoTCksb25DbGljazpydW5QcmV2aWV3fSxudWxsLGEpKSxsKEsoXyx7bGFiZWw6IlNlbmQgZW1haWwiLGljb246ImktbHVjaWRlLXNlbmQiLGRpc2FibGVkOiFwLnVucmVmKHopLG9uQ2xpY2s6b3BlbkNvbmZpcm19LG51bGwsYSkpLGwoIjwvZGl2PiIpLHAudW5yZWYoRSk/bChLKGose2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLXVzZXJzIix0aXRsZTpgJHtwLnVucmVmKEUpLmVuYWJsZWR9IHdpbGwgcmVjZWl2ZSDCtyAke3AudW5yZWYoRSkuc2tpcHBlZH0gc2tpcHBlZCAoZW1haWwgb2ZmKSDCtyAke3AudW5yZWYoRSkudG90YWx9IG1hdGNoZWRgfSxudWxsLGEpKTpsKCJceDNjIS0tLS1ceDNlIikscC51bnJlZihOKT9sKEsoaix7Y29sb3I6cC51bnJlZihOKS5mYWlsZWQ/Indhcm5pbmciOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLW1haWwtY2hlY2siLHRpdGxlOmBTZW50ICR7cC51bnJlZihOKS5zZW50fSwgZmFpbGVkICR7cC51bnJlZihOKS5mYWlsZWR9LCBza2lwcGVkICR7cC51bnJlZihOKS5za2lwcGVkfSBvZiAke3AudW5yZWYoTikudG90YWx9IG1hdGNoZWRgfSxudWxsLGEpKTpsKCJceDNjIS0tLS1ceDNlIiksbChLKHEse29wZW46cC51bnJlZigkKSwib25VcGRhdGU6b3BlbiI6ZT0+cC5pc1JlZigkKT8kLnZhbHVlPWU6bnVsbCx0aXRsZToiU2VuZCB0aGlzIGVtYWlsPyIsdWk6e2Zvb3RlcjoianVzdGlmeS1lbmQifX0se2JvZHk6cC53aXRoQ3R4KChlLHQsbixyKT0+e2lmKCF0KXJldHVybltwLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LFtwLmNyZWF0ZVRleHRWTm9kZSgiIFRoaXMgd2lsbCBlbWFpbCAiKSxwLmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwscC50b0Rpc3BsYXlTdHJpbmcocC51bnJlZihFKT9wLnVucmVmKEUpLmVuYWJsZWQ6InRoZSBtYXRjaGluZyIpLDEpLHAuY3JlYXRlVGV4dFZOb2RlKCIgdXNlcihzKS4gUmVjaXBpZW50cyB3aG8gZGlzYWJsZWQgZW1haWwgbm90aWZpY2F0aW9ucyBhcmUgc2tpcHBlZCBhdXRvbWF0aWNhbGx5LiAiKV0pXTt0KGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7cn0+IFRoaXMgd2lsbCBlbWFpbCA8c3Ryb25nJHtyfT4ke1EocC51bnJlZihFKT9wLnVucmVmKEUpLmVuYWJsZWQ6InRoZSBtYXRjaGluZyIpfTwvc3Ryb25nPiB1c2VyKHMpLiBSZWNpcGllbnRzIHdobyBkaXNhYmxlZCBlbWFpbCBub3RpZmljYXRpb25zIGFyZSBza2lwcGVkIGF1dG9tYXRpY2FsbHkuIDwvcD5gKX0pLGZvb3RlcjpwLndpdGhDdHgoKGUsdCxuLHIpPT57aWYoIXQpcmV0dXJuW3AuY3JlYXRlVk5vZGUoXyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PiQudmFsdWU9ITF9LG51bGwsOCxbIm9uQ2xpY2siXSkscC5jcmVhdGVWTm9kZShfLHtjb2xvcjoicHJpbWFyeSIsbGFiZWw6IlNlbmQiLGxvYWRpbmc6cC51bnJlZihQKSxvbkNsaWNrOnJ1blNlbmR9LG51bGwsOCxbImxvYWRpbmciXSldO3QoSyhfLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6ZT0+JC52YWx1ZT0hMX0sbnVsbCxuLHIpKSx0KEsoXyx7Y29sb3I6InByaW1hcnkiLGxhYmVsOiJTZW5kIixsb2FkaW5nOnAudW5yZWYoUCksb25DbGljazpydW5TZW5kfSxudWxsLG4scikpfSksXzoxfSxhKSksbCgiPC9kaXY+Iil9fX0pLFFzPVhzLnNldHVwO1hzLnNldHVwPShlLHQpPT57Y29uc3Qgbj1wLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9zeXN0ZW0vYXBwL2NvbXBvbmVudHMvU3lzdGVtL1N5c3RlbUVtYWlsRGlzcGF0Y2gudnVlIiksUXM/UXMoZSx0KTp2b2lkIDB9O2NvbnN0IFpzPU9iamVjdC5hc3NpZ24oWHMse19fbmFtZToiU3lzdGVtRW1haWxEaXNwYXRjaCJ9KSxZcz1wLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJub3RpZmljYXRpb25zIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cDplPT4oZih7dGl0bGU6IlN5c3RlbSDCtyBOb3RpZmljYXRpb25zIn0pLChlLHQsbixyKT0+e3QoSyhacyxyLG51bGwsbikpfSl9KSxlbD1Zcy5zZXR1cDtZcy5zZXR1cD0oZSx0KT0+e2NvbnN0IG49cC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG4ubW9kdWxlc3x8KG4ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vbm90aWZpY2F0aW9ucy52dWUiKSxlbD9lbChlLHQpOnZvaWQgMH07ZXhwb3J0e1lzIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1ub3RpZmljYXRpb25zLUIwbVhVaHZJLm1qcy5tYXAK", "chunks/build/notifications-Bkfp5RaA.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9Td2l0Y2gtQnlXMEJVTGkubWpzIjtpbXBvcnR7XyBhcyBsfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHt2IGFzIG8saCBhcyBuLGEgYXMgaSxpIGFzIHIsXyBhcyBzfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dyBhcyB1fWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIG0sZiBhcyBkLHQgYXMgY31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9WaXN1YWxseUhpZGRlbklucHV0LUQ3bUdQX0pXLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IHA9by5kZWZpbmVDb21wb25lbnQoe19fbmFtZToibm90aWZpY2F0aW9ucyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAocCl7Y29uc3QgZj1uKCksYj1pKCksZz17ZW1haWw6ITAscHJvZHVjdF91cGRhdGVzOiEwLHdlZWtseV9kaWdlc3Q6ITEsaW1wb3J0YW50X3VwZGF0ZXM6ITB9LFY9by5yZWYoey4uLmd9KSx5PW8ucmVmKCExKSx7ZGF0YTp4LGVycm9yOnZ9PXIoInVzZXItbm90aWZpY2F0aW9uLXByZWZzIiwoKT0+Zi5mZXRjaFVzZXJOb3RpZmljYXRpb25TZXR0aW5ncygpLHtkZWZhdWx0OigpPT4oey4uLmd9KX0pO28ud2F0Y2goeCxlPT57ZSYmKFYudmFsdWU9ey4uLmV9KX0se2ltbWVkaWF0ZTohMH0pLHUodik7Y29uc3Qgdz1be25hbWU6InByb2R1Y3RfdXBkYXRlcyIsbGFiZWw6IlByb2R1Y3QgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgbWVzc2FnZXMgYWJvdXQgcHJvZHVjdCB1cGRhdGVzLiJ9LHtuYW1lOiJ3ZWVrbHlfZGlnZXN0IixsYWJlbDoiV2Vla2x5IGRpZ2VzdCIsZGVzY3JpcHRpb246IlJlY2VpdmUgYSB3ZWVrbHkgc3VtbWFyeS4ifSx7bmFtZToiaW1wb3J0YW50X3VwZGF0ZXMiLGxhYmVsOiJJbXBvcnRhbnQgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgc2VjdXJpdHkgYW5kIGJpbGxpbmcgdXBkYXRlcy4ifV07YXN5bmMgZnVuY3Rpb24gcGVyc2lzdCgpe3RyeXthd2FpdCBmLnVwZGF0ZVVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyh7Li4uVi52YWx1ZX0pLGIuYWRkKHt0aXRsZToiUHJlZmVyZW5jZXMgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoe2IuYWRkKHt0aXRsZToiRmFpbGVkIHRvIHNhdmUgcHJlZmVyZW5jZXMiLGNvbG9yOiJlcnJvciJ9KX19ZnVuY3Rpb24gb25FbWFpbFRvZ2dsZShlKXtlP3BlcnNpc3QoKTp5LnZhbHVlPSEwfWZ1bmN0aW9uIGNvbmZpcm1EaXNhYmxlKCl7eS52YWx1ZT0hMSxwZXJzaXN0KCl9ZnVuY3Rpb24gY2FuY2VsRGlzYWJsZSgpe1YudmFsdWUuZW1haWw9ITAseS52YWx1ZT0hMX1yZXR1cm4obixpLHIsdSk9Pntjb25zdCBwPWUsZj10LGI9YSxnPWwseD1zO2koYDxkaXYke20oby5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LHUpKX0+YCksaShkKHAse3RpdGxlOiJOb3RpZmljYXRpb25zIixkZXNjcmlwdGlvbjoiTWFuYWdlIHlvdXIgbm90aWZpY2F0aW9uIHNldHRpbmdzLiIsdmFyaWFudDoibmFrZWQiLGNsYXNzOiJtYi00In0sbnVsbCxyKSksaShkKHAse3ZhcmlhbnQ6InN1YnRsZSIsdWk6e2NvbnRhaW5lcjoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX0se2RlZmF1bHQ6by53aXRoQ3R4KChlLHQsYSxsKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKGYse25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwgbm90aWZpY2F0aW9ucyIsZGVzY3JpcHRpb246Ik1hc3RlciBzd2l0Y2guIFR1cm4gb2ZmIHRvIHN0b3AgQUxMIGVtYWlsIOKAlCBpbmNsdWRpbmcgYmlsbGluZyBhbmQgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcy4iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbm90LWxhc3Q6cGItNCBnYXAtMiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoYix7bW9kZWxWYWx1ZTpvLnVucmVmKFYpLmVtYWlsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+by51bnJlZihWKS5lbWFpbD1lLG9uRW1haWxUb2dnbGVdfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLChvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soby5GcmFnbWVudCxudWxsLG8ucmVuZGVyTGlzdCh3LGU9Pm8uY3JlYXRlVk5vZGUoZix7a2V5OmUubmFtZSxuYW1lOmUubmFtZSxsYWJlbDplLmxhYmVsLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24sY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBub3QtbGFzdDpwYi00IHB0LTQgZ2FwLTIifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKGIse21vZGVsVmFsdWU6by51bnJlZihWKVtlLm5hbWVdLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbdD0+by51bnJlZihWKVtlLm5hbWVdPXQscGVyc2lzdF0sZGlzYWJsZWQ6IW8udW5yZWYoVikuZW1haWx9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldKSxfOjJ9LDEwMzIsWyJuYW1lIiwibGFiZWwiLCJkZXNjcmlwdGlvbiJdKSksNjQpKV07dChkKGYse25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwgbm90aWZpY2F0aW9ucyIsZGVzY3JpcHRpb246Ik1hc3RlciBzd2l0Y2guIFR1cm4gb2ZmIHRvIHN0b3AgQUxMIGVtYWlsIOKAlCBpbmNsdWRpbmcgYmlsbGluZyBhbmQgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcy4iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbm90LWxhc3Q6cGItNCBnYXAtMiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGEsbCk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZShiLHttb2RlbFZhbHVlOm8udW5yZWYoVikuZW1haWwsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5vLnVucmVmKFYpLmVtYWlsPWUsb25FbWFpbFRvZ2dsZV19LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KGQoYix7bW9kZWxWYWx1ZTpvLnVucmVmKFYpLmVtYWlsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+by51bnJlZihWKS5lbWFpbD1lLG9uRW1haWxUb2dnbGVdfSxudWxsLGEsbCkpfSksXzoxfSxhLGwpKSx0KCJceDNjIS0tWy0tXHgzZSIpLGModyxlPT57dChkKGYse2tleTplLm5hbWUsbmFtZTplLm5hbWUsbGFiZWw6ZS5sYWJlbCxkZXNjcmlwdGlvbjplLmRlc2NyaXB0aW9uLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbm90LWxhc3Q6cGItNCBwdC00IGdhcC0yIn0se2RlZmF1bHQ6by53aXRoQ3R4KCh0LGEsbCxuKT0+e2lmKCFhKXJldHVybltvLmNyZWF0ZVZOb2RlKGIse21vZGVsVmFsdWU6by51bnJlZihWKVtlLm5hbWVdLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbdD0+by51bnJlZihWKVtlLm5hbWVdPXQscGVyc2lzdF0sZGlzYWJsZWQ6IW8udW5yZWYoVikuZW1haWx9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldO2EoZChiLHttb2RlbFZhbHVlOm8udW5yZWYoVilbZS5uYW1lXSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6W3Q9Pm8udW5yZWYoVilbZS5uYW1lXT10LHBlcnNpc3RdLGRpc2FibGVkOiFvLnVucmVmKFYpLmVtYWlsfSxudWxsLGwsbikpfSksXzoyfSxhLGwpKX0pLHQoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjF9LHIpKSxpKGQoZyx7b3BlbjpvLnVucmVmKHkpLCJvblVwZGF0ZTpvcGVuIjplPT5vLmlzUmVmKHkpP3kudmFsdWU9ZTpudWxsLHRpdGxlOiJUdXJuIG9mZiBhbGwgZW1haWw/Iix1aTp7Zm9vdGVyOiJqdXN0aWZ5LWVuZCJ9fSx7Ym9keTpvLndpdGhDdHgoKGUsdCxhLGwpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sW28uY3JlYXRlVGV4dFZOb2RlKCIgWW91IHdpbGwgbm8gbG9uZ2VyIHJlY2VpdmUgIiksby5jcmVhdGVWTm9kZSgic3Ryb25nIixudWxsLCJhbnkiKSxvLmNyZWF0ZVRleHRWTm9kZSgiIGVtYWlsIGZyb20gdXMg4oCUIGluY2x1ZGluZyAiKSxvLmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwsImJpbGxpbmcgbm90aWNlcywgc2VjdXJpdHkgYWxlcnRzLCBhbmQgb3RoZXIgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcyIpLG8uY3JlYXRlVGV4dFZOb2RlKCIuIFlvdSBjYW4gdHVybiBpdCBiYWNrIG9uIGF0IGFueSB0aW1lLiAiKV0pXTt0KGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7bH0+IFlvdSB3aWxsIG5vIGxvbmdlciByZWNlaXZlIDxzdHJvbmcke2x9PmFueTwvc3Ryb25nPiBlbWFpbCBmcm9tIHVzIOKAlCBpbmNsdWRpbmcgPHN0cm9uZyR7bH0+YmlsbGluZyBub3RpY2VzLCBzZWN1cml0eSBhbGVydHMsIGFuZCBvdGhlciBpbXBvcnRhbnQgYWNjb3VudCB1cGRhdGVzPC9zdHJvbmc+LiBZb3UgY2FuIHR1cm4gaXQgYmFjayBvbiBhdCBhbnkgdGltZS4gPC9wPmApfSksZm9vdGVyOm8ud2l0aEN0eCgoZSx0LGEsbCk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSh4LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJLZWVwIGVtYWlsIG9uIixvbkNsaWNrOmNhbmNlbERpc2FibGV9KSxvLmNyZWF0ZVZOb2RlKHgse2NvbG9yOiJlcnJvciIsbGFiZWw6IlR1cm4gb2ZmIGFsbCBlbWFpbCIsbG9hZGluZzohMSxvbkNsaWNrOmNvbmZpcm1EaXNhYmxlfSldO3QoZCh4LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJLZWVwIGVtYWlsIG9uIixvbkNsaWNrOmNhbmNlbERpc2FibGV9LG51bGwsYSxsKSksdChkKHgse2NvbG9yOiJlcnJvciIsbGFiZWw6IlR1cm4gb2ZmIGFsbCBlbWFpbCIsbG9hZGluZzohMSxvbkNsaWNrOmNvbmZpcm1EaXNhYmxlfSxudWxsLGEsbCkpfSksXzoxfSxyKSksaSgiPC9kaXY+Iil9fX0pLGY9cC5zZXR1cDtwLnNldHVwPShlLHQpPT57Y29uc3QgYT1vLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9ub3RpZmljYXRpb25zLnZ1ZSIpLGY/ZihlLHQpOnZvaWQgMH07ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vdGlmaWNhdGlvbnMtQmtmcDVSYUEubWpzLm1hcAo=", "chunks/build/organization-BZq8z0dr.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyBvfWZyb20iLi9EYXNoYm9hcmRUb29sYmFyLUJ0QUJZektILm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vTmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzIjtpbXBvcnR7diBhcyByLHUgYXMgdCxoIGFzIGEsYWYgYXMgcyxhZyBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBtfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL2lzVmFsdWVFcXVhbE9yRXhpc3QtRG1QeW41Yk4ubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgdT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJvcmdhbml6YXRpb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHUpe3Qoe3RpdGxlOiJPcmdhbml6YXRpb24ifSk7Y29uc3QgcD1hKCksZD1yLmNvbXB1dGVkKCgpPT5wLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxjPXIuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVt7bGFiZWw6IkdlbmVyYWwiLGljb246ImktbHVjaWRlLWJ1aWxkaW5nIix0bzoiL29yZ2FuaXphdGlvbiIsZXhhY3Q6ITB9LHtsYWJlbDoiTWVtYmVycyIsaWNvbjoiaS1sdWNpZGUtdXNlcnMiLHRvOiIvb3JnYW5pemF0aW9uL21lbWJlcnMifSx7bGFiZWw6IlJvbGVzIixpY29uOiJpLWx1Y2lkZS1zaGllbGQiLHRvOiIvb3JnYW5pemF0aW9uL3JvbGVzIn1dO3JldHVybiBzKGQudmFsdWUsImJpbGxpbmc6cmVhZCIpJiZlLnB1c2goe2xhYmVsOiJJbnZvaWNlIixpY29uOiJpLWx1Y2lkZS1maWxlLXRleHQiLHRvOiIvb3JnYW5pemF0aW9uL2ludm9pY2UifSksW2VdfSk7cmV0dXJuKHQsYSxzLHUpPT57Y29uc3QgcD1vLGQ9aSxnPWw7YShuKGUsci5tZXJnZVByb3BzKHtpZDoib3JnYW5pemF0aW9uIix1aTp7Ym9keToibGc6cHktMTIifX0sdSkse2hlYWRlcjpyLndpdGhDdHgoKGUsbyxpLHQpPT57aWYoIW8pcmV0dXJuW3IuY3JlYXRlVk5vZGUobSx7dGl0bGU6Ik9yZ2FuaXphdGlvbiJ9KSxyLmNyZWF0ZVZOb2RlKHAsbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVZOb2RlKGQse2l0ZW1zOnIudW5yZWYoYyksaGlnaGxpZ2h0OiIiLGNsYXNzOiItbXgtMSBmbGV4LTEifSxudWxsLDgsWyJpdGVtcyJdKV0pLF86MX0pXTtvKG4obSx7dGl0bGU6Ik9yZ2FuaXphdGlvbiJ9LG51bGwsaSx0KSksbyhuKHAsbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKGUsbyxpLHQpPT57aWYoIW8pcmV0dXJuW3IuY3JlYXRlVk5vZGUoZCx7aXRlbXM6ci51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXTtvKG4oZCx7aXRlbXM6ci51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsaSx0KSl9KSxfOjF9LGksdCkpfSksYm9keTpyLndpdGhDdHgoKGUsbyxpLHQpPT57aWYoIW8pcmV0dXJuW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC00IHNtOmdhcC02IGxnOmdhcC0xMiB3LWZ1bGwgbGc6bWF4LXctNHhsIG14LWF1dG8ifSxbci5jcmVhdGVWTm9kZShnKV0pXTtvKGA8ZGl2IGNsYXNzPSJmbGV4IGZsZXgtY29sIGdhcC00IHNtOmdhcC02IGxnOmdhcC0xMiB3LWZ1bGwgbGc6bWF4LXctNHhsIG14LWF1dG8iJHt0fT5gKSxvKG4oZyxudWxsLG51bGwsaSx0KSksbygiPC9kaXY+Iil9KSxfOjF9LHMpKX19fSkscD11LnNldHVwO3Uuc2V0dXA9KGUsbyk9Pntjb25zdCBpPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihpLm1vZHVsZXN8fChpLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi52dWUiKSxwP3AoZSxvKTp2b2lkIDB9O2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1vcmdhbml6YXRpb24tQlpxOHowZHIubWpzLm1hcAo=", "chunks/build/overlay-CjyBzL1C.mjs": "ZnVuY3Rpb24gcG9pbnRlckRvd25PdXRzaWRlKGUsdD17fSl7Y29uc3Qgbj1lLmRldGFpbC5vcmlnaW5hbEV2ZW50LGk9bi50YXJnZXQ7aT8uaXNDb25uZWN0ZWQ/dC5zY3JvbGxhYmxlJiYobi5vZmZzZXRYPmkuY2xpZW50V2lkdGh8fG4ub2Zmc2V0WT5pLmNsaWVudEhlaWdodCkmJmUucHJldmVudERlZmF1bHQoKTplLnByZXZlbnREZWZhdWx0KCl9ZXhwb3J0e3BvaW50ZXJEb3duT3V0c2lkZSBhcyBwfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3ZlcmxheS1DanlCekwxQy5tanMubWFwCg==", "chunks/build/products-Dj-DMVc1.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7diBhcyBsLHUgYXMgdCxhLGkgYXMgcixfIGFzIG8sYiBhcyBufWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBpfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHt1fWZyb20iLi91c2VQcm9kdWN0QXBpLUJadU5qT2hrLm1qcyI7aW1wb3J0e18gYXMgZH1mcm9tIi4vRm9ybS1DZU5mMUk1cS5tanMiO2ltcG9ydHtfIGFzIHN9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIGN9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7XyBhcyBwfWZyb20iLi9TZWxlY3QtRGlhaWxmVWMubWpzIjtpbXBvcnR7XyBhcyBmfWZyb20iLi9Ta2VsZXRvbi1CZnRxeUdwMy5tanMiO2ltcG9ydHtfIGFzIHZ9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e18gYXMgYn1mcm9tIi4vRHJvcGRvd25NZW51LUNlY1BjZUphLm1qcyI7aW1wb3J0e18gYXMgVn1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcyI7aW1wb3J0e3cgYXMgeX1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7ZiBhcyBfLG8gYXMgZyx0IGFzIGgscSBhcyB3fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e28gYXMgeCxfIGFzIEMsRyBhcyBOLHMgYXMgVX1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnQiLi91c2VGb3JtQ29udHJvbC1CTS1NZldtby5tanMiO2ltcG9ydCIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Sb3ZpbmdGb2N1c0dyb3VwLUJyYXFDWEhfLm1qcyI7aW1wb3J0Ii4vdXRpbHMtREluN0VMWVYubWpzIjtpbXBvcnQiLi91c2VGaWx0ZXItQ2xDWmFvaTgubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmROYXZiYXItcGtJRWFkT0oubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLUNRQ1pPdFhILm1qcyI7aW1wb3J0Ii4vdXNlTGF5ZXJSZWdpc3RyeS1DOUNCMjBVSC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBrPVsiVVNEIiwiRVVSIiwiR0JQIiwiVk5EIiwiSlBZIiwiQVVEIiwiQ0FEIl0sUD14KHtuYW1lOlUoKS5taW4oMSkubWF4KDIwMCksZGVzY3JpcHRpb246VSgpLm1heCgyZTMpLm9wdGlvbmFsKCksdHlwZTpDKFsib25lX3RpbWUiLCJyZWN1cnJpbmciXSkuZGVmYXVsdCgib25lX3RpbWUiKSxwcmljZTpOKCkuaW50KCkubWluKDApLHByaWNlX2N1cnJlbmN5OkMoaykuZGVmYXVsdCgiVVNEIiksYmlsbGluZ19pbnRlcnZhbDpDKFsibW9udGgiLCJ5ZWFyIl0pLm9wdGlvbmFsKCksc3RhdHVzOkMoWyJhY3RpdmUiLCJpbmFjdGl2ZSJdKS5kZWZhdWx0KCJhY3RpdmUiKX0pO1AucmVmaW5lKGU9PiJyZWN1cnJpbmciIT09ZS50eXBlfHwhIWUuYmlsbGluZ19pbnRlcnZhbCx7bWVzc2FnZToiYmlsbGluZ19pbnRlcnZhbCBpcyByZXF1aXJlZCBmb3IgcmVjdXJyaW5nIHByb2R1Y3RzIixwYXRoOlsiYmlsbGluZ19pbnRlcnZhbCJdfSksUC5wYXJ0aWFsKCk7Y29uc3Qgaj1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9kdWN0Rm9ybSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2luaXRpYWxWYWx1ZXM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJzdWJtaXQiLCJjYW5jZWwiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBhPWUscj10LG49eCh7bmFtZTpVKCkubWluKDEsIk5hbWUgaXMgcmVxdWlyZWQiKS5tYXgoMjAwKSxkZXNjcmlwdGlvbjpVKCkubWF4KDJlMykub3B0aW9uYWwoKSx0eXBlOkMoWyJvbmVfdGltZSIsInJlY3VycmluZyJdKSxwcmljZTpOKCkuaW50KCkubWluKDAsIlByaWNlIG11c3QgYmUgbm9uLW5lZ2F0aXZlIikscHJpY2VfY3VycmVuY3k6QyhrKSxiaWxsaW5nX2ludGVydmFsOkMoWyJtb250aCIsInllYXIiXSkub3B0aW9uYWwoKSxzdGF0dXM6QyhbImFjdGl2ZSIsImluYWN0aXZlIl0pfSksaT1sLnJlYWN0aXZlKHtuYW1lOmEuaW5pdGlhbFZhbHVlcz8ubmFtZT8/IiIsZGVzY3JpcHRpb246YS5pbml0aWFsVmFsdWVzPy5kZXNjcmlwdGlvbj8/IiIsdHlwZTphLmluaXRpYWxWYWx1ZXM/LnR5cGU/PyJvbmVfdGltZSIscHJpY2U6YS5pbml0aWFsVmFsdWVzPy5wcmljZT8/MCxwcmljZV9jdXJyZW5jeTphLmluaXRpYWxWYWx1ZXM/LnByaWNlX2N1cnJlbmN5Pz8iVVNEIixiaWxsaW5nX2ludGVydmFsOmEuaW5pdGlhbFZhbHVlcz8uYmlsbGluZ19pbnRlcnZhbD8/dm9pZCAwLHN0YXR1czphLmluaXRpYWxWYWx1ZXM/LnN0YXR1cz8/ImFjdGl2ZSJ9KSx1PVt7bGFiZWw6Ik9uZS10aW1lIix2YWx1ZToib25lX3RpbWUifSx7bGFiZWw6IlJlY3VycmluZyIsdmFsdWU6InJlY3VycmluZyJ9XSxmPVt7bGFiZWw6Ik1vbnRobHkiLHZhbHVlOiJtb250aCJ9LHtsYWJlbDoiWWVhcmx5Iix2YWx1ZToieWVhciJ9XSx2PVt7bGFiZWw6IkFjdGl2ZSIsdmFsdWU6ImFjdGl2ZSJ9LHtsYWJlbDoiSW5hY3RpdmUiLHZhbHVlOiJpbmFjdGl2ZSJ9XSxiPWsubWFwKGU9Pih7bGFiZWw6ZSx2YWx1ZTplfSkpO2Z1bmN0aW9uIG9uU3VibWl0KGUpe3IoInN1Ym1pdCIsZS5kYXRhKX1yZXR1cm4gbC53YXRjaCgoKT0+aS50eXBlLGU9Pnsib25lX3RpbWUiPT09ZSYmKGkuYmlsbGluZ19pbnRlcnZhbD12b2lkIDApfSksKHQsYSxWLHkpPT57Y29uc3QgZz1zLGg9Yyx3PW0seD1wLEM9bzthKF8oZCxsLm1lcmdlUHJvcHMoe3NjaGVtYTpsLnVucmVmKG4pLHN0YXRlOmwudW5yZWYoaSksY2xhc3M6InNwYWNlLXktNCIsb25TdWJtaXQ6b25TdWJtaXR9LHkpLHtkZWZhdWx0Omwud2l0aEN0eCgodCxhLG8sbik9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiTmFtZSIsbmFtZToibmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoaCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkubmFtZT1lLHBsYWNlaG9sZGVyOiJQcm9kdWN0IG5hbWUiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IkRlc2NyaXB0aW9uIixuYW1lOiJkZXNjcmlwdGlvbiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUodyx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLmRlc2NyaXB0aW9uLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLmRlc2NyaXB0aW9uPWUscGxhY2Vob2xkZXI6Ik9wdGlvbmFsIGRlc2NyaXB0aW9uIixyb3dzOjMsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQifSxbbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiVHlwZSIsbmFtZToidHlwZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnR5cGUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkudHlwZT1lLGl0ZW1zOnUsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLCJyZWN1cnJpbmciPT09bC51bnJlZihpKS50eXBlPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soZyx7a2V5OjAsbGFiZWw6IkJpbGxpbmcgSW50ZXJ2YWwiLG5hbWU6ImJpbGxpbmdfaW50ZXJ2YWwiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHgse21vZGVsVmFsdWU6bC51bnJlZihpKS5iaWxsaW5nX2ludGVydmFsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLmJpbGxpbmdfaW50ZXJ2YWw9ZSxpdGVtczpmLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQifSxbbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiUHJpY2UiLG5hbWU6InByaWNlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShoLHttb2RlbFZhbHVlOmwudW5yZWYoaSkucHJpY2UsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkucHJpY2U9ZSxtb2RlbE1vZGlmaWVyczp7bnVtYmVyOiEwfSx0eXBlOiJudW1iZXIiLG1pbjoiMCIscGxhY2Vob2xkZXI6IjAiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IkN1cnJlbmN5IixuYW1lOiJwcmljZV9jdXJyZW5jeSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5PWUsaXRlbXM6bC51bnJlZihiKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KV0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IlN0YXR1cyIsbmFtZToic3RhdHVzIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkuc3RhdHVzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnN0YXR1cz1lLGl0ZW1zOnYsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIn0sW2wuY3JlYXRlVk5vZGUoQyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnIoImNhbmNlbCIpfSxudWxsLDgsWyJvbkNsaWNrIl0pLGwuY3JlYXRlVk5vZGUoQyx7dHlwZToic3VibWl0IixsYWJlbDoiU2F2ZSIsbG9hZGluZzplLmxvYWRpbmd9LG51bGwsOCxbImxvYWRpbmciXSldKV07YShfKGcse2xhYmVsOiJOYW1lIixuYW1lOiJuYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGgse21vZGVsVmFsdWU6bC51bnJlZihpKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLm5hbWU9ZSxwbGFjZWhvbGRlcjoiUHJvZHVjdCBuYW1lIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoXyhoLHttb2RlbFZhbHVlOmwudW5yZWYoaSkubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5uYW1lPWUscGxhY2Vob2xkZXI6IlByb2R1Y3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxyKSl9KSxfOjF9LG8sbikpLGEoXyhnLHtsYWJlbDoiRGVzY3JpcHRpb24iLG5hbWU6ImRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHcse21vZGVsVmFsdWU6bC51bnJlZihpKS5kZXNjcmlwdGlvbiwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5kZXNjcmlwdGlvbj1lLHBsYWNlaG9sZGVyOiJPcHRpb25hbCBkZXNjcmlwdGlvbiIscm93czozLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChfKHcse21vZGVsVmFsdWU6bC51bnJlZihpKS5kZXNjcmlwdGlvbiwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5kZXNjcmlwdGlvbj1lLHBsYWNlaG9sZGVyOiJPcHRpb25hbCBkZXNjcmlwdGlvbiIscm93czozLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEscikpfSksXzoxfSxvLG4pKSxhKGA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0yIGdhcC00IiR7bn0+YCksYShfKGcse2xhYmVsOiJUeXBlIixuYW1lOiJ0eXBlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHgse21vZGVsVmFsdWU6bC51bnJlZihpKS50eXBlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnR5cGU9ZSxpdGVtczp1LCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoXyh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkudHlwZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS50eXBlPWUsaXRlbXM6dSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxyKSl9KSxfOjF9LG8sbikpLCJyZWN1cnJpbmciPT09bC51bnJlZihpKS50eXBlP2EoXyhnLHtsYWJlbDoiQmlsbGluZyBJbnRlcnZhbCIsbmFtZToiYmlsbGluZ19pbnRlcnZhbCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVWTm9kZSh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkuYmlsbGluZ19pbnRlcnZhbCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5iaWxsaW5nX2ludGVydmFsPWUsaXRlbXM6ZiwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KF8oeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLmJpbGxpbmdfaW50ZXJ2YWwsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkuYmlsbGluZ19pbnRlcnZhbD1lLGl0ZW1zOmYsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEscikpfSksXzoxfSxvLG4pKTphKCJceDNjIS0tLS1ceDNlIiksYShgPC9kaXY+PGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCIke259PmApLGEoXyhnLHtsYWJlbDoiUHJpY2UiLG5hbWU6InByaWNlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGgse21vZGVsVmFsdWU6bC51bnJlZihpKS5wcmljZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5wcmljZT1lLG1vZGVsTW9kaWZpZXJzOntudW1iZXI6ITB9LHR5cGU6Im51bWJlciIsbWluOiIwIixwbGFjZWhvbGRlcjoiMCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KF8oaCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnByaWNlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnByaWNlPWUsbW9kZWxNb2RpZmllcnM6e251bWJlcjohMH0sdHlwZToibnVtYmVyIixtaW46IjAiLHBsYWNlaG9sZGVyOiIwIixjbGFzczoidy1mdWxsIn0sbnVsbCxhLHIpKX0pLF86MX0sbyxuKSksYShfKGcse2xhYmVsOiJDdXJyZW5jeSIsbmFtZToicHJpY2VfY3VycmVuY3kiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5PWUsaXRlbXM6bC51bnJlZihiKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO3QoXyh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkucHJpY2VfY3VycmVuY3ksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkucHJpY2VfY3VycmVuY3k9ZSxpdGVtczpsLnVucmVmKGIpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCxhLHIpKX0pLF86MX0sbyxuKSksYSgiPC9kaXY+IiksYShfKGcse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVWTm9kZSh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkuc3RhdHVzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnN0YXR1cz1lLGl0ZW1zOnYsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChfKHgse21vZGVsVmFsdWU6bC51bnJlZihpKS5zdGF0dXMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkuc3RhdHVzPWUsaXRlbXM6diwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxyKSl9KSxfOjF9LG8sbikpLGEoYDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIiJHtufT5gKSxhKF8oQyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnIoImNhbmNlbCIpfSxudWxsLG8sbikpLGEoXyhDLHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIixsb2FkaW5nOmUubG9hZGluZ30sbnVsbCxvLG4pKSxhKCI8L2Rpdj4iKX0pLF86MX0sVikpfX19KSxTPWouc2V0dXA7ai5zZXR1cD0oZSx0KT0+e2NvbnN0IGE9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvZHVjdC9hcHAvY29tcG9uZW50cy9Qcm9kdWN0L1Byb2R1Y3RGb3JtLnZ1ZSIpLFM/UyhlLHQpOnZvaWQgMH07Y29uc3QgRD1PYmplY3QuYXNzaWduKGose19fbmFtZToiUHJvZHVjdEZvcm0ifSksQj1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9kdWN0SXRlbSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3Byb2R1Y3Q6e319LGVtaXRzOlsiZWRpdCIsImRlbGV0ZSJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IGE9ZSxyPXQsbj1sLmNvbXB1dGVkKCgpPT5uZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIix7c3R5bGU6ImN1cnJlbmN5IixjdXJyZW5jeTphLnByb2R1Y3QucHJpY2VfY3VycmVuY3ksbWluaW11bUZyYWN0aW9uRGlnaXRzOjB9KS5mb3JtYXQoYS5wcm9kdWN0LnByaWNlKSksaT1sLmNvbXB1dGVkKCgpPT4ib25lX3RpbWUiPT09YS5wcm9kdWN0LnR5cGU/Ik9uZS10aW1lIjoibW9udGgiPT09YS5wcm9kdWN0LmJpbGxpbmdfaW50ZXJ2YWw/Ii9tb250aCI6Ii95ZWFyIiksdT1bW3tsYWJlbDoiRWRpdCIsaWNvbjoiaS1sdWNpZGUtcGVuY2lsIixvblNlbGVjdDooKT0+cigiZWRpdCIsYS5wcm9kdWN0KX0se2xhYmVsOiJEZWxldGUiLGljb246ImktbHVjaWRlLXRyYXNoLTIiLGNvbG9yOiJlcnJvciIsb25TZWxlY3Q6KCk9PnIoImRlbGV0ZSIsYS5wcm9kdWN0KX1dXTtyZXR1cm4odCxhLHIsZCk9Pntjb25zdCBzPXYsYz1iLG09bzthKGA8ZGl2JHtnKGwubWVyZ2VQcm9wcyh7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxkKSl9PjxkaXYgY2xhc3M9ImZsZXgtMSBtaW4tdy0wIj48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiI+PHNwYW4gY2xhc3M9ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQgdHJ1bmNhdGUiPiR7dyhlLnByb2R1Y3QubmFtZSl9PC9zcGFuPmApLGEoXyhzLHtjb2xvcjoiYWN0aXZlIj09PWUucHJvZHVjdC5zdGF0dXM/InN1Y2Nlc3MiOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCh0LGEscixvKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVRleHRWTm9kZShsLnRvRGlzcGxheVN0cmluZyhlLnByb2R1Y3Quc3RhdHVzKSwxKV07YShgJHt3KGUucHJvZHVjdC5zdGF0dXMpfWApfSksXzoxfSxyKSksYSgiPC9kaXY+IiksZS5wcm9kdWN0LmRlc2NyaXB0aW9uP2EoYDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMC41IHRydW5jYXRlIj4ke3coZS5wcm9kdWN0LmRlc2NyaXB0aW9uKX08L3A+YCk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoYDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtaGlnaGxpZ2h0ZWQgZm9udC1zZW1pYm9sZCBtdC0xIj4ke3cobC51bnJlZihuKSl9IDxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIGZvbnQtbm9ybWFsIj4ke3cobC51bnJlZihpKSl9PC9zcGFuPjwvcD48L2Rpdj5gKSxhKF8oYyx7aXRlbXM6dX0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKG0se2ljb246ImktbHVjaWRlLWVsbGlwc2lzLXZlcnRpY2FsIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InNtIn0pXTt0KF8obSx7aWNvbjoiaS1sdWNpZGUtZWxsaXBzaXMtdmVydGljYWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToic20ifSxudWxsLGEscikpfSksXzoxfSxyKSksYSgiPC9kaXY+Iil9fX0pLHE9Qi5zZXR1cDtCLnNldHVwPShlLHQpPT57Y29uc3QgYT1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9kdWN0L2FwcC9jb21wb25lbnRzL1Byb2R1Y3QvUHJvZHVjdEl0ZW0udnVlIikscT9xKGUsdCk6dm9pZCAwfTtjb25zdCBSPU9iamVjdC5hc3NpZ24oQix7X19uYW1lOiJQcm9kdWN0SXRlbSJ9KSxJPWwuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlByb2R1Y3RMaXN0IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7cHJvZHVjdHM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAoZSx7ZW1pdDpsfSl7Y29uc3QgdD1sO3JldHVybihsLGEscixvKT0+e2NvbnN0IGk9Zix1PW47YShgPGRpdiR7ZyhvKX0+YCksZS5sb2FkaW5nPyhhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksaCgzLGU9PnthKF8oaSx7a2V5OmUsY2xhc3M6ImgtMjAgcm91bmRlZC1sZyJ9LG51bGwscikpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSk6MD09PWUucHJvZHVjdHMubGVuZ3RoPyhhKCc8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBweS0xMiB0ZXh0LW11dGVkIj4nKSxhKF8odSx7bmFtZToiaS1sdWNpZGUtcGFja2FnZSIsY2xhc3M6InNpemUtMTAgbXgtYXV0byBtYi0zIG9wYWNpdHktNDAifSxudWxsLHIpKSxhKCI8cD5ObyBwcm9kdWN0cyB5ZXQ8L3A+PC9kaXY+IikpOihhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksaChlLnByb2R1Y3RzLGU9PnthKF8oUix7a2V5OmUuaWQscHJvZHVjdDplLG9uRWRpdDplPT50KCJlZGl0IixlKSxvbkRlbGV0ZTplPT50KCJkZWxldGUiLGUpfSxudWxsLHIpKX0pLGEoIlx4M2MhLS1dLS1ceDNlPC9kaXY+IikpLGEoIjwvZGl2PiIpfX19KSxFPUkuc2V0dXA7SS5zZXR1cD0oZSx0KT0+e2NvbnN0IGE9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvZHVjdC9hcHAvY29tcG9uZW50cy9Qcm9kdWN0L1Byb2R1Y3RMaXN0LnZ1ZSIpLEU/RShlLHQpOnZvaWQgMH07Y29uc3QgRj1PYmplY3QuYXNzaWduKEkse19fbmFtZToiUHJvZHVjdExpc3QifSksTT1TeW1ib2woInByb2R1Y3RzIiksTD1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJwcm9kdWN0cyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobil7dCh7dGl0bGU6IlByb2R1Y3RzIn0pO2NvbnN0IGQ9dSgpLHM9YSgpLGM9bC5yZWYoITEpLG09bC5yZWYoITEpLHA9bC5yZWYobnVsbCkse2RhdGE6ZixzdGF0dXM6dixlcnJvcjpiLHJlZnJlc2g6Z309cigicHJvZHVjdHMiLCgpPT5kLmZldGNoUHJvZHVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTt5KGIpO2NvbnN0IGg9bC5jb21wdXRlZCgoKT0+InBlbmRpbmciPT09di52YWx1ZSk7ZnVuY3Rpb24gb3BlbkNyZWF0ZSgpe3AudmFsdWU9bnVsbCxtLnZhbHVlPSEwfWZ1bmN0aW9uIG9wZW5FZGl0KGUpe3AudmFsdWU9ZSxtLnZhbHVlPSEwfWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChlKXtjLnZhbHVlPSEwO3RyeXtjb25zdCBsPSEhcC52YWx1ZTtwLnZhbHVlP2F3YWl0IGQudXBkYXRlUHJvZHVjdChwLnZhbHVlLmlkLGUpOmF3YWl0IGQuY3JlYXRlUHJvZHVjdChlKSxhd2FpdCBnKCksbS52YWx1ZT0hMSxzLmFkZCh7dGl0bGU6bD8iUHJvZHVjdCB1cGRhdGVkIjoiUHJvZHVjdCBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBsPWU7cy5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246bD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2MudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVByb2R1Y3QoZSl7YXdhaXQgZC5kZWxldGVQcm9kdWN0KGUpLGF3YWl0IGcoKX1hc3luYyBmdW5jdGlvbiBoYW5kbGVEZWxldGUoZSl7dHJ5e2F3YWl0IGRlbGV0ZVByb2R1Y3QoZS5pZCkscy5hZGQoe3RpdGxlOiJQcm9kdWN0IGRlbGV0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IGw9ZTtzLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1yZXR1cm4gbC5wcm92aWRlKE0se3Byb2R1Y3RzOmYsZmV0Y2hQcm9kdWN0czphc3luYyBmdW5jdGlvbigpe2F3YWl0IGcoKX0sY3JlYXRlUHJvZHVjdDphc3luYyBmdW5jdGlvbihlKXtyZXR1cm4gZC5jcmVhdGVQcm9kdWN0KGUpfSx1cGRhdGVQcm9kdWN0OmFzeW5jIGZ1bmN0aW9uKGUsbCl7cmV0dXJuIGQudXBkYXRlUHJvZHVjdChlLGwpfSxkZWxldGVQcm9kdWN0OmRlbGV0ZVByb2R1Y3R9KSwodCxhLHIsbik9Pntjb25zdCB1PWUsZD1vLHM9aTthKCJceDNjIS0tWy0tXHgzZSIpLGEoXyh1LHtpZDoicHJvZHVjdHMifSx7aGVhZGVyOmwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVWTm9kZShWLHt0aXRsZToiUHJvZHVjdHMifSx7cmlnaHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShkLHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2R1Y3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksXzoxfSldO3QoXyhWLHt0aXRsZToiUHJvZHVjdHMifSx7cmlnaHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGQse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvZHVjdCIsb25DbGljazplPT5vcGVuQ3JlYXRlKCl9LG51bGwsOCxbIm9uQ2xpY2siXSldO3QoXyhkLHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2R1Y3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLGEscikpfSksXzoxfSxhLHIpKX0pLGJvZHk6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00In0sW2wuY3JlYXRlVk5vZGUoRix7cHJvZHVjdHM6bC51bnJlZihmKSxsb2FkaW5nOmwudW5yZWYoaCksb25FZGl0Om9wZW5FZGl0LG9uRGVsZXRlOmhhbmRsZURlbGV0ZX0sbnVsbCw4LFsicHJvZHVjdHMiLCJsb2FkaW5nIl0pXSldO3QoYDxkaXYgY2xhc3M9Im1heC13LTN4bCBteC1hdXRvIHAtNCIke3J9PmApLHQoXyhGLHtwcm9kdWN0czpsLnVucmVmKGYpLGxvYWRpbmc6bC51bnJlZihoKSxvbkVkaXQ6b3BlbkVkaXQsb25EZWxldGU6aGFuZGxlRGVsZXRlfSxudWxsLGEscikpLHQoIjwvZGl2PiIpfSksXzoxfSxyKSksYShfKHMse29wZW46bC51bnJlZihtKSwib25VcGRhdGU6b3BlbiI6ZT0+bC5pc1JlZihtKT9tLnZhbHVlPWU6bnVsbCx0aXRsZTpsLnVucmVmKHApPyJFZGl0IHByb2R1Y3QiOiJOZXcgcHJvZHVjdCIsdWk6e2JvZHk6Im92ZXJmbG93LXktYXV0byBtYXgtaC1bODB2aF0ifX0se2JvZHk6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKEQseyJpbml0aWFsLXZhbHVlcyI6bC51bnJlZihwKT97Li4ubC51bnJlZihwKSxkZXNjcmlwdGlvbjpsLnVucmVmKHApLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOmwudW5yZWYoYyksb25TdWJtaXQ6aGFuZGxlU3VibWl0LG9uQ2FuY2VsOmU9Pm0udmFsdWU9ITF9LG51bGwsOCxbImluaXRpYWwtdmFsdWVzIiwibG9hZGluZyIsIm9uQ2FuY2VsIl0pXTt0KF8oRCx7ImluaXRpYWwtdmFsdWVzIjpsLnVucmVmKHApP3suLi5sLnVucmVmKHApLGRlc2NyaXB0aW9uOmwudW5yZWYocCkuZGVzY3JpcHRpb24/P3ZvaWQgMH06dm9pZCAwLGxvYWRpbmc6bC51bnJlZihjKSxvblN1Ym1pdDpoYW5kbGVTdWJtaXQsb25DYW5jZWw6ZT0+bS52YWx1ZT0hMX0sbnVsbCxhLHIpKX0pLF86MX0scikpLGEoIlx4M2MhLS1dLS1ceDNlIil9fX0pLE89TC5zZXR1cDtMLnNldHVwPShlLHQpPT57Y29uc3QgYT1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9kdWN0L2FwcC9wYWdlcy9wcm9kdWN0cy52dWUiKSxPP08oZSx0KTp2b2lkIDB9O2V4cG9ydHtMIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1wcm9kdWN0cy1Eai1ETVZjMS5tanMubWFwCg==", "chunks/build/referral-BzPn404Q.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmRQYW5lbC1DRktZU3FjNS5tanMiO2ltcG9ydHtfIGFzIHJ9ZnJvbSIuL1BhZ2VDYXJkLUJ3LVc0cXhzLm1qcyI7aW1wb3J0e18gYXMgYX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHtfIGFzIG99ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgbH1mcm9tIi4vVGFibGUtMFVSbkM4T0gubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9QYWdpbmF0aW9uLUN6ckVpUEpkLm1qcyI7aW1wb3J0e3YgYXMgbix1IGFzIGQsaSxhIGFzIGMsYXogYXMgdSxfIGFzIG0sJCBhcyBmfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBwfWZyb20iLi91cmwtQmZCb3lqSloubWpzIjtpbXBvcnR7XyBhcyB4fWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7dyBhcyBofWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtmIGFzIHYscSBhcyBnLG8gYXMgeX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi9pbmRleC1CMVBPVExtYS5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgYj1uLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJSZWZlcnJhbENhcmQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntjb2RlOnt9fSxzZXR1cChlKXtjb25zdCB0PWUscj1jKCksYT1wKCkub3JpZ2luLGw9bi5jb21wdXRlZCgoKT0+YCR7YX0vP3JlZj0ke3QuY29kZX1gKSx7Y29weTpzLGNvcGllZDpkfT11KHtzb3VyY2U6bH0pO2Z1bmN0aW9uIG9uQ29weSgpe3MoKSxyLmFkZCh7dGl0bGU6IkNvcGllZCEiLGNvbG9yOiJzdWNjZXNzIn0pfXJldHVybihlLHQscixhKT0+e2NvbnN0IHM9byxpPW07dChgPGRpdiR7eShuLm1lcmdlUHJvcHMoe2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LGEpKX0+YCksdCh2KHMseyJtb2RlbC12YWx1ZSI6bi51bnJlZihsKSxyZWFkb25seToiIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyB0ZXh0LXNtIn0sbnVsbCxyKSksdCh2KGkse2ljb246bi51bnJlZihkKT8iaS1sdWNpZGUtY2hlY2siOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLG9uQ2xpY2s6b25Db3B5fSxudWxsLHIpKSx0KCI8L2Rpdj4iKX19fSksdz1iLnNldHVwO2Iuc2V0dXA9KGUsdCk9Pntjb25zdCByPW4udXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9jb21wb25lbnRzL1JlZmVycmFsL1JlZmVycmFsQ2FyZC52dWUiKSx3P3coZSx0KTp2b2lkIDB9O2NvbnN0IEM9T2JqZWN0LmFzc2lnbihiLHtfX25hbWU6IlJlZmVycmFsQ2FyZCJ9KSxWPTEwLE49bi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToicmVmZXJyYWwiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKGMpe2Qoe3RpdGxlOiJSZWZlcnJhbCJ9KTtjb25zdCB1PXtmZXRjaFJlZmVycmFsU3RhdHM6ZnVuY3Rpb24oKXtyZXR1cm4gZigiL2FwaS9yZWZlcnJhbC9zdGF0cyIpfX0se2RhdGE6bSxlcnJvcjpwfT1pKCJyZWZlcnJhbC1zdGF0cyIsKCk9PnUuZmV0Y2hSZWZlcnJhbFN0YXRzKCkse2RlZmF1bHQ6KCk9Pih7Y29kZToiIixyZWZlcnJlZENvdW50OjAsdG90YWxFYXJuZWQ6MCxyZWZlcnJhbHM6W119KX0pO2gocCk7Y29uc3QgeT1uLnJlZigiIiksYj1uLnJlZigxKSx3PW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPXkudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGU/bS52YWx1ZS5yZWZlcnJhbHMuZmlsdGVyKHQ9PnQuZW1haWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlKSk6bS52YWx1ZS5yZWZlcnJhbHN9KSxOPW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPShiLnZhbHVlLTEpKlY7cmV0dXJuIHcudmFsdWUuc2xpY2UoZSxlK1YpfSk7bi53YXRjaCh5LCgpPT57Yi52YWx1ZT0xfSk7Y29uc3QgXz1be2FjY2Vzc29yS2V5OiJlbWFpbCIsaGVhZGVyOiJFbWFpbCJ9LHthY2Nlc3NvcktleToic291cmNlIixoZWFkZXI6IlNvdXJjZSIsY2VsbDooe3Jvdzp0fSk9Pm4uaChlLHtsYWJlbDoiaW52aXRlIj09PXQub3JpZ2luYWwuc291cmNlPyJJbnZpdGUiOiJMaW5rIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0pfSx7YWNjZXNzb3JLZXk6InJld2FyZF9wYWlkIixoZWFkZXI6IlN0YXR1cyIsY2VsbDooe3Jvdzp0fSk9Pm4uaChlLHtsYWJlbDp0Lm9yaWdpbmFsLnJld2FyZF9wYWlkPyJSZXdhcmRlZCI6IlBlbmRpbmciLGNvbG9yOnQub3JpZ2luYWwucmV3YXJkX3BhaWQ/InN1Y2Nlc3MiOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUifSl9LHthY2Nlc3NvcktleToiY3JlYXRlZF9hdCIsaGVhZGVyOiJEYXRlIixjZWxsOih7cm93OmV9KT0+bmV3IERhdGUoZS5vcmlnaW5hbC5jcmVhdGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKX1dO3JldHVybihlLGQsaSxjKT0+e2NvbnN0IHU9cixmPWEscD1vLGg9bCxSPXM7ZCh2KHQsbi5tZXJnZVByb3BzKHtpZDoicmVmZXJyYWwifSxjKSx7aGVhZGVyOm4ud2l0aEN0eCgoZSx0LHIsYSk9PntpZighdClyZXR1cm5bbi5jcmVhdGVWTm9kZSh4LHt0aXRsZToiUmVmZXJyYWwifSldO3Qodih4LHt0aXRsZToiUmVmZXJyYWwifSxudWxsLHIsYSkpfSksYm9keTpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJwLTYgc3BhY2UteS02In0sW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0yIGdhcC02In0sW24uY3JlYXRlVk5vZGUodSx7dGl0bGU6IllvdXIgcmVmZXJyYWwgbGluayIsZGVzY3JpcHRpb246IlNoYXJlIHRoaXMgbGluayB0byBpbnZpdGUgb3RoZXJzLiBZb3UnbGwgZWFybiBjcmVkaXRzIHdoZW4gdGhleSB0b3AgdXAgZm9yIHRoZSBmaXJzdCB0aW1lLiIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bi53aXRoQ3R4KCgpPT5bbi51bnJlZihtKS5jb2RlPyhuLm9wZW5CbG9jaygpLG4uY3JlYXRlQmxvY2soQyx7a2V5OjAsY29kZTpuLnVucmVmKG0pLmNvZGV9LG51bGwsOCxbImNvZGUiXSkpOm4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86MX0pLG4uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC00In0sW24uY3JlYXRlVk5vZGUoZix7Y2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Om4ud2l0aEN0eCgoKT0+W24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIFJlZmVycmVkICIpLG4uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC0zeGwgZm9udC1ib2xkIHRhYnVsYXItbnVtcyJ9LG4udG9EaXNwbGF5U3RyaW5nKG4udW5yZWYobSkucmVmZXJyZWRDb3VudCksMSldKV0pLF86MX0pLG4uY3JlYXRlVk5vZGUoZix7Y2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Om4ud2l0aEN0eCgoKT0+W24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIEVhcm5lZCAiKSxuLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMifSxuLnRvRGlzcGxheVN0cmluZyhuLnVucmVmKG0pLnRvdGFsRWFybmVkLnRvTG9jYWxlU3RyaW5nKCkpLDEpXSldKSxfOjJ9LDEwMjQpXSldKSxuLmNyZWF0ZVZOb2RlKGYse3VpOntib2R5OiJzbTpwLTAiLGZvb3RlcjoicC0wIn19LHtoZWFkZXI6bi53aXRoQ3R4KCgpPT5bbi5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LFtuLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFJlZmVycmFscyAiKSxuLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6bi51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bi5pc1JlZih5KT95LnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJGaWx0ZXIgYnkgZW1haWzigKYiLHNpemU6InNtIixjbGFzczoidy01NiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSldKSxmb290ZXI6bi53aXRoQ3R4KCgpPT5bbi51bnJlZih3KS5sZW5ndGg+Vj8obi5vcGVuQmxvY2soKSxuLmNyZWF0ZUJsb2NrKFIse2tleTowLHBhZ2U6bi51bnJlZihiKSwib25VcGRhdGU6cGFnZSI6ZT0+bi5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCx0b3RhbDpuLnVucmVmKHcpLmxlbmd0aCwiaXRlbXMtcGVyLXBhZ2UiOlZ9LG51bGwsOCxbInBhZ2UiLCJvblVwZGF0ZTpwYWdlIiwidG90YWwiXSkpOm4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGRlZmF1bHQ6bi53aXRoQ3R4KCgpPT5bbi5jcmVhdGVWTm9kZShoLHtkYXRhOm4udW5yZWYoTiksY29sdW1uczpffSx7ZW1wdHk6bi53aXRoQ3R4KCgpPT5bbi5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InB5LTggdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyByZWZlcnJhbHMgeWV0LiAiKV0pLF86MX0sOCxbImRhdGEiXSldKSxfOjF9KV0pXTt0KGA8ZGl2IGNsYXNzPSJwLTYgc3BhY2UteS02IiR7YX0+PGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMiBnYXAtNiIke2F9PmApLHQodih1LHt0aXRsZToiWW91ciByZWZlcnJhbCBsaW5rIixkZXNjcmlwdGlvbjoiU2hhcmUgdGhpcyBsaW5rIHRvIGludml0ZSBvdGhlcnMuIFlvdSdsbCBlYXJuIGNyZWRpdHMgd2hlbiB0aGV5IHRvcCB1cCBmb3IgdGhlIGZpcnN0IHRpbWUuIix2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24udW5yZWYobSkuY29kZT8obi5vcGVuQmxvY2soKSxuLmNyZWF0ZUJsb2NrKEMse2tleTowLGNvZGU6bi51bnJlZihtKS5jb2RlfSxudWxsLDgsWyJjb2RlIl0pKTpuLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO24udW5yZWYobSkuY29kZT90KHYoQyx7Y29kZTpuLnVucmVmKG0pLmNvZGV9LG51bGwscixhKSk6dCgiXHgzYyEtLS0tXHgzZSIpfSksXzoxfSxyLGEpKSx0KGA8ZGl2IGNsYXNzPSJmbGV4IGZsZXgtY29sIGdhcC00IiR7YX0+YCksdCh2KGYse2NsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIFJlZmVycmVkICIpLG4uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC0zeGwgZm9udC1ib2xkIHRhYnVsYXItbnVtcyJ9LG4udG9EaXNwbGF5U3RyaW5nKG4udW5yZWYobSkucmVmZXJyZWRDb3VudCksMSldKV07dChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIiR7YX0+PHAgY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1tdXRlZCIke2F9PiBUb3RhbCBSZWZlcnJlZCA8L3A+PHAgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMiJHthfT4ke2cobi51bnJlZihtKS5yZWZlcnJlZENvdW50KX08L3A+PC9kaXY+YCl9KSxfOjF9LHIsYSkpLHQodihmLHtjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bi53aXRoQ3R4KChlLHQscixhKT0+e2lmKCF0KXJldHVybltuLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIn0sW24uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkIn0sIiBUb3RhbCBFYXJuZWQgIiksbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LTN4bCBmb250LWJvbGQgdGFidWxhci1udW1zIn0sbi50b0Rpc3BsYXlTdHJpbmcobi51bnJlZihtKS50b3RhbEVhcm5lZC50b0xvY2FsZVN0cmluZygpKSwxKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iJHthfT48cCBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkIiR7YX0+IFRvdGFsIEVhcm5lZCA8L3A+PHAgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMiJHthfT4ke2cobi51bnJlZihtKS50b3RhbEVhcm5lZC50b0xvY2FsZVN0cmluZygpKX08L3A+PC9kaXY+YCl9KSxfOjF9LHIsYSkpLHQoIjwvZGl2PjwvZGl2PiIpLHQodihmLHt1aTp7Ym9keToic206cC0wIixmb290ZXI6InAtMCJ9fSx7aGVhZGVyOm4ud2l0aEN0eCgoZSx0LHIsYSk9PntpZighdClyZXR1cm5bbi5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LFtuLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFJlZmVycmFscyAiKSxuLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6bi51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bi5pc1JlZih5KT95LnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJGaWx0ZXIgYnkgZW1haWzigKYiLHNpemU6InNtIixjbGFzczoidy01NiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSldO3QoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiIke2F9PjxwIGNsYXNzPSJmb250LXNlbWlib2xkIiR7YX0+IFJlZmVycmFscyA8L3A+YCksdCh2KHAse21vZGVsVmFsdWU6bi51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bi5pc1JlZih5KT95LnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJGaWx0ZXIgYnkgZW1haWzigKYiLHNpemU6InNtIixjbGFzczoidy01NiJ9LG51bGwscixhKSksdCgiPC9kaXY+Iil9KSxmb290ZXI6bi53aXRoQ3R4KChlLHQscixhKT0+e2lmKCF0KXJldHVybltuLnVucmVmKHcpLmxlbmd0aD5WPyhuLm9wZW5CbG9jaygpLG4uY3JlYXRlQmxvY2soUix7a2V5OjAscGFnZTpuLnVucmVmKGIpLCJvblVwZGF0ZTpwYWdlIjplPT5uLmlzUmVmKGIpP2IudmFsdWU9ZTpudWxsLHRvdGFsOm4udW5yZWYodykubGVuZ3RoLCJpdGVtcy1wZXItcGFnZSI6Vn0sbnVsbCw4LFsicGFnZSIsIm9uVXBkYXRlOnBhZ2UiLCJ0b3RhbCJdKSk6bi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtuLnVucmVmKHcpLmxlbmd0aD5WP3QodihSLHtwYWdlOm4udW5yZWYoYiksIm9uVXBkYXRlOnBhZ2UiOmU9Pm4uaXNSZWYoYik/Yi52YWx1ZT1lOm51bGwsdG90YWw6bi51bnJlZih3KS5sZW5ndGgsIml0ZW1zLXBlci1wYWdlIjpWfSxudWxsLHIsYSkpOnQoIlx4M2MhLS0tLVx4M2UiKX0pLGRlZmF1bHQ6bi53aXRoQ3R4KChlLHQscixhKT0+e2lmKCF0KXJldHVybltuLmNyZWF0ZVZOb2RlKGgse2RhdGE6bi51bnJlZihOKSxjb2x1bW5zOl99LHtlbXB0eTpuLndpdGhDdHgoKCk9PltuLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoicHktOCB0ZXh0LWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIE5vIHJlZmVycmFscyB5ZXQuICIpXSksXzoxfSw4LFsiZGF0YSJdKV07dCh2KGgse2RhdGE6bi51bnJlZihOKSxjb2x1bW5zOl99LHtlbXB0eTpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJweS04IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCJ9LCIgTm8gcmVmZXJyYWxzIHlldC4gIildO3QoYDxkaXYgY2xhc3M9InB5LTggdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIiR7YX0+IE5vIHJlZmVycmFscyB5ZXQuIDwvZGl2PmApfSksXzoxfSxyLGEpKX0pLF86MX0scixhKSksdCgiPC9kaXY+Iil9KSxfOjF9LGkpKX19fSksXz1OLnNldHVwO04uc2V0dXA9KGUsdCk9Pntjb25zdCByPW4udXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9wYWdlcy9yZWZlcnJhbC52dWUiKSxfP18oZSx0KTp2b2lkIDB9O2V4cG9ydHtOIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1yZWZlcnJhbC1CelBuNDA0US5tanMubWFwCg==", "chunks/build/roles-DJMD-M_t.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7diBhcyBhLHUgYXMgdCxhIGFzIGwsaSBhcyByLF8gYXMgbyx5IGFzIG4sZCBhcyBzLGUgYXMgaSxFIGFzIGQsRiBhcyB1LEggYXMgYyx0IGFzIHAsYiBhcyBtLFAgYXMgZixhRCBhcyB2LE0gYXMgYixTIGFzIHksVSBhcyBoLFEgYXMgayxtIGFzIGcsTiBhcyB4fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyB3fWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHtfIGFzIFZ9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIEN9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e2kgYXMgQn1mcm9tIi4vaXNWYWx1ZUVxdWFsT3JFeGlzdC1EbVB5bjViTi5tanMiO2ltcG9ydHt1IGFzIF99ZnJvbSIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0e1YgYXMgcX1mcm9tIi4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydHt1IGFzIFN9ZnJvbSIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0e2cgYXMgTix3IGFzICQsZiBhcyBSfWZyb20iLi91dGlscy1ESW43RUxZVi5tanMiO2ltcG9ydHtpIGFzIGp9ZnJvbSIuL1JvdmluZ0ZvY3VzR3JvdXAtQnJhcUNYSF8ubWpzIjtpbXBvcnR7TCBhcyBJfWZyb20iLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydHt1IGFzIHp9ZnJvbSIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnR7dyBhcyBVfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIEQsZiBhcyBGLHQgYXMgUCxxIGFzIEssaiBhcyBNLGsgYXMgTyxnIGFzIEV9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnR7YVggYXMgTH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vb3ZlcmxheS1DanlCekwxQy5tanMiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjt2YXIgVD1hLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJSb3ZpbmdGb2N1c0l0ZW0iLHByb3BzOnt0YWJTdG9wSWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxmb2N1c2FibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxsb3dTaGlmdEtleTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbD1qKCkscj1TKCksbz1hLmNvbXB1dGVkKCgpPT50LnRhYlN0b3BJZHx8ciksbj1hLmNvbXB1dGVkKCgpPT5sLmN1cnJlbnRUYWJTdG9wSWQudmFsdWU9PT1vLnZhbHVlKSx7Z2V0SXRlbXM6cyxDb2xsZWN0aW9uSXRlbTppfT14KCk7ZnVuY3Rpb24gaGFuZGxlS2V5ZG93bihlKXtpZigiVGFiIj09PWUua2V5JiZlLnNoaWZ0S2V5KXJldHVybiB2b2lkIGwub25JdGVtU2hpZnRUYWIoKTtpZihlLnRhcmdldCE9PWUuY3VycmVudFRhcmdldClyZXR1cm47Y29uc3Qgcj1OKGUsbC5vcmllbnRhdGlvbi52YWx1ZSxsLmRpci52YWx1ZSk7aWYodm9pZCAwIT09cil7aWYoZS5tZXRhS2V5fHxlLmN0cmxLZXl8fGUuYWx0S2V5fHwhdC5hbGxvd1NoaWZ0S2V5JiZlLnNoaWZ0S2V5KXJldHVybjtlLnByZXZlbnREZWZhdWx0KCk7bGV0IG89Wy4uLnMoKS5tYXAoZT0+ZS5yZWYpLmZpbHRlcihlPT4iIiE9PWUuZGF0YXNldC5kaXNhYmxlZCldO2lmKCJsYXN0Ij09PXIpby5yZXZlcnNlKCk7ZWxzZSBpZigicHJldiI9PT1yfHwibmV4dCI9PT1yKXsicHJldiI9PT1yJiZvLnJldmVyc2UoKTtjb25zdCBhPW8uaW5kZXhPZihlLmN1cnJlbnRUYXJnZXQpO289bC5sb29wLnZhbHVlPyQobyxhKzEpOm8uc2xpY2UoYSsxKX1hLm5leHRUaWNrKCgpPT5SKG8pKX19cmV0dXJuKGUsdCk9PihhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soYS51bnJlZihpKSxudWxsLHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoYS51bnJlZihmKSx7dGFiaW5kZXg6bi52YWx1ZT8wOi0xLCJkYXRhLW9yaWVudGF0aW9uIjphLnVucmVmKGwpLm9yaWVudGF0aW9uLnZhbHVlLCJkYXRhLWFjdGl2ZSI6ZS5hY3RpdmU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjplLmZvY3VzYWJsZT92b2lkIDA6IiIsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxvbk1vdXNlZG93bjp0WzBdfHwodFswXT10PT57ZS5mb2N1c2FibGU/YS51bnJlZihsKS5vbkl0ZW1Gb2N1cyhvLnZhbHVlKTp0LnByZXZlbnREZWZhdWx0KCl9KSxvbkZvY3VzOnRbMV18fCh0WzFdPWU9PmEudW5yZWYobCkub25JdGVtRm9jdXMoby52YWx1ZSkpLG9uS2V5ZG93bjpoYW5kbGVLZXlkb3dufSx7ZGVmYXVsdDphLndpdGhDdHgoKCk9PlthLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbInRhYmluZGV4IiwiZGF0YS1vcmllbnRhdGlvbiIsImRhdGEtYWN0aXZlIiwiZGF0YS1kaXNhYmxlZCIsImFzIiwiYXMtY2hpbGQiXSldKSxfOjN9KSl9fSk7Y29uc3RbR109ZygiQ2hlY2tib3hHcm91cFJvb3QiKTtmdW5jdGlvbiBpc0luZGV0ZXJtaW5hdGUoZSl7cmV0dXJuImluZGV0ZXJtaW5hdGUiPT09ZX1mdW5jdGlvbiBnZXRTdGF0ZShlKXtyZXR1cm4gaXNJbmRldGVybWluYXRlKGUpPyJpbmRldGVybWluYXRlIjplPyJjaGVja2VkIjoidW5jaGVja2VkIn1jb25zdFtXLEFdPWcoIkNoZWNrYm94Um9vdCIpO3ZhciBIPWEuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJDaGVja2JveFJvb3QiLHByb3BzOntkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im9uIn0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0cnVlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT4hMH0sZmFsc2VWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3QgbD1lLHI9dCx7Zm9yd2FyZFJlZjpvLGN1cnJlbnRFbGVtZW50Om59PWIoKSxzPUcobnVsbCksaT15KGwsIm1vZGVsVmFsdWUiLHIse2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRWYWx1ZT8/bC5mYWxzZVZhbHVlLHBhc3NpdmU6dm9pZCAwPT09bC5tb2RlbFZhbHVlfSksZD1hLmNvbXB1dGVkKCgpPT5zPy5kaXNhYmxlZC52YWx1ZXx8bC5kaXNhYmxlZCksdT1hLmNvbXB1dGVkKCgpPT5MKGkudmFsdWUsbC50cnVlVmFsdWUpKSxjPWEuY29tcHV0ZWQoKCk9Pmgocz8ubW9kZWxWYWx1ZS52YWx1ZSk/ImluZGV0ZXJtaW5hdGUiPT09aS52YWx1ZT8iaW5kZXRlcm1pbmF0ZSI6dS52YWx1ZTpCKHMubW9kZWxWYWx1ZS52YWx1ZSxsLnZhbHVlKSk7ZnVuY3Rpb24gaGFuZGxlQ2xpY2soKXtpZihoKHM/Lm1vZGVsVmFsdWUudmFsdWUpKSJpbmRldGVybWluYXRlIj09PWkudmFsdWU/aS52YWx1ZT1sLnRydWVWYWx1ZTppLnZhbHVlPXUudmFsdWU/bC5mYWxzZVZhbHVlOmwudHJ1ZVZhbHVlO2Vsc2V7Y29uc3QgZT1bLi4ucy5tb2RlbFZhbHVlLnZhbHVlfHxbXV07aWYoQihlLGwudmFsdWUpKXtjb25zdCBhPWUuZmluZEluZGV4KGU9PkwoZSxsLnZhbHVlKSk7ZS5zcGxpY2UoYSwxKX1lbHNlIGUucHVzaChsLnZhbHVlKTtzLm1vZGVsVmFsdWUudmFsdWU9ZX19Y29uc3QgcD1fKG4pLG09YS5jb21wdXRlZCgoKT0+bC5pZCYmbi52YWx1ZT8odm9pZCAwKS5xdWVyeVNlbGVjdG9yKGBbZm9yPSIke2wuaWR9Il1gKT8uaW5uZXJUZXh0OnZvaWQgMCk7cmV0dXJuIEEoe2Rpc2FibGVkOmQsc3RhdGU6Y30pLChlLHQpPT4oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKGEucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoYS51bnJlZihzKT8ucm92aW5nRm9jdXMudmFsdWU/YS51bnJlZihUKTphLnVucmVmKGYpKSxhLm1lcmdlUHJvcHMoZS4kYXR0cnMse2lkOmUuaWQscmVmOmEudW5yZWYobykscm9sZToiY2hlY2tib3giLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLGFzOmUuYXMsdHlwZToiYnV0dG9uIj09PWUuYXM/ImJ1dHRvbiI6dm9pZCAwLCJhcmlhLWNoZWNrZWQiOmEudW5yZWYoaXNJbmRldGVybWluYXRlKShjLnZhbHVlKT8ibWl4ZWQiOmMudmFsdWUsImFyaWEtcmVxdWlyZWQiOmUucmVxdWlyZWQsImFyaWEtbGFiZWwiOmUuJGF0dHJzWyJhcmlhLWxhYmVsIl18fG0udmFsdWUsImRhdGEtc3RhdGUiOmEudW5yZWYoZ2V0U3RhdGUpKGMudmFsdWUpLCJkYXRhLWRpc2FibGVkIjpkLnZhbHVlPyIiOnZvaWQgMCxkaXNhYmxlZDpkLnZhbHVlLGZvY3VzYWJsZTphLnVucmVmKHMpPy5yb3ZpbmdGb2N1cy52YWx1ZT8hZC52YWx1ZTp2b2lkIDAsb25LZXlkb3duOmEud2l0aEtleXMoYS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiXSksWyJlbnRlciJdKSxvbkNsaWNrOmhhbmRsZUNsaWNrfSkse2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLnVucmVmKGkpLHN0YXRlOmMudmFsdWV9KSxhLnVucmVmKHApJiZlLm5hbWUmJiFhLnVucmVmKHMpPyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soYS51bnJlZihxKSx7a2V5OjAsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ISFjLnZhbHVlLG5hbWU6ZS5uYW1lLHZhbHVlOmUudmFsdWUsZGlzYWJsZWQ6ZC52YWx1ZSxyZXF1aXJlZDplLnJlcXVpcmVkfSxudWxsLDgsWyJjaGVja2VkIiwibmFtZSIsInZhbHVlIiwiZGlzYWJsZWQiLCJyZXF1aXJlZCJdKSk6YS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0pLF86M30sMTYsWyJpZCIsImFzLWNoaWxkIiwiYXMiLCJ0eXBlIiwiYXJpYS1jaGVja2VkIiwiYXJpYS1yZXF1aXJlZCIsImFyaWEtbGFiZWwiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImRpc2FibGVkIiwiZm9jdXNhYmxlIiwib25LZXlkb3duIl0pKX19KSxRPWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNoZWNrYm94SW5kaWNhdG9yIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdHtmb3J3YXJkUmVmOnR9PWIoKSxsPVcoKTtyZXR1cm4oZSxyKT0+KGEub3BlbkJsb2NrKCksYS5jcmVhdGVCbG9jayhhLnVucmVmKGspLHtwcmVzZW50OmUuZm9yY2VNb3VudHx8YS51bnJlZihpc0luZGV0ZXJtaW5hdGUpKGEudW5yZWYobCkuc3RhdGUudmFsdWUpfHwhMD09PWEudW5yZWYobCkuc3RhdGUudmFsdWV9LHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoYS51bnJlZihmKSxhLm1lcmdlUHJvcHMoe3JlZjphLnVucmVmKHQpLCJkYXRhLXN0YXRlIjphLnVucmVmKGdldFN0YXRlKShhLnVucmVmKGwpLnN0YXRlLnZhbHVlKSwiZGF0YS1kaXNhYmxlZCI6YS51bnJlZihsKS5kaXNhYmxlZC52YWx1ZT8iIjp2b2lkIDAsc3R5bGU6e3BvaW50ZXJFdmVudHM6Im5vbmUifSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzfSxlLiRhdHRycykse2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJhcy1jaGlsZCIsImFzIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSk7Y29uc3QgWD17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQiLGNvbnRhaW5lcjoiZmxleCBpdGVtcy1jZW50ZXIiLGJhc2U6InJvdW5kZWQtc20gcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgb3ZlcmZsb3ctaGlkZGVuIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiIsaW5kaWNhdG9yOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzaXplLWZ1bGwgdGV4dC1pbnZlcnRlZCIsaWNvbjoic2hyaW5rLTAgc2l6ZS1mdWxsIix3cmFwcGVyOiJ3LWZ1bGwiLGxhYmVsOiJibG9jayBmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtcHJpbWFyeSIsaW5kaWNhdG9yOiJiZy1wcmltYXJ5In0sc2Vjb25kYXJ5OntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5IixpbmRpY2F0b3I6ImJnLXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2Jhc2U6ImZvY3VzLXZpc2libGU6b3V0bGluZS1zdWNjZXNzIixpbmRpY2F0b3I6ImJnLXN1Y2Nlc3MifSxpbmZvOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtaW5mbyIsaW5kaWNhdG9yOiJiZy1pbmZvIn0sd2FybmluZzp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXdhcm5pbmciLGluZGljYXRvcjoiYmctd2FybmluZyJ9LGVycm9yOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtZXJyb3IiLGluZGljYXRvcjoiYmctZXJyb3IifSxuZXV0cmFsOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtaW52ZXJ0ZWQiLGluZGljYXRvcjoiYmctaW52ZXJ0ZWQifX0sdmFyaWFudDp7bGlzdDp7cm9vdDoiIn0sY2FyZDp7cm9vdDoiYm9yZGVyIGJvcmRlci1tdXRlZCByb3VuZGVkLWxnIn19LGluZGljYXRvcjp7c3RhcnQ6e3Jvb3Q6ImZsZXgtcm93Iix3cmFwcGVyOiJtcy0yIn0sZW5kOntyb290OiJmbGV4LXJvdy1yZXZlcnNlIix3cmFwcGVyOiJtZS0yIn0saGlkZGVuOntiYXNlOiJzci1vbmx5Iix3cmFwcGVyOiJ0ZXh0LWNlbnRlciJ9fSxzaXplOnt4czp7YmFzZToic2l6ZS0zIixjb250YWluZXI6ImgtNCIsd3JhcHBlcjoidGV4dC14cyJ9LHNtOntiYXNlOiJzaXplLTMuNSIsY29udGFpbmVyOiJoLTQiLHdyYXBwZXI6InRleHQteHMifSxtZDp7YmFzZToic2l6ZS00Iixjb250YWluZXI6ImgtNSIsd3JhcHBlcjoidGV4dC1zbSJ9LGxnOntiYXNlOiJzaXplLTQuNSIsY29udGFpbmVyOiJoLTUiLHdyYXBwZXI6InRleHQtc20ifSx4bDp7YmFzZToic2l6ZS01Iixjb250YWluZXI6ImgtNiIsd3JhcHBlcjoidGV4dC1iYXNlIn19LHJlcXVpcmVkOnt0cnVlOntsYWJlbDoiYWZ0ZXI6Y29udGVudC1bJyonXSBhZnRlcjptcy0wLjUgYWZ0ZXI6dGV4dC1lcnJvciJ9fSxkaXNhYmxlZDp7dHJ1ZTp7cm9vdDoib3BhY2l0eS03NSIsYmFzZToiY3Vyc29yLW5vdC1hbGxvd2VkIixsYWJlbDoiY3Vyc29yLW5vdC1hbGxvd2VkIixkZXNjcmlwdGlvbjoiY3Vyc29yLW5vdC1hbGxvd2VkIn19LGNoZWNrZWQ6e3RydWU6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7c2l6ZToieHMiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJwLTIuNSJ9fSx7c2l6ZToic20iLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJwLTMifX0se3NpemU6Im1kIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC0zLjUifX0se3NpemU6ImxnIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC00In19LHtzaXplOiJ4bCIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6InAtNC41In19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoiaGFzLWRhdGEtW3N0YXRlPWNoZWNrZWRdOmJvcmRlci13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLWVycm9yIn19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItaW52ZXJ0ZWQifX0se3ZhcmlhbnQ6ImNhcmQiLGRpc2FibGVkOiEwLGNsYXNzOntyb290OiJjdXJzb3Itbm90LWFsbG93ZWQifX1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJsaXN0IixpbmRpY2F0b3I6InN0YXJ0In19LEo9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVQ2hlY2tib3giLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGluZGljYXRvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGluZGV0ZXJtaW5hdGVJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJ1ZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGZhbHNlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiY2hhbmdlIiwidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBsPWUscj1hLnVzZVNsb3RzKCksbz10LG49cygpLHY9aSgiY2hlY2tib3giLGwpLGI9ZCh1KGwsInJlcXVpcmVkIiwidmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJtb2RlbFZhbHVlIiwidHJ1ZVZhbHVlIiwiZmFsc2VWYWx1ZSIpLG8pLHtpZDp5LGVtaXRGb3JtQ2hhbmdlOmgsZW1pdEZvcm1JbnB1dDprLHNpemU6Zyxjb2xvcjp4LG5hbWU6dyxkaXNhYmxlZDpWLGFyaWFBdHRyczpDfT1jKGwpLEI9eS52YWx1ZT8/YS51c2VJZCgpLHt2YXJpYW50Ol99PXooImNoZWNrYm94IixsLFgsWyJ2YXJpYW50Il0pLHE9YS51c2VBdHRycygpLFM9YS5jb21wdXRlZCgoKT0+e2NvbnN0eyJkYXRhLXN0YXRlIjplLC4uLmF9PXE7cmV0dXJuIGF9KSxOPWEuY29tcHV0ZWQoKCk9PnAoe2V4dGVuZDpwKFgpLC4uLm4udWk/LmNoZWNrYm94fHx7fX0pKHtzaXplOmcudmFsdWUsY29sb3I6eC52YWx1ZSx2YXJpYW50Ol8udmFsdWUsaW5kaWNhdG9yOmwuaW5kaWNhdG9yLHJlcXVpcmVkOmwucmVxdWlyZWQsZGlzYWJsZWQ6Vi52YWx1ZX0pKTtmdW5jdGlvbiBvblVwZGF0ZShlKXtjb25zdCBhPW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTplfX0pO28oImNoYW5nZSIsYSksaCgpLGsoKX1yZXR1cm4odCxvLHMsaSk9PntvKEYoYS51bnJlZihmKSxhLm1lcmdlUHJvcHMoe2FzOiJsaXN0Ij09PWEudW5yZWYoXyk/ZS5hczphLnVucmVmKEkpLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpOLnZhbHVlLnJvb3Qoe2NsYXNzOlthLnVucmVmKHYpPy5yb290LGwuY2xhc3NdfSl9LGkpLHtkZWZhdWx0OmEud2l0aEN0eCgobCxvLHMsaSk9PntpZighbylyZXR1cm5bYS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6Ti52YWx1ZS5jb250YWluZXIoe2NsYXNzOmEudW5yZWYodik/LmNvbnRhaW5lcn0pfSxbYS5jcmVhdGVWTm9kZShhLnVucmVmKEgpLGEubWVyZ2VQcm9wcyh7aWQ6YS51bnJlZihCKX0sey4uLmEudW5yZWYoYiksLi4uUy52YWx1ZSwuLi5hLnVucmVmKEMpfSx7bmFtZTphLnVucmVmKHcpLGRpc2FibGVkOmEudW5yZWYoViksImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOk4udmFsdWUuYmFzZSh7Y2xhc3M6YS51bnJlZih2KT8uYmFzZX0pLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvblVwZGF0ZX0pLHtkZWZhdWx0OmEud2l0aEN0eCgoe3N0YXRlOnR9KT0+W2EuY3JlYXRlVk5vZGUoYS51bnJlZihRKSx7ImRhdGEtc2xvdCI6ImluZGljYXRvciIsY2xhc3M6Ti52YWx1ZS5pbmRpY2F0b3Ioe2NsYXNzOmEudW5yZWYodik/LmluZGljYXRvcn0pfSx7ZGVmYXVsdDphLndpdGhDdHgoKCk9PlsiaW5kZXRlcm1pbmF0ZSI9PT10PyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2sobSx7a2V5OjAsbmFtZTplLmluZGV0ZXJtaW5hdGVJY29ufHxhLnVucmVmKG4pLnVpLmljb25zLm1pbnVzLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKG0se2tleToxLG5hbWU6ZS5pY29ufHxhLnVucmVmKG4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXSksXzoxfSwxNixbImlkIiwibmFtZSIsImRpc2FibGVkIiwiY2xhc3MiXSldLDIpLGUubGFiZWx8fHIubGFiZWx8fGUuZGVzY3JpcHRpb258fHIuZGVzY3JpcHRpb24/KGEub3BlbkJsb2NrKCksYS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOk4udmFsdWUud3JhcHBlcih7Y2xhc3M6YS51bnJlZih2KT8ud3JhcHBlcn0pfSxbZS5sYWJlbHx8ci5sYWJlbD8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKGEucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImxpc3QiPT09YS51bnJlZihfKT9hLnVucmVmKEkpOiJwIikse2tleTowLGZvcjphLnVucmVmKEIpLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Ti52YWx1ZS5sYWJlbCh7Y2xhc3M6YS51bnJlZih2KT8ubGFiZWx9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmUubGFiZWx9LCgpPT5bYS5jcmVhdGVUZXh0Vk5vZGUoYS50b0Rpc3BsYXlTdHJpbmcoZS5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pKTphLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5kZXNjcmlwdGlvbnx8ci5kZXNjcmlwdGlvbj8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpOLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczphLnVucmVmKHYpPy5kZXNjcmlwdGlvbn0pfSxbYS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb259LCgpPT5bYS5jcmVhdGVUZXh0Vk5vZGUoYS50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldKV0sMikpOmEuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmEuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07byhgPGRpdiBkYXRhLXNsb3Q9ImNvbnRhaW5lciIgY2xhc3M9IiR7TShOLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6YS51bnJlZih2KT8uY29udGFpbmVyfSkpfSIke2l9PmApLG8oRihhLnVucmVmKEgpLGEubWVyZ2VQcm9wcyh7aWQ6YS51bnJlZihCKX0sey4uLmEudW5yZWYoYiksLi4uUy52YWx1ZSwuLi5hLnVucmVmKEMpfSx7bmFtZTphLnVucmVmKHcpLGRpc2FibGVkOmEudW5yZWYoViksImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOk4udmFsdWUuYmFzZSh7Y2xhc3M6YS51bnJlZih2KT8uYmFzZX0pLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvblVwZGF0ZX0pLHtkZWZhdWx0OmEud2l0aEN0eCgoe3N0YXRlOnR9LGwscixvKT0+e2lmKCFsKXJldHVyblthLmNyZWF0ZVZOb2RlKGEudW5yZWYoUSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOk4udmFsdWUuaW5kaWNhdG9yKHtjbGFzczphLnVucmVmKHYpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bImluZGV0ZXJtaW5hdGUiPT09dD8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKG0se2tleTowLG5hbWU6ZS5pbmRldGVybWluYXRlSWNvbnx8YS51bnJlZihuKS51aS5pY29ucy5taW51cywiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6Ti52YWx1ZS5pY29uKHtjbGFzczphLnVucmVmKHYpPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6KGEub3BlbkJsb2NrKCksYS5jcmVhdGVCbG9jayhtLHtrZXk6MSxuYW1lOmUuaWNvbnx8YS51bnJlZihuKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6Ti52YWx1ZS5pY29uKHtjbGFzczphLnVucmVmKHYpPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV07bChGKGEudW5yZWYoUSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOk4udmFsdWUuaW5kaWNhdG9yKHtjbGFzczphLnVucmVmKHYpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KChsLHIsbyxzKT0+e2lmKCFyKXJldHVyblsiaW5kZXRlcm1pbmF0ZSI9PT10PyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2sobSx7a2V5OjAsbmFtZTplLmluZGV0ZXJtaW5hdGVJY29ufHxhLnVucmVmKG4pLnVpLmljb25zLm1pbnVzLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKG0se2tleToxLG5hbWU6ZS5pY29ufHxhLnVucmVmKG4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKV07cihGKG0sImluZGV0ZXJtaW5hdGUiPT09dD97bmFtZTplLmluZGV0ZXJtaW5hdGVJY29ufHxhLnVucmVmKG4pLnVpLmljb25zLm1pbnVzLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX06e25hbWU6ZS5pY29ufHxhLnVucmVmKG4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCxvLHMpKX0pLF86Mn0scixvKSl9KSxfOjF9LHMsaSkpLG8oIjwvZGl2PiIpLGUubGFiZWx8fHIubGFiZWx8fGUuZGVzY3JpcHRpb258fHIuZGVzY3JpcHRpb24/KG8oYDxkaXYgZGF0YS1zbG90PSJ3cmFwcGVyIiBjbGFzcz0iJHtNKE4udmFsdWUud3JhcHBlcih7Y2xhc3M6YS51bnJlZih2KT8ud3JhcHBlcn0pKX0iJHtpfT5gKSxlLmxhYmVsfHxyLmxhYmVsP08obyxhLmNyZWF0ZVZOb2RlKGEucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImxpc3QiPT09YS51bnJlZihfKT9hLnVucmVmKEkpOiJwIikse2ZvcjphLnVucmVmKEIpLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Ti52YWx1ZS5sYWJlbCh7Y2xhc3M6YS51bnJlZih2KT8ubGFiZWx9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KChsLHIsbyxuKT0+e2lmKCFyKXJldHVyblthLnJlbmRlclNsb3QodC4kc2xvdHMsImxhYmVsIix7bGFiZWw6ZS5sYWJlbH0sKCk9PlthLmNyZWF0ZVRleHRWTm9kZShhLnRvRGlzcGxheVN0cmluZyhlLmxhYmVsKSwxKV0pXTtFKHQuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmUubGFiZWx9LCgpPT57cihgJHtLKGUubGFiZWwpfWApfSxyLG8sbil9KSxfOjN9KSxzLGkpOm8oIlx4M2MhLS0tLVx4M2UiKSxlLmRlc2NyaXB0aW9ufHxyLmRlc2NyaXB0aW9uPyhvKGA8cCBkYXRhLXNsb3Q9ImRlc2NyaXB0aW9uIiBjbGFzcz0iJHtNKE4udmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmEudW5yZWYodik/LmRlc2NyaXB0aW9ufSkpfSIke2l9PmApLEUodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7ZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbn0sKCk9PntvKGAke0soZS5kZXNjcmlwdGlvbil9YCl9LG8scyxpKSxvKCI8L3A+IikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCI8L2Rpdj4iKSk6bygiXHgzYyEtLS0tXHgzZSIpfSksXzozfSxzKSl9fX0pLFk9Si5zZXR1cDtKLnNldHVwPShlLHQpPT57Y29uc3QgbD1hLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQ2hlY2tib3gudnVlIiksWT9ZKGUsdCk6dm9pZCAwfTtjb25zdCBaPVsicmVhZCIsIndyaXRlIiwiZGVsZXRlIiwibWFuYWdlIl0sZWU9bmV3IFNldChbInVzZXI6aW1wZXJzb25hdGUiLCJzeXN0ZW06bWFuYWdlIiwic3VwcG9ydDptYW5hZ2UiLCJwcm9kdWN0OndyaXRlIiwicHJvZHVjdDpkZWxldGUiLCJwcm9kdWN0Om1hbmFnZSJdKSxhZT1uZXcgU2V0KFsidXNlciIsInByb2plY3QiLCJiaWxsaW5nIiwic2VsZmhvc3QiXS5mbGF0TWFwKGU9PloubWFwKGE9PmAke2V9OiR7YX1gKSkpLHRlPW5ldyBTZXQoW10pLGxlPXtyZWFkOiJWaWV3Iix3cml0ZToiQ3JlYXRlIGFuZCBlZGl0IixkZWxldGU6IkRlbGV0ZSIsbWFuYWdlOiJGdWxsIGNvbnRyb2wgb3ZlciIsaW1wZXJzb25hdGU6IkltcGVyc29uYXRlIn07ZnVuY3Rpb24gb3JnS2luZE9mKGUpe3JldHVybiBlZS5oYXMoZSk/InN5c3RlbSI6InRlbmFudCJ9ZnVuY3Rpb24gZGVmKGUpe2NvbnN0e3N1YmplY3Q6YSxhY3Rpb246dCxzY29wZTpsfT12KGUpLHI9YCR7bGVbdF0/P3R9ICR7YX1gO3JldHVybntrZXk6ZSxzdWJqZWN0OmEsYWN0aW9uOnQsc2NvcGU6bD8/bnVsbCxvcmdfa2luZDpvcmdLaW5kT2YoZSksZGVzY3JpcHRpb246InNlbGYiPT09bD9gJHtyfSAob3duIG9ubHkpYDpyfX1mdW5jdGlvbiBidWlsZFBlcm1pc3Npb25DYXRhbG9nKCl7cmV0dXJuWy4uLmFlLC4uLmVlLC4uLnRlXS5tYXAoZGVmKX1uZXcgU2V0KGJ1aWxkUGVybWlzc2lvbkNhdGFsb2coKS5tYXAoZT0+ZS5rZXkpKTtjb25zdCByZT1hLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJPcmdhbml6YXRpb25Sb2xlTW9kYWwiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW59LHJvbGU6e319LGVtaXRzOlsidXBkYXRlOm9wZW4iLCJzYXZlZCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IHI9ZSxzPXQsaT1uKCksZD1sKCksdT1idWlsZFBlcm1pc3Npb25DYXRhbG9nKCkuZmlsdGVyKGU9PiJ0ZW5hbnQiPT09ZS5vcmdfa2luZCksYz1hLnJlZigiIikscD1hLnJlZigiIiksbT1hLnJlZihbXSksZj1hLnJlZighMSk7ZnVuY3Rpb24gdG9nZ2xlUGVybWlzc2lvbihlLGEpe20udmFsdWU9YT9bLi4ubS52YWx1ZSxlXTptLnZhbHVlLmZpbHRlcihhPT5hIT09ZSl9YXN5bmMgZnVuY3Rpb24gc2F2ZSgpe2YudmFsdWU9ITA7dHJ5e3Iucm9sZT9hd2FpdCBpLnVwZGF0ZVJvbGUoci5yb2xlLmlkLHtuYW1lOmMudmFsdWUsZGVzY3JpcHRpb246cC52YWx1ZXx8dm9pZCAwLHBlcm1pc3Npb25zOm0udmFsdWV9KTphd2FpdCBpLmNyZWF0ZVJvbGUoe25hbWU6Yy52YWx1ZSxkZXNjcmlwdGlvbjpwLnZhbHVlfHx2b2lkIDAscGVybWlzc2lvbnM6bS52YWx1ZX0pLGQuYWRkKHt0aXRsZToiUm9sZSBzYXZlZCIsY29sb3I6InN1Y2Nlc3MifSkscygic2F2ZWQiKSxzKCJ1cGRhdGU6b3BlbiIsITEpfWNhdGNoKGUpe2NvbnN0IGE9ZTtkLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBzYXZlIHJvbGUiLGRlc2NyaXB0aW9uOmE/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtmLnZhbHVlPSExfX1yZXR1cm4gYS53YXRjaCgoKT0+ci5vcGVuLGU9PntlJiYoYy52YWx1ZT1yLnJvbGU/Lm5hbWU/PyIiLHAudmFsdWU9ci5yb2xlPy5kZXNjcmlwdGlvbj8/IiIsbS52YWx1ZT1yLnJvbGU/LnBlcm1pc3Npb25zP1suLi5yLnJvbGUucGVybWlzc2lvbnNdOltdKX0pLCh0LGwscixuKT0+e2NvbnN0IGk9VixkPUMsdj1KLGI9bztsKEYodyxhLm1lcmdlUHJvcHMoe29wZW46ZS5vcGVuLHRpdGxlOmUucm9sZT9gRWRpdCBSb2xlIOKAlCAke2Uucm9sZS5uYW1lfWA6Ik5ldyBSb2xlIiwib25VcGRhdGU6b3BlbiI6ZT0+cygidXBkYXRlOm9wZW4iLGUpfSxuKSx7Ym9keTphLndpdGhDdHgoKHQsbCxyLG8pPT57aWYoIWwpcmV0dXJuW2EuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTQifSxbYS5jcmVhdGVWTm9kZShpLHtsYWJlbDoiTmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoZCx7bW9kZWxWYWx1ZTphLnVucmVmKGMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5hLmlzUmVmKGMpP2MudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOiJlLmcuIEVkaXRvciIsZGlzYWJsZWQ6ISFlLnJvbGU/LmlzX3N5c3RlbSxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJkaXNhYmxlZCJdKV0pLF86MX0pLGEuY3JlYXRlVk5vZGUoaSx7bGFiZWw6IkRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5jcmVhdGVWTm9kZShkLHttb2RlbFZhbHVlOmEudW5yZWYocCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYocCk/cC52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6Ik9wdGlvbmFsIGRlc2NyaXB0aW9uIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhLmNyZWF0ZVZOb2RlKGkse2xhYmVsOiJQZXJtaXNzaW9ucyJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJncmlkIGdyaWQtY29scy0yIGdhcC0yIG1heC1oLTYwIG92ZXJmbG93LXktYXV0byJ9LFsoYS5vcGVuQmxvY2soITApLGEuY3JlYXRlQmxvY2soYS5GcmFnbWVudCxudWxsLGEucmVuZGVyTGlzdChhLnVucmVmKHUpLGU9PihhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2sodix7a2V5OmUua2V5LCJtb2RlbC12YWx1ZSI6YS51bnJlZihtKS5pbmNsdWRlcyhlLmtleSksbGFiZWw6ZS5rZXksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmE9PnRvZ2dsZVBlcm1pc3Npb24oZS5rZXksITA9PT1hKX0sbnVsbCw4LFsibW9kZWwtdmFsdWUiLCJsYWJlbCIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpKSwxMjgpKV0pXSksXzoxfSldKV07bChgPGRpdiBjbGFzcz0ic3BhY2UteS00IiR7b30+YCksbChGKGkse2xhYmVsOiJOYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6YS53aXRoQ3R4KCh0LGwscixvKT0+e2lmKCFsKXJldHVyblthLmNyZWF0ZVZOb2RlKGQse21vZGVsVmFsdWU6YS51bnJlZihjKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihjKT9jLnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiZS5nLiBFZGl0b3IiLGRpc2FibGVkOiEhZS5yb2xlPy5pc19zeXN0ZW0sY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldO2woRihkLHttb2RlbFZhbHVlOmEudW5yZWYoYyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYoYyk/Yy52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6ImUuZy4gRWRpdG9yIixkaXNhYmxlZDohIWUucm9sZT8uaXNfc3lzdGVtLGNsYXNzOiJ3LWZ1bGwifSxudWxsLHIsbykpfSksXzoxfSxyLG8pKSxsKEYoaSx7bGFiZWw6IkRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLHQsbCxyKT0+e2lmKCF0KXJldHVyblthLmNyZWF0ZVZOb2RlKGQse21vZGVsVmFsdWU6YS51bnJlZihwKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihwKT9wLnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChGKGQse21vZGVsVmFsdWU6YS51bnJlZihwKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihwKT9wLnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGwscikpfSksXzoxfSxyLG8pKSxsKEYoaSx7bGFiZWw6IlBlcm1pc3Npb25zIn0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLHQsbCxyKT0+e2lmKCF0KXJldHVyblthLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiBtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8ifSxbKGEub3BlbkJsb2NrKCEwKSxhLmNyZWF0ZUJsb2NrKGEuRnJhZ21lbnQsbnVsbCxhLnJlbmRlckxpc3QoYS51bnJlZih1KSxlPT4oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKHYse2tleTplLmtleSwibW9kZWwtdmFsdWUiOmEudW5yZWYobSkuaW5jbHVkZXMoZS5rZXkpLGxhYmVsOmUua2V5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjphPT50b2dnbGVQZXJtaXNzaW9uKGUua2V5LCEwPT09YSl9LG51bGwsOCxbIm1vZGVsLXZhbHVlIiwibGFiZWwiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pKSksMTI4KSldKV07dChgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiBtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8iJHtyfT5ceDNjIS0tWy0tXHgzZWApLFAoYS51bnJlZih1KSxlPT57dChGKHYse2tleTplLmtleSwibW9kZWwtdmFsdWUiOmEudW5yZWYobSkuaW5jbHVkZXMoZS5rZXkpLGxhYmVsOmUua2V5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjphPT50b2dnbGVQZXJtaXNzaW9uKGUua2V5LCEwPT09YSl9LG51bGwsbCxyKSl9KSx0KCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpfSksXzoxfSxyLG8pKSxsKCI8L2Rpdj4iKX0pLGZvb3RlcjphLndpdGhDdHgoKGUsdCxsLHIpPT57aWYoIXQpcmV0dXJuW2EuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIn0sW2EuY3JlYXRlVk5vZGUoYix7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnMoInVwZGF0ZTpvcGVuIiwhMSl9LG51bGwsOCxbIm9uQ2xpY2siXSksYS5jcmVhdGVWTm9kZShiLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzphLnVucmVmKGYpLG9uQ2xpY2s6ZT0+c2F2ZSgpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIiR7cn0+YCksdChGKGIse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5zKCJ1cGRhdGU6b3BlbiIsITEpfSxudWxsLGwscikpLHQoRihiLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzphLnVucmVmKGYpLG9uQ2xpY2s6ZT0+c2F2ZSgpfSxudWxsLGwscikpLHQoIjwvZGl2PiIpfSksXzoxfSxyKSl9fX0pLG9lPXJlLnNldHVwO3JlLnNldHVwPShlLHQpPT57Y29uc3QgbD1hLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL09yZ2FuaXphdGlvbi9Pcmdhbml6YXRpb25Sb2xlTW9kYWwudnVlIiksb2U/b2UoZSx0KTp2b2lkIDB9O2NvbnN0IG5lPU9iamVjdC5hc3NpZ24ocmUse19fbmFtZToiT3JnYW5pemF0aW9uUm9sZU1vZGFsIn0pLHNlPWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6InJvbGVzIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChzKXt0KHt0aXRsZToiUm9sZXMifSk7Y29uc3QgaT1uKCksZD1sKCkse2RhdGE6dSxyZWZyZXNoOmMsZXJyb3I6cH09cigib3JnLXJvbGVzIiwoKT0+aS5mZXRjaFJvbGVzKCkse2RlZmF1bHQ6KCk9PltdfSk7VShwKTtjb25zdCBtPWEucmVmKCExKSxmPWEucmVmKG51bGwpO2Z1bmN0aW9uIG9wZW5DcmVhdGUoKXtmLnZhbHVlPW51bGwsbS52YWx1ZT0hMH1mdW5jdGlvbiBvcGVuRWRpdChlKXtmLnZhbHVlPWUsbS52YWx1ZT0hMH1hc3luYyBmdW5jdGlvbiBoYW5kbGVEZWxldGVSb2xlKGUpe3RyeXthd2FpdCBpLmRlbGV0ZVJvbGUoZSksYXdhaXQgYygpfWNhdGNoKGUpe2NvbnN0IGE9ZTtkLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBkZWxldGUgcm9sZSIsZGVzY3JpcHRpb246YT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19cmV0dXJuKHQsbCxyLG4pPT57Y29uc3Qgcz1lLGk9bztsKGA8ZGl2JHtEKG4pfT5gKSxsKEYocyx7dGl0bGU6IlJvbGVzIixkZXNjcmlwdGlvbjoiTWFuYWdlIHJvbGVzIGFuZCB0aGVpciBwZXJtaXNzaW9ucy4iLHZhcmlhbnQ6Im5ha2VkIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6Im1iLTQifSx7ZGVmYXVsdDphLndpdGhDdHgoKGUsdCxsLHIpPT57aWYoIXQpcmV0dXJuW2EuY3JlYXRlVk5vZGUoaSx7bGFiZWw6Ik5ldyByb2xlIixpY29uOiJpLWx1Y2lkZS1wbHVzIixjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpvcGVuQ3JlYXRlfSldO3QoRihpLHtsYWJlbDoiTmV3IHJvbGUiLGljb246ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIixvbkNsaWNrOm9wZW5DcmVhdGV9LG51bGwsbCxyKSl9KSxfOjF9LHIpKSxsKEYocyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLHQsbCxyKT0+e2lmKCF0KXJldHVyblthLnVucmVmKHUpLmxlbmd0aD8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxbKGEub3BlbkJsb2NrKCEwKSxhLmNyZWF0ZUJsb2NrKGEuRnJhZ21lbnQsbnVsbCxhLnJlbmRlckxpc3QoYS51bnJlZih1KSxlPT4oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6ZS5pZCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTMgZ2FwLTQifSxbYS5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFthLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIn0sYS50b0Rpc3BsYXlTdHJpbmcoZS5uYW1lKSwxKSxlLmRlc2NyaXB0aW9uPyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soInAiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sYS50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSkpOmEuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxhLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1kaW1tZWQifSxhLnRvRGlzcGxheVN0cmluZyhlLnBlcm1pc3Npb25zLmxlbmd0aCkrIiBwZXJtaXNzaW9uIithLnRvRGlzcGxheVN0cmluZygxIT09ZS5wZXJtaXNzaW9ucy5sZW5ndGg/InMiOiIiKSwxKV0pLGEuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGdhcC0yIHNocmluay0wIn0sW2EuY3JlYXRlVk5vZGUoaSx7c2l6ZToic20iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtcGVuY2lsIixvbkNsaWNrOmE9Pm9wZW5FZGl0KGUpfSxudWxsLDgsWyJvbkNsaWNrIl0pLGUuaXNfc3lzdGVtP2EuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKGkse2tleTowLHNpemU6InNtIixjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS10cmFzaC0yIixvbkNsaWNrOmE9PmhhbmRsZURlbGV0ZVJvbGUoZS5pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSkpXSldKSkpLDEyOCkpXSkpOihhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJ0ZXh0LWNlbnRlciBweS04IHRleHQtbXV0ZWQgdGV4dC1zbSJ9LCIgTm8gY3VzdG9tIHJvbGVzIHlldC4gIikpXTthLnVucmVmKHUpLmxlbmd0aD8odChgPGRpdiBjbGFzcz0iZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiJHtyfT5ceDNjIS0tWy0tXHgzZWApLFAoYS51bnJlZih1KSxlPT57dChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTMgZ2FwLTQiJHtyfT48ZGl2JHtyfT48cCBjbGFzcz0iZm9udC1tZWRpdW0iJHtyfT4ke0soZS5uYW1lKX08L3A+YCksZS5kZXNjcmlwdGlvbj90KGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7cn0+JHtLKGUuZGVzY3JpcHRpb24pfTwvcD5gKTp0KCJceDNjIS0tLS1ceDNlIiksdChgPHAgY2xhc3M9InRleHQteHMgdGV4dC1kaW1tZWQiJHtyfT4ke0soZS5wZXJtaXNzaW9ucy5sZW5ndGgpfSBwZXJtaXNzaW9uJHtLKDEhPT1lLnBlcm1pc3Npb25zLmxlbmd0aD8icyI6IiIpfTwvcD48L2Rpdj48ZGl2IGNsYXNzPSJmbGV4IGdhcC0yIHNocmluay0wIiR7cn0+YCksdChGKGkse3NpemU6InNtIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLXBlbmNpbCIsb25DbGljazphPT5vcGVuRWRpdChlKX0sbnVsbCxsLHIpKSxlLmlzX3N5c3RlbT90KCJceDNjIS0tLS1ceDNlIik6dChGKGkse3NpemU6InNtIixjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS10cmFzaC0yIixvbkNsaWNrOmE9PmhhbmRsZURlbGV0ZVJvbGUoZS5pZCl9LG51bGwsbCxyKSksdCgiPC9kaXY+PC9kaXY+Iil9KSx0KCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpKTp0KGA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBweS04IHRleHQtbXV0ZWQgdGV4dC1zbSIke3J9PiBObyBjdXN0b20gcm9sZXMgeWV0LiA8L2Rpdj5gKX0pLF86MX0scikpLGwoRihuZSx7b3BlbjphLnVucmVmKG0pLCJvblVwZGF0ZTpvcGVuIjplPT5hLmlzUmVmKG0pP20udmFsdWU9ZTpudWxsLHJvbGU6YS51bnJlZihmKSxvblNhdmVkOmU9PmEudW5yZWYoYykoKX0sbnVsbCxyKSksbCgiPC9kaXY+Iil9fX0pLGllPXNlLnNldHVwO3NlLnNldHVwPShlLHQpPT57Y29uc3QgbD1hLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vcm9sZXMudnVlIiksaWU/aWUoZSx0KTp2b2lkIDB9O2V4cG9ydHtzZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm9sZXMtREpNRC1NX3QubWpzLm1hcAo=", "chunks/build/security-Ufzhmy0R.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHt2IGFzIGwsaCBhcyBvLGEgYXMgbixfIGFzIHIsYU0gYXMgcyx5IGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtvIGFzIGksZiBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3QgYz1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzZWN1cml0eSIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAoYyl7Y29uc3QgbT1vKCkscD1kKCksZj1uKCksdj1sLnJlZihtLmN1cnJlbnRVc2VyPy5wcmltYXJ5X3Bob25lPz8iIiksaD1sLnJlZighMSksZz1sLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gc2F2ZVBob25lKCl7aC52YWx1ZT0hMDt0cnl7YXdhaXQgbS51cGRhdGVQaG9uZU51bWJlcih2LnZhbHVlKSxmLmFkZCh7dGl0bGU6IlBob25lIHVwZGF0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2YuYWRkKHt0aXRsZToiRmFpbGVkIHRvIHVwZGF0ZSBwaG9uZSIsZGVzY3JpcHRpb246ZT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IiIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7aC52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gZGVsZXRlQWNjb3VudCgpe2cudmFsdWU9ITA7dHJ5e2F3YWl0IHAuZGVsZXRlQWNjb3VudCgpLGF3YWl0IHMoIi9hdXRoL2xvZ2luIil9Y2F0Y2goZSl7Zi5hZGQoe3RpdGxlOiJDYW5ub3QgZGVsZXRlIGFjY291bnQiLGRlc2NyaXB0aW9uOmU/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyIiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2cudmFsdWU9ITF9fXJldHVybihvLG4scyxkKT0+e2NvbnN0IGM9ZSxtPWEscD10LGY9cjtuKGA8ZGl2JHtpKGwubWVyZ2VQcm9wcyh7Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTYifSxkKSl9PjxkaXY+YCksbih1KGMse3RpdGxlOiJQaG9uZSBudW1iZXIiLGRlc2NyaXB0aW9uOiJVc2VkIGZvciBhY2NvdW50IHJlY292ZXJ5IGFuZCAyRkEuIix2YXJpYW50OiJuYWtlZCIsY2xhc3M6Im1iLTQifSxudWxsLHMpKSxuKHUoYyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxvKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKG0se25hbWU6InBob25lIixsYWJlbDoiUGhvbmUiLGRlc2NyaXB0aW9uOiJGb3JtYXQ6ICsxMjM0NTY3ODkwIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggZ2FwLTIifSxbbC5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOmwudW5yZWYodiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYodik/di52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6IisxMjM0NTY3ODkwIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSksbC5jcmVhdGVWTm9kZShmLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpsLnVucmVmKGgpLG9uQ2xpY2s6c2F2ZVBob25lfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9KV07YSh1KG0se25hbWU6InBob25lIixsYWJlbDoiUGhvbmUiLGRlc2NyaXB0aW9uOiJGb3JtYXQ6ICsxMjM0NTY3ODkwIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxvKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6bC51bnJlZih2KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZih2KT92LnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiKzEyMzQ1Njc4OTAifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKSxsLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJTYXZlIixsb2FkaW5nOmwudW5yZWYoaCksb25DbGljazpzYXZlUGhvbmV9LG51bGwsOCxbImxvYWRpbmciXSldKV07YShgPGRpdiBjbGFzcz0iZmxleCBnYXAtMiIke299PmApLGEodShwLHttb2RlbFZhbHVlOmwudW5yZWYodiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYodik/di52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6IisxMjM0NTY3ODkwIn0sbnVsbCx0LG8pKSxhKHUoZix7bGFiZWw6IlNhdmUiLGxvYWRpbmc6bC51bnJlZihoKSxvbkNsaWNrOnNhdmVQaG9uZX0sbnVsbCx0LG8pKSxhKCI8L2Rpdj4iKX0pLF86MX0sdCxvKSl9KSxfOjF9LHMpKSxuKCI8L2Rpdj48ZGl2PiIpLG4odShjLHt0aXRsZToiRGFuZ2VyIHpvbmUiLGRlc2NyaXB0aW9uOiJJcnJldmVyc2libGUgYWNjb3VudCBhY3Rpb25zLiIsdmFyaWFudDoibmFrZWQiLGNsYXNzOiJtYi00In0sbnVsbCxzKSksbih1KGMse3ZhcmlhbnQ6InN1YnRsZSIsdWk6e2NvbnRhaW5lcjoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00In19LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQsbyk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFtsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQifSwiIERlbGV0ZSBhY2NvdW50ICIpLGwuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBQZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgZGF0YS4gIildKSxsLmNyZWF0ZVZOb2RlKGYse2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsbGFiZWw6IkRlbGV0ZSBhY2NvdW50Iixsb2FkaW5nOmwudW5yZWYoZyksb25DbGljazpkZWxldGVBY2NvdW50fSxudWxsLDgsWyJsb2FkaW5nIl0pXTthKGA8ZGl2JHtvfT48cCBjbGFzcz0iZm9udC1tZWRpdW0gdGV4dC1oaWdobGlnaHRlZCIke299PiBEZWxldGUgYWNjb3VudCA8L3A+PHAgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCIke299PiBQZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgZGF0YS4gPC9wPjwvZGl2PmApLGEodShmLHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGxhYmVsOiJEZWxldGUgYWNjb3VudCIsbG9hZGluZzpsLnVucmVmKGcpLG9uQ2xpY2s6ZGVsZXRlQWNjb3VudH0sbnVsbCx0LG8pKX0pLF86MX0scykpLG4oIjwvZGl2PjwvZGl2PiIpfX19KSxtPWMuc2V0dXA7Yy5zZXR1cD0oZSxhKT0+e2NvbnN0IHQ9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHQubW9kdWxlc3x8KHQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvc2VjdXJpdHkudnVlIiksbT9tKGUsYSk6dm9pZCAwfTtleHBvcnR7YyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VjdXJpdHktVWZ6aG15MFIubWpzLm1hcAo=", "chunks/build/self-host-Buf4rlqd.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9BbGVydC1DVkI1WVh1ZS5tanMiO2ltcG9ydHt2IGFzIG8sdSBhcyBsLGEsaSBhcyByLF8gYXMgcywkIGFzIG59ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGN9ZnJvbSIuL0NhcmQtbm92Z3FSb3AubWpzIjtpbXBvcnR7XyBhcyBkfWZyb20iLi9CYWRnZS1CQjBLbE1RVi5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIHV9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgcH1mcm9tIi4vU2VsZWN0LURpYWlsZlVjLm1qcyI7aW1wb3J0e2YseiBhcyBtLHEgYXMgaCx0IGFzIHgseX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vXy9zaGFyZWQuZXNtLWJ1bmRsZXIubWpzIjtpbXBvcnQiLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0Ii4vUG9wcGVyQXJyb3ctQkV5V1VKaVEubWpzIjtpbXBvcnQiLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydCIuL2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzIjtpbXBvcnQiLi91c2VSZXNvbHZlZFZhcmlhbnRzLURoSHU2dlJLLm1qcyI7ZnVuY3Rpb24gdXNlU2VsZmhvc3RBcGkoKXtyZXR1cm57ZmV0Y2hTZWxmaG9zdFN0YXR1czpmdW5jdGlvbigpe3JldHVybiBuKCIvYXBpL3NlbGZob3N0L3N0YXR1cyIpfSxsaXN0Q2xvdWRmbGFyZUFjY291bnRzOmZ1bmN0aW9uKGUpe3JldHVybiBuKCIvYXBpL3NlbGZob3N0L2NmLWFjY291bnRzIix7bWV0aG9kOiJQT1NUIixib2R5Ont0b2tlbjplfX0pfSxkZXBsb3lTZWxmaG9zdDpmdW5jdGlvbihlKXtyZXR1cm4gbigiL2FwaS9zZWxmaG9zdC9kZXBsb3kiLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfSxkaXNjb25uZWN0U2VsZmhvc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbigiL2FwaS9zZWxmaG9zdC9kaXNjb25uZWN0Iix7bWV0aG9kOiJQT1NUIn0pfSxmZXRjaFNlbGZob3N0QXVkaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbigiL2FwaS9zZWxmaG9zdC9hdWRpdCIpfSxmZXRjaFNlbGZob3N0U2VjcmV0czpmdW5jdGlvbigpe3JldHVybiBuKCIvYXBpL3NlbGZob3N0L3NlY3JldHMiKX0scGF0Y2hTZWxmaG9zdFNlY3JldHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oIi9hcGkvc2VsZmhvc3Qvc2VjcmV0cyIse21ldGhvZDoiUEFUQ0giLGJvZHk6e3VwZGF0ZXM6ZX19KX0sdGVzdFNlbGZob3N0RW1haWw6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oIi9hcGkvc2VsZmhvc3QvdGVzdC1lbWFpbCIse21ldGhvZDoiUE9TVCIsYm9keTp7dG86ZX19KX19fWNvbnN0IGs9by5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZmhvc3RTZWNyZXRzQ2FyZCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3dvcmtlcnNEZXZVcmw6e319LHNldHVwKGUpe2NvbnN0IGw9ZSxuPWEoKSxpPXVzZVNlbGZob3N0QXBpKCkse2RhdGE6cCxyZWZyZXNoOm19PXIoInNlbGZob3N0LXNlY3JldHMiLCgpPT5pLmZldGNoU2VsZmhvc3RTZWNyZXRzKCkse2RlZmF1bHQ6KCk9Pm51bGx9KSxrPW8ucmVhY3RpdmUoe30pLHY9by5yZWYobnVsbCksZz1vLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1wLnZhbHVlPy5pdGVtcz8/W10sdD17c3lzdGVtOltdLG9hdXRoOltdLHNtdHA6W10scGF5bWVudHM6W10sc3VwcG9ydDpbXSxhdXRoOltdfTtmb3IoY29uc3QgbyBvZiBlKXRbby5jYXRlZ29yeV0ucHVzaChvKTtyZXR1cm4gdH0pLFY9e3N5c3RlbToiU3lzdGVtIChhdXRvLWdlbmVyYXRlZCkiLG9hdXRoOiJPQXV0aCBwcm92aWRlcnMiLHNtdHA6IkVtYWlsIChTTVRQKSIscGF5bWVudHM6IlBheW1lbnRzIixzdXBwb3J0OiJTdXBwb3J0IixhdXRoOiJBdXRoZW50aWNhdGlvbiJ9LEM9by5jb21wdXRlZCgoKT0+bC53b3JrZXJzRGV2VXJsP3tnb29nbGU6YCR7bC53b3JrZXJzRGV2VXJsfS9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2tgLGdpdGh1YjpgJHtsLndvcmtlcnNEZXZVcmx9L2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFja2B9Ontnb29nbGU6IiIsZ2l0aHViOiIifSk7YXN5bmMgZnVuY3Rpb24gc2F2ZShlKXtjb25zdCB0PWtbZV0/LnRyaW0oKTtpZih0KXt2LnZhbHVlPWU7dHJ5e2NvbnN0IG89YXdhaXQgaS5wYXRjaFNlbGZob3N0U2VjcmV0cyhbe2tleTplLHZhbHVlOnR9XSk7bi5hZGQoe3RpdGxlOmAke2V9IHNhdmVkYCxkZXNjcmlwdGlvbjpvLnB1c2hlZFRvQ2xvdWRmbGFyZT8iUHVzaGVkIHRvIGRlcGxveWVkIHdvcmtlci4iOiJTdG9yZWQuIFdpbGwgYXBwbHkgb24gbmV4dCBkZXBsb3kuIixjb2xvcjoic3VjY2VzcyJ9KSxrW2VdPSIiLGF3YWl0IG0oKX1jYXRjaChlKXtjb25zdCB0PWU7bi5hZGQoe3RpdGxlOiJTYXZlIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3YudmFsdWU9bnVsbH19ZWxzZSBuLmFkZCh7dGl0bGU6IlZhbHVlIGlzIGVtcHR5Iixjb2xvcjoid2FybmluZyJ9KX1hc3luYyBmdW5jdGlvbiBjb3B5Q2FsbGJhY2soZSl7YXdhaXQodm9pZCAwKS5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLG4uYWRkKHt0aXRsZToiQ2FsbGJhY2sgVVJMIGNvcGllZCIsY29sb3I6InN1Y2Nlc3MifSl9cmV0dXJuKGUsbCxhLHIpPT57Y29uc3Qgbj10LGk9cyxwPWQsbT11O2woZihjLHIse2hlYWRlcjpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgQ29uZmlndXJhdGlvbiAiKSxvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sIiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHNlY3JldHMgb24geW91ciBkZXBsb3llZCBXb3JrZXIuIEF1dG8tZ2VuZXJhdGVkIHZhbHVlcyBhcmUgc3RhYmxlIGFjcm9zcyByZWRlcGxveXMuICIpXTt0KGA8cCBjbGFzcz0iZm9udC1zZW1pYm9sZCIke2F9PiBDb25maWd1cmF0aW9uIDwvcD48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIG10LTEiJHthfT4gRW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCBzZWNyZXRzIG9uIHlvdXIgZGVwbG95ZWQgV29ya2VyLiBBdXRvLWdlbmVyYXRlZCB2YWx1ZXMgYXJlIHN0YWJsZSBhY3Jvc3MgcmVkZXBsb3lzLiA8L3A+YCl9KSxkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InNwYWNlLXktNiJ9LFsoby5vcGVuQmxvY2soITApLG8uY3JlYXRlQmxvY2soby5GcmFnbWVudCxudWxsLG8ucmVuZGVyTGlzdChvLnVucmVmKGcpLChlLHQpPT5vLndpdGhEaXJlY3RpdmVzKChvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soImRpdiIse2tleTp0fSxbby5jcmVhdGVWTm9kZSgiaDMiLHtjbGFzczoidGV4dC1zbSBmb250LXNlbWlib2xkIG1iLTIifSxvLnRvRGlzcGxheVN0cmluZyhWW3RdKSwxKSwib2F1dGgiPT09dCYmKG8udW5yZWYoQykuZ29vZ2xlfHxvLnVucmVmKEMpLmdpdGh1Yik/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhuLHtrZXk6MCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixpY29uOiJpLWx1Y2lkZS1pbmZvIixjbGFzczoibWItMyJ9LHtkZXNjcmlwdGlvbjpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMifSwiIFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6ICIpLG8uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJtdC0yIHNwYWNlLXktMSJ9LFtvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14cyBmb250LW1vbm8ifSxbby5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkdvb2dsZToiKSxvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6ImZsZXgtMSB0cnVuY2F0ZSJ9LG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoQykuZ29vZ2xlKSwxKSxvLmNyZWF0ZVZOb2RlKGkse3NpemU6InhzIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtY29weSIsb25DbGljazplPT5jb3B5Q2FsbGJhY2soby51bnJlZihDKS5nb29nbGUpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJHaXRIdWI6Iiksby5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKEMpLmdpdGh1YiksMSksby5jcmVhdGVWTm9kZShpLHtzaXplOiJ4cyIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLWNvcHkiLG9uQ2xpY2s6ZT0+Y29weUNhbGxiYWNrKG8udW5yZWYoQykuZ2l0aHViKX0sbnVsbCw4LFsib25DbGljayJdKV0pXSldKSxfOjF9KSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTMifSxbKG8ub3BlbkJsb2NrKCEwKSxvLmNyZWF0ZUJsb2NrKG8uRnJhZ21lbnQsbnVsbCxvLnJlbmRlckxpc3QoZSxlPT4oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6ZS5rZXksY2xhc3M6ImJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkIHAtMyJ9LFtvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMifSxbby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXgtMSBtaW4tdy0wIn0sW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6InRleHQteHMgZm9udC1tb25vIn0sby50b0Rpc3BsYXlTdHJpbmcoZS5rZXkpLDEpLGUuaXNTZXQ/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhwLHtrZXk6MCxjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVGV4dFZOb2RlKCIgU2V0ICIpXSksXzoxfSkpOihvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2socCx7a2V5OjEsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToieHMifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZSgiIE5vdCBzZXQgIildKSxfOjF9KSksZS5pc0F1dG8/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhwLHtrZXk6Mixjb2xvcjoiaW5mbyIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVGV4dFZOb2RlKCIgQXV0byAiKV0pLF86MX0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sby50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldKV0pLGUuaXNBdXRvP28uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoibXQtMyBmbGV4IGdhcC0yIn0sW28uY3JlYXRlVk5vZGUobSx7bW9kZWxWYWx1ZTpvLnVucmVmKGspW2Uua2V5XSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dD0+by51bnJlZihrKVtlLmtleV09dCx0eXBlOiJzZWNyZXRfdGV4dCI9PT1lLnR5cGU/InBhc3N3b3JkIjoidGV4dCIscGxhY2Vob2xkZXI6ZS5pc1NldD8iUGFzdGUgbmV3IHZhbHVlIHRvIG92ZXJ3cml0ZSI6IkVudGVyIHZhbHVlIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uS2V5dXA6by53aXRoS2V5cyh0PT5zYXZlKGUua2V5KSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsInR5cGUiLCJwbGFjZWhvbGRlciIsIm9uS2V5dXAiXSksby5jcmVhdGVWTm9kZShpLHtsb2FkaW5nOm8udW5yZWYodik9PT1lLmtleSxkaXNhYmxlZDohby51bnJlZihrKVtlLmtleV0/LnRyaW0oKSxzaXplOiJzbSIsb25DbGljazp0PT5zYXZlKGUua2V5KX0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoIiBTYXZlICIpXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIiwib25DbGljayJdKV0pKV0pKSksMTI4KSldKV0pKSxbW28udlNob3csZS5sZW5ndGhdXSkpLDEyOCkpXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktNiIke2F9Plx4M2MhLS1bLS1ceDNlYCkseChvLnVucmVmKGcpLChlLHIpPT57dChgPGRpdiBzdHlsZT0iJHt5KGUubGVuZ3RoP251bGw6e2Rpc3BsYXk6Im5vbmUifSl9IiR7YX0+PGgzIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbWItMiIke2F9PiR7aChWW3JdKX08L2gzPmApLCJvYXV0aCI9PT1yJiYoby51bnJlZihDKS5nb29nbGV8fG8udW5yZWYoQykuZ2l0aHViKT90KGYobix7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsaWNvbjoiaS1sdWNpZGUtaW5mbyIsY2xhc3M6Im1iLTMifSx7ZGVzY3JpcHRpb246by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMifSwiIFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6ICIpLG8uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJtdC0yIHNwYWNlLXktMSJ9LFtvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14cyBmb250LW1vbm8ifSxbby5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkdvb2dsZToiKSxvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6ImZsZXgtMSB0cnVuY2F0ZSJ9LG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoQykuZ29vZ2xlKSwxKSxvLmNyZWF0ZVZOb2RlKGkse3NpemU6InhzIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtY29weSIsb25DbGljazplPT5jb3B5Q2FsbGJhY2soby51bnJlZihDKS5nb29nbGUpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJHaXRIdWI6Iiksby5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKEMpLmdpdGh1YiksMSksby5jcmVhdGVWTm9kZShpLHtzaXplOiJ4cyIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLWNvcHkiLG9uQ2xpY2s6ZT0+Y29weUNhbGxiYWNrKG8udW5yZWYoQykuZ2l0aHViKX0sbnVsbCw4LFsib25DbGljayJdKV0pXSldO3QoYDxwIGNsYXNzPSJ0ZXh0LXhzIiR7YX0+IFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6IDwvcD48ZGl2IGNsYXNzPSJtdC0yIHNwYWNlLXktMSIke2F9PjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIiR7YX0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHthfT5Hb29nbGU6PC9zcGFuPjxjb2RlIGNsYXNzPSJmbGV4LTEgdHJ1bmNhdGUiJHthfT4ke2goby51bnJlZihDKS5nb29nbGUpfTwvY29kZT5gKSx0KGYoaSx7c2l6ZToieHMiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS1jb3B5IixvbkNsaWNrOmU9PmNvcHlDYWxsYmFjayhvLnVucmVmKEMpLmdvb2dsZSl9LG51bGwsbCxhKSksdChgPC9kaXY+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14cyBmb250LW1vbm8iJHthfT48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke2F9PkdpdEh1Yjo8L3NwYW4+PGNvZGUgY2xhc3M9ImZsZXgtMSB0cnVuY2F0ZSIke2F9PiR7aChvLnVucmVmKEMpLmdpdGh1Yil9PC9jb2RlPmApLHQoZihpLHtzaXplOiJ4cyIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLWNvcHkiLG9uQ2xpY2s6ZT0+Y29weUNhbGxiYWNrKG8udW5yZWYoQykuZ2l0aHViKX0sbnVsbCxsLGEpKSx0KCI8L2Rpdj48L2Rpdj4iKX0pLF86Mn0sbCxhKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoYDxkaXYgY2xhc3M9InNwYWNlLXktMyIke2F9Plx4M2MhLS1bLS1ceDNlYCkseChlLGU9Pnt0KGA8ZGl2IGNsYXNzPSJib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZCBwLTMiJHthfT48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtMyIke2F9PjxkaXYgY2xhc3M9ImZsZXgtMSBtaW4tdy0wIiR7YX0+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiJHthfT48Y29kZSBjbGFzcz0idGV4dC14cyBmb250LW1vbm8iJHthfT4ke2goZS5rZXkpfTwvY29kZT5gKSxlLmlzU2V0P3QoZihwLHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBTZXQgIildO3QoIiBTZXQgIil9KSxfOjJ9LGwsYSkpOnQoZihwLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBOb3Qgc2V0ICIpXTt0KCIgTm90IHNldCAiKX0pLF86Mn0sbCxhKSksZS5pc0F1dG8/dChmKHAse2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVRleHRWTm9kZSgiIEF1dG8gIildO3QoIiBBdXRvICIpfSksXzoyfSxsLGEpKTp0KCJceDNjIS0tLS1ceDNlIiksdChgPC9kaXY+PHAgY2xhc3M9InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIiR7YX0+JHtoKGUuZGVzY3JpcHRpb24pfTwvcD48L2Rpdj48L2Rpdj5gKSxlLmlzQXV0bz90KCJceDNjIS0tLS1ceDNlIik6KHQoYDxkaXYgY2xhc3M9Im10LTMgZmxleCBnYXAtMiIke2F9PmApLHQoZihtLHttb2RlbFZhbHVlOm8udW5yZWYoaylbZS5rZXldLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5vLnVucmVmKGspW2Uua2V5XT10LHR5cGU6InNlY3JldF90ZXh0Ij09PWUudHlwZT8icGFzc3dvcmQiOiJ0ZXh0IixwbGFjZWhvbGRlcjplLmlzU2V0PyJQYXN0ZSBuZXcgdmFsdWUgdG8gb3ZlcndyaXRlIjoiRW50ZXIgdmFsdWUiLGNsYXNzOiJmbGV4LTEgZm9udC1tb25vIixhdXRvY29tcGxldGU6Im9mZiIsb25LZXl1cDp0PT5zYXZlKGUua2V5KX0sbnVsbCxsLGEpKSx0KGYoaSx7bG9hZGluZzpvLnVucmVmKHYpPT09ZS5rZXksZGlzYWJsZWQ6IW8udW5yZWYoaylbZS5rZXldPy50cmltKCksc2l6ZToic20iLG9uQ2xpY2s6dD0+c2F2ZShlLmtleSl9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBTYXZlICIpXTt0KCIgU2F2ZSAiKX0pLF86Mn0sbCxhKSksdCgiPC9kaXY+IikpLHQoIjwvZGl2PiIpfSksdCgiXHgzYyEtLV0tLVx4M2U8L2Rpdj48L2Rpdj4iKX0pLHQoIlx4M2MhLS1dLS1ceDNlPC9kaXY+Iil9KSxfOjF9LGEpKX19fSksdj1rLnNldHVwO2suc2V0dXA9KGUsdCk9Pntjb25zdCBsPW8udXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3NlbGZob3N0L2FwcC9jb21wb25lbnRzL1NlbGZob3N0L1NlbGZob3N0U2VjcmV0c0NhcmQudnVlIiksdj92KGUsdCk6dm9pZCAwfTtjb25zdCBnPU9iamVjdC5hc3NpZ24oayx7X19uYW1lOiJTZWxmaG9zdFNlY3JldHNDYXJkIn0pLFY9Imh0dHBzOi8vZGFzaC5jbG91ZGZsYXJlLmNvbS9wcm9maWxlL2FwaS10b2tlbnMvY3JlYXRlIixDPW8uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6InNlbGYtaG9zdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobil7bCh7dGl0bGU6IlNlbGYtaG9zdGluZyJ9KTtjb25zdCB4PWEoKSx5PXVzZVNlbGZob3N0QXBpKCksaz1vLnJlZigiIiksdj1vLnJlZighMSksQz1vLnJlZighMSksTj1vLnJlZighMSksdz1vLnJlZihbXSksYj1vLnJlZih2b2lkIDApLHtkYXRhOl8scmVmcmVzaDpTfT1yKCJzZWxmaG9zdC1zdGF0dXMiLCgpPT55LmZldGNoU2VsZmhvc3RTdGF0dXMoKSx7ZGVmYXVsdDooKT0+bnVsbH0pLCQ9by5jb21wdXRlZCgoKT0+e2NvbnN0IGU9Xy52YWx1ZT8uc3RhdHVzO3JldHVybiJkZXBsb3llZCI9PT1lPyJzdWNjZXNzIjoiZmFpbGVkIj09PWU/ImVycm9yIjoid2FybmluZyJ9KSxEPW8uY29tcHV0ZWQoKCk9Pntjb25zdCBlPV8udmFsdWU/LmNmX3Rva2VuX2V4cGlyZXNfYXQ7cmV0dXJuIGU/TWF0aC5mbG9vcigobmV3IERhdGUoZSkuZ2V0VGltZSgpLURhdGUubm93KCkpLzg2NGU1KTpudWxsfSk7YXN5bmMgZnVuY3Rpb24gbG9hZEFjY291bnRzRm9yVG9rZW4oKXtjb25zdCBlPWsudmFsdWUudHJpbSgpO2lmKGUpe04udmFsdWU9ITA7dHJ5e2NvbnN0IHQ9YXdhaXQgeS5saXN0Q2xvdWRmbGFyZUFjY291bnRzKGUpO3cudmFsdWU9dC5hY2NvdW50cyxiLnZhbHVlPTE9PT13LnZhbHVlLmxlbmd0aD93LnZhbHVlWzBdLmlkOnZvaWQgMH1jYXRjaChlKXtjb25zdCB0PWU7eC5hZGQoe3RpdGxlOiJDb3VsZCBub3QgcmVhZCBhY2NvdW50cyBmcm9tIHRoaXMgdG9rZW4iLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJWZXJpZnkgdGhlIHRva2VuIGhhcyBBY2NvdW50IFNldHRpbmdzOiBSZWFkLiIsY29sb3I6ImVycm9yIn0pLHcudmFsdWU9W10sYi52YWx1ZT12b2lkIDB9ZmluYWxseXtOLnZhbHVlPSExfX19YXN5bmMgZnVuY3Rpb24gZGVwbG95KCl7di52YWx1ZT0hMDt0cnl7Y29uc3QgZT1rLnZhbHVlLnRyaW0oKXx8dm9pZCAwO2lmKGUmJncudmFsdWUubGVuZ3RoPjEmJiFiLnZhbHVlKXJldHVybiB2b2lkIHguYWRkKHt0aXRsZToiUGljayBhIENsb3VkZmxhcmUgYWNjb3VudCIsY29sb3I6Indhcm5pbmcifSk7Y29uc3QgdD1hd2FpdCB5LmRlcGxveVNlbGZob3N0KHt0b2tlbjplLGFjY291bnRfaWQ6Yi52YWx1ZX0pO3guYWRkKHt0aXRsZTpgRGVwbG95ZWQgJHt0LnZlcnNpb259YCxkZXNjcmlwdGlvbjp0LnVybCxjb2xvcjoic3VjY2VzcyIsaWNvbjoiaS1sdWNpZGUtY2hlY2stY2lyY2xlIn0pLGsudmFsdWU9IiIsdy52YWx1ZT1bXSxiLnZhbHVlPXZvaWQgMCxhd2FpdCBTKCl9Y2F0Y2goZSl7Y29uc3QgdD1lO2lmKCJtdWx0aXBsZV9hY2NvdW50cyI9PT10Py5kYXRhPy5kYXRhPy5jb2RlJiZ0LmRhdGEuZGF0YS5hY2NvdW50cylyZXR1cm4gdy52YWx1ZT10LmRhdGEuZGF0YS5hY2NvdW50cyxiLnZhbHVlPXZvaWQgMCx2b2lkIHguYWRkKHt0aXRsZToiTXVsdGlwbGUgQ2xvdWRmbGFyZSBhY2NvdW50cyIsZGVzY3JpcHRpb246IlBpY2sgd2hpY2ggYWNjb3VudCB0byBkZXBsb3kgaW50byBiZWxvdywgdGhlbiBjbGljayBEZXBsb3kgYWdhaW4uIixjb2xvcjoid2FybmluZyJ9KTt4LmFkZCh7dGl0bGU6IkRlcGxveSBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/Lm1lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IiLGljb246ImktbHVjaWRlLWFsZXJ0LXRyaWFuZ2xlIn0pfWZpbmFsbHl7di52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdCgpe0MudmFsdWU9ITA7dHJ5e2F3YWl0IHkuZGlzY29ubmVjdFNlbGZob3N0KCkseC5hZGQoe3RpdGxlOiJEaXNjb25uZWN0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pLHcudmFsdWU9W10sYi52YWx1ZT12b2lkIDAsYXdhaXQgUygpfWNhdGNoKGUpe2NvbnN0IHQ9ZTt4LmFkZCh7dGl0bGU6IkRpc2Nvbm5lY3QgZmFpbGVkIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e0MudmFsdWU9ITF9fWNvbnN0IFQ9by5jb21wdXRlZCgoKT0+dy52YWx1ZS5tYXAoZT0+KHtsYWJlbDpgJHtlLm5hbWV9IOKAlCAke2UuaWQuc2xpY2UoMCw4KX3igKZgLHZhbHVlOmUuaWR9KSkpO3JldHVybihsLGEscixuKT0+e2NvbnN0IHg9dCx5PXMsUz1jLEI9ZCxBPWksUj11LFU9cDthKGYoZSxvLm1lcmdlUHJvcHMoe2lkOiJzZWxmLWhvc3QifSxuKSx7aGVhZGVyOm8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InB4LTQgcHktMyBib3JkZXItYiBib3JkZXItZGVmYXVsdCJ9LFtvLmNyZWF0ZVZOb2RlKCJoMSIse2NsYXNzOiJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQifSwiIFNlbGYtaG9zdGluZyAiKSxvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LCIgRGVwbG95IHRoaXMgYXBwbGljYXRpb24gdG8geW91ciBvd24gQ2xvdWRmbGFyZSBhY2NvdW50LiAiKV0pXTt0KGA8ZGl2IGNsYXNzPSJweC00IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQiJHthfT48aDEgY2xhc3M9InRleHQtbGcgZm9udC1zZW1pYm9sZCIke2F9PiBTZWxmLWhvc3RpbmcgPC9oMT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7YX0+IERlcGxveSB0aGlzIGFwcGxpY2F0aW9uIHRvIHlvdXIgb3duIENsb3VkZmxhcmUgYWNjb3VudC4gPC9wPjwvZGl2PmApfSksYm9keTpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJtYXgtdy0yeGwgbXgtYXV0byBwLTYgc3BhY2UteS02In0sW28udW5yZWYoXyk/LnVwZGF0ZV9hdmFpbGFibGU/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayh4LHtrZXk6MCxjb2xvcjoid2FybmluZyIsaWNvbjoiaS1sdWNpZGUtcmVmcmVzaC1jdyIsdGl0bGU6IlVwZGF0ZSBhdmFpbGFibGUiLGRlc2NyaXB0aW9uOmBOZXcgdmVyc2lvbiAke28udW5yZWYoXykubGF0ZXN0X3ZlcnNpb259IGlzIGF2YWlsYWJsZSAoZGVwbG95ZWQ6ICR7by51bnJlZihfKS5kZXBsb3llZF92ZXJzaW9ufSlgfSx7YWN0aW9uczpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKHkse2xvYWRpbmc6by51bnJlZih2KSxjb2xvcjoid2FybmluZyIsc2l6ZToic20iLG9uQ2xpY2s6ZGVwbG95fSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZSgiIFVwZGF0ZSAiKV0pLF86MX0sOCxbImxvYWRpbmciXSldKSxfOjF9LDgsWyJkZXNjcmlwdGlvbiJdKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG51bGwhPT1vLnVucmVmKEQpJiZvLnVucmVmKEQpPD0xND8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKHgse2tleToxLGNvbG9yOiJ3YXJuaW5nIixpY29uOiJpLWx1Y2lkZS1jbG9jayIsdGl0bGU6IkNsb3VkZmxhcmUgdG9rZW4gZXhwaXJpbmcgc29vbiIsZGVzY3JpcHRpb246YFlvdXIgc3RvcmVkIHRva2VuIGV4cGlyZXMgaW4gJHtvLnVucmVmKEQpfSBkYXkocykuIFBhc3RlIGEgbmV3IHRva2VuIGFuZCByZWRlcGxveSB0byByZWZyZXNoIGl0LmB9LG51bGwsOCxbImRlc2NyaXB0aW9uIl0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby51bnJlZihfKT8uc3RhdHVzJiYiaWRsZSIhPT1vLnVucmVmKF8pLnN0YXR1cz8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKFMse2tleToyfSx7aGVhZGVyOm8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbby5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIn0sIiBEZXBsb3ltZW50ICIpLG8uY3JlYXRlVk5vZGUoQix7Y29sb3I6by51bnJlZigkKSx2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZShvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKV0pXSksZm9vdGVyOm8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoeSx7bG9hZGluZzpvLnVucmVmKEMpLGNvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsc2l6ZToic20iLG9uQ2xpY2s6ZGlzY29ubmVjdH0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoIiBEaXNjb25uZWN0ICIpXSksXzoxfSw4LFsibG9hZGluZyJdKV0pLGRlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InNwYWNlLXktMiB0ZXh0LXNtIn0sW28udW5yZWYoXykud29ya2Vyc19kZXZfdXJsPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soInAiLHtrZXk6MH0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJVUkw6Iiksby5jcmVhdGVWTm9kZSgiYSIse2hyZWY6by51bnJlZihfKS53b3JrZXJzX2Rldl91cmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIG1sLTEifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLndvcmtlcnNfZGV2X3VybCksOSxbImhyZWYiXSldKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbj8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjF9LFtvLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVmVyc2lvbjoiKSxvLmNyZWF0ZVRleHRWTm9kZSgiICIrby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS5kZXBsb3llZF92ZXJzaW9uKSwxKV0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby51bnJlZihfKS5jZl9hY2NvdW50X2lkPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soInAiLHtrZXk6Mn0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJDbG91ZGZsYXJlIGFjY291bnQ6Iiksby5jcmVhdGVUZXh0Vk5vZGUoKSxvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6InRleHQteHMifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLmNmX2FjY291bnRfaWQpLDEpXSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxvLnVucmVmKF8pLmxhc3RfZXJyb3I/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jaygicCIse2tleTozLGNsYXNzOiJ0ZXh0LWVycm9yIn0sby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS5sYXN0X2Vycm9yKSwxKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjF9KSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhnLHtrZXk6Mywid29ya2Vycy1kZXYtdXJsIjpvLnVucmVmKF8pLndvcmtlcnNfZGV2X3VybH0sbnVsbCw4LFsid29ya2Vycy1kZXYtdXJsIl0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby5jcmVhdGVWTm9kZShTLG51bGwse2hlYWRlcjpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSxvLnRvRGlzcGxheVN0cmluZygiZGVwbG95ZWQiPT09by51bnJlZihfKT8uc3RhdHVzPyJSZWRlcGxveSI6IkRlcGxveSB0byB5b3VyIENsb3VkZmxhcmUgYWNjb3VudCIpLDEpXSksZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS00In0sW28uY3JlYXRlVk5vZGUoImRldGFpbHMiLHtjbGFzczoidGV4dC1zbSJ9LFtvLmNyZWF0ZVZOb2RlKCJzdW1tYXJ5Iix7Y2xhc3M6ImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUifSwiIEhvdyBkbyBJIGdldCBhIENsb3VkZmxhcmUgQVBJIHRva2VuPyAiKSxvLmNyZWF0ZVZOb2RlKCJvbCIse2NsYXNzOiJtdC0yIGxpc3QtZGVjaW1hbCBwbC02IHNwYWNlLXktMSB0ZXh0LW11dGVkIn0sW28uY3JlYXRlVk5vZGUoImxpIixudWxsLFtvLmNyZWF0ZVRleHRWTm9kZSgiIEdvIHRvICIpLG8uY3JlYXRlVk5vZGUoImEiLHtocmVmOlYsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIn0sIiBDbG91ZGZsYXJlIOKGkiBNeSBQcm9maWxlIOKGkiBBUEkgVG9rZW5zIOKGkiBDcmVhdGUgVG9rZW4gIildKSxvLmNyZWF0ZVZOb2RlKCJsaSIsbnVsbCxbby5jcmVhdGVUZXh0Vk5vZGUoIkNob29zZSAiKSxvLmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwsIkNyZWF0ZSBDdXN0b20gVG9rZW4iKV0pLG8uY3JlYXRlVk5vZGUoImxpIixudWxsLFtvLmNyZWF0ZVRleHRWTm9kZSgiIEFkZCB0aGVzZSBwZXJtaXNzaW9ucyAoYWxsICIpLG8uY3JlYXRlVk5vZGUoInN0cm9uZyIsbnVsbCwiRWRpdCIpLG8uY3JlYXRlVGV4dFZOb2RlKCIgdW5sZXNzIG5vdGVkKTogV29ya2VycyBTY3JpcHRzLCBXb3JrZXJzIEtWIFN0b3JhZ2UsIFdvcmtlcnMgUjIgU3RvcmFnZSwgRDEsIEFjY291bnQgU2V0dGluZ3MgKFJlYWQpLCBVc2VyIERldGFpbHMgKFJlYWQpICIpXSksby5jcmVhdGVWTm9kZSgibGkiLG51bGwsIkFjY291bnQgUmVzb3VyY2VzOiBpbmNsdWRlIGFsbCBhY2NvdW50cyAob3IgcGljayBvbmUpIiksby5jcmVhdGVWTm9kZSgibGkiLG51bGwsIkNvbnRpbnVlIOKGkiBDcmVhdGUgVG9rZW4g4oaSIGNvcHkgdGhlIHRva2VuIChzaG93biBvbmNlKSIpXSldKSxvLmNyZWF0ZVZOb2RlKEEse2xhYmVsOiJDbG91ZGZsYXJlIEFQSSBUb2tlbiIsaGVscDoiTGVhdmUgYmxhbmsgdG8gcmVkZXBsb3kgdXNpbmcgdGhlIHN0b3JlZCB0b2tlbi4ifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKFIse21vZGVsVmFsdWU6by51bnJlZihrKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihrKT9rLnZhbHVlPWU6bnVsbCx0eXBlOiJwYXNzd29yZCIscGxhY2Vob2xkZXI6IuKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAoiIsY2xhc3M6InctZnVsbCBmb250LW1vbm8iLGF1dG9jb21wbGV0ZToib2ZmIixvbkJsdXI6bG9hZEFjY291bnRzRm9yVG9rZW59LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksby51bnJlZih3KS5sZW5ndGg+MD8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKEEse2tleTowLGxhYmVsOiJDbG91ZGZsYXJlIGFjY291bnQiLGhlbHA6MT09PW8udW5yZWYodykubGVuZ3RoPyJBdXRvLXNlbGVjdGVkICh0aGlzIHRva2VuIGhhcyBhY2Nlc3MgdG8gb25lIGFjY291bnQpLiI6IlBpY2sgd2hpY2ggYWNjb3VudCB0byBkZXBsb3kgaW50by4ifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKFUse21vZGVsVmFsdWU6by51bnJlZihiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCxpdGVtczpvLnVucmVmKFQpLGxvYWRpbmc6by51bnJlZihOKSxkaXNhYmxlZDoxPT09by51bnJlZih3KS5sZW5ndGgscGxhY2Vob2xkZXI6IlNlbGVjdCBhbiBhY2NvdW50IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyIsImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pLF86MX0sOCxbImhlbHAiXSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxvLmNyZWF0ZVZOb2RlKHkse2xvYWRpbmc6by51bnJlZih2KSxkaXNhYmxlZDoiZGVwbG95aW5nIj09PW8udW5yZWYoXyk/LnN0YXR1cyxvbkNsaWNrOmRlcGxveX0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoby50b0Rpc3BsYXlTdHJpbmcoImRlcGxveWVkIj09PW8udW5yZWYoXyk/LnN0YXR1cz8iUmVkZXBsb3kiOiJEZXBsb3kiKSwxKV0pLF86MX0sOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pXSksXzoxfSldKV07dChgPGRpdiBjbGFzcz0ibWF4LXctMnhsIG14LWF1dG8gcC02IHNwYWNlLXktNiIke2F9PmApLG8udW5yZWYoXyk/LnVwZGF0ZV9hdmFpbGFibGU/dChmKHgse2NvbG9yOiJ3YXJuaW5nIixpY29uOiJpLWx1Y2lkZS1yZWZyZXNoLWN3Iix0aXRsZToiVXBkYXRlIGF2YWlsYWJsZSIsZGVzY3JpcHRpb246YE5ldyB2ZXJzaW9uICR7by51bnJlZihfKS5sYXRlc3RfdmVyc2lvbn0gaXMgYXZhaWxhYmxlIChkZXBsb3llZDogJHtvLnVucmVmKF8pLmRlcGxveWVkX3ZlcnNpb259KWB9LHthY3Rpb25zOm8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSh5LHtsb2FkaW5nOm8udW5yZWYodiksY29sb3I6Indhcm5pbmciLHNpemU6InNtIixvbkNsaWNrOmRlcGxveX0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoIiBVcGRhdGUgIildKSxfOjF9LDgsWyJsb2FkaW5nIl0pXTt0KGYoeSx7bG9hZGluZzpvLnVucmVmKHYpLGNvbG9yOiJ3YXJuaW5nIixzaXplOiJzbSIsb25DbGljazpkZXBsb3l9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBVcGRhdGUgIildO3QoIiBVcGRhdGUgIil9KSxfOjF9LGwsYSkpfSksXzoxfSxsLGEpKTp0KCJceDNjIS0tLS1ceDNlIiksbnVsbCE9PW8udW5yZWYoRCkmJm8udW5yZWYoRCk8PTE0P3QoZih4LHtjb2xvcjoid2FybmluZyIsaWNvbjoiaS1sdWNpZGUtY2xvY2siLHRpdGxlOiJDbG91ZGZsYXJlIHRva2VuIGV4cGlyaW5nIHNvb24iLGRlc2NyaXB0aW9uOmBZb3VyIHN0b3JlZCB0b2tlbiBleHBpcmVzIGluICR7by51bnJlZihEKX0gZGF5KHMpLiBQYXN0ZSBhIG5ldyB0b2tlbiBhbmQgcmVkZXBsb3kgdG8gcmVmcmVzaCBpdC5gfSxudWxsLGwsYSkpOnQoIlx4M2MhLS0tLVx4M2UiKSxvLnVucmVmKF8pPy5zdGF0dXMmJiJpZGxlIiE9PW8udW5yZWYoXykuc3RhdHVzP3QoZihTLG51bGwse2hlYWRlcjpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbby5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIn0sIiBEZXBsb3ltZW50ICIpLG8uY3JlYXRlVk5vZGUoQix7Y29sb3I6by51bnJlZigkKSx2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZShvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iJHthfT48cCBjbGFzcz0iZm9udC1zZW1pYm9sZCIke2F9PiBEZXBsb3ltZW50IDwvcD5gKSx0KGYoQix7Y29sb3I6by51bnJlZigkKSx2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVGV4dFZOb2RlKG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoXykuc3RhdHVzKSwxKV07dChgJHtoKG8udW5yZWYoXykuc3RhdHVzKX1gKX0pLF86MX0sbCxhKSksdCgiPC9kaXY+Iil9KSxmb290ZXI6by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKHkse2xvYWRpbmc6by51bnJlZihDKSxjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLHNpemU6InNtIixvbkNsaWNrOmRpc2Nvbm5lY3R9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVGV4dFZOb2RlKCIgRGlzY29ubmVjdCAiKV0pLF86MX0sOCxbImxvYWRpbmciXSldO3QoZih5LHtsb2FkaW5nOm8udW5yZWYoQyksY29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixzaXplOiJzbSIsb25DbGljazpkaXNjb25uZWN0fSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVGV4dFZOb2RlKCIgRGlzY29ubmVjdCAiKV07dCgiIERpc2Nvbm5lY3QgIil9KSxfOjF9LGwsYSkpfSksZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTIgdGV4dC1zbSJ9LFtvLnVucmVmKF8pLndvcmtlcnNfZGV2X3VybD8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjB9LFtvLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVVJMOiIpLG8uY3JlYXRlVk5vZGUoImEiLHtocmVmOm8udW5yZWYoXykud29ya2Vyc19kZXZfdXJsLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSBtbC0xIn0sby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS53b3JrZXJzX2Rldl91cmwpLDksWyJocmVmIl0pXSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxvLnVucmVmKF8pLmRlcGxveWVkX3ZlcnNpb24/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jaygicCIse2tleToxfSxbby5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIlZlcnNpb246Iiksby5jcmVhdGVUZXh0Vk5vZGUoIiAiK28udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbiksMSldKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8udW5yZWYoXykuY2ZfYWNjb3VudF9pZD8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjJ9LFtvLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiQ2xvdWRmbGFyZSBhY2NvdW50OiIpLG8uY3JlYXRlVGV4dFZOb2RlKCksby5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJ0ZXh0LXhzIn0sby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS5jZl9hY2NvdW50X2lkKSwxKV0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby51bnJlZihfKS5sYXN0X2Vycm9yPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soInAiLHtrZXk6MyxjbGFzczoidGV4dC1lcnJvciJ9LG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoXykubGFzdF9lcnJvciksMSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTt0KGA8ZGl2IGNsYXNzPSJzcGFjZS15LTIgdGV4dC1zbSIke2F9PmApLG8udW5yZWYoXykud29ya2Vyc19kZXZfdXJsP3QoYDxwJHthfT48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke2F9PlVSTDo8L3NwYW4+PGEke20oImhyZWYiLG8udW5yZWYoXykud29ya2Vyc19kZXZfdXJsKX0gdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGNsYXNzPSJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIG1sLTEiJHthfT4ke2goby51bnJlZihfKS53b3JrZXJzX2Rldl91cmwpfTwvYT48L3A+YCk6dCgiXHgzYyEtLS0tXHgzZSIpLG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbj90KGA8cCR7YX0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHthfT5WZXJzaW9uOjwvc3Bhbj4gJHtoKG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbil9PC9wPmApOnQoIlx4M2MhLS0tLVx4M2UiKSxvLnVucmVmKF8pLmNmX2FjY291bnRfaWQ/dChgPHAke2F9PjxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIiR7YX0+Q2xvdWRmbGFyZSBhY2NvdW50Ojwvc3Bhbj4gPGNvZGUgY2xhc3M9InRleHQteHMiJHthfT4ke2goby51bnJlZihfKS5jZl9hY2NvdW50X2lkKX08L2NvZGU+PC9wPmApOnQoIlx4M2MhLS0tLVx4M2UiKSxvLnVucmVmKF8pLmxhc3RfZXJyb3I/dChgPHAgY2xhc3M9InRleHQtZXJyb3IiJHthfT4ke2goby51bnJlZihfKS5sYXN0X2Vycm9yKX08L3A+YCk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoIjwvZGl2PiIpfSksXzoxfSxsLGEpKTp0KCJceDNjIS0tLS1ceDNlIiksImRlcGxveWVkIj09PW8udW5yZWYoXyk/LnN0YXR1cz90KGYoZyx7IndvcmtlcnMtZGV2LXVybCI6by51bnJlZihfKS53b3JrZXJzX2Rldl91cmx9LG51bGwsbCxhKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoZihTLG51bGwse2hlYWRlcjpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LG8udG9EaXNwbGF5U3RyaW5nKCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/IlJlZGVwbG95IjoiRGVwbG95IHRvIHlvdXIgQ2xvdWRmbGFyZSBhY2NvdW50IiksMSldO3QoYDxwIGNsYXNzPSJmb250LXNlbWlib2xkIiR7YX0+JHtoKCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/IlJlZGVwbG95IjoiRGVwbG95IHRvIHlvdXIgQ2xvdWRmbGFyZSBhY2NvdW50Iil9PC9wPmApfSksZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTQifSxbby5jcmVhdGVWTm9kZSgiZGV0YWlscyIse2NsYXNzOiJ0ZXh0LXNtIn0sW28uY3JlYXRlVk5vZGUoInN1bW1hcnkiLHtjbGFzczoiY3Vyc29yLXBvaW50ZXIgdGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSJ9LCIgSG93IGRvIEkgZ2V0IGEgQ2xvdWRmbGFyZSBBUEkgdG9rZW4/ICIpLG8uY3JlYXRlVk5vZGUoIm9sIix7Y2xhc3M6Im10LTIgbGlzdC1kZWNpbWFsIHBsLTYgc3BhY2UteS0xIHRleHQtbXV0ZWQifSxbby5jcmVhdGVWTm9kZSgibGkiLG51bGwsW28uY3JlYXRlVGV4dFZOb2RlKCIgR28gdG8gIiksby5jcmVhdGVWTm9kZSgiYSIse2hyZWY6Vix0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciIsY2xhc3M6InRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUifSwiIENsb3VkZmxhcmUg4oaSIE15IFByb2ZpbGUg4oaSIEFQSSBUb2tlbnMg4oaSIENyZWF0ZSBUb2tlbiAiKV0pLG8uY3JlYXRlVk5vZGUoImxpIixudWxsLFtvLmNyZWF0ZVRleHRWTm9kZSgiQ2hvb3NlICIpLG8uY3JlYXRlVk5vZGUoInN0cm9uZyIsbnVsbCwiQ3JlYXRlIEN1c3RvbSBUb2tlbiIpXSksby5jcmVhdGVWTm9kZSgibGkiLG51bGwsW28uY3JlYXRlVGV4dFZOb2RlKCIgQWRkIHRoZXNlIHBlcm1pc3Npb25zIChhbGwgIiksby5jcmVhdGVWTm9kZSgic3Ryb25nIixudWxsLCJFZGl0Iiksby5jcmVhdGVUZXh0Vk5vZGUoIiB1bmxlc3Mgbm90ZWQpOiBXb3JrZXJzIFNjcmlwdHMsIFdvcmtlcnMgS1YgU3RvcmFnZSwgV29ya2VycyBSMiBTdG9yYWdlLCBEMSwgQWNjb3VudCBTZXR0aW5ncyAoUmVhZCksIFVzZXIgRGV0YWlscyAoUmVhZCkgIildKSxvLmNyZWF0ZVZOb2RlKCJsaSIsbnVsbCwiQWNjb3VudCBSZXNvdXJjZXM6IGluY2x1ZGUgYWxsIGFjY291bnRzIChvciBwaWNrIG9uZSkiKSxvLmNyZWF0ZVZOb2RlKCJsaSIsbnVsbCwiQ29udGludWUg4oaSIENyZWF0ZSBUb2tlbiDihpIgY29weSB0aGUgdG9rZW4gKHNob3duIG9uY2UpIildKV0pLG8uY3JlYXRlVk5vZGUoQSx7bGFiZWw6IkNsb3VkZmxhcmUgQVBJIFRva2VuIixoZWxwOiJMZWF2ZSBibGFuayB0byByZWRlcGxveSB1c2luZyB0aGUgc3RvcmVkIHRva2VuLiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoUix7bW9kZWxWYWx1ZTpvLnVucmVmKGspLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLmlzUmVmKGspP2sudmFsdWU9ZTpudWxsLHR5cGU6InBhc3N3b3JkIixwbGFjZWhvbGRlcjoi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCiIixjbGFzczoidy1mdWxsIGZvbnQtbW9ubyIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uQmx1cjpsb2FkQWNjb3VudHNGb3JUb2tlbn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLnVucmVmKHcpLmxlbmd0aD4wPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soQSx7a2V5OjAsbGFiZWw6IkNsb3VkZmxhcmUgYWNjb3VudCIsaGVscDoxPT09by51bnJlZih3KS5sZW5ndGg/IkF1dG8tc2VsZWN0ZWQgKHRoaXMgdG9rZW4gaGFzIGFjY2VzcyB0byBvbmUgYWNjb3VudCkuIjoiUGljayB3aGljaCBhY2NvdW50IHRvIGRlcGxveSBpbnRvLiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoVSx7bW9kZWxWYWx1ZTpvLnVucmVmKGIpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLmlzUmVmKGIpP2IudmFsdWU9ZTpudWxsLGl0ZW1zOm8udW5yZWYoVCksbG9hZGluZzpvLnVucmVmKE4pLGRpc2FibGVkOjE9PT1vLnVucmVmKHcpLmxlbmd0aCxwbGFjZWhvbGRlcjoiU2VsZWN0IGFuIGFjY291bnQiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIiwibG9hZGluZyIsImRpc2FibGVkIl0pXSksXzoxfSw4LFsiaGVscCJdKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8uY3JlYXRlVk5vZGUoeSx7bG9hZGluZzpvLnVucmVmKHYpLGRpc2FibGVkOiJkZXBsb3lpbmciPT09by51bnJlZihfKT8uc3RhdHVzLG9uQ2xpY2s6ZGVwbG95fSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZShvLnRvRGlzcGxheVN0cmluZygiZGVwbG95ZWQiPT09by51bnJlZihfKT8uc3RhdHVzPyJSZWRlcGxveSI6IkRlcGxveSIpLDEpXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktNCIke2F9PjxkZXRhaWxzIGNsYXNzPSJ0ZXh0LXNtIiR7YX0+PHN1bW1hcnkgY2xhc3M9ImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUiJHthfT4gSG93IGRvIEkgZ2V0IGEgQ2xvdWRmbGFyZSBBUEkgdG9rZW4/IDwvc3VtbWFyeT48b2wgY2xhc3M9Im10LTIgbGlzdC1kZWNpbWFsIHBsLTYgc3BhY2UteS0xIHRleHQtbXV0ZWQiJHthfT48bGkke2F9PiBHbyB0byA8YSR7bSgiaHJlZiIsVil9IHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBjbGFzcz0idGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSIke2F9PiBDbG91ZGZsYXJlIOKGkiBNeSBQcm9maWxlIOKGkiBBUEkgVG9rZW5zIOKGkiBDcmVhdGUgVG9rZW4gPC9hPjwvbGk+PGxpJHthfT5DaG9vc2UgPHN0cm9uZyR7YX0+Q3JlYXRlIEN1c3RvbSBUb2tlbjwvc3Ryb25nPjwvbGk+PGxpJHthfT4gQWRkIHRoZXNlIHBlcm1pc3Npb25zIChhbGwgPHN0cm9uZyR7YX0+RWRpdDwvc3Ryb25nPiB1bmxlc3Mgbm90ZWQpOiBXb3JrZXJzIFNjcmlwdHMsIFdvcmtlcnMgS1YgU3RvcmFnZSwgV29ya2VycyBSMiBTdG9yYWdlLCBEMSwgQWNjb3VudCBTZXR0aW5ncyAoUmVhZCksIFVzZXIgRGV0YWlscyAoUmVhZCkgPC9saT48bGkke2F9PkFjY291bnQgUmVzb3VyY2VzOiBpbmNsdWRlIGFsbCBhY2NvdW50cyAob3IgcGljayBvbmUpPC9saT48bGkke2F9PkNvbnRpbnVlIOKGkiBDcmVhdGUgVG9rZW4g4oaSIGNvcHkgdGhlIHRva2VuIChzaG93biBvbmNlKTwvbGk+PC9vbD48L2RldGFpbHM+YCksdChmKEEse2xhYmVsOiJDbG91ZGZsYXJlIEFQSSBUb2tlbiIsaGVscDoiTGVhdmUgYmxhbmsgdG8gcmVkZXBsb3kgdXNpbmcgdGhlIHN0b3JlZCB0b2tlbi4ifSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoUix7bW9kZWxWYWx1ZTpvLnVucmVmKGspLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLmlzUmVmKGspP2sudmFsdWU9ZTpudWxsLHR5cGU6InBhc3N3b3JkIixwbGFjZWhvbGRlcjoi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCiIixjbGFzczoidy1mdWxsIGZvbnQtbW9ubyIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uQmx1cjpsb2FkQWNjb3VudHNGb3JUb2tlbn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoZihSLHttb2RlbFZhbHVlOm8udW5yZWYoayksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8uaXNSZWYoayk/ay52YWx1ZT1lOm51bGwsdHlwZToicGFzc3dvcmQiLHBsYWNlaG9sZGVyOiLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKIiLGNsYXNzOiJ3LWZ1bGwgZm9udC1tb25vIixhdXRvY29tcGxldGU6Im9mZiIsb25CbHVyOmxvYWRBY2NvdW50c0ZvclRva2VufSxudWxsLGwsYSkpfSksXzoxfSxsLGEpKSxvLnVucmVmKHcpLmxlbmd0aD4wP3QoZihBLHtsYWJlbDoiQ2xvdWRmbGFyZSBhY2NvdW50IixoZWxwOjE9PT1vLnVucmVmKHcpLmxlbmd0aD8iQXV0by1zZWxlY3RlZCAodGhpcyB0b2tlbiBoYXMgYWNjZXNzIHRvIG9uZSBhY2NvdW50KS4iOiJQaWNrIHdoaWNoIGFjY291bnQgdG8gZGVwbG95IGludG8uIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKFUse21vZGVsVmFsdWU6by51bnJlZihiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCxpdGVtczpvLnVucmVmKFQpLGxvYWRpbmc6by51bnJlZihOKSxkaXNhYmxlZDoxPT09by51bnJlZih3KS5sZW5ndGgscGxhY2Vob2xkZXI6IlNlbGVjdCBhbiBhY2NvdW50IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyIsImxvYWRpbmciLCJkaXNhYmxlZCJdKV07dChmKFUse21vZGVsVmFsdWU6by51bnJlZihiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCxpdGVtczpvLnVucmVmKFQpLGxvYWRpbmc6by51bnJlZihOKSxkaXNhYmxlZDoxPT09by51bnJlZih3KS5sZW5ndGgscGxhY2Vob2xkZXI6IlNlbGVjdCBhbiBhY2NvdW50IixjbGFzczoidy1mdWxsIn0sbnVsbCxsLGEpKX0pLF86MX0sbCxhKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoZih5LHtsb2FkaW5nOm8udW5yZWYodiksZGlzYWJsZWQ6ImRlcGxveWluZyI9PT1vLnVucmVmKF8pPy5zdGF0dXMsb25DbGljazpkZXBsb3l9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoby50b0Rpc3BsYXlTdHJpbmcoImRlcGxveWVkIj09PW8udW5yZWYoXyk/LnN0YXR1cz8iUmVkZXBsb3kiOiJEZXBsb3kiKSwxKV07dChgJHtoKCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/IlJlZGVwbG95IjoiRGVwbG95Iil9YCl9KSxfOjF9LGwsYSkpLHQoIjwvZGl2PiIpfSksXzoxfSxsLGEpKSx0KCI8L2Rpdj4iKX0pLF86MX0scikpfX19KSxOPUMuc2V0dXA7Qy5zZXR1cD0oZSx0KT0+e2NvbnN0IGw9by51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGwubW9kdWxlc3x8KGwubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiKSxOP04oZSx0KTp2b2lkIDB9O2V4cG9ydHtDIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zZWxmLWhvc3QtQnVmNHJscWQubWpzLm1hcAo=", "chunks/build/server.mjs": "Z2xvYmFsVGhpcy5faW1wb3J0TWV0YV89Z2xvYmFsVGhpcy5faW1wb3J0TWV0YV98fHt1cmw6ImZpbGU6Ly8vX2VudHJ5LmpzIixlbnY6e319O2ltcG9ydHthQyBhcyBlLGFEIGFzIGMsWiBhcyBkLGFFIGFzIGgsYUYgYXMgdixhRyBhcyBiLFkgYXMgeSxhSCBhcyBFLGFJIGFzIGssYUogYXMgXyxhSyBhcyBULGFMIGFzIE4sYU0gYXMgTyxhTiBhcyBSLGF6IGFzIE0sYU8gYXMgRCxhUCBhcyBMLGFyIGFzICQsYVEgYXMgRixhUiBhcyBWLGFTIGFzIHEsYyBhcyBVLGFUIGFzIFcsYVUgYXMgS31mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e3IgYXMgWSxpIGFzIGVlLGQgYXMgdGUsdyBhcyBuZSxoIGFzIG9lLGMgYXMgcmUsYSBhcyBhZSx1IGFzIGllLHMgYXMgc2UsYiBhcyBsZSxlIGFzIGNlLG4gYXMgdWUscCBhcyBkZSxmIGFzIHBlLGcgYXMgZmUsaiBhcyBtZSxrIGFzIGhlLGwgYXMgZ2UsbSBhcyB2ZSxvIGFzIGJlLHEgYXMgeWUsdCBhcyB4ZSx2IGFzIFNlLHggYXMgRWUseSBhcyB3ZX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydHtOIGFzIGtlLGcgYXMgQ2UsbiBhcyBfZSx4IGFzIFRlLGEgYXMgTmUsXyBhcyBBZSxJIGFzIE9lLEEgYXMgSWUsRSBhcyBSZSxjIGFzIFBlLEMgYXMgTWUsYiBhcyBEZSxxIGFzIEJlLHogYXMgTGUsVCBhcyBqZSwkIGFzICRlLFcgYXMgRmUsYTAgYXMgVmUsYTEgYXMgemUsbSBhcyBxZSxhMiBhcyBVZSxhMyBhcyBIZX1mcm9tIi4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7dmFyIEdlPXtleHBvcnRzOnt9fSxXZT17fTtjb25zdCBYZT1TeW1ib2woIiIpLEtlPVN5bWJvbCgiIiksSmU9U3ltYm9sKCIiKSxRZT1TeW1ib2woIiIpLFllPVN5bWJvbCgiIiksWmU9U3ltYm9sKCIiKSxldD1TeW1ib2woIiIpLG50PVN5bWJvbCgiIiksb3Q9U3ltYm9sKCIiKSxydD1TeW1ib2woIiIpLGl0PVN5bWJvbCgiIiksc3Q9U3ltYm9sKCIiKSxjdD1TeW1ib2woIiIpLHV0PVN5bWJvbCgiIiksZHQ9U3ltYm9sKCIiKSxwdD1TeW1ib2woIiIpLGZ0PVN5bWJvbCgiIiksbXQ9U3ltYm9sKCIiKSxndD1TeW1ib2woIiIpLHZ0PVN5bWJvbCgiIiksYnQ9U3ltYm9sKCIiKSx5dD1TeW1ib2woIiIpLHh0PVN5bWJvbCgiIiksU3Q9U3ltYm9sKCIiKSxFdD1TeW1ib2woIiIpLHd0PVN5bWJvbCgiIiksa3Q9U3ltYm9sKCIiKSxDdD1TeW1ib2woIiIpLF90PVN5bWJvbCgiIiksVHQ9U3ltYm9sKCIiKSxOdD1TeW1ib2woIiIpLEF0PVN5bWJvbCgiIiksT3Q9U3ltYm9sKCIiKSxJdD1TeW1ib2woIiIpLFJ0PVN5bWJvbCgiIiksUHQ9U3ltYm9sKCIiKSxNdD1TeW1ib2woIiIpLER0PVN5bWJvbCgiIiksQnQ9U3ltYm9sKCIiKSxMdD17W1hlXToiRnJhZ21lbnQiLFtLZV06IlRlbGVwb3J0IixbSmVdOiJTdXNwZW5zZSIsW1FlXToiS2VlcEFsaXZlIixbWWVdOiJCYXNlVHJhbnNpdGlvbiIsW1plXToib3BlbkJsb2NrIixbZXRdOiJjcmVhdGVCbG9jayIsW250XToiY3JlYXRlRWxlbWVudEJsb2NrIixbb3RdOiJjcmVhdGVWTm9kZSIsW3J0XToiY3JlYXRlRWxlbWVudFZOb2RlIixbaXRdOiJjcmVhdGVDb21tZW50Vk5vZGUiLFtzdF06ImNyZWF0ZVRleHRWTm9kZSIsW2N0XToiY3JlYXRlU3RhdGljVk5vZGUiLFt1dF06InJlc29sdmVDb21wb25lbnQiLFtkdF06InJlc29sdmVEeW5hbWljQ29tcG9uZW50IixbcHRdOiJyZXNvbHZlRGlyZWN0aXZlIixbZnRdOiJyZXNvbHZlRmlsdGVyIixbbXRdOiJ3aXRoRGlyZWN0aXZlcyIsW2d0XToicmVuZGVyTGlzdCIsW3Z0XToicmVuZGVyU2xvdCIsW2J0XToiY3JlYXRlU2xvdHMiLFt5dF06InRvRGlzcGxheVN0cmluZyIsW3h0XToibWVyZ2VQcm9wcyIsW1N0XToibm9ybWFsaXplQ2xhc3MiLFtFdF06Im5vcm1hbGl6ZVN0eWxlIixbd3RdOiJub3JtYWxpemVQcm9wcyIsW2t0XToiZ3VhcmRSZWFjdGl2ZVByb3BzIixbQ3RdOiJ0b0hhbmRsZXJzIixbX3RdOiJjYW1lbGl6ZSIsW1R0XToiY2FwaXRhbGl6ZSIsW050XToidG9IYW5kbGVyS2V5IixbQXRdOiJzZXRCbG9ja1RyYWNraW5nIixbT3RdOiJwdXNoU2NvcGVJZCIsW0l0XToicG9wU2NvcGVJZCIsW1J0XToid2l0aEN0eCIsW1B0XToidW5yZWYiLFtNdF06ImlzUmVmIixbRHRdOiJ3aXRoTWVtbyIsW0J0XToiaXNNZW1vU2FtZSJ9O2Z1bmN0aW9uIHJlZ2lzdGVyUnVudGltZUhlbHBlcnMoZSl7T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKS5mb3JFYWNoKGM9PntMdFtjXT1lW2NdfSl9Y29uc3QganQ9e3N0YXJ0OntsaW5lOjEsY29sdW1uOjEsb2Zmc2V0OjB9LGVuZDp7bGluZToxLGNvbHVtbjoxLG9mZnNldDowfSxzb3VyY2U6IiJ9O2Z1bmN0aW9uIGNyZWF0ZVJvb3QoZSxjPSIiKXtyZXR1cm57dHlwZTowLHNvdXJjZTpjLGNoaWxkcmVuOmUsaGVscGVyczpuZXcgU2V0LGNvbXBvbmVudHM6W10sZGlyZWN0aXZlczpbXSxob2lzdHM6W10saW1wb3J0czpbXSxjYWNoZWQ6W10sdGVtcHM6MCxjb2RlZ2VuTm9kZTp2b2lkIDAsbG9jOmp0fX1mdW5jdGlvbiBjcmVhdGVWTm9kZUNhbGwoZSxjLGQsaCx2LGIseSxFPSExLGs9ITEsXz0hMSxUPWp0KXtyZXR1cm4gZSYmKEU/KGUuaGVscGVyKFplKSxlLmhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGUuaW5TU1IsXykpKTplLmhlbHBlcihnZXRWTm9kZUhlbHBlcihlLmluU1NSLF8pKSx5JiZlLmhlbHBlcihtdCkpLHt0eXBlOjEzLHRhZzpjLHByb3BzOmQsY2hpbGRyZW46aCxwYXRjaEZsYWc6dixkeW5hbWljUHJvcHM6YixkaXJlY3RpdmVzOnksaXNCbG9jazpFLGRpc2FibGVUcmFja2luZzprLGlzQ29tcG9uZW50Ol8sbG9jOlR9fWZ1bmN0aW9uIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihlLGM9anQpe3JldHVybnt0eXBlOjE3LGxvYzpjLGVsZW1lbnRzOmV9fWZ1bmN0aW9uIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZSxjPWp0KXtyZXR1cm57dHlwZToxNSxsb2M6Yyxwcm9wZXJ0aWVzOmV9fWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFByb3BlcnR5KGUsYyl7cmV0dXJue3R5cGU6MTYsbG9jOmp0LGtleTpfZShlKT9jcmVhdGVTaW1wbGVFeHByZXNzaW9uKGUsITApOmUsdmFsdWU6Y319ZnVuY3Rpb24gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihlLGM9ITEsZD1qdCxoPTApe3JldHVybnt0eXBlOjQsbG9jOmQsY29udGVudDplLGlzU3RhdGljOmMsY29uc3RUeXBlOmM/MzpofX1mdW5jdGlvbiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oZSxjPWp0KXtyZXR1cm57dHlwZTo4LGxvYzpjLGNoaWxkcmVuOmV9fWZ1bmN0aW9uIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGUsYz1bXSxkPWp0KXtyZXR1cm57dHlwZToxNCxsb2M6ZCxjYWxsZWU6ZSxhcmd1bWVudHM6Y319ZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGUsYz12b2lkIDAsZD0hMSxoPSExLHY9anQpe3JldHVybnt0eXBlOjE4LHBhcmFtczplLHJldHVybnM6YyxuZXdsaW5lOmQsaXNTbG90OmgsbG9jOnZ9fWZ1bmN0aW9uIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihlLGMsZCxoPSEwKXtyZXR1cm57dHlwZToxOSx0ZXN0OmUsY29uc2VxdWVudDpjLGFsdGVybmF0ZTpkLG5ld2xpbmU6aCxsb2M6anR9fWZ1bmN0aW9uIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbihlLGMsZD0hMSxoPSExKXtyZXR1cm57dHlwZToyMCxpbmRleDplLHZhbHVlOmMsbmVlZFBhdXNlVHJhY2tpbmc6ZCxpblZPbmNlOmgsbmVlZEFycmF5U3ByZWFkOiExLGxvYzpqdH19ZnVuY3Rpb24gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoZSl7cmV0dXJue3R5cGU6MjEsYm9keTplLGxvYzpqdH19ZnVuY3Rpb24gZ2V0Vk5vZGVIZWxwZXIoZSxjKXtyZXR1cm4gZXx8Yz9vdDpydH1mdW5jdGlvbiBnZXRWTm9kZUJsb2NrSGVscGVyKGUsYyl7cmV0dXJuIGV8fGM/ZXQ6bnR9ZnVuY3Rpb24gY29udmVydFRvQmxvY2soZSx7aGVscGVyOmMscmVtb3ZlSGVscGVyOmQsaW5TU1I6aH0pe2UuaXNCbG9ja3x8KGUuaXNCbG9jaz0hMCxkKGdldFZOb2RlSGVscGVyKGgsZS5pc0NvbXBvbmVudCkpLGMoWmUpLGMoZ2V0Vk5vZGVCbG9ja0hlbHBlcihoLGUuaXNDb21wb25lbnQpKSl9Y29uc3QgJHQ9bmV3IFVpbnQ4QXJyYXkoWzEyMywxMjNdKSxGdD1uZXcgVWludDhBcnJheShbMTI1LDEyNV0pO2Z1bmN0aW9uIGlzVGFnU3RhcnRDaGFyKGUpe3JldHVybiBlPj05NyYmZTw9MTIyfHxlPj02NSYmZTw9OTB9ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUpe3JldHVybiAzMj09PWV8fDEwPT09ZXx8OT09PWV8fDEyPT09ZXx8MTM9PT1lfWZ1bmN0aW9uIGlzRW5kT2ZUYWdTZWN0aW9uKGUpe3JldHVybiA0Nz09PWV8fDYyPT09ZXx8aXNXaGl0ZXNwYWNlKGUpfWZ1bmN0aW9uIHRvQ2hhckNvZGVzKGUpe2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKWNbZF09ZS5jaGFyQ29kZUF0KGQpO3JldHVybiBjfWNvbnN0IFZ0PXtDZGF0YTpuZXcgVWludDhBcnJheShbNjcsNjgsNjUsODQsNjUsOTFdKSxDZGF0YUVuZDpuZXcgVWludDhBcnJheShbOTMsOTMsNjJdKSxDb21tZW50RW5kOm5ldyBVaW50OEFycmF5KFs0NSw0NSw2Ml0pLFNjcmlwdEVuZDpuZXcgVWludDhBcnJheShbNjAsNDcsMTE1LDk5LDExNCwxMDUsMTEyLDExNl0pLFN0eWxlRW5kOm5ldyBVaW50OEFycmF5KFs2MCw0NywxMTUsMTE2LDEyMSwxMDgsMTAxXSksVGl0bGVFbmQ6bmV3IFVpbnQ4QXJyYXkoWzYwLDQ3LDExNiwxMDUsMTE2LDEwOCwxMDFdKSxUZXh0YXJlYUVuZDpuZXcgVWludDhBcnJheShbNjAsNDcsMTE2LDEwMSwxMjAsMTE2LDk3LDExNCwxMDEsOTddKX07Y29uc3QgenQ9e0NPTVBJTEVSX0lTX09OX0VMRU1FTlQ6e21lc3NhZ2U6J1BsYXRmb3JtLW5hdGl2ZSBlbGVtZW50cyB3aXRoICJpcyIgcHJvcCB3aWxsIG5vIGxvbmdlciBiZSB0cmVhdGVkIGFzIGNvbXBvbmVudHMgaW4gVnVlIDMgdW5sZXNzIHRoZSAiaXMiIHZhbHVlIGlzIGV4cGxpY2l0bHkgcHJlZml4ZWQgd2l0aCAidnVlOiIuJyxsaW5rOiJodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9jdXN0b20tZWxlbWVudHMtaW50ZXJvcC5odG1sIn0sQ09NUElMRVJfVl9CSU5EX1NZTkM6e21lc3NhZ2U6ZT0+YC5zeW5jIG1vZGlmaWVyIGZvciB2LWJpbmQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHYtbW9kZWwgd2l0aCBhcmd1bWVudCBpbnN0ZWFkLiBcYHYtYmluZDoke2V9LnN5bmNcYCBzaG91bGQgYmUgY2hhbmdlZCB0byBcYHYtbW9kZWw6JHtlfVxgLmAsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1tb2RlbC5odG1sIn0sQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUjp7bWVzc2FnZTondi1iaW5kPSJvYmoiIHVzYWdlIGlzIG5vdyBvcmRlciBzZW5zaXRpdmUgYW5kIGJlaGF2ZXMgbGlrZSBKYXZhU2NyaXB0IG9iamVjdCBzcHJlYWQ6IGl0IHdpbGwgbm93IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBub24tbWVyZ2VhYmxlIGF0dHJpYnV0ZSB0aGF0IGFwcGVhcnMgYmVmb3JlIHYtYmluZCBpbiB0aGUgY2FzZSBvZiBjb25mbGljdC4gVG8gcmV0YWluIDIueCBiZWhhdmlvciwgbW92ZSB2LWJpbmQgdG8gbWFrZSBpdCB0aGUgZmlyc3QgYXR0cmlidXRlLiBZb3UgY2FuIGFsc28gc3VwcHJlc3MgdGhpcyB3YXJuaW5nIGlmIHRoZSB1c2FnZSBpcyBpbnRlbmRlZC4nLGxpbms6Imh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtYmluZC5odG1sIn0sQ09NUElMRVJfVl9PTl9OQVRJVkU6e21lc3NhZ2U6Ii5uYXRpdmUgbW9kaWZpZXIgZm9yIHYtb24gaGFzIGJlZW4gcmVtb3ZlZCBhcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LiIsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1vbi1uYXRpdmUtbW9kaWZpZXItcmVtb3ZlZC5odG1sIn0sQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFOnttZXNzYWdlOiJ2LWlmIC8gdi1mb3IgcHJlY2VkZW5jZSB3aGVuIHVzZWQgb24gdGhlIHNhbWUgZWxlbWVudCBoYXMgY2hhbmdlZCBpbiBWdWUgMzogdi1pZiBub3cgdGFrZXMgaGlnaGVyIHByZWNlZGVuY2UgYW5kIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYWNjZXNzIHRvIHYtZm9yIHNjb3BlIHZhcmlhYmxlcy4gSXQgaXMgYmVzdCB0byBhdm9pZCB0aGUgYW1iaWd1aXR5IHdpdGggPHRlbXBsYXRlPiB0YWdzIG9yIHVzZSBhIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgZmlsdGVycyB2LWZvciBkYXRhIHNvdXJjZS4iLGxpbms6Imh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtaWYtdi1mb3IuaHRtbCJ9LENPTVBJTEVSX05BVElWRV9URU1QTEFURTp7bWVzc2FnZToiPHRlbXBsYXRlPiB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0aXZlcyB3aWxsIHJlbmRlciBhcyBhIG5hdGl2ZSB0ZW1wbGF0ZSBlbGVtZW50IGluc3RlYWQgb2YgaXRzIGlubmVyIGNvbnRlbnQgaW4gVnVlIDMuIn0sQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFOnttZXNzYWdlOiciaW5saW5lLXRlbXBsYXRlIiBoYXMgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLicsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvaW5saW5lLXRlbXBsYXRlLWF0dHJpYnV0ZS5odG1sIn0sQ09NUElMRVJfRklMVEVSUzp7bWVzc2FnZTonZmlsdGVycyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBWdWUgMy4gVGhlICJ8IiBzeW1ib2wgd2lsbCBiZSB0cmVhdGVkIGFzIG5hdGl2ZSBKYXZhU2NyaXB0IGJpdHdpc2UgT1Igb3BlcmF0b3IuIFVzZSBtZXRob2QgY2FsbHMgb3IgY29tcHV0ZWQgcHJvcGVydGllcyBpbnN0ZWFkLicsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvZmlsdGVycy5odG1sIn19O2Z1bmN0aW9uIGdldENvbXBhdFZhbHVlKGUse2NvbXBhdENvbmZpZzpjfSl7Y29uc3QgZD1jJiZjW2VdO3JldHVybiJNT0RFIj09PWU/ZHx8MzpkfWZ1bmN0aW9uIGlzQ29tcGF0RW5hYmxlZChlLGMpe2NvbnN0IGQ9Z2V0Q29tcGF0VmFsdWUoIk1PREUiLGMpLGg9Z2V0Q29tcGF0VmFsdWUoZSxjKTtyZXR1cm4gMz09PWQ/ITA9PT1oOiExIT09aH1mdW5jdGlvbiBjaGVja0NvbXBhdEVuYWJsZWQoZSxjLGQsLi4uaCl7cmV0dXJuIGlzQ29tcGF0RW5hYmxlZChlLGMpfWZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGUpe3Rocm93IGV9ZnVuY3Rpb24gZGVmYXVsdE9uV2FybihlKXt9ZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJFcnJvcihlLGMsZCxoKXtjb25zdCB2PW5ldyBTeW50YXhFcnJvcihTdHJpbmcoYGh0dHBzOi8vdnVlanMub3JnL2Vycm9yLXJlZmVyZW5jZS8jY29tcGlsZXItJHtlfWApKTtyZXR1cm4gdi5jb2RlPWUsdi5sb2M9Yyx2fWNvbnN0IHF0PXswOiJJbGxlZ2FsIGNvbW1lbnQuIiwxOiJDREFUQSBzZWN0aW9uIGlzIGFsbG93ZWQgb25seSBpbiBYTUwgY29udGV4dC4iLDI6IkR1cGxpY2F0ZSBhdHRyaWJ1dGUuIiwzOiJFbmQgdGFnIGNhbm5vdCBoYXZlIGF0dHJpYnV0ZXMuIiw0OiJJbGxlZ2FsICcvJyBpbiB0YWdzLiIsNToiVW5leHBlY3RlZCBFT0YgaW4gdGFnLiIsNjoiVW5leHBlY3RlZCBFT0YgaW4gQ0RBVEEgc2VjdGlvbi4iLDc6IlVuZXhwZWN0ZWQgRU9GIGluIGNvbW1lbnQuIiw4OiJVbmV4cGVjdGVkIEVPRiBpbiBzY3JpcHQuIiw5OiJVbmV4cGVjdGVkIEVPRiBpbiB0YWcuIiwxMDoiSW5jb3JyZWN0bHkgY2xvc2VkIGNvbW1lbnQuIiwxMToiSW5jb3JyZWN0bHkgb3BlbmVkIGNvbW1lbnQuIiwxMjoiSWxsZWdhbCB0YWcgbmFtZS4gVXNlICcmbHQ7JyB0byBwcmludCAnPCcuIiwxMzoiQXR0cmlidXRlIHZhbHVlIHdhcyBleHBlY3RlZC4iLDE0OiJFbmQgdGFnIG5hbWUgd2FzIGV4cGVjdGVkLiIsMTU6IldoaXRlc3BhY2Ugd2FzIGV4cGVjdGVkLiIsMTY6IlVuZXhwZWN0ZWQgJ1x4M2MhLS0nIGluIGNvbW1lbnQuIiwxNzoiQXR0cmlidXRlIG5hbWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoJyksIGFuZCBVKzAwM0MgKDwpLiIsMTg6IlVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSBjYW5ub3QgY29udGFpbiBVKzAwMjIgKFwiKSwgVSswMDI3ICgnKSwgVSswMDNDICg8KSwgVSswMDNEICg9KSwgYW5kIFUrMDA2MCAoYCkuIiwxOToiQXR0cmlidXRlIG5hbWUgY2Fubm90IHN0YXJ0IHdpdGggJz0nLiIsMjE6Iic8PycgaXMgYWxsb3dlZCBvbmx5IGluIFhNTCBjb250ZXh0LiIsMjA6IlVuZXhwZWN0ZWQgbnVsbCBjaGFyYWN0ZXIuIiwyMjoiSWxsZWdhbCAnLycgaW4gdGFncy4iLDIzOiJJbnZhbGlkIGVuZCB0YWcuIiwyNDoiRWxlbWVudCBpcyBtaXNzaW5nIGVuZCB0YWcuIiwyNToiSW50ZXJwb2xhdGlvbiBlbmQgc2lnbiB3YXMgbm90IGZvdW5kLiIsMjc6IkVuZCBicmFja2V0IGZvciBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCB3YXMgbm90IGZvdW5kLiBOb3RlIHRoYXQgZHluYW1pYyBkaXJlY3RpdmUgYXJndW1lbnQgY2Fubm90IGNvbnRhaW4gc3BhY2VzLiIsMjY6IkxlZ2FsIGRpcmVjdGl2ZSBuYW1lIHdhcyBleHBlY3RlZC4iLDI4OiJ2LWlmL3YtZWxzZS1pZiBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiwyOToidi1pZi9lbHNlIGJyYW5jaGVzIG11c3QgdXNlIHVuaXF1ZSBrZXlzLiIsMzA6InYtZWxzZS92LWVsc2UtaWYgaGFzIG5vIGFkamFjZW50IHYtaWYgb3Igdi1lbHNlLWlmLiIsMzE6InYtZm9yIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi4iLDMyOiJ2LWZvciBoYXMgaW52YWxpZCBleHByZXNzaW9uLiIsMzM6Ijx0ZW1wbGF0ZSB2LWZvcj4ga2V5IHNob3VsZCBiZSBwbGFjZWQgb24gdGhlIDx0ZW1wbGF0ZT4gdGFnLiIsMzQ6InYtYmluZCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiw1Mzoidi1iaW5kIHdpdGggc2FtZS1uYW1lIHNob3J0aGFuZCBvbmx5IGFsbG93cyBzdGF0aWMgYXJndW1lbnQuIiwzNToidi1vbiBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiwzNjoiVW5leHBlY3RlZCBjdXN0b20gZGlyZWN0aXZlIG9uIDxzbG90PiBvdXRsZXQuIiwzNzoiTWl4ZWQgdi1zbG90IHVzYWdlIG9uIGJvdGggdGhlIGNvbXBvbmVudCBhbmQgbmVzdGVkIDx0ZW1wbGF0ZT4uIFdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG5hbWVkIHNsb3RzLCBhbGwgc2xvdHMgc2hvdWxkIHVzZSA8dGVtcGxhdGU+IHN5bnRheCB0byBhdm9pZCBzY29wZSBhbWJpZ3VpdHkuIiwzODoiRHVwbGljYXRlIHNsb3QgbmFtZXMgZm91bmQuICIsMzk6IkV4dHJhbmVvdXMgY2hpbGRyZW4gZm91bmQgd2hlbiBjb21wb25lbnQgYWxyZWFkeSBoYXMgZXhwbGljaXRseSBuYW1lZCBkZWZhdWx0IHNsb3QuIFRoZXNlIGNoaWxkcmVuIHdpbGwgYmUgaWdub3JlZC4iLDQwOiJ2LXNsb3QgY2FuIG9ubHkgYmUgdXNlZCBvbiBjb21wb25lbnRzIG9yIDx0ZW1wbGF0ZT4gdGFncy4iLDQxOiJ2LW1vZGVsIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi4iLDQyOiJ2LW1vZGVsIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IG1lbWJlciBleHByZXNzaW9uLiIsNDM6InYtbW9kZWwgY2Fubm90IGJlIHVzZWQgb24gdi1mb3Igb3Igdi1zbG90IHNjb3BlIHZhcmlhYmxlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB3cml0YWJsZS4iLDQ0OiJ2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIGEgcHJvcCwgYmVjYXVzZSBsb2NhbCBwcm9wIGJpbmRpbmdzIGFyZSBub3Qgd3JpdGFibGUuXG5Vc2UgYSB2LWJpbmQgYmluZGluZyBjb21iaW5lZCB3aXRoIGEgdi1vbiBsaXN0ZW5lciB0aGF0IGVtaXRzIHVwZGF0ZTp4IGV2ZW50IGluc3RlYWQuIiw0NToidi1tb2RlbCBjYW5ub3QgYmUgdXNlZCBvbiBhIGNvbnN0IGJpbmRpbmcgYmVjYXVzZSBpdCBpcyBub3Qgd3JpdGFibGUuIiw0NjoiRXJyb3IgcGFyc2luZyBKYXZhU2NyaXB0IGV4cHJlc3Npb246ICIsNDc6IjxLZWVwQWxpdmU+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgY29tcG9uZW50LiIsNTI6IkB2bm9kZS0qIGhvb2tzIGluIHRlbXBsYXRlcyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gVXNlIHRoZSB2dWU6IHByZWZpeCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgQHZub2RlLW1vdW50ZWQgc2hvdWxkIGJlIGNoYW5nZWQgdG8gQHZ1ZTptb3VudGVkLiBAdm5vZGUtKiBob29rcyBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgaW4gMy40LiIsNDg6JyJwcmVmaXhJZGVudGlmaWVycyIgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBjb21waWxlci4nLDQ5OiJFUyBtb2R1bGUgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgY29tcGlsZXIuIiw1MDonImNhY2hlSGFuZGxlcnMiIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSAicHJlZml4SWRlbnRpZmllcnMiIG9wdGlvbiBpcyBlbmFibGVkLicsNTE6JyJzY29wZUlkIiBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgaW4gbW9kdWxlIG1vZGUuJyw1NDoiIn07ZnVuY3Rpb24gd2Fsa0Jsb2NrRGVjbGFyYXRpb25zKGUsYyl7Y29uc3QgZD0iU3dpdGNoQ2FzZSI9PT1lLnR5cGU/ZS5jb25zZXF1ZW50OmUuYm9keTtmb3IoY29uc3QgZSBvZiBkKWlmKCJWYXJpYWJsZURlY2xhcmF0aW9uIj09PWUudHlwZSl7aWYoZS5kZWNsYXJlKWNvbnRpbnVlO2Zvcihjb25zdCBkIG9mIGUuZGVjbGFyYXRpb25zKWZvcihjb25zdCBlIG9mIGV4dHJhY3RJZGVudGlmaWVycyhkLmlkKSljKGUpfWVsc2UgaWYoIkZ1bmN0aW9uRGVjbGFyYXRpb24iPT09ZS50eXBlfHwiQ2xhc3NEZWNsYXJhdGlvbiI9PT1lLnR5cGUpe2lmKGUuZGVjbGFyZXx8IWUuaWQpY29udGludWU7YyhlLmlkKX1lbHNlIGlzRm9yU3RhdGVtZW50KGUpP3dhbGtGb3JTdGF0ZW1lbnQoZSwhMCxjKToiU3dpdGNoU3RhdGVtZW50Ij09PWUudHlwZSYmd2Fsa1N3aXRjaFN0YXRlbWVudChlLCEwLGMpfWZ1bmN0aW9uIGlzRm9yU3RhdGVtZW50KGUpe3JldHVybiJGb3JPZlN0YXRlbWVudCI9PT1lLnR5cGV8fCJGb3JJblN0YXRlbWVudCI9PT1lLnR5cGV8fCJGb3JTdGF0ZW1lbnQiPT09ZS50eXBlfWZ1bmN0aW9uIHdhbGtGb3JTdGF0ZW1lbnQoZSxjLGQpe2NvbnN0IGg9IkZvclN0YXRlbWVudCI9PT1lLnR5cGU/ZS5pbml0OmUubGVmdDtpZihoJiYiVmFyaWFibGVEZWNsYXJhdGlvbiI9PT1oLnR5cGUmJigidmFyIj09PWgua2luZD9jOiFjKSlmb3IoY29uc3QgZSBvZiBoLmRlY2xhcmF0aW9ucylmb3IoY29uc3QgYyBvZiBleHRyYWN0SWRlbnRpZmllcnMoZS5pZCkpZChjKX1mdW5jdGlvbiB3YWxrU3dpdGNoU3RhdGVtZW50KGUsYyxkKXtmb3IoY29uc3QgaCBvZiBlLmNhc2VzKXtmb3IoY29uc3QgZSBvZiBoLmNvbnNlcXVlbnQpaWYoIlZhcmlhYmxlRGVjbGFyYXRpb24iPT09ZS50eXBlJiYoInZhciI9PT1lLmtpbmQ/YzohYykpZm9yKGNvbnN0IGMgb2YgZS5kZWNsYXJhdGlvbnMpZm9yKGNvbnN0IGUgb2YgZXh0cmFjdElkZW50aWZpZXJzKGMuaWQpKWQoZSk7d2Fsa0Jsb2NrRGVjbGFyYXRpb25zKGgsZCl9fWZ1bmN0aW9uIGV4dHJhY3RJZGVudGlmaWVycyhlLGM9W10pe3N3aXRjaChlLnR5cGUpe2Nhc2UiSWRlbnRpZmllciI6Yy5wdXNoKGUpO2JyZWFrO2Nhc2UiTWVtYmVyRXhwcmVzc2lvbiI6bGV0IGQ9ZTtmb3IoOyJNZW1iZXJFeHByZXNzaW9uIj09PWQudHlwZTspZD1kLm9iamVjdDtjLnB1c2goZCk7YnJlYWs7Y2FzZSJPYmplY3RQYXR0ZXJuIjpmb3IoY29uc3QgZCBvZiBlLnByb3BlcnRpZXMpIlJlc3RFbGVtZW50Ij09PWQudHlwZT9leHRyYWN0SWRlbnRpZmllcnMoZC5hcmd1bWVudCxjKTpleHRyYWN0SWRlbnRpZmllcnMoZC52YWx1ZSxjKTticmVhaztjYXNlIkFycmF5UGF0dGVybiI6ZS5lbGVtZW50cy5mb3JFYWNoKGU9PntlJiZleHRyYWN0SWRlbnRpZmllcnMoZSxjKX0pO2JyZWFrO2Nhc2UiUmVzdEVsZW1lbnQiOmV4dHJhY3RJZGVudGlmaWVycyhlLmFyZ3VtZW50LGMpO2JyZWFrO2Nhc2UiQXNzaWdubWVudFBhdHRlcm4iOmV4dHJhY3RJZGVudGlmaWVycyhlLmxlZnQsYyl9cmV0dXJuIGN9Y29uc3QgaXNTdGF0aWNQcm9wZXJ0eT1lPT5lJiYoIk9iamVjdFByb3BlcnR5Ij09PWUudHlwZXx8Ik9iamVjdE1ldGhvZCI9PT1lLnR5cGUpJiYhZS5jb21wdXRlZCxVdD1bIlRTQXNFeHByZXNzaW9uIiwiVFNUeXBlQXNzZXJ0aW9uIiwiVFNOb25OdWxsRXhwcmVzc2lvbiIsIlRTSW5zdGFudGlhdGlvbkV4cHJlc3Npb24iLCJUU1NhdGlzZmllc0V4cHJlc3Npb24iXTtjb25zdCBpc1N0YXRpY0V4cD1lPT40PT09ZS50eXBlJiZlLmlzU3RhdGljO2Z1bmN0aW9uIGlzQ29yZUNvbXBvbmVudChlKXtzd2l0Y2goZSl7Y2FzZSJUZWxlcG9ydCI6Y2FzZSJ0ZWxlcG9ydCI6cmV0dXJuIEtlO2Nhc2UiU3VzcGVuc2UiOmNhc2Uic3VzcGVuc2UiOnJldHVybiBKZTtjYXNlIktlZXBBbGl2ZSI6Y2FzZSJrZWVwLWFsaXZlIjpyZXR1cm4gUWU7Y2FzZSJCYXNlVHJhbnNpdGlvbiI6Y2FzZSJiYXNlLXRyYW5zaXRpb24iOnJldHVybiBZZX19Y29uc3QgSHQ9L14kfF5cZHxbXlwkXHdceEEwLVx1RkZGRl0vLGlzU2ltcGxlSWRlbnRpZmllcj1lPT4hSHQudGVzdChlKSxHdD0vW0EtWmEtel8kXHhBMC1cdUZGRkZdLyxXdD0vW1wuXD9cdyRceEEwLVx1RkZGRl0vLFh0PS9ccytbLltdXHMqfFxzKlsuW11ccysvZyxnZXRFeHBTb3VyY2U9ZT0+ND09PWUudHlwZT9lLmNvbnRlbnQ6ZS5sb2Muc291cmNlLGlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXI9ZT0+e2NvbnN0IGM9Z2V0RXhwU291cmNlKGUpLnRyaW0oKS5yZXBsYWNlKFh0LGU9PmUudHJpbSgpKTtsZXQgZD0wLGg9W10sdj0wLGI9MCx5PW51bGw7Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2NvbnN0IEU9Yy5jaGFyQXQoZSk7c3dpdGNoKGQpe2Nhc2UgMDppZigiWyI9PT1FKWgucHVzaChkKSxkPTEsdisrO2Vsc2UgaWYoIigiPT09RSloLnB1c2goZCksZD0yLGIrKztlbHNlIGlmKCEoMD09PWU/R3Q6V3QpLnRlc3QoRSkpcmV0dXJuITE7YnJlYWs7Y2FzZSAxOiInIj09PUV8fCciJz09PUV8fCJgIj09PUU/KGgucHVzaChkKSxkPTMseT1FKToiWyI9PT1FP3YrKzoiXSI9PT1FJiYoLS12fHwoZD1oLnBvcCgpKSk7YnJlYWs7Y2FzZSAyOmlmKCInIj09PUV8fCciJz09PUV8fCJgIj09PUUpaC5wdXNoKGQpLGQ9Myx5PUU7ZWxzZSBpZigiKCI9PT1FKWIrKztlbHNlIGlmKCIpIj09PUUpe2lmKGU9PT1jLmxlbmd0aC0xKXJldHVybiExOy0tYnx8KGQ9aC5wb3AoKSl9YnJlYWs7Y2FzZSAzOkU9PT15JiYoZD1oLnBvcCgpLHk9bnVsbCl9fXJldHVybiF2JiYhYn0sS3Q9a2UsSnQ9aXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlcixRdD0vXlxzKig/OmFzeW5jXHMqKT8oPzpcKFteKV0qP1wpfFtcdyRfXSspXHMqKD86OltePV0rKT89PnxeXHMqKD86YXN5bmNccyspP2Z1bmN0aW9uKD86XHMrW1x3JF0rKT9ccypcKC8saXNGbkV4cHJlc3Npb25Ccm93c2VyPWU9PlF0LnRlc3QoZ2V0RXhwU291cmNlKGUpKSxZdD1rZSxadD1pc0ZuRXhwcmVzc2lvbkJyb3dzZXI7ZnVuY3Rpb24gYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGUsYyxkPWMubGVuZ3RoKXtsZXQgaD0wLHY9LTE7Zm9yKGxldCBlPTA7ZTxkO2UrKykxMD09PWMuY2hhckNvZGVBdChlKSYmKGgrKyx2PWUpO3JldHVybiBlLm9mZnNldCs9ZCxlLmxpbmUrPWgsZS5jb2x1bW49LTE9PT12P2UuY29sdW1uK2Q6ZC12LGV9ZnVuY3Rpb24gZmluZERpcihlLGMsZD0hMSl7Zm9yKGxldCBoPTA7aDxlLnByb3BzLmxlbmd0aDtoKyspe2NvbnN0IHY9ZS5wcm9wc1toXTtpZig3PT09di50eXBlJiYoZHx8di5leHApJiYoX2UoYyk/di5uYW1lPT09YzpjLnRlc3Qodi5uYW1lKSkpcmV0dXJuIHZ9fWZ1bmN0aW9uIGZpbmRQcm9wKGUsYyxkPSExLGg9ITEpe2ZvcihsZXQgdj0wO3Y8ZS5wcm9wcy5sZW5ndGg7disrKXtjb25zdCBiPWUucHJvcHNbdl07aWYoNj09PWIudHlwZSl7aWYoZCljb250aW51ZTtpZihiLm5hbWU9PT1jJiYoYi52YWx1ZXx8aCkpcmV0dXJuIGJ9ZWxzZSBpZigiYmluZCI9PT1iLm5hbWUmJihiLmV4cHx8aCkmJmlzU3RhdGljQXJnT2YoYi5hcmcsYykpcmV0dXJuIGJ9fWZ1bmN0aW9uIGlzU3RhdGljQXJnT2YoZSxjKXtyZXR1cm4hKCFlfHwhaXNTdGF0aWNFeHAoZSl8fGUuY29udGVudCE9PWMpfWZ1bmN0aW9uIGhhc0R5bmFtaWNLZXlWQmluZChlKXtyZXR1cm4gZS5wcm9wcy5zb21lKGU9PiEoNyE9PWUudHlwZXx8ImJpbmQiIT09ZS5uYW1lfHxlLmFyZyYmND09PWUuYXJnLnR5cGUmJmUuYXJnLmlzU3RhdGljKSl9ZnVuY3Rpb24gaXNUZXh0JDEoZSl7cmV0dXJuIDU9PT1lLnR5cGV8fDI9PT1lLnR5cGV9ZnVuY3Rpb24gaXNWUHJlKGUpe3JldHVybiA3PT09ZS50eXBlJiYicHJlIj09PWUubmFtZX1mdW5jdGlvbiBpc1ZTbG90KGUpe3JldHVybiA3PT09ZS50eXBlJiYic2xvdCI9PT1lLm5hbWV9ZnVuY3Rpb24gaXNUZW1wbGF0ZU5vZGUoZSl7cmV0dXJuIDE9PT1lLnR5cGUmJjM9PT1lLnRhZ1R5cGV9ZnVuY3Rpb24gaXNTbG90T3V0bGV0KGUpe3JldHVybiAxPT09ZS50eXBlJiYyPT09ZS50YWdUeXBlfWNvbnN0IGVuPW5ldyBTZXQoW3d0LGt0XSk7ZnVuY3Rpb24gZ2V0VW5ub3JtYWxpemVkUHJvcHMoZSxjPVtdKXtpZihlJiYhX2UoZSkmJjE0PT09ZS50eXBlKXtjb25zdCBkPWUuY2FsbGVlO2lmKCFfZShkKSYmZW4uaGFzKGQpKXJldHVybiBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhlLmFyZ3VtZW50c1swXSxjLmNvbmNhdChlKSl9cmV0dXJuW2UsY119ZnVuY3Rpb24gaW5qZWN0UHJvcChlLGMsZCl7bGV0IGgsdixiPTEzPT09ZS50eXBlP2UucHJvcHM6ZS5hcmd1bWVudHNbMl0seT1bXTtpZihiJiYhX2UoYikmJjE0PT09Yi50eXBlKXtjb25zdCBlPWdldFVubm9ybWFsaXplZFByb3BzKGIpO2I9ZVswXSx5PWVbMV0sdj15W3kubGVuZ3RoLTFdfWlmKG51bGw9PWJ8fF9lKGIpKWg9Y3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbY10pO2Vsc2UgaWYoMTQ9PT1iLnR5cGUpe2NvbnN0IGU9Yi5hcmd1bWVudHNbMF07X2UoZSl8fDE1IT09ZS50eXBlP2IuY2FsbGVlPT09Q3Q/aD1jcmVhdGVDYWxsRXhwcmVzc2lvbihkLmhlbHBlcih4dCksW2NyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2NdKSxiXSk6Yi5hcmd1bWVudHMudW5zaGlmdChjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtjXSkpOmhhc1Byb3AoYyxlKXx8ZS5wcm9wZXJ0aWVzLnVuc2hpZnQoYyksIWgmJihoPWIpfWVsc2UgMTU9PT1iLnR5cGU/KGhhc1Byb3AoYyxiKXx8Yi5wcm9wZXJ0aWVzLnVuc2hpZnQoYyksaD1iKTooaD1jcmVhdGVDYWxsRXhwcmVzc2lvbihkLmhlbHBlcih4dCksW2NyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2NdKSxiXSksdiYmdi5jYWxsZWU9PT1rdCYmKHY9eVt5Lmxlbmd0aC0yXSkpOzEzPT09ZS50eXBlP3Y/di5hcmd1bWVudHNbMF09aDplLnByb3BzPWg6dj92LmFyZ3VtZW50c1swXT1oOmUuYXJndW1lbnRzWzJdPWh9ZnVuY3Rpb24gaGFzUHJvcChlLGMpe2xldCBkPSExO2lmKDQ9PT1lLmtleS50eXBlKXtjb25zdCBoPWUua2V5LmNvbnRlbnQ7ZD1jLnByb3BlcnRpZXMuc29tZShlPT40PT09ZS5rZXkudHlwZSYmZS5rZXkuY29udGVudD09PWgpfXJldHVybiBkfWZ1bmN0aW9uIHRvVmFsaWRBc3NldElkKGUsYyl7cmV0dXJuYF8ke2N9XyR7ZS5yZXBsYWNlKC9bXlx3XS9nLChjLGQpPT4iLSI9PT1jPyJfIjplLmNoYXJDb2RlQXQoZCkudG9TdHJpbmcoKSl9YH1mdW5jdGlvbiBnZXRNZW1vZWRWTm9kZUNhbGwoZSl7cmV0dXJuIDE0PT09ZS50eXBlJiZlLmNhbGxlZT09PUR0P2UuYXJndW1lbnRzWzFdLnJldHVybnM6ZX1jb25zdCB0bj0vKFtcc1xTXSo/KVxzKyg/OmlufG9mKVxzKyhcU1tcc1xTXSopLztmdW5jdGlvbiBpc0FsbFdoaXRlc3BhY2UoZSl7Zm9yKGxldCBjPTA7YzxlLmxlbmd0aDtjKyspaWYoIWlzV2hpdGVzcGFjZShlLmNoYXJDb2RlQXQoYykpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGlzV2hpdGVzcGFjZVRleHQoZSl7cmV0dXJuIDI9PT1lLnR5cGUmJmlzQWxsV2hpdGVzcGFjZShlLmNvbnRlbnQpfHwxMj09PWUudHlwZSYmaXNXaGl0ZXNwYWNlVGV4dChlLmNvbnRlbnQpfWZ1bmN0aW9uIGlzQ29tbWVudE9yV2hpdGVzcGFjZShlKXtyZXR1cm4gMz09PWUudHlwZXx8aXNXaGl0ZXNwYWNlVGV4dChlKX1jb25zdCBubj17cGFyc2VNb2RlOiJiYXNlIixuczowLGRlbGltaXRlcnM6WyJ7eyIsIn19Il0sZ2V0TmFtZXNwYWNlOigpPT4wLGlzVm9pZFRhZzpUZSxpc1ByZVRhZzpUZSxpc0lnbm9yZU5ld2xpbmVUYWc6VGUsaXNDdXN0b21FbGVtZW50OlRlLG9uRXJyb3I6ZGVmYXVsdE9uRXJyb3Isb25XYXJuOmRlZmF1bHRPbldhcm4sY29tbWVudHM6ITEscHJlZml4SWRlbnRpZmllcnM6ITF9O2xldCBybj1ubixhbj1udWxsLHNuPSIiLGxuPW51bGwsY249bnVsbCx1bj0iIixkbj0tMSxwbj0tMSxtbj0wLGhuPSExLGduPW51bGw7Y29uc3Qgdm49W10sYm49bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUsYyl7dGhpcy5zdGFjaz1lLHRoaXMuY2JzPWMsdGhpcy5zdGF0ZT0xLHRoaXMuYnVmZmVyPSIiLHRoaXMuc2VjdGlvblN0YXJ0PTAsdGhpcy5pbmRleD0wLHRoaXMuZW50aXR5U3RhcnQ9MCx0aGlzLmJhc2VTdGF0ZT0xLHRoaXMuaW5SQ0RBVEE9ITEsdGhpcy5pblhNTD0hMSx0aGlzLmluVlByZT0hMSx0aGlzLm5ld2xpbmVzPVtdLHRoaXMubW9kZT0wLHRoaXMuZGVsaW1pdGVyT3Blbj0kdCx0aGlzLmRlbGltaXRlckNsb3NlPUZ0LHRoaXMuZGVsaW1pdGVySW5kZXg9LTEsdGhpcy5jdXJyZW50U2VxdWVuY2U9dm9pZCAwLHRoaXMuc2VxdWVuY2VJbmRleD0wfWdldCBpblNGQ1Jvb3QoKXtyZXR1cm4gMj09PXRoaXMubW9kZSYmMD09PXRoaXMuc3RhY2subGVuZ3RofXJlc2V0KCl7dGhpcy5zdGF0ZT0xLHRoaXMubW9kZT0wLHRoaXMuYnVmZmVyPSIiLHRoaXMuc2VjdGlvblN0YXJ0PTAsdGhpcy5pbmRleD0wLHRoaXMuYmFzZVN0YXRlPTEsdGhpcy5pblJDREFUQT0hMSx0aGlzLmN1cnJlbnRTZXF1ZW5jZT12b2lkIDAsdGhpcy5uZXdsaW5lcy5sZW5ndGg9MCx0aGlzLmRlbGltaXRlck9wZW49JHQsdGhpcy5kZWxpbWl0ZXJDbG9zZT1GdH1nZXRQb3MoZSl7bGV0IGM9MSxkPWUrMTtjb25zdCBoPXRoaXMubmV3bGluZXMubGVuZ3RoO2xldCB2PS0xO2lmKGg+MTAwKXtsZXQgYz0tMSxkPWg7Zm9yKDtjKzE8ZDspe2NvbnN0IGg9YytkPj4+MTt0aGlzLm5ld2xpbmVzW2hdPGU/Yz1oOmQ9aH12PWN9ZWxzZSBmb3IobGV0IGM9aC0xO2M+PTA7Yy0tKWlmKGU+dGhpcy5uZXdsaW5lc1tjXSl7dj1jO2JyZWFrfXJldHVybiB2Pj0wJiYoYz12KzIsZD1lLXRoaXMubmV3bGluZXNbdl0pLHtjb2x1bW46ZCxsaW5lOmMsb2Zmc2V0OmV9fXBlZWsoKXtyZXR1cm4gdGhpcy5idWZmZXIuY2hhckNvZGVBdCh0aGlzLmluZGV4KzEpfXN0YXRlVGV4dChlKXs2MD09PWU/KHRoaXMuaW5kZXg+dGhpcy5zZWN0aW9uU3RhcnQmJnRoaXMuY2JzLm9udGV4dCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTUsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCk6dGhpcy5pblZQcmV8fGUhPT10aGlzLmRlbGltaXRlck9wZW5bMF18fCh0aGlzLnN0YXRlPTIsdGhpcy5kZWxpbWl0ZXJJbmRleD0wLHRoaXMuc3RhdGVJbnRlcnBvbGF0aW9uT3BlbihlKSl9c3RhdGVJbnRlcnBvbGF0aW9uT3BlbihlKXtpZihlPT09dGhpcy5kZWxpbWl0ZXJPcGVuW3RoaXMuZGVsaW1pdGVySW5kZXhdKWlmKHRoaXMuZGVsaW1pdGVySW5kZXg9PT10aGlzLmRlbGltaXRlck9wZW4ubGVuZ3RoLTEpe2NvbnN0IGU9dGhpcy5pbmRleCsxLXRoaXMuZGVsaW1pdGVyT3Blbi5sZW5ndGg7ZT50aGlzLnNlY3Rpb25TdGFydCYmdGhpcy5jYnMub250ZXh0KHRoaXMuc2VjdGlvblN0YXJ0LGUpLHRoaXMuc3RhdGU9Myx0aGlzLnNlY3Rpb25TdGFydD1lfWVsc2UgdGhpcy5kZWxpbWl0ZXJJbmRleCsrO2Vsc2UgdGhpcy5pblJDREFUQT8odGhpcy5zdGF0ZT0zMix0aGlzLnN0YXRlSW5SQ0RBVEEoZSkpOih0aGlzLnN0YXRlPTEsdGhpcy5zdGF0ZVRleHQoZSkpfXN0YXRlSW50ZXJwb2xhdGlvbihlKXtlPT09dGhpcy5kZWxpbWl0ZXJDbG9zZVswXSYmKHRoaXMuc3RhdGU9NCx0aGlzLmRlbGltaXRlckluZGV4PTAsdGhpcy5zdGF0ZUludGVycG9sYXRpb25DbG9zZShlKSl9c3RhdGVJbnRlcnBvbGF0aW9uQ2xvc2UoZSl7ZT09PXRoaXMuZGVsaW1pdGVyQ2xvc2VbdGhpcy5kZWxpbWl0ZXJJbmRleF0/dGhpcy5kZWxpbWl0ZXJJbmRleD09PXRoaXMuZGVsaW1pdGVyQ2xvc2UubGVuZ3RoLTE/KHRoaXMuY2JzLm9uaW50ZXJwb2xhdGlvbih0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KzEpLHRoaXMuaW5SQ0RBVEE/dGhpcy5zdGF0ZT0zMjp0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTp0aGlzLmRlbGltaXRlckluZGV4Kys6KHRoaXMuc3RhdGU9Myx0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbihlKSl9c3RhdGVTcGVjaWFsU3RhcnRTZXF1ZW5jZShlKXtjb25zdCBjPXRoaXMuc2VxdWVuY2VJbmRleD09PXRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aDtpZihjP2lzRW5kT2ZUYWdTZWN0aW9uKGUpOigzMnxlKT09PXRoaXMuY3VycmVudFNlcXVlbmNlW3RoaXMuc2VxdWVuY2VJbmRleF0pe2lmKCFjKXJldHVybiB2b2lkIHRoaXMuc2VxdWVuY2VJbmRleCsrfWVsc2UgdGhpcy5pblJDREFUQT0hMTt0aGlzLnNlcXVlbmNlSW5kZXg9MCx0aGlzLnN0YXRlPTYsdGhpcy5zdGF0ZUluVGFnTmFtZShlKX1zdGF0ZUluUkNEQVRBKGUpe2lmKHRoaXMuc2VxdWVuY2VJbmRleD09PXRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aCl7aWYoNjI9PT1lfHxpc1doaXRlc3BhY2UoZSkpe2NvbnN0IGM9dGhpcy5pbmRleC10aGlzLmN1cnJlbnRTZXF1ZW5jZS5sZW5ndGg7aWYodGhpcy5zZWN0aW9uU3RhcnQ8Yyl7Y29uc3QgZT10aGlzLmluZGV4O3RoaXMuaW5kZXg9Yyx0aGlzLmNicy5vbnRleHQodGhpcy5zZWN0aW9uU3RhcnQsYyksdGhpcy5pbmRleD1lfXJldHVybiB0aGlzLnNlY3Rpb25TdGFydD1jKzIsdGhpcy5zdGF0ZUluQ2xvc2luZ1RhZ05hbWUoZSksdm9pZCh0aGlzLmluUkNEQVRBPSExKX10aGlzLnNlcXVlbmNlSW5kZXg9MH0oMzJ8ZSk9PT10aGlzLmN1cnJlbnRTZXF1ZW5jZVt0aGlzLnNlcXVlbmNlSW5kZXhdP3RoaXMuc2VxdWVuY2VJbmRleCs9MTowPT09dGhpcy5zZXF1ZW5jZUluZGV4P3RoaXMuY3VycmVudFNlcXVlbmNlPT09VnQuVGl0bGVFbmR8fHRoaXMuY3VycmVudFNlcXVlbmNlPT09VnQuVGV4dGFyZWFFbmQmJiF0aGlzLmluU0ZDUm9vdD90aGlzLmluVlByZXx8ZSE9PXRoaXMuZGVsaW1pdGVyT3BlblswXXx8KHRoaXMuc3RhdGU9Mix0aGlzLmRlbGltaXRlckluZGV4PTAsdGhpcy5zdGF0ZUludGVycG9sYXRpb25PcGVuKGUpKTp0aGlzLmZhc3RGb3J3YXJkVG8oNjApJiYodGhpcy5zZXF1ZW5jZUluZGV4PTEpOnRoaXMuc2VxdWVuY2VJbmRleD1OdW1iZXIoNjA9PT1lKX1zdGF0ZUNEQVRBU2VxdWVuY2UoZSl7ZT09PVZ0LkNkYXRhW3RoaXMuc2VxdWVuY2VJbmRleF0/Kyt0aGlzLnNlcXVlbmNlSW5kZXg9PT1WdC5DZGF0YS5sZW5ndGgmJih0aGlzLnN0YXRlPTI4LHRoaXMuY3VycmVudFNlcXVlbmNlPVZ0LkNkYXRhRW5kLHRoaXMuc2VxdWVuY2VJbmRleD0wLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6KHRoaXMuc2VxdWVuY2VJbmRleD0wLHRoaXMuc3RhdGU9MjMsdGhpcy5zdGF0ZUluRGVjbGFyYXRpb24oZSkpfWZhc3RGb3J3YXJkVG8oZSl7Zm9yKDsrK3RoaXMuaW5kZXg8dGhpcy5idWZmZXIubGVuZ3RoOyl7Y29uc3QgYz10aGlzLmJ1ZmZlci5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpO2lmKDEwPT09YyYmdGhpcy5uZXdsaW5lcy5wdXNoKHRoaXMuaW5kZXgpLGM9PT1lKXJldHVybiEwfXJldHVybiB0aGlzLmluZGV4PXRoaXMuYnVmZmVyLmxlbmd0aC0xLCExfXN0YXRlSW5Db21tZW50TGlrZShlKXtlPT09dGhpcy5jdXJyZW50U2VxdWVuY2VbdGhpcy5zZXF1ZW5jZUluZGV4XT8rK3RoaXMuc2VxdWVuY2VJbmRleD09PXRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aCYmKHRoaXMuY3VycmVudFNlcXVlbmNlPT09VnQuQ2RhdGFFbmQ/dGhpcy5jYnMub25jZGF0YSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4LTIpOnRoaXMuY2JzLm9uY29tbWVudCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4LTIpLHRoaXMuc2VxdWVuY2VJbmRleD0wLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSx0aGlzLnN0YXRlPTEpOjA9PT10aGlzLnNlcXVlbmNlSW5kZXg/dGhpcy5mYXN0Rm9yd2FyZFRvKHRoaXMuY3VycmVudFNlcXVlbmNlWzBdKSYmKHRoaXMuc2VxdWVuY2VJbmRleD0xKTplIT09dGhpcy5jdXJyZW50U2VxdWVuY2VbdGhpcy5zZXF1ZW5jZUluZGV4LTFdJiYodGhpcy5zZXF1ZW5jZUluZGV4PTApfXN0YXJ0U3BlY2lhbChlLGMpe3RoaXMuZW50ZXJSQ0RBVEEoZSxjKSx0aGlzLnN0YXRlPTMxfWVudGVyUkNEQVRBKGUsYyl7dGhpcy5pblJDREFUQT0hMCx0aGlzLmN1cnJlbnRTZXF1ZW5jZT1lLHRoaXMuc2VxdWVuY2VJbmRleD1jfXN0YXRlQmVmb3JlVGFnTmFtZShlKXszMz09PWU/KHRoaXMuc3RhdGU9MjIsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTo2Mz09PWU/KHRoaXMuc3RhdGU9MjQsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTppc1RhZ1N0YXJ0Q2hhcihlKT8odGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCwwPT09dGhpcy5tb2RlP3RoaXMuc3RhdGU9Njp0aGlzLmluU0ZDUm9vdD90aGlzLnN0YXRlPTM0OnRoaXMuaW5YTUw/dGhpcy5zdGF0ZT02OnRoaXMuc3RhdGU9MTE2PT09ZT8zMDoxMTU9PT1lPzI5OjYpOjQ3PT09ZT90aGlzLnN0YXRlPTg6KHRoaXMuc3RhdGU9MSx0aGlzLnN0YXRlVGV4dChlKSl9c3RhdGVJblRhZ05hbWUoZSl7aXNFbmRPZlRhZ1NlY3Rpb24oZSkmJnRoaXMuaGFuZGxlVGFnTmFtZShlKX1zdGF0ZUluU0ZDUm9vdFRhZ05hbWUoZSl7aWYoaXNFbmRPZlRhZ1NlY3Rpb24oZSkpe2NvbnN0IGM9dGhpcy5idWZmZXIuc2xpY2UodGhpcy5zZWN0aW9uU3RhcnQsdGhpcy5pbmRleCk7InRlbXBsYXRlIiE9PWMmJnRoaXMuZW50ZXJSQ0RBVEEodG9DaGFyQ29kZXMoIjwvIitjKSwwKSx0aGlzLmhhbmRsZVRhZ05hbWUoZSl9fWhhbmRsZVRhZ05hbWUoZSl7dGhpcy5jYnMub25vcGVudGFnbmFtZSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnNlY3Rpb25TdGFydD0tMSx0aGlzLnN0YXRlPTExLHRoaXMuc3RhdGVCZWZvcmVBdHRyTmFtZShlKX1zdGF0ZUJlZm9yZUNsb3NpbmdUYWdOYW1lKGUpe2lzV2hpdGVzcGFjZShlKXx8KDYyPT09ZT8odGhpcy5zdGF0ZT0xLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6KHRoaXMuc3RhdGU9aXNUYWdTdGFydENoYXIoZSk/OToyNyx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KSl9c3RhdGVJbkNsb3NpbmdUYWdOYW1lKGUpeyg2Mj09PWV8fGlzV2hpdGVzcGFjZShlKSkmJih0aGlzLmNicy5vbmNsb3NldGFnKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PS0xLHRoaXMuc3RhdGU9MTAsdGhpcy5zdGF0ZUFmdGVyQ2xvc2luZ1RhZ05hbWUoZSkpfXN0YXRlQWZ0ZXJDbG9zaW5nVGFnTmFtZShlKXs2Mj09PWUmJih0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUJlZm9yZUF0dHJOYW1lKGUpezYyPT09ZT8odGhpcy5jYnMub25vcGVudGFnZW5kKHRoaXMuaW5kZXgpLHRoaXMuaW5SQ0RBVEE/dGhpcy5zdGF0ZT0zMjp0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTo0Nz09PWU/dGhpcy5zdGF0ZT03OjYwPT09ZSYmNDc9PT10aGlzLnBlZWsoKT8odGhpcy5jYnMub25vcGVudGFnZW5kKHRoaXMuaW5kZXgpLHRoaXMuc3RhdGU9NSx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KTppc1doaXRlc3BhY2UoZSl8fHRoaXMuaGFuZGxlQXR0clN0YXJ0KGUpfWhhbmRsZUF0dHJTdGFydChlKXsxMTg9PT1lJiY0NT09PXRoaXMucGVlaygpPyh0aGlzLnN0YXRlPTEzLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgpOjQ2PT09ZXx8NTg9PT1lfHw2ND09PWV8fDM1PT09ZT8odGhpcy5jYnMub25kaXJuYW1lKHRoaXMuaW5kZXgsdGhpcy5pbmRleCsxKSx0aGlzLnN0YXRlPTE0LHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6KHRoaXMuc3RhdGU9MTIsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCl9c3RhdGVJblNlbGZDbG9zaW5nVGFnKGUpezYyPT09ZT8odGhpcy5jYnMub25zZWxmY2xvc2luZ3RhZyh0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxLHRoaXMuaW5SQ0RBVEE9ITEpOmlzV2hpdGVzcGFjZShlKXx8KHRoaXMuc3RhdGU9MTEsdGhpcy5zdGF0ZUJlZm9yZUF0dHJOYW1lKGUpKX1zdGF0ZUluQXR0ck5hbWUoZSl7KDYxPT09ZXx8aXNFbmRPZlRhZ1NlY3Rpb24oZSkpJiYodGhpcy5jYnMub25hdHRyaWJuYW1lKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpfXN0YXRlSW5EaXJOYW1lKGUpezYxPT09ZXx8aXNFbmRPZlRhZ1NlY3Rpb24oZSk/KHRoaXMuY2JzLm9uZGlybmFtZSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLmhhbmRsZUF0dHJOYW1lRW5kKGUpKTo1OD09PWU/KHRoaXMuY2JzLm9uZGlybmFtZSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTE0LHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6NDY9PT1lJiYodGhpcy5jYnMub25kaXJuYW1lKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc3RhdGU9MTYsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUluRGlyQXJnKGUpezYxPT09ZXx8aXNFbmRPZlRhZ1NlY3Rpb24oZSk/KHRoaXMuY2JzLm9uZGlyYXJnKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpOjkxPT09ZT90aGlzLnN0YXRlPTE1OjQ2PT09ZSYmKHRoaXMuY2JzLm9uZGlyYXJnKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc3RhdGU9MTYsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUluRHluYW1pY0RpckFyZyhlKXs5Mz09PWU/dGhpcy5zdGF0ZT0xNDooNjE9PT1lfHxpc0VuZE9mVGFnU2VjdGlvbihlKSkmJih0aGlzLmNicy5vbmRpcmFyZyh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KzEpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpfXN0YXRlSW5EaXJNb2RpZmllcihlKXs2MT09PWV8fGlzRW5kT2ZUYWdTZWN0aW9uKGUpPyh0aGlzLmNicy5vbmRpcm1vZGlmaWVyKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpOjQ2PT09ZSYmKHRoaXMuY2JzLm9uZGlybW9kaWZpZXIodGhpcy5zZWN0aW9uU3RhcnQsdGhpcy5pbmRleCksdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1oYW5kbGVBdHRyTmFtZUVuZChlKXt0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4LHRoaXMuc3RhdGU9MTcsdGhpcy5jYnMub25hdHRyaWJuYW1lZW5kKHRoaXMuaW5kZXgpLHRoaXMuc3RhdGVBZnRlckF0dHJOYW1lKGUpfXN0YXRlQWZ0ZXJBdHRyTmFtZShlKXs2MT09PWU/dGhpcy5zdGF0ZT0xODo0Nz09PWV8fDYyPT09ZT8odGhpcy5jYnMub25hdHRyaWJlbmQoMCx0aGlzLnNlY3Rpb25TdGFydCksdGhpcy5zZWN0aW9uU3RhcnQ9LTEsdGhpcy5zdGF0ZT0xMSx0aGlzLnN0YXRlQmVmb3JlQXR0ck5hbWUoZSkpOmlzV2hpdGVzcGFjZShlKXx8KHRoaXMuY2JzLm9uYXR0cmliZW5kKDAsdGhpcy5zZWN0aW9uU3RhcnQpLHRoaXMuaGFuZGxlQXR0clN0YXJ0KGUpKX1zdGF0ZUJlZm9yZUF0dHJWYWx1ZShlKXszND09PWU/KHRoaXMuc3RhdGU9MTksdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTozOT09PWU/KHRoaXMuc3RhdGU9MjAsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTppc1doaXRlc3BhY2UoZSl8fCh0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4LHRoaXMuc3RhdGU9MjEsdGhpcy5zdGF0ZUluQXR0clZhbHVlTm9RdW90ZXMoZSkpfWhhbmRsZUluQXR0clZhbHVlKGUsYyl7KGU9PT1jfHx0aGlzLmZhc3RGb3J3YXJkVG8oYykpJiYodGhpcy5jYnMub25hdHRyaWJkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PS0xLHRoaXMuY2JzLm9uYXR0cmliZW5kKDM0PT09Yz8zOjIsdGhpcy5pbmRleCsxKSx0aGlzLnN0YXRlPTExKX1zdGF0ZUluQXR0clZhbHVlRG91YmxlUXVvdGVzKGUpe3RoaXMuaGFuZGxlSW5BdHRyVmFsdWUoZSwzNCl9c3RhdGVJbkF0dHJWYWx1ZVNpbmdsZVF1b3RlcyhlKXt0aGlzLmhhbmRsZUluQXR0clZhbHVlKGUsMzkpfXN0YXRlSW5BdHRyVmFsdWVOb1F1b3RlcyhlKXtpc1doaXRlc3BhY2UoZSl8fDYyPT09ZT8odGhpcy5jYnMub25hdHRyaWJkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PS0xLHRoaXMuY2JzLm9uYXR0cmliZW5kKDEsdGhpcy5pbmRleCksdGhpcy5zdGF0ZT0xMSx0aGlzLnN0YXRlQmVmb3JlQXR0ck5hbWUoZSkpOjM5IT09ZSYmNjAhPT1lJiY2MSE9PWUmJjk2IT09ZXx8dGhpcy5jYnMub25lcnIoMTgsdGhpcy5pbmRleCl9c3RhdGVCZWZvcmVEZWNsYXJhdGlvbihlKXs5MT09PWU/KHRoaXMuc3RhdGU9MjYsdGhpcy5zZXF1ZW5jZUluZGV4PTApOnRoaXMuc3RhdGU9NDU9PT1lPzI1OjIzfXN0YXRlSW5EZWNsYXJhdGlvbihlKXsoNjI9PT1lfHx0aGlzLmZhc3RGb3J3YXJkVG8oNjIpKSYmKHRoaXMuc3RhdGU9MSx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KzEpfXN0YXRlSW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSl7KDYyPT09ZXx8dGhpcy5mYXN0Rm9yd2FyZFRvKDYyKSkmJih0aGlzLmNicy5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbih0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUJlZm9yZUNvbW1lbnQoZSl7NDU9PT1lPyh0aGlzLnN0YXRlPTI4LHRoaXMuY3VycmVudFNlcXVlbmNlPVZ0LkNvbW1lbnRFbmQsdGhpcy5zZXF1ZW5jZUluZGV4PTIsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTp0aGlzLnN0YXRlPTIzfXN0YXRlSW5TcGVjaWFsQ29tbWVudChlKXsoNjI9PT1lfHx0aGlzLmZhc3RGb3J3YXJkVG8oNjIpKSYmKHRoaXMuY2JzLm9uY29tbWVudCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUJlZm9yZVNwZWNpYWxTKGUpe2U9PT1WdC5TY3JpcHRFbmRbM10/dGhpcy5zdGFydFNwZWNpYWwoVnQuU2NyaXB0RW5kLDQpOmU9PT1WdC5TdHlsZUVuZFszXT90aGlzLnN0YXJ0U3BlY2lhbChWdC5TdHlsZUVuZCw0KToodGhpcy5zdGF0ZT02LHRoaXMuc3RhdGVJblRhZ05hbWUoZSkpfXN0YXRlQmVmb3JlU3BlY2lhbFQoZSl7ZT09PVZ0LlRpdGxlRW5kWzNdP3RoaXMuc3RhcnRTcGVjaWFsKFZ0LlRpdGxlRW5kLDQpOmU9PT1WdC5UZXh0YXJlYUVuZFszXT90aGlzLnN0YXJ0U3BlY2lhbChWdC5UZXh0YXJlYUVuZCw0KToodGhpcy5zdGF0ZT02LHRoaXMuc3RhdGVJblRhZ05hbWUoZSkpfXN0YXJ0RW50aXR5KCl7fXN0YXRlSW5FbnRpdHkoKXt9cGFyc2UoZSl7Zm9yKHRoaXMuYnVmZmVyPWU7dGhpcy5pbmRleDx0aGlzLmJ1ZmZlci5sZW5ndGg7KXtjb25zdCBlPXRoaXMuYnVmZmVyLmNoYXJDb2RlQXQodGhpcy5pbmRleCk7c3dpdGNoKDEwPT09ZSYmMzMhPT10aGlzLnN0YXRlJiZ0aGlzLm5ld2xpbmVzLnB1c2godGhpcy5pbmRleCksdGhpcy5zdGF0ZSl7Y2FzZSAxOnRoaXMuc3RhdGVUZXh0KGUpO2JyZWFrO2Nhc2UgMjp0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbk9wZW4oZSk7YnJlYWs7Y2FzZSAzOnRoaXMuc3RhdGVJbnRlcnBvbGF0aW9uKGUpO2JyZWFrO2Nhc2UgNDp0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbkNsb3NlKGUpO2JyZWFrO2Nhc2UgMzE6dGhpcy5zdGF0ZVNwZWNpYWxTdGFydFNlcXVlbmNlKGUpO2JyZWFrO2Nhc2UgMzI6dGhpcy5zdGF0ZUluUkNEQVRBKGUpO2JyZWFrO2Nhc2UgMjY6dGhpcy5zdGF0ZUNEQVRBU2VxdWVuY2UoZSk7YnJlYWs7Y2FzZSAxOTp0aGlzLnN0YXRlSW5BdHRyVmFsdWVEb3VibGVRdW90ZXMoZSk7YnJlYWs7Y2FzZSAxMjp0aGlzLnN0YXRlSW5BdHRyTmFtZShlKTticmVhaztjYXNlIDEzOnRoaXMuc3RhdGVJbkRpck5hbWUoZSk7YnJlYWs7Y2FzZSAxNDp0aGlzLnN0YXRlSW5EaXJBcmcoZSk7YnJlYWs7Y2FzZSAxNTp0aGlzLnN0YXRlSW5EeW5hbWljRGlyQXJnKGUpO2JyZWFrO2Nhc2UgMTY6dGhpcy5zdGF0ZUluRGlyTW9kaWZpZXIoZSk7YnJlYWs7Y2FzZSAyODp0aGlzLnN0YXRlSW5Db21tZW50TGlrZShlKTticmVhaztjYXNlIDI3OnRoaXMuc3RhdGVJblNwZWNpYWxDb21tZW50KGUpO2JyZWFrO2Nhc2UgMTE6dGhpcy5zdGF0ZUJlZm9yZUF0dHJOYW1lKGUpO2JyZWFrO2Nhc2UgNjp0aGlzLnN0YXRlSW5UYWdOYW1lKGUpO2JyZWFrO2Nhc2UgMzQ6dGhpcy5zdGF0ZUluU0ZDUm9vdFRhZ05hbWUoZSk7YnJlYWs7Y2FzZSA5OnRoaXMuc3RhdGVJbkNsb3NpbmdUYWdOYW1lKGUpO2JyZWFrO2Nhc2UgNTp0aGlzLnN0YXRlQmVmb3JlVGFnTmFtZShlKTticmVhaztjYXNlIDE3OnRoaXMuc3RhdGVBZnRlckF0dHJOYW1lKGUpO2JyZWFrO2Nhc2UgMjA6dGhpcy5zdGF0ZUluQXR0clZhbHVlU2luZ2xlUXVvdGVzKGUpO2JyZWFrO2Nhc2UgMTg6dGhpcy5zdGF0ZUJlZm9yZUF0dHJWYWx1ZShlKTticmVhaztjYXNlIDg6dGhpcy5zdGF0ZUJlZm9yZUNsb3NpbmdUYWdOYW1lKGUpO2JyZWFrO2Nhc2UgMTA6dGhpcy5zdGF0ZUFmdGVyQ2xvc2luZ1RhZ05hbWUoZSk7YnJlYWs7Y2FzZSAyOTp0aGlzLnN0YXRlQmVmb3JlU3BlY2lhbFMoZSk7YnJlYWs7Y2FzZSAzMDp0aGlzLnN0YXRlQmVmb3JlU3BlY2lhbFQoZSk7YnJlYWs7Y2FzZSAyMTp0aGlzLnN0YXRlSW5BdHRyVmFsdWVOb1F1b3RlcyhlKTticmVhaztjYXNlIDc6dGhpcy5zdGF0ZUluU2VsZkNsb3NpbmdUYWcoZSk7YnJlYWs7Y2FzZSAyMzp0aGlzLnN0YXRlSW5EZWNsYXJhdGlvbihlKTticmVhaztjYXNlIDIyOnRoaXMuc3RhdGVCZWZvcmVEZWNsYXJhdGlvbihlKTticmVhaztjYXNlIDI1OnRoaXMuc3RhdGVCZWZvcmVDb21tZW50KGUpO2JyZWFrO2Nhc2UgMjQ6dGhpcy5zdGF0ZUluUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUpO2JyZWFrO2Nhc2UgMzM6dGhpcy5zdGF0ZUluRW50aXR5KCl9dGhpcy5pbmRleCsrfXRoaXMuY2xlYW51cCgpLHRoaXMuZmluaXNoKCl9Y2xlYW51cCgpe3RoaXMuc2VjdGlvblN0YXJ0IT09dGhpcy5pbmRleCYmKDE9PT10aGlzLnN0YXRlfHwzMj09PXRoaXMuc3RhdGUmJjA9PT10aGlzLnNlcXVlbmNlSW5kZXg/KHRoaXMuY2JzLm9udGV4dCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KToxOSE9PXRoaXMuc3RhdGUmJjIwIT09dGhpcy5zdGF0ZSYmMjEhPT10aGlzLnN0YXRlfHwodGhpcy5jYnMub25hdHRyaWJkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgpKX1maW5pc2goKXt0aGlzLmhhbmRsZVRyYWlsaW5nRGF0YSgpLHRoaXMuY2JzLm9uZW5kKCl9aGFuZGxlVHJhaWxpbmdEYXRhKCl7Y29uc3QgZT10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5zZWN0aW9uU3RhcnQ+PWV8fCgyOD09PXRoaXMuc3RhdGU/dGhpcy5jdXJyZW50U2VxdWVuY2U9PT1WdC5DZGF0YUVuZD90aGlzLmNicy5vbmNkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LGUpOnRoaXMuY2JzLm9uY29tbWVudCh0aGlzLnNlY3Rpb25TdGFydCxlKTo2PT09dGhpcy5zdGF0ZXx8MTE9PT10aGlzLnN0YXRlfHwxOD09PXRoaXMuc3RhdGV8fDE3PT09dGhpcy5zdGF0ZXx8MTI9PT10aGlzLnN0YXRlfHwxMz09PXRoaXMuc3RhdGV8fDE0PT09dGhpcy5zdGF0ZXx8MTU9PT10aGlzLnN0YXRlfHwxNj09PXRoaXMuc3RhdGV8fDIwPT09dGhpcy5zdGF0ZXx8MTk9PT10aGlzLnN0YXRlfHwyMT09PXRoaXMuc3RhdGV8fDk9PT10aGlzLnN0YXRlfHx0aGlzLmNicy5vbnRleHQodGhpcy5zZWN0aW9uU3RhcnQsZSkpfWVtaXRDb2RlUG9pbnQoZSxjKXt9fSh2bix7b25lcnI6ZW1pdEVycm9yLG9udGV4dChlLGMpe29uVGV4dChnZXRTbGljZShlLGMpLGUsYyl9LG9udGV4dGVudGl0eShlLGMsZCl7b25UZXh0KGUsYyxkKX0sb25pbnRlcnBvbGF0aW9uKGUsYyl7aWYoaG4pcmV0dXJuIG9uVGV4dChnZXRTbGljZShlLGMpLGUsYyk7bGV0IGQ9ZStibi5kZWxpbWl0ZXJPcGVuLmxlbmd0aCxoPWMtYm4uZGVsaW1pdGVyQ2xvc2UubGVuZ3RoO2Zvcig7aXNXaGl0ZXNwYWNlKHNuLmNoYXJDb2RlQXQoZCkpOylkKys7Zm9yKDtpc1doaXRlc3BhY2Uoc24uY2hhckNvZGVBdChoLTEpKTspaC0tO2xldCB2PWdldFNsaWNlKGQsaCk7di5pbmNsdWRlcygiJiIpJiYodj1ybi5kZWNvZGVFbnRpdGllcyh2LCExKSksYWRkTm9kZSh7dHlwZTo1LGNvbnRlbnQ6Y3JlYXRlRXhwKHYsITEsZ2V0TG9jKGQsaCkpLGxvYzpnZXRMb2MoZSxjKX0pfSxvbm9wZW50YWduYW1lKGUsYyl7Y29uc3QgZD1nZXRTbGljZShlLGMpO2xuPXt0eXBlOjEsdGFnOmQsbnM6cm4uZ2V0TmFtZXNwYWNlKGQsdm5bMF0scm4ubnMpLHRhZ1R5cGU6MCxwcm9wczpbXSxjaGlsZHJlbjpbXSxsb2M6Z2V0TG9jKGUtMSxjKSxjb2RlZ2VuTm9kZTp2b2lkIDB9fSxvbm9wZW50YWdlbmQoZSl7ZW5kT3BlblRhZyhlKX0sb25jbG9zZXRhZyhlLGMpe2NvbnN0IGQ9Z2V0U2xpY2UoZSxjKTtpZighcm4uaXNWb2lkVGFnKGQpKXtsZXQgaD0hMTtmb3IobGV0IGU9MDtlPHZuLmxlbmd0aDtlKyspe2lmKHZuW2VdLnRhZy50b0xvd2VyQ2FzZSgpPT09ZC50b0xvd2VyQ2FzZSgpKXtoPSEwLGU+MCYmZW1pdEVycm9yKDI0LHZuWzBdLmxvYy5zdGFydC5vZmZzZXQpO2ZvcihsZXQgZD0wO2Q8PWU7ZCsrKXtvbkNsb3NlVGFnKHZuLnNoaWZ0KCksYyxkPGUpfWJyZWFrfX1ofHxlbWl0RXJyb3IoMjMsYmFja1RyYWNrKGUsNjApKX19LG9uc2VsZmNsb3Npbmd0YWcoZSl7Y29uc3QgYz1sbi50YWc7bG4uaXNTZWxmQ2xvc2luZz0hMCxlbmRPcGVuVGFnKGUpLHZuWzBdJiZ2blswXS50YWc9PT1jJiZvbkNsb3NlVGFnKHZuLnNoaWZ0KCksZSl9LG9uYXR0cmlibmFtZShlLGMpe2NuPXt0eXBlOjYsbmFtZTpnZXRTbGljZShlLGMpLG5hbWVMb2M6Z2V0TG9jKGUsYyksdmFsdWU6dm9pZCAwLGxvYzpnZXRMb2MoZSl9fSxvbmRpcm5hbWUoZSxjKXtjb25zdCBkPWdldFNsaWNlKGUsYyksaD0iLiI9PT1kfHwiOiI9PT1kPyJiaW5kIjoiQCI9PT1kPyJvbiI6IiMiPT09ZD8ic2xvdCI6ZC5zbGljZSgyKTtpZihobnx8IiIhPT1ofHxlbWl0RXJyb3IoMjYsZSksaG58fCIiPT09aCljbj17dHlwZTo2LG5hbWU6ZCxuYW1lTG9jOmdldExvYyhlLGMpLHZhbHVlOnZvaWQgMCxsb2M6Z2V0TG9jKGUpfTtlbHNlIGlmKGNuPXt0eXBlOjcsbmFtZTpoLHJhd05hbWU6ZCxleHA6dm9pZCAwLGFyZzp2b2lkIDAsbW9kaWZpZXJzOiIuIj09PWQ/W2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oInByb3AiKV06W10sbG9jOmdldExvYyhlKX0sInByZSI9PT1oKXtobj1ibi5pblZQcmU9ITAsZ249bG47Y29uc3QgZT1sbi5wcm9wcztmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKyk3PT09ZVtjXS50eXBlJiYoZVtjXT1kaXJUb0F0dHIoZVtjXSkpfX0sb25kaXJhcmcoZSxjKXtpZihlPT09YylyZXR1cm47Y29uc3QgZD1nZXRTbGljZShlLGMpO2lmKGhuJiYhaXNWUHJlKGNuKSljbi5uYW1lKz1kLHNldExvY0VuZChjbi5uYW1lTG9jLGMpO2Vsc2V7Y29uc3QgaD0iWyIhPT1kWzBdO2NuLmFyZz1jcmVhdGVFeHAoaD9kOmQuc2xpY2UoMSwtMSksaCxnZXRMb2MoZSxjKSxoPzM6MCl9fSxvbmRpcm1vZGlmaWVyKGUsYyl7Y29uc3QgZD1nZXRTbGljZShlLGMpO2lmKGhuJiYhaXNWUHJlKGNuKSljbi5uYW1lKz0iLiIrZCxzZXRMb2NFbmQoY24ubmFtZUxvYyxjKTtlbHNlIGlmKCJzbG90Ij09PWNuLm5hbWUpe2NvbnN0IGU9Y24uYXJnO2UmJihlLmNvbnRlbnQrPSIuIitkLHNldExvY0VuZChlLmxvYyxjKSl9ZWxzZXtjb25zdCBoPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZCwhMCxnZXRMb2MoZSxjKSk7Y24ubW9kaWZpZXJzLnB1c2goaCl9fSxvbmF0dHJpYmRhdGEoZSxjKXt1bis9Z2V0U2xpY2UoZSxjKSxkbjwwJiYoZG49ZSkscG49Y30sb25hdHRyaWJlbnRpdHkoZSxjLGQpe3VuKz1lLGRuPDAmJihkbj1jKSxwbj1kfSxvbmF0dHJpYm5hbWVlbmQoZSl7Y29uc3QgYz1jbi5sb2Muc3RhcnQub2Zmc2V0LGQ9Z2V0U2xpY2UoYyxlKTs3PT09Y24udHlwZSYmKGNuLnJhd05hbWU9ZCksbG4ucHJvcHMuc29tZShlPT4oNz09PWUudHlwZT9lLnJhd05hbWU6ZS5uYW1lKT09PWQpJiZlbWl0RXJyb3IoMixjKX0sb25hdHRyaWJlbmQoZSxjKXtpZihsbiYmY24pe2lmKHNldExvY0VuZChjbi5sb2MsYyksMCE9PWUpaWYodW4uaW5jbHVkZXMoIiYiKSYmKHVuPXJuLmRlY29kZUVudGl0aWVzKHVuLCEwKSksNj09PWNuLnR5cGUpImNsYXNzIj09PWNuLm5hbWUmJih1bj1jb25kZW5zZSh1bikudHJpbSgpKSwxIT09ZXx8dW58fGVtaXRFcnJvcigxMyxjKSxjbi52YWx1ZT17dHlwZToyLGNvbnRlbnQ6dW4sbG9jOjE9PT1lP2dldExvYyhkbixwbik6Z2V0TG9jKGRuLTEscG4rMSl9LGJuLmluU0ZDUm9vdCYmInRlbXBsYXRlIj09PWxuLnRhZyYmImxhbmciPT09Y24ubmFtZSYmdW4mJiJodG1sIiE9PXVuJiZibi5lbnRlclJDREFUQSh0b0NoYXJDb2RlcygiPC90ZW1wbGF0ZSIpLDApO2Vsc2V7bGV0IGU9MDtjbi5leHA9Y3JlYXRlRXhwKHVuLCExLGdldExvYyhkbixwbiksMCxlKSwiZm9yIj09PWNuLm5hbWUmJihjbi5mb3JQYXJzZVJlc3VsdD1mdW5jdGlvbihlKXtjb25zdCBjPWUubG9jLGQ9ZS5jb250ZW50LGg9ZC5tYXRjaCh0bik7aWYoIWgpcmV0dXJuO2NvbnN0Wyx2LGJdPWgsY3JlYXRlQWxpYXNFeHByZXNzaW9uPShlLGQsaD0hMSk9Pntjb25zdCB2PWMuc3RhcnQub2Zmc2V0K2Q7cmV0dXJuIGNyZWF0ZUV4cChlLCExLGdldExvYyh2LHYrZS5sZW5ndGgpLDAsaD8xOjApfSx5PXtzb3VyY2U6Y3JlYXRlQWxpYXNFeHByZXNzaW9uKGIudHJpbSgpLGQuaW5kZXhPZihiLHYubGVuZ3RoKSksdmFsdWU6dm9pZCAwLGtleTp2b2lkIDAsaW5kZXg6dm9pZCAwLGZpbmFsaXplZDohMX07bGV0IEU9di50cmltKCkucmVwbGFjZSh4biwiIikudHJpbSgpO2NvbnN0IGs9di5pbmRleE9mKEUpLF89RS5tYXRjaCh5bik7aWYoXyl7RT1FLnJlcGxhY2UoeW4sIiIpLnRyaW0oKTtjb25zdCBlPV9bMV0udHJpbSgpO2xldCBjO2lmKGUmJihjPWQuaW5kZXhPZihlLGsrRS5sZW5ndGgpLHkua2V5PWNyZWF0ZUFsaWFzRXhwcmVzc2lvbihlLGMsITApKSxfWzJdKXtjb25zdCBoPV9bMl0udHJpbSgpO2gmJih5LmluZGV4PWNyZWF0ZUFsaWFzRXhwcmVzc2lvbihoLGQuaW5kZXhPZihoLHkua2V5P2MrZS5sZW5ndGg6aytFLmxlbmd0aCksITApKX19RSYmKHkudmFsdWU9Y3JlYXRlQWxpYXNFeHByZXNzaW9uKEUsaywhMCkpO3JldHVybiB5fShjbi5leHApKTtsZXQgYz0tMTsiYmluZCI9PT1jbi5uYW1lJiYoYz1jbi5tb2RpZmllcnMuZmluZEluZGV4KGU9PiJzeW5jIj09PWUuY29udGVudCkpPi0xJiZjaGVja0NvbXBhdEVuYWJsZWQoIkNPTVBJTEVSX1ZfQklORF9TWU5DIixybixjbi5sb2MsY24uYXJnLmxvYy5zb3VyY2UpJiYoY24ubmFtZT0ibW9kZWwiLGNuLm1vZGlmaWVycy5zcGxpY2UoYywxKSl9Nz09PWNuLnR5cGUmJiJwcmUiPT09Y24ubmFtZXx8bG4ucHJvcHMucHVzaChjbil9dW49IiIsZG49cG49LTF9LG9uY29tbWVudChlLGMpe3JuLmNvbW1lbnRzJiZhZGROb2RlKHt0eXBlOjMsY29udGVudDpnZXRTbGljZShlLGMpLGxvYzpnZXRMb2MoZS00LGMrMyl9KX0sb25lbmQoKXtjb25zdCBlPXNuLmxlbmd0aDtmb3IobGV0IGM9MDtjPHZuLmxlbmd0aDtjKyspb25DbG9zZVRhZyh2bltjXSxlLTEpLGVtaXRFcnJvcigyNCx2bltjXS5sb2Muc3RhcnQub2Zmc2V0KX0sb25jZGF0YShlLGMpezAhPT12blswXS5ucz9vblRleHQoZ2V0U2xpY2UoZSxjKSxlLGMpOmVtaXRFcnJvcigxLGUtOSl9LG9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKGUpezA9PT0odm5bMF0/dm5bMF0ubnM6cm4ubnMpJiZlbWl0RXJyb3IoMjEsZS0xKX19KSx5bj0vLChbXixcfVxdXSopKD86LChbXixcfVxdXSopKT8kLyx4bj0vXlwofFwpJC9nO2Z1bmN0aW9uIGdldFNsaWNlKGUsYyl7cmV0dXJuIHNuLnNsaWNlKGUsYyl9ZnVuY3Rpb24gZW5kT3BlblRhZyhlKXtibi5pblNGQ1Jvb3QmJihsbi5pbm5lckxvYz1nZXRMb2MoZSsxLGUrMSkpLGFkZE5vZGUobG4pO2NvbnN0e3RhZzpjLG5zOmR9PWxuOzA9PT1kJiZybi5pc1ByZVRhZyhjKSYmbW4rKyxybi5pc1ZvaWRUYWcoYyk/b25DbG9zZVRhZyhsbixlKToodm4udW5zaGlmdChsbiksMSE9PWQmJjIhPT1kfHwoYm4uaW5YTUw9ITApKSxsbj1udWxsfWZ1bmN0aW9uIG9uVGV4dChlLGMsZCl7e2NvbnN0IGM9dm5bMF0mJnZuWzBdLnRhZzsic2NyaXB0IiE9PWMmJiJzdHlsZSIhPT1jJiZlLmluY2x1ZGVzKCImIikmJihlPXJuLmRlY29kZUVudGl0aWVzKGUsITEpKX1jb25zdCBoPXZuWzBdfHxhbix2PWguY2hpbGRyZW5baC5jaGlsZHJlbi5sZW5ndGgtMV07diYmMj09PXYudHlwZT8odi5jb250ZW50Kz1lLHNldExvY0VuZCh2LmxvYyxkKSk6aC5jaGlsZHJlbi5wdXNoKHt0eXBlOjIsY29udGVudDplLGxvYzpnZXRMb2MoYyxkKX0pfWZ1bmN0aW9uIG9uQ2xvc2VUYWcoZSxjLGQ9ITEpe3NldExvY0VuZChlLmxvYyxkP2JhY2tUcmFjayhjLDYwKTpmdW5jdGlvbihlLGMpe2xldCBkPWU7Zm9yKDtzbi5jaGFyQ29kZUF0KGQpIT09YyYmZDxzbi5sZW5ndGgtMTspZCsrO3JldHVybiBkfShjLDYyKSsxKSxibi5pblNGQ1Jvb3QmJihlLmNoaWxkcmVuLmxlbmd0aD9lLmlubmVyTG9jLmVuZD1DZSh7fSxlLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTFdLmxvYy5lbmQpOmUuaW5uZXJMb2MuZW5kPUNlKHt9LGUuaW5uZXJMb2Muc3RhcnQpLGUuaW5uZXJMb2Muc291cmNlPWdldFNsaWNlKGUuaW5uZXJMb2Muc3RhcnQub2Zmc2V0LGUuaW5uZXJMb2MuZW5kLm9mZnNldCkpO2NvbnN0e3RhZzpoLG5zOnYsY2hpbGRyZW46Yn09ZTtpZihobnx8KCJzbG90Ij09PWg/ZS50YWdUeXBlPTI6aXNGcmFnbWVudFRlbXBsYXRlKGUpP2UudGFnVHlwZT0zOmZ1bmN0aW9uKHt0YWc6ZSxwcm9wczpjfSl7aWYocm4uaXNDdXN0b21FbGVtZW50KGUpKXJldHVybiExO2lmKCJjb21wb25lbnQiPT09ZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGU+NjQmJmU8OTF9KGUuY2hhckNvZGVBdCgwKSl8fGlzQ29yZUNvbXBvbmVudChlKXx8cm4uaXNCdWlsdEluQ29tcG9uZW50JiZybi5pc0J1aWx0SW5Db21wb25lbnQoZSl8fHJuLmlzTmF0aXZlVGFnJiYhcm4uaXNOYXRpdmVUYWcoZSkpcmV0dXJuITA7Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2NvbnN0IGQ9Y1tlXTtpZig2PT09ZC50eXBlKXtpZigiaXMiPT09ZC5uYW1lJiZkLnZhbHVlKXtpZihkLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgidnVlOiIpKXJldHVybiEwO2lmKGNoZWNrQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfSVNfT05fRUxFTUVOVCIscm4sZC5sb2MpKXJldHVybiEwfX1lbHNlIGlmKCJiaW5kIj09PWQubmFtZSYmaXNTdGF0aWNBcmdPZihkLmFyZywiaXMiKSYmY2hlY2tDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixybixkLmxvYykpcmV0dXJuITB9cmV0dXJuITF9KGUpJiYoZS50YWdUeXBlPTEpKSxibi5pblJDREFUQXx8KGUuY2hpbGRyZW49Y29uZGVuc2VXaGl0ZXNwYWNlKGIpKSwwPT09diYmcm4uaXNJZ25vcmVOZXdsaW5lVGFnKGgpKXtjb25zdCBlPWJbMF07ZSYmMj09PWUudHlwZSYmKGUuY29udGVudD1lLmNvbnRlbnQucmVwbGFjZSgvXlxyP1xuLywiIikpfTA9PT12JiZybi5pc1ByZVRhZyhoKSYmbW4tLSxnbj09PWUmJihobj1ibi5pblZQcmU9ITEsZ249bnVsbCksYm4uaW5YTUwmJjA9PT0odm5bMF0/dm5bMF0ubnM6cm4ubnMpJiYoYm4uaW5YTUw9ITEpO3tjb25zdCBjPWUucHJvcHM7aWYoIWJuLmluU0ZDUm9vdCYmaXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEUiLHJuKSYmInRlbXBsYXRlIj09PWUudGFnJiYhaXNGcmFnbWVudFRlbXBsYXRlKGUpKXtjb25zdCBjPXZuWzBdfHxhbixkPWMuY2hpbGRyZW4uaW5kZXhPZihlKTtjLmNoaWxkcmVuLnNwbGljZShkLDEsLi4uZS5jaGlsZHJlbil9Y29uc3QgZD1jLmZpbmQoZT0+Nj09PWUudHlwZSYmImlubGluZS10ZW1wbGF0ZSI9PT1lLm5hbWUpO2QmJmNoZWNrQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFIixybixkLmxvYykmJmUuY2hpbGRyZW4ubGVuZ3RoJiYoZC52YWx1ZT17dHlwZToyLGNvbnRlbnQ6Z2V0U2xpY2UoZS5jaGlsZHJlblswXS5sb2Muc3RhcnQub2Zmc2V0LGUuY2hpbGRyZW5bZS5jaGlsZHJlbi5sZW5ndGgtMV0ubG9jLmVuZC5vZmZzZXQpLGxvYzpkLmxvY30pfX1mdW5jdGlvbiBiYWNrVHJhY2soZSxjKXtsZXQgZD1lO2Zvcig7c24uY2hhckNvZGVBdChkKSE9PWMmJmQ+PTA7KWQtLTtyZXR1cm4gZH1jb25zdCBTbj1uZXcgU2V0KFsiaWYiLCJlbHNlIiwiZWxzZS1pZiIsImZvciIsInNsb3QiXSk7ZnVuY3Rpb24gaXNGcmFnbWVudFRlbXBsYXRlKHt0YWc6ZSxwcm9wczpjfSl7aWYoInRlbXBsYXRlIj09PWUpZm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspaWYoNz09PWNbZV0udHlwZSYmU24uaGFzKGNbZV0ubmFtZSkpcmV0dXJuITA7cmV0dXJuITF9Y29uc3QgRW49L1xyXG4vZztmdW5jdGlvbiBjb25kZW5zZVdoaXRlc3BhY2UoZSl7Y29uc3QgYz0icHJlc2VydmUiIT09cm4ud2hpdGVzcGFjZTtsZXQgZD0hMTtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3Qgdj1lW2hdO2lmKDI9PT12LnR5cGUpaWYobW4pdi5jb250ZW50PXYuY29udGVudC5yZXBsYWNlKEVuLCJcbiIpO2Vsc2UgaWYoaXNBbGxXaGl0ZXNwYWNlKHYuY29udGVudCkpe2NvbnN0IGI9ZVtoLTFdJiZlW2gtMV0udHlwZSx5PWVbaCsxXSYmZVtoKzFdLnR5cGU7IWJ8fCF5fHxjJiYoMz09PWImJigzPT09eXx8MT09PXkpfHwxPT09YiYmKDM9PT15fHwxPT09eSYmaGFzTmV3bGluZUNoYXIodi5jb250ZW50KSkpPyhkPSEwLGVbaF09bnVsbCk6di5jb250ZW50PSIgIn1lbHNlIGMmJih2LmNvbnRlbnQ9Y29uZGVuc2Uodi5jb250ZW50KSl9cmV0dXJuIGQ/ZS5maWx0ZXIoQm9vbGVhbik6ZX1mdW5jdGlvbiBoYXNOZXdsaW5lQ2hhcihlKXtmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKyl7Y29uc3QgZD1lLmNoYXJDb2RlQXQoYyk7aWYoMTA9PT1kfHwxMz09PWQpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gY29uZGVuc2UoZSl7bGV0IGM9IiIsZD0hMTtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKylpc1doaXRlc3BhY2UoZS5jaGFyQ29kZUF0KGgpKT9kfHwoYys9IiAiLGQ9ITApOihjKz1lW2hdLGQ9ITEpO3JldHVybiBjfWZ1bmN0aW9uIGFkZE5vZGUoZSl7KHZuWzBdfHxhbikuY2hpbGRyZW4ucHVzaChlKX1mdW5jdGlvbiBnZXRMb2MoZSxjKXtyZXR1cm57c3RhcnQ6Ym4uZ2V0UG9zKGUpLGVuZDpudWxsPT1jP2M6Ym4uZ2V0UG9zKGMpLHNvdXJjZTpudWxsPT1jP2M6Z2V0U2xpY2UoZSxjKX19ZnVuY3Rpb24gc2V0TG9jRW5kKGUsYyl7ZS5lbmQ9Ym4uZ2V0UG9zKGMpLGUuc291cmNlPWdldFNsaWNlKGUuc3RhcnQub2Zmc2V0LGMpfWZ1bmN0aW9uIGRpclRvQXR0cihlKXtjb25zdCBjPXt0eXBlOjYsbmFtZTplLnJhd05hbWUsbmFtZUxvYzpnZXRMb2MoZS5sb2Muc3RhcnQub2Zmc2V0LGUubG9jLnN0YXJ0Lm9mZnNldCtlLnJhd05hbWUubGVuZ3RoKSx2YWx1ZTp2b2lkIDAsbG9jOmUubG9jfTtpZihlLmV4cCl7Y29uc3QgZD1lLmV4cC5sb2M7ZC5lbmQub2Zmc2V0PGUubG9jLmVuZC5vZmZzZXQmJihkLnN0YXJ0Lm9mZnNldC0tLGQuc3RhcnQuY29sdW1uLS0sZC5lbmQub2Zmc2V0KyssZC5lbmQuY29sdW1uKyspLGMudmFsdWU9e3R5cGU6Mixjb250ZW50OmUuZXhwLmNvbnRlbnQsbG9jOmR9fXJldHVybiBjfWZ1bmN0aW9uIGNyZWF0ZUV4cChlLGM9ITEsZCxoPTAsdj0wKXtyZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihlLGMsZCxoKX1mdW5jdGlvbiBlbWl0RXJyb3IoZSxjLGQpe3JuLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihlLGdldExvYyhjLGMpKSl9ZnVuY3Rpb24gYmFzZVBhcnNlKGUsYyl7aWYoYm4ucmVzZXQoKSxsbj1udWxsLGNuPW51bGwsdW49IiIsZG49LTEscG49LTEsdm4ubGVuZ3RoPTAsc249ZSxybj1DZSh7fSxubiksYyl7bGV0IGU7Zm9yKGUgaW4gYyludWxsIT1jW2VdJiYocm5bZV09Y1tlXSl9Ym4ubW9kZT0iaHRtbCI9PT1ybi5wYXJzZU1vZGU/MToic2ZjIj09PXJuLnBhcnNlTW9kZT8yOjAsYm4uaW5YTUw9MT09PXJuLm5zfHwyPT09cm4ubnM7Y29uc3QgZD1jJiZjLmRlbGltaXRlcnM7ZCYmKGJuLmRlbGltaXRlck9wZW49dG9DaGFyQ29kZXMoZFswXSksYm4uZGVsaW1pdGVyQ2xvc2U9dG9DaGFyQ29kZXMoZFsxXSkpO2NvbnN0IGg9YW49Y3JlYXRlUm9vdChbXSxlKTtyZXR1cm4gYm4ucGFyc2Uoc24pLGgubG9jPWdldExvYygwLGUubGVuZ3RoKSxoLmNoaWxkcmVuPWNvbmRlbnNlV2hpdGVzcGFjZShoLmNoaWxkcmVuKSxhbj1udWxsLGh9ZnVuY3Rpb24gY2FjaGVTdGF0aWMoZSxjKXt3YWxrKGUsdm9pZCAwLGMsISFnZXRTaW5nbGVFbGVtZW50Um9vdChlKSl9ZnVuY3Rpb24gZ2V0U2luZ2xlRWxlbWVudFJvb3QoZSl7Y29uc3QgYz1lLmNoaWxkcmVuLmZpbHRlcihlPT4zIT09ZS50eXBlKTtyZXR1cm4gMSE9PWMubGVuZ3RofHwxIT09Y1swXS50eXBlfHxpc1Nsb3RPdXRsZXQoY1swXSk/bnVsbDpjWzBdfWZ1bmN0aW9uIHdhbGsoZSxjLGQsaD0hMSx2PSExKXtjb25zdHtjaGlsZHJlbjpifT1lLHk9W107Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspe2NvbnN0IEU9YltjXTtpZigxPT09RS50eXBlJiYwPT09RS50YWdUeXBlKXtjb25zdCBlPWg/MDpnZXRDb25zdGFudFR5cGUoRSxkKTtpZihlPjApe2lmKGU+PTIpe0UuY29kZWdlbk5vZGUucGF0Y2hGbGFnPS0xLHkucHVzaChFKTtjb250aW51ZX19ZWxzZXtjb25zdCBlPUUuY29kZWdlbk5vZGU7aWYoMTM9PT1lLnR5cGUpe2NvbnN0IGM9ZS5wYXRjaEZsYWc7aWYoKHZvaWQgMD09PWN8fDUxMj09PWN8fDE9PT1jKSYmZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUoRSxkKT49Mil7Y29uc3QgYz1nZXROb2RlUHJvcHMoRSk7YyYmKGUucHJvcHM9ZC5ob2lzdChjKSl9ZS5keW5hbWljUHJvcHMmJihlLmR5bmFtaWNQcm9wcz1kLmhvaXN0KGUuZHluYW1pY1Byb3BzKSl9fX1lbHNlIGlmKDEyPT09RS50eXBlKXtpZigoaD8wOmdldENvbnN0YW50VHlwZShFLGQpKT49Mil7MTQ9PT1FLmNvZGVnZW5Ob2RlLnR5cGUmJkUuY29kZWdlbk5vZGUuYXJndW1lbnRzLmxlbmd0aD4wJiZFLmNvZGVnZW5Ob2RlLmFyZ3VtZW50cy5wdXNoKCItMSIpLHkucHVzaChFKTtjb250aW51ZX19aWYoMT09PUUudHlwZSl7Y29uc3QgYz0xPT09RS50YWdUeXBlO2MmJmQuc2NvcGVzLnZTbG90Kyssd2FsayhFLGUsZCwhMSx2KSxjJiZkLnNjb3Blcy52U2xvdC0tfWVsc2UgaWYoMTE9PT1FLnR5cGUpd2FsayhFLGUsZCwxPT09RS5jaGlsZHJlbi5sZW5ndGgsITApO2Vsc2UgaWYoOT09PUUudHlwZSlmb3IobGV0IGM9MDtjPEUuYnJhbmNoZXMubGVuZ3RoO2MrKyl3YWxrKEUuYnJhbmNoZXNbY10sZSxkLDE9PT1FLmJyYW5jaGVzW2NdLmNoaWxkcmVuLmxlbmd0aCx2KX1sZXQgRT0hMTtpZih5Lmxlbmd0aD09PWIubGVuZ3RoJiYxPT09ZS50eXBlKWlmKDA9PT1lLnRhZ1R5cGUmJmUuY29kZWdlbk5vZGUmJjEzPT09ZS5jb2RlZ2VuTm9kZS50eXBlJiZEZShlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSllLmNvZGVnZW5Ob2RlLmNoaWxkcmVuPWdldENhY2hlRXhwcmVzc2lvbihjcmVhdGVBcnJheUV4cHJlc3Npb24oZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbikpLEU9ITA7ZWxzZSBpZigxPT09ZS50YWdUeXBlJiZlLmNvZGVnZW5Ob2RlJiYxMz09PWUuY29kZWdlbk5vZGUudHlwZSYmZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbiYmIURlKGUuY29kZWdlbk5vZGUuY2hpbGRyZW4pJiYxNT09PWUuY29kZWdlbk5vZGUuY2hpbGRyZW4udHlwZSl7Y29uc3QgYz1nZXRTbG90Tm9kZShlLmNvZGVnZW5Ob2RlLCJkZWZhdWx0Iik7YyYmKGMucmV0dXJucz1nZXRDYWNoZUV4cHJlc3Npb24oY3JlYXRlQXJyYXlFeHByZXNzaW9uKGMucmV0dXJucykpLEU9ITApfWVsc2UgaWYoMz09PWUudGFnVHlwZSYmYyYmMT09PWMudHlwZSYmMT09PWMudGFnVHlwZSYmYy5jb2RlZ2VuTm9kZSYmMTM9PT1jLmNvZGVnZW5Ob2RlLnR5cGUmJmMuY29kZWdlbk5vZGUuY2hpbGRyZW4mJiFEZShjLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSYmMTU9PT1jLmNvZGVnZW5Ob2RlLmNoaWxkcmVuLnR5cGUpe2NvbnN0IGQ9ZmluZERpcihlLCJzbG90IiwhMCksaD1kJiZkLmFyZyYmZ2V0U2xvdE5vZGUoYy5jb2RlZ2VuTm9kZSxkLmFyZyk7aCYmKGgucmV0dXJucz1nZXRDYWNoZUV4cHJlc3Npb24oY3JlYXRlQXJyYXlFeHByZXNzaW9uKGgucmV0dXJucykpLEU9ITApfWlmKCFFKWZvcihjb25zdCBlIG9mIHkpZS5jb2RlZ2VuTm9kZT1kLmNhY2hlKGUuY29kZWdlbk5vZGUpO2Z1bmN0aW9uIGdldENhY2hlRXhwcmVzc2lvbihlKXtjb25zdCBjPWQuY2FjaGUoZSk7cmV0dXJuIGMubmVlZEFycmF5U3ByZWFkPSEwLGN9ZnVuY3Rpb24gZ2V0U2xvdE5vZGUoZSxjKXtpZihlLmNoaWxkcmVuJiYhRGUoZS5jaGlsZHJlbikmJjE1PT09ZS5jaGlsZHJlbi50eXBlKXtjb25zdCBkPWUuY2hpbGRyZW4ucHJvcGVydGllcy5maW5kKGU9PmUua2V5PT09Y3x8ZS5rZXkuY29udGVudD09PWMpO3JldHVybiBkJiZkLnZhbHVlfX15Lmxlbmd0aCYmZC50cmFuc2Zvcm1Ib2lzdCYmZC50cmFuc2Zvcm1Ib2lzdChiLGQsZSl9ZnVuY3Rpb24gZ2V0Q29uc3RhbnRUeXBlKGUsYyl7Y29uc3R7Y29uc3RhbnRDYWNoZTpkfT1jO3N3aXRjaChlLnR5cGUpe2Nhc2UgMTppZigwIT09ZS50YWdUeXBlKXJldHVybiAwO2NvbnN0IGg9ZC5nZXQoZSk7aWYodm9pZCAwIT09aClyZXR1cm4gaDtjb25zdCB2PWUuY29kZWdlbk5vZGU7aWYoMTMhPT12LnR5cGUpcmV0dXJuIDA7aWYodi5pc0Jsb2NrJiYic3ZnIiE9PWUudGFnJiYiZm9yZWlnbk9iamVjdCIhPT1lLnRhZyYmIm1hdGgiIT09ZS50YWcpcmV0dXJuIDA7aWYodm9pZCAwPT09di5wYXRjaEZsYWcpe2xldCBoPTM7Y29uc3QgYj1nZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShlLGMpO2lmKDA9PT1iKXJldHVybiBkLnNldChlLDApLDA7YjxoJiYoaD1iKTtmb3IobGV0IHY9MDt2PGUuY2hpbGRyZW4ubGVuZ3RoO3YrKyl7Y29uc3QgYj1nZXRDb25zdGFudFR5cGUoZS5jaGlsZHJlblt2XSxjKTtpZigwPT09YilyZXR1cm4gZC5zZXQoZSwwKSwwO2I8aCYmKGg9Yil9aWYoaD4xKWZvcihsZXQgdj0wO3Y8ZS5wcm9wcy5sZW5ndGg7disrKXtjb25zdCBiPWUucHJvcHNbdl07aWYoNz09PWIudHlwZSYmImJpbmQiPT09Yi5uYW1lJiZiLmV4cCl7Y29uc3Qgdj1nZXRDb25zdGFudFR5cGUoYi5leHAsYyk7aWYoMD09PXYpcmV0dXJuIGQuc2V0KGUsMCksMDt2PGgmJihoPXYpfX1pZih2LmlzQmxvY2spe2ZvcihsZXQgYz0wO2M8ZS5wcm9wcy5sZW5ndGg7YysrKXtpZig3PT09ZS5wcm9wc1tjXS50eXBlKXJldHVybiBkLnNldChlLDApLDB9Yy5yZW1vdmVIZWxwZXIoWmUpLGMucmVtb3ZlSGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoYy5pblNTUix2LmlzQ29tcG9uZW50KSksdi5pc0Jsb2NrPSExLGMuaGVscGVyKGdldFZOb2RlSGVscGVyKGMuaW5TU1Isdi5pc0NvbXBvbmVudCkpfXJldHVybiBkLnNldChlLGgpLGh9cmV0dXJuIGQuc2V0KGUsMCksMDtjYXNlIDI6Y2FzZSAzOnJldHVybiAzO2Nhc2UgOTpjYXNlIDExOmNhc2UgMTA6ZGVmYXVsdDpyZXR1cm4gMDtjYXNlIDU6Y2FzZSAxMjpyZXR1cm4gZ2V0Q29uc3RhbnRUeXBlKGUuY29udGVudCxjKTtjYXNlIDQ6cmV0dXJuIGUuY29uc3RUeXBlO2Nhc2UgODpsZXQgYj0zO2ZvcihsZXQgZD0wO2Q8ZS5jaGlsZHJlbi5sZW5ndGg7ZCsrKXtjb25zdCBoPWUuY2hpbGRyZW5bZF07aWYoX2UoaCl8fE5lKGgpKWNvbnRpbnVlO2NvbnN0IHY9Z2V0Q29uc3RhbnRUeXBlKGgsYyk7aWYoMD09PXYpcmV0dXJuIDA7djxiJiYoYj12KX1yZXR1cm4gYjtjYXNlIDIwOnJldHVybiAyfX1jb25zdCB3bj1uZXcgU2V0KFtTdCxFdCx3dCxrdF0pO2Z1bmN0aW9uIGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbChlLGMpe2lmKDE0PT09ZS50eXBlJiYhX2UoZS5jYWxsZWUpJiZ3bi5oYXMoZS5jYWxsZWUpKXtjb25zdCBkPWUuYXJndW1lbnRzWzBdO2lmKDQ9PT1kLnR5cGUpcmV0dXJuIGdldENvbnN0YW50VHlwZShkLGMpO2lmKDE0PT09ZC50eXBlKXJldHVybiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwoZCxjKX1yZXR1cm4gMH1mdW5jdGlvbiBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShlLGMpe2xldCBkPTM7Y29uc3QgaD1nZXROb2RlUHJvcHMoZSk7aWYoaCYmMTU9PT1oLnR5cGUpe2NvbnN0e3Byb3BlcnRpZXM6ZX09aDtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3R7a2V5OnYsdmFsdWU6Yn09ZVtoXSx5PWdldENvbnN0YW50VHlwZSh2LGMpO2lmKDA9PT15KXJldHVybiB5O2xldCBFO2lmKHk8ZCYmKGQ9eSksRT00PT09Yi50eXBlP2dldENvbnN0YW50VHlwZShiLGMpOjE0PT09Yi50eXBlP2dldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbChiLGMpOjAsMD09PUUpcmV0dXJuIEU7RTxkJiYoZD1FKX19cmV0dXJuIGR9ZnVuY3Rpb24gZ2V0Tm9kZVByb3BzKGUpe2NvbnN0IGM9ZS5jb2RlZ2VuTm9kZTtpZigxMz09PWMudHlwZSlyZXR1cm4gYy5wcm9wc31mdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0KGUse2ZpbGVuYW1lOmM9IiIscHJlZml4SWRlbnRpZmllcnM6ZD0hMSxob2lzdFN0YXRpYzpoPSExLGhtcjp2PSExLGNhY2hlSGFuZGxlcnM6Yj0hMSxub2RlVHJhbnNmb3Jtczp5PVtdLGRpcmVjdGl2ZVRyYW5zZm9ybXM6RT17fSx0cmFuc2Zvcm1Ib2lzdDprPW51bGwsaXNCdWlsdEluQ29tcG9uZW50Ol89a2UsaXNDdXN0b21FbGVtZW50OlQ9a2UsZXhwcmVzc2lvblBsdWdpbnM6Tj1bXSxzY29wZUlkOk89bnVsbCxzbG90dGVkOlI9ITAsc3NyOk09ITEsaW5TU1I6RD0hMSxzc3JDc3NWYXJzOkw9IiIsYmluZGluZ01ldGFkYXRhOiQ9UmUsaW5saW5lOkY9ITEsaXNUUzpWPSExLG9uRXJyb3I6cT1kZWZhdWx0T25FcnJvcixvbldhcm46VT1kZWZhdWx0T25XYXJuLGNvbXBhdENvbmZpZzpXfSl7Y29uc3QgSz1jLnJlcGxhY2UoL1w/LiokLywiIikubWF0Y2goLyhbXi9cXF0rKVwuXHcrJC8pLFk9e2ZpbGVuYW1lOmMsc2VsZk5hbWU6SyYmT2UoSWUoS1sxXSkpLHByZWZpeElkZW50aWZpZXJzOmQsaG9pc3RTdGF0aWM6aCxobXI6dixjYWNoZUhhbmRsZXJzOmIsbm9kZVRyYW5zZm9ybXM6eSxkaXJlY3RpdmVUcmFuc2Zvcm1zOkUsdHJhbnNmb3JtSG9pc3Q6ayxpc0J1aWx0SW5Db21wb25lbnQ6Xyxpc0N1c3RvbUVsZW1lbnQ6VCxleHByZXNzaW9uUGx1Z2luczpOLHNjb3BlSWQ6TyxzbG90dGVkOlIsc3NyOk0saW5TU1I6RCxzc3JDc3NWYXJzOkwsYmluZGluZ01ldGFkYXRhOiQsaW5saW5lOkYsaXNUUzpWLG9uRXJyb3I6cSxvbldhcm46VSxjb21wYXRDb25maWc6Vyxyb290OmUsaGVscGVyczpuZXcgTWFwLGNvbXBvbmVudHM6bmV3IFNldCxkaXJlY3RpdmVzOm5ldyBTZXQsaG9pc3RzOltdLGltcG9ydHM6W10sY2FjaGVkOltdLGNvbnN0YW50Q2FjaGU6bmV3IFdlYWtNYXAsdGVtcHM6MCxpZGVudGlmaWVyczpPYmplY3QuY3JlYXRlKG51bGwpLHNjb3Blczp7dkZvcjowLHZTbG90OjAsdlByZTowLHZPbmNlOjB9LHBhcmVudDpudWxsLGdyYW5kUGFyZW50Om51bGwsY3VycmVudE5vZGU6ZSxjaGlsZEluZGV4OjAsaW5WT25jZTohMSxoZWxwZXIoZSl7Y29uc3QgYz1ZLmhlbHBlcnMuZ2V0KGUpfHwwO3JldHVybiBZLmhlbHBlcnMuc2V0KGUsYysxKSxlfSxyZW1vdmVIZWxwZXIoZSl7Y29uc3QgYz1ZLmhlbHBlcnMuZ2V0KGUpO2lmKGMpe2NvbnN0IGQ9Yy0xO2Q/WS5oZWxwZXJzLnNldChlLGQpOlkuaGVscGVycy5kZWxldGUoZSl9fSxoZWxwZXJTdHJpbmc6ZT0+YF8ke0x0W1kuaGVscGVyKGUpXX1gLHJlcGxhY2VOb2RlKGUpe1kucGFyZW50LmNoaWxkcmVuW1kuY2hpbGRJbmRleF09WS5jdXJyZW50Tm9kZT1lfSxyZW1vdmVOb2RlKGUpe2NvbnN0IGM9WS5wYXJlbnQuY2hpbGRyZW4sZD1lP2MuaW5kZXhPZihlKTpZLmN1cnJlbnROb2RlP1kuY2hpbGRJbmRleDotMTtlJiZlIT09WS5jdXJyZW50Tm9kZT9ZLmNoaWxkSW5kZXg+ZCYmKFkuY2hpbGRJbmRleC0tLFkub25Ob2RlUmVtb3ZlZCgpKTooWS5jdXJyZW50Tm9kZT1udWxsLFkub25Ob2RlUmVtb3ZlZCgpKSxZLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoZCwxKX0sb25Ob2RlUmVtb3ZlZDprZSxhZGRJZGVudGlmaWVycyhlKXt9LHJlbW92ZUlkZW50aWZpZXJzKGUpe30saG9pc3QoZSl7X2UoZSkmJihlPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZSkpLFkuaG9pc3RzLnB1c2goZSk7Y29uc3QgYz1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfaG9pc3RlZF8ke1kuaG9pc3RzLmxlbmd0aH1gLCExLGUubG9jLDIpO3JldHVybiBjLmhvaXN0ZWQ9ZSxjfSxjYWNoZShlLGM9ITEsZD0hMSl7Y29uc3QgaD1jcmVhdGVDYWNoZUV4cHJlc3Npb24oWS5jYWNoZWQubGVuZ3RoLGUsYyxkKTtyZXR1cm4gWS5jYWNoZWQucHVzaChoKSxofX07cmV0dXJuIFkuZmlsdGVycz1uZXcgU2V0LFl9ZnVuY3Rpb24gdHJhbnNmb3JtKGUsYyl7Y29uc3QgZD1jcmVhdGVUcmFuc2Zvcm1Db250ZXh0KGUsYyk7dHJhdmVyc2VOb2RlKGUsZCksYy5ob2lzdFN0YXRpYyYmY2FjaGVTdGF0aWMoZSxkKSxjLnNzcnx8ZnVuY3Rpb24oZSxjKXtjb25zdHtoZWxwZXI6ZH09Yyx7Y2hpbGRyZW46aH09ZTtpZigxPT09aC5sZW5ndGgpe2NvbnN0IGQ9Z2V0U2luZ2xlRWxlbWVudFJvb3QoZSk7aWYoZCYmZC5jb2RlZ2VuTm9kZSl7Y29uc3QgaD1kLmNvZGVnZW5Ob2RlOzEzPT09aC50eXBlJiZjb252ZXJ0VG9CbG9jayhoLGMpLGUuY29kZWdlbk5vZGU9aH1lbHNlIGUuY29kZWdlbk5vZGU9aFswXX1lbHNlIGlmKGgubGVuZ3RoPjEpe2xldCBoPTY0O2UuY29kZWdlbk5vZGU9Y3JlYXRlVk5vZGVDYWxsKGMsZChYZSksdm9pZCAwLGUuY2hpbGRyZW4saCx2b2lkIDAsdm9pZCAwLCEwLHZvaWQgMCwhMSl9fShlLGQpLGUuaGVscGVycz1uZXcgU2V0KFsuLi5kLmhlbHBlcnMua2V5cygpXSksZS5jb21wb25lbnRzPVsuLi5kLmNvbXBvbmVudHNdLGUuZGlyZWN0aXZlcz1bLi4uZC5kaXJlY3RpdmVzXSxlLmltcG9ydHM9ZC5pbXBvcnRzLGUuaG9pc3RzPWQuaG9pc3RzLGUudGVtcHM9ZC50ZW1wcyxlLmNhY2hlZD1kLmNhY2hlZCxlLnRyYW5zZm9ybWVkPSEwLGUuZmlsdGVycz1bLi4uZC5maWx0ZXJzXX1mdW5jdGlvbiB0cmF2ZXJzZU5vZGUoZSxjKXtjLmN1cnJlbnROb2RlPWU7Y29uc3R7bm9kZVRyYW5zZm9ybXM6ZH09YyxoPVtdO2ZvcihsZXQgdj0wO3Y8ZC5sZW5ndGg7disrKXtjb25zdCBiPWRbdl0oZSxjKTtpZihiJiYoRGUoYik/aC5wdXNoKC4uLmIpOmgucHVzaChiKSksIWMuY3VycmVudE5vZGUpcmV0dXJuO2U9Yy5jdXJyZW50Tm9kZX1zd2l0Y2goZS50eXBlKXtjYXNlIDM6Yy5zc3J8fGMuaGVscGVyKGl0KTticmVhaztjYXNlIDU6Yy5zc3J8fGMuaGVscGVyKHl0KTticmVhaztjYXNlIDk6Zm9yKGxldCBkPTA7ZDxlLmJyYW5jaGVzLmxlbmd0aDtkKyspdHJhdmVyc2VOb2RlKGUuYnJhbmNoZXNbZF0sYyk7YnJlYWs7Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTpjYXNlIDA6IWZ1bmN0aW9uKGUsYyl7bGV0IGQ9MDtjb25zdCBub2RlUmVtb3ZlZD0oKT0+e2QtLX07Zm9yKDtkPGUuY2hpbGRyZW4ubGVuZ3RoO2QrKyl7Y29uc3QgaD1lLmNoaWxkcmVuW2RdO19lKGgpfHwoYy5ncmFuZFBhcmVudD1jLnBhcmVudCxjLnBhcmVudD1lLGMuY2hpbGRJbmRleD1kLGMub25Ob2RlUmVtb3ZlZD1ub2RlUmVtb3ZlZCx0cmF2ZXJzZU5vZGUoaCxjKSl9fShlLGMpfWMuY3VycmVudE5vZGU9ZTtsZXQgdj1oLmxlbmd0aDtmb3IoO3YtLTspaFt2XSgpfWZ1bmN0aW9uIGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oZSxjKXtjb25zdCBkPV9lKGUpP2M9PmM9PT1lOmM9PmUudGVzdChjKTtyZXR1cm4oZSxoKT0+e2lmKDE9PT1lLnR5cGUpe2NvbnN0e3Byb3BzOnZ9PWU7aWYoMz09PWUudGFnVHlwZSYmdi5zb21lKGlzVlNsb3QpKXJldHVybjtjb25zdCBiPVtdO2ZvcihsZXQgeT0wO3k8di5sZW5ndGg7eSsrKXtjb25zdCBFPXZbeV07aWYoNz09PUUudHlwZSYmZChFLm5hbWUpKXt2LnNwbGljZSh5LDEpLHktLTtjb25zdCBkPWMoZSxFLGgpO2QmJmIucHVzaChkKX19cmV0dXJuIGJ9fX1jb25zdCBrbj0iLypAX19QVVJFX18qLyIsYWxpYXNIZWxwZXI9ZT0+YCR7THRbZV19OiBfJHtMdFtlXX1gO2Z1bmN0aW9uIGdlbmVyYXRlKGUsYz17fSl7Y29uc3QgZD1mdW5jdGlvbihlLHttb2RlOmM9ImZ1bmN0aW9uIixwcmVmaXhJZGVudGlmaWVyczpkPSJtb2R1bGUiPT09Yyxzb3VyY2VNYXA6aD0hMSxmaWxlbmFtZTp2PSJ0ZW1wbGF0ZS52dWUuaHRtbCIsc2NvcGVJZDpiPW51bGwsb3B0aW1pemVJbXBvcnRzOnk9ITEscnVudGltZUdsb2JhbE5hbWU6RT0iVnVlIixydW50aW1lTW9kdWxlTmFtZTprPSJ2dWUiLHNzclJ1bnRpbWVNb2R1bGVOYW1lOl89InZ1ZS9zZXJ2ZXItcmVuZGVyZXIiLHNzcjpUPSExLGlzVFM6Tj0hMSxpblNTUjpPPSExfSl7Y29uc3QgUj17bW9kZTpjLHByZWZpeElkZW50aWZpZXJzOmQsc291cmNlTWFwOmgsZmlsZW5hbWU6dixzY29wZUlkOmIsb3B0aW1pemVJbXBvcnRzOnkscnVudGltZUdsb2JhbE5hbWU6RSxydW50aW1lTW9kdWxlTmFtZTprLHNzclJ1bnRpbWVNb2R1bGVOYW1lOl8sc3NyOlQsaXNUUzpOLGluU1NSOk8sc291cmNlOmUuc291cmNlLGNvZGU6IiIsY29sdW1uOjEsbGluZToxLG9mZnNldDowLGluZGVudExldmVsOjAscHVyZTohMSxtYXA6dm9pZCAwLGhlbHBlcjplPT5gXyR7THRbZV19YCxwdXNoKGUsYz0tMixkKXtSLmNvZGUrPWV9LGluZGVudCgpe25ld2xpbmUoKytSLmluZGVudExldmVsKX0sZGVpbmRlbnQoZT0hMSl7ZT8tLVIuaW5kZW50TGV2ZWw6bmV3bGluZSgtLVIuaW5kZW50TGV2ZWwpfSxuZXdsaW5lKCl7bmV3bGluZShSLmluZGVudExldmVsKX19O2Z1bmN0aW9uIG5ld2xpbmUoZSl7Ui5wdXNoKCJcbiIrIiAgIi5yZXBlYXQoZSksMCl9cmV0dXJuIFJ9KGUsYyk7Yy5vbkNvbnRleHRDcmVhdGVkJiZjLm9uQ29udGV4dENyZWF0ZWQoZCk7Y29uc3R7bW9kZTpoLHB1c2g6dixwcmVmaXhJZGVudGlmaWVyczpiLGluZGVudDp5LGRlaW5kZW50OkUsbmV3bGluZTprLHNjb3BlSWQ6Xyxzc3I6VH09ZCxOPUFycmF5LmZyb20oZS5oZWxwZXJzKSxPPU4ubGVuZ3RoPjAsUj0hYiYmIm1vZHVsZSIhPT1oOyFmdW5jdGlvbihlLGMpe2NvbnN0e3NzcjpkLHByZWZpeElkZW50aWZpZXJzOmgscHVzaDp2LG5ld2xpbmU6YixydW50aW1lTW9kdWxlTmFtZTp5LHJ1bnRpbWVHbG9iYWxOYW1lOkUsc3NyUnVudGltZU1vZHVsZU5hbWU6a309YyxfPUUsVD1BcnJheS5mcm9tKGUuaGVscGVycyk7aWYoVC5sZW5ndGg+MCYmKHYoYGNvbnN0IF9WdWUgPSAke199XG5gLC0xKSxlLmhvaXN0cy5sZW5ndGgpKXt2KGBjb25zdCB7ICR7W290LHJ0LGl0LHN0LGN0XS5maWx0ZXIoZT0+VC5pbmNsdWRlcyhlKSkubWFwKGFsaWFzSGVscGVyKS5qb2luKCIsICIpfSB9ID0gX1Z1ZVxuYCwtMSl9KGZ1bmN0aW9uKGUsYyl7aWYoIWUubGVuZ3RoKXJldHVybjtjLnB1cmU9ITA7Y29uc3R7cHVzaDpkLG5ld2xpbmU6aH09YztoKCk7Zm9yKGxldCB2PTA7djxlLmxlbmd0aDt2Kyspe2NvbnN0IGI9ZVt2XTtiJiYoZChgY29uc3QgX2hvaXN0ZWRfJHt2KzF9ID0gYCksZ2VuTm9kZShiLGMpLGgoKSl9Yy5wdXJlPSExfSkoZS5ob2lzdHMsYyksYigpLHYoInJldHVybiAiKX0oZSxkKTtpZih2KGBmdW5jdGlvbiAke1Q/InNzclJlbmRlciI6InJlbmRlciJ9KCR7KFQ/WyJfY3R4IiwiX3B1c2giLCJfcGFyZW50IiwiX2F0dHJzIl06WyJfY3R4IiwiX2NhY2hlIl0pLmpvaW4oIiwgIil9KSB7YCkseSgpLFImJih2KCJ3aXRoIChfY3R4KSB7IikseSgpLE8mJih2KGBjb25zdCB7ICR7Ti5tYXAoYWxpYXNIZWxwZXIpLmpvaW4oIiwgIil9IH0gPSBfVnVlXG5gLC0xKSxrKCkpKSxlLmNvbXBvbmVudHMubGVuZ3RoJiYoZ2VuQXNzZXRzKGUuY29tcG9uZW50cywiY29tcG9uZW50IixkKSwoZS5kaXJlY3RpdmVzLmxlbmd0aHx8ZS50ZW1wcz4wKSYmaygpKSxlLmRpcmVjdGl2ZXMubGVuZ3RoJiYoZ2VuQXNzZXRzKGUuZGlyZWN0aXZlcywiZGlyZWN0aXZlIixkKSxlLnRlbXBzPjAmJmsoKSksZS5maWx0ZXJzJiZlLmZpbHRlcnMubGVuZ3RoJiYoaygpLGdlbkFzc2V0cyhlLmZpbHRlcnMsImZpbHRlciIsZCksaygpKSxlLnRlbXBzPjApe3YoImxldCAiKTtmb3IobGV0IGM9MDtjPGUudGVtcHM7YysrKXYoYCR7Yz4wPyIsICI6IiJ9X3RlbXAke2N9YCl9cmV0dXJuKGUuY29tcG9uZW50cy5sZW5ndGh8fGUuZGlyZWN0aXZlcy5sZW5ndGh8fGUudGVtcHMpJiYodigiXG4iLDApLGsoKSksVHx8digicmV0dXJuICIpLGUuY29kZWdlbk5vZGU/Z2VuTm9kZShlLmNvZGVnZW5Ob2RlLGQpOnYoIm51bGwiKSxSJiYoRSgpLHYoIn0iKSksRSgpLHYoIn0iKSx7YXN0OmUsY29kZTpkLmNvZGUscHJlYW1ibGU6IiIsbWFwOmQubWFwP2QubWFwLnRvSlNPTigpOnZvaWQgMH19ZnVuY3Rpb24gZ2VuQXNzZXRzKGUsYyx7aGVscGVyOmQscHVzaDpoLG5ld2xpbmU6dixpc1RTOmJ9KXtjb25zdCB5PWQoImZpbHRlciI9PT1jP2Z0OiJjb21wb25lbnQiPT09Yz91dDpwdCk7Zm9yKGxldCBkPTA7ZDxlLmxlbmd0aDtkKyspe2xldCBFPWVbZF07Y29uc3Qgaz1FLmVuZHNXaXRoKCJfX3NlbGYiKTtrJiYoRT1FLnNsaWNlKDAsLTYpKSxoKGBjb25zdCAke3RvVmFsaWRBc3NldElkKEUsYyl9ID0gJHt5fSgke0pTT04uc3RyaW5naWZ5KEUpfSR7az8iLCB0cnVlIjoiIn0pJHtiPyIhIjoiIn1gKSxkPGUubGVuZ3RoLTEmJnYoKX19ZnVuY3Rpb24gZ2VuTm9kZUxpc3RBc0FycmF5KGUsYyl7Y29uc3QgZD1lLmxlbmd0aD4zfHwhMTtjLnB1c2goIlsiKSxkJiZjLmluZGVudCgpLGdlbk5vZGVMaXN0KGUsYyxkKSxkJiZjLmRlaW5kZW50KCksYy5wdXNoKCJdIil9ZnVuY3Rpb24gZ2VuTm9kZUxpc3QoZSxjLGQ9ITEsaD0hMCl7Y29uc3R7cHVzaDp2LG5ld2xpbmU6Yn09Yztmb3IobGV0IHk9MDt5PGUubGVuZ3RoO3krKyl7Y29uc3QgRT1lW3ldO19lKEUpP3YoRSwtMyk6RGUoRSk/Z2VuTm9kZUxpc3RBc0FycmF5KEUsYyk6Z2VuTm9kZShFLGMpLHk8ZS5sZW5ndGgtMSYmKGQ/KGgmJnYoIiwiKSxiKCkpOmgmJnYoIiwgIikpfX1mdW5jdGlvbiBnZW5Ob2RlKGUsYyl7aWYoX2UoZSkpYy5wdXNoKGUsLTMpO2Vsc2UgaWYoTmUoZSkpYy5wdXNoKGMuaGVscGVyKGUpKTtlbHNlIHN3aXRjaChlLnR5cGUpe2Nhc2UgMTpjYXNlIDk6Y2FzZSAxMTpjYXNlIDEyOmdlbk5vZGUoZS5jb2RlZ2VuTm9kZSxjKTticmVhaztjYXNlIDI6IWZ1bmN0aW9uKGUsYyl7Yy5wdXNoKEpTT04uc3RyaW5naWZ5KGUuY29udGVudCksLTMsZSl9KGUsYyk7YnJlYWs7Y2FzZSA0OmdlbkV4cHJlc3Npb24oZSxjKTticmVhaztjYXNlIDU6IWZ1bmN0aW9uKGUsYyl7Y29uc3R7cHVzaDpkLGhlbHBlcjpoLHB1cmU6dn09Yzt2JiZkKGtuKTtkKGAke2goeXQpfShgKSxnZW5Ob2RlKGUuY29udGVudCxjKSxkKCIpIil9KGUsYyk7YnJlYWs7Y2FzZSA4OmdlbkNvbXBvdW5kRXhwcmVzc2lvbihlLGMpO2JyZWFrO2Nhc2UgMzohZnVuY3Rpb24oZSxjKXtjb25zdHtwdXNoOmQsaGVscGVyOmgscHVyZTp2fT1jO3YmJmQoa24pO2QoYCR7aChpdCl9KCR7SlNPTi5zdHJpbmdpZnkoZS5jb250ZW50KX0pYCwtMyxlKX0oZSxjKTticmVhaztjYXNlIDEzOiFmdW5jdGlvbihlLGMpe2NvbnN0e3B1c2g6ZCxoZWxwZXI6aCxwdXJlOnZ9PWMse3RhZzpiLHByb3BzOnksY2hpbGRyZW46RSxwYXRjaEZsYWc6ayxkeW5hbWljUHJvcHM6XyxkaXJlY3RpdmVzOlQsaXNCbG9jazpOLGRpc2FibGVUcmFja2luZzpPLGlzQ29tcG9uZW50OlJ9PWU7bGV0IE07ayYmKE09U3RyaW5nKGspKTtUJiZkKGgobXQpKyIoIik7TiYmZChgKCR7aChaZSl9KCR7Tz8idHJ1ZSI6IiJ9KSwgYCk7diYmZChrbik7Y29uc3QgRD1OP2dldFZOb2RlQmxvY2tIZWxwZXIoYy5pblNTUixSKTpnZXRWTm9kZUhlbHBlcihjLmluU1NSLFIpO2QoaChEKSsiKCIsLTIsZSksZ2VuTm9kZUxpc3QoZnVuY3Rpb24oZSl7bGV0IGM9ZS5sZW5ndGg7Zm9yKDtjLS0mJm51bGw9PWVbY107KTtyZXR1cm4gZS5zbGljZSgwLGMrMSkubWFwKGU9PmV8fCJudWxsIil9KFtiLHksRSxNLF9dKSxjKSxkKCIpIiksTiYmZCgiKSIpO1QmJihkKCIsICIpLGdlbk5vZGUoVCxjKSxkKCIpIikpfShlLGMpO2JyZWFrO2Nhc2UgMTQ6IWZ1bmN0aW9uKGUsYyl7Y29uc3R7cHVzaDpkLGhlbHBlcjpoLHB1cmU6dn09YyxiPV9lKGUuY2FsbGVlKT9lLmNhbGxlZTpoKGUuY2FsbGVlKTt2JiZkKGtuKTtkKGIrIigiLC0yLGUpLGdlbk5vZGVMaXN0KGUuYXJndW1lbnRzLGMpLGQoIikiKX0oZSxjKTticmVhaztjYXNlIDE1OiFmdW5jdGlvbihlLGMpe2NvbnN0e3B1c2g6ZCxpbmRlbnQ6aCxkZWluZGVudDp2LG5ld2xpbmU6Yn09Yyx7cHJvcGVydGllczp5fT1lO2lmKCF5Lmxlbmd0aClyZXR1cm4gdm9pZCBkKCJ7fSIsLTIsZSk7Y29uc3QgRT15Lmxlbmd0aD4xfHwhMTtkKEU/InsiOiJ7ICIpLEUmJmgoKTtmb3IobGV0IGU9MDtlPHkubGVuZ3RoO2UrKyl7Y29uc3R7a2V5OmgsdmFsdWU6dn09eVtlXTtnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShoLGMpLGQoIjogIiksZ2VuTm9kZSh2LGMpLGU8eS5sZW5ndGgtMSYmKGQoIiwiKSxiKCkpfUUmJnYoKSxkKEU/In0iOiIgfSIpfShlLGMpO2JyZWFrO2Nhc2UgMTc6IWZ1bmN0aW9uKGUsYyl7Z2VuTm9kZUxpc3RBc0FycmF5KGUuZWxlbWVudHMsYyl9KGUsYyk7YnJlYWs7Y2FzZSAxODohZnVuY3Rpb24oZSxjKXtjb25zdHtwdXNoOmQsaW5kZW50OmgsZGVpbmRlbnQ6dn09Yyx7cGFyYW1zOmIscmV0dXJuczp5LGJvZHk6RSxuZXdsaW5lOmssaXNTbG90Ol99PWU7XyYmZChgXyR7THRbUnRdfShgKTtkKCIoIiwtMixlKSxEZShiKT9nZW5Ob2RlTGlzdChiLGMpOmImJmdlbk5vZGUoYixjKTtkKCIpID0+ICIpLChrfHxFKSYmKGQoInsiKSxoKCkpO3k/KGsmJmQoInJldHVybiAiKSxEZSh5KT9nZW5Ob2RlTGlzdEFzQXJyYXkoeSxjKTpnZW5Ob2RlKHksYykpOkUmJmdlbk5vZGUoRSxjKTsoa3x8RSkmJih2KCksZCgifSIpKTtfJiYoZS5pc05vblNjb3BlZFNsb3QmJmQoIiwgdW5kZWZpbmVkLCB0cnVlIiksZCgiKSIpKX0oZSxjKTticmVhaztjYXNlIDE5OiFmdW5jdGlvbihlLGMpe2NvbnN0e3Rlc3Q6ZCxjb25zZXF1ZW50OmgsYWx0ZXJuYXRlOnYsbmV3bGluZTpifT1lLHtwdXNoOnksaW5kZW50OkUsZGVpbmRlbnQ6ayxuZXdsaW5lOl99PWM7aWYoND09PWQudHlwZSl7Y29uc3QgZT0haXNTaW1wbGVJZGVudGlmaWVyKGQuY29udGVudCk7ZSYmeSgiKCIpLGdlbkV4cHJlc3Npb24oZCxjKSxlJiZ5KCIpIil9ZWxzZSB5KCIoIiksZ2VuTm9kZShkLGMpLHkoIikiKTtiJiZFKCksYy5pbmRlbnRMZXZlbCsrLGJ8fHkoIiAiKSx5KCI/ICIpLGdlbk5vZGUoaCxjKSxjLmluZGVudExldmVsLS0sYiYmXygpLGJ8fHkoIiAiKSx5KCI6ICIpO2NvbnN0IFQ9MTk9PT12LnR5cGU7VHx8Yy5pbmRlbnRMZXZlbCsrO2dlbk5vZGUodixjKSxUfHxjLmluZGVudExldmVsLS07YiYmayghMCl9KGUsYyk7YnJlYWs7Y2FzZSAyMDohZnVuY3Rpb24oZSxjKXtjb25zdHtwdXNoOmQsaGVscGVyOmgsaW5kZW50OnYsZGVpbmRlbnQ6YixuZXdsaW5lOnl9PWMse25lZWRQYXVzZVRyYWNraW5nOkUsbmVlZEFycmF5U3ByZWFkOmt9PWU7ayYmZCgiWy4uLigiKTtkKGBfY2FjaGVbJHtlLmluZGV4fV0gfHwgKGApLEUmJih2KCksZChgJHtoKEF0KX0oLTFgKSxlLmluVk9uY2UmJmQoIiwgdHJ1ZSIpLGQoIiksIikseSgpLGQoIigiKSk7ZChgX2NhY2hlWyR7ZS5pbmRleH1dID0gYCksZ2VuTm9kZShlLnZhbHVlLGMpLEUmJihkKGApLmNhY2hlSW5kZXggPSAke2UuaW5kZXh9LGApLHkoKSxkKGAke2goQXQpfSgxKSxgKSx5KCksZChgX2NhY2hlWyR7ZS5pbmRleH1dYCksYigpKTtkKCIpIiksayYmZCgiKV0iKX0oZSxjKTticmVhaztjYXNlIDIxOmdlbk5vZGVMaXN0KGUuYm9keSxjLCEwLCExKX19ZnVuY3Rpb24gZ2VuRXhwcmVzc2lvbihlLGMpe2NvbnN0e2NvbnRlbnQ6ZCxpc1N0YXRpYzpofT1lO2MucHVzaChoP0pTT04uc3RyaW5naWZ5KGQpOmQsLTMsZSl9ZnVuY3Rpb24gZ2VuQ29tcG91bmRFeHByZXNzaW9uKGUsYyl7Zm9yKGxldCBkPTA7ZDxlLmNoaWxkcmVuLmxlbmd0aDtkKyspe2NvbnN0IGg9ZS5jaGlsZHJlbltkXTtfZShoKT9jLnB1c2goaCwtMyk6Z2VuTm9kZShoLGMpfX1mdW5jdGlvbiBnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShlLGMpe2NvbnN0e3B1c2g6ZH09YztpZig4PT09ZS50eXBlKWQoIlsiKSxnZW5Db21wb3VuZEV4cHJlc3Npb24oZSxjKSxkKCJdIik7ZWxzZSBpZihlLmlzU3RhdGljKXtkKGlzU2ltcGxlSWRlbnRpZmllcihlLmNvbnRlbnQpP2UuY29udGVudDpKU09OLnN0cmluZ2lmeShlLmNvbnRlbnQpLC0yLGUpfWVsc2UgZChgWyR7ZS5jb250ZW50fV1gLC0zLGUpfW5ldyBSZWdFeHAoIlxcYiIrImFyZ3VtZW50cyxhd2FpdCxicmVhayxjYXNlLGNhdGNoLGNsYXNzLGNvbnN0LGNvbnRpbnVlLGRlYnVnZ2VyLGRlZmF1bHQsZGVsZXRlLGRvLGVsc2UsZXhwb3J0LGV4dGVuZHMsZmluYWxseSxmb3IsZnVuY3Rpb24saWYsaW1wb3J0LGxldCxuZXcscmV0dXJuLHN1cGVyLHN3aXRjaCx0aHJvdyx0cnksdmFyLHZvaWQsd2hpbGUsd2l0aCx5aWVsZCIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpO2Z1bmN0aW9uIHByb2Nlc3NFeHByZXNzaW9uKGUsYyxkPSExLGg9ITEsdj1PYmplY3QuY3JlYXRlKGMuaWRlbnRpZmllcnMpKXtyZXR1cm4gZX1jb25zdCBDbj1jcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKC9eKD86aWZ8ZWxzZXxlbHNlLWlmKSQvLChlLGMsZCk9PnByb2Nlc3NJZihlLGMsZCwoZSxjLGgpPT57Y29uc3Qgdj1kLnBhcmVudC5jaGlsZHJlbjtsZXQgYj12LmluZGV4T2YoZSkseT0wO2Zvcig7Yi0tID49MDspe2NvbnN0IGU9dltiXTtlJiY5PT09ZS50eXBlJiYoeSs9ZS5icmFuY2hlcy5sZW5ndGgpfXJldHVybigpPT57aWYoaCllLmNvZGVnZW5Ob2RlPWNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGMseSxkKTtlbHNle2NvbnN0IGg9ZnVuY3Rpb24oZSl7Zm9yKDs7KWlmKDE5PT09ZS50eXBlKXtpZigxOSE9PWUuYWx0ZXJuYXRlLnR5cGUpcmV0dXJuIGU7ZT1lLmFsdGVybmF0ZX1lbHNlIDIwPT09ZS50eXBlJiYoZT1lLnZhbHVlKX0oZS5jb2RlZ2VuTm9kZSk7aC5hbHRlcm5hdGU9Y3JlYXRlQ29kZWdlbk5vZGVGb3JCcmFuY2goYyx5K2UuYnJhbmNoZXMubGVuZ3RoLTEsZCl9fX0pKTtmdW5jdGlvbiBwcm9jZXNzSWYoZSxjLGQsaCl7aWYoISgiZWxzZSI9PT1jLm5hbWV8fGMuZXhwJiZjLmV4cC5jb250ZW50LnRyaW0oKSkpe2NvbnN0IGg9Yy5leHA/Yy5leHAubG9jOmUubG9jO2Qub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDI4LGMubG9jKSksYy5leHA9Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigidHJ1ZSIsITEsaCl9aWYoImlmIj09PWMubmFtZSl7Y29uc3QgYj1jcmVhdGVJZkJyYW5jaChlLGMpLHk9e3R5cGU6OSxsb2M6KHY9ZS5sb2MsZ2V0TG9jKHYuc3RhcnQub2Zmc2V0LHYuZW5kLm9mZnNldCkpLGJyYW5jaGVzOltiXX07aWYoZC5yZXBsYWNlTm9kZSh5KSxoKXJldHVybiBoKHksYiwhMCl9ZWxzZXtjb25zdCB2PWQucGFyZW50LmNoaWxkcmVuO2xldCBiPXYuaW5kZXhPZihlKTtmb3IoO2ItLSA+PS0xOyl7Y29uc3QgeT12W2JdO2lmKCF5fHwhaXNDb21tZW50T3JXaGl0ZXNwYWNlKHkpKXtpZih5JiY5PT09eS50eXBlKXsiZWxzZS1pZiIhPT1jLm5hbWUmJiJlbHNlIiE9PWMubmFtZXx8dm9pZCAwIT09eS5icmFuY2hlc1t5LmJyYW5jaGVzLmxlbmd0aC0xXS5jb25kaXRpb258fGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwLGUubG9jKSksZC5yZW1vdmVOb2RlKCk7Y29uc3Qgdj1jcmVhdGVJZkJyYW5jaChlLGMpO3kuYnJhbmNoZXMucHVzaCh2KTtjb25zdCBiPWgmJmgoeSx2LCExKTt0cmF2ZXJzZU5vZGUodixkKSxiJiZiKCksZC5jdXJyZW50Tm9kZT1udWxsfWVsc2UgZC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAsZS5sb2MpKTticmVha31kLnJlbW92ZU5vZGUoeSl9fXZhciB2fWZ1bmN0aW9uIGNyZWF0ZUlmQnJhbmNoKGUsYyl7Y29uc3QgZD0zPT09ZS50YWdUeXBlO3JldHVybnt0eXBlOjEwLGxvYzplLmxvYyxjb25kaXRpb246ImVsc2UiPT09Yy5uYW1lP3ZvaWQgMDpjLmV4cCxjaGlsZHJlbjpkJiYhZmluZERpcihlLCJmb3IiKT9lLmNoaWxkcmVuOltlXSx1c2VyS2V5OmZpbmRQcm9wKGUsImtleSIpLGlzVGVtcGxhdGVJZjpkfX1mdW5jdGlvbiBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChlLGMsZCl7cmV0dXJuIGUuY29uZGl0aW9uP2NyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihlLmNvbmRpdGlvbixjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGUsYyxkKSxjcmVhdGVDYWxsRXhwcmVzc2lvbihkLmhlbHBlcihpdCksWyciIicsInRydWUiXSkpOmNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoZSxjLGQpfWZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoZSxjLGQpe2NvbnN0e2hlbHBlcjpofT1kLHY9Y3JlYXRlT2JqZWN0UHJvcGVydHkoImtleSIsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgJHtjfWAsITEsanQsMikpLHtjaGlsZHJlbjpifT1lLHk9YlswXTtpZigxIT09Yi5sZW5ndGh8fDEhPT15LnR5cGUpe2lmKDE9PT1iLmxlbmd0aCYmMTE9PT15LnR5cGUpe2NvbnN0IGU9eS5jb2RlZ2VuTm9kZTtyZXR1cm4gaW5qZWN0UHJvcChlLHYsZCksZX17bGV0IGM9NjQ7cmV0dXJuIGNyZWF0ZVZOb2RlQ2FsbChkLGgoWGUpLGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3ZdKSxiLGMsdm9pZCAwLHZvaWQgMCwhMCwhMSwhMSxlLmxvYyl9fXtjb25zdCBlPXkuY29kZWdlbk5vZGUsYz1nZXRNZW1vZWRWTm9kZUNhbGwoZSk7cmV0dXJuIDEzPT09Yy50eXBlJiZjb252ZXJ0VG9CbG9jayhjLGQpLGluamVjdFByb3AoYyx2LGQpLGV9fWNvbnN0IF9uPWNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oImZvciIsKGUsYyxkKT0+e2NvbnN0e2hlbHBlcjpoLHJlbW92ZUhlbHBlcjp2fT1kO3JldHVybiBwcm9jZXNzRm9yKGUsYyxkLGM9Pntjb25zdCBiPWNyZWF0ZUNhbGxFeHByZXNzaW9uKGgoZ3QpLFtjLnNvdXJjZV0pLHk9aXNUZW1wbGF0ZU5vZGUoZSksRT1maW5kRGlyKGUsIm1lbW8iKSxrPWZpbmRQcm9wKGUsImtleSIsITEsITApO2smJmsudHlwZTtsZXQgXz1rJiYoNj09PWsudHlwZT9rLnZhbHVlP2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oay52YWx1ZS5jb250ZW50LCEwKTp2b2lkIDA6ay5leHApO2NvbnN0IFQ9ayYmXz9jcmVhdGVPYmplY3RQcm9wZXJ0eSgia2V5IixfKTpudWxsLE49ND09PWMuc291cmNlLnR5cGUmJmMuc291cmNlLmNvbnN0VHlwZT4wLE89Tj82NDprPzEyODoyNTY7cmV0dXJuIGMuY29kZWdlbk5vZGU9Y3JlYXRlVk5vZGVDYWxsKGQsaChYZSksdm9pZCAwLGIsTyx2b2lkIDAsdm9pZCAwLCEwLCFOLCExLGUubG9jKSwoKT0+e2xldCBrO2NvbnN0e2NoaWxkcmVuOk99PWMsUj0xIT09Ty5sZW5ndGh8fDEhPT1PWzBdLnR5cGUsTT1pc1Nsb3RPdXRsZXQoZSk/ZTp5JiYxPT09ZS5jaGlsZHJlbi5sZW5ndGgmJmlzU2xvdE91dGxldChlLmNoaWxkcmVuWzBdKT9lLmNoaWxkcmVuWzBdOm51bGw7aWYoTT8oaz1NLmNvZGVnZW5Ob2RlLHkmJlQmJmluamVjdFByb3AoayxULGQpKTpSP2s9Y3JlYXRlVk5vZGVDYWxsKGQsaChYZSksVD9jcmVhdGVPYmplY3RFeHByZXNzaW9uKFtUXSk6dm9pZCAwLGUuY2hpbGRyZW4sNjQsdm9pZCAwLHZvaWQgMCwhMCx2b2lkIDAsITEpOihrPU9bMF0uY29kZWdlbk5vZGUseSYmVCYmaW5qZWN0UHJvcChrLFQsZCksay5pc0Jsb2NrIT09IU4mJihrLmlzQmxvY2s/KHYoWmUpLHYoZ2V0Vk5vZGVCbG9ja0hlbHBlcihkLmluU1NSLGsuaXNDb21wb25lbnQpKSk6dihnZXRWTm9kZUhlbHBlcihkLmluU1NSLGsuaXNDb21wb25lbnQpKSksay5pc0Jsb2NrPSFOLGsuaXNCbG9jaz8oaChaZSksaChnZXRWTm9kZUJsb2NrSGVscGVyKGQuaW5TU1Isay5pc0NvbXBvbmVudCkpKTpoKGdldFZOb2RlSGVscGVyKGQuaW5TU1Isay5pc0NvbXBvbmVudCkpKSxFKXtjb25zdCBlPWNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGMucGFyc2VSZXN1bHQsW2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oIl9jYWNoZWQiKV0pKTtlLmJvZHk9Y3JlYXRlQmxvY2tTdGF0ZW1lbnQoW2NyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbImNvbnN0IF9tZW1vID0gKCIsRS5leHAsIikiXSksY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsiaWYgKF9jYWNoZWQgJiYgX2NhY2hlZC5lbCIsLi4uXz9bIiAmJiBfY2FjaGVkLmtleSA9PT0gIixfXTpbXSxgICYmICR7ZC5oZWxwZXJTdHJpbmcoQnQpfShfY2FjaGVkLCBfbWVtbykpIHJldHVybiBfY2FjaGVkYF0pLGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbImNvbnN0IF9pdGVtID0gIixrXSksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiX2l0ZW0ubWVtbyA9IF9tZW1vIiksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigicmV0dXJuIF9pdGVtIildKSxiLmFyZ3VtZW50cy5wdXNoKGUsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiX2NhY2hlIiksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoZC5jYWNoZWQubGVuZ3RoKSkpLGQuY2FjaGVkLnB1c2gobnVsbCl9ZWxzZSBiLmFyZ3VtZW50cy5wdXNoKGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGMucGFyc2VSZXN1bHQpLGssITApKX19KX0pO2Z1bmN0aW9uIHByb2Nlc3NGb3IoZSxjLGQsaCl7aWYoIWMuZXhwKXJldHVybiB2b2lkIGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMxLGMubG9jKSk7Y29uc3Qgdj1jLmZvclBhcnNlUmVzdWx0O2lmKCF2KXJldHVybiB2b2lkIGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMyLGMubG9jKSk7ZmluYWxpemVGb3JQYXJzZVJlc3VsdCh2KTtjb25zdHthZGRJZGVudGlmaWVyczpiLHJlbW92ZUlkZW50aWZpZXJzOnksc2NvcGVzOkV9PWQse3NvdXJjZTprLHZhbHVlOl8sa2V5OlQsaW5kZXg6Tn09dixPPXt0eXBlOjExLGxvYzpjLmxvYyxzb3VyY2U6ayx2YWx1ZUFsaWFzOl8sa2V5QWxpYXM6VCxvYmplY3RJbmRleEFsaWFzOk4scGFyc2VSZXN1bHQ6dixjaGlsZHJlbjppc1RlbXBsYXRlTm9kZShlKT9lLmNoaWxkcmVuOltlXX07ZC5yZXBsYWNlTm9kZShPKSxFLnZGb3IrKztjb25zdCBSPWgmJmgoTyk7cmV0dXJuKCk9PntFLnZGb3ItLSxSJiZSKCl9fWZ1bmN0aW9uIGZpbmFsaXplRm9yUGFyc2VSZXN1bHQoZSxjKXtlLmZpbmFsaXplZHx8KGUuZmluYWxpemVkPSEwKX1mdW5jdGlvbiBjcmVhdGVGb3JMb29wUGFyYW1zKHt2YWx1ZTplLGtleTpjLGluZGV4OmR9LGg9W10pe3JldHVybiBmdW5jdGlvbihlKXtsZXQgYz1lLmxlbmd0aDtmb3IoO2MtLSYmIWVbY107KTtyZXR1cm4gZS5zbGljZSgwLGMrMSkubWFwKChlLGMpPT5lfHxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJfIi5yZXBlYXQoYysxKSwhMSkpfShbZSxjLGQsLi4uaF0pfWNvbnN0IFRuPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oInVuZGVmaW5lZCIsITEpLHRyYWNrU2xvdFNjb3Blcz0oZSxjKT0+e2lmKDE9PT1lLnR5cGUmJigxPT09ZS50YWdUeXBlfHwzPT09ZS50YWdUeXBlKSl7Y29uc3QgZD1maW5kRGlyKGUsInNsb3QiKTtpZihkKXJldHVybiBkLmV4cCxjLnNjb3Blcy52U2xvdCsrLCgpPT57Yy5zY29wZXMudlNsb3QtLX19fSxidWlsZENsaWVudFNsb3RGbj0oZSxjLGQsaCk9PmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihlLGQsITEsITAsZC5sZW5ndGg/ZFswXS5sb2M6aCk7ZnVuY3Rpb24gYnVpbGRTbG90cyhlLGMsZD1idWlsZENsaWVudFNsb3RGbil7Yy5oZWxwZXIoUnQpO2NvbnN0e2NoaWxkcmVuOmgsbG9jOnZ9PWUsYj1bXSx5PVtdO2xldCBFPWMuc2NvcGVzLnZTbG90PjB8fGMuc2NvcGVzLnZGb3I+MDtjb25zdCBrPWZpbmREaXIoZSwic2xvdCIsITApO2lmKGspe2NvbnN0e2FyZzplLGV4cDpjfT1rO2UmJiFpc1N0YXRpY0V4cChlKSYmKEU9ITApLGIucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShlfHxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJkZWZhdWx0IiwhMCksZChjLHZvaWQgMCxoLHYpKSl9bGV0IF89ITEsVD0hMTtjb25zdCBOPVtdLE89bmV3IFNldDtsZXQgUj0wO2ZvcihsZXQgZT0wO2U8aC5sZW5ndGg7ZSsrKXtjb25zdCB2PWhbZV07bGV0IE07aWYoIWlzVGVtcGxhdGVOb2RlKHYpfHwhKE09ZmluZERpcih2LCJzbG90IiwhMCkpKXszIT09di50eXBlJiZOLnB1c2godik7Y29udGludWV9aWYoayl7Yy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzcsTS5sb2MpKTticmVha31fPSEwO2NvbnN0e2NoaWxkcmVuOkQsbG9jOkx9PXYse2FyZzokPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oImRlZmF1bHQiLCEwKSxleHA6Rixsb2M6Vn09TTtsZXQgcTtpc1N0YXRpY0V4cCgkKT9xPSQ/JC5jb250ZW50OiJkZWZhdWx0IjpFPSEwO2NvbnN0IFU9ZmluZERpcih2LCJmb3IiKSxXPWQoRixVLEQsTCk7bGV0IEssWTtpZihLPWZpbmREaXIodiwiaWYiKSlFPSEwLHkucHVzaChjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oSy5leHAsYnVpbGREeW5hbWljU2xvdCgkLFcsUisrKSxUbikpO2Vsc2UgaWYoWT1maW5kRGlyKHYsL15lbHNlKD86LWlmKT8kLywhMCkpe2xldCBkLHY9ZTtmb3IoO3YtLSYmKGQ9aFt2XSxpc0NvbW1lbnRPcldoaXRlc3BhY2UoZCkpOyk7aWYoZCYmaXNUZW1wbGF0ZU5vZGUoZCkmJmZpbmREaXIoZCwvXig/OmVsc2UtKT9pZiQvKSl7bGV0IGU9eVt5Lmxlbmd0aC0xXTtmb3IoOzE5PT09ZS5hbHRlcm5hdGUudHlwZTspZT1lLmFsdGVybmF0ZTtlLmFsdGVybmF0ZT1ZLmV4cD9jcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oWS5leHAsYnVpbGREeW5hbWljU2xvdCgkLFcsUisrKSxUbik6YnVpbGREeW5hbWljU2xvdCgkLFcsUisrKX1lbHNlIGMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwLFkubG9jKSl9ZWxzZSBpZihVKXtFPSEwO2NvbnN0IGU9VS5mb3JQYXJzZVJlc3VsdDtlPyhmaW5hbGl6ZUZvclBhcnNlUmVzdWx0KGUpLHkucHVzaChjcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcihndCksW2Uuc291cmNlLGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGUpLGJ1aWxkRHluYW1pY1Nsb3QoJCxXKSwhMCldKSkpOmMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMyLFUubG9jKSl9ZWxzZXtpZihxKXtpZihPLmhhcyhxKSl7Yy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzgsVikpO2NvbnRpbnVlfU8uYWRkKHEpLCJkZWZhdWx0Ij09PXEmJihUPSEwKX1iLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoJCxXKSl9fWlmKCFrKXtjb25zdCBidWlsZERlZmF1bHRTbG90UHJvcGVydHk9KGUsaCk9Pntjb25zdCBiPWQoZSx2b2lkIDAsaCx2KTtyZXR1cm4gYy5jb21wYXRDb25maWcmJihiLmlzTm9uU2NvcGVkU2xvdD0hMCksY3JlYXRlT2JqZWN0UHJvcGVydHkoImRlZmF1bHQiLGIpfTtfP04ubGVuZ3RoJiYhTi5ldmVyeShpc1doaXRlc3BhY2VUZXh0KSYmKFQ/Yy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzksTlswXS5sb2MpKTpiLnB1c2goYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5KHZvaWQgMCxOKSkpOmIucHVzaChidWlsZERlZmF1bHRTbG90UHJvcGVydHkodm9pZCAwLGgpKX1jb25zdCBNPUU/MjpoYXNGb3J3YXJkZWRTbG90cyhlLmNoaWxkcmVuKT8zOjE7bGV0IEQ9Y3JlYXRlT2JqZWN0RXhwcmVzc2lvbihiLmNvbmNhdChjcmVhdGVPYmplY3RQcm9wZXJ0eSgiXyIsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihNKyIiLCExKSkpLHYpO3JldHVybiB5Lmxlbmd0aCYmKEQ9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oYy5oZWxwZXIoYnQpLFtELGNyZWF0ZUFycmF5RXhwcmVzc2lvbih5KV0pKSx7c2xvdHM6RCxoYXNEeW5hbWljU2xvdHM6RX19ZnVuY3Rpb24gYnVpbGREeW5hbWljU2xvdChlLGMsZCl7Y29uc3QgaD1bY3JlYXRlT2JqZWN0UHJvcGVydHkoIm5hbWUiLGUpLGNyZWF0ZU9iamVjdFByb3BlcnR5KCJmbiIsYyldO3JldHVybiBudWxsIT1kJiZoLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoImtleSIsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoZCksITApKSksY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihoKX1mdW5jdGlvbiBoYXNGb3J3YXJkZWRTbG90cyhlKXtmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKyl7Y29uc3QgZD1lW2NdO3N3aXRjaChkLnR5cGUpe2Nhc2UgMTppZigyPT09ZC50YWdUeXBlfHxoYXNGb3J3YXJkZWRTbG90cyhkLmNoaWxkcmVuKSlyZXR1cm4hMDticmVhaztjYXNlIDk6aWYoaGFzRm9yd2FyZGVkU2xvdHMoZC5icmFuY2hlcykpcmV0dXJuITA7YnJlYWs7Y2FzZSAxMDpjYXNlIDExOmlmKGhhc0ZvcndhcmRlZFNsb3RzKGQuY2hpbGRyZW4pKXJldHVybiEwfX1yZXR1cm4hMX1jb25zdCBObj1uZXcgV2Vha01hcCx0cmFuc2Zvcm1FbGVtZW50PShlLGMpPT5mdW5jdGlvbigpe2lmKDEhPT0oZT1jLmN1cnJlbnROb2RlKS50eXBlfHwwIT09ZS50YWdUeXBlJiYxIT09ZS50YWdUeXBlKXJldHVybjtjb25zdHt0YWc6ZCxwcm9wczpofT1lLHY9MT09PWUudGFnVHlwZTtsZXQgYj12P3Jlc29sdmVDb21wb25lbnRUeXBlKGUsYyk6YCIke2R9ImA7Y29uc3QgeT1QZShiKSYmYi5jYWxsZWU9PT1kdDtsZXQgRSxrLF8sVCxOLE89MCxSPXl8fGI9PT1LZXx8Yj09PUplfHwhdiYmKCJzdmciPT09ZHx8ImZvcmVpZ25PYmplY3QiPT09ZHx8Im1hdGgiPT09ZCk7aWYoaC5sZW5ndGg+MCl7Y29uc3QgZD1idWlsZFByb3BzKGUsYyx2b2lkIDAsdix5KTtFPWQucHJvcHMsTz1kLnBhdGNoRmxhZyxUPWQuZHluYW1pY1Byb3BOYW1lcztjb25zdCBoPWQuZGlyZWN0aXZlcztOPWgmJmgubGVuZ3RoP2NyZWF0ZUFycmF5RXhwcmVzc2lvbihoLm1hcChlPT5idWlsZERpcmVjdGl2ZUFyZ3MoZSxjKSkpOnZvaWQgMCxkLnNob3VsZFVzZUJsb2NrJiYoUj0hMCl9aWYoZS5jaGlsZHJlbi5sZW5ndGg+MCl7Yj09PVFlJiYoUj0hMCxPfD0xMDI0KTtpZih2JiZiIT09S2UmJmIhPT1RZSl7Y29uc3R7c2xvdHM6ZCxoYXNEeW5hbWljU2xvdHM6aH09YnVpbGRTbG90cyhlLGMpO2s9ZCxoJiYoT3w9MTAyNCl9ZWxzZSBpZigxPT09ZS5jaGlsZHJlbi5sZW5ndGgmJmIhPT1LZSl7Y29uc3QgZD1lLmNoaWxkcmVuWzBdLGg9ZC50eXBlLHY9NT09PWh8fDg9PT1oO3YmJjA9PT1nZXRDb25zdGFudFR5cGUoZCxjKSYmKE98PTEpLGs9dnx8Mj09PWg/ZDplLmNoaWxkcmVufWVsc2Ugaz1lLmNoaWxkcmVufVQmJlQubGVuZ3RoJiYoXz1mdW5jdGlvbihlKXtsZXQgYz0iWyI7Zm9yKGxldCBkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWMrPUpTT04uc3RyaW5naWZ5KGVbZF0pLGQ8aC0xJiYoYys9IiwgIik7cmV0dXJuIGMrIl0ifShUKSksZS5jb2RlZ2VuTm9kZT1jcmVhdGVWTm9kZUNhbGwoYyxiLEUsaywwPT09Tz92b2lkIDA6TyxfLE4sISFSLCExLHYsZS5sb2MpfTtmdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50VHlwZShlLGMsZD0hMSl7bGV0e3RhZzpofT1lO2NvbnN0IHY9aXNDb21wb25lbnRUYWcoaCksYj1maW5kUHJvcChlLCJpcyIsITEsITApO2lmKGIpaWYodnx8aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixjKSl7bGV0IGU7aWYoNj09PWIudHlwZT9lPWIudmFsdWUmJmNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYi52YWx1ZS5jb250ZW50LCEwKTooZT1iLmV4cCxlfHwoZT1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJpcyIsITEsYi5hcmcubG9jKSkpLGUpcmV0dXJuIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKGR0KSxbZV0pfWVsc2UgNj09PWIudHlwZSYmYi52YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoInZ1ZToiKSYmKGg9Yi52YWx1ZS5jb250ZW50LnNsaWNlKDQpKTtjb25zdCB5PWlzQ29yZUNvbXBvbmVudChoKXx8Yy5pc0J1aWx0SW5Db21wb25lbnQoaCk7cmV0dXJuIHk/KGR8fGMuaGVscGVyKHkpLHkpOihjLmhlbHBlcih1dCksYy5jb21wb25lbnRzLmFkZChoKSx0b1ZhbGlkQXNzZXRJZChoLCJjb21wb25lbnQiKSl9ZnVuY3Rpb24gYnVpbGRQcm9wcyhlLGMsZD1lLnByb3BzLGgsdixiPSExKXtjb25zdHt0YWc6eSxsb2M6RSxjaGlsZHJlbjprfT1lO2xldCBfPVtdO2NvbnN0IFQ9W10sTj1bXSxPPWsubGVuZ3RoPjA7bGV0IFI9ITEsTT0wLEQ9ITEsTD0hMSwkPSExLEY9ITEsVj0hMSxxPSExO2NvbnN0IFU9W10scHVzaE1lcmdlQXJnPWU9PntfLmxlbmd0aCYmKFQucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMoXyksRSkpLF89W10pLGUmJlQucHVzaChlKX0scHVzaFJlZlZGb3JNYXJrZXI9KCk9PntjLnNjb3Blcy52Rm9yPjAmJl8ucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJyZWZfZm9yIiwhMCksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigidHJ1ZSIpKSl9LGFuYWx5emVQYXRjaEZsYWc9KHtrZXk6ZSx2YWx1ZTpkfSk9PntpZihpc1N0YXRpY0V4cChlKSl7Y29uc3QgYj1lLmNvbnRlbnQseT1CZShiKTtpZigheXx8aCYmIXZ8fCJvbmNsaWNrIj09PWIudG9Mb3dlckNhc2UoKXx8Im9uVXBkYXRlOm1vZGVsVmFsdWUiPT09Ynx8TGUoYil8fChGPSEwKSx5JiZMZShiKSYmKHE9ITApLHkmJjE0PT09ZC50eXBlJiYoZD1kLmFyZ3VtZW50c1swXSksMjA9PT1kLnR5cGV8fCg0PT09ZC50eXBlfHw4PT09ZC50eXBlKSYmZ2V0Q29uc3RhbnRUeXBlKGQsYyk+MClyZXR1cm47InJlZiI9PT1iP0Q9ITA6ImNsYXNzIj09PWI/TD0hMDoic3R5bGUiPT09Yj8kPSEwOiJrZXkiPT09Ynx8VS5pbmNsdWRlcyhiKXx8VS5wdXNoKGIpLCFofHwiY2xhc3MiIT09YiYmInN0eWxlIiE9PWJ8fFUuaW5jbHVkZXMoYil8fFUucHVzaChiKX1lbHNlIFY9ITB9O2ZvcihsZXQgdj0wO3Y8ZC5sZW5ndGg7disrKXtjb25zdCBrPWRbdl07aWYoNj09PWsudHlwZSl7Y29uc3R7bG9jOmUsbmFtZTpkLG5hbWVMb2M6aCx2YWx1ZTp2fT1rO2xldCBiPSEwO2lmKCJyZWYiPT09ZCYmKEQ9ITAscHVzaFJlZlZGb3JNYXJrZXIoKSksImlzIj09PWQmJihpc0NvbXBvbmVudFRhZyh5KXx8diYmdi5jb250ZW50LnN0YXJ0c1dpdGgoInZ1ZToiKXx8aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixjKSkpY29udGludWU7Xy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZCwhMCxoKSxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHY/di5jb250ZW50OiIiLGIsdj92LmxvYzplKSkpfWVsc2V7Y29uc3R7bmFtZTpkLGFyZzp2LGV4cDpELGxvYzpMLG1vZGlmaWVyczokfT1rLEY9ImJpbmQiPT09ZCxxPSJvbiI9PT1kO2lmKCJzbG90Ij09PWQpe2h8fGMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQwLEwpKTtjb250aW51ZX1pZigib25jZSI9PT1kfHwibWVtbyI9PT1kKWNvbnRpbnVlO2lmKCJpcyI9PT1kfHxGJiZpc1N0YXRpY0FyZ09mKHYsImlzIikmJihpc0NvbXBvbmVudFRhZyh5KXx8aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixjKSkpY29udGludWU7aWYocSYmYiljb250aW51ZTtpZigoRiYmaXNTdGF0aWNBcmdPZih2LCJrZXkiKXx8cSYmTyYmaXNTdGF0aWNBcmdPZih2LCJ2dWU6YmVmb3JlLXVwZGF0ZSIpKSYmKFI9ITApLEYmJmlzU3RhdGljQXJnT2YodiwicmVmIikmJnB1c2hSZWZWRm9yTWFya2VyKCksIXYmJihGfHxxKSl7aWYoVj0hMCxEKWlmKEYpe2lmKHB1c2hNZXJnZUFyZygpLGlzQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiIsYykpe1QudW5zaGlmdChEKTtjb250aW51ZX1wdXNoUmVmVkZvck1hcmtlcigpLHB1c2hNZXJnZUFyZygpLFQucHVzaChEKX1lbHNlIHB1c2hNZXJnZUFyZyh7dHlwZToxNCxsb2M6TCxjYWxsZWU6Yy5oZWxwZXIoQ3QpLGFyZ3VtZW50czpoP1tEXTpbRCwidHJ1ZSJdfSk7ZWxzZSBjLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihGPzM0OjM1LEwpKTtjb250aW51ZX1GJiYkLnNvbWUoZT0+InByb3AiPT09ZS5jb250ZW50KSYmKE18PTMyKTtjb25zdCBVPWMuZGlyZWN0aXZlVHJhbnNmb3Jtc1tkXTtpZihVKXtjb25zdHtwcm9wczpkLG5lZWRSdW50aW1lOmh9PVUoayxlLGMpOyFiJiZkLmZvckVhY2goYW5hbHl6ZVBhdGNoRmxhZykscSYmdiYmIWlzU3RhdGljRXhwKHYpP3B1c2hNZXJnZUFyZyhjcmVhdGVPYmplY3RFeHByZXNzaW9uKGQsRSkpOl8ucHVzaCguLi5kKSxoJiYoTi5wdXNoKGspLE5lKGgpJiZObi5zZXQoayxoKSl9ZWxzZSBBZShkKXx8KE4ucHVzaChrKSxPJiYoUj0hMCkpfX1sZXQgVztpZihULmxlbmd0aD8ocHVzaE1lcmdlQXJnKCksVz1ULmxlbmd0aD4xP2NyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKHh0KSxULEUpOlRbMF0pOl8ubGVuZ3RoJiYoVz1jcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMoXyksRSkpLFY/TXw9MTY6KEwmJiFoJiYoTXw9MiksJCYmIWgmJihNfD00KSxVLmxlbmd0aCYmKE18PTgpLEYmJihNfD0zMikpLFJ8fDAhPT1NJiYzMiE9PU18fCEoRHx8cXx8Ti5sZW5ndGg+MCl8fChNfD01MTIpLCFjLmluU1NSJiZXKXN3aXRjaChXLnR5cGUpe2Nhc2UgMTU6bGV0IGU9LTEsZD0tMSxoPSExO2ZvcihsZXQgYz0wO2M8Vy5wcm9wZXJ0aWVzLmxlbmd0aDtjKyspe2NvbnN0IHY9Vy5wcm9wZXJ0aWVzW2NdLmtleTtpc1N0YXRpY0V4cCh2KT8iY2xhc3MiPT09di5jb250ZW50P2U9Yzoic3R5bGUiPT09di5jb250ZW50JiYoZD1jKTp2LmlzSGFuZGxlcktleXx8KGg9ITApfWNvbnN0IHY9Vy5wcm9wZXJ0aWVzW2VdLGI9Vy5wcm9wZXJ0aWVzW2RdO2g/Vz1jcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcih3dCksW1ddKToodiYmIWlzU3RhdGljRXhwKHYudmFsdWUpJiYodi52YWx1ZT1jcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcihTdCksW3YudmFsdWVdKSksYiYmKCR8fDQ9PT1iLnZhbHVlLnR5cGUmJiJbIj09PWIudmFsdWUuY29udGVudC50cmltKClbMF18fDE3PT09Yi52YWx1ZS50eXBlKSYmKGIudmFsdWU9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oYy5oZWxwZXIoRXQpLFtiLnZhbHVlXSkpKTticmVhaztjYXNlIDE0OmJyZWFrO2RlZmF1bHQ6Vz1jcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcih3dCksW2NyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKGt0KSxbV10pXSl9cmV0dXJue3Byb3BzOlcsZGlyZWN0aXZlczpOLHBhdGNoRmxhZzpNLGR5bmFtaWNQcm9wTmFtZXM6VSxzaG91bGRVc2VCbG9jazpSfX1mdW5jdGlvbiBkZWR1cGVQcm9wZXJ0aWVzKGUpe2NvbnN0IGM9bmV3IE1hcCxkPVtdO2ZvcihsZXQgaD0wO2g8ZS5sZW5ndGg7aCsrKXtjb25zdCB2PWVbaF07aWYoOD09PXYua2V5LnR5cGV8fCF2LmtleS5pc1N0YXRpYyl7ZC5wdXNoKHYpO2NvbnRpbnVlfWNvbnN0IGI9di5rZXkuY29udGVudCx5PWMuZ2V0KGIpO3k/KCJzdHlsZSI9PT1ifHwiY2xhc3MiPT09Ynx8QmUoYikpJiZtZXJnZUFzQXJyYXkoeSx2KTooYy5zZXQoYix2KSxkLnB1c2godikpfXJldHVybiBkfWZ1bmN0aW9uIG1lcmdlQXNBcnJheShlLGMpezE3PT09ZS52YWx1ZS50eXBlP2UudmFsdWUuZWxlbWVudHMucHVzaChjLnZhbHVlKTplLnZhbHVlPWNyZWF0ZUFycmF5RXhwcmVzc2lvbihbZS52YWx1ZSxjLnZhbHVlXSxlLmxvYyl9ZnVuY3Rpb24gYnVpbGREaXJlY3RpdmVBcmdzKGUsYyl7Y29uc3QgZD1bXSxoPU5uLmdldChlKTtoP2QucHVzaChjLmhlbHBlclN0cmluZyhoKSk6KGMuaGVscGVyKHB0KSxjLmRpcmVjdGl2ZXMuYWRkKGUubmFtZSksZC5wdXNoKHRvVmFsaWRBc3NldElkKGUubmFtZSwiZGlyZWN0aXZlIikpKTtjb25zdHtsb2M6dn09ZTtpZihlLmV4cCYmZC5wdXNoKGUuZXhwKSxlLmFyZyYmKGUuZXhwfHxkLnB1c2goInZvaWQgMCIpLGQucHVzaChlLmFyZykpLE9iamVjdC5rZXlzKGUubW9kaWZpZXJzKS5sZW5ndGgpe2UuYXJnfHwoZS5leHB8fGQucHVzaCgidm9pZCAwIiksZC5wdXNoKCJ2b2lkIDAiKSk7Y29uc3QgYz1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJ0cnVlIiwhMSx2KTtkLnB1c2goY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihlLm1vZGlmaWVycy5tYXAoZT0+Y3JlYXRlT2JqZWN0UHJvcGVydHkoZSxjKSksdikpfXJldHVybiBjcmVhdGVBcnJheUV4cHJlc3Npb24oZCxlLmxvYyl9ZnVuY3Rpb24gaXNDb21wb25lbnRUYWcoZSl7cmV0dXJuImNvbXBvbmVudCI9PT1lfHwiQ29tcG9uZW50Ij09PWV9Y29uc3QgdHJhbnNmb3JtU2xvdE91dGxldD0oZSxjKT0+e2lmKGlzU2xvdE91dGxldChlKSl7Y29uc3R7Y2hpbGRyZW46ZCxsb2M6aH09ZSx7c2xvdE5hbWU6dixzbG90UHJvcHM6Yn09cHJvY2Vzc1Nsb3RPdXRsZXQoZSxjKSx5PVtjLnByZWZpeElkZW50aWZpZXJzPyJfY3R4LiRzbG90cyI6IiRzbG90cyIsdiwie30iLCJ1bmRlZmluZWQiLCJ0cnVlIl07bGV0IEU9MjtiJiYoeVsyXT1iLEU9MyksZC5sZW5ndGgmJih5WzNdPWNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihbXSxkLCExLCExLGgpLEU9NCksYy5zY29wZUlkJiYhYy5zbG90dGVkJiYoRT01KSx5LnNwbGljZShFKSxlLmNvZGVnZW5Ob2RlPWNyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKHZ0KSx5LGgpfX07ZnVuY3Rpb24gcHJvY2Vzc1Nsb3RPdXRsZXQoZSxjKXtsZXQgZCxoPSciZGVmYXVsdCInO2NvbnN0IHY9W107Zm9yKGxldCBjPTA7YzxlLnByb3BzLmxlbmd0aDtjKyspe2NvbnN0IGQ9ZS5wcm9wc1tjXTtpZig2PT09ZC50eXBlKWQudmFsdWUmJigibmFtZSI9PT1kLm5hbWU/aD1KU09OLnN0cmluZ2lmeShkLnZhbHVlLmNvbnRlbnQpOihkLm5hbWU9SWUoZC5uYW1lKSx2LnB1c2goZCkpKTtlbHNlIGlmKCJiaW5kIj09PWQubmFtZSYmaXNTdGF0aWNBcmdPZihkLmFyZywibmFtZSIpKXtpZihkLmV4cCloPWQuZXhwO2Vsc2UgaWYoZC5hcmcmJjQ9PT1kLmFyZy50eXBlKXtjb25zdCBlPUllKGQuYXJnLmNvbnRlbnQpO2g9ZC5leHA9Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbihlLCExLGQuYXJnLmxvYyl9fWVsc2UiYmluZCI9PT1kLm5hbWUmJmQuYXJnJiZpc1N0YXRpY0V4cChkLmFyZykmJihkLmFyZy5jb250ZW50PUllKGQuYXJnLmNvbnRlbnQpKSx2LnB1c2goZCl9aWYodi5sZW5ndGg+MCl7Y29uc3R7cHJvcHM6aCxkaXJlY3RpdmVzOmJ9PWJ1aWxkUHJvcHMoZSxjLHYsITEsITEpO2Q9aCxiLmxlbmd0aCYmYy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzYsYlswXS5sb2MpKX1yZXR1cm57c2xvdE5hbWU6aCxzbG90UHJvcHM6ZH19Y29uc3QgdHJhbnNmb3JtT24kMT0oZSxjLGQsaCk9Pntjb25zdHtsb2M6dixtb2RpZmllcnM6Yixhcmc6eX09ZTtsZXQgRTtpZihlLmV4cHx8Yi5sZW5ndGh8fGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM1LHYpKSw0PT09eS50eXBlKWlmKHkuaXNTdGF0aWMpe2xldCBlPXkuY29udGVudDtlLnN0YXJ0c1dpdGgoInZ1ZToiKSYmKGU9YHZub2RlLSR7ZS5zbGljZSg0KX1gKTtFPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oMCE9PWMudGFnVHlwZXx8ZS5zdGFydHNXaXRoKCJ2bm9kZSIpfHwhL1tBLVpdLy50ZXN0KGUpP01lKEllKGUpKTpgb246JHtlfWAsITAseS5sb2MpfWVsc2UgRT1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Ake2QuaGVscGVyU3RyaW5nKE50KX0oYCx5LCIpIl0pO2Vsc2UgRT15LEUuY2hpbGRyZW4udW5zaGlmdChgJHtkLmhlbHBlclN0cmluZyhOdCl9KGApLEUuY2hpbGRyZW4ucHVzaCgiKSIpO2xldCBrPWUuZXhwO2smJiFrLmNvbnRlbnQudHJpbSgpJiYoaz12b2lkIDApO2xldCBfPWQuY2FjaGVIYW5kbGVycyYmIWsmJiFkLmluVk9uY2U7aWYoayl7Y29uc3QgZT1KdChrKSxjPSEoZXx8WnQoaykpLGQ9ay5jb250ZW50LmluY2x1ZGVzKCI7Iik7KGN8fF8mJmUpJiYoaz1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Ake2M/IiRldmVudCI6IiguLi5hcmdzKSJ9ID0+ICR7ZD8ieyI6IigifWAsayxkPyJ9IjoiKSJdKSl9bGV0IFQ9e3Byb3BzOltjcmVhdGVPYmplY3RQcm9wZXJ0eShFLGt8fGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oIigpID0+IHt9IiwhMSx2KSldfTtyZXR1cm4gaCYmKFQ9aChUKSksXyYmKFQucHJvcHNbMF0udmFsdWU9ZC5jYWNoZShULnByb3BzWzBdLnZhbHVlKSksVC5wcm9wcy5mb3JFYWNoKGU9PmUua2V5LmlzSGFuZGxlcktleT0hMCksVH0sdHJhbnNmb3JtQmluZD0oZSxjLGQpPT57Y29uc3R7bW9kaWZpZXJzOmgsbG9jOnZ9PWUsYj1lLmFyZztsZXR7ZXhwOnl9PWU7cmV0dXJuIHkmJjQ9PT15LnR5cGUmJiF5LmNvbnRlbnQudHJpbSgpJiYoeT12b2lkIDApLDQhPT1iLnR5cGU/KGIuY2hpbGRyZW4udW5zaGlmdCgiKCIpLGIuY2hpbGRyZW4ucHVzaCgnKSB8fCAiIicpKTpiLmlzU3RhdGljfHwoYi5jb250ZW50PWIuY29udGVudD9gJHtiLmNvbnRlbnR9IHx8ICIiYDonIiInKSxoLnNvbWUoZT0+ImNhbWVsIj09PWUuY29udGVudCkmJig0PT09Yi50eXBlP2IuaXNTdGF0aWM/Yi5jb250ZW50PUllKGIuY29udGVudCk6Yi5jb250ZW50PWAke2QuaGVscGVyU3RyaW5nKF90KX0oJHtiLmNvbnRlbnR9KWA6KGIuY2hpbGRyZW4udW5zaGlmdChgJHtkLmhlbHBlclN0cmluZyhfdCl9KGApLGIuY2hpbGRyZW4ucHVzaCgiKSIpKSksZC5pblNTUnx8KGguc29tZShlPT4icHJvcCI9PT1lLmNvbnRlbnQpJiZpbmplY3RQcmVmaXgoYiwiLiIpLGguc29tZShlPT4iYXR0ciI9PT1lLmNvbnRlbnQpJiZpbmplY3RQcmVmaXgoYiwiXiIpKSx7cHJvcHM6W2NyZWF0ZU9iamVjdFByb3BlcnR5KGIseSldfX0saW5qZWN0UHJlZml4PShlLGMpPT57ND09PWUudHlwZT9lLmlzU3RhdGljP2UuY29udGVudD1jK2UuY29udGVudDplLmNvbnRlbnQ9YFxgJHtjfVwkeyR7ZS5jb250ZW50fX1cYGA6KGUuY2hpbGRyZW4udW5zaGlmdChgJyR7Y30nICsgKGApLGUuY2hpbGRyZW4ucHVzaCgiKSIpKX0sdHJhbnNmb3JtVGV4dD0oZSxjKT0+e2lmKDA9PT1lLnR5cGV8fDE9PT1lLnR5cGV8fDExPT09ZS50eXBlfHwxMD09PWUudHlwZSlyZXR1cm4oKT0+e2NvbnN0IGQ9ZS5jaGlsZHJlbjtsZXQgaCx2PSExO2ZvcihsZXQgZT0wO2U8ZC5sZW5ndGg7ZSsrKXtjb25zdCBjPWRbZV07aWYoaXNUZXh0JDEoYykpe3Y9ITA7Zm9yKGxldCB2PWUrMTt2PGQubGVuZ3RoO3YrKyl7Y29uc3QgYj1kW3ZdO2lmKCFpc1RleHQkMShiKSl7aD12b2lkIDA7YnJlYWt9aHx8KGg9ZFtlXT1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2NdLGMubG9jKSksaC5jaGlsZHJlbi5wdXNoKCIgKyAiLGIpLGQuc3BsaWNlKHYsMSksdi0tfX19aWYodiYmKDEhPT1kLmxlbmd0aHx8MCE9PWUudHlwZSYmKDEhPT1lLnR5cGV8fDAhPT1lLnRhZ1R5cGV8fGUucHJvcHMuZmluZChlPT43PT09ZS50eXBlJiYhYy5kaXJlY3RpdmVUcmFuc2Zvcm1zW2UubmFtZV0pfHwidGVtcGxhdGUiPT09ZS50YWcpKSlmb3IobGV0IGU9MDtlPGQubGVuZ3RoO2UrKyl7Y29uc3QgaD1kW2VdO2lmKGlzVGV4dCQxKGgpfHw4PT09aC50eXBlKXtjb25zdCB2PVtdOzI9PT1oLnR5cGUmJiIgIj09PWguY29udGVudHx8di5wdXNoKGgpLGMuc3NyfHwwIT09Z2V0Q29uc3RhbnRUeXBlKGgsYyl8fHYucHVzaCgiMSIpLGRbZV09e3R5cGU6MTIsY29udGVudDpoLGxvYzpoLmxvYyxjb2RlZ2VuTm9kZTpjcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcihzdCksdil9fX19fSxBbj1uZXcgV2Vha1NldCx0cmFuc2Zvcm1PbmNlPShlLGMpPT57aWYoMT09PWUudHlwZSYmZmluZERpcihlLCJvbmNlIiwhMCkpe2lmKEFuLmhhcyhlKXx8Yy5pblZPbmNlfHxjLmluU1NSKXJldHVybjtyZXR1cm4gQW4uYWRkKGUpLGMuaW5WT25jZT0hMCxjLmhlbHBlcihBdCksKCk9PntjLmluVk9uY2U9ITE7Y29uc3QgZT1jLmN1cnJlbnROb2RlO2UuY29kZWdlbk5vZGUmJihlLmNvZGVnZW5Ob2RlPWMuY2FjaGUoZS5jb2RlZ2VuTm9kZSwhMCwhMCkpfX19LHRyYW5zZm9ybU1vZGVsJDE9KGUsYyxkKT0+e2NvbnN0e2V4cDpoLGFyZzp2fT1lO2lmKCFoKXJldHVybiBkLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MSxlLmxvYykpLGNyZWF0ZVRyYW5zZm9ybVByb3BzKCk7Y29uc3QgYj1oLmxvYy5zb3VyY2UudHJpbSgpLHk9ND09PWgudHlwZT9oLmNvbnRlbnQ6YixFPWQuYmluZGluZ01ldGFkYXRhW2JdO2lmKCJwcm9wcyI9PT1FfHwicHJvcHMtYWxpYXNlZCI9PT1FKXJldHVybiBkLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NCxoLmxvYykpLGNyZWF0ZVRyYW5zZm9ybVByb3BzKCk7aWYoImxpdGVyYWwtY29uc3QiPT09RXx8InNldHVwLWNvbnN0Ij09PUUpcmV0dXJuIGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ1LGgubG9jKSksY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtpZigheS50cmltKCl8fCFKdChoKSlyZXR1cm4gZC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDIsaC5sb2MpKSxjcmVhdGVUcmFuc2Zvcm1Qcm9wcygpO2NvbnN0IGs9dnx8Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigibW9kZWxWYWx1ZSIsITApLF89dj9pc1N0YXRpY0V4cCh2KT9gb25VcGRhdGU6JHtJZSh2LmNvbnRlbnQpfWA6Y3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsnIm9uVXBkYXRlOiIgKyAnLHZdKToib25VcGRhdGU6bW9kZWxWYWx1ZSI7bGV0IFQ7VD1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Ake2QuaXNUUz8iKCRldmVudDogYW55KSI6IiRldmVudCJ9ID0+ICgoYCxoLCIpID0gJGV2ZW50KSJdKTtjb25zdCBOPVtjcmVhdGVPYmplY3RQcm9wZXJ0eShrLGUuZXhwKSxjcmVhdGVPYmplY3RQcm9wZXJ0eShfLFQpXTtpZihlLm1vZGlmaWVycy5sZW5ndGgmJjE9PT1jLnRhZ1R5cGUpe2NvbnN0IGM9ZS5tb2RpZmllcnMubWFwKGU9PmUuY29udGVudCkubWFwKGU9Pihpc1NpbXBsZUlkZW50aWZpZXIoZSk/ZTpKU09OLnN0cmluZ2lmeShlKSkrIjogdHJ1ZSIpLmpvaW4oIiwgIiksZD12P2lzU3RhdGljRXhwKHYpP2Ake3YuY29udGVudH1Nb2RpZmllcnNgOmNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbdiwnICsgIk1vZGlmaWVycyInXSk6Im1vZGVsTW9kaWZpZXJzIjtOLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoZCxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB7ICR7Y30gfWAsITEsZS5sb2MsMikpKX1yZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoTil9O2Z1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybVByb3BzKGU9W10pe3JldHVybntwcm9wczplfX1jb25zdCBPbj0vW1x3KS4rXC1fJFxdXS8sdHJhbnNmb3JtRmlsdGVyPShlLGMpPT57aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9GSUxURVJTIixjKSYmKDU9PT1lLnR5cGU/cmV3cml0ZUZpbHRlcihlLmNvbnRlbnQsYyk6MT09PWUudHlwZSYmZS5wcm9wcy5mb3JFYWNoKGU9Pns3PT09ZS50eXBlJiYiZm9yIiE9PWUubmFtZSYmZS5leHAmJnJld3JpdGVGaWx0ZXIoZS5leHAsYyl9KSl9O2Z1bmN0aW9uIHJld3JpdGVGaWx0ZXIoZSxjKXtpZig0PT09ZS50eXBlKXBhcnNlRmlsdGVyKGUsYyk7ZWxzZSBmb3IobGV0IGQ9MDtkPGUuY2hpbGRyZW4ubGVuZ3RoO2QrKyl7Y29uc3QgaD1lLmNoaWxkcmVuW2RdOyJvYmplY3QiPT10eXBlb2YgaCYmKDQ9PT1oLnR5cGU/cGFyc2VGaWx0ZXIoaCxjKTo4PT09aC50eXBlP3Jld3JpdGVGaWx0ZXIoZSxjKTo1PT09aC50eXBlJiZyZXdyaXRlRmlsdGVyKGguY29udGVudCxjKSl9fWZ1bmN0aW9uIHBhcnNlRmlsdGVyKGUsYyl7Y29uc3QgZD1lLmNvbnRlbnQ7bGV0IGgsdixiLHksRT0hMSxrPSExLF89ITEsVD0hMSxOPTAsTz0wLFI9MCxNPTAsRD1bXTtmb3IoYj0wO2I8ZC5sZW5ndGg7YisrKWlmKHY9aCxoPWQuY2hhckNvZGVBdChiKSxFKTM5PT09aCYmOTIhPT12JiYoRT0hMSk7ZWxzZSBpZihrKTM0PT09aCYmOTIhPT12JiYoaz0hMSk7ZWxzZSBpZihfKTk2PT09aCYmOTIhPT12JiYoXz0hMSk7ZWxzZSBpZihUKTQ3PT09aCYmOTIhPT12JiYoVD0hMSk7ZWxzZSBpZigxMjQhPT1ofHwxMjQ9PT1kLmNoYXJDb2RlQXQoYisxKXx8MTI0PT09ZC5jaGFyQ29kZUF0KGItMSl8fE58fE98fFIpe3N3aXRjaChoKXtjYXNlIDM0Oms9ITA7YnJlYWs7Y2FzZSAzOTpFPSEwO2JyZWFrO2Nhc2UgOTY6Xz0hMDticmVhaztjYXNlIDQwOlIrKzticmVhaztjYXNlIDQxOlItLTticmVhaztjYXNlIDkxOk8rKzticmVhaztjYXNlIDkzOk8tLTticmVhaztjYXNlIDEyMzpOKys7YnJlYWs7Y2FzZSAxMjU6Ti0tfWlmKDQ3PT09aCl7bGV0IGUsYz1iLTE7Zm9yKDtjPj0wJiYoZT1kLmNoYXJBdChjKSwiICI9PT1lKTtjLS0pO2UmJk9uLnRlc3QoZSl8fChUPSEwKX19ZWxzZSB2b2lkIDA9PT15PyhNPWIrMSx5PWQuc2xpY2UoMCxiKS50cmltKCkpOnB1c2hGaWx0ZXIoKTtmdW5jdGlvbiBwdXNoRmlsdGVyKCl7RC5wdXNoKGQuc2xpY2UoTSxiKS50cmltKCkpLE09YisxfWlmKHZvaWQgMD09PXk/eT1kLnNsaWNlKDAsYikudHJpbSgpOjAhPT1NJiZwdXNoRmlsdGVyKCksRC5sZW5ndGgpe2ZvcihiPTA7YjxELmxlbmd0aDtiKyspeT13cmFwRmlsdGVyKHksRFtiXSxjKTtlLmNvbnRlbnQ9eSxlLmFzdD12b2lkIDB9fWZ1bmN0aW9uIHdyYXBGaWx0ZXIoZSxjLGQpe2QuaGVscGVyKGZ0KTtjb25zdCBoPWMuaW5kZXhPZigiKCIpO2lmKGg8MClyZXR1cm4gZC5maWx0ZXJzLmFkZChjKSxgJHt0b1ZhbGlkQXNzZXRJZChjLCJmaWx0ZXIiKX0oJHtlfSlgO3tjb25zdCB2PWMuc2xpY2UoMCxoKSxiPWMuc2xpY2UoaCsxKTtyZXR1cm4gZC5maWx0ZXJzLmFkZCh2KSxgJHt0b1ZhbGlkQXNzZXRJZCh2LCJmaWx0ZXIiKX0oJHtlfSR7IikiIT09Yj8iLCIrYjpifWB9fWNvbnN0IEluPW5ldyBXZWFrU2V0LHRyYW5zZm9ybU1lbW89KGUsYyk9PntpZigxPT09ZS50eXBlKXtjb25zdCBkPWZpbmREaXIoZSwibWVtbyIpO2lmKCFkfHxJbi5oYXMoZSl8fGMuaW5TU1IpcmV0dXJuO3JldHVybiBJbi5hZGQoZSksKCk9Pntjb25zdCBoPWUuY29kZWdlbk5vZGV8fGMuY3VycmVudE5vZGUuY29kZWdlbk5vZGU7aCYmMTM9PT1oLnR5cGUmJigxIT09ZS50YWdUeXBlJiZjb252ZXJ0VG9CbG9jayhoLGMpLGUuY29kZWdlbk5vZGU9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oYy5oZWxwZXIoRHQpLFtkLmV4cCxjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLGgpLCJfY2FjaGUiLFN0cmluZyhjLmNhY2hlZC5sZW5ndGgpXSksYy5jYWNoZWQucHVzaChudWxsKSl9fX0sdHJhbnNmb3JtVkJpbmRTaG9ydGhhbmQ9KGUsYyk9PntpZigxPT09ZS50eXBlKWZvcihjb25zdCBkIG9mIGUucHJvcHMpaWYoNz09PWQudHlwZSYmImJpbmQiPT09ZC5uYW1lJiYoIWQuZXhwfHw0PT09ZC5leHAudHlwZSYmIWQuZXhwLmNvbnRlbnQudHJpbSgpKSYmZC5hcmcpe2NvbnN0IGU9ZC5hcmc7aWYoND09PWUudHlwZSYmZS5pc1N0YXRpYyl7Y29uc3QgYz1JZShlLmNvbnRlbnQpOyhHdC50ZXN0KGNbMF0pfHwiLSI9PT1jWzBdKSYmKGQuZXhwPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYywhMSxlLmxvYykpfWVsc2UgYy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNTMsZS5sb2MpKSxkLmV4cD1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKCIiLCEwLGUubG9jKX19O2Z1bmN0aW9uIGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQoZSl7cmV0dXJuW1t0cmFuc2Zvcm1WQmluZFNob3J0aGFuZCx0cmFuc2Zvcm1PbmNlLENuLHRyYW5zZm9ybU1lbW8sX24sdHJhbnNmb3JtRmlsdGVyLHRyYW5zZm9ybVNsb3RPdXRsZXQsdHJhbnNmb3JtRWxlbWVudCx0cmFja1Nsb3RTY29wZXMsdHJhbnNmb3JtVGV4dF0se29uOnRyYW5zZm9ybU9uJDEsYmluZDp0cmFuc2Zvcm1CaW5kLG1vZGVsOnRyYW5zZm9ybU1vZGVsJDF9XX1mdW5jdGlvbiBiYXNlQ29tcGlsZShlLGM9e30pe2NvbnN0IGQ9Yy5vbkVycm9yfHxkZWZhdWx0T25FcnJvcixoPSJtb2R1bGUiPT09Yy5tb2RlOyEwPT09Yy5wcmVmaXhJZGVudGlmaWVycz9kKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDgpKTpoJiZkKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDkpKTtjLmNhY2hlSGFuZGxlcnMmJmQoY3JlYXRlQ29tcGlsZXJFcnJvcig1MCkpLGMuc2NvcGVJZCYmIWgmJmQoY3JlYXRlQ29tcGlsZXJFcnJvcig1MSkpO2NvbnN0IHY9Q2Uoe30sYyx7cHJlZml4SWRlbnRpZmllcnM6ITF9KSxiPV9lKGUpP2Jhc2VQYXJzZShlLHYpOmUsW3ksRV09Z2V0QmFzZVRyYW5zZm9ybVByZXNldCgpO3JldHVybiB0cmFuc2Zvcm0oYixDZSh7fSx2LHtub2RlVHJhbnNmb3JtczpbLi4ueSwuLi5jLm5vZGVUcmFuc2Zvcm1zfHxbXV0sZGlyZWN0aXZlVHJhbnNmb3JtczpDZSh7fSxFLGMuZGlyZWN0aXZlVHJhbnNmb3Jtc3x8e30pfSkpLGdlbmVyYXRlKGIsdil9Y29uc3Qgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybT0oKT0+KHtwcm9wczpbXX0pLFJuPVN5bWJvbCgiIiksUG49U3ltYm9sKCIiKSxNbj1TeW1ib2woIiIpLERuPVN5bWJvbCgiIiksQm49U3ltYm9sKCIiKSxMbj1TeW1ib2woIiIpLGpuPVN5bWJvbCgiIiksJG49U3ltYm9sKCIiKSxGbj1TeW1ib2woIiIpLFZuPVN5bWJvbCgiIik7bGV0IHpuO3JlZ2lzdGVyUnVudGltZUhlbHBlcnMoe1tSbl06InZNb2RlbFJhZGlvIixbUG5dOiJ2TW9kZWxDaGVja2JveCIsW01uXToidk1vZGVsVGV4dCIsW0RuXToidk1vZGVsU2VsZWN0IixbQm5dOiJ2TW9kZWxEeW5hbWljIixbTG5dOiJ3aXRoTW9kaWZpZXJzIixbam5dOiJ3aXRoS2V5cyIsWyRuXToidlNob3ciLFtGbl06IlRyYW5zaXRpb24iLFtWbl06IlRyYW5zaXRpb25Hcm91cCJ9KTtjb25zdCBxbj17cGFyc2VNb2RlOiJodG1sIixpc1ZvaWRUYWc6amUsaXNOYXRpdmVUYWc6ZT0+JGUoZSl8fEZlKGUpfHxWZShlKSxpc1ByZVRhZzplPT4icHJlIj09PWUsaXNJZ25vcmVOZXdsaW5lVGFnOmU9PiJwcmUiPT09ZXx8InRleHRhcmVhIj09PWUsZGVjb2RlRW50aXRpZXM6ZnVuY3Rpb24oZSxjPSExKXtyZXR1cm4gem58fCh6bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSksYz8oem4uaW5uZXJIVE1MPWA8ZGl2IGZvbz0iJHtlLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9Ij5gLHpuLmNoaWxkcmVuWzBdLmdldEF0dHJpYnV0ZSgiZm9vIikpOih6bi5pbm5lckhUTUw9ZSx6bi50ZXh0Q29udGVudCl9LGlzQnVpbHRJbkNvbXBvbmVudDplPT4iVHJhbnNpdGlvbiI9PT1lfHwidHJhbnNpdGlvbiI9PT1lP0ZuOiJUcmFuc2l0aW9uR3JvdXAiPT09ZXx8InRyYW5zaXRpb24tZ3JvdXAiPT09ZT9Wbjp2b2lkIDAsZ2V0TmFtZXNwYWNlKGUsYyxkKXtsZXQgaD1jP2MubnM6ZDtpZihjJiYyPT09aClpZigiYW5ub3RhdGlvbi14bWwiPT09Yy50YWcpe2lmKCJzdmciPT09ZSlyZXR1cm4gMTtjLnByb3BzLnNvbWUoZT0+Nj09PWUudHlwZSYmImVuY29kaW5nIj09PWUubmFtZSYmbnVsbCE9ZS52YWx1ZSYmKCJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5jb250ZW50fHwiYXBwbGljYXRpb24veGh0bWwreG1sIj09PWUudmFsdWUuY29udGVudCkpJiYoaD0wKX1lbHNlL15tKD86W2lvbnNdfHRleHQpJC8udGVzdChjLnRhZykmJiJtZ2x5cGgiIT09ZSYmIm1hbGlnbm1hcmsiIT09ZSYmKGg9MCk7ZWxzZSBjJiYxPT09aCYmKCJmb3JlaWduT2JqZWN0IiE9PWMudGFnJiYiZGVzYyIhPT1jLnRhZyYmInRpdGxlIiE9PWMudGFnfHwoaD0wKSk7aWYoMD09PWgpe2lmKCJzdmciPT09ZSlyZXR1cm4gMTtpZigibWF0aCI9PT1lKXJldHVybiAyfXJldHVybiBofX0sdHJhbnNmb3JtU3R5bGU9ZT0+ezE9PT1lLnR5cGUmJmUucHJvcHMuZm9yRWFjaCgoYyxkKT0+ezY9PT1jLnR5cGUmJiJzdHlsZSI9PT1jLm5hbWUmJmMudmFsdWUmJihlLnByb3BzW2RdPXt0eXBlOjcsbmFtZToiYmluZCIsYXJnOmNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oInN0eWxlIiwhMCxjLmxvYyksZXhwOnBhcnNlSW5saW5lQ1NTKGMudmFsdWUuY29udGVudCxjLmxvYyksbW9kaWZpZXJzOltdLGxvYzpjLmxvY30pfSl9LHBhcnNlSW5saW5lQ1NTPShlLGMpPT57Y29uc3QgZD16ZShlKTtyZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihKU09OLnN0cmluZ2lmeShkKSwhMSxjLDMpfTtmdW5jdGlvbiBjcmVhdGVET01Db21waWxlckVycm9yKGUsYyl7cmV0dXJuIGNyZWF0ZUNvbXBpbGVyRXJyb3IoZSxjKX1jb25zdCBVbj17NTQ6InYtaHRtbCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiw1NToidi1odG1sIHdpbGwgb3ZlcnJpZGUgZWxlbWVudCBjaGlsZHJlbi4iLDU2OiJ2LXRleHQgaXMgbWlzc2luZyBleHByZXNzaW9uLiIsNTc6InYtdGV4dCB3aWxsIG92ZXJyaWRlIGVsZW1lbnQgY2hpbGRyZW4uIiw1ODoidi1tb2RlbCBjYW4gb25seSBiZSB1c2VkIG9uIDxpbnB1dD4sIDx0ZXh0YXJlYT4gYW5kIDxzZWxlY3Q+IGVsZW1lbnRzLiIsNTk6InYtbW9kZWwgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZCBvbiBwbGFpbiBlbGVtZW50cy4iLDYwOiJ2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIGZpbGUgaW5wdXRzIHNpbmNlIHRoZXkgYXJlIHJlYWQtb25seS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlzdGVuZXIgaW5zdGVhZC4iLDYxOiJVbm5lY2Vzc2FyeSB2YWx1ZSBiaW5kaW5nIHVzZWQgYWxvbmdzaWRlIHYtbW9kZWwuIEl0IHdpbGwgaW50ZXJmZXJlIHdpdGggdi1tb2RlbCdzIGJlaGF2aW9yLiIsNjI6InYtc2hvdyBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiw2MzoiPFRyYW5zaXRpb24+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudCBvciBjb21wb25lbnQuIiw2NDoiVGFncyB3aXRoIHNpZGUgZWZmZWN0ICg8c2NyaXB0PiBhbmQgPHN0eWxlPikgYXJlIGlnbm9yZWQgaW4gY2xpZW50IGNvbXBvbmVudCB0ZW1wbGF0ZXMuIn0sSG49cWUoInBhc3NpdmUsb25jZSxjYXB0dXJlIiksR249cWUoInN0b3AscHJldmVudCxzZWxmLGN0cmwsc2hpZnQsYWx0LG1ldGEsZXhhY3QsbWlkZGxlIiksV249cWUoImxlZnQscmlnaHQiKSxYbj1xZSgib25rZXl1cCxvbmtleWRvd24sb25rZXlwcmVzcyIpLHRyYW5zZm9ybUNsaWNrPShlLGMpPT5pc1N0YXRpY0V4cChlKSYmIm9uY2xpY2siPT09ZS5jb250ZW50LnRvTG93ZXJDYXNlKCk/Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjLCEwKTo0IT09ZS50eXBlP2NyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbIigiLGUsYCkgPT09ICJvbkNsaWNrIiA/ICIke2N9IiA6IChgLGUsIikiXSk6ZSxpZ25vcmVTaWRlRWZmZWN0VGFncz0oZSxjKT0+ezEhPT1lLnR5cGV8fDAhPT1lLnRhZ1R5cGV8fCJzY3JpcHQiIT09ZS50YWcmJiJzdHlsZSIhPT1lLnRhZ3x8Yy5yZW1vdmVOb2RlKCl9LEtuPVt0cmFuc2Zvcm1TdHlsZV0sSm49e2Nsb2FrOm5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0saHRtbDooZSxjLGQpPT57Y29uc3R7ZXhwOmgsbG9jOnZ9PWU7cmV0dXJuIGh8fGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU0LHYpKSxjLmNoaWxkcmVuLmxlbmd0aCYmKGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU1LHYpKSxjLmNoaWxkcmVuLmxlbmd0aD0wKSx7cHJvcHM6W2NyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oImlubmVySFRNTCIsITAsdiksaHx8Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiIiwhMCkpXX19LHRleHQ6KGUsYyxkKT0+e2NvbnN0e2V4cDpoLGxvYzp2fT1lO3JldHVybiBofHxkLm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1Nix2KSksYy5jaGlsZHJlbi5sZW5ndGgmJihkLm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1Nyx2KSksYy5jaGlsZHJlbi5sZW5ndGg9MCkse3Byb3BzOltjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJ0ZXh0Q29udGVudCIsITApLGg/Z2V0Q29uc3RhbnRUeXBlKGgsZCk+MD9oOmNyZWF0ZUNhbGxFeHByZXNzaW9uKGQuaGVscGVyU3RyaW5nKHl0KSxbaF0sdik6Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiIiwhMCkpXX19LG1vZGVsOihlLGMsZCk9Pntjb25zdCBoPXRyYW5zZm9ybU1vZGVsJDEoZSxjLGQpO2lmKCFoLnByb3BzLmxlbmd0aHx8MT09PWMudGFnVHlwZSlyZXR1cm4gaDtlLmFyZyYmZC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTksZS5hcmcubG9jKSk7Y29uc3R7dGFnOnZ9PWMsYj1kLmlzQ3VzdG9tRWxlbWVudCh2KTtpZigiaW5wdXQiPT09dnx8InRleHRhcmVhIj09PXZ8fCJzZWxlY3QiPT09dnx8Yil7bGV0IHk9TW4sRT0hMTtpZigiaW5wdXQiPT09dnx8Yil7Y29uc3QgaD1maW5kUHJvcChjLCJ0eXBlIik7aWYoaCl7aWYoNz09PWgudHlwZSl5PUJuO2Vsc2UgaWYoaC52YWx1ZSlzd2l0Y2goaC52YWx1ZS5jb250ZW50KXtjYXNlInJhZGlvIjp5PVJuO2JyZWFrO2Nhc2UiY2hlY2tib3giOnk9UG47YnJlYWs7Y2FzZSJmaWxlIjpFPSEwLGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDYwLGUubG9jKSl9fWVsc2UgaGFzRHluYW1pY0tleVZCaW5kKGMpJiYoeT1Cbil9ZWxzZSJzZWxlY3QiPT09diYmKHk9RG4pO0V8fChoLm5lZWRSdW50aW1lPWQuaGVscGVyKHkpKX1lbHNlIGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU4LGUubG9jKSk7cmV0dXJuIGgucHJvcHM9aC5wcm9wcy5maWx0ZXIoZT0+ISg0PT09ZS5rZXkudHlwZSYmIm1vZGVsVmFsdWUiPT09ZS5rZXkuY29udGVudCkpLGh9LG9uOihlLGMsZCk9PnRyYW5zZm9ybU9uJDEoZSxjLGQsYz0+e2NvbnN0e21vZGlmaWVyczpofT1lO2lmKCFoLmxlbmd0aClyZXR1cm4gYztsZXR7a2V5OnYsdmFsdWU6Yn09Yy5wcm9wc1swXTtjb25zdHtrZXlNb2RpZmllcnM6eSxub25LZXlNb2RpZmllcnM6RSxldmVudE9wdGlvbk1vZGlmaWVyczprfT0oKGUsYyxkKT0+e2NvbnN0IGg9W10sdj1bXSxiPVtdO2ZvcihsZXQgeT0wO3k8Yy5sZW5ndGg7eSsrKXtjb25zdCBFPWNbeV0uY29udGVudDsibmF0aXZlIj09PUUmJmNoZWNrQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfVl9PTl9OQVRJVkUiLGQpfHxIbihFKT9iLnB1c2goRSk6V24oRSk/aXNTdGF0aWNFeHAoZSk/WG4oZS5jb250ZW50LnRvTG93ZXJDYXNlKCkpP2gucHVzaChFKTp2LnB1c2goRSk6KGgucHVzaChFKSx2LnB1c2goRSkpOkduKEUpP3YucHVzaChFKTpoLnB1c2goRSl9cmV0dXJue2tleU1vZGlmaWVyczpoLG5vbktleU1vZGlmaWVyczp2LGV2ZW50T3B0aW9uTW9kaWZpZXJzOmJ9fSkodixoLGQsZS5sb2MpO2lmKEUuaW5jbHVkZXMoInJpZ2h0IikmJih2PXRyYW5zZm9ybUNsaWNrKHYsIm9uQ29udGV4dG1lbnUiKSksRS5pbmNsdWRlcygibWlkZGxlIikmJih2PXRyYW5zZm9ybUNsaWNrKHYsIm9uTW91c2V1cCIpKSxFLmxlbmd0aCYmKGI9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oZC5oZWxwZXIoTG4pLFtiLEpTT04uc3RyaW5naWZ5KEUpXSkpLCF5Lmxlbmd0aHx8aXNTdGF0aWNFeHAodikmJiFYbih2LmNvbnRlbnQudG9Mb3dlckNhc2UoKSl8fChiPWNyZWF0ZUNhbGxFeHByZXNzaW9uKGQuaGVscGVyKGpuKSxbYixKU09OLnN0cmluZ2lmeSh5KV0pKSxrLmxlbmd0aCl7Y29uc3QgZT1rLm1hcChPZSkuam9pbigiIik7dj1pc1N0YXRpY0V4cCh2KT9jcmVhdGVTaW1wbGVFeHByZXNzaW9uKGAke3YuY29udGVudH0ke2V9YCwhMCk6Y3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsiKCIsdixgKSArICIke2V9ImBdKX1yZXR1cm57cHJvcHM6W2NyZWF0ZU9iamVjdFByb3BlcnR5KHYsYildfX0pLHNob3c6KGUsYyxkKT0+e2NvbnN0e2V4cDpoLGxvYzp2fT1lO3JldHVybiBofHxkLm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig2Mix2KSkse3Byb3BzOltdLG5lZWRSdW50aW1lOmQuaGVscGVyKCRuKX19fTtjb25zdCBRbj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsQkFTRV9UUkFOU0lUSU9OOlllLEJpbmRpbmdUeXBlczp7REFUQToiZGF0YSIsUFJPUFM6InByb3BzIixQUk9QU19BTElBU0VEOiJwcm9wcy1hbGlhc2VkIixTRVRVUF9MRVQ6InNldHVwLWxldCIsU0VUVVBfQ09OU1Q6InNldHVwLWNvbnN0IixTRVRVUF9SRUFDVElWRV9DT05TVDoic2V0dXAtcmVhY3RpdmUtY29uc3QiLFNFVFVQX01BWUJFX1JFRjoic2V0dXAtbWF5YmUtcmVmIixTRVRVUF9SRUY6InNldHVwLXJlZiIsT1BUSU9OUzoib3B0aW9ucyIsTElURVJBTF9DT05TVDoibGl0ZXJhbC1jb25zdCJ9LENBTUVMSVpFOl90LENBUElUQUxJWkU6VHQsQ1JFQVRFX0JMT0NLOmV0LENSRUFURV9DT01NRU5UOml0LENSRUFURV9FTEVNRU5UX0JMT0NLOm50LENSRUFURV9FTEVNRU5UX1ZOT0RFOnJ0LENSRUFURV9TTE9UUzpidCxDUkVBVEVfU1RBVElDOmN0LENSRUFURV9URVhUOnN0LENSRUFURV9WTk9ERTpvdCxDb21waWxlckRlcHJlY2F0aW9uVHlwZXM6e0NPTVBJTEVSX0lTX09OX0VMRU1FTlQ6IkNPTVBJTEVSX0lTX09OX0VMRU1FTlQiLENPTVBJTEVSX1ZfQklORF9TWU5DOiJDT01QSUxFUl9WX0JJTkRfU1lOQyIsQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUjoiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiIsQ09NUElMRVJfVl9PTl9OQVRJVkU6IkNPTVBJTEVSX1ZfT05fTkFUSVZFIixDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0U6IkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRSIsQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFOiJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEUiLENPTVBJTEVSX0lOTElORV9URU1QTEFURToiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFIixDT01QSUxFUl9GSUxURVJTOiJDT01QSUxFUl9GSUxURVJTIn0sQ29uc3RhbnRUeXBlczp7Tk9UX0NPTlNUQU5UOjAsMDoiTk9UX0NPTlNUQU5UIixDQU5fU0tJUF9QQVRDSDoxLDE6IkNBTl9TS0lQX1BBVENIIixDQU5fQ0FDSEU6MiwyOiJDQU5fQ0FDSEUiLENBTl9TVFJJTkdJRlk6MywzOiJDQU5fU1RSSU5HSUZZIn0sRE9NRGlyZWN0aXZlVHJhbnNmb3JtczpKbixET01FcnJvckNvZGVzOntYX1ZfSFRNTF9OT19FWFBSRVNTSU9OOjU0LDU0OiJYX1ZfSFRNTF9OT19FWFBSRVNTSU9OIixYX1ZfSFRNTF9XSVRIX0NISUxEUkVOOjU1LDU1OiJYX1ZfSFRNTF9XSVRIX0NISUxEUkVOIixYX1ZfVEVYVF9OT19FWFBSRVNTSU9OOjU2LDU2OiJYX1ZfVEVYVF9OT19FWFBSRVNTSU9OIixYX1ZfVEVYVF9XSVRIX0NISUxEUkVOOjU3LDU3OiJYX1ZfVEVYVF9XSVRIX0NISUxEUkVOIixYX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UOjU4LDU4OiJYX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UIixYX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlQ6NTksNTk6IlhfVl9NT0RFTF9BUkdfT05fRUxFTUVOVCIsWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVDo2MCw2MDoiWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVCIsWF9WX01PREVMX1VOTkVDRVNTQVJZX1ZBTFVFOjYxLDYxOiJYX1ZfTU9ERUxfVU5ORUNFU1NBUllfVkFMVUUiLFhfVl9TSE9XX05PX0VYUFJFU1NJT046NjIsNjI6IlhfVl9TSE9XX05PX0VYUFJFU1NJT04iLFhfVFJBTlNJVElPTl9JTlZBTElEX0NISUxEUkVOOjYzLDYzOiJYX1RSQU5TSVRJT05fSU5WQUxJRF9DSElMRFJFTiIsWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRzo2NCw2NDoiWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRyIsX19FWFRFTkRfUE9JTlRfXzo2NSw2NToiX19FWFRFTkRfUE9JTlRfXyJ9LERPTUVycm9yTWVzc2FnZXM6VW4sRE9NTm9kZVRyYW5zZm9ybXM6S24sRWxlbWVudFR5cGVzOntFTEVNRU5UOjAsMDoiRUxFTUVOVCIsQ09NUE9ORU5UOjEsMToiQ09NUE9ORU5UIixTTE9UOjIsMjoiU0xPVCIsVEVNUExBVEU6MywzOiJURU1QTEFURSJ9LEVycm9yQ29kZXM6e0FCUlVQVF9DTE9TSU5HX09GX0VNUFRZX0NPTU1FTlQ6MCwwOiJBQlJVUFRfQ0xPU0lOR19PRl9FTVBUWV9DT01NRU5UIixDREFUQV9JTl9IVE1MX0NPTlRFTlQ6MSwxOiJDREFUQV9JTl9IVE1MX0NPTlRFTlQiLERVUExJQ0FURV9BVFRSSUJVVEU6MiwyOiJEVVBMSUNBVEVfQVRUUklCVVRFIixFTkRfVEFHX1dJVEhfQVRUUklCVVRFUzozLDM6IkVORF9UQUdfV0lUSF9BVFRSSUJVVEVTIixFTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVUzo0LDQ6IkVORF9UQUdfV0lUSF9UUkFJTElOR19TT0xJRFVTIixFT0ZfQkVGT1JFX1RBR19OQU1FOjUsNToiRU9GX0JFRk9SRV9UQUdfTkFNRSIsRU9GX0lOX0NEQVRBOjYsNjoiRU9GX0lOX0NEQVRBIixFT0ZfSU5fQ09NTUVOVDo3LDc6IkVPRl9JTl9DT01NRU5UIixFT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQ6OCw4OiJFT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQiLEVPRl9JTl9UQUc6OSw5OiJFT0ZfSU5fVEFHIixJTkNPUlJFQ1RMWV9DTE9TRURfQ09NTUVOVDoxMCwxMDoiSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQiLElOQ09SUkVDVExZX09QRU5FRF9DT01NRU5UOjExLDExOiJJTkNPUlJFQ1RMWV9PUEVORURfQ09NTUVOVCIsSU5WQUxJRF9GSVJTVF9DSEFSQUNURVJfT0ZfVEFHX05BTUU6MTIsMTI6IklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FIixNSVNTSU5HX0FUVFJJQlVURV9WQUxVRToxMywxMzoiTUlTU0lOR19BVFRSSUJVVEVfVkFMVUUiLE1JU1NJTkdfRU5EX1RBR19OQU1FOjE0LDE0OiJNSVNTSU5HX0VORF9UQUdfTkFNRSIsTUlTU0lOR19XSElURVNQQUNFX0JFVFdFRU5fQVRUUklCVVRFUzoxNSwxNToiTUlTU0lOR19XSElURVNQQUNFX0JFVFdFRU5fQVRUUklCVVRFUyIsTkVTVEVEX0NPTU1FTlQ6MTYsMTY6Ik5FU1RFRF9DT01NRU5UIixVTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9BVFRSSUJVVEVfTkFNRToxNywxNzoiVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fQVRUUklCVVRFX05BTUUiLFVORVhQRUNURURfQ0hBUkFDVEVSX0lOX1VOUVVPVEVEX0FUVFJJQlVURV9WQUxVRToxOCwxODoiVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fVU5RVU9URURfQVRUUklCVVRFX1ZBTFVFIixVTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRToxOSwxOToiVU5FWFBFQ1RFRF9FUVVBTFNfU0lHTl9CRUZPUkVfQVRUUklCVVRFX05BTUUiLFVORVhQRUNURURfTlVMTF9DSEFSQUNURVI6MjAsMjA6IlVORVhQRUNURURfTlVMTF9DSEFSQUNURVIiLFVORVhQRUNURURfUVVFU1RJT05fTUFSS19JTlNURUFEX09GX1RBR19OQU1FOjIxLDIxOiJVTkVYUEVDVEVEX1FVRVNUSU9OX01BUktfSU5TVEVBRF9PRl9UQUdfTkFNRSIsVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBRzoyMiwyMjoiVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBRyIsWF9JTlZBTElEX0VORF9UQUc6MjMsMjM6IlhfSU5WQUxJRF9FTkRfVEFHIixYX01JU1NJTkdfRU5EX1RBRzoyNCwyNDoiWF9NSVNTSU5HX0VORF9UQUciLFhfTUlTU0lOR19JTlRFUlBPTEFUSU9OX0VORDoyNSwyNToiWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EIixYX01JU1NJTkdfRElSRUNUSVZFX05BTUU6MjYsMjY6IlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRSIsWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORDoyNywyNzoiWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORCIsWF9WX0lGX05PX0VYUFJFU1NJT046MjgsMjg6IlhfVl9JRl9OT19FWFBSRVNTSU9OIixYX1ZfSUZfU0FNRV9LRVk6MjksMjk6IlhfVl9JRl9TQU1FX0tFWSIsWF9WX0VMU0VfTk9fQURKQUNFTlRfSUY6MzAsMzA6IlhfVl9FTFNFX05PX0FESkFDRU5UX0lGIixYX1ZfRk9SX05PX0VYUFJFU1NJT046MzEsMzE6IlhfVl9GT1JfTk9fRVhQUkVTU0lPTiIsWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTjozMiwzMjoiWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiIsWF9WX0ZPUl9URU1QTEFURV9LRVlfUExBQ0VNRU5UOjMzLDMzOiJYX1ZfRk9SX1RFTVBMQVRFX0tFWV9QTEFDRU1FTlQiLFhfVl9CSU5EX05PX0VYUFJFU1NJT046MzQsMzQ6IlhfVl9CSU5EX05PX0VYUFJFU1NJT04iLFhfVl9PTl9OT19FWFBSRVNTSU9OOjM1LDM1OiJYX1ZfT05fTk9fRVhQUkVTU0lPTiIsWF9WX1NMT1RfVU5FWFBFQ1RFRF9ESVJFQ1RJVkVfT05fU0xPVF9PVVRMRVQ6MzYsMzY6IlhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUIixYX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFOjM3LDM3OiJYX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFIixYX1ZfU0xPVF9EVVBMSUNBVEVfU0xPVF9OQU1FUzozOCwzODoiWF9WX1NMT1RfRFVQTElDQVRFX1NMT1RfTkFNRVMiLFhfVl9TTE9UX0VYVFJBTkVPVVNfREVGQVVMVF9TTE9UX0NISUxEUkVOOjM5LDM5OiJYX1ZfU0xPVF9FWFRSQU5FT1VTX0RFRkFVTFRfU0xPVF9DSElMRFJFTiIsWF9WX1NMT1RfTUlTUExBQ0VEOjQwLDQwOiJYX1ZfU0xPVF9NSVNQTEFDRUQiLFhfVl9NT0RFTF9OT19FWFBSRVNTSU9OOjQxLDQxOiJYX1ZfTU9ERUxfTk9fRVhQUkVTU0lPTiIsWF9WX01PREVMX01BTEZPUk1FRF9FWFBSRVNTSU9OOjQyLDQyOiJYX1ZfTU9ERUxfTUFMRk9STUVEX0VYUFJFU1NJT04iLFhfVl9NT0RFTF9PTl9TQ09QRV9WQVJJQUJMRTo0Myw0MzoiWF9WX01PREVMX09OX1NDT1BFX1ZBUklBQkxFIixYX1ZfTU9ERUxfT05fUFJPUFM6NDQsNDQ6IlhfVl9NT0RFTF9PTl9QUk9QUyIsWF9WX01PREVMX09OX0NPTlNUOjQ1LDQ1OiJYX1ZfTU9ERUxfT05fQ09OU1QiLFhfSU5WQUxJRF9FWFBSRVNTSU9OOjQ2LDQ2OiJYX0lOVkFMSURfRVhQUkVTU0lPTiIsWF9LRUVQX0FMSVZFX0lOVkFMSURfQ0hJTERSRU46NDcsNDc6IlhfS0VFUF9BTElWRV9JTlZBTElEX0NISUxEUkVOIixYX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEOjQ4LDQ4OiJYX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEIixYX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURUQ6NDksNDk6IlhfTU9EVUxFX01PREVfTk9UX1NVUFBPUlRFRCIsWF9DQUNIRV9IQU5ETEVSX05PVF9TVVBQT1JURUQ6NTAsNTA6IlhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEIixYX1NDT1BFX0lEX05PVF9TVVBQT1JURUQ6NTEsNTE6IlhfU0NPUEVfSURfTk9UX1NVUFBPUlRFRCIsWF9WTk9ERV9IT09LUzo1Miw1MjoiWF9WTk9ERV9IT09LUyIsWF9WX0JJTkRfSU5WQUxJRF9TQU1FX05BTUVfQVJHVU1FTlQ6NTMsNTM6IlhfVl9CSU5EX0lOVkFMSURfU0FNRV9OQU1FX0FSR1VNRU5UIixfX0VYVEVORF9QT0lOVF9fOjU0LDU0OiJfX0VYVEVORF9QT0lOVF9fIn0sRlJBR01FTlQ6WGUsR1VBUkRfUkVBQ1RJVkVfUFJPUFM6a3QsSVNfTUVNT19TQU1FOkJ0LElTX1JFRjpNdCxLRUVQX0FMSVZFOlFlLE1FUkdFX1BST1BTOnh0LE5PUk1BTElaRV9DTEFTUzpTdCxOT1JNQUxJWkVfUFJPUFM6d3QsTk9STUFMSVpFX1NUWUxFOkV0LE5hbWVzcGFjZXM6e0hUTUw6MCwwOiJIVE1MIixTVkc6MSwxOiJTVkciLE1BVEhfTUw6MiwyOiJNQVRIX01MIn0sTm9kZVR5cGVzOntST09UOjAsMDoiUk9PVCIsRUxFTUVOVDoxLDE6IkVMRU1FTlQiLFRFWFQ6MiwyOiJURVhUIixDT01NRU5UOjMsMzoiQ09NTUVOVCIsU0lNUExFX0VYUFJFU1NJT046NCw0OiJTSU1QTEVfRVhQUkVTU0lPTiIsSU5URVJQT0xBVElPTjo1LDU6IklOVEVSUE9MQVRJT04iLEFUVFJJQlVURTo2LDY6IkFUVFJJQlVURSIsRElSRUNUSVZFOjcsNzoiRElSRUNUSVZFIixDT01QT1VORF9FWFBSRVNTSU9OOjgsODoiQ09NUE9VTkRfRVhQUkVTU0lPTiIsSUY6OSw5OiJJRiIsSUZfQlJBTkNIOjEwLDEwOiJJRl9CUkFOQ0giLEZPUjoxMSwxMToiRk9SIixURVhUX0NBTEw6MTIsMTI6IlRFWFRfQ0FMTCIsVk5PREVfQ0FMTDoxMywxMzoiVk5PREVfQ0FMTCIsSlNfQ0FMTF9FWFBSRVNTSU9OOjE0LDE0OiJKU19DQUxMX0VYUFJFU1NJT04iLEpTX09CSkVDVF9FWFBSRVNTSU9OOjE1LDE1OiJKU19PQkpFQ1RfRVhQUkVTU0lPTiIsSlNfUFJPUEVSVFk6MTYsMTY6IkpTX1BST1BFUlRZIixKU19BUlJBWV9FWFBSRVNTSU9OOjE3LDE3OiJKU19BUlJBWV9FWFBSRVNTSU9OIixKU19GVU5DVElPTl9FWFBSRVNTSU9OOjE4LDE4OiJKU19GVU5DVElPTl9FWFBSRVNTSU9OIixKU19DT05ESVRJT05BTF9FWFBSRVNTSU9OOjE5LDE5OiJKU19DT05ESVRJT05BTF9FWFBSRVNTSU9OIixKU19DQUNIRV9FWFBSRVNTSU9OOjIwLDIwOiJKU19DQUNIRV9FWFBSRVNTSU9OIixKU19CTE9DS19TVEFURU1FTlQ6MjEsMjE6IkpTX0JMT0NLX1NUQVRFTUVOVCIsSlNfVEVNUExBVEVfTElURVJBTDoyMiwyMjoiSlNfVEVNUExBVEVfTElURVJBTCIsSlNfSUZfU1RBVEVNRU5UOjIzLDIzOiJKU19JRl9TVEFURU1FTlQiLEpTX0FTU0lHTk1FTlRfRVhQUkVTU0lPTjoyNCwyNDoiSlNfQVNTSUdOTUVOVF9FWFBSRVNTSU9OIixKU19TRVFVRU5DRV9FWFBSRVNTSU9OOjI1LDI1OiJKU19TRVFVRU5DRV9FWFBSRVNTSU9OIixKU19SRVRVUk5fU1RBVEVNRU5UOjI2LDI2OiJKU19SRVRVUk5fU1RBVEVNRU5UIn0sT1BFTl9CTE9DSzpaZSxQT1BfU0NPUEVfSUQ6SXQsUFVTSF9TQ09QRV9JRDpPdCxSRU5ERVJfTElTVDpndCxSRU5ERVJfU0xPVDp2dCxSRVNPTFZFX0NPTVBPTkVOVDp1dCxSRVNPTFZFX0RJUkVDVElWRTpwdCxSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UOmR0LFJFU09MVkVfRklMVEVSOmZ0LFNFVF9CTE9DS19UUkFDS0lORzpBdCxTVVNQRU5TRTpKZSxURUxFUE9SVDpLZSxUT19ESVNQTEFZX1NUUklORzp5dCxUT19IQU5ETEVSUzpDdCxUT19IQU5ETEVSX0tFWTpOdCxUUkFOU0lUSU9OOkZuLFRSQU5TSVRJT05fR1JPVVA6Vm4sVFNfTk9ERV9UWVBFUzpVdCxVTlJFRjpQdCxWX01PREVMX0NIRUNLQk9YOlBuLFZfTU9ERUxfRFlOQU1JQzpCbixWX01PREVMX1JBRElPOlJuLFZfTU9ERUxfU0VMRUNUOkRuLFZfTU9ERUxfVEVYVDpNbixWX09OX1dJVEhfS0VZUzpqbixWX09OX1dJVEhfTU9ESUZJRVJTOkxuLFZfU0hPVzokbixXSVRIX0NUWDpSdCxXSVRIX0RJUkVDVElWRVM6bXQsV0lUSF9NRU1POkR0LGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZTpmdW5jdGlvbihlLGMsZD1jLmxlbmd0aCl7cmV0dXJuIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbih7b2Zmc2V0OmUub2Zmc2V0LGxpbmU6ZS5saW5lLGNvbHVtbjplLmNvbHVtbn0sYyxkKX0sYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uOmFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbixhc3NlcnQ6ZnVuY3Rpb24oZSxjKXtpZighZSl0aHJvdyBuZXcgRXJyb3IoY3x8InVuZXhwZWN0ZWQgY29tcGlsZXIgY29uZGl0aW9uIil9LGJhc2VDb21waWxlOmJhc2VDb21waWxlLGJhc2VQYXJzZTpiYXNlUGFyc2UsYnVpbGREaXJlY3RpdmVBcmdzOmJ1aWxkRGlyZWN0aXZlQXJncyxidWlsZFByb3BzOmJ1aWxkUHJvcHMsYnVpbGRTbG90czpidWlsZFNsb3RzLGNoZWNrQ29tcGF0RW5hYmxlZDpjaGVja0NvbXBhdEVuYWJsZWQsY29tcGlsZTpmdW5jdGlvbihlLGM9e30pe3JldHVybiBiYXNlQ29tcGlsZShlLENlKHt9LHFuLGMse25vZGVUcmFuc2Zvcm1zOltpZ25vcmVTaWRlRWZmZWN0VGFncywuLi5LbiwuLi5jLm5vZGVUcmFuc2Zvcm1zfHxbXV0sZGlyZWN0aXZlVHJhbnNmb3JtczpDZSh7fSxKbixjLmRpcmVjdGl2ZVRyYW5zZm9ybXN8fHt9KSx0cmFuc2Zvcm1Ib2lzdDpudWxsfSkpfSxjb252ZXJ0VG9CbG9jazpjb252ZXJ0VG9CbG9jayxjcmVhdGVBcnJheUV4cHJlc3Npb246Y3JlYXRlQXJyYXlFeHByZXNzaW9uLGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uOmZ1bmN0aW9uKGUsYyl7cmV0dXJue3R5cGU6MjQsbGVmdDplLHJpZ2h0OmMsbG9jOmp0fX0sY3JlYXRlQmxvY2tTdGF0ZW1lbnQ6Y3JlYXRlQmxvY2tTdGF0ZW1lbnQsY3JlYXRlQ2FjaGVFeHByZXNzaW9uOmNyZWF0ZUNhY2hlRXhwcmVzc2lvbixjcmVhdGVDYWxsRXhwcmVzc2lvbjpjcmVhdGVDYWxsRXhwcmVzc2lvbixjcmVhdGVDb21waWxlckVycm9yOmNyZWF0ZUNvbXBpbGVyRXJyb3IsY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uOmNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbixjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb246Y3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uLGNyZWF0ZURPTUNvbXBpbGVyRXJyb3I6Y3JlYXRlRE9NQ29tcGlsZXJFcnJvcixjcmVhdGVGb3JMb29wUGFyYW1zOmNyZWF0ZUZvckxvb3BQYXJhbXMsY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uOmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbixjcmVhdGVJZlN0YXRlbWVudDpmdW5jdGlvbihlLGMsZCl7cmV0dXJue3R5cGU6MjMsdGVzdDplLGNvbnNlcXVlbnQ6YyxhbHRlcm5hdGU6ZCxsb2M6anR9fSxjcmVhdGVJbnRlcnBvbGF0aW9uOmZ1bmN0aW9uKGUsYyl7cmV0dXJue3R5cGU6NSxsb2M6Yyxjb250ZW50Ol9lKGUpP2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZSwhMSxjKTplfX0sY3JlYXRlT2JqZWN0RXhwcmVzc2lvbjpjcmVhdGVPYmplY3RFeHByZXNzaW9uLGNyZWF0ZU9iamVjdFByb3BlcnR5OmNyZWF0ZU9iamVjdFByb3BlcnR5LGNyZWF0ZVJldHVyblN0YXRlbWVudDpmdW5jdGlvbihlKXtyZXR1cm57dHlwZToyNixyZXR1cm5zOmUsbG9jOmp0fX0sY3JlYXRlUm9vdDpjcmVhdGVSb290LGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbjpmdW5jdGlvbihlKXtyZXR1cm57dHlwZToyNSxleHByZXNzaW9uczplLGxvYzpqdH19LGNyZWF0ZVNpbXBsZUV4cHJlc3Npb246Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbixjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtOmNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0sY3JlYXRlVGVtcGxhdGVMaXRlcmFsOmZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOjIyLGVsZW1lbnRzOmUsbG9jOmp0fX0sY3JlYXRlVHJhbnNmb3JtQ29udGV4dDpjcmVhdGVUcmFuc2Zvcm1Db250ZXh0LGNyZWF0ZVZOb2RlQ2FsbDpjcmVhdGVWTm9kZUNhbGwsZXJyb3JNZXNzYWdlczpxdCxleHRyYWN0SWRlbnRpZmllcnM6ZXh0cmFjdElkZW50aWZpZXJzLGZpbmREaXI6ZmluZERpcixmaW5kUHJvcDpmaW5kUHJvcCxmb3JBbGlhc1JFOnRuLGdlbmVyYXRlOmdlbmVyYXRlLGdlbmVyYXRlQ29kZUZyYW1lOlVlLGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQ6Z2V0QmFzZVRyYW5zZm9ybVByZXNldCxnZXRDb25zdGFudFR5cGU6Z2V0Q29uc3RhbnRUeXBlLGdldE1lbW9lZFZOb2RlQ2FsbDpnZXRNZW1vZWRWTm9kZUNhbGwsZ2V0Vk5vZGVCbG9ja0hlbHBlcjpnZXRWTm9kZUJsb2NrSGVscGVyLGdldFZOb2RlSGVscGVyOmdldFZOb2RlSGVscGVyLGhhc0R5bmFtaWNLZXlWQmluZDpoYXNEeW5hbWljS2V5VkJpbmQsaGFzU2NvcGVSZWY6ZnVuY3Rpb24gaGFzU2NvcGVSZWYoZSxjKXtpZighZXx8MD09PU9iamVjdC5rZXlzKGMpLmxlbmd0aClyZXR1cm4hMTtzd2l0Y2goZS50eXBlKXtjYXNlIDE6Zm9yKGxldCBkPTA7ZDxlLnByb3BzLmxlbmd0aDtkKyspe2NvbnN0IGg9ZS5wcm9wc1tkXTtpZig3PT09aC50eXBlJiYoaGFzU2NvcGVSZWYoaC5hcmcsYyl8fGhhc1Njb3BlUmVmKGguZXhwLGMpKSlyZXR1cm4hMH1yZXR1cm4gZS5jaGlsZHJlbi5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgMTE6cmV0dXJuISFoYXNTY29wZVJlZihlLnNvdXJjZSxjKXx8ZS5jaGlsZHJlbi5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgOTpyZXR1cm4gZS5icmFuY2hlcy5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgMTA6cmV0dXJuISFoYXNTY29wZVJlZihlLmNvbmRpdGlvbixjKXx8ZS5jaGlsZHJlbi5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgNDpyZXR1cm4hZS5pc1N0YXRpYyYmaXNTaW1wbGVJZGVudGlmaWVyKGUuY29udGVudCkmJiEhY1tlLmNvbnRlbnRdO2Nhc2UgODpyZXR1cm4gZS5jaGlsZHJlbi5zb21lKGU9PlBlKGUpJiZoYXNTY29wZVJlZihlLGMpKTtjYXNlIDU6Y2FzZSAxMjpyZXR1cm4gaGFzU2NvcGVSZWYoZS5jb250ZW50LGMpO2RlZmF1bHQ6cmV0dXJuITF9fSxoZWxwZXJOYW1lTWFwOkx0LGluamVjdFByb3A6aW5qZWN0UHJvcCxpc0FsbFdoaXRlc3BhY2U6aXNBbGxXaGl0ZXNwYWNlLGlzQ29tbWVudE9yV2hpdGVzcGFjZTppc0NvbW1lbnRPcldoaXRlc3BhY2UsaXNDb3JlQ29tcG9uZW50OmlzQ29yZUNvbXBvbmVudCxpc0ZuRXhwcmVzc2lvbjpadCxpc0ZuRXhwcmVzc2lvbkJyb3dzZXI6aXNGbkV4cHJlc3Npb25Ccm93c2VyLGlzRm5FeHByZXNzaW9uTm9kZTpZdCxpc0Z1bmN0aW9uVHlwZTplPT4vRnVuY3Rpb24oPzpFeHByZXNzaW9ufERlY2xhcmF0aW9uKSR8TWV0aG9kJC8udGVzdChlLnR5cGUpLGlzSW5EZXN0cnVjdHVyZUFzc2lnbm1lbnQ6ZnVuY3Rpb24oZSxjKXtpZihlJiYoIk9iamVjdFByb3BlcnR5Ij09PWUudHlwZXx8IkFycmF5UGF0dGVybiI9PT1lLnR5cGUpKXtsZXQgZT1jLmxlbmd0aDtmb3IoO2UtLTspe2NvbnN0IGQ9Y1tlXTtpZigiQXNzaWdubWVudEV4cHJlc3Npb24iPT09ZC50eXBlKXJldHVybiEwO2lmKCJPYmplY3RQcm9wZXJ0eSIhPT1kLnR5cGUmJiFkLnR5cGUuZW5kc1dpdGgoIlBhdHRlcm4iKSlicmVha319cmV0dXJuITF9LGlzSW5OZXdFeHByZXNzaW9uOmZ1bmN0aW9uKGUpe2xldCBjPWUubGVuZ3RoO2Zvcig7Yy0tOyl7Y29uc3QgZD1lW2NdO2lmKCJOZXdFeHByZXNzaW9uIj09PWQudHlwZSlyZXR1cm4hMDtpZigiTWVtYmVyRXhwcmVzc2lvbiIhPT1kLnR5cGUpYnJlYWt9cmV0dXJuITF9LGlzTWVtYmVyRXhwcmVzc2lvbjpKdCxpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyOmlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXIsaXNNZW1iZXJFeHByZXNzaW9uTm9kZTpLdCxpc1JlZmVyZW5jZWRJZGVudGlmaWVyOmZ1bmN0aW9uKGUsYyxkKXtyZXR1cm4hMX0saXNTaW1wbGVJZGVudGlmaWVyOmlzU2ltcGxlSWRlbnRpZmllcixpc1Nsb3RPdXRsZXQ6aXNTbG90T3V0bGV0LGlzU3RhdGljQXJnT2Y6aXNTdGF0aWNBcmdPZixpc1N0YXRpY0V4cDppc1N0YXRpY0V4cCxpc1N0YXRpY1Byb3BlcnR5OmlzU3RhdGljUHJvcGVydHksaXNTdGF0aWNQcm9wZXJ0eUtleTooZSxjKT0+aXNTdGF0aWNQcm9wZXJ0eShjKSYmYy5rZXk9PT1lLGlzVGVtcGxhdGVOb2RlOmlzVGVtcGxhdGVOb2RlLGlzVGV4dDppc1RleHQkMSxpc1ZQcmU6aXNWUHJlLGlzVlNsb3Q6aXNWU2xvdCxpc1doaXRlc3BhY2VUZXh0OmlzV2hpdGVzcGFjZVRleHQsbG9jU3R1YjpqdCxub29wRGlyZWN0aXZlVHJhbnNmb3JtOm5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0scGFyc2U6ZnVuY3Rpb24oZSxjPXt9KXtyZXR1cm4gYmFzZVBhcnNlKGUsQ2Uoe30scW4sYykpfSxwYXJzZXJPcHRpb25zOnFuLHByb2Nlc3NFeHByZXNzaW9uOnByb2Nlc3NFeHByZXNzaW9uLHByb2Nlc3NGb3I6cHJvY2Vzc0Zvcixwcm9jZXNzSWY6cHJvY2Vzc0lmLHByb2Nlc3NTbG90T3V0bGV0OnByb2Nlc3NTbG90T3V0bGV0LHJlZ2lzdGVyUnVudGltZUhlbHBlcnM6cmVnaXN0ZXJSdW50aW1lSGVscGVycyxyZXNvbHZlQ29tcG9uZW50VHlwZTpyZXNvbHZlQ29tcG9uZW50VHlwZSxzdHJpbmdpZnlFeHByZXNzaW9uOmZ1bmN0aW9uIHN0cmluZ2lmeUV4cHJlc3Npb24oZSl7cmV0dXJuIF9lKGUpP2U6ND09PWUudHlwZT9lLmNvbnRlbnQ6ZS5jaGlsZHJlbi5tYXAoc3RyaW5naWZ5RXhwcmVzc2lvbikuam9pbigiIil9LHRvVmFsaWRBc3NldElkOnRvVmFsaWRBc3NldElkLHRyYWNrU2xvdFNjb3Blczp0cmFja1Nsb3RTY29wZXMsdHJhY2tWRm9yU2xvdFNjb3BlczooZSxjKT0+e2xldCBkO2lmKGlzVGVtcGxhdGVOb2RlKGUpJiZlLnByb3BzLnNvbWUoaXNWU2xvdCkmJihkPWZpbmREaXIoZSwiZm9yIikpKXtjb25zdCBlPWQuZm9yUGFyc2VSZXN1bHQ7aWYoZSl7ZmluYWxpemVGb3JQYXJzZVJlc3VsdChlKTtjb25zdHt2YWx1ZTpkLGtleTpoLGluZGV4OnZ9PWUse2FkZElkZW50aWZpZXJzOmIscmVtb3ZlSWRlbnRpZmllcnM6eX09YztyZXR1cm4gZCYmYihkKSxoJiZiKGgpLHYmJmIodiksKCk9PntkJiZ5KGQpLGgmJnkoaCksdiYmeSh2KX19fX0sdHJhbnNmb3JtOnRyYW5zZm9ybSx0cmFuc2Zvcm1CaW5kOnRyYW5zZm9ybUJpbmQsdHJhbnNmb3JtRWxlbWVudDp0cmFuc2Zvcm1FbGVtZW50LHRyYW5zZm9ybUV4cHJlc3Npb246KGUsYyk9PntpZig1PT09ZS50eXBlKWUuY29udGVudD1wcm9jZXNzRXhwcmVzc2lvbihlLmNvbnRlbnQsYyk7ZWxzZSBpZigxPT09ZS50eXBlKXtjb25zdCBkPWZpbmREaXIoZSwibWVtbyIpO2ZvcihsZXQgaD0wO2g8ZS5wcm9wcy5sZW5ndGg7aCsrKXtjb25zdCB2PWUucHJvcHNbaF07aWYoNz09PXYudHlwZSYmImZvciIhPT12Lm5hbWUpe2NvbnN0IGU9di5leHAsaD12LmFyZzshZXx8NCE9PWUudHlwZXx8Im9uIj09PXYubmFtZSYmaHx8ZCYmaCYmND09PWgudHlwZSYmImtleSI9PT1oLmNvbnRlbnR8fCh2LmV4cD1wcm9jZXNzRXhwcmVzc2lvbihlLGMsInNsb3QiPT09di5uYW1lKSksaCYmND09PWgudHlwZSYmIWguaXNTdGF0aWMmJih2LmFyZz1wcm9jZXNzRXhwcmVzc2lvbihoLGMpKX19fX0sdHJhbnNmb3JtTW9kZWw6dHJhbnNmb3JtTW9kZWwkMSx0cmFuc2Zvcm1Pbjp0cmFuc2Zvcm1PbiQxLHRyYW5zZm9ybVN0eWxlOnRyYW5zZm9ybVN0eWxlLHRyYW5zZm9ybVZCaW5kU2hvcnRoYW5kOnRyYW5zZm9ybVZCaW5kU2hvcnRoYW5kLHRyYXZlcnNlTm9kZTp0cmF2ZXJzZU5vZGUsdW53cmFwVFNOb2RlOmZ1bmN0aW9uIHVud3JhcFRTTm9kZShlKXtyZXR1cm4gVXQuaW5jbHVkZXMoZS50eXBlKT91bndyYXBUU05vZGUoZS5leHByZXNzaW9uKTplfSx2YWxpZEZpcnN0SWRlbnRDaGFyUkU6R3Qsd2Fsa0Jsb2NrRGVjbGFyYXRpb25zOndhbGtCbG9ja0RlY2xhcmF0aW9ucyx3YWxrRnVuY3Rpb25QYXJhbXM6ZnVuY3Rpb24oZSxjKXtmb3IoY29uc3QgZCBvZiBlLnBhcmFtcylmb3IoY29uc3QgZSBvZiBleHRyYWN0SWRlbnRpZmllcnMoZCkpYyhlKX0sd2Fsa0lkZW50aWZpZXJzOmZ1bmN0aW9uKGUsYyxkPSExLGg9W10sdj1PYmplY3QuY3JlYXRlKG51bGwpKXt9LHdhcm5EZXByZWNhdGlvbjpmdW5jdGlvbihlLGMsZCwuLi5oKXtpZigic3VwcHJlc3Mtd2FybmluZyI9PT1nZXRDb21wYXRWYWx1ZShlLGMpKXJldHVybjtjb25zdHttZXNzYWdlOnYsbGluazpifT16dFtlXSx5PWAoZGVwcmVjYXRpb24gJHtlfSkgJHsiZnVuY3Rpb24iPT10eXBlb2Ygdj92KC4uLmgpOnZ9JHtiP2BcbiAgRGV0YWlsczogJHtifWA6IiJ9YCxFPW5ldyBTeW50YXhFcnJvcih5KTtFLmNvZGU9ZSxkJiYoRS5sb2M9ZCksYy5vbldhcm4oRSl9fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpOyFmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGM9UW4sZD1ZLGg9SGU7ZnVuY3Rpb24gX2ludGVyb3BOYW1lc3BhY2VEZWZhdWx0KGUpe3ZhciBjPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSlmb3IodmFyIGQgaW4gZSljW2RdPWVbZF07cmV0dXJuIGMuZGVmYXVsdD1lLE9iamVjdC5mcmVlemUoYyl9dmFyIHY9X2ludGVyb3BOYW1lc3BhY2VEZWZhdWx0KGQpO2NvbnN0IGI9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbihlLGQpe2lmKCFoLmlzU3RyaW5nKGUpKXtpZighZS5ub2RlVHlwZSlyZXR1cm4gaC5OT09QO2U9ZS5pbm5lckhUTUx9Y29uc3QgeT1oLmdlbkNhY2hlS2V5KGUsZCksRT1iW3ldO2lmKEUpcmV0dXJuIEU7aWYoIiMiPT09ZVswXSl7Y29uc3QgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO2U9Yz9jLmlubmVySFRNTDoiIn1jb25zdCBrPWguZXh0ZW5kKHtob2lzdFN0YXRpYzohMCxvbkVycm9yOnZvaWQgMCxvbldhcm46aC5OT09QfSxkKTtrLmlzQ3VzdG9tRWxlbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBjdXN0b21FbGVtZW50c3x8KGsuaXNDdXN0b21FbGVtZW50PWU9PiEhY3VzdG9tRWxlbWVudHMuZ2V0KGUpKTtjb25zdHtjb2RlOl99PWMuY29tcGlsZShlLGspLFQ9bmV3IEZ1bmN0aW9uKCJWdWUiLF8pKHYpO3JldHVybiBULl9yYz0hMCxiW3ldPVR9ZC5yZWdpc3RlclJ1bnRpbWVDb21waWxlcihjb21waWxlVG9GdW5jdGlvbiksZS5jb21waWxlPWNvbXBpbGVUb0Z1bmN0aW9uLE9iamVjdC5rZXlzKGQpLmZvckVhY2goZnVuY3Rpb24oYyl7ImRlZmF1bHQiPT09Y3x8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYyl8fChlW2NdPWRbY10pfSl9KFdlKSxHZS5leHBvcnRzPVdlO3ZhciBZbj1HZS5leHBvcnRzO2NvbnN0IFpuPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ7ZnVuY3Rpb24gaXNSb3V0ZUNvbXBvbmVudChlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGV8fCJkaXNwbGF5TmFtZSJpbiBlfHwicHJvcHMiaW4gZXx8Il9fdmNjT3B0cyJpbiBlfWNvbnN0IGVvPU9iamVjdC5hc3NpZ247ZnVuY3Rpb24gYXBwbHlUb1BhcmFtcyhlLGMpe2NvbnN0IGQ9e307Zm9yKGNvbnN0IGggaW4gYyl7Y29uc3Qgdj1jW2hdO2RbaF09dG8odik/di5tYXAoZSk6ZSh2KX1yZXR1cm4gZH1jb25zdCBub29wJDI9KCk9Pnt9LHRvPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGUsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgaCBpbiBlKWRbaF09aCBpbiBjP2NbaF06ZVtoXTtyZXR1cm4gZH1sZXQgbm89ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5NQVRDSEVSX05PVF9GT1VORD0xXT0iTUFUQ0hFUl9OT1RfRk9VTkQiLGVbZS5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUPTJdPSJOQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUIixlW2UuTkFWSUdBVElPTl9BQk9SVEVEPTRdPSJOQVZJR0FUSU9OX0FCT1JURUQiLGVbZS5OQVZJR0FUSU9OX0NBTkNFTExFRD04XT0iTkFWSUdBVElPTl9DQU5DRUxMRUQiLGVbZS5OQVZJR0FUSU9OX0RVUExJQ0FURUQ9MTZdPSJOQVZJR0FUSU9OX0RVUExJQ0FURUQiLGV9KHt9KTtjb25zdCBvbz1TeW1ib2woIiIpO2Z1bmN0aW9uIGNyZWF0ZVJvdXRlckVycm9yKGUsYyl7cmV0dXJuIGVvKG5ldyBFcnJvcix7dHlwZTplLFtvb106ITB9LGMpfWZ1bmN0aW9uIGlzTmF2aWdhdGlvbkZhaWx1cmUoZSxjKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yJiZvbyBpbiBlJiYobnVsbD09Y3x8ISEoZS50eXBlJmMpKX1uby5NQVRDSEVSX05PVF9GT1VORCxuby5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNULG5vLk5BVklHQVRJT05fQUJPUlRFRCxuby5OQVZJR0FUSU9OX0NBTkNFTExFRCxuby5OQVZJR0FUSU9OX0RVUExJQ0FURUQ7Y29uc3Qgcm89U3ltYm9sKCIiKSxhbz1TeW1ib2woIiIpLGlvPVN5bWJvbCgiIiksc289U3ltYm9sKCIiKSxsbz1TeW1ib2woIiIpO2Z1bmN0aW9uIHVzZVJvdXRlJDEoZSl7cmV0dXJuIGVlKHNvKX1jb25zdCBjbz0vIy9nLHVvPS8mL2cscG89L1wvL2csZm89Lz0vZyxtbz0vXD8vZyxobz0vXCsvZyx2bz0vJTVCL2csYm89LyU1RC9nLHlvPS8lNUUvZyx4bz0vJTYwL2csU289LyU3Qi9nLEVvPS8lN0MvZyx3bz0vJTdEL2csa289LyUyMC9nO2Z1bmN0aW9uIGNvbW1vbkVuY29kZShlKXtyZXR1cm4gbnVsbD09ZT8iIjplbmNvZGVVUkkoIiIrZSkucmVwbGFjZShFbywifCIpLnJlcGxhY2Uodm8sIlsiKS5yZXBsYWNlKGJvLCJdIil9ZnVuY3Rpb24gZW5jb2RlUXVlcnlWYWx1ZShlKXtyZXR1cm4gY29tbW9uRW5jb2RlKGUpLnJlcGxhY2UoaG8sIiUyQiIpLnJlcGxhY2Uoa28sIisiKS5yZXBsYWNlKGNvLCIlMjMiKS5yZXBsYWNlKHVvLCIlMjYiKS5yZXBsYWNlKHhvLCJgIikucmVwbGFjZShTbywieyIpLnJlcGxhY2Uod28sIn0iKS5yZXBsYWNlKHlvLCJeIil9ZnVuY3Rpb24gZW5jb2RlUXVlcnlLZXkoZSl7cmV0dXJuIGVuY29kZVF1ZXJ5VmFsdWUoZSkucmVwbGFjZShmbywiJTNEIil9ZnVuY3Rpb24gZW5jb2RlUGFyYW0oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBjb21tb25FbmNvZGUoZSkucmVwbGFjZShjbywiJTIzIikucmVwbGFjZShtbywiJTNGIil9KGUpLnJlcGxhY2UocG8sIiUyRiIpfWZ1bmN0aW9uIGRlY29kZShlKXtpZihudWxsPT1lKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCIiK2UpfWNhdGNoKGUpe31yZXR1cm4iIitlfWNvbnN0IENvPS9cLyQvO2Z1bmN0aW9uIHBhcnNlVVJMKGUsYyxkPSIvIil7bGV0IGgsdj17fSxiPSIiLHk9IiI7Y29uc3QgRT1jLmluZGV4T2YoIiMiKTtsZXQgaz1jLmluZGV4T2YoIj8iKTtyZXR1cm4gaz1FPj0wJiZrPkU/LTE6ayxrPj0wJiYoaD1jLnNsaWNlKDAsayksYj1jLnNsaWNlKGssRT4wP0U6Yy5sZW5ndGgpLHY9ZShiLnNsaWNlKDEpKSksRT49MCYmKGg9aHx8Yy5zbGljZSgwLEUpLHk9Yy5zbGljZShFLGMubGVuZ3RoKSksaD1mdW5jdGlvbihlLGMpe2lmKGUuc3RhcnRzV2l0aCgiLyIpKXJldHVybiBlO2lmKCFlKXJldHVybiBjO2NvbnN0IGQ9Yy5zcGxpdCgiLyIpLGg9ZS5zcGxpdCgiLyIpLHY9aFtoLmxlbmd0aC0xXTsiLi4iIT09diYmIi4iIT09dnx8aC5wdXNoKCIiKTtsZXQgYix5LEU9ZC5sZW5ndGgtMTtmb3IoYj0wO2I8aC5sZW5ndGg7YisrKWlmKHk9aFtiXSwiLiIhPT15KXtpZigiLi4iIT09eSlicmVhaztFPjEmJkUtLX1yZXR1cm4gZC5zbGljZSgwLEUpLmpvaW4oIi8iKSsiLyIraC5zbGljZShiKS5qb2luKCIvIil9KG51bGwhPWg/aDpjLGQpLHtmdWxsUGF0aDpoK2IreSxwYXRoOmgscXVlcnk6dixoYXNoOmRlY29kZSh5KX19ZnVuY3Rpb24gaXNTYW1lUm91dGVSZWNvcmQoZSxjKXtyZXR1cm4oZS5hbGlhc09mfHxlKT09PShjLmFsaWFzT2Z8fGMpfWZ1bmN0aW9uIGlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXMoZSxjKXtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGghPT1PYmplY3Qua2V5cyhjKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBkIGluIGUpaWYoIWlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXNWYWx1ZShlW2RdLGNbZF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXNWYWx1ZShlLGMpe3JldHVybiB0byhlKT9pc0VxdWl2YWxlbnRBcnJheShlLGMpOnRvKGMpP2lzRXF1aXZhbGVudEFycmF5KGMsZSk6KGUmJmUudmFsdWVPZigpKT09PShjJiZjLnZhbHVlT2YoKSl9ZnVuY3Rpb24gaXNFcXVpdmFsZW50QXJyYXkoZSxjKXtyZXR1cm4gdG8oYyk/ZS5sZW5ndGg9PT1jLmxlbmd0aCYmZS5ldmVyeSgoZSxkKT0+ZT09PWNbZF0pOjE9PT1lLmxlbmd0aCYmZVswXT09PWN9Y29uc3QgX289e3BhdGg6Ii8iLG5hbWU6dm9pZCAwLHBhcmFtczp7fSxxdWVyeTp7fSxoYXNoOiIiLGZ1bGxQYXRoOiIvIixtYXRjaGVkOltdLG1ldGE6e30scmVkaXJlY3RlZEZyb206dm9pZCAwfTtsZXQgVG89ZnVuY3Rpb24oZSl7cmV0dXJuIGUucG9wPSJwb3AiLGUucHVzaD0icHVzaCIsZX0oe30pLE5vPWZ1bmN0aW9uKGUpe3JldHVybiBlLmJhY2s9ImJhY2siLGUuZm9yd2FyZD0iZm9yd2FyZCIsZS51bmtub3duPSIiLGV9KHt9KTtmdW5jdGlvbiBub3JtYWxpemVCYXNlKGUpe2lmKCFlKWlmKFpuKXtjb25zdCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJhc2UiKTtlPShlPWMmJmMuZ2V0QXR0cmlidXRlKCJocmVmIil8fCIvIikucmVwbGFjZSgvXlx3KzpcL1wvW15cL10rLywiIil9ZWxzZSBlPSIvIjtyZXR1cm4iLyIhPT1lWzBdJiYiIyIhPT1lWzBdJiYoZT0iLyIrZSksZS5yZXBsYWNlKENvLCIiKX1jb25zdCBBbz0vXlteI10rIy87ZnVuY3Rpb24gY3JlYXRlSHJlZihlLGMpe3JldHVybiBlLnJlcGxhY2UoQW8sIiMiKStjfWZ1bmN0aW9uIHNjcm9sbFRvUG9zaXRpb24oZSl7bGV0IGM7aWYoImVsImluIGUpe2NvbnN0IGQ9ZS5lbCxoPSJzdHJpbmciPT10eXBlb2YgZCYmZC5zdGFydHNXaXRoKCIjIiksdj0ic3RyaW5nIj09dHlwZW9mIGQ/aD9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChkLnNsaWNlKDEpKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGQpOmQ7aWYoIXYpcmV0dXJuO2M9ZnVuY3Rpb24oZSxjKXtjb25zdCBkPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2JlaGF2aW9yOmMuYmVoYXZpb3IsbGVmdDpoLmxlZnQtZC5sZWZ0LShjLmxlZnR8fDApLHRvcDpoLnRvcC1kLnRvcC0oYy50b3B8fDApfX0odixlKX1lbHNlIGM9ZTsic2Nyb2xsQmVoYXZpb3IiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlP3dpbmRvdy5zY3JvbGxUbyhjKTp3aW5kb3cuc2Nyb2xsVG8obnVsbCE9Yy5sZWZ0P2MubGVmdDp3aW5kb3cuc2Nyb2xsWCxudWxsIT1jLnRvcD9jLnRvcDp3aW5kb3cuc2Nyb2xsWSl9ZnVuY3Rpb24gZ2V0U2Nyb2xsS2V5KGUsYyl7cmV0dXJuKGhpc3Rvcnkuc3RhdGU/aGlzdG9yeS5zdGF0ZS5wb3NpdGlvbi1jOi0xKStlfWNvbnN0IE9vPW5ldyBNYXA7ZnVuY3Rpb24gaXNSb3V0ZU5hbWUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwic3ltYm9sIj09dHlwZW9mIGV9ZnVuY3Rpb24gcGFyc2VRdWVyeShlKXtjb25zdCBjPXt9O2lmKCIiPT09ZXx8Ij8iPT09ZSlyZXR1cm4gYztjb25zdCBkPSgiPyI9PT1lWzBdP2Uuc2xpY2UoMSk6ZSkuc3BsaXQoIiYiKTtmb3IobGV0IGU9MDtlPGQubGVuZ3RoOysrZSl7Y29uc3QgaD1kW2VdLnJlcGxhY2UoaG8sIiAiKSx2PWguaW5kZXhPZigiPSIpLGI9ZGVjb2RlKHY8MD9oOmguc2xpY2UoMCx2KSkseT12PDA/bnVsbDpkZWNvZGUoaC5zbGljZSh2KzEpKTtpZihiIGluIGMpe2xldCBlPWNbYl07dG8oZSl8fChlPWNbYl09W2VdKSxlLnB1c2goeSl9ZWxzZSBjW2JdPXl9cmV0dXJuIGN9ZnVuY3Rpb24gc3RyaW5naWZ5UXVlcnkoZSl7bGV0IGM9IiI7Zm9yKGxldCBkIGluIGUpe2NvbnN0IGg9ZVtkXTtkPWVuY29kZVF1ZXJ5S2V5KGQpLG51bGwhPWg/KHRvKGgpP2gubWFwKGU9PmUmJmVuY29kZVF1ZXJ5VmFsdWUoZSkpOltoJiZlbmNvZGVRdWVyeVZhbHVlKGgpXSkuZm9yRWFjaChlPT57dm9pZCAwIT09ZSYmKGMrPShjLmxlbmd0aD8iJiI6IiIpK2QsbnVsbCE9ZSYmKGMrPSI9IitlKSl9KTp2b2lkIDAhPT1oJiYoYys9KGMubGVuZ3RoPyImIjoiIikrZCl9cmV0dXJuIGN9ZnVuY3Rpb24gbm9ybWFsaXplUXVlcnkoZSl7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBlKXtjb25zdCBoPWVbZF07dm9pZCAwIT09aCYmKGNbZF09dG8oaCk/aC5tYXAoZT0+bnVsbD09ZT9udWxsOiIiK2UpOm51bGw9PWg/aDoiIitoKX1yZXR1cm4gY31mdW5jdGlvbiB1c2VDYWxsYmFja3MoKXtsZXQgZT1bXTtyZXR1cm57YWRkOmZ1bmN0aW9uKGMpe3JldHVybiBlLnB1c2goYyksKCk9Pntjb25zdCBkPWUuaW5kZXhPZihjKTtkPi0xJiZlLnNwbGljZShkLDEpfX0sbGlzdDooKT0+ZS5zbGljZSgpLHJlc2V0OmZ1bmN0aW9uKCl7ZT1bXX19fWZ1bmN0aW9uIGd1YXJkVG9Qcm9taXNlRm4oZSxjLGQsaCx2LGI9ZT0+ZSgpKXtjb25zdCB5PWgmJihoLmVudGVyQ2FsbGJhY2tzW3ZdPWguZW50ZXJDYWxsYmFja3Nbdl18fFtdKTtyZXR1cm4oKT0+bmV3IFByb21pc2UoKEUsayk9Pntjb25zdCBuZXh0PWU9Pnt2YXIgYjshMT09PWU/ayhjcmVhdGVSb3V0ZXJFcnJvcihuby5OQVZJR0FUSU9OX0FCT1JURUQse2Zyb206ZCx0bzpjfSkpOmUgaW5zdGFuY2VvZiBFcnJvcj9rKGUpOiJzdHJpbmciPT10eXBlb2YoYj1lKXx8YiYmIm9iamVjdCI9PXR5cGVvZiBiP2soY3JlYXRlUm91dGVyRXJyb3Iobm8uTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCx7ZnJvbTpjLHRvOmV9KSk6KHkmJmguZW50ZXJDYWxsYmFja3Nbdl09PT15JiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmeS5wdXNoKGUpLEUoKSl9LF89YigoKT0+ZS5jYWxsKGgmJmguaW5zdGFuY2VzW3ZdLGMsZCxuZXh0KSk7bGV0IFQ9UHJvbWlzZS5yZXNvbHZlKF8pO2UubGVuZ3RoPDMmJihUPVQudGhlbihuZXh0KSksVC5jYXRjaChlPT5rKGUpKX0pfWZ1bmN0aW9uIGV4dHJhY3RDb21wb25lbnRzR3VhcmRzKGUsYyxkLGgsdj1lPT5lKCkpe2NvbnN0IGI9W107Zm9yKGNvbnN0IHkgb2YgZSlmb3IoY29uc3QgZSBpbiB5LmNvbXBvbmVudHMpe2xldCBFPXkuY29tcG9uZW50c1tlXTtpZigiYmVmb3JlUm91dGVFbnRlciI9PT1jfHx5Lmluc3RhbmNlc1tlXSlpZihpc1JvdXRlQ29tcG9uZW50KEUpKXtjb25zdCBrPShFLl9fdmNjT3B0c3x8RSlbY107ayYmYi5wdXNoKGd1YXJkVG9Qcm9taXNlRm4oayxkLGgseSxlLHYpKX1lbHNle2xldCBrPUUoKTtiLnB1c2goKCk9PmsudGhlbihiPT57aWYoIWIpdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIGNvbXBvbmVudCAiJHtlfSIgYXQgIiR7eS5wYXRofSJgKTtjb25zdCBFPShrPWIpLl9fZXNNb2R1bGV8fCJNb2R1bGUiPT09a1tTeW1ib2wudG9TdHJpbmdUYWddfHxrLmRlZmF1bHQmJmlzUm91dGVDb21wb25lbnQoay5kZWZhdWx0KT9iLmRlZmF1bHQ6Yjt2YXIgazt5Lm1vZHNbZV09Yix5LmNvbXBvbmVudHNbZV09RTtjb25zdCBfPShFLl9fdmNjT3B0c3x8RSlbY107cmV0dXJuIF8mJmd1YXJkVG9Qcm9taXNlRm4oXyxkLGgseSxlLHYpKCl9KSl9fXJldHVybiBifWZ1bmN0aW9uIGNyZWF0ZU1lbW9yeUhpc3RvcnkoZT0iIil7bGV0IGM9W10sZD1bWyIiLHt9XV0saD0wO2Z1bmN0aW9uIHNldExvY2F0aW9uKGUsYz17fSl7aCsrLGghPT1kLmxlbmd0aCYmZC5zcGxpY2UoaCksZC5wdXNoKFtlLGNdKX1jb25zdCB2PXtsb2NhdGlvbjoiIixzdGF0ZTp7fSxiYXNlOmU9bm9ybWFsaXplQmFzZShlKSxjcmVhdGVIcmVmOmNyZWF0ZUhyZWYuYmluZChudWxsLGUpLHJlcGxhY2UoZSxjKXtkLnNwbGljZShoLS0sMSksc2V0TG9jYXRpb24oZSxjKX0scHVzaChlLGMpe3NldExvY2F0aW9uKGUsYyl9LGxpc3RlbjplPT4oYy5wdXNoKGUpLCgpPT57Y29uc3QgZD1jLmluZGV4T2YoZSk7ZD4tMSYmYy5zcGxpY2UoZCwxKX0pLGRlc3Ryb3koKXtjPVtdLGQ9W1siIix7fV1dLGg9MH0sZ28oZSx2PSEwKXtjb25zdCBiPXRoaXMubG9jYXRpb24seT1lPDA/Tm8uYmFjazpOby5mb3J3YXJkO2g9TWF0aC5tYXgoMCxNYXRoLm1pbihoK2UsZC5sZW5ndGgtMSkpLHYmJmZ1bmN0aW9uKGUsZCx7ZGlyZWN0aW9uOmgsZGVsdGE6dn0pe2NvbnN0IGI9e2RpcmVjdGlvbjpoLGRlbHRhOnYsdHlwZTpUby5wb3B9O2Zvcihjb25zdCBoIG9mIGMpaChlLGQsYil9KHRoaXMubG9jYXRpb24sYix7ZGlyZWN0aW9uOnksZGVsdGE6ZX0pfX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LCJsb2NhdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OigpPT5kW2hdWzBdfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsInN0YXRlIix7ZW51bWVyYWJsZTohMCxnZXQ6KCk9PmRbaF1bMV19KSx2fWxldCBJbz1mdW5jdGlvbihlKXtyZXR1cm4gZVtlLlN0YXRpYz0wXT0iU3RhdGljIixlW2UuUGFyYW09MV09IlBhcmFtIixlW2UuR3JvdXA9Ml09Ikdyb3VwIixlfSh7fSk7dmFyIFJvPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UuU3RhdGljPTBdPSJTdGF0aWMiLGVbZS5QYXJhbT0xXT0iUGFyYW0iLGVbZS5QYXJhbVJlZ0V4cD0yXT0iUGFyYW1SZWdFeHAiLGVbZS5QYXJhbVJlZ0V4cEVuZD0zXT0iUGFyYW1SZWdFeHBFbmQiLGVbZS5Fc2NhcGVOZXh0PTRdPSJFc2NhcGVOZXh0IixlfShSb3x8e30pO2NvbnN0IFBvPXt0eXBlOklvLlN0YXRpYyx2YWx1ZToiIn0sTW89L1thLXpBLVowLTlfXS87Y29uc3QgRG89IlteL10rPyIsQm89e3NlbnNpdGl2ZTohMSxzdHJpY3Q6ITEsc3RhcnQ6ITAsZW5kOiEwfTt2YXIgTG89ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5fbXVsdGlwbGllcj0xMF09Il9tdWx0aXBsaWVyIixlW2UuUm9vdD05MF09IlJvb3QiLGVbZS5TZWdtZW50PTQwXT0iU2VnbWVudCIsZVtlLlN1YlNlZ21lbnQ9MzBdPSJTdWJTZWdtZW50IixlW2UuU3RhdGljPTQwXT0iU3RhdGljIixlW2UuRHluYW1pYz0yMF09IkR5bmFtaWMiLGVbZS5Cb251c0N1c3RvbVJlZ0V4cD0xMF09IkJvbnVzQ3VzdG9tUmVnRXhwIixlW2UuQm9udXNXaWxkY2FyZD0tNTBdPSJCb251c1dpbGRjYXJkIixlW2UuQm9udXNSZXBlYXRhYmxlPS0yMF09IkJvbnVzUmVwZWF0YWJsZSIsZVtlLkJvbnVzT3B0aW9uYWw9LThdPSJCb251c09wdGlvbmFsIixlW2UuQm9udXNTdHJpY3Q9LjcwMDAwMDAwMDAwMDAwMDFdPSJCb251c1N0cmljdCIsZVtlLkJvbnVzQ2FzZVNlbnNpdGl2ZT0uMjVdPSJCb251c0Nhc2VTZW5zaXRpdmUiLGV9KExvfHx7fSk7Y29uc3Qgam89L1suKyo/XiR7fSgpW1xdL1xcXS9nO2Z1bmN0aW9uIGNvbXBhcmVTY29yZUFycmF5KGUsYyl7bGV0IGQ9MDtmb3IoO2Q8ZS5sZW5ndGgmJmQ8Yy5sZW5ndGg7KXtjb25zdCBoPWNbZF0tZVtkXTtpZihoKXJldHVybiBoO2QrK31yZXR1cm4gZS5sZW5ndGg8Yy5sZW5ndGg/MT09PWUubGVuZ3RoJiZlWzBdPT09TG8uU3RhdGljK0xvLlNlZ21lbnQ/LTE6MTplLmxlbmd0aD5jLmxlbmd0aD8xPT09Yy5sZW5ndGgmJmNbMF09PT1Mby5TdGF0aWMrTG8uU2VnbWVudD8xOi0xOjB9ZnVuY3Rpb24gY29tcGFyZVBhdGhQYXJzZXJTY29yZShlLGMpe2xldCBkPTA7Y29uc3QgaD1lLnNjb3JlLHY9Yy5zY29yZTtmb3IoO2Q8aC5sZW5ndGgmJmQ8di5sZW5ndGg7KXtjb25zdCBlPWNvbXBhcmVTY29yZUFycmF5KGhbZF0sdltkXSk7aWYoZSlyZXR1cm4gZTtkKyt9aWYoMT09PU1hdGguYWJzKHYubGVuZ3RoLWgubGVuZ3RoKSl7aWYoaXNMYXN0U2NvcmVOZWdhdGl2ZShoKSlyZXR1cm4gMTtpZihpc0xhc3RTY29yZU5lZ2F0aXZlKHYpKXJldHVybi0xfXJldHVybiB2Lmxlbmd0aC1oLmxlbmd0aH1mdW5jdGlvbiBpc0xhc3RTY29yZU5lZ2F0aXZlKGUpe2NvbnN0IGM9ZVtlLmxlbmd0aC0xXTtyZXR1cm4gZS5sZW5ndGg+MCYmY1tjLmxlbmd0aC0xXTwwfWNvbnN0ICRvPXtzdHJpY3Q6ITEsZW5kOiEwLHNlbnNpdGl2ZTohMX07ZnVuY3Rpb24gY3JlYXRlUm91dGVSZWNvcmRNYXRjaGVyKGUsYyxkKXtjb25zdCBoPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1lbyh7fSxCbyxjKSxoPVtdO2xldCB2PWQuc3RhcnQ/Il4iOiIiO2NvbnN0IGI9W107Zm9yKGNvbnN0IGMgb2YgZSl7Y29uc3QgZT1jLmxlbmd0aD9bXTpbTG8uUm9vdF07ZC5zdHJpY3QmJiFjLmxlbmd0aCYmKHYrPSIvIik7Zm9yKGxldCBoPTA7aDxjLmxlbmd0aDtoKyspe2NvbnN0IHk9Y1toXTtsZXQgRT1Mby5TZWdtZW50KyhkLnNlbnNpdGl2ZT9Mby5Cb251c0Nhc2VTZW5zaXRpdmU6MCk7aWYoeS50eXBlPT09SW8uU3RhdGljKWh8fCh2Kz0iLyIpLHYrPXkudmFsdWUucmVwbGFjZShqbywiXFwkJiIpLEUrPUxvLlN0YXRpYztlbHNlIGlmKHkudHlwZT09PUlvLlBhcmFtKXtjb25zdHt2YWx1ZTplLHJlcGVhdGFibGU6ZCxvcHRpb25hbDprLHJlZ2V4cDpffT15O2IucHVzaCh7bmFtZTplLHJlcGVhdGFibGU6ZCxvcHRpb25hbDprfSk7Y29uc3QgVD1ffHxEbztpZihUIT09RG8pe0UrPUxvLkJvbnVzQ3VzdG9tUmVnRXhwO3RyeXtuZXcgUmVnRXhwKGAoJHtUfSlgKX1jYXRjaChjKXt0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3VzdG9tIFJlZ0V4cCBmb3IgcGFyYW0gIiR7ZX0iICgke1R9KTogYCtjLm1lc3NhZ2UpfX1sZXQgTj1kP2AoKD86JHtUfSkoPzovKD86JHtUfSkpKilgOmAoJHtUfSlgO2h8fChOPWsmJmMubGVuZ3RoPDI/YCg/Oi8ke059KWA6Ii8iK04pLGsmJihOKz0iPyIpLHYrPU4sRSs9TG8uRHluYW1pYyxrJiYoRSs9TG8uQm9udXNPcHRpb25hbCksZCYmKEUrPUxvLkJvbnVzUmVwZWF0YWJsZSksIi4qIj09PVQmJihFKz1Mby5Cb251c1dpbGRjYXJkKX1lLnB1c2goRSl9aC5wdXNoKGUpfWlmKGQuc3RyaWN0JiZkLmVuZCl7Y29uc3QgZT1oLmxlbmd0aC0xO2hbZV1baFtlXS5sZW5ndGgtMV0rPUxvLkJvbnVzU3RyaWN0fWQuc3RyaWN0fHwodis9Ii8/IiksZC5lbmQ/dis9IiQiOmQuc3RyaWN0JiYhdi5lbmRzV2l0aCgiLyIpJiYodis9Iig/Oi98JCkiKTtjb25zdCB5PW5ldyBSZWdFeHAodixkLnNlbnNpdGl2ZT8iIjoiaSIpO3JldHVybntyZTp5LHNjb3JlOmgsa2V5czpiLHBhcnNlOmZ1bmN0aW9uKGUpe2NvbnN0IGM9ZS5tYXRjaCh5KSxkPXt9O2lmKCFjKXJldHVybiBudWxsO2ZvcihsZXQgZT0xO2U8Yy5sZW5ndGg7ZSsrKXtjb25zdCBoPWNbZV18fCIiLHY9YltlLTFdO2Rbdi5uYW1lXT1oJiZ2LnJlcGVhdGFibGU/aC5zcGxpdCgiLyIpOmh9cmV0dXJuIGR9LHN0cmluZ2lmeTpmdW5jdGlvbihjKXtsZXQgZD0iIixoPSExO2Zvcihjb25zdCB2IG9mIGUpe2gmJmQuZW5kc1dpdGgoIi8iKXx8KGQrPSIvIiksaD0hMTtmb3IoY29uc3QgZSBvZiB2KWlmKGUudHlwZT09PUlvLlN0YXRpYylkKz1lLnZhbHVlO2Vsc2UgaWYoZS50eXBlPT09SW8uUGFyYW0pe2NvbnN0e3ZhbHVlOmIscmVwZWF0YWJsZTp5LG9wdGlvbmFsOkV9PWUsaz1iIGluIGM/Y1tiXToiIjtpZih0byhrKSYmIXkpdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlZCBwYXJhbSAiJHtifSIgaXMgYW4gYXJyYXkgYnV0IGl0IGlzIG5vdCByZXBlYXRhYmxlICgqIG9yICsgbW9kaWZpZXJzKWApO2NvbnN0IF89dG8oayk/ay5qb2luKCIvIik6aztpZighXyl7aWYoIUUpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIHBhcmFtICIke2J9ImApO3YubGVuZ3RoPDImJihkLmVuZHNXaXRoKCIvIik/ZD1kLnNsaWNlKDAsLTEpOmg9ITApfWQrPV99fXJldHVybiBkfHwiLyJ9fX0oZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuW1tdXTtpZigiLyI9PT1lKXJldHVybltbUG9dXTtpZighZS5zdGFydHNXaXRoKCIvIikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggIiR7ZX0iYCk7ZnVuY3Rpb24gY3Jhc2goZSl7dGhyb3cgbmV3IEVycm9yKGBFUlIgKCR7Y30pLyIke0V9IjogJHtlfWApfWxldCBjPVJvLlN0YXRpYyxkPWM7Y29uc3QgaD1bXTtsZXQgdjtmdW5jdGlvbiBmaW5hbGl6ZVNlZ21lbnQoKXt2JiZoLnB1c2godiksdj1bXX1sZXQgYix5PTAsRT0iIixrPSIiO2Z1bmN0aW9uIGNvbnN1bWVCdWZmZXIoKXtFJiYoYz09PVJvLlN0YXRpYz92LnB1c2goe3R5cGU6SW8uU3RhdGljLHZhbHVlOkV9KTpjPT09Um8uUGFyYW18fGM9PT1Sby5QYXJhbVJlZ0V4cHx8Yz09PVJvLlBhcmFtUmVnRXhwRW5kPyh2Lmxlbmd0aD4xJiYoIioiPT09Ynx8IisiPT09YikmJmNyYXNoKGBBIHJlcGVhdGFibGUgcGFyYW0gKCR7RX0pIG11c3QgYmUgYWxvbmUgaW4gaXRzIHNlZ21lbnQuIGVnOiAnLzppZHMrLmApLHYucHVzaCh7dHlwZTpJby5QYXJhbSx2YWx1ZTpFLHJlZ2V4cDprLHJlcGVhdGFibGU6IioiPT09Ynx8IisiPT09YixvcHRpb25hbDoiKiI9PT1ifHwiPyI9PT1ifSkpOmNyYXNoKCJJbnZhbGlkIHN0YXRlIHRvIGNvbnN1bWUgYnVmZmVyIiksRT0iIil9ZnVuY3Rpb24gYWRkQ2hhclRvQnVmZmVyKCl7RSs9Yn1mb3IoO3k8ZS5sZW5ndGg7KWlmKGI9ZVt5KytdLCJcXCIhPT1ifHxjPT09Um8uUGFyYW1SZWdFeHApc3dpdGNoKGMpe2Nhc2UgUm8uU3RhdGljOiIvIj09PWI/KEUmJmNvbnN1bWVCdWZmZXIoKSxmaW5hbGl6ZVNlZ21lbnQoKSk6IjoiPT09Yj8oY29uc3VtZUJ1ZmZlcigpLGM9Um8uUGFyYW0pOmFkZENoYXJUb0J1ZmZlcigpO2JyZWFrO2Nhc2UgUm8uRXNjYXBlTmV4dDphZGRDaGFyVG9CdWZmZXIoKSxjPWQ7YnJlYWs7Y2FzZSBSby5QYXJhbToiKCI9PT1iP2M9Um8uUGFyYW1SZWdFeHA6TW8udGVzdChiKT9hZGRDaGFyVG9CdWZmZXIoKTooY29uc3VtZUJ1ZmZlcigpLGM9Um8uU3RhdGljLCIqIiE9PWImJiI/IiE9PWImJiIrIiE9PWImJnktLSk7YnJlYWs7Y2FzZSBSby5QYXJhbVJlZ0V4cDoiKSI9PT1iPyJcXCI9PWtbay5sZW5ndGgtMV0/az1rLnNsaWNlKDAsLTEpK2I6Yz1Sby5QYXJhbVJlZ0V4cEVuZDprKz1iO2JyZWFrO2Nhc2UgUm8uUGFyYW1SZWdFeHBFbmQ6Y29uc3VtZUJ1ZmZlcigpLGM9Um8uU3RhdGljLCIqIiE9PWImJiI/IiE9PWImJiIrIiE9PWImJnktLSxrPSIiO2JyZWFrO2RlZmF1bHQ6Y3Jhc2goIlVua25vd24gc3RhdGUiKX1lbHNlIGQ9YyxjPVJvLkVzY2FwZU5leHQ7cmV0dXJuIGM9PT1Sby5QYXJhbVJlZ0V4cCYmY3Jhc2goYFVuZmluaXNoZWQgY3VzdG9tIFJlZ0V4cCBmb3IgcGFyYW0gIiR7RX0iYCksY29uc3VtZUJ1ZmZlcigpLGZpbmFsaXplU2VnbWVudCgpLGh9KGUucGF0aCksZCksdj1lbyhoLHtyZWNvcmQ6ZSxwYXJlbnQ6YyxjaGlsZHJlbjpbXSxhbGlhczpbXX0pO3JldHVybiBjJiYhdi5yZWNvcmQuYWxpYXNPZj09IWMucmVjb3JkLmFsaWFzT2YmJmMuY2hpbGRyZW4ucHVzaCh2KSx2fWZ1bmN0aW9uIGNyZWF0ZVJvdXRlck1hdGNoZXIoZSxjKXtjb25zdCBkPVtdLGg9bmV3IE1hcDtmdW5jdGlvbiBhZGRSb3V0ZShlLGQsaCl7Y29uc3Qgdj0haCxiPW5vcm1hbGl6ZVJvdXRlUmVjb3JkKGUpO2IuYWxpYXNPZj1oJiZoLnJlY29yZDtjb25zdCB5PW1lcmdlT3B0aW9ucyhjLGUpLEU9W2JdO2lmKCJhbGlhcyJpbiBlKXtjb25zdCBjPSJzdHJpbmciPT10eXBlb2YgZS5hbGlhcz9bZS5hbGlhc106ZS5hbGlhcztmb3IoY29uc3QgZSBvZiBjKUUucHVzaChub3JtYWxpemVSb3V0ZVJlY29yZChlbyh7fSxiLHtjb21wb25lbnRzOmg/aC5yZWNvcmQuY29tcG9uZW50czpiLmNvbXBvbmVudHMscGF0aDplLGFsaWFzT2Y6aD9oLnJlY29yZDpifSkpKX1sZXQgayxfO2Zvcihjb25zdCBjIG9mIEUpe2NvbnN0e3BhdGg6RX09YztpZihkJiYiLyIhPT1FWzBdKXtjb25zdCBlPWQucmVjb3JkLnBhdGgsaD0iLyI9PT1lW2UubGVuZ3RoLTFdPyIiOiIvIjtjLnBhdGg9ZC5yZWNvcmQucGF0aCsoRSYmaCtFKX1pZihrPWNyZWF0ZVJvdXRlUmVjb3JkTWF0Y2hlcihjLGQseSksaD9oLmFsaWFzLnB1c2goayk6KF89X3x8ayxfIT09ayYmXy5hbGlhcy5wdXNoKGspLHYmJmUubmFtZSYmIWlzQWxpYXNSZWNvcmQoaykmJnJlbW92ZVJvdXRlKGUubmFtZSkpLGlzTWF0Y2hhYmxlKGspJiZpbnNlcnRNYXRjaGVyKGspLGIuY2hpbGRyZW4pe2NvbnN0IGU9Yi5jaGlsZHJlbjtmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKylhZGRSb3V0ZShlW2NdLGssaCYmaC5jaGlsZHJlbltjXSl9aD1ofHxrfXJldHVybiBfPygpPT57cmVtb3ZlUm91dGUoXyl9Om5vb3AkMn1mdW5jdGlvbiByZW1vdmVSb3V0ZShlKXtpZihpc1JvdXRlTmFtZShlKSl7Y29uc3QgYz1oLmdldChlKTtjJiYoaC5kZWxldGUoZSksZC5zcGxpY2UoZC5pbmRleE9mKGMpLDEpLGMuY2hpbGRyZW4uZm9yRWFjaChyZW1vdmVSb3V0ZSksYy5hbGlhcy5mb3JFYWNoKHJlbW92ZVJvdXRlKSl9ZWxzZXtjb25zdCBjPWQuaW5kZXhPZihlKTtjPi0xJiYoZC5zcGxpY2UoYywxKSxlLnJlY29yZC5uYW1lJiZoLmRlbGV0ZShlLnJlY29yZC5uYW1lKSxlLmNoaWxkcmVuLmZvckVhY2gocmVtb3ZlUm91dGUpLGUuYWxpYXMuZm9yRWFjaChyZW1vdmVSb3V0ZSkpfX1mdW5jdGlvbiBpbnNlcnRNYXRjaGVyKGUpe2NvbnN0IGM9ZnVuY3Rpb24oZSxjKXtsZXQgZD0wLGg9Yy5sZW5ndGg7Zm9yKDtkIT09aDspe2NvbnN0IHY9ZCtoPj4xO2NvbXBhcmVQYXRoUGFyc2VyU2NvcmUoZSxjW3ZdKTwwP2g9djpkPXYrMX1jb25zdCB2PWZ1bmN0aW9uKGUpe2xldCBjPWU7Zm9yKDtjPWMucGFyZW50OylpZihpc01hdGNoYWJsZShjKSYmMD09PWNvbXBhcmVQYXRoUGFyc2VyU2NvcmUoZSxjKSlyZXR1cm4gY30oZSk7diYmKGg9Yy5sYXN0SW5kZXhPZih2LGgtMSkpO3JldHVybiBofShlLGQpO2Quc3BsaWNlKGMsMCxlKSxlLnJlY29yZC5uYW1lJiYhaXNBbGlhc1JlY29yZChlKSYmaC5zZXQoZS5yZWNvcmQubmFtZSxlKX1yZXR1cm4gYz1tZXJnZU9wdGlvbnMoJG8sYyksZS5mb3JFYWNoKGU9PmFkZFJvdXRlKGUpKSx7YWRkUm91dGU6YWRkUm91dGUscmVzb2x2ZTpmdW5jdGlvbihlLGMpe2xldCB2LGIseSxFPXt9O2lmKCJuYW1lImluIGUmJmUubmFtZSl7aWYodj1oLmdldChlLm5hbWUpLCF2KXRocm93IGNyZWF0ZVJvdXRlckVycm9yKG5vLk1BVENIRVJfTk9UX0ZPVU5ELHtsb2NhdGlvbjplfSk7eT12LnJlY29yZC5uYW1lLEU9ZW8ocGlja1BhcmFtcyhjLnBhcmFtcyx2LmtleXMuZmlsdGVyKGU9PiFlLm9wdGlvbmFsKS5jb25jYXQodi5wYXJlbnQ/di5wYXJlbnQua2V5cy5maWx0ZXIoZT0+ZS5vcHRpb25hbCk6W10pLm1hcChlPT5lLm5hbWUpKSxlLnBhcmFtcyYmcGlja1BhcmFtcyhlLnBhcmFtcyx2LmtleXMubWFwKGU9PmUubmFtZSkpKSxiPXYuc3RyaW5naWZ5KEUpfWVsc2UgaWYobnVsbCE9ZS5wYXRoKWI9ZS5wYXRoLHY9ZC5maW5kKGU9PmUucmUudGVzdChiKSksdiYmKEU9di5wYXJzZShiKSx5PXYucmVjb3JkLm5hbWUpO2Vsc2V7aWYodj1jLm5hbWU/aC5nZXQoYy5uYW1lKTpkLmZpbmQoZT0+ZS5yZS50ZXN0KGMucGF0aCkpLCF2KXRocm93IGNyZWF0ZVJvdXRlckVycm9yKG5vLk1BVENIRVJfTk9UX0ZPVU5ELHtsb2NhdGlvbjplLGN1cnJlbnRMb2NhdGlvbjpjfSk7eT12LnJlY29yZC5uYW1lLEU9ZW8oe30sYy5wYXJhbXMsZS5wYXJhbXMpLGI9di5zdHJpbmdpZnkoRSl9Y29uc3Qgaz1bXTtsZXQgXz12O2Zvcig7Xzspay51bnNoaWZ0KF8ucmVjb3JkKSxfPV8ucGFyZW50O3JldHVybntuYW1lOnkscGF0aDpiLHBhcmFtczpFLG1hdGNoZWQ6ayxtZXRhOm1lcmdlTWV0YUZpZWxkcyhrKX19LHJlbW92ZVJvdXRlOnJlbW92ZVJvdXRlLGNsZWFyUm91dGVzOmZ1bmN0aW9uKCl7ZC5sZW5ndGg9MCxoLmNsZWFyKCl9LGdldFJvdXRlczpmdW5jdGlvbigpe3JldHVybiBkfSxnZXRSZWNvcmRNYXRjaGVyOmZ1bmN0aW9uKGUpe3JldHVybiBoLmdldChlKX19fWZ1bmN0aW9uIHBpY2tQYXJhbXMoZSxjKXtjb25zdCBkPXt9O2Zvcihjb25zdCBoIG9mIGMpaCBpbiBlJiYoZFtoXT1lW2hdKTtyZXR1cm4gZH1mdW5jdGlvbiBub3JtYWxpemVSb3V0ZVJlY29yZChlKXtjb25zdCBjPXtwYXRoOmUucGF0aCxyZWRpcmVjdDplLnJlZGlyZWN0LG5hbWU6ZS5uYW1lLG1ldGE6ZS5tZXRhfHx7fSxhbGlhc09mOmUuYWxpYXNPZixiZWZvcmVFbnRlcjplLmJlZm9yZUVudGVyLHByb3BzOm5vcm1hbGl6ZVJlY29yZFByb3BzKGUpLGNoaWxkcmVuOmUuY2hpbGRyZW58fFtdLGluc3RhbmNlczp7fSxsZWF2ZUd1YXJkczpuZXcgU2V0LHVwZGF0ZUd1YXJkczpuZXcgU2V0LGVudGVyQ2FsbGJhY2tzOnt9LGNvbXBvbmVudHM6ImNvbXBvbmVudHMiaW4gZT9lLmNvbXBvbmVudHN8fG51bGw6ZS5jb21wb25lbnQmJntkZWZhdWx0OmUuY29tcG9uZW50fX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJtb2RzIix7dmFsdWU6e319KSxjfWZ1bmN0aW9uIG5vcm1hbGl6ZVJlY29yZFByb3BzKGUpe2NvbnN0IGM9e30sZD1lLnByb3BzfHwhMTtpZigiY29tcG9uZW50ImluIGUpYy5kZWZhdWx0PWQ7ZWxzZSBmb3IoY29uc3QgaCBpbiBlLmNvbXBvbmVudHMpY1toXT0ib2JqZWN0Ij09dHlwZW9mIGQ/ZFtoXTpkO3JldHVybiBjfWZ1bmN0aW9uIGlzQWxpYXNSZWNvcmQoZSl7Zm9yKDtlOyl7aWYoZS5yZWNvcmQuYWxpYXNPZilyZXR1cm4hMDtlPWUucGFyZW50fXJldHVybiExfWZ1bmN0aW9uIG1lcmdlTWV0YUZpZWxkcyhlKXtyZXR1cm4gZS5yZWR1Y2UoKGUsYyk9PmVvKGUsYy5tZXRhKSx7fSl9ZnVuY3Rpb24gaXNNYXRjaGFibGUoe3JlY29yZDplfSl7cmV0dXJuISEoZS5uYW1lfHxlLmNvbXBvbmVudHMmJk9iamVjdC5rZXlzKGUuY29tcG9uZW50cykubGVuZ3RofHxlLnJlZGlyZWN0KX1mdW5jdGlvbiB1c2VMaW5rKGUpe2NvbnN0IGM9ZWUoaW8pLGQ9ZWUoc28pLGg9cmUoKCk9Pntjb25zdCBkPWllKGUudG8pO3JldHVybiBjLnJlc29sdmUoZCl9KSx2PXJlKCgpPT57Y29uc3R7bWF0Y2hlZDplfT1oLnZhbHVlLHtsZW5ndGg6Y309ZSx2PWVbYy0xXSxiPWQubWF0Y2hlZDtpZighdnx8IWIubGVuZ3RoKXJldHVybi0xO2NvbnN0IHk9Yi5maW5kSW5kZXgoaXNTYW1lUm91dGVSZWNvcmQuYmluZChudWxsLHYpKTtpZih5Pi0xKXJldHVybiB5O2NvbnN0IEU9Z2V0T3JpZ2luYWxQYXRoKGVbYy0yXSk7cmV0dXJuIGM+MSYmZ2V0T3JpZ2luYWxQYXRoKHYpPT09RSYmYltiLmxlbmd0aC0xXS5wYXRoIT09RT9iLmZpbmRJbmRleChpc1NhbWVSb3V0ZVJlY29yZC5iaW5kKG51bGwsZVtjLTJdKSk6eX0pLGI9cmUoKCk9PnYudmFsdWU+LTEmJmZ1bmN0aW9uKGUsYyl7Zm9yKGNvbnN0IGQgaW4gYyl7Y29uc3QgaD1jW2RdLHY9ZVtkXTtpZigic3RyaW5nIj09dHlwZW9mIGgpe2lmKGghPT12KXJldHVybiExfWVsc2UgaWYoIXRvKHYpfHx2Lmxlbmd0aCE9PWgubGVuZ3RofHxoLnNvbWUoKGUsYyk9PmUudmFsdWVPZigpIT09dltjXS52YWx1ZU9mKCkpKXJldHVybiExfXJldHVybiEwfShkLnBhcmFtcyxoLnZhbHVlLnBhcmFtcykpLHk9cmUoKCk9PnYudmFsdWU+LTEmJnYudmFsdWU9PT1kLm1hdGNoZWQubGVuZ3RoLTEmJmlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXMoZC5wYXJhbXMsaC52YWx1ZS5wYXJhbXMpKTtyZXR1cm57cm91dGU6aCxocmVmOnJlKCgpPT5oLnZhbHVlLmhyZWYpLGlzQWN0aXZlOmIsaXNFeGFjdEFjdGl2ZTp5LG5hdmlnYXRlOmZ1bmN0aW9uKGQ9e30pe2lmKGZ1bmN0aW9uKGUpe2lmKGUubWV0YUtleXx8ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5zaGlmdEtleSlyZXR1cm47aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtpZih2b2lkIDAhPT1lLmJ1dHRvbiYmMCE9PWUuYnV0dG9uKXJldHVybjtpZihlLmN1cnJlbnRUYXJnZXQmJmUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUpe2NvbnN0IGM9ZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgidGFyZ2V0Iik7aWYoL1xiX2JsYW5rXGIvaS50ZXN0KGMpKXJldHVybn1lLnByZXZlbnREZWZhdWx0JiZlLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuITB9KGQpKXtjb25zdCBkPWNbaWUoZS5yZXBsYWNlKT8icmVwbGFjZSI6InB1c2giXShpZShlLnRvKSkuY2F0Y2gobm9vcCQyKTtyZXR1cm4gZS52aWV3VHJhbnNpdGlvbiYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmInN0YXJ0Vmlld1RyYW5zaXRpb24iaW4gZG9jdW1lbnQmJmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCk9PmQpLGR9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX19Y29uc3QgRm89dGUoe25hbWU6IlJvdXRlckxpbmsiLGNvbXBhdENvbmZpZzp7TU9ERTozfSxwcm9wczp7dG86e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiEwfSxyZXBsYWNlOkJvb2xlYW4sYWN0aXZlQ2xhc3M6U3RyaW5nLGV4YWN0QWN0aXZlQ2xhc3M6U3RyaW5nLGN1c3RvbTpCb29sZWFuLGFyaWFDdXJyZW50VmFsdWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InBhZ2UifSx2aWV3VHJhbnNpdGlvbjpCb29sZWFufSx1c2VMaW5rOnVzZUxpbmssc2V0dXAoZSx7c2xvdHM6Y30pe2NvbnN0IGQ9Y2UodXNlTGluayhlKSkse29wdGlvbnM6aH09ZWUoaW8pLHY9cmUoKCk9Pih7W2dldExpbmtDbGFzcyhlLmFjdGl2ZUNsYXNzLGgubGlua0FjdGl2ZUNsYXNzLCJyb3V0ZXItbGluay1hY3RpdmUiKV06ZC5pc0FjdGl2ZSxbZ2V0TGlua0NsYXNzKGUuZXhhY3RBY3RpdmVDbGFzcyxoLmxpbmtFeGFjdEFjdGl2ZUNsYXNzLCJyb3V0ZXItbGluay1leGFjdC1hY3RpdmUiKV06ZC5pc0V4YWN0QWN0aXZlfSkpO3JldHVybigpPT57Y29uc3QgaD1jLmRlZmF1bHQmJigxPT09KGI9Yy5kZWZhdWx0KGQpKS5sZW5ndGg/YlswXTpiKTt2YXIgYjtyZXR1cm4gZS5jdXN0b20/aDpvZSgiYSIseyJhcmlhLWN1cnJlbnQiOmQuaXNFeGFjdEFjdGl2ZT9lLmFyaWFDdXJyZW50VmFsdWU6bnVsbCxocmVmOmQuaHJlZixvbkNsaWNrOmQubmF2aWdhdGUsY2xhc3M6di52YWx1ZX0saCl9fX0pO2Z1bmN0aW9uIGdldE9yaWdpbmFsUGF0aChlKXtyZXR1cm4gZT9lLmFsaWFzT2Y/ZS5hbGlhc09mLnBhdGg6ZS5wYXRoOiIifWNvbnN0IGdldExpbmtDbGFzcz0oZSxjLGQpPT5udWxsIT1lP2U6bnVsbCE9Yz9jOmQ7ZnVuY3Rpb24gbm9ybWFsaXplU2xvdCQxKGUsYyl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgZD1lKGMpO3JldHVybiAxPT09ZC5sZW5ndGg/ZFswXTpkfWNvbnN0IFZvPXRlKHtuYW1lOiJSb3V0ZXJWaWV3Iixpbmhlcml0QXR0cnM6ITEscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6ImRlZmF1bHQifSxyb3V0ZTpPYmplY3R9LGNvbXBhdENvbmZpZzp7TU9ERTozfSxzZXR1cChlLHthdHRyczpjLHNsb3RzOmR9KXtjb25zdCBoPWVlKGxvKSx2PXJlKCgpPT5lLnJvdXRlfHxoLnZhbHVlKSxiPWVlKGFvLDApLHk9cmUoKCk9PntsZXQgZT1pZShiKTtjb25zdHttYXRjaGVkOmN9PXYudmFsdWU7bGV0IGQ7Zm9yKDsoZD1jW2VdKSYmIWQuY29tcG9uZW50czspZSsrO3JldHVybiBlfSksRT1yZSgoKT0+di52YWx1ZS5tYXRjaGVkW3kudmFsdWVdKTtkZShhbyxyZSgoKT0+eS52YWx1ZSsxKSksZGUocm8sRSksZGUobG8sdik7Y29uc3Qgaz1hZSgpO3JldHVybiBuZSgoKT0+W2sudmFsdWUsRS52YWx1ZSxlLm5hbWVdLChbZSxjLGRdLFtoLHYsYl0pPT57YyYmKGMuaW5zdGFuY2VzW2RdPWUsdiYmdiE9PWMmJmUmJmU9PT1oJiYoYy5sZWF2ZUd1YXJkcy5zaXplfHwoYy5sZWF2ZUd1YXJkcz12LmxlYXZlR3VhcmRzKSxjLnVwZGF0ZUd1YXJkcy5zaXplfHwoYy51cGRhdGVHdWFyZHM9di51cGRhdGVHdWFyZHMpKSksIWV8fCFjfHx2JiZpc1NhbWVSb3V0ZVJlY29yZChjLHYpJiZofHwoYy5lbnRlckNhbGxiYWNrc1tkXXx8W10pLmZvckVhY2goYz0+YyhlKSl9LHtmbHVzaDoicG9zdCJ9KSwoKT0+e2NvbnN0IGg9di52YWx1ZSxiPWUubmFtZSx5PUUudmFsdWUsXz15JiZ5LmNvbXBvbmVudHNbYl07aWYoIV8pcmV0dXJuIG5vcm1hbGl6ZVNsb3QkMShkLmRlZmF1bHQse0NvbXBvbmVudDpfLHJvdXRlOmh9KTtjb25zdCBUPXkucHJvcHNbYl0sTj1UPyEwPT09VD9oLnBhcmFtczoiZnVuY3Rpb24iPT10eXBlb2YgVD9UKGgpOlQ6bnVsbCxPPW9lKF8sZW8oe30sTixjLHtvblZub2RlVW5tb3VudGVkOmU9PntlLmNvbXBvbmVudC5pc1VubW91bnRlZCYmKHkuaW5zdGFuY2VzW2JdPW51bGwpfSxyZWY6a30pKTtyZXR1cm4gbm9ybWFsaXplU2xvdCQxKGQuZGVmYXVsdCx7Q29tcG9uZW50Ok8scm91dGU6aH0pfHxPfX19KTtmdW5jdGlvbiBjcmVhdGVSb3V0ZXIoZSl7Y29uc3QgYz1jcmVhdGVSb3V0ZXJNYXRjaGVyKGUucm91dGVzLGUpLGQ9ZS5wYXJzZVF1ZXJ5fHxwYXJzZVF1ZXJ5LGg9ZS5zdHJpbmdpZnlRdWVyeXx8c3RyaW5naWZ5UXVlcnksdj1lLmhpc3RvcnksYj11c2VDYWxsYmFja3MoKSx5PXVzZUNhbGxiYWNrcygpLEU9dXNlQ2FsbGJhY2tzKCksaz1sZShfbyk7bGV0IF89X287Wm4mJmUuc2Nyb2xsQmVoYXZpb3ImJiJzY3JvbGxSZXN0b3JhdGlvbiJpbiBoaXN0b3J5JiYoaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbj0ibWFudWFsIik7Y29uc3QgVD1hcHBseVRvUGFyYW1zLmJpbmQobnVsbCxlPT4iIitlKSxOPWFwcGx5VG9QYXJhbXMuYmluZChudWxsLGVuY29kZVBhcmFtKSxPPWFwcGx5VG9QYXJhbXMuYmluZChudWxsLGRlY29kZSk7ZnVuY3Rpb24gcmVzb2x2ZShlLGIpe2lmKGI9ZW8oe30sYnx8ay52YWx1ZSksInN0cmluZyI9PXR5cGVvZiBlKXtjb25zdCBoPXBhcnNlVVJMKGQsZSxiLnBhdGgpLHk9Yy5yZXNvbHZlKHtwYXRoOmgucGF0aH0sYiksRT12LmNyZWF0ZUhyZWYoaC5mdWxsUGF0aCk7cmV0dXJuIGVvKGgseSx7cGFyYW1zOk8oeS5wYXJhbXMpLGhhc2g6ZGVjb2RlKGguaGFzaCkscmVkaXJlY3RlZEZyb206dm9pZCAwLGhyZWY6RX0pfWxldCB5O2lmKG51bGwhPWUucGF0aCl5PWVvKHt9LGUse3BhdGg6cGFyc2VVUkwoZCxlLnBhdGgsYi5wYXRoKS5wYXRofSk7ZWxzZXtjb25zdCBjPWVvKHt9LGUucGFyYW1zKTtmb3IoY29uc3QgZSBpbiBjKW51bGw9PWNbZV0mJmRlbGV0ZSBjW2VdO3k9ZW8oe30sZSx7cGFyYW1zOk4oYyl9KSxiLnBhcmFtcz1OKGIucGFyYW1zKX1jb25zdCBFPWMucmVzb2x2ZSh5LGIpLF89ZS5oYXNofHwiIjtFLnBhcmFtcz1UKE8oRS5wYXJhbXMpKTtjb25zdCBSPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1jLnF1ZXJ5P2UoYy5xdWVyeSk6IiI7cmV0dXJuIGMucGF0aCsoZCYmIj8iKStkKyhjLmhhc2h8fCIiKX0oaCxlbyh7fSxlLHtoYXNoOihNPV8sY29tbW9uRW5jb2RlKE0pLnJlcGxhY2UoU28sInsiKS5yZXBsYWNlKHdvLCJ9IikucmVwbGFjZSh5bywiXiIpKSxwYXRoOkUucGF0aH0pKTt2YXIgTTtjb25zdCBEPXYuY3JlYXRlSHJlZihSKTtyZXR1cm4gZW8oe2Z1bGxQYXRoOlIsaGFzaDpfLHF1ZXJ5Omg9PT1zdHJpbmdpZnlRdWVyeT9ub3JtYWxpemVRdWVyeShlLnF1ZXJ5KTplLnF1ZXJ5fHx7fX0sRSx7cmVkaXJlY3RlZEZyb206dm9pZCAwLGhyZWY6RH0pfWZ1bmN0aW9uIGxvY2F0aW9uQXNPYmplY3QoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3BhcnNlVVJMKGQsZSxrLnZhbHVlLnBhdGgpOmVvKHt9LGUpfWZ1bmN0aW9uIGNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uKGUsYyl7aWYoXyE9PWUpcmV0dXJuIGNyZWF0ZVJvdXRlckVycm9yKG5vLk5BVklHQVRJT05fQ0FOQ0VMTEVELHtmcm9tOmMsdG86ZX0pfWZ1bmN0aW9uIHB1c2goZSl7cmV0dXJuIHB1c2hXaXRoUmVkaXJlY3QoZSl9ZnVuY3Rpb24gaGFuZGxlUmVkaXJlY3RSZWNvcmQoZSxjKXtjb25zdCBkPWUubWF0Y2hlZFtlLm1hdGNoZWQubGVuZ3RoLTFdO2lmKGQmJmQucmVkaXJlY3Qpe2NvbnN0e3JlZGlyZWN0Omh9PWQ7bGV0IHY9ImZ1bmN0aW9uIj09dHlwZW9mIGg/aChlLGMpOmg7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB2JiYodj12LmluY2x1ZGVzKCI/Iil8fHYuaW5jbHVkZXMoIiMiKT92PWxvY2F0aW9uQXNPYmplY3Qodik6e3BhdGg6dn0sdi5wYXJhbXM9e30pLGVvKHtxdWVyeTplLnF1ZXJ5LGhhc2g6ZS5oYXNoLHBhcmFtczpudWxsIT12LnBhdGg/e306ZS5wYXJhbXN9LHYpfX1mdW5jdGlvbiBwdXNoV2l0aFJlZGlyZWN0KGUsYyl7Y29uc3QgZD1fPXJlc29sdmUoZSksdj1rLnZhbHVlLGI9ZS5zdGF0ZSx5PWUuZm9yY2UsRT0hMD09PWUucmVwbGFjZSxUPWhhbmRsZVJlZGlyZWN0UmVjb3JkKGQsdik7aWYoVClyZXR1cm4gcHVzaFdpdGhSZWRpcmVjdChlbyhsb2NhdGlvbkFzT2JqZWN0KFQpLHtzdGF0ZToib2JqZWN0Ij09dHlwZW9mIFQ/ZW8oe30sYixULnN0YXRlKTpiLGZvcmNlOnkscmVwbGFjZTpFfSksY3x8ZCk7Y29uc3QgTj1kO2xldCBPO3JldHVybiBOLnJlZGlyZWN0ZWRGcm9tPWMsIXkmJmZ1bmN0aW9uKGUsYyxkKXtjb25zdCBoPWMubWF0Y2hlZC5sZW5ndGgtMSx2PWQubWF0Y2hlZC5sZW5ndGgtMTtyZXR1cm4gaD4tMSYmaD09PXYmJmlzU2FtZVJvdXRlUmVjb3JkKGMubWF0Y2hlZFtoXSxkLm1hdGNoZWRbdl0pJiZpc1NhbWVSb3V0ZUxvY2F0aW9uUGFyYW1zKGMucGFyYW1zLGQucGFyYW1zKSYmZShjLnF1ZXJ5KT09PWUoZC5xdWVyeSkmJmMuaGFzaD09PWQuaGFzaH0oaCx2LGQpJiYoTz1jcmVhdGVSb3V0ZXJFcnJvcihuby5OQVZJR0FUSU9OX0RVUExJQ0FURUQse3RvOk4sZnJvbTp2fSksaGFuZGxlU2Nyb2xsKHYsdiwhMCwhMSkpLChPP1Byb21pc2UucmVzb2x2ZShPKTpuYXZpZ2F0ZShOLHYpKS5jYXRjaChlPT5pc05hdmlnYXRpb25GYWlsdXJlKGUpP2lzTmF2aWdhdGlvbkZhaWx1cmUoZSxuby5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKT9lOm1hcmtBc1JlYWR5KGUpOnRyaWdnZXJFcnJvcihlLE4sdikpLnRoZW4oZT0+e2lmKGUpe2lmKGlzTmF2aWdhdGlvbkZhaWx1cmUoZSxuby5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKSlyZXR1cm4gcHVzaFdpdGhSZWRpcmVjdChlbyh7cmVwbGFjZTpFfSxsb2NhdGlvbkFzT2JqZWN0KGUudG8pLHtzdGF0ZToib2JqZWN0Ij09dHlwZW9mIGUudG8/ZW8oe30sYixlLnRvLnN0YXRlKTpiLGZvcmNlOnl9KSxjfHxOKX1lbHNlIGU9ZmluYWxpemVOYXZpZ2F0aW9uKE4sdiwhMCxFLGIpO3JldHVybiB0cmlnZ2VyQWZ0ZXJFYWNoKE4sdixlKSxlfSl9ZnVuY3Rpb24gY2hlY2tDYW5jZWxlZE5hdmlnYXRpb25BbmRSZWplY3QoZSxjKXtjb25zdCBkPWNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uKGUsYyk7cmV0dXJuIGQ/UHJvbWlzZS5yZWplY3QoZCk6UHJvbWlzZS5yZXNvbHZlKCl9ZnVuY3Rpb24gcnVuV2l0aENvbnRleHQoZSl7Y29uc3QgYz1GLnZhbHVlcygpLm5leHQoKS52YWx1ZTtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIGMucnVuV2l0aENvbnRleHQ/Yy5ydW5XaXRoQ29udGV4dChlKTplKCl9ZnVuY3Rpb24gbmF2aWdhdGUoZSxjKXtsZXQgZDtjb25zdFtoLHYsRV09ZnVuY3Rpb24oZSxjKXtjb25zdCBkPVtdLGg9W10sdj1bXSxiPU1hdGgubWF4KGMubWF0Y2hlZC5sZW5ndGgsZS5tYXRjaGVkLmxlbmd0aCk7Zm9yKGxldCB5PTA7eTxiO3krKyl7Y29uc3QgYj1jLm1hdGNoZWRbeV07YiYmKGUubWF0Y2hlZC5maW5kKGU9PmlzU2FtZVJvdXRlUmVjb3JkKGUsYikpP2gucHVzaChiKTpkLnB1c2goYikpO2NvbnN0IEU9ZS5tYXRjaGVkW3ldO0UmJihjLm1hdGNoZWQuZmluZChlPT5pc1NhbWVSb3V0ZVJlY29yZChlLEUpKXx8di5wdXNoKEUpKX1yZXR1cm5bZCxoLHZdfShlLGMpO2Q9ZXh0cmFjdENvbXBvbmVudHNHdWFyZHMoaC5yZXZlcnNlKCksImJlZm9yZVJvdXRlTGVhdmUiLGUsYyk7Zm9yKGNvbnN0IHYgb2YgaCl2LmxlYXZlR3VhcmRzLmZvckVhY2goaD0+e2QucHVzaChndWFyZFRvUHJvbWlzZUZuKGgsZSxjKSl9KTtjb25zdCBrPWNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uQW5kUmVqZWN0LmJpbmQobnVsbCxlLGMpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKS50aGVuKCgpPT57ZD1bXTtmb3IoY29uc3QgaCBvZiBiLmxpc3QoKSlkLnB1c2goZ3VhcmRUb1Byb21pc2VGbihoLGUsYykpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLnRoZW4oKCk9PntkPWV4dHJhY3RDb21wb25lbnRzR3VhcmRzKHYsImJlZm9yZVJvdXRlVXBkYXRlIixlLGMpO2Zvcihjb25zdCBoIG9mIHYpaC51cGRhdGVHdWFyZHMuZm9yRWFjaChoPT57ZC5wdXNoKGd1YXJkVG9Qcm9taXNlRm4oaCxlLGMpKX0pO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLnRoZW4oKCk9PntkPVtdO2Zvcihjb25zdCBoIG9mIEUpaWYoaC5iZWZvcmVFbnRlcilpZih0byhoLmJlZm9yZUVudGVyKSlmb3IoY29uc3QgdiBvZiBoLmJlZm9yZUVudGVyKWQucHVzaChndWFyZFRvUHJvbWlzZUZuKHYsZSxjKSk7ZWxzZSBkLnB1c2goZ3VhcmRUb1Byb21pc2VGbihoLmJlZm9yZUVudGVyLGUsYykpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLnRoZW4oKCk9PihlLm1hdGNoZWQuZm9yRWFjaChlPT5lLmVudGVyQ2FsbGJhY2tzPXt9KSxkPWV4dHJhY3RDb21wb25lbnRzR3VhcmRzKEUsImJlZm9yZVJvdXRlRW50ZXIiLGUsYyxydW5XaXRoQ29udGV4dCksZC5wdXNoKGspLHJ1bkd1YXJkUXVldWUoZCkpKS50aGVuKCgpPT57ZD1bXTtmb3IoY29uc3QgaCBvZiB5Lmxpc3QoKSlkLnB1c2goZ3VhcmRUb1Byb21pc2VGbihoLGUsYykpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLmNhdGNoKGU9PmlzTmF2aWdhdGlvbkZhaWx1cmUoZSxuby5OQVZJR0FUSU9OX0NBTkNFTExFRCk/ZTpQcm9taXNlLnJlamVjdChlKSl9ZnVuY3Rpb24gdHJpZ2dlckFmdGVyRWFjaChlLGMsZCl7RS5saXN0KCkuZm9yRWFjaChoPT5ydW5XaXRoQ29udGV4dCgoKT0+aChlLGMsZCkpKX1mdW5jdGlvbiBmaW5hbGl6ZU5hdmlnYXRpb24oZSxjLGQsaCxiKXtjb25zdCB5PWNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uKGUsYyk7aWYoeSlyZXR1cm4geTtjb25zdCBFPWM9PT1fbyxfPVpuP2hpc3Rvcnkuc3RhdGU6e307ZCYmKGh8fEU/di5yZXBsYWNlKGUuZnVsbFBhdGgsZW8oe3Njcm9sbDpFJiZfJiZfLnNjcm9sbH0sYikpOnYucHVzaChlLmZ1bGxQYXRoLGIpKSxrLnZhbHVlPWUsaGFuZGxlU2Nyb2xsKGUsYyxkLEUpLG1hcmtBc1JlYWR5KCl9bGV0IFI7ZnVuY3Rpb24gc2V0dXBMaXN0ZW5lcnMoKXtSfHwoUj12Lmxpc3RlbigoZSxjLGQpPT57aWYoIVYubGlzdGVuaW5nKXJldHVybjtjb25zdCBoPXJlc29sdmUoZSksYj1oYW5kbGVSZWRpcmVjdFJlY29yZChoLFYuY3VycmVudFJvdXRlLnZhbHVlKTtpZihiKXJldHVybiB2b2lkIHB1c2hXaXRoUmVkaXJlY3QoZW8oYix7cmVwbGFjZTohMCxmb3JjZTohMH0pLGgpLmNhdGNoKG5vb3AkMik7Xz1oO2NvbnN0IHk9ay52YWx1ZTt2YXIgRSxUO1puJiYoRT1nZXRTY3JvbGxLZXkoeS5mdWxsUGF0aCxkLmRlbHRhKSxUPXtsZWZ0OndpbmRvdy5zY3JvbGxYLHRvcDp3aW5kb3cuc2Nyb2xsWX0sT28uc2V0KEUsVCkpLG5hdmlnYXRlKGgseSkuY2F0Y2goZT0+aXNOYXZpZ2F0aW9uRmFpbHVyZShlLG5vLk5BVklHQVRJT05fQUJPUlRFRHxuby5OQVZJR0FUSU9OX0NBTkNFTExFRCk/ZTppc05hdmlnYXRpb25GYWlsdXJlKGUsbm8uTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCk/KHB1c2hXaXRoUmVkaXJlY3QoZW8obG9jYXRpb25Bc09iamVjdChlLnRvKSx7Zm9yY2U6ITB9KSxoKS50aGVuKGU9Pntpc05hdmlnYXRpb25GYWlsdXJlKGUsbm8uTkFWSUdBVElPTl9BQk9SVEVEfG5vLk5BVklHQVRJT05fRFVQTElDQVRFRCkmJiFkLmRlbHRhJiZkLnR5cGU9PT1Uby5wb3AmJnYuZ28oLTEsITEpfSkuY2F0Y2gobm9vcCQyKSxQcm9taXNlLnJlamVjdCgpKTooZC5kZWx0YSYmdi5nbygtZC5kZWx0YSwhMSksdHJpZ2dlckVycm9yKGUsaCx5KSkpLnRoZW4oZT0+eyhlPWV8fGZpbmFsaXplTmF2aWdhdGlvbihoLHksITEpKSYmKGQuZGVsdGEmJiFpc05hdmlnYXRpb25GYWlsdXJlKGUsbm8uTkFWSUdBVElPTl9DQU5DRUxMRUQpP3YuZ28oLWQuZGVsdGEsITEpOmQudHlwZT09PVRvLnBvcCYmaXNOYXZpZ2F0aW9uRmFpbHVyZShlLG5vLk5BVklHQVRJT05fQUJPUlRFRHxuby5OQVZJR0FUSU9OX0RVUExJQ0FURUQpJiZ2LmdvKC0xLCExKSksdHJpZ2dlckFmdGVyRWFjaChoLHksZSl9KS5jYXRjaChub29wJDIpfSkpfWxldCBNLEQ9dXNlQ2FsbGJhY2tzKCksTD11c2VDYWxsYmFja3MoKTtmdW5jdGlvbiB0cmlnZ2VyRXJyb3IoZSxjLGQpe21hcmtBc1JlYWR5KGUpO2NvbnN0IGg9TC5saXN0KCk7cmV0dXJuIGgubGVuZ3RoP2guZm9yRWFjaChoPT5oKGUsYyxkKSk6Y29uc29sZS5lcnJvcihlKSxQcm9taXNlLnJlamVjdChlKX1mdW5jdGlvbiBtYXJrQXNSZWFkeShlKXtyZXR1cm4gTXx8KE09IWUsc2V0dXBMaXN0ZW5lcnMoKSxELmxpc3QoKS5mb3JFYWNoKChbYyxkXSk9PmU/ZChlKTpjKCkpLEQucmVzZXQoKSksZX1mdW5jdGlvbiBoYW5kbGVTY3JvbGwoYyxkLGgsdil7Y29uc3R7c2Nyb2xsQmVoYXZpb3I6Yn09ZTtpZighWm58fCFiKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCB5PSFoJiZmdW5jdGlvbihlKXtjb25zdCBjPU9vLmdldChlKTtyZXR1cm4gT28uZGVsZXRlKGUpLGN9KGdldFNjcm9sbEtleShjLmZ1bGxQYXRoLDApKXx8KHZ8fCFoKSYmaGlzdG9yeS5zdGF0ZSYmaGlzdG9yeS5zdGF0ZS5zY3JvbGx8fG51bGw7cmV0dXJuIHVlKCkudGhlbigoKT0+YihjLGQseSkpLnRoZW4oZT0+ZSYmc2Nyb2xsVG9Qb3NpdGlvbihlKSkuY2F0Y2goZT0+dHJpZ2dlckVycm9yKGUsYyxkKSl9Y29uc3QgZ289ZT0+di5nbyhlKTtsZXQgJDtjb25zdCBGPW5ldyBTZXQsVj17Y3VycmVudFJvdXRlOmssbGlzdGVuaW5nOiEwLGFkZFJvdXRlOmZ1bmN0aW9uKGUsZCl7bGV0IGgsdjtyZXR1cm4gaXNSb3V0ZU5hbWUoZSk/KGg9Yy5nZXRSZWNvcmRNYXRjaGVyKGUpLHY9ZCk6dj1lLGMuYWRkUm91dGUodixoKX0scmVtb3ZlUm91dGU6ZnVuY3Rpb24oZSl7Y29uc3QgZD1jLmdldFJlY29yZE1hdGNoZXIoZSk7ZCYmYy5yZW1vdmVSb3V0ZShkKX0sY2xlYXJSb3V0ZXM6Yy5jbGVhclJvdXRlcyxoYXNSb3V0ZTpmdW5jdGlvbihlKXtyZXR1cm4hIWMuZ2V0UmVjb3JkTWF0Y2hlcihlKX0sZ2V0Um91dGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZ2V0Um91dGVzKCkubWFwKGU9PmUucmVjb3JkKX0scmVzb2x2ZTpyZXNvbHZlLG9wdGlvbnM6ZSxwdXNoOnB1c2gscmVwbGFjZTpmdW5jdGlvbihlKXtyZXR1cm4gcHVzaChlbyhsb2NhdGlvbkFzT2JqZWN0KGUpLHtyZXBsYWNlOiEwfSkpfSxnbzpnbyxiYWNrOigpPT5nbygtMSksZm9yd2FyZDooKT0+Z28oMSksYmVmb3JlRWFjaDpiLmFkZCxiZWZvcmVSZXNvbHZlOnkuYWRkLGFmdGVyRWFjaDpFLmFkZCxvbkVycm9yOkwuYWRkLGlzUmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gTSYmay52YWx1ZSE9PV9vP1Byb21pc2UucmVzb2x2ZSgpOm5ldyBQcm9taXNlKChlLGMpPT57RC5hZGQoW2UsY10pfSl9LGluc3RhbGwoZSl7ZS5jb21wb25lbnQoIlJvdXRlckxpbmsiLEZvKSxlLmNvbXBvbmVudCgiUm91dGVyVmlldyIsVm8pLGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJHJvdXRlcj1WLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCIkcm91dGUiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+aWUoayl9KSxabiYmISQmJmsudmFsdWU9PT1fbyYmKCQ9ITAscHVzaCh2LmxvY2F0aW9uKS5jYXRjaChlPT57fSkpO2NvbnN0IGM9e307Zm9yKGNvbnN0IGUgaW4gX28pT2JqZWN0LmRlZmluZVByb3BlcnR5KGMsZSx7Z2V0OigpPT5rLnZhbHVlW2VdLGVudW1lcmFibGU6ITB9KTtlLnByb3ZpZGUoaW8sViksZS5wcm92aWRlKHNvLHNlKGMpKSxlLnByb3ZpZGUobG8sayk7Y29uc3QgZD1lLnVubW91bnQ7Ri5hZGQoZSksZS51bm1vdW50PWZ1bmN0aW9uKCl7Ri5kZWxldGUoZSksRi5zaXplPDEmJihfPV9vLFImJlIoKSxSPW51bGwsay52YWx1ZT1fbywkPSExLE09ITEpLGQoKX19fTtmdW5jdGlvbiBydW5HdWFyZFF1ZXVlKGUpe3JldHVybiBlLnJlZHVjZSgoZSxjKT0+ZS50aGVuKCgpPT5ydW5XaXRoQ29udGV4dChjKSksUHJvbWlzZS5yZXNvbHZlKCkpfXJldHVybiBWfWNvbnN0IHpvPXt0cmFpbGluZzohMH07ZnVuY3Rpb24gZGVib3VuY2UoZSxjPTI1LGQ9e30pe2lmKGQ9ey4uLnpvLC4uLmR9LCFOdW1iZXIuaXNGaW5pdGUoYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYHdhaXRgIHRvIGJlIGEgZmluaXRlIG51bWJlciIpO2xldCBoLHYsYix5LEU9W107Y29uc3QgYXBwbHlGbj0oYyxoKT0+KGI9YXN5bmMgZnVuY3Rpb24oZSxjLGQpe3JldHVybiBhd2FpdCBlLmFwcGx5KGMsZCl9KGUsYyxoKSxiLmZpbmFsbHkoKCk9PntpZihiPW51bGwsZC50cmFpbGluZyYmeSYmIXYpe2NvbnN0IGU9YXBwbHlGbihjLHkpO3JldHVybiB5PW51bGwsZX19KSxiKSxkZWJvdW5jZWQ9ZnVuY3Rpb24oLi4uZSl7cmV0dXJuIGQudHJhaWxpbmcmJih5PWUpLGJ8fG5ldyBQcm9taXNlKGI9Pntjb25zdCBrPSF2JiZkLmxlYWRpbmc7Y2xlYXJUaW1lb3V0KHYpLHY9c2V0VGltZW91dCgoKT0+e3Y9bnVsbDtjb25zdCBjPWQubGVhZGluZz9oOmFwcGx5Rm4odGhpcyxlKTt5PW51bGw7Zm9yKGNvbnN0IGUgb2YgRSllKGMpO0U9W119LGMpLGs/KGg9YXBwbHlGbih0aGlzLGUpLGIoaCkpOkUucHVzaChiKX0pfSxfY2xlYXJUaW1lb3V0PWU9PntlJiYoY2xlYXJUaW1lb3V0KGUpLHY9bnVsbCl9O3JldHVybiBkZWJvdW5jZWQuaXNQZW5kaW5nPSgpPT4hIXYsZGVib3VuY2VkLmNhbmNlbD0oKT0+e19jbGVhclRpbWVvdXQodiksRT1bXSx5PW51bGx9LGRlYm91bmNlZC5mbHVzaD0oKT0+e2lmKF9jbGVhclRpbWVvdXQodiksIXl8fGIpcmV0dXJuO2NvbnN0IGU9eTtyZXR1cm4geT1udWxsLGFwcGx5Rm4odGhpcyxlKX0sZGVib3VuY2VkfXZhciBxbz17aW5oZXJpdDoiaW5oZXJpdCIsY3VycmVudDoiY3VycmVudGNvbG9yIix0cmFuc3BhcmVudDoidHJhbnNwYXJlbnQiLGJsYWNrOiIjMDAwIix3aGl0ZToiI2ZmZiIsc2xhdGU6ezUwOiJva2xjaCg5OC40JSAwLjAwMyAyNDcuODU4KSIsMTAwOiJva2xjaCg5Ni44JSAwLjAwNyAyNDcuODk2KSIsMjAwOiJva2xjaCg5Mi45JSAwLjAxMyAyNTUuNTA4KSIsMzAwOiJva2xjaCg4Ni45JSAwLjAyMiAyNTIuODk0KSIsNDAwOiJva2xjaCg3MC40JSAwLjA0IDI1Ni43ODgpIiw1MDA6Im9rbGNoKDU1LjQlIDAuMDQ2IDI1Ny40MTcpIiw2MDA6Im9rbGNoKDQ0LjYlIDAuMDQzIDI1Ny4yODEpIiw3MDA6Im9rbGNoKDM3LjIlIDAuMDQ0IDI1Ny4yODcpIiw4MDA6Im9rbGNoKDI3LjklIDAuMDQxIDI2MC4wMzEpIiw5MDA6Im9rbGNoKDIwLjglIDAuMDQyIDI2NS43NTUpIiw5NTA6Im9rbGNoKDEyLjklIDAuMDQyIDI2NC42OTUpIn0sZ3JheTp7NTA6Im9rbGNoKDk4LjUlIDAuMDAyIDI0Ny44MzkpIiwxMDA6Im9rbGNoKDk2LjclIDAuMDAzIDI2NC41NDIpIiwyMDA6Im9rbGNoKDkyLjglIDAuMDA2IDI2NC41MzEpIiwzMDA6Im9rbGNoKDg3LjIlIDAuMDEgMjU4LjMzOCkiLDQwMDoib2tsY2goNzAuNyUgMC4wMjIgMjYxLjMyNSkiLDUwMDoib2tsY2goNTUuMSUgMC4wMjcgMjY0LjM2NCkiLDYwMDoib2tsY2goNDQuNiUgMC4wMyAyNTYuODAyKSIsNzAwOiJva2xjaCgzNy4zJSAwLjAzNCAyNTkuNzMzKSIsODAwOiJva2xjaCgyNy44JSAwLjAzMyAyNTYuODQ4KSIsOTAwOiJva2xjaCgyMSUgMC4wMzQgMjY0LjY2NSkiLDk1MDoib2tsY2goMTMlIDAuMDI4IDI2MS42OTIpIn0semluYzp7NTA6Im9rbGNoKDk4LjUlIDAgMCkiLDEwMDoib2tsY2goOTYuNyUgMC4wMDEgMjg2LjM3NSkiLDIwMDoib2tsY2goOTIlIDAuMDA0IDI4Ni4zMikiLDMwMDoib2tsY2goODcuMSUgMC4wMDYgMjg2LjI4NikiLDQwMDoib2tsY2goNzAuNSUgMC4wMTUgMjg2LjA2NykiLDUwMDoib2tsY2goNTUuMiUgMC4wMTYgMjg1LjkzOCkiLDYwMDoib2tsY2goNDQuMiUgMC4wMTcgMjg1Ljc4NikiLDcwMDoib2tsY2goMzclIDAuMDEzIDI4NS44MDUpIiw4MDA6Im9rbGNoKDI3LjQlIDAuMDA2IDI4Ni4wMzMpIiw5MDA6Im9rbGNoKDIxJSAwLjAwNiAyODUuODg1KSIsOTUwOiJva2xjaCgxNC4xJSAwLjAwNSAyODUuODIzKSJ9LG5ldXRyYWw6ezUwOiJva2xjaCg5OC41JSAwIDApIiwxMDA6Im9rbGNoKDk3JSAwIDApIiwyMDA6Im9rbGNoKDkyLjIlIDAgMCkiLDMwMDoib2tsY2goODclIDAgMCkiLDQwMDoib2tsY2goNzAuOCUgMCAwKSIsNTAwOiJva2xjaCg1NS42JSAwIDApIiw2MDA6Im9rbGNoKDQzLjklIDAgMCkiLDcwMDoib2tsY2goMzcuMSUgMCAwKSIsODAwOiJva2xjaCgyNi45JSAwIDApIiw5MDA6Im9rbGNoKDIwLjUlIDAgMCkiLDk1MDoib2tsY2goMTQuNSUgMCAwKSJ9LHN0b25lOns1MDoib2tsY2goOTguNSUgMC4wMDEgMTA2LjQyMykiLDEwMDoib2tsY2goOTclIDAuMDAxIDEwNi40MjQpIiwyMDA6Im9rbGNoKDkyLjMlIDAuMDAzIDQ4LjcxNykiLDMwMDoib2tsY2goODYuOSUgMC4wMDUgNTYuMzY2KSIsNDAwOiJva2xjaCg3MC45JSAwLjAxIDU2LjI1OSkiLDUwMDoib2tsY2goNTUuMyUgMC4wMTMgNTguMDcxKSIsNjAwOiJva2xjaCg0NC40JSAwLjAxMSA3My42MzkpIiw3MDA6Im9rbGNoKDM3LjQlIDAuMDEgNjcuNTU4KSIsODAwOiJva2xjaCgyNi44JSAwLjAwNyAzNC4yOTgpIiw5MDA6Im9rbGNoKDIxLjYlIDAuMDA2IDU2LjA0MykiLDk1MDoib2tsY2goMTQuNyUgMC4wMDQgNDkuMjUpIn0sbWF1dmU6ezUwOiJva2xjaCg5OC41JSAwIDApIiwxMDA6Im9rbGNoKDk2JSAwLjAwMyAzMjUuNikiLDIwMDoib2tsY2goOTIuMiUgMC4wMDUgMzI1LjYyKSIsMzAwOiJva2xjaCg4Ni41JSAwLjAxMiAzMjUuNjgpIiw0MDA6Im9rbGNoKDcxLjElIDAuMDE5IDMyMy4wMikiLDUwMDoib2tsY2goNTQuMiUgMC4wMzQgMzIyLjUpIiw2MDA6Im9rbGNoKDQzLjUlIDAuMDI5IDMyMS43OCkiLDcwMDoib2tsY2goMzYuNCUgMC4wMjkgMzIzLjg5KSIsODAwOiJva2xjaCgyNi4zJSAwLjAyNCAzMjAuMTIpIiw5MDA6Im9rbGNoKDIxLjIlIDAuMDE5IDMyMi4xMikiLDk1MDoib2tsY2goMTQuNSUgMC4wMDggMzI2KSJ9LG9saXZlOns1MDoib2tsY2goOTguOCUgMC4wMDMgMTA2LjUpIiwxMDA6Im9rbGNoKDk2LjYlIDAuMDA1IDEwNi41KSIsMjAwOiJva2xjaCg5MyUgMC4wMDcgMTA2LjUpIiwzMDA6Im9rbGNoKDg4JSAwLjAxMSAxMDYuNikiLDQwMDoib2tsY2goNzMuNyUgMC4wMjEgMTA2LjkpIiw1MDA6Im9rbGNoKDU4JSAwLjAzMSAxMDcuMykiLDYwMDoib2tsY2goNDYuNiUgMC4wMjUgMTA3LjMpIiw3MDA6Im9rbGNoKDM5LjQlIDAuMDIzIDEwNy40KSIsODAwOiJva2xjaCgyOC42JSAwLjAxNiAxMDcuNCkiLDkwMDoib2tsY2goMjIuOCUgMC4wMTMgMTA3LjQpIiw5NTA6Im9rbGNoKDE1LjMlIDAuMDA2IDEwNy4xKSJ9LG1pc3Q6ezUwOiJva2xjaCg5OC43JSAwLjAwMiAxOTcuMSkiLDEwMDoib2tsY2goOTYuMyUgMC4wMDIgMTk3LjEpIiwyMDA6Im9rbGNoKDkyLjUlIDAuMDA1IDIxNC4zKSIsMzAwOiJva2xjaCg4Ny4yJSAwLjAwNyAyMTkuNikiLDQwMDoib2tsY2goNzIuMyUgMC4wMTQgMjE0LjQpIiw1MDA6Im9rbGNoKDU2JSAwLjAyMSAyMTMuNSkiLDYwMDoib2tsY2goNDUlIDAuMDE3IDIxMy4yKSIsNzAwOiJva2xjaCgzNy44JSAwLjAxNSAyMTYpIiw4MDA6Im9rbGNoKDI3LjUlIDAuMDExIDIxNi45KSIsOTAwOiJva2xjaCgyMS44JSAwLjAwOCAyMjMuOSkiLDk1MDoib2tsY2goMTQuOCUgMC4wMDQgMjI4LjgpIn0sdGF1cGU6ezUwOiJva2xjaCg5OC42JSAwLjAwMiA2Ny44KSIsMTAwOiJva2xjaCg5NiUgMC4wMDIgMTcuMikiLDIwMDoib2tsY2goOTIuMiUgMC4wMDUgMzQuMykiLDMwMDoib2tsY2goODYuOCUgMC4wMDcgMzkuNSkiLDQwMDoib2tsY2goNzEuNCUgMC4wMTQgNDEuMikiLDUwMDoib2tsY2goNTQuNyUgMC4wMjEgNDMuMSkiLDYwMDoib2tsY2goNDMuOCUgMC4wMTcgMzkuMykiLDcwMDoib2tsY2goMzYuNyUgMC4wMTYgMzUuNykiLDgwMDoib2tsY2goMjYuOCUgMC4wMTEgMzYuNSkiLDkwMDoib2tsY2goMjEuNCUgMC4wMDkgNDMuMSkiLDk1MDoib2tsY2goMTQuNyUgMC4wMDQgNDkuMykifSxyZWQ6ezUwOiJva2xjaCg5Ny4xJSAwLjAxMyAxNy4zOCkiLDEwMDoib2tsY2goOTMuNiUgMC4wMzIgMTcuNzE3KSIsMjAwOiJva2xjaCg4OC41JSAwLjA2MiAxOC4zMzQpIiwzMDA6Im9rbGNoKDgwLjglIDAuMTE0IDE5LjU3MSkiLDQwMDoib2tsY2goNzAuNCUgMC4xOTEgMjIuMjE2KSIsNTAwOiJva2xjaCg2My43JSAwLjIzNyAyNS4zMzEpIiw2MDA6Im9rbGNoKDU3LjclIDAuMjQ1IDI3LjMyNSkiLDcwMDoib2tsY2goNTAuNSUgMC4yMTMgMjcuNTE4KSIsODAwOiJva2xjaCg0NC40JSAwLjE3NyAyNi44OTkpIiw5MDA6Im9rbGNoKDM5LjYlIDAuMTQxIDI1LjcyMykiLDk1MDoib2tsY2goMjUuOCUgMC4wOTIgMjYuMDQyKSJ9LG9yYW5nZTp7NTA6Im9rbGNoKDk4JSAwLjAxNiA3My42ODQpIiwxMDA6Im9rbGNoKDk1LjQlIDAuMDM4IDc1LjE2NCkiLDIwMDoib2tsY2goOTAuMSUgMC4wNzYgNzAuNjk3KSIsMzAwOiJva2xjaCg4My43JSAwLjEyOCA2Ni4yOSkiLDQwMDoib2tsY2goNzUlIDAuMTgzIDU1LjkzNCkiLDUwMDoib2tsY2goNzAuNSUgMC4yMTMgNDcuNjA0KSIsNjAwOiJva2xjaCg2NC42JSAwLjIyMiA0MS4xMTYpIiw3MDA6Im9rbGNoKDU1LjMlIDAuMTk1IDM4LjQwMikiLDgwMDoib2tsY2goNDclIDAuMTU3IDM3LjMwNCkiLDkwMDoib2tsY2goNDAuOCUgMC4xMjMgMzguMTcyKSIsOTUwOiJva2xjaCgyNi42JSAwLjA3OSAzNi4yNTkpIn0sYW1iZXI6ezUwOiJva2xjaCg5OC43JSAwLjAyMiA5NS4yNzcpIiwxMDA6Im9rbGNoKDk2LjIlIDAuMDU5IDk1LjYxNykiLDIwMDoib2tsY2goOTIuNCUgMC4xMiA5NS43NDYpIiwzMDA6Im9rbGNoKDg3LjklIDAuMTY5IDkxLjYwNSkiLDQwMDoib2tsY2goODIuOCUgMC4xODkgODQuNDI5KSIsNTAwOiJva2xjaCg3Ni45JSAwLjE4OCA3MC4wOCkiLDYwMDoib2tsY2goNjYuNiUgMC4xNzkgNTguMzE4KSIsNzAwOiJva2xjaCg1NS41JSAwLjE2MyA0OC45OTgpIiw4MDA6Im9rbGNoKDQ3LjMlIDAuMTM3IDQ2LjIwMSkiLDkwMDoib2tsY2goNDEuNCUgMC4xMTIgNDUuOTA0KSIsOTUwOiJva2xjaCgyNy45JSAwLjA3NyA0NS42MzUpIn0seWVsbG93Ons1MDoib2tsY2goOTguNyUgMC4wMjYgMTAyLjIxMikiLDEwMDoib2tsY2goOTcuMyUgMC4wNzEgMTAzLjE5MykiLDIwMDoib2tsY2goOTQuNSUgMC4xMjkgMTAxLjU0KSIsMzAwOiJva2xjaCg5MC41JSAwLjE4MiA5OC4xMTEpIiw0MDA6Im9rbGNoKDg1LjIlIDAuMTk5IDkxLjkzNikiLDUwMDoib2tsY2goNzkuNSUgMC4xODQgODYuMDQ3KSIsNjAwOiJva2xjaCg2OC4xJSAwLjE2MiA3NS44MzQpIiw3MDA6Im9rbGNoKDU1LjQlIDAuMTM1IDY2LjQ0MikiLDgwMDoib2tsY2goNDcuNiUgMC4xMTQgNjEuOTA3KSIsOTAwOiJva2xjaCg0Mi4xJSAwLjA5NSA1Ny43MDgpIiw5NTA6Im9rbGNoKDI4LjYlIDAuMDY2IDUzLjgxMykifSxsaW1lOns1MDoib2tsY2goOTguNiUgMC4wMzEgMTIwLjc1NykiLDEwMDoib2tsY2goOTYuNyUgMC4wNjcgMTIyLjMyOCkiLDIwMDoib2tsY2goOTMuOCUgMC4xMjcgMTI0LjMyMSkiLDMwMDoib2tsY2goODkuNyUgMC4xOTYgMTI2LjY2NSkiLDQwMDoib2tsY2goODQuMSUgMC4yMzggMTI4Ljg1KSIsNTAwOiJva2xjaCg3Ni44JSAwLjIzMyAxMzAuODUpIiw2MDA6Im9rbGNoKDY0LjglIDAuMiAxMzEuNjg0KSIsNzAwOiJva2xjaCg1My4yJSAwLjE1NyAxMzEuNTg5KSIsODAwOiJva2xjaCg0NS4zJSAwLjEyNCAxMzAuOTMzKSIsOTAwOiJva2xjaCg0MC41JSAwLjEwMSAxMzEuMDYzKSIsOTUwOiJva2xjaCgyNy40JSAwLjA3MiAxMzIuMTA5KSJ9LGdyZWVuOns1MDoib2tsY2goOTguMiUgMC4wMTggMTU1LjgyNikiLDEwMDoib2tsY2goOTYuMiUgMC4wNDQgMTU2Ljc0MykiLDIwMDoib2tsY2goOTIuNSUgMC4wODQgMTU1Ljk5NSkiLDMwMDoib2tsY2goODcuMSUgMC4xNSAxNTQuNDQ5KSIsNDAwOiJva2xjaCg3OS4yJSAwLjIwOSAxNTEuNzExKSIsNTAwOiJva2xjaCg3Mi4zJSAwLjIxOSAxNDkuNTc5KSIsNjAwOiJva2xjaCg2Mi43JSAwLjE5NCAxNDkuMjE0KSIsNzAwOiJva2xjaCg1Mi43JSAwLjE1NCAxNTAuMDY5KSIsODAwOiJva2xjaCg0NC44JSAwLjExOSAxNTEuMzI4KSIsOTAwOiJva2xjaCgzOS4zJSAwLjA5NSAxNTIuNTM1KSIsOTUwOiJva2xjaCgyNi42JSAwLjA2NSAxNTIuOTM0KSJ9LGVtZXJhbGQ6ezUwOiJva2xjaCg5Ny45JSAwLjAyMSAxNjYuMTEzKSIsMTAwOiJva2xjaCg5NSUgMC4wNTIgMTYzLjA1MSkiLDIwMDoib2tsY2goOTAuNSUgMC4wOTMgMTY0LjE1KSIsMzAwOiJva2xjaCg4NC41JSAwLjE0MyAxNjQuOTc4KSIsNDAwOiJva2xjaCg3Ni41JSAwLjE3NyAxNjMuMjIzKSIsNTAwOiJva2xjaCg2OS42JSAwLjE3IDE2Mi40OCkiLDYwMDoib2tsY2goNTkuNiUgMC4xNDUgMTYzLjIyNSkiLDcwMDoib2tsY2goNTAuOCUgMC4xMTggMTY1LjYxMikiLDgwMDoib2tsY2goNDMuMiUgMC4wOTUgMTY2LjkxMykiLDkwMDoib2tsY2goMzcuOCUgMC4wNzcgMTY4Ljk0KSIsOTUwOiJva2xjaCgyNi4yJSAwLjA1MSAxNzIuNTUyKSJ9LHRlYWw6ezUwOiJva2xjaCg5OC40JSAwLjAxNCAxODAuNzIpIiwxMDA6Im9rbGNoKDk1LjMlIDAuMDUxIDE4MC44MDEpIiwyMDA6Im9rbGNoKDkxJSAwLjA5NiAxODAuNDI2KSIsMzAwOiJva2xjaCg4NS41JSAwLjEzOCAxODEuMDcxKSIsNDAwOiJva2xjaCg3Ny43JSAwLjE1MiAxODEuOTEyKSIsNTAwOiJva2xjaCg3MC40JSAwLjE0IDE4Mi41MDMpIiw2MDA6Im9rbGNoKDYwJSAwLjExOCAxODQuNzA0KSIsNzAwOiJva2xjaCg1MS4xJSAwLjA5NiAxODYuMzkxKSIsODAwOiJva2xjaCg0My43JSAwLjA3OCAxODguMjE2KSIsOTAwOiJva2xjaCgzOC42JSAwLjA2MyAxODguNDE2KSIsOTUwOiJva2xjaCgyNy43JSAwLjA0NiAxOTIuNTI0KSJ9LGN5YW46ezUwOiJva2xjaCg5OC40JSAwLjAxOSAyMDAuODczKSIsMTAwOiJva2xjaCg5NS42JSAwLjA0NSAyMDMuMzg4KSIsMjAwOiJva2xjaCg5MS43JSAwLjA4IDIwNS4wNDEpIiwzMDA6Im9rbGNoKDg2LjUlIDAuMTI3IDIwNy4wNzgpIiw0MDA6Im9rbGNoKDc4LjklIDAuMTU0IDIxMS41MykiLDUwMDoib2tsY2goNzEuNSUgMC4xNDMgMjE1LjIyMSkiLDYwMDoib2tsY2goNjAuOSUgMC4xMjYgMjIxLjcyMykiLDcwMDoib2tsY2goNTIlIDAuMTA1IDIyMy4xMjgpIiw4MDA6Im9rbGNoKDQ1JSAwLjA4NSAyMjQuMjgzKSIsOTAwOiJva2xjaCgzOS44JSAwLjA3IDIyNy4zOTIpIiw5NTA6Im9rbGNoKDMwLjIlIDAuMDU2IDIyOS42OTUpIn0sc2t5Ons1MDoib2tsY2goOTcuNyUgMC4wMTMgMjM2LjYyKSIsMTAwOiJva2xjaCg5NS4xJSAwLjAyNiAyMzYuODI0KSIsMjAwOiJva2xjaCg5MC4xJSAwLjA1OCAyMzAuOTAyKSIsMzAwOiJva2xjaCg4Mi44JSAwLjExMSAyMzAuMzE4KSIsNDAwOiJva2xjaCg3NC42JSAwLjE2IDIzMi42NjEpIiw1MDA6Im9rbGNoKDY4LjUlIDAuMTY5IDIzNy4zMjMpIiw2MDA6Im9rbGNoKDU4LjglIDAuMTU4IDI0MS45NjYpIiw3MDA6Im9rbGNoKDUwJSAwLjEzNCAyNDIuNzQ5KSIsODAwOiJva2xjaCg0NC4zJSAwLjExIDI0MC43OSkiLDkwMDoib2tsY2goMzkuMSUgMC4wOSAyNDAuODc2KSIsOTUwOiJva2xjaCgyOS4zJSAwLjA2NiAyNDMuMTU3KSJ9LGJsdWU6ezUwOiJva2xjaCg5NyUgMC4wMTQgMjU0LjYwNCkiLDEwMDoib2tsY2goOTMuMiUgMC4wMzIgMjU1LjU4NSkiLDIwMDoib2tsY2goODguMiUgMC4wNTkgMjU0LjEyOCkiLDMwMDoib2tsY2goODAuOSUgMC4xMDUgMjUxLjgxMykiLDQwMDoib2tsY2goNzAuNyUgMC4xNjUgMjU0LjYyNCkiLDUwMDoib2tsY2goNjIuMyUgMC4yMTQgMjU5LjgxNSkiLDYwMDoib2tsY2goNTQuNiUgMC4yNDUgMjYyLjg4MSkiLDcwMDoib2tsY2goNDguOCUgMC4yNDMgMjY0LjM3NikiLDgwMDoib2tsY2goNDIuNCUgMC4xOTkgMjY1LjYzOCkiLDkwMDoib2tsY2goMzcuOSUgMC4xNDYgMjY1LjUyMikiLDk1MDoib2tsY2goMjguMiUgMC4wOTEgMjY3LjkzNSkifSxpbmRpZ286ezUwOiJva2xjaCg5Ni4yJSAwLjAxOCAyNzIuMzE0KSIsMTAwOiJva2xjaCg5MyUgMC4wMzQgMjcyLjc4OCkiLDIwMDoib2tsY2goODclIDAuMDY1IDI3NC4wMzkpIiwzMDA6Im9rbGNoKDc4LjUlIDAuMTE1IDI3NC43MTMpIiw0MDA6Im9rbGNoKDY3LjMlIDAuMTgyIDI3Ni45MzUpIiw1MDA6Im9rbGNoKDU4LjUlIDAuMjMzIDI3Ny4xMTcpIiw2MDA6Im9rbGNoKDUxLjElIDAuMjYyIDI3Ni45NjYpIiw3MDA6Im9rbGNoKDQ1LjclIDAuMjQgMjc3LjAyMykiLDgwMDoib2tsY2goMzkuOCUgMC4xOTUgMjc3LjM2NikiLDkwMDoib2tsY2goMzUuOSUgMC4xNDQgMjc4LjY5NykiLDk1MDoib2tsY2goMjUuNyUgMC4wOSAyODEuMjg4KSJ9LHZpb2xldDp7NTA6Im9rbGNoKDk2LjklIDAuMDE2IDI5My43NTYpIiwxMDA6Im9rbGNoKDk0LjMlIDAuMDI5IDI5NC41ODgpIiwyMDA6Im9rbGNoKDg5LjQlIDAuMDU3IDI5My4yODMpIiwzMDA6Im9rbGNoKDgxLjElIDAuMTExIDI5My41NzEpIiw0MDA6Im9rbGNoKDcwLjIlIDAuMTgzIDI5My41NDEpIiw1MDA6Im9rbGNoKDYwLjYlIDAuMjUgMjkyLjcxNykiLDYwMDoib2tsY2goNTQuMSUgMC4yODEgMjkzLjAwOSkiLDcwMDoib2tsY2goNDkuMSUgMC4yNyAyOTIuNTgxKSIsODAwOiJva2xjaCg0My4yJSAwLjIzMiAyOTIuNzU5KSIsOTAwOiJva2xjaCgzOCUgMC4xODkgMjkzLjc0NSkiLDk1MDoib2tsY2goMjguMyUgMC4xNDEgMjkxLjA4OSkifSxwdXJwbGU6ezUwOiJva2xjaCg5Ny43JSAwLjAxNCAzMDguMjk5KSIsMTAwOiJva2xjaCg5NC42JSAwLjAzMyAzMDcuMTc0KSIsMjAwOiJva2xjaCg5MC4yJSAwLjA2MyAzMDYuNzAzKSIsMzAwOiJva2xjaCg4Mi43JSAwLjExOSAzMDYuMzgzKSIsNDAwOiJva2xjaCg3MS40JSAwLjIwMyAzMDUuNTA0KSIsNTAwOiJva2xjaCg2Mi43JSAwLjI2NSAzMDMuOSkiLDYwMDoib2tsY2goNTUuOCUgMC4yODggMzAyLjMyMSkiLDcwMDoib2tsY2goNDkuNiUgMC4yNjUgMzAxLjkyNCkiLDgwMDoib2tsY2goNDMuOCUgMC4yMTggMzAzLjcyNCkiLDkwMDoib2tsY2goMzguMSUgMC4xNzYgMzA0Ljk4NykiLDk1MDoib2tsY2goMjkuMSUgMC4xNDkgMzAyLjcxNykifSxmdWNoc2lhOns1MDoib2tsY2goOTcuNyUgMC4wMTcgMzIwLjA1OCkiLDEwMDoib2tsY2goOTUuMiUgMC4wMzcgMzE4Ljg1MikiLDIwMDoib2tsY2goOTAuMyUgMC4wNzYgMzE5LjYyKSIsMzAwOiJva2xjaCg4My4zJSAwLjE0NSAzMjEuNDM0KSIsNDAwOiJva2xjaCg3NCUgMC4yMzggMzIyLjE2KSIsNTAwOiJva2xjaCg2Ni43JSAwLjI5NSAzMjIuMTUpIiw2MDA6Im9rbGNoKDU5LjElIDAuMjkzIDMyMi44OTYpIiw3MDA6Im9rbGNoKDUxLjglIDAuMjUzIDMyMy45NDkpIiw4MDA6Im9rbGNoKDQ1LjIlIDAuMjExIDMyNC41OTEpIiw5MDA6Im9rbGNoKDQwLjElIDAuMTcgMzI1LjYxMikiLDk1MDoib2tsY2goMjkuMyUgMC4xMzYgMzI1LjY2MSkifSxwaW5rOns1MDoib2tsY2goOTcuMSUgMC4wMTQgMzQzLjE5OCkiLDEwMDoib2tsY2goOTQuOCUgMC4wMjggMzQyLjI1OCkiLDIwMDoib2tsY2goODkuOSUgMC4wNjEgMzQzLjIzMSkiLDMwMDoib2tsY2goODIuMyUgMC4xMiAzNDYuMDE4KSIsNDAwOiJva2xjaCg3MS44JSAwLjIwMiAzNDkuNzYxKSIsNTAwOiJva2xjaCg2NS42JSAwLjI0MSAzNTQuMzA4KSIsNjAwOiJva2xjaCg1OS4yJSAwLjI0OSAwLjU4NCkiLDcwMDoib2tsY2goNTIuNSUgMC4yMjMgMy45NTgpIiw4MDA6Im9rbGNoKDQ1LjklIDAuMTg3IDMuODE1KSIsOTAwOiJva2xjaCg0MC44JSAwLjE1MyAyLjQzMikiLDk1MDoib2tsY2goMjguNCUgMC4xMDkgMy45MDcpIn0scm9zZTp7NTA6Im9rbGNoKDk2LjklIDAuMDE1IDEyLjQyMikiLDEwMDoib2tsY2goOTQuMSUgMC4wMyAxMi41OCkiLDIwMDoib2tsY2goODkuMiUgMC4wNTggMTAuMDAxKSIsMzAwOiJva2xjaCg4MSUgMC4xMTcgMTEuNjM4KSIsNDAwOiJva2xjaCg3MS4yJSAwLjE5NCAxMy40MjgpIiw1MDA6Im9rbGNoKDY0LjUlIDAuMjQ2IDE2LjQzOSkiLDYwMDoib2tsY2goNTguNiUgMC4yNTMgMTcuNTg1KSIsNzAwOiJva2xjaCg1MS40JSAwLjIyMiAxNi45MzUpIiw4MDA6Im9rbGNoKDQ1LjUlIDAuMTg4IDEzLjY5NykiLDkwMDoib2tsY2goNDElIDAuMTU5IDEwLjI3MikiLDk1MDoib2tsY2goMjcuMSUgMC4xMDUgMTIuMDk0KSJ9fTtjbGFzcyB0e2NvbnN0cnVjdG9yKGUsYyl7dGhpcy5vcGVyYXRvcj1lLHRoaXMudmFsdWU9YyxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidCIse3dyaXRhYmxlOiEwfSl9Z2V0IG5vdGVzKCl7cmV0dXJuIHRoaXMudH1hZGROb3RlKGUpe3RoaXMudD10aGlzLnR8fFtdLHRoaXMudC5wdXNoKGUpfX1sZXQgVW89Y2xhc3MgZXh0ZW5kcyB0e307Y2xhc3MgciBleHRlbmRzIFVve2NvbnN0cnVjdG9yKGUsYyl7aWYoIUFycmF5LmlzQXJyYXkoYykpdGhyb3cgbmV3IEVycm9yKGAiJHtlfSIgb3BlcmF0b3IgZXhwZWN0cyB0byByZWNlaXZlIGFuIGFycmF5IG9mIGNvbmRpdGlvbnNgKTtzdXBlcihlLGMpfX1jb25zdCBIbz0iX19pdHNlbGZfXyI7bGV0IEdvPWNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvcihlLGMsZCl7c3VwZXIoZSxkKSx0aGlzLmZpZWxkPWN9fTtjb25zdCBXbz1uZXcgVW8oIl9fbnVsbF9fIixudWxsKSxYbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtmdW5jdGlvbiBjJDMoZSxjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIHImJmMub3BlcmF0b3I9PT1lfWZ1bmN0aW9uIHUkMihlLGMpe3JldHVybiAxPT09Yy5sZW5ndGg/Y1swXTpuZXcgcihlLGZ1bmN0aW9uIHQoZSxjLGQpe2NvbnN0IGg9ZHx8W107Zm9yKGxldCBkPTAsdj1jLmxlbmd0aDtkPHY7ZCsrKXtjb25zdCB2PWNbZF07YyQzKGUsdik/dChlLHYudmFsdWUsaCk6aC5wdXNoKHYpfXJldHVybiBofShlLGMpKX1jb25zdCBhPWU9PmUsaCQyPSgpPT5PYmplY3QuY3JlYXRlKG51bGwpLEtvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShoJDIoKSwiX19AdHlwZUBfXyIse3ZhbHVlOiJpZ25vcmUgdmFsdWUifSk7ZnVuY3Rpb24gZCQyKGUpe2NvbnN0IGM9W107Zm9yKGNvbnN0IGQgaW4gZSlYbyhlLGQpJiZlW2RdIT09S28mJmMucHVzaChkKTtyZXR1cm4gY31mdW5jdGlvbiBwJDMoZSxjKXtjIT09V28mJmUucHVzaChjKX1jb25zdCB3JDI9ZT0+dSQyKCJhbmQiLGUpLEpvPXtjb21wb3VuZChlLGMsZCl7Y29uc3QgaD0oQXJyYXkuaXNBcnJheShjKT9jOltjXSkubWFwKGU9PmQucGFyc2UoZSkpO3JldHVybiBuZXcgcihlLm5hbWUsaCl9LGZpZWxkOihlLGMsZCk9Pm5ldyBHbyhlLm5hbWUsZC5maWVsZCxjKSxkb2N1bWVudDooZSxjKT0+bmV3IFVvKGUubmFtZSxjKX07bGV0IFFvPWNsYXNze2NvbnN0cnVjdG9yKGUsYz1oJDIoKSl7dGhpcy5vPXZvaWQgMCx0aGlzLnM9dm9pZCAwLHRoaXMuaT12b2lkIDAsdGhpcy51PXZvaWQgMCx0aGlzLmg9dm9pZCAwLHRoaXMucGFyc2U9dGhpcy5wYXJzZS5iaW5kKHRoaXMpLHRoaXMudT17b3BlcmF0b3JUb0NvbmRpdGlvbk5hbWU6Yy5vcGVyYXRvclRvQ29uZGl0aW9uTmFtZXx8YSxkZWZhdWx0T3BlcmF0b3JOYW1lOmMuZGVmYXVsdE9wZXJhdG9yTmFtZXx8ImVxIixtZXJnZUZpbmFsQ29uZGl0aW9uczpjLm1lcmdlRmluYWxDb25kaXRpb25zfHx3JDJ9LHRoaXMubz1PYmplY3Qua2V5cyhlKS5yZWR1Y2UoKGMsZCk9PihjW2RdPU9iamVjdC5hc3NpZ24oe25hbWU6dGhpcy51Lm9wZXJhdG9yVG9Db25kaXRpb25OYW1lKGQpfSxlW2RdKSxjKSx7fSksdGhpcy5zPU9iamVjdC5hc3NpZ24oe30sYy5maWVsZENvbnRleHQse2ZpZWxkOiIiLHF1ZXJ5Ont9LHBhcnNlOnRoaXMucGFyc2UsaGFzT3BlcmF0b3JzOmU9PmZ1bmN0aW9uKGUsYyxkPSExKXtpZighZXx8ZSYmZS5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4hMTtmb3IoY29uc3QgaCBpbiBlKWlmKFhvKGUsaCkmJlhvKGMsaCkmJighZHx8ZVtoXSE9PUtvKSlyZXR1cm4hMDtyZXR1cm4hMX0oZSx0aGlzLm8sYy51c2VJZ25vcmVWYWx1ZSl9KSx0aGlzLmk9T2JqZWN0LmFzc2lnbih7fSxjLmRvY3VtZW50Q29udGV4dCx7cGFyc2U6dGhpcy5wYXJzZSxxdWVyeTp7fX0pLHRoaXMuaD1jLnVzZUlnbm9yZVZhbHVlP2QkMjpPYmplY3Qua2V5c31zZXRQYXJzZShlKXt0aGlzLnBhcnNlPWUsdGhpcy5zLnBhcnNlPWUsdGhpcy5pLnBhcnNlPWV9cGFyc2VGaWVsZChlLGMsZCxoKXtjb25zdCB2PXRoaXMub1tjXTtpZighdil0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG9wZXJhdG9yICIke2N9ImApO2lmKCJmaWVsZCIhPT12LnR5cGUpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkICR7di50eXBlfSBvcGVyYXRvciAiJHtjfSIgYXQgZmllbGQgbGV2ZWxgKTtyZXR1cm4gdGhpcy5zLmZpZWxkPWUsdGhpcy5zLnF1ZXJ5PWgsdGhpcy5wYXJzZUluc3RydWN0aW9uKHYsZCx0aGlzLnMpfXBhcnNlSW5zdHJ1Y3Rpb24oZSxjLGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnZhbGlkYXRlJiZlLnZhbGlkYXRlKGUsYyksKGUucGFyc2V8fEpvW2UudHlwZV0pKGUsYyxkKX1wYXJzZUZpZWxkT3BlcmF0b3JzKGUsYyl7Y29uc3QgZD1bXSxoPXRoaXMuaChjKTtmb3IobGV0IHY9MCxiPWgubGVuZ3RoO3Y8Yjt2Kyspe2NvbnN0IGI9aFt2XTtpZighdGhpcy5vW2JdKXRocm93IG5ldyBFcnJvcihgRmllbGQgcXVlcnkgZm9yICIke2V9IiBtYXkgY29udGFpbiBvbmx5IG9wZXJhdG9ycyBvciBhIHBsYWluIG9iamVjdCBhcyBhIHZhbHVlYCk7cCQzKGQsdGhpcy5wYXJzZUZpZWxkKGUsYixjW2JdLGMpKX1yZXR1cm4gZH1wYXJzZShlKXtjb25zdCBjPVtdLGQ9dGhpcy5oKGUpO3RoaXMuaS5xdWVyeT1lO2ZvcihsZXQgaD0wLHY9ZC5sZW5ndGg7aDx2O2grKyl7Y29uc3Qgdj1kW2hdLGI9ZVt2XSx5PXRoaXMub1t2XTtpZih5KXtpZigiZG9jdW1lbnQiIT09eS50eXBlJiYiY29tcG91bmQiIT09eS50eXBlKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVzZSBwYXJzaW5nIGluc3RydWN0aW9uIGZvciBvcGVyYXRvciAiJHt2fSIgaW4gImRvY3VtZW50IiBjb250ZXh0IGFzIGl0IGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gICIke3kudHlwZX0iIGNvbnRleHRgKTtwJDMoYyx0aGlzLnBhcnNlSW5zdHJ1Y3Rpb24oeSxiLHRoaXMuaSkpfWVsc2UgdGhpcy5zLmhhc09wZXJhdG9ycyhiKT9jLnB1c2goLi4udGhpcy5wYXJzZUZpZWxkT3BlcmF0b3JzKHYsYikpOnAkMyhjLHRoaXMucGFyc2VGaWVsZCh2LHRoaXMudS5kZWZhdWx0T3BlcmF0b3JOYW1lLGIsZSkpfXJldHVybiB0aGlzLnUubWVyZ2VGaW5hbENvbmRpdGlvbnMoYyl9fTtmdW5jdGlvbiBfJDIoZSxjKXtjb25zdCBkPWVbY107aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gaW50ZXJwcmV0ICIke2N9IiBjb25kaXRpb24uIERpZCB5b3UgZm9yZ2V0IHRvIHJlZ2lzdGVyIGludGVycHJldGVyIGZvciBpdD9gKTtyZXR1cm4gZH1mdW5jdGlvbiB5JDIoZSl7cmV0dXJuIGUub3BlcmF0b3J9ZnVuY3Rpb24gcyQxKGUsYyl7aWYoIUFycmF5LmlzQXJyYXkoYykpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIHZhbHVlIHRvIGJlIGFuIGFycmF5YCl9ZnVuY3Rpb24gcCQyKGUsYyl7aWYocyQxKGUsYyksIWMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB0byBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIGFycmF5YCl9Y29uc3QgbCQyPWU9PihjLGQpPT57aWYodHlwZW9mIGQhPT1lKXRocm93IG5ldyBFcnJvcihgIiR7Yy5uYW1lfSIgZXhwZWN0cyB2YWx1ZSB0byBiZSBhICIke2V9ImApfSxZbz17dHlwZToiY29tcG91bmQiLHZhbGlkYXRlOnAkMixwYXJzZShlLGMse3BhcnNlOmR9KXtjb25zdCBoPWMubWFwKGU9PmQoZSkpO3JldHVybiB1JDIoZS5uYW1lLGgpfX0sWm89WW8sZXI9e3R5cGU6ImNvbXBvdW5kIix2YWxpZGF0ZTpwJDJ9LHRyPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGUoZSxjKXtpZighY3x8IShjIGluc3RhbmNlb2YgUmVnRXhwfHxjLmNvbnN0cnVjdG9yPT09T2JqZWN0KSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdG8gcmVjZWl2ZSBlaXRoZXIgcmVndWxhciBleHByZXNzaW9uIG9yIG9iamVjdCBvZiBmaWVsZCBvcGVyYXRvcnNgKX0scGFyc2UoZSxjLGQpe2NvbnN0IGg9YyBpbnN0YW5jZW9mIFJlZ0V4cD9uZXcgR28oInJlZ2V4IixkLmZpZWxkLGMpOmQucGFyc2UoYyxkKTtyZXR1cm4gbmV3IHIoZS5uYW1lLFtoXSl9fSxucj17dHlwZToiZmllbGQiLHZhbGlkYXRlKGUsYyl7aWYoIWN8fGMuY29uc3RydWN0b3IhPT1PYmplY3QpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIHRvIHJlY2VpdmUgYW4gb2JqZWN0IHdpdGggbmVzdGVkIHF1ZXJ5IG9yIGZpZWxkIGxldmVsIG9wZXJhdG9yc2ApfSxwYXJzZShlLGMse3BhcnNlOmQsZmllbGQ6aCxoYXNPcGVyYXRvcnM6dn0pe2NvbnN0IGI9dihjKT9kKGMse2ZpZWxkOkhvfSk6ZChjKTtyZXR1cm4gbmV3IEdvKGUubmFtZSxoLGIpfX0sb3I9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZTpsJDIoIm51bWJlciIpfSxycj17dHlwZToiZmllbGQiLHZhbGlkYXRlOnMkMX0sYXI9cnIsaXI9cnIsc3I9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLGMpe2lmKCFBcnJheS5pc0FycmF5KGMpfHwyIT09Yy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIGFuIGFycmF5IHdpdGggMiBudW1lcmljIGVsZW1lbnRzYCl9fSxscj17dHlwZToiZmllbGQiLHZhbGlkYXRlOmwkMigiYm9vbGVhbiIpfSxjcj17dHlwZToiZmllbGQiLHZhbGlkYXRlOmZ1bmN0aW9uKGUsYyl7aWYoISgic3RyaW5nIj09dHlwZW9mIGN8fCJudW1iZXIiPT10eXBlb2YgY3x8YyBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB2YWx1ZSB0byBiZSBjb21wYXJhYmxlIChpLmUuLCBzdHJpbmcsIG51bWJlciBvciBkYXRlKWApfX0sdXI9Y3IsZHI9dXIscHI9dXIsZnI9e3R5cGU6ImZpZWxkIn0sbXI9ZnIsaHI9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLGMpe2lmKCEoYyBpbnN0YW5jZW9mIFJlZ0V4cCkmJiJzdHJpbmciIT10eXBlb2YgYyl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdmFsdWUgdG8gYmUgYSByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHJlZ3VsYXIgZXhwcmVzc2lvbmApfSxwYXJzZShlLGMsZCl7Y29uc3QgaD0ic3RyaW5nIj09dHlwZW9mIGM/bmV3IFJlZ0V4cChjLGQucXVlcnkuJG9wdGlvbnN8fCIiKTpjO3JldHVybiBuZXcgR28oZS5uYW1lLGQuZmllbGQsaCl9fSxncj17dHlwZToiZmllbGQiLHBhcnNlOigpPT5Xb30sdnI9e3R5cGU6ImRvY3VtZW50Iix2YWxpZGF0ZTpsJDIoImZ1bmN0aW9uIil9O3ZhciBicj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCwkYW5kOllvLCRvcjpabywkbm9yOmVyLCRub3Q6dHIsJGVsZW1NYXRjaDpuciwkc2l6ZTpvciwkaW46cnIsJG5pbjphciwkYWxsOmlyLCRtb2Q6c3IsJGV4aXN0czpsciwkZ3RlOmNyLCRndDp1ciwkbHQ6ZHIsJGx0ZTpwciwkZXE6ZnIsJG5lOm1yLCRyZWdleDpociwkb3B0aW9uczpnciwkd2hlcmU6dnJ9KTtjbGFzcyBQIGV4dGVuZHMgUW97Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7ZGVmYXVsdE9wZXJhdG9yTmFtZToiJGVxIixvcGVyYXRvclRvQ29uZGl0aW9uTmFtZTplPT5lLnNsaWNlKDEpfSl9cGFyc2UoZSxjKXtyZXR1cm4gYyYmYy5maWVsZD93JDIodGhpcy5wYXJzZUZpZWxkT3BlcmF0b3JzKGMuZmllbGQsZSkpOnN1cGVyLnBhcnNlKGUpfX1jb25zdCB5cj1icjtmdW5jdGlvbiBlJDEoZSxjLGQpe2ZvcihsZXQgaD0wLHY9ZS5sZW5ndGg7aDx2O2grKylpZigwPT09ZChlW2hdLGMpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG4oZSxjKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmTnVtYmVyLmlzTmFOKE51bWJlcihjKSl9ZnVuY3Rpb24gbyhlLGMsZCl7aWYoIW4oZSxjKSlyZXR1cm4gZChlLGMpO2xldCBoPVtdO2ZvcihsZXQgdj0wO3Y8ZS5sZW5ndGg7disrKXtjb25zdCBiPWQoZVt2XSxjKTt2b2lkIDAhPT1iJiYoaD1oLmNvbmNhdChiKSl9cmV0dXJuIGh9ZnVuY3Rpb24gdShlKXtyZXR1cm4oYyxkLGgpPT57Y29uc3Qgdj1oLmdldChkLGMuZmllbGQpO3JldHVybiBBcnJheS5pc0FycmF5KHYpP3Yuc29tZShkPT5lKGMsZCxoKSk6ZShjLHYsaCl9fWNvbnN0IHhyPU9iamVjdC5oYXNPd258fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLGkkMT0oZSxjKT0+ZVtjXTtmdW5jdGlvbiBmKGUsYyxkKXtjb25zdCBoPWMubGFzdEluZGV4T2YoIi4iKTtyZXR1cm4tMT09PWg/W2UsY106W2QoZSxjLnNsaWNlKDAsaCkpLGMuc2xpY2UoaCsxKV19ZnVuY3Rpb24gcyhlLGMsZD1pJDEpe2lmKGM9PT1IbylyZXR1cm4gZTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgZmllbGQgIiR7Y30iIG91dCBvZiAke1N0cmluZyhlKX0uYCk7cmV0dXJuIGZ1bmN0aW9uKGUsYyxkKXtpZigtMT09PWMuaW5kZXhPZigiLiIpKXJldHVybiBvKGUsYyxkKTtjb25zdCBoPWMuc3BsaXQoIi4iKTtsZXQgdj1lO2ZvcihsZXQgZT0wLGM9aC5sZW5ndGg7ZTxjO2UrKylpZih2PW8odixoW2VdLGQpLCF2fHwib2JqZWN0IiE9dHlwZW9mIHYpcmV0dXJuIGU8Yy0xP3ZvaWQgMDp2O3JldHVybiB2fShlLGMsZCl9ZnVuY3Rpb24gbCQxKGUsYyl7cmV0dXJuIGU9PT1jPzA6ZT5jPzE6LTF9ZnVuY3Rpb24gcCQxKGUsYz17fSl7cmV0dXJuIGZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1jLGg9ZCYmZC5nZXRJbnRlcnByZXRlck5hbWV8fHkkMjtsZXQgdjtzd2l0Y2goZD9kLm51bWJlck9mQXJndW1lbnRzOjApe2Nhc2UgMTp2PWM9Pntjb25zdCB2PWgoYyxkKTtyZXR1cm4gXyQyKGUsdikoYyxiKX07YnJlYWs7Y2FzZSAzOnY9KGMsdix5KT0+e2NvbnN0IEU9aChjLGQpO3JldHVybiBfJDIoZSxFKShjLHYseSxiKX07YnJlYWs7ZGVmYXVsdDp2PShjLHYpPT57Y29uc3QgeT1oKGMsZCk7cmV0dXJuIF8kMihlLHkpKGMsdixiKX19Y29uc3QgYj1PYmplY3QuYXNzaWduKHt9LGQse2ludGVycHJldDp2fSk7cmV0dXJuIGIuaW50ZXJwcmV0fShlLE9iamVjdC5hc3NpZ24oe2dldDpzLGNvbXBhcmU6bCQxfSxjKSl9Y29uc3QgZz0oZSxjLHtpbnRlcnByZXQ6ZH0pPT5lLnZhbHVlLnNvbWUoZT0+ZChlLGMpKSxtJDE9KGUsYyx7aW50ZXJwcmV0OmR9KT0+ZS52YWx1ZS5ldmVyeShlPT5kKGUsYykpLGo9KGUsYyx7Y29tcGFyZTpkLGdldDpofSk9Pntjb25zdCB2PWgoYyxlLmZpZWxkKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh2KSYmIUFycmF5LmlzQXJyYXkoZS52YWx1ZSk/ZSQxKHYsZS52YWx1ZSxkKTowPT09ZCh2LGUudmFsdWUpfSxBPShlLGMsZCk9PiFqKGUsYyxkKSxTcj11KChlLGMsZCk9Pntjb25zdCBoPWQuY29tcGFyZShjLGUudmFsdWUpO3JldHVybiAwPT09aHx8LTE9PT1ofSksRXI9dSgoZSxjLGQpPT4tMT09PWQuY29tcGFyZShjLGUudmFsdWUpKSx3cj11KChlLGMsZCk9PjE9PT1kLmNvbXBhcmUoYyxlLnZhbHVlKSksa3I9dSgoZSxjLGQpPT57Y29uc3QgaD1kLmNvbXBhcmUoYyxlLnZhbHVlKTtyZXR1cm4gMD09PWh8fDE9PT1ofSksdz0oZSxjLHtnZXQ6ZH0pPT57aWYoZS5maWVsZD09PUhvKXJldHVybiB2b2lkIDAhPT1jO2NvbnN0W2gsdl09ZihjLGUuZmllbGQsZCkscz1jPT5udWxsPT1jP0Jvb2xlYW4oYyk9PT1lLnZhbHVlOnhyKGMsdik9PT1lLnZhbHVlO3JldHVybiBuKGgsdik/aC5zb21lKHMpOnMoaCl9LENyPXUoKGUsYyk9PiJudW1iZXIiPT10eXBlb2YgYyYmYyVlLnZhbHVlWzBdPT09ZS52YWx1ZVsxXSkseD0oZSxjLHtnZXQ6ZH0pPT57Y29uc3RbaCx2XT1mKGMsZS5maWVsZCxkKSxpPWM9Pntjb25zdCBoPWQoYyx2KTtyZXR1cm4gQXJyYXkuaXNBcnJheShoKSYmaC5sZW5ndGg9PT1lLnZhbHVlfTtyZXR1cm4gZS5maWVsZCE9PUhvJiZuKGgsdik/aC5zb21lKGkpOmkoaCl9LF9yPXUoKGUsYyk9PiJzdHJpbmciPT10eXBlb2YgYyYmZS52YWx1ZS50ZXN0KGMpKSxUcj11KChlLGMse2NvbXBhcmU6ZH0pPT5lJDEoZS52YWx1ZSxjLGQpKSxxJDE9KGUsYyxkKT0+IVRyKGUsYyxkKSx6PShlLGMse2NvbXBhcmU6ZCxnZXQ6aH0pPT57Y29uc3Qgdj1oKGMsZS5maWVsZCk7cmV0dXJuIEFycmF5LmlzQXJyYXkodikmJmUudmFsdWUuZXZlcnkoZT0+ZSQxKHYsZSxkKSl9LEIkMT0oZSxjLHtpbnRlcnByZXQ6ZCxnZXQ6aH0pPT57Y29uc3Qgdj1oKGMsZS5maWVsZCk7cmV0dXJuIEFycmF5LmlzQXJyYXkodikmJnYuc29tZShjPT5kKGUudmFsdWUsYykpfTt2YXIgTnI9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsb3I6Zyxub3I6KGUsYyxkKT0+IWcoZSxjLGQpLGFuZDptJDEsbm90OihlLGMse2ludGVycHJldDpkfSk9PiFkKGUudmFsdWVbMF0sYyksZXE6aixuZTpBLGx0ZTpTcixsdDpFcixndDp3cixndGU6a3IsZXhpc3RzOncsbW9kOkNyLHNpemU6eCxyZWdleDpfcix3aXRoaW46VHIsbmluOnEkMSxhbGw6eixlbGVtTWF0Y2g6QiQxLHdoZXJlOihlLGMpPT5lLnZhbHVlLmNhbGwoYyl9KTtjb25zdCBBcj1PYmplY3QuYXNzaWduKHt9LE5yLHtpbjpUcn0pO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/ZTplIGluc3RhbmNlb2YgRGF0ZT9lLmdldFRpbWUoKTplJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50b0pTT04/ZS50b0pTT04oKTplfXAkMShBcik7Y29uc3QgbT0oZSxjKT0+bCQxKGkoZSksaShjKSk7ZnVuY3Rpb24gcChlLGMsZCl7Y29uc3QgaD1uZXcgUChlKSx2PXAkMShjLE9iamVjdC5hc3NpZ24oe2NvbXBhcmU6bX0sZCkpO2lmKGQmJmQuZm9yUHJpbWl0aXZlcyl7Y29uc3QgZT17ZmllbGQ6SG99LGM9aC5wYXJzZTtoLnNldFBhcnNlKGQ9PmMoZCxlKSl9cmV0dXJuIGZ1bmN0aW9uKGUsYyl7cmV0dXJuKGQsLi4uaCk9Pntjb25zdCB2PWUoZCwuLi5oKSxiPWMuYmluZChudWxsLHYpO3JldHVybiBiLmFzdD12LGJ9fShoLnBhcnNlLHYpfXAoeXIsQXIpLHAoWyIkYW5kIiwiJG9yIl0ucmVkdWNlKChlLGMpPT4oZVtjXT1PYmplY3QuYXNzaWduKHt9LGVbY10se3R5cGU6ImZpZWxkIn0pLGUpLE9iamVjdC5hc3NpZ24oe30seXIseyRub3I6T2JqZWN0LmFzc2lnbih7fSx5ci4kbm9yLHt0eXBlOiJmaWVsZCIscGFyc2U6Sm8uY29tcG91bmR9KX0pKSxBcix7Zm9yUHJpbWl0aXZlczohMH0pO2NvbnN0IE9yPU9iamVjdC5oYXNPd258fCgoZSxjKT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYykpO2Z1bmN0aW9uIEMoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Y29uc3QgSXI9Il9fY2FzbFN1YmplY3RUeXBlX18iLFM9ZT0+e2NvbnN0IGM9dHlwZW9mIGU7cmV0dXJuInN0cmluZyI9PT1jfHwiZnVuY3Rpb24iPT09Y307ZnVuY3Rpb24gQihlKXtyZXR1cm4gT3IoZSxJcik/ZVtJcl06KGU9PmUubW9kZWxOYW1lfHxlLm5hbWUpKGUuY29uc3RydWN0b3IpfWNvbnN0IFJyPXtmdW5jdGlvbjplPT5lLmNvbnN0cnVjdG9yLHN0cmluZzpCfTtmdW5jdGlvbiBHKGUsYyxkKXtmb3IobGV0IGg9ZDtoPGMubGVuZ3RoO2grKyllLnB1c2goY1toXSl9ZnVuY3Rpb24gSChlLGMpe2lmKCFlfHwhZS5sZW5ndGgpcmV0dXJuIGN8fFtdO2lmKCFjfHwhYy5sZW5ndGgpcmV0dXJuIGV8fFtdO2xldCBkPTAsaD0wO2NvbnN0IHY9W107Zm9yKDtkPGUubGVuZ3RoJiZoPGMubGVuZ3RoOyllW2RdLnByaW9yaXR5PGNbaF0ucHJpb3JpdHk/KHYucHVzaChlW2RdKSxkKyspOmVbZF0ucHJpb3JpdHk+Y1toXS5wcmlvcml0eT8odi5wdXNoKGNbaF0pLGgrKyk6KHYucHVzaChlW2RdKSxkKyssaCsrKTtyZXR1cm4gRyh2LGUsZCksRyh2LGMsaCksdn1mdW5jdGlvbiBJKGUsYyxkKXtsZXQgaD1lLmdldChjKTtyZXR1cm4gaHx8KGg9ZCgpLGUuc2V0KGMsaCkpLGh9Y29uc3QgSj1lPT5lO2NsYXNzIFF7Y29uc3RydWN0b3IoZSxjLGQ9MCl7IWZ1bmN0aW9uKGUsYyl7aWYoQXJyYXkuaXNBcnJheShlLmZpZWxkcykmJiFlLmZpZWxkcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJgcmF3UnVsZS5maWVsZHNgIGNhbm5vdCBiZSBhbiBlbXB0eSBhcnJheS4gaHR0cHM6Ly9iaXQubHkvMzkwbWlMYSIpO2lmKGUuZmllbGRzJiYhYy5maWVsZE1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBwYXNzICJmaWVsZE1hdGNoZXIiIG9wdGlvbiBpbiBvcmRlciB0byByZXN0cmljdCBhY2Nlc3MgYnkgZmllbGRzJyk7aWYoZS5jb25kaXRpb25zJiYhYy5jb25kaXRpb25zTWF0Y2hlcil0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRvIHBhc3MgImNvbmRpdGlvbnNNYXRjaGVyIiBvcHRpb24gaW4gb3JkZXIgdG8gcmVzdHJpY3QgYWNjZXNzIGJ5IGNvbmRpdGlvbnMnKX0oZSxjKSx0aGlzLmFjdGlvbj1jLnJlc29sdmVBY3Rpb24oZS5hY3Rpb24pLHRoaXMuc3ViamVjdD1lLnN1YmplY3QsdGhpcy5pbnZlcnRlZD0hIWUuaW52ZXJ0ZWQsdGhpcy5jb25kaXRpb25zPWUuY29uZGl0aW9ucyx0aGlzLnJlYXNvbj1lLnJlYXNvbix0aGlzLm9yaWdpbj1lLHRoaXMuZmllbGRzPWUuZmllbGRzP0MoZS5maWVsZHMpOnZvaWQgMCx0aGlzLnByaW9yaXR5PWQsdGhpcy50PWN9aSgpe3JldHVybiB0aGlzLmNvbmRpdGlvbnMmJiF0aGlzLm8mJih0aGlzLm89dGhpcy50LmNvbmRpdGlvbnNNYXRjaGVyKHRoaXMuY29uZGl0aW9ucykpLHRoaXMub31nZXQgYXN0KCl7Y29uc3QgZT10aGlzLmkoKTtyZXR1cm4gZT9lLmFzdDp2b2lkIDB9bWF0Y2hlc0NvbmRpdGlvbnMoZSl7aWYoIXRoaXMuY29uZGl0aW9ucylyZXR1cm4hMDtpZighZXx8UyhlKSlyZXR1cm4hdGhpcy5pbnZlcnRlZDtyZXR1cm4gdGhpcy5pKCkoZSl9bWF0Y2hlc0ZpZWxkKGUpe3JldHVybiF0aGlzLmZpZWxkc3x8KGU/KHRoaXMudXx8KHRoaXMudT10aGlzLnQuZmllbGRNYXRjaGVyKHRoaXMuZmllbGRzKSksdGhpcy51KGUpKTohdGhpcy5pbnZlcnRlZCl9fWNvbnN0IFg9KCk9Pih7cnVsZXM6W10sbWVyZ2VkOiExfSksWj0oKT0+bmV3IE1hcDtjbGFzcyB0dHtjb25zdHJ1Y3RvcihlPVtdLGM9e30pe3RoaXMuaD0hMSx0aGlzLmw9bmV3IE1hcCx0aGlzLnA9e2NvbmRpdGlvbnNNYXRjaGVyOmMuY29uZGl0aW9uc01hdGNoZXIsZmllbGRNYXRjaGVyOmMuZmllbGRNYXRjaGVyLHJlc29sdmVBY3Rpb246Yy5yZXNvbHZlQWN0aW9ufHxKfSx0aGlzLiQ9Yy5hbnlBY3Rpb258fCJtYW5hZ2UiLHRoaXMuQT1jLmFueVN1YmplY3RUeXBlfHwiYWxsIix0aGlzLm09ZSx0aGlzLk09ISFjLmRldGVjdFN1YmplY3RUeXBlLHRoaXMuaj1jLmRldGVjdFN1YmplY3RUeXBlfHxCLHRoaXMudihlKX1nZXQgcnVsZXMoKXtyZXR1cm4gdGhpcy5tfWRldGVjdFN1YmplY3RUeXBlKGUpe3JldHVybiBTKGUpP2U6ZT90aGlzLmooZSk6dGhpcy5BfXVwZGF0ZShlKXtjb25zdCBjPXtydWxlczplLGFiaWxpdHk6dGhpcyx0YXJnZXQ6dGhpc307cmV0dXJuIHRoaXMuXygidXBkYXRlIixjKSx0aGlzLm09ZSx0aGlzLnYoZSksdGhpcy5fKCJ1cGRhdGVkIixjKSx0aGlzfXYoZSl7Y29uc3QgYz1uZXcgTWFwO2xldCBkO2ZvcihsZXQgaD1lLmxlbmd0aC0xO2g+PTA7aC0tKXtjb25zdCB2PWUubGVuZ3RoLWgtMSxiPW5ldyBRKGVbaF0sdGhpcy5wLHYpLHk9QyhiLmFjdGlvbiksRT1DKGIuc3ViamVjdHx8dGhpcy5BKTshdGhpcy5oJiZiLmZpZWxkcyYmKHRoaXMuaD0hMCk7Zm9yKGxldCBlPTA7ZTxFLmxlbmd0aDtlKyspe2NvbnN0IGg9SShjLEVbZV0sWik7dm9pZCAwPT09ZCYmKGQ9dHlwZW9mIEVbZV0pLHR5cGVvZiBFW2VdIT09ZCYmIm1peGVkIiE9PWQmJihkPSJtaXhlZCIpO2ZvcihsZXQgZT0wO2U8eS5sZW5ndGg7ZSsrKUkoaCx5W2VdLFgpLnJ1bGVzLnB1c2goYil9fWlmKHRoaXMubD1jLCJtaXhlZCIhPT1kJiYhdGhpcy5NKXtjb25zdCBlPVJyW2RdfHxSci5zdHJpbmc7dGhpcy5qPWV9fXBvc3NpYmxlUnVsZXNGb3IoZSxjPXRoaXMuQSl7aWYoIVMoYykpdGhyb3cgbmV3IEVycm9yKCcicG9zc2libGVSdWxlc0ZvciIgYWNjZXB0cyBvbmx5IHN1YmplY3QgdHlwZXMgKGkuZS4sIHN0cmluZyBvciBjbGFzcykgYXMgdGhlIDJuZCBwYXJhbWV0ZXInKTtjb25zdCBkPUkodGhpcy5sLGMsWiksaD1JKGQsZSxYKTtpZihoLm1lcmdlZClyZXR1cm4gaC5ydWxlcztjb25zdCB2PWUhPT10aGlzLiQmJmQuaGFzKHRoaXMuJCk/ZC5nZXQodGhpcy4kKS5ydWxlczp2b2lkIDA7bGV0IGI9SChoLnJ1bGVzLHYpO3JldHVybiBjIT09dGhpcy5BJiYoYj1IKGIsdGhpcy5wb3NzaWJsZVJ1bGVzRm9yKGUsdGhpcy5BKSkpLGgucnVsZXM9YixoLm1lcmdlZD0hMCxifXJ1bGVzRm9yKGUsYyxkKXtjb25zdCBoPXRoaXMucG9zc2libGVSdWxlc0ZvcihlLGMpO2lmKGQmJiJzdHJpbmciIT10eXBlb2YgZCl0aHJvdyBuZXcgRXJyb3IoIlRoZSAzcmQsIGBmaWVsZGAgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIGEgc3RyaW5nLiBTZWUgaHR0cHM6Ly9zdGFsbml5LmdpdGh1Yi5pby9jYXNsL2VuL2FwaS9jYXNsLWFiaWxpdHkjY2FuLW9mLXB1cmUtYWJpbGl0eSBmb3IgZGV0YWlscyIpO3JldHVybiB0aGlzLmg/ZnVuY3Rpb24oZSxjKXtsZXQgZDtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3Qgdj1jKGVbaF0pO2QmJnYmJmQucHVzaChlW2hdKSx2fHwoZD8/PWUuc2xpY2UoMCxoKSl9cmV0dXJuIGR8fGV9KGgsZT0+ZS5tYXRjaGVzRmllbGQoZCkpOmh9YWN0aW9uc0ZvcihlKXtpZighUyhlKSl0aHJvdyBuZXcgRXJyb3IoJyJhY3Rpb25zRm9yIiBhY2NlcHRzIG9ubHkgc3ViamVjdCB0eXBlcyAoaS5lLiwgc3RyaW5nIG9yIGNsYXNzKSBhcyBhIHBhcmFtZXRlcicpO2NvbnN0IGM9bmV3IFNldCxkPXRoaXMubC5nZXQoZSk7ZCYmQXJyYXkuZnJvbShkLmtleXMoKSkuZm9yRWFjaChlPT5jLmFkZChlKSk7Y29uc3QgaD1lIT09dGhpcy5BP3RoaXMubC5nZXQodGhpcy5BKTp2b2lkIDA7cmV0dXJuIGgmJkFycmF5LmZyb20oaC5rZXlzKCkpLmZvckVhY2goZT0+Yy5hZGQoZSkpLEFycmF5LmZyb20oYyl9b24oZSxjKXt0aGlzLkY9dGhpcy5GfHxuZXcgTWFwO2NvbnN0IGQ9dGhpcy5GLGg9ZnVuY3Rpb24oZSxjKXtjb25zdCBkPXt2YWx1ZTplLHByZXY6YyxuZXh0Om51bGx9O3JldHVybiBjJiYoYy5uZXh0PWQpLGR9KGMsZC5nZXQoZSl8fG51bGwpO3JldHVybiBkLnNldChlLGgpLCgpPT57Y29uc3QgYz1kLmdldChlKTtoLm5leHR8fGgucHJldnx8YyE9PWg/aD09PWMmJmQuc2V0KGUsaC5wcmV2KTpkLmRlbGV0ZShlKSxmdW5jdGlvbihlKXtlLm5leHQmJihlLm5leHQucHJldj1lLnByZXYpLGUucHJldiYmKGUucHJldi5uZXh0PWUubmV4dCksZS5uZXh0PWUucHJldj1udWxsfShoKX19XyhlLGMpe2lmKCF0aGlzLkYpcmV0dXJuO2xldCBkPXRoaXMuRi5nZXQoZSl8fG51bGw7Y29uc3QgaD1bXTtmb3IoO251bGwhPT1kOyloLnB1c2goZC52YWx1ZSksZD1kLnByZXY7Zm9yKGxldCBlPTA7ZTxoLmxlbmd0aDtlKyspaFtlXShjKX19Y2xhc3MgUHVyZUFiaWxpdHkgZXh0ZW5kcyB0dHtjYW4oZSxjLGQpe2NvbnN0IGg9dGhpcy5yZWxldmFudFJ1bGVGb3IoZSxjLGQpO3JldHVybiEhaCYmIWguaW52ZXJ0ZWR9cmVsZXZhbnRSdWxlRm9yKGUsYyxkKXtjb25zdCBoPXRoaXMuZGV0ZWN0U3ViamVjdFR5cGUoYyksdj10aGlzLnJ1bGVzRm9yKGUsaCxkKTtmb3IobGV0IGU9MCxkPXYubGVuZ3RoO2U8ZDtlKyspaWYodltlXS5tYXRjaGVzQ29uZGl0aW9ucyhjKSlyZXR1cm4gdltlXTtyZXR1cm4gbnVsbH1jYW5ub3QoZSxjLGQpe3JldHVybiF0aGlzLmNhbihlLGMsZCl9fWNvbnN0IFByPXAoeyRlcTpmciwkbmU6bXIsJGx0OmRyLCRsdGU6cHIsJGd0OnVyLCRndGU6Y3IsJGluOnJyLCRuaW46YXIsJGFsbDppciwkc2l6ZTpvciwkcmVnZXg6aHIsJG9wdGlvbnM6Z3IsJGVsZW1NYXRjaDpuciwkZXhpc3RzOmxyfSx7ZXE6aixuZTpBLGx0OkVyLGx0ZTpTcixndDp3cixndGU6a3IsaW46VHIsbmluOnEkMSxhbGw6eixzaXplOngscmVnZXg6X3IsZWxlbU1hdGNoOkIkMSxleGlzdHM6dyxhbmQ6bSQxfSksTXI9L1stL1xcXiQrPy4oKXxbXF17fV0vZyxEcj0vXC4/XCorXC4/L2csQnI9L1wqKy8sTHI9L1wuL2c7ZnVuY3Rpb24gaHQoZSxjLGQpe2NvbnN0IGg9IioiPT09ZFswXXx8Ii4iPT09ZVswXSYmIi4iPT09ZVtlLmxlbmd0aC0xXT8iKyI6IioiLHY9LTE9PT1lLmluZGV4T2YoIioqIik/IlteLl0iOiIuIixiPWUucmVwbGFjZShMciwiXFwkJiIpLnJlcGxhY2UoQnIsditoKTtyZXR1cm4gYytlLmxlbmd0aD09PWQubGVuZ3RoP2AoPzoke2J9KT9gOmJ9ZnVuY3Rpb24gbHQoZSxjLGQpe3JldHVybiIuIiE9PWV8fCIqIiE9PWRbYy0xXSYmIioiIT09ZFtjKzFdP2BcXCR7ZX1gOmV9Y29uc3QgYXQ9ZT0+e2xldCBjO3JldHVybiBkPT4odm9pZCAwPT09YyYmKGM9ZS5ldmVyeShlPT4tMT09PWUuaW5kZXhPZigiKiIpKT9udWxsOmZ1bmN0aW9uKGUpe2NvbnN0IGM9ZS5tYXAoZT0+ZS5yZXBsYWNlKE1yLGx0KS5yZXBsYWNlKERyLGh0KSksZD1jLmxlbmd0aD4xP2AoPzoke2Muam9pbigifCIpfSlgOmNbMF07cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2R9JGApfShlKSksbnVsbD09PWM/LTEhPT1lLmluZGV4T2YoZCk6Yy50ZXN0KGQpKX07Y29uc3QganI9U3ltYm9sKCJhYmlsaXR5Iik7ZnVuY3Rpb24gbChlLGMsZCl7aWYoIShjJiZjIGluc3RhbmNlb2YgUHVyZUFiaWxpdHkpKXRocm93IG5ldyBFcnJvcigiUGxlYXNlIHByb3ZpZGUgYW4gQWJpbGl0eSBpbnN0YW5jZSB0byBhYmlsaXRpZXNQbHVnaW4gcGx1Z2luIik7ZS5wcm92aWRlKGpyLGZ1bmN0aW9uKGUpe2lmKE9iamVjdC5oYXNPd24oZSwicG9zc2libGVSdWxlc0ZvciIpKXJldHVybiBlO2NvbnN0IGM9YWUoITApO2Uub24oInVwZGF0ZWQiLCgpPT57Yy52YWx1ZT0hYy52YWx1ZX0pO2NvbnN0IGQ9ZS5wb3NzaWJsZVJ1bGVzRm9yLmJpbmQoZSk7cmV0dXJuIGUucG9zc2libGVSdWxlc0Zvcj0oZSxoKT0+KGMudmFsdWU9Yy52YWx1ZSxkKGUsaCkpLGUuY2FuPWUuY2FuLmJpbmQoZSksZS5jYW5ub3Q9ZS5jYW5ub3QuYmluZChlKSxlfShjKSksZCYmZC51c2VHbG9iYWxQcm9wZXJ0aWVzJiYoZS5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kYWJpbGl0eT1jLGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJGNhbj1jLmNhbi5iaW5kKGMpKX1jb25zdCBjcmVhdGVDbGFzc1BhcnRPYmplY3Q9KGU9bmV3IE1hcCxjPW51bGwsZCk9Pih7bmV4dFBhcnQ6ZSx2YWxpZGF0b3JzOmMsY2xhc3NHcm91cElkOmR9KSwkcj0iLSIsRnI9W10sY3JlYXRlQ2xhc3NHcm91cFV0aWxzPWU9Pntjb25zdCBjPWNyZWF0ZUNsYXNzTWFwKGUpLHtjb25mbGljdGluZ0NsYXNzR3JvdXBzOmQsY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOmh9PWU7cmV0dXJue2dldENsYXNzR3JvdXBJZDplPT57aWYoZS5zdGFydHNXaXRoKCJbIikmJmUuZW5kc1dpdGgoIl0iKSlyZXR1cm4gZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGUpO2NvbnN0IGQ9ZS5zcGxpdCgkciksaD0iIj09PWRbMF0mJmQubGVuZ3RoPjE/MTowO3JldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShkLGgsYyl9LGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkczooZSxjKT0+e2lmKGMpe2NvbnN0IGM9aFtlXSx2PWRbZV07cmV0dXJuIGM/dj8oKGUsYyk9Pntjb25zdCBkPW5ldyBBcnJheShlLmxlbmd0aCtjLmxlbmd0aCk7Zm9yKGxldCBjPTA7YzxlLmxlbmd0aDtjKyspZFtjXT1lW2NdO2ZvcihsZXQgaD0wO2g8Yy5sZW5ndGg7aCsrKWRbZS5sZW5ndGgraF09Y1toXTtyZXR1cm4gZH0pKHYsYyk6Yzp2fHxGcn1yZXR1cm4gZFtlXXx8RnJ9fX0sZ2V0R3JvdXBSZWN1cnNpdmU9KGUsYyxkKT0+e2lmKDA9PT1lLmxlbmd0aC1jKXJldHVybiBkLmNsYXNzR3JvdXBJZDtjb25zdCBoPWVbY10sdj1kLm5leHRQYXJ0LmdldChoKTtpZih2KXtjb25zdCBkPWdldEdyb3VwUmVjdXJzaXZlKGUsYysxLHYpO2lmKGQpcmV0dXJuIGR9Y29uc3QgYj1kLnZhbGlkYXRvcnM7aWYobnVsbD09PWIpcmV0dXJuO2NvbnN0IHk9MD09PWM/ZS5qb2luKCRyKTplLnNsaWNlKGMpLmpvaW4oJHIpLEU9Yi5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxFO2UrKyl7Y29uc3QgYz1iW2VdO2lmKGMudmFsaWRhdG9yKHkpKXJldHVybiBjLmNsYXNzR3JvdXBJZH19LGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eT1lPT4tMT09PWUuc2xpY2UoMSwtMSkuaW5kZXhPZigiOiIpP3ZvaWQgMDooKCk9Pntjb25zdCBjPWUuc2xpY2UoMSwtMSksZD1jLmluZGV4T2YoIjoiKSxoPWMuc2xpY2UoMCxkKTtyZXR1cm4gaD8iYXJiaXRyYXJ5Li4iK2g6dm9pZCAwfSkoKSxjcmVhdGVDbGFzc01hcD1lPT57Y29uc3R7dGhlbWU6YyxjbGFzc0dyb3VwczpkfT1lO3JldHVybiBwcm9jZXNzQ2xhc3NHcm91cHMoZCxjKX0scHJvY2Vzc0NsYXNzR3JvdXBzPShlLGMpPT57Y29uc3QgZD1jcmVhdGVDbGFzc1BhcnRPYmplY3QoKTtmb3IoY29uc3QgaCBpbiBlKXtjb25zdCB2PWVbaF07cHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSh2LGQsaCxjKX1yZXR1cm4gZH0scHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseT0oZSxjLGQsaCk9Pntjb25zdCB2PWUubGVuZ3RoO2ZvcihsZXQgYj0wO2I8djtiKyspe2NvbnN0IHY9ZVtiXTtwcm9jZXNzQ2xhc3NEZWZpbml0aW9uKHYsYyxkLGgpfX0scHJvY2Vzc0NsYXNzRGVmaW5pdGlvbj0oZSxjLGQsaCk9Pnsic3RyaW5nIiE9dHlwZW9mIGU/ImZ1bmN0aW9uIiE9dHlwZW9mIGU/cHJvY2Vzc09iamVjdERlZmluaXRpb24oZSxjLGQsaCk6cHJvY2Vzc0Z1bmN0aW9uRGVmaW5pdGlvbihlLGMsZCxoKTpwcm9jZXNzU3RyaW5nRGVmaW5pdGlvbihlLGMsZCl9LHByb2Nlc3NTdHJpbmdEZWZpbml0aW9uPShlLGMsZCk9PnsoIiI9PT1lP2M6Z2V0UGFydChjLGUpKS5jbGFzc0dyb3VwSWQ9ZH0scHJvY2Vzc0Z1bmN0aW9uRGVmaW5pdGlvbj0oZSxjLGQsaCk9Pntpc1RoZW1lR2V0dGVyKGUpP3Byb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoZShoKSxjLGQsaCk6KG51bGw9PT1jLnZhbGlkYXRvcnMmJihjLnZhbGlkYXRvcnM9W10pLGMudmFsaWRhdG9ycy5wdXNoKCgoZSxjKT0+KHtjbGFzc0dyb3VwSWQ6ZSx2YWxpZGF0b3I6Y30pKShkLGUpKSl9LHByb2Nlc3NPYmplY3REZWZpbml0aW9uPShlLGMsZCxoKT0+e2NvbnN0IHY9T2JqZWN0LmVudHJpZXMoZSksYj12Lmxlbmd0aDtmb3IobGV0IGU9MDtlPGI7ZSsrKXtjb25zdFtiLHldPXZbZV07cHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSh5LGdldFBhcnQoYyxiKSxkLGgpfX0sZ2V0UGFydD0oZSxjKT0+e2xldCBkPWU7Y29uc3QgaD1jLnNwbGl0KCRyKSx2PWgubGVuZ3RoO2ZvcihsZXQgZT0wO2U8djtlKyspe2NvbnN0IGM9aFtlXTtsZXQgdj1kLm5leHRQYXJ0LmdldChjKTt2fHwodj1jcmVhdGVDbGFzc1BhcnRPYmplY3QoKSxkLm5leHRQYXJ0LnNldChjLHYpKSxkPXZ9cmV0dXJuIGR9LGlzVGhlbWVHZXR0ZXI9ZT0+ImlzVGhlbWVHZXR0ZXIiaW4gZSYmITA9PT1lLmlzVGhlbWVHZXR0ZXIsY3JlYXRlTHJ1Q2FjaGU9ZT0+e2lmKGU8MSlyZXR1cm57Z2V0OigpPT57fSxzZXQ6KCk9Pnt9fTtsZXQgYz0wLGQ9T2JqZWN0LmNyZWF0ZShudWxsKSxoPU9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3QgdXBkYXRlPSh2LGIpPT57ZFt2XT1iLGMrKyxjPmUmJihjPTAsaD1kLGQ9T2JqZWN0LmNyZWF0ZShudWxsKSl9O3JldHVybntnZXQoZSl7bGV0IGM9ZFtlXTtyZXR1cm4gdm9pZCAwIT09Yz9jOnZvaWQgMCE9PShjPWhbZV0pPyh1cGRhdGUoZSxjKSxjKTp2b2lkIDB9LHNldChlLGMpe2UgaW4gZD9kW2VdPWM6dXBkYXRlKGUsYyl9fX0sVnI9W10sY3JlYXRlUmVzdWx0T2JqZWN0PShlLGMsZCxoLHYpPT4oe21vZGlmaWVyczplLGhhc0ltcG9ydGFudE1vZGlmaWVyOmMsYmFzZUNsYXNzTmFtZTpkLG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246aCxpc0V4dGVybmFsOnZ9KSxjcmVhdGVQYXJzZUNsYXNzTmFtZT1lPT57Y29uc3R7cHJlZml4OmMsZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWU6ZH09ZTtsZXQgcGFyc2VDbGFzc05hbWU9ZT0+e2NvbnN0IGM9W107bGV0IGQsaD0wLHY9MCxiPTA7Y29uc3QgeT1lLmxlbmd0aDtmb3IobGV0IEU9MDtFPHk7RSsrKXtjb25zdCB5PWVbRV07aWYoMD09PWgmJjA9PT12KXtpZigiOiI9PT15KXtjLnB1c2goZS5zbGljZShiLEUpKSxiPUUrMTtjb250aW51ZX1pZigiLyI9PT15KXtkPUU7Y29udGludWV9fSJbIj09PXk/aCsrOiJdIj09PXk/aC0tOiIoIj09PXk/disrOiIpIj09PXkmJnYtLX1jb25zdCBFPTA9PT1jLmxlbmd0aD9lOmUuc2xpY2UoYik7bGV0IGs9RSxfPSExO0UuZW5kc1dpdGgoIiEiKT8oaz1FLnNsaWNlKDAsLTEpLF89ITApOkUuc3RhcnRzV2l0aCgiISIpJiYoaz1FLnNsaWNlKDEpLF89ITApO3JldHVybiBjcmVhdGVSZXN1bHRPYmplY3QoYyxfLGssZCYmZD5iP2QtYjp2b2lkIDApfTtpZihjKXtjb25zdCBlPWMrIjoiLGQ9cGFyc2VDbGFzc05hbWU7cGFyc2VDbGFzc05hbWU9Yz0+Yy5zdGFydHNXaXRoKGUpP2QoYy5zbGljZShlLmxlbmd0aCkpOmNyZWF0ZVJlc3VsdE9iamVjdChWciwhMSxjLHZvaWQgMCwhMCl9aWYoZCl7Y29uc3QgZT1wYXJzZUNsYXNzTmFtZTtwYXJzZUNsYXNzTmFtZT1jPT5kKHtjbGFzc05hbWU6YyxwYXJzZUNsYXNzTmFtZTplfSl9cmV0dXJuIHBhcnNlQ2xhc3NOYW1lfSxjcmVhdGVTb3J0TW9kaWZpZXJzPWU9Pntjb25zdCBjPW5ldyBNYXA7cmV0dXJuIGUub3JkZXJTZW5zaXRpdmVNb2RpZmllcnMuZm9yRWFjaCgoZSxkKT0+e2Muc2V0KGUsMWU2K2QpfSksZT0+e2NvbnN0IGQ9W107bGV0IGg9W107Zm9yKGxldCB2PTA7djxlLmxlbmd0aDt2Kyspe2NvbnN0IGI9ZVt2XSx5PSJbIj09PWJbMF0sRT1jLmhhcyhiKTt5fHxFPyhoLmxlbmd0aD4wJiYoaC5zb3J0KCksZC5wdXNoKC4uLmgpLGg9W10pLGQucHVzaChiKSk6aC5wdXNoKGIpfXJldHVybiBoLmxlbmd0aD4wJiYoaC5zb3J0KCksZC5wdXNoKC4uLmgpKSxkfX0senI9L1xzKy8sdG9WYWx1ZT1lPT57aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2xldCBjLGQ9IiI7Zm9yKGxldCBoPTA7aDxlLmxlbmd0aDtoKyspZVtoXSYmKGM9dG9WYWx1ZShlW2hdKSkmJihkJiYoZCs9IiAiKSxkKz1jKTtyZXR1cm4gZH0sY3JlYXRlVGFpbHdpbmRNZXJnZT0oZSwuLi5jKT0+e2xldCBkLGgsdixiO2NvbnN0IHRhaWx3aW5kTWVyZ2U9ZT0+e2NvbnN0IGM9aChlKTtpZihjKXJldHVybiBjO2NvbnN0IGI9KChlLGMpPT57Y29uc3R7cGFyc2VDbGFzc05hbWU6ZCxnZXRDbGFzc0dyb3VwSWQ6aCxnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6dixzb3J0TW9kaWZpZXJzOmJ9PWMseT1bXSxFPWUudHJpbSgpLnNwbGl0KHpyKTtsZXQgaz0iIjtmb3IobGV0IGU9RS5sZW5ndGgtMTtlPj0wO2UtPTEpe2NvbnN0IGM9RVtlXSx7aXNFeHRlcm5hbDpfLG1vZGlmaWVyczpULGhhc0ltcG9ydGFudE1vZGlmaWVyOk4sYmFzZUNsYXNzTmFtZTpPLG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246Un09ZChjKTtpZihfKXtrPWMrKGsubGVuZ3RoPjA/IiAiK2s6ayk7Y29udGludWV9bGV0IE09ISFSLEQ9aChNP08uc3Vic3RyaW5nKDAsUik6Tyk7aWYoIUQpe2lmKCFNKXtrPWMrKGsubGVuZ3RoPjA/IiAiK2s6ayk7Y29udGludWV9aWYoRD1oKE8pLCFEKXtrPWMrKGsubGVuZ3RoPjA/IiAiK2s6ayk7Y29udGludWV9TT0hMX1jb25zdCBMPTA9PT1ULmxlbmd0aD8iIjoxPT09VC5sZW5ndGg/VFswXTpiKFQpLmpvaW4oIjoiKSwkPU4/TCsiISI6TCxGPSQrRDtpZih5LmluZGV4T2YoRik+LTEpY29udGludWU7eS5wdXNoKEYpO2NvbnN0IFY9dihELE0pO2ZvcihsZXQgZT0wO2U8Vi5sZW5ndGg7KytlKXtjb25zdCBjPVZbZV07eS5wdXNoKCQrYyl9az1jKyhrLmxlbmd0aD4wPyIgIitrOmspfXJldHVybiBrfSkoZSxkKTtyZXR1cm4gdihlLGIpLGJ9O3JldHVybiBiPXk9Pntjb25zdCBFPWMucmVkdWNlKChlLGMpPT5jKGUpLGUoKSk7cmV0dXJuIGQ9KGU9Pih7Y2FjaGU6Y3JlYXRlTHJ1Q2FjaGUoZS5jYWNoZVNpemUpLHBhcnNlQ2xhc3NOYW1lOmNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGUpLHNvcnRNb2RpZmllcnM6Y3JlYXRlU29ydE1vZGlmaWVycyhlKSwuLi5jcmVhdGVDbGFzc0dyb3VwVXRpbHMoZSl9KSkoRSksaD1kLmNhY2hlLmdldCx2PWQuY2FjaGUuc2V0LGI9dGFpbHdpbmRNZXJnZSx0YWlsd2luZE1lcmdlKHkpfSwoLi4uZSk9PmIoKCguLi5lKT0+e2xldCBjLGQsaD0wLHY9IiI7Zm9yKDtoPGUubGVuZ3RoOykoYz1lW2grK10pJiYoZD10b1ZhbHVlKGMpKSYmKHYmJih2Kz0iICIpLHYrPWQpO3JldHVybiB2fSkoLi4uZSkpfSxxcj1bXSxmcm9tVGhlbWU9ZT0+e2NvbnN0IHRoZW1lR2V0dGVyPWM9PmNbZV18fHFyO3JldHVybiB0aGVtZUdldHRlci5pc1RoZW1lR2V0dGVyPSEwLHRoZW1lR2V0dGVyfSxVcj0vXlxbKD86KFx3W1x3LV0qKTopPyguKylcXSQvaSxIcj0vXlwoKD86KFx3W1x3LV0qKTopPyguKylcKSQvaSxHcj0vXlxkKyg/OlwuXGQrKT9cL1xkKyg/OlwuXGQrKT8kLyxXcj0vXihcZCsoXC5cZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvLFhyPS9cZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxiKGNhbGN8bWlufG1heHxjbGFtcClcKC4rXCl8XjAkLyxLcj0vXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCl8Y29sb3ItbWl4KVwoLitcKSQvLEpyPS9eKGluc2V0Xyk/LT8oKFxkKyk/XC4/KFxkKylbYS16XSt8MClfLT8oKFxkKyk/XC4/KFxkKylbYS16XSt8MCkvLFFyPS9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXCguK1wpJC8saXNGcmFjdGlvbj1lPT5Hci50ZXN0KGUpLGlzTnVtYmVyJDE9ZT0+ISFlJiYhTnVtYmVyLmlzTmFOKE51bWJlcihlKSksaXNJbnRlZ2VyPWU9PiEhZSYmTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIoZSkpLGlzUGVyY2VudD1lPT5lLmVuZHNXaXRoKCIlIikmJmlzTnVtYmVyJDEoZS5zbGljZSgwLC0xKSksaXNUc2hpcnRTaXplPWU9PldyLnRlc3QoZSksaXNBbnk9KCk9PiEwLGlzTGVuZ3RoT25seT1lPT5Yci50ZXN0KGUpJiYhS3IudGVzdChlKSxpc05ldmVyPSgpPT4hMSxpc1NoYWRvdz1lPT5Kci50ZXN0KGUpLGlzSW1hZ2U9ZT0+UXIudGVzdChlKSxpc0FueU5vbkFyYml0cmFyeT1lPT4haXNBcmJpdHJhcnlWYWx1ZShlKSYmIWlzQXJiaXRyYXJ5VmFyaWFibGUoZSksaXNBcmJpdHJhcnlTaXplPWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsU2l6ZSxpc05ldmVyKSxpc0FyYml0cmFyeVZhbHVlPWU9PlVyLnRlc3QoZSksaXNBcmJpdHJhcnlMZW5ndGg9ZT0+Z2V0SXNBcmJpdHJhcnlWYWx1ZShlLGlzTGFiZWxMZW5ndGgsaXNMZW5ndGhPbmx5KSxpc0FyYml0cmFyeU51bWJlcj1lPT5nZXRJc0FyYml0cmFyeVZhbHVlKGUsaXNMYWJlbE51bWJlcixpc051bWJlciQxKSxpc0FyYml0cmFyeVdlaWdodD1lPT5nZXRJc0FyYml0cmFyeVZhbHVlKGUsaXNMYWJlbFdlaWdodCxpc0FueSksaXNBcmJpdHJhcnlGYW1pbHlOYW1lPWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsRmFtaWx5TmFtZSxpc05ldmVyKSxpc0FyYml0cmFyeVBvc2l0aW9uPWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsUG9zaXRpb24saXNOZXZlciksaXNBcmJpdHJhcnlJbWFnZT1lPT5nZXRJc0FyYml0cmFyeVZhbHVlKGUsaXNMYWJlbEltYWdlLGlzSW1hZ2UpLGlzQXJiaXRyYXJ5U2hhZG93PWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsU2hhZG93LGlzU2hhZG93KSxpc0FyYml0cmFyeVZhcmlhYmxlPWU9PkhyLnRlc3QoZSksaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aD1lPT5nZXRJc0FyYml0cmFyeVZhcmlhYmxlKGUsaXNMYWJlbExlbmd0aCksaXNBcmJpdHJhcnlWYXJpYWJsZUZhbWlseU5hbWU9ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxGYW1pbHlOYW1lKSxpc0FyYml0cmFyeVZhcmlhYmxlUG9zaXRpb249ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxQb3NpdGlvbiksaXNBcmJpdHJhcnlWYXJpYWJsZVNpemU9ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxTaXplKSxpc0FyYml0cmFyeVZhcmlhYmxlSW1hZ2U9ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxJbWFnZSksaXNBcmJpdHJhcnlWYXJpYWJsZVNoYWRvdz1lPT5nZXRJc0FyYml0cmFyeVZhcmlhYmxlKGUsaXNMYWJlbFNoYWRvdywhMCksaXNBcmJpdHJhcnlWYXJpYWJsZVdlaWdodD1lPT5nZXRJc0FyYml0cmFyeVZhcmlhYmxlKGUsaXNMYWJlbFdlaWdodCwhMCksZ2V0SXNBcmJpdHJhcnlWYWx1ZT0oZSxjLGQpPT57Y29uc3QgaD1Vci5leGVjKGUpO3JldHVybiEhaCYmKGhbMV0/YyhoWzFdKTpkKGhbMl0pKX0sZ2V0SXNBcmJpdHJhcnlWYXJpYWJsZT0oZSxjLGQ9ITEpPT57Y29uc3QgaD1Ici5leGVjKGUpO3JldHVybiEhaCYmKGhbMV0/YyhoWzFdKTpkKX0saXNMYWJlbFBvc2l0aW9uPWU9PiJwb3NpdGlvbiI9PT1lfHwicGVyY2VudGFnZSI9PT1lLGlzTGFiZWxJbWFnZT1lPT4iaW1hZ2UiPT09ZXx8InVybCI9PT1lLGlzTGFiZWxTaXplPWU9PiJsZW5ndGgiPT09ZXx8InNpemUiPT09ZXx8ImJnLXNpemUiPT09ZSxpc0xhYmVsTGVuZ3RoPWU9PiJsZW5ndGgiPT09ZSxpc0xhYmVsTnVtYmVyPWU9PiJudW1iZXIiPT09ZSxpc0xhYmVsRmFtaWx5TmFtZT1lPT4iZmFtaWx5LW5hbWUiPT09ZSxpc0xhYmVsV2VpZ2h0PWU9PiJudW1iZXIiPT09ZXx8IndlaWdodCI9PT1lLGlzTGFiZWxTaGFkb3c9ZT0+InNoYWRvdyI9PT1lLGdldERlZmF1bHRDb25maWc9KCk9Pntjb25zdCBlPWZyb21UaGVtZSgiY29sb3IiKSxjPWZyb21UaGVtZSgiZm9udCIpLGQ9ZnJvbVRoZW1lKCJ0ZXh0IiksaD1mcm9tVGhlbWUoImZvbnQtd2VpZ2h0Iiksdj1mcm9tVGhlbWUoInRyYWNraW5nIiksYj1mcm9tVGhlbWUoImxlYWRpbmciKSx5PWZyb21UaGVtZSgiYnJlYWtwb2ludCIpLEU9ZnJvbVRoZW1lKCJjb250YWluZXIiKSxrPWZyb21UaGVtZSgic3BhY2luZyIpLF89ZnJvbVRoZW1lKCJyYWRpdXMiKSxUPWZyb21UaGVtZSgic2hhZG93IiksTj1mcm9tVGhlbWUoImluc2V0LXNoYWRvdyIpLE89ZnJvbVRoZW1lKCJ0ZXh0LXNoYWRvdyIpLFI9ZnJvbVRoZW1lKCJkcm9wLXNoYWRvdyIpLE09ZnJvbVRoZW1lKCJibHVyIiksRD1mcm9tVGhlbWUoInBlcnNwZWN0aXZlIiksTD1mcm9tVGhlbWUoImFzcGVjdCIpLCQ9ZnJvbVRoZW1lKCJlYXNlIiksRj1mcm9tVGhlbWUoImFuaW1hdGUiKSxzY2FsZVBvc2l0aW9uV2l0aEFyYml0cmFyeT0oKT0+WyJjZW50ZXIiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AtbGVmdCIsImxlZnQtdG9wIiwidG9wLXJpZ2h0IiwicmlnaHQtdG9wIiwiYm90dG9tLXJpZ2h0IiwicmlnaHQtYm90dG9tIiwiYm90dG9tLWxlZnQiLCJsZWZ0LWJvdHRvbSIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZVVuYW1iaWd1b3VzU3BhY2luZz0oKT0+W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZSxrXSxzY2FsZUluc2V0PSgpPT5baXNGcmFjdGlvbiwiZnVsbCIsImF1dG8iLC4uLnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCldLHNjYWxlR3JpZFRlbXBsYXRlQ29sc1Jvd3M9KCk9Pltpc0ludGVnZXIsIm5vbmUiLCJzdWJncmlkIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLHNjYWxlR3JpZENvbFJvd1N0YXJ0QW5kRW5kPSgpPT5bImF1dG8iLHtzcGFuOlsiZnVsbCIsaXNJbnRlZ2VyLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19LGlzSW50ZWdlcixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLHNjYWxlR3JpZENvbFJvd1N0YXJ0T3JFbmQ9KCk9Pltpc0ludGVnZXIsImF1dG8iLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVHcmlkQXV0b0NvbHNSb3dzPSgpPT5bImF1dG8iLCJtaW4iLCJtYXgiLCJmciIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZU1hcmdpbj0oKT0+WyJhdXRvIiwuLi5zY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpXSxzY2FsZVNpemluZz0oKT0+W2lzRnJhY3Rpb24sImF1dG8iLCJmdWxsIiwiZHZ3IiwiZHZoIiwibHZ3IiwibHZoIiwic3Z3Iiwic3ZoIiwibWluIiwibWF4IiwiZml0IiwuLi5zY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpXSxzY2FsZVNpemluZ0lubGluZT0oKT0+W2lzRnJhY3Rpb24sInNjcmVlbiIsImZ1bGwiLCJkdnciLCJsdnciLCJzdnciLCJtaW4iLCJtYXgiLCJmaXQiLC4uLnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCldLHNjYWxlU2l6aW5nQmxvY2s9KCk9Pltpc0ZyYWN0aW9uLCJzY3JlZW4iLCJmdWxsIiwibGgiLCJkdmgiLCJsdmgiLCJzdmgiLCJtaW4iLCJtYXgiLCJmaXQiLC4uLnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCldLHNjYWxlQ29sb3I9KCk9PltlLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVCZ1Bvc2l0aW9uPSgpPT5bImNlbnRlciIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsInRvcC1sZWZ0IiwibGVmdC10b3AiLCJ0b3AtcmlnaHQiLCJyaWdodC10b3AiLCJib3R0b20tcmlnaHQiLCJyaWdodC1ib3R0b20iLCJib3R0b20tbGVmdCIsImxlZnQtYm90dG9tIixpc0FyYml0cmFyeVZhcmlhYmxlUG9zaXRpb24saXNBcmJpdHJhcnlQb3NpdGlvbix7cG9zaXRpb246W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxzY2FsZUJnU2l6ZT0oKT0+WyJhdXRvIiwiY292ZXIiLCJjb250YWluIixpc0FyYml0cmFyeVZhcmlhYmxlU2l6ZSxpc0FyYml0cmFyeVNpemUse3NpemU6W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxzY2FsZUdyYWRpZW50U3RvcFBvc2l0aW9uPSgpPT5baXNQZXJjZW50LGlzQXJiaXRyYXJ5VmFyaWFibGVMZW5ndGgsaXNBcmJpdHJhcnlMZW5ndGhdLHNjYWxlUmFkaXVzPSgpPT5bIiIsIm5vbmUiLCJmdWxsIixfLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVCb3JkZXJXaWR0aD0oKT0+WyIiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aCxpc0FyYml0cmFyeUxlbmd0aF0sc2NhbGVNYXNrSW1hZ2VQb3NpdGlvbj0oKT0+W2lzTnVtYmVyJDEsaXNQZXJjZW50LGlzQXJiaXRyYXJ5VmFyaWFibGVQb3NpdGlvbixpc0FyYml0cmFyeVBvc2l0aW9uXSxzY2FsZUJsdXI9KCk9PlsiIiwibm9uZSIsTSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLHNjYWxlUm90YXRlPSgpPT5bIm5vbmUiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZVNjYWxlPSgpPT5bIm5vbmUiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZVNrZXc9KCk9Pltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVUcmFuc2xhdGU9KCk9Pltpc0ZyYWN0aW9uLCJmdWxsIiwuLi5zY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpXTtyZXR1cm57Y2FjaGVTaXplOjUwMCx0aGVtZTp7YW5pbWF0ZTpbInNwaW4iLCJwaW5nIiwicHVsc2UiLCJib3VuY2UiXSxhc3BlY3Q6WyJ2aWRlbyJdLGJsdXI6W2lzVHNoaXJ0U2l6ZV0sYnJlYWtwb2ludDpbaXNUc2hpcnRTaXplXSxjb2xvcjpbaXNBbnldLGNvbnRhaW5lcjpbaXNUc2hpcnRTaXplXSwiZHJvcC1zaGFkb3ciOltpc1RzaGlydFNpemVdLGVhc2U6WyJpbiIsIm91dCIsImluLW91dCJdLGZvbnQ6W2lzQW55Tm9uQXJiaXRyYXJ5XSwiZm9udC13ZWlnaHQiOlsidGhpbiIsImV4dHJhbGlnaHQiLCJsaWdodCIsIm5vcm1hbCIsIm1lZGl1bSIsInNlbWlib2xkIiwiYm9sZCIsImV4dHJhYm9sZCIsImJsYWNrIl0sImluc2V0LXNoYWRvdyI6W2lzVHNoaXJ0U2l6ZV0sbGVhZGluZzpbIm5vbmUiLCJ0aWdodCIsInNudWciLCJub3JtYWwiLCJyZWxheGVkIiwibG9vc2UiXSxwZXJzcGVjdGl2ZTpbImRyYW1hdGljIiwibmVhciIsIm5vcm1hbCIsIm1pZHJhbmdlIiwiZGlzdGFudCIsIm5vbmUiXSxyYWRpdXM6W2lzVHNoaXJ0U2l6ZV0sc2hhZG93Oltpc1RzaGlydFNpemVdLHNwYWNpbmc6WyJweCIsaXNOdW1iZXIkMV0sdGV4dDpbaXNUc2hpcnRTaXplXSwidGV4dC1zaGFkb3ciOltpc1RzaGlydFNpemVdLHRyYWNraW5nOlsidGlnaHRlciIsInRpZ2h0Iiwibm9ybWFsIiwid2lkZSIsIndpZGVyIiwid2lkZXN0Il19LGNsYXNzR3JvdXBzOnthc3BlY3Q6W3thc3BlY3Q6WyJhdXRvIiwic3F1YXJlIixpc0ZyYWN0aW9uLGlzQXJiaXRyYXJ5VmFsdWUsaXNBcmJpdHJhcnlWYXJpYWJsZSxMXX1dLGNvbnRhaW5lcjpbImNvbnRhaW5lciJdLGNvbHVtbnM6W3tjb2x1bW5zOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFsdWUsaXNBcmJpdHJhcnlWYXJpYWJsZSxFXX1dLCJicmVhay1hZnRlciI6W3siYnJlYWstYWZ0ZXIiOlsiYXV0byIsImF2b2lkIiwiYWxsIiwiYXZvaWQtcGFnZSIsInBhZ2UiLCJsZWZ0IiwicmlnaHQiLCJjb2x1bW4iXX1dLCJicmVhay1iZWZvcmUiOlt7ImJyZWFrLWJlZm9yZSI6WyJhdXRvIiwiYXZvaWQiLCJhbGwiLCJhdm9pZC1wYWdlIiwicGFnZSIsImxlZnQiLCJyaWdodCIsImNvbHVtbiJdfV0sImJyZWFrLWluc2lkZSI6W3siYnJlYWstaW5zaWRlIjpbImF1dG8iLCJhdm9pZCIsImF2b2lkLXBhZ2UiLCJhdm9pZC1jb2x1bW4iXX1dLCJib3gtZGVjb3JhdGlvbiI6W3siYm94LWRlY29yYXRpb24iOlsic2xpY2UiLCJjbG9uZSJdfV0sYm94Olt7Ym94OlsiYm9yZGVyIiwiY29udGVudCJdfV0sZGlzcGxheTpbImJsb2NrIiwiaW5saW5lLWJsb2NrIiwiaW5saW5lIiwiZmxleCIsImlubGluZS1mbGV4IiwidGFibGUiLCJpbmxpbmUtdGFibGUiLCJ0YWJsZS1jYXB0aW9uIiwidGFibGUtY2VsbCIsInRhYmxlLWNvbHVtbiIsInRhYmxlLWNvbHVtbi1ncm91cCIsInRhYmxlLWZvb3Rlci1ncm91cCIsInRhYmxlLWhlYWRlci1ncm91cCIsInRhYmxlLXJvdy1ncm91cCIsInRhYmxlLXJvdyIsImZsb3ctcm9vdCIsImdyaWQiLCJpbmxpbmUtZ3JpZCIsImNvbnRlbnRzIiwibGlzdC1pdGVtIiwiaGlkZGVuIl0sc3I6WyJzci1vbmx5Iiwibm90LXNyLW9ubHkiXSxmbG9hdDpbe2Zsb2F0OlsicmlnaHQiLCJsZWZ0Iiwibm9uZSIsInN0YXJ0IiwiZW5kIl19XSxjbGVhcjpbe2NsZWFyOlsibGVmdCIsInJpZ2h0IiwiYm90aCIsIm5vbmUiLCJzdGFydCIsImVuZCJdfV0saXNvbGF0aW9uOlsiaXNvbGF0ZSIsImlzb2xhdGlvbi1hdXRvIl0sIm9iamVjdC1maXQiOlt7b2JqZWN0OlsiY29udGFpbiIsImNvdmVyIiwiZmlsbCIsIm5vbmUiLCJzY2FsZS1kb3duIl19XSwib2JqZWN0LXBvc2l0aW9uIjpbe29iamVjdDpzY2FsZVBvc2l0aW9uV2l0aEFyYml0cmFyeSgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzpbImF1dG8iLCJoaWRkZW4iLCJjbGlwIiwidmlzaWJsZSIsInNjcm9sbCJdfV0sIm92ZXJmbG93LXgiOlt7Im92ZXJmbG93LXgiOlsiYXV0byIsImhpZGRlbiIsImNsaXAiLCJ2aXNpYmxlIiwic2Nyb2xsIl19XSwib3ZlcmZsb3cteSI6W3sib3ZlcmZsb3cteSI6WyJhdXRvIiwiaGlkZGVuIiwiY2xpcCIsInZpc2libGUiLCJzY3JvbGwiXX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOlsiYXV0byIsImNvbnRhaW4iLCJub25lIl19XSwib3ZlcnNjcm9sbC14IjpbeyJvdmVyc2Nyb2xsLXgiOlsiYXV0byIsImNvbnRhaW4iLCJub25lIl19XSwib3ZlcnNjcm9sbC15IjpbeyJvdmVyc2Nyb2xsLXkiOlsiYXV0byIsImNvbnRhaW4iLCJub25lIl19XSxwb3NpdGlvbjpbInN0YXRpYyIsImZpeGVkIiwiYWJzb2x1dGUiLCJyZWxhdGl2ZSIsInN0aWNreSJdLGluc2V0Olt7aW5zZXQ6c2NhbGVJbnNldCgpfV0sImluc2V0LXgiOlt7Imluc2V0LXgiOnNjYWxlSW5zZXQoKX1dLCJpbnNldC15IjpbeyJpbnNldC15IjpzY2FsZUluc2V0KCl9XSxzdGFydDpbeyJpbnNldC1zIjpzY2FsZUluc2V0KCksc3RhcnQ6c2NhbGVJbnNldCgpfV0sZW5kOlt7Imluc2V0LWUiOnNjYWxlSW5zZXQoKSxlbmQ6c2NhbGVJbnNldCgpfV0sImluc2V0LWJzIjpbeyJpbnNldC1icyI6c2NhbGVJbnNldCgpfV0sImluc2V0LWJlIjpbeyJpbnNldC1iZSI6c2NhbGVJbnNldCgpfV0sdG9wOlt7dG9wOnNjYWxlSW5zZXQoKX1dLHJpZ2h0Olt7cmlnaHQ6c2NhbGVJbnNldCgpfV0sYm90dG9tOlt7Ym90dG9tOnNjYWxlSW5zZXQoKX1dLGxlZnQ6W3tsZWZ0OnNjYWxlSW5zZXQoKX1dLHZpc2liaWxpdHk6WyJ2aXNpYmxlIiwiaW52aXNpYmxlIiwiY29sbGFwc2UiXSx6Olt7ejpbaXNJbnRlZ2VyLCJhdXRvIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sYmFzaXM6W3tiYXNpczpbaXNGcmFjdGlvbiwiZnVsbCIsImF1dG8iLEUsLi4uc2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKV19XSwiZmxleC1kaXJlY3Rpb24iOlt7ZmxleDpbInJvdyIsInJvdy1yZXZlcnNlIiwiY29sIiwiY29sLXJldmVyc2UiXX1dLCJmbGV4LXdyYXAiOlt7ZmxleDpbIm5vd3JhcCIsIndyYXAiLCJ3cmFwLXJldmVyc2UiXX1dLGZsZXg6W3tmbGV4Oltpc051bWJlciQxLGlzRnJhY3Rpb24sImF1dG8iLCJpbml0aWFsIiwibm9uZSIsaXNBcmJpdHJhcnlWYWx1ZV19XSxncm93Olt7Z3JvdzpbIiIsaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sc2hyaW5rOlt7c2hyaW5rOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxvcmRlcjpbe29yZGVyOltpc0ludGVnZXIsImZpcnN0IiwibGFzdCIsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiZ3JpZC1jb2xzIjpbeyJncmlkLWNvbHMiOnNjYWxlR3JpZFRlbXBsYXRlQ29sc1Jvd3MoKX1dLCJjb2wtc3RhcnQtZW5kIjpbe2NvbDpzY2FsZUdyaWRDb2xSb3dTdGFydEFuZEVuZCgpfV0sImNvbC1zdGFydCI6W3siY29sLXN0YXJ0IjpzY2FsZUdyaWRDb2xSb3dTdGFydE9yRW5kKCl9XSwiY29sLWVuZCI6W3siY29sLWVuZCI6c2NhbGVHcmlkQ29sUm93U3RhcnRPckVuZCgpfV0sImdyaWQtcm93cyI6W3siZ3JpZC1yb3dzIjpzY2FsZUdyaWRUZW1wbGF0ZUNvbHNSb3dzKCl9XSwicm93LXN0YXJ0LWVuZCI6W3tyb3c6c2NhbGVHcmlkQ29sUm93U3RhcnRBbmRFbmQoKX1dLCJyb3ctc3RhcnQiOlt7InJvdy1zdGFydCI6c2NhbGVHcmlkQ29sUm93U3RhcnRPckVuZCgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOnNjYWxlR3JpZENvbFJvd1N0YXJ0T3JFbmQoKX1dLCJncmlkLWZsb3ciOlt7ImdyaWQtZmxvdyI6WyJyb3ciLCJjb2wiLCJkZW5zZSIsInJvdy1kZW5zZSIsImNvbC1kZW5zZSJdfV0sImF1dG8tY29scyI6W3siYXV0by1jb2xzIjpzY2FsZUdyaWRBdXRvQ29sc1Jvd3MoKX1dLCJhdXRvLXJvd3MiOlt7ImF1dG8tcm93cyI6c2NhbGVHcmlkQXV0b0NvbHNSb3dzKCl9XSxnYXA6W3tnYXA6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJnYXAteCI6W3siZ2FwLXgiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwiZ2FwLXkiOlt7ImdhcC15IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sImp1c3RpZnktY29udGVudCI6W3tqdXN0aWZ5Olsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSIsIm5vcm1hbCJdfV0sImp1c3RpZnktaXRlbXMiOlt7Imp1c3RpZnktaXRlbXMiOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJzdHJldGNoIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSIsIm5vcm1hbCJdfV0sImp1c3RpZnktc2VsZiI6W3sianVzdGlmeS1zZWxmIjpbImF1dG8iLCJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giLCJjZW50ZXItc2FmZSIsImVuZC1zYWZlIl19XSwiYWxpZ24tY29udGVudCI6W3tjb250ZW50Olsibm9ybWFsIiwic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdfV0sImFsaWduLWl0ZW1zIjpbe2l0ZW1zOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJzdHJldGNoIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSIse2Jhc2VsaW5lOlsiIiwibGFzdCJdfV19XSwiYWxpZ24tc2VsZiI6W3tzZWxmOlsiYXV0byIsInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwic3RyZXRjaCIsImNlbnRlci1zYWZlIiwiZW5kLXNhZmUiLHtiYXNlbGluZTpbIiIsImxhc3QiXX1dfV0sInBsYWNlLWNvbnRlbnQiOlt7InBsYWNlLWNvbnRlbnQiOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdfV0sInBsYWNlLWl0ZW1zIjpbeyJwbGFjZS1pdGVtcyI6WyJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giLCJjZW50ZXItc2FmZSIsImVuZC1zYWZlIiwiYmFzZWxpbmUiXX1dLCJwbGFjZS1zZWxmIjpbeyJwbGFjZS1zZWxmIjpbImF1dG8iLCJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giLCJjZW50ZXItc2FmZSIsImVuZC1zYWZlIl19XSxwOlt7cDpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scHg6W3tweDpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scHk6W3tweTpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scHM6W3twczpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scGU6W3twZTpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scGJzOlt7cGJzOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSxwYmU6W3twYmU6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHB0Olt7cHQ6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHByOlt7cHI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHBiOlt7cGI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHBsOlt7cGw6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLG06W3ttOnNjYWxlTWFyZ2luKCl9XSxteDpbe214OnNjYWxlTWFyZ2luKCl9XSxteTpbe215OnNjYWxlTWFyZ2luKCl9XSxtczpbe21zOnNjYWxlTWFyZ2luKCl9XSxtZTpbe21lOnNjYWxlTWFyZ2luKCl9XSxtYnM6W3ttYnM6c2NhbGVNYXJnaW4oKX1dLG1iZTpbe21iZTpzY2FsZU1hcmdpbigpfV0sbXQ6W3ttdDpzY2FsZU1hcmdpbigpfV0sbXI6W3ttcjpzY2FsZU1hcmdpbigpfV0sbWI6W3ttYjpzY2FsZU1hcmdpbigpfV0sbWw6W3ttbDpzY2FsZU1hcmdpbigpfV0sInNwYWNlLXgiOlt7InNwYWNlLXgiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic3BhY2UteC1yZXZlcnNlIjpbInNwYWNlLXgtcmV2ZXJzZSJdLCJzcGFjZS15IjpbeyJzcGFjZS15IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNwYWNlLXktcmV2ZXJzZSI6WyJzcGFjZS15LXJldmVyc2UiXSxzaXplOlt7c2l6ZTpzY2FsZVNpemluZygpfV0sImlubGluZS1zaXplIjpbe2lubGluZTpbImF1dG8iLC4uLnNjYWxlU2l6aW5nSW5saW5lKCldfV0sIm1pbi1pbmxpbmUtc2l6ZSI6W3sibWluLWlubGluZSI6WyJhdXRvIiwuLi5zY2FsZVNpemluZ0lubGluZSgpXX1dLCJtYXgtaW5saW5lLXNpemUiOlt7Im1heC1pbmxpbmUiOlsibm9uZSIsLi4uc2NhbGVTaXppbmdJbmxpbmUoKV19XSwiYmxvY2stc2l6ZSI6W3tibG9jazpbImF1dG8iLC4uLnNjYWxlU2l6aW5nQmxvY2soKV19XSwibWluLWJsb2NrLXNpemUiOlt7Im1pbi1ibG9jayI6WyJhdXRvIiwuLi5zY2FsZVNpemluZ0Jsb2NrKCldfV0sIm1heC1ibG9jay1zaXplIjpbeyJtYXgtYmxvY2siOlsibm9uZSIsLi4uc2NhbGVTaXppbmdCbG9jaygpXX1dLHc6W3t3OltFLCJzY3JlZW4iLC4uLnNjYWxlU2l6aW5nKCldfV0sIm1pbi13IjpbeyJtaW4tdyI6W0UsInNjcmVlbiIsIm5vbmUiLC4uLnNjYWxlU2l6aW5nKCldfV0sIm1heC13IjpbeyJtYXgtdyI6W0UsInNjcmVlbiIsIm5vbmUiLCJwcm9zZSIse3NjcmVlbjpbeV19LC4uLnNjYWxlU2l6aW5nKCldfV0saDpbe2g6WyJzY3JlZW4iLCJsaCIsLi4uc2NhbGVTaXppbmcoKV19XSwibWluLWgiOlt7Im1pbi1oIjpbInNjcmVlbiIsImxoIiwibm9uZSIsLi4uc2NhbGVTaXppbmcoKV19XSwibWF4LWgiOlt7Im1heC1oIjpbInNjcmVlbiIsImxoIiwuLi5zY2FsZVNpemluZygpXX1dLCJmb250LXNpemUiOlt7dGV4dDpbImJhc2UiLGQsaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aCxpc0FyYml0cmFyeUxlbmd0aF19XSwiZm9udC1zbW9vdGhpbmciOlsiYW50aWFsaWFzZWQiLCJzdWJwaXhlbC1hbnRpYWxpYXNlZCJdLCJmb250LXN0eWxlIjpbIml0YWxpYyIsIm5vdC1pdGFsaWMiXSwiZm9udC13ZWlnaHQiOlt7Zm9udDpbaCxpc0FyYml0cmFyeVZhcmlhYmxlV2VpZ2h0LGlzQXJiaXRyYXJ5V2VpZ2h0XX1dLCJmb250LXN0cmV0Y2giOlt7ImZvbnQtc3RyZXRjaCI6WyJ1bHRyYS1jb25kZW5zZWQiLCJleHRyYS1jb25kZW5zZWQiLCJjb25kZW5zZWQiLCJzZW1pLWNvbmRlbnNlZCIsIm5vcm1hbCIsInNlbWktZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhLWV4cGFuZGVkIiwidWx0cmEtZXhwYW5kZWQiLGlzUGVyY2VudCxpc0FyYml0cmFyeVZhbHVlXX1dLCJmb250LWZhbWlseSI6W3tmb250Oltpc0FyYml0cmFyeVZhcmlhYmxlRmFtaWx5TmFtZSxpc0FyYml0cmFyeUZhbWlseU5hbWUsY119XSwiZm9udC1mZWF0dXJlcyI6W3siZm9udC1mZWF0dXJlcyI6W2lzQXJiaXRyYXJ5VmFsdWVdfV0sImZ2bi1ub3JtYWwiOlsibm9ybWFsLW51bXMiXSwiZnZuLW9yZGluYWwiOlsib3JkaW5hbCJdLCJmdm4tc2xhc2hlZC16ZXJvIjpbInNsYXNoZWQtemVybyJdLCJmdm4tZmlndXJlIjpbImxpbmluZy1udW1zIiwib2xkc3R5bGUtbnVtcyJdLCJmdm4tc3BhY2luZyI6WyJwcm9wb3J0aW9uYWwtbnVtcyIsInRhYnVsYXItbnVtcyJdLCJmdm4tZnJhY3Rpb24iOlsiZGlhZ29uYWwtZnJhY3Rpb25zIiwic3RhY2tlZC1mcmFjdGlvbnMiXSx0cmFja2luZzpbe3RyYWNraW5nOlt2LGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwibGluZS1jbGFtcCI6W3sibGluZS1jbGFtcCI6W2lzTnVtYmVyJDEsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlOdW1iZXJdfV0sbGVhZGluZzpbe2xlYWRpbmc6W2IsLi4uc2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKV19XSwibGlzdC1pbWFnZSI6W3sibGlzdC1pbWFnZSI6WyJub25lIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbImluc2lkZSIsIm91dHNpZGUiXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbImRpc2MiLCJkZWNpbWFsIiwibm9uZSIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJ0ZXh0LWFsaWdubWVudCI6W3t0ZXh0OlsibGVmdCIsImNlbnRlciIsInJpZ2h0IiwianVzdGlmeSIsInN0YXJ0IiwiZW5kIl19XSwicGxhY2Vob2xkZXItY29sb3IiOlt7cGxhY2Vob2xkZXI6c2NhbGVDb2xvcigpfV0sInRleHQtY29sb3IiOlt7dGV4dDpzY2FsZUNvbG9yKCl9XSwidGV4dC1kZWNvcmF0aW9uIjpbInVuZGVybGluZSIsIm92ZXJsaW5lIiwibGluZS10aHJvdWdoIiwibm8tdW5kZXJsaW5lIl0sInRleHQtZGVjb3JhdGlvbi1zdHlsZSI6W3tkZWNvcmF0aW9uOlsic29saWQiLCJkYXNoZWQiLCJkb3R0ZWQiLCJkb3VibGUiLCJ3YXZ5Il19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltpc051bWJlciQxLCJmcm9tLWZvbnQiLCJhdXRvIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5TGVuZ3RoXX1dLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiOlt7ZGVjb3JhdGlvbjpzY2FsZUNvbG9yKCl9XSwidW5kZXJsaW5lLW9mZnNldCI6W3sidW5kZXJsaW5lLW9mZnNldCI6W2lzTnVtYmVyJDEsImF1dG8iLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwidGV4dC10cmFuc2Zvcm0iOlsidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsIm5vcm1hbC1jYXNlIl0sInRleHQtb3ZlcmZsb3ciOlsidHJ1bmNhdGUiLCJ0ZXh0LWVsbGlwc2lzIiwidGV4dC1jbGlwIl0sInRleHQtd3JhcCI6W3t0ZXh0Olsid3JhcCIsIm5vd3JhcCIsImJhbGFuY2UiLCJwcmV0dHkiXX1dLGluZGVudDpbe2luZGVudDpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInZlcnRpY2FsLWFsaWduIjpbe2FsaWduOlsiYmFzZWxpbmUiLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iLCJ0ZXh0LXRvcCIsInRleHQtYm90dG9tIiwic3ViIiwic3VwZXIiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSx3aGl0ZXNwYWNlOlt7d2hpdGVzcGFjZTpbIm5vcm1hbCIsIm5vd3JhcCIsInByZSIsInByZS1saW5lIiwicHJlLXdyYXAiLCJicmVhay1zcGFjZXMiXX1dLGJyZWFrOlt7YnJlYWs6WyJub3JtYWwiLCJ3b3JkcyIsImFsbCIsImtlZXAiXX1dLHdyYXA6W3t3cmFwOlsiYnJlYWstd29yZCIsImFueXdoZXJlIiwibm9ybWFsIl19XSxoeXBoZW5zOlt7aHlwaGVuczpbIm5vbmUiLCJtYW51YWwiLCJhdXRvIl19XSxjb250ZW50Olt7Y29udGVudDpbIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmctYXR0YWNobWVudCI6W3tiZzpbImZpeGVkIiwibG9jYWwiLCJzY3JvbGwiXX1dLCJiZy1jbGlwIjpbeyJiZy1jbGlwIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwidGV4dCJdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50Il19XSwiYmctcG9zaXRpb24iOlt7Ymc6c2NhbGVCZ1Bvc2l0aW9uKCl9XSwiYmctcmVwZWF0Ijpbe2JnOlsibm8tcmVwZWF0Iix7cmVwZWF0OlsiIiwieCIsInkiLCJzcGFjZSIsInJvdW5kIl19XX1dLCJiZy1zaXplIjpbe2JnOnNjYWxlQmdTaXplKCl9XSwiYmctaW1hZ2UiOlt7Ymc6WyJub25lIix7bGluZWFyOlt7dG86WyJ0IiwidHIiLCJyIiwiYnIiLCJiIiwiYmwiLCJsIiwidGwiXX0saXNJbnRlZ2VyLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0scmFkaWFsOlsiIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLGNvbmljOltpc0ludGVnZXIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX0saXNBcmJpdHJhcnlWYXJpYWJsZUltYWdlLGlzQXJiaXRyYXJ5SW1hZ2VdfV0sImJnLWNvbG9yIjpbe2JnOnNjYWxlQ29sb3IoKX1dLCJncmFkaWVudC1mcm9tLXBvcyI6W3tmcm9tOnNjYWxlR3JhZGllbnRTdG9wUG9zaXRpb24oKX1dLCJncmFkaWVudC12aWEtcG9zIjpbe3ZpYTpzY2FsZUdyYWRpZW50U3RvcFBvc2l0aW9uKCl9XSwiZ3JhZGllbnQtdG8tcG9zIjpbe3RvOnNjYWxlR3JhZGllbnRTdG9wUG9zaXRpb24oKX1dLCJncmFkaWVudC1mcm9tIjpbe2Zyb206c2NhbGVDb2xvcigpfV0sImdyYWRpZW50LXZpYSI6W3t2aWE6c2NhbGVDb2xvcigpfV0sImdyYWRpZW50LXRvIjpbe3RvOnNjYWxlQ29sb3IoKX1dLHJvdW5kZWQ6W3tyb3VuZGVkOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1zIjpbeyJyb3VuZGVkLXMiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1lIjpbeyJyb3VuZGVkLWUiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC10IjpbeyJyb3VuZGVkLXQiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1yIjpbeyJyb3VuZGVkLXIiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1iIjpbeyJyb3VuZGVkLWIiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1sIjpbeyJyb3VuZGVkLWwiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1zcyI6W3sicm91bmRlZC1zcyI6c2NhbGVSYWRpdXMoKX1dLCJyb3VuZGVkLXNlIjpbeyJyb3VuZGVkLXNlIjpzY2FsZVJhZGl1cygpfV0sInJvdW5kZWQtZWUiOlt7InJvdW5kZWQtZWUiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1lcyI6W3sicm91bmRlZC1lcyI6c2NhbGVSYWRpdXMoKX1dLCJyb3VuZGVkLXRsIjpbeyJyb3VuZGVkLXRsIjpzY2FsZVJhZGl1cygpfV0sInJvdW5kZWQtdHIiOlt7InJvdW5kZWQtdHIiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1iciI6W3sicm91bmRlZC1iciI6c2NhbGVSYWRpdXMoKX1dLCJyb3VuZGVkLWJsIjpbeyJyb3VuZGVkLWJsIjpzY2FsZVJhZGl1cygpfV0sImJvcmRlci13Ijpbe2JvcmRlcjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXcteCI6W3siYm9yZGVyLXgiOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJib3JkZXItdy15IjpbeyJib3JkZXIteSI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImJvcmRlci13LXMiOlt7ImJvcmRlci1zIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXctZSI6W3siYm9yZGVyLWUiOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJib3JkZXItdy1icyI6W3siYm9yZGVyLWJzIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXctYmUiOlt7ImJvcmRlci1iZSI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImJvcmRlci13LXQiOlt7ImJvcmRlci10IjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXctciI6W3siYm9yZGVyLXIiOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJib3JkZXItdy1iIjpbeyJib3JkZXItYiI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImJvcmRlci13LWwiOlt7ImJvcmRlci1sIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiZGl2aWRlLXgiOlt7ImRpdmlkZS14IjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiZGl2aWRlLXgtcmV2ZXJzZSI6WyJkaXZpZGUteC1yZXZlcnNlIl0sImRpdmlkZS15IjpbeyJkaXZpZGUteSI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImRpdmlkZS15LXJldmVyc2UiOlsiZGl2aWRlLXktcmV2ZXJzZSJdLCJib3JkZXItc3R5bGUiOlt7Ym9yZGVyOlsic29saWQiLCJkYXNoZWQiLCJkb3R0ZWQiLCJkb3VibGUiLCJoaWRkZW4iLCJub25lIl19XSwiZGl2aWRlLXN0eWxlIjpbe2RpdmlkZTpbInNvbGlkIiwiZGFzaGVkIiwiZG90dGVkIiwiZG91YmxlIiwiaGlkZGVuIiwibm9uZSJdfV0sImJvcmRlci1jb2xvciI6W3tib3JkZXI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci14IjpbeyJib3JkZXIteCI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci15IjpbeyJib3JkZXIteSI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci1zIjpbeyJib3JkZXItcyI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci1lIjpbeyJib3JkZXItZSI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci1icyI6W3siYm9yZGVyLWJzIjpzY2FsZUNvbG9yKCl9XSwiYm9yZGVyLWNvbG9yLWJlIjpbeyJib3JkZXItYmUiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItdCI6W3siYm9yZGVyLXQiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItciI6W3siYm9yZGVyLXIiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItYiI6W3siYm9yZGVyLWIiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItbCI6W3siYm9yZGVyLWwiOnNjYWxlQ29sb3IoKX1dLCJkaXZpZGUtY29sb3IiOlt7ZGl2aWRlOnNjYWxlQ29sb3IoKX1dLCJvdXRsaW5lLXN0eWxlIjpbe291dGxpbmU6WyJzb2xpZCIsImRhc2hlZCIsImRvdHRlZCIsImRvdWJsZSIsIm5vbmUiLCJoaWRkZW4iXX1dLCJvdXRsaW5lLW9mZnNldCI6W3sib3V0bGluZS1vZmZzZXQiOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwib3V0bGluZS13Ijpbe291dGxpbmU6WyIiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aCxpc0FyYml0cmFyeUxlbmd0aF19XSwib3V0bGluZS1jb2xvciI6W3tvdXRsaW5lOnNjYWxlQ29sb3IoKX1dLHNoYWRvdzpbe3NoYWRvdzpbIiIsIm5vbmUiLFQsaXNBcmJpdHJhcnlWYXJpYWJsZVNoYWRvdyxpc0FyYml0cmFyeVNoYWRvd119XSwic2hhZG93LWNvbG9yIjpbe3NoYWRvdzpzY2FsZUNvbG9yKCl9XSwiaW5zZXQtc2hhZG93IjpbeyJpbnNldC1zaGFkb3ciOlsibm9uZSIsTixpc0FyYml0cmFyeVZhcmlhYmxlU2hhZG93LGlzQXJiaXRyYXJ5U2hhZG93XX1dLCJpbnNldC1zaGFkb3ctY29sb3IiOlt7Imluc2V0LXNoYWRvdyI6c2NhbGVDb2xvcigpfV0sInJpbmctdyI6W3tyaW5nOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJyaW5nLXctaW5zZXQiOlsicmluZy1pbnNldCJdLCJyaW5nLWNvbG9yIjpbe3Jpbmc6c2NhbGVDb2xvcigpfV0sInJpbmctb2Zmc2V0LXciOlt7InJpbmctb2Zmc2V0IjpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeUxlbmd0aF19XSwicmluZy1vZmZzZXQtY29sb3IiOlt7InJpbmctb2Zmc2V0IjpzY2FsZUNvbG9yKCl9XSwiaW5zZXQtcmluZy13IjpbeyJpbnNldC1yaW5nIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiaW5zZXQtcmluZy1jb2xvciI6W3siaW5zZXQtcmluZyI6c2NhbGVDb2xvcigpfV0sInRleHQtc2hhZG93IjpbeyJ0ZXh0LXNoYWRvdyI6WyJub25lIixPLGlzQXJiaXRyYXJ5VmFyaWFibGVTaGFkb3csaXNBcmJpdHJhcnlTaGFkb3ddfV0sInRleHQtc2hhZG93LWNvbG9yIjpbeyJ0ZXh0LXNoYWRvdyI6c2NhbGVDb2xvcigpfV0sb3BhY2l0eTpbe29wYWNpdHk6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJtaXgtYmxlbmQiOlt7Im1peC1ibGVuZCI6WyJub3JtYWwiLCJtdWx0aXBseSIsInNjcmVlbiIsIm92ZXJsYXkiLCJkYXJrZW4iLCJsaWdodGVuIiwiY29sb3ItZG9kZ2UiLCJjb2xvci1idXJuIiwiaGFyZC1saWdodCIsInNvZnQtbGlnaHQiLCJkaWZmZXJlbmNlIiwiZXhjbHVzaW9uIiwiaHVlIiwic2F0dXJhdGlvbiIsImNvbG9yIiwibHVtaW5vc2l0eSIsInBsdXMtZGFya2VyIiwicGx1cy1saWdodGVyIl19XSwiYmctYmxlbmQiOlt7ImJnLWJsZW5kIjpbIm5vcm1hbCIsIm11bHRpcGx5Iiwic2NyZWVuIiwib3ZlcmxheSIsImRhcmtlbiIsImxpZ2h0ZW4iLCJjb2xvci1kb2RnZSIsImNvbG9yLWJ1cm4iLCJoYXJkLWxpZ2h0Iiwic29mdC1saWdodCIsImRpZmZlcmVuY2UiLCJleGNsdXNpb24iLCJodWUiLCJzYXR1cmF0aW9uIiwiY29sb3IiLCJsdW1pbm9zaXR5Il19XSwibWFzay1jbGlwIjpbeyJtYXNrLWNsaXAiOlsiYm9yZGVyIiwicGFkZGluZyIsImNvbnRlbnQiLCJmaWxsIiwic3Ryb2tlIiwidmlldyJdfSwibWFzay1uby1jbGlwIl0sIm1hc2stY29tcG9zaXRlIjpbe21hc2s6WyJhZGQiLCJzdWJ0cmFjdCIsImludGVyc2VjdCIsImV4Y2x1ZGUiXX1dLCJtYXNrLWltYWdlLWxpbmVhci1wb3MiOlt7Im1hc2stbGluZWFyIjpbaXNOdW1iZXIkMV19XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1wb3MiOlt7Im1hc2stbGluZWFyLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpzY2FsZU1hc2tJbWFnZVBvc2l0aW9uKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtbGluZWFyLXRvLWNvbG9yIjpbeyJtYXNrLWxpbmVhci10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtdC1mcm9tLXBvcyI6W3sibWFzay10LWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXQtdG8tcG9zIjpbeyJtYXNrLXQtdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXQtZnJvbS1jb2xvciI6W3sibWFzay10LWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2Utci1mcm9tLXBvcyI6W3sibWFzay1yLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXItdG8tcG9zIjpbeyJtYXNrLXItdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXItZnJvbS1jb2xvciI6W3sibWFzay1yLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXItdG8tY29sb3IiOlt7Im1hc2stci10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtYi1mcm9tLXBvcyI6W3sibWFzay1iLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLWItdG8tY29sb3IiOlt7Im1hc2stYi10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtbC1mcm9tLXBvcyI6W3sibWFzay1sLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWwtdG8tcG9zIjpbeyJtYXNrLWwtdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWwtZnJvbS1jb2xvciI6W3sibWFzay1sLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UteC1mcm9tLXBvcyI6W3sibWFzay14LWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXgtdG8tcG9zIjpbeyJtYXNrLXgtdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXgtZnJvbS1jb2xvciI6W3sibWFzay14LWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXgtdG8tY29sb3IiOlt7Im1hc2steC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UteS1mcm9tLXBvcyI6W3sibWFzay15LWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXktdG8tY29sb3IiOlt7Im1hc2steS10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtcmFkaWFsIjpbeyJtYXNrLXJhZGlhbCI6W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1wb3MiOlt7Im1hc2stcmFkaWFsLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXJhZGlhbC10by1wb3MiOlt7Im1hc2stcmFkaWFsLXRvIjpzY2FsZU1hc2tJbWFnZVBvc2l0aW9uKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1jb2xvciI6W3sibWFzay1yYWRpYWwtZnJvbSI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXRvLWNvbG9yIjpbeyJtYXNrLXJhZGlhbC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6WyJjaXJjbGUiLCJlbGxpcHNlIl19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbInNpZGUiLCJjb3JuZXIiXSxmYXJ0aGVzdDpbInNpZGUiLCJjb3JuZXIiXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOlsiY2VudGVyIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwidG9wLWxlZnQiLCJsZWZ0LXRvcCIsInRvcC1yaWdodCIsInJpZ2h0LXRvcCIsImJvdHRvbS1yaWdodCIsInJpZ2h0LWJvdHRvbSIsImJvdHRvbS1sZWZ0IiwibGVmdC1ib3R0b20iXX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W2lzTnVtYmVyJDFdfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1wb3MiOlt7Im1hc2stY29uaWMtZnJvbSI6c2NhbGVNYXNrSW1hZ2VQb3NpdGlvbigpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tcG9zIjpbeyJtYXNrLWNvbmljLXRvIjpzY2FsZU1hc2tJbWFnZVBvc2l0aW9uKCl9XSwibWFzay1pbWFnZS1jb25pYy1mcm9tLWNvbG9yIjpbeyJtYXNrLWNvbmljLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLWNvbG9yIjpbeyJtYXNrLWNvbmljLXRvIjpzY2FsZUNvbG9yKCl9XSwibWFzay1tb2RlIjpbe21hc2s6WyJhbHBoYSIsImx1bWluYW5jZSIsIm1hdGNoIl19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwiZmlsbCIsInN0cm9rZSIsInZpZXciXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6c2NhbGVCZ1Bvc2l0aW9uKCl9XSwibWFzay1yZXBlYXQiOlt7bWFzazpbIm5vLXJlcGVhdCIse3JlcGVhdDpbIiIsIngiLCJ5Iiwic3BhY2UiLCJyb3VuZCJdfV19XSwibWFzay1zaXplIjpbe21hc2s6c2NhbGVCZ1NpemUoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6WyJhbHBoYSIsImx1bWluYW5jZSJdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxmaWx0ZXI6W3tmaWx0ZXI6WyIiLCJub25lIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sYmx1cjpbe2JsdXI6c2NhbGVCbHVyKCl9XSxicmlnaHRuZXNzOlt7YnJpZ2h0bmVzczpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sY29udHJhc3Q6W3tjb250cmFzdDpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImRyb3Atc2hhZG93IjpbeyJkcm9wLXNoYWRvdyI6WyIiLCJub25lIixSLGlzQXJiaXRyYXJ5VmFyaWFibGVTaGFkb3csaXNBcmJpdHJhcnlTaGFkb3ddfV0sImRyb3Atc2hhZG93LWNvbG9yIjpbeyJkcm9wLXNoYWRvdyI6c2NhbGVDb2xvcigpfV0sZ3JheXNjYWxlOlt7Z3JheXNjYWxlOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiaHVlLXJvdGF0ZSI6W3siaHVlLXJvdGF0ZSI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLGludmVydDpbe2ludmVydDpbIiIsaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sc2F0dXJhdGU6W3tzYXR1cmF0ZTpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sc2VwaWE6W3tzZXBpYTpbIiIsaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImJhY2tkcm9wLWZpbHRlciI6W3siYmFja2Ryb3AtZmlsdGVyIjpbIiIsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmFja2Ryb3AtYmx1ciI6W3siYmFja2Ryb3AtYmx1ciI6c2NhbGVCbHVyKCl9XSwiYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W3siYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1jb250cmFzdCI6W3siYmFja2Ryb3AtY29udHJhc3QiOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmFja2Ryb3AtZ3JheXNjYWxlIjpbeyJiYWNrZHJvcC1ncmF5c2NhbGUiOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W3siYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1pbnZlcnQiOlt7ImJhY2tkcm9wLWludmVydCI6WyIiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1vcGFjaXR5IjpbeyJiYWNrZHJvcC1vcGFjaXR5IjpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImJhY2tkcm9wLXNhdHVyYXRlIjpbeyJiYWNrZHJvcC1zYXR1cmF0ZSI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1zZXBpYSI6W3siYmFja2Ryb3Atc2VwaWEiOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYm9yZGVyLWNvbGxhcHNlIjpbe2JvcmRlcjpbImNvbGxhcHNlIiwic2VwYXJhdGUiXX1dLCJib3JkZXItc3BhY2luZyI6W3siYm9yZGVyLXNwYWNpbmciOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwiYm9yZGVyLXNwYWNpbmcteCI6W3siYm9yZGVyLXNwYWNpbmcteCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJib3JkZXItc3BhY2luZy15IjpbeyJib3JkZXItc3BhY2luZy15IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInRhYmxlLWxheW91dCI6W3t0YWJsZTpbImF1dG8iLCJmaXhlZCJdfV0sY2FwdGlvbjpbe2NhcHRpb246WyJ0b3AiLCJib3R0b20iXX1dLHRyYW5zaXRpb246W3t0cmFuc2l0aW9uOlsiIiwiYWxsIiwiY29sb3JzIiwib3BhY2l0eSIsInNoYWRvdyIsInRyYW5zZm9ybSIsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwidHJhbnNpdGlvbi1iZWhhdmlvciI6W3t0cmFuc2l0aW9uOlsibm9ybWFsIiwiZGlzY3JldGUiXX1dLGR1cmF0aW9uOlt7ZHVyYXRpb246W2lzTnVtYmVyJDEsImluaXRpYWwiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxlYXNlOlt7ZWFzZTpbImxpbmVhciIsImluaXRpYWwiLCQsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLGRlbGF5Olt7ZGVsYXk6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLGFuaW1hdGU6W3thbmltYXRlOlsibm9uZSIsRixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sYmFja2ZhY2U6W3tiYWNrZmFjZTpbImhpZGRlbiIsInZpc2libGUiXX1dLHBlcnNwZWN0aXZlOlt7cGVyc3BlY3RpdmU6W0QsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJwZXJzcGVjdGl2ZS1vcmlnaW4iOlt7InBlcnNwZWN0aXZlLW9yaWdpbiI6c2NhbGVQb3NpdGlvbldpdGhBcmJpdHJhcnkoKX1dLHJvdGF0ZTpbe3JvdGF0ZTpzY2FsZVJvdGF0ZSgpfV0sInJvdGF0ZS14IjpbeyJyb3RhdGUteCI6c2NhbGVSb3RhdGUoKX1dLCJyb3RhdGUteSI6W3sicm90YXRlLXkiOnNjYWxlUm90YXRlKCl9XSwicm90YXRlLXoiOlt7InJvdGF0ZS16IjpzY2FsZVJvdGF0ZSgpfV0sc2NhbGU6W3tzY2FsZTpzY2FsZVNjYWxlKCl9XSwic2NhbGUteCI6W3sic2NhbGUteCI6c2NhbGVTY2FsZSgpfV0sInNjYWxlLXkiOlt7InNjYWxlLXkiOnNjYWxlU2NhbGUoKX1dLCJzY2FsZS16IjpbeyJzY2FsZS16IjpzY2FsZVNjYWxlKCl9XSwic2NhbGUtM2QiOlsic2NhbGUtM2QiXSxza2V3Olt7c2tldzpzY2FsZVNrZXcoKX1dLCJza2V3LXgiOlt7InNrZXcteCI6c2NhbGVTa2V3KCl9XSwic2tldy15IjpbeyJza2V3LXkiOnNjYWxlU2tldygpfV0sdHJhbnNmb3JtOlt7dHJhbnNmb3JtOltpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWUsIiIsIm5vbmUiLCJncHUiLCJjcHUiXX1dLCJ0cmFuc2Zvcm0tb3JpZ2luIjpbe29yaWdpbjpzY2FsZVBvc2l0aW9uV2l0aEFyYml0cmFyeSgpfV0sInRyYW5zZm9ybS1zdHlsZSI6W3t0cmFuc2Zvcm06WyIzZCIsImZsYXQiXX1dLHRyYW5zbGF0ZTpbe3RyYW5zbGF0ZTpzY2FsZVRyYW5zbGF0ZSgpfV0sInRyYW5zbGF0ZS14IjpbeyJ0cmFuc2xhdGUteCI6c2NhbGVUcmFuc2xhdGUoKX1dLCJ0cmFuc2xhdGUteSI6W3sidHJhbnNsYXRlLXkiOnNjYWxlVHJhbnNsYXRlKCl9XSwidHJhbnNsYXRlLXoiOlt7InRyYW5zbGF0ZS16IjpzY2FsZVRyYW5zbGF0ZSgpfV0sInRyYW5zbGF0ZS1ub25lIjpbInRyYW5zbGF0ZS1ub25lIl0sYWNjZW50Olt7YWNjZW50OnNjYWxlQ29sb3IoKX1dLGFwcGVhcmFuY2U6W3thcHBlYXJhbmNlOlsibm9uZSIsImF1dG8iXX1dLCJjYXJldC1jb2xvciI6W3tjYXJldDpzY2FsZUNvbG9yKCl9XSwiY29sb3Itc2NoZW1lIjpbe3NjaGVtZTpbIm5vcm1hbCIsImRhcmsiLCJsaWdodCIsImxpZ2h0LWRhcmsiLCJvbmx5LWRhcmsiLCJvbmx5LWxpZ2h0Il19XSxjdXJzb3I6W3tjdXJzb3I6WyJhdXRvIiwiZGVmYXVsdCIsInBvaW50ZXIiLCJ3YWl0IiwidGV4dCIsIm1vdmUiLCJoZWxwIiwibm90LWFsbG93ZWQiLCJub25lIiwiY29udGV4dC1tZW51IiwicHJvZ3Jlc3MiLCJjZWxsIiwiY3Jvc3NoYWlyIiwidmVydGljYWwtdGV4dCIsImFsaWFzIiwiY29weSIsIm5vLWRyb3AiLCJncmFiIiwiZ3JhYmJpbmciLCJhbGwtc2Nyb2xsIiwiY29sLXJlc2l6ZSIsInJvdy1yZXNpemUiLCJuLXJlc2l6ZSIsImUtcmVzaXplIiwicy1yZXNpemUiLCJ3LXJlc2l6ZSIsIm5lLXJlc2l6ZSIsIm53LXJlc2l6ZSIsInNlLXJlc2l6ZSIsInN3LXJlc2l6ZSIsImV3LXJlc2l6ZSIsIm5zLXJlc2l6ZSIsIm5lc3ctcmVzaXplIiwibndzZS1yZXNpemUiLCJ6b29tLWluIiwiem9vbS1vdXQiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiZmllbGQtc2l6aW5nIjpbeyJmaWVsZC1zaXppbmciOlsiZml4ZWQiLCJjb250ZW50Il19XSwicG9pbnRlci1ldmVudHMiOlt7InBvaW50ZXItZXZlbnRzIjpbImF1dG8iLCJub25lIl19XSxyZXNpemU6W3tyZXNpemU6WyJub25lIiwiIiwieSIsIngiXX1dLCJzY3JvbGwtYmVoYXZpb3IiOlt7c2Nyb2xsOlsiYXV0byIsInNtb290aCJdfV0sInNjcm9sbC1tIjpbeyJzY3JvbGwtbSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbXgiOlt7InNjcm9sbC1teCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbXkiOlt7InNjcm9sbC1teSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbXMiOlt7InNjcm9sbC1tcyI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbWUiOlt7InNjcm9sbC1tZSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbWJzIjpbeyJzY3JvbGwtbWJzIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1tYmUiOlt7InNjcm9sbC1tYmUiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW10IjpbeyJzY3JvbGwtbXQiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW1yIjpbeyJzY3JvbGwtbXIiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW1iIjpbeyJzY3JvbGwtbWIiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW1sIjpbeyJzY3JvbGwtbWwiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLXAiOlt7InNjcm9sbC1wIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1weCI6W3sic2Nyb2xsLXB4IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1weSI6W3sic2Nyb2xsLXB5IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1wcyI6W3sic2Nyb2xsLXBzIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1wZSI6W3sic2Nyb2xsLXBlIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1wYnMiOlt7InNjcm9sbC1wYnMiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLXBiZSI6W3sic2Nyb2xsLXBiZSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcHQiOlt7InNjcm9sbC1wdCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcHIiOlt7InNjcm9sbC1wciI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcGIiOlt7InNjcm9sbC1wYiI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcGwiOlt7InNjcm9sbC1wbCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzbmFwLWFsaWduIjpbe3NuYXA6WyJzdGFydCIsImVuZCIsImNlbnRlciIsImFsaWduLW5vbmUiXX1dLCJzbmFwLXN0b3AiOlt7c25hcDpbIm5vcm1hbCIsImFsd2F5cyJdfV0sInNuYXAtdHlwZSI6W3tzbmFwOlsibm9uZSIsIngiLCJ5IiwiYm90aCJdfV0sInNuYXAtc3RyaWN0bmVzcyI6W3tzbmFwOlsibWFuZGF0b3J5IiwicHJveGltaXR5Il19XSx0b3VjaDpbe3RvdWNoOlsiYXV0byIsIm5vbmUiLCJtYW5pcHVsYXRpb24iXX1dLCJ0b3VjaC14IjpbeyJ0b3VjaC1wYW4iOlsieCIsImxlZnQiLCJyaWdodCJdfV0sInRvdWNoLXkiOlt7InRvdWNoLXBhbiI6WyJ5IiwidXAiLCJkb3duIl19XSwidG91Y2gtcHoiOlsidG91Y2gtcGluY2gtem9vbSJdLHNlbGVjdDpbe3NlbGVjdDpbIm5vbmUiLCJ0ZXh0IiwiYWxsIiwiYXV0byJdfV0sIndpbGwtY2hhbmdlIjpbeyJ3aWxsLWNoYW5nZSI6WyJhdXRvIiwic2Nyb2xsIiwiY29udGVudHMiLCJ0cmFuc2Zvcm0iLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxmaWxsOlt7ZmlsbDpbIm5vbmUiLC4uLnNjYWxlQ29sb3IoKV19XSwic3Ryb2tlLXciOlt7c3Ryb2tlOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGVMZW5ndGgsaXNBcmJpdHJhcnlMZW5ndGgsaXNBcmJpdHJhcnlOdW1iZXJdfV0sc3Ryb2tlOlt7c3Ryb2tlOlsibm9uZSIsLi4uc2NhbGVDb2xvcigpXX1dLCJmb3JjZWQtY29sb3ItYWRqdXN0IjpbeyJmb3JjZWQtY29sb3ItYWRqdXN0IjpbImF1dG8iLCJub25lIl19XX0sY29uZmxpY3RpbmdDbGFzc0dyb3Vwczp7b3ZlcmZsb3c6WyJvdmVyZmxvdy14Iiwib3ZlcmZsb3cteSJdLG92ZXJzY3JvbGw6WyJvdmVyc2Nyb2xsLXgiLCJvdmVyc2Nyb2xsLXkiXSxpbnNldDpbImluc2V0LXgiLCJpbnNldC15IiwiaW5zZXQtYnMiLCJpbnNldC1iZSIsInN0YXJ0IiwiZW5kIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0sImluc2V0LXgiOlsicmlnaHQiLCJsZWZ0Il0sImluc2V0LXkiOlsidG9wIiwiYm90dG9tIl0sZmxleDpbImJhc2lzIiwiZ3JvdyIsInNocmluayJdLGdhcDpbImdhcC14IiwiZ2FwLXkiXSxwOlsicHgiLCJweSIsInBzIiwicGUiLCJwYnMiLCJwYmUiLCJwdCIsInByIiwicGIiLCJwbCJdLHB4OlsicHIiLCJwbCJdLHB5OlsicHQiLCJwYiJdLG06WyJteCIsIm15IiwibXMiLCJtZSIsIm1icyIsIm1iZSIsIm10IiwibXIiLCJtYiIsIm1sIl0sbXg6WyJtciIsIm1sIl0sbXk6WyJtdCIsIm1iIl0sc2l6ZTpbInciLCJoIl0sImZvbnQtc2l6ZSI6WyJsZWFkaW5nIl0sImZ2bi1ub3JtYWwiOlsiZnZuLW9yZGluYWwiLCJmdm4tc2xhc2hlZC16ZXJvIiwiZnZuLWZpZ3VyZSIsImZ2bi1zcGFjaW5nIiwiZnZuLWZyYWN0aW9uIl0sImZ2bi1vcmRpbmFsIjpbImZ2bi1ub3JtYWwiXSwiZnZuLXNsYXNoZWQtemVybyI6WyJmdm4tbm9ybWFsIl0sImZ2bi1maWd1cmUiOlsiZnZuLW5vcm1hbCJdLCJmdm4tc3BhY2luZyI6WyJmdm4tbm9ybWFsIl0sImZ2bi1mcmFjdGlvbiI6WyJmdm4tbm9ybWFsIl0sImxpbmUtY2xhbXAiOlsiZGlzcGxheSIsIm92ZXJmbG93Il0scm91bmRlZDpbInJvdW5kZWQtcyIsInJvdW5kZWQtZSIsInJvdW5kZWQtdCIsInJvdW5kZWQtciIsInJvdW5kZWQtYiIsInJvdW5kZWQtbCIsInJvdW5kZWQtc3MiLCJyb3VuZGVkLXNlIiwicm91bmRlZC1lZSIsInJvdW5kZWQtZXMiLCJyb3VuZGVkLXRsIiwicm91bmRlZC10ciIsInJvdW5kZWQtYnIiLCJyb3VuZGVkLWJsIl0sInJvdW5kZWQtcyI6WyJyb3VuZGVkLXNzIiwicm91bmRlZC1lcyJdLCJyb3VuZGVkLWUiOlsicm91bmRlZC1zZSIsInJvdW5kZWQtZWUiXSwicm91bmRlZC10IjpbInJvdW5kZWQtdGwiLCJyb3VuZGVkLXRyIl0sInJvdW5kZWQtciI6WyJyb3VuZGVkLXRyIiwicm91bmRlZC1iciJdLCJyb3VuZGVkLWIiOlsicm91bmRlZC1iciIsInJvdW5kZWQtYmwiXSwicm91bmRlZC1sIjpbInJvdW5kZWQtdGwiLCJyb3VuZGVkLWJsIl0sImJvcmRlci1zcGFjaW5nIjpbImJvcmRlci1zcGFjaW5nLXgiLCJib3JkZXItc3BhY2luZy15Il0sImJvcmRlci13IjpbImJvcmRlci13LXgiLCJib3JkZXItdy15IiwiYm9yZGVyLXctcyIsImJvcmRlci13LWUiLCJib3JkZXItdy1icyIsImJvcmRlci13LWJlIiwiYm9yZGVyLXctdCIsImJvcmRlci13LXIiLCJib3JkZXItdy1iIiwiYm9yZGVyLXctbCJdLCJib3JkZXItdy14IjpbImJvcmRlci13LXIiLCJib3JkZXItdy1sIl0sImJvcmRlci13LXkiOlsiYm9yZGVyLXctdCIsImJvcmRlci13LWIiXSwiYm9yZGVyLWNvbG9yIjpbImJvcmRlci1jb2xvci14IiwiYm9yZGVyLWNvbG9yLXkiLCJib3JkZXItY29sb3ItcyIsImJvcmRlci1jb2xvci1lIiwiYm9yZGVyLWNvbG9yLWJzIiwiYm9yZGVyLWNvbG9yLWJlIiwiYm9yZGVyLWNvbG9yLXQiLCJib3JkZXItY29sb3ItciIsImJvcmRlci1jb2xvci1iIiwiYm9yZGVyLWNvbG9yLWwiXSwiYm9yZGVyLWNvbG9yLXgiOlsiYm9yZGVyLWNvbG9yLXIiLCJib3JkZXItY29sb3ItbCJdLCJib3JkZXItY29sb3IteSI6WyJib3JkZXItY29sb3ItdCIsImJvcmRlci1jb2xvci1iIl0sdHJhbnNsYXRlOlsidHJhbnNsYXRlLXgiLCJ0cmFuc2xhdGUteSIsInRyYW5zbGF0ZS1ub25lIl0sInRyYW5zbGF0ZS1ub25lIjpbInRyYW5zbGF0ZSIsInRyYW5zbGF0ZS14IiwidHJhbnNsYXRlLXkiLCJ0cmFuc2xhdGUteiJdLCJzY3JvbGwtbSI6WyJzY3JvbGwtbXgiLCJzY3JvbGwtbXkiLCJzY3JvbGwtbXMiLCJzY3JvbGwtbWUiLCJzY3JvbGwtbWJzIiwic2Nyb2xsLW1iZSIsInNjcm9sbC1tdCIsInNjcm9sbC1tciIsInNjcm9sbC1tYiIsInNjcm9sbC1tbCJdLCJzY3JvbGwtbXgiOlsic2Nyb2xsLW1yIiwic2Nyb2xsLW1sIl0sInNjcm9sbC1teSI6WyJzY3JvbGwtbXQiLCJzY3JvbGwtbWIiXSwic2Nyb2xsLXAiOlsic2Nyb2xsLXB4Iiwic2Nyb2xsLXB5Iiwic2Nyb2xsLXBzIiwic2Nyb2xsLXBlIiwic2Nyb2xsLXBicyIsInNjcm9sbC1wYmUiLCJzY3JvbGwtcHQiLCJzY3JvbGwtcHIiLCJzY3JvbGwtcGIiLCJzY3JvbGwtcGwiXSwic2Nyb2xsLXB4IjpbInNjcm9sbC1wciIsInNjcm9sbC1wbCJdLCJzY3JvbGwtcHkiOlsic2Nyb2xsLXB0Iiwic2Nyb2xsLXBiIl0sdG91Y2g6WyJ0b3VjaC14IiwidG91Y2gteSIsInRvdWNoLXB6Il0sInRvdWNoLXgiOlsidG91Y2giXSwidG91Y2gteSI6WyJ0b3VjaCJdLCJ0b3VjaC1weiI6WyJ0b3VjaCJdfSxjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6eyJmb250LXNpemUiOlsibGVhZGluZyJdfSxvcmRlclNlbnNpdGl2ZU1vZGlmaWVyczpbIioiLCIqKiIsImFmdGVyIiwiYmFja2Ryb3AiLCJiZWZvcmUiLCJkZXRhaWxzLWNvbnRlbnQiLCJmaWxlIiwiZmlyc3QtbGV0dGVyIiwiZmlyc3QtbGluZSIsIm1hcmtlciIsInBsYWNlaG9sZGVyIiwic2VsZWN0aW9uIl19fSxvdmVycmlkZVByb3BlcnR5PShlLGMsZCk9Pnt2b2lkIDAhPT1kJiYoZVtjXT1kKX0sb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzPShlLGMpPT57aWYoYylmb3IoY29uc3QgZCBpbiBjKW92ZXJyaWRlUHJvcGVydHkoZSxkLGNbZF0pfSxtZXJnZUNvbmZpZ1Byb3BlcnRpZXM9KGUsYyk9PntpZihjKWZvcihjb25zdCBkIGluIGMpbWVyZ2VBcnJheVByb3BlcnRpZXMoZSxjLGQpfSxtZXJnZUFycmF5UHJvcGVydGllcz0oZSxjLGQpPT57Y29uc3QgaD1jW2RdO3ZvaWQgMCE9PWgmJihlW2RdPWVbZF0/ZVtkXS5jb25jYXQoaCk6aCl9LGV4dGVuZFRhaWx3aW5kTWVyZ2U9KGUsLi4uYyk9PiJmdW5jdGlvbiI9PXR5cGVvZiBlP2NyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZyxlLC4uLmMpOmNyZWF0ZVRhaWx3aW5kTWVyZ2UoKCk9PigoZSx7Y2FjaGVTaXplOmMscHJlZml4OmQsZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWU6aCxleHRlbmQ6dj17fSxvdmVycmlkZTpiPXt9fSk9PihvdmVycmlkZVByb3BlcnR5KGUsImNhY2hlU2l6ZSIsYyksb3ZlcnJpZGVQcm9wZXJ0eShlLCJwcmVmaXgiLGQpLG92ZXJyaWRlUHJvcGVydHkoZSwiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLGgpLG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhlLnRoZW1lLGIudGhlbWUpLG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhlLmNsYXNzR3JvdXBzLGIuY2xhc3NHcm91cHMpLG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhlLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsYi5jb25mbGljdGluZ0NsYXNzR3JvdXBzKSxvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoZS5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMsYi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMpLG92ZXJyaWRlUHJvcGVydHkoZSwib3JkZXJTZW5zaXRpdmVNb2RpZmllcnMiLGIub3JkZXJTZW5zaXRpdmVNb2RpZmllcnMpLG1lcmdlQ29uZmlnUHJvcGVydGllcyhlLnRoZW1lLHYudGhlbWUpLG1lcmdlQ29uZmlnUHJvcGVydGllcyhlLmNsYXNzR3JvdXBzLHYuY2xhc3NHcm91cHMpLG1lcmdlQ29uZmlnUHJvcGVydGllcyhlLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsdi5jb25mbGljdGluZ0NsYXNzR3JvdXBzKSxtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoZS5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMsdi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMpLG1lcmdlQXJyYXlQcm9wZXJ0aWVzKGUsdiwib3JkZXJTZW5zaXRpdmVNb2RpZmllcnMiKSxlKSkoZ2V0RGVmYXVsdENvbmZpZygpLGUpLC4uLmMpLFlyPWNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZyk7Z2xvYmFsVGhpcy4kZmV0Y2h8fChnbG9iYWxUaGlzLiRmZXRjaD1GLmNyZWF0ZSh7YmFzZVVSTDpWKCl9KSksImdsb2JhbCJpbiBnbG9iYWxUaGlzfHwoZ2xvYmFsVGhpcy5nbG9iYWw9Z2xvYmFsVGhpcyk7Y29uc3QgWnI9ITEsZWE9e2NvbXBvbmVudE5hbWU6Ik51eHRMaW5rIn0sdGE9ITEsbmE9e30sb2E9Im51eHQtYXBwIjtmdW5jdGlvbiBnZXROdXh0QXBwQ3R4KGU9b2Epe3JldHVybiBSKGUse2FzeW5jQ29udGV4dDohMX0pfWNvbnN0IHJhPSJfX251eHRfcGx1Z2luIjtmdW5jdGlvbiByZWdpc3RlclBsdWdpbkhvb2tzKGUsYyl7Yy5ob29rcyYmZS5ob29rcy5hZGRIb29rcyhjLmhvb2tzKX1mdW5jdGlvbiBkZWZpbmVOdXh0UGx1Z2luKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlO2NvbnN0IGM9ZS5fbmFtZXx8ZS5uYW1lO3JldHVybiBkZWxldGUgZS5uYW1lLE9iamVjdC5hc3NpZ24oZS5zZXR1cHx8KCgpPT57fSksZSx7W3JhXTohMCxfbmFtZTpjfSl9Y29uc3QgYWE9ZGVmaW5lTnV4dFBsdWdpbjtmdW5jdGlvbiBjYWxsV2l0aE51eHQoZSxjLGQpe2NvbnN0IGZuPSgpPT5jKCksaD1nZXROdXh0QXBwQ3R4KGUuX2lkKTtyZXR1cm4gZS52dWVBcHAucnVuV2l0aENvbnRleHQoKCk9PmguY2FsbEFzeW5jKGUsZm4pKX1mdW5jdGlvbiB1c2VOdXh0QXBwKGUpe2NvbnN0IGM9ZnVuY3Rpb24oZSl7bGV0IGM7cmV0dXJuIFluLmhhc0luamVjdGlvbkNvbnRleHQoKSYmKGM9WW4uZ2V0Q3VycmVudEluc3RhbmNlKCk/LmFwcENvbnRleHQuYXBwLiRudXh0KSxjfHw9Z2V0TnV4dEFwcEN0eChlKS50cnlVc2UoKSxjfHxudWxsfShlKTtpZighYyl0aHJvdyBuZXcgRXJyb3IoIltudXh0XSBpbnN0YW5jZSB1bmF2YWlsYWJsZSIpO3JldHVybiBjfWZ1bmN0aW9uIHVzZVJ1bnRpbWVDb25maWcoZSl7cmV0dXJuIHVzZU51eHRBcHAoKS4kY29uZmlnfWZ1bmN0aW9uIGRlZmluZUdldHRlcihlLGMsZCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYyx7Z2V0OigpPT5kfSl9Y29uc3QgaWE9U3ltYm9sKCJsYXlvdXQtbWV0YSIpLHNhPVN5bWJvbCgicm91dGUiKTtnbG9iYWxUaGlzLl9pbXBvcnRNZXRhXy51cmwucmVwbGFjZSgvXC9hcHBcLy4qJC8sIi8iKTtjb25zdCB1c2VSb3V0ZXI9KCk9PnVzZU51eHRBcHAoKT8uJHJvdXRlcix1c2VSb3V0ZT0oKT0+WW4uaGFzSW5qZWN0aW9uQ29udGV4dCgpP1luLmluamVjdChzYSx1c2VOdXh0QXBwKCkuX3JvdXRlKTp1c2VOdXh0QXBwKCkuX3JvdXRlO2Z1bmN0aW9uIGRlZmluZU51eHRSb3V0ZU1pZGRsZXdhcmUoZSl7cmV0dXJuIGV9Y29uc3QgbGE9LyIvZyxuYXZpZ2F0ZVRvPShoLHYpPT57aHx8PSIvIjtjb25zdCBiPSJzdHJpbmciPT10eXBlb2YgaD9oOiJwYXRoImluIGg/cmVzb2x2ZVJvdXRlT2JqZWN0KGgpOnVzZVJvdXRlcigpLnJlc29sdmUoaCkuaHJlZix5PWUoYix7YWNjZXB0UmVsYXRpdmU6ITB9KSxrPXY/LmV4dGVybmFsfHx5O2lmKGspe2lmKCF2Py5leHRlcm5hbCl0aHJvdyBuZXcgRXJyb3IoIk5hdmlnYXRpbmcgdG8gYW4gZXh0ZXJuYWwgVVJMIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFVzZSBgbmF2aWdhdGVUbyh1cmwsIHsgZXh0ZXJuYWw6IHRydWUgfSlgLiIpO2NvbnN0e3Byb3RvY29sOmV9PW5ldyBVUkwoYiwiaHR0cDovL2xvY2FsaG9zdCIpO2lmKGUmJmMoZSkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbmF2aWdhdGUgdG8gYSBVUkwgd2l0aCAnJHtlfScgcHJvdG9jb2wuYCl9Y29uc3QgXz0oKCk9Pnt0cnl7aWYodXNlTnV4dEFwcCgpLl9wcm9jZXNzaW5nTWlkZGxld2FyZSlyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hMX0pKCksVD11c2VSb3V0ZXIoKSxOPXVzZU51eHRBcHAoKTtpZihOLnNzckNvbnRleHQpe2NvbnN0IGU9InN0cmluZyI9PXR5cGVvZiBofHxrP2I6VC5yZXNvbHZlKGgpLmZ1bGxQYXRofHwiLyIsYz1rP2I6ZCh1c2VSdW50aW1lQ29uZmlnKCkuYXBwLmJhc2VVUkwsZSkscmVkaXJlY3Q9YXN5bmMgZnVuY3Rpb24oZSl7YXdhaXQgTi5jYWxsSG9vaygiYXBwOnJlZGlyZWN0ZWQiKTtjb25zdCBkPWMucmVwbGFjZShsYSwiJTIyIiksaD1mdW5jdGlvbihlLGM9ITEpe2NvbnN0IGQ9bmV3IFVSTChlLCJodHRwOi8vbG9jYWxob3N0Iik7aWYoIWMpcmV0dXJuIGQucGF0aG5hbWUrZC5zZWFyY2grZC5oYXNoO2lmKGUuc3RhcnRzV2l0aCgiLy8iKSlyZXR1cm4gZC50b1N0cmluZygpLnJlcGxhY2UoZC5wcm90b2NvbCwiIik7cmV0dXJuIGQudG9TdHJpbmcoKX0oYyx5KTtyZXR1cm4gTi5zc3JDb250ZXh0WyJ+cmVuZGVyUmVzcG9uc2UiXT17c3RhdHVzQ29kZTpFKHY/LnJlZGlyZWN0Q29kZXx8MzAyLDMwMiksYm9keTpgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPSR7ZH0iPjwvaGVhZD48L2h0bWw+YCxoZWFkZXJzOntsb2NhdGlvbjpofX0sZX07cmV0dXJuIWsmJl8/KFQuYWZ0ZXJFYWNoKGM9PmMuZnVsbFBhdGg9PT1lP3JlZGlyZWN0KCExKTp2b2lkIDApLGgpOnJlZGlyZWN0KCFfJiZ2b2lkIDApfWlmKGspcmV0dXJuIE4uX3Njb3BlLnN0b3AoKSx2Py5yZXBsYWNlPyh2b2lkIDApLnJlcGxhY2UoYik6KHZvaWQgMCkuaHJlZj1iLF8/ISFOLmlzSHlkcmF0aW5nJiZuZXcgUHJvbWlzZSgoKT0+e30pOlByb21pc2UucmVzb2x2ZSgpO2NvbnN0IE89InN0cmluZyI9PXR5cGVvZiBoP2VuY29kZVJvdXRlUGF0aChoKTpoO3JldHVybiB2Py5yZXBsYWNlP1QucmVwbGFjZShPKTpULnB1c2goTyl9O2Z1bmN0aW9uIHJlc29sdmVSb3V0ZU9iamVjdChlKXtyZXR1cm4geShlLnBhdGh8fCIiLGUucXVlcnl8fHt9KSsoZS5oYXNofHwiIil9ZnVuY3Rpb24gZW5jb2RlUm91dGVQYXRoKGUpe2NvbnN0IGM9ayhlKTtyZXR1cm4gXyhUKGMucGF0aG5hbWUpKStjLnNlYXJjaCtjLmhhc2h9Y29uc3QgY2E9Il9fbnV4dF9lcnJvciIsdXNlRXJyb3I9KCk9PlluLnRvUmVmKHVzZU51eHRBcHAoKS5wYXlsb2FkLCJlcnJvciIpLHNob3dFcnJvcj1lPT57Y29uc3QgYz1jcmVhdGVFcnJvcihlKTt0cnl7Y29uc3QgZT11c2VFcnJvcigpOzAsZS52YWx1ZXx8PWN9Y2F0Y2h7dGhyb3cgY31yZXR1cm4gY30saXNOdXh0RXJyb3I9ZT0+ISFlJiYib2JqZWN0Ij09dHlwZW9mIGUmJmNhIGluIGUsY3JlYXRlRXJyb3I9ZT0+eyJzdHJpbmciIT10eXBlb2YgZSYmZS5zdGF0dXNUZXh0JiYoZS5tZXNzYWdlPz89ZS5zdGF0dXNUZXh0KTtjb25zdCBjPVUoZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLGNhLHt2YWx1ZTohMCxjb25maWd1cmFibGU6ITEsd3JpdGFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYywic3RhdHVzIix7Z2V0OigpPT5jLnN0YXR1c0NvZGUsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGMsInN0YXR1c1RleHQiLHtnZXQ6KCk9PmMuc3RhdHVzTWVzc2FnZSxjb25maWd1cmFibGU6ITB9KSxjfTtsZXQgdWE7Y29uc3Qgc2V0QWN0aXZlUGluaWE9ZT0+dWE9ZSxkYT1TeW1ib2woKTtmdW5jdGlvbiBpc1BsYWluT2JqZWN0JDEoZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvSlNPTn12YXIgcGEsZmE7KGZhPXBhfHwocGE9e30pKS5kaXJlY3Q9ImRpcmVjdCIsZmEucGF0Y2hPYmplY3Q9InBhdGNoIG9iamVjdCIsZmEucGF0Y2hGdW5jdGlvbj0icGF0Y2ggZnVuY3Rpb24iO2NvbnN0IG5vb3AkMT0oKT0+e307ZnVuY3Rpb24gYWRkU3Vic2NyaXB0aW9uKGUsYyxkLGg9bm9vcCQxKXtlLmFkZChjKTtjb25zdCByZW1vdmVTdWJzY3JpcHRpb249KCk9PntlLmRlbGV0ZShjKSYmaCgpfTtyZXR1cm4hZCYmWW4uZ2V0Q3VycmVudFNjb3BlKCkmJlluLm9uU2NvcGVEaXNwb3NlKHJlbW92ZVN1YnNjcmlwdGlvbikscmVtb3ZlU3Vic2NyaXB0aW9ufWZ1bmN0aW9uIHRyaWdnZXJTdWJzY3JpcHRpb25zKGUsLi4uYyl7ZS5mb3JFYWNoKGU9PntlKC4uLmMpfSl9Y29uc3QgZmFsbGJhY2tSdW5XaXRoQ29udGV4dD1lPT5lKCksbWE9U3ltYm9sKCksaGE9U3ltYm9sKCk7ZnVuY3Rpb24gbWVyZ2VSZWFjdGl2ZU9iamVjdHMoZSxjKXtlIGluc3RhbmNlb2YgTWFwJiZjIGluc3RhbmNlb2YgTWFwP2MuZm9yRWFjaCgoYyxkKT0+ZS5zZXQoZCxjKSk6ZSBpbnN0YW5jZW9mIFNldCYmYyBpbnN0YW5jZW9mIFNldCYmYy5mb3JFYWNoKGUuYWRkLGUpO2Zvcihjb25zdCBkIGluIGMpe2lmKCFjLmhhc093blByb3BlcnR5KGQpKWNvbnRpbnVlO2NvbnN0IGg9Y1tkXSx2PWVbZF07aXNQbGFpbk9iamVjdCQxKHYpJiZpc1BsYWluT2JqZWN0JDEoaCkmJmUuaGFzT3duUHJvcGVydHkoZCkmJiFZbi5pc1JlZihoKSYmIVluLmlzUmVhY3RpdmUoaCk/ZVtkXT1tZXJnZVJlYWN0aXZlT2JqZWN0cyh2LGgpOmVbZF09aH1yZXR1cm4gZX1jb25zdCBnYT1TeW1ib2woKTtmdW5jdGlvbiBzaG91bGRIeWRyYXRlKGUpe3JldHVybiFpc1BsYWluT2JqZWN0JDEoZSl8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxnYSl9Y29uc3R7YXNzaWduOnZhfT1PYmplY3Q7ZnVuY3Rpb24gaXNDb21wdXRlZChlKXtyZXR1cm4hKCFZbi5pc1JlZihlKXx8IWUuZWZmZWN0KX1mdW5jdGlvbiBjcmVhdGVTZXR1cFN0b3JlKGUsYyxkPXt9LGgsdixiKXtsZXQgeTtjb25zdCBFPXZhKHthY3Rpb25zOnt9fSxkKSxrPXtkZWVwOiEwfTtsZXQgXyxULE4sTz1uZXcgU2V0LFI9bmV3IFNldDtjb25zdCBNPWguc3RhdGUudmFsdWVbZV07bGV0IEQ7ZnVuY3Rpb24gJHBhdGNoKGMpe2xldCBkO189VD0hMSwiZnVuY3Rpb24iPT10eXBlb2YgYz8oYyhoLnN0YXRlLnZhbHVlW2VdKSxkPXt0eXBlOnBhLnBhdGNoRnVuY3Rpb24sc3RvcmVJZDplLGV2ZW50czpOfSk6KG1lcmdlUmVhY3RpdmVPYmplY3RzKGguc3RhdGUudmFsdWVbZV0sYyksZD17dHlwZTpwYS5wYXRjaE9iamVjdCxwYXlsb2FkOmMsc3RvcmVJZDplLGV2ZW50czpOfSk7Y29uc3Qgdj1EPVN5bWJvbCgpO1luLm5leHRUaWNrKCkudGhlbigoKT0+e0Q9PT12JiYoXz0hMCl9KSxUPSEwLHRyaWdnZXJTdWJzY3JpcHRpb25zKE8sZCxoLnN0YXRlLnZhbHVlW2VdKX1ifHxNfHwoaC5zdGF0ZS52YWx1ZVtlXT17fSksWW4ucmVmKHt9KTtjb25zdCBMPWI/ZnVuY3Rpb24oKXtjb25zdHtzdGF0ZTplfT1kLGM9ZT9lKCk6e307dGhpcy4kcGF0Y2goZT0+e3ZhKGUsYyl9KX06bm9vcCQxO2NvbnN0IGFjdGlvbj0oYyxkPSIiKT0+e2lmKG1hIGluIGMpcmV0dXJuIGNbaGFdPWQsYztjb25zdCB3cmFwcGVkQWN0aW9uPWZ1bmN0aW9uKCl7c2V0QWN0aXZlUGluaWEoaCk7Y29uc3QgZD1BcnJheS5mcm9tKGFyZ3VtZW50cyksdj1uZXcgU2V0LGI9bmV3IFNldDtsZXQgeTt0cmlnZ2VyU3Vic2NyaXB0aW9ucyhSLHthcmdzOmQsbmFtZTp3cmFwcGVkQWN0aW9uW2hhXSxzdG9yZTpGLGFmdGVyOmZ1bmN0aW9uKGUpe3YuYWRkKGUpfSxvbkVycm9yOmZ1bmN0aW9uKGUpe2IuYWRkKGUpfX0pO3RyeXt5PWMuYXBwbHkodGhpcyYmdGhpcy4kaWQ9PT1lP3RoaXM6RixkKX1jYXRjaChlKXt0aHJvdyB0cmlnZ2VyU3Vic2NyaXB0aW9ucyhiLGUpLGV9cmV0dXJuIHkgaW5zdGFuY2VvZiBQcm9taXNlP3kudGhlbihlPT4odHJpZ2dlclN1YnNjcmlwdGlvbnModixlKSxlKSkuY2F0Y2goZT0+KHRyaWdnZXJTdWJzY3JpcHRpb25zKGIsZSksUHJvbWlzZS5yZWplY3QoZSkpKToodHJpZ2dlclN1YnNjcmlwdGlvbnModix5KSx5KX07cmV0dXJuIHdyYXBwZWRBY3Rpb25bbWFdPSEwLHdyYXBwZWRBY3Rpb25baGFdPWQsd3JhcHBlZEFjdGlvbn0sJD17X3A6aCwkaWQ6ZSwkb25BY3Rpb246YWRkU3Vic2NyaXB0aW9uLmJpbmQobnVsbCxSKSwkcGF0Y2g6JHBhdGNoLCRyZXNldDpMLCRzdWJzY3JpYmUoYyxkPXt9KXtjb25zdCB2PWFkZFN1YnNjcmlwdGlvbihPLGMsZC5kZXRhY2hlZCwoKT0+YigpKSxiPXkucnVuKCgpPT5Zbi53YXRjaCgoKT0+aC5zdGF0ZS52YWx1ZVtlXSxoPT57KCJzeW5jIj09PWQuZmx1c2g/VDpfKSYmYyh7c3RvcmVJZDplLHR5cGU6cGEuZGlyZWN0LGV2ZW50czpOfSxoKX0sdmEoe30sayxkKSkpO3JldHVybiB2fSwkZGlzcG9zZTpmdW5jdGlvbigpe3kuc3RvcCgpLE8uY2xlYXIoKSxSLmNsZWFyKCksaC5fcy5kZWxldGUoZSl9fSxGPVluLnJlYWN0aXZlKCQpO2guX3Muc2V0KGUsRik7Y29uc3QgVj0oaC5fYSYmaC5fYS5ydW5XaXRoQ29udGV4dHx8ZmFsbGJhY2tSdW5XaXRoQ29udGV4dCkoKCk9PmguX2UucnVuKCgpPT4oeT1Zbi5lZmZlY3RTY29wZSgpKS5ydW4oKCk9PmMoe2FjdGlvbjphY3Rpb259KSkpKTtmb3IoY29uc3QgYyBpbiBWKXtjb25zdCBkPVZbY107aWYoWW4uaXNSZWYoZCkmJiFpc0NvbXB1dGVkKGQpfHxZbi5pc1JlYWN0aXZlKGQpKWJ8fChNJiZzaG91bGRIeWRyYXRlKGQpJiYoWW4uaXNSZWYoZCk/ZC52YWx1ZT1NW2NdOm1lcmdlUmVhY3RpdmVPYmplY3RzKGQsTVtjXSkpLGguc3RhdGUudmFsdWVbZV1bY109ZCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZCl7Y29uc3QgZT1hY3Rpb24oZCxjKTtWW2NdPWUsRS5hY3Rpb25zW2NdPWR9fXJldHVybiB2YShGLFYpLHZhKFluLnRvUmF3KEYpLFYpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLCIkc3RhdGUiLHtnZXQ6KCk9Pmguc3RhdGUudmFsdWVbZV0sc2V0OmU9PnskcGF0Y2goYz0+e3ZhKGMsZSl9KX19KSxoLl9wLmZvckVhY2goZT0+e3ZhKEYseS5ydW4oKCk9PmUoe3N0b3JlOkYsYXBwOmguX2EscGluaWE6aCxvcHRpb25zOkV9KSkpfSksTSYmYiYmZC5oeWRyYXRlJiZkLmh5ZHJhdGUoRi4kc3RhdGUsTSksXz0hMCxUPSEwLEZ9ZnVuY3Rpb24gZGVmaW5lU3RvcmUoZSxjLGQpe2xldCBoO2NvbnN0IHY9ImZ1bmN0aW9uIj09dHlwZW9mIGM7ZnVuY3Rpb24gdXNlU3RvcmUoZCxiKXtjb25zdCB5PVluLmhhc0luamVjdGlvbkNvbnRleHQoKTsoZD1kfHwoeT9Zbi5pbmplY3QoZGEsbnVsbCk6bnVsbCkpJiZzZXRBY3RpdmVQaW5pYShkKSwoZD11YSkuX3MuaGFzKGUpfHwodj9jcmVhdGVTZXR1cFN0b3JlKGUsYyxoLGQpOmZ1bmN0aW9uKGUsYyxkKXtjb25zdHtzdGF0ZTpoLGFjdGlvbnM6dixnZXR0ZXJzOmJ9PWMseT1kLnN0YXRlLnZhbHVlW2VdO2xldCBFO0U9Y3JlYXRlU2V0dXBTdG9yZShlLGZ1bmN0aW9uKCl7eXx8KGQuc3RhdGUudmFsdWVbZV09aD9oKCk6e30pO2NvbnN0IGM9WW4udG9SZWZzKGQuc3RhdGUudmFsdWVbZV0pO3JldHVybiB2YShjLHYsT2JqZWN0LmtleXMoYnx8e30pLnJlZHVjZSgoYyxoKT0+KGNbaF09WW4ubWFya1JhdyhZbi5jb21wdXRlZCgoKT0+e3NldEFjdGl2ZVBpbmlhKGQpO2NvbnN0IGM9ZC5fcy5nZXQoZSk7cmV0dXJuIGJbaF0uY2FsbChjLGMpfSkpLGMpLHt9KSl9LGMsZCwwLCEwKX0oZSxoLGQpKTtyZXR1cm4gZC5fcy5nZXQoZSl9cmV0dXJuIGg9dj9kOmMsdXNlU3RvcmUuJGlkPWUsdXNlU3RvcmV9ZnVuY3Rpb24gdXNlSGVhZChlLGM9e30pe2NvbnN0IGQ9Yy5oZWFkfHxmdW5jdGlvbihlKXtjb25zdCBjPWV8fHVzZU51eHRBcHAoKTtyZXR1cm4gYy5zc3JDb250ZXh0Py5oZWFkfHxjLnJ1bldpdGhDb250ZXh0KCgpPT57aWYoWW4uaGFzSW5qZWN0aW9uQ29udGV4dCgpKXtjb25zdCBlPVluLmluamVjdCh2ZSk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJbbnV4dF0gW3VuaGVhZF0gTWlzc2luZyBVbmhlYWQgaW5zdGFuY2UuIik7cmV0dXJuIGV9fSl9KGMubnV4dCk7cmV0dXJuIGdlKGUse2hlYWQ6ZCwuLi5jfSl9Y29uc3QgYmE9KCgpPT57Y29uc3QgZT17cmVkaXJlY3Q6Ii9vcmdhbml6YXRpb24vbWVtYmVycyJ9LGM9e307cmV0dXJuKGQsaCk9PntsZXQgdj1bXTs0Nz09PWguY2hhckNvZGVBdChoLmxlbmd0aC0xKSYmKGg9aC5zbGljZSgwLC0xKXx8Ii8iKSwiL3VzZXJzIj09PWg/di51bnNoaWZ0KHtkYXRhOmV9KTooIi9hcGkvcGF5bWVudHMvc2VwYXkvd2ViaG9vayI9PT1ofHwiL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvc2VuZCI9PT1ofHwiL2FwaS9zdXBwb3J0L3RpY2tldHMiPT09aHx8Ii9hcGkvc3lzdGVtL3RpY2tldHMiPT09aCkmJnYudW5zaGlmdCh7ZGF0YTpjfSk7bGV0IGI9aC5zcGxpdCgiLyIpLHk9Yi5sZW5ndGg7cmV0dXJuIHk+MSYmKCJhcGkiPT09YlsxXT8oeT4yJiYoInN5c3RlbSI9PT1iWzJdfHwic3VwcG9ydCI9PT1iWzJdP3k+MyYmInRpY2tldHMiPT09YlszXSYmdi51bnNoaWZ0KHtkYXRhOmMscGFyYW1zOntfOmIuc2xpY2UoNCkuam9pbigiLyIpfX0pOigiYXV0aCI9PT1iWzJdfHwiY3JvbiI9PT1iWzJdKSYmdi51bnNoaWZ0KHtkYXRhOmMscGFyYW1zOntfOmIuc2xpY2UoMykuam9pbigiLyIpfX0pKSx2LnVuc2hpZnQoe2RhdGE6YyxwYXJhbXM6e186Yi5zbGljZSgyKS5qb2luKCIvIil9fSkpOiJfX251eHRfaGludHMiPT09YlsxXSYmdi51bnNoaWZ0KHtkYXRhOmMscGFyYW1zOntfOmIuc2xpY2UoMikuam9pbigiLyIpfX0pKSx2LnVuc2hpZnQoe2RhdGE6YyxwYXJhbXM6e186Yi5zbGljZSgxKS5qb2luKCIvIil9fSksdn19KSgpLF9yb3V0ZVJ1bGVzTWF0Y2hlcj1lPT5oKHt9LC4uLmJhKCIiLGUpLm1hcChlPT5lLmRhdGEpLnJldmVyc2UoKSkseWE9X3JvdXRlUnVsZXNNYXRjaGVyO2Z1bmN0aW9uIGRlZmluZVBheWxvYWRSZWR1Y2VyKGUsYyl7dXNlTnV4dEFwcCgpLnNzckNvbnRleHRbIn5wYXlsb2FkUmVkdWNlcnMiXVtlXT1jfWNvbnN0IHhhPWFhKCgpPT57ZGVmaW5lUGF5bG9hZFJlZHVjZXIoInNraXBIeWRyYXRlIixlPT4hc2hvdWxkSHlkcmF0ZShlKSYmMSl9KSxTYT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJudXh0OmhlYWQiLGVuZm9yY2U6InByZSIsc2V0dXAoZSl7Y29uc3QgYz1lLnNzckNvbnRleHQuaGVhZDtlLnZ1ZUFwcC51c2UoYyl9fSk7ZnVuY3Rpb24gdG9BcnJheSQyKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWNvbnN0IEVhPXtjYW46WyJ1c2VyOnJlYWQiXX0sd2E9e2NhbjpbInN5c3RlbTptYW5hZ2UiXSxtaWRkbGV3YXJlOigpPT5uYXZpZ2F0ZVRvKCIvc3lzdGVtL25vdGlmaWNhdGlvbnMiLHtyZXBsYWNlOiEwfSl9LGthPXtjYW46WyJzeXN0ZW06bWFuYWdlIl19LENhPXttaWRkbGV3YXJlOmRlZmluZU51eHRSb3V0ZU1pZGRsZXdhcmUoKCk9Pm5hdmlnYXRlVG8oIi9kYXNoYm9hcmQiLHtyZXBsYWNlOiEwfSkpfSxfYT1be25hbWU6ImF1dGgtbG9naW4iLHBhdGg6Ii9hdXRoL2xvZ2luIixtZXRhOnt1bmF1dGhlbnRpY2F0ZWRPbmx5OiEwLGxheW91dDoiYXV0aCJ9fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9sb2dpbi1ET1FRX2RZOS5tanMiKX0se25hbWU6InNhbmRib3gtaW1wZXJzb25hdGUiLHBhdGg6Ii9zYW5kYm94L2ltcGVyc29uYXRlIixtZXRhOntjYW46WyJ1c2VyOmltcGVyc29uYXRlIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9pbXBlcnNvbmF0ZS1Dc1k5d3JnZi5tanMiKX0se25hbWU6ImpvaW4tdG9rZW4iLHBhdGg6Ii9qb2luLzp0b2tlbigpIixtZXRhOntwdWJsaWM6ITB9fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9fdG9rZW5fLUJNUnZMOXhDLm1qcyIpfSx7bmFtZToicHJvamVjdHMtaWQiLHBhdGg6Ii9wcm9qZWN0cy86aWQoKSIsbWV0YTp7Y2FuOlsicHJvamVjdDpyZWFkIiwicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9faWRfLUR6ZFZ0WWY1Lm1qcyIpfSx7bmFtZToiZGFzaGJvYXJkIixwYXRoOiIvZGFzaGJvYXJkIixjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9kYXNoYm9hcmQta1RWMkFQLXcubWpzIil9LHtuYW1lOiJmb3JiaWRkZW4iLHBhdGg6Ii9mb3JiaWRkZW4iLG1ldGE6e3B1YmxpYzohMH18fHt9LGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL2ZvcmJpZGRlbi1lSHhzR0xLZi5tanMiKX0se25hbWU6RWE/Lm5hbWUscGF0aDoiL29yZ2FuaXphdGlvbiIsbWV0YTpFYXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vb3JnYW5pemF0aW9uLUJacTh6MGRyLm1qcyIpLGNoaWxkcmVuOlt7bmFtZToib3JnYW5pemF0aW9uLWludm9pY2UiLHBhdGg6Imludm9pY2UiLG1ldGE6e2NhbjpbImJpbGxpbmc6cmVhZCIsImJpbGxpbmc6bWFuYWdlIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9pbnZvaWNlLUQ2cEJMeEtMLm1qcyIpfSx7bmFtZToib3JnYW5pemF0aW9uLW1lbWJlcnMiLHBhdGg6Im1lbWJlcnMiLG1ldGE6e2NhbjpbInVzZXI6cmVhZCJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vbWVtYmVycy1EZ3JIOV9IUS5tanMiKX0se25hbWU6Im9yZ2FuaXphdGlvbi1yb2xlcyIscGF0aDoicm9sZXMiLG1ldGE6e2NhbjpbInVzZXI6cmVhZCJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vcm9sZXMtREpNRC1NX3QubWpzIil9LHtuYW1lOiJvcmdhbml6YXRpb24iLHBhdGg6IiIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vaW5kZXgtQzlnME5WazMubWpzIil9XX0se25hbWU6InByb2R1Y3RzIixwYXRoOiIvcHJvZHVjdHMiLG1ldGE6e2NhbjpbInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0Om1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vcHJvZHVjdHMtRGotRE1WYzEubWpzIil9LHtuYW1lOiJwcm9qZWN0cyIscGF0aDoiL3Byb2plY3RzIixtZXRhOntjYW46WyJwcm9qZWN0OnJlYWQiLCJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXX18fHt9LGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL2luZGV4LUMyUU44Z3pFLm1qcyIpfSx7bmFtZToicmVmZXJyYWwiLHBhdGg6Ii9yZWZlcnJhbCIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vcmVmZXJyYWwtQnpQbjQwNFEubWpzIil9LHtuYW1lOnZvaWQgMCxwYXRoOiIvc2V0dGluZ3MiLGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL3NldHRpbmdzLUQ2bkhIS2NULm1qcyIpLGNoaWxkcmVuOlt7bmFtZToic2V0dGluZ3MtYmlsbGluZyIscGF0aDoiYmlsbGluZyIsbWV0YTp7Y2FuOlsiYmlsbGluZzpyZWFkIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9iaWxsaW5nLUJ3cThOWU1fLm1qcyIpfSx7bmFtZToic2V0dGluZ3Mtbm90aWZpY2F0aW9ucyIscGF0aDoibm90aWZpY2F0aW9ucyIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vbm90aWZpY2F0aW9ucy1Ca2ZwNVJhQS5tanMiKX0se25hbWU6InNldHRpbmdzLXNlY3VyaXR5IixwYXRoOiJzZWN1cml0eSIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vc2VjdXJpdHktVWZ6aG15MFIubWpzIil9LHtuYW1lOiJzZXR0aW5ncy1zZWxmLWhvc3QiLHBhdGg6InNlbGYtaG9zdCIsbWV0YTp7Y2FuOlsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vc2VsZi1ob3N0LUJ1ZjRybHFkLm1qcyIpfSx7bmFtZToic2V0dGluZ3MiLHBhdGg6IiIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vaW5kZXgtQnZVUGw4aEQubWpzIil9XX0se25hbWU6InN1cHBvcnQiLHBhdGg6Ii9zdXBwb3J0Iixjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9zdXBwb3J0LUREc3luZ0U1Lm1qcyIpfSx7bmFtZTprYT8ubmFtZSxwYXRoOiIvc3lzdGVtIixtZXRhOmthfHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9zeXN0ZW0tQk44ZTRGb0UubWpzIiksY2hpbGRyZW46W3tuYW1lOiJzeXN0ZW0tbm90aWZpY2F0aW9ucyIscGF0aDoibm90aWZpY2F0aW9ucyIsbWV0YTp7Y2FuOlsic3lzdGVtOm1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vbm90aWZpY2F0aW9ucy1CMG1YVWh2SS5tanMiKX0se25hbWU6InN5c3RlbS10aWNrZXRzIixwYXRoOiJ0aWNrZXRzIixtZXRhOntjYW46WyJzdXBwb3J0Om1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vdGlja2V0cy1CMXJPcnZMaS5tanMiKX0se25hbWU6InN5c3RlbSIscGF0aDoiIixtZXRhOndhfHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9pbmRleC1ldHFzS1otbS5tanMiKX1dfSx7bmFtZToiaW5kZXgiLHBhdGg6Ii8iLG1ldGE6Q2F8fHt9LGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL2luZGV4LUN5UW1INHN0Lm1qcyIpfSx7bmFtZTp2b2lkIDAscGF0aDoiL3VzZXJzIixjb21wb25lbnQ6e319XSxUYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGlzUGxhaW5PYmplY3Q9ZT0+e3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09KGM9ZSxUYS5jYWxsKGMpKTt2YXIgY30sTmE9Lyg6XHcrKVwoW14pXStcKS9nLEFhPS8oOlx3KylbPysqXS9nLE9hPS86XHcrL2c7ZnVuY3Rpb24gZ2VuZXJhdGVSb3V0ZUtleShlKXtjb25zdCBjPWU/Lm1ldGEua2V5Pz9lLnBhdGgucmVwbGFjZShOYSwiJDEiKS5yZXBsYWNlKEFhLCIkMSIpLnJlcGxhY2UoT2EsYz0+ZS5wYXJhbXNbYy5zbGljZSgxKV0/LnRvU3RyaW5nKCl8fCIiKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYz9jKGUpOmN9ZnVuY3Rpb24gdG9BcnJheSQxKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWZ1bmN0aW9uIF9nZXRIYXNoRWxlbWVudFNjcm9sbE1hcmdpblRvcChlKXt0cnl7Y29uc3QgYz0odm9pZCAwKS5xdWVyeVNlbGVjdG9yKGUpO2lmKGMpcmV0dXJuKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoYykuc2Nyb2xsTWFyZ2luVG9wKXx8MCkrKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoKHZvaWQgMCkuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxQYWRkaW5nVG9wKXx8MCl9Y2F0Y2h7fXJldHVybiAwfWZ1bmN0aW9uIF9jYWxjdWxhdGVQb3NpdGlvbihlLGMsZCxoKXtpZihkKXJldHVybiBkO2NvbnN0IHY9ZnVuY3Rpb24oZSxjKXtyZXR1cm4gZSE9PWMmJmMhPT1fbyYmKGdlbmVyYXRlUm91dGVLZXkoZSkhPT1nZW5lcmF0ZVJvdXRlS2V5KGMpfHwhZS5tYXRjaGVkLmV2ZXJ5KChlLGQpPT5lLmNvbXBvbmVudHMmJmUuY29tcG9uZW50cy5kZWZhdWx0PT09Yy5tYXRjaGVkW2RdPy5jb21wb25lbnRzPy5kZWZhdWx0KSl9KGUsYyk7cmV0dXJuIGUuaGFzaD97ZWw6ZS5oYXNoLHRvcDpfZ2V0SGFzaEVsZW1lbnRTY3JvbGxNYXJnaW5Ub3AoZS5oYXNoKSxiZWhhdmlvcjp2P2g6Imluc3RhbnQifTp7bGVmdDowLHRvcDowfX1jb25zdCBJYT17aGFzaE1vZGU6ITEsc2Nyb2xsQmVoYXZpb3JUeXBlOiJhdXRvIiwuLi57c2Nyb2xsQmVoYXZpb3IoZSxjLGQpe2NvbnN0IGg9dXNlTnV4dEFwcCgpLHY9dXNlUm91dGVyKCkub3B0aW9ucz8uc2Nyb2xsQmVoYXZpb3JUeXBlPz8iYXV0byI7aWYoZS5wYXRoLnJlcGxhY2UoL1wvJC8sIiIpPT09Yy5wYXRoLnJlcGxhY2UoL1wvJC8sIiIpKXJldHVybiBjLmhhc2gmJiFlLmhhc2g/e2xlZnQ6MCx0b3A6MH06ISFlLmhhc2gmJntlbDplLmhhc2gsdG9wOl9nZXRIYXNoRWxlbWVudFNjcm9sbE1hcmdpblRvcChlLmhhc2gpLGJlaGF2aW9yOnZ9O3JldHVybiExIT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlLm1ldGEuc2Nyb2xsVG9Ub3A/ZS5tZXRhLnNjcm9sbFRvVG9wKGUsYyk6ZS5tZXRhLnNjcm9sbFRvVG9wKSYmKGM9PT1fbz9fY2FsY3VsYXRlUG9zaXRpb24oZSxjLGQsdik6bmV3IFByb21pc2UoYj0+e2NvbnN0IGRvU2Nyb2xsPSgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5iKF9jYWxjdWxhdGVQb3NpdGlvbihlLGMsZCx2KSkpfTtoLmhvb2tzLmhvb2tPbmNlKCJwYWdlOmxvYWRpbmc6ZW5kIiwoKT0+e2NvbnN0IGU9aFsifnRyYW5zaXRpb25Qcm9taXNlIl07ZT9lLnRoZW4oZG9TY3JvbGwpOmRvU2Nyb2xsKCl9KX0pKX19fSxSYT1kZWZpbmVOdXh0Um91dGVNaWRkbGV3YXJlKGFzeW5jKGUsYyk9PntsZXQgZCxoO2lmKCFlLm1ldGE/LnZhbGlkYXRlKXJldHVybjtjb25zdCB2PShbZCxoXT1XKCgpPT5Qcm9taXNlLnJlc29sdmUoZS5tZXRhLnZhbGlkYXRlKGUpKSksZD1hd2FpdCBkLGgoKSxkKTtpZighMD09PXYpcmV0dXJuO3JldHVybiBjcmVhdGVFcnJvcih7ZmF0YWw6ITEsc3RhdHVzOnYmJih2LnN0YXR1c3x8di5zdGF0dXNDb2RlKXx8NDA0LHN0YXR1c1RleHQ6diYmKHYuc3RhdHVzVGV4dHx8di5zdGF0dXNNZXNzYWdlKXx8YFBhZ2UgTm90IEZvdW5kOiAke2UuZnVsbFBhdGh9YCxkYXRhOntwYXRoOmUuZnVsbFBhdGh9fSl9KTtmdW5jdGlvbiBjcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGU9e30pe2NvbnN0e2R1cmF0aW9uOmM9MmUzLHRocm90dGxlOmQ9MjAwLGhpZGVEZWxheTpoPTUwMCxyZXNldERlbGF5OnY9NDAwfT1lO2UuZXN0aW1hdGVkUHJvZ3Jlc3M7Y29uc3QgYj11c2VOdXh0QXBwKCkseT1Zbi5zaGFsbG93UmVmKDApLEU9WW4uc2hhbGxvd1JlZighMSksaz1Zbi5zaGFsbG93UmVmKCExKTtmdW5jdGlvbiBzZXQoZT0wLGM9e30pe2lmKCFiLmlzSHlkcmF0aW5nKXtpZihlPj0xMDApcmV0dXJuIGZpbmlzaCh7Zm9yY2U6Yy5mb3JjZX0pO3kudmFsdWU9ZTwwPzA6ZSxjLmZvcmNlLEUudmFsdWU9ITB9fWZ1bmN0aW9uIGZpbmlzaChlPXt9KXt5LnZhbHVlPTEwMCxlLmVycm9yJiYoay52YWx1ZT0hMCksZS5mb3JjZSYmKHkudmFsdWU9MCxFLnZhbHVlPSExKX1yZXR1cm57X2NsZWFudXA6KCk9Pnt9LHByb2dyZXNzOlluLmNvbXB1dGVkKCgpPT55LnZhbHVlKSxpc0xvYWRpbmc6WW4uY29tcHV0ZWQoKCk9PkUudmFsdWUpLGVycm9yOlluLmNvbXB1dGVkKCgpPT5rLnZhbHVlKSxzdGFydDooZT17fSk9PntrLnZhbHVlPSExLHNldCgwLGUpfSxzZXQ6c2V0LGZpbmlzaDpmaW5pc2gsY2xlYXI6ZnVuY3Rpb24oKXt9fX1mdW5jdGlvbiB1c2VSZXF1ZXN0RXZlbnQoZSl7cmV0dXJuIGV8fD11c2VOdXh0QXBwKCksZS5zc3JDb250ZXh0Py5ldmVudH1mdW5jdGlvbiB1c2VSZXF1ZXN0SGVhZGVycyhlKXtjb25zdCBjPXVzZVJlcXVlc3RFdmVudCgpLGQ9Yz9iKGMpOnt9O2lmKCFlfHwhYylyZXR1cm4gZDtjb25zdCBoPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGMgb2YgZSl7Y29uc3QgZT1jLnRvTG93ZXJDYXNlKCksdj1kW2VdO3YmJihoW2VdPXYpfXJldHVybiBofWNvbnN0IFBhPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiU2VydmVyUGxhY2Vob2xkZXIiLHJlbmRlcjooKT0+WW4uY3JlYXRlRWxlbWVudEJsb2NrKCJkaXYiKX0pLE1hPVN5bWJvbC5mb3IoIm51eHQ6Y2xpZW50LW9ubHkiKSxEYT1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IkNsaWVudE9ubHkiLGluaGVyaXRBdHRyczohMSxwcm9wczpbImZhbGxiYWNrIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclRhZyIsImZhbGxiYWNrVGFnIl0sc2V0dXAoZSx7c2xvdHM6YyxhdHRyczpkfSl7Y29uc3QgaD1Zbi5zaGFsbG93UmVmKCExKSx2PVluLmdldEN1cnJlbnRJbnN0YW5jZSgpO3JldHVybiB2JiYodi5fbnV4dENsaWVudE9ubHk9ITApLFluLnByb3ZpZGUoTWEsITApLCgpPT57aWYoaC52YWx1ZSl7Y29uc3QgZT1jLmRlZmF1bHQ/LigpO3JldHVybiBlJiYxPT09ZS5sZW5ndGg/W1luLmNsb25lVk5vZGUoZVswXSxkKV06ZX1jb25zdCB2PWMuZmFsbGJhY2t8fGMucGxhY2Vob2xkZXI7aWYodilyZXR1cm4gWW4uaCh2KTtjb25zdCBiPWUuZmFsbGJhY2t8fGUucGxhY2Vob2xkZXJ8fCIiLHk9ZS5mYWxsYmFja1RhZ3x8ZS5wbGFjZWhvbGRlclRhZ3x8InNwYW4iO3JldHVybiBZbi5jcmVhdGVFbGVtZW50QmxvY2soeSxkLGIpfX19KTtmdW5jdGlvbiBkZWZpbmVLZXllZEZ1bmN0aW9uRmFjdG9yeShlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBbbnV4dF0gXGAke2UubmFtZX1cYCBpcyBhIGNvbXBpbGVyIG1hY3JvIGFuZCBjYW5ub3QgYmUgY2FsbGVkIGF0IHJ1bnRpbWUuYCl9LCJfX251eHRfZmFjdG9yeSIse2VudW1lcmFibGU6ITEsZ2V0OigpPT5lLmZhY3Rvcnl9KX1jb25zdCBCYT1kZWZpbmVLZXllZEZ1bmN0aW9uRmFjdG9yeSh7bmFtZToiY3JlYXRlVXNlQXN5bmNEYXRhIixmYWN0b3J5OihlPXt9KT0+ZnVuY3Rpb24oLi4uYyl7Y29uc3QgZD0ic3RyaW5nIj09dHlwZW9mIGNbYy5sZW5ndGgtMV0/Yy5wb3AoKTp2b2lkIDA7KGZ1bmN0aW9uKGUsYyl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiExO2lmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjKXJldHVybiExO3JldHVybiEwfSkoY1swXSxjWzFdKSYmYy51bnNoaWZ0KGQpO2xldFtoLHYsYj17fV09Yztjb25zdCB5PVluLmNvbXB1dGVkKCgpPT5Zbi50b1ZhbHVlKGgpKTtpZigic3RyaW5nIiE9dHlwZW9mIHkudmFsdWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiW251eHRdIFt1c2VBc3luY0RhdGFdIGtleSBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIltudXh0XSBbdXNlQXN5bmNEYXRhXSBoYW5kbGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtjb25zdCBFPSJmdW5jdGlvbiI9PXR5cGVvZiBlLGs9dXNlTnV4dEFwcCgpLF89RT9lKGIpOmU7aWYoIUUpZm9yKGNvbnN0IGUgaW4gXyl2b2lkIDAhPT1fW2VdJiZ2b2lkIDA9PT1iW2VdJiYoYltlXT1fW2VdKTtpZihiLnNlcnZlcj8/PSEwLGIuZGVmYXVsdD8/PWdldERlZmF1bHQsYi5nZXRDYWNoZWREYXRhPz89Z2V0RGVmYXVsdENhY2hlZERhdGEsYi5sYXp5Pz89ITEsYi5pbW1lZGlhdGU/Pz0hMCxiLmRlZXA/Pz10YSxiLmRlZHVwZT8/PSJjYW5jZWwiLEUpZm9yKGNvbnN0IGUgaW4gXyl2b2lkIDAhPT1fW2VdJiYoYltlXT1fW2VdKTtmdW5jdGlvbiBjcmVhdGVJbml0aWFsRmV0Y2goKXtjb25zdCBlPXtjYXVzZToiaW5pdGlhbCIsZGVkdXBlOmIuZGVkdXBlfTtyZXR1cm4gay5fYXN5bmNEYXRhW3kudmFsdWVdPy5faW5pdHx8KGUuY2FjaGVkRGF0YT1iLmdldENhY2hlZERhdGEoeS52YWx1ZSxrLHtjYXVzZToiaW5pdGlhbCJ9KSxrLl9hc3luY0RhdGFbeS52YWx1ZV09ZnVuY3Rpb24oZSxjLGQsaCx2KXtlLnBheWxvYWQuX2Vycm9yc1tjXT8/PXZvaWQgMDtjb25zdCBiPWguZ2V0Q2FjaGVkRGF0YSE9PWdldERlZmF1bHRDYWNoZWREYXRhLHk9ZCxFPWguZGVlcD9Zbi5yZWY6WW4uc2hhbGxvd1JlZixrPXZvaWQgMCE9PXYsXz1lLmhvb2soImFwcDpkYXRhOnJlZnJlc2giLGFzeW5jIGU9PntlJiYhZS5pbmNsdWRlcyhjKXx8YXdhaXQgVC5leGVjdXRlKHtjYXVzZToicmVmcmVzaDpob29rIn0pfSksVD17ZGF0YTpFKGs/djpoLmRlZmF1bHQoKSkscGVuZGluZzpZbi5jb21wdXRlZCgoKT0+InBlbmRpbmciPT09VC5zdGF0dXMudmFsdWUpLGVycm9yOlluLnRvUmVmKGUucGF5bG9hZC5fZXJyb3JzLGMpLHN0YXR1czpZbi5zaGFsbG93UmVmKCJpZGxlIiksZXhlY3V0ZTooLi4uZCk9Pntjb25zdFt2LGJdPWQsRT12JiZ2b2lkIDA9PT1iJiYib2JqZWN0Ij09dHlwZW9mIHY/djp7fTtpZihlLl9hc3luY0RhdGFQcm9taXNlc1tjXSYmImRlZmVyIj09PShFLmRlZHVwZT8/aC5kZWR1cGUpKXJldHVybiBlLl9hc3luY0RhdGFQcm9taXNlc1tjXTt7Y29uc3QgZD0iY2FjaGVkRGF0YSJpbiBFP0UuY2FjaGVkRGF0YTpoLmdldENhY2hlZERhdGEoYyxlLHtjYXVzZTpFLmNhdXNlPz8icmVmcmVzaDptYW51YWwifSk7aWYodm9pZCAwIT09ZClyZXR1cm4gZS5wYXlsb2FkLmRhdGFbY109VC5kYXRhLnZhbHVlPWQsVC5lcnJvci52YWx1ZT12b2lkIDAsVC5zdGF0dXMudmFsdWU9InN1Y2Nlc3MiLFByb21pc2UucmVzb2x2ZShkKX1ULl9hYm9ydENvbnRyb2xsZXImJlQuX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRE9NRXhjZXB0aW9uKCJBc3luY0RhdGEgcmVxdWVzdCBjYW5jZWxsZWQgYnkgZGVkdXBsaWNhdGlvbiIsIkFib3J0RXJyb3IiKSksVC5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIsVC5zdGF0dXMudmFsdWU9InBlbmRpbmciO2NvbnN0IGs9bmV3IEFib3J0Q29udHJvbGxlcixfPW5ldyBQcm9taXNlKChjLGQpPT57dHJ5e2NvbnN0IHY9RS50aW1lb3V0Pz9oLnRpbWVvdXQsYj1mdW5jdGlvbihlLGMsZCl7Y29uc3QgaD1lLmZpbHRlcihlPT4hIWUpO2lmKCJudW1iZXIiPT10eXBlb2YgZCYmZD49MCl7Y29uc3QgZT1BYm9ydFNpZ25hbC50aW1lb3V0Py4oZCk7ZSYmaC5wdXNoKGUpfWlmKEFib3J0U2lnbmFsLmFueSlyZXR1cm4gQWJvcnRTaWduYWwuYW55KGgpO2NvbnN0IHY9bmV3IEFib3J0Q29udHJvbGxlcjtmb3IoY29uc3QgZSBvZiBoKWlmKGUuYWJvcnRlZCl7Y29uc3QgYz1lLnJlYXNvbj8/bmV3IERPTUV4Y2VwdGlvbigiQWJvcnRlZCIsIkFib3J0RXJyb3IiKTt0cnl7di5hYm9ydChjKX1jYXRjaHt2LmFib3J0KCl9cmV0dXJuIHYuc2lnbmFsfWNvbnN0IG9uQWJvcnQ9KCk9Pntjb25zdCBlPWguZmluZChlPT5lLmFib3J0ZWQpLGM9ZT8ucmVhc29uPz9uZXcgRE9NRXhjZXB0aW9uKCJBYm9ydGVkIiwiQWJvcnRFcnJvciIpO3RyeXt2LmFib3J0KGMpfWNhdGNoe3YuYWJvcnQoKX19O2Zvcihjb25zdCBlIG9mIGgpZS5hZGRFdmVudExpc3RlbmVyPy4oImFib3J0IixvbkFib3J0LHtvbmNlOiEwLHNpZ25hbDpjfSk7cmV0dXJuIHYuc2lnbmFsfShbVC5fYWJvcnRDb250cm9sbGVyPy5zaWduYWwsRT8uc2lnbmFsXSxrLnNpZ25hbCx2KTtpZihiLmFib3J0ZWQpe2NvbnN0IGU9Yi5yZWFzb247cmV0dXJuIHZvaWQgZChlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRE9NRXhjZXB0aW9uKFN0cmluZyhlPz8iQWJvcnRlZCIpLCJBYm9ydEVycm9yIikpfXJldHVybiBiLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NvbnN0IGU9Yi5yZWFzb247ZChlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRE9NRXhjZXB0aW9uKFN0cmluZyhlPz8iQWJvcnRlZCIpLCJBYm9ydEVycm9yIikpfSx7b25jZTohMCxzaWduYWw6ay5zaWduYWx9KSxQcm9taXNlLnJlc29sdmUoeShlLHtzaWduYWw6Yn0pKS50aGVuKGMsZCl9Y2F0Y2goZSl7ZChlKX19KS50aGVuKGFzeW5jIGQ9PntsZXQgdj1kO2gudHJhbnNmb3JtJiYodj1hd2FpdCBoLnRyYW5zZm9ybShkKSksaC5waWNrJiYodj1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9e307Zm9yKGNvbnN0IGggb2YgYylkW2hdPWVbaF07cmV0dXJuIGR9KHYsaC5waWNrKSksZS5wYXlsb2FkLmRhdGFbY109dixULmRhdGEudmFsdWU9dixULmVycm9yLnZhbHVlPXZvaWQgMCxULnN0YXR1cy52YWx1ZT0ic3VjY2VzcyJ9KS5jYXRjaChkPT5lLl9hc3luY0RhdGFQcm9taXNlc1tjXSYmZS5fYXN5bmNEYXRhUHJvbWlzZXNbY10hPT1ffHxULl9hYm9ydENvbnRyb2xsZXI/LnNpZ25hbC5hYm9ydGVkP2UuX2FzeW5jRGF0YVByb21pc2VzW2NdOiJ1bmRlZmluZWQiIT10eXBlb2YgRE9NRXhjZXB0aW9uJiZkIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYiQWJvcnRFcnJvciI9PT1kLm5hbWU/KFQuc3RhdHVzLnZhbHVlPSJpZGxlIixlLl9hc3luY0RhdGFQcm9taXNlc1tjXSk6KFQuZXJyb3IudmFsdWU9Y3JlYXRlRXJyb3IoZCksVC5kYXRhLnZhbHVlPVluLnVucmVmKGguZGVmYXVsdCgpKSx2b2lkKFQuc3RhdHVzLnZhbHVlPSJlcnJvciIpKSkuZmluYWxseSgoKT0+e2suYWJvcnQoKSxkZWxldGUgZS5fYXN5bmNEYXRhUHJvbWlzZXNbY119KTtyZXR1cm4gZS5fYXN5bmNEYXRhUHJvbWlzZXNbY109XyxlLl9hc3luY0RhdGFQcm9taXNlc1tjXX0sX2V4ZWN1dGU6ZGVib3VuY2UoKC4uLmUpPT5ULmV4ZWN1dGUoLi4uZSksMCx7bGVhZGluZzohMH0pLF9kZWZhdWx0OmguZGVmYXVsdCxfZGVwczowLF9pbml0OiEwLF9oYXNoOnZvaWQgMCxfb2ZmOigpPT57XygpLGUuX2FzeW5jRGF0YVtjXT8uX2luaXQmJihlLl9hc3luY0RhdGFbY10uX2luaXQ9ITEpLGJ8fFluLm5leHRUaWNrKCgpPT57ZS5fYXN5bmNEYXRhW2NdPy5faW5pdHx8KGNsZWFyTnV4dERhdGFCeUtleShlLGMpLFQuZXhlY3V0ZT0oKT0+UHJvbWlzZS5yZXNvbHZlKCkpfSl9fTtyZXR1cm4gVH0oayx5LnZhbHVlLHYsYixlLmNhY2hlZERhdGEpKSwoKT0+ay5fYXN5bmNEYXRhW3kudmFsdWVdLmV4ZWN1dGUoZSl9ay5fYXN5bmNEYXRhW3kudmFsdWVdO2NvbnN0IFQ9Y3JlYXRlSW5pdGlhbEZldGNoKCk7aWYoay5fYXN5bmNEYXRhW3kudmFsdWVdLl9kZXBzKyssITEhPT1iLnNlcnZlciYmay5wYXlsb2FkLnNlcnZlclJlbmRlcmVkJiZiLmltbWVkaWF0ZSl7Y29uc3QgZT1UKCk7WW4uZ2V0Q3VycmVudEluc3RhbmNlKCk/WW4ub25TZXJ2ZXJQcmVmZXRjaCgoKT0+ZSk6ay5ob29rKCJhcHA6Y3JlYXRlZCIsYXN5bmMoKT0+e2F3YWl0IGV9KX1jb25zdCBOPXtkYXRhOndyaXRhYmxlQ29tcHV0ZWRSZWYoKCk9PmsuX2FzeW5jRGF0YVt5LnZhbHVlXT8uZGF0YSkscGVuZGluZzp3cml0YWJsZUNvbXB1dGVkUmVmKCgpPT5rLl9hc3luY0RhdGFbeS52YWx1ZV0/LnBlbmRpbmcpLHN0YXR1czp3cml0YWJsZUNvbXB1dGVkUmVmKCgpPT5rLl9hc3luY0RhdGFbeS52YWx1ZV0/LnN0YXR1cyksZXJyb3I6d3JpdGFibGVDb21wdXRlZFJlZigoKT0+ay5fYXN5bmNEYXRhW3kudmFsdWVdPy5lcnJvcikscmVmcmVzaDooLi4uZSk9PntpZighay5fYXN5bmNEYXRhW3kudmFsdWVdPy5faW5pdCl7cmV0dXJuIGNyZWF0ZUluaXRpYWxGZXRjaCgpKCl9cmV0dXJuIGsuX2FzeW5jRGF0YVt5LnZhbHVlXS5leGVjdXRlKC4uLmUpfSxleGVjdXRlOiguLi5lKT0+Ti5yZWZyZXNoKC4uLmUpLGNsZWFyOigpPT57Y29uc3QgZT1rLl9hc3luY0RhdGFbeS52YWx1ZV07aWYoZT8uX2Fib3J0Q29udHJvbGxlcil0cnl7ZS5fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBET01FeGNlcHRpb24oIkFzeW5jRGF0YSBhYm9ydGVkIGJ5IHVzZXIuIiwiQWJvcnRFcnJvciIpKX1maW5hbGx5e2UuX2Fib3J0Q29udHJvbGxlcj12b2lkIDB9Y2xlYXJOdXh0RGF0YUJ5S2V5KGsseS52YWx1ZSl9fSxPPVByb21pc2UucmVzb2x2ZShrLl9hc3luY0RhdGFQcm9taXNlc1t5LnZhbHVlXSkudGhlbigoKT0+Tik7cmV0dXJuIE9iamVjdC5hc3NpZ24oTyxOKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLHt0aGVuOntlbnVtZXJhYmxlOiEwLHZhbHVlOk8udGhlbi5iaW5kKE8pfSxjYXRjaDp7ZW51bWVyYWJsZTohMCx2YWx1ZTpPLmNhdGNoLmJpbmQoTyl9LGZpbmFsbHk6e2VudW1lcmFibGU6ITAsdmFsdWU6Ty5maW5hbGx5LmJpbmQoTyl9fSksT319KSxMYT1CYS5fX251eHRfZmFjdG9yeSgpO2Z1bmN0aW9uIHdyaXRhYmxlQ29tcHV0ZWRSZWYoZSl7cmV0dXJuIFluLmNvbXB1dGVkKHtnZXQ6KCk9PmUoKT8udmFsdWUsc2V0KGMpe2NvbnN0IGQ9ZSgpO2QmJihkLnZhbHVlPWMpfX0pfWFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hOdXh0RGF0YShlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9ZnVuY3Rpb24gY2xlYXJOdXh0RGF0YUJ5S2V5KGUsYyl7YyBpbiBlLnBheWxvYWQuZGF0YSYmKGUucGF5bG9hZC5kYXRhW2NdPXZvaWQgMCksYyBpbiBlLnBheWxvYWQuX2Vycm9ycyYmKGUucGF5bG9hZC5fZXJyb3JzW2NdPXZvaWQgMCksZS5fYXN5bmNEYXRhW2NdJiYoZS5fYXN5bmNEYXRhW2NdLmRhdGEudmFsdWU9WW4udW5yZWYoZS5fYXN5bmNEYXRhW2NdLl9kZWZhdWx0KCkpLGUuX2FzeW5jRGF0YVtjXS5lcnJvci52YWx1ZT12b2lkIDAsZS5fYXN5bmNEYXRhW2NdLnN0YXR1cy52YWx1ZT0iaWRsZSIpLGMgaW4gZS5fYXN5bmNEYXRhUHJvbWlzZXMmJihlLl9hc3luY0RhdGFQcm9taXNlc1tjXT12b2lkIDApfUJhLl9fbnV4dF9mYWN0b3J5KHtsYXp5OiEwLF9mdW5jdGlvbk5hbWU6InVzZUxhenlBc3luY0RhdGEifSk7Y29uc3QgZ2V0RGVmYXVsdD0oKT0+e30sZ2V0RGVmYXVsdENhY2hlZERhdGE9KGUsYyxkKT0+Yy5pc0h5ZHJhdGluZz9jLnBheWxvYWQuZGF0YVtlXToicmVmcmVzaDptYW51YWwiIT09ZC5jYXVzZSYmInJlZnJlc2g6aG9vayIhPT1kLmNhdXNlP2Muc3RhdGljLmRhdGFbZV06dm9pZCAwO2Z1bmN0aW9uIHVzZVN0YXRlKC4uLmUpe2NvbnN0IGM9InN0cmluZyI9PXR5cGVvZiBlW2UubGVuZ3RoLTFdP2UucG9wKCk6dm9pZCAwOyJzdHJpbmciIT10eXBlb2YgZVswXSYmZS51bnNoaWZ0KGMpO2NvbnN0W2QsaF09ZTtpZighZHx8InN0cmluZyIhPXR5cGVvZiBkKXRocm93IG5ldyBUeXBlRXJyb3IoIltudXh0XSBbdXNlU3RhdGVdIGtleSBtdXN0IGJlIGEgc3RyaW5nOiAiK2QpO2lmKHZvaWQgMCE9PWgmJiJmdW5jdGlvbiIhPXR5cGVvZiBoKXRocm93IG5ldyBFcnJvcigiW251eHRdIFt1c2VTdGF0ZV0gaW5pdCBtdXN0IGJlIGEgZnVuY3Rpb246ICIraCk7Y29uc3Qgdj0iJHMiK2QsYj11c2VOdXh0QXBwKCkseT1Zbi50b1JlZihiLnBheWxvYWQuc3RhdGUsdik7aWYoaCYmKGIuX3N0YXRlW3ZdPz89e19kZWZhdWx0Omh9KSx2b2lkIDA9PT15LnZhbHVlJiZoKXtjb25zdCBlPWgoKTtpZihZbi5pc1JlZihlKSlyZXR1cm4gYi5wYXlsb2FkLnN0YXRlW3ZdPWUsZTt5LnZhbHVlPWV9cmV0dXJuIHl9ZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25TZWdtZW50cyhlKXtjb25zdCBjPVtZbi50b1ZhbHVlKGUubWV0aG9kKT8udG9VcHBlckNhc2UoKXx8IkdFVCIsWW4udG9WYWx1ZShlLmJhc2VVUkwpXTtmb3IoY29uc3QgZCBvZltlLnF1ZXJ5fHxlLnBhcmFtc10pe2NvbnN0IGU9WW4udG9WYWx1ZShkKTtpZighZSljb250aW51ZTtjb25zdCBoPXt9O2Zvcihjb25zdFtjLGRdb2YgT2JqZWN0LmVudHJpZXMoZSkpaFtZbi50b1ZhbHVlKGMpXT1Zbi50b1ZhbHVlKGQpO2MucHVzaChoKX1pZihlLmJvZHkpe2NvbnN0IGQ9WW4udG9WYWx1ZShlLmJvZHkpO2lmKGQpaWYoZCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKWMucHVzaChxKE9iamVjdC5mcm9tRW50cmllcyhbLi4ubmV3IFVpbnQ4QXJyYXkoZCkuZW50cmllcygpXS5tYXAoKFtlLGNdKT0+W2UsYy50b1N0cmluZygpXSkpKSk7ZWxzZSBpZihkIGluc3RhbmNlb2YgRm9ybURhdGEpe2NvbnN0IGU9e307Zm9yKGNvbnN0IGMgb2YgZC5lbnRyaWVzKCkpe2NvbnN0W2QsaF09YztlW2RdPWggaW5zdGFuY2VvZiBGaWxlP2gubmFtZTpofWMucHVzaChxKGUpKX1lbHNlIGlmKGlzUGxhaW5PYmplY3QoZCkpYy5wdXNoKHEoWW4ucmVhY3RpdmUoZCkpKTtlbHNlIHRyeXtjLnB1c2gocShkKSl9Y2F0Y2h7fWVsc2UgYy5wdXNoKHEoZCkpfXJldHVybiBjfWNvbnN0IGphPWRlZmluZUtleWVkRnVuY3Rpb25GYWN0b3J5KHtuYW1lOiJjcmVhdGVVc2VGZXRjaCIsZmFjdG9yeTooZT17fSk9PmZ1bmN0aW9uKGMsZCxoKXtjb25zdFt2PXt9LGJdPSJzdHJpbmciPT10eXBlb2YgZD9be30sZF06W2QsaF0seT1Zbi5jb21wdXRlZCgoKT0+WW4udG9WYWx1ZShjKSksRT1Zbi5jb21wdXRlZCgoKT0+WW4udG9WYWx1ZSh2LmtleSl8fCIkZiIrcShbYiwic3RyaW5nIj09dHlwZW9mIHkudmFsdWU/eS52YWx1ZToiIiwuLi5nZW5lcmF0ZU9wdGlvblNlZ21lbnRzKHYpXSkpO2lmKCF2LmJhc2VVUkwmJiJzdHJpbmciPT10eXBlb2YgeS52YWx1ZSYmIi8iPT09eS52YWx1ZVswXSYmIi8iPT09eS52YWx1ZVsxXSl0aHJvdyBuZXcgRXJyb3IoJ1tudXh0XSBbdXNlRmV0Y2hdIHRoZSByZXF1ZXN0IFVSTCBtdXN0IG5vdCBzdGFydCB3aXRoICIvLyIuJyk7Y29uc3Qgaz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHYpOmUse3NlcnZlcjpfLGxhenk6VCxkZWZhdWx0Ok4sdHJhbnNmb3JtOk8scGljazpSLHdhdGNoOk0saW1tZWRpYXRlOkQsZ2V0Q2FjaGVkRGF0YTpMLGRlZXA6JCxkZWR1cGU6Rix0aW1lb3V0OlYsLi4uVX09ey4uLiJmdW5jdGlvbiI9PXR5cGVvZiBlP3t9OmssLi4udiwuLi4iZnVuY3Rpb24iPT10eXBlb2YgZT9rOnt9fSxXPVluLnJlYWN0aXZlKHsuLi5uYSwuLi5VLGNhY2hlOiJib29sZWFuIj09dHlwZW9mIFUuY2FjaGU/dm9pZCAwOlUuY2FjaGV9KSxLPXtzZXJ2ZXI6XyxsYXp5OlQsZGVmYXVsdDpOLHRyYW5zZm9ybTpPLHBpY2s6UixpbW1lZGlhdGU6RCxnZXRDYWNoZWREYXRhOkwsZGVlcDokLGRlZHVwZTpGLHRpbWVvdXQ6Vix3YXRjaDohMT09PU0/W106Wy4uLk18fFtdLFddfTtyZXR1cm4gTGEoITE9PT1NP0UudmFsdWU6RSwoZSx7c2lnbmFsOmN9KT0+e2xldCBkPXYuJGZldGNofHxnbG9iYWxUaGlzLiRmZXRjaDtpZighdi4kZmV0Y2gpeyJzdHJpbmciPT10eXBlb2YgeS52YWx1ZSYmIi8iPT09eS52YWx1ZVswXSYmKCFZbi50b1ZhbHVlKHYuYmFzZVVSTCl8fCIvIj09PVluLnRvVmFsdWUodi5iYXNlVVJMKVswXSkmJihkPXVzZVJlcXVlc3RFdmVudCgpPy4kZmV0Y2h8fGdsb2JhbFRoaXMuJGZldGNoKX1yZXR1cm4gZCh5LnZhbHVlLHtzaWduYWw6YywuLi5XfSl9LEspfX0pO2phLl9fbnV4dF9mYWN0b3J5KCksamEuX19udXh0X2ZhY3Rvcnkoe2xhenk6ITAsX2Z1bmN0aW9uTmFtZToidXNlTGF6eUZldGNoIn0pO2Z1bmN0aW9uIGRlZmluZU51eHRMaW5rKGMpe2NvbnN0IGg9Yy5jb21wb25lbnROYW1lfHwiTnV4dExpbmsiO2Z1bmN0aW9uIGlzSGFzaExpbmtXaXRob3V0SGFzaE1vZGUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiZlLnN0YXJ0c1dpdGgoIiMiKX1mdW5jdGlvbiB1c2VOdXh0TGluayhoKXtjb25zdCB2PXVzZVJvdXRlcigpLGI9dXNlUnVudGltZUNvbmZpZygpLHk9WW4uY29tcHV0ZWQoKCk9PiEhWW4udW5yZWYoaC50YXJnZXQpJiYiX3NlbGYiIT09WW4udW5yZWYoaC50YXJnZXQpKSxFPVluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz1Zbi51bnJlZihoLnRvKXx8WW4udW5yZWYoaC5ocmVmKXx8IiI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjJiZlKGMse2FjY2VwdFJlbGF0aXZlOiEwfSl9KSxrPVluLnJlc29sdmVDb21wb25lbnQoIlJvdXRlckxpbmsiKSxfPWsmJiJzdHJpbmciIT10eXBlb2Ygaz9rLnVzZUxpbms6dm9pZCAwLFQ9WW4uY29tcHV0ZWQoKCk9PntpZihZbi51bnJlZihoLmV4dGVybmFsKSlyZXR1cm4hMDtjb25zdCBlPVluLnVucmVmKGgudG8pfHxZbi51bnJlZihoLmhyZWYpfHwiIjtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGUmJigiIj09PWV8fEUudmFsdWUpfSksTj1Zbi5jb21wdXRlZCgoKT0+e2NvbnN0IGU9WW4udW5yZWYoaC50byl8fFluLnVucmVmKGguaHJlZil8fCIiO3JldHVybiBULnZhbHVlP2U6ZnVuY3Rpb24oZSxkLGgpe2NvbnN0IHY9aD8/Yy50cmFpbGluZ1NsYXNoO2lmKCFlfHwiYXBwZW5kIiE9PXYmJiJyZW1vdmUiIT09dilyZXR1cm4gZTtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGFwcGx5VHJhaWxpbmdTbGFzaEJlaGF2aW9yKGUsdik7Y29uc3QgYj0icGF0aCJpbiBlJiZ2b2lkIDAhPT1lLnBhdGg/ZS5wYXRoOmQoZSkucGF0aDtyZXR1cm57Li4uZSxuYW1lOnZvaWQgMCxwYXRoOmFwcGx5VHJhaWxpbmdTbGFzaEJlaGF2aW9yKGIsdil9fShlLHYucmVzb2x2ZSxZbi51bnJlZihoLnRyYWlsaW5nU2xhc2gpKX0pLE89VC52YWx1ZT92b2lkIDA6Xz8uKHsuLi5oLHRvOk4sdmlld1RyYW5zaXRpb246WW4udW5yZWYoaC52aWV3VHJhbnNpdGlvbil9KSxSPVluLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1Zbi51bnJlZihoLnRyYWlsaW5nU2xhc2gpPz9jLnRyYWlsaW5nU2xhc2g7aWYoIU4udmFsdWV8fEUudmFsdWV8fGlzSGFzaExpbmtXaXRob3V0SGFzaE1vZGUoTi52YWx1ZSkpcmV0dXJuIE4udmFsdWU7aWYoVC52YWx1ZSl7Y29uc3QgYz0ib2JqZWN0Ij09dHlwZW9mIE4udmFsdWUmJiJwYXRoImluIE4udmFsdWU/cmVzb2x2ZVJvdXRlT2JqZWN0KE4udmFsdWUpOk4udmFsdWU7cmV0dXJuIGFwcGx5VHJhaWxpbmdTbGFzaEJlaGF2aW9yKCJvYmplY3QiPT10eXBlb2YgYz92LnJlc29sdmUoYykuaHJlZjpjLGUpfXJldHVybiJvYmplY3QiPT10eXBlb2YgTi52YWx1ZT92LnJlc29sdmUoTi52YWx1ZSk/LmhyZWY/P251bGw6YXBwbHlUcmFpbGluZ1NsYXNoQmVoYXZpb3IoZChiLmFwcC5iYXNlVVJMLE4udmFsdWUpLGUpfSk7cmV0dXJue3RvOk4saGFzVGFyZ2V0OnksaXNBYnNvbHV0ZVVybDpFLGlzRXh0ZXJuYWw6VCxocmVmOlIsaXNBY3RpdmU6Tz8uaXNBY3RpdmU/P1luLmNvbXB1dGVkKCgpPT5OLnZhbHVlPT09di5jdXJyZW50Um91dGUudmFsdWUucGF0aCksaXNFeGFjdEFjdGl2ZTpPPy5pc0V4YWN0QWN0aXZlPz9Zbi5jb21wdXRlZCgoKT0+Ti52YWx1ZT09PXYuY3VycmVudFJvdXRlLnZhbHVlLnBhdGgpLHJvdXRlOk8/LnJvdXRlPz9Zbi5jb21wdXRlZCgoKT0+di5yZXNvbHZlKE4udmFsdWUpKSxhc3luYyBuYXZpZ2F0ZShlKXthd2FpdCBuYXZpZ2F0ZVRvKFIudmFsdWUse3JlcGxhY2U6WW4udW5yZWYoaC5yZXBsYWNlKSxleHRlcm5hbDpULnZhbHVlfHx5LnZhbHVlfSl9fX1yZXR1cm4gWW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOmgscHJvcHM6e3RvOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHRhcmdldDp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LG5vUmVsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHByZWZldGNoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHByZWZldGNoT246e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxub1ByZWZldGNoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LGFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sZXhhY3RBY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHByZWZldGNoZWRDbGFzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHJlcGxhY2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LGV4dGVybmFsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LGN1c3RvbTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSx0cmFpbGluZ1NsYXNoOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX19LHVzZUxpbms6dXNlTnV4dExpbmssc2V0dXAoZSx7c2xvdHM6ZH0pe2NvbnN0IGg9dXNlUm91dGVyKCkse3RvOnYsaHJlZjpiLG5hdmlnYXRlOnksaXNFeHRlcm5hbDpFLGhhc1RhcmdldDprLGlzQWJzb2x1dGVVcmw6X309dXNlTnV4dExpbmsoZSk7WW4uc2hhbGxvd1JlZighMSk7YXN5bmMgZnVuY3Rpb24gcHJlZmV0Y2goZT11c2VOdXh0QXBwKCkpe31yZXR1cm4oKT0+e2lmKCFFLnZhbHVlJiYhay52YWx1ZSYmIWlzSGFzaExpbmtXaXRob3V0SGFzaE1vZGUodi52YWx1ZSkpe2NvbnN0IGg9e3JlZjp2b2lkIDAsdG86di52YWx1ZSxhY3RpdmVDbGFzczplLmFjdGl2ZUNsYXNzfHxjLmFjdGl2ZUNsYXNzLGV4YWN0QWN0aXZlQ2xhc3M6ZS5leGFjdEFjdGl2ZUNsYXNzfHxjLmV4YWN0QWN0aXZlQ2xhc3MscmVwbGFjZTplLnJlcGxhY2UsYXJpYUN1cnJlbnRWYWx1ZTplLmFyaWFDdXJyZW50VmFsdWUsY3VzdG9tOmUuY3VzdG9tfTtyZXR1cm4gZS5jdXN0b218fChoLnJlbD1lLnJlbHx8dm9pZCAwKSxZbi5oKFluLnJlc29sdmVDb21wb25lbnQoIlJvdXRlckxpbmsiKSxoLGQuZGVmYXVsdCl9Y29uc3QgVD1lLnRhcmdldHx8bnVsbCxPPSgoLi4uZSk9PmUuZmluZChlPT52b2lkIDAhPT1lKSkoZS5ub1JlbD8iIjplLnJlbCxjLmV4dGVybmFsUmVsQXR0cmlidXRlLF8udmFsdWV8fGsudmFsdWU/Im5vb3BlbmVyIG5vcmVmZXJyZXIiOiIiKXx8bnVsbDtyZXR1cm4gZS5jdXN0b20/ZC5kZWZhdWx0P2QuZGVmYXVsdCh7aHJlZjpiLnZhbHVlLG5hdmlnYXRlOnkscHJlZmV0Y2g6cHJlZmV0Y2gsZ2V0IHJvdXRlKCl7aWYoIWIudmFsdWUpcmV0dXJuO2NvbnN0IGU9bmV3IFVSTChiLnZhbHVlLCJodHRwOi8vbG9jYWxob3N0Iik7cmV0dXJue3BhdGg6ZS5wYXRobmFtZSxmdWxsUGF0aDplLnBhdGhuYW1lLGdldCBxdWVyeSgpe3JldHVybiBOKGUuc2VhcmNoKX0saGFzaDplLmhhc2gscGFyYW1zOnt9LG5hbWU6dm9pZCAwLG1hdGNoZWQ6W10scmVkaXJlY3RlZEZyb206dm9pZCAwLG1ldGE6e30saHJlZjpiLnZhbHVlfX0scmVsOk8sdGFyZ2V0OlQsaXNFeHRlcm5hbDpFLnZhbHVlfHxrLnZhbHVlLGlzQWN0aXZlOiExLGlzRXhhY3RBY3RpdmU6ITF9KTpudWxsOlluLmgoImEiLHtyZWY6dm9pZCAwLGhyZWY6Yi52YWx1ZXx8bnVsbCxyZWw6Tyx0YXJnZXQ6VCxvbkNsaWNrOmFzeW5jIGM9PntpZighRS52YWx1ZSYmIWsudmFsdWUpe2MucHJldmVudERlZmF1bHQoKTt0cnl7Y29uc3QgYz1lbmNvZGVSb3V0ZVBhdGgoYi52YWx1ZSk7cmV0dXJuIGF3YWl0KGUucmVwbGFjZT9oLnJlcGxhY2UoYyk6aC5wdXNoKGMpKX1maW5hbGx5e319fX0sZC5kZWZhdWx0Py4oKSl9fX0pfWNvbnN0ICRhPWRlZmluZU51eHRMaW5rKGVhKTtmdW5jdGlvbiBhcHBseVRyYWlsaW5nU2xhc2hCZWhhdmlvcihjLGQpe2NvbnN0IGg9ImFwcGVuZCI9PT1kP0Q6TDtyZXR1cm4gZShjKSYmIWMuc3RhcnRzV2l0aCgiaHR0cCIpP2M6aChjLCEwKX1jb25zdCBGYT1PKHt1aTp7Y29sb3JzOntwcmltYXJ5OiJibHVlIixuZXV0cmFsOiJncmF5In19fSx7bnV4dDp7fSxpY29uOntwcm92aWRlcjoic2VydmVyIixjbGFzczoiIixhbGlhc2VzOnt9LGljb25pZnlBcGlFbmRwb2ludDoiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24iLGxvY2FsQXBpRW5kcG9pbnQ6Ii9hcGkvX251eHRfaWNvbiIsZmFsbGJhY2tUb0FwaTohMCxjc3NTZWxlY3RvclByZWZpeDoiaS0iLGNzc1doZXJlUHNldWRvOiEwLGNzc0xheWVyOiJiYXNlIixtb2RlOiJjc3MiLGF0dHJzOnsiYXJpYS1oaWRkZW4iOiEwfSxjb2xsZWN0aW9uczpbImFjYWRlbWljb25zIiwiYWthci1pY29ucyIsImFudC1kZXNpZ24iLCJhcmN0aWNvbnMiLCJiYXNpbCIsImJpIiwiYml0Y29pbi1pY29ucyIsImJwbW4iLCJicmFuZGljbyIsImJ4IiwiYnhsIiwiYnhzIiwiYnl0ZXNpemUiLCJjYXJib24iLCJjYXRwcHVjY2luIiwiY2JpIiwiY2hhcm0iLCJjaSIsImNpYiIsImNpZiIsImNpbCIsImNpcmNsZS1mbGFncyIsImNpcmN1bSIsImNsYXJpdHkiLCJjb2RleCIsImNvZGljb24iLCJjb3ZpZCIsImNyeXB0b2N1cnJlbmN5IiwiY3J5cHRvY3VycmVuY3ktY29sb3IiLCJjdWlkYSIsImRhc2hpY29ucyIsImRldmljb24iLCJkZXZpY29uLXBsYWluIiwiZGlua2llLWljb25zIiwiZHVvLWljb25zIiwiZWkiLCJlbCIsImVtb2ppb25lIiwiZW1vamlvbmUtbW9ub3RvbmUiLCJlbW9qaW9uZS12MSIsImVudHlwbyIsImVudHlwby1zb2NpYWwiLCJlb3MtaWNvbnMiLCJlcCIsImV0IiwiZXZhIiwiZjciLCJmYSIsImZhLWJyYW5kcyIsImZhLXJlZ3VsYXIiLCJmYS1zb2xpZCIsImZhNi1icmFuZHMiLCJmYTYtcmVndWxhciIsImZhNi1zb2xpZCIsImZhNy1icmFuZHMiLCJmYTctcmVndWxhciIsImZhNy1zb2xpZCIsImZhZCIsImZhbWljb25zIiwiZmUiLCJmZWF0aGVyIiwiZmlsZS1pY29ucyIsImZsYWciLCJmbGFncGFjayIsImZsYXQtY29sb3ItaWNvbnMiLCJmbGF0LXVpIiwiZmxvd2JpdGUiLCJmbHVlbnQiLCJmbHVlbnQtY29sb3IiLCJmbHVlbnQtZW1vamkiLCJmbHVlbnQtZW1vamktZmxhdCIsImZsdWVudC1lbW9qaS1oaWdoLWNvbnRyYXN0IiwiZmx1ZW50LW1kbDIiLCJmb250ZWxpY28iLCJmb250aXN0byIsImZvcm1raXQiLCJmb3VuZGF0aW9uIiwiZnhlbW9qaSIsImdhbGEiLCJnYW1lLWljb25zIiwiZ2FyZGVuIiwiZ2VvIiwiZ2ciLCJnaXMiLCJncmF2aXR5LXVpIiwiZ3JpZGljb25zIiwiZ3JvbW1ldC1pY29ucyIsImd1aWRhbmNlIiwiaGVhbHRoaWNvbnMiLCJoZXJvaWNvbnMiLCJoZXJvaWNvbnMtb3V0bGluZSIsImhlcm9pY29ucy1zb2xpZCIsImh1Z2VpY29ucyIsImh1bWJsZWljb25zIiwiaWMiLCJpY29tb29uLWZyZWUiLCJpY29uLXBhcmsiLCJpY29uLXBhcmstb3V0bGluZSIsImljb24tcGFyay1zb2xpZCIsImljb24tcGFyay10d290b25lIiwiaWNvbmFtb29uIiwiaWNvbm9pciIsImljb25zOCIsImlsIiwiaW9uIiwiaXd3YSIsIml4IiwiamFtIiwibGEiLCJsZXRzLWljb25zIiwibGluZS1tZCIsImxpbmVpY29ucyIsImxvZ29zIiwibHMiLCJsc2ljb24iLCJsdWNpZGUiLCJsdWNpZGUtbGFiIiwibWFnZSIsIm1hamVzdGljb25zIiwibWFraSIsIm1hcCIsIm1hcmtldGVxIiwibWF0ZXJpYWwtaWNvbi10aGVtZSIsIm1hdGVyaWFsLXN5bWJvbHMiLCJtYXRlcmlhbC1zeW1ib2xzLWxpZ2h0IiwibWRpIiwibWRpLWxpZ2h0IiwibWVkaWNhbC1pY29uIiwibWVtb3J5IiwibWV0ZW9jb25zIiwibWV0ZW9yLWljb25zIiwibWkiLCJtaW5nY3V0ZSIsIm1vbm8taWNvbnMiLCJteW5hdWkiLCJuaW1idXMiLCJub25pY29ucyIsIm5vdG8iLCJub3RvLXYxIiwibnJrIiwib2N0aWNvbiIsIm9pIiwib291aSIsIm9wZW5tb2ppIiwib3VpIiwicGFqYW1hcyIsInBlcGljb25zIiwicGVwaWNvbnMtcGVuY2lsIiwicGVwaWNvbnMtcG9wIiwicGVwaWNvbnMtcHJpbnQiLCJwaCIsInBpY29uIiwicGl4ZWwiLCJwaXhlbGFydGljb25zIiwicHJpbWUiLCJwcm9pY29ucyIsInBzIiwicWxlbWVudGluZS1pY29ucyIsInF1aWxsIiwicmFkaXgtaWNvbnMiLCJyYXBoYWVsIiwicmkiLCJyaXZldC1pY29ucyIsInJvZW50Z2VuIiwic2kiLCJzaS1nbHlwaCIsInNpZGVraWNraWNvbnMiLCJzaW1wbGUtaWNvbnMiLCJzaW1wbGUtbGluZS1pY29ucyIsInNraWxsLWljb25zIiwic29sYXIiLCJzdGFzaCIsInN0cmVhbWxpbmUiLCJzdHJlYW1saW5lLWJsb2NrIiwic3RyZWFtbGluZS1jb2xvciIsInN0cmVhbWxpbmUtY3liZXIiLCJzdHJlYW1saW5lLWN5YmVyLWNvbG9yIiwic3RyZWFtbGluZS1lbW9qaXMiLCJzdHJlYW1saW5lLWZsZXgiLCJzdHJlYW1saW5lLWZsZXgtY29sb3IiLCJzdHJlYW1saW5lLWZyZWVoYW5kIiwic3RyZWFtbGluZS1mcmVlaGFuZC1jb2xvciIsInN0cmVhbWxpbmUta2FtZWxlb24tY29sb3IiLCJzdHJlYW1saW5lLWxvZ29zIiwic3RyZWFtbGluZS1waXhlbCIsInN0cmVhbWxpbmUtcGx1bXAiLCJzdHJlYW1saW5lLXBsdW1wLWNvbG9yIiwic3RyZWFtbGluZS1zaGFycCIsInN0cmVhbWxpbmUtc2hhcnAtY29sb3IiLCJzdHJlYW1saW5lLXN0aWNraWVzLWNvbG9yIiwic3RyZWFtbGluZS11bHRpbWF0ZSIsInN0cmVhbWxpbmUtdWx0aW1hdGUtY29sb3IiLCJzdWJ3YXkiLCJzdmctc3Bpbm5lcnMiLCJzeXN0ZW0tdWljb25zIiwidGFibGVyIiwidGRlc2lnbiIsInRlZW55aWNvbnMiLCJ0ZW1ha2kiLCJ0b2tlbiIsInRva2VuLWJyYW5kZWQiLCJ0b3Bjb2F0IiwidHdlbW9qaSIsInR5cGNuIiwidWlsIiwidWltIiwidWlzIiwidWl0IiwidWl3IiwidW5qcyIsInZhYWRpbiIsInZzIiwidnNjb2RlLWljb25zIiwid2Vic3ltYm9sIiwid2V1aSIsIndoaCIsIndpIiwid3BmIiwiem1kaSIsInpvbmRpY29ucyJdLGZldGNoVGltZW91dDoxNTAwfSx1aTp7Y29sb3JzOntwcmltYXJ5OiJncmVlbiIsc2Vjb25kYXJ5OiJibHVlIixzdWNjZXNzOiJncmVlbiIsaW5mbzoiYmx1ZSIsd2FybmluZzoieWVsbG93IixlcnJvcjoicmVkIixuZXV0cmFsOiJzbGF0ZSJ9LGljb25zOnthcnJvd0Rvd246ImktbHVjaWRlLWFycm93LWRvd24iLGFycm93TGVmdDoiaS1sdWNpZGUtYXJyb3ctbGVmdCIsYXJyb3dSaWdodDoiaS1sdWNpZGUtYXJyb3ctcmlnaHQiLGFycm93VXA6ImktbHVjaWRlLWFycm93LXVwIixjYXV0aW9uOiJpLWx1Y2lkZS1jaXJjbGUtYWxlcnQiLGNoZWNrOiJpLWx1Y2lkZS1jaGVjayIsY2hldnJvbkRvdWJsZUxlZnQ6ImktbHVjaWRlLWNoZXZyb25zLWxlZnQiLGNoZXZyb25Eb3VibGVSaWdodDoiaS1sdWNpZGUtY2hldnJvbnMtcmlnaHQiLGNoZXZyb25Eb3duOiJpLWx1Y2lkZS1jaGV2cm9uLWRvd24iLGNoZXZyb25MZWZ0OiJpLWx1Y2lkZS1jaGV2cm9uLWxlZnQiLGNoZXZyb25SaWdodDoiaS1sdWNpZGUtY2hldnJvbi1yaWdodCIsY2hldnJvblVwOiJpLWx1Y2lkZS1jaGV2cm9uLXVwIixjbG9zZToiaS1sdWNpZGUteCIsY29weToiaS1sdWNpZGUtY29weSIsY29weUNoZWNrOiJpLWx1Y2lkZS1jb3B5LWNoZWNrIixkYXJrOiJpLWx1Y2lkZS1tb29uIixkcmFnOiJpLWx1Y2lkZS1ncmlwLXZlcnRpY2FsIixlbGxpcHNpczoiaS1sdWNpZGUtZWxsaXBzaXMiLGVycm9yOiJpLWx1Y2lkZS1jaXJjbGUteCIsZXh0ZXJuYWw6ImktbHVjaWRlLWFycm93LXVwLXJpZ2h0IixleWU6ImktbHVjaWRlLWV5ZSIsZXllT2ZmOiJpLWx1Y2lkZS1leWUtb2ZmIixmaWxlOiJpLWx1Y2lkZS1maWxlIixmb2xkZXI6ImktbHVjaWRlLWZvbGRlciIsZm9sZGVyT3BlbjoiaS1sdWNpZGUtZm9sZGVyLW9wZW4iLGhhc2g6ImktbHVjaWRlLWhhc2giLGluZm86ImktbHVjaWRlLWluZm8iLGxpZ2h0OiJpLWx1Y2lkZS1zdW4iLGxvYWRpbmc6ImktbHVjaWRlLWxvYWRlci1jaXJjbGUiLG1lbnU6ImktbHVjaWRlLW1lbnUiLG1pbnVzOiJpLWx1Y2lkZS1taW51cyIscGFuZWxDbG9zZToiaS1sdWNpZGUtcGFuZWwtbGVmdC1jbG9zZSIscGFuZWxPcGVuOiJpLWx1Y2lkZS1wYW5lbC1sZWZ0LW9wZW4iLHBsdXM6ImktbHVjaWRlLXBsdXMiLHJlbG9hZDoiaS1sdWNpZGUtcm90YXRlLWNjdyIsc2VhcmNoOiJpLWx1Y2lkZS1zZWFyY2giLHN0b3A6ImktbHVjaWRlLXNxdWFyZSIsc3VjY2VzczoiaS1sdWNpZGUtY2lyY2xlLWNoZWNrIixzeXN0ZW06ImktbHVjaWRlLW1vbml0b3IiLHRpcDoiaS1sdWNpZGUtbGlnaHRidWxiIix1cGxvYWQ6ImktbHVjaWRlLXVwbG9hZCIsd2FybmluZzoiaS1sdWNpZGUtdHJpYW5nbGUtYWxlcnQifSx0djp7dHdNZXJnZUNvbmZpZzp7fX19fSk7ZnVuY3Rpb24gdXNlQXBwQ29uZmlnKCl7Y29uc3QgZT11c2VOdXh0QXBwKCk7cmV0dXJuIGUuX2FwcENvbmZpZ3x8PXYoRmEpLGUuX2FwcENvbmZpZ31mdW5jdGlvbiB1c2VDc3JmKCl7Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkucHVibGljLmNzdXJmLmhlYWRlck5hbWU/PyIiO3JldHVybntjc3JmOnVzZU51eHRBcHAoKS5zc3JDb250ZXh0Py5ldmVudD8uY29udGV4dD8uY3NyZlRva2VuLGhlYWRlck5hbWU6ZX19Y29uc3QgVmE9JGZldGNoLmNyZWF0ZSh7b25SZXF1ZXN0KGUpe2NvbnN0e29wdGlvbnM6Y309ZTt2YXIgZCxoO2Muc2lsZW50LCJzdHJpbmciPT10eXBlb2YgZS5yZXF1ZXN0JiZjLnF1ZXJ5JiYoZS5yZXF1ZXN0PShkPWUucmVxdWVzdCxoPWMucXVlcnksZC5yZXBsYWNlKC86KFx3KykvZywoZSxjKT0+e2lmKGMgaW4gaCl7Y29uc3QgZT1oW2NdO3JldHVybiBkZWxldGUgaFtjXSxTdHJpbmcoZSl9cmV0dXJuIGV9KSkpO3tjb25zdCBlPXVzZVJlcXVlc3RIZWFkZXJzKFsiY29va2llIl0pO2MuaGVhZGVycz17Li4uYy5oZWFkZXJzLC4uLmV9fXRyeXtjb25zdCBlPXVzZUNzcmYoKTtlPy5oZWFkZXJOYW1lJiYoYy5oZWFkZXJzPXsuLi5jLmhlYWRlcnMsW2UuaGVhZGVyTmFtZV06ZS5jc3JmfSl9Y2F0Y2h7fX0sb25SZXNwb25zZShlKXtlLm9wdGlvbnMuc2lsZW50LDB9LGFzeW5jIG9uUmVzcG9uc2VFcnJvcihlKXtlLm9wdGlvbnMuc2lsZW50O2NvbnN0IGM9dXNlQXV0aEFwaSgpLGQ9ZT8ucmVzcG9uc2U/LnN0YXR1cztsZXQgaD0hMTt0cnl7aD0hU3RyaW5nKGUucmVzcG9uc2UudXJsKS5zdGFydHNXaXRoKGdldEJhc2VVcmwoKSl9Y2F0Y2h7fWlmKDQwMT09PWQpe2lmKGUucmVxdWVzdC50b1N0cmluZygpLmluY2x1ZGVzKCJhdXRoIil8fGgpcmV0dXJuO3RyeXthd2FpdCBjLmxvZ291dCgpfWNhdGNoe31maW5hbGx5e25hdmlnYXRlVG8oIi9hdXRoL2xvZ2luIil9fX19KTtmdW5jdGlvbiB1c2VBdXRoQXBpKCl7cmV0dXJue2ZldGNoQ3VycmVudFVzZXI6ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvYXV0aC9tZSIpfSx1cGRhdGVDdXJyZW50VXNlcjpmdW5jdGlvbihlKXtyZXR1cm4gVmEoIi9hcGkvdXNlciIse21ldGhvZDoiUEFUQ0giLGJvZHk6ZX0pfSxmZXRjaFVzZXJOb3RpZmljYXRpb25TZXR0aW5nczpmdW5jdGlvbigpe3JldHVybiBWYSgiL2FwaS91c2VyL25vdGlmaWNhdGlvbiIpfSx1cGRhdGVVc2VyTm90aWZpY2F0aW9uU2V0dGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL3VzZXIvbm90aWZpY2F0aW9uIix7bWV0aG9kOiJQQVRDSCIsYm9keTplfSl9LHVwZGF0ZVBob25lTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9hdXRoL3Bob25lIix7bWV0aG9kOiJQQVRDSCIsYm9keTp7cGhvbmU6ZX19KX0sdXBsb2FkQXZhdGFyOmZ1bmN0aW9uKGUpe2NvbnN0IGM9bmV3IEZvcm1EYXRhO3JldHVybiBjLmFwcGVuZCgiZmlsZSIsZSksVmEoIi9hcGkvdXNlci9hdmF0YXIiLHttZXRob2Q6IlBPU1QiLGJvZHk6Y30pfSxmZXRjaEltcGVyc29uYXRpb25DYW5kaWRhdGVzOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3VzZXJzIix7cXVlcnk6ZX0pfSxzdGFydEltcGVyc29uYXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL2F1dGgvaW1wZXJzb25hdGUvc3RhcnQiLHttZXRob2Q6IlBPU1QiLGJvZHk6e3VzZXJfaWQ6ZX19KX0sc3RvcEltcGVyc29uYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdG9wIix7bWV0aG9kOiJQT1NUIn0pfSxsb2dvdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvYXV0aC9sb2dvdXQiKX19fWZ1bmN0aW9uIHVzZU9yZ2FuaXphdGlvbkFwaSgpe3JldHVybntmZXRjaE9yZ2FuaXphdGlvbnM6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbnMiLHtxdWVyeTplfSl9LGNyZWF0ZU9yZ2FuaXphdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gVmEoIi9hcGkvb3JnYW5pemF0aW9ucyIse21ldGhvZDoiUE9TVCIsYm9keTplfSl9LGZldGNoT3JnYW5pemF0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbiIpfSx1cGRhdGVPcmdhbml6YXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbiIse21ldGhvZDoiUEFUQ0giLGJvZHk6ZX0pfSxzd2l0Y2hPcmdhbml6YXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbnMvc3dpdGNoIix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX0scmVmcmVzaFNlc3Npb246ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvc2Vzc2lvbi9yZWZyZXNoIix7bWV0aG9kOiJQT1NUIn0pfSxmZXRjaE1lbWJlcnM6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7cXVlcnk6ZX0pfSxhZGRNZW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX0sZmV0Y2hQZXJtaXNzaW9uczpmdW5jdGlvbigpe3JldHVybiBWYSgiL2FwaS9wZXJtaXNzaW9ucyIpfSx1cGRhdGVNZW1iZXJBYmlsaXRpZXM6ZnVuY3Rpb24oZSxjKXtyZXR1cm4gVmEoIi9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvOnVzZXJJZC9hYmlsaXRpZXMiLHttZXRob2Q6IlBBVENIIixib2R5OmMscXVlcnk6e3VzZXJJZDplfX0pfSxyZW1vdmVNZW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzLzp1c2VySWQiLHttZXRob2Q6IkRFTEVURSIscXVlcnk6e3VzZXJJZDplfX0pfSxmZXRjaEludml0YXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9pbnZpdGF0aW9ucyIpfSxjcmVhdGVJbnZpdGF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfSxyZXZva2VJbnZpdGF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMvOmlkIix7bWV0aG9kOiJERUxFVEUiLHF1ZXJ5OntpZDplfX0pfSxmZXRjaEludml0YXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL2ludml0YXRpb25zLzp0b2tlbiIse3F1ZXJ5Ont0b2tlbjplfX0pfSxhY2NlcHRJbnZpdGF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9pbnZpdGF0aW9ucy86dG9rZW4vYWNjZXB0Iix7bWV0aG9kOiJQT1NUIixxdWVyeTp7dG9rZW46ZX19KX0sZmV0Y2hSb2xlczpmdW5jdGlvbigpe3JldHVybiBWYSgiL2FwaS9yb2xlcyIpfSxjcmVhdGVSb2xlOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9yb2xlcyIse21ldGhvZDoiUE9TVCIsYm9keTplfSl9LHVwZGF0ZVJvbGU6ZnVuY3Rpb24oZSxjKXtyZXR1cm4gVmEoYC9hcGkvcm9sZXMvJHtlfWAse21ldGhvZDoiUEFUQ0giLGJvZHk6Y30pfSxkZWxldGVSb2xlOmZ1bmN0aW9uKGUpe3JldHVybiBWYShgL2FwaS9yb2xlcy8ke2V9YCx7bWV0aG9kOiJERUxFVEUifSl9LGFzc2lnbk1lbWJlclJvbGVzOmZ1bmN0aW9uKGUsYyl7cmV0dXJuIFZhKGAvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzLyR7ZX0vcm9sZXNgLHttZXRob2Q6IlBBVENIIixib2R5Ontyb2xlX2lkczpjfX0pfSxkZWxldGVBY2NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIFZhKCIvYXBpL2FjY291bnQiLHttZXRob2Q6IkRFTEVURSJ9KX19fWNvbnN0IHphPWRlZmluZVN0b3JlKCJhdXRoIiwoKT0+e2NvbnN0IGU9dXNlU3RhdGUoInVzZXIiLCgpPT5udWxsKSxjPXVzZUF1dGhBcGkoKSxkPXVzZU9yZ2FuaXphdGlvbkFwaSgpLGg9WW4uY29tcHV0ZWQoKCk9PmUudmFsdWU/LmltcGVyc29uYXRvcj8/bnVsbCksdj1Zbi5jb21wdXRlZCgoKT0+ISFoLnZhbHVlKSxiPVluLmNvbXB1dGVkKCgpPT5lLnZhbHVlPy5hY3RpdmVPcmdhbml6YXRpb25JZD8/bnVsbCk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hDdXJyZW50VXNlcigpe2NvbnN0IGQ9YXdhaXQgYy5mZXRjaEN1cnJlbnRVc2VyKCk7ZS52YWx1ZT1kfXJldHVybntjdXJyZW50VXNlcjplLGltcGVyc29uYXRvcjpoLGlzSW1wZXJzb25hdGluZzp2LGFjdGl2ZU9yZ2FuaXphdGlvbklkOmIsZmV0Y2hDdXJyZW50VXNlcjpmZXRjaEN1cnJlbnRVc2VyLHVwZGF0ZUN1cnJlbnRVc2VyOmFzeW5jIGZ1bmN0aW9uKGUpe2F3YWl0IGMudXBkYXRlQ3VycmVudFVzZXIoZSksYXdhaXQgZmV0Y2hDdXJyZW50VXNlcigpfSx1cGRhdGVBdmF0YXI6YXN5bmMgZnVuY3Rpb24oZCl7Y29uc3R7YXZhdGFyOmh9PWF3YWl0IGMudXBsb2FkQXZhdGFyKGQpO2UudmFsdWUmJihlLnZhbHVlPXsuLi5lLnZhbHVlLGF2YXRhcjpofSl9LGZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZmV0Y2hVc2VyTm90aWZpY2F0aW9uU2V0dGluZ3MoKX0sdXBkYXRlVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBjLnVwZGF0ZVVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyhlKX0sdXBkYXRlUGhvbmVOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGMudXBkYXRlUGhvbmVOdW1iZXIoZSl9LHN3aXRjaE9yZ2FuaXphdGlvbjphc3luYyBmdW5jdGlvbihjKXtjb25zdCBoPWF3YWl0IGQuc3dpdGNoT3JnYW5pemF0aW9uKHtvcmdhbml6YXRpb25faWQ6Y30pO3JldHVybiBlLnZhbHVlPWgsaH0scmVmcmVzaFNlc3Npb246YXN5bmMgZnVuY3Rpb24oKXtjb25zdCBjPWF3YWl0IGQucmVmcmVzaFNlc3Npb24oKTtyZXR1cm4gZS52YWx1ZT1jLGN9LHN0YXJ0SW1wZXJzb25hdGlvbjphc3luYyBmdW5jdGlvbihkKXtjb25zdCBoPWF3YWl0IGMuc3RhcnRJbXBlcnNvbmF0aW9uKGQpO3JldHVybiBlLnZhbHVlPWgsaH0sc3RvcEltcGVyc29uYXRpb246YXN5bmMgZnVuY3Rpb24oKXtjb25zdCBkPWF3YWl0IGMuc3RvcEltcGVyc29uYXRpb24oKTtyZXR1cm4gZS52YWx1ZT1kLGR9LGxvZ291dDphc3luYyBmdW5jdGlvbigpe2F3YWl0IGMubG9nb3V0KCksZS52YWx1ZT1udWxsfX19KSxxYT1kZWZpbmVOdXh0Um91dGVNaWRkbGV3YXJlKGFzeW5jIGU9PntsZXQgYyxkO2NvbnN0IGg9emEoKTtpZighaC5jdXJyZW50VXNlcil0cnl7W2MsZF09VygoKT0+aC5mZXRjaEN1cnJlbnRVc2VyKCkpLGF3YWl0IGMsZCgpfWNhdGNoe31jb25zdCB2PSEhaC5jdXJyZW50VXNlcixiPSEwPT09ZS5tZXRhLnB1YmxpY3x8ITA9PT1lLm1ldGEudW5hdXRoZW50aWNhdGVkT25seTtyZXR1cm4gdiYmZS5tZXRhLnVuYXV0aGVudGljYXRlZE9ubHk/bmF2aWdhdGVUbygiL2Rhc2hib2FyZCIpOnZ8fGI/dm9pZCAwOm5hdmlnYXRlVG8oIi9hdXRoL2xvZ2luIil9KTtmdW5jdGlvbiBwYXJzZUFiaWxpdHkoZSl7Y29uc3RbYz0iIixkPSIiLGhdPWUuc3BsaXQoIjoiKTtyZXR1cm57c3ViamVjdDpjLGFjdGlvbjpkLHNjb3BlOmh9fWNvbnN0IFVhPW5ldyBTZXQoWyJyZWFkIiwid3JpdGUiLCJkZWxldGUiXSk7ZnVuY3Rpb24gc2F0aXNmaWVzQWJpbGl0eShlLGMpe2NvbnN0e3N1YmplY3Q6ZCxhY3Rpb246aCxzY29wZTp2fT1wYXJzZUFiaWxpdHkoYyk7cmV0dXJuIGUuc29tZShlPT57Y29uc3R7c3ViamVjdDpjLGFjdGlvbjpiLHNjb3BlOnl9PXBhcnNlQWJpbGl0eShlKTtyZXR1cm4gYz09PWQmJighKCJtYW5hZ2UiIT09Ynx8eSE9PXZ8fCFVYS5oYXMoaCkpfHxiPT09aCYmeT09PXYpfSl9ZnVuY3Rpb24gcGFnZU1ldGFDYW5DaGVjayhlLGMpe3JldHVybiAwPT09Yy5sZW5ndGh8fGMuc29tZShjPT5mdW5jdGlvbihlLGMpe2NvbnN0e3N1YmplY3Q6ZCxhY3Rpb246aH09cGFyc2VBYmlsaXR5KGMpO3JldHVybiBlLnNvbWUoZT0+e2NvbnN0e3N1YmplY3Q6YyxhY3Rpb246dn09cGFyc2VBYmlsaXR5KGUpO3JldHVybiBjPT09ZCYmKCEoIm1hbmFnZSIhPT12fHwhVWEuaGFzKGgpKXx8dj09PWgpfSl9KGUsYykpfWNvbnN0IEhhPVtSYSxxYSxkZWZpbmVOdXh0Um91dGVNaWRkbGV3YXJlKGU9Pntjb25zdCBjPWUubWV0YS5jYW4/P1tdO2lmKDA9PT1jLmxlbmd0aClyZXR1cm47Y29uc3QgZD16YSgpO3JldHVybiBwYWdlTWV0YUNhbkNoZWNrKGQuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sYyk/dm9pZCAwOm5hdmlnYXRlVG8oIi9mb3JiaWRkZW4iKX0pLGRlZmluZU51eHRSb3V0ZU1pZGRsZXdhcmUoZT0+e30pXSxHYT17fSxXYT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJudXh0OnJvdXRlciIsZW5mb3JjZToicHJlIixhc3luYyBzZXR1cChlKXtsZXQgYyxkLGg9dXNlUnVudGltZUNvbmZpZygpLmFwcC5iYXNlVVJMO2NvbnN0IHY9SWEuaGlzdG9yeT8uKGgpPz9jcmVhdGVNZW1vcnlIaXN0b3J5KGgpLGI9SWEucm91dGVzPyhbYyxkXT1XKCgpPT5JYS5yb3V0ZXMoX2EpKSxjPWF3YWl0IGMsZCgpLGM/P19hKTpfYTtsZXQgeTtjb25zdCBFPWNyZWF0ZVJvdXRlcih7Li4uSWEsc2Nyb2xsQmVoYXZpb3I6KGUsYyxkKT0+e2lmKGMhPT1fbyl7aWYoSWEuc2Nyb2xsQmVoYXZpb3Ipe2lmKEUub3B0aW9ucy5zY3JvbGxCZWhhdmlvcj1JYS5zY3JvbGxCZWhhdmlvciwic2Nyb2xsUmVzdG9yYXRpb24iaW4odm9pZCAwKS5oaXN0b3J5KXtjb25zdCBlPUUuYmVmb3JlRWFjaCgoKT0+e2UoKSwodm9pZCAwKS5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uPSJtYW51YWwifSl9cmV0dXJuIElhLnNjcm9sbEJlaGF2aW9yKGUsX28seXx8ZCl9fWVsc2UgeT1kfSxoaXN0b3J5OnYscm91dGVzOmJ9KTtlLnZ1ZUFwcC51c2UoRSk7Y29uc3Qgaz1Zbi5zaGFsbG93UmVmKEUuY3VycmVudFJvdXRlLnZhbHVlKTtFLmFmdGVyRWFjaCgoZSxjKT0+e2sudmFsdWU9Y30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnZ1ZUFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywicHJldmlvdXNSb3V0ZSIse2dldDooKT0+ay52YWx1ZX0pO2NvbnN0IF89ZS5zc3JDb250ZXh0LnVybCxUPVluLnNoYWxsb3dSZWYoRS5jdXJyZW50Um91dGUudmFsdWUpLHN5bmNDdXJyZW50Um91dGU9KCk9PntULnZhbHVlPUUuY3VycmVudFJvdXRlLnZhbHVlfTtFLmFmdGVyRWFjaCgoZSxjKT0+e2UubWF0Y2hlZC5hdCgtMSk/LmNvbXBvbmVudHM/LmRlZmF1bHQ9PT1jLm1hdGNoZWQuYXQoLTEpPy5jb21wb25lbnRzPy5kZWZhdWx0JiZzeW5jQ3VycmVudFJvdXRlKCl9KTtjb25zdCBOPXtzeW5jOnN5bmNDdXJyZW50Um91dGV9O2Zvcihjb25zdCBlIGluIFQudmFsdWUpT2JqZWN0LmRlZmluZVByb3BlcnR5KE4sZSx7Z2V0OigpPT5ULnZhbHVlW2VdLGVudW1lcmFibGU6ITB9KTtlLl9yb3V0ZT1Zbi5zaGFsbG93UmVhY3RpdmUoTiksZS5fbWlkZGxld2FyZXx8PXtnbG9iYWw6W10sbmFtZWQ6e319O2NvbnN0IE89dXNlRXJyb3IoKTtlLnNzckNvbnRleHQ/LmlzbGFuZENvbnRleHR8fEUuYWZ0ZXJFYWNoKGFzeW5jKGMsZCxoKT0+e2RlbGV0ZSBlLl9wcm9jZXNzaW5nTWlkZGxld2FyZSxoJiZhd2FpdCBlLmNhbGxIb29rKCJwYWdlOmxvYWRpbmc6ZW5kIiksNCE9PWg/LnR5cGUmJmMucmVkaXJlY3RlZEZyb20mJmMuZnVsbFBhdGghPT1fJiZhd2FpdCBlLnJ1bldpdGhDb250ZXh0KCgpPT5uYXZpZ2F0ZVRvKGMuZnVsbFBhdGh8fCIvIikpfSk7dHJ5e1tjLGRdPVcoKCk9PkUucHVzaChfKSksYXdhaXQgYyxkKCksW2MsZF09VygoKT0+RS5pc1JlYWR5KCkpLGF3YWl0IGMsZCgpfWNhdGNoKGgpe1tjLGRdPVcoKCk9PmUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihoKSkpLGF3YWl0IGMsZCgpfWNvbnN0IFI9RS5jdXJyZW50Um91dGUudmFsdWU7aWYoc3luY0N1cnJlbnRSb3V0ZSgpLGUuc3NyQ29udGV4dD8uaXNsYW5kQ29udGV4dClyZXR1cm57cHJvdmlkZTp7cm91dGVyOkV9fTtjb25zdCBNPWUucGF5bG9hZC5zdGF0ZS5fbGF5b3V0O3JldHVybiBFLmJlZm9yZUVhY2goYXN5bmMoYyxkKT0+e2lmKGF3YWl0IGUuY2FsbEhvb2soInBhZ2U6bG9hZGluZzpzdGFydCIpLGMubWV0YT1Zbi5yZWFjdGl2ZShjLm1ldGEpLGUuaXNIeWRyYXRpbmcmJk0mJiFZbi5pc1JlYWRvbmx5KGMubWV0YS5sYXlvdXQpJiYoYy5tZXRhLmxheW91dD1NKSxlLl9wcm9jZXNzaW5nTWlkZGxld2FyZT0hMCwhZS5zc3JDb250ZXh0Py5pc2xhbmRDb250ZXh0KXtjb25zdCBoPW5ldyBTZXQoWy4uLkhhLC4uLmUuX21pZGRsZXdhcmUuZ2xvYmFsXSk7Zm9yKGNvbnN0IGUgb2YgYy5tYXRjaGVkKXtjb25zdCBjPWUubWV0YS5taWRkbGV3YXJlO2lmKGMpZm9yKGNvbnN0IGUgb2YgdG9BcnJheSQyKGMpKWguYWRkKGUpfWNvbnN0IHY9ZnVuY3Rpb24oZSl7Y29uc3QgYz0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnBhdGg7dHJ5e3JldHVybiB5YShjKX1jYXRjaChlKXtyZXR1cm57fX19KHtwYXRoOmMucGF0aH0pO2lmKHYuYXBwTWlkZGxld2FyZSlmb3IoY29uc3QgZSBpbiB2LmFwcE1pZGRsZXdhcmUpdi5hcHBNaWRkbGV3YXJlW2VdP2guYWRkKGUpOmguZGVsZXRlKGUpO2Zvcihjb25zdCB2IG9mIGgpe2NvbnN0IGg9InN0cmluZyI9PXR5cGVvZiB2P2UuX21pZGRsZXdhcmUubmFtZWRbdl18fGF3YWl0KEdhW3ZdPy4oKS50aGVuKGU9PmUuZGVmYXVsdHx8ZSkpOnY7aWYoIWgpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJvdXRlIG1pZGRsZXdhcmU6ICcke3Z9Jy5gKTt0cnl7MDtjb25zdCB2PWF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PmgoYyxkKSk7aWYoITE9PT12fHx2IGluc3RhbmNlb2YgRXJyb3Ipe2NvbnN0IGM9dnx8Y3JlYXRlRXJyb3Ioe3N0YXR1czo0MDQsc3RhdHVzVGV4dDpgUGFnZSBOb3QgRm91bmQ6ICR7X31gfSk7cmV0dXJuIGF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihjKSksITF9aWYoITA9PT12KWNvbnRpbnVlO2lmKCExPT09dilyZXR1cm4gdjtpZih2KXJldHVybiBpc051eHRFcnJvcih2KSYmdi5mYXRhbCYmYXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+c2hvd0Vycm9yKHYpKSx2fWNhdGNoKGMpe2NvbnN0IGQ9Y3JlYXRlRXJyb3IoYyk7cmV0dXJuIGQuZmF0YWwmJmF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihkKSksZH19fX0pLEUub25FcnJvcihhc3luYygpPT57ZGVsZXRlIGUuX3Byb2Nlc3NpbmdNaWRkbGV3YXJlLGF3YWl0IGUuY2FsbEhvb2soInBhZ2U6bG9hZGluZzplbmQiKX0pLEUuYWZ0ZXJFYWNoKGM9PntpZigwPT09Yy5tYXRjaGVkLmxlbmd0aCYmIU8udmFsdWUpcmV0dXJuIGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihjcmVhdGVFcnJvcih7c3RhdHVzOjQwNCxmYXRhbDohMSxzdGF0dXNUZXh0OmBQYWdlIG5vdCBmb3VuZDogJHtjLmZ1bGxQYXRofWAsZGF0YTp7cGF0aDpjLmZ1bGxQYXRofX0pKSl9KSxlLmhvb2tzLmhvb2tPbmNlKCJhcHA6Y3JlYXRlZCIsYXN5bmMoKT0+e3RyeXsibmFtZSJpbiBSJiYoUi5uYW1lPXZvaWQgMCksYXdhaXQgRS5yZXBsYWNlKHsuLi5SLGZvcmNlOiEwfSksRS5vcHRpb25zLnNjcm9sbEJlaGF2aW9yPUlhLnNjcm9sbEJlaGF2aW9yfWNhdGNoKGMpe2F3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihjKSl9fSkse3Byb3ZpZGU6e3JvdXRlcjpFfX19fSksWGE9W1siTnV4dEVycm9yIixlPT5pc051eHRFcnJvcihlKSYmZS50b0pTT04oKV0sWyJFbXB0eVNoYWxsb3dSZWYiLGU9PlluLmlzUmVmKGUpJiZZbi5pc1NoYWxsb3coZSkmJiFlLnZhbHVlJiYoImJpZ2ludCI9PXR5cGVvZiBlLnZhbHVlPyIwbiI6SlNPTi5zdHJpbmdpZnkoZS52YWx1ZSl8fCJfIildLFsiRW1wdHlSZWYiLGU9PlluLmlzUmVmKGUpJiYhZS52YWx1ZSYmKCJiaWdpbnQiPT10eXBlb2YgZS52YWx1ZT8iMG4iOkpTT04uc3RyaW5naWZ5KGUudmFsdWUpfHwiXyIpXSxbIlNoYWxsb3dSZWYiLGU9PlluLmlzUmVmKGUpJiZZbi5pc1NoYWxsb3coZSkmJmUudmFsdWVdLFsiU2hhbGxvd1JlYWN0aXZlIixlPT5Zbi5pc1JlYWN0aXZlKGUpJiZZbi5pc1NoYWxsb3coZSkmJlluLnRvUmF3KGUpXSxbIlJlZiIsZT0+WW4uaXNSZWYoZSkmJmUudmFsdWVdLFsiUmVhY3RpdmUiLGU9PlluLmlzUmVhY3RpdmUoZSkmJlluLnRvUmF3KGUpXV0sS2E9ZGVmaW5lTnV4dFBsdWdpbih7bmFtZToibnV4dDpyZXZpdmUtcGF5bG9hZDpzZXJ2ZXIiLHNldHVwKCl7Zm9yKGNvbnN0W2UsY11vZiBYYSlkZWZpbmVQYXlsb2FkUmVkdWNlcihlLGMpfX0pLEphPWRlZmluZU51eHRQbHVnaW4oe25hbWU6InBpbmlhIixzZXR1cChlKXtjb25zdCBjPWZ1bmN0aW9uKCl7Y29uc3QgZT1Zbi5lZmZlY3RTY29wZSghMCksYz1lLnJ1bigoKT0+WW4ucmVmKHt9KSk7bGV0IGQ9W10saD1bXTtjb25zdCB2PVluLm1hcmtSYXcoe2luc3RhbGwoZSl7c2V0QWN0aXZlUGluaWEodiksdi5fYT1lLGUucHJvdmlkZShkYSx2KSxlLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRwaW5pYT12LGguZm9yRWFjaChlPT5kLnB1c2goZSkpLGg9W119LHVzZShlKXtyZXR1cm4gdGhpcy5fYT9kLnB1c2goZSk6aC5wdXNoKGUpLHRoaXN9LF9wOmQsX2E6bnVsbCxfZTplLF9zOm5ldyBNYXAsc3RhdGU6Y30pO3JldHVybiB2fSgpO3JldHVybiBlLnZ1ZUFwcC51c2UoYyksc2V0QWN0aXZlUGluaWEoYyksZS5wYXlsb2FkJiZlLnBheWxvYWQucGluaWEmJihjLnN0YXRlLnZhbHVlPWUucGF5bG9hZC5waW5pYSkse3Byb3ZpZGU6e3BpbmlhOmN9fX0saG9va3M6eyJhcHA6cmVuZGVyZWQiKCl7Y29uc3QgZT11c2VOdXh0QXBwKCk7ZS5wYXlsb2FkLnBpbmlhPVluLnRvUmF3KGUuJHBpbmlhKS5zdGF0ZS52YWx1ZSxzZXRBY3RpdmVQaW5pYSh2b2lkIDApfX19KSxRYT0ic3lzdGVtIixZYT1kZWZpbmVOdXh0UGx1Z2luKGU9Pntjb25zdCBjPWUuc3NyQ29udGV4dD8uaXNsYW5kQ29udGV4dD9Zbi5yZWYoe30pOnVzZVN0YXRlKCJjb2xvci1tb2RlIiwoKT0+WW4ucmVhY3RpdmUoe3ByZWZlcmVuY2U6UWEsdmFsdWU6UWEsdW5rbm93bjohMCxmb3JjZWQ6ITF9KSkudmFsdWUsZD17fTt1c2VIZWFkKHtodG1sQXR0cnM6ZH0pLHVzZVJvdXRlcigpLmFmdGVyRWFjaChlPT57Y29uc3QgaD1lLm1ldGEuY29sb3JNb2RlO2gmJiJzeXN0ZW0iIT09aCYmKGMudmFsdWU9ZFsiZGF0YS1jb2xvci1tb2RlLWZvcmNlZCJdPWgsYy5mb3JjZWQ9ITApfSksZS5wcm92aWRlKCJjb2xvck1vZGUiLGMpfSksWmE9WW4uZGVmaW5lQXN5bmNDb21wb25lbnQoKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkVsKS50aGVuKGU9PmUuZGVmYXVsdHx8ZS5kZWZhdWx0fHxlKSksZWk9W1siSWNvbiIsWmFdXSx0aT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJudXh0Omdsb2JhbC1jb21wb25lbnRzIixzZXR1cChlKXtmb3IoY29uc3RbYyxkXW9mIGVpKWUudnVlQXBwLmNvbXBvbmVudChjLGQpLGUudnVlQXBwLmNvbXBvbmVudCgiTGF6eSIrYyxkKX19KSxuaT1kZWZpbmVOdXh0UGx1Z2luKCgpPT4oe3Byb3ZpZGU6e2NzcmZGZXRjaDpGLmNyZWF0ZSh7b25SZXF1ZXN0KHtvcHRpb25zOmV9KXtjb25zdHtjc3JmOmMsaGVhZGVyTmFtZTpkfT11c2VDc3JmKCk7ZS5oZWFkZXJzPW5ldyBIZWFkZXJzKGUuaGVhZGVyc3x8e30pLGUuaGVhZGVycy5hcHBlbmQoZCxjKX19KX19KSksb2k9bmV3IFJlZ0V4cCgvR29vZ2xlYm90XC98R29vZ2xlYm90LU1vYmlsZXxHb29nbGVib3QtSW1hZ2V8R29vZ2xlYm90LU5ld3N8R29vZ2xlYm90LVZpZGVvfEFkc0JvdC1Hb29nbGUoW14tXXwkKXxBZHNCb3QtR29vZ2xlLU1vYmlsZXxGZWVkZmV0Y2hlci1Hb29nbGV8TWVkaWFwYXJ0bmVycy1Hb29nbGV8TWVkaWFwYXJ0bmVycyBcKEdvb2dsZWJvdFwpfEFQSXMtR29vZ2xlfEdvb2dsZS1JbnNwZWN0aW9uVG9vbHxTdG9yZWJvdC1Hb29nbGV8R29vZ2xlT3RoZXJ8YmluZ2JvdHxTbHVycHxbd1ddZ2V0fExpbmtlZEluQm90fFB5dGhvbi11cmxsaWJ8cHl0aG9uLXJlcXVlc3RzfGFpb2h0dHB8aHR0cHh8bGlid3d3LXBlcmx8aHR0cHVuaXR8TnV0Y2h8R28taHR0cC1jbGllbnR8cGhwY3Jhd2x8bXNuYm90fGp5eG9ib3R8RkFTVC1XZWJDcmF3bGVyfEZBU1QgRW50ZXJwcmlzZSBDcmF3bGVyfEJJR0xPVFJPTnxUZW9tYXxjb252ZXJhfHNlZWtib3R8R2lnYWJvdHxHaWdhYmxhc3R8ZXhhYm90fGlhX2FyY2hpdmVyfEdpbmdlckNyYXdsZXJ8d2VibW9uIHxIVFRyYWNrfGdydWJcLm9yZ3xVc2luZU5vdXZlbGxlQ3Jhd2xlcnxhbnRpYm90fG5ldHJlc2VhcmNoc2VydmVyfHNwZWVkeXxmbHVmZnl8ZmluZGxpbmt8bXNyYm90fHBhbnNjaWVudHx5YWN5Ym90fEFJU2VhcmNoQm90fGlwcy1hZ2VudHx0YWdvb2JvdHxNSjEyYm90fHdvcmlvYm90fHlhbmdhfGJ1enpib3R8bWxib3R8eWFuZGV4XC5jb21cL2JvdHN8cHVyZWJvdHxMaW5ndWVlIEJvdHxDeWJlclBhdHJvbHx2b2lsYWJvdHxCYWlkdXNwaWRlcnxjaXRlc2Vlcnhib3R8c3Bib3R8dHdlbmdhYm90fHBvc3RyYW5rfFR1cm5pdGlufHNjcmliZGJvdHxwYWdlMnJzc3xzaXRlYm90fGxpbmtkZXh8QWRpZHhib3R8ZXpvb21zfGRvdGJvdHxNYWlsXC5SVV9Cb3R8ZGlzY29ib3R8aGVyaXRyaXh8ZmluZHRoYXRmaWxlfGV1cm9wYXJjaGl2ZVwub3JnfE5lcmRCeU5hdHVyZVwuQm90fChzaXN0cml4fFNJU1RSSVgpIFtjQ11yYXdsZXJ8QWhyZWZzKEJvdHxTaXRlQXVkaXQpfGZ1ZWxib3R8Q3J1bmNoQm90fEluZGVlZEJvdHxtYXBweWRhdGF8d29vYm90fFpvb21pbmZvQm90fFByaXZhY3lBd2FyZUJvdHxNdWx0aXZpZXdib3R8U1dJTUdCb3R8R3JvYmJvdHxlcmlnaHR8QXBlcmNpdGV8c2VtYW50aWNib3R8QWJvdW5kZXh8ZG9tYWluY3Jhd2xlcnx3YnNlYXJjaGJvdHxzdW1taWZ5fENDQm90fGVkaXN0ZXJib3R8U2V6bmFtQm90fGVjMmxpbmtmaW5kZXJ8Z3NsZmJvdHxhaUhpdEJvdHxpbnRlbGl1bV9ib3R8ZmFjZWJvb2tleHRlcm5hbGhpdHxZZXRpfFJldHJldm9QYWdlQW5hbHl6ZXJ8bGItc3BpZGVyfFNvZ291fGxzc2JvdHxjYXJlZXJib3R8d290Ym94fHdvY2JvdHxpY2hpcm98RHVja0R1Y2tCb3R8bHNzcm9ja2V0Y3Jhd2xlcnxkcnVwYWN0fHdlYmNvbXBhbnljcmF3bGVyfGFjb29uYm90fG9wZW5pbmRleHNwaWRlcnxnbmFtIGduYW0gc3BpZGVyfHdlYi1hcmNoaXZlLW5ldFwuY29tXC5ib3R8YmFja2xpbmtjcmF3bGVyfGNvY2NvY3xpbnRlZ3JvbWVkYnxjb250ZW50IGNyYXdsZXIgc3BpZGVyfHRvcGxpc3Rib3R8aXQybWVkaWEtZG9tYWluLWNyYXdsZXJ8aXAtd2ViLWNyYXdsZXJcLmNvbXxzaXRlZXhwbG9yZXJcLmluZm98ZWxpc2Fib3R8cHJveGltaWN8Y2hhbmdlZGV0ZWN0aW9ufGFyYWJvdHxXZVNFRTpTZWFyY2h8bmlraS1ib3R8Q3J5c3RhbFNlbWFudGljc0JvdHxyb2dlcmJvdHwzNjBTcGlkZXJ8cHNib3R8SW50ZXJmYXhTY2FuQm90fENDIE1ldGFkYXRhIFNjYXBlcnxnMDBnMWVcLm5ldHxHcmFwZXNob3RDcmF3bGVyfHVybGFwcGVuZGJvdHxicmFpbm9ib3R8ZnItY3Jhd2xlcnxiaW5sYXJ8U2ltcGxlQ3Jhd2xlcnxUd2l0dGVyYm90fGNYZW5zZWJvdHxzbXRib3R8Ym5mXC5mcl9ib3R8QTYtSW5kZXhlcnxBRG1hbnRYfEZhY2Vib3R8T3JhbmdlQm90XC98bWVtb3J5Ym90fEFkdkJvdHxNZWdhSW5kZXh8U2VtYW50aWNTY2hvbGFyQm90fGx0eDcxfG5lcmR5Ym90fHhvdmlib3R8QlViaU5HfFF3YW50aWZ5fGFyY2hpdmVcLm9yZ19ib3R8QXBwbGVib3R8VHdlZXRtZW1lQm90fGNyYXdsZXI0anxmaW5keGJvdHxTW2VFXVttTV1ydXNoQm90fHlvb3pCb3R8bGlwcGVyaGV5fFkhSnxEb21haW4gUmUtQW5pbWF0b3IgQm90fEFkZFRoaXN8U2NyZWFtaW5nIEZyb2cgU0VPIFNwaWRlcnxNZXRhVVJJfFNjcmFweXxMaXZlbGFwW2JCXW90fE9wZW5Ib3NlQm90fENhcHN1bGVDaGVja2VyfGNvbGxlY3Rpb25AaW5mZWd5XC5jb218SXN0ZWxsYUJvdHxEZXVTdVwvfGJldGFCb3R8Q2xpcXpib3RcL3xNb2plZWtCb3RcL3xuZXRFc3RhdGUgTkUgQ3Jhd2xlcnxTYWZlU2VhcmNoIG1pY3JvZGF0YSBjcmF3bGVyfEdsdXRlbiBGcmVlIENyYXdsZXJcL3xTb25pY3xTeXNvbW9zfFRyb3ZlfGRlYWRsaW5rY2hlY2tlcnxTbGFjay1JbWdQcm94eXxFbWJlZGx5fFJhbmtBY3RpdmVMaW5rQm90fGlza2FuaWV8U2FmZUROU0JvdHxTa3lwZVVyaVByZXZpZXd8VmVvb3pib3R8U2xhY2tib3R8cmVkZGl0Ym90fGRhdGFnbmlvbmJvdHxHb29nbGUtQWR3b3Jkcy1JbnN0YW50fGFkYmVhdF9ib3R8V2hhdHNBcHB8Y29udHhib3R8cGludGVyZXN0XC5jb21cL2JvdHxlbGVjdHJpY21vbmt8R2FybGlrQ3Jhd2xlcnxCaW5nUHJldmlld1wvfHZlYmlkb29ib3R8RmVtdG9zZWFyY2hCb3R8WWFob28gTGluayBQcmV2aWV3fE1ldGFKb2JCb3R8RG9tYWluU3RhdHNCb3R8bWluZFVwQm90fERhdW1cL3xKdWdlbmRzY2h1dHpwcm9ncmFtbS1DcmF3bGVyfFhlbnUgTGluayBTbGV1dGh8UGNvcmUtSFRUUHxtb2F0Ym90fEtvc21pb0JvdHxbcFBdaW5nZG9tfEFwcEluc2lnaHRzfFBoYW50b21KU3xHb3dpa2lib3R8UGlwbEJvdHxEaXNjb3JkYm90fFRlbGVncmFtQm90fEpldHNsaWRlfG5ld3NoYXJlY291bnRzfEphbWVzIEJPVHxCYXJrW3JSXW93bGVyfFRpbkV5ZXxTb2NpYWxSYW5rSU9Cb3R8dHJlbmRpY3Rpb25ib3R8T2NhcmluYWJvdHxlcGljYm90fFByaW1hbGJvdHxEdWNrRHVja0dvLUZhdmljb25zLUJvdHxHbm93aXROZXdzYm90fExlaWtpYm90fExpbmtBcmNoaXZlcnxZYUtcL3xQYXBlckxpQm90fERpZ2cgRGVlcGVyfGRjcmF3bHxTbmFja3Rvcnl8QW5kZXJzUGlua0JvdHxGeXJlYm90fEV2ZXJ5b25lU29jaWFsQm90fE1lZGlhdG9vbGtpdGJvdHxMdW1pbmF0b3Itcm9ib3RzfEV4dExpbmtzQm90fFN1cnZleUJvdHxOSU5HXC98b2todHRwfE51enplbHxvbWdpbGl8UG9ja2V0UGFyc2VyfFlpc291U3BpZGVyfHVtLUxOfFRvdXRpYW9TcGlkZXJ8TXVja1JhY2t8SmFtaWUncyBTcGlkZXJ8QUhDXC98TmV0Y3JhZnRTdXJ2ZXlBZ2VudHxMYXNlcmxpa2Vib3R8XkFwYWNoZS1IdHRwQ2xpZW50fEFwcEVuZ2luZS1Hb29nbGV8SmV0dHl8VXBmbG93fFRoaW5rbGFifFRyYWFja3JcLmNvbXxUd3VybHl8TWFzdG9kb258aHR0cF9nZXR8RG55ekJvdHxib3RpZnl8MDA3YWM5IENyYXdsZXJ8QmVobG9vbEJvdHxCcmFuZFZlcml0eXxjaGVja19odHRwfEJEQ2JvdHxadW1Cb3R8RVpJRHxJQ0MtQ3Jhd2xlcnxBcmNoaXZlQm90fF5MQ0MgfGZpbHRlcmRiXC5pc3NcLm5ldFwvY3Jhd2xlcnxCTFBfYmJvdHxCb21ib3JhQm90fEJ1Y2tcL3xDb21wYW55Ym9vay1DcmF3bGVyfEdlbmllb3xtYWdwaWUtY3Jhd2xlcnxNZWx0d2F0ZXJOZXdzfE1vcmVvdmVyfG5ld3NwYXBlclwvfFNjb3V0SmV0fChefCApc2VudHJ5XC98U3RvcnlnaXplQm90fFVwdGltZVJvYm90fE91dGNsaWNrc0JvdHxzZW9zY2FubmVyc3xIYXRlbmF8R29vZ2xlIFdlYiBQcmV2aWV3fE1hdWlCb3R8QWxwaGFCb3R8U0JMLUJPVHxJQVMgY3Jhd2xlcnxhZHNjYW5uZXJ8TmV0dmliZXN8YWNhcGJvdHxCYWlkdS1ZdW5HdWFuQ2V8Yml0bHlib3R8YmxvZ211cmFCb3R8Qm90XC5BcmFUdXJrYVwuY29tfGJvdC1wZ2VcLmNobG9vZVwuY29tfEJveGNhckJvdHxCVFdlYkNsaWVudHxDb250ZXh0QWQgQm90fERpZ2luY29yZSBib3R8RGlzcXVzfEZlZWRseXxGZXRjaFwvfEZldmVyfEZsYW1pbmdvX1NlYXJjaEVuZ2luZXxGbGlwYm9hcmRQcm94eXxnMnJlYWRlci1ib3R8RzIgV2ViIFNlcnZpY2VzfGltcmJvdHxLN01MV0NCb3R8S2Vtdmlib3R8TGFuZGF1LU1lZGlhLVNwaWRlcnxsaW5rYXBlZGlhYm90fHZrU2hhcmV8U2l0ZWltcHJvdmVcLmNvbXxCTEVYQm90XC98RGFyZUJvb3N0fFp1cGVybGlzdEJvdFwvfE1pbmlmbHV4XC98RmVlZHNwb3R8RGlmZmJvdFwvfFNFT2tpY2tzfHRyYWNlbXlmaWxlfE5pbWJvc3RyYXR1cy1Cb3R8emdyYWJ8UFItQ1lcLlJVfEFkc1R4dENyYXdsZXJ8RGF0YWZlZWR3YXRjaHxaYWJiaXh8VGFuZ2libGVlQm90fGdvb2dsZS14cmF3bGVyfGF4aW9zfEFtYXpvbiBDbG91ZEZyb250fFB1bHNlcG9pbnR8Q2xvdWRGbGFyZS1BbHdheXNPbmxpbmV8Q2xvdWRmbGFyZS1IZWFsdGhjaGVja3N8Q2xvdWRmbGFyZS1UcmFmZmljLU1hbmFnZXJ8Q2xvdWRGbGFyZS1QcmVmZXRjaHxDbG91ZGZsYXJlLVNTTERldGVjdG9yfGh0dHBzOlwvXC9kZXZlbG9wZXJzXC5jbG91ZGZsYXJlXC5jb21cL3NlY3VyaXR5LWNlbnRlclwvfEdvb2dsZS1TdHJ1Y3R1cmVkLURhdGEtVGVzdGluZy1Ub29sfFdvcmR1cEluZm9TZWFyY2h8V2ViRGF0YVN0YXRzfEh0dHBVcmxDb25uZWN0aW9ufFpvb21Cb3R8VmVsZW5QdWJsaWNXZWJDcmF3bGVyfE1vb2RsZUJvdHxqcGctbmV3c2JvdHxvdXRicmFpbnxXM0NfVmFsaWRhdG9yfFZhbGlkYXRvclwubnV8VzNDLWNoZWNrbGlua3xXM0MtbW9iaWxlT0t8VzNDX0kxOG4tQ2hlY2tlcnxGZWVkVmFsaWRhdG9yfFczQ19DU1NfVmFsaWRhdG9yfFczQ19Vbmljb3JufEdvb2dsZS1QaHlzaWNhbFdlYnxCbGFja2JvYXJkfElDQm90XC98QmF6UXV4fFR3aW5nbHl8Uml2dmF8RXhwZXJpYm90fGF3ZXNvbWVjcmF3bGVyfERhdGFwcm92aWRlclwuY29tfEdyb3VwSGlnaFwvfHRoZW9sZHJlYWRlclwuY29tfEFueUV2ZW50fFVwdGltZWJvdFwub3JnfE5tYXAgU2NyaXB0aW5nIEVuZ2luZXwyaXBcLnJ1fENsaWNrYWd5fENhbGlwZXJib3R8TUJDcmF3bGVyfG9ubGluZS13ZWJjZW8tYm90fEIyQiBCb3R8QWRkU2VhcmNoQm90fEdvb2dsZSBGYXZpY29ufEh1YlNwb3R8Q2hyb21lLUxpZ2h0aG91c2V8SGVhZGxlc3NDaHJvbWV8Q2hlY2tNYXJrTmV0d29ya1wvfHd3d1wudXB0aW1lXC5jb218U3RyZWFtbGluZTNCb3RcL3xzZXJwc3RhdGJvdFwvfE1peG5vZGVDYWNoZVwvfF5jdXJsfFNpbXBsZVNjcmFwZXJ8UlNTaW5nQm90fEpvb2JsZWJvdHxmZWRvcmFwbGFuZXR8RnJpZW5kaWNhfE5leHRDbG91ZHxUaW55IFRpbnkgUlNTfFJlZ2lvblN0dXR0Z2FydEJvdHxCeXRlc3BpZGVyfERhdGFueXplfEdvb2dsZS1TaXRlLVZlcmlmaWNhdGlvbnxUcmVuZHNtYXBSZXNvbHZlcnx0d2VldGVkdGltZXN8TlRFTlRib3R8R3dlbmV8U2ltcGxlUGllfFNlYXJjaEF0bGFzfFN1cGVyZmVlZHJ8ZmVlZGJvdHxVVC1Eb3JrYm90fEFtYXpvbmJvdHxTZXJlbmRlcHV0eUJvdHxFeWVvdGFib3R8b2ZmaWNlc3RvcmVib3R8TmV0aWNsZSBDcmF3bGVyfFN1cmRvdGx5Qm90fExpbmtpc0JvdHxBd2FyaW9TbWFydEJvdHxBd2FyaW9Sc3NCb3R8Unl0ZUJvdHxGcmVlV2ViTW9uaXRvcmluZyBTaXRlQ2hlY2tlcnxBc3BpZWdlbEJvdHxOQVZFUiBCbG9nIFJzc2JvdHx6ZW5iYWNrIGJvdHxTZW50aUJvdHxEb21haW5zIFByb2plY3RcL3xQYW5kYWx5dGljc3xWS1JvYm90fGJpZHN3aXRjaGJvdHx0aWdlcmJvdHxOSVhTdGF0c2JvdHxBdG9tIEZlZWQgUm9ib3R8W0NjXXVyZWJvdHxQYWdlUGVla2VyXC98VmlnaWxcL3xyc3Nib3RcL3xzdGFydG1lYm90XC98Sm9iYm9lcnNlQm90fHNlZXdpdGhraWRzfE5JTkpBIGJvdHxDdXRib3R8QnVibHVwQm90fEJyYW5kT05ib3R8UmlkZGVyQm90fFRhYm9vbGFib3R8RHViYm90Ym90fEZpbmRJVEFuc3dlcnNib3R8aW5mb29ib3R8UmVmaW5kYm90fEJsb2dUcmFmZmljXC9cZFwuXGQrIEZlZWQtRmV0Y2hlcnxTZW9iaWxpdHlCb3R8Q2luY3Jhd3xEcmFnb25ib3R8Vm9sdXVtRFNQLWNvbnRlbnQtYm90fEZyZXNoUlNTfEJpdEJvdHxeUEhQLUN1cmwtQ2xhc3N8R29vZ2xlLUNlcnRpZmljYXRlcy1CcmlkZ2V8Y2VudHVyeWJvdHxWaWJlcnxlXC52ZW50dXJlcyBJbnZlc3RtZW50IENyYXdsZXJ8ZXZjLWJhdGNofFBldGFsQm90fHZpcnVzdG90YWx8KF58IClQVFNUXC98bWluaWNyYXdsZXJ8Q29va2llYm90fHRyb3ZpdEJvdHxzZW9zdGFyXC5jb3xJb25DcmF3bHxVcHRpbWUtS3VtYXxTZWVrcG9ydHxGcmVzaHBpbmdCb3R8RmVlZGJpbnxDcml0ZW9Cb3R8U25hcCBVUkwgUHJldmlldyBTZXJ2aWNlfEJldHRlciBVcHRpbWUgQm90fFJ1eGl0U3ludGhldGljfEdvb2dsZS1SZWFkLUFsb3VkfFZhbHZlXC9TdGVhbXxPZGtsQm90XC98R1BUQm90fENoYXRHUFQtVXNlcnxPQUktU2VhcmNoQm90fFlhbmRleFJlbmRlclJlc291cmNlc0JvdFwvfExpZ2h0c3BlZWRTeXN0ZW1zQ3Jhd2xlcnxldi1jcmF3bGVyXC98Qml0U2lnaHRCb3RcL3x3b29yYW5rcmV2aWV3XC98R29vZ2xlLVNhZmV0eXxBd2FyaW9Cb3R8RGF0YUZvclNlb0JvdHxMaW5lc3BpZGVyfFdlbGxLbm93bkJvdHxBIFBhdGVudCBDcmF3bGVyfFN0cmFjdEJvdHxzZWFyY2hcLm1hcmdpbmFsaWFcLm51fFlvdUJvdHxOaWNlY3Jhd2xlcnxOZWV2YWJvdHxCcmlnaHRFZGdlIENyYXdsZXJ8U2l0ZUNoZWNrZXJCb3RDcmF3bGVyfFRvbWJhUHVibGljV2ViQ3Jhd2xlcnxDcmF3bHlQcm9qZWN0Q3Jhd2xlcnxLb21vZGlhQm90fEtTdGFuZEJvdHxDSVNQQSBXZWJjcmF3bGVyfE1UUm9ib3R8aHlzY29yZVwuaW98QWxleGFuZHJpYU9yZ0JvdHwyaXAgYm90fFllbGxvd2JyYW5kcHJvdGVjdGlvbmJvdHxTRU9saXplcnx2dWh1dkJvdHxJTkVUREVYLUJPVHxTeW5hcHNlfHQzdmVyc2lvbnNCb3R8ZGVlcG5vY3xDb2NvbHl6ZWJvdHxoeXBlc3RhdHxSZXZlcnNlRW5naW5lZXJpbmdCb3R8c2VtcGlcLnRlY2h8SWZyYW1lbHl8TWV0YUluc3BlY3Rvcnxub2RlLWZldGNofGw5ZXhwbG9yZXxweXRob24tb3BlbmdyYXBofE9wZW5HcmFwaENoZWNrfGRldmVsb3BlcnNcLmdvb2dsZVwuY29tXC9cK1wvd2ViXC9zbmlwcGV0fFNlbnV0b0JvdHxNYUNvQ3V8TmV3c0JsdXJ8aW5vcmVhZGVyfE5ldFN5c3RlbXNSZXNlYXJjaHxQYWdlVGhpbmd8V29yZFByZXNzXC98UGh4Qm90fEltYWdlc2lmdEJvdHxFeHBhbnNlfEludGVybmV0TWVhc3VyZW1lbnR8XkJXXC98R2VlZG9Cb3R8QXVkaXN0byBDcmF3bGVyfFBlcnBsZXhpdHlCb3RcL3xbY0NdbGF1ZGVbYkJdb3R8TW9uc2lkb2JvdHxHcm91cE1lQm90fFZlcmNlbGJvdHx2ZXJjZWwtc2NyZWVuc2hvdHxmYWNlYm9va2NhdGFsb2dcL3xtZXRhLWV4dGVybmFsYWRzXC98bWV0YS1leHRlcm5hbGFnZW50XC98bWV0YS1leHRlcm5hbGZldGNoZXJcL3xBY2FkZW1pY0JvdFJUVXxLZXliYXNlQm90fExlbW15fENvb2tpZUh1YlNjYW58SHlkcm96ZW5cLmlvfEhUVFAgQmFubmVyIERldGVjdGlvbnxTdW1tYWx5Qm90fE1pY3Jvc29mdFByZXZpZXdcL3xHZWVkb1Byb2R1Y3RTZWFyY2h8VGlrVG9rU3BpZGVyfE9uQ3Jhd2xcL3xzaW5kcmVzb3JodXNcL2dvdHxDZW5zeXNJbnNwZWN0XC98U0JJbnR1aXRpb25zQm90XC98c2l0ZWJ1bGJ8WWV4dEJvdFwvfERhdGFkb2dTeW50aGV0aWNzfEdvb2dsZS1BZHMtQ29udmVyc2lvbnMvKSxyaT0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxGQkFOfEZCQVZ8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxJbnN0YWdyYW18aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWluby9pLGFpPS8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzXC0pfGFpKGtvfHJuKXxhbChhdnxjYXxjbyl8YW1vaXxhbihleHxueXx5dyl8YXB0dXxhcihjaHxnbyl8YXModGV8dXMpfGF0dHd8YXUoZGl8XC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcLShufHUpfGM1NVwvfGNhcGl8Y2N3YXxjZG1cLXxjZWxsfGNodG18Y2xkY3xjbWRcLXxjbyhtcHxuZCl8Y3Jhd3xkYShpdHxsbHxuZyl8ZGJ0ZXxkY1wtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcLXxfKXxnMSB1fGc1NjB8Z2VuZXxnZlwtNXxnXC1tb3xnbyhcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGRcLShtfHB8dCl8aGVpXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1wtY3xodChjKFwtfCB8X3xhfGd8cHxzfHQpfHRwKXxodShhd3x0Yyl8aVwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFwtfFwvKXxpYnJvfGlkZWF8aWcwMXxpa29tfGltMWt8aW5ub3xpcGFxfGlyaXN8amEodHx2KWF8amJyb3xqZW11fGppZ3N8a2RkaXxrZWppfGtndCggfFwvKXxrbG9ufGtwdCB8a3djXC18a3lvKGN8ayl8bGUobm98eGkpfGxnKCBnfFwvKGt8bHx1KXw1MHw1NHxcLVthLXddKXxsaWJ3fGx5bnh8bTFcLXd8bTNnYXxtNTBcL3xtYSh0ZXx1aXx4byl8bWMoMDF8MjF8Y2EpfG1cLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFwtfCB8b3x2KXx6eil8bXQoNTB8cDF8diApfG13YnB8bXl3YXxuMTBbMC0yXXxuMjBbMi0zXXxuMzAoMHwyKXxuNTAoMHwyfDUpfG43KDAoMHwxKXwxMCl8bmUoKGN8bSlcLXxvbnx0Znx3Znx3Z3x3dCl8bm9rKDZ8aSl8bnpwaHxvMmltfG9wKHRpfHd2KXxvcmFufG93ZzF8cDgwMHxwYW4oYXxkfHQpfHBkeGd8cGcoMTN8XC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdFwtZ3xxYVwtYXxxYygwN3wxMnwyMXwzMnw2MHxcLVsyLTddfGlcLSl8cXRla3xyMzgwfHI2MDB8cmFrc3xyaW05fHJvKHZlfHpvKXxzNTVcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFwtfG9vfHBcLSl8c2RrXC98c2UoYyhcLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2hcLXxzaGFyfHNpZShcLXxtKXxza1wtMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoXC18dlwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXC18dGRnXC18dGVsKGl8bSl8dGltXC18dFwtbW98dG8ocGx8c2gpfHRzKDcwfG1cLXxtM3xtNSl8dHhcLTl8dXAoXC5ifGcxfHNpKXx1dHN0fHY0MDB8djc1MHx2ZXJpfHZpKHJnfHRlKXx2ayg0MHw1WzAtM118XC12KXx2bTQwfHZvZGF8dnVsY3x2eCg1Mnw1M3w2MHw2MXw3MHw4MHw4MXw4M3w4NXw5OCl8dzNjKFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXC18eW91cnx6ZXRvfHp0ZVwtL2ksaWk9LyhhbmRyb2lkfGJiXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8RkJBTnxGQkFWfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8SW5zdGFncmFtfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoNHw2KTB8c3ltYmlhbnx0cmVvfHVwXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm98YW5kcm9pZHxpcGFkfHBsYXlib29rfHNpbGsvaSxzaT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO2Z1bmN0aW9uIGlzQW5kcm9pZChlKXtyZXR1cm4vYW5kcm9pZC9pLnRlc3QoZSl9Y29uc3QgbGk9W3tuYW1lOiJTYW1zdW5nIixyZWdleDovU2Ftc3VuZ0Jyb3dzZXIvaX0se25hbWU6IkVkZ2UiLHJlZ2V4Oi9lZGcoPzpbZWFdfGlvcyk/XC8vaX0se25hbWU6IkZpcmVmb3giLHJlZ2V4Oi9maXJlZm94fGljZXdlYXNlbHxmeGlvcy9pfSx7bmFtZToiQ2hyb21lIixyZWdleDovY2hyb21lfGNyaW9zfGNybW8vaX0se25hbWU6IlNhZmFyaSIscmVnZXg6L3NhZmFyaXxhcHBsZXdlYmtpdC9pfV07ZnVuY3Rpb24gZ2VuZXJhdGVGbGFncyhlLGM9e30pe2xldCBkPSExLGg9ITEsdj0hMSxiPSExO2lmKCJBbWF6b24gQ2xvdWRGcm9udCI9PT1lKSJ0cnVlIj09PWNbImNsb3VkZnJvbnQtaXMtbW9iaWxlLXZpZXdlciJdJiYoZD0hMCxoPSEwKSwidHJ1ZSI9PT1jWyJjbG91ZGZyb250LWlzLXRhYmxldC12aWV3ZXIiXSYmKGQ9ITEsaD0hMCksInRydWUiPT09Y1siY2xvdWRmcm9udC1pcy1kZXNrdG9wLXZpZXdlciJdJiYoZD0hMSxoPSExKSwidHJ1ZSI9PT1jWyJjbG91ZGZyb250LWlzLWlvcy12aWV3ZXIiXSYmKHY9ITApLCJ0cnVlIj09PWNbImNsb3VkZnJvbnQtaXMtYW5kcm9pZC12aWV3ZXIiXSYmKGI9ITApO2Vsc2UgaWYoYyYmY1siY2YtZGV2aWNlLXR5cGUiXSlzd2l0Y2goY1siY2YtZGV2aWNlLXR5cGUiXSl7Y2FzZSJtb2JpbGUiOmQ9ITAsaD0hMDticmVhaztjYXNlInRhYmxldCI6ZD0hMSxoPSEwO2JyZWFrO2Nhc2UiZGVza3RvcCI6ZD0hMSxoPSExfWVsc2UgZD1mdW5jdGlvbihlKXtyZXR1cm4gcmkudGVzdChlKXx8YWkudGVzdChlLnNsaWNlKDAsNCkpfShlKSxoPWZ1bmN0aW9uKGUpe3JldHVybiBpaS50ZXN0KGUpfHxzaS50ZXN0KGUuc2xpY2UoMCw0KSl9KGUpLHY9ZnVuY3Rpb24oZSl7cmV0dXJuL2lQYWR8aVBob25lfGlQb2QvLnRlc3QoZSl9KGUpLGI9aXNBbmRyb2lkKGUpO2NvbnN0IHk9ZnVuY3Rpb24oZSl7cmV0dXJuL1dpbmRvd3MvLnRlc3QoZSl9KGUpLEU9ZnVuY3Rpb24oZSl7cmV0dXJuL01hYyBPUyBYLy50ZXN0KGUpfShlKSxrPWZ1bmN0aW9uKGUpe3JldHVybi9MaW51eC9pLnRlc3QoZSkmJiFpc0FuZHJvaWQoZSl9KGUpLF89ZnVuY3Rpb24oZSl7Zm9yKGNvbnN0IGMgb2YgbGkpaWYoYy5yZWdleC50ZXN0KGUpKXJldHVybiBjLm5hbWU7cmV0dXJuIiJ9KGUpO3JldHVybnt1c2VyQWdlbnQ6ZSxpc01vYmlsZTpkLGlzTW9iaWxlT3JUYWJsZXQ6aCxpc1RhYmxldDohZCYmaCxpc0Rlc2t0b3A6IWgsaXNJb3M6dixpc0FuZHJvaWQ6Yixpc1dpbmRvd3M6eSxpc0xpbnV4OmssaXNNYWNPUzpFLGlzQXBwbGU6RXx8dixpc0Rlc2t0b3BPclRhYmxldDohZCxpc1NhZmFyaToiU2FmYXJpIj09PV8saXNGaXJlZm94OiJGaXJlZm94Ij09PV8saXNFZGdlOiJFZGdlIj09PV8saXNDaHJvbWU6IkNocm9tZSI9PT1fLGlzU2Ftc3VuZzoiU2Ftc3VuZyI9PT1fLGlzQ3Jhd2xlcjpvaS50ZXN0KGUpfX1jb25zdCBjaT1kZWZpbmVOdXh0UGx1Z2luKCgpPT57Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkucHVibGljLmRldmljZS5kZWZhdWx0VXNlckFnZW50O2xldCBjO3tjb25zdCBkPXVzZVJlcXVlc3RIZWFkZXJzKCksaD1kWyJ1c2VyLWFnZW50Il18fGU7Yz1Zbi5yZWFjdGl2ZShnZW5lcmF0ZUZsYWdzKGgsZCkpfXJldHVybntwcm92aWRlOntkZXZpY2U6Y319fSksdWk9WzUwLDEwMCwyMDAsMzAwLDQwMCw1MDAsNjAwLDcwMCw4MDAsOTAwLDk1MF07ZnVuY3Rpb24gZ2VuZXJhdGVTaGFkZXMoZSxjLGQpe2NvbnN0IGg9ZD9gJHtkfS1gOiIiO3JldHVybmAke3VpLm1hcChkPT5gLS11aS1jb2xvci0ke2V9LSR7ZH06IHZhcigtLSR7aH1jb2xvci0keyJuZXV0cmFsIj09PWM/Im9sZC1uZXV0cmFsIjpjfS0ke2R9LCAke2Z1bmN0aW9uKGUsYyl7cmV0dXJuIGUgaW4gcW8mJiJvYmplY3QiPT10eXBlb2YgcW9bZV0mJmMgaW4gcW9bZV0/cW9bZV1bY106IiJ9KGMsZCl9KTtgKS5qb2luKCJcbiAgIil9YH1mdW5jdGlvbiBnZW5lcmF0ZUNvbG9yKGUsYyl7cmV0dXJuYC0tdWktJHtlfTogdmFyKC0tdWktY29sb3ItJHtlfS0ke2N9KTtgfWNvbnN0IGRpPWRlZmluZU51eHRQbHVnaW4oKCk9Pntjb25zdCBlPXVzZUFwcENvbmZpZygpO3VzZU51eHRBcHAoKTtjb25zdCBjPVluLmNvbXB1dGVkKCgpPT57Y29uc3R7bmV1dHJhbDpjLC4uLmR9PWUudWkuY29sb3JzLGg9ZS51aS5wcmVmaXg7cmV0dXJuYEBsYXllciB0aGVtZSB7XG4gIDpyb290LCA6aG9zdCB7XG4gICR7T2JqZWN0LmVudHJpZXMoZS51aS5jb2xvcnMpLm1hcCgoW2UsY10pPT5nZW5lcmF0ZVNoYWRlcyhlLGMsaCkpLmpvaW4oIlxuICAiKX1cbiAgfVxuICA6cm9vdCwgOmhvc3QsIC5saWdodCB7XG4gICR7T2JqZWN0LmtleXMoZCkubWFwKGU9PmdlbmVyYXRlQ29sb3IoZSw1MDApKS5qb2luKCJcbiAgIil9XG4gIH1cbiAgLmRhcmsge1xuICAke09iamVjdC5rZXlzKGQpLm1hcChlPT5nZW5lcmF0ZUNvbG9yKGUsNDAwKSkuam9pbigiXG4gICIpfVxuICB9XG59YH0pO3VzZUhlYWQoe3N0eWxlOlt7aW5uZXJIVE1MOigpPT5jLnZhbHVlLHRhZ1ByaW9yaXR5OiJjcml0aWNhbCIsaWQ6Im51eHQtdWktY29sb3JzIn1dfSl9KSxwaT0vXlthLXowLTldKygtW2EtejAtOV0rKSokLyxzdHJpbmdUb0ljb249KGUsYyxkLGg9IiIpPT57Y29uc3Qgdj1lLnNwbGl0KCI6Iik7aWYoIkAiPT09ZS5zbGljZSgwLDEpKXtpZih2Lmxlbmd0aDwyfHx2Lmxlbmd0aD4zKXJldHVybiBudWxsO2g9di5zaGlmdCgpLnNsaWNlKDEpfWlmKHYubGVuZ3RoPjN8fCF2Lmxlbmd0aClyZXR1cm4gbnVsbDtpZih2Lmxlbmd0aD4xKXtjb25zdCBlPXYucG9wKCksZD12LnBvcCgpLGI9e3Byb3ZpZGVyOnYubGVuZ3RoPjA/dlswXTpoLHByZWZpeDpkLG5hbWU6ZX07cmV0dXJuIGMmJiF2YWxpZGF0ZUljb25OYW1lKGIpP251bGw6Yn1jb25zdCBiPXZbMF0seT1iLnNwbGl0KCItIik7aWYoeS5sZW5ndGg+MSl7Y29uc3QgZT17cHJvdmlkZXI6aCxwcmVmaXg6eS5zaGlmdCgpLG5hbWU6eS5qb2luKCItIil9O3JldHVybiBjJiYhdmFsaWRhdGVJY29uTmFtZShlKT9udWxsOmV9aWYoZCYmIiI9PT1oKXtjb25zdCBlPXtwcm92aWRlcjpoLHByZWZpeDoiIixuYW1lOmJ9O3JldHVybiBjJiYhdmFsaWRhdGVJY29uTmFtZShlLGQpP251bGw6ZX1yZXR1cm4gbnVsbH0sdmFsaWRhdGVJY29uTmFtZT0oZSxjKT0+ISFlJiYhKCEoYyYmIiI9PT1lLnByZWZpeHx8ZS5wcmVmaXgpfHwhZS5uYW1lKSxmaT1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksbWk9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxoaT1PYmplY3QuZnJlZXplKHsuLi5maSwuLi5taX0pLGdpPU9iamVjdC5mcmVlemUoey4uLmhpLGJvZHk6IiIsaGlkZGVuOiExfSk7ZnVuY3Rpb24gbWVyZ2VJY29uRGF0YShlLGMpe2NvbnN0IGQ9ZnVuY3Rpb24oZSxjKXtjb25zdCBkPXt9OyFlLmhGbGlwIT0hYy5oRmxpcCYmKGQuaEZsaXA9ITApLCFlLnZGbGlwIT0hYy52RmxpcCYmKGQudkZsaXA9ITApO2NvbnN0IGg9KChlLnJvdGF0ZXx8MCkrKGMucm90YXRlfHwwKSklNDtyZXR1cm4gaCYmKGQucm90YXRlPWgpLGR9KGUsYyk7Zm9yKGNvbnN0IGggaW4gZ2kpaCBpbiBtaT9oIGluIGUmJiEoaCBpbiBkKSYmKGRbaF09bWlbaF0pOmggaW4gYz9kW2hdPWNbaF06aCBpbiBlJiYoZFtoXT1lW2hdKTtyZXR1cm4gZH1mdW5jdGlvbiBpbnRlcm5hbEdldEljb25EYXRhKGUsYyxkKXtjb25zdCBoPWUuaWNvbnMsdj1lLmFsaWFzZXN8fE9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGI9e307ZnVuY3Rpb24gcGFyc2UoZSl7Yj1tZXJnZUljb25EYXRhKGhbZV18fHZbZV0sYil9cmV0dXJuIHBhcnNlKGMpLGQuZm9yRWFjaChwYXJzZSksbWVyZ2VJY29uRGF0YShlLGIpfWZ1bmN0aW9uIHBhcnNlSWNvblNldChlLGMpe2NvbnN0IGQ9W107aWYoIm9iamVjdCIhPXR5cGVvZiBlfHwib2JqZWN0IiE9dHlwZW9mIGUuaWNvbnMpcmV0dXJuIGQ7ZS5ub3RfZm91bmQgaW5zdGFuY2VvZiBBcnJheSYmZS5ub3RfZm91bmQuZm9yRWFjaChlPT57YyhlLG51bGwpLGQucHVzaChlKX0pO2NvbnN0IGg9ZnVuY3Rpb24oZSl7Y29uc3QgYz1lLmljb25zLGQ9ZS5hbGlhc2VzfHxPYmplY3QuY3JlYXRlKG51bGwpLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gT2JqZWN0LmtleXMoYykuY29uY2F0KE9iamVjdC5rZXlzKGQpKS5mb3JFYWNoKGZ1bmN0aW9uIHJlc29sdmUoZSl7aWYoY1tlXSlyZXR1cm4gaFtlXT1bXTtpZighKGUgaW4gaCkpe2hbZV09bnVsbDtjb25zdCBjPWRbZV0mJmRbZV0ucGFyZW50LHY9YyYmcmVzb2x2ZShjKTt2JiYoaFtlXT1bY10uY29uY2F0KHYpKX1yZXR1cm4gaFtlXX0pLGh9KGUpO2Zvcihjb25zdCB2IGluIGgpe2NvbnN0IGI9aFt2XTtiJiYoYyh2LGludGVybmFsR2V0SWNvbkRhdGEoZSx2LGIpKSxkLnB1c2godikpfXJldHVybiBkfWNvbnN0IHZpPXtwcm92aWRlcjoiIixhbGlhc2VzOnt9LG5vdF9mb3VuZDp7fSwuLi5maX07ZnVuY3Rpb24gY2hlY2tPcHRpb25hbFByb3BzKGUsYyl7Zm9yKGNvbnN0IGQgaW4gYylpZihkIGluIGUmJnR5cGVvZiBlW2RdIT10eXBlb2YgY1tkXSlyZXR1cm4hMTtyZXR1cm4hMH1jb25zdCBiaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldFN0b3JhZ2UoZSxjKXtjb25zdCBkPWJpW2VdfHwoYmlbZV09T2JqZWN0LmNyZWF0ZShudWxsKSk7cmV0dXJuIGRbY118fChkW2NdPWZ1bmN0aW9uKGUsYyl7cmV0dXJue3Byb3ZpZGVyOmUscHJlZml4OmMsaWNvbnM6T2JqZWN0LmNyZWF0ZShudWxsKSxtaXNzaW5nOm5ldyBTZXR9fShlLGMpKX1mdW5jdGlvbiBhZGRJY29uU2V0KGUsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIG51bGw7Y29uc3QgYz1lO2lmKCJzdHJpbmciIT10eXBlb2YgYy5wcmVmaXh8fCFlLmljb25zfHwib2JqZWN0IiE9dHlwZW9mIGUuaWNvbnMpcmV0dXJuIG51bGw7aWYoIWNoZWNrT3B0aW9uYWxQcm9wcyhlLHZpKSlyZXR1cm4gbnVsbDtjb25zdCBkPWMuaWNvbnM7Zm9yKGNvbnN0IGUgaW4gZCl7Y29uc3QgYz1kW2VdO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGMuYm9keXx8IWNoZWNrT3B0aW9uYWxQcm9wcyhjLGdpKSlyZXR1cm4gbnVsbH1jb25zdCBoPWMuYWxpYXNlc3x8T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgZSBpbiBoKXtjb25zdCBjPWhbZV0sdj1jLnBhcmVudDtpZighZXx8InN0cmluZyIhPXR5cGVvZiB2fHwhZFt2XSYmIWhbdl18fCFjaGVja09wdGlvbmFsUHJvcHMoYyxnaSkpcmV0dXJuIG51bGx9cmV0dXJuIGN9KGMpP3BhcnNlSWNvblNldChjLChjLGQpPT57ZD9lLmljb25zW2NdPWQ6ZS5taXNzaW5nLmFkZChjKX0pOltdfWxldCB5aT0hMTtmdW5jdGlvbiBhbGxvd1NpbXBsZU5hbWVzKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGUmJih5aT1lKSx5aX1mdW5jdGlvbiBnZXRJY29uRGF0YShlKXtjb25zdCBjPSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0ljb24oZSwhMCx5aSk6ZTtpZihjKXtjb25zdCBlPWdldFN0b3JhZ2UoYy5wcm92aWRlcixjLnByZWZpeCksZD1jLm5hbWU7cmV0dXJuIGUuaWNvbnNbZF18fChlLm1pc3NpbmcuaGFzKGQpP251bGw6dm9pZCAwKX19ZnVuY3Rpb24gZ2V0SWNvbihlKXtjb25zdCBjPWdldEljb25EYXRhKGUpO3JldHVybiBjP3suLi5oaSwuLi5jfTpjfWNvbnN0IHhpPU9iamVjdC5mcmVlemUoe3dpZHRoOm51bGwsaGVpZ2h0Om51bGx9KSxTaT1PYmplY3QuZnJlZXplKHsuLi54aSwuLi5taX0pLEVpPS8oLT9bMC05Ll0qWzAtOV0rWzAtOS5dKikvZyx3aT0vXi0/WzAtOS5dKlswLTldK1swLTkuXSokL2c7ZnVuY3Rpb24gY2FsY3VsYXRlU2l6ZSQxKGUsYyxkKXtpZigxPT09YylyZXR1cm4gZTtpZihkPWR8fDEwMCwibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIE1hdGguY2VpbChlKmMqZCkvZDtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7Y29uc3QgaD1lLnNwbGl0KEVpKTtpZihudWxsPT09aHx8IWgubGVuZ3RoKXJldHVybiBlO2NvbnN0IHY9W107bGV0IGI9aC5zaGlmdCgpLHk9d2kudGVzdChiKTtmb3IoOzspe2lmKHkpe2NvbnN0IGU9cGFyc2VGbG9hdChiKTtpc05hTihlKT92LnB1c2goYik6di5wdXNoKE1hdGguY2VpbChlKmMqZCkvZCl9ZWxzZSB2LnB1c2goYik7aWYoYj1oLnNoaWZ0KCksdm9pZCAwPT09YilyZXR1cm4gdi5qb2luKCIiKTt5PSF5fX1jb25zdCBraT0vXHNpZD0iKFxTKykiL2csQ2k9Ikljb25pZnlJZCIrRGF0ZS5ub3coKS50b1N0cmluZygxNikrKDE2Nzc3MjE2Kk1hdGgucmFuZG9tKCl8MCkudG9TdHJpbmcoMTYpO2xldCBfaT0wO2NvbnN0IFRpPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gc2V0QVBJTW9kdWxlKGUsYyl7VGlbZV09Y31mdW5jdGlvbiBnZXRBUElNb2R1bGUoZSl7cmV0dXJuIFRpW2VdfHxUaVsiIl19ZnVuY3Rpb24gY3JlYXRlQVBJQ29uZmlnKGUpe2xldCBjO2lmKCJzdHJpbmciPT10eXBlb2YgZS5yZXNvdXJjZXMpYz1bZS5yZXNvdXJjZXNdO2Vsc2UgaWYoYz1lLnJlc291cmNlcywhKGMgaW5zdGFuY2VvZiBBcnJheSYmYy5sZW5ndGgpKXJldHVybiBudWxsO3JldHVybntyZXNvdXJjZXM6YyxwYXRoOmUucGF0aHx8Ii8iLG1heFVSTDplLm1heFVSTHx8NTAwLHJvdGF0ZTplLnJvdGF0ZXx8NzUwLHRpbWVvdXQ6ZS50aW1lb3V0fHw1ZTMscmFuZG9tOiEwPT09ZS5yYW5kb20saW5kZXg6ZS5pbmRleHx8MCxkYXRhQWZ0ZXJUaW1lb3V0OiExIT09ZS5kYXRhQWZ0ZXJUaW1lb3V0fX1jb25zdCBOaT1PYmplY3QuY3JlYXRlKG51bGwpLEFpPVsiaHR0cHM6Ly9hcGkuc2ltcGxlc3ZnLmNvbSIsImh0dHBzOi8vYXBpLnVuaXN2Zy5jb20iXSxPaT1bXTtmb3IoO0FpLmxlbmd0aD4wOykxPT09QWkubGVuZ3RofHxNYXRoLnJhbmRvbSgpPi41P09pLnB1c2goQWkuc2hpZnQoKSk6T2kucHVzaChBaS5wb3AoKSk7ZnVuY3Rpb24gZ2V0QVBJQ29uZmlnKGUpe3JldHVybiBOaVtlXX1OaVsiIl09Y3JlYXRlQVBJQ29uZmlnKHtyZXNvdXJjZXM6WyJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbiJdLmNvbmNhdChPaSl9KTtsZXQgSWk9KCgpPT57bGV0IGU7dHJ5e2lmKGU9ZmV0Y2gsImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGV9Y2F0Y2goZSl7fX0pKCk7Y29uc3QgUmk9e3ByZXBhcmU6KGUsYyxkKT0+e2NvbnN0IGg9W10sdj1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9Z2V0QVBJQ29uZmlnKGUpO2lmKCFkKXJldHVybiAwO2xldCBoO2lmKGQubWF4VVJMKXtsZXQgZT0wO2QucmVzb3VyY2VzLmZvckVhY2goYz0+e2NvbnN0IGQ9YztlPU1hdGgubWF4KGUsZC5sZW5ndGgpfSk7Y29uc3Qgdj1jKyIuanNvbj9pY29ucz0iO2g9ZC5tYXhVUkwtZS1kLnBhdGgubGVuZ3RoLXYubGVuZ3RofWVsc2UgaD0wO3JldHVybiBofShlLGMpLGI9Imljb25zIjtsZXQgeT17dHlwZTpiLHByb3ZpZGVyOmUscHJlZml4OmMsaWNvbnM6W119LEU9MDtyZXR1cm4gZC5mb3JFYWNoKChkLGspPT57RSs9ZC5sZW5ndGgrMSxFPj12JiZrPjAmJihoLnB1c2goeSkseT17dHlwZTpiLHByb3ZpZGVyOmUscHJlZml4OmMsaWNvbnM6W119LEU9ZC5sZW5ndGgpLHkuaWNvbnMucHVzaChkKX0pLGgucHVzaCh5KSxofSxzZW5kOihlLGMsZCk9PntpZighSWkpcmV0dXJuIHZvaWQgZCgiYWJvcnQiLDQyNCk7bGV0IGg9ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtjb25zdCBjPWdldEFQSUNvbmZpZyhlKTtpZihjKXJldHVybiBjLnBhdGh9cmV0dXJuIi8ifShjLnByb3ZpZGVyKTtzd2l0Y2goYy50eXBlKXtjYXNlImljb25zIjp7Y29uc3QgZT1jLnByZWZpeCxkPWMuaWNvbnMuam9pbigiLCIpO2grPWUrIi5qc29uPyIrbmV3IFVSTFNlYXJjaFBhcmFtcyh7aWNvbnM6ZH0pLnRvU3RyaW5nKCk7YnJlYWt9Y2FzZSJjdXN0b20iOntjb25zdCBlPWMudXJpO2grPSIvIj09PWUuc2xpY2UoMCwxKT9lLnNsaWNlKDEpOmU7YnJlYWt9ZGVmYXVsdDpyZXR1cm4gdm9pZCBkKCJhYm9ydCIsNDAwKX1sZXQgdj01MDM7SWkoZStoKS50aGVuKGU9Pntjb25zdCBjPWUuc3RhdHVzO2lmKDIwMD09PWMpcmV0dXJuIHY9NTAxLGUuanNvbigpO3NldFRpbWVvdXQoKCk9PntkKGZ1bmN0aW9uKGUpe3JldHVybiA0MDQ9PT1lfShjKT8iYWJvcnQiOiJuZXh0IixjKX0pfSkudGhlbihlPT57Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9zZXRUaW1lb3V0KCgpPT57ZCgic3VjY2VzcyIsZSl9KTpzZXRUaW1lb3V0KCgpPT57NDA0PT09ZT9kKCJhYm9ydCIsZSk6ZCgibmV4dCIsdil9KX0pLmNhdGNoKCgpPT57ZCgibmV4dCIsdil9KX19O2Z1bmN0aW9uIHJlbW92ZUNhbGxiYWNrKGUsYyl7ZS5mb3JFYWNoKGU9Pntjb25zdCBkPWUubG9hZGVyQ2FsbGJhY2tzO2QmJihlLmxvYWRlckNhbGxiYWNrcz1kLmZpbHRlcihlPT5lLmlkIT09YykpfSl9bGV0IFBpPTA7dmFyIE1pPXtyZXNvdXJjZXM6W10saW5kZXg6MCx0aW1lb3V0OjJlMyxyb3RhdGU6NzUwLHJhbmRvbTohMSxkYXRhQWZ0ZXJUaW1lb3V0OiExfTtmdW5jdGlvbiBzZW5kUXVlcnkoZSxjLGQsaCl7Y29uc3Qgdj1lLnJlc291cmNlcy5sZW5ndGgsYj1lLnJhbmRvbT9NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqdik6ZS5pbmRleDtsZXQgeTtpZihlLnJhbmRvbSl7bGV0IGM9ZS5yZXNvdXJjZXMuc2xpY2UoMCk7Zm9yKHk9W107Yy5sZW5ndGg+MTspe2NvbnN0IGU9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmMubGVuZ3RoKTt5LnB1c2goY1tlXSksYz1jLnNsaWNlKDAsZSkuY29uY2F0KGMuc2xpY2UoZSsxKSl9eT15LmNvbmNhdChjKX1lbHNlIHk9ZS5yZXNvdXJjZXMuc2xpY2UoYikuY29uY2F0KGUucmVzb3VyY2VzLnNsaWNlKDAsYikpO2NvbnN0IEU9RGF0ZS5ub3coKTtsZXQgayxfPSJwZW5kaW5nIixUPTAsTj1udWxsLE89W10sUj1bXTtmdW5jdGlvbiByZXNldFRpbWVyKCl7TiYmKGNsZWFyVGltZW91dChOKSxOPW51bGwpfWZ1bmN0aW9uIGFib3J0KCl7InBlbmRpbmciPT09XyYmKF89ImFib3J0ZWQiKSxyZXNldFRpbWVyKCksTy5mb3JFYWNoKGU9PnsicGVuZGluZyI9PT1lLnN0YXR1cyYmKGUuc3RhdHVzPSJhYm9ydGVkIil9KSxPPVtdfWZ1bmN0aW9uIHN1YnNjcmliZShlLGMpe2MmJihSPVtdKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmUi5wdXNoKGUpfWZ1bmN0aW9uIGZhaWxRdWVyeSgpe189ImZhaWxlZCIsUi5mb3JFYWNoKGU9PntlKHZvaWQgMCxrKX0pfWZ1bmN0aW9uIGNsZWFyUXVldWUoKXtPLmZvckVhY2goZT0+eyJwZW5kaW5nIj09PWUuc3RhdHVzJiYoZS5zdGF0dXM9ImFib3J0ZWQiKX0pLE89W119ZnVuY3Rpb24gZXhlY05leHQoKXtpZigicGVuZGluZyIhPT1fKXJldHVybjtyZXNldFRpbWVyKCk7Y29uc3QgaD15LnNoaWZ0KCk7aWYodm9pZCAwPT09aClyZXR1cm4gTy5sZW5ndGg/dm9pZChOPXNldFRpbWVvdXQoKCk9PntyZXNldFRpbWVyKCksInBlbmRpbmciPT09XyYmKGNsZWFyUXVldWUoKSxmYWlsUXVlcnkoKSl9LGUudGltZW91dCkpOnZvaWQgZmFpbFF1ZXJ5KCk7Y29uc3Qgdj17c3RhdHVzOiJwZW5kaW5nIixyZXNvdXJjZTpoLGNhbGxiYWNrOihjLGQpPT57IWZ1bmN0aW9uKGMsZCxoKXtjb25zdCB2PSJzdWNjZXNzIiE9PWQ7c3dpdGNoKE89Ty5maWx0ZXIoZT0+ZSE9PWMpLF8pe2Nhc2UicGVuZGluZyI6YnJlYWs7Y2FzZSJmYWlsZWQiOmlmKHZ8fCFlLmRhdGFBZnRlclRpbWVvdXQpcmV0dXJuO2JyZWFrO2RlZmF1bHQ6cmV0dXJufWlmKCJhYm9ydCI9PT1kKXJldHVybiBrPWgsdm9pZCBmYWlsUXVlcnkoKTtpZih2KXJldHVybiBrPWgsdm9pZChPLmxlbmd0aHx8KHkubGVuZ3RoP2V4ZWNOZXh0KCk6ZmFpbFF1ZXJ5KCkpKTtpZihyZXNldFRpbWVyKCksY2xlYXJRdWV1ZSgpLCFlLnJhbmRvbSl7Y29uc3QgZD1lLnJlc291cmNlcy5pbmRleE9mKGMucmVzb3VyY2UpOy0xIT09ZCYmZCE9PWUuaW5kZXgmJihlLmluZGV4PWQpfV89ImNvbXBsZXRlZCIsUi5mb3JFYWNoKGU9PntlKGgpfSl9KHYsYyxkKX19O08ucHVzaCh2KSxUKyssTj1zZXRUaW1lb3V0KGV4ZWNOZXh0LGUucm90YXRlKSxkKGgsYyx2LmNhbGxiYWNrKX1yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgaCYmUi5wdXNoKGgpLHNldFRpbWVvdXQoZXhlY05leHQpLGZ1bmN0aW9uKCl7cmV0dXJue3N0YXJ0VGltZTpFLHBheWxvYWQ6YyxzdGF0dXM6XyxxdWVyaWVzU2VudDpULHF1ZXJpZXNQZW5kaW5nOk8ubGVuZ3RoLHN1YnNjcmliZTpzdWJzY3JpYmUsYWJvcnQ6YWJvcnR9fX1mdW5jdGlvbiBpbml0UmVkdW5kYW5jeShlKXtjb25zdCBjPXsuLi5NaSwuLi5lfTtsZXQgZD1bXTtmdW5jdGlvbiBjbGVhbnVwKCl7ZD1kLmZpbHRlcihlPT4icGVuZGluZyI9PT1lKCkuc3RhdHVzKX1yZXR1cm57cXVlcnk6ZnVuY3Rpb24oZSxoLHYpe2NvbnN0IGI9c2VuZFF1ZXJ5KGMsZSxoLChlLGMpPT57Y2xlYW51cCgpLHYmJnYoZSxjKX0pO3JldHVybiBkLnB1c2goYiksYn0sZmluZDpmdW5jdGlvbihlKXtyZXR1cm4gZC5maW5kKGM9PmUoYykpfHxudWxsfSxzZXRJbmRleDplPT57Yy5pbmRleD1lfSxnZXRJbmRleDooKT0+Yy5pbmRleCxjbGVhbnVwOmNsZWFudXB9fWZ1bmN0aW9uIGVtcHR5Q2FsbGJhY2skMSgpe31jb25zdCBEaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHNlbmRBUElRdWVyeShlLGMsZCl7bGV0IGgsdjtpZigic3RyaW5nIj09dHlwZW9mIGUpe2NvbnN0IGM9Z2V0QVBJTW9kdWxlKGUpO2lmKCFjKXJldHVybiBkKHZvaWQgMCw0MjQpLGVtcHR5Q2FsbGJhY2skMTt2PWMuc2VuZDtjb25zdCBiPWZ1bmN0aW9uKGUpe2lmKCFEaVtlXSl7Y29uc3QgYz1nZXRBUElDb25maWcoZSk7aWYoIWMpcmV0dXJuO2NvbnN0IGQ9e2NvbmZpZzpjLHJlZHVuZGFuY3k6aW5pdFJlZHVuZGFuY3koYyl9O0RpW2VdPWR9cmV0dXJuIERpW2VdfShlKTtiJiYoaD1iLnJlZHVuZGFuY3kpfWVsc2V7Y29uc3QgYz1jcmVhdGVBUElDb25maWcoZSk7aWYoYyl7aD1pbml0UmVkdW5kYW5jeShjKTtjb25zdCBkPWdldEFQSU1vZHVsZShlLnJlc291cmNlcz9lLnJlc291cmNlc1swXToiIik7ZCYmKHY9ZC5zZW5kKX19cmV0dXJuIGgmJnY/aC5xdWVyeShjLHYsZCkoKS5hYm9ydDooZCh2b2lkIDAsNDI0KSxlbXB0eUNhbGxiYWNrJDEpfWZ1bmN0aW9uIGVtcHR5Q2FsbGJhY2soKXt9ZnVuY3Rpb24gbG9hZGVkTmV3SWNvbnMoZSl7ZS5pY29uc0xvYWRlckZsYWd8fChlLmljb25zTG9hZGVyRmxhZz0hMCxzZXRUaW1lb3V0KCgpPT57ZS5pY29uc0xvYWRlckZsYWc9ITEsZnVuY3Rpb24oZSl7ZS5wZW5kaW5nQ2FsbGJhY2tzRmxhZ3x8KGUucGVuZGluZ0NhbGxiYWNrc0ZsYWc9ITAsc2V0VGltZW91dCgoKT0+e2UucGVuZGluZ0NhbGxiYWNrc0ZsYWc9ITE7Y29uc3QgYz1lLmxvYWRlckNhbGxiYWNrcz9lLmxvYWRlckNhbGxiYWNrcy5zbGljZSgwKTpbXTtpZighYy5sZW5ndGgpcmV0dXJuO2xldCBkPSExO2NvbnN0IGg9ZS5wcm92aWRlcix2PWUucHJlZml4O2MuZm9yRWFjaChjPT57Y29uc3QgYj1jLmljb25zLHk9Yi5wZW5kaW5nLmxlbmd0aDtiLnBlbmRpbmc9Yi5wZW5kaW5nLmZpbHRlcihjPT57aWYoYy5wcmVmaXghPT12KXJldHVybiEwO2NvbnN0IHk9Yy5uYW1lO2lmKGUuaWNvbnNbeV0pYi5sb2FkZWQucHVzaCh7cHJvdmlkZXI6aCxwcmVmaXg6dixuYW1lOnl9KTtlbHNle2lmKCFlLm1pc3NpbmcuaGFzKHkpKXJldHVybiBkPSEwLCEwO2IubWlzc2luZy5wdXNoKHtwcm92aWRlcjpoLHByZWZpeDp2LG5hbWU6eX0pfXJldHVybiExfSksYi5wZW5kaW5nLmxlbmd0aCE9PXkmJihkfHxyZW1vdmVDYWxsYmFjayhbZV0sYy5pZCksYy5jYWxsYmFjayhiLmxvYWRlZC5zbGljZSgwKSxiLm1pc3Npbmcuc2xpY2UoMCksYi5wZW5kaW5nLnNsaWNlKDApLGMuYWJvcnQpKX0pfSkpfShlKX0pKX1mdW5jdGlvbiBwYXJzZUxvYWRlclJlc3BvbnNlKGUsYyxkKXtmdW5jdGlvbiBjaGVja01pc3NpbmcoKXtjb25zdCBkPWUucGVuZGluZ0ljb25zO2MuZm9yRWFjaChjPT57ZCYmZC5kZWxldGUoYyksZS5pY29uc1tjXXx8ZS5taXNzaW5nLmFkZChjKX0pfWlmKGQmJiJvYmplY3QiPT10eXBlb2YgZCl0cnl7aWYoIWFkZEljb25TZXQoZSxkKS5sZW5ndGgpcmV0dXJuIHZvaWQgY2hlY2tNaXNzaW5nKCl9Y2F0Y2goZSl7fWNoZWNrTWlzc2luZygpLGxvYWRlZE5ld0ljb25zKGUpfWZ1bmN0aW9uIHBhcnNlUG9zc2libHlBc3luY1Jlc3BvbnNlKGUsYyl7ZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGU9PntjKGUpfSkuY2F0Y2goKCk9PntjKG51bGwpfSk6YyhlKX1mdW5jdGlvbiBsb2FkTmV3SWNvbnMoZSxjKXtlLmljb25zVG9Mb2FkP2UuaWNvbnNUb0xvYWQ9ZS5pY29uc1RvTG9hZC5jb25jYXQoYykuc29ydCgpOmUuaWNvbnNUb0xvYWQ9YyxlLmljb25zUXVldWVGbGFnfHwoZS5pY29uc1F1ZXVlRmxhZz0hMCxzZXRUaW1lb3V0KCgpPT57ZS5pY29uc1F1ZXVlRmxhZz0hMTtjb25zdHtwcm92aWRlcjpjLHByZWZpeDpkfT1lLGg9ZS5pY29uc1RvTG9hZDtpZihkZWxldGUgZS5pY29uc1RvTG9hZCwhaHx8IWgubGVuZ3RoKXJldHVybjtjb25zdCB2PWUubG9hZEljb247aWYoZS5sb2FkSWNvbnMmJihoLmxlbmd0aD4xfHwhdikpcmV0dXJuIHZvaWQgcGFyc2VQb3NzaWJseUFzeW5jUmVzcG9uc2UoZS5sb2FkSWNvbnMoaCxkLGMpLGM9PntwYXJzZUxvYWRlclJlc3BvbnNlKGUsaCxjKX0pO2lmKHYpcmV0dXJuIHZvaWQgaC5mb3JFYWNoKGg9PntwYXJzZVBvc3NpYmx5QXN5bmNSZXNwb25zZSh2KGgsZCxjKSxjPT57cGFyc2VMb2FkZXJSZXNwb25zZShlLFtoXSxjP3twcmVmaXg6ZCxpY29uczp7W2hdOmN9fTpudWxsKX0pfSk7Y29uc3R7dmFsaWQ6YixpbnZhbGlkOnl9PWZ1bmN0aW9uKGUpe2NvbnN0IGM9W10sZD1bXTtyZXR1cm4gZS5mb3JFYWNoKGU9PnsoZS5tYXRjaChwaSk/YzpkKS5wdXNoKGUpfSkse3ZhbGlkOmMsaW52YWxpZDpkfX0oaCk7aWYoeS5sZW5ndGgmJnBhcnNlTG9hZGVyUmVzcG9uc2UoZSx5LG51bGwpLCFiLmxlbmd0aClyZXR1cm47Y29uc3QgRT1kLm1hdGNoKHBpKT9nZXRBUElNb2R1bGUoYyk6bnVsbDtpZighRSlyZXR1cm4gdm9pZCBwYXJzZUxvYWRlclJlc3BvbnNlKGUsYixudWxsKTtFLnByZXBhcmUoYyxkLGIpLmZvckVhY2goZD0+e3NlbmRBUElRdWVyeShjLGQsYz0+e3BhcnNlTG9hZGVyUmVzcG9uc2UoZSxkLmljb25zLGMpfSl9KX0pKX1jb25zdCBsb2FkSWNvbnM9KGUsYyk9Pntjb25zdCBkPWZ1bmN0aW9uKGUpe2NvbnN0IGM9e2xvYWRlZDpbXSxtaXNzaW5nOltdLHBlbmRpbmc6W119LGQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlLnNvcnQoKGUsYyk9PmUucHJvdmlkZXIhPT1jLnByb3ZpZGVyP2UucHJvdmlkZXIubG9jYWxlQ29tcGFyZShjLnByb3ZpZGVyKTplLnByZWZpeCE9PWMucHJlZml4P2UucHJlZml4LmxvY2FsZUNvbXBhcmUoYy5wcmVmaXgpOmUubmFtZS5sb2NhbGVDb21wYXJlKGMubmFtZSkpO2xldCBoPXtwcm92aWRlcjoiIixwcmVmaXg6IiIsbmFtZToiIn07cmV0dXJuIGUuZm9yRWFjaChlPT57aWYoaC5uYW1lPT09ZS5uYW1lJiZoLnByZWZpeD09PWUucHJlZml4JiZoLnByb3ZpZGVyPT09ZS5wcm92aWRlcilyZXR1cm47aD1lO2NvbnN0IHY9ZS5wcm92aWRlcixiPWUucHJlZml4LHk9ZS5uYW1lLEU9ZFt2XXx8KGRbdl09T2JqZWN0LmNyZWF0ZShudWxsKSksaz1FW2JdfHwoRVtiXT1nZXRTdG9yYWdlKHYsYikpO2xldCBfO189eSBpbiBrLmljb25zP2MubG9hZGVkOiIiPT09Ynx8ay5taXNzaW5nLmhhcyh5KT9jLm1pc3Npbmc6Yy5wZW5kaW5nO2NvbnN0IFQ9e3Byb3ZpZGVyOnYscHJlZml4OmIsbmFtZTp5fTtfLnB1c2goVCl9KSxjfShmdW5jdGlvbihlLGM9ITAsZD0hMSl7Y29uc3QgaD1bXTtyZXR1cm4gZS5mb3JFYWNoKGU9Pntjb25zdCB2PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0ljb24oZSxjLGQpOmU7diYmaC5wdXNoKHYpfSksaH0oZSwhMCxhbGxvd1NpbXBsZU5hbWVzKCkpKTtpZighZC5wZW5kaW5nLmxlbmd0aCl7bGV0IGU9ITA7cmV0dXJuIGMmJnNldFRpbWVvdXQoKCk9PntlJiZjKGQubG9hZGVkLGQubWlzc2luZyxkLnBlbmRpbmcsZW1wdHlDYWxsYmFjayl9KSwoKT0+e2U9ITF9fWNvbnN0IGg9T2JqZWN0LmNyZWF0ZShudWxsKSx2PVtdO2xldCBiLHk7cmV0dXJuIGQucGVuZGluZy5mb3JFYWNoKGU9Pntjb25zdHtwcm92aWRlcjpjLHByZWZpeDpkfT1lO2lmKGQ9PT15JiZjPT09YilyZXR1cm47Yj1jLHk9ZCx2LnB1c2goZ2V0U3RvcmFnZShjLGQpKTtjb25zdCBFPWhbY118fChoW2NdPU9iamVjdC5jcmVhdGUobnVsbCkpO0VbZF18fChFW2RdPVtdKX0pLGQucGVuZGluZy5mb3JFYWNoKGU9Pntjb25zdHtwcm92aWRlcjpjLHByZWZpeDpkLG5hbWU6dn09ZSxiPWdldFN0b3JhZ2UoYyxkKSx5PWIucGVuZGluZ0ljb25zfHwoYi5wZW5kaW5nSWNvbnM9bmV3IFNldCk7eS5oYXModil8fCh5LmFkZCh2KSxoW2NdW2RdLnB1c2godikpfSksdi5mb3JFYWNoKGU9Pntjb25zdCBjPWhbZS5wcm92aWRlcl1bZS5wcmVmaXhdO2MubGVuZ3RoJiZsb2FkTmV3SWNvbnMoZSxjKX0pLGM/ZnVuY3Rpb24oZSxjLGQpe2NvbnN0IGg9UGkrKyx2PXJlbW92ZUNhbGxiYWNrLmJpbmQobnVsbCxkLGgpO2lmKCFjLnBlbmRpbmcubGVuZ3RoKXJldHVybiB2O2NvbnN0IGI9e2lkOmgsaWNvbnM6YyxjYWxsYmFjazplLGFib3J0OnZ9O3JldHVybiBkLmZvckVhY2goZT0+eyhlLmxvYWRlckNhbGxiYWNrc3x8KGUubG9hZGVyQ2FsbGJhY2tzPVtdKSkucHVzaChiKX0pLHZ9KGMsZCx2KTplbXB0eUNhbGxiYWNrfTtmdW5jdGlvbiBzZXRDdXN0b21JY29uc0xvYWRlcihlLGMsZCl7Z2V0U3RvcmFnZSgiIixjKS5sb2FkSWNvbnM9ZX1jb25zdCBCaT0vW1xzLF0rLztmdW5jdGlvbiBmbGlwRnJvbVN0cmluZyhlLGMpe2Muc3BsaXQoQmkpLmZvckVhY2goYz0+e3N3aXRjaChjLnRyaW0oKSl7Y2FzZSJob3Jpem9udGFsIjplLmhGbGlwPSEwO2JyZWFrO2Nhc2UidmVydGljYWwiOmUudkZsaXA9ITB9fSl9ZnVuY3Rpb24gcm90YXRlRnJvbVN0cmluZyhlLGM9MCl7Y29uc3QgZD1lLnJlcGxhY2UoL14tP1swLTkuXSovLCIiKTtmdW5jdGlvbiBjbGVhbnVwKGUpe2Zvcig7ZTwwOyllKz00O3JldHVybiBlJTR9aWYoIiI9PT1kKXtjb25zdCBjPXBhcnNlSW50KGUpO3JldHVybiBpc05hTihjKT8wOmNsZWFudXAoYyl9aWYoZCE9PWUpe2xldCBjPTA7c3dpdGNoKGQpe2Nhc2UiJSI6Yz0yNTticmVhaztjYXNlImRlZyI6Yz05MH1pZihjKXtsZXQgaD1wYXJzZUZsb2F0KGUuc2xpY2UoMCxlLmxlbmd0aC1kLmxlbmd0aCkpO3JldHVybiBpc05hTihoKT8wOihoLz1jLGglMT09MD9jbGVhbnVwKGgpOjApfX1yZXR1cm4gY31jb25zdCBMaT17Li4uU2ksaW5saW5lOiExfSxqaT17eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwieG1sbnM6eGxpbmsiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiYXJpYS1oaWRkZW4iOiEwLHJvbGU6ImltZyJ9LCRpPXtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxGaT17YmFja2dyb3VuZENvbG9yOiJjdXJyZW50Q29sb3IifSxWaT17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCJ9LHppPXtJbWFnZToidmFyKC0tc3ZnKSIsUmVwZWF0OiJuby1yZXBlYXQiLFNpemU6IjEwMCUgMTAwJSJ9LHFpPXt3ZWJraXRNYXNrOkZpLG1hc2s6RmksYmFja2dyb3VuZDpWaX07Zm9yKGNvbnN0IGUgaW4gcWkpe2NvbnN0IGM9cWlbZV07Zm9yKGNvbnN0IGQgaW4gemkpY1tlK2RdPXppW2RdfWNvbnN0IFVpPXt9O2Z1bmN0aW9uIGZpeFNpemUoZSl7cmV0dXJuIGUrKGUubWF0Y2goL15bLTAtOS5dKyQvKT8icHgiOiIiKX1bImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdLmZvckVhY2goZT0+e2NvbnN0IGM9ZS5zbGljZSgwLDEpKyJGbGlwIjtVaVtlKyItZmxpcCJdPWMsVWlbZS5zbGljZSgwLDEpKyItZmxpcCJdPWMsVWlbZSsiRmxpcCJdPWN9KTtjb25zdCByZW5kZXI9KGUsYyk9Pntjb25zdCBkPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD17Li4uZX07Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3QgaD1jW2VdLHY9dHlwZW9mIGg7ZSBpbiB4aT8obnVsbD09PWh8fGgmJigic3RyaW5nIj09PXZ8fCJudW1iZXIiPT09dikpJiYoZFtlXT1oKTp2PT09dHlwZW9mIGRbZV0mJihkW2VdPSJyb3RhdGUiPT09ZT9oJTQ6aCl9cmV0dXJuIGR9KExpLGMpLGg9ey4uLmppfSx2PWMubW9kZXx8InN2ZyIsYj17fSx5PWMuc3R5bGUsRT0ib2JqZWN0IiE9dHlwZW9mIHl8fHkgaW5zdGFuY2VvZiBBcnJheT97fTp5O2ZvcihsZXQgZSBpbiBjKXtjb25zdCB2PWNbZV07aWYodm9pZCAwIT09dilzd2l0Y2goZSl7Y2FzZSJpY29uIjpjYXNlInN0eWxlIjpjYXNlIm9uTG9hZCI6Y2FzZSJtb2RlIjpjYXNlInNzciI6YnJlYWs7Y2FzZSJpbmxpbmUiOmNhc2UiaEZsaXAiOmNhc2UidkZsaXAiOmRbZV09ITA9PT12fHwidHJ1ZSI9PT12fHwxPT09djticmVhaztjYXNlImZsaXAiOiJzdHJpbmciPT10eXBlb2YgdiYmZmxpcEZyb21TdHJpbmcoZCx2KTticmVhaztjYXNlImNvbG9yIjpiLmNvbG9yPXY7YnJlYWs7Y2FzZSJyb3RhdGUiOiJzdHJpbmciPT10eXBlb2Ygdj9kW2VdPXJvdGF0ZUZyb21TdHJpbmcodik6Im51bWJlciI9PXR5cGVvZiB2JiYoZFtlXT12KTticmVhaztjYXNlImFyaWFIaWRkZW4iOmNhc2UiYXJpYS1oaWRkZW4iOiEwIT09diYmInRydWUiIT09diYmZGVsZXRlIGhbImFyaWEtaGlkZGVuIl07YnJlYWs7ZGVmYXVsdDp7Y29uc3QgYz1VaVtlXTtjPyEwIT09diYmInRydWUiIT09diYmMSE9PXZ8fChkW2NdPSEwKTp2b2lkIDA9PT1MaVtlXSYmKGhbZV09dil9fX1jb25zdCBrPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD17Li4uaGksLi4uZX0saD17Li4uU2ksLi4uY30sdj17bGVmdDpkLmxlZnQsdG9wOmQudG9wLHdpZHRoOmQud2lkdGgsaGVpZ2h0OmQuaGVpZ2h0fTtsZXQgYj1kLmJvZHk7W2QsaF0uZm9yRWFjaChlPT57Y29uc3QgYz1bXSxkPWUuaEZsaXAsaD1lLnZGbGlwO2xldCB5LEU9ZS5yb3RhdGU7c3dpdGNoKGQ/aD9FKz0yOihjLnB1c2goInRyYW5zbGF0ZSgiKyh2LndpZHRoK3YubGVmdCkudG9TdHJpbmcoKSsiICIrKDAtdi50b3ApLnRvU3RyaW5nKCkrIikiKSxjLnB1c2goInNjYWxlKC0xIDEpIiksdi50b3A9di5sZWZ0PTApOmgmJihjLnB1c2goInRyYW5zbGF0ZSgiKygwLXYubGVmdCkudG9TdHJpbmcoKSsiICIrKHYuaGVpZ2h0K3YudG9wKS50b1N0cmluZygpKyIpIiksYy5wdXNoKCJzY2FsZSgxIC0xKSIpLHYudG9wPXYubGVmdD0wKSxFPDAmJihFLT00Kk1hdGguZmxvb3IoRS80KSksRSU9NCxFKXtjYXNlIDE6eT12LmhlaWdodC8yK3YudG9wLGMudW5zaGlmdCgicm90YXRlKDkwICIreS50b1N0cmluZygpKyIgIit5LnRvU3RyaW5nKCkrIikiKTticmVhaztjYXNlIDI6Yy51bnNoaWZ0KCJyb3RhdGUoMTgwICIrKHYud2lkdGgvMit2LmxlZnQpLnRvU3RyaW5nKCkrIiAiKyh2LmhlaWdodC8yK3YudG9wKS50b1N0cmluZygpKyIpIik7YnJlYWs7Y2FzZSAzOnk9di53aWR0aC8yK3YubGVmdCxjLnVuc2hpZnQoInJvdGF0ZSgtOTAgIit5LnRvU3RyaW5nKCkrIiAiK3kudG9TdHJpbmcoKSsiKSIpfUUlMj09MSYmKHYubGVmdCE9PXYudG9wJiYoeT12LmxlZnQsdi5sZWZ0PXYudG9wLHYudG9wPXkpLHYud2lkdGghPT12LmhlaWdodCYmKHk9di53aWR0aCx2LndpZHRoPXYuaGVpZ2h0LHYuaGVpZ2h0PXkpKSxjLmxlbmd0aCYmKGI9ZnVuY3Rpb24oZSxjLGQpe2NvbnN0IGg9ZnVuY3Rpb24oZSxjPSJkZWZzIil7bGV0IGQ9IiI7Y29uc3QgaD1lLmluZGV4T2YoIjwiK2MpO2Zvcig7aD49MDspe2NvbnN0IHY9ZS5pbmRleE9mKCI+IixoKSxiPWUuaW5kZXhPZigiPC8iK2MpO2lmKC0xPT09dnx8LTE9PT1iKWJyZWFrO2NvbnN0IHk9ZS5pbmRleE9mKCI+IixiKTtpZigtMT09PXkpYnJlYWs7ZCs9ZS5zbGljZSh2KzEsYikudHJpbSgpLGU9ZS5zbGljZSgwLGgpLnRyaW0oKStlLnNsaWNlKHkrMSl9cmV0dXJue2RlZnM6ZCxjb250ZW50OmV9fShlKTtyZXR1cm4gdj1oLmRlZnMsYj1jK2guY29udGVudCtkLHY/IjxkZWZzPiIrdisiPC9kZWZzPiIrYjpiO3ZhciB2LGJ9KGIsJzxnIHRyYW5zZm9ybT0iJytjLmpvaW4oIiAiKSsnIj4nLCI8L2c+IikpfSk7Y29uc3QgeT1oLndpZHRoLEU9aC5oZWlnaHQsaz12LndpZHRoLF89di5oZWlnaHQ7bGV0IFQsTjtudWxsPT09eT8oTj1udWxsPT09RT8iMWVtIjoiYXV0byI9PT1FP186RSxUPWNhbGN1bGF0ZVNpemUkMShOLGsvXykpOihUPSJhdXRvIj09PXk/azp5LE49bnVsbD09PUU/Y2FsY3VsYXRlU2l6ZSQxKFQsXy9rKToiYXV0byI9PT1FP186RSk7Y29uc3QgTz17fSxzZXRBdHRyPShlLGMpPT57KGU9PiJ1bnNldCI9PT1lfHwidW5kZWZpbmVkIj09PWV8fCJub25lIj09PWUpKGMpfHwoT1tlXT1jLnRvU3RyaW5nKCkpfTtzZXRBdHRyKCJ3aWR0aCIsVCksc2V0QXR0cigiaGVpZ2h0IixOKTtjb25zdCBSPVt2LmxlZnQsdi50b3AsayxfXTtyZXR1cm4gTy52aWV3Qm94PVIuam9pbigiICIpLHthdHRyaWJ1dGVzOk8sdmlld0JveDpSLGJvZHk6Yn19KGUsZCksXz1rLmF0dHJpYnV0ZXM7aWYoZC5pbmxpbmUmJihiLnZlcnRpY2FsQWxpZ249Ii0wLjEyNWVtIiksInN2ZyI9PT12KXtoLnN0eWxlPXsuLi5iLC4uLkV9LE9iamVjdC5hc3NpZ24oaCxfKTtsZXQgZT0wLGQ9Yy5pZDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQmJihkPWQucmVwbGFjZSgvLS9nLCJfIikpLGguaW5uZXJIVE1MPWZ1bmN0aW9uKGUsYz1DaSl7Y29uc3QgZD1bXTtsZXQgaDtmb3IoO2g9a2kuZXhlYyhlKTspZC5wdXNoKGhbMV0pO2lmKCFkLmxlbmd0aClyZXR1cm4gZTtjb25zdCB2PSJzdWZmaXgiKygxNjc3NzIxNipNYXRoLnJhbmRvbSgpfERhdGUubm93KCkpLnRvU3RyaW5nKDE2KTtyZXR1cm4gZC5mb3JFYWNoKGQ9Pntjb25zdCBoPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2MoZCk6YysoX2krKykudG9TdHJpbmcoKSxiPWQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKTtlPWUucmVwbGFjZShuZXcgUmVnRXhwKCcoWyM7Il0pKCcrYisnKShbIildfFxcLlthLXpdKScsImciKSwiJDEiK2grdisiJDMiKX0pLGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAodiwiZyIpLCIiKX0oay5ib2R5LGQ/KCk9PmQrIklEIitlKys6Imljb25pZnlWdWUiKSxZbi5oKCJzdmciLGgpfWNvbnN0e2JvZHk6VCx3aWR0aDpOLGhlaWdodDpPfT1lLFI9Im1hc2siPT09dnx8ImJnIiE9PXYmJi0xIT09VC5pbmRleE9mKCJjdXJyZW50Q29sb3IiKSxNPWZ1bmN0aW9uKGUsYyl7bGV0IGQ9LTE9PT1lLmluZGV4T2YoInhsaW5rOiIpPyIiOicgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiJztmb3IoY29uc3QgZSBpbiBjKWQrPSIgIitlKyc9IicrY1tlXSsnIic7cmV0dXJuJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIicrZCsiPiIrZSsiPC9zdmc+In0oVCx7Li4uXyx3aWR0aDpOKyIiLGhlaWdodDpPKyIifSk7dmFyIEQ7cmV0dXJuIGguc3R5bGU9ey4uLmIsIi0tc3ZnIjooRD1NLCd1cmwoIicrZnVuY3Rpb24oZSl7cmV0dXJuImRhdGE6aW1hZ2Uvc3ZnK3htbCwiK2Z1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyIvZywiJyIpLnJlcGxhY2UoLyUvZywiJTI1IikucmVwbGFjZSgvIy9nLCIlMjMiKS5yZXBsYWNlKC88L2csIiUzQyIpLnJlcGxhY2UoLz4vZywiJTNFIikucmVwbGFjZSgvXHMrL2csIiAiKX0oZSl9KEQpKyciKScpLHdpZHRoOmZpeFNpemUoXy53aWR0aCksaGVpZ2h0OmZpeFNpemUoXy5oZWlnaHQpLC4uLiRpLC4uLlI/Rmk6VmksLi4uRX0sWW4uaCgic3BhbiIsaCl9O2FsbG93U2ltcGxlTmFtZXMoITApLHNldEFQSU1vZHVsZSgiIixSaSk7Y29uc3QgSGk9ey4uLmhpLGJvZHk6IiJ9LEdpPVluLmRlZmluZUNvbXBvbmVudCgoZSx7ZW1pdDpjfSk9Pntjb25zdCBkPVluLnJlZihudWxsKTtjb25zdCBoPVluLnJlZighIWUuc3NyKSx2PVluLnJlZigiIiksYj1Zbi5zaGFsbG93UmVmKG51bGwpO2Z1bmN0aW9uIGdldEljb24yKCl7Y29uc3QgaD1lLmljb247aWYoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aCYmInN0cmluZyI9PXR5cGVvZiBoLmJvZHkpcmV0dXJuIHYudmFsdWU9IiIse2RhdGE6aH07bGV0IGI7aWYoInN0cmluZyIhPXR5cGVvZiBofHxudWxsPT09KGI9c3RyaW5nVG9JY29uKGgsITEsITApKSlyZXR1cm4gbnVsbDtsZXQgeT1nZXRJY29uRGF0YShiKTtpZigheSl7Y29uc3QgZT1kLnZhbHVlO3JldHVybiBlJiZlLm5hbWU9PT1ofHwoZC52YWx1ZT1udWxsPT09eT97bmFtZTpofTp7bmFtZTpoLGFib3J0OmxvYWRJY29ucyhbYl0sdXBkYXRlSWNvbkRhdGEpfSksbnVsbH1kLnZhbHVlJiYoZC52YWx1ZS5hYm9ydD8uKCksZC52YWx1ZT1udWxsKSx2LnZhbHVlIT09aCYmKHYudmFsdWU9aCxZbi5uZXh0VGljaygoKT0+e2MoImxvYWQiLGgpfSkpO2NvbnN0IEU9ZS5jdXN0b21pc2U7aWYoRSl7eT1PYmplY3QuYXNzaWduKHt9LHkpO2NvbnN0IGU9RSh5LmJvZHksYi5uYW1lLGIucHJlZml4LGIucHJvdmlkZXIpOyJzdHJpbmciPT10eXBlb2YgZSYmKHkuYm9keT1lKX1jb25zdCBrPVsiaWNvbmlmeSJdO3JldHVybiIiIT09Yi5wcmVmaXgmJmsucHVzaCgiaWNvbmlmeS0tIitiLnByZWZpeCksIiIhPT1iLnByb3ZpZGVyJiZrLnB1c2goImljb25pZnktLSIrYi5wcm92aWRlcikse2RhdGE6eSxjbGFzc2VzOmt9fWZ1bmN0aW9uIHVwZGF0ZUljb25EYXRhKCl7Y29uc3QgZT1nZXRJY29uMigpO2U/ZS5kYXRhIT09Yi52YWx1ZT8uZGF0YSYmKGIudmFsdWU9ZSk6Yi52YWx1ZT1udWxsfXJldHVybiBoLnZhbHVlJiZ1cGRhdGVJY29uRGF0YSgpLFluLndhdGNoKCgpPT5lLmljb24sdXBkYXRlSWNvbkRhdGEpLCgpPT57Y29uc3QgYz1iLnZhbHVlO2lmKCFjKXJldHVybiByZW5kZXIoSGksZSk7bGV0IGQ9ZTtyZXR1cm4gYy5jbGFzc2VzJiYoZD17Li4uZSxjbGFzczpjLmNsYXNzZXMuam9pbigiICIpfSkscmVuZGVyKHsuLi5oaSwuLi5jLmRhdGF9LGQpfX0se3Byb3BzOlsiaWNvbiIsIm1vZGUiLCJzc3IiLCJ3aWR0aCIsImhlaWdodCIsInN0eWxlIiwiY29sb3IiLCJpbmxpbmUiLCJyb3RhdGUiLCJoRmxpcCIsImhvcml6b250YWxGbGlwIiwidkZsaXAiLCJ2ZXJ0aWNhbEZsaXAiLCJmbGlwIiwiaWQiLCJhcmlhSGlkZGVuIiwiY3VzdG9taXNlIiwidGl0bGUiXSxlbWl0czpbImxvYWQiXX0pLFdpPXtnZXRBUElDb25maWc6Z2V0QVBJQ29uZmlnLHNldEFQSU1vZHVsZTpzZXRBUElNb2R1bGUsc2VuZEFQSVF1ZXJ5OnNlbmRBUElRdWVyeSxzZXRGZXRjaDpmdW5jdGlvbihlKXtJaT1lfSxnZXRGZXRjaDpmdW5jdGlvbigpe3JldHVybiBJaX0sbGlzdEFQSVByb3ZpZGVyczpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhOaSl9fSxYaT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJAbnV4dC9pY29uIixzZXR1cCgpe2NvbnN0IGU9dXNlUnVudGltZUNvbmZpZygpLGM9dXNlQXBwQ29uZmlnKCkuaWNvbjtXaS5zZXRGZXRjaCgkZmV0Y2gubmF0aXZlKTtjb25zdCBkPVtdO2lmKCJzZXJ2ZXIiPT09Yy5wcm92aWRlcil7Y29uc3QgaD1lLmFwcD8uYmFzZVVSTD8ucmVwbGFjZSgvXC8kLywiIik/PyIiO2QucHVzaChoKyhjLmxvY2FsQXBpRW5kcG9pbnR8fCIvYXBpL19udXh0X2ljb24iKSksITAhPT1jLmZhbGxiYWNrVG9BcGkmJiJjbGllbnQtb25seSIhPT1jLmZhbGxiYWNrVG9BcGl8fGQucHVzaChjLmljb25pZnlBcGlFbmRwb2ludCl9ZWxzZSJub25lIj09PWMucHJvdmlkZXI/V2kuc2V0RmV0Y2goKCk9PlByb21pc2UucmVzb2x2ZShuZXcgUmVzcG9uc2UpKTpkLnB1c2goYy5pY29uaWZ5QXBpRW5kcG9pbnQpO2FzeW5jIGZ1bmN0aW9uIGN1c3RvbUljb25Mb2FkZXIoZSxjKXt0cnl7Y29uc3QgaD1hd2FpdCAkZmV0Y2goZFswXSsiLyIrYysiLmpzb24iLHtxdWVyeTp7aWNvbnM6ZS5qb2luKCIsIil9fSk7aWYoIWh8fGgucHJlZml4IT09Y3x8IWguaWNvbnMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEiK0pTT04uc3RyaW5naWZ5KGgpKTtyZXR1cm4gaH1jYXRjaChlKXtyZXR1cm4gbnVsbH19IWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1jcmVhdGVBUElDb25maWcoYyk7bnVsbCE9PWQmJihOaVtlXT1kKX0oIiIse3Jlc291cmNlczpkfSk7Zm9yKGNvbnN0IGUgb2YgYy5jdXN0b21Db2xsZWN0aW9uc3x8W10pZSYmc2V0Q3VzdG9tSWNvbnNMb2FkZXIoY3VzdG9tSWNvbkxvYWRlcixlKX19KSxLaT1kZWZpbmVOdXh0UGx1Z2luKGU9Pntjb25zdCBjPWZ1bmN0aW9uKGU9W10sYz17fSl7cmV0dXJuIG5ldyBQdXJlQWJpbGl0eShlLE9iamVjdC5hc3NpZ24oe2NvbmRpdGlvbnNNYXRjaGVyOlByLGZpZWxkTWF0Y2hlcjphdH0sYykpfShbXSk7ZS52dWVBcHAudXNlKGwsYyx7dXNlR2xvYmFsUHJvcGVydGllczohMH0pO2NvbnN0IGQ9emEoKTtyZXR1cm4gWW4ud2F0Y2goKCk9PltkLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLGQuY3VycmVudFVzZXI/LmlkXSwoW2UsZF0pPT57Y29uc3QgaD1mdW5jdGlvbihlLGMpe3JldHVybiBlLm1hcChlPT57Y29uc3R7c3ViamVjdDpkLGFjdGlvbjpoLHNjb3BlOnZ9PXBhcnNlQWJpbGl0eShlKSxiPXthY3Rpb246aCxzdWJqZWN0OmR9O3JldHVybiJzZWxmIj09PXYmJmMmJihiLmNvbmRpdGlvbnM9e3VzZXJfaWQ6Y30pLGJ9KX0oZSxkKTtjLnVwZGF0ZShoKX0se2ltbWVkaWF0ZTohMH0pLHtwcm92aWRlOnthYmlsaXR5OmN9fX0pLEppPVt4YSxTYSxXYSxLYSxKYSxZYSx0aSxuaSxjaSxkaSxYaSxLaV07ZnVuY3Rpb24gY3JlYXRlQ29udGV4dChlLGMpe2NvbnN0IGQ9U3ltYm9sKCJzdHJpbmciIT10eXBlb2YgZXx8Yz9jOmAke2V9Q29udGV4dGApO3JldHVybltjPT57Y29uc3QgaD1Zbi5pbmplY3QoZCxjKTtpZihoKXJldHVybiBoO2lmKG51bGw9PT1oKXJldHVybiBoO3Rocm93IG5ldyBFcnJvcihgSW5qZWN0aW9uIFxgJHtkLnRvU3RyaW5nKCl9XGAgbm90IGZvdW5kLiBDb21wb25lbnQgbXVzdCBiZSB1c2VkIHdpdGhpbiAke0FycmF5LmlzQXJyYXkoZSk/YG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6ICR7ZS5qb2luKCIsICIpfWA6YFxgJHtlfVxgYH1gKX0sZT0+KFluLnByb3ZpZGUoZCxlKSxlKV19ZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudCgpe2xldCBlPSh2b2lkIDApLmFjdGl2ZUVsZW1lbnQ7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPWUmJm51bGwhPWUuc2hhZG93Um9vdCYmbnVsbCE9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7KWU9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGV9ZnVuY3Rpb24gaXNOdWxsaXNoKGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIGNvbXB1dGVkRWFnZXIoZSxjKXt2YXIgZDtjb25zdCBoPVluLnNoYWxsb3dSZWYoKTtyZXR1cm4gWW4ud2F0Y2hFZmZlY3QoKCk9PntoLnZhbHVlPWUoKX0sey4uLmMsZmx1c2g6bnVsbCE9PShkPW51bGw9PWM/dm9pZCAwOmMuZmx1c2gpJiZ2b2lkIDAhPT1kP2Q6InN5bmMifSksWW4ucmVhZG9ubHkoaCl9ZnVuY3Rpb24gdHJ5T25TY29wZURpc3Bvc2UoZSxjKXtyZXR1cm4hIVluLmdldEN1cnJlbnRTY29wZSgpJiYoWW4ub25TY29wZURpc3Bvc2UoZSxjKSwhMCl9ZnVuY3Rpb24gY3JlYXRlRXZlbnRIb29rKCl7Y29uc3QgZT1uZXcgU2V0LG9mZj1jPT57ZS5kZWxldGUoYyl9O3JldHVybntvbjpjPT57ZS5hZGQoYyk7Y29uc3Qgb2ZmRm49KCk9Pm9mZihjKTtyZXR1cm4gdHJ5T25TY29wZURpc3Bvc2Uob2ZmRm4pLHtvZmY6b2ZmRm59fSxvZmY6b2ZmLHRyaWdnZXI6KC4uLmMpPT5Qcm9taXNlLmFsbChBcnJheS5mcm9tKGUpLm1hcChlPT5lKC4uLmMpKSksY2xlYXI6KCk9PntlLmNsZWFyKCl9fX1mdW5jdGlvbiBjcmVhdGVHbG9iYWxTdGF0ZShlKXtsZXQgYyxkPSExO2NvbnN0IGg9WW4uZWZmZWN0U2NvcGUoITApO3JldHVybiguLi52KT0+KGR8fChjPWgucnVuKCgpPT5lKC4uLnYpKSxkPSEwKSxjKX1mdW5jdGlvbiBjcmVhdGVSZWYoZSxjKXtyZXR1cm4hMD09PWM/WW4ucmVmKGUpOlluLnNoYWxsb3dSZWYoZSl9Y29uc3QgUWk9ITE7InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmKGdsb2JhbFRoaXMsV29ya2VyR2xvYmFsU2NvcGUpO2NvbnN0IG5vdE51bGxpc2g9ZT0+bnVsbCE9ZSxZaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLG5vb3A9KCk9Pnt9O2Z1bmN0aW9uIHRvUmVmKC4uLmUpe2lmKDEhPT1lLmxlbmd0aClyZXR1cm4gWW4udG9SZWYoLi4uZSk7Y29uc3QgYz1lWzBdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjP1luLnJlYWRvbmx5KFluLmN1c3RvbVJlZigoKT0+KHtnZXQ6YyxzZXQ6bm9vcH0pKSk6WW4ucmVmKGMpfWZ1bmN0aW9uIGNyZWF0ZUZpbHRlcldyYXBwZXIoZSxjKXtyZXR1cm4gZnVuY3Rpb24oLi4uZCl7cmV0dXJuIG5ldyBQcm9taXNlKChoLHYpPT57UHJvbWlzZS5yZXNvbHZlKGUoKCk9PmMuYXBwbHkodGhpcyxkKSx7Zm46Yyx0aGlzQXJnOnRoaXMsYXJnczpkfSkpLnRoZW4oaCkuY2F0Y2godil9KX19Y29uc3QgYnlwYXNzRmlsdGVyPWU9PmUoKTtmdW5jdGlvbiBkZWJvdW5jZUZpbHRlcihlLGM9e30pe2xldCBkLGgsdj1ub29wO2NvbnN0IF9jbGVhclRpbWVvdXQ9ZT0+e2NsZWFyVGltZW91dChlKSx2KCksdj1ub29wfTtsZXQgYjtyZXR1cm4geT0+e2NvbnN0IEU9WW4udG9WYWx1ZShlKSxrPVluLnRvVmFsdWUoYy5tYXhXYWl0KTtyZXR1cm4gZCYmX2NsZWFyVGltZW91dChkKSxFPD0wfHx2b2lkIDAhPT1rJiZrPD0wPyhoJiYoX2NsZWFyVGltZW91dChoKSxoPXZvaWQgMCksUHJvbWlzZS5yZXNvbHZlKHkoKSkpOm5ldyBQcm9taXNlKChlLF8pPT57dj1jLnJlamVjdE9uQ2FuY2VsP186ZSxiPXksayYmIWgmJihoPXNldFRpbWVvdXQoKCk9PntkJiZfY2xlYXJUaW1lb3V0KGQpLGg9dm9pZCAwLGUoYigpKX0saykpLGQ9c2V0VGltZW91dCgoKT0+e2gmJl9jbGVhclRpbWVvdXQoaCksaD12b2lkIDAsZSh5KCkpfSxFKX0pfX1mdW5jdGlvbiBwYXVzYWJsZUZpbHRlcihlPWJ5cGFzc0ZpbHRlcixjPXt9KXtjb25zdHtpbml0aWFsU3RhdGU6ZD0iYWN0aXZlIn09YyxoPXRvUmVmKCJhY3RpdmUiPT09ZCk7cmV0dXJue2lzQWN0aXZlOlluLnJlYWRvbmx5KGgpLHBhdXNlOmZ1bmN0aW9uKCl7aC52YWx1ZT0hMX0scmVzdW1lOmZ1bmN0aW9uKCl7aC52YWx1ZT0hMH0sZXZlbnRGaWx0ZXI6KC4uLmMpPT57aC52YWx1ZSYmZSguLi5jKX19fWZ1bmN0aW9uIHRvQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Y29uc3QgWmk9Ly0oXHcpL2csZXM9ZnVuY3Rpb24oZSl7Y29uc3QgYz1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBkPT5jW2RdfHwoY1tkXT1lKGQpKX0oZT0+ZS5yZXBsYWNlKFppLChlLGMpPT5jP2MudG9VcHBlckNhc2UoKToiIikpO2Z1bmN0aW9uIGdldExpZmVDeWNsZVRhcmdldChlKXtyZXR1cm4gWW4uZ2V0Q3VycmVudEluc3RhbmNlKCl9ZnVuY3Rpb24gY3JlYXRlU2hhcmVkQ29tcG9zYWJsZShlKXtyZXR1cm4gZX1mdW5jdGlvbiBtYWtlRGVzdHJ1Y3R1cmFibGUoZSxjKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCl7Y29uc3QgZD17Li4uZX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLFN5bWJvbC5pdGVyYXRvcix7ZW51bWVyYWJsZTohMSx2YWx1ZSgpe2xldCBlPTA7cmV0dXJue25leHQ6KCk9Pih7dmFsdWU6Y1tlKytdLGRvbmU6ZT5jLmxlbmd0aH0pfX19KSxkfXJldHVybiBPYmplY3QuYXNzaWduKFsuLi5jXSxlKX1mdW5jdGlvbiByZWFjdGl2ZUNvbXB1dGVkKGUpe3JldHVybiBjPVluLmNvbXB1dGVkKGUpLFluLmlzUmVmKGMpP1luLnJlYWN0aXZlKG5ldyBQcm94eSh7fSx7Z2V0OihlLGQsaCk9PlluLnVucmVmKFJlZmxlY3QuZ2V0KGMudmFsdWUsZCxoKSksc2V0OihlLGQsaCk9PihZbi5pc1JlZihjLnZhbHVlW2RdKSYmIVluLmlzUmVmKGgpP2MudmFsdWVbZF0udmFsdWU9aDpjLnZhbHVlW2RdPWgsITApLGRlbGV0ZVByb3BlcnR5OihlLGQpPT5SZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGMudmFsdWUsZCksaGFzOihlLGQpPT5SZWZsZWN0LmhhcyhjLnZhbHVlLGQpLG93bktleXM6KCk9Pk9iamVjdC5rZXlzKGMudmFsdWUpLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjooKT0+KHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfSkpOlluLnJlYWN0aXZlKGMpO3ZhciBjfWZ1bmN0aW9uIHJlYWN0aXZlT21pdChlLC4uLmMpe2NvbnN0IGQ9Yy5mbGF0KCksaD1kWzBdO3JldHVybiByZWFjdGl2ZUNvbXB1dGVkKCgpPT4iZnVuY3Rpb24iPT10eXBlb2YgaD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoWW4udG9SZWZzKGUpKS5maWx0ZXIoKFtlLGNdKT0+IWgoWW4udG9WYWx1ZShjKSxlKSkpOk9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhZbi50b1JlZnMoZSkpLmZpbHRlcihlPT4hZC5pbmNsdWRlcyhlWzBdKSkpKX1mdW5jdGlvbiByZWFjdGl2ZVBpY2soZSwuLi5jKXtjb25zdCBkPWMuZmxhdCgpLGg9ZFswXTtyZXR1cm4gcmVhY3RpdmVDb21wdXRlZCgoKT0+ImZ1bmN0aW9uIj09dHlwZW9mIGg/T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKFluLnRvUmVmcyhlKSkuZmlsdGVyKChbZSxjXSk9PmgoWW4udG9WYWx1ZShjKSxlKSkpOk9iamVjdC5mcm9tRW50cmllcyhkLm1hcChjPT5bYyx0b1JlZihlLGMpXSkpKX1mdW5jdGlvbiByZWZBdXRvUmVzZXQoZSxjPTFlNCl7cmV0dXJuIFluLmN1c3RvbVJlZigoZCxoKT0+e2xldCB2LGI9WW4udG9WYWx1ZShlKTtyZXR1cm4gdHJ5T25TY29wZURpc3Bvc2UoKCk9PntjbGVhclRpbWVvdXQodil9KSx7Z2V0OigpPT4oZCgpLGIpLHNldChkKXtiPWQsaCgpLGNsZWFyVGltZW91dCh2KSx2PXNldFRpbWVvdXQoKCk9PntiPVluLnRvVmFsdWUoZSksaCgpfSxZbi50b1ZhbHVlKGMpKX19fSl9ZnVuY3Rpb24gdXNlRGVib3VuY2VGbihlLGM9MjAwLGQ9e30pe3JldHVybiBjcmVhdGVGaWx0ZXJXcmFwcGVyKGRlYm91bmNlRmlsdGVyKGMsZCksZSl9ZnVuY3Rpb24gcmVmRGVib3VuY2VkKGUsYz0yMDAsZD17fSl7Y29uc3QgaD1Zbi5yZWYoWW4udG9WYWx1ZShlKSksdj11c2VEZWJvdW5jZUZuKCgpPT57aC52YWx1ZT1lLnZhbHVlfSxjLGQpO3JldHVybiBZbi53YXRjaChlLCgpPT52KCkpLFluLnNoYWxsb3dSZWFkb25seShoKX1mdW5jdGlvbiB1c2VUaHJvdHRsZUZuKGUsYz0yMDAsZD0hMSxoPSEwLHY9ITEpe3JldHVybiBjcmVhdGVGaWx0ZXJXcmFwcGVyKGZ1bmN0aW9uKC4uLmUpe2xldCBjLGQsaCx2LGIseSxFPTAsaz0hMCxfPW5vb3A7WW4uaXNSZWYoZVswXSl8fCJvYmplY3QiIT10eXBlb2YgZVswXT9baCx2PSEwLGI9ITAseT0hMV09ZTooe2RlbGF5OmgsdHJhaWxpbmc6dj0hMCxsZWFkaW5nOmI9ITAscmVqZWN0T25DYW5jZWw6eT0hMX09ZVswXSk7Y29uc3QgY2xlYXI9KCk9PntjJiYoY2xlYXJUaW1lb3V0KGMpLGM9dm9pZCAwLF8oKSxfPW5vb3ApfTtyZXR1cm4gZT0+e2NvbnN0IFQ9WW4udG9WYWx1ZShoKSxOPURhdGUubm93KCktRSxpbnZva2UkMT0oKT0+ZD1lKCk7cmV0dXJuIGNsZWFyKCksVDw9MD8oRT1EYXRlLm5vdygpLGludm9rZSQxKCkpOihOPlQ/KEU9RGF0ZS5ub3coKSwhYiYma3x8aW52b2tlJDEoKSk6diYmKGQ9bmV3IFByb21pc2UoKGUsZCk9PntfPXk/ZDplLGM9c2V0VGltZW91dCgoKT0+e0U9RGF0ZS5ub3coKSxrPSEwLGUoaW52b2tlJDEoKSksY2xlYXIoKX0sTWF0aC5tYXgoMCxULU4pKX0pKSxifHxjfHwoYz1zZXRUaW1lb3V0KCgpPT5rPSEwLFQpKSxrPSExLGQpfX0oYyxkLGgsdiksZSl9ZnVuY3Rpb24gcmVmVGhyb3R0bGVkKGUsYz0yMDAsZD0hMCxoPSEwKXtpZihjPD0wKXJldHVybiBlO2NvbnN0IHY9WW4ucmVmKFluLnRvVmFsdWUoZSkpLGI9dXNlVGhyb3R0bGVGbigoKT0+e3YudmFsdWU9ZS52YWx1ZX0sYyxkLGgpO3JldHVybiBZbi53YXRjaChlLCgpPT5iKCkpLHZ9ZnVuY3Rpb24gd2F0Y2hXaXRoRmlsdGVyKGUsYyxkPXt9KXtjb25zdHtldmVudEZpbHRlcjpoPWJ5cGFzc0ZpbHRlciwuLi52fT1kO3JldHVybiBZbi53YXRjaChlLGNyZWF0ZUZpbHRlcldyYXBwZXIoaCxjKSx2KX1mdW5jdGlvbiB3YXRjaFBhdXNhYmxlKGUsYyxkPXt9KXtjb25zdHtldmVudEZpbHRlcjpoLGluaXRpYWxTdGF0ZTp2PSJhY3RpdmUiLC4uLmJ9PWQse2V2ZW50RmlsdGVyOnkscGF1c2U6RSxyZXN1bWU6ayxpc0FjdGl2ZTpffT1wYXVzYWJsZUZpbHRlcihoLHtpbml0aWFsU3RhdGU6dn0pO3JldHVybntzdG9wOndhdGNoV2l0aEZpbHRlcihlLGMsey4uLmIsZXZlbnRGaWx0ZXI6eX0pLHBhdXNlOkUscmVzdW1lOmssaXNBY3RpdmU6X319ZnVuY3Rpb24gc3luY1JlZihlLGMsLi4uW2RdKXtjb25zdHtmbHVzaDpoPSJzeW5jIixkZWVwOnY9ITEsaW1tZWRpYXRlOmI9ITAsZGlyZWN0aW9uOnk9ImJvdGgiLHRyYW5zZm9ybTpFPXt9fT1kfHx7fSxrPVtdLF89Imx0ciJpbiBFJiZFLmx0cnx8KGU9PmUpLFQ9InJ0bCJpbiBFJiZFLnJ0bHx8KGU9PmUpOyJib3RoIiE9PXkmJiJsdHIiIT09eXx8ay5wdXNoKHdhdGNoUGF1c2FibGUoZSxlPT57ay5mb3JFYWNoKGU9PmUucGF1c2UoKSksYy52YWx1ZT1fKGUpLGsuZm9yRWFjaChlPT5lLnJlc3VtZSgpKX0se2ZsdXNoOmgsZGVlcDp2LGltbWVkaWF0ZTpifSkpLCJib3RoIiE9PXkmJiJydGwiIT09eXx8ay5wdXNoKHdhdGNoUGF1c2FibGUoYyxjPT57ay5mb3JFYWNoKGU9PmUucGF1c2UoKSksZS52YWx1ZT1UKGMpLGsuZm9yRWFjaChlPT5lLnJlc3VtZSgpKX0se2ZsdXNoOmgsZGVlcDp2LGltbWVkaWF0ZTpifSkpO3JldHVybigpPT57ay5mb3JFYWNoKGU9PmUuc3RvcCgpKX19ZnVuY3Rpb24gdHJ5T25CZWZvcmVVbm1vdW50KGUsYyl7Z2V0TGlmZUN5Y2xlVGFyZ2V0KCl9ZnVuY3Rpb24gdHJ5T25Nb3VudGVkKGUsYz0hMCxkKXtnZXRMaWZlQ3ljbGVUYXJnZXQoKXx8KGM/ZSgpOlluLm5leHRUaWNrKGUpKX1mdW5jdGlvbiB1c2VJbnRlcnZhbEZuKGUsYz0xZTMsZD17fSl7Y29uc3R7aW1tZWRpYXRlOmg9ITAsaW1tZWRpYXRlQ2FsbGJhY2s6dj0hMX09ZDtsZXQgYj1udWxsO2NvbnN0IHk9WW4uc2hhbGxvd1JlZighMSk7ZnVuY3Rpb24gY2xlYW4oKXtiJiYoY2xlYXJJbnRlcnZhbChiKSxiPW51bGwpfWZ1bmN0aW9uIHBhdXNlKCl7eS52YWx1ZT0hMSxjbGVhbigpfXJldHVybihZbi5pc1JlZihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpJiZ0cnlPblNjb3BlRGlzcG9zZShZbi53YXRjaChjLCgpPT57eS52YWx1ZSwwfSkpLHRyeU9uU2NvcGVEaXNwb3NlKHBhdXNlKSx7aXNBY3RpdmU6WW4uc2hhbGxvd1JlYWRvbmx5KHkpLHBhdXNlOnBhdXNlLHJlc3VtZTpmdW5jdGlvbigpe2NvbnN0IGQ9WW4udG9WYWx1ZShjKTtkPD0wfHwoeS52YWx1ZT0hMCx2JiZlKCksY2xlYW4oKSx5LnZhbHVlJiYoYj1zZXRJbnRlcnZhbChlLGQpKSl9fX1mdW5jdGlvbiB1c2VUaW1lb3V0Rm4oZSxjLGQ9e30pe2NvbnN0e2ltbWVkaWF0ZTpoPSEwLGltbWVkaWF0ZUNhbGxiYWNrOnY9ITF9PWQsYj1Zbi5zaGFsbG93UmVmKCExKTtsZXQgeTtmdW5jdGlvbiBjbGVhcigpe3kmJihjbGVhclRpbWVvdXQoeSkseT12b2lkIDApfWZ1bmN0aW9uIHN0b3AoKXtiLnZhbHVlPSExLGNsZWFyKCl9cmV0dXJuIGgmJihiLnZhbHVlPSEwKSx0cnlPblNjb3BlRGlzcG9zZShzdG9wKSx7aXNQZW5kaW5nOlluLnNoYWxsb3dSZWFkb25seShiKSxzdGFydDpmdW5jdGlvbiguLi5kKXt2JiZlKCksY2xlYXIoKSxiLnZhbHVlPSEwLHk9c2V0VGltZW91dCgoKT0+e2IudmFsdWU9ITEseT12b2lkIDAsZSguLi5kKX0sWW4udG9WYWx1ZShjKSl9LHN0b3A6c3RvcH19ZnVuY3Rpb24gd2F0Y2hEZWJvdW5jZWQoZSxjLGQ9e30pe2NvbnN0e2RlYm91bmNlOmg9MCxtYXhXYWl0OnYsLi4uYn09ZDtyZXR1cm4gd2F0Y2hXaXRoRmlsdGVyKGUsYyx7Li4uYixldmVudEZpbHRlcjpkZWJvdW5jZUZpbHRlcihoLHttYXhXYWl0OnZ9KX0pfWZ1bmN0aW9uIHdoZW5ldmVyKGUsYyxkKXtyZXR1cm4gWW4ud2F0Y2goZSwoZSxjLGQpPT57fSx7Li4uZCxvbmNlOiExfSl9ZnVuY3Rpb24gY3JlYXRlUmV1c2FibGVUZW1wbGF0ZShlPXt9KXtjb25zdHtpbmhlcml0QXR0cnM6Yz0hMH09ZSxkPVluLnNoYWxsb3dSZWYoKSxoPVluLmRlZmluZUNvbXBvbmVudCh7c2V0dXA6KGUse3Nsb3RzOmN9KT0+KCk9PntkLnZhbHVlPWMuZGVmYXVsdH19KSx2PVluLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOmMscHJvcHM6ZS5wcm9wcyxzZXR1cDooaCx7YXR0cnM6dixzbG90czpifSk9PigpPT57dmFyIHk7aWYoIWQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJbVnVlVXNlXSBGYWlsZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvZiByZXVzYWJsZSB0ZW1wbGF0ZSIpO2NvbnN0IEU9bnVsbD09PSh5PWQudmFsdWUpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LmNhbGwoZCx7Li4ubnVsbD09ZS5wcm9wcz9rZXlzVG9DYW1lbEtlYmFiQ2FzZSh2KTpoLCRzbG90czpifSk7cmV0dXJuIGMmJjE9PT0obnVsbD09RT92b2lkIDA6RS5sZW5ndGgpP0VbMF06RX19KTtyZXR1cm4gbWFrZURlc3RydWN0dXJhYmxlKHtkZWZpbmU6aCxyZXVzZTp2fSxbaCx2XSl9ZnVuY3Rpb24ga2V5c1RvQ2FtZWxLZWJhYkNhc2UoZSl7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBlKWNbZXMoZCldPWVbZF07cmV0dXJuIGN9Y29uc3QgdHM9dm9pZCAwLG5zPXZvaWQgMDtmdW5jdGlvbiB1bnJlZkVsZW1lbnQoZSl7dmFyIGM7Y29uc3QgZD1Zbi50b1ZhbHVlKGUpO3JldHVybiBudWxsIT09KGM9bnVsbD09ZD92b2lkIDA6ZC4kZWwpJiZ2b2lkIDAhPT1jP2M6ZH1mdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyKC4uLmUpe2NvbnN0IGM9WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBjPXRvQXJyYXkoWW4udG9WYWx1ZShlWzBdKSkuZmlsdGVyKGU9Pm51bGwhPWUpO3JldHVybiBjLmV2ZXJ5KGU9PiJzdHJpbmciIT10eXBlb2YgZSk/Yzp2b2lkIDB9KTtyZXR1cm4gZD0oKT0+e3ZhciBkLGg7cmV0dXJuW251bGwhPT0oZD1udWxsPT09KGg9Yy52YWx1ZSl8fHZvaWQgMD09PWg/dm9pZCAwOmgubWFwKGU9PnVucmVmRWxlbWVudChlKSkpJiZ2b2lkIDAhPT1kP2Q6W3RzXS5maWx0ZXIoZT0+bnVsbCE9ZSksdG9BcnJheShZbi50b1ZhbHVlKGMudmFsdWU/ZVsxXTplWzBdKSksdG9BcnJheShZbi51bnJlZihjLnZhbHVlP2VbMl06ZVsxXSkpLFluLnRvVmFsdWUoYy52YWx1ZT9lWzNdOmVbMl0pXX0saD0oW2UsYyxkLGhdLHYsYik9PntpZighKG51bGw9PWU/dm9pZCAwOmUubGVuZ3RoKXx8IShudWxsPT1jP3ZvaWQgMDpjLmxlbmd0aCl8fCEobnVsbD09ZD92b2lkIDA6ZC5sZW5ndGgpKXJldHVybjtjb25zdCB5PShFPWgsIltvYmplY3QgT2JqZWN0XSI9PT1ZaS5jYWxsKEUpP3suLi5ofTpoKTt2YXIgRTtjb25zdCBrPWUuZmxhdE1hcChlPT5jLmZsYXRNYXAoYz0+ZC5tYXAoZD0+KChlLGMsZCxoKT0+KGUuYWRkRXZlbnRMaXN0ZW5lcihjLGQsaCksKCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLGQsaCkpKShlLGMsZCx5KSkpKTtiKCgpPT57ay5mb3JFYWNoKGU9PmUoKSl9KX0sdj17Zmx1c2g6InBvc3QifSxZbi53YXRjaChkLGgsey4uLnYsaW1tZWRpYXRlOiEwfSk7dmFyIGQsaCx2fWZ1bmN0aW9uIHVzZU1vdW50ZWQoKXtjb25zdCBlPVluLnNoYWxsb3dSZWYoITEpO3JldHVybiBZbi5nZXRDdXJyZW50SW5zdGFuY2UoKSxlfWZ1bmN0aW9uIHVzZVN1cHBvcnRlZChlKXtjb25zdCBjPXVzZU1vdW50ZWQoKTtyZXR1cm4gWW4uY29tcHV0ZWQoKCk9PihjLnZhbHVlLEJvb2xlYW4oZSgpKSkpfWZ1bmN0aW9uIHVzZU11dGF0aW9uT2JzZXJ2ZXIoZSxjLGQ9e30pe2NvbnN0e3dpbmRvdzpoPXRzLC4uLnZ9PWQ7bGV0IGI7Y29uc3QgeT11c2VTdXBwb3J0ZWQoKCk9PmgmJiJNdXRhdGlvbk9ic2VydmVyImluIGgpLGNsZWFudXA9KCk9PntiJiYoYi5kaXNjb25uZWN0KCksYj12b2lkIDApfSxFPVluLndhdGNoKFluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz10b0FycmF5KFluLnRvVmFsdWUoZSkpLm1hcCh1bnJlZkVsZW1lbnQpLmZpbHRlcihub3ROdWxsaXNoKTtyZXR1cm4gbmV3IFNldChjKX0pLGU9PntjbGVhbnVwKCkseS52YWx1ZSYmZS5zaXplJiYoYj1uZXcgTXV0YXRpb25PYnNlcnZlcihjKSxlLmZvckVhY2goZT0+Yi5vYnNlcnZlKGUsdikpKX0se2ltbWVkaWF0ZTohMCxmbHVzaDoicG9zdCJ9KSxzdG9wPSgpPT57RSgpLGNsZWFudXAoKX07cmV0dXJuIHRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApLHtpc1N1cHBvcnRlZDp5LHN0b3A6c3RvcCx0YWtlUmVjb3JkczooKT0+bnVsbD09Yj92b2lkIDA6Yi50YWtlUmVjb3JkcygpfX1mdW5jdGlvbiBvbktleVN0cm9rZSguLi5lKXtsZXQgYyxkLGg9e307Mz09PWUubGVuZ3RoPyhjPWVbMF0sZD1lWzFdLGg9ZVsyXSk6Mj09PWUubGVuZ3RoPyJvYmplY3QiPT10eXBlb2YgZVsxXT8oYz0hMCxkPWVbMF0saD1lWzFdKTooYz1lWzBdLGQ9ZVsxXSk6KGM9ITAsZD1lWzBdKTtjb25zdHt0YXJnZXQ6dj10cyxldmVudE5hbWU6Yj0ia2V5ZG93biIscGFzc2l2ZTp5PSExLGRlZHVwZTpFPSExfT1oLGs9ImZ1bmN0aW9uIj09dHlwZW9mKF89Yyk/Xzoic3RyaW5nIj09dHlwZW9mIF8/ZT0+ZS5rZXk9PT1fOkFycmF5LmlzQXJyYXkoXyk/ZT0+Xy5pbmNsdWRlcyhlLmtleSk6KCk9PiEwO3ZhciBfO3JldHVybiB1c2VFdmVudExpc3RlbmVyKHYsYixlPT57ZS5yZXBlYXQmJlluLnRvVmFsdWUoRSl8fGsoZSkmJmQoZSl9LHkpfWZ1bmN0aW9uIHVzZUFjdGl2ZUVsZW1lbnQoZT17fSl7dmFyIGM7Y29uc3R7d2luZG93OmQ9dHMsZGVlcDpoPSEwLHRyaWdnZXJPblJlbW92YWw6dj0hMX09ZSxiPW51bGwhPT0oYz1lLmRvY3VtZW50KSYmdm9pZCAwIT09Yz9jOm51bGw9PWQ/dm9pZCAwOmQuZG9jdW1lbnQseT1Zbi5zaGFsbG93UmVmKCksdHJpZ2dlcj0oKT0+e3kudmFsdWU9KCgpPT57bGV0IGU9bnVsbD09Yj92b2lkIDA6Yi5hY3RpdmVFbGVtZW50O2lmKGgpZm9yKHZhciBjO251bGw9PWU/dm9pZCAwOmUuc2hhZG93Um9vdDspZT1udWxsPT1lfHxudWxsPT09KGM9ZS5zaGFkb3dSb290KXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5hY3RpdmVFbGVtZW50O3JldHVybiBlfSkoKX07aWYoZCl7Y29uc3QgZT17Y2FwdHVyZTohMCxwYXNzaXZlOiEwfTt1c2VFdmVudExpc3RlbmVyKGQsImJsdXIiLGU9PntudWxsPT09ZS5yZWxhdGVkVGFyZ2V0JiZ0cmlnZ2VyKCl9LGUpLHVzZUV2ZW50TGlzdGVuZXIoZCwiZm9jdXMiLHRyaWdnZXIsZSl9cmV0dXJuIHYmJmZ1bmN0aW9uKGUsYyxkPXt9KXtjb25zdHt3aW5kb3c6aD10cyxkb2N1bWVudDp2PShudWxsPT1oP3ZvaWQgMDpoLmRvY3VtZW50KSxmbHVzaDpiPSJzeW5jIn09ZDtpZighaHx8IXYpcmV0dXJuIG5vb3A7bGV0IHk7Y29uc3QgY2xlYW51cEFuZFVwZGF0ZT1lPT57bnVsbD09eXx8eSgpLHk9ZX0sRT1Zbi53YXRjaEVmZmVjdCgoKT0+e2NvbnN0IGQ9dW5yZWZFbGVtZW50KGUpO2lmKGQpe2NvbnN0e3N0b3A6ZX09dXNlTXV0YXRpb25PYnNlcnZlcih2LGU9PntlLm1hcChlPT5bLi4uZS5yZW1vdmVkTm9kZXNdKS5mbGF0KCkuc29tZShlPT5lPT09ZHx8ZS5jb250YWlucyhkKSkmJmMoZSl9LHt3aW5kb3c6aCxjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO2NsZWFudXBBbmRVcGRhdGUoZSl9fSx7Zmx1c2g6Yn0pLHN0b3BIYW5kbGU9KCk9PntFKCksY2xlYW51cEFuZFVwZGF0ZSgpfTt0cnlPblNjb3BlRGlzcG9zZShzdG9wSGFuZGxlKX0oeSx0cmlnZ2VyLHtkb2N1bWVudDpifSksdHJpZ2dlcigpLHl9ZnVuY3Rpb24gdXNlUmFmRm4oZSxjPXt9KXtjb25zdHtpbW1lZGlhdGU6ZD0hMCxmcHNMaW1pdDpoPW51bGwsd2luZG93OnY9dHMsb25jZTpiPSExfT1jLHk9WW4uc2hhbGxvd1JlZighMSksRT1Zbi5jb21wdXRlZCgoKT0+e2NvbnN0IGU9WW4udG9WYWx1ZShoKTtyZXR1cm4gZT8xZTMvZTpudWxsfSk7bGV0IGs9MCxfPW51bGw7ZnVuY3Rpb24gbG9vcChjKXtpZigheS52YWx1ZXx8IXYpcmV0dXJuO2t8fChrPWMpO2NvbnN0IGQ9Yy1rO2lmKEUudmFsdWUmJmQ8RS52YWx1ZSlfPXYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO2Vsc2V7aWYoaz1jLGUoe2RlbHRhOmQsdGltZXN0YW1wOmN9KSxiKXJldHVybiB5LnZhbHVlPSExLHZvaWQoXz1udWxsKTtfPXYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApfX1mdW5jdGlvbiByZXN1bWUoKXsheS52YWx1ZSYmdiYmKHkudmFsdWU9ITAsaz0wLF89di5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCkpfWZ1bmN0aW9uIHBhdXNlKCl7eS52YWx1ZT0hMSxudWxsIT1fJiZ2JiYodi5jYW5jZWxBbmltYXRpb25GcmFtZShfKSxfPW51bGwpfXJldHVybiBkJiZyZXN1bWUoKSx0cnlPblNjb3BlRGlzcG9zZShwYXVzZSkse2lzQWN0aXZlOlluLnJlYWRvbmx5KHkpLHBhdXNlOnBhdXNlLHJlc3VtZTpyZXN1bWV9fWZ1bmN0aW9uIHVzZVBlcm1pc3Npb24oZSxjPXt9KXtjb25zdHtjb250cm9sczpkPSExLG5hdmlnYXRvcjpoPW5zfT1jLHY9dXNlU3VwcG9ydGVkKCgpPT5oJiYicGVybWlzc2lvbnMiaW4gaCksYj1Zbi5zaGFsbG93UmVmKCkseT0ic3RyaW5nIj09dHlwZW9mIGU/e25hbWU6ZX06ZSxFPVluLnNoYWxsb3dSZWYoKSx1cGRhdGU9KCk9Pnt2YXIgZSxjO0UudmFsdWU9bnVsbCE9PShlPW51bGw9PT0oYz1iLnZhbHVlKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdGF0ZSkmJnZvaWQgMCE9PWU/ZToicHJvbXB0In07dXNlRXZlbnRMaXN0ZW5lcihiLCJjaGFuZ2UiLHVwZGF0ZSx7cGFzc2l2ZTohMH0pO2NvbnN0IGs9ZnVuY3Rpb24oZSl7bGV0IGM7ZnVuY3Rpb24gd3JhcHBlcigpe3JldHVybiBjfHwoYz1lKCkpLGN9cmV0dXJuIHdyYXBwZXIucmVzZXQ9YXN5bmMoKT0+e2NvbnN0IGU9YztjPXZvaWQgMCxlJiZhd2FpdCBlfSx3cmFwcGVyfShhc3luYygpPT57aWYodi52YWx1ZSl7aWYoIWIudmFsdWUpdHJ5e2IudmFsdWU9YXdhaXQgaC5wZXJtaXNzaW9ucy5xdWVyeSh5KX1jYXRjaChlKXtiLnZhbHVlPXZvaWQgMH1maW5hbGx5e3VwZGF0ZSgpfXJldHVybiBkP1luLnRvUmF3KGIudmFsdWUpOnZvaWQgMH19KTtyZXR1cm4gaygpLGQ/e3N0YXRlOkUsaXNTdXBwb3J0ZWQ6dixxdWVyeTprfTpFfWZ1bmN0aW9uIHVzZUNsaXBib2FyZChlPXt9KXtjb25zdHtuYXZpZ2F0b3I6Yz1ucyxyZWFkOmQ9ITEsc291cmNlOmgsY29waWVkRHVyaW5nOnY9MTUwMCxsZWdhY3k6Yj0hMX09ZSx5PXVzZVN1cHBvcnRlZCgoKT0+YyYmImNsaXBib2FyZCJpbiBjKSxFPXVzZVBlcm1pc3Npb24oImNsaXBib2FyZC1yZWFkIiksaz11c2VQZXJtaXNzaW9uKCJjbGlwYm9hcmQtd3JpdGUiKSxfPVluLmNvbXB1dGVkKCgpPT55LnZhbHVlfHxiKSxUPVluLnNoYWxsb3dSZWYoIiIpLE49WW4uc2hhbGxvd1JlZighMSksTz11c2VUaW1lb3V0Rm4oKCk9Pk4udmFsdWU9ITEsdix7aW1tZWRpYXRlOiExfSk7ZnVuY3Rpb24gaXNBbGxvd2VkKGUpe3JldHVybiJncmFudGVkIj09PWV8fCJwcm9tcHQiPT09ZX1yZXR1cm4gXy52YWx1ZSYmZCYmdXNlRXZlbnRMaXN0ZW5lcihbImNvcHkiLCJjdXQiXSxhc3luYyBmdW5jdGlvbigpe2xldCBlPSEoeS52YWx1ZSYmaXNBbGxvd2VkKEUudmFsdWUpKTtpZighZSl0cnl7VC52YWx1ZT1hd2FpdCBjLmNsaXBib2FyZC5yZWFkVGV4dCgpfWNhdGNoKGMpe2U9ITB9dmFyIGQsaCx2O2UmJihULnZhbHVlPW51bGwhPT0oZD1udWxsPT09KGg9dm9pZCAwKXx8dm9pZCAwPT09aHx8bnVsbD09PSh2PWguZ2V0U2VsZWN0aW9uKXx8dm9pZCAwPT09dnx8bnVsbD09PSh2PXYuY2FsbChoKSl8fHZvaWQgMD09PXY/dm9pZCAwOnYudG9TdHJpbmcoKSkmJnZvaWQgMCE9PWQ/ZDoiIil9LHtwYXNzaXZlOiEwfSkse2lzU3VwcG9ydGVkOl8sdGV4dDpZbi5yZWFkb25seShUKSxjb3BpZWQ6WW4ucmVhZG9ubHkoTiksY29weTphc3luYyBmdW5jdGlvbihlPVluLnRvVmFsdWUoaCkpe2lmKF8udmFsdWUmJm51bGwhPWUpe2xldCBkPSEoeS52YWx1ZSYmaXNBbGxvd2VkKGsudmFsdWUpKTtpZighZCl0cnl7YXdhaXQgYy5jbGlwYm9hcmQud3JpdGVUZXh0KGUpfWNhdGNoKGUpe2Q9ITB9ZCYmZnVuY3Rpb24oZSl7Y29uc3QgYz0odm9pZCAwKS5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2MudmFsdWU9ZSxjLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYy5zdHlsZS5vcGFjaXR5PSIwIixjLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKSwodm9pZCAwKS5ib2R5LmFwcGVuZENoaWxkKGMpLGMuc2VsZWN0KCksKHZvaWQgMCkuZXhlY0NvbW1hbmQoImNvcHkiKSxjLnJlbW92ZSgpfShlKSxULnZhbHVlPWUsTi52YWx1ZT0hMCxPLnN0YXJ0KCl9fX19Y29uc3Qgb3M9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dm9pZCAwIT09TT9NOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9LHJzPSJfX3Z1ZXVzZV9zc3JfaGFuZGxlcnNfXyIsYXM9Z2V0SGFuZGxlcnMoKTtmdW5jdGlvbiBnZXRIYW5kbGVycygpe3JldHVybiBycyBpbiBvc3x8KG9zW3JzXT1vc1tyc118fHt9KSxvc1tyc119Y29uc3QgaXM9e2Jvb2xlYW46e3JlYWQ6ZT0+InRydWUiPT09ZSx3cml0ZTplPT5TdHJpbmcoZSl9LG9iamVjdDp7cmVhZDplPT5KU09OLnBhcnNlKGUpLHdyaXRlOmU9PkpTT04uc3RyaW5naWZ5KGUpfSxudW1iZXI6e3JlYWQ6ZT0+TnVtYmVyLnBhcnNlRmxvYXQoZSksd3JpdGU6ZT0+U3RyaW5nKGUpfSxhbnk6e3JlYWQ6ZT0+ZSx3cml0ZTplPT5TdHJpbmcoZSl9LHN0cmluZzp7cmVhZDplPT5lLHdyaXRlOmU9PlN0cmluZyhlKX0sbWFwOntyZWFkOmU9Pm5ldyBNYXAoSlNPTi5wYXJzZShlKSksd3JpdGU6ZT0+SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShlLmVudHJpZXMoKSkpfSxzZXQ6e3JlYWQ6ZT0+bmV3IFNldChKU09OLnBhcnNlKGUpKSx3cml0ZTplPT5KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGUpKX0sZGF0ZTp7cmVhZDplPT5uZXcgRGF0ZShlKSx3cml0ZTplPT5lLnRvSVNPU3RyaW5nKCl9fSxzcz0idnVldXNlLXN0b3JhZ2UiO2Z1bmN0aW9uIHVzZVN0b3JhZ2UoZSxjLGQsaD17fSl7dmFyIHY7Y29uc3R7Zmx1c2g6Yj0icHJlIixkZWVwOnk9ITAsbGlzdGVuVG9TdG9yYWdlQ2hhbmdlczpFPSEwLHdyaXRlRGVmYXVsdHM6az0hMCxtZXJnZURlZmF1bHRzOl89ITEsc2hhbGxvdzpULHdpbmRvdzpOPXRzLGV2ZW50RmlsdGVyOk8sb25FcnJvcjpSPWU9Pnt9LGluaXRPbk1vdW50ZWQ6TX09aCxEPShUP1luLnNoYWxsb3dSZWY6WW4ucmVmKSgiZnVuY3Rpb24iPT10eXBlb2YgYz9jKCk6YyksTD1Zbi5jb21wdXRlZCgoKT0+WW4udG9WYWx1ZShlKSk7aWYoIWQpdHJ5e2Q9ZnVuY3Rpb24oZSxjKXtyZXR1cm4gYXNbZV18fGN9KCJnZXREZWZhdWx0U3RvcmFnZSIsKCk9Pm51bGw9PXRzP3ZvaWQgMDp0cy5sb2NhbFN0b3JhZ2UpKCl9Y2F0Y2goZSl7UihlKX1pZighZClyZXR1cm4gRDtjb25zdCAkPVluLnRvVmFsdWUoYyksRj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iYW55IjplIGluc3RhbmNlb2YgU2V0PyJzZXQiOmUgaW5zdGFuY2VvZiBNYXA/Im1hcCI6ZSBpbnN0YW5jZW9mIERhdGU/ImRhdGUiOiJib29sZWFuIj09dHlwZW9mIGU/ImJvb2xlYW4iOiJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoib2JqZWN0Ij09dHlwZW9mIGU/Im9iamVjdCI6TnVtYmVyLmlzTmFOKGUpPyJhbnkiOiJudW1iZXIifSgkKSxWPW51bGwhPT0odj1oLnNlcmlhbGl6ZXIpJiZ2b2lkIDAhPT12P3Y6aXNbRl0se3BhdXNlOnEscmVzdW1lOlV9PXdhdGNoUGF1c2FibGUoRCxlPT5mdW5jdGlvbihlKXt0cnl7Y29uc3QgYz1kLmdldEl0ZW0oTC52YWx1ZSk7aWYobnVsbD09ZSlkaXNwYXRjaFdyaXRlRXZlbnQoYyxudWxsKSxkLnJlbW92ZUl0ZW0oTC52YWx1ZSk7ZWxzZXtjb25zdCBoPVYud3JpdGUoZSk7YyE9PWgmJihkLnNldEl0ZW0oTC52YWx1ZSxoKSxkaXNwYXRjaFdyaXRlRXZlbnQoYyxoKSl9fWNhdGNoKGUpe1IoZSl9fShlKSx7Zmx1c2g6YixkZWVwOnksZXZlbnRGaWx0ZXI6T30pO1luLndhdGNoKEwsKCk9PnVwZGF0ZSgpLHtmbHVzaDpifSk7bGV0IFc9ITE7ZnVuY3Rpb24gZGlzcGF0Y2hXcml0ZUV2ZW50KGUsYyl7aWYoTil7Y29uc3QgaD17a2V5OkwudmFsdWUsb2xkVmFsdWU6ZSxuZXdWYWx1ZTpjLHN0b3JhZ2VBcmVhOmR9O04uZGlzcGF0Y2hFdmVudChkIGluc3RhbmNlb2YgU3RvcmFnZT9uZXcgU3RvcmFnZUV2ZW50KCJzdG9yYWdlIixoKTpuZXcgQ3VzdG9tRXZlbnQoc3Mse2RldGFpbDpofSkpfX1mdW5jdGlvbiB1cGRhdGUoZSl7aWYoIWV8fGUuc3RvcmFnZUFyZWE9PT1kKWlmKGUmJm51bGw9PWUua2V5KUQudmFsdWU9JDtlbHNlIGlmKCFlfHxlLmtleT09PUwudmFsdWUpe3EoKTt0cnl7Y29uc3QgYz1WLndyaXRlKEQudmFsdWUpO3ZvaWQgMCE9PWUmJihudWxsPT1lP3ZvaWQgMDplLm5ld1ZhbHVlKT09PWN8fChELnZhbHVlPWZ1bmN0aW9uKGUpe2NvbnN0IGM9ZT9lLm5ld1ZhbHVlOmQuZ2V0SXRlbShMLnZhbHVlKTtpZihudWxsPT1jKXJldHVybiBrJiZudWxsIT0kJiZkLnNldEl0ZW0oTC52YWx1ZSxWLndyaXRlKCQpKSwkO2lmKCFlJiZfKXtjb25zdCBlPVYucmVhZChjKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgXz9fKGUsJCk6Im9iamVjdCIhPT1GfHxBcnJheS5pc0FycmF5KGUpP2U6ey4uLiQsLi4uZX19cmV0dXJuInN0cmluZyIhPXR5cGVvZiBjP2M6Vi5yZWFkKGMpfShlKSl9Y2F0Y2goZSl7UihlKX1maW5hbGx5e2U/WW4ubmV4dFRpY2soVSk6VSgpfX19cmV0dXJuIE4mJkUmJihkIGluc3RhbmNlb2YgU3RvcmFnZT91c2VFdmVudExpc3RlbmVyKE4sInN0b3JhZ2UiLGU9PntNJiYhV3x8dXBkYXRlKGUpfSx7cGFzc2l2ZTohMH0pOnVzZUV2ZW50TGlzdGVuZXIoTixzcyxlPT57TSYmIVd8fHVwZGF0ZShlLmRldGFpbCl9KSksTT90cnlPbk1vdW50ZWQoKCk9PntXPSEwLHVwZGF0ZSgpfSk6dXBkYXRlKCksRH1mdW5jdGlvbiB1c2VDdXJyZW50RWxlbWVudChlKXtjb25zdCBjPVluLmdldEN1cnJlbnRJbnN0YW5jZSgpLGQ9ZnVuY3Rpb24oZSxjLGQ9e30pe2xldCBoLHYsYix5PSEwO2NvbnN0IHVwZGF0ZT0oKT0+e3k9ITAsYigpfTtZbi53YXRjaChlLHVwZGF0ZSx7Zmx1c2g6InN5bmMiLC4uLmR9KTtjb25zdCBFPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2M6Yy5nZXQsaz0iZnVuY3Rpb24iPT10eXBlb2YgYz92b2lkIDA6Yy5zZXQsXz1Zbi5jdXN0b21SZWYoKGUsYyk9Pih2PWUsYj1jLHtnZXQ6KCk9Pih5JiYoaD1FKGgpLHk9ITEpLHYoKSxoKSxzZXQoZSl7bnVsbD09a3x8ayhlKX19KSk7cmV0dXJuIF8udHJpZ2dlcj11cGRhdGUsX30oKCk9Pm51bGwsKCk9PmMucHJveHkuJGVsKTtyZXR1cm4gZH1mdW5jdGlvbiB1c2VSZXNpemVPYnNlcnZlcihlLGMsZD17fSl7Y29uc3R7d2luZG93Omg9dHMsLi4udn09ZDtsZXQgYjtjb25zdCB5PXVzZVN1cHBvcnRlZCgoKT0+aCYmIlJlc2l6ZU9ic2VydmVyImluIGgpLGNsZWFudXA9KCk9PntiJiYoYi5kaXNjb25uZWN0KCksYj12b2lkIDApfSxFPVluLndhdGNoKFluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz1Zbi50b1ZhbHVlKGUpO3JldHVybiBBcnJheS5pc0FycmF5KGMpP2MubWFwKGU9PnVucmVmRWxlbWVudChlKSk6W3VucmVmRWxlbWVudChjKV19KSxlPT57aWYoY2xlYW51cCgpLHkudmFsdWUmJmgpe2I9bmV3IFJlc2l6ZU9ic2VydmVyKGMpO2Zvcihjb25zdCBjIG9mIGUpYyYmYi5vYnNlcnZlKGMsdil9fSx7aW1tZWRpYXRlOiEwLGZsdXNoOiJwb3N0In0pLHN0b3A9KCk9PntjbGVhbnVwKCksRSgpfTtyZXR1cm4gdHJ5T25TY29wZURpc3Bvc2Uoc3RvcCkse2lzU3VwcG9ydGVkOnksc3RvcDpzdG9wfX1mdW5jdGlvbiB1c2VFbGVtZW50VmlzaWJpbGl0eShlLGM9e30pe2NvbnN0e3dpbmRvdzpkPXRzLHNjcm9sbFRhcmdldDpoLHRocmVzaG9sZDp2PTAscm9vdE1hcmdpbjpiLG9uY2U6eT0hMSxpbml0aWFsVmFsdWU6RT0hMX09YyxrPVluLnNoYWxsb3dSZWYoRSkse3N0b3A6X309ZnVuY3Rpb24oZSxjLGQ9e30pe2NvbnN0e3Jvb3Q6aCxyb290TWFyZ2luOnYsdGhyZXNob2xkOmI9MCx3aW5kb3c6eT10cyxpbW1lZGlhdGU6RT0hMH09ZCxrPXVzZVN1cHBvcnRlZCgoKT0+eSYmIkludGVyc2VjdGlvbk9ic2VydmVyImluIHkpLF89WW4uY29tcHV0ZWQoKCk9PnRvQXJyYXkoWW4udG9WYWx1ZShlKSkubWFwKHVucmVmRWxlbWVudCkuZmlsdGVyKG5vdE51bGxpc2gpKTtsZXQgVD1ub29wO2NvbnN0IE49WW4uc2hhbGxvd1JlZihFKSxPPWsudmFsdWU/WW4ud2F0Y2goKCk9PltfLnZhbHVlLHVucmVmRWxlbWVudChoKSxZbi50b1ZhbHVlKHYpLE4udmFsdWVdLChbZSxkLGhdKT0+e2lmKFQoKSwhTi52YWx1ZSlyZXR1cm47aWYoIWUubGVuZ3RoKXJldHVybjtjb25zdCB2PW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjLHtyb290OnVucmVmRWxlbWVudChkKSxyb290TWFyZ2luOmgsdGhyZXNob2xkOmJ9KTtlLmZvckVhY2goZT0+ZSYmdi5vYnNlcnZlKGUpKSxUPSgpPT57di5kaXNjb25uZWN0KCksVD1ub29wfX0se2ltbWVkaWF0ZTpFLGZsdXNoOiJwb3N0In0pOm5vb3Asc3RvcD0oKT0+e1QoKSxPKCksTi52YWx1ZT0hMX07cmV0dXJuIHRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApLHtpc1N1cHBvcnRlZDprLGlzQWN0aXZlOk4scGF1c2UoKXtUKCksTi52YWx1ZT0hMX0scmVzdW1lKCl7Ti52YWx1ZT0hMH0sc3RvcDpzdG9wfX0oZSxlPT57bGV0IGM9ay52YWx1ZSxkPTA7Zm9yKGNvbnN0IGggb2YgZSloLnRpbWU+PWQmJihkPWgudGltZSxjPWguaXNJbnRlcnNlY3RpbmcpO2sudmFsdWU9Yyx5JiZmdW5jdGlvbihlLGMsZCl7WW4ud2F0Y2goZSxjLHsuLi5kLG9uY2U6ITB9KX0oaywoKT0+e18oKX0pfSx7cm9vdDpoLHdpbmRvdzpkLHRocmVzaG9sZDp2LHJvb3RNYXJnaW46Yn0pO3JldHVybiBrfWNvbnN0IGxzPW5ldyBNYXA7ZnVuY3Rpb24gdXNlRXZlbnRCdXMoZSl7Y29uc3QgYz1Zbi5nZXRDdXJyZW50U2NvcGUoKTtmdW5jdGlvbiBvbihkKXt2YXIgaDtjb25zdCB2PWxzLmdldChlKXx8bmV3IFNldDt2LmFkZChkKSxscy5zZXQoZSx2KTtjb25zdCBfb2ZmPSgpPT5vZmYoZCk7cmV0dXJuIG51bGw9PWN8fG51bGw9PT0oaD1jLmNsZWFudXBzKXx8dm9pZCAwPT09aHx8aC5wdXNoKF9vZmYpLF9vZmZ9ZnVuY3Rpb24gb2ZmKGMpe2NvbnN0IGQ9bHMuZ2V0KGUpO2QmJihkLmRlbGV0ZShjKSxkLnNpemV8fHJlc2V0KCkpfWZ1bmN0aW9uIHJlc2V0KCl7bHMuZGVsZXRlKGUpfXJldHVybntvbjpvbixvbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBvbihmdW5jdGlvbiBfbGlzdGVuZXIoLi4uYyl7b2ZmKF9saXN0ZW5lciksZSguLi5jKX0pfSxvZmY6b2ZmLGVtaXQ6ZnVuY3Rpb24oYyxkKXt2YXIgaDtudWxsPT09KGg9bHMuZ2V0KGUpKXx8dm9pZCAwPT09aHx8aC5mb3JFYWNoKGU9PmUoYyxkKSl9LHJlc2V0OnJlc2V0fX1mdW5jdGlvbiB1c2VJbmZpbml0ZVNjcm9sbChlLGMsZD17fSl7dmFyIGg7Y29uc3R7ZGlyZWN0aW9uOnY9ImJvdHRvbSIsaW50ZXJ2YWw6Yj0xMDAsY2FuTG9hZE1vcmU6eT0oKT0+ITB9PWQsRT1Zbi5yZWFjdGl2ZShmdW5jdGlvbihlLGM9e30pe2NvbnN0e3Rocm90dGxlOmQ9MCxpZGxlOmg9MjAwLG9uU3RvcDp2PW5vb3Asb25TY3JvbGw6Yj1ub29wLG9mZnNldDp5PXtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH0sb2JzZXJ2ZTpFPXttdXRhdGlvbjohMX0sZXZlbnRMaXN0ZW5lck9wdGlvbnM6az17Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSxiZWhhdmlvcjpfPSJhdXRvIix3aW5kb3c6VD10cyxvbkVycm9yOk49ZT0+e319PWMsTz0iYm9vbGVhbiI9PXR5cGVvZiBFP3ttdXRhdGlvbjpFfTpFLFI9WW4uc2hhbGxvd1JlZigwKSxNPVluLnNoYWxsb3dSZWYoMCksRD1Zbi5jb21wdXRlZCh7Z2V0OigpPT5SLnZhbHVlLHNldChlKXtzY3JvbGxUbyhlLHZvaWQgMCl9fSksTD1Zbi5jb21wdXRlZCh7Z2V0OigpPT5NLnZhbHVlLHNldChlKXtzY3JvbGxUbyh2b2lkIDAsZSl9fSk7ZnVuY3Rpb24gc2Nyb2xsVG8oYyxkKXt2YXIgaCx2LGIseTtpZighVClyZXR1cm47Y29uc3QgRT1Zbi50b1ZhbHVlKGUpO2lmKCFFKXJldHVybjtudWxsPT09KGg9RSBpbnN0YW5jZW9mIERvY3VtZW50P1QuZG9jdW1lbnQuYm9keTpFKXx8dm9pZCAwPT09aHx8aC5zY3JvbGxUbyh7dG9wOm51bGwhPT0odj1Zbi50b1ZhbHVlKGQpKSYmdm9pZCAwIT09dj92OkwudmFsdWUsbGVmdDpudWxsIT09KGI9WW4udG9WYWx1ZShjKSkmJnZvaWQgMCE9PWI/YjpELnZhbHVlLGJlaGF2aW9yOlluLnRvVmFsdWUoXyl9KTtjb25zdCBrPShudWxsPT1FfHxudWxsPT09KHk9RS5kb2N1bWVudCl8fHZvaWQgMD09PXk/dm9pZCAwOnkuZG9jdW1lbnRFbGVtZW50KXx8KG51bGw9PUU/dm9pZCAwOkUuZG9jdW1lbnRFbGVtZW50KXx8RTtudWxsIT1EJiYoUi52YWx1ZT1rLnNjcm9sbExlZnQpLG51bGwhPUwmJihNLnZhbHVlPWsuc2Nyb2xsVG9wKX1jb25zdCAkPVluLnNoYWxsb3dSZWYoITEpLEY9WW4ucmVhY3RpdmUoe2xlZnQ6ITAscmlnaHQ6ITEsdG9wOiEwLGJvdHRvbTohMX0pLFY9WW4ucmVhY3RpdmUoe2xlZnQ6ITEscmlnaHQ6ITEsdG9wOiExLGJvdHRvbTohMX0pLG9uU2Nyb2xsRW5kPWU9PnskLnZhbHVlJiYoJC52YWx1ZT0hMSxWLmxlZnQ9ITEsVi5yaWdodD0hMSxWLnRvcD0hMSxWLmJvdHRvbT0hMSx2KGUpKX0scT11c2VEZWJvdW5jZUZuKG9uU2Nyb2xsRW5kLGQraCksc2V0QXJyaXZlZFN0YXRlPWU9Pnt2YXIgYztpZighVClyZXR1cm47Y29uc3QgZD0obnVsbD09ZXx8bnVsbD09PShjPWUuZG9jdW1lbnQpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmRvY3VtZW50RWxlbWVudCl8fChudWxsPT1lP3ZvaWQgMDplLmRvY3VtZW50RWxlbWVudCl8fHVucmVmRWxlbWVudChlKSx7ZGlzcGxheTpoLGZsZXhEaXJlY3Rpb246dixkaXJlY3Rpb246Yn09VC5nZXRDb21wdXRlZFN0eWxlKGQpLEU9InJ0bCI9PT1iPy0xOjEsaz1kLnNjcm9sbExlZnQ7Vi5sZWZ0PWs8Ui52YWx1ZSxWLnJpZ2h0PWs+Ui52YWx1ZTtjb25zdCBfPU1hdGguYWJzKGsqRSk8PSh5LmxlZnR8fDApLE49TWF0aC5hYnMoaypFKStkLmNsaWVudFdpZHRoPj1kLnNjcm9sbFdpZHRoLSh5LnJpZ2h0fHwwKS0xOyJmbGV4Ij09PWgmJiJyb3ctcmV2ZXJzZSI9PT12PyhGLmxlZnQ9TixGLnJpZ2h0PV8pOihGLmxlZnQ9XyxGLnJpZ2h0PU4pLFIudmFsdWU9aztsZXQgTz1kLnNjcm9sbFRvcDtlIT09VC5kb2N1bWVudHx8T3x8KE89VC5kb2N1bWVudC5ib2R5LnNjcm9sbFRvcCksVi50b3A9TzxNLnZhbHVlLFYuYm90dG9tPU8+TS52YWx1ZTtjb25zdCBEPU1hdGguYWJzKE8pPD0oeS50b3B8fDApLEw9TWF0aC5hYnMoTykrZC5jbGllbnRIZWlnaHQ+PWQuc2Nyb2xsSGVpZ2h0LSh5LmJvdHRvbXx8MCktMTsiZmxleCI9PT1oJiYiY29sdW1uLXJldmVyc2UiPT09dj8oRi50b3A9TCxGLmJvdHRvbT1EKTooRi50b3A9RCxGLmJvdHRvbT1MKSxNLnZhbHVlPU99LG9uU2Nyb2xsSGFuZGxlcj1lPT57dmFyIGM7VCYmKHNldEFycml2ZWRTdGF0ZShudWxsIT09KGM9ZS50YXJnZXQuZG9jdW1lbnRFbGVtZW50KSYmdm9pZCAwIT09Yz9jOmUudGFyZ2V0KSwkLnZhbHVlPSEwLHEoZSksYihlKSl9O3JldHVybiB1c2VFdmVudExpc3RlbmVyKGUsInNjcm9sbCIsZD91c2VUaHJvdHRsZUZuKG9uU2Nyb2xsSGFuZGxlcixkLCEwLCExKTpvblNjcm9sbEhhbmRsZXIsayksdHJ5T25Nb3VudGVkKCgpPT57dHJ5e2NvbnN0IGM9WW4udG9WYWx1ZShlKTtpZighYylyZXR1cm47c2V0QXJyaXZlZFN0YXRlKGMpfWNhdGNoKGUpe04oZSl9fSksKG51bGw9PU8/dm9pZCAwOk8ubXV0YXRpb24pJiZudWxsIT1lJiZlIT09VCYmdm9pZCAwIT09ZSYmdXNlTXV0YXRpb25PYnNlcnZlcihlLCgpPT57Y29uc3QgYz1Zbi50b1ZhbHVlKGUpO2MmJnNldEFycml2ZWRTdGF0ZShjKX0se2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSx1c2VFdmVudExpc3RlbmVyKGUsInNjcm9sbGVuZCIsb25TY3JvbGxFbmQsaykse3g6RCx5OkwsaXNTY3JvbGxpbmc6JCxhcnJpdmVkU3RhdGU6RixkaXJlY3Rpb25zOlYsbWVhc3VyZSgpe2NvbnN0IGM9WW4udG9WYWx1ZShlKTtUJiZjJiZzZXRBcnJpdmVkU3RhdGUoYyl9fX0oZSx7Li4uZCxvZmZzZXQ6e1t2XTpudWxsIT09KGg9ZC5kaXN0YW5jZSkmJnZvaWQgMCE9PWg/aDowLC4uLmQub2Zmc2V0fX0pKSxrPVluLnJlZigpLF89WW4uY29tcHV0ZWQoKCk9PiEhay52YWx1ZSksVD1Zbi5jb21wdXRlZCgoKT0+e3JldHVybiBjPVluLnRvVmFsdWUoZSksInVuZGVmaW5lZCIhPXR5cGVvZiBXaW5kb3cmJmMgaW5zdGFuY2VvZiBXaW5kb3c/Yy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6InVuZGVmaW5lZCIhPXR5cGVvZiBEb2N1bWVudCYmYyBpbnN0YW5jZW9mIERvY3VtZW50P2MuZG9jdW1lbnRFbGVtZW50OmM7dmFyIGN9KSxOPXVzZUVsZW1lbnRWaXNpYmlsaXR5KFQpLE89WW4uY29tcHV0ZWQoKCk9PiEhVC52YWx1ZSYmeShULnZhbHVlKSk7ZnVuY3Rpb24gY2hlY2tBbmRMb2FkKCl7aWYoRS5tZWFzdXJlKCksIVQudmFsdWV8fCFOLnZhbHVlfHwhTy52YWx1ZXx8ay52YWx1ZSlyZXR1cm47Y29uc3R7c2Nyb2xsSGVpZ2h0OmUsY2xpZW50SGVpZ2h0OmQsc2Nyb2xsV2lkdGg6aCxjbGllbnRXaWR0aDp5fT1ULnZhbHVlLF89ImJvdHRvbSI9PT12fHwidG9wIj09PXY/ZTw9ZDpoPD15OyhFLmFycml2ZWRTdGF0ZVt2XXx8XykmJihrLnZhbHVlPVByb21pc2UuYWxsKFtjKEUpLG5ldyBQcm9taXNlKGU9PnNldFRpbWVvdXQoZSxiKSldKS5maW5hbGx5KCgpPT57ay52YWx1ZT1udWxsLFluLm5leHRUaWNrKCgpPT5jaGVja0FuZExvYWQoKSl9KSl9cmV0dXJuIFluLndhdGNoKCgpPT5bRS5hcnJpdmVkU3RhdGVbdl0sTi52YWx1ZSxPLnZhbHVlXSxjaGVja0FuZExvYWQse2ltbWVkaWF0ZTohMCxmbHVzaDoicG9zdCJ9KSxnZXRMaWZlQ3ljbGVUYXJnZXQoKSx7aXNMb2FkaW5nOl8scmVzZXQoKXtZbi5uZXh0VGljaygoKT0+Y2hlY2tBbmRMb2FkKCkpfX19Y29uc3QgY3M9e3BhZ2U6ZT0+W2UucGFnZVgsZS5wYWdlWV0sY2xpZW50OmU9PltlLmNsaWVudFgsZS5jbGllbnRZXSxzY3JlZW46ZT0+W2Uuc2NyZWVuWCxlLnNjcmVlblldLG1vdmVtZW50OmU9PmUgaW5zdGFuY2VvZiBNb3VzZUV2ZW50P1tlLm1vdmVtZW50WCxlLm1vdmVtZW50WV06bnVsbH07ZnVuY3Rpb24gdXNlTW91c2VJbkVsZW1lbnQoZSxjPXt9KXtjb25zdHt3aW5kb3dSZXNpemU6ZD0hMCx3aW5kb3dTY3JvbGw6aD0hMCxoYW5kbGVPdXRzaWRlOnY9ITAsd2luZG93OmI9dHN9PWMseT1jLnR5cGV8fCJwYWdlIix7eDpFLHk6ayxzb3VyY2VUeXBlOl99PWZ1bmN0aW9uKGU9e30pe2NvbnN0e3R5cGU6Yz0icGFnZSIsdG91Y2g6ZD0hMCxyZXNldE9uVG91Y2hFbmRzOmg9ITEsaW5pdGlhbFZhbHVlOnY9e3g6MCx5OjB9LHdpbmRvdzpiPXRzLHRhcmdldDp5PWIsc2Nyb2xsOkU9ITAsZXZlbnRGaWx0ZXI6a309ZTtsZXQgXz1udWxsLFQ9MCxOPTA7Y29uc3QgTz1Zbi5zaGFsbG93UmVmKHYueCksUj1Zbi5zaGFsbG93UmVmKHYueSksTT1Zbi5zaGFsbG93UmVmKG51bGwpLEQ9ImZ1bmN0aW9uIj09dHlwZW9mIGM/Yzpjc1tjXSxtb3VzZUhhbmRsZXI9ZT0+e2NvbnN0IGM9RChlKTtfPWUsYyYmKFtPLnZhbHVlLFIudmFsdWVdPWMsTS52YWx1ZT0ibW91c2UiKSxiJiYoVD1iLnNjcm9sbFgsTj1iLnNjcm9sbFkpfSx0b3VjaEhhbmRsZXI9ZT0+e2lmKGUudG91Y2hlcy5sZW5ndGg+MCl7Y29uc3QgYz1EKGUudG91Y2hlc1swXSk7YyYmKFtPLnZhbHVlLFIudmFsdWVdPWMsTS52YWx1ZT0idG91Y2giKX19LHNjcm9sbEhhbmRsZXI9KCk9PntpZighX3x8IWIpcmV0dXJuO2NvbnN0IGU9RChfKTtfIGluc3RhbmNlb2YgTW91c2VFdmVudCYmZSYmKE8udmFsdWU9ZVswXStiLnNjcm9sbFgtVCxSLnZhbHVlPWVbMV0rYi5zY3JvbGxZLU4pfSxyZXNldD0oKT0+e08udmFsdWU9di54LFIudmFsdWU9di55fSxMPWs/ZT0+aygoKT0+bW91c2VIYW5kbGVyKGUpLHt9KTplPT5tb3VzZUhhbmRsZXIoZSksJD1rP2U9PmsoKCk9PnRvdWNoSGFuZGxlcihlKSx7fSk6ZT0+dG91Y2hIYW5kbGVyKGUpLEY9az8oKT0+aygoKT0+c2Nyb2xsSGFuZGxlcigpLHt9KTooKT0+c2Nyb2xsSGFuZGxlcigpO2lmKHkpe2NvbnN0IGU9e3Bhc3NpdmU6ITB9O3VzZUV2ZW50TGlzdGVuZXIoeSxbIm1vdXNlbW92ZSIsImRyYWdvdmVyIl0sTCxlKSxkJiYibW92ZW1lbnQiIT09YyYmKHVzZUV2ZW50TGlzdGVuZXIoeSxbInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiXSwkLGUpLGgmJnVzZUV2ZW50TGlzdGVuZXIoeSwidG91Y2hlbmQiLHJlc2V0LGUpKSxFJiYicGFnZSI9PT1jJiZ1c2VFdmVudExpc3RlbmVyKGIsInNjcm9sbCIsRixlKX1yZXR1cm57eDpPLHk6Uixzb3VyY2VUeXBlOk19fShjKSxUPVluLnNoYWxsb3dSZWYobnVsbCE9ZT9lOm51bGw9PWI/dm9pZCAwOmIuZG9jdW1lbnQuYm9keSksTj1Zbi5zaGFsbG93UmVmKDApLE89WW4uc2hhbGxvd1JlZigwKSxSPVluLnNoYWxsb3dSZWYoMCksTT1Zbi5zaGFsbG93UmVmKDApLEQ9WW4uc2hhbGxvd1JlZigwKSxMPVluLnNoYWxsb3dSZWYoMCksJD1Zbi5zaGFsbG93UmVmKCEwKTtmdW5jdGlvbiB1cGRhdGUoKXtpZighYilyZXR1cm47Y29uc3QgZT11bnJlZkVsZW1lbnQoVCk7aWYoZSYmZSBpbnN0YW5jZW9mIEVsZW1lbnQpZm9yKGNvbnN0IGMgb2YgZS5nZXRDbGllbnRSZWN0cygpKXtjb25zdHtsZWZ0OmUsdG9wOmQsd2lkdGg6aCxoZWlnaHQ6X309YztSLnZhbHVlPWUrKCJwYWdlIj09PXk/Yi5wYWdlWE9mZnNldDowKSxNLnZhbHVlPWQrKCJwYWdlIj09PXk/Yi5wYWdlWU9mZnNldDowKSxELnZhbHVlPV8sTC52YWx1ZT1oO2NvbnN0IFQ9RS52YWx1ZS1SLnZhbHVlLEY9ay52YWx1ZS1NLnZhbHVlO2lmKCQudmFsdWU9MD09PWh8fDA9PT1ffHxUPDB8fEY8MHx8VD5ofHxGPl8sIXYmJiQudmFsdWV8fChOLnZhbHVlPVQsTy52YWx1ZT1GKSwhJC52YWx1ZSlicmVha319Y29uc3QgRj1bXTtpZih0cnlPbk1vdW50ZWQoKCk9Pnt1cGRhdGUoKX0pLGIpe2NvbnN0e3N0b3A6ZX09dXNlUmVzaXplT2JzZXJ2ZXIoVCx1cGRhdGUpLHtzdG9wOmN9PXVzZU11dGF0aW9uT2JzZXJ2ZXIoVCx1cGRhdGUse2F0dHJpYnV0ZUZpbHRlcjpbInN0eWxlIiwiY2xhc3MiXX0pLHY9WW4ud2F0Y2goW1QsRSxrXSx1cGRhdGUpO0YucHVzaChlLGMsdiksdXNlRXZlbnRMaXN0ZW5lcih2b2lkIDAsIm1vdXNlbGVhdmUiLCgpPT4kLnZhbHVlPSEwLHtwYXNzaXZlOiEwfSksaCYmRi5wdXNoKHVzZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdXBkYXRlLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9KSksZCYmRi5wdXNoKHVzZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdXBkYXRlLHtwYXNzaXZlOiEwfSkpfXJldHVybnt4OkUseTprLHNvdXJjZVR5cGU6XyxlbGVtZW50WDpOLGVsZW1lbnRZOk8sZWxlbWVudFBvc2l0aW9uWDpSLGVsZW1lbnRQb3NpdGlvblk6TSxlbGVtZW50SGVpZ2h0OkQsZWxlbWVudFdpZHRoOkwsaXNPdXRzaWRlOiQsc3RvcDpmdW5jdGlvbigpe0YuZm9yRWFjaChlPT5lKCkpLEYubGVuZ3RoPTB9fX1mdW5jdGlvbiB1c2VQYXJlbnRFbGVtZW50KGU9dXNlQ3VycmVudEVsZW1lbnQoKSl7Y29uc3QgYz1Zbi5zaGFsbG93UmVmKCksdXBkYXRlPSgpPT57Y29uc3QgZD11bnJlZkVsZW1lbnQoZSk7ZCYmKGMudmFsdWU9ZC5wYXJlbnRFbGVtZW50KX07cmV0dXJuIHRyeU9uTW91bnRlZCh1cGRhdGUpLFluLndhdGNoKCgpPT5Zbi50b1ZhbHVlKGUpLHVwZGF0ZSksY31mdW5jdGlvbiB1c2VWTW9kZWwoZSxjLGQsaD17fSl7dmFyIHYsYjtjb25zdHtjbG9uZTp5PSExLHBhc3NpdmU6RT0hMSxldmVudE5hbWU6ayxkZWVwOl89ITEsZGVmYXVsdFZhbHVlOlQsc2hvdWxkRW1pdDpOfT1oLE89WW4uZ2V0Q3VycmVudEluc3RhbmNlKCksUj1kfHwobnVsbD09Tz92b2lkIDA6Ty5lbWl0KXx8KG51bGw9PU98fG51bGw9PT0odj1PLiRlbWl0KXx8dm9pZCAwPT09dj92b2lkIDA6di5iaW5kKE8pKXx8KG51bGw9PU98fG51bGw9PT0oYj1PLnByb3h5KXx8dm9pZCAwPT09Ynx8bnVsbD09PShiPWIuJGVtaXQpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLmJpbmQobnVsbD09Tz92b2lkIDA6Ty5wcm94eSkpO2xldCBNPWs7Y3x8KGM9Im1vZGVsVmFsdWUiKSxNPU18fGB1cGRhdGU6JHtjLnRvU3RyaW5nKCl9YDtjb25zdCBjbG9uZUZuPWU9PntyZXR1cm4geT8iZnVuY3Rpb24iPT10eXBlb2YgeT95KGUpOihjPWUsSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjKSkpOmU7dmFyIGN9LGdldFZhbHVlJDE9KCk9PnZvaWQgMCE9PWVbY10/Y2xvbmVGbihlW2NdKTpULHRyaWdnZXJFbWl0PWU9PntOP04oZSkmJlIoTSxlKTpSKE0sZSl9O2lmKEUpe2NvbnN0IGQ9WW4ucmVmKGdldFZhbHVlJDEoKSk7bGV0IGg9ITE7cmV0dXJuIFluLndhdGNoKCgpPT5lW2NdLGU9PntofHwoaD0hMCxkLnZhbHVlPWNsb25lRm4oZSksWW4ubmV4dFRpY2soKCk9Pmg9ITEpKX0pLFluLndhdGNoKGQsZD0+e2h8fGQ9PT1lW2NdJiYhX3x8dHJpZ2dlckVtaXQoZCl9LHtkZWVwOl99KSxkfXJldHVybiBZbi5jb21wdXRlZCh7Z2V0OigpPT5nZXRWYWx1ZSQxKCksc2V0KGUpe3RyaWdnZXJFbWl0KGUpfX0pfWZ1bmN0aW9uIHJlbmRlclNsb3RGcmFnbWVudHMoZSl7cmV0dXJuIGU/ZS5mbGF0TWFwKGU9PmUudHlwZT09PVluLkZyYWdtZW50P3JlbmRlclNsb3RGcmFnbWVudHMoZS5jaGlsZHJlbik6W2VdKTpbXX1jb25zdFt1cyxkc109Y3JlYXRlQ29udGV4dCgiQ29uZmlnUHJvdmlkZXIiKTt2YXIgcHM9WW4uZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJDb25maWdQcm92aWRlciIscHJvcHM6e2Rpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoibHRyIn0sbG9jYWxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJlbiJ9LHNjcm9sbEJvZHk6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxub25jZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LHVzZUlkOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sc2V0dXAoZSl7Y29uc3QgYz1lLHtkaXI6ZCxsb2NhbGU6aCxzY3JvbGxCb2R5OnYsbm9uY2U6Yn09WW4udG9SZWZzKGMpO3JldHVybiBkcyh7ZGlyOmQsbG9jYWxlOmgsc2Nyb2xsQm9keTp2LG5vbmNlOmIsdXNlSWQ6Yy51c2VJZH0pLChlLGMpPT5Zbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iil9fSk7ZnVuY3Rpb24gdXNlRW1pdEFzUHJvcHMoZSl7Y29uc3QgYz1Zbi5nZXRDdXJyZW50SW5zdGFuY2UoKSxkPWM/LnR5cGUuZW1pdHMsaD17fTtyZXR1cm4gZD8uZm9yRWFjaChjPT57aFtZbi50b0hhbmRsZXJLZXkoWW4uY2FtZWxpemUoYykpXT0oLi4uZCk9PmUoYywuLi5kKX0pLGh9ZnVuY3Rpb24gdXNlRm9yd2FyZEV4cG9zZSgpe2NvbnN0IGU9WW4uZ2V0Q3VycmVudEluc3RhbmNlKCksYz1Zbi5yZWYoKSxkPVluLmNvbXB1dGVkKCgpPT5jLnZhbHVlJiYiJGVsImluIGMudmFsdWUmJlsiI3RleHQiLCIjY29tbWVudCJdLmluY2x1ZGVzKGMudmFsdWUuJGVsLm5vZGVOYW1lKT9jLnZhbHVlLiRlbC5uZXh0RWxlbWVudFNpYmxpbmc6dW5yZWZFbGVtZW50KGMpKTtjb25zdCBoPU9iamVjdC5hc3NpZ24oe30sZS5leHBvc2VkKSx2PXt9O2Zvcihjb25zdCBjIGluIGUucHJvcHMpT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsYyx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5lLnByb3BzW2NdfSk7aWYoT2JqZWN0LmtleXMoaCkubGVuZ3RoPjApZm9yKGNvbnN0IGUgaW4gaClPYmplY3QuZGVmaW5lUHJvcGVydHkodixlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmhbZV19KTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS52bm9kZS5lbH0pLGUuZXhwb3NlZD12LHtmb3J3YXJkUmVmOmZ1bmN0aW9uKGQpe2lmKGMudmFsdWU9ZCxkJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZCBpbnN0YW5jZW9mIEVsZW1lbnQ/ZDpkLiRlbH0pLCEoZCBpbnN0YW5jZW9mIEVsZW1lbnR8fE9iamVjdC5oYXNPd24oZCwiJGVsIikpKSl7Y29uc3QgYz1kLiQuZXhwb3NlZCxoPU9iamVjdC5hc3NpZ24oe30sdik7Zm9yKGNvbnN0IGUgaW4gYylPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmNbZV19KTtlLmV4cG9zZWQ9aH19LGN1cnJlbnRSZWY6YyxjdXJyZW50RWxlbWVudDpkfX1mdW5jdGlvbiB1c2VGb3J3YXJkUHJvcHMoZSl7Y29uc3QgYz1Zbi5nZXRDdXJyZW50SW5zdGFuY2UoKSxkPU9iamVjdC5rZXlzKGM/LnR5cGUucHJvcHM/P3t9KS5yZWR1Y2UoKGUsZCk9Pntjb25zdCBoPShjPy50eXBlLnByb3BzW2RdKS5kZWZhdWx0O3JldHVybiB2b2lkIDAhPT1oJiYoZVtkXT1oKSxlfSx7fSksaD1Zbi50b1JlZihlKTtyZXR1cm4gWW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPXt9LHY9Yz8udm5vZGUucHJvcHM/P3t9O3JldHVybiBPYmplY3Qua2V5cyh2KS5mb3JFYWNoKGM9PntlW1luLmNhbWVsaXplKGMpXT12W2NdfSksT2JqZWN0LmtleXMoey4uLmQsLi4uZX0pLnJlZHVjZSgoZSxjKT0+KHZvaWQgMCE9PWgudmFsdWVbY10mJihlW2NdPWgudmFsdWVbY10pLGUpLHt9KX0pfWZ1bmN0aW9uIHVzZUZvcndhcmRQcm9wc0VtaXRzKGUsYyl7Y29uc3QgZD11c2VGb3J3YXJkUHJvcHMoZSksaD1jP3VzZUVtaXRBc1Byb3BzKGMpOnt9O3JldHVybiBZbi5jb21wdXRlZCgoKT0+KHsuLi5kLnZhbHVlLC4uLmh9KSl9ZnVuY3Rpb24gdXNlU3RhdGVNYWNoaW5lKGUsYyl7Y29uc3QgZD1Zbi5yZWYoZSk7cmV0dXJue3N0YXRlOmQsZGlzcGF0Y2g6ZT0+e2QudmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGNbZC52YWx1ZV1bZV0/P2QudmFsdWV9KGUpfX19ZnVuY3Rpb24gZ2V0QW5pbWF0aW9uTmFtZShlKXtyZXR1cm4gZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKS5hbmltYXRpb25OYW1lfHwibm9uZSJ9dmFyIGZzPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiUHJlc2VuY2UiLHByb3BzOntwcmVzZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITB9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbn19LHNsb3RzOnt9LHNldHVwKGUse3Nsb3RzOmMsZXhwb3NlOmR9KXtjb25zdHtwcmVzZW50OmgsZm9yY2VNb3VudDp2fT1Zbi50b1JlZnMoZSksYj1Zbi5yZWYoKSx7aXNQcmVzZW50Onl9PWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1Zbi5yZWYoe30pLGg9WW4ucmVmKCJub25lIiksdj1Zbi5yZWYoZSksYj1lLnZhbHVlPyJtb3VudGVkIjoidW5tb3VudGVkIjtsZXQgeTtjb25zdCBFPWMudmFsdWU/Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc/P3RzLHtzdGF0ZTprLGRpc3BhdGNoOl99PXVzZVN0YXRlTWFjaGluZShiLHttb3VudGVkOntVTk1PVU5UOiJ1bm1vdW50ZWQiLEFOSU1BVElPTl9PVVQ6InVubW91bnRTdXNwZW5kZWQifSx1bm1vdW50U3VzcGVuZGVkOntNT1VOVDoibW91bnRlZCIsQU5JTUFUSU9OX0VORDoidW5tb3VudGVkIn0sdW5tb3VudGVkOntNT1VOVDoibW91bnRlZCJ9fSk7WW4ud2F0Y2goZSxhc3luYyhlLHYpPT57Y29uc3QgYj12IT09ZTtpZihhd2FpdCBZbi5uZXh0VGljaygpLGIpe2NvbnN0IGI9aC52YWx1ZSx5PWdldEFuaW1hdGlvbk5hbWUoYy52YWx1ZSk7ZT9fKCJNT1VOVCIpOiJub25lIj09PXl8fCJ1bmRlZmluZWQiPT09eXx8Im5vbmUiPT09ZC52YWx1ZT8uZGlzcGxheT9fKCJVTk1PVU5UIik6Xyh2JiZiIT09eT8iQU5JTUFUSU9OX09VVCI6IlVOTU9VTlQiKX19LHtpbW1lZGlhdGU6ITB9KTtjb25zdCBoYW5kbGVBbmltYXRpb25FbmQ9ZT0+e2NvbnN0IGQ9Z2V0QW5pbWF0aW9uTmFtZShjLnZhbHVlKSxoPWQuaW5jbHVkZXMoQ1NTLmVzY2FwZShlLmFuaW1hdGlvbk5hbWUpKTtpZihrLnZhbHVlLGUudGFyZ2V0PT09Yy52YWx1ZSYmaCYmKF8oIkFOSU1BVElPTl9FTkQiKSwhdi52YWx1ZSkpe2NvbnN0IGU9Yy52YWx1ZS5zdHlsZS5hbmltYXRpb25GaWxsTW9kZTtjLnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPSJmb3J3YXJkcyIseT1FPy5zZXRUaW1lb3V0KCgpPT57ImZvcndhcmRzIj09PWMudmFsdWU/LnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlJiYoYy52YWx1ZS5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT1lKX0pfWUudGFyZ2V0PT09Yy52YWx1ZSYmIm5vbmUiPT09ZCYmXygiQU5JTUFUSU9OX0VORCIpfSxoYW5kbGVBbmltYXRpb25TdGFydD1lPT57ZS50YXJnZXQ9PT1jLnZhbHVlJiYoaC52YWx1ZT1nZXRBbmltYXRpb25OYW1lKGMudmFsdWUpKX07cmV0dXJuIFluLndhdGNoKGMsKGUsYyk9PntlPyhkLnZhbHVlPWdldENvbXB1dGVkU3R5bGUoZSksZS5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsaGFuZGxlQW5pbWF0aW9uU3RhcnQpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uY2FuY2VsIixoYW5kbGVBbmltYXRpb25FbmQpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixoYW5kbGVBbmltYXRpb25FbmQpKTooXygiQU5JTUFUSU9OX0VORCIpLHZvaWQgMCE9PXkmJkU/LmNsZWFyVGltZW91dCh5KSxjPy5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsaGFuZGxlQW5pbWF0aW9uU3RhcnQpLGM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmNhbmNlbCIsaGFuZGxlQW5pbWF0aW9uRW5kKSxjPy5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLGhhbmRsZUFuaW1hdGlvbkVuZCkpfSx7aW1tZWRpYXRlOiEwfSksWW4ud2F0Y2goaywoKT0+e2NvbnN0IGU9Z2V0QW5pbWF0aW9uTmFtZShjLnZhbHVlKTtoLnZhbHVlPSJtb3VudGVkIj09PWsudmFsdWU/ZToibm9uZSJ9KSx7aXNQcmVzZW50OlluLmNvbXB1dGVkKCgpPT5bIm1vdW50ZWQiLCJ1bm1vdW50U3VzcGVuZGVkIl0uaW5jbHVkZXMoay52YWx1ZSkpfX0oaCxiKTtkKHtwcmVzZW50Onl9KTtsZXQgRT1jLmRlZmF1bHQoe3ByZXNlbnQ6eS52YWx1ZX0pO0U9cmVuZGVyU2xvdEZyYWdtZW50cyhFfHxbXSk7Y29uc3Qgaz1Zbi5nZXRDdXJyZW50SW5zdGFuY2UoKTtpZihFJiZFPy5sZW5ndGg+MSl7Y29uc3QgZT1rPy5wYXJlbnQ/LnR5cGUubmFtZT9gPCR7ay5wYXJlbnQudHlwZS5uYW1lfSAvPmA6ImNvbXBvbmVudCI7dGhyb3cgbmV3IEVycm9yKFtgRGV0ZWN0ZWQgYW4gaW52YWxpZCBjaGlsZHJlbiBmb3IgXGAke2V9XGAgZm9yICBcYFByZXNlbmNlXGAgY29tcG9uZW50LmAsIiIsIk5vdGU6IFByZXNlbmNlIHdvcmtzIHNpbWlsYXJseSB0byBgdi1pZmAgZGlyZWN0bHksIGJ1dCBpdCB3YWl0cyBmb3IgYW5pbWF0aW9uL3RyYW5zaXRpb24gdG8gZmluaXNoZWQgYmVmb3JlIHVubW91bnRpbmcuIFNvIGl0IGV4cGVjdCBvbmx5IG9uZSBkaXJlY3QgY2hpbGQgb2YgdmFsaWQgVk5vZGUgdHlwZS4iLCJZb3UgY2FuIGFwcGx5IGEgZmV3IHNvbHV0aW9uczoiLFsiUHJvdmlkZSBhIHNpbmdsZSBjaGlsZCBlbGVtZW50IHNvIHRoYXQgYHByZXNlbmNlYCBkaXJlY3RpdmUgYXR0YWNoIGNvcnJlY3RseS4iLCJFbnN1cmUgdGhlIGZpcnN0IGNoaWxkIGlzIGFuIGFjdHVhbCBlbGVtZW50IGluc3RlYWQgb2YgYSByYXcgdGV4dCBub2RlIG9yIGNvbW1lbnQgbm9kZS4iXS5tYXAoZT0+YCAgLSAke2V9YCkuam9pbigiXG4iKV0uam9pbigiXG4iKSl9cmV0dXJuKCk9PnYudmFsdWV8fGgudmFsdWV8fHkudmFsdWU/WW4uaChjLmRlZmF1bHQoe3ByZXNlbnQ6eS52YWx1ZX0pWzBdLHtyZWY6ZT0+e2NvbnN0IGM9dW5yZWZFbGVtZW50KGUpO3JldHVybiB2b2lkIDA9PT1jPy5oYXNBdHRyaWJ1dGV8fChjPy5oYXNBdHRyaWJ1dGUoImRhdGEtcmVrYS1wb3BwZXItY29udGVudC13cmFwcGVyIik/Yi52YWx1ZT1jLmZpcnN0RWxlbWVudENoaWxkOmIudmFsdWU9YyksY319KTpudWxsfX0pO2NvbnN0IG1zPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiUHJpbWl0aXZlU2xvdCIsaW5oZXJpdEF0dHJzOiExLHNldHVwOihlLHthdHRyczpjLHNsb3RzOmR9KT0+KCk9PntpZighZC5kZWZhdWx0KXJldHVybiBudWxsO2NvbnN0IGU9cmVuZGVyU2xvdEZyYWdtZW50cyhkLmRlZmF1bHQoKSksaD1lLmZpbmRJbmRleChlPT5lLnR5cGUhPT1Zbi5Db21tZW50KTtpZigtMT09PWgpcmV0dXJuIGU7Y29uc3Qgdj1lW2hdO2RlbGV0ZSB2LnByb3BzPy5yZWY7Y29uc3QgYj12LnByb3BzP1luLm1lcmdlUHJvcHMoYyx2LnByb3BzKTpjLHk9WW4uY2xvbmVWTm9kZSh7Li4udixwcm9wczp7fX0sYik7cmV0dXJuIDE9PT1lLmxlbmd0aD95OihlW2hdPXksZSl9fSksaHM9WyJhcmVhIiwiaW1nIiwiaW5wdXQiXSxncz1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IlByaW1pdGl2ZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6ImRpdiJ9fSxzZXR1cChlLHthdHRyczpjLHNsb3RzOmR9KXtjb25zdCBoPWUuYXNDaGlsZD8idGVtcGxhdGUiOmUuYXM7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBoJiZocy5pbmNsdWRlcyhoKT8oKT0+WW4uaChoLGMpOiJ0ZW1wbGF0ZSIhPT1oPygpPT5Zbi5oKGUuYXMsYyx7ZGVmYXVsdDpkLmRlZmF1bHR9KTooKT0+WW4uaChtcyxjLHtkZWZhdWx0OmQuZGVmYXVsdH0pfX0pO2Z1bmN0aW9uIHVzZVByaW1pdGl2ZUVsZW1lbnQoKXtjb25zdCBlPVluLnJlZigpLGM9WW4uY29tcHV0ZWQoKCk9PlsiI3RleHQiLCIjY29tbWVudCJdLmluY2x1ZGVzKGUudmFsdWU/LiRlbC5ub2RlTmFtZSk/ZS52YWx1ZT8uJGVsLm5leHRFbGVtZW50U2libGluZzp1bnJlZkVsZW1lbnQoZSkpO3JldHVybntwcmltaXRpdmVFbGVtZW50OmUsY3VycmVudEVsZW1lbnQ6Y319dmFyIHZzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyQnJhbmNoIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgYz1lLHtmb3J3YXJkUmVmOmR9PXVzZUZvcndhcmRFeHBvc2UoKTtyZXR1cm4oZSxoKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKHtyZWY6WW4udW5yZWYoZCl9LGMpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3QgYnM9ImZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Nb3VudCIseXM9ImZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Vbm1vdW50Iix4cz17YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfTtmdW5jdGlvbiBmb2N1c0ZpcnN0KGUse3NlbGVjdDpjPSExfT17fSl7Y29uc3QgZD1nZXRBY3RpdmVFbGVtZW50KCk7Zm9yKGNvbnN0IGggb2YgZSlpZihmb2N1cyhoLHtzZWxlY3Q6Y30pLGdldEFjdGl2ZUVsZW1lbnQoKSE9PWQpcmV0dXJuITB9ZnVuY3Rpb24gZ2V0VGFiYmFibGVFZGdlcyhlKXtjb25zdCBjPWdldFRhYmJhYmxlQ2FuZGlkYXRlcyhlKTtyZXR1cm5bZmluZFZpc2libGUoYyxlKSxmaW5kVmlzaWJsZShjLnJldmVyc2UoKSxlKV19ZnVuY3Rpb24gZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGUpe2NvbnN0IGM9W10sZD0odm9pZCAwKS5jcmVhdGVUcmVlV2Fsa2VyKGUsTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQse2FjY2VwdE5vZGU6ZT0+e2NvbnN0IGM9IklOUFVUIj09PWUudGFnTmFtZSYmImhpZGRlbiI9PT1lLnR5cGU7cmV0dXJuIGUuZGlzYWJsZWR8fGUuaGlkZGVufHxjP05vZGVGaWx0ZXIuRklMVEVSX1NLSVA6ZS50YWJJbmRleD49MD9Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ6Tm9kZUZpbHRlci5GSUxURVJfU0tJUH19KTtmb3IoO2QubmV4dE5vZGUoKTspYy5wdXNoKGQuY3VycmVudE5vZGUpO3JldHVybiBjfWZ1bmN0aW9uIGZpbmRWaXNpYmxlKGUsYyl7Zm9yKGNvbnN0IGQgb2YgZSlpZighaXNIaWRkZW4oZCx7dXBUbzpjfSkpcmV0dXJuIGR9ZnVuY3Rpb24gaXNIaWRkZW4oZSx7dXBUbzpjfSl7aWYoImhpZGRlbiI9PT1nZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHkpcmV0dXJuITA7Zm9yKDtlOyl7aWYodm9pZCAwIT09YyYmZT09PWMpcmV0dXJuITE7aWYoIm5vbmUiPT09Z2V0Q29tcHV0ZWRTdHlsZShlKS5kaXNwbGF5KXJldHVybiEwO2U9ZS5wYXJlbnRFbGVtZW50fXJldHVybiExfWZ1bmN0aW9uIGZvY3VzKGUse3NlbGVjdDpjPSExfT17fSl7aWYoZSYmZS5mb2N1cyl7Y29uc3QgZD1nZXRBY3RpdmVFbGVtZW50KCk7ZS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLGUhPT1kJiZmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQmJiJzZWxlY3QiaW4gZX0oZSkmJmMmJmUuc2VsZWN0KCl9fXZhciBTcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVGVsZXBvcnQiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJvZHkifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPXVzZU1vdW50ZWQoKTtyZXR1cm4oZSxkKT0+WW4udW5yZWYoYyl8fGUuZm9yY2VNb3VudD8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4uVGVsZXBvcnQse2tleTowLHRvOmUudG8sZGlzYWJsZWQ6ZS5kaXNhYmxlZCxkZWZlcjplLmRlZmVyfSxbWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSw4LFsidG8iLCJkaXNhYmxlZCIsImRlZmVyIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KTtjb25zdCBFcz0iZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbSI7ZnVuY3Rpb24gdXNlQ29sbGVjdGlvbihlPXt9KXtjb25zdHtrZXk6Yz0iIixpc1Byb3ZpZGVyOmQ9ITF9PWUsaD1gJHtjfUNvbGxlY3Rpb25Qcm92aWRlcmA7bGV0IHY7aWYoZCl7Y29uc3QgZT1Zbi5yZWYobmV3IE1hcCksYz1Zbi5yZWYoKTt2PXtjb2xsZWN0aW9uUmVmOmMsaXRlbU1hcDplfSxZbi5wcm92aWRlKGgsdil9ZWxzZSB2PVluLmluamVjdChoKTtjb25zdCBiPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiQ29sbGVjdGlvblNsb3QiLGluaGVyaXRBdHRyczohMSxzZXR1cChlLHtzbG90czpjLGF0dHJzOmR9KXtjb25zdHtwcmltaXRpdmVFbGVtZW50OmgsY3VycmVudEVsZW1lbnQ6Yn09dXNlUHJpbWl0aXZlRWxlbWVudCgpO3JldHVybiBZbi53YXRjaChiLCgpPT57di5jb2xsZWN0aW9uUmVmLnZhbHVlPWIudmFsdWV9KSwoKT0+WW4uaChtcyx7cmVmOmgsLi4uZH0sYyl9fSkseT1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IkNvbGxlY3Rpb25JdGVtIixpbmhlcml0QXR0cnM6ITEscHJvcHM6e3ZhbHVlOnt2YWxpZGF0b3I6KCk9PiEwfX0sc2V0dXAoZSx7c2xvdHM6YyxhdHRyczpkfSl7Y29uc3R7cHJpbWl0aXZlRWxlbWVudDpoLGN1cnJlbnRFbGVtZW50OmJ9PXVzZVByaW1pdGl2ZUVsZW1lbnQoKTtyZXR1cm4gWW4ud2F0Y2hFZmZlY3QoYz0+e2lmKGIudmFsdWUpe2NvbnN0IGQ9WW4ubWFya1JhdyhiLnZhbHVlKTt2Lml0ZW1NYXAudmFsdWUuc2V0KGQse3JlZjpiLnZhbHVlLHZhbHVlOmUudmFsdWV9KSxjKCgpPT52Lml0ZW1NYXAudmFsdWUuZGVsZXRlKGQpKX19KSwoKT0+WW4uaChtcyx7Li4uZCxbRXNdOiIiLHJlZjpofSxjKX19KTtyZXR1cm57Z2V0SXRlbXM6KGU9ITEpPT57Y29uc3QgYz12LmNvbGxlY3Rpb25SZWYudmFsdWU7aWYoIWMpcmV0dXJuW107Y29uc3QgZD1BcnJheS5mcm9tKGMucXVlcnlTZWxlY3RvckFsbChgWyR7RXN9XWApKSxoPUFycmF5LmZyb20odi5pdGVtTWFwLnZhbHVlLnZhbHVlcygpKS5zb3J0KChlLGMpPT5kLmluZGV4T2YoZS5yZWYpLWQuaW5kZXhPZihjLnJlZikpO3JldHVybiBlP2g6aC5maWx0ZXIoZT0+IiIhPT1lLnJlZi5kYXRhc2V0LmRpc2FibGVkKX0scmVhY3RpdmVJdGVtczpZbi5jb21wdXRlZCgoKT0+QXJyYXkuZnJvbSh2Lml0ZW1NYXAudmFsdWUudmFsdWVzKCkpKSxpdGVtTWFwU2l6ZTpZbi5jb21wdXRlZCgoKT0+di5pdGVtTWFwLnZhbHVlLnNpemUpLENvbGxlY3Rpb25TbG90OmIsQ29sbGVjdGlvbkl0ZW06eX19dmFyIHdzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJWaXN1YWxseUhpZGRlbiIscHJvcHM6e2ZlYXR1cmU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImZvY3VzYWJsZSJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwOmU9PihlLGMpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoZ3MpLHthczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJhcmlhLWhpZGRlbiI6ImZvY3VzYWJsZSI9PT1lLmZlYXR1cmU/InRydWUiOnZvaWQgMCwiZGF0YS1oaWRkZW4iOiJmdWxseS1oaWRkZW4iPT09ZS5mZWF0dXJlPyIiOnZvaWQgMCx0YWJpbmRleDoiZnVsbHktaGlkZGVuIj09PWUuZmVhdHVyZT8iLTEiOnZvaWQgMCxzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixib3JkZXI6MCx3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCIscGFkZGluZzowLG1hcmdpbjoiLTFweCIsb3ZlcmZsb3c6ImhpZGRlbiIsY2xpcDoicmVjdCgwLCAwLCAwLCAwKSIsY2xpcFBhdGg6Imluc2V0KDUwJSkiLHdoaXRlU3BhY2U6Im5vd3JhcCIsd29yZFdyYXA6Im5vcm1hbCIsdG9wOiItMXB4IixsZWZ0OiItMXB4In19LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiYXJpYS1oaWRkZW4iLCJkYXRhLWhpZGRlbiIsInRhYmluZGV4Il0pKX0pO2NvbnN0W2tzLENzXT1jcmVhdGVDb250ZXh0KCJQcm9ncmVzc1Jvb3QiKSxpc051bWJlcj1lPT4ibnVtYmVyIj09dHlwZW9mIGU7dmFyIF9zPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9ncmVzc1Jvb3QiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOltOdW1iZXIsbnVsbF0scmVxdWlyZWQ6ITF9LG1heDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMDB9LGdldFZhbHVlTGFiZWw6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITEsZGVmYXVsdDooZSxjKT0+aXNOdW1iZXIoZSk/YCR7TWF0aC5yb3VuZChlL2MqMTAwKX0lYDp2b2lkIDB9LGdldFZhbHVlVGV4dDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsInVwZGF0ZTptYXgiXSxzZXR1cChlLHtlbWl0OmN9KXtjb25zdCBkPWUsaD1jO3VzZUZvcndhcmRFeHBvc2UoKTtjb25zdCB2PXVzZVZNb2RlbChkLCJtb2RlbFZhbHVlIixoLHtwYXNzaXZlOnZvaWQgMD09PWQubW9kZWxWYWx1ZX0pLGI9dXNlVk1vZGVsKGQsIm1heCIsaCx7cGFzc2l2ZTp2b2lkIDA9PT1kLm1heH0pO1luLndhdGNoKCgpPT52LnZhbHVlLGFzeW5jIGU9Pntjb25zdCBjPWZ1bmN0aW9uKGUsYyl7cmV0dXJuIGlzTnVsbGlzaChlKXx8aXNOdW1iZXIoZSkmJiFOdW1iZXIuaXNOYU4oZSkmJmU8PWMmJmU+PTA/ZTpudWxsfShlLGQubWF4KTtjIT09ZSYmKGF3YWl0IFluLm5leHRUaWNrKCksdi52YWx1ZT1jKX0se2ltbWVkaWF0ZTohMH0pLFluLndhdGNoKCgpPT5kLm1heCxlPT57Y29uc3QgYz1mdW5jdGlvbihlKXtyZXR1cm4gaXNOdW1iZXIoZSkmJiFOdW1iZXIuaXNOYU4oZSkmJmU+MD9lOjEwMH0oZC5tYXgpO2MhPT1lJiYoYi52YWx1ZT1jKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHk9WW4uY29tcHV0ZWQoKCk9PmlzTnVsbGlzaCh2LnZhbHVlKT8iaW5kZXRlcm1pbmF0ZSI6di52YWx1ZT09PWIudmFsdWU/ImNvbXBsZXRlIjoibG9hZGluZyIpO3JldHVybiBDcyh7bW9kZWxWYWx1ZTp2LG1heDpiLHByb2dyZXNzU3RhdGU6eX0pLChlLGMpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoZ3MpLHsiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLCJhcmlhLXZhbHVlbWF4IjpZbi51bnJlZihiKSwiYXJpYS12YWx1ZW1pbiI6MCwiYXJpYS12YWx1ZW5vdyI6aXNOdW1iZXIoWW4udW5yZWYodikpP1luLnVucmVmKHYpOnZvaWQgMCwiYXJpYS12YWx1ZXRleHQiOmUuZ2V0VmFsdWVUZXh0Py4oWW4udW5yZWYodiksWW4udW5yZWYoYikpLCJhcmlhLWxhYmVsIjplLmdldFZhbHVlTGFiZWwoWW4udW5yZWYodiksWW4udW5yZWYoYikpLHJvbGU6InByb2dyZXNzYmFyIiwiZGF0YS1zdGF0ZSI6eS52YWx1ZSwiZGF0YS12YWx1ZSI6WW4udW5yZWYodik/P3ZvaWQgMCwiZGF0YS1tYXgiOlluLnVucmVmKGIpfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6WW4udW5yZWYodil9KV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiLCJhcmlhLXZhbHVlbWF4IiwiYXJpYS12YWx1ZW5vdyIsImFyaWEtdmFsdWV0ZXh0IiwiYXJpYS1sYWJlbCIsImRhdGEtc3RhdGUiLCJkYXRhLXZhbHVlIiwiZGF0YS1tYXgiXSkpfX0pLFRzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9ncmVzc0luZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSxkPWtzKCk7cmV0dXJuIHVzZUZvcndhcmRFeHBvc2UoKSwoZSxoKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKGMseyJkYXRhLXN0YXRlIjpZbi51bnJlZihkKS5wcm9ncmVzc1N0YXRlLnZhbHVlLCJkYXRhLXZhbHVlIjpZbi51bnJlZihkKS5tb2RlbFZhbHVlPy52YWx1ZT8/dm9pZCAwLCJkYXRhLW1heCI6WW4udW5yZWYoZCkubWF4LnZhbHVlfSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIiwiZGF0YS12YWx1ZSIsImRhdGEtbWF4Il0pKX19KSxOcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RBbm5vdW5jZUV4Y2x1ZGUiLHByb3BzOnthbHRUZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXA6ZT0+KGUsYyk9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihncykse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImRhdGEtcmVrYS10b2FzdC1hbm5vdW5jZS1leGNsdWRlIjoiIiwiZGF0YS1yZWthLXRvYXN0LWFubm91bmNlLWFsdCI6ZS5hbHRUZXh0fHx2b2lkIDB9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1yZWthLXRvYXN0LWFubm91bmNlLWFsdCJdKSl9KTtjb25zdFtBcyxPc109Y3JlYXRlQ29udGV4dCgiVG9hc3RQcm92aWRlciIpO3ZhciBJcz1Zbi5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvYXN0UHJvdmlkZXIiLHByb3BzOntsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiTm90aWZpY2F0aW9uIn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NWUzfSxkaXNhYmxlU3dpcGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3dpcGVEaXJlY3Rpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6InJpZ2h0In0sc3dpcGVUaHJlc2hvbGQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NTB9fSxzZXR1cChlKXtjb25zdCBjPWUse2xhYmVsOmQsZHVyYXRpb246aCxkaXNhYmxlU3dpcGU6dixzd2lwZURpcmVjdGlvbjpiLHN3aXBlVGhyZXNob2xkOnl9PVluLnRvUmVmcyhjKTt1c2VDb2xsZWN0aW9uKHtpc1Byb3ZpZGVyOiEwfSk7Y29uc3QgRT1Zbi5yZWYoKSxrPVluLnJlZigwKSxfPVluLnJlZighMSksVD1Zbi5yZWYoITEpO2lmKGMubGFiZWwmJiJzdHJpbmciPT10eXBlb2YgYy5sYWJlbCYmIWMubGFiZWwudHJpbSgpKXt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcHJvcCBgbGFiZWxgIHN1cHBsaWVkIHRvIGBUb2FzdFByb3ZpZGVyYC4gRXhwZWN0ZWQgbm9uLWVtcHR5IGBzdHJpbmdgLiIpfXJldHVybiBPcyh7bGFiZWw6ZCxkdXJhdGlvbjpoLGRpc2FibGVTd2lwZTp2LHN3aXBlRGlyZWN0aW9uOmIsc3dpcGVUaHJlc2hvbGQ6eSx0b2FzdENvdW50Omssdmlld3BvcnQ6RSxvblZpZXdwb3J0Q2hhbmdlKGUpe0UudmFsdWU9ZX0sb25Ub2FzdEFkZCgpe2sudmFsdWUrK30sb25Ub2FzdFJlbW92ZSgpe2sudmFsdWUtLX0saXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmOl8saXNDbG9zZVBhdXNlZFJlZjpUfSksKGUsYyk9PlluLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKX19KSxScz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RBbm5vdW5jZSIsc2V0dXAoZSl7Y29uc3QgYz1BcygpLGQ9ZnVuY3Rpb24oZT0xZTMsYz17fSl7Y29uc3R7Y29udHJvbHM6ZD0hMSxjYWxsYmFjazpofT1jLHY9dXNlVGltZW91dEZuKG51bGwhPWg/aDpub29wLGUsYyksYj1Zbi5jb21wdXRlZCgoKT0+IXYuaXNQZW5kaW5nLnZhbHVlKTtyZXR1cm4gZD97cmVhZHk6YiwuLi52fTpifSgxZTMpLGg9WW4ucmVmKCExKTtyZXR1cm4gdXNlUmFmRm4oKCk9PntoLnZhbHVlPSEwfSksKGUsdik9PlluLnVucmVmKGQpfHxoLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZih3cykse2tleTowLGZlYXR1cmU6ImZ1bGx5LWhpZGRlbiJ9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVUZXh0Vk5vZGUoWW4udG9EaXNwbGF5U3RyaW5nKFluLnVucmVmKGMpLmxhYmVsLnZhbHVlKSsiICIsMSksWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pO2NvbnN0IFBzPSJ0b2FzdC52aWV3cG9ydFBhdXNlIixNcz0idG9hc3Qudmlld3BvcnRSZXN1bWUiO2Z1bmN0aW9uIGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoZSxjLGQpe2NvbnN0IGg9ZC5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQsdj1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpkfSk7YyYmaC5hZGRFdmVudExpc3RlbmVyKGUsYyx7b25jZTohMH0pLGguZGlzcGF0Y2hFdmVudCh2KX1mdW5jdGlvbiBpc0RlbHRhSW5EaXJlY3Rpb24oZSxjLGQ9MCl7Y29uc3QgaD1NYXRoLmFicyhlLngpLHY9TWF0aC5hYnMoZS55KSxiPWg+djtyZXR1cm4ibGVmdCI9PT1jfHwicmlnaHQiPT09Yz9iJiZoPmQ6IWImJnY+ZH1mdW5jdGlvbiBnZXRBbm5vdW5jZVRleHRDb250ZW50KGUpe2NvbnN0IGM9W107cmV0dXJuIEFycmF5LmZyb20oZS5jaGlsZE5vZGVzKS5mb3JFYWNoKGU9PntpZihlLm5vZGVUeXBlPT09ZS5URVhUX05PREUmJmUudGV4dENvbnRlbnQmJmMucHVzaChlLnRleHRDb250ZW50KSxmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlVHlwZT09PWUuRUxFTUVOVF9OT0RFfShlKSl7Y29uc3QgZD1lLmFyaWFIaWRkZW58fGUuaGlkZGVufHwibm9uZSI9PT1lLnN0eWxlLmRpc3BsYXksaD0iIj09PWUuZGF0YXNldC5yZWthVG9hc3RBbm5vdW5jZUV4Y2x1ZGU7aWYoIWQpaWYoaCl7Y29uc3QgZD1lLmRhdGFzZXQucmVrYVRvYXN0QW5ub3VuY2VBbHQ7ZCYmYy5wdXNoKGQpfWVsc2UgYy5wdXNoKC4uLmdldEFubm91bmNlVGV4dENvbnRlbnQoZSkpfX0pLGN9Y29uc3RbRHMsQnNdPWNyZWF0ZUNvbnRleHQoIlRvYXN0Um9vdCIpO3ZhciBMcz1Zbi5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvYXN0Um9vdEltcGwiLHByb3BzOnt0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LGVtaXRzOlsiY2xvc2UiLCJlc2NhcGVLZXlEb3duIiwicGF1c2UiLCJyZXN1bWUiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwic3dpcGVDYW5jZWwiLCJzd2lwZUVuZCJdLHNldHVwKGUse2VtaXQ6Y30pe2NvbnN0IGQ9ZSxoPWMse2ZvcndhcmRSZWY6dixjdXJyZW50RWxlbWVudDpifT11c2VGb3J3YXJkRXhwb3NlKCkse0NvbGxlY3Rpb25JdGVtOnl9PXVzZUNvbGxlY3Rpb24oKSxFPUFzKCksaz1Zbi5yZWYobnVsbCksXz1Zbi5yZWYobnVsbCksVD1Zbi5jb21wdXRlZCgoKT0+Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246RS5kdXJhdGlvbi52YWx1ZSksTj1Zbi5yZWYoMCksTz1Zbi5yZWYoVC52YWx1ZSksUj1Zbi5yZWYoMCksTT1Zbi5yZWYoVC52YWx1ZSksRD11c2VSYWZGbigoKT0+e2NvbnN0IGU9RGF0ZS5ub3coKS1OLnZhbHVlO00udmFsdWU9TWF0aC5tYXgoTy52YWx1ZS1lLDApfSx7ZnBzTGltaXQ6NjB9KTtmdW5jdGlvbiBzdGFydFRpbWVyKGUpe2U8PTB8fE51bWJlci5QT1NJVElWRV9JTkZJTklUWX1mdW5jdGlvbiBoYW5kbGVDbG9zZShlKXtjb25zdCBjPSIiPT09ZT8ucG9pbnRlclR5cGUsZD1iLnZhbHVlPy5jb250YWlucyhnZXRBY3RpdmVFbGVtZW50KCkpO2QmJmMmJkUudmlld3BvcnQudmFsdWU/LmZvY3VzKCksYyYmKEUuaXNDbG9zZVBhdXNlZFJlZi52YWx1ZT0hMSksaCgiY2xvc2UiKX1jb25zdCBMPVluLmNvbXB1dGVkKCgpPT5iLnZhbHVlP2dldEFubm91bmNlVGV4dENvbnRlbnQoYi52YWx1ZSk6bnVsbCk7aWYoZC50eXBlJiYhWyJmb3JlZ3JvdW5kIiwiYmFja2dyb3VuZCJdLmluY2x1ZGVzKGQudHlwZSkpe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBwcm9wIGB0eXBlYCBzdXBwbGllZCB0byBgVG9hc3RgLiBFeHBlY3RlZCBgZm9yZWdyb3VuZCB8IGJhY2tncm91bmRgLiIpfXJldHVybiBZbi53YXRjaEVmZmVjdChlPT57Y29uc3QgYz1FLnZpZXdwb3J0LnZhbHVlO2lmKGMpe2NvbnN0IGhhbmRsZVJlc3VtZT0oKT0+e3N0YXJ0VGltZXIoTy52YWx1ZSksRC5yZXN1bWUoKSxoKCJyZXN1bWUiKX0saGFuZGxlUGF1c2U9KCk9Pntjb25zdCBlPURhdGUubm93KCktTi52YWx1ZTtPLnZhbHVlPU8udmFsdWUtZSwodm9pZCAwKS5jbGVhclRpbWVvdXQoUi52YWx1ZSksRC5wYXVzZSgpLGgoInBhdXNlIil9O3JldHVybiBjLmFkZEV2ZW50TGlzdGVuZXIoUHMsaGFuZGxlUGF1c2UpLGMuYWRkRXZlbnRMaXN0ZW5lcihNcyxoYW5kbGVSZXN1bWUpLCgpPT57Yy5yZW1vdmVFdmVudExpc3RlbmVyKFBzLGhhbmRsZVBhdXNlKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoTXMsaGFuZGxlUmVzdW1lKX19fSksWW4ud2F0Y2goKCk9PltkLm9wZW4sVC52YWx1ZV0sKCk9PntPLnZhbHVlPVQudmFsdWUsZC5vcGVuJiYhRS5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlJiZzdGFydFRpbWVyKFQudmFsdWUpfSx7aW1tZWRpYXRlOiEwfSksb25LZXlTdHJva2UoIkVzY2FwZSIsZT0+e2goImVzY2FwZUtleURvd24iLGUpLGUuZGVmYXVsdFByZXZlbnRlZHx8KEUuaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmLnZhbHVlPSEwLGhhbmRsZUNsb3NlKCkpfSksQnMoe29uQ2xvc2U6aGFuZGxlQ2xvc2V9KSwoZSxjKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUVsZW1lbnRCbG9jayhZbi5GcmFnbWVudCxudWxsLFtMLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhScyx7a2V5OjAscm9sZToiYWxlcnQiLCJhcmlhLWxpdmUiOiJmb3JlZ3JvdW5kIj09PWUudHlwZT8iYXNzZXJ0aXZlIjoicG9saXRlIn0se2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoTC52YWx1ZSksMSldKSxfOjF9LDgsWyJhcmlhLWxpdmUiXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApLFluLnVucmVmKEUpLnZpZXdwb3J0LnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5UZWxlcG9ydCx7a2V5OjEsdG86WW4udW5yZWYoRSkudmlld3BvcnQudmFsdWV9LFtZbi5jcmVhdGVWTm9kZShZbi51bnJlZih5KSxudWxsLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihncyksWW4ubWVyZ2VQcm9wcyh7cmVmOlluLnVucmVmKHYpLHRhYmluZGV4OiIwIn0sZS4kYXR0cnMse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImRhdGEtc3RhdGUiOmUub3Blbj8ib3BlbiI6ImNsb3NlZCIsImRhdGEtc3dpcGUtZGlyZWN0aW9uIjpZbi51bnJlZihFKS5zd2lwZURpcmVjdGlvbi52YWx1ZSxzdHlsZTpZbi51bnJlZihFKS5kaXNhYmxlU3dpcGUudmFsdWU/dm9pZCAwOnt1c2VyU2VsZWN0OiJub25lIix0b3VjaEFjdGlvbjoibm9uZSJ9LG9uUG9pbnRlcmRvd246Y1swXXx8KGNbMF09WW4ud2l0aE1vZGlmaWVycyhlPT57WW4udW5yZWYoRSkuZGlzYWJsZVN3aXBlLnZhbHVlfHwoay52YWx1ZT17eDplLmNsaWVudFgseTplLmNsaWVudFl9KX0sWyJsZWZ0Il0pKSxvblBvaW50ZXJtb3ZlOmNbMV18fChjWzFdPWU9PntpZihZbi51bnJlZihFKS5kaXNhYmxlU3dpcGUudmFsdWV8fCFrLnZhbHVlKXJldHVybjtjb25zdCBjPWUuY2xpZW50WC1rLnZhbHVlLngsZD1lLmNsaWVudFktay52YWx1ZS55LHY9Qm9vbGVhbihfLnZhbHVlKSxiPVsibGVmdCIsInJpZ2h0Il0uaW5jbHVkZXMoWW4udW5yZWYoRSkuc3dpcGVEaXJlY3Rpb24udmFsdWUpLHk9WyJsZWZ0IiwidXAiXS5pbmNsdWRlcyhZbi51bnJlZihFKS5zd2lwZURpcmVjdGlvbi52YWx1ZSk/TWF0aC5taW46TWF0aC5tYXgsVD1iP3koMCxjKTowLE49Yj8wOnkoMCxkKSxPPSJ0b3VjaCI9PT1lLnBvaW50ZXJUeXBlPzEwOjIsUj17eDpULHk6Tn0sTT17b3JpZ2luYWxFdmVudDplLGRlbHRhOlJ9O3Y/KF8udmFsdWU9UixZbi51bnJlZihoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KShZbi51bnJlZigidG9hc3Quc3dpcGVNb3ZlIiksZT0+aCgic3dpcGVNb3ZlIixlKSxNKSk6WW4udW5yZWYoaXNEZWx0YUluRGlyZWN0aW9uKShSLFluLnVucmVmKEUpLnN3aXBlRGlyZWN0aW9uLnZhbHVlLE8pPyhfLnZhbHVlPVIsWW4udW5yZWYoaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCkoWW4udW5yZWYoInRvYXN0LnN3aXBlU3RhcnQiKSxlPT5oKCJzd2lwZVN0YXJ0IixlKSxNKSxlLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCkpOihNYXRoLmFicyhjKT5PfHxNYXRoLmFicyhkKT5PKSYmKGsudmFsdWU9bnVsbCl9KSxvblBvaW50ZXJ1cDpjWzJdfHwoY1syXT1lPT57aWYoWW4udW5yZWYoRSkuZGlzYWJsZVN3aXBlLnZhbHVlKXJldHVybjtjb25zdCBjPV8udmFsdWUsZD1lLnRhcmdldDtpZihkLmhhc1BvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKSYmZC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpLF8udmFsdWU9bnVsbCxrLnZhbHVlPW51bGwsYyl7Y29uc3QgZD1lLmN1cnJlbnRUYXJnZXQsdj17b3JpZ2luYWxFdmVudDplLGRlbHRhOmN9O1luLnVucmVmKGlzRGVsdGFJbkRpcmVjdGlvbikoYyxZbi51bnJlZihFKS5zd2lwZURpcmVjdGlvbi52YWx1ZSxZbi51bnJlZihFKS5zd2lwZVRocmVzaG9sZC52YWx1ZSk/WW4udW5yZWYoaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCkoWW4udW5yZWYoInRvYXN0LnN3aXBlRW5kIiksZT0+aCgic3dpcGVFbmQiLGUpLHYpOlluLnVucmVmKGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQpKFluLnVucmVmKCJ0b2FzdC5zd2lwZUNhbmNlbCIpLGU9PmgoInN3aXBlQ2FuY2VsIixlKSx2KSxkPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZT0+ZS5wcmV2ZW50RGVmYXVsdCgpLHtvbmNlOiEwfSl9fSl9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse3JlbWFpbmluZzpNLnZhbHVlLGR1cmF0aW9uOlQudmFsdWV9KV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1zdGF0ZSIsImRhdGEtc3dpcGUtZGlyZWN0aW9uIiwic3R5bGUiXSldKSxfOjN9KV0sOCxbInRvIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0sNjQpKX19KSxqcz1Mcywkcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RDbG9zZSIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3QgYz1lLGQ9RHMoKSx7Zm9yd2FyZFJlZjpofT11c2VGb3J3YXJkRXhwb3NlKCk7cmV0dXJuKGUsdik9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhOcyx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVZOb2RlKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKGMse3JlZjpZbi51bnJlZihoKSx0eXBlOiJidXR0b24iPT09ZS5hcz8iYnV0dG9uIjp2b2lkIDAsb25DbGljazpZbi51bnJlZihkKS5vbkNsb3NlfSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIiwib25DbGljayJdKV0pLF86M30pKX19KSxGcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RBY3Rpb24iLHByb3BzOnthbHRUZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7aWYoIWUuYWx0VGV4dCl0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcHJvcCBgYWx0VGV4dGAgZXhwZWN0ZWQgb24gYFRvYXN0QWN0aW9uYCIpO2NvbnN0e2ZvcndhcmRSZWY6Y309dXNlRm9yd2FyZEV4cG9zZSgpO3JldHVybihlLGQpPT5lLmFsdFRleHQ/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKE5zLHtrZXk6MCwiYWx0LXRleHQiOmUuYWx0VGV4dCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUoJHMse3JlZjpZbi51bnJlZihjKSxhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30sOCxbImFsdC10ZXh0Il0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxWcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3REZXNjcmlwdGlvbiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZTtyZXR1cm4gdXNlRm9yd2FyZEV4cG9zZSgpLChlLGQpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoZ3MpLFluLm5vcm1hbGl6ZVByb3BzKFluLmd1YXJkUmVhY3RpdmVQcm9wcyhjKSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx6cz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPWU7cmV0dXJuKGUsZCk9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihTcyksWW4ubm9ybWFsaXplUHJvcHMoWW4uZ3VhcmRSZWFjdGl2ZVByb3BzKGMpKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHFzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJUb2FzdFJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZm9yZWdyb3VuZCJ9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGkifX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicGF1c2UiLCJyZXN1bWUiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwic3dpcGVDYW5jZWwiLCJzd2lwZUVuZCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDpjfSl7Y29uc3QgZD1lLGg9Yyx7Zm9yd2FyZFJlZjp2fT11c2VGb3J3YXJkRXhwb3NlKCksYj11c2VWTW9kZWwoZCwib3BlbiIsaCx7ZGVmYXVsdFZhbHVlOmQuZGVmYXVsdE9wZW4scGFzc2l2ZTp2b2lkIDA9PT1kLm9wZW59KTtyZXR1cm4oZSxjKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGZzKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fFluLnVucmVmKGIpfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUoanMsWW4ubWVyZ2VQcm9wcyh7cmVmOlluLnVucmVmKHYpLG9wZW46WW4udW5yZWYoYiksdHlwZTplLnR5cGUsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxkdXJhdGlvbjplLmR1cmF0aW9ufSxlLiRhdHRycyx7b25DbG9zZTpjWzBdfHwoY1swXT1lPT5iLnZhbHVlPSExKSxvblBhdXNlOmNbMV18fChjWzFdPWU9PmgoInBhdXNlIikpLG9uUmVzdW1lOmNbMl18fChjWzJdPWU9PmgoInJlc3VtZSIpKSxvbkVzY2FwZUtleURvd246Y1szXXx8KGNbM109ZT0+aCgiZXNjYXBlS2V5RG93biIsZSkpLG9uU3dpcGVTdGFydDpjWzRdfHwoY1s0XT1lPT57aCgic3dpcGVTdGFydCIsZSksZS5kZWZhdWx0UHJldmVudGVkfHxlLmN1cnJlbnRUYXJnZXQuc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwic3RhcnQiKX0pLG9uU3dpcGVNb3ZlOmNbNV18fChjWzVdPWU9PntpZihoKCJzd2lwZU1vdmUiLGUpLCFlLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0e3g6Yyx5OmR9PWUuZGV0YWlsLmRlbHRhLGg9ZS5jdXJyZW50VGFyZ2V0O2guc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwibW92ZSIpLGguc3R5bGUuc2V0UHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgiLGAke2N9cHhgKSxoLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15IixgJHtkfXB4YCl9fSksb25Td2lwZUNhbmNlbDpjWzZdfHwoY1s2XT1lPT57aWYoaCgic3dpcGVDYW5jZWwiLGUpLCFlLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0IGM9ZS5jdXJyZW50VGFyZ2V0O2Muc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwiY2FuY2VsIiksYy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteCIpLGMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXkiKSxjLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXgiKSxjLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXkiKX19KSxvblN3aXBlRW5kOmNbN118fChjWzddPWU9PntpZihoKCJzd2lwZUVuZCIsZSksIWUuZGVmYXVsdFByZXZlbnRlZCl7Y29uc3R7eDpjLHk6ZH09ZS5kZXRhaWwuZGVsdGEsaD1lLmN1cnJlbnRUYXJnZXQ7aC5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGUiLCJlbmQiKSxoLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS14IiksaC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteSIpLGguc3R5bGUuc2V0UHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1lbmQteCIsYCR7Y31weGApLGguc3R5bGUuc2V0UHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1lbmQteSIsYCR7ZH1weGApLGIudmFsdWU9ITF9fSl9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCh7cmVtYWluaW5nOmMsZHVyYXRpb246ZH0pPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse3JlbWFpbmluZzpjLGR1cmF0aW9uOmQsb3BlbjpZbi51bnJlZihiKX0pXSksXzozfSwxNixbIm9wZW4iLCJ0eXBlIiwiYXMiLCJhcy1jaGlsZCIsImR1cmF0aW9uIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksVXM9cXMsSHM9WW4uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlRvYXN0VGl0bGUiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPWU7cmV0dXJuIHVzZUZvcndhcmRFeHBvc2UoKSwoZSxkKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGdzKSxZbi5ub3JtYWxpemVQcm9wcyhZbi5ndWFyZFJlYWN0aXZlUHJvcHMoYykpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksR3M9WW4uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkZvY3VzUHJveHkiLGVtaXRzOlsiZm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0Il0sc2V0dXAoZSx7ZW1pdDpjfSl7Y29uc3QgZD1jLGg9QXMoKTtyZXR1cm4oZSxjKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKHdzKSx7dGFiaW5kZXg6IjAiLHN0eWxlOntwb3NpdGlvbjoiZml4ZWQifSxvbkZvY3VzOmNbMF18fChjWzBdPWU9Pntjb25zdCBjPWUucmVsYXRlZFRhcmdldDshWW4udW5yZWYoaCkudmlld3BvcnQudmFsdWU/LmNvbnRhaW5zKGMpJiZkKCJmb2N1c0Zyb21PdXRzaWRlVmlld3BvcnQiKX0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpfX0pLFdzPVluLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiVG9hc3RWaWV3cG9ydCIscHJvcHM6e2hvdGtleTp7dHlwZTpBcnJheSxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT5bIkY4Il19LGxhYmVsOnt0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExLGRlZmF1bHQ6Ik5vdGlmaWNhdGlvbnMgKHtob3RrZXl9KSJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJvbCJ9fSxzZXR1cChlKXtjb25zdCBjPWUse2hvdGtleTpkLGxhYmVsOmh9PVluLnRvUmVmcyhjKSx7Zm9yd2FyZFJlZjp2LGN1cnJlbnRFbGVtZW50OmJ9PXVzZUZvcndhcmRFeHBvc2UoKSx7Q29sbGVjdGlvblNsb3Q6eSxnZXRJdGVtczpFfT11c2VDb2xsZWN0aW9uKCksaz1BcygpLF89WW4uY29tcHV0ZWQoKCk9PmsudG9hc3RDb3VudC52YWx1ZT4wKSxUPVluLnJlZigpLE49WW4ucmVmKCksTz0vS2V5L2csUj0vRGlnaXQvZyxNPVluLmNvbXB1dGVkKCgpPT5kLnZhbHVlLmpvaW4oIisiKS5yZXBsYWNlKE8sIiIpLnJlcGxhY2UoUiwiIikpO2Z1bmN0aW9uIGdldFNvcnRlZFRhYmJhYmxlQ2FuZGlkYXRlcyh7dGFiYmluZ0RpcmVjdGlvbjplfSl7Y29uc3QgYz1FKCkubWFwKGU9PmUucmVmKSxkPWMubWFwKGM9Pntjb25zdCBkPVtjLC4uLmdldFRhYmJhYmxlQ2FuZGlkYXRlcyhjKV07cmV0dXJuImZvcndhcmRzIj09PWU/ZDpkLnJldmVyc2UoKX0pO3JldHVybigiZm9yd2FyZHMiPT09ZT9kLnJldmVyc2UoKTpkKS5mbGF0KCl9cmV0dXJuIG9uS2V5U3Ryb2tlKGQudmFsdWUsKCk9PntiLnZhbHVlLmZvY3VzKCl9KSxZbi53YXRjaEVmZmVjdChlPT57Y29uc3QgYz1iLnZhbHVlO2lmKF8udmFsdWUmJmMpe2NvbnN0IGhhbmRsZVBhdXNlPSgpPT57aWYoIWsuaXNDbG9zZVBhdXNlZFJlZi52YWx1ZSl7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQoUHMpO2MuZGlzcGF0Y2hFdmVudChlKSxrLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWU9ITB9fSxoYW5kbGVSZXN1bWU9KCk9PntpZihrLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWUpe2NvbnN0IGU9bmV3IEN1c3RvbUV2ZW50KE1zKTtjLmRpc3BhdGNoRXZlbnQoZSksay5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlPSExfX0saGFuZGxlRm9jdXNPdXRSZXN1bWU9ZT0+eyFjLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkmJmhhbmRsZVJlc3VtZSgpfSxoYW5kbGVQb2ludGVyTGVhdmVSZXN1bWU9KCk9PntjLmNvbnRhaW5zKGdldEFjdGl2ZUVsZW1lbnQoKSl8fGhhbmRsZVJlc3VtZSgpfSxoYW5kbGVLZXlEb3duPWU9Pntjb25zdCBkPWUuYWx0S2V5fHxlLmN0cmxLZXl8fGUubWV0YUtleTtpZigiVGFiIj09PWUua2V5JiYhZCl7Y29uc3QgZD1nZXRBY3RpdmVFbGVtZW50KCksaD1lLnNoaWZ0S2V5O2lmKGUudGFyZ2V0PT09YyYmaClyZXR1cm4gdm9pZCBULnZhbHVlPy5mb2N1cygpO2NvbnN0IHY9Z2V0U29ydGVkVGFiYmFibGVDYW5kaWRhdGVzKHt0YWJiaW5nRGlyZWN0aW9uOmg/ImJhY2t3YXJkcyI6ImZvcndhcmRzIn0pLGI9di5maW5kSW5kZXgoZT0+ZT09PWQpO2ZvY3VzRmlyc3Qodi5zbGljZShiKzEpKT9lLnByZXZlbnREZWZhdWx0KCk6aD9ULnZhbHVlPy5mb2N1cygpOk4udmFsdWU/LmZvY3VzKCl9fTtjLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGhhbmRsZVBhdXNlKSxjLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixoYW5kbGVGb2N1c091dFJlc3VtZSksYy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUGF1c2UpLGMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVQb2ludGVyTGVhdmVSZXN1bWUpLGMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsaGFuZGxlS2V5RG93biksKHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsaGFuZGxlUGF1c2UpLCh2b2lkIDApLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixoYW5kbGVSZXN1bWUpLGUoKCk9PntjLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGhhbmRsZVBhdXNlKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixoYW5kbGVGb2N1c091dFJlc3VtZSksYy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUGF1c2UpLGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVQb2ludGVyTGVhdmVSZXN1bWUpLGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsaGFuZGxlS2V5RG93biksKHZvaWQgMCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsaGFuZGxlUGF1c2UpLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIixoYW5kbGVSZXN1bWUpfSl9fSksKGUsYyk9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZih2cykse3JvbGU6InJlZ2lvbiIsImFyaWEtbGFiZWwiOiJzdHJpbmciPT10eXBlb2YgWW4udW5yZWYoaCk/WW4udW5yZWYoaCkucmVwbGFjZSgie2hvdGtleX0iLE0udmFsdWUpOlluLnVucmVmKGgpKE0udmFsdWUpLHRhYmluZGV4OiItMSIsc3R5bGU6WW4ubm9ybWFsaXplU3R5bGUoe3BvaW50ZXJFdmVudHM6Xy52YWx1ZT92b2lkIDA6Im5vbmUifSl9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltfLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhHcyx7a2V5OjAscmVmOmU9PntlJiYoVC52YWx1ZT1Zbi51bnJlZih1bnJlZkVsZW1lbnQpKGUpKX0sb25Gb2N1c0Zyb21PdXRzaWRlVmlld3BvcnQ6Y1swXXx8KGNbMF09KCk9Pntjb25zdCBlPWdldFNvcnRlZFRhYmJhYmxlQ2FuZGlkYXRlcyh7dGFiYmluZ0RpcmVjdGlvbjoiZm9yd2FyZHMifSk7WW4udW5yZWYoZm9jdXNGaXJzdCkoZSl9KX0sbnVsbCw1MTIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKSxZbi5jcmVhdGVWTm9kZShZbi51bnJlZih5KSxudWxsLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihncyksWW4ubWVyZ2VQcm9wcyh7cmVmOlluLnVucmVmKHYpLHRhYmluZGV4OiItMSIsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZH0sZS4kYXR0cnMpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30pLF8udmFsdWU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKEdzLHtrZXk6MSxyZWY6ZT0+e2UmJihOLnZhbHVlPVluLnVucmVmKHVucmVmRWxlbWVudCkoZSkpfSxvbkZvY3VzRnJvbU91dHNpZGVWaWV3cG9ydDpjWzFdfHwoY1sxXT0oKT0+e2NvbnN0IGU9Z2V0U29ydGVkVGFiYmFibGVDYW5kaWRhdGVzKHt0YWJiaW5nRGlyZWN0aW9uOiJiYWNrd2FyZHMifSk7WW4udW5yZWYoZm9jdXNGaXJzdCkoZSl9KX0sbnVsbCw1MTIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0pLF86M30sOCxbImFyaWEtbGFiZWwiLCJzdHlsZSJdKSl9fSksWHM9V3M7Y29uc3RbS3MsSnNdPWNyZWF0ZUNvbnRleHQoIlRvb2x0aXBQcm92aWRlciIpO3ZhciBRcz1Zbi5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvb2x0aXBQcm92aWRlciIscHJvcHM6e2RlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NzAwfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LGRpc2FibGVIb3ZlcmFibGVDb250ZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSx7ZGVsYXlEdXJhdGlvbjpkLHNraXBEZWxheUR1cmF0aW9uOmgsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6dixkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6YixpZ25vcmVOb25LZXlib2FyZEZvY3VzOnksZGlzYWJsZWQ6RSxjb250ZW50Omt9PVluLnRvUmVmcyhjKTt1c2VGb3J3YXJkRXhwb3NlKCk7Y29uc3QgXz1Zbi5yZWYoITApLFQ9WW4ucmVmKCExKSx7c3RhcnQ6TixzdG9wOk99PXVzZVRpbWVvdXRGbigoKT0+e18udmFsdWU9ITB9LGgse2ltbWVkaWF0ZTohMX0pO3JldHVybiBKcyh7aXNPcGVuRGVsYXllZDpfLGRlbGF5RHVyYXRpb246ZCxvbk9wZW4oKXtPKCksXy52YWx1ZT0hMX0sb25DbG9zZSgpe04oKX0saXNQb2ludGVySW5UcmFuc2l0UmVmOlQsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6dixkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6YixkaXNhYmxlZDpFLGlnbm9yZU5vbktleWJvYXJkRm9jdXM6eSxjb250ZW50Omt9KSwoZSxjKT0+WW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpfX0pO2Z1bmN0aW9uIHNlcmlhbGl6ZShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/YCcke2V9J2A6KG5ldyBZcykuc2VyaWFsaXplKGUpfWNvbnN0IFlzPWZ1bmN0aW9uKCl7Y2xhc3Mgb3sjZT1uZXcgTWFwO2NvbXBhcmUoZSxjKXtjb25zdCBkPXR5cGVvZiBlLGg9dHlwZW9mIGM7cmV0dXJuInN0cmluZyI9PT1kJiYic3RyaW5nIj09PWg/ZS5sb2NhbGVDb21wYXJlKGMpOiJudW1iZXIiPT09ZCYmIm51bWJlciI9PT1oP2UtYzpTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmUuY2FsbCh0aGlzLnNlcmlhbGl6ZShlLCEwKSx0aGlzLnNlcmlhbGl6ZShjLCEwKSl9c2VyaWFsaXplKGUsYyl7aWYobnVsbD09PWUpcmV0dXJuIm51bGwiO3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJzdHJpbmciOnJldHVybiBjP2U6YCcke2V9J2A7Y2FzZSJiaWdpbnQiOnJldHVybmAke2V9bmA7Y2FzZSJvYmplY3QiOnJldHVybiB0aGlzLiRvYmplY3QoZSk7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHRoaXMuJGZ1bmN0aW9uKGUpfXJldHVybiBTdHJpbmcoZSl9c2VyaWFsaXplT2JqZWN0KGUpe2NvbnN0IGM9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO2lmKCJbb2JqZWN0IE9iamVjdF0iIT09YylyZXR1cm4gdGhpcy5zZXJpYWxpemVCdWlsdEluVHlwZShjLmxlbmd0aDwxMD9gdW5rbm93bjoke2N9YDpjLnNsaWNlKDgsLTEpLGUpO2NvbnN0IGQ9ZS5jb25zdHJ1Y3RvcixoPWQ9PT1PYmplY3R8fHZvaWQgMD09PWQ/IiI6ZC5uYW1lO2lmKCIiIT09aCYmZ2xvYmFsVGhpc1toXT09PWQpcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUoaCxlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS50b0pTT04pe2NvbnN0IGM9ZS50b0pTT04oKTtyZXR1cm4gaCsobnVsbCE9PWMmJiJvYmplY3QiPT10eXBlb2YgYz90aGlzLiRvYmplY3QoYyk6YCgke3RoaXMuc2VyaWFsaXplKGMpfSlgKX1yZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKGgsT2JqZWN0LmVudHJpZXMoZSkpfXNlcmlhbGl6ZUJ1aWx0SW5UeXBlKGUsYyl7Y29uc3QgZD10aGlzWyIkIitlXTtpZihkKXJldHVybiBkLmNhbGwodGhpcyxjKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYz8uZW50cmllcylyZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKGUsYy5lbnRyaWVzKCkpO3Rocm93IG5ldyBFcnJvcihgQ2Fubm90IHNlcmlhbGl6ZSAke2V9YCl9c2VyaWFsaXplT2JqZWN0RW50cmllcyhlLGMpe2NvbnN0IGQ9QXJyYXkuZnJvbShjKS5zb3J0KChlLGMpPT50aGlzLmNvbXBhcmUoZVswXSxjWzBdKSk7bGV0IGg9YCR7ZX17YDtmb3IobGV0IGU9MDtlPGQubGVuZ3RoO2UrKyl7Y29uc3RbYyx2XT1kW2VdO2grPWAke3RoaXMuc2VyaWFsaXplKGMsITApfToke3RoaXMuc2VyaWFsaXplKHYpfWAsZTxkLmxlbmd0aC0xJiYoaCs9IiwiKX1yZXR1cm4gaCsifSJ9JG9iamVjdChlKXtsZXQgYz10aGlzLiNlLmdldChlKTtyZXR1cm4gdm9pZCAwPT09YyYmKHRoaXMuI2Uuc2V0KGUsYCMke3RoaXMuI2Uuc2l6ZX1gKSxjPXRoaXMuc2VyaWFsaXplT2JqZWN0KGUpLHRoaXMuI2Uuc2V0KGUsYykpLGN9JGZ1bmN0aW9uKGUpe2NvbnN0IGM9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7cmV0dXJuIltuYXRpdmUgY29kZV0gfSI9PT1jLnNsaWNlKC0xNSk/YCR7ZS5uYW1lfHwiIn0oKVtuYXRpdmVdYDpgJHtlLm5hbWV9KCR7ZS5sZW5ndGh9KSR7Yy5yZXBsYWNlKC9ccypcblxzKi9nLCIiKX1gfSRBcnJheShlKXtsZXQgYz0iWyI7Zm9yKGxldCBkPTA7ZDxlLmxlbmd0aDtkKyspYys9dGhpcy5zZXJpYWxpemUoZVtkXSksZDxlLmxlbmd0aC0xJiYoYys9IiwiKTtyZXR1cm4gYysiXSJ9JERhdGUoZSl7dHJ5e3JldHVybmBEYXRlKCR7ZS50b0lTT1N0cmluZygpfSlgfWNhdGNoe3JldHVybiJEYXRlKG51bGwpIn19JEFycmF5QnVmZmVyKGUpe3JldHVybmBBcnJheUJ1ZmZlclske25ldyBVaW50OEFycmF5KGUpLmpvaW4oIiwiKX1dYH0kU2V0KGUpe3JldHVybmBTZXQke3RoaXMuJEFycmF5KEFycmF5LmZyb20oZSkuc29ydCgoZSxjKT0+dGhpcy5jb21wYXJlKGUsYykpKX1gfSRNYXAoZSl7cmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcygiTWFwIixlLmVudHJpZXMoKSl9fWZvcihjb25zdCBlIG9mWyJFcnJvciIsIlJlZ0V4cCIsIlVSTCJdKW8ucHJvdG90eXBlWyIkIitlXT1mdW5jdGlvbihjKXtyZXR1cm5gJHtlfSgke2N9KWB9O2Zvcihjb25zdCBlIG9mWyJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiLCJJbnQxNkFycmF5IiwiVWludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiVWludDMyQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiXSlvLnByb3RvdHlwZVsiJCIrZV09ZnVuY3Rpb24oYyl7cmV0dXJuYCR7ZX1bJHtjLmpvaW4oIiwiKX1dYH07Zm9yKGNvbnN0IGUgb2ZbIkJpZ0ludDY0QXJyYXkiLCJCaWdVaW50NjRBcnJheSJdKW8ucHJvdG90eXBlWyIkIitlXT1mdW5jdGlvbihjKXtyZXR1cm5gJHtlfVske2Muam9pbigibiwiKX0ke2MubGVuZ3RoPjA/Im4iOiIifV1gfTtyZXR1cm4gb30oKTtmdW5jdGlvbiBpc0VxdWFsJDEoZSxjKXtyZXR1cm4gZT09PWN8fHNlcmlhbGl6ZShlKT09PXNlcmlhbGl6ZShjKX1mdW5jdGlvbiBkaWZmKGUsYyl7cmV0dXJuIF9kaWZmKF90b0hhc2hlZE9iamVjdChlKSxfdG9IYXNoZWRPYmplY3QoYykpfWZ1bmN0aW9uIF9kaWZmKGUsYyl7Y29uc3QgZD1bXSxoPW5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGUucHJvcHN8fHt9KSwuLi5PYmplY3Qua2V5cyhjLnByb3BzfHx7fSldKTtpZihlLnByb3BzJiZjLnByb3BzKWZvcihjb25zdCB2IG9mIGgpe2NvbnN0IGg9ZS5wcm9wc1t2XSxiPWMucHJvcHNbdl07aCYmYj9kLnB1c2goLi4uX2RpZmYoZS5wcm9wcz8uW3ZdLGMucHJvcHM/Llt2XSkpOihofHxiKSYmZC5wdXNoKG5ldyBEaWZmRW50cnkoKGJ8fGgpLmtleSxoPyJyZW1vdmVkIjoiYWRkZWQiLGIsaCkpfXJldHVybiAwPT09aC5zaXplJiZlLmhhc2ghPT1jLmhhc2gmJmQucHVzaChuZXcgRGlmZkVudHJ5KChjfHxlKS5rZXksImNoYW5nZWQiLGMsZSkpLGR9ZnVuY3Rpb24gX3RvSGFzaGVkT2JqZWN0KGUsYz0iIil7aWYoZSYmIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiBuZXcgRGlmZkhhc2hlZE9iamVjdChjLGUsc2VyaWFsaXplKGUpKTtjb25zdCBkPXt9LGg9W107Zm9yKGNvbnN0IHYgaW4gZSlkW3ZdPV90b0hhc2hlZE9iamVjdChlW3ZdLGM/YCR7Y30uJHt2fWA6diksaC5wdXNoKGRbdl0uaGFzaCk7cmV0dXJuIG5ldyBEaWZmSGFzaGVkT2JqZWN0KGMsZSxgeyR7aC5qb2luKCI6Iil9fWAsZCl9Y2xhc3MgRGlmZkVudHJ5e2NvbnN0cnVjdG9yKGUsYyxkLGgpe3RoaXMua2V5PWUsdGhpcy50eXBlPWMsdGhpcy5uZXdWYWx1ZT1kLHRoaXMub2xkVmFsdWU9aH10b1N0cmluZygpe3JldHVybiB0aGlzLnRvSlNPTigpfXRvSlNPTigpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiYWRkZWQiOnJldHVybmBBZGRlZCAgIFxgJHt0aGlzLmtleX1cYGA7Y2FzZSJyZW1vdmVkIjpyZXR1cm5gUmVtb3ZlZCBcYCR7dGhpcy5rZXl9XGBgO2Nhc2UiY2hhbmdlZCI6cmV0dXJuYENoYW5nZWQgXGAke3RoaXMua2V5fVxgIGZyb20gXGAke3RoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCl8fCItIn1cYCB0byBcYCR7dGhpcy5uZXdWYWx1ZS50b1N0cmluZygpfVxgYH19fWNsYXNzIERpZmZIYXNoZWRPYmplY3R7Y29uc3RydWN0b3IoZSxjLGQsaCl7dGhpcy5rZXk9ZSx0aGlzLnZhbHVlPWMsdGhpcy5oYXNoPWQsdGhpcy5wcm9wcz1ofXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJvcHM/YHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oIiwiKX19YDpKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKX10b0pTT04oKXtjb25zdCBlPXRoaXMua2V5fHwiLiI7cmV0dXJuIHRoaXMucHJvcHM/YCR7ZX0oeyR7T2JqZWN0LmtleXModGhpcy5wcm9wcykuam9pbigiLCIpfX0pYDpgJHtlfSgke3RoaXMudmFsdWV9KWB9fWZ1bmN0aW9uIHBpY2soZSxjKXtjb25zdCBkPXt9O2Zvcihjb25zdCBoIG9mIGMpZFtoXT1lW2hdO3JldHVybiBkfWZ1bmN0aW9uIG9taXQoZSxjKXtjb25zdCBkPXsuLi5lfTtmb3IoY29uc3QgZSBvZiBjKWRlbGV0ZSBkW2VdO3JldHVybiBkfWZ1bmN0aW9uIGdldChlLGMsZCl7InN0cmluZyI9PXR5cGVvZiBjJiYoYz1jLnNwbGl0KCIuIikubWFwKGU9Pntjb25zdCBjPU51bWJlcihlKTtyZXR1cm4gTnVtYmVyLmlzTmFOKGMpP2U6Y30pKTtsZXQgaD1lO2Zvcihjb25zdCBlIG9mIGMpe2lmKG51bGw9PWgpcmV0dXJuIGQ7aD1oW2VdfXJldHVybiB2b2lkIDAhPT1oP2g6ZH1mdW5jdGlvbiBsb29zZVRvTnVtYmVyKGUpe2NvbnN0IGM9TnVtYmVyLnBhcnNlRmxvYXQoZSk7cmV0dXJuIE51bWJlci5pc05hTihjKT9lOmN9ZnVuY3Rpb24gY29tcGFyZShlLGMsZCl7cmV0dXJuIHZvaWQgMCE9PWUmJnZvaWQgMCE9PWMmJigic3RyaW5nIj09dHlwZW9mIGU/ZT09PWM6ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZChlLGMpOiJzdHJpbmciPT10eXBlb2YgZD9nZXQoZSxkKT09PWdldChjLGQpOmlzRXF1YWwkMShlLGMpKX1mdW5jdGlvbiBpc0VtcHR5KGUpe2lmKG51bGw9PWUpcmV0dXJuITA7aWYoImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlKXJldHVybiExO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gMD09PWUudHJpbSgpLmxlbmd0aDtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiAwPT09ZS5sZW5ndGg7aWYoZSBpbnN0YW5jZW9mIE1hcHx8ZSBpbnN0YW5jZW9mIFNldClyZXR1cm4gMD09PWUuc2l6ZTtpZihlIGluc3RhbmNlb2YgRGF0ZXx8ZSBpbnN0YW5jZW9mIFJlZ0V4cHx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuITE7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXtmb3IoY29uc3QgYyBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGMpKXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGdldERpc3BsYXlWYWx1ZShlLGMsZD17fSl7Y29uc3R7dmFsdWVLZXk6aCxsYWJlbEtleTp2LGJ5OmJ9PWQseT1lLmZpbmQoZT0+Y29tcGFyZSgib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZoP2dldChlLGgpOmUsYyxiKSk7aWYoaXNFbXB0eShjKSYmeSlyZXR1cm4gdj9nZXQoeSx2KTp2b2lkIDA7aWYoaXNFbXB0eShjKSlyZXR1cm47Y29uc3QgRT15Pz9jO3JldHVybiBudWxsIT1FPyJvYmplY3QiPT10eXBlb2YgRT92P2dldChFLHYpOnZvaWQgMDpTdHJpbmcoRSk6dm9pZCAwfWZ1bmN0aW9uIGlzQXJyYXlPZkFycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGVbMF0pfWZ1bmN0aW9uIG1lcmdlQ2xhc3NlcyhlLGMpe3JldHVybiBlfHxjP1suLi5BcnJheS5pc0FycmF5KGUpP2U6W2VdLGNdLmZpbHRlcihCb29sZWFuKToiIn1mdW5jdGlvbiBnZXRTbG90Q2hpbGRyZW5UZXh0KGUpe3JldHVybiBlLm1hcChlPT5lLmNoaWxkcmVuJiYic3RyaW5nIiE9dHlwZW9mIGUuY2hpbGRyZW4/QXJyYXkuaXNBcnJheShlLmNoaWxkcmVuKT9nZXRTbG90Q2hpbGRyZW5UZXh0KGUuY2hpbGRyZW4pOmUuY2hpbGRyZW4uZGVmYXVsdD9nZXRTbG90Q2hpbGRyZW5UZXh0KGUuY2hpbGRyZW4uZGVmYXVsdCgpKTp2b2lkIDA6ZS5jaGlsZHJlbnx8IiIpLmpvaW4oIiIpfWZ1bmN0aW9uIHRyYW5zZm9ybVVJKGUsYyl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLnJlZHVjZSgoZSxbZCxoXSk9PihlW2RdPSJmdW5jdGlvbiI9PXR5cGVvZiBoP2goe2NsYXNzOmM/LltkXX0pOmgsZSksey4uLmN8fHt9fSl9ZnVuY3Rpb24gYnVpbGRUcmFuc2xhdG9yKGUpe3JldHVybihjLGQpPT5mdW5jdGlvbihlLGMsZCl7Y29uc3QgaD1nZXQoZCxgbWVzc2FnZXMuJHtlfWAsZSk7cmV0dXJuIGgucmVwbGFjZSgvXHsoXHcrKVx9L2csKGUsZCk9PmAke2M/LltkXT8/YHske2R9fWB9YCl9KGMsZCxZbi51bnJlZihlKSl9ZnVuY3Rpb24gZGVmaW5lTG9jYWxlKGUpe3JldHVybiBoKGUse2RpcjoibHRyIn0pfWNvbnN0IFpzPWRlZmluZUxvY2FsZSh7bmFtZToiRW5nbGlzaCIsY29kZToiZW4iLG1lc3NhZ2VzOnthbGVydDp7Y2xvc2U6IkNsb3NlIn0sYXV0aEZvcm06e2hpZGVQYXNzd29yZDoiSGlkZSBwYXNzd29yZCIsc2hvd1Bhc3N3b3JkOiJTaG93IHBhc3N3b3JkIixzdWJtaXQ6IkNvbnRpbnVlIn0sYmFubmVyOntjbG9zZToiQ2xvc2UifSxjYWxlbmRhcjp7bmV4dE1vbnRoOiJOZXh0IG1vbnRoIixuZXh0WWVhcjoiTmV4dCB5ZWFyIixwcmV2TW9udGg6IlByZXZpb3VzIG1vbnRoIixwcmV2WWVhcjoiUHJldmlvdXMgeWVhciJ9LGNhcm91c2VsOntkb3RzOiJDaG9vc2Ugc2xpZGUgdG8gZGlzcGxheSIsZ290bzoiR28gdG8gc2xpZGUge3NsaWRlfSIsbmV4dDoiTmV4dCIscHJldjoiUHJldiJ9LGNoYXRQcm9tcHQ6e3BsYWNlaG9sZGVyOiJUeXBlIHlvdXIgbWVzc2FnZSBoZXJl4oCmIn0sY2hhdFByb21wdFN1Ym1pdDp7bGFiZWw6IlNlbmQgcHJvbXB0In0sY29sb3JNb2RlOntkYXJrOiJEYXJrIixsaWdodDoiTGlnaHQiLHN3aXRjaFRvRGFyazoiU3dpdGNoIHRvIGRhcmsgbW9kZSIsc3dpdGNoVG9MaWdodDoiU3dpdGNoIHRvIGxpZ2h0IG1vZGUiLHN5c3RlbToiU3lzdGVtIn0sY29tbWFuZFBhbGV0dGU6e2JhY2s6IkJhY2siLGNsb3NlOiJDbG9zZSIsbm9EYXRhOiJObyBkYXRhIixub01hdGNoOiJObyBtYXRjaGluZyBkYXRhIixwbGFjZWhvbGRlcjoiVHlwZSBhIGNvbW1hbmQgb3Igc2VhcmNo4oCmIn0sY29udGVudFNlYXJjaDp7bGlua3M6IkxpbmtzIix0aGVtZToiVGhlbWUifSxjb250ZW50U2VhcmNoQnV0dG9uOntsYWJlbDoiU2VhcmNo4oCmIn0sY29udGVudFRvYzp7dGl0bGU6Ik9uIHRoaXMgcGFnZSJ9LGRyb3Bkb3duTWVudTp7bm9NYXRjaDoiTm8gbWF0Y2hpbmcgZGF0YSIsc2VhcmNoOiJTZWFyY2jigKYifSxkYXNoYm9hcmRTZWFyY2g6e3RoZW1lOiJUaGVtZSJ9LGRhc2hib2FyZFNlYXJjaEJ1dHRvbjp7bGFiZWw6IlNlYXJjaOKApiJ9LGRhc2hib2FyZFNpZGViYXJDb2xsYXBzZTp7Y29sbGFwc2U6IkNvbGxhcHNlIHNpZGViYXIiLGV4cGFuZDoiRXhwYW5kIHNpZGViYXIifSxkYXNoYm9hcmRTaWRlYmFyVG9nZ2xlOntjbG9zZToiQ2xvc2Ugc2lkZWJhciIsb3BlbjoiT3BlbiBzaWRlYmFyIn0sZXJyb3I6e2NsZWFyOiJCYWNrIHRvIGhvbWUifSxmaWxlVXBsb2FkOntyZW1vdmVGaWxlOiJSZW1vdmUge2ZpbGVuYW1lfSJ9LGhlYWRlcjp7Y2xvc2U6IkNsb3NlIG1lbnUiLG9wZW46Ik9wZW4gbWVudSJ9LGlucHV0TWVudTp7Y3JlYXRlOidDcmVhdGUgIntsYWJlbH0iJyxub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEifSxpbnB1dE51bWJlcjp7ZGVjcmVtZW50OiJEZWNyZW1lbnQiLGluY3JlbWVudDoiSW5jcmVtZW50In0sbGlzdGJveDp7bm9EYXRhOiJObyBkYXRhIixub01hdGNoOiJObyBtYXRjaGluZyBkYXRhIixzZWFyY2g6IlNlYXJjaOKApiJ9LG1vZGFsOntjbG9zZToiQ2xvc2UifSxwcmljaW5nVGFibGU6e2NhcHRpb246IlByaWNpbmcgcGxhbiBjb21wYXJpc29uIn0scHJvc2U6e2NvZGVDb2xsYXBzZTp7Y2xvc2VUZXh0OiJDb2xsYXBzZSIsbmFtZToiY29kZSIsb3BlblRleHQ6IkV4cGFuZCJ9LGNvbGxhcHNpYmxlOntjbG9zZVRleHQ6IkhpZGUiLG5hbWU6InByb3BlcnRpZXMiLG9wZW5UZXh0OiJTaG93In0scHJlOntjb3B5OiJDb3B5IGNvZGUgdG8gY2xpcGJvYXJkIn0scHJvbXB0Ontjb3B5OiJDb3B5IHByb21wdCIsb3BlbkluOiJPcGVuIGluIHtuYW1lfSJ9fSxjaGF0UmVhc29uaW5nOnt0aGlua2luZzoiVGhpbmtpbmfigKYiLHRob3VnaHQ6IlRob3VnaHQiLHRob3VnaHRGb3I6IlRob3VnaHQgZm9yIHtkdXJhdGlvbn0ifSxzaWRlYmFyOntjbG9zZToiQ2xvc2UiLHRvZ2dsZToiVG9nZ2xlIn0sc2VsZWN0TWVudTp7Y3JlYXRlOidDcmVhdGUgIntsYWJlbH0iJyxub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEiLHNlYXJjaDoiU2VhcmNo4oCmIn0sc2xpZGVvdmVyOntjbG9zZToiQ2xvc2UifSx0YWJsZTp7bm9EYXRhOiJObyBkYXRhIn0sdG9hc3Q6e2Nsb3NlOiJDbG9zZSJ9fX0pLGVsPVN5bWJvbC5mb3IoIm51eHQtdWkubG9jYWxlLWNvbnRleHQiKSx1c2VMb2NhbGU9ZT0+e2NvbnN0IGM9ZXx8WW4udG9SZWYoWW4uaW5qZWN0KGVsLFpzKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybntsYW5nOlluLmNvbXB1dGVkKCgpPT5Zbi51bnJlZihlKS5uYW1lKSxjb2RlOlluLmNvbXB1dGVkKCgpPT5Zbi51bnJlZihlKS5jb2RlKSxkaXI6WW4uY29tcHV0ZWQoKCk9PlluLnVucmVmKGUpLmRpciksbG9jYWxlOlluLmlzUmVmKGUpP2U6WW4ucmVmKGUpLHQ6YnVpbGRUcmFuc2xhdG9yKGUpfX0oWW4uY29tcHV0ZWQoKCk9PmMudmFsdWV8fFpzKSl9LHRsPVN5bWJvbCgibnV4dC11aS5wb3J0YWwtdGFyZ2V0Iik7ZnVuY3Rpb24gdXNlUG9ydGFsKGUpe2NvbnN0IGM9WW4uaW5qZWN0KHRsLHZvaWQgMCksZD1Zbi5jb21wdXRlZCgoKT0+ITA9PT1lLnZhbHVlP2M/LnZhbHVlOmUudmFsdWUpLGg9WW4uY29tcHV0ZWQoKCk9PiJib29sZWFuIj09dHlwZW9mIGQudmFsdWUmJiFkLnZhbHVlKSx2PVluLmNvbXB1dGVkKCgpPT4iYm9vbGVhbiI9PXR5cGVvZiBkLnZhbHVlPyJib2R5IjpkLnZhbHVlKTtyZXR1cm4gWW4uY29tcHV0ZWQoKCk9Pih7dG86di52YWx1ZSxkaXNhYmxlZDpoLnZhbHVlfSkpfWNvbnN0W25sXT1jcmVhdGVDb250ZXh0KCJVVGhlbWUiLCJSb290Q29udGV4dCIpO2Z1bmN0aW9uIHVzZUNvbXBvbmVudFVJKGUsYyl7Y29uc3R7dWk6ZH09bmwoe3VpOlluLmNvbXB1dGVkKCgpPT4oe30pKX0pO3JldHVybiBZbi5jb21wdXRlZCgoKT0+e2NvbnN0IHY9Z2V0KGQudmFsdWUsZSl8fHt9O3JldHVybiBoKGMudWk/P3t9LHYpfSl9Y29uc3Qgb2w9U3ltYm9sKCJudXh0LXVpLnRvYXN0LW1heCIpO2Z1bmN0aW9uIHVzZVRvYXN0KCl7Y29uc3QgZT11c2VTdGF0ZSgidG9hc3RzIiwoKT0+W10pLGM9WW4uaW5qZWN0KG9sLHZvaWQgMCksZD1Zbi5yZWYoITEpLGg9W107cmV0dXJue3RvYXN0czplLGFkZDpmdW5jdGlvbih2KXtjb25zdCBiPXtpZDpgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsOSl9YCxvcGVuOiEwLC4uLnZ9LHk9ZS52YWx1ZS5maW5kSW5kZXgoZT0+ZS5pZD09PWIuaWQpO3JldHVybi0xIT09eT8oZS52YWx1ZVt5XT17Li4uZS52YWx1ZVt5XSwuLi5iLF9kdXBsaWNhdGU6KGUudmFsdWVbeV0uX2R1cGxpY2F0ZXx8MCkrMX0sYik6KGgucHVzaChiKSxhc3luYyBmdW5jdGlvbigpe2lmKCFkLnZhbHVlJiYwIT09aC5sZW5ndGgpe2ZvcihkLnZhbHVlPSEwO2gubGVuZ3RoPjA7KXtjb25zdCBkPWguc2hpZnQoKTthd2FpdCBZbi5uZXh0VGljaygpLGUudmFsdWU9Wy4uLmUudmFsdWUsZF0uc2xpY2UoLShjPy52YWx1ZT8/NSkpfWQudmFsdWU9ITF9fSgpLGIpfSx1cGRhdGU6ZnVuY3Rpb24oYyxkKXtjb25zdCBoPWUudmFsdWUuZmluZEluZGV4KGU9PmUuaWQ9PT1jKTstMSE9PWgmJihlLnZhbHVlW2hdPXsuLi5lLnZhbHVlW2hdLC4uLmQsZHVyYXRpb246ZC5kdXJhdGlvbixvcGVuOiEwLF91cGRhdGVkOiEwfSxZbi5uZXh0VGljaygoKT0+e2NvbnN0IGQ9ZS52YWx1ZS5maW5kSW5kZXgoZT0+ZS5pZD09PWMpOy0xIT09ZCYmZS52YWx1ZVtkXS5fdXBkYXRlZCYmKGUudmFsdWVbZF09ey4uLmUudmFsdWVbZF0sX3VwZGF0ZWQ6dm9pZCAwfSl9KSl9LHJlbW92ZTpmdW5jdGlvbihjKXtjb25zdCBkPWUudmFsdWUuZmluZEluZGV4KGU9PmUuaWQ9PT1jKTstMSE9PWQmJmUudmFsdWVbZF0uX3VwZGF0ZWR8fCgtMSE9PWQmJihlLnZhbHVlW2RdPXsuLi5lLnZhbHVlW2RdLG9wZW46ITF9KSxzZXRUaW1lb3V0KCgpPT57ZS52YWx1ZT1lLnZhbHVlLmZpbHRlcihlPT5lLmlkIT09Yyl9LDIwMCkpfSxjbGVhcjpmdW5jdGlvbigpe2UudmFsdWU9W119fX12YXIgcmw9L1xzKy9nLGN4PSguLi5lKT0+e2NvbnN0IGM9W10sYnVpbGRDbGFzc1N0cmluZz1lPT57aWYoIWUmJjAhPT1lJiYwbiE9PWUpcmV0dXJuO2lmKEFycmF5LmlzQXJyYXkoZSkpe2ZvcihsZXQgYz0wLGQ9ZS5sZW5ndGg7YzxkO2MrKylidWlsZENsYXNzU3RyaW5nKGVbY10pO3JldHVybn1jb25zdCBkPXR5cGVvZiBlO2lmKCJzdHJpbmciPT09ZHx8Im51bWJlciI9PT1kfHwiYmlnaW50Ij09PWQpe2lmKCJudW1iZXIiPT09ZCYmZSE9ZSlyZXR1cm47Yy5wdXNoKFN0cmluZyhlKSl9ZWxzZSBpZigib2JqZWN0Ij09PWQpe2NvbnN0IGQ9T2JqZWN0LmtleXMoZSk7Zm9yKGxldCBoPTAsdj1kLmxlbmd0aDtoPHY7aCsrKXtjb25zdCB2PWRbaF07ZVt2XSYmYy5wdXNoKHYpfX19O2ZvcihsZXQgYz0wLGQ9ZS5sZW5ndGg7YzxkO2MrKyl7Y29uc3QgZD1lW2NdO251bGwhPWQmJmJ1aWxkQ2xhc3NTdHJpbmcoZCl9cmV0dXJuIGMubGVuZ3RoPjA/InN0cmluZyI9PXR5cGVvZihkPWMuam9pbigiICIpKSYmZD9kLnJlcGxhY2UocmwsIiAiKS50cmltKCk6ZDp2b2lkIDA7dmFyIGR9LGZhbHN5VG9TdHJpbmc9ZT0+ITE9PT1lPyJmYWxzZSI6ITA9PT1lPyJ0cnVlIjowPT09ZT8iMCI6ZSxpc0VtcHR5T2JqZWN0PWU9PntpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiEwO2Zvcihjb25zdCBjIGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGZsYXQ9KGUsYyk9Pntmb3IobGV0IGQ9MDtkPGUubGVuZ3RoO2QrKyl7Y29uc3QgaD1lW2RdO0FycmF5LmlzQXJyYXkoaCk/ZmxhdChoLGMpOmgmJmMucHVzaChoKX19LGZsYXRNZXJnZUFycmF5cz0oLi4uZSk9Pntjb25zdCBjPVtdO2ZsYXQoZSxjKTtjb25zdCBkPVtdO2ZvcihsZXQgZT0wO2U8Yy5sZW5ndGg7ZSsrKWNbZV0mJmQucHVzaChjW2VdKTtyZXR1cm4gZH0sbWVyZ2VPYmplY3RzPShlLGMpPT57Y29uc3QgZD17fTtmb3IoY29uc3QgaCBpbiBlKXtjb25zdCB2PWVbaF07aWYoaCBpbiBjKXtjb25zdCBlPWNbaF07QXJyYXkuaXNBcnJheSh2KXx8QXJyYXkuaXNBcnJheShlKT9kW2hdPWZsYXRNZXJnZUFycmF5cyhlLHYpOmRbaF09Im9iamVjdCI9PXR5cGVvZiB2JiYib2JqZWN0Ij09dHlwZW9mIGUmJnYmJmU/bWVyZ2VPYmplY3RzKHYsZSk6ZSsiICIrdn1lbHNlIGRbaF09dn1mb3IoY29uc3QgaCBpbiBjKWggaW4gZXx8KGRbaF09Y1toXSk7cmV0dXJuIGR9LGFsPXt0d01lcmdlOiEwLHR3TWVyZ2VDb25maWc6e319O3ZhciBpbD1mdW5jdGlvbigpe2xldCBlPW51bGwsYz17fSxkPSExO3JldHVybntnZXQgY2FjaGVkVHdNZXJnZSgpe3JldHVybiBlfSxzZXQgY2FjaGVkVHdNZXJnZShjKXtlPWN9LGdldCBjYWNoZWRUd01lcmdlQ29uZmlnKCl7cmV0dXJuIGN9LHNldCBjYWNoZWRUd01lcmdlQ29uZmlnKGUpe2M9ZX0sZ2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2UoKXtyZXR1cm4gZH0sc2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2UoZSl7ZD1lfSxyZXNldCgpe2U9bnVsbCxjPXt9LGQ9ITF9fX0oKSxleGVjdXRlTWVyZ2U9KGUsYyk9Pntjb25zdCBkPWN4KGUpO3JldHVybiBkJiYoYz8udHdNZXJnZT8/MSk/KGlsLmNhY2hlZFR3TWVyZ2UmJiFpbC5kaWRUd01lcmdlQ29uZmlnQ2hhbmdlfHwoaWwuZGlkVHdNZXJnZUNvbmZpZ0NoYW5nZT0hMSxpbC5jYWNoZWRUd01lcmdlPShoPWlsLmNhY2hlZFR3TWVyZ2VDb25maWcsaXNFbXB0eU9iamVjdChoKT9ZcjpleHRlbmRUYWlsd2luZE1lcmdlKHsuLi5oLGV4dGVuZDp7dGhlbWU6aC50aGVtZSxjbGFzc0dyb3VwczpoLmNsYXNzR3JvdXBzLGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczpoLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyxjb25mbGljdGluZ0NsYXNzR3JvdXBzOmguY29uZmxpY3RpbmdDbGFzc0dyb3VwcywuLi5oLmV4dGVuZH19KSkpLGlsLmNhY2hlZFR3TWVyZ2UoZCl8fHZvaWQgMCk6ZDt2YXIgaH0se2NyZWF0ZVRWOnNsfT0oZT0+e2NvbnN0IHR2Mj0oYyxkKT0+e2NvbnN0e2V4dGVuZDpoPW51bGwsc2xvdHM6dj17fSx2YXJpYW50czpiPXt9LGNvbXBvdW5kVmFyaWFudHM6eT1bXSxjb21wb3VuZFNsb3RzOkU9W10sZGVmYXVsdFZhcmlhbnRzOms9e319PWMsXz17Li4uYWwsLi4uZH0sVD1oPy5iYXNlP2N4KGguYmFzZSxjPy5iYXNlKTpjPy5iYXNlLE49aD8udmFyaWFudHMmJiFpc0VtcHR5T2JqZWN0KGgudmFyaWFudHMpP21lcmdlT2JqZWN0cyhiLGgudmFyaWFudHMpOmIsTz1oPy5kZWZhdWx0VmFyaWFudHMmJiFpc0VtcHR5T2JqZWN0KGguZGVmYXVsdFZhcmlhbnRzKT97Li4uaC5kZWZhdWx0VmFyaWFudHMsLi4ua306aztpc0VtcHR5T2JqZWN0KF8udHdNZXJnZUNvbmZpZyl8fCgoZSxjKT0+e2lmKGU9PT1jKXJldHVybiEwO2lmKCFlfHwhYylyZXR1cm4hMTtjb25zdCBkPU9iamVjdC5rZXlzKGUpLGg9T2JqZWN0LmtleXMoYyk7aWYoZC5sZW5ndGghPT1oLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHY9MDt2PGQubGVuZ3RoO3YrKyl7Y29uc3QgYj1kW3ZdO2lmKCFoLmluY2x1ZGVzKGIpKXJldHVybiExO2lmKGVbYl0hPT1jW2JdKXJldHVybiExfXJldHVybiEwfSkoXy50d01lcmdlQ29uZmlnLGlsLmNhY2hlZFR3TWVyZ2VDb25maWcpfHwoaWwuZGlkVHdNZXJnZUNvbmZpZ0NoYW5nZT0hMCxpbC5jYWNoZWRUd01lcmdlQ29uZmlnPV8udHdNZXJnZUNvbmZpZyk7Y29uc3QgUj1pc0VtcHR5T2JqZWN0KGg/LnNsb3RzKSxNPWlzRW1wdHlPYmplY3Qodik/e306e2Jhc2U6Y3goYz8uYmFzZSxSJiZoPy5iYXNlKSwuLi52fSxEPVI/TTooKGUsYyk9Pntmb3IoY29uc3QgZCBpbiBjKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGQpKXtjb25zdCBoPWNbZF07ZVtkXT1kIGluIGU/Y3goZVtkXSxoKTpofXJldHVybiBlfSkoey4uLmg/LnNsb3RzfSxpc0VtcHR5T2JqZWN0KE0pP3tiYXNlOmM/LmJhc2V9Ok0pLEw9aXNFbXB0eU9iamVjdChoPy5jb21wb3VuZFZhcmlhbnRzKT95OmZsYXRNZXJnZUFycmF5cyhoPy5jb21wb3VuZFZhcmlhbnRzLHkpLGNvbXBvbmVudD1jPT57aWYoaXNFbXB0eU9iamVjdChOKSYmaXNFbXB0eU9iamVjdCh2KSYmUilyZXR1cm4gZShULGM/LmNsYXNzLGM/LmNsYXNzTmFtZSkoXyk7aWYoTCYmIUFycmF5LmlzQXJyYXkoTCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJjb21wb3VuZFZhcmlhbnRzIiBwcm9wIG11c3QgYmUgYW4gYXJyYXkuIFJlY2VpdmVkOiAnK3R5cGVvZiBMKTtpZihFJiYhQXJyYXkuaXNBcnJheShFKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImNvbXBvdW5kU2xvdHMiIHByb3AgbXVzdCBiZSBhbiBhcnJheS4gUmVjZWl2ZWQ6ICcrdHlwZW9mIEUpO2NvbnN0IGdldFZhcmlhbnRWYWx1ZT0oZSxkPU4saD1udWxsLHY9bnVsbCk9Pntjb25zdCBiPWRbZV07aWYoIWJ8fGlzRW1wdHlPYmplY3QoYikpcmV0dXJuIG51bGw7Y29uc3QgeT12Py5bZV0/P2M/LltlXTtpZihudWxsPT09eSlyZXR1cm4gbnVsbDtjb25zdCBFPWZhbHN5VG9TdHJpbmcoeSk7aWYoIm9iamVjdCI9PXR5cGVvZiBFKXJldHVybiBudWxsO2NvbnN0IGs9Tz8uW2VdO3JldHVybiBiWyhudWxsIT1FP0U6ZmFsc3lUb1N0cmluZyhrKSl8fCJmYWxzZSJdfSxnZXRWYXJpYW50Q2xhc3NOYW1lc0J5U2xvdEtleT0oZSxjKT0+e2lmKCFOfHwib2JqZWN0IiE9dHlwZW9mIE4pcmV0dXJuIG51bGw7Y29uc3QgZD1bXTtmb3IoY29uc3QgaCBpbiBOKXtjb25zdCB2PWdldFZhcmlhbnRWYWx1ZShoLE4sZSxjKSxiPSJiYXNlIj09PWUmJiJzdHJpbmciPT10eXBlb2Ygdj92OnYmJnZbZV07YiYmZC5wdXNoKGIpfXJldHVybiBkfSxkPXt9O2Zvcihjb25zdCBlIGluIGMpe2NvbnN0IGg9Y1tlXTt2b2lkIDAhPT1oJiYoZFtlXT1oKX1jb25zdCBnZXRDb21wbGV0ZVByb3BzPShlLGgpPT57Y29uc3Qgdj0ib2JqZWN0Ij09dHlwZW9mIGM/LltlXT97W2VdOmNbZV0/LmluaXRpYWx9Ont9O3JldHVybnsuLi5PLC4uLmQsLi4udiwuLi5ofX0sZ2V0Q29tcG91bmRWYXJpYW50c1ZhbHVlPShlPVtdLGMpPT57Y29uc3QgZD1bXSxoPWUubGVuZ3RoO2ZvcihsZXQgdj0wO3Y8aDt2Kyspe2NvbnN0e2NsYXNzOmgsY2xhc3NOYW1lOmIsLi4ueX09ZVt2XTtsZXQgRT0hMDtjb25zdCBrPWdldENvbXBsZXRlUHJvcHMobnVsbCxjKTtmb3IoY29uc3QgZSBpbiB5KXtjb25zdCBjPXlbZV0sZD1rW2VdO2lmKEFycmF5LmlzQXJyYXkoYykpe2lmKCFjLmluY2x1ZGVzKGQpKXtFPSExO2JyZWFrfX1lbHNle2lmKCEobnVsbCE9YyYmITEhPT1jfHxudWxsIT1kJiYhMSE9PWQpKWNvbnRpbnVlO2lmKGQhPT1jKXtFPSExO2JyZWFrfX19RSYmKGgmJmQucHVzaChoKSxiJiZkLnB1c2goYikpfXJldHVybiBkfSxnZXRDb21wb3VuZFZhcmlhbnRDbGFzc05hbWVzQnlTbG90PWM9Pntjb25zdCBkPWdldENvbXBvdW5kVmFyaWFudHNWYWx1ZShMLGMpO2lmKCFBcnJheS5pc0FycmF5KGQpKXJldHVybiBkO2NvbnN0IGg9e30sdj1lO2ZvcihsZXQgZT0wO2U8ZC5sZW5ndGg7ZSsrKXtjb25zdCBjPWRbZV07aWYoInN0cmluZyI9PXR5cGVvZiBjKWguYmFzZT12KGguYmFzZSxjKShfKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgYylmb3IoY29uc3QgZSBpbiBjKWhbZV09dihoW2VdLGNbZV0pKF8pfXJldHVybiBofSxnZXRDb21wb3VuZFNsb3RDbGFzc05hbWVCeVNsb3Q9ZT0+e2lmKEUubGVuZ3RoPDEpcmV0dXJuIG51bGw7Y29uc3QgYz17fSxkPWdldENvbXBsZXRlUHJvcHMobnVsbCxlKTtmb3IobGV0IGU9MDtlPEUubGVuZ3RoO2UrKyl7Y29uc3R7c2xvdHM6aD1bXSxjbGFzczp2LGNsYXNzTmFtZTpiLC4uLnl9PUVbZV07aWYoIWlzRW1wdHlPYmplY3QoeSkpe2xldCBlPSEwO2Zvcihjb25zdCBjIGluIHkpe2NvbnN0IGg9ZFtjXSx2PXlbY107aWYodm9pZCAwPT09aHx8KEFycmF5LmlzQXJyYXkodik/IXYuaW5jbHVkZXMoaCk6diE9PWgpKXtlPSExO2JyZWFrfX1pZighZSljb250aW51ZX1mb3IobGV0IGU9MDtlPGgubGVuZ3RoO2UrKyl7Y29uc3QgZD1oW2VdO2NbZF18fChjW2RdPVtdKSxjW2RdLnB1c2goW3YsYl0pfX1yZXR1cm4gY307aWYoIWlzRW1wdHlPYmplY3Qodil8fCFSKXtjb25zdCBjPXt9O2lmKCJvYmplY3QiPT10eXBlb2YgRCYmIWlzRW1wdHlPYmplY3QoRCkpe2NvbnN0IGQ9ZTtmb3IoY29uc3QgZSBpbiBEKWNbZV09Yz0+e2NvbnN0IGg9Z2V0Q29tcG91bmRWYXJpYW50Q2xhc3NOYW1lc0J5U2xvdChjKSx2PWdldENvbXBvdW5kU2xvdENsYXNzTmFtZUJ5U2xvdChjKTtyZXR1cm4gZChEW2VdLGdldFZhcmlhbnRDbGFzc05hbWVzQnlTbG90S2V5KGUsYyksaD9oW2VdOnZvaWQgMCx2P3ZbZV06dm9pZCAwLGM/LmNsYXNzLGM/LmNsYXNzTmFtZSkoXyl9fXJldHVybiBjfXJldHVybiBlKFQsKCgpPT57aWYoIU4pcmV0dXJuIG51bGw7Y29uc3QgZT1PYmplY3Qua2V5cyhOKSxjPVtdO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtjb25zdCBoPWdldFZhcmlhbnRWYWx1ZShlW2RdLE4pO2gmJmMucHVzaChoKX1yZXR1cm4gY30pKCksZ2V0Q29tcG91bmRWYXJpYW50c1ZhbHVlKEwpLGM/LmNsYXNzLGM/LmNsYXNzTmFtZSkoXyl9O3JldHVybiBjb21wb25lbnQudmFyaWFudEtleXM9KCgpPT57aWYoTiYmIm9iamVjdCI9PXR5cGVvZiBOKXJldHVybiBPYmplY3Qua2V5cyhOKX0pKCksY29tcG9uZW50LmV4dGVuZD1oLGNvbXBvbmVudC5iYXNlPVQsY29tcG9uZW50LnNsb3RzPUQsY29tcG9uZW50LnZhcmlhbnRzPU4sY29tcG9uZW50LmRlZmF1bHRWYXJpYW50cz1PLGNvbXBvbmVudC5jb21wb3VuZFNsb3RzPUUsY29tcG9uZW50LmNvbXBvdW5kVmFyaWFudHM9TCxjb21wb25lbnR9O3JldHVybnt0djp0djIsY3JlYXRlVFY6ZT0+KGMsZCk9PnR2MihjLGQ/bWVyZ2VPYmplY3RzKGUsZCk6ZSl9fSkoKC4uLmUpPT5jPT5leGVjdXRlTWVyZ2UoZSxjKSk7Y29uc3QgbGw9RmEsY2w9c2wobGwudWk/LnR2KSx1bD1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksZGw9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxwbD1PYmplY3QuZnJlZXplKHsuLi51bCwuLi5kbH0pO09iamVjdC5mcmVlemUoey4uLnBsLGJvZHk6IiIsaGlkZGVuOiExfSk7Y29uc3QgZmw9LygtP1swLTkuXSpbMC05XStbMC05Ll0qKS9nLG1sPS9eLT9bMC05Ll0qWzAtOV0rWzAtOS5dKiQvZztmdW5jdGlvbiBjYWxjdWxhdGVTaXplKGUsYyxkKXtpZigxPT09YylyZXR1cm4gZTtpZihkPWR8fDEwMCwibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIE1hdGguY2VpbChlKmMqZCkvZDtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7Y29uc3QgaD1lLnNwbGl0KGZsKTtpZihudWxsPT09aHx8IWgubGVuZ3RoKXJldHVybiBlO2NvbnN0IHY9W107bGV0IGI9aC5zaGlmdCgpLHk9bWwudGVzdChiKTtmb3IoOzspe2lmKHkpe2NvbnN0IGU9cGFyc2VGbG9hdChiKTtpc05hTihlKT92LnB1c2goYik6di5wdXNoKE1hdGguY2VpbChlKmMqZCkvZCl9ZWxzZSB2LnB1c2goYik7aWYoYj1oLnNoaWZ0KCksdm9pZCAwPT09YilyZXR1cm4gdi5qb2luKCIiKTt5PSF5fX1jb25zdCBobD1PYmplY3QuZnJlZXplKHt3aWR0aDpudWxsLGhlaWdodDpudWxsfSksZ2w9T2JqZWN0LmZyZWV6ZSh7Li4uaGwsLi4uZGx9KTtmdW5jdGlvbiBnZXRDb21tb25DU1NSdWxlcyhlKXtjb25zdCBjPXtkaXNwbGF5OiJpbmxpbmUtYmxvY2siLHdpZHRoOiIxZW0iLGhlaWdodDoiMWVtIn0sZD1lLnZhck5hbWU7c3dpdGNoKGUucHNldWRvU2VsZWN0b3ImJihjLmNvbnRlbnQ9IicnIiksZS5tb2RlKXtjYXNlImJhY2tncm91bmQiOmQmJihjWyJiYWNrZ3JvdW5kLWltYWdlIl09InZhcigtLSIrZCsiKSIpLGNbImJhY2tncm91bmQtcmVwZWF0Il09Im5vLXJlcGVhdCIsY1siYmFja2dyb3VuZC1zaXplIl09IjEwMCUgMTAwJSI7YnJlYWs7Y2FzZSJtYXNrIjpjWyJiYWNrZ3JvdW5kLWNvbG9yIl09ImN1cnJlbnRDb2xvciIsZCYmKGNbIm1hc2staW1hZ2UiXT1jWyItd2Via2l0LW1hc2staW1hZ2UiXT0idmFyKC0tIitkKyIpIiksY1sibWFzay1yZXBlYXQiXT1jWyItd2Via2l0LW1hc2stcmVwZWF0Il09Im5vLXJlcGVhdCIsY1sibWFzay1zaXplIl09Y1siLXdlYmtpdC1tYXNrLXNpemUiXT0iMTAwJSAxMDAlIn1yZXR1cm4gY31mdW5jdGlvbiBnZW5lcmF0ZUl0ZW1DU1NSdWxlcyhlLGMpe2NvbnN0IGQ9e30saD1jLnZhck5hbWUsdj1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9ey4uLnBsLC4uLmV9LGg9ey4uLmdsLC4uLmN9LHY9e2xlZnQ6ZC5sZWZ0LHRvcDpkLnRvcCx3aWR0aDpkLndpZHRoLGhlaWdodDpkLmhlaWdodH07bGV0IGI9ZC5ib2R5O1tkLGhdLmZvckVhY2goZT0+e2NvbnN0IGM9W10sZD1lLmhGbGlwLGg9ZS52RmxpcDtsZXQgeSxFPWUucm90YXRlO3N3aXRjaChkP2g/RSs9MjooYy5wdXNoKCJ0cmFuc2xhdGUoIisodi53aWR0aCt2LmxlZnQpLnRvU3RyaW5nKCkrIiAiKygwLXYudG9wKS50b1N0cmluZygpKyIpIiksYy5wdXNoKCJzY2FsZSgtMSAxKSIpLHYudG9wPXYubGVmdD0wKTpoJiYoYy5wdXNoKCJ0cmFuc2xhdGUoIisoMC12LmxlZnQpLnRvU3RyaW5nKCkrIiAiKyh2LmhlaWdodCt2LnRvcCkudG9TdHJpbmcoKSsiKSIpLGMucHVzaCgic2NhbGUoMSAtMSkiKSx2LnRvcD12LmxlZnQ9MCksRTwwJiYoRS09NCpNYXRoLmZsb29yKEUvNCkpLEUlPTQsRSl7Y2FzZSAxOnk9di5oZWlnaHQvMit2LnRvcCxjLnVuc2hpZnQoInJvdGF0ZSg5MCAiK3kudG9TdHJpbmcoKSsiICIreS50b1N0cmluZygpKyIpIik7YnJlYWs7Y2FzZSAyOmMudW5zaGlmdCgicm90YXRlKDE4MCAiKyh2LndpZHRoLzIrdi5sZWZ0KS50b1N0cmluZygpKyIgIisodi5oZWlnaHQvMit2LnRvcCkudG9TdHJpbmcoKSsiKSIpO2JyZWFrO2Nhc2UgMzp5PXYud2lkdGgvMit2LmxlZnQsYy51bnNoaWZ0KCJyb3RhdGUoLTkwICIreS50b1N0cmluZygpKyIgIit5LnRvU3RyaW5nKCkrIikiKX1FJTI9PTEmJih2LmxlZnQhPT12LnRvcCYmKHk9di5sZWZ0LHYubGVmdD12LnRvcCx2LnRvcD15KSx2LndpZHRoIT09di5oZWlnaHQmJih5PXYud2lkdGgsdi53aWR0aD12LmhlaWdodCx2LmhlaWdodD15KSksYy5sZW5ndGgmJihiPWZ1bmN0aW9uKGUsYyxkKXtjb25zdCBoPWZ1bmN0aW9uKGUsYz0iZGVmcyIpe2xldCBkPSIiO2NvbnN0IGg9ZS5pbmRleE9mKCI8IitjKTtmb3IoO2g+PTA7KXtjb25zdCB2PWUuaW5kZXhPZigiPiIsaCksYj1lLmluZGV4T2YoIjwvIitjKTtpZigtMT09PXZ8fC0xPT09YilicmVhaztjb25zdCB5PWUuaW5kZXhPZigiPiIsYik7aWYoLTE9PT15KWJyZWFrO2QrPWUuc2xpY2UodisxLGIpLnRyaW0oKSxlPWUuc2xpY2UoMCxoKS50cmltKCkrZS5zbGljZSh5KzEpfXJldHVybntkZWZzOmQsY29udGVudDplfX0oZSk7cmV0dXJuIHY9aC5kZWZzLGI9YytoLmNvbnRlbnQrZCx2PyI8ZGVmcz4iK3YrIjwvZGVmcz4iK2I6Yjt2YXIgdixifShiLCc8ZyB0cmFuc2Zvcm09IicrYy5qb2luKCIgIikrJyI+JywiPC9nPiIpKX0pO2NvbnN0IHk9aC53aWR0aCxFPWguaGVpZ2h0LGs9di53aWR0aCxfPXYuaGVpZ2h0O2xldCBULE47bnVsbD09PXk/KE49bnVsbD09PUU/IjFlbSI6ImF1dG8iPT09RT9fOkUsVD1jYWxjdWxhdGVTaXplKE4say9fKSk6KFQ9ImF1dG8iPT09eT9rOnksTj1udWxsPT09RT9jYWxjdWxhdGVTaXplKFQsXy9rKToiYXV0byI9PT1FP186RSk7Y29uc3QgTz17fSxzZXRBdHRyPShlLGMpPT57KGU9PiJ1bnNldCI9PT1lfHwidW5kZWZpbmVkIj09PWV8fCJub25lIj09PWUpKGMpfHwoT1tlXT1jLnRvU3RyaW5nKCkpfTtzZXRBdHRyKCJ3aWR0aCIsVCksc2V0QXR0cigiaGVpZ2h0IixOKTtjb25zdCBSPVt2LmxlZnQsdi50b3AsayxfXTtyZXR1cm4gTy52aWV3Qm94PVIuam9pbigiICIpLHthdHRyaWJ1dGVzOk8sdmlld0JveDpSLGJvZHk6Yn19KGUpO2xldCBiPXYudmlld0JveDtiWzJdIT09YlszXSYmKGMuZm9yY2VTcXVhcmU/Yj1mdW5jdGlvbihlKXtjb25zdFtjLGQsaCx2XT1lO2lmKGghPT12KXtjb25zdCBlPU1hdGgubWF4KGgsdik7cmV0dXJuW2MtKGUtaCkvMixkLShlLXYpLzIsZSxlXX1yZXR1cm4gZX0oYik6ZC53aWR0aD1jYWxjdWxhdGVTaXplKCIxZW0iLGJbMl0vYlszXSkpO2NvbnN0IHk9J3VybCgiJytmdW5jdGlvbihlKXtyZXR1cm4iZGF0YTppbWFnZS9zdmcreG1sLCIrZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvIi9nLCInIikucmVwbGFjZSgvJS9nLCIlMjUiKS5yZXBsYWNlKC8jL2csIiUyMyIpLnJlcGxhY2UoLzwvZywiJTNDIikucmVwbGFjZSgvPi9nLCIlM0UiKS5yZXBsYWNlKC9ccysvZywiICIpfShlKX0oZnVuY3Rpb24oZSxjKXtsZXQgZD0tMT09PWUuaW5kZXhPZigieGxpbms6Iik/IiI6JyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayInO2Zvcihjb25zdCBlIGluIGMpZCs9IiAiK2UrJz0iJytjW2VdKyciJztyZXR1cm4nPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciJytkKyI+IitlKyI8L3N2Zz4ifSh2LmJvZHkucmVwbGFjZSgvY3VycmVudENvbG9yL2csYy5jb2xvcnx8ImJsYWNrIikse3ZpZXdCb3g6YCR7YlswXX0gJHtiWzFdfSAke2JbMl19ICR7YlszXX1gLHdpZHRoOmAke2JbMl19YCxoZWlnaHQ6YCR7YlszXX1gfSkpKyciKSc7aWYoaClkWyItLSIraF09eTtlbHNlIHN3aXRjaChjLm1vZGUpe2Nhc2UiYmFja2dyb3VuZCI6ZFsiYmFja2dyb3VuZC1pbWFnZSJdPXk7YnJlYWs7Y2FzZSJtYXNrIjpkWyJtYXNrLWltYWdlIl09ZFsiLXdlYmtpdC1tYXNrLWltYWdlIl09eX1yZXR1cm4gZH1jb25zdCB2bD17c2VsZWN0b3JTdGFydDp7Y29tcHJlc3NlZDoieyIsY29tcGFjdDoiIHsiLGV4cGFuZGVkOiIgeyJ9LHNlbGVjdG9yRW5kOntjb21wcmVzc2VkOiJ9Iixjb21wYWN0OiI7IH1cbiIsZXhwYW5kZWQ6Ijtcbn1cbiJ9LHJ1bGU6e2NvbXByZXNzZWQ6IntrZXl9OiIsY29tcGFjdDoiIHtrZXl9OiAiLGV4cGFuZGVkOiJcbiAge2tleX06ICJ9fTtmdW5jdGlvbiBnZXRJY29uQ1NTKGUsYz17fSl7Y29uc3QgZD1jLmN1c3RvbWlzZT9jLmN1c3RvbWlzZShlLmJvZHkpOmUuYm9keSxoPWMubW9kZXx8KGMuY29sb3J8fCFkLmluY2x1ZGVzKCJjdXJyZW50Q29sb3IiKT8iYmFja2dyb3VuZCI6Im1hc2siKTtsZXQgdj1jLnZhck5hbWU7dm9pZCAwPT09diYmIm1hc2siPT09aCYmKHY9InN2ZyIpO2NvbnN0IGI9ey4uLmMsbW9kZTpoLHZhck5hbWU6dn07ImJhY2tncm91bmQiPT09aCYmZGVsZXRlIGIudmFyTmFtZTtjb25zdCB5PXsuLi5jLnJ1bGVzLC4uLmdldENvbW1vbkNTU1J1bGVzKGIpLC4uLmdlbmVyYXRlSXRlbUNTU1J1bGVzKHsuLi5wbCwuLi5lLGJvZHk6ZH0sYil9O3JldHVybiBmdW5jdGlvbihlLGM9ImV4cGFuZGVkIil7Y29uc3QgZD1bXTtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3R7c2VsZWN0b3I6dixydWxlczpifT1lW2hdO2xldCB5PSh2IGluc3RhbmNlb2YgQXJyYXk/di5qb2luKCJjb21wcmVzc2VkIj09PWM/IiwiOiIsICIpOnYpK3ZsLnNlbGVjdG9yU3RhcnRbY10sRT0hMDtmb3IoY29uc3QgZSBpbiBiKUV8fCh5Kz0iOyIpLHkrPXZsLnJ1bGVbY10ucmVwbGFjZSgie2tleX0iLGUpK2JbZV0sRT0hMTt5Kz12bC5zZWxlY3RvckVuZFtjXSxkLnB1c2goeSl9cmV0dXJuIGQuam9pbigiY29tcHJlc3NlZCI9PT1jPyIiOiJcbiIpfShbe3NlbGVjdG9yOmMuaWNvblNlbGVjdG9yfHwiLmljb24iLHJ1bGVzOnl9XSxiLmZvcm1hdCl9YXN5bmMgZnVuY3Rpb24gbG9hZEljb24oZSxjKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBkPWdldEljb24oZSk7aWYoZClyZXR1cm4gZDtsZXQgaDtjb25zdCB2PShiPWUsbmV3IFByb21pc2UoKGUsYyk9Pntjb25zdCBkPSJzdHJpbmciPT10eXBlb2YgYj9zdHJpbmdUb0ljb24oYiwhMCk6YjtkP2xvYWRJY29ucyhbZHx8Yl0saD0+e2lmKGgubGVuZ3RoJiZkKXtjb25zdCBjPWdldEljb25EYXRhKGQpO2lmKGMpcmV0dXJuIHZvaWQgZSh7Li4uaGksLi4uY30pfWMoYil9KTpjKGIpfSkpLmNhdGNoKCgpPT5udWxsKTt2YXIgYjtyZXR1cm4gYz4wP2F3YWl0IFByb21pc2UucmFjZShbdixuZXcgUHJvbWlzZShlPT57aD1zZXRUaW1lb3V0KCgpPT57ZSgpfSxjKX0pXSkuZmluYWxseSgoKT0+Y2xlYXJUaW1lb3V0KGgpKTphd2FpdCB2LGdldEljb24oZSl9ZnVuY3Rpb24gdXNlUmVzb2x2ZWROYW1lKGUpe2NvbnN0IGM9dXNlQXBwQ29uZmlnKCkuaWNvbixkPShjLmNvbGxlY3Rpb25zfHxbXSkuc29ydCgoZSxjKT0+Yy5sZW5ndGgtZS5sZW5ndGgpO3JldHVybiBZbi5jb21wdXRlZCgoKT0+e2NvbnN0IGg9ZSgpLHY9aC5zdGFydHNXaXRoKGMuY3NzU2VsZWN0b3JQcmVmaXgpP2guc2xpY2UoYy5jc3NTZWxlY3RvclByZWZpeC5sZW5ndGgpOmgsYj1jLmFsaWFzZXM/Llt2XXx8djtpZighYi5pbmNsdWRlcygiOiIpKXtjb25zdCBlPWQuZmluZChlPT5iLnN0YXJ0c1dpdGgoZSsiLSIpKTtyZXR1cm4gZT9lKyI6IitiLnNsaWNlKGUubGVuZ3RoKzEpOmJ9cmV0dXJuIGJ9KX1mdW5jdGlvbiByZXNvbHZlQ3VzdG9taXplRm4oZSxjKXtpZighMSE9PWUpcmV0dXJuITA9PT1lfHxudWxsPT09ZT9jOmV9Y29uc3QgYmw9Ik5VWFRfSUNPTlNfU0VSVkVSX0NTUyI7Y29uc3QgeWw9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0SWNvbkNzcyIscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxjdXN0b21pemU6e3R5cGU6W0Z1bmN0aW9uLEJvb2xlYW4sbnVsbF0sZGVmYXVsdDpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgYz11c2VOdXh0QXBwKCksZD11c2VBcHBDb25maWcoKS5pY29uLGg9WW4uY29tcHV0ZWQoKCk9PmUubmFtZT9kLmNzc1NlbGVjdG9yUHJlZml4K2UubmFtZToiIiksdj1Zbi5jb21wdXRlZCgoKT0+Ii4iK2Z1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbXlx3LV0pL2csIlxcJDEiKX0oaC52YWx1ZSkpO3JldHVybiBZbi5vblNlcnZlclByZWZldGNoKGFzeW5jKCk9Pnt7Y29uc3QgYj11c2VSdW50aW1lQ29uZmlnKCkuaWNvbnx8e307aWYoIWI/LnNlcnZlcktub3duQ3NzQ2xhc3Nlcz8uaW5jbHVkZXMoaC52YWx1ZSkpe2NvbnN0IGg9YXdhaXQgbG9hZEljb24oZS5uYW1lLGQuZmV0Y2hUaW1lb3V0KS5jYXRjaCgoKT0+bnVsbCk7aWYoIWgpcmV0dXJuIG51bGw7bGV0IGI9Yy52dWVBcHAuX2NvbnRleHQucHJvdmlkZXNbYmxdO2lmKGJ8fChiPWMudnVlQXBwLl9jb250ZXh0LnByb3ZpZGVzW2JsXT1uZXcgTWFwLGMucnVuV2l0aENvbnRleHQoKCk9Pnt1c2VIZWFkKHtzdHlsZTpbKCk9PntsZXQgZT1BcnJheS5mcm9tKGIudmFsdWVzKCkpLnNvcnQoKS5qb2luKCIiKTtyZXR1cm4gZC5jc3NMYXllciYmKGU9YEBsYXllciAke2QuY3NzTGF5ZXJ9IHske2V9fWApLHtpbm5lckhUTUw6ZX19XX0se3RhZ1ByaW9yaXR5OiJsb3cifSl9KSksZS5uYW1lJiYhYi5oYXMoZS5uYW1lKSl7Y29uc3QgYz1mdW5jdGlvbihjLGg9ITApe2xldCBiPXYudmFsdWU7ZC5jc3NXaGVyZVBzZXVkbyYmKGI9YDp3aGVyZSgke2J9KWApO2NvbnN0IHk9Z2V0SWNvbkNTUyhjLHtpY29uU2VsZWN0b3I6Yixmb3JtYXQ6ImNvbXByZXNzZWQiLGN1c3RvbWlzZTpyZXNvbHZlQ3VzdG9taXplRm4oZS5jdXN0b21pemUsZC5jdXN0b21pemUpfSk7cmV0dXJuIGQuY3NzTGF5ZXImJmg/YEBsYXllciAke2QuY3NzTGF5ZXJ9IHsgJHt5fSB9YDp5fShoLCExKTtiLnNldChlLm5hbWUsYyl9cmV0dXJuIG51bGx9fX0pLCgpPT5Zbi5oKCJzcGFuIix7Y2xhc3M6WyJpY29uaWZ5IixoLnZhbHVlXX0pfX0pLHhsPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiTnV4dEljb25TdmciLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sY3VzdG9taXplOnt0eXBlOltGdW5jdGlvbixCb29sZWFuLG51bGxdLGRlZmF1bHQ6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUse3Nsb3RzOmN9KXt1c2VOdXh0QXBwKCk7Y29uc3QgZD11c2VBcHBDb25maWcoKS5pY29uLGg9dXNlUmVzb2x2ZWROYW1lKCgpPT5lLm5hbWUpLHY9ImktIitoLnZhbHVlO3JldHVybiBoLnZhbHVlJiZZbi5vblNlcnZlclByZWZldGNoKGFzeW5jKCk9Pnthd2FpdCBMYSh2LGFzeW5jKCk9PmF3YWl0IGxvYWRJY29uKGgudmFsdWUsZC5mZXRjaFRpbWVvdXQpLHtkZWVwOiExfSl9KSwoKT0+WW4uaChHaSx7aWNvbjpoLnZhbHVlLHNzcjohMCxjdXN0b21pc2U6cmVzb2x2ZUN1c3RvbWl6ZUZuKGUuY3VzdG9taXplLGQuY3VzdG9taXplKX0sYyl9fSksU2w9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0SWNvbiIscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxtb2RlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0Om51bGx9LHNpemU6e3R5cGU6W051bWJlcixTdHJpbmddLHJlcXVpcmVkOiExLGRlZmF1bHQ6bnVsbH0sY3VzdG9taXplOnt0eXBlOltGdW5jdGlvbixCb29sZWFuLG51bGxdLGRlZmF1bHQ6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUse3Nsb3RzOmN9KXtjb25zdCBkPXVzZU51eHRBcHAoKSxoPXVzZUFwcENvbmZpZygpLmljb24sdj11c2VSZXNvbHZlZE5hbWUoKCk9PmUubmFtZSksYj1Zbi5jb21wdXRlZCgoKT0+ZC52dWVBcHA/LmNvbXBvbmVudCh2LnZhbHVlKXx8KCJzdmciPT09KGUubW9kZXx8aC5tb2RlKT94bDp5bCkpLHk9WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBjPWUuc2l6ZXx8aC5zaXplO3JldHVybiBjP3tmb250U2l6ZTpOdW1iZXIuaXNOYU4oK2MpP2M6YysicHgifTpudWxsfSk7cmV0dXJuKCk9PlluLmgoYi52YWx1ZSx7Li4uaC5hdHRycyxuYW1lOnYudmFsdWUsY2xhc3M6aC5jbGFzcyxzdHlsZTp5LnZhbHVlLGN1c3RvbWl6ZTplLmN1c3RvbWl6ZX0sYyl9fSksRWw9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGRlZmF1bHQ6U2x9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksd2w9e19fbmFtZToiVUljb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntuYW1lOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LG1vZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY3VzdG9taXplOnt0eXBlOltGdW5jdGlvbixCb29sZWFuLG51bGxdLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgYz11c2VGb3J3YXJkUHJvcHMocmVhY3RpdmVQaWNrKGUsIm1vZGUiLCJzaXplIiwiY3VzdG9taXplIikpO3JldHVybihkLGgsdixiKT0+e2NvbnN0IHk9U2w7InN0cmluZyI9PXR5cGVvZiBlLm5hbWU/aChwZSh5LFluLm1lcmdlUHJvcHMoe25hbWU6ZS5uYW1lfSxZbi51bnJlZihjKSxiKSxudWxsLHYpKTpoZShoLFluLmNyZWF0ZVZOb2RlKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGUubmFtZSksYixudWxsKSx2KX19fSxrbD13bC5zZXR1cDthc3luYyBmdW5jdGlvbiBpbWFnZU1ldGEoZSxjKXtjb25zdCBkPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUpe3tjb25zdCBjPWF3YWl0IGltcG9ydCgiLi9pbmRleC1tSF8wcHZHUC5tanMiKS50aGVuKGU9PmUuaW1hZ2VNZXRhKSxkPWMoYXdhaXQgZmV0Y2goZSkudGhlbihlPT5lLmJ1ZmZlcigpKSk7aWYoIWQpdGhyb3cgbmV3IEVycm9yKGBObyBtZXRhZGF0YSBjb3VsZCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgXGAke2V9XGAuYCk7Y29uc3R7d2lkdGg6aCxoZWlnaHQ6dn09ZDtyZXR1cm57d2lkdGg6aCxoZWlnaHQ6dixyYXRpbzpoJiZ2P2gvdjp2b2lkIDB9fX0oYykuY2F0Y2goZT0+KHt3aWR0aDowLGhlaWdodDowLHJhdGlvOjB9KSk7cmV0dXJuIGR9ZnVuY3Rpb24gY3JlYXRlTWFwcGVyKGUpe3JldHVybiBjPT52b2lkIDAhPT1jP2VbY118fGM6ZS5taXNzaW5nVmFsdWV9ZnVuY3Rpb24gcGFyc2VTaXplKGU9IiIpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5yZXBsYWNlKCJweCIsIiIpLm1hdGNoKC9eXGQrJC9nKT9OdW1iZXIucGFyc2VJbnQoZSwxMCk6dm9pZCAwfWZ1bmN0aW9uIGNyZWF0ZUltYWdlKGUpe2NvbnN0IGM9e29wdGlvbnM6ZX0sZ2V0SW1hZ2U9KGUsZD17fSk9PnJlc29sdmVJbWFnZShjLGUsZCksJGltZz0oZSxjLGQpPT5nZXRJbWFnZShlLGgoe21vZGlmaWVyczpjfSxkKSkudXJsO2Zvcihjb25zdCBjIGluIGUucHJlc2V0cykkaW1nW2NdPShkLGgsdik9PiRpbWcoZCxoLHsuLi5lLnByZXNldHNbY10sLi4udn0pO3JldHVybiAkaW1nLm9wdGlvbnM9ZSwkaW1nLmdldEltYWdlPWdldEltYWdlLCRpbWcuZ2V0TWV0YT0oZSxkKT0+YXN5bmMgZnVuY3Rpb24oZSxjLGQpe2NvbnN0IGg9cmVzb2x2ZUltYWdlKGUsYyx7Li4uZH0pO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBoLmdldE1ldGE/YXdhaXQgaC5nZXRNZXRhKCk6YXdhaXQgaW1hZ2VNZXRhKDAsaC51cmwpfShjLGUsZCksJGltZy5nZXRTaXplcz0oZSxkKT0+ZnVuY3Rpb24oZSxjLGQpe2NvbnN0IHY9Z2V0UHJlc2V0KGUsZC5wcmVzZXQpLGI9aChkLHYpLHk9cGFyc2VTaXplKGIubW9kaWZpZXJzPy53aWR0aCksRT1wYXJzZVNpemUoYi5tb2RpZmllcnM/LmhlaWdodCksaz1iLnNpemVzP2Z1bmN0aW9uKGUpe2NvbnN0IGM9e307aWYoInN0cmluZyI9PXR5cGVvZiBlKWZvcihjb25zdCBkIG9mIGUuc3BsaXQoL1tccyxdKy8pLmZpbHRlcihlPT5lKSl7Y29uc3QgZT1kLnNwbGl0KCI6Iik7MiE9PWUubGVuZ3RoP2NbIjFweCJdPWVbMF0udHJpbSgpOmNbZVswXS50cmltKCldPWVbMV0udHJpbSgpfWVsc2UgT2JqZWN0LmFzc2lnbihjLGUpO3JldHVybiBjfShiLnNpemVzKTp7fSxfPWIuZGVuc2l0aWVzPy50cmltKCksVD1fP2Z1bmN0aW9uKGU9IiIpe2lmKHZvaWQgMD09PWV8fCFlLmxlbmd0aClyZXR1cm5bXTtjb25zdCBjPW5ldyBTZXQ7Zm9yKGNvbnN0IGQgb2YgZS5zcGxpdCgiICIpKXtjb25zdCBlPU51bWJlci5wYXJzZUludChkLnJlcGxhY2UoIngiLCIiKSk7ZSYmYy5hZGQoZSl9cmV0dXJuIEFycmF5LmZyb20oYyl9KF8pOmUub3B0aW9ucy5kZW5zaXRpZXM7IWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImBkZW5zaXRpZXNgIG11c3Qgbm90IGJlIGVtcHR5LCBjb25maWd1cmUgdG8gYDFgIHRvIHJlbmRlciByZWd1bGFyIHNpemUgb25seSAoRFBSIDEuMCkiKX0oVCk7Y29uc3QgTj15JiZFP0UveTowLE89W10sUj1bXTtpZihPYmplY3Qua2V5cyhrKS5sZW5ndGg+PTEpe2Zvcihjb25zdCBoIGluIGspe2NvbnN0IHY9Z2V0U2l6ZXNWYXJpYW50KGgsU3RyaW5nKGtbaF0pLEUsTixlKTtpZih2b2lkIDAhPT12KXtPLnB1c2goe3NpemU6di5zaXplLHNjcmVlbk1heFdpZHRoOnYuc2NyZWVuTWF4V2lkdGgsbWVkaWE6YChtYXgtd2lkdGg6ICR7di5zY3JlZW5NYXhXaWR0aH1weClgfSk7Zm9yKGNvbnN0IGggb2YgVClSLnB1c2goe3dpZHRoOnYuX2NXaWR0aCpoLHNyYzpnZXRWYXJpYW50U3JjKGUsYyxkLHYsaCl9KX19IWZ1bmN0aW9uKGUpe2Uuc29ydCgoZSxjKT0+ZS5zY3JlZW5NYXhXaWR0aC1jLnNjcmVlbk1heFdpZHRoKTtsZXQgYz1udWxsO2ZvcihsZXQgZD1lLmxlbmd0aC0xO2Q+PTA7ZC0tKXtjb25zdCBoPWVbZF07aC5tZWRpYT09PWMmJmUuc3BsaWNlKGQsMSksYz1oLm1lZGlhfWZvcihsZXQgYz0wO2M8ZS5sZW5ndGg7YysrKWVbY10ubWVkaWE9ZVtjKzFdPy5tZWRpYXx8IiJ9KE8pfWVsc2UgZm9yKGNvbnN0IGggb2YgVCl7Y29uc3Qgdj1PYmplY3Qua2V5cyhrKVswXTtsZXQgYj12P2dldFNpemVzVmFyaWFudCh2LFN0cmluZyhrW3ZdKSxFLE4sZSk6dm9pZCAwO3ZvaWQgMD09PWImJihiPXtzaXplOiIiLHNjcmVlbk1heFdpZHRoOjAsX2NXaWR0aDpkLm1vZGlmaWVycz8ud2lkdGgsX2NIZWlnaHQ6ZC5tb2RpZmllcnM/LmhlaWdodH0pLFIucHVzaCh7d2lkdGg6aCxzcmM6Z2V0VmFyaWFudFNyYyhlLGMsZCxiLGgpfSl9IWZ1bmN0aW9uKGUpe2Uuc29ydCgoZSxjKT0+ZS53aWR0aC1jLndpZHRoKTtsZXQgYz1udWxsO2ZvcihsZXQgZD1lLmxlbmd0aC0xO2Q+PTA7ZC0tKXtjb25zdCBoPWVbZF07aC53aWR0aD09PWMmJmUuc3BsaWNlKGQsMSksYz1oLndpZHRofX0oUik7Y29uc3QgTT1SW1IubGVuZ3RoLTFdLEQ9Ty5sZW5ndGg/Ty5tYXAoZT0+YCR7ZS5tZWRpYT9lLm1lZGlhKyIgIjoiIn0ke2Uuc2l6ZX1gKS5qb2luKCIsICIpOnZvaWQgMCxMPUQ/InciOiJ4IiwkPVIubWFwKGU9PmAke2Uuc3JjfSAke2Uud2lkdGh9JHtMfWApLmpvaW4oIiwgIik7cmV0dXJue3NpemVzOkQsc3Jjc2V0OiQsc3JjOk0/LnNyY319KGMsZSxkKSxjLiRpbWc9JGltZywkaW1nfWZ1bmN0aW9uIHJlc29sdmVJbWFnZShjLHYsYil7aWYodiYmInN0cmluZyIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoYGlucHV0IG11c3QgYmUgYSBzdHJpbmcgKHJlY2VpdmVkICR7dHlwZW9mIHZ9OiAke0pTT04uc3RyaW5naWZ5KHYpfSlgKTtpZighdnx8di5zdGFydHNXaXRoKCJkYXRhOiIpKXJldHVybnt1cmw6dn07Y29uc3R7c2V0dXA6eSxkZWZhdWx0czpFfT1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9ZS5vcHRpb25zLnByb3ZpZGVyc1tjXTtpZighZCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJvdmlkZXI6ICIrYyk7cmV0dXJuIGR9KGMsYi5wcm92aWRlcnx8Yy5vcHRpb25zLnByb3ZpZGVyKSxfPXkoKSxUPWdldFByZXNldChjLGIucHJlc2V0KTtpZih2PWUodik/djokKHYpLCFfLnN1cHBvcnRzQWxpYXMpZm9yKGNvbnN0IGUgaW4gYy5vcHRpb25zLmFsaWFzKWlmKHYuc3RhcnRzV2l0aChlKSl7Y29uc3QgaD1jLm9wdGlvbnMuYWxpYXNbZV07aCYmKHY9ZChoLHYuc2xpY2UoZS5sZW5ndGgpKSl9aWYoXy52YWxpZGF0ZURvbWFpbnMmJmUodikpe2NvbnN0IGU9ayh2KS5ob3N0O2lmKCFjLm9wdGlvbnMuZG9tYWlucy5maW5kKGM9PmM9PT1lKSlyZXR1cm57dXJsOnZ9fWNvbnN0IE49aChiLFQsRSksTz17Li4uTixtb2RpZmllcnM6ey4uLk4ubW9kaWZpZXJzLHdpZHRoOk4ubW9kaWZpZXJzPy53aWR0aD9wYXJzZVNpemUoTi5tb2RpZmllcnMud2lkdGgpOnZvaWQgMCxoZWlnaHQ6Ti5tb2RpZmllcnM/LmhlaWdodD9wYXJzZVNpemUoTi5tb2RpZmllcnMuaGVpZ2h0KTp2b2lkIDB9fSxSPV8uZ2V0SW1hZ2UodixPLGMpO3JldHVybiBSLmZvcm1hdHx8PU8ubW9kaWZpZXJzLmZvcm1hdHx8IiIsUn1mdW5jdGlvbiBnZXRQcmVzZXQoZSxjKXtpZighYylyZXR1cm57fTtpZighZS5vcHRpb25zLnByZXNldHNbY10pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByZXNldDogIitjKTtyZXR1cm4gZS5vcHRpb25zLnByZXNldHNbY119ZnVuY3Rpb24gZ2V0U2l6ZXNWYXJpYW50KGUsYyxkLGgsdil7Y29uc3QgYj12Lm9wdGlvbnMuc2NyZWVucyYmdi5vcHRpb25zLnNjcmVlbnNbZV18fE51bWJlci5wYXJzZUludChlKSx5PWMuZW5kc1dpdGgoInZ3Iik7aWYoIXkmJi9eXGQrJC8udGVzdChjKSYmKGMrPSJweCIpLCF5JiYhYy5lbmRzV2l0aCgicHgiKSlyZXR1cm47bGV0IEU9TnVtYmVyLnBhcnNlSW50KGMpO2lmKCFifHwhRSlyZXR1cm47eSYmKEU9TWF0aC5yb3VuZChFLzEwMCpiKSk7cmV0dXJue3NpemU6YyxzY3JlZW5NYXhXaWR0aDpiLF9jV2lkdGg6RSxfY0hlaWdodDpoP01hdGgucm91bmQoRSpoKTpkfX1mdW5jdGlvbiBnZXRWYXJpYW50U3JjKGUsYyxkLGgsdil7cmV0dXJuIGUuJGltZyhjLHsuLi5kLm1vZGlmaWVycyx3aWR0aDpoLl9jV2lkdGg/aC5fY1dpZHRoKnY6dm9pZCAwLGhlaWdodDpoLl9jSGVpZ2h0P2guX2NIZWlnaHQqdjp2b2lkIDB9LGQpfXdsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0ljb24udnVlIiksa2w/a2woZSxjKTp2b2lkIDB9O2NvbnN0IENsPWZ1bmN0aW9uKGU9e30pe2NvbnN0IGM9ZS5mb3JtYXR0ZXIsZD1lLmtleU1hcCYmImZ1bmN0aW9uIiE9dHlwZW9mIGUua2V5TWFwP2NyZWF0ZU1hcHBlcihlLmtleU1hcCk6ZS5rZXlNYXAsaD17fTtmb3IoY29uc3QgYyBpbiBlLnZhbHVlTWFwKXtjb25zdCBkPWMsdj1lLnZhbHVlTWFwW2RdO2hbZF09Im9iamVjdCI9PXR5cGVvZiB2P2NyZWF0ZU1hcHBlcih2KTp2fXJldHVybiB2PT57Y29uc3QgYj1bXTtmb3IoY29uc3QgZSBpbiB2KXtjb25zdCBjPWU7aWYodm9pZCAwPT09dltjXSljb250aW51ZTtjb25zdCB5PSJmdW5jdGlvbiI9PXR5cGVvZiBoW2NdP2hbY10odltjXSk6dltjXTtiLnB1c2goW2Q/ZChjKTpjLHldKX1yZXR1cm4gYz9iLm1hcChlPT5jKC4uLmUpKS5qb2luKGUuam9pbldpdGg/PyImIik6bmV3IFVSTFNlYXJjaFBhcmFtcyhiKS50b1N0cmluZygpfX0oe2tleU1hcDp7d2lkdGg6InciLGhlaWdodDoiaCIsZHByOiJkcHIiLGZpdDoiZml0IixncmF2aXR5OiJnIixxdWFsaXR5OiJxIixmb3JtYXQ6ImYiLHNoYXJwZW46InNoYXJwZW4ifSx2YWx1ZU1hcDp7Zml0Ontjb3ZlcjoiY292ZXIiLGNvbnRhaW46ImNvbnRhaW4iLGZpbGw6InNjYWxlLWRvd24iLG91dHNpZGU6ImNyb3AiLGluc2lkZToicGFkIn0sZ3Jhdml0eTp7YXV0bzoiYXV0byIsc2lkZToic2lkZSJ9fSxqb2luV2l0aDoiLCIsZm9ybWF0dGVyOihlLGMpPT5LKGUsYyl9KSxfbD17fSxUbD17c2NyZWVuczp7c206NjQwLG1kOjc2OCxsZzoxMDI0LHhsOjEyODAsIjJ4bCI6MTUzNn0scHJlc2V0czp7fSxwcm92aWRlcjoiY2xvdWRmbGFyZSIsZG9tYWluczpbXSxhbGlhczp7fSxkZW5zaXRpZXM6WzEsMl0sZm9ybWF0Olsid2VicCJdLHByb3ZpZGVyOiJjbG91ZGZsYXJlIixwcm92aWRlcnM6e2Nsb3VkZmxhcmU6e3NldHVwOmZ1bmN0aW9uKGUpe2xldCBjO3JldHVybigpPT5jfHwoYz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKCk6ZSxjKX0oe2dldEltYWdlOihlLHttb2RpZmllcnM6YyxiYXNlVVJMOmg9Ii8ifSk9Pntjb25zdCB2PXsuLi5fbCwuLi5jfSxiPUNsKHYpO3JldHVybnt1cmw6Yj9kKGgsImNkbi1jZ2kvaW1hZ2UiLGIsZSk6ZX19fSksZGVmYXVsdHM6e319fX0sdXNlSW1hZ2U9ZT0+e2NvbnN0IGM9dXNlUnVudGltZUNvbmZpZygpLGQ9dXNlTnV4dEFwcCgpO3JldHVybiBkLiRpbWd8fGQuX2ltZ3x8KGQuX2ltZz1jcmVhdGVJbWFnZSh7Li4uVGwsZXZlbnQ6ZC5zc3JDb250ZXh0Py5ldmVudCxudXh0OntiYXNlVVJMOmMuYXBwLmJhc2VVUkx9LHJ1bnRpbWVDb25maWc6Y30pKX0sTmw9e19fbmFtZToiTnV4dEltZyIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2N1c3RvbTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpbQm9vbGVhbixTdHJpbmcsTnVtYmVyLEFycmF5XSxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXJDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNyYzp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGZvcm1hdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHF1YWxpdHk6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxiYWNrZ3JvdW5kOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZml0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kaWZpZXJzOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scHJlc2V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJvdmlkZXI6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxkZW5zaXRpZXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVsb2FkOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHdpZHRoOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0saGVpZ2h0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY3Jvc3NvcmlnaW46e3R5cGU6W1N0cmluZyxCb29sZWFuXSxyZXF1aXJlZDohMX0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJsb2FkIiwiZXJyb3IiXSxzZXR1cChlLHtleHBvc2U6YyxlbWl0OmR9KXtjb25zdCBoPWUsdj11c2VJbWFnZSgpLHtwcm92aWRlck9wdGlvbnM6Yixub3JtYWxpemVkQXR0cnM6eSxpbWFnZU1vZGlmaWVyczpFfT0oZT0+e2NvbnN0IGM9dXNlSW1hZ2UoKTtyZXR1cm57cHJvdmlkZXJPcHRpb25zOlluLmNvbXB1dGVkKCgpPT4oe3Byb3ZpZGVyOmUucHJvdmlkZXIscHJlc2V0OmUucHJlc2V0fSkpLG5vcm1hbGl6ZWRBdHRyczpZbi5jb21wdXRlZCgoKT0+KHt3aWR0aDpwYXJzZVNpemUoZS53aWR0aCksaGVpZ2h0OnBhcnNlU2l6ZShlLmhlaWdodCksY3Jvc3NvcmlnaW46ITA9PT1lLmNyb3Nzb3JpZ2luPyJhbm9ueW1vdXMiOmUuY3Jvc3NvcmlnaW58fHZvaWQgMCxub25jZTplLm5vbmNlfSkpLGltYWdlTW9kaWZpZXJzOlluLmNvbXB1dGVkKCgpPT4oey4uLmUubW9kaWZpZXJzLHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0LGZvcm1hdDplLmZvcm1hdCxxdWFsaXR5OmUucXVhbGl0eXx8Yy5vcHRpb25zLnF1YWxpdHksYmFja2dyb3VuZDplLmJhY2tncm91bmQsZml0OmUuZml0fSkpfX0pKGgpLGs9WW4uY29tcHV0ZWQoKCk9PnYuZ2V0U2l6ZXMoaC5zcmMsey4uLmIudmFsdWUsc2l6ZXM6aC5zaXplcyxkZW5zaXRpZXM6aC5kZW5zaXRpZXMsbW9kaWZpZXJzOkUudmFsdWV9KSksXz1Zbi5yZWYoITEpLFQ9WW4udXNlQXR0cnMoKSxOPVluLmNvbXB1dGVkKCgpPT4oey4uLnkudmFsdWUsImRhdGEtbnV4dC1pbWciOiIiLC4uLiFoLnBsYWNlaG9sZGVyfHxfLnZhbHVlP3tzaXplczprLnZhbHVlLnNpemVzLHNyY3NldDprLnZhbHVlLnNyY3NldH06e30sb25lcnJvcjoidGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtZXJyb3InLCAxKSIsLi4uVH0pKSxPPVluLmNvbXB1dGVkKCgpPT57aWYoXy52YWx1ZSlyZXR1cm4hMTtjb25zdCBlPSIiPT09aC5wbGFjZWhvbGRlcj9bMTAsMTBdOmgucGxhY2Vob2xkZXI7aWYoIWUpcmV0dXJuITE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2NvbnN0W2M9MTAsZD1jLHk9NTAsaz0zXT1BcnJheS5pc0FycmF5KGUpP2U6Im51bWJlciI9PXR5cGVvZiBlP1tlXTpbXTtyZXR1cm4gdihoLnNyYyx7Li4uRS52YWx1ZSx3aWR0aDpjLGhlaWdodDpkLHF1YWxpdHk6eSxibHVyOmt9LGIudmFsdWUpfSksUj1Zbi5jb21wdXRlZCgoKT0+aC5zaXplcz9rLnZhbHVlLnNyYzp2KGguc3JjLEUudmFsdWUsYi52YWx1ZSkpLE09WW4uY29tcHV0ZWQoKCk9Pk8udmFsdWV8fFIudmFsdWUpO2lmKGgucHJlbG9hZCl7Y29uc3QgZT1rLnZhbHVlLnNyY3NldC5pbmNsdWRlcygieCwgIiksYz1lfHwhIWsudmFsdWUuc2l6ZXM7dXNlSGVhZCh7bGluazpbe3JlbDoicHJlbG9hZCIsYXM6ImltYWdlIixub25jZTpoLm5vbmNlLGNyb3Nzb3JpZ2luOnkudmFsdWUuY3Jvc3NvcmlnaW4saHJlZjpjP2sudmFsdWUuc3JjOk0udmFsdWUsLi4uay52YWx1ZS5zaXplcyYme2ltYWdlc2l6ZXM6ay52YWx1ZS5zaXplc30sLi4uZSYme2ltYWdlc3Jjc2V0OmsudmFsdWUuc3Jjc2V0fSwuLi4iYm9vbGVhbiIhPXR5cGVvZiBoLnByZWxvYWQmJmgucHJlbG9hZC5mZXRjaFByaW9yaXR5P3tmZXRjaHByaW9yaXR5OmgucHJlbG9hZC5mZXRjaFByaW9yaXR5fTp7fX1dfSl9dXNlTnV4dEFwcCgpLmlzSHlkcmF0aW5nO2NvbnN0IEQ9WW4udXNlVGVtcGxhdGVSZWYoImltZ0VsIik7cmV0dXJuIGMoe2ltZ0VsOkR9KSwoYyxkLGgsdik9PntlLmN1c3RvbT9mZShjLiRzbG90cywiZGVmYXVsdCIse2ltZ0F0dHJzOk4udmFsdWUsaXNMb2FkZWQ6Xy52YWx1ZSxzcmM6TS52YWx1ZX0sbnVsbCxkLGgpOmQoYDxpbWcke2JlKFluLm1lcmdlUHJvcHMoe3JlZl9rZXk6ImltZ0VsIixyZWY6RCxjbGFzczpPLnZhbHVlP2UucGxhY2Vob2xkZXJDbGFzczp2b2lkIDB9LE4udmFsdWUse3NyYzpNLnZhbHVlfSx2KSl9PmApfX19LEFsPU5sLnNldHVwO05sLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQraW1hZ2VAMi4wLjBfQHVwc3Rhc2grcmVkaXNAMS4zNy4wX2RiMEAwLjMuNF9AbGlic3FsK2NsaWVudEAwLjE3LjNfZHJpenpsZS1vcm1AMC40XzdhMjZiYTk5NmZkMTI5MTRiNGY5NmJmMmQzMGVmZDcxL25vZGVfbW9kdWxlcy9AbnV4dC9pbWFnZS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9OdXh0SW1nLnZ1ZSIpLEFsP0FsKGUsYyk6dm9pZCAwfTtjb25zdCBPbD1PYmplY3QuYXNzaWduKE5sLHtfX25hbWU6Ik51eHRJbWcifSksSWw9U3ltYm9sKCJudXh0LXVpLmF2YXRhci1ncm91cCIpO2Z1bmN0aW9uIHVzZUF2YXRhckdyb3VwKGUpe2NvbnN0IGM9WW4uaW5qZWN0KElsLHZvaWQgMCksZD1Zbi5jb21wdXRlZCgoKT0+ZS5zaXplPz9jPy52YWx1ZS5zaXplKTtyZXR1cm4gWW4ucHJvdmlkZShJbCxZbi5jb21wdXRlZCgoKT0+KHtzaXplOmQudmFsdWV9KSkpLHtzaXplOmR9fWNvbnN0IFJsPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wIixiYXNlOiJyb3VuZGVkLWZ1bGwgcmluZyByaW5nLWJnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtaW52ZXJ0ZWQgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6ImJnLXByaW1hcnkiLHNlY29uZGFyeToiYmctc2Vjb25kYXJ5IixzdWNjZXNzOiJiZy1zdWNjZXNzIixpbmZvOiJiZy1pbmZvIix3YXJuaW5nOiJiZy13YXJuaW5nIixlcnJvcjoiYmctZXJyb3IiLG5ldXRyYWw6ImJnLWludmVydGVkIn0sc2l6ZTp7IjN4cyI6ImgtWzRweF0gbWluLXctWzRweF0gdGV4dC1bNHB4XSIsIjJ4cyI6ImgtWzVweF0gbWluLXctWzVweF0gdGV4dC1bNXB4XSIseHM6ImgtWzZweF0gbWluLXctWzZweF0gdGV4dC1bNnB4XSIsc206ImgtWzdweF0gbWluLXctWzdweF0gdGV4dC1bN3B4XSIsbWQ6ImgtWzhweF0gbWluLXctWzhweF0gdGV4dC1bOHB4XSIsbGc6ImgtWzlweF0gbWluLXctWzlweF0gdGV4dC1bOXB4XSIseGw6ImgtWzEwcHhdIG1pbi13LVsxMHB4XSB0ZXh0LVsxMHB4XSIsIjJ4bCI6ImgtWzExcHhdIG1pbi13LVsxMXB4XSB0ZXh0LVsxMXB4XSIsIjN4bCI6ImgtWzEycHhdIG1pbi13LVsxMnB4XSB0ZXh0LVsxMnB4XSJ9LHBvc2l0aW9uOnsidG9wLXJpZ2h0IjoidG9wLTAgcmlnaHQtMCIsImJvdHRvbS1yaWdodCI6ImJvdHRvbS0wIHJpZ2h0LTAiLCJ0b3AtbGVmdCI6InRvcC0wIGxlZnQtMCIsImJvdHRvbS1sZWZ0IjoiYm90dG9tLTAgbGVmdC0wIn0saW5zZXQ6e2ZhbHNlOiIifSxzdGFuZGFsb25lOntmYWxzZToiYWJzb2x1dGUifX0sY29tcG91bmRWYXJpYW50czpbe3Bvc2l0aW9uOiJ0b3AtcmlnaHQiLGluc2V0OiExLGNsYXNzOiItdHJhbnNsYXRlLXktMS8yIHRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1yaWdodCIsaW5zZXQ6ITEsY2xhc3M6InRyYW5zbGF0ZS15LTEvMiB0cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn0se3Bvc2l0aW9uOiJ0b3AtbGVmdCIsaW5zZXQ6ITEsY2xhc3M6Ii10cmFuc2xhdGUteS0xLzIgLXRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1sZWZ0IixpbnNldDohMSxjbGFzczoidHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iixwb3NpdGlvbjoidG9wLXJpZ2h0In19LFBsPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNoaXAiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOlluLm1lcmdlTW9kZWxzKHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0ZXh0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwb3NpdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHN0YW5kYWxvbmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSx7c2hvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHNob3dNb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpzaG93Il0sc2V0dXAoZSl7Y29uc3QgYz1lLGQ9WW4udXNlTW9kZWwoZSwic2hvdyIse3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSkse3NpemU6aH09dXNlQXZhdGFyR3JvdXAoYyksdj11c2VBcHBDb25maWcoKSxiPXVzZUNvbXBvbmVudFVJKCJjaGlwIixjKSx5PVluLmNvbXB1dGVkKCgpPT5jbCh7ZXh0ZW5kOmNsKFJsKSwuLi52LnVpPy5jaGlwfHx7fX0pKHtjb2xvcjpjLmNvbG9yLHNpemU6aC52YWx1ZSxwb3NpdGlvbjpjLnBvc2l0aW9uLGluc2V0OmMuaW5zZXQsc3RhbmRhbG9uZTpjLnN0YW5kYWxvbmV9KSk7cmV0dXJuKGgsdixFLGspPT57dihwZShZbi51bnJlZihncyksWW4ubWVyZ2VQcm9wcyh7YXM6ZS5hcywiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6eS52YWx1ZS5yb290KHtjbGFzczpbWW4udW5yZWYoYik/LnJvb3QsYy5jbGFzc119KX0saykse2RlZmF1bHQ6WW4ud2l0aEN0eCgoYyx2LEUsayk9PntpZighdilyZXR1cm5bWW4uY3JlYXRlVk5vZGUoWW4udW5yZWYobXMpLGguJGF0dHJzLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGguJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSxkLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczp5LnZhbHVlLmJhc2Uoe2NsYXNzOlluLnVucmVmKGIpPy5iYXNlfSl9LFtZbi5yZW5kZXJTbG90KGguJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+W1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS50ZXh0KSwxKV0pXSwyKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07dihwZShZbi51bnJlZihtcyksaC4kYXR0cnMse2RlZmF1bHQ6WW4ud2l0aEN0eCgoZSxjLGQsdik9PntpZighYylyZXR1cm5bWW4ucmVuZGVyU2xvdChoLiRzbG90cywiZGVmYXVsdCIpXTtmZShoLiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxjLGQsdil9KSxfOjN9LEUsaykpLGQudmFsdWU/KHYoYDxzcGFuIGRhdGEtc2xvdD0iYmFzZSIgY2xhc3M9IiR7bWUoeS52YWx1ZS5iYXNlKHtjbGFzczpZbi51bnJlZihiKT8uYmFzZX0pKX0iJHtrfT5gKSxmZShoLiRzbG90cywiY29udGVudCIse30sKCk9Pnt2KGAke3llKGUudGV4dCl9YCl9LHYsRSxrKSx2KCI8L3NwYW4+IikpOnYoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sRSkpfX19KSxNbD1QbC5zZXR1cDtQbC5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9DaGlwLnZ1ZSIpLE1sP01sKGUsYyk6dm9pZCAwfTtjb25zdCBEbD17c2xvdHM6e3Jvb3Q6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzaHJpbmstMCBzZWxlY3Qtbm9uZSByb3VuZGVkLWZ1bGwgYWxpZ24tbWlkZGxlIGJnLWVsZXZhdGVkIixpbWFnZToiaC1mdWxsIHctZnVsbCByb3VuZGVkLVtpbmhlcml0XSBvYmplY3QtY292ZXIiLGZhbGxiYWNrOiJmb250LW1lZGl1bSB0ZXh0LW11dGVkIHRydW5jYXRlIixpY29uOiJ0ZXh0LW11dGVkIHNocmluay0wIn0sdmFyaWFudHM6e3NpemU6eyIzeHMiOntyb290OiJzaXplLTQgdGV4dC1bOHB4XSJ9LCIyeHMiOntyb290OiJzaXplLTUgdGV4dC1bMTBweF0ifSx4czp7cm9vdDoic2l6ZS02IHRleHQteHMifSxzbTp7cm9vdDoic2l6ZS03IHRleHQtc20ifSxtZDp7cm9vdDoic2l6ZS04IHRleHQtYmFzZSJ9LGxnOntyb290OiJzaXplLTkgdGV4dC1sZyJ9LHhsOntyb290OiJzaXplLTEwIHRleHQteGwifSwiMnhsIjp7cm9vdDoic2l6ZS0xMSB0ZXh0LVsyMnB4XSJ9LCIzeGwiOntyb290OiJzaXplLTEyIHRleHQtMnhsIn19fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIn19LEJsPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUF2YXRhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNyYzp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFsdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGV4dDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hpcDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzdHlsZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPWUsZD1Zbi5jb21wdXRlZCgoKT0+InN0cmluZyI9PXR5cGVvZiBjLmFzfHwiZnVuY3Rpb24iPT10eXBlb2YgYy5hcz8ucmVuZGVyP3tyb290OmMuYXN9OmgoYy5hcyx7cm9vdDoic3BhbiJ9KSksdj1Zbi5jb21wdXRlZCgoKT0+Yy50ZXh0fHwoYy5hbHR8fCIiKS5zcGxpdCgiICIpLm1hcChlPT5lLmNoYXJBdCgwKSkuam9pbigiIikuc3Vic3RyaW5nKDAsMikpLGI9dXNlQXBwQ29uZmlnKCkseT11c2VDb21wb25lbnRVSSgiYXZhdGFyIixjKSx7c2l6ZTpFfT11c2VBdmF0YXJHcm91cChjKSxrPVluLmNvbXB1dGVkKCgpPT5jbCh7ZXh0ZW5kOmNsKERsKSwuLi5iLnVpPy5hdmF0YXJ8fHt9fSkoe3NpemU6RS52YWx1ZX0pKSxfPVluLmNvbXB1dGVkKCgpPT5rLnZhbHVlLnJvb3Qoe2NsYXNzOlt5LnZhbHVlPy5yb290LGMuY2xhc3NdfSkpLFQ9WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPV8udmFsdWUuc3BsaXQoIiAiKS5maW5kKGU9Pi9ec2l6ZS1cZCskLy50ZXN0KGUpKTtpZihlKXtjb25zdCBjPU51bWJlci5wYXJzZUZsb2F0KGUuc3BsaXQoIi0iKVsxXT8/IiIpO2lmKCFOdW1iZXIuaXNOYU4oYykpcmV0dXJuIDQqY31yZXR1cm4gbnVsbH0pLE49WW4ucmVmKCExKTtmdW5jdGlvbiBvbkVycm9yKCl7Ti52YWx1ZT0hMH1yZXR1cm4gWW4ud2F0Y2goKCk9PmMuc3JjLCgpPT57Ti52YWx1ZSYmKE4udmFsdWU9ITEpfSksKGgsYixFLE8pPT57aGUoYixZbi5jcmVhdGVWTm9kZShZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChjLmNoaXA/UGw6WW4udW5yZWYoZ3MpKSxZbi5tZXJnZVByb3BzKHthczpkLnZhbHVlLnJvb3R9LGMuY2hpcD8ib2JqZWN0Ij09dHlwZW9mIGMuY2hpcD97aW5zZXQ6ITAsLi4uYy5jaGlwfTp7aW5zZXQ6ITB9Ont9LHsiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Xy52YWx1ZSxzdHlsZTpjLnN0eWxlfSxPKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChjLGIsRSxfKT0+e2lmKCFiKXJldHVybltlLnNyYyYmIU4udmFsdWU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGQudmFsdWUuaW1nfHxZbi51bnJlZihPbCkpLFluLm1lcmdlUHJvcHMoe2tleTowLHNyYzplLnNyYyxhbHQ6ZS5hbHQsd2lkdGg6VC52YWx1ZSxoZWlnaHQ6VC52YWx1ZX0saC4kYXR0cnMseyJkYXRhLXNsb3QiOiJpbWFnZSIsY2xhc3M6ay52YWx1ZS5pbWFnZSh7Y2xhc3M6WW4udW5yZWYoeSk/LmltYWdlfSksb25FcnJvcjpvbkVycm9yfSksbnVsbCwxNixbInNyYyIsImFsdCIsIndpZHRoIiwiaGVpZ2h0IiwiY2xhc3MiXSkpOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihtcyksWW4ubWVyZ2VQcm9wcyh7a2V5OjF9LGguJGF0dHJzKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChoLiRzbG90cywiZGVmYXVsdCIse30sKCk9PltlLmljb24/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKHdsLHtrZXk6MCxuYW1lOmUuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6ay52YWx1ZS5pY29uKHtjbGFzczpZbi51bnJlZih5KT8uaWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJmYWxsYmFjayIsY2xhc3M6ay52YWx1ZS5mYWxsYmFjayh7Y2xhc3M6WW4udW5yZWYoeSk/LmZhbGxiYWNrfSl9LFluLnRvRGlzcGxheVN0cmluZyh2LnZhbHVlfHwiwqAiKSwzKSldKV0pLF86M30sMTYpKV07ZS5zcmMmJiFOLnZhbHVlP2hlKGIsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZC52YWx1ZS5pbWd8fFluLnVucmVmKE9sKSksWW4ubWVyZ2VQcm9wcyh7c3JjOmUuc3JjLGFsdDplLmFsdCx3aWR0aDpULnZhbHVlLGhlaWdodDpULnZhbHVlfSxoLiRhdHRycyx7ImRhdGEtc2xvdCI6ImltYWdlIixjbGFzczprLnZhbHVlLmltYWdlKHtjbGFzczpZbi51bnJlZih5KT8uaW1hZ2V9KSxvbkVycm9yOm9uRXJyb3J9KSxudWxsKSxFLF8pOmIocGUoWW4udW5yZWYobXMpLGguJGF0dHJzLHtkZWZhdWx0OlluLndpdGhDdHgoKGMsZCxiLEUpPT57aWYoIWQpcmV0dXJuW1luLnJlbmRlclNsb3QoaC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bZS5pY29uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayh3bCx7a2V5OjAsbmFtZTplLmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOmsudmFsdWUuaWNvbih7Y2xhc3M6WW4udW5yZWYoeSk/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiZmFsbGJhY2siLGNsYXNzOmsudmFsdWUuZmFsbGJhY2soe2NsYXNzOlluLnVucmVmKHkpPy5mYWxsYmFja30pfSxZbi50b0Rpc3BsYXlTdHJpbmcodi52YWx1ZXx8IsKgIiksMykpXSldO2ZlKGguJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+e2UuaWNvbj9kKHBlKHdsLHtuYW1lOmUuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6ay52YWx1ZS5pY29uKHtjbGFzczpZbi51bnJlZih5KT8uaWNvbn0pfSxudWxsLGIsRSkpOmQoYDxzcGFuIGRhdGEtc2xvdD0iZmFsbGJhY2siIGNsYXNzPSIke21lKGsudmFsdWUuZmFsbGJhY2soe2NsYXNzOlluLnVucmVmKHkpPy5mYWxsYmFja30pKX0iJHtFfT4ke3llKHYudmFsdWV8fCLCoCIpfTwvc3Bhbj5gKX0sZCxiLEUpfSksXzozfSxFLF8pKX0pLF86M30pLEUpfX19KSxMbD1CbC5zZXR1cDtmdW5jdGlvbiB1c2VDb21wb25lbnRJY29ucyhlKXtjb25zdCBjPXVzZUFwcENvbmZpZygpLGQ9WW4uY29tcHV0ZWQoKCk9PlluLnRvVmFsdWUoZSkpLGg9WW4uY29tcHV0ZWQoKCk9PmQudmFsdWUuaWNvbiYmZC52YWx1ZS5sZWFkaW5nfHxkLnZhbHVlLmljb24mJiFkLnZhbHVlLnRyYWlsaW5nfHxkLnZhbHVlLmxvYWRpbmcmJiFkLnZhbHVlLnRyYWlsaW5nfHwhIWQudmFsdWUubGVhZGluZ0ljb24pLHY9WW4uY29tcHV0ZWQoKCk9PmQudmFsdWUuaWNvbiYmZC52YWx1ZS50cmFpbGluZ3x8ZC52YWx1ZS5sb2FkaW5nJiZkLnZhbHVlLnRyYWlsaW5nfHwhIWQudmFsdWUudHJhaWxpbmdJY29uKSxiPVluLmNvbXB1dGVkKCgpPT5kLnZhbHVlLmxvYWRpbmc/ZC52YWx1ZS5sb2FkaW5nSWNvbnx8Yy51aS5pY29ucy5sb2FkaW5nOmQudmFsdWUubGVhZGluZ0ljb258fGQudmFsdWUuaWNvbikseT1Zbi5jb21wdXRlZCgoKT0+ZC52YWx1ZS5sb2FkaW5nJiYhaC52YWx1ZT9kLnZhbHVlLmxvYWRpbmdJY29ufHxjLnVpLmljb25zLmxvYWRpbmc6ZC52YWx1ZS50cmFpbGluZ0ljb258fGQudmFsdWUuaWNvbik7cmV0dXJue2lzTGVhZGluZzpoLGlzVHJhaWxpbmc6dixsZWFkaW5nSWNvbk5hbWU6Yix0cmFpbGluZ0ljb25OYW1lOnl9fUJsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0F2YXRhci52dWUiKSxMbD9MbChlLGMpOnZvaWQgMH07Y29uc3Qgamw9U3ltYm9sKCJudXh0LXVpLmZpZWxkLWdyb3VwIik7ZnVuY3Rpb24gdXNlRmllbGRHcm91cChlKXtjb25zdCBjPVluLmluamVjdChqbCx2b2lkIDApO3JldHVybntvcmllbnRhdGlvbjpZbi5jb21wdXRlZCgoKT0+Yz8udmFsdWUub3JpZW50YXRpb24pLHNpemU6WW4uY29tcHV0ZWQoKCk9PmU/LnNpemU/P2M/LnZhbHVlLnNpemUpfX1jb25zdCAkbD1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IkZpZWxkR3JvdXBSZXNldCIsc2V0dXA6KGUse3Nsb3RzOmN9KT0+KFluLnByb3ZpZGUoamwsWW4uY29tcHV0ZWQoKCk9Pih7c2l6ZTp2b2lkIDAsb3JpZW50YXRpb246dm9pZCAwfSkpKSwoKT0+Yy5kZWZhdWx0Py4oKSl9KSxGbD1TeW1ib2woIm51eHQtdWkuZm9ybS1vcHRpb25zIiksVmw9U3ltYm9sKCJudXh0LXVpLmZvcm0tZXZlbnRzIiksemw9U3ltYm9sKCJudXh0LXVpLmZvcm0tc3RhdGUiKSxxbD1TeW1ib2woIm51eHQtdWkuZm9ybS1maWVsZCIpLFVsPVN5bWJvbCgibnV4dC11aS5pbnB1dC1pZCIpLEhsPVN5bWJvbCgibnV4dC11aS5mb3JtLWlucHV0cyIpLEdsPVN5bWJvbCgibnV4dC11aS5mb3JtLWxvYWRpbmciKSxXbD1TeW1ib2woIm51eHQtdWkuZm9ybS1lcnJvcnMiKTtmdW5jdGlvbiB1c2VGb3JtRmllbGQoZSxjKXtjb25zdCBkPVluLmluamVjdChGbCx2b2lkIDApLGg9WW4uaW5qZWN0KFZsLHZvaWQgMCksdj1Zbi5pbmplY3QocWwsdm9pZCAwKSxiPVluLmluamVjdChVbCx2b2lkIDApO2Z1bmN0aW9uIGVtaXRGb3JtRXZlbnQoZSxjLGQpe2gmJnYmJmMmJmguZW1pdCh7dHlwZTplLG5hbWU6YyxlYWdlcjpkfSl9WW4ucHJvdmlkZShxbCx2b2lkIDApLHYmJmImJighMT09PWM/LmJpbmQ/Yi52YWx1ZT12b2lkIDA6ZT8uaWQmJihiLnZhbHVlPWU/LmlkKSk7Y29uc3QgeT11c2VEZWJvdW5jZUZuKCgpPT57ZW1pdEZvcm1FdmVudCgiaW5wdXQiLHY/LnZhbHVlLm5hbWUsIWM/LmRlZmVySW5wdXRWYWxpZGF0aW9ufHx2Py52YWx1ZS5lYWdlclZhbGlkYXRpb24pfSx2Py52YWx1ZS52YWxpZGF0ZU9uSW5wdXREZWxheT8/ZD8udmFsdWUudmFsaWRhdGVPbklucHV0RGVsYXk/PzApO3JldHVybntpZDpZbi5jb21wdXRlZCgoKT0+ZT8uaWQ/P2I/LnZhbHVlKSxuYW1lOlluLmNvbXB1dGVkKCgpPT5lPy5uYW1lPz92Py52YWx1ZS5uYW1lKSxzaXplOlluLmNvbXB1dGVkKCgpPT5lPy5zaXplPz92Py52YWx1ZS5zaXplKSxjb2xvcjpZbi5jb21wdXRlZCgoKT0+dj8udmFsdWUuZXJyb3I/ImVycm9yIjplPy5jb2xvciksaGlnaGxpZ2h0OlluLmNvbXB1dGVkKCgpPT4hIXY/LnZhbHVlLmVycm9yfHxlPy5oaWdobGlnaHQpLGRpc2FibGVkOlluLmNvbXB1dGVkKCgpPT5kPy52YWx1ZS5kaXNhYmxlZHx8ZT8uZGlzYWJsZWQpLGVtaXRGb3JtQmx1cjpmdW5jdGlvbigpe2VtaXRGb3JtRXZlbnQoImJsdXIiLHY/LnZhbHVlLm5hbWUpfSxlbWl0Rm9ybUlucHV0OnksZW1pdEZvcm1DaGFuZ2U6ZnVuY3Rpb24oKXtlbWl0Rm9ybUV2ZW50KCJjaGFuZ2UiLHY/LnZhbHVlLm5hbWUpfSxlbWl0Rm9ybUZvY3VzOmZ1bmN0aW9uKCl7ZW1pdEZvcm1FdmVudCgiZm9jdXMiLHY/LnZhbHVlLm5hbWUpfSxhcmlhQXR0cnM6WW4uY29tcHV0ZWQoKCk9PntpZighdj8udmFsdWUpcmV0dXJuO2NvbnN0IGU9WyJlcnJvciIsImhpbnQiLCJkZXNjcmlwdGlvbiIsImhlbHAiXS5maWx0ZXIoZT0+dj8udmFsdWU/LltlXSkubWFwKGU9PmAke3Y/LnZhbHVlLmFyaWFJZH0tJHtlfWApfHxbXSxjPXsiYXJpYS1pbnZhbGlkIjohIXY/LnZhbHVlLmVycm9yfTtyZXR1cm4gZS5sZW5ndGg+MCYmKGNbImFyaWEtZGVzY3JpYmVkYnkiXT1lLmpvaW4oIiAiKSksY30pfX1jb25zdCBYbD1bImFjdGl2ZSIsImFjdGl2ZUNsYXNzIiwiYXJpYUN1cnJlbnRWYWx1ZSIsImFzIiwiZGlzYWJsZWQiLCJkb3dubG9hZCIsImV4YWN0IiwiZXhhY3RBY3RpdmVDbGFzcyIsImV4YWN0SGFzaCIsImV4YWN0UXVlcnkiLCJleHRlcm5hbCIsImZvcm0iLCJmb3JtYWN0aW9uIiwiZm9ybWVuY3R5cGUiLCJmb3JtbWV0aG9kIiwiZm9ybW5vdmFsaWRhdGUiLCJmb3JtdGFyZ2V0IiwiaHJlZiIsImhyZWZsYW5nIiwiaW5hY3RpdmVDbGFzcyIsIm1lZGlhIiwibm9QcmVmZXRjaCIsIm5vUmVsIiwib25DbGljayIsInBpbmciLCJwcmVmZXRjaCIsInByZWZldGNoT24iLCJwcmVmZXRjaGVkQ2xhc3MiLCJyZWZlcnJlcnBvbGljeSIsInJlbCIsInJlcGxhY2UiLCJ0YXJnZXQiLCJ0aXRsZSIsInRvIiwidHJhaWxpbmdTbGFzaCIsInR5cGUiLCJ2aWV3VHJhbnNpdGlvbiJdO2Z1bmN0aW9uIHBpY2tMaW5rUHJvcHMoZSl7Y29uc3QgYz1PYmplY3Qua2V5cyhlKSxkPWMuZmlsdGVyKGU9PmUuc3RhcnRzV2l0aCgiYXJpYS0iKSksaD1jLmZpbHRlcihlPT5lLnN0YXJ0c1dpdGgoImRhdGEtIikpO3JldHVybiByZWFjdGl2ZVBpY2soZSwuLi5bLi4uWGwsLi4uZCwuLi5oXSl9Y29uc3QgS2w9e19fbmFtZToiVUxpbmtCYXNlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hdmlnYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSx0YXJnZXQ6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlzRXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZTtmdW5jdGlvbiBvbkNsaWNrV3JhcHBlcihlKXtpZihjLmRpc2FibGVkKXJldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHZvaWQgZS5wcmV2ZW50RGVmYXVsdCgpO2lmKGMub25DbGljaylmb3IoY29uc3QgZCBvZiBBcnJheS5pc0FycmF5KGMub25DbGljayk/Yy5vbkNsaWNrOltjLm9uQ2xpY2tdKWQoZSk7Yy5ocmVmJiZjLm5hdmlnYXRlJiYhYy5pc0V4dGVybmFsJiZjLm5hdmlnYXRlKGUpfXJldHVybihjLGQsaCx2KT0+e2QocGUoWW4udW5yZWYoZ3MpLFluLm1lcmdlUHJvcHMoZS5ocmVmP3thczoiYSIsaHJlZjplLmRpc2FibGVkP3ZvaWQgMDplLmhyZWYsImFyaWEtZGlzYWJsZWQiOmUuZGlzYWJsZWQ/InRydWUiOnZvaWQgMCxyb2xlOmUuZGlzYWJsZWQ/ImxpbmsiOnZvaWQgMCx0YWJpbmRleDplLmRpc2FibGVkPy0xOnZvaWQgMH06ImJ1dHRvbiI9PT1lLmFzP3thczplLmFzLHR5cGU6ZS50eXBlLGRpc2FibGVkOmUuZGlzYWJsZWR9OnthczplLmFzfSx7cmVsOmUucmVsLHRhcmdldDplLnRhcmdldCxvbkNsaWNrOm9uQ2xpY2tXcmFwcGVyfSx2KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGQsaCx2KT0+e2lmKCFkKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJkZWZhdWx0IildO2ZlKGMuJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLGQsaCx2KX0pLF86M30saCkpfX19LEpsPUtsLnNldHVwO0tsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0xpbmtCYXNlLnZ1ZSIpLEpsP0psKGUsYyk6dm9pZCAwfTtjb25zdCBRbD17YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkiLHZhcmlhbnRzOnthY3RpdmU6e3RydWU6InRleHQtcHJpbWFyeSIsZmFsc2U6InRleHQtbXV0ZWQifSxkaXNhYmxlZDp7dHJ1ZToiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNzUifX0sY29tcG91bmRWYXJpYW50czpbe2FjdGl2ZTohMSxkaXNhYmxlZDohMSxjbGFzczpbImhvdmVyOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19XX0sWWw9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVTGluayIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFjdGl2ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxleGFjdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxleGFjdFF1ZXJ5Ont0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITF9LGV4YWN0SGFzaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpbmFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY3VzdG9tOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJhdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxocmVmOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGV4dGVybmFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRhcmdldDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0scmVsOnt0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxub1JlbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaGVkQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaE9uOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sbm9QcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ1NsYXNoOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoicGFnZSJ9LHZpZXdUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlcGxhY2U6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGMpe2NvbnN0IGQ9Yyx2PXVzZVJvdXRlKCksYj11c2VBcHBDb25maWcoKSx5PXVzZU51eHRBcHAoKSxFPXVzZUZvcndhcmRQcm9wcyhyZWFjdGl2ZU9taXQoZCwiYXMiLCJ0eXBlIiwiZGlzYWJsZWQiLCJhY3RpdmUiLCJleGFjdCIsImV4YWN0UXVlcnkiLCJleGFjdEhhc2giLCJhY3RpdmVDbGFzcyIsImluYWN0aXZlQ2xhc3MiLCJ0byIsImhyZWYiLCJyYXciLCJjdXN0b20iLCJjbGFzcyIpKSxrPVluLmNvbXB1dGVkKCgpPT5jbCh7ZXh0ZW5kOmNsKFFsKSwuLi5oKHt2YXJpYW50czp7YWN0aXZlOnt0cnVlOm1lcmdlQ2xhc3NlcyhiLnVpPy5saW5rPy52YXJpYW50cz8uYWN0aXZlPy50cnVlLGQuYWN0aXZlQ2xhc3MpLGZhbHNlOm1lcmdlQ2xhc3NlcyhiLnVpPy5saW5rPy52YXJpYW50cz8uYWN0aXZlPy5mYWxzZSxkLmluYWN0aXZlQ2xhc3MpfX19LGIudWk/Lmxpbmt8fHt9KX0pKSxfPVluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz1kLnRvPz9kLmhyZWY7aWYoIWMpcmV0dXJuIGM7aWYoInN0cmluZyIhPXR5cGVvZiBjKXJldHVybiBjO2lmKGQuZXh0ZXJuYWx8fGUoYyx7YWNjZXB0UmVsYXRpdmU6ITB9KSlyZXR1cm4gYztjb25zdCBoPXkuJGxvY2FsZVBhdGg7cmV0dXJuIGg/aChjKTpjfSksVD1Zbi5jb21wdXRlZCgoKT0+ISFfLnZhbHVlJiYoIWQuZXh0ZXJuYWwmJigic3RyaW5nIiE9dHlwZW9mIF8udmFsdWV8fCFlKF8udmFsdWUse2FjY2VwdFJlbGF0aXZlOiEwfSkmJighZC50YXJnZXR8fCJfc2VsZiI9PT1kLnRhcmdldCkpKSksTj1Zbi5jb21wdXRlZCgoKT0+ZC5ub1JlbD9udWxsOmQucmVsP2QucmVsOiJub29wZW5lciBub3JlZmVycmVyIik7ZnVuY3Rpb24gaXNMaW5rQWN0aXZlKHtyb3V0ZTplLGlzQWN0aXZlOmMsaXNFeGFjdEFjdGl2ZTpofT17fSl7aWYodm9pZCAwIT09ZC5hY3RpdmUpcmV0dXJuIGQuYWN0aXZlO2lmKCFfLnZhbHVlKXJldHVybiExO2lmKCJwYXJ0aWFsIj09PWQuZXhhY3RRdWVyeSl7aWYoIWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1kaWZmKGUsYykucmVkdWNlKChlLGMpPT4oImFkZGVkIj09PWMudHlwZSYmZS5hZGQoYy5rZXkpLGUpLG5ldyBTZXQpO3JldHVybiBpc0VxdWFsJDEoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW2VdKT0+IWQuaGFzKGUpKSksT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGMpLmZpbHRlcigoW2VdKT0+IWQuaGFzKGUpKSkpfShlLnF1ZXJ5LHYucXVlcnkpKXJldHVybiExfWVsc2UgaWYoITA9PT1kLmV4YWN0UXVlcnkmJiFpc0VxdWFsJDEoZS5xdWVyeSx2LnF1ZXJ5KSlyZXR1cm4hMTtyZXR1cm4oIWQuZXhhY3RIYXNofHxlLmhhc2g9PT12Lmhhc2gpJiYoISghZC5leGFjdHx8IWgpfHwhKGQuZXhhY3R8fCFjKSl9ZnVuY3Rpb24gcmVzb2x2ZUxpbmtDbGFzcyh7cm91dGU6ZSxpc0FjdGl2ZTpjLGlzRXhhY3RBY3RpdmU6aH09e30pe2NvbnN0IHY9aXNMaW5rQWN0aXZlKHtyb3V0ZTplLGlzQWN0aXZlOmMsaXNFeGFjdEFjdGl2ZTpofSk7cmV0dXJuIGQucmF3P1tkLmNsYXNzLHY/ZC5hY3RpdmVDbGFzczpkLmluYWN0aXZlQ2xhc3NdOmsudmFsdWUoe2NsYXNzOmQuY2xhc3MsYWN0aXZlOnYsZGlzYWJsZWQ6ZC5kaXNhYmxlZH0pfXJldHVybihlLGgsdixiKT0+e2NvbnN0IHk9JGE7VC52YWx1ZT9oKHBlKHksWW4ubWVyZ2VQcm9wcyhZbi51bnJlZihFKSx7dG86Xy52YWx1ZSxjdXN0b206IiJ9LGIpLHtkZWZhdWx0OlluLndpdGhDdHgoKHtocmVmOmgsbmF2aWdhdGU6dixyb3V0ZTpiLGlzQWN0aXZlOnksaXNFeGFjdEFjdGl2ZTpFLC4uLmt9LF8sVCxOKT0+e2lmKCFfKXJldHVybltjLmN1c3RvbT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYobXMpLHtrZXk6MH0se2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHsuLi5lLiRhdHRycywuLi5jLmV4YWN0JiZFP3siYXJpYS1jdXJyZW50IjpkLmFyaWFDdXJyZW50VmFsdWV9Ont9LGFzOmMuYXMsdHlwZTpjLnR5cGUsZGlzYWJsZWQ6Yy5kaXNhYmxlZCxocmVmOmgsbmF2aWdhdGU6dixyZWw6ay5yZWwsdGFyZ2V0OmsudGFyZ2V0LGlzRXh0ZXJuYWw6ay5pc0V4dGVybmFsLGFjdGl2ZTppc0xpbmtBY3RpdmUoe3JvdXRlOmIsaXNBY3RpdmU6eSxpc0V4YWN0QWN0aXZlOkV9KX0pXSksXzoyfSwxMDI0KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKEtsLFluLm1lcmdlUHJvcHMoe2tleToxfSx7Li4uZS4kYXR0cnMsLi4uYy5leGFjdCYmRT97ImFyaWEtY3VycmVudCI6ZC5hcmlhQ3VycmVudFZhbHVlfTp7fSxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsaHJlZjpoLG5hdmlnYXRlOnYscmVsOmsucmVsLHRhcmdldDprLnRhcmdldCxpc0V4dGVybmFsOmsuaXNFeHRlcm5hbH0se2NsYXNzOnJlc29sdmVMaW5rQ2xhc3Moe3JvdXRlOmIsaXNBY3RpdmU6eSxpc0V4YWN0QWN0aXZlOkV9KX0pLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldO2MuY3VzdG9tP18ocGUoWW4udW5yZWYobXMpLG51bGwse2RlZmF1bHQ6WW4ud2l0aEN0eCgoXyxULE4sTyk9PntpZighVClyZXR1cm5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIsey4uLmUuJGF0dHJzLC4uLmMuZXhhY3QmJkU/eyJhcmlhLWN1cnJlbnQiOmQuYXJpYUN1cnJlbnRWYWx1ZX06e30sYXM6Yy5hcyx0eXBlOmMudHlwZSxkaXNhYmxlZDpjLmRpc2FibGVkLGhyZWY6aCxuYXZpZ2F0ZTp2LHJlbDprLnJlbCx0YXJnZXQ6ay50YXJnZXQsaXNFeHRlcm5hbDprLmlzRXh0ZXJuYWwsYWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSldO2ZlKGUuJHNsb3RzLCJkZWZhdWx0Iix7Li4uZS4kYXR0cnMsLi4uYy5leGFjdCYmRT97ImFyaWEtY3VycmVudCI6ZC5hcmlhQ3VycmVudFZhbHVlfTp7fSxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsaHJlZjpoLG5hdmlnYXRlOnYscmVsOmsucmVsLHRhcmdldDprLnRhcmdldCxpc0V4dGVybmFsOmsuaXNFeHRlcm5hbCxhY3RpdmU6aXNMaW5rQWN0aXZlKHtyb3V0ZTpiLGlzQWN0aXZlOnksaXNFeGFjdEFjdGl2ZTpFfSl9LG51bGwsVCxOLE8pfSksXzoyfSxULE4pKTpfKHBlKEtsLFluLm1lcmdlUHJvcHMoey4uLmUuJGF0dHJzLC4uLmMuZXhhY3QmJkU/eyJhcmlhLWN1cnJlbnQiOmQuYXJpYUN1cnJlbnRWYWx1ZX06e30sYXM6Yy5hcyx0eXBlOmMudHlwZSxkaXNhYmxlZDpjLmRpc2FibGVkLGhyZWY6aCxuYXZpZ2F0ZTp2LHJlbDprLnJlbCx0YXJnZXQ6ay50YXJnZXQsaXNFeHRlcm5hbDprLmlzRXh0ZXJuYWx9LHtjbGFzczpyZXNvbHZlTGlua0NsYXNzKHtyb3V0ZTpiLGlzQWN0aXZlOnksaXNFeGFjdEFjdGl2ZTpFfSl9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChjLGQsaCx2KT0+e2lmKCFkKXJldHVybltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSldO2ZlKGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSxudWxsLGQsaCx2KX0pLF86Mn0sVCxOKSl9KSxfOjN9LHYpKTpjLmN1c3RvbT9oKHBlKFluLnVucmVmKG1zKSxiLHtkZWZhdWx0OlluLndpdGhDdHgoKGgsdixiLHkpPT57aWYoIXYpcmV0dXJuW1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHsuLi5lLiRhdHRycyxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsLi4uXy52YWx1ZT97aHJlZjpTdHJpbmcoXy52YWx1ZSksdGFyZ2V0OmQudGFyZ2V0LHJlbDpOLnZhbHVlLGlzRXh0ZXJuYWw6ITB9Ont9LGFjdGl2ZTpjLmFjdGl2ZT8/ITF9KV07ZmUoZS4kc2xvdHMsImRlZmF1bHQiLHsuLi5lLiRhdHRycyxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsLi4uXy52YWx1ZT97aHJlZjpTdHJpbmcoXy52YWx1ZSksdGFyZ2V0OmQudGFyZ2V0LHJlbDpOLnZhbHVlLGlzRXh0ZXJuYWw6ITB9Ont9LGFjdGl2ZTpjLmFjdGl2ZT8/ITF9LG51bGwsdixiLHkpfSksXzozfSx2KSk6aChwZShLbCxZbi5tZXJnZVByb3BzKHsuLi5lLiRhdHRycyxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsLi4uXy52YWx1ZT97aHJlZjpTdHJpbmcoXy52YWx1ZSksdGFyZ2V0OmQudGFyZ2V0LHJlbDpOLnZhbHVlLGlzRXh0ZXJuYWw6ITB9Ont9fSx7Y2xhc3M6cmVzb2x2ZUxpbmtDbGFzcygpfSxiKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmMuYWN0aXZlPz8hMX0pXTtmZShlLiRzbG90cywiZGVmYXVsdCIse2FjdGl2ZTpjLmFjdGl2ZT8/ITF9LG51bGwsaCx2LGIpfSksXzozfSx2KSl9fX0pLFpsPVlsLnNldHVwO1lsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0xpbmsudnVlIiksWmw/WmwoZSxjKTp2b2lkIDB9O2NvbnN0IGVjPXtzbG90czp7YmFzZTpbInJvdW5kZWQtbWQgZm9udC1tZWRpdW0gaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBhcmlhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IGFyaWEtZGlzYWJsZWQ6b3BhY2l0eS03NSIsInRyYW5zaXRpb24tY29sb3JzIl0sbGFiZWw6InRydW5jYXRlIixsZWFkaW5nSWNvbjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZ0ljb246InNocmluay0wIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sdmFyaWFudDp7c29saWQ6IiIsb3V0bGluZToiIixzb2Z0OiIiLHN1YnRsZToiIixnaG9zdDoiIixsaW5rOiIifSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQteHMgZ2FwLTEiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC14cyBnYXAtMS41IixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LG1kOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtc20gZ2FwLTEuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtc20gZ2FwLTIiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sYmxvY2s6e3RydWU6e2Jhc2U6InctZnVsbCBqdXN0aWZ5LWNlbnRlciIsdHJhaWxpbmdJY29uOiJtcy1hdXRvIn19LHNxdWFyZTp7dHJ1ZToiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGFjdGl2ZTp7dHJ1ZTp7YmFzZToiIn0sZmFsc2U6e2Jhc2U6IiJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctcHJpbWFyeSBob3ZlcjpiZy1wcmltYXJ5Lzc1IGFjdGl2ZTpiZy1wcmltYXJ5Lzc1IGRpc2FibGVkOmJnLXByaW1hcnkgYXJpYS1kaXNhYmxlZDpiZy1wcmltYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS83NSBhY3RpdmU6Ymctc2Vjb25kYXJ5Lzc1IGRpc2FibGVkOmJnLXNlY29uZGFyeSBhcmlhLWRpc2FibGVkOmJnLXNlY29uZGFyeSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXN1Y2Nlc3MgaG92ZXI6Ymctc3VjY2Vzcy83NSBhY3RpdmU6Ymctc3VjY2Vzcy83NSBkaXNhYmxlZDpiZy1zdWNjZXNzIGFyaWEtZGlzYWJsZWQ6Ymctc3VjY2VzcyBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbmZvIGhvdmVyOmJnLWluZm8vNzUgYWN0aXZlOmJnLWluZm8vNzUgZGlzYWJsZWQ6YmctaW5mbyBhcmlhLWRpc2FibGVkOmJnLWluZm8gZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctd2FybmluZyBob3ZlcjpiZy13YXJuaW5nLzc1IGFjdGl2ZTpiZy13YXJuaW5nLzc1IGRpc2FibGVkOmJnLXdhcm5pbmcgYXJpYS1kaXNhYmxlZDpiZy13YXJuaW5nIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1lcnJvciBob3ZlcjpiZy1lcnJvci83NSBhY3RpdmU6YmctZXJyb3IvNzUgZGlzYWJsZWQ6YmctZXJyb3IgYXJpYS1kaXNhYmxlZDpiZy1lcnJvciBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS81MCB0ZXh0LXByaW1hcnkgaG92ZXI6YmctcHJpbWFyeS8xMCBhY3RpdmU6YmctcHJpbWFyeS8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzUwIHRleHQtc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS8xMCBhY3RpdmU6Ymctc2Vjb25kYXJ5LzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIHRleHQtc3VjY2VzcyBob3ZlcjpiZy1zdWNjZXNzLzEwIGFjdGl2ZTpiZy1zdWNjZXNzLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW5mby81MCB0ZXh0LWluZm8gaG92ZXI6YmctaW5mby8xMCBhY3RpdmU6YmctaW5mby8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvNTAgdGV4dC13YXJuaW5nIGhvdmVyOmJnLXdhcm5pbmcvMTAgYWN0aXZlOmJnLXdhcm5pbmcvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvNTAgdGV4dC1lcnJvciBob3ZlcjpiZy1lcnJvci8xMCBhY3RpdmU6YmctZXJyb3IvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1wcmltYXJ5IGJnLXByaW1hcnkvMTAgaG92ZXI6YmctcHJpbWFyeS8xNSBhY3RpdmU6YmctcHJpbWFyeS8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1wcmltYXJ5LzE1IGRpc2FibGVkOmJnLXByaW1hcnkvMTAgYXJpYS1kaXNhYmxlZDpiZy1wcmltYXJ5LzEwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBiZy1zZWNvbmRhcnkvMTAgaG92ZXI6Ymctc2Vjb25kYXJ5LzE1IGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc2Vjb25kYXJ5LzE1IGRpc2FibGVkOmJnLXNlY29uZGFyeS8xMCBhcmlhLWRpc2FibGVkOmJnLXNlY29uZGFyeS8xMCJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtc3VjY2VzcyBiZy1zdWNjZXNzLzEwIGhvdmVyOmJnLXN1Y2Nlc3MvMTUgYWN0aXZlOmJnLXN1Y2Nlc3MvMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc3VjY2Vzcy8xNSBkaXNhYmxlZDpiZy1zdWNjZXNzLzEwIGFyaWEtZGlzYWJsZWQ6Ymctc3VjY2Vzcy8xMCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtaW5mbyBiZy1pbmZvLzEwIGhvdmVyOmJnLWluZm8vMTUgYWN0aXZlOmJnLWluZm8vMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmctaW5mby8xNSBkaXNhYmxlZDpiZy1pbmZvLzEwIGFyaWEtZGlzYWJsZWQ6YmctaW5mby8xMCJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtd2FybmluZyBiZy13YXJuaW5nLzEwIGhvdmVyOmJnLXdhcm5pbmcvMTUgYWN0aXZlOmJnLXdhcm5pbmcvMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctd2FybmluZy8xNSBkaXNhYmxlZDpiZy13YXJuaW5nLzEwIGFyaWEtZGlzYWJsZWQ6Ymctd2FybmluZy8xMCJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWVycm9yIGJnLWVycm9yLzEwIGhvdmVyOmJnLWVycm9yLzE1IGFjdGl2ZTpiZy1lcnJvci8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1lcnJvci8xNSBkaXNhYmxlZDpiZy1lcnJvci8xMCBhcmlhLWRpc2FibGVkOmJnLWVycm9yLzEwIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgcmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS8yNSBiZy1wcmltYXJ5LzEwIGhvdmVyOmJnLXByaW1hcnkvMTUgYWN0aXZlOmJnLXByaW1hcnkvMTUgZGlzYWJsZWQ6YmctcHJpbWFyeS8xMCBhcmlhLWRpc2FibGVkOmJnLXByaW1hcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeS8yNSBiZy1zZWNvbmRhcnkvMTAgaG92ZXI6Ymctc2Vjb25kYXJ5LzE1IGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTUgZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIGFyaWEtZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSBiZy1zdWNjZXNzLzEwIGhvdmVyOmJnLXN1Y2Nlc3MvMTUgYWN0aXZlOmJnLXN1Y2Nlc3MvMTUgZGlzYWJsZWQ6Ymctc3VjY2Vzcy8xMCBhcmlhLWRpc2FibGVkOmJnLXN1Y2Nlc3MvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWluZm8gcmluZyByaW5nLWluc2V0IHJpbmctaW5mby8yNSBiZy1pbmZvLzEwIGhvdmVyOmJnLWluZm8vMTUgYWN0aXZlOmJnLWluZm8vMTUgZGlzYWJsZWQ6YmctaW5mby8xMCBhcmlhLWRpc2FibGVkOmJnLWluZm8vMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSBiZy13YXJuaW5nLzEwIGhvdmVyOmJnLXdhcm5pbmcvMTUgYWN0aXZlOmJnLXdhcm5pbmcvMTUgZGlzYWJsZWQ6Ymctd2FybmluZy8xMCBhcmlhLWRpc2FibGVkOmJnLXdhcm5pbmcvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSBiZy1lcnJvci8xMCBob3ZlcjpiZy1lcnJvci8xNSBhY3RpdmU6YmctZXJyb3IvMTUgZGlzYWJsZWQ6YmctZXJyb3IvMTAgYXJpYS1kaXNhYmxlZDpiZy1lcnJvci8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtcHJpbWFyeSBob3ZlcjpiZy1wcmltYXJ5LzEwIGFjdGl2ZTpiZy1wcmltYXJ5LzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXByaW1hcnkvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS8xMCBhY3RpdmU6Ymctc2Vjb25kYXJ5LzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXNlY29uZGFyeS8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtc3VjY2VzcyBob3ZlcjpiZy1zdWNjZXNzLzEwIGFjdGl2ZTpiZy1zdWNjZXNzLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXN1Y2Nlc3MvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LWluZm8gaG92ZXI6YmctaW5mby8xMCBhY3RpdmU6YmctaW5mby8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1pbmZvLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC13YXJuaW5nIGhvdmVyOmJnLXdhcm5pbmcvMTAgYWN0aXZlOmJnLXdhcm5pbmcvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctd2FybmluZy8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LWVycm9yIGhvdmVyOmJnLWVycm9yLzEwIGFjdGl2ZTpiZy1lcnJvci8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1lcnJvci8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJsaW5rIixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOnRleHQtcHJpbWFyeS83NSBhY3RpdmU6dGV4dC1wcmltYXJ5Lzc1IGRpc2FibGVkOnRleHQtcHJpbWFyeSBhcmlhLWRpc2FibGVkOnRleHQtcHJpbWFyeSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBob3Zlcjp0ZXh0LXNlY29uZGFyeS83NSBhY3RpdmU6dGV4dC1zZWNvbmRhcnkvNzUgZGlzYWJsZWQ6dGV4dC1zZWNvbmRhcnkgYXJpYS1kaXNhYmxlZDp0ZXh0LXNlY29uZGFyeSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgaG92ZXI6dGV4dC1zdWNjZXNzLzc1IGFjdGl2ZTp0ZXh0LXN1Y2Nlc3MvNzUgZGlzYWJsZWQ6dGV4dC1zdWNjZXNzIGFyaWEtZGlzYWJsZWQ6dGV4dC1zdWNjZXNzIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LWluZm8gaG92ZXI6dGV4dC1pbmZvLzc1IGFjdGl2ZTp0ZXh0LWluZm8vNzUgZGlzYWJsZWQ6dGV4dC1pbmZvIGFyaWEtZGlzYWJsZWQ6dGV4dC1pbmZvIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgaG92ZXI6dGV4dC13YXJuaW5nLzc1IGFjdGl2ZTp0ZXh0LXdhcm5pbmcvNzUgZGlzYWJsZWQ6dGV4dC13YXJuaW5nIGFyaWEtZGlzYWJsZWQ6dGV4dC13YXJuaW5nIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJsaW5rIixjbGFzczoidGV4dC1lcnJvciBob3Zlcjp0ZXh0LWVycm9yLzc1IGFjdGl2ZTp0ZXh0LWVycm9yLzc1IGRpc2FibGVkOnRleHQtZXJyb3IgYXJpYS1kaXNhYmxlZDp0ZXh0LWVycm9yIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctaW52ZXJ0ZWQgaG92ZXI6YmctaW52ZXJ0ZWQvOTAgYWN0aXZlOmJnLWludmVydGVkLzkwIGRpc2FibGVkOmJnLWludmVydGVkIGFyaWEtZGlzYWJsZWQ6YmctaW52ZXJ0ZWQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1pbnZlcnRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1kZWZhdWx0IGhvdmVyOmJnLWVsZXZhdGVkIGFjdGl2ZTpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1kZWZhdWx0IGFyaWEtZGlzYWJsZWQ6YmctZGVmYXVsdCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1kZWZhdWx0IGJnLWVsZXZhdGVkIGhvdmVyOmJnLWFjY2VudGVkLzc1IGFjdGl2ZTpiZy1hY2NlbnRlZC83NSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1hY2NlbnRlZC83NSBkaXNhYmxlZDpiZy1lbGV2YXRlZCBhcmlhLWRpc2FibGVkOmJnLWVsZXZhdGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCB0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgYWN0aXZlOmJnLWFjY2VudGVkLzc1IGRpc2FibGVkOmJnLWVsZXZhdGVkIGFyaWEtZGlzYWJsZWQ6YmctZWxldmF0ZWQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnZlcnRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgaG92ZXI6YmctZWxldmF0ZWQgYWN0aXZlOmJnLWVsZXZhdGVkIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWVsZXZhdGVkIGhvdmVyOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6aG92ZXI6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgaG92ZXI6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmhvdmVyOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LW11dGVkIGhvdmVyOnRleHQtZGVmYXVsdCBhY3RpdmU6dGV4dC1kZWZhdWx0IGRpc2FibGVkOnRleHQtbXV0ZWQgYXJpYS1kaXNhYmxlZDp0ZXh0LW11dGVkIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se3NpemU6InhzIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9LHtzaXplOiJzbSIsc3F1YXJlOiEwLGNsYXNzOiJwLTEuNSJ9LHtzaXplOiJtZCIsc3F1YXJlOiEwLGNsYXNzOiJwLTEuNSJ9LHtzaXplOiJsZyIsc3F1YXJlOiEwLGNsYXNzOiJwLTIifSx7c2l6ZToieGwiLHNxdWFyZTohMCxjbGFzczoicC0yIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fV0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLHNpemU6Im1kIn19LHRjPXtfX25hbWU6IlVCdXR0b24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNxdWFyZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxibG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0UXVlcnk6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMX0sZXhhY3RIYXNoOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGluYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxocmVmOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGV4dGVybmFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRhcmdldDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0scmVsOnt0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxub1JlbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaGVkQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaE9uOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sbm9QcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ1NsYXNoOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZpZXdUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlcGxhY2U6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSxkPVluLnVzZVNsb3RzKCksdj11c2VBcHBDb25maWcoKSxiPXVzZUNvbXBvbmVudFVJKCJidXR0b24iLGMpLHtvcmllbnRhdGlvbjp5LHNpemU6RX09dXNlRmllbGRHcm91cChjKSxrPXVzZUZvcndhcmRQcm9wcyhwaWNrTGlua1Byb3BzKGMpKSxfPVluLnJlZighMSksVD1Zbi5pbmplY3QoR2wsdm9pZCAwKTthc3luYyBmdW5jdGlvbiBvbkNsaWNrV3JhcHBlcihlKXtfLnZhbHVlPSEwO2NvbnN0IGQ9QXJyYXkuaXNBcnJheShjLm9uQ2xpY2spP2Mub25DbGljazpbYy5vbkNsaWNrXTt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoZC5tYXAoYz0+Yz8uKGUpKSl9ZmluYWxseXtfLnZhbHVlPSExfX1jb25zdCBOPVluLmNvbXB1dGVkKCgpPT5jLmxvYWRpbmd8fGMubG9hZGluZ0F1dG8mJihfLnZhbHVlfHxUPy52YWx1ZSYmInN1Ym1pdCI9PT1jLnR5cGUpKSx7aXNMZWFkaW5nOk8saXNUcmFpbGluZzpSLGxlYWRpbmdJY29uTmFtZTpNLHRyYWlsaW5nSWNvbk5hbWU6RH09dXNlQ29tcG9uZW50SWNvbnMoWW4uY29tcHV0ZWQoKCk9Pih7Li4uYyxsb2FkaW5nOk4udmFsdWV9KSkpLEw9WW4uY29tcHV0ZWQoKCk9PmNsKHtleHRlbmQ6Y2woZWMpLC4uLmgoe3ZhcmlhbnRzOnthY3RpdmU6e3RydWU6e2Jhc2U6bWVyZ2VDbGFzc2VzKHYudWk/LmJ1dHRvbj8udmFyaWFudHM/LmFjdGl2ZT8udHJ1ZT8uYmFzZSxjLmFjdGl2ZUNsYXNzKX0sZmFsc2U6e2Jhc2U6bWVyZ2VDbGFzc2VzKHYudWk/LmJ1dHRvbj8udmFyaWFudHM/LmFjdGl2ZT8uZmFsc2U/LmJhc2UsYy5pbmFjdGl2ZUNsYXNzKX19fX0sdi51aT8uYnV0dG9ufHx7fSl9KSh7Y29sb3I6Yy5jb2xvcix2YXJpYW50OmMudmFyaWFudCxzaXplOkUudmFsdWUsbG9hZGluZzpOLnZhbHVlLGJsb2NrOmMuYmxvY2ssc3F1YXJlOmMuc3F1YXJlfHwhZC5kZWZhdWx0JiYhYy5sYWJlbCxsZWFkaW5nOk8udmFsdWUsdHJhaWxpbmc6Ui52YWx1ZSxmaWVsZEdyb3VwOnkudmFsdWV9KSk7cmV0dXJuKGQsaCx2LHkpPT57aChwZShZbCxZbi5tZXJnZVByb3BzKHt0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkfHxOLnZhbHVlfSxZbi51bnJlZihvbWl0KShZbi51bnJlZihrKSxbInR5cGUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkse2N1c3RvbToiIn0seSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoe2FjdGl2ZTpoLC4uLnZ9LHksRSxrKT0+e2lmKCF5KXJldHVybltZbi5jcmVhdGVWTm9kZShLbCxZbi5tZXJnZVByb3BzKHYseyJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpMLnZhbHVlLmJhc2Uoe2NsYXNzOltZbi51bnJlZihiKT8uYmFzZSxjLmNsYXNzXSxhY3RpdmU6aCwuLi5oJiZlLmFjdGl2ZVZhcmlhbnQ/e3ZhcmlhbnQ6ZS5hY3RpdmVWYXJpYW50fTp7fSwuLi5oJiZlLmFjdGl2ZUNvbG9yP3tjb2xvcjplLmFjdGl2ZUNvbG9yfTp7fX0pLG9uQ2xpY2s6b25DbGlja1dyYXBwZXJ9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChkLiRzbG90cywibGVhZGluZyIse3VpOkwudmFsdWV9LCgpPT5bWW4udW5yZWYoTykmJlluLnVucmVmKE0pPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayh3bCx7a2V5OjAsbmFtZTpZbi51bnJlZihNKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOkwudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuYXZhdGFyPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhCbCxZbi5tZXJnZVByb3BzKHtrZXk6MSxzaXplOlluLnVucmVmKGIpPy5sZWFkaW5nQXZhdGFyU2l6ZXx8TC52YWx1ZS5sZWFkaW5nQXZhdGFyU2l6ZSgpfSxlLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxlYWRpbmdBdmF0YXIiLGNsYXNzOkwudmFsdWUubGVhZGluZ0F2YXRhcih7Y2xhc3M6WW4udW5yZWYoYik/LmxlYWRpbmdBdmF0YXIsYWN0aXZlOmh9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxZbi5yZW5kZXJTbG90KGQuJHNsb3RzLCJkZWZhdWx0Iix7dWk6TC52YWx1ZX0sKCk9Plt2b2lkIDAhPT1lLmxhYmVsJiZudWxsIT09ZS5sYWJlbD8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOkwudmFsdWUubGFiZWwoe2NsYXNzOlluLnVucmVmKGIpPy5sYWJlbCxhY3RpdmU6aH0pfSxZbi50b0Rpc3BsYXlTdHJpbmcoZS5sYWJlbCksMykpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxZbi5yZW5kZXJTbG90KGQuJHNsb3RzLCJ0cmFpbGluZyIse3VpOkwudmFsdWV9LCgpPT5bWW4udW5yZWYoUikmJlluLnVucmVmKEQpPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayh3bCx7a2V5OjAsbmFtZTpZbi51bnJlZihEKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczpMLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6WW4udW5yZWYoYik/LnRyYWlsaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTt5KHBlKEtsLFluLm1lcmdlUHJvcHModix7ImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkwudmFsdWUuYmFzZSh7Y2xhc3M6W1luLnVucmVmKGIpPy5iYXNlLGMuY2xhc3NdLGFjdGl2ZTpoLC4uLmgmJmUuYWN0aXZlVmFyaWFudD97dmFyaWFudDplLmFjdGl2ZVZhcmlhbnR9Ont9LC4uLmgmJmUuYWN0aXZlQ29sb3I/e2NvbG9yOmUuYWN0aXZlQ29sb3J9Ont9fSksb25DbGljazpvbkNsaWNrV3JhcHBlcn0pLHtkZWZhdWx0OlluLndpdGhDdHgoKGMsdix5LEUpPT57aWYoIXYpcmV0dXJuW1luLnJlbmRlclNsb3QoZC4kc2xvdHMsImxlYWRpbmciLHt1aTpMLnZhbHVlfSwoKT0+W1luLnVucmVmKE8pJiZZbi51bnJlZihNKT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sod2wse2tleTowLG5hbWU6WW4udW5yZWYoTSksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpMLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczpZbi51bnJlZihiKT8ubGVhZGluZ0ljb24sYWN0aXZlOmh9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soQmwsWW4ubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTpZbi51bnJlZihiKT8ubGVhZGluZ0F2YXRhclNpemV8fEwudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpMLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nQXZhdGFyLGFjdGl2ZTpofSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksWW4ucmVuZGVyU2xvdChkLiRzbG90cywiZGVmYXVsdCIse3VpOkwudmFsdWV9LCgpPT5bdm9pZCAwIT09ZS5sYWJlbCYmbnVsbCE9PWUubGFiZWw/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpMLnZhbHVlLmxhYmVsKHtjbGFzczpZbi51bnJlZihiKT8ubGFiZWwsYWN0aXZlOmh9KX0sWW4udG9EaXNwbGF5U3RyaW5nKGUubGFiZWwpLDMpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksWW4ucmVuZGVyU2xvdChkLiRzbG90cywidHJhaWxpbmciLHt1aTpMLnZhbHVlfSwoKT0+W1luLnVucmVmKFIpJiZZbi51bnJlZihEKT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sod2wse2tleTowLG5hbWU6WW4udW5yZWYoRCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6TC52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOlluLnVucmVmKGIpPy50cmFpbGluZ0ljb24sYWN0aXZlOmh9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO2ZlKGQuJHNsb3RzLCJsZWFkaW5nIix7dWk6TC52YWx1ZX0sKCk9PntZbi51bnJlZihPKSYmWW4udW5yZWYoTSk/dihwZSh3bCx7bmFtZTpZbi51bnJlZihNKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOkwudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLHksRSkpOmUuYXZhdGFyP3YocGUoQmwsWW4ubWVyZ2VQcm9wcyh7c2l6ZTpZbi51bnJlZihiKT8ubGVhZGluZ0F2YXRhclNpemV8fEwudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpMLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nQXZhdGFyLGFjdGl2ZTpofSl9KSxudWxsLHksRSkpOnYoIlx4M2MhLS0tLVx4M2UiKX0sdix5LEUpLGZlKGQuJHNsb3RzLCJkZWZhdWx0Iix7dWk6TC52YWx1ZX0sKCk9Pnt2b2lkIDAhPT1lLmxhYmVsJiZudWxsIT09ZS5sYWJlbD92KGA8c3BhbiBkYXRhLXNsb3Q9ImxhYmVsIiBjbGFzcz0iJHttZShMLnZhbHVlLmxhYmVsKHtjbGFzczpZbi51bnJlZihiKT8ubGFiZWwsYWN0aXZlOmh9KSl9IiR7RX0+JHt5ZShlLmxhYmVsKX08L3NwYW4+YCk6digiXHgzYyEtLS0tXHgzZSIpfSx2LHksRSksZmUoZC4kc2xvdHMsInRyYWlsaW5nIix7dWk6TC52YWx1ZX0sKCk9PntZbi51bnJlZihSKSYmWW4udW5yZWYoRCk/dihwZSh3bCx7bmFtZTpZbi51bnJlZihEKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczpMLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6WW4udW5yZWYoYik/LnRyYWlsaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLHksRSkpOnYoIlx4M2MhLS0tLVx4M2UiKX0sdix5LEUpfSksXzoyfSxFLGspKX0pLF86M30sdikpfX19LG5jPXRjLnNldHVwO3RjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0J1dHRvbi52dWUiKSxuYz9uYyhlLGMpOnZvaWQgMH07Y29uc3Qgb2M9e3Nsb3RzOntyb290OiJnYXAtMiIsYmFzZToicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1hY2NlbnRlZCIsaW5kaWNhdG9yOiJyb3VuZGVkLWZ1bGwgc2l6ZS1mdWxsIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCBlYXNlLW91dCIsc3RhdHVzOiJmbGV4IHRleHQtZGltbWVkIHRyYW5zaXRpb24tW3dpZHRoXSBkdXJhdGlvbi0yMDAiLHN0ZXBzOiJncmlkIGl0ZW1zLWVuZCIsc3RlcDoidHJ1bmNhdGUgdGV4dC1lbmQgcm93LXN0YXJ0LTEgY29sLXN0YXJ0LTEgdHJhbnNpdGlvbi1vcGFjaXR5In0sdmFyaWFudHM6e2FuaW1hdGlvbjp7Y2Fyb3VzZWw6IiIsImNhcm91c2VsLWludmVyc2UiOiIiLHN3aW5nOiIiLGVsYXN0aWM6IiJ9LGNvbG9yOntwcmltYXJ5OntpbmRpY2F0b3I6ImJnLXByaW1hcnkiLHN0ZXBzOiJ0ZXh0LXByaW1hcnkifSxzZWNvbmRhcnk6e2luZGljYXRvcjoiYmctc2Vjb25kYXJ5IixzdGVwczoidGV4dC1zZWNvbmRhcnkifSxzdWNjZXNzOntpbmRpY2F0b3I6ImJnLXN1Y2Nlc3MiLHN0ZXBzOiJ0ZXh0LXN1Y2Nlc3MifSxpbmZvOntpbmRpY2F0b3I6ImJnLWluZm8iLHN0ZXBzOiJ0ZXh0LWluZm8ifSx3YXJuaW5nOntpbmRpY2F0b3I6ImJnLXdhcm5pbmciLHN0ZXBzOiJ0ZXh0LXdhcm5pbmcifSxlcnJvcjp7aW5kaWNhdG9yOiJiZy1lcnJvciIsc3RlcHM6InRleHQtZXJyb3IifSxuZXV0cmFsOntpbmRpY2F0b3I6ImJnLWludmVydGVkIixzdGVwczoidGV4dC1pbnZlcnRlZCJ9fSxzaXplOnsiMnhzIjp7c3RhdHVzOiJ0ZXh0LXhzIixzdGVwczoidGV4dC14cyJ9LHhzOntzdGF0dXM6InRleHQteHMiLHN0ZXBzOiJ0ZXh0LXhzIn0sc206e3N0YXR1czoidGV4dC1zbSIsc3RlcHM6InRleHQtc20ifSxtZDp7c3RhdHVzOiJ0ZXh0LXNtIixzdGVwczoidGV4dC1zbSJ9LGxnOntzdGF0dXM6InRleHQtc20iLHN0ZXBzOiJ0ZXh0LXNtIn0seGw6e3N0YXR1czoidGV4dC1iYXNlIixzdGVwczoidGV4dC1iYXNlIn0sIjJ4bCI6e3N0YXR1czoidGV4dC1iYXNlIixzdGVwczoidGV4dC1iYXNlIn19LHN0ZXA6e2FjdGl2ZTp7c3RlcDoib3BhY2l0eS0xMDAifSxmaXJzdDp7c3RlcDoib3BhY2l0eS0xMDAgdGV4dC1tdXRlZCJ9LG90aGVyOntzdGVwOiJvcGFjaXR5LTAifSxsYXN0OntzdGVwOiIifX0sb3JpZW50YXRpb246e2hvcml6b250YWw6e3Jvb3Q6InctZnVsbCBmbGV4IGZsZXgtY29sIixiYXNlOiJ3LWZ1bGwiLHN0YXR1czoiZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIG1pbi13LWZpdCJ9LHZlcnRpY2FsOntyb290OiJoLWZ1bGwgZmxleCBmbGV4LXJvdy1yZXZlcnNlIixiYXNlOiJoLWZ1bGwiLHN0YXR1czoiZmxleC1jb2wganVzdGlmeS1lbmQgbWluLWgtZml0In19LGludmVydGVkOnt0cnVlOntzdGF0dXM6InNlbGYtZW5kIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7aW52ZXJ0ZWQ6ITAsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOntzdGVwOiJ0ZXh0LXN0YXJ0IixzdGF0dXM6ImZsZXgtcm93LXJldmVyc2UifX0se2ludmVydGVkOiEwLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsY2xhc3M6e3N0ZXBzOiJpdGVtcy1zdGFydCIsc3RhdHVzOiJmbGV4LWNvbC1yZXZlcnNlIn19LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToiMnhzIixjbGFzczoiaC1weCJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToieHMiLGNsYXNzOiJoLTAuNSJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToic20iLGNsYXNzOiJoLTEifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6Im1kIixjbGFzczoiaC0yIn0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJsZyIsY2xhc3M6ImgtMyJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToieGwiLGNsYXNzOiJoLTQifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6IjJ4bCIsY2xhc3M6ImgtNSJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6IjJ4cyIsY2xhc3M6InctcHgifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4cyIsY2xhc3M6InctMC41In0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToic20iLGNsYXNzOiJ3LTEifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJtZCIsY2xhc3M6InctMiJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6ImxnIixjbGFzczoidy0zIn0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToieGwiLGNsYXNzOiJ3LTQifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiIyeGwiLGNsYXNzOiJ3LTUifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoiY2Fyb3VzZWwiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSBkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTpydGw6YW5pbWF0ZS1bY2Fyb3VzZWwtcnRsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixhbmltYXRpb246ImNhcm91c2VsIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtjYXJvdXNlbC12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixhbmltYXRpb246ImNhcm91c2VsLWludmVyc2UiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2VfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIGRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOnJ0bDphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsYW5pbWF0aW9uOiJjYXJvdXNlbC1pbnZlcnNlIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoic3dpbmciLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW3N3aW5nXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixhbmltYXRpb246InN3aW5nIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtzd2luZy12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixhbmltYXRpb246ImVsYXN0aWMiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2VsYXN0aWNfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGFuaW1hdGlvbjoiZWxhc3RpYyIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bZWxhc3RpYy12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX1dLGRlZmF1bHRWYXJpYW50czp7YW5pbWF0aW9uOiJjYXJvdXNlbCIsY29sb3I6InByaW1hcnkiLHNpemU6Im1kIn19LHJjPXtfX25hbWU6IlVQcm9ncmVzcyIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1heDp7dHlwZTpbTnVtYmVyLEFycmF5XSxyZXF1aXJlZDohMX0sc3RhdHVzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGludmVydGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxhbmltYXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxnZXRWYWx1ZUxhYmVsOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxnZXRWYWx1ZVRleHQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6W051bWJlcixudWxsXSxyZXF1aXJlZDohMSxkZWZhdWx0Om51bGx9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm1heCJdLHNldHVwKGUse2VtaXQ6Y30pe2NvbnN0IGQ9ZSxoPWMsdj1Zbi51c2VTbG90cygpLHtkaXI6Yn09dXNlTG9jYWxlKCkseT11c2VBcHBDb25maWcoKSxFPXVzZUNvbXBvbmVudFVJKCJwcm9ncmVzcyIsZCksaz11c2VGb3J3YXJkUHJvcHNFbWl0cyhyZWFjdGl2ZVBpY2soZCwiZ2V0VmFsdWVMYWJlbCIsImdldFZhbHVlVGV4dCIsIm1vZGVsVmFsdWUiKSxoKSxfPVluLmNvbXB1dGVkKCgpPT5udWxsPT09ay52YWx1ZS5tb2RlbFZhbHVlKSxUPVluLmNvbXB1dGVkKCgpPT5BcnJheS5pc0FycmF5KGQubWF4KSksTj1Zbi5jb21wdXRlZCgoKT0+e2lmKCFfLnZhbHVlJiZkLm1heClyZXR1cm4gQXJyYXkuaXNBcnJheShkLm1heCk/ZC5tYXgubGVuZ3RoLTE6TnVtYmVyKGQubWF4KX0pLE89WW4uY29tcHV0ZWQoKCk9PntpZighXy52YWx1ZSlzd2l0Y2goITApe2Nhc2Ugay52YWx1ZS5tb2RlbFZhbHVlPDA6cmV0dXJuIDA7Y2FzZSBrLnZhbHVlLm1vZGVsVmFsdWU+KE4udmFsdWU/PzEwMCk6cmV0dXJuIDEwMDtkZWZhdWx0OnJldHVybiBNYXRoLnJvdW5kKGsudmFsdWUubW9kZWxWYWx1ZS8oTi52YWx1ZT8/MTAwKSoxMDApfX0pLFI9WW4uY29tcHV0ZWQoKCk9PntpZih2b2lkIDAhPT1PLnZhbHVlKXJldHVybiJ2ZXJ0aWNhbCI9PT1kLm9yaWVudGF0aW9uP3t0cmFuc2Zvcm06YHRyYW5zbGF0ZVkoJHtkLmludmVydGVkPyIiOiItIn0kezEwMC1PLnZhbHVlfSUpYH06InJ0bCI9PT1iLnZhbHVlP3t0cmFuc2Zvcm06YHRyYW5zbGF0ZVgoJHtkLmludmVydGVkPyItIjoiIn0kezEwMC1PLnZhbHVlfSUpYH06e3RyYW5zZm9ybTpgdHJhbnNsYXRlWCgke2QuaW52ZXJ0ZWQ/IiI6Ii0ifSR7MTAwLU8udmFsdWV9JSlgfX0pLE09WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPWAke01hdGgubWF4KE8udmFsdWU/PzAsMCl9JWA7cmV0dXJuInZlcnRpY2FsIj09PWQub3JpZW50YXRpb24/e2hlaWdodDplfTp7d2lkdGg6ZX19KTtmdW5jdGlvbiBpc0FjdGl2ZShlKXtyZXR1cm4gZT09PU51bWJlcihkLm1vZGVsVmFsdWUpfWZ1bmN0aW9uIGlzRmlyc3QoZSl7cmV0dXJuIDA9PT1lfWZ1bmN0aW9uIHN0ZXBWYXJpYW50KGUpe3JldHVybiBpc0FjdGl2ZShlPU51bWJlcihlKSkmJiFpc0ZpcnN0KGUpPyJhY3RpdmUiOmlzRmlyc3QoZSkmJmlzQWN0aXZlKGUpPyJmaXJzdCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1OLnZhbHVlfShlKSYmaXNBY3RpdmUoZSk/Imxhc3QiOiJvdGhlciJ9Y29uc3QgRD1Zbi5jb21wdXRlZCgoKT0+Y2woe2V4dGVuZDpjbChvYyksLi4ueS51aT8ucHJvZ3Jlc3N8fHt9fSkoe2FuaW1hdGlvbjpkLmFuaW1hdGlvbixzaXplOmQuc2l6ZSxjb2xvcjpkLmNvbG9yLG9yaWVudGF0aW9uOmQub3JpZW50YXRpb24saW52ZXJ0ZWQ6ZC5pbnZlcnRlZH0pKTtyZXR1cm4oYyxoLGIseSk9PntoKHBlKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKHthczplLmFzLCJkYXRhLW9yaWVudGF0aW9uIjplLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpELnZhbHVlLnJvb3Qoe2NsYXNzOltZbi51bnJlZihFKT8ucm9vdCxkLmNsYXNzXX0pfSx5KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsYix5KT0+e2lmKCFoKXJldHVybltfLnZhbHVlfHwhZS5zdGF0dXMmJiF2LnN0YXR1cz9Zbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6InN0YXR1cyIsY2xhc3M6RC52YWx1ZS5zdGF0dXMoe2NsYXNzOlluLnVucmVmKEUpPy5zdGF0dXN9KSxzdHlsZTpNLnZhbHVlfSxbWW4ucmVuZGVyU2xvdChjLiRzbG90cywic3RhdHVzIix7cGVyY2VudDpPLnZhbHVlfSwoKT0+W1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoTy52YWx1ZSkrIiUgIiwxKV0pXSw2KSksWW4uY3JlYXRlVk5vZGUoWW4udW5yZWYoX3MpLFluLm1lcmdlUHJvcHMoWW4udW5yZWYoaykse21heDpOLnZhbHVlLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpELnZhbHVlLmJhc2Uoe2NsYXNzOlluLnVucmVmKEUpPy5iYXNlfSksc3R5bGU6e3RyYW5zZm9ybToidHJhbnNsYXRlWigwKSJ9fSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVZOb2RlKFluLnVucmVmKFRzKSx7ImRhdGEtc2xvdCI6ImluZGljYXRvciIsY2xhc3M6RC52YWx1ZS5pbmRpY2F0b3Ioe2NsYXNzOlluLnVucmVmKEUpPy5pbmRpY2F0b3J9KSxzdHlsZTpSLnZhbHVlfSxudWxsLDgsWyJjbGFzcyIsInN0eWxlIl0pXSksXzoxfSwxNixbIm1heCIsImNsYXNzIl0pLFQudmFsdWU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90Ijoic3RlcHMiLGNsYXNzOkQudmFsdWUuc3RlcHMoe2NsYXNzOlluLnVucmVmKEUpPy5zdGVwc30pfSxbKFluLm9wZW5CbG9jayghMCksWW4uY3JlYXRlQmxvY2soWW4uRnJhZ21lbnQsbnVsbCxZbi5yZW5kZXJMaXN0KGUubWF4LChlLGQpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soImRpdiIse2tleTpkLCJkYXRhLXNsb3QiOiJzdGVwIixjbGFzczpELnZhbHVlLnN0ZXAoe2NsYXNzOlluLnVucmVmKEUpPy5zdGVwLHN0ZXA6c3RlcFZhcmlhbnQoZCl9KX0sW1luLnJlbmRlclNsb3QoYy4kc2xvdHMsYHN0ZXAtJHtkfWAse3N0ZXA6ZX0sKCk9PltZbi5jcmVhdGVUZXh0Vk5vZGUoWW4udG9EaXNwbGF5U3RyaW5nKGUpLDEpXSldLDIpKSksMTI4KSldLDIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtfLnZhbHVlfHwhZS5zdGF0dXMmJiF2LnN0YXR1cz9oKCJceDNjIS0tLS1ceDNlIik6KGgoYDxkaXYgZGF0YS1zbG90PSJzdGF0dXMiIGNsYXNzPSIke21lKEQudmFsdWUuc3RhdHVzKHtjbGFzczpZbi51bnJlZihFKT8uc3RhdHVzfSkpfSIgc3R5bGU9IiR7d2UoTS52YWx1ZSl9IiR7eX0+YCksZmUoYy4kc2xvdHMsInN0YXR1cyIse3BlcmNlbnQ6Ty52YWx1ZX0sKCk9PntoKGAke3llKE8udmFsdWUpfSUgYCl9LGgsYix5KSxoKCI8L2Rpdj4iKSksaChwZShZbi51bnJlZihfcyksWW4ubWVyZ2VQcm9wcyhZbi51bnJlZihrKSx7bWF4Ok4udmFsdWUsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkQudmFsdWUuYmFzZSh7Y2xhc3M6WW4udW5yZWYoRSk/LmJhc2V9KSxzdHlsZTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVaKDApIn19KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihUcykseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczpZbi51bnJlZihFKT8uaW5kaWNhdG9yfSksc3R5bGU6Ui52YWx1ZX0sbnVsbCw4LFsiY2xhc3MiLCJzdHlsZSJdKV07YyhwZShZbi51bnJlZihUcykseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczpZbi51bnJlZihFKT8uaW5kaWNhdG9yfSksc3R5bGU6Ui52YWx1ZX0sbnVsbCxkLGgpKX0pLF86MX0sYix5KSksVC52YWx1ZT8oaChgPGRpdiBkYXRhLXNsb3Q9InN0ZXBzIiBjbGFzcz0iJHttZShELnZhbHVlLnN0ZXBzKHtjbGFzczpZbi51bnJlZihFKT8uc3RlcHN9KSl9IiR7eX0+XHgzYyEtLVstLVx4M2VgKSx4ZShlLm1heCwoZSxkKT0+e2goYDxkaXYgZGF0YS1zbG90PSJzdGVwIiBjbGFzcz0iJHttZShELnZhbHVlLnN0ZXAoe2NsYXNzOlluLnVucmVmKEUpPy5zdGVwLHN0ZXA6c3RlcFZhcmlhbnQoZCl9KSl9IiR7eX0+YCksZmUoYy4kc2xvdHMsYHN0ZXAtJHtkfWAse3N0ZXA6ZX0sKCk9PntoKGAke3llKGUpfWApfSxoLGIseSksaCgiPC9kaXY+Iil9KSxoKCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpKTpoKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LGIpKX19fSxhYz1yYy5zZXR1cDtyYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Qcm9ncmVzcy52dWUiKSxhYz9hYyhlLGMpOnZvaWQgMH07Y29uc3QgaWM9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBncm91cCBvdmVyZmxvdy1oaWRkZW4gYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1sZyByaW5nIHJpbmctZGVmYXVsdCBwLTQgZmxleCBnYXAtMi41IGZvY3VzOm91dGxpbmUtbm9uZSIsd3JhcHBlcjoidy0wIGZsZXgtMSBmbGV4IGZsZXgtY29sIix0aXRsZToidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWhpZ2hsaWdodGVkIixkZXNjcmlwdGlvbjoidGV4dC1zbSB0ZXh0LW11dGVkIixpY29uOiJzaHJpbmstMCBzaXplLTUiLGF2YXRhcjoic2hyaW5rLTAiLGF2YXRhclNpemU6IjJ4bCIsYWN0aW9uczoiZmxleCBnYXAtMS41IHNocmluay0wIixwcm9ncmVzczoiYWJzb2x1dGUgaW5zZXQteC0wIGJvdHRvbS0wIixjbG9zZToicC0wIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5Ontyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkiLGljb246InRleHQtcHJpbWFyeSJ9LHNlY29uZGFyeTp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkiLGljb246InRleHQtc2Vjb25kYXJ5In0sc3VjY2Vzczp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIixpY29uOiJ0ZXh0LXN1Y2Nlc3MifSxpbmZvOntyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8iLGljb246InRleHQtaW5mbyJ9LHdhcm5pbmc6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyIsaWNvbjoidGV4dC13YXJuaW5nIn0sZXJyb3I6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IiLGljb246InRleHQtZXJyb3IifSxuZXV0cmFsOntyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIixpY29uOiJ0ZXh0LWhpZ2hsaWdodGVkIn19LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJpdGVtcy1jZW50ZXIiLGFjdGlvbnM6Iml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntyb290OiJpdGVtcy1zdGFydCIsYWN0aW9uczoiaXRlbXMtc3RhcnQgbXQtMi41In19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fX0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSJ9fSxzYz17X19uYW1lOiJVVG9hc3QiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0aXRsZTp7dHlwZTpbU3RyaW5nLE9iamVjdCxGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOltTdHJpbmcsT2JqZWN0LEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0scHJvZ3Jlc3M6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBhdXNlIiwicmVzdW1lIiwic3dpcGVTdGFydCIsInN3aXBlTW92ZSIsInN3aXBlQ2FuY2VsIiwic3dpcGVFbmQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2V4cG9zZTpjLGVtaXQ6ZH0pe2NvbnN0IGg9ZSx2PWQsYj1Zbi51c2VTbG90cygpLHt0Onl9PXVzZUxvY2FsZSgpLEU9dXNlQXBwQ29uZmlnKCksaz11c2VDb21wb25lbnRVSSgidG9hc3QiLGgpLF89dXNlRm9yd2FyZFByb3BzRW1pdHMocmVhY3RpdmVQaWNrKGgsImFzIiwiZGVmYXVsdE9wZW4iLCJvcGVuIiwiZHVyYXRpb24iLCJ0eXBlIiksdiksVD1Zbi5jb21wdXRlZCgoKT0+Y2woe2V4dGVuZDpjbChpYyksLi4uRS51aT8udG9hc3R8fHt9fSkoe2NvbG9yOmguY29sb3Isb3JpZW50YXRpb246aC5vcmllbnRhdGlvbix0aXRsZTohIWgudGl0bGV8fCEhYi50aXRsZX0pKSxOPVluLnVzZVRlbXBsYXRlUmVmKCJyb290UmVmIiksTz1Zbi5yZWYoMCk7cmV0dXJuIGMoe2hlaWdodDpPfSksKGMsZCx2LFIpPT57ZChwZShZbi51bnJlZihVcyksWW4ubWVyZ2VQcm9wcyh7cmVmX2tleToicm9vdFJlZiIscmVmOk59LFluLnVucmVmKF8pLHsiZGF0YS1vcmllbnRhdGlvbiI6ZS5vcmllbnRhdGlvbiwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6VC52YWx1ZS5yb290KHtjbGFzczpbWW4udW5yZWYoayk/LnJvb3QsaC5jbGFzc119KSxzdHlsZTp7Ii0taGVpZ2h0IjpPLnZhbHVlfX0sUikse2RlZmF1bHQ6WW4ud2l0aEN0eCgoe3JlbWFpbmluZzpkLGR1cmF0aW9uOmgsb3Blbjp2fSxfLE4sTyk9PntpZighXylyZXR1cm5bWW4ucmVuZGVyU2xvdChjLiRzbG90cywibGVhZGluZyIse3VpOlQudmFsdWV9LCgpPT5bZS5hdmF0YXI/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKEJsLFluLm1lcmdlUHJvcHMoe2tleTowLHNpemU6WW4udW5yZWYoayk/LmF2YXRhclNpemV8fFQudmFsdWUuYXZhdGFyU2l6ZSgpfSxlLmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6VC52YWx1ZS5hdmF0YXIoe2NsYXNzOlluLnVucmVmKGspPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuaWNvbj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sod2wse2tleToxLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpULnZhbHVlLmljb24oe2NsYXNzOlluLnVucmVmKGspPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLFluLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6VC52YWx1ZS53cmFwcGVyKHtjbGFzczpZbi51bnJlZihrKT8ud3JhcHBlcn0pfSxbZS50aXRsZXx8Yi50aXRsZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoSHMpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOlQudmFsdWUudGl0bGUoe2NsYXNzOlluLnVucmVmKGspPy50aXRsZX0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChjLiRzbG90cywidGl0bGUiLHt9LCgpPT5bImZ1bmN0aW9uIj09dHlwZW9mIGUudGl0bGU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGUudGl0bGUoKSkse2tleTowfSkpOiJvYmplY3QiPT10eXBlb2YgZS50aXRsZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSkse2tleToxfSkpOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5GcmFnbWVudCx7a2V5OjJ9LFtZbi5jcmVhdGVUZXh0Vk5vZGUoWW4udG9EaXNwbGF5U3RyaW5nKGUudGl0bGUpLDEpXSw2NCkpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmRlc2NyaXB0aW9ufHxiLmRlc2NyaXB0aW9uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihWcykse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6VC52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6WW4udW5yZWYoayk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PlsiZnVuY3Rpb24iPT10eXBlb2YgZS5kZXNjcmlwdGlvbj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbigpKSx7a2V5OjB9KSk6Im9iamVjdCI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLmRlc2NyaXB0aW9uKSx7a2V5OjF9KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLkZyYWdtZW50LHtrZXk6Mn0sW1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldLDY0KSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLCJ2ZXJ0aWNhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6VC52YWx1ZS5hY3Rpb25zKHtjbGFzczpZbi51bnJlZihrKT8uYWN0aW9uc30pfSxbWW4ucmVuZGVyU2xvdChjLiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsoWW4ub3BlbkJsb2NrKCEwKSxZbi5jcmVhdGVCbG9jayhZbi5GcmFnbWVudCxudWxsLFluLnJlbmRlckxpc3QoZS5hY3Rpb25zLChjLGQpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoRnMpLHtrZXk6ZCwiYWx0LXRleHQiOmMubGFiZWx8fCJBY3Rpb24iLCJhcy1jaGlsZCI6IiIsb25DbGljazpZbi53aXRoTW9kaWZpZXJzKCgpPT57fSxbInN0b3AiXSl9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVWTm9kZSh0YyxZbi5tZXJnZVByb3BzKHtzaXplOiJ4cyIsY29sb3I6ZS5jb2xvcn0se3JlZl9mb3I6ITB9LGMpLG51bGwsMTYsWyJjb2xvciJdKV0pLF86Mn0sMTAzMixbImFsdC10ZXh0Iiwib25DbGljayJdKSkpLDEyOCkpXSldLDIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSwiaG9yaXpvbnRhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyl8fGUuY2xvc2U/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6VC52YWx1ZS5hY3Rpb25zKHtjbGFzczpZbi51bnJlZihrKT8uYWN0aW9ucyxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCJ9KX0sWyJob3Jpem9udGFsIj09PWUub3JpZW50YXRpb24mJihlLmFjdGlvbnM/Lmxlbmd0aHx8Yi5hY3Rpb25zKT9Zbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJhY3Rpb25zIix7a2V5OjB9LCgpPT5bKFluLm9wZW5CbG9jayghMCksWW4uY3JlYXRlQmxvY2soWW4uRnJhZ21lbnQsbnVsbCxZbi5yZW5kZXJMaXN0KGUuYWN0aW9ucywoYyxkKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKEZzKSx7a2V5OmQsImFsdC10ZXh0IjpjLmxhYmVsfHwiQWN0aW9uIiwiYXMtY2hpbGQiOiIiLG9uQ2xpY2s6WW4ud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUodGMsWW4ubWVyZ2VQcm9wcyh7c2l6ZToieHMiLGNvbG9yOmUuY29sb3J9LHtyZWZfZm9yOiEwfSxjKSxudWxsLDE2LFsiY29sb3IiXSldKSxfOjJ9LDEwMzIsWyJhbHQtdGV4dCIsIm9uQ2xpY2siXSkpKSwxMjgpKV0pOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jbG9zZXx8Yi5jbG9zZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoJHMpLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChjLiRzbG90cywiY2xvc2UiLHt1aTpULnZhbHVlfSwoKT0+W2UuY2xvc2U/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKHRjLFluLm1lcmdlUHJvcHMoe2tleTowLGljb246ZS5jbG9zZUljb258fFluLnVucmVmKEUpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6WW4udW5yZWYoeSkoInRvYXN0LmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgZS5jbG9zZT9lLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOlQudmFsdWUuY2xvc2Uoe2NsYXNzOlluLnVucmVmKGspPy5jbG9zZX0pLG9uQ2xpY2s6WW4ud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiLCJvbkNsaWNrIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjN9KSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5wcm9ncmVzcyYmdiYmZD4wJiZoPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhyYyxZbi5tZXJnZVByb3BzKHtrZXk6MSwibW9kZWwtdmFsdWUiOmQvaCoxMDAsY29sb3I6ZS5jb2xvcn0sIm9iamVjdCI9PXR5cGVvZiBlLnByb2dyZXNzP2UucHJvZ3Jlc3M6e30se3NpemU6InNtIiwiZGF0YS1zbG90IjoicHJvZ3Jlc3MiLGNsYXNzOlQudmFsdWUucHJvZ3Jlc3Moe2NsYXNzOlluLnVucmVmKGspPy5wcm9ncmVzc30pfSksbnVsbCwxNixbIm1vZGVsLXZhbHVlIiwiY29sb3IiLCJjbGFzcyJdKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07ZmUoYy4kc2xvdHMsImxlYWRpbmciLHt1aTpULnZhbHVlfSwoKT0+e2UuYXZhdGFyP18ocGUoQmwsWW4ubWVyZ2VQcm9wcyh7c2l6ZTpZbi51bnJlZihrKT8uYXZhdGFyU2l6ZXx8VC52YWx1ZS5hdmF0YXJTaXplKCl9LGUuYXZhdGFyLHsiZGF0YS1zbG90IjoiYXZhdGFyIixjbGFzczpULnZhbHVlLmF2YXRhcih7Y2xhc3M6WW4udW5yZWYoayk/LmF2YXRhcn0pfSksbnVsbCxOLE8pKTplLmljb24/XyhwZSh3bCx7bmFtZTplLmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlQudmFsdWUuaWNvbih7Y2xhc3M6WW4udW5yZWYoayk/Lmljb259KX0sbnVsbCxOLE8pKTpfKCJceDNjIS0tLS1ceDNlIil9LF8sTixPKSxfKGA8ZGl2IGRhdGEtc2xvdD0id3JhcHBlciIgY2xhc3M9IiR7bWUoVC52YWx1ZS53cmFwcGVyKHtjbGFzczpZbi51bnJlZihrKT8ud3JhcHBlcn0pKX0iJHtPfT5gKSxlLnRpdGxlfHxiLnRpdGxlP18ocGUoWW4udW5yZWYoSHMpLHsiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOlQudmFsdWUudGl0bGUoe2NsYXNzOlluLnVucmVmKGspPy50aXRsZX0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJ0aXRsZSIse30sKCk9PlsiZnVuY3Rpb24iPT10eXBlb2YgZS50aXRsZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSgpKSx7a2V5OjB9KSk6Im9iamVjdCI9PXR5cGVvZiBlLnRpdGxlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLnRpdGxlKSx7a2V5OjF9KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLkZyYWdtZW50LHtrZXk6Mn0sW1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS50aXRsZSksMSldLDY0KSldKV07ZmUoYy4kc2xvdHMsInRpdGxlIix7fSwoKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiBlLnRpdGxlP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSgpKSxudWxsLG51bGwpLHYsYik6Im9iamVjdCI9PXR5cGVvZiBlLnRpdGxlP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSksbnVsbCxudWxsKSx2LGIpOmgoYFx4M2MhLS1bLS1ceDNlJHt5ZShlLnRpdGxlKX1ceDNjIS0tXS0tXHgzZWApfSxoLHYsYil9KSxfOjJ9LE4sTykpOl8oIlx4M2MhLS0tLVx4M2UiKSxlLmRlc2NyaXB0aW9ufHxiLmRlc2NyaXB0aW9uP18ocGUoWW4udW5yZWYoVnMpLHsiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOlQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOlluLnVucmVmKGspPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PlsiZnVuY3Rpb24iPT10eXBlb2YgZS5kZXNjcmlwdGlvbj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbigpKSx7a2V5OjB9KSk6Im9iamVjdCI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLmRlc2NyaXB0aW9uKSx7a2V5OjF9KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLkZyYWdtZW50LHtrZXk6Mn0sW1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldLDY0KSldKV07ZmUoYy4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbigpKSxudWxsLG51bGwpLHYsYik6Im9iamVjdCI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbiksbnVsbCxudWxsKSx2LGIpOmgoYFx4M2MhLS1bLS1ceDNlJHt5ZShlLmRlc2NyaXB0aW9uKX1ceDNjIS0tXS0tXHgzZWApfSxoLHYsYil9KSxfOjJ9LE4sTykpOl8oIlx4M2MhLS0tLVx4M2UiKSwidmVydGljYWwiPT09ZS5vcmllbnRhdGlvbiYmKGUuYWN0aW9ucz8ubGVuZ3RofHxiLmFjdGlvbnMpPyhfKGA8ZGl2IGRhdGEtc2xvdD0iYWN0aW9ucyIgY2xhc3M9IiR7bWUoVC52YWx1ZS5hY3Rpb25zKHtjbGFzczpZbi51bnJlZihrKT8uYWN0aW9uc30pKX0iJHtPfT5gKSxmZShjLiRzbG90cywiYWN0aW9ucyIse30sKCk9PntfKCJceDNjIS0tWy0tXHgzZSIpLHhlKGUuYWN0aW9ucywoYyxkKT0+e18ocGUoWW4udW5yZWYoRnMpLHtrZXk6ZCwiYWx0LXRleHQiOmMubGFiZWx8fCJBY3Rpb24iLCJhcy1jaGlsZCI6IiIsb25DbGljazooKT0+e319LHtkZWZhdWx0OlluLndpdGhDdHgoKGQsaCx2LGIpPT57aWYoIWgpcmV0dXJuW1luLmNyZWF0ZVZOb2RlKHRjLFluLm1lcmdlUHJvcHMoe3NpemU6InhzIixjb2xvcjplLmNvbG9yfSx7cmVmX2ZvcjohMH0sYyksbnVsbCwxNixbImNvbG9yIl0pXTtoKHBlKHRjLFluLm1lcmdlUHJvcHMoe3NpemU6InhzIixjb2xvcjplLmNvbG9yfSx7cmVmX2ZvcjohMH0sYyksbnVsbCx2LGIpKX0pLF86Mn0sTixPKSl9KSxfKCJceDNjIS0tXS0tXHgzZSIpfSxfLE4sTyksXygiPC9kaXY+IikpOl8oIlx4M2MhLS0tLVx4M2UiKSxfKCI8L2Rpdj4iKSwiaG9yaXpvbnRhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyl8fGUuY2xvc2U/KF8oYDxkaXYgZGF0YS1zbG90PSJhY3Rpb25zIiBjbGFzcz0iJHttZShULnZhbHVlLmFjdGlvbnMoe2NsYXNzOlluLnVucmVmKGspPy5hY3Rpb25zLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIn0pKX0iJHtPfT5gKSwiaG9yaXpvbnRhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/ZmUoYy4kc2xvdHMsImFjdGlvbnMiLHt9LCgpPT57XygiXHgzYyEtLVstLVx4M2UiKSx4ZShlLmFjdGlvbnMsKGMsZCk9PntfKHBlKFluLnVucmVmKEZzKSx7a2V5OmQsImFsdC10ZXh0IjpjLmxhYmVsfHwiQWN0aW9uIiwiYXMtY2hpbGQiOiIiLG9uQ2xpY2s6KCk9Pnt9fSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5jcmVhdGVWTm9kZSh0YyxZbi5tZXJnZVByb3BzKHtzaXplOiJ4cyIsY29sb3I6ZS5jb2xvcn0se3JlZl9mb3I6ITB9LGMpLG51bGwsMTYsWyJjb2xvciJdKV07aChwZSh0YyxZbi5tZXJnZVByb3BzKHtzaXplOiJ4cyIsY29sb3I6ZS5jb2xvcn0se3JlZl9mb3I6ITB9LGMpLG51bGwsdixiKSl9KSxfOjJ9LE4sTykpfSksXygiXHgzYyEtLV0tLVx4M2UiKX0sXyxOLE8pOl8oIlx4M2MhLS0tLVx4M2UiKSxlLmNsb3NlfHxiLmNsb3NlP18ocGUoWW4udW5yZWYoJHMpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJjbG9zZSIse3VpOlQudmFsdWV9LCgpPT5bZS5jbG9zZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sodGMsWW4ubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjplLmNsb3NlSWNvbnx8WW4udW5yZWYoRSkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjpZbi51bnJlZih5KSgidG9hc3QuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBlLmNsb3NlP2UuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6VC52YWx1ZS5jbG9zZSh7Y2xhc3M6WW4udW5yZWYoayk/LmNsb3NlfSksb25DbGljazpZbi53aXRoTW9kaWZpZXJzKCgpPT57fSxbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07ZmUoYy4kc2xvdHMsImNsb3NlIix7dWk6VC52YWx1ZX0sKCk9PntlLmNsb3NlP2gocGUodGMsWW4ubWVyZ2VQcm9wcyh7aWNvbjplLmNsb3NlSWNvbnx8WW4udW5yZWYoRSkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjpZbi51bnJlZih5KSgidG9hc3QuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBlLmNsb3NlP2UuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6VC52YWx1ZS5jbG9zZSh7Y2xhc3M6WW4udW5yZWYoayk/LmNsb3NlfSksb25DbGljazooKT0+e319KSxudWxsLHYsYikpOmgoIlx4M2MhLS0tLVx4M2UiKX0saCx2LGIpfSksXzoyfSxOLE8pKTpfKCJceDNjIS0tLS1ceDNlIiksXygiPC9kaXY+IikpOl8oIlx4M2MhLS0tLVx4M2UiKSxlLnByb2dyZXNzJiZ2JiZkPjAmJmg/XyhwZShyYyxZbi5tZXJnZVByb3BzKHsibW9kZWwtdmFsdWUiOmQvaCoxMDAsY29sb3I6ZS5jb2xvcn0sIm9iamVjdCI9PXR5cGVvZiBlLnByb2dyZXNzP2UucHJvZ3Jlc3M6e30se3NpemU6InNtIiwiZGF0YS1zbG90IjoicHJvZ3Jlc3MiLGNsYXNzOlQudmFsdWUucHJvZ3Jlc3Moe2NsYXNzOlluLnVucmVmKGspPy5wcm9ncmVzc30pfSksbnVsbCxOLE8pKTpfKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LHYpKX19fSxsYz1zYy5zZXR1cDtzYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ub2FzdC52dWUiKSxsYz9sYyhlLGMpOnZvaWQgMH07Y29uc3QgY2M9e3Nsb3RzOnt2aWV3cG9ydDoiZml4ZWQgZmxleCBmbGV4LWNvbCB3LVtjYWxjKDEwMCUtMnJlbSldIHNtOnctOTYgei1bMTAwXSBkYXRhLVtleHBhbmRlZD10cnVlXTpoLSgtLWhlaWdodCkgZm9jdXM6b3V0bGluZS1ub25lIixiYXNlOiJwb2ludGVyLWV2ZW50cy1hdXRvIGFic29sdXRlIGluc2V0LXgtMCB6LSgtLWluZGV4KSB0cmFuc2Zvcm0tKC0tdHJhbnNmb3JtKSBkYXRhLVtleHBhbmRlZD1mYWxzZV06ZGF0YS1bZnJvbnQ9ZmFsc2VdOmgtKC0tZnJvbnQtaGVpZ2h0KSBkYXRhLVtleHBhbmRlZD1mYWxzZV06ZGF0YS1bZnJvbnQ9ZmFsc2VdOio6b3BhY2l0eS0wIGRhdGEtW2Zyb250PWZhbHNlXToqOnRyYW5zaXRpb24tb3BhY2l0eSBkYXRhLVtmcm9udD1mYWxzZV06KjpkdXJhdGlvbi0xMDAgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVt0b2FzdC1jbG9zZWRfMjAwbXNfZWFzZS1pbi1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06ZGF0YS1bZXhwYW5kZWQ9ZmFsc2VdOmRhdGEtW2Zyb250PWZhbHNlXTphbmltYXRlLVt0b2FzdC1jb2xsYXBzZWQtY2xvc2VkXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1vcGVuXTpkYXRhLVtwdWxzaW5nPW9kZF06YW5pbWF0ZS1bdG9hc3QtcHVsc2UtYV8zMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9b3Blbl06ZGF0YS1bcHVsc2luZz1ldmVuXTphbmltYXRlLVt0b2FzdC1wdWxzZS1iXzMwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzd2lwZT1tb3ZlXTp0cmFuc2l0aW9uLW5vbmUgdHJhbnNpdGlvbi1bdHJhbnNmb3JtLHRyYW5zbGF0ZSxoZWlnaHRdIGR1cmF0aW9uLTIwMCBlYXNlLW91dCJ9LHZhcmlhbnRzOntwb3NpdGlvbjp7InRvcC1sZWZ0Ijp7dmlld3BvcnQ6ImxlZnQtNCJ9LCJ0b3AtY2VudGVyIjp7dmlld3BvcnQ6ImxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIn0sInRvcC1yaWdodCI6e3ZpZXdwb3J0OiJyaWdodC00In0sImJvdHRvbS1sZWZ0Ijp7dmlld3BvcnQ6ImxlZnQtNCJ9LCJib3R0b20tY2VudGVyIjp7dmlld3BvcnQ6ImxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIn0sImJvdHRvbS1yaWdodCI6e3ZpZXdwb3J0OiJyaWdodC00In19LHN3aXBlRGlyZWN0aW9uOnt1cDoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS11cF8yMDBtc19lYXNlLW91dF0iLHJpZ2h0OiJkYXRhLVtzd2lwZT1lbmRdOmFuaW1hdGUtW3RvYXN0LXNsaWRlLXJpZ2h0XzIwMG1zX2Vhc2Utb3V0XSIsZG93bjoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS1kb3duXzIwMG1zX2Vhc2Utb3V0XSIsbGVmdDoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS1sZWZ0XzIwMG1zX2Vhc2Utb3V0XSJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7cG9zaXRpb246WyJ0b3AtbGVmdCIsInRvcC1jZW50ZXIiLCJ0b3AtcmlnaHQiXSxjbGFzczp7dmlld3BvcnQ6InRvcC00IixiYXNlOiJ0b3AtMCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVt0b2FzdC1zbGlkZS1pbi1mcm9tLXRvcF8yMDBtc19lYXNlLWluLW91dF0ifX0se3Bvc2l0aW9uOlsiYm90dG9tLWxlZnQiLCJib3R0b20tY2VudGVyIiwiYm90dG9tLXJpZ2h0Il0sY2xhc3M6e3ZpZXdwb3J0OiJib3R0b20tNCIsYmFzZToiYm90dG9tLTAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtaW4tZnJvbS1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRdIn19LHtzd2lwZURpcmVjdGlvbjpbImxlZnQiLCJyaWdodCJdLGNsYXNzOiJkYXRhLVtzd2lwZT1tb3ZlXTp0cmFuc2xhdGUteC0oLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteCkgZGF0YS1bc3dpcGU9ZW5kXTp0cmFuc2xhdGUteC0oLS1yZWthLXRvYXN0LXN3aXBlLWVuZC14KSBkYXRhLVtzd2lwZT1jYW5jZWxdOnRyYW5zbGF0ZS14LTAifSx7c3dpcGVEaXJlY3Rpb246WyJ1cCIsImRvd24iXSxjbGFzczoiZGF0YS1bc3dpcGU9bW92ZV06dHJhbnNsYXRlLXktKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXkpIGRhdGEtW3N3aXBlPWVuZF06dHJhbnNsYXRlLXktKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteSkgZGF0YS1bc3dpcGU9Y2FuY2VsXTp0cmFuc2xhdGUteS0wIn1dLGRlZmF1bHRWYXJpYW50czp7cG9zaXRpb246ImJvdHRvbS1yaWdodCJ9fSx1Yz17bmFtZToiVG9hc3RlciJ9LGRjPU9iamVjdC5hc3NpZ24odWMse19fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntwb3NpdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHBhbmQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxwcm9ncmVzczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxtYXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjVlM30sZGlzYWJsZVN3aXBlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN3aXBlVGhyZXNob2xkOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSx7dG9hc3RzOmQscmVtb3ZlOmh9PXVzZVRvYXN0KCksdj11c2VBcHBDb25maWcoKSxiPXVzZUNvbXBvbmVudFVJKCJ0b2FzdGVyIixjKTtZbi5wcm92aWRlKG9sLFluLnRvUmVmKCgpPT5jLm1heCkpO2NvbnN0IHk9dXNlRm9yd2FyZFByb3BzKHJlYWN0aXZlUGljayhjLCJkdXJhdGlvbiIsImxhYmVsIiwic3dpcGVUaHJlc2hvbGQiLCJkaXNhYmxlU3dpcGUiKSksRT11c2VQb3J0YWwoWW4udG9SZWYoKCk9PmMucG9ydGFsKSksaz1Zbi5jb21wdXRlZCgoKT0+e3N3aXRjaChjLnBvc2l0aW9uKXtjYXNlInRvcC1jZW50ZXIiOnJldHVybiJ1cCI7Y2FzZSJ0b3AtcmlnaHQiOmNhc2UiYm90dG9tLXJpZ2h0IjpyZXR1cm4icmlnaHQiO2Nhc2UiYm90dG9tLWNlbnRlciI6cmV0dXJuImRvd24iO2Nhc2UidG9wLWxlZnQiOmNhc2UiYm90dG9tLWxlZnQiOnJldHVybiJsZWZ0In1yZXR1cm4icmlnaHQifSksXz1Zbi5jb21wdXRlZCgoKT0+Y2woe2V4dGVuZDpjbChjYyksLi4udi51aT8udG9hc3Rlcnx8e319KSh7cG9zaXRpb246Yy5wb3NpdGlvbixzd2lwZURpcmVjdGlvbjprLnZhbHVlfSkpO2Z1bmN0aW9uIG9uVXBkYXRlT3BlbihlLGMpe2V8fGgoYyl9Y29uc3QgVD1Zbi5yZWYoITEpLE49WW4uY29tcHV0ZWQoKCk9PmMuZXhwYW5kfHxULnZhbHVlKSxPPVluLnJlZihbXSksUj1Zbi5jb21wdXRlZCgoKT0+Ty52YWx1ZS5yZWR1Y2UoKGUse2hlaWdodDpjfSk9PmUrYysxNiwwKSksTT1Zbi5jb21wdXRlZCgoKT0+Ty52YWx1ZVtPLnZhbHVlLmxlbmd0aC0xXT8uaGVpZ2h0fHwwKTtmdW5jdGlvbiBnZXRPZmZzZXQoZSl7cmV0dXJuIE8udmFsdWUuc2xpY2UoZSsxKS5yZWR1Y2UoKGUse2hlaWdodDpjfSk9PmUrYysxNiwwKX1yZXR1cm4oaCx2LEQsTCk9Pnt2KHBlKFluLnVucmVmKElzKSxZbi5tZXJnZVByb3BzKHsic3dpcGUtZGlyZWN0aW9uIjprLnZhbHVlfSxZbi51bnJlZih5KSxMKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCh2LHksayxEKT0+e2lmKCF5KXJldHVybltZbi5yZW5kZXJTbG90KGguJHNsb3RzLCJkZWZhdWx0IiksKFluLm9wZW5CbG9jayghMCksWW4uY3JlYXRlQmxvY2soWW4uRnJhZ21lbnQsbnVsbCxZbi5yZW5kZXJMaXN0KFluLnVucmVmKGQpLChjLGgpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soc2MsWW4ubWVyZ2VQcm9wcyh7a2V5OmMuaWQscmVmX2ZvcjohMCxyZWZfa2V5OiJyZWZzIixyZWY6Tyxwcm9ncmVzczplLnByb2dyZXNzfSx7cmVmX2ZvcjohMH0sWW4udW5yZWYob21pdCkoYyxbImlkIiwiY2xvc2UiLCJfZHVwbGljYXRlIiwiX3VwZGF0ZWQiXSkse2Nsb3NlOmMuY2xvc2UsImRhdGEtZXhwYW5kZWQiOk4udmFsdWUsImRhdGEtZnJvbnQiOiFOLnZhbHVlJiZoPT09WW4udW5yZWYoZCkubGVuZ3RoLTEsImRhdGEtcHVsc2luZyI6Yy5fZHVwbGljYXRlP2MuX2R1cGxpY2F0ZSUyPT0wPyJldmVuIjoib2RkIjp2b2lkIDAsc3R5bGU6eyItLWluZGV4IjpoLVluLnVucmVmKGQpLmxlbmd0aCtZbi51bnJlZihkKS5sZW5ndGgsIi0tYmVmb3JlIjpZbi51bnJlZihkKS5sZW5ndGgtMS1oLCItLW9mZnNldCI6Z2V0T2Zmc2V0KGgpLCItLXNjYWxlIjpOLnZhbHVlPyIxIjoiY2FsYygxIC0gdmFyKC0tYmVmb3JlKSAqIHZhcigtLXNjYWxlLWZhY3RvcikpIiwiLS10cmFuc2xhdGUiOk4udmFsdWU/ImNhbGModmFyKC0tb2Zmc2V0KSAqIHZhcigtLXRyYW5zbGF0ZS1mYWN0b3IpKSI6ImNhbGModmFyKC0tYmVmb3JlKSAqIHZhcigtLWdhcCkpIiwiLS10cmFuc2Zvcm0iOiJ0cmFuc2xhdGVZKHZhcigtLXRyYW5zbGF0ZSkpIHNjYWxlKHZhcigtLXNjYWxlKSkifSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Xy52YWx1ZS5iYXNlKHtjbGFzczpbWW4udW5yZWYoYik/LmJhc2UsYy5vbkNsaWNrPyJjdXJzb3ItcG9pbnRlciI6dm9pZCAwXX0pLCJvblVwZGF0ZTpvcGVuIjplPT5vblVwZGF0ZU9wZW4oZSxjLmlkKSxvbkNsaWNrOmU9PmMub25DbGljayYmYy5vbkNsaWNrKGMpfSksbnVsbCwxNixbInByb2dyZXNzIiwiY2xvc2UiLCJkYXRhLWV4cGFuZGVkIiwiZGF0YS1mcm9udCIsImRhdGEtcHVsc2luZyIsInN0eWxlIiwiY2xhc3MiLCJvblVwZGF0ZTpvcGVuIiwib25DbGljayJdKSkpLDEyOCkpLFluLmNyZWF0ZVZOb2RlKFluLnVucmVmKHpzKSxZbi51bnJlZihFKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUoWW4udW5yZWYoWHMpLHsiZGF0YS1leHBhbmRlZCI6Ti52YWx1ZSwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOl8udmFsdWUudmlld3BvcnQoe2NsYXNzOltZbi51bnJlZihiKT8udmlld3BvcnQsYy5jbGFzc119KSxzdHlsZTp7Ii0tc2NhbGUtZmFjdG9yIjoiMC4wNSIsIi0tdHJhbnNsYXRlLWZhY3RvciI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjFweCI6Ii0xcHgiLCItLWdhcCI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjE2cHgiOiItMTZweCIsIi0tZnJvbnQtaGVpZ2h0IjpgJHtNLnZhbHVlfXB4YCwiLS1oZWlnaHQiOmAke1IudmFsdWV9cHhgfSxvbk1vdXNlZW50ZXI6ZT0+VC52YWx1ZT0hMCxvbk1vdXNlbGVhdmU6ZT0+VC52YWx1ZT0hMX0sbnVsbCw4LFsiZGF0YS1leHBhbmRlZCIsImNsYXNzIiwic3R5bGUiLCJvbk1vdXNlZW50ZXIiLCJvbk1vdXNlbGVhdmUiXSldKSxfOjF9LDE2KV07ZmUoaC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwseSxrLEQpLHkoIlx4M2MhLS1bLS1ceDNlIikseGUoWW4udW5yZWYoZCksKGMsaCk9Pnt5KHBlKHNjLFluLm1lcmdlUHJvcHMoe2tleTpjLmlkLHJlZl9mb3I6ITAscmVmX2tleToicmVmcyIscmVmOk8scHJvZ3Jlc3M6ZS5wcm9ncmVzc30se3JlZl9mb3I6ITB9LFluLnVucmVmKG9taXQpKGMsWyJpZCIsImNsb3NlIiwiX2R1cGxpY2F0ZSIsIl91cGRhdGVkIl0pLHtjbG9zZTpjLmNsb3NlLCJkYXRhLWV4cGFuZGVkIjpOLnZhbHVlLCJkYXRhLWZyb250IjohTi52YWx1ZSYmaD09PVluLnVucmVmKGQpLmxlbmd0aC0xLCJkYXRhLXB1bHNpbmciOmMuX2R1cGxpY2F0ZT9jLl9kdXBsaWNhdGUlMj09MD8iZXZlbiI6Im9kZCI6dm9pZCAwLHN0eWxlOnsiLS1pbmRleCI6aC1Zbi51bnJlZihkKS5sZW5ndGgrWW4udW5yZWYoZCkubGVuZ3RoLCItLWJlZm9yZSI6WW4udW5yZWYoZCkubGVuZ3RoLTEtaCwiLS1vZmZzZXQiOmdldE9mZnNldChoKSwiLS1zY2FsZSI6Ti52YWx1ZT8iMSI6ImNhbGMoMSAtIHZhcigtLWJlZm9yZSkgKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIsIi0tdHJhbnNsYXRlIjpOLnZhbHVlPyJjYWxjKHZhcigtLW9mZnNldCkgKiB2YXIoLS10cmFuc2xhdGUtZmFjdG9yKSkiOiJjYWxjKHZhcigtLWJlZm9yZSkgKiB2YXIoLS1nYXApKSIsIi0tdHJhbnNmb3JtIjoidHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKSBzY2FsZSh2YXIoLS1zY2FsZSkpIn0sImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOl8udmFsdWUuYmFzZSh7Y2xhc3M6W1luLnVucmVmKGIpPy5iYXNlLGMub25DbGljaz8iY3Vyc29yLXBvaW50ZXIiOnZvaWQgMF19KSwib25VcGRhdGU6b3BlbiI6ZT0+b25VcGRhdGVPcGVuKGUsYy5pZCksb25DbGljazplPT5jLm9uQ2xpY2smJmMub25DbGljayhjKX0pLG51bGwsayxEKSl9KSx5KCJceDNjIS0tXS0tXHgzZSIpLHkocGUoWW4udW5yZWYoenMpLFluLnVucmVmKEUpLHtkZWZhdWx0OlluLndpdGhDdHgoKGQsaCx2LHkpPT57aWYoIWgpcmV0dXJuW1luLmNyZWF0ZVZOb2RlKFluLnVucmVmKFhzKSx7ImRhdGEtZXhwYW5kZWQiOk4udmFsdWUsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpfLnZhbHVlLnZpZXdwb3J0KHtjbGFzczpbWW4udW5yZWYoYik/LnZpZXdwb3J0LGMuY2xhc3NdfSksc3R5bGU6eyItLXNjYWxlLWZhY3RvciI6IjAuMDUiLCItLXRyYW5zbGF0ZS1mYWN0b3IiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxcHgiOiItMXB4IiwiLS1nYXAiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxNnB4IjoiLTE2cHgiLCItLWZyb250LWhlaWdodCI6YCR7TS52YWx1ZX1weGAsIi0taGVpZ2h0IjpgJHtSLnZhbHVlfXB4YH0sb25Nb3VzZWVudGVyOmU9PlQudmFsdWU9ITAsb25Nb3VzZWxlYXZlOmU9PlQudmFsdWU9ITF9LG51bGwsOCxbImRhdGEtZXhwYW5kZWQiLCJjbGFzcyIsInN0eWxlIiwib25Nb3VzZWVudGVyIiwib25Nb3VzZWxlYXZlIl0pXTtoKHBlKFluLnVucmVmKFhzKSx7ImRhdGEtZXhwYW5kZWQiOk4udmFsdWUsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpfLnZhbHVlLnZpZXdwb3J0KHtjbGFzczpbWW4udW5yZWYoYik/LnZpZXdwb3J0LGMuY2xhc3NdfSksc3R5bGU6eyItLXNjYWxlLWZhY3RvciI6IjAuMDUiLCItLXRyYW5zbGF0ZS1mYWN0b3IiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxcHgiOiItMXB4IiwiLS1nYXAiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxNnB4IjoiLTE2cHgiLCItLWZyb250LWhlaWdodCI6YCR7TS52YWx1ZX1weGAsIi0taGVpZ2h0IjpgJHtSLnZhbHVlfXB4YH0sb25Nb3VzZWVudGVyOmU9PlQudmFsdWU9ITAsb25Nb3VzZWxlYXZlOmU9PlQudmFsdWU9ITF9LG51bGwsdix5KSl9KSxfOjF9LGssRCkpfSksXzozfSxEKSl9fX0pLHBjPWRjLnNldHVwO2RjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1RvYXN0ZXIudnVlIikscGM/cGMoZSxjKTp2b2lkIDB9O2NvbnN0IGZjPU9iamVjdC5hc3NpZ24oZGMse19fbmFtZToiVVRvYXN0ZXIifSk7ZnVuY3Rpb24gX3VzZU92ZXJsYXkoKXtjb25zdCBlPVluLnNoYWxsb3dSZWFjdGl2ZShbXSksb3Blbj0oZSxjKT0+e2NvbnN0IGQ9Z2V0T3ZlcmxheShlKTtkLnByb3BzPWM/ey4uLmQub3JpZ2luYWxQcm9wcywuLi5jfTp7Li4uZC5vcmlnaW5hbFByb3BzfSxkLmlzT3Blbj0hMCxkLmlzTW91bnRlZD0hMDtjb25zdCBoPW5ldyBQcm9taXNlKGU9PmQucmVzb2x2ZVByb21pc2U9ZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oaCx7aWQ6ZSxpc01vdW50ZWQ6ZC5pc01vdW50ZWQsaXNPcGVuOmQuaXNPcGVuLHJlc3VsdDpofSl9LGNsb3NlPShlLGMpPT57Y29uc3QgZD1nZXRPdmVybGF5KGUpO2QuaXNPcGVuPSExLGQucmVzb2x2ZVByb21pc2UmJihkLnJlc29sdmVQcm9taXNlKGMpLGQucmVzb2x2ZVByb21pc2U9dm9pZCAwKX0scGF0Y2g9KGUsYyk9Pntjb25zdCBkPWdldE92ZXJsYXkoZSk7ZC5wcm9wcz17Li4uZC5wcm9wcywuLi5jfX0sZ2V0T3ZlcmxheT1jPT57Y29uc3QgZD1lLmZpbmQoZT0+ZS5pZD09PWMpO2lmKCFkKXRocm93IG5ldyBFcnJvcigiT3ZlcmxheSBub3QgZm91bmQiKTtyZXR1cm4gZH07cmV0dXJue292ZXJsYXlzOmUsb3BlbjpvcGVuLGNsb3NlOmNsb3NlLGNsb3NlQWxsOigpPT57ZS5mb3JFYWNoKGU9PmNsb3NlKGUuaWQpKX0sY3JlYXRlOihjLGQpPT57Y29uc3R7cHJvcHM6aCxkZWZhdWx0T3Blbjp2LGRlc3Ryb3lPbkNsb3NlOmJ9PWR8fHt9LHk9WW4ucmVhY3RpdmUoe2lkOlN5bWJvbCgiIiksaXNPcGVuOiEhdixjb21wb25lbnQ6WW4ubWFya1JhdyhjKSxpc01vdW50ZWQ6ISF2LGRlc3Ryb3lPbkNsb3NlOiEhYixvcmlnaW5hbFByb3BzOmh8fHt9LHByb3BzOnsuLi5ofX0pO3JldHVybiBlLnB1c2goeSksey4uLnksb3BlbjplPT5vcGVuKHkuaWQsZSksY2xvc2U6ZT0+Y2xvc2UoeS5pZCxlKSxwYXRjaDplPT5wYXRjaCh5LmlkLGUpfX0scGF0Y2g6cGF0Y2gsdW5tb3VudDpjPT57Y29uc3QgZD1nZXRPdmVybGF5KGMpO2lmKGQuaXNNb3VudGVkPSExLGQuZGVzdHJveU9uQ2xvc2Upe2NvbnN0IGQ9ZS5maW5kSW5kZXgoZT0+ZS5pZD09PWMpO2Uuc3BsaWNlKGQsMSl9fSxpc09wZW46ZT0+Z2V0T3ZlcmxheShlKS5pc09wZW59fWNvbnN0IG1jPWNyZWF0ZVNoYXJlZENvbXBvc2FibGUoX3VzZU92ZXJsYXkpLGhjPXtfX25hbWU6IlVPdmVybGF5UHJvdmlkZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKGUpe2NvbnN0e292ZXJsYXlzOmMsdW5tb3VudDpkLGNsb3NlOmh9PW1jKCksdj1Zbi5jb21wdXRlZCgoKT0+Yy5maWx0ZXIoZT0+ZS5pc01vdW50ZWQpKTtyZXR1cm4oZSxjLGIseSk9PntjKCJceDNjIS0tWy0tXHgzZSIpLHhlKHYudmFsdWUsZT0+e2hlKGMsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5jb21wb25lbnQpLFluLm1lcmdlUHJvcHMoe2tleTplLmlkfSx7cmVmX2ZvcjohMH0sZS5wcm9wcyx7b3BlbjplLmlzT3Blbiwib25VcGRhdGU6b3BlbiI6Yz0+ZS5pc09wZW49YyxvbkNsb3NlOmM9PigoZSxjKT0+e2goZSxjKX0pKGUuaWQsYyksIm9uQWZ0ZXI6bGVhdmUiOmM9PntyZXR1cm4gdj1lLmlkLGgodiksdm9pZCBkKHYpO3ZhciB2fX0pLG51bGwpLGIpfSksYygiXHgzYyEtLV0tLVx4M2UiKX19fSxnYz1oYy5zZXR1cDtoYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9PdmVybGF5UHJvdmlkZXIudnVlIiksZ2M/Z2MoZSxjKTp2b2lkIDB9O2NvbnN0IHZjPXtuYW1lOiJBcHAifSxiYz1PYmplY3QuYXNzaWduKHZjLHtfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7dG9vbHRpcDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHRvYXN0ZXI6e3R5cGU6W09iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sbG9jYWxlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ImJvZHkifSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzY3JvbGxCb2R5Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LG5vbmNlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSxkPXVzZUZvcndhcmRQcm9wcyhyZWFjdGl2ZVBpY2soYywic2Nyb2xsQm9keSIpKSxoPVluLnRvUmVmKCgpPT5jLnRvb2x0aXApLHY9WW4udG9SZWYoKCk9PmMudG9hc3RlciksYj1Zbi50b1JlZigoKT0+Yy5sb2NhbGUpO1luLnByb3ZpZGUoZWwsYik7Y29uc3QgeT1Zbi50b1JlZigoKT0+Yy5wb3J0YWwpO3JldHVybiBZbi5wcm92aWRlKHRsLHkpLCh5LEUsayxfKT0+e0UocGUoWW4udW5yZWYocHMpLFluLm1lcmdlUHJvcHMoeyJ1c2UtaWQiOigpPT5Zbi51c2VJZCgpLGRpcjpjLmRpcnx8Yi52YWx1ZT8uZGlyLGxvY2FsZTpiLnZhbHVlPy5jb2RlfSxZbi51bnJlZihkKSxfKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChjLGQsYixFKT0+e2lmKCFkKXJldHVybltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihRcyksaC52YWx1ZSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bbnVsbCE9PWUudG9hc3Rlcj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soZmMsWW4ubWVyZ2VQcm9wcyh7a2V5OjB9LHYudmFsdWUpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KHkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6WW4ucmVuZGVyU2xvdCh5LiRzbG90cywiZGVmYXVsdCIse2tleToxfSksWW4uY3JlYXRlVk5vZGUoaGMpXSksXzozfSwxNildO2QocGUoWW4udW5yZWYoUXMpLGgudmFsdWUse2RlZmF1bHQ6WW4ud2l0aEN0eCgoYyxkLGgsYik9PntpZighZClyZXR1cm5bbnVsbCE9PWUudG9hc3Rlcj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soZmMsWW4ubWVyZ2VQcm9wcyh7a2V5OjB9LHYudmFsdWUpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KHkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6WW4ucmVuZGVyU2xvdCh5LiRzbG90cywiZGVmYXVsdCIse2tleToxfSksWW4uY3JlYXRlVk5vZGUoaGMpXTtudWxsIT09ZS50b2FzdGVyP2QocGUoZmMsdi52YWx1ZSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5yZW5kZXJTbG90KHkuJHNsb3RzLCJkZWZhdWx0IildO2ZlKHkuJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLGMsZCxoKX0pLF86M30saCxiKSk6ZmUoeS4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsZCxoLGIpLGQocGUoaGMsbnVsbCxudWxsLGgsYikpfSksXzozfSxiLEUpKX0pLF86M30saykpfX19KSx5Yz1iYy5zZXR1cDtiYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9BcHAudnVlIikseWM/eWMoZSxjKTp2b2lkIDB9O2NvbnN0IHhjPU9iamVjdC5hc3NpZ24oYmMse19fbmFtZToiVUFwcCJ9KSxTYz1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6Ik51eHRMb2FkaW5nSW5kaWNhdG9yIixwcm9wczp7dGhyb3R0bGU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MjAwfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsZGVmYXVsdDoyZTN9LGhpZGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDo1MDB9LHJlc2V0RGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NDAwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6M30sY29sb3I6e3R5cGU6W1N0cmluZyxCb29sZWFuXSxkZWZhdWx0OiJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCMwMGRjODIgMCUsIzM0Y2RmZSA1MCUsIzAwNDdlMSAxMDAlKSJ9LGVycm9yQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsI2Y4NzE3MSAwJSwjZWY0NDQ0IDEwMCUpIn0sZXN0aW1hdGVkUHJvZ3Jlc3M6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czpjLGV4cG9zZTpkfSl7Y29uc3R7cHJvZ3Jlc3M6aCxpc0xvYWRpbmc6dixlcnJvcjpiLHN0YXJ0OnksZmluaXNoOkUsY2xlYXI6a309ZnVuY3Rpb24oZT17fSl7Y29uc3QgYz11c2VOdXh0QXBwKCk7cmV0dXJuIGMuX2xvYWRpbmdJbmRpY2F0b3J8fD1jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGUpfSh7ZHVyYXRpb246ZS5kdXJhdGlvbix0aHJvdHRsZTplLnRocm90dGxlLGhpZGVEZWxheTplLmhpZGVEZWxheSxyZXNldERlbGF5OmUucmVzZXREZWxheSxlc3RpbWF0ZWRQcm9ncmVzczplLmVzdGltYXRlZFByb2dyZXNzfSk7cmV0dXJuIGQoe3Byb2dyZXNzOmgsaXNMb2FkaW5nOnYsZXJyb3I6YixzdGFydDp5LGZpbmlzaDpFLGNsZWFyOmt9KSwoKT0+WW4uaCgiZGl2Iix7Y2xhc3M6Im51eHQtbG9hZGluZy1pbmRpY2F0b3IiLHN0eWxlOntwb3NpdGlvbjoiZml4ZWQiLHRvcDowLHJpZ2h0OjAsbGVmdDowLHBvaW50ZXJFdmVudHM6Im5vbmUiLHdpZHRoOiJhdXRvIixoZWlnaHQ6YCR7ZS5oZWlnaHR9cHhgLG9wYWNpdHk6di52YWx1ZT8xOjAsYmFja2dyb3VuZDpiLnZhbHVlP2UuZXJyb3JDb2xvcjplLmNvbG9yfHx2b2lkIDAsYmFja2dyb3VuZFNpemU6KGgudmFsdWU+MD8xMDAvaC52YWx1ZSoxMDA6MCkrIiUgYXV0byIsdHJhbnNmb3JtOmBzY2FsZVgoJHtoLnZhbHVlfSUpYCx0cmFuc2Zvcm1PcmlnaW46ImxlZnQiLHRyYW5zaXRpb246InRyYW5zZm9ybSAwLjFzLCBoZWlnaHQgMC40cywgb3BhY2l0eSAwLjRzIix6SW5kZXg6OTk5OTk5fX0sYyl9fSksRWM9e2RlZmF1bHQ6WW4uZGVmaW5lQXN5bmNDb21wb25lbnQoKCk9PmltcG9ydCgiLi9kZWZhdWx0LUNSdHRqa2thLm1qcyIpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlKSksYXV0aDpZbi5kZWZpbmVBc3luY0NvbXBvbmVudCgoKT0+aW1wb3J0KCIuL2F1dGgtRFJ0TjdMdVYubWpzIikudGhlbihlPT5lLmRlZmF1bHR8fGUpKX0sd2M9X3JvdXRlUnVsZXNNYXRjaGVyLGtjPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiTGF5b3V0TG9hZGVyIixpbmhlcml0QXR0cnM6ITEscHJvcHM6e25hbWU6U3RyaW5nLGxheW91dFByb3BzOk9iamVjdH0sc2V0dXA6KGUsYyk9PigpPT5Zbi5oKEVjW2UubmFtZV0sZS5sYXlvdXRQcm9wcyxjLnNsb3RzKX0pLENjPXtuYW1lOnt0eXBlOltTdHJpbmcsQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6bnVsbH0sZmFsbGJhY2s6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6bnVsbH19LF9jPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiTnV4dExheW91dCIsaW5oZXJpdEF0dHJzOiExLHByb3BzOkNjLHNldHVwKGUsYyl7Y29uc3QgZD11c2VOdXh0QXBwKCksdj1Zbi5pbmplY3Qoc2EpLGI9IXZ8fHY9PT11c2VSb3V0ZSgpP3VzZVJvdXRlJDEoKTp2LHk9WW4uY29tcHV0ZWQoKCk9PntsZXQgYz1Zbi51bnJlZihlLm5hbWUpPz9iPy5tZXRhLmxheW91dD8/d2MoYj8ucGF0aCkuYXBwTGF5b3V0Pz8iZGVmYXVsdCI7cmV0dXJuIGMmJiEoYyBpbiBFYykmJmUuZmFsbGJhY2smJihjPVluLnVucmVmKGUuZmFsbGJhY2spKSxjfSksRT1Zbi5zaGFsbG93UmVmKCk7Yy5leHBvc2Uoe2xheW91dFJlZjpFfSk7Y29uc3Qgaz1kLmRlZmVySHlkcmF0aW9uKCk7bGV0IF87cmV0dXJuKCk9Pntjb25zdCB2PSEheS52YWx1ZSYmeS52YWx1ZSBpbiBFYyYmISFiPy5tZXRhLmxheW91dFRyYW5zaXRpb24sVD0odiYmZnVuY3Rpb24oZSl7Y29uc3QgYz1bXTtmb3IoY29uc3QgZCBvZiBlKWQmJmMucHVzaCh7Li4uZCxvbkFmdGVyTGVhdmU6ZC5vbkFmdGVyTGVhdmU/dG9BcnJheSQxKGQub25BZnRlckxlYXZlKTp2b2lkIDAsb25CZWZvcmVMZWF2ZTpkLm9uQmVmb3JlTGVhdmU/dG9BcnJheSQxKGQub25CZWZvcmVMZWF2ZSk6dm9pZCAwfSk7aCguLi5jKX0oW2I/Lm1ldGEubGF5b3V0VHJhbnNpdGlvbixacix7b25CZWZvcmVMZWF2ZSgpe2RbIn50cmFuc2l0aW9uUHJvbWlzZSJdPW5ldyBQcm9taXNlKGU9PntkWyJ+dHJhbnNpdGlvbkZpbmlzaCJdPWV9KX0sb25BZnRlckxlYXZlKCl7ZFsifnRyYW5zaXRpb25GaW5pc2giXT8uKCksZGVsZXRlIGRbIn50cmFuc2l0aW9uRmluaXNoIl0sZGVsZXRlIGRbIn50cmFuc2l0aW9uUHJvbWlzZSJdfX1dKSxfKTtyZXR1cm4gXz15LnZhbHVlLChOPXtkZWZhdWx0OigpPT5Zbi5oKFluLlN1c3BlbnNlLHtzdXNwZW5zaWJsZTohMCxvblJlc29sdmU6YXN5bmMoKT0+e2F3YWl0IFluLm5leHRUaWNrKGspfX0se2RlZmF1bHQ6KCk9PlluLmgoVGMse2xheW91dFByb3BzOlluLm1lcmdlUHJvcHMoYy5hdHRycyxiLm1ldGEubGF5b3V0UHJvcHM/P3t9LHtyZWY6RX0pLGtleTp5LnZhbHVlfHx2b2lkIDAsbmFtZTp5LnZhbHVlLHNob3VsZFByb3ZpZGU6IWUubmFtZSxpc1JlbmRlcmluZ05ld0xheW91dDplPT5lIT09VCYmZT09PXkudmFsdWUsaGFzVHJhbnNpdGlvbjp2fSxjLnNsb3RzKX0pfSx7ZGVmYXVsdDooKT0+Ti5kZWZhdWx0Py4oKX0pLmRlZmF1bHQoKTt2YXIgTn19fSksVGM9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0TGF5b3V0UHJvdmlkZXIiLGluaGVyaXRBdHRyczohMSxwcm9wczp7bmFtZTp7dHlwZTpbU3RyaW5nLEJvb2xlYW5dfSxsYXlvdXRQcm9wczp7dHlwZTpPYmplY3R9LGhhc1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbn0sc2hvdWxkUHJvdmlkZTp7dHlwZTpCb29sZWFufSxpc1JlbmRlcmluZ05ld0xheW91dDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMH19LHNldHVwKGUsYyl7Y29uc3QgZD1lLm5hbWU7ZS5zaG91bGRQcm92aWRlJiZZbi5wcm92aWRlKGlhLHtpc0N1cnJlbnQ6ZT0+ITE9PT1kfHxkPT09KGUubWV0YS5sYXlvdXQ/P3djKGUucGF0aCkuYXBwTGF5b3V0Pz8iZGVmYXVsdCIpfSk7Y29uc3QgaD1Zbi5pbmplY3Qoc2EpO2lmKGgmJmg9PT11c2VSb3V0ZSgpKXtjb25zdCBjPXVzZVJvdXRlJDEoKSxkPXt9O2Zvcihjb25zdCB2IGluIGMpe2NvbnN0IGI9djtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZS5pc1JlbmRlcmluZ05ld0xheW91dChlLm5hbWUpP2NbYl06aFtiXX0pfVluLnByb3ZpZGUoc2EsWW4uc2hhbGxvd1JlYWN0aXZlKGQpKX1yZXR1cm4oKT0+IWR8fCJzdHJpbmciPT10eXBlb2YgZCYmIShkIGluIEVjKT9jLnNsb3RzLmRlZmF1bHQ/LigpOlluLmgoa2Mse2tleTpkLGxheW91dFByb3BzOmUubGF5b3V0UHJvcHMsbmFtZTpkfSxjLnNsb3RzKX19KSxOYz0oKGU9IlJvdXRlUHJvdmlkZXIiKT0+WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOmUscHJvcHM6e3JvdXRlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sdm5vZGU6T2JqZWN0LHZub2RlUmVmOk9iamVjdCxyZW5kZXJLZXk6U3RyaW5nLHRyYWNrUm9vdE5vZGVzOkJvb2xlYW59LHNldHVwKGUpe2NvbnN0IGM9ZS5yZW5kZXJLZXksZD1lLnJvdXRlLGg9e307Zm9yKGNvbnN0IHYgaW4gZS5yb3V0ZSlPYmplY3QuZGVmaW5lUHJvcGVydHkoaCx2LHtnZXQ6KCk9PmM9PT1lLnJlbmRlcktleT9lLnJvdXRlW3ZdOmRbdl0sZW51bWVyYWJsZTohMH0pO3JldHVybiBZbi5wcm92aWRlKHNhLFluLnNoYWxsb3dSZWFjdGl2ZShoKSksKCk9PmUudm5vZGU/WW4uaChlLnZub2RlLHtyZWY6ZS52bm9kZVJlZn0pOmUudm5vZGV9fSkpKCksQWM9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0UGFnZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZ30sdHJhbnNpdGlvbjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxrZWVwYWxpdmU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxkZWZhdWx0OnZvaWQgMH0scm91dGU6e3R5cGU6T2JqZWN0fSxwYWdlS2V5Ont0eXBlOltGdW5jdGlvbixTdHJpbmddLGRlZmF1bHQ6bnVsbH19LHNldHVwKGUse2F0dHJzOmMsc2xvdHM6ZCxleHBvc2U6aH0pe2NvbnN0IHY9dXNlTnV4dEFwcCgpLGI9WW4ucmVmKCk7cmV0dXJuIFluLmluamVjdChzYSxudWxsKSxoKHtwYWdlUmVmOmJ9KSxZbi5pbmplY3QoaWEsbnVsbCksdi5kZWZlckh5ZHJhdGlvbigpLCgpPT5Zbi5oKFZvLHtuYW1lOmUubmFtZSxyb3V0ZTplLnJvdXRlLC4uLmN9LHtkZWZhdWx0OmU9PlluLmgoWW4uU3VzcGVuc2Use3N1c3BlbnNpYmxlOiEwfSx7ZGVmYXVsdDooKT0+WW4uaChOYyx7dm5vZGU6ZC5kZWZhdWx0P25vcm1hbGl6ZVNsb3QoZC5kZWZhdWx0LGUpOmUuQ29tcG9uZW50LHJvdXRlOmUucm91dGUsdm5vZGVSZWY6Yn0pfSl9KX19KTtmdW5jdGlvbiBub3JtYWxpemVTbG90KGUsYyl7Y29uc3QgZD1lKGMpO3JldHVybiAxPT09ZC5sZW5ndGg/WW4uaChkWzBdKTpZbi5oKFluLkZyYWdtZW50LHZvaWQgMCxkKX1jb25zdCBfZXhwb3J0X3NmYz0oZSxjKT0+e2NvbnN0IGQ9ZS5fX3ZjY09wdHN8fGU7Zm9yKGNvbnN0W2UsaF1vZiBjKWRbZV09aDtyZXR1cm4gZH0sT2M9e307Y29uc3QgSWM9T2Muc2V0dXA7T2Muc2V0dXA9KGUsYyk9Pntjb25zdCBkPVluLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oZC5tb2R1bGVzfHwoZC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoImFwcC52dWUiKSxJYz9JYyhlLGMpOnZvaWQgMH07Y29uc3QgUmM9X2V4cG9ydF9zZmMoT2MsW1sic3NyUmVuZGVyIixmdW5jdGlvbihlLGMsZCxoKXtjb25zdCB2PVNjLGI9UGEseT1fYyxFPUFjO2MocGUoeGMsaCx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5jcmVhdGVWTm9kZSh2KSxZbi5jcmVhdGVWTm9kZShiKSxZbi5jcmVhdGVWTm9kZSh5LG51bGwse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVZOb2RlKEUpXSksXzoxfSldO2MocGUodixudWxsLG51bGwsZCxoKSksYyhwZShiLG51bGwsbnVsbCxkLGgpKSxjKHBlKHksbnVsbCx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5jcmVhdGVWTm9kZShFKV07YyhwZShFLG51bGwsbnVsbCxkLGgpKX0pLF86MX0sZCxoKSl9KSxfOjF9LGQpKX1dXSksUGM9e19fbmFtZToibnV4dC1lcnJvci1wYWdlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7ZXJyb3I6T2JqZWN0fSxzZXR1cChlKXtjb25zdCBjPWUuZXJyb3IsZD1OdW1iZXIoYy5zdGF0dXNDb2RlfHw1MDApLGg9NDA0PT09ZCx2PWMuc3RhdHVzTWVzc2FnZT8/KGg/IlBhZ2UgTm90IEZvdW5kIjoiSW50ZXJuYWwgU2VydmVyIEVycm9yIiksYj1jLm1lc3NhZ2V8fGMudG9TdHJpbmcoKSx5PVluLmRlZmluZUFzeW5jQ29tcG9uZW50KCgpPT5pbXBvcnQoIi4vZXJyb3ItNDA0LUN6V2ZMX29ILm1qcyIpKSxFPVluLmRlZmluZUFzeW5jQ29tcG9uZW50KCgpPT5pbXBvcnQoIi4vZXJyb3ItNTAwLUR6SHRzakV1Lm1qcyIpKSxrPWg/eTpFO3JldHVybihlLGMsaCx5KT0+e2MocGUoWW4udW5yZWYoayksWW4ubWVyZ2VQcm9wcyh7c3RhdHVzOlluLnVucmVmKGQpLHN0YXR1c1RleHQ6WW4udW5yZWYodiksc3RhdHVzQ29kZTpZbi51bnJlZihkKSxzdGF0dXNNZXNzYWdlOlluLnVucmVmKHYpLGRlc2NyaXB0aW9uOlluLnVucmVmKGIpLHN0YWNrOlluLnVucmVmKHZvaWQgMCl9LHkpLG51bGwsaCkpfX19LE1jPVBjLnNldHVwO1BjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL251eHQtZXJyb3ItcGFnZS52dWUiKSxNYz9NYyhlLGMpOnZvaWQgMH07Y29uc3QgRGM9e19fbmFtZToibnV4dC1yb290IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCBJc2xhbmRSZW5kZXJlcj0oKT0+bnVsbCxjPXVzZU51eHRBcHAoKTtjLmRlZmVySHlkcmF0aW9uKCksYy5zc3JDb250ZXh0LnVybDtjb25zdCBkPSExO1luLnByb3ZpZGUoc2EsdXNlUm91dGUoKSksYy5ob29rcy5jYWxsSG9va1dpdGgoZT0+ZS5tYXAoZT0+ZSgpKSwidnVlOnNldHVwIik7Y29uc3QgaD11c2VFcnJvcigpLHY9aC52YWx1ZSYmIWMuc3NyQ29udGV4dC5lcnJvcjtZbi5vbkVycm9yQ2FwdHVyZWQoKGUsZCxoKT0+e2MuaG9va3MuY2FsbEhvb2soInZ1ZTplcnJvciIsZSxkLGgpPy5jYXRjaChlPT57fSk7e2NvbnN0IGQ9Yy5ydW5XaXRoQ29udGV4dCgoKT0+c2hvd0Vycm9yKGUpKTtyZXR1cm4gWW4ub25TZXJ2ZXJQcmVmZXRjaCgoKT0+ZCksITF9fSk7Y29uc3QgYj1jLnNzckNvbnRleHQuaXNsYW5kQ29udGV4dDtyZXR1cm4oZSxjLHksRSk9PntTZShjLHtkZWZhdWx0OigpPT57WW4udW5yZWYodik/YygiPGRpdj48L2Rpdj4iKTpZbi51bnJlZihoKT9jKHBlKFluLnVucmVmKFBjKSx7ZXJyb3I6WW4udW5yZWYoaCl9LG51bGwseSkpOlluLnVucmVmKGIpP2MocGUoWW4udW5yZWYoSXNsYW5kUmVuZGVyZXIpLHtjb250ZXh0OlluLnVucmVmKGIpfSxudWxsLHkpKTpZbi51bnJlZihkKT9oZShjLFluLmNyZWF0ZVZOb2RlKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KFluLnVucmVmKGQpKSxudWxsLG51bGwpLHkpOmMocGUoWW4udW5yZWYoUmMpLG51bGwsbnVsbCx5KSl9fSl9fX0sQmM9RGMuc2V0dXA7bGV0IExjO0RjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL251eHQtcm9vdC52dWUiKSxCYz9CYyhlLGMpOnZvaWQgMH0sTGM9YXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgYz1Zbi5jcmVhdGVBcHAoRGMpLGQ9ZnVuY3Rpb24oZSl7bGV0IGM9MDtjb25zdCBkPXtfaWQ6ZS5pZHx8b2F8fCJudXh0LWFwcCIsX3Njb3BlOlluLmVmZmVjdFNjb3BlKCkscHJvdmlkZTp2b2lkIDAsdmVyc2lvbnM6e2dldCBudXh0KCl7cmV0dXJuIjQuNC4yIn0sZ2V0IHZ1ZSgpe3JldHVybiBkLnZ1ZUFwcC52ZXJzaW9ufX0scGF5bG9hZDpZbi5zaGFsbG93UmVhY3RpdmUoey4uLmUuc3NyQ29udGV4dD8ucGF5bG9hZHx8e30sZGF0YTpZbi5zaGFsbG93UmVhY3RpdmUoe30pLHN0YXRlOlluLnJlYWN0aXZlKHt9KSxvbmNlOm5ldyBTZXQsX2Vycm9yczpZbi5zaGFsbG93UmVhY3RpdmUoe30pfSksc3RhdGljOntkYXRhOnt9fSxydW5XaXRoQ29udGV4dDplPT5kLl9zY29wZS5hY3RpdmUmJiFZbi5nZXRDdXJyZW50U2NvcGUoKT9kLl9zY29wZS5ydW4oKCk9PmNhbGxXaXRoTnV4dChkLGUpKTpjYWxsV2l0aE51eHQoZCxlKSxpc0h5ZHJhdGluZzohMSxkZWZlckh5ZHJhdGlvbigpe2lmKCFkLmlzSHlkcmF0aW5nKXJldHVybigpPT57fTtjKys7bGV0IGU9ITE7cmV0dXJuKCk9PntpZighZSlyZXR1cm4gZT0hMCxjLS0sMD09PWM/KGQuaXNIeWRyYXRpbmc9ITEsZC5jYWxsSG9vaygiYXBwOnN1c3BlbnNlOnJlc29sdmUiKSk6dm9pZCAwfX0sX2FzeW5jRGF0YVByb21pc2VzOnt9LF9hc3luY0RhdGE6WW4uc2hhbGxvd1JlYWN0aXZlKHt9KSxfc3RhdGU6WW4uc2hhbGxvd1JlYWN0aXZlKHt9KSxfcGF5bG9hZFJldml2ZXJzOnt9LC4uLmV9O2QucGF5bG9hZC5zZXJ2ZXJSZW5kZXJlZD0hMCxkLnNzckNvbnRleHQmJihkLnBheWxvYWQucGF0aD1kLnNzckNvbnRleHQudXJsLGQuc3NyQ29udGV4dC5udXh0PWQsZC5zc3JDb250ZXh0LnBheWxvYWQ9ZC5wYXlsb2FkLGQuc3NyQ29udGV4dC5jb25maWc9e3B1YmxpYzpkLnNzckNvbnRleHQucnVudGltZUNvbmZpZy5wdWJsaWMsYXBwOmQuc3NyQ29udGV4dC5ydW50aW1lQ29uZmlnLmFwcH0pLGQuaG9va3M9RWUoKSxkLmhvb2s9ZC5ob29rcy5ob29rO3tjb25zdCBjb250ZXh0Q2FsbGVyPWFzeW5jIGZ1bmN0aW9uKGUsYyl7Zm9yKGNvbnN0IGggb2YgZSlhd2FpdCBkLnJ1bldpdGhDb250ZXh0KCgpPT5oKC4uLmMpKX07ZC5ob29rcy5jYWxsSG9vaz0oZSwuLi5jKT0+ZC5ob29rcy5jYWxsSG9va1dpdGgoY29udGV4dENhbGxlcixlLGMpfWQuY2FsbEhvb2s9ZC5ob29rcy5jYWxsSG9vayxkLnByb3ZpZGU9KGUsYyk9Pntjb25zdCBoPSIkIitlO2RlZmluZUdldHRlcihkLGgsYyksZGVmaW5lR2V0dGVyKGQudnVlQXBwLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLGgsYyl9LGRlZmluZUdldHRlcihkLnZ1ZUFwcCwiJG51eHQiLGQpLGRlZmluZUdldHRlcihkLnZ1ZUFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywiJG51eHQiLGQpO2NvbnN0IGg9ZS5zc3JDb250ZXh0LnJ1bnRpbWVDb25maWc7cmV0dXJuIGQucHJvdmlkZSgiY29uZmlnIixoKSxkfSh7dnVlQXBwOmMsc3NyQ29udGV4dDplfSk7dHJ5e2F3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1uZXcgU2V0LGg9W10sdj1bXTtsZXQgYix5PTA7YXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVBsdWdpbihFKXtjb25zdCBrPUUuZGVwZW5kc09uPy5maWx0ZXIoZT0+Yy5zb21lKGM9PmMuX25hbWU9PT1lKSYmIWQuaGFzKGUpKT8/W107aWYoay5sZW5ndGg+MCloLnB1c2goW25ldyBTZXQoayksRV0pO2Vsc2V7Y29uc3QgYz1hc3luYyBmdW5jdGlvbihlLGMpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjKXtjb25zdHtwcm92aWRlOmR9PWF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PmMoZSkpfHx7fTtpZihkJiYib2JqZWN0Ij09dHlwZW9mIGQpZm9yKGNvbnN0IGMgaW4gZCllLnByb3ZpZGUoYyxkW2NdKX19KGUsRSkudGhlbihhc3luYygpPT57RS5fbmFtZSYmKGQuYWRkKEUuX25hbWUpLGF3YWl0IFByb21pc2UuYWxsKGgubWFwKGFzeW5jKFtlLGNdKT0+e2UuaGFzKEUuX25hbWUpJiYoZS5kZWxldGUoRS5fbmFtZSksMD09PWUuc2l6ZSYmKHkrKyxhd2FpdCBleGVjdXRlUGx1Z2luKGMpKSl9KSkpfSkuY2F0Y2goYz0+e2lmKCFFLnBhcmFsbGVsJiYhZS5wYXlsb2FkLmVycm9yKXRocm93IGM7Ynx8PWN9KTtFLnBhcmFsbGVsP3YucHVzaChjKTphd2FpdCBjfX1mb3IoY29uc3QgZCBvZiBjKWUuc3NyQ29udGV4dD8uaXNsYW5kQ29udGV4dCYmITE9PT1kLmVudj8uaXNsYW5kc3x8cmVnaXN0ZXJQbHVnaW5Ib29rcyhlLGQpO2Zvcihjb25zdCBkIG9mIGMpZS5zc3JDb250ZXh0Py5pc2xhbmRDb250ZXh0JiYhMT09PWQuZW52Py5pc2xhbmRzfHxhd2FpdCBleGVjdXRlUGx1Z2luKGQpO2lmKGF3YWl0IFByb21pc2UuYWxsKHYpLHkpZm9yKGxldCBlPTA7ZTx5O2UrKylhd2FpdCBQcm9taXNlLmFsbCh2KTtpZihiKXRocm93IGUucGF5bG9hZC5lcnJvcnx8Yn0oZCxKaSksYXdhaXQgZC5ob29rcy5jYWxsSG9vaygiYXBwOmNyZWF0ZWQiLGMpfWNhdGNoKGUpe2F3YWl0IGQuaG9va3MuY2FsbEhvb2soImFwcDplcnJvciIsZSksZC5wYXlsb2FkLmVycm9yfHw9Y3JlYXRlRXJyb3IoZSl9aWYoZSYmKGVbIn5yZW5kZXJSZXNwb25zZSJdfHxlLl9yZW5kZXJSZXNwb25zZSkpdGhyb3cgbmV3IEVycm9yKCJza2lwcGluZyByZW5kZXIiKTtyZXR1cm4gY307Y29uc3QgamM9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCQ6VmEsQTp1c2VGb3J3YXJkUHJvcHNFbWl0cyxCOnJlYWN0aXZlUGljayxDOnVzZUZvcm1GaWVsZCxEOnBhcnNlQWJpbGl0eSxFOnN5bmNSZWYsRjp1c2VSZXF1ZXN0RXZlbnQsRzp1c2VJbnRlcnZhbEZuLEg6dXNlTG9jYWxlLEk6Y3JlYXRlUmVmLEo6Y3JlYXRlUmV1c2FibGVUZW1wbGF0ZSxLOnVzZUZvcndhcmRQcm9wcyxMOm5hdmlnYXRlVG8sTTpWbCxOOnpsLE86V2wsUDpncyxROkhsLFI6R2wsUzpGbCxUOnVzZUV2ZW50QnVzLFU6cmVmcmVzaE51eHREYXRhLFY6RGEsVzpyZWFjdGl2ZU9taXQsWDppc0FycmF5T2ZBcnJheSxZOnBpY2ssWjpvbWl0LF86X2V4cG9ydF9zZmMsYTokYSxhMDp1c2VQcmltaXRpdmVFbGVtZW50LGExOmNyZWF0ZUV2ZW50SG9vayxhMjpTcyxhMzp1c2VQb3J0YWwsYTQ6dXNlRmllbGRHcm91cCxhNTp1c2VDb21wb25lbnRJY29ucyxhNjpjb21wYXJlLGE3OmdldCxhODpQbCxhOTokbCxhQTpmb2N1cyxhQjp5cyxhQzp4cyxhRDpnZXRUYWJiYWJsZUVkZ2VzLGFFOnVzZUV2ZW50TGlzdGVuZXIsYUY6dXNlRGVib3VuY2VGbixhRzpRaSxhSDpwaWNrTGlua1Byb3BzLGFJOktsLGFKOktzLGFLOnVzZVRpbWVvdXRGbixhTDp0cnlPblNjb3BlRGlzcG9zZSxhTTp1c2VFbWl0QXNQcm9wcyxhTjp3YXRjaERlYm91bmNlZCxhTzp1c2VQYXJlbnRFbGVtZW50LGFQOnRyYW5zZm9ybVVJLGFROnJlZkRlYm91bmNlZCxhUjpyZWZUaHJvdHRsZWQsYVM6dXNlQWN0aXZlRWxlbWVudCxhYTpsb29zZVRvTnVtYmVyLGFiOmdldERpc3BsYXlWYWx1ZSxhYzpwYXVzYWJsZUZpbHRlcixhZDp1c2VNb3VzZUluRWxlbWVudCxhZTpnZXRTbG90Q2hpbGRyZW5UZXh0LGFmOllsLGFnOnVzLGFoOndzLGFpOnVucmVmRWxlbWVudCxhajp1c2VSZXNpemVPYnNlcnZlcixhazpnZXRBY3RpdmVFbGVtZW50LGFsOndoZW5ldmVyLGFtOnVzZU51eHRBcHAsYW46dXNlU3RvcmFnZSxhbzpVbCxhcDpxbCxhcTp1c2VTdGF0ZSxhcjpyZWZBdXRvUmVzZXQsYXM6Y29tcHV0ZWRFYWdlcixhdDp0cnlPbkJlZm9yZVVubW91bnQsYXU6Y3JlYXRlU2hhcmVkQ29tcG9zYWJsZSxhdjpvbktleVN0cm9rZSxhdzpjcmVhdGVHbG9iYWxTdGF0ZSxheDpicyxheTpmb2N1c0ZpcnN0LGF6OmdldFRhYmJhYmxlQ2FuZGlkYXRlcyxiOnVzZVRvYXN0LGM6dGMsZDp3bCxkZWZhdWx0OmU9PkxjKGUpLGU6dXNlUnVudGltZUNvbmZpZyxmOnphLGc6TGEsaDp1c2VBdXRoQXBpLGk6dXNlUm91dGUsajp1c2VSb3V0ZXIsazp1c2VPcmdhbml6YXRpb25BcGksbDpCbCxtOnVzZUFwcENvbmZpZyxuOnVzZUNvbXBvbmVudFVJLG86QWMscDp1c2VJbmZpbml0ZVNjcm9sbCxxOnVzZUNsaXBib2FyZCxyOnVzZUNvbGxlY3Rpb24sczpzYXRpc2ZpZXNBYmlsaXR5LHQ6Y2wsdTp1c2VIZWFkLHY6Y3JlYXRlQ29udGV4dCx3OnVzZUZvcndhcmRFeHBvc2UseDp1c2VWTW9kZWwseTppc051bGxpc2gsejpmc30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtleHBvcnR7VmEgYXMgJCxXbCBhcyBBLEhsIGFzIEIsVWwgYXMgQyxxbCBhcyBELHVzZUZvcndhcmRQcm9wc0VtaXRzIGFzIEUscmVhY3RpdmVQaWNrIGFzIEYsdXNlUG9ydGFsIGFzIEcsdXNlRm9ybUZpZWxkIGFzIEgsaXNBcnJheU9mQXJyYXkgYXMgSSwkbCBhcyBKLGdldCBhcyBLLFBsIGFzIEwsdXNlRm9yd2FyZEV4cG9zZSBhcyBNLHVzZUNvbGxlY3Rpb24gYXMgTixnZXREaXNwbGF5VmFsdWUgYXMgTyxncyBhcyBQLGZzIGFzIFEsbG9vc2VUb051bWJlciBhcyBSLHVzZVZNb2RlbCBhcyBTLFNzIGFzIFQsaXNOdWxsaXNoIGFzIFUsdW5yZWZFbGVtZW50IGFzIFYsdXMgYXMgVyxnZXRBY3RpdmVFbGVtZW50IGFzIFgsd3MgYXMgWSx1c2VSZXNpemVPYnNlcnZlciBhcyBaLHRjIGFzIF8sdXNlVG9hc3QgYXMgYSxEYSBhcyBhMCxyZWZBdXRvUmVzZXQgYXMgYTEsY29tcHV0ZWRFYWdlciBhcyBhMixvbktleVN0cm9rZSBhcyBhMyx0cnlPbkJlZm9yZVVubW91bnQgYXMgYTQsYnMgYXMgYTUsZm9jdXNGaXJzdCBhcyBhNixnZXRUYWJiYWJsZUNhbmRpZGF0ZXMgYXMgYTcsZm9jdXMgYXMgYTgseXMgYXMgYTksY29tcGFyZSBhcyBhQSx3YXRjaERlYm91bmNlZCBhcyBhQix1c2VQYXJlbnRFbGVtZW50IGFzIGFDLHBhcnNlQWJpbGl0eSBhcyBhRCxWbCBhcyBhRSx6bCBhcyBhRixHbCBhcyBhRyxGbCBhcyBhSCx1c2VFdmVudEJ1cyBhcyBhSSxvbWl0IGFzIGFKLCRhIGFzIGFLLHVzZUludGVydmFsRm4gYXMgYUwsbmF2aWdhdGVUbyBhcyBhTSxyZWZyZXNoTnV4dERhdGEgYXMgYU4scGljayBhcyBhTyx0cmFuc2Zvcm1VSSBhcyBhUCxyZWZEZWJvdW5jZWQgYXMgYVEscmVmVGhyb3R0bGVkIGFzIGFSLHVzZUFjdGl2ZUVsZW1lbnQgYXMgYVMsX2V4cG9ydF9zZmMgYXMgYVQsamMgYXMgYVUsY3JlYXRlU2hhcmVkQ29tcG9zYWJsZSBhcyBhYSx4cyBhcyBhYixnZXRUYWJiYWJsZUVkZ2VzIGFzIGFjLGNyZWF0ZUdsb2JhbFN0YXRlIGFzIGFkLHVzZVN0YXRlIGFzIGFlLHNhdGlzZmllc0FiaWxpdHkgYXMgYWYsQWMgYXMgYWcsWWwgYXMgYWgscGlja0xpbmtQcm9wcyBhcyBhaSxLbCBhcyBhaixRaSBhcyBhayx1c2VFdmVudExpc3RlbmVyIGFzIGFsLHVzZURlYm91bmNlRm4gYXMgYW0sc3luY1JlZiBhcyBhbix0cnlPblNjb3BlRGlzcG9zZSBhcyBhbyxjcmVhdGVFdmVudEhvb2sgYXMgYXAsdXNlUHJpbWl0aXZlRWxlbWVudCBhcyBhcSx1c2VFbWl0QXNQcm9wcyBhcyBhcixLcyBhcyBhcyx1c2VUaW1lb3V0Rm4gYXMgYXQscGF1c2FibGVGaWx0ZXIgYXMgYXUsdXNlTW91c2VJbkVsZW1lbnQgYXMgYXYsZ2V0U2xvdENoaWxkcmVuVGV4dCBhcyBhdyxjcmVhdGVSZWYgYXMgYXgsdXNlSW5maW5pdGVTY3JvbGwgYXMgYXksdXNlQ2xpcGJvYXJkIGFzIGF6LHdsIGFzIGIsdXNlUnVudGltZUNvbmZpZyBhcyBjLHVzZUFwcENvbmZpZyBhcyBkLHVzZUNvbXBvbmVudFVJIGFzIGUsdXNlTG9jYWxlIGFzIGYsQmwgYXMgZyx6YSBhcyBoLExhIGFzIGksdXNlQXV0aEFwaSBhcyBqLGNyZWF0ZVJldXNhYmxlVGVtcGxhdGUgYXMgayx1c2VGb3J3YXJkUHJvcHMgYXMgbCxjcmVhdGVDb250ZXh0IGFzIG0sdXNlU3RvcmFnZSBhcyBuLHVzZU51eHRBcHAgYXMgbyx1c2VSZXF1ZXN0RXZlbnQgYXMgcCx1c2VGaWVsZEdyb3VwIGFzIHEscmVhY3RpdmVPbWl0IGFzIHIsdXNlQ29tcG9uZW50SWNvbnMgYXMgcyxjbCBhcyB0LHVzZUhlYWQgYXMgdSxZbiBhcyB2LHVzZVJvdXRlIGFzIHcsdXNlUm91dGVyIGFzIHgsdXNlT3JnYW5pemF0aW9uQXBpIGFzIHksd2hlbmV2ZXIgYXMgen07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlcnZlci5tanMubWFwCg==", "chunks/build/settings-D6nHHKcT.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmRUb29sYmFyLUJ0QUJZektILm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vTmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzIjtpbXBvcnR7diBhcyBzLHUgYXMgbyxoIGFzIHIsYWYgYXMgYSxhZyBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBtfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL2lzVmFsdWVFcXVhbE9yRXhpc3QtRG1QeW41Yk4ubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgdT1zLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzZXR0aW5ncyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAodSl7byh7dGl0bGU6IlNldHRpbmdzIn0pO2NvbnN0IHA9cigpLGQ9cy5jb21wdXRlZCgoKT0+cC5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSksYz1zLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1be2xhYmVsOiJHZW5lcmFsIixpY29uOiJpLWx1Y2lkZS11c2VyIix0bzoiL3NldHRpbmdzIixleGFjdDohMH1dO3JldHVybiBlLnB1c2goe2xhYmVsOiJOb3RpZmljYXRpb25zIixpY29uOiJpLWx1Y2lkZS1iZWxsIix0bzoiL3NldHRpbmdzL25vdGlmaWNhdGlvbnMifSksYShkLnZhbHVlLCJiaWxsaW5nOnJlYWQiKSYmZS5wdXNoKHtsYWJlbDoiQmlsbGluZyIsaWNvbjoiaS1sdWNpZGUtY3JlZGl0LWNhcmQiLHRvOiIvc2V0dGluZ3MvYmlsbGluZyJ9KSxlLnB1c2goe2xhYmVsOiJTZWN1cml0eSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkIix0bzoiL3NldHRpbmdzL3NlY3VyaXR5In0pLFtlLFt7bGFiZWw6IkRvY3VtZW50YXRpb24iLGljb246ImktbHVjaWRlLWJvb2stb3BlbiIsdG86Imh0dHBzOi8vdWkubnV4dC5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbGF0aW9uL251eHQiLHRhcmdldDoiX2JsYW5rIn1dXX0pO3JldHVybihvLHIsYSx1KT0+e2NvbnN0IHA9dCxkPWksZz1sO3IobihlLHMubWVyZ2VQcm9wcyh7aWQ6InNldHRpbmdzIix1aTp7Ym9keToibGc6cHktMTIifX0sdSkse2hlYWRlcjpzLndpdGhDdHgoKGUsdCxpLG8pPT57aWYoIXQpcmV0dXJuW3MuY3JlYXRlVk5vZGUobSx7dGl0bGU6IlNldHRpbmdzIn0pLHMuY3JlYXRlVk5vZGUocCxudWxsLHtkZWZhdWx0OnMud2l0aEN0eCgoKT0+W3MuY3JlYXRlVk5vZGUoZCx7aXRlbXM6cy51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXSksXzoxfSldO3QobihtLHt0aXRsZToiU2V0dGluZ3MifSxudWxsLGksbykpLHQobihwLG51bGwse2RlZmF1bHQ6cy53aXRoQ3R4KChlLHQsaSxvKT0+e2lmKCF0KXJldHVybltzLmNyZWF0ZVZOb2RlKGQse2l0ZW1zOnMudW5yZWYoYyksaGlnaGxpZ2h0OiIiLGNsYXNzOiItbXgtMSBmbGV4LTEifSxudWxsLDgsWyJpdGVtcyJdKV07dChuKGQse2l0ZW1zOnMudW5yZWYoYyksaGlnaGxpZ2h0OiIiLGNsYXNzOiItbXgtMSBmbGV4LTEifSxudWxsLGksbykpfSksXzoxfSxpLG8pKX0pLGJvZHk6cy53aXRoQ3R4KChlLHQsaSxvKT0+e2lmKCF0KXJldHVybltzLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpnYXAtNiBsZzpnYXAtMTIgdy1mdWxsIGxnOm1heC13LTJ4bCBteC1hdXRvIn0sW3MuY3JlYXRlVk5vZGUoZyldKV07dChgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpnYXAtNiBsZzpnYXAtMTIgdy1mdWxsIGxnOm1heC13LTJ4bCBteC1hdXRvIiR7b30+YCksdChuKGcsbnVsbCxudWxsLGksbykpLHQoIjwvZGl2PiIpfSksXzoxfSxhKSl9fX0pLHA9dS5zZXR1cDt1LnNldHVwPShlLHQpPT57Y29uc3QgaT1zLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oaS5tb2R1bGVzfHwoaS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiKSxwP3AoZSx0KTp2b2lkIDB9O2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zZXR0aW5ncy1ENm5ISEtjVC5tanMubWFwCg==", "chunks/build/styles.mjs": "Y29uc3QgaW50ZXJvcERlZmF1bHQ9ZT0+ZS5kZWZhdWx0fHxlfHxbXSxlPXsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci01MDAudnVlIjooKT0+aW1wb3J0KCIuL2Vycm9yLTUwMC1zdHlsZXMuTTFEY0xzTzYubWpzIikudGhlbihpbnRlcm9wRGVmYXVsdCksIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSI6KCk9PmltcG9ydCgiLi9lcnJvci00MDQtc3R5bGVzLkNCNHpmaFRQLm1qcyIpLnRoZW4oaW50ZXJvcERlZmF1bHQpLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZzY29wZWQ9MjQ4NDMxZDImbGFuZy5jc3MiOigpPT5pbXBvcnQoIi4vZXJyb3ItNTAwLXN0eWxlcy5NMURjTHNPNi5tanMiKS50aGVuKGludGVyb3BEZWZhdWx0KSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci00MDQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmc2NvcGVkPTZkN2JhY2ZmJmxhbmcuY3NzIjooKT0+aW1wb3J0KCIuL2Vycm9yLTQwNC1zdHlsZXMuQ0I0emZoVFAubWpzIikudGhlbihpbnRlcm9wRGVmYXVsdCl9O2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zdHlsZXMubWpzLm1hcAo=", "chunks/build/support-DDsyngE5.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmROYXZiYXItcGtJRWFkT0oubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9CYWRnZS1CQjBLbE1RVi5tanMiO2ltcG9ydHt2IGFzIHIsdSBhcyBhLGggYXMgbyxhZiBhcyBpLGFNIGFzIG4sdyBhcyBsLGkgYXMgZCxhTiBhcyBjLCQgYXMgdX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e1MgYXMgcH1mcm9tIi4vU3VwcG9ydENvbnZlcnNhdGlvbi1CWERqdmdDSC5tanMiO2ltcG9ydHt3IGFzIG19ZnJvbSIuL2Vycm9yLUpYU0d1dUlBLm1qcyI7aW1wb3J0e2YsdCBhcyB2LGogYXMgZyxxIGFzIHl9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4vRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS1DSE1NaWJfVy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL1RleHRhcmVhLUJ5dHBhTVZILm1qcyI7Y29uc3Qgaz1TeW1ib2woInN1cHBvcnRUaWNrZXRzIiksYj1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzdXBwb3J0IixfX3NzcklubGluZVJlbmRlcjohMCxhc3luYyBzZXR1cChiKXtsZXQgeCxoO2Eoe3RpdGxlOiJNeSByZXF1ZXN0cyJ9KTtjb25zdCB3PW8oKSxTPXcuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W107KGkoUywic3VwcG9ydDptYW5hZ2UiKXx8aShTLCJzeXN0ZW06bWFuYWdlIikpJiYoW3gsaF09ci53aXRoQXN5bmNDb250ZXh0KCgpPT5uKCIvc3lzdGVtL3RpY2tldHMiKSksYXdhaXQgeCxoKCkpO2NvbnN0IGo9e2NyZWF0ZVRpY2tldDpmdW5jdGlvbihlKXtyZXR1cm4gdSgiL2FwaS9zdXBwb3J0L3RpY2tldHMiLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfSxmZXRjaFRpY2tldHM6ZnVuY3Rpb24oZT17fSl7cmV0dXJuIHUoIi9hcGkvc3VwcG9ydC90aWNrZXRzIix7cXVlcnk6ey4uLmV9fSl9LGZldGNoVGlja2V0OmZ1bmN0aW9uKGUpe3JldHVybiB1KCIvYXBpL3N1cHBvcnQvdGlja2V0cy86aWQiLHtxdWVyeTp7aWQ6ZX19KX0scG9zdE1lc3NhZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSgiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6ZX0sYm9keTp7Ym9keTp0fX0pfX07bCgpO2NvbnN0e2RhdGE6QixlcnJvcjpUfT1kKCJzdXBwb3J0LXRpY2tldHMiLCgpPT5qLmZldGNoVGlja2V0cyh7bGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSl9KTttKFQpO2NvbnN0IE49ci5jb21wdXRlZCgoKT0+Qi52YWx1ZS5pdGVtcyksQz1yLnJlZihudWxsKSwkPXIucmVmKCExKTthc3luYyBmdW5jdGlvbiBzZWxlY3RUaWNrZXQoZSl7Qy52YWx1ZT1hd2FpdCBqLmZldGNoVGlja2V0KGUpfWFzeW5jIGZ1bmN0aW9uIHNlbmRSZXBseShlKXtpZihDLnZhbHVlKXskLnZhbHVlPSEwO3RyeXtDLnZhbHVlPWF3YWl0IGoucG9zdE1lc3NhZ2UoQy52YWx1ZS5pZCxlKSxhd2FpdCBjKCJzdXBwb3J0LXRpY2tldHMiKX1maW5hbGx5eyQudmFsdWU9ITF9fX1yZXR1cm4gci5wcm92aWRlKGsse3RpY2tldHM6TixzZWxlY3RlZDpDLHNlbGVjdFRpY2tldDpzZWxlY3RUaWNrZXQsc2VuZFJlcGx5OnNlbmRSZXBseX0pLChhLG8saSxuKT0+e2NvbnN0IGw9dCxkPXM7byhmKGUsci5tZXJnZVByb3BzKHtpZDoic3VwcG9ydCJ9LG4pLHtoZWFkZXI6ci53aXRoQ3R4KChlLHQscyxhKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKGwse3RpdGxlOiJNeSByZXF1ZXN0cyJ9KV07dChmKGwse3RpdGxlOiJNeSByZXF1ZXN0cyJ9LG51bGwscyxhKSl9KSxib2R5OnIud2l0aEN0eCgoZSx0LHMsYSk9PntpZighdClyZXR1cm5bci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTEgbGc6Z3JpZC1jb2xzLTMgZ2FwLTQgaC1bY2FsYygxMDB2aC04cmVtKV0ifSxbci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImxnOmNvbC1zcGFuLTEgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3cteS1hdXRvIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In0sWzA9PT1yLnVucmVmKE4pLmxlbmd0aD8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjAsY2xhc3M6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIE5vIHJlcXVlc3RzIHlldC4gVXNlIEZlZWRiYWNrIG9yIEhlbHAgJiBTdXBwb3J0IHRvIHN0YXJ0IG9uZS4gIikpOnIuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoci5vcGVuQmxvY2soITApLHIuY3JlYXRlQmxvY2soci5GcmFnbWVudCxudWxsLHIucmVuZGVyTGlzdChyLnVucmVmKE4pLGU9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soImJ1dHRvbiIse2tleTplLmlkLHR5cGU6ImJ1dHRvbiIsY2xhc3M6WyJ3LWZ1bGwgdGV4dC1sZWZ0IHAtMyBob3ZlcjpiZy1lbGV2YXRlZC81MCIsci51bnJlZihDKT8uaWQ9PT1lLmlkPyJiZy1lbGV2YXRlZCI6IiJdLG9uQ2xpY2s6dD0+c2VsZWN0VGlja2V0KGUuaWQpfSxbci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LFtyLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6ImZvbnQtbWVkaXVtIHRydW5jYXRlIn0sci50b0Rpc3BsYXlTdHJpbmcoZS5zdWJqZWN0KSwxKSxyLmNyZWF0ZVZOb2RlKGQse3NpemU6InhzIix2YXJpYW50OiJzdWJ0bGUiLGNvbG9yOiJjbG9zZWQiPT09ZS5zdGF0dXM/Im5ldXRyYWwiOiJhY3RpdmUiPT09ZS5zdGF0dXM/InN1Y2Nlc3MiOiJ3YXJuaW5nIn0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZS5zdGF0dXMpLDEpXSksXzoyfSwxMDMyLFsiY29sb3IiXSldKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sci50b0Rpc3BsYXlTdHJpbmcoImZlZWRiYWNrIj09PWUua2luZD8iRmVlZGJhY2siOmUuY2F0ZWdvcnkpLDEpXSwxMCxbIm9uQ2xpY2siXSkpKSwxMjgpKV0pLHIuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJsZzpjb2wtc3Bhbi0yIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiJ9LFtyLnVucmVmKEMpPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2socCx7a2V5OjAsbWVzc2FnZXM6ci51bnJlZihDKS5tZXNzYWdlcywidmlld2VyLXJvbGUiOiJ1c2VyIiwiY2FuLXJlcGx5IjoiY2xvc2VkIiE9PXIudW5yZWYoQykuc3RhdHVzLHNlbmRpbmc6ci51bnJlZigkKSxvblNlbmQ6c2VuZFJlcGx5fSxudWxsLDgsWyJtZXNzYWdlcyIsImNhbi1yZXBseSIsInNlbmRpbmciXSkpOihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJoLWZ1bGwgZ3JpZCBwbGFjZS1pdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBTZWxlY3QgYSByZXF1ZXN0IHRvIHZpZXcgdGhlIGNvbnZlcnNhdGlvbi4gIikpXSldKV07dChgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMyBnYXAtNCBoLVtjYWxjKDEwMHZoLThyZW0pXSIke2F9PjxkaXYgY2xhc3M9ImxnOmNvbC1zcGFuLTEgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3cteS1hdXRvIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IiR7YX0+YCksMD09PXIudW5yZWYoTikubGVuZ3RoP3QoYDxwIGNsYXNzPSJwLTQgdGV4dC1zbSB0ZXh0LW11dGVkIiR7YX0+IE5vIHJlcXVlc3RzIHlldC4gVXNlIEZlZWRiYWNrIG9yIEhlbHAgJmFtcDsgU3VwcG9ydCB0byBzdGFydCBvbmUuIDwvcD5gKTp0KCJceDNjIS0tLS1ceDNlIiksdCgiXHgzYyEtLVstLVx4M2UiKSx2KHIudW5yZWYoTiksZT0+e3QoYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iJHtnKFtyLnVucmVmKEMpPy5pZD09PWUuaWQ/ImJnLWVsZXZhdGVkIjoiIiwidy1mdWxsIHRleHQtbGVmdCBwLTMgaG92ZXI6YmctZWxldmF0ZWQvNTAiXSl9IiR7YX0+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIiR7YX0+PHNwYW4gY2xhc3M9ImZvbnQtbWVkaXVtIHRydW5jYXRlIiR7YX0+JHt5KGUuc3ViamVjdCl9PC9zcGFuPmApLHQoZihkLHtzaXplOiJ4cyIsdmFyaWFudDoic3VidGxlIixjb2xvcjoiY2xvc2VkIj09PWUuc3RhdHVzPyJuZXV0cmFsIjoiYWN0aXZlIj09PWUuc3RhdHVzPyJzdWNjZXNzIjoid2FybmluZyJ9LHtkZWZhdWx0OnIud2l0aEN0eCgodCxzLGEsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZS5zdGF0dXMpLDEpXTtzKGAke3koZS5zdGF0dXMpfWApfSksXzoyfSxzLGEpKSx0KGA8L2Rpdj48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIG10LTEiJHthfT4ke3koImZlZWRiYWNrIj09PWUua2luZD8iRmVlZGJhY2siOmUuY2F0ZWdvcnkpfTwvcD48L2J1dHRvbj5gKX0pLHQoYFx4M2MhLS1dLS1ceDNlPC9kaXY+PGRpdiBjbGFzcz0ibGc6Y29sLXNwYW4tMiBib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW4iJHthfT5gKSxyLnVucmVmKEMpP3QoZihwLHttZXNzYWdlczpyLnVucmVmKEMpLm1lc3NhZ2VzLCJ2aWV3ZXItcm9sZSI6InVzZXIiLCJjYW4tcmVwbHkiOiJjbG9zZWQiIT09ci51bnJlZihDKS5zdGF0dXMsc2VuZGluZzpyLnVucmVmKCQpLG9uU2VuZDpzZW5kUmVwbHl9LG51bGwscyxhKSk6dChgPGRpdiBjbGFzcz0iaC1mdWxsIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCIke2F9PiBTZWxlY3QgYSByZXF1ZXN0IHRvIHZpZXcgdGhlIGNvbnZlcnNhdGlvbi4gPC9kaXY+YCksdCgiPC9kaXY+PC9kaXY+Iil9KSxfOjF9LGkpKX19fSkseD1iLnNldHVwO2Iuc2V0dXA9KGUsdCk9Pntjb25zdCBzPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N1cHBvcnQvYXBwL3BhZ2VzL3N1cHBvcnQudnVlIikseD94KGUsdCk6dm9pZCAwfTtleHBvcnR7YiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3VwcG9ydC1ERHN5bmdFNS5tanMubWFwCg==", "chunks/build/system-BN8e4FoE.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9EYXNoYm9hcmRUb29sYmFyLUJ0QUJZektILm1qcyI7aW1wb3J0e18gYXMgdH1mcm9tIi4vTmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzIjtpbXBvcnR7diBhcyByLHUgYXMgbyxoIGFzIGksYWYgYXMgbSxhZyBhcyBhfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBsfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL2lzVmFsdWVFcXVhbE9yRXhpc3QtRG1QeW41Yk4ubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgcD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzeXN0ZW0iLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHApe28oe3RpdGxlOiJTeXN0ZW0gQWRtaW5pc3RyYXRpb24ifSk7Y29uc3QgdT1pKCksZD1yLmNvbXB1dGVkKCgpPT51LmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxjPXIuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVtdO3JldHVybiBtKGQudmFsdWUsInN5c3RlbTptYW5hZ2UiKSYmZS5wdXNoKHtsYWJlbDoiTm90aWZpY2F0aW9ucyIsaWNvbjoiaS1sdWNpZGUtc2VuZCIsdG86Ii9zeXN0ZW0vbm90aWZpY2F0aW9ucyJ9KSxtKGQudmFsdWUsInN1cHBvcnQ6bWFuYWdlIikmJmUucHVzaCh7bGFiZWw6IlRpY2tldHMiLGljb246ImktbHVjaWRlLXRpY2tldCIsdG86Ii9zeXN0ZW0vdGlja2V0cyJ9KSxbZV19KTtyZXR1cm4obyxpLG0scCk9Pntjb25zdCB1PXMsZD10LGY9YTtpKG4oZSxyLm1lcmdlUHJvcHMoe2lkOiJzeXN0ZW0ifSxwKSx7aGVhZGVyOnIud2l0aEN0eCgoZSxzLHQsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVWTm9kZShsLHt0aXRsZToiU3lzdGVtIEFkbWluaXN0cmF0aW9uIn0pLHIuY3JlYXRlVk5vZGUodSxudWxsLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoZCx7aXRlbXM6ci51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXSksXzoxfSldO3MobihsLHt0aXRsZToiU3lzdGVtIEFkbWluaXN0cmF0aW9uIn0sbnVsbCx0LG8pKSxzKG4odSxudWxsLHtkZWZhdWx0OnIud2l0aEN0eCgoZSxzLHQsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVWTm9kZShkLHtpdGVtczpyLnVucmVmKGMpLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCw4LFsiaXRlbXMiXSldO3MobihkLHtpdGVtczpyLnVucmVmKGMpLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCx0LG8pKX0pLF86MX0sdCxvKSl9KSxib2R5OnIud2l0aEN0eCgoZSxzLHQsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCJ9LFtyLmNyZWF0ZVZOb2RlKGYpXSldO3MoYDxkaXYgY2xhc3M9ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCIke299PmApLHMobihmLG51bGwsbnVsbCx0LG8pKSxzKCI8L2Rpdj4iKX0pLF86MX0sbSkpfX19KSx1PXAuc2V0dXA7cC5zZXR1cD0oZSxzKT0+e2NvbnN0IHQ9ci51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHQubW9kdWxlc3x8KHQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0udnVlIiksdT91KGUscyk6dm9pZCAwfTtleHBvcnR7cCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3lzdGVtLUJOOGU0Rm9FLm1qcy5tYXAK", "chunks/build/tickets-B1rOrvLi.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vU2VsZWN0LURpYWlsZlVjLm1qcyI7aW1wb3J0e18gYXMgdH1mcm9tIi4vU3dpdGNoLUJ5VzBCVUxpLm1qcyI7aW1wb3J0e18gYXMgc31mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7diBhcyBhLHUgYXMgbCxhIGFzIGksaSBhcyByLF8gYXMgbywkIGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtTIGFzIG59ZnJvbSIuL1N1cHBvcnRDb252ZXJzYXRpb24tQlhEanZnQ0gubWpzIjtpbXBvcnR7dyBhcyBkfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtmIGFzIGMsbyBhcyBtLHQgYXMgcCxqIGFzIGYscSBhcyB2fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi91c2VSZXNvbHZlZFZhcmlhbnRzLURoSHU2dlJLLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi9WaXN1YWxseUhpZGRlbklucHV0LUQ3bUdQX0pXLm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtjb25zdCB4PWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlN5c3RlbVRpY2tldEluYm94IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChsKXtjb25zdCB4PXtmZXRjaFRpY2tldHM6ZnVuY3Rpb24oZT17fSl7cmV0dXJuIHUoIi9hcGkvc3lzdGVtL3RpY2tldHMiLHtxdWVyeTp7Li4uZX19KX0sZmV0Y2hUaWNrZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoIi9hcGkvc3lzdGVtL3RpY2tldHMvOmlkIix7cXVlcnk6e2lkOmV9fSl9LHBvc3RNZXNzYWdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoIi9hcGkvc3lzdGVtL3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6ZX0sYm9keTp7Ym9keTp0fX0pfSx1cGRhdGVUaWNrZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSgiL2FwaS9zeXN0ZW0vdGlja2V0cy86aWQiLHttZXRob2Q6IlBBVENIIixxdWVyeTp7aWQ6ZX0sYm9keTp0fSl9fSx5PWkoKSxiPWEucmVmKCksZz1hLnJlZigpLGs9YS5yZWYoITEpLFM9W3tsYWJlbDoiQWxsIHN0YXR1c2VzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiT3BlbiIsdmFsdWU6Im9wZW4ifSx7bGFiZWw6IkFjdGl2ZSIsdmFsdWU6ImFjdGl2ZSJ9LHtsYWJlbDoiQ2xvc2VkIix2YWx1ZToiY2xvc2VkIn1dLGo9W3tsYWJlbDoiQWxsIGtpbmRzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiRmVlZGJhY2siLHZhbHVlOiJmZWVkYmFjayJ9LHtsYWJlbDoiU3VwcG9ydCIsdmFsdWU6InN1cHBvcnQifV0se2RhdGE6dyxlcnJvcjpoLHJlZnJlc2g6X309cigic3lzdGVtLXRpY2tldHMiLCgpPT54LmZldGNoVGlja2V0cyh7c3RhdHVzOmIudmFsdWUsa2luZDpnLnZhbHVlLG1pbmVPbmx5OmsudmFsdWUsbGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSksd2F0Y2g6W2IsZyxrXSxzZXJ2ZXI6ITF9KTtkKGgpO2NvbnN0IEM9YS5yZWYobnVsbCksVD1hLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gcmVwbHkoZSl7aWYoQy52YWx1ZSl7VC52YWx1ZT0hMDt0cnl7Qy52YWx1ZT1hd2FpdCB4LnBvc3RNZXNzYWdlKEMudmFsdWUuaWQsZSksYXdhaXQgXygpfWZpbmFsbHl7VC52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIHNldFN0YXR1cyhlKXtDLnZhbHVlJiYoQy52YWx1ZT1hd2FpdCB4LnVwZGF0ZVRpY2tldChDLnZhbHVlLmlkLHtzdGF0dXM6ZX0pLGF3YWl0IF8oKSx5LmFkZCh7dGl0bGU6YE1hcmtlZCAke2V9YCxjb2xvcjoic3VjY2VzcyJ9KSl9cmV0dXJuKGwsaSxyLHUpPT57Y29uc3QgZD1lLHg9dCx5PXMsaD1vO2koYDxkaXYke20oYS5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtMyJ9LHUpKX0+PGRpdiBjbGFzcz0iZmxleCBmbGV4LXdyYXAgZ2FwLTIiPmApLGkoYyhkLHttb2RlbFZhbHVlOmEudW5yZWYoYiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYoYik/Yi52YWx1ZT1lOm51bGwsaXRlbXM6UywidmFsdWUta2V5IjoidmFsdWUiLGNsYXNzOiJ3LTQwIn0sbnVsbCxyKSksaShjKGQse21vZGVsVmFsdWU6YS51bnJlZihnKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihnKT9nLnZhbHVlPWU6bnVsbCxpdGVtczpqLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsY2xhc3M6InctNDAifSxudWxsLHIpKSxpKGMoeCx7bW9kZWxWYWx1ZTphLnVucmVmKGspLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5hLmlzUmVmKGspP2sudmFsdWU9ZTpudWxsLGxhYmVsOiJBc3NpZ25lZCB0byBtZSJ9LG51bGwscikpLGkoJzwvZGl2PjxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTEgbGc6Z3JpZC1jb2xzLTMgZ2FwLTQgaC1bY2FsYygxMDB2aC0xNHJlbSldIj48ZGl2IGNsYXNzPSJsZzpjb2wtc3Bhbi0xIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LXktYXV0byBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCI+JyksMD09PWEudW5yZWYodykuaXRlbXMubGVuZ3RoP2koJzxwIGNsYXNzPSJwLTQgdGV4dC1zbSB0ZXh0LW11dGVkIj4gTm8gdGlja2V0cy4gPC9wPicpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCJceDNjIS0tWy0tXHgzZSIpLHAoYS51bnJlZih3KS5pdGVtcyxlPT57aShgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSIke2YoW2EudW5yZWYoQyk/LmlkPT09ZS5pZD8iYmctZWxldmF0ZWQiOiIiLCJ3LWZ1bGwgdGV4dC1sZWZ0IHAtMyBob3ZlcjpiZy1lbGV2YXRlZC81MCJdKX0iPjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiI+PHNwYW4gY2xhc3M9ImZvbnQtbWVkaXVtIHRydW5jYXRlIj4ke3YoZS5zdWJqZWN0KX08L3NwYW4+YCksaShjKHkse3NpemU6InhzIix2YXJpYW50OiJzdWJ0bGUiLGNvbG9yOiJjbG9zZWQiPT09ZS5zdGF0dXM/Im5ldXRyYWwiOiJhY3RpdmUiPT09ZS5zdGF0dXM/InN1Y2Nlc3MiOiJ3YXJuaW5nIn0se2RlZmF1bHQ6YS53aXRoQ3R4KCh0LHMsbCxpKT0+e2lmKCFzKXJldHVyblthLmNyZWF0ZVRleHRWTm9kZShhLnRvRGlzcGxheVN0cmluZyhlLnN0YXR1cyksMSldO3MoYCR7dihlLnN0YXR1cyl9YCl9KSxfOjJ9LHIpKSxpKGA8L2Rpdj48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIG10LTEiPiR7digiZmVlZGJhY2siPT09ZS5raW5kPyJGZWVkYmFjayI6ZS5jYXRlZ29yeSl9IGApLGUuYXNzaWduZWRUbz9pKCI8c3Bhbj4gwrcgY2xhaW1lZDwvc3Bhbj4iKTppKCJceDNjIS0tLS1ceDNlIiksaSgiPC9wPjwvYnV0dG9uPiIpfSksaSgnXHgzYyEtLV0tLVx4M2U8L2Rpdj48ZGl2IGNsYXNzPSJsZzpjb2wtc3Bhbi0yIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiBmbGV4IGZsZXgtY29sIj4nKSxhLnVucmVmKEMpPyhpKGBceDNjIS0tWy0tXHgzZTxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCBwLTMiPjxkaXYgY2xhc3M9Im1pbi13LTAiPjxwIGNsYXNzPSJmb250LW1lZGl1bSB0cnVuY2F0ZSI+JHt2KGEudW5yZWYoQykuc3ViamVjdCl9PC9wPjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgdHJ1bmNhdGUiPiR7dihhLnVucmVmKEMpLnJlcXVlc3Rlcj8ubmFtZT8/YS51bnJlZihDKS5yZXF1ZXN0ZXI/LmVtYWlsKX08L3A+PC9kaXY+PGRpdiBjbGFzcz0iZmxleCBnYXAtMiI+YCksaShjKGgse3NpemU6InhzIix2YXJpYW50OiJzb2Z0IixsYWJlbDoiQWN0aXZlIixkaXNhYmxlZDoiYWN0aXZlIj09PWEudW5yZWYoQykuc3RhdHVzLG9uQ2xpY2s6ZT0+c2V0U3RhdHVzKCJhY3RpdmUiKX0sbnVsbCxyKSksaShjKGgse3NpemU6InhzIix2YXJpYW50OiJzb2Z0Iixjb2xvcjoibmV1dHJhbCIsbGFiZWw6IkNsb3NlIixkaXNhYmxlZDoiY2xvc2VkIj09PWEudW5yZWYoQykuc3RhdHVzLG9uQ2xpY2s6ZT0+c2V0U3RhdHVzKCJjbG9zZWQiKX0sbnVsbCxyKSksaSgiPC9kaXY+PC9kaXY+IiksaShjKG4se2NsYXNzOiJmbGV4LTEiLG1lc3NhZ2VzOmEudW5yZWYoQykubWVzc2FnZXMsInZpZXdlci1yb2xlIjoiYWdlbnQiLCJjYW4tcmVwbHkiOiJjbG9zZWQiIT09YS51bnJlZihDKS5zdGF0dXMsc2VuZGluZzphLnVucmVmKFQpLG9uU2VuZDpyZXBseX0sbnVsbCxyKSksaSgiXHgzYyEtLV0tLVx4M2UiKSk6aSgnPGRpdiBjbGFzcz0iaC1mdWxsIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCI+IFNlbGVjdCBhIHRpY2tldCB0byByZXNwb25kLiA8L2Rpdj4nKSxpKCI8L2Rpdj48L2Rpdj48L2Rpdj4iKX19fSkseT14LnNldHVwO3guc2V0dXA9KGUsdCk9Pntjb25zdCBzPWEudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvY29tcG9uZW50cy9TeXN0ZW0vU3lzdGVtVGlja2V0SW5ib3gudnVlIikseT95KGUsdCk6dm9pZCAwfTtjb25zdCBiPU9iamVjdC5hc3NpZ24oeCx7X19uYW1lOiJTeXN0ZW1UaWNrZXRJbmJveCJ9KSxnPWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6InRpY2tldHMiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwOmU9PihsKHt0aXRsZToiU3lzdGVtIMK3IFRpY2tldHMifSksKGUsdCxzLGEpPT57dChjKGIsYSxudWxsLHMpKX0pfSksaz1nLnNldHVwO2cuc2V0dXA9KGUsdCk9Pntjb25zdCBzPWEudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL3RpY2tldHMudnVlIiksaz9rKGUsdCk6dm9pZCAwfTtleHBvcnR7ZyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGlja2V0cy1CMXJPcnZMaS5tanMubWFwCg==", "chunks/build/url-BfBoyjJZ.mjs": "aW1wb3J0e3AgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2FaIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIHVzZVJlcXVlc3RVUkwocyl7cmV0dXJuIGUocigpLHMpfWV4cG9ydHt1c2VSZXF1ZXN0VVJMIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD11cmwtQmZCb3lqSloubWpzLm1hcAo=", "chunks/build/useBillingApi-Co-bTSKT.mjs": "aW1wb3J0eyQgYXMgbn1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gdXNlQmlsbGluZ0FwaSgpe3JldHVybntmZXRjaEJhbGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbigiL2FwaS9wYXltZW50cy9iaWxsaW5nL2JhbGFuY2UiKX0sZmV0Y2hUcmFuc2FjdGlvbnM6ZnVuY3Rpb24oaT0xLHQ9MjApe3JldHVybiBuKGAvYXBpL3BheW1lbnRzL2JpbGxpbmcvdHJhbnNhY3Rpb25zP3BhZ2U9JHtpfSZsaW1pdD0ke3R9YCl9LGNoZWNrb3V0OmZ1bmN0aW9uKGkpe3JldHVybiBuKCIvYXBpL3BheW1lbnRzL3NlcGF5L2NoZWNrb3V0Iix7bWV0aG9kOiJQT1NUIixib2R5OnthbW91bnQ6aX19KX0sZmV0Y2hUcmFuc2FjdGlvblN0YXR1czpmdW5jdGlvbihpKXtyZXR1cm4gbihgL2FwaS9wYXltZW50cy9zZXBheS9zdGF0dXM/aWQ9JHtpfWApfSxmZXRjaEJpbGxpbmdTZXR0aW5nczpmdW5jdGlvbigpe3JldHVybiBuKCIvYXBpL29yZ2FuaXphdGlvbi9pbnZvaWNlL3NldHRpbmdzIil9LHVwZGF0ZUJpbGxpbmdTZXR0aW5nczpmdW5jdGlvbihpKXtyZXR1cm4gbigiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZS9zZXR0aW5ncyIse21ldGhvZDoiUEFUQ0giLGJvZHk6aX0pfSxmZXRjaEludm9pY2VzOmZ1bmN0aW9uKCl7cmV0dXJuIG4oIi9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2UiKX0sY3JlYXRlSW52b2ljZTpmdW5jdGlvbihpKXtyZXR1cm4gbigiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZSIse21ldGhvZDoiUE9TVCIsYm9keTppfSl9fX1leHBvcnR7dXNlQmlsbGluZ0FwaSBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlQmlsbGluZ0FwaS1Dby1iVFNLVC5tanMubWFwCg==", "chunks/build/useDirection-D2amOLqF.mjs": "aW1wb3J0e1cgYXMgcix2IGFzIGV9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIHVzZURpcmVjdGlvbih0KXtjb25zdCBpPXIoe2RpcjplLnJlZigibHRyIil9KTtyZXR1cm4gZS5jb21wdXRlZCgoKT0+dD8udmFsdWV8fGkuZGlyPy52YWx1ZXx8Imx0ciIpfWV4cG9ydHt1c2VEaXJlY3Rpb24gYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMubWFwCg==", "chunks/build/useFilter-ClCZaoi8.mjs": "aW1wb3J0e3YgYXMgZSxLIGFzIHR9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIHVzZUZpbHRlciQxKHQpe2NvbnN0IHI9ZS5jb21wdXRlZCgoKT0+ZS51bnJlZih0KSksbj1lLmNvbXB1dGVkKCgpPT5uZXcgSW50bC5Db2xsYXRvcigiZW4iLHt1c2FnZToic2VhcmNoIiwuLi5yLnZhbHVlfSkpO3JldHVybntzdGFydHNXaXRoOihlLHQpPT4wPT09dC5sZW5ndGh8fChlPWUubm9ybWFsaXplKCJORkMiKSx0PXQubm9ybWFsaXplKCJORkMiKSwwPT09bi52YWx1ZS5jb21wYXJlKGUuc2xpY2UoMCx0Lmxlbmd0aCksdCkpLGVuZHNXaXRoOihlLHQpPT4wPT09dC5sZW5ndGh8fChlPWUubm9ybWFsaXplKCJORkMiKSx0PXQubm9ybWFsaXplKCJORkMiKSwwPT09bi52YWx1ZS5jb21wYXJlKGUuc2xpY2UoLXQubGVuZ3RoKSx0KSksY29udGFpbnM6KGUsdCk9PntpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7ZT1lLm5vcm1hbGl6ZSgiTkZDIik7bGV0IHI9MDtjb25zdCBvPSh0PXQubm9ybWFsaXplKCJORkMiKSkubGVuZ3RoO2Zvcig7citvPD1lLmxlbmd0aDtyKyspe2NvbnN0IHM9ZS5zbGljZShyLHIrbyk7aWYoMD09PW4udmFsdWUuY29tcGFyZSh0LHMpKXJldHVybiEwfXJldHVybiExfX19ZnVuY3Rpb24gdXNlRmlsdGVyKCl7Y29uc3R7Y29udGFpbnM6ZSxzdGFydHNXaXRoOnJ9PXVzZUZpbHRlciQxKHtzZW5zaXRpdml0eToiYmFzZSJ9KTtmdW5jdGlvbiBzY29yZSh0LG4pe3JldHVybiBlKHQsbik/ZShuLHQpPzA6cih0LG4pPzE6MjpudWxsfWZ1bmN0aW9uIHNjb3JlSXRlbShlLHIsbil7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gc2NvcmUoU3RyaW5nKGUpLHIpO2xldCBvPW51bGw7Zm9yKGNvbnN0IHMgb2Ygbil7Y29uc3Qgbj10KGUscyk7aWYobnVsbD09biljb250aW51ZTtjb25zdCBjPUFycmF5LmlzQXJyYXkobik/bi5tYXAoU3RyaW5nKTpbU3RyaW5nKG4pXTtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PXNjb3JlKGUscik7aWYobnVsbCE9PXQmJihudWxsPT09b3x8dDxvKSYmKG89dCksMD09PW8pcmV0dXJuIDB9fXJldHVybiBvfXJldHVybntzY29yZTpzY29yZSxzY29yZUl0ZW06c2NvcmVJdGVtLGZpbHRlcjpmdW5jdGlvbihlLHQscil7aWYoIXQpcmV0dXJuIGU7Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXtjb25zdCBlPXNjb3JlSXRlbShvLHQscik7bnVsbCE9PWUmJm4ucHVzaCh7aXRlbTpvLHNjb3JlOmV9KX1yZXR1cm4gbi5zb3J0KChlLHQpPT5lLnNjb3JlLXQuc2NvcmUpLG4ubWFwKCh7aXRlbTplfSk9PmUpfSxmaWx0ZXJHcm91cHM6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0P2UubWFwKGU9Pntjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpe2lmKG51bGw9PW8pY29udGludWU7aWYoci5pc1N0cnVjdHVyYWw/LihvKSl7bi5wdXNoKHtpdGVtOm8sc2NvcmU6LTF9KTtjb250aW51ZX1jb25zdCBlPXNjb3JlSXRlbShvLHQsci5maWVsZHMpO251bGwhPT1lJiZuLnB1c2goe2l0ZW06byxzY29yZTplfSl9cmV0dXJuIG4uc29ydCgoZSx0KT0+ZS5zY29yZS10LnNjb3JlKSxuLm1hcCgoe2l0ZW06ZX0pPT5lKX0pLmZpbHRlcihlPT5lLnNvbWUoZT0+IXIuaXNTdHJ1Y3R1cmFsPy4oZSkpKTplfX19ZXhwb3J0e3VzZUZpbHRlciQxIGFzIGEsdXNlRmlsdGVyIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2VGaWx0ZXItQ2xDWmFvaTgubWpzLm1hcAo=", "chunks/build/useFormControl-BM-MfWmo.mjs": "aW1wb3J0e3YgYXMgbyxWIGFzIHJ9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIHVzZUZvcm1Db250cm9sKGUpe3JldHVybiBvLmNvbXB1dGVkKCgpPT4hby50b1ZhbHVlKGUpfHxCb29sZWFuKHIoZSk/LmNsb3Nlc3QoImZvcm0iKSkpfWV4cG9ydHt1c2VGb3JtQ29udHJvbCBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzLm1hcAo=", "chunks/build/useInfiniteList-UUgnbSmz.mjs": "aW1wb3J0e3YgYXMgZSxhQiBhcyBhfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VJbmZpbml0ZUxpc3QodCxpPXt9KXtjb25zdCByPWkubGltaXQ/PzIwLHM9ZS5yZWYoW10pLGw9ZS5yZWYoIiIpLG89ZS5yZWYoMCksdT1lLnJlZighMCksbj1lLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gbG9hZE1vcmUoKXtpZighbi52YWx1ZSYmdS52YWx1ZSl7bi52YWx1ZT0hMDt0cnl7Y29uc3QgZT1hd2FpdCB0KHtxOmwudmFsdWUsbGltaXQ6cixvZmZzZXQ6by52YWx1ZX0pO3MudmFsdWUucHVzaCguLi5lLml0ZW1zKSxvLnZhbHVlKz1lLml0ZW1zLmxlbmd0aCx1LnZhbHVlPWUuaGFzTW9yZX1maW5hbGx5e24udmFsdWU9ITF9fX1mdW5jdGlvbiByZXNldCgpe3MudmFsdWU9W10sby52YWx1ZT0wLHUudmFsdWU9ITB9cmV0dXJuIGEobCxhc3luYygpPT57cmVzZXQoKSxhd2FpdCBsb2FkTW9yZSgpfSx7ZGVib3VuY2U6MzAwfSksITEhPT1pLmltbWVkaWF0ZSYmbG9hZE1vcmUoKSx7aXRlbXM6cyxxOmwsaGFzTW9yZTp1LGxvYWRpbmc6bixsb2FkTW9yZTpsb2FkTW9yZSxyZXNldDpyZXNldH19ZXhwb3J0e3VzZUluZmluaXRlTGlzdCBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlSW5maW5pdGVMaXN0LVVVZ25iU216Lm1qcy5tYXAK", "chunks/build/useLayerRegistry-C9CB20UH.mjs": "aW1wb3J0e2FlIGFzIGUsdiBhcyBhfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VMYXllclJlZ2lzdHJ5KCl7Y29uc3QgdD1lKCJsYXllclJlZ2lzdHJ5Lm5hdiIsKCk9PltdKSxuPWUoImxheWVyUmVnaXN0cnkub3ZlcmxheXMiLCgpPT5bXSkscj1lKCJsYXllclJlZ2lzdHJ5Lm5hdmJhciIsKCk9PltdKTtyZXR1cm57bmF2SXRlbXM6dCxvdmVybGF5czpuLG5hdmJhckl0ZW1zOnIsY29udHJpYnV0ZTpmdW5jdGlvbihlKXtpZihlLm5hdkl0ZW1zPy5sZW5ndGgpe2NvbnN0IGE9bmV3IFNldCh0LnZhbHVlLm1hcChlPT5lLmlkKSk7dC52YWx1ZT1bLi4udC52YWx1ZSwuLi5lLm5hdkl0ZW1zLmZpbHRlcihlPT4hYS5oYXMoZS5pZCkpXX1pZihlLm92ZXJsYXlzPy5sZW5ndGgpe2NvbnN0IHQ9bmV3IFNldChuLnZhbHVlLm1hcChlPT5lLmlkKSk7bi52YWx1ZT1bLi4ubi52YWx1ZSwuLi5lLm92ZXJsYXlzLmZpbHRlcihlPT4hdC5oYXMoZS5pZCkpLm1hcChlPT4oey4uLmUsY29tcG9uZW50OmEubWFya1JhdyhlLmNvbXBvbmVudCl9KSldfWlmKGUubmF2YmFySXRlbXM/Lmxlbmd0aCl7Y29uc3QgdD1uZXcgU2V0KHIudmFsdWUubWFwKGU9PmUuaWQpKTtyLnZhbHVlPVsuLi5yLnZhbHVlLC4uLmUubmF2YmFySXRlbXMuZmlsdGVyKGU9PiF0LmhhcyhlLmlkKSkubWFwKGU9Pih7Li4uZSxjb21wb25lbnQ6YS5tYXJrUmF3KGUuY29tcG9uZW50KX0pKV19fX19ZXhwb3J0e3VzZUxheWVyUmVnaXN0cnkgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZUxheWVyUmVnaXN0cnktQzlDQjIwVUgubWpzLm1hcAo=", "chunks/build/useProductApi-BZuNjOhk.mjs": "aW1wb3J0eyQgYXMgdH1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gdXNlUHJvZHVjdEFwaSgpe3JldHVybntmZXRjaFByb2R1Y3RzOmZ1bmN0aW9uKHIpe3JldHVybiB0KCIvYXBpL3Byb2R1Y3RzIix7cXVlcnk6cj97c3RhdHVzOnJ9OnZvaWQgMH0pfSxmZXRjaFByb2R1Y3Q6ZnVuY3Rpb24ocil7cmV0dXJuIHQoYC9hcGkvcHJvZHVjdHMvJHtyfWApfSxjcmVhdGVQcm9kdWN0OmZ1bmN0aW9uKHIpe3JldHVybiB0KCIvYXBpL3Byb2R1Y3RzIix7bWV0aG9kOiJQT1NUIixib2R5OnJ9KX0sdXBkYXRlUHJvZHVjdDpmdW5jdGlvbihyLHUpe3JldHVybiB0KGAvYXBpL3Byb2R1Y3RzLyR7cn1gLHttZXRob2Q6IlBBVENIIixib2R5OnV9KX0sZGVsZXRlUHJvZHVjdDpmdW5jdGlvbihyKXtyZXR1cm4gdChgL2FwaS9wcm9kdWN0cy8ke3J9YCx7bWV0aG9kOiJERUxFVEUifSl9fX1leHBvcnR7dXNlUHJvZHVjdEFwaSBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlUHJvZHVjdEFwaS1CWnVOak9oay5tanMubWFwCg==", "chunks/build/useProjectApi-CTL2K6JV.mjs": "aW1wb3J0eyQgYXMgZX1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gdXNlUHJvamVjdEFwaSgpe3JldHVybntmZXRjaFByb2plY3RzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoIi9hcGkvcHJvamVjdHMiKX0sZmV0Y2hQcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBlKGAvYXBpL3Byb2plY3RzLyR7dH1gKX0sY3JlYXRlUHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gZSgiL2FwaS9wcm9qZWN0cyIse21ldGhvZDoiUE9TVCIsYm9keTp0fSl9LHVwZGF0ZVByb2plY3Q6ZnVuY3Rpb24odCxyKXtyZXR1cm4gZShgL2FwaS9wcm9qZWN0cy8ke3R9YCx7bWV0aG9kOiJQQVRDSCIsYm9keTpyfSl9LGRlbGV0ZVByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fWAse21ldGhvZDoiREVMRVRFIn0pfSxhZGRQcm9kdWN0OmZ1bmN0aW9uKHQscil7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fS9wcm9kdWN0c2Ase21ldGhvZDoiUE9TVCIsYm9keTpyfSl9LHJlbW92ZVByb2R1Y3Q6ZnVuY3Rpb24odCxyKXtyZXR1cm4gZShgL2FwaS9wcm9qZWN0cy8ke3R9L3Byb2R1Y3RzLyR7cn1gLHttZXRob2Q6IkRFTEVURSJ9KX0sYWRkTWVtYmVyOmZ1bmN0aW9uKHQscil7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fS9tZW1iZXJzYCx7bWV0aG9kOiJQT1NUIixib2R5OnJ9KX0scmVtb3ZlTWVtYmVyOmZ1bmN0aW9uKHQscil7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fS9tZW1iZXJzLyR7cn1gLHttZXRob2Q6IkRFTEVURSJ9KX19fWV4cG9ydHt1c2VQcm9qZWN0QXBpIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2VQcm9qZWN0QXBpLUNUTDJLNkpWLm1qcy5tYXAK", "chunks/build/useResolvedVariants-DhHu6vRK.mjs": "aW1wb3J0e2QgYXMgcyx2IGFzIGEsSyBhcyBlfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VSZXNvbHZlZFZhcmlhbnRzKHQsbyxyLHUsbil7Y29uc3QgaT1zKCksZD17fTtmb3IoY29uc3QgcyBvZiB1KWRbc109YS5jb21wdXRlZCgoKT0+KHZvaWQgMCE9PW4/LltzXT9hLnRvVmFsdWUobltzXSk6ZShvLHMpKT8/aS51aT8uW3RdPy5kZWZhdWx0VmFyaWFudHM/LltzXT8/ci5kZWZhdWx0VmFyaWFudHM/LltzXSk7cmV0dXJuIGR9ZXhwb3J0e3VzZVJlc29sdmVkVmFyaWFudHMgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzLm1hcAo=", "chunks/build/utils-BRIjRShx.mjs": "aW1wb3J0e3YgYXMgZSxXIGFzIHQsTSBhcyBuLGEzIGFzIHIsVSBhcyBhLFAgYXMgbyxWIGFzIHMsYTQgYXMgdSxYIGFzIGksYTUgYXMgbCxhNiBhcyBjLGE3IGFzIGQsYTggYXMgZixhOSBhcyB2LGFhIGFzIHAsYWIgYXMgeSxhYyBhcyBtLGFkIGFzIGh9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcj10W25dO2lmKCJzdHJpbmciIT10eXBlb2YgciYmIUFycmF5LmlzQXJyYXkocikpZm9yKGNvbnN0IHQgaW4gcilpZigiZGVmYXVsdCIhPT10JiYhKHQgaW4gZSkpe2NvbnN0IG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLHQpO24mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gclt0XX19KX19cmV0dXJuIE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKX1jb25zdCB3PV9tZXJnZU5hbWVzcGFjZXMoe19fcHJvdG9fXzpudWxsfSxbZV0pLEU9cCgoKT0+e2NvbnN0IG49ZS5yZWYobmV3IE1hcCk7ZS5yZWYoKTtjb25zdCByPWUuY29tcHV0ZWQoKCk9Pntmb3IoY29uc3QgZSBvZiBuLnZhbHVlLnZhbHVlcygpKWlmKGUpcmV0dXJuITA7cmV0dXJuITF9KTtyZXR1cm4gdCh7c2Nyb2xsQm9keTplLnJlZighMCl9KSxlLndhdGNoKHIsKGUsdCk9Pnt9LHtpbW1lZGlhdGU6ITAsZmx1c2g6InN5bmMifSksbn0pO2Z1bmN0aW9uIHVzZUJvZHlTY3JvbGxMb2NrKHQpe2NvbnN0IG49TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsNykscj1FKCk7ci52YWx1ZS5zZXQobix0Pz8hMSk7Y29uc3QgYT1lLmNvbXB1dGVkKHtnZXQ6KCk9PnIudmFsdWUuZ2V0KG4pPz8hMSxzZXQ6ZT0+ci52YWx1ZS5zZXQobixlKX0pO3JldHVybiB1KCksYX12YXIgZz1uZXcgV2Vha01hcCxiPW5ldyBXZWFrTWFwLEE9e30sUD0wLHVud3JhcEhvc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJihlLmhvc3R8fHVud3JhcEhvc3QoZS5wYXJlbnROb2RlKSl9LGFwcGx5QXR0cmlidXRlVG9PdGhlcnM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7aWYoZS5jb250YWlucyh0KSlyZXR1cm4gdDt2YXIgbj11bndyYXBIb3N0KHQpO3JldHVybiBuJiZlLmNvbnRhaW5zKG4pP246bnVsbH0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gQm9vbGVhbihlKX0pfSh0LEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pO0Fbbl18fChBW25dPW5ldyBXZWFrTWFwKTt2YXIgbz1BW25dLHM9W10sdT1uZXcgU2V0LGk9bmV3IFNldChhKSxrZWVwPWZ1bmN0aW9uKGUpe2UmJiF1LmhhcyhlKSYmKHUuYWRkKGUpLGtlZXAoZS5wYXJlbnROb2RlKSl9O2EuZm9yRWFjaChrZWVwKTt2YXIgZGVlcD1mdW5jdGlvbihlKXtlJiYhaS5oYXMoZSkmJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5jaGlsZHJlbixmdW5jdGlvbihlKXtpZih1LmhhcyhlKSlkZWVwKGUpO2Vsc2UgdHJ5e3ZhciB0PWUuZ2V0QXR0cmlidXRlKHIpLGE9bnVsbCE9PXQmJiJmYWxzZSIhPT10LGk9KGcuZ2V0KGUpfHwwKSsxLGw9KG8uZ2V0KGUpfHwwKSsxO2cuc2V0KGUsaSksby5zZXQoZSxsKSxzLnB1c2goZSksMT09PWkmJmEmJmIuc2V0KGUsITApLDE9PT1sJiZlLnNldEF0dHJpYnV0ZShuLCJ0cnVlIiksYXx8ZS5zZXRBdHRyaWJ1dGUociwidHJ1ZSIpfWNhdGNoKGUpe319KX07cmV0dXJuIGRlZXAodCksdS5jbGVhcigpLFArKyxmdW5jdGlvbigpe3MuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1nLmdldChlKS0xLGE9by5nZXQoZSktMTtnLnNldChlLHQpLG8uc2V0KGUsYSksdHx8KGIuaGFzKGUpfHxlLnJlbW92ZUF0dHJpYnV0ZShyKSxiLmRlbGV0ZShlKSksYXx8ZS5yZW1vdmVBdHRyaWJ1dGUobil9KSwtLVB8fChnPW5ldyBXZWFrTWFwLGc9bmV3IFdlYWtNYXAsYj1uZXcgV2Vha01hcCxBPXt9KX19O2Z1bmN0aW9uIHVzZUhpZGVPdGhlcnModCl7bGV0IG47ZS53YXRjaCgoKT0+cyh0KSxlPT57bGV0IHQ9ITE7dHJ5e3Q9ISFlPy5jbG9zZXN0KCJbcG9wb3Zlcl06bm90KDpwb3BvdmVyLW9wZW4pIil9Y2F0Y2h7fWUmJiF0P249ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSJkYXRhLWFyaWEtaGlkZGVuIik7dmFyIHI9QXJyYXkuZnJvbShBcnJheS5pc0FycmF5KGUpP2U6W2VdKSxhPW51bGw7cmV0dXJuIGE/KHIucHVzaC5hcHBseShyLEFycmF5LmZyb20oYS5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1saXZlXSwgc2NyaXB0IikpKSxhcHBseUF0dHJpYnV0ZVRvT3RoZXJzKHIsYSxuLCJhcmlhLWhpZGRlbiIpKTpmdW5jdGlvbigpe3JldHVybiBudWxsfX0oZSk6biYmbigpfSl9bGV0IEQ9MDtmdW5jdGlvbiB1c2VJZChuLHI9InJla2EiKXtpZihuKXJldHVybiBuO2xldCBhO2lmKCJ1c2VJZCJpbiB3KWE9ZS51c2VJZD8uKCk7ZWxzZXtjb25zdCBlPXQoe3VzZUlkOnZvaWQgMH0pO2E9ZS51c2VJZD8uKCk/PyIiKyArK0R9cmV0dXJuIHI/YCR7cn0tJHthfWA6YX1jb25zdCBPPWUucmVhY3RpdmUoe2xheWVyc1Jvb3Q6bmV3IFNldCxsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZDpuZXcgU2V0LG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM6dm9pZCAwLGJyYW5jaGVzOm5ldyBTZXR9KTt2YXIgQz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyIixwcm9wczp7ZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZGlzbWlzcyJdLHNldHVwKHQse2VtaXQ6c30pe2NvbnN0IHU9dCxpPXMse2ZvcndhcmRSZWY6bCxjdXJyZW50RWxlbWVudDpjfT1uKCksZD1lLmNvbXB1dGVkKCgpPT5jLnZhbHVlPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzLmRvY3VtZW50KSxmPWUuY29tcHV0ZWQoKCk9Pk8ubGF5ZXJzUm9vdCksdj1lLmNvbXB1dGVkKCgpPT5jLnZhbHVlP0FycmF5LmZyb20oZi52YWx1ZSkuaW5kZXhPZihjLnZhbHVlKTotMSkscD1lLmNvbXB1dGVkKCgpPT5PLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU+MCkseT1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1BcnJheS5mcm9tKGYudmFsdWUpLFt0XT1bLi4uTy5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZF0uc2xpY2UoLTEpLG49ZS5pbmRleE9mKHQpO3JldHVybiB2LnZhbHVlPj1ufSksbT1mdW5jdGlvbih0LG4scj0hMCl7bj8udmFsdWU/Lm93bmVyRG9jdW1lbnQ/P2dsb2JhbFRoaXM7Y29uc3QgYT1lLnJlZighMSk7cmV0dXJuIGUucmVmKCgpPT57fSksZS53YXRjaEVmZmVjdChlPT57fSkse29uUG9pbnRlckRvd25DYXB0dXJlOigpPT57ZS50b1ZhbHVlKHIpJiYoYS52YWx1ZT0hMCl9fX0oMCxjKSxoPWZ1bmN0aW9uKHQsbixyPSEwKXtuPy52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcztjb25zdCBhPWUucmVmKCExKTtyZXR1cm4gZS53YXRjaEVmZmVjdChlPT57fSkse29uRm9jdXNDYXB0dXJlOigpPT57ZS50b1ZhbHVlKHIpJiYoYS52YWx1ZT0hMCl9LG9uQmx1ckNhcHR1cmU6KCk9PntlLnRvVmFsdWUocikmJihhLnZhbHVlPSExKX19fSgwLGMpO3JldHVybiByKCJFc2NhcGUiLGU9Pnt2LnZhbHVlPT09Zi52YWx1ZS5zaXplLTEmJihpKCJlc2NhcGVLZXlEb3duIixlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGkoImRpc21pc3MiKSl9KSxlLndhdGNoRWZmZWN0KGU9PntjLnZhbHVlJiYodS5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMmJigwPT09Ty5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplJiYoTy5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzPWQudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzLGQudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIiksTy5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5hZGQoYy52YWx1ZSkpLGYudmFsdWUuYWRkKGMudmFsdWUpLGUoKCk9Pnt1LmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyYmMT09PU8ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSYmIWEoTy5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzKSYmKGQudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPU8ub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cyl9KSl9KSxlLndhdGNoRWZmZWN0KGU9PntlKCgpPT57Yy52YWx1ZSYmKGYudmFsdWUuZGVsZXRlKGMudmFsdWUpLE8ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuZGVsZXRlKGMudmFsdWUpKX0pfSksKHQsbik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihvKSx7cmVmOmUudW5yZWYobCksImFzLWNoaWxkIjp0LmFzQ2hpbGQsYXM6dC5hcywiZGF0YS1kaXNtaXNzYWJsZS1sYXllciI6IiIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh7cG9pbnRlckV2ZW50czpwLnZhbHVlP3kudmFsdWU/ImF1dG8iOiJub25lIjp2b2lkIDB9KSxvbkZvY3VzQ2FwdHVyZTplLnVucmVmKGgpLm9uRm9jdXNDYXB0dXJlLG9uQmx1ckNhcHR1cmU6ZS51bnJlZihoKS5vbkJsdXJDYXB0dXJlLG9uUG9pbnRlcmRvd25DYXB0dXJlOmUudW5yZWYobSkub25Qb2ludGVyRG93bkNhcHR1cmV9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyIsInN0eWxlIiwib25Gb2N1c0NhcHR1cmUiLCJvbkJsdXJDYXB0dXJlIiwib25Qb2ludGVyZG93bkNhcHR1cmUiXSkpfX0pO2NvbnN0IGs9aCgoKT0+ZS5yZWYoW10pKTtmdW5jdGlvbiBhcnJheVJlbW92ZShlLHQpe2NvbnN0IG49Wy4uLmVdLHI9bi5pbmRleE9mKHQpO3JldHVybi0xIT09ciYmbi5zcGxpY2UociwxKSxufXZhciBCPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkZvY3VzU2NvcGUiLHByb3BzOntsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdHJhcHBlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsibW91bnRBdXRvRm9jdXMiLCJ1bm1vdW50QXV0b0ZvY3VzIl0sc2V0dXAodCx7ZW1pdDpyfSl7Y29uc3QgYT10LHM9cix7Y3VycmVudFJlZjp1LGN1cnJlbnRFbGVtZW50OnB9PW4oKTtlLnJlZihudWxsKTtjb25zdCBoPWZ1bmN0aW9uKCl7Y29uc3QgZT1rKCk7cmV0dXJue2FkZCh0KXtjb25zdCBuPWUudmFsdWVbMF07dCE9PW4mJm4/LnBhdXNlKCksZS52YWx1ZT1hcnJheVJlbW92ZShlLnZhbHVlLHQpLGUudmFsdWUudW5zaGlmdCh0KX0scmVtb3ZlKHQpe2UudmFsdWU9YXJyYXlSZW1vdmUoZS52YWx1ZSx0KSxlLnZhbHVlWzBdPy5yZXN1bWUoKX19fSgpLHc9ZS5yZWFjdGl2ZSh7cGF1c2VkOiExLHBhdXNlKCl7dGhpcy5wYXVzZWQ9ITB9LHJlc3VtZSgpe3RoaXMucGF1c2VkPSExfX0pO2Z1bmN0aW9uIGhhbmRsZUtleURvd24oZSl7aWYoIWEubG9vcCYmIWEudHJhcHBlZClyZXR1cm47aWYody5wYXVzZWQpcmV0dXJuO2NvbnN0IHQ9IlRhYiI9PT1lLmtleSYmIWUuYWx0S2V5JiYhZS5jdHJsS2V5JiYhZS5tZXRhS2V5LG49aSgpO2lmKHQmJm4pe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0LFtyLG9dPW0odCk7ciYmbz9lLnNoaWZ0S2V5fHxuIT09bz9lLnNoaWZ0S2V5JiZuPT09ciYmKGUucHJldmVudERlZmF1bHQoKSxhLmxvb3AmJmYobyx7c2VsZWN0OiEwfSkpOihlLnByZXZlbnREZWZhdWx0KCksYS5sb29wJiZmKHIse3NlbGVjdDohMH0pKTpuPT09dCYmZS5wcmV2ZW50RGVmYXVsdCgpfX1yZXR1cm4gZS53YXRjaEVmZmVjdChlPT57fSksZS53YXRjaEVmZmVjdChhc3luYyB0PT57Y29uc3Qgbj1wLnZhbHVlO2lmKGF3YWl0IGUubmV4dFRpY2soKSwhbilyZXR1cm47aC5hZGQodyk7Y29uc3Qgcj1pKCk7aWYoIW4uY29udGFpbnMocikpe2NvbnN0IGU9bmV3IEN1c3RvbUV2ZW50KGwseSk7bi5hZGRFdmVudExpc3RlbmVyKGwsZT0+cygibW91bnRBdXRvRm9jdXMiLGUpKSxuLmRpc3BhdGNoRXZlbnQoZSksZS5kZWZhdWx0UHJldmVudGVkfHwoYyhkKG4pLHtzZWxlY3Q6ITB9KSxpKCk9PT1yJiZmKG4pKX10KCgpPT57bi5yZW1vdmVFdmVudExpc3RlbmVyKGwsZT0+cygibW91bnRBdXRvRm9jdXMiLGUpKTtjb25zdCBlPW5ldyBDdXN0b21FdmVudCh2LHkpLHVubW91bnRFdmVudEhhbmRsZXI9ZT0+e3MoInVubW91bnRBdXRvRm9jdXMiLGUpfTtuLmFkZEV2ZW50TGlzdGVuZXIodix1bm1vdW50RXZlbnRIYW5kbGVyKSxuLmRpc3BhdGNoRXZlbnQoZSksc2V0VGltZW91dCgoKT0+e2UuZGVmYXVsdFByZXZlbnRlZHx8ZihyPz8odm9pZCAwKS5ib2R5LHtzZWxlY3Q6ITB9KSxuLnJlbW92ZUV2ZW50TGlzdGVuZXIodix1bm1vdW50RXZlbnRIYW5kbGVyKSxoLnJlbW92ZSh3KX0sMCl9KX0pLCh0LG4pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobykse3JlZl9rZXk6ImN1cnJlbnRSZWYiLHJlZjp1LHRhYmluZGV4OiItMSIsImFzLWNoaWxkIjp0LmFzQ2hpbGQsYXM6dC5hcyxvbktleWRvd246aGFuZGxlS2V5RG93bn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KTtjb25zdCBTPSJtZW51Lml0ZW1TZWxlY3QiLFc9WyJFbnRlciIsIiAiXSxGPVsiQXJyb3dVcCIsIlBhZ2VEb3duIiwiRW5kIl0sXz1bIkFycm93RG93biIsIlBhZ2VVcCIsIkhvbWUiLC4uLkZdLHg9e2x0cjpbLi4uVywiQXJyb3dSaWdodCJdLHJ0bDpbLi4uVywiQXJyb3dMZWZ0Il19LEk9e2x0cjpbIkFycm93TGVmdCJdLHJ0bDpbIkFycm93UmlnaHQiXX07ZnVuY3Rpb24gZ2V0T3BlblN0YXRlKGUpe3JldHVybiBlPyJvcGVuIjoiY2xvc2VkIn1mdW5jdGlvbiBpc0luZGV0ZXJtaW5hdGUoZSl7cmV0dXJuImluZGV0ZXJtaW5hdGUiPT09ZX1mdW5jdGlvbiBnZXRDaGVja2VkU3RhdGUoZSl7cmV0dXJuIGlzSW5kZXRlcm1pbmF0ZShlKT8iaW5kZXRlcm1pbmF0ZSI6ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCJ9ZnVuY3Rpb24gZm9jdXNGaXJzdChlKXtjb25zdCB0PWkoKTtmb3IoY29uc3QgbiBvZiBlKXtpZihuPT09dClyZXR1cm47aWYobi5mb2N1cygpLGkoKSE9PXQpcmV0dXJufX1mdW5jdGlvbiBpc1BvaW50ZXJJbkdyYWNlQXJlYShlLHQpe2lmKCF0KXJldHVybiExO3JldHVybiBmdW5jdGlvbihlLHQpe2NvbnN0e3g6bix5OnJ9PWU7bGV0IGE9ITE7Zm9yKGxldCBlPTAsbz10Lmxlbmd0aC0xO2U8dC5sZW5ndGg7bz1lKyspe2NvbnN0IHM9dFtlXS54LHU9dFtlXS55LGk9dFtvXS54LGw9dFtvXS55O3U+ciE9bD5yJiZuPChpLXMpKihyLXUpLyhsLXUpK3MmJihhPSFhKX1yZXR1cm4gYX0oe3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZfSx0KX1mdW5jdGlvbiBpc01vdXNlRXZlbnQoZSl7cmV0dXJuIm1vdXNlIj09PWUucG9pbnRlclR5cGV9ZXhwb3J0e0MgYXMgRCxCIGFzIEYsUyBhcyBJLEYgYXMgTCxJIGFzIFMsdXNlQm9keVNjcm9sbExvY2sgYXMgYSx1c2VIaWRlT3RoZXJzIGFzIGIsZ2V0Q2hlY2tlZFN0YXRlIGFzIGMsVyBhcyBkLHggYXMgZSxmb2N1c0ZpcnN0IGFzIGYsZ2V0T3BlblN0YXRlIGFzIGcsaXNNb3VzZUV2ZW50IGFzIGgsaXNJbmRldGVybWluYXRlIGFzIGksaXNQb2ludGVySW5HcmFjZUFyZWEgYXMgaixfIGFzIGssdXNlSWQgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLUJSSWpSU2h4Lm1qcy5tYXAK", "chunks/build/utils-DIn7ELYV.mjs": "aW1wb3J0e1ggYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7Y29uc3QgdD0icm92aW5nRm9jdXNHcm91cC5vbkVudHJ5Rm9jdXMiLG89e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMH0sbj17QXJyb3dMZWZ0OiJwcmV2IixBcnJvd1VwOiJwcmV2IixBcnJvd1JpZ2h0OiJuZXh0IixBcnJvd0Rvd246Im5leHQiLFBhZ2VVcDoiZmlyc3QiLEhvbWU6ImZpcnN0IixQYWdlRG93bjoibGFzdCIsRW5kOiJsYXN0In07ZnVuY3Rpb24gZ2V0Rm9jdXNJbnRlbnQocix0LG8pe2NvbnN0IGU9ZnVuY3Rpb24ocix0KXtyZXR1cm4icnRsIiE9PXQ/cjoiQXJyb3dMZWZ0Ij09PXI/IkFycm93UmlnaHQiOiJBcnJvd1JpZ2h0Ij09PXI/IkFycm93TGVmdCI6cn0oci5rZXksbyk7aWYoISgidmVydGljYWwiPT09dCYmWyJBcnJvd0xlZnQiLCJBcnJvd1JpZ2h0Il0uaW5jbHVkZXMoZSl8fCJob3Jpem9udGFsIj09PXQmJlsiQXJyb3dVcCIsIkFycm93RG93biJdLmluY2x1ZGVzKGUpKSlyZXR1cm4gbltlXX1mdW5jdGlvbiBmb2N1c0ZpcnN0KHQsbz0hMSl7Y29uc3Qgbj1yKCk7Zm9yKGNvbnN0IGUgb2YgdCl7aWYoZT09PW4pcmV0dXJuO2lmKGUuZm9jdXMoe3ByZXZlbnRTY3JvbGw6b30pLHIoKSE9PW4pcmV0dXJufX1mdW5jdGlvbiB3cmFwQXJyYXkocix0KXtyZXR1cm4gci5tYXAoKG8sbik9PnJbKHQrbiklci5sZW5ndGhdKX1leHBvcnR7dCBhcyBFLG4gYXMgTSxvIGFzIGEsZm9jdXNGaXJzdCBhcyBmLGdldEZvY3VzSW50ZW50IGFzIGcsd3JhcEFycmF5IGFzIHd9OwovLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy1ESW43RUxZVi5tanMubWFwCg==", "chunks/build/virtualizer-Byqi0uAK.mjs": "aW1wb3J0e3YgYXMgZSxOIGFzIHQsTSBhcyBhLFAgYXMgbixTIGFzIGksYXEgYXMgbyxhMSBhcyBsLGFDIGFzIHIsWCBhcyB1LEsgYXMgcyxtIGFzIGQsYXAgYXMgY31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3UgYXMgdn1mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7aCBhcyBmfWZyb20iLi9oYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50LUJrX0FWU1NvLm1qcyI7aW1wb3J0e2cgYXMgaCx1IGFzIG19ZnJvbSIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0e00gYXMgcCxnfWZyb20iLi91dGlscy1ESW43RUxZVi5tanMiO2ltcG9ydHt1IGFzIHl9ZnJvbSIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydHt1IGFzIGJ9ZnJvbSIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0e1YgYXMgQ31mcm9tIi4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydHt1IGFzIGt9ZnJvbSIuL2luZGV4LUIxUE9UTG1hLm1qcyI7aW1wb3J0e2FYIGFzIHh9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGZpbmRWYWx1ZXNCZXR3ZWVuKGUsdCxhKXtjb25zdCBuPWUuZmluZEluZGV4KGU9PngoZSx0KSksaT1lLmZpbmRJbmRleChlPT54KGUsYSkpO2lmKC0xPT09bnx8LTE9PT1pKXJldHVybltdO2NvbnN0W28sbF09W24saV0uc29ydCgoZSx0KT0+ZS10KTtyZXR1cm4gZS5zbGljZShvLGwrMSl9ZnVuY3Rpb24gcXVlcnlDaGVja2VkRWxlbWVudChlKXtyZXR1cm4gZT8ucXVlcnlTZWxlY3RvcigiW2RhdGEtc3RhdGU9Y2hlY2tlZF0iKX1mdW5jdGlvbiBjb21wYXJlKGUsdCxhKXtyZXR1cm4gdm9pZCAwIT09ZSYmdm9pZCAwIT09dCYmKCJzdHJpbmciPT10eXBlb2YgZT9lPT09dDoiZnVuY3Rpb24iPT10eXBlb2YgYT9hKGUsdCk6InN0cmluZyI9PXR5cGVvZiBhP2U/LlthXT09PXQ/LlthXTp4KGUsdCkpfWNvbnN0W3csRV09ZCgiTGlzdGJveFJvb3QiKTt2YXIgUz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94Um9vdCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2ZXJ0aWNhbCJ9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNlbGVjdGlvbkJlaGF2aW9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ0b2dnbGUifSxoaWdobGlnaHRPbkhvdmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsImVudHJ5Rm9jdXMiLCJsZWF2ZSJdLHNldHVwKGEse2V4cG9zZTpsLGVtaXQ6cn0pe2NvbnN0IHU9YSxzPXIse211bHRpcGxlOmQsaGlnaGxpZ2h0T25Ib3Zlcjp2LG9yaWVudGF0aW9uOmYsZGlzYWJsZWQ6aCxzZWxlY3Rpb25CZWhhdmlvcjpwLGRpcjprfT1lLnRvUmVmcyh1KSx7Z2V0SXRlbXM6eH09dCh7aXNQcm92aWRlcjohMH0pLHtoYW5kbGVUeXBlYWhlYWRTZWFyY2g6d309bSgpLHtwcmltaXRpdmVFbGVtZW50OlMsY3VycmVudEVsZW1lbnQ6Qn09bygpLEY9e0FMVDoiQWx0IixBUlJPV19ET1dOOiJBcnJvd0Rvd24iLEFSUk9XX0xFRlQ6IkFycm93TGVmdCIsQVJST1dfUklHSFQ6IkFycm93UmlnaHQiLEFSUk9XX1VQOiJBcnJvd1VwIixCQUNLU1BBQ0U6IkJhY2tzcGFjZSIsQ0FQU19MT0NLOiJDYXBzTG9jayIsQ09OVFJPTDoiQ29udHJvbCIsREVMRVRFOiJEZWxldGUiLEVORDoiRW5kIixFTlRFUjoiRW50ZXIiLEVTQ0FQRToiRXNjYXBlIixGMToiRjEiLEYxMDoiRjEwIixGMTE6IkYxMSIsRjEyOiJGMTIiLEYyOiJGMiIsRjM6IkYzIixGNDoiRjQiLEY1OiJGNSIsRjY6IkY2IixGNzoiRjciLEY4OiJGOCIsRjk6IkY5IixIT01FOiJIb21lIixNRVRBOiJNZXRhIixQQUdFX0RPV046IlBhZ2VEb3duIixQQUdFX1VQOiJQYWdlVXAiLFNISUZUOiJTaGlmdCIsU1BBQ0U6IiAiLFRBQjoiVGFiIixDVFJMOiJDb250cm9sIixBU1RFUklTSzoiKiIsU1BBQ0VfQ09ERToiU3BhY2UifSxBPXkoayksVj1iKEIpLHE9ZS5yZWYoKSxLPWUucmVmKCExKSxJPWUucmVmKCEwKSxIPWkodSwibW9kZWxWYWx1ZSIscyx7ZGVmYXVsdFZhbHVlOnUuZGVmYXVsdFZhbHVlPz8oZC52YWx1ZT9bXTp2b2lkIDApLHBhc3NpdmU6dm9pZCAwPT09dS5tb2RlbFZhbHVlLGRlZXA6ITB9KTtjb25zdCBfPWUucmVmKG51bGwpLFQ9ZS5yZWYobnVsbCksTD1lLnJlZighMSksUD1lLnJlZighMSksTj1jKCksRD1jKCksUj1jKCk7ZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkl0ZW0oKXtyZXR1cm4geCgpLm1hcChlPT5lLnJlZikuZmlsdGVyKGU9PiIiIT09ZS5kYXRhc2V0LmRpc2FibGVkKX1mdW5jdGlvbiBjaGFuZ2VIaWdobGlnaHQoZSx0PSEwLGEpe2lmKCFlKXJldHVybjtfLnZhbHVlPWUsKGE/P0kudmFsdWUpJiZfLnZhbHVlLmZvY3VzKCksdCYmXy52YWx1ZS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QifSk7Y29uc3Qgbj14KCkuZmluZCh0PT50LnJlZj09PWUpO3MoImhpZ2hsaWdodCIsbil9ZnVuY3Rpb24gaGlnaGxpZ2h0Rmlyc3RJdGVtKCl7ZS5uZXh0VGljaygoKT0+e29uS2V5ZG93bk5hdmlnYXRpb24obmV3IEtleWJvYXJkRXZlbnQoImtleWRvd24iLHtrZXk6IlBhZ2VVcCJ9KSl9KX1mdW5jdGlvbiBvbkxlYXZlKGUpe2NvbnN0IHQ9Xy52YWx1ZTt0Py5pc0Nvbm5lY3RlZCYmKFQudmFsdWU9dCksXy52YWx1ZT1udWxsLHMoImxlYXZlIixlKX1mdW5jdGlvbiBvbktleWRvd25OYXZpZ2F0aW9uKGUpe2NvbnN0IHQ9ZyhlLGYudmFsdWUsQS52YWx1ZSk7aWYoIXQpcmV0dXJuO2xldCBhPWdldENvbGxlY3Rpb25JdGVtKCk7aWYoXy52YWx1ZSl7aWYoImxhc3QiPT09dClhLnJldmVyc2UoKTtlbHNlIGlmKCJwcmV2Ij09PXR8fCJuZXh0Ij09PXQpeyJwcmV2Ij09PXQmJmEucmV2ZXJzZSgpO2NvbnN0IGU9YS5pbmRleE9mKF8udmFsdWUpO2E9YS5zbGljZShlKzEpfSFmdW5jdGlvbihlLHQpe2lmKEwudmFsdWV8fCJyZXBsYWNlIiE9PXUuc2VsZWN0aW9uQmVoYXZpb3J8fCFkLnZhbHVlfHwhQXJyYXkuaXNBcnJheShILnZhbHVlKSlyZXR1cm47Y29uc3QgYT1lLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXk7aWYoYSYmIWUuc2hpZnRLZXkpcmV0dXJuO2lmKGUuc2hpZnRLZXkpe2NvbnN0IGE9eCgpLmZpbHRlcihlPT4iIiE9PWUucmVmLmRhdGFzZXQuZGlzYWJsZWQpO2xldCBuPWEuZmluZChlPT5lLnJlZj09PXQpPy52YWx1ZTtpZihlLmtleT09PUYuRU5EP249YS5hdCgtMSk/LnZhbHVlOmUua2V5PT09Ri5IT01FJiYobj1hWzBdPy52YWx1ZSksIW58fCFxLnZhbHVlKXJldHVybjtjb25zdCBpPWZpbmRWYWx1ZXNCZXR3ZWVuKGEubWFwKGU9PmUudmFsdWUpLHEudmFsdWUsbik7SC52YWx1ZT1pfX0oZSxhWzBdKX1pZihhLmxlbmd0aCl7Y2hhbmdlSGlnaGxpZ2h0KGFbXy52YWx1ZXx8InByZXYiIT09dD8wOmEubGVuZ3RoLTFdKX1yZXR1cm4gTC52YWx1ZT9ELnRyaWdnZXIoZSk6dm9pZCAwfWFzeW5jIGZ1bmN0aW9uIGhpZ2hsaWdodFNlbGVjdGVkKHQpe2lmKGF3YWl0IGUubmV4dFRpY2soKSxMLnZhbHVlKU4udHJpZ2dlcih0KTtlbHNle2NvbnN0IGU9Z2V0Q29sbGVjdGlvbkl0ZW0oKSx0PWUuZmluZChlPT4iY2hlY2tlZCI9PT1lLmRhdGFzZXQuc3RhdGUpO3Q/Y2hhbmdlSGlnaGxpZ2h0KHQpOmUubGVuZ3RoJiZjaGFuZ2VIaWdobGlnaHQoZVswXSl9fXJldHVybiBlLndhdGNoKEgsKCk9PntLLnZhbHVlfHxlLm5leHRUaWNrKCgpPT57aGlnaGxpZ2h0U2VsZWN0ZWQoKX0pfSx7aW1tZWRpYXRlOiEwLGRlZXA6ITB9KSxsKHtoaWdobGlnaHRlZEVsZW1lbnQ6XyxoaWdobGlnaHRJdGVtOmZ1bmN0aW9uKGUpe2lmKEwudmFsdWUpUi50cmlnZ2VyKGUpO2Vsc2V7Y29uc3QgdD14KCkuZmluZCh0PT5jb21wYXJlKHQudmFsdWUsZSx1LmJ5KSk7dCYmKF8udmFsdWU9dC5yZWYsY2hhbmdlSGlnaGxpZ2h0KHQucmVmKSl9fSxoaWdobGlnaHRGaXJzdEl0ZW06aGlnaGxpZ2h0Rmlyc3RJdGVtLGhpZ2hsaWdodFNlbGVjdGVkOmhpZ2hsaWdodFNlbGVjdGVkLGdldEl0ZW1zOnh9KSxFKHttb2RlbFZhbHVlOkgsb25WYWx1ZUNoYW5nZTpmdW5jdGlvbihlKXtpZihLLnZhbHVlPSEwLHUubXVsdGlwbGUpe2NvbnN0IHQ9QXJyYXkuaXNBcnJheShILnZhbHVlKT9bLi4uSC52YWx1ZV06W10sYT10LmZpbmRJbmRleCh0PT5jb21wYXJlKHQsZSx1LmJ5KSk7InRvZ2dsZSI9PT11LnNlbGVjdGlvbkJlaGF2aW9yPygtMT09PWE/dC5wdXNoKGUpOnQuc3BsaWNlKGEsMSksSC52YWx1ZT10KTooSC52YWx1ZT1bZV0scS52YWx1ZT1lKX1lbHNlInRvZ2dsZSI9PT11LnNlbGVjdGlvbkJlaGF2aW9yJiZjb21wYXJlKEgudmFsdWUsZSx1LmJ5KT9ILnZhbHVlPXZvaWQgMDpILnZhbHVlPWU7c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfSxtdWx0aXBsZTpkLG9yaWVudGF0aW9uOmYsZGlyOkEsZGlzYWJsZWQ6aCxoaWdobGlnaHRPbkhvdmVyOnYsaGlnaGxpZ2h0ZWRFbGVtZW50Ol8saXNWaXJ0dWFsOkwsdmlydHVhbEZvY3VzSG9vazpOLHZpcnR1YWxLZXlkb3duSG9vazpELHZpcnR1YWxIaWdobGlnaHRIb29rOlIsYnk6dS5ieSxmaXJzdFZhbHVlOnEsc2VsZWN0aW9uQmVoYXZpb3I6cCxmb2N1c2FibGU6SSxvbkxlYXZlOm9uTGVhdmUsb25FbnRlcjpmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBDdXN0b21FdmVudCgibGlzdGJveC5lbnRyeUZvY3VzIix7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfSk7aWYoZS5jdXJyZW50VGFyZ2V0Py5kaXNwYXRjaEV2ZW50KHQpLHMoImVudHJ5Rm9jdXMiLHQpLCF0LmRlZmF1bHRQcmV2ZW50ZWQpaWYoVC52YWx1ZSljaGFuZ2VIaWdobGlnaHQoVC52YWx1ZSk7ZWxzZXtjb25zdCBlPWdldENvbGxlY3Rpb25JdGVtKCk/LlswXTtjaGFuZ2VIaWdobGlnaHQoZSl9fSxjaGFuZ2VIaWdobGlnaHQ6Y2hhbmdlSGlnaGxpZ2h0LG9uS2V5ZG93bkVudGVyOmZ1bmN0aW9uKGUpe18udmFsdWUmJl8udmFsdWUuaXNDb25uZWN0ZWQmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxQLnZhbHVlfHxfLnZhbHVlLmNsaWNrKCkpfSxvbktleWRvd25OYXZpZ2F0aW9uOm9uS2V5ZG93bk5hdmlnYXRpb24sb25LZXlkb3duVHlwZUFoZWFkOmZ1bmN0aW9uKGUpe2lmKEkudmFsdWUpe2lmKEsudmFsdWU9ITAsTC52YWx1ZSlELnRyaWdnZXIoZSk7ZWxzZXtjb25zdCB0PWUuYWx0S2V5fHxlLmN0cmxLZXl8fGUubWV0YUtleTtpZih0JiYiYSI9PT1lLmtleSYmZC52YWx1ZSl7Y29uc3QgdD14KCksYT10Lm1hcChlPT5lLnZhbHVlKTtILnZhbHVlPVsuLi5hXSxlLnByZXZlbnREZWZhdWx0KCk7Y29uc3Qgbj10LmF0KC0xKTtuJiZjaGFuZ2VIaWdobGlnaHQobi5yZWYpfWVsc2UgaWYoIXQpe2NvbnN0IHQ9dyhlLmtleSx4KCkpO3QmJmNoYW5nZUhpZ2hsaWdodCh0KX19c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfX0sb25Db21wb3NpdGlvblN0YXJ0OmZ1bmN0aW9uKCl7UC52YWx1ZT0hMH0sb25Db21wb3NpdGlvbkVuZDpmdW5jdGlvbigpe2UubmV4dFRpY2soKCk9PntQLnZhbHVlPSExfSl9LGhpZ2hsaWdodEZpcnN0SXRlbTpoaWdobGlnaHRGaXJzdEl0ZW19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG4pLHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6Uyxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpcjplLnVucmVmKEEpLCJkYXRhLWRpc2FibGVkIjplLnVucmVmKGgpPyIiOnZvaWQgMCxvblBvaW50ZXJsZWF2ZTpvbkxlYXZlLG9uRm9jdXNvdXQ6YVswXXx8KGFbMF09YXN5bmMgdD0+e2NvbnN0IGE9dC5yZWxhdGVkVGFyZ2V0fHx0LnRhcmdldDthd2FpdCBlLm5leHRUaWNrKCksXy52YWx1ZSYmZS51bnJlZihCKSYmIWUudW5yZWYoQikuY29udGFpbnMoYSkmJm9uTGVhdmUodCl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKEgpfSksZS51bnJlZihWKSYmdC5uYW1lPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihDKSx7a2V5OjAsbmFtZTp0Lm5hbWUsdmFsdWU6ZS51bnJlZihIKSxkaXNhYmxlZDplLnVucmVmKGgpLHJlcXVpcmVkOnQucmVxdWlyZWR9LG51bGwsOCxbIm5hbWUiLCJ2YWx1ZSIsImRpc2FibGVkIiwicmVxdWlyZWQiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGlyIiwiZGF0YS1kaXNhYmxlZCJdKSl9fSksQj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94Q29udGVudCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGEpe2NvbnN0e0NvbGxlY3Rpb25TbG90Oml9PXQoKSxvPXcoKSxyPWwoITEsMTApO3JldHVybih0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoaSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobikse3JvbGU6Imxpc3Rib3giLGFzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGQsdGFiaW5kZXg6ZS51bnJlZihvKS5mb2N1c2FibGUudmFsdWU/ZS51bnJlZihvKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU/Ii0xIjoiMCI6Ii0xIiwiYXJpYS1vcmllbnRhdGlvbiI6ZS51bnJlZihvKS5vcmllbnRhdGlvbi52YWx1ZSwiYXJpYS1tdWx0aXNlbGVjdGFibGUiOiEhZS51bnJlZihvKS5tdWx0aXBsZS52YWx1ZSwiZGF0YS1vcmllbnRhdGlvbiI6ZS51bnJlZihvKS5vcmllbnRhdGlvbi52YWx1ZSxvbk1vdXNlZG93bjphWzBdfHwoYVswXT1lLndpdGhNb2RpZmllcnMoZT0+ci52YWx1ZT0hMCxbImxlZnQiXSkpLG9uRm9jdXM6YVsxXXx8KGFbMV09dD0+e2UudW5yZWYocil8fGUudW5yZWYobykub25FbnRlcih0KX0pLG9uS2V5ZG93bjpbYVsyXXx8KGFbMl09ZS53aXRoS2V5cyh0PT57KCJ2ZXJ0aWNhbCIhPT1lLnVucmVmKG8pLm9yaWVudGF0aW9uLnZhbHVlfHwiQXJyb3dMZWZ0IiE9PXQua2V5JiYiQXJyb3dSaWdodCIhPT10LmtleSkmJigiaG9yaXpvbnRhbCIhPT1lLnVucmVmKG8pLm9yaWVudGF0aW9uLnZhbHVlfHwiQXJyb3dVcCIhPT10LmtleSYmIkFycm93RG93biIhPT10LmtleSkmJih0LnByZXZlbnREZWZhdWx0KCksZS51bnJlZihvKS5mb2N1c2FibGUudmFsdWUmJmUudW5yZWYobykub25LZXlkb3duTmF2aWdhdGlvbih0KSl9LFsiZG93biIsInVwIiwibGVmdCIsInJpZ2h0IiwiaG9tZSIsImVuZCJdKSksZS53aXRoS2V5cyhlLnVucmVmKG8pLm9uS2V5ZG93bkVudGVyLFsiZW50ZXIiXSksZS51bnJlZihvKS5vbktleWRvd25UeXBlQWhlYWRdfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJ0YWJpbmRleCIsImFyaWEtb3JpZW50YXRpb24iLCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsImRhdGEtb3JpZW50YXRpb24iLCJvbktleWRvd24iXSldKSxfOjN9KSl9fSksRj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94RmlsdGVyIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaW5wdXQifX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxyPWkobCwibW9kZWxWYWx1ZSIsYSx7ZGVmYXVsdFZhbHVlOiIiLHBhc3NpdmU6dm9pZCAwPT09bC5tb2RlbFZhbHVlfSksdT13KCkse3ByaW1pdGl2ZUVsZW1lbnQ6c309bygpLGQ9ZS5jb21wdXRlZCgoKT0+bC5kaXNhYmxlZHx8dS5kaXNhYmxlZC52YWx1ZXx8ITEpLGM9ZS5yZWYoKTtyZXR1cm4gZS53YXRjaFN5bmNFZmZlY3QoKCk9PmMudmFsdWU9dS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU/LmlkKSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG4pLHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6cyxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLHZhbHVlOmUudW5yZWYociksZGlzYWJsZWQ6ZC52YWx1ZT8iIjp2b2lkIDAsImRhdGEtZGlzYWJsZWQiOmQudmFsdWU/IiI6dm9pZCAwLCJhcmlhLWRpc2FibGVkIjpkLnZhbHVlPz92b2lkIDAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6Yy52YWx1ZSx0eXBlOiJ0ZXh0IixvbktleWRvd246W2Uud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKGUudW5yZWYodSkub25LZXlkb3duTmF2aWdhdGlvbixbInByZXZlbnQiXSksWyJkb3duIiwidXAiLCJob21lIiwiZW5kIl0pLGUud2l0aEtleXMoZS51bnJlZih1KS5vbktleWRvd25FbnRlcixbImVudGVyIl0pXSxvbklucHV0OmFbMF18fChhWzBdPXQ9PntyLnZhbHVlPXQudGFyZ2V0LnZhbHVlLGUudW5yZWYodSkuaGlnaGxpZ2h0Rmlyc3RJdGVtKCl9KSxvbkNvbXBvc2l0aW9uc3RhcnQ6ZS51bnJlZih1KS5vbkNvbXBvc2l0aW9uU3RhcnQsb25Db21wb3NpdGlvbmVuZDplLnVucmVmKHUpLm9uQ29tcG9zaXRpb25FbmR9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6ZS51bnJlZihyKX0pXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsInZhbHVlIiwiZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsIm9uS2V5ZG93biIsIm9uQ29tcG9zaXRpb25zdGFydCIsIm9uQ29tcG9zaXRpb25lbmQiXSkpfX0pO2NvbnN0W0EsVl09ZCgiTGlzdGJveEdyb3VwIik7dmFyIHE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTGlzdGJveEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LGk9dih2b2lkIDAsInJla2EtbGlzdGJveC1ncm91cCIpO3JldHVybiBWKHtpZDppfSksKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihuKSxlLm1lcmdlUHJvcHMoe3JvbGU6Imdyb3VwIn0sYSx7ImFyaWEtbGFiZWxsZWRieSI6ZS51bnJlZihpKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFyaWEtbGFiZWxsZWRieSJdKSl9fSk7Y29uc3RbSyxJXT1kKCJMaXN0Ym94SXRlbSIpO3ZhciBIPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ikxpc3Rib3hJdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRpdiJ9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKGkse2VtaXQ6b30pe2NvbnN0IGw9aSxyPW8sdT12KHZvaWQgMCwicmVrYS1saXN0Ym94LWl0ZW0iKSx7Q29sbGVjdGlvbkl0ZW06c309dCgpLHtmb3J3YXJkUmVmOmQsY3VycmVudEVsZW1lbnQ6Y309YSgpLGg9dygpLG09ZS5jb21wdXRlZCgoKT0+Yy52YWx1ZT09PWguaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlKSxwPWUuY29tcHV0ZWQoKCk9PntyZXR1cm4gZT1oLm1vZGVsVmFsdWUudmFsdWUsdD1sLnZhbHVlLGE9aC5ieSx2b2lkIDAhPT1lJiYoQXJyYXkuaXNBcnJheShlKT9lLnNvbWUoZT0+Y29tcGFyZShlLHQsYSkpOmNvbXBhcmUoZSx0LGEpKTt2YXIgZSx0LGF9KSxnPWUuY29tcHV0ZWQoKCk9PmguZGlzYWJsZWQudmFsdWV8fGwuZGlzYWJsZWQpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZVNlbGVjdChlKXtyKCJzZWxlY3QiLGUpLGU/LmRlZmF1bHRQcmV2ZW50ZWR8fCFnLnZhbHVlJiZlJiYoaC5vblZhbHVlQ2hhbmdlKGwudmFsdWUpLGguY2hhbmdlSGlnaGxpZ2h0KGMudmFsdWUpKX1mdW5jdGlvbiBoYW5kbGVTZWxlY3RDdXN0b21FdmVudChlKXtjb25zdCB0PXtvcmlnaW5hbEV2ZW50OmUsdmFsdWU6bC52YWx1ZX07ZigibGlzdGJveC5zZWxlY3QiLGhhbmRsZVNlbGVjdCx0KX1yZXR1cm4gSSh7aXNTZWxlY3RlZDpwfSksKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihzKSx7dmFsdWU6dC52YWx1ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS53aXRoTWVtbyhbbS52YWx1ZSxwLnZhbHVlXSwoKT0+ZS5jcmVhdGVWTm9kZShlLnVucmVmKG4pLGUubWVyZ2VQcm9wcyh7aWQ6ZS51bnJlZih1KX0sdC4kYXR0cnMse3JlZjplLnVucmVmKGQpLHJvbGU6Im9wdGlvbiIsdGFiaW5kZXg6ZS51bnJlZihoKS5mb2N1c2FibGUudmFsdWU/bS52YWx1ZT8iMCI6Ii0xIjotMSwiYXJpYS1zZWxlY3RlZCI6cC52YWx1ZSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpc2FibGVkOmcudmFsdWU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjpnLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1oaWdobGlnaHRlZCI6bS52YWx1ZT8iIjp2b2lkIDAsImRhdGEtc3RhdGUiOnAudmFsdWU/ImNoZWNrZWQiOiJ1bmNoZWNrZWQiLG9uQ2xpY2s6aGFuZGxlU2VsZWN0Q3VzdG9tRXZlbnQsb25LZXlkb3duOmUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKGhhbmRsZVNlbGVjdEN1c3RvbUV2ZW50LFsicHJldmVudCJdKSxbInNwYWNlIl0pLG9uUG9pbnRlcm1vdmU6YVswXXx8KGFbMF09KCk9PntlLnVucmVmKGgpLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZSE9PWUudW5yZWYoYykmJmUudW5yZWYoaCkuaGlnaGxpZ2h0T25Ib3Zlci52YWx1ZSYmZS51bnJlZihoKS5jaGFuZ2VIaWdobGlnaHQoZS51bnJlZihjKSwhMSwhMSl9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwidGFiaW5kZXgiLCJhcmlhLXNlbGVjdGVkIiwiYXMiLCJhcy1jaGlsZCIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtaGlnaGxpZ2h0ZWQiLCJkYXRhLXN0YXRlIiwib25LZXlkb3duIl0pLGEsMSldKSxfOjN9LDgsWyJ2YWx1ZSJdKSl9fSksXz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94SXRlbUluZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKHQpe2NvbnN0IGk9dDthKCk7Y29uc3Qgbz1LKCk7cmV0dXJuKHQsYSk9PmUudW5yZWYobykuaXNTZWxlY3RlZC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobiksZS5tZXJnZVByb3BzKHtrZXk6MCwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0saSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxUPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ikxpc3Rib3hWaXJ0dWFsaXplciIscHJvcHM6e29wdGlvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITB9LG92ZXJzY2FuOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZXN0aW1hdGVTaXplOnt0eXBlOltOdW1iZXIsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSx0ZXh0Q29udGVudDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX19LHNldHVwKGEpe2NvbnN0IG49YSxpPWUudXNlU2xvdHMoKSxvPXcoKSxzPXIoKSx7Z2V0SXRlbXM6ZH09dCgpO28uaXNWaXJ0dWFsLnZhbHVlPSEwO2NvbnN0IGM9ZS5jb21wdXRlZCgoKT0+e2NvbnN0IGU9cy52YWx1ZTtpZihlKXtjb25zdCB0PSh2b2lkIDApLmdldENvbXB1dGVkU3R5bGUoZSk7cmV0dXJue3N0YXJ0Ok51bWJlci5wYXJzZUZsb2F0KHQucGFkZGluZ0Jsb2NrU3RhcnR8fHQucGFkZGluZ1RvcCksZW5kOk51bWJlci5wYXJzZUZsb2F0KHQucGFkZGluZ0Jsb2NrRW5kfHx0LnBhZGRpbmdCb3R0b20pfX1yZXR1cm57c3RhcnQ6MCxlbmQ6MH19KSx2PWsoe2dldCBzY3JvbGxQYWRkaW5nU3RhcnQoKXtyZXR1cm4gYy52YWx1ZS5zdGFydH0sZ2V0IHNjcm9sbFBhZGRpbmdFbmQoKXtyZXR1cm4gYy52YWx1ZS5lbmR9LGdldCBjb3VudCgpe3JldHVybiBuLm9wdGlvbnMubGVuZ3RofSxnZXQgaG9yaXpvbnRhbCgpe3JldHVybiJob3Jpem9udGFsIj09PW8ub3JpZW50YXRpb24udmFsdWV9LGVzdGltYXRlU2l6ZTplPT4iZnVuY3Rpb24iPT10eXBlb2Ygbi5lc3RpbWF0ZVNpemU/bi5lc3RpbWF0ZVNpemUoZSk6bi5lc3RpbWF0ZVNpemU/PzI4LGdldFNjcm9sbEVsZW1lbnQ6KCk9PnMudmFsdWUsb3ZlcnNjYW46bi5vdmVyc2Nhbj8/MTJ9KSxmPWUuY29tcHV0ZWQoKCk9PnYudmFsdWUuZ2V0VmlydHVhbEl0ZW1zKCkubWFwKHQ9Pntjb25zdCBhPWkuZGVmYXVsdCh7b3B0aW9uOm4ub3B0aW9uc1t0LmluZGV4XSx2aXJ0dWFsaXplcjp2LnZhbHVlLHZpcnR1YWxJdGVtOnR9KVswXSxvPWEudHlwZT09PWUuRnJhZ21lbnQmJkFycmF5LmlzQXJyYXkoYS5jaGlsZHJlbik/YS5jaGlsZHJlbi5maW5kKGU9PiJzeW1ib2wiIT10eXBlb2YgZS50eXBlKTphO3JldHVybntpdGVtOnQsaXM6ZS5jbG9uZVZOb2RlKG8se2tleTpgJHt0LmtleX1gLCJkYXRhLWluZGV4Ijp0LmluZGV4LCJhcmlhLXNldHNpemUiOm4ub3B0aW9ucy5sZW5ndGgsImFyaWEtcG9zaW5zZXQiOnQuaW5kZXgrMSxzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsdHJhbnNmb3JtOmB0cmFuc2xhdGVZKCR7dC5zdGFydH1weClgLG92ZXJmbG93QW5jaG9yOiJub25lIn19KX19KSk7by52aXJ0dWFsRm9jdXNIb29rLm9uKGU9Pntjb25zdCB0PW4ub3B0aW9ucy5maW5kSW5kZXgoZT0+QXJyYXkuaXNBcnJheShvLm1vZGVsVmFsdWUudmFsdWUpP2NvbXBhcmUoZSxvLm1vZGVsVmFsdWUudmFsdWVbMF0sby5ieSk6Y29tcGFyZShlLG8ubW9kZWxWYWx1ZS52YWx1ZSxvLmJ5KSk7LTEhPT10PyhlPy5wcmV2ZW50RGVmYXVsdCgpLHYudmFsdWUuc2Nyb2xsVG9JbmRleCh0LHthbGlnbjoic3RhcnQifSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Y29uc3QgdD1xdWVyeUNoZWNrZWRFbGVtZW50KHMudmFsdWUpO3QmJihvLmNoYW5nZUhpZ2hsaWdodCh0KSxlJiZ0Py5mb2N1cygpKX0pKTpvLmhpZ2hsaWdodEZpcnN0SXRlbSgpfSksby52aXJ0dWFsSGlnaGxpZ2h0SG9vay5vbihlPT57Y29uc3QgdD1uLm9wdGlvbnMuZmluZEluZGV4KHQ9PmNvbXBhcmUodCxlLG8uYnkpKTt2LnZhbHVlLnNjcm9sbFRvSW5kZXgodCx7YWxpZ246InN0YXJ0In0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9cXVlcnlDaGVja2VkRWxlbWVudChzLnZhbHVlKTtlJiZvLmNoYW5nZUhpZ2hsaWdodChlKX0pfSk7Y29uc3QgbT1sKCIiLDFlMyksZz1lLmNvbXB1dGVkKCgpPT57Y29uc3QgcGFyc2VUZXh0Q29udGVudD1lPT5uLnRleHRDb250ZW50P24udGV4dENvbnRlbnQoZSk6ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybiBuLm9wdGlvbnMubWFwKChlLHQpPT4oe2luZGV4OnQsdGV4dENvbnRlbnQ6cGFyc2VUZXh0Q29udGVudChlKX0pKX0pO3JldHVybiBvLnZpcnR1YWxLZXlkb3duSG9vay5vbihlPT57Y29uc3QgdD1lLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXk7aWYoIlRhYiI9PT1lLmtleSYmIXQpcmV0dXJuO2xldCBhPXBbZS5rZXldO2lmKHQmJiJhIj09PWUua2V5JiZvLm11bHRpcGxlLnZhbHVlPyhlLnByZXZlbnREZWZhdWx0KCksby5tb2RlbFZhbHVlLnZhbHVlPVsuLi5uLm9wdGlvbnNdLGE9Imxhc3QiKTplLnNoaWZ0S2V5JiZhJiZmdW5jdGlvbihlLHQpe2lmKCFvLmZpcnN0VmFsdWU/LnZhbHVlfHwhby5tdWx0aXBsZS52YWx1ZXx8IUFycmF5LmlzQXJyYXkoby5tb2RlbFZhbHVlLnZhbHVlKSlyZXR1cm47Y29uc3QgYT1kKCkuZmlsdGVyKGU9PiIiIT09ZS5yZWYuZGF0YXNldC5kaXNhYmxlZCksaT1hLmZpbmQoZT0+ZS5yZWY9PT1vLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZSk/LnZhbHVlO2lmKCFpKXJldHVybjtsZXQgbD1udWxsO3N3aXRjaCh0KXtjYXNlInByZXYiOmNhc2UibmV4dCI6bD1maW5kVmFsdWVzQmV0d2VlbihuLm9wdGlvbnMsby5maXJzdFZhbHVlLnZhbHVlLGkpO2JyZWFrO2Nhc2UiZmlyc3QiOmw9ZmluZFZhbHVlc0JldHdlZW4obi5vcHRpb25zLG8uZmlyc3RWYWx1ZS52YWx1ZSxuLm9wdGlvbnM/LlswXSk7YnJlYWs7Y2FzZSJsYXN0IjpsPWZpbmRWYWx1ZXNCZXR3ZWVuKG4ub3B0aW9ucyxvLmZpcnN0VmFsdWUudmFsdWUsbi5vcHRpb25zLmF0KC0xKSl9by5tb2RlbFZhbHVlLnZhbHVlPWx9KDAsYSksWyJmaXJzdCIsImxhc3QiXS5pbmNsdWRlcyhhKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IHQ9ImZpcnN0Ij09PWE/MDpuLm9wdGlvbnMubGVuZ3RoLTE7di52YWx1ZS5zY3JvbGxUb0luZGV4KHQpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9ZCgpLHQ9ImZpcnN0Ij09PWE/ZVswXTplLmF0KC0xKTt0JiZvLmNoYW5nZUhpZ2hsaWdodCh0LnJlZil9KX1lbHNlIGlmKCFhJiYhdCl7bS52YWx1ZSs9ZS5rZXk7Y29uc3QgdD1OdW1iZXIodSgpPy5nZXRBdHRyaWJ1dGUoImRhdGEtaW5kZXgiKSksYT1nLnZhbHVlW3RdLnRleHRDb250ZW50LG49Zy52YWx1ZS5tYXAoZT0+ZS50ZXh0Q29udGVudD8/IiIpLGk9aChuLG0udmFsdWUsYSksbD1nLnZhbHVlLmZpbmQoZT0+ZS50ZXh0Q29udGVudD09PWkpO2wmJih2LnZhbHVlLnNjcm9sbFRvSW5kZXgobC5pbmRleCx7YWxpZ246InN0YXJ0In0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9cy52YWx1ZS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pbmRleD0iJHtsLmluZGV4fSJdYCk7ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZvLmNoYW5nZUhpZ2hsaWdodChlKX0pKX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soImRpdiIseyJkYXRhLXJla2EtdmlydHVhbGl6ZXIiOiIiLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6IjEwMCUiLGhlaWdodDpgJHtlLnVucmVmKHYpLmdldFRvdGFsU2l6ZSgpfXB4YH0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGYudmFsdWUsKHtpczp0LGl0ZW06YX0pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodCkse2tleTphLmluZGV4fSkpKSwxMjgpKV0sNCkpfX0pO2Z1bmN0aW9uIGdldFNpemUoZSx0KXtyZXR1cm4gdD97eHM6NDQsc206NDgsbWQ6NTIsbGc6NTYseGw6NjB9W2VdOnt4czoyNCxzbToyOCxtZDozMixsZzozNix4bDo0MH1bZV19ZnVuY3Rpb24gZ2V0RXN0aW1hdGVTaXplKGUsdCxhLG4pe2NvbnN0IGk9Z2V0U2l6ZSh0LCEwKSxvPWdldFNpemUodCwhMSk7cmV0dXJuIG4/KCk9Pmk6YT90PT5mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuITE7Y29uc3QgYT1zKGUsdCk7cmV0dXJuIG51bGwhPWEmJiIiIT09YX0oZVt0XSxhKT9pOm86KCk9Pm99ZXhwb3J0e0ggYXMgTCxfIGFzIGEsRiBhcyBiLFQgYXMgYyxxIGFzIGQsUyBhcyBlLEIgYXMgZixnZXRFc3RpbWF0ZVNpemUgYXMgZyxBIGFzIGgsdyBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmlydHVhbGl6ZXItQnlxaTB1QUsubWpzLm1hcAo=", "chunks/nitro/nitro.mjs": "aW1wb3J0e0J1ZmZlciBhcyBlfWZyb20ibm9kZTpidWZmZXIiO2ltcG9ydCBzIGZyb20ibm9kZTpwcm9jZXNzIjtpbXBvcnR7ZW52IGFzIGR9ZnJvbSJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydHtFdmVudEVtaXR0ZXIgYXMgbX1mcm9tIm5vZGU6ZXZlbnRzIjtpbXBvcnR7c2V0SW1tZWRpYXRlIGFzIGgsY2xlYXJJbW1lZGlhdGUgYXMgZ31mcm9tIm5vZGU6dGltZXJzIjtpbXBvcnR7QXN5bmNMb2NhbFN0b3JhZ2UgYXMgeH1mcm9tIm5vZGU6YXN5bmNfaG9va3MiO2Z1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMoZSxzKXtmb3IodmFyIGQ9MDtkPHMubGVuZ3RoO2QrKyl7Y29uc3QgbT1zW2RdO2lmKCJzdHJpbmciIT10eXBlb2YgbSYmIUFycmF5LmlzQXJyYXkobSkpZm9yKGNvbnN0IHMgaW4gbSlpZigiZGVmYXVsdCIhPT1zJiYhKHMgaW4gZSkpe2NvbnN0IGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLHMpO2QmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHMsZC5nZXQ/ZDp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbVtzXX19KX19cmV0dXJuIE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKX0iZ2xvYmFsImluIGdsb2JhbFRoaXN8fChnbG9iYWxUaGlzLmdsb2JhbD1nbG9iYWxUaGlzKTtjbGFzcyBSZWFkU3RyZWFte2ZkO2lzUmF3PSExO2lzVFRZPSExO2NvbnN0cnVjdG9yKGUpe3RoaXMuZmQ9ZX1zZXRSYXdNb2RlKGUpe3JldHVybiB0aGlzLmlzUmF3PWUsdGhpc319Y2xhc3MgV3JpdGVTdHJlYW17ZmQ7Y29sdW1ucz04MDtyb3dzPTI0O2lzVFRZPSExO2NvbnN0cnVjdG9yKGUpe3RoaXMuZmQ9ZX1jbGVhckxpbmUoZSxzKXtyZXR1cm4gcyYmcygpLCExfWNsZWFyU2NyZWVuRG93bihlKXtyZXR1cm4gZSYmZSgpLCExfWN1cnNvclRvKGUscyxkKXtyZXR1cm4gZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoKSwhMX1tb3ZlQ3Vyc29yKGUscyxkKXtyZXR1cm4gZCYmZCgpLCExfWdldENvbG9yRGVwdGgoZSl7cmV0dXJuIDF9aGFzQ29sb3JzKGUscyl7cmV0dXJuITF9Z2V0V2luZG93U2l6ZSgpe3JldHVyblt0aGlzLmNvbHVtbnMsdGhpcy5yb3dzXX13cml0ZShlLHMsZCl7ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihlPShuZXcgVGV4dERlY29kZXIpLmRlY29kZShlKSk7dHJ5e2NvbnNvbGUubG9nKGUpfWNhdGNoe31yZXR1cm4gZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoKSwhMX19ZnVuY3Rpb24gY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcihlKXtyZXR1cm4gbmV3IEVycm9yKGBbdW5lbnZdICR7ZX0gaXMgbm90IGltcGxlbWVudGVkIHlldCFgKX1mdW5jdGlvbiBub3RJbXBsZW1lbnRlZChlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbigoKT0+e3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoZSl9LHtfX3VuZW52X186ITB9KX1jb25zdCAkPSIyMi4xNC4wIjtjbGFzcyBQcm9jZXNzIGV4dGVuZHMgbXtlbnY7aHJ0aW1lO25leHRUaWNrO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5lbnY9ZS5lbnYsdGhpcy5ocnRpbWU9ZS5ocnRpbWUsdGhpcy5uZXh0VGljaz1lLm5leHRUaWNrO2Zvcihjb25zdCBlIG9mWy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFByb2Nlc3MucHJvdG90eXBlKSwuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtLnByb3RvdHlwZSldKXtjb25zdCBzPXRoaXNbZV07ImZ1bmN0aW9uIj09dHlwZW9mIHMmJih0aGlzW2VdPXMuYmluZCh0aGlzKSl9fWVtaXRXYXJuaW5nKGUscyxkKXtjb25zb2xlLndhcm4oYCR7ZD9gWyR7ZH1dIGA6IiJ9JHtzP2Ake3N9OiBgOiIifSR7ZX1gKX1lbWl0KC4uLmUpe3JldHVybiBzdXBlci5lbWl0KC4uLmUpfWxpc3RlbmVycyhlKXtyZXR1cm4gc3VwZXIubGlzdGVuZXJzKGUpfSNlOyN0OyNuO2dldCBzdGRpbigpe3JldHVybiB0aGlzLiNlPz89bmV3IFJlYWRTdHJlYW0oMCl9Z2V0IHN0ZG91dCgpe3JldHVybiB0aGlzLiN0Pz89bmV3IFdyaXRlU3RyZWFtKDEpfWdldCBzdGRlcnIoKXtyZXR1cm4gdGhpcy4jbj8/PW5ldyBXcml0ZVN0cmVhbSgyKX0jaT0iLyI7Y2hkaXIoZSl7dGhpcy4jaT1lfWN3ZCgpe3JldHVybiB0aGlzLiNpfWFyY2g9IiI7cGxhdGZvcm09IiI7YXJndj1bXTthcmd2MD0iIjtleGVjQXJndj1bXTtleGVjUGF0aD0iIjt0aXRsZT0iIjtwaWQ9MjAwO3BwaWQ9MTAwO2dldCB2ZXJzaW9uKCl7cmV0dXJuYHYkeyR9YH1nZXQgdmVyc2lvbnMoKXtyZXR1cm57bm9kZTokfX1nZXQgYWxsb3dlZE5vZGVFbnZpcm9ubWVudEZsYWdzKCl7cmV0dXJuIG5ldyBTZXR9Z2V0IHNvdXJjZU1hcHNFbmFibGVkKCl7cmV0dXJuITF9Z2V0IGRlYnVnUG9ydCgpe3JldHVybiAwfWdldCB0aHJvd0RlcHJlY2F0aW9uKCl7cmV0dXJuITF9Z2V0IHRyYWNlRGVwcmVjYXRpb24oKXtyZXR1cm4hMX1nZXQgZmVhdHVyZXMoKXtyZXR1cm57fX1nZXQgcmVsZWFzZSgpe3JldHVybnt9fWdldCBjb25uZWN0ZWQoKXtyZXR1cm4hMX1nZXQgY29uZmlnKCl7cmV0dXJue319Z2V0IG1vZHVsZUxvYWRMaXN0KCl7cmV0dXJuW119Y29uc3RyYWluZWRNZW1vcnkoKXtyZXR1cm4gMH1hdmFpbGFibGVNZW1vcnkoKXtyZXR1cm4gMH11cHRpbWUoKXtyZXR1cm4gMH1yZXNvdXJjZVVzYWdlKCl7cmV0dXJue319cmVmKCl7fXVucmVmKCl7fXVtYXNrKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy51bWFzayIpfWdldEJ1aWx0aW5Nb2R1bGUoKXt9Z2V0QWN0aXZlUmVzb3VyY2VzSW5mbygpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuZ2V0QWN0aXZlUmVzb3VyY2VzSW5mbyIpfWV4aXQoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLmV4aXQiKX1yZWFsbHlFeGl0KCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5yZWFsbHlFeGl0Iil9a2lsbCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3Mua2lsbCIpfWFib3J0KCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5hYm9ydCIpfWRsb3Blbigpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuZGxvcGVuIil9c2V0U291cmNlTWFwc0VuYWJsZWQoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLnNldFNvdXJjZU1hcHNFbmFibGVkIil9bG9hZEVudkZpbGUoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLmxvYWRFbnZGaWxlIil9ZGlzY29ubmVjdCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuZGlzY29ubmVjdCIpfWNwdVVzYWdlKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5jcHVVc2FnZSIpfXNldFVuY2F1Z2h0RXhjZXB0aW9uQ2FwdHVyZUNhbGxiYWNrKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5zZXRVbmNhdWdodEV4Y2VwdGlvbkNhcHR1cmVDYWxsYmFjayIpfWhhc1VuY2F1Z2h0RXhjZXB0aW9uQ2FwdHVyZUNhbGxiYWNrKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5oYXNVbmNhdWdodEV4Y2VwdGlvbkNhcHR1cmVDYWxsYmFjayIpfWluaXRncm91cHMoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLmluaXRncm91cHMiKX1vcGVuU3RkaW4oKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLm9wZW5TdGRpbiIpfWFzc2VydCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuYXNzZXJ0Iil9YmluZGluZygpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuYmluZGluZyIpfXBlcm1pc3Npb249e2hhczpub3RJbXBsZW1lbnRlZCgicHJvY2Vzcy5wZXJtaXNzaW9uLmhhcyIpfTtyZXBvcnQ9e2RpcmVjdG9yeToiIixmaWxlbmFtZToiIixzaWduYWw6IlNJR1VTUjIiLGNvbXBhY3Q6ITEscmVwb3J0T25GYXRhbEVycm9yOiExLHJlcG9ydE9uU2lnbmFsOiExLHJlcG9ydE9uVW5jYXVnaHRFeGNlcHRpb246ITEsZ2V0UmVwb3J0Om5vdEltcGxlbWVudGVkKCJwcm9jZXNzLnJlcG9ydC5nZXRSZXBvcnQiKSx3cml0ZVJlcG9ydDpub3RJbXBsZW1lbnRlZCgicHJvY2Vzcy5yZXBvcnQud3JpdGVSZXBvcnQiKX07ZmluYWxpemF0aW9uPXtyZWdpc3Rlcjpub3RJbXBsZW1lbnRlZCgicHJvY2Vzcy5maW5hbGl6YXRpb24ucmVnaXN0ZXIiKSx1bnJlZ2lzdGVyOm5vdEltcGxlbWVudGVkKCJwcm9jZXNzLmZpbmFsaXphdGlvbi51bnJlZ2lzdGVyIikscmVnaXN0ZXJCZWZvcmVFeGl0Om5vdEltcGxlbWVudGVkKCJwcm9jZXNzLmZpbmFsaXphdGlvbi5yZWdpc3RlckJlZm9yZUV4aXQiKX07bWVtb3J5VXNhZ2U9T2JqZWN0LmFzc2lnbigoKT0+KHthcnJheUJ1ZmZlcnM6MCxyc3M6MCxleHRlcm5hbDowLGhlYXBUb3RhbDowLGhlYXBVc2VkOjB9KSx7cnNzOigpPT4wfSk7bWFpbk1vZHVsZT12b2lkIDA7ZG9tYWluPXZvaWQgMDtzZW5kPXZvaWQgMDtleGl0Q29kZT12b2lkIDA7Y2hhbm5lbD12b2lkIDA7Z2V0ZWdpZD12b2lkIDA7Z2V0ZXVpZD12b2lkIDA7Z2V0Z2lkPXZvaWQgMDtnZXRncm91cHM9dm9pZCAwO2dldHVpZD12b2lkIDA7c2V0ZWdpZD12b2lkIDA7c2V0ZXVpZD12b2lkIDA7c2V0Z2lkPXZvaWQgMDtzZXRncm91cHM9dm9pZCAwO3NldHVpZD12b2lkIDA7X2V2ZW50cz12b2lkIDA7X2V2ZW50c0NvdW50PXZvaWQgMDtfZXhpdGluZz12b2lkIDA7X21heExpc3RlbmVycz12b2lkIDA7X2RlYnVnRW5kPXZvaWQgMDtfZGVidWdQcm9jZXNzPXZvaWQgMDtfZmF0YWxFeGNlcHRpb249dm9pZCAwO19nZXRBY3RpdmVIYW5kbGVzPXZvaWQgMDtfZ2V0QWN0aXZlUmVxdWVzdHM9dm9pZCAwO19raWxsPXZvaWQgMDtfcHJlbG9hZF9tb2R1bGVzPXZvaWQgMDtfcmF3RGVidWc9dm9pZCAwO19zdGFydFByb2ZpbGVySWRsZU5vdGlmaWVyPXZvaWQgMDtfc3RvcFByb2ZpbGVySWRsZU5vdGlmaWVyPXZvaWQgMDtfdGlja0NhbGxiYWNrPXZvaWQgMDtfZGlzY29ubmVjdD12b2lkIDA7X2hhbmRsZVF1ZXVlPXZvaWQgMDtfcGVuZGluZ01lc3NhZ2U9dm9pZCAwO19jaGFubmVsPXZvaWQgMDtfc2VuZD12b2lkIDA7X2xpbmtlZEJpbmRpbmc9dm9pZCAwfWNvbnN0IFM9T2JqZWN0LmNyZWF0ZShudWxsKSxqPWdsb2JhbFRoaXMucHJvY2VzcyxfZ2V0RW52PWU9Pmdsb2JhbFRoaXMuX19lbnZfX3x8aj8uZW52fHwoZT9TOmdsb2JhbFRoaXMpLHo9bmV3IFByb3h5KFMse2dldDooZSxzKT0+X2dldEVudigpW3NdPz9TW3NdLGhhczooZSxzKT0+cyBpbiBfZ2V0RW52KCl8fHMgaW4gUyxzZXQ6KGUscyxkKT0+KF9nZXRFbnYoITApW3NdPWQsITApLGRlbGV0ZVByb3BlcnR5OihlLHMpPT4oZGVsZXRlIF9nZXRFbnYoITApW3NdLCEwKSxvd25LZXlzKCl7Y29uc3QgZT1fZ2V0RW52KCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxzKXtjb25zdCBkPV9nZXRFbnYoKTtpZihzIGluIGQpcmV0dXJue3ZhbHVlOmRbc10sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9fX0pLEk9T2JqZWN0LmFzc2lnbihmdW5jdGlvbihlKXtjb25zdCBzPURhdGUubm93KCksZD1NYXRoLnRydW5jKHMvMWUzKSxtPXMlMWUzKjFlNjtpZihlKXtsZXQgcz1kLWVbMF0saD1tLWVbMF07cmV0dXJuIGg8MCYmKHMtPTEsaD0xZTkraCksW3MsaF19cmV0dXJuW2QsbV19LHtiaWdpbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gQmlnSW50KDFlNipEYXRlLm5vdygpKX19KTtnbG9iYWxUaGlzLl9fZW52X189ZDtjb25zdCBUPW5ldyBQcm9jZXNzKHtlbnY6eixocnRpbWU6SSxuZXh0VGljazpzLm5leHRUaWNrfSk7Zm9yKGNvbnN0IGUgb2ZbImV4aXQiLCJnZXRCdWlsdGluTW9kdWxlIiwicGxhdGZvcm0iXSllIGluIHMmJihUW2VdPXNbZV0pO3MuZmVhdHVyZXMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJmZWF0dXJlcyIse2dldDooKT0+cy5mZWF0dXJlc30pO2NvbnN0e2Fib3J0OlIsYWRkTGlzdGVuZXI6RSxhbGxvd2VkTm9kZUVudmlyb25tZW50RmxhZ3M6TyxoYXNVbmNhdWdodEV4Y2VwdGlvbkNhcHR1cmVDYWxsYmFjazpOLHNldFVuY2F1Z2h0RXhjZXB0aW9uQ2FwdHVyZUNhbGxiYWNrOlUsbG9hZEVudkZpbGU6Qixzb3VyY2VNYXBzRW5hYmxlZDpWLGFyY2g6SCxhcmd2OkssYXJndjA6ZWUsY2hkaXI6dGUsY29uZmlnOmllLGNvbm5lY3RlZDpyZSxjb25zdHJhaW5lZE1lbW9yeTpvZSxhdmFpbGFibGVNZW1vcnk6YWUsY3B1VXNhZ2U6c2UsY3dkOmxlLGRlYnVnUG9ydDpjZSxkbG9wZW46dWUsZGlzY29ubmVjdDpkZSxlbWl0OnBlLGVtaXRXYXJuaW5nOm1lLGVudjpmZSxldmVudE5hbWVzOmhlLGV4ZWNBcmd2OmdlLGV4ZWNQYXRoOnZlLGV4aXQ6eWUsZmluYWxpemF0aW9uOmJlLGZlYXR1cmVzOl9lLGdldEJ1aWx0aW5Nb2R1bGU6eGUsZ2V0QWN0aXZlUmVzb3VyY2VzSW5mbzp3ZSxnZXRNYXhMaXN0ZW5lcnM6JGUsaHJ0aW1lOlNlLGtpbGw6a2UsbGlzdGVuZXJzOmplLGxpc3RlbmVyQ291bnQ6emUsbWVtb3J5VXNhZ2U6SWUsbmV4dFRpY2s6Q2Usb246VGUsb2ZmOlJlLG9uY2U6RWUscGlkOk9lLHBsYXRmb3JtOlBlLHBwaWQ6TmUscHJlcGVuZExpc3RlbmVyOkRlLHByZXBlbmRPbmNlTGlzdGVuZXI6VWUscmF3TGlzdGVuZXJzOkxlLHJlbGVhc2U6QWUscmVtb3ZlQWxsTGlzdGVuZXJzOnFlLHJlbW92ZUxpc3RlbmVyOkZlLHJlcG9ydDpCZSxyZXNvdXJjZVVzYWdlOlplLHNldE1heExpc3RlbmVyczpNZSxzZXRTb3VyY2VNYXBzRW5hYmxlZDpRZSxzdGRlcnI6VmUsc3RkaW46SGUsc3Rkb3V0OldlLHRpdGxlOkplLHVtYXNrOktlLHVwdGltZTpHZSx2ZXJzaW9uOlhlLHZlcnNpb25zOlllLGRvbWFpbjpldCxpbml0Z3JvdXBzOnR0LG1vZHVsZUxvYWRMaXN0Om50LHJlYWxseUV4aXQ6aXQsb3BlblN0ZGluOnJ0LGFzc2VydDpvdCxiaW5kaW5nOmF0LHNlbmQ6c3QsZXhpdENvZGU6Y3QsY2hhbm5lbDp1dCxnZXRlZ2lkOmR0LGdldGV1aWQ6cHQsZ2V0Z2lkOm10LGdldGdyb3VwczpmdCxnZXR1aWQ6aHQsc2V0ZWdpZDp2dCxzZXRldWlkOnl0LHNldGdpZDpidCxzZXRncm91cHM6X3Qsc2V0dWlkOnh0LHBlcm1pc3Npb246d3QsbWFpbk1vZHVsZTokdCxfZXZlbnRzOlN0LF9ldmVudHNDb3VudDprdCxfZXhpdGluZzpqdCxfbWF4TGlzdGVuZXJzOnp0LF9kZWJ1Z0VuZDpJdCxfZGVidWdQcm9jZXNzOkN0LF9mYXRhbEV4Y2VwdGlvbjpUdCxfZ2V0QWN0aXZlSGFuZGxlczpSdCxfZ2V0QWN0aXZlUmVxdWVzdHM6RXQsX2tpbGw6T3QsX3ByZWxvYWRfbW9kdWxlczpQdCxfcmF3RGVidWc6TnQsX3N0YXJ0UHJvZmlsZXJJZGxlTm90aWZpZXI6RHQsX3N0b3BQcm9maWxlcklkbGVOb3RpZmllcjpVdCxfdGlja0NhbGxiYWNrOkx0LF9kaXNjb25uZWN0OkF0LF9oYW5kbGVRdWV1ZTpxdCxfcGVuZGluZ01lc3NhZ2U6RnQsX2NoYW5uZWw6QnQsX3NlbmQ6WnQsX2xpbmtlZEJpbmRpbmc6TXR9PVQsUXQ9Z2xvYmFsVGhpcy5wcm9jZXNzO2dsb2JhbFRoaXMucHJvY2Vzcz1RdD9uZXcgUHJveHkoUXQse2dldDooZSxzLGQpPT5SZWZsZWN0LmhhcyhlLHMpP1JlZmxlY3QuZ2V0KGUscyxkKTpSZWZsZWN0LmdldChULHMsZCl9KTpULGdsb2JhbFRoaXMuQnVmZmVyfHwoZ2xvYmFsVGhpcy5CdWZmZXI9ZSksZ2xvYmFsVGhpcy5zZXRJbW1lZGlhdGV8fChnbG9iYWxUaGlzLnNldEltbWVkaWF0ZT1oKSxnbG9iYWxUaGlzLmNsZWFySW1tZWRpYXRlfHwoZ2xvYmFsVGhpcy5jbGVhckltbWVkaWF0ZT1nKTtjb25zdCBWdD1nbG9iYWxUaGlzLmNyeXB0byxyYW5kb21VVUlEPSgpPT5WdC5yYW5kb21VVUlEKCksSHQ9LyIoPzpffFxcdTB7Mn01W0ZmXSl7Mn0oPzpwfFxcdTB7Mn03MCkoPzpyfFxcdTB7Mn03MikoPzpvfFxcdTB7Mn02W0ZmXSkoPzp0fFxcdTB7Mn03NCkoPzpvfFxcdTB7Mn02W0ZmXSkoPzpffFxcdTB7Mn01W0ZmXSl7Mn0iXHMqOi8sV3Q9LyIoPzpjfFxcdTAwNjMpKD86b3xcXHUwMDZbRmZdKSg/Om58XFx1MDA2W0VlXSkoPzpzfFxcdTAwNzMpKD86dHxcXHUwMDc0KSg/OnJ8XFx1MDA3MikoPzp1fFxcdTAwNzUpKD86Y3xcXHUwMDYzKSg/OnR8XFx1MDA3NCkoPzpvfFxcdTAwNltGZl0pKD86cnxcXHUwMDcyKSJccyo6LyxKdD0vXlxzKlsiW3tdfF5ccyotP1xkezEsMTZ9KFwuXGR7MSwxN30pPyhbRWVdWystXT9cZCspP1xzKiQvO2Z1bmN0aW9uIGpzb25QYXJzZVRyYW5zZm9ybShlLHMpe2lmKCEoIl9fcHJvdG9fXyI9PT1lfHwiY29uc3RydWN0b3IiPT09ZSYmcyYmIm9iamVjdCI9PXR5cGVvZiBzJiYicHJvdG90eXBlImluIHMpKXJldHVybiBzOyFmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oYFtkZXN0cl0gRHJvcHBpbmcgIiR7ZX0iIGtleSB0byBwcmV2ZW50IHByb3RvdHlwZSBwb2xsdXRpb24uYCl9KGUpfWZ1bmN0aW9uIGRlc3RyKGUscz17fSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKCciJz09PWVbMF0mJiciJz09PWVbZS5sZW5ndGgtMV0mJi0xPT09ZS5pbmRleE9mKCJcXCIpKXJldHVybiBlLnNsaWNlKDEsLTEpO2NvbnN0IGQ9ZS50cmltKCk7aWYoZC5sZW5ndGg8PTkpc3dpdGNoKGQudG9Mb3dlckNhc2UoKSl7Y2FzZSJ0cnVlIjpyZXR1cm4hMDtjYXNlImZhbHNlIjpyZXR1cm4hMTtjYXNlInVuZGVmaW5lZCI6cmV0dXJuO2Nhc2UibnVsbCI6cmV0dXJuIG51bGw7Y2FzZSJuYW4iOnJldHVybiBOdW1iZXIuTmFOO2Nhc2UiaW5maW5pdHkiOnJldHVybiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7Y2FzZSItaW5maW5pdHkiOnJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFl9aWYoIUp0LnRlc3QoZSkpe2lmKHMuc3RyaWN0KXRocm93IG5ldyBTeW50YXhFcnJvcigiW2Rlc3RyXSBJbnZhbGlkIEpTT04iKTtyZXR1cm4gZX10cnl7aWYoSHQudGVzdChlKXx8V3QudGVzdChlKSl7aWYocy5zdHJpY3QpdGhyb3cgbmV3IEVycm9yKCJbZGVzdHJdIFBvc3NpYmxlIHByb3RvdHlwZSBwb2xsdXRpb24iKTtyZXR1cm4gSlNPTi5wYXJzZShlLGpzb25QYXJzZVRyYW5zZm9ybSl9cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZCl7aWYocy5zdHJpY3QpdGhyb3cgZDtyZXR1cm4gZX19Y29uc3QgS3Q9LyMvZyxHdD0vJi9nLFh0PS9cLy9nLFl0PS89L2csdG49L1w/L2csbm49L1wrL2cscm49LyU1ZS9naSxvbj0vJTYwL2dpLGFuPS8lN2MvZ2ksc249LyUyMC9naSxsbj0vJTJmL2dpLGNuPS8lMjUyZi9naTtmdW5jdGlvbiBlbmNvZGUkMihlKXtyZXR1cm4gZW5jb2RlVVJJKCIiK2UpLnJlcGxhY2UoYW4sInwiKX1mdW5jdGlvbiBlbmNvZGVRdWVyeVZhbHVlKGUpe3JldHVybiBlbmNvZGUkMigic3RyaW5nIj09dHlwZW9mIGU/ZTpKU09OLnN0cmluZ2lmeShlKSkucmVwbGFjZShubiwiJTJCIikucmVwbGFjZShzbiwiKyIpLnJlcGxhY2UoS3QsIiUyMyIpLnJlcGxhY2UoR3QsIiUyNiIpLnJlcGxhY2Uob24sImAiKS5yZXBsYWNlKHJuLCJeIikucmVwbGFjZShYdCwiJTJGIil9ZnVuY3Rpb24gZW5jb2RlUXVlcnlLZXkoZSl7cmV0dXJuIGVuY29kZVF1ZXJ5VmFsdWUoZSkucmVwbGFjZShZdCwiJTNEIil9ZnVuY3Rpb24gZW5jb2RlUGF0aChlKXtyZXR1cm4gZW5jb2RlJDIoZSkucmVwbGFjZShLdCwiJTIzIikucmVwbGFjZSh0biwiJTNGIikucmVwbGFjZShjbiwiJTJGIikucmVwbGFjZShHdCwiJTI2IikucmVwbGFjZShubiwiJTJCIil9ZnVuY3Rpb24gZGVjb2RlJDQoZT0iIil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoIiIrZSl9Y2F0Y2h7cmV0dXJuIiIrZX19ZnVuY3Rpb24gZGVjb2RlUGF0aChlKXtyZXR1cm4gZGVjb2RlJDQoZS5yZXBsYWNlKGxuLCIlMjUyRiIpKX1mdW5jdGlvbiBkZWNvZGVRdWVyeUtleShlKXtyZXR1cm4gZGVjb2RlJDQoZS5yZXBsYWNlKG5uLCIgIikpfWZ1bmN0aW9uIGRlY29kZVF1ZXJ5VmFsdWUoZSl7cmV0dXJuIGRlY29kZSQ0KGUucmVwbGFjZShubiwiICIpKX1mdW5jdGlvbiBwYXJzZVF1ZXJ5KGU9IiIpe2NvbnN0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTsiPyI9PT1lWzBdJiYoZT1lLnNsaWNlKDEpKTtmb3IoY29uc3QgZCBvZiBlLnNwbGl0KCImIikpe2NvbnN0IGU9ZC5tYXRjaCgvKFtePV0rKT0/KC4qKS8pfHxbXTtpZihlLmxlbmd0aDwyKWNvbnRpbnVlO2NvbnN0IG09ZGVjb2RlUXVlcnlLZXkoZVsxXSk7aWYoIl9fcHJvdG9fXyI9PT1tfHwiY29uc3RydWN0b3IiPT09bSljb250aW51ZTtjb25zdCBoPWRlY29kZVF1ZXJ5VmFsdWUoZVsyXXx8IiIpO3ZvaWQgMD09PXNbbV0/c1ttXT1oOkFycmF5LmlzQXJyYXkoc1ttXSk/c1ttXS5wdXNoKGgpOnNbbV09W3NbbV0saF19cmV0dXJuIHN9ZnVuY3Rpb24gZW5jb2RlUXVlcnlJdGVtKGUscyl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBzJiYiYm9vbGVhbiIhPXR5cGVvZiBzfHwocz1TdHJpbmcocykpLHM/QXJyYXkuaXNBcnJheShzKT9zLm1hcChzPT5gJHtlbmNvZGVRdWVyeUtleShlKX09JHtlbmNvZGVRdWVyeVZhbHVlKHMpfWApLmpvaW4oIiYiKTpgJHtlbmNvZGVRdWVyeUtleShlKX09JHtlbmNvZGVRdWVyeVZhbHVlKHMpfWA6ZW5jb2RlUXVlcnlLZXkoZSl9Y29uc3QgdW49L15bXHNcd1wwKy4tXXsyLH06KFsvXFxdezEsMn0pLyxkbj0vXltcc1x3XDArLi1dezIsfTooWy9cXF17Mn0pPy8scG49L14oWy9cXF1ccyopezIsfVteL1xcXS8sbW49L15bXHNcMF0qKGJsb2J8ZGF0YXxqYXZhc2NyaXB0fHZic2NyaXB0KTokL2ksZm49L1wvJHxcL1w/fFwvIy8saG49L15cLj9cLy87ZnVuY3Rpb24gaGFzUHJvdG9jb2woZSxzPXt9KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBzJiYocz17YWNjZXB0UmVsYXRpdmU6c30pLHMuc3RyaWN0P3VuLnRlc3QoZSk6ZG4udGVzdChlKXx8ISFzLmFjY2VwdFJlbGF0aXZlJiZwbi50ZXN0KGUpfWZ1bmN0aW9uIGlzU2NyaXB0UHJvdG9jb2woZSl7cmV0dXJuISFlJiZtbi50ZXN0KGUpfWZ1bmN0aW9uIGhhc1RyYWlsaW5nU2xhc2goZT0iIixzKXtyZXR1cm4gcz9mbi50ZXN0KGUpOmUuZW5kc1dpdGgoIi8iKX1mdW5jdGlvbiB3aXRob3V0VHJhaWxpbmdTbGFzaChlPSIiLHMpe2lmKCFzKXJldHVybihoYXNUcmFpbGluZ1NsYXNoKGUpP2Uuc2xpY2UoMCwtMSk6ZSl8fCIvIjtpZighaGFzVHJhaWxpbmdTbGFzaChlLCEwKSlyZXR1cm4gZXx8Ii8iO2xldCBkPWUsbT0iIjtjb25zdCBoPWUuaW5kZXhPZigiIyIpOy0xIT09aCYmKGQ9ZS5zbGljZSgwLGgpLG09ZS5zbGljZShoKSk7Y29uc3RbZywuLi54XT1kLnNwbGl0KCI/Iik7cmV0dXJuKChnLmVuZHNXaXRoKCIvIik/Zy5zbGljZSgwLC0xKTpnKXx8Ii8iKSsoeC5sZW5ndGg+MD9gPyR7eC5qb2luKCI/Iil9YDoiIikrbX1mdW5jdGlvbiB3aXRoVHJhaWxpbmdTbGFzaChlPSIiLHMpe2lmKCFzKXJldHVybiBlLmVuZHNXaXRoKCIvIik/ZTplKyIvIjtpZihoYXNUcmFpbGluZ1NsYXNoKGUsITApKXJldHVybiBlfHwiLyI7bGV0IGQ9ZSxtPSIiO2NvbnN0IGg9ZS5pbmRleE9mKCIjIik7aWYoLTEhPT1oJiYoZD1lLnNsaWNlKDAsaCksbT1lLnNsaWNlKGgpLCFkKSlyZXR1cm4gbTtjb25zdFtnLC4uLnhdPWQuc3BsaXQoIj8iKTtyZXR1cm4gZysiLyIrKHgubGVuZ3RoPjA/YD8ke3guam9pbigiPyIpfWA6IiIpK219ZnVuY3Rpb24gd2l0aExlYWRpbmdTbGFzaChlPSIiKXtyZXR1cm4gZnVuY3Rpb24oZT0iIil7cmV0dXJuIGUuc3RhcnRzV2l0aCgiLyIpfShlKT9lOiIvIitlfWZ1bmN0aW9uIHdpdGhvdXRCYXNlKGUscyl7aWYoaXNFbXB0eVVSTChzKSlyZXR1cm4gZTtjb25zdCBkPXdpdGhvdXRUcmFpbGluZ1NsYXNoKHMpO2lmKCFlLnN0YXJ0c1dpdGgoZCkpcmV0dXJuIGU7Y29uc3QgbT1lW2QubGVuZ3RoXTtpZihtJiYiLyIhPT1tJiYiPyIhPT1tKXJldHVybiBlO2NvbnN0IGg9ZS5zbGljZShkLmxlbmd0aCk7cmV0dXJuIi8iPT09aFswXT9oOiIvIitofWZ1bmN0aW9uIHdpdGhRdWVyeShlLHMpe2NvbnN0IGQ9cGFyc2VVUkwoZSksbT17Li4ucGFyc2VRdWVyeShkLnNlYXJjaCksLi4uc307cmV0dXJuIGQuc2VhcmNoPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5maWx0ZXIocz0+dm9pZCAwIT09ZVtzXSkubWFwKHM9PmVuY29kZVF1ZXJ5SXRlbShzLGVbc10pKS5maWx0ZXIoQm9vbGVhbikuam9pbigiJiIpfShtKSxmdW5jdGlvbihlKXtjb25zdCBzPWUucGF0aG5hbWV8fCIiLGQ9ZS5zZWFyY2g/KGUuc2VhcmNoLnN0YXJ0c1dpdGgoIj8iKT8iIjoiPyIpK2Uuc2VhcmNoOiIiLG09ZS5oYXNofHwiIixoPWUuYXV0aD9lLmF1dGgrIkAiOiIiLGc9ZS5ob3N0fHwiIix4PWUucHJvdG9jb2x8fGVbZ25dPyhlLnByb3RvY29sfHwiIikrIi8vIjoiIjtyZXR1cm4geCtoK2crcytkK219KGQpfWZ1bmN0aW9uIGdldFF1ZXJ5JDEoZSl7cmV0dXJuIHBhcnNlUXVlcnkocGFyc2VVUkwoZSkuc2VhcmNoKX1mdW5jdGlvbiBpc0VtcHR5VVJMKGUpe3JldHVybiFlfHwiLyI9PT1lfWZ1bmN0aW9uIGpvaW5VUkwoZSwuLi5zKXtsZXQgZD1lfHwiIjtmb3IoY29uc3QgZSBvZiBzLmZpbHRlcihlPT5mdW5jdGlvbihlKXtyZXR1cm4gZSYmIi8iIT09ZX0oZSkpKWlmKGQpe2NvbnN0IHM9ZS5yZXBsYWNlKGhuLCIiKTtkPXdpdGhUcmFpbGluZ1NsYXNoKGQpK3N9ZWxzZSBkPWU7cmV0dXJuIGR9ZnVuY3Rpb24gam9pblJlbGF0aXZlVVJMKC4uLmUpe2NvbnN0IHM9L1wvKD8hXC8pLyxkPWUuZmlsdGVyKEJvb2xlYW4pLG09W107bGV0IGg9MDtmb3IoY29uc3QgZSBvZiBkKWlmKGUmJiIvIiE9PWUpZm9yKGNvbnN0W2QsZ11vZiBlLnNwbGl0KHMpLmVudHJpZXMoKSlpZihnJiYiLiIhPT1nKWlmKCIuLiIhPT1nKTE9PT1kJiZtW20ubGVuZ3RoLTFdPy5lbmRzV2l0aCgiOi8iKT9tW20ubGVuZ3RoLTFdKz0iLyIrZzoobS5wdXNoKGcpLGgrKyk7ZWxzZXtpZigxPT09bS5sZW5ndGgmJmhhc1Byb3RvY29sKG1bMF0pKWNvbnRpbnVlO20ucG9wKCksaC0tfWxldCBnPW0uam9pbigiLyIpO3JldHVybiBoPj0wP2RbMF0/LnN0YXJ0c1dpdGgoIi8iKSYmIWcuc3RhcnRzV2l0aCgiLyIpP2c9Ii8iK2c6ZFswXT8uc3RhcnRzV2l0aCgiLi8iKSYmIWcuc3RhcnRzV2l0aCgiLi8iKSYmKGc9Ii4vIitnKTpnPSIuLi8iLnJlcGVhdCgtMSpoKStnLGRbZC5sZW5ndGgtMV0/LmVuZHNXaXRoKCIvIikmJiFnLmVuZHNXaXRoKCIvIikmJihnKz0iLyIpLGd9Y29uc3QgZ249U3ltYm9sLmZvcigidWZvOnByb3RvY29sUmVsYXRpdmUiKTtmdW5jdGlvbiBwYXJzZVVSTChlPSIiLHMpe2NvbnN0IGQ9ZS5tYXRjaCgvXltcc1wwXSooYmxvYjp8ZGF0YTp8amF2YXNjcmlwdDp8dmJzY3JpcHQ6KSguKikvaSk7aWYoZCl7Y29uc3RbLGUscz0iIl09ZDtyZXR1cm57cHJvdG9jb2w6ZS50b0xvd2VyQ2FzZSgpLHBhdGhuYW1lOnMsaHJlZjplK3MsYXV0aDoiIixob3N0OiIiLHNlYXJjaDoiIixoYXNoOiIifX1pZighaGFzUHJvdG9jb2woZSx7YWNjZXB0UmVsYXRpdmU6ITB9KSlyZXR1cm4gcGFyc2VQYXRoKGUpO2NvbnN0WyxtPSIiLGgsZz0iIl09ZS5yZXBsYWNlKC9cXC9nLCIvIikubWF0Y2goL15bXHNcMF0qKFtcdysuLV17Mix9Oik/XC9cLyhbXi9AXStAKT8oLiopLyl8fFtdO2xldFsseD0iIiwkPSIiXT1nLm1hdGNoKC8oW14jLz9dKikoLiopPy8pfHxbXTsiZmlsZToiPT09bSYmKCQ9JC5yZXBsYWNlKC9cLyg/PVtBLVphLXpdOikvLCIiKSk7Y29uc3R7cGF0aG5hbWU6UyxzZWFyY2g6aixoYXNoOnp9PXBhcnNlUGF0aCgkKTtyZXR1cm57cHJvdG9jb2w6bS50b0xvd2VyQ2FzZSgpLGF1dGg6aD9oLnNsaWNlKDAsTWF0aC5tYXgoMCxoLmxlbmd0aC0xKSk6IiIsaG9zdDp4LHBhdGhuYW1lOlMsc2VhcmNoOmosaGFzaDp6LFtnbl06IW19fWZ1bmN0aW9uIHBhcnNlUGF0aChlPSIiKXtjb25zdFtzPSIiLGQ9IiIsbT0iIl09KGUubWF0Y2goLyhbXiM/XSopKFw/W14jXSopPygjLiopPy8pfHxbXSkuc3BsaWNlKDEpO3JldHVybntwYXRobmFtZTpzLHNlYXJjaDpkLGhhc2g6bX19Y29uc3Qgdm49KCgpPT57Y29uc3QgQz1mdW5jdGlvbigpe307cmV0dXJuIEMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobnVsbCksQ30pKCk7ZnVuY3Rpb24gZGVjb2RlJDMoZSl7cmV0dXJuIGUuaW5jbHVkZXMoIiUiKT9kZWNvZGVVUklDb21wb25lbnQoZSk6ZX1mdW5jdGlvbiB0cnlEZWNvZGUkMShlLHMpe3RyeXtyZXR1cm4gcyhlKX1jYXRjaHtyZXR1cm4gZX19Y29uc3QgeW49L15bXHUwMDA5XHUwMDIwLVx1MDA3RVx1MDA4MC1cdTAwRkZdKyQvO2Z1bmN0aW9uIHNlcmlhbGl6ZSQyKGUscyxkKXtjb25zdCBtPWR8fHt9LGg9bS5lbmNvZGV8fGVuY29kZVVSSUNvbXBvbmVudDtpZigiZnVuY3Rpb24iIT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZW5jb2RlIGlzIGludmFsaWQiKTtpZigheW4udGVzdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBuYW1lIGlzIGludmFsaWQiKTtjb25zdCBnPWgocyk7aWYoZyYmIXluLnRlc3QoZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgdmFsIGlzIGludmFsaWQiKTtsZXQgeD1lKyI9IitnO2lmKHZvaWQgMCE9PW0ubWF4QWdlJiZudWxsIT09bS5tYXhBZ2Upe2NvbnN0IGU9bS5tYXhBZ2UtMDtpZihOdW1iZXIuaXNOYU4oZSl8fCFOdW1iZXIuaXNGaW5pdGUoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIG1heEFnZSBpcyBpbnZhbGlkIik7eCs9IjsgTWF4LUFnZT0iK01hdGguZmxvb3IoZSl9aWYobS5kb21haW4pe2lmKCF5bi50ZXN0KG0uZG9tYWluKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZG9tYWluIGlzIGludmFsaWQiKTt4Kz0iOyBEb21haW49IittLmRvbWFpbn1pZihtLnBhdGgpe2lmKCF5bi50ZXN0KG0ucGF0aCkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIHBhdGggaXMgaW52YWxpZCIpO3grPSI7IFBhdGg9IittLnBhdGh9aWYobS5leHBpcmVzKXtpZigkPW0uZXhwaXJlcywhKCJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgkKXx8JCBpbnN0YW5jZW9mIERhdGUpfHxOdW1iZXIuaXNOYU4obS5leHBpcmVzLnZhbHVlT2YoKSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIGV4cGlyZXMgaXMgaW52YWxpZCIpO3grPSI7IEV4cGlyZXM9IittLmV4cGlyZXMudG9VVENTdHJpbmcoKX12YXIgJDtpZihtLmh0dHBPbmx5JiYoeCs9IjsgSHR0cE9ubHkiKSxtLnNlY3VyZSYmKHgrPSI7IFNlY3VyZSIpLG0ucHJpb3JpdHkpe3N3aXRjaCgic3RyaW5nIj09dHlwZW9mIG0ucHJpb3JpdHk/bS5wcmlvcml0eS50b0xvd2VyQ2FzZSgpOm0ucHJpb3JpdHkpe2Nhc2UibG93Ijp4Kz0iOyBQcmlvcml0eT1Mb3ciO2JyZWFrO2Nhc2UibWVkaXVtIjp4Kz0iOyBQcmlvcml0eT1NZWRpdW0iO2JyZWFrO2Nhc2UiaGlnaCI6eCs9IjsgUHJpb3JpdHk9SGlnaCI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gcHJpb3JpdHkgaXMgaW52YWxpZCIpfX1pZihtLnNhbWVTaXRlKXtzd2l0Y2goInN0cmluZyI9PXR5cGVvZiBtLnNhbWVTaXRlP20uc2FtZVNpdGUudG9Mb3dlckNhc2UoKTptLnNhbWVTaXRlKXtjYXNlITA6eCs9IjsgU2FtZVNpdGU9U3RyaWN0IjticmVhaztjYXNlImxheCI6eCs9IjsgU2FtZVNpdGU9TGF4IjticmVhaztjYXNlInN0cmljdCI6eCs9IjsgU2FtZVNpdGU9U3RyaWN0IjticmVhaztjYXNlIm5vbmUiOngrPSI7IFNhbWVTaXRlPU5vbmUiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIHNhbWVTaXRlIGlzIGludmFsaWQiKX19cmV0dXJuIG0ucGFydGl0aW9uZWQmJih4Kz0iOyBQYXJ0aXRpb25lZCIpLHh9ZnVuY3Rpb24gcGFyc2VTZXRDb29raWUoZSxzKXtjb25zdCBkPShlfHwiIikuc3BsaXQoIjsiKS5maWx0ZXIoZT0+InN0cmluZyI9PXR5cGVvZiBlJiYhIWUudHJpbSgpKSxtPWZ1bmN0aW9uKGUpe2xldCBzPSIiLGQ9IiI7Y29uc3QgbT1lLnNwbGl0KCI9Iik7bS5sZW5ndGg+MT8ocz1tLnNoaWZ0KCksZD1tLmpvaW4oIj0iKSk6ZD1lO3JldHVybntuYW1lOnMsdmFsdWU6ZH19KGQuc2hpZnQoKXx8IiIpLGg9bS5uYW1lO2xldCBnPW0udmFsdWU7dHJ5e2c9ITE9PT1zPy5kZWNvZGU/Zzoocz8uZGVjb2RlfHxkZWNvZGVVUklDb21wb25lbnQpKGcpfWNhdGNoe31jb25zdCB4PXtuYW1lOmgsdmFsdWU6Z307Zm9yKGNvbnN0IGUgb2YgZCl7Y29uc3Qgcz1lLnNwbGl0KCI9IiksZD0ocy5zaGlmdCgpfHwiIikudHJpbVN0YXJ0KCkudG9Mb3dlckNhc2UoKSxtPXMuam9pbigiPSIpO3N3aXRjaChkKXtjYXNlImV4cGlyZXMiOnguZXhwaXJlcz1uZXcgRGF0ZShtKTticmVhaztjYXNlIm1heC1hZ2UiOngubWF4QWdlPU51bWJlci5wYXJzZUludChtLDEwKTticmVhaztjYXNlInNlY3VyZSI6eC5zZWN1cmU9ITA7YnJlYWs7Y2FzZSJodHRwb25seSI6eC5odHRwT25seT0hMDticmVhaztjYXNlInNhbWVzaXRlIjp4LnNhbWVTaXRlPW07YnJlYWs7ZGVmYXVsdDp4W2RdPW19fXJldHVybiB4fWNvbnN0IGJuPTAsX249MSx4bj0yO2Z1bmN0aW9uIGNyZWF0ZVJvdXRlciQxKGU9e30pe2NvbnN0IHM9e29wdGlvbnM6ZSxyb290Tm9kZTpjcmVhdGVSYWRpeE5vZGUoKSxzdGF0aWNSb3V0ZXNNYXA6e319LG5vcm1hbGl6ZVRyYWlsaW5nU2xhc2g9cz0+ZS5zdHJpY3RUcmFpbGluZ1NsYXNoP3M6cy5yZXBsYWNlKC9cLyQvLCIiKXx8Ii8iO2lmKGUucm91dGVzKWZvcihjb25zdCBkIGluIGUucm91dGVzKWluc2VydChzLG5vcm1hbGl6ZVRyYWlsaW5nU2xhc2goZCksZS5yb3V0ZXNbZF0pO3JldHVybntjdHg6cyxsb29rdXA6ZT0+ZnVuY3Rpb24oZSxzKXtjb25zdCBkPWUuc3RhdGljUm91dGVzTWFwW3NdO2lmKGQpcmV0dXJuIGQuZGF0YTtjb25zdCBtPXMuc3BsaXQoIi8iKSxoPXt9O2xldCBnPSExLHg9bnVsbCwkPWUucm9vdE5vZGUsUz1udWxsO2ZvcihsZXQgZT0wO2U8bS5sZW5ndGg7ZSsrKXtjb25zdCBzPW1bZV07bnVsbCE9PSQud2lsZGNhcmRDaGlsZE5vZGUmJih4PSQud2lsZGNhcmRDaGlsZE5vZGUsUz1tLnNsaWNlKGUpLmpvaW4oIi8iKSk7Y29uc3QgZD0kLmNoaWxkcmVuLmdldChzKTtpZih2b2lkIDA9PT1kKXtpZigkJiYkLnBsYWNlaG9sZGVyQ2hpbGRyZW4ubGVuZ3RoPjEpe2NvbnN0IHM9bS5sZW5ndGgtZTskPSQucGxhY2Vob2xkZXJDaGlsZHJlbi5maW5kKGU9PmUubWF4RGVwdGg9PT1zKXx8bnVsbH1lbHNlICQ9JC5wbGFjZWhvbGRlckNoaWxkcmVuWzBdfHxudWxsO2lmKCEkKWJyZWFrOyQucGFyYW1OYW1lJiYoaFskLnBhcmFtTmFtZV09cyksZz0hMH1lbHNlICQ9ZH1udWxsIT09JCYmbnVsbCE9PSQuZGF0YXx8bnVsbD09PXh8fCgkPXgsaFskLnBhcmFtTmFtZXx8Il8iXT1TLGc9ITApO2lmKCEkKXJldHVybiBudWxsO2lmKGcpcmV0dXJuey4uLiQuZGF0YSxwYXJhbXM6Zz9oOnZvaWQgMH07cmV0dXJuICQuZGF0YX0ocyxub3JtYWxpemVUcmFpbGluZ1NsYXNoKGUpKSxpbnNlcnQ6KGUsZCk9Pmluc2VydChzLG5vcm1hbGl6ZVRyYWlsaW5nU2xhc2goZSksZCkscmVtb3ZlOmU9PmZ1bmN0aW9uKGUscyl7bGV0IGQ9ITE7Y29uc3QgbT1zLnNwbGl0KCIvIik7bGV0IGg9ZS5yb290Tm9kZTtmb3IoY29uc3QgZSBvZiBtKWlmKGg9aC5jaGlsZHJlbi5nZXQoZSksIWgpcmV0dXJuIGQ7aWYoaC5kYXRhKXtjb25zdCBlPW0uYXQoLTEpfHwiIjtoLmRhdGE9bnVsbCwwPT09T2JqZWN0LmtleXMoaC5jaGlsZHJlbikubGVuZ3RoJiZoLnBhcmVudCYmKGgucGFyZW50LmNoaWxkcmVuLmRlbGV0ZShlKSxoLnBhcmVudC53aWxkY2FyZENoaWxkTm9kZT1udWxsLGgucGFyZW50LnBsYWNlaG9sZGVyQ2hpbGRyZW49W10pLGQ9ITB9cmV0dXJuIGR9KHMsbm9ybWFsaXplVHJhaWxpbmdTbGFzaChlKSl9fWZ1bmN0aW9uIGluc2VydChlLHMsZCl7bGV0IG09ITA7Y29uc3QgaD1zLnNwbGl0KCIvIik7bGV0IGc9ZS5yb290Tm9kZSx4PTA7Y29uc3QgJD1bZ107Zm9yKGNvbnN0IGUgb2YgaCl7bGV0IHM7aWYocz1nLmNoaWxkcmVuLmdldChlKSlnPXM7ZWxzZXtjb25zdCBkPWdldE5vZGVUeXBlKGUpO3M9Y3JlYXRlUmFkaXhOb2RlKHt0eXBlOmQscGFyZW50Omd9KSxnLmNoaWxkcmVuLnNldChlLHMpLGQ9PT14bj8ocy5wYXJhbU5hbWU9IioiPT09ZT8iXyIreCsrOmUuc2xpY2UoMSksZy5wbGFjZWhvbGRlckNoaWxkcmVuLnB1c2gocyksbT0hMSk6ZD09PV9uJiYoZy53aWxkY2FyZENoaWxkTm9kZT1zLHMucGFyYW1OYW1lPWUuc2xpY2UoMyl8fCJfIixtPSExKSwkLnB1c2gocyksZz1zfX1mb3IoY29uc3RbZSxzXW9mICQuZW50cmllcygpKXMubWF4RGVwdGg9TWF0aC5tYXgoJC5sZW5ndGgtZSxzLm1heERlcHRofHwwKTtyZXR1cm4gZy5kYXRhPWQsITA9PT1tJiYoZS5zdGF0aWNSb3V0ZXNNYXBbc109ZyksZ31mdW5jdGlvbiBjcmVhdGVSYWRpeE5vZGUoZT17fSl7cmV0dXJue3R5cGU6ZS50eXBlfHxibixtYXhEZXB0aDowLHBhcmVudDplLnBhcmVudHx8bnVsbCxjaGlsZHJlbjpuZXcgTWFwLGRhdGE6ZS5kYXRhfHxudWxsLHBhcmFtTmFtZTplLnBhcmFtTmFtZXx8bnVsbCx3aWxkY2FyZENoaWxkTm9kZTpudWxsLHBsYWNlaG9sZGVyQ2hpbGRyZW46W119fWZ1bmN0aW9uIGdldE5vZGVUeXBlKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIioqIik/X246IjoiPT09ZVswXXx8IioiPT09ZT94bjpibn1mdW5jdGlvbiB0b1JvdXRlTWF0Y2hlcihlKXtyZXR1cm4gZnVuY3Rpb24oZSxzKXtyZXR1cm57Y3R4Ont0YWJsZTplfSxtYXRjaEFsbDpkPT5fbWF0Y2hSb3V0ZXMoZCxlLHMpfX0oX3JvdXRlck5vZGVUb1RhYmxlKCIiLGUuY3R4LnJvb3ROb2RlKSxlLmN0eC5vcHRpb25zLnN0cmljdFRyYWlsaW5nU2xhc2gpfWZ1bmN0aW9uIF9tYXRjaFJvdXRlcyhlLHMsZCl7ITAhPT1kJiZlLmVuZHNXaXRoKCIvIikmJihlPWUuc2xpY2UoMCwtMSl8fCIvIik7Y29uc3QgbT1bXTtmb3IoY29uc3RbZCxoXW9mIF9zb3J0Um91dGVzTWFwKHMud2lsZGNhcmQpKShlPT09ZHx8ZS5zdGFydHNXaXRoKGQrIi8iKSkmJm0ucHVzaChoKTtmb3IoY29uc3RbZCxoXW9mIF9zb3J0Um91dGVzTWFwKHMuZHluYW1pYykpaWYoZS5zdGFydHNXaXRoKGQrIi8iKSl7Y29uc3Qgcz0iLyIrZS5zbGljZShkLmxlbmd0aCkuc3BsaXQoIi8iKS5zcGxpY2UoMikuam9pbigiLyIpO20ucHVzaCguLi5fbWF0Y2hSb3V0ZXMocyxoKSl9Y29uc3QgaD1zLnN0YXRpYy5nZXQoZSk7cmV0dXJuIGgmJm0ucHVzaChoKSxtLmZpbHRlcihCb29sZWFuKX1mdW5jdGlvbiBfc29ydFJvdXRlc01hcChlKXtyZXR1cm5bLi4uZS5lbnRyaWVzKCldLnNvcnQoKGUscyk9PmVbMF0ubGVuZ3RoLXNbMF0ubGVuZ3RoKX1mdW5jdGlvbiBfcm91dGVyTm9kZVRvVGFibGUoZSxzKXtjb25zdCBkPXtzdGF0aWM6bmV3IE1hcCx3aWxkY2FyZDpuZXcgTWFwLGR5bmFtaWM6bmV3IE1hcH07cmV0dXJuIGZ1bmN0aW9uIF9hZGROb2RlKGUscyl7aWYoZSlpZihzLnR5cGUhPT1ibnx8ZS5pbmNsdWRlcygiKiIpfHxlLmluY2x1ZGVzKCI6Iikpe2lmKHMudHlwZT09PV9uKWQud2lsZGNhcmQuc2V0KGUucmVwbGFjZSgiLyoqIiwiIikscy5kYXRhKTtlbHNlIGlmKHMudHlwZT09PXhuKXtjb25zdCBtPV9yb3V0ZXJOb2RlVG9UYWJsZSgiIixzKTtyZXR1cm4gcy5kYXRhJiZtLnN0YXRpYy5zZXQoIi8iLHMuZGF0YSksdm9pZCBkLmR5bmFtaWMuc2V0KGUucmVwbGFjZSgvXC9cKnxcLzpcdysvLCIiKSxtKX19ZWxzZSBzLmRhdGEmJmQuc3RhdGljLnNldChlLHMuZGF0YSk7Zm9yKGNvbnN0W2QsbV1vZiBzLmNoaWxkcmVuLmVudHJpZXMoKSlfYWRkTm9kZShgJHtlfS8ke2R9YC5yZXBsYWNlKCIvLyIsIi8iKSxtKX0oZSxzKSxkfWZ1bmN0aW9uIGlzUGxhaW5PYmplY3QkMyhlKXtpZihudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2NvbnN0IHM9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybihudWxsPT09c3x8cz09PU9iamVjdC5wcm90b3R5cGV8fG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YocykpJiYoIShTeW1ib2wuaXRlcmF0b3IgaW4gZSkmJighKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBlKXx8IltvYmplY3QgTW9kdWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpKX1mdW5jdGlvbiBfZGVmdSQxKGUscyxkPSIuIixtKXtpZighaXNQbGFpbk9iamVjdCQzKHMpKXJldHVybiBfZGVmdSQxKGUse30sZCxtKTtjb25zdCBoPXsuLi5zfTtmb3IoY29uc3QgcyBvZiBPYmplY3Qua2V5cyhlKSl7aWYoIl9fcHJvdG9fXyI9PT1zfHwiY29uc3RydWN0b3IiPT09cyljb250aW51ZTtjb25zdCBnPWVbc107bnVsbCE9ZyYmKG0mJm0oaCxzLGcsZCl8fChBcnJheS5pc0FycmF5KGcpJiZBcnJheS5pc0FycmF5KGhbc10pP2hbc109Wy4uLmcsLi4uaFtzXV06aXNQbGFpbk9iamVjdCQzKGcpJiZpc1BsYWluT2JqZWN0JDMoaFtzXSk/aFtzXT1fZGVmdSQxKGcsaFtzXSwoZD9gJHtkfS5gOiIiKStzLnRvU3RyaW5nKCksbSk6aFtzXT1nKSl9cmV0dXJuIGh9ZnVuY3Rpb24gY3JlYXRlRGVmdSQxKGUpe3JldHVybiguLi5zKT0+cy5yZWR1Y2UoKHMsZCk9Pl9kZWZ1JDEocyxkLCIiLGUpLHt9KX1jb25zdCB3bj1jcmVhdGVEZWZ1JDEoKSwkbj1jcmVhdGVEZWZ1JDEoKGUscyxkKT0+e2lmKHZvaWQgMCE9PWVbc10mJiJmdW5jdGlvbiI9PXR5cGVvZiBkKXJldHVybiBlW3NdPWQoZVtzXSksITB9KTtmdW5jdGlvbiBvKGUpe3Rocm93IG5ldyBFcnJvcihgJHtlfSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0IWApfWNsYXNzIGkgZXh0ZW5kcyBte19fdW5lbnZfXz17fTtyZWFkYWJsZUVuY29kaW5nPW51bGw7cmVhZGFibGVFbmRlZD0hMDtyZWFkYWJsZUZsb3dpbmc9ITE7cmVhZGFibGVIaWdoV2F0ZXJNYXJrPTA7cmVhZGFibGVMZW5ndGg9MDtyZWFkYWJsZU9iamVjdE1vZGU9ITE7cmVhZGFibGVBYm9ydGVkPSExO3JlYWRhYmxlRGlkUmVhZD0hMTtjbG9zZWQ9ITE7ZXJyb3JlZD1udWxsO3JlYWRhYmxlPSExO2Rlc3Ryb3llZD0hMTtzdGF0aWMgZnJvbShlLHMpe3JldHVybiBuZXcgaShzKX1jb25zdHJ1Y3RvcihlKXtzdXBlcigpfV9yZWFkKGUpe31yZWFkKGUpe31zZXRFbmNvZGluZyhlKXtyZXR1cm4gdGhpc31wYXVzZSgpe3JldHVybiB0aGlzfXJlc3VtZSgpe3JldHVybiB0aGlzfWlzUGF1c2VkKCl7cmV0dXJuITB9dW5waXBlKGUpe3JldHVybiB0aGlzfXVuc2hpZnQoZSxzKXt9d3JhcChlKXtyZXR1cm4gdGhpc31wdXNoKGUscyl7cmV0dXJuITF9X2Rlc3Ryb3koZSxzKXt0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpfWRlc3Ryb3koZSl7cmV0dXJuIHRoaXMuZGVzdHJveWVkPSEwLHRoaXMuX2Rlc3Ryb3koZSksdGhpc31waXBlKGUscyl7cmV0dXJue319Y29tcG9zZShlLHMpe3Rocm93IG5ldyBFcnJvcigiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4iKX1bU3ltYm9sLmFzeW5jRGlzcG9zZV0oKXtyZXR1cm4gdGhpcy5kZXN0cm95KCksUHJvbWlzZS5yZXNvbHZlKCl9YXN5bmMqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpe3Rocm93IG8oIlJlYWRhYmxlLmFzeW5jSXRlcmF0b3IiKX1pdGVyYXRvcihlKXt0aHJvdyBvKCJSZWFkYWJsZS5pdGVyYXRvciIpfW1hcChlLHMpe3Rocm93IG8oIlJlYWRhYmxlLm1hcCIpfWZpbHRlcihlLHMpe3Rocm93IG8oIlJlYWRhYmxlLmZpbHRlciIpfWZvckVhY2goZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5mb3JFYWNoIil9cmVkdWNlKGUscyxkKXt0aHJvdyBvKCJSZWFkYWJsZS5yZWR1Y2UiKX1maW5kKGUscyl7dGhyb3cgbygiUmVhZGFibGUuZmluZCIpfWZpbmRJbmRleChlLHMpe3Rocm93IG8oIlJlYWRhYmxlLmZpbmRJbmRleCIpfXNvbWUoZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5zb21lIil9dG9BcnJheShlKXt0aHJvdyBvKCJSZWFkYWJsZS50b0FycmF5Iil9ZXZlcnkoZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5ldmVyeSIpfWZsYXRNYXAoZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5mbGF0TWFwIil9ZHJvcChlLHMpe3Rocm93IG8oIlJlYWRhYmxlLmRyb3AiKX10YWtlKGUscyl7dGhyb3cgbygiUmVhZGFibGUudGFrZSIpfWFzSW5kZXhlZFBhaXJzKGUpe3Rocm93IG8oIlJlYWRhYmxlLmFzSW5kZXhlZFBhaXJzIil9fWxldCBTbj1jbGFzcyBleHRlbmRzIG17X191bmVudl9fPXt9O3dyaXRhYmxlPSEwO3dyaXRhYmxlRW5kZWQ9ITE7d3JpdGFibGVGaW5pc2hlZD0hMTt3cml0YWJsZUhpZ2hXYXRlck1hcms9MDt3cml0YWJsZUxlbmd0aD0wO3dyaXRhYmxlT2JqZWN0TW9kZT0hMTt3cml0YWJsZUNvcmtlZD0wO2Nsb3NlZD0hMTtlcnJvcmVkPW51bGw7d3JpdGFibGVOZWVkRHJhaW49ITE7d3JpdGFibGVBYm9ydGVkPSExO2Rlc3Ryb3llZD0hMTtfZGF0YTtfZW5jb2Rpbmc9InV0ZjgiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCl9cGlwZShlLHMpe3JldHVybnt9fV93cml0ZShzLGQsbSl7aWYodGhpcy53cml0YWJsZUVuZGVkKW0mJm0oKTtlbHNle2lmKHZvaWQgMD09PXRoaXMuX2RhdGEpdGhpcy5fZGF0YT1zO2Vsc2V7Y29uc3QgbT0ic3RyaW5nIj09dHlwZW9mIHRoaXMuX2RhdGE/ZS5mcm9tKHRoaXMuX2RhdGEsdGhpcy5fZW5jb2Rpbmd8fGR8fCJ1dGY4Iik6dGhpcy5fZGF0YSxoPSJzdHJpbmciPT10eXBlb2Ygcz9lLmZyb20ocyxkfHx0aGlzLl9lbmNvZGluZ3x8InV0ZjgiKTpzO3RoaXMuX2RhdGE9ZS5jb25jYXQoW20saF0pfXRoaXMuX2VuY29kaW5nPWQsbSYmbSgpfX1fd3JpdGV2KGUscyl7fV9kZXN0cm95KGUscyl7fV9maW5hbChlKXt9d3JpdGUoZSxzLGQpe2NvbnN0IG09InN0cmluZyI9PXR5cGVvZiBzP3RoaXMuX2VuY29kaW5nOiJ1dGY4IixoPSJmdW5jdGlvbiI9PXR5cGVvZiBzP3M6ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZDp2b2lkIDA7cmV0dXJuIHRoaXMuX3dyaXRlKGUsbSxoKSwhMH1zZXREZWZhdWx0RW5jb2RpbmcoZSl7cmV0dXJuIHRoaXN9ZW5kKGUscyxkKXtjb25zdCBtPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ImZ1bmN0aW9uIj09dHlwZW9mIHM/czoiZnVuY3Rpb24iPT10eXBlb2YgZD9kOnZvaWQgMDtpZih0aGlzLndyaXRhYmxlRW5kZWQpcmV0dXJuIG0mJm0oKSx0aGlzO2NvbnN0IGg9ZT09PW0/dm9pZCAwOmU7aWYoaCl7Y29uc3QgZT1zPT09bT92b2lkIDA6czt0aGlzLndyaXRlKGgsZSxtKX1yZXR1cm4gdGhpcy53cml0YWJsZUVuZGVkPSEwLHRoaXMud3JpdGFibGVGaW5pc2hlZD0hMCx0aGlzLmVtaXQoImNsb3NlIiksdGhpcy5lbWl0KCJmaW5pc2giKSx0aGlzfWNvcmsoKXt9dW5jb3JrKCl7fWRlc3Ryb3koZSl7cmV0dXJuIHRoaXMuZGVzdHJveWVkPSEwLGRlbGV0ZSB0aGlzLl9kYXRhLHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpc31jb21wb3NlKGUscyl7dGhyb3cgbmV3IEVycm9yKCJNZXRob2Qgbm90IGltcGxlbWVudGVkLiIpfVtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX19O2NvbnN0IGtuPWNsYXNze2FsbG93SGFsZk9wZW49ITA7X2Rlc3Ryb3k7Y29uc3RydWN0b3IoZT1uZXcgaSxzPW5ldyBTbil7T2JqZWN0LmFzc2lnbih0aGlzLGUpLE9iamVjdC5hc3NpZ24odGhpcyxzKSx0aGlzLl9kZXN0cm95PWZ1bmN0aW9uKC4uLmUpe3JldHVybiBmdW5jdGlvbiguLi5zKXtmb3IoY29uc3QgZCBvZiBlKWQoLi4ucyl9fShlLl9kZXN0cm95LHMuX2Rlc3Ryb3kpfX07Y29uc3Qgam49KE9iamVjdC5hc3NpZ24oa24ucHJvdG90eXBlLGkucHJvdG90eXBlKSxPYmplY3QuYXNzaWduKGtuLnByb3RvdHlwZSxTbi5wcm90b3R5cGUpLGtuKTtsZXQgem49Y2xhc3MgZXh0ZW5kcyBqbntfX3VuZW52X189e307YnVmZmVyU2l6ZT0wO2J5dGVzUmVhZD0wO2J5dGVzV3JpdHRlbj0wO2Nvbm5lY3Rpbmc9ITE7ZGVzdHJveWVkPSExO3BlbmRpbmc9ITE7bG9jYWxBZGRyZXNzPSIiO2xvY2FsUG9ydD0wO3JlbW90ZUFkZHJlc3M9IiI7cmVtb3RlRmFtaWx5PSIiO3JlbW90ZVBvcnQ9MDthdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdGVkQWRkcmVzc2VzPVtdO3JlYWR5U3RhdGU9InJlYWRPbmx5Ijtjb25zdHJ1Y3RvcihlKXtzdXBlcigpfXdyaXRlKGUscyxkKXtyZXR1cm4hMX1jb25uZWN0KGUscyxkKXtyZXR1cm4gdGhpc31lbmQoZSxzLGQpe3JldHVybiB0aGlzfXNldEVuY29kaW5nKGUpe3JldHVybiB0aGlzfXBhdXNlKCl7cmV0dXJuIHRoaXN9cmVzdW1lKCl7cmV0dXJuIHRoaXN9c2V0VGltZW91dChlLHMpe3JldHVybiB0aGlzfXNldE5vRGVsYXkoZSl7cmV0dXJuIHRoaXN9c2V0S2VlcEFsaXZlKGUscyl7cmV0dXJuIHRoaXN9YWRkcmVzcygpe3JldHVybnt9fXVucmVmKCl7cmV0dXJuIHRoaXN9cmVmKCl7cmV0dXJuIHRoaXN9ZGVzdHJveVNvb24oKXt0aGlzLmRlc3Ryb3koKX1yZXNldEFuZERlc3Ryb3koKXtjb25zdCBlPW5ldyBFcnJvcigiRVJSX1NPQ0tFVF9DTE9TRUQiKTtyZXR1cm4gZS5jb2RlPSJFUlJfU09DS0VUX0NMT1NFRCIsdGhpcy5kZXN0cm95KGUpLHRoaXN9fSxJbj1jbGFzcyBleHRlbmRzIGl7YWJvcnRlZD0hMTtodHRwVmVyc2lvbj0iMS4xIjtodHRwVmVyc2lvbk1ham9yPTE7aHR0cFZlcnNpb25NaW5vcj0xO2NvbXBsZXRlPSEwO2Nvbm5lY3Rpb247c29ja2V0O2hlYWRlcnM9e307dHJhaWxlcnM9e307bWV0aG9kPSJHRVQiO3VybD0iLyI7c3RhdHVzQ29kZT0yMDA7c3RhdHVzTWVzc2FnZT0iIjtjbG9zZWQ9ITE7ZXJyb3JlZD1udWxsO3JlYWRhYmxlPSExO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5zb2NrZXQ9dGhpcy5jb25uZWN0aW9uPWV8fG5ldyB6bn1nZXQgcmF3SGVhZGVycygpe2NvbnN0IGU9dGhpcy5oZWFkZXJzLHM9W107Zm9yKGNvbnN0IGQgaW4gZSlpZihBcnJheS5pc0FycmF5KGVbZF0pKWZvcihjb25zdCBtIG9mIGVbZF0pcy5wdXNoKGQsbSk7ZWxzZSBzLnB1c2goZCxlW2RdKTtyZXR1cm4gc31nZXQgcmF3VHJhaWxlcnMoKXtyZXR1cm5bXX1zZXRUaW1lb3V0KGUscyl7cmV0dXJuIHRoaXN9Z2V0IGhlYWRlcnNEaXN0aW5jdCgpe3JldHVybiBwJDModGhpcy5oZWFkZXJzKX1nZXQgdHJhaWxlcnNEaXN0aW5jdCgpe3JldHVybiBwJDModGhpcy50cmFpbGVycyl9fTtmdW5jdGlvbiBwJDMoZSl7Y29uc3Qgcz17fTtmb3IoY29uc3RbZCxtXW9mIE9iamVjdC5lbnRyaWVzKGUpKWQmJihzW2RdPShBcnJheS5pc0FycmF5KG0pP206W21dKS5maWx0ZXIoQm9vbGVhbikpO3JldHVybiBzfWxldCBDbj1jbGFzcyBleHRlbmRzIFNue3N0YXR1c0NvZGU9MjAwO3N0YXR1c01lc3NhZ2U9IiI7dXBncmFkaW5nPSExO2NodW5rZWRFbmNvZGluZz0hMTtzaG91bGRLZWVwQWxpdmU9ITE7dXNlQ2h1bmtlZEVuY29kaW5nQnlEZWZhdWx0PSExO3NlbmREYXRlPSExO2ZpbmlzaGVkPSExO2hlYWRlcnNTZW50PSExO3N0cmljdENvbnRlbnRMZW5ndGg9ITE7Y29ubmVjdGlvbj1udWxsO3NvY2tldD1udWxsO3JlcTtfaGVhZGVycz17fTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMucmVxPWV9YXNzaWduU29ja2V0KGUpe2UuX2h0dHBNZXNzYWdlPXRoaXMsdGhpcy5zb2NrZXQ9ZSx0aGlzLmNvbm5lY3Rpb249ZSx0aGlzLmVtaXQoInNvY2tldCIsZSksdGhpcy5fZmx1c2goKX1fZmx1c2goKXt0aGlzLmZsdXNoSGVhZGVycygpfWRldGFjaFNvY2tldChlKXt9d3JpdGVDb250aW51ZShlKXt9d3JpdGVIZWFkKGUscyxkKXtlJiYodGhpcy5zdGF0dXNDb2RlPWUpLCJzdHJpbmciPT10eXBlb2YgcyYmKHRoaXMuc3RhdHVzTWVzc2FnZT1zLHM9dm9pZCAwKTtjb25zdCBtPWR8fHM7aWYobSYmIUFycmF5LmlzQXJyYXkobSkpZm9yKGNvbnN0IGUgaW4gbSl0aGlzLnNldEhlYWRlcihlLG1bZV0pO3JldHVybiB0aGlzLmhlYWRlcnNTZW50PSEwLHRoaXN9d3JpdGVQcm9jZXNzaW5nKCl7fXNldFRpbWVvdXQoZSxzKXtyZXR1cm4gdGhpc31hcHBlbmRIZWFkZXIoZSxzKXtlPWUudG9Mb3dlckNhc2UoKTtjb25zdCBkPXRoaXMuX2hlYWRlcnNbZV0sbT1bLi4uQXJyYXkuaXNBcnJheShkKT9kOltkXSwuLi5BcnJheS5pc0FycmF5KHMpP3M6W3NdXS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIHRoaXMuX2hlYWRlcnNbZV09bS5sZW5ndGg+MT9tOm1bMF0sdGhpc31zZXRIZWFkZXIoZSxzKXtyZXR1cm4gdGhpcy5faGVhZGVyc1tlLnRvTG93ZXJDYXNlKCldPXMsdGhpc31zZXRIZWFkZXJzKGUpe2Zvcihjb25zdFtzLGRdb2YgT2JqZWN0LmVudHJpZXMoZSkpdGhpcy5zZXRIZWFkZXIocyxkKTtyZXR1cm4gdGhpc31nZXRIZWFkZXIoZSl7cmV0dXJuIHRoaXMuX2hlYWRlcnNbZS50b0xvd2VyQ2FzZSgpXX1nZXRIZWFkZXJzKCl7cmV0dXJuIHRoaXMuX2hlYWRlcnN9Z2V0SGVhZGVyTmFtZXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5faGVhZGVycyl9aGFzSGVhZGVyKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKClpbiB0aGlzLl9oZWFkZXJzfXJlbW92ZUhlYWRlcihlKXtkZWxldGUgdGhpcy5faGVhZGVyc1tlLnRvTG93ZXJDYXNlKCldfWFkZFRyYWlsZXJzKGUpe31mbHVzaEhlYWRlcnMoKXt9d3JpdGVFYXJseUhpbnRzKGUscyl7ImZ1bmN0aW9uIj09dHlwZW9mIHMmJnMoKX19O2NvbnN0IFRuPSgoKT0+e2NvbnN0IG49ZnVuY3Rpb24oKXt9O3JldHVybiBuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpLG59KSgpO2Z1bmN0aW9uIHYkMihlPXt9KXtpZihlIGluc3RhbmNlb2YgSGVhZGVycylyZXR1cm4gZTtjb25zdCBzPW5ldyBIZWFkZXJzO2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMoZSkpaWYodm9pZCAwIT09bSl7aWYoQXJyYXkuaXNBcnJheShtKSl7Zm9yKGNvbnN0IGUgb2YgbSlzLmFwcGVuZChkLFN0cmluZyhlKSk7Y29udGludWV9cy5zZXQoZCxTdHJpbmcobSkpfXJldHVybiBzfWNvbnN0IFJuPW5ldyBTZXQoWzEwMSwyMDQsMjA1LDMwNF0pO2FzeW5jIGZ1bmN0aW9uIGIoZSxzKXtjb25zdCBkPW5ldyBJbixtPW5ldyBDbihkKTtsZXQgaDtpZihkLnVybD1zLnVybD8udG9TdHJpbmcoKXx8Ii8iLCFkLnVybC5zdGFydHNXaXRoKCIvIikpe2NvbnN0IGU9bmV3IFVSTChkLnVybCk7aD1lLmhvc3QsZC51cmw9ZS5wYXRobmFtZStlLnNlYXJjaCtlLmhhc2h9ZC5tZXRob2Q9cy5tZXRob2R8fCJHRVQiLGQuaGVhZGVycz1mdW5jdGlvbihlPXt9KXtjb25zdCBzPW5ldyBUbixkPUFycmF5LmlzQXJyYXkoZSl8fGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlPy5lbnRyaWVzfShlKT9lOk9iamVjdC5lbnRyaWVzKGUpO2Zvcihjb25zdFtlLG1db2YgZClpZihtKXtpZih2b2lkIDA9PT1zW2VdKXtzW2VdPW07Y29udGludWV9c1tlXT1bLi4uQXJyYXkuaXNBcnJheShzW2VdKT9zW2VdOltzW2VdXSwuLi5BcnJheS5pc0FycmF5KG0pP206W21dXX1yZXR1cm4gc30ocy5oZWFkZXJzfHx7fSksZC5oZWFkZXJzLmhvc3R8fChkLmhlYWRlcnMuaG9zdD1zLmhvc3R8fGh8fCJsb2NhbGhvc3QiKSxkLmNvbm5lY3Rpb24uZW5jcnlwdGVkPWQuY29ubmVjdGlvbi5lbmNyeXB0ZWR8fCJodHRwcyI9PT1zLnByb3RvY29sLGQuYm9keT1zLmJvZHl8fG51bGwsZC5fX3VuZW52X189cy5jb250ZXh0LGF3YWl0IGUoZCxtKTtsZXQgZz1tLl9kYXRhOyhSbi5oYXMobS5zdGF0dXNDb2RlKXx8IkhFQUQiPT09ZC5tZXRob2QudG9VcHBlckNhc2UoKSkmJihnPW51bGwsZGVsZXRlIG0uX2hlYWRlcnNbImNvbnRlbnQtbGVuZ3RoIl0pO2NvbnN0IHg9e3N0YXR1czptLnN0YXR1c0NvZGUsc3RhdHVzVGV4dDptLnN0YXR1c01lc3NhZ2UsaGVhZGVyczptLl9oZWFkZXJzLGJvZHk6Z307cmV0dXJuIGQuZGVzdHJveSgpLG0uZGVzdHJveSgpLHh9ZnVuY3Rpb24gaGFzUHJvcChlLHMpe3RyeXtyZXR1cm4gcyBpbiBlfWNhdGNoe3JldHVybiExfX1jbGFzcyBIM0Vycm9yIGV4dGVuZHMgRXJyb3J7c3RhdGljIF9faDNfZXJyb3JfXz0hMDtzdGF0dXNDb2RlPTUwMDtmYXRhbD0hMTt1bmhhbmRsZWQ9ITE7c3RhdHVzTWVzc2FnZTtkYXRhO2NhdXNlO2NvbnN0cnVjdG9yKGUscz17fSl7c3VwZXIoZSxzKSxzLmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9cy5jYXVzZSl9dG9KU09OKCl7Y29uc3QgZT17bWVzc2FnZTp0aGlzLm1lc3NhZ2Usc3RhdHVzQ29kZTpzYW5pdGl6ZVN0YXR1c0NvZGUodGhpcy5zdGF0dXNDb2RlLDUwMCl9O3JldHVybiB0aGlzLnN0YXR1c01lc3NhZ2UmJihlLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKHRoaXMuc3RhdHVzTWVzc2FnZSkpLHZvaWQgMCE9PXRoaXMuZGF0YSYmKGUuZGF0YT10aGlzLmRhdGEpLGV9fWZ1bmN0aW9uIGNyZWF0ZUVycm9yJDEoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBuZXcgSDNFcnJvcihlKTtpZihpc0Vycm9yKGUpKXJldHVybiBlO2NvbnN0IHM9bmV3IEgzRXJyb3IoZS5tZXNzYWdlPz9lLnN0YXR1c01lc3NhZ2U/PyIiLHtjYXVzZTplLmNhdXNlfHxlfSk7aWYoaGFzUHJvcChlLCJzdGFjayIpKXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkocywic3RhY2siLHtnZXQ6KCk9PmUuc3RhY2t9KX1jYXRjaHt0cnl7cy5zdGFjaz1lLnN0YWNrfWNhdGNoe319aWYoZS5kYXRhJiYocy5kYXRhPWUuZGF0YSksZS5zdGF0dXNDb2RlP3Muc3RhdHVzQ29kZT1zYW5pdGl6ZVN0YXR1c0NvZGUoZS5zdGF0dXNDb2RlLHMuc3RhdHVzQ29kZSk6ZS5zdGF0dXMmJihzLnN0YXR1c0NvZGU9c2FuaXRpemVTdGF0dXNDb2RlKGUuc3RhdHVzLHMuc3RhdHVzQ29kZSkpLGUuc3RhdHVzTWVzc2FnZT9zLnN0YXR1c01lc3NhZ2U9ZS5zdGF0dXNNZXNzYWdlOmUuc3RhdHVzVGV4dCYmKHMuc3RhdHVzTWVzc2FnZT1lLnN0YXR1c1RleHQpLHMuc3RhdHVzTWVzc2FnZSl7Y29uc3QgZT1zLnN0YXR1c01lc3NhZ2U7c2FuaXRpemVTdGF0dXNNZXNzYWdlKHMuc3RhdHVzTWVzc2FnZSkhPT1lJiZjb25zb2xlLndhcm4oIltoM10gUGxlYXNlIHByZWZlciB1c2luZyBgbWVzc2FnZWAgZm9yIGxvbmdlciBlcnJvciBtZXNzYWdlcyBpbnN0ZWFkIG9mIGBzdGF0dXNNZXNzYWdlYC4gSW4gdGhlIGZ1dHVyZSwgYHN0YXR1c01lc3NhZ2VgIHdpbGwgYmUgc2FuaXRpemVkIGJ5IGRlZmF1bHQuIil9cmV0dXJuIHZvaWQgMCE9PWUuZmF0YWwmJihzLmZhdGFsPWUuZmF0YWwpLHZvaWQgMCE9PWUudW5oYW5kbGVkJiYocy51bmhhbmRsZWQ9ZS51bmhhbmRsZWQpLHN9ZnVuY3Rpb24gaXNFcnJvcihlKXtyZXR1cm4hMD09PWU/LmNvbnN0cnVjdG9yPy5fX2gzX2Vycm9yX199ZnVuY3Rpb24gcHJvY2VzcyQxKHMsZCl7Y29uc3QgbT17fSxoPWQuZmluZChlPT4iY29udGVudC1kaXNwb3NpdGlvbiI9PT1lWzBdKT8uWzFdfHwiIjtmb3IoY29uc3QgcyBvZiBoLnNwbGl0KCI7Iikpe2NvbnN0IGQ9cy5zcGxpdCgiPSIpO2lmKDIhPT1kLmxlbmd0aCljb250aW51ZTtjb25zdCBoPShkWzBdfHwiIikudHJpbSgpO2lmKCJuYW1lIj09PWh8fCJmaWxlbmFtZSI9PT1oKXtjb25zdCBzPShkWzFdfHwiIikudHJpbSgpLnJlcGxhY2UoLyIvZywiIik7bVtoXT1lLmZyb20ocywibGF0aW4xIikudG9TdHJpbmcoInV0ZjgiKX19Y29uc3QgZz1kLmZpbmQoZT0+ImNvbnRlbnQtdHlwZSI9PT1lWzBdKT8uWzFdfHwiIjtyZXR1cm4gZyYmKG0udHlwZT1nKSxtLmRhdGE9ZS5mcm9tKHMpLG19YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVEYXRhKGUscyl7dHJ5e2NvbnN0IGQ9YXdhaXQgcyhlKTtpZighMT09PWQpdGhyb3cgY3JlYXRlVmFsaWRhdGlvbkVycm9yKCk7cmV0dXJuITA9PT1kP2U6ZD8/ZX1jYXRjaChlKXt0aHJvdyBjcmVhdGVWYWxpZGF0aW9uRXJyb3IoZSl9fWZ1bmN0aW9uIGNyZWF0ZVZhbGlkYXRpb25FcnJvcihlKXt0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDAwLHN0YXR1c01lc3NhZ2U6IlZhbGlkYXRpb24gRXJyb3IiLG1lc3NhZ2U6ZT8ubWVzc2FnZXx8IlZhbGlkYXRpb24gRXJyb3IiLGRhdGE6ZX0pfWZ1bmN0aW9uIGdldFF1ZXJ5KGUpe3JldHVybiBnZXRRdWVyeSQxKGUucGF0aHx8IiIpfWZ1bmN0aW9uIGdldFZhbGlkYXRlZFF1ZXJ5KGUscyl7cmV0dXJuIHZhbGlkYXRlRGF0YShnZXRRdWVyeShlKSxzKX1mdW5jdGlvbiBnZXRSb3V0ZXJQYXJhbXMoZSxzPXt9KXtsZXQgZD1lLmNvbnRleHQucGFyYW1zfHx7fTtpZihzLmRlY29kZSl7ZD17Li4uZH07Zm9yKGNvbnN0IGUgaW4gZClkW2VdPWRlY29kZSQ0KGRbZV0pfXJldHVybiBkfWZ1bmN0aW9uIGdldFZhbGlkYXRlZFJvdXRlclBhcmFtcyhlLHMsZD17fSl7cmV0dXJuIHZhbGlkYXRlRGF0YShnZXRSb3V0ZXJQYXJhbXMoZSxkKSxzKX1mdW5jdGlvbiBnZXRSb3V0ZXJQYXJhbShlLHMsZD17fSl7cmV0dXJuIGdldFJvdXRlclBhcmFtcyhlLGQpW3NdfWZ1bmN0aW9uIGFzc2VydE1ldGhvZChlLHMsZCl7aWYoIWZ1bmN0aW9uKGUscyl7aWYoInN0cmluZyI9PXR5cGVvZiBzKXtpZihlLm1ldGhvZD09PXMpcmV0dXJuITB9ZWxzZSBpZihzLmluY2x1ZGVzKGUubWV0aG9kKSlyZXR1cm4hMDtyZXR1cm4hMX0oZSxzKSl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwNSxzdGF0dXNNZXNzYWdlOiJIVFRQIG1ldGhvZCBpcyBub3QgYWxsb3dlZC4ifSl9ZnVuY3Rpb24gZ2V0UmVxdWVzdEhlYWRlcnMoZSl7Y29uc3Qgcz17fTtmb3IoY29uc3QgZCBpbiBlLm5vZGUucmVxLmhlYWRlcnMpe2NvbnN0IG09ZS5ub2RlLnJlcS5oZWFkZXJzW2RdO3NbZF09QXJyYXkuaXNBcnJheShtKT9tLmZpbHRlcihCb29sZWFuKS5qb2luKCIsICIpOm19cmV0dXJuIHN9ZnVuY3Rpb24gZ2V0UmVxdWVzdEhlYWRlcihlLHMpe3JldHVybiBnZXRSZXF1ZXN0SGVhZGVycyhlKVtzLnRvTG93ZXJDYXNlKCldfWNvbnN0IEVuPWdldFJlcXVlc3RIZWFkZXI7ZnVuY3Rpb24gZ2V0UmVxdWVzdEhvc3QoZSxzPXt9KXtpZihzLnhGb3J3YXJkZWRIb3N0KXtjb25zdCBzPWUubm9kZS5yZXEuaGVhZGVyc1sieC1mb3J3YXJkZWQtaG9zdCJdLGQ9KHN8fCIiKS5zcGxpdCgiLCIpLnNoaWZ0KCk/LnRyaW0oKTtpZihkKXJldHVybiBkfXJldHVybiBlLm5vZGUucmVxLmhlYWRlcnMuaG9zdHx8ImxvY2FsaG9zdCJ9ZnVuY3Rpb24gZ2V0UmVxdWVzdFByb3RvY29sKGUscz17fSl7cmV0dXJuITEhPT1zLnhGb3J3YXJkZWRQcm90byYmImh0dHBzIj09PWUubm9kZS5yZXEuaGVhZGVyc1sieC1mb3J3YXJkZWQtcHJvdG8iXXx8ZS5ub2RlLnJlcS5jb25uZWN0aW9uPy5lbmNyeXB0ZWQ/Imh0dHBzIjoiaHR0cCJ9ZnVuY3Rpb24gZ2V0UmVxdWVzdFVSTChlLHM9e30pe2NvbnN0IGQ9Z2V0UmVxdWVzdEhvc3QoZSxzKSxtPWdldFJlcXVlc3RQcm90b2NvbChlLHMpLGg9KGUubm9kZS5yZXEub3JpZ2luYWxVcmx8fGUucGF0aCkucmVwbGFjZSgvXlsvXFxdKy9nLCIvIik7cmV0dXJuIG5ldyBVUkwoaCxgJHttfTovLyR7ZH1gKX1jb25zdCBPbj1TeW1ib2wuZm9yKCJoM1Jhd0JvZHkiKSxQbj1TeW1ib2wuZm9yKCJoM1BhcnNlZEJvZHkiKSxObj1bIlBBVENIIiwiUE9TVCIsIlBVVCIsIkRFTEVURSJdO2Z1bmN0aW9uIHJlYWRSYXdCb2R5KHMsZD0idXRmOCIpe2Fzc2VydE1ldGhvZChzLE5uKTtjb25zdCBtPXMuX3JlcXVlc3RCb2R5fHxzLndlYj8ucmVxdWVzdD8uYm9keXx8cy5ub2RlLnJlcVtPbl18fHMubm9kZS5yZXEucmF3Qm9keXx8cy5ub2RlLnJlcS5ib2R5O2lmKG0pe2NvbnN0IHM9UHJvbWlzZS5yZXNvbHZlKG0pLnRoZW4ocz0+ZS5pc0J1ZmZlcihzKT9zOiJmdW5jdGlvbiI9PXR5cGVvZiBzLnBpcGVUbz9uZXcgUHJvbWlzZSgoZCxtKT0+e2NvbnN0IGg9W107cy5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKHt3cml0ZShlKXtoLnB1c2goZSl9LGNsb3NlKCl7ZChlLmNvbmNhdChoKSl9LGFib3J0KGUpe20oZSl9fSkpLmNhdGNoKG0pfSk6ImZ1bmN0aW9uIj09dHlwZW9mIHMucGlwZT9uZXcgUHJvbWlzZSgoZCxtKT0+e2NvbnN0IGg9W107cy5vbigiZGF0YSIsZT0+e2gucHVzaChlKX0pLm9uKCJlbmQiLCgpPT57ZChlLmNvbmNhdChoKSl9KS5vbigiZXJyb3IiLG0pfSk6cy5jb25zdHJ1Y3Rvcj09PU9iamVjdD9lLmZyb20oSlNPTi5zdHJpbmdpZnkocykpOnMgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXM/ZS5mcm9tKHMudG9TdHJpbmcoKSk6cyBpbnN0YW5jZW9mIEZvcm1EYXRhP25ldyBSZXNwb25zZShzKS5ieXRlcygpLnRoZW4ocz0+ZS5mcm9tKHMpKTplLmZyb20ocykpO3JldHVybiBkP3MudGhlbihlPT5lLnRvU3RyaW5nKGQpKTpzfWlmKCFOdW1iZXIucGFyc2VJbnQocy5ub2RlLnJlcS5oZWFkZXJzWyJjb250ZW50LWxlbmd0aCJdfHwiIikmJiEvXGJjaHVua2VkXGIvaS50ZXN0KFN0cmluZyhzLm5vZGUucmVxLmhlYWRlcnNbInRyYW5zZmVyLWVuY29kaW5nIl0/PyIiKSkpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2b2lkIDApO2NvbnN0IGg9cy5ub2RlLnJlcVtPbl09bmV3IFByb21pc2UoKGQsbSk9Pntjb25zdCBoPVtdO3Mubm9kZS5yZXEub24oImVycm9yIixlPT57bShlKX0pLm9uKCJkYXRhIixlPT57aC5wdXNoKGUpfSkub24oImVuZCIsKCk9PntkKGUuY29uY2F0KGgpKX0pfSk7cmV0dXJuIGQ/aC50aGVuKGU9PmUudG9TdHJpbmcoZCkpOmh9YXN5bmMgZnVuY3Rpb24gcmVhZEJvZHkoZSxzPXt9KXtjb25zdCBkPWUubm9kZS5yZXE7aWYoaGFzUHJvcChkLFBuKSlyZXR1cm4gZFtQbl07Y29uc3QgbT1kLmhlYWRlcnNbImNvbnRlbnQtdHlwZSJdfHwiIixoPWF3YWl0IHJlYWRSYXdCb2R5KGUpO2xldCBnO3JldHVybiBnPSJhcHBsaWNhdGlvbi9qc29uIj09PW0/X3BhcnNlSlNPTihoLHMuc3RyaWN0Pz8hMCk6bS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT9mdW5jdGlvbihlKXtjb25zdCBzPW5ldyBVUkxTZWFyY2hQYXJhbXMoZSksZD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLG1db2Ygcy5lbnRyaWVzKCkpaGFzUHJvcChkLGUpPyhBcnJheS5pc0FycmF5KGRbZV0pfHwoZFtlXT1bZFtlXV0pLGRbZV0ucHVzaChtKSk6ZFtlXT1tO3JldHVybiBkfShoKTptLnN0YXJ0c1dpdGgoInRleHQvIik/aDpfcGFyc2VKU09OKGgscy5zdHJpY3Q/PyExKSxkW1BuXT1nLGd9YXN5bmMgZnVuY3Rpb24gcmVhZFZhbGlkYXRlZEJvZHkoZSxzKXtyZXR1cm4gdmFsaWRhdGVEYXRhKGF3YWl0IHJlYWRCb2R5KGUse3N0cmljdDohMH0pLHMpfWFzeW5jIGZ1bmN0aW9uIHJlYWRNdWx0aXBhcnRGb3JtRGF0YShlKXtjb25zdCBzPWdldFJlcXVlc3RIZWFkZXIoZSwiY29udGVudC10eXBlIik7aWYoIXN8fCFzLnN0YXJ0c1dpdGgoIm11bHRpcGFydC9mb3JtLWRhdGEiKSlyZXR1cm47Y29uc3QgZD1zLm1hdGNoKC9ib3VuZGFyeT0oW147XSopKDt8JCkvaSk/LlsxXTtpZighZClyZXR1cm47Y29uc3QgbT1hd2FpdCByZWFkUmF3Qm9keShlLCExKTtyZXR1cm4gbT9mdW5jdGlvbihlLHMpe2xldCBkPSIiLG09MCxoPVtdO2NvbnN0IGc9W107bGV0IHg9W107Zm9yKGxldCAkPTA7JDxlLmxlbmd0aDskKyspe2NvbnN0IFM9JD4wP2VbJC0xXTpudWxsLGo9ZVskXTsxMD09PWp8fDEzPT09anx8KGQrPVN0cmluZy5mcm9tQ29kZVBvaW50KGopKTtjb25zdCB6PTEwPT09aiYmMTM9PT1TO2lmKDA9PT1tJiZ6KSItLSIrcz09PWQmJihtPTEpLGQ9IiI7ZWxzZSBpZigxPT09bSYmeil7aWYoZC5sZW5ndGg+MCl7Y29uc3QgZT1kLmluZGV4T2YoIjoiKTtpZihlPjApe2NvbnN0IHM9ZC5zbGljZSgwLGUpLnRvTG93ZXJDYXNlKCksbT1kLnNsaWNlKGUrMSkudHJpbSgpO3gucHVzaChbcyxtXSl9fWVsc2UgbT0yLGg9W107ZD0iIn1lbHNlIGlmKDI9PT1tKXtpZihkLmxlbmd0aD5zLmxlbmd0aCs0JiYoZD0iIiksIi0tIitzPT09ZCl7Y29uc3QgZT1oLmxlbmd0aC1kLmxlbmd0aCxzPWguc2xpY2UoMCxlLTEpO2cucHVzaChwcm9jZXNzJDEocyx4KSksaD1bXSx4PVtdLGQ9IiIsbT0zfWVsc2UgaC5wdXNoKGopO3omJihkPSIiKX1lbHNlIDM9PT1tJiZ6JiYobT0xKX1yZXR1cm4gZ30obSxkKTp2b2lkIDB9YXN5bmMgZnVuY3Rpb24gcmVhZEZvcm1EYXRhKGUpe3JldHVybiBhd2FpdCBmdW5jdGlvbihlKXtyZXR1cm4gZS53ZWI/LnJlcXVlc3R8fG5ldyBSZXF1ZXN0KGdldFJlcXVlc3RVUkwoZSkse2R1cGxleDoiaGFsZiIsbWV0aG9kOmUubWV0aG9kLGhlYWRlcnM6ZS5oZWFkZXJzLGJvZHk6Z2V0UmVxdWVzdFdlYlN0cmVhbShlKX0pfShlKS5mb3JtRGF0YSgpfWZ1bmN0aW9uIGdldFJlcXVlc3RXZWJTdHJlYW0oZSl7aWYoIU5uLmluY2x1ZGVzKGUubWV0aG9kKSlyZXR1cm47Y29uc3Qgcz1lLndlYj8ucmVxdWVzdD8uYm9keXx8ZS5fcmVxdWVzdEJvZHk7aWYocylyZXR1cm4gcztyZXR1cm4gT24gaW4gZS5ub2RlLnJlcXx8InJhd0JvZHkiaW4gZS5ub2RlLnJlcXx8ImJvZHkiaW4gZS5ub2RlLnJlcXx8Il9fdW5lbnZfXyJpbiBlLm5vZGUucmVxP25ldyBSZWFkYWJsZVN0cmVhbSh7YXN5bmMgc3RhcnQocyl7Y29uc3QgZD1hd2FpdCByZWFkUmF3Qm9keShlLCExKTtkJiZzLmVucXVldWUoZCkscy5jbG9zZSgpfX0pOm5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6cz0+e2Uubm9kZS5yZXEub24oImRhdGEiLGU9PntzLmVucXVldWUoZSl9KSxlLm5vZGUucmVxLm9uKCJlbmQiLCgpPT57cy5jbG9zZSgpfSksZS5ub2RlLnJlcS5vbigiZXJyb3IiLGU9PntzLmVycm9yKGUpfSl9fSl9ZnVuY3Rpb24gX3BhcnNlSlNPTihlPSIiLHMpe2lmKGUpdHJ5e3JldHVybiBkZXN0cihlLHtzdHJpY3Q6c30pfWNhdGNoe3Rocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkJhZCBSZXF1ZXN0IixtZXNzYWdlOiJJbnZhbGlkIEpTT04gYm9keSJ9KX19ZnVuY3Rpb24gaGFuZGxlQ2FjaGVIZWFkZXJzKGUscyl7Y29uc3QgZD1bInB1YmxpYyIsLi4ucy5jYWNoZUNvbnRyb2xzfHxbXV07bGV0IG09ITE7aWYodm9pZCAwIT09cy5tYXhBZ2UmJmQucHVzaCgibWF4LWFnZT0iKyArcy5tYXhBZ2UsInMtbWF4YWdlPSIrICtzLm1heEFnZSkscy5tb2RpZmllZFRpbWUpe2NvbnN0IGQ9bmV3IERhdGUocy5tb2RpZmllZFRpbWUpLGg9ZS5ub2RlLnJlcS5oZWFkZXJzWyJpZi1tb2RpZmllZC1zaW5jZSJdO2Uubm9kZS5yZXMuc2V0SGVhZGVyKCJsYXN0LW1vZGlmaWVkIixkLnRvVVRDU3RyaW5nKCkpLGgmJm5ldyBEYXRlKGgpPj1kJiYobT0hMCl9aWYocy5ldGFnKXtlLm5vZGUucmVzLnNldEhlYWRlcigiZXRhZyIscy5ldGFnKTtlLm5vZGUucmVxLmhlYWRlcnNbImlmLW5vbmUtbWF0Y2giXT09PXMuZXRhZyYmKG09ITApfXJldHVybiBlLm5vZGUucmVzLnNldEhlYWRlcigiY2FjaGUtY29udHJvbCIsZC5qb2luKCIsICIpKSwhIW0mJihlLm5vZGUucmVzLnN0YXR1c0NvZGU9MzA0LGUuaGFuZGxlZHx8ZS5ub2RlLnJlcy5lbmQoKSwhMCl9Y29uc3QgRG49e2h0bWw6InRleHQvaHRtbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiJ9LFVuPS9bXlx1MDAwOVx1MDAyMC1cdTAwN0VdL2c7ZnVuY3Rpb24gc2FuaXRpemVTdGF0dXNNZXNzYWdlKGU9IiIpe3JldHVybiBlLnJlcGxhY2UoVW4sIiIpfWZ1bmN0aW9uIHNhbml0aXplU3RhdHVzQ29kZShlLHM9MjAwKXtyZXR1cm4gZT8oInN0cmluZyI9PXR5cGVvZiBlJiYoZT1OdW1iZXIucGFyc2VJbnQoZSwxMCkpLGU8MTAwfHxlPjk5OT9zOmUpOnN9ZnVuY3Rpb24gZ2V0RGlzdGluY3RDb29raWVLZXkoZSxzKXtyZXR1cm5bZSxzLmRvbWFpbnx8IiIscy5wYXRofHwiLyJdLmpvaW4oIjsiKX1mdW5jdGlvbiBwYXJzZUNvb2tpZXMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzdHIgbXVzdCBiZSBhIHN0cmluZyIpO2NvbnN0IHM9bmV3IHZuLGQ9e30sbT1kLmRlY29kZXx8ZGVjb2RlJDM7bGV0IGg9MDtmb3IoO2g8ZS5sZW5ndGg7KXtjb25zdCBnPWUuaW5kZXhPZigiPSIsaCk7aWYoLTE9PT1nKWJyZWFrO2xldCB4PWUuaW5kZXhPZigiOyIsaCk7aWYoLTE9PT14KXg9ZS5sZW5ndGg7ZWxzZSBpZih4PGcpe2g9ZS5sYXN0SW5kZXhPZigiOyIsZy0xKSsxO2NvbnRpbnVlfWNvbnN0ICQ9ZS5zbGljZShoLGcpLnRyaW0oKTtpZighZD8uZmlsdGVyfHxkPy5maWx0ZXIoJCkpe2lmKHZvaWQgMD09PXNbJF0pe2xldCBkPWUuc2xpY2UoZysxLHgpLnRyaW0oKTszND09PWQuY29kZVBvaW50QXQoMCkmJihkPWQuc2xpY2UoMSwtMSkpLHNbJF09dHJ5RGVjb2RlJDEoZCxtKX1oPXgrMX1lbHNlIGg9eCsxfXJldHVybiBzfShlLm5vZGUucmVxLmhlYWRlcnMuY29va2llfHwiIil9ZnVuY3Rpb24gZ2V0Q29va2llKGUscyl7cmV0dXJuIHBhcnNlQ29va2llcyhlKVtzXX1mdW5jdGlvbiBzZXRDb29raWUoZSxzLGQsbT17fSl7bS5wYXRofHwobT17cGF0aDoiLyIsLi4ubX0pO2NvbnN0IGg9c2VyaWFsaXplJDIocyxkLG0pLGc9c3BsaXRDb29raWVzU3RyaW5nKGUubm9kZS5yZXMuZ2V0SGVhZGVyKCJzZXQtY29va2llIikpO2lmKDA9PT1nLmxlbmd0aClyZXR1cm4gdm9pZCBlLm5vZGUucmVzLnNldEhlYWRlcigic2V0LWNvb2tpZSIsaCk7Y29uc3QgeD1nZXREaXN0aW5jdENvb2tpZUtleShzLG0pO2Uubm9kZS5yZXMucmVtb3ZlSGVhZGVyKCJzZXQtY29va2llIik7Zm9yKGNvbnN0IHMgb2YgZyl7Y29uc3QgZD1wYXJzZVNldENvb2tpZShzKTtnZXREaXN0aW5jdENvb2tpZUtleShkLm5hbWUsZCkhPT14JiZlLm5vZGUucmVzLmFwcGVuZEhlYWRlcigic2V0LWNvb2tpZSIscyl9ZS5ub2RlLnJlcy5hcHBlbmRIZWFkZXIoInNldC1jb29raWUiLGgpfWZ1bmN0aW9uIGRlbGV0ZUNvb2tpZShlLHMsZCl7c2V0Q29va2llKGUscywiIix7Li4uZCxtYXhBZ2U6MH0pfWZ1bmN0aW9uIHNwbGl0Q29va2llc1N0cmluZyhlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLmZsYXRNYXAoZT0+c3BsaXRDb29raWVzU3RyaW5nKGUpKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuW107Y29uc3Qgcz1bXTtsZXQgZCxtLGgsZyx4LCQ9MDtjb25zdCBza2lwV2hpdGVzcGFjZT0oKT0+e2Zvcig7JDxlLmxlbmd0aCYmL1xzLy50ZXN0KGUuY2hhckF0KCQpKTspJCs9MTtyZXR1cm4gJDxlLmxlbmd0aH0sbm90U3BlY2lhbENoYXI9KCk9PihtPWUuY2hhckF0KCQpLCI9IiE9PW0mJiI7IiE9PW0mJiIsIiE9PW0pO2Zvcig7JDxlLmxlbmd0aDspe2ZvcihkPSQseD0hMTtza2lwV2hpdGVzcGFjZSgpOylpZihtPWUuY2hhckF0KCQpLCIsIj09PW0pe2ZvcihoPSQsJCs9MSxza2lwV2hpdGVzcGFjZSgpLGc9JDskPGUubGVuZ3RoJiZub3RTcGVjaWFsQ2hhcigpOykkKz0xOyQ8ZS5sZW5ndGgmJiI9Ij09PWUuY2hhckF0KCQpPyh4PSEwLCQ9ZyxzLnB1c2goZS5zbGljZShkLGgpKSxkPSQpOiQ9aCsxfWVsc2UgJCs9MTsoIXh8fCQ+PWUubGVuZ3RoKSYmcy5wdXNoKGUuc2xpY2UoZCkpfXJldHVybiBzfWNvbnN0IExuPXZvaWQgMD09PWg/ZT0+ZSgpOmg7ZnVuY3Rpb24gc2VuZChlLHMsZCl7cmV0dXJuIGQmJmZ1bmN0aW9uKGUscyl7cyYmMzA0IT09ZS5ub2RlLnJlcy5zdGF0dXNDb2RlJiYhZS5ub2RlLnJlcy5nZXRIZWFkZXIoImNvbnRlbnQtdHlwZSIpJiZlLm5vZGUucmVzLnNldEhlYWRlcigiY29udGVudC10eXBlIixzKX0oZSxkKSxuZXcgUHJvbWlzZShkPT57TG4oKCk9PntlLmhhbmRsZWR8fGUubm9kZS5yZXMuZW5kKHMpLGQoKX0pfSl9ZnVuY3Rpb24gc2VuZE5vQ29udGVudChlLHMpe2lmKGUuaGFuZGxlZClyZXR1cm47c3x8MjAwPT09ZS5ub2RlLnJlcy5zdGF0dXNDb2RlfHwocz1lLm5vZGUucmVzLnN0YXR1c0NvZGUpO2NvbnN0IGQ9c2FuaXRpemVTdGF0dXNDb2RlKHMsMjA0KTsyMDQ9PT1kJiZlLm5vZGUucmVzLnJlbW92ZUhlYWRlcigiY29udGVudC1sZW5ndGgiKSxlLm5vZGUucmVzLndyaXRlSGVhZChkKSxlLm5vZGUucmVzLmVuZCgpfWZ1bmN0aW9uIHNldFJlc3BvbnNlU3RhdHVzKGUscyxkKXtzJiYoZS5ub2RlLnJlcy5zdGF0dXNDb2RlPXNhbml0aXplU3RhdHVzQ29kZShzLGUubm9kZS5yZXMuc3RhdHVzQ29kZSkpLGQmJihlLm5vZGUucmVzLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKGQpKX1mdW5jdGlvbiBnZXRSZXNwb25zZVN0YXR1cyhlKXtyZXR1cm4gZS5ub2RlLnJlcy5zdGF0dXNDb2RlfWZ1bmN0aW9uIGdldFJlc3BvbnNlU3RhdHVzVGV4dChlKXtyZXR1cm4gZS5ub2RlLnJlcy5zdGF0dXNNZXNzYWdlfWZ1bmN0aW9uIHNlbmRSZWRpcmVjdChlLHMsZD0zMDIpe2Uubm9kZS5yZXMuc3RhdHVzQ29kZT1zYW5pdGl6ZVN0YXR1c0NvZGUoZCxlLm5vZGUucmVzLnN0YXR1c0NvZGUpLGUubm9kZS5yZXMuc2V0SGVhZGVyKCJsb2NhdGlvbiIscyk7cmV0dXJuIHNlbmQoZSxgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPSR7cy5yZXBsYWNlKC8iL2csIiUyMiIpfSI+PC9oZWFkPjwvaHRtbD5gLERuLmh0bWwpfWZ1bmN0aW9uIGdldFJlc3BvbnNlSGVhZGVyKGUscyl7cmV0dXJuIGUubm9kZS5yZXMuZ2V0SGVhZGVyKHMpfWZ1bmN0aW9uIHNldFJlc3BvbnNlSGVhZGVycyhlLHMpe2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMocykpZS5ub2RlLnJlcy5zZXRIZWFkZXIoZCxtKX1jb25zdCBBbj1zZXRSZXNwb25zZUhlYWRlcnM7ZnVuY3Rpb24gc2V0UmVzcG9uc2VIZWFkZXIoZSxzLGQpe2Uubm9kZS5yZXMuc2V0SGVhZGVyKHMsZCl9Y29uc3QgcW49c2V0UmVzcG9uc2VIZWFkZXI7Y29uc3QgYXBwZW5kSGVhZGVycz1mdW5jdGlvbihlLHMpe2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMocykpYXBwZW5kUmVzcG9uc2VIZWFkZXIoZSxkLG0pfTtmdW5jdGlvbiBhcHBlbmRSZXNwb25zZUhlYWRlcihlLHMsZCl7bGV0IG09ZS5ub2RlLnJlcy5nZXRIZWFkZXIocyk7bT8oQXJyYXkuaXNBcnJheShtKXx8KG09W20udG9TdHJpbmcoKV0pLGUubm9kZS5yZXMuc2V0SGVhZGVyKHMsWy4uLm0sZF0pKTplLm5vZGUucmVzLnNldEhlYWRlcihzLGQpfWZ1bmN0aW9uIHJlbW92ZVJlc3BvbnNlSGVhZGVyKGUscyl7cmV0dXJuIGUubm9kZS5yZXMucmVtb3ZlSGVhZGVyKHMpfWZ1bmN0aW9uIHNlbmRTdHJlYW0oZSxzKXtpZighc3x8Im9iamVjdCIhPXR5cGVvZiBzKXRocm93IG5ldyBFcnJvcigiW2gzXSBJbnZhbGlkIHN0cmVhbSBwcm92aWRlZC4iKTtpZihlLm5vZGUucmVzLl9kYXRhPXMsIWUubm9kZS5yZXMuc29ja2V0KXJldHVybiBlLl9oYW5kbGVkPSEwLFByb21pc2UucmVzb2x2ZSgpO2lmKGhhc1Byb3AocywicGlwZVRvIikmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLnBpcGVUbylyZXR1cm4gcy5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKHt3cml0ZShzKXtlLm5vZGUucmVzLndyaXRlKHMpfX0pKS50aGVuKCgpPT57ZS5ub2RlLnJlcy5lbmQoKX0pO2lmKGhhc1Byb3AocywicGlwZSIpJiYiZnVuY3Rpb24iPT10eXBlb2Ygcy5waXBlKXJldHVybiBuZXcgUHJvbWlzZSgoZCxtKT0+e3MucGlwZShlLm5vZGUucmVzKSxzLm9uJiYocy5vbigiZW5kIiwoKT0+e2Uubm9kZS5yZXMuZW5kKCksZCgpfSkscy5vbigiZXJyb3IiLGU9PnttKGUpfSkpLGUubm9kZS5yZXMub24oImNsb3NlIiwoKT0+e3MuYWJvcnQmJnMuYWJvcnQoKX0pfSk7dGhyb3cgbmV3IEVycm9yKCJbaDNdIEludmFsaWQgb3IgaW5jb21wYXRpYmxlIHN0cmVhbSBwcm92aWRlZC4iKX1mdW5jdGlvbiBzZW5kV2ViUmVzcG9uc2UoZSxzKXtmb3IoY29uc3RbZCxtXW9mIHMuaGVhZGVycykic2V0LWNvb2tpZSI9PT1kP2Uubm9kZS5yZXMuYXBwZW5kSGVhZGVyKGQsc3BsaXRDb29raWVzU3RyaW5nKG0pKTplLm5vZGUucmVzLnNldEhlYWRlcihkLG0pO2lmKHMuc3RhdHVzJiYoZS5ub2RlLnJlcy5zdGF0dXNDb2RlPXNhbml0aXplU3RhdHVzQ29kZShzLnN0YXR1cyxlLm5vZGUucmVzLnN0YXR1c0NvZGUpKSxzLnN0YXR1c1RleHQmJihlLm5vZGUucmVzLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKHMuc3RhdHVzVGV4dCkpLHMucmVkaXJlY3RlZCYmZS5ub2RlLnJlcy5zZXRIZWFkZXIoImxvY2F0aW9uIixzLnVybCkscy5ib2R5KXJldHVybiBzZW5kU3RyZWFtKGUscy5ib2R5KTtlLm5vZGUucmVzLmVuZCgpfWZ1bmN0aW9uIGNyZWF0ZU9yaWdpbkhlYWRlcnMoZSxzKXtjb25zdHtvcmlnaW46ZH09cyxtPWdldFJlcXVlc3RIZWFkZXIoZSwib3JpZ2luIik7cmV0dXJuIG0mJmQmJiIqIiE9PWQ/InN0cmluZyI9PXR5cGVvZiBkP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIjpkLHZhcnk6Im9yaWdpbiJ9OmZ1bmN0aW9uKGUscyl7Y29uc3R7b3JpZ2luOmR9PXM7cmV0dXJuIWV8fCFkfHwiKiI9PT1kfHwibnVsbCI9PT1kfHwoQXJyYXkuaXNBcnJheShkKT9kLnNvbWUocz0+cyBpbnN0YW5jZW9mIFJlZ0V4cD9zLnRlc3QoZSk6ZT09PXMpOmQoZSkpfShtLHMpP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIjptLHZhcnk6Im9yaWdpbiJ9Ont9OnsiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIjoiKiJ9fWZ1bmN0aW9uIGNyZWF0ZUNyZWRlbnRpYWxzSGVhZGVycyhlKXtjb25zdHtjcmVkZW50aWFsczpzfT1lO3JldHVybiBzP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctY3JlZGVudGlhbHMiOiJ0cnVlIn06e319ZnVuY3Rpb24gY3JlYXRlRXhwb3NlSGVhZGVycyhlKXtjb25zdHtleHBvc2VIZWFkZXJzOnN9PWU7cmV0dXJuIHM/IioiPT09cz97ImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFkZXJzIjpzfTp7ImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFkZXJzIjpzLmpvaW4oIiwiKX06e319ZnVuY3Rpb24gYXBwZW5kQ29yc1ByZWZsaWdodEhlYWRlcnMoZSxzKXthcHBlbmRIZWFkZXJzKGUsY3JlYXRlT3JpZ2luSGVhZGVycyhlLHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlQ3JlZGVudGlhbHNIZWFkZXJzKHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlRXhwb3NlSGVhZGVycyhzKSksYXBwZW5kSGVhZGVycyhlLGZ1bmN0aW9uKGUpe2NvbnN0e21ldGhvZHM6c309ZTtyZXR1cm4gcz8iKiI9PT1zP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctbWV0aG9kcyI6IioifTpzLmxlbmd0aD4wP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctbWV0aG9kcyI6cy5qb2luKCIsIil9Ont9Ont9fShzKSksYXBwZW5kSGVhZGVycyhlLGZ1bmN0aW9uKGUscyl7Y29uc3R7YWxsb3dIZWFkZXJzOmR9PXM7aWYoIWR8fCIqIj09PWR8fDA9PT1kLmxlbmd0aCl7Y29uc3Qgcz1nZXRSZXF1ZXN0SGVhZGVyKGUsImFjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycyIpO3JldHVybiBzP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctaGVhZGVycyI6cyx2YXJ5OiJhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LWhlYWRlcnMifTp7fX1yZXR1cm57ImFjY2Vzcy1jb250cm9sLWFsbG93LWhlYWRlcnMiOmQuam9pbigiLCIpLHZhcnk6ImFjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycyJ9fShlLHMpKX1mdW5jdGlvbiBoYW5kbGVDb3JzKGUscyl7Y29uc3QgZD1mdW5jdGlvbihlPXt9KXtyZXR1cm4gd24oZSx7b3JpZ2luOiIqIixtZXRob2RzOiIqIixhbGxvd0hlYWRlcnM6IioiLGV4cG9zZUhlYWRlcnM6IioiLGNyZWRlbnRpYWxzOiExLG1heEFnZTohMSxwcmVmbGlnaHQ6e3N0YXR1c0NvZGU6MjA0fX0pfShzKTtyZXR1cm4gZnVuY3Rpb24oZSl7Y29uc3Qgcz1nZXRSZXF1ZXN0SGVhZGVyKGUsIm9yaWdpbiIpLGQ9Z2V0UmVxdWVzdEhlYWRlcihlLCJhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LW1ldGhvZCIpO3JldHVybiJPUFRJT05TIj09PWUubWV0aG9kJiYhIXMmJiEhZH0oZSk/KGFwcGVuZENvcnNQcmVmbGlnaHRIZWFkZXJzKGUscyksc2VuZE5vQ29udGVudChlLGQucHJlZmxpZ2h0LnN0YXR1c0NvZGUpLCEwKTooZnVuY3Rpb24oZSxzKXthcHBlbmRIZWFkZXJzKGUsY3JlYXRlT3JpZ2luSGVhZGVycyhlLHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlQ3JlZGVudGlhbHNIZWFkZXJzKHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlRXhwb3NlSGVhZGVycyhzKSl9KGUscyksITEpfWNvbnN0IEZuPW5ldyBTZXQoWyJQQVRDSCIsIlBPU1QiLCJQVVQiLCJERUxFVEUiXSksQm49bmV3IFNldChbInRyYW5zZmVyLWVuY29kaW5nIiwiYWNjZXB0LWVuY29kaW5nIiwiY29ubmVjdGlvbiIsImtlZXAtYWxpdmUiLCJ1cGdyYWRlIiwiZXhwZWN0IiwiaG9zdCIsImFjY2VwdCJdKTthc3luYyBmdW5jdGlvbiBwcm94eVJlcXVlc3QoZSxzLGQ9e30pe2xldCBtLGg7Rm4uaGFzKGUubWV0aG9kKSYmKGQuc3RyZWFtUmVxdWVzdD8obT1nZXRSZXF1ZXN0V2ViU3RyZWFtKGUpLGg9ImhhbGYiKTptPWF3YWl0IHJlYWRSYXdCb2R5KGUsITEpLmNhdGNoKCgpPT57fSkpO2NvbnN0IGc9ZC5mZXRjaE9wdGlvbnM/Lm1ldGhvZHx8ZS5tZXRob2QseD1mdW5jdGlvbihlLC4uLnMpe2NvbnN0IGQ9cy5maWx0ZXIoQm9vbGVhbik7aWYoMD09PWQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG09bmV3IEhlYWRlcnMoZSk7Zm9yKGNvbnN0IGUgb2YgZCl7Y29uc3Qgcz1BcnJheS5pc0FycmF5KGUpP2U6ImZ1bmN0aW9uIj09dHlwZW9mIGUuZW50cmllcz9lLmVudHJpZXMoKTpPYmplY3QuZW50cmllcyhlKTtmb3IoY29uc3RbZSxkXW9mIHMpdm9pZCAwIT09ZCYmbS5zZXQoZSxkKX1yZXR1cm4gbX0oZ2V0UHJveHlSZXF1ZXN0SGVhZGVycyhlLHtob3N0OnMuc3RhcnRzV2l0aCgiLyIpfSksZC5mZXRjaE9wdGlvbnM/LmhlYWRlcnMsZC5oZWFkZXJzKTtyZXR1cm4gYXN5bmMgZnVuY3Rpb24oZSxzLGQ9e30pe2xldCBtO3RyeXttPWF3YWl0IF9nZXRGZXRjaChkLmZldGNoKShzLHtoZWFkZXJzOmQuaGVhZGVycyxpZ25vcmVSZXNwb25zZUVycm9yOiEwLC4uLmQuZmV0Y2hPcHRpb25zfSl9Y2F0Y2goZSl7dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjUwMixzdGF0dXNNZXNzYWdlOiJCYWQgR2F0ZXdheSIsY2F1c2U6ZX0pfWUubm9kZS5yZXMuc3RhdHVzQ29kZT1zYW5pdGl6ZVN0YXR1c0NvZGUobS5zdGF0dXMsZS5ub2RlLnJlcy5zdGF0dXNDb2RlKSxlLm5vZGUucmVzLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKG0uc3RhdHVzVGV4dCk7Y29uc3QgaD1bXTtmb3IoY29uc3RbcyxkXW9mIG0uaGVhZGVycy5lbnRyaWVzKCkpImNvbnRlbnQtZW5jb2RpbmciIT09cyYmImNvbnRlbnQtbGVuZ3RoIiE9PXMmJigic2V0LWNvb2tpZSIhPT1zP2Uubm9kZS5yZXMuc2V0SGVhZGVyKHMsZCk6aC5wdXNoKC4uLnNwbGl0Q29va2llc1N0cmluZyhkKSkpO2gubGVuZ3RoPjAmJmUubm9kZS5yZXMuc2V0SGVhZGVyKCJzZXQtY29va2llIixoLm1hcChlPT4oZC5jb29raWVEb21haW5SZXdyaXRlJiYoZT1yZXdyaXRlQ29va2llUHJvcGVydHkoZSxkLmNvb2tpZURvbWFpblJld3JpdGUsImRvbWFpbiIpKSxkLmNvb2tpZVBhdGhSZXdyaXRlJiYoZT1yZXdyaXRlQ29va2llUHJvcGVydHkoZSxkLmNvb2tpZVBhdGhSZXdyaXRlLCJwYXRoIikpLGUpKSk7ZC5vblJlc3BvbnNlJiZhd2FpdCBkLm9uUmVzcG9uc2UoZSxtKTtpZih2b2lkIDAhPT1tLl9kYXRhKXJldHVybiBtLl9kYXRhO2lmKGUuaGFuZGxlZClyZXR1cm47aWYoITE9PT1kLnNlbmRTdHJlYW0pe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbS5hcnJheUJ1ZmZlcigpKTtyZXR1cm4gZS5ub2RlLnJlcy5lbmQocyl9aWYobS5ib2R5KWZvciBhd2FpdChjb25zdCBzIG9mIG0uYm9keSllLm5vZGUucmVzLndyaXRlKHMpO3JldHVybiBlLm5vZGUucmVzLmVuZCgpfShlLHMsey4uLmQsZmV0Y2hPcHRpb25zOnttZXRob2Q6Zyxib2R5Om0sZHVwbGV4OmgsLi4uZC5mZXRjaE9wdGlvbnMsaGVhZGVyczp4fX0pfWZ1bmN0aW9uIGdldFByb3h5UmVxdWVzdEhlYWRlcnMoZSxzKXtjb25zdCBkPU9iamVjdC5jcmVhdGUobnVsbCksbT1nZXRSZXF1ZXN0SGVhZGVycyhlKTtmb3IoY29uc3QgZSBpbiBtKSghQm4uaGFzKGUpfHwiaG9zdCI9PT1lJiZzPy5ob3N0KSYmKGRbZV09bVtlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gZmV0Y2hXaXRoRXZlbnQoZSxzLGQsbSl7cmV0dXJuIF9nZXRGZXRjaChtPy5mZXRjaCkocyx7Li4uZCxjb250ZXh0OmQ/LmNvbnRleHR8fGUuY29udGV4dCxoZWFkZXJzOnsuLi5nZXRQcm94eVJlcXVlc3RIZWFkZXJzKGUse2hvc3Q6InN0cmluZyI9PXR5cGVvZiBzJiZzLnN0YXJ0c1dpdGgoIi8iKX0pLC4uLmQ/LmhlYWRlcnN9fSl9ZnVuY3Rpb24gX2dldEZldGNoKGUpe2lmKGUpcmV0dXJuIGU7aWYoZ2xvYmFsVGhpcy5mZXRjaClyZXR1cm4gZ2xvYmFsVGhpcy5mZXRjaDt0aHJvdyBuZXcgRXJyb3IoImZldGNoIGlzIG5vdCBhdmFpbGFibGUuIFRyeSBpbXBvcnRpbmcgYG5vZGUtZmV0Y2gtbmF0aXZlL3BvbHlmaWxsYCBmb3IgTm9kZS5qcy4iKX1mdW5jdGlvbiByZXdyaXRlQ29va2llUHJvcGVydHkoZSxzLGQpe2NvbnN0IG09InN0cmluZyI9PXR5cGVvZiBzP3siKiI6c306cztyZXR1cm4gZS5yZXBsYWNlKG5ldyBSZWdFeHAoYCg7XFxzKiR7ZH09KShbXjtdKylgLCJnaSIpLChlLHMsZCk9PntsZXQgaDtpZihkIGluIG0paD1tW2RdO2Vsc2V7aWYoISgiKiJpbiBtKSlyZXR1cm4gZTtoPW1bIioiXX1yZXR1cm4gaD9zK2g6IiJ9KX1jbGFzcyBIM0V2ZW50e19faXNfZXZlbnRfXz0hMDtub2RlO3dlYjtjb250ZXh0PXt9O19tZXRob2Q7X3BhdGg7X2hlYWRlcnM7X3JlcXVlc3RCb2R5O19oYW5kbGVkPSExO19vbkJlZm9yZVJlc3BvbnNlQ2FsbGVkO19vbkFmdGVyUmVzcG9uc2VDYWxsZWQ7Y29uc3RydWN0b3IoZSxzKXt0aGlzLm5vZGU9e3JlcTplLHJlczpzfX1nZXQgbWV0aG9kKCl7cmV0dXJuIHRoaXMuX21ldGhvZHx8KHRoaXMuX21ldGhvZD0odGhpcy5ub2RlLnJlcS5tZXRob2R8fCJHRVQiKS50b1VwcGVyQ2FzZSgpKSx0aGlzLl9tZXRob2R9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fcGF0aHx8dGhpcy5ub2RlLnJlcS51cmx8fCIvIn1nZXQgaGVhZGVycygpe3JldHVybiB0aGlzLl9oZWFkZXJzfHwodGhpcy5faGVhZGVycz1mdW5jdGlvbihlKXtjb25zdCBzPW5ldyBIZWFkZXJzO2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMoZSkpaWYoQXJyYXkuaXNBcnJheShtKSlmb3IoY29uc3QgZSBvZiBtKXMuYXBwZW5kKGQsZSk7ZWxzZSBtJiZzLnNldChkLG0pO3JldHVybiBzfSh0aGlzLm5vZGUucmVxLmhlYWRlcnMpKSx0aGlzLl9oZWFkZXJzfWdldCBoYW5kbGVkKCl7cmV0dXJuIHRoaXMuX2hhbmRsZWR8fHRoaXMubm9kZS5yZXMud3JpdGFibGVFbmRlZHx8dGhpcy5ub2RlLnJlcy5oZWFkZXJzU2VudH1yZXNwb25kV2l0aChlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpLnRoZW4oZT0+c2VuZFdlYlJlc3BvbnNlKHRoaXMsZSkpfXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMubWV0aG9kfV0gJHt0aGlzLnBhdGh9YH10b0pTT04oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfWdldCByZXEoKXtyZXR1cm4gdGhpcy5ub2RlLnJlcX1nZXQgcmVzKCl7cmV0dXJuIHRoaXMubm9kZS5yZXN9fWZ1bmN0aW9uIGlzRXZlbnQoZSl7cmV0dXJuIGhhc1Byb3AoZSwiX19pc19ldmVudF9fIil9ZnVuY3Rpb24gY3JlYXRlRXZlbnQoZSxzKXtyZXR1cm4gbmV3IEgzRXZlbnQoZSxzKX1mdW5jdGlvbiBkZWZpbmVFdmVudEhhbmRsZXIoZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGUuX19pc19oYW5kbGVyX189ITAsZTtjb25zdCBzPXtvblJlcXVlc3Q6X25vcm1hbGl6ZUFycmF5KGUub25SZXF1ZXN0KSxvbkJlZm9yZVJlc3BvbnNlOl9ub3JtYWxpemVBcnJheShlLm9uQmVmb3JlUmVzcG9uc2UpfSxfaGFuZGxlcj1kPT5hc3luYyBmdW5jdGlvbihlLHMsZCl7aWYoZC5vblJlcXVlc3QpZm9yKGNvbnN0IHMgb2YgZC5vblJlcXVlc3QpaWYoYXdhaXQgcyhlKSxlLmhhbmRsZWQpcmV0dXJuO2NvbnN0IG09YXdhaXQgcyhlKSxoPXtib2R5Om19O2lmKGQub25CZWZvcmVSZXNwb25zZSlmb3IoY29uc3QgcyBvZiBkLm9uQmVmb3JlUmVzcG9uc2UpYXdhaXQgcyhlLGgpO3JldHVybiBoLmJvZHl9KGQsZS5oYW5kbGVyLHMpO3JldHVybiBfaGFuZGxlci5fX2lzX2hhbmRsZXJfXz0hMCxfaGFuZGxlci5fX3Jlc29sdmVfXz1lLmhhbmRsZXIuX19yZXNvbHZlX18sX2hhbmRsZXIuX193ZWJzb2NrZXRfXz1lLndlYnNvY2tldCxfaGFuZGxlcn1mdW5jdGlvbiBfbm9ybWFsaXplQXJyYXkoZSl7cmV0dXJuIGU/QXJyYXkuaXNBcnJheShlKT9lOltlXTp2b2lkIDB9Y29uc3QgWm49ZGVmaW5lRXZlbnRIYW5kbGVyO2Z1bmN0aW9uIHRvRXZlbnRIYW5kbGVyKGUscyxkKXtyZXR1cm4gZX1jb25zdCBsYXp5RXZlbnRIYW5kbGVyPWZ1bmN0aW9uKGUpe2xldCBzLGQ7Y29uc3QgcmVzb2x2ZUhhbmRsZXI9KCk9PmQ/UHJvbWlzZS5yZXNvbHZlKGQpOihzfHwocz1Qcm9taXNlLnJlc29sdmUoZSgpKS50aGVuKGU9Pntjb25zdCBzPWUuZGVmYXVsdHx8ZTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGxhenkgaGFuZGxlciByZXN1bHQuIEl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uOiIscyk7cmV0dXJuIGQ9e2hhbmRsZXI6dG9FdmVudEhhbmRsZXIoZS5kZWZhdWx0fHxlKX0sZH0pKSxzKSxtPVpuKGU9PmQ/ZC5oYW5kbGVyKGUpOnJlc29sdmVIYW5kbGVyKCkudGhlbihzPT5zLmhhbmRsZXIoZSkpKTtyZXR1cm4gbS5fX3Jlc29sdmVfXz1yZXNvbHZlSGFuZGxlcixtfTtmdW5jdGlvbiBjcmVhdGVBcHAoZT17fSl7Y29uc3Qgcz1bXSxkPWZ1bmN0aW9uKGUscyl7Y29uc3QgZD1zLmRlYnVnPzI6dm9pZCAwO3JldHVybiBabihhc3luYyBtPT57bS5ub2RlLnJlcS5vcmlnaW5hbFVybD1tLm5vZGUucmVxLm9yaWdpbmFsVXJsfHxtLm5vZGUucmVxLnVybHx8Ii8iO2NvbnN0IGg9bS5ub2RlLnJlcS51cmx8fCIvIixnPWZ1bmN0aW9uKGUpe2NvbnN0IHM9ZS5pbmRleE9mKCI/IiksZD0tMT09PXM/ZTplLnNsaWNlKDAscyksbT0tMT09PXM/IiI6ZS5zbGljZShzKTtyZXR1cm4oZC5pbmNsdWRlcygiJTI1Iik/ZGVjb2RlUGF0aChkLnJlcGxhY2UoLyUyNS9nLCIlMjUyNSIpKTpkZWNvZGVQYXRoKGQpKSttfShtLl9wYXRofHxoKTttLl9wYXRoPWc7Y29uc3QgeD1nIT09aDtsZXQgJDtzLm9uUmVxdWVzdCYmYXdhaXQgcy5vblJlcXVlc3QobSk7Zm9yKGNvbnN0IFMgb2YgZSl7aWYoUy5yb3V0ZS5sZW5ndGg+MSl7aWYoIWcuc3RhcnRzV2l0aChTLnJvdXRlKSljb250aW51ZTskPWcuc2xpY2UoUy5yb3V0ZS5sZW5ndGgpfHwiLyJ9ZWxzZSAkPWc7aWYoUy5tYXRjaCYmIVMubWF0Y2goJCxtKSljb250aW51ZTttLl9wYXRoPSQsbS5ub2RlLnJlcS51cmw9eD9TLnJvdXRlLmxlbmd0aD4xP2guc2xpY2UoUy5yb3V0ZS5sZW5ndGgpfHwiLyI6aDokO2NvbnN0IGU9YXdhaXQgUy5oYW5kbGVyKG0pLGo9dm9pZCAwPT09ZT92b2lkIDA6YXdhaXQgZTtpZih2b2lkIDAhPT1qKXtjb25zdCBlPXtib2R5Omp9O3JldHVybiBzLm9uQmVmb3JlUmVzcG9uc2UmJihtLl9vbkJlZm9yZVJlc3BvbnNlQ2FsbGVkPSEwLGF3YWl0IHMub25CZWZvcmVSZXNwb25zZShtLGUpKSxhd2FpdCBoYW5kbGVIYW5kbGVyUmVzcG9uc2UobSxlLmJvZHksZCksdm9pZChzLm9uQWZ0ZXJSZXNwb25zZSYmKG0uX29uQWZ0ZXJSZXNwb25zZUNhbGxlZD0hMCxhd2FpdCBzLm9uQWZ0ZXJSZXNwb25zZShtLGUpKSl9aWYobS5oYW5kbGVkKXJldHVybiB2b2lkKHMub25BZnRlclJlc3BvbnNlJiYobS5fb25BZnRlclJlc3BvbnNlQ2FsbGVkPSEwLGF3YWl0IHMub25BZnRlclJlc3BvbnNlKG0sdm9pZCAwKSkpfWlmKCFtLmhhbmRsZWQpdGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZTpgQ2Fubm90IGZpbmQgYW55IHBhdGggbWF0Y2hpbmcgJHttLnBhdGh8fCIvIn0uYH0pO3Mub25BZnRlclJlc3BvbnNlJiYobS5fb25BZnRlclJlc3BvbnNlQ2FsbGVkPSEwLGF3YWl0IHMub25BZnRlclJlc3BvbnNlKG0sdm9pZCAwKSl9KX0ocyxlKSxtPWZ1bmN0aW9uKGUpe3JldHVybiBhc3luYyBzPT57bGV0IGQ7Zm9yKGNvbnN0IG0gb2YgZSl7aWYoIi8iPT09bS5yb3V0ZSYmIW0uaGFuZGxlci5fX3Jlc29sdmVfXyljb250aW51ZTtpZighcy5zdGFydHNXaXRoKG0ucm91dGUpKWNvbnRpbnVlO2lmKGQ9cy5zbGljZShtLnJvdXRlLmxlbmd0aCl8fCIvIixtLm1hdGNoJiYhbS5tYXRjaChkLHZvaWQgMCkpY29udGludWU7bGV0IGU9e3JvdXRlOm0ucm91dGUsaGFuZGxlcjptLmhhbmRsZXJ9O2lmKGUuaGFuZGxlci5fX3Jlc29sdmVfXyl7Y29uc3Qgcz1hd2FpdCBlLmhhbmRsZXIuX19yZXNvbHZlX18oZCk7aWYoIXMpY29udGludWU7ZT17Li4uZSwuLi5zLHJvdXRlOmpvaW5VUkwoZS5yb3V0ZXx8Ii8iLHMucm91dGV8fCIvIil9fXJldHVybiBlfX19KHMpO2QuX19yZXNvbHZlX189bTtjb25zdCBoPWZ1bmN0aW9uKGUpe2xldCBzO3JldHVybigpPT4oc3x8KHM9ZSgpKSxzKX0oKCk9PntyZXR1cm4gcz1tLHsuLi5lLndlYnNvY2tldCxhc3luYyByZXNvbHZlKGUpe2NvbnN0IGQ9ZS5yZXF1ZXN0Py51cmx8fGUudXJsfHwiLyIse3BhdGhuYW1lOm19PSJzdHJpbmciPT10eXBlb2YgZD9wYXJzZVVSTChkKTpkLGg9YXdhaXQgcyhtKTtyZXR1cm4gaD8uaGFuZGxlcj8uX193ZWJzb2NrZXRfX3x8e319fTt2YXIgc30pLGc9e3VzZTooZSxzLGQpPT51c2UoZyxlLHMsZCkscmVzb2x2ZTptLGhhbmRsZXI6ZCxzdGFjazpzLG9wdGlvbnM6ZSxnZXQgd2Vic29ja2V0KCl7cmV0dXJuIGgoKX19O3JldHVybiBnfWZ1bmN0aW9uIHVzZShlLHMsZCxtKXtpZihBcnJheS5pc0FycmF5KHMpKWZvcihjb25zdCBoIG9mIHMpdXNlKGUsaCxkLG0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShkKSlmb3IoY29uc3QgaCBvZiBkKXVzZShlLHMsaCxtKTtlbHNlInN0cmluZyI9PXR5cGVvZiBzP2Uuc3RhY2sucHVzaChub3JtYWxpemVMYXllcih7Li4ubSxyb3V0ZTpzLGhhbmRsZXI6ZH0pKToiZnVuY3Rpb24iPT10eXBlb2Ygcz9lLnN0YWNrLnB1c2gobm9ybWFsaXplTGF5ZXIoey4uLmQsaGFuZGxlcjpzfSkpOmUuc3RhY2sucHVzaChub3JtYWxpemVMYXllcih7Li4uc30pKTtyZXR1cm4gZX1mdW5jdGlvbiBub3JtYWxpemVMYXllcihlKXtsZXQgcz1lLmhhbmRsZXI7cmV0dXJuIHMuaGFuZGxlciYmKHM9cy5oYW5kbGVyKSxlLmxhenk/cz1sYXp5RXZlbnRIYW5kbGVyKHMpOmZ1bmN0aW9uKGUpe3JldHVybiBoYXNQcm9wKGUsIl9faXNfaGFuZGxlcl9fIil9KHMpfHwocz10b0V2ZW50SGFuZGxlcihzLDAsZS5yb3V0ZSkpLHtyb3V0ZTp3aXRob3V0VHJhaWxpbmdTbGFzaChlLnJvdXRlKSxtYXRjaDplLm1hdGNoLGhhbmRsZXI6c319ZnVuY3Rpb24gaGFuZGxlSGFuZGxlclJlc3BvbnNlKHMsZCxtKXtpZihudWxsPT09ZClyZXR1cm4gc2VuZE5vQ29udGVudChzKTtpZihkKXtpZihoPWQsInVuZGVmaW5lZCIhPXR5cGVvZiBSZXNwb25zZSYmaCBpbnN0YW5jZW9mIFJlc3BvbnNlKXJldHVybiBzZW5kV2ViUmVzcG9uc2UocyxkKTtpZihmdW5jdGlvbihlKXtpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnBpcGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLl9yZWFkKXJldHVybiEwO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmFib3J0KXJldHVybiEwfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBpcGVUb30oZCkpcmV0dXJuIHNlbmRTdHJlYW0ocyxkKTtpZihkLmJ1ZmZlcilyZXR1cm4gc2VuZChzLGQpO2lmKGQuYXJyYXlCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBkLmFycmF5QnVmZmVyKXJldHVybiBkLmFycmF5QnVmZmVyKCkudGhlbihtPT5zZW5kKHMsZS5mcm9tKG0pLGQudHlwZSkpO2lmKGQgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBjcmVhdGVFcnJvciQxKGQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkLmVuZClyZXR1cm4hMH12YXIgaDtjb25zdCBnPXR5cGVvZiBkO2lmKCJzdHJpbmciPT09ZylyZXR1cm4gc2VuZChzLGQsRG4uaHRtbCk7aWYoIm9iamVjdCI9PT1nfHwiYm9vbGVhbiI9PT1nfHwibnVtYmVyIj09PWcpcmV0dXJuIHNlbmQocyxKU09OLnN0cmluZ2lmeShkLHZvaWQgMCxtKSxEbi5qc29uKTtpZigiYmlnaW50Ij09PWcpcmV0dXJuIHNlbmQocyxkLnRvU3RyaW5nKCksRG4uanNvbik7dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo1MDAsc3RhdHVzTWVzc2FnZTpgW2gzXSBDYW5ub3Qgc2VuZCAke2d9IGFzIHJlc3BvbnNlLmB9KX1jb25zdCBNbj1bImNvbm5lY3QiLCJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyIsInBvc3QiLCJwdXQiLCJ0cmFjZSIsInBhdGNoIl07ZnVuY3Rpb24gdG9Ob2RlTGlzdGVuZXIoZSl7cmV0dXJuIGFzeW5jIGZ1bmN0aW9uKHMsZCl7Y29uc3QgbT1jcmVhdGVFdmVudChzLGQpO3RyeXthd2FpdCBlLmhhbmRsZXIobSl9Y2F0Y2gocyl7Y29uc3QgZD1jcmVhdGVFcnJvciQxKHMpO2lmKGlzRXJyb3Iocyl8fChkLnVuaGFuZGxlZD0hMCksc2V0UmVzcG9uc2VTdGF0dXMobSxkLnN0YXR1c0NvZGUsZC5zdGF0dXNNZXNzYWdlKSxlLm9wdGlvbnMub25FcnJvciYmYXdhaXQgZS5vcHRpb25zLm9uRXJyb3IoZCxtKSxtLmhhbmRsZWQpcmV0dXJuOyhkLnVuaGFuZGxlZHx8ZC5mYXRhbCkmJmNvbnNvbGUuZXJyb3IoIltoM10iLGQuZmF0YWw/IltmYXRhbF0iOiJbdW5oYW5kbGVkXSIsZCksZS5vcHRpb25zLm9uQmVmb3JlUmVzcG9uc2UmJiFtLl9vbkJlZm9yZVJlc3BvbnNlQ2FsbGVkJiZhd2FpdCBlLm9wdGlvbnMub25CZWZvcmVSZXNwb25zZShtLHtib2R5OmR9KSxhd2FpdCBmdW5jdGlvbihlLHMsZCl7aWYoZS5oYW5kbGVkKXJldHVybjtjb25zdCBtPWlzRXJyb3Iocyk/czpjcmVhdGVFcnJvciQxKHMpLGg9e3N0YXR1c0NvZGU6bS5zdGF0dXNDb2RlLHN0YXR1c01lc3NhZ2U6bS5zdGF0dXNNZXNzYWdlLHN0YWNrOltdLGRhdGE6bS5kYXRhfTtpZihkJiYoaC5zdGFjaz0obS5zdGFja3x8IiIpLnNwbGl0KCJcbiIpLm1hcChlPT5lLnRyaW0oKSkpLGUuaGFuZGxlZClyZXR1cm47c2V0UmVzcG9uc2VTdGF0dXMoZSxOdW1iZXIucGFyc2VJbnQobS5zdGF0dXNDb2RlKSxtLnN0YXR1c01lc3NhZ2UpLGUubm9kZS5yZXMuc2V0SGVhZGVyKCJjb250ZW50LXR5cGUiLERuLmpzb24pLGUubm9kZS5yZXMuZW5kKEpTT04uc3RyaW5naWZ5KGgsdm9pZCAwLDIpKX0obSxkLCEhZS5vcHRpb25zLmRlYnVnKSxlLm9wdGlvbnMub25BZnRlclJlc3BvbnNlJiYhbS5fb25BZnRlclJlc3BvbnNlQ2FsbGVkJiZhd2FpdCBlLm9wdGlvbnMub25BZnRlclJlc3BvbnNlKG0se2JvZHk6ZH0pfX19ZnVuY3Rpb24gZmxhdEhvb2tzKGUscz17fSxkKXtmb3IoY29uc3QgbSBpbiBlKXtjb25zdCBoPWVbbV0sZz1kP2Ake2R9OiR7bX1gOm07Im9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aD9mbGF0SG9va3MoaCxzLGcpOiJmdW5jdGlvbiI9PXR5cGVvZiBoJiYoc1tnXT1oKX1yZXR1cm4gc31jb25zdCBRbj17cnVuOmU9PmUoKX0sVm49dm9pZCAwIT09Y29uc29sZS5jcmVhdGVUYXNrP2NvbnNvbGUuY3JlYXRlVGFzazooKT0+UW47ZnVuY3Rpb24gc2VyaWFsVGFza0NhbGxlcihlLHMpe2NvbnN0IGQ9cy5zaGlmdCgpLG09Vm4oZCk7cmV0dXJuIGUucmVkdWNlKChlLGQpPT5lLnRoZW4oKCk9Pm0ucnVuKCgpPT5kKC4uLnMpKSksUHJvbWlzZS5yZXNvbHZlKCkpfWZ1bmN0aW9uIHBhcmFsbGVsVGFza0NhbGxlcihlLHMpe2NvbnN0IGQ9cy5zaGlmdCgpLG09Vm4oZCk7cmV0dXJuIFByb21pc2UuYWxsKGUubWFwKGU9Pm0ucnVuKCgpPT5lKC4uLnMpKSkpfWZ1bmN0aW9uIGNhbGxFYWNoV2l0aChlLHMpe2Zvcihjb25zdCBkIG9mWy4uLmVdKWQocyl9Y2xhc3MgSG9va2FibGV7Y29uc3RydWN0b3IoKXt0aGlzLl9ob29rcz17fSx0aGlzLl9iZWZvcmU9dm9pZCAwLHRoaXMuX2FmdGVyPXZvaWQgMCx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXM9dm9pZCAwLHRoaXMuX2RlcHJlY2F0ZWRIb29rcz17fSx0aGlzLmhvb2s9dGhpcy5ob29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9vaz10aGlzLmNhbGxIb29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9va1dpdGg9dGhpcy5jYWxsSG9va1dpdGguYmluZCh0aGlzKX1ob29rKGUscyxkPXt9KXtpZighZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHMpcmV0dXJuKCk9Pnt9O2NvbnN0IG09ZTtsZXQgaDtmb3IoO3RoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXTspaD10aGlzLl9kZXByZWNhdGVkSG9va3NbZV0sZT1oLnRvO2lmKGgmJiFkLmFsbG93RGVwcmVjYXRlZCl7bGV0IGU9aC5tZXNzYWdlO2V8fChlPWAke219IGhvb2sgaGFzIGJlZW4gZGVwcmVjYXRlZGArKGgudG8/YCwgcGxlYXNlIHVzZSAke2gudG99YDoiIikpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlc3x8KHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcz1uZXcgU2V0KSx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXMuaGFzKGUpfHwoY29uc29sZS53YXJuKGUpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5hZGQoZSkpfWlmKCFzLm5hbWUpdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJuYW1lIix7Z2V0OigpPT4iXyIrZS5yZXBsYWNlKC9cVysvZywiXyIpKyJfaG9va19jYiIsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2h7fXJldHVybiB0aGlzLl9ob29rc1tlXT10aGlzLl9ob29rc1tlXXx8W10sdGhpcy5faG9va3NbZV0ucHVzaChzKSwoKT0+e3MmJih0aGlzLnJlbW92ZUhvb2soZSxzKSxzPXZvaWQgMCl9fWhvb2tPbmNlKGUscyl7bGV0IGQsX2Z1bmN0aW9uPSguLi5lKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBkJiZkKCksZD12b2lkIDAsX2Z1bmN0aW9uPXZvaWQgMCxzKC4uLmUpKTtyZXR1cm4gZD10aGlzLmhvb2soZSxfZnVuY3Rpb24pLGR9cmVtb3ZlSG9vayhlLHMpe2lmKHRoaXMuX2hvb2tzW2VdKXtjb25zdCBkPXRoaXMuX2hvb2tzW2VdLmluZGV4T2Yocyk7LTEhPT1kJiZ0aGlzLl9ob29rc1tlXS5zcGxpY2UoZCwxKSwwPT09dGhpcy5faG9va3NbZV0ubGVuZ3RoJiZkZWxldGUgdGhpcy5faG9va3NbZV19fWRlcHJlY2F0ZUhvb2soZSxzKXt0aGlzLl9kZXByZWNhdGVkSG9va3NbZV09InN0cmluZyI9PXR5cGVvZiBzP3t0bzpzfTpzO2NvbnN0IGQ9dGhpcy5faG9va3NbZV18fFtdO2RlbGV0ZSB0aGlzLl9ob29rc1tlXTtmb3IoY29uc3QgcyBvZiBkKXRoaXMuaG9vayhlLHMpfWRlcHJlY2F0ZUhvb2tzKGUpe09iamVjdC5hc3NpZ24odGhpcy5fZGVwcmVjYXRlZEhvb2tzLGUpO2Zvcihjb25zdCBzIGluIGUpdGhpcy5kZXByZWNhdGVIb29rKHMsZVtzXSl9YWRkSG9va3MoZSl7Y29uc3Qgcz1mbGF0SG9va3MoZSksZD1PYmplY3Qua2V5cyhzKS5tYXAoZT0+dGhpcy5ob29rKGUsc1tlXSkpO3JldHVybigpPT57Zm9yKGNvbnN0IGUgb2YgZC5zcGxpY2UoMCxkLmxlbmd0aCkpZSgpfX1yZW1vdmVIb29rcyhlKXtjb25zdCBzPWZsYXRIb29rcyhlKTtmb3IoY29uc3QgZSBpbiBzKXRoaXMucmVtb3ZlSG9vayhlLHNbZV0pfXJlbW92ZUFsbEhvb2tzKCl7Zm9yKGNvbnN0IGUgaW4gdGhpcy5faG9va3MpZGVsZXRlIHRoaXMuX2hvb2tzW2VdfWNhbGxIb29rKGUsLi4ucyl7cmV0dXJuIHMudW5zaGlmdChlKSx0aGlzLmNhbGxIb29rV2l0aChzZXJpYWxUYXNrQ2FsbGVyLGUsLi4ucyl9Y2FsbEhvb2tQYXJhbGxlbChlLC4uLnMpe3JldHVybiBzLnVuc2hpZnQoZSksdGhpcy5jYWxsSG9va1dpdGgocGFyYWxsZWxUYXNrQ2FsbGVyLGUsLi4ucyl9Y2FsbEhvb2tXaXRoKGUscywuLi5kKXtjb25zdCBtPXRoaXMuX2JlZm9yZXx8dGhpcy5fYWZ0ZXI/e25hbWU6cyxhcmdzOmQsY29udGV4dDp7fX06dm9pZCAwO3RoaXMuX2JlZm9yZSYmY2FsbEVhY2hXaXRoKHRoaXMuX2JlZm9yZSxtKTtjb25zdCBoPWUocyBpbiB0aGlzLl9ob29rcz9bLi4udGhpcy5faG9va3Nbc11dOltdLGQpO3JldHVybiBoIGluc3RhbmNlb2YgUHJvbWlzZT9oLmZpbmFsbHkoKCk9Pnt0aGlzLl9hZnRlciYmbSYmY2FsbEVhY2hXaXRoKHRoaXMuX2FmdGVyLG0pfSk6KHRoaXMuX2FmdGVyJiZtJiZjYWxsRWFjaFdpdGgodGhpcy5fYWZ0ZXIsbSksaCl9YmVmb3JlRWFjaChlKXtyZXR1cm4gdGhpcy5fYmVmb3JlPXRoaXMuX2JlZm9yZXx8W10sdGhpcy5fYmVmb3JlLnB1c2goZSksKCk9PntpZih2b2lkIDAhPT10aGlzLl9iZWZvcmUpe2NvbnN0IHM9dGhpcy5fYmVmb3JlLmluZGV4T2YoZSk7LTEhPT1zJiZ0aGlzLl9iZWZvcmUuc3BsaWNlKHMsMSl9fX1hZnRlckVhY2goZSl7cmV0dXJuIHRoaXMuX2FmdGVyPXRoaXMuX2FmdGVyfHxbXSx0aGlzLl9hZnRlci5wdXNoKGUpLCgpPT57aWYodm9pZCAwIT09dGhpcy5fYWZ0ZXIpe2NvbnN0IHM9dGhpcy5fYWZ0ZXIuaW5kZXhPZihlKTstMSE9PXMmJnRoaXMuX2FmdGVyLnNwbGljZShzLDEpfX19fWNvbnN0IEhuPWdsb2JhbFRoaXM7Y2xhc3MgRmV0Y2hFcnJvciBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUscyl7c3VwZXIoZSxzKSx0aGlzLm5hbWU9IkZldGNoRXJyb3IiLHM/LmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9cy5jYXVzZSl9fWNvbnN0IFduPW5ldyBTZXQoT2JqZWN0LmZyZWV6ZShbIlBBVENIIiwiUE9TVCIsIlBVVCIsIkRFTEVURSJdKSk7ZnVuY3Rpb24gaXNQYXlsb2FkTWV0aG9kKGU9IkdFVCIpe3JldHVybiBXbi5oYXMoZS50b1VwcGVyQ2FzZSgpKX1jb25zdCBKbj1uZXcgU2V0KFsiaW1hZ2Uvc3ZnIiwiYXBwbGljYXRpb24veG1sIiwiYXBwbGljYXRpb24veGh0bWwiLCJhcHBsaWNhdGlvbi9odG1sIl0pLEtuPS9eYXBwbGljYXRpb25cLyg/OltcdyEjJCUmKi5eYH4tXSpcKyk/anNvbig7LispPyQvaTtmdW5jdGlvbiByZXNvbHZlRmV0Y2hPcHRpb25zKGUscyxkLG0pe2NvbnN0IGg9ZnVuY3Rpb24oZSxzLGQpe2lmKCFzKXJldHVybiBuZXcgZChlKTtjb25zdCBtPW5ldyBkKHMpO2lmKGUpZm9yKGNvbnN0W3MsaF1vZiBTeW1ib2wuaXRlcmF0b3IgaW4gZXx8QXJyYXkuaXNBcnJheShlKT9lOm5ldyBkKGUpKW0uc2V0KHMsaCk7cmV0dXJuIG19KHM/LmhlYWRlcnM/P2U/LmhlYWRlcnMsZD8uaGVhZGVycyxtKTtsZXQgZztyZXR1cm4oZD8ucXVlcnl8fGQ/LnBhcmFtc3x8cz8ucGFyYW1zfHxzPy5xdWVyeSkmJihnPXsuLi5kPy5wYXJhbXMsLi4uZD8ucXVlcnksLi4ucz8ucGFyYW1zLC4uLnM/LnF1ZXJ5fSksey4uLmQsLi4ucyxxdWVyeTpnLHBhcmFtczpnLGhlYWRlcnM6aH19YXN5bmMgZnVuY3Rpb24gY2FsbEhvb2tzKGUscyl7aWYocylpZihBcnJheS5pc0FycmF5KHMpKWZvcihjb25zdCBkIG9mIHMpYXdhaXQgZChlKTtlbHNlIGF3YWl0IHMoZSl9Y29uc3QgR249bmV3IFNldChbNDA4LDQwOSw0MjUsNDI5LDUwMCw1MDIsNTAzLDUwNF0pLFhuPW5ldyBTZXQoWzEwMSwyMDQsMjA1LDMwNF0pO2Z1bmN0aW9uIGNyZWF0ZUZldGNoKGU9e30pe2NvbnN0e2ZldGNoOnM9Z2xvYmFsVGhpcy5mZXRjaCxIZWFkZXJzOmQ9Z2xvYmFsVGhpcy5IZWFkZXJzLEFib3J0Q29udHJvbGxlcjptPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyfT1lO2FzeW5jIGZ1bmN0aW9uIG9uRXJyb3IoZSl7Y29uc3Qgcz1lLmVycm9yJiYiQWJvcnRFcnJvciI9PT1lLmVycm9yLm5hbWUmJiFlLm9wdGlvbnMudGltZW91dHx8ITE7aWYoITEhPT1lLm9wdGlvbnMucmV0cnkmJiFzKXtsZXQgcztzPSJudW1iZXIiPT10eXBlb2YgZS5vcHRpb25zLnJldHJ5P2Uub3B0aW9ucy5yZXRyeTppc1BheWxvYWRNZXRob2QoZS5vcHRpb25zLm1ldGhvZCk/MDoxO2NvbnN0IGQ9ZS5yZXNwb25zZSYmZS5yZXNwb25zZS5zdGF0dXN8fDUwMDtpZihzPjAmJihBcnJheS5pc0FycmF5KGUub3B0aW9ucy5yZXRyeVN0YXR1c0NvZGVzKT9lLm9wdGlvbnMucmV0cnlTdGF0dXNDb2Rlcy5pbmNsdWRlcyhkKTpHbi5oYXMoZCkpKXtjb25zdCBkPSJmdW5jdGlvbiI9PXR5cGVvZiBlLm9wdGlvbnMucmV0cnlEZWxheT9lLm9wdGlvbnMucmV0cnlEZWxheShlKTplLm9wdGlvbnMucmV0cnlEZWxheXx8MDtyZXR1cm4gZD4wJiZhd2FpdCBuZXcgUHJvbWlzZShlPT5zZXRUaW1lb3V0KGUsZCkpLCRmZXRjaFJhdyhlLnJlcXVlc3Qsey4uLmUub3B0aW9ucyxyZXRyeTpzLTF9KX19Y29uc3QgZD1mdW5jdGlvbihlKXtjb25zdCBzPWUuZXJyb3I/Lm1lc3NhZ2V8fGUuZXJyb3I/LnRvU3RyaW5nKCl8fCIiLGQ9ZS5yZXF1ZXN0Py5tZXRob2R8fGUub3B0aW9ucz8ubWV0aG9kfHwiR0VUIixtPWUucmVxdWVzdD8udXJsfHxTdHJpbmcoZS5yZXF1ZXN0KXx8Ii8iLGg9YFske2R9XSAke0pTT04uc3RyaW5naWZ5KG0pfWAsZz1lLnJlc3BvbnNlP2Ake2UucmVzcG9uc2Uuc3RhdHVzfSAke2UucmVzcG9uc2Uuc3RhdHVzVGV4dH1gOiI8bm8gcmVzcG9uc2U+Iix4PW5ldyBGZXRjaEVycm9yKGAke2h9OiAke2d9JHtzP2AgJHtzfWA6IiJ9YCxlLmVycm9yP3tjYXVzZTplLmVycm9yfTp2b2lkIDApO2Zvcihjb25zdCBzIG9mWyJyZXF1ZXN0Iiwib3B0aW9ucyIsInJlc3BvbnNlIl0pT2JqZWN0LmRlZmluZVByb3BlcnR5KHgscyx7Z2V0OigpPT5lW3NdfSk7Zm9yKGNvbnN0W3MsZF1vZltbImRhdGEiLCJfZGF0YSJdLFsic3RhdHVzIiwic3RhdHVzIl0sWyJzdGF0dXNDb2RlIiwic3RhdHVzIl0sWyJzdGF0dXNUZXh0Iiwic3RhdHVzVGV4dCJdLFsic3RhdHVzTWVzc2FnZSIsInN0YXR1c1RleHQiXV0pT2JqZWN0LmRlZmluZVByb3BlcnR5KHgscyx7Z2V0OigpPT5lLnJlc3BvbnNlJiZlLnJlc3BvbnNlW2RdfSk7cmV0dXJuIHh9KGUpO3Rocm93IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShkLCRmZXRjaFJhdyksZH1jb25zdCAkZmV0Y2hSYXc9YXN5bmMgZnVuY3Rpb24oaCxnPXt9KXtjb25zdCB4PXtyZXF1ZXN0Omgsb3B0aW9uczpyZXNvbHZlRmV0Y2hPcHRpb25zKGgsZyxlLmRlZmF1bHRzLGQpLHJlc3BvbnNlOnZvaWQgMCxlcnJvcjp2b2lkIDB9O2lmKHgub3B0aW9ucy5tZXRob2QmJih4Lm9wdGlvbnMubWV0aG9kPXgub3B0aW9ucy5tZXRob2QudG9VcHBlckNhc2UoKSkseC5vcHRpb25zLm9uUmVxdWVzdCYmKGF3YWl0IGNhbGxIb29rcyh4LHgub3B0aW9ucy5vblJlcXVlc3QpLHgub3B0aW9ucy5oZWFkZXJzIGluc3RhbmNlb2YgZHx8KHgub3B0aW9ucy5oZWFkZXJzPW5ldyBkKHgub3B0aW9ucy5oZWFkZXJzfHx7fSkpKSwic3RyaW5nIj09dHlwZW9mIHgucmVxdWVzdCYmKHgub3B0aW9ucy5iYXNlVVJMJiYoeC5yZXF1ZXN0PWZ1bmN0aW9uKGUscyl7aWYoaXNFbXB0eVVSTChzKXx8aGFzUHJvdG9jb2woZSkpcmV0dXJuIGU7Y29uc3QgZD13aXRob3V0VHJhaWxpbmdTbGFzaChzKTtpZihlLnN0YXJ0c1dpdGgoZCkpe2NvbnN0IHM9ZVtkLmxlbmd0aF07aWYoIXN8fCIvIj09PXN8fCI/Ij09PXMpcmV0dXJuIGV9cmV0dXJuIGpvaW5VUkwoZCxlKX0oeC5yZXF1ZXN0LHgub3B0aW9ucy5iYXNlVVJMKSkseC5vcHRpb25zLnF1ZXJ5JiYoeC5yZXF1ZXN0PXdpdGhRdWVyeSh4LnJlcXVlc3QseC5vcHRpb25zLnF1ZXJ5KSxkZWxldGUgeC5vcHRpb25zLnF1ZXJ5KSwicXVlcnkiaW4geC5vcHRpb25zJiZkZWxldGUgeC5vcHRpb25zLnF1ZXJ5LCJwYXJhbXMiaW4geC5vcHRpb25zJiZkZWxldGUgeC5vcHRpb25zLnBhcmFtcykseC5vcHRpb25zLmJvZHkmJmlzUGF5bG9hZE1ldGhvZCh4Lm9wdGlvbnMubWV0aG9kKSlpZihmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiExO2NvbnN0IHM9dHlwZW9mIGU7cmV0dXJuInN0cmluZyI9PT1zfHwibnVtYmVyIj09PXN8fCJib29sZWFuIj09PXN8fG51bGw9PT1zfHwib2JqZWN0Ij09PXMmJighIUFycmF5LmlzQXJyYXkoZSl8fCFlLmJ1ZmZlciYmIShlIGluc3RhbmNlb2YgRm9ybURhdGF8fGUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpJiYoZS5jb25zdHJ1Y3RvciYmIk9iamVjdCI9PT1lLmNvbnN0cnVjdG9yLm5hbWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvSlNPTikpfSh4Lm9wdGlvbnMuYm9keSkpe2NvbnN0IGU9eC5vcHRpb25zLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKTsic3RyaW5nIiE9dHlwZW9mIHgub3B0aW9ucy5ib2R5JiYoeC5vcHRpb25zLmJvZHk9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI9PT1lP25ldyBVUkxTZWFyY2hQYXJhbXMoeC5vcHRpb25zLmJvZHkpLnRvU3RyaW5nKCk6SlNPTi5zdHJpbmdpZnkoeC5vcHRpb25zLmJvZHkpKSxlfHx4Lm9wdGlvbnMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSx4Lm9wdGlvbnMuaGVhZGVycy5oYXMoImFjY2VwdCIpfHx4Lm9wdGlvbnMuaGVhZGVycy5zZXQoImFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKX1lbHNlKCJwaXBlVG8iaW4geC5vcHRpb25zLmJvZHkmJiJmdW5jdGlvbiI9PXR5cGVvZiB4Lm9wdGlvbnMuYm9keS5waXBlVG98fCJmdW5jdGlvbiI9PXR5cGVvZiB4Lm9wdGlvbnMuYm9keS5waXBlKSYmKCJkdXBsZXgiaW4geC5vcHRpb25zfHwoeC5vcHRpb25zLmR1cGxleD0iaGFsZiIpKTtsZXQgJDtpZigheC5vcHRpb25zLnNpZ25hbCYmeC5vcHRpb25zLnRpbWVvdXQpe2NvbnN0IGU9bmV3IG07JD1zZXRUaW1lb3V0KCgpPT57Y29uc3Qgcz1uZXcgRXJyb3IoIltUaW1lb3V0RXJyb3JdOiBUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aW1lb3V0Iik7cy5uYW1lPSJUaW1lb3V0RXJyb3IiLHMuY29kZT0yMyxlLmFib3J0KHMpfSx4Lm9wdGlvbnMudGltZW91dCkseC5vcHRpb25zLnNpZ25hbD1lLnNpZ25hbH10cnl7eC5yZXNwb25zZT1hd2FpdCBzKHgucmVxdWVzdCx4Lm9wdGlvbnMpfWNhdGNoKGUpe3JldHVybiB4LmVycm9yPWUseC5vcHRpb25zLm9uUmVxdWVzdEVycm9yJiZhd2FpdCBjYWxsSG9va3MoeCx4Lm9wdGlvbnMub25SZXF1ZXN0RXJyb3IpLGF3YWl0IG9uRXJyb3IoeCl9ZmluYWxseXskJiZjbGVhclRpbWVvdXQoJCl9aWYoKHgucmVzcG9uc2UuYm9keXx8eC5yZXNwb25zZS5fYm9keUluaXQpJiYhWG4uaGFzKHgucmVzcG9uc2Uuc3RhdHVzKSYmIkhFQUQiIT09eC5vcHRpb25zLm1ldGhvZCl7Y29uc3QgZT0oeC5vcHRpb25zLnBhcnNlUmVzcG9uc2U/Impzb24iOngub3B0aW9ucy5yZXNwb25zZVR5cGUpfHxmdW5jdGlvbihlPSIiKXtpZighZSlyZXR1cm4ianNvbiI7Y29uc3Qgcz1lLnNwbGl0KCI7Iikuc2hpZnQoKXx8IiI7cmV0dXJuIEtuLnRlc3Qocyk/Impzb24iOiJ0ZXh0L2V2ZW50LXN0cmVhbSI9PT1zPyJzdHJlYW0iOkpuLmhhcyhzKXx8cy5zdGFydHNXaXRoKCJ0ZXh0LyIpPyJ0ZXh0IjoiYmxvYiJ9KHgucmVzcG9uc2UuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpfHwiIik7c3dpdGNoKGUpe2Nhc2UianNvbiI6e2NvbnN0IGU9YXdhaXQgeC5yZXNwb25zZS50ZXh0KCkscz14Lm9wdGlvbnMucGFyc2VSZXNwb25zZXx8ZGVzdHI7eC5yZXNwb25zZS5fZGF0YT1zKGUpO2JyZWFrfWNhc2Uic3RyZWFtIjp4LnJlc3BvbnNlLl9kYXRhPXgucmVzcG9uc2UuYm9keXx8eC5yZXNwb25zZS5fYm9keUluaXQ7YnJlYWs7ZGVmYXVsdDp4LnJlc3BvbnNlLl9kYXRhPWF3YWl0IHgucmVzcG9uc2VbZV0oKX19cmV0dXJuIHgub3B0aW9ucy5vblJlc3BvbnNlJiZhd2FpdCBjYWxsSG9va3MoeCx4Lm9wdGlvbnMub25SZXNwb25zZSksIXgub3B0aW9ucy5pZ25vcmVSZXNwb25zZUVycm9yJiZ4LnJlc3BvbnNlLnN0YXR1cz49NDAwJiZ4LnJlc3BvbnNlLnN0YXR1czw2MDA/KHgub3B0aW9ucy5vblJlc3BvbnNlRXJyb3ImJmF3YWl0IGNhbGxIb29rcyh4LHgub3B0aW9ucy5vblJlc3BvbnNlRXJyb3IpLGF3YWl0IG9uRXJyb3IoeCkpOngucmVzcG9uc2V9LCRmZXRjaD1hc3luYyBmdW5jdGlvbihlLHMpe3JldHVybihhd2FpdCAkZmV0Y2hSYXcoZSxzKSkuX2RhdGF9O3JldHVybiAkZmV0Y2gucmF3PSRmZXRjaFJhdywkZmV0Y2gubmF0aXZlPSguLi5lKT0+cyguLi5lKSwkZmV0Y2guY3JlYXRlPShzPXt9LGQ9e30pPT5jcmVhdGVGZXRjaCh7Li4uZSwuLi5kLGRlZmF1bHRzOnsuLi5lLmRlZmF1bHRzLC4uLmQuZGVmYXVsdHMsLi4uc319KSwkZmV0Y2h9Y29uc3QgWW49ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmKXJldHVybiBzZWxmO2lmKHZvaWQgMCE9PUhuKXJldHVybiBIbjt0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBsb2NhdGUgZ2xvYmFsIG9iamVjdCIpfSgpLGVpPVluLmZldGNoPyguLi5lKT0+WW4uZmV0Y2goLi4uZSk6KCk9PlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiW29mZXRjaF0gZ2xvYmFsLmZldGNoIGlzIG5vdCBzdXBwb3J0ZWQhIikpLHRpPVluLkhlYWRlcnMsbmk9WW4uQWJvcnRDb250cm9sbGVyLGlpPWNyZWF0ZUZldGNoKHtmZXRjaDplaSxIZWFkZXJzOnRpLEFib3J0Q29udHJvbGxlcjpuaX0pO2Z1bmN0aW9uIGFzeW5jQ2FsbChlLC4uLnMpe3RyeXtyZXR1cm4oZD1lKC4uLnMpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGQudGhlbj9kOlByb21pc2UucmVzb2x2ZShkKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9dmFyIGR9ZnVuY3Rpb24gc3RyaW5naWZ5KGUpe2lmKGZ1bmN0aW9uKGUpe2NvbnN0IHM9dHlwZW9mIGU7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9PXMmJiJmdW5jdGlvbiIhPT1zfShlKSlyZXR1cm4gU3RyaW5nKGUpO2lmKGZ1bmN0aW9uKGUpe2NvbnN0IHM9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiFzfHxzLmlzUHJvdG90eXBlT2YoT2JqZWN0KX0oZSl8fEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvSlNPTilyZXR1cm4gc3RyaW5naWZ5KGUudG9KU09OKCkpO3Rocm93IG5ldyBFcnJvcigiW3Vuc3RvcmFnZV0gQ2Fubm90IHN0cmluZ2lmeSB2YWx1ZSEiKX1jb25zdCByaT0iYmFzZTY0OiI7ZnVuY3Rpb24gc2VyaWFsaXplUmF3KHMpe3JldHVybiJzdHJpbmciPT10eXBlb2Ygcz9zOnJpK2Z1bmN0aW9uKHMpe2lmKGdsb2JhbFRoaXMuQnVmZmVyKXJldHVybiBlLmZyb20ocykudG9TdHJpbmcoImJhc2U2NCIpO3JldHVybiBnbG9iYWxUaGlzLmJ0b2EoU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucykpfShzKX1mdW5jdGlvbiBkZXNlcmlhbGl6ZVJhdyhzKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHM/czpzLnN0YXJ0c1dpdGgocmkpP2Z1bmN0aW9uKHMpe2lmKGdsb2JhbFRoaXMuQnVmZmVyKXJldHVybiBlLmZyb20ocywiYmFzZTY0Iik7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShnbG9iYWxUaGlzLmF0b2IocyksZT0+ZS5jb2RlUG9pbnRBdCgwKSl9KHMuc2xpY2UoNykpOnN9Y29uc3Qgb2k9WyJoYXMiLCJoYXNJdGVtIiwiZ2V0IiwiZ2V0SXRlbSIsImdldEl0ZW1SYXciLCJzZXQiLCJzZXRJdGVtIiwic2V0SXRlbVJhdyIsImRlbCIsInJlbW92ZSIsInJlbW92ZUl0ZW0iLCJnZXRNZXRhIiwic2V0TWV0YSIsInJlbW92ZU1ldGEiLCJnZXRLZXlzIiwiY2xlYXIiLCJtb3VudCIsInVubW91bnQiXTtmdW5jdGlvbiBub3JtYWxpemVLZXkkMihlKXtyZXR1cm4gZSYmZS5zcGxpdCgiPyIpWzBdPy5yZXBsYWNlKC9bL1xcXS9nLCI6IikucmVwbGFjZSgvOisvZywiOiIpLnJlcGxhY2UoL146fDokL2csIiIpfHwiIn1mdW5jdGlvbiBqb2luS2V5cyQxKC4uLmUpe3JldHVybiBub3JtYWxpemVLZXkkMihlLmpvaW4oIjoiKSl9ZnVuY3Rpb24gbm9ybWFsaXplQmFzZUtleShlKXtyZXR1cm4oZT1ub3JtYWxpemVLZXkkMihlKSk/ZSsiOiI6IiJ9Y29uc3QgbWVtb3J5PSgpPT57Y29uc3QgZT1uZXcgTWFwO3JldHVybntuYW1lOiJtZW1vcnkiLGdldEluc3RhbmNlOigpPT5lLGhhc0l0ZW06cz0+ZS5oYXMocyksZ2V0SXRlbTpzPT5lLmdldChzKT8/bnVsbCxnZXRJdGVtUmF3OnM9PmUuZ2V0KHMpPz9udWxsLHNldEl0ZW0ocyxkKXtlLnNldChzLGQpfSxzZXRJdGVtUmF3KHMsZCl7ZS5zZXQocyxkKX0scmVtb3ZlSXRlbShzKXtlLmRlbGV0ZShzKX0sZ2V0S2V5czooKT0+Wy4uLmUua2V5cygpXSxjbGVhcigpe2UuY2xlYXIoKX0sZGlzcG9zZSgpe2UuY2xlYXIoKX19fTtmdW5jdGlvbiBjcmVhdGVTdG9yYWdlKGU9e30pe2NvbnN0IHM9e21vdW50czp7IiI6ZS5kcml2ZXJ8fG1lbW9yeSgpfSxtb3VudHBvaW50czpbIiJdLHdhdGNoaW5nOiExLHdhdGNoTGlzdGVuZXJzOltdLHVud2F0Y2g6e319LGdldE1vdW50PWU9Pntmb3IoY29uc3QgZCBvZiBzLm1vdW50cG9pbnRzKWlmKGUuc3RhcnRzV2l0aChkKSlyZXR1cm57YmFzZTpkLHJlbGF0aXZlS2V5OmUuc2xpY2UoZC5sZW5ndGgpLGRyaXZlcjpzLm1vdW50c1tkXX07cmV0dXJue2Jhc2U6IiIscmVsYXRpdmVLZXk6ZSxkcml2ZXI6cy5tb3VudHNbIiJdfX0sZ2V0TW91bnRzPShlLGQpPT5zLm1vdW50cG9pbnRzLmZpbHRlcihzPT5zLnN0YXJ0c1dpdGgoZSl8fGQmJmUuc3RhcnRzV2l0aChzKSkubWFwKGQ9Pih7cmVsYXRpdmVCYXNlOmUubGVuZ3RoPmQubGVuZ3RoP2Uuc2xpY2UoZC5sZW5ndGgpOnZvaWQgMCxtb3VudHBvaW50OmQsZHJpdmVyOnMubW91bnRzW2RdfSkpLG9uQ2hhbmdlPShlLGQpPT57aWYocy53YXRjaGluZyl7ZD1ub3JtYWxpemVLZXkkMihkKTtmb3IoY29uc3QgbSBvZiBzLndhdGNoTGlzdGVuZXJzKW0oZSxkKX19LHN0b3BXYXRjaD1hc3luYygpPT57aWYocy53YXRjaGluZyl7Zm9yKGNvbnN0IGUgaW4gcy51bndhdGNoKWF3YWl0IHMudW53YXRjaFtlXSgpO3MudW53YXRjaD17fSxzLndhdGNoaW5nPSExfX0scnVuQmF0Y2g9KGUscyxkKT0+e2NvbnN0IG09bmV3IE1hcCxnZXRCYXRjaD1lPT57bGV0IHM9bS5nZXQoZS5iYXNlKTtyZXR1cm4gc3x8KHM9e2RyaXZlcjplLmRyaXZlcixiYXNlOmUuYmFzZSxpdGVtczpbXX0sbS5zZXQoZS5iYXNlLHMpKSxzfTtmb3IoY29uc3QgZCBvZiBlKXtjb25zdCBlPSJzdHJpbmciPT10eXBlb2YgZCxtPW5vcm1hbGl6ZUtleSQyKGU/ZDpkLmtleSksaD1lP3ZvaWQgMDpkLnZhbHVlLGc9ZXx8IWQub3B0aW9ucz9zOnsuLi5zLC4uLmQub3B0aW9uc30seD1nZXRNb3VudChtKTtnZXRCYXRjaCh4KS5pdGVtcy5wdXNoKHtrZXk6bSx2YWx1ZTpoLHJlbGF0aXZlS2V5OngucmVsYXRpdmVLZXksb3B0aW9uczpnfSl9cmV0dXJuIFByb21pc2UuYWxsKFsuLi5tLnZhbHVlcygpXS5tYXAoZT0+ZChlKSkpLnRoZW4oZT0+ZS5mbGF0KCkpfSxkPXtoYXNJdGVtKGUscz17fSl7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpkLGRyaXZlcjptfT1nZXRNb3VudChlKTtyZXR1cm4gYXN5bmNDYWxsKG0uaGFzSXRlbSxkLHMpfSxnZXRJdGVtKGUscz17fSl7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpkLGRyaXZlcjptfT1nZXRNb3VudChlKTtyZXR1cm4gYXN5bmNDYWxsKG0uZ2V0SXRlbSxkLHMpLnRoZW4oZT0+ZGVzdHIoZSkpfSxnZXRJdGVtczooZSxzPXt9KT0+cnVuQmF0Y2goZSxzLGU9PmUuZHJpdmVyLmdldEl0ZW1zP2FzeW5jQ2FsbChlLmRyaXZlci5nZXRJdGVtcyxlLml0ZW1zLm1hcChlPT4oe2tleTplLnJlbGF0aXZlS2V5LG9wdGlvbnM6ZS5vcHRpb25zfSkpLHMpLnRoZW4ocz0+cy5tYXAocz0+KHtrZXk6am9pbktleXMkMShlLmJhc2Uscy5rZXkpLHZhbHVlOmRlc3RyKHMudmFsdWUpfSkpKTpQcm9taXNlLmFsbChlLml0ZW1zLm1hcChzPT5hc3luY0NhbGwoZS5kcml2ZXIuZ2V0SXRlbSxzLnJlbGF0aXZlS2V5LHMub3B0aW9ucykudGhlbihlPT4oe2tleTpzLmtleSx2YWx1ZTpkZXN0cihlKX0pKSkpKSxnZXRJdGVtUmF3KGUscz17fSl7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpkLGRyaXZlcjptfT1nZXRNb3VudChlKTtyZXR1cm4gbS5nZXRJdGVtUmF3P2FzeW5jQ2FsbChtLmdldEl0ZW1SYXcsZCxzKTphc3luY0NhbGwobS5nZXRJdGVtLGQscykudGhlbihlPT5kZXNlcmlhbGl6ZVJhdyhlKSl9LGFzeW5jIHNldEl0ZW0oZSxzLG09e30pe2lmKHZvaWQgMD09PXMpcmV0dXJuIGQucmVtb3ZlSXRlbShlKTtlPW5vcm1hbGl6ZUtleSQyKGUpO2NvbnN0e3JlbGF0aXZlS2V5OmgsZHJpdmVyOmd9PWdldE1vdW50KGUpO2cuc2V0SXRlbSYmKGF3YWl0IGFzeW5jQ2FsbChnLnNldEl0ZW0saCxzdHJpbmdpZnkocyksbSksZy53YXRjaHx8b25DaGFuZ2UoInVwZGF0ZSIsZSkpfSxhc3luYyBzZXRJdGVtcyhlLHMpe2F3YWl0IHJ1bkJhdGNoKGUscyxhc3luYyBlPT57aWYoZS5kcml2ZXIuc2V0SXRlbXMpcmV0dXJuIGFzeW5jQ2FsbChlLmRyaXZlci5zZXRJdGVtcyxlLml0ZW1zLm1hcChlPT4oe2tleTplLnJlbGF0aXZlS2V5LHZhbHVlOnN0cmluZ2lmeShlLnZhbHVlKSxvcHRpb25zOmUub3B0aW9uc30pKSxzKTtlLmRyaXZlci5zZXRJdGVtJiZhd2FpdCBQcm9taXNlLmFsbChlLml0ZW1zLm1hcChzPT5hc3luY0NhbGwoZS5kcml2ZXIuc2V0SXRlbSxzLnJlbGF0aXZlS2V5LHN0cmluZ2lmeShzLnZhbHVlKSxzLm9wdGlvbnMpKSl9KX0sYXN5bmMgc2V0SXRlbVJhdyhlLHMsbT17fSl7aWYodm9pZCAwPT09cylyZXR1cm4gZC5yZW1vdmVJdGVtKGUsbSk7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpoLGRyaXZlcjpnfT1nZXRNb3VudChlKTtpZihnLnNldEl0ZW1SYXcpYXdhaXQgYXN5bmNDYWxsKGcuc2V0SXRlbVJhdyxoLHMsbSk7ZWxzZXtpZighZy5zZXRJdGVtKXJldHVybjthd2FpdCBhc3luY0NhbGwoZy5zZXRJdGVtLGgsc2VyaWFsaXplUmF3KHMpLG0pfWcud2F0Y2h8fG9uQ2hhbmdlKCJ1cGRhdGUiLGUpfSxhc3luYyByZW1vdmVJdGVtKGUscz17fSl7ImJvb2xlYW4iPT10eXBlb2YgcyYmKHM9e3JlbW92ZU1ldGE6c30pLGU9bm9ybWFsaXplS2V5JDIoZSk7Y29uc3R7cmVsYXRpdmVLZXk6ZCxkcml2ZXI6bX09Z2V0TW91bnQoZSk7bS5yZW1vdmVJdGVtJiYoYXdhaXQgYXN5bmNDYWxsKG0ucmVtb3ZlSXRlbSxkLHMpLChzLnJlbW92ZU1ldGF8fHMucmVtb3ZlTWF0YSkmJmF3YWl0IGFzeW5jQ2FsbChtLnJlbW92ZUl0ZW0sZCsiJCIscyksbS53YXRjaHx8b25DaGFuZ2UoInJlbW92ZSIsZSkpfSxhc3luYyBnZXRNZXRhKGUscz17fSl7ImJvb2xlYW4iPT10eXBlb2YgcyYmKHM9e25hdGl2ZU9ubHk6c30pLGU9bm9ybWFsaXplS2V5JDIoZSk7Y29uc3R7cmVsYXRpdmVLZXk6ZCxkcml2ZXI6bX09Z2V0TW91bnQoZSksaD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKG0uZ2V0TWV0YSYmT2JqZWN0LmFzc2lnbihoLGF3YWl0IGFzeW5jQ2FsbChtLmdldE1ldGEsZCxzKSksIXMubmF0aXZlT25seSl7Y29uc3QgZT1hd2FpdCBhc3luY0NhbGwobS5nZXRJdGVtLGQrIiQiLHMpLnRoZW4oZT0+ZGVzdHIoZSkpO2UmJiJvYmplY3QiPT10eXBlb2YgZSYmKCJzdHJpbmciPT10eXBlb2YgZS5hdGltZSYmKGUuYXRpbWU9bmV3IERhdGUoZS5hdGltZSkpLCJzdHJpbmciPT10eXBlb2YgZS5tdGltZSYmKGUubXRpbWU9bmV3IERhdGUoZS5tdGltZSkpLE9iamVjdC5hc3NpZ24oaCxlKSl9cmV0dXJuIGh9LHNldE1ldGEoZSxzLGQ9e30pe3JldHVybiB0aGlzLnNldEl0ZW0oZSsiJCIscyxkKX0scmVtb3ZlTWV0YShlLHM9e30pe3JldHVybiB0aGlzLnJlbW92ZUl0ZW0oZSsiJCIscyl9LGFzeW5jIGdldEtleXMoZSxzPXt9KXtlPW5vcm1hbGl6ZUJhc2VLZXkoZSk7Y29uc3QgZD1nZXRNb3VudHMoZSwhMCk7bGV0IG09W107Y29uc3QgaD1bXTtsZXQgZz0hMDtmb3IoY29uc3QgZSBvZiBkKXtlLmRyaXZlci5mbGFncz8ubWF4RGVwdGh8fChnPSExKTtjb25zdCBkPWF3YWl0IGFzeW5jQ2FsbChlLmRyaXZlci5nZXRLZXlzLGUucmVsYXRpdmVCYXNlLHMpO2Zvcihjb25zdCBzIG9mIGQpe2NvbnN0IGQ9ZS5tb3VudHBvaW50K25vcm1hbGl6ZUtleSQyKHMpO20uc29tZShlPT5kLnN0YXJ0c1dpdGgoZSkpfHxoLnB1c2goZCl9bT1bZS5tb3VudHBvaW50LC4uLm0uZmlsdGVyKHM9PiFzLnN0YXJ0c1dpdGgoZS5tb3VudHBvaW50KSldfWNvbnN0IHg9dm9pZCAwIT09cy5tYXhEZXB0aCYmIWc7cmV0dXJuIGguZmlsdGVyKGQ9PigheHx8ZnVuY3Rpb24oZSxzKXtpZih2b2lkIDA9PT1zKXJldHVybiEwO2xldCBkPTAsbT1lLmluZGV4T2YoIjoiKTtmb3IoO20+LTE7KWQrKyxtPWUuaW5kZXhPZigiOiIsbSsxKTtyZXR1cm4gZDw9c30oZCxzLm1heERlcHRoKSkmJmZ1bmN0aW9uKGUscyl7cmV0dXJuIHM/ZS5zdGFydHNXaXRoKHMpJiYiJCIhPT1lW2UubGVuZ3RoLTFdOiIkIiE9PWVbZS5sZW5ndGgtMV19KGQsZSkpfSxhc3luYyBjbGVhcihlLHM9e30pe2U9bm9ybWFsaXplQmFzZUtleShlKSxhd2FpdCBQcm9taXNlLmFsbChnZXRNb3VudHMoZSwhMSkubWFwKGFzeW5jIGU9PntpZihlLmRyaXZlci5jbGVhcilyZXR1cm4gYXN5bmNDYWxsKGUuZHJpdmVyLmNsZWFyLGUucmVsYXRpdmVCYXNlLHMpO2lmKGUuZHJpdmVyLnJlbW92ZUl0ZW0pe2NvbnN0IGQ9YXdhaXQgZS5kcml2ZXIuZ2V0S2V5cyhlLnJlbGF0aXZlQmFzZXx8IiIscyk7cmV0dXJuIFByb21pc2UuYWxsKGQubWFwKGQ9PmUuZHJpdmVyLnJlbW92ZUl0ZW0oZCxzKSkpfX0pKX0sYXN5bmMgZGlzcG9zZSgpe2F3YWl0IFByb21pc2UuYWxsKE9iamVjdC52YWx1ZXMocy5tb3VudHMpLm1hcChlPT5kaXNwb3NlKGUpKSl9LHdhdGNoOmFzeW5jIGU9Pihhd2FpdChhc3luYygpPT57aWYoIXMud2F0Y2hpbmcpe3Mud2F0Y2hpbmc9ITA7Zm9yKGNvbnN0IGUgaW4gcy5tb3VudHMpcy51bndhdGNoW2VdPWF3YWl0IHdhdGNoKHMubW91bnRzW2VdLG9uQ2hhbmdlLGUpfX0pKCkscy53YXRjaExpc3RlbmVycy5wdXNoKGUpLGFzeW5jKCk9PntzLndhdGNoTGlzdGVuZXJzPXMud2F0Y2hMaXN0ZW5lcnMuZmlsdGVyKHM9PnMhPT1lKSwwPT09cy53YXRjaExpc3RlbmVycy5sZW5ndGgmJmF3YWl0IHN0b3BXYXRjaCgpfSksYXN5bmMgdW53YXRjaCgpe3Mud2F0Y2hMaXN0ZW5lcnM9W10sYXdhaXQgc3RvcFdhdGNoKCl9LG1vdW50KGUsbSl7aWYoKGU9bm9ybWFsaXplQmFzZUtleShlKSkmJnMubW91bnRzW2VdKXRocm93IG5ldyBFcnJvcihgYWxyZWFkeSBtb3VudGVkIGF0ICR7ZX1gKTtyZXR1cm4gZSYmKHMubW91bnRwb2ludHMucHVzaChlKSxzLm1vdW50cG9pbnRzLnNvcnQoKGUscyk9PnMubGVuZ3RoLWUubGVuZ3RoKSkscy5tb3VudHNbZV09bSxzLndhdGNoaW5nJiZQcm9taXNlLnJlc29sdmUod2F0Y2gobSxvbkNoYW5nZSxlKSkudGhlbihkPT57cy51bndhdGNoW2VdPWR9KS5jYXRjaChjb25zb2xlLmVycm9yKSxkfSxhc3luYyB1bm1vdW50KGUsZD0hMCl7KGU9bm9ybWFsaXplQmFzZUtleShlKSkmJnMubW91bnRzW2VdJiYocy53YXRjaGluZyYmZSBpbiBzLnVud2F0Y2gmJihzLnVud2F0Y2hbZV0/LigpLGRlbGV0ZSBzLnVud2F0Y2hbZV0pLGQmJmF3YWl0IGRpc3Bvc2Uocy5tb3VudHNbZV0pLHMubW91bnRwb2ludHM9cy5tb3VudHBvaW50cy5maWx0ZXIocz0+cyE9PWUpLGRlbGV0ZSBzLm1vdW50c1tlXSl9LGdldE1vdW50KGU9IiIpe2U9bm9ybWFsaXplS2V5JDIoZSkrIjoiO2NvbnN0IHM9Z2V0TW91bnQoZSk7cmV0dXJue2RyaXZlcjpzLmRyaXZlcixiYXNlOnMuYmFzZX19LGdldE1vdW50cyhlPSIiLHM9e30pe2U9bm9ybWFsaXplS2V5JDIoZSk7cmV0dXJuIGdldE1vdW50cyhlLHMucGFyZW50cykubWFwKGU9Pih7ZHJpdmVyOmUuZHJpdmVyLGJhc2U6ZS5tb3VudHBvaW50fSkpfSxrZXlzOihlLHM9e30pPT5kLmdldEtleXMoZSxzKSxnZXQ6KGUscz17fSk9PmQuZ2V0SXRlbShlLHMpLHNldDooZSxzLG09e30pPT5kLnNldEl0ZW0oZSxzLG0pLGhhczooZSxzPXt9KT0+ZC5oYXNJdGVtKGUscyksZGVsOihlLHM9e30pPT5kLnJlbW92ZUl0ZW0oZSxzKSxyZW1vdmU6KGUscz17fSk9PmQucmVtb3ZlSXRlbShlLHMpfTtyZXR1cm4gZH1mdW5jdGlvbiB3YXRjaChlLHMsZCl7cmV0dXJuIGUud2F0Y2g/ZS53YXRjaCgoZSxtKT0+cyhlLGQrbSkpOigpPT57fX1hc3luYyBmdW5jdGlvbiBkaXNwb3NlKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLmRpc3Bvc2UmJmF3YWl0IGFzeW5jQ2FsbChlLmRpc3Bvc2UpfWNvbnN0IGFpPXt9LG5vcm1hbGl6ZUtleSQxPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLnNwbGl0KCI/IilbMF0/LnJlcGxhY2UoL1svXFxdL2csIjoiKS5yZXBsYWNlKC86Ky9nLCI6IikucmVwbGFjZSgvXjp8OiQvZywiIil8fCIifSxzaT17Z2V0S2V5czooKT0+UHJvbWlzZS5yZXNvbHZlKE9iamVjdC5rZXlzKGFpKSksaGFzSXRlbTplPT4oZT1ub3JtYWxpemVLZXkkMShlKSxQcm9taXNlLnJlc29sdmUoZSBpbiBhaSkpLGdldEl0ZW06ZT0+KGU9bm9ybWFsaXplS2V5JDEoZSksUHJvbWlzZS5yZXNvbHZlKGFpW2VdP2FpW2VdLmltcG9ydCgpOm51bGwpKSxnZXRNZXRhOmU9PihlPW5vcm1hbGl6ZUtleSQxKGUpLFByb21pc2UucmVzb2x2ZShhaVtlXT9haVtlXS5tZXRhOnt9KSl9O2Z1bmN0aW9uIGNyZWF0ZUVycm9yKGUscyxkKXtjb25zdCBtPW5ldyBFcnJvcihgW3Vuc3RvcmFnZV0gWyR7ZX1dICR7c31gLGQpO3JldHVybiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UobSxjcmVhdGVFcnJvciksbX1mdW5jdGlvbiBnZXRLVkJpbmRpbmcoZT0iU1RPUkFHRSIpe3JldHVybiBmdW5jdGlvbihlKXtsZXQgcz0iW2JpbmRpbmddIjtpZigic3RyaW5nIj09dHlwZW9mIGUmJihzPWUsZT1nbG9iYWxUaGlzW3NdfHxnbG9iYWxUaGlzLl9fZW52X18/LltzXSksIWUpdGhyb3cgY3JlYXRlRXJyb3IoImNsb3VkZmxhcmUiLGBJbnZhbGlkIGJpbmRpbmcgXGAke3N9XGA6IFxgJHtlfVxgYCk7Zm9yKGNvbnN0IGQgb2ZbImdldCIsInB1dCIsImRlbGV0ZSJdKWlmKCEoZCBpbiBlKSl0aHJvdyBjcmVhdGVFcnJvcigiY2xvdWRmbGFyZSIsYEludmFsaWQgYmluZGluZyBcYCR7c31cYDogXGAke2R9XGAga2V5IGlzIG1pc3NpbmdgKTtyZXR1cm4gZX0oZSl9Y29uc3QgZHJpdmVyPWU9Pntjb25zdCByPShzPSIiKT0+ZS5iYXNlP2Z1bmN0aW9uKC4uLmUpe3JldHVybiBlLm1hcChlPT5mdW5jdGlvbihlLHM9IjoiKXtyZXR1cm4gZT9lLnJlcGxhY2UoL1s6L1xcXS9nLHMpLnJlcGxhY2UoL15bOi9cXF18WzovXFxdJC9nLCIiKToiIn0oZSkpLmZpbHRlcihCb29sZWFuKS5qb2luKCI6Iil9KGUuYmFzZSxzKTpzO2FzeW5jIGZ1bmN0aW9uIGdldEtleXMocz0iIil7cz1yKHMpO2NvbnN0IGQ9Z2V0S1ZCaW5kaW5nKGUuYmluZGluZyksbT1bXTtsZXQgaDtkb3tjb25zdCBlPWF3YWl0IGQubGlzdCh7cHJlZml4OnN8fHZvaWQgMCxjdXJzb3I6aH0pO20ucHVzaCguLi5lLmtleXMpLGg9ZS5saXN0X2NvbXBsZXRlP3ZvaWQgMDplLmN1cnNvcn13aGlsZShoKTtyZXR1cm4gbS5tYXAoZT0+ZS5uYW1lKX1yZXR1cm57bmFtZToiY2xvdWRmbGFyZS1rdi1iaW5kaW5nIixvcHRpb25zOmUsZ2V0SW5zdGFuY2U6KCk9PmdldEtWQmluZGluZyhlLmJpbmRpbmcpLGFzeW5jIGhhc0l0ZW0ocyl7cz1yKHMpO2NvbnN0IGQ9Z2V0S1ZCaW5kaW5nKGUuYmluZGluZyk7cmV0dXJuIG51bGwhPT1hd2FpdCBkLmdldChzKX0sZ2V0SXRlbShzKXtzPXIocyk7cmV0dXJuIGdldEtWQmluZGluZyhlLmJpbmRpbmcpLmdldChzKX0sc2V0SXRlbShzLGQsbSl7cz1yKHMpO3JldHVybiBnZXRLVkJpbmRpbmcoZS5iaW5kaW5nKS5wdXQocyxkLG0/e2V4cGlyYXRpb25UdGw6bT8udHRsP01hdGgubWF4KG0udHRsLGUubWluVFRMPz82MCk6dm9pZCAwLC4uLm19OnZvaWQgMCl9LHJlbW92ZUl0ZW0ocyl7cz1yKHMpO3JldHVybiBnZXRLVkJpbmRpbmcoZS5iaW5kaW5nKS5kZWxldGUocyl9LGdldEtleXM6cz0+Z2V0S2V5cyhzKS50aGVuKHM9PnMubWFwKHM9PmUuYmFzZT9zLnNsaWNlKGUuYmFzZS5sZW5ndGgpOnMpKSxhc3luYyBjbGVhcihzKXtjb25zdCBkPWdldEtWQmluZGluZyhlLmJpbmRpbmcpLG09YXdhaXQgZ2V0S2V5cyhzKTthd2FpdCBQcm9taXNlLmFsbChtLm1hcChlPT5kLmRlbGV0ZShlKSkpfX19LGxpPWdsb2JhbFRoaXMucGVyZm9ybWFuY2U/LnRpbWVPcmlnaW4/P0RhdGUubm93KCksY2k9Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZT8ubm93P2dsb2JhbFRoaXMucGVyZm9ybWFuY2Uubm93LmJpbmQoZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZSk6KCk9PkRhdGUubm93KCktbGksdWk9WyJldmVudCIsIm1hcmsiLCJtZWFzdXJlIiwicmVzb3VyY2UiXTtjbGFzcyBfUGVyZm9ybWFuY2VFbnRyeXtfX3VuZW52X189ITA7ZGV0YWlsO2VudHJ5VHlwZT0iZXZlbnQiO25hbWU7c3RhcnRUaW1lO2NvbnN0cnVjdG9yKGUscyl7dGhpcy5uYW1lPWUsdGhpcy5zdGFydFRpbWU9cz8uc3RhcnRUaW1lfHxjaSgpLHRoaXMuZGV0YWlsPXM/LmRldGFpbH1nZXQgZHVyYXRpb24oKXtyZXR1cm4gY2koKS10aGlzLnN0YXJ0VGltZX10b0pTT04oKXtyZXR1cm57bmFtZTp0aGlzLm5hbWUsZW50cnlUeXBlOnRoaXMuZW50cnlUeXBlLHN0YXJ0VGltZTp0aGlzLnN0YXJ0VGltZSxkdXJhdGlvbjp0aGlzLmR1cmF0aW9uLGRldGFpbDp0aGlzLmRldGFpbH19fWNsYXNzIF9QZXJmb3JtYW5jZU1hcmsgZXh0ZW5kcyBfUGVyZm9ybWFuY2VFbnRyeXtlbnRyeVR5cGU9Im1hcmsifWNsYXNzIF9QZXJmb3JtYW5jZU1lYXN1cmUgZXh0ZW5kcyBfUGVyZm9ybWFuY2VFbnRyeXtlbnRyeVR5cGU9Im1lYXN1cmUifWNsYXNzIF9QZXJmb3JtYW5jZXtfX3VuZW52X189ITA7dGltZU9yaWdpbj1saTtldmVudENvdW50cz1uZXcgTWFwO19lbnRyaWVzPVtdO19yZXNvdXJjZVRpbWluZ0J1ZmZlclNpemU9MDtuYXZpZ2F0aW9uPXZvaWQgMDt0aW1pbmc9dm9pZCAwO29ucmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsPW51bGw7bm93KCl7cmV0dXJuIHRoaXMudGltZU9yaWdpbj09PWxpP2NpKCk6RGF0ZS5ub3coKS10aGlzLnRpbWVPcmlnaW59Y2xlYXJNYXJrcyhlKXt0aGlzLl9lbnRyaWVzPWU/dGhpcy5fZW50cmllcy5maWx0ZXIocz0+cy5uYW1lIT09ZSk6dGhpcy5fZW50cmllcy5maWx0ZXIoZT0+Im1hcmsiIT09ZS5lbnRyeVR5cGUpfWNsZWFyTWVhc3VyZXMoZSl7dGhpcy5fZW50cmllcz1lP3RoaXMuX2VudHJpZXMuZmlsdGVyKHM9PnMubmFtZSE9PWUpOnRoaXMuX2VudHJpZXMuZmlsdGVyKGU9PiJtZWFzdXJlIiE9PWUuZW50cnlUeXBlKX1jbGVhclJlc291cmNlVGltaW5ncygpe3RoaXMuX2VudHJpZXM9dGhpcy5fZW50cmllcy5maWx0ZXIoZT0+InJlc291cmNlIiE9PWUuZW50cnlUeXBlfHwibmF2aWdhdGlvbiIhPT1lLmVudHJ5VHlwZSl9Z2V0RW50cmllcygpe3JldHVybiB0aGlzLl9lbnRyaWVzfWdldEVudHJpZXNCeU5hbWUoZSxzKXtyZXR1cm4gdGhpcy5fZW50cmllcy5maWx0ZXIoZD0+ZC5uYW1lPT09ZSYmKCFzfHxkLmVudHJ5VHlwZT09PXMpKX1nZXRFbnRyaWVzQnlUeXBlKGUpe3JldHVybiB0aGlzLl9lbnRyaWVzLmZpbHRlcihzPT5zLmVudHJ5VHlwZT09PWUpfW1hcmsoZSxzKXtjb25zdCBkPW5ldyBfUGVyZm9ybWFuY2VNYXJrKGUscyk7cmV0dXJuIHRoaXMuX2VudHJpZXMucHVzaChkKSxkfW1lYXN1cmUoZSxzLGQpe2xldCBtLGg7InN0cmluZyI9PXR5cGVvZiBzPyhtPXRoaXMuZ2V0RW50cmllc0J5TmFtZShzLCJtYXJrIilbMF0/LnN0YXJ0VGltZSxoPXRoaXMuZ2V0RW50cmllc0J5TmFtZShkLCJtYXJrIilbMF0/LnN0YXJ0VGltZSk6KG09TnVtYmVyLnBhcnNlRmxvYXQocz8uc3RhcnQpfHx0aGlzLm5vdygpLGg9TnVtYmVyLnBhcnNlRmxvYXQocz8uZW5kKXx8dGhpcy5ub3coKSk7Y29uc3QgZz1uZXcgX1BlcmZvcm1hbmNlTWVhc3VyZShlLHtzdGFydFRpbWU6bSxkZXRhaWw6e3N0YXJ0Om0sZW5kOmh9fSk7cmV0dXJuIHRoaXMuX2VudHJpZXMucHVzaChnKSxnfXNldFJlc291cmNlVGltaW5nQnVmZmVyU2l6ZShlKXt0aGlzLl9yZXNvdXJjZVRpbWluZ0J1ZmZlclNpemU9ZX10b0pTT04oKXtyZXR1cm4gdGhpc31hZGRFdmVudExpc3RlbmVyKGUscyxkKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJQZXJmb3JtYW5jZS5hZGRFdmVudExpc3RlbmVyIil9cmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHMsZCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigiUGVyZm9ybWFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lciIpfWRpc3BhdGNoRXZlbnQoZSl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigiUGVyZm9ybWFuY2UuZGlzcGF0Y2hFdmVudCIpfX1jb25zdCBkaT1nbG9iYWxUaGlzLlBlcmZvcm1hbmNlRW50cnl8fF9QZXJmb3JtYW5jZUVudHJ5LHBpPWdsb2JhbFRoaXMuUGVyZm9ybWFuY2VNYXJrfHxfUGVyZm9ybWFuY2VNYXJrLG1pPWdsb2JhbFRoaXMuUGVyZm9ybWFuY2VNZWFzdXJlfHxfUGVyZm9ybWFuY2VNZWFzdXJlLGZpPWdsb2JhbFRoaXMuUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZ3x8Y2xhc3MgZXh0ZW5kcyBfUGVyZm9ybWFuY2VFbnRyeXtlbnRyeVR5cGU9InJlc291cmNlIjtzZXJ2ZXJUaW1pbmc9W107Y29ubmVjdEVuZD0wO2Nvbm5lY3RTdGFydD0wO2RlY29kZWRCb2R5U2l6ZT0wO2RvbWFpbkxvb2t1cEVuZD0wO2RvbWFpbkxvb2t1cFN0YXJ0PTA7ZW5jb2RlZEJvZHlTaXplPTA7ZmV0Y2hTdGFydD0wO2luaXRpYXRvclR5cGU9IiI7bmFtZT0iIjtuZXh0SG9wUHJvdG9jb2w9IiI7cmVkaXJlY3RFbmQ9MDtyZWRpcmVjdFN0YXJ0PTA7cmVxdWVzdFN0YXJ0PTA7cmVzcG9uc2VFbmQ9MDtyZXNwb25zZVN0YXJ0PTA7c2VjdXJlQ29ubmVjdGlvblN0YXJ0PTA7c3RhcnRUaW1lPTA7dHJhbnNmZXJTaXplPTA7d29ya2VyU3RhcnQ9MDtyZXNwb25zZVN0YXR1cz0wfSxoaT1nbG9iYWxUaGlzLlBlcmZvcm1hbmNlT2JzZXJ2ZXJ8fGNsYXNze19fdW5lbnZfXz0hMDtzdGF0aWMgc3VwcG9ydGVkRW50cnlUeXBlcz11aTtfY2FsbGJhY2s9bnVsbDtjb25zdHJ1Y3RvcihlKXt0aGlzLl9jYWxsYmFjaz1lfXRha2VSZWNvcmRzKCl7cmV0dXJuW119ZGlzY29ubmVjdCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoIlBlcmZvcm1hbmNlT2JzZXJ2ZXIuZGlzY29ubmVjdCIpfW9ic2VydmUoZSl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigiUGVyZm9ybWFuY2VPYnNlcnZlci5vYnNlcnZlIil9fSxnaT1nbG9iYWxUaGlzLlBlcmZvcm1hbmNlfHxfUGVyZm9ybWFuY2Usdmk9Z2xvYmFsVGhpcy5QZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0fHxjbGFzc3tfX3VuZW52X189ITA7Z2V0RW50cmllcygpe3JldHVybltdfWdldEVudHJpZXNCeU5hbWUoZSxzKXtyZXR1cm5bXX1nZXRFbnRyaWVzQnlUeXBlKGUpe3JldHVybltdfX0seWk9Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZSYmImFkZEV2ZW50TGlzdGVuZXIiaW4gZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZT9nbG9iYWxUaGlzLnBlcmZvcm1hbmNlOm5ldyBfUGVyZm9ybWFuY2U7Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZXx8PXlpLGdsb2JhbFRoaXMuUGVyZm9ybWFuY2V8fD1naSxnbG9iYWxUaGlzLlBlcmZvcm1hbmNlRW50cnl8fD1kaSxnbG9iYWxUaGlzLlBlcmZvcm1hbmNlTWFya3x8PXBpLGdsb2JhbFRoaXMuUGVyZm9ybWFuY2VNZWFzdXJlfHw9bWksZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZU9ic2VydmVyfHw9aGksZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0fHw9dmksZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nfHw9Zmk7Y29uc3QgYmk9Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZTt2YXIgX2k9Im9iamVjdCI9PXR5cGVvZiBiaSYmYmkmJiJmdW5jdGlvbiI9PXR5cGVvZiBiaS5ub3c/Ymk6RGF0ZSx4aT1uZXcgU2V0LHdpPSJvYmplY3QiPT10eXBlb2YgVCYmVD9UOnt9LFUkMz0oZSxzLGQsbSk9PnsiZnVuY3Rpb24iPT10eXBlb2Ygd2kuZW1pdFdhcm5pbmc/d2kuZW1pdFdhcm5pbmcoZSxzLGQsbSk6Y29uc29sZS5lcnJvcihgWyR7ZH1dICR7c306ICR7ZX1gKX0sJGk9Z2xvYmFsVGhpcy5BYm9ydENvbnRyb2xsZXIsU2k9Z2xvYmFsVGhpcy5BYm9ydFNpZ25hbDtpZih0eXBlb2YgJGk+InUiKXtTaT1jbGFzc3tvbmFib3J0O19vbmFib3J0PVtdO3JlYXNvbjthYm9ydGVkPSExO2FkZEV2ZW50TGlzdGVuZXIoZSxzKXt0aGlzLl9vbmFib3J0LnB1c2gocyl9fSwkaT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3QoKX1zaWduYWw9bmV3IFNpO2Fib3J0KGUpe2lmKCF0aGlzLnNpZ25hbC5hYm9ydGVkKXt0aGlzLnNpZ25hbC5yZWFzb249ZSx0aGlzLnNpZ25hbC5hYm9ydGVkPSEwO2ZvcihsZXQgcyBvZiB0aGlzLnNpZ25hbC5fb25hYm9ydClzKGUpO3RoaXMuc2lnbmFsLm9uYWJvcnQ/LihlKX19fTtsZXQgZT0iMSIhPT13aS5lbnY/LkxSVV9DQUNIRV9JR05PUkVfQUNfV0FSTklORyx0PSgpPT57ZSYmKGU9ITEsVSQzKCJBYm9ydENvbnRyb2xsZXIgaXMgbm90IGRlZmluZWQuIElmIHVzaW5nIGxydS1jYWNoZSBpbiBub2RlIDE0LCBsb2FkIGFuIEFib3J0Q29udHJvbGxlciBwb2x5ZmlsbCBmcm9tIHRoZSBgbm9kZS1hYm9ydC1jb250cm9sbGVyYCBwYWNrYWdlLiBBIG1pbmltYWwgcG9seWZpbGwgaXMgcHJvdmlkZWQgZm9yIHVzZSBieSBMUlVDYWNoZS5mZXRjaCgpLCBidXQgaXQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiBpbiBvdGhlciBjb250ZXh0cyAoZWcsIHBhc3NpbmcgaXQgdG8gb3RoZXIgQVBJcyB0aGF0IHVzZSBBYm9ydENvbnRyb2xsZXIvQWJvcnRTaWduYWwgbWlnaHQgaGF2ZSB1bmRlc2lyYWJsZSBlZmZlY3RzKS4gWW91IG1heSBkaXNhYmxlIHRoaXMgd2l0aCBMUlVfQ0FDSEVfSUdOT1JFX0FDX1dBUk5JTkc9MSBpbiB0aGUgZW52LiIsIk5PX0FCT1JUX0NPTlRST0xMRVIiLCJFTk9UU1VQIix0KSl9fXZhciB5JDM9ZT0+ZSYmZT09PU1hdGguZmxvb3IoZSkmJmU+MCYmaXNGaW5pdGUoZSksTSQzPWU9PnkkMyhlKT9lPD1NYXRoLnBvdygyLDgpP1VpbnQ4QXJyYXk6ZTw9TWF0aC5wb3coMiwxNik/VWludDE2QXJyYXk6ZTw9TWF0aC5wb3coMiwzMik/VWludDMyQXJyYXk6ZTw9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/a2k6bnVsbDpudWxsLGtpPWNsYXNzIGV4dGVuZHMgQXJyYXl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5maWxsKDApfX0samk9Y2xhc3MgY3toZWFwO2xlbmd0aDtzdGF0aWMjcj0hMTtzdGF0aWMgY3JlYXRlKGUpe2xldCBzPU0kMyhlKTtpZighcylyZXR1cm5bXTtjLiNyPSEwO2xldCBkPW5ldyBjKGUscyk7cmV0dXJuIGMuI3I9ITEsZH1jb25zdHJ1Y3RvcihlLHMpe2lmKCFjLiNyKXRocm93IG5ldyBUeXBlRXJyb3IoImluc3RhbnRpYXRlIFN0YWNrIHVzaW5nIFN0YWNrLmNyZWF0ZShuKSIpO3RoaXMuaGVhcD1uZXcgcyhlKSx0aGlzLmxlbmd0aD0wfXB1c2goZSl7dGhpcy5oZWFwW3RoaXMubGVuZ3RoKytdPWV9cG9wKCl7cmV0dXJuIHRoaXMuaGVhcFstLXRoaXMubGVuZ3RoXX19LHppPWNsYXNzIGN7I3I7I287I2E7I3M7I2w7I2M7I3U7I2Q7Z2V0IHBlcmYoKXtyZXR1cm4gdGhpcy4jZH10dGw7dHRsUmVzb2x1dGlvbjt0dGxBdXRvcHVyZ2U7dXBkYXRlQWdlT25HZXQ7dXBkYXRlQWdlT25IYXM7YWxsb3dTdGFsZTtub0Rpc3Bvc2VPblNldDtub1VwZGF0ZVRUTDttYXhFbnRyeVNpemU7c2l6ZUNhbGN1bGF0aW9uO25vRGVsZXRlT25GZXRjaFJlamVjdGlvbjtub0RlbGV0ZU9uU3RhbGVHZXQ7YWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDthbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbjtpZ25vcmVGZXRjaEFib3J0OyNwOyNtOyNmOyNoOyNnOyN2OyN5OyNiOyNfOyN4OyN3OyMkOyNTOyNrOyNqOyN6OyNJOyNDOyNUO3N0YXRpYyB1bnNhZmVFeHBvc2VJbnRlcm5hbHMoZSl7cmV0dXJue3N0YXJ0czplLiNTLHR0bHM6ZS4jayxhdXRvcHVyZ2VUaW1lcnM6ZS4jaixzaXplczplLiMkLGtleU1hcDplLiNmLGtleUxpc3Q6ZS4jaCx2YWxMaXN0OmUuI2csbmV4dDplLiN2LHByZXY6ZS4jeSxnZXQgaGVhZCgpe3JldHVybiBlLiNifSxnZXQgdGFpbCgpe3JldHVybiBlLiNffSxmcmVlOmUuI3gsaXNCYWNrZ3JvdW5kRmV0Y2g6cz0+ZS4jUihzKSxiYWNrZ3JvdW5kRmV0Y2g6KHMsZCxtLGgpPT5lLiNFKHMsZCxtLGgpLG1vdmVUb1RhaWw6cz0+ZS4jTyhzKSxpbmRleGVzOnM9PmUuI1AocykscmluZGV4ZXM6cz0+ZS4jTihzKSxpc1N0YWxlOnM9PmUuI0Qocyl9fWdldCBtYXgoKXtyZXR1cm4gdGhpcy4jcn1nZXQgbWF4U2l6ZSgpe3JldHVybiB0aGlzLiNvfWdldCBjYWxjdWxhdGVkU2l6ZSgpe3JldHVybiB0aGlzLiNtfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuI3B9Z2V0IGZldGNoTWV0aG9kKCl7cmV0dXJuIHRoaXMuI2N9Z2V0IG1lbW9NZXRob2QoKXtyZXR1cm4gdGhpcy4jdX1nZXQgZGlzcG9zZSgpe3JldHVybiB0aGlzLiNhfWdldCBvbkluc2VydCgpe3JldHVybiB0aGlzLiNzfWdldCBkaXNwb3NlQWZ0ZXIoKXtyZXR1cm4gdGhpcy4jbH1jb25zdHJ1Y3RvcihlKXtsZXR7bWF4OnM9MCx0dGw6ZCx0dGxSZXNvbHV0aW9uOm09MSx0dGxBdXRvcHVyZ2U6aCx1cGRhdGVBZ2VPbkdldDpnLHVwZGF0ZUFnZU9uSGFzOngsYWxsb3dTdGFsZTokLGRpc3Bvc2U6Uyxvbkluc2VydDpqLGRpc3Bvc2VBZnRlcjp6LG5vRGlzcG9zZU9uU2V0Okksbm9VcGRhdGVUVEw6VCxtYXhTaXplOlI9MCxtYXhFbnRyeVNpemU6RT0wLHNpemVDYWxjdWxhdGlvbjpPLGZldGNoTWV0aG9kOk4sbWVtb01ldGhvZDpVLG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjpCLG5vRGVsZXRlT25TdGFsZUdldDpWLGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uOkgsYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpLLGlnbm9yZUZldGNoQWJvcnQ6ZWUscGVyZjp0ZX09ZTtpZih2b2lkIDAhPT10ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIHRlPy5ub3cpdGhyb3cgbmV3IFR5cGVFcnJvcigicGVyZiBvcHRpb24gbXVzdCBoYXZlIGEgbm93KCkgbWV0aG9kIGlmIHNwZWNpZmllZCIpO2lmKHRoaXMuI2Q9dGU/P19pLDAhPT1zJiYheSQzKHMpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1heCBvcHRpb24gbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiKTtsZXQgaWU9cz9NJDMocyk6QXJyYXk7aWYoIWllKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBtYXggdmFsdWU6ICIrcyk7aWYodGhpcy4jcj1zLHRoaXMuI289Uix0aGlzLm1heEVudHJ5U2l6ZT1FfHx0aGlzLiNvLHRoaXMuc2l6ZUNhbGN1bGF0aW9uPU8sdGhpcy5zaXplQ2FsY3VsYXRpb24pe2lmKCF0aGlzLiNvJiYhdGhpcy5tYXhFbnRyeVNpemUpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2Fubm90IHNldCBzaXplQ2FsY3VsYXRpb24gd2l0aG91dCBzZXR0aW5nIG1heFNpemUgb3IgbWF4RW50cnlTaXplIik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuc2l6ZUNhbGN1bGF0aW9uKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemVDYWxjdWxhdGlvbiBzZXQgdG8gbm9uLWZ1bmN0aW9uIil9aWYodm9pZCAwIT09VSYmImZ1bmN0aW9uIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigibWVtb01ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgZGVmaW5lZCIpO2lmKHRoaXMuI3U9VSx2b2lkIDAhPT1OJiYiZnVuY3Rpb24iIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJmZXRjaE1ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgc3BlY2lmaWVkIik7aWYodGhpcy4jYz1OLHRoaXMuI0k9ISFOLHRoaXMuI2Y9bmV3IE1hcCx0aGlzLiNoPW5ldyBBcnJheShzKS5maWxsKHZvaWQgMCksdGhpcy4jZz1uZXcgQXJyYXkocykuZmlsbCh2b2lkIDApLHRoaXMuI3Y9bmV3IGllKHMpLHRoaXMuI3k9bmV3IGllKHMpLHRoaXMuI2I9MCx0aGlzLiNfPTAsdGhpcy4jeD1qaS5jcmVhdGUocyksdGhpcy4jcD0wLHRoaXMuI209MCwiZnVuY3Rpb24iPT10eXBlb2YgUyYmKHRoaXMuI2E9UyksImZ1bmN0aW9uIj09dHlwZW9mIGomJih0aGlzLiNzPWopLCJmdW5jdGlvbiI9PXR5cGVvZiB6Pyh0aGlzLiNsPXosdGhpcy4jdz1bXSk6KHRoaXMuI2w9dm9pZCAwLHRoaXMuI3c9dm9pZCAwKSx0aGlzLiN6PSEhdGhpcy4jYSx0aGlzLiNUPSEhdGhpcy4jcyx0aGlzLiNDPSEhdGhpcy4jbCx0aGlzLm5vRGlzcG9zZU9uU2V0PSEhSSx0aGlzLm5vVXBkYXRlVFRMPSEhVCx0aGlzLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbj0hIUIsdGhpcy5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbj0hIUgsdGhpcy5hbGxvd1N0YWxlT25GZXRjaEFib3J0PSEhSyx0aGlzLmlnbm9yZUZldGNoQWJvcnQ9ISFlZSwwIT09dGhpcy5tYXhFbnRyeVNpemUpe2lmKDAhPT10aGlzLiNvJiYheSQzKHRoaXMuI28pKXRocm93IG5ldyBUeXBlRXJyb3IoIm1heFNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgaWYgc3BlY2lmaWVkIik7aWYoIXkkMyh0aGlzLm1heEVudHJ5U2l6ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4RW50cnlTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZCIpO3RoaXMuI1UoKX1pZih0aGlzLmFsbG93U3RhbGU9ISEkLHRoaXMubm9EZWxldGVPblN0YWxlR2V0PSEhVix0aGlzLnVwZGF0ZUFnZU9uR2V0PSEhZyx0aGlzLnVwZGF0ZUFnZU9uSGFzPSEheCx0aGlzLnR0bFJlc29sdXRpb249eSQzKG0pfHwwPT09bT9tOjEsdGhpcy50dGxBdXRvcHVyZ2U9ISFoLHRoaXMudHRsPWR8fDAsdGhpcy50dGwpe2lmKCF5JDModGhpcy50dGwpKXRocm93IG5ldyBUeXBlRXJyb3IoInR0bCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWQiKTt0aGlzLiNMKCl9aWYoMD09PXRoaXMuI3ImJjA9PT10aGlzLnR0bCYmMD09PXRoaXMuI28pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXQgbGVhc3Qgb25lIG9mIG1heCwgbWF4U2l6ZSwgb3IgdHRsIGlzIHJlcXVpcmVkIik7aWYoIXRoaXMudHRsQXV0b3B1cmdlJiYhdGhpcy4jciYmIXRoaXMuI28pe2xldCBlPSJMUlVfQ0FDSEVfVU5CT1VOREVEIjsoZT0+IXhpLmhhcyhlKSkoZSkmJih4aS5hZGQoZSksVSQzKCJUVEwgY2FjaGluZyB3aXRob3V0IHR0bEF1dG9wdXJnZSwgbWF4LCBvciBtYXhTaXplIGNhbiByZXN1bHQgaW4gdW5ib3VuZGVkIG1lbW9yeSBjb25zdW1wdGlvbi4iLCJVbmJvdW5kZWRDYWNoZVdhcm5pbmciLGUsYykpfX1nZXRSZW1haW5pbmdUVEwoZSl7cmV0dXJuIHRoaXMuI2YuaGFzKGUpPzEvMDowfSNMKCl7bGV0IGU9bmV3IGtpKHRoaXMuI3IpLHM9bmV3IGtpKHRoaXMuI3IpO3RoaXMuI2s9ZSx0aGlzLiNTPXM7bGV0IGQ9dGhpcy50dGxBdXRvcHVyZ2U/bmV3IEFycmF5KHRoaXMuI3IpOnZvaWQgMDt0aGlzLiNqPWQsdGhpcy4jQT0oZCxoLGc9dGhpcy4jZC5ub3coKSk9PntzW2RdPTAhPT1oP2c6MCxlW2RdPWgsbShkLGgpfSx0aGlzLiNxPWQ9PntzW2RdPTAhPT1lW2RdP3RoaXMuI2Qubm93KCk6MCxtKGQsZVtkXSl9O2xldCBtPXRoaXMudHRsQXV0b3B1cmdlPyhlLHMpPT57aWYoZD8uW2VdJiYoY2xlYXJUaW1lb3V0KGRbZV0pLGRbZV09dm9pZCAwKSxzJiYwIT09cyYmZCl7bGV0IG09c2V0VGltZW91dCgoKT0+e3RoaXMuI0QoZSkmJnRoaXMuI0YodGhpcy4jaFtlXSwiZXhwaXJlIil9LHMrMSk7bS51bnJlZiYmbS51bnJlZigpLGRbZV09bX19OigpPT57fTt0aGlzLiNCPShkLG0pPT57aWYoZVttXSl7bGV0IGc9ZVttXSx4PXNbbV07aWYoIWd8fCF4KXJldHVybjtkLnR0bD1nLGQuc3RhcnQ9eCxkLm5vdz1ofHxvKCk7bGV0ICQ9ZC5ub3cteDtkLnJlbWFpbmluZ1RUTD1nLSR9fTtsZXQgaD0wLG89KCk9PntsZXQgZT10aGlzLiNkLm5vdygpO2lmKHRoaXMudHRsUmVzb2x1dGlvbj4wKXtoPWU7bGV0IHM9c2V0VGltZW91dCgoKT0+aD0wLHRoaXMudHRsUmVzb2x1dGlvbik7cy51bnJlZiYmcy51bnJlZigpfXJldHVybiBlfTt0aGlzLmdldFJlbWFpbmluZ1RUTD1kPT57bGV0IG09dGhpcy4jZi5nZXQoZCk7aWYodm9pZCAwPT09bSlyZXR1cm4gMDtsZXQgZz1lW21dLHg9c1ttXTtyZXR1cm4gZyYmeD9nLSgoaHx8bygpKS14KToxLzB9LHRoaXMuI0Q9ZD0+e2xldCBtPXNbZF0sZz1lW2RdO3JldHVybiEhZyYmISFtJiYoaHx8bygpKS1tPmd9fSNxPSgpPT57fTsjQj0oKT0+e307I0E9KCk9Pnt9OyNEPSgpPT4hMTsjVSgpe2xldCBlPW5ldyBraSh0aGlzLiNyKTt0aGlzLiNtPTAsdGhpcy4jJD1lLHRoaXMuI1o9cz0+e3RoaXMuI20tPWVbc10sZVtzXT0wfSx0aGlzLiNNPShlLHMsZCxtKT0+e2lmKHRoaXMuI1IocykpcmV0dXJuIDA7aWYoIXkkMyhkKSl7aWYoIW0pdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzaXplIHZhbHVlIChtdXN0IGJlIHBvc2l0aXZlIGludGVnZXIpLiBXaGVuIG1heFNpemUgb3IgbWF4RW50cnlTaXplIGlzIHVzZWQsIHNpemVDYWxjdWxhdGlvbiBvciBzaXplIG11c3QgYmUgc2V0LiIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBtKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemVDYWxjdWxhdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTtpZihkPW0ocyxlKSwheSQzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemVDYWxjdWxhdGlvbiByZXR1cm4gaW52YWxpZCAoZXhwZWN0IHBvc2l0aXZlIGludGVnZXIpIil9cmV0dXJuIGR9LHRoaXMuI1E9KHMsZCxtKT0+e2lmKGVbc109ZCx0aGlzLiNvKXtsZXQgZD10aGlzLiNvLWVbc107Zm9yKDt0aGlzLiNtPmQ7KXRoaXMuI1YoITApfXRoaXMuI20rPWVbc10sbSYmKG0uZW50cnlTaXplPWQsbS50b3RhbENhbGN1bGF0ZWRTaXplPXRoaXMuI20pfX0jWj1lPT57fTsjUT0oZSxzLGQpPT57fTsjTT0oZSxzLGQsbSk9PntpZihkfHxtKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbm5vdCBzZXQgc2l6ZSB3aXRob3V0IHNldHRpbmcgbWF4U2l6ZSBvciBtYXhFbnRyeVNpemUgb24gY2FjaGUiKTtyZXR1cm4gMH07KiNQKHthbGxvd1N0YWxlOmU9dGhpcy5hbGxvd1N0YWxlfT17fSl7aWYodGhpcy4jcClmb3IobGV0IHM9dGhpcy4jXzt0aGlzLiNIKHMpJiYoKGV8fCF0aGlzLiNEKHMpKSYmKHlpZWxkIHMpLHMhPT10aGlzLiNiKTspcz10aGlzLiN5W3NdfSojTih7YWxsb3dTdGFsZTplPXRoaXMuYWxsb3dTdGFsZX09e30pe2lmKHRoaXMuI3ApZm9yKGxldCBzPXRoaXMuI2I7dGhpcy4jSChzKSYmKChlfHwhdGhpcy4jRChzKSkmJih5aWVsZCBzKSxzIT09dGhpcy4jXyk7KXM9dGhpcy4jdltzXX0jSChlKXtyZXR1cm4gdm9pZCAwIT09ZSYmdGhpcy4jZi5nZXQodGhpcy4jaFtlXSk9PT1lfSplbnRyaWVzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI1AoKSl2b2lkIDAhPT10aGlzLiNnW2VdJiZ2b2lkIDAhPT10aGlzLiNoW2VdJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkW3RoaXMuI2hbZV0sdGhpcy4jZ1tlXV0pfSpyZW50cmllcygpe2ZvcihsZXQgZSBvZiB0aGlzLiNOKCkpdm9pZCAwIT09dGhpcy4jZ1tlXSYmdm9pZCAwIT09dGhpcy4jaFtlXSYmIXRoaXMuI1IodGhpcy4jZ1tlXSkmJih5aWVsZFt0aGlzLiNoW2VdLHRoaXMuI2dbZV1dKX0qa2V5cygpe2ZvcihsZXQgZSBvZiB0aGlzLiNQKCkpe2xldCBzPXRoaXMuI2hbZV07dm9pZCAwIT09cyYmIXRoaXMuI1IodGhpcy4jZ1tlXSkmJih5aWVsZCBzKX19KnJrZXlzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI04oKSl7bGV0IHM9dGhpcy4jaFtlXTt2b2lkIDAhPT1zJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkIHMpfX0qdmFsdWVzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI1AoKSl2b2lkIDAhPT10aGlzLiNnW2VdJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkIHRoaXMuI2dbZV0pfSpydmFsdWVzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI04oKSl2b2lkIDAhPT10aGlzLiNnW2VdJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkIHRoaXMuI2dbZV0pfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfVtTeW1ib2wudG9TdHJpbmdUYWddPSJMUlVDYWNoZSI7ZmluZChlLHM9e30pe2ZvcihsZXQgZCBvZiB0aGlzLiNQKCkpe2xldCBtPXRoaXMuI2dbZF0saD10aGlzLiNSKG0pP20uX19zdGFsZVdoaWxlRmV0Y2hpbmc6bTtpZih2b2lkIDAhPT1oJiZlKGgsdGhpcy4jaFtkXSx0aGlzKSlyZXR1cm4gdGhpcy5nZXQodGhpcy4jaFtkXSxzKX19Zm9yRWFjaChlLHM9dGhpcyl7Zm9yKGxldCBkIG9mIHRoaXMuI1AoKSl7bGV0IG09dGhpcy4jZ1tkXSxoPXRoaXMuI1IobSk/bS5fX3N0YWxlV2hpbGVGZXRjaGluZzptO3ZvaWQgMCE9PWgmJmUuY2FsbChzLGgsdGhpcy4jaFtkXSx0aGlzKX19cmZvckVhY2goZSxzPXRoaXMpe2ZvcihsZXQgZCBvZiB0aGlzLiNOKCkpe2xldCBtPXRoaXMuI2dbZF0saD10aGlzLiNSKG0pP20uX19zdGFsZVdoaWxlRmV0Y2hpbmc6bTt2b2lkIDAhPT1oJiZlLmNhbGwocyxoLHRoaXMuI2hbZF0sdGhpcyl9fXB1cmdlU3RhbGUoKXtsZXQgZT0hMTtmb3IobGV0IHMgb2YgdGhpcy4jTih7YWxsb3dTdGFsZTohMH0pKXRoaXMuI0QocykmJih0aGlzLiNGKHRoaXMuI2hbc10sImV4cGlyZSIpLGU9ITApO3JldHVybiBlfWluZm8oZSl7bGV0IHM9dGhpcy4jZi5nZXQoZSk7aWYodm9pZCAwPT09cylyZXR1cm47bGV0IGQ9dGhpcy4jZ1tzXSxtPXRoaXMuI1IoZCk/ZC5fX3N0YWxlV2hpbGVGZXRjaGluZzpkO2lmKHZvaWQgMD09PW0pcmV0dXJuO2xldCBoPXt2YWx1ZTptfTtpZih0aGlzLiNrJiZ0aGlzLiNTKXtsZXQgZT10aGlzLiNrW3NdLGQ9dGhpcy4jU1tzXTtpZihlJiZkKXtsZXQgcz1lLSh0aGlzLiNkLm5vdygpLWQpO2gudHRsPXMsaC5zdGFydD1EYXRlLm5vdygpfX1yZXR1cm4gdGhpcy4jJCYmKGguc2l6ZT10aGlzLiMkW3NdKSxofWR1bXAoKXtsZXQgZT1bXTtmb3IobGV0IHMgb2YgdGhpcy4jUCh7YWxsb3dTdGFsZTohMH0pKXtsZXQgZD10aGlzLiNoW3NdLG09dGhpcy4jZ1tzXSxoPXRoaXMuI1IobSk/bS5fX3N0YWxlV2hpbGVGZXRjaGluZzptO2lmKHZvaWQgMD09PWh8fHZvaWQgMD09PWQpY29udGludWU7bGV0IGc9e3ZhbHVlOmh9O2lmKHRoaXMuI2smJnRoaXMuI1Mpe2cudHRsPXRoaXMuI2tbc107bGV0IGU9dGhpcy4jZC5ub3coKS10aGlzLiNTW3NdO2cuc3RhcnQ9TWF0aC5mbG9vcihEYXRlLm5vdygpLWUpfXRoaXMuIyQmJihnLnNpemU9dGhpcy4jJFtzXSksZS51bnNoaWZ0KFtkLGddKX1yZXR1cm4gZX1sb2FkKGUpe3RoaXMuY2xlYXIoKTtmb3IobGV0W3MsZF1vZiBlKXtpZihkLnN0YXJ0KXtsZXQgZT1EYXRlLm5vdygpLWQuc3RhcnQ7ZC5zdGFydD10aGlzLiNkLm5vdygpLWV9dGhpcy5zZXQocyxkLnZhbHVlLGQpfX1zZXQoZSxzLGQ9e30pe2lmKHZvaWQgMD09PXMpcmV0dXJuIHRoaXMuZGVsZXRlKGUpLHRoaXM7bGV0e3R0bDptPXRoaXMudHRsLHN0YXJ0Omgsbm9EaXNwb3NlT25TZXQ6Zz10aGlzLm5vRGlzcG9zZU9uU2V0LHNpemVDYWxjdWxhdGlvbjp4PXRoaXMuc2l6ZUNhbGN1bGF0aW9uLHN0YXR1czokfT1kLHtub1VwZGF0ZVRUTDpTPXRoaXMubm9VcGRhdGVUVEx9PWQsaj10aGlzLiNNKGUscyxkLnNpemV8fDAseCk7aWYodGhpcy5tYXhFbnRyeVNpemUmJmo+dGhpcy5tYXhFbnRyeVNpemUpcmV0dXJuICQmJigkLnNldD0ibWlzcyIsJC5tYXhFbnRyeVNpemVFeGNlZWRlZD0hMCksdGhpcy4jRihlLCJzZXQiKSx0aGlzO2xldCB6PTA9PT10aGlzLiNwP3ZvaWQgMDp0aGlzLiNmLmdldChlKTtpZih2b2lkIDA9PT16KXo9MD09PXRoaXMuI3A/dGhpcy4jXzowIT09dGhpcy4jeC5sZW5ndGg/dGhpcy4jeC5wb3AoKTp0aGlzLiNwPT09dGhpcy4jcj90aGlzLiNWKCExKTp0aGlzLiNwLHRoaXMuI2hbel09ZSx0aGlzLiNnW3pdPXMsdGhpcy4jZi5zZXQoZSx6KSx0aGlzLiN2W3RoaXMuI19dPXosdGhpcy4jeVt6XT10aGlzLiNfLHRoaXMuI189eix0aGlzLiNwKyssdGhpcy4jUSh6LGosJCksJCYmKCQuc2V0PSJhZGQiKSxTPSExLHRoaXMuI1QmJnRoaXMuI3M/LihzLGUsImFkZCIpO2Vsc2V7dGhpcy4jTyh6KTtsZXQgZD10aGlzLiNnW3pdO2lmKHMhPT1kKXtpZih0aGlzLiNJJiZ0aGlzLiNSKGQpKXtkLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcigicmVwbGFjZWQiKSk7bGV0e19fc3RhbGVXaGlsZUZldGNoaW5nOnN9PWQ7dm9pZCAwIT09cyYmIWcmJih0aGlzLiN6JiZ0aGlzLiNhPy4ocyxlLCJzZXQiKSx0aGlzLiNDJiZ0aGlzLiN3Py5wdXNoKFtzLGUsInNldCJdKSl9ZWxzZSBnfHwodGhpcy4jeiYmdGhpcy4jYT8uKGQsZSwic2V0IiksdGhpcy4jQyYmdGhpcy4jdz8ucHVzaChbZCxlLCJzZXQiXSkpO2lmKHRoaXMuI1ooeiksdGhpcy4jUSh6LGosJCksdGhpcy4jZ1t6XT1zLCQpeyQuc2V0PSJyZXBsYWNlIjtsZXQgZT1kJiZ0aGlzLiNSKGQpP2QuX19zdGFsZVdoaWxlRmV0Y2hpbmc6ZDt2b2lkIDAhPT1lJiYoJC5vbGRWYWx1ZT1lKX19ZWxzZSAkJiYoJC5zZXQ9InVwZGF0ZSIpO3RoaXMuI1QmJnRoaXMub25JbnNlcnQ/LihzLGUscz09PWQ/InVwZGF0ZSI6InJlcGxhY2UiKX1pZigwIT09bSYmIXRoaXMuI2smJnRoaXMuI0woKSx0aGlzLiNrJiYoU3x8dGhpcy4jQSh6LG0saCksJCYmdGhpcy4jQigkLHopKSwhZyYmdGhpcy4jQyYmdGhpcy4jdyl7bGV0IGUscz10aGlzLiN3O2Zvcig7ZT1zPy5zaGlmdCgpOyl0aGlzLiNsPy4oLi4uZSl9cmV0dXJuIHRoaXN9cG9wKCl7dHJ5e2Zvcig7dGhpcy4jcDspe2xldCBlPXRoaXMuI2dbdGhpcy4jYl07aWYodGhpcy4jVighMCksdGhpcy4jUihlKSl7aWYoZS5fX3N0YWxlV2hpbGVGZXRjaGluZylyZXR1cm4gZS5fX3N0YWxlV2hpbGVGZXRjaGluZ31lbHNlIGlmKHZvaWQgMCE9PWUpcmV0dXJuIGV9fWZpbmFsbHl7aWYodGhpcy4jQyYmdGhpcy4jdyl7bGV0IGUscz10aGlzLiN3O2Zvcig7ZT1zPy5zaGlmdCgpOyl0aGlzLiNsPy4oLi4uZSl9fX0jVihlKXtsZXQgcz10aGlzLiNiLGQ9dGhpcy4jaFtzXSxtPXRoaXMuI2dbc107cmV0dXJuIHRoaXMuI0kmJnRoaXMuI1IobSk/bS5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoImV2aWN0ZWQiKSk6KHRoaXMuI3p8fHRoaXMuI0MpJiYodGhpcy4jeiYmdGhpcy4jYT8uKG0sZCwiZXZpY3QiKSx0aGlzLiNDJiZ0aGlzLiN3Py5wdXNoKFttLGQsImV2aWN0Il0pKSx0aGlzLiNaKHMpLHRoaXMuI2o/LltzXSYmKGNsZWFyVGltZW91dCh0aGlzLiNqW3NdKSx0aGlzLiNqW3NdPXZvaWQgMCksZSYmKHRoaXMuI2hbc109dm9pZCAwLHRoaXMuI2dbc109dm9pZCAwLHRoaXMuI3gucHVzaChzKSksMT09PXRoaXMuI3A/KHRoaXMuI2I9dGhpcy4jXz0wLHRoaXMuI3gubGVuZ3RoPTApOnRoaXMuI2I9dGhpcy4jdltzXSx0aGlzLiNmLmRlbGV0ZShkKSx0aGlzLiNwLS0sc31oYXMoZSxzPXt9KXtsZXR7dXBkYXRlQWdlT25IYXM6ZD10aGlzLnVwZGF0ZUFnZU9uSGFzLHN0YXR1czptfT1zLGg9dGhpcy4jZi5nZXQoZSk7aWYodm9pZCAwIT09aCl7bGV0IGU9dGhpcy4jZ1toXTtpZih0aGlzLiNSKGUpJiZ2b2lkIDA9PT1lLl9fc3RhbGVXaGlsZUZldGNoaW5nKXJldHVybiExO2lmKCF0aGlzLiNEKGgpKXJldHVybiBkJiZ0aGlzLiNxKGgpLG0mJihtLmhhcz0iaGl0Iix0aGlzLiNCKG0saCkpLCEwO20mJihtLmhhcz0ic3RhbGUiLHRoaXMuI0IobSxoKSl9ZWxzZSBtJiYobS5oYXM9Im1pc3MiKTtyZXR1cm4hMX1wZWVrKGUscz17fSl7bGV0e2FsbG93U3RhbGU6ZD10aGlzLmFsbG93U3RhbGV9PXMsbT10aGlzLiNmLmdldChlKTtpZih2b2lkIDA9PT1tfHwhZCYmdGhpcy4jRChtKSlyZXR1cm47bGV0IGg9dGhpcy4jZ1ttXTtyZXR1cm4gdGhpcy4jUihoKT9oLl9fc3RhbGVXaGlsZUZldGNoaW5nOmh9I0UoZSxzLGQsbSl7bGV0IGg9dm9pZCAwPT09cz92b2lkIDA6dGhpcy4jZ1tzXTtpZih0aGlzLiNSKGgpKXJldHVybiBoO2xldCBnPW5ldyAkaSx7c2lnbmFsOnh9PWQ7eD8uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLCgpPT5nLmFib3J0KHgucmVhc29uKSx7c2lnbmFsOmcuc2lnbmFsfSk7bGV0ICQ9e3NpZ25hbDpnLnNpZ25hbCxvcHRpb25zOmQsY29udGV4dDptfSxhPShtLGg9ITEpPT57bGV0e2Fib3J0ZWQ6eH09Zy5zaWduYWwsaj1kLmlnbm9yZUZldGNoQWJvcnQmJnZvaWQgMCE9PW0sej1kLmlnbm9yZUZldGNoQWJvcnR8fCEoIWQuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydHx8dm9pZCAwPT09bSk7aWYoZC5zdGF0dXMmJih4JiYhaD8oZC5zdGF0dXMuZmV0Y2hBYm9ydGVkPSEwLGQuc3RhdHVzLmZldGNoRXJyb3I9Zy5zaWduYWwucmVhc29uLGomJihkLnN0YXR1cy5mZXRjaEFib3J0SWdub3JlZD0hMCkpOmQuc3RhdHVzLmZldGNoUmVzb2x2ZWQ9ITApLHgmJiFqJiYhaClyZXR1cm4gZihnLnNpZ25hbC5yZWFzb24seik7bGV0IEk9UyxUPXRoaXMuI2dbc107cmV0dXJuKFQ9PT1TfHxqJiZoJiZ2b2lkIDA9PT1UKSYmKHZvaWQgMD09PW0/dm9pZCAwIT09SS5fX3N0YWxlV2hpbGVGZXRjaGluZz90aGlzLiNnW3NdPUkuX19zdGFsZVdoaWxlRmV0Y2hpbmc6dGhpcy4jRihlLCJmZXRjaCIpOihkLnN0YXR1cyYmKGQuc3RhdHVzLmZldGNoVXBkYXRlZD0hMCksdGhpcy5zZXQoZSxtLCQub3B0aW9ucykpKSxtfSxmPShtLGgpPT57bGV0e2Fib3J0ZWQ6eH09Zy5zaWduYWwsJD14JiZkLmFsbG93U3RhbGVPbkZldGNoQWJvcnQsaj0kfHxkLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLHo9anx8ZC5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sST1TO2lmKHRoaXMuI2dbc109PT1TJiYoIXp8fCFoJiZ2b2lkIDA9PT1JLl9fc3RhbGVXaGlsZUZldGNoaW5nP3RoaXMuI0YoZSwiZmV0Y2giKTokfHwodGhpcy4jZ1tzXT1JLl9fc3RhbGVXaGlsZUZldGNoaW5nKSksailyZXR1cm4gZC5zdGF0dXMmJnZvaWQgMCE9PUkuX19zdGFsZVdoaWxlRmV0Y2hpbmcmJihkLnN0YXR1cy5yZXR1cm5lZFN0YWxlPSEwKSxJLl9fc3RhbGVXaGlsZUZldGNoaW5nO2lmKEkuX19yZXR1cm5lZD09PUkpdGhyb3cgbX07ZC5zdGF0dXMmJihkLnN0YXR1cy5mZXRjaERpc3BhdGNoZWQ9ITApO2xldCBTPW5ldyBQcm9taXNlKChzLG0pPT57bGV0IHg9dGhpcy4jYz8uKGUsaCwkKTt4JiZ4IGluc3RhbmNlb2YgUHJvbWlzZSYmeC50aGVuKGU9PnModm9pZCAwPT09ZT92b2lkIDA6ZSksbSksZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLCgpPT57KCFkLmlnbm9yZUZldGNoQWJvcnR8fGQuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCkmJihzKHZvaWQgMCksZC5hbGxvd1N0YWxlT25GZXRjaEFib3J0JiYocz1lPT5hKGUsITApKSl9KX0pLnRoZW4oYSxlPT4oZC5zdGF0dXMmJihkLnN0YXR1cy5mZXRjaFJlamVjdGVkPSEwLGQuc3RhdHVzLmZldGNoRXJyb3I9ZSksZihlLCExKSkpLGo9T2JqZWN0LmFzc2lnbihTLHtfX2Fib3J0Q29udHJvbGxlcjpnLF9fc3RhbGVXaGlsZUZldGNoaW5nOmgsX19yZXR1cm5lZDp2b2lkIDB9KTtyZXR1cm4gdm9pZCAwPT09cz8odGhpcy5zZXQoZSxqLHsuLi4kLm9wdGlvbnMsc3RhdHVzOnZvaWQgMH0pLHM9dGhpcy4jZi5nZXQoZSkpOnRoaXMuI2dbc109aixqfSNSKGUpe2lmKCF0aGlzLiNJKXJldHVybiExO2xldCBzPWU7cmV0dXJuISFzJiZzIGluc3RhbmNlb2YgUHJvbWlzZSYmcy5oYXNPd25Qcm9wZXJ0eSgiX19zdGFsZVdoaWxlRmV0Y2hpbmciKSYmcy5fX2Fib3J0Q29udHJvbGxlciBpbnN0YW5jZW9mICRpfWFzeW5jIGZldGNoKGUscz17fSl7bGV0e2FsbG93U3RhbGU6ZD10aGlzLmFsbG93U3RhbGUsdXBkYXRlQWdlT25HZXQ6bT10aGlzLnVwZGF0ZUFnZU9uR2V0LG5vRGVsZXRlT25TdGFsZUdldDpoPXRoaXMubm9EZWxldGVPblN0YWxlR2V0LHR0bDpnPXRoaXMudHRsLG5vRGlzcG9zZU9uU2V0Ong9dGhpcy5ub0Rpc3Bvc2VPblNldCxzaXplOiQ9MCxzaXplQ2FsY3VsYXRpb246Uz10aGlzLnNpemVDYWxjdWxhdGlvbixub1VwZGF0ZVRUTDpqPXRoaXMubm9VcGRhdGVUVEwsbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uOno9dGhpcy5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb246ST10aGlzLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLGlnbm9yZUZldGNoQWJvcnQ6VD10aGlzLmlnbm9yZUZldGNoQWJvcnQsYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpSPXRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCxjb250ZXh0OkUsZm9yY2VSZWZyZXNoOk89ITEsc3RhdHVzOk4sc2lnbmFsOlV9PXM7aWYoIXRoaXMuI0kpcmV0dXJuIE4mJihOLmZldGNoPSJnZXQiKSx0aGlzLmdldChlLHthbGxvd1N0YWxlOmQsdXBkYXRlQWdlT25HZXQ6bSxub0RlbGV0ZU9uU3RhbGVHZXQ6aCxzdGF0dXM6Tn0pO2xldCBCPXthbGxvd1N0YWxlOmQsdXBkYXRlQWdlT25HZXQ6bSxub0RlbGV0ZU9uU3RhbGVHZXQ6aCx0dGw6Zyxub0Rpc3Bvc2VPblNldDp4LHNpemU6JCxzaXplQ2FsY3VsYXRpb246Uyxub1VwZGF0ZVRUTDpqLG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjp6LGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uOkksYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpSLGlnbm9yZUZldGNoQWJvcnQ6VCxzdGF0dXM6TixzaWduYWw6VX0sVj10aGlzLiNmLmdldChlKTtpZih2b2lkIDA9PT1WKXtOJiYoTi5mZXRjaD0ibWlzcyIpO2xldCBzPXRoaXMuI0UoZSxWLEIsRSk7cmV0dXJuIHMuX19yZXR1cm5lZD1zfXtsZXQgcz10aGlzLiNnW1ZdO2lmKHRoaXMuI1Iocykpe2xldCBlPWQmJnZvaWQgMCE9PXMuX19zdGFsZVdoaWxlRmV0Y2hpbmc7cmV0dXJuIE4mJihOLmZldGNoPSJpbmZsaWdodCIsZSYmKE4ucmV0dXJuZWRTdGFsZT0hMCkpLGU/cy5fX3N0YWxlV2hpbGVGZXRjaGluZzpzLl9fcmV0dXJuZWQ9c31sZXQgaD10aGlzLiNEKFYpO2lmKCFPJiYhaClyZXR1cm4gTiYmKE4uZmV0Y2g9ImhpdCIpLHRoaXMuI08oViksbSYmdGhpcy4jcShWKSxOJiZ0aGlzLiNCKE4sVikscztsZXQgZz10aGlzLiNFKGUsVixCLEUpLHg9dm9pZCAwIT09Zy5fX3N0YWxlV2hpbGVGZXRjaGluZyYmZDtyZXR1cm4gTiYmKE4uZmV0Y2g9aD8ic3RhbGUiOiJyZWZyZXNoIix4JiZoJiYoTi5yZXR1cm5lZFN0YWxlPSEwKSkseD9nLl9fc3RhbGVXaGlsZUZldGNoaW5nOmcuX19yZXR1cm5lZD1nfX1hc3luYyBmb3JjZUZldGNoKGUscz17fSl7bGV0IGQ9YXdhaXQgdGhpcy5mZXRjaChlLHMpO2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IEVycm9yKCJmZXRjaCgpIHJldHVybmVkIHVuZGVmaW5lZCIpO3JldHVybiBkfW1lbW8oZSxzPXt9KXtsZXQgZD10aGlzLiN1O2lmKCFkKXRocm93IG5ldyBFcnJvcigibm8gbWVtb01ldGhvZCBwcm92aWRlZCB0byBjb25zdHJ1Y3RvciIpO2xldHtjb250ZXh0Om0sZm9yY2VSZWZyZXNoOmgsLi4uZ309cyx4PXRoaXMuZ2V0KGUsZyk7aWYoIWgmJnZvaWQgMCE9PXgpcmV0dXJuIHg7bGV0ICQ9ZChlLHgse29wdGlvbnM6Zyxjb250ZXh0Om19KTtyZXR1cm4gdGhpcy5zZXQoZSwkLGcpLCR9Z2V0KGUscz17fSl7bGV0e2FsbG93U3RhbGU6ZD10aGlzLmFsbG93U3RhbGUsdXBkYXRlQWdlT25HZXQ6bT10aGlzLnVwZGF0ZUFnZU9uR2V0LG5vRGVsZXRlT25TdGFsZUdldDpoPXRoaXMubm9EZWxldGVPblN0YWxlR2V0LHN0YXR1czpnfT1zLHg9dGhpcy4jZi5nZXQoZSk7aWYodm9pZCAwIT09eCl7bGV0IHM9dGhpcy4jZ1t4XSwkPXRoaXMuI1Iocyk7cmV0dXJuIGcmJnRoaXMuI0IoZyx4KSx0aGlzLiNEKHgpPyhnJiYoZy5nZXQ9InN0YWxlIiksJD8oZyYmZCYmdm9pZCAwIT09cy5fX3N0YWxlV2hpbGVGZXRjaGluZyYmKGcucmV0dXJuZWRTdGFsZT0hMCksZD9zLl9fc3RhbGVXaGlsZUZldGNoaW5nOnZvaWQgMCk6KGh8fHRoaXMuI0YoZSwiZXhwaXJlIiksZyYmZCYmKGcucmV0dXJuZWRTdGFsZT0hMCksZD9zOnZvaWQgMCkpOihnJiYoZy5nZXQ9ImhpdCIpLCQ/cy5fX3N0YWxlV2hpbGVGZXRjaGluZzoodGhpcy4jTyh4KSxtJiZ0aGlzLiNxKHgpLHMpKX1nJiYoZy5nZXQ9Im1pc3MiKX0jVyhlLHMpe3RoaXMuI3lbc109ZSx0aGlzLiN2W2VdPXN9I08oZSl7ZSE9PXRoaXMuI18mJihlPT09dGhpcy4jYj90aGlzLiNiPXRoaXMuI3ZbZV06dGhpcy4jVyh0aGlzLiN5W2VdLHRoaXMuI3ZbZV0pLHRoaXMuI1codGhpcy4jXyxlKSx0aGlzLiNfPWUpfWRlbGV0ZShlKXtyZXR1cm4gdGhpcy4jRihlLCJkZWxldGUiKX0jRihlLHMpe2xldCBkPSExO2lmKDAhPT10aGlzLiNwKXtsZXQgbT10aGlzLiNmLmdldChlKTtpZih2b2lkIDAhPT1tKWlmKHRoaXMuI2o/LlttXSYmKGNsZWFyVGltZW91dCh0aGlzLiNqPy5bbV0pLHRoaXMuI2pbbV09dm9pZCAwKSxkPSEwLDE9PT10aGlzLiNwKXRoaXMuI0oocyk7ZWxzZXt0aGlzLiNaKG0pO2xldCBkPXRoaXMuI2dbbV07aWYodGhpcy4jUihkKT9kLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcigiZGVsZXRlZCIpKToodGhpcy4jenx8dGhpcy4jQykmJih0aGlzLiN6JiZ0aGlzLiNhPy4oZCxlLHMpLHRoaXMuI0MmJnRoaXMuI3c/LnB1c2goW2QsZSxzXSkpLHRoaXMuI2YuZGVsZXRlKGUpLHRoaXMuI2hbbV09dm9pZCAwLHRoaXMuI2dbbV09dm9pZCAwLG09PT10aGlzLiNfKXRoaXMuI189dGhpcy4jeVttXTtlbHNlIGlmKG09PT10aGlzLiNiKXRoaXMuI2I9dGhpcy4jdlttXTtlbHNle2xldCBlPXRoaXMuI3lbbV07dGhpcy4jdltlXT10aGlzLiN2W21dO2xldCBzPXRoaXMuI3ZbbV07dGhpcy4jeVtzXT10aGlzLiN5W21dfXRoaXMuI3AtLSx0aGlzLiN4LnB1c2gobSl9fWlmKHRoaXMuI0MmJnRoaXMuI3c/Lmxlbmd0aCl7bGV0IGUscz10aGlzLiN3O2Zvcig7ZT1zPy5zaGlmdCgpOyl0aGlzLiNsPy4oLi4uZSl9cmV0dXJuIGR9Y2xlYXIoKXtyZXR1cm4gdGhpcy4jSigiZGVsZXRlIil9I0ooZSl7Zm9yKGxldCBzIG9mIHRoaXMuI04oe2FsbG93U3RhbGU6ITB9KSl7bGV0IGQ9dGhpcy4jZ1tzXTtpZih0aGlzLiNSKGQpKWQuX19hYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKCJkZWxldGVkIikpO2Vsc2V7bGV0IG09dGhpcy4jaFtzXTt0aGlzLiN6JiZ0aGlzLiNhPy4oZCxtLGUpLHRoaXMuI0MmJnRoaXMuI3c/LnB1c2goW2QsbSxlXSl9fWlmKHRoaXMuI2YuY2xlYXIoKSx0aGlzLiNnLmZpbGwodm9pZCAwKSx0aGlzLiNoLmZpbGwodm9pZCAwKSx0aGlzLiNrJiZ0aGlzLiNTKXt0aGlzLiNrLmZpbGwoMCksdGhpcy4jUy5maWxsKDApO2ZvcihsZXQgZSBvZiB0aGlzLiNqPz9bXSl2b2lkIDAhPT1lJiZjbGVhclRpbWVvdXQoZSk7dGhpcy4jaj8uZmlsbCh2b2lkIDApfWlmKHRoaXMuIyQmJnRoaXMuIyQuZmlsbCgwKSx0aGlzLiNiPTAsdGhpcy4jXz0wLHRoaXMuI3gubGVuZ3RoPTAsdGhpcy4jbT0wLHRoaXMuI3A9MCx0aGlzLiNDJiZ0aGlzLiN3KXtsZXQgZSxzPXRoaXMuI3c7Zm9yKDtlPXM/LnNoaWZ0KCk7KXRoaXMuI2w/LiguLi5lKX19fTtjb25zdCB1bnN0b3JhZ2VfNDdkcml2ZXJzXzQ3bHJ1XzQ1Y2FjaGU9KHM9e30pPT57Y29uc3QgZD1uZXcgemkoe21heDoxZTMsc2l6ZUNhbGN1bGF0aW9uOnMubWF4U2l6ZXx8cy5tYXhFbnRyeVNpemU/KHMsZCk9PmQubGVuZ3RoK2Z1bmN0aW9uKHMpe2lmKHZvaWQgMCE9PWUpdHJ5e3JldHVybiBlLmJ5dGVMZW5ndGgocyl9Y2F0Y2h7fXRyeXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHM/cy5sZW5ndGg6SlNPTi5zdHJpbmdpZnkocykubGVuZ3RofWNhdGNoe31yZXR1cm4gMH0ocyk6dm9pZCAwLC4uLnN9KTtyZXR1cm57bmFtZToibHJ1LWNhY2hlIixvcHRpb25zOnMsZ2V0SW5zdGFuY2U6KCk9PmQsaGFzSXRlbTplPT5kLmhhcyhlKSxnZXRJdGVtOmU9PmQuZ2V0KGUpPz9udWxsLGdldEl0ZW1SYXc6ZT0+ZC5nZXQoZSk/P251bGwsc2V0SXRlbShlLHMpe2Quc2V0KGUscyl9LHNldEl0ZW1SYXcoZSxzKXtkLnNldChlLHMpfSxyZW1vdmVJdGVtKGUpe2QuZGVsZXRlKGUpfSxnZXRLZXlzOigpPT5bLi4uZC5rZXlzKCldLGNsZWFyKCl7ZC5jbGVhcigpfSxkaXNwb3NlKCl7ZC5jbGVhcigpfX19O2NvbnN0IElpPWNyZWF0ZVN0b3JhZ2Uoe30pO2Z1bmN0aW9uIHVzZVN0b3JhZ2UoZT0iIil7cmV0dXJuIGU/ZnVuY3Rpb24oZSxzKXtpZighKHM9bm9ybWFsaXplQmFzZUtleShzKSkpcmV0dXJuIGU7Y29uc3QgZD17Li4uZX07Zm9yKGNvbnN0IG0gb2Ygb2kpZFttXT0oZD0iIiwuLi5oKT0+ZVttXShzK2QsLi4uaCk7cmV0dXJuIGQuZ2V0S2V5cz0oZD0iIiwuLi5tKT0+ZS5nZXRLZXlzKHMrZCwuLi5tKS50aGVuKGU9PmUubWFwKGU9PmUuc2xpY2Uocy5sZW5ndGgpKSksZC5rZXlzPWQuZ2V0S2V5cyxkLmdldEl0ZW1zPWFzeW5jKGQsbSk9Pntjb25zdCBoPWQubWFwKGU9PiJzdHJpbmciPT10eXBlb2YgZT9zK2U6ey4uLmUsa2V5OnMrZS5rZXl9KTtyZXR1cm4oYXdhaXQgZS5nZXRJdGVtcyhoLG0pKS5tYXAoZT0+KHtrZXk6ZS5rZXkuc2xpY2Uocy5sZW5ndGgpLHZhbHVlOmUudmFsdWV9KSl9LGQuc2V0SXRlbXM9YXN5bmMoZCxtKT0+e2NvbnN0IGg9ZC5tYXAoZT0+KHtrZXk6cytlLmtleSx2YWx1ZTplLnZhbHVlLG9wdGlvbnM6ZS5vcHRpb25zfSkpO3JldHVybiBlLnNldEl0ZW1zKGgsbSl9LGR9KElpLGUpOklpfWZ1bmN0aW9uIHNlcmlhbGl6ZSQxKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9gJyR7ZX0nYDoobmV3IENpKS5zZXJpYWxpemUoZSl9SWkubW91bnQoIi9hc3NldHMiLHNpKSxJaS5tb3VudCgiY2FjaGUiLGRyaXZlcih7YmluZGluZzoiQ0FDSEUiLGRyaXZlcjoiY2xvdWRmbGFyZS1rdi1iaW5kaW5nIn0pKSxJaS5tb3VudCgia3YiLGRyaXZlcih7YmluZGluZzoiS1YiLGRyaXZlcjoiY2xvdWRmbGFyZS1rdi1iaW5kaW5nIn0pKSxJaS5tb3VudCgiI3JhdGUtbGltaXRlci1zdG9yYWdlIix1bnN0b3JhZ2VfNDdkcml2ZXJzXzQ3bHJ1XzQ1Y2FjaGUoe2RyaXZlcjoibHJ1LWNhY2hlIn0pKTtjb25zdCBDaT1mdW5jdGlvbigpe2NsYXNzIG97I2c9bmV3IE1hcDtjb21wYXJlKGUscyl7Y29uc3QgZD10eXBlb2YgZSxtPXR5cGVvZiBzO3JldHVybiJzdHJpbmciPT09ZCYmInN0cmluZyI9PT1tP2UubG9jYWxlQ29tcGFyZShzKToibnVtYmVyIj09PWQmJiJudW1iZXIiPT09bT9lLXM6U3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlLmNhbGwodGhpcy5zZXJpYWxpemUoZSwhMCksdGhpcy5zZXJpYWxpemUocywhMCkpfXNlcmlhbGl6ZShlLHMpe2lmKG51bGw9PT1lKXJldHVybiJudWxsIjtzd2l0Y2godHlwZW9mIGUpe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcz9lOmAnJHtlfSdgO2Nhc2UiYmlnaW50IjpyZXR1cm5gJHtlfW5gO2Nhc2Uib2JqZWN0IjpyZXR1cm4gdGhpcy4kb2JqZWN0KGUpO2Nhc2UiZnVuY3Rpb24iOnJldHVybiB0aGlzLiRmdW5jdGlvbihlKX1yZXR1cm4gU3RyaW5nKGUpfXNlcmlhbGl6ZU9iamVjdChlKXtjb25zdCBzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtpZigiW29iamVjdCBPYmplY3RdIiE9PXMpcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUocy5sZW5ndGg8MTA/YHVua25vd246JHtzfWA6cy5zbGljZSg4LC0xKSxlKTtjb25zdCBkPWUuY29uc3RydWN0b3IsbT1kPT09T2JqZWN0fHx2b2lkIDA9PT1kPyIiOmQubmFtZTtpZigiIiE9PW0mJmdsb2JhbFRoaXNbbV09PT1kKXJldHVybiB0aGlzLnNlcmlhbGl6ZUJ1aWx0SW5UeXBlKG0sZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUudG9KU09OKXtjb25zdCBzPWUudG9KU09OKCk7cmV0dXJuIG0rKG51bGwhPT1zJiYib2JqZWN0Ij09dHlwZW9mIHM/dGhpcy4kb2JqZWN0KHMpOmAoJHt0aGlzLnNlcmlhbGl6ZShzKX0pYCl9cmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhtLE9iamVjdC5lbnRyaWVzKGUpKX1zZXJpYWxpemVCdWlsdEluVHlwZShlLHMpe2NvbnN0IGQ9dGhpc1siJCIrZV07aWYoZClyZXR1cm4gZC5jYWxsKHRoaXMscyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHM/LmVudHJpZXMpcmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhlLHMuZW50cmllcygpKTt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgJHtlfWApfXNlcmlhbGl6ZU9iamVjdEVudHJpZXMoZSxzKXtjb25zdCBkPUFycmF5LmZyb20ocykuc29ydCgoZSxzKT0+dGhpcy5jb21wYXJlKGVbMF0sc1swXSkpO2xldCBtPWAke2V9e2A7Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspe2NvbnN0W3MsaF09ZFtlXTttKz1gJHt0aGlzLnNlcmlhbGl6ZShzLCEwKX06JHt0aGlzLnNlcmlhbGl6ZShoKX1gLGU8ZC5sZW5ndGgtMSYmKG0rPSIsIil9cmV0dXJuIG0rIn0ifSRvYmplY3QoZSl7bGV0IHM9dGhpcy4jZy5nZXQoZSk7cmV0dXJuIHZvaWQgMD09PXMmJih0aGlzLiNnLnNldChlLGAjJHt0aGlzLiNnLnNpemV9YCkscz10aGlzLnNlcmlhbGl6ZU9iamVjdChlKSx0aGlzLiNnLnNldChlLHMpKSxzfSRmdW5jdGlvbihlKXtjb25zdCBzPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO3JldHVybiJbbmF0aXZlIGNvZGVdIH0iPT09cy5zbGljZSgtMTUpP2Ake2UubmFtZXx8IiJ9KClbbmF0aXZlXWA6YCR7ZS5uYW1lfSgke2UubGVuZ3RofSkke3MucmVwbGFjZSgvXHMqXG5ccyovZywiIil9YH0kQXJyYXkoZSl7bGV0IHM9IlsiO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXMrPXRoaXMuc2VyaWFsaXplKGVbZF0pLGQ8ZS5sZW5ndGgtMSYmKHMrPSIsIik7cmV0dXJuIHMrIl0ifSREYXRlKGUpe3RyeXtyZXR1cm5gRGF0ZSgke2UudG9JU09TdHJpbmcoKX0pYH1jYXRjaHtyZXR1cm4iRGF0ZShudWxsKSJ9fSRBcnJheUJ1ZmZlcihlKXtyZXR1cm5gQXJyYXlCdWZmZXJbJHtuZXcgVWludDhBcnJheShlKS5qb2luKCIsIil9XWB9JFNldChlKXtyZXR1cm5gU2V0JHt0aGlzLiRBcnJheShBcnJheS5mcm9tKGUpLnNvcnQoKGUscyk9PnRoaXMuY29tcGFyZShlLHMpKSl9YH0kTWFwKGUpe3JldHVybiB0aGlzLnNlcmlhbGl6ZU9iamVjdEVudHJpZXMoIk1hcCIsZS5lbnRyaWVzKCkpfX1mb3IoY29uc3QgZSBvZlsiRXJyb3IiLCJSZWdFeHAiLCJVUkwiXSlvLnByb3RvdHlwZVsiJCIrZV09ZnVuY3Rpb24ocyl7cmV0dXJuYCR7ZX0oJHtzfSlgfTtmb3IoY29uc3QgZSBvZlsiSW50OEFycmF5IiwiVWludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5Il0pby5wcm90b3R5cGVbIiQiK2VdPWZ1bmN0aW9uKHMpe3JldHVybmAke2V9WyR7cy5qb2luKCIsIil9XWB9O2Zvcihjb25zdCBlIG9mWyJCaWdJbnQ2NEFycmF5IiwiQmlnVWludDY0QXJyYXkiXSlvLnByb3RvdHlwZVsiJCIrZV09ZnVuY3Rpb24ocyl7cmV0dXJuYCR7ZX1bJHtzLmpvaW4oIm4sIil9JHtzLmxlbmd0aD4wPyJuIjoiIn1dYH07cmV0dXJuIG99KCk7ZnVuY3Rpb24gaXNFcXVhbChlLHMpe3JldHVybiBlPT09c3x8c2VyaWFsaXplJDEoZSk9PT1zZXJpYWxpemUkMShzKX1jb25zdCBUaT1bMTc3OTAzMzcwMywtMTE1MDgzMzAxOSwxMDEzOTA0MjQyLC0xNTIxNDg2NTM0LDEzNTk4OTMxMTksLTE2OTQxNDQzNzIsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLFJpPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsLTEyNDU2NDM4MjUsLTM3Mzk1NzcyMyw5NjE5ODcxNjMsMTUwODk3MDk5MywtMTg0MTMzMTU0OCwtMTQyNDIwNDA3NSwtNjcwNTg2MjE2LDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LC0yMTMyODg5MDkwLC0xNjgwMDc5MTkzLC0xMDQ2NzQ0NzE2LC00NTk1NzY4OTUsLTI3Mjc0MjUyMiwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwtMTc0MDc0NjQxNCwtMTQ3MzEzMjk0NywtMTM0MTk3MDQ4OCwtMTA4NDY1MzYyNSwtOTU4Mzk1NDA1LC03MTA0Mzg1ODUsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsLTIxMTc5NDA5NDYsLTE4MzgwMTEyNTksLTE1NjQ0ODEzNzUsLTE0NzQ2NjQ4ODUsLTEwMzUyMzY0OTYsLTk0OTIwMjUyNSwtNzc4OTAxNDc5LC02OTQ2MTQ0OTIsLTIwMDM5NTM4NywyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsLTIwNjcyMzY4NDQsLTE5MzMxMTQ4NzIsLTE4NjY1MzA4MjIsLTE1MzgyMzMxMDksLTEwOTA5MzU4MTcsLTk2NTY0MTk5OF0sRWk9W107bGV0IE9pPWNsYXNze19kYXRhPW5ldyBQaTtfaGFzaD1uZXcgUGkoWy4uLlRpXSk7X25EYXRhQnl0ZXM9MDtfbWluQnVmZmVyU2l6ZT0wO2ZpbmFsaXplKGUpe2UmJnRoaXMuX2FwcGVuZChlKTtjb25zdCBzPTgqdGhpcy5fbkRhdGFCeXRlcyxkPTgqdGhpcy5fZGF0YS5zaWdCeXRlcztyZXR1cm4gdGhpcy5fZGF0YS53b3Jkc1tkPj4+NV18PTEyODw8MjQtZCUzMix0aGlzLl9kYXRhLndvcmRzWzE0KyhkKzY0Pj4+OTw8NCldPU1hdGguZmxvb3Iocy80Mjk0OTY3Mjk2KSx0aGlzLl9kYXRhLndvcmRzWzE1KyhkKzY0Pj4+OTw8NCldPXMsdGhpcy5fZGF0YS5zaWdCeXRlcz00KnRoaXMuX2RhdGEud29yZHMubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofV9kb1Byb2Nlc3NCbG9jayhlLHMpe2NvbnN0IGQ9dGhpcy5faGFzaC53b3JkcztsZXQgbT1kWzBdLGg9ZFsxXSxnPWRbMl0seD1kWzNdLCQ9ZFs0XSxTPWRbNV0saj1kWzZdLHo9ZFs3XTtmb3IobGV0IGQ9MDtkPDY0O2QrKyl7aWYoZDwxNilFaVtkXT0wfGVbcytkXTtlbHNle2NvbnN0IGU9RWlbZC0xNV0scz0oZTw8MjV8ZT4+PjcpXihlPDwxNHxlPj4+MTgpXmU+Pj4zLG09RWlbZC0yXSxoPShtPDwxNXxtPj4+MTcpXihtPDwxM3xtPj4+MTkpXm0+Pj4xMDtFaVtkXT1zK0VpW2QtN10raCtFaVtkLTE2XX1jb25zdCBJPW0maF5tJmdeaCZnLFQ9KG08PDMwfG0+Pj4yKV4obTw8MTl8bT4+PjEzKV4obTw8MTB8bT4+PjIyKSxSPXorKCgkPDwyNnwkPj4+NileKCQ8PDIxfCQ+Pj4xMSleKCQ8PDd8JD4+PjI1KSkrKCQmU15+JCZqKStSaVtkXStFaVtkXTt6PWosaj1TLFM9JCwkPXgrUnwwLHg9ZyxnPWgsaD1tLG09UisoVCtJKXwwfWRbMF09ZFswXSttfDAsZFsxXT1kWzFdK2h8MCxkWzJdPWRbMl0rZ3wwLGRbM109ZFszXSt4fDAsZFs0XT1kWzRdKyR8MCxkWzVdPWRbNV0rU3wwLGRbNl09ZFs2XStqfDAsZFs3XT1kWzddK3p8MH1fYXBwZW5kKGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9UGkuZnJvbVV0ZjgoZSkpLHRoaXMuX2RhdGEuY29uY2F0KGUpLHRoaXMuX25EYXRhQnl0ZXMrPWUuc2lnQnl0ZXN9X3Byb2Nlc3MoZSl7bGV0IHMsZD10aGlzLl9kYXRhLnNpZ0J5dGVzLzY0O2Q9ZT9NYXRoLmNlaWwoZCk6TWF0aC5tYXgoKDB8ZCktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTtjb25zdCBtPTE2KmQsaD1NYXRoLm1pbig0Km0sdGhpcy5fZGF0YS5zaWdCeXRlcyk7aWYobSl7Zm9yKGxldCBlPTA7ZTxtO2UrPTE2KXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKHRoaXMuX2RhdGEud29yZHMsZSk7cz10aGlzLl9kYXRhLndvcmRzLnNwbGljZSgwLG0pLHRoaXMuX2RhdGEuc2lnQnl0ZXMtPWh9cmV0dXJuIG5ldyBQaShzLGgpfX0sUGk9Y2xhc3MgbHt3b3JkcztzaWdCeXRlcztjb25zdHJ1Y3RvcihlLHMpe2U9dGhpcy53b3Jkcz1lfHxbXSx0aGlzLnNpZ0J5dGVzPXZvaWQgMD09PXM/NCplLmxlbmd0aDpzfXN0YXRpYyBmcm9tVXRmOChlKXtjb25zdCBzPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSksZD1zLmxlbmd0aCxtPVtdO2ZvcihsZXQgZT0wO2U8ZDtlKyspbVtlPj4+Ml18PSgyNTUmcy5jaGFyQ29kZUF0KGUpKTw8MjQtZSU0Kjg7cmV0dXJuIG5ldyBsKG0sZCl9dG9CYXNlNjQoKXtjb25zdCBlPVtdO2ZvcihsZXQgcz0wO3M8dGhpcy5zaWdCeXRlcztzKz0zKXtjb25zdCBkPSh0aGlzLndvcmRzW3M+Pj4yXT4+PjI0LXMlNCo4JjI1NSk8PDE2fCh0aGlzLndvcmRzW3MrMT4+PjJdPj4+MjQtKHMrMSklNCo4JjI1NSk8PDh8dGhpcy53b3Jkc1tzKzI+Pj4yXT4+PjI0LShzKzIpJTQqOCYyNTU7Zm9yKGxldCBtPTA7bTw0JiY4KnMrNiptPDgqdGhpcy5zaWdCeXRlczttKyspZS5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fIi5jaGFyQXQoZD4+PjYqKDMtbSkmNjMpKX1yZXR1cm4gZS5qb2luKCIiKX1jb25jYXQoZSl7aWYodGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLXRoaXMuc2lnQnl0ZXMlNCo4LHRoaXMud29yZHMubGVuZ3RoPU1hdGguY2VpbCh0aGlzLnNpZ0J5dGVzLzQpLHRoaXMuc2lnQnl0ZXMlNClmb3IobGV0IHM9MDtzPGUuc2lnQnl0ZXM7cysrKXtjb25zdCBkPWUud29yZHNbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O3RoaXMud29yZHNbdGhpcy5zaWdCeXRlcytzPj4+Ml18PWQ8PDI0LSh0aGlzLnNpZ0J5dGVzK3MpJTQqOH1lbHNlIGZvcihsZXQgcz0wO3M8ZS5zaWdCeXRlcztzKz00KXRoaXMud29yZHNbdGhpcy5zaWdCeXRlcytzPj4+Ml09ZS53b3Jkc1tzPj4+Ml07dGhpcy5zaWdCeXRlcys9ZS5zaWdCeXRlc319O2Z1bmN0aW9uIGRpZ2VzdChlKXtyZXR1cm4obmV3IE9pKS5maW5hbGl6ZShlKS50b0Jhc2U2NCgpfWZ1bmN0aW9uIGhhc2gkMihlKXtyZXR1cm4gZGlnZXN0KHNlcmlhbGl6ZSQxKGUpKX1jb25zdCBOaT0oKCk9PntjbGFzcyBIYXNoZXIye2J1ZmY9IiI7I0s9bmV3IE1hcDt3cml0ZShlKXt0aGlzLmJ1ZmYrPWV9ZGlzcGF0Y2goZSl7cmV0dXJuIHRoaXNbbnVsbD09PWU/Im51bGwiOnR5cGVvZiBlXShlKX1vYmplY3Qocyl7aWYocyYmImZ1bmN0aW9uIj09dHlwZW9mIHMudG9KU09OKXJldHVybiB0aGlzLm9iamVjdChzLnRvSlNPTigpKTtjb25zdCBkPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzKTtsZXQgbT0iIjtjb25zdCBoPWQubGVuZ3RoO209aDwxMD8idW5rbm93bjpbIitkKyJdIjpkLnNsaWNlKDgsaC0xKSxtPW0udG9Mb3dlckNhc2UoKTtsZXQgZz1udWxsO2lmKHZvaWQgMCE9PShnPXRoaXMuI0suZ2V0KHMpKSlyZXR1cm4gdGhpcy5kaXNwYXRjaCgiW0NJUkNVTEFSOiIrZysiXSIpO2lmKHRoaXMuI0suc2V0KHMsdGhpcy4jSy5zaXplKSx2b2lkIDAhPT1lJiZlLmlzQnVmZmVyJiZlLmlzQnVmZmVyKHMpKXJldHVybiB0aGlzLndyaXRlKCJidWZmZXI6IiksdGhpcy53cml0ZShzLnRvU3RyaW5nKCJ1dGY4IikpO2lmKCJvYmplY3QiIT09bSYmImZ1bmN0aW9uIiE9PW0mJiJhc3luY2Z1bmN0aW9uIiE9PW0pdGhpc1ttXT90aGlzW21dKHMpOnRoaXMudW5rbm93bihzLG0pO2Vsc2V7Y29uc3QgZT1PYmplY3Qua2V5cyhzKS5zb3J0KCksZD1bXTt0aGlzLndyaXRlKCJvYmplY3Q6IisoZS5sZW5ndGgrZC5sZW5ndGgpKyI6Iik7Y29uc3QgZGlzcGF0Y2hGb3JLZXk9ZT0+e3RoaXMuZGlzcGF0Y2goZSksdGhpcy53cml0ZSgiOiIpLHRoaXMuZGlzcGF0Y2goc1tlXSksdGhpcy53cml0ZSgiLCIpfTtmb3IoY29uc3QgcyBvZiBlKWRpc3BhdGNoRm9yS2V5KHMpO2Zvcihjb25zdCBlIG9mIGQpZGlzcGF0Y2hGb3JLZXkoZSl9fWFycmF5KGUscyl7aWYocz12b2lkIDAhPT1zJiZzLHRoaXMud3JpdGUoImFycmF5OiIrZS5sZW5ndGgrIjoiKSwhc3x8ZS5sZW5ndGg8PTEpe2Zvcihjb25zdCBzIG9mIGUpdGhpcy5kaXNwYXRjaChzKTtyZXR1cm59Y29uc3QgZD1uZXcgTWFwLG09ZS5tYXAoZT0+e2NvbnN0IHM9bmV3IEhhc2hlcjI7cy5kaXNwYXRjaChlKTtmb3IoY29uc3RbZSxtXW9mIHMuI0spZC5zZXQoZSxtKTtyZXR1cm4gcy50b1N0cmluZygpfSk7cmV0dXJuIHRoaXMuI0s9ZCxtLnNvcnQoKSx0aGlzLmFycmF5KG0sITEpfWRhdGUoZSl7cmV0dXJuIHRoaXMud3JpdGUoImRhdGU6IitlLnRvSlNPTigpKX1zeW1ib2woZSl7cmV0dXJuIHRoaXMud3JpdGUoInN5bWJvbDoiK2UudG9TdHJpbmcoKSl9dW5rbm93bihlLHMpe2lmKHRoaXMud3JpdGUocyksZSlyZXR1cm4gdGhpcy53cml0ZSgiOiIpLGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmVudHJpZXM/dGhpcy5hcnJheShbLi4uZS5lbnRyaWVzKCldLCEwKTp2b2lkIDB9ZXJyb3IoZSl7cmV0dXJuIHRoaXMud3JpdGUoImVycm9yOiIrZS50b1N0cmluZygpKX1ib29sZWFuKGUpe3JldHVybiB0aGlzLndyaXRlKCJib29sOiIrZSl9c3RyaW5nKGUpe3RoaXMud3JpdGUoInN0cmluZzoiK2UubGVuZ3RoKyI6IiksdGhpcy53cml0ZShlKX1mdW5jdGlvbihlKXt0aGlzLndyaXRlKCJmbjoiKSwhZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuITE7cmV0dXJuIltuYXRpdmUgY29kZV0gfSI9PT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSgtMTUpfShlKT90aGlzLmRpc3BhdGNoKGUudG9TdHJpbmcoKSk6dGhpcy5kaXNwYXRjaCgiW25hdGl2ZV0iKX1udW1iZXIoZSl7cmV0dXJuIHRoaXMud3JpdGUoIm51bWJlcjoiK2UpfW51bGwoKXtyZXR1cm4gdGhpcy53cml0ZSgiTnVsbCIpfXVuZGVmaW5lZCgpe3JldHVybiB0aGlzLndyaXRlKCJVbmRlZmluZWQiKX1yZWdleHAoZSl7cmV0dXJuIHRoaXMud3JpdGUoInJlZ2V4OiIrZS50b1N0cmluZygpKX1hcnJheWJ1ZmZlcihlKXtyZXR1cm4gdGhpcy53cml0ZSgiYXJyYXlidWZmZXI6IiksdGhpcy5kaXNwYXRjaChuZXcgVWludDhBcnJheShlKSl9dXJsKGUpe3JldHVybiB0aGlzLndyaXRlKCJ1cmw6IitlLnRvU3RyaW5nKCkpfW1hcChlKXt0aGlzLndyaXRlKCJtYXA6Iik7Y29uc3Qgcz1bLi4uZV07cmV0dXJuIHRoaXMuYXJyYXkocywhMSl9c2V0KGUpe3RoaXMud3JpdGUoInNldDoiKTtjb25zdCBzPVsuLi5lXTtyZXR1cm4gdGhpcy5hcnJheShzLCExKX1iaWdpbnQoZSl7cmV0dXJuIHRoaXMud3JpdGUoImJpZ2ludDoiK2UudG9TdHJpbmcoKSl9fWZvcihjb25zdCBlIG9mWyJ1aW50OGFycmF5IiwidWludDhjbGFtcGVkYXJyYXkiLCJ1bnQ4YXJyYXkiLCJ1aW50MTZhcnJheSIsInVudDE2YXJyYXkiLCJ1aW50MzJhcnJheSIsInVudDMyYXJyYXkiLCJmbG9hdDMyYXJyYXkiLCJmbG9hdDY0YXJyYXkiXSlIYXNoZXIyLnByb3RvdHlwZVtlXT1mdW5jdGlvbihzKXtyZXR1cm4gdGhpcy53cml0ZShlKyI6IiksdGhpcy5hcnJheShbLi4uc10sITEpfTtyZXR1cm4gSGFzaGVyMn0pKCk7ZnVuY3Rpb24gaGFzaCQxKGUpe3JldHVybiBkaWdlc3QoInN0cmluZyI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oZSl7Y29uc3Qgcz1uZXcgTmk7cmV0dXJuIHMuZGlzcGF0Y2goZSkscy5idWZmfShlKSkucmVwbGFjZSgvWy1fXS9nLCIiKS5zbGljZSgwLDEwKX1mdW5jdGlvbiBkZWZpbmVDYWNoZWRGdW5jdGlvbihlLHM9e30pe3M9e25hbWU6Il8iLGJhc2U6Ii9jYWNoZSIsc3dyOiEwLG1heEFnZToxLC4uLnN9O2NvbnN0IGQ9e30sbT1zLmdyb3VwfHwibml0cm8vZnVuY3Rpb25zIixoPXMubmFtZXx8ZS5uYW1lfHwiXyIsZz1zLmludGVncml0eXx8aGFzaCQxKFtlLHNdKSx4PXMudmFsaWRhdGV8fChlPT52b2lkIDAhPT1lLnZhbHVlKTtyZXR1cm4gYXN5bmMoLi4uJCk9PntpZihhd2FpdChzLnNob3VsZEJ5cGFzc0NhY2hlPy4oLi4uJCkpKXJldHVybiBlKC4uLiQpO2NvbnN0IFM9YXdhaXQocy5nZXRLZXl8fGdldEtleSkoLi4uJCksaj1hd2FpdChzLnNob3VsZEludmFsaWRhdGVDYWNoZT8uKC4uLiQpKSx6PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsJCxTLGope2NvbnN0IHo9W3MuYmFzZSxtLGgsZSsiLmpzb24iXS5maWx0ZXIoQm9vbGVhbikuam9pbigiOiIpLnJlcGxhY2UoLzpcLyQvLCI6aW5kZXgiKTtsZXQgST1hd2FpdCB1c2VTdG9yYWdlKCkuZ2V0SXRlbSh6KS5jYXRjaChlPT57Y29uc29sZS5lcnJvcigiW2NhY2hlXSBDYWNoZSByZWFkIGVycm9yLiIsZSksdXNlTml0cm9BcHAoKS5jYXB0dXJlRXJyb3IoZSx7ZXZlbnQ6aix0YWdzOlsiY2FjaGUiXX0pfSl8fHt9O2lmKCJvYmplY3QiIT10eXBlb2YgSSl7ST17fTtjb25zdCBlPW5ldyBFcnJvcigiTWFsZm9ybWVkIGRhdGEgcmVhZCBmcm9tIGNhY2hlLiIpO2NvbnNvbGUuZXJyb3IoIltjYWNoZV0iLGUpLHVzZU5pdHJvQXBwKCkuY2FwdHVyZUVycm9yKGUse2V2ZW50OmosdGFnczpbImNhY2hlIl19KX1jb25zdCBUPTFlMyoocy5tYXhBZ2U/PzApO1QmJihJLmV4cGlyZXM9RGF0ZS5ub3coKStUKTtjb25zdCBSPVN8fEkuaW50ZWdyaXR5IT09Z3x8VCYmRGF0ZS5ub3coKS0oSS5tdGltZXx8MCk+VHx8ITE9PT14KEkpLEU9Uj8oYXN5bmMoKT0+e2NvbnN0IG09ZFtlXTttfHwodm9pZCAwIT09SS52YWx1ZSYmKHMuc3RhbGVNYXhBZ2V8fDApPj0wJiYhMT09PXMuc3dyJiYoSS52YWx1ZT12b2lkIDAsSS5pbnRlZ3JpdHk9dm9pZCAwLEkubXRpbWU9dm9pZCAwLEkuZXhwaXJlcz12b2lkIDApLGRbZV09UHJvbWlzZS5yZXNvbHZlKCQoKSkpO3RyeXtJLnZhbHVlPWF3YWl0IGRbZV19Y2F0Y2gocyl7dGhyb3cgbXx8ZGVsZXRlIGRbZV0sc31pZighbSYmKEkubXRpbWU9RGF0ZS5ub3coKSxJLmludGVncml0eT1nLGRlbGV0ZSBkW2VdLCExIT09eChJKSkpe2xldCBlO3MubWF4QWdlJiYhcy5zd3ImJihlPXt0dGw6cy5tYXhBZ2V9KTtjb25zdCBkPXVzZVN0b3JhZ2UoKS5zZXRJdGVtKHosSSxlKS5jYXRjaChlPT57Y29uc29sZS5lcnJvcigiW2NhY2hlXSBDYWNoZSB3cml0ZSBlcnJvci4iLGUpLHVzZU5pdHJvQXBwKCkuY2FwdHVyZUVycm9yKGUse2V2ZW50OmosdGFnczpbImNhY2hlIl19KX0pO2o/LndhaXRVbnRpbCYmai53YWl0VW50aWwoZCl9fSkoKTpQcm9taXNlLnJlc29sdmUoKTtyZXR1cm4gdm9pZCAwPT09SS52YWx1ZT9hd2FpdCBFOlImJmomJmoud2FpdFVudGlsJiZqLndhaXRVbnRpbChFKSxzLnN3ciYmITEhPT14KEkpPyhFLmNhdGNoKGU9Pntjb25zb2xlLmVycm9yKCJbY2FjaGVdIFNXUiBoYW5kbGVyIGVycm9yLiIsZSksdXNlTml0cm9BcHAoKS5jYXB0dXJlRXJyb3IoZSx7ZXZlbnQ6aix0YWdzOlsiY2FjaGUiXX0pfSksSSk6RS50aGVuKCgpPT5JKX0oUywoKT0+ZSguLi4kKSxqLCRbMF0mJmlzRXZlbnQoJFswXSk/JFswXTp2b2lkIDApO2xldCBJPXoudmFsdWU7cmV0dXJuIHMudHJhbnNmb3JtJiYoST1hd2FpdCBzLnRyYW5zZm9ybSh6LC4uLiQpfHxJKSxJfX1mdW5jdGlvbiBnZXRLZXkoLi4uZSl7cmV0dXJuIGUubGVuZ3RoPjA/aGFzaCQxKGUpOiIifWZ1bmN0aW9uIGVzY2FwZUtleShlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoL1xXL2csIiIpfWZ1bmN0aW9uIGRlZmluZUNhY2hlZEV2ZW50SGFuZGxlcihlLHM9e25hbWU6Il8iLGJhc2U6Ii9jYWNoZSIsc3dyOiEwLG1heEFnZToxfSl7Y29uc3QgZD0ocy52YXJpZXN8fFtdKS5maWx0ZXIoQm9vbGVhbikubWFwKGU9PmUudG9Mb3dlckNhc2UoKSkuc29ydCgpLG09ey4uLnMsZ2V0S2V5OmFzeW5jIGU9Pntjb25zdCBtPWF3YWl0KHMuZ2V0S2V5Py4oZSkpO2lmKG0pcmV0dXJuIGVzY2FwZUtleShtKTtjb25zdCBoPWUubm9kZS5yZXEub3JpZ2luYWxVcmx8fGUubm9kZS5yZXEudXJsfHxlLnBhdGg7bGV0IGc7dHJ5e2c9ZXNjYXBlS2V5KGRlY29kZVVSSShwYXJzZVVSTChoKS5wYXRobmFtZSkpLnNsaWNlKDAsMTYpfHwiaW5kZXgifWNhdGNoe2c9Ii0ifXJldHVybltgJHtnfS4ke2hhc2gkMShoKX1gLC4uLmQubWFwKHM9PltzLGUubm9kZS5yZXEuaGVhZGVyc1tzXV0pLm1hcCgoW2Usc10pPT5gJHtlc2NhcGVLZXkoZSl9LiR7aGFzaCQxKHMpfWApXS5qb2luKCI6Iil9LHZhbGlkYXRlOmU9PiEhZS52YWx1ZSYmKCEoZS52YWx1ZS5jb2RlPj00MDApJiYodm9pZCAwIT09ZS52YWx1ZS5ib2R5JiYoInVuZGVmaW5lZCIhPT1lLnZhbHVlLmhlYWRlcnMuZXRhZyYmInVuZGVmaW5lZCIhPT1lLnZhbHVlLmhlYWRlcnNbImxhc3QtbW9kaWZpZWQiXSkpKSxncm91cDpzLmdyb3VwfHwibml0cm8vaGFuZGxlcnMiLGludGVncml0eTpzLmludGVncml0eXx8aGFzaCQxKFtlLHNdKX0saD1mdW5jdGlvbihlLHM9e30pe3JldHVybiBkZWZpbmVDYWNoZWRGdW5jdGlvbihlLHMpfShhc3luYyBoPT57Y29uc3QgZz17fTtmb3IoY29uc3QgZSBvZiBkKXtjb25zdCBzPWgubm9kZS5yZXEuaGVhZGVyc1tlXTt2b2lkIDAhPT1zJiYoZ1tlXT1zKX1jb25zdCB4PWNsb25lV2l0aFByb3h5KGgubm9kZS5yZXEse2hlYWRlcnM6Z30pLCQ9e307bGV0IFM7Y29uc3Qgaj1jcmVhdGVFdmVudCh4LGNsb25lV2l0aFByb3h5KGgubm9kZS5yZXMse3N0YXR1c0NvZGU6MjAwLHdyaXRhYmxlRW5kZWQ6ITEsd3JpdGFibGVGaW5pc2hlZDohMSxoZWFkZXJzU2VudDohMSxjbG9zZWQ6ITEsZ2V0SGVhZGVyOmU9PiRbZV0sc2V0SGVhZGVyKGUscyl7cmV0dXJuICRbZV09cyx0aGlzfSxnZXRIZWFkZXJOYW1lczooKT0+T2JqZWN0LmtleXMoJCksaGFzSGVhZGVyOmU9PmUgaW4gJCxyZW1vdmVIZWFkZXIoZSl7ZGVsZXRlICRbZV19LGdldEhlYWRlcnM6KCk9PiQsZW5kKGUscyxkKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihTPWUpLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiZzKCksImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoKSx0aGlzfSx3cml0ZTooZSxzLGQpPT4oInN0cmluZyI9PXR5cGVvZiBlJiYoUz1lKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmcyh2b2lkIDApLCJmdW5jdGlvbiI9PXR5cGVvZiBkJiZkKCksITApLHdyaXRlSGVhZChlLHMpe2lmKHRoaXMuc3RhdHVzQ29kZT1lLHMpe2lmKEFycmF5LmlzQXJyYXkocyl8fCJzdHJpbmciPT10eXBlb2Ygcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJSYXcgaGVhZGVycyAgaXMgbm90IHN1cHBvcnRlZC4iKTtmb3IoY29uc3QgZSBpbiBzKXtjb25zdCBkPXNbZV07dm9pZCAwIT09ZCYmdGhpcy5zZXRIZWFkZXIoZSxkKX19cmV0dXJuIHRoaXN9fSkpO2ouZmV0Y2g9KGUscyk9PmZldGNoV2l0aEV2ZW50KGosZSxzLHtmZXRjaDp1c2VOaXRyb0FwcCgpLmxvY2FsRmV0Y2h9KSxqLiRmZXRjaD0oZSxzKT0+ZmV0Y2hXaXRoRXZlbnQoaixlLHMse2ZldGNoOmdsb2JhbFRoaXMuJGZldGNofSksai53YWl0VW50aWw9aC53YWl0VW50aWwsai5jb250ZXh0PWguY29udGV4dCxqLmNvbnRleHQuY2FjaGU9e29wdGlvbnM6bX07Y29uc3Qgej1hd2FpdCBlKGopfHxTLEk9ai5ub2RlLnJlcy5nZXRIZWFkZXJzKCk7SS5ldGFnPVN0cmluZyhJLkV0YWd8fEkuZXRhZ3x8YFcvIiR7aGFzaCQxKHopfSJgKSxJWyJsYXN0LW1vZGlmaWVkIl09U3RyaW5nKElbIkxhc3QtTW9kaWZpZWQiXXx8SVsibGFzdC1tb2RpZmllZCJdfHwobmV3IERhdGUpLnRvVVRDU3RyaW5nKCkpO2NvbnN0IFQ9W107cy5zd3I/KHMubWF4QWdlJiZULnB1c2goYHMtbWF4YWdlPSR7cy5tYXhBZ2V9YCkscy5zdGFsZU1heEFnZT9ULnB1c2goYHN0YWxlLXdoaWxlLXJldmFsaWRhdGU9JHtzLnN0YWxlTWF4QWdlfWApOlQucHVzaCgic3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSIpKTpzLm1heEFnZSYmVC5wdXNoKGBtYXgtYWdlPSR7cy5tYXhBZ2V9YCksVC5sZW5ndGg+MCYmKElbImNhY2hlLWNvbnRyb2wiXT1ULmpvaW4oIiwgIikpO3JldHVybntjb2RlOmoubm9kZS5yZXMuc3RhdHVzQ29kZSxoZWFkZXJzOkksYm9keTp6fX0sbSk7cmV0dXJuIGRlZmluZUV2ZW50SGFuZGxlcihhc3luYyBkPT57aWYocy5oZWFkZXJzT25seSl7aWYoaGFuZGxlQ2FjaGVIZWFkZXJzKGQse21heEFnZTpzLm1heEFnZX0pKXJldHVybjtyZXR1cm4gZShkKX1jb25zdCBtPWF3YWl0IGgoZCk7aWYoZC5ub2RlLnJlcy5oZWFkZXJzU2VudHx8ZC5ub2RlLnJlcy53cml0YWJsZUVuZGVkKXJldHVybiBtLmJvZHk7aWYoIWhhbmRsZUNhY2hlSGVhZGVycyhkLHttb2RpZmllZFRpbWU6bmV3IERhdGUobS5oZWFkZXJzWyJsYXN0LW1vZGlmaWVkIl0pLGV0YWc6bS5oZWFkZXJzLmV0YWcsbWF4QWdlOnMubWF4QWdlfSkpe2Qubm9kZS5yZXMuc3RhdHVzQ29kZT1tLmNvZGU7Zm9yKGNvbnN0IGUgaW4gbS5oZWFkZXJzKXtjb25zdCBzPW0uaGVhZGVyc1tlXTsic2V0LWNvb2tpZSI9PT1lP2Qubm9kZS5yZXMuYXBwZW5kSGVhZGVyKGUsc3BsaXRDb29raWVzU3RyaW5nKHMpKTp2b2lkIDAhPT1zJiZkLm5vZGUucmVzLnNldEhlYWRlcihlLHMpfXJldHVybiBtLmJvZHl9fSl9ZnVuY3Rpb24gY2xvbmVXaXRoUHJveHkoZSxzKXtyZXR1cm4gbmV3IFByb3h5KGUse2dldDooZSxkLG0pPT5kIGluIHM/c1tkXTpSZWZsZWN0LmdldChlLGQsbSksc2V0OihlLGQsbSxoKT0+ZCBpbiBzPyhzW2RdPW0sITApOlJlZmxlY3Quc2V0KGUsZCxtLGgpfSl9Y29uc3QgRGk9ZGVmaW5lQ2FjaGVkRXZlbnRIYW5kbGVyO2Z1bmN0aW9uIGtsb25hKGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgcyxkLG09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO2lmKCJbb2JqZWN0IE9iamVjdF0iPT09bSl7aWYoZS5jb25zdHJ1Y3RvciE9PU9iamVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IpZm9yKHMgaW4gZD1uZXcgZS5jb25zdHJ1Y3RvcixlKWUuaGFzT3duUHJvcGVydHkocykmJmRbc10hPT1lW3NdJiYoZFtzXT1rbG9uYShlW3NdKSk7ZWxzZSBmb3IocyBpbiBkPXt9LGUpIl9fcHJvdG9fXyI9PT1zP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHMse3ZhbHVlOmtsb25hKGVbc10pLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtzXT1rbG9uYShlW3NdKTtyZXR1cm4gZH1pZigiW29iamVjdCBBcnJheV0iPT09bSl7Zm9yKHM9ZS5sZW5ndGgsZD1BcnJheShzKTtzLS07KWRbc109a2xvbmEoZVtzXSk7cmV0dXJuIGR9cmV0dXJuIltvYmplY3QgU2V0XSI9PT1tPyhkPW5ldyBTZXQsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2QuYWRkKGtsb25hKGUpKX0pLGQpOiJbb2JqZWN0IE1hcF0iPT09bT8oZD1uZXcgTWFwLGUuZm9yRWFjaChmdW5jdGlvbihlLHMpe2Quc2V0KGtsb25hKHMpLGtsb25hKGUpKX0pLGQpOiJbb2JqZWN0IERhdGVdIj09PW0/bmV3IERhdGUoK2UpOiJbb2JqZWN0IFJlZ0V4cF0iPT09bT8oKGQ9bmV3IFJlZ0V4cChlLnNvdXJjZSxlLmZsYWdzKSkubGFzdEluZGV4PWUubGFzdEluZGV4LGQpOiJbb2JqZWN0IERhdGFWaWV3XSI9PT1tP25ldyBlLmNvbnN0cnVjdG9yKGtsb25hKGUuYnVmZmVyKSk6IltvYmplY3QgQXJyYXlCdWZmZXJdIj09PW0/ZS5zbGljZSgwKToiQXJyYXldIj09PW0uc2xpY2UoLTYpP25ldyBlLmNvbnN0cnVjdG9yKGUpOmV9Y29uc3QgVWk9JG4oe3VpOntjb2xvcnM6e3ByaW1hcnk6ImJsdWUiLG5ldXRyYWw6ImdyYXkifX19LHtudXh0Ont9LGljb246e3Byb3ZpZGVyOiJzZXJ2ZXIiLGNsYXNzOiIiLGFsaWFzZXM6e30saWNvbmlmeUFwaUVuZHBvaW50OiJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbiIsbG9jYWxBcGlFbmRwb2ludDoiL2FwaS9fbnV4dF9pY29uIixmYWxsYmFja1RvQXBpOiEwLGNzc1NlbGVjdG9yUHJlZml4OiJpLSIsY3NzV2hlcmVQc2V1ZG86ITAsY3NzTGF5ZXI6ImJhc2UiLG1vZGU6ImNzcyIsYXR0cnM6eyJhcmlhLWhpZGRlbiI6ITB9LGNvbGxlY3Rpb25zOlsiYWNhZGVtaWNvbnMiLCJha2FyLWljb25zIiwiYW50LWRlc2lnbiIsImFyY3RpY29ucyIsImJhc2lsIiwiYmkiLCJiaXRjb2luLWljb25zIiwiYnBtbiIsImJyYW5kaWNvIiwiYngiLCJieGwiLCJieHMiLCJieXRlc2l6ZSIsImNhcmJvbiIsImNhdHBwdWNjaW4iLCJjYmkiLCJjaGFybSIsImNpIiwiY2liIiwiY2lmIiwiY2lsIiwiY2lyY2xlLWZsYWdzIiwiY2lyY3VtIiwiY2xhcml0eSIsImNvZGV4IiwiY29kaWNvbiIsImNvdmlkIiwiY3J5cHRvY3VycmVuY3kiLCJjcnlwdG9jdXJyZW5jeS1jb2xvciIsImN1aWRhIiwiZGFzaGljb25zIiwiZGV2aWNvbiIsImRldmljb24tcGxhaW4iLCJkaW5raWUtaWNvbnMiLCJkdW8taWNvbnMiLCJlaSIsImVsIiwiZW1vamlvbmUiLCJlbW9qaW9uZS1tb25vdG9uZSIsImVtb2ppb25lLXYxIiwiZW50eXBvIiwiZW50eXBvLXNvY2lhbCIsImVvcy1pY29ucyIsImVwIiwiZXQiLCJldmEiLCJmNyIsImZhIiwiZmEtYnJhbmRzIiwiZmEtcmVndWxhciIsImZhLXNvbGlkIiwiZmE2LWJyYW5kcyIsImZhNi1yZWd1bGFyIiwiZmE2LXNvbGlkIiwiZmE3LWJyYW5kcyIsImZhNy1yZWd1bGFyIiwiZmE3LXNvbGlkIiwiZmFkIiwiZmFtaWNvbnMiLCJmZSIsImZlYXRoZXIiLCJmaWxlLWljb25zIiwiZmxhZyIsImZsYWdwYWNrIiwiZmxhdC1jb2xvci1pY29ucyIsImZsYXQtdWkiLCJmbG93Yml0ZSIsImZsdWVudCIsImZsdWVudC1jb2xvciIsImZsdWVudC1lbW9qaSIsImZsdWVudC1lbW9qaS1mbGF0IiwiZmx1ZW50LWVtb2ppLWhpZ2gtY29udHJhc3QiLCJmbHVlbnQtbWRsMiIsImZvbnRlbGljbyIsImZvbnRpc3RvIiwiZm9ybWtpdCIsImZvdW5kYXRpb24iLCJmeGVtb2ppIiwiZ2FsYSIsImdhbWUtaWNvbnMiLCJnYXJkZW4iLCJnZW8iLCJnZyIsImdpcyIsImdyYXZpdHktdWkiLCJncmlkaWNvbnMiLCJncm9tbWV0LWljb25zIiwiZ3VpZGFuY2UiLCJoZWFsdGhpY29ucyIsImhlcm9pY29ucyIsImhlcm9pY29ucy1vdXRsaW5lIiwiaGVyb2ljb25zLXNvbGlkIiwiaHVnZWljb25zIiwiaHVtYmxlaWNvbnMiLCJpYyIsImljb21vb24tZnJlZSIsImljb24tcGFyayIsImljb24tcGFyay1vdXRsaW5lIiwiaWNvbi1wYXJrLXNvbGlkIiwiaWNvbi1wYXJrLXR3b3RvbmUiLCJpY29uYW1vb24iLCJpY29ub2lyIiwiaWNvbnM4IiwiaWwiLCJpb24iLCJpd3dhIiwiaXgiLCJqYW0iLCJsYSIsImxldHMtaWNvbnMiLCJsaW5lLW1kIiwibGluZWljb25zIiwibG9nb3MiLCJscyIsImxzaWNvbiIsImx1Y2lkZSIsImx1Y2lkZS1sYWIiLCJtYWdlIiwibWFqZXN0aWNvbnMiLCJtYWtpIiwibWFwIiwibWFya2V0ZXEiLCJtYXRlcmlhbC1pY29uLXRoZW1lIiwibWF0ZXJpYWwtc3ltYm9scyIsIm1hdGVyaWFsLXN5bWJvbHMtbGlnaHQiLCJtZGkiLCJtZGktbGlnaHQiLCJtZWRpY2FsLWljb24iLCJtZW1vcnkiLCJtZXRlb2NvbnMiLCJtZXRlb3ItaWNvbnMiLCJtaSIsIm1pbmdjdXRlIiwibW9uby1pY29ucyIsIm15bmF1aSIsIm5pbWJ1cyIsIm5vbmljb25zIiwibm90byIsIm5vdG8tdjEiLCJucmsiLCJvY3RpY29uIiwib2kiLCJvb3VpIiwib3Blbm1vamkiLCJvdWkiLCJwYWphbWFzIiwicGVwaWNvbnMiLCJwZXBpY29ucy1wZW5jaWwiLCJwZXBpY29ucy1wb3AiLCJwZXBpY29ucy1wcmludCIsInBoIiwicGljb24iLCJwaXhlbCIsInBpeGVsYXJ0aWNvbnMiLCJwcmltZSIsInByb2ljb25zIiwicHMiLCJxbGVtZW50aW5lLWljb25zIiwicXVpbGwiLCJyYWRpeC1pY29ucyIsInJhcGhhZWwiLCJyaSIsInJpdmV0LWljb25zIiwicm9lbnRnZW4iLCJzaSIsInNpLWdseXBoIiwic2lkZWtpY2tpY29ucyIsInNpbXBsZS1pY29ucyIsInNpbXBsZS1saW5lLWljb25zIiwic2tpbGwtaWNvbnMiLCJzb2xhciIsInN0YXNoIiwic3RyZWFtbGluZSIsInN0cmVhbWxpbmUtYmxvY2siLCJzdHJlYW1saW5lLWNvbG9yIiwic3RyZWFtbGluZS1jeWJlciIsInN0cmVhbWxpbmUtY3liZXItY29sb3IiLCJzdHJlYW1saW5lLWVtb2ppcyIsInN0cmVhbWxpbmUtZmxleCIsInN0cmVhbWxpbmUtZmxleC1jb2xvciIsInN0cmVhbWxpbmUtZnJlZWhhbmQiLCJzdHJlYW1saW5lLWZyZWVoYW5kLWNvbG9yIiwic3RyZWFtbGluZS1rYW1lbGVvbi1jb2xvciIsInN0cmVhbWxpbmUtbG9nb3MiLCJzdHJlYW1saW5lLXBpeGVsIiwic3RyZWFtbGluZS1wbHVtcCIsInN0cmVhbWxpbmUtcGx1bXAtY29sb3IiLCJzdHJlYW1saW5lLXNoYXJwIiwic3RyZWFtbGluZS1zaGFycC1jb2xvciIsInN0cmVhbWxpbmUtc3RpY2tpZXMtY29sb3IiLCJzdHJlYW1saW5lLXVsdGltYXRlIiwic3RyZWFtbGluZS11bHRpbWF0ZS1jb2xvciIsInN1YndheSIsInN2Zy1zcGlubmVycyIsInN5c3RlbS11aWNvbnMiLCJ0YWJsZXIiLCJ0ZGVzaWduIiwidGVlbnlpY29ucyIsInRlbWFraSIsInRva2VuIiwidG9rZW4tYnJhbmRlZCIsInRvcGNvYXQiLCJ0d2Vtb2ppIiwidHlwY24iLCJ1aWwiLCJ1aW0iLCJ1aXMiLCJ1aXQiLCJ1aXciLCJ1bmpzIiwidmFhZGluIiwidnMiLCJ2c2NvZGUtaWNvbnMiLCJ3ZWJzeW1ib2wiLCJ3ZXVpIiwid2hoIiwid2kiLCJ3cGYiLCJ6bWRpIiwiem9uZGljb25zIl0sZmV0Y2hUaW1lb3V0OjE1MDB9LHVpOntjb2xvcnM6e3ByaW1hcnk6ImdyZWVuIixzZWNvbmRhcnk6ImJsdWUiLHN1Y2Nlc3M6ImdyZWVuIixpbmZvOiJibHVlIix3YXJuaW5nOiJ5ZWxsb3ciLGVycm9yOiJyZWQiLG5ldXRyYWw6InNsYXRlIn0saWNvbnM6e2Fycm93RG93bjoiaS1sdWNpZGUtYXJyb3ctZG93biIsYXJyb3dMZWZ0OiJpLWx1Y2lkZS1hcnJvdy1sZWZ0IixhcnJvd1JpZ2h0OiJpLWx1Y2lkZS1hcnJvdy1yaWdodCIsYXJyb3dVcDoiaS1sdWNpZGUtYXJyb3ctdXAiLGNhdXRpb246ImktbHVjaWRlLWNpcmNsZS1hbGVydCIsY2hlY2s6ImktbHVjaWRlLWNoZWNrIixjaGV2cm9uRG91YmxlTGVmdDoiaS1sdWNpZGUtY2hldnJvbnMtbGVmdCIsY2hldnJvbkRvdWJsZVJpZ2h0OiJpLWx1Y2lkZS1jaGV2cm9ucy1yaWdodCIsY2hldnJvbkRvd246ImktbHVjaWRlLWNoZXZyb24tZG93biIsY2hldnJvbkxlZnQ6ImktbHVjaWRlLWNoZXZyb24tbGVmdCIsY2hldnJvblJpZ2h0OiJpLWx1Y2lkZS1jaGV2cm9uLXJpZ2h0IixjaGV2cm9uVXA6ImktbHVjaWRlLWNoZXZyb24tdXAiLGNsb3NlOiJpLWx1Y2lkZS14Iixjb3B5OiJpLWx1Y2lkZS1jb3B5Iixjb3B5Q2hlY2s6ImktbHVjaWRlLWNvcHktY2hlY2siLGRhcms6ImktbHVjaWRlLW1vb24iLGRyYWc6ImktbHVjaWRlLWdyaXAtdmVydGljYWwiLGVsbGlwc2lzOiJpLWx1Y2lkZS1lbGxpcHNpcyIsZXJyb3I6ImktbHVjaWRlLWNpcmNsZS14IixleHRlcm5hbDoiaS1sdWNpZGUtYXJyb3ctdXAtcmlnaHQiLGV5ZToiaS1sdWNpZGUtZXllIixleWVPZmY6ImktbHVjaWRlLWV5ZS1vZmYiLGZpbGU6ImktbHVjaWRlLWZpbGUiLGZvbGRlcjoiaS1sdWNpZGUtZm9sZGVyIixmb2xkZXJPcGVuOiJpLWx1Y2lkZS1mb2xkZXItb3BlbiIsaGFzaDoiaS1sdWNpZGUtaGFzaCIsaW5mbzoiaS1sdWNpZGUtaW5mbyIsbGlnaHQ6ImktbHVjaWRlLXN1biIsbG9hZGluZzoiaS1sdWNpZGUtbG9hZGVyLWNpcmNsZSIsbWVudToiaS1sdWNpZGUtbWVudSIsbWludXM6ImktbHVjaWRlLW1pbnVzIixwYW5lbENsb3NlOiJpLWx1Y2lkZS1wYW5lbC1sZWZ0LWNsb3NlIixwYW5lbE9wZW46ImktbHVjaWRlLXBhbmVsLWxlZnQtb3BlbiIscGx1czoiaS1sdWNpZGUtcGx1cyIscmVsb2FkOiJpLWx1Y2lkZS1yb3RhdGUtY2N3IixzZWFyY2g6ImktbHVjaWRlLXNlYXJjaCIsc3RvcDoiaS1sdWNpZGUtc3F1YXJlIixzdWNjZXNzOiJpLWx1Y2lkZS1jaXJjbGUtY2hlY2siLHN5c3RlbToiaS1sdWNpZGUtbW9uaXRvciIsdGlwOiJpLWx1Y2lkZS1saWdodGJ1bGIiLHVwbG9hZDoiaS1sdWNpZGUtdXBsb2FkIix3YXJuaW5nOiJpLWx1Y2lkZS10cmlhbmdsZS1hbGVydCJ9LHR2Ont0d01lcmdlQ29uZmlnOnt9fX19KSxMaT0vXGQvLEFpPVsiLSIsIl8iLCIvIiwiLiJdO2Z1bmN0aW9uIGlzVXBwZXJjYXNlKGU9IiIpe2lmKCFMaS50ZXN0KGUpKXJldHVybiBlIT09ZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHVwcGVyRmlyc3QoZSl7cmV0dXJuIGU/ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk6IiJ9ZnVuY3Rpb24ga2ViYWJDYXNlKGUscyl7cmV0dXJuIGU/KEFycmF5LmlzQXJyYXkoZSk/ZTpmdW5jdGlvbihlKXtjb25zdCBzPUFpLGQ9W107aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZDtsZXQgbSxoLGc9IiI7Zm9yKGNvbnN0IHggb2YgZSl7Y29uc3QgZT1zLmluY2x1ZGVzKHgpO2lmKCEwPT09ZSl7ZC5wdXNoKGcpLGc9IiIsbT12b2lkIDA7Y29udGludWV9Y29uc3QgJD1pc1VwcGVyY2FzZSh4KTtpZighMT09PWgpe2lmKCExPT09bSYmITA9PT0kKXtkLnB1c2goZyksZz14LG09JDtjb250aW51ZX1pZighMD09PW0mJiExPT09JCYmZy5sZW5ndGg+MSl7Y29uc3QgZT1nLmF0KC0xKTtkLnB1c2goZy5zbGljZSgwLE1hdGgubWF4KDAsZy5sZW5ndGgtMSkpKSxnPWUreCxtPSQ7Y29udGludWV9fWcrPXgsbT0kLGg9ZX1yZXR1cm4gZC5wdXNoKGcpLGR9KGUpKS5tYXAoZT0+ZS50b0xvd2VyQ2FzZSgpKS5qb2luKHMpOiIifWZ1bmN0aW9uIGdldEVudihlLHMpe2NvbnN0IGQ9KG09ZSxrZWJhYkNhc2UobXx8IiIsIl8iKSkudG9VcHBlckNhc2UoKTt2YXIgbTtyZXR1cm4gZGVzdHIoVC5lbnZbcy5wcmVmaXgrZF0/P1QuZW52W3MuYWx0UHJlZml4K2RdKX1mdW5jdGlvbiBfaXNPYmplY3QoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhcHBseUVudihlLHMsZD0iIil7Zm9yKGNvbnN0IG0gaW4gZSl7Y29uc3QgaD1kP2Ake2R9XyR7bX1gOm0sZz1nZXRFbnYoaCxzKTtfaXNPYmplY3QoZVttXSk/X2lzT2JqZWN0KGcpPyhlW21dPXsuLi5lW21dLC4uLmd9LGFwcGx5RW52KGVbbV0scyxoKSk6dm9pZCAwPT09Zz9hcHBseUVudihlW21dLHMsaCk6ZVttXT1nPz9lW21dOmVbbV09Zz8/ZVttXSxzLmVudkV4cGFuc2lvbiYmInN0cmluZyI9PXR5cGVvZiBlW21dJiYoZVttXT1fZXhwYW5kRnJvbUVudihlW21dKSl9cmV0dXJuIGV9Y29uc3QgcWk9L1x7XHsoW157fV0qKVx9XH0vZztmdW5jdGlvbiBfZXhwYW5kRnJvbUVudihlKXtyZXR1cm4gZS5yZXBsYWNlKHFpLChlLHMpPT5ULmVudltzXXx8ZSl9Y29uc3QgRmk9e2FwcDp7YmFzZVVSTDoiLyIsYnVpbGRJZDoiZTIzOTc0YWEtZjg4ZC00YTQyLTk3NTktMWYxYWU3ODg0ZWY4IixidWlsZEFzc2V0c0RpcjoiL19udXh0LyIsY2RuVVJMOiIifSxuaXRybzp7ZW52UHJlZml4OiJOVVhUXyIscm91dGVSdWxlczp7Ii9fX251eHRfZXJyb3IiOntjYWNoZTohMX0sIi91c2VycyI6e3JlZGlyZWN0Ont0bzoiL29yZ2FuaXphdGlvbi9tZW1iZXJzIixzdGF0dXNDb2RlOjMwN319LCIvYXBpLyoqIjp7Y3N1cmY6ITF9LCIvYXBpL3BheW1lbnRzL3NlcGF5L3dlYmhvb2siOntjb3JzOiExLHNlY3VyaXR5OntyYXRlTGltaXRlcjohMX19LCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9zZW5kIjp7c2VjdXJpdHk6e3hzc1ZhbGlkYXRvcjohMX19LCIvYXBpL3N1cHBvcnQvdGlja2V0cyI6e3NlY3VyaXR5Ont4c3NWYWxpZGF0b3I6ITF9fSwiL2FwaS9zdXBwb3J0L3RpY2tldHMvKioiOntzZWN1cml0eTp7eHNzVmFsaWRhdG9yOiExfX0sIi9hcGkvc3lzdGVtL3RpY2tldHMiOntzZWN1cml0eTp7eHNzVmFsaWRhdG9yOiExfX0sIi9hcGkvc3lzdGVtL3RpY2tldHMvKioiOntzZWN1cml0eTp7eHNzVmFsaWRhdG9yOiExfX0sIi9hcGkvYXV0aC8qKiI6e2NvcnM6ITF9LCIvYXBpL2Nyb24vKioiOntjb3JzOiExfSwiL19fbnV4dF9oaW50cy8qKiI6e2NvcnM6ITEsY3N1cmY6ITF9LCIvKioiOntoZWFkZXJzOnsiUmVmZXJyZXItUG9saWN5Ijoibm8tcmVmZXJyZXIiLCJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IjoibWF4LWFnZT0xNTU1MjAwMDsgaW5jbHVkZVN1YkRvbWFpbnM7IHByZWxvYWQiLCJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIjoibm9zbmlmZiIsIlgtRG93bmxvYWQtT3B0aW9ucyI6Im5vb3BlbiIsIlgtRnJhbWUtT3B0aW9ucyI6IlNBTUVPUklHSU4iLCJYLVBlcm1pdHRlZC1Dcm9zcy1Eb21haW4tUG9saWNpZXMiOiJub25lIiwiWC1YU1MtUHJvdGVjdGlvbiI6IjAifX0sIi9fbnV4dC9idWlsZHMvbWV0YS8qKiI6e2hlYWRlcnM6eyJjYWNoZS1jb250cm9sIjoicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwLCBpbW11dGFibGUifX0sIi9fbnV4dC9idWlsZHMvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0xLCBpbW11dGFibGUifX0sIi9fZm9udHMvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlIn19LCIvX3NjcmlwdHMvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlIn19LCIvX251eHQvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlIn19fX0scHVibGljOntzc2xFbmFibGVkOiExLGJhc2VEb21haW46ImxvY2FsaG9zdDozMDAwIixkZW1vTW9kZTohMSwibnV4dC1zY3JpcHRzIjp7dmVyc2lvbjoiIixkZWZhdWx0U2NyaXB0T3B0aW9uczp7dHJpZ2dlcjoib25OdXh0UmVhZHkifX0sZGV2aWNlOntkZWZhdWx0VXNlckFnZW50OiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xM18yKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNjQuMC4zMjgyLjM5IFNhZmFyaS81MzcuMzYifSxodWI6e30sY3N1cmY6e2hlYWRlck5hbWU6ImNzcmYtdG9rZW4ifX0sYXV0aFNlY3JldDoiIix3ZWJob29rU2lnbmluZ1NlY3JldDoiIixnb29nbGVDbGllbnRJZDoiIixnb29nbGVDbGllbnRTZWNyZXQ6IiIsZ2l0aHViQ2xpZW50SWQ6IiIsZ2l0aHViQ2xpZW50U2VjcmV0OiIiLHNtdHBIb3N0OiJsb2NhbGhvc3QiLHNtdHBQb3J0OjEwMjUsc210cFVzZXI6IiIsc210cFBhc3M6IiIsc210cEZyb206Ik51eHQgVGVtcGxhdGUgPG5vcmVwbHlAbG9jYWxob3N0PiIsc2VwYXlUcmFuc2FjdGlvblByZWZpeDoiIixzZXBheUJhbmtOdW1iZXI6IiIsc2VwYXlCYW5rTmFtZToiIix0YXNrU2VjcmV0OiIiLGNyb25TZWNyZXQ6IiIsY3VzdG9tZXJTdXBwb3J0RW1haWw6IiIsZ2l0aHViUmVsZWFzZVJlcG86IiIsZ2l0aHViVG9rZW46IiIsaWNvbjp7c2VydmVyS25vd25Dc3NDbGFzc2VzOltdfSwibnV4dC1zY3JpcHRzIjp7dmVyc2lvbjoiMC4xMy4yIn0saHViOntkaXI6Ii9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS8uZGF0YSIsaG9zdGluZzoiY2xvdWRmbGFyZS1tb2R1bGUiLGJsb2I6e2RyaXZlcjoiY2xvdWRmbGFyZS1yMiIsYnVja2V0TmFtZToibnV4dC10ZW1wbGF0ZS1wcm9kIixiaW5kaW5nOiJCTE9CIn0sY2FjaGU6e2JpbmRpbmc6IkNBQ0hFIixkcml2ZXI6ImNsb3VkZmxhcmUta3YtYmluZGluZyJ9LGRiOnttaWdyYXRpb25zRGlyczpbIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvc3lzdGVtL3NlcnZlci9kYi9taWdyYXRpb25zIiwiL1VzZXJzL2hhb25ndXllbi9Eb2N1bWVudHMvdGhlY29kZW9yaWdpbi9udXh0LXRlbXBsYXRlL2xheWVycy9zdXBwb3J0L3NlcnZlci9kYi9taWdyYXRpb25zIiwiL1VzZXJzL2hhb25ndXllbi9Eb2N1bWVudHMvdGhlY29kZW9yaWdpbi9udXh0LXRlbXBsYXRlL2xheWVycy9zZWxmaG9zdC9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvcmVmZXJyYWwvc2VydmVyL2RiL21pZ3JhdGlvbnMiLCIvVXNlcnMvaGFvbmd1eWVuL0RvY3VtZW50cy90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUvbGF5ZXJzL3Byb2plY3Qvc2VydmVyL2RiL21pZ3JhdGlvbnMiLCIvVXNlcnMvaGFvbmd1eWVuL0RvY3VtZW50cy90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUvbGF5ZXJzL3Byb2R1Y3Qvc2VydmVyL2RiL21pZ3JhdGlvbnMiLCIvVXNlcnMvaGFvbmd1eWVuL0RvY3VtZW50cy90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUvbGF5ZXJzL25vdGlmaWNhdGlvbi9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvYmlsbGluZy9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvYXV0aC9zZXJ2ZXIvZGIvbWlncmF0aW9ucyJdLHF1ZXJpZXNQYXRoczpbXSxhcHBseU1pZ3JhdGlvbnNEdXJpbmdCdWlsZDohMSxhcHBseU1pZ3JhdGlvbnNEdXJpbmdEZXY6ITAsZGlhbGVjdDoic3FsaXRlIixkcml2ZXI6ImQxIixjb25uZWN0aW9uOntkYXRhYmFzZUlkOiIifX0sa3Y6e2JpbmRpbmc6IktWIixkcml2ZXI6ImNsb3VkZmxhcmUta3YtYmluZGluZyJ9fSxwcml2YXRlOntiYXNpY0F1dGg6ITF9LHNlY3VyaXR5OntzdHJpY3Q6ITAsaGVhZGVyczp7Y3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeToic2FtZS1vcmlnaW4iLGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OiJzYW1lLW9yaWdpbiIsY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTohMSxjb250ZW50U2VjdXJpdHlQb2xpY3k6eyJiYXNlLXVyaSI6WyInbm9uZSciXSwiZGVmYXVsdC1zcmMiOlsiJ3NlbGYnIl0sImNvbm5lY3Qtc3JjIjpbIidzZWxmJyIsIndzOiIsIndzczoiLCJodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS8iLCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9yZWNhcHRjaGEvIiwiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20iLCJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZWFwaXMuY29tIiwiaHR0cHM6Ly9pZGVudGl0eXRvb2xraXQuZ29vZ2xlYXBpcy5jb20iLCJodHRwczovL2ZpcmVzdG9yZS5nb29nbGVhcGlzLmNvbSIsImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIl0sImZvbnQtc3JjIjpbIidzZWxmJyIsImh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iXSwiZm9ybS1hY3Rpb24iOlsiJ3NlbGYnIl0sImZyYW1lLWFuY2VzdG9ycyI6WyInc2VsZiciXSwiZnJhbWUtc3JjIjpbIidzZWxmJyIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vIiwiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vcmVjYXB0Y2hhLyIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhLyJdLCJpbWctc3JjIjpbIidzZWxmJyIsImRhdGE6IiwiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvIiwiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vcmVjYXB0Y2hhLyIsImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImh0dHBzOi8vZ2l0aHViLmNvbSIsImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIiwiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS8iLCJodHRwczovL3FyLnNlcGF5LnZuIl0sIm1hbmlmZXN0LXNyYyI6WyInc2VsZiciXSwibWVkaWEtc3JjIjpbIidzZWxmJyJdLCJvYmplY3Qtc3JjIjpbIidub25lJyJdLCJzY3JpcHQtc3JjLWF0dHIiOlsiJ25vbmUnIl0sInN0eWxlLXNyYyI6WyInc2VsZiciLCIndW5zYWZlLWlubGluZSciLCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIl0sInNjcmlwdC1zcmMiOlsiJ3NlbGYnIiwiJ3Vuc2FmZS1pbmxpbmUnIiwiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20iLCJodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS8iLCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9yZWNhcHRjaGEvIl0sInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiOiEwLCJ3b3JrZXItc3JjIjpbIidzZWxmJyJdfSxvcmlnaW5BZ2VudENsdXN0ZXI6Ij8xIixyZWZlcnJlclBvbGljeToibm8tcmVmZXJyZXIiLHN0cmljdFRyYW5zcG9ydFNlY3VyaXR5OnttYXhBZ2U6MTU1NTJlMyxpbmNsdWRlU3ViZG9tYWluczohMCxwcmVsb2FkOiEwfSx4Q29udGVudFR5cGVPcHRpb25zOiJub3NuaWZmIix4RE5TUHJlZmV0Y2hDb250cm9sOiJvZmYiLHhEb3dubG9hZE9wdGlvbnM6Im5vb3BlbiIseEZyYW1lT3B0aW9uczoiU0FNRU9SSUdJTiIseFBlcm1pdHRlZENyb3NzRG9tYWluUG9saWNpZXM6Im5vbmUiLHhYU1NQcm90ZWN0aW9uOiIwIixwZXJtaXNzaW9uc1BvbGljeTp7YWNjZWxlcm9tZXRlcjpbXSxhdXRvcGxheTpbXSxjYW1lcmE6W10sImRpc3BsYXktY2FwdHVyZSI6W10sImVuY3J5cHRlZC1tZWRpYSI6W10sZnVsbHNjcmVlbjpbXSxnZW9sb2NhdGlvbjpbXSxneXJvc2NvcGU6W10sbWFnbmV0b21ldGVyOltdLG1pY3JvcGhvbmU6W10sbWlkaTpbXSxwYXltZW50OltdLCJwaWN0dXJlLWluLXBpY3R1cmUiOltdLCJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IjpbXSwic2NyZWVuLXdha2UtbG9jayI6W10sInN5bmMteGhyIjpbInNlbGYiXSx1c2I6W10sIndlYi1zaGFyZSI6W10sInhyLXNwYXRpYWwtdHJhY2tpbmciOltdfX0scmVxdWVzdFNpemVMaW1pdGVyOnttYXhSZXF1ZXN0U2l6ZUluQnl0ZXM6MjA5NzE1MixtYXhVcGxvYWRGaWxlUmVxdWVzdEluQnl0ZXM6ODM4ODYwOCx0aHJvd0Vycm9yOiEwfSxyYXRlTGltaXRlcjp7dG9rZW5zUGVySW50ZXJ2YWw6MTUwLGludGVydmFsOjNlNSxoZWFkZXJzOiExLGRyaXZlcjp7bmFtZToibHJ1LWNhY2hlIn0sd2hpdGVMaXN0OlsiMTI3LjAuMC4xIiwiOjoxIiwibG9jYWxob3N0Il0saXBIZWFkZXI6IiIsdGhyb3dFcnJvcjohMH0seHNzVmFsaWRhdG9yOnttZXRob2RzOlsiR0VUIiwiUE9TVCJdLHRocm93RXJyb3I6ITB9LGNvcnNIYW5kbGVyOntvcmlnaW46Imh0dHA6Ly9sb2NhbGhvc3Q6MzAwMiIsbWV0aG9kczpbIkdFVCIsIlBPU1QiLCJQVVQiLCJQQVRDSCIsIkRFTEVURSIsIk9QVElPTlMiXSxwcmVmbGlnaHQ6e3N0YXR1c0NvZGU6MjA0fSxhbGxvd0hlYWRlcnM6WyJDb250ZW50LVR5cGUiLCJBdXRob3JpemF0aW9uIl0sY3JlZGVudGlhbHM6ITB9LGFsbG93ZWRNZXRob2RzUmVzdHJpY3Rlcjp7bWV0aG9kczoiKiIsdGhyb3dFcnJvcjohMH0saGlkZVBvd2VyZWRCeTohMCxlbmFibGVkOiEwLGNzcmY6e2VuYWJsZWQ6ITB9LG5vbmNlOiEwLHJlbW92ZUxvZ2dlcnM6ITAsc3NnOnttZXRhOiEwLGhhc2hTY3JpcHRzOiEwLGhhc2hTdHlsZXM6ITEsbml0cm9IZWFkZXJzOiEwLGV4cG9ydFRvUHJlc2V0czohMH0sc3JpOiEwfSxjc3VyZjp7aHR0cHM6ITAsY29va2llS2V5OiJfX0hvc3QtY3NyZiIsY29va2llOntwYXRoOiIvIixodHRwT25seTohMCxzYW1lU2l0ZToic3RyaWN0IixzZWN1cmU6ITB9LGhlYWRlck5hbWU6ImNzcmYtdG9rZW4iLG1ldGhvZHNUb1Byb3RlY3Q6WyJQT1NUIiwiUFVUIiwiUEFUQ0giXSxlbmFibGVkOiEwLGVuY3J5cHRTZWNyZXQ6IjgwZG9UR0RMemIyWmVZN0NoUE03ZHRwOStveER2dz09In0scmVzZW5kOnthcGlLZXk6IiJ9fSxCaT17cHJlZml4OiJOSVRST18iLGFsdFByZWZpeDpGaS5uaXRyby5lbnZQcmVmaXg/P1QuZW52Lk5JVFJPX0VOVl9QUkVGSVg/PyJfIixlbnZFeHBhbnNpb246Rmkubml0cm8uZW52RXhwYW5zaW9uPz9ULmVudi5OSVRST19FTlZfRVhQQU5TSU9OPz8hMX0sWmk9X2RlZXBGcmVlemUoYXBwbHlFbnYoa2xvbmEoRmkpLEJpKSk7ZnVuY3Rpb24gdXNlUnVudGltZUNvbmZpZyhlKXtpZighZSlyZXR1cm4gWmk7aWYoZS5jb250ZXh0Lm5pdHJvLnJ1bnRpbWVDb25maWcpcmV0dXJuIGUuY29udGV4dC5uaXRyby5ydW50aW1lQ29uZmlnO2NvbnN0IHM9a2xvbmEoRmkpO3JldHVybiBhcHBseUVudihzLEJpKSxlLmNvbnRleHQubml0cm8ucnVudGltZUNvbmZpZz1zLHN9Y29uc3QgTWk9X2RlZXBGcmVlemUoa2xvbmEoVWkpKTtmdW5jdGlvbiBfZGVlcEZyZWV6ZShlKXtjb25zdCBzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpO2Zvcihjb25zdCBkIG9mIHMpe2NvbnN0IHM9ZVtkXTtzJiYib2JqZWN0Ij09dHlwZW9mIHMmJl9kZWVwRnJlZXplKHMpfXJldHVybiBPYmplY3QuZnJlZXplKGUpfW5ldyBQcm94eShPYmplY3QuY3JlYXRlKG51bGwpLHtnZXQ6KGUscyk9Pntjb25zb2xlLndhcm4oIlBsZWFzZSB1c2UgYHVzZVJ1bnRpbWVDb25maWcoKWAgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgY29uZmlnIGRpcmVjdGx5LiIpO2NvbnN0IGQ9dXNlUnVudGltZUNvbmZpZygpO2lmKHMgaW4gZClyZXR1cm4gZFtzXX19KTtjb25zdCBRaT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp2b2lkIDAhPT1Ibj9Ibjp7fSxWaT0iX191bmN0eF9fIixIaT1RaVtWaV18fChRaVtWaV09ZnVuY3Rpb24oZT17fSl7Y29uc3Qgcz17fTtyZXR1cm57Z2V0OihkLG09e30pPT4oc1tkXXx8KHNbZF09ZnVuY3Rpb24oZT17fSl7bGV0IHMsZD0hMTtjb25zdCBjaGVja0NvbmZsaWN0PWU9PntpZihzJiZzIT09ZSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgY29uZmxpY3QiKX07bGV0IG07aWYoZS5hc3luY0NvbnRleHQpe2NvbnN0IHM9ZS5Bc3luY0xvY2FsU3RvcmFnZXx8Z2xvYmFsVGhpcy5Bc3luY0xvY2FsU3RvcmFnZTtzP209bmV3IHM6Y29uc29sZS53YXJuKCJbdW5jdHhdIGBBc3luY0xvY2FsU3RvcmFnZWAgaXMgbm90IHByb3ZpZGVkLiIpfWNvbnN0IF9nZXRDdXJyZW50SW5zdGFuY2U9KCk9PntpZihtKXtjb25zdCBlPW0uZ2V0U3RvcmUoKTtpZih2b2lkIDAhPT1lKXJldHVybiBlfXJldHVybiBzfTtyZXR1cm57dXNlOigpPT57Y29uc3QgZT1fZ2V0Q3VycmVudEluc3RhbmNlKCk7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIpO3JldHVybiBlfSx0cnlVc2U6KCk9Pl9nZXRDdXJyZW50SW5zdGFuY2UoKSxzZXQ6KGUsbSk9PnttfHxjaGVja0NvbmZsaWN0KGUpLHM9ZSxkPSEwfSx1bnNldDooKT0+e3M9dm9pZCAwLGQ9ITF9LGNhbGw6KGUsaCk9PntjaGVja0NvbmZsaWN0KGUpLHM9ZTt0cnl7cmV0dXJuIG0/bS5ydW4oZSxoKTpoKCl9ZmluYWxseXtkfHwocz12b2lkIDApfX0sYXN5bmMgY2FsbEFzeW5jKGUsaCl7cz1lO2NvbnN0IG9uUmVzdG9yZT0oKT0+e3M9ZX0sb25MZWF2ZT0oKT0+cz09PWU/b25SZXN0b3JlOnZvaWQgMDtKaS5hZGQob25MZWF2ZSk7dHJ5e2NvbnN0IGc9bT9tLnJ1bihlLGgpOmgoKTtyZXR1cm4gZHx8KHM9dm9pZCAwKSxhd2FpdCBnfWZpbmFsbHl7SmkuZGVsZXRlKG9uTGVhdmUpfX19fSh7Li4uZSwuLi5tfSkpLHNbZF0pfX0oKSksZ2V0Q29udGV4dD0oZSxzPXt9KT0+SGkuZ2V0KGUscyksV2k9Il9fdW5jdHhfYXN5bmNfaGFuZGxlcnNfXyIsSmk9UWlbV2ldfHwoUWlbV2ldPW5ldyBTZXQpO2Z1bmN0aW9uIGV4ZWN1dGVBc3luYyhlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBlIG9mIEppKXtjb25zdCBkPWUoKTtkJiZzLnB1c2goZCl9Y29uc3QgcmVzdG9yZT0oKT0+e2Zvcihjb25zdCBlIG9mIHMpZSgpfTtsZXQgZD1lKCk7cmV0dXJuIGQmJiJvYmplY3QiPT10eXBlb2YgZCYmImNhdGNoImluIGQmJihkPWQuY2F0Y2goZT0+e3Rocm93IHJlc3RvcmUoKSxlfSkpLFtkLHJlc3RvcmVdfWNvbnN0IEtpPWdldENvbnRleHQoIm5pdHJvLWFwcCIse2FzeW5jQ29udGV4dDohMCxBc3luY0xvY2FsU3RvcmFnZTp4fSksR2k9dG9Sb3V0ZU1hdGNoZXIoY3JlYXRlUm91dGVyJDEoe3JvdXRlczp1c2VSdW50aW1lQ29uZmlnKCkubml0cm8ucm91dGVSdWxlc30pKTtmdW5jdGlvbiBnZXRSb3V0ZVJ1bGVzKGUpe3JldHVybiBlLmNvbnRleHQuX25pdHJvPWUuY29udGV4dC5fbml0cm98fHt9LGUuY29udGV4dC5fbml0cm8ucm91dGVSdWxlc3x8KGUuY29udGV4dC5fbml0cm8ucm91dGVSdWxlcz1nZXRSb3V0ZVJ1bGVzRm9yUGF0aCh3aXRob3V0QmFzZShlLnBhdGguc3BsaXQoIj8iKVswXSx1c2VSdW50aW1lQ29uZmlnKCkuYXBwLmJhc2VVUkwpKSksZS5jb250ZXh0Ll9uaXRyby5yb3V0ZVJ1bGVzfWZ1bmN0aW9uIGdldFJvdXRlUnVsZXNGb3JQYXRoKGUpe3JldHVybiB3bih7fSwuLi5HaS5tYXRjaEFsbChlKS5yZXZlcnNlKCkpfWNvbnN0IFhpPS9wb3N0fHB1dHxwYXRjaC9pO2Z1bmN0aW9uIGpvaW5IZWFkZXJzKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Uuam9pbigiLCAiKTpTdHJpbmcoZSl9ZnVuY3Rpb24gbm9ybWFsaXplQ29va2llSGVhZGVyKGU9IiIpe3JldHVybiBzcGxpdENvb2tpZXNTdHJpbmcoam9pbkhlYWRlcnMoZSkpfWZ1bmN0aW9uIG5vcm1hbGl6ZUNvb2tpZUhlYWRlcnMoZSl7Y29uc3Qgcz1uZXcgSGVhZGVycztmb3IoY29uc3RbZCxtXW9mIGUpaWYoInNldC1jb29raWUiPT09ZClmb3IoY29uc3QgZSBvZiBub3JtYWxpemVDb29raWVIZWFkZXIobSkpcy5hcHBlbmQoInNldC1jb29raWUiLGUpO2Vsc2Ugcy5zZXQoZCxqb2luSGVhZGVycyhtKSk7cmV0dXJuIHN9ZnVuY3Rpb24gaGFzUmVxSGVhZGVyKGUscyxkKXtjb25zdCBtPWdldFJlcXVlc3RIZWFkZXIoZSxzKTtyZXR1cm4hKCFtfHwic3RyaW5nIiE9dHlwZW9mIG18fCFtLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZCkpfWNvbnN0IGVycm9ySGFuZGxlciQxPWZ1bmN0aW9uKGUscyl7Y29uc3QgZD1kZWZhdWx0SGFuZGxlcihlLHMpO3JldHVybiBzZXRSZXNwb25zZUhlYWRlcnMocyxkLmhlYWRlcnMpLHNldFJlc3BvbnNlU3RhdHVzKHMsZC5zdGF0dXMsZC5zdGF0dXNUZXh0KSxzZW5kKHMsSlNPTi5zdHJpbmdpZnkoZC5ib2R5LG51bGwsMikpfTtmdW5jdGlvbiBkZWZhdWx0SGFuZGxlcihlLHMsZCl7Y29uc3QgbT1lLnVuaGFuZGxlZHx8ZS5mYXRhbCxoPWUuc3RhdHVzQ29kZXx8NTAwLGc9ZS5zdGF0dXNNZXNzYWdlfHwiU2VydmVyIEVycm9yIix4PWdldFJlcXVlc3RVUkwocyx7eEZvcndhcmRlZEhvc3Q6ITAseEZvcndhcmRlZFByb3RvOiEwfSk7aWYoNDA0PT09aCl7Y29uc3QgZT0iLyI7aWYoL15cL1teL10vLnRlc3QoZSkmJiF4LnBhdGhuYW1lLnN0YXJ0c1dpdGgoZSkpe3JldHVybntzdGF0dXM6MzAyLHN0YXR1c1RleHQ6IkZvdW5kIixoZWFkZXJzOntsb2NhdGlvbjpgJHtlfSR7eC5wYXRobmFtZS5zbGljZSgxKX0ke3guc2VhcmNofWB9LGJvZHk6IlJlZGlyZWN0aW5nLi4uIn19fWlmKG0mJiFkPy5zaWxlbnQpe2NvbnN0IGQ9W2UudW5oYW5kbGVkJiYiW3VuaGFuZGxlZF0iLGUuZmF0YWwmJiJbZmF0YWxdIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKTtjb25zb2xlLmVycm9yKGBbcmVxdWVzdCBlcnJvcl0gJHtkfSBbJHtzLm1ldGhvZH1dICR7eH1cbmAsZSl9Y29uc3QgJD17ImNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJ4LWNvbnRlbnQtdHlwZS1vcHRpb25zIjoibm9zbmlmZiIsIngtZnJhbWUtb3B0aW9ucyI6IkRFTlkiLCJyZWZlcnJlci1wb2xpY3kiOiJuby1yZWZlcnJlciIsImNvbnRlbnQtc2VjdXJpdHktcG9saWN5Ijoic2NyaXB0LXNyYyAnbm9uZSc7IGZyYW1lLWFuY2VzdG9ycyAnbm9uZSc7In07c2V0UmVzcG9uc2VTdGF0dXMocyxoLGcpLDQwNCE9PWgmJmdldFJlc3BvbnNlSGVhZGVyKHMsImNhY2hlLWNvbnRyb2wiKXx8KCRbImNhY2hlLWNvbnRyb2wiXT0ibm8tY2FjaGUiKTtyZXR1cm57c3RhdHVzOmgsc3RhdHVzVGV4dDpnLGhlYWRlcnM6JCxib2R5OntlcnJvcjohMCx1cmw6eC5ocmVmLHN0YXR1c0NvZGU6aCxzdGF0dXNNZXNzYWdlOmcsbWVzc2FnZTptPyJTZXJ2ZXIgRXJyb3IiOmUubWVzc2FnZSxkYXRhOm0/dm9pZCAwOmUuZGF0YX19fWNvbnN0IFlpPVthc3luYyBmdW5jdGlvbihlLHMse2RlZmF1bHRIYW5kbGVyOmR9KXtpZihzLmhhbmRsZWR8fGZ1bmN0aW9uKGUpe3JldHVybiFoYXNSZXFIZWFkZXIoZSwiYWNjZXB0IiwidGV4dC9odG1sIikmJihoYXNSZXFIZWFkZXIoZSwiYWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpfHxoYXNSZXFIZWFkZXIoZSwidXNlci1hZ2VudCIsImN1cmwvIil8fGhhc1JlcUhlYWRlcihlLCJ1c2VyLWFnZW50IiwiaHR0cGllLyIpfHxoYXNSZXFIZWFkZXIoZSwic2VjLWZldGNoLW1vZGUiLCJjb3JzIil8fGUucGF0aC5zdGFydHNXaXRoKCIvYXBpLyIpfHxlLnBhdGguZW5kc1dpdGgoIi5qc29uIikpfShzKSlyZXR1cm47Y29uc3QgbT1hd2FpdCBkKGUscyx7anNvbjohMH0pO2lmKDQwND09PShlLnN0YXR1c3x8ZS5zdGF0dXNDb2RlfHw1MDApJiYzMDI9PT1tLnN0YXR1cylyZXR1cm4gc2V0UmVzcG9uc2VIZWFkZXJzKHMsbS5oZWFkZXJzKSxzZXRSZXNwb25zZVN0YXR1cyhzLG0uc3RhdHVzLG0uc3RhdHVzVGV4dCksc2VuZChzLEpTT04uc3RyaW5naWZ5KG0uYm9keSxudWxsLDIpKTtjb25zdCBoPW0uYm9keSxnPW5ldyBVUkwoaC51cmwpO2gudXJsPXdpdGhvdXRCYXNlKGcucGF0aG5hbWUsdXNlUnVudGltZUNvbmZpZyhzKS5hcHAuYmFzZVVSTCkrZy5zZWFyY2grZy5oYXNoLGgubWVzc2FnZT1lLnVuaGFuZGxlZD9oLm1lc3NhZ2V8fCJTZXJ2ZXIgRXJyb3IiOmUubWVzc2FnZXx8aC5tZXNzYWdlfHwiU2VydmVyIEVycm9yIixoLmRhdGF8fD1lLmRhdGEsaC5zdGF0dXNUZXh0fHw9ZS5zdGF0dXNUZXh0fHxlLnN0YXR1c01lc3NhZ2UsZGVsZXRlIG0uaGVhZGVyc1siY29udGVudC10eXBlIl0sZGVsZXRlIG0uaGVhZGVyc1siY29udGVudC1zZWN1cml0eS1wb2xpY3kiXSxzZXRSZXNwb25zZUhlYWRlcnMocyxtLmhlYWRlcnMpO2NvbnN0IHg9Z2V0UmVxdWVzdEhlYWRlcnMocyksJD1zLnBhdGguc3RhcnRzV2l0aCgiL19fbnV4dF9lcnJvciIpfHwhIXhbIngtbnV4dC1lcnJvciJdP251bGw6YXdhaXQgdXNlTml0cm9BcHAoKS5sb2NhbEZldGNoKHdpdGhRdWVyeShqb2luVVJMKHVzZVJ1bnRpbWVDb25maWcocykuYXBwLmJhc2VVUkwsIi9fX251eHRfZXJyb3IiKSxoKSx7aGVhZGVyczp7Li4ueCwieC1udXh0LWVycm9yIjoidHJ1ZSJ9LHJlZGlyZWN0OiJtYW51YWwifSkuY2F0Y2goKCk9Pm51bGwpO2lmKHMuaGFuZGxlZClyZXR1cm47aWYoISQpe2NvbnN0e3RlbXBsYXRlOmV9PWF3YWl0IGltcG9ydCgiLi4vXy9lcnJvci01MDAubWpzIik7cmV0dXJuIHNldFJlc3BvbnNlSGVhZGVyKHMsIkNvbnRlbnQtVHlwZSIsInRleHQvaHRtbDtjaGFyc2V0PVVURi04Iiksc2VuZChzLGUoaCkpfWNvbnN0IFM9YXdhaXQgJC50ZXh0KCk7Zm9yKGNvbnN0W2UsZF1vZiAkLmhlYWRlcnMuZW50cmllcygpKSJzZXQtY29va2llIiE9PWU/c2V0UmVzcG9uc2VIZWFkZXIocyxlLGQpOmFwcGVuZFJlc3BvbnNlSGVhZGVyKHMsZSxkKTtyZXR1cm4gc2V0UmVzcG9uc2VTdGF0dXMocywkLnN0YXR1cyYmMjAwIT09JC5zdGF0dXM/JC5zdGF0dXM6bS5zdGF0dXMsJC5zdGF0dXNUZXh0fHxtLnN0YXR1c1RleHQpLHNlbmQocyxTKX0sZXJyb3JIYW5kbGVyJDFdO2NvbnN0IGVyPXtmYXRhbDowLGVycm9yOjAsd2FybjoxLGxvZzoyLGluZm86MyxzdWNjZXNzOjMsZmFpbDozLGRlYnVnOjQsdHJhY2U6NSx2ZXJib3NlOk51bWJlci5QT1NJVElWRV9JTkZJTklUWX0sdHI9e3NpbGVudDp7bGV2ZWw6LTF9LGZhdGFsOntsZXZlbDplci5mYXRhbH0sZXJyb3I6e2xldmVsOmVyLmVycm9yfSx3YXJuOntsZXZlbDplci53YXJufSxsb2c6e2xldmVsOmVyLmxvZ30saW5mbzp7bGV2ZWw6ZXIuaW5mb30sc3VjY2Vzczp7bGV2ZWw6ZXIuc3VjY2Vzc30sZmFpbDp7bGV2ZWw6ZXIuZmFpbH0scmVhZHk6e2xldmVsOmVyLmluZm99LHN0YXJ0OntsZXZlbDplci5pbmZvfSxib3g6e2xldmVsOmVyLmluZm99LGRlYnVnOntsZXZlbDplci5kZWJ1Z30sdHJhY2U6e2xldmVsOmVyLnRyYWNlfSx2ZXJib3NlOntsZXZlbDplci52ZXJib3NlfX07ZnVuY3Rpb24gaXNQbGFpbk9iamVjdCQxKGUpe2lmKG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGUpcmV0dXJuITE7Y29uc3Qgcz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuKG51bGw9PT1zfHxzPT09T2JqZWN0LnByb3RvdHlwZXx8bnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihzKSkmJighKFN5bWJvbC5pdGVyYXRvciBpbiBlKSYmKCEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIGUpfHwiW29iamVjdCBNb2R1bGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSkpfWZ1bmN0aW9uIF9kZWZ1KGUscyxkPSIuIixtKXtpZighaXNQbGFpbk9iamVjdCQxKHMpKXJldHVybiBfZGVmdShlLHt9LGQpO2NvbnN0IGg9T2JqZWN0LmFzc2lnbih7fSxzKTtmb3IoY29uc3QgcyBpbiBlKXtpZigiX19wcm90b19fIj09PXN8fCJjb25zdHJ1Y3RvciI9PT1zKWNvbnRpbnVlO2NvbnN0IG09ZVtzXTtudWxsIT1tJiYoQXJyYXkuaXNBcnJheShtKSYmQXJyYXkuaXNBcnJheShoW3NdKT9oW3NdPVsuLi5tLC4uLmhbc11dOmlzUGxhaW5PYmplY3QkMShtKSYmaXNQbGFpbk9iamVjdCQxKGhbc10pP2hbc109X2RlZnUobSxoW3NdLChkP2Ake2R9LmA6IiIpK3MudG9TdHJpbmcoKSk6aFtzXT1tKX1yZXR1cm4gaH1jb25zdCBkZWZ1PSguLi5lKT0+ZS5yZWR1Y2UoKGUscyk9Pl9kZWZ1KGUscywiIikse30pO2Z1bmN0aW9uIGlzTG9nT2JqKGUpe3JldHVybiBzPWUsIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocykmJighKCFlLm1lc3NhZ2UmJiFlLmFyZ3MpJiYhZS5zdGFjayk7dmFyIHN9bGV0IG5yPSExO2NvbnN0IGlyPVtdO2NsYXNzIENvbnNvbGF7b3B0aW9ucztfbGFzdExvZztfbW9ja0ZuO2NvbnN0cnVjdG9yKGU9e30pe2NvbnN0IHM9ZS50eXBlc3x8dHI7dGhpcy5vcHRpb25zPWRlZnUoey4uLmUsZGVmYXVsdHM6ey4uLmUuZGVmYXVsdHN9LGxldmVsOl9ub3JtYWxpemVMb2dMZXZlbChlLmxldmVsLHMpLHJlcG9ydGVyczpbLi4uZS5yZXBvcnRlcnN8fFtdXX0se3R5cGVzOnRyLHRocm90dGxlOjFlMyx0aHJvdHRsZU1pbjo1LGZvcm1hdE9wdGlvbnM6e2RhdGU6ITAsY29sb3JzOiExLGNvbXBhY3Q6ITB9fSk7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgZD17dHlwZTplLC4uLnRoaXMub3B0aW9ucy5kZWZhdWx0cywuLi5zW2VdfTt0aGlzW2VdPXRoaXMuX3dyYXBMb2dGbihkKSx0aGlzW2VdLnJhdz10aGlzLl93cmFwTG9nRm4oZCwhMCl9dGhpcy5vcHRpb25zLm1vY2tGbiYmdGhpcy5tb2NrVHlwZXMoKSx0aGlzLl9sYXN0TG9nPXt9fWdldCBsZXZlbCgpe3JldHVybiB0aGlzLm9wdGlvbnMubGV2ZWx9c2V0IGxldmVsKGUpe3RoaXMub3B0aW9ucy5sZXZlbD1fbm9ybWFsaXplTG9nTGV2ZWwoZSx0aGlzLm9wdGlvbnMudHlwZXMsdGhpcy5vcHRpb25zLmxldmVsKX1wcm9tcHQoZSxzKXtpZighdGhpcy5vcHRpb25zLnByb21wdCl0aHJvdyBuZXcgRXJyb3IoInByb21wdCBpcyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiB0aGlzLm9wdGlvbnMucHJvbXB0KGUscyl9Y3JlYXRlKGUpe2NvbnN0IHM9bmV3IENvbnNvbGEoey4uLnRoaXMub3B0aW9ucywuLi5lfSk7cmV0dXJuIHRoaXMuX21vY2tGbiYmcy5tb2NrVHlwZXModGhpcy5fbW9ja0ZuKSxzfXdpdGhEZWZhdWx0cyhlKXtyZXR1cm4gdGhpcy5jcmVhdGUoey4uLnRoaXMub3B0aW9ucyxkZWZhdWx0czp7Li4udGhpcy5vcHRpb25zLmRlZmF1bHRzLC4uLmV9fSl9d2l0aFRhZyhlKXtyZXR1cm4gdGhpcy53aXRoRGVmYXVsdHMoe3RhZzp0aGlzLm9wdGlvbnMuZGVmYXVsdHMudGFnP3RoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcrIjoiK2U6ZX0pfWFkZFJlcG9ydGVyKGUpe3JldHVybiB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnB1c2goZSksdGhpc31yZW1vdmVSZXBvcnRlcihlKXtpZihlKXtjb25zdCBzPXRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihlKTtpZigtMSE9PXMpcmV0dXJuIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuc3BsaWNlKHMsMSl9ZWxzZSB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZSgwKTtyZXR1cm4gdGhpc31zZXRSZXBvcnRlcnMoZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5yZXBvcnRlcnM9QXJyYXkuaXNBcnJheShlKT9lOltlXSx0aGlzfXdyYXBBbGwoKXt0aGlzLndyYXBDb25zb2xlKCksdGhpcy53cmFwU3RkKCl9cmVzdG9yZUFsbCgpe3RoaXMucmVzdG9yZUNvbnNvbGUoKSx0aGlzLnJlc3RvcmVTdGQoKX13cmFwQ29uc29sZSgpe2Zvcihjb25zdCBlIGluIHRoaXMub3B0aW9ucy50eXBlcyljb25zb2xlWyJfXyIrZV18fChjb25zb2xlWyJfXyIrZV09Y29uc29sZVtlXSksY29uc29sZVtlXT10aGlzW2VdLnJhd31yZXN0b3JlQ29uc29sZSgpe2Zvcihjb25zdCBlIGluIHRoaXMub3B0aW9ucy50eXBlcyljb25zb2xlWyJfXyIrZV0mJihjb25zb2xlW2VdPWNvbnNvbGVbIl9fIitlXSxkZWxldGUgY29uc29sZVsiX18iK2VdKX13cmFwU3RkKCl7dGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3Rkb3V0LCJsb2ciKSx0aGlzLl93cmFwU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRlcnIsImxvZyIpfV93cmFwU3RyZWFtKGUscyl7ZSYmKGUuX193cml0ZXx8KGUuX193cml0ZT1lLndyaXRlKSxlLndyaXRlPWU9Pnt0aGlzW3NdLnJhdyhTdHJpbmcoZSkudHJpbSgpKX0pfXJlc3RvcmVTdGQoKXt0aGlzLl9yZXN0b3JlU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRvdXQpLHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZGVycil9X3Jlc3RvcmVTdHJlYW0oZSl7ZSYmZS5fX3dyaXRlJiYoZS53cml0ZT1lLl9fd3JpdGUsZGVsZXRlIGUuX193cml0ZSl9cGF1c2VMb2dzKCl7bnI9ITB9cmVzdW1lTG9ncygpe25yPSExO2NvbnN0IGU9aXIuc3BsaWNlKDApO2Zvcihjb25zdCBzIG9mIGUpc1swXS5fbG9nRm4oc1sxXSxzWzJdKX1tb2NrVHlwZXMoZSl7Y29uc3Qgcz1lfHx0aGlzLm9wdGlvbnMubW9ja0ZuO2lmKHRoaXMuX21vY2tGbj1zLCJmdW5jdGlvbiI9PXR5cGVvZiBzKWZvcihjb25zdCBlIGluIHRoaXMub3B0aW9ucy50eXBlcyl0aGlzW2VdPXMoZSx0aGlzLm9wdGlvbnMudHlwZXNbZV0pfHx0aGlzW2VdLHRoaXNbZV0ucmF3PXRoaXNbZV19X3dyYXBMb2dGbihlLHMpe3JldHVybiguLi5kKT0+e2lmKCFucilyZXR1cm4gdGhpcy5fbG9nRm4oZSxkLHMpO2lyLnB1c2goW3RoaXMsZSxkLHNdKX19X2xvZ0ZuKGUscyxkKXtpZigoZS5sZXZlbHx8MCk+dGhpcy5sZXZlbClyZXR1cm4hMTtjb25zdCBtPXtkYXRlOm5ldyBEYXRlLGFyZ3M6W10sLi4uZSxsZXZlbDpfbm9ybWFsaXplTG9nTGV2ZWwoZS5sZXZlbCx0aGlzLm9wdGlvbnMudHlwZXMpfTshZCYmMT09PXMubGVuZ3RoJiZpc0xvZ09iaihzWzBdKT9PYmplY3QuYXNzaWduKG0sc1swXSk6bS5hcmdzPVsuLi5zXSxtLm1lc3NhZ2UmJihtLmFyZ3MudW5zaGlmdChtLm1lc3NhZ2UpLGRlbGV0ZSBtLm1lc3NhZ2UpLG0uYWRkaXRpb25hbCYmKEFycmF5LmlzQXJyYXkobS5hZGRpdGlvbmFsKXx8KG0uYWRkaXRpb25hbD1tLmFkZGl0aW9uYWwuc3BsaXQoIlxuIikpLG0uYXJncy5wdXNoKCJcbiIrbS5hZGRpdGlvbmFsLmpvaW4oIlxuIikpLGRlbGV0ZSBtLmFkZGl0aW9uYWwpLG0udHlwZT0ic3RyaW5nIj09dHlwZW9mIG0udHlwZT9tLnR5cGUudG9Mb3dlckNhc2UoKToibG9nIixtLnRhZz0ic3RyaW5nIj09dHlwZW9mIG0udGFnP20udGFnOiIiO2NvbnN0IHJlc29sdmVMb2c9KGU9ITEpPT57Y29uc3Qgcz0odGhpcy5fbGFzdExvZy5jb3VudHx8MCktdGhpcy5vcHRpb25zLnRocm90dGxlTWluO2lmKHRoaXMuX2xhc3RMb2cub2JqZWN0JiZzPjApe2NvbnN0IGU9Wy4uLnRoaXMuX2xhc3RMb2cub2JqZWN0LmFyZ3NdO3M+MSYmZS5wdXNoKGAocmVwZWF0ZWQgJHtzfSB0aW1lcylgKSx0aGlzLl9sb2coey4uLnRoaXMuX2xhc3RMb2cub2JqZWN0LGFyZ3M6ZX0pLHRoaXMuX2xhc3RMb2cuY291bnQ9MX1lJiYodGhpcy5fbGFzdExvZy5vYmplY3Q9bSx0aGlzLl9sb2cobSkpfTtjbGVhclRpbWVvdXQodGhpcy5fbGFzdExvZy50aW1lb3V0KTtjb25zdCBoPXRoaXMuX2xhc3RMb2cudGltZSYmbS5kYXRlP20uZGF0ZS5nZXRUaW1lKCktdGhpcy5fbGFzdExvZy50aW1lLmdldFRpbWUoKTowO2lmKHRoaXMuX2xhc3RMb2cudGltZT1tLmRhdGUsaDx0aGlzLm9wdGlvbnMudGhyb3R0bGUpdHJ5e2NvbnN0IGU9SlNPTi5zdHJpbmdpZnkoW20udHlwZSxtLnRhZyxtLmFyZ3NdKSxzPXRoaXMuX2xhc3RMb2cuc2VyaWFsaXplZD09PWU7aWYodGhpcy5fbGFzdExvZy5zZXJpYWxpemVkPWUscyYmKHRoaXMuX2xhc3RMb2cuY291bnQ9KHRoaXMuX2xhc3RMb2cuY291bnR8fDApKzEsdGhpcy5fbGFzdExvZy5jb3VudD50aGlzLm9wdGlvbnMudGhyb3R0bGVNaW4pKXJldHVybiB2b2lkKHRoaXMuX2xhc3RMb2cudGltZW91dD1zZXRUaW1lb3V0KHJlc29sdmVMb2csdGhpcy5vcHRpb25zLnRocm90dGxlKSl9Y2F0Y2h7fXJlc29sdmVMb2coITApfV9sb2coZSl7Zm9yKGNvbnN0IHMgb2YgdGhpcy5vcHRpb25zLnJlcG9ydGVycylzLmxvZyhlLHtvcHRpb25zOnRoaXMub3B0aW9uc30pfX1mdW5jdGlvbiBfbm9ybWFsaXplTG9nTGV2ZWwoZSxzPXt9LGQ9Myl7cmV0dXJuIHZvaWQgMD09PWU/ZDoibnVtYmVyIj09dHlwZW9mIGU/ZTpzW2VdJiZ2b2lkIDAhPT1zW2VdLmxldmVsP3NbZV0ubGV2ZWw6ZH1Db25zb2xhLnByb3RvdHlwZS5hZGQ9Q29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXIsQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlPUNvbnNvbGEucHJvdG90eXBlLnJlbW92ZVJlcG9ydGVyLENvbnNvbGEucHJvdG90eXBlLmNsZWFyPUNvbnNvbGEucHJvdG90eXBlLnJlbW92ZVJlcG9ydGVyLENvbnNvbGEucHJvdG90eXBlLndpdGhTY29wZT1Db25zb2xhLnByb3RvdHlwZS53aXRoVGFnLENvbnNvbGEucHJvdG90eXBlLm1vY2s9Q29uc29sYS5wcm90b3R5cGUubW9ja1R5cGVzLENvbnNvbGEucHJvdG90eXBlLnBhdXNlPUNvbnNvbGEucHJvdG90eXBlLnBhdXNlTG9ncyxDb25zb2xhLnByb3RvdHlwZS5yZXN1bWU9Q29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztjbGFzcyBCcm93c2VyUmVwb3J0ZXJ7b3B0aW9ucztkZWZhdWx0Q29sb3I7bGV2ZWxDb2xvck1hcDt0eXBlQ29sb3JNYXA7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPXsuLi5lfSx0aGlzLmRlZmF1bHRDb2xvcj0iIzdmOGM4ZCIsdGhpcy5sZXZlbENvbG9yTWFwPXswOiIjYzAzOTJiIiwxOiIjZjM5YzEyIiwzOiIjMDBCQ0Q0In0sdGhpcy50eXBlQ29sb3JNYXA9e3N1Y2Nlc3M6IiMyZWNjNzEifX1fZ2V0TG9nRm4oZSl7cmV0dXJuIGU8MT9jb25zb2xlLl9fZXJyb3J8fGNvbnNvbGUuZXJyb3I6MT09PWU/Y29uc29sZS5fX3dhcm58fGNvbnNvbGUud2Fybjpjb25zb2xlLl9fbG9nfHxjb25zb2xlLmxvZ31sb2coZSl7Y29uc3Qgcz10aGlzLl9nZXRMb2dGbihlLmxldmVsKSxkPSJsb2ciPT09ZS50eXBlPyIiOmUudHlwZSxtPWUudGFnfHwiIixoPWBcbiAgICAgIGJhY2tncm91bmQ6ICR7dGhpcy50eXBlQ29sb3JNYXBbZS50eXBlXXx8dGhpcy5sZXZlbENvbG9yTWFwW2UubGV2ZWxdfHx0aGlzLmRlZmF1bHRDb2xvcn07XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVlbTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZzogMnB4IDAuNWVtO1xuICAgIGAsZz1gJWMke1ttLGRdLmZpbHRlcihCb29sZWFuKS5qb2luKCI6Iil9YDsic3RyaW5nIj09dHlwZW9mIGUuYXJnc1swXT9zKGAke2d9JWMgJHtlLmFyZ3NbMF19YCxoLCIiLC4uLmUuYXJncy5zbGljZSgxKSk6cyhnLGgsLi4uZS5hcmdzKX19Y29uc3QgcnI9ZnVuY3Rpb24oZT17fSl7cmV0dXJuIGZ1bmN0aW9uKGU9e30pe3JldHVybiBuZXcgQ29uc29sYShlKX0oe3JlcG9ydGVyczplLnJlcG9ydGVyc3x8W25ldyBCcm93c2VyUmVwb3J0ZXIoe30pXSxwcm9tcHQ6KGUscz17fSk9PiJjb25maXJtIj09PXMudHlwZT9Qcm9taXNlLnJlc29sdmUoY29uZmlybShlKSk6UHJvbWlzZS5yZXNvbHZlKHByb21wdChlKSksLi4uZX0pfSgpLGFyPS9eW0EtWmEtel06XC8vO2Z1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGU9IiIpe3JldHVybiBlP2UucmVwbGFjZSgvXFwvZywiLyIpLnJlcGxhY2UoYXIsZT0+ZS50b1VwcGVyQ2FzZSgpKTplfWNvbnN0IHNyPS9eWy9cXF0oPyFbL1xcXSl8XlsvXFxdezJ9KD8hXC4pfF5bQS1aYS16XTpbL1xcXS8sbHI9L15bQS1aYS16XTokLyxjcj0vLihcLlteLi9dK3xcLikkLyx1cj0vXlsvXFxdfF5bYS16QS1aXTpbL1xcXS8sZGlybmFtZT1mdW5jdGlvbihlKXtjb25zdCBzPW5vcm1hbGl6ZVdpbmRvd3NQYXRoKGUpLnJlcGxhY2UoL1wvJC8sIiIpLnNwbGl0KCIvIikuc2xpY2UoMCwtMSk7cmV0dXJuIDE9PT1zLmxlbmd0aCYmbHIudGVzdChzWzBdKSYmKHNbMF0rPSIvIikscy5qb2luKCIvIil8fChmdW5jdGlvbihlKXtyZXR1cm4gc3IudGVzdChlKX0oZSk/Ii8iOiIuIil9LGJhc2VuYW1lPWZ1bmN0aW9uKGUscyl7Y29uc3QgZD1ub3JtYWxpemVXaW5kb3dzUGF0aChlKS5zcGxpdCgiLyIpO2xldCBtPSIiO2ZvcihsZXQgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBzPWRbZV07aWYocyl7bT1zO2JyZWFrfX1yZXR1cm4gcyYmbS5lbmRzV2l0aChzKT9tLnNsaWNlKDAsLXMubGVuZ3RoKTptfSxwYXJzZSQzPWZ1bmN0aW9uKGUpe2NvbnN0IHM9dXIuZXhlYyhlKT8uWzBdPy5yZXBsYWNlKC9cXC9nLCIvIil8fCIiLGQ9YmFzZW5hbWUoZSksbT1mdW5jdGlvbihlKXtpZigiLi4iPT09ZSlyZXR1cm4iIjtjb25zdCBzPWNyLmV4ZWMobm9ybWFsaXplV2luZG93c1BhdGgoZSkpO3JldHVybiBzJiZzWzFdfHwiIn0oZCk7cmV0dXJue3Jvb3Q6cyxkaXI6ZGlybmFtZShlKSxiYXNlOmQsZXh0Om0sbmFtZTpkLnNsaWNlKDAsZC5sZW5ndGgtbS5sZW5ndGgpfX07ZnVuY3Rpb24gZGVmaW5lUmVuZGVySGFuZGxlcihlKXtjb25zdCBzPXVzZVJ1bnRpbWVDb25maWcoKTtyZXR1cm4gWm4oYXN5bmMgZD0+e2NvbnN0IG09dXNlTml0cm9BcHAoKSxoPXtldmVudDpkLHJlbmRlcjplLHJlc3BvbnNlOnZvaWQgMH07aWYoYXdhaXQgbS5ob29rcy5jYWxsSG9vaygicmVuZGVyOmJlZm9yZSIsaCksIWgucmVzcG9uc2Upe2lmKGQucGF0aD09PWAke3MuYXBwLmJhc2VVUkx9ZmF2aWNvbi5pY29gKXJldHVybiBzZXRSZXNwb25zZUhlYWRlcihkLCJDb250ZW50LVR5cGUiLCJpbWFnZS94LWljb24iKSxzZW5kKGQsImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyIpO2lmKGgucmVzcG9uc2U9YXdhaXQgaC5yZW5kZXIoZCksIWgucmVzcG9uc2Upe2NvbnN0IGU9Z2V0UmVzcG9uc2VTdGF0dXMoZCk7cmV0dXJuIHNldFJlc3BvbnNlU3RhdHVzKGQsMjAwPT09ZT81MDA6ZSksc2VuZChkLCJObyByZXNwb25zZSByZXR1cm5lZCBmcm9tIHJlbmRlciBoYW5kbGVyOiAiK2QucGF0aCl9fXJldHVybiBhd2FpdCBtLmhvb2tzLmNhbGxIb29rKCJyZW5kZXI6cmVzcG9uc2UiLGgucmVzcG9uc2UsaCksaC5yZXNwb25zZS5oZWFkZXJzJiZzZXRSZXNwb25zZUhlYWRlcnMoZCxoLnJlc3BvbnNlLmhlYWRlcnMpLChoLnJlc3BvbnNlLnN0YXR1c0NvZGV8fGgucmVzcG9uc2Uuc3RhdHVzTWVzc2FnZSkmJnNldFJlc3BvbnNlU3RhdHVzKGQsaC5yZXNwb25zZS5zdGF0dXNDb2RlLGgucmVzcG9uc2Uuc3RhdHVzTWVzc2FnZSksaC5yZXNwb25zZS5ib2R5fSl9Y29uc3QgZHI9W3tjcm9uOiIwICogKiAqICoiLHRhc2tzOlsic3VwcG9ydDpyZW1pbmRTdGFsZSJdfV0scHI9eyJzdXBwb3J0OnJlbWluZFN0YWxlIjp7bWV0YTp7ZGVzY3JpcHRpb246IiJ9LHJlc29sdmU6KCk9PmltcG9ydCgiLi4vdGFza3MvcmVtaW5kU3RhbGUubWpzIikudGhlbihlPT5lLmRlZmF1bHR8fGUpfSwic2VlZDp1c2VycyI6e21ldGE6e2Rlc2NyaXB0aW9uOiIifSxyZXNvbHZlOigpPT5pbXBvcnQoIi4uL3Rhc2tzL3VzZXJzLm1qcyIpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlKX19O2Z1bmN0aW9uIGRlZmluZVRhc2soZSl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGUucnVuJiYoZS5ydW49KCk9Pnt0aHJvdyBuZXcgVHlwZUVycm9yKCJUYXNrIG11c3QgaW1wbGVtZW50IGEgYHJ1bmAgbWV0aG9kISIpfSksZX1jb25zdCBtcj17fTtmdW5jdGlvbiBydW5Dcm9uVGFza3MoZSxzKXtyZXR1cm4gUHJvbWlzZS5hbGwoZnVuY3Rpb24oZSl7cmV0dXJuKGRyfHxbXSkuZmluZChzPT5zLmNyb249PT1lKT8udGFza3N8fFtdfShlKS5tYXAoZT0+YXN5bmMgZnVuY3Rpb24oZSx7cGF5bG9hZDpzPXt9LGNvbnRleHQ6ZD17fX09e30pe2lmKG1yW2VdKXJldHVybiBtcltlXTtpZighKGUgaW4gcHIpKXRocm93IGNyZWF0ZUVycm9yJDEoe21lc3NhZ2U6YFRhc2sgXGAke2V9XGAgaXMgbm90IGF2YWlsYWJsZSFgLHN0YXR1c0NvZGU6NDA0fSk7aWYoIXByW2VdLnJlc29sdmUpdGhyb3cgY3JlYXRlRXJyb3IkMSh7bWVzc2FnZTpgVGFzayBcYCR7ZX1cYCBpcyBub3QgaW1wbGVtZW50ZWQhYCxzdGF0dXNDb2RlOjUwMX0pO2NvbnN0IG09YXdhaXQgcHJbZV0ucmVzb2x2ZSgpLGg9e25hbWU6ZSxwYXlsb2FkOnMsY29udGV4dDpkfTttcltlXT1tLnJ1bihoKTt0cnl7cmV0dXJuIGF3YWl0IG1yW2VdfWZpbmFsbHl7ZGVsZXRlIG1yW2VdfX0oZSxzKSkpfWZ1bmN0aW9uIGJhc2VVUkwoKXtyZXR1cm4gdXNlUnVudGltZUNvbmZpZygpLmFwcC5iYXNlVVJMfWZ1bmN0aW9uIGJ1aWxkQXNzZXRzVVJMKC4uLmUpe3JldHVybiBqb2luUmVsYXRpdmVVUkwocHVibGljQXNzZXRzVVJMKCksdXNlUnVudGltZUNvbmZpZygpLmFwcC5idWlsZEFzc2V0c0RpciwuLi5lKX1mdW5jdGlvbiBwdWJsaWNBc3NldHNVUkwoLi4uZSl7Y29uc3Qgcz11c2VSdW50aW1lQ29uZmlnKCkuYXBwLGQ9cy5jZG5VUkx8fHMuYmFzZVVSTDtyZXR1cm4gZS5sZW5ndGg/am9pblJlbGF0aXZlVVJMKGQsLi4uZSk6ZH1jb25zdCBmcj1bIkIiLCJLQiIsIk1CIiwiR0IiXTtmdW5jdGlvbiBlbnN1cmVCbG9iKGUscz17fSl7aWYoIXMubWF4U2l6ZSYmIXMudHlwZXM/Lmxlbmd0aCl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwMCxtZXNzYWdlOiJlbnN1cmVCbG9iKCkgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIG9mIG1heFNpemUgb3IgdHlwZXMgdG8gYmUgc2V0LiJ9KTtpZihzLm1heFNpemUpe2NvbnN0IGQ9ZnVuY3Rpb24oZSl7Y29uc3Qgcz1uZXcgUmVnRXhwKGBeKFxcZCspKFxcLlxcZCspP1xccyooJHtmci5qb2luKCJ8Iil9KSRgLCJpIiksZD1lLm1hdGNoKHMpO2lmKCFkKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6YEludmFsaWQgZmlsZSBzaXplIGZvcm1hdDogJHtlfWB9KTtjb25zdCBtPU51bWJlci5wYXJzZUZsb2F0KGRbMV0pLGg9ZFszXS50b1VwcGVyQ2FzZSgpO2lmKCFmci5pbmNsdWRlcyhoKSl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwMCxtZXNzYWdlOmBJbnZhbGlkIGZpbGUgc2l6ZSB1bml0OiAke2h9YH0pO2NvbnN0IGc9bSpNYXRoLnBvdygxMDI0LGZyLmluZGV4T2YoaCkpO3JldHVybiBNYXRoLmZsb29yKGcpfShzLm1heFNpemUpO2lmKGUuc2l6ZT5kKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6YEZpbGUgc2l6ZSBtdXN0IGJlIGxlc3MgdGhhbiAke3MubWF4U2l6ZX1gfSl9Y29uc3QgZD1lLnR5cGUuc3BsaXQoIi8iKVswXTtpZihzLnR5cGVzPy5sZW5ndGgmJiFzLnR5cGVzLmluY2x1ZGVzKGUudHlwZSkmJiFzLnR5cGVzLmluY2x1ZGVzKGQpJiYoIXMudHlwZXMuaW5jbHVkZXMoInBkZiIpfHwiYXBwbGljYXRpb24vcGRmIiE9PWUudHlwZSkpdGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDAsbWVzc2FnZTpgRmlsZSB0eXBlIGlzIGludmFsaWQsIG11c3QgYmU6ICR7cy50eXBlcy5qb2luKCIsICIpfWB9KX1jb25zdCBocj1PYmplY3QuZnJlZXplKHtzdGF0dXM6ImFib3J0ZWQifSk7ZnVuY3Rpb24gJGNvbnN0cnVjdG9yKGUscyxkKXtmdW5jdGlvbiBpbml0KGQsbSl7aWYoZC5fem9kfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwiX3pvZCIse3ZhbHVlOntkZWY6bSxjb25zdHI6Xyx0cmFpdHM6bmV3IFNldH0sZW51bWVyYWJsZTohMX0pLGQuX3pvZC50cmFpdHMuaGFzKGUpKXJldHVybjtkLl96b2QudHJhaXRzLmFkZChlKSxzKGQsbSk7Y29uc3QgaD1fLnByb3RvdHlwZSxnPU9iamVjdC5rZXlzKGgpO2ZvcihsZXQgZT0wO2U8Zy5sZW5ndGg7ZSsrKXtjb25zdCBzPWdbZV07cyBpbiBkfHwoZFtzXT1oW3NdLmJpbmQoZCkpfX1jb25zdCBtPWQ/LlBhcmVudD8/T2JqZWN0O2NsYXNzIERlZmluaXRpb24gZXh0ZW5kcyBte31mdW5jdGlvbiBfKGUpe3ZhciBzO2NvbnN0IG09ZD8uUGFyZW50P25ldyBEZWZpbml0aW9uOnRoaXM7aW5pdChtLGUpLChzPW0uX3pvZCkuZGVmZXJyZWQ/PyhzLmRlZmVycmVkPVtdKTtmb3IoY29uc3QgZSBvZiBtLl96b2QuZGVmZXJyZWQpZSgpO3JldHVybiBtfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGVmaW5pdGlvbiwibmFtZSIse3ZhbHVlOmV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoXywiaW5pdCIse3ZhbHVlOmluaXR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoXyxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOnM9PiEhKGQ/LlBhcmVudCYmcyBpbnN0YW5jZW9mIGQuUGFyZW50KXx8cz8uX3pvZD8udHJhaXRzPy5oYXMoZSl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoXywibmFtZSIse3ZhbHVlOmV9KSxffWNvbnN0IGdyPVN5bWJvbCgiem9kX2JyYW5kIik7Y2xhc3MgJFpvZEFzeW5jRXJyb3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJFbmNvdW50ZXJlZCBQcm9taXNlIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZS4gVXNlIC5wYXJzZUFzeW5jKCkgaW5zdGVhZC4iKX19Y2xhc3MgJFpvZEVuY29kZUVycm9yIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke2V9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fWNvbnN0IHZyPXt9O2Z1bmN0aW9uIGNvbmZpZyhlKXtyZXR1cm4gZSYmT2JqZWN0LmFzc2lnbih2cixlKSx2cn1mdW5jdGlvbiBnZXRFbnVtVmFsdWVzKGUpe2NvbnN0IHM9T2JqZWN0LnZhbHVlcyhlKS5maWx0ZXIoZT0+Im51bWJlciI9PXR5cGVvZiBlKSxkPU9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW2UsZF0pPT4tMT09PXMuaW5kZXhPZigrZSkpLm1hcCgoW2Usc10pPT5zKTtyZXR1cm4gZH1mdW5jdGlvbiBqb2luVmFsdWVzKGUscz0ifCIpe3JldHVybiBlLm1hcChlPT5zdHJpbmdpZnlQcmltaXRpdmUoZSkpLmpvaW4ocyl9ZnVuY3Rpb24ganNvblN0cmluZ2lmeVJlcGxhY2VyKGUscyl7cmV0dXJuImJpZ2ludCI9PXR5cGVvZiBzP3MudG9TdHJpbmcoKTpzfWZ1bmN0aW9uIGNhY2hlZChlKXtyZXR1cm57Z2V0IHZhbHVlKCl7e2NvbnN0IHM9ZSgpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmFsdWUiLHt2YWx1ZTpzfSksc319fX1mdW5jdGlvbiBudWxsaXNoJDEoZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gY2xlYW5SZWdleChlKXtjb25zdCBzPWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxkPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHMsZCl9ZnVuY3Rpb24gZmxvYXRTYWZlUmVtYWluZGVyKGUscyl7Y29uc3QgZD0oZS50b1N0cmluZygpLnNwbGl0KCIuIilbMV18fCIiKS5sZW5ndGgsbT1zLnRvU3RyaW5nKCk7bGV0IGg9KG0uc3BsaXQoIi4iKVsxXXx8IiIpLmxlbmd0aDtpZigwPT09aCYmL1xkP2UtXGQ/Ly50ZXN0KG0pKXtjb25zdCBlPW0ubWF0Y2goL1xkP2UtKFxkPykvKTtlPy5bMV0mJihoPU51bWJlci5wYXJzZUludChlWzFdKSl9Y29uc3QgZz1kPmg/ZDpoO3JldHVybiBOdW1iZXIucGFyc2VJbnQoZS50b0ZpeGVkKGcpLnJlcGxhY2UoIi4iLCIiKSklTnVtYmVyLnBhcnNlSW50KHMudG9GaXhlZChnKS5yZXBsYWNlKCIuIiwiIikpLzEwKipnfWNvbnN0IHlyPVN5bWJvbCgiZXZhbHVhdGluZyIpO2Z1bmN0aW9uIGRlZmluZUxhenkoZSxzLGQpe2xldCBtO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHMse2dldCgpe2lmKG0hPT15cilyZXR1cm4gdm9pZCAwPT09bSYmKG09eXIsbT1kKCkpLG19LHNldChkKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxzLHt2YWx1ZTpkfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGFzc2lnblByb3AoZSxzLGQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHMse3ZhbHVlOmQsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBtZXJnZURlZnMoLi4uZSl7Y29uc3Qgcz17fTtmb3IoY29uc3QgZCBvZiBlKXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGQpO09iamVjdC5hc3NpZ24ocyxlKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30scyl9ZnVuY3Rpb24gZXNjKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKX1mdW5jdGlvbiBzbHVnaWZ5KGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgYnI9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gaXNPYmplY3QoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmIUFycmF5LmlzQXJyYXkoZSl9Y29uc3QgX3I9Y2FjaGVkKCgpPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCIiKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KTtmdW5jdGlvbiBpc1BsYWluT2JqZWN0KGUpe2lmKCExPT09aXNPYmplY3QoZSkpcmV0dXJuITE7Y29uc3Qgcz1lLmNvbnN0cnVjdG9yO2lmKHZvaWQgMD09PXMpcmV0dXJuITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHMpcmV0dXJuITA7Y29uc3QgZD1zLnByb3RvdHlwZTtyZXR1cm4hMSE9PWlzT2JqZWN0KGQpJiYhMSE9PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLCJpc1Byb3RvdHlwZU9mIil9ZnVuY3Rpb24gc2hhbGxvd0Nsb25lKGUpe3JldHVybiBpc1BsYWluT2JqZWN0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplfWNvbnN0IHhyPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksd3I9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gZXNjYXBlUmVnZXgoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBjbG9uZShlLHMsZCl7Y29uc3QgbT1uZXcgZS5fem9kLmNvbnN0cihzPz9lLl96b2QuZGVmKTtyZXR1cm4gcyYmIWQ/LnBhcmVudHx8KG0uX3pvZC5wYXJlbnQ9ZSksbX1mdW5jdGlvbiBub3JtYWxpemVQYXJhbXMoZSl7Y29uc3Qgcz1lO2lmKCFzKXJldHVybnt9O2lmKCJzdHJpbmciPT10eXBlb2YgcylyZXR1cm57ZXJyb3I6KCk9PnN9O2lmKHZvaWQgMCE9PXM/Lm1lc3NhZ2Upe2lmKHZvaWQgMCE9PXM/LmVycm9yKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBgbWVzc2FnZWAgYW5kIGBlcnJvcmAgcGFyYW1zIik7cy5lcnJvcj1zLm1lc3NhZ2V9cmV0dXJuIGRlbGV0ZSBzLm1lc3NhZ2UsInN0cmluZyI9PXR5cGVvZiBzLmVycm9yP3suLi5zLGVycm9yOigpPT5zLmVycm9yfTpzfWZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZShlKXtyZXR1cm4iYmlnaW50Ij09dHlwZW9mIGU/ZS50b1N0cmluZygpKyJuIjoic3RyaW5nIj09dHlwZW9mIGU/YCIke2V9ImA6YCR7ZX1gfWZ1bmN0aW9uIG9wdGlvbmFsS2V5cyhlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZmlsdGVyKHM9PiJvcHRpb25hbCI9PT1lW3NdLl96b2Qub3B0aW4mJiJvcHRpb25hbCI9PT1lW3NdLl96b2Qub3B0b3V0KX1jb25zdCAkcj17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sU3I9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIHBpY2skMShlLHMpe2NvbnN0IGQ9ZS5fem9kLmRlZixtPWQuY2hlY2tzO2lmKG0mJm0ubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIucGljaygpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBoPW1lcmdlRGVmcyhlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBlPXt9O2Zvcihjb25zdCBtIGluIHMpe2lmKCEobSBpbiBkLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke219ImApO3NbbV0mJihlW21dPWQuc2hhcGVbbV0pfXJldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixlKSxlfSxjaGVja3M6W119KTtyZXR1cm4gY2xvbmUoZSxoKX1mdW5jdGlvbiBvbWl0KGUscyl7Y29uc3QgZD1lLl96b2QuZGVmLG09ZC5jaGVja3M7aWYobSYmbS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGg9bWVyZ2VEZWZzKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG09ey4uLmUuX3pvZC5kZWYuc2hhcGV9O2Zvcihjb25zdCBlIGluIHMpe2lmKCEoZSBpbiBkLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke2V9ImApO3NbZV0mJmRlbGV0ZSBtW2VdfXJldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixtKSxtfSxjaGVja3M6W119KTtyZXR1cm4gY2xvbmUoZSxoKX1mdW5jdGlvbiBleHRlbmQoZSxzKXtpZighaXNQbGFpbk9iamVjdChzKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IGQ9ZS5fem9kLmRlZi5jaGVja3M7aWYoZCYmZC5sZW5ndGg+MCl7Y29uc3QgZD1lLl96b2QuZGVmLnNoYXBlO2Zvcihjb25zdCBlIGluIHMpaWYodm9pZCAwIT09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGUpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1jb25zdCBtPW1lcmdlRGVmcyhlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBkPXsuLi5lLl96b2QuZGVmLnNoYXBlLC4uLnN9O3JldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixkKSxkfX0pO3JldHVybiBjbG9uZShlLG0pfWZ1bmN0aW9uIHNhZmVFeHRlbmQoZSxzKXtpZighaXNQbGFpbk9iamVjdChzKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCBkPW1lcmdlRGVmcyhlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBkPXsuLi5lLl96b2QuZGVmLnNoYXBlLC4uLnN9O3JldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixkKSxkfX0pO3JldHVybiBjbG9uZShlLGQpfWZ1bmN0aW9uIG1lcmdlKGUscyl7Y29uc3QgZD1tZXJnZURlZnMoZS5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgZD17Li4uZS5fem9kLmRlZi5zaGFwZSwuLi5zLl96b2QuZGVmLnNoYXBlfTtyZXR1cm4gYXNzaWduUHJvcCh0aGlzLCJzaGFwZSIsZCksZH0sZ2V0IGNhdGNoYWxsKCl7cmV0dXJuIHMuX3pvZC5kZWYuY2F0Y2hhbGx9LGNoZWNrczpbXX0pO3JldHVybiBjbG9uZShlLGQpfWZ1bmN0aW9uIHBhcnRpYWwoZSxzLGQpe2NvbnN0IG09cy5fem9kLmRlZi5jaGVja3M7aWYobSYmbS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5wYXJ0aWFsKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGg9bWVyZ2VEZWZzKHMuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG09cy5fem9kLmRlZi5zaGFwZSxoPXsuLi5tfTtpZihkKWZvcihjb25zdCBzIGluIGQpe2lmKCEocyBpbiBtKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3N9ImApO2Rbc10mJihoW3NdPWU/bmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6bVtzXX0pOm1bc10pfWVsc2UgZm9yKGNvbnN0IHMgaW4gbSloW3NdPWU/bmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6bVtzXX0pOm1bc107cmV0dXJuIGFzc2lnblByb3AodGhpcywic2hhcGUiLGgpLGh9LGNoZWNrczpbXX0pO3JldHVybiBjbG9uZShzLGgpfWZ1bmN0aW9uIHJlcXVpcmVkKGUscyxkKXtjb25zdCBtPW1lcmdlRGVmcyhzLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBtPXMuX3pvZC5kZWYuc2hhcGUsaD17Li4ubX07aWYoZClmb3IoY29uc3QgcyBpbiBkKXtpZighKHMgaW4gaCkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtzfSJgKTtkW3NdJiYoaFtzXT1uZXcgZSh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTptW3NdfSkpfWVsc2UgZm9yKGNvbnN0IHMgaW4gbSloW3NdPW5ldyBlKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOm1bc119KTtyZXR1cm4gYXNzaWduUHJvcCh0aGlzLCJzaGFwZSIsaCksaH19KTtyZXR1cm4gY2xvbmUocyxtKX1mdW5jdGlvbiBhYm9ydGVkKGUscz0wKXtpZighMD09PWUuYWJvcnRlZClyZXR1cm4hMDtmb3IobGV0IGQ9cztkPGUuaXNzdWVzLmxlbmd0aDtkKyspaWYoITAhPT1lLmlzc3Vlc1tkXT8uY29udGludWUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcHJlZml4SXNzdWVzKGUscyl7cmV0dXJuIHMubWFwKHM9Pnt2YXIgZDtyZXR1cm4oZD1zKS5wYXRoPz8oZC5wYXRoPVtdKSxzLnBhdGgudW5zaGlmdChlKSxzfSl9ZnVuY3Rpb24gdW53cmFwTWVzc2FnZShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplPy5tZXNzYWdlfWZ1bmN0aW9uIGZpbmFsaXplSXNzdWUoZSxzLGQpe2NvbnN0IG09ey4uLmUscGF0aDplLnBhdGg/P1tdfTtpZighZS5tZXNzYWdlKXtjb25zdCBoPXVud3JhcE1lc3NhZ2UoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P3Vud3JhcE1lc3NhZ2Uocz8uZXJyb3I/LihlKSk/P3Vud3JhcE1lc3NhZ2UoZC5jdXN0b21FcnJvcj8uKGUpKT8/dW53cmFwTWVzc2FnZShkLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCI7bS5tZXNzYWdlPWh9cmV0dXJuIGRlbGV0ZSBtLmluc3QsZGVsZXRlIG0uY29udGludWUscz8ucmVwb3J0SW5wdXR8fGRlbGV0ZSBtLmlucHV0LG19ZnVuY3Rpb24gZ2V0U2l6YWJsZU9yaWdpbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9ZnVuY3Rpb24gZ2V0TGVuZ3RoYWJsZU9yaWdpbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOiJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gcGFyc2VkVHlwZShlKXtjb25zdCBzPXR5cGVvZiBlO3N3aXRjaChzKXtjYXNlIm51bWJlciI6cmV0dXJuIE51bWJlci5pc05hTihlKT8ibmFuIjoibnVtYmVyIjtjYXNlIm9iamVjdCI6e2lmKG51bGw9PT1lKXJldHVybiJudWxsIjtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiJhcnJheSI7Y29uc3Qgcz1lO2lmKHMmJk9iamVjdC5nZXRQcm90b3R5cGVPZihzKSE9PU9iamVjdC5wcm90b3R5cGUmJiJjb25zdHJ1Y3RvciJpbiBzJiZzLmNvbnN0cnVjdG9yKXJldHVybiBzLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBzfWZ1bmN0aW9uIGlzc3VlKC4uLmUpe2NvbnN0W3MsZCxtXT1lO3JldHVybiJzdHJpbmciPT10eXBlb2Ygcz97bWVzc2FnZTpzLGNvZGU6ImN1c3RvbSIsaW5wdXQ6ZCxpbnN0Om19OnsuLi5zfX1mdW5jdGlvbiBiYXNlNjRUb1VpbnQ4QXJyYXkoZSl7Y29uc3Qgcz1hdG9iKGUpLGQ9bmV3IFVpbnQ4QXJyYXkocy5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKWRbZV09cy5jaGFyQ29kZUF0KGUpO3JldHVybiBkfWZ1bmN0aW9uIHVpbnQ4QXJyYXlUb0Jhc2U2NChlKXtsZXQgcz0iIjtmb3IobGV0IGQ9MDtkPGUubGVuZ3RoO2QrKylzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbZF0pO3JldHVybiBidG9hKHMpfWNvbnN0IGtyPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpTcixDbGFzczpjbGFzc3tjb25zdHJ1Y3RvciguLi5lKXt9fSxOVU1CRVJfRk9STUFUX1JBTkdFUzokcixhYm9ydGVkOmFib3J0ZWQsYWxsb3dzRXZhbDpfcixhc3NlcnQ6ZnVuY3Rpb24oZSl7fSxhc3NlcnRFcXVhbDpmdW5jdGlvbihlKXtyZXR1cm4gZX0sYXNzZXJ0SXM6ZnVuY3Rpb24oZSl7fSxhc3NlcnROZXZlcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfSxhc3NlcnROb3RFcXVhbDpmdW5jdGlvbihlKXtyZXR1cm4gZX0sYXNzaWduUHJvcDphc3NpZ25Qcm9wLGJhc2U2NFRvVWludDhBcnJheTpiYXNlNjRUb1VpbnQ4QXJyYXksYmFzZTY0dXJsVG9VaW50OEFycmF5OmZ1bmN0aW9uKGUpe2NvbnN0IHM9ZS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKTtyZXR1cm4gYmFzZTY0VG9VaW50OEFycmF5KHMrIj0iLnJlcGVhdCgoNC1zLmxlbmd0aCU0KSU0KSl9LGNhY2hlZDpjYWNoZWQsY2FwdHVyZVN0YWNrVHJhY2U6YnIsY2xlYW5FbnVtOmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFtlLHNdKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludChlLDEwKSkpLm1hcChlPT5lWzFdKX0sY2xlYW5SZWdleDpjbGVhblJlZ2V4LGNsb25lOmNsb25lLGNsb25lRGVmOmZ1bmN0aW9uKGUpe3JldHVybiBtZXJnZURlZnMoZS5fem9kLmRlZil9LGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6ZnVuY3Rpb24oZSl7bGV0IHM7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0OihkLG0saCk9PihzPz8ocz1lKCkpLFJlZmxlY3QuZ2V0KHMsbSxoKSksc2V0OihkLG0saCxnKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5zZXQocyxtLGgsZykpLGhhczooZCxtKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5oYXMocyxtKSksZGVsZXRlUHJvcGVydHk6KGQsbSk9PihzPz8ocz1lKCkpLFJlZmxlY3QuZGVsZXRlUHJvcGVydHkocyxtKSksb3duS2V5czpkPT4ocz8/KHM9ZSgpKSxSZWZsZWN0Lm93bktleXMocykpLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjooZCxtKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxtKSksZGVmaW5lUHJvcGVydHk6KGQsbSxoKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShzLG0saCkpfSl9LGRlZmluZUxhenk6ZGVmaW5lTGF6eSxlc2M6ZXNjLGVzY2FwZVJlZ2V4OmVzY2FwZVJlZ2V4LGV4dGVuZDpleHRlbmQsZmluYWxpemVJc3N1ZTpmaW5hbGl6ZUlzc3VlLGZsb2F0U2FmZVJlbWFpbmRlcjpmbG9hdFNhZmVSZW1haW5kZXIsZ2V0RWxlbWVudEF0UGF0aDpmdW5jdGlvbihlLHMpe3JldHVybiBzP3MucmVkdWNlKChlLHMpPT5lPy5bc10sZSk6ZX0sZ2V0RW51bVZhbHVlczpnZXRFbnVtVmFsdWVzLGdldExlbmd0aGFibGVPcmlnaW46Z2V0TGVuZ3RoYWJsZU9yaWdpbixnZXRQYXJzZWRUeXBlOmU9Pntjb25zdCBzPXR5cGVvZiBlO3N3aXRjaChzKXtjYXNlInVuZGVmaW5lZCI6cmV0dXJuInVuZGVmaW5lZCI7Y2FzZSJzdHJpbmciOnJldHVybiJzdHJpbmciO2Nhc2UibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzTmFOKGUpPyJuYW4iOiJudW1iZXIiO2Nhc2UiYm9vbGVhbiI6cmV0dXJuImJvb2xlYW4iO2Nhc2UiZnVuY3Rpb24iOnJldHVybiJmdW5jdGlvbiI7Y2FzZSJiaWdpbnQiOnJldHVybiJiaWdpbnQiO2Nhc2Uic3ltYm9sIjpyZXR1cm4ic3ltYm9sIjtjYXNlIm9iamVjdCI6cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5IjpudWxsPT09ZT8ibnVsbCI6ZS50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuJiZlLmNhdGNoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYXRjaD8icHJvbWlzZSI6InVuZGVmaW5lZCIhPXR5cGVvZiBNYXAmJmUgaW5zdGFuY2VvZiBNYXA/Im1hcCI6InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJmUgaW5zdGFuY2VvZiBTZXQ/InNldCI6InVuZGVmaW5lZCIhPXR5cGVvZiBEYXRlJiZlIGluc3RhbmNlb2YgRGF0ZT8iZGF0ZSI6InVuZGVmaW5lZCIhPXR5cGVvZiBGaWxlJiZlIGluc3RhbmNlb2YgRmlsZT8iZmlsZSI6Im9iamVjdCI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGF0YSB0eXBlOiAke3N9YCl9fSxnZXRTaXphYmxlT3JpZ2luOmdldFNpemFibGVPcmlnaW4saGV4VG9VaW50OEFycmF5OmZ1bmN0aW9uKGUpe2NvbnN0IHM9ZS5yZXBsYWNlKC9eMHgvLCIiKTtpZihzLmxlbmd0aCUyIT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IGQ9bmV3IFVpbnQ4QXJyYXkocy5sZW5ndGgvMik7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKz0yKWRbZS8yXT1OdW1iZXIucGFyc2VJbnQocy5zbGljZShlLGUrMiksMTYpO3JldHVybiBkfSxpc09iamVjdDppc09iamVjdCxpc1BsYWluT2JqZWN0OmlzUGxhaW5PYmplY3QsaXNzdWU6aXNzdWUsam9pblZhbHVlczpqb2luVmFsdWVzLGpzb25TdHJpbmdpZnlSZXBsYWNlcjpqc29uU3RyaW5naWZ5UmVwbGFjZXIsbWVyZ2U6bWVyZ2UsbWVyZ2VEZWZzOm1lcmdlRGVmcyxub3JtYWxpemVQYXJhbXM6bm9ybWFsaXplUGFyYW1zLG51bGxpc2g6bnVsbGlzaCQxLG51bUtleXM6ZnVuY3Rpb24oZSl7bGV0IHM9MDtmb3IoY29uc3QgZCBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGQpJiZzKys7cmV0dXJuIHN9LG9iamVjdENsb25lOmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9LG9taXQ6b21pdCxvcHRpb25hbEtleXM6b3B0aW9uYWxLZXlzLHBhcnNlZFR5cGU6cGFyc2VkVHlwZSxwYXJ0aWFsOnBhcnRpYWwscGljazpwaWNrJDEscHJlZml4SXNzdWVzOnByZWZpeElzc3VlcyxwcmltaXRpdmVUeXBlczp3cixwcm9taXNlQWxsT2JqZWN0OmZ1bmN0aW9uKGUpe2NvbnN0IHM9T2JqZWN0LmtleXMoZSksZD1zLm1hcChzPT5lW3NdKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCkudGhlbihlPT57Y29uc3QgZD17fTtmb3IobGV0IG09MDttPHMubGVuZ3RoO20rKylkW3NbbV1dPWVbbV07cmV0dXJuIGR9KX0scHJvcGVydHlLZXlUeXBlczp4cixyYW5kb21TdHJpbmc6ZnVuY3Rpb24oZT0xMCl7Y29uc3Qgcz0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO2xldCBkPSIiO2ZvcihsZXQgbT0wO208ZTttKyspZCs9c1tNYXRoLmZsb29yKDI2Kk1hdGgucmFuZG9tKCkpXTtyZXR1cm4gZH0scmVxdWlyZWQ6cmVxdWlyZWQsc2FmZUV4dGVuZDpzYWZlRXh0ZW5kLHNoYWxsb3dDbG9uZTpzaGFsbG93Q2xvbmUsc2x1Z2lmeTpzbHVnaWZ5LHN0cmluZ2lmeVByaW1pdGl2ZTpzdHJpbmdpZnlQcmltaXRpdmUsdWludDhBcnJheVRvQmFzZTY0OnVpbnQ4QXJyYXlUb0Jhc2U2NCx1aW50OEFycmF5VG9CYXNlNjR1cmw6ZnVuY3Rpb24oZSl7cmV0dXJuIHVpbnQ4QXJyYXlUb0Jhc2U2NChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9LHVpbnQ4QXJyYXlUb0hleDpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuZnJvbShlKS5tYXAoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX0sdW53cmFwTWVzc2FnZTp1bndyYXBNZXNzYWdlfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGluaXRpYWxpemVyJDE9KGUscyk9PntlLm5hbWU9IiRab2RFcnJvciIsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl96b2QiLHt2YWx1ZTplLl96b2QsZW51bWVyYWJsZTohMX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJpc3N1ZXMiLHt2YWx1ZTpzLGVudW1lcmFibGU6ITF9KSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkocyxqc29uU3RyaW5naWZ5UmVwbGFjZXIsMiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInRvU3RyaW5nIix7dmFsdWU6KCk9PmUubWVzc2FnZSxlbnVtZXJhYmxlOiExfSl9LGpyPSRjb25zdHJ1Y3RvcigiJFpvZEVycm9yIixpbml0aWFsaXplciQxKSx6cj0kY29uc3RydWN0b3IoIiRab2RFcnJvciIsaW5pdGlhbGl6ZXIkMSx7UGFyZW50OkVycm9yfSk7ZnVuY3Rpb24gZmxhdHRlbkVycm9yKGUscz1lPT5lLm1lc3NhZ2Upe2NvbnN0IGQ9e30sbT1bXTtmb3IoY29uc3QgaCBvZiBlLmlzc3VlcyloLnBhdGgubGVuZ3RoPjA/KGRbaC5wYXRoWzBdXT1kW2gucGF0aFswXV18fFtdLGRbaC5wYXRoWzBdXS5wdXNoKHMoaCkpKTptLnB1c2gocyhoKSk7cmV0dXJue2Zvcm1FcnJvcnM6bSxmaWVsZEVycm9yczpkfX1mdW5jdGlvbiBmb3JtYXRFcnJvcihlLHM9ZT0+ZS5tZXNzYWdlKXtjb25zdCBkPXtfZXJyb3JzOltdfSxwcm9jZXNzRXJyb3I9ZT0+e2Zvcihjb25zdCBtIG9mIGUuaXNzdWVzKWlmKCJpbnZhbGlkX3VuaW9uIj09PW0uY29kZSYmbS5lcnJvcnMubGVuZ3RoKW0uZXJyb3JzLm1hcChlPT5wcm9jZXNzRXJyb3Ioe2lzc3VlczplfSkpO2Vsc2UgaWYoImludmFsaWRfa2V5Ij09PW0uY29kZSlwcm9jZXNzRXJyb3Ioe2lzc3VlczptLmlzc3Vlc30pO2Vsc2UgaWYoImludmFsaWRfZWxlbWVudCI9PT1tLmNvZGUpcHJvY2Vzc0Vycm9yKHtpc3N1ZXM6bS5pc3N1ZXN9KTtlbHNlIGlmKDA9PT1tLnBhdGgubGVuZ3RoKWQuX2Vycm9ycy5wdXNoKHMobSkpO2Vsc2V7bGV0IGU9ZCxoPTA7Zm9yKDtoPG0ucGF0aC5sZW5ndGg7KXtjb25zdCBkPW0ucGF0aFtoXTtoPT09bS5wYXRoLmxlbmd0aC0xPyhlW2RdPWVbZF18fHtfZXJyb3JzOltdfSxlW2RdLl9lcnJvcnMucHVzaChzKG0pKSk6ZVtkXT1lW2RdfHx7X2Vycm9yczpbXX0sZT1lW2RdLGgrK319fTtyZXR1cm4gcHJvY2Vzc0Vycm9yKGUpLGR9ZnVuY3Rpb24gdHJlZWlmeUVycm9yKGUscz1lPT5lLm1lc3NhZ2Upe2NvbnN0IGQ9e2Vycm9yczpbXX0scHJvY2Vzc0Vycm9yPShlLG09W10pPT57dmFyIGgsZztmb3IoY29uc3QgeCBvZiBlLmlzc3VlcylpZigiaW52YWxpZF91bmlvbiI9PT14LmNvZGUmJnguZXJyb3JzLmxlbmd0aCl4LmVycm9ycy5tYXAoZT0+cHJvY2Vzc0Vycm9yKHtpc3N1ZXM6ZX0seC5wYXRoKSk7ZWxzZSBpZigiaW52YWxpZF9rZXkiPT09eC5jb2RlKXByb2Nlc3NFcnJvcih7aXNzdWVzOnguaXNzdWVzfSx4LnBhdGgpO2Vsc2UgaWYoImludmFsaWRfZWxlbWVudCI9PT14LmNvZGUpcHJvY2Vzc0Vycm9yKHtpc3N1ZXM6eC5pc3N1ZXN9LHgucGF0aCk7ZWxzZXtjb25zdCBlPVsuLi5tLC4uLngucGF0aF07aWYoMD09PWUubGVuZ3RoKXtkLmVycm9ycy5wdXNoKHMoeCkpO2NvbnRpbnVlfWxldCAkPWQsUz0wO2Zvcig7UzxlLmxlbmd0aDspe2NvbnN0IGQ9ZVtTXSxtPVM9PT1lLmxlbmd0aC0xOyJzdHJpbmciPT10eXBlb2YgZD8oJC5wcm9wZXJ0aWVzPz8oJC5wcm9wZXJ0aWVzPXt9KSwoaD0kLnByb3BlcnRpZXMpW2RdPz8oaFtkXT17ZXJyb3JzOltdfSksJD0kLnByb3BlcnRpZXNbZF0pOigkLml0ZW1zPz8oJC5pdGVtcz1bXSksKGc9JC5pdGVtcylbZF0/PyhnW2RdPXtlcnJvcnM6W119KSwkPSQuaXRlbXNbZF0pLG0mJiQuZXJyb3JzLnB1c2gocyh4KSksUysrfX19O3JldHVybiBwcm9jZXNzRXJyb3IoZSksZH1mdW5jdGlvbiB0b0RvdFBhdGgoZSl7Y29uc3Qgcz1bXSxkPWUubWFwKGU9PiJvYmplY3QiPT10eXBlb2YgZT9lLmtleTplKTtmb3IoY29uc3QgZSBvZiBkKSJudW1iZXIiPT10eXBlb2YgZT9zLnB1c2goYFske2V9XWApOiJzeW1ib2wiPT10eXBlb2YgZT9zLnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhlKSl9XWApOi9bXlx3JF0vLnRlc3QoZSk/cy5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShlKX1dYCk6KHMubGVuZ3RoJiZzLnB1c2goIi4iKSxzLnB1c2goZSkpO3JldHVybiBzLmpvaW4oIiIpfWZ1bmN0aW9uIHByZXR0aWZ5RXJyb3IoZSl7Y29uc3Qgcz1bXSxkPVsuLi5lLmlzc3Vlc10uc29ydCgoZSxzKT0+KGUucGF0aD8/W10pLmxlbmd0aC0ocy5wYXRoPz9bXSkubGVuZ3RoKTtmb3IoY29uc3QgZSBvZiBkKXMucHVzaChg4pyWICR7ZS5tZXNzYWdlfWApLGUucGF0aD8ubGVuZ3RoJiZzLnB1c2goYCAg4oaSIGF0ICR7dG9Eb3RQYXRoKGUucGF0aCl9YCk7cmV0dXJuIHMuam9pbigiXG4iKX1jb25zdCBfcGFyc2U9ZT0+KHMsZCxtLGgpPT57Y29uc3QgZz1tP09iamVjdC5hc3NpZ24obSx7YXN5bmM6ITF9KTp7YXN5bmM6ITF9LHg9cy5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LGcpO2lmKHggaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyAkWm9kQXN5bmNFcnJvcjtpZih4Lmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHM9bmV3KGg/LkVycj8/ZSkoeC5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxnLGNvbmZpZygpKSkpO3Rocm93IGJyKHMsaD8uY2FsbGVlKSxzfXJldHVybiB4LnZhbHVlfSxJcj1fcGFyc2UoenIpLF9wYXJzZUFzeW5jPWU9PmFzeW5jKHMsZCxtLGgpPT57Y29uc3QgZz1tP09iamVjdC5hc3NpZ24obSx7YXN5bmM6ITB9KTp7YXN5bmM6ITB9O2xldCB4PXMuX3pvZC5ydW4oe3ZhbHVlOmQsaXNzdWVzOltdfSxnKTtpZih4IGluc3RhbmNlb2YgUHJvbWlzZSYmKHg9YXdhaXQgeCkseC5pc3N1ZXMubGVuZ3RoKXtjb25zdCBzPW5ldyhoPy5FcnI/P2UpKHguaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsZyxjb25maWcoKSkpKTt0aHJvdyBicihzLGg/LmNhbGxlZSksc31yZXR1cm4geC52YWx1ZX0sQ3I9X3BhcnNlQXN5bmMoenIpLF9zYWZlUGFyc2U9ZT0+KHMsZCxtKT0+e2NvbnN0IGg9bT97Li4ubSxhc3luYzohMX06e2FzeW5jOiExfSxnPXMuX3pvZC5ydW4oe3ZhbHVlOmQsaXNzdWVzOltdfSxoKTtpZihnIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgJFpvZEFzeW5jRXJyb3I7cmV0dXJuIGcuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcoZT8/anIpKGcuaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsaCxjb25maWcoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTpnLnZhbHVlfX0sVHI9X3NhZmVQYXJzZSh6ciksX3NhZmVQYXJzZUFzeW5jPWU9PmFzeW5jKHMsZCxtKT0+e2NvbnN0IGg9bT9PYmplY3QuYXNzaWduKG0se2FzeW5jOiEwfSk6e2FzeW5jOiEwfTtsZXQgZz1zLl96b2QucnVuKHt2YWx1ZTpkLGlzc3VlczpbXX0saCk7cmV0dXJuIGcgaW5zdGFuY2VvZiBQcm9taXNlJiYoZz1hd2FpdCBnKSxnLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3IGUoZy5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxoLGNvbmZpZygpKSkpfTp7c3VjY2VzczohMCxkYXRhOmcudmFsdWV9fSxScj1fc2FmZVBhcnNlQXN5bmMoenIpLF9lbmNvZGU9ZT0+KHMsZCxtKT0+e2NvbnN0IGg9bT9PYmplY3QuYXNzaWduKG0se2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gX3BhcnNlKGUpKHMsZCxoKX0sRXI9X2VuY29kZSh6ciksX2RlY29kZT1lPT4ocyxkLG0pPT5fcGFyc2UoZSkocyxkLG0pLE9yPV9kZWNvZGUoenIpLF9lbmNvZGVBc3luYz1lPT5hc3luYyhzLGQsbSk9Pntjb25zdCBoPW0/T2JqZWN0LmFzc2lnbihtLHtkaXJlY3Rpb246ImJhY2t3YXJkIn0pOntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIF9wYXJzZUFzeW5jKGUpKHMsZCxoKX0sUHI9X2VuY29kZUFzeW5jKHpyKSxfZGVjb2RlQXN5bmM9ZT0+YXN5bmMocyxkLG0pPT5fcGFyc2VBc3luYyhlKShzLGQsbSksTnI9X2RlY29kZUFzeW5jKHpyKSxfc2FmZUVuY29kZT1lPT4ocyxkLG0pPT57Y29uc3QgaD1tP09iamVjdC5hc3NpZ24obSx7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9KTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBfc2FmZVBhcnNlKGUpKHMsZCxoKX0sRHI9X3NhZmVFbmNvZGUoenIpLF9zYWZlRGVjb2RlPWU9PihzLGQsbSk9Pl9zYWZlUGFyc2UoZSkocyxkLG0pLFVyPV9zYWZlRGVjb2RlKHpyKSxfc2FmZUVuY29kZUFzeW5jPWU9PmFzeW5jKHMsZCxtKT0+e2NvbnN0IGg9bT9PYmplY3QuYXNzaWduKG0se2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gX3NhZmVQYXJzZUFzeW5jKGUpKHMsZCxoKX0sTHI9X3NhZmVFbmNvZGVBc3luYyh6ciksX3NhZmVEZWNvZGVBc3luYz1lPT5hc3luYyhzLGQsbSk9Pl9zYWZlUGFyc2VBc3luYyhlKShzLGQsbSksQXI9X3NhZmVEZWNvZGVBc3luYyh6cikscXI9L15bY0NdW15ccy1dezgsfSQvLEZyPS9eWzAtOWEtel0rJC8sQnI9L15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvLFpyPS9eWzAtOWEtdkEtVl17MjB9JC8sTXI9L15bQS1aYS16MC05XXsyN30kLyxRcj0vXlthLXpBLVowLTlfLV17MjF9JC8sVnI9L15QKD86KFxkK1cpfCg/IS4qVykoPz1cZHxUXGQpKFxkK1kpPyhcZCtNKT8oXGQrRCk/KFQoPz1cZCkoXGQrSCk/KFxkK00pPyhcZCsoWy4sXVxkKyk/Uyk/KT8pJC8sSHI9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLHV1aWQkMT1lPT5lP25ldyBSZWdFeHAoYF4oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tJHtlfVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9KSRgKTovXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS04XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMHxmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYpJC8sV3I9dXVpZCQxKDQpLEpyPXV1aWQkMSg2KSxLcj11dWlkJDEoNyksR3I9L14oPyFcLikoPyEuKlwuXC4pKFtBLVphLXowLTlfJytcLVwuXSopW0EtWmEtejAtOV8rLV1AKFtBLVphLXowLTldW0EtWmEtejAtOVwtXSpcLikrW0EtWmEtel17Mix9JC8sWHI9L15bXlxzQCJdezEsNjR9QFteXHNAXXsxLDI1NX0kL3UsWXI9WHI7ZnVuY3Rpb24gZW1vamkkMSgpe3JldHVybiBuZXcgUmVnRXhwKCJeKFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxccHtFbW9qaV9Db21wb25lbnR9KSskIiwidSIpfWNvbnN0IGVvPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyx0bz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopKSQvLG1hYyQxPWU9Pntjb25zdCBzPWVzY2FwZVJlZ2V4KGU/PyI6Iik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oPzpbMC05QS1GXXsyfSR7c30pezV9WzAtOUEtRl17Mn0kfF4oPzpbMC05YS1mXXsyfSR7c30pezV9WzAtOWEtZl17Mn0kYCl9LG5vPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLyxpbz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxybz0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyxvbz0vXltBLVphLXowLTlfLV0qJC8sYW89L14oPz0uezEsMjUzfVwuPyQpW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlstMC05YS16QS1aXXswLDYxfVswLTlhLXpBLVpdKT8pKlwuPyQvLHNvPS9eKFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pP1wuKStbYS16QS1aXXsyLH0kLyxsbz0vXlwrWzEtOV1cZHs2LDE0fSQvLGNvPSIoPzooPzpcXGRcXGRbMjQ2OF1bMDQ4XXxcXGRcXGRbMTM1NzldWzI2XXxcXGRcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXGR7NH0tKD86KD86MFsxMzU3OF18MVswMl0pLSg/OjBbMS05XXxbMTJdXFxkfDNbMDFdKXwoPzowWzQ2OV18MTEpLSg/OjBbMS05XXxbMTJdXFxkfDMwKXwoPzowMiktKD86MFsxLTldfDFcXGR8MlswLThdKSkpIix1bz1uZXcgUmVnRXhwKGBeJHtjb30kYCk7ZnVuY3Rpb24gdGltZVNvdXJjZShlKXtjb25zdCBzPSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiJudW1iZXIiPT10eXBlb2YgZS5wcmVjaXNpb24/LTE9PT1lLnByZWNpc2lvbj9gJHtzfWA6MD09PWUucHJlY2lzaW9uP2Ake3N9OlswLTVdXFxkYDpgJHtzfTpbMC01XVxcZFxcLlxcZHske2UucHJlY2lzaW9ufX1gOmAke3N9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHRpbWUkMShlKXtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dGltZVNvdXJjZShlKX0kYCl9ZnVuY3Rpb24gZGF0ZXRpbWUkMShlKXtjb25zdCBzPXRpbWVTb3VyY2Uoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pLGQ9WyJaIl07ZS5sb2NhbCYmZC5wdXNoKCIiKSxlLm9mZnNldCYmZC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBtPWAke3N9KD86JHtkLmpvaW4oInwiKX0pYDtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7Y299VCg/OiR7bX0pJGApfWNvbnN0IHN0cmluZyQyPWU9Pm5ldyBSZWdFeHAoYF4ke2U/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIn0kYCkscG89L14tP1xkK24/JC8sbW89L14tP1xkKyQvLGZvPS9eLT9cZCsoPzpcLlxkKyk/JC8saG89L14oPzp0cnVlfGZhbHNlKSQvaSxnbz0vXm51bGwkL2ksdm89L151bmRlZmluZWQkL2kseW89L15bXkEtWl0qJC8sYm89L15bXmEtel0qJC8sX289L15bMC05YS1mQS1GXSokLztmdW5jdGlvbiBmaXhlZEJhc2U2NChlLHMpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOSsvXXske2V9fSR7c30kYCl9ZnVuY3Rpb24gZml4ZWRCYXNlNjR1cmwoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bQS1aYS16MC05Xy1deyR7ZX19JGApfWNvbnN0IHhvPWZpeGVkQmFzZTY0KDIyLCI9PSIpLHdvPWZpeGVkQmFzZTY0dXJsKDIyKSwkbz1maXhlZEJhc2U2NCgyNywiPSIpLFNvPWZpeGVkQmFzZTY0dXJsKDI3KSxrbz1maXhlZEJhc2U2NCg0MywiPSIpLGpvPWZpeGVkQmFzZTY0dXJsKDQzKSx6bz1maXhlZEJhc2U2NCg2NCwiIiksSW89Zml4ZWRCYXNlNjR1cmwoNjQpLENvPWZpeGVkQmFzZTY0KDg2LCI9PSIpLFRvPWZpeGVkQmFzZTY0dXJsKDg2KSxSbz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmFzZTY0OnJvLGJhc2U2NHVybDpvbyxiaWdpbnQ6cG8sYm9vbGVhbjpobyxicm93c2VyRW1haWw6L15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sY2lkcnY0Om5vLGNpZHJ2NjppbyxjdWlkOnFyLGN1aWQyOkZyLGRhdGU6dW8sZGF0ZXRpbWU6ZGF0ZXRpbWUkMSxkb21haW46c28sZHVyYXRpb246VnIsZTE2NDpsbyxlbWFpbDpHcixlbW9qaTplbW9qaSQxLGV4dGVuZGVkRHVyYXRpb246L15bLStdP1AoPyEkKSg/Oig/OlstK10/XGQrWSl8KD86Wy0rXT9cZCtbLixdXGQrWSQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86KD86Wy0rXT9cZCtXKXwoPzpbLStdP1xkK1suLF1cZCtXJCkpPyg/Oig/OlstK10/XGQrRCl8KD86Wy0rXT9cZCtbLixdXGQrRCQpKT8oPzpUKD89W1xkKy1dKSg/Oig/OlstK10/XGQrSCl8KD86Wy0rXT9cZCtbLixdXGQrSCQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86Wy0rXT9cZCsoPzpbLixdXGQrKT9TKT8pPz8kLyxndWlkOkhyLGhleDpfbyxob3N0bmFtZTphbyxodG1sNUVtYWlsOi9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLGlkbkVtYWlsOllyLGludGVnZXI6bW8saXB2NDplbyxpcHY2OnRvLGtzdWlkOk1yLGxvd2VyY2FzZTp5byxtYWM6bWFjJDEsbWQ1X2Jhc2U2NDp4byxtZDVfYmFzZTY0dXJsOndvLG1kNV9oZXg6L15bMC05YS1mQS1GXXszMn0kLyxuYW5vaWQ6UXIsbnVsbDpnbyxudW1iZXI6Zm8scmZjNTMyMkVtYWlsOi9eKChbXjw+KClcW1xdXFwuLDs6XHNAIl0rKFwuW148PigpXFtcXVxcLiw7OlxzQCJdKykqKXwoIi4rIikpQCgoXFtbMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XSl8KChbYS16QS1aXC0wLTldK1wuKStbYS16QS1aXXsyLH0pKSQvLHNoYTFfYmFzZTY0OiRvLHNoYTFfYmFzZTY0dXJsOlNvLHNoYTFfaGV4Oi9eWzAtOWEtZkEtRl17NDB9JC8sc2hhMjU2X2Jhc2U2NDprbyxzaGEyNTZfYmFzZTY0dXJsOmpvLHNoYTI1Nl9oZXg6L15bMC05YS1mQS1GXXs2NH0kLyxzaGEzODRfYmFzZTY0OnpvLHNoYTM4NF9iYXNlNjR1cmw6SW8sc2hhMzg0X2hleDovXlswLTlhLWZBLUZdezk2fSQvLHNoYTUxMl9iYXNlNjQ6Q28sc2hhNTEyX2Jhc2U2NHVybDpUbyxzaGE1MTJfaGV4Oi9eWzAtOWEtZkEtRl17MTI4fSQvLHN0cmluZzpzdHJpbmckMix0aW1lOnRpbWUkMSx1bGlkOkJyLHVuZGVmaW5lZDp2byx1bmljb2RlRW1haWw6WHIsdXBwZXJjYXNlOmJvLHV1aWQ6dXVpZCQxLHV1aWQ0OldyLHV1aWQ2OkpyLHV1aWQ3OktyLHhpZDpacn0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxFbz0kY29uc3RydWN0b3IoIiRab2RDaGVjayIsKGUscyk9Pnt2YXIgZDtlLl96b2Q/PyhlLl96b2Q9e30pLGUuX3pvZC5kZWY9cywoZD1lLl96b2QpLm9uYXR0YWNoPz8oZC5vbmF0dGFjaD1bXSl9KSxPbz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxQbz0kY29uc3RydWN0b3IoIiRab2RDaGVja0xlc3NUaGFuIiwoZSxzKT0+e0VvLmluaXQoZSxzKTtjb25zdCBkPU9vW3R5cGVvZiBzLnZhbHVlXTtlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnLG09KHMuaW5jbHVzaXZlP2QubWF4aW11bTpkLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cy52YWx1ZTxtJiYocy5pbmNsdXNpdmU/ZC5tYXhpbXVtPXMudmFsdWU6ZC5leGNsdXNpdmVNYXhpbXVtPXMudmFsdWUpfSksZS5fem9kLmNoZWNrPW09Pnsocy5pbmNsdXNpdmU/bS52YWx1ZTw9cy52YWx1ZTptLnZhbHVlPHMudmFsdWUpfHxtLmlzc3Vlcy5wdXNoKHtvcmlnaW46ZCxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOiJvYmplY3QiPT10eXBlb2Ygcy52YWx1ZT9zLnZhbHVlLmdldFRpbWUoKTpzLnZhbHVlLGlucHV0Om0udmFsdWUsaW5jbHVzaXZlOnMuaW5jbHVzaXZlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLE5vPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0IGQ9T29bdHlwZW9mIHMudmFsdWVdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBkPWUuX3pvZC5iYWcsbT0ocy5pbmNsdXNpdmU/ZC5taW5pbXVtOmQuZXhjbHVzaXZlTWluaW11bSk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtzLnZhbHVlPm0mJihzLmluY2x1c2l2ZT9kLm1pbmltdW09cy52YWx1ZTpkLmV4Y2x1c2l2ZU1pbmltdW09cy52YWx1ZSl9KSxlLl96b2QuY2hlY2s9bT0+eyhzLmluY2x1c2l2ZT9tLnZhbHVlPj1zLnZhbHVlOm0udmFsdWU+cy52YWx1ZSl8fG0uaXNzdWVzLnB1c2goe29yaWdpbjpkLGNvZGU6InRvb19zbWFsbCIsbWluaW11bToib2JqZWN0Ij09dHlwZW9mIHMudmFsdWU/cy52YWx1ZS5nZXRUaW1lKCk6cy52YWx1ZSxpbnB1dDptLnZhbHVlLGluY2x1c2l2ZTpzLmluY2x1c2l2ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxEbz0kY29uc3RydWN0b3IoIiRab2RDaGVja011bHRpcGxlT2YiLChlLHMpPT57RW8uaW5pdChlLHMpLGUuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pnt2YXIgZDsoZD1lLl96b2QuYmFnKS5tdWx0aXBsZU9mPz8oZC5tdWx0aXBsZU9mPXMudmFsdWUpfSksZS5fem9kLmNoZWNrPWQ9PntpZih0eXBlb2YgZC52YWx1ZSE9dHlwZW9mIHMudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOygiYmlnaW50Ij09dHlwZW9mIGQudmFsdWU/ZC52YWx1ZSVzLnZhbHVlPT09QmlnSW50KDApOjA9PT1mbG9hdFNhZmVSZW1haW5kZXIoZC52YWx1ZSxzLnZhbHVlKSl8fGQuaXNzdWVzLnB1c2goe29yaWdpbjp0eXBlb2YgZC52YWx1ZSxjb2RlOiJub3RfbXVsdGlwbGVfb2YiLGRpdmlzb3I6cy52YWx1ZSxpbnB1dDpkLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLFVvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSxzKT0+e0VvLmluaXQoZSxzKSxzLmZvcm1hdD1zLmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IGQ9cy5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxtPWQ/ImludCI6Im51bWJlciIsW2gsZ109JHJbcy5mb3JtYXRdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBtPWUuX3pvZC5iYWc7bS5mb3JtYXQ9cy5mb3JtYXQsbS5taW5pbXVtPWgsbS5tYXhpbXVtPWcsZCYmKG0ucGF0dGVybj1tbyl9KSxlLl96b2QuY2hlY2s9eD0+e2NvbnN0ICQ9eC52YWx1ZTtpZihkKXtpZighTnVtYmVyLmlzSW50ZWdlcigkKSlyZXR1cm4gdm9pZCB4Lmlzc3Vlcy5wdXNoKHtleHBlY3RlZDptLGZvcm1hdDpzLmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OiQsaW5zdDplfSk7aWYoIU51bWJlci5pc1NhZmVJbnRlZ2VyKCQpKXJldHVybiB2b2lkKCQ+MD94Lmlzc3Vlcy5wdXNoKHtpbnB1dDokLGNvZGU6InRvb19iaWciLG1heGltdW06TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsbm90ZToiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS4iLGluc3Q6ZSxvcmlnaW46bSxpbmNsdXNpdmU6ITAsY29udGludWU6IXMuYWJvcnR9KTp4Lmlzc3Vlcy5wdXNoKHtpbnB1dDokLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjptLGluY2x1c2l2ZTohMCxjb250aW51ZTohcy5hYm9ydH0pKX0kPGgmJnguaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDokLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpoLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSwkPmcmJnguaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDokLGNvZGU6InRvb19iaWciLG1heGltdW06ZyxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksTG89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tCaWdJbnRGb3JtYXQiLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0W2QsbV09U3Jbcy5mb3JtYXRdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBoPWUuX3pvZC5iYWc7aC5mb3JtYXQ9cy5mb3JtYXQsaC5taW5pbXVtPWQsaC5tYXhpbXVtPW19KSxlLl96b2QuY2hlY2s9aD0+e2NvbnN0IGc9aC52YWx1ZTtnPGQmJmguaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpnLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpkLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSxnPm0mJmguaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpnLGNvZGU6InRvb19iaWciLG1heGltdW06bSxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksQW89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tNYXhTaXplIiwoZSxzKT0+e3ZhciBkO0VvLmluaXQoZSxzKSwoZD1lLl96b2QuZGVmKS53aGVuPz8oZC53aGVuPWU9Pntjb25zdCBzPWUudmFsdWU7cmV0dXJuIW51bGxpc2gkMShzKSYmdm9pZCAwIT09cy5zaXplfSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cy5tYXhpbXVtPGQmJihlLl96b2QuYmFnLm1heGltdW09cy5tYXhpbXVtKX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlO20uc2l6ZTw9cy5tYXhpbXVtfHxkLmlzc3Vlcy5wdXNoKHtvcmlnaW46Z2V0U2l6YWJsZU9yaWdpbihtKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnMubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6bSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxxbz0kY29uc3RydWN0b3IoIiRab2RDaGVja01pblNpemUiLChlLHMpPT57dmFyIGQ7RW8uaW5pdChlLHMpLChkPWUuX3pvZC5kZWYpLndoZW4/PyhkLndoZW49ZT0+e2NvbnN0IHM9ZS52YWx1ZTtyZXR1cm4hbnVsbGlzaCQxKHMpJiZ2b2lkIDAhPT1zLnNpemV9KSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtzLm1pbmltdW0+ZCYmKGUuX3pvZC5iYWcubWluaW11bT1zLm1pbmltdW0pfSksZS5fem9kLmNoZWNrPWQ9Pntjb25zdCBtPWQudmFsdWU7bS5zaXplPj1zLm1pbmltdW18fGQuaXNzdWVzLnB1c2goe29yaWdpbjpnZXRTaXphYmxlT3JpZ2luKG0pLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0Om0saW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksRm89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tTaXplRXF1YWxzIiwoZSxzKT0+e3ZhciBkO0VvLmluaXQoZSxzKSwoZD1lLl96b2QuZGVmKS53aGVuPz8oZC53aGVuPWU9Pntjb25zdCBzPWUudmFsdWU7cmV0dXJuIW51bGxpc2gkMShzKSYmdm9pZCAwIT09cy5zaXplfSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZztkLm1pbmltdW09cy5zaXplLGQubWF4aW11bT1zLnNpemUsZC5zaXplPXMuc2l6ZX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlLGg9bS5zaXplO2lmKGg9PT1zLnNpemUpcmV0dXJuO2NvbnN0IGc9aD5zLnNpemU7ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOmdldFNpemFibGVPcmlnaW4obSksLi4uZz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpzLnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cy5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxCbz0kY29uc3RydWN0b3IoIiRab2RDaGVja01heExlbmd0aCIsKGUscyk9Pnt2YXIgZDtFby5pbml0KGUscyksKGQ9ZS5fem9kLmRlZikud2hlbj8/KGQud2hlbj1lPT57Y29uc3Qgcz1lLnZhbHVlO3JldHVybiFudWxsaXNoJDEocykmJnZvaWQgMCE9PXMubGVuZ3RofSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cy5tYXhpbXVtPGQmJihlLl96b2QuYmFnLm1heGltdW09cy5tYXhpbXVtKX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlO2lmKG0ubGVuZ3RoPD1zLm1heGltdW0pcmV0dXJuO2NvbnN0IGg9Z2V0TGVuZ3RoYWJsZU9yaWdpbihtKTtkLmlzc3Vlcy5wdXNoKHtvcmlnaW46aCxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnMubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6bSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxabz0kY29uc3RydWN0b3IoIiRab2RDaGVja01pbkxlbmd0aCIsKGUscyk9Pnt2YXIgZDtFby5pbml0KGUscyksKGQ9ZS5fem9kLmRlZikud2hlbj8/KGQud2hlbj1lPT57Y29uc3Qgcz1lLnZhbHVlO3JldHVybiFudWxsaXNoJDEocykmJnZvaWQgMCE9PXMubGVuZ3RofSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7cy5taW5pbXVtPmQmJihlLl96b2QuYmFnLm1pbmltdW09cy5taW5pbXVtKX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlO2lmKG0ubGVuZ3RoPj1zLm1pbmltdW0pcmV0dXJuO2NvbnN0IGg9Z2V0TGVuZ3RoYWJsZU9yaWdpbihtKTtkLmlzc3Vlcy5wdXNoKHtvcmlnaW46aCxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cy5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDptLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLE1vPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrTGVuZ3RoRXF1YWxzIiwoZSxzKT0+e3ZhciBkO0VvLmluaXQoZSxzKSwoZD1lLl96b2QuZGVmKS53aGVuPz8oZC53aGVuPWU9Pntjb25zdCBzPWUudmFsdWU7cmV0dXJuIW51bGxpc2gkMShzKSYmdm9pZCAwIT09cy5sZW5ndGh9KSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnO2QubWluaW11bT1zLmxlbmd0aCxkLm1heGltdW09cy5sZW5ndGgsZC5sZW5ndGg9cy5sZW5ndGh9KSxlLl96b2QuY2hlY2s9ZD0+e2NvbnN0IG09ZC52YWx1ZSxoPW0ubGVuZ3RoO2lmKGg9PT1zLmxlbmd0aClyZXR1cm47Y29uc3QgZz1nZXRMZW5ndGhhYmxlT3JpZ2luKG0pLHg9aD5zLmxlbmd0aDtkLmlzc3Vlcy5wdXNoKHtvcmlnaW46ZywuLi54P3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnMubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnMubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxRbz0kY29uc3RydWN0b3IoIiRab2RDaGVja1N0cmluZ0Zvcm1hdCIsKGUscyk9Pnt2YXIgZCxtO0VvLmluaXQoZSxzKSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnO2QuZm9ybWF0PXMuZm9ybWF0LHMucGF0dGVybiYmKGQucGF0dGVybnM/PyhkLnBhdHRlcm5zPW5ldyBTZXQpLGQucGF0dGVybnMuYWRkKHMucGF0dGVybikpfSkscy5wYXR0ZXJuPyhkPWUuX3pvZCkuY2hlY2s/PyhkLmNoZWNrPWQ9PntzLnBhdHRlcm4ubGFzdEluZGV4PTAscy5wYXR0ZXJuLnRlc3QoZC52YWx1ZSl8fGQuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnMuZm9ybWF0LGlucHV0OmQudmFsdWUsLi4ucy5wYXR0ZXJuP3twYXR0ZXJuOnMucGF0dGVybi50b1N0cmluZygpfTp7fSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX0pOihtPWUuX3pvZCkuY2hlY2s/PyhtLmNoZWNrPSgpPT57fSl9KSxWbz0kY29uc3RydWN0b3IoIiRab2RDaGVja1JlZ2V4IiwoZSxzKT0+e1FvLmluaXQoZSxzKSxlLl96b2QuY2hlY2s9ZD0+e3MucGF0dGVybi5sYXN0SW5kZXg9MCxzLnBhdHRlcm4udGVzdChkLnZhbHVlKXx8ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpkLnZhbHVlLHBhdHRlcm46cy5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksSG89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tMb3dlckNhc2UiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPXlvKSxRby5pbml0KGUscyl9KSxXbz0kY29uc3RydWN0b3IoIiRab2RDaGVja1VwcGVyQ2FzZSIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49Ym8pLFFvLmluaXQoZSxzKX0pLEpvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrSW5jbHVkZXMiLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0IGQ9ZXNjYXBlUmVnZXgocy5pbmNsdWRlcyksbT1uZXcgUmVnRXhwKCJudW1iZXIiPT10eXBlb2Ygcy5wb3NpdGlvbj9gXi57JHtzLnBvc2l0aW9ufX0ke2R9YDpkKTtzLnBhdHRlcm49bSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3Qgcz1lLl96b2QuYmFnO3MucGF0dGVybnM/PyhzLnBhdHRlcm5zPW5ldyBTZXQpLHMucGF0dGVybnMuYWRkKG0pfSksZS5fem9kLmNoZWNrPWQ9PntkLnZhbHVlLmluY2x1ZGVzKHMuaW5jbHVkZXMscy5wb3NpdGlvbil8fGQuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6cy5pbmNsdWRlcyxpbnB1dDpkLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLEtvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrU3RhcnRzV2l0aCIsKGUscyk9PntFby5pbml0KGUscyk7Y29uc3QgZD1uZXcgUmVnRXhwKGBeJHtlc2NhcGVSZWdleChzLnByZWZpeCl9LipgKTtzLnBhdHRlcm4/PyhzLnBhdHRlcm49ZCksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IHM9ZS5fem9kLmJhZztzLnBhdHRlcm5zPz8ocy5wYXR0ZXJucz1uZXcgU2V0KSxzLnBhdHRlcm5zLmFkZChkKX0pLGUuX3pvZC5jaGVjaz1kPT57ZC52YWx1ZS5zdGFydHNXaXRoKHMucHJlZml4KXx8ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6cy5wcmVmaXgsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxHbz0kY29uc3RydWN0b3IoIiRab2RDaGVja0VuZHNXaXRoIiwoZSxzKT0+e0VvLmluaXQoZSxzKTtjb25zdCBkPW5ldyBSZWdFeHAoYC4qJHtlc2NhcGVSZWdleChzLnN1ZmZpeCl9JGApO3MucGF0dGVybj8/KHMucGF0dGVybj1kKSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3Qgcz1lLl96b2QuYmFnO3MucGF0dGVybnM/PyhzLnBhdHRlcm5zPW5ldyBTZXQpLHMucGF0dGVybnMuYWRkKGQpfSksZS5fem9kLmNoZWNrPWQ9PntkLnZhbHVlLmVuZHNXaXRoKHMuc3VmZml4KXx8ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnMuc3VmZml4LGlucHV0OmQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSk7ZnVuY3Rpb24gaGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChlLHMsZCl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhkLGUuaXNzdWVzKSl9Y29uc3QgWG89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tQcm9wZXJ0eSIsKGUscyk9PntFby5pbml0KGUscyksZS5fem9kLmNoZWNrPWU9Pntjb25zdCBkPXMuc2NoZW1hLl96b2QucnVuKHt2YWx1ZTplLnZhbHVlW3MucHJvcGVydHldLGlzc3VlczpbXX0se30pO2lmKGQgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBkLnRoZW4oZD0+aGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChkLGUscy5wcm9wZXJ0eSkpO2hhbmRsZUNoZWNrUHJvcGVydHlSZXN1bHQoZCxlLHMucHJvcGVydHkpfX0pLFlvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrTWltZVR5cGUiLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0IGQ9bmV3IFNldChzLm1pbWUpO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9PntlLl96b2QuYmFnLm1pbWU9cy5taW1lfSksZS5fem9kLmNoZWNrPW09PntkLmhhcyhtLnZhbHVlLnR5cGUpfHxtLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6cy5taW1lLGlucHV0Om0udmFsdWUudHlwZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxlYT0kY29uc3RydWN0b3IoIiRab2RDaGVja092ZXJ3cml0ZSIsKGUscyk9PntFby5pbml0KGUscyksZS5fem9kLmNoZWNrPWU9PntlLnZhbHVlPXMudHgoZS52YWx1ZSl9fSk7Y2xhc3MgRG9je2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMmJih0aGlzLmFyZ3M9ZSl9aW5kZW50ZWQoZSl7dGhpcy5pbmRlbnQrPTEsZSh0aGlzKSx0aGlzLmluZGVudC09MX13cml0ZShlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZSh0aGlzLHtleGVjdXRpb246InN5bmMifSksdm9pZCBlKHRoaXMse2V4ZWN1dGlvbjoiYXN5bmMifSk7Y29uc3Qgcz1lLnNwbGl0KCJcbiIpLmZpbHRlcihlPT5lKSxkPU1hdGgubWluKC4uLnMubWFwKGU9PmUubGVuZ3RoLWUudHJpbVN0YXJ0KCkubGVuZ3RoKSksbT1zLm1hcChlPT5lLnNsaWNlKGQpKS5tYXAoZT0+IiAiLnJlcGVhdCgyKnRoaXMuaW5kZW50KStlKTtmb3IoY29uc3QgZSBvZiBtKXRoaXMuY29udGVudC5wdXNoKGUpfWNvbXBpbGUoKXtjb25zdCBlPUZ1bmN0aW9uLHM9dGhpcz8uYXJncyxkPVsuLi4odGhpcz8uY29udGVudD8/WyIiXSkubWFwKGU9PmAgICR7ZX1gKV07cmV0dXJuIG5ldyBlKC4uLnMsZC5qb2luKCJcbiIpKX19Y29uc3QgdGE9e21ham9yOjQsbWlub3I6MyxwYXRjaDo2fSxuYT0kY29uc3RydWN0b3IoIiRab2RUeXBlIiwoZSxzKT0+e3ZhciBkO2U/PyhlPXt9KSxlLl96b2QuZGVmPXMsZS5fem9kLmJhZz1lLl96b2QuYmFnfHx7fSxlLl96b2QudmVyc2lvbj10YTtjb25zdCBtPVsuLi5lLl96b2QuZGVmLmNoZWNrcz8/W11dO2UuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKSYmbS51bnNoaWZ0KGUpO2Zvcihjb25zdCBzIG9mIG0pZm9yKGNvbnN0IGQgb2Ygcy5fem9kLm9uYXR0YWNoKWQoZSk7aWYoMD09PW0ubGVuZ3RoKShkPWUuX3pvZCkuZGVmZXJyZWQ/PyhkLmRlZmVycmVkPVtdKSxlLl96b2QuZGVmZXJyZWQ/LnB1c2goKCk9PntlLl96b2QucnVuPWUuX3pvZC5wYXJzZX0pO2Vsc2V7Y29uc3QgcnVuQ2hlY2tzPShlLHMsZCk9PntsZXQgbSxoPWFib3J0ZWQoZSk7Zm9yKGNvbnN0IGcgb2Ygcyl7aWYoZy5fem9kLmRlZi53aGVuKXtpZighZy5fem9kLmRlZi53aGVuKGUpKWNvbnRpbnVlfWVsc2UgaWYoaCljb250aW51ZTtjb25zdCBzPWUuaXNzdWVzLmxlbmd0aCx4PWcuX3pvZC5jaGVjayhlKTtpZih4IGluc3RhbmNlb2YgUHJvbWlzZSYmITE9PT1kPy5hc3luYyl0aHJvdyBuZXcgJFpvZEFzeW5jRXJyb3I7aWYobXx8eCBpbnN0YW5jZW9mIFByb21pc2UpbT0obT8/UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IHg7ZS5pc3N1ZXMubGVuZ3RoIT09cyYmKGh8fChoPWFib3J0ZWQoZSxzKSkpfSk7ZWxzZXtpZihlLmlzc3Vlcy5sZW5ndGg9PT1zKWNvbnRpbnVlO2h8fChoPWFib3J0ZWQoZSxzKSl9fXJldHVybiBtP20udGhlbigoKT0+ZSk6ZX0saGFuZGxlQ2FuYXJ5UmVzdWx0PShzLGQsaCk9PntpZihhYm9ydGVkKHMpKXJldHVybiBzLmFib3J0ZWQ9ITAscztjb25zdCBnPXJ1bkNoZWNrcyhkLG0saCk7aWYoZyBpbnN0YW5jZW9mIFByb21pc2Upe2lmKCExPT09aC5hc3luYyl0aHJvdyBuZXcgJFpvZEFzeW5jRXJyb3I7cmV0dXJuIGcudGhlbihzPT5lLl96b2QucGFyc2UocyxoKSl9cmV0dXJuIGUuX3pvZC5wYXJzZShnLGgpfTtlLl96b2QucnVuPShzLGQpPT57aWYoZC5za2lwQ2hlY2tzKXJldHVybiBlLl96b2QucGFyc2UocyxkKTtpZigiYmFja3dhcmQiPT09ZC5kaXJlY3Rpb24pe2NvbnN0IG09ZS5fem9kLnBhcnNlKHt2YWx1ZTpzLnZhbHVlLGlzc3VlczpbXX0sey4uLmQsc2tpcENoZWNrczohMH0pO3JldHVybiBtIGluc3RhbmNlb2YgUHJvbWlzZT9tLnRoZW4oZT0+aGFuZGxlQ2FuYXJ5UmVzdWx0KGUscyxkKSk6aGFuZGxlQ2FuYXJ5UmVzdWx0KG0scyxkKX1jb25zdCBoPWUuX3pvZC5wYXJzZShzLGQpO2lmKGggaW5zdGFuY2VvZiBQcm9taXNlKXtpZighMT09PWQuYXN5bmMpdGhyb3cgbmV3ICRab2RBc3luY0Vycm9yO3JldHVybiBoLnRoZW4oZT0+cnVuQ2hlY2tzKGUsbSxkKSl9cmV0dXJuIHJ1bkNoZWNrcyhoLG0sZCl9fWRlZmluZUxhenkoZSwifnN0YW5kYXJkIiwoKT0+KHt2YWxpZGF0ZTpzPT57dHJ5e2NvbnN0IGQ9VHIoZSxzKTtyZXR1cm4gZC5zdWNjZXNzP3t2YWx1ZTpkLmRhdGF9Ontpc3N1ZXM6ZC5lcnJvcj8uaXNzdWVzfX1jYXRjaChkKXtyZXR1cm4gUnIoZSxzKS50aGVuKGU9PmUuc3VjY2Vzcz97dmFsdWU6ZS5kYXRhfTp7aXNzdWVzOmUuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX0pKX0pLHJhPSRjb25zdHJ1Y3RvcigiJFpvZFN0cmluZyIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhdHRlcm49Wy4uLmU/Ll96b2QuYmFnPy5wYXR0ZXJucz8/W11dLnBvcCgpPz9zdHJpbmckMihlLl96b2QuYmFnKSxlLl96b2QucGFyc2U9KGQsbSk9PntpZihzLmNvZXJjZSl0cnl7ZC52YWx1ZT1TdHJpbmcoZC52YWx1ZSl9Y2F0Y2gobSl7fXJldHVybiJzdHJpbmciPT10eXBlb2YgZC52YWx1ZXx8ZC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpkLnZhbHVlLGluc3Q6ZX0pLGR9fSksb2E9JGNvbnN0cnVjdG9yKCIkWm9kU3RyaW5nRm9ybWF0IiwoZSxzKT0+e1FvLmluaXQoZSxzKSxyYS5pbml0KGUscyl9KSxhYT0kY29uc3RydWN0b3IoIiRab2RHVUlEIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Iciksb2EuaW5pdChlLHMpfSksc2E9JGNvbnN0cnVjdG9yKCIkWm9kVVVJRCIsKGUscyk9PntpZihzLnZlcnNpb24pe2NvbnN0IGU9e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bcy52ZXJzaW9uXTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke3MudmVyc2lvbn0iYCk7cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPXV1aWQkMShlKSl9ZWxzZSBzLnBhdHRlcm4/PyhzLnBhdHRlcm49dXVpZCQxKCkpO29hLmluaXQoZSxzKX0pLGxhPSRjb25zdHJ1Y3RvcigiJFpvZEVtYWlsIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Hciksb2EuaW5pdChlLHMpfSksY2E9JGNvbnN0cnVjdG9yKCIkWm9kVVJMIiwoZSxzKT0+e29hLmluaXQoZSxzKSxlLl96b2QuY2hlY2s9ZD0+e3RyeXtjb25zdCBtPWQudmFsdWUudHJpbSgpLGg9bmV3IFVSTChtKTtyZXR1cm4gcy5ob3N0bmFtZSYmKHMuaG9zdG5hbWUubGFzdEluZGV4PTAscy5ob3N0bmFtZS50ZXN0KGguaG9zdG5hbWUpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgaG9zdG5hbWUiLHBhdHRlcm46cy5ob3N0bmFtZS5zb3VyY2UsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSkscy5wcm90b2NvbCYmKHMucHJvdG9jb2wubGFzdEluZGV4PTAscy5wcm90b2NvbC50ZXN0KGgucHJvdG9jb2wuZW5kc1dpdGgoIjoiKT9oLnByb3RvY29sLnNsaWNlKDAsLTEpOmgucHJvdG9jb2wpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgcHJvdG9jb2wiLHBhdHRlcm46cy5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSksdm9pZChzLm5vcm1hbGl6ZT9kLnZhbHVlPWguaHJlZjpkLnZhbHVlPW0pfWNhdGNoKG0pe2QuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19fSksdWE9JGNvbnN0cnVjdG9yKCIkWm9kRW1vamkiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPWVtb2ppJDEoKSksb2EuaW5pdChlLHMpfSkscGE9JGNvbnN0cnVjdG9yKCIkWm9kTmFub0lEIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Rciksb2EuaW5pdChlLHMpfSksbWE9JGNvbnN0cnVjdG9yKCIkWm9kQ1VJRCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49cXIpLG9hLmluaXQoZSxzKX0pLGZhPSRjb25zdHJ1Y3RvcigiJFpvZENVSUQyIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Gciksb2EuaW5pdChlLHMpfSksaGE9JGNvbnN0cnVjdG9yKCIkWm9kVUxJRCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49QnIpLG9hLmluaXQoZSxzKX0pLGdhPSRjb25zdHJ1Y3RvcigiJFpvZFhJRCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49WnIpLG9hLmluaXQoZSxzKX0pLHZhPSRjb25zdHJ1Y3RvcigiJFpvZEtTVUlEIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Nciksb2EuaW5pdChlLHMpfSksX2E9JGNvbnN0cnVjdG9yKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPWRhdGV0aW1lJDEocykpLG9hLmluaXQoZSxzKX0pLHhhPSRjb25zdHJ1Y3RvcigiJFpvZElTT0RhdGUiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPXVvKSxvYS5pbml0KGUscyl9KSx3YT0kY29uc3RydWN0b3IoIiRab2RJU09UaW1lIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj10aW1lJDEocykpLG9hLmluaXQoZSxzKX0pLCRhPSRjb25zdHJ1Y3RvcigiJFpvZElTT0R1cmF0aW9uIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Wciksb2EuaW5pdChlLHMpfSksamE9JGNvbnN0cnVjdG9yKCIkWm9kSVB2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49ZW8pLG9hLmluaXQoZSxzKSxlLl96b2QuYmFnLmZvcm1hdD0iaXB2NCJ9KSx6YT0kY29uc3RydWN0b3IoIiRab2RJUHY2IiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj10byksb2EuaW5pdChlLHMpLGUuX3pvZC5iYWcuZm9ybWF0PSJpcHY2IixlLl96b2QuY2hlY2s9ZD0+e3RyeXtuZXcgVVJMKGBodHRwOi8vWyR7ZC52YWx1ZX1dYCl9Y2F0Y2h7ZC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaXB2NiIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19fSksQ2E9JGNvbnN0cnVjdG9yKCIkWm9kTUFDIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1tYWMkMShzLmRlbGltaXRlcikpLG9hLmluaXQoZSxzKSxlLl96b2QuYmFnLmZvcm1hdD0ibWFjIn0pLFRhPSRjb25zdHJ1Y3RvcigiJFpvZENJRFJ2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49bm8pLG9hLmluaXQoZSxzKX0pLFJhPSRjb25zdHJ1Y3RvcigiJFpvZENJRFJ2NiIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49aW8pLG9hLmluaXQoZSxzKSxlLl96b2QuY2hlY2s9ZD0+e2NvbnN0IG09ZC52YWx1ZS5zcGxpdCgiLyIpO3RyeXtpZigyIT09bS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yO2NvbnN0W2Usc109bTtpZighcyl0aHJvdyBuZXcgRXJyb3I7Y29uc3QgZD1OdW1iZXIocyk7aWYoYCR7ZH1gIT09cyl0aHJvdyBuZXcgRXJyb3I7aWYoZDwwfHxkPjEyOCl0aHJvdyBuZXcgRXJyb3I7bmV3IFVSTChgaHR0cDovL1ske2V9XWApfWNhdGNoe2QuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19fSk7ZnVuY3Rpb24gaXNWYWxpZEJhc2U2NChlKXtpZigiIj09PWUpcmV0dXJuITA7aWYoZS5sZW5ndGglNCE9MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEVhPSRjb25zdHJ1Y3RvcigiJFpvZEJhc2U2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49cm8pLG9hLmluaXQoZSxzKSxlLl96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0IixlLl96b2QuY2hlY2s9ZD0+e2lzVmFsaWRCYXNlNjQoZC52YWx1ZSl8fGQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KTtmdW5jdGlvbiBpc1ZhbGlkQmFzZTY0VVJMKGUpe2lmKCFvby50ZXN0KGUpKXJldHVybiExO2NvbnN0IHM9ZS5yZXBsYWNlKC9bLV9dL2csZT0+Ii0iPT09ZT8iKyI6Ii8iKTtyZXR1cm4gaXNWYWxpZEJhc2U2NChzLnBhZEVuZCg0Kk1hdGguY2VpbChzLmxlbmd0aC80KSwiPSIpKX1jb25zdCBPYT0kY29uc3RydWN0b3IoIiRab2RCYXNlNjRVUkwiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPW9vKSxvYS5pbml0KGUscyksZS5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9ImJhc2U2NHVybCIsZS5fem9kLmNoZWNrPWQ9Pntpc1ZhbGlkQmFzZTY0VVJMKGQudmFsdWUpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0OmQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksUGE9JGNvbnN0cnVjdG9yKCIkWm9kRTE2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49bG8pLG9hLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGlzVmFsaWRKV1QoZSxzPW51bGwpe3RyeXtjb25zdCBkPWUuc3BsaXQoIi4iKTtpZigzIT09ZC5sZW5ndGgpcmV0dXJuITE7Y29uc3RbbV09ZDtpZighbSlyZXR1cm4hMTtjb25zdCBoPUpTT04ucGFyc2UoYXRvYihtKSk7cmV0dXJuKCEoInR5cCJpbiBoKXx8IkpXVCI9PT1oPy50eXApJiYoISFoLmFsZyYmKCFzfHwiYWxnImluIGgmJmguYWxnPT09cykpfWNhdGNoe3JldHVybiExfX1jb25zdCBVYT0kY29uc3RydWN0b3IoIiRab2RKV1QiLChlLHMpPT57b2EuaW5pdChlLHMpLGUuX3pvZC5jaGVjaz1kPT57aXNWYWxpZEpXVChkLnZhbHVlLHMuYWxnKXx8ZC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiand0IixpbnB1dDpkLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLExhPSRjb25zdHJ1Y3RvcigiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUscyk9PntvYS5pbml0KGUscyksZS5fem9kLmNoZWNrPWQ9PntzLmZuKGQudmFsdWUpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnMuZm9ybWF0LGlucHV0OmQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksQWE9JGNvbnN0cnVjdG9yKCIkWm9kTnVtYmVyIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGF0dGVybj1lLl96b2QuYmFnLnBhdHRlcm4/P2ZvLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2lmKHMuY29lcmNlKXRyeXtkLnZhbHVlPU51bWJlcihkLnZhbHVlKX1jYXRjaChlKXt9Y29uc3QgaD1kLnZhbHVlO2lmKCJudW1iZXIiPT10eXBlb2YgaCYmIU51bWJlci5pc05hTihoKSYmTnVtYmVyLmlzRmluaXRlKGgpKXJldHVybiBkO2NvbnN0IGc9Im51bWJlciI9PXR5cGVvZiBoP051bWJlci5pc05hTihoKT8iTmFOIjpOdW1iZXIuaXNGaW5pdGUoaCk/dm9pZCAwOiJJbmZpbml0eSI6dm9pZCAwO3JldHVybiBkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmgsaW5zdDplLC4uLmc/e3JlY2VpdmVkOmd9Ont9fSksZH19KSxxYT0kY29uc3RydWN0b3IoIiRab2ROdW1iZXJGb3JtYXQiLChlLHMpPT57VW8uaW5pdChlLHMpLEFhLmluaXQoZSxzKX0pLEZhPSRjb25zdHJ1Y3RvcigiJFpvZEJvb2xlYW4iLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXR0ZXJuPWhvLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2lmKHMuY29lcmNlKXRyeXtkLnZhbHVlPUJvb2xlYW4oZC52YWx1ZSl9Y2F0Y2goZSl7fWNvbnN0IGg9ZC52YWx1ZTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBofHxkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYm9vbGVhbiIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpoLGluc3Q6ZX0pLGR9fSksQmE9JGNvbnN0cnVjdG9yKCIkWm9kQmlnSW50IiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGF0dGVybj1wbyxlLl96b2QucGFyc2U9KGQsbSk9PntpZihzLmNvZXJjZSl0cnl7ZC52YWx1ZT1CaWdJbnQoZC52YWx1ZSl9Y2F0Y2goZSl7fXJldHVybiJiaWdpbnQiPT10eXBlb2YgZC52YWx1ZXx8ZC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJpZ2ludCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpkLnZhbHVlLGluc3Q6ZX0pLGR9fSksWmE9JGNvbnN0cnVjdG9yKCIkWm9kQmlnSW50Rm9ybWF0IiwoZSxzKT0+e0xvLmluaXQoZSxzKSxCYS5pbml0KGUscyl9KSxNYT0kY29uc3RydWN0b3IoIiRab2RTeW1ib2wiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0ocyxkKT0+e2NvbnN0IG09cy52YWx1ZTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIG18fHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzeW1ib2wiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6bSxpbnN0OmV9KSxzfX0pLFFhPSRjb25zdHJ1Y3RvcigiJFpvZFVuZGVmaW5lZCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhdHRlcm49dm8sZS5fem9kLnZhbHVlcz1uZXcgU2V0KFt2b2lkIDBdKSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixlLl96b2Qub3B0b3V0PSJvcHRpb25hbCIsZS5fem9kLnBhcnNlPShzLGQpPT57Y29uc3QgbT1zLnZhbHVlO3JldHVybiB2b2lkIDA9PT1tfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidW5kZWZpbmVkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om0saW5zdDplfSksc319KSxWYT0kY29uc3RydWN0b3IoIiRab2ROdWxsIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGF0dGVybj1nbyxlLl96b2QudmFsdWVzPW5ldyBTZXQoW251bGxdKSxlLl96b2QucGFyc2U9KHMsZCk9Pntjb25zdCBtPXMudmFsdWU7cmV0dXJuIG51bGw9PT1tfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVsbCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDptLGluc3Q6ZX0pLHN9fSksSGE9JGNvbnN0cnVjdG9yKCIkWm9kQW55IiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9ZT0+ZX0pLFdhPSRjb25zdHJ1Y3RvcigiJFpvZFVua25vd24iLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT1lPT5lfSksSmE9JGNvbnN0cnVjdG9yKCIkWm9kTmV2ZXIiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0ocyxkKT0+KHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJuZXZlciIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLnZhbHVlLGluc3Q6ZX0pLHMpfSksS2E9JGNvbnN0cnVjdG9yKCIkWm9kVm9pZCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShzLGQpPT57Y29uc3QgbT1zLnZhbHVlO3JldHVybiB2b2lkIDA9PT1tfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidm9pZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDptLGluc3Q6ZX0pLHN9fSksR2E9JGNvbnN0cnVjdG9yKCIkWm9kRGF0ZSIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShkLG0pPT57aWYocy5jb2VyY2UpdHJ5e2QudmFsdWU9bmV3IERhdGUoZC52YWx1ZSl9Y2F0Y2goZSl7fWNvbnN0IGg9ZC52YWx1ZSxnPWggaW5zdGFuY2VvZiBEYXRlO3JldHVybiBnJiYhTnVtYmVyLmlzTmFOKGguZ2V0VGltZSgpKXx8ZC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImRhdGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6aCwuLi5nP3tyZWNlaXZlZDoiSW52YWxpZCBEYXRlIn06e30saW5zdDplfSksZH19KTtmdW5jdGlvbiBoYW5kbGVBcnJheVJlc3VsdChlLHMsZCl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhkLGUuaXNzdWVzKSkscy52YWx1ZVtkXT1lLnZhbHVlfWNvbnN0IFhhPSRjb25zdHJ1Y3RvcigiJFpvZEFycmF5IiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KGQsbSk9Pntjb25zdCBoPWQudmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoaCkpcmV0dXJuIGQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpoLGluc3Q6ZX0pLGQ7ZC52YWx1ZT1BcnJheShoLmxlbmd0aCk7Y29uc3QgZz1bXTtmb3IobGV0IGU9MDtlPGgubGVuZ3RoO2UrKyl7Y29uc3QgeD1oW2VdLCQ9cy5lbGVtZW50Ll96b2QucnVuKHt2YWx1ZTp4LGlzc3VlczpbXX0sbSk7JCBpbnN0YW5jZW9mIFByb21pc2U/Zy5wdXNoKCQudGhlbihzPT5oYW5kbGVBcnJheVJlc3VsdChzLGQsZSkpKTpoYW5kbGVBcnJheVJlc3VsdCgkLGQsZSl9cmV0dXJuIGcubGVuZ3RoP1Byb21pc2UuYWxsKGcpLnRoZW4oKCk9PmQpOmR9fSk7ZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlSZXN1bHQoZSxzLGQsbSxoKXtpZihlLmlzc3Vlcy5sZW5ndGgpe2lmKGgmJiEoZCBpbiBtKSlyZXR1cm47cy5pc3N1ZXMucHVzaCguLi5wcmVmaXhJc3N1ZXMoZCxlLmlzc3VlcykpfXZvaWQgMD09PWUudmFsdWU/ZCBpbiBtJiYocy52YWx1ZVtkXT12b2lkIDApOnMudmFsdWVbZF09ZS52YWx1ZX1mdW5jdGlvbiBub3JtYWxpemVEZWYoZSl7Y29uc3Qgcz1PYmplY3Qua2V5cyhlLnNoYXBlKTtmb3IoY29uc3QgZCBvZiBzKWlmKCFlLnNoYXBlPy5bZF0/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtkfSI6IGV4cGVjdGVkIGEgWm9kIHNjaGVtYWApO2NvbnN0IGQ9b3B0aW9uYWxLZXlzKGUuc2hhcGUpO3JldHVybnsuLi5lLGtleXM6cyxrZXlTZXQ6bmV3IFNldChzKSxudW1LZXlzOnMubGVuZ3RoLG9wdGlvbmFsS2V5czpuZXcgU2V0KGQpfX1mdW5jdGlvbiBoYW5kbGVDYXRjaGFsbChlLHMsZCxtLGgsZyl7Y29uc3QgeD1bXSwkPWgua2V5U2V0LFM9aC5jYXRjaGFsbC5fem9kLGo9Uy5kZWYudHlwZSx6PSJvcHRpb25hbCI9PT1TLm9wdG91dDtmb3IoY29uc3QgaCBpbiBzKXtpZigkLmhhcyhoKSljb250aW51ZTtpZigibmV2ZXIiPT09ail7eC5wdXNoKGgpO2NvbnRpbnVlfWNvbnN0IGc9Uy5ydW4oe3ZhbHVlOnNbaF0saXNzdWVzOltdfSxtKTtnIGluc3RhbmNlb2YgUHJvbWlzZT9lLnB1c2goZy50aGVuKGU9PmhhbmRsZVByb3BlcnR5UmVzdWx0KGUsZCxoLHMseikpKTpoYW5kbGVQcm9wZXJ0eVJlc3VsdChnLGQsaCxzLHopfXJldHVybiB4Lmxlbmd0aCYmZC5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGtleXM6eCxpbnB1dDpzLGluc3Q6Z30pLGUubGVuZ3RoP1Byb21pc2UuYWxsKGUpLnRoZW4oKCk9PmQpOmR9Y29uc3QgWWE9JGNvbnN0cnVjdG9yKCIkWm9kT2JqZWN0IiwoZSxzKT0+e25hLmluaXQoZSxzKTtjb25zdCBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocywic2hhcGUiKTtpZighZD8uZ2V0KXtjb25zdCBlPXMuc2hhcGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsInNoYXBlIix7Z2V0OigpPT57Y29uc3QgZD17Li4uZX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJzaGFwZSIse3ZhbHVlOmR9KSxkfX0pfWNvbnN0IG09Y2FjaGVkKCgpPT5ub3JtYWxpemVEZWYocykpO2RlZmluZUxhenkoZS5fem9kLCJwcm9wVmFsdWVzIiwoKT0+e2NvbnN0IGU9cy5zaGFwZSxkPXt9O2Zvcihjb25zdCBzIGluIGUpe2NvbnN0IG09ZVtzXS5fem9kO2lmKG0udmFsdWVzKXtkW3NdPz8oZFtzXT1uZXcgU2V0KTtmb3IoY29uc3QgZSBvZiBtLnZhbHVlcylkW3NdLmFkZChlKX19cmV0dXJuIGR9KTtjb25zdCBoPWlzT2JqZWN0LGc9cy5jYXRjaGFsbDtsZXQgeDtlLl96b2QucGFyc2U9KHMsZCk9Pnt4Pz8oeD1tLnZhbHVlKTtjb25zdCAkPXMudmFsdWU7aWYoIWgoJCkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6JCxpbnN0OmV9KSxzO3MudmFsdWU9e307Y29uc3QgUz1bXSxqPXguc2hhcGU7Zm9yKGNvbnN0IGUgb2YgeC5rZXlzKXtjb25zdCBtPWpbZV0saD0ib3B0aW9uYWwiPT09bS5fem9kLm9wdG91dCxnPW0uX3pvZC5ydW4oe3ZhbHVlOiRbZV0saXNzdWVzOltdfSxkKTtnIGluc3RhbmNlb2YgUHJvbWlzZT9TLnB1c2goZy50aGVuKGQ9PmhhbmRsZVByb3BlcnR5UmVzdWx0KGQscyxlLCQsaCkpKTpoYW5kbGVQcm9wZXJ0eVJlc3VsdChnLHMsZSwkLGgpfXJldHVybiBnP2hhbmRsZUNhdGNoYWxsKFMsJCxzLGQsbS52YWx1ZSxlKTpTLmxlbmd0aD9Qcm9taXNlLmFsbChTKS50aGVuKCgpPT5zKTpzfX0pLGVzPSRjb25zdHJ1Y3RvcigiJFpvZE9iamVjdEpJVCIsKGUscyk9PntZYS5pbml0KGUscyk7Y29uc3QgZD1lLl96b2QucGFyc2UsbT1jYWNoZWQoKCk9Pm5vcm1hbGl6ZURlZihzKSk7bGV0IGg7Y29uc3QgZz1pc09iamVjdCx4PSF2ci5qaXRsZXNzLCQ9eCYmX3IudmFsdWUsUz1zLmNhdGNoYWxsO2xldCBqO2UuX3pvZC5wYXJzZT0oeixJKT0+e2o/PyhqPW0udmFsdWUpO2NvbnN0IFQ9ei52YWx1ZTtyZXR1cm4gZyhUKT94JiYkJiYhMT09PUk/LmFzeW5jJiYhMCE9PUkuaml0bGVzcz8oaHx8KGg9KGU9Pntjb25zdCBzPW5ldyBEb2MoWyJzaGFwZSIsInBheWxvYWQiLCJjdHgiXSksZD1tLnZhbHVlLHBhcnNlU3RyPWU9Pntjb25zdCBzPWVzYyhlKTtyZXR1cm5gc2hhcGVbJHtzfV0uX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRbJHtzfV0sIGlzc3VlczogW10gfSwgY3R4KWB9O3Mud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBoPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGc9MDtmb3IoY29uc3QgZSBvZiBkLmtleXMpaFtlXT0ia2V5XyIrZysrO3Mud3JpdGUoImNvbnN0IG5ld1Jlc3VsdCA9IHt9OyIpO2Zvcihjb25zdCBtIG9mIGQua2V5cyl7Y29uc3QgZD1oW21dLGc9ZXNjKG0pLHg9ZVttXSwkPSJvcHRpb25hbCI9PT14Py5fem9kPy5vcHRvdXQ7cy53cml0ZShgY29uc3QgJHtkfSA9ICR7cGFyc2VTdHIobSl9O2ApLCQ/cy53cml0ZShgXG4gICAgICAgIGlmICgke2R9Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoJHtnfSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtkfS5pc3N1ZXMubWFwKGlzcyA9PiAoe1xuICAgICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7Z30sIC4uLmlzcy5wYXRoXSA6IFske2d9XVxuICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICgke2R9LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoJHtnfSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgbmV3UmVzdWx0WyR7Z31dID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdSZXN1bHRbJHtnfV0gPSAke2R9LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgYCk6cy53cml0ZShgXG4gICAgICAgIGlmICgke2R9Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke2R9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7XG4gICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske2d9LCAuLi5pc3MucGF0aF0gOiBbJHtnfV1cbiAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoJHtkfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKCR7Z30gaW4gaW5wdXQpIHtcbiAgICAgICAgICAgIG5ld1Jlc3VsdFske2d9XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3UmVzdWx0WyR7Z31dID0gJHtkfS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgIGApfXMud3JpdGUoInBheWxvYWQudmFsdWUgPSBuZXdSZXN1bHQ7Iikscy53cml0ZSgicmV0dXJuIHBheWxvYWQ7Iik7Y29uc3QgeD1zLmNvbXBpbGUoKTtyZXR1cm4ocyxkKT0+eChlLHMsZCl9KShzLnNoYXBlKSksej1oKHosSSksUz9oYW5kbGVDYXRjaGFsbChbXSxULHosSSxqLGUpOnopOmQoeixJKTooei5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpULGluc3Q6ZX0pLHopfX0pO2Z1bmN0aW9uIGhhbmRsZVVuaW9uUmVzdWx0cyhlLHMsZCxtKXtmb3IoY29uc3QgZCBvZiBlKWlmKDA9PT1kLmlzc3Vlcy5sZW5ndGgpcmV0dXJuIHMudmFsdWU9ZC52YWx1ZSxzO2NvbnN0IGg9ZS5maWx0ZXIoZT0+IWFib3J0ZWQoZSkpO3JldHVybiAxPT09aC5sZW5ndGg/KHMudmFsdWU9aFswXS52YWx1ZSxoWzBdKToocy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6cy52YWx1ZSxpbnN0OmQsZXJyb3JzOmUubWFwKGU9PmUuaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsbSxjb25maWcoKSkpKX0pLHMpfWNvbnN0IHRzPSRjb25zdHJ1Y3RvcigiJFpvZFVuaW9uIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLm9wdGlvbnMuc29tZShlPT4ib3B0aW9uYWwiPT09ZS5fem9kLm9wdGluKT8ib3B0aW9uYWwiOnZvaWQgMCksZGVmaW5lTGF6eShlLl96b2QsIm9wdG91dCIsKCk9PnMub3B0aW9ucy5zb21lKGU9PiJvcHRpb25hbCI9PT1lLl96b2Qub3B0b3V0KT8ib3B0aW9uYWwiOnZvaWQgMCksZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9PntpZihzLm9wdGlvbnMuZXZlcnkoZT0+ZS5fem9kLnZhbHVlcykpcmV0dXJuIG5ldyBTZXQocy5vcHRpb25zLmZsYXRNYXAoZT0+QXJyYXkuZnJvbShlLl96b2QudmFsdWVzKSkpfSksZGVmaW5lTGF6eShlLl96b2QsInBhdHRlcm4iLCgpPT57aWYocy5vcHRpb25zLmV2ZXJ5KGU9PmUuX3pvZC5wYXR0ZXJuKSl7Y29uc3QgZT1zLm9wdGlvbnMubWFwKGU9PmUuX3pvZC5wYXR0ZXJuKTtyZXR1cm4gbmV3IFJlZ0V4cChgXigke2UubWFwKGU9PmNsZWFuUmVnZXgoZS5zb3VyY2UpKS5qb2luKCJ8Iil9KSRgKX19KTtjb25zdCBkPTE9PT1zLm9wdGlvbnMubGVuZ3RoLG09cy5vcHRpb25zWzBdLl96b2QucnVuO2UuX3pvZC5wYXJzZT0oaCxnKT0+e2lmKGQpcmV0dXJuIG0oaCxnKTtsZXQgeD0hMTtjb25zdCAkPVtdO2Zvcihjb25zdCBlIG9mIHMub3B0aW9ucyl7Y29uc3Qgcz1lLl96b2QucnVuKHt2YWx1ZTpoLnZhbHVlLGlzc3VlczpbXX0sZyk7aWYocyBpbnN0YW5jZW9mIFByb21pc2UpJC5wdXNoKHMpLHg9ITA7ZWxzZXtpZigwPT09cy5pc3N1ZXMubGVuZ3RoKXJldHVybiBzOyQucHVzaChzKX19cmV0dXJuIHg/UHJvbWlzZS5hbGwoJCkudGhlbihzPT5oYW5kbGVVbmlvblJlc3VsdHMocyxoLGUsZykpOmhhbmRsZVVuaW9uUmVzdWx0cygkLGgsZSxnKX19KTtmdW5jdGlvbiBoYW5kbGVFeGNsdXNpdmVVbmlvblJlc3VsdHMoZSxzLGQsbSl7Y29uc3QgaD1lLmZpbHRlcihlPT4wPT09ZS5pc3N1ZXMubGVuZ3RoKTtyZXR1cm4gMT09PWgubGVuZ3RoPyhzLnZhbHVlPWhbMF0udmFsdWUscyk6KDA9PT1oLmxlbmd0aD9zLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpzLnZhbHVlLGluc3Q6ZCxlcnJvcnM6ZS5tYXAoZT0+ZS5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxtLGNvbmZpZygpKSkpfSk6cy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6cy52YWx1ZSxpbnN0OmQsZXJyb3JzOltdLGluY2x1c2l2ZTohMX0pLHMpfWNvbnN0IG5zPSRjb25zdHJ1Y3RvcigiJFpvZFhvciIsKGUscyk9Pnt0cy5pbml0KGUscykscy5pbmNsdXNpdmU9ITE7Y29uc3QgZD0xPT09cy5vcHRpb25zLmxlbmd0aCxtPXMub3B0aW9uc1swXS5fem9kLnJ1bjtlLl96b2QucGFyc2U9KGgsZyk9PntpZihkKXJldHVybiBtKGgsZyk7bGV0IHg9ITE7Y29uc3QgJD1bXTtmb3IoY29uc3QgZSBvZiBzLm9wdGlvbnMpe2NvbnN0IHM9ZS5fem9kLnJ1bih7dmFsdWU6aC52YWx1ZSxpc3N1ZXM6W119LGcpO3MgaW5zdGFuY2VvZiBQcm9taXNlPygkLnB1c2gocykseD0hMCk6JC5wdXNoKHMpfXJldHVybiB4P1Byb21pc2UuYWxsKCQpLnRoZW4ocz0+aGFuZGxlRXhjbHVzaXZlVW5pb25SZXN1bHRzKHMsaCxlLGcpKTpoYW5kbGVFeGNsdXNpdmVVbmlvblJlc3VsdHMoJCxoLGUsZyl9fSkscnM9JGNvbnN0cnVjdG9yKCIkWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwoZSxzKT0+e3MuaW5jbHVzaXZlPSExLHRzLmluaXQoZSxzKTtjb25zdCBkPWUuX3pvZC5wYXJzZTtkZWZpbmVMYXp5KGUuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pntjb25zdCBlPXt9O2Zvcihjb25zdCBkIG9mIHMub3B0aW9ucyl7Y29uc3QgbT1kLl96b2QucHJvcFZhbHVlcztpZighbXx8MD09PU9iamVjdC5rZXlzKG0pLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggIiR7cy5vcHRpb25zLmluZGV4T2YoZCl9ImApO2Zvcihjb25zdFtzLGRdb2YgT2JqZWN0LmVudHJpZXMobSkpe2Vbc118fChlW3NdPW5ldyBTZXQpO2Zvcihjb25zdCBtIG9mIGQpZVtzXS5hZGQobSl9fXJldHVybiBlfSk7Y29uc3QgbT1jYWNoZWQoKCk9Pntjb25zdCBlPXMub3B0aW9ucyxkPW5ldyBNYXA7Zm9yKGNvbnN0IG0gb2YgZSl7Y29uc3QgZT1tLl96b2QucHJvcFZhbHVlcz8uW3MuZGlzY3JpbWluYXRvcl07aWYoIWV8fDA9PT1lLnNpemUpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3Mub3B0aW9ucy5pbmRleE9mKG0pfSJgKTtmb3IoY29uc3QgcyBvZiBlKXtpZihkLmhhcyhzKSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhzKX0iYCk7ZC5zZXQocyxtKX19cmV0dXJuIGR9KTtlLl96b2QucGFyc2U9KGgsZyk9Pntjb25zdCB4PWgudmFsdWU7aWYoIWlzT2JqZWN0KHgpKXJldHVybiBoLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJvYmplY3QiLGlucHV0OngsaW5zdDplfSksaDtjb25zdCAkPW0udmFsdWUuZ2V0KHg/LltzLmRpc2NyaW1pbmF0b3JdKTtyZXR1cm4gJD8kLl96b2QucnVuKGgsZyk6cy51bmlvbkZhbGxiYWNrP2QoaCxnKTooaC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6cy5kaXNjcmltaW5hdG9yLGlucHV0OngscGF0aDpbcy5kaXNjcmltaW5hdG9yXSxpbnN0OmV9KSxoKX19KSxvcz0kY29uc3RydWN0b3IoIiRab2RJbnRlcnNlY3Rpb24iLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0oZSxkKT0+e2NvbnN0IG09ZS52YWx1ZSxoPXMubGVmdC5fem9kLnJ1bih7dmFsdWU6bSxpc3N1ZXM6W119LGQpLGc9cy5yaWdodC5fem9kLnJ1bih7dmFsdWU6bSxpc3N1ZXM6W119LGQpO3JldHVybiBoIGluc3RhbmNlb2YgUHJvbWlzZXx8ZyBpbnN0YW5jZW9mIFByb21pc2U/UHJvbWlzZS5hbGwoW2gsZ10pLnRoZW4oKFtzLGRdKT0+aGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhlLHMsZCkpOmhhbmRsZUludGVyc2VjdGlvblJlc3VsdHMoZSxoLGcpfX0pO2Z1bmN0aW9uIG1lcmdlVmFsdWVzKGUscyl7aWYoZT09PXMpcmV0dXJue3ZhbGlkOiEwLGRhdGE6ZX07aWYoZSBpbnN0YW5jZW9mIERhdGUmJnMgaW5zdGFuY2VvZiBEYXRlJiYrZT09PStzKXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGlzUGxhaW5PYmplY3QoZSkmJmlzUGxhaW5PYmplY3Qocykpe2NvbnN0IGQ9T2JqZWN0LmtleXMocyksbT1PYmplY3Qua2V5cyhlKS5maWx0ZXIoZT0+LTEhPT1kLmluZGV4T2YoZSkpLGg9ey4uLmUsLi4uc307Zm9yKGNvbnN0IGQgb2YgbSl7Y29uc3QgbT1tZXJnZVZhbHVlcyhlW2RdLHNbZF0pO2lmKCFtLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbZCwuLi5tLm1lcmdlRXJyb3JQYXRoXX07aFtkXT1tLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6aH19aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheShzKSl7aWYoZS5sZW5ndGghPT1zLmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IGQ9W107Zm9yKGxldCBtPTA7bTxlLmxlbmd0aDttKyspe2NvbnN0IGg9bWVyZ2VWYWx1ZXMoZVttXSxzW21dKTtpZighaC52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W20sLi4uaC5tZXJnZUVycm9yUGF0aF19O2QucHVzaChoLmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOmR9fXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX19ZnVuY3Rpb24gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhlLHMsZCl7Y29uc3QgbT1uZXcgTWFwO2xldCBoO2Zvcihjb25zdCBkIG9mIHMuaXNzdWVzKWlmKCJ1bnJlY29nbml6ZWRfa2V5cyI9PT1kLmNvZGUpe2g/PyhoPWQpO2Zvcihjb25zdCBlIG9mIGQua2V5cyltLmhhcyhlKXx8bS5zZXQoZSx7fSksbS5nZXQoZSkubD0hMH1lbHNlIGUuaXNzdWVzLnB1c2goZCk7Zm9yKGNvbnN0IHMgb2YgZC5pc3N1ZXMpaWYoInVucmVjb2duaXplZF9rZXlzIj09PXMuY29kZSlmb3IoY29uc3QgZSBvZiBzLmtleXMpbS5oYXMoZSl8fG0uc2V0KGUse30pLG0uZ2V0KGUpLnI9ITA7ZWxzZSBlLmlzc3Vlcy5wdXNoKHMpO2NvbnN0IGc9Wy4uLm1dLmZpbHRlcigoWyxlXSk9PmUubCYmZS5yKS5tYXAoKFtlXSk9PmUpO2lmKGcubGVuZ3RoJiZoJiZlLmlzc3Vlcy5wdXNoKHsuLi5oLGtleXM6Z30pLGFib3J0ZWQoZSkpcmV0dXJuIGU7Y29uc3QgeD1tZXJnZVZhbHVlcyhzLnZhbHVlLGQudmFsdWUpO2lmKCF4LnZhbGlkKXRocm93IG5ldyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoeC5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuIGUudmFsdWU9eC5kYXRhLGV9Y29uc3QgYXM9JGNvbnN0cnVjdG9yKCIkWm9kVHVwbGUiLChlLHMpPT57bmEuaW5pdChlLHMpO2NvbnN0IGQ9cy5pdGVtcztlLl96b2QucGFyc2U9KG0saCk9Pntjb25zdCBnPW0udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoZykpcmV0dXJuIG0uaXNzdWVzLnB1c2goe2lucHV0OmcsaW5zdDplLGV4cGVjdGVkOiJ0dXBsZSIsY29kZToiaW52YWxpZF90eXBlIn0pLG07bS52YWx1ZT1bXTtjb25zdCB4PVtdLCQ9Wy4uLmRdLnJldmVyc2UoKS5maW5kSW5kZXgoZT0+Im9wdGlvbmFsIiE9PWUuX3pvZC5vcHRpbiksUz0tMT09PSQ/MDpkLmxlbmd0aC0kO2lmKCFzLnJlc3Qpe2NvbnN0IHM9Zy5sZW5ndGg+ZC5sZW5ndGgsaD1nLmxlbmd0aDxTLTE7aWYoc3x8aClyZXR1cm4gbS5pc3N1ZXMucHVzaCh7Li4ucz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpkLmxlbmd0aCxpbmNsdXNpdmU6ITB9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06ZC5sZW5ndGh9LGlucHV0OmcsaW5zdDplLG9yaWdpbjoiYXJyYXkifSksbX1sZXQgaj0tMTtmb3IoY29uc3QgZSBvZiBkKXtpZihqKyssaj49Zy5sZW5ndGgmJmo+PVMpY29udGludWU7Y29uc3Qgcz1lLl96b2QucnVuKHt2YWx1ZTpnW2pdLGlzc3VlczpbXX0saCk7cyBpbnN0YW5jZW9mIFByb21pc2U/eC5wdXNoKHMudGhlbihlPT5oYW5kbGVUdXBsZVJlc3VsdChlLG0saikpKTpoYW5kbGVUdXBsZVJlc3VsdChzLG0sail9aWYocy5yZXN0KXtjb25zdCBlPWcuc2xpY2UoZC5sZW5ndGgpO2Zvcihjb25zdCBkIG9mIGUpe2orKztjb25zdCBlPXMucmVzdC5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LGgpO2UgaW5zdGFuY2VvZiBQcm9taXNlP3gucHVzaChlLnRoZW4oZT0+aGFuZGxlVHVwbGVSZXN1bHQoZSxtLGopKSk6aGFuZGxlVHVwbGVSZXN1bHQoZSxtLGopfX1yZXR1cm4geC5sZW5ndGg/UHJvbWlzZS5hbGwoeCkudGhlbigoKT0+bSk6bX19KTtmdW5jdGlvbiBoYW5kbGVUdXBsZVJlc3VsdChlLHMsZCl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhkLGUuaXNzdWVzKSkscy52YWx1ZVtkXT1lLnZhbHVlfWNvbnN0IHNzPSRjb25zdHJ1Y3RvcigiJFpvZFJlY29yZCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShkLG0pPT57Y29uc3QgaD1kLnZhbHVlO2lmKCFpc1BsYWluT2JqZWN0KGgpKXJldHVybiBkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoicmVjb3JkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmgsaW5zdDplfSksZDtjb25zdCBnPVtdLHg9cy5rZXlUeXBlLl96b2QudmFsdWVzO2lmKHgpe2QudmFsdWU9e307Y29uc3QgJD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIHgpaWYoInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGV8fCJzeW1ib2wiPT10eXBlb2YgZSl7JC5hZGQoIm51bWJlciI9PXR5cGVvZiBlP2UudG9TdHJpbmcoKTplKTtjb25zdCB4PXMudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpoW2VdLGlzc3VlczpbXX0sbSk7eCBpbnN0YW5jZW9mIFByb21pc2U/Zy5wdXNoKHgudGhlbihzPT57cy5pc3N1ZXMubGVuZ3RoJiZkLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhlLHMuaXNzdWVzKSksZC52YWx1ZVtlXT1zLnZhbHVlfSkpOih4Lmlzc3Vlcy5sZW5ndGgmJmQuaXNzdWVzLnB1c2goLi4ucHJlZml4SXNzdWVzKGUseC5pc3N1ZXMpKSxkLnZhbHVlW2VdPXgudmFsdWUpfWxldCBTO2Zvcihjb25zdCBlIGluIGgpJC5oYXMoZSl8fChTPVM/P1tdLFMucHVzaChlKSk7UyYmUy5sZW5ndGg+MCYmZC5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGlucHV0OmgsaW5zdDplLGtleXM6U30pfWVsc2V7ZC52YWx1ZT17fTtmb3IoY29uc3QgeCBvZiBSZWZsZWN0Lm93bktleXMoaCkpe2lmKCJfX3Byb3RvX18iPT09eCljb250aW51ZTtsZXQgJD1zLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOngsaXNzdWVzOltdfSxtKTtpZigkIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtpZigic3RyaW5nIj09dHlwZW9mIHgmJmZvLnRlc3QoeCkmJiQuaXNzdWVzLmxlbmd0aCl7Y29uc3QgZT1zLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOk51bWJlcih4KSxpc3N1ZXM6W119LG0pO2lmKGUgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpOzA9PT1lLmlzc3Vlcy5sZW5ndGgmJigkPWUpfWlmKCQuaXNzdWVzLmxlbmd0aCl7Imxvb3NlIj09PXMubW9kZT9kLnZhbHVlW3hdPWhbeF06ZC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6JC5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxtLGNvbmZpZygpKSksaW5wdXQ6eCxwYXRoOlt4XSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBTPXMudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpoW3hdLGlzc3VlczpbXX0sbSk7UyBpbnN0YW5jZW9mIFByb21pc2U/Zy5wdXNoKFMudGhlbihlPT57ZS5pc3N1ZXMubGVuZ3RoJiZkLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3Vlcyh4LGUuaXNzdWVzKSksZC52YWx1ZVskLnZhbHVlXT1lLnZhbHVlfSkpOihTLmlzc3Vlcy5sZW5ndGgmJmQuaXNzdWVzLnB1c2goLi4ucHJlZml4SXNzdWVzKHgsUy5pc3N1ZXMpKSxkLnZhbHVlWyQudmFsdWVdPVMudmFsdWUpfX1yZXR1cm4gZy5sZW5ndGg/UHJvbWlzZS5hbGwoZykudGhlbigoKT0+ZCk6ZH19KSxscz0kY29uc3RydWN0b3IoIiRab2RNYXAiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2NvbnN0IGg9ZC52YWx1ZTtpZighKGggaW5zdGFuY2VvZiBNYXApKXJldHVybiBkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmgsaW5zdDplfSksZDtjb25zdCBnPVtdO2QudmFsdWU9bmV3IE1hcDtmb3IoY29uc3RbeCwkXW9mIGgpe2NvbnN0IFM9cy5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTp4LGlzc3VlczpbXX0sbSksaj1zLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6JCxpc3N1ZXM6W119LG0pO1MgaW5zdGFuY2VvZiBQcm9taXNlfHxqIGluc3RhbmNlb2YgUHJvbWlzZT9nLnB1c2goUHJvbWlzZS5hbGwoW1Msal0pLnRoZW4oKFtzLGddKT0+e2hhbmRsZU1hcFJlc3VsdChzLGcsZCx4LGgsZSxtKX0pKTpoYW5kbGVNYXBSZXN1bHQoUyxqLGQseCxoLGUsbSl9cmV0dXJuIGcubGVuZ3RoP1Byb21pc2UuYWxsKGcpLnRoZW4oKCk9PmQpOmR9fSk7ZnVuY3Rpb24gaGFuZGxlTWFwUmVzdWx0KGUscyxkLG0saCxnLHgpe2UuaXNzdWVzLmxlbmd0aCYmKHhyLmhhcyh0eXBlb2YgbSk/ZC5pc3N1ZXMucHVzaCguLi5wcmVmaXhJc3N1ZXMobSxlLmlzc3VlcykpOmQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46Im1hcCIsaW5wdXQ6aCxpbnN0OmcsaXNzdWVzOmUuaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUseCxjb25maWcoKSkpfSkpLHMuaXNzdWVzLmxlbmd0aCYmKHhyLmhhcyh0eXBlb2YgbSk/ZC5pc3N1ZXMucHVzaCguLi5wcmVmaXhJc3N1ZXMobSxzLmlzc3VlcykpOmQuaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OmgsaW5zdDpnLGtleTptLGlzc3VlczpzLmlzc3Vlcy5tYXAoZT0+ZmluYWxpemVJc3N1ZShlLHgsY29uZmlnKCkpKX0pKSxkLnZhbHVlLnNldChlLnZhbHVlLHMudmFsdWUpfWNvbnN0IGNzPSRjb25zdHJ1Y3RvcigiJFpvZFNldCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShkLG0pPT57Y29uc3QgaD1kLnZhbHVlO2lmKCEoaCBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIGQuaXNzdWVzLnB1c2goe2lucHV0OmgsaW5zdDplLGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxkO2NvbnN0IGc9W107ZC52YWx1ZT1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIGgpe2NvbnN0IGg9cy52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxtKTtoIGluc3RhbmNlb2YgUHJvbWlzZT9nLnB1c2goaC50aGVuKGU9PmhhbmRsZVNldFJlc3VsdChlLGQpKSk6aGFuZGxlU2V0UmVzdWx0KGgsZCl9cmV0dXJuIGcubGVuZ3RoP1Byb21pc2UuYWxsKGcpLnRoZW4oKCk9PmQpOmR9fSk7ZnVuY3Rpb24gaGFuZGxlU2V0UmVzdWx0KGUscyl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLmUuaXNzdWVzKSxzLnZhbHVlLmFkZChlLnZhbHVlKX1jb25zdCB1cz0kY29uc3RydWN0b3IoIiRab2RFbnVtIiwoZSxzKT0+e25hLmluaXQoZSxzKTtjb25zdCBkPWdldEVudW1WYWx1ZXMocy5lbnRyaWVzKSxtPW5ldyBTZXQoZCk7ZS5fem9kLnZhbHVlcz1tLGUuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtkLmZpbHRlcihlPT54ci5oYXModHlwZW9mIGUpKS5tYXAoZT0+InN0cmluZyI9PXR5cGVvZiBlP2VzY2FwZVJlZ2V4KGUpOmUudG9TdHJpbmcoKSkuam9pbigifCIpfSkkYCksZS5fem9kLnBhcnNlPShzLGgpPT57Y29uc3QgZz1zLnZhbHVlO3JldHVybiBtLmhhcyhnKXx8cy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOmQsaW5wdXQ6ZyxpbnN0OmV9KSxzfX0pLGRzPSRjb25zdHJ1Y3RvcigiJFpvZExpdGVyYWwiLChlLHMpPT57aWYobmEuaW5pdChlLHMpLDA9PT1zLnZhbHVlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY3JlYXRlIGxpdGVyYWwgc2NoZW1hIHdpdGggbm8gdmFsaWQgdmFsdWVzIik7Y29uc3QgZD1uZXcgU2V0KHMudmFsdWVzKTtlLl96b2QudmFsdWVzPWQsZS5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke3MudmFsdWVzLm1hcChlPT4ic3RyaW5nIj09dHlwZW9mIGU/ZXNjYXBlUmVnZXgoZSk6ZT9lc2NhcGVSZWdleChlLnRvU3RyaW5nKCkpOlN0cmluZyhlKSkuam9pbigifCIpfSkkYCksZS5fem9kLnBhcnNlPShtLGgpPT57Y29uc3QgZz1tLnZhbHVlO3JldHVybiBkLmhhcyhnKXx8bS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnMudmFsdWVzLGlucHV0OmcsaW5zdDplfSksbX19KSxwcz0kY29uc3RydWN0b3IoIiRab2RGaWxlIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KHMsZCk9Pntjb25zdCBtPXMudmFsdWU7cmV0dXJuIG0gaW5zdGFuY2VvZiBGaWxlfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDptLGluc3Q6ZX0pLHN9fSksbXM9JGNvbnN0cnVjdG9yKCIkWm9kVHJhbnNmb3JtIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KGQsbSk9PntpZigiYmFja3dhcmQiPT09bS5kaXJlY3Rpb24pdGhyb3cgbmV3ICRab2RFbmNvZGVFcnJvcihlLmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IGg9cy50cmFuc2Zvcm0oZC52YWx1ZSxkKTtpZihtLmFzeW5jKXtyZXR1cm4oaCBpbnN0YW5jZW9mIFByb21pc2U/aDpQcm9taXNlLnJlc29sdmUoaCkpLnRoZW4oZT0+KGQudmFsdWU9ZSxkKSl9aWYoaCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3ICRab2RBc3luY0Vycm9yO3JldHVybiBkLnZhbHVlPWgsZH19KTtmdW5jdGlvbiBoYW5kbGVPcHRpb25hbFJlc3VsdChlLHMpe3JldHVybiBlLmlzc3Vlcy5sZW5ndGgmJnZvaWQgMD09PXM/e2lzc3VlczpbXSx2YWx1ZTp2b2lkIDB9OmV9Y29uc3QgZnM9JGNvbnN0cnVjdG9yKCIkWm9kT3B0aW9uYWwiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLGUuX3pvZC5vcHRvdXQ9Im9wdGlvbmFsIixkZWZpbmVMYXp5KGUuX3pvZCwidmFsdWVzIiwoKT0+cy5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ucy5pbm5lclR5cGUuX3pvZC52YWx1ZXMsdm9pZCAwXSk6dm9pZCAwKSxkZWZpbmVMYXp5KGUuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCBlPXMuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gZT9uZXcgUmVnRXhwKGBeKCR7Y2xlYW5SZWdleChlLnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoIm9wdGlvbmFsIj09PXMuaW5uZXJUeXBlLl96b2Qub3B0aW4pe2NvbnN0IG09cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtyZXR1cm4gbSBpbnN0YW5jZW9mIFByb21pc2U/bS50aGVuKHM9PmhhbmRsZU9wdGlvbmFsUmVzdWx0KHMsZS52YWx1ZSkpOmhhbmRsZU9wdGlvbmFsUmVzdWx0KG0sZS52YWx1ZSl9cmV0dXJuIHZvaWQgMD09PWUudmFsdWU/ZTpzLmlubmVyVHlwZS5fem9kLnJ1bihlLGQpfX0pLGhzPSRjb25zdHJ1Y3RvcigiJFpvZEV4YWN0T3B0aW9uYWwiLChlLHMpPT57ZnMuaW5pdChlLHMpLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZGVmaW5lTGF6eShlLl96b2QsInBhdHRlcm4iLCgpPT5zLmlubmVyVHlwZS5fem9kLnBhdHRlcm4pLGUuX3pvZC5wYXJzZT0oZSxkKT0+cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKX0pLGdzPSRjb25zdHJ1Y3RvcigiJFpvZE51bGxhYmxlIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLmlubmVyVHlwZS5fem9kLm9wdGluKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0b3V0IiwoKT0+cy5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLGRlZmluZUxhenkoZS5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IGU9cy5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiBlP25ldyBSZWdFeHAoYF4oJHtjbGVhblJlZ2V4KGUuc291cmNlKX18bnVsbCkkYCk6dm9pZCAwfSksZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9PnMuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLnMuaW5uZXJUeXBlLl96b2QudmFsdWVzLG51bGxdKTp2b2lkIDApLGUuX3pvZC5wYXJzZT0oZSxkKT0+bnVsbD09PWUudmFsdWU/ZTpzLmlubmVyVHlwZS5fem9kLnJ1bihlLGQpfSksdnM9JGNvbnN0cnVjdG9yKCIkWm9kRGVmYXVsdCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLm9wdGluPSJvcHRpb25hbCIsZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9PnMuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KGUsZCk9PntpZigiYmFja3dhcmQiPT09ZC5kaXJlY3Rpb24pcmV0dXJuIHMuaW5uZXJUeXBlLl96b2QucnVuKGUsZCk7aWYodm9pZCAwPT09ZS52YWx1ZSlyZXR1cm4gZS52YWx1ZT1zLmRlZmF1bHRWYWx1ZSxlO2NvbnN0IG09cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtyZXR1cm4gbSBpbnN0YW5jZW9mIFByb21pc2U/bS50aGVuKGU9PmhhbmRsZURlZmF1bHRSZXN1bHQoZSxzKSk6aGFuZGxlRGVmYXVsdFJlc3VsdChtLHMpfX0pO2Z1bmN0aW9uIGhhbmRsZURlZmF1bHRSZXN1bHQoZSxzKXtyZXR1cm4gdm9pZCAwPT09ZS52YWx1ZSYmKGUudmFsdWU9cy5kZWZhdWx0VmFsdWUpLGV9Y29uc3QgeXM9JGNvbnN0cnVjdG9yKCIkWm9kUHJlZmF1bHQiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZS5fem9kLnBhcnNlPShlLGQpPT4oImJhY2t3YXJkIj09PWQuZGlyZWN0aW9ufHx2b2lkIDA9PT1lLnZhbHVlJiYoZS52YWx1ZT1zLmRlZmF1bHRWYWx1ZSkscy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKSl9KSxicz0kY29uc3RydWN0b3IoIiRab2ROb25PcHRpb25hbCIsKGUscyk9PntuYS5pbml0KGUscyksZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9Pntjb25zdCBlPXMuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBlP25ldyBTZXQoWy4uLmVdLmZpbHRlcihlPT52b2lkIDAhPT1lKSk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShkLG0pPT57Y29uc3QgaD1zLmlubmVyVHlwZS5fem9kLnJ1bihkLG0pO3JldHVybiBoIGluc3RhbmNlb2YgUHJvbWlzZT9oLnRoZW4ocz0+aGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQocyxlKSk6aGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQoaCxlKX19KTtmdW5jdGlvbiBoYW5kbGVOb25PcHRpb25hbFJlc3VsdChlLHMpe3JldHVybiBlLmlzc3Vlcy5sZW5ndGh8fHZvaWQgMCE9PWUudmFsdWV8fGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDplLnZhbHVlLGluc3Q6c30pLGV9Y29uc3QgX3M9JGNvbnN0cnVjdG9yKCIkWm9kU3VjY2VzcyIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoImJhY2t3YXJkIj09PWQuZGlyZWN0aW9uKXRocm93IG5ldyAkWm9kRW5jb2RlRXJyb3IoIlpvZFN1Y2Nlc3MiKTtjb25zdCBtPXMuaW5uZXJUeXBlLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihzPT4oZS52YWx1ZT0wPT09cy5pc3N1ZXMubGVuZ3RoLGUpKTooZS52YWx1ZT0wPT09bS5pc3N1ZXMubGVuZ3RoLGUpfX0pLHhzPSRjb25zdHJ1Y3RvcigiJFpvZENhdGNoIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLmlubmVyVHlwZS5fem9kLm9wdGluKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0b3V0IiwoKT0+cy5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoImJhY2t3YXJkIj09PWQuZGlyZWN0aW9uKXJldHVybiBzLmlubmVyVHlwZS5fem9kLnJ1bihlLGQpO2NvbnN0IG09cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtyZXR1cm4gbSBpbnN0YW5jZW9mIFByb21pc2U/bS50aGVuKG09PihlLnZhbHVlPW0udmFsdWUsbS5pc3N1ZXMubGVuZ3RoJiYoZS52YWx1ZT1zLmNhdGNoVmFsdWUoey4uLmUsZXJyb3I6e2lzc3VlczptLmlzc3Vlcy5tYXAoZT0+ZmluYWxpemVJc3N1ZShlLGQsY29uZmlnKCkpKX0saW5wdXQ6ZS52YWx1ZX0pLGUuaXNzdWVzPVtdKSxlKSk6KGUudmFsdWU9bS52YWx1ZSxtLmlzc3Vlcy5sZW5ndGgmJihlLnZhbHVlPXMuY2F0Y2hWYWx1ZSh7Li4uZSxlcnJvcjp7aXNzdWVzOm0uaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsZCxjb25maWcoKSkpfSxpbnB1dDplLnZhbHVlfSksZS5pc3N1ZXM9W10pLGUpfX0pLHdzPSRjb25zdHJ1Y3RvcigiJFpvZE5hTiIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShzLGQpPT4oIm51bWJlciI9PXR5cGVvZiBzLnZhbHVlJiZOdW1iZXIuaXNOYU4ocy52YWx1ZSl8fHMuaXNzdWVzLnB1c2goe2lucHV0OnMudmFsdWUsaW5zdDplLGV4cGVjdGVkOiJuYW4iLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxzKX0pLCRzPSRjb25zdHJ1Y3RvcigiJFpvZFBpcGUiLChlLHMpPT57bmEuaW5pdChlLHMpLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmluLl96b2QudmFsdWVzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLmluLl96b2Qub3B0aW4pLGRlZmluZUxhenkoZS5fem9kLCJvcHRvdXQiLCgpPT5zLm91dC5fem9kLm9wdG91dCksZGVmaW5lTGF6eShlLl96b2QsInByb3BWYWx1ZXMiLCgpPT5zLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoImJhY2t3YXJkIj09PWQuZGlyZWN0aW9uKXtjb25zdCBtPXMub3V0Ll96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVQaXBlUmVzdWx0KGUscy5pbixkKSk6aGFuZGxlUGlwZVJlc3VsdChtLHMuaW4sZCl9Y29uc3QgbT1zLmluLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVQaXBlUmVzdWx0KGUscy5vdXQsZCkpOmhhbmRsZVBpcGVSZXN1bHQobSxzLm91dCxkKX19KTtmdW5jdGlvbiBoYW5kbGVQaXBlUmVzdWx0KGUscyxkKXtyZXR1cm4gZS5pc3N1ZXMubGVuZ3RoPyhlLmFib3J0ZWQ9ITAsZSk6cy5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LGQpfWNvbnN0IFNzPSRjb25zdHJ1Y3RvcigiJFpvZENvZGVjIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwidmFsdWVzIiwoKT0+cy5pbi5fem9kLnZhbHVlcyksZGVmaW5lTGF6eShlLl96b2QsIm9wdGluIiwoKT0+cy5pbi5fem9kLm9wdGluKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0b3V0IiwoKT0+cy5vdXQuX3pvZC5vcHRvdXQpLGRlZmluZUxhenkoZS5fem9kLCJwcm9wVmFsdWVzIiwoKT0+cy5pbi5fem9kLnByb3BWYWx1ZXMpLGUuX3pvZC5wYXJzZT0oZSxkKT0+e2lmKCJmb3J3YXJkIj09PShkLmRpcmVjdGlvbnx8ImZvcndhcmQiKSl7Y29uc3QgbT1zLmluLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVDb2RlY0FSZXN1bHQoZSxzLGQpKTpoYW5kbGVDb2RlY0FSZXN1bHQobSxzLGQpfXtjb25zdCBtPXMub3V0Ll96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVDb2RlY0FSZXN1bHQoZSxzLGQpKTpoYW5kbGVDb2RlY0FSZXN1bHQobSxzLGQpfX19KTtmdW5jdGlvbiBoYW5kbGVDb2RlY0FSZXN1bHQoZSxzLGQpe2lmKGUuaXNzdWVzLmxlbmd0aClyZXR1cm4gZS5hYm9ydGVkPSEwLGU7aWYoImZvcndhcmQiPT09KGQuZGlyZWN0aW9ufHwiZm9yd2FyZCIpKXtjb25zdCBtPXMudHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihtPT5oYW5kbGVDb2RlY1R4UmVzdWx0KGUsbSxzLm91dCxkKSk6aGFuZGxlQ29kZWNUeFJlc3VsdChlLG0scy5vdXQsZCl9e2NvbnN0IG09cy5yZXZlcnNlVHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihtPT5oYW5kbGVDb2RlY1R4UmVzdWx0KGUsbSxzLmluLGQpKTpoYW5kbGVDb2RlY1R4UmVzdWx0KGUsbSxzLmluLGQpfX1mdW5jdGlvbiBoYW5kbGVDb2RlY1R4UmVzdWx0KGUscyxkLG0pe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg/KGUuYWJvcnRlZD0hMCxlKTpkLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczplLmlzc3Vlc30sbSl9Y29uc3Qga3M9JGNvbnN0cnVjdG9yKCIkWm9kUmVhZG9ubHkiLChlLHMpPT57bmEuaW5pdChlLHMpLGRlZmluZUxhenkoZS5fem9kLCJwcm9wVmFsdWVzIiwoKT0+cy5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKSxkZWZpbmVMYXp5KGUuX3pvZCwidmFsdWVzIiwoKT0+cy5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGRlZmluZUxhenkoZS5fem9kLCJvcHRpbiIsKCk9PnMuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksZGVmaW5lTGF6eShlLl96b2QsIm9wdG91dCIsKCk9PnMuaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQpLGUuX3pvZC5wYXJzZT0oZSxkKT0+e2lmKCJiYWNrd2FyZCI9PT1kLmRpcmVjdGlvbilyZXR1cm4gcy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtjb25zdCBtPXMuaW5uZXJUeXBlLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihoYW5kbGVSZWFkb25seVJlc3VsdCk6aGFuZGxlUmVhZG9ubHlSZXN1bHQobSl9fSk7ZnVuY3Rpb24gaGFuZGxlUmVhZG9ubHlSZXN1bHQoZSl7cmV0dXJuIGUudmFsdWU9T2JqZWN0LmZyZWV6ZShlLnZhbHVlKSxlfWNvbnN0IGpzPSRjb25zdHJ1Y3RvcigiJFpvZFRlbXBsYXRlTGl0ZXJhbCIsKGUscyk9PntuYS5pbml0KGUscyk7Y29uc3QgZD1bXTtmb3IoY29uc3QgZSBvZiBzLnBhcnRzKWlmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpe2lmKCFlLl96b2QucGF0dGVybil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0LCBubyBwYXR0ZXJuIGZvdW5kOiAke1suLi5lLl96b2QudHJhaXRzXS5zaGlmdCgpfWApO2NvbnN0IHM9ZS5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHA/ZS5fem9kLnBhdHRlcm4uc291cmNlOmUuX3pvZC5wYXR0ZXJuO2lmKCFzKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7ZS5fem9kLnRyYWl0c31gKTtjb25zdCBtPXMuc3RhcnRzV2l0aCgiXiIpPzE6MCxoPXMuZW5kc1dpdGgoIiQiKT9zLmxlbmd0aC0xOnMubGVuZ3RoO2QucHVzaChzLnNsaWNlKG0saCkpfWVsc2V7aWYobnVsbCE9PWUmJiF3ci5oYXModHlwZW9mIGUpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7ZX1gKTtkLnB1c2goZXNjYXBlUmVnZXgoYCR7ZX1gKSl9ZS5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXiR7ZC5qb2luKCIiKX0kYCksZS5fem9kLnBhcnNlPShkLG0pPT4ic3RyaW5nIiE9dHlwZW9mIGQudmFsdWU/KGQuaXNzdWVzLnB1c2goe2lucHV0OmQudmFsdWUsaW5zdDplLGV4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxkKTooZS5fem9kLnBhdHRlcm4ubGFzdEluZGV4PTAsZS5fem9kLnBhdHRlcm4udGVzdChkLnZhbHVlKXx8ZC5pc3N1ZXMucHVzaCh7aW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpzLmZvcm1hdD8/InRlbXBsYXRlX2xpdGVyYWwiLHBhdHRlcm46ZS5fem9kLnBhdHRlcm4uc291cmNlfSksZCl9KSx6cz0kY29uc3RydWN0b3IoIiRab2RGdW5jdGlvbiIsKGUscyk9PihuYS5pbml0KGUscyksZS5fZGVmPXMsZS5fem9kLmRlZj1zLGUuaW1wbGVtZW50PXM9PntpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvbiIpO3JldHVybiBmdW5jdGlvbiguLi5kKXtjb25zdCBtPWUuX2RlZi5pbnB1dD9JcihlLl9kZWYuaW5wdXQsZCk6ZCxoPVJlZmxlY3QuYXBwbHkocyx0aGlzLG0pO3JldHVybiBlLl9kZWYub3V0cHV0P0lyKGUuX2RlZi5vdXRwdXQsaCk6aH19LGUuaW1wbGVtZW50QXN5bmM9cz0+e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBzKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gYXN5bmMgZnVuY3Rpb24oLi4uZCl7Y29uc3QgbT1lLl9kZWYuaW5wdXQ/YXdhaXQgQ3IoZS5fZGVmLmlucHV0LGQpOmQsaD1hd2FpdCBSZWZsZWN0LmFwcGx5KHMsdGhpcyxtKTtyZXR1cm4gZS5fZGVmLm91dHB1dD9hd2FpdCBDcihlLl9kZWYub3V0cHV0LGgpOmh9fSxlLl96b2QucGFyc2U9KHMsZCk9PntpZigiZnVuY3Rpb24iIT10eXBlb2Ygcy52YWx1ZSlyZXR1cm4gcy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoiZnVuY3Rpb24iLGlucHV0OnMudmFsdWUsaW5zdDplfSkscztjb25zdCBtPWUuX2RlZi5vdXRwdXQmJiJwcm9taXNlIj09PWUuX2RlZi5vdXRwdXQuX3pvZC5kZWYudHlwZTtyZXR1cm4gcy52YWx1ZT1tP2UuaW1wbGVtZW50QXN5bmMocy52YWx1ZSk6ZS5pbXBsZW1lbnQocy52YWx1ZSksc30sZS5pbnB1dD0oLi4ucyk9Pntjb25zdCBkPWUuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoc1swXSk/bmV3IGQoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcgYXMoe3R5cGU6InR1cGxlIixpdGVtczpzWzBdLHJlc3Q6c1sxXX0pLG91dHB1dDplLl9kZWYub3V0cHV0fSk6bmV3IGQoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpzWzBdLG91dHB1dDplLl9kZWYub3V0cHV0fSl9LGUub3V0cHV0PXM9Pm5ldygwLGUuY29uc3RydWN0b3IpKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6ZS5fZGVmLmlucHV0LG91dHB1dDpzfSksZSkpLElzPSRjb25zdHJ1Y3RvcigiJFpvZFByb21pc2UiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0oZSxkKT0+UHJvbWlzZS5yZXNvbHZlKGUudmFsdWUpLnRoZW4oZT0+cy5pbm5lclR5cGUuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxkKSl9KSxDcz0kY29uc3RydWN0b3IoIiRab2RMYXp5IiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwiaW5uZXJUeXBlIiwoKT0+cy5nZXR0ZXIoKSksZGVmaW5lTGF6eShlLl96b2QsInBhdHRlcm4iLCgpPT5lLl96b2QuaW5uZXJUeXBlPy5fem9kPy5wYXR0ZXJuKSxkZWZpbmVMYXp5KGUuX3pvZCwicHJvcFZhbHVlcyIsKCk9PmUuX3pvZC5pbm5lclR5cGU/Ll96b2Q/LnByb3BWYWx1ZXMpLGRlZmluZUxhenkoZS5fem9kLCJvcHRpbiIsKCk9PmUuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLGRlZmluZUxhenkoZS5fem9kLCJvcHRvdXQiLCgpPT5lLl96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQ/P3ZvaWQgMCksZS5fem9kLnBhcnNlPShzLGQpPT5lLl96b2QuaW5uZXJUeXBlLl96b2QucnVuKHMsZCl9KSxUcz0kY29uc3RydWN0b3IoIiRab2RDdXN0b20iLChlLHMpPT57RW8uaW5pdChlLHMpLG5hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KGUscyk9PmUsZS5fem9kLmNoZWNrPWQ9Pntjb25zdCBtPWQudmFsdWUsaD1zLmZuKG0pO2lmKGggaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBoLnRoZW4ocz0+aGFuZGxlUmVmaW5lUmVzdWx0KHMsZCxtLGUpKTtoYW5kbGVSZWZpbmVSZXN1bHQoaCxkLG0sZSl9fSk7ZnVuY3Rpb24gaGFuZGxlUmVmaW5lUmVzdWx0KGUscyxkLG0pe2lmKCFlKXtjb25zdCBlPXtjb2RlOiJjdXN0b20iLGlucHV0OmQsaW5zdDptLHBhdGg6Wy4uLm0uX3pvZC5kZWYucGF0aD8/W11dLGNvbnRpbnVlOiFtLl96b2QuZGVmLmFib3J0fTttLl96b2QuZGVmLnBhcmFtcyYmKGUucGFyYW1zPW0uX3pvZC5kZWYucGFyYW1zKSxzLmlzc3Vlcy5wdXNoKGlzc3VlKGUpKX19Y29uc3QgZXJyb3IkSz0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi2K3YsdmBIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sZmlsZTp7dW5pdDoi2KjYp9mK2KoiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxhcnJheTp7dW5pdDoi2LnZhti12LEiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxzZXQ6e3VuaXQ6Iti52YbYtdixIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi2YXYr9iu2YQiLGVtYWlsOiLYqNix2YrYryDYpdmE2YPYqtix2YjZhtmKIix1cmw6Itix2KfYqNi3IixlbW9qaToi2KXZitmF2YjYrNmKIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLYqtin2LHZitiuINmI2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGRhdGU6Itiq2KfYsdmK2K4g2KjZhdi52YrYp9ixIElTTyIsdGltZToi2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGR1cmF0aW9uOiLZhdiv2Kkg2KjZhdi52YrYp9ixIElTTyIsaXB2NDoi2LnZhtmI2KfZhiBJUHY0IixpcHY2OiLYudmG2YjYp9mGIElQdjYiLGNpZHJ2NDoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjQiLGNpZHJ2Njoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjYiLGJhc2U2NDoi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjQtZW5jb2RlZCIsYmFzZTY0dXJsOiLZhtmO2LUg2KjYqtix2YXZitiyIGJhc2U2NHVybC1lbmNvZGVkIixqc29uX3N0cmluZzoi2YbZjti1INi52YTZiSDZh9mK2KbYqSBKU09OIixlMTY0OiLYsdmC2YUg2YfYp9iq2YEg2KjZhdi52YrYp9ixIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YXYr9iu2YQifSxkPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfdiMINmI2YTZg9mGINiq2YUg2KXYr9iu2KfZhCAke2h9YDpg2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCAke3N92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YNin2K7YqtmK2KfYsSDYutmK2LEg2YXZgtio2YjZhDog2YrYqtmI2YLYuSDYp9mG2KrZgtin2KEg2KPYrdivINmH2LDZhyDYp9mE2K7Zitin2LHYp9iqOiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2Ag2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2Uub3JpZ2luPz8i2KfZhNmC2YrZhdipIn0gJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/Iti52YbYtdixIn1gOmDYo9mD2KjYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDYo9mGINiq2YPZiNmGICR7ZS5vcmlnaW4/PyLYp9mE2YLZitmF2KkifSAke3N9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqNiv2KMg2KjZgCAiJHtlLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YbYqtmH2Yog2KjZgCAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqti22YXZkdmO2YYgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYt9in2KjZgiDYp9mE2YbZhdi3ICR7ZC5wYXR0ZXJufWA6YCR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fSDYutmK2LEg2YXZgtio2YjZhGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYsdmC2YUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YPZiNmGINmF2YYg2YXYttin2LnZgdin2KogJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2YXYudix2YEke2Uua2V5cy5sZW5ndGg+MT8i2KfYqiI6IiJ9INi62LHZitioJHtlLmtleXMubGVuZ3RoPjE/ItipIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsItiMICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNmF2LnYsdmBINi62YrYsSDZhdmC2KjZiNmEINmB2YogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkSj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoic2ltdm9sIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sc2V0Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJvbG1hbMSxZMSxciJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiZW1haWwgYWRkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGV0aW1lIixkYXRlOiJJU08gZGF0ZSIsdGltZToiSVNPIHRpbWUiLGR1cmF0aW9uOiJJU08gZHVyYXRpb24iLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IG51bWJlciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sZD17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRheGlsIG9sYW4gJHtofWA6YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gJHtzfSwgZGF4aWwgb2xhbiAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBZYW5sxLHFnyBzZcOnaW06IGHFn2HEn8SxZGFrxLFsYXJkYW4gYmlyaSBvbG1hbMSxZMSxcjogJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudCJ9YDpgw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2lufSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgw4dveCBracOnaWs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gWWFubMSxxZ8gbcmZdG46ICIke2QucHJlZml4fSIgaWzJmSBiYcWfbGFtYWzEsWTEsXJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFlhbmzEscWfIG3JmXRuOiAiJHtkLnN1ZmZpeH0iIGlsyZkgYml0bcmZbGlkaXJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gWWFubMSxxZ8gbcmZdG46ICIke2QuaW5jbHVkZXN9IiBkYXhpbCBvbG1hbMSxZMSxcmA6InJlZ2V4Ij09PWQuZm9ybWF0P2BZYW5sxLHFnyBtyZl0bjogJHtkLnBhdHRlcm59IMWfYWJsb251bmEgdXnEn3VuIG9sbWFsxLFkxLFyYDpgWWFubMSxxZ8gJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFlhbmzEscWfIMmZZMmZZDogJHtlLmRpdmlzb3J9IGlsyZkgYsO2bMO8bsmZIGJpbMmZbiBvbG1hbMSxZMSxcmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGHDp2FyJHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gYcOnYXJgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iWWFubMSxxZ8gZMmZecmZciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGTJmXnJmXJgfX19O2Z1bmN0aW9uIGdldEJlbGFydXNpYW5QbHVyYWwoZSxzLGQsbSl7Y29uc3QgaD1NYXRoLmFicyhlKSxnPWglMTAseD1oJTEwMDtyZXR1cm4geD49MTEmJng8PTE5P206MT09PWc/czpnPj0yJiZnPD00P2Q6bX1jb25zdCBlcnJvciRJPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OntvbmU6ItGB0ZbQvNCy0LDQuyIsZmV3OiLRgdGW0LzQstCw0LvRiyIsbWFueToi0YHRltC80LLQsNC70LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sYXJyYXk6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxzZXQ6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxmaWxlOnt1bml0OntvbmU6ItCx0LDQudGCIixmZXc6ItCx0LDQudGC0YsiLG1hbnk6ItCx0LDQudGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi0YPQstC+0LQiLGVtYWlsOiJlbWFpbCDQsNC00YDQsNGBIix1cmw6IlVSTCIsZW1vamk6ItGN0LzQvtC00LfRliIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtCwINGWINGH0LDRgSIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0YfQsNGBIixkdXJhdGlvbjoiSVNPINC/0YDQsNGG0Y/Qs9C70LDRgdGG0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LDRgSIsaXB2NjoiSVB2NiDQsNC00YDQsNGBIixjaWRydjQ6IklQdjQg0LTRi9GP0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00YvRj9C/0LDQt9C+0L0iLGJhc2U2NDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjQiLGJhc2U2NHVybDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJKU09OINGA0LDQtNC+0LoiLGUxNjQ6ItC90YPQvNCw0YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLRg9Cy0L7QtCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ItC70ZbQuiIsYXJyYXk6ItC80LDRgdGW0Z4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQsNGC0YDRi9C80LDQvdCwICR7aH1gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNGe0YHRjyAke3N9LCDQsNGC0YDRi9C80LDQvdCwICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0LvQsNGB0Y8gJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LLQsNGA0YvRj9C90YI6INGH0LDQutCw0Z7RgdGPINCw0LTQt9GW0L0g0LcgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEJlbGFydXNpYW5QbHVyYWwoTnVtYmVyKGUubWF4aW11bSksZC51bml0Lm9uZSxkLnVuaXQuZmV3LGQudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0Y3QvdC90LUifSDQv9Cw0LLRltC90L3QsCAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bX1gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfRjdC90L3QtSJ9INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEJlbGFydXNpYW5QbHVyYWwoTnVtYmVyKGUubWluaW11bSksZC51bml0Lm9uZSxkLnVuaXQuZmV3LGQudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2lufSDQv9Cw0LLRltC90L3QsCAke2QudmVyYn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bX1gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQvNCw0LvRizog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0L/QsNGH0YvQvdCw0YbRhtCwINC3ICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQsNC60LDQvdGH0LLQsNGG0YbQsCDQvdCwICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQt9C80Y/RiNGH0LDRhtGMICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INCw0LTQv9Cw0LLRj9C00LDRhtGMINGI0LDQsdC70L7QvdGDICR7ZC5wYXR0ZXJufWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90YsgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LvRltC6OiDQv9Cw0LLRltC90LXQvSDQsdGL0YbRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QsNC30L3QsNC90YsgJHtlLmtleXMubGVuZ3RoPjE/ItC60LvRjtGH0YsiOiLQutC70Y7RhyJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdCw0LUg0LfQvdCw0YfRjdC90L3QtSDRniAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkSD0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxmaWxlOnt1bml0OiLQsdCw0LnRgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLQstGF0L7QtCIsZW1haWw6ItC40LzQtdC50Lsg0LDQtNGA0LXRgSIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC20LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQstGA0LXQvNC1IixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINC/0YDQvtC00YrQu9C20LjRgtC10LvQvdC+0YHRgiIsaXB2NDoiSVB2NCDQsNC00YDQtdGBIixpcHY2OiJJUHY2INCw0LTRgNC10YEiLGNpZHJ2NDoiSVB2NCDQtNC40LDQv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTQuNCw0L/QsNC30L7QvSIsYmFzZTY0OiJiYXNlNjQt0LrQvtC00LjRgNCw0L0g0L3QuNC3IixiYXNlNjR1cmw6ImJhc2U2NHVybC3QutC+0LTQuNGA0LDQvSDQvdC40LciLGpzb25fc3RyaW5nOiJKU09OINC90LjQtyIsZTE2NDoiRS4xNjQg0L3QvtC80LXRgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0YXQvtC0In0sZD17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC9ICR7aH1gOmDQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9ICR7c30sINC/0L7Qu9GD0YfQtdC9ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YNCd0LXQstCw0LvQuNC00L3QsCDQvtC/0YbQuNGPOiDQvtGH0LDQutCy0LDQvdC+INC10LTQvdC+INC+0YIgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g0KLQstGK0YDQtNC1INCz0L7Qu9GP0LzQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbj8/ItGB0YLQvtC50L3QvtGB0YIifSDQtNCwINGB0YrQtNGK0YDQttCwICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ItC10LvQtdC80LXQvdGC0LAifWA6YNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW4/PyLRgdGC0L7QudC90L7RgdGCIn0g0LTQsCDQsdGK0LTQtSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2lufSDQtNCwINGB0YrQtNGK0YDQttCwICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDQotCy0YrRgNC00LUg0LzQsNC70LrQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbn0g0LTQsCDQsdGK0LTQtSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7aWYoInN0YXJ0c193aXRoIj09PWQuZm9ybWF0KXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0L/QvtGH0LLQsCDRgSAiJHtkLnByZWZpeH0iYDtpZigiZW5kc193aXRoIj09PWQuZm9ybWF0KXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0LLRitGA0YjQstCwINGBICIke2Quc3VmZml4fSJgO2lmKCJpbmNsdWRlcyI9PT1kLmZvcm1hdClyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LLQutC70Y7Rh9Cy0LAgIiR7ZC5pbmNsdWRlc30iYDtpZigicmVnZXgiPT09ZC5mb3JtYXQpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQstC/0LDQtNCwINGBICR7ZC5wYXR0ZXJufWA7bGV0IG09ItCd0LXQstCw0LvQuNC00LXQvSI7cmV0dXJuImVtb2ppIj09PWQuZm9ybWF0JiYobT0i0J3QtdCy0LDQu9C40LTQvdC+IiksImRhdGV0aW1lIj09PWQuZm9ybWF0JiYobT0i0J3QtdCy0LDQu9C40LTQvdC+IiksImRhdGUiPT09ZC5mb3JtYXQmJihtPSLQndC10LLQsNC70LjQtNC90LAiKSwidGltZSI9PT1kLmZvcm1hdCYmKG09ItCd0LXQstCw0LvQuNC00L3QviIpLCJkdXJhdGlvbiI9PT1kLmZvcm1hdCYmKG09ItCd0LXQstCw0LvQuNC00L3QsCIpLGAke219ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQsNC70LjQtNC90L4g0YfQuNGB0LvQvjog0YLRgNGP0LHQstCwINC00LAg0LHRitC00LUg0LrRgNCw0YLQvdC+INC90LAgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDQt9C/0L7Qt9C90LDRgiR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItC+0LLQtSI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQutC70Y7RhyDQsiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQvdCwINGB0YLQvtC50L3QvtGB0YIg0LIgJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJEc9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcsOgY3RlcnMiLHZlcmI6ImNvbnRlbmlyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImNvbnRlbmlyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRzIix2ZXJiOiJjb250ZW5pciJ9LHNldDp7dW5pdDoiZWxlbWVudHMiLHZlcmI6ImNvbnRlbmlyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZW50cmFkYSIsZW1haWw6ImFkcmXDp2EgZWxlY3Ryw7JuaWNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgaG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmFkYSBJU08iLGlwdjQ6ImFkcmXDp2EgSVB2NCIsaXB2NjoiYWRyZcOnYSBJUHY2IixjaWRydjQ6InJhbmcgSVB2NCIsY2lkcnY2OiJyYW5nIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcydoYSByZWJ1dCAke2h9YDpgVGlwdXMgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHtzfSwgcydoYSByZWJ1dCAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BWYWxvciBpbnbDoGxpZDogcydlc3BlcmF2YSAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgT3BjacOzIGludsOgbGlkYTogcydlc3BlcmF2YSB1bmEgZGUgJHtqb2luVmFsdWVzKGUudmFsdWVzLCIgbyAiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/ImNvbSBhIG3DoHhpbSI6Im1lbnlzIGRlIixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW4/PyJlbCB2YWxvciJ9IGNvbnRpbmd1w6lzICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50cyJ9YDpgTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbj8/ImVsIHZhbG9yIn0gZm9zICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iY29tIGEgbcOtbmltIjoibcOpcyBkZSIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gY29udGluZ3XDqXMgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmBNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gZm9zICR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvbWVuw6dhciBhbWIgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gRm9ybWF0IGludsOgbGlkOiBoYSBkJ2FjYWJhciBhbWIgIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BGb3JtYXQgaW52w6BsaWQ6IGhhIGQnaW5jbG91cmUgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YEZvcm1hdCBpbnbDoGxpZDogaGEgZGUgY29pbmNpZGlyIGFtYiBlbCBwYXRyw7MgJHtkLnBhdHRlcm59YDpgRm9ybWF0IGludsOgbGlkIHBlciBhICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOgbGlkOiBoYSBkZSBzZXIgbcO6bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsYXUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vIHJlY29uZWd1ZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsYXUgaW52w6BsaWRhIGEgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoGxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gRWxlbWVudCBpbnbDoGxpZCBhICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRGPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJ6bmFrxa8iLHZlcmI6Im3DrXQifSxmaWxlOnt1bml0OiJiYWp0xa8iLHZlcmI6Im3DrXQifSxhcnJheTp7dW5pdDoicHJ2a8WvIix2ZXJiOiJtw610In0sc2V0Ont1bml0OiJwcnZrxa8iLHZlcmI6Im3DrXQifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJyZWd1bMOhcm7DrSB2w71yYXoiLGVtYWlsOiJlLW1haWxvdsOhIGFkcmVzYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0dW0gYSDEjWFzIHZlIGZvcm3DoXR1IElTTyIsZGF0ZToiZGF0dW0gdmUgZm9ybcOhdHUgSVNPIix0aW1lOiLEjWFzIHZlIGZvcm3DoXR1IElTTyIsZHVyYXRpb246ImRvYmEgdHJ2w6Fuw60gSVNPIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoicm96c2FoIElQdjQiLGNpZHJ2Njoicm96c2FoIElQdjYiLGJhc2U2NDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjQiLGJhc2U2NHVybDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLFmWV0xJt6ZWMgdmUgZm9ybcOhdHUgSlNPTiIsZTE2NDoixI3DrXNsbyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InZzdHVwIn0sZD17bmFuOiJOYU4iLG51bWJlcjoixI3DrXNsbyIsc3RyaW5nOiLFmWV0xJt6ZWMiLGZ1bmN0aW9uOiJmdW5rY2UiLGFycmF5OiJwb2xlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb2JkcsW+ZW5vICR7aH1gOmBOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyAke3N9LCBvYmRyxb5lbm8gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YE5lcGxhdG7DoSBtb8W+bm9zdDogb8SNZWvDoXbDoW5hIGplZG5hIHogaG9kbm90ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YEhvZG5vdGEgamUgcMWZw61sacWhIHZlbGvDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIGLDvXQgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BIb2Rub3RhIGplIHDFmcOtbGnFoSBtYWzDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSB6YcSNw61uYXQgbmEgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60ga29uxI1pdCBuYSAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9ic2Fob3ZhdCAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gb2Rwb3bDrWRhdCB2em9ydSAke2QucGF0dGVybn1gOmBOZXBsYXRuw70gZm9ybcOhdCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmVwbGF0bsOpIMSNw61zbG86IG11c8OtIGLDvXQgbsOhc29ia2VtICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lem7DoW3DqSBrbMOtxI1lOiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5lcGxhdG7DvSBrbMOtxI0gdiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJOZXBsYXRuw70gdnN0dXAiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmVwbGF0bsOhIGhvZG5vdGEgdiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkRT0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoidGVnbiIsdmVyYjoiaGF2ZGUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGF2ZGUifSxhcnJheTp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiJpbmRlaG9sZHQifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiaW5kZWhvbGR0In19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLW1haWxhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2zDpnQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2zDpnQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZWQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsc3RyaW5nOiJzdHJlbmciLG51bWJlcjoidGFsIixib29sZWFuOiJib29sZWFuIixhcnJheToibGlzdGUiLG9iamVjdDoib2JqZWt0IixzZXQ6InPDpnQiLGZpbGU6ImZpbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpayAke2h9YDpgVWd5bGRpZ3QgaW5wdXQ6IGZvcnZlbnRlZGUgJHtzfSwgZmlrICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YFVneWxkaWcgdsOmcmRpOiBmb3J2ZW50ZWRlICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlndCB2YWxnOiBmb3J2ZW50ZWRlIGVuIGFmIGbDuGxnZW5kZSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsbT1nZXRTaXppbmcoZS5vcmlnaW4pLGg9ZFtlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBtP2BGb3Igc3RvcjogZm9ydmVudGVkZSAke2g/PyJ2YWx1ZSJ9ICR7bS52ZXJifSAke3N9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bS51bml0Pz8iZWxlbWVudGVyIn1gOmBGb3Igc3RvcjogZm9ydmVudGVkZSAke2g/PyJ2YWx1ZSJ9IGhhdmRlICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixtPWdldFNpemluZyhlLm9yaWdpbiksaD1kW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIG0/YEZvciBsaWxsZTogZm9ydmVudGVkZSAke2h9ICR7bS52ZXJifSAke3N9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bS51bml0fWA6YEZvciBsaWxsZTogZm9ydmVudGVkZSAke2h9IGhhdmRlICR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BVZ3lsZGlnIHN0cmVuZzogc2thbCBzdGFydGUgbWVkICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFVneWxkaWcgc3RyZW5nOiBza2FsIGVuZGUgbWVkICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgaW5kZWhvbGRlICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BVZ3lsZGlnIHN0cmVuZzogc2thbCBtYXRjaGUgbcO4bnN0ZXJldCAke2QucGF0dGVybn1gOmBVZ3lsZGlnICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVZ3lsZGlndCB0YWw6IHNrYWwgdsOmcmUgZGVsZWxpZ3QgbWVkICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2VuZHRlIG7DuGdsZXIiOiJVa2VuZHQgbsO4Z2xlIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVWd5bGRpZyBuw7hnbGUgaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQ6IG1hdGNoZXIgaW5nZW4gYWYgZGUgdGlsbGFkdGUgdHlwZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2w6ZyZGkgaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQifX19O2NvbnN0IGVycm9yJEQ9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IlplaWNoZW4iLHZlcmI6Inp1IGhhYmVuIn0sZmlsZTp7dW5pdDoiQnl0ZXMiLHZlcmI6Inp1IGhhYmVuIn0sYXJyYXk6e3VuaXQ6IkVsZW1lbnRlIix2ZXJiOiJ6dSBoYWJlbiJ9LHNldDp7dW5pdDoiRWxlbWVudGUiLHZlcmI6Inp1IGhhYmVuIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiRWluZ2FiZSIsZW1haWw6IkUtTWFpbC1BZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6IkVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tRGF0dW0gdW5kIC1VaHJ6ZWl0IixkYXRlOiJJU08tRGF0dW0iLHRpbWU6IklTTy1VaHJ6ZWl0IixkdXJhdGlvbjoiSVNPLURhdWVyIixpcHY0OiJJUHY0LUFkcmVzc2UiLGlwdjY6IklQdjYtQWRyZXNzZSIsY2lkcnY0OiJJUHY0LUJlcmVpY2giLGNpZHJ2NjoiSVB2Ni1CZXJlaWNoIixiYXNlNjQ6IkJhc2U2NC1jb2RpZXJ0ZXIgU3RyaW5nIixiYXNlNjR1cmw6IkJhc2U2NC1VUkwtY29kaWVydGVyIFN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04tU3RyaW5nIixlMTY0OiJFLjE2NC1OdW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJFaW5nYWJlIn0sZD17bmFuOiJOYU4iLG51bWJlcjoiWmFobCIsYXJyYXk6IkFycmF5In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBlcmhhbHRlbiAke2h9YDpgVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke3N9LCBlcmhhbHRlbiAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBVbmfDvGx0aWdlIE9wdGlvbjogZXJ3YXJ0ZXQgZWluZSB2b24gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gWnUgZ3Jvw586IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW4/PyJXZXJ0In0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iRWxlbWVudGUifSBoYXRgOmBadSBncm/DnzogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbj8/IldlcnQifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gaXN0YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fSBoYXRgOmBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgIiR7ZC5wcmVmaXh9IiBiZWdpbm5lbmA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCAiJHtkLnN1ZmZpeH0iIGVuZGVuYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyAiJHtkLmluY2x1ZGVzfSIgZW50aGFsdGVuYDoicmVnZXgiPT09ZC5mb3JtYXQ/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBkZW0gTXVzdGVyICR7ZC5wYXR0ZXJufSBlbnRzcHJlY2hlbmA6YFVuZ8O8bHRpZzogJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVuZ8O8bHRpZ2UgWmFobDogbXVzcyBlaW4gVmllbGZhY2hlcyB2b24gJHtlLmRpdmlzb3J9IHNlaW5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVW5iZWthbm50ZSBTY2hsw7xzc2VsIjoiVW5iZWthbm50ZXIgU2NobMO8c3NlbCJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFNjaGzDvHNzZWwgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iVW5nw7xsdGlnZSBFaW5nYWJlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFdlcnQgaW4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJEM9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNoYXJhY3RlcnMiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxtYXA6e3VuaXQ6ImVudHJpZXMiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCk7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7c30sIHJlY2VpdmVkICR7ZFttXT8/bX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGhhdmUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudHMifWA6YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGJlICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVG9vIHNtYWxsOiBleHBlY3RlZCAke2Uub3JpZ2lufSB0byBoYXZlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmBUb28gc21hbGw6IGV4cGVjdGVkICR7ZS5vcmlnaW59IHRvIGJlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YEludmFsaWQgc3RyaW5nOiBtdXN0IHN0YXJ0IHdpdGggIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BJbnZhbGlkIHN0cmluZzogbXVzdCBpbmNsdWRlICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BJbnZhbGlkIHN0cmluZzogbXVzdCBtYXRjaCBwYXR0ZXJuICR7ZC5wYXR0ZXJufWA6YEludmFsaWQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVW5yZWNvZ25pemVkIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iSW52YWxpZCBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJbnZhbGlkIHZhbHVlIGluICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiBlbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRDKCl9fWNvbnN0IGVycm9yJEI9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImthcmFrdHJvam4iLHZlcmI6ImhhdmkifSxmaWxlOnt1bml0OiJiYWp0b2puIix2ZXJiOiJoYXZpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJlbmlnbyIsZW1haWw6InJldGFkcmVzbyIsdXJsOiJVUkwiLGVtb2ppOiJlbW/EnWlvIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tZGF0b3RlbXBvIixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLXRlbXBvIixkdXJhdGlvbjoiSVNPLWRhxa1ybyIsaXB2NDoiSVB2NC1hZHJlc28iLGlwdjY6IklQdjYtYWRyZXNvIixjaWRydjQ6IklQdjQtcmFuZ28iLGNpZHJ2NjoiSVB2Ni1yYW5nbyIsYmFzZTY0OiI2NC11bWUga29kaXRhIGthcmFrdHJhcm8iLGJhc2U2NHVybDoiVVJMLTY0LXVtZSBrb2RpdGEga2FyYWt0cmFybyIsanNvbl9zdHJpbmc6IkpTT04ta2FyYWt0cmFybyIsZTE2NDoiRS4xNjQtbm9tYnJvIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW5pZ28ifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJub21icm8iLGFycmF5OiJ0YWJlbG8iLG51bGw6InNlbnZhbG9yYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2acSdaXMgJHtofWA6YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzICR7c30sIHJpY2V2acSdaXMgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YE5ldmFsaWRhIG9wY2lvOiBhdGVuZGnEnWlzIHVudSBlbCAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm8gZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW4/PyJ2YWxvcm8ifSBoYXZ1ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnRvam4ifWA6YFRybyBncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbj8/InZhbG9ybyJ9IGhhdnUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm8gbWFsZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW59IGhhdnUgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbn0gZXN0dSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb21lbmNpxJ1pIHBlciAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBmaW5pxJ1pIHBlciAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGlua2x1eml2aSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29uZ3J1aSBrdW4gbGEgbW9kZWxvICR7ZC5wYXR0ZXJufWA6YE5ldmFsaWRhICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZhbGlkYSBub21icm86IGRldmFzIGVzdGkgb2JsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWtvbmF0YSR7ZS5rZXlzLmxlbmd0aD4xPyJqIjoiIn0gxZ1sb3NpbG8ke2Uua2V5cy5sZW5ndGg+MT8iaiI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmFsaWRhIMWdbG9zaWxvIGVuICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIk5ldmFsaWRhIGVuaWdvIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmFsaWRhIHZhbG9ybyBlbiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkQT0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlcyIsdmVyYjoidGVuZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVuZXIifSxhcnJheTp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9LHNldDp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImVudHJhZGEiLGVtYWlsOiJkaXJlY2Npw7NuIGRlIGNvcnJlbyBlbGVjdHLDs25pY28iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImZlY2hhIHkgaG9yYSBJU08iLGRhdGU6ImZlY2hhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhY2nDs24gSVNPIixpcHY0OiJkaXJlY2Npw7NuIElQdjQiLGlwdjY6ImRpcmVjY2nDs24gSVB2NiIsY2lkcnY0OiJyYW5nbyBJUHY0IixjaWRydjY6InJhbmdvIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVuIGJhc2U2NCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LGQ9e25hbjoiTmFOIixzdHJpbmc6InRleHRvIixudW1iZXI6Im7Dum1lcm8iLGJvb2xlYW46ImJvb2xlYW5vIixhcnJheToiYXJyZWdsbyIsb2JqZWN0OiJvYmpldG8iLHNldDoiY29uanVudG8iLGZpbGU6ImFyY2hpdm8iLGRhdGU6ImZlY2hhIixiaWdpbnQ6Im7Dum1lcm8gZ3JhbmRlIixzeW1ib2w6InPDrW1ib2xvIix1bmRlZmluZWQ6ImluZGVmaW5pZG8iLG51bGw6Im51bG8iLGZ1bmN0aW9uOiJmdW5jacOzbiIsbWFwOiJtYXBhIixyZWNvcmQ6InJlZ2lzdHJvIix0dXBsZToidHVwbGEiLGVudW06ImVudW1lcmFjacOzbiIsdW5pb246InVuacOzbiIsbGl0ZXJhbDoibGl0ZXJhbCIscHJvbWlzZToicHJvbWVzYSIsdm9pZDoidmFjw61vIixuZXZlcjoibnVuY2EiLHVua25vd246ImRlc2Nvbm9jaWRvIixhbnk6ImN1YWxxdWllcmEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmVjaWJpZG8gJHtofWA6YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSAke3N9LCByZWNpYmlkbyAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YE9wY2nDs24gaW52w6FsaWRhOiBzZSBlc3BlcmFiYSB1bmEgZGUgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLG09Z2V0U2l6aW5nKGUub3JpZ2luKSxoPWRbZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gbT9gRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7aD8/InZhbG9yIn0gdHV2aWVyYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttLnVuaXQ/PyJlbGVtZW50b3MifWA6YERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke2g/PyJ2YWxvciJ9IGZ1ZXJhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLG09Z2V0U2l6aW5nKGUub3JpZ2luKSxoPWRbZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gbT9gRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtofSB0dXZpZXJhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke20udW5pdH1gOmBEZW1hc2lhZG8gcGVxdWXDsW86IHNlIGVzcGVyYWJhIHF1ZSAke2h9IGZ1ZXJhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29tZW56YXIgY29uICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgdGVybWluYXIgZW4gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGluY2x1aXIgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29pbmNpZGlyIGNvbiBlbCBwYXRyw7NuICR7ZC5wYXR0ZXJufWA6YEludsOhbGlkbyAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRlYmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBMbGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29ub2NpZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYExsYXZlIGludsOhbGlkYSBlbiAke2RbZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3IgaW52w6FsaWRvIGVuICR7ZFtlLm9yaWdpbl0/P2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3Ikej0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi2qnYp9ix2Kfaqdiq2LEiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxmaWxlOnt1bml0OiLYqNin24zYqiIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LGFycmF5Ont1bml0OiLYotuM2KrZhSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LHNldDp7dW5pdDoi2KLbjNiq2YUiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLZiNix2YjYr9uMIixlbWFpbDoi2KLYr9ix2LMg2KfbjNmF24zZhCIsdXJsOiJVUkwiLGVtb2ppOiLYp9uM2YXZiNis24wiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Itiq2KfYsduM2K4g2Ygg2LLZhdin2YYg2KfbjNiy2YgiLGRhdGU6Itiq2KfYsduM2K4g2KfbjNiy2YgiLHRpbWU6Itiy2YXYp9mGINin24zYstmIIixkdXJhdGlvbjoi2YXYr9iqINiy2YXYp9mGINin24zYstmIIixpcHY0OiJJUHY0INii2K/YsdizIixpcHY2OiJJUHY2INii2K/YsdizIixjaWRydjQ6IklQdjQg2K/Yp9mF2YbZhyIsY2lkcnY2OiJJUHY2INiv2KfZhdmG2YciLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg2LHYtNiq2YciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2LHYtNiq2YciLGpzb25fc3RyaW5nOiJKU09OINix2LTYqtmHIixlMTY0OiJFLjE2NCDYudiv2K8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9uMIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KLYsdin24zZhyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXbjOKAjNio2YjYr9iMICR7aH0g2K/YsduM2KfZgdiqINi02K9gOmDZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke3N9INmF24zigIzYqNmI2K/YjCAke2h9INiv2LHbjNin2YHYqiDYtNivYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9INmF24zigIzYqNmI2K9gOmDar9iy24zZhtmHINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiDbjNqp24wg2KfYsiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX0g2YXbjOKAjNio2YjYr2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNiu24zZhNuMINio2LLYsdqvOiAke2Uub3JpZ2luPz8i2YXZgtiv2KfYsSJ9INio2KfbjNivICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/Iti52YbYtdixIn0g2KjYp9i02K9gOmDYrtuM2YTbjCDYqNiy2LHarzogJHtlLm9yaWdpbj8/ItmF2YLYr9in2LEifSDYqNin24zYryAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2KjYp9i02K9gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNiu24zZhNuMINqp2YjahtqpOiAke2Uub3JpZ2lufSDYqNin24zYryAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9INio2KfYtNivYDpg2K7bjNmE24wg2qnZiNqG2qk6ICR7ZS5vcmlnaW59INio2KfbjNivICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinICIke2QucHJlZml4fSIg2LTYsdmI2Lkg2LTZiNivYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyAiJHtkLnN1ZmZpeH0iINiq2YXYp9mFINi02YjYr2A6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2LTYp9mF2YQgIiR7ZC5pbmNsdWRlc30iINio2KfYtNivYDoicmVnZXgiPT09ZC5mb3JtYXQ/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinINin2YTar9mI24wgJHtkLnBhdHRlcm59INmF2LfYp9io2YLYqiDYr9in2LTYqtmHINio2KfYtNivYDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfZhdi52KrYqNixYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi52K/YryDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2YXYttix2KggJHtlLmRpdmlzb3J9INio2KfYtNivYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2qnZhNuM2K8ke2Uua2V5cy5sZW5ndGg+MT8i2YfYp9uMIjoiIn0g2YbYp9i02YbYp9izOiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNqp2YTbjNivINmG2KfYtNmG2KfYsyDYr9ixICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuItmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXZgtiv2KfYsSDZhtin2YXYudiq2KjYsSDYr9ixICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciR5PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJtZXJra2nDpCIsc3ViamVjdDoibWVya2tpam9ub24ifSxmaWxlOnt1bml0OiJ0YXZ1YSIsc3ViamVjdDoidGllZG9zdG9uIn0sYXJyYXk6e3VuaXQ6ImFsa2lvdGEiLHN1YmplY3Q6Imxpc3RhbiJ9LHNldDp7dW5pdDoiYWxraW90YSIsc3ViamVjdDoiam91a29uIn0sbnVtYmVyOnt1bml0OiIiLHN1YmplY3Q6Imx1dnVuIn0sYmlnaW50Ont1bml0OiIiLHN1YmplY3Q6InN1dXJlbiBrb2tvbmFpc2x1dnVuIn0saW50Ont1bml0OiIiLHN1YmplY3Q6Imtva29uYWlzbHV2dW4ifSxkYXRlOnt1bml0OiIiLHN1YmplY3Q6InDDpGl2w6Rtw6TDpHLDpG4ifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJzw6TDpG5uw7ZsbGluZW4gbGF1c2VrZSIsZW1haWw6InPDpGhrw7Zwb3N0aW9zb2l0ZSIsdXJsOiJVUkwtb3NvaXRlIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1haWthbGVpbWEiLGRhdGU6IklTTy1ww6RpdsOkbcOkw6Ryw6QiLHRpbWU6IklTTy1haWthIixkdXJhdGlvbjoiSVNPLWtlc3RvIixpcHY0OiJJUHY0LW9zb2l0ZSIsaXB2NjoiSVB2Ni1vc29pdGUiLGNpZHJ2NDoiSVB2NC1hbHVlIixjaWRydjY6IklQdjYtYWx1ZSIsYmFzZTY0OiJiYXNlNjQta29vZGF0dHUgbWVya2tpam9ubyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29vZGF0dHUgbWVya2tpam9ubyIsanNvbl9zdHJpbmc6IkpTT04tbWVya2tpam9ubyIsZTE2NDoiRS4xNjQtbHVrdSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InRlbXBsYWF0dGltZXJra2lqb25vIn0sZD17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9saSAke2h9YDpgVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiAke3N9LCBvbGkgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBvbGxhICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBWaXJoZWVsbGluZW4gdmFsaW50YTogdMOkeXR5eSBvbGxhIHlrc2kgc2V1cmFhdmlzdGE6ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YExpaWFuIHN1dXJpOiAke2Quc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdH1gLnRyaW0oKTpgTGlpYW4gc3V1cmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YExpaWFuIHBpZW5pOiAke2Quc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gLnRyaW0oKTpgTGlpYW4gcGllbmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IGFsa2FhICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgbG9wcHVhICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBzaXPDpGx0w6TDpCAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSB2YXN0YXRhIHPDpMOkbm7DtmxsaXN0w6QgbGF1c2VrZXR0YSAke2QucGF0dGVybn1gOmBWaXJoZWVsbGluZW4gJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFZpcmhlZWxsaW5lbiBsdWt1OiB0w6R5dHl5IG9sbGEgbHV2dW4gJHtlLmRpdmlzb3J9IG1vbmlrZXJ0YWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJUdW50ZW1hdHRvbWF0IGF2YWltZXQiOiJUdW50ZW1hdG9uIGF2YWluIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGF2YWluIHRpZXR1ZWVzc2EiO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlZpcmhlZWxsaW5lbiB1bmlvbmkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGFydm8gam91a29zc2EiO2RlZmF1bHQ6cmV0dXJuIlZpcmhlZWxsaW5lbiBzecO2dGUifX19O2NvbnN0IGVycm9yJHg9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgZS1tYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRlIGV0IGhldXJlIElTTyIsZGF0ZToiZGF0ZSBJU08iLHRpbWU6ImhldXJlIElTTyIsZHVyYXRpb246ImR1csOpZSBJU08iLGlwdjQ6ImFkcmVzc2UgSVB2NCIsaXB2NjoiYWRyZXNzZSBJUHY2IixjaWRydjQ6InBsYWdlIElQdjQiLGNpZHJ2NjoicGxhZ2UgSVB2NiIsYmFzZTY0OiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNoYcOubmUgSlNPTiIsZTE2NDoibnVtw6lybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHLDqWUifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJub21icmUiLGFycmF5OiJ0YWJsZWF1In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0gYXR0ZW5kdSwgJHtofSByZcOndWA6YEVudHLDqWUgaW52YWxpZGUgOiAke3N9IGF0dGVuZHUsICR7aH0gcmXDp3VgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEVudHLDqWUgaW52YWxpZGUgOiAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9IGF0dGVuZHVgOmBPcHRpb24gaW52YWxpZGUgOiB1bmUgdmFsZXVyIHBhcm1pICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfSBhdHRlbmR1ZWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRyb3AgZ3JhbmQgOiAke2Uub3JpZ2luPz8idmFsZXVyIn0gZG9pdCAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iw6lsw6ltZW50KHMpIn1gOmBUcm9wIGdyYW5kIDogJHtlLm9yaWdpbj8/InZhbGV1ciJ9IGRvaXQgw6p0cmUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm9wIHBldGl0IDogJHtlLm9yaWdpbn0gZG9pdCAke2QudmVyYn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFRyb3AgcGV0aXQgOiAke2Uub3JpZ2lufSBkb2l0IMOqdHJlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgc2UgdGVybWluZXIgcGFyICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vZMOobGUgJHtkLnBhdHRlcm59YDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9IGludmFsaWRlYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgw6p0cmUgdW4gbXVsdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2zDqSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm9uIHJlY29ubnVlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSA6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2zDqSBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJHc9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgY291cnJpZWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGUtaGV1cmUgSVNPIixkYXRlOiJkYXRlIElTTyIsdGltZToiaGV1cmUgSVNPIixkdXJhdGlvbjoiZHVyw6llIElTTyIsaXB2NDoiYWRyZXNzZSBJUHY0IixpcHY2OiJhZHJlc3NlIElQdjYiLGNpZHJ2NDoicGxhZ2UgSVB2NCIsY2lkcnY2OiJwbGFnZSBJUHY2IixiYXNlNjQ6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2hhw65uZSBKU09OIixlMTY0OiJudW3DqXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50csOpZSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmXDp3UgJHtofWA6YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7c30sIHJlw6d1ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBPcHRpb24gaW52YWxpZGUgOiBhdHRlbmR1IGwndW5lIGRlcyB2YWxldXJzIHN1aXZhbnRlcyAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/IuKJpCI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW4/PyJsYSB2YWxldXIifSBhaXQgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFRyb3AgZ3JhbmQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2luPz8ibGEgdmFsZXVyIn0gc29pdCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i4omlIjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gYWl0ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmBUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gc29pdCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb21tZW5jZXIgcGFyICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvcnJlc3BvbmRyZSBhdSBtb3RpZiAke2QucGF0dGVybn1gOmAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxldXIgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3Ikdj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiIsZ2VuZGVyOiJmIn0sbnVtYmVyOntsYWJlbDoi157Xodek16giLGdlbmRlcjoibSJ9LGJvb2xlYW46e2xhYmVsOiLXoteo15og15HXldec15nXkNeg15kiLGdlbmRlcjoibSJ9LGJpZ2ludDp7bGFiZWw6IkJpZ0ludCIsZ2VuZGVyOiJtIn0sZGF0ZTp7bGFiZWw6Iteq15DXqNeZ15oiLGdlbmRlcjoibSJ9LGFycmF5OntsYWJlbDoi157Xoteo15oiLGdlbmRlcjoibSJ9LG9iamVjdDp7bGFiZWw6IteQ15XXkdeZ15nXp9eYIixnZW5kZXI6Im0ifSxudWxsOntsYWJlbDoi16LXqNeaINeo15nXpyAobnVsbCkiLGdlbmRlcjoibSJ9LHVuZGVmaW5lZDp7bGFiZWw6Itei16jXmiDXnNeQINee15XXkteT16ggKHVuZGVmaW5lZCkiLGdlbmRlcjoibSJ9LHN5bWJvbDp7bGFiZWw6Iteh15nXnteR15XXnCAoU3ltYm9sKSIsZ2VuZGVyOiJtIn0sZnVuY3Rpb246e2xhYmVsOiLXpNeV16DXp9em15nXlCIsZ2VuZGVyOiJmIn0sbWFwOntsYWJlbDoi157XpNeUIChNYXApIixnZW5kZXI6ImYifSxzZXQ6e2xhYmVsOiLXp9eR15XXpteUIChTZXQpIixnZW5kZXI6ImYifSxmaWxlOntsYWJlbDoi16fXldeR16UiLGdlbmRlcjoibSJ9LHByb21pc2U6e2xhYmVsOiJQcm9taXNlIixnZW5kZXI6Im0ifSxOYU46e2xhYmVsOiJOYU4iLGdlbmRlcjoibSJ9LHVua25vd246e2xhYmVsOiLXoteo15og15zXkCDXmdeT15XXoiIsZ2VuZGVyOiJtIn0sdmFsdWU6e2xhYmVsOiLXoteo15oiLGdlbmRlcjoibSJ9fSxzPXtzdHJpbmc6e3VuaXQ6Iteq15XXldeZ150iLHNob3J0TGFiZWw6Iten16bXqCIsbG9uZ0xhYmVsOiLXkNeo15XXmiJ9LGZpbGU6e3VuaXQ6IteR15nXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sYXJyYXk6e3VuaXQ6Itek16jXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sc2V0Ont1bml0OiLXpNeo15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LG51bWJlcjp7dW5pdDoiIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifX0sdHlwZUVudHJ5PXM9PnM/ZVtzXTp2b2lkIDAsdHlwZUxhYmVsPXM9Pntjb25zdCBkPXR5cGVFbnRyeShzKTtyZXR1cm4gZD9kLmxhYmVsOnM/P2UudW5rbm93bi5sYWJlbH0sd2l0aERlZmluaXRlPWU9PmDXlCR7dHlwZUxhYmVsKGUpfWAsdmVyYkZvcj1lPT57Y29uc3Qgcz10eXBlRW50cnkoZSk7cmV0dXJuImYiPT09KHM/LmdlbmRlcj8/Im0iKT8i16bXqNeZ15vXlCDXnNeU15nXldeqIjoi16bXqNeZ15og15zXlNeZ15XXqiJ9LGdldFNpemluZz1lPT5lP3NbZV0/P251bGw6bnVsbCxkPXtyZWdleDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sZW1haWw6e2xhYmVsOiLXm9eq15XXkdeqINeQ15nXnteZ15nXnCIsZ2VuZGVyOiJmIn0sdXJsOntsYWJlbDoi15vXqteV15HXqiDXqNep16oiLGdlbmRlcjoiZiJ9LGVtb2ppOntsYWJlbDoi15DXmdee15XXkifXmSIsZ2VuZGVyOiJtIn0sdXVpZDp7bGFiZWw6IlVVSUQiLGdlbmRlcjoibSJ9LG5hbm9pZDp7bGFiZWw6Im5hbm9pZCIsZ2VuZGVyOiJtIn0sZ3VpZDp7bGFiZWw6IkdVSUQiLGdlbmRlcjoibSJ9LGN1aWQ6e2xhYmVsOiJjdWlkIixnZW5kZXI6Im0ifSxjdWlkMjp7bGFiZWw6ImN1aWQyIixnZW5kZXI6Im0ifSx1bGlkOntsYWJlbDoiVUxJRCIsZ2VuZGVyOiJtIn0seGlkOntsYWJlbDoiWElEIixnZW5kZXI6Im0ifSxrc3VpZDp7bGFiZWw6IktTVUlEIixnZW5kZXI6Im0ifSxkYXRldGltZTp7bGFiZWw6Iteq15DXqNeZ15og15XXltee158gSVNPIixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiBJU08iLGdlbmRlcjoibSJ9LHRpbWU6e2xhYmVsOiLXltee158gSVNPIixnZW5kZXI6Im0ifSxkdXJhdGlvbjp7bGFiZWw6Itee16nXmiDXltee158gSVNPIixnZW5kZXI6Im0ifSxpcHY0OntsYWJlbDoi15vXqteV15HXqiBJUHY0IixnZW5kZXI6ImYifSxpcHY2OntsYWJlbDoi15vXqteV15HXqiBJUHY2IixnZW5kZXI6ImYifSxjaWRydjQ6e2xhYmVsOiLXmNeV15XXlyBJUHY0IixnZW5kZXI6Im0ifSxjaWRydjY6e2xhYmVsOiLXmNeV15XXlyBJUHY2IixnZW5kZXI6Im0ifSxiYXNlNjQ6e2xhYmVsOiLXnteX16jXldeW16og15HXkdeh15nXoSA2NCIsZ2VuZGVyOiJmIn0sYmFzZTY0dXJsOntsYWJlbDoi157Xl9eo15XXlteqINeR15HXodeZ16EgNjQg15zXm9eq15XXkdeV16og16jXqdeqIixnZW5kZXI6ImYifSxqc29uX3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiBKU09OIixnZW5kZXI6ImYifSxlMTY0OntsYWJlbDoi157Xodek16ggRS4xNjQiLGdlbmRlcjoibSJ9LGp3dDp7bGFiZWw6IkpXVCIsZ2VuZGVyOiJtIn0sZW5kc193aXRoOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxpbmNsdWRlczp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sbG93ZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxzdGFydHNfd2l0aDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sdXBwZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifX0sbT17bmFuOiJOYU4ifTtyZXR1cm4gcz0+e3N3aXRjaChzLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgZD1zLmV4cGVjdGVkLGg9bVtkPz8iIl0/P3R5cGVMYWJlbChkKSxnPXBhcnNlZFR5cGUocy5pbnB1dCkseD1tW2ddPz9lW2ddPy5sYWJlbD8/ZztyZXR1cm4vXltBLVpdLy50ZXN0KHMuZXhwZWN0ZWQpP2DXp9ec15gg15zXkCDXqten15nXnzog16bXqNeZ15og15zXlNeZ15XXqiBpbnN0YW5jZW9mICR7cy5leHBlY3RlZH0sINeU16rXp9eR15wgJHt4fWA6YNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqICR7aH0sINeU16rXp9eR15wgJHt4fWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjp7aWYoMT09PXMudmFsdWVzLmxlbmd0aClyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU16LXqNeaINeX15nXmdeRINec15TXmdeV16ogJHtzdHJpbmdpZnlQcmltaXRpdmUocy52YWx1ZXNbMF0pfWA7Y29uc3QgZT1zLnZhbHVlcy5tYXAoZT0+c3RyaW5naWZ5UHJpbWl0aXZlKGUpKTtpZigyPT09cy52YWx1ZXMubGVuZ3RoKXJldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2VbMF19INeQ15UgJHtlWzFdfWA7Y29uc3QgZD1lW2UubGVuZ3RoLTFdO3JldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2Uuc2xpY2UoMCwtMSkuam9pbigiLCAiKX0g15DXlSAke2R9YH1jYXNlInRvb19iaWciOntjb25zdCBlPWdldFNpemluZyhzLm9yaWdpbiksZD13aXRoRGVmaW5pdGUocy5vcmlnaW4/PyJ2YWx1ZSIpO2lmKCJzdHJpbmciPT09cy5vcmlnaW4pcmV0dXJuYCR7ZT8ubG9uZ0xhYmVsPz8i15DXqNeV15oifSDXnteT15k6ICR7ZH0g16bXqNeZ15vXlCDXnNeU15vXmdecICR7cy5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZT8udW5pdD8/IiJ9ICR7cy5pbmNsdXNpdmU/IteQ15Ug16TXl9eV16oiOiLXnNeb15wg15TXmdeV16rXqCJ9YC50cmltKCk7aWYoIm51bWJlciI9PT1zLm9yaWdpbil7cmV0dXJuYNeS15PXldecINee15PXmTogJHtkfSDXpteo15nXmiDXnNeU15nXldeqICR7cy5pbmNsdXNpdmU/YNen15jXnyDXkNeVINep15XXldeUINecLSR7cy5tYXhpbXVtfWA6YNen15jXnyDXni0ke3MubWF4aW11bX1gfWB9aWYoImFycmF5Ij09PXMub3JpZ2lufHwic2V0Ij09PXMub3JpZ2luKXtyZXR1cm5g15LXk9eV15wg157Xk9eZOiAke2R9ICR7InNldCI9PT1zLm9yaWdpbj8i16bXqNeZ15vXlCI6Item16jXmdeaIn0g15zXlNeb15nXnCAke3MuaW5jbHVzaXZlP2Ake3MubWF4aW11bX0gJHtlPy51bml0Pz8iIn0g15DXlSDXpNeX15XXqmA6YNek15fXldeqINeeLSR7cy5tYXhpbXVtfSAke2U/LnVuaXQ/PyIifWB9YC50cmltKCl9Y29uc3QgbT1zLmluY2x1c2l2ZT8iPD0iOiI8IixoPXZlcmJGb3Iocy5vcmlnaW4/PyJ2YWx1ZSIpO3JldHVybiBlPy51bml0P2Ake2UubG9uZ0xhYmVsfSDXnteT15k6ICR7ZH0gJHtofSAke219JHtzLm1heGltdW0udG9TdHJpbmcoKX0gJHtlLnVuaXR9YDpgJHtlPy5sb25nTGFiZWw/PyLXkteT15XXnCJ9INee15PXmTogJHtkfSAke2h9ICR7bX0ke3MubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBlPWdldFNpemluZyhzLm9yaWdpbiksZD13aXRoRGVmaW5pdGUocy5vcmlnaW4/PyJ2YWx1ZSIpO2lmKCJzdHJpbmciPT09cy5vcmlnaW4pcmV0dXJuYCR7ZT8uc2hvcnRMYWJlbD8/Iten16bXqCJ9INee15PXmTogJHtkfSDXpteo15nXm9eUINec15TXm9eZ15wgJHtzLm1pbmltdW0udG9TdHJpbmcoKX0gJHtlPy51bml0Pz8iIn0gJHtzLmluY2x1c2l2ZT8i15DXlSDXmdeV16rXqCI6Itec16TXl9eV16oifWAudHJpbSgpO2lmKCJudW1iZXIiPT09cy5vcmlnaW4pe3JldHVybmDXp9eY158g157Xk9eZOiAke2R9INem16jXmdeaINec15TXmdeV16ogJHtzLmluY2x1c2l2ZT9g15LXk9eV15wg15DXlSDXqdeV15XXlCDXnC0ke3MubWluaW11bX1gOmDXkteT15XXnCDXni0ke3MubWluaW11bX1gfWB9aWYoImFycmF5Ij09PXMub3JpZ2lufHwic2V0Ij09PXMub3JpZ2luKXtjb25zdCBtPSJzZXQiPT09cy5vcmlnaW4/Item16jXmdeb15QiOiLXpteo15nXmiI7aWYoMT09PXMubWluaW11bSYmcy5pbmNsdXNpdmUpe3JldHVybmDXp9eY158g157Xk9eZOiAke2R9ICR7bX0g15zXlNeb15nXnCAke3Mub3JpZ2luLCLXnNek15fXldeqINek16jXmdeYINeQ15fXkyJ9YH1yZXR1cm5g16fXmNefINee15PXmTogJHtkfSAke219INec15TXm9eZ15wgJHtzLmluY2x1c2l2ZT9gJHtzLm1pbmltdW19ICR7ZT8udW5pdD8/IiJ9INeQ15Ug15nXldeq16hgOmDXmdeV16rXqCDXni0ke3MubWluaW11bX0gJHtlPy51bml0Pz8iIn1gfWAudHJpbSgpfWNvbnN0IG09cy5pbmNsdXNpdmU/Ij49IjoiPiIsaD12ZXJiRm9yKHMub3JpZ2luPz8idmFsdWUiKTtyZXR1cm4gZT8udW5pdD9gJHtlLnNob3J0TGFiZWx9INee15PXmTogJHtkfSAke2h9ICR7bX0ke3MubWluaW11bS50b1N0cmluZygpfSAke2UudW5pdH1gOmAke2U/LnNob3J0TGFiZWw/PyLXp9eY158ifSDXnteT15k6ICR7ZH0gJHtofSAke219JHtzLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBlPXM7aWYoInN0YXJ0c193aXRoIj09PWUuZm9ybWF0KXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteX15nXnCDXkSAiJHtlLnByZWZpeH0iYDtpZigiZW5kc193aXRoIj09PWUuZm9ybWF0KXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXodeq15nXmdedINeRICIke2Uuc3VmZml4fSJgO2lmKCJpbmNsdWRlcyI9PT1lLmZvcm1hdClyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeb15zXldecICIke2UuaW5jbHVkZXN9ImA7aWYoInJlZ2V4Ij09PWUuZm9ybWF0KXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteQ15nXnSDXnNeq15HXoNeZ16ogJHtlLnBhdHRlcm59YDtjb25zdCBtPWRbZS5mb3JtYXRdO3JldHVybmAke20/LmxhYmVsPz9lLmZvcm1hdH0g15zXkCAkeyJmIj09PShtPy5nZW5kZXI/PyJtIik/Iteq16fXmdeg15QiOiLXqten15nXnyJ9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNee16HXpNeoINec15Ag16rXp9eZ1586INeX15nXmdeRINec15TXmdeV16og157Xm9ek15zXlCDXqdecICR7cy5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNee16TXqteXJHtzLmtleXMubGVuZ3RoPjE/IteV16oiOiIifSDXnNeQINee15bXldeUJHtzLmtleXMubGVuZ3RoPjE/IteZ150iOiLXlCJ9OiAke2pvaW5WYWx1ZXMocy5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuItep15PXlCDXnNeQINeq16fXmdefINeR15DXldeR15nXmden15giO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i16fXnNeYINec15Ag16rXp9eZ158iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ158g15Eke3dpdGhEZWZpbml0ZShzLm9yaWdpbj8/ImFycmF5Iil9YH19fTtjb25zdCBlcnJvciR1PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibGVneWVuIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoibGVneWVuIn0sYXJyYXk6e3VuaXQ6ImVsZW0iLHZlcmI6ImxlZ3llbiJ9LHNldDp7dW5pdDoiZWxlbSIsdmVyYjoibGVneWVuIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiYmVtZW5ldCIsZW1haWw6ImVtYWlsIGPDrW0iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBpZMWRYsOpbHllZyIsZGF0ZToiSVNPIGTDoXR1bSIsdGltZToiSVNPIGlkxZEiLGR1cmF0aW9uOiJJU08gaWTFkWludGVydmFsbHVtIixpcHY0OiJJUHY0IGPDrW0iLGlwdjY6IklQdjYgY8OtbSIsY2lkcnY0OiJJUHY0IHRhcnRvbcOhbnkiLGNpZHJ2NjoiSVB2NiB0YXJ0b23DoW55IixiYXNlNjQ6ImJhc2U2NC1rw7Nkb2x0IHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta8OzZG9sdCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgc3rDoW0iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJiZW1lbmV0In0sZD17bmFuOiJOYU4iLG51bWJlcjoic3rDoW0iLGFycmF5OiJ0w7ZtYiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGEga2Fwb3R0IMOpcnTDqWsgJHtofWA6YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7c30sIGEga2Fwb3R0IMOpcnTDqWsgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YMOJcnbDqW55dGVsZW4gb3BjacOzOiB2YWxhbWVseWlrIMOpcnTDqWsgdsOhcnQgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVMO6bCBuYWd5OiAke2Uub3JpZ2luPz8iw6lydMOpayJ9IG3DqXJldGUgdMO6bCBuYWd5ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW0ifWA6YFTDumwgbmFneTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW4/PyLDqXJ0w6lrIn0gdMO6bCBuYWd5OiAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSBtw6lyZXRlIHTDumwga2ljc2kgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSB0w7psIGtpY3NpICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtkLnByZWZpeH0iIMOpcnTDqWtrZWwga2VsbCBrZXpkxZFkbmllYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7ZC5zdWZmaXh9IiDDqXJ0w6lra2VsIGtlbGwgdsOpZ3rFkWRuaWVgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2QuaW5jbHVkZXN9IiDDqXJ0w6lrZXQga2VsbCB0YXJ0YWxtYXpuaWFgOiJyZWdleCI9PT1kLmZvcm1hdD9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICR7ZC5wYXR0ZXJufSBtaW50w6FuYWsga2VsbCBtZWdmZWxlbG5pZWA6YMOJcnbDqW55dGVsZW4gJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYMOJcnbDqW55dGVsZW4gc3rDoW06ICR7ZS5kaXZpc29yfSB0w7ZiYnN6w7Zyw7Zzw6luZWsga2VsbCBsZW5uaWVgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBJc21lcmV0bGVuIGt1bGNzJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDDiXJ2w6lueXRlbGVuIGt1bGNzICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIsOJcnbDqW55dGVsZW4gYmVtZW5ldCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDDiXJ2w6lueXRlbGVuIMOpcnTDqWs6ICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiBnZXRBcm1lbmlhblBsdXJhbChlLHMsZCl7cmV0dXJuIDE9PT1NYXRoLmFicyhlKT9zOmR9ZnVuY3Rpb24gd2l0aERlZmluaXRlQXJ0aWNsZShlKXtpZighZSlyZXR1cm4iIjtjb25zdCBzPWVbZS5sZW5ndGgtMV07cmV0dXJuIGUrKFsi1aEiLCLVpSIsItWoIiwi1asiLCLVuCIsItW41oIiLCLWhSJdLmluY2x1ZGVzKHMpPyLVtiI6ItWoIil9Y29uc3QgZXJyb3IkdD0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDp7b25lOiLVttW31aHVtiIsbWFueToi1bbVt9Wh1bbVttWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LGZpbGU6e3VuaXQ6e29uZToi1aLVodW11akiLG1hbnk6ItWi1aHVtdWp1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sYXJyYXk6e3VuaXQ6e29uZToi1b/VodaA1oAiLG1hbnk6ItW/1aHWgNaA1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sc2V0Ont1bml0OntvbmU6ItW/1aHWgNaAIixtYW55OiLVv9Wh1oDWgNWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ItW01bjWgtW/1oQiLGVtYWlsOiLVp9WsLiDVsNWh1b3WgdWlIix1cmw6IlVSTCIsZW1vamk6ItWn1bTVuNW71asiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDVodW01b3VodWp1avVviDWhyDVqtWh1bQiLGRhdGU6IklTTyDVodW01b3VodWp1avVviIsdGltZToiSVNPINWq1aHVtCIsZHVyYXRpb246IklTTyDVv9aH1bjVstW41oLVqdW11bjWgtW2IixpcHY0OiJJUHY0INWw1aHVvdaB1aUiLGlwdjY6IklQdjYg1bDVodW91oHVpSIsY2lkcnY0OiJJUHY0INW01avVu9Wh1a/VodW11oQiLGNpZHJ2NjoiSVB2NiDVtNWr1bvVodWv1aHVtdaEIixiYXNlNjQ6ImJhc2U2NCDVsdaH1aHVudWh1oPVuNW+INW/1bjVsiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg1bHWh9Wh1bnVodaD1bjVviDVv9W41bIiLGpzb25fc3RyaW5nOiJKU09OINW/1bjVsiIsZTE2NDoiRS4xNjQg1bDVodW01aHWgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItW01bjWgtW/1oQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiLVqdWr1b4iLGFycmF5OiLVptWh1bbVo9W+1aHVriJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINW91b/VodaB1b7VpdWsINWnICR7aH1gOmDVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke3N9LCDVvdW/1aHWgdW+1aXVrCDVpyAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1sxXSl9YDpg1Y3VrdWh1awg1b/VodaA1aLVpdaA1aHVr+KApCDVvdW61aHVvdW+1bjWgtW0INWn1oAg1bDVpdW/1ofVtdWh1azVttWl1oDVq9aBINW01aXVr9Wo1Z0gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEFybWVuaWFuUGx1cmFsKE51bWJlcihlLm1heGltdW0pLGQudW5pdC5vbmUsZC51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHt3aXRoRGVmaW5pdGVBcnRpY2xlKGUub3JpZ2luPz8i1aHWgNWq1aXWhCIpfSDVr9W41oLVttWl1bbVoSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1bTVpdWuINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke3dpdGhEZWZpbml0ZUFydGljbGUoZS5vcmlnaW4/PyLVodaA1arVpdaEIil9INWs1avVttWrICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEFybWVuaWFuUGx1cmFsKE51bWJlcihlLm1pbmltdW0pLGQudW5pdC5vbmUsZC51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINaD1bjWhNaAINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke3dpdGhEZWZpbml0ZUFydGljbGUoZS5vcmlnaW4pfSDVr9W41oLVttWl1bbVoSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHttfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1oPVuNaE1oAg1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7d2l0aERlZmluaXRlQXJ0aWNsZShlLm9yaWdpbil9INWs1avVttWrICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVvdWv1b3VvtWrICIke2QucHJlZml4fSIt1bjVvmA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWh1b7VodaA1b/VvtWrICIke2Quc3VmZml4fSIt1bjVvmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1brVodaA1bjWgtW21aHVr9WrICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1bDVodW01aHVutWh1b/VodW91a3VodW21asgJHtkLnBhdHRlcm59INWx1ofVodW51aHWg9Wr1bZgOmDVjdWt1aHVrCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g1Y3VrdWh1awg1anVq9W+4oCkINW61aXVv9aEINWnINWi1aHVptW01aHVutWh1b/Vq9WvINWs1avVttWrICR7ZS5kaXZpc29yfS3Vq2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNWJ1bPVodW21aHVudW+1aHVriDVotWh1bbVodWs1aske2Uua2V5cy5sZW5ndGg+MT8i1bbVpdaAIjoiIn0uICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g1Y3VrdWh1awg1aLVodW21aHVrNWrICR7d2l0aERlZmluaXRlQXJ0aWNsZShlLm9yaWdpbil9LdW41oLVtGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNWN1a3VodWsINWh1oDVqtWl1oQgJHt3aXRoRGVmaW5pdGVBcnRpY2xlKGUub3JpZ2luKX0t1bjWgtW0YH19fTtjb25zdCBlcnJvciRzPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibWVtaWxpa2kifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJtZW1pbGlraSJ9LGFycmF5Ont1bml0OiJpdGVtIix2ZXJiOiJtZW1pbGlraSJ9LHNldDp7dW5pdDoiaXRlbSIsdmVyYjoibWVtaWxpa2kifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFuZ2dhbCBkYW4gd2FrdHUgZm9ybWF0IElTTyIsZGF0ZToidGFuZ2dhbCBmb3JtYXQgSVNPIix0aW1lOiJqYW0gZm9ybWF0IElTTyIsZHVyYXRpb246ImR1cmFzaSBmb3JtYXQgSVNPIixpcHY0OiJhbGFtYXQgSVB2NCIsaXB2NjoiYWxhbWF0IElQdjYiLGNpZHJ2NDoicmVudGFuZyBhbGFtYXQgSVB2NCIsY2lkcnY2OiJyZW50YW5nIGFsYW1hdCBJUHY2IixiYXNlNjQ6InN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoiYW5na2EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtofWA6YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7c30sIGRpdGVyaW1hICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBQaWxpaGFuIHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIHNhbGFoIHNhdHUgZGFyaSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IG1lbWlsaWtpICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbiJ9YDpgVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke2Uub3JpZ2luPz8idmFsdWUifSBtZW5qYWRpICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW1pbGlraSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW5qYWRpICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgZGltdWxhaSBkZW5nYW4gIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBiZXJha2hpciBkZW5nYW4gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIG1lbnllcnRha2FuICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIHNlc3VhaSBwb2xhICR7ZC5wYXR0ZXJufWA6YCR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fSB0aWRhayB2YWxpZGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBBbmdrYSB0aWRhayB2YWxpZDogaGFydXMga2VsaXBhdGFuIGRhcmkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGkgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLdW5jaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJJbnB1dCB0aWRhayB2YWxpZCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3Ikcj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoic3RhZmkiLHZlcmI6ImHDsCBoYWZhIn0sZmlsZTp7dW5pdDoiYsOmdGkiLHZlcmI6ImHDsCBoYWZhIn0sYXJyYXk6e3VuaXQ6ImhsdXRpIix2ZXJiOiJhw7AgaGFmYSJ9LHNldDp7dW5pdDoiaGx1dGkiLHZlcmI6ImHDsCBoYWZhIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZ2lsZGkiLGVtYWlsOiJuZXRmYW5nIix1cmw6InZlZnNsw7PDsCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGFnc2V0bmluZyBvZyB0w61taSIsZGF0ZToiSVNPIGRhZ3NldG5pbmciLHRpbWU6IklTTyB0w61taSIsZHVyYXRpb246IklTTyB0w61tYWxlbmdkIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyZW5ndXIiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyZW5ndXIiLGpzb25fc3RyaW5nOiJKU09OIHN0cmVuZ3VyIixlMTY0OiJFLjE2NCB0w7ZsdWdpbGRpIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lsZGkifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJuw7ptZXIiLGFycmF5OiJmeWxraSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7aH0gw75hciBzZW0gw6EgYcOwIHZlcmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9YDpgUmFuZ3QgZ2lsZGk6IMOew7ogc2zDs3N0IGlubiAke2h9IMO+YXIgc2VtIMOhIGHDsCB2ZXJhICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YFJhbmd0IGdpbGRpOiBnZXJ0IHLDocOwIGZ5cmlyICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDDk2dpbHQgdmFsOiBtw6EgdmVyYSBlaXR0IGFmIGVmdGlyZmFyYW5kaSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW4/PyJnaWxkaSJ9IGhhZmkgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iaGx1dGkifWA6YE9mIHN0w7NydDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbj8/ImdpbGRpIn0gc8OpICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gaGFmaSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gc8OpICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBieXJqYSDDoSAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZW5kYSDDoSAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBpbm5paGFsZGEgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBmeWxnamEgbXluc3RyaSAke2QucGF0dGVybn1gOmBSYW5ndCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gUsO2bmcgdGFsYTogdmVyw7B1ciBhw7AgdmVyYSBtYXJnZmVsZGkgYWYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gw5PDvmVra3QgJHtlLmtleXMubGVuZ3RoPjE/ImlyIGx5a2xhciI6InVyIGx5a2lsbCJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFJhbmd1ciBseWtpbGwgw60gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iUmFuZ3QgZ2lsZGkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gUmFuZ3QgZ2lsZGkgw60gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJHE9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcmF0dGVyaSIsdmVyYjoiYXZlcmUifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJhdmVyZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50aSIsdmVyYjoiYXZlcmUifSxzZXQ6e3VuaXQ6ImVsZW1lbnRpIix2ZXJiOiJhdmVyZSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiaW5kaXJpenpvIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGUgb3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6Im9yYSBJU08iLGR1cmF0aW9uOiJkdXJhdGEgSVNPIixpcHY0OiJpbmRpcml6em8gSVB2NCIsaXB2NjoiaW5kaXJpenpvIElQdjYiLGNpZHJ2NDoiaW50ZXJ2YWxsbyBJUHY0IixjaWRydjY6ImludGVydmFsbG8gSVB2NiIsYmFzZTY0OiJzdHJpbmdhIGNvZGlmaWNhdGEgaW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYXRhIGluIGJhc2U2NCIsanNvbl9zdHJpbmc6InN0cmluZ2EgSlNPTiIsZTE2NDoibnVtZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1lcm8iLGFycmF5OiJ2ZXR0b3JlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2dXRvICR7aH1gOmBJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHtzfSwgcmljZXZ1dG8gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBPcHppb25lIG5vbiB2YWxpZGE6IGF0dGVzbyB1bm8gdHJhICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRyb3BwbyBncmFuZGU6ICR7ZS5vcmlnaW4/PyJ2YWxvcmUifSBkZXZlIGF2ZXJlICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnRpIn1gOmBUcm9wcG8gZ3JhbmRlOiAke2Uub3JpZ2luPz8idmFsb3JlIn0gZGV2ZSBlc3NlcmUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm9wcG8gcGljY29sbzogJHtlLm9yaWdpbn0gZGV2ZSBhdmVyZSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgVHJvcHBvIHBpY2NvbG86ICR7ZS5vcmlnaW59IGRldmUgZXNzZXJlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBpbml6aWFyZSBjb24gIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIHRlcm1pbmFyZSBjb24gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5jbHVkZXJlICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgY29ycmlzcG9uZGVyZSBhbCBwYXR0ZXJuICR7ZC5wYXR0ZXJufWA6YEludmFsaWQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bWVybyBub24gdmFsaWRvOiBkZXZlIGVzc2VyZSB1biBtdWx0aXBsbyBkaSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGlhdiR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiZSJ9IG5vbiByaWNvbm9zY2l1dCR7ZS5rZXlzLmxlbmd0aD4xPyJlIjoiYSJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoaWF2ZSBub24gdmFsaWRhIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIklucHV0IG5vbiB2YWxpZG8iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3JlIG5vbiB2YWxpZG8gaW4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJHA9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IuaWh+WtlyIsdmVyYjoi44Gn44GC44KLIn0sZmlsZTp7dW5pdDoi44OQ44Kk44OIIix2ZXJiOiLjgafjgYLjgosifSxhcnJheTp7dW5pdDoi6KaB57SgIix2ZXJiOiLjgafjgYLjgosifSxzZXQ6e3VuaXQ6Iuimgee0oCIsdmVyYjoi44Gn44GC44KLIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi5YWl5Yqb5YCkIixlbWFpbDoi44Oh44O844Or44Ki44OJ44Os44K5Iix1cmw6IlVSTCIsZW1vamk6Iue1teaWh+WtlyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNP5pel5pmCIixkYXRlOiJJU0/ml6Xku5giLHRpbWU6IklTT+aZguWIuyIsZHVyYXRpb246IklTT+acn+mWkyIsaXB2NDoiSVB2NOOCouODieODrOOCuSIsaXB2NjoiSVB2NuOCouODieODrOOCuSIsY2lkcnY0OiJJUHY056+E5ZuyIixjaWRydjY6IklQdjbnr4Tlm7IiLGJhc2U2NDoiYmFzZTY044Ko44Oz44Kz44O844OJ5paH5a2X5YiXIixiYXNlNjR1cmw6ImJhc2U2NHVybOOCqOODs+OCs+ODvOODieaWh+Wtl+WIlyIsanNvbl9zdHJpbmc6IkpTT07mloflrZfliJciLGUxNjQ6IkUuMTY055Wq5Y+3Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi5YWl5Yqb5YCkIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi5pWw5YCkIixhcnJheToi6YWN5YiXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOeEoeWKueOBquWFpeWKmzogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtofeOBjOWFpeWKm+OBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBquWFpeWKmzogJHtzfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7aH3jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YOeEoeWKueOBquWFpeWKmzogJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBqumBuOaKnjogJHtqb2luVmFsdWVzKGUudmFsdWVzLCLjgIEiKX3jga7jgYTjgZrjgozjgYvjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/IuS7peS4i+OBp+OBguOCiyI6IuOCiOOCiuWwj+OBleOBhCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtkLnVuaXQ/PyLopoHntKAifSR7c33lv4XopoHjgYzjgYLjgorjgb7jgZlgOmDlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtzfeW/heimgeOBjOOBguOCiuOBvuOBmWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyLku6XkuIrjgafjgYLjgosiOiLjgojjgorlpKfjgY3jgYQiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g5bCP44GV44GZ44GO44KL5YCkOiAke2Uub3JpZ2lufeOBryR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtkLnVuaXR9JHtzfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWwj+OBleOBmeOBjuOCi+WApDogJHtlLm9yaWdpbn3jga8ke2UubWluaW11bS50b1N0cmluZygpfSR7c33lv4XopoHjgYzjgYLjgorjgb7jgZlgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DnhKHlirnjgarmloflrZfliJc6ICIke2QucHJlZml4fSLjgaflp4vjgb7jgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7ZC5zdWZmaXh9IuOBp+e1guOCj+OCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DnhKHlirnjgarmloflrZfliJc6ICIke2QuaW5jbHVkZXN9IuOCkuWQq+OCgOW/heimgeOBjOOBguOCiuOBvuOBmWA6InJlZ2V4Ij09PWQuZm9ybWF0P2DnhKHlirnjgarmloflrZfliJc6IOODkeOCv+ODvOODsyR7ZC5wYXR0ZXJufeOBq+S4gOiHtOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6YOeEoeWKueOBqiR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDnhKHlirnjgarmlbDlgKQ6ICR7ZS5kaXZpc29yfeOBruWAjeaVsOOBp+OBguOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOiqjeitmOOBleOCjOOBpuOBhOOBquOBhOOCreODvCR7ZS5rZXlzLmxlbmd0aD4xPyLnvqQiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn3lhoXjga7nhKHlirnjgarjgq3jg7xgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i54Sh5Yq544Gq5YWl5YqbIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq5YCkYH19fTtjb25zdCBlcnJvciRvPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLhg6Hhg5jhg5vhg5Hhg53hg5rhg50iLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxmaWxlOnt1bml0OiLhg5Hhg5Dhg5jhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxhcnJheTp7dW5pdDoi4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sc2V0Ont1bml0OiLhg5Thg5rhg5Thg5vhg5Thg5zhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AiLGVtYWlsOiLhg5Thg5ot4YOk4YOd4YOh4YOi4YOY4YOhIOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsdXJsOiJVUkwiLGVtb2ppOiLhg5Thg5vhg53hg6/hg5giLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuGDl+GDkOGDoOGDmOGDpuGDmC3hg5Phg6Dhg50iLGRhdGU6IuGDl+GDkOGDoOGDmOGDpuGDmCIsdGltZToi4YOT4YOg4YOdIixkdXJhdGlvbjoi4YOu4YOQ4YOc4YOS4YOg4YOr4YOa4YOY4YOV4YOd4YOR4YOQIixpcHY0OiJJUHY0IOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsaXB2NjoiSVB2NiDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLGNpZHJ2NDoiSVB2NCDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGNpZHJ2NjoiSVB2NiDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGJhc2U2NDoiYmFzZTY0LeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5giLGJhc2U2NHVybDoiYmFzZTY0dXJsLeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5giLGpzb25fc3RyaW5nOiJKU09OIOGDoeGDouGDoOGDmOGDnOGDkuGDmCIsZTE2NDoiRS4xNjQg4YOc4YOd4YOb4YOU4YOg4YOYIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi4YOg4YOY4YOq4YOu4YOV4YOYIixzdHJpbmc6IuGDoeGDouGDoOGDmOGDnOGDkuGDmCIsYm9vbGVhbjoi4YOR4YOj4YOa4YOU4YOQ4YOc4YOYIixmdW5jdGlvbjoi4YOk4YOj4YOc4YOl4YOq4YOY4YOQIixhcnJheToi4YOb4YOQ4YOh4YOY4YOV4YOYIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke2h9YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7c30sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Dhg6Dhg5jhg5Dhg5zhg6Lhg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmOGDkCDhg5Thg6Dhg5ct4YOU4YOg4YOX4YOYICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfS3hg5Phg5Dhg5xgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbj8/IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCJ9ICR7ZC52ZXJifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpg4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDk+GDmOGDk+GDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW4/PyLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AifSDhg5jhg6fhg53hg6EgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0gJHtkLnZlcmJ9ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0g4YOY4YOn4YOd4YOhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6zhg6fhg5Thg5Hhg53hg5Phg5Thg6EgIiR7ZC5wcmVmaXh9Ii3hg5jhg5dgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5g6IOGDo+GDnOGDk+GDkCDhg5vhg5fhg5Dhg5Xhg6Dhg5Phg5Thg5Hhg53hg5Phg5Thg6EgIiR7ZC5zdWZmaXh9Ii3hg5jhg5dgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoeGDouGDoOGDmOGDnOGDkuGDmDog4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSAiJHtkLmluY2x1ZGVzfSIt4YOhYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5g6IOGDo+GDnOGDk+GDkCDhg6jhg5Thg5Thg6Hhg5Dhg5Hhg5Dhg5vhg5Thg5Hhg53hg5Phg5Thg6Eg4YOo4YOQ4YOR4YOa4YOd4YOc4YOhICR7ZC5wYXR0ZXJufWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoOGDmOGDquGDruGDleGDmDog4YOj4YOc4YOT4YOQIOGDmOGDp+GDneGDoSAke2UuZGl2aXNvcn0t4YOY4YOhIOGDr+GDlOGDoOGDkOGDk+GDmGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGDo+GDquGDnOGDneGDkeGDmCDhg5Lhg5Dhg6Hhg5Dhg6bhg5Thg5Eke2Uua2V5cy5sZW5ndGg+MT8i4YOU4YOR4YOYIjoi4YOYIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDkuGDkOGDoeGDkOGDpuGDlOGDkeGDmCAke2Uub3JpZ2lufS3hg6jhg5hgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQICR7ZS5vcmlnaW59LeGDqOGDmGB9fX07Y29uc3QgZXJyb3Ikbj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi4Z6P4Z694Z6i4Z6A4Z+S4Z6f4Z6aIix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxmaWxlOnt1bml0OiLhnpThn4MiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LGFycmF5Ont1bml0OiLhnpLhnrbhno/hnrsiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LHNldDp7dW5pdDoi4Z6S4Z624Z6P4Z67Iix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpsiLGVtYWlsOiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpPhnqLhn4rhnrjhnpjhn4LhnpsiLHVybDoiVVJMIixlbW9qaToi4Z6f4Z6J4Z+S4Z6J4Z624Z6i4Z624Z6a4Z6Y4Z+S4Z6Y4Z6O4Z+NIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLhnoDhnrbhnpvhnpThnprhnrfhnoXhn5Lhnobhn4HhnpEg4Z6T4Z634Z6E4Z6Y4Z+J4Z+E4Z6EIElTTyIsZGF0ZToi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIElTTyIsdGltZToi4Z6Y4Z+J4Z+E4Z6EIElTTyIsZHVyYXRpb246IuGemuGemeGfiOGeluGfgeGemyBJU08iLGlwdjQ6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0IixpcHY2OiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsY2lkcnY0OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NCIsY2lkcnY2OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsYmFzZTY0OiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnqLhn4rhnrfhnoDhnrzhnoogYmFzZTY0IixiYXNlNjR1cmw6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGeouGfiuGet+GegOGevOGeiiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnpogSlNPTiIsZTE2NDoi4Z6b4Z+B4Z6BIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi4Z6b4Z+B4Z6BIixhcnJheToi4Z6i4Z624Z6a4Z+BIChBcnJheSkiLG51bGw6IuGeguGfkuGemOGetuGek+Gej+GemOGfkuGem+GfgyAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7aH1gOmDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7c30g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOGeh+GemOGfkuGemuGevuGen+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhnofhnrbhnpjhnr3hnpnhnoDhn5LhnpPhnrvhnoThnoXhn4bhno7hn4ThnpggJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/IuGekuGetuGej+GeuyJ9YDpg4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g4Z6P4Z684Z6F4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2lufSAke3N9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbn0gJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoXhnrbhnpThn4vhnpXhn5Lhno/hnr7hnpjhnorhn4ThnpkgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGelOGeieGfkuGeheGelOGfi+GeiuGfhOGemSAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnpjhnrbhnpMgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnpXhn5LhnoLhnrzhnpXhn5LhnoLhnoThnpPhnrnhnoThnpHhnpjhn5LhnprhnoThn4vhnorhn4LhnpvhnpThnrbhnpPhnoDhn4bhno7hno/hn4sgJHtkLnBhdHRlcm59YDpg4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDhnpvhn4HhnoHhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6P4Z+C4Z6H4Z624Z6W4Z6g4Z674Z6C4Z674Z6O4Z6T4Z+DICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGemuGegOGeg+GevuGeieGen+GfhOGemOGet+Gek+Gen+GfkuGeguGetuGem+Gfi+GfliAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOGen+GfhOGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGek+GfheGegOGfkuGek+Geu+GehCAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiBrbSgpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRuKCl9fWNvbnN0IGVycm9yJG09KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IuusuOyekCIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6IuuwlOydtO2KuCIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiLqsJwiLHZlcmI6InRvIGhhdmUifSxzZXQ6e3VuaXQ6IuqwnCIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6IuyeheugpSIsZW1haWw6IuydtOuplOydvCDso7zshowiLHVybDoiVVJMIixlbW9qaToi7J2066qo7KeAIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g64Kg7Kec7Iuc6rCEIixkYXRlOiJJU08g64Kg7KecIix0aW1lOiJJU08g7Iuc6rCEIixkdXJhdGlvbjoiSVNPIOq4sOqwhCIsaXB2NDoiSVB2NCDso7zshowiLGlwdjY6IklQdjYg7KO87IaMIixjaWRydjQ6IklQdjQg67KU7JyEIixjaWRydjY6IklQdjYg67KU7JyEIixiYXNlNjQ6ImJhc2U2NCDsnbjsvZTrlKkg66y47J6Q7Je0IixiYXNlNjR1cmw6ImJhc2U2NHVybCDsnbjsvZTrlKkg66y47J6Q7Je0Iixqc29uX3N0cmluZzoiSlNPTiDrrLjsnpDsl7QiLGUxNjQ6IkUuMTY0IOuyiO2YuCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuyeheugpSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOyemOuqu+uQnCDsnoXroKU6IOyYiOyDgSDtg4DsnoXsnYAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDrsJvsnYAg7YOA7J6F7J2AICR7aH3snoXri4jri6RgOmDsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AICR7c30sIOuwm+ydgCDtg4DsnoXsnYAgJHtofeyeheuLiOuLpGB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g7J6Y66q765CcIOyeheugpTog6rCS7J2AICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX0g7J207Ja07JW8IO2VqeuLiOuLpGA6YOyemOuqu+uQnCDsmLXshZg6ICR7am9pblZhbHVlcyhlLnZhbHVlcywi65iQ64qUICIpfSDspJEg7ZWY64KY7Jes7JW8IO2VqeuLiOuLpGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i7J207ZWYIjoi66+466eMIixkPSLrr7jrp4wiPT09cz8i7J207Ja07JW8IO2VqeuLiOuLpCI6IuyXrOyVvCDtlanri4jri6QiLG09Z2V0U2l6aW5nKGUub3JpZ2luKSxoPW0/LnVuaXQ/PyLsmpTshowiO3JldHVybiBtP2Ake2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2h9ICR7c30ke2R9YDpgJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDtgb3ri4jri6Q6ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c30ke2R9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/IuydtOyDgSI6Iuy0iOqzvCIsZD0i7J207IOBIj09PXM/IuydtOyWtOyVvCDtlanri4jri6QiOiLsl6zslbwg7ZWp64uI64ukIixtPWdldFNpemluZyhlLm9yaWdpbiksaD1tPy51bml0Pz8i7JqU7IaMIjtyZXR1cm4gbT9gJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDsnpHsirXri4jri6Q6ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtofSAke3N9JHtkfWA6YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7J6R7Iq164uI64ukOiAke2UubWluaW11bS50b1N0cmluZygpfSAke3N9JHtkfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2QucHJlZml4fSIo7Jy8KeuhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtkLnN1ZmZpeH0iKOycvCnroZwg64Gd64KY7JW8IO2VqeuLiOuLpGA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtkLmluY2x1ZGVzfSLsnYQo66W8KSDtj6ztlajtlbTslbwg7ZWp64uI64ukYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOyemOuqu+uQnCDrrLjsnpDsl7Q6IOygleq3nOyLnSAke2QucGF0dGVybn0g7Yyo7YS06rO8IOydvOy5mO2VtOyVvCDtlanri4jri6RgOmDsnpjrqrvrkJwgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOyemOuqu+uQnCDsiKvsnpA6ICR7ZS5kaXZpc29yfeydmCDrsLDsiJjsl6zslbwg7ZWp64uI64ukYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g7J247Iud7ZWgIOyImCDsl4bripQg7YKkOiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOyemOuqu+uQnCDtgqQ6ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g7J6Y66q765CcIOqwkjogJHtlLm9yaWdpbn1gfX19O2NvbnN0IGNhcGl0YWxpemVGaXJzdENoYXJhY3Rlcj1lPT5lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7ZnVuY3Rpb24gZ2V0VW5pdFR5cGVGcm9tTnVtYmVyKGUpe2NvbnN0IHM9TWF0aC5hYnMoZSksZD1zJTEwLG09cyUxMDA7cmV0dXJuIG0+PTExJiZtPD0xOXx8MD09PWQ/Im1hbnkiOjE9PT1kPyJvbmUiOiJmZXcifWNvbnN0IGVycm9yJGw9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6e29uZToic2ltYm9saXMiLGZldzoic2ltYm9saWFpIixtYW55OiJzaW1ib2xpxbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgaWxnZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIHRydW1wZXNuxJcga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIHRydW1wZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIGlsZ2VzbsSXIGthaXAifX19LGZpbGU6e3VuaXQ6e29uZToiYmFpdGFzIixmZXc6ImJhaXRhaSIsbWFueToiYmFpdMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIGRpZGVzbmlzIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBtYcW+ZXNuaXMga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIG1hxb5lc25pcyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgZGlkZXNuaXMga2FpcCJ9fX0sYXJyYXk6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fSxzZXQ6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMsZCxtLGgpe2NvbnN0IGc9ZVtzXT8/bnVsbDtyZXR1cm4gbnVsbD09PWc/Zzp7dW5pdDpnLnVuaXRbZF0sdmVyYjpnLnZlcmJbaF1bbT8iaW5jbHVzaXZlIjoibm90SW5jbHVzaXZlIl19fWNvbnN0IHM9e3JlZ2V4OiLEr3Zlc3RpcyIsZW1haWw6ImVsLiBwYcWhdG8gYWRyZXNhcyIsdXJsOiJVUkwiLGVtb2ppOiJqYXVzdHVrYXMiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRhIGlyIGxhaWthcyIsZGF0ZToiSVNPIGRhdGEiLHRpbWU6IklTTyBsYWlrYXMiLGR1cmF0aW9uOiJJU08gdHJ1a23ElyIsaXB2NDoiSVB2NCBhZHJlc2FzIixpcHY2OiJJUHY2IGFkcmVzYXMiLGNpZHJ2NDoiSVB2NCB0aW5rbG8gcHJlZmlrc2FzIChDSURSKSIsY2lkcnY2OiJJUHY2IHRpbmtsbyBwcmVmaWtzYXMgKENJRFIpIixiYXNlNjQ6ImJhc2U2NCB1xb5rb2R1b3RhIGVpbHV0xJciLGJhc2U2NHVybDoiYmFzZTY0dXJsIHXFvmtvZHVvdGEgZWlsdXTElyIsanNvbl9zdHJpbmc6IkpTT04gZWlsdXTElyIsZTE2NDoiRS4xNjQgbnVtZXJpcyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSvdmVzdGlzIn0sZD17bmFuOiJOYU4iLG51bWJlcjoic2thacSNaXVzIixiaWdpbnQ6InN2ZWlrYXNpcyBza2FpxI1pdXMiLHN0cmluZzoiZWlsdXTElyIsYm9vbGVhbjoibG9naW7ElyByZWlrxaFtxJciLHVuZGVmaW5lZDoibmVhcGlicsSXxb50YSByZWlrxaFtxJciLGZ1bmN0aW9uOiJmdW5rY2lqYSIsc3ltYm9sOiJzaW1ib2xpcyIsYXJyYXk6Im1hc3l2YXMiLG9iamVjdDoib2JqZWt0YXMiLG51bGw6Im51bGluxJcgcmVpa8WhbcSXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdhdXRhcyB0aXBhcyAke2h9LCBvIHRpa8SXdGFzaSAtIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfWA6YEdhdXRhcyB0aXBhcyAke2h9LCBvIHRpa8SXdGFzaSAtICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YFByaXZhbG8gYsWrdGkgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YFByaXZhbG8gYsWrdGkgdmllbmFzIGnFoSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX0gcGFzaXJpbmtpbcWzYDtjYXNlInRvb19iaWciOntjb25zdCBzPWRbZS5vcmlnaW5dPz9lLm9yaWdpbixtPWdldFNpemluZyhlLm9yaWdpbixnZXRVbml0VHlwZUZyb21OdW1iZXIoTnVtYmVyKGUubWF4aW11bSkpLGUuaW5jbHVzaXZlPz8hMSwic21hbGxlciIpO2lmKG0/LnZlcmIpcmV0dXJuYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKHM/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7bS52ZXJifSAke2UubWF4aW11bS50b1N0cmluZygpfSAke20udW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBoPWUuaW5jbHVzaXZlPyJuZSBkaWRlc25pcyBrYWlwIjoibWHFvmVzbmlzIGthaXAiO3JldHVybmAke2NhcGl0YWxpemVGaXJzdENoYXJhY3RlcihzPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGLFq3RpICR7aH0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttPy51bml0fWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWRbZS5vcmlnaW5dPz9lLm9yaWdpbixtPWdldFNpemluZyhlLm9yaWdpbixnZXRVbml0VHlwZUZyb21OdW1iZXIoTnVtYmVyKGUubWluaW11bSkpLGUuaW5jbHVzaXZlPz8hMSwiYmlnZ2VyIik7aWYobT8udmVyYilyZXR1cm5gJHtjYXBpdGFsaXplRmlyc3RDaGFyYWN0ZXIocz8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gJHttLnZlcmJ9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bS51bml0Pz8iZWxlbWVudMWzIn1gO2NvbnN0IGg9ZS5pbmNsdXNpdmU/Im5lIG1hxb5lc25pcyBrYWlwIjoiZGlkZXNuaXMga2FpcCI7cmV0dXJuYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKHM/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtofSAke2UubWluaW11bS50b1N0cmluZygpfSAke20/LnVuaXR9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gRWlsdXTElyBwcml2YWxvIHByYXNpZMSXdGkgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gRWlsdXTElyBwcml2YWxvIHBhc2liYWlndGkgIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BFaWx1dMSXIHByaXZhbG8gxK90cmF1a3RpICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BFaWx1dMSXIHByaXZhbG8gYXRpdGlrdGkgJHtkLnBhdHRlcm59YDpgTmV0ZWlzaW5nYXMgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFNrYWnEjWl1cyBwcml2YWxvIGLFq3RpICR7ZS5kaXZpc29yfSBrYXJ0b3RpbmlzLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lYXRwYcW+aW50JHtlLmtleXMubGVuZ3RoPjE/ImkiOiJhcyJ9IHJha3Qke2Uua2V5cy5sZW5ndGg+MT8iYWkiOiJhcyJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuIlJhc3RhcyBrbGFpZGluZ2FzIHJha3RhcyI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJLbGFpZGluZ2EgxK92ZXN0aXMiO2Nhc2UiaW52YWxpZF9lbGVtZW50Ijp7Y29uc3Qgcz1kW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKHM/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkga2xhaWRpbmfEhSDEr3Zlc3TEr2B9fX19O2NvbnN0IGVycm9yJGs9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ItC30L3QsNGG0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGZpbGU6e3VuaXQ6ItCx0LDRmNGC0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGFycmF5Ont1bml0OiLRgdGC0LDQstC60LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LHNldDp7dW5pdDoi0YHRgtCw0LLQutC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLQstC90LXRgSIsZW1haWw6ItCw0LTRgNC10YHQsCDQvdCwINC1LdC/0L7RiNGC0LAiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0Z/QuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtGD0Lwg0Lgg0LLRgNC10LzQtSIsZGF0ZToiSVNPINC00LDRgtGD0LwiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINCy0YDQtdC80LXRgtGA0LDQtdGa0LUiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgdCwIixpcHY2OiJJUHY2INCw0LTRgNC10YHQsCIsY2lkcnY0OiJJUHY0INC+0L/RgdC10LMiLGNpZHJ2NjoiSVB2NiDQvtC/0YHQtdCzIixiYXNlNjQ6ImJhc2U2NC3QtdC90LrQvtC00LjRgNCw0L3QsCDQvdC40LfQsCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LAiLGpzb25fc3RyaW5nOiJKU09OINC90LjQt9CwIixlMTY0OiJFLjE2NCDQsdGA0L7RmCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0L3QtdGBIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi0LHRgNC+0ZgiLGFycmF5OiLQvdC40LfQsCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQk9GA0LXRiNC10L0g0LLQvdC10YE6INGB0LUg0L7Rh9C10LrRg9Cy0LAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9GA0LjQvNC10L3QviAke2h9YDpg0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwICR7c30sINC/0YDQuNC80LXQvdC+ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDQk9GA0LXRiNCw0L3QsCDQvtC/0YbQuNGY0LA6INGB0LUg0L7Rh9C10LrRg9Cy0LAg0LXQtNC90LAgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW4/PyLQstGA0LXQtNC90L7RgdGC0LAifSDQtNCwINC40LzQsCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLQtdC70LXQvNC10L3RgtC4In1gOmDQn9GA0LXQvNC90L7Qs9GDINCz0L7Qu9C10Lw6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbj8/ItCy0YDQtdC00L3QvtGB0YLQsCJ9INC00LAg0LHQuNC00LUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2lufSDQtNCwINC40LzQsCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpg0J/RgNC10LzQvdC+0LPRgyDQvNCw0Ls6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbn0g0LTQsCDQsdC40LTQtSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LfQsNC/0L7Rh9C90YPQstCwINGB0L4gIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQstGA0YjRg9Cy0LAg0YHQviAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQstC60LvRg9GH0YPQstCwICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0L7QtNCz0L7QsNGA0LAg0L3QsCDQv9Cw0YLQtdGA0L3QvtGCICR7ZC5wYXR0ZXJufWA6YEludmFsaWQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCT0YDQtdGI0LXQvSDQsdGA0L7RmDog0LzQvtGA0LAg0LTQsCDQsdC40LTQtSDQtNC10LvQuNCyINGB0L4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/ItCd0LXQv9GA0LXQv9C+0LfQvdCw0LXQvdC4INC60LvRg9GH0LXQstC4Ijoi0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC9INC60LvRg9GHIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0JPRgNC10YjQtdC9INC60LvRg9GHINCy0L4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0JPRgNC10YjQtdC9INCy0L3QtdGBIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCT0YDQtdGI0L3QsCDQstGA0LXQtNC90L7RgdGCINCy0L4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJGo9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImFrc2FyYSIsdmVyYjoibWVtcHVueWFpIn0sZmlsZTp7dW5pdDoiYmFpdCIsdmVyYjoibWVtcHVueWFpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbiIsdmVyYjoibWVtcHVueWFpIn0sc2V0Ont1bml0OiJlbGVtZW4iLHZlcmI6Im1lbXB1bnlhaSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiYWxhbWF0IGUtbWVsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJ0YXJpa2ggbWFzYSBJU08iLGRhdGU6InRhcmlraCBJU08iLHRpbWU6Im1hc2EgSVNPIixkdXJhdGlvbjoidGVtcG9oIElTTyIsaXB2NDoiYWxhbWF0IElQdjQiLGlwdjY6ImFsYW1hdCBJUHY2IixjaWRydjQ6Imp1bGF0IElQdjQiLGNpZHJ2NjoianVsYXQgSVB2NiIsYmFzZTY0OiJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0IixiYXNlNjR1cmw6InN0cmluZyBkaWtvZGthbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoibm9tYm9yIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJub21ib3IifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRpdGVyaW1hICR7aH1gOmBJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thICR7c30sIGRpdGVyaW1hICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YFBpbGloYW4gdGlkYWsgc2FoOiBkaWphbmdrYSBzYWxhaCBzYXR1IGRhcmlwYWRhICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9ICR7ZC52ZXJifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW4ifWA6YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9IGFkYWxhaCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7ZS5vcmlnaW59ICR7ZC52ZXJifSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtlLm9yaWdpbn0gYWRhbGFoICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcm11bGEgZGVuZ2FuICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcmFraGlyIGRlbmdhbiAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIG1lbmdhbmR1bmdpICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBzZXBhZGFuIGRlbmdhbiBjb3JhayAke2QucGF0dGVybn1gOmAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH0gdGlkYWsgc2FoYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJvciB0aWRhayBzYWg6IHBlcmx1IGdhbmRhYW4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGk6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS3VuY2kgdGlkYWsgc2FoIGRhbGFtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIklucHV0IHRpZGFrIHNhaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJGk9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6InRla2VucyIsdmVyYjoiaGVlZnQifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGVlZnQifSxhcnJheTp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6Imludm9lciIsZW1haWw6ImVtYWlsYWRyZXMiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBlbiB0aWpkIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyB0aWpkIixkdXJhdGlvbjoiSVNPIGR1dXIiLGlwdjQ6IklQdjQtYWRyZXMiLGlwdjY6IklQdjYtYWRyZXMiLGNpZHJ2NDoiSVB2NC1iZXJlaWsiLGNpZHJ2NjoiSVB2Ni1iZXJlaWsiLGJhc2U2NDoiYmFzZTY0LWdlY29kZWVyZGUgdGVrc3QiLGJhc2U2NHVybDoiYmFzZTY0IFVSTC1nZWNvZGVlcmRlIHRla3N0Iixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Imludm9lciJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ImdldGFsIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb250dmluZyAke2h9YDpgT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtzfSwgb250dmluZyAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgT25nZWxkaWdlIG9wdGllOiB2ZXJ3YWNodCDDqcOpbiB2YW4gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKSxtPSJkYXRlIj09PWUub3JpZ2luPyJsYWF0Ijoic3RyaW5nIj09PWUub3JpZ2luPyJsYW5nIjoiZ3Jvb3QiO3JldHVybiBkP2BUZSAke219OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbj8/IndhYXJkZSJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnRlbiJ9ICR7ZC52ZXJifWA6YFRlICR7bX06IHZlcndhY2h0IGRhdCAke2Uub3JpZ2luPz8id2FhcmRlIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pLG09ImRhdGUiPT09ZS5vcmlnaW4/InZyb2VnIjoic3RyaW5nIj09PWUub3JpZ2luPyJrb3J0Ijoia2xlaW4iO3JldHVybiBkP2BUZSAke219OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fSAke2QudmVyYn1gOmBUZSAke219OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG1ldCAiJHtkLnByZWZpeH0iIGJlZ2lubmVuYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3AgIiR7ZC5zdWZmaXh9IiBlaW5kaWdlbmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgIiR7ZC5pbmNsdWRlc30iIGJldmF0dGVuYDoicmVnZXgiPT09ZC5mb3JtYXQ/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvdmVyZWVua29tZW4gbWV0IHBhdHJvb24gJHtkLnBhdHRlcm59YDpgT25nZWxkaWc6ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBPbmdlbGRpZyBnZXRhbDogbW9ldCBlZW4gdmVlbHZvdWQgdmFuICR7ZS5kaXZpc29yfSB6aWpuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gT25iZWtlbmRlIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gT25nZWxkaWdlIGtleSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJPbmdlbGRpZ2UgaW52b2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE9uZ2VsZGlnZSB3YWFyZGUgaW4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJGg9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6InRlZ24iLHZlcmI6IsOlIGhhIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6IsOlIGhhIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiw6UgaW5uZWhvbGRlIn0sc2V0Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6IsOlIGlubmVob2xkZSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiZS1wb3N0YWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdG8tIG9nIGtsb2trZXNsZXR0IixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLWtsb2trZXNsZXR0IixkdXJhdGlvbjoiSVNPLXZhcmlnaGV0IixpcHY0OiJJUHY0LW9tcsOlZGUiLGlwdjY6IklQdjYtb21yw6VkZSIsY2lkcnY0OiJJUHY0LXNwZWt0ZXIiLGNpZHJ2NjoiSVB2Ni1zcGVrdGVyIixiYXNlNjQ6ImJhc2U2NC1lbmtvZGV0IHN0cmVuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJ0YWxsIixhcnJheToibGlzdGUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmlrayAke2h9YDpgVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0ICR7c30sIGZpa2sgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gVWd5bGRpZyB2ZXJkaTogZm9ydmVudGV0ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlnIHZhbGc6IGZvcnZlbnRldCBlbiBhdiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRpbCDDpSBoYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50ZXIifWA6YEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdGlsIMOlIGhhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gRm9yIGxpdGUobik6IGZvcnZlbnRldCAke2Uub3JpZ2lufSB0aWwgw6UgaGEgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbn0gdGlsIMOlIGhhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFVneWxkaWcgc3RyZW5nOiBtw6Ugc3RhcnRlIG1lZCAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BVZ3lsZGlnIHN0cmVuZzogbcOlIGVuZGUgbWVkICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gVWd5bGRpZyBzdHJlbmc6IG3DpSBpbm5laG9sZGUgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YFVneWxkaWcgc3RyZW5nOiBtw6UgbWF0Y2hlIG3DuG5zdGVyZXQgJHtkLnBhdHRlcm59YDpgVWd5bGRpZyAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZyB0YWxsOiBtw6UgdsOmcmUgZXQgbXVsdGlwbHVtIGF2ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2plbnRlIG7DuGtsZXIiOiJVa2plbnQgbsO4a2tlbCJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4a2tlbCBpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIlVneWxkaWcgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2ZXJkaSBpICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRnPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJoYXJmIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6InVuc3VyIix2ZXJiOiJvbG1hbMSxZMSxciJ9LHNldDp7dW5pdDoidW5zdXIiLHZlcmI6Im9sbWFsxLFkxLFyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZ2lyZW4iLGVtYWlsOiJlcG9zdGFnw6JoIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaGVuZ8OibcSxIixkYXRlOiJJU08gdGFyaWhpIix0aW1lOiJJU08gemFtYW7EsSIsZHVyYXRpb246IklTTyBtw7xkZGV0aSIsaXB2NDoiSVB2NCBuacWfw6JuxLEiLGlwdjY6IklQdjYgbmnFn8OibsSxIixjaWRydjQ6IklQdjQgbWVuemlsaSIsY2lkcnY2OiJJUHY2IG1lbnppbGkiLGJhc2U2NDoiYmFzZTY0LcWfaWZyZWxpIG1ldGluIixiYXNlNjR1cmw6ImJhc2U2NHVybC3Fn2lmcmVsaSBtZXRpbiIsanNvbl9zdHJpbmc6IkpTT04gbWV0aW4iLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lyZW4ifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1hcmEiLGFycmF5OiJzYWYiLG51bGw6ImdheWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRsOic2l0IGdpcmVuOiB1bXVsYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhbMSxbmFuICR7aH1gOmBGw6JzaXQgZ2lyZW46IHVtdWxhbiAke3N9LCBhbMSxbmFuICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEbDonNpdCBnaXJlbjogdW11bGFuICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBGw6JzaXQgdGVyY2loOiBtw7t0ZWJlcmxlciAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudHMifSBzYWhpcCBvbG1hbMSxeWTEsS5gOmBGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gRmF6bGEga8O8w6fDvGs6ICR7ZS5vcmlnaW59LCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGvDvMOnw7xrOiAke2Uub3JpZ2lufSwgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YEbDonNpdCBtZXRpbjogIiR7ZC5wcmVmaXh9IiBpbGUgYmHFn2xhbWFsxLEuYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BGw6JzaXQgbWV0aW46ICIke2Quc3VmZml4fSIgaWxlIGJpdG1lbGkuYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YEbDonNpdCBtZXRpbjogIiR7ZC5pbmNsdWRlc30iIGlodGl2w6IgZXRtZWxpLmA6InJlZ2V4Ij09PWQuZm9ybWF0P2BGw6JzaXQgbWV0aW46ICR7ZC5wYXR0ZXJufSBuYWvFn8SxbmEgdXltYWzEsS5gOmBGw6JzaXQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEbDonNpdCBzYXnEsTogJHtlLmRpdmlzb3J9IGthdMSxIG9sbWFsxLF5ZMSxLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbiB0YW7EsW5tYXlhbiBhbmFodGFyIHZhci5gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkdpcmVuIHRhbsSxbmFtYWTEsS4iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4ga8SxeW1ldCB2YXIuYDtkZWZhdWx0OnJldHVybiJLxLF5bWV0IHRhbsSxbmFtYWTEsS4ifX19O2NvbnN0IGVycm9yJGY9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LGZpbGU6e3VuaXQ6Itio2KfbjNm82LMiLHZlcmI6ItmI2YTYsdmKIn0sYXJyYXk6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LHNldDp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi2YjYsdmI2K/ZiiIsZW1haWw6Itio2LHbjNqa2YbYp9mE24zaqSIsdXJsOiLbjNmIINii2LEg2KfZhCIsZW1vamk6Itin24zZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2YbbjNm82Ycg2KfZiCDZiNiu2KoiLGRhdGU6ItmG25DZvNmHIix0aW1lOiLZiNiu2KoiLGR1cmF0aW9uOiLZhdmI2K/ZhyIsaXB2NDoi2K8gSVB2NCDZvtiq2YciLGlwdjY6ItivIElQdjYg2b7YqtmHIixjaWRydjQ6ItivIElQdjQg2LPYp9it2YciLGNpZHJ2Njoi2K8gSVB2NiDYs9in2K3ZhyIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDZhdiq2YYiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2YXYqtmGIixqc29uX3N0cmluZzoiSlNPTiDZhdiq2YYiLGUxNjQ6ItivIEUuMTY0INi02YXbkNix2YciLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9mKIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KfYsduQIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZiNin24wsINmF2qvYsSAke2h9INiq2LHZhNin2LPZhyDYtNmIYDpg2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gJHtzfSDZiNin24wsINmF2qvYsSAke2h9INiq2LHZhNin2LPZhyDYtNmIYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9INmI2KfbjGA6YNmG2KfYs9mFINin2YbYqtiu2KfYqDog2KjYp9uM2K8g24zZiCDZhNmHICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfSDahdiu2Ycg2YjYp9uMYDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLYudmG2LXYsdmI2YbZhyJ9INmI2YTYsdmKYDpg2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2YjZimB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g2onbjNixINqp2YjahtmG24w6ICR7ZS5vcmlnaW59INio2KfbjNivICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH0g2YjZhNix2YpgOmDaiduM2LEg2qnZiNqG2YbbjDogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INmI2YpgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2QucHJlZml4fSIg2LPYsdmHINm+24zZhCDYtNmKYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2Quc3VmZml4fSIg2LPYsdmHINm+2KfbjCDYqtmHINmI2LHYs9mK2pbZimA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivICIke2QuaW5jbHVkZXN9IiDZiNmE2LHZimA6InJlZ2V4Ij09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICR7ZC5wYXR0ZXJufSDYs9ix2Ycg2YXYt9in2KjZgtiqINmI2YTYsdmKYDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfYs9mFINiv24xgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2YbYp9iz2YUg2LnYr9ivOiDYqNin24zYryDYryAke2UuZGl2aXNvcn0g2YXYttix2Kgg2YjZimA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNmG2KfYs9mFICR7ZS5rZXlzLmxlbmd0aD4xPyLaqdmE24zaidmI2YbZhyI6Itqp2YTbjNqJIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2YbYp9iz2YUg2qnZhNuM2okg2b7ZhyAke2Uub3JpZ2lufSDaqduQYDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuItmG2KfYs9mF2Ycg2YjYsdmI2K/ZiiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhtin2LPZhSDYudmG2LXYsSDZvtmHICR7ZS5vcmlnaW59INqp25BgfX19O2NvbnN0IGVycm9yJGU9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6InpuYWvDs3ciLHZlcmI6Im1pZcSHIn0sZmlsZTp7dW5pdDoiYmFqdMOzdyIsdmVyYjoibWllxIcifSxhcnJheTp7dW5pdDoiZWxlbWVudMOzdyIsdmVyYjoibWllxIcifSxzZXQ6e3VuaXQ6ImVsZW1lbnTDs3ciLHZlcmI6Im1pZcSHIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoid3lyYcW8ZW5pZSIsZW1haWw6ImFkcmVzIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgZ29kemluYSB3IGZvcm1hY2llIElTTyIsZGF0ZToiZGF0YSB3IGZvcm1hY2llIElTTyIsdGltZToiZ29kemluYSB3IGZvcm1hY2llIElTTyIsZHVyYXRpb246ImN6YXMgdHJ3YW5pYSBJU08iLGlwdjQ6ImFkcmVzIElQdjQiLGlwdjY6ImFkcmVzIElQdjYiLGNpZHJ2NDoiemFrcmVzIElQdjQiLGNpZHJ2NjoiemFrcmVzIElQdjYiLGJhc2U2NDoiY2nEhWcgem5ha8OzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0IixiYXNlNjR1cmw6ImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNpxIVnIHpuYWvDs3cgdyBmb3JtYWNpZSBKU09OIixlMTY0OiJsaWN6YmEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ3ZWrFm2NpZSJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ImxpY3piYSIsYXJyYXk6InRhYmxpY2EifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb3RyenltYW5vICR7aH1gOmBOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtzfSwgb3RyenltYW5vICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgTmllcHJhd2lkxYJvd2Egb3BjamE6IG9jemVraXdhbm8gamVkbmVqIHogd2FydG/Fm2NpICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFphIGR1xbxhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgZHXFvCh5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFphIG1hxYJhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgbWHFgih5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphY3p5bmHEhyBzacSZIG9kICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kga2/FhGN6ecSHIHNpxJkgbmEgIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphd2llcmHEhyAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSBvZHBvd2lhZGHEhyB3em9yY293aSAke2QucGF0dGVybn1gOmBOaWVwcmF3aWTFgm93KHkvYS9lKSAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmllcHJhd2lkxYJvd2EgbGljemJhOiBtdXNpIGJ5xIcgd2llbG9rcm90bm/Fm2NpxIUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmllcm96cG96bmFuZSBrbHVjemUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5pZXByYXdpZMWCb3d5IGtsdWN6IHcgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pZXByYXdpZMWCb3dhIHdhcnRvxZvEhyB3ICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRkPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmVzIix2ZXJiOiJ0ZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVyIn0sYXJyYXk6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifSxzZXQ6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJwYWRyw6NvIixlbWFpbDoiZW5kZXJlw6dvIGRlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhw6fDo28gSVNPIixpcHY0OiJlbmRlcmXDp28gSVB2NCIsaXB2NjoiZW5kZXJlw6dvIElQdjYiLGNpZHJ2NDoiZmFpeGEgZGUgSVB2NCIsY2lkcnY2OiJmYWl4YSBkZSBJUHY2IixiYXNlNjQ6InRleHRvIGNvZGlmaWNhZG8gZW0gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVtIGJhc2U2NCIsanNvbl9zdHJpbmc6InRleHRvIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sZD17bmFuOiJOYU4iLG51bWJlcjoibsO6bWVybyIsbnVsbDoibnVsbyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZWNlYmlkbyAke2h9YDpgVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvICR7c30sIHJlY2ViaWRvICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEVudHJhZGEgaW52w6FsaWRhOiBlc3BlcmFkbyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgT3DDp8OjbyBpbnbDoWxpZGE6IGVzcGVyYWRhIHVtYSBkYXMgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbj8/InZhbG9yIn0gdGl2ZXNzZSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50b3MifWA6YE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW4/PyJ2YWxvciJ9IGZvc3NlICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW59IHRpdmVzc2UgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2lufSBmb3NzZSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BUZXh0byBpbnbDoWxpZG86IGRldmUgY29tZcOnYXIgY29tICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFRleHRvIGludsOhbGlkbzogZGV2ZSB0ZXJtaW5hciBjb20gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BUZXh0byBpbnbDoWxpZG86IGRldmUgaW5jbHVpciAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGNvcnJlc3BvbmRlciBhbyBwYWRyw6NvICR7ZC5wYXR0ZXJufWA6YCR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnbDoWxpZG9gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRldmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29uaGVjaWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGF2ZSBpbnbDoWxpZGEgZW0gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yIGludsOhbGlkbyBlbSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iQ2FtcG8gaW52w6FsaWRvIn19fTtmdW5jdGlvbiBnZXRSdXNzaWFuUGx1cmFsKGUscyxkLG0pe2NvbnN0IGg9TWF0aC5hYnMoZSksZz1oJTEwLHg9aCUxMDA7cmV0dXJuIHg+PTExJiZ4PD0xOT9tOjE9PT1nP3M6Zz49MiYmZzw9ND9kOm19Y29uc3QgZXJyb3IkYz0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDp7b25lOiLRgdC40LzQstC+0LsiLGZldzoi0YHQuNC80LLQvtC70LAiLG1hbnk6ItGB0LjQvNCy0L7Qu9C+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sZmlsZTp7dW5pdDp7b25lOiLQsdCw0LnRgiIsZmV3OiLQsdCw0LnRgtCwIixtYW55OiLQsdCw0LnRgiJ9LHZlcmI6ItC40LzQtdGC0YwifSxhcnJheTp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtCwIixtYW55OiLRjdC70LXQvNC10L3RgtC+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sc2V0Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0LAiLG1hbnk6ItGN0LvQtdC80LXQvdGC0L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLQstCy0L7QtCIsZW1haWw6ImVtYWlsINCw0LTRgNC10YEiLHVybDoiVVJMIixlbW9qaToi0Y3QvNC+0LTQt9C4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0LAg0Lgg0LLRgNC10LzRjyIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0LLRgNC10LzRjyIsZHVyYXRpb246IklTTyDQtNC70LjRgtC10LvRjNC90L7RgdGC0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgSIsaXB2NjoiSVB2NiDQsNC00YDQtdGBIixjaWRydjQ6IklQdjQg0LTQuNCw0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00LjQsNC/0LDQt9C+0L0iLGJhc2U2NDoi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NCIsYmFzZTY0dXJsOiLRgdGC0YDQvtC60LAg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiSlNPTiDRgdGC0YDQvtC60LAiLGUxNjQ6ItC90L7QvNC10YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstCy0L7QtCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/QvtC70YPRh9C10L3QviAke2h9YDpg0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7c30sINC/0L7Qu9GD0YfQtdC90L4gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDQndC10LLQtdGA0L3Ri9C5INCy0LDRgNC40LDQvdGCOiDQvtC20LjQtNCw0LvQvtGB0Ywg0L7QtNC90L4g0LjQtyAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO2lmKGQpe2NvbnN0IG09Z2V0UnVzc2lhblBsdXJhbChOdW1iZXIoZS5tYXhpbXVtKSxkLnVuaXQub25lLGQudW5pdC5mZXcsZC51bml0Lm1hbnkpO3JldHVybmDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90LjQtSJ9INCx0YPQtNC10YIg0LjQvNC10YLRjCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttfWB9cmV0dXJuYNCh0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QuNC1In0g0LHRg9C00LXRgiAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7aWYoZCl7Y29uc3QgbT1nZXRSdXNzaWFuUGx1cmFsKE51bWJlcihlLm1pbmltdW0pLGQudW5pdC5vbmUsZC51bml0LmZldyxkLnVuaXQubWFueSk7cmV0dXJuYNCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2lufSDQsdGD0LTQtdGCINC40LzQtdGC0YwgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bX1gfXJldHVybmDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbn0g0LHRg9C00LXRgiAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINC90LDRh9C40L3QsNGC0YzRgdGPINGBICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0LfQsNC60LDQvdGH0LjQstCw0YLRjNGB0Y8g0L3QsCAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0YHQvtC00LXRgNC20LDRgtGMICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L3RgyAke2QucGF0dGVybn1gOmDQndC10LLQtdGA0L3Ri9C5ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQtdGA0L3QvtC1INGH0LjRgdC70L46INC00L7Qu9C20L3QviDQsdGL0YLRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QvtC30L3QsNC90L0ke2Uua2V5cy5sZW5ndGg+MT8i0YvQtSI6ItGL0LkifSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstC10YDQvdGL0Lkg0LrQu9GO0Ycg0LIgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0J3QtdCy0LXRgNC90YvQtSDQstGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1INCyICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRiPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJ6bmFrb3YiLHZlcmI6ImltZXRpIn0sZmlsZTp7dW5pdDoiYmFqdG92Iix2ZXJiOiJpbWV0aSJ9LGFycmF5Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn0sc2V0Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoidm5vcyIsZW1haWw6ImUtcG/FoXRuaSBuYXNsb3YiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBpbiDEjWFzIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyDEjWFzIixkdXJhdGlvbjoiSVNPIHRyYWphbmplIixpcHY0OiJJUHY0IG5hc2xvdiIsaXB2NjoiSVB2NiBuYXNsb3YiLGNpZHJ2NDoib2JzZWcgSVB2NCIsY2lkcnY2OiJvYnNlZyBJUHY2IixiYXNlNjQ6ImJhc2U2NCBrb2RpcmFuIG5peiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kaXJhbiBuaXoiLGpzb25fc3RyaW5nOiJKU09OIG5peiIsZTE2NDoiRS4xNjQgxaF0ZXZpbGthIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidm5vcyJ9LGQ9e25hbjoiTmFOIixudW1iZXI6IsWhdGV2aWxvIixhcnJheToidGFiZWxhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcHJlamV0byAke2h9YDpgTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gJHtzfSwgcHJlamV0byAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgTmV2ZWxqYXZuYSBtb8W+bm9zdDogcHJpxI1ha292YW5vIGVubyBpem1lZCAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gaW1lbG8gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudG92In1gOmBQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BQcmVtYWpobm86IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbn0gaW1lbG8gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2lufSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOZXZlbGphdmVuIG5pejogbW9yYSBzZSB6YcSNZXRpIHogIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2Uga29uxI1hdGkgeiAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHZzZWJvdmF0aSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdXN0cmV6YXRpIHZ6b3JjdSAke2QucGF0dGVybn1gOmBOZXZlbGphdmVuICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZlbGphdm5vIMWhdGV2aWxvOiBtb3JhIGJpdGkgdmXEjWtyYXRuaWsgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVwcmVwb3puYW4ke2Uua2V5cy5sZW5ndGg+MT8iaSBrbGp1xI1pIjoiIGtsanXEjSJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmVsamF2ZW4ga2xqdcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iTmV2ZWxqYXZlbiB2bm9zIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmVsamF2bmEgdnJlZG5vc3QgdiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkYT0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoidGVja2VuIix2ZXJiOiJhdHQgaGEifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiYXR0IGhhIn0sYXJyYXk6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifSxzZXQ6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJyZWd1bGrDpHJ0IHV0dHJ5Y2siLGVtYWlsOiJlLXBvc3RhZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1kYXR1bSBvY2ggdGlkIixkYXRlOiJJU08tZGF0dW0iLHRpbWU6IklTTy10aWQiLGR1cmF0aW9uOiJJU08tdmFyYWt0aWdoZXQiLGlwdjQ6IklQdjQtaW50ZXJ2YWxsIixpcHY2OiJJUHY2LWludGVydmFsbCIsY2lkcnY0OiJJUHY0LXNwZWt0cnVtIixjaWRydjY6IklQdjYtc3Bla3RydW0iLGJhc2U2NDoiYmFzZTY0LWtvZGFkIHN0csOkbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvZGFkIHN0csOkbmciLGpzb25fc3RyaW5nOiJKU09OLXN0csOkbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Im1hbGwtbGl0ZXJhbCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ImFudGFsIixhcnJheToibGlzdGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmljayAke2h9YDpgT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7c30sIGZpY2sgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBPZ2lsdGlndCB2YWw6IGbDtnJ2w6RudGFkZSBlbiBhdiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50In1gOmBGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGF0ICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YEbDtnIgbGl0ZSh0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIGLDtnJqYSBtZWQgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgc2x1dGEgbWVkICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgaW5uZWjDpWxsYSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgbWF0Y2hhIG3Dtm5zdHJldCAiJHtkLnBhdHRlcm59ImA6YE9naWx0aWcodCkgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9naWx0aWd0IHRhbDogbcOlc3RlIHZhcmEgZW4gbXVsdGlwZWwgYXYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/Ik9rw6RuZGEgbnlja2xhciI6Ik9rw6RuZCBueWNrZWwifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPZ2lsdGlnIG55Y2tlbCBpICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iT2dpbHRpZyBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBPZ2lsdGlndCB2w6RyZGUgaSAke2Uub3JpZ2luPz8idsOkcmRldCJ9YH19fTtjb25zdCBlcnJvciQ5PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLgro7grrTgr4HgrqTgr43grqTgr4HgrpXgr43grpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxmaWxlOnt1bml0OiLgrqrgr4jgrp/gr43grp/gr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxhcnJheTp7dW5pdDoi4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sc2V0Ont1bml0OiLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLgrongrrPgr43grrPgr4Dgrp/gr4EiLGVtYWlsOiLgrq7grr/grqngr43grqngrp7gr43grprgrrLgr40g4K6u4K+B4K6V4K614K6w4K6/Iix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g4K6k4K+H4K6k4K6/IOCuqOCvh+CusOCuruCvjSIsZGF0ZToiSVNPIOCupOCvh+CupOCuvyIsdGltZToiSVNPIOCuqOCvh+CusOCuruCvjSIsZHVyYXRpb246IklTTyDgrpXgrr7grrIg4K6F4K6z4K614K+BIixpcHY0OiJJUHY0IOCuruCvgeCuleCuteCusOCuvyIsaXB2NjoiSVB2NiDgrq7gr4HgrpXgrrXgrrDgrr8iLGNpZHJ2NDoiSVB2NCDgrrXgrrDgrq7gr43grqrgr4EiLGNpZHJ2NjoiSVB2NiDgrrXgrrDgrq7gr43grqrgr4EiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg4K6a4K6w4K6u4K+NIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIOCumuCusOCuruCvjSIsanNvbl9zdHJpbmc6IkpTT04g4K6a4K6w4K6u4K+NIixlMTY0OiJFLjE2NCDgro7grqPgr40iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6IuCujuCuo+CvjSIsYXJyYXk6IuCuheCuo+CuvyIsbnVsbDoi4K614K+G4K6x4K+B4K6u4K+IIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2h9YDpg4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7c30sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOCupOCuteCuseCuvuCuqSDgrrXgrr/grrDgr4Hgrqrgr43grqrgrq7gr406IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX0g4K6H4K6y4K+NIOCukuCuqeCvjeCuseCvgWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2luPz8i4K6u4K6k4K6/4K6q4K+N4K6q4K+BIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIn0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpUg4K6q4K+G4K6w4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbj8/IuCuruCupOCuv+CuquCvjeCuquCvgSJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpXgrprgr40g4K6a4K6/4K6x4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7ZC5wcmVmaXh9IiDgrofgrrLgr40g4K6k4K+K4K6f4K6Z4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7ZC5zdWZmaXh9IiDgrofgrrLgr40g4K6u4K+B4K6f4K6/4K614K6f4K+I4K6vIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtkLmluY2x1ZGVzfSIg4K6QIOCuieCus+CvjeCus+Cun+CuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOiJyZWdleCI9PT1kLmZvcm1hdD9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogJHtkLnBhdHRlcm59IOCuruCvgeCuseCviOCuquCuvuCun+CvjeCun+CvgeCun+CuqeCvjSDgrqrgr4rgrrDgr4Hgrqjgr43grqQg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6k4K614K6x4K6+4K6pICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDgrqTgrrXgrrHgrr7grqkg4K6O4K6j4K+NOiAke2UuZGl2aXNvcn0g4K6H4K6p4K+NIOCuquCusuCuruCuvuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4K6F4K6f4K+I4K6v4K6+4K6z4K6u4K+NIOCupOCvhuCusOCuv+Cur+CuvuCupCDgrrXgrr/grprgr4gke2Uua2V5cy5sZW5ndGg+MT8i4K6V4K6z4K+NIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g4K6H4K6y4K+NIOCupOCuteCuseCuvuCuqSDgrrXgrr/grprgr4hgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuruCupOCuv+CuquCvjeCuquCvgWB9fX07Y29uc3QgZXJyb3IkOD0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi4LiV4Lix4Lin4Lit4Lix4LiB4Lip4LijIix2ZXJiOiLguITguKfguKPguKHguLUifSxmaWxlOnt1bml0OiLguYTguJrguJXguYwiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LGFycmF5Ont1bml0OiLguKPguLLguKLguIHguLLguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LHNldDp7dW5pdDoi4Lij4Liy4Lii4LiB4Liy4LijIix2ZXJiOiLguITguKfguKPguKHguLUifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLguILguYnguK3guKHguLnguKXguJfguLXguYjguJvguYnguK3guJkiLGVtYWlsOiLguJfguLXguYjguK3guKLguLnguYjguK3guLXguYDguKHguKUiLHVybDoiVVJMIixlbW9qaToi4Lit4Li04LmC4Lih4LiI4Li0Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLguKfguLHguJnguJfguLXguYjguYDguKfguKXguLLguYHguJrguJogSVNPIixkYXRlOiLguKfguLHguJnguJfguLXguYjguYHguJrguJogSVNPIix0aW1lOiLguYDguKfguKXguLLguYHguJrguJogSVNPIixkdXJhdGlvbjoi4LiK4LmI4Lin4LiH4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsaXB2NDoi4LiX4Li14LmI4Lit4Lii4Li54LmIIElQdjQiLGlwdjY6IuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY2IixjaWRydjQ6IuC4iuC5iOC4p+C4hyBJUCDguYHguJrguJogSVB2NCIsY2lkcnY2OiLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjYiLGJhc2U2NDoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCIsYmFzZTY0dXJsOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogQmFzZTY0IOC4quC4s+C4q+C4o+C4seC4miBVUkwiLGpzb25fc3RyaW5nOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogSlNPTiIsZTE2NDoi4LmA4Lia4Lit4Lij4LmM4LmC4LiX4Lij4Lio4Lix4Lie4LiX4LmM4Lij4Liw4Lir4Lin4LmI4Liy4LiH4Lib4Lij4Liw4LmA4LiX4LioIChFLjE2NCkiLGp3dDoi4LmC4LiX4LmA4LiE4LiZIEpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lib4LmJ4Lit4LiZIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi4LiV4Lix4Lin4LmA4Lil4LiCIixhcnJheToi4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmMIChBcnJheSkiLG51bGw6IuC5hOC4oeC5iOC4oeC4teC4hOC5iOC4siAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IOC5geC4leC5iOC5hOC4lOC5ieC4o+C4seC4miAke2h9YDpg4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtzfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g4LiE4LmI4Liy4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOC4leC4seC4p+C5gOC4peC4t+C4reC4geC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZ4Lir4LiZ4Li24LmI4LiH4LmD4LiZICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i4LmE4Lih4LmI4LmA4LiB4Li04LiZIjoi4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4LiyIixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLguKPguLLguKLguIHguLLguKMifWA6YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i4Lit4Lii4LmI4Liy4LiH4LiZ4LmJ4Lit4LiiIjoi4Lih4Liy4LiB4LiB4Lin4LmI4LiyIixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbn0g4LiE4Lin4Lij4Lih4Li1JHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDguJnguYnguK3guKLguIHguKfguYjguLLguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4guC4tuC5ieC4meC4leC5ieC4meC4lOC5ieC4p+C4oiAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4peC4h+C4l+C5ieC4suC4ouC4lOC5ieC4p+C4oiAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4Lih4Li1ICIke2QuaW5jbHVkZXN9IiDguK3guKLguLnguYjguYPguJnguILguYnguK3guITguKfguLLguKFgOiJyZWdleCI9PT1kLmZvcm1hdD9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguJXguKPguIfguIHguLHguJrguKPguLnguJvguYHguJrguJrguJfguLXguYjguIHguLPguKvguJnguJQgJHtkLnBhdHRlcm59YDpg4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4LiV4Lix4Lin4LmA4Lil4LiC4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguYDguJvguYfguJnguIjguLPguJnguKfguJnguJfguLXguYjguKvguLLguKPguJTguYnguKfguKIgJHtlLmRpdmlzb3J9IOC5hOC4lOC5ieC4peC4h+C4leC4seC4p2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOC4nuC4muC4hOC4teC4ouC5jOC4l+C4teC5iOC5hOC4oeC5iOC4o+C4ueC5ieC4iOC4seC4gTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDguITguLXguKLguYzguYTguKHguYjguJbguLnguIHguJXguYnguK3guIfguYPguJkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LmE4Lih4LmI4LiV4Lij4LiH4LiB4Lix4Lia4Lij4Li54Lib4LmB4Lia4Lia4Lii4Li54LmA4LiZ4Li14Lii4LiZ4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHIn19fTtjb25zdCBlcnJvciQ3PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoib2xtYWzEsSJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLEifSxhcnJheTp7dW5pdDoiw7bEn2UiLHZlcmI6Im9sbWFsxLEifSxzZXQ6e3VuaXQ6IsO2xJ9lIix2ZXJiOiJvbG1hbMSxIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZ2lyZGkiLGVtYWlsOiJlLXBvc3RhIGFkcmVzaSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIHRhcmloIHZlIHNhYXQiLGRhdGU6IklTTyB0YXJpaCIsdGltZToiSVNPIHNhYXQiLGR1cmF0aW9uOiJJU08gc8O8cmUiLGlwdjQ6IklQdjQgYWRyZXNpIixpcHY2OiJJUHY2IGFkcmVzaSIsY2lkcnY0OiJJUHY0IGFyYWzEscSfxLEiLGNpZHJ2NjoiSVB2NiBhcmFsxLHEn8SxIixiYXNlNjQ6ImJhc2U2NCBpbGUgxZ9pZnJlbGVubWnFnyBtZXRpbiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwgaWxlIMWfaWZyZWxlbm1pxZ8gbWV0aW4iLGpzb25fc3RyaW5nOiJKU09OIGRpemVzaSIsZTE2NDoiRS4xNjQgc2F5xLFzxLEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLFnmFibG9uIGRpemVzaSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYWzEsW5hbiAke2h9YDpgR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gJHtzfSwgYWzEsW5hbiAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgR2XDp2Vyc2l6IHNlw6dlbmVrOiBhxZ9hxJ/EsWRha2lsZXJkZW4gYmlyaSBvbG1hbMSxOiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DDh29rIGLDvHnDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW4/PyJkZcSfZXIifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLDtsSfZSJ9YDpgw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2Uub3JpZ2luPz8iZGXEn2VyIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DDh29rIGvDvMOnw7xrOiBiZWtsZW5lbiAke2Uub3JpZ2lufSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gR2XDp2Vyc2l6IG1ldGluOiAiJHtkLnByZWZpeH0iIGlsZSBiYcWfbGFtYWzEsWA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gR2XDp2Vyc2l6IG1ldGluOiAiJHtkLnN1ZmZpeH0iIGlsZSBiaXRtZWxpYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YEdlw6dlcnNpeiBtZXRpbjogIiR7ZC5pbmNsdWRlc30iIGnDp2VybWVsaWA6InJlZ2V4Ij09PWQuZm9ybWF0P2BHZcOnZXJzaXogbWV0aW46ICR7ZC5wYXR0ZXJufSBkZXNlbmluZSB1eW1hbMSxYDpgR2XDp2Vyc2l6ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBHZcOnZXJzaXogc2F5xLE6ICR7ZS5kaXZpc29yfSBpbGUgdGFtIGLDtmzDvG5lYmlsbWVsaWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW5kZSBnZcOnZXJzaXogYW5haHRhcmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJHZcOnZXJzaXogZGXEn2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGRlxJ9lcmB9fX07Y29uc3QgZXJyb3IkNj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sZmlsZTp7dW5pdDoi0LHQsNC50YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxhcnJheTp7dW5pdDoi0LXQu9C10LzQtdC90YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIixlbWFpbDoi0LDQtNGA0LXRgdCwINC10LvQtdC60YLRgNC+0L3QvdC+0Zcg0L/QvtGI0YLQuCIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC30ZYiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ItC00LDRgtCwINGC0LAg0YfQsNGBIElTTyIsZGF0ZToi0LTQsNGC0LAgSVNPIix0aW1lOiLRh9Cw0YEgSVNPIixkdXJhdGlvbjoi0YLRgNC40LLQsNC70ZbRgdGC0YwgSVNPIixpcHY0OiLQsNC00YDQtdGB0LAgSVB2NCIsaXB2Njoi0LDQtNGA0LXRgdCwIElQdjYiLGNpZHJ2NDoi0LTRltCw0L/QsNC30L7QvSBJUHY0IixjaWRydjY6ItC00ZbQsNC/0LDQt9C+0L0gSVB2NiIsYmFzZTY0OiLRgNGP0LTQvtC6INGDINC60L7QtNGD0LLQsNC90L3RliBiYXNlNjQiLGJhc2U2NHVybDoi0YDRj9C00L7QuiDRgyDQutC+0LTRg9Cy0LDQvdC90ZYgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi0YDRj9C00L7QuiBKU09OIixlMTY0OiLQvdC+0LzQtdGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L7RgtGA0LjQvNCw0L3QviAke2h9YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7c30sINC+0YLRgNC40LzQsNC90L4gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDQndC10L/RgNCw0LLQuNC70YzQvdCwINC+0L/RhtGW0Y86INC+0YfRltC60YPRlNGC0YzRgdGPINC+0LTQvdC1INC3ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNCX0LDQvdCw0LTRgtC+INCy0LXQu9C40LrQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC90Y8ifSAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i0LXQu9C10LzQtdC90YLRltCyIn1gOmDQl9Cw0L3QsNC00YLQviDQstC10LvQuNC60LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QvdGPIn0g0LHRg9C00LUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0gJHtkLnZlcmJ9ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0g0LHRg9C00LUgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC/0L7Rh9C40L3QsNGC0LjRgdGPINC3ICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQt9Cw0LrRltC90YfRg9Cy0LDRgtC40YHRjyDQvdCwICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC80ZbRgdGC0LjRgtC4ICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRiNCw0LHQu9C+0L3RgyAke2QucGF0dGVybn1gOmDQndC10L/RgNCw0LLQuNC70YzQvdC40LkgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0YfQuNGB0LvQvjog0L/QvtCy0LjQvdC90L4g0LHRg9GC0Lgg0LrRgNCw0YLQvdC40LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0L7Qt9C/0ZbQt9C90LDQvdC40Lkg0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0ZYiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZYiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QtSDQt9C90LDRh9C10L3QvdGPINGDICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiB1aygpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ2KCl9fWNvbnN0IGVycm9yJDU9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6Itit2LHZiNmBIix2ZXJiOiLbgdmI2YbYpyJ9LGZpbGU6e3VuaXQ6Itio2KfYptm52LMiLHZlcmI6ItuB2YjZhtinIn0sYXJyYXk6e3VuaXQ6Itii2KbZudmF2LIiLHZlcmI6ItuB2YjZhtinIn0sc2V0Ont1bml0OiLYotim2bnZhdiyIix2ZXJiOiLbgdmI2YbYpyJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6Itin2YYg2b7ZuSIsZW1haWw6Itin24wg2YXbjNmEINin24zaiNix24zYsyIsdXJsOiLbjNmIINii2LEg2KfbjNmEIixlbW9qaToi2KfbjNmF2YjYrNuMIix1dWlkOiLbjNmIINuM2Ygg2KLYptuMINqI24wiLHV1aWR2NDoi24zZiCDbjNmIINii2KbbjCDaiNuMINmI24wgNCIsdXVpZHY2OiLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA2IixuYW5vaWQ6ItmG24zZhtmIINii2KbbjCDaiNuMIixndWlkOiLYrNuMINuM2Ygg2KLYptuMINqI24wiLGN1aWQ6Itiz24wg24zZiCDYotim24wg2ojbjCIsY3VpZDI6Itiz24wg24zZiCDYotim24wg2ojbjCAyIix1bGlkOiLbjNmIINin24zZhCDYotim24wg2ojbjCIseGlkOiLYp9uM2qnYsyDYotim24wg2ojbjCIsa3N1aWQ6Itqp25Ig2KfbjNizINuM2Ygg2KLYptuMINqI24wiLGRhdGV0aW1lOiLYotim24wg2KfbjNizINin2Ygg2ojbjNm5INm52KfYptmFIixkYXRlOiLYotim24wg2KfbjNizINin2Ygg2KrYp9ix24zYriIsdGltZToi2KLYptuMINin24zYsyDYp9mIINmI2YLYqiIsZHVyYXRpb246Itii2KbbjCDYp9uM2LMg2KfZiCDZhdiv2KoiLGlwdjQ6Itii2KbbjCDZvtuMINmI24wgNCDYp9uM2ojYsduM2LMiLGlwdjY6Itii2KbbjCDZvtuMINmI24wgNiDYp9uM2ojYsduM2LMiLGNpZHJ2NDoi2KLYptuMINm+24wg2YjbjCA0INix24zZhtisIixjaWRydjY6Itii2KbbjCDZvtuMINmI24wgNiDYsduM2YbYrCIsYmFzZTY0OiLYqNuM2LMgNjQg2KfZhiDaqdmI2ojaiCDYs9m52LHZhtqvIixiYXNlNjR1cmw6Itio24zYsyA2NCDbjNmIINii2LEg2KfbjNmEINin2YYg2qnZiNqI2ogg2LPZudix2YbaryIsanNvbl9zdHJpbmc6Itis25Ig2KfbjNizINin2Ygg2KfbjNmGINiz2bnYsdmG2q8iLGUxNjQ6Itin24wgMTY0INmG2YXYqNixIixqd3Q6Itis25Ig2ojYqNmE24zZiCDZuduMIix0ZW1wbGF0ZV9saXRlcmFsOiLYp9mGINm+2bkifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiLZhtmF2KjYsSIsYXJyYXk6Itii2LHbkiIsbnVsbDoi2YbZhCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DYutmE2Lcg2KfZhiDZvtm5OiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke2h9INmF2YjYtdmI2YQg24HZiNinYDpg2LrZhNi3INin2YYg2b7ZuTogJHtzfSDZhdiq2YjZgti5INiq2r7Yp9iMICR7aH0g2YXZiNi12YjZhCDbgdmI2KdgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNi62YTYtyDYp9mGINm+2bk6ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX0g2YXYqtmI2YLYuSDYqtq+2KdgOmDYutmE2Lcg2KLZvti02YY6ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfSDZhduM2rog2LPbkiDYp9uM2qkg2YXYqtmI2YLYuSDYqtq+2KdgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DYqNuB2Kog2KjakdinOiAke2Uub3JpZ2luPz8i2YjbjNmE24zZiCJ9INqp25IgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i2LnZhtin2LXYsSJ9INuB2YjZhtuSINmF2KrZiNmC2Lkg2KravtuSYDpg2KjbgdiqINio2pHYpzogJHtlLm9yaWdpbj8/ItmI24zZhNuM2YgifSDaqdinICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g2KjbgdiqINqG2r7ZiNm52Kc6ICR7ZS5vcmlnaW59INqp25IgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fSDbgdmI2YbbkiDZhdiq2YjZgti5INiq2r7bkmA6YNio24HYqiDahtq+2YjZudinOiAke2Uub3JpZ2lufSDaqdinICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtkLnByZWZpeH0iINiz25Ig2LTYsdmI2Lkg24HZiNmG2Kcg2obYp9uB24zbkmA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g2LrZhNi3INiz2bnYsdmG2q86ICIke2Quc3VmZml4fSIg2b7YsSDYrtiq2YUg24HZiNmG2Kcg2obYp9uB24zbkmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DYutmE2Lcg2LPZudix2YbarzogIiR7ZC5pbmNsdWRlc30iINi02KfZhdmEINuB2YjZhtinINqG2KfbgduM25JgOiJyZWdleCI9PT1kLmZvcm1hdD9g2LrZhNi3INiz2bnYsdmG2q86INm+24zZudix2YYgJHtkLnBhdHRlcm59INiz25Ig2YXbjNqGINuB2YjZhtinINqG2KfbgduM25JgOmDYutmE2LcgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi62YTYtyDZhtmF2KjYsTogJHtlLmRpdmlzb3J9INqp2Kcg2YXYttin2LnZgSDbgdmI2YbYpyDahtin24HbjNuSYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2LrbjNixINiq2LPZhNuM2YUg2LTYr9uBINqp24wke2Uua2V5cy5sZW5ndGg+MT8i2LIiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywi2IwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDaqduMYDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIti62YTYtyDYp9mGINm+2bkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDZiNuM2YTbjNmIYH19fTtjb25zdCBlcnJvciQ0PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJiZWxnaSIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxhcnJheTp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LHNldDp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImtpcmlzaCIsZW1haWw6ImVsZWt0cm9uIHBvY2h0YSBtYW56aWxpIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gc2FuYSB2YSB2YXF0aSIsZGF0ZToiSVNPIHNhbmEiLHRpbWU6IklTTyB2YXF0IixkdXJhdGlvbjoiSVNPIGRhdm9taXlsaWsiLGlwdjQ6IklQdjQgbWFuemlsIixpcHY2OiJJUHY2IG1hbnppbCIsbWFjOiJNQUMgbWFuemlsIixjaWRydjQ6IklQdjQgZGlhcGF6b24iLGNpZHJ2NjoiSVB2NiBkaWFwYXpvbiIsYmFzZTY0OiJiYXNlNjQga29kbGFuZ2FuIHNhdHIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGxhbmdhbiBzYXRyIixqc29uX3N0cmluZzoiSlNPTiBzYXRyIixlMTY0OiJFLjE2NCByYXFhbSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImtpcmlzaCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6InJhcWFtIixhcnJheToibWFzc2l2In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHFhYnVsIHFpbGluZ2FuICR7aH1gOmBOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHtzfSwgcWFidWwgcWlsaW5nYW4gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBOb3Rv4oCYZ+KAmHJpIHZhcmlhbnQ6IHF1eWlkYWdpbGFyZGFuIGJpcmkga3V0aWxnYW4gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdH0gJHtkLnZlcmJ9YDpgSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH0gJHtkLnZlcmJ9YDpgSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7ZC5wcmVmaXh9IiBiaWxhbiBib3NobGFuaXNoaSBrZXJha2A6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtkLnN1ZmZpeH0iIGJpbGFuIHR1Z2FzaGkga2VyYWtgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtkLmluY2x1ZGVzfSIgbmkgb+KAmHogaWNoaWdhIG9saXNoaSBrZXJha2A6InJlZ2V4Ij09PWQuZm9ybWF0P2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICR7ZC5wYXR0ZXJufSBzaGFibG9uaWdhIG1vcyBrZWxpc2hpIGtlcmFrYDpgTm90b+KAmGfigJhyaSAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm90b+KAmGfigJhyaSByYXFhbTogJHtlLmRpdmlzb3J9IG5pbmcga2FycmFsaXNpIGJv4oCYbGlzaGkga2VyYWtgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOb21h4oCZbHVtIGthbGl0JHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRhZ2kga2FsaXQgbm90b+KAmGfigJhyaWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJOb3Rv4oCYZ+KAmHJpIGtpcmlzaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYSBub3Rv4oCYZ+KAmHJpIHFpeW1hdGB9fX07Y29uc3QgZXJyb3IkMz0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoia8O9IHThu7EiLHZlcmI6ImPDsyJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImPDsyJ9LGFycmF5Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn0sc2V0Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoixJHhuqd1IHbDoG8iLGVtYWlsOiLEkeG7i2EgY2jhu4kgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Im5nw6B5IGdp4budIElTTyIsZGF0ZToibmfDoHkgSVNPIix0aW1lOiJnaeG7nSBJU08iLGR1cmF0aW9uOiJraG/huqNuZyB0aOG7nWkgZ2lhbiBJU08iLGlwdjQ6IsSR4buLYSBjaOG7iSBJUHY0IixpcHY2OiLEkeG7i2EgY2jhu4kgSVB2NiIsY2lkcnY0OiJk4bqjaSBJUHY0IixjaWRydjY6ImThuqNpIElQdjYiLGJhc2U2NDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjQiLGJhc2U2NHVybDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaHXhu5dpIEpTT04iLGUxNjQ6InPhu5EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLEkeG6p3UgdsOgbyJ9LGQ9e25hbjoiTmFOIixudW1iZXI6InPhu5EiLGFycmF5OiJt4bqjbmcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgbmjhuq1uIMSRxrDhu6NjICR7aH1gOmDEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgJHtzfSwgbmjhuq1uIMSRxrDhu6NjICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgVMO5eSBjaOG7jW4ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIG3hu5l0IHRyb25nIGPDoWMgZ2nDoSB0cuG7iyAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BRdcOhIGzhu5tuOiBtb25nIMSR4bujaSAke2Uub3JpZ2luPz8iZ2nDoSB0cuG7iyJ9ICR7ZC52ZXJifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJwaOG6p24gdOG7rSJ9YDpgUXXDoSBs4bubbjogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbj8/Imdpw6EgdHLhu4sifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW59ICR7ZC52ZXJifSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgUXXDoSBuaOG7jzogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGLhuq90IMSR4bqndSBi4bqxbmcgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGvhur90IHRow7pjIGLhurFuZyAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBiYW8gZ+G7k20gIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBraOG7m3AgduG7m2kgbeG6q3UgJHtkLnBhdHRlcm59YDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9IGtow7RuZyBo4bujcCBs4buHYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFPhu5Ega2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBsw6AgYuG7mWkgc+G7kSBj4bunYSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLaMOzYSBraMO0bmcgxJHGsOG7o2Mgbmjhuq1uIGThuqFuZzogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLaMOzYSBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBHacOhIHRy4buLIGtow7RuZyBo4bujcCBs4buHIHRyb25nICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciQyPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLlrZfnrKYiLHZlcmI6IuWMheWQqyJ9LGZpbGU6e3VuaXQ6IuWtl+iKgiIsdmVyYjoi5YyF5ZCrIn0sYXJyYXk6e3VuaXQ6IumhuSIsdmVyYjoi5YyF5ZCrIn0sc2V0Ont1bml0OiLpobkiLHZlcmI6IuWMheWQqyJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6Iui+k+WFpSIsZW1haWw6IueUteWtkOmCruS7tiIsdXJsOiJVUkwiLGVtb2ppOiLooajmg4XnrKblj7ciLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTT+aXpeacn+aXtumXtCIsZGF0ZToiSVNP5pel5pyfIix0aW1lOiJJU0/ml7bpl7QiLGR1cmF0aW9uOiJJU0/ml7bplb8iLGlwdjQ6IklQdjTlnLDlnYAiLGlwdjY6IklQdjblnLDlnYAiLGNpZHJ2NDoiSVB2NOe9keautSIsY2lkcnY2OiJJUHY2572R5q61IixiYXNlNjQ6ImJhc2U2NOe8lueggeWtl+espuS4siIsYmFzZTY0dXJsOiJiYXNlNjR1cmznvJbnoIHlrZfnrKbkuLIiLGpzb25fc3RyaW5nOiJKU09O5a2X56ym5LiyIixlMTY0OiJFLjE2NOWPt+eggSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Iui+k+WFpSJ9LGQ9e25hbjoiTmFOIixudW1iZXI6IuaVsOWtlyIsYXJyYXk6IuaVsOe7hCIsbnVsbDoi56m65YC8KG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOaXoOaViOi+k+WFpe+8muacn+acmyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3vvIzlrp7pmYXmjqXmlLYgJHtofWA6YOaXoOaViOi+k+WFpe+8muacn+acmyAke3N977yM5a6e6ZmF5o6l5pS2ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YOaXoOaViOi+k+WFpe+8muacn+acmyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpg5peg5pWI6YCJ6aG577ya5pyf5pyb5Lul5LiL5LmL5LiAICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOaVsOWAvOi/h+Wkp++8muacn+acmyAke2Uub3JpZ2luPz8i5YC8In0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i5Liq5YWD57SgIn1gOmDmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtlLm9yaWdpbj8/IuWAvCJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g5pWw5YC86L+H5bCP77ya5pyf5pybICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDmlbDlgLzov4flsI/vvJrmnJ/mnJsgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75LulICIke2QucHJlZml4fSIg5byA5aS0YDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgIiR7ZC5zdWZmaXh9IiDnu5PlsL5gOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75YyF5ZCrICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvmu6HotrPmraPliJnooajovr7lvI8gJHtkLnBhdHRlcm59YDpg5peg5pWIJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOaXoOaViOaVsOWtl++8muW/hemhu+aYryAke2UuZGl2aXNvcn0g55qE5YCN5pWwYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g5Ye6546w5pyq55+l55qE6ZSuKGtleSk6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit55qE6ZSuKGtleSnml6DmlYhgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i5peg5pWI6L6T5YWlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reWMheWQq+aXoOaViOWAvCh2YWx1ZSlgfX19O2NvbnN0IGVycm9yJDE9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IuWtl+WFgyIsdmVyYjoi5pOB5pyJIn0sZmlsZTp7dW5pdDoi5L2N5YWD57WEIix2ZXJiOiLmk4HmnIkifSxhcnJheTp7dW5pdDoi6aCF55uuIix2ZXJiOiLmk4HmnIkifSxzZXQ6e3VuaXQ6IumgheebriIsdmVyYjoi5pOB5pyJIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi6Ly45YWlIixlbWFpbDoi6YO15Lu25Zyw5Z2AIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g5pel5pyf5pmC6ZaTIixkYXRlOiJJU08g5pel5pyfIix0aW1lOiJJU08g5pmC6ZaTIixkdXJhdGlvbjoiSVNPIOacn+mWkyIsaXB2NDoiSVB2NCDkvY3lnYAiLGlwdjY6IklQdjYg5L2N5Z2AIixjaWRydjQ6IklQdjQg56+E5ZyNIixjaWRydjY6IklQdjYg56+E5ZyNIixiYXNlNjQ6ImJhc2U2NCDnt6jnorzlrZfkuLIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIOe3qOeivOWtl+S4siIsanNvbl9zdHJpbmc6IkpTT04g5a2X5LiyIixlMTY0OiJFLjE2NCDmlbjlgLwiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLovLjlhaUifSxkPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR977yM5L2G5pS25YiwICR7aH1gOmDnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtzfe+8jOS9huaUtuWIsCAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOeEoeaViOeahOmBuOmghe+8mumgkOacn+eCuuS7peS4i+WFtuS4reS5i+S4gCAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtlLm9yaWdpbj8/IuWAvCJ9IOaHieeCuiAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLlgIvlhYPntKAifWA6YOaVuOWAvOmBjuWkp++8mumgkOacnyAke2Uub3JpZ2luPz8i5YC8In0g5oeJ54K6ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpg5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjku6UgIiR7ZC5wcmVmaXh9IiDplovpoK1gOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSAiJHtkLnN1ZmZpeH0iIOe1kOWwvmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjljIXlkKsgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOespuWQiOagvOW8jyAke2QucGF0dGVybn1gOmDnhKHmlYjnmoQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOeEoeaViOeahOaVuOWtl++8muW/hemgiOeCuiAke2UuZGl2aXNvcn0g55qE5YCN5pW4YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g54Sh5rOV6K2Y5Yil55qE6Y215YC8JHtlLmtleXMubGVuZ3RoPjE/IuWAkSI6IiJ977yaJHtqb2luVmFsdWVzKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5pyJ54Sh5pWI55qE6Y215YC8YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTlgLxgfX19O2NvbnN0IGVycm9yPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLDoG1pIix2ZXJiOiJuw60ifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoibsOtIn0sYXJyYXk6e3VuaXQ6Im5rYW4iLHZlcmI6Im7DrSJ9LHNldDp7dW5pdDoibmthbiIsdmVyYjoibsOtIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi4bq5zIBy4buNIMOsYsOhd+G7jWzDqSIsZW1haWw6IsOgZMOtcuG6ucyBc8OsIMOsbeG6ucyBbMOsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLDoGvDs2vDsiBJU08iLGRhdGU6IuG7jWrhu43MgSBJU08iLHRpbWU6IsOga8Oza8OyIElTTyIsZHVyYXRpb246IsOga8Oza8OyIHTDsyBww6kgSVNPIixpcHY0OiLDoGTDrXLhurnMgXPDrCBJUHY0IixpcHY2OiLDoGTDrXLhurnMgXPDrCBJUHY2IixjaWRydjQ6IsOgZ2LDqGdiw6ggSVB2NCIsY2lkcnY2OiLDoGdiw6hnYsOoIElQdjYiLGJhc2U2NDoi4buNzIBy4buNzIAgdMOtIGEga+G7jcyBIG7DrSBiYXNlNjQiLGJhc2U2NHVybDoi4buNzIBy4buNzIAgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4buNzIBy4buNzIAgSlNPTiIsZTE2NDoibuG7jcyBbWLDoCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuG6ucyAcuG7jSDDrGLDoXfhu41sw6kifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJu4buNzIFtYsOgIixhcnJheToiYWtvcOG7jSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDDoG3hu43MgCBhIHLDrSAke2h9YDpgw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7c30sIMOgbeG7jcyAIGEgcsOtICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgw4DhuaPDoHnDoG4gYeG5o8Os4bmjZTogeWFuIOG7jcyAa2FuIGzDoXJhICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFTDsyBw4buNzIAgasO5OiBhIG7DrSBsw6F0aSBq4bq5zIEgcMOpICR7ZS5vcmlnaW4/PyJpeWUifSAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtfSAke2QudW5pdH1gOmBUw7MgcOG7jcyAIGrDuTogYSBuw60gbMOhdGkgauG6ucyBICR7c30ke2UubWF4aW11bX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YEvDqXLDqSBqdTogYSBuw60gbMOhdGkgauG6ucyBIHDDqSAke2Uub3JpZ2lufSAke2QudmVyYn0gJHtzfSR7ZS5taW5pbXVtfSAke2QudW5pdH1gOmBLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSAke3N9JHtlLm1pbmltdW19YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBi4bq5zIBy4bq5zIAgcOG6ucyAbMO6ICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgcGFyw60gcOG6ucyAbMO6ICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBuw60gIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYsOhIMOgcOG6ueG6uXLhurkgbXUgJHtkLnBhdHRlcm59YDpgQeG5o8Os4bmjZTogJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7hu43MgW1iw6AgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBq4bq5zIEgw6h5w6AgcMOtcMOtbiB0aSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBC4buNdMOsbsOsIMOgw6xt4buNzIA6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQuG7jXTDrG7DrCBh4bmjw6zhuaNlIG7DrW7DuiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLDjGLDoXfhu41sw6kgYeG5o8Os4bmjZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJeWUgYeG5o8Os4bmjZSBuw61uw7ogJHtlLm9yaWdpbn1gfX19O2NvbnN0IFJzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxhcjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRLKCl9fSxhejpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRKKCl9fSxiZTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRJKCl9fSxiZzpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRIKCl9fSxjYTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRHKCl9fSxjczpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRGKCl9fSxkYTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRFKCl9fSxkZTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciREKCl9fSxlbjplbixlbzpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRCKCl9fSxlczpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRBKCl9fSxmYTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciR6KCl9fSxmaTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciR5KCl9fSxmcjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciR4KCl9fSxmckNBOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHcoKX19LGhlOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHYoKX19LGh1OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHUoKX19LGh5OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHQoKX19LGlkOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHMoKX19LGlzOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHIoKX19LGl0OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHEoKX19LGphOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHAoKX19LGthOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJG8oKX19LGtoOmZ1bmN0aW9uKCl7cmV0dXJuIGttKCl9LGttOmttLGtvOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJG0oKX19LGx0OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGwoKX19LG1rOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGsoKX19LG1zOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGooKX19LG5sOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGkoKX19LG5vOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGgoKX19LG90YTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRnKCl9fSxwbDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRlKCl9fSxwczpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRmKCl9fSxwdDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRkKCl9fSxydTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRjKCl9fSxzbDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRiKCl9fSxzdjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRhKCl9fSx0YTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ5KCl9fSx0aDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ4KCl9fSx0cjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ3KCl9fSx1YTpmdW5jdGlvbigpe3JldHVybiB1aygpfSx1azp1ayx1cjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ1KCl9fSx1ejpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ0KCl9fSx2aTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQzKCl9fSx5bzpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvcigpfX0semhDTjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQyKCl9fSx6aFRXOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJDEoKX19fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO3ZhciBFcztjb25zdCBPcz1TeW1ib2woIlpvZE91dHB1dCIpLFBzPVN5bWJvbCgiWm9kSW5wdXQiKTtjbGFzcyAkWm9kUmVnaXN0cnl7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQoZSwuLi5zKXtjb25zdCBkPXNbMF07cmV0dXJuIHRoaXMuX21hcC5zZXQoZSxkKSxkJiYib2JqZWN0Ij09dHlwZW9mIGQmJiJpZCJpbiBkJiZ0aGlzLl9pZG1hcC5zZXQoZC5pZCxlKSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKGUpe2NvbnN0IHM9dGhpcy5fbWFwLmdldChlKTtyZXR1cm4gcyYmIm9iamVjdCI9PXR5cGVvZiBzJiYiaWQiaW4gcyYmdGhpcy5faWRtYXAuZGVsZXRlKHMuaWQpLHRoaXMuX21hcC5kZWxldGUoZSksdGhpc31nZXQoZSl7Y29uc3Qgcz1lLl96b2QucGFyZW50O2lmKHMpe2NvbnN0IGQ9ey4uLnRoaXMuZ2V0KHMpPz97fX07ZGVsZXRlIGQuaWQ7Y29uc3QgbT17Li4uZCwuLi50aGlzLl9tYXAuZ2V0KGUpfTtyZXR1cm4gT2JqZWN0LmtleXMobSkubGVuZ3RoP206dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KGUpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX19ZnVuY3Rpb24gcmVnaXN0cnkoKXtyZXR1cm4gbmV3ICRab2RSZWdpc3RyeX0oRXM9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsUmVnaXN0cnk/PyhFcy5fX3pvZF9nbG9iYWxSZWdpc3RyeT1yZWdpc3RyeSgpKTtjb25zdCBOcz1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5O2Z1bmN0aW9uIF9zdHJpbmcoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2NvZXJjZWRTdHJpbmcoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsY29lcmNlOiEwLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9lbWFpbChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2d1aWQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJndWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWR2NChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NCIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWR2NihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWR2NyhlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NyIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3VybChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9lbW9qaShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtb2ppIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX25hbm9pZChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jdWlkKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jdWlkMihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQyIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3VsaWQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1bGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3hpZChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InhpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9rc3VpZChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImtzdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2lwdjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2lwdjYoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX21hYyhlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im1hYyIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jaWRydjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfY2lkcnY2KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2Jhc2U2NChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9iYXNlNjR1cmwoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjR1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfZTE2NChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImUxNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfand0KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiand0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgRHM9e0FueTpudWxsLE1pbnV0ZTotMSxTZWNvbmQ6MCxNaWxsaXNlY29uZDozLE1pY3Jvc2Vjb25kOjZ9O2Z1bmN0aW9uIF9pc29EYXRlVGltZShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGV0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pc29EYXRlKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pc29UaW1lKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pc29EdXJhdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX251bWJlcihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVja3M6W10sLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2NvZXJjZWROdW1iZXIoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY29lcmNlOiEwLGNoZWNrczpbXSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfaW50KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InNhZmVpbnQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9mbG9hdDMyKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0MzIiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9mbG9hdDY0KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pbnQzMihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3VpbnQzMihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50MzIiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9ib29sZWFuKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfY29lcmNlZEJvb2xlYW4oZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfYmlnaW50KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jb2VyY2VkQmlnaW50KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfaW50NjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF91aW50NjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoidWludDY0IiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfc3ltYm9sKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzeW1ib2wiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF91bmRlZmluZWQkMShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToidW5kZWZpbmVkIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfbnVsbCQxKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfYW55KGUpe3JldHVybiBuZXcgZSh7dHlwZToiYW55In0pfWZ1bmN0aW9uIF91bmtub3duKGUpe3JldHVybiBuZXcgZSh7dHlwZToidW5rbm93biJ9KX1mdW5jdGlvbiBfbmV2ZXIoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im5ldmVyIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfdm9pZCQxKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ2b2lkIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfZGF0ZShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToiZGF0ZSIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2NvZXJjZWREYXRlKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJkYXRlIixjb2VyY2U6ITAsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX25hbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibmFuIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfbHQoZSxzKXtyZXR1cm4gbmV3IFBvKHtjaGVjazoibGVzc190aGFuIiwuLi5ub3JtYWxpemVQYXJhbXMocyksdmFsdWU6ZSxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiBfbHRlKGUscyl7cmV0dXJuIG5ldyBQbyh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gX2d0KGUscyl7cmV0dXJuIG5ldyBObyh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gX2d0ZShlLHMpe3JldHVybiBuZXcgTm8oe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSx2YWx1ZTplLGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIF9wb3NpdGl2ZShlKXtyZXR1cm4gX2d0KDAsZSl9ZnVuY3Rpb24gX25lZ2F0aXZlKGUpe3JldHVybiBfbHQoMCxlKX1mdW5jdGlvbiBfbm9ucG9zaXRpdmUoZSl7cmV0dXJuIF9sdGUoMCxlKX1mdW5jdGlvbiBfbm9ubmVnYXRpdmUoZSl7cmV0dXJuIF9ndGUoMCxlKX1mdW5jdGlvbiBfbXVsdGlwbGVPZihlLHMpe3JldHVybiBuZXcgRG8oe2NoZWNrOiJtdWx0aXBsZV9vZiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLHZhbHVlOmV9KX1mdW5jdGlvbiBfbWF4U2l6ZShlLHMpe3JldHVybiBuZXcgQW8oe2NoZWNrOiJtYXhfc2l6ZSIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLG1heGltdW06ZX0pfWZ1bmN0aW9uIF9taW5TaXplKGUscyl7cmV0dXJuIG5ldyBxbyh7Y2hlY2s6Im1pbl9zaXplIiwuLi5ub3JtYWxpemVQYXJhbXMocyksbWluaW11bTplfSl9ZnVuY3Rpb24gX3NpemUoZSxzKXtyZXR1cm4gbmV3IEZvKHtjaGVjazoic2l6ZV9lcXVhbHMiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxzaXplOmV9KX1mdW5jdGlvbiBfbWF4TGVuZ3RoKGUscyl7cmV0dXJuIG5ldyBCbyh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxtYXhpbXVtOmV9KX1mdW5jdGlvbiBfbWluTGVuZ3RoKGUscyl7cmV0dXJuIG5ldyBabyh7Y2hlY2s6Im1pbl9sZW5ndGgiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBfbGVuZ3RoKGUscyl7cmV0dXJuIG5ldyBNbyh7Y2hlY2s6Imxlbmd0aF9lcXVhbHMiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxsZW5ndGg6ZX0pfWZ1bmN0aW9uIF9yZWdleChlLHMpe3JldHVybiBuZXcgVm8oe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IiwuLi5ub3JtYWxpemVQYXJhbXMocykscGF0dGVybjplfSl9ZnVuY3Rpb24gX2xvd2VyY2FzZShlKXtyZXR1cm4gbmV3IEhvKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLm5vcm1hbGl6ZVBhcmFtcyhlKX0pfWZ1bmN0aW9uIF91cHBlcmNhc2UoZSl7cmV0dXJuIG5ldyBXbyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoidXBwZXJjYXNlIiwuLi5ub3JtYWxpemVQYXJhbXMoZSl9KX1mdW5jdGlvbiBfaW5jbHVkZXMoZSxzKXtyZXR1cm4gbmV3IEpvKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLGluY2x1ZGVzOmV9KX1mdW5jdGlvbiBfc3RhcnRzV2l0aChlLHMpe3JldHVybiBuZXcgS28oe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi5ub3JtYWxpemVQYXJhbXMocykscHJlZml4OmV9KX1mdW5jdGlvbiBfZW5kc1dpdGgoZSxzKXtyZXR1cm4gbmV3IEdvKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxzdWZmaXg6ZX0pfWZ1bmN0aW9uIF9wcm9wZXJ0eShlLHMsZCl7cmV0dXJuIG5ldyBYbyh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTplLHNjaGVtYTpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIF9taW1lKGUscyl7cmV0dXJuIG5ldyBZbyh7Y2hlY2s6Im1pbWVfdHlwZSIsbWltZTplLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9vdmVyd3JpdGUoZSl7cmV0dXJuIG5ldyBlYSh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6ZX0pfWZ1bmN0aW9uIF9ub3JtYWxpemUoZSl7cmV0dXJuIF9vdmVyd3JpdGUocz0+cy5ub3JtYWxpemUoZSkpfWZ1bmN0aW9uIF90cmltKCl7cmV0dXJuIF9vdmVyd3JpdGUoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIF90b0xvd2VyQ2FzZSgpe3JldHVybiBfb3ZlcndyaXRlKGU9PmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gX3RvVXBwZXJDYXNlKCl7cmV0dXJuIF9vdmVyd3JpdGUoZT0+ZS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBfc2x1Z2lmeSgpe3JldHVybiBfb3ZlcndyaXRlKGU9PnNsdWdpZnkoZSkpfWZ1bmN0aW9uIF9hcnJheShlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJhcnJheSIsZWxlbWVudDpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIF9maWxlKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJmaWxlIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfY3VzdG9tKGUscyxkKXtjb25zdCBtPW5vcm1hbGl6ZVBhcmFtcyhkKTttLmFib3J0Pz8obS5hYm9ydD0hMCk7cmV0dXJuIG5ldyBlKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOnMsLi4ubX0pfWZ1bmN0aW9uIF9yZWZpbmUoZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIF9zdXBlclJlZmluZShlKXtjb25zdCBzPV9jaGVjayhkPT4oZC5hZGRJc3N1ZT1lPT57aWYoInN0cmluZyI9PXR5cGVvZiBlKWQuaXNzdWVzLnB1c2goaXNzdWUoZSxkLnZhbHVlLHMuX3pvZC5kZWYpKTtlbHNle2NvbnN0IG09ZTttLmZhdGFsJiYobS5jb250aW51ZT0hMSksbS5jb2RlPz8obS5jb2RlPSJjdXN0b20iKSxtLmlucHV0Pz8obS5pbnB1dD1kLnZhbHVlKSxtLmluc3Q/PyhtLmluc3Q9cyksbS5jb250aW51ZT8/KG0uY29udGludWU9IXMuX3pvZC5kZWYuYWJvcnQpLGQuaXNzdWVzLnB1c2goaXNzdWUobSkpfX0sZShkLnZhbHVlLGQpKSk7cmV0dXJuIHN9ZnVuY3Rpb24gX2NoZWNrKGUscyl7Y29uc3QgZD1uZXcgRW8oe2NoZWNrOiJjdXN0b20iLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pO3JldHVybiBkLl96b2QuY2hlY2s9ZSxkfWZ1bmN0aW9uIGRlc2NyaWJlJDEoZSl7Y29uc3Qgcz1uZXcgRW8oe2NoZWNrOiJkZXNjcmliZSJ9KTtyZXR1cm4gcy5fem9kLm9uYXR0YWNoPVtzPT57Y29uc3QgZD1Ocy5nZXQocyk/P3t9O05zLmFkZChzLHsuLi5kLGRlc2NyaXB0aW9uOmV9KX1dLHMuX3pvZC5jaGVjaz0oKT0+e30sc31mdW5jdGlvbiBtZXRhJDEoZSl7Y29uc3Qgcz1uZXcgRW8oe2NoZWNrOiJtZXRhIn0pO3JldHVybiBzLl96b2Qub25hdHRhY2g9W3M9Pntjb25zdCBkPU5zLmdldChzKT8/e307TnMuYWRkKHMsey4uLmQsLi4uZX0pfV0scy5fem9kLmNoZWNrPSgpPT57fSxzfWZ1bmN0aW9uIF9zdHJpbmdib29sKGUscyl7Y29uc3QgZD1ub3JtYWxpemVQYXJhbXMocyk7bGV0IG09ZC50cnV0aHk/P1sidHJ1ZSIsIjEiLCJ5ZXMiLCJvbiIsInkiLCJlbmFibGVkIl0saD1kLmZhbHN5Pz9bImZhbHNlIiwiMCIsIm5vIiwib2ZmIiwibiIsImRpc2FibGVkIl07InNlbnNpdGl2ZSIhPT1kLmNhc2UmJihtPW0ubWFwKGU9PiJzdHJpbmciPT10eXBlb2YgZT9lLnRvTG93ZXJDYXNlKCk6ZSksaD1oLm1hcChlPT4ic3RyaW5nIj09dHlwZW9mIGU/ZS50b0xvd2VyQ2FzZSgpOmUpKTtjb25zdCBnPW5ldyBTZXQobSkseD1uZXcgU2V0KGgpLCQ9ZS5Db2RlYz8/U3MsUz1lLkJvb2xlYW4/P0ZhLGo9bmV3ICQoe3R5cGU6InBpcGUiLGluOm5ldyhlLlN0cmluZz8/cmEpKHt0eXBlOiJzdHJpbmciLGVycm9yOmQuZXJyb3J9KSxvdXQ6bmV3IFMoe3R5cGU6ImJvb2xlYW4iLGVycm9yOmQuZXJyb3J9KSx0cmFuc2Zvcm06KGUscyk9PntsZXQgbT1lO3JldHVybiJzZW5zaXRpdmUiIT09ZC5jYXNlJiYobT1tLnRvTG93ZXJDYXNlKCkpLCEhZy5oYXMobSl8fCF4LmhhcyhtKSYmKHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLmcsLi4ueF0saW5wdXQ6cy52YWx1ZSxpbnN0OmosY29udGludWU6ITF9KSx7fSl9LHJldmVyc2VUcmFuc2Zvcm06KGUscyk9PiEwPT09ZT9tWzBdfHwidHJ1ZSI6aFswXXx8ImZhbHNlIixlcnJvcjpkLmVycm9yfSk7cmV0dXJuIGp9ZnVuY3Rpb24gX3N0cmluZ0Zvcm1hdChlLHMsZCxtPXt9KXtjb25zdCBoPW5vcm1hbGl6ZVBhcmFtcyhtKSxnPXsuLi5ub3JtYWxpemVQYXJhbXMobSksY2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0OnMsZm46ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZDplPT5kLnRlc3QoZSksLi4uaH07ZCBpbnN0YW5jZW9mIFJlZ0V4cCYmKGcucGF0dGVybj1kKTtyZXR1cm4gbmV3IGUoZyl9ZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbnRleHQoZSl7bGV0IHM9ZT8udGFyZ2V0Pz8iZHJhZnQtMjAyMC0xMiI7cmV0dXJuImRyYWZ0LTQiPT09cyYmKHM9ImRyYWZ0LTA0IiksImRyYWZ0LTciPT09cyYmKHM9ImRyYWZ0LTA3Iikse3Byb2Nlc3NvcnM6ZS5wcm9jZXNzb3JzPz97fSxtZXRhZGF0YVJlZ2lzdHJ5OmU/Lm1ldGFkYXRhPz9Ocyx0YXJnZXQ6cyx1bnJlcHJlc2VudGFibGU6ZT8udW5yZXByZXNlbnRhYmxlPz8idGhyb3ciLG92ZXJyaWRlOmU/Lm92ZXJyaWRlPz8oKCk9Pnt9KSxpbzplPy5pbz8/Im91dHB1dCIsY291bnRlcjowLHNlZW46bmV3IE1hcCxjeWNsZXM6ZT8uY3ljbGVzPz8icmVmIixyZXVzZWQ6ZT8ucmV1c2VkPz8iaW5saW5lIixleHRlcm5hbDplPy5leHRlcm5hbD8/dm9pZCAwfX1mdW5jdGlvbiBwcm9jZXNzKGUscyxkPXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgbTtjb25zdCBoPWUuX3pvZC5kZWYsZz1zLnNlZW4uZ2V0KGUpO2lmKGcpe2cuY291bnQrKztyZXR1cm4gZC5zY2hlbWFQYXRoLmluY2x1ZGVzKGUpJiYoZy5jeWNsZT1kLnBhdGgpLGcuc2NoZW1hfWNvbnN0IHg9e3NjaGVtYTp7fSxjb3VudDoxLGN5Y2xlOnZvaWQgMCxwYXRoOmQucGF0aH07cy5zZWVuLnNldChlLHgpO2NvbnN0ICQ9ZS5fem9kLnRvSlNPTlNjaGVtYT8uKCk7aWYoJCl4LnNjaGVtYT0kO2Vsc2V7Y29uc3QgbT17Li4uZCxzY2hlbWFQYXRoOlsuLi5kLnNjaGVtYVBhdGgsZV0scGF0aDpkLnBhdGh9O2lmKGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSllLl96b2QucHJvY2Vzc0pTT05TY2hlbWEocyx4LnNjaGVtYSxtKTtlbHNle2NvbnN0IGQ9eC5zY2hlbWEsZz1zLnByb2Nlc3NvcnNbaC50eXBlXTtpZighZyl0aHJvdyBuZXcgRXJyb3IoYFt0b0pTT05TY2hlbWFdOiBOb24tcmVwcmVzZW50YWJsZSB0eXBlIGVuY291bnRlcmVkOiAke2gudHlwZX1gKTtnKGUscyxkLG0pfWNvbnN0IGc9ZS5fem9kLnBhcmVudDtnJiYoeC5yZWZ8fCh4LnJlZj1nKSxwcm9jZXNzKGcscyxtKSxzLnNlZW4uZ2V0KGcpLmlzUGFyZW50PSEwKX1jb25zdCBTPXMubWV0YWRhdGFSZWdpc3RyeS5nZXQoZSk7UyYmT2JqZWN0LmFzc2lnbih4LnNjaGVtYSxTKSwiaW5wdXQiPT09cy5pbyYmaXNUcmFuc2Zvcm1pbmcoZSkmJihkZWxldGUgeC5zY2hlbWEuZXhhbXBsZXMsZGVsZXRlIHguc2NoZW1hLmRlZmF1bHQpLCJpbnB1dCI9PT1zLmlvJiZ4LnNjaGVtYS5fcHJlZmF1bHQmJigobT14LnNjaGVtYSkuZGVmYXVsdD8/KG0uZGVmYXVsdD14LnNjaGVtYS5fcHJlZmF1bHQpKSxkZWxldGUgeC5zY2hlbWEuX3ByZWZhdWx0O3JldHVybiBzLnNlZW4uZ2V0KGUpLnNjaGVtYX1mdW5jdGlvbiBleHRyYWN0RGVmcyhlLHMpe2NvbnN0IGQ9ZS5zZWVuLmdldChzKTtpZighZCl0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3QgbT1uZXcgTWFwO2Zvcihjb25zdCBzIG9mIGUuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IGQ9ZS5tZXRhZGF0YVJlZ2lzdHJ5LmdldChzWzBdKT8uaWQ7aWYoZCl7Y29uc3QgZT1tLmdldChkKTtpZihlJiZlIT09c1swXSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBzY2hlbWEgaWQgIiR7ZH0iIGRldGVjdGVkIGR1cmluZyBKU09OIFNjaGVtYSBjb252ZXJzaW9uLiBUd28gZGlmZmVyZW50IHNjaGVtYXMgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGlkIHdoZW4gY29udmVydGVkIHRvZ2V0aGVyLmApO20uc2V0KGQsc1swXSl9fWNvbnN0IGV4dHJhY3RUb0RlZj1zPT57aWYoc1sxXS5zY2hlbWEuJHJlZilyZXR1cm47Y29uc3QgbT1zWzFdLHtyZWY6aCxkZWZJZDpnfT0ocz0+e2NvbnN0IG09ImRyYWZ0LTIwMjAtMTIiPT09ZS50YXJnZXQ/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2lmKGUuZXh0ZXJuYWwpe2NvbnN0IGQ9ZS5leHRlcm5hbC5yZWdpc3RyeS5nZXQoc1swXSk/LmlkLGg9ZS5leHRlcm5hbC51cmk/PyhlPT5lKTtpZihkKXJldHVybntyZWY6aChkKX07Y29uc3QgZz1zWzFdLmRlZklkPz9zWzFdLnNjaGVtYS5pZD8/InNjaGVtYSIrZS5jb3VudGVyKys7cmV0dXJuIHNbMV0uZGVmSWQ9Zyx7ZGVmSWQ6ZyxyZWY6YCR7aCgiX19zaGFyZWQiKX0jLyR7bX0vJHtnfWB9fWlmKHNbMV09PT1kKXJldHVybntyZWY6IiMifTtjb25zdCBoPWAjLyR7bX0vYCxnPXNbMV0uc2NoZW1hLmlkPz8iX19zY2hlbWEiK2UuY291bnRlcisrO3JldHVybntkZWZJZDpnLHJlZjpoK2d9fSkocyk7bS5kZWY9ey4uLm0uc2NoZW1hfSxnJiYobS5kZWZJZD1nKTtjb25zdCB4PW0uc2NoZW1hO2Zvcihjb25zdCBlIGluIHgpZGVsZXRlIHhbZV07eC4kcmVmPWh9O2lmKCJ0aHJvdyI9PT1lLmN5Y2xlcylmb3IoY29uc3QgcyBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBlPXNbMV07aWYoZS5jeWNsZSl0aHJvdyBuZXcgRXJyb3IoYEN5Y2xlIGRldGVjdGVkOiAjLyR7ZS5jeWNsZT8uam9pbigiLyIpfS88cm9vdD5cblxuU2V0IHRoZSBcYGN5Y2xlc1xgIHBhcmFtZXRlciB0byBcYCJyZWYiXGAgdG8gcmVzb2x2ZSBjeWNsaWNhbCBzY2hlbWFzIHdpdGggZGVmcy5gKX1mb3IoY29uc3QgZCBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBtPWRbMV07aWYocz09PWRbMF0pe2V4dHJhY3RUb0RlZihkKTtjb250aW51ZX1pZihlLmV4dGVybmFsKXtjb25zdCBtPWUuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGRbMF0pPy5pZDtpZihzIT09ZFswXSYmbSl7ZXh0cmFjdFRvRGVmKGQpO2NvbnRpbnVlfX1jb25zdCBoPWUubWV0YWRhdGFSZWdpc3RyeS5nZXQoZFswXSk/LmlkO2g/ZXh0cmFjdFRvRGVmKGQpOihtLmN5Y2xlfHxtLmNvdW50PjEmJiJyZWYiPT09ZS5yZXVzZWQpJiZleHRyYWN0VG9EZWYoZCl9fWZ1bmN0aW9uIGZpbmFsaXplKGUscyl7Y29uc3QgZD1lLnNlZW4uZ2V0KHMpO2lmKCFkKXRocm93IG5ldyBFcnJvcigiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC4iKTtjb25zdCBmbGF0dGVuUmVmPXM9Pntjb25zdCBkPWUuc2Vlbi5nZXQocyk7aWYobnVsbD09PWQucmVmKXJldHVybjtjb25zdCBtPWQuZGVmPz9kLnNjaGVtYSxoPXsuLi5tfSxnPWQucmVmO2lmKGQucmVmPW51bGwsZyl7ZmxhdHRlblJlZihnKTtjb25zdCBkPWUuc2Vlbi5nZXQoZykseD1kLnNjaGVtYTsheC4kcmVmfHwiZHJhZnQtMDciIT09ZS50YXJnZXQmJiJkcmFmdC0wNCIhPT1lLnRhcmdldCYmIm9wZW5hcGktMy4wIiE9PWUudGFyZ2V0P09iamVjdC5hc3NpZ24obSx4KToobS5hbGxPZj1tLmFsbE9mPz9bXSxtLmFsbE9mLnB1c2goeCkpLE9iamVjdC5hc3NpZ24obSxoKTtpZihzLl96b2QucGFyZW50PT09Zylmb3IoY29uc3QgZSBpbiBtKSIkcmVmIiE9PWUmJiJhbGxPZiIhPT1lJiYoZSBpbiBofHxkZWxldGUgbVtlXSk7aWYoeC4kcmVmJiZkLmRlZilmb3IoY29uc3QgZSBpbiBtKSIkcmVmIiE9PWUmJiJhbGxPZiIhPT1lJiZlIGluIGQuZGVmJiZKU09OLnN0cmluZ2lmeShtW2VdKT09PUpTT04uc3RyaW5naWZ5KGQuZGVmW2VdKSYmZGVsZXRlIG1bZV19Y29uc3QgeD1zLl96b2QucGFyZW50O2lmKHgmJnghPT1nKXtmbGF0dGVuUmVmKHgpO2NvbnN0IHM9ZS5zZWVuLmdldCh4KTtpZihzPy5zY2hlbWEuJHJlZiYmKG0uJHJlZj1zLnNjaGVtYS4kcmVmLHMuZGVmKSlmb3IoY29uc3QgZSBpbiBtKSIkcmVmIiE9PWUmJiJhbGxPZiIhPT1lJiZlIGluIHMuZGVmJiZKU09OLnN0cmluZ2lmeShtW2VdKT09PUpTT04uc3RyaW5naWZ5KHMuZGVmW2VdKSYmZGVsZXRlIG1bZV19ZS5vdmVycmlkZSh7em9kU2NoZW1hOnMsanNvblNjaGVtYTptLHBhdGg6ZC5wYXRoPz9bXX0pfTtmb3IoY29uc3QgcyBvZlsuLi5lLnNlZW4uZW50cmllcygpXS5yZXZlcnNlKCkpZmxhdHRlblJlZihzWzBdKTtjb25zdCBtPXt9O2lmKCJkcmFmdC0yMDIwLTEyIj09PWUudGFyZ2V0P20uJHNjaGVtYT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiOiJkcmFmdC0wNyI9PT1lLnRhcmdldD9tLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI6ImRyYWZ0LTA0Ij09PWUudGFyZ2V0P20uJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIjplLnRhcmdldCxlLmV4dGVybmFsPy51cmkpe2NvbnN0IGQ9ZS5leHRlcm5hbC5yZWdpc3RyeS5nZXQocyk/LmlkO2lmKCFkKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYW4gYGlkYCBwcm9wZXJ0eSIpO20uJGlkPWUuZXh0ZXJuYWwudXJpKGQpfU9iamVjdC5hc3NpZ24obSxkLmRlZj8/ZC5zY2hlbWEpO2NvbnN0IGg9ZS5leHRlcm5hbD8uZGVmcz8/e307Zm9yKGNvbnN0IHMgb2YgZS5zZWVuLmVudHJpZXMoKSl7Y29uc3QgZT1zWzFdO2UuZGVmJiZlLmRlZklkJiYoaFtlLmRlZklkXT1lLmRlZil9ZS5leHRlcm5hbHx8T2JqZWN0LmtleXMoaCkubGVuZ3RoPjAmJigiZHJhZnQtMjAyMC0xMiI9PT1lLnRhcmdldD9tLiRkZWZzPWg6bS5kZWZpbml0aW9ucz1oKTt0cnl7Y29uc3QgZD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG0pKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsIn5zdGFuZGFyZCIse3ZhbHVlOnsuLi5zWyJ+c3RhbmRhcmQiXSxqc29uU2NoZW1hOntpbnB1dDpjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QocywiaW5wdXQiLGUucHJvY2Vzc29ycyksb3V0cHV0OmNyZWF0ZVN0YW5kYXJkSlNPTlNjaGVtYU1ldGhvZChzLCJvdXRwdXQiLGUucHJvY2Vzc29ycyl9fSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksZH1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uIil9fWZ1bmN0aW9uIGlzVHJhbnNmb3JtaW5nKGUscyl7Y29uc3QgZD1zPz97c2VlbjpuZXcgU2V0fTtpZihkLnNlZW4uaGFzKGUpKXJldHVybiExO2Quc2Vlbi5hZGQoZSk7Y29uc3QgbT1lLl96b2QuZGVmO2lmKCJ0cmFuc2Zvcm0iPT09bS50eXBlKXJldHVybiEwO2lmKCJhcnJheSI9PT1tLnR5cGUpcmV0dXJuIGlzVHJhbnNmb3JtaW5nKG0uZWxlbWVudCxkKTtpZigic2V0Ij09PW0udHlwZSlyZXR1cm4gaXNUcmFuc2Zvcm1pbmcobS52YWx1ZVR5cGUsZCk7aWYoImxhenkiPT09bS50eXBlKXJldHVybiBpc1RyYW5zZm9ybWluZyhtLmdldHRlcigpLGQpO2lmKCJwcm9taXNlIj09PW0udHlwZXx8Im9wdGlvbmFsIj09PW0udHlwZXx8Im5vbm9wdGlvbmFsIj09PW0udHlwZXx8Im51bGxhYmxlIj09PW0udHlwZXx8InJlYWRvbmx5Ij09PW0udHlwZXx8ImRlZmF1bHQiPT09bS50eXBlfHwicHJlZmF1bHQiPT09bS50eXBlKXJldHVybiBpc1RyYW5zZm9ybWluZyhtLmlubmVyVHlwZSxkKTtpZigiaW50ZXJzZWN0aW9uIj09PW0udHlwZSlyZXR1cm4gaXNUcmFuc2Zvcm1pbmcobS5sZWZ0LGQpfHxpc1RyYW5zZm9ybWluZyhtLnJpZ2h0LGQpO2lmKCJyZWNvcmQiPT09bS50eXBlfHwibWFwIj09PW0udHlwZSlyZXR1cm4gaXNUcmFuc2Zvcm1pbmcobS5rZXlUeXBlLGQpfHxpc1RyYW5zZm9ybWluZyhtLnZhbHVlVHlwZSxkKTtpZigicGlwZSI9PT1tLnR5cGUpcmV0dXJuIGlzVHJhbnNmb3JtaW5nKG0uaW4sZCl8fGlzVHJhbnNmb3JtaW5nKG0ub3V0LGQpO2lmKCJvYmplY3QiPT09bS50eXBlKXtmb3IoY29uc3QgZSBpbiBtLnNoYXBlKWlmKGlzVHJhbnNmb3JtaW5nKG0uc2hhcGVbZV0sZCkpcmV0dXJuITA7cmV0dXJuITF9aWYoInVuaW9uIj09PW0udHlwZSl7Zm9yKGNvbnN0IGUgb2YgbS5vcHRpb25zKWlmKGlzVHJhbnNmb3JtaW5nKGUsZCkpcmV0dXJuITA7cmV0dXJuITF9aWYoInR1cGxlIj09PW0udHlwZSl7Zm9yKGNvbnN0IGUgb2YgbS5pdGVtcylpZihpc1RyYW5zZm9ybWluZyhlLGQpKXJldHVybiEwO3JldHVybiEoIW0ucmVzdHx8IWlzVHJhbnNmb3JtaW5nKG0ucmVzdCxkKSl9cmV0dXJuITF9Y29uc3QgY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kPShlLHM9e30pPT5kPT57Y29uc3QgbT1pbml0aWFsaXplQ29udGV4dCh7Li4uZCxwcm9jZXNzb3JzOnN9KTtyZXR1cm4gcHJvY2VzcyhlLG0pLGV4dHJhY3REZWZzKG0sZSksZmluYWxpemUobSxlKX0sY3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kPShlLHMsZD17fSk9Pm09Pntjb25zdHtsaWJyYXJ5T3B0aW9uczpoLHRhcmdldDpnfT1tPz97fSx4PWluaXRpYWxpemVDb250ZXh0KHsuLi5oPz97fSx0YXJnZXQ6ZyxpbzpzLHByb2Nlc3NvcnM6ZH0pO3JldHVybiBwcm9jZXNzKGUseCksZXh0cmFjdERlZnMoeCxlKSxmaW5hbGl6ZSh4LGUpfSxVcz17Z3VpZDoidXVpZCIsdXJsOiJ1cmkiLGRhdGV0aW1lOiJkYXRlLXRpbWUiLGpzb25fc3RyaW5nOiJqc29uLXN0cmluZyIscmVnZXg6IiJ9LHN0cmluZ1Byb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQ7aC50eXBlPSJzdHJpbmciO2NvbnN0e21pbmltdW06ZyxtYXhpbXVtOngsZm9ybWF0OiQscGF0dGVybnM6Uyxjb250ZW50RW5jb2Rpbmc6an09ZS5fem9kLmJhZztpZigibnVtYmVyIj09dHlwZW9mIGcmJihoLm1pbkxlbmd0aD1nKSwibnVtYmVyIj09dHlwZW9mIHgmJihoLm1heExlbmd0aD14KSwkJiYoaC5mb3JtYXQ9VXNbJF0/PyQsIiI9PT1oLmZvcm1hdCYmZGVsZXRlIGguZm9ybWF0LCJ0aW1lIj09PSQmJmRlbGV0ZSBoLmZvcm1hdCksaiYmKGguY29udGVudEVuY29kaW5nPWopLFMmJlMuc2l6ZT4wKXtjb25zdCBlPVsuLi5TXTsxPT09ZS5sZW5ndGg/aC5wYXR0ZXJuPWVbMF0uc291cmNlOmUubGVuZ3RoPjEmJihoLmFsbE9mPVsuLi5lLm1hcChlPT4oey4uLiJkcmFmdC0wNyI9PT1zLnRhcmdldHx8ImRyYWZ0LTA0Ij09PXMudGFyZ2V0fHwib3BlbmFwaS0zLjAiPT09cy50YXJnZXQ/e3R5cGU6InN0cmluZyJ9Ont9LHBhdHRlcm46ZS5zb3VyY2V9KSldKX19LG51bWJlclByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQse21pbmltdW06ZyxtYXhpbXVtOngsZm9ybWF0OiQsbXVsdGlwbGVPZjpTLGV4Y2x1c2l2ZU1heGltdW06aixleGNsdXNpdmVNaW5pbXVtOnp9PWUuX3pvZC5iYWc7InN0cmluZyI9PXR5cGVvZiAkJiYkLmluY2x1ZGVzKCJpbnQiKT9oLnR5cGU9ImludGVnZXIiOmgudHlwZT0ibnVtYmVyIiwibnVtYmVyIj09dHlwZW9mIHomJigiZHJhZnQtMDQiPT09cy50YXJnZXR8fCJvcGVuYXBpLTMuMCI9PT1zLnRhcmdldD8oaC5taW5pbXVtPXosaC5leGNsdXNpdmVNaW5pbXVtPSEwKTpoLmV4Y2x1c2l2ZU1pbmltdW09eiksIm51bWJlciI9PXR5cGVvZiBnJiYoaC5taW5pbXVtPWcsIm51bWJlciI9PXR5cGVvZiB6JiYiZHJhZnQtMDQiIT09cy50YXJnZXQmJih6Pj1nP2RlbGV0ZSBoLm1pbmltdW06ZGVsZXRlIGguZXhjbHVzaXZlTWluaW11bSkpLCJudW1iZXIiPT10eXBlb2YgaiYmKCJkcmFmdC0wNCI9PT1zLnRhcmdldHx8Im9wZW5hcGktMy4wIj09PXMudGFyZ2V0PyhoLm1heGltdW09aixoLmV4Y2x1c2l2ZU1heGltdW09ITApOmguZXhjbHVzaXZlTWF4aW11bT1qKSwibnVtYmVyIj09dHlwZW9mIHgmJihoLm1heGltdW09eCwibnVtYmVyIj09dHlwZW9mIGomJiJkcmFmdC0wNCIhPT1zLnRhcmdldCYmKGo8PXg/ZGVsZXRlIGgubWF4aW11bTpkZWxldGUgaC5leGNsdXNpdmVNYXhpbXVtKSksIm51bWJlciI9PXR5cGVvZiBTJiYoaC5tdWx0aXBsZU9mPVMpfSxib29sZWFuUHJvY2Vzc29yPShlLHMsZCxtKT0+e2QudHlwZT0iYm9vbGVhbiJ9LGJpZ2ludFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJCaWdJbnQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHN5bWJvbFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxudWxsUHJvY2Vzc29yPShlLHMsZCxtKT0+eyJvcGVuYXBpLTMuMCI9PT1zLnRhcmdldD8oZC50eXBlPSJzdHJpbmciLGQubnVsbGFibGU9ITAsZC5lbnVtPVtudWxsXSk6ZC50eXBlPSJudWxsIn0sdW5kZWZpbmVkUHJvY2Vzc29yPShlLHMsZCxtKT0+e2lmKCJ0aHJvdyI9PT1zLnVucmVwcmVzZW50YWJsZSl0aHJvdyBuZXcgRXJyb3IoIlVuZGVmaW5lZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sdm9pZFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJWb2lkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxuZXZlclByb2Nlc3Nvcj0oZSxzLGQsbSk9PntkLm5vdD17fX0sYW55UHJvY2Vzc29yPShlLHMsZCxtKT0+e30sdW5rbm93blByb2Nlc3Nvcj0oZSxzLGQsbSk9Pnt9LGRhdGVQcm9jZXNzb3I9KGUscyxkLG0pPT57aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiRGF0ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sZW51bVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWdldEVudW1WYWx1ZXMoZS5fem9kLmRlZi5lbnRyaWVzKTtoLmV2ZXJ5KGU9PiJudW1iZXIiPT10eXBlb2YgZSkmJihkLnR5cGU9Im51bWJlciIpLGguZXZlcnkoZT0+InN0cmluZyI9PXR5cGVvZiBlKSYmKGQudHlwZT0ic3RyaW5nIiksZC5lbnVtPWh9LGxpdGVyYWxQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9W107Zm9yKGNvbnN0IGUgb2YgaC52YWx1ZXMpaWYodm9pZCAwPT09ZSl7aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiTGl0ZXJhbCBgdW5kZWZpbmVkYCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX1lbHNlIGlmKCJiaWdpbnQiPT10eXBlb2YgZSl7aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpO2cucHVzaChOdW1iZXIoZSkpfWVsc2UgZy5wdXNoKGUpO2lmKDA9PT1nLmxlbmd0aCk7ZWxzZSBpZigxPT09Zy5sZW5ndGgpe2NvbnN0IGU9Z1swXTtkLnR5cGU9bnVsbD09PWU/Im51bGwiOnR5cGVvZiBlLCJkcmFmdC0wNCI9PT1zLnRhcmdldHx8Im9wZW5hcGktMy4wIj09PXMudGFyZ2V0P2QuZW51bT1bZV06ZC5jb25zdD1lfWVsc2UgZy5ldmVyeShlPT4ibnVtYmVyIj09dHlwZW9mIGUpJiYoZC50eXBlPSJudW1iZXIiKSxnLmV2ZXJ5KGU9PiJzdHJpbmciPT10eXBlb2YgZSkmJihkLnR5cGU9InN0cmluZyIpLGcuZXZlcnkoZT0+ImJvb2xlYW4iPT10eXBlb2YgZSkmJihkLnR5cGU9ImJvb2xlYW4iKSxnLmV2ZXJ5KGU9Pm51bGw9PT1lKSYmKGQudHlwZT0ibnVsbCIpLGQuZW51bT1nfSxuYW5Qcm9jZXNzb3I9KGUscyxkLG0pPT57aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiTmFOIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx0ZW1wbGF0ZUxpdGVyYWxQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1kLGc9ZS5fem9kLnBhdHRlcm47aWYoIWcpdGhyb3cgbmV3IEVycm9yKCJQYXR0ZXJuIG5vdCBmb3VuZCBpbiB0ZW1wbGF0ZSBsaXRlcmFsIik7aC50eXBlPSJzdHJpbmciLGgucGF0dGVybj1nLnNvdXJjZX0sZmlsZVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQsZz17dHlwZToic3RyaW5nIixmb3JtYXQ6ImJpbmFyeSIsY29udGVudEVuY29kaW5nOiJiaW5hcnkifSx7bWluaW11bTp4LG1heGltdW06JCxtaW1lOlN9PWUuX3pvZC5iYWc7dm9pZCAwIT09eCYmKGcubWluTGVuZ3RoPXgpLHZvaWQgMCE9PSQmJihnLm1heExlbmd0aD0kKSxTPzE9PT1TLmxlbmd0aD8oZy5jb250ZW50TWVkaWFUeXBlPVNbMF0sT2JqZWN0LmFzc2lnbihoLGcpKTooT2JqZWN0LmFzc2lnbihoLGcpLGguYW55T2Y9Uy5tYXAoZT0+KHtjb250ZW50TWVkaWFUeXBlOmV9KSkpOk9iamVjdC5hc3NpZ24oaCxnKX0sc3VjY2Vzc1Byb2Nlc3Nvcj0oZSxzLGQsbSk9PntkLnR5cGU9ImJvb2xlYW4ifSxjdXN0b21Qcm9jZXNzb3I9KGUscyxkLG0pPT57aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiQ3VzdG9tIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxmdW5jdGlvblByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJGdW5jdGlvbiB0eXBlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sdHJhbnNmb3JtUHJvY2Vzc29yPShlLHMsZCxtKT0+e2lmKCJ0aHJvdyI9PT1zLnVucmVwcmVzZW50YWJsZSl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zZm9ybXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LG1hcFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHNldFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJTZXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGFycmF5UHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZCxnPWUuX3pvZC5kZWYse21pbmltdW06eCxtYXhpbXVtOiR9PWUuX3pvZC5iYWc7Im51bWJlciI9PXR5cGVvZiB4JiYoaC5taW5JdGVtcz14KSwibnVtYmVyIj09dHlwZW9mICQmJihoLm1heEl0ZW1zPSQpLGgudHlwZT0iYXJyYXkiLGguaXRlbXM9cHJvY2VzcyhnLmVsZW1lbnQscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsIml0ZW1zIl19KX0sb2JqZWN0UHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZCxnPWUuX3pvZC5kZWY7aC50eXBlPSJvYmplY3QiLGgucHJvcGVydGllcz17fTtjb25zdCB4PWcuc2hhcGU7Zm9yKGNvbnN0IGUgaW4geCloLnByb3BlcnRpZXNbZV09cHJvY2Vzcyh4W2VdLHMsey4uLm0scGF0aDpbLi4ubS5wYXRoLCJwcm9wZXJ0aWVzIixlXX0pO2NvbnN0ICQ9bmV3IFNldChPYmplY3Qua2V5cyh4KSksUz1uZXcgU2V0KFsuLi4kXS5maWx0ZXIoZT0+e2NvbnN0IGQ9Zy5zaGFwZVtlXS5fem9kO3JldHVybiJpbnB1dCI9PT1zLmlvP3ZvaWQgMD09PWQub3B0aW46dm9pZCAwPT09ZC5vcHRvdXR9KSk7Uy5zaXplPjAmJihoLnJlcXVpcmVkPUFycmF5LmZyb20oUykpLCJuZXZlciI9PT1nLmNhdGNoYWxsPy5fem9kLmRlZi50eXBlP2guYWRkaXRpb25hbFByb3BlcnRpZXM9ITE6Zy5jYXRjaGFsbD9nLmNhdGNoYWxsJiYoaC5hZGRpdGlvbmFsUHJvcGVydGllcz1wcm9jZXNzKGcuY2F0Y2hhbGwscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIl19KSk6Im91dHB1dCI9PT1zLmlvJiYoaC5hZGRpdGlvbmFsUHJvcGVydGllcz0hMSl9LHVuaW9uUHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZS5fem9kLmRlZixnPSExPT09aC5pbmNsdXNpdmUseD1oLm9wdGlvbnMubWFwKChlLGQpPT5wcm9jZXNzKGUscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsZz8ib25lT2YiOiJhbnlPZiIsZF19KSk7Zz9kLm9uZU9mPXg6ZC5hbnlPZj14fSxpbnRlcnNlY3Rpb25Qcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9cHJvY2VzcyhoLmxlZnQscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsImFsbE9mIiwwXX0pLHg9cHJvY2VzcyhoLnJpZ2h0LHMsey4uLm0scGF0aDpbLi4ubS5wYXRoLCJhbGxPZiIsMV19KSxpc1NpbXBsZUludGVyc2VjdGlvbj1lPT4iYWxsT2YiaW4gZSYmMT09PU9iamVjdC5rZXlzKGUpLmxlbmd0aCwkPVsuLi5pc1NpbXBsZUludGVyc2VjdGlvbihnKT9nLmFsbE9mOltnXSwuLi5pc1NpbXBsZUludGVyc2VjdGlvbih4KT94LmFsbE9mOlt4XV07ZC5hbGxPZj0kfSx0dXBsZVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQsZz1lLl96b2QuZGVmO2gudHlwZT0iYXJyYXkiO2NvbnN0IHg9ImRyYWZ0LTIwMjAtMTIiPT09cy50YXJnZXQ/InByZWZpeEl0ZW1zIjoiaXRlbXMiLCQ9ImRyYWZ0LTIwMjAtMTIiPT09cy50YXJnZXR8fCJvcGVuYXBpLTMuMCI9PT1zLnRhcmdldD8iaXRlbXMiOiJhZGRpdGlvbmFsSXRlbXMiLFM9Zy5pdGVtcy5tYXAoKGUsZCk9PnByb2Nlc3MoZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCx4LGRdfSkpLGo9Zy5yZXN0P3Byb2Nlc3MoZy5yZXN0LHMsey4uLm0scGF0aDpbLi4ubS5wYXRoLCQsLi4uIm9wZW5hcGktMy4wIj09PXMudGFyZ2V0P1tnLml0ZW1zLmxlbmd0aF06W11dfSk6bnVsbDsiZHJhZnQtMjAyMC0xMiI9PT1zLnRhcmdldD8oaC5wcmVmaXhJdGVtcz1TLGomJihoLml0ZW1zPWopKToib3BlbmFwaS0zLjAiPT09cy50YXJnZXQ/KGguaXRlbXM9e2FueU9mOlN9LGomJmguaXRlbXMuYW55T2YucHVzaChqKSxoLm1pbkl0ZW1zPVMubGVuZ3RoLGp8fChoLm1heEl0ZW1zPVMubGVuZ3RoKSk6KGguaXRlbXM9UyxqJiYoaC5hZGRpdGlvbmFsSXRlbXM9aikpO2NvbnN0e21pbmltdW06eixtYXhpbXVtOkl9PWUuX3pvZC5iYWc7Im51bWJlciI9PXR5cGVvZiB6JiYoaC5taW5JdGVtcz16KSwibnVtYmVyIj09dHlwZW9mIEkmJihoLm1heEl0ZW1zPUkpfSxyZWNvcmRQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1kLGc9ZS5fem9kLmRlZjtoLnR5cGU9Im9iamVjdCI7Y29uc3QgeD1nLmtleVR5cGUsJD14Ll96b2QuYmFnLFM9JD8ucGF0dGVybnM7aWYoImxvb3NlIj09PWcubW9kZSYmUyYmUy5zaXplPjApe2NvbnN0IGU9cHJvY2VzcyhnLnZhbHVlVHlwZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCwicGF0dGVyblByb3BlcnRpZXMiLCIqIl19KTtoLnBhdHRlcm5Qcm9wZXJ0aWVzPXt9O2Zvcihjb25zdCBzIG9mIFMpaC5wYXR0ZXJuUHJvcGVydGllc1tzLnNvdXJjZV09ZX1lbHNlImRyYWZ0LTA3IiE9PXMudGFyZ2V0JiYiZHJhZnQtMjAyMC0xMiIhPT1zLnRhcmdldHx8KGgucHJvcGVydHlOYW1lcz1wcm9jZXNzKGcua2V5VHlwZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCwicHJvcGVydHlOYW1lcyJdfSkpLGguYWRkaXRpb25hbFByb3BlcnRpZXM9cHJvY2VzcyhnLnZhbHVlVHlwZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pO2NvbnN0IGo9eC5fem9kLnZhbHVlcztpZihqKXtjb25zdCBlPVsuLi5qXS5maWx0ZXIoZT0+InN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGUpO2UubGVuZ3RoPjAmJihoLnJlcXVpcmVkPWUpfX0sbnVsbGFibGVQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9cHJvY2VzcyhoLmlubmVyVHlwZSxzLG0pLHg9cy5zZWVuLmdldChlKTsib3BlbmFwaS0zLjAiPT09cy50YXJnZXQ/KHgucmVmPWguaW5uZXJUeXBlLGQubnVsbGFibGU9ITApOmQuYW55T2Y9W2cse3R5cGU6Im51bGwifV19LG5vbm9wdGlvbmFsUHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZS5fem9kLmRlZjtwcm9jZXNzKGguaW5uZXJUeXBlLHMsbSk7cy5zZWVuLmdldChlKS5yZWY9aC5pbm5lclR5cGV9LGRlZmF1bHRQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZSxkLmRlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoLmRlZmF1bHRWYWx1ZSkpfSxwcmVmYXVsdFByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWUuX3pvZC5kZWY7cHJvY2VzcyhoLmlubmVyVHlwZSxzLG0pO3Muc2Vlbi5nZXQoZSkucmVmPWguaW5uZXJUeXBlLCJpbnB1dCI9PT1zLmlvJiYoZC5fcHJlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoLmRlZmF1bHRWYWx1ZSkpKX0sY2F0Y2hQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtsZXQgZztzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZTt0cnl7Zz1oLmNhdGNoVmFsdWUodm9pZCAwKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgY2F0Y2ggdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEpTT04gU2NoZW1hIil9ZC5kZWZhdWx0PWd9LHBpcGVQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9ImlucHV0Ij09PXMuaW8/InRyYW5zZm9ybSI9PT1oLmluLl96b2QuZGVmLnR5cGU/aC5vdXQ6aC5pbjpoLm91dDtwcm9jZXNzKGcscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1nfSxyZWFkb25seVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWUuX3pvZC5kZWY7cHJvY2VzcyhoLmlubmVyVHlwZSxzLG0pO3Muc2Vlbi5nZXQoZSkucmVmPWguaW5uZXJUeXBlLGQucmVhZE9ubHk9ITB9LHByb21pc2VQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZX0sb3B0aW9uYWxQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZX0sbGF6eVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWUuX3pvZC5pbm5lclR5cGU7cHJvY2VzcyhoLHMsbSk7cy5zZWVuLmdldChlKS5yZWY9aH0sTHM9e3N0cmluZzpzdHJpbmdQcm9jZXNzb3IsbnVtYmVyOm51bWJlclByb2Nlc3Nvcixib29sZWFuOmJvb2xlYW5Qcm9jZXNzb3IsYmlnaW50OmJpZ2ludFByb2Nlc3NvcixzeW1ib2w6c3ltYm9sUHJvY2Vzc29yLG51bGw6bnVsbFByb2Nlc3Nvcix1bmRlZmluZWQ6dW5kZWZpbmVkUHJvY2Vzc29yLHZvaWQ6dm9pZFByb2Nlc3NvcixuZXZlcjpuZXZlclByb2Nlc3Nvcixhbnk6YW55UHJvY2Vzc29yLHVua25vd246dW5rbm93blByb2Nlc3NvcixkYXRlOmRhdGVQcm9jZXNzb3IsZW51bTplbnVtUHJvY2Vzc29yLGxpdGVyYWw6bGl0ZXJhbFByb2Nlc3NvcixuYW46bmFuUHJvY2Vzc29yLHRlbXBsYXRlX2xpdGVyYWw6dGVtcGxhdGVMaXRlcmFsUHJvY2Vzc29yLGZpbGU6ZmlsZVByb2Nlc3NvcixzdWNjZXNzOnN1Y2Nlc3NQcm9jZXNzb3IsY3VzdG9tOmN1c3RvbVByb2Nlc3NvcixmdW5jdGlvbjpmdW5jdGlvblByb2Nlc3Nvcix0cmFuc2Zvcm06dHJhbnNmb3JtUHJvY2Vzc29yLG1hcDptYXBQcm9jZXNzb3Isc2V0OnNldFByb2Nlc3NvcixhcnJheTphcnJheVByb2Nlc3NvcixvYmplY3Q6b2JqZWN0UHJvY2Vzc29yLHVuaW9uOnVuaW9uUHJvY2Vzc29yLGludGVyc2VjdGlvbjppbnRlcnNlY3Rpb25Qcm9jZXNzb3IsdHVwbGU6dHVwbGVQcm9jZXNzb3IscmVjb3JkOnJlY29yZFByb2Nlc3NvcixudWxsYWJsZTpudWxsYWJsZVByb2Nlc3Nvcixub25vcHRpb25hbDpub25vcHRpb25hbFByb2Nlc3NvcixkZWZhdWx0OmRlZmF1bHRQcm9jZXNzb3IscHJlZmF1bHQ6cHJlZmF1bHRQcm9jZXNzb3IsY2F0Y2g6Y2F0Y2hQcm9jZXNzb3IscGlwZTpwaXBlUHJvY2Vzc29yLHJlYWRvbmx5OnJlYWRvbmx5UHJvY2Vzc29yLHByb21pc2U6cHJvbWlzZVByb2Nlc3NvcixvcHRpb25hbDpvcHRpb25hbFByb2Nlc3NvcixsYXp5OmxhenlQcm9jZXNzb3J9O2Z1bmN0aW9uIHRvSlNPTlNjaGVtYShlLHMpe2lmKCJfaWRtYXAiaW4gZSl7Y29uc3QgZD1lLG09aW5pdGlhbGl6ZUNvbnRleHQoey4uLnMscHJvY2Vzc29yczpMc30pLGg9e307Zm9yKGNvbnN0IGUgb2YgZC5faWRtYXAuZW50cmllcygpKXtjb25zdFtzLGRdPWU7cHJvY2VzcyhkLG0pfWNvbnN0IGc9e30seD17cmVnaXN0cnk6ZCx1cmk6cz8udXJpLGRlZnM6aH07bS5leHRlcm5hbD14O2Zvcihjb25zdCBlIG9mIGQuX2lkbWFwLmVudHJpZXMoKSl7Y29uc3RbcyxkXT1lO2V4dHJhY3REZWZzKG0sZCksZ1tzXT1maW5hbGl6ZShtLGQpfWlmKE9iamVjdC5rZXlzKGgpLmxlbmd0aD4wKXtjb25zdCBlPSJkcmFmdC0yMDIwLTEyIj09PW0udGFyZ2V0PyIkZGVmcyI6ImRlZmluaXRpb25zIjtnLl9fc2hhcmVkPXtbZV06aH19cmV0dXJue3NjaGVtYXM6Z319Y29uc3QgZD1pbml0aWFsaXplQ29udGV4dCh7Li4ucyxwcm9jZXNzb3JzOkxzfSk7cmV0dXJuIHByb2Nlc3MoZSxkKSxleHRyYWN0RGVmcyhkLGUpLGZpbmFsaXplKGQsZSl9Y29uc3QgQXM9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHFzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55OkhhLCRab2RBcnJheTpYYSwkWm9kQXN5bmNFcnJvcjokWm9kQXN5bmNFcnJvciwkWm9kQmFzZTY0OkVhLCRab2RCYXNlNjRVUkw6T2EsJFpvZEJpZ0ludDpCYSwkWm9kQmlnSW50Rm9ybWF0OlphLCRab2RCb29sZWFuOkZhLCRab2RDSURSdjQ6VGEsJFpvZENJRFJ2NjpSYSwkWm9kQ1VJRDptYSwkWm9kQ1VJRDI6ZmEsJFpvZENhdGNoOnhzLCRab2RDaGVjazpFbywkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6TG8sJFpvZENoZWNrRW5kc1dpdGg6R28sJFpvZENoZWNrR3JlYXRlclRoYW46Tm8sJFpvZENoZWNrSW5jbHVkZXM6Sm8sJFpvZENoZWNrTGVuZ3RoRXF1YWxzOk1vLCRab2RDaGVja0xlc3NUaGFuOlBvLCRab2RDaGVja0xvd2VyQ2FzZTpIbywkWm9kQ2hlY2tNYXhMZW5ndGg6Qm8sJFpvZENoZWNrTWF4U2l6ZTpBbywkWm9kQ2hlY2tNaW1lVHlwZTpZbywkWm9kQ2hlY2tNaW5MZW5ndGg6Wm8sJFpvZENoZWNrTWluU2l6ZTpxbywkWm9kQ2hlY2tNdWx0aXBsZU9mOkRvLCRab2RDaGVja051bWJlckZvcm1hdDpVbywkWm9kQ2hlY2tPdmVyd3JpdGU6ZWEsJFpvZENoZWNrUHJvcGVydHk6WG8sJFpvZENoZWNrUmVnZXg6Vm8sJFpvZENoZWNrU2l6ZUVxdWFsczpGbywkWm9kQ2hlY2tTdGFydHNXaXRoOktvLCRab2RDaGVja1N0cmluZ0Zvcm1hdDpRbywkWm9kQ2hlY2tVcHBlckNhc2U6V28sJFpvZENvZGVjOlNzLCRab2RDdXN0b206VHMsJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpMYSwkWm9kRGF0ZTpHYSwkWm9kRGVmYXVsdDp2cywkWm9kRGlzY3JpbWluYXRlZFVuaW9uOnJzLCRab2RFMTY0OlBhLCRab2RFbWFpbDpsYSwkWm9kRW1vamk6dWEsJFpvZEVuY29kZUVycm9yOiRab2RFbmNvZGVFcnJvciwkWm9kRW51bTp1cywkWm9kRXJyb3I6anIsJFpvZEV4YWN0T3B0aW9uYWw6aHMsJFpvZEZpbGU6cHMsJFpvZEZ1bmN0aW9uOnpzLCRab2RHVUlEOmFhLCRab2RJUHY0OmphLCRab2RJUHY2OnphLCRab2RJU09EYXRlOnhhLCRab2RJU09EYXRlVGltZTpfYSwkWm9kSVNPRHVyYXRpb246JGEsJFpvZElTT1RpbWU6d2EsJFpvZEludGVyc2VjdGlvbjpvcywkWm9kSldUOlVhLCRab2RLU1VJRDp2YSwkWm9kTGF6eTpDcywkWm9kTGl0ZXJhbDpkcywkWm9kTUFDOkNhLCRab2RNYXA6bHMsJFpvZE5hTjp3cywkWm9kTmFub0lEOnBhLCRab2ROZXZlcjpKYSwkWm9kTm9uT3B0aW9uYWw6YnMsJFpvZE51bGw6VmEsJFpvZE51bGxhYmxlOmdzLCRab2ROdW1iZXI6QWEsJFpvZE51bWJlckZvcm1hdDpxYSwkWm9kT2JqZWN0OllhLCRab2RPYmplY3RKSVQ6ZXMsJFpvZE9wdGlvbmFsOmZzLCRab2RQaXBlOiRzLCRab2RQcmVmYXVsdDp5cywkWm9kUHJvbWlzZTpJcywkWm9kUmVhZG9ubHk6a3MsJFpvZFJlYWxFcnJvcjp6ciwkWm9kUmVjb3JkOnNzLCRab2RSZWdpc3RyeTokWm9kUmVnaXN0cnksJFpvZFNldDpjcywkWm9kU3RyaW5nOnJhLCRab2RTdHJpbmdGb3JtYXQ6b2EsJFpvZFN1Y2Nlc3M6X3MsJFpvZFN5bWJvbDpNYSwkWm9kVGVtcGxhdGVMaXRlcmFsOmpzLCRab2RUcmFuc2Zvcm06bXMsJFpvZFR1cGxlOmFzLCRab2RUeXBlOm5hLCRab2RVTElEOmhhLCRab2RVUkw6Y2EsJFpvZFVVSUQ6c2EsJFpvZFVuZGVmaW5lZDpRYSwkWm9kVW5pb246dHMsJFpvZFVua25vd246V2EsJFpvZFZvaWQ6S2EsJFpvZFhJRDpnYSwkWm9kWG9yOm5zLCRicmFuZDpnciwkY29uc3RydWN0b3I6JGNvbnN0cnVjdG9yLCRpbnB1dDpQcywkb3V0cHV0Ok9zLERvYzpEb2MsSlNPTlNjaGVtYTpBcyxKU09OU2NoZW1hR2VuZXJhdG9yOmNsYXNze2dldCBtZXRhZGF0YVJlZ2lzdHJ5KCl7cmV0dXJuIHRoaXMuY3R4Lm1ldGFkYXRhUmVnaXN0cnl9Z2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmN0eC50YXJnZXR9Z2V0IHVucmVwcmVzZW50YWJsZSgpe3JldHVybiB0aGlzLmN0eC51bnJlcHJlc2VudGFibGV9Z2V0IG92ZXJyaWRlKCl7cmV0dXJuIHRoaXMuY3R4Lm92ZXJyaWRlfWdldCBpbygpe3JldHVybiB0aGlzLmN0eC5pb31nZXQgY291bnRlcigpe3JldHVybiB0aGlzLmN0eC5jb3VudGVyfXNldCBjb3VudGVyKGUpe3RoaXMuY3R4LmNvdW50ZXI9ZX1nZXQgc2Vlbigpe3JldHVybiB0aGlzLmN0eC5zZWVufWNvbnN0cnVjdG9yKGUpe2xldCBzPWU/LnRhcmdldD8/ImRyYWZ0LTIwMjAtMTIiOyJkcmFmdC00Ij09PXMmJihzPSJkcmFmdC0wNCIpLCJkcmFmdC03Ij09PXMmJihzPSJkcmFmdC0wNyIpLHRoaXMuY3R4PWluaXRpYWxpemVDb250ZXh0KHtwcm9jZXNzb3JzOkxzLHRhcmdldDpzLC4uLmU/Lm1ldGFkYXRhJiZ7bWV0YWRhdGE6ZS5tZXRhZGF0YX0sLi4uZT8udW5yZXByZXNlbnRhYmxlJiZ7dW5yZXByZXNlbnRhYmxlOmUudW5yZXByZXNlbnRhYmxlfSwuLi5lPy5vdmVycmlkZSYme292ZXJyaWRlOmUub3ZlcnJpZGV9LC4uLmU/LmlvJiZ7aW86ZS5pb319KX1wcm9jZXNzKGUscz17cGF0aDpbXSxzY2hlbWFQYXRoOltdfSl7cmV0dXJuIHByb2Nlc3MoZSx0aGlzLmN0eCxzKX1lbWl0KGUscyl7cyYmKHMuY3ljbGVzJiYodGhpcy5jdHguY3ljbGVzPXMuY3ljbGVzKSxzLnJldXNlZCYmKHRoaXMuY3R4LnJldXNlZD1zLnJldXNlZCkscy5leHRlcm5hbCYmKHRoaXMuY3R4LmV4dGVybmFsPXMuZXh0ZXJuYWwpKSxleHRyYWN0RGVmcyh0aGlzLmN0eCxlKTtjb25zdCBkPWZpbmFsaXplKHRoaXMuY3R4LGUpLHsifnN0YW5kYXJkIjptLC4uLmh9PWQ7cmV0dXJuIGh9fSxORVZFUjpocixUaW1lUHJlY2lzaW9uOkRzLF9hbnk6X2FueSxfYXJyYXk6X2FycmF5LF9iYXNlNjQ6X2Jhc2U2NCxfYmFzZTY0dXJsOl9iYXNlNjR1cmwsX2JpZ2ludDpfYmlnaW50LF9ib29sZWFuOl9ib29sZWFuLF9jYXRjaDpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOnMsY2F0Y2hWYWx1ZToiZnVuY3Rpb24iPT10eXBlb2YgZD9kOigpPT5kfSl9LF9jaGVjazpfY2hlY2ssX2NpZHJ2NDpfY2lkcnY0LF9jaWRydjY6X2NpZHJ2NixfY29lcmNlZEJpZ2ludDpfY29lcmNlZEJpZ2ludCxfY29lcmNlZEJvb2xlYW46X2NvZXJjZWRCb29sZWFuLF9jb2VyY2VkRGF0ZTpfY29lcmNlZERhdGUsX2NvZXJjZWROdW1iZXI6X2NvZXJjZWROdW1iZXIsX2NvZXJjZWRTdHJpbmc6X2NvZXJjZWRTdHJpbmcsX2N1aWQ6X2N1aWQsX2N1aWQyOl9jdWlkMixfY3VzdG9tOl9jdXN0b20sX2RhdGU6X2RhdGUsX2RlY29kZTpfZGVjb2RlLF9kZWNvZGVBc3luYzpfZGVjb2RlQXN5bmMsX2RlZmF1bHQ6ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOnMsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkP2QoKTpzaGFsbG93Q2xvbmUoZCl9fSl9LF9kaXNjcmltaW5hdGVkVW5pb246ZnVuY3Rpb24oZSxzLGQsbSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpkLGRpc2NyaW1pbmF0b3I6cywuLi5ub3JtYWxpemVQYXJhbXMobSl9KX0sX2UxNjQ6X2UxNjQsX2VtYWlsOl9lbWFpbCxfZW1vamk6X2Vtb2ppLF9lbmNvZGU6X2VuY29kZSxfZW5jb2RlQXN5bmM6X2VuY29kZUFzeW5jLF9lbmRzV2l0aDpfZW5kc1dpdGgsX2VudW06ZnVuY3Rpb24oZSxzLGQpe2NvbnN0IG09QXJyYXkuaXNBcnJheShzKT9PYmplY3QuZnJvbUVudHJpZXMocy5tYXAoZT0+W2UsZV0pKTpzO3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczptLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfZmlsZTpfZmlsZSxfZmxvYXQzMjpfZmxvYXQzMixfZmxvYXQ2NDpfZmxvYXQ2NCxfZ3Q6X2d0LF9ndGU6X2d0ZSxfZ3VpZDpfZ3VpZCxfaW5jbHVkZXM6X2luY2x1ZGVzLF9pbnQ6X2ludCxfaW50MzI6X2ludDMyLF9pbnQ2NDpfaW50NjQsX2ludGVyc2VjdGlvbjpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJpbnRlcnNlY3Rpb24iLGxlZnQ6cyxyaWdodDpkfSl9LF9pcHY0Ol9pcHY0LF9pcHY2Ol9pcHY2LF9pc29EYXRlOl9pc29EYXRlLF9pc29EYXRlVGltZTpfaXNvRGF0ZVRpbWUsX2lzb0R1cmF0aW9uOl9pc29EdXJhdGlvbixfaXNvVGltZTpfaXNvVGltZSxfand0Ol9qd3QsX2tzdWlkOl9rc3VpZCxfbGF6eTpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibGF6eSIsZ2V0dGVyOnN9KX0sX2xlbmd0aDpfbGVuZ3RoLF9saXRlcmFsOmZ1bmN0aW9uKGUscyxkKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHMpP3M6W3NdLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfbG93ZXJjYXNlOl9sb3dlcmNhc2UsX2x0Ol9sdCxfbHRlOl9sdGUsX21hYzpfbWFjLF9tYXA6ZnVuY3Rpb24oZSxzLGQsbSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJtYXAiLGtleVR5cGU6cyx2YWx1ZVR5cGU6ZCwuLi5ub3JtYWxpemVQYXJhbXMobSl9KX0sX21heDpfbHRlLF9tYXhMZW5ndGg6X21heExlbmd0aCxfbWF4U2l6ZTpfbWF4U2l6ZSxfbWltZTpfbWltZSxfbWluOl9ndGUsX21pbkxlbmd0aDpfbWluTGVuZ3RoLF9taW5TaXplOl9taW5TaXplLF9tdWx0aXBsZU9mOl9tdWx0aXBsZU9mLF9uYW46X25hbixfbmFub2lkOl9uYW5vaWQsX25hdGl2ZUVudW06ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfbmVnYXRpdmU6X25lZ2F0aXZlLF9uZXZlcjpfbmV2ZXIsX25vbm5lZ2F0aXZlOl9ub25uZWdhdGl2ZSxfbm9ub3B0aW9uYWw6ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfbm9ucG9zaXRpdmU6X25vbnBvc2l0aXZlLF9ub3JtYWxpemU6X25vcm1hbGl6ZSxfbnVsbDpfbnVsbCQxLF9udWxsYWJsZTpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVsbGFibGUiLGlubmVyVHlwZTpzfSl9LF9udW1iZXI6X251bWJlcixfb3B0aW9uYWw6ZnVuY3Rpb24oZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c30pfSxfb3ZlcndyaXRlOl9vdmVyd3JpdGUsX3BhcnNlOl9wYXJzZSxfcGFyc2VBc3luYzpfcGFyc2VBc3luYyxfcGlwZTpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJwaXBlIixpbjpzLG91dDpkfSl9LF9wb3NpdGl2ZTpfcG9zaXRpdmUsX3Byb21pc2U6ZnVuY3Rpb24oZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InByb21pc2UiLGlubmVyVHlwZTpzfSl9LF9wcm9wZXJ0eTpfcHJvcGVydHksX3JlYWRvbmx5OmZ1bmN0aW9uKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOnN9KX0sX3JlY29yZDpmdW5jdGlvbihlLHMsZCxtKXtyZXR1cm4gbmV3IGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTpzLHZhbHVlVHlwZTpkLC4uLm5vcm1hbGl6ZVBhcmFtcyhtKX0pfSxfcmVmaW5lOl9yZWZpbmUsX3JlZ2V4Ol9yZWdleCxfc2FmZURlY29kZTpfc2FmZURlY29kZSxfc2FmZURlY29kZUFzeW5jOl9zYWZlRGVjb2RlQXN5bmMsX3NhZmVFbmNvZGU6X3NhZmVFbmNvZGUsX3NhZmVFbmNvZGVBc3luYzpfc2FmZUVuY29kZUFzeW5jLF9zYWZlUGFyc2U6X3NhZmVQYXJzZSxfc2FmZVBhcnNlQXN5bmM6X3NhZmVQYXJzZUFzeW5jLF9zZXQ6ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToic2V0Iix2YWx1ZVR5cGU6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX0sX3NpemU6X3NpemUsX3NsdWdpZnk6X3NsdWdpZnksX3N0YXJ0c1dpdGg6X3N0YXJ0c1dpdGgsX3N0cmluZzpfc3RyaW5nLF9zdHJpbmdGb3JtYXQ6X3N0cmluZ0Zvcm1hdCxfc3RyaW5nYm9vbDpfc3RyaW5nYm9vbCxfc3VjY2VzczpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3VjY2VzcyIsaW5uZXJUeXBlOnN9KX0sX3N1cGVyUmVmaW5lOl9zdXBlclJlZmluZSxfc3ltYm9sOl9zeW1ib2wsX3RlbXBsYXRlTGl0ZXJhbDpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfdG9Mb3dlckNhc2U6X3RvTG93ZXJDYXNlLF90b1VwcGVyQ2FzZTpfdG9VcHBlckNhc2UsX3RyYW5zZm9ybTpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToidHJhbnNmb3JtIix0cmFuc2Zvcm06c30pfSxfdHJpbTpfdHJpbSxfdHVwbGU6ZnVuY3Rpb24oZSxzLGQsbSl7Y29uc3QgaD1kIGluc3RhbmNlb2YgbmE7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0dXBsZSIsaXRlbXM6cyxyZXN0Omg/ZDpudWxsLC4uLm5vcm1hbGl6ZVBhcmFtcyhoP206ZCl9KX0sX3VpbnQzMjpfdWludDMyLF91aW50NjQ6X3VpbnQ2NCxfdWxpZDpfdWxpZCxfdW5kZWZpbmVkOl91bmRlZmluZWQkMSxfdW5pb246ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX0sX3Vua25vd246X3Vua25vd24sX3VwcGVyY2FzZTpfdXBwZXJjYXNlLF91cmw6X3VybCxfdXVpZDpfdXVpZCxfdXVpZHY0Ol91dWlkdjQsX3V1aWR2NjpfdXVpZHY2LF91dWlkdjc6X3V1aWR2Nyxfdm9pZDpfdm9pZCQxLF94aWQ6X3hpZCxfeG9yOmZ1bmN0aW9uKGUscyxkKXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuaW9uIixvcHRpb25zOnMsaW5jbHVzaXZlOiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxjbG9uZTpjbG9uZSxjb25maWc6Y29uZmlnLGNyZWF0ZVN0YW5kYXJkSlNPTlNjaGVtYU1ldGhvZDpjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QsY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOmNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZCxkZWNvZGU6T3IsZGVjb2RlQXN5bmM6TnIsZGVzY3JpYmU6ZGVzY3JpYmUkMSxlbmNvZGU6RXIsZW5jb2RlQXN5bmM6UHIsZXh0cmFjdERlZnM6ZXh0cmFjdERlZnMsZmluYWxpemU6ZmluYWxpemUsZmxhdHRlbkVycm9yOmZsYXR0ZW5FcnJvcixmb3JtYXRFcnJvcjpmb3JtYXRFcnJvcixnbG9iYWxDb25maWc6dnIsZ2xvYmFsUmVnaXN0cnk6TnMsaW5pdGlhbGl6ZUNvbnRleHQ6aW5pdGlhbGl6ZUNvbnRleHQsaXNWYWxpZEJhc2U2NDppc1ZhbGlkQmFzZTY0LGlzVmFsaWRCYXNlNjRVUkw6aXNWYWxpZEJhc2U2NFVSTCxpc1ZhbGlkSldUOmlzVmFsaWRKV1QsbG9jYWxlczpScyxtZXRhOm1ldGEkMSxwYXJzZTpJcixwYXJzZUFzeW5jOkNyLHByZXR0aWZ5RXJyb3I6cHJldHRpZnlFcnJvcixwcm9jZXNzOnByb2Nlc3MscmVnZXhlczpSbyxyZWdpc3RyeTpyZWdpc3RyeSxzYWZlRGVjb2RlOlVyLHNhZmVEZWNvZGVBc3luYzpBcixzYWZlRW5jb2RlOkRyLHNhZmVFbmNvZGVBc3luYzpMcixzYWZlUGFyc2U6VHIsc2FmZVBhcnNlQXN5bmM6UnIsdG9Eb3RQYXRoOnRvRG90UGF0aCx0b0pTT05TY2hlbWE6dG9KU09OU2NoZW1hLHRyZWVpZnlFcnJvcjp0cmVlaWZ5RXJyb3IsdXRpbDprcix2ZXJzaW9uOnRhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEZzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbmRzV2l0aDpfZW5kc1dpdGgsZ3Q6X2d0LGd0ZTpfZ3RlLGluY2x1ZGVzOl9pbmNsdWRlcyxsZW5ndGg6X2xlbmd0aCxsb3dlcmNhc2U6X2xvd2VyY2FzZSxsdDpfbHQsbHRlOl9sdGUsbWF4TGVuZ3RoOl9tYXhMZW5ndGgsbWF4U2l6ZTpfbWF4U2l6ZSxtaW1lOl9taW1lLG1pbkxlbmd0aDpfbWluTGVuZ3RoLG1pblNpemU6X21pblNpemUsbXVsdGlwbGVPZjpfbXVsdGlwbGVPZixuZWdhdGl2ZTpfbmVnYXRpdmUsbm9ubmVnYXRpdmU6X25vbm5lZ2F0aXZlLG5vbnBvc2l0aXZlOl9ub25wb3NpdGl2ZSxub3JtYWxpemU6X25vcm1hbGl6ZSxvdmVyd3JpdGU6X292ZXJ3cml0ZSxwb3NpdGl2ZTpfcG9zaXRpdmUscHJvcGVydHk6X3Byb3BlcnR5LHJlZ2V4Ol9yZWdleCxzaXplOl9zaXplLHNsdWdpZnk6X3NsdWdpZnksc3RhcnRzV2l0aDpfc3RhcnRzV2l0aCx0b0xvd2VyQ2FzZTpfdG9Mb3dlckNhc2UsdG9VcHBlckNhc2U6X3RvVXBwZXJDYXNlLHRyaW06X3RyaW0sdXBwZXJjYXNlOl91cHBlcmNhc2V9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksQnM9JGNvbnN0cnVjdG9yKCJab2RJU09EYXRlVGltZSIsKGUscyk9PntfYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gZGF0ZXRpbWUoZSl7cmV0dXJuIF9pc29EYXRlVGltZShCcyxlKX1jb25zdCBacz0kY29uc3RydWN0b3IoIlpvZElTT0RhdGUiLChlLHMpPT57eGEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGRhdGUkMihlKXtyZXR1cm4gX2lzb0RhdGUoWnMsZSl9Y29uc3QgTXM9JGNvbnN0cnVjdG9yKCJab2RJU09UaW1lIiwoZSxzKT0+e3dhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiB0aW1lKGUpe3JldHVybiBfaXNvVGltZShNcyxlKX1jb25zdCBRcz0kY29uc3RydWN0b3IoIlpvZElTT0R1cmF0aW9uIiwoZSxzKT0+eyRhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBkdXJhdGlvbihlKXtyZXR1cm4gX2lzb0R1cmF0aW9uKFFzLGUpfWNvbnN0IFZzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RJU09EYXRlOlpzLFpvZElTT0RhdGVUaW1lOkJzLFpvZElTT0R1cmF0aW9uOlFzLFpvZElTT1RpbWU6TXMsZGF0ZTpkYXRlJDIsZGF0ZXRpbWU6ZGF0ZXRpbWUsZHVyYXRpb246ZHVyYXRpb24sdGltZTp0aW1lfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGluaXRpYWxpemVyPShlLHMpPT57anIuaW5pdChlLHMpLGUubmFtZT0iWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse2Zvcm1hdDp7dmFsdWU6cz0+Zm9ybWF0RXJyb3IoZSxzKX0sZmxhdHRlbjp7dmFsdWU6cz0+ZmxhdHRlbkVycm9yKGUscyl9LGFkZElzc3VlOnt2YWx1ZTpzPT57ZS5pc3N1ZXMucHVzaChzKSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoZS5pc3N1ZXMsanNvblN0cmluZ2lmeVJlcGxhY2VyLDIpfX0sYWRkSXNzdWVzOnt2YWx1ZTpzPT57ZS5pc3N1ZXMucHVzaCguLi5zKSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoZS5pc3N1ZXMsanNvblN0cmluZ2lmeVJlcGxhY2VyLDIpfX0saXNFbXB0eTp7Z2V0OigpPT4wPT09ZS5pc3N1ZXMubGVuZ3RofX0pfSxIcz0kY29uc3RydWN0b3IoIlpvZEVycm9yIixpbml0aWFsaXplciksV3M9JGNvbnN0cnVjdG9yKCJab2RFcnJvciIsaW5pdGlhbGl6ZXIse1BhcmVudDpFcnJvcn0pLEpzPV9wYXJzZShXcyksS3M9X3BhcnNlQXN5bmMoV3MpLEdzPV9zYWZlUGFyc2UoV3MpLFhzPV9zYWZlUGFyc2VBc3luYyhXcyksWXM9X2VuY29kZShXcyksZWw9X2RlY29kZShXcyksdGw9X2VuY29kZUFzeW5jKFdzKSxubD1fZGVjb2RlQXN5bmMoV3MpLGlsPV9zYWZlRW5jb2RlKFdzKSxybD1fc2FmZURlY29kZShXcyksb2w9X3NhZmVFbmNvZGVBc3luYyhXcyksYWw9X3NhZmVEZWNvZGVBc3luYyhXcyksc2w9JGNvbnN0cnVjdG9yKCJab2RUeXBlIiwoZSxzKT0+KG5hLmluaXQoZSxzKSxPYmplY3QuYXNzaWduKGVbIn5zdGFuZGFyZCJdLHtqc29uU2NoZW1hOntpbnB1dDpjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QoZSwiaW5wdXQiKSxvdXRwdXQ6Y3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kKGUsIm91dHB1dCIpfX0pLGUudG9KU09OU2NoZW1hPWNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZChlLHt9KSxlLmRlZj1zLGUudHlwZT1zLnR5cGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9kZWYiLHt2YWx1ZTpzfSksZS5jaGVjaz0oLi4uZCk9PmUuY2xvbmUobWVyZ2VEZWZzKHMse2NoZWNrczpbLi4ucy5jaGVja3M/P1tdLC4uLmQubWFwKGU9PiJmdW5jdGlvbiI9PXR5cGVvZiBlP3tfem9kOntjaGVjazplLGRlZjp7Y2hlY2s6ImN1c3RvbSJ9LG9uYXR0YWNoOltdfX06ZSldfSkse3BhcmVudDohMH0pLGUud2l0aD1lLmNoZWNrLGUuY2xvbmU9KHMsZCk9PmNsb25lKGUscyxkKSxlLmJyYW5kPSgpPT5lLGUucmVnaXN0ZXI9KHMsZCk9PihzLmFkZChlLGQpLGUpLGUucGFyc2U9KHMsZCk9PkpzKGUscyxkLHtjYWxsZWU6ZS5wYXJzZX0pLGUuc2FmZVBhcnNlPShzLGQpPT5HcyhlLHMsZCksZS5wYXJzZUFzeW5jPWFzeW5jKHMsZCk9PktzKGUscyxkLHtjYWxsZWU6ZS5wYXJzZUFzeW5jfSksZS5zYWZlUGFyc2VBc3luYz1hc3luYyhzLGQpPT5YcyhlLHMsZCksZS5zcGE9ZS5zYWZlUGFyc2VBc3luYyxlLmVuY29kZT0ocyxkKT0+WXMoZSxzLGQpLGUuZGVjb2RlPShzLGQpPT5lbChlLHMsZCksZS5lbmNvZGVBc3luYz1hc3luYyhzLGQpPT50bChlLHMsZCksZS5kZWNvZGVBc3luYz1hc3luYyhzLGQpPT5ubChlLHMsZCksZS5zYWZlRW5jb2RlPShzLGQpPT5pbChlLHMsZCksZS5zYWZlRGVjb2RlPShzLGQpPT5ybChlLHMsZCksZS5zYWZlRW5jb2RlQXN5bmM9YXN5bmMocyxkKT0+b2woZSxzLGQpLGUuc2FmZURlY29kZUFzeW5jPWFzeW5jKHMsZCk9PmFsKGUscyxkKSxlLnJlZmluZT0ocyxkKT0+ZS5jaGVjayhyZWZpbmUocyxkKSksZS5zdXBlclJlZmluZT1zPT5lLmNoZWNrKHN1cGVyUmVmaW5lKHMpKSxlLm92ZXJ3cml0ZT1zPT5lLmNoZWNrKF9vdmVyd3JpdGUocykpLGUub3B0aW9uYWw9KCk9Pm9wdGlvbmFsKGUpLGUuZXhhY3RPcHRpb25hbD0oKT0+ZXhhY3RPcHRpb25hbChlKSxlLm51bGxhYmxlPSgpPT5udWxsYWJsZShlKSxlLm51bGxpc2g9KCk9Pm9wdGlvbmFsKG51bGxhYmxlKGUpKSxlLm5vbm9wdGlvbmFsPXM9Pm5vbm9wdGlvbmFsKGUscyksZS5hcnJheT0oKT0+YXJyYXkoZSksZS5vcj1zPT51bmlvbiQxKFtlLHNdKSxlLmFuZD1zPT5pbnRlcnNlY3Rpb24oZSxzKSxlLnRyYW5zZm9ybT1zPT5waXBlKGUsdHJhbnNmb3JtKHMpKSxlLmRlZmF1bHQ9cz0+X2RlZmF1bHQkMihlLHMpLGUucHJlZmF1bHQ9cz0+cHJlZmF1bHQoZSxzKSxlLmNhdGNoPXM9Pl9jYXRjaChlLHMpLGUucGlwZT1zPT5waXBlKGUscyksZS5yZWFkb25seT0oKT0+cmVhZG9ubHkoZSksZS5kZXNjcmliZT1zPT57Y29uc3QgZD1lLmNsb25lKCk7cmV0dXJuIE5zLmFkZChkLHtkZXNjcmlwdGlvbjpzfSksZH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImRlc2NyaXB0aW9uIix7Z2V0OigpPT5Ocy5nZXQoZSk/LmRlc2NyaXB0aW9uLGNvbmZpZ3VyYWJsZTohMH0pLGUubWV0YT0oLi4ucyk9PntpZigwPT09cy5sZW5ndGgpcmV0dXJuIE5zLmdldChlKTtjb25zdCBkPWUuY2xvbmUoKTtyZXR1cm4gTnMuYWRkKGQsc1swXSksZH0sZS5pc09wdGlvbmFsPSgpPT5lLnNhZmVQYXJzZSh2b2lkIDApLnN1Y2Nlc3MsZS5pc051bGxhYmxlPSgpPT5lLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzLGUuYXBwbHk9cz0+cyhlKSxlKSksbGw9JGNvbnN0cnVjdG9yKCJfWm9kU3RyaW5nIiwoZSxzKT0+e3JhLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnN0cmluZ1Byb2Nlc3NvcihlLHMsZCk7Y29uc3QgZD1lLl96b2QuYmFnO2UuZm9ybWF0PWQuZm9ybWF0Pz9udWxsLGUubWluTGVuZ3RoPWQubWluaW11bT8/bnVsbCxlLm1heExlbmd0aD1kLm1heGltdW0/P251bGwsZS5yZWdleD0oLi4ucyk9PmUuY2hlY2soX3JlZ2V4KC4uLnMpKSxlLmluY2x1ZGVzPSguLi5zKT0+ZS5jaGVjayhfaW5jbHVkZXMoLi4ucykpLGUuc3RhcnRzV2l0aD0oLi4ucyk9PmUuY2hlY2soX3N0YXJ0c1dpdGgoLi4ucykpLGUuZW5kc1dpdGg9KC4uLnMpPT5lLmNoZWNrKF9lbmRzV2l0aCguLi5zKSksZS5taW49KC4uLnMpPT5lLmNoZWNrKF9taW5MZW5ndGgoLi4ucykpLGUubWF4PSguLi5zKT0+ZS5jaGVjayhfbWF4TGVuZ3RoKC4uLnMpKSxlLmxlbmd0aD0oLi4ucyk9PmUuY2hlY2soX2xlbmd0aCguLi5zKSksZS5ub25lbXB0eT0oLi4ucyk9PmUuY2hlY2soX21pbkxlbmd0aCgxLC4uLnMpKSxlLmxvd2VyY2FzZT1zPT5lLmNoZWNrKF9sb3dlcmNhc2UocykpLGUudXBwZXJjYXNlPXM9PmUuY2hlY2soX3VwcGVyY2FzZShzKSksZS50cmltPSgpPT5lLmNoZWNrKF90cmltKCkpLGUubm9ybWFsaXplPSguLi5zKT0+ZS5jaGVjayhfbm9ybWFsaXplKC4uLnMpKSxlLnRvTG93ZXJDYXNlPSgpPT5lLmNoZWNrKF90b0xvd2VyQ2FzZSgpKSxlLnRvVXBwZXJDYXNlPSgpPT5lLmNoZWNrKF90b1VwcGVyQ2FzZSgpKSxlLnNsdWdpZnk9KCk9PmUuY2hlY2soX3NsdWdpZnkoKSl9KSxjbD0kY29uc3RydWN0b3IoIlpvZFN0cmluZyIsKGUscyk9PntyYS5pbml0KGUscyksbGwuaW5pdChlLHMpLGUuZW1haWw9cz0+ZS5jaGVjayhfZW1haWwoZGwscykpLGUudXJsPXM9PmUuY2hlY2soX3VybChmbCxzKSksZS5qd3Q9cz0+ZS5jaGVjayhfand0KFRsLHMpKSxlLmVtb2ppPXM9PmUuY2hlY2soX2Vtb2ppKGhsLHMpKSxlLmd1aWQ9cz0+ZS5jaGVjayhfZ3VpZChwbCxzKSksZS51dWlkPXM9PmUuY2hlY2soX3V1aWQobWwscykpLGUudXVpZHY0PXM9PmUuY2hlY2soX3V1aWR2NChtbCxzKSksZS51dWlkdjY9cz0+ZS5jaGVjayhfdXVpZHY2KG1sLHMpKSxlLnV1aWR2Nz1zPT5lLmNoZWNrKF91dWlkdjcobWwscykpLGUubmFub2lkPXM9PmUuY2hlY2soX25hbm9pZChnbCxzKSksZS5ndWlkPXM9PmUuY2hlY2soX2d1aWQocGwscykpLGUuY3VpZD1zPT5lLmNoZWNrKF9jdWlkKHZsLHMpKSxlLmN1aWQyPXM9PmUuY2hlY2soX2N1aWQyKHlsLHMpKSxlLnVsaWQ9cz0+ZS5jaGVjayhfdWxpZChibCxzKSksZS5iYXNlNjQ9cz0+ZS5jaGVjayhfYmFzZTY0KHpsLHMpKSxlLmJhc2U2NHVybD1zPT5lLmNoZWNrKF9iYXNlNjR1cmwoSWwscykpLGUueGlkPXM9PmUuY2hlY2soX3hpZChfbCxzKSksZS5rc3VpZD1zPT5lLmNoZWNrKF9rc3VpZCh4bCxzKSksZS5pcHY0PXM9PmUuY2hlY2soX2lwdjQod2wscykpLGUuaXB2Nj1zPT5lLmNoZWNrKF9pcHY2KFNsLHMpKSxlLmNpZHJ2ND1zPT5lLmNoZWNrKF9jaWRydjQoa2wscykpLGUuY2lkcnY2PXM9PmUuY2hlY2soX2NpZHJ2NihqbCxzKSksZS5lMTY0PXM9PmUuY2hlY2soX2UxNjQoQ2wscykpLGUuZGF0ZXRpbWU9cz0+ZS5jaGVjayhkYXRldGltZShzKSksZS5kYXRlPXM9PmUuY2hlY2soZGF0ZSQyKHMpKSxlLnRpbWU9cz0+ZS5jaGVjayh0aW1lKHMpKSxlLmR1cmF0aW9uPXM9PmUuY2hlY2soZHVyYXRpb24ocykpfSk7ZnVuY3Rpb24gc3RyaW5nJDEoZSl7cmV0dXJuIF9zdHJpbmcoY2wsZSl9Y29uc3QgdWw9JGNvbnN0cnVjdG9yKCJab2RTdHJpbmdGb3JtYXQiLChlLHMpPT57b2EuaW5pdChlLHMpLGxsLmluaXQoZSxzKX0pLGRsPSRjb25zdHJ1Y3RvcigiWm9kRW1haWwiLChlLHMpPT57bGEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGVtYWlsKGUpe3JldHVybiBfZW1haWwoZGwsZSl9Y29uc3QgcGw9JGNvbnN0cnVjdG9yKCJab2RHVUlEIiwoZSxzKT0+e2FhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBndWlkKGUpe3JldHVybiBfZ3VpZChwbCxlKX1jb25zdCBtbD0kY29uc3RydWN0b3IoIlpvZFVVSUQiLChlLHMpPT57c2EuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIHV1aWQoZSl7cmV0dXJuIF91dWlkKG1sLGUpfWZ1bmN0aW9uIHV1aWR2NChlKXtyZXR1cm4gX3V1aWR2NChtbCxlKX1mdW5jdGlvbiB1dWlkdjYoZSl7cmV0dXJuIF91dWlkdjYobWwsZSl9ZnVuY3Rpb24gdXVpZHY3KGUpe3JldHVybiBfdXVpZHY3KG1sLGUpfWNvbnN0IGZsPSRjb25zdHJ1Y3RvcigiWm9kVVJMIiwoZSxzKT0+e2NhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiB1cmwoZSl7cmV0dXJuIF91cmwoZmwsZSl9ZnVuY3Rpb24gaHR0cFVybChlKXtyZXR1cm4gX3VybChmbCx7cHJvdG9jb2w6L15odHRwcz8kLyxob3N0bmFtZTpzbywuLi5ub3JtYWxpemVQYXJhbXMoZSl9KX1jb25zdCBobD0kY29uc3RydWN0b3IoIlpvZEVtb2ppIiwoZSxzKT0+e3VhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBlbW9qaShlKXtyZXR1cm4gX2Vtb2ppKGhsLGUpfWNvbnN0IGdsPSRjb25zdHJ1Y3RvcigiWm9kTmFub0lEIiwoZSxzKT0+e3BhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBuYW5vaWQoZSl7cmV0dXJuIF9uYW5vaWQoZ2wsZSl9Y29uc3Qgdmw9JGNvbnN0cnVjdG9yKCJab2RDVUlEIiwoZSxzKT0+e21hLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBjdWlkKGUpe3JldHVybiBfY3VpZCh2bCxlKX1jb25zdCB5bD0kY29uc3RydWN0b3IoIlpvZENVSUQyIiwoZSxzKT0+e2ZhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBjdWlkMihlKXtyZXR1cm4gX2N1aWQyKHlsLGUpfWNvbnN0IGJsPSRjb25zdHJ1Y3RvcigiWm9kVUxJRCIsKGUscyk9PntoYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gdWxpZChlKXtyZXR1cm4gX3VsaWQoYmwsZSl9Y29uc3QgX2w9JGNvbnN0cnVjdG9yKCJab2RYSUQiLChlLHMpPT57Z2EuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIHhpZChlKXtyZXR1cm4gX3hpZChfbCxlKX1jb25zdCB4bD0kY29uc3RydWN0b3IoIlpvZEtTVUlEIiwoZSxzKT0+e3ZhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBrc3VpZChlKXtyZXR1cm4gX2tzdWlkKHhsLGUpfWNvbnN0IHdsPSRjb25zdHJ1Y3RvcigiWm9kSVB2NCIsKGUscyk9PntqYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gaXB2NChlKXtyZXR1cm4gX2lwdjQod2wsZSl9Y29uc3QgJGw9JGNvbnN0cnVjdG9yKCJab2RNQUMiLChlLHMpPT57Q2EuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIG1hYyhlKXtyZXR1cm4gX21hYygkbCxlKX1jb25zdCBTbD0kY29uc3RydWN0b3IoIlpvZElQdjYiLChlLHMpPT57emEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGlwdjYoZSl7cmV0dXJuIF9pcHY2KFNsLGUpfWNvbnN0IGtsPSRjb25zdHJ1Y3RvcigiWm9kQ0lEUnY0IiwoZSxzKT0+e1RhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBjaWRydjQoZSl7cmV0dXJuIF9jaWRydjQoa2wsZSl9Y29uc3Qgamw9JGNvbnN0cnVjdG9yKCJab2RDSURSdjYiLChlLHMpPT57UmEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGNpZHJ2NihlKXtyZXR1cm4gX2NpZHJ2NihqbCxlKX1jb25zdCB6bD0kY29uc3RydWN0b3IoIlpvZEJhc2U2NCIsKGUscyk9PntFYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gYmFzZTY0KGUpe3JldHVybiBfYmFzZTY0KHpsLGUpfWNvbnN0IElsPSRjb25zdHJ1Y3RvcigiWm9kQmFzZTY0VVJMIiwoZSxzKT0+e09hLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBiYXNlNjR1cmwoZSl7cmV0dXJuIF9iYXNlNjR1cmwoSWwsZSl9Y29uc3QgQ2w9JGNvbnN0cnVjdG9yKCJab2RFMTY0IiwoZSxzKT0+e1BhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBlMTY0KGUpe3JldHVybiBfZTE2NChDbCxlKX1jb25zdCBUbD0kY29uc3RydWN0b3IoIlpvZEpXVCIsKGUscyk9PntVYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gand0KGUpe3JldHVybiBfand0KFRsLGUpfWNvbnN0IFJsPSRjb25zdHJ1Y3RvcigiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwoZSxzKT0+e0xhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBzdHJpbmdGb3JtYXQoZSxzLGQ9e30pe3JldHVybiBfc3RyaW5nRm9ybWF0KFJsLGUscyxkKX1mdW5jdGlvbiBob3N0bmFtZShlKXtyZXR1cm4gX3N0cmluZ0Zvcm1hdChSbCwiaG9zdG5hbWUiLGFvLGUpfWZ1bmN0aW9uIGhleChlKXtyZXR1cm4gX3N0cmluZ0Zvcm1hdChSbCwiaGV4IixfbyxlKX1mdW5jdGlvbiBoYXNoKGUscyl7Y29uc3QgZD1gJHtlfV8ke3M/LmVuYz8/ImhleCJ9YCxtPVJvW2RdO2lmKCFtKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGhhc2ggZm9ybWF0OiAke2R9YCk7cmV0dXJuIF9zdHJpbmdGb3JtYXQoUmwsZCxtLHMpfWNvbnN0IEVsPSRjb25zdHJ1Y3RvcigiWm9kTnVtYmVyIiwoZSxzKT0+e0FhLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9Pm51bWJlclByb2Nlc3NvcihlLHMsZCksZS5ndD0ocyxkKT0+ZS5jaGVjayhfZ3QocyxkKSksZS5ndGU9KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLm1pbj0ocyxkKT0+ZS5jaGVjayhfZ3RlKHMsZCkpLGUubHQ9KHMsZCk9PmUuY2hlY2soX2x0KHMsZCkpLGUubHRlPShzLGQpPT5lLmNoZWNrKF9sdGUocyxkKSksZS5tYXg9KHMsZCk9PmUuY2hlY2soX2x0ZShzLGQpKSxlLmludD1zPT5lLmNoZWNrKGludChzKSksZS5zYWZlPXM9PmUuY2hlY2soaW50KHMpKSxlLnBvc2l0aXZlPXM9PmUuY2hlY2soX2d0KDAscykpLGUubm9ubmVnYXRpdmU9cz0+ZS5jaGVjayhfZ3RlKDAscykpLGUubmVnYXRpdmU9cz0+ZS5jaGVjayhfbHQoMCxzKSksZS5ub25wb3NpdGl2ZT1zPT5lLmNoZWNrKF9sdGUoMCxzKSksZS5tdWx0aXBsZU9mPShzLGQpPT5lLmNoZWNrKF9tdWx0aXBsZU9mKHMsZCkpLGUuc3RlcD0ocyxkKT0+ZS5jaGVjayhfbXVsdGlwbGVPZihzLGQpKSxlLmZpbml0ZT0oKT0+ZTtjb25zdCBkPWUuX3pvZC5iYWc7ZS5taW5WYWx1ZT1NYXRoLm1heChkLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSxkLmV4Y2x1c2l2ZU1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSk/P251bGwsZS5tYXhWYWx1ZT1NYXRoLm1pbihkLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxkLmV4Y2x1c2l2ZU1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSk/P251bGwsZS5pc0ludD0oZC5mb3JtYXQ/PyIiKS5pbmNsdWRlcygiaW50Iil8fE51bWJlci5pc1NhZmVJbnRlZ2VyKGQubXVsdGlwbGVPZj8/LjUpLGUuaXNGaW5pdGU9ITAsZS5mb3JtYXQ9ZC5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiBudW1iZXIkMShlKXtyZXR1cm4gX251bWJlcihFbCxlKX1jb25zdCBPbD0kY29uc3RydWN0b3IoIlpvZE51bWJlckZvcm1hdCIsKGUscyk9PntxYS5pbml0KGUscyksRWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gaW50KGUpe3JldHVybiBfaW50KE9sLGUpfWZ1bmN0aW9uIGZsb2F0MzIoZSl7cmV0dXJuIF9mbG9hdDMyKE9sLGUpfWZ1bmN0aW9uIGZsb2F0NjQoZSl7cmV0dXJuIF9mbG9hdDY0KE9sLGUpfWZ1bmN0aW9uIGludDMyKGUpe3JldHVybiBfaW50MzIoT2wsZSl9ZnVuY3Rpb24gdWludDMyKGUpe3JldHVybiBfdWludDMyKE9sLGUpfWNvbnN0IFBsPSRjb25zdHJ1Y3RvcigiWm9kQm9vbGVhbiIsKGUscyk9PntGYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5ib29sZWFuUHJvY2Vzc29yKDAsMCxzKX0pO2Z1bmN0aW9uIGJvb2xlYW4kMShlKXtyZXR1cm4gX2Jvb2xlYW4oUGwsZSl9Y29uc3QgTmw9JGNvbnN0cnVjdG9yKCJab2RCaWdJbnQiLChlLHMpPT57QmEuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+YmlnaW50UHJvY2Vzc29yKDAsZSksZS5ndGU9KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLm1pbj0ocyxkKT0+ZS5jaGVjayhfZ3RlKHMsZCkpLGUuZ3Q9KHMsZCk9PmUuY2hlY2soX2d0KHMsZCkpLGUuZ3RlPShzLGQpPT5lLmNoZWNrKF9ndGUocyxkKSksZS5taW49KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLmx0PShzLGQpPT5lLmNoZWNrKF9sdChzLGQpKSxlLmx0ZT0ocyxkKT0+ZS5jaGVjayhfbHRlKHMsZCkpLGUubWF4PShzLGQpPT5lLmNoZWNrKF9sdGUocyxkKSksZS5wb3NpdGl2ZT1zPT5lLmNoZWNrKF9ndChCaWdJbnQoMCkscykpLGUubmVnYXRpdmU9cz0+ZS5jaGVjayhfbHQoQmlnSW50KDApLHMpKSxlLm5vbnBvc2l0aXZlPXM9PmUuY2hlY2soX2x0ZShCaWdJbnQoMCkscykpLGUubm9ubmVnYXRpdmU9cz0+ZS5jaGVjayhfZ3RlKEJpZ0ludCgwKSxzKSksZS5tdWx0aXBsZU9mPShzLGQpPT5lLmNoZWNrKF9tdWx0aXBsZU9mKHMsZCkpO2NvbnN0IGQ9ZS5fem9kLmJhZztlLm1pblZhbHVlPWQubWluaW11bT8/bnVsbCxlLm1heFZhbHVlPWQubWF4aW11bT8/bnVsbCxlLmZvcm1hdD1kLmZvcm1hdD8/bnVsbH0pO2Z1bmN0aW9uIGJpZ2ludCQxKGUpe3JldHVybiBfYmlnaW50KE5sLGUpfWNvbnN0IERsPSRjb25zdHJ1Y3RvcigiWm9kQmlnSW50Rm9ybWF0IiwoZSxzKT0+e1phLmluaXQoZSxzKSxObC5pbml0KGUscyl9KTtmdW5jdGlvbiBpbnQ2NChlKXtyZXR1cm4gX2ludDY0KERsLGUpfWZ1bmN0aW9uIHVpbnQ2NChlKXtyZXR1cm4gX3VpbnQ2NChEbCxlKX1jb25zdCBVbD0kY29uc3RydWN0b3IoIlpvZFN5bWJvbCIsKGUscyk9PntNYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5zeW1ib2xQcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIHN5bWJvbChlKXtyZXR1cm4gX3N5bWJvbChVbCxlKX1jb25zdCBMbD0kY29uc3RydWN0b3IoIlpvZFVuZGVmaW5lZCIsKGUscyk9PntRYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT51bmRlZmluZWRQcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIF91bmRlZmluZWQoZSl7cmV0dXJuIF91bmRlZmluZWQkMShMbCxlKX1jb25zdCBBbD0kY29uc3RydWN0b3IoIlpvZE51bGwiLChlLHMpPT57VmEuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+bnVsbFByb2Nlc3NvcigwLGUscyl9KTtmdW5jdGlvbiBfbnVsbChlKXtyZXR1cm4gX251bGwkMShBbCxlKX1jb25zdCBxbD0kY29uc3RydWN0b3IoIlpvZEFueSIsKGUscyk9PntIYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT57fX0pO2Z1bmN0aW9uIGFueSgpe3JldHVybiBfYW55KHFsKX1jb25zdCBGbD0kY29uc3RydWN0b3IoIlpvZFVua25vd24iLChlLHMpPT57V2EuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+e319KTtmdW5jdGlvbiB1bmtub3duKCl7cmV0dXJuIF91bmtub3duKEZsKX1jb25zdCBCbD0kY29uc3RydWN0b3IoIlpvZE5ldmVyIiwoZSxzKT0+e0phLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9Pm5ldmVyUHJvY2Vzc29yKDAsMCxzKX0pO2Z1bmN0aW9uIG5ldmVyKGUpe3JldHVybiBfbmV2ZXIoQmwsZSl9Y29uc3QgWmw9JGNvbnN0cnVjdG9yKCJab2RWb2lkIiwoZSxzKT0+e0thLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9PnZvaWRQcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIF92b2lkKGUpe3JldHVybiBfdm9pZCQxKFpsLGUpfWNvbnN0IE1sPSRjb25zdHJ1Y3RvcigiWm9kRGF0ZSIsKGUscyk9PntHYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5kYXRlUHJvY2Vzc29yKDAsZSksZS5taW49KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLm1heD0ocyxkKT0+ZS5jaGVjayhfbHRlKHMsZCkpO2NvbnN0IGQ9ZS5fem9kLmJhZztlLm1pbkRhdGU9ZC5taW5pbXVtP25ldyBEYXRlKGQubWluaW11bSk6bnVsbCxlLm1heERhdGU9ZC5tYXhpbXVtP25ldyBEYXRlKGQubWF4aW11bSk6bnVsbH0pO2Z1bmN0aW9uIGRhdGUkMShlKXtyZXR1cm4gX2RhdGUoTWwsZSl9Y29uc3QgUWw9JGNvbnN0cnVjdG9yKCJab2RBcnJheSIsKGUscyk9PntYYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5hcnJheVByb2Nlc3NvcihlLHMsZCxtKSxlLmVsZW1lbnQ9cy5lbGVtZW50LGUubWluPShzLGQpPT5lLmNoZWNrKF9taW5MZW5ndGgocyxkKSksZS5ub25lbXB0eT1zPT5lLmNoZWNrKF9taW5MZW5ndGgoMSxzKSksZS5tYXg9KHMsZCk9PmUuY2hlY2soX21heExlbmd0aChzLGQpKSxlLmxlbmd0aD0ocyxkKT0+ZS5jaGVjayhfbGVuZ3RoKHMsZCkpLGUudW53cmFwPSgpPT5lLmVsZW1lbnR9KTtmdW5jdGlvbiBhcnJheShlLHMpe3JldHVybiBfYXJyYXkoUWwsZSxzKX1mdW5jdGlvbiBrZXlvZihlKXtjb25zdCBzPWUuX3pvZC5kZWYuc2hhcGU7cmV0dXJuIF9lbnVtKE9iamVjdC5rZXlzKHMpKX1jb25zdCBWbD0kY29uc3RydWN0b3IoIlpvZE9iamVjdCIsKGUscyk9Pntlcy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5vYmplY3RQcm9jZXNzb3IoZSxzLGQsbSksZGVmaW5lTGF6eShlLCJzaGFwZSIsKCk9PnMuc2hhcGUpLGUua2V5b2Y9KCk9Pl9lbnVtKE9iamVjdC5rZXlzKGUuX3pvZC5kZWYuc2hhcGUpKSxlLmNhdGNoYWxsPXM9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6c30pLGUucGFzc3Rocm91Z2g9KCk9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6dW5rbm93bigpfSksZS5sb29zZT0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDp1bmtub3duKCl9KSxlLnN0cmljdD0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDpuZXZlcigpfSksZS5zdHJpcD0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDp2b2lkIDB9KSxlLmV4dGVuZD1zPT5leHRlbmQoZSxzKSxlLnNhZmVFeHRlbmQ9cz0+c2FmZUV4dGVuZChlLHMpLGUubWVyZ2U9cz0+bWVyZ2UoZSxzKSxlLnBpY2s9cz0+cGljayQxKGUscyksZS5vbWl0PXM9Pm9taXQoZSxzKSxlLnBhcnRpYWw9KC4uLnMpPT5wYXJ0aWFsKHVjLGUsc1swXSksZS5yZXF1aXJlZD0oLi4ucyk9PnJlcXVpcmVkKHZjLGUsc1swXSl9KTtmdW5jdGlvbiBvYmplY3QoZSxzKXtjb25zdCBkPXt0eXBlOiJvYmplY3QiLHNoYXBlOmU/P3t9LC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX07cmV0dXJuIG5ldyBWbChkKX1mdW5jdGlvbiBzdHJpY3RPYmplY3QoZSxzKXtyZXR1cm4gbmV3IFZsKHt0eXBlOiJvYmplY3QiLHNoYXBlOmUsY2F0Y2hhbGw6bmV2ZXIoKSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBsb29zZU9iamVjdChlLHMpe3JldHVybiBuZXcgVmwoe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDp1bmtub3duKCksLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgSGw9JGNvbnN0cnVjdG9yKCJab2RVbmlvbiIsKGUscyk9Pnt0cy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT51bmlvblByb2Nlc3NvcihlLHMsZCxtKSxlLm9wdGlvbnM9cy5vcHRpb25zfSk7ZnVuY3Rpb24gdW5pb24kMShlLHMpe3JldHVybiBuZXcgSGwoe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgV2w9JGNvbnN0cnVjdG9yKCJab2RYb3IiLChlLHMpPT57SGwuaW5pdChlLHMpLG5zLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+dW5pb25Qcm9jZXNzb3IoZSxzLGQsbSksZS5vcHRpb25zPXMub3B0aW9uc30pO2Z1bmN0aW9uIHhvcihlLHMpe3JldHVybiBuZXcgV2woe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWNvbnN0IEpsPSRjb25zdHJ1Y3RvcigiWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwoZSxzKT0+e0hsLmluaXQoZSxzKSxycy5pbml0KGUscyl9KTtmdW5jdGlvbiBkaXNjcmltaW5hdGVkVW5pb24oZSxzLGQpe3JldHVybiBuZXcgSmwoe3R5cGU6InVuaW9uIixvcHRpb25zOnMsZGlzY3JpbWluYXRvcjplLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWNvbnN0IEtsPSRjb25zdHJ1Y3RvcigiWm9kSW50ZXJzZWN0aW9uIiwoZSxzKT0+e29zLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmludGVyc2VjdGlvblByb2Nlc3NvcihlLHMsZCxtKX0pO2Z1bmN0aW9uIGludGVyc2VjdGlvbihlLHMpe3JldHVybiBuZXcgS2woe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDplLHJpZ2h0OnN9KX1jb25zdCBHbD0kY29uc3RydWN0b3IoIlpvZFR1cGxlIiwoZSxzKT0+e2FzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnR1cGxlUHJvY2Vzc29yKGUscyxkLG0pLGUucmVzdD1zPT5lLmNsb25lKHsuLi5lLl96b2QuZGVmLHJlc3Q6c30pfSk7ZnVuY3Rpb24gdHVwbGUoZSxzLGQpe2NvbnN0IG09cyBpbnN0YW5jZW9mIG5hO3JldHVybiBuZXcgR2woe3R5cGU6InR1cGxlIixpdGVtczplLHJlc3Q6bT9zOm51bGwsLi4ubm9ybWFsaXplUGFyYW1zKG0/ZDpzKX0pfWNvbnN0IFhsPSRjb25zdHJ1Y3RvcigiWm9kUmVjb3JkIiwoZSxzKT0+e3NzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnJlY29yZFByb2Nlc3NvcihlLHMsZCxtKSxlLmtleVR5cGU9cy5rZXlUeXBlLGUudmFsdWVUeXBlPXMudmFsdWVUeXBlfSk7ZnVuY3Rpb24gcmVjb3JkKGUscyxkKXtyZXR1cm4gbmV3IFhsKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX1mdW5jdGlvbiBwYXJ0aWFsUmVjb3JkKGUscyxkKXtjb25zdCBtPWNsb25lKGUpO3JldHVybiBtLl96b2QudmFsdWVzPXZvaWQgMCxuZXcgWGwoe3R5cGU6InJlY29yZCIsa2V5VHlwZTptLHZhbHVlVHlwZTpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIGxvb3NlUmVjb3JkKGUscyxkKXtyZXR1cm4gbmV3IFhsKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6cyxtb2RlOiJsb29zZSIsLi4ubm9ybWFsaXplUGFyYW1zKGQpfSl9Y29uc3QgWWw9JGNvbnN0cnVjdG9yKCJab2RNYXAiLChlLHMpPT57bHMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+bWFwUHJvY2Vzc29yKDAsZSksZS5rZXlUeXBlPXMua2V5VHlwZSxlLnZhbHVlVHlwZT1zLnZhbHVlVHlwZSxlLm1pbj0oLi4ucyk9PmUuY2hlY2soX21pblNpemUoLi4ucykpLGUubm9uZW1wdHk9cz0+ZS5jaGVjayhfbWluU2l6ZSgxLHMpKSxlLm1heD0oLi4ucyk9PmUuY2hlY2soX21heFNpemUoLi4ucykpLGUuc2l6ZT0oLi4ucyk9PmUuY2hlY2soX3NpemUoLi4ucykpfSk7ZnVuY3Rpb24gbWFwKGUscyxkKXtyZXR1cm4gbmV3IFlsKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX1jb25zdCBlYz0kY29uc3RydWN0b3IoIlpvZFNldCIsKGUscyk9Pntjcy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5zZXRQcm9jZXNzb3IoMCxlKSxlLm1pbj0oLi4ucyk9PmUuY2hlY2soX21pblNpemUoLi4ucykpLGUubm9uZW1wdHk9cz0+ZS5jaGVjayhfbWluU2l6ZSgxLHMpKSxlLm1heD0oLi4ucyk9PmUuY2hlY2soX21heFNpemUoLi4ucykpLGUuc2l6ZT0oLi4ucyk9PmUuY2hlY2soX3NpemUoLi4ucykpfSk7ZnVuY3Rpb24gc2V0KGUscyl7cmV0dXJuIG5ldyBlYyh7dHlwZToic2V0Iix2YWx1ZVR5cGU6ZSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1jb25zdCBpYz0kY29uc3RydWN0b3IoIlpvZEVudW0iLChlLHMpPT57dXMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+ZW51bVByb2Nlc3NvcihlLDAsZCksZS5lbnVtPXMuZW50cmllcyxlLm9wdGlvbnM9T2JqZWN0LnZhbHVlcyhzLmVudHJpZXMpO2NvbnN0IGQ9bmV3IFNldChPYmplY3Qua2V5cyhzLmVudHJpZXMpKTtlLmV4dHJhY3Q9KGUsbSk9Pntjb25zdCBoPXt9O2Zvcihjb25zdCBtIG9mIGUpe2lmKCFkLmhhcyhtKSl0aHJvdyBuZXcgRXJyb3IoYEtleSAke219IG5vdCBmb3VuZCBpbiBlbnVtYCk7aFttXT1zLmVudHJpZXNbbV19cmV0dXJuIG5ldyBpYyh7Li4ucyxjaGVja3M6W10sLi4ubm9ybWFsaXplUGFyYW1zKG0pLGVudHJpZXM6aH0pfSxlLmV4Y2x1ZGU9KGUsbSk9Pntjb25zdCBoPXsuLi5zLmVudHJpZXN9O2Zvcihjb25zdCBzIG9mIGUpe2lmKCFkLmhhcyhzKSl0aHJvdyBuZXcgRXJyb3IoYEtleSAke3N9IG5vdCBmb3VuZCBpbiBlbnVtYCk7ZGVsZXRlIGhbc119cmV0dXJuIG5ldyBpYyh7Li4ucyxjaGVja3M6W10sLi4ubm9ybWFsaXplUGFyYW1zKG0pLGVudHJpZXM6aH0pfX0pO2Z1bmN0aW9uIF9lbnVtKGUscyl7Y29uc3QgZD1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChlPT5bZSxlXSkpOmU7cmV0dXJuIG5ldyBpYyh7dHlwZToiZW51bSIsZW50cmllczpkLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIG5hdGl2ZUVudW0oZSxzKXtyZXR1cm4gbmV3IGljKHt0eXBlOiJlbnVtIixlbnRyaWVzOmUsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgYWM9JGNvbnN0cnVjdG9yKCJab2RMaXRlcmFsIiwoZSxzKT0+e2RzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmxpdGVyYWxQcm9jZXNzb3IoZSxzLGQpLGUudmFsdWVzPW5ldyBTZXQocy52YWx1ZXMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ2YWx1ZSIse2dldCgpe2lmKHMudmFsdWVzLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiVGhpcyBzY2hlbWEgY29udGFpbnMgbXVsdGlwbGUgdmFsaWQgbGl0ZXJhbCB2YWx1ZXMuIFVzZSBgLnZhbHVlc2AgaW5zdGVhZC4iKTtyZXR1cm4gcy52YWx1ZXNbMF19fSl9KTtmdW5jdGlvbiBsaXRlcmFsKGUscyl7cmV0dXJuIG5ldyBhYyh7dHlwZToibGl0ZXJhbCIsdmFsdWVzOkFycmF5LmlzQXJyYXkoZSk/ZTpbZV0sLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3Qgc2M9JGNvbnN0cnVjdG9yKCJab2RGaWxlIiwoZSxzKT0+e3BzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmZpbGVQcm9jZXNzb3IoZSwwLGQpLGUubWluPShzLGQpPT5lLmNoZWNrKF9taW5TaXplKHMsZCkpLGUubWF4PShzLGQpPT5lLmNoZWNrKF9tYXhTaXplKHMsZCkpLGUubWltZT0ocyxkKT0+ZS5jaGVjayhfbWltZShBcnJheS5pc0FycmF5KHMpP3M6W3NdLGQpKX0pO2Z1bmN0aW9uIGZpbGUoZSl7cmV0dXJuIF9maWxlKHNjLGUpfWNvbnN0IGNjPSRjb25zdHJ1Y3RvcigiWm9kVHJhbnNmb3JtIiwoZSxzKT0+e21zLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9PnRyYW5zZm9ybVByb2Nlc3NvcigwLGUpLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2lmKCJiYWNrd2FyZCI9PT1tLmRpcmVjdGlvbil0aHJvdyBuZXcgJFpvZEVuY29kZUVycm9yKGUuY29uc3RydWN0b3IubmFtZSk7ZC5hZGRJc3N1ZT1tPT57aWYoInN0cmluZyI9PXR5cGVvZiBtKWQuaXNzdWVzLnB1c2goaXNzdWUobSxkLnZhbHVlLHMpKTtlbHNle2NvbnN0IHM9bTtzLmZhdGFsJiYocy5jb250aW51ZT0hMSkscy5jb2RlPz8ocy5jb2RlPSJjdXN0b20iKSxzLmlucHV0Pz8ocy5pbnB1dD1kLnZhbHVlKSxzLmluc3Q/PyhzLmluc3Q9ZSksZC5pc3N1ZXMucHVzaChpc3N1ZShzKSl9fTtjb25zdCBoPXMudHJhbnNmb3JtKGQudmFsdWUsZCk7cmV0dXJuIGggaW5zdGFuY2VvZiBQcm9taXNlP2gudGhlbihlPT4oZC52YWx1ZT1lLGQpKTooZC52YWx1ZT1oLGQpfX0pO2Z1bmN0aW9uIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IGNjKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3QgdWM9JGNvbnN0cnVjdG9yKCJab2RPcHRpb25hbCIsKGUscyk9Pntmcy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5vcHRpb25hbFByb2Nlc3NvcihlLHMsMCxtKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBvcHRpb25hbChlKXtyZXR1cm4gbmV3IHVjKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmV9KX1jb25zdCBkYz0kY29uc3RydWN0b3IoIlpvZEV4YWN0T3B0aW9uYWwiLChlLHMpPT57aHMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+b3B0aW9uYWxQcm9jZXNzb3IoZSxzLDAsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gZXhhY3RPcHRpb25hbChlKXtyZXR1cm4gbmV3IGRjKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmV9KX1jb25zdCBmYz0kY29uc3RydWN0b3IoIlpvZE51bGxhYmxlIiwoZSxzKT0+e2dzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9Pm51bGxhYmxlUHJvY2Vzc29yKGUscyxkLG0pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIG51bGxhYmxlKGUpe3JldHVybiBuZXcgZmMoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6ZX0pfWZ1bmN0aW9uIG51bGxpc2goZSl7cmV0dXJuIG9wdGlvbmFsKG51bGxhYmxlKGUpKX1jb25zdCBoYz0kY29uc3RydWN0b3IoIlpvZERlZmF1bHQiLChlLHMpPT57dnMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+ZGVmYXVsdFByb2Nlc3NvcihlLHMsZCxtKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGUsZS5yZW1vdmVEZWZhdWx0PWUudW53cmFwfSk7ZnVuY3Rpb24gX2RlZmF1bHQkMihlLHMpe3JldHVybiBuZXcgaGMoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKCk6c2hhbGxvd0Nsb25lKHMpfX0pfWNvbnN0IGdjPSRjb25zdHJ1Y3RvcigiWm9kUHJlZmF1bHQiLChlLHMpPT57eXMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+cHJlZmF1bHRQcm9jZXNzb3IoZSxzLGQsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gcHJlZmF1bHQoZSxzKXtyZXR1cm4gbmV3IGdjKHt0eXBlOiJwcmVmYXVsdCIsaW5uZXJUeXBlOmUsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3MoKTpzaGFsbG93Q2xvbmUocyl9fSl9Y29uc3QgdmM9JGNvbnN0cnVjdG9yKCJab2ROb25PcHRpb25hbCIsKGUscyk9Pnticy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5ub25vcHRpb25hbFByb2Nlc3NvcihlLHMsMCxtKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBub25vcHRpb25hbChlLHMpe3JldHVybiBuZXcgdmMoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6ZSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1jb25zdCB5Yz0kY29uc3RydWN0b3IoIlpvZFN1Y2Nlc3MiLChlLHMpPT57X3MuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+c3VjY2Vzc1Byb2Nlc3NvcigwLDAscyksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gc3VjY2VzcyhlKXtyZXR1cm4gbmV3IHljKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6ZX0pfWNvbnN0IGJjPSRjb25zdHJ1Y3RvcigiWm9kQ2F0Y2giLChlLHMpPT57eHMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+Y2F0Y2hQcm9jZXNzb3IoZSxzLGQsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlLGUucmVtb3ZlQ2F0Y2g9ZS51bndyYXB9KTtmdW5jdGlvbiBfY2F0Y2goZSxzKXtyZXR1cm4gbmV3IGJjKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOmUsY2F0Y2hWYWx1ZToiZnVuY3Rpb24iPT10eXBlb2Ygcz9zOigpPT5zfSl9Y29uc3QgX2M9JGNvbnN0cnVjdG9yKCJab2ROYU4iLChlLHMpPT57d3MuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+bmFuUHJvY2Vzc29yKDAsZSl9KTtmdW5jdGlvbiBuYW4oZSl7cmV0dXJuIF9uYW4oX2MsZSl9Y29uc3QgeGM9JGNvbnN0cnVjdG9yKCJab2RQaXBlIiwoZSxzKT0+eyRzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnBpcGVQcm9jZXNzb3IoZSxzLDAsbSksZS5pbj1zLmluLGUub3V0PXMub3V0fSk7ZnVuY3Rpb24gcGlwZShlLHMpe3JldHVybiBuZXcgeGMoe3R5cGU6InBpcGUiLGluOmUsb3V0OnN9KX1jb25zdCB3Yz0kY29uc3RydWN0b3IoIlpvZENvZGVjIiwoZSxzKT0+e3hjLmluaXQoZSxzKSxTcy5pbml0KGUscyl9KTtmdW5jdGlvbiBjb2RlYyhlLHMsZCl7cmV0dXJuIG5ldyB3Yyh7dHlwZToicGlwZSIsaW46ZSxvdXQ6cyx0cmFuc2Zvcm06ZC5kZWNvZGUscmV2ZXJzZVRyYW5zZm9ybTpkLmVuY29kZX0pfWNvbnN0IGtjPSRjb25zdHJ1Y3RvcigiWm9kUmVhZG9ubHkiLChlLHMpPT57a3MuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+cmVhZG9ubHlQcm9jZXNzb3IoZSxzLGQsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gcmVhZG9ubHkoZSl7cmV0dXJuIG5ldyBrYyh7dHlwZToicmVhZG9ubHkiLGlubmVyVHlwZTplfSl9Y29uc3QgemM9JGNvbnN0cnVjdG9yKCJab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHMpPT57anMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+dGVtcGxhdGVMaXRlcmFsUHJvY2Vzc29yKGUsMCxkKX0pO2Z1bmN0aW9uIHRlbXBsYXRlTGl0ZXJhbChlLHMpe3JldHVybiBuZXcgemMoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOmUsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgQ2M9JGNvbnN0cnVjdG9yKCJab2RMYXp5IiwoZSxzKT0+e0NzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmxhenlQcm9jZXNzb3IoZSxzLDAsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuZ2V0dGVyKCl9KTtmdW5jdGlvbiBsYXp5KGUpe3JldHVybiBuZXcgQ2Moe3R5cGU6ImxhenkiLGdldHRlcjplfSl9Y29uc3QgUmM9JGNvbnN0cnVjdG9yKCJab2RQcm9taXNlIiwoZSxzKT0+e0lzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnByb21pc2VQcm9jZXNzb3IoZSxzLDAsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gcHJvbWlzZShlKXtyZXR1cm4gbmV3IFJjKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6ZX0pfWNvbnN0IE9jPSRjb25zdHJ1Y3RvcigiWm9kRnVuY3Rpb24iLChlLHMpPT57enMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+ZnVuY3Rpb25Qcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIF9mdW5jdGlvbihlKXtyZXR1cm4gbmV3IE9jKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6QXJyYXkuaXNBcnJheShlPy5pbnB1dCk/dHVwbGUoZT8uaW5wdXQpOmU/LmlucHV0Pz9hcnJheSh1bmtub3duKCkpLG91dHB1dDplPy5vdXRwdXQ/P3Vua25vd24oKX0pfWNvbnN0IFBjPSRjb25zdHJ1Y3RvcigiWm9kQ3VzdG9tIiwoZSxzKT0+e1RzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9PmN1c3RvbVByb2Nlc3NvcigwLGUpfSk7ZnVuY3Rpb24gY2hlY2soZSl7Y29uc3Qgcz1uZXcgRW8oe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIHMuX3pvZC5jaGVjaz1lLHN9ZnVuY3Rpb24gY3VzdG9tKGUscyl7cmV0dXJuIF9jdXN0b20oUGMsZT8/KCgpPT4hMCkscyl9ZnVuY3Rpb24gcmVmaW5lKGUscz17fSl7cmV0dXJuIF9yZWZpbmUoUGMsZSxzKX1mdW5jdGlvbiBzdXBlclJlZmluZShlKXtyZXR1cm4gX3N1cGVyUmVmaW5lKGUpfWNvbnN0IE5jPWRlc2NyaWJlJDEsRGM9bWV0YSQxO2Z1bmN0aW9uIF9pbnN0YW5jZW9mKGUscz17fSl7Y29uc3QgZD1uZXcgUGMoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46cz0+cyBpbnN0YW5jZW9mIGUsYWJvcnQ6ITAsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSk7cmV0dXJuIGQuX3pvZC5iYWcuQ2xhc3M9ZSxkLl96b2QuY2hlY2s9cz0+e3MudmFsdWUgaW5zdGFuY2VvZiBlfHxzLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOmUubmFtZSxpbnB1dDpzLnZhbHVlLGluc3Q6ZCxwYXRoOlsuLi5kLl96b2QuZGVmLnBhdGg/P1tdXX0pfSxkfWNvbnN0IHN0cmluZ2Jvb2w9KC4uLmUpPT5fc3RyaW5nYm9vbCh7Q29kZWM6d2MsQm9vbGVhbjpQbCxTdHJpbmc6Y2x9LC4uLmUpO2Z1bmN0aW9uIGpzb24oZSl7Y29uc3Qgcz1sYXp5KCgpPT51bmlvbiQxKFtzdHJpbmckMShlKSxudW1iZXIkMSgpLGJvb2xlYW4kMSgpLF9udWxsKCksYXJyYXkocykscmVjb3JkKHN0cmluZyQxKCkscyldKSk7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcHJvY2VzcyhlLHMpe3JldHVybiBwaXBlKHRyYW5zZm9ybShlKSxzKX1jb25zdCBBYz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kQW55OnFsLFpvZEFycmF5OlFsLFpvZEJhc2U2NDp6bCxab2RCYXNlNjRVUkw6SWwsWm9kQmlnSW50Ok5sLFpvZEJpZ0ludEZvcm1hdDpEbCxab2RCb29sZWFuOlBsLFpvZENJRFJ2NDprbCxab2RDSURSdjY6amwsWm9kQ1VJRDp2bCxab2RDVUlEMjp5bCxab2RDYXRjaDpiYyxab2RDb2RlYzp3Yyxab2RDdXN0b206UGMsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlJsLFpvZERhdGU6TWwsWm9kRGVmYXVsdDpoYyxab2REaXNjcmltaW5hdGVkVW5pb246SmwsWm9kRTE2NDpDbCxab2RFbWFpbDpkbCxab2RFbW9qaTpobCxab2RFbnVtOmljLFpvZEV4YWN0T3B0aW9uYWw6ZGMsWm9kRmlsZTpzYyxab2RGdW5jdGlvbjpPYyxab2RHVUlEOnBsLFpvZElQdjQ6d2wsWm9kSVB2NjpTbCxab2RJbnRlcnNlY3Rpb246S2wsWm9kSldUOlRsLFpvZEtTVUlEOnhsLFpvZExhenk6Q2MsWm9kTGl0ZXJhbDphYyxab2RNQUM6JGwsWm9kTWFwOllsLFpvZE5hTjpfYyxab2ROYW5vSUQ6Z2wsWm9kTmV2ZXI6QmwsWm9kTm9uT3B0aW9uYWw6dmMsWm9kTnVsbDpBbCxab2ROdWxsYWJsZTpmYyxab2ROdW1iZXI6RWwsWm9kTnVtYmVyRm9ybWF0Ok9sLFpvZE9iamVjdDpWbCxab2RPcHRpb25hbDp1Yyxab2RQaXBlOnhjLFpvZFByZWZhdWx0OmdjLFpvZFByb21pc2U6UmMsWm9kUmVhZG9ubHk6a2MsWm9kUmVjb3JkOlhsLFpvZFNldDplYyxab2RTdHJpbmc6Y2wsWm9kU3RyaW5nRm9ybWF0OnVsLFpvZFN1Y2Nlc3M6eWMsWm9kU3ltYm9sOlVsLFpvZFRlbXBsYXRlTGl0ZXJhbDp6Yyxab2RUcmFuc2Zvcm06Y2MsWm9kVHVwbGU6R2wsWm9kVHlwZTpzbCxab2RVTElEOmJsLFpvZFVSTDpmbCxab2RVVUlEOm1sLFpvZFVuZGVmaW5lZDpMbCxab2RVbmlvbjpIbCxab2RVbmtub3duOkZsLFpvZFZvaWQ6WmwsWm9kWElEOl9sLFpvZFhvcjpXbCxfWm9kU3RyaW5nOmxsLF9kZWZhdWx0Ol9kZWZhdWx0JDIsX2Z1bmN0aW9uOl9mdW5jdGlvbixhbnk6YW55LGFycmF5OmFycmF5LGJhc2U2NDpiYXNlNjQsYmFzZTY0dXJsOmJhc2U2NHVybCxiaWdpbnQ6YmlnaW50JDEsYm9vbGVhbjpib29sZWFuJDEsY2F0Y2g6X2NhdGNoLGNoZWNrOmNoZWNrLGNpZHJ2NDpjaWRydjQsY2lkcnY2OmNpZHJ2Nixjb2RlYzpjb2RlYyxjdWlkOmN1aWQsY3VpZDI6Y3VpZDIsY3VzdG9tOmN1c3RvbSxkYXRlOmRhdGUkMSxkZXNjcmliZTpOYyxkaXNjcmltaW5hdGVkVW5pb246ZGlzY3JpbWluYXRlZFVuaW9uLGUxNjQ6ZTE2NCxlbWFpbDplbWFpbCxlbW9qaTplbW9qaSxlbnVtOl9lbnVtLGV4YWN0T3B0aW9uYWw6ZXhhY3RPcHRpb25hbCxmaWxlOmZpbGUsZmxvYXQzMjpmbG9hdDMyLGZsb2F0NjQ6ZmxvYXQ2NCxmdW5jdGlvbjpfZnVuY3Rpb24sZ3VpZDpndWlkLGhhc2g6aGFzaCxoZXg6aGV4LGhvc3RuYW1lOmhvc3RuYW1lLGh0dHBVcmw6aHR0cFVybCxpbnN0YW5jZW9mOl9pbnN0YW5jZW9mLGludDppbnQsaW50MzI6aW50MzIsaW50NjQ6aW50NjQsaW50ZXJzZWN0aW9uOmludGVyc2VjdGlvbixpcHY0OmlwdjQsaXB2NjppcHY2LGpzb246anNvbixqd3Q6and0LGtleW9mOmtleW9mLGtzdWlkOmtzdWlkLGxhenk6bGF6eSxsaXRlcmFsOmxpdGVyYWwsbG9vc2VPYmplY3Q6bG9vc2VPYmplY3QsbG9vc2VSZWNvcmQ6bG9vc2VSZWNvcmQsbWFjOm1hYyxtYXA6bWFwLG1ldGE6RGMsbmFuOm5hbixuYW5vaWQ6bmFub2lkLG5hdGl2ZUVudW06bmF0aXZlRW51bSxuZXZlcjpuZXZlcixub25vcHRpb25hbDpub25vcHRpb25hbCxudWxsOl9udWxsLG51bGxhYmxlOm51bGxhYmxlLG51bGxpc2g6bnVsbGlzaCxudW1iZXI6bnVtYmVyJDEsb2JqZWN0Om9iamVjdCxvcHRpb25hbDpvcHRpb25hbCxwYXJ0aWFsUmVjb3JkOnBhcnRpYWxSZWNvcmQscGlwZTpwaXBlLHByZWZhdWx0OnByZWZhdWx0LHByZXByb2Nlc3M6cHJlcHJvY2Vzcyxwcm9taXNlOnByb21pc2UscmVhZG9ubHk6cmVhZG9ubHkscmVjb3JkOnJlY29yZCxyZWZpbmU6cmVmaW5lLHNldDpzZXQsc3RyaWN0T2JqZWN0OnN0cmljdE9iamVjdCxzdHJpbmc6c3RyaW5nJDEsc3RyaW5nRm9ybWF0OnN0cmluZ0Zvcm1hdCxzdHJpbmdib29sOnN0cmluZ2Jvb2wsc3VjY2VzczpzdWNjZXNzLHN1cGVyUmVmaW5lOnN1cGVyUmVmaW5lLHN5bWJvbDpzeW1ib2wsdGVtcGxhdGVMaXRlcmFsOnRlbXBsYXRlTGl0ZXJhbCx0cmFuc2Zvcm06dHJhbnNmb3JtLHR1cGxlOnR1cGxlLHVpbnQzMjp1aW50MzIsdWludDY0OnVpbnQ2NCx1bGlkOnVsaWQsdW5kZWZpbmVkOl91bmRlZmluZWQsdW5pb246dW5pb24kMSx1bmtub3duOnVua25vd24sdXJsOnVybCx1dWlkOnV1aWQsdXVpZHY0OnV1aWR2NCx1dWlkdjY6dXVpZHY2LHV1aWR2Nzp1dWlkdjcsdm9pZDpfdm9pZCx4aWQ6eGlkLHhvcjp4b3J9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7dmFyIHFjO3FjfHwocWM9e30pO2NvbnN0IEJjPXsuLi5BYywuLi5Gcyxpc286VnN9LGV1PW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIGNvbnZlcnRCYXNlU2NoZW1hKGUscyl7aWYodm9pZCAwIT09ZS5ub3Qpe2lmKCJvYmplY3QiPT10eXBlb2YgZS5ub3QmJjA9PT1PYmplY3Qua2V5cyhlLm5vdCkubGVuZ3RoKXJldHVybiBCYy5uZXZlcigpO3Rocm93IG5ldyBFcnJvcigibm90IGlzIG5vdCBzdXBwb3J0ZWQgaW4gWm9kIChleGNlcHQgeyBub3Q6IHt9IH0gZm9yIG5ldmVyKSIpfWlmKHZvaWQgMCE9PWUudW5ldmFsdWF0ZWRJdGVtcyl0aHJvdyBuZXcgRXJyb3IoInVuZXZhbHVhdGVkSXRlbXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHZvaWQgMCE9PWUudW5ldmFsdWF0ZWRQcm9wZXJ0aWVzKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZih2b2lkIDAhPT1lLmlmfHx2b2lkIDAhPT1lLnRoZW58fHZvaWQgMCE9PWUuZWxzZSl0aHJvdyBuZXcgRXJyb3IoIkNvbmRpdGlvbmFsIHNjaGVtYXMgKGlmL3RoZW4vZWxzZSkgYXJlIG5vdCBzdXBwb3J0ZWQiKTtpZih2b2lkIDAhPT1lLmRlcGVuZGVudFNjaGVtYXN8fHZvaWQgMCE9PWUuZGVwZW5kZW50UmVxdWlyZWQpdGhyb3cgbmV3IEVycm9yKCJkZXBlbmRlbnRTY2hlbWFzIGFuZCBkZXBlbmRlbnRSZXF1aXJlZCBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuJHJlZil7Y29uc3QgZD1lLiRyZWY7aWYocy5yZWZzLmhhcyhkKSlyZXR1cm4gcy5yZWZzLmdldChkKTtpZihzLnByb2Nlc3NpbmcuaGFzKGQpKXJldHVybiBCYy5sYXp5KCgpPT57aWYoIXMucmVmcy5oYXMoZCkpdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciByZWZlcmVuY2Ugbm90IHJlc29sdmVkOiAke2R9YCk7cmV0dXJuIHMucmVmcy5nZXQoZCl9KTtzLnByb2Nlc3NpbmcuYWRkKGQpO2NvbnN0IG09ZnVuY3Rpb24oZSxzKXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3QgZD1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gcy5yb290U2NoZW1hO2NvbnN0IG09ImRyYWZ0LTIwMjAtMTIiPT09cy52ZXJzaW9uPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihkWzBdPT09bSl7Y29uc3QgbT1kWzFdO2lmKCFtfHwhcy5kZWZzW21dKXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiBzLmRlZnNbbV19dGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2Ugbm90IGZvdW5kOiAke2V9YCl9KGQscyksaD1jb252ZXJ0U2NoZW1hKG0scyk7cmV0dXJuIHMucmVmcy5zZXQoZCxoKSxzLnByb2Nlc3NpbmcuZGVsZXRlKGQpLGh9aWYodm9pZCAwIT09ZS5lbnVtKXtjb25zdCBkPWUuZW51bTtpZigib3BlbmFwaS0zLjAiPT09cy52ZXJzaW9uJiYhMD09PWUubnVsbGFibGUmJjE9PT1kLmxlbmd0aCYmbnVsbD09PWRbMF0pcmV0dXJuIEJjLm51bGwoKTtpZigwPT09ZC5sZW5ndGgpcmV0dXJuIEJjLm5ldmVyKCk7aWYoMT09PWQubGVuZ3RoKXJldHVybiBCYy5saXRlcmFsKGRbMF0pO2lmKGQuZXZlcnkoZT0+InN0cmluZyI9PXR5cGVvZiBlKSlyZXR1cm4gQmMuZW51bShkKTtjb25zdCBtPWQubWFwKGU9PkJjLmxpdGVyYWwoZSkpO3JldHVybiBtLmxlbmd0aDwyP21bMF06QmMudW5pb24oW21bMF0sbVsxXSwuLi5tLnNsaWNlKDIpXSl9aWYodm9pZCAwIT09ZS5jb25zdClyZXR1cm4gQmMubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBkPWUudHlwZTtpZihBcnJheS5pc0FycmF5KGQpKXtjb25zdCBtPWQubWFwKGQ9PmNvbnZlcnRCYXNlU2NoZW1hKHsuLi5lLHR5cGU6ZH0scykpO3JldHVybiAwPT09bS5sZW5ndGg/QmMubmV2ZXIoKToxPT09bS5sZW5ndGg/bVswXTpCYy51bmlvbihtKX1pZighZClyZXR1cm4gQmMuYW55KCk7bGV0IG07c3dpdGNoKGQpe2Nhc2Uic3RyaW5nIjp7bGV0IHM9QmMuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IGQ9ZS5mb3JtYXQ7ImVtYWlsIj09PWQ/cz1zLmNoZWNrKEJjLmVtYWlsKCkpOiJ1cmkiPT09ZHx8InVyaS1yZWZlcmVuY2UiPT09ZD9zPXMuY2hlY2soQmMudXJsKCkpOiJ1dWlkIj09PWR8fCJndWlkIj09PWQ/cz1zLmNoZWNrKEJjLnV1aWQoKSk6ImRhdGUtdGltZSI9PT1kP3M9cy5jaGVjayhCYy5pc28uZGF0ZXRpbWUoKSk6ImRhdGUiPT09ZD9zPXMuY2hlY2soQmMuaXNvLmRhdGUoKSk6InRpbWUiPT09ZD9zPXMuY2hlY2soQmMuaXNvLnRpbWUoKSk6ImR1cmF0aW9uIj09PWQ/cz1zLmNoZWNrKEJjLmlzby5kdXJhdGlvbigpKToiaXB2NCI9PT1kP3M9cy5jaGVjayhCYy5pcHY0KCkpOiJpcHY2Ij09PWQ/cz1zLmNoZWNrKEJjLmlwdjYoKSk6Im1hYyI9PT1kP3M9cy5jaGVjayhCYy5tYWMoKSk6ImNpZHIiPT09ZD9zPXMuY2hlY2soQmMuY2lkcnY0KCkpOiJjaWRyLXY2Ij09PWQ/cz1zLmNoZWNrKEJjLmNpZHJ2NigpKToiYmFzZTY0Ij09PWQ/cz1zLmNoZWNrKEJjLmJhc2U2NCgpKToiYmFzZTY0dXJsIj09PWQ/cz1zLmNoZWNrKEJjLmJhc2U2NHVybCgpKToiZTE2NCI9PT1kP3M9cy5jaGVjayhCYy5lMTY0KCkpOiJqd3QiPT09ZD9zPXMuY2hlY2soQmMuand0KCkpOiJlbW9qaSI9PT1kP3M9cy5jaGVjayhCYy5lbW9qaSgpKToibmFub2lkIj09PWQ/cz1zLmNoZWNrKEJjLm5hbm9pZCgpKToiY3VpZCI9PT1kP3M9cy5jaGVjayhCYy5jdWlkKCkpOiJjdWlkMiI9PT1kP3M9cy5jaGVjayhCYy5jdWlkMigpKToidWxpZCI9PT1kP3M9cy5jaGVjayhCYy51bGlkKCkpOiJ4aWQiPT09ZD9zPXMuY2hlY2soQmMueGlkKCkpOiJrc3VpZCI9PT1kJiYocz1zLmNoZWNrKEJjLmtzdWlkKCkpKX0ibnVtYmVyIj09dHlwZW9mIGUubWluTGVuZ3RoJiYocz1zLm1pbihlLm1pbkxlbmd0aCkpLCJudW1iZXIiPT10eXBlb2YgZS5tYXhMZW5ndGgmJihzPXMubWF4KGUubWF4TGVuZ3RoKSksZS5wYXR0ZXJuJiYocz1zLnJlZ2V4KG5ldyBSZWdFeHAoZS5wYXR0ZXJuKSkpLG09czticmVha31jYXNlIm51bWJlciI6Y2FzZSJpbnRlZ2VyIjp7bGV0IHM9ImludGVnZXIiPT09ZD9CYy5udW1iZXIoKS5pbnQoKTpCYy5udW1iZXIoKTsibnVtYmVyIj09dHlwZW9mIGUubWluaW11bSYmKHM9cy5taW4oZS5taW5pbXVtKSksIm51bWJlciI9PXR5cGVvZiBlLm1heGltdW0mJihzPXMubWF4KGUubWF4aW11bSkpLCJudW1iZXIiPT10eXBlb2YgZS5leGNsdXNpdmVNaW5pbXVtP3M9cy5ndChlLmV4Y2x1c2l2ZU1pbmltdW0pOiEwPT09ZS5leGNsdXNpdmVNaW5pbXVtJiYibnVtYmVyIj09dHlwZW9mIGUubWluaW11bSYmKHM9cy5ndChlLm1pbmltdW0pKSwibnVtYmVyIj09dHlwZW9mIGUuZXhjbHVzaXZlTWF4aW11bT9zPXMubHQoZS5leGNsdXNpdmVNYXhpbXVtKTohMD09PWUuZXhjbHVzaXZlTWF4aW11bSYmIm51bWJlciI9PXR5cGVvZiBlLm1heGltdW0mJihzPXMubHQoZS5tYXhpbXVtKSksIm51bWJlciI9PXR5cGVvZiBlLm11bHRpcGxlT2YmJihzPXMubXVsdGlwbGVPZihlLm11bHRpcGxlT2YpKSxtPXM7YnJlYWt9Y2FzZSJib29sZWFuIjptPUJjLmJvb2xlYW4oKTticmVhaztjYXNlIm51bGwiOm09QmMubnVsbCgpO2JyZWFrO2Nhc2Uib2JqZWN0Ijp7Y29uc3QgZD17fSxoPWUucHJvcGVydGllc3x8e30sZz1uZXcgU2V0KGUucmVxdWlyZWR8fFtdKTtmb3IoY29uc3RbZSxtXW9mIE9iamVjdC5lbnRyaWVzKGgpKXtjb25zdCBoPWNvbnZlcnRTY2hlbWEobSxzKTtkW2VdPWcuaGFzKGUpP2g6aC5vcHRpb25hbCgpfWlmKGUucHJvcGVydHlOYW1lcyl7Y29uc3QgaD1jb252ZXJ0U2NoZW1hKGUucHJvcGVydHlOYW1lcyxzKSxnPWUuYWRkaXRpb25hbFByb3BlcnRpZXMmJiJvYmplY3QiPT10eXBlb2YgZS5hZGRpdGlvbmFsUHJvcGVydGllcz9jb252ZXJ0U2NoZW1hKGUuYWRkaXRpb25hbFByb3BlcnRpZXMscyk6QmMuYW55KCk7aWYoMD09PU9iamVjdC5rZXlzKGQpLmxlbmd0aCl7bT1CYy5yZWNvcmQoaCxnKTticmVha31jb25zdCB4PUJjLm9iamVjdChkKS5wYXNzdGhyb3VnaCgpLCQ9QmMubG9vc2VSZWNvcmQoaCxnKTttPUJjLmludGVyc2VjdGlvbih4LCQpO2JyZWFrfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxnPU9iamVjdC5rZXlzKGgpLHg9W107Zm9yKGNvbnN0IGUgb2YgZyl7Y29uc3QgZD1jb252ZXJ0U2NoZW1hKGhbZV0scyksbT1CYy5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKGUpKTt4LnB1c2goQmMubG9vc2VSZWNvcmQobSxkKSl9Y29uc3QgJD1bXTtpZihPYmplY3Qua2V5cyhkKS5sZW5ndGg+MCYmJC5wdXNoKEJjLm9iamVjdChkKS5wYXNzdGhyb3VnaCgpKSwkLnB1c2goLi4ueCksMD09PSQubGVuZ3RoKW09QmMub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoMT09PSQubGVuZ3RoKW09JFswXTtlbHNle2xldCBlPUJjLmludGVyc2VjdGlvbigkWzBdLCRbMV0pO2ZvcihsZXQgcz0yO3M8JC5sZW5ndGg7cysrKWU9QmMuaW50ZXJzZWN0aW9uKGUsJFtzXSk7bT1lfWJyZWFrfWNvbnN0IHg9QmMub2JqZWN0KGQpO209ITE9PT1lLmFkZGl0aW9uYWxQcm9wZXJ0aWVzP3guc3RyaWN0KCk6Im9iamVjdCI9PXR5cGVvZiBlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzP3guY2F0Y2hhbGwoY29udmVydFNjaGVtYShlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLHMpKTp4LnBhc3N0aHJvdWdoKCk7YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IGQ9ZS5wcmVmaXhJdGVtcyxoPWUuaXRlbXM7aWYoZCYmQXJyYXkuaXNBcnJheShkKSl7Y29uc3QgZz1kLm1hcChlPT5jb252ZXJ0U2NoZW1hKGUscykpLHg9aCYmIm9iamVjdCI9PXR5cGVvZiBoJiYhQXJyYXkuaXNBcnJheShoKT9jb252ZXJ0U2NoZW1hKGgscyk6dm9pZCAwO209eD9CYy50dXBsZShnKS5yZXN0KHgpOkJjLnR1cGxlKGcpLCJudW1iZXIiPT10eXBlb2YgZS5taW5JdGVtcyYmKG09bS5jaGVjayhCYy5taW5MZW5ndGgoZS5taW5JdGVtcykpKSwibnVtYmVyIj09dHlwZW9mIGUubWF4SXRlbXMmJihtPW0uY2hlY2soQmMubWF4TGVuZ3RoKGUubWF4SXRlbXMpKSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGgpKXtjb25zdCBkPWgubWFwKGU9PmNvbnZlcnRTY2hlbWEoZSxzKSksZz1lLmFkZGl0aW9uYWxJdGVtcyYmIm9iamVjdCI9PXR5cGVvZiBlLmFkZGl0aW9uYWxJdGVtcz9jb252ZXJ0U2NoZW1hKGUuYWRkaXRpb25hbEl0ZW1zLHMpOnZvaWQgMDttPWc/QmMudHVwbGUoZCkucmVzdChnKTpCYy50dXBsZShkKSwibnVtYmVyIj09dHlwZW9mIGUubWluSXRlbXMmJihtPW0uY2hlY2soQmMubWluTGVuZ3RoKGUubWluSXRlbXMpKSksIm51bWJlciI9PXR5cGVvZiBlLm1heEl0ZW1zJiYobT1tLmNoZWNrKEJjLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYodm9pZCAwIT09aCl7Y29uc3QgZD1jb252ZXJ0U2NoZW1hKGgscyk7bGV0IGc9QmMuYXJyYXkoZCk7Im51bWJlciI9PXR5cGVvZiBlLm1pbkl0ZW1zJiYoZz1nLm1pbihlLm1pbkl0ZW1zKSksIm51bWJlciI9PXR5cGVvZiBlLm1heEl0ZW1zJiYoZz1nLm1heChlLm1heEl0ZW1zKSksbT1nfWVsc2UgbT1CYy5hcnJheShCYy5hbnkoKSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHR5cGU6ICR7ZH1gKX1yZXR1cm4gZS5kZXNjcmlwdGlvbiYmKG09bS5kZXNjcmliZShlLmRlc2NyaXB0aW9uKSksdm9pZCAwIT09ZS5kZWZhdWx0JiYobT1tLmRlZmF1bHQoZS5kZWZhdWx0KSksbX1mdW5jdGlvbiBjb252ZXJ0U2NoZW1hKGUscyl7aWYoImJvb2xlYW4iPT10eXBlb2YgZSlyZXR1cm4gZT9CYy5hbnkoKTpCYy5uZXZlcigpO2xldCBkPWNvbnZlcnRCYXNlU2NoZW1hKGUscyk7Y29uc3QgbT1lLnR5cGV8fHZvaWQgMCE9PWUuZW51bXx8dm9pZCAwIT09ZS5jb25zdDtpZihlLmFueU9mJiZBcnJheS5pc0FycmF5KGUuYW55T2YpKXtjb25zdCBoPWUuYW55T2YubWFwKGU9PmNvbnZlcnRTY2hlbWEoZSxzKSksZz1CYy51bmlvbihoKTtkPW0/QmMuaW50ZXJzZWN0aW9uKGQsZyk6Z31pZihlLm9uZU9mJiZBcnJheS5pc0FycmF5KGUub25lT2YpKXtjb25zdCBoPWUub25lT2YubWFwKGU9PmNvbnZlcnRTY2hlbWEoZSxzKSksZz1CYy54b3IoaCk7ZD1tP0JjLmludGVyc2VjdGlvbihkLGcpOmd9aWYoZS5hbGxPZiYmQXJyYXkuaXNBcnJheShlLmFsbE9mKSlpZigwPT09ZS5hbGxPZi5sZW5ndGgpZD1tP2Q6QmMuYW55KCk7ZWxzZXtsZXQgaD1tP2Q6Y29udmVydFNjaGVtYShlLmFsbE9mWzBdLHMpO2ZvcihsZXQgZD1tPzA6MTtkPGUuYWxsT2YubGVuZ3RoO2QrKyloPUJjLmludGVyc2VjdGlvbihoLGNvbnZlcnRTY2hlbWEoZS5hbGxPZltkXSxzKSk7ZD1ofSEwPT09ZS5udWxsYWJsZSYmIm9wZW5hcGktMy4wIj09PXMudmVyc2lvbiYmKGQ9QmMubnVsbGFibGUoZCkpLCEwPT09ZS5yZWFkT25seSYmKGQ9QmMucmVhZG9ubHkoZCkpO2NvbnN0IGg9e30sZz1bIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIl07Zm9yKGNvbnN0IHMgb2YgZylzIGluIGUmJihoW3NdPWVbc10pO2NvbnN0IHg9WyJjb250ZW50RW5jb2RpbmciLCJjb250ZW50TWVkaWFUeXBlIiwiY29udGVudFNjaGVtYSJdO2Zvcihjb25zdCBzIG9mIHgpcyBpbiBlJiYoaFtzXT1lW3NdKTtmb3IoY29uc3QgcyBvZiBPYmplY3Qua2V5cyhlKSlldS5oYXMocyl8fChoW3NdPWVbc10pO3JldHVybiBPYmplY3Qua2V5cyhoKS5sZW5ndGg+MCYmcy5yZWdpc3RyeS5hZGQoZCxoKSxkfWZ1bmN0aW9uIG51bWJlcihlKXtyZXR1cm4gX2NvZXJjZWROdW1iZXIoRWwsZSl9Y29uc3QgdHU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJpZ2ludDpmdW5jdGlvbihlKXtyZXR1cm4gX2NvZXJjZWRCaWdpbnQoTmwsZSl9LGJvb2xlYW46ZnVuY3Rpb24oZSl7cmV0dXJuIF9jb2VyY2VkQm9vbGVhbihQbCxlKX0sZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gX2NvZXJjZWREYXRlKE1sLGUpfSxudW1iZXI6bnVtYmVyLHN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gX2NvZXJjZWRTdHJpbmcoY2wsZSl9fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2NvbmZpZyhlbigpKTtjb25zdCBudT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJGJyYW5kOmdyLCRpbnB1dDpQcywkb3V0cHV0Ok9zLE5FVkVSOmhyLFRpbWVQcmVjaXNpb246RHMsWm9kQW55OnFsLFpvZEFycmF5OlFsLFpvZEJhc2U2NDp6bCxab2RCYXNlNjRVUkw6SWwsWm9kQmlnSW50Ok5sLFpvZEJpZ0ludEZvcm1hdDpEbCxab2RCb29sZWFuOlBsLFpvZENJRFJ2NDprbCxab2RDSURSdjY6amwsWm9kQ1VJRDp2bCxab2RDVUlEMjp5bCxab2RDYXRjaDpiYyxab2RDb2RlYzp3Yyxab2RDdXN0b206UGMsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlJsLFpvZERhdGU6TWwsWm9kRGVmYXVsdDpoYyxab2REaXNjcmltaW5hdGVkVW5pb246SmwsWm9kRTE2NDpDbCxab2RFbWFpbDpkbCxab2RFbW9qaTpobCxab2RFbnVtOmljLFpvZEVycm9yOkhzLFpvZEV4YWN0T3B0aW9uYWw6ZGMsWm9kRmlsZTpzYyxnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIHFjfSxab2RGdW5jdGlvbjpPYyxab2RHVUlEOnBsLFpvZElQdjQ6d2wsWm9kSVB2NjpTbCxab2RJU09EYXRlOlpzLFpvZElTT0RhdGVUaW1lOkJzLFpvZElTT0R1cmF0aW9uOlFzLFpvZElTT1RpbWU6TXMsWm9kSW50ZXJzZWN0aW9uOktsLFpvZElzc3VlQ29kZTp7aW52YWxpZF90eXBlOiJpbnZhbGlkX3R5cGUiLHRvb19iaWc6InRvb19iaWciLHRvb19zbWFsbDoidG9vX3NtYWxsIixpbnZhbGlkX2Zvcm1hdDoiaW52YWxpZF9mb3JtYXQiLG5vdF9tdWx0aXBsZV9vZjoibm90X211bHRpcGxlX29mIix1bnJlY29nbml6ZWRfa2V5czoidW5yZWNvZ25pemVkX2tleXMiLGludmFsaWRfdW5pb246ImludmFsaWRfdW5pb24iLGludmFsaWRfa2V5OiJpbnZhbGlkX2tleSIsaW52YWxpZF9lbGVtZW50OiJpbnZhbGlkX2VsZW1lbnQiLGludmFsaWRfdmFsdWU6ImludmFsaWRfdmFsdWUiLGN1c3RvbToiY3VzdG9tIn0sWm9kSldUOlRsLFpvZEtTVUlEOnhsLFpvZExhenk6Q2MsWm9kTGl0ZXJhbDphYyxab2RNQUM6JGwsWm9kTWFwOllsLFpvZE5hTjpfYyxab2ROYW5vSUQ6Z2wsWm9kTmV2ZXI6QmwsWm9kTm9uT3B0aW9uYWw6dmMsWm9kTnVsbDpBbCxab2ROdWxsYWJsZTpmYyxab2ROdW1iZXI6RWwsWm9kTnVtYmVyRm9ybWF0Ok9sLFpvZE9iamVjdDpWbCxab2RPcHRpb25hbDp1Yyxab2RQaXBlOnhjLFpvZFByZWZhdWx0OmdjLFpvZFByb21pc2U6UmMsWm9kUmVhZG9ubHk6a2MsWm9kUmVhbEVycm9yOldzLFpvZFJlY29yZDpYbCxab2RTZXQ6ZWMsWm9kU3RyaW5nOmNsLFpvZFN0cmluZ0Zvcm1hdDp1bCxab2RTdWNjZXNzOnljLFpvZFN5bWJvbDpVbCxab2RUZW1wbGF0ZUxpdGVyYWw6emMsWm9kVHJhbnNmb3JtOmNjLFpvZFR1cGxlOkdsLFpvZFR5cGU6c2wsWm9kVUxJRDpibCxab2RVUkw6ZmwsWm9kVVVJRDptbCxab2RVbmRlZmluZWQ6TGwsWm9kVW5pb246SGwsWm9kVW5rbm93bjpGbCxab2RWb2lkOlpsLFpvZFhJRDpfbCxab2RYb3I6V2wsX1pvZFN0cmluZzpsbCxfZGVmYXVsdDpfZGVmYXVsdCQyLF9mdW5jdGlvbjpfZnVuY3Rpb24sYW55OmFueSxhcnJheTphcnJheSxiYXNlNjQ6YmFzZTY0LGJhc2U2NHVybDpiYXNlNjR1cmwsYmlnaW50OmJpZ2ludCQxLGJvb2xlYW46Ym9vbGVhbiQxLGNhdGNoOl9jYXRjaCxjaGVjazpjaGVjayxjaWRydjQ6Y2lkcnY0LGNpZHJ2NjpjaWRydjYsY2xvbmU6Y2xvbmUsY29kZWM6Y29kZWMsY29lcmNlOnR1LGNvbmZpZzpjb25maWcsY29yZTpxcyxjdWlkOmN1aWQsY3VpZDI6Y3VpZDIsY3VzdG9tOmN1c3RvbSxkYXRlOmRhdGUkMSxkZWNvZGU6ZWwsZGVjb2RlQXN5bmM6bmwsZGVzY3JpYmU6TmMsZGlzY3JpbWluYXRlZFVuaW9uOmRpc2NyaW1pbmF0ZWRVbmlvbixlMTY0OmUxNjQsZW1haWw6ZW1haWwsZW1vamk6ZW1vamksZW5jb2RlOllzLGVuY29kZUFzeW5jOnRsLGVuZHNXaXRoOl9lbmRzV2l0aCxlbnVtOl9lbnVtLGV4YWN0T3B0aW9uYWw6ZXhhY3RPcHRpb25hbCxmaWxlOmZpbGUsZmxhdHRlbkVycm9yOmZsYXR0ZW5FcnJvcixmbG9hdDMyOmZsb2F0MzIsZmxvYXQ2NDpmbG9hdDY0LGZvcm1hdEVycm9yOmZvcm1hdEVycm9yLGZyb21KU09OU2NoZW1hOmZ1bmN0aW9uKGUscyl7aWYoImJvb2xlYW4iPT10eXBlb2YgZSlyZXR1cm4gZT9CYy5hbnkoKTpCYy5uZXZlcigpO2NvbnN0IGQ9ZnVuY3Rpb24oZSxzKXtjb25zdCBkPWUuJHNjaGVtYTtyZXR1cm4iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPT09ZD8iZHJhZnQtMjAyMC0xMiI6Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI9PT1kPyJkcmFmdC03IjoiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj09PWQ/ImRyYWZ0LTQiOnM/PyJkcmFmdC0yMDIwLTEyIn0oZSxzPy5kZWZhdWx0VGFyZ2V0KTtyZXR1cm4gY29udmVydFNjaGVtYShlLHt2ZXJzaW9uOmQsZGVmczplLiRkZWZzfHxlLmRlZmluaXRpb25zfHx7fSxyZWZzOm5ldyBNYXAscHJvY2Vzc2luZzpuZXcgU2V0LHJvb3RTY2hlbWE6ZSxyZWdpc3RyeTpzPy5yZWdpc3RyeT8/TnN9KX0sZnVuY3Rpb246X2Z1bmN0aW9uLGdldEVycm9yTWFwOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbmZpZygpLmN1c3RvbUVycm9yfSxnbG9iYWxSZWdpc3RyeTpOcyxndDpfZ3QsZ3RlOl9ndGUsZ3VpZDpndWlkLGhhc2g6aGFzaCxoZXg6aGV4LGhvc3RuYW1lOmhvc3RuYW1lLGh0dHBVcmw6aHR0cFVybCxpbmNsdWRlczpfaW5jbHVkZXMsaW5zdGFuY2VvZjpfaW5zdGFuY2VvZixpbnQ6aW50LGludDMyOmludDMyLGludDY0OmludDY0LGludGVyc2VjdGlvbjppbnRlcnNlY3Rpb24saXB2NDppcHY0LGlwdjY6aXB2Nixpc286VnMsanNvbjpqc29uLGp3dDpqd3Qsa2V5b2Y6a2V5b2Ysa3N1aWQ6a3N1aWQsbGF6eTpsYXp5LGxlbmd0aDpfbGVuZ3RoLGxpdGVyYWw6bGl0ZXJhbCxsb2NhbGVzOlJzLGxvb3NlT2JqZWN0Omxvb3NlT2JqZWN0LGxvb3NlUmVjb3JkOmxvb3NlUmVjb3JkLGxvd2VyY2FzZTpfbG93ZXJjYXNlLGx0Ol9sdCxsdGU6X2x0ZSxtYWM6bWFjLG1hcDptYXAsbWF4TGVuZ3RoOl9tYXhMZW5ndGgsbWF4U2l6ZTpfbWF4U2l6ZSxtZXRhOkRjLG1pbWU6X21pbWUsbWluTGVuZ3RoOl9taW5MZW5ndGgsbWluU2l6ZTpfbWluU2l6ZSxtdWx0aXBsZU9mOl9tdWx0aXBsZU9mLG5hbjpuYW4sbmFub2lkOm5hbm9pZCxuYXRpdmVFbnVtOm5hdGl2ZUVudW0sbmVnYXRpdmU6X25lZ2F0aXZlLG5ldmVyOm5ldmVyLG5vbm5lZ2F0aXZlOl9ub25uZWdhdGl2ZSxub25vcHRpb25hbDpub25vcHRpb25hbCxub25wb3NpdGl2ZTpfbm9ucG9zaXRpdmUsbm9ybWFsaXplOl9ub3JtYWxpemUsbnVsbDpfbnVsbCxudWxsYWJsZTpudWxsYWJsZSxudWxsaXNoOm51bGxpc2gsbnVtYmVyOm51bWJlciQxLG9iamVjdDpvYmplY3Qsb3B0aW9uYWw6b3B0aW9uYWwsb3ZlcndyaXRlOl9vdmVyd3JpdGUscGFyc2U6SnMscGFyc2VBc3luYzpLcyxwYXJ0aWFsUmVjb3JkOnBhcnRpYWxSZWNvcmQscGlwZTpwaXBlLHBvc2l0aXZlOl9wb3NpdGl2ZSxwcmVmYXVsdDpwcmVmYXVsdCxwcmVwcm9jZXNzOnByZXByb2Nlc3MscHJldHRpZnlFcnJvcjpwcmV0dGlmeUVycm9yLHByb21pc2U6cHJvbWlzZSxwcm9wZXJ0eTpfcHJvcGVydHkscmVhZG9ubHk6cmVhZG9ubHkscmVjb3JkOnJlY29yZCxyZWZpbmU6cmVmaW5lLHJlZ2V4Ol9yZWdleCxyZWdleGVzOlJvLHJlZ2lzdHJ5OnJlZ2lzdHJ5LHNhZmVEZWNvZGU6cmwsc2FmZURlY29kZUFzeW5jOmFsLHNhZmVFbmNvZGU6aWwsc2FmZUVuY29kZUFzeW5jOm9sLHNhZmVQYXJzZTpHcyxzYWZlUGFyc2VBc3luYzpYcyxzZXQ6c2V0LHNldEVycm9yTWFwOmZ1bmN0aW9uKGUpe2NvbmZpZyh7Y3VzdG9tRXJyb3I6ZX0pfSxzaXplOl9zaXplLHNsdWdpZnk6X3NsdWdpZnksc3RhcnRzV2l0aDpfc3RhcnRzV2l0aCxzdHJpY3RPYmplY3Q6c3RyaWN0T2JqZWN0LHN0cmluZzpzdHJpbmckMSxzdHJpbmdGb3JtYXQ6c3RyaW5nRm9ybWF0LHN0cmluZ2Jvb2w6c3RyaW5nYm9vbCxzdWNjZXNzOnN1Y2Nlc3Msc3VwZXJSZWZpbmU6c3VwZXJSZWZpbmUsc3ltYm9sOnN5bWJvbCx0ZW1wbGF0ZUxpdGVyYWw6dGVtcGxhdGVMaXRlcmFsLHRvSlNPTlNjaGVtYTp0b0pTT05TY2hlbWEsdG9Mb3dlckNhc2U6X3RvTG93ZXJDYXNlLHRvVXBwZXJDYXNlOl90b1VwcGVyQ2FzZSx0cmFuc2Zvcm06dHJhbnNmb3JtLHRyZWVpZnlFcnJvcjp0cmVlaWZ5RXJyb3IsdHJpbTpfdHJpbSx0dXBsZTp0dXBsZSx1aW50MzI6dWludDMyLHVpbnQ2NDp1aW50NjQsdWxpZDp1bGlkLHVuZGVmaW5lZDpfdW5kZWZpbmVkLHVuaW9uOnVuaW9uJDEsdW5rbm93bjp1bmtub3duLHVwcGVyY2FzZTpfdXBwZXJjYXNlLHVybDp1cmwsdXRpbDprcix1dWlkOnV1aWQsdXVpZHY0OnV1aWR2NCx1dWlkdjY6dXVpZHY2LHV1aWR2Nzp1dWlkdjcsdm9pZDpfdm9pZCx4aWQ6eGlkLHhvcjp4b3J9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksaXU9eyJhcHBsaWNhdGlvbi9wcnMuY3d3IjpbImN3dyJdLCJhcHBsaWNhdGlvbi9wcnMueHNmK3htbCI6WyJ4c2YiXSwiYXBwbGljYXRpb24vdm5kLjEwMDBtaW5kcy5kZWNpc2lvbi1tb2RlbCt4bWwiOlsiMWttIl0sImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1sYXJnZSI6WyJwbGIiXSwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsIjpbInBzYiJdLCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyIjpbInB2YiJdLCJhcHBsaWNhdGlvbi92bmQuM2dwcDIudGNhcCI6WyJ0Y2FwIl0sImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzIjpbInB3biJdLCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5hc28iOlsiYXNvIl0sImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmltcCI6WyJpbXAiXSwiYXBwbGljYXRpb24vdm5kLmFjdWNvYm9sIjpbImFjdSJdLCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ycCI6WyJhdGMiLCJhY3V0YyJdLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWlyLWFwcGxpY2F0aW9uLWluc3RhbGxlci1wYWNrYWdlK3ppcCI6WyJhaXIiXSwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZvcm1zY2VudHJhbC5mY2R0IjpbImZjZHQiXSwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cCI6WyJmeHAiLCJmeHBsIl0sImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sIjpbInhkcCJdLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZiI6WyIqeGZkZiJdLCJhcHBsaWNhdGlvbi92bmQuYWdlIjpbImFnZSJdLCJhcHBsaWNhdGlvbi92bmQuYWhlYWQuc3BhY2UiOlsiYWhlYWQiXSwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZiI6WyJhemYiXSwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6cyI6WyJhenMiXSwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9vayI6WyJhenciXSwiYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjIjpbImFjYyJdLCJhcHBsaWNhdGlvbi92bmQuYW1pZ2EuYW1pIjpbImFtaSJdLCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmUiOlsiYXBrIl0sImFwcGxpY2F0aW9uL3ZuZC5hbnNlci13ZWItY2VydGlmaWNhdGUtaXNzdWUtaW5pdGlhdGlvbiI6WyJjaWkiXSwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uIjpbImZ0aSJdLCJhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnQiOlsiYXR4Il0sImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sIjpbIm1wa2ciXSwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmtleW5vdGUiOlsia2V5Il0sImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIjpbIm0zdTgiXSwiYXBwbGljYXRpb24vdm5kLmFwcGxlLm51bWJlcnMiOlsibnVtYmVycyJdLCJhcHBsaWNhdGlvbi92bmQuYXBwbGUucGFnZXMiOlsicGFnZXMiXSwiYXBwbGljYXRpb24vdm5kLmFwcGxlLnBrcGFzcyI6WyJwa3Bhc3MiXSwiYXBwbGljYXRpb24vdm5kLmFyaXN0YW5ldHdvcmtzLnN3aSI6WyJzd2kiXSwiYXBwbGljYXRpb24vdm5kLmFzdHJhZWEtc29mdHdhcmUuaW90YSI6WyJpb3RhIl0sImFwcGxpY2F0aW9uL3ZuZC5hdWRpb2dyYXBoIjpbImFlcCJdLCJhcHBsaWNhdGlvbi92bmQuYXV0b2Rlc2suZmJ4IjpbImZieCJdLCJhcHBsaWNhdGlvbi92bmQuYmFsc2FtaXEuYm1tbCt4bWwiOlsiYm1tbCJdLCJhcHBsaWNhdGlvbi92bmQuYmx1ZWljZS5tdWx0aXBhc3MiOlsibXBtIl0sImFwcGxpY2F0aW9uL3ZuZC5ibWkiOlsiYm1pIl0sImFwcGxpY2F0aW9uL3ZuZC5idXNpbmVzc29iamVjdHMiOlsicmVwIl0sImFwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWwiOlsiY2R4bWwiXSwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kIjpbIm1tZCJdLCJhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYSI6WyJjZHkiXSwiYXBwbGljYXRpb24vdm5kLmNpdGF0aW9uc3R5bGVzLnN0eWxlK3htbCI6WyJjc2wiXSwiYXBwbGljYXRpb24vdm5kLmNsYXltb3JlIjpbImNsYSJdLCJhcHBsaWNhdGlvbi92bmQuY2xvYW50by5ycDkiOlsicnA5Il0sImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwIjpbImM0ZyIsImM0ZCIsImM0ZiIsImM0cCIsImM0dSJdLCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZyI6WyJjMTFhbWMiXSwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnIjpbImMxMWFteiJdLCJhcHBsaWNhdGlvbi92bmQuY29tbW9uc3BhY2UiOlsiY3NwIl0sImFwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2ciOlsiY2RiY21zZyJdLCJhcHBsaWNhdGlvbi92bmQuY29zbW9jYWxsZXIiOlsiY21jIl0sImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyIjpbImNsa3giXSwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIua2V5Ym9hcmQiOlsiY2xrayJdLCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5wYWxldHRlIjpbImNsa3AiXSwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIudGVtcGxhdGUiOlsiY2xrdCJdLCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci53b3JkYmFuayI6WyJjbGt3Il0sImFwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWwiOlsid2JzIl0sImFwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWwiOlsicG1sIl0sImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBwZCI6WyJwcGQiXSwiYXBwbGljYXRpb24vdm5kLmN1cmwuY2FyIjpbImNhciJdLCJhcHBsaWNhdGlvbi92bmQuY3VybC5wY3VybCI6WyJwY3VybCJdLCJhcHBsaWNhdGlvbi92bmQuZGFydCI6WyJkYXJ0Il0sImFwcGxpY2F0aW9uL3ZuZC5kYXRhLXZpc2lvbi5yZHoiOlsicmR6Il0sImFwcGxpY2F0aW9uL3ZuZC5kYmYiOlsiZGJmIl0sImFwcGxpY2F0aW9uL3ZuZC5kY21wK3htbCI6WyJkY21wIl0sImFwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEiOlsidXZmIiwidXZ2ZiIsInV2ZCIsInV2dmQiXSwiYXBwbGljYXRpb24vdm5kLmRlY2UudHRtbCt4bWwiOlsidXZ0IiwidXZ2dCJdLCJhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCI6WyJ1dngiLCJ1dnZ4Il0sImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCI6WyJ1dnoiLCJ1dnZ6Il0sImFwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rIjpbImZlX2xhdW5jaCJdLCJhcHBsaWNhdGlvbi92bmQuZG5hIjpbImRuYSJdLCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubWxwIjpbIm1scCJdLCJhcHBsaWNhdGlvbi92bmQuZHBncmFwaCI6WyJkcGciXSwiYXBwbGljYXRpb24vdm5kLmRyZWFtZmFjdG9yeSI6WyJkZmFjIl0sImFwcGxpY2F0aW9uL3ZuZC5kcy1rZXlwb2ludCI6WyJrcHh4Il0sImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0IjpbImFpdCJdLCJhcHBsaWNhdGlvbi92bmQuZHZiLnNlcnZpY2UiOlsic3ZjIl0sImFwcGxpY2F0aW9uL3ZuZC5keW5hZ2VvIjpbImdlbyJdLCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmNoYXJ0IjpbIm1hZyJdLCJhcHBsaWNhdGlvbi92bmQuZW5saXZlbiI6WyJubWwiXSwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZiI6WyJlc2YiXSwiYXBwbGljYXRpb24vdm5kLmVwc29uLm1zZiI6WyJtc2YiXSwiYXBwbGljYXRpb24vdm5kLmVwc29uLnF1aWNrYW5pbWUiOlsicWFtIl0sImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zYWx0IjpbInNsdCJdLCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmIjpbInNzZiJdLCJhcHBsaWNhdGlvbi92bmQuZXN6aWdubzMreG1sIjpbImVzMyIsImV0MyJdLCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtYWxidW0iOlsiZXoyIl0sImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1wYWNrYWdlIjpbImV6MyJdLCJhcHBsaWNhdGlvbi92bmQuZmRmIjpbIipmZGYiXSwiYXBwbGljYXRpb24vdm5kLmZkc24ubXNlZWQiOlsibXNlZWQiXSwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZCI6WyJzZWVkIiwiZGF0YWxlc3MiXSwiYXBwbGljYXRpb24vdm5kLmZsb2dyYXBoaXQiOlsiZ3BoIl0sImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwIjpbImZ0YyJdLCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlciI6WyJmbSIsImZyYW1lIiwibWFrZXIiLCJib29rIl0sImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmZuYyI6WyJmbmMiXSwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMubHRmIjpbImx0ZiJdLCJhcHBsaWNhdGlvbi92bmQuZnNjLndlYmxhdW5jaCI6WyJmc2MiXSwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMiOlsib2FzIl0sImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzMiI6WyJvYTIiXSwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMzIjpbIm9hMyJdLCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c2dwIjpbImZnNSJdLCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c3BycyI6WyJiaDIiXSwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGQiOlsiZGRkIl0sImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzIjpbInhkdyJdLCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrcy5iaW5kZXIiOlsieGJkIl0sImFwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0IjpbImZ6cyJdLCJhcHBsaWNhdGlvbi92bmQuZ2Vub21hdGl4LnR1eGVkbyI6WyJ0eGQiXSwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLmZpbGUiOlsiZ2diIl0sImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5zbGlkZXMiOlsiZ2dzIl0sImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS50b29sIjpbImdndCJdLCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXIiOlsiZ2V4IiwiZ3JlIl0sImFwcGxpY2F0aW9uL3ZuZC5nZW9uZXh0IjpbImd4dCJdLCJhcHBsaWNhdGlvbi92bmQuZ2VvcGxhbiI6WyJnMnciXSwiYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlIjpbImczdyJdLCJhcHBsaWNhdGlvbi92bmQuZ214IjpbImdteCJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnQiOlsiZ2RvYyJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZHJhd2luZyI6WyJnZHJhdyJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZm9ybSI6WyJnZm9ybSJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuamFtIjpbImdqYW0iXSwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLm1hcCI6WyJnbWFwIl0sImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb24iOlsiZ3NsaWRlcyJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuc2NyaXB0IjpbImdzY3JpcHQiXSwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNpdGUiOlsiZ3NpdGUiXSwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNwcmVhZHNoZWV0IjpbImdzaGVldCJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWwiOlsia21sIl0sImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua216IjpbImtteiJdLCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLnhtbGRhdGFjb250YWluZXIreG1sIjpbInhkY2YiXSwiYXBwbGljYXRpb24vdm5kLmdyYWZlcSI6WyJncWYiLCJncXMiXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50IjpbImdhYyJdLCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWhlbHAiOlsiZ2hmIl0sImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZSI6WyJnaW0iXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pbmplY3RvciI6WyJncnYiXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2UiOlsiZ3RtIl0sImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZSI6WyJ0cGwiXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS12Y2FyZCI6WyJ2Y2ciXSwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWwiOlsiaGFsIl0sImFwcGxpY2F0aW9uL3ZuZC5oYW5kaGVsZC1lbnRlcnRhaW5tZW50K3htbCI6WyJ6bW0iXSwiYXBwbGljYXRpb24vdm5kLmhiY2kiOlsiaGJjaSJdLCJhcHBsaWNhdGlvbi92bmQuaGhlLmxlc3Nvbi1wbGF5ZXIiOlsibGVzIl0sImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGdsIjpbImhwZ2wiXSwiYXBwbGljYXRpb24vdm5kLmhwLWhwaWQiOlsiaHBpZCJdLCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzIjpbImhwcyJdLCJhcHBsaWNhdGlvbi92bmQuaHAtamx5dCI6WyJqbHQiXSwiYXBwbGljYXRpb24vdm5kLmhwLXBjbCI6WyJwY2wiXSwiYXBwbGljYXRpb24vdm5kLmhwLXBjbHhsIjpbInBjbHhsIl0sImFwcGxpY2F0aW9uL3ZuZC5oeWRyb3N0YXRpeC5zb2YtZGF0YSI6WyJzZmQtaGRzdHgiXSwiYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5IjpbIm1weSJdLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1vZGNhcCI6WyJhZnAiLCJsaXN0YWZwIiwibGlzdDM4MjAiXSwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudCI6WyJpcm0iXSwiYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyIjpbInNjIl0sImFwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlIjpbImljYyIsImljbSJdLCJhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXIiOlsiaWdsIl0sImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnAiOlsiaXZwIl0sImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnUiOlsiaXZ1Il0sImFwcGxpY2F0aW9uL3ZuZC5pbnNvcnMuaWdtIjpbImlnbSJdLCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldCI6WyJ4cHciLCJ4cHgiXSwiYXBwbGljYXRpb24vdm5kLmludGVyZ2VvIjpbImkyZyJdLCJhcHBsaWNhdGlvbi92bmQuaW50dS5xYm8iOlsicWJvIl0sImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeCI6WyJxZngiXSwiYXBwbGljYXRpb24vdm5kLmlwdW5wbHVnZ2VkLnJjcHJvZmlsZSI6WyJyY3Byb2ZpbGUiXSwiYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sIjpbImlycCJdLCJhcHBsaWNhdGlvbi92bmQuaXMteHByIjpbInhwciJdLCJhcHBsaWNhdGlvbi92bmQuaXNhYy5mY3MiOlsiZmNzIl0sImFwcGxpY2F0aW9uL3ZuZC5qYW0iOlsiamFtIl0sImFwcGxpY2F0aW9uL3ZuZC5qY3AuamF2YW1lLm1pZGxldC1ybXMiOlsicm1zIl0sImFwcGxpY2F0aW9uL3ZuZC5qaXNwIjpbImppc3AiXSwiYXBwbGljYXRpb24vdm5kLmpvb3N0LmpvZGEtYXJjaGl2ZSI6WyJqb2RhIl0sImFwcGxpY2F0aW9uL3ZuZC5rYWhvb3R6IjpbImt0eiIsImt0ciJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmthcmJvbiI6WyJrYXJib24iXSwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnQiOlsiY2hydCJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmtmb3JtdWxhIjpbImtmbyJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmtpdmlvIjpbImZsdyJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXIiOlsia29uIl0sImFwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlciI6WyJrcHIiLCJrcHQiXSwiYXBwbGljYXRpb24vdm5kLmtkZS5rc3ByZWFkIjpbImtzcCJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkIjpbImt3ZCIsImt3dCJdLCJhcHBsaWNhdGlvbi92bmQua2VuYW1lYWFwcCI6WyJodGtlIl0sImFwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb24iOlsia2lhIl0sImFwcGxpY2F0aW9uL3ZuZC5raW5hciI6WyJrbmUiLCJrbnAiXSwiYXBwbGljYXRpb24vdm5kLmtvYW4iOlsic2twIiwic2tkIiwic2t0Iiwic2ttIl0sImFwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yIjpbInNzZSJdLCJhcHBsaWNhdGlvbi92bmQubGFzLmxhcyt4bWwiOlsibGFzeG1sIl0sImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wIjpbImxiZCJdLCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sIjpbImxiZSJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMiOlsiMTIzIl0sImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1hcHByb2FjaCI6WyJhcHIiXSwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZSI6WyJwcmUiXSwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW5vdGVzIjpbIm5zZiJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtb3JnYW5pemVyIjpbIm9yZyJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtc2NyZWVuY2FtIjpbInNjbSJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtd29yZHBybyI6WyJsd3AiXSwiYXBwbGljYXRpb24vdm5kLm1hY3BvcnRzLnBvcnRwa2ciOlsicG9ydHBrZyJdLCJhcHBsaWNhdGlvbi92bmQubWFwYm94LXZlY3Rvci10aWxlIjpbIm12dCJdLCJhcHBsaWNhdGlvbi92bmQubWNkIjpbIm1jZCJdLCJhcHBsaWNhdGlvbi92bmQubWVkY2FsY2RhdGEiOlsibWMxIl0sImFwcGxpY2F0aW9uL3ZuZC5tZWRpYXN0YXRpb24uY2RrZXkiOlsiY2RrZXkiXSwiYXBwbGljYXRpb24vdm5kLm1mZXIiOlsibXdmIl0sImFwcGxpY2F0aW9uL3ZuZC5tZm1wIjpbIm1mbSJdLCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG8iOlsiZmxvIl0sImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmlneCI6WyJpZ3giXSwiYXBwbGljYXRpb24vdm5kLm1pZiI6WyJtaWYiXSwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kYWYiOlsiZGFmIl0sImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGlzIjpbImRpcyJdLCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1iayI6WyJtYmsiXSwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXkiOlsibXF5Il0sImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXNsIjpbIm1zbCJdLCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsYyI6WyJwbGMiXSwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGYiOlsidHhmIl0sImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uYXBwbGljYXRpb24iOlsibXBuIl0sImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uY2VydGlmaWNhdGUiOlsibXBjIl0sImFwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWwiOlsieHVsIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeSI6WyJjaWwiXSwiYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkIjpbImNhYiJdLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiOlsieGxzIiwieGxtIiwieGxhIiwieGxjIiwieGx0IiwieGx3Il0sImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb2VuYWJsZWQuMTIiOlsieGxhbSJdLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvZW5hYmxlZC4xMiI6WyJ4bHNiIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb2VuYWJsZWQuMTIiOlsieGxzbSJdLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyIjpbInhsdG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QiOlsiZW90Il0sImFwcGxpY2F0aW9uL3ZuZC5tcy1odG1saGVscCI6WyJjaG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLWltcyI6WyJpbXMiXSwiYXBwbGljYXRpb24vdm5kLm1zLWxybSI6WyJscm0iXSwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZXRoZW1lIjpbInRobXgiXSwiYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2siOlsibXNnIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc2VjY2F0IjpbImNhdCJdLCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnN0bCI6WyIqc3RsIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50IjpbInBwdCIsInBwcyIsInBvdCJdLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb2VuYWJsZWQuMTIiOlsicHBhbSJdLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9lbmFibGVkLjEyIjpbInBwdG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyIjpbInNsZG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvZW5hYmxlZC4xMiI6WyJwcHNtIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMiI6WyJwb3RtIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0IjpbIiptcHAiLCJtcHQiXSwiYXBwbGljYXRpb24vdm5kLm1zLXZpc2lvLnZpZXdlciI6WyJ2ZHgiXSwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQuZG9jdW1lbnQubWFjcm9lbmFibGVkLjEyIjpbImRvY20iXSwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyIjpbImRvdG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzIjpbIndwcyIsIndrcyIsIndjbSIsIndkYiJdLCJhcHBsaWNhdGlvbi92bmQubXMtd3BsIjpbIndwbCJdLCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnQiOlsieHBzIl0sImFwcGxpY2F0aW9uL3ZuZC5tc2VxIjpbIm1zZXEiXSwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuIjpbIm11cyJdLCJhcHBsaWNhdGlvbi92bmQubXV2ZWUuc3R5bGUiOlsibXN0eSJdLCJhcHBsaWNhdGlvbi92bmQubXluZmMiOlsidGFnbGV0Il0sImFwcGxpY2F0aW9uL3ZuZC5uYXRvLmJpbmRpbmdkYXRhb2JqZWN0K3htbCI6WyJiZG8iXSwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1IjpbIm5sdSJdLCJhcHBsaWNhdGlvbi92bmQubml0ZiI6WyJudGYiLCJuaXRmIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1kaXJlY3RvcnkiOlsibm5kIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXIiOlsibm5zIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC13ZWIiOlsibm53Il0sImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuYWMreG1sIjpbIiphYyJdLCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGEiOlsibmdkYXQiXSwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5zeW1iaWFuLmluc3RhbGwiOlsibi1nYWdlIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXQiOlsicnBzdCJdLCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0cyI6WyJycHNzIl0sImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZG0iOlsiZWRtIl0sImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZHgiOlsiZWR4Il0sImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5leHQiOlsiZXh0Il0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQiOlsib2RjIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQtdGVtcGxhdGUiOlsib3RjIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZGF0YWJhc2UiOlsib2RiIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYSI6WyJvZGYiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlIjpbIm9kZnQiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcyI6WyJvZGciXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcy10ZW1wbGF0ZSI6WyJvdGciXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZSI6WyJvZGkiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZSI6WyJvdGkiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24iOlsib2RwIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlIjpbIm90cCJdLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0IjpbIm9kcyJdLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlIjpbIm90cyJdLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQiOlsib2R0Il0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1tYXN0ZXIiOlsib2RtIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC10ZW1wbGF0ZSI6WyJvdHQiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXdlYiI6WyJvdGgiXSwiYXBwbGljYXRpb24vdm5kLm9scGMtc3VnYXIiOlsieG8iXSwiYXBwbGljYXRpb24vdm5kLm9tYS5kZDIreG1sIjpbImRkMiJdLCJhcHBsaWNhdGlvbi92bmQub3BlbmJsb3guZ2FtZSt4bWwiOlsib2JneCJdLCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb24iOlsib3h0Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVuc3RyZWV0bWFwLmRhdGEreG1sIjpbIm9zbSJdLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uIjpbInBwdHgiXSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlIjpbInNsZHgiXSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdyI6WyJwcHN4Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZSI6WyJwb3R4Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0IjpbInhsc3giXSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUiOlsieGx0eCJdLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCI6WyJkb2N4Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlIjpbImRvdHgiXSwiYXBwbGljYXRpb24vdm5kLm9zZ2VvLm1hcGd1aWRlLnBhY2thZ2UiOlsibWdwIl0sImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwIjpbImRwIl0sImFwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbSI6WyJlc2EiXSwiYXBwbGljYXRpb24vdm5kLnBhbG0iOlsicGRiIiwicHFhIiwib3ByYyJdLCJhcHBsaWNhdGlvbi92bmQucGF3YWFmaWxlIjpbInBhdyJdLCJhcHBsaWNhdGlvbi92bmQucGcuZm9ybWF0IjpbInN0ciJdLCJhcHBsaWNhdGlvbi92bmQucGcub3Nhc2xpIjpbImVpNiJdLCJhcHBsaWNhdGlvbi92bmQucGljc2VsIjpbImVmaWYiXSwiYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXQiOlsid2ciXSwiYXBwbGljYXRpb24vdm5kLnBvY2tldGxlYXJuIjpbInBsZiJdLCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNiI6WyJwYmQiXSwiYXBwbGljYXRpb24vdm5kLnByZXZpZXdzeXN0ZW1zLmJveCI6WyJib3giXSwiYXBwbGljYXRpb24vdm5kLnByb2NyYXRlLmJydXNoc2V0IjpbImJydXNoc2V0Il0sImFwcGxpY2F0aW9uL3ZuZC5wcm9jcmVhdGUuYnJ1c2giOlsiYnJ1c2giXSwiYXBwbGljYXRpb24vdm5kLnByb2NyZWF0ZS5kcmVhbSI6WyJkcm0iXSwiYXBwbGljYXRpb24vdm5kLnByb3RldXMubWFnYXppbmUiOlsibWd6Il0sImFwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWUiOlsicXBzIl0sImFwcGxpY2F0aW9uL3ZuZC5wdmkucHRpZDEiOlsicHRpZCJdLCJhcHBsaWNhdGlvbi92bmQucHdnLXhodG1sLXByaW50K3htbCI6WyJ4aHRtIl0sImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcyI6WyJxeGQiLCJxeHQiLCJxd2QiLCJxd3QiLCJxeGwiLCJxeGIiXSwiYXBwbGljYXRpb24vdm5kLnJhciI6WyJyYXIiXSwiYXBwbGljYXRpb24vdm5kLnJlYWx2bmMuYmVkIjpbImJlZCJdLCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sIjpbIm14bCJdLCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sK3htbCI6WyJtdXNpY3htbCJdLCJhcHBsaWNhdGlvbi92bmQucmlnLmNyeXB0b25vdGUiOlsiY3J5cHRvbm90ZSJdLCJhcHBsaWNhdGlvbi92bmQucmltLmNvZCI6WyJjb2QiXSwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYSI6WyJybSJdLCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhLXZiciI6WyJybXZiIl0sImFwcGxpY2F0aW9uL3ZuZC5yb3V0ZTY2Lmxpbms2Nit4bWwiOlsibGluazY2Il0sImFwcGxpY2F0aW9uL3ZuZC5zYWlsaW5ndHJhY2tlci50cmFjayI6WyJzdCJdLCJhcHBsaWNhdGlvbi92bmQuc2VlbWFpbCI6WyJzZWUiXSwiYXBwbGljYXRpb24vdm5kLnNlbWEiOlsic2VtYSJdLCJhcHBsaWNhdGlvbi92bmQuc2VtZCI6WyJzZW1kIl0sImFwcGxpY2F0aW9uL3ZuZC5zZW1mIjpbInNlbWYiXSwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhIjpbImlmbSJdLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybXRlbXBsYXRlIjpbIml0cCJdLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuaW50ZXJjaGFuZ2UiOlsiaWlmIl0sImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlIjpbImlwayJdLCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyIjpbInR3ZCIsInR3ZHMiXSwiYXBwbGljYXRpb24vdm5kLnNtYWYiOlsibW1mIl0sImFwcGxpY2F0aW9uL3ZuZC5zbWFydC50ZWFjaGVyIjpbInRlYWNoZXIiXSwiYXBwbGljYXRpb24vdm5kLnNvZnR3YXJlNjAyLmZpbGxlci5mb3JtK3htbCI6WyJmbyJdLCJhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sIjpbInNka20iLCJzZGtkIl0sImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5keHAiOlsiZHhwIl0sImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5zZnMiOlsic2ZzIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2FsYyI6WyJzZGMiXSwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5kcmF3IjpbInNkYSJdLCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MiOlsic2RkIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWF0aCI6WyJzbWYiXSwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXIiOlsic2R3Iiwidm9yIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyLWdsb2JhbCI6WyJzZ2wiXSwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlIjpbInNtemlwIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEuc3RlcGNoYXJ0IjpbInNtIl0sImFwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWwiOlsid2FkbCJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjIjpbInN4YyJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBsYXRlIjpbInN0YyJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3IjpbInN4ZCJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlIjpbInN0ZCJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzIjpbInN4aSJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlIjpbInN0aSJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoIjpbInN4bSJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXIiOlsic3h3Il0sImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWwiOlsic3hnIl0sImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZSI6WyJzdHciXSwiYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhciI6WyJzdXMiLCJzdXNwIl0sImFwcGxpY2F0aW9uL3ZuZC5zdmQiOlsic3ZkIl0sImFwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGwiOlsic2lzIiwic2lzeCJdLCJhcHBsaWNhdGlvbi92bmQuc3luY21sK3htbCI6WyJ4c20iXSwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt3YnhtbCI6WyJiZG0iXSwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt4bWwiOlsieGRtIl0sImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYreG1sIjpbImRkZiJdLCJhcHBsaWNhdGlvbi92bmQudGFvLmludGVudC1tb2R1bGUtYXJjaGl2ZSI6WyJ0YW8iXSwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCI6WyJwY2FwIiwiY2FwIiwiZG1wIl0sImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0diI6WyJ0bW8iXSwiYXBwbGljYXRpb24vdm5kLnRyaWQudHB0IjpbInRwdCJdLCJhcHBsaWNhdGlvbi92bmQudHJpc2NhcGUubXhzIjpbIm14cyJdLCJhcHBsaWNhdGlvbi92bmQudHJ1ZWFwcCI6WyJ0cmEiXSwiYXBwbGljYXRpb24vdm5kLnVmZGwiOlsidWZkIiwidWZkbCJdLCJhcHBsaWNhdGlvbi92bmQudWlxLnRoZW1lIjpbInV0eiJdLCJhcHBsaWNhdGlvbi92bmQudW1hamluIjpbInVtaiJdLCJhcHBsaWNhdGlvbi92bmQudW5pdHkiOlsidW5pdHl3ZWIiXSwiYXBwbGljYXRpb24vdm5kLnVvbWwreG1sIjpbInVvbWwiLCJ1byJdLCJhcHBsaWNhdGlvbi92bmQudmN4IjpbInZjeCJdLCJhcHBsaWNhdGlvbi92bmQudmlzaW8iOlsidnNkIiwidnN0IiwidnNzIiwidnN3IiwidnNkeCIsInZ0eCJdLCJhcHBsaWNhdGlvbi92bmQudmlzaW9uYXJ5IjpbInZpcyJdLCJhcHBsaWNhdGlvbi92bmQudnNmIjpbInZzZiJdLCJhcHBsaWNhdGlvbi92bmQud2FwLndieG1sIjpbIndieG1sIl0sImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyI6WyJ3bWxjIl0sImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YyI6WyJ3bWxzYyJdLCJhcHBsaWNhdGlvbi92bmQud2VidHVyYm8iOlsid3RiIl0sImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLnBsYXllciI6WyJuYnAiXSwiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IjpbIndwZCJdLCJhcHBsaWNhdGlvbi92bmQud3FkIjpbIndxZCJdLCJhcHBsaWNhdGlvbi92bmQud3Quc3RmIjpbInN0ZiJdLCJhcHBsaWNhdGlvbi92bmQueGFyYSI6WyJ4YXIiXSwiYXBwbGljYXRpb24vdm5kLnhmZGwiOlsieGZkbCJdLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LWRpYyI6WyJodmQiXSwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1zY3JpcHQiOlsiaHZzIl0sImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2UiOlsiaHZwIl0sImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0IjpbIm9zZiJdLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sIjpbIm9zZnB2ZyJdLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtYXVkaW8iOlsic2FmIl0sImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1waHJhc2UiOlsic3BmIl0sImFwcGxpY2F0aW9uL3ZuZC55ZWxsb3dyaXZlci1jdXN0b20tbWVudSI6WyJjbXAiXSwiYXBwbGljYXRpb24vdm5kLnp1bCI6WyJ6aXIiLCJ6aXJ6Il0sImFwcGxpY2F0aW9uL3ZuZC56emF6ei5kZWNrK3htbCI6WyJ6YXoiXSwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkIjpbIjd6Il0sImFwcGxpY2F0aW9uL3gtYWJpd29yZCI6WyJhYnciXSwiYXBwbGljYXRpb24veC1hY2UtY29tcHJlc3NlZCI6WyJhY2UiXSwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2UiOlsiKmRtZyJdLCJhcHBsaWNhdGlvbi94LWFyaiI6WyJhcmoiXSwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLWJpbiI6WyJhYWIiLCJ4MzIiLCJ1MzIiLCJ2b3giXSwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcCI6WyJhYW0iXSwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLXNlZyI6WyJhYXMiXSwiYXBwbGljYXRpb24veC1iY3BpbyI6WyJiY3BpbyJdLCJhcHBsaWNhdGlvbi94LWJkb2MiOlsiKmJkb2MiXSwiYXBwbGljYXRpb24veC1iaXR0b3JyZW50IjpbInRvcnJlbnQiXSwiYXBwbGljYXRpb24veC1ibGVuZGVyIjpbImJsZW5kIl0sImFwcGxpY2F0aW9uL3gtYmxvcmIiOlsiYmxiIiwiYmxvcmIiXSwiYXBwbGljYXRpb24veC1iemlwIjpbImJ6Il0sImFwcGxpY2F0aW9uL3gtYnppcDIiOlsiYnoyIiwiYm96Il0sImFwcGxpY2F0aW9uL3gtY2JyIjpbImNiciIsImNiYSIsImNidCIsImNieiIsImNiNyJdLCJhcHBsaWNhdGlvbi94LWNkbGluayI6WyJ2Y2QiXSwiYXBwbGljYXRpb24veC1jZnMtY29tcHJlc3NlZCI6WyJjZnMiXSwiYXBwbGljYXRpb24veC1jaGF0IjpbImNoYXQiXSwiYXBwbGljYXRpb24veC1jaGVzcy1wZ24iOlsicGduIl0sImFwcGxpY2F0aW9uL3gtY2hyb21lLWV4dGVuc2lvbiI6WyJjcngiXSwiYXBwbGljYXRpb24veC1jb2NvYSI6WyJjY28iXSwiYXBwbGljYXRpb24veC1jb21wcmVzc2VkIjpbIipyYXIiXSwiYXBwbGljYXRpb24veC1jb25mZXJlbmNlIjpbIm5zYyJdLCJhcHBsaWNhdGlvbi94LWNwaW8iOlsiY3BpbyJdLCJhcHBsaWNhdGlvbi94LWNzaCI6WyJjc2giXSwiYXBwbGljYXRpb24veC1kZWJpYW4tcGFja2FnZSI6WyIqZGViIiwidWRlYiJdLCJhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkIjpbImRnYyJdLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIjpbImRpciIsImRjciIsImR4ciIsImNzdCIsImNjdCIsImN4dCIsInczZCIsImZnZCIsInN3YSJdLCJhcHBsaWNhdGlvbi94LWRvb20iOlsid2FkIl0sImFwcGxpY2F0aW9uL3gtZHRibmN4K3htbCI6WyJuY3giXSwiYXBwbGljYXRpb24veC1kdGJvb2sreG1sIjpbImR0YiJdLCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbCI6WyJyZXMiXSwiYXBwbGljYXRpb24veC1kdmkiOlsiZHZpIl0sImFwcGxpY2F0aW9uL3gtZW52b3kiOlsiZXZ5Il0sImFwcGxpY2F0aW9uL3gtZXZhIjpbImV2YSJdLCJhcHBsaWNhdGlvbi94LWZvbnQtYmRmIjpbImJkZiJdLCJhcHBsaWNhdGlvbi94LWZvbnQtZ2hvc3RzY3JpcHQiOlsiZ3NmIl0sImFwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2YiOlsicHNmIl0sImFwcGxpY2F0aW9uL3gtZm9udC1wY2YiOlsicGNmIl0sImFwcGxpY2F0aW9uL3gtZm9udC1zbmYiOlsic25mIl0sImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMSI6WyJwZmEiLCJwZmIiLCJwZm0iLCJhZm0iXSwiYXBwbGljYXRpb24veC1mcmVlYXJjIjpbImFyYyJdLCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaCI6WyJzcGwiXSwiYXBwbGljYXRpb24veC1nY2EtY29tcHJlc3NlZCI6WyJnY2EiXSwiYXBwbGljYXRpb24veC1nbHVseCI6WyJ1bHgiXSwiYXBwbGljYXRpb24veC1nbnVtZXJpYyI6WyJnbnVtZXJpYyJdLCJhcHBsaWNhdGlvbi94LWdyYW1wcy14bWwiOlsiZ3JhbXBzIl0sImFwcGxpY2F0aW9uL3gtZ3RhciI6WyJndGFyIl0sImFwcGxpY2F0aW9uL3gtaGRmIjpbImhkZiJdLCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocCI6WyJwaHAiXSwiYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9ucyI6WyJpbnN0YWxsIl0sImFwcGxpY2F0aW9uL3gtaXB5bmIranNvbiI6WyJpcHluYiJdLCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2UiOlsiKmlzbyJdLCJhcHBsaWNhdGlvbi94LWl3b3JrLWtleW5vdGUtc2Zma2V5IjpbIiprZXkiXSwiYXBwbGljYXRpb24veC1pd29yay1udW1iZXJzLXNmZm51bWJlcnMiOlsiKm51bWJlcnMiXSwiYXBwbGljYXRpb24veC1pd29yay1wYWdlcy1zZmZwYWdlcyI6WyIqcGFnZXMiXSwiYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUtZGlmZiI6WyJqYXJkaWZmIl0sImFwcGxpY2F0aW9uL3gtamF2YS1qbmxwLWZpbGUiOlsiam5scCJdLCJhcHBsaWNhdGlvbi94LWtlZXBhc3MyIjpbImtkYngiXSwiYXBwbGljYXRpb24veC1sYXRleCI6WyJsYXRleCJdLCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZSI6WyJsdWFjIl0sImFwcGxpY2F0aW9uL3gtbHpoLWNvbXByZXNzZWQiOlsibHpoIiwibGhhIl0sImFwcGxpY2F0aW9uL3gtbWFrZXNlbGYiOlsicnVuIl0sImFwcGxpY2F0aW9uL3gtbWllIjpbIm1pZSJdLCJhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2siOlsiKnByYyIsIm1vYmkiXSwiYXBwbGljYXRpb24veC1tcy1hcHBsaWNhdGlvbiI6WyJhcHBsaWNhdGlvbiJdLCJhcHBsaWNhdGlvbi94LW1zLXNob3J0Y3V0IjpbImxuayJdLCJhcHBsaWNhdGlvbi94LW1zLXdtZCI6WyJ3bWQiXSwiYXBwbGljYXRpb24veC1tcy13bXoiOlsid216Il0sImFwcGxpY2F0aW9uL3gtbXMteGJhcCI6WyJ4YmFwIl0sImFwcGxpY2F0aW9uL3gtbXNhY2Nlc3MiOlsibWRiIl0sImFwcGxpY2F0aW9uL3gtbXNiaW5kZXIiOlsib2JkIl0sImFwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZSI6WyJjcmQiXSwiYXBwbGljYXRpb24veC1tc2NsaXAiOlsiY2xwIl0sImFwcGxpY2F0aW9uL3gtbXNkb3MtcHJvZ3JhbSI6WyIqZXhlIl0sImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCI6WyIqZXhlIiwiKmRsbCIsImNvbSIsImJhdCIsIiptc2kiXSwiYXBwbGljYXRpb24veC1tc21lZGlhdmlldyI6WyJtdmIiLCJtMTMiLCJtMTQiXSwiYXBwbGljYXRpb24veC1tc21ldGFmaWxlIjpbIip3bWYiLCIqd216IiwiKmVtZiIsImVteiJdLCJhcHBsaWNhdGlvbi94LW1zbW9uZXkiOlsibW55Il0sImFwcGxpY2F0aW9uL3gtbXNwdWJsaXNoZXIiOlsicHViIl0sImFwcGxpY2F0aW9uL3gtbXNzY2hlZHVsZSI6WyJzY2QiXSwiYXBwbGljYXRpb24veC1tc3Rlcm1pbmFsIjpbInRybSJdLCJhcHBsaWNhdGlvbi94LW1zd3JpdGUiOlsid3JpIl0sImFwcGxpY2F0aW9uL3gtbmV0Y2RmIjpbIm5jIiwiY2RmIl0sImFwcGxpY2F0aW9uL3gtbnMtcHJveHktYXV0b2NvbmZpZyI6WyJwYWMiXSwiYXBwbGljYXRpb24veC1uemIiOlsibnpiIl0sImFwcGxpY2F0aW9uL3gtcGVybCI6WyJwbCIsInBtIl0sImFwcGxpY2F0aW9uL3gtcGlsb3QiOlsiKnByYyIsIipwZGIiXSwiYXBwbGljYXRpb24veC1wa2NzMTIiOlsicDEyIiwicGZ4Il0sImFwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzIjpbInA3YiIsInNwYyJdLCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRyZXFyZXNwIjpbInA3ciJdLCJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIjpbIipyYXIiXSwiYXBwbGljYXRpb24veC1yZWRoYXQtcGFja2FnZS1tYW5hZ2VyIjpbInJwbSJdLCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtcyI6WyJyaXMiXSwiYXBwbGljYXRpb24veC1zZWEiOlsic2VhIl0sImFwcGxpY2F0aW9uL3gtc2giOlsic2giXSwiYXBwbGljYXRpb24veC1zaGFyIjpbInNoYXIiXSwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giOlsic3dmIl0sImFwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwIjpbInhhcCJdLCJhcHBsaWNhdGlvbi94LXNxbCI6WyIqc3FsIl0sImFwcGxpY2F0aW9uL3gtc3R1ZmZpdCI6WyJzaXQiXSwiYXBwbGljYXRpb24veC1zdHVmZml0eCI6WyJzaXR4Il0sImFwcGxpY2F0aW9uL3gtc3VicmlwIjpbInNydCJdLCJhcHBsaWNhdGlvbi94LXN2NGNwaW8iOlsic3Y0Y3BpbyJdLCJhcHBsaWNhdGlvbi94LXN2NGNyYyI6WyJzdjRjcmMiXSwiYXBwbGljYXRpb24veC10M3ZtLWltYWdlIjpbInQzIl0sImFwcGxpY2F0aW9uL3gtdGFkcyI6WyJnYW0iXSwiYXBwbGljYXRpb24veC10YXIiOlsidGFyIl0sImFwcGxpY2F0aW9uL3gtdGNsIjpbInRjbCIsInRrIl0sImFwcGxpY2F0aW9uL3gtdGV4IjpbInRleCJdLCJhcHBsaWNhdGlvbi94LXRleC10Zm0iOlsidGZtIl0sImFwcGxpY2F0aW9uL3gtdGV4aW5mbyI6WyJ0ZXhpbmZvIiwidGV4aSJdLCJhcHBsaWNhdGlvbi94LXRnaWYiOlsiKm9iaiJdLCJhcHBsaWNhdGlvbi94LXVzdGFyIjpbInVzdGFyIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1oZGQiOlsiaGRkIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmEiOlsib3ZhIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmYiOlsib3ZmIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94IjpbInZib3giXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZib3gtZXh0cGFjayI6WyJ2Ym94LWV4dHBhY2siXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZkaSI6WyJ2ZGkiXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZoZCI6WyJ2aGQiXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZtZGsiOlsidm1kayJdLCJhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlIjpbInNyYyJdLCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvbiI6WyJ3ZWJhcHAiXSwiYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnQiOlsiZGVyIiwiY3J0IiwicGVtIl0sImFwcGxpY2F0aW9uL3gteGZpZyI6WyJmaWciXSwiYXBwbGljYXRpb24veC14bGlmZit4bWwiOlsiKnhsZiJdLCJhcHBsaWNhdGlvbi94LXhwaW5zdGFsbCI6WyJ4cGkiXSwiYXBwbGljYXRpb24veC14eiI6WyJ4eiJdLCJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIjpbIip6aXAiXSwiYXBwbGljYXRpb24veC16bWFjaGluZSI6WyJ6MSIsInoyIiwiejMiLCJ6NCIsIno1IiwiejYiLCJ6NyIsIno4Il0sImF1ZGlvL3ZuZC5kZWNlLmF1ZGlvIjpbInV2YSIsInV2dmEiXSwiYXVkaW8vdm5kLmRpZ2l0YWwtd2luZHMiOlsiZW9sIl0sImF1ZGlvL3ZuZC5kcmEiOlsiZHJhIl0sImF1ZGlvL3ZuZC5kdHMiOlsiZHRzIl0sImF1ZGlvL3ZuZC5kdHMuaGQiOlsiZHRzaGQiXSwiYXVkaW8vdm5kLmx1Y2VudC52b2ljZSI6WyJsdnAiXSwiYXVkaW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weWEiOlsicHlhIl0sImF1ZGlvL3ZuZC5udWVyYS5lY2VscDQ4MDAiOlsiZWNlbHA0ODAwIl0sImF1ZGlvL3ZuZC5udWVyYS5lY2VscDc0NzAiOlsiZWNlbHA3NDcwIl0sImF1ZGlvL3ZuZC5udWVyYS5lY2VscDk2MDAiOlsiZWNlbHA5NjAwIl0sImF1ZGlvL3ZuZC5yaXAiOlsicmlwIl0sImF1ZGlvL3gtYWFjIjpbIiphYWMiXSwiYXVkaW8veC1haWZmIjpbImFpZiIsImFpZmYiLCJhaWZjIl0sImF1ZGlvL3gtY2FmIjpbImNhZiJdLCJhdWRpby94LWZsYWMiOlsiZmxhYyJdLCJhdWRpby94LW00YSI6WyIqbTRhIl0sImF1ZGlvL3gtbWF0cm9za2EiOlsibWthIl0sImF1ZGlvL3gtbXBlZ3VybCI6WyJtM3UiXSwiYXVkaW8veC1tcy13YXgiOlsid2F4Il0sImF1ZGlvL3gtbXMtd21hIjpbIndtYSJdLCJhdWRpby94LXBuLXJlYWxhdWRpbyI6WyJyYW0iLCJyYSJdLCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW4iOlsicm1wIl0sImF1ZGlvL3gtcmVhbGF1ZGlvIjpbIipyYSJdLCJhdWRpby94LXdhdiI6WyIqd2F2Il0sImNoZW1pY2FsL3gtY2R4IjpbImNkeCJdLCJjaGVtaWNhbC94LWNpZiI6WyJjaWYiXSwiY2hlbWljYWwveC1jbWRmIjpbImNtZGYiXSwiY2hlbWljYWwveC1jbWwiOlsiY21sIl0sImNoZW1pY2FsL3gtY3NtbCI6WyJjc21sIl0sImNoZW1pY2FsL3gteHl6IjpbInh5eiJdLCJpbWFnZS9wcnMuYnRpZiI6WyJidGlmIiwiYnRmIl0sImltYWdlL3Bycy5wdGkiOlsicHRpIl0sImltYWdlL3ZuZC5hZG9iZS5waG90b3Nob3AiOlsicHNkIl0sImltYWdlL3ZuZC5haXJ6aXAuYWNjZWxlcmF0b3IuYXp2IjpbImF6diJdLCJpbWFnZS92bmQuYmxvY2tmYWN0LmZhY3RpIjpbImZhY3RpIl0sImltYWdlL3ZuZC5kZWNlLmdyYXBoaWMiOlsidXZpIiwidXZ2aSIsInV2ZyIsInV2dmciXSwiaW1hZ2Uvdm5kLmRqdnUiOlsiZGp2dSIsImRqdiJdLCJpbWFnZS92bmQuZHZiLnN1YnRpdGxlIjpbIipzdWIiXSwiaW1hZ2Uvdm5kLmR3ZyI6WyJkd2ciXSwiaW1hZ2Uvdm5kLmR4ZiI6WyJkeGYiXSwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldCI6WyJmYnMiXSwiaW1hZ2Uvdm5kLmZweCI6WyJmcHgiXSwiaW1hZ2Uvdm5kLmZzdCI6WyJmc3QiXSwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtbW1yIjpbIm1tciJdLCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1ybGMiOlsicmxjIl0sImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiI6WyJpY28iXSwiaW1hZ2Uvdm5kLm1zLWRkcyI6WyJkZHMiXSwiaW1hZ2Uvdm5kLm1zLW1vZGkiOlsibWRpIl0sImltYWdlL3ZuZC5tcy1waG90byI6WyJ3ZHAiXSwiaW1hZ2Uvdm5kLm5ldC1mcHgiOlsibnB4Il0sImltYWdlL3ZuZC5wY28uYjE2IjpbImIxNiJdLCJpbWFnZS92bmQudGVuY2VudC50YXAiOlsidGFwIl0sImltYWdlL3ZuZC52YWx2ZS5zb3VyY2UudGV4dHVyZSI6WyJ2dGYiXSwiaW1hZ2Uvdm5kLndhcC53Ym1wIjpbIndibXAiXSwiaW1hZ2Uvdm5kLnhpZmYiOlsieGlmIl0sImltYWdlL3ZuZC56YnJ1c2gucGN4IjpbInBjeCJdLCJpbWFnZS94LTNkcyI6WyIzZHMiXSwiaW1hZ2UveC1hZG9iZS1kbmciOlsiZG5nIl0sImltYWdlL3gtY211LXJhc3RlciI6WyJyYXMiXSwiaW1hZ2UveC1jbXgiOlsiY214Il0sImltYWdlL3gtZnJlZWhhbmQiOlsiZmgiLCJmaGMiLCJmaDQiLCJmaDUiLCJmaDciXSwiaW1hZ2UveC1pY29uIjpbIippY28iXSwiaW1hZ2UveC1qbmciOlsiam5nIl0sImltYWdlL3gtbXJzaWQtaW1hZ2UiOlsic2lkIl0sImltYWdlL3gtbXMtYm1wIjpbIipibXAiXSwiaW1hZ2UveC1wY3giOlsiKnBjeCJdLCJpbWFnZS94LXBpY3QiOlsicGljIiwicGN0Il0sImltYWdlL3gtcG9ydGFibGUtYW55bWFwIjpbInBubSJdLCJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCI6WyJwYm0iXSwiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIjpbInBnbSJdLCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCI6WyJwcG0iXSwiaW1hZ2UveC1yZ2IiOlsicmdiIl0sImltYWdlL3gtdGdhIjpbInRnYSJdLCJpbWFnZS94LXhiaXRtYXAiOlsieGJtIl0sImltYWdlL3gteHBpeG1hcCI6WyJ4cG0iXSwiaW1hZ2UveC14d2luZG93ZHVtcCI6WyJ4d2QiXSwibWVzc2FnZS92bmQud2ZhLndzYyI6WyJ3c2MiXSwibW9kZWwvdm5kLmJhcnkiOlsiYmFyeSJdLCJtb2RlbC92bmQuY2xkIjpbImNsZCJdLCJtb2RlbC92bmQuY29sbGFkYSt4bWwiOlsiZGFlIl0sIm1vZGVsL3ZuZC5kd2YiOlsiZHdmIl0sIm1vZGVsL3ZuZC5nZGwiOlsiZ2RsIl0sIm1vZGVsL3ZuZC5ndHciOlsiZ3R3Il0sIm1vZGVsL3ZuZC5tdHMiOlsiKm10cyJdLCJtb2RlbC92bmQub3BlbmdleCI6WyJvZ2V4Il0sIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQuYmluYXJ5IjpbInhfYiJdLCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LnRleHQiOlsieF90Il0sIm1vZGVsL3ZuZC5weXRoYS5weW94IjpbInB5byIsInB5b3giXSwibW9kZWwvdm5kLnNhcC52ZHMiOlsidmRzIl0sIm1vZGVsL3ZuZC51c2RhIjpbInVzZGEiXSwibW9kZWwvdm5kLnVzZHoremlwIjpbInVzZHoiXSwibW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXAiOlsiYnNwIl0sIm1vZGVsL3ZuZC52dHUiOlsidnR1Il0sInRleHQvcHJzLmxpbmVzLnRhZyI6WyJkc2MiXSwidGV4dC92bmQuY3VybCI6WyJjdXJsIl0sInRleHQvdm5kLmN1cmwuZGN1cmwiOlsiZGN1cmwiXSwidGV4dC92bmQuY3VybC5tY3VybCI6WyJtY3VybCJdLCJ0ZXh0L3ZuZC5jdXJsLnNjdXJsIjpbInNjdXJsIl0sInRleHQvdm5kLmR2Yi5zdWJ0aXRsZSI6WyJzdWIiXSwidGV4dC92bmQuZmFtaWx5c2VhcmNoLmdlZGNvbSI6WyJnZWQiXSwidGV4dC92bmQuZmx5IjpbImZseSJdLCJ0ZXh0L3ZuZC5mbWkuZmxleHN0b3IiOlsiZmx4Il0sInRleHQvdm5kLmdyYXBodml6IjpbImd2Il0sInRleHQvdm5kLmluM2QuM2RtbCI6WyIzZG1sIl0sInRleHQvdm5kLmluM2Quc3BvdCI6WyJzcG90Il0sInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIjpbImphZCJdLCJ0ZXh0L3ZuZC53YXAud21sIjpbIndtbCJdLCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0IjpbIndtbHMiXSwidGV4dC94LWFzbSI6WyJzIiwiYXNtIl0sInRleHQveC1jIjpbImMiLCJjYyIsImN4eCIsImNwcCIsImgiLCJoaCIsImRpYyJdLCJ0ZXh0L3gtY29tcG9uZW50IjpbImh0YyJdLCJ0ZXh0L3gtZm9ydHJhbiI6WyJmIiwiZm9yIiwiZjc3IiwiZjkwIl0sInRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlIjpbImhicyJdLCJ0ZXh0L3gtamF2YS1zb3VyY2UiOlsiamF2YSJdLCJ0ZXh0L3gtbHVhIjpbImx1YSJdLCJ0ZXh0L3gtbWFya2Rvd24iOlsibWtkIl0sInRleHQveC1uZm8iOlsibmZvIl0sInRleHQveC1vcG1sIjpbIm9wbWwiXSwidGV4dC94LW9yZyI6WyIqb3JnIl0sInRleHQveC1wYXNjYWwiOlsicCIsInBhcyJdLCJ0ZXh0L3gtcHJvY2Vzc2luZyI6WyJwZGUiXSwidGV4dC94LXNhc3MiOlsic2FzcyJdLCJ0ZXh0L3gtc2NzcyI6WyJzY3NzIl0sInRleHQveC1zZXRleHQiOlsiZXR4Il0sInRleHQveC1zZnYiOlsic2Z2Il0sInRleHQveC1zdXNlLXltcCI6WyJ5bXAiXSwidGV4dC94LXV1ZW5jb2RlIjpbInV1Il0sInRleHQveC12Y2FsZW5kYXIiOlsidmNzIl0sInRleHQveC12Y2FyZCI6WyJ2Y2YiXSwidmlkZW8vdm5kLmRlY2UuaGQiOlsidXZoIiwidXZ2aCJdLCJ2aWRlby92bmQuZGVjZS5tb2JpbGUiOlsidXZtIiwidXZ2bSJdLCJ2aWRlby92bmQuZGVjZS5wZCI6WyJ1dnAiLCJ1dnZwIl0sInZpZGVvL3ZuZC5kZWNlLnNkIjpbInV2cyIsInV2dnMiXSwidmlkZW8vdm5kLmRlY2UudmlkZW8iOlsidXZ2IiwidXZ2diJdLCJ2aWRlby92bmQuZHZiLmZpbGUiOlsiZHZiIl0sInZpZGVvL3ZuZC5mdnQiOlsiZnZ0Il0sInZpZGVvL3ZuZC5tcGVndXJsIjpbIm14dSIsIm00dSJdLCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5diI6WyJweXYiXSwidmlkZW8vdm5kLnV2dnUubXA0IjpbInV2dSIsInV2dnUiXSwidmlkZW8vdm5kLnZpdm8iOlsidml2Il0sInZpZGVvL3gtZjR2IjpbImY0diJdLCJ2aWRlby94LWZsaSI6WyJmbGkiXSwidmlkZW8veC1mbHYiOlsiZmx2Il0sInZpZGVvL3gtbTR2IjpbIm00diJdLCJ2aWRlby94LW1hdHJvc2thIjpbIm1rdiIsIm1rM2QiLCJta3MiXSwidmlkZW8veC1tbmciOlsibW5nIl0sInZpZGVvL3gtbXMtYXNmIjpbImFzZiIsImFzeCJdLCJ2aWRlby94LW1zLXZvYiI6WyJ2b2IiXSwidmlkZW8veC1tcy13bSI6WyJ3bSJdLCJ2aWRlby94LW1zLXdtdiI6WyJ3bXYiXSwidmlkZW8veC1tcy13bXgiOlsid214Il0sInZpZGVvL3gtbXMtd3Z4IjpbInd2eCJdLCJ2aWRlby94LW1zdmlkZW8iOlsiYXZpIl0sInZpZGVvL3gtc2dpLW1vdmllIjpbIm1vdmllIl0sInZpZGVvL3gtc212IjpbInNtdiJdLCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsayI6WyJpY2UiXX07T2JqZWN0LmZyZWV6ZShpdSk7Y29uc3QgcnU9eyJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXQiOlsiZXoiXSwiYXBwbGljYXRpb24vYXBwaW5zdGFsbGVyIjpbImFwcGluc3RhbGxlciJdLCJhcHBsaWNhdGlvbi9hcHBsaXh3YXJlIjpbImF3Il0sImFwcGxpY2F0aW9uL2FwcHgiOlsiYXBweCJdLCJhcHBsaWNhdGlvbi9hcHB4YnVuZGxlIjpbImFwcHhidW5kbGUiXSwiYXBwbGljYXRpb24vYXRvbSt4bWwiOlsiYXRvbSJdLCJhcHBsaWNhdGlvbi9hdG9tY2F0K3htbCI6WyJhdG9tY2F0Il0sImFwcGxpY2F0aW9uL2F0b21kZWxldGVkK3htbCI6WyJhdG9tZGVsZXRlZCJdLCJhcHBsaWNhdGlvbi9hdG9tc3ZjK3htbCI6WyJhdG9tc3ZjIl0sImFwcGxpY2F0aW9uL2F0c2MtZHdkK3htbCI6WyJkd2QiXSwiYXBwbGljYXRpb24vYXRzYy1oZWxkK3htbCI6WyJoZWxkIl0sImFwcGxpY2F0aW9uL2F0c2MtcnNhdCt4bWwiOlsicnNhdCJdLCJhcHBsaWNhdGlvbi9hdXRvbWF0aW9ubWwtYW1sK3htbCI6WyJhbWwiXSwiYXBwbGljYXRpb24vYXV0b21hdGlvbm1sLWFtbHgremlwIjpbImFtbHgiXSwiYXBwbGljYXRpb24vYmRvYyI6WyJiZG9jIl0sImFwcGxpY2F0aW9uL2NhbGVuZGFyK3htbCI6WyJ4Y3MiXSwiYXBwbGljYXRpb24vY2N4bWwreG1sIjpbImNjeG1sIl0sImFwcGxpY2F0aW9uL2NkZngreG1sIjpbImNkZngiXSwiYXBwbGljYXRpb24vY2RtaS1jYXBhYmlsaXR5IjpbImNkbWlhIl0sImFwcGxpY2F0aW9uL2NkbWktY29udGFpbmVyIjpbImNkbWljIl0sImFwcGxpY2F0aW9uL2NkbWktZG9tYWluIjpbImNkbWlkIl0sImFwcGxpY2F0aW9uL2NkbWktb2JqZWN0IjpbImNkbWlvIl0sImFwcGxpY2F0aW9uL2NkbWktcXVldWUiOlsiY2RtaXEiXSwiYXBwbGljYXRpb24vY3BsK3htbCI6WyJjcGwiXSwiYXBwbGljYXRpb24vY3Utc2VlbWUiOlsiY3UiXSwiYXBwbGljYXRpb24vY3dsIjpbImN3bCJdLCJhcHBsaWNhdGlvbi9kYXNoK3htbCI6WyJtcGQiXSwiYXBwbGljYXRpb24vZGFzaC1wYXRjaCt4bWwiOlsibXBwIl0sImFwcGxpY2F0aW9uL2Rhdm1vdW50K3htbCI6WyJkYXZtb3VudCJdLCJhcHBsaWNhdGlvbi9kaWNvbSI6WyJkY20iXSwiYXBwbGljYXRpb24vZG9jYm9vayt4bWwiOlsiZGJrIl0sImFwcGxpY2F0aW9uL2Rzc2MrZGVyIjpbImRzc2MiXSwiYXBwbGljYXRpb24vZHNzYyt4bWwiOlsieGRzc2MiXSwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCI6WyJlY21hIl0sImFwcGxpY2F0aW9uL2VtbWEreG1sIjpbImVtbWEiXSwiYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbCI6WyJlbW90aW9ubWwiXSwiYXBwbGljYXRpb24vZXB1Yit6aXAiOlsiZXB1YiJdLCJhcHBsaWNhdGlvbi9leGkiOlsiZXhpIl0sImFwcGxpY2F0aW9uL2V4cHJlc3MiOlsiZXhwIl0sImFwcGxpY2F0aW9uL2ZkZiI6WyJmZGYiXSwiYXBwbGljYXRpb24vZmR0K3htbCI6WyJmZHQiXSwiYXBwbGljYXRpb24vZm9udC10ZHBmciI6WyJwZnIiXSwiYXBwbGljYXRpb24vZ2VvK2pzb24iOlsiZ2VvanNvbiJdLCJhcHBsaWNhdGlvbi9nbWwreG1sIjpbImdtbCJdLCJhcHBsaWNhdGlvbi9ncHgreG1sIjpbImdweCJdLCJhcHBsaWNhdGlvbi9neGYiOlsiZ3hmIl0sImFwcGxpY2F0aW9uL2d6aXAiOlsiZ3oiXSwiYXBwbGljYXRpb24vaGpzb24iOlsiaGpzb24iXSwiYXBwbGljYXRpb24vaHlwZXJzdHVkaW8iOlsic3RrIl0sImFwcGxpY2F0aW9uL2lua21sK3htbCI6WyJpbmsiLCJpbmttbCJdLCJhcHBsaWNhdGlvbi9pcGZpeCI6WyJpcGZpeCJdLCJhcHBsaWNhdGlvbi9pdHMreG1sIjpbIml0cyJdLCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiOlsiamFyIiwid2FyIiwiZWFyIl0sImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3QiOlsic2VyIl0sImFwcGxpY2F0aW9uL2phdmEtdm0iOlsiY2xhc3MiXSwiYXBwbGljYXRpb24vamF2YXNjcmlwdCI6WyIqanMiXSwiYXBwbGljYXRpb24vanNvbiI6WyJqc29uIiwibWFwIl0sImFwcGxpY2F0aW9uL2pzb241IjpbImpzb241Il0sImFwcGxpY2F0aW9uL2pzb25tbCtqc29uIjpbImpzb25tbCJdLCJhcHBsaWNhdGlvbi9sZCtqc29uIjpbImpzb25sZCJdLCJhcHBsaWNhdGlvbi9sZ3IreG1sIjpbImxnciJdLCJhcHBsaWNhdGlvbi9sb3N0K3htbCI6WyJsb3N0eG1sIl0sImFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MCI6WyJocXgiXSwiYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm8iOlsiY3B0Il0sImFwcGxpY2F0aW9uL21hZHMreG1sIjpbIm1hZHMiXSwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvbiI6WyJ3ZWJtYW5pZmVzdCJdLCJhcHBsaWNhdGlvbi9tYXJjIjpbIm1yYyJdLCJhcHBsaWNhdGlvbi9tYXJjeG1sK3htbCI6WyJtcmN4Il0sImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhIjpbIm1hIiwibmIiLCJtYiJdLCJhcHBsaWNhdGlvbi9tYXRobWwreG1sIjpbIm1hdGhtbCJdLCJhcHBsaWNhdGlvbi9tYm94IjpbIm1ib3giXSwiYXBwbGljYXRpb24vbWVkaWEtcG9saWN5LWRhdGFzZXQreG1sIjpbIm1wZiJdLCJhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sIjpbIm1zY21sIl0sImFwcGxpY2F0aW9uL21ldGFsaW5rK3htbCI6WyJtZXRhbGluayJdLCJhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sIjpbIm1ldGE0Il0sImFwcGxpY2F0aW9uL21ldHMreG1sIjpbIm1ldHMiXSwiYXBwbGljYXRpb24vbW10LWFlaSt4bWwiOlsibWFlaSJdLCJhcHBsaWNhdGlvbi9tbXQtdXNkK3htbCI6WyJtdXNkIl0sImFwcGxpY2F0aW9uL21vZHMreG1sIjpbIm1vZHMiXSwiYXBwbGljYXRpb24vbXAyMSI6WyJtMjEiLCJtcDIxIl0sImFwcGxpY2F0aW9uL21wNCI6WyIqbXA0IiwiKm1wZzQiLCJtcDRzIiwibTRwIl0sImFwcGxpY2F0aW9uL21zaXgiOlsibXNpeCJdLCJhcHBsaWNhdGlvbi9tc2l4YnVuZGxlIjpbIm1zaXhidW5kbGUiXSwiYXBwbGljYXRpb24vbXN3b3JkIjpbImRvYyIsImRvdCJdLCJhcHBsaWNhdGlvbi9teGYiOlsibXhmIl0sImFwcGxpY2F0aW9uL24tcXVhZHMiOlsibnEiXSwiYXBwbGljYXRpb24vbi10cmlwbGVzIjpbIm50Il0sImFwcGxpY2F0aW9uL25vZGUiOlsiY2pzIl0sImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI6WyJiaW4iLCJkbXMiLCJscmYiLCJtYXIiLCJzbyIsImRpc3QiLCJkaXN0eiIsInBrZyIsImJwayIsImR1bXAiLCJlbGMiLCJkZXBsb3kiLCJleGUiLCJkbGwiLCJkZWIiLCJkbWciLCJpc28iLCJpbWciLCJtc2kiLCJtc3AiLCJtc20iLCJidWZmZXIiXSwiYXBwbGljYXRpb24vb2RhIjpbIm9kYSJdLCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbCI6WyJvcGYiXSwiYXBwbGljYXRpb24vb2dnIjpbIm9neCJdLCJhcHBsaWNhdGlvbi9vbWRvYyt4bWwiOlsib21kb2MiXSwiYXBwbGljYXRpb24vb25lbm90ZSI6WyJvbmV0b2MiLCJvbmV0b2MyIiwib25ldG1wIiwib25lcGtnIiwib25lIiwib25lYSJdLCJhcHBsaWNhdGlvbi9veHBzIjpbIm94cHMiXSwiYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sIjpbInJlbG8iXSwiYXBwbGljYXRpb24vcGF0Y2gtb3BzLWVycm9yK3htbCI6WyJ4ZXIiXSwiYXBwbGljYXRpb24vcGRmIjpbInBkZiJdLCJhcHBsaWNhdGlvbi9wZ3AtZW5jcnlwdGVkIjpbInBncCJdLCJhcHBsaWNhdGlvbi9wZ3Ata2V5cyI6WyJhc2MiXSwiYXBwbGljYXRpb24vcGdwLXNpZ25hdHVyZSI6WyJzaWciLCIqYXNjIl0sImFwcGxpY2F0aW9uL3BpY3MtcnVsZXMiOlsicHJmIl0sImFwcGxpY2F0aW9uL3BrY3MxMCI6WyJwMTAiXSwiYXBwbGljYXRpb24vcGtjczctbWltZSI6WyJwN20iLCJwN2MiXSwiYXBwbGljYXRpb24vcGtjczctc2lnbmF0dXJlIjpbInA3cyJdLCJhcHBsaWNhdGlvbi9wa2NzOCI6WyJwOCJdLCJhcHBsaWNhdGlvbi9wa2l4LWF0dHItY2VydCI6WyJhYyJdLCJhcHBsaWNhdGlvbi9wa2l4LWNlcnQiOlsiY2VyIl0sImFwcGxpY2F0aW9uL3BraXgtY3JsIjpbImNybCJdLCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGgiOlsicGtpcGF0aCJdLCJhcHBsaWNhdGlvbi9wa2l4Y21wIjpbInBraSJdLCJhcHBsaWNhdGlvbi9wbHMreG1sIjpbInBscyJdLCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IjpbImFpIiwiZXBzIiwicHMiXSwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWwiOlsicHJvdngiXSwiYXBwbGljYXRpb24vcHNrYyt4bWwiOlsicHNrY3htbCJdLCJhcHBsaWNhdGlvbi9yYW1sK3lhbWwiOlsicmFtbCJdLCJhcHBsaWNhdGlvbi9yZGYreG1sIjpbInJkZiIsIm93bCJdLCJhcHBsaWNhdGlvbi9yZWdpbmZvK3htbCI6WyJyaWYiXSwiYXBwbGljYXRpb24vcmVsYXgtbmctY29tcGFjdC1zeW50YXgiOlsicm5jIl0sImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzK3htbCI6WyJybCJdLCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cy1kaWZmK3htbCI6WyJybGQiXSwiYXBwbGljYXRpb24vcmxzLXNlcnZpY2VzK3htbCI6WyJycyJdLCJhcHBsaWNhdGlvbi9yb3V0ZS1hcGQreG1sIjpbInJhcGQiXSwiYXBwbGljYXRpb24vcm91dGUtcy10c2lkK3htbCI6WyJzbHMiXSwiYXBwbGljYXRpb24vcm91dGUtdXNkK3htbCI6WyJydXNkIl0sImFwcGxpY2F0aW9uL3Jwa2ktZ2hvc3RidXN0ZXJzIjpbImdiciJdLCJhcHBsaWNhdGlvbi9ycGtpLW1hbmlmZXN0IjpbIm1mdCJdLCJhcHBsaWNhdGlvbi9ycGtpLXJvYSI6WyJyb2EiXSwiYXBwbGljYXRpb24vcnNkK3htbCI6WyJyc2QiXSwiYXBwbGljYXRpb24vcnNzK3htbCI6WyJyc3MiXSwiYXBwbGljYXRpb24vcnRmIjpbInJ0ZiJdLCJhcHBsaWNhdGlvbi9zYm1sK3htbCI6WyJzYm1sIl0sImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdCI6WyJzY3EiXSwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZSI6WyJzY3MiXSwiYXBwbGljYXRpb24vc2N2cC12cC1yZXF1ZXN0IjpbInNwcSJdLCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlc3BvbnNlIjpbInNwcCJdLCJhcHBsaWNhdGlvbi9zZHAiOlsic2RwIl0sImFwcGxpY2F0aW9uL3Nlbm1sK3htbCI6WyJzZW5tbHgiXSwiYXBwbGljYXRpb24vc2Vuc21sK3htbCI6WyJzZW5zbWx4Il0sImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb24iOlsic2V0cGF5Il0sImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvbiI6WyJzZXRyZWciXSwiYXBwbGljYXRpb24vc2hmK3htbCI6WyJzaGYiXSwiYXBwbGljYXRpb24vc2lldmUiOlsic2l2Iiwic2lldmUiXSwiYXBwbGljYXRpb24vc21pbCt4bWwiOlsic21pIiwic21pbCJdLCJhcHBsaWNhdGlvbi9zcGFycWwtcXVlcnkiOlsicnEiXSwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sIjpbInNyeCJdLCJhcHBsaWNhdGlvbi9zcWwiOlsic3FsIl0sImFwcGxpY2F0aW9uL3NyZ3MiOlsiZ3JhbSJdLCJhcHBsaWNhdGlvbi9zcmdzK3htbCI6WyJncnhtbCJdLCJhcHBsaWNhdGlvbi9zcnUreG1sIjpbInNydSJdLCJhcHBsaWNhdGlvbi9zc2RsK3htbCI6WyJzc2RsIl0sImFwcGxpY2F0aW9uL3NzbWwreG1sIjpbInNzbWwiXSwiYXBwbGljYXRpb24vc3dpZCt4bWwiOlsic3dpZHRhZyJdLCJhcHBsaWNhdGlvbi90ZWkreG1sIjpbInRlaSIsInRlaWNvcnB1cyJdLCJhcHBsaWNhdGlvbi90aHJhdWQreG1sIjpbInRmaSJdLCJhcHBsaWNhdGlvbi90aW1lc3RhbXBlZC1kYXRhIjpbInRzZCJdLCJhcHBsaWNhdGlvbi90b21sIjpbInRvbWwiXSwiYXBwbGljYXRpb24vdHJpZyI6WyJ0cmlnIl0sImFwcGxpY2F0aW9uL3R0bWwreG1sIjpbInR0bWwiXSwiYXBwbGljYXRpb24vdWJqc29uIjpbInViaiJdLCJhcHBsaWNhdGlvbi91cmMtcmVzc2hlZXQreG1sIjpbInJzaGVldCJdLCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWwiOlsidGQiXSwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sIjpbInZ4bWwiXSwiYXBwbGljYXRpb24vd2FzbSI6WyJ3YXNtIl0sImFwcGxpY2F0aW9uL3dhdGNoZXJpbmZvK3htbCI6WyJ3aWYiXSwiYXBwbGljYXRpb24vd2lkZ2V0IjpbIndndCJdLCJhcHBsaWNhdGlvbi93aW5obHAiOlsiaGxwIl0sImFwcGxpY2F0aW9uL3dzZGwreG1sIjpbIndzZGwiXSwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sIjpbIndzcG9saWN5Il0sImFwcGxpY2F0aW9uL3hhbWwreG1sIjpbInhhbWwiXSwiYXBwbGljYXRpb24veGNhcC1hdHQreG1sIjpbInhhdiJdLCJhcHBsaWNhdGlvbi94Y2FwLWNhcHMreG1sIjpbInhjYSJdLCJhcHBsaWNhdGlvbi94Y2FwLWRpZmYreG1sIjpbInhkZiJdLCJhcHBsaWNhdGlvbi94Y2FwLWVsK3htbCI6WyJ4ZWwiXSwiYXBwbGljYXRpb24veGNhcC1ucyt4bWwiOlsieG5zIl0sImFwcGxpY2F0aW9uL3hlbmMreG1sIjpbInhlbmMiXSwiYXBwbGljYXRpb24veGZkZiI6WyJ4ZmRmIl0sImFwcGxpY2F0aW9uL3hodG1sK3htbCI6WyJ4aHRtbCIsInhodCJdLCJhcHBsaWNhdGlvbi94bGlmZit4bWwiOlsieGxmIl0sImFwcGxpY2F0aW9uL3htbCI6WyJ4bWwiLCJ4c2wiLCJ4c2QiLCJybmciXSwiYXBwbGljYXRpb24veG1sLWR0ZCI6WyJkdGQiXSwiYXBwbGljYXRpb24veG9wK3htbCI6WyJ4b3AiXSwiYXBwbGljYXRpb24veHByb2MreG1sIjpbInhwbCJdLCJhcHBsaWNhdGlvbi94c2x0K3htbCI6WyIqeHNsIiwieHNsdCJdLCJhcHBsaWNhdGlvbi94c3BmK3htbCI6WyJ4c3BmIl0sImFwcGxpY2F0aW9uL3h2K3htbCI6WyJteG1sIiwieGh2bWwiLCJ4dm1sIiwieHZtIl0sImFwcGxpY2F0aW9uL3lhbmciOlsieWFuZyJdLCJhcHBsaWNhdGlvbi95aW4reG1sIjpbInlpbiJdLCJhcHBsaWNhdGlvbi96aXAiOlsiemlwIl0sImFwcGxpY2F0aW9uL3ppcCtkb3Rsb3R0aWUiOlsibG90dGllIl0sImF1ZGlvLzNncHAiOlsiKjNncHAiXSwiYXVkaW8vYWFjIjpbImFkdHMiLCJhYWMiXSwiYXVkaW8vYWRwY20iOlsiYWRwIl0sImF1ZGlvL2FtciI6WyJhbXIiXSwiYXVkaW8vYmFzaWMiOlsiYXUiLCJzbmQiXSwiYXVkaW8vbWlkaSI6WyJtaWQiLCJtaWRpIiwia2FyIiwicm1pIl0sImF1ZGlvL21vYmlsZS14bWYiOlsibXhtZiJdLCJhdWRpby9tcDMiOlsiKm1wMyJdLCJhdWRpby9tcDQiOlsibTRhIiwibXA0YSIsIm00YiJdLCJhdWRpby9tcGVnIjpbIm1wZ2EiLCJtcDIiLCJtcDJhIiwibXAzIiwibTJhIiwibTNhIl0sImF1ZGlvL29nZyI6WyJvZ2EiLCJvZ2ciLCJzcHgiLCJvcHVzIl0sImF1ZGlvL3MzbSI6WyJzM20iXSwiYXVkaW8vc2lsayI6WyJzaWwiXSwiYXVkaW8vd2F2IjpbIndhdiJdLCJhdWRpby93YXZlIjpbIip3YXYiXSwiYXVkaW8vd2VibSI6WyJ3ZWJhIl0sImF1ZGlvL3htIjpbInhtIl0sImZvbnQvY29sbGVjdGlvbiI6WyJ0dGMiXSwiZm9udC9vdGYiOlsib3RmIl0sImZvbnQvdHRmIjpbInR0ZiJdLCJmb250L3dvZmYiOlsid29mZiJdLCJmb250L3dvZmYyIjpbIndvZmYyIl0sImltYWdlL2FjZXMiOlsiZXhyIl0sImltYWdlL2FwbmciOlsiYXBuZyJdLCJpbWFnZS9hdmNpIjpbImF2Y2kiXSwiaW1hZ2UvYXZjcyI6WyJhdmNzIl0sImltYWdlL2F2aWYiOlsiYXZpZiJdLCJpbWFnZS9ibXAiOlsiYm1wIiwiZGliIl0sImltYWdlL2NnbSI6WyJjZ20iXSwiaW1hZ2UvZGljb20tcmxlIjpbImRybGUiXSwiaW1hZ2UvZHB4IjpbImRweCJdLCJpbWFnZS9lbWYiOlsiZW1mIl0sImltYWdlL2ZpdHMiOlsiZml0cyJdLCJpbWFnZS9nM2ZheCI6WyJnMyJdLCJpbWFnZS9naWYiOlsiZ2lmIl0sImltYWdlL2hlaWMiOlsiaGVpYyJdLCJpbWFnZS9oZWljLXNlcXVlbmNlIjpbImhlaWNzIl0sImltYWdlL2hlaWYiOlsiaGVpZiJdLCJpbWFnZS9oZWlmLXNlcXVlbmNlIjpbImhlaWZzIl0sImltYWdlL2hlajJrIjpbImhlajIiXSwiaW1hZ2UvaWVmIjpbImllZiJdLCJpbWFnZS9qYWlpIjpbImphaWkiXSwiaW1hZ2UvamFpcyI6WyJqYWlzIl0sImltYWdlL2pscyI6WyJqbHMiXSwiaW1hZ2UvanAyIjpbImpwMiIsImpwZzIiXSwiaW1hZ2UvanBlZyI6WyJqcGciLCJqcGVnIiwianBlIl0sImltYWdlL2pwaCI6WyJqcGgiXSwiaW1hZ2UvanBoYyI6WyJqaGMiXSwiaW1hZ2UvanBtIjpbImpwbSIsImpwZ20iXSwiaW1hZ2UvanB4IjpbImpweCIsImpwZiJdLCJpbWFnZS9qeGwiOlsianhsIl0sImltYWdlL2p4ciI6WyJqeHIiXSwiaW1hZ2UvanhyYSI6WyJqeHJhIl0sImltYWdlL2p4cnMiOlsianhycyJdLCJpbWFnZS9qeHMiOlsianhzIl0sImltYWdlL2p4c2MiOlsianhzYyJdLCJpbWFnZS9qeHNpIjpbImp4c2kiXSwiaW1hZ2UvanhzcyI6WyJqeHNzIl0sImltYWdlL2t0eCI6WyJrdHgiXSwiaW1hZ2Uva3R4MiI6WyJrdHgyIl0sImltYWdlL3BqcGVnIjpbImpmaWYiXSwiaW1hZ2UvcG5nIjpbInBuZyJdLCJpbWFnZS9zZ2kiOlsic2dpIl0sImltYWdlL3N2Zyt4bWwiOlsic3ZnIiwic3ZneiJdLCJpbWFnZS90MzgiOlsidDM4Il0sImltYWdlL3RpZmYiOlsidGlmIiwidGlmZiJdLCJpbWFnZS90aWZmLWZ4IjpbInRmeCJdLCJpbWFnZS93ZWJwIjpbIndlYnAiXSwiaW1hZ2Uvd21mIjpbIndtZiJdLCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbiI6WyJkaXNwb3NpdGlvbi1ub3RpZmljYXRpb24iXSwibWVzc2FnZS9nbG9iYWwiOlsidThtc2ciXSwibWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzIjpbInU4ZHNuIl0sIm1lc3NhZ2UvZ2xvYmFsLWRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbiI6WyJ1OG1kbiJdLCJtZXNzYWdlL2dsb2JhbC1oZWFkZXJzIjpbInU4aGRyIl0sIm1lc3NhZ2UvcmZjODIyIjpbImVtbCIsIm1pbWUiLCJtaHQiLCJtaHRtbCJdLCJtb2RlbC8zbWYiOlsiM21mIl0sIm1vZGVsL2dsdGYranNvbiI6WyJnbHRmIl0sIm1vZGVsL2dsdGYtYmluYXJ5IjpbImdsYiJdLCJtb2RlbC9pZ2VzIjpbImlncyIsImlnZXMiXSwibW9kZWwvanQiOlsianQiXSwibW9kZWwvbWVzaCI6WyJtc2giLCJtZXNoIiwic2lsbyJdLCJtb2RlbC9tdGwiOlsibXRsIl0sIm1vZGVsL29iaiI6WyJvYmoiXSwibW9kZWwvcHJjIjpbInByYyJdLCJtb2RlbC9zdGVwIjpbInN0ZXAiLCJzdHAiLCJzdHBuYyIsInAyMSIsIjIxMCJdLCJtb2RlbC9zdGVwK3htbCI6WyJzdHB4Il0sIm1vZGVsL3N0ZXAremlwIjpbInN0cHoiXSwibW9kZWwvc3RlcC14bWwremlwIjpbInN0cHh6Il0sIm1vZGVsL3N0bCI6WyJzdGwiXSwibW9kZWwvdTNkIjpbInUzZCJdLCJtb2RlbC92cm1sIjpbIndybCIsInZybWwiXSwibW9kZWwveDNkK2JpbmFyeSI6WyIqeDNkYiIsIngzZGJ6Il0sIm1vZGVsL3gzZCtmYXN0aW5mb3NldCI6WyJ4M2RiIl0sIm1vZGVsL3gzZCt2cm1sIjpbIip4M2R2IiwieDNkdnoiXSwibW9kZWwveDNkK3htbCI6WyJ4M2QiLCJ4M2R6Il0sIm1vZGVsL3gzZC12cm1sIjpbIngzZHYiXSwidGV4dC9jYWNoZS1tYW5pZmVzdCI6WyJhcHBjYWNoZSIsIm1hbmlmZXN0Il0sInRleHQvY2FsZW5kYXIiOlsiaWNzIiwiaWZiIl0sInRleHQvY29mZmVlc2NyaXB0IjpbImNvZmZlZSIsImxpdGNvZmZlZSJdLCJ0ZXh0L2NzcyI6WyJjc3MiXSwidGV4dC9jc3YiOlsiY3N2Il0sInRleHQvaHRtbCI6WyJodG1sIiwiaHRtIiwic2h0bWwiXSwidGV4dC9qYWRlIjpbImphZGUiXSwidGV4dC9qYXZhc2NyaXB0IjpbImpzIiwibWpzIl0sInRleHQvanN4IjpbImpzeCJdLCJ0ZXh0L2xlc3MiOlsibGVzcyJdLCJ0ZXh0L21hcmtkb3duIjpbIm1kIiwibWFya2Rvd24iXSwidGV4dC9tYXRobWwiOlsibW1sIl0sInRleHQvbWR4IjpbIm1keCJdLCJ0ZXh0L24zIjpbIm4zIl0sInRleHQvcGxhaW4iOlsidHh0IiwidGV4dCIsImNvbmYiLCJkZWYiLCJsaXN0IiwibG9nIiwiaW4iLCJpbmkiXSwidGV4dC9yaWNodGV4dCI6WyJydHgiXSwidGV4dC9ydGYiOlsiKnJ0ZiJdLCJ0ZXh0L3NnbWwiOlsic2dtbCIsInNnbSJdLCJ0ZXh0L3NoZXgiOlsic2hleCJdLCJ0ZXh0L3NsaW0iOlsic2xpbSIsInNsbSJdLCJ0ZXh0L3NwZHgiOlsic3BkeCJdLCJ0ZXh0L3N0eWx1cyI6WyJzdHlsdXMiLCJzdHlsIl0sInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiOlsidHN2Il0sInRleHQvdHJvZmYiOlsidCIsInRyIiwicm9mZiIsIm1hbiIsIm1lIiwibXMiXSwidGV4dC90dXJ0bGUiOlsidHRsIl0sInRleHQvdXJpLWxpc3QiOlsidXJpIiwidXJpcyIsInVybHMiXSwidGV4dC92Y2FyZCI6WyJ2Y2FyZCJdLCJ0ZXh0L3Z0dCI6WyJ2dHQiXSwidGV4dC93Z3NsIjpbIndnc2wiXSwidGV4dC94bWwiOlsiKnhtbCJdLCJ0ZXh0L3lhbWwiOlsieWFtbCIsInltbCJdLCJ2aWRlby8zZ3BwIjpbIjNncCIsIjNncHAiXSwidmlkZW8vM2dwcDIiOlsiM2cyIl0sInZpZGVvL2gyNjEiOlsiaDI2MSJdLCJ2aWRlby9oMjYzIjpbImgyNjMiXSwidmlkZW8vaDI2NCI6WyJoMjY0Il0sInZpZGVvL2lzby5zZWdtZW50IjpbIm00cyJdLCJ2aWRlby9qcGVnIjpbImpwZ3YiXSwidmlkZW8vanBtIjpbIipqcG0iLCIqanBnbSJdLCJ2aWRlby9tajIiOlsibWoyIiwibWpwMiJdLCJ2aWRlby9tcDJ0IjpbInRzIiwibTJ0IiwibTJ0cyIsIm10cyJdLCJ2aWRlby9tcDQiOlsibXA0IiwibXA0diIsIm1wZzQiXSwidmlkZW8vbXBlZyI6WyJtcGVnIiwibXBnIiwibXBlIiwibTF2IiwibTJ2Il0sInZpZGVvL29nZyI6WyJvZ3YiXSwidmlkZW8vcXVpY2t0aW1lIjpbInF0IiwibW92Il0sInZpZGVvL3dlYm0iOlsid2VibSJdfTtPYmplY3QuZnJlZXplKHJ1KTt2YXIgb3UsYXUsc3UsX19jbGFzc1ByaXZhdGVGaWVsZEdldD1mdW5jdGlvbihlLHMsZCxtKXtpZigiYSI9PT1kJiYhbSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXIiKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcz9lIT09c3x8IW06IXMuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdCIpO3JldHVybiJtIj09PWQ/bToiYSI9PT1kP20uY2FsbChlKTptP20udmFsdWU6cy5nZXQoZSl9O291PW5ldyBXZWFrTWFwLGF1PW5ldyBXZWFrTWFwLHN1PW5ldyBXZWFrTWFwO2NvbnN0IGx1PW5ldyBjbGFzc3tjb25zdHJ1Y3RvciguLi5lKXtvdS5zZXQodGhpcyxuZXcgTWFwKSxhdS5zZXQodGhpcyxuZXcgTWFwKSxzdS5zZXQodGhpcyxuZXcgTWFwKTtmb3IoY29uc3QgcyBvZiBlKXRoaXMuZGVmaW5lKHMpfWRlZmluZShlLHM9ITEpe2ZvcihsZXRbZCxtXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtkPWQudG9Mb3dlckNhc2UoKSxtPW0ubWFwKGU9PmUudG9Mb3dlckNhc2UoKSksX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLHN1LCJmIikuaGFzKGQpfHxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsc3UsImYiKS5zZXQoZCxuZXcgU2V0KTtjb25zdCBlPV9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxzdSwiZiIpLmdldChkKTtsZXQgaD0hMDtmb3IobGV0IGcgb2YgbSl7Y29uc3QgbT1nLnN0YXJ0c1dpdGgoIioiKTtpZihnPW0/Zy5zbGljZSgxKTpnLGU/LmFkZChnKSxoJiZfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsYXUsImYiKS5zZXQoZCxnKSxoPSExLG0pY29udGludWU7Y29uc3QgeD1fX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsb3UsImYiKS5nZXQoZyk7aWYoeCYmeCE9ZCYmIXMpdGhyb3cgbmV3IEVycm9yKGAiJHtkfSAtPiAke2d9IiBjb25mbGljdHMgd2l0aCAiJHt4fSAtPiAke2d9Ii4gUGFzcyBcYGZvcmNlPXRydWVcYCB0byBvdmVycmlkZSB0aGlzIGRlZmluaXRpb24uYCk7X19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLG91LCJmIikuc2V0KGcsZCl9fXJldHVybiB0aGlzfWdldFR5cGUoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO2NvbnN0IHM9ZS5yZXBsYWNlKC9eLipbL1xcXS9zLCIiKS50b0xvd2VyQ2FzZSgpLGQ9cy5yZXBsYWNlKC9eLipcLi9zLCIiKS50b0xvd2VyQ2FzZSgpLG09cy5sZW5ndGg8ZS5sZW5ndGg7cmV0dXJuIShkLmxlbmd0aDxzLmxlbmd0aC0xKSYmbT9udWxsOl9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxvdSwiZiIpLmdldChkKT8/bnVsbH1nZXRFeHRlbnNpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP251bGw6KGU9ZT8uc3BsaXQ/LigiOyIpWzBdLChlJiZfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsYXUsImYiKS5nZXQoZS50cmltKCkudG9Mb3dlckNhc2UoKSkpPz9udWxsKX1nZXRBbGxFeHRlbnNpb25zKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9udWxsOl9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxzdSwiZiIpLmdldChlLnRvTG93ZXJDYXNlKCkpPz9udWxsfV9mcmVlemUoKXt0aGlzLmRlZmluZT0oKT0+e3Rocm93IG5ldyBFcnJvcigiZGVmaW5lKCkgbm90IGFsbG93ZWQgZm9yIGJ1aWx0LWluIE1pbWUgb2JqZWN0cy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9icm9vZmEvbWltZS9ibG9iL21haW4vUkVBRE1FLm1kI2N1c3RvbS1taW1lLWluc3RhbmNlcyIpfSxPYmplY3QuZnJlZXplKHRoaXMpO2Zvcihjb25zdCBlIG9mIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxzdSwiZiIpLnZhbHVlcygpKU9iamVjdC5mcmVlemUoZSk7cmV0dXJuIHRoaXN9X2dldFRlc3RTdGF0ZSgpe3JldHVybnt0eXBlczpfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsb3UsImYiKSxleHRlbnNpb25zOl9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxhdSwiZiIpfX19KHJ1LGl1KS5fZnJlZXplKCk7ZnVuY3Rpb24gZ2V0Q29udGVudFR5cGUoZSl7cmV0dXJuIGUmJmx1LmdldFR5cGUoZSl8fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWZ1bmN0aW9uIGNyZWF0ZUdlbmVyaWNNdWx0aXBhcnRVcGxvYWRIYW5kbGVyKGUpe2NvbnN0IGNyZWF0ZUhhbmRsZXI9YXN5bmMocyxkKT0+e2NvbnN0e3BhdGhuYW1lOm19PWF3YWl0IGdldFZhbGlkYXRlZFJvdXRlclBhcmFtcyhzLG9iamVjdCh7cGF0aG5hbWU6c3RyaW5nJDEoKS5taW4oMSl9KS5wYXJzZSk7ZHx8PXt9LEVuKHMsIngtbnV4dGh1Yi1maWxlLWNvbnRlbnQtdHlwZSIpJiYoZC5jb250ZW50VHlwZXx8PUVuKHMsIngtbnV4dGh1Yi1maWxlLWNvbnRlbnQtdHlwZSIpKTt0cnl7Y29uc3Qgcz1hd2FpdCBlLmNyZWF0ZU11bHRpcGFydFVwbG9hZChtLGQpO3JldHVybnt1cGxvYWRJZDpzLnVwbG9hZElkLHBhdGhuYW1lOnMucGF0aG5hbWV9fWNhdGNoKGUpe3Rocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6ZS5tZXNzYWdlfSl9fSx1cGxvYWRIYW5kbGVyPWFzeW5jIHM9Pntjb25zdHtwYXRobmFtZTpkfT1hd2FpdCBnZXRWYWxpZGF0ZWRSb3V0ZXJQYXJhbXMocyxvYmplY3Qoe3BhdGhuYW1lOnN0cmluZyQxKCkubWluKDEpfSkucGFyc2UpLHt1cGxvYWRJZDptLHBhcnROdW1iZXI6aH09YXdhaXQgZ2V0VmFsaWRhdGVkUXVlcnkocyxvYmplY3Qoe3VwbG9hZElkOnN0cmluZyQxKCkscGFydE51bWJlcjpudW1iZXIoKX0pLnBhcnNlKSxnPU51bWJlcihFbihzLCJjb250ZW50LWxlbmd0aCIpfHwiMCIpLHg9Z2V0UmVxdWVzdFdlYlN0cmVhbShzKSwkPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUscyl7Y29uc3QgZD1uZXcgVWludDhBcnJheShzKTtsZXQgbT0wO2NvbnN0IGg9ZS5nZXRSZWFkZXIoKTtmb3IoOzspe2NvbnN0e2RvbmU6ZSx2YWx1ZTpzfT1hd2FpdCBoLnJlYWQoKTtpZihlKWJyZWFrO2Quc2V0KHMsbSksbSs9cy5sZW5ndGh9cmV0dXJuIGR9KHgsZyksUz1hd2FpdCBlLnJlc3VtZU11bHRpcGFydFVwbG9hZChkLG0pO3RyeXtyZXR1cm4gYXdhaXQgUy51cGxvYWRQYXJ0KGgsJCl9Y2F0Y2goZSl7dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwMCxtZXNzYWdlOmUubWVzc2FnZX0pfX0sY29tcGxldGVIYW5kbGVyPWFzeW5jIHM9Pntjb25zdHtwYXRobmFtZTpkfT1hd2FpdCBnZXRWYWxpZGF0ZWRSb3V0ZXJQYXJhbXMocyxvYmplY3Qoe3BhdGhuYW1lOnN0cmluZyQxKCkubWluKDEpfSkucGFyc2UpLHt1cGxvYWRJZDptfT1hd2FpdCBnZXRWYWxpZGF0ZWRRdWVyeShzLG9iamVjdCh7dXBsb2FkSWQ6c3RyaW5nJDEoKS5taW4oMSl9KS5wYXJzZSkse3BhcnRzOmh9PWF3YWl0IHJlYWRWYWxpZGF0ZWRCb2R5KHMsb2JqZWN0KHtwYXJ0czphcnJheShvYmplY3Qoe3BhcnROdW1iZXI6bnVtYmVyJDEoKSxldGFnOnN0cmluZyQxKCl9KSl9KS5wYXJzZSksZz1hd2FpdCBlLnJlc3VtZU11bHRpcGFydFVwbG9hZChkLG0pO3RyeXtyZXR1cm4gYXdhaXQgZy5jb21wbGV0ZShoKX1jYXRjaChlKXt0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDAwLG1lc3NhZ2U6ZS5tZXNzYWdlfSl9fSxhYm9ydEhhbmRsZXI9YXN5bmMgcz0+e2NvbnN0e3BhdGhuYW1lOmR9PWF3YWl0IGdldFZhbGlkYXRlZFJvdXRlclBhcmFtcyhzLG9iamVjdCh7cGF0aG5hbWU6c3RyaW5nJDEoKS5taW4oMSl9KS5wYXJzZSkse3VwbG9hZElkOm19PWF3YWl0IGdldFZhbGlkYXRlZFF1ZXJ5KHMsb2JqZWN0KHt1cGxvYWRJZDpzdHJpbmckMSgpLm1pbigxKX0pLnBhcnNlKSxoPWF3YWl0IGUucmVzdW1lTXVsdGlwYXJ0VXBsb2FkKGQsbSk7dHJ5e2F3YWl0IGguYWJvcnQoKX1jYXRjaChlKXt0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDAwLG1lc3NhZ2U6ZS5tZXNzYWdlfSl9fTtyZXR1cm4gYXN5bmMoZSxzKT0+e2NvbnN0IGQ9YXdhaXQoYXN5bmMoZSxzKT0+e2NvbnN0IGQ9ZS5tZXRob2Qse2FjdGlvbjptfT1hd2FpdCBnZXRWYWxpZGF0ZWRSb3V0ZXJQYXJhbXMoZSxvYmplY3Qoe2FjdGlvbjpfZW51bShbImNyZWF0ZSIsInVwbG9hZCIsImNvbXBsZXRlIiwiYWJvcnQiXSl9KS5wYXJzZSk7aWYoImNyZWF0ZSI9PT1tJiYiUE9TVCI9PT1kKXJldHVybnthY3Rpb246bSxkYXRhOmF3YWl0IGNyZWF0ZUhhbmRsZXIoZSxzKX07aWYoInVwbG9hZCI9PT1tJiYiUFVUIj09PWQpcmV0dXJue2FjdGlvbjptLGRhdGE6YXdhaXQgdXBsb2FkSGFuZGxlcihlKX07aWYoImNvbXBsZXRlIj09PW0mJiJQT1NUIj09PWQpcmV0dXJue2FjdGlvbjptLGRhdGE6YXdhaXQgY29tcGxldGVIYW5kbGVyKGUpfTtpZigiYWJvcnQiPT09bSYmIkRFTEVURSI9PT1kKXJldHVybnthY3Rpb246bSxkYXRhOmF3YWl0IGFib3J0SGFuZGxlcihlKX07dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwNX0pfSkoZSxzKTtyZXR1cm4gZC5kYXRhP2UucmVzcG9uZFdpdGgoUmVzcG9uc2UuanNvbihkLmRhdGEpKTpzZW5kTm9Db250ZW50KGUpLGR9fWZ1bmN0aW9uIG1hcFIyT2JqZWN0VG9CbG9iKGUpe3JldHVybntwYXRobmFtZTplLmtleSxjb250ZW50VHlwZTplLmh0dHBNZXRhZGF0YT8uY29udGVudFR5cGV8fGdldENvbnRlbnRUeXBlKGUua2V5KSxzaXplOmUuc2l6ZSxodHRwRXRhZzplLmh0dHBFdGFnLHVwbG9hZGVkQXQ6ZS51cGxvYWRlZCxodHRwTWV0YWRhdGE6ZS5odHRwTWV0YWRhdGF8fHt9LGN1c3RvbU1ldGFkYXRhOmUuY3VzdG9tTWV0YWRhdGF8fHt9fX1jb25zdCBjdT1mdW5jdGlvbihlKXtjb25zdCBzPXtkcml2ZXI6ZSxhc3luYyBsaXN0KHMpe2NvbnN0IGQ9d24ocyx7bGltaXQ6MWUzfSk7cmV0dXJuIGUubGlzdChkKX0sYXN5bmMgc2VydmUocyxkKXtkPWRlY29kZVVSSUNvbXBvbmVudChkKTtjb25zdCBtPWF3YWl0IGUuZ2V0QXJyYXlCdWZmZXIoZCk7aWYoIW0pdGhyb3cgY3JlYXRlRXJyb3IkMSh7bWVzc2FnZToiRmlsZSBub3QgZm91bmQiLHN0YXR1c0NvZGU6NDA0fSk7Y29uc3QgaD1hd2FpdCBlLmhlYWQoZCksZz1oPy5jb250ZW50VHlwZXx8Z2V0Q29udGVudFR5cGUoZCk7cmV0dXJuIHFuKHMsIkNvbnRlbnQtVHlwZSIsZykscW4ocywiQ29udGVudC1MZW5ndGgiLG0uYnl0ZUxlbmd0aCksaD8uaHR0cEV0YWcmJnFuKHMsImV0YWciLGguaHR0cEV0YWcpLG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoZSl7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KG0pKSxlLmNsb3NlKCl9fSl9LGdldDphc3luYyBzPT5lLmdldChkZWNvZGVVUklDb21wb25lbnQocykpLGFzeW5jIHB1dChzLGQsbT17fSl7cz1kZWNvZGVVUklDb21wb25lbnQocyk7Y29uc3R7Y29udGVudFR5cGU6aCxjb250ZW50TGVuZ3RoOmcsYWRkUmFuZG9tU3VmZml4OngscHJlZml4OiQsY3VzdG9tTWV0YWRhdGE6UyxhY2Nlc3M6an09bSx6PWh8fGQudHlwZXx8Z2V0Q29udGVudFR5cGUocykse2RpcjpJLGV4dDpULG5hbWU6Un09cGFyc2UkMyhzKTtyZXR1cm4gcz1qb2luVVJMKCIuIj09PUk/IiI6SSx4P2Ake1J9LSR7cmFuZG9tVVVJRCgpLnNwbGl0KCItIilbMF19JHtUfWA6YCR7Un0ke1R9YCksJCYmKHM9am9pblVSTCgkLHMpLnJlcGxhY2UoL1wvKy9nLCIvIikucmVwbGFjZSgvXlwvKy8sIiIpKSxlLnB1dChzLGQse2NvbnRlbnRUeXBlOnosY29udGVudExlbmd0aDpnLGN1c3RvbU1ldGFkYXRhOlMsYWNjZXNzOmp9KX0sYXN5bmMgaGVhZChzKXtzPWRlY29kZVVSSUNvbXBvbmVudChzKTtjb25zdCBkPWF3YWl0IGUuaGVhZChzKTtpZighZCl0aHJvdyBjcmVhdGVFcnJvciQxKHttZXNzYWdlOiJCbG9iIG5vdCBmb3VuZCIsc3RhdHVzQ29kZTo0MDR9KTtyZXR1cm4gZH0sYXN5bmMgZGVsKHMpe2NvbnN0IGQ9QXJyYXkuaXNBcnJheShzKT9zOltzXTthd2FpdCBlLmRlbGV0ZShkLm1hcChlPT5kZWNvZGVVUklDb21wb25lbnQoZSkpKX0sYXN5bmMgZGVsZXRlKGUpe3JldHVybiB0aGlzLmRlbChlKX0sYXN5bmMgY3JlYXRlTXVsdGlwYXJ0VXBsb2FkKHMsZD17fSl7cz1kZWNvZGVVUklDb21wb25lbnQocyk7Y29uc3R7Y29udGVudFR5cGU6bSxhZGRSYW5kb21TdWZmaXg6aCxwcmVmaXg6Z309ZCx4PW18fGdldENvbnRlbnRUeXBlKHMpLHtkaXI6JCxleHQ6UyxuYW1lOmp9PXBhcnNlJDMocyk7cmV0dXJuIHM9am9pblVSTCgiLiI9PT0kPyIiOiQsaD9gJHtqfS0ke3JhbmRvbVVVSUQoKS5zcGxpdCgiLSIpWzBdfSR7U31gOmAke2p9JHtTfWApLGcmJihzPWpvaW5VUkwoZyxzKS5yZXBsYWNlKC9cLysvZywiLyIpLnJlcGxhY2UoL15cLysvLCIiKSksZS5jcmVhdGVNdWx0aXBhcnRVcGxvYWQocyx7Li4uZCxjb250ZW50VHlwZTp4fSl9LHJlc3VtZU11bHRpcGFydFVwbG9hZDphc3luYyhzLGQpPT5lLnJlc3VtZU11bHRpcGFydFVwbG9hZChkZWNvZGVVUklDb21wb25lbnQocyksZCksYXN5bmMgaGFuZGxlVXBsb2FkKGUsZD17fSl7YXNzZXJ0TWV0aG9kKGUsWyJQT1NUIiwiUFVUIiwiUEFUQ0giXSksZD13bihkLHtmb3JtS2V5OiJmaWxlcyIsbXVsdGlwbGU6ITB9KTtjb25zdCBtPShhd2FpdCByZWFkRm9ybURhdGEoZSkpLmdldEFsbChkLmZvcm1LZXkpO2lmKCFtKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6Ik1pc3NpbmcgZmlsZXMifSk7aWYoIWQubXVsdGlwbGUmJm0ubGVuZ3RoPjEpdGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDAsbWVzc2FnZToiTXVsdGlwbGUgZmlsZXMgYXJlIG5vdCBhbGxvd2VkIn0pO2NvbnN0IGg9W107dHJ5e2lmKGQuZW5zdXJlKWZvcihjb25zdCBlIG9mIG0pZW5zdXJlQmxvYihlLGQuZW5zdXJlKTtmb3IoY29uc3QgZSBvZiBtKXtjb25zdCBtPWF3YWl0IHMucHV0KGUubmFtZSxlLGQucHV0KTtoLnB1c2gobSl9fWNhdGNoKGUpe3Rocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NTAwLG1lc3NhZ2U6YFN0b3JhZ2UgZXJyb3I6ICR7ZS5tZXNzYWdlfWB9KX1yZXR1cm4gaH19O3JldHVybnsuLi5zLGhhbmRsZU11bHRpcGFydFVwbG9hZDplLmhhbmRsZU11bHRpcGFydFVwbG9hZD8/Y3JlYXRlR2VuZXJpY011bHRpcGFydFVwbG9hZEhhbmRsZXIocyl9fShmdW5jdGlvbihlKXtjb25zdCBnZXRCdWNrZXQ9KCk9Pntjb25zdCBzPWUuYmluZGluZ3x8IkJMT0IiLGQ9Z2xvYmFsVGhpc1tzXXx8Z2xvYmFsVGhpcy5fX2Vudl9fPy5bc118fFQuZW52W3NdO2lmKCFkKXRocm93IG5ldyBFcnJvcihgUjIgYmluZGluZyAiJHtlLmJpbmRpbmd9IiBub3QgZm91bmRgKTtyZXR1cm4gZH07cmV0dXJue25hbWU6ImNsb3VkZmxhcmUtcjIiLG9wdGlvbnM6ZSxhc3luYyBsaXN0KGUpe2NvbnN0IHM9Z2V0QnVja2V0KCksZD17bGltaXQ6ZT8ubGltaXQ/PzFlMyxwcmVmaXg6ZT8ucHJlZml4LGN1cnNvcjplPy5jdXJzb3IsZGVsaW1pdGVyOmU/LmZvbGRlZD8iLyI6dm9pZCAwLGluY2x1ZGU6WyJodHRwTWV0YWRhdGEiLCJjdXN0b21NZXRhZGF0YSJdfSxtPWF3YWl0IHMubGlzdChkKTtyZXR1cm57YmxvYnM6bS5vYmplY3RzLm1hcChtYXBSMk9iamVjdFRvQmxvYiksaGFzTW9yZTptLnRydW5jYXRlZCxjdXJzb3I6bS50cnVuY2F0ZWQ/bS5jdXJzb3I6dm9pZCAwLGZvbGRlcnM6ZT8uZm9sZGVkP20uZGVsaW1pdGVkUHJlZml4ZXM6dm9pZCAwfX0sYXN5bmMgZ2V0KGUpe2NvbnN0IHM9Z2V0QnVja2V0KCksZD1hd2FpdCBzLmdldChkZWNvZGVVUklDb21wb25lbnQoZSkpO2lmKCFkKXJldHVybiBudWxsO2NvbnN0IG09YXdhaXQgZC5hcnJheUJ1ZmZlcigpO3JldHVybiBuZXcgQmxvYihbbV0se3R5cGU6ZC5odHRwTWV0YWRhdGE/LmNvbnRlbnRUeXBlfHxnZXRDb250ZW50VHlwZShlKX0pfSxhc3luYyBnZXRBcnJheUJ1ZmZlcihlKXtjb25zdCBzPWdldEJ1Y2tldCgpLGQ9YXdhaXQgcy5nZXQoZGVjb2RlVVJJQ29tcG9uZW50KGUpKTtyZXR1cm4gZD9kLmFycmF5QnVmZmVyKCk6bnVsbH0sYXN5bmMgcHV0KGUscyxkKXtjb25zdCBtPWdldEJ1Y2tldCgpLGg9ZD8uY29udGVudFR5cGV8fChzIGluc3RhbmNlb2YgQmxvYj9zLnR5cGU6dm9pZCAwKXx8Z2V0Q29udGVudFR5cGUoZSk7ZD8uYWNjZXNzJiZjb25zb2xlLndhcm4oIlNldHRpbmcgYWNjZXNzIGxldmVsIGZvciBibG9iIGluIENsb3VkZmxhcmUgUjIgaXMgbm90IHN1cHBvcnRlZCwgaXQgd2lsbCBiZSBpZ25vcmVkIik7cmV0dXJuIG1hcFIyT2JqZWN0VG9CbG9iKGF3YWl0IG0ucHV0KGUscyx7aHR0cE1ldGFkYXRhOntjb250ZW50VHlwZTpofSxjdXN0b21NZXRhZGF0YTpkPy5jdXN0b21NZXRhZGF0YX0pKX0sYXN5bmMgaGVhZChlKXtjb25zdCBzPWdldEJ1Y2tldCgpLGQ9YXdhaXQgcy5oZWFkKGRlY29kZVVSSUNvbXBvbmVudChlKSk7cmV0dXJuIGQ/bWFwUjJPYmplY3RUb0Jsb2IoZCk6bnVsbH0sYXN5bmMgaGFzSXRlbShlKXtjb25zdCBzPWdldEJ1Y2tldCgpO3JldHVybiBudWxsIT09YXdhaXQgcy5oZWFkKGRlY29kZVVSSUNvbXBvbmVudChlKSl9LGFzeW5jIGRlbGV0ZShlKXtjb25zdCBzPWdldEJ1Y2tldCgpLGQ9QXJyYXkuaXNBcnJheShlKT9lOltlXTthd2FpdCBQcm9taXNlLmFsbChkLm1hcChlPT5zLmRlbGV0ZShkZWNvZGVVUklDb21wb25lbnQoZSkpKSl9LGFzeW5jIGNyZWF0ZU11bHRpcGFydFVwbG9hZChlLHMpe2NvbnN0IGQ9Z2V0QnVja2V0KCksbT1hd2FpdCBkLmNyZWF0ZU11bHRpcGFydFVwbG9hZChlLHtodHRwTWV0YWRhdGE6e2NvbnRlbnRUeXBlOnM/LmNvbnRlbnRUeXBlfHxnZXRDb250ZW50VHlwZShlKX0sY3VzdG9tTWV0YWRhdGE6cz8uY3VzdG9tTWV0YWRhdGF8fHt9fSk7cmV0dXJue3BhdGhuYW1lOmUsdXBsb2FkSWQ6bS51cGxvYWRJZCx1cGxvYWRQYXJ0OihlLHMpPT5tLnVwbG9hZFBhcnQoZSxzKSxhc3luYyBhYm9ydCgpe2F3YWl0IG0uYWJvcnQoKX0sY29tcGxldGU6YXN5bmMgZT0+bWFwUjJPYmplY3RUb0Jsb2IoYXdhaXQgbS5jb21wbGV0ZShlKSl9fSxhc3luYyByZXN1bWVNdWx0aXBhcnRVcGxvYWQoZSxzKXtjb25zdCBkPWdldEJ1Y2tldCgpLnJlc3VtZU11bHRpcGFydFVwbG9hZChlLHMpO3JldHVybntwYXRobmFtZTplLHVwbG9hZElkOmQudXBsb2FkSWQsdXBsb2FkUGFydDooZSxzKT0+ZC51cGxvYWRQYXJ0KGUscyksYXN5bmMgYWJvcnQoKXthd2FpdCBkLmFib3J0KCl9LGNvbXBsZXRlOmFzeW5jIGU9Pm1hcFIyT2JqZWN0VG9CbG9iKGF3YWl0IGQuY29tcGxldGUoZSkpfX19fSh7YmluZGluZzoiQkxPQiJ9KSksdXU9U3ltYm9sLmZvcigiZHJpenpsZTplbnRpdHlLaW5kIik7ZnVuY3Rpb24gaXMoZSxzKXtpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiBzKXJldHVybiEwO2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocyx1dSkpdGhyb3cgbmV3IEVycm9yKGBDbGFzcyAiJHtzLm5hbWU/PyI8dW5rbm93bj4ifSIgZG9lc24ndCBsb29rIGxpa2UgYSBEcml6emxlIGVudGl0eS4gSWYgdGhpcyBpcyBpbmNvcnJlY3QgYW5kIHRoZSBjbGFzcyBpcyBwcm92aWRlZCBieSBEcml6emxlLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcuYCk7bGV0IGQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpLmNvbnN0cnVjdG9yO2lmKGQpZm9yKDtkOyl7aWYodXUgaW4gZCYmZFt1dV09PT1zW3V1XSlyZXR1cm4hMDtkPU9iamVjdC5nZXRQcm90b3R5cGVPZihkKX1yZXR1cm4hMX1jbGFzcyBDb25zb2xlTG9nV3JpdGVye3N0YXRpY1t1dV09IkNvbnNvbGVMb2dXcml0ZXIiO3dyaXRlKGUpe2NvbnNvbGUubG9nKGUpfX1jbGFzcyBEZWZhdWx0TG9nZ2Vye3N0YXRpY1t1dV09IkRlZmF1bHRMb2dnZXIiO3dyaXRlcjtjb25zdHJ1Y3RvcihlKXt0aGlzLndyaXRlcj1lPy53cml0ZXI/P25ldyBDb25zb2xlTG9nV3JpdGVyfWxvZ1F1ZXJ5KGUscyl7Y29uc3QgZD1zLm1hcChlPT57dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShlKX1jYXRjaHtyZXR1cm4gU3RyaW5nKGUpfX0pLG09ZC5sZW5ndGg/YCAtLSBwYXJhbXM6IFske2Quam9pbigiLCAiKX1dYDoiIjt0aGlzLndyaXRlci53cml0ZShgUXVlcnk6ICR7ZX0ke219YCl9fWNsYXNzIE5vb3BMb2dnZXJ7c3RhdGljW3V1XT0iTm9vcExvZ2dlciI7bG9nUXVlcnkoKXt9fWNvbnN0IGR1PVN5bWJvbC5mb3IoImRyaXp6bGU6TmFtZSIpLHB1PVN5bWJvbC5mb3IoImRyaXp6bGU6U2NoZW1hIiksbXU9U3ltYm9sLmZvcigiZHJpenpsZTpDb2x1bW5zIiksZnU9U3ltYm9sLmZvcigiZHJpenpsZTpFeHRyYUNvbmZpZ0NvbHVtbnMiKSxodT1TeW1ib2wuZm9yKCJkcml6emxlOk9yaWdpbmFsTmFtZSIpLGd1PVN5bWJvbC5mb3IoImRyaXp6bGU6QmFzZU5hbWUiKSx2dT1TeW1ib2wuZm9yKCJkcml6emxlOklzQWxpYXMiKSx5dT1TeW1ib2wuZm9yKCJkcml6emxlOkV4dHJhQ29uZmlnQnVpbGRlciIpLGJ1PVN5bWJvbC5mb3IoImRyaXp6bGU6SXNEcml6emxlVGFibGUiKTtjbGFzcyBUYWJsZXtzdGF0aWNbdXVdPSJUYWJsZSI7c3RhdGljIFN5bWJvbD17TmFtZTpkdSxTY2hlbWE6cHUsT3JpZ2luYWxOYW1lOmh1LENvbHVtbnM6bXUsRXh0cmFDb25maWdDb2x1bW5zOmZ1LEJhc2VOYW1lOmd1LElzQWxpYXM6dnUsRXh0cmFDb25maWdCdWlsZGVyOnl1fTtbZHVdO1todV07W3B1XTtbbXVdO1tmdV07W2d1XTtbdnVdPSExO1tidV09ITA7W3l1XT12b2lkIDA7Y29uc3RydWN0b3IoZSxzLGQpe3RoaXNbZHVdPXRoaXNbaHVdPWUsdGhpc1twdV09cyx0aGlzW2d1XT1kfX1mdW5jdGlvbiBnZXRUYWJsZU5hbWUoZSl7cmV0dXJuIGVbZHVdfWZ1bmN0aW9uIGdldFRhYmxlVW5pcXVlTmFtZShlKXtyZXR1cm5gJHtlW3B1XT8/InB1YmxpYyJ9LiR7ZVtkdV19YH1jbGFzcyBDb2x1bW57Y29uc3RydWN0b3IoZSxzKXt0aGlzLnRhYmxlPWUsdGhpcy5jb25maWc9cyx0aGlzLm5hbWU9cy5uYW1lLHRoaXMua2V5QXNOYW1lPXMua2V5QXNOYW1lLHRoaXMubm90TnVsbD1zLm5vdE51bGwsdGhpcy5kZWZhdWx0PXMuZGVmYXVsdCx0aGlzLmRlZmF1bHRGbj1zLmRlZmF1bHRGbix0aGlzLm9uVXBkYXRlRm49cy5vblVwZGF0ZUZuLHRoaXMuaGFzRGVmYXVsdD1zLmhhc0RlZmF1bHQsdGhpcy5wcmltYXJ5PXMucHJpbWFyeUtleSx0aGlzLmlzVW5pcXVlPXMuaXNVbmlxdWUsdGhpcy51bmlxdWVOYW1lPXMudW5pcXVlTmFtZSx0aGlzLnVuaXF1ZVR5cGU9cy51bmlxdWVUeXBlLHRoaXMuZGF0YVR5cGU9cy5kYXRhVHlwZSx0aGlzLmNvbHVtblR5cGU9cy5jb2x1bW5UeXBlLHRoaXMuZ2VuZXJhdGVkPXMuZ2VuZXJhdGVkLHRoaXMuZ2VuZXJhdGVkSWRlbnRpdHk9cy5nZW5lcmF0ZWRJZGVudGl0eX1zdGF0aWNbdXVdPSJDb2x1bW4iO25hbWU7a2V5QXNOYW1lO3ByaW1hcnk7bm90TnVsbDtkZWZhdWx0O2RlZmF1bHRGbjtvblVwZGF0ZUZuO2hhc0RlZmF1bHQ7aXNVbmlxdWU7dW5pcXVlTmFtZTt1bmlxdWVUeXBlO2RhdGFUeXBlO2NvbHVtblR5cGU7ZW51bVZhbHVlcz12b2lkIDA7Z2VuZXJhdGVkPXZvaWQgMDtnZW5lcmF0ZWRJZGVudGl0eT12b2lkIDA7Y29uZmlnO21hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4gZX1tYXBUb0RyaXZlclZhbHVlKGUpe3JldHVybiBlfXNob3VsZERpc2FibGVJbnNlcnQoKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5jb25maWcuZ2VuZXJhdGVkJiYiYnlEZWZhdWx0IiE9PXRoaXMuY29uZmlnLmdlbmVyYXRlZC50eXBlfX1jbGFzcyBDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IkNvbHVtbkJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3RvcihlLHMsZCl7dGhpcy5jb25maWc9e25hbWU6ZSxrZXlBc05hbWU6IiI9PT1lLG5vdE51bGw6ITEsZGVmYXVsdDp2b2lkIDAsaGFzRGVmYXVsdDohMSxwcmltYXJ5S2V5OiExLGlzVW5pcXVlOiExLHVuaXF1ZU5hbWU6dm9pZCAwLHVuaXF1ZVR5cGU6dm9pZCAwLGRhdGFUeXBlOnMsY29sdW1uVHlwZTpkLGdlbmVyYXRlZDp2b2lkIDB9fSR0eXBlKCl7cmV0dXJuIHRoaXN9bm90TnVsbCgpe3JldHVybiB0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9ZGVmYXVsdChlKXtyZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdD1lLHRoaXMuY29uZmlnLmhhc0RlZmF1bHQ9ITAsdGhpc30kZGVmYXVsdEZuKGUpe3JldHVybiB0aGlzLmNvbmZpZy5kZWZhdWx0Rm49ZSx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHRoaXN9JGRlZmF1bHQ9dGhpcy4kZGVmYXVsdEZuOyRvblVwZGF0ZUZuKGUpe3JldHVybiB0aGlzLmNvbmZpZy5vblVwZGF0ZUZuPWUsdGhpcy5jb25maWcuaGFzRGVmYXVsdD0hMCx0aGlzfSRvblVwZGF0ZT10aGlzLiRvblVwZGF0ZUZuO3ByaW1hcnlLZXkoKXtyZXR1cm4gdGhpcy5jb25maWcucHJpbWFyeUtleT0hMCx0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9c2V0TmFtZShlKXsiIj09PXRoaXMuY29uZmlnLm5hbWUmJih0aGlzLmNvbmZpZy5uYW1lPWUpfX1jb25zdCBfdT1TeW1ib2wuZm9yKCJkcml6emxlOmlzUGdFbnVtIik7Y2xhc3MgU3VicXVlcnl7c3RhdGljW3V1XT0iU3VicXVlcnkiO2NvbnN0cnVjdG9yKGUscyxkLG09ITEsaD1bXSl7dGhpcy5fPXticmFuZDoiU3VicXVlcnkiLHNxbDplLHNlbGVjdGVkRmllbGRzOnMsYWxpYXM6ZCxpc1dpdGg6bSx1c2VkVGFibGVzOmh9fX1jbGFzcyBXaXRoU3VicXVlcnkgZXh0ZW5kcyBTdWJxdWVyeXtzdGF0aWNbdXVdPSJXaXRoU3VicXVlcnkifWNvbnN0IHh1PXtzdGFydEFjdGl2ZVNwYW46KGUscyk9PnMoKX0sd3U9U3ltYm9sLmZvcigiZHJpenpsZTpWaWV3QmFzZUNvbmZpZyIpO2Z1bmN0aW9uIGlzU1FMV3JhcHBlcihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U1FMfWNsYXNzIFN0cmluZ0NodW5re3N0YXRpY1t1dV09IlN0cmluZ0NodW5rIjt2YWx1ZTtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19Y2xhc3MgU1FMe2NvbnN0cnVjdG9yKGUpe3RoaXMucXVlcnlDaHVua3M9ZTtmb3IoY29uc3QgcyBvZiBlKWlmKGlzKHMsVGFibGUpKXtjb25zdCBlPXNbVGFibGUuU3ltYm9sLlNjaGVtYV07dGhpcy51c2VkVGFibGVzLnB1c2godm9pZCAwPT09ZT9zW1RhYmxlLlN5bWJvbC5OYW1lXTplKyIuIitzW1RhYmxlLlN5bWJvbC5OYW1lXSl9fXN0YXRpY1t1dV09IlNRTCI7ZGVjb2Rlcj0kdTtzaG91bGRJbmxpbmVQYXJhbXM9ITE7dXNlZFRhYmxlcz1bXTthcHBlbmQoZSl7cmV0dXJuIHRoaXMucXVlcnlDaHVua3MucHVzaCguLi5lLnF1ZXJ5Q2h1bmtzKSx0aGlzfXRvUXVlcnkoZSl7cmV0dXJuIHh1LnN0YXJ0QWN0aXZlU3BhbigiZHJpenpsZS5idWlsZFNRTCIscz0+e2NvbnN0IGQ9dGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyh0aGlzLnF1ZXJ5Q2h1bmtzLGUpO3JldHVybiBzPy5zZXRBdHRyaWJ1dGVzKHsiZHJpenpsZS5xdWVyeS50ZXh0IjpkLnNxbCwiZHJpenpsZS5xdWVyeS5wYXJhbXMiOkpTT04uc3RyaW5naWZ5KGQucGFyYW1zKX0pLGR9KX1idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhlLHMpe2NvbnN0IGQ9T2JqZWN0LmFzc2lnbih7fSxzLHtpbmxpbmVQYXJhbXM6cy5pbmxpbmVQYXJhbXN8fHRoaXMuc2hvdWxkSW5saW5lUGFyYW1zLHBhcmFtU3RhcnRJbmRleDpzLnBhcmFtU3RhcnRJbmRleHx8e3ZhbHVlOjB9fSkse2Nhc2luZzptLGVzY2FwZU5hbWU6aCxlc2NhcGVQYXJhbTpnLHByZXBhcmVUeXBpbmc6eCxpbmxpbmVQYXJhbXM6JCxwYXJhbVN0YXJ0SW5kZXg6U309ZDtyZXR1cm4gZnVuY3Rpb24oZSl7Y29uc3Qgcz17c3FsOiIiLHBhcmFtczpbXX07Zm9yKGNvbnN0IGQgb2YgZSlzLnNxbCs9ZC5zcWwscy5wYXJhbXMucHVzaCguLi5kLnBhcmFtcyksZC50eXBpbmdzPy5sZW5ndGgmJihzLnR5cGluZ3N8fChzLnR5cGluZ3M9W10pLHMudHlwaW5ncy5wdXNoKC4uLmQudHlwaW5ncykpO3JldHVybiBzfShlLm1hcChlPT57aWYoaXMoZSxTdHJpbmdDaHVuaykpcmV0dXJue3NxbDplLnZhbHVlLmpvaW4oIiIpLHBhcmFtczpbXX07aWYoaXMoZSxOYW1lKSlyZXR1cm57c3FsOmgoZS52YWx1ZSkscGFyYW1zOltdfTtpZih2b2lkIDA9PT1lKXJldHVybntzcWw6IiIscGFyYW1zOltdfTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBzPVtuZXcgU3RyaW5nQ2h1bmsoIigiKV07Zm9yKGNvbnN0W2QsbV1vZiBlLmVudHJpZXMoKSlzLnB1c2gobSksZDxlLmxlbmd0aC0xJiZzLnB1c2gobmV3IFN0cmluZ0NodW5rKCIsICIpKTtyZXR1cm4gcy5wdXNoKG5ldyBTdHJpbmdDaHVuaygiKSIpKSx0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKHMsZCl9aWYoaXMoZSxTUUwpKXJldHVybiB0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKGUucXVlcnlDaHVua3Msey4uLmQsaW5saW5lUGFyYW1zOiR8fGUuc2hvdWxkSW5saW5lUGFyYW1zfSk7aWYoaXMoZSxUYWJsZSkpe2NvbnN0IHM9ZVtUYWJsZS5TeW1ib2wuU2NoZW1hXSxkPWVbVGFibGUuU3ltYm9sLk5hbWVdO3JldHVybntzcWw6dm9pZCAwPT09c3x8ZVt2dV0/aChkKTpoKHMpKyIuIitoKGQpLHBhcmFtczpbXX19aWYoaXMoZSxDb2x1bW4pKXtjb25zdCBkPW0uZ2V0Q29sdW1uQ2FzaW5nKGUpO2lmKCJpbmRleGVzIj09PXMuaW52b2tlU291cmNlKXJldHVybntzcWw6aChkKSxwYXJhbXM6W119O2NvbnN0IGc9ZS50YWJsZVtUYWJsZS5TeW1ib2wuU2NoZW1hXTtyZXR1cm57c3FsOmUudGFibGVbdnVdfHx2b2lkIDA9PT1nP2goZS50YWJsZVtUYWJsZS5TeW1ib2wuTmFtZV0pKyIuIitoKGQpOmgoZykrIi4iK2goZS50YWJsZVtUYWJsZS5TeW1ib2wuTmFtZV0pKyIuIitoKGQpLHBhcmFtczpbXX19aWYoaXMoZSxWaWV3KSl7Y29uc3Qgcz1lW3d1XS5zY2hlbWEsZD1lW3d1XS5uYW1lO3JldHVybntzcWw6dm9pZCAwPT09c3x8ZVt3dV0uaXNBbGlhcz9oKGQpOmgocykrIi4iK2goZCkscGFyYW1zOltdfX1pZihpcyhlLFBhcmFtKSl7aWYoaXMoZS52YWx1ZSxQbGFjZWhvbGRlcikpcmV0dXJue3NxbDpnKFMudmFsdWUrKyxlKSxwYXJhbXM6W2VdLHR5cGluZ3M6WyJub25lIl19O2NvbnN0IHM9bnVsbD09PWUudmFsdWU/bnVsbDplLmVuY29kZXIubWFwVG9Ecml2ZXJWYWx1ZShlLnZhbHVlKTtpZihpcyhzLFNRTCkpcmV0dXJuIHRoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW3NdLGQpO2lmKCQpcmV0dXJue3NxbDp0aGlzLm1hcElubGluZVBhcmFtKHMsZCkscGFyYW1zOltdfTtsZXQgbT1bIm5vbmUiXTtyZXR1cm4geCYmKG09W3goZS5lbmNvZGVyKV0pLHtzcWw6ZyhTLnZhbHVlKysscykscGFyYW1zOltzXSx0eXBpbmdzOm19fXJldHVybiBpcyhlLFBsYWNlaG9sZGVyKT97c3FsOmcoUy52YWx1ZSsrLGUpLHBhcmFtczpbZV0sdHlwaW5nczpbIm5vbmUiXX06aXMoZSxTUUwuQWxpYXNlZCkmJnZvaWQgMCE9PWUuZmllbGRBbGlhcz97c3FsOmgoZS5maWVsZEFsaWFzKSxwYXJhbXM6W119OmlzKGUsU3VicXVlcnkpP2UuXy5pc1dpdGg/e3NxbDpoKGUuXy5hbGlhcykscGFyYW1zOltdfTp0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKFtuZXcgU3RyaW5nQ2h1bmsoIigiKSxlLl8uc3FsLG5ldyBTdHJpbmdDaHVuaygiKSAiKSxuZXcgTmFtZShlLl8uYWxpYXMpXSxkKTooaj1lKSYmImZ1bmN0aW9uIj09dHlwZW9mIGomJl91IGluIGomJiEwPT09altfdV0/ZS5zY2hlbWE/e3NxbDpoKGUuc2NoZW1hKSsiLiIraChlLmVudW1OYW1lKSxwYXJhbXM6W119OntzcWw6aChlLmVudW1OYW1lKSxwYXJhbXM6W119OmlzU1FMV3JhcHBlcihlKT9lLnNob3VsZE9taXRTUUxQYXJlbnM/LigpP3RoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW2UuZ2V0U1FMKCldLGQpOnRoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW25ldyBTdHJpbmdDaHVuaygiKCIpLGUuZ2V0U1FMKCksbmV3IFN0cmluZ0NodW5rKCIpIildLGQpOiQ/e3NxbDp0aGlzLm1hcElubGluZVBhcmFtKGUsZCkscGFyYW1zOltdfTp7c3FsOmcoUy52YWx1ZSsrLGUpLHBhcmFtczpbZV0sdHlwaW5nczpbIm5vbmUiXX07dmFyIGp9KSl9bWFwSW5saW5lUGFyYW0oZSx7ZXNjYXBlU3RyaW5nOnN9KXtpZihudWxsPT09ZSlyZXR1cm4ibnVsbCI7aWYoIm51bWJlciI9PXR5cGVvZiBlfHwiYm9vbGVhbiI9PXR5cGVvZiBlKXJldHVybiBlLnRvU3RyaW5nKCk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBzKGUpO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Y29uc3QgZD1lLnRvU3RyaW5nKCk7cmV0dXJuIHMoIltvYmplY3QgT2JqZWN0XSI9PT1kP0pTT04uc3RyaW5naWZ5KGUpOmQpfXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBwYXJhbSB2YWx1ZTogIitlKX1nZXRTUUwoKXtyZXR1cm4gdGhpc31hcyhlKXtyZXR1cm4gdm9pZCAwPT09ZT90aGlzOm5ldyBTUUwuQWxpYXNlZCh0aGlzLGUpfW1hcFdpdGgoZSl7cmV0dXJuIHRoaXMuZGVjb2Rlcj0iZnVuY3Rpb24iPT10eXBlb2YgZT97bWFwRnJvbURyaXZlclZhbHVlOmV9OmUsdGhpc31pbmxpbmVQYXJhbXMoKXtyZXR1cm4gdGhpcy5zaG91bGRJbmxpbmVQYXJhbXM9ITAsdGhpc31pZihlKXtyZXR1cm4gZT90aGlzOnZvaWQgMH19Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlPWV9c3RhdGljW3V1XT0iTmFtZSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19Y29uc3QgJHU9e21hcEZyb21Ecml2ZXJWYWx1ZTplPT5lfSxTdT17bWFwVG9Ecml2ZXJWYWx1ZTplPT5lfTtjbGFzcyBQYXJhbXtjb25zdHJ1Y3RvcihlLHM9U3Upe3RoaXMudmFsdWU9ZSx0aGlzLmVuY29kZXI9c31zdGF0aWNbdXVdPSJQYXJhbSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19ZnVuY3Rpb24gc3FsKGUsLi4ucyl7Y29uc3QgZD1bXTsocy5sZW5ndGg+MHx8ZS5sZW5ndGg+MCYmIiIhPT1lWzBdKSYmZC5wdXNoKG5ldyBTdHJpbmdDaHVuayhlWzBdKSk7Zm9yKGNvbnN0W20saF1vZiBzLmVudHJpZXMoKSlkLnB1c2goaCxuZXcgU3RyaW5nQ2h1bmsoZVttKzFdKSk7cmV0dXJuIG5ldyBTUUwoZCl9dmFyIGt1OyhrdT1zcWx8fChzcWw9e30pKS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBuZXcgU1FMKFtdKX0sa3UuZnJvbUxpc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBTUUwoZSl9LGt1LnJhdz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFNRTChbbmV3IFN0cmluZ0NodW5rKGUpXSl9LGt1LmpvaW49ZnVuY3Rpb24oZSxzKXtjb25zdCBkPVtdO2Zvcihjb25zdFttLGhdb2YgZS5lbnRyaWVzKCkpbT4wJiZ2b2lkIDAhPT1zJiZkLnB1c2gocyksZC5wdXNoKGgpO3JldHVybiBuZXcgU1FMKGQpfSxrdS5pZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTmFtZShlKX0sa3UucGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQbGFjZWhvbGRlcihlKX0sa3UucGFyYW09ZnVuY3Rpb24oZSxzKXtyZXR1cm4gbmV3IFBhcmFtKGUscyl9LChlPT57Y2xhc3MgQWxpYXNlZHtjb25zdHJ1Y3RvcihlLHMpe3RoaXMuc3FsPWUsdGhpcy5maWVsZEFsaWFzPXN9c3RhdGljW3V1XT0iU1FMLkFsaWFzZWQiO2lzU2VsZWN0aW9uRmllbGQ9ITE7Z2V0U1FMKCl7cmV0dXJuIHRoaXMuc3FsfWNsb25lKCl7cmV0dXJuIG5ldyBBbGlhc2VkKHRoaXMuc3FsLHRoaXMuZmllbGRBbGlhcyl9fWUuQWxpYXNlZD1BbGlhc2VkfSkoU1FMfHwoU1FMPXt9KSk7Y2xhc3MgUGxhY2Vob2xkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWV9c3RhdGljW3V1XT0iUGxhY2Vob2xkZXIiO2dldFNRTCgpe3JldHVybiBuZXcgU1FMKFt0aGlzXSl9fWZ1bmN0aW9uIGZpbGxQbGFjZWhvbGRlcnMoZSxzKXtyZXR1cm4gZS5tYXAoZT0+e2lmKGlzKGUsUGxhY2Vob2xkZXIpKXtpZighKGUubmFtZSBpbiBzKSl0aHJvdyBuZXcgRXJyb3IoYE5vIHZhbHVlIGZvciBwbGFjZWhvbGRlciAiJHtlLm5hbWV9IiB3YXMgcHJvdmlkZWRgKTtyZXR1cm4gc1tlLm5hbWVdfWlmKGlzKGUsUGFyYW0pJiZpcyhlLnZhbHVlLFBsYWNlaG9sZGVyKSl7aWYoIShlLnZhbHVlLm5hbWUgaW4gcykpdGhyb3cgbmV3IEVycm9yKGBObyB2YWx1ZSBmb3IgcGxhY2Vob2xkZXIgIiR7ZS52YWx1ZS5uYW1lfSIgd2FzIHByb3ZpZGVkYCk7cmV0dXJuIGUuZW5jb2Rlci5tYXBUb0RyaXZlclZhbHVlKHNbZS52YWx1ZS5uYW1lXSl9cmV0dXJuIGV9KX1jb25zdCBqdT1TeW1ib2wuZm9yKCJkcml6emxlOklzRHJpenpsZVZpZXciKTtjbGFzcyBWaWV3e3N0YXRpY1t1dV09IlZpZXciO1t3dV07W2p1XT0hMDtjb25zdHJ1Y3Rvcih7bmFtZTplLHNjaGVtYTpzLHNlbGVjdGVkRmllbGRzOmQscXVlcnk6bX0pe3RoaXNbd3VdPXtuYW1lOmUsb3JpZ2luYWxOYW1lOmUsc2NoZW1hOnMsc2VsZWN0ZWRGaWVsZHM6ZCxxdWVyeTptLGlzRXhpc3Rpbmc6IW0saXNBbGlhczohMX19Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19ZnVuY3Rpb24gbWFwUmVzdWx0Um93KGUscyxkKXtjb25zdCBtPXt9LGg9ZS5yZWR1Y2UoKGUse3BhdGg6aCxmaWVsZDpnfSx4KT0+e2xldCAkOyQ9aXMoZyxDb2x1bW4pP2c6aXMoZyxTUUwpP2cuZGVjb2RlcjppcyhnLFN1YnF1ZXJ5KT9nLl8uc3FsLmRlY29kZXI6Zy5zcWwuZGVjb2RlcjtsZXQgUz1lO2Zvcihjb25zdFtlLGpdb2YgaC5lbnRyaWVzKCkpaWYoZTxoLmxlbmd0aC0xKWogaW4gU3x8KFNbal09e30pLFM9U1tqXTtlbHNle2NvbnN0IGU9c1t4XSx6PVNbal09bnVsbD09PWU/bnVsbDokLm1hcEZyb21Ecml2ZXJWYWx1ZShlKTtpZihkJiZpcyhnLENvbHVtbikmJjI9PT1oLmxlbmd0aCl7Y29uc3QgZT1oWzBdO2UgaW4gbT8ic3RyaW5nIj09dHlwZW9mIG1bZV0mJm1bZV0hPT1nZXRUYWJsZU5hbWUoZy50YWJsZSkmJihtW2VdPSExKTptW2VdPW51bGw9PT16JiZnZXRUYWJsZU5hbWUoZy50YWJsZSl9fXJldHVybiBlfSx7fSk7aWYoZCYmT2JqZWN0LmtleXMobSkubGVuZ3RoPjApZm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhtKSkic3RyaW5nIiE9dHlwZW9mIHN8fGRbc118fChoW2VdPW51bGwpO3JldHVybiBofWZ1bmN0aW9uIG9yZGVyU2VsZWN0ZWRGaWVsZHMoZSxzKXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkucmVkdWNlKChlLFtkLG1dKT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZClyZXR1cm4gZTtjb25zdCBoPXM/Wy4uLnMsZF06W2RdO3JldHVybiBpcyhtLENvbHVtbil8fGlzKG0sU1FMKXx8aXMobSxTUUwuQWxpYXNlZCl8fGlzKG0sU3VicXVlcnkpP2UucHVzaCh7cGF0aDpoLGZpZWxkOm19KTppcyhtLFRhYmxlKT9lLnB1c2goLi4ub3JkZXJTZWxlY3RlZEZpZWxkcyhtW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxoKSk6ZS5wdXNoKC4uLm9yZGVyU2VsZWN0ZWRGaWVsZHMobSxoKSksZX0sW10pfWZ1bmN0aW9uIGhhdmVTYW1lS2V5cyhlLHMpe2NvbnN0IGQ9T2JqZWN0LmtleXMoZSksbT1PYmplY3Qua2V5cyhzKTtpZihkLmxlbmd0aCE9PW0ubGVuZ3RoKXJldHVybiExO2Zvcihjb25zdFtlLHNdb2YgZC5lbnRyaWVzKCkpaWYocyE9PW1bZV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbWFwVXBkYXRlU2V0KGUscyl7Y29uc3QgZD1PYmplY3QuZW50cmllcyhzKS5maWx0ZXIoKFssZV0pPT52b2lkIDAhPT1lKS5tYXAoKFtzLGRdKT0+aXMoZCxTUUwpfHxpcyhkLENvbHVtbik/W3MsZF06W3MsbmV3IFBhcmFtKGQsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc11bc10pXSk7aWYoMD09PWQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWVzIHRvIHNldCIpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZCl9ZnVuY3Rpb24gZ2V0VGFibGVMaWtlTmFtZShlKXtyZXR1cm4gaXMoZSxTdWJxdWVyeSk/ZS5fLmFsaWFzOmlzKGUsVmlldyk/ZVt3dV0ubmFtZTppcyhlLFNRTCk/dm9pZCAwOmVbVGFibGUuU3ltYm9sLklzQWxpYXNdP2VbVGFibGUuU3ltYm9sLk5hbWVdOmVbVGFibGUuU3ltYm9sLkJhc2VOYW1lXX1mdW5jdGlvbiBnZXRDb2x1bW5OYW1lQW5kQ29uZmlnKGUscyl7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wP2U6IiIsY29uZmlnOiJvYmplY3QiPT10eXBlb2YgZT9lOnN9fUNvbHVtbi5wcm90b3R5cGUuZ2V0U1FMPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX0sVGFibGUucHJvdG90eXBlLmdldFNRTD1mdW5jdGlvbigpe3JldHVybiBuZXcgU1FMKFt0aGlzXSl9LFN1YnF1ZXJ5LnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFNRTChbdGhpc10pfTtjb25zdCB6dT0idW5kZWZpbmVkIj09dHlwZW9mIFRleHREZWNvZGVyP251bGw6bmV3IFRleHREZWNvZGVyLEl1PVN5bWJvbC5mb3IoImRyaXp6bGU6UGdJbmxpbmVGb3JlaWduS2V5cyIpLEN1PVN5bWJvbC5mb3IoImRyaXp6bGU6RW5hYmxlUkxTIik7Y2xhc3MgUGdUYWJsZSBleHRlbmRzIFRhYmxle3N0YXRpY1t1dV09IlBnVGFibGUiO3N0YXRpYyBTeW1ib2w9T2JqZWN0LmFzc2lnbih7fSxUYWJsZS5TeW1ib2wse0lubGluZUZvcmVpZ25LZXlzOkl1LEVuYWJsZVJMUzpDdX0pO1tJdV09W107W0N1XT0hMTtbVGFibGUuU3ltYm9sLkV4dHJhQ29uZmlnQnVpbGRlcl09dm9pZCAwO1tUYWJsZS5TeW1ib2wuRXh0cmFDb25maWdDb2x1bW5zXT17fX1sZXQgVHU9Y2xhc3N7c3RhdGljW3V1XT0iUGdQcmltYXJ5S2V5QnVpbGRlciI7Y29sdW1ucztuYW1lO2NvbnN0cnVjdG9yKGUscyl7dGhpcy5jb2x1bW5zPWUsdGhpcy5uYW1lPXN9YnVpbGQoZSl7cmV0dXJuIG5ldyBSdShlLHRoaXMuY29sdW1ucyx0aGlzLm5hbWUpfX0sUnU9Y2xhc3N7Y29uc3RydWN0b3IoZSxzLGQpe3RoaXMudGFibGU9ZSx0aGlzLmNvbHVtbnM9cyx0aGlzLm5hbWU9ZH1zdGF0aWNbdXVdPSJQZ1ByaW1hcnlLZXkiO2NvbHVtbnM7bmFtZTtnZXROYW1lKCl7cmV0dXJuIHRoaXMubmFtZT8/YCR7dGhpcy50YWJsZVtQZ1RhYmxlLlN5bWJvbC5OYW1lXX1fJHt0aGlzLmNvbHVtbnMubWFwKGU9PmUubmFtZSkuam9pbigiXyIpfV9wa2B9fTtmdW5jdGlvbiBiaW5kSWZQYXJhbShlLHMpe3JldHVybiFmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYibWFwVG9Ecml2ZXJWYWx1ZSJpbiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5tYXBUb0RyaXZlclZhbHVlfShzKXx8aXNTUUxXcmFwcGVyKGUpfHxpcyhlLFBhcmFtKXx8aXMoZSxQbGFjZWhvbGRlcil8fGlzKGUsQ29sdW1uKXx8aXMoZSxUYWJsZSl8fGlzKGUsVmlldyk/ZTpuZXcgUGFyYW0oZSxzKX1jb25zdCBlcT0oZSxzKT0+c3FsYCR7ZX0gPSAke2JpbmRJZlBhcmFtKHMsZSl9YCxuZT0oZSxzKT0+c3FsYCR7ZX0gPD4gJHtiaW5kSWZQYXJhbShzLGUpfWA7ZnVuY3Rpb24gYW5kKC4uLmUpe2NvbnN0IHM9ZS5maWx0ZXIoZT0+dm9pZCAwIT09ZSk7aWYoMCE9PXMubGVuZ3RoKXJldHVybiAxPT09cy5sZW5ndGg/bmV3IFNRTChzKTpuZXcgU1FMKFtuZXcgU3RyaW5nQ2h1bmsoIigiKSxzcWwuam9pbihzLG5ldyBTdHJpbmdDaHVuaygiIGFuZCAiKSksbmV3IFN0cmluZ0NodW5rKCIpIildKX1mdW5jdGlvbiBvciguLi5lKXtjb25zdCBzPWUuZmlsdGVyKGU9PnZvaWQgMCE9PWUpO2lmKDAhPT1zLmxlbmd0aClyZXR1cm4gMT09PXMubGVuZ3RoP25ldyBTUUwocyk6bmV3IFNRTChbbmV3IFN0cmluZ0NodW5rKCIoIiksc3FsLmpvaW4ocyxuZXcgU3RyaW5nQ2h1bmsoIiBvciAiKSksbmV3IFN0cmluZ0NodW5rKCIpIildKX1mdW5jdGlvbiBub3QoZSl7cmV0dXJuIHNxbGBub3QgJHtlfWB9Y29uc3QgZ3Q9KGUscyk9PnNxbGAke2V9ID4gJHtiaW5kSWZQYXJhbShzLGUpfWAsZ3RlPShlLHMpPT5zcWxgJHtlfSA+PSAke2JpbmRJZlBhcmFtKHMsZSl9YCxsdD0oZSxzKT0+c3FsYCR7ZX0gPCAke2JpbmRJZlBhcmFtKHMsZSl9YCxsdGU9KGUscyk9PnNxbGAke2V9IDw9ICR7YmluZElmUGFyYW0ocyxlKX1gO2Z1bmN0aW9uIGluQXJyYXkoZSxzKXtyZXR1cm4gQXJyYXkuaXNBcnJheShzKT8wPT09cy5sZW5ndGg/c3FsYGZhbHNlYDpzcWxgJHtlfSBpbiAke3MubWFwKHM9PmJpbmRJZlBhcmFtKHMsZSkpfWA6c3FsYCR7ZX0gaW4gJHtiaW5kSWZQYXJhbShzLGUpfWB9ZnVuY3Rpb24gbm90SW5BcnJheShlLHMpe3JldHVybiBBcnJheS5pc0FycmF5KHMpPzA9PT1zLmxlbmd0aD9zcWxgdHJ1ZWA6c3FsYCR7ZX0gbm90IGluICR7cy5tYXAocz0+YmluZElmUGFyYW0ocyxlKSl9YDpzcWxgJHtlfSBub3QgaW4gJHtiaW5kSWZQYXJhbShzLGUpfWB9ZnVuY3Rpb24gaXNOdWxsJDIoZSl7cmV0dXJuIHNxbGAke2V9IGlzIG51bGxgfWZ1bmN0aW9uIGlzTm90TnVsbChlKXtyZXR1cm4gc3FsYCR7ZX0gaXMgbm90IG51bGxgfWZ1bmN0aW9uIGV4aXN0cyhlKXtyZXR1cm4gc3FsYGV4aXN0cyAke2V9YH1mdW5jdGlvbiBub3RFeGlzdHMoZSl7cmV0dXJuIHNxbGBub3QgZXhpc3RzICR7ZX1gfWZ1bmN0aW9uIGJldHdlZW4oZSxzLGQpe3JldHVybiBzcWxgJHtlfSBiZXR3ZWVuICR7YmluZElmUGFyYW0ocyxlKX0gYW5kICR7YmluZElmUGFyYW0oZCxlKX1gfWZ1bmN0aW9uIG5vdEJldHdlZW4oZSxzLGQpe3JldHVybiBzcWxgJHtlfSBub3QgYmV0d2VlbiAke2JpbmRJZlBhcmFtKHMsZSl9IGFuZCAke2JpbmRJZlBhcmFtKGQsZSl9YH1mdW5jdGlvbiBsaWtlKGUscyl7cmV0dXJuIHNxbGAke2V9IGxpa2UgJHtzfWB9ZnVuY3Rpb24gbm90TGlrZShlLHMpe3JldHVybiBzcWxgJHtlfSBub3QgbGlrZSAke3N9YH1mdW5jdGlvbiBpbGlrZShlLHMpe3JldHVybiBzcWxgJHtlfSBpbGlrZSAke3N9YH1mdW5jdGlvbiBub3RJbGlrZShlLHMpe3JldHVybiBzcWxgJHtlfSBub3QgaWxpa2UgJHtzfWB9ZnVuY3Rpb24gYXNjKGUpe3JldHVybiBzcWxgJHtlfSBhc2NgfWZ1bmN0aW9uIGRlc2MoZSl7cmV0dXJuIHNxbGAke2V9IGRlc2NgfWNsYXNzIFJlbGF0aW9ue2NvbnN0cnVjdG9yKGUscyxkKXt0aGlzLnNvdXJjZVRhYmxlPWUsdGhpcy5yZWZlcmVuY2VkVGFibGU9cyx0aGlzLnJlbGF0aW9uTmFtZT1kLHRoaXMucmVmZXJlbmNlZFRhYmxlTmFtZT1zW1RhYmxlLlN5bWJvbC5OYW1lXX1zdGF0aWNbdXVdPSJSZWxhdGlvbiI7cmVmZXJlbmNlZFRhYmxlTmFtZTtmaWVsZE5hbWV9Y2xhc3MgUmVsYXRpb25ze2NvbnN0cnVjdG9yKGUscyl7dGhpcy50YWJsZT1lLHRoaXMuY29uZmlnPXN9c3RhdGljW3V1XT0iUmVsYXRpb25zIn1jbGFzcyBPbmUgZXh0ZW5kcyBSZWxhdGlvbntjb25zdHJ1Y3RvcihlLHMsZCxtKXtzdXBlcihlLHMsZD8ucmVsYXRpb25OYW1lKSx0aGlzLmNvbmZpZz1kLHRoaXMuaXNOdWxsYWJsZT1tfXN0YXRpY1t1dV09Ik9uZSI7d2l0aEZpZWxkTmFtZShlKXtjb25zdCBzPW5ldyBPbmUodGhpcy5zb3VyY2VUYWJsZSx0aGlzLnJlZmVyZW5jZWRUYWJsZSx0aGlzLmNvbmZpZyx0aGlzLmlzTnVsbGFibGUpO3JldHVybiBzLmZpZWxkTmFtZT1lLHN9fWNsYXNzIE1hbnkgZXh0ZW5kcyBSZWxhdGlvbntjb25zdHJ1Y3RvcihlLHMsZCl7c3VwZXIoZSxzLGQ/LnJlbGF0aW9uTmFtZSksdGhpcy5jb25maWc9ZH1zdGF0aWNbdXVdPSJNYW55Ijt3aXRoRmllbGROYW1lKGUpe2NvbnN0IHM9bmV3IE1hbnkodGhpcy5zb3VyY2VUYWJsZSx0aGlzLnJlZmVyZW5jZWRUYWJsZSx0aGlzLmNvbmZpZyk7cmV0dXJuIHMuZmllbGROYW1lPWUsc319ZnVuY3Rpb24gcmVsYXRpb25zKGUscyl7cmV0dXJuIG5ldyBSZWxhdGlvbnMoZSxlPT5PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocyhlKSkubWFwKChbZSxzXSk9PltlLHMud2l0aEZpZWxkTmFtZShlKV0pKSl9ZnVuY3Rpb24gY3JlYXRlT25lKGUpe3JldHVybiBmdW5jdGlvbihzLGQpe3JldHVybiBuZXcgT25lKGUscyxkLGQ/LmZpZWxkcy5yZWR1Y2UoKGUscyk9PmUmJnMubm90TnVsbCwhMCk/PyExKX19ZnVuY3Rpb24gY3JlYXRlTWFueShlKXtyZXR1cm4gZnVuY3Rpb24ocyxkKXtyZXR1cm4gbmV3IE1hbnkoZSxzLGQpfX1mdW5jdGlvbiBub3JtYWxpemVSZWxhdGlvbihlLHMsZCl7aWYoaXMoZCxPbmUpJiZkLmNvbmZpZylyZXR1cm57ZmllbGRzOmQuY29uZmlnLmZpZWxkcyxyZWZlcmVuY2VzOmQuY29uZmlnLnJlZmVyZW5jZXN9O2NvbnN0IG09c1tnZXRUYWJsZVVuaXF1ZU5hbWUoZC5yZWZlcmVuY2VkVGFibGUpXTtpZighbSl0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICIke2QucmVmZXJlbmNlZFRhYmxlW1RhYmxlLlN5bWJvbC5OYW1lXX0iIG5vdCBmb3VuZCBpbiBzY2hlbWFgKTtjb25zdCBoPWVbbV07aWYoIWgpdGhyb3cgbmV3IEVycm9yKGBUYWJsZSAiJHttfSIgbm90IGZvdW5kIGluIHNjaGVtYWApO2NvbnN0IGc9ZC5zb3VyY2VUYWJsZSx4PXNbZ2V0VGFibGVVbmlxdWVOYW1lKGcpXTtpZigheCl0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICIke2dbVGFibGUuU3ltYm9sLk5hbWVdfSIgbm90IGZvdW5kIGluIHNjaGVtYWApO2NvbnN0ICQ9W107Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyhoLnJlbGF0aW9ucykpKGQucmVsYXRpb25OYW1lJiZkIT09ZSYmZS5yZWxhdGlvbk5hbWU9PT1kLnJlbGF0aW9uTmFtZXx8IWQucmVsYXRpb25OYW1lJiZlLnJlZmVyZW5jZWRUYWJsZT09PWQuc291cmNlVGFibGUpJiYkLnB1c2goZSk7aWYoJC5sZW5ndGg+MSl0aHJvdyBkLnJlbGF0aW9uTmFtZT9uZXcgRXJyb3IoYFRoZXJlIGFyZSBtdWx0aXBsZSByZWxhdGlvbnMgd2l0aCBuYW1lICIke2QucmVsYXRpb25OYW1lfSIgaW4gdGFibGUgIiR7bX0iYCk6bmV3IEVycm9yKGBUaGVyZSBhcmUgbXVsdGlwbGUgcmVsYXRpb25zIGJldHdlZW4gIiR7bX0iIGFuZCAiJHtkLnNvdXJjZVRhYmxlW1RhYmxlLlN5bWJvbC5OYW1lXX0iLiBQbGVhc2Ugc3BlY2lmeSByZWxhdGlvbiBuYW1lYCk7aWYoJFswXSYmaXMoJFswXSxPbmUpJiYkWzBdLmNvbmZpZylyZXR1cm57ZmllbGRzOiRbMF0uY29uZmlnLnJlZmVyZW5jZXMscmVmZXJlbmNlczokWzBdLmNvbmZpZy5maWVsZHN9O3Rocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgbm90IGVub3VnaCBpbmZvcm1hdGlvbiB0byBpbmZlciByZWxhdGlvbiAiJHt4fS4ke2QuZmllbGROYW1lfSJgKX1mdW5jdGlvbiBjcmVhdGVUYWJsZVJlbGF0aW9uc0hlbHBlcnMoZSl7cmV0dXJue29uZTpjcmVhdGVPbmUoZSksbWFueTpjcmVhdGVNYW55KGUpfX1mdW5jdGlvbiBtYXBSZWxhdGlvbmFsUm93KGUscyxkLG0saD1lPT5lKXtjb25zdCBnPXt9O2Zvcihjb25zdFt4LCRdb2YgbS5lbnRyaWVzKCkpaWYoJC5pc0pzb24pe2NvbnN0IG09cy5yZWxhdGlvbnNbJC50c0tleV0sUz1kW3hdLGo9InN0cmluZyI9PXR5cGVvZiBTP0pTT04ucGFyc2UoUyk6UztnWyQudHNLZXldPWlzKG0sT25lKT9qJiZtYXBSZWxhdGlvbmFsUm93KGUsZVskLnJlbGF0aW9uVGFibGVUc0tleV0saiwkLnNlbGVjdGlvbixoKTpqLm1hcChzPT5tYXBSZWxhdGlvbmFsUm93KGUsZVskLnJlbGF0aW9uVGFibGVUc0tleV0scywkLnNlbGVjdGlvbixoKSl9ZWxzZXtjb25zdCBlPWgoZFt4XSkscz0kLmZpZWxkO2xldCBtO209aXMocyxDb2x1bW4pP3M6aXMocyxTUUwpP3MuZGVjb2RlcjpzLnNxbC5kZWNvZGVyLGdbJC50c0tleV09bnVsbD09PWU/bnVsbDptLm1hcEZyb21Ecml2ZXJWYWx1ZShlKX1yZXR1cm4gZ31jbGFzcyBDb2x1bW5BbGlhc1Byb3h5SGFuZGxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnRhYmxlPWV9c3RhdGljW3V1XT0iQ29sdW1uQWxpYXNQcm94eUhhbmRsZXIiO2dldChlLHMpe3JldHVybiJ0YWJsZSI9PT1zP3RoaXMudGFibGU6ZVtzXX19Y2xhc3MgVGFibGVBbGlhc1Byb3h5SGFuZGxlcntjb25zdHJ1Y3RvcihlLHMpe3RoaXMuYWxpYXM9ZSx0aGlzLnJlcGxhY2VPcmlnaW5hbE5hbWU9c31zdGF0aWNbdXVdPSJUYWJsZUFsaWFzUHJveHlIYW5kbGVyIjtnZXQoZSxzKXtpZihzPT09VGFibGUuU3ltYm9sLklzQWxpYXMpcmV0dXJuITA7aWYocz09PVRhYmxlLlN5bWJvbC5OYW1lKXJldHVybiB0aGlzLmFsaWFzO2lmKHRoaXMucmVwbGFjZU9yaWdpbmFsTmFtZSYmcz09PVRhYmxlLlN5bWJvbC5PcmlnaW5hbE5hbWUpcmV0dXJuIHRoaXMuYWxpYXM7aWYocz09PXd1KXJldHVybnsuLi5lW3d1XSxuYW1lOnRoaXMuYWxpYXMsaXNBbGlhczohMH07aWYocz09PVRhYmxlLlN5bWJvbC5Db2x1bW5zKXtjb25zdCBzPWVbVGFibGUuU3ltYm9sLkNvbHVtbnNdO2lmKCFzKXJldHVybiBzO2NvbnN0IGQ9e307cmV0dXJuIE9iamVjdC5rZXlzKHMpLm1hcChtPT57ZFttXT1uZXcgUHJveHkoc1ttXSxuZXcgQ29sdW1uQWxpYXNQcm94eUhhbmRsZXIobmV3IFByb3h5KGUsdGhpcykpKX0pLGR9Y29uc3QgZD1lW3NdO3JldHVybiBpcyhkLENvbHVtbik/bmV3IFByb3h5KGQsbmV3IENvbHVtbkFsaWFzUHJveHlIYW5kbGVyKG5ldyBQcm94eShlLHRoaXMpKSk6ZH19ZnVuY3Rpb24gYWxpYXNlZFRhYmxlKGUscyl7cmV0dXJuIG5ldyBQcm94eShlLG5ldyBUYWJsZUFsaWFzUHJveHlIYW5kbGVyKHMsITEpKX1mdW5jdGlvbiBhbGlhc2VkVGFibGVDb2x1bW4oZSxzKXtyZXR1cm4gbmV3IFByb3h5KGUsbmV3IENvbHVtbkFsaWFzUHJveHlIYW5kbGVyKG5ldyBQcm94eShlLnRhYmxlLG5ldyBUYWJsZUFsaWFzUHJveHlIYW5kbGVyKHMsITEpKSkpfWZ1bmN0aW9uIG1hcENvbHVtbnNJbkFsaWFzZWRTUUxUb0FsaWFzKGUscyl7cmV0dXJuIG5ldyBTUUwuQWxpYXNlZChtYXBDb2x1bW5zSW5TUUxUb0FsaWFzKGUuc3FsLHMpLGUuZmllbGRBbGlhcyl9ZnVuY3Rpb24gbWFwQ29sdW1uc0luU1FMVG9BbGlhcyhlLHMpe3JldHVybiBzcWwuam9pbihlLnF1ZXJ5Q2h1bmtzLm1hcChlPT5pcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUscyk6aXMoZSxTUUwpP21hcENvbHVtbnNJblNRTFRvQWxpYXMoZSxzKTppcyhlLFNRTC5BbGlhc2VkKT9tYXBDb2x1bW5zSW5BbGlhc2VkU1FMVG9BbGlhcyhlLHMpOmUpKX1jbGFzcyBTZWxlY3Rpb25Qcm94eUhhbmRsZXJ7c3RhdGljW3V1XT0iU2VsZWN0aW9uUHJveHlIYW5kbGVyIjtjb25maWc7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25maWc9ey4uLmV9fWdldChlLHMpe2lmKCJfIj09PXMpcmV0dXJuey4uLmUuXyxzZWxlY3RlZEZpZWxkczpuZXcgUHJveHkoZS5fLnNlbGVjdGVkRmllbGRzLHRoaXMpfTtpZihzPT09d3UpcmV0dXJuey4uLmVbd3VdLHNlbGVjdGVkRmllbGRzOm5ldyBQcm94eShlW3d1XS5zZWxlY3RlZEZpZWxkcyx0aGlzKX07aWYoInN5bWJvbCI9PXR5cGVvZiBzKXJldHVybiBlW3NdO2NvbnN0IGQ9KGlzKGUsU3VicXVlcnkpP2UuXy5zZWxlY3RlZEZpZWxkczppcyhlLFZpZXcpP2Vbd3VdLnNlbGVjdGVkRmllbGRzOmUpW3NdO2lmKGlzKGQsU1FMLkFsaWFzZWQpKXtpZigic3FsIj09PXRoaXMuY29uZmlnLnNxbEFsaWFzZWRCZWhhdmlvciYmIWQuaXNTZWxlY3Rpb25GaWVsZClyZXR1cm4gZC5zcWw7Y29uc3QgZT1kLmNsb25lKCk7cmV0dXJuIGUuaXNTZWxlY3Rpb25GaWVsZD0hMCxlfWlmKGlzKGQsU1FMKSl7aWYoInNxbCI9PT10aGlzLmNvbmZpZy5zcWxCZWhhdmlvcilyZXR1cm4gZDt0aHJvdyBuZXcgRXJyb3IoYFlvdSB0cmllZCB0byByZWZlcmVuY2UgIiR7c30iIGZpZWxkIGZyb20gYSBzdWJxdWVyeSwgd2hpY2ggaXMgYSByYXcgU1FMIGZpZWxkLCBidXQgaXQgZG9lc24ndCBoYXZlIGFuIGFsaWFzIGRlY2xhcmVkLiBQbGVhc2UgYWRkIGFuIGFsaWFzIHRvIHRoZSBmaWVsZCB1c2luZyAiLmFzKCdhbGlhcycpIiBtZXRob2QuYCl9cmV0dXJuIGlzKGQsQ29sdW1uKT90aGlzLmNvbmZpZy5hbGlhcz9uZXcgUHJveHkoZCxuZXcgQ29sdW1uQWxpYXNQcm94eUhhbmRsZXIobmV3IFByb3h5KGQudGFibGUsbmV3IFRhYmxlQWxpYXNQcm94eUhhbmRsZXIodGhpcy5jb25maWcuYWxpYXMsdGhpcy5jb25maWcucmVwbGFjZU9yaWdpbmFsTmFtZT8/ITEpKSkpOmQ6Im9iamVjdCIhPXR5cGVvZiBkfHxudWxsPT09ZD9kOm5ldyBQcm94eShkLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIodGhpcy5jb25maWcpKX19Y2xhc3MgUXVlcnlQcm9taXNle3N0YXRpY1t1dV09IlF1ZXJ5UHJvbWlzZSI7W1N5bWJvbC50b1N0cmluZ1RhZ109IlF1ZXJ5UHJvbWlzZSI7Y2F0Y2goZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9ZmluYWxseShlKXtyZXR1cm4gdGhpcy50aGVuKHM9PihlPy4oKSxzKSxzPT57dGhyb3cgZT8uKCksc30pfXRoZW4oZSxzKXtyZXR1cm4gdGhpcy5leGVjdXRlKCkudGhlbihlLHMpfX1jbGFzcyBGb3JlaWduS2V5QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVGb3JlaWduS2V5QnVpbGRlciI7cmVmZXJlbmNlO19vblVwZGF0ZTtfb25EZWxldGU7Y29uc3RydWN0b3IoZSxzKXt0aGlzLnJlZmVyZW5jZT0oKT0+e2NvbnN0e25hbWU6cyxjb2x1bW5zOmQsZm9yZWlnbkNvbHVtbnM6bX09ZSgpO3JldHVybntuYW1lOnMsY29sdW1uczpkLGZvcmVpZ25UYWJsZTptWzBdLnRhYmxlLGZvcmVpZ25Db2x1bW5zOm19fSxzJiYodGhpcy5fb25VcGRhdGU9cy5vblVwZGF0ZSx0aGlzLl9vbkRlbGV0ZT1zLm9uRGVsZXRlKX1vblVwZGF0ZShlKXtyZXR1cm4gdGhpcy5fb25VcGRhdGU9ZSx0aGlzfW9uRGVsZXRlKGUpe3JldHVybiB0aGlzLl9vbkRlbGV0ZT1lLHRoaXN9YnVpbGQoZSl7cmV0dXJuIG5ldyBGb3JlaWduS2V5KGUsdGhpcyl9fWNsYXNzIEZvcmVpZ25LZXl7Y29uc3RydWN0b3IoZSxzKXt0aGlzLnRhYmxlPWUsdGhpcy5yZWZlcmVuY2U9cy5yZWZlcmVuY2UsdGhpcy5vblVwZGF0ZT1zLl9vblVwZGF0ZSx0aGlzLm9uRGVsZXRlPXMuX29uRGVsZXRlfXN0YXRpY1t1dV09IlNRTGl0ZUZvcmVpZ25LZXkiO3JlZmVyZW5jZTtvblVwZGF0ZTtvbkRlbGV0ZTtnZXROYW1lKCl7Y29uc3R7bmFtZTplLGNvbHVtbnM6cyxmb3JlaWduQ29sdW1uczpkfT10aGlzLnJlZmVyZW5jZSgpLG09cy5tYXAoZT0+ZS5uYW1lKSxoPWQubWFwKGU9PmUubmFtZSksZz1bdGhpcy50YWJsZVtkdV0sLi4ubSxkWzBdLnRhYmxlW2R1XSwuLi5oXTtyZXR1cm4gZT8/YCR7Zy5qb2luKCJfIil9X2ZrYH19Y2xhc3MgU1FMaXRlQ29sdW1uQnVpbGRlciBleHRlbmRzIENvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlQ29sdW1uQnVpbGRlciI7Zm9yZWlnbktleUNvbmZpZ3M9W107cmVmZXJlbmNlcyhlLHM9e30pe3JldHVybiB0aGlzLmZvcmVpZ25LZXlDb25maWdzLnB1c2goe3JlZjplLGFjdGlvbnM6c30pLHRoaXN9dW5pcXVlKGUpe3JldHVybiB0aGlzLmNvbmZpZy5pc1VuaXF1ZT0hMCx0aGlzLmNvbmZpZy51bmlxdWVOYW1lPWUsdGhpc31nZW5lcmF0ZWRBbHdheXNBcyhlLHMpe3JldHVybiB0aGlzLmNvbmZpZy5nZW5lcmF0ZWQ9e2FzOmUsdHlwZToiYWx3YXlzIixtb2RlOnM/Lm1vZGU/PyJ2aXJ0dWFsIn0sdGhpc31idWlsZEZvcmVpZ25LZXlzKGUscyl7cmV0dXJuIHRoaXMuZm9yZWlnbktleUNvbmZpZ3MubWFwKCh7cmVmOmQsYWN0aW9uczptfSk9PigoZCxtKT0+e2NvbnN0IGg9bmV3IEZvcmVpZ25LZXlCdWlsZGVyKCgpPT57Y29uc3Qgcz1kKCk7cmV0dXJue2NvbHVtbnM6W2VdLGZvcmVpZ25Db2x1bW5zOltzXX19KTtyZXR1cm4gbS5vblVwZGF0ZSYmaC5vblVwZGF0ZShtLm9uVXBkYXRlKSxtLm9uRGVsZXRlJiZoLm9uRGVsZXRlKG0ub25EZWxldGUpLGguYnVpbGQocyl9KShkLG0pKX19Y2xhc3MgU1FMaXRlQ29sdW1uIGV4dGVuZHMgQ29sdW1ue2NvbnN0cnVjdG9yKGUscyl7cy51bmlxdWVOYW1lfHwocy51bmlxdWVOYW1lPWZ1bmN0aW9uKGUscyl7cmV0dXJuYCR7ZVtkdV19XyR7cy5qb2luKCJfIil9X3VuaXF1ZWB9KGUsW3MubmFtZV0pKSxzdXBlcihlLHMpLHRoaXMudGFibGU9ZX1zdGF0aWNbdXVdPSJTUUxpdGVDb2x1bW4ifWNsYXNzIFNRTGl0ZUJpZ0ludEJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZUJpZ0ludEJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJpZ2ludCIsIlNRTGl0ZUJpZ0ludCIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlQmlnSW50KGUsdGhpcy5jb25maWcpfX1jbGFzcyBTUUxpdGVCaWdJbnQgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmlnSW50IjtnZXRTUUxUeXBlKCl7cmV0dXJuImJsb2IifW1hcEZyb21Ecml2ZXJWYWx1ZShzKXtpZih2b2lkIDAhPT1lJiZlLmZyb20pe2NvbnN0IGQ9ZS5pc0J1ZmZlcihzKT9zOnMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9lLmZyb20ocyk6cy5idWZmZXI/ZS5mcm9tKHMuYnVmZmVyLHMuYnl0ZU9mZnNldCxzLmJ5dGVMZW5ndGgpOmUuZnJvbShzKTtyZXR1cm4gQmlnSW50KGQudG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEJpZ0ludCh6dS5kZWNvZGUocykpfW1hcFRvRHJpdmVyVmFsdWUocyl7cmV0dXJuIGUuZnJvbShzLnRvU3RyaW5nKCkpfX1jbGFzcyBTUUxpdGVCbG9iSnNvbkJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZUJsb2JKc29uQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwianNvbiIsIlNRTGl0ZUJsb2JKc29uIil9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVCbG9iSnNvbihlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlQmxvYkpzb24gZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmxvYkpzb24iO2dldFNRTFR5cGUoKXtyZXR1cm4iYmxvYiJ9bWFwRnJvbURyaXZlclZhbHVlKHMpe2lmKHZvaWQgMCE9PWUmJmUuZnJvbSl7Y29uc3QgZD1lLmlzQnVmZmVyKHMpP3M6cyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2UuZnJvbShzKTpzLmJ1ZmZlcj9lLmZyb20ocy5idWZmZXIscy5ieXRlT2Zmc2V0LHMuYnl0ZUxlbmd0aCk6ZS5mcm9tKHMpO3JldHVybiBKU09OLnBhcnNlKGQudG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEpTT04ucGFyc2UoenUuZGVjb2RlKHMpKX1tYXBUb0RyaXZlclZhbHVlKHMpe3JldHVybiBlLmZyb20oSlNPTi5zdHJpbmdpZnkocykpfX1jbGFzcyBTUUxpdGVCbG9iQnVmZmVyQnVpbGRlciBleHRlbmRzIFNRTGl0ZUNvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlQmxvYkJ1ZmZlckJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJ1ZmZlciIsIlNRTGl0ZUJsb2JCdWZmZXIiKX1idWlsZChlKXtyZXR1cm4gbmV3IFNRTGl0ZUJsb2JCdWZmZXIoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZUJsb2JCdWZmZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmxvYkJ1ZmZlciI7bWFwRnJvbURyaXZlclZhbHVlKHMpe3JldHVybiBlLmlzQnVmZmVyKHMpP3M6ZS5mcm9tKHMpfWdldFNRTFR5cGUoKXtyZXR1cm4iYmxvYiJ9fWZ1bmN0aW9uIGJsb2IoZSxzKXtjb25zdHtuYW1lOmQsY29uZmlnOm19PWdldENvbHVtbk5hbWVBbmRDb25maWcoZSxzKTtyZXR1cm4ianNvbiI9PT1tPy5tb2RlP25ldyBTUUxpdGVCbG9iSnNvbkJ1aWxkZXIoZCk6ImJpZ2ludCI9PT1tPy5tb2RlP25ldyBTUUxpdGVCaWdJbnRCdWlsZGVyKGQpOm5ldyBTUUxpdGVCbG9iQnVmZmVyQnVpbGRlcihkKX1jbGFzcyBTUUxpdGVDdXN0b21Db2x1bW5CdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVDdXN0b21Db2x1bW5CdWlsZGVyIjtjb25zdHJ1Y3RvcihlLHMsZCl7c3VwZXIoZSwiY3VzdG9tIiwiU1FMaXRlQ3VzdG9tQ29sdW1uIiksdGhpcy5jb25maWcuZmllbGRDb25maWc9cyx0aGlzLmNvbmZpZy5jdXN0b21UeXBlUGFyYW1zPWR9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVDdXN0b21Db2x1bW4oZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZUN1c3RvbUNvbHVtbiBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVDdXN0b21Db2x1bW4iO3NxbE5hbWU7bWFwVG87bWFwRnJvbTtjb25zdHJ1Y3RvcihlLHMpe3N1cGVyKGUscyksdGhpcy5zcWxOYW1lPXMuY3VzdG9tVHlwZVBhcmFtcy5kYXRhVHlwZShzLmZpZWxkQ29uZmlnKSx0aGlzLm1hcFRvPXMuY3VzdG9tVHlwZVBhcmFtcy50b0RyaXZlcix0aGlzLm1hcEZyb209cy5jdXN0b21UeXBlUGFyYW1zLmZyb21Ecml2ZXJ9Z2V0U1FMVHlwZSgpe3JldHVybiB0aGlzLnNxbE5hbWV9bWFwRnJvbURyaXZlclZhbHVlKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm1hcEZyb20/dGhpcy5tYXBGcm9tKGUpOmV9bWFwVG9Ecml2ZXJWYWx1ZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5tYXBUbz90aGlzLm1hcFRvKGUpOmV9fWZ1bmN0aW9uIGN1c3RvbVR5cGUoZSl7cmV0dXJuKHMsZCk9Pntjb25zdHtuYW1lOm0sY29uZmlnOmh9PWdldENvbHVtbk5hbWVBbmRDb25maWcocyxkKTtyZXR1cm4gbmV3IFNRTGl0ZUN1c3RvbUNvbHVtbkJ1aWxkZXIobSxoLGUpfX1jbGFzcyBTUUxpdGVCYXNlSW50ZWdlckJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZUJhc2VJbnRlZ2VyQnVpbGRlciI7Y29uc3RydWN0b3IoZSxzLGQpe3N1cGVyKGUscyxkKSx0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSExfXByaW1hcnlLZXkoZSl7cmV0dXJuIGU/LmF1dG9JbmNyZW1lbnQmJih0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSEwKSx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHN1cGVyLnByaW1hcnlLZXkoKX19Y2xhc3MgU1FMaXRlQmFzZUludGVnZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmFzZUludGVnZXIiO2F1dG9JbmNyZW1lbnQ9dGhpcy5jb25maWcuYXV0b0luY3JlbWVudDtnZXRTUUxUeXBlKCl7cmV0dXJuImludGVnZXIifX1jbGFzcyBTUUxpdGVJbnRlZ2VyQnVpbGRlciBleHRlbmRzIFNRTGl0ZUJhc2VJbnRlZ2VyQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVJbnRlZ2VyQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwibnVtYmVyIiwiU1FMaXRlSW50ZWdlciIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlSW50ZWdlcihlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlSW50ZWdlciBleHRlbmRzIFNRTGl0ZUJhc2VJbnRlZ2Vye3N0YXRpY1t1dV09IlNRTGl0ZUludGVnZXIifWNsYXNzIFNRTGl0ZVRpbWVzdGFtcEJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVCYXNlSW50ZWdlckJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlVGltZXN0YW1wQnVpbGRlciI7Y29uc3RydWN0b3IoZSxzKXtzdXBlcihlLCJkYXRlIiwiU1FMaXRlVGltZXN0YW1wIiksdGhpcy5jb25maWcubW9kZT1zfWRlZmF1bHROb3coKXtyZXR1cm4gdGhpcy5kZWZhdWx0KHNxbGAoY2FzdCgoanVsaWFuZGF5KCdub3cnKSAtIDI0NDA1ODcuNSkqODY0MDAwMDAgYXMgaW50ZWdlcikpYCl9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVUaW1lc3RhbXAoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVRpbWVzdGFtcCBleHRlbmRzIFNRTGl0ZUJhc2VJbnRlZ2Vye3N0YXRpY1t1dV09IlNRTGl0ZVRpbWVzdGFtcCI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4idGltZXN0YW1wIj09PXRoaXMuY29uZmlnLm1vZGU/bmV3IERhdGUoMWUzKmUpOm5ldyBEYXRlKGUpfW1hcFRvRHJpdmVyVmFsdWUoZSl7Y29uc3Qgcz1lLmdldFRpbWUoKTtyZXR1cm4idGltZXN0YW1wIj09PXRoaXMuY29uZmlnLm1vZGU/TWF0aC5mbG9vcihzLzFlMyk6c319Y2xhc3MgU1FMaXRlQm9vbGVhbkJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVCYXNlSW50ZWdlckJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlQm9vbGVhbkJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUscyl7c3VwZXIoZSwiYm9vbGVhbiIsIlNRTGl0ZUJvb2xlYW4iKSx0aGlzLmNvbmZpZy5tb2RlPXN9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVCb29sZWFuKGUsdGhpcy5jb25maWcpfX1jbGFzcyBTUUxpdGVCb29sZWFuIGV4dGVuZHMgU1FMaXRlQmFzZUludGVnZXJ7c3RhdGljW3V1XT0iU1FMaXRlQm9vbGVhbiI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4gMT09PU51bWJlcihlKX1tYXBUb0RyaXZlclZhbHVlKGUpe3JldHVybiBlPzE6MH19ZnVuY3Rpb24gaW50ZWdlcihlLHMpe2NvbnN0e25hbWU6ZCxjb25maWc6bX09Z2V0Q29sdW1uTmFtZUFuZENvbmZpZyhlLHMpO3JldHVybiJ0aW1lc3RhbXAiPT09bT8ubW9kZXx8InRpbWVzdGFtcF9tcyI9PT1tPy5tb2RlP25ldyBTUUxpdGVUaW1lc3RhbXBCdWlsZGVyKGQsbS5tb2RlKToiYm9vbGVhbiI9PT1tPy5tb2RlP25ldyBTUUxpdGVCb29sZWFuQnVpbGRlcihkLG0ubW9kZSk6bmV3IFNRTGl0ZUludGVnZXJCdWlsZGVyKGQpfWNsYXNzIFNRTGl0ZU51bWVyaWNCdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3RyaW5nIiwiU1FMaXRlTnVtZXJpYyIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlTnVtZXJpYyhlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlTnVtZXJpYyBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljIjttYXBGcm9tRHJpdmVyVmFsdWUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6U3RyaW5nKGUpfWdldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWNsYXNzIFNRTGl0ZU51bWVyaWNOdW1iZXJCdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljTnVtYmVyQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwibnVtYmVyIiwiU1FMaXRlTnVtZXJpY051bWJlciIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlTnVtZXJpY051bWJlcihlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlTnVtZXJpY051bWJlciBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljTnVtYmVyIjttYXBGcm9tRHJpdmVyVmFsdWUoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP2U6TnVtYmVyKGUpfW1hcFRvRHJpdmVyVmFsdWU9U3RyaW5nO2dldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWNsYXNzIFNRTGl0ZU51bWVyaWNCaWdJbnRCdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljQmlnSW50QnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYmlnaW50IiwiU1FMaXRlTnVtZXJpY0JpZ0ludCIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlTnVtZXJpY0JpZ0ludChlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlTnVtZXJpY0JpZ0ludCBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljQmlnSW50IjttYXBGcm9tRHJpdmVyVmFsdWU9QmlnSW50O21hcFRvRHJpdmVyVmFsdWU9U3RyaW5nO2dldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWZ1bmN0aW9uIG51bWVyaWMoZSxzKXtjb25zdHtuYW1lOmQsY29uZmlnOm19PWdldENvbHVtbk5hbWVBbmRDb25maWcoZSxzKSxoPW0/Lm1vZGU7cmV0dXJuIm51bWJlciI9PT1oP25ldyBTUUxpdGVOdW1lcmljTnVtYmVyQnVpbGRlcihkKToiYmlnaW50Ij09PWg/bmV3IFNRTGl0ZU51bWVyaWNCaWdJbnRCdWlsZGVyKGQpOm5ldyBTUUxpdGVOdW1lcmljQnVpbGRlcihkKX1jbGFzcyBTUUxpdGVSZWFsQnVpbGRlciBleHRlbmRzIFNRTGl0ZUNvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlUmVhbEJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm51bWJlciIsIlNRTGl0ZVJlYWwiKX1idWlsZChlKXtyZXR1cm4gbmV3IFNRTGl0ZVJlYWwoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVJlYWwgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlUmVhbCI7Z2V0U1FMVHlwZSgpe3JldHVybiJyZWFsIn19ZnVuY3Rpb24gcmVhbChlKXtyZXR1cm4gbmV3IFNRTGl0ZVJlYWxCdWlsZGVyKGU/PyIiKX1jbGFzcyBTUUxpdGVUZXh0QnVpbGRlciBleHRlbmRzIFNRTGl0ZUNvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlVGV4dEJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUscyl7c3VwZXIoZSwic3RyaW5nIiwiU1FMaXRlVGV4dCIpLHRoaXMuY29uZmlnLmVudW1WYWx1ZXM9cy5lbnVtLHRoaXMuY29uZmlnLmxlbmd0aD1zLmxlbmd0aH1idWlsZChlKXtyZXR1cm4gbmV3IFNRTGl0ZVRleHQoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVRleHQgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlVGV4dCI7ZW51bVZhbHVlcz10aGlzLmNvbmZpZy5lbnVtVmFsdWVzO2xlbmd0aD10aGlzLmNvbmZpZy5sZW5ndGg7Y29uc3RydWN0b3IoZSxzKXtzdXBlcihlLHMpfWdldFNRTFR5cGUoKXtyZXR1cm4idGV4dCIrKHRoaXMuY29uZmlnLmxlbmd0aD9gKCR7dGhpcy5jb25maWcubGVuZ3RofSlgOiIiKX19Y2xhc3MgU1FMaXRlVGV4dEpzb25CdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVUZXh0SnNvbkJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImpzb24iLCJTUUxpdGVUZXh0SnNvbiIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlVGV4dEpzb24oZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVRleHRKc29uIGV4dGVuZHMgU1FMaXRlQ29sdW1ue3N0YXRpY1t1dV09IlNRTGl0ZVRleHRKc29uIjtnZXRTUUxUeXBlKCl7cmV0dXJuInRleHQifW1hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4gSlNPTi5wYXJzZShlKX1tYXBUb0RyaXZlclZhbHVlKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKX19ZnVuY3Rpb24gdGV4dChlLHM9e30pe2NvbnN0e25hbWU6ZCxjb25maWc6bX09Z2V0Q29sdW1uTmFtZUFuZENvbmZpZyhlLHMpO3JldHVybiJqc29uIj09PW0ubW9kZT9uZXcgU1FMaXRlVGV4dEpzb25CdWlsZGVyKGQpOm5ldyBTUUxpdGVUZXh0QnVpbGRlcihkLG0pfWNvbnN0IEV1PVN5bWJvbC5mb3IoImRyaXp6bGU6U1FMaXRlSW5saW5lRm9yZWlnbktleXMiKTtjbGFzcyBTUUxpdGVUYWJsZSBleHRlbmRzIFRhYmxle3N0YXRpY1t1dV09IlNRTGl0ZVRhYmxlIjtzdGF0aWMgU3ltYm9sPU9iamVjdC5hc3NpZ24oe30sVGFibGUuU3ltYm9sLHtJbmxpbmVGb3JlaWduS2V5czpFdX0pO1tUYWJsZS5TeW1ib2wuQ29sdW1uc107W0V1XT1bXTtbVGFibGUuU3ltYm9sLkV4dHJhQ29uZmlnQnVpbGRlcl09dm9pZCAwfWZ1bmN0aW9uIHNxbGl0ZVRhYmxlQmFzZShlLHMsZCxtLGg9ZSl7Y29uc3QgZz1uZXcgU1FMaXRlVGFibGUoZSxtLGgpLHg9ImZ1bmN0aW9uIj09dHlwZW9mIHM/cyh7YmxvYjpibG9iLGN1c3RvbVR5cGU6Y3VzdG9tVHlwZSxpbnRlZ2VyOmludGVnZXIsbnVtZXJpYzpudW1lcmljLHJlYWw6cmVhbCx0ZXh0OnRleHR9KTpzLCQ9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHgpLm1hcCgoW2Usc10pPT57Y29uc3QgZD1zO2Quc2V0TmFtZShlKTtjb25zdCBtPWQuYnVpbGQoZyk7cmV0dXJuIGdbRXVdLnB1c2goLi4uZC5idWlsZEZvcmVpZ25LZXlzKG0sZykpLFtlLG1dfSkpLFM9T2JqZWN0LmFzc2lnbihnLCQpO3JldHVybiBTW1RhYmxlLlN5bWJvbC5Db2x1bW5zXT0kLFNbVGFibGUuU3ltYm9sLkV4dHJhQ29uZmlnQ29sdW1uc109JCxkJiYoU1tTUUxpdGVUYWJsZS5TeW1ib2wuRXh0cmFDb25maWdCdWlsZGVyXT1kKSxTfWNvbnN0IHNxbGl0ZVRhYmxlPShlLHMsZCk9PnNxbGl0ZVRhYmxlQmFzZShlLHMsZCk7Y2xhc3MgSW5kZXhCdWlsZGVyT257Y29uc3RydWN0b3IoZSxzKXt0aGlzLm5hbWU9ZSx0aGlzLnVuaXF1ZT1zfXN0YXRpY1t1dV09IlNRTGl0ZUluZGV4QnVpbGRlck9uIjtvbiguLi5lKXtyZXR1cm4gbmV3IEluZGV4QnVpbGRlcih0aGlzLm5hbWUsZSx0aGlzLnVuaXF1ZSl9fWNsYXNzIEluZGV4QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVJbmRleEJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3RvcihlLHMsZCl7dGhpcy5jb25maWc9e25hbWU6ZSxjb2x1bW5zOnMsdW5pcXVlOmQsd2hlcmU6dm9pZCAwfX13aGVyZShlKXtyZXR1cm4gdGhpcy5jb25maWcud2hlcmU9ZSx0aGlzfWJ1aWxkKGUpe3JldHVybiBuZXcgSW5kZXgodGhpcy5jb25maWcsZSl9fWNsYXNzIEluZGV4e3N0YXRpY1t1dV09IlNRTGl0ZUluZGV4Ijtjb25maWc7Y29uc3RydWN0b3IoZSxzKXt0aGlzLmNvbmZpZz17Li4uZSx0YWJsZTpzfX19ZnVuY3Rpb24gaW5kZXgoZSl7cmV0dXJuIG5ldyBJbmRleEJ1aWxkZXJPbihlLCExKX1mdW5jdGlvbiB1bmlxdWVJbmRleChlKXtyZXR1cm4gbmV3IEluZGV4QnVpbGRlck9uKGUsITApfWZ1bmN0aW9uIHByaW1hcnlLZXkoLi4uZSl7cmV0dXJuIGVbMF0uY29sdW1ucz9uZXcgUHJpbWFyeUtleUJ1aWxkZXIoZVswXS5jb2x1bW5zLGVbMF0ubmFtZSk6bmV3IFByaW1hcnlLZXlCdWlsZGVyKGUpfWNsYXNzIFByaW1hcnlLZXlCdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZVByaW1hcnlLZXlCdWlsZGVyIjtjb2x1bW5zO25hbWU7Y29uc3RydWN0b3IoZSxzKXt0aGlzLmNvbHVtbnM9ZSx0aGlzLm5hbWU9c31idWlsZChlKXtyZXR1cm4gbmV3IFByaW1hcnlLZXkoZSx0aGlzLmNvbHVtbnMsdGhpcy5uYW1lKX19Y2xhc3MgUHJpbWFyeUtleXtjb25zdHJ1Y3RvcihlLHMsZCl7dGhpcy50YWJsZT1lLHRoaXMuY29sdW1ucz1zLHRoaXMubmFtZT1kfXN0YXRpY1t1dV09IlNRTGl0ZVByaW1hcnlLZXkiO2NvbHVtbnM7bmFtZTtnZXROYW1lKCl7cmV0dXJuIHRoaXMubmFtZT8/YCR7dGhpcy50YWJsZVtTUUxpdGVUYWJsZS5TeW1ib2wuTmFtZV19XyR7dGhpcy5jb2x1bW5zLm1hcChlPT5lLm5hbWUpLmpvaW4oIl8iKX1fcGtgfX1mdW5jdGlvbiBleHRyYWN0VXNlZFRhYmxlKGUpe3JldHVybiBpcyhlLFNRTGl0ZVRhYmxlKT9bYCR7ZVtUYWJsZS5TeW1ib2wuQmFzZU5hbWVdfWBdOmlzKGUsU3VicXVlcnkpP2UuXy51c2VkVGFibGVzPz9bXTppcyhlLFNRTCk/ZS51c2VkVGFibGVzPz9bXTpbXX1jbGFzcyBTUUxpdGVEZWxldGVCYXNlIGV4dGVuZHMgUXVlcnlQcm9taXNle2NvbnN0cnVjdG9yKGUscyxkLG0pe3N1cGVyKCksdGhpcy50YWJsZT1lLHRoaXMuc2Vzc2lvbj1zLHRoaXMuZGlhbGVjdD1kLHRoaXMuY29uZmlnPXt0YWJsZTplLHdpdGhMaXN0Om19fXN0YXRpY1t1dV09IlNRTGl0ZURlbGV0ZSI7Y29uZmlnO3doZXJlKGUpe3JldHVybiB0aGlzLmNvbmZpZy53aGVyZT1lLHRoaXN9b3JkZXJCeSguLi5lKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZVswXSl7Y29uc3Qgcz1lWzBdKG5ldyBQcm94eSh0aGlzLmNvbmZpZy50YWJsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10sbmV3IFNlbGVjdGlvblByb3h5SGFuZGxlcih7c3FsQWxpYXNlZEJlaGF2aW9yOiJhbGlhcyIsc3FsQmVoYXZpb3I6InNxbCJ9KSkpLGQ9QXJyYXkuaXNBcnJheShzKT9zOltzXTt0aGlzLmNvbmZpZy5vcmRlckJ5PWR9ZWxzZXtjb25zdCBzPWU7dGhpcy5jb25maWcub3JkZXJCeT1zfXJldHVybiB0aGlzfWxpbWl0KGUpe3JldHVybiB0aGlzLmNvbmZpZy5saW1pdD1lLHRoaXN9cmV0dXJuaW5nKGU9dGhpcy50YWJsZVtTUUxpdGVUYWJsZS5TeW1ib2wuQ29sdW1uc10pe3JldHVybiB0aGlzLmNvbmZpZy5yZXR1cm5pbmc9b3JkZXJTZWxlY3RlZEZpZWxkcyhlKSx0aGlzfWdldFNRTCgpe3JldHVybiB0aGlzLmRpYWxlY3QuYnVpbGREZWxldGVRdWVyeSh0aGlzLmNvbmZpZyl9dG9TUUwoKXtjb25zdHt0eXBpbmdzOmUsLi4uc309dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSk7cmV0dXJuIHN9X3ByZXBhcmUoZT0hMCl7cmV0dXJuIHRoaXMuc2Vzc2lvbltlPyJwcmVwYXJlT25lVGltZVF1ZXJ5IjoicHJlcGFyZVF1ZXJ5Il0odGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSksdGhpcy5jb25maWcucmV0dXJuaW5nLHRoaXMuY29uZmlnLnJldHVybmluZz8iYWxsIjoicnVuIiwhMCx2b2lkIDAse3R5cGU6ImRlbGV0ZSIsdGFibGVzOmV4dHJhY3RVc2VkVGFibGUodGhpcy5jb25maWcudGFibGUpfSl9cHJlcGFyZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlKCExKX1ydW49ZT0+dGhpcy5fcHJlcGFyZSgpLnJ1bihlKTthbGw9ZT0+dGhpcy5fcHJlcGFyZSgpLmFsbChlKTtnZXQ9ZT0+dGhpcy5fcHJlcGFyZSgpLmdldChlKTt2YWx1ZXM9ZT0+dGhpcy5fcHJlcGFyZSgpLnZhbHVlcyhlKTthc3luYyBleGVjdXRlKGUpe3JldHVybiB0aGlzLl9wcmVwYXJlKCkuZXhlY3V0ZShlKX0kZHluYW1pYygpe3JldHVybiB0aGlzfX1mdW5jdGlvbiB0b1NuYWtlQ2FzZShlKXtyZXR1cm4oZS5yZXBsYWNlKC9bJ1x1MjAxOV0vZywiIikubWF0Y2goL1tcZGEtel0rfFtBLVpdKyg/IVthLXpdKXxbQS1aXVtcZGEtel0rL2cpPz9bXSkubWFwKGU9PmUudG9Mb3dlckNhc2UoKSkuam9pbigiXyIpfWZ1bmN0aW9uIHRvQ2FtZWxDYXNlKGUpe3JldHVybihlLnJlcGxhY2UoL1snXHUyMDE5XS9nLCIiKS5tYXRjaCgvW1xkYS16XSt8W0EtWl0rKD8hW2Etel0pfFtBLVpdW1xkYS16XSsvZyk/P1tdKS5yZWR1Y2UoKGUscyxkKT0+ZSsoMD09PWQ/cy50b0xvd2VyQ2FzZSgpOmAke3NbMF0udG9VcHBlckNhc2UoKX0ke3Muc2xpY2UoMSl9YCksIiIpfWZ1bmN0aW9uIG5vb3BDYXNlKGUpe3JldHVybiBlfWNsYXNzIENhc2luZ0NhY2hle3N0YXRpY1t1dV09IkNhc2luZ0NhY2hlIjtjYWNoZT17fTtjYWNoZWRUYWJsZXM9e307Y29udmVydDtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbnZlcnQ9InNuYWtlX2Nhc2UiPT09ZT90b1NuYWtlQ2FzZToiY2FtZWxDYXNlIj09PWU/dG9DYW1lbENhc2U6bm9vcENhc2V9Z2V0Q29sdW1uQ2FzaW5nKGUpe2lmKCFlLmtleUFzTmFtZSlyZXR1cm4gZS5uYW1lO2NvbnN0IHM9YCR7ZS50YWJsZVtUYWJsZS5TeW1ib2wuU2NoZW1hXT8/InB1YmxpYyJ9LiR7ZS50YWJsZVtUYWJsZS5TeW1ib2wuT3JpZ2luYWxOYW1lXX0uJHtlLm5hbWV9YDtyZXR1cm4gdGhpcy5jYWNoZVtzXXx8dGhpcy5jYWNoZVRhYmxlKGUudGFibGUpLHRoaXMuY2FjaGVbc119Y2FjaGVUYWJsZShlKXtjb25zdCBzPWAke2VbVGFibGUuU3ltYm9sLlNjaGVtYV0/PyJwdWJsaWMifS4ke2VbVGFibGUuU3ltYm9sLk9yaWdpbmFsTmFtZV19YDtpZighdGhpcy5jYWNoZWRUYWJsZXNbc10pe2Zvcihjb25zdCBkIG9mIE9iamVjdC52YWx1ZXMoZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10pKXtjb25zdCBlPWAke3N9LiR7ZC5uYW1lfWA7dGhpcy5jYWNoZVtlXT10aGlzLmNvbnZlcnQoZC5uYW1lKX10aGlzLmNhY2hlZFRhYmxlc1tzXT0hMH19Y2xlYXJDYWNoZSgpe3RoaXMuY2FjaGU9e30sdGhpcy5jYWNoZWRUYWJsZXM9e319fWNsYXNzIERyaXp6bGVFcnJvciBleHRlbmRzIEVycm9ye3N0YXRpY1t1dV09IkRyaXp6bGVFcnJvciI7Y29uc3RydWN0b3Ioe21lc3NhZ2U6ZSxjYXVzZTpzfSl7c3VwZXIoZSksdGhpcy5uYW1lPSJEcml6emxlRXJyb3IiLHRoaXMuY2F1c2U9c319Y2xhc3MgRHJpenpsZVF1ZXJ5RXJyb3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHMsZCl7c3VwZXIoYEZhaWxlZCBxdWVyeTogJHtlfVxucGFyYW1zOiAke3N9YCksdGhpcy5xdWVyeT1lLHRoaXMucGFyYW1zPXMsdGhpcy5jYXVzZT1kLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsRHJpenpsZVF1ZXJ5RXJyb3IpLGQmJih0aGlzLmNhdXNlPWQpfX1jbGFzcyBUcmFuc2FjdGlvblJvbGxiYWNrRXJyb3IgZXh0ZW5kcyBEcml6emxlRXJyb3J7c3RhdGljW3V1XT0iVHJhbnNhY3Rpb25Sb2xsYmFja0Vycm9yIjtjb25zdHJ1Y3Rvcigpe3N1cGVyKHttZXNzYWdlOiJSb2xsYmFjayJ9KX19ZnVuY3Rpb24gY291bnQoZSl7cmV0dXJuIHNxbGBjb3VudCgke3NxbC5yYXcoIioiKX0pYC5tYXBXaXRoKE51bWJlcil9Y2xhc3MgU1FMaXRlVmlld0Jhc2UgZXh0ZW5kcyBWaWV3e3N0YXRpY1t1dV09IlNRTGl0ZVZpZXdCYXNlIn1jbGFzcyBTUUxpdGVEaWFsZWN0e3N0YXRpY1t1dV09IlNRTGl0ZURpYWxlY3QiO2Nhc2luZztjb25zdHJ1Y3RvcihlKXt0aGlzLmNhc2luZz1uZXcgQ2FzaW5nQ2FjaGUoZT8uY2FzaW5nKX1lc2NhcGVOYW1lKGUpe3JldHVybmAiJHtlLnJlcGxhY2UoLyIvZywnIiInKX0iYH1lc2NhcGVQYXJhbShlKXtyZXR1cm4iPyJ9ZXNjYXBlU3RyaW5nKGUpe3JldHVybmAnJHtlLnJlcGxhY2UoLycvZywiJyciKX0nYH1idWlsZFdpdGhDVEUoZSl7aWYoIWU/Lmxlbmd0aClyZXR1cm47Y29uc3Qgcz1bc3FsYHdpdGggYF07Zm9yKGNvbnN0W2QsbV1vZiBlLmVudHJpZXMoKSlzLnB1c2goc3FsYCR7c3FsLmlkZW50aWZpZXIobS5fLmFsaWFzKX0gYXMgKCR7bS5fLnNxbH0pYCksZDxlLmxlbmd0aC0xJiZzLnB1c2goc3FsYCwgYCk7cmV0dXJuIHMucHVzaChzcWxgIGApLHNxbC5qb2luKHMpfWJ1aWxkRGVsZXRlUXVlcnkoe3RhYmxlOmUsd2hlcmU6cyxyZXR1cm5pbmc6ZCx3aXRoTGlzdDptLGxpbWl0Omgsb3JkZXJCeTpnfSl7cmV0dXJuIHNxbGAke3RoaXMuYnVpbGRXaXRoQ1RFKG0pfWRlbGV0ZSBmcm9tICR7ZX0ke3M/c3FsYCB3aGVyZSAke3N9YDp2b2lkIDB9JHtkP3NxbGAgcmV0dXJuaW5nICR7dGhpcy5idWlsZFNlbGVjdGlvbihkLHtpc1NpbmdsZVRhYmxlOiEwfSl9YDp2b2lkIDB9JHt0aGlzLmJ1aWxkT3JkZXJCeShnKX0ke3RoaXMuYnVpbGRMaW1pdChoKX1gfWJ1aWxkVXBkYXRlU2V0KGUscyl7Y29uc3QgZD1lW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxtPU9iamVjdC5rZXlzKGQpLmZpbHRlcihlPT52b2lkIDAhPT1zW2VdfHx2b2lkIDAhPT1kW2VdPy5vblVwZGF0ZUZuKSxoPW0ubGVuZ3RoO3JldHVybiBzcWwuam9pbihtLmZsYXRNYXAoKGUsbSk9Pntjb25zdCBnPWRbZV0seD1nLm9uVXBkYXRlRm4/LigpLCQ9c1tlXT8/KGlzKHgsU1FMKT94OnNxbC5wYXJhbSh4LGcpKSxTPXNxbGAke3NxbC5pZGVudGlmaWVyKHRoaXMuY2FzaW5nLmdldENvbHVtbkNhc2luZyhnKSl9ID0gJHskfWA7cmV0dXJuIG08aC0xP1tTLHNxbC5yYXcoIiwgIildOltTXX0pKX1idWlsZFVwZGF0ZVF1ZXJ5KHt0YWJsZTplLHNldDpzLHdoZXJlOmQscmV0dXJuaW5nOm0sd2l0aExpc3Q6aCxqb2luczpnLGZyb206eCxsaW1pdDokLG9yZGVyQnk6U30pe2NvbnN0IGo9dGhpcy5idWlsZFdpdGhDVEUoaCksej10aGlzLmJ1aWxkVXBkYXRlU2V0KGUscyksST14JiZzcWwuam9pbihbc3FsLnJhdygiIGZyb20gIiksdGhpcy5idWlsZEZyb21UYWJsZSh4KV0pO3JldHVybiBzcWxgJHtqfXVwZGF0ZSAke2V9IHNldCAke3p9JHtJfSR7dGhpcy5idWlsZEpvaW5zKGcpfSR7ZD9zcWxgIHdoZXJlICR7ZH1gOnZvaWQgMH0ke20/c3FsYCByZXR1cm5pbmcgJHt0aGlzLmJ1aWxkU2VsZWN0aW9uKG0se2lzU2luZ2xlVGFibGU6ITB9KX1gOnZvaWQgMH0ke3RoaXMuYnVpbGRPcmRlckJ5KFMpfSR7dGhpcy5idWlsZExpbWl0KCQpfWB9YnVpbGRTZWxlY3Rpb24oZSx7aXNTaW5nbGVUYWJsZTpzPSExfT17fSl7Y29uc3QgZD1lLmxlbmd0aCxtPWUuZmxhdE1hcCgoe2ZpZWxkOmV9LG0pPT57Y29uc3QgaD1bXTtpZihpcyhlLFNRTC5BbGlhc2VkKSYmZS5pc1NlbGVjdGlvbkZpZWxkKWgucHVzaChzcWwuaWRlbnRpZmllcihlLmZpZWxkQWxpYXMpKTtlbHNlIGlmKGlzKGUsU1FMLkFsaWFzZWQpfHxpcyhlLFNRTCkpe2NvbnN0IGQ9aXMoZSxTUUwuQWxpYXNlZCk/ZS5zcWw6ZTtzP2gucHVzaChuZXcgU1FMKGQucXVlcnlDaHVua3MubWFwKGU9PmlzKGUsQ29sdW1uKT9zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpOmUpKSk6aC5wdXNoKGQpLGlzKGUsU1FMLkFsaWFzZWQpJiZoLnB1c2goc3FsYCBhcyAke3NxbC5pZGVudGlmaWVyKGUuZmllbGRBbGlhcyl9YCl9ZWxzZSBpZihpcyhlLENvbHVtbikpe2NvbnN0IGQ9ZS50YWJsZVtUYWJsZS5TeW1ib2wuTmFtZV07IlNRTGl0ZU51bWVyaWNCaWdJbnQiPT09ZS5jb2x1bW5UeXBlP3M/aC5wdXNoKHNxbGBjYXN0KCR7c3FsLmlkZW50aWZpZXIodGhpcy5jYXNpbmcuZ2V0Q29sdW1uQ2FzaW5nKGUpKX0gYXMgdGV4dClgKTpoLnB1c2goc3FsYGNhc3QoJHtzcWwuaWRlbnRpZmllcihkKX0uJHtzcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpfSBhcyB0ZXh0KWApOnM/aC5wdXNoKHNxbC5pZGVudGlmaWVyKHRoaXMuY2FzaW5nLmdldENvbHVtbkNhc2luZyhlKSkpOmgucHVzaChzcWxgJHtzcWwuaWRlbnRpZmllcihkKX0uJHtzcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpfWApfWVsc2UgaWYoaXMoZSxTdWJxdWVyeSkpe2NvbnN0IHM9T2JqZWN0LmVudHJpZXMoZS5fLnNlbGVjdGVkRmllbGRzKTtpZigxPT09cy5sZW5ndGgpe2NvbnN0IGQ9c1swXVsxXSxtPWlzKGQsU1FMKT9kLmRlY29kZXI6aXMoZCxDb2x1bW4pP3ttYXBGcm9tRHJpdmVyVmFsdWU6ZT0+ZC5tYXBGcm9tRHJpdmVyVmFsdWUoZSl9OmQuc3FsLmRlY29kZXI7bSYmKGUuXy5zcWwuZGVjb2Rlcj1tKX1oLnB1c2goZSl9cmV0dXJuIG08ZC0xJiZoLnB1c2goc3FsYCwgYCksaH0pO3JldHVybiBzcWwuam9pbihtKX1idWlsZEpvaW5zKGUpe2lmKCFlfHwwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IHM9W107aWYoZSlmb3IoY29uc3RbZCxtXW9mIGUuZW50cmllcygpKXswPT09ZCYmcy5wdXNoKHNxbGAgYCk7Y29uc3QgaD1tLnRhYmxlLGc9bS5vbj9zcWxgIG9uICR7bS5vbn1gOnZvaWQgMDtpZihpcyhoLFNRTGl0ZVRhYmxlKSl7Y29uc3QgZT1oW1NRTGl0ZVRhYmxlLlN5bWJvbC5OYW1lXSxkPWhbU1FMaXRlVGFibGUuU3ltYm9sLlNjaGVtYV0seD1oW1NRTGl0ZVRhYmxlLlN5bWJvbC5PcmlnaW5hbE5hbWVdLCQ9ZT09PXg/dm9pZCAwOm0uYWxpYXM7cy5wdXNoKHNxbGAke3NxbC5yYXcobS5qb2luVHlwZSl9IGpvaW4gJHtkP3NxbGAke3NxbC5pZGVudGlmaWVyKGQpfS5gOnZvaWQgMH0ke3NxbC5pZGVudGlmaWVyKHgpfSR7JCYmc3FsYCAke3NxbC5pZGVudGlmaWVyKCQpfWB9JHtnfWApfWVsc2Ugcy5wdXNoKHNxbGAke3NxbC5yYXcobS5qb2luVHlwZSl9IGpvaW4gJHtofSR7Z31gKTtkPGUubGVuZ3RoLTEmJnMucHVzaChzcWxgIGApfXJldHVybiBzcWwuam9pbihzKX1idWlsZExpbWl0KGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlJiZlPj0wP3NxbGAgbGltaXQgJHtlfWA6dm9pZCAwfWJ1aWxkT3JkZXJCeShlKXtjb25zdCBzPVtdO2lmKGUpZm9yKGNvbnN0W2QsbV1vZiBlLmVudHJpZXMoKSlzLnB1c2gobSksZDxlLmxlbmd0aC0xJiZzLnB1c2goc3FsYCwgYCk7cmV0dXJuIHMubGVuZ3RoPjA/c3FsYCBvcmRlciBieSAke3NxbC5qb2luKHMpfWA6dm9pZCAwfWJ1aWxkRnJvbVRhYmxlKGUpe3JldHVybiBpcyhlLFRhYmxlKSYmZVtUYWJsZS5TeW1ib2wuSXNBbGlhc10/c3FsYCR7c3FsYCR7c3FsLmlkZW50aWZpZXIoZVtUYWJsZS5TeW1ib2wuU2NoZW1hXT8/IiIpfS5gLmlmKGVbVGFibGUuU3ltYm9sLlNjaGVtYV0pfSR7c3FsLmlkZW50aWZpZXIoZVtUYWJsZS5TeW1ib2wuT3JpZ2luYWxOYW1lXSl9ICR7c3FsLmlkZW50aWZpZXIoZVtUYWJsZS5TeW1ib2wuTmFtZV0pfWA6ZX1idWlsZFNlbGVjdFF1ZXJ5KHt3aXRoTGlzdDplLGZpZWxkczpzLGZpZWxkc0ZsYXQ6ZCx3aGVyZTptLGhhdmluZzpoLHRhYmxlOmcsam9pbnM6eCxvcmRlckJ5OiQsZ3JvdXBCeTpTLGxpbWl0Omosb2Zmc2V0OnosZGlzdGluY3Q6SSxzZXRPcGVyYXRvcnM6VH0pe2NvbnN0IFI9ZD8/b3JkZXJTZWxlY3RlZEZpZWxkcyhzKTtmb3IoY29uc3QgZSBvZiBSKWlmKGlzKGUuZmllbGQsQ29sdW1uKSYmZ2V0VGFibGVOYW1lKGUuZmllbGQudGFibGUpIT09KGlzKGcsU3VicXVlcnkpP2cuXy5hbGlhczppcyhnLFNRTGl0ZVZpZXdCYXNlKT9nW3d1XS5uYW1lOmlzKGcsU1FMKT92b2lkIDA6Z2V0VGFibGVOYW1lKGcpKSYmIShlPT54Py5zb21lKCh7YWxpYXM6c30pPT5zPT09KGVbVGFibGUuU3ltYm9sLklzQWxpYXNdP2dldFRhYmxlTmFtZShlKTplW1RhYmxlLlN5bWJvbC5CYXNlTmFtZV0pKSkoZS5maWVsZC50YWJsZSkpe2NvbnN0IHM9Z2V0VGFibGVOYW1lKGUuZmllbGQudGFibGUpO3Rocm93IG5ldyBFcnJvcihgWW91ciAiJHtlLnBhdGguam9pbigiLT4iKX0iIGZpZWxkIHJlZmVyZW5jZXMgYSBjb2x1bW4gIiR7c30iLiIke2UuZmllbGQubmFtZX0iLCBidXQgdGhlIHRhYmxlICIke3N9IiBpcyBub3QgcGFydCBvZiB0aGUgcXVlcnkhIERpZCB5b3UgZm9yZ2V0IHRvIGpvaW4gaXQ/YCl9Y29uc3QgRT0heHx8MD09PXgubGVuZ3RoLE89dGhpcy5idWlsZFdpdGhDVEUoZSksTj1JP3NxbGAgZGlzdGluY3RgOnZvaWQgMCxVPXRoaXMuYnVpbGRTZWxlY3Rpb24oUix7aXNTaW5nbGVUYWJsZTpFfSksQj10aGlzLmJ1aWxkRnJvbVRhYmxlKGcpLFY9dGhpcy5idWlsZEpvaW5zKHgpLEg9bT9zcWxgIHdoZXJlICR7bX1gOnZvaWQgMCxLPWg/c3FsYCBoYXZpbmcgJHtofWA6dm9pZCAwLGVlPVtdO2lmKFMpZm9yKGNvbnN0W2Usc11vZiBTLmVudHJpZXMoKSllZS5wdXNoKHMpLGU8Uy5sZW5ndGgtMSYmZWUucHVzaChzcWxgLCBgKTtjb25zdCB0ZT1lZS5sZW5ndGg+MD9zcWxgIGdyb3VwIGJ5ICR7c3FsLmpvaW4oZWUpfWA6dm9pZCAwLGllPXNxbGAke099c2VsZWN0JHtOfSAke1V9IGZyb20gJHtCfSR7Vn0ke0h9JHt0ZX0ke0t9JHt0aGlzLmJ1aWxkT3JkZXJCeSgkKX0ke3RoaXMuYnVpbGRMaW1pdChqKX0ke3o/c3FsYCBvZmZzZXQgJHt6fWA6dm9pZCAwfWA7cmV0dXJuIFQubGVuZ3RoPjA/dGhpcy5idWlsZFNldE9wZXJhdGlvbnMoaWUsVCk6aWV9YnVpbGRTZXRPcGVyYXRpb25zKGUscyl7Y29uc3RbZCwuLi5tXT1zO2lmKCFkKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBhc3MgdW5kZWZpbmVkIHZhbHVlcyB0byBhbnkgc2V0IG9wZXJhdG9yIik7cmV0dXJuIDA9PT1tLmxlbmd0aD90aGlzLmJ1aWxkU2V0T3BlcmF0aW9uUXVlcnkoe2xlZnRTZWxlY3Q6ZSxzZXRPcGVyYXRvcjpkfSk6dGhpcy5idWlsZFNldE9wZXJhdGlvbnModGhpcy5idWlsZFNldE9wZXJhdGlvblF1ZXJ5KHtsZWZ0U2VsZWN0OmUsc2V0T3BlcmF0b3I6ZH0pLG0pfWJ1aWxkU2V0T3BlcmF0aW9uUXVlcnkoe2xlZnRTZWxlY3Q6ZSxzZXRPcGVyYXRvcjp7dHlwZTpzLGlzQWxsOmQscmlnaHRTZWxlY3Q6bSxsaW1pdDpoLG9yZGVyQnk6ZyxvZmZzZXQ6eH19KXtjb25zdCAkPXNxbGAke2UuZ2V0U1FMKCl9IGAsUz1zcWxgJHttLmdldFNRTCgpfWA7bGV0IGo7aWYoZyYmZy5sZW5ndGg+MCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiBnKWlmKGlzKHMsU1FMaXRlQ29sdW1uKSllLnB1c2goc3FsLmlkZW50aWZpZXIocy5uYW1lKSk7ZWxzZSBpZihpcyhzLFNRTCkpe2ZvcihsZXQgZT0wO2U8cy5xdWVyeUNodW5rcy5sZW5ndGg7ZSsrKXtjb25zdCBkPXMucXVlcnlDaHVua3NbZV07aXMoZCxTUUxpdGVDb2x1bW4pJiYocy5xdWVyeUNodW5rc1tlXT1zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZCkpKX1lLnB1c2goc3FsYCR7c31gKX1lbHNlIGUucHVzaChzcWxgJHtzfWApO2o9c3FsYCBvcmRlciBieSAke3NxbC5qb2luKGUsc3FsYCwgYCl9YH1jb25zdCB6PSJvYmplY3QiPT10eXBlb2YgaHx8Im51bWJlciI9PXR5cGVvZiBoJiZoPj0wP3NxbGAgbGltaXQgJHtofWA6dm9pZCAwLEk9c3FsLnJhdyhgJHtzfSAke2Q/ImFsbCAiOiIifWApO3JldHVybiBzcWxgJHskfSR7SX0ke1N9JHtqfSR7en0ke3g/c3FsYCBvZmZzZXQgJHt4fWA6dm9pZCAwfWB9YnVpbGRJbnNlcnRRdWVyeSh7dGFibGU6ZSx2YWx1ZXM6cyxvbkNvbmZsaWN0OmQscmV0dXJuaW5nOm0sd2l0aExpc3Q6aCxzZWxlY3Q6Z30pe2NvbnN0IHg9W10sJD1lW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxTPU9iamVjdC5lbnRyaWVzKCQpLmZpbHRlcigoW2Usc10pPT4hcy5zaG91bGREaXNhYmxlSW5zZXJ0KCkpLGo9Uy5tYXAoKFssZV0pPT5zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpKTtpZihnKXtjb25zdCBlPXM7aXMoZSxTUUwpP3gucHVzaChlKTp4LnB1c2goZS5nZXRTUUwoKSl9ZWxzZXtjb25zdCBlPXM7eC5wdXNoKHNxbC5yYXcoInZhbHVlcyAiKSk7Zm9yKGNvbnN0W3MsZF1vZiBlLmVudHJpZXMoKSl7Y29uc3QgbT1bXTtmb3IoY29uc3RbZSxzXW9mIFMpe2NvbnN0IGg9ZFtlXTtpZih2b2lkIDA9PT1ofHxpcyhoLFBhcmFtKSYmdm9pZCAwPT09aC52YWx1ZSl7bGV0IGU7aWYobnVsbCE9PXMuZGVmYXVsdCYmdm9pZCAwIT09cy5kZWZhdWx0KWU9aXMocy5kZWZhdWx0LFNRTCk/cy5kZWZhdWx0OnNxbC5wYXJhbShzLmRlZmF1bHQscyk7ZWxzZSBpZih2b2lkIDAhPT1zLmRlZmF1bHRGbil7Y29uc3QgZD1zLmRlZmF1bHRGbigpO2U9aXMoZCxTUUwpP2Q6c3FsLnBhcmFtKGQscyl9ZWxzZSBpZihzLmRlZmF1bHR8fHZvaWQgMD09PXMub25VcGRhdGVGbillPXNxbGBudWxsYDtlbHNle2NvbnN0IGQ9cy5vblVwZGF0ZUZuKCk7ZT1pcyhkLFNRTCk/ZDpzcWwucGFyYW0oZCxzKX1tLnB1c2goZSl9ZWxzZSBtLnB1c2goaCl9eC5wdXNoKG0pLHM8ZS5sZW5ndGgtMSYmeC5wdXNoKHNxbGAsIGApfX1jb25zdCB6PXRoaXMuYnVpbGRXaXRoQ1RFKGgpLEk9c3FsLmpvaW4oeCksVD1tP3NxbGAgcmV0dXJuaW5nICR7dGhpcy5idWlsZFNlbGVjdGlvbihtLHtpc1NpbmdsZVRhYmxlOiEwfSl9YDp2b2lkIDAsUj1kPy5sZW5ndGg/c3FsLmpvaW4oZCk6dm9pZCAwO3JldHVybiBzcWxgJHt6fWluc2VydCBpbnRvICR7ZX0gJHtqfSAke0l9JHtSfSR7VH1gfXNxbFRvUXVlcnkoZSxzKXtyZXR1cm4gZS50b1F1ZXJ5KHtjYXNpbmc6dGhpcy5jYXNpbmcsZXNjYXBlTmFtZTp0aGlzLmVzY2FwZU5hbWUsZXNjYXBlUGFyYW06dGhpcy5lc2NhcGVQYXJhbSxlc2NhcGVTdHJpbmc6dGhpcy5lc2NhcGVTdHJpbmcsaW52b2tlU291cmNlOnN9KX1idWlsZFJlbGF0aW9uYWxRdWVyeSh7ZnVsbFNjaGVtYTplLHNjaGVtYTpzLHRhYmxlTmFtZXNNYXA6ZCx0YWJsZTptLHRhYmxlQ29uZmlnOmgscXVlcnlDb25maWc6Zyx0YWJsZUFsaWFzOngsbmVzdGVkUXVlcnlSZWxhdGlvbjokLGpvaW5PbjpTfSl7bGV0IGoseixJLFQ9W10sUj1bXTtjb25zdCBFPVtdO2lmKCEwPT09Zyl7VD1PYmplY3QuZW50cmllcyhoLmNvbHVtbnMpLm1hcCgoW2Usc10pPT4oe2RiS2V5OnMubmFtZSx0c0tleTplLGZpZWxkOmFsaWFzZWRUYWJsZUNvbHVtbihzLHgpLHJlbGF0aW9uVGFibGVUc0tleTp2b2lkIDAsaXNKc29uOiExLHNlbGVjdGlvbjpbXX0pKX1lbHNle2NvbnN0IG09T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGguY29sdW1ucykubWFwKChbZSxzXSk9PltlLGFsaWFzZWRUYWJsZUNvbHVtbihzLHgpXSkpO2lmKGcud2hlcmUpe2NvbnN0IGU9ImZ1bmN0aW9uIj09dHlwZW9mIGcud2hlcmU/Zy53aGVyZShtLHthbmQ6YW5kLGJldHdlZW46YmV0d2VlbixlcTplcSxleGlzdHM6ZXhpc3RzLGd0Omd0LGd0ZTpndGUsaWxpa2U6aWxpa2UsaW5BcnJheTppbkFycmF5LGlzTnVsbDppc051bGwkMixpc05vdE51bGw6aXNOb3ROdWxsLGxpa2U6bGlrZSxsdDpsdCxsdGU6bHRlLG5lOm5lLG5vdDpub3Qsbm90QmV0d2Vlbjpub3RCZXR3ZWVuLG5vdEV4aXN0czpub3RFeGlzdHMsbm90TGlrZTpub3RMaWtlLG5vdElsaWtlOm5vdElsaWtlLG5vdEluQXJyYXk6bm90SW5BcnJheSxvcjpvcixzcWw6c3FsfSk6Zy53aGVyZTtJPWUmJm1hcENvbHVtbnNJblNRTFRvQWxpYXMoZSx4KX1jb25zdCAkPVtdO2xldCBTPVtdO2lmKGcuY29sdW1ucyl7bGV0IGU9ITE7Zm9yKGNvbnN0W3MsZF1vZiBPYmplY3QuZW50cmllcyhnLmNvbHVtbnMpKXZvaWQgMCE9PWQmJnMgaW4gaC5jb2x1bW5zJiYoZXx8ITAhPT1kfHwoZT0hMCksUy5wdXNoKHMpKTtTLmxlbmd0aD4wJiYoUz1lP1MuZmlsdGVyKGU9PiEwPT09Zy5jb2x1bW5zPy5bZV0pOk9iamVjdC5rZXlzKGguY29sdW1ucykuZmlsdGVyKGU9PiFTLmluY2x1ZGVzKGUpKSl9ZWxzZSBTPU9iamVjdC5rZXlzKGguY29sdW1ucyk7Zm9yKGNvbnN0IGUgb2YgUyl7Y29uc3Qgcz1oLmNvbHVtbnNbZV07JC5wdXNoKHt0c0tleTplLHZhbHVlOnN9KX1sZXQgRSxPPVtdO2lmKGcud2l0aCYmKE89T2JqZWN0LmVudHJpZXMoZy53aXRoKS5maWx0ZXIoZT0+ISFlWzFdKS5tYXAoKFtlLHNdKT0+KHt0c0tleTplLHF1ZXJ5Q29uZmlnOnMscmVsYXRpb246aC5yZWxhdGlvbnNbZV19KSkpLGcuZXh0cmFzKXtFPSJmdW5jdGlvbiI9PXR5cGVvZiBnLmV4dHJhcz9nLmV4dHJhcyhtLHtzcWw6c3FsfSk6Zy5leHRyYXM7Zm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhFKSkkLnB1c2goe3RzS2V5OmUsdmFsdWU6bWFwQ29sdW1uc0luQWxpYXNlZFNRTFRvQWxpYXMocyx4KX0pfWZvcihjb25zdHt0c0tleTplLHZhbHVlOnN9b2YgJClULnB1c2goe2RiS2V5OmlzKHMsU1FMLkFsaWFzZWQpP3MuZmllbGRBbGlhczpoLmNvbHVtbnNbZV0ubmFtZSx0c0tleTplLGZpZWxkOmlzKHMsQ29sdW1uKT9hbGlhc2VkVGFibGVDb2x1bW4ocyx4KTpzLHJlbGF0aW9uVGFibGVUc0tleTp2b2lkIDAsaXNKc29uOiExLHNlbGVjdGlvbjpbXX0pO2xldCBOPSJmdW5jdGlvbiI9PXR5cGVvZiBnLm9yZGVyQnk/Zy5vcmRlckJ5KG0se3NxbDpzcWwsYXNjOmFzYyxkZXNjOmRlc2N9KTpnLm9yZGVyQnk/P1tdO0FycmF5LmlzQXJyYXkoTil8fChOPVtOXSksUj1OLm1hcChlPT5pcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUseCk6bWFwQ29sdW1uc0luU1FMVG9BbGlhcyhlLHgpKSxqPWcubGltaXQsej1nLm9mZnNldDtmb3IoY29uc3R7dHNLZXk6bSxxdWVyeUNvbmZpZzpoLHJlbGF0aW9uOmd9b2YgTyl7Y29uc3QgJD1ub3JtYWxpemVSZWxhdGlvbihzLGQsZyksUz1kW2dldFRhYmxlVW5pcXVlTmFtZShnLnJlZmVyZW5jZWRUYWJsZSldLGo9YCR7eH1fJHttfWAsej1hbmQoLi4uJC5maWVsZHMubWFwKChlLHMpPT5lcShhbGlhc2VkVGFibGVDb2x1bW4oJC5yZWZlcmVuY2VzW3NdLGopLGFsaWFzZWRUYWJsZUNvbHVtbihlLHgpKSkpLEk9dGhpcy5idWlsZFJlbGF0aW9uYWxRdWVyeSh7ZnVsbFNjaGVtYTplLHNjaGVtYTpzLHRhYmxlTmFtZXNNYXA6ZCx0YWJsZTplW1NdLHRhYmxlQ29uZmlnOnNbU10scXVlcnlDb25maWc6aXMoZyxPbmUpPyEwPT09aD97bGltaXQ6MX06ey4uLmgsbGltaXQ6MX06aCx0YWJsZUFsaWFzOmosam9pbk9uOnosbmVzdGVkUXVlcnlSZWxhdGlvbjpnfSksUj1zcWxgKCR7SS5zcWx9KWAuYXMobSk7VC5wdXNoKHtkYktleTptLHRzS2V5Om0sZmllbGQ6UixyZWxhdGlvblRhYmxlVHNLZXk6Uyxpc0pzb246ITAsc2VsZWN0aW9uOkkuc2VsZWN0aW9ufSl9fWlmKDA9PT1ULmxlbmd0aCl0aHJvdyBuZXcgRHJpenpsZUVycm9yKHttZXNzYWdlOmBObyBmaWVsZHMgc2VsZWN0ZWQgZm9yIHRhYmxlICIke2gudHNOYW1lfSIgKCIke3h9IikuIFlvdSBuZWVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gImNvbHVtbnMiLCAid2l0aCIgb3IgImV4dHJhcyIuIElmIHlvdSBuZWVkIHRvIHNlbGVjdCBhbGwgY29sdW1ucywgb21pdCB0aGUgImNvbHVtbnMiIGtleSBvciBzZXQgaXQgdG8gdW5kZWZpbmVkLmB9KTtsZXQgTztpZihJPWFuZChTLEkpLCQpe2xldCBlPXNxbGBqc29uX2FycmF5KCR7c3FsLmpvaW4oVC5tYXAoKHtmaWVsZDplfSk9PmlzKGUsU1FMaXRlQ29sdW1uKT9zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpOmlzKGUsU1FMLkFsaWFzZWQpP2Uuc3FsOmUpLHNxbGAsIGApfSlgO2lzKCQsTWFueSkmJihlPXNxbGBjb2FsZXNjZShqc29uX2dyb3VwX2FycmF5KCR7ZX0pLCBqc29uX2FycmF5KCkpYCk7Y29uc3Qgcz1be2RiS2V5OiJkYXRhIix0c0tleToiZGF0YSIsZmllbGQ6ZS5hcygiZGF0YSIpLGlzSnNvbjohMCxyZWxhdGlvblRhYmxlVHNLZXk6aC50c05hbWUsc2VsZWN0aW9uOlR9XTt2b2lkIDAhPT1qfHx2b2lkIDAhPT16fHxSLmxlbmd0aD4wPyhPPXRoaXMuYnVpbGRTZWxlY3RRdWVyeSh7dGFibGU6YWxpYXNlZFRhYmxlKG0seCksZmllbGRzOnt9LGZpZWxkc0ZsYXQ6W3twYXRoOltdLGZpZWxkOnNxbC5yYXcoIioiKX1dLHdoZXJlOkksbGltaXQ6aixvZmZzZXQ6eixvcmRlckJ5OlIsc2V0T3BlcmF0b3JzOltdfSksST12b2lkIDAsaj12b2lkIDAsej12b2lkIDAsUj12b2lkIDApOk89YWxpYXNlZFRhYmxlKG0seCksTz10aGlzLmJ1aWxkU2VsZWN0UXVlcnkoe3RhYmxlOmlzKE8sU1FMaXRlVGFibGUpP086bmV3IFN1YnF1ZXJ5KE8se30seCksZmllbGRzOnt9LGZpZWxkc0ZsYXQ6cy5tYXAoKHtmaWVsZDplfSk9Pih7cGF0aDpbXSxmaWVsZDppcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUseCk6ZX0pKSxqb2luczpFLHdoZXJlOkksbGltaXQ6aixvZmZzZXQ6eixvcmRlckJ5OlIsc2V0T3BlcmF0b3JzOltdfSl9ZWxzZSBPPXRoaXMuYnVpbGRTZWxlY3RRdWVyeSh7dGFibGU6YWxpYXNlZFRhYmxlKG0seCksZmllbGRzOnt9LGZpZWxkc0ZsYXQ6VC5tYXAoKHtmaWVsZDplfSk9Pih7cGF0aDpbXSxmaWVsZDppcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUseCk6ZX0pKSxqb2luczpFLHdoZXJlOkksbGltaXQ6aixvZmZzZXQ6eixvcmRlckJ5OlIsc2V0T3BlcmF0b3JzOltdfSk7cmV0dXJue3RhYmxlVHNLZXk6aC50c05hbWUsc3FsOk8sc2VsZWN0aW9uOlR9fX1jbGFzcyBTUUxpdGVTeW5jRGlhbGVjdCBleHRlbmRzIFNRTGl0ZURpYWxlY3R7c3RhdGljW3V1XT0iU1FMaXRlU3luY0RpYWxlY3QiO21pZ3JhdGUoZSxzLGQpe2NvbnN0IG09dm9pZCAwPT09ZHx8InN0cmluZyI9PXR5cGVvZiBkPyJfX2RyaXp6bGVfbWlncmF0aW9ucyI6ZC5taWdyYXRpb25zVGFibGU/PyJfX2RyaXp6bGVfbWlncmF0aW9ucyIsaD1zcWxgCgkJCUNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICR7c3FsLmlkZW50aWZpZXIobSl9ICgKCQkJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwKCQkJCWhhc2ggdGV4dCBOT1QgTlVMTCwKCQkJCWNyZWF0ZWRfYXQgbnVtZXJpYwoJCQkpCgkJYDtzLnJ1bihoKTtjb25zdCBnPXMudmFsdWVzKHNxbGBTRUxFQ1QgaWQsIGhhc2gsIGNyZWF0ZWRfYXQgRlJPTSAke3NxbC5pZGVudGlmaWVyKG0pfSBPUkRFUiBCWSBjcmVhdGVkX2F0IERFU0MgTElNSVQgMWApWzBdPz92b2lkIDA7cy5ydW4oc3FsYEJFR0lOYCk7dHJ5e2Zvcihjb25zdCBkIG9mIGUpaWYoIWd8fE51bWJlcihnWzJdKTxkLmZvbGRlck1pbGxpcyl7Zm9yKGNvbnN0IGUgb2YgZC5zcWwpcy5ydW4oc3FsLnJhdyhlKSk7cy5ydW4oc3FsYElOU0VSVCBJTlRPICR7c3FsLmlkZW50aWZpZXIobSl9ICgiaGFzaCIsICJjcmVhdGVkX2F0IikgVkFMVUVTKCR7ZC5oYXNofSwgJHtkLmZvbGRlck1pbGxpc30pYCl9cy5ydW4oc3FsYENPTU1JVGApfWNhdGNoKGUpe3Rocm93IHMucnVuKHNxbGBST0xMQkFDS2ApLGV9fX1jbGFzcyBTUUxpdGVBc3luY0RpYWxlY3QgZXh0ZW5kcyBTUUxpdGVEaWFsZWN0e3N0YXRpY1t1dV09IlNRTGl0ZUFzeW5jRGlhbGVjdCI7YXN5bmMgbWlncmF0ZShlLHMsZCl7Y29uc3QgbT12b2lkIDA9PT1kfHwic3RyaW5nIj09dHlwZW9mIGQ/Il9fZHJpenpsZV9taWdyYXRpb25zIjpkLm1pZ3JhdGlvbnNUYWJsZT8/Il9fZHJpenpsZV9taWdyYXRpb25zIixoPXNxbGAKCQkJQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJHtzcWwuaWRlbnRpZmllcihtKX0gKAoJCQkJaWQgU0VSSUFMIFBSSU1BUlkgS0VZLAoJCQkJaGFzaCB0ZXh0IE5PVCBOVUxMLAoJCQkJY3JlYXRlZF9hdCBudW1lcmljCgkJCSkKCQlgO2F3YWl0IHMucnVuKGgpO2NvbnN0IGc9KGF3YWl0IHMudmFsdWVzKHNxbGBTRUxFQ1QgaWQsIGhhc2gsIGNyZWF0ZWRfYXQgRlJPTSAke3NxbC5pZGVudGlmaWVyKG0pfSBPUkRFUiBCWSBjcmVhdGVkX2F0IERFU0MgTElNSVQgMWApKVswXT8/dm9pZCAwO2F3YWl0IHMudHJhbnNhY3Rpb24oYXN5bmMgcz0+e2Zvcihjb25zdCBkIG9mIGUpaWYoIWd8fE51bWJlcihnWzJdKTxkLmZvbGRlck1pbGxpcyl7Zm9yKGNvbnN0IGUgb2YgZC5zcWwpYXdhaXQgcy5ydW4oc3FsLnJhdyhlKSk7YXdhaXQgcy5ydW4oc3FsYElOU0VSVCBJTlRPICR7c3FsLmlkZW50aWZpZXIobSl9ICgiaGFzaCIsICJjcmVhdGVkX2F0IikgVkFMVUVTKCR7ZC5oYXNofSwgJHtkLmZvbGRlck1pbGxpc30pYCl9fSl9fWNsYXNzIFR5cGVkUXVlcnlCdWlsZGVye3N0YXRpY1t1dV09IlR5cGVkUXVlcnlCdWlsZGVyIjtnZXRTZWxlY3RlZEZpZWxkcygpe3JldHVybiB0aGlzLl8uc2VsZWN0ZWRGaWVsZHN9fWNsYXNzIFNRTGl0ZVNlbGVjdEJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlU2VsZWN0QnVpbGRlciI7ZmllbGRzO3Nlc3Npb247ZGlhbGVjdDt3aXRoTGlzdDtkaXN0aW5jdDtjb25zdHJ1Y3RvcihlKXt0aGlzLmZpZWxkcz1lLmZpZWxkcyx0aGlzLnNlc3Npb249ZS5zZXNzaW9uLHRoaXMuZGlhbGVjdD1lLmRpYWxlY3QsdGhpcy53aXRoTGlzdD1lLndpdGhMaXN0LHRoaXMuZGlzdGluY3Q9ZS5kaXN0aW5jdH1mcm9tKGUpe2NvbnN0IHM9ISF0aGlzLmZpZWxkcztsZXQgZDtyZXR1cm4gZD10aGlzLmZpZWxkcz90aGlzLmZpZWxkczppcyhlLFN1YnF1ZXJ5KT9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoZS5fLnNlbGVjdGVkRmllbGRzKS5tYXAocz0+W3MsZVtzXV0pKTppcyhlLFNRTGl0ZVZpZXdCYXNlKT9lW3d1XS5zZWxlY3RlZEZpZWxkczppcyhlLFNRTCk/e306ZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10sbmV3IFNRTGl0ZVNlbGVjdEJhc2Uoe3RhYmxlOmUsZmllbGRzOmQsaXNQYXJ0aWFsU2VsZWN0OnMsc2Vzc2lvbjp0aGlzLnNlc3Npb24sZGlhbGVjdDp0aGlzLmRpYWxlY3Qsd2l0aExpc3Q6dGhpcy53aXRoTGlzdCxkaXN0aW5jdDp0aGlzLmRpc3RpbmN0fSl9fWNsYXNzIFNRTGl0ZVNlbGVjdFF1ZXJ5QnVpbGRlckJhc2UgZXh0ZW5kcyBUeXBlZFF1ZXJ5QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVTZWxlY3RRdWVyeUJ1aWxkZXIiO187Y29uZmlnO2pvaW5zTm90TnVsbGFibGVNYXA7dGFibGVOYW1lO2lzUGFydGlhbFNlbGVjdDtzZXNzaW9uO2RpYWxlY3Q7Y2FjaGVDb25maWc9dm9pZCAwO3VzZWRUYWJsZXM9bmV3IFNldDtjb25zdHJ1Y3Rvcih7dGFibGU6ZSxmaWVsZHM6cyxpc1BhcnRpYWxTZWxlY3Q6ZCxzZXNzaW9uOm0sZGlhbGVjdDpoLHdpdGhMaXN0OmcsZGlzdGluY3Q6eH0pe3N1cGVyKCksdGhpcy5jb25maWc9e3dpdGhMaXN0OmcsdGFibGU6ZSxmaWVsZHM6ey4uLnN9LGRpc3RpbmN0Ongsc2V0T3BlcmF0b3JzOltdfSx0aGlzLmlzUGFydGlhbFNlbGVjdD1kLHRoaXMuc2Vzc2lvbj1tLHRoaXMuZGlhbGVjdD1oLHRoaXMuXz17c2VsZWN0ZWRGaWVsZHM6cyxjb25maWc6dGhpcy5jb25maWd9LHRoaXMudGFibGVOYW1lPWdldFRhYmxlTGlrZU5hbWUoZSksdGhpcy5qb2luc05vdE51bGxhYmxlTWFwPSJzdHJpbmciPT10eXBlb2YgdGhpcy50YWJsZU5hbWU/e1t0aGlzLnRhYmxlTmFtZV06ITB9Ont9O2Zvcihjb25zdCBzIG9mIGV4dHJhY3RVc2VkVGFibGUoZSkpdGhpcy51c2VkVGFibGVzLmFkZChzKX1nZXRVc2VkVGFibGVzKCl7cmV0dXJuWy4uLnRoaXMudXNlZFRhYmxlc119Y3JlYXRlSm9pbihlKXtyZXR1cm4ocyxkKT0+e2NvbnN0IG09dGhpcy50YWJsZU5hbWUsaD1nZXRUYWJsZUxpa2VOYW1lKHMpO2Zvcihjb25zdCBlIG9mIGV4dHJhY3RVc2VkVGFibGUocykpdGhpcy51c2VkVGFibGVzLmFkZChlKTtpZigic3RyaW5nIj09dHlwZW9mIGgmJnRoaXMuY29uZmlnLmpvaW5zPy5zb21lKGU9PmUuYWxpYXM9PT1oKSl0aHJvdyBuZXcgRXJyb3IoYEFsaWFzICIke2h9IiBpcyBhbHJlYWR5IHVzZWQgaW4gdGhpcyBxdWVyeWApO2lmKCF0aGlzLmlzUGFydGlhbFNlbGVjdCYmKDE9PT1PYmplY3Qua2V5cyh0aGlzLmpvaW5zTm90TnVsbGFibGVNYXApLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBtJiYodGhpcy5jb25maWcuZmllbGRzPXtbbV06dGhpcy5jb25maWcuZmllbGRzfSksInN0cmluZyI9PXR5cGVvZiBoJiYhaXMocyxTUUwpKSl7Y29uc3QgZT1pcyhzLFN1YnF1ZXJ5KT9zLl8uc2VsZWN0ZWRGaWVsZHM6aXMocyxWaWV3KT9zW3d1XS5zZWxlY3RlZEZpZWxkczpzW1RhYmxlLlN5bWJvbC5Db2x1bW5zXTt0aGlzLmNvbmZpZy5maWVsZHNbaF09ZX1pZigiZnVuY3Rpb24iPT10eXBlb2YgZCYmKGQ9ZChuZXcgUHJveHkodGhpcy5jb25maWcuZmllbGRzLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe3NxbEFsaWFzZWRCZWhhdmlvcjoic3FsIixzcWxCZWhhdmlvcjoic3FsIn0pKSkpLHRoaXMuY29uZmlnLmpvaW5zfHwodGhpcy5jb25maWcuam9pbnM9W10pLHRoaXMuY29uZmlnLmpvaW5zLnB1c2goe29uOmQsdGFibGU6cyxqb2luVHlwZTplLGFsaWFzOmh9KSwic3RyaW5nIj09dHlwZW9mIGgpc3dpdGNoKGUpe2Nhc2UibGVmdCI6dGhpcy5qb2luc05vdE51bGxhYmxlTWFwW2hdPSExO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcD1PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModGhpcy5qb2luc05vdE51bGxhYmxlTWFwKS5tYXAoKFtlXSk9PltlLCExXSkpLHRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcFtoXT0hMDticmVhaztjYXNlImNyb3NzIjpjYXNlImlubmVyIjp0aGlzLmpvaW5zTm90TnVsbGFibGVNYXBbaF09ITA7YnJlYWs7Y2FzZSJmdWxsIjp0aGlzLmpvaW5zTm90TnVsbGFibGVNYXA9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcCkubWFwKChbZV0pPT5bZSwhMV0pKSx0aGlzLmpvaW5zTm90TnVsbGFibGVNYXBbaF09ITF9cmV0dXJuIHRoaXN9fWxlZnRKb2luPXRoaXMuY3JlYXRlSm9pbigibGVmdCIpO3JpZ2h0Sm9pbj10aGlzLmNyZWF0ZUpvaW4oInJpZ2h0Iik7aW5uZXJKb2luPXRoaXMuY3JlYXRlSm9pbigiaW5uZXIiKTtmdWxsSm9pbj10aGlzLmNyZWF0ZUpvaW4oImZ1bGwiKTtjcm9zc0pvaW49dGhpcy5jcmVhdGVKb2luKCJjcm9zcyIpO2NyZWF0ZVNldE9wZXJhdG9yKGUscyl7cmV0dXJuIGQ9Pntjb25zdCBtPSJmdW5jdGlvbiI9PXR5cGVvZiBkP2QoZ2V0U1FMaXRlU2V0T3BlcmF0b3JzKCkpOmQ7aWYoIWhhdmVTYW1lS2V5cyh0aGlzLmdldFNlbGVjdGVkRmllbGRzKCksbS5nZXRTZWxlY3RlZEZpZWxkcygpKSl0aHJvdyBuZXcgRXJyb3IoIlNldCBvcGVyYXRvciBlcnJvciAodW5pb24gLyBpbnRlcnNlY3QgLyBleGNlcHQpOiBzZWxlY3RlZCBmaWVsZHMgYXJlIG5vdCB0aGUgc2FtZSBvciBhcmUgaW4gYSBkaWZmZXJlbnQgb3JkZXIiKTtyZXR1cm4gdGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLnB1c2goe3R5cGU6ZSxpc0FsbDpzLHJpZ2h0U2VsZWN0Om19KSx0aGlzfX11bmlvbj10aGlzLmNyZWF0ZVNldE9wZXJhdG9yKCJ1bmlvbiIsITEpO3VuaW9uQWxsPXRoaXMuY3JlYXRlU2V0T3BlcmF0b3IoInVuaW9uIiwhMCk7aW50ZXJzZWN0PXRoaXMuY3JlYXRlU2V0T3BlcmF0b3IoImludGVyc2VjdCIsITEpO2V4Y2VwdD10aGlzLmNyZWF0ZVNldE9wZXJhdG9yKCJleGNlcHQiLCExKTthZGRTZXRPcGVyYXRvcnMoZSl7cmV0dXJuIHRoaXMuY29uZmlnLnNldE9wZXJhdG9ycy5wdXNoKC4uLmUpLHRoaXN9d2hlcmUoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUobmV3IFByb3h5KHRoaXMuY29uZmlnLmZpZWxkcyxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHtzcWxBbGlhc2VkQmVoYXZpb3I6InNxbCIsc3FsQmVoYXZpb3I6InNxbCJ9KSkpKSx0aGlzLmNvbmZpZy53aGVyZT1lLHRoaXN9aGF2aW5nKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKG5ldyBQcm94eSh0aGlzLmNvbmZpZy5maWVsZHMsbmV3IFNlbGVjdGlvblByb3h5SGFuZGxlcih7c3FsQWxpYXNlZEJlaGF2aW9yOiJzcWwiLHNxbEJlaGF2aW9yOiJzcWwifSkpKSksdGhpcy5jb25maWcuaGF2aW5nPWUsdGhpc31ncm91cEJ5KC4uLmUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlWzBdKXtjb25zdCBzPWVbMF0obmV3IFByb3h5KHRoaXMuY29uZmlnLmZpZWxkcyxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHtzcWxBbGlhc2VkQmVoYXZpb3I6ImFsaWFzIixzcWxCZWhhdmlvcjoic3FsIn0pKSk7dGhpcy5jb25maWcuZ3JvdXBCeT1BcnJheS5pc0FycmF5KHMpP3M6W3NdfWVsc2UgdGhpcy5jb25maWcuZ3JvdXBCeT1lO3JldHVybiB0aGlzfW9yZGVyQnkoLi4uZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGVbMF0pe2NvbnN0IHM9ZVswXShuZXcgUHJveHkodGhpcy5jb25maWcuZmllbGRzLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe3NxbEFsaWFzZWRCZWhhdmlvcjoiYWxpYXMiLHNxbEJlaGF2aW9yOiJzcWwifSkpKSxkPUFycmF5LmlzQXJyYXkocyk/czpbc107dGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLmxlbmd0aD4wP3RoaXMuY29uZmlnLnNldE9wZXJhdG9ycy5hdCgtMSkub3JkZXJCeT1kOnRoaXMuY29uZmlnLm9yZGVyQnk9ZH1lbHNle2NvbnN0IHM9ZTt0aGlzLmNvbmZpZy5zZXRPcGVyYXRvcnMubGVuZ3RoPjA/dGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLmF0KC0xKS5vcmRlckJ5PXM6dGhpcy5jb25maWcub3JkZXJCeT1zfXJldHVybiB0aGlzfWxpbWl0KGUpe3JldHVybiB0aGlzLmNvbmZpZy5zZXRPcGVyYXRvcnMubGVuZ3RoPjA/dGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLmF0KC0xKS5saW1pdD1lOnRoaXMuY29uZmlnLmxpbWl0PWUsdGhpc31vZmZzZXQoZSl7cmV0dXJuIHRoaXMuY29uZmlnLnNldE9wZXJhdG9ycy5sZW5ndGg+MD90aGlzLmNvbmZpZy5zZXRPcGVyYXRvcnMuYXQoLTEpLm9mZnNldD1lOnRoaXMuY29uZmlnLm9mZnNldD1lLHRoaXN9Z2V0U1FMKCl7cmV0dXJuIHRoaXMuZGlhbGVjdC5idWlsZFNlbGVjdFF1ZXJ5KHRoaXMuY29uZmlnKX10b1NRTCgpe2NvbnN0e3R5cGluZ3M6ZSwuLi5zfT10aGlzLmRpYWxlY3Quc3FsVG9RdWVyeSh0aGlzLmdldFNRTCgpKTtyZXR1cm4gc31hcyhlKXtjb25zdCBzPVtdO2lmKHMucHVzaCguLi5leHRyYWN0VXNlZFRhYmxlKHRoaXMuY29uZmlnLnRhYmxlKSksdGhpcy5jb25maWcuam9pbnMpZm9yKGNvbnN0IGUgb2YgdGhpcy5jb25maWcuam9pbnMpcy5wdXNoKC4uLmV4dHJhY3RVc2VkVGFibGUoZS50YWJsZSkpO3JldHVybiBuZXcgUHJveHkobmV3IFN1YnF1ZXJ5KHRoaXMuZ2V0U1FMKCksdGhpcy5jb25maWcuZmllbGRzLGUsITEsWy4uLm5ldyBTZXQocyldKSxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHthbGlhczplLHNxbEFsaWFzZWRCZWhhdmlvcjoiYWxpYXMiLHNxbEJlaGF2aW9yOiJlcnJvciJ9KSl9Z2V0U2VsZWN0ZWRGaWVsZHMoKXtyZXR1cm4gbmV3IFByb3h5KHRoaXMuY29uZmlnLmZpZWxkcyxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHthbGlhczp0aGlzLnRhYmxlTmFtZSxzcWxBbGlhc2VkQmVoYXZpb3I6ImFsaWFzIixzcWxCZWhhdmlvcjoiZXJyb3IifSkpfSRkeW5hbWljKCl7cmV0dXJuIHRoaXN9fWNsYXNzIFNRTGl0ZVNlbGVjdEJhc2UgZXh0ZW5kcyBTUUxpdGVTZWxlY3RRdWVyeUJ1aWxkZXJCYXNle3N0YXRpY1t1dV09IlNRTGl0ZVNlbGVjdCI7X3ByZXBhcmUoZT0hMCl7aWYoIXRoaXMuc2Vzc2lvbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleGVjdXRlIGEgcXVlcnkgb24gYSBxdWVyeSBidWlsZGVyLiBQbGVhc2UgdXNlIGEgZGF0YWJhc2UgaW5zdGFuY2UgaW5zdGVhZC4iKTtjb25zdCBzPW9yZGVyU2VsZWN0ZWRGaWVsZHModGhpcy5jb25maWcuZmllbGRzKSxkPXRoaXMuc2Vzc2lvbltlPyJwcmVwYXJlT25lVGltZVF1ZXJ5IjoicHJlcGFyZVF1ZXJ5Il0odGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSkscywiYWxsIiwhMCx2b2lkIDAse3R5cGU6InNlbGVjdCIsdGFibGVzOlsuLi50aGlzLnVzZWRUYWJsZXNdfSx0aGlzLmNhY2hlQ29uZmlnKTtyZXR1cm4gZC5qb2luc05vdE51bGxhYmxlTWFwPXRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcCxkfSR3aXRoQ2FjaGUoZSl7cmV0dXJuIHRoaXMuY2FjaGVDb25maWc9dm9pZCAwPT09ZT97Y29uZmlnOnt9LGVuYWJsZTohMCxhdXRvSW52YWxpZGF0ZTohMH06ITE9PT1lP3tlbmFibGU6ITF9OntlbmFibGU6ITAsYXV0b0ludmFsaWRhdGU6ITAsLi4uZX0sdGhpc31wcmVwYXJlKCl7cmV0dXJuIHRoaXMuX3ByZXBhcmUoITEpfXJ1bj1lPT50aGlzLl9wcmVwYXJlKCkucnVuKGUpO2FsbD1lPT50aGlzLl9wcmVwYXJlKCkuYWxsKGUpO2dldD1lPT50aGlzLl9wcmVwYXJlKCkuZ2V0KGUpO3ZhbHVlcz1lPT50aGlzLl9wcmVwYXJlKCkudmFsdWVzKGUpO2FzeW5jIGV4ZWN1dGUoKXtyZXR1cm4gdGhpcy5hbGwoKX19ZnVuY3Rpb24gY3JlYXRlU2V0T3BlcmF0b3IoZSxzKXtyZXR1cm4oZCxtLC4uLmgpPT57Y29uc3QgZz1bbSwuLi5oXS5tYXAoZD0+KHt0eXBlOmUsaXNBbGw6cyxyaWdodFNlbGVjdDpkfSkpO2Zvcihjb25zdCBlIG9mIGcpaWYoIWhhdmVTYW1lS2V5cyhkLmdldFNlbGVjdGVkRmllbGRzKCksZS5yaWdodFNlbGVjdC5nZXRTZWxlY3RlZEZpZWxkcygpKSl0aHJvdyBuZXcgRXJyb3IoIlNldCBvcGVyYXRvciBlcnJvciAodW5pb24gLyBpbnRlcnNlY3QgLyBleGNlcHQpOiBzZWxlY3RlZCBmaWVsZHMgYXJlIG5vdCB0aGUgc2FtZSBvciBhcmUgaW4gYSBkaWZmZXJlbnQgb3JkZXIiKTtyZXR1cm4gZC5hZGRTZXRPcGVyYXRvcnMoZyl9fSFmdW5jdGlvbihlLHMpe2Zvcihjb25zdCBkIG9mIHMpZm9yKGNvbnN0IHMgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZC5wcm90b3R5cGUpKSJjb25zdHJ1Y3RvciIhPT1zJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUscyxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQucHJvdG90eXBlLHMpfHxPYmplY3QuY3JlYXRlKG51bGwpKX0oU1FMaXRlU2VsZWN0QmFzZSxbUXVlcnlQcm9taXNlXSk7Y29uc3QgZ2V0U1FMaXRlU2V0T3BlcmF0b3JzPSgpPT4oe3VuaW9uOk91LHVuaW9uQWxsOlB1LGludGVyc2VjdDpOdSxleGNlcHQ6RHV9KSxPdT1jcmVhdGVTZXRPcGVyYXRvcigidW5pb24iLCExKSxQdT1jcmVhdGVTZXRPcGVyYXRvcigidW5pb24iLCEwKSxOdT1jcmVhdGVTZXRPcGVyYXRvcigiaW50ZXJzZWN0IiwhMSksRHU9Y3JlYXRlU2V0T3BlcmF0b3IoImV4Y2VwdCIsITEpO2NsYXNzIFF1ZXJ5QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVRdWVyeUJ1aWxkZXIiO2RpYWxlY3Q7ZGlhbGVjdENvbmZpZztjb25zdHJ1Y3RvcihlKXt0aGlzLmRpYWxlY3Q9aXMoZSxTUUxpdGVEaWFsZWN0KT9lOnZvaWQgMCx0aGlzLmRpYWxlY3RDb25maWc9aXMoZSxTUUxpdGVEaWFsZWN0KT92b2lkIDA6ZX0kd2l0aD0oZSxzKT0+e2NvbnN0IGQ9dGhpcztyZXR1cm57YXM6bT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBtJiYobT1tKGQpKSxuZXcgUHJveHkobmV3IFdpdGhTdWJxdWVyeShtLmdldFNRTCgpLHM/PygiZ2V0U2VsZWN0ZWRGaWVsZHMiaW4gbT9tLmdldFNlbGVjdGVkRmllbGRzKCk/P3t9Ont9KSxlLCEwKSxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHthbGlhczplLHNxbEFsaWFzZWRCZWhhdmlvcjoiYWxpYXMiLHNxbEJlaGF2aW9yOiJlcnJvciJ9KSkpfX07d2l0aCguLi5lKXtjb25zdCBzPXRoaXM7cmV0dXJue3NlbGVjdDpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczpkPz92b2lkIDAsc2Vzc2lvbjp2b2lkIDAsZGlhbGVjdDpzLmdldERpYWxlY3QoKSx3aXRoTGlzdDplfSl9LHNlbGVjdERpc3RpbmN0OmZ1bmN0aW9uKGQpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmQ/P3ZvaWQgMCxzZXNzaW9uOnZvaWQgMCxkaWFsZWN0OnMuZ2V0RGlhbGVjdCgpLHdpdGhMaXN0OmUsZGlzdGluY3Q6ITB9KX19fXNlbGVjdChlKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczplPz92b2lkIDAsc2Vzc2lvbjp2b2lkIDAsZGlhbGVjdDp0aGlzLmdldERpYWxlY3QoKX0pfXNlbGVjdERpc3RpbmN0KGUpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmU/P3ZvaWQgMCxzZXNzaW9uOnZvaWQgMCxkaWFsZWN0OnRoaXMuZ2V0RGlhbGVjdCgpLGRpc3RpbmN0OiEwfSl9Z2V0RGlhbGVjdCgpe3JldHVybiB0aGlzLmRpYWxlY3R8fCh0aGlzLmRpYWxlY3Q9bmV3IFNRTGl0ZVN5bmNEaWFsZWN0KHRoaXMuZGlhbGVjdENvbmZpZykpLHRoaXMuZGlhbGVjdH19Y2xhc3MgU1FMaXRlSW5zZXJ0QnVpbGRlcntjb25zdHJ1Y3RvcihlLHMsZCxtKXt0aGlzLnRhYmxlPWUsdGhpcy5zZXNzaW9uPXMsdGhpcy5kaWFsZWN0PWQsdGhpcy53aXRoTGlzdD1tfXN0YXRpY1t1dV09IlNRTGl0ZUluc2VydEJ1aWxkZXIiO3ZhbHVlcyhlKXtpZigwPT09KGU9QXJyYXkuaXNBcnJheShlKT9lOltlXSkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigidmFsdWVzKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhdCBsZWFzdCBvbmUgdmFsdWUiKTtjb25zdCBzPWUubWFwKGU9Pntjb25zdCBzPXt9LGQ9dGhpcy50YWJsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc107Zm9yKGNvbnN0IG0gb2YgT2JqZWN0LmtleXMoZSkpe2NvbnN0IGg9ZVttXTtzW21dPWlzKGgsU1FMKT9oOm5ldyBQYXJhbShoLGRbbV0pfXJldHVybiBzfSk7cmV0dXJuIG5ldyBTUUxpdGVJbnNlcnRCYXNlKHRoaXMudGFibGUscyx0aGlzLnNlc3Npb24sdGhpcy5kaWFsZWN0LHRoaXMud2l0aExpc3QpfXNlbGVjdChlKXtjb25zdCBzPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UobmV3IFF1ZXJ5QnVpbGRlcik6ZTtpZighaXMocyxTUUwpJiYhaGF2ZVNhbWVLZXlzKHRoaXMudGFibGVbbXVdLHMuXy5zZWxlY3RlZEZpZWxkcykpdGhyb3cgbmV3IEVycm9yKCJJbnNlcnQgc2VsZWN0IGVycm9yOiBzZWxlY3RlZCBmaWVsZHMgYXJlIG5vdCB0aGUgc2FtZSBvciBhcmUgaW4gYSBkaWZmZXJlbnQgb3JkZXIgY29tcGFyZWQgdG8gdGhlIHRhYmxlIGRlZmluaXRpb24iKTtyZXR1cm4gbmV3IFNRTGl0ZUluc2VydEJhc2UodGhpcy50YWJsZSxzLHRoaXMuc2Vzc2lvbix0aGlzLmRpYWxlY3QsdGhpcy53aXRoTGlzdCwhMCl9fWNsYXNzIFNRTGl0ZUluc2VydEJhc2UgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoLGcpe3N1cGVyKCksdGhpcy5zZXNzaW9uPWQsdGhpcy5kaWFsZWN0PW0sdGhpcy5jb25maWc9e3RhYmxlOmUsdmFsdWVzOnMsd2l0aExpc3Q6aCxzZWxlY3Q6Z319c3RhdGljW3V1XT0iU1FMaXRlSW5zZXJ0Ijtjb25maWc7cmV0dXJuaW5nKGU9dGhpcy5jb25maWcudGFibGVbU1FMaXRlVGFibGUuU3ltYm9sLkNvbHVtbnNdKXtyZXR1cm4gdGhpcy5jb25maWcucmV0dXJuaW5nPW9yZGVyU2VsZWN0ZWRGaWVsZHMoZSksdGhpc31vbkNvbmZsaWN0RG9Ob3RoaW5nKGU9e30pe2lmKHRoaXMuY29uZmlnLm9uQ29uZmxpY3R8fCh0aGlzLmNvbmZpZy5vbkNvbmZsaWN0PVtdKSx2b2lkIDA9PT1lLnRhcmdldCl0aGlzLmNvbmZpZy5vbkNvbmZsaWN0LnB1c2goc3FsYCBvbiBjb25mbGljdCBkbyBub3RoaW5nYCk7ZWxzZXtjb25zdCBzPUFycmF5LmlzQXJyYXkoZS50YXJnZXQpP3NxbGAke2UudGFyZ2V0fWA6c3FsYCR7W2UudGFyZ2V0XX1gLGQ9ZS53aGVyZT9zcWxgIHdoZXJlICR7ZS53aGVyZX1gOnNxbGBgO3RoaXMuY29uZmlnLm9uQ29uZmxpY3QucHVzaChzcWxgIG9uIGNvbmZsaWN0ICR7c30gZG8gbm90aGluZyR7ZH1gKX1yZXR1cm4gdGhpc31vbkNvbmZsaWN0RG9VcGRhdGUoZSl7aWYoZS53aGVyZSYmKGUudGFyZ2V0V2hlcmV8fGUuc2V0V2hlcmUpKXRocm93IG5ldyBFcnJvcignWW91IGNhbm5vdCB1c2UgYm90aCAid2hlcmUiIGFuZCAidGFyZ2V0V2hlcmUiLyJzZXRXaGVyZSIgYXQgdGhlIHNhbWUgdGltZSAtICJ3aGVyZSIgaXMgZGVwcmVjYXRlZCwgdXNlICJ0YXJnZXRXaGVyZSIgb3IgInNldFdoZXJlIiBpbnN0ZWFkLicpO3RoaXMuY29uZmlnLm9uQ29uZmxpY3R8fCh0aGlzLmNvbmZpZy5vbkNvbmZsaWN0PVtdKTtjb25zdCBzPWUud2hlcmU/c3FsYCB3aGVyZSAke2Uud2hlcmV9YDp2b2lkIDAsZD1lLnRhcmdldFdoZXJlP3NxbGAgd2hlcmUgJHtlLnRhcmdldFdoZXJlfWA6dm9pZCAwLG09ZS5zZXRXaGVyZT9zcWxgIHdoZXJlICR7ZS5zZXRXaGVyZX1gOnZvaWQgMCxoPUFycmF5LmlzQXJyYXkoZS50YXJnZXQpP3NxbGAke2UudGFyZ2V0fWA6c3FsYCR7W2UudGFyZ2V0XX1gLGc9dGhpcy5kaWFsZWN0LmJ1aWxkVXBkYXRlU2V0KHRoaXMuY29uZmlnLnRhYmxlLG1hcFVwZGF0ZVNldCh0aGlzLmNvbmZpZy50YWJsZSxlLnNldCkpO3JldHVybiB0aGlzLmNvbmZpZy5vbkNvbmZsaWN0LnB1c2goc3FsYCBvbiBjb25mbGljdCAke2h9JHtkfSBkbyB1cGRhdGUgc2V0ICR7Z30ke3N9JHttfWApLHRoaXN9Z2V0U1FMKCl7cmV0dXJuIHRoaXMuZGlhbGVjdC5idWlsZEluc2VydFF1ZXJ5KHRoaXMuY29uZmlnKX10b1NRTCgpe2NvbnN0e3R5cGluZ3M6ZSwuLi5zfT10aGlzLmRpYWxlY3Quc3FsVG9RdWVyeSh0aGlzLmdldFNRTCgpKTtyZXR1cm4gc31fcHJlcGFyZShlPSEwKXtyZXR1cm4gdGhpcy5zZXNzaW9uW2U/InByZXBhcmVPbmVUaW1lUXVlcnkiOiJwcmVwYXJlUXVlcnkiXSh0aGlzLmRpYWxlY3Quc3FsVG9RdWVyeSh0aGlzLmdldFNRTCgpKSx0aGlzLmNvbmZpZy5yZXR1cm5pbmcsdGhpcy5jb25maWcucmV0dXJuaW5nPyJhbGwiOiJydW4iLCEwLHZvaWQgMCx7dHlwZToiaW5zZXJ0Iix0YWJsZXM6ZXh0cmFjdFVzZWRUYWJsZSh0aGlzLmNvbmZpZy50YWJsZSl9KX1wcmVwYXJlKCl7cmV0dXJuIHRoaXMuX3ByZXBhcmUoITEpfXJ1bj1lPT50aGlzLl9wcmVwYXJlKCkucnVuKGUpO2FsbD1lPT50aGlzLl9wcmVwYXJlKCkuYWxsKGUpO2dldD1lPT50aGlzLl9wcmVwYXJlKCkuZ2V0KGUpO3ZhbHVlcz1lPT50aGlzLl9wcmVwYXJlKCkudmFsdWVzKGUpO2FzeW5jIGV4ZWN1dGUoKXtyZXR1cm4gdGhpcy5jb25maWcucmV0dXJuaW5nP3RoaXMuYWxsKCk6dGhpcy5ydW4oKX0kZHluYW1pYygpe3JldHVybiB0aGlzfX1jbGFzcyBTUUxpdGVVcGRhdGVCdWlsZGVye2NvbnN0cnVjdG9yKGUscyxkLG0pe3RoaXMudGFibGU9ZSx0aGlzLnNlc3Npb249cyx0aGlzLmRpYWxlY3Q9ZCx0aGlzLndpdGhMaXN0PW19c3RhdGljW3V1XT0iU1FMaXRlVXBkYXRlQnVpbGRlciI7c2V0KGUpe3JldHVybiBuZXcgU1FMaXRlVXBkYXRlQmFzZSh0aGlzLnRhYmxlLG1hcFVwZGF0ZVNldCh0aGlzLnRhYmxlLGUpLHRoaXMuc2Vzc2lvbix0aGlzLmRpYWxlY3QsdGhpcy53aXRoTGlzdCl9fWNsYXNzIFNRTGl0ZVVwZGF0ZUJhc2UgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoKXtzdXBlcigpLHRoaXMuc2Vzc2lvbj1kLHRoaXMuZGlhbGVjdD1tLHRoaXMuY29uZmlnPXtzZXQ6cyx0YWJsZTplLHdpdGhMaXN0Omgsam9pbnM6W119fXN0YXRpY1t1dV09IlNRTGl0ZVVwZGF0ZSI7Y29uZmlnO2Zyb20oZSl7cmV0dXJuIHRoaXMuY29uZmlnLmZyb209ZSx0aGlzfWNyZWF0ZUpvaW4oZSl7cmV0dXJuKHMsZCk9Pntjb25zdCBtPWdldFRhYmxlTGlrZU5hbWUocyk7aWYoInN0cmluZyI9PXR5cGVvZiBtJiZ0aGlzLmNvbmZpZy5qb2lucy5zb21lKGU9PmUuYWxpYXM9PT1tKSl0aHJvdyBuZXcgRXJyb3IoYEFsaWFzICIke219IiBpcyBhbHJlYWR5IHVzZWQgaW4gdGhpcyBxdWVyeWApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkKXtjb25zdCBlPXRoaXMuY29uZmlnLmZyb20/aXMocyxTUUxpdGVUYWJsZSk/c1tUYWJsZS5TeW1ib2wuQ29sdW1uc106aXMocyxTdWJxdWVyeSk/cy5fLnNlbGVjdGVkRmllbGRzOmlzKHMsU1FMaXRlVmlld0Jhc2UpP3Nbd3VdLnNlbGVjdGVkRmllbGRzOnZvaWQgMDp2b2lkIDA7ZD1kKG5ldyBQcm94eSh0aGlzLmNvbmZpZy50YWJsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10sbmV3IFNlbGVjdGlvblByb3h5SGFuZGxlcih7c3FsQWxpYXNlZEJlaGF2aW9yOiJzcWwiLHNxbEJlaGF2aW9yOiJzcWwifSkpLGUmJm5ldyBQcm94eShlLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe3NxbEFsaWFzZWRCZWhhdmlvcjoic3FsIixzcWxCZWhhdmlvcjoic3FsIn0pKSl9cmV0dXJuIHRoaXMuY29uZmlnLmpvaW5zLnB1c2goe29uOmQsdGFibGU6cyxqb2luVHlwZTplLGFsaWFzOm19KSx0aGlzfX1sZWZ0Sm9pbj10aGlzLmNyZWF0ZUpvaW4oImxlZnQiKTtyaWdodEpvaW49dGhpcy5jcmVhdGVKb2luKCJyaWdodCIpO2lubmVySm9pbj10aGlzLmNyZWF0ZUpvaW4oImlubmVyIik7ZnVsbEpvaW49dGhpcy5jcmVhdGVKb2luKCJmdWxsIik7d2hlcmUoZSl7cmV0dXJuIHRoaXMuY29uZmlnLndoZXJlPWUsdGhpc31vcmRlckJ5KC4uLmUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlWzBdKXtjb25zdCBzPWVbMF0obmV3IFByb3h5KHRoaXMuY29uZmlnLnRhYmxlW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHtzcWxBbGlhc2VkQmVoYXZpb3I6ImFsaWFzIixzcWxCZWhhdmlvcjoic3FsIn0pKSksZD1BcnJheS5pc0FycmF5KHMpP3M6W3NdO3RoaXMuY29uZmlnLm9yZGVyQnk9ZH1lbHNle2NvbnN0IHM9ZTt0aGlzLmNvbmZpZy5vcmRlckJ5PXN9cmV0dXJuIHRoaXN9bGltaXQoZSl7cmV0dXJuIHRoaXMuY29uZmlnLmxpbWl0PWUsdGhpc31yZXR1cm5pbmcoZT10aGlzLmNvbmZpZy50YWJsZVtTUUxpdGVUYWJsZS5TeW1ib2wuQ29sdW1uc10pe3JldHVybiB0aGlzLmNvbmZpZy5yZXR1cm5pbmc9b3JkZXJTZWxlY3RlZEZpZWxkcyhlKSx0aGlzfWdldFNRTCgpe3JldHVybiB0aGlzLmRpYWxlY3QuYnVpbGRVcGRhdGVRdWVyeSh0aGlzLmNvbmZpZyl9dG9TUUwoKXtjb25zdHt0eXBpbmdzOmUsLi4uc309dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSk7cmV0dXJuIHN9X3ByZXBhcmUoZT0hMCl7cmV0dXJuIHRoaXMuc2Vzc2lvbltlPyJwcmVwYXJlT25lVGltZVF1ZXJ5IjoicHJlcGFyZVF1ZXJ5Il0odGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSksdGhpcy5jb25maWcucmV0dXJuaW5nLHRoaXMuY29uZmlnLnJldHVybmluZz8iYWxsIjoicnVuIiwhMCx2b2lkIDAse3R5cGU6Imluc2VydCIsdGFibGVzOmV4dHJhY3RVc2VkVGFibGUodGhpcy5jb25maWcudGFibGUpfSl9cHJlcGFyZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlKCExKX1ydW49ZT0+dGhpcy5fcHJlcGFyZSgpLnJ1bihlKTthbGw9ZT0+dGhpcy5fcHJlcGFyZSgpLmFsbChlKTtnZXQ9ZT0+dGhpcy5fcHJlcGFyZSgpLmdldChlKTt2YWx1ZXM9ZT0+dGhpcy5fcHJlcGFyZSgpLnZhbHVlcyhlKTthc3luYyBleGVjdXRlKCl7cmV0dXJuIHRoaXMuY29uZmlnLnJldHVybmluZz90aGlzLmFsbCgpOnRoaXMucnVuKCl9JGR5bmFtaWMoKXtyZXR1cm4gdGhpc319Y2xhc3MgU1FMaXRlQ291bnRCdWlsZGVyIGV4dGVuZHMgU1FMe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFNRTGl0ZUNvdW50QnVpbGRlci5idWlsZEVtYmVkZGVkQ291bnQoZS5zb3VyY2UsZS5maWx0ZXJzKS5xdWVyeUNodW5rcyksdGhpcy5wYXJhbXM9ZSx0aGlzLnNlc3Npb249ZS5zZXNzaW9uLHRoaXMuc3FsPVNRTGl0ZUNvdW50QnVpbGRlci5idWlsZENvdW50KGUuc291cmNlLGUuZmlsdGVycyl9c3FsO3N0YXRpY1t1dV09IlNRTGl0ZUNvdW50QnVpbGRlckFzeW5jIjtbU3ltYm9sLnRvU3RyaW5nVGFnXT0iU1FMaXRlQ291bnRCdWlsZGVyQXN5bmMiO3Nlc3Npb247c3RhdGljIGJ1aWxkRW1iZWRkZWRDb3VudChlLHMpe3JldHVybiBzcWxgKHNlbGVjdCBjb3VudCgqKSBmcm9tICR7ZX0ke3NxbC5yYXcoIiB3aGVyZSAiKS5pZihzKX0ke3N9KWB9c3RhdGljIGJ1aWxkQ291bnQoZSxzKXtyZXR1cm4gc3FsYHNlbGVjdCBjb3VudCgqKSBmcm9tICR7ZX0ke3NxbC5yYXcoIiB3aGVyZSAiKS5pZihzKX0ke3N9YH10aGVuKGUscyl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnNlc3Npb24uY291bnQodGhpcy5zcWwpKS50aGVuKGUscyl9Y2F0Y2goZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9ZmluYWxseShlKXtyZXR1cm4gdGhpcy50aGVuKHM9PihlPy4oKSxzKSxzPT57dGhyb3cgZT8uKCksc30pfX1jbGFzcyBSZWxhdGlvbmFsUXVlcnlCdWlsZGVye2NvbnN0cnVjdG9yKGUscyxkLG0saCxnLHgsJCl7dGhpcy5tb2RlPWUsdGhpcy5mdWxsU2NoZW1hPXMsdGhpcy5zY2hlbWE9ZCx0aGlzLnRhYmxlTmFtZXNNYXA9bSx0aGlzLnRhYmxlPWgsdGhpcy50YWJsZUNvbmZpZz1nLHRoaXMuZGlhbGVjdD14LHRoaXMuc2Vzc2lvbj0kfXN0YXRpY1t1dV09IlNRTGl0ZUFzeW5jUmVsYXRpb25hbFF1ZXJ5QnVpbGRlciI7ZmluZE1hbnkoZSl7cmV0dXJuInN5bmMiPT09dGhpcy5tb2RlP25ldyBTUUxpdGVTeW5jUmVsYXRpb25hbFF1ZXJ5KHRoaXMuZnVsbFNjaGVtYSx0aGlzLnNjaGVtYSx0aGlzLnRhYmxlTmFtZXNNYXAsdGhpcy50YWJsZSx0aGlzLnRhYmxlQ29uZmlnLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24sZXx8e30sIm1hbnkiKTpuZXcgU1FMaXRlUmVsYXRpb25hbFF1ZXJ5KHRoaXMuZnVsbFNjaGVtYSx0aGlzLnNjaGVtYSx0aGlzLnRhYmxlTmFtZXNNYXAsdGhpcy50YWJsZSx0aGlzLnRhYmxlQ29uZmlnLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24sZXx8e30sIm1hbnkiKX1maW5kRmlyc3QoZSl7cmV0dXJuInN5bmMiPT09dGhpcy5tb2RlP25ldyBTUUxpdGVTeW5jUmVsYXRpb25hbFF1ZXJ5KHRoaXMuZnVsbFNjaGVtYSx0aGlzLnNjaGVtYSx0aGlzLnRhYmxlTmFtZXNNYXAsdGhpcy50YWJsZSx0aGlzLnRhYmxlQ29uZmlnLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24sZT97Li4uZSxsaW1pdDoxfTp7bGltaXQ6MX0sImZpcnN0Iik6bmV3IFNRTGl0ZVJlbGF0aW9uYWxRdWVyeSh0aGlzLmZ1bGxTY2hlbWEsdGhpcy5zY2hlbWEsdGhpcy50YWJsZU5hbWVzTWFwLHRoaXMudGFibGUsdGhpcy50YWJsZUNvbmZpZyx0aGlzLmRpYWxlY3QsdGhpcy5zZXNzaW9uLGU/ey4uLmUsbGltaXQ6MX06e2xpbWl0OjF9LCJmaXJzdCIpfX1jbGFzcyBTUUxpdGVSZWxhdGlvbmFsUXVlcnkgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoLGcseCwkLFMpe3N1cGVyKCksdGhpcy5mdWxsU2NoZW1hPWUsdGhpcy5zY2hlbWE9cyx0aGlzLnRhYmxlTmFtZXNNYXA9ZCx0aGlzLnRhYmxlPW0sdGhpcy50YWJsZUNvbmZpZz1oLHRoaXMuZGlhbGVjdD1nLHRoaXMuc2Vzc2lvbj14LHRoaXMuY29uZmlnPSQsdGhpcy5tb2RlPVN9c3RhdGljW3V1XT0iU1FMaXRlQXN5bmNSZWxhdGlvbmFsUXVlcnkiO21vZGU7Z2V0U1FMKCl7cmV0dXJuIHRoaXMuZGlhbGVjdC5idWlsZFJlbGF0aW9uYWxRdWVyeSh7ZnVsbFNjaGVtYTp0aGlzLmZ1bGxTY2hlbWEsc2NoZW1hOnRoaXMuc2NoZW1hLHRhYmxlTmFtZXNNYXA6dGhpcy50YWJsZU5hbWVzTWFwLHRhYmxlOnRoaXMudGFibGUsdGFibGVDb25maWc6dGhpcy50YWJsZUNvbmZpZyxxdWVyeUNvbmZpZzp0aGlzLmNvbmZpZyx0YWJsZUFsaWFzOnRoaXMudGFibGVDb25maWcudHNOYW1lfSkuc3FsfV9wcmVwYXJlKGU9ITEpe2NvbnN0e3F1ZXJ5OnMsYnVpbHRRdWVyeTpkfT10aGlzLl90b1NRTCgpO3JldHVybiB0aGlzLnNlc3Npb25bZT8icHJlcGFyZU9uZVRpbWVRdWVyeSI6InByZXBhcmVRdWVyeSJdKGQsdm9pZCAwLCJmaXJzdCI9PT10aGlzLm1vZGU/ImdldCI6ImFsbCIsITAsKGUsZCk9Pntjb25zdCBtPWUubWFwKGU9Pm1hcFJlbGF0aW9uYWxSb3codGhpcy5zY2hlbWEsdGhpcy50YWJsZUNvbmZpZyxlLHMuc2VsZWN0aW9uLGQpKTtyZXR1cm4iZmlyc3QiPT09dGhpcy5tb2RlP21bMF06bX0pfXByZXBhcmUoKXtyZXR1cm4gdGhpcy5fcHJlcGFyZSghMSl9X3RvU1FMKCl7Y29uc3QgZT10aGlzLmRpYWxlY3QuYnVpbGRSZWxhdGlvbmFsUXVlcnkoe2Z1bGxTY2hlbWE6dGhpcy5mdWxsU2NoZW1hLHNjaGVtYTp0aGlzLnNjaGVtYSx0YWJsZU5hbWVzTWFwOnRoaXMudGFibGVOYW1lc01hcCx0YWJsZTp0aGlzLnRhYmxlLHRhYmxlQ29uZmlnOnRoaXMudGFibGVDb25maWcscXVlcnlDb25maWc6dGhpcy5jb25maWcsdGFibGVBbGlhczp0aGlzLnRhYmxlQ29uZmlnLnRzTmFtZX0pO3JldHVybntxdWVyeTplLGJ1aWx0UXVlcnk6dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkoZS5zcWwpfX10b1NRTCgpe3JldHVybiB0aGlzLl90b1NRTCgpLmJ1aWx0UXVlcnl9ZXhlY3V0ZVJhdygpe3JldHVybiJmaXJzdCI9PT10aGlzLm1vZGU/dGhpcy5fcHJlcGFyZSghMSkuZ2V0KCk6dGhpcy5fcHJlcGFyZSghMSkuYWxsKCl9YXN5bmMgZXhlY3V0ZSgpe3JldHVybiB0aGlzLmV4ZWN1dGVSYXcoKX19Y2xhc3MgU1FMaXRlU3luY1JlbGF0aW9uYWxRdWVyeSBleHRlbmRzIFNRTGl0ZVJlbGF0aW9uYWxRdWVyeXtzdGF0aWNbdXVdPSJTUUxpdGVTeW5jUmVsYXRpb25hbFF1ZXJ5IjtzeW5jKCl7cmV0dXJuIHRoaXMuZXhlY3V0ZVJhdygpfX1jbGFzcyBTUUxpdGVSYXcgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoKXtzdXBlcigpLHRoaXMuZXhlY3V0ZT1lLHRoaXMuZ2V0U1FMPXMsdGhpcy5kaWFsZWN0PW0sdGhpcy5tYXBCYXRjaFJlc3VsdD1oLHRoaXMuY29uZmlnPXthY3Rpb246ZH19c3RhdGljW3V1XT0iU1FMaXRlUmF3Ijtjb25maWc7Z2V0UXVlcnkoKXtyZXR1cm57Li4udGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSksbWV0aG9kOnRoaXMuY29uZmlnLmFjdGlvbn19bWFwUmVzdWx0KGUscyl7cmV0dXJuIHM/dGhpcy5tYXBCYXRjaFJlc3VsdChlKTplfV9wcmVwYXJlKCl7cmV0dXJuIHRoaXN9aXNSZXNwb25zZUluQXJyYXlNb2RlKCl7cmV0dXJuITF9fWNsYXNzIEJhc2VTUUxpdGVEYXRhYmFzZXtjb25zdHJ1Y3RvcihlLHMsZCxtKXt0aGlzLnJlc3VsdEtpbmQ9ZSx0aGlzLmRpYWxlY3Q9cyx0aGlzLnNlc3Npb249ZCx0aGlzLl89bT97c2NoZW1hOm0uc2NoZW1hLGZ1bGxTY2hlbWE6bS5mdWxsU2NoZW1hLHRhYmxlTmFtZXNNYXA6bS50YWJsZU5hbWVzTWFwfTp7c2NoZW1hOnZvaWQgMCxmdWxsU2NoZW1hOnt9LHRhYmxlTmFtZXNNYXA6e319LHRoaXMucXVlcnk9e307Y29uc3QgaD10aGlzLnF1ZXJ5O2lmKHRoaXMuXy5zY2hlbWEpZm9yKGNvbnN0W2cseF1vZiBPYmplY3QuZW50cmllcyh0aGlzLl8uc2NoZW1hKSloW2ddPW5ldyBSZWxhdGlvbmFsUXVlcnlCdWlsZGVyKGUsbS5mdWxsU2NoZW1hLHRoaXMuXy5zY2hlbWEsdGhpcy5fLnRhYmxlTmFtZXNNYXAsbS5mdWxsU2NoZW1hW2ddLHgscyxkKTt0aGlzLiRjYWNoZT17aW52YWxpZGF0ZTphc3luYyBlPT57fX19c3RhdGljW3V1XT0iQmFzZVNRTGl0ZURhdGFiYXNlIjtxdWVyeTskd2l0aD0oZSxzKT0+e2NvbnN0IGQ9dGhpcztyZXR1cm57YXM6bT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBtJiYobT1tKG5ldyBRdWVyeUJ1aWxkZXIoZC5kaWFsZWN0KSkpLG5ldyBQcm94eShuZXcgV2l0aFN1YnF1ZXJ5KG0uZ2V0U1FMKCkscz8/KCJnZXRTZWxlY3RlZEZpZWxkcyJpbiBtP20uZ2V0U2VsZWN0ZWRGaWVsZHMoKT8/e306e30pLGUsITApLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe2FsaWFzOmUsc3FsQWxpYXNlZEJlaGF2aW9yOiJhbGlhcyIsc3FsQmVoYXZpb3I6ImVycm9yIn0pKSl9fTskY291bnQoZSxzKXtyZXR1cm4gbmV3IFNRTGl0ZUNvdW50QnVpbGRlcih7c291cmNlOmUsZmlsdGVyczpzLHNlc3Npb246dGhpcy5zZXNzaW9ufSl9d2l0aCguLi5lKXtjb25zdCBzPXRoaXM7cmV0dXJue3NlbGVjdDpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczpkPz92b2lkIDAsc2Vzc2lvbjpzLnNlc3Npb24sZGlhbGVjdDpzLmRpYWxlY3Qsd2l0aExpc3Q6ZX0pfSxzZWxlY3REaXN0aW5jdDpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczpkPz92b2lkIDAsc2Vzc2lvbjpzLnNlc3Npb24sZGlhbGVjdDpzLmRpYWxlY3Qsd2l0aExpc3Q6ZSxkaXN0aW5jdDohMH0pfSx1cGRhdGU6ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyBTUUxpdGVVcGRhdGVCdWlsZGVyKGQscy5zZXNzaW9uLHMuZGlhbGVjdCxlKX0saW5zZXJ0OmZ1bmN0aW9uKGQpe3JldHVybiBuZXcgU1FMaXRlSW5zZXJ0QnVpbGRlcihkLHMuc2Vzc2lvbixzLmRpYWxlY3QsZSl9LGRlbGV0ZTpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZURlbGV0ZUJhc2UoZCxzLnNlc3Npb24scy5kaWFsZWN0LGUpfX19c2VsZWN0KGUpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmU/P3ZvaWQgMCxzZXNzaW9uOnRoaXMuc2Vzc2lvbixkaWFsZWN0OnRoaXMuZGlhbGVjdH0pfXNlbGVjdERpc3RpbmN0KGUpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmU/P3ZvaWQgMCxzZXNzaW9uOnRoaXMuc2Vzc2lvbixkaWFsZWN0OnRoaXMuZGlhbGVjdCxkaXN0aW5jdDohMH0pfXVwZGF0ZShlKXtyZXR1cm4gbmV3IFNRTGl0ZVVwZGF0ZUJ1aWxkZXIoZSx0aGlzLnNlc3Npb24sdGhpcy5kaWFsZWN0KX0kY2FjaGU7aW5zZXJ0KGUpe3JldHVybiBuZXcgU1FMaXRlSW5zZXJ0QnVpbGRlcihlLHRoaXMuc2Vzc2lvbix0aGlzLmRpYWxlY3QpfWRlbGV0ZShlKXtyZXR1cm4gbmV3IFNRTGl0ZURlbGV0ZUJhc2UoZSx0aGlzLnNlc3Npb24sdGhpcy5kaWFsZWN0KX1ydW4oZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24ucnVuKHMpLCgpPT5zLCJydW4iLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd1J1blZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLnJ1bihzKX1hbGwoZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24uYWxsKHMpLCgpPT5zLCJhbGwiLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd0FsbFZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLmFsbChzKX1nZXQoZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24uZ2V0KHMpLCgpPT5zLCJnZXQiLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd0dldFZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLmdldChzKX12YWx1ZXMoZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24udmFsdWVzKHMpLCgpPT5zLCJ2YWx1ZXMiLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd1ZhbHVlc1ZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLnZhbHVlcyhzKX10cmFuc2FjdGlvbihlLHMpe3JldHVybiB0aGlzLnNlc3Npb24udHJhbnNhY3Rpb24oZSxzKX19Y2xhc3MgQ2FjaGV7c3RhdGljW3V1XT0iQ2FjaGUifWNsYXNzIE5vb3BDYWNoZSBleHRlbmRzIENhY2hle3N0cmF0ZWd5KCl7cmV0dXJuImFsbCJ9c3RhdGljW3V1XT0iTm9vcENhY2hlIjthc3luYyBnZXQoZSl7fWFzeW5jIHB1dChlLHMsZCxtKXt9YXN5bmMgb25NdXRhdGUoZSl7fX1hc3luYyBmdW5jdGlvbiBoYXNoUXVlcnkoZSxzKXtjb25zdCBkPWAke2V9LSR7SlNPTi5zdHJpbmdpZnkocyl9YCxtPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShkKSxoPWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixtKSxnPVsuLi5uZXcgVWludDhBcnJheShoKV0ubWFwKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIik7cmV0dXJuIGd9Y2xhc3MgRXhlY3V0ZVJlc3VsdFN5bmMgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLnJlc3VsdENiPWV9c3RhdGljW3V1XT0iRXhlY3V0ZVJlc3VsdFN5bmMiO2FzeW5jIGV4ZWN1dGUoKXtyZXR1cm4gdGhpcy5yZXN1bHRDYigpfXN5bmMoKXtyZXR1cm4gdGhpcy5yZXN1bHRDYigpfX1jbGFzcyBTUUxpdGVQcmVwYXJlZFF1ZXJ5e2NvbnN0cnVjdG9yKGUscyxkLG0saCxnKXt0aGlzLm1vZGU9ZSx0aGlzLmV4ZWN1dGVNZXRob2Q9cyx0aGlzLnF1ZXJ5PWQsdGhpcy5jYWNoZT1tLHRoaXMucXVlcnlNZXRhZGF0YT1oLHRoaXMuY2FjaGVDb25maWc9ZyxtJiYiYWxsIj09PW0uc3RyYXRlZ3koKSYmdm9pZCAwPT09ZyYmKHRoaXMuY2FjaGVDb25maWc9e2VuYWJsZTohMCxhdXRvSW52YWxpZGF0ZTohMH0pLHRoaXMuY2FjaGVDb25maWc/LmVuYWJsZXx8KHRoaXMuY2FjaGVDb25maWc9dm9pZCAwKX1zdGF0aWNbdXVdPSJQcmVwYXJlZFF1ZXJ5Ijtqb2luc05vdE51bGxhYmxlTWFwO2FzeW5jIHF1ZXJ5V2l0aENhY2hlKGUscyxkKXtpZih2b2lkIDA9PT10aGlzLmNhY2hlfHxpcyh0aGlzLmNhY2hlLE5vb3BDYWNoZSl8fHZvaWQgMD09PXRoaXMucXVlcnlNZXRhZGF0YSl0cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfWlmKHRoaXMuY2FjaGVDb25maWcmJiF0aGlzLmNhY2hlQ29uZmlnLmVuYWJsZSl0cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfWlmKCgiaW5zZXJ0Ij09PXRoaXMucXVlcnlNZXRhZGF0YS50eXBlfHwidXBkYXRlIj09PXRoaXMucXVlcnlNZXRhZGF0YS50eXBlfHwiZGVsZXRlIj09PXRoaXMucXVlcnlNZXRhZGF0YS50eXBlKSYmdGhpcy5xdWVyeU1ldGFkYXRhLnRhYmxlcy5sZW5ndGg+MCl0cnl7Y29uc3RbZV09YXdhaXQgUHJvbWlzZS5hbGwoW2QoKSx0aGlzLmNhY2hlLm9uTXV0YXRlKHt0YWJsZXM6dGhpcy5xdWVyeU1ldGFkYXRhLnRhYmxlc30pXSk7cmV0dXJuIGV9Y2F0Y2goZCl7dGhyb3cgbmV3IERyaXp6bGVRdWVyeUVycm9yKGUscyxkKX1pZighdGhpcy5jYWNoZUNvbmZpZyl0cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfWlmKCJzZWxlY3QiPT09dGhpcy5xdWVyeU1ldGFkYXRhLnR5cGUpe2NvbnN0IG09YXdhaXQgdGhpcy5jYWNoZS5nZXQodGhpcy5jYWNoZUNvbmZpZy50YWc/P2F3YWl0IGhhc2hRdWVyeShlLHMpLHRoaXMucXVlcnlNZXRhZGF0YS50YWJsZXMsdm9pZCAwIT09dGhpcy5jYWNoZUNvbmZpZy50YWcsdGhpcy5jYWNoZUNvbmZpZy5hdXRvSW52YWxpZGF0ZSk7aWYodm9pZCAwPT09bSl7bGV0IG07dHJ5e209YXdhaXQgZCgpfWNhdGNoKGQpe3Rocm93IG5ldyBEcml6emxlUXVlcnlFcnJvcihlLHMsZCl9cmV0dXJuIGF3YWl0IHRoaXMuY2FjaGUucHV0KHRoaXMuY2FjaGVDb25maWcudGFnPz9hd2FpdCBoYXNoUXVlcnkoZSxzKSxtLHRoaXMuY2FjaGVDb25maWcuYXV0b0ludmFsaWRhdGU/dGhpcy5xdWVyeU1ldGFkYXRhLnRhYmxlczpbXSx2b2lkIDAhPT10aGlzLmNhY2hlQ29uZmlnLnRhZyx0aGlzLmNhY2hlQ29uZmlnLmNvbmZpZyksbX1yZXR1cm4gbX10cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfX1nZXRRdWVyeSgpe3JldHVybiB0aGlzLnF1ZXJ5fW1hcFJ1blJlc3VsdChlLHMpe3JldHVybiBlfW1hcEFsbFJlc3VsdChlLHMpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9bWFwR2V0UmVzdWx0KGUscyl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX1leGVjdXRlKGUpe3JldHVybiJhc3luYyI9PT10aGlzLm1vZGU/dGhpc1t0aGlzLmV4ZWN1dGVNZXRob2RdKGUpOm5ldyBFeGVjdXRlUmVzdWx0U3luYygoKT0+dGhpc1t0aGlzLmV4ZWN1dGVNZXRob2RdKGUpKX1tYXBSZXN1bHQoZSxzKXtzd2l0Y2godGhpcy5leGVjdXRlTWV0aG9kKXtjYXNlInJ1biI6cmV0dXJuIHRoaXMubWFwUnVuUmVzdWx0KGUscyk7Y2FzZSJhbGwiOnJldHVybiB0aGlzLm1hcEFsbFJlc3VsdChlLHMpO2Nhc2UiZ2V0IjpyZXR1cm4gdGhpcy5tYXBHZXRSZXN1bHQoZSxzKX19fWNsYXNzIFNRTGl0ZVNlc3Npb257Y29uc3RydWN0b3IoZSl7dGhpcy5kaWFsZWN0PWV9c3RhdGljW3V1XT0iU1FMaXRlU2Vzc2lvbiI7cHJlcGFyZU9uZVRpbWVRdWVyeShlLHMsZCxtLGgsZyx4KXtyZXR1cm4gdGhpcy5wcmVwYXJlUXVlcnkoZSxzLGQsbSxoLGcseCl9cnVuKGUpe2NvbnN0IHM9dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkoZSk7dHJ5e3JldHVybiB0aGlzLnByZXBhcmVPbmVUaW1lUXVlcnkocyx2b2lkIDAsInJ1biIsITEpLnJ1bigpfWNhdGNoKGUpe3Rocm93IG5ldyBEcml6emxlRXJyb3Ioe2NhdXNlOmUsbWVzc2FnZTpgRmFpbGVkIHRvIHJ1biB0aGUgcXVlcnkgJyR7cy5zcWx9J2B9KX19ZXh0cmFjdFJhd1J1blZhbHVlRnJvbUJhdGNoUmVzdWx0KGUpe3JldHVybiBlfWFsbChlKXtyZXR1cm4gdGhpcy5wcmVwYXJlT25lVGltZVF1ZXJ5KHRoaXMuZGlhbGVjdC5zcWxUb1F1ZXJ5KGUpLHZvaWQgMCwicnVuIiwhMSkuYWxsKCl9ZXh0cmFjdFJhd0FsbFZhbHVlRnJvbUJhdGNoUmVzdWx0KGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9Z2V0KGUpe3JldHVybiB0aGlzLnByZXBhcmVPbmVUaW1lUXVlcnkodGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkoZSksdm9pZCAwLCJydW4iLCExKS5nZXQoKX1leHRyYWN0UmF3R2V0VmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX12YWx1ZXMoZSl7cmV0dXJuIHRoaXMucHJlcGFyZU9uZVRpbWVRdWVyeSh0aGlzLmRpYWxlY3Quc3FsVG9RdWVyeShlKSx2b2lkIDAsInJ1biIsITEpLnZhbHVlcygpfWFzeW5jIGNvdW50KGUpe3JldHVybihhd2FpdCB0aGlzLnZhbHVlcyhlKSlbMF1bMF19ZXh0cmFjdFJhd1ZhbHVlc1ZhbHVlRnJvbUJhdGNoUmVzdWx0KGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9fWNsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVNRTGl0ZURhdGFiYXNle2NvbnN0cnVjdG9yKGUscyxkLG0saD0wKXtzdXBlcihlLHMsZCxtKSx0aGlzLnNjaGVtYT1tLHRoaXMubmVzdGVkSW5kZXg9aH1zdGF0aWNbdXVdPSJTUUxpdGVUcmFuc2FjdGlvbiI7cm9sbGJhY2soKXt0aHJvdyBuZXcgVHJhbnNhY3Rpb25Sb2xsYmFja0Vycm9yfX1jbGFzcyBTUUxpdGVEMVNlc3Npb24gZXh0ZW5kcyBTUUxpdGVTZXNzaW9ue2NvbnN0cnVjdG9yKGUscyxkLG09e30pe3N1cGVyKHMpLHRoaXMuY2xpZW50PWUsdGhpcy5zY2hlbWE9ZCx0aGlzLm9wdGlvbnM9bSx0aGlzLmxvZ2dlcj1tLmxvZ2dlcj8/bmV3IE5vb3BMb2dnZXIsdGhpcy5jYWNoZT1tLmNhY2hlPz9uZXcgTm9vcENhY2hlfXN0YXRpY1t1dV09IlNRTGl0ZUQxU2Vzc2lvbiI7bG9nZ2VyO2NhY2hlO3ByZXBhcmVRdWVyeShlLHMsZCxtLGgsZyx4KXtjb25zdCAkPXRoaXMuY2xpZW50LnByZXBhcmUoZS5zcWwpO3JldHVybiBuZXcgRDFQcmVwYXJlZFF1ZXJ5KCQsZSx0aGlzLmxvZ2dlcix0aGlzLmNhY2hlLGcseCxzLGQsbSxoKX1hc3luYyBiYXRjaChlKXtjb25zdCBzPVtdLGQ9W107Zm9yKGNvbnN0IG0gb2YgZSl7Y29uc3QgZT1tLl9wcmVwYXJlKCksaD1lLmdldFF1ZXJ5KCk7aWYocy5wdXNoKGUpLGgucGFyYW1zLmxlbmd0aD4wKWQucHVzaChlLnN0bXQuYmluZCguLi5oLnBhcmFtcykpO2Vsc2V7Y29uc3Qgcz1lLmdldFF1ZXJ5KCk7ZC5wdXNoKHRoaXMuY2xpZW50LnByZXBhcmUocy5zcWwpLmJpbmQoLi4ucy5wYXJhbXMpKX19cmV0dXJuKGF3YWl0IHRoaXMuY2xpZW50LmJhdGNoKGQpKS5tYXAoKGUsZCk9PnNbZF0ubWFwUmVzdWx0KGUsITApKX1leHRyYWN0UmF3QWxsVmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7cmV0dXJuIGUucmVzdWx0c31leHRyYWN0UmF3R2V0VmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7cmV0dXJuIGUucmVzdWx0c1swXX1leHRyYWN0UmF3VmFsdWVzVmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7cmV0dXJuIGQxVG9SYXdNYXBwaW5nKGUucmVzdWx0cyl9YXN5bmMgdHJhbnNhY3Rpb24oZSxzKXtjb25zdCBkPW5ldyBEMVRyYW5zYWN0aW9uKCJhc3luYyIsdGhpcy5kaWFsZWN0LHRoaXMsdGhpcy5zY2hlbWEpO2F3YWl0IHRoaXMucnVuKHNxbC5yYXcoImJlZ2luIisocz8uYmVoYXZpb3I/IiAiK3MuYmVoYXZpb3I6IiIpKSk7dHJ5e2NvbnN0IHM9YXdhaXQgZShkKTtyZXR1cm4gYXdhaXQgdGhpcy5ydW4oc3FsYGNvbW1pdGApLHN9Y2F0Y2goZSl7dGhyb3cgYXdhaXQgdGhpcy5ydW4oc3FsYHJvbGxiYWNrYCksZX19fWNsYXNzIEQxVHJhbnNhY3Rpb24gZXh0ZW5kcyBTUUxpdGVUcmFuc2FjdGlvbntzdGF0aWNbdXVdPSJEMVRyYW5zYWN0aW9uIjthc3luYyB0cmFuc2FjdGlvbihlKXtjb25zdCBzPWBzcCR7dGhpcy5uZXN0ZWRJbmRleH1gLGQ9bmV3IEQxVHJhbnNhY3Rpb24oImFzeW5jIix0aGlzLmRpYWxlY3QsdGhpcy5zZXNzaW9uLHRoaXMuc2NoZW1hLHRoaXMubmVzdGVkSW5kZXgrMSk7YXdhaXQgdGhpcy5zZXNzaW9uLnJ1bihzcWwucmF3KGBzYXZlcG9pbnQgJHtzfWApKTt0cnl7Y29uc3QgbT1hd2FpdCBlKGQpO3JldHVybiBhd2FpdCB0aGlzLnNlc3Npb24ucnVuKHNxbC5yYXcoYHJlbGVhc2Ugc2F2ZXBvaW50ICR7c31gKSksbX1jYXRjaChlKXt0aHJvdyBhd2FpdCB0aGlzLnNlc3Npb24ucnVuKHNxbC5yYXcoYHJvbGxiYWNrIHRvIHNhdmVwb2ludCAke3N9YCkpLGV9fX1mdW5jdGlvbiBkMVRvUmF3TWFwcGluZyhlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBkIG9mIGUpe2NvbnN0IGU9T2JqZWN0LmtleXMoZCkubWFwKGU9PmRbZV0pO3MucHVzaChlKX1yZXR1cm4gc31jbGFzcyBEMVByZXBhcmVkUXVlcnkgZXh0ZW5kcyBTUUxpdGVQcmVwYXJlZFF1ZXJ5e2NvbnN0cnVjdG9yKGUscyxkLG0saCxnLHgsJCxTLGope3N1cGVyKCJhc3luYyIsJCxzLG0saCxnKSx0aGlzLmxvZ2dlcj1kLHRoaXMuX2lzUmVzcG9uc2VJbkFycmF5TW9kZT1TLHRoaXMuY3VzdG9tUmVzdWx0TWFwcGVyPWosdGhpcy5maWVsZHM9eCx0aGlzLnN0bXQ9ZX1zdGF0aWNbdXVdPSJEMVByZXBhcmVkUXVlcnkiO2N1c3RvbVJlc3VsdE1hcHBlcjtmaWVsZHM7c3RtdDthc3luYyBydW4oZSl7Y29uc3Qgcz1maWxsUGxhY2Vob2xkZXJzKHRoaXMucXVlcnkucGFyYW1zLGU/P3t9KTtyZXR1cm4gdGhpcy5sb2dnZXIubG9nUXVlcnkodGhpcy5xdWVyeS5zcWwscyksYXdhaXQgdGhpcy5xdWVyeVdpdGhDYWNoZSh0aGlzLnF1ZXJ5LnNxbCxzLGFzeW5jKCk9PnRoaXMuc3RtdC5iaW5kKC4uLnMpLnJ1bigpKX1hc3luYyBhbGwoZSl7Y29uc3R7ZmllbGRzOnMscXVlcnk6ZCxsb2dnZXI6bSxzdG10OmgsY3VzdG9tUmVzdWx0TWFwcGVyOmd9PXRoaXM7aWYoIXMmJiFnKXtjb25zdCBzPWZpbGxQbGFjZWhvbGRlcnMoZC5wYXJhbXMsZT8/e30pO3JldHVybiBtLmxvZ1F1ZXJ5KGQuc3FsLHMpLGF3YWl0IHRoaXMucXVlcnlXaXRoQ2FjaGUoZC5zcWwscyxhc3luYygpPT5oLmJpbmQoLi4ucykuYWxsKCkudGhlbigoe3Jlc3VsdHM6ZX0pPT50aGlzLm1hcEFsbFJlc3VsdChlKSkpfWNvbnN0IHg9YXdhaXQgdGhpcy52YWx1ZXMoZSk7cmV0dXJuIHRoaXMubWFwQWxsUmVzdWx0KHgpfW1hcEFsbFJlc3VsdChlLHMpe3JldHVybiBzJiYoZT1kMVRvUmF3TWFwcGluZyhlLnJlc3VsdHMpKSx0aGlzLmZpZWxkc3x8dGhpcy5jdXN0b21SZXN1bHRNYXBwZXI/dGhpcy5jdXN0b21SZXN1bHRNYXBwZXI/dGhpcy5jdXN0b21SZXN1bHRNYXBwZXIoZSk6ZS5tYXAoZT0+bWFwUmVzdWx0Um93KHRoaXMuZmllbGRzLGUsdGhpcy5qb2luc05vdE51bGxhYmxlTWFwKSk6ZX1hc3luYyBnZXQoZSl7Y29uc3R7ZmllbGRzOnMsam9pbnNOb3ROdWxsYWJsZU1hcDpkLHF1ZXJ5Om0sbG9nZ2VyOmgsc3RtdDpnLGN1c3RvbVJlc3VsdE1hcHBlcjp4fT10aGlzO2lmKCFzJiYheCl7Y29uc3Qgcz1maWxsUGxhY2Vob2xkZXJzKG0ucGFyYW1zLGU/P3t9KTtyZXR1cm4gaC5sb2dRdWVyeShtLnNxbCxzKSxhd2FpdCB0aGlzLnF1ZXJ5V2l0aENhY2hlKG0uc3FsLHMsYXN5bmMoKT0+Zy5iaW5kKC4uLnMpLmFsbCgpLnRoZW4oKHtyZXN1bHRzOmV9KT0+ZVswXSkpfWNvbnN0ICQ9YXdhaXQgdGhpcy52YWx1ZXMoZSk7aWYoJFswXSlyZXR1cm4geD94KCQpOm1hcFJlc3VsdFJvdyhzLCRbMF0sZCl9bWFwR2V0UmVzdWx0KGUscyl7cmV0dXJuIHMmJihlPWQxVG9SYXdNYXBwaW5nKGUucmVzdWx0cylbMF0pLHRoaXMuZmllbGRzfHx0aGlzLmN1c3RvbVJlc3VsdE1hcHBlcj90aGlzLmN1c3RvbVJlc3VsdE1hcHBlcj90aGlzLmN1c3RvbVJlc3VsdE1hcHBlcihbZV0pOm1hcFJlc3VsdFJvdyh0aGlzLmZpZWxkcyxlLHRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcCk6ZX1hc3luYyB2YWx1ZXMoZSl7Y29uc3Qgcz1maWxsUGxhY2Vob2xkZXJzKHRoaXMucXVlcnkucGFyYW1zLGU/P3t9KTtyZXR1cm4gdGhpcy5sb2dnZXIubG9nUXVlcnkodGhpcy5xdWVyeS5zcWwscyksYXdhaXQgdGhpcy5xdWVyeVdpdGhDYWNoZSh0aGlzLnF1ZXJ5LnNxbCxzLGFzeW5jKCk9PnRoaXMuc3RtdC5iaW5kKC4uLnMpLnJhdygpKX1pc1Jlc3BvbnNlSW5BcnJheU1vZGUoKXtyZXR1cm4gdGhpcy5faXNSZXNwb25zZUluQXJyYXlNb2RlfX1jbGFzcyBEcml6emxlRDFEYXRhYmFzZSBleHRlbmRzIEJhc2VTUUxpdGVEYXRhYmFzZXtzdGF0aWNbdXVdPSJEMURhdGFiYXNlIjthc3luYyBiYXRjaChlKXtyZXR1cm4gdGhpcy5zZXNzaW9uLmJhdGNoKGUpfX1mdW5jdGlvbiBkcml6emxlKGUscz17fSl7Y29uc3QgZD1uZXcgU1FMaXRlQXN5bmNEaWFsZWN0KHtjYXNpbmc6cy5jYXNpbmd9KTtsZXQgbSxoO2lmKCEwPT09cy5sb2dnZXI/bT1uZXcgRGVmYXVsdExvZ2dlcjohMSE9PXMubG9nZ2VyJiYobT1zLmxvZ2dlcikscy5zY2hlbWEpe2NvbnN0IGU9ZnVuY3Rpb24oZSxzKXsxPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoJiYiZGVmYXVsdCJpbiBlJiYhaXMoZS5kZWZhdWx0LFRhYmxlKSYmKGU9ZS5kZWZhdWx0KTtjb25zdCBkPXt9LG09e30saD17fTtmb3IoY29uc3RbZyx4XW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKGlzKHgsVGFibGUpKXtjb25zdCBlPWdldFRhYmxlVW5pcXVlTmFtZSh4KSxzPW1bZV07ZFtlXT1nLGhbZ109e3RzTmFtZTpnLGRiTmFtZTp4W1RhYmxlLlN5bWJvbC5OYW1lXSxzY2hlbWE6eFtUYWJsZS5TeW1ib2wuU2NoZW1hXSxjb2x1bW5zOnhbVGFibGUuU3ltYm9sLkNvbHVtbnNdLHJlbGF0aW9uczpzPy5yZWxhdGlvbnM/P3t9LHByaW1hcnlLZXk6cz8ucHJpbWFyeUtleT8/W119O2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeFtUYWJsZS5TeW1ib2wuQ29sdW1uc10pKWUucHJpbWFyeSYmaFtnXS5wcmltYXJ5S2V5LnB1c2goZSk7Y29uc3QgJD14W1RhYmxlLlN5bWJvbC5FeHRyYUNvbmZpZ0J1aWxkZXJdPy4oeFtUYWJsZS5TeW1ib2wuRXh0cmFDb25maWdDb2x1bW5zXSk7aWYoJClmb3IoY29uc3QgZSBvZiBPYmplY3QudmFsdWVzKCQpKWlzKGUsVHUpJiZoW2ddLnByaW1hcnlLZXkucHVzaCguLi5lLmNvbHVtbnMpfWVsc2UgaWYoaXMoeCxSZWxhdGlvbnMpKXtjb25zdCBlPWdldFRhYmxlVW5pcXVlTmFtZSh4LnRhYmxlKSxnPWRbZV0sJD14LmNvbmZpZyhzKHgudGFibGUpKTtsZXQgUztmb3IoY29uc3RbcyxkXW9mIE9iamVjdC5lbnRyaWVzKCQpKWc/aFtnXS5yZWxhdGlvbnNbc109ZDooZSBpbiBtfHwobVtlXT17cmVsYXRpb25zOnt9LHByaW1hcnlLZXk6U30pLG1bZV0ucmVsYXRpb25zW3NdPWQpfXJldHVybnt0YWJsZXM6aCx0YWJsZU5hbWVzTWFwOmR9fShzLnNjaGVtYSxjcmVhdGVUYWJsZVJlbGF0aW9uc0hlbHBlcnMpO2g9e2Z1bGxTY2hlbWE6cy5zY2hlbWEsc2NoZW1hOmUudGFibGVzLHRhYmxlTmFtZXNNYXA6ZS50YWJsZU5hbWVzTWFwfX1jb25zdCBnPW5ldyBTUUxpdGVEMVNlc3Npb24oZSxkLGgse2xvZ2dlcjptLGNhY2hlOnMuY2FjaGV9KSx4PW5ldyBEcml6emxlRDFEYXRhYmFzZSgiYXN5bmMiLGQsZyxoKTtyZXR1cm4geC4kY2xpZW50PWUseC4kY2FjaGU9cy5jYWNoZSx4LiRjYWNoZSYmKHguJGNhY2hlLmludmFsaWRhdGU9cy5jYWNoZT8ub25NdXRhdGUpLHh9bGV0IFV1PWZ1bmN0aW9uKGUpe3JldHVybiBlLkdPT0dMRT0iZ29vZ2xlIixlLkdJVEhVQj0iZ2l0aHViIixlfSh7fSksTHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuU0lHTl9JTj0iYXV0aDpzaWduX2luIixlLlNJR05fVVA9ImF1dGg6c2lnbl91cCIsZS5JTVBFUlNPTkFURV9TVEFSVD0iYXV0aDppbXBlcnNvbmF0ZV9zdGFydCIsZS5JTVBFUlNPTkFURV9TVE9QPSJhdXRoOmltcGVyc29uYXRlX3N0b3AiLGV9KHt9KTtmdW5jdGlvbiBlbnVtVmFsdWVzJDEoZSl7cmV0dXJuIE9iamVjdC52YWx1ZXMoZSl9Y29uc3QgQXU9c3FsaXRlVGFibGUoInVzZXJzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJuYW1lOnRleHQoInVzZXJuYW1lIiksbmFtZTp0ZXh0KCJuYW1lIikscHJpbWFyeV9lbWFpbDp0ZXh0KCJwcmltYXJ5X2VtYWlsIikudW5pcXVlKCkubm90TnVsbCgpLHByaW1hcnlfcGhvbmU6dGV4dCgicHJpbWFyeV9waG9uZSIpLnVuaXF1ZSgpLGF2YXRhcjp0ZXh0KCJhdmF0YXIiKSx2ZXJpZmllZDppbnRlZ2VyKCJ2ZXJpZmllZCIse21vZGU6ImJvb2xlYW4ifSkuZGVmYXVsdCghMSksZW1haWxfbm90aWZpY2F0aW9uczppbnRlZ2VyKCJlbWFpbF9ub3RpZmljYXRpb25zIix7bW9kZToiYm9vbGVhbiJ9KS5kZWZhdWx0KCEwKSxiaW86dGV4dCgiYmlvIiksbm90aWZpY2F0aW9uX3ByZWZzOnRleHQoIm5vdGlmaWNhdGlvbl9wcmVmcyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5kZWZhdWx0KHtlbWFpbDohMCxwcm9kdWN0X3VwZGF0ZXM6ITAsd2Vla2x5X2RpZ2VzdDohMSxpbXBvcnRhbnRfdXBkYXRlczohMH0pLGN1c3RvbV9kYXRhOnRleHQoImN1c3RvbV9kYXRhIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoe30pLGxhc3Rfc2lnbl9pbl9hdDppbnRlZ2VyKCJsYXN0X3NpZ25faW5fYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksaXNfc3VzcGVuZGVkOmludGVnZXIoImlzX3N1c3BlbmRlZCIse21vZGU6ImJvb2xlYW4ifSkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJ1c2Vyc191c2VybmFtZV9pZHgiKS5vbihlLnVzZXJuYW1lKSxpbmRleCgidXNlcnNfbmFtZV9pZHgiKS5vbihlLm5hbWUpXSkscXU9c3FsaXRlVGFibGUoImlkZW50aXRpZXMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIixvblVwZGF0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscHJvdmlkZXI6dGV4dCgicHJvdmlkZXIiLHtlbnVtOmVudW1WYWx1ZXMkMShVdSl9KS5ub3ROdWxsKCkscHJvdmlkZXJfdXNlcl9pZDp0ZXh0KCJwcm92aWRlcl91c2VyX2lkIikubm90TnVsbCgpLHByb3ZpZGVyX2RhdGE6dGV4dCgicHJvdmlkZXJfZGF0YSIse21vZGU6Impzb24ifSkuJHR5cGUoKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImlkZW50aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpLHVuaXF1ZUluZGV4KCJpZGVudGl0aWVzX3Byb3ZpZGVyX3VuaXF1ZV9pZHgiKS5vbihlLnByb3ZpZGVyLGUucHJvdmlkZXJfdXNlcl9pZCldKSxGdT1zcWxpdGVUYWJsZSgiYWN0aXZpdGllcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhY3Rpb246dGV4dCgiYWN0aW9uIix7ZW51bTplbnVtVmFsdWVzJDEoTHUpfSkubm90TnVsbCgpLGFjdGlvbl9yZWZfaWQ6dGV4dCgiYWN0aW9uX3JlZl9pZCIpLHRlc3Q6dGV4dCgidGVzdCIse21vZGU6Impzb24ifSksbWV0YWRhdGE6dGV4dCgibWV0YWRhdGEiLHttb2RlOiJqc29uIn0pLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImFjdGl2aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpXSksQnU9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksbmFtZTp0ZXh0KCJuYW1lIikubm90TnVsbCgpLHNsdWc6dGV4dCgic2x1ZyIpLm5vdE51bGwoKS51bmlxdWUoKSxvd25lcl9pZDp0ZXh0KCJvd25lcl9pZCIpLnJlZmVyZW5jZXMoKCk9PkF1LmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksaXNfcGVyc29uYWw6aW50ZWdlcigiaXNfcGVyc29uYWwiLHttb2RlOiJib29sZWFuIn0pLm5vdE51bGwoKS5kZWZhdWx0KCExKSxpc19zeXN0ZW06aW50ZWdlcigiaXNfc3lzdGVtIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJvcmdhbml6YXRpb25zX2lzX3N5c3RlbV9pZHgiKS5vbihlLmlzX3N5c3RlbSldKSxadT1zcWxpdGVUYWJsZSgib3JnYW5pemF0aW9uX21lbWJlcnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhYmlsaXRpZXM6dGV4dCgiYWJpbGl0aWVzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bdW5pcXVlSW5kZXgoIm9yZ19tZW1iZXJzX3VzZXJfb3JnX3VuaXF1ZSIpLm9uKGUudXNlcl9pZCxlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoIm9yZ19tZW1iZXJzX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCldKSxNdT1zcWxpdGVUYWJsZSgicGVybWlzc2lvbnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksa2V5OnRleHQoImtleSIpLm5vdE51bGwoKS51bmlxdWUoKSxzdWJqZWN0OnRleHQoInN1YmplY3QiKS5ub3ROdWxsKCksYWN0aW9uOnRleHQoImFjdGlvbiIpLm5vdE51bGwoKSxzY29wZTp0ZXh0KCJzY29wZSIpLG9yZ19raW5kOnRleHQoIm9yZ19raW5kIix7ZW51bTpbInN5c3RlbSIsInRlbmFudCJdfSkubm90TnVsbCgpLGRlc2NyaXB0aW9uOnRleHQoImRlc2NyaXB0aW9uIiksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9PltpbmRleCgicGVybWlzc2lvbnNfc3ViamVjdF9pZHgiKS5vbihlLnN1YmplY3QpXSksUXU9c3FsaXRlVGFibGUoInJvbGVzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDp0ZXh0KCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLG5hbWU6dGV4dCgibmFtZSIpLm5vdE51bGwoKSxkZXNjcmlwdGlvbjp0ZXh0KCJkZXNjcmlwdGlvbiIpLHBlcm1pc3Npb25zOnRleHQoInBlcm1pc3Npb25zIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxpc19zeXN0ZW06aW50ZWdlcigiaXNfc3lzdGVtIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJyb2xlc19vcmdfbmFtZV91bmlxdWUiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCxlLm5hbWUpLGluZGV4KCJyb2xlc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpXSksVnU9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9tZW1iZXJfcm9sZXMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksbWVtYmVyX2lkOnRleHQoIm1lbWJlcl9pZCIpLnJlZmVyZW5jZXMoKCk9Plp1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscm9sZV9pZDp0ZXh0KCJyb2xlX2lkIikucmVmZXJlbmNlcygoKT0+UXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJtZW1iZXJfcm9sZXNfdW5pcXVlIikub24oZS5tZW1iZXJfaWQsZS5yb2xlX2lkKSxpbmRleCgibWVtYmVyX3JvbGVzX21lbWJlcl9pZHgiKS5vbihlLm1lbWJlcl9pZCksaW5kZXgoIm1lbWJlcl9yb2xlc19yb2xlX2lkeCIpLm9uKGUucm9sZV9pZCldKSxIdT1zcWxpdGVUYWJsZSgib3JnYW5pemF0aW9uX2ludml0YXRpb25zIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDp0ZXh0KCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGVtYWlsOnRleHQoImVtYWlsIikubm90TnVsbCgpLHJvbGVfaWQ6dGV4dCgicm9sZV9pZCIpLnJlZmVyZW5jZXMoKCk9PlF1LmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksdG9rZW46dGV4dCgidG9rZW4iKS5ub3ROdWxsKCkudW5pcXVlKCksaW52aXRlZF9ieTp0ZXh0KCJpbnZpdGVkX2J5IikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxwcm9qZWN0X2lkczp0ZXh0KCJwcm9qZWN0X2lkcyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5kZWZhdWx0KFtdKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxleHBpcmVzX2F0OmludGVnZXIoImV4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpfSxlPT5baW5kZXgoIm9yZ19pbnZpdGF0aW9uc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLGluZGV4KCJvcmdfaW52aXRhdGlvbnNfdG9rZW5faWR4Iikub24oZS50b2tlbildKSxXdT1yZWxhdGlvbnMoQXUsKHttYW55OmV9KT0+KHtpZGVudGl0aWVzOmUocXUpLGFjdGl2aXRpZXM6ZShGdSl9KSksSnU9cmVsYXRpb25zKHF1LCh7b25lOmV9KT0+KHt1c2VyOmUoQXUse2ZpZWxkczpbcXUudXNlcl9pZF0scmVmZXJlbmNlczpbQXUuaWRdfSl9KSksS3U9cmVsYXRpb25zKEZ1LCh7b25lOmV9KT0+KHt1c2VyOmUoQXUse2ZpZWxkczpbRnUudXNlcl9pZF0scmVmZXJlbmNlczpbQXUuaWRdfSl9KSksR3U9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9iaWxsaW5nX3NldHRpbmdzIix7b3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSksY29tcGFueV9uYW1lOnRleHQoImNvbXBhbnlfbmFtZSIpLHRheF9pZDp0ZXh0KCJ0YXhfaWQiKSxhZGRyZXNzOnRleHQoImFkZHJlc3MiKSxjaXR5OnRleHQoImNpdHkiKSxjb3VudHJ5OnRleHQoImNvdW50cnkiKS5kZWZhdWx0KCJVUyIpLGN1cnJlbmN5OnRleHQoImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLHVwZGF0ZWRfYXQ6aW50ZWdlcigidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9KSxYdT1zcWxpdGVUYWJsZSgiaW52b2ljZXMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksbnVtYmVyOnRleHQoIm51bWJlciIpLm5vdE51bGwoKS51bmlxdWUoKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTpbImRyYWZ0Iiwic2VudCIsInBhaWQiLCJvdmVyZHVlIiwiY2FuY2VsbGVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgiZHJhZnQiKSxjdXJyZW5jeTp0ZXh0KCJjdXJyZW5jeSIpLm5vdE51bGwoKS5kZWZhdWx0KCJVU0QiKSxzdWJ0b3RhbDppbnRlZ2VyKCJzdWJ0b3RhbCIpLm5vdE51bGwoKS5kZWZhdWx0KDApLHRheDppbnRlZ2VyKCJ0YXgiKS5ub3ROdWxsKCkuZGVmYXVsdCgwKSx0b3RhbDppbnRlZ2VyKCJ0b3RhbCIpLm5vdE51bGwoKS5kZWZhdWx0KDApLGlzc3VlZF9hdDppbnRlZ2VyKCJpc3N1ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksZHVlX2F0OmludGVnZXIoImR1ZV9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxwYWlkX2F0OmludGVnZXIoInBhaWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksbm90ZXM6dGV4dCgibm90ZXMiKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImludm9pY2VzX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoImludm9pY2VzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxZdT1zcWxpdGVUYWJsZSgiaW52b2ljZV9pdGVtcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxpbnZvaWNlX2lkOnRleHQoImludm9pY2VfaWQiKS5yZWZlcmVuY2VzKCgpPT5YdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGRlc2NyaXB0aW9uOnRleHQoImRlc2NyaXB0aW9uIikubm90TnVsbCgpLHF1YW50aXR5OmludGVnZXIoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksdW5pdF9wcmljZTppbnRlZ2VyKCJ1bml0X3ByaWNlIikubm90TnVsbCgpLGN1cnJlbmN5OnRleHQoImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGFtb3VudDppbnRlZ2VyKCJhbW91bnQiKS5ub3ROdWxsKCl9LGU9PltpbmRleCgiaW52b2ljZV9pdGVtc19pbnZvaWNlX2lkeCIpLm9uKGUuaW52b2ljZV9pZCldKSx0ZD1zcWxpdGVUYWJsZSgib3JnYW5pemF0aW9uX2NyZWRpdHMiLHtvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxiYWxhbmNlOmludGVnZXIoImJhbGFuY2UiKS5ub3ROdWxsKCkuZGVmYXVsdCgwKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSksbmQ9c3FsaXRlVGFibGUoInRyYW5zYWN0aW9ucyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLHR5cGU6dGV4dCgidHlwZSIse2VudW06WyJ0b3BfdXAiLCJyZWZlcnJhbF9yZXdhcmQiXX0pLm5vdE51bGwoKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTpbInBlbmRpbmciLCJzdWNjZXNzIiwiZmFpbGVkIiwiZXhwaXJlZCJdfSkubm90TnVsbCgpLmRlZmF1bHQoInBlbmRpbmciKSxhbW91bnQ6aW50ZWdlcigiYW1vdW50Iikubm90TnVsbCgpLGdhdGV3YXlfcmVmOnRleHQoImdhdGV3YXlfcmVmIikudW5pcXVlKCksc2VwYXlfZXZlbnRfaWQ6dGV4dCgic2VwYXlfZXZlbnRfaWQiKS51bmlxdWUoKSxtZXRhZGF0YTp0ZXh0KCJtZXRhZGF0YSIse21vZGU6Impzb24ifSkuJHR5cGUoKS5kZWZhdWx0KHt9KSxleHBpcmVzX2F0OmludGVnZXIoImV4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJ0cmFuc2FjdGlvbnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKSxpbmRleCgidHJhbnNhY3Rpb25zX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxyZD1zcWxpdGVUYWJsZSgibm90aWZpY2F0aW9ucyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHNlbmRlcl9uYW1lOnRleHQoInNlbmRlcl9uYW1lIikubm90TnVsbCgpLGJvZHk6dGV4dCgiYm9keSIpLm5vdE51bGwoKSxpc19yZWFkOmludGVnZXIoImlzX3JlYWQiLHttb2RlOiJib29sZWFuIn0pLm5vdE51bGwoKS5kZWZhdWx0KCExKSxkZWR1cGVfa2V5OnRleHQoImRlZHVwZV9rZXkiKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJub3RpZmljYXRpb25zX3VzZXJfb3JnX2lkeCIpLm9uKGUudXNlcl9pZCxlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoIm5vdGlmaWNhdGlvbnNfY3JlYXRlZF9pZHgiKS5vbihlLmNyZWF0ZWRfYXQpLHVuaXF1ZUluZGV4KCJub3RpZmljYXRpb25zX2RlZHVwZV9pZHgiKS5vbihlLnVzZXJfaWQsZS5vcmdhbml6YXRpb25faWQsZS5kZWR1cGVfa2V5KV0pLG9kPXNxbGl0ZVRhYmxlKCJwcm9kdWN0cyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxuYW1lOnRleHQoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246dGV4dCgiZGVzY3JpcHRpb24iKSx0eXBlOnRleHQoInR5cGUiLHtlbnVtOlsib25lX3RpbWUiLCJyZWN1cnJpbmciXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJvbmVfdGltZSIpLHByaWNlOmludGVnZXIoInByaWNlIikubm90TnVsbCgpLHByaWNlX2N1cnJlbmN5OnRleHQoInByaWNlX2N1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGJpbGxpbmdfaW50ZXJ2YWw6dGV4dCgiYmlsbGluZ19pbnRlcnZhbCIse2VudW06WyJtb250aCIsInllYXIiXX0pLHN0YXR1czp0ZXh0KCJzdGF0dXMiLHtlbnVtOlsiYWN0aXZlIiwiaW5hY3RpdmUiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJhY3RpdmUiKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInByb2R1Y3RzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyksaW5kZXgoInByb2R1Y3RzX3R5cGVfaWR4Iikub24oZS50eXBlKV0pLHNkPXNxbGl0ZVRhYmxlKCJwcm9qZWN0cyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxuYW1lOnRleHQoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246dGV4dCgiZGVzY3JpcHRpb24iKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTpbImFjdGl2ZSIsImFyY2hpdmVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgiYWN0aXZlIiksY3JlYXRlZF9ieTp0ZXh0KCJjcmVhdGVkX2J5IikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInByb2plY3RzX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoInByb2plY3RzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSx1ZD1zcWxpdGVUYWJsZSgicHJvamVjdF9wcm9kdWN0cyIse3Byb2plY3RfaWQ6dGV4dCgicHJvamVjdF9pZCIpLnJlZmVyZW5jZXMoKCk9PnNkLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscHJvZHVjdF9pZDp0ZXh0KCJwcm9kdWN0X2lkIikubm90TnVsbCgpLHF1YW50aXR5OmludGVnZXIoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksYWRkZWRfYXQ6aW50ZWdlcigiYWRkZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3ByaW1hcnlLZXkoe2NvbHVtbnM6W2UucHJvamVjdF9pZCxlLnByb2R1Y3RfaWRdfSldKSxwZD1zcWxpdGVUYWJsZSgicHJvamVjdF9tZW1iZXJzIix7cHJvamVjdF9pZDp0ZXh0KCJwcm9qZWN0X2lkIikucmVmZXJlbmNlcygoKT0+c2QuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHJvbGU6dGV4dCgicm9sZSIse2VudW06WyJvd25lciIsIm1lbWJlciIsInZpZXdlciJdfSkubm90TnVsbCgpLmRlZmF1bHQoIm1lbWJlciIpLGFkZGVkX2F0OmludGVnZXIoImFkZGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9PltwcmltYXJ5S2V5KHtjb2x1bW5zOltlLnByb2plY3RfaWQsZS51c2VyX2lkXX0pLGluZGV4KCJwcm9qZWN0X21lbWJlcnNfdXNlcl9pZHgiKS5vbihlLnVzZXJfaWQpXSksbWQ9c3FsaXRlVGFibGUoInNlbGZob3N0X2RlcGxveW1lbnRzIix7b3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSksY2ZfYWNjb3VudF9pZDp0ZXh0KCJjZl9hY2NvdW50X2lkIiksY2Zfc2NyaXB0X25hbWU6dGV4dCgiY2Zfc2NyaXB0X25hbWUiKSx3b3JrZXJzX2Rldl91cmw6dGV4dCgid29ya2Vyc19kZXZfdXJsIiksZGVwbG95ZWRfdmVyc2lvbjp0ZXh0KCJkZXBsb3llZF92ZXJzaW9uIiksZGVwbG95ZWRfYXQ6aW50ZWdlcigiZGVwbG95ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksY2ZfdG9rZW5fY2lwaGVydGV4dDp0ZXh0KCJjZl90b2tlbl9jaXBoZXJ0ZXh0IiksY2ZfdG9rZW5faXY6dGV4dCgiY2ZfdG9rZW5faXYiKSxjZl90b2tlbl9leHBpcmVzX2F0OmludGVnZXIoImNmX3Rva2VuX2V4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksc3RhdHVzOnRleHQoInN0YXR1cyIse2VudW06WyJpZGxlIiwiZGVwbG95aW5nIiwiZGVwbG95ZWQiLCJmYWlsZWQiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJpZGxlIiksbGFzdF9lcnJvcjp0ZXh0KCJsYXN0X2Vycm9yIil9KSx2ZD1zcWxpdGVUYWJsZSgic2VsZmhvc3RfYXVkaXQiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksYWN0b3JfdXNlcl9pZDp0ZXh0KCJhY3Rvcl91c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxhY3Rpb246dGV4dCgiYWN0aW9uIix7ZW51bTpbImRlcGxveSIsInJlZGVwbG95IiwiZGlzY29ubmVjdCJdfSkubm90TnVsbCgpLHN1Y2Nlc3M6aW50ZWdlcigic3VjY2VzcyIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLGNmX2FjY291bnRfaWQ6dGV4dCgiY2ZfYWNjb3VudF9pZCIpLGVycm9yX21lc3NhZ2U6dGV4dCgiZXJyb3JfbWVzc2FnZSIpLHN0YXJ0ZWRfYXQ6aW50ZWdlcigic3RhcnRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLGZpbmlzaGVkX2F0OmludGVnZXIoImZpbmlzaGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pfSxlPT5baW5kZXgoInNlbGZob3N0X2F1ZGl0X29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoInNlbGZob3N0X2F1ZGl0X3N0YXJ0ZWRfaWR4Iikub24oZS5zdGFydGVkX2F0KV0pLHlkPXNxbGl0ZVRhYmxlKCJzZWxmaG9zdF9kZXBsb3ltZW50X3NlY3JldHMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksa2V5OnRleHQoImtleSIpLm5vdE51bGwoKSxjaXBoZXJ0ZXh0OnRleHQoImNpcGhlcnRleHQiKS5ub3ROdWxsKCksaXY6dGV4dCgiaXYiKS5ub3ROdWxsKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJzZWxmaG9zdF9zZWNyZXRzX29yZ19rZXlfdW5pcXVlIikub24oZS5vcmdhbml6YXRpb25faWQsZS5rZXkpXSksX2Q9WyJmZWVkYmFjayIsInN1cHBvcnQiXSx4ZD1bImFjY291bnQiLCJiaWxsaW5nIiwidGVjaG5pY2FsIiwib3RoZXIiXSx3ZD1bIm9wZW4iLCJhY3RpdmUiLCJjbG9zZWQiXSwkZD1bInVzZXIiLCJhZ2VudCJdLFNkPXNxbGl0ZVRhYmxlKCJzdXBwb3J0X3RpY2tldHMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxraW5kOnRleHQoImtpbmQiLHtlbnVtOl9kfSkubm90TnVsbCgpLGNhdGVnb3J5OnRleHQoImNhdGVnb3J5Iix7ZW51bTp4ZH0pLHN1YmplY3Q6dGV4dCgic3ViamVjdCIpLm5vdE51bGwoKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTp3ZH0pLm5vdE51bGwoKS5kZWZhdWx0KCJvcGVuIiksYXNzaWduZWRfdG86dGV4dCgiYXNzaWduZWRfdG8iKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGxhc3RfbWVzc2FnZV9hdDppbnRlZ2VyKCJsYXN0X21lc3NhZ2VfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxsYXN0X21lc3NhZ2Vfcm9sZTp0ZXh0KCJsYXN0X21lc3NhZ2Vfcm9sZSIse2VudW06JGR9KS5ub3ROdWxsKCkuZGVmYXVsdCgidXNlciIpLHJlbWluZGVyX3NlbnRfYXQ6aW50ZWdlcigicmVtaW5kZXJfc2VudF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInN1cHBvcnRfdGlja2V0c191c2VyX2lkeCIpLm9uKGUudXNlcl9pZCksaW5kZXgoInN1cHBvcnRfdGlja2V0c19zdGF0dXNfaWR4Iikub24oZS5zdGF0dXMpLGluZGV4KCJzdXBwb3J0X3RpY2tldHNfYXNzaWduZWRfaWR4Iikub24oZS5hc3NpZ25lZF90byksaW5kZXgoInN1cHBvcnRfdGlja2V0c19yZW1pbmRlcl9pZHgiKS5vbihlLmxhc3RfbWVzc2FnZV9yb2xlLGUubGFzdF9tZXNzYWdlX2F0KV0pLHpkPXNxbGl0ZVRhYmxlKCJzdXBwb3J0X3RpY2tldF9tZXNzYWdlcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx0aWNrZXRfaWQ6dGV4dCgidGlja2V0X2lkIikucmVmZXJlbmNlcygoKT0+U2QuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhdXRob3JfaWQ6dGV4dCgiYXV0aG9yX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxhdXRob3Jfcm9sZTp0ZXh0KCJhdXRob3Jfcm9sZSIse2VudW06JGR9KS5ub3ROdWxsKCksYm9keTp0ZXh0KCJib2R5Iikubm90TnVsbCgpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInN1cHBvcnRfdGlja2V0X21lc3NhZ2VzX3RpY2tldF9pZHgiKS5vbihlLnRpY2tldF9pZCxlLmNyZWF0ZWRfYXQpXSksSWQ9c3FsaXRlVGFibGUoInVzZXJfcmVmZXJyYWxzIix7dXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCk9PkF1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxjb2RlOnRleHQoImNvZGUiKS5ub3ROdWxsKCkudW5pcXVlKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9KSxDZD1zcWxpdGVUYWJsZSgicmVmZXJyYWxzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHJlZmVycmVyX2lkOnRleHQoInJlZmVycmVyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxyZWZlcmVlX2lkOnRleHQoInJlZmVyZWVfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHNvdXJjZTp0ZXh0KCJzb3VyY2UiLHtlbnVtOlsibGluayIsImludml0ZSJdfSkubm90TnVsbCgpLmRlZmF1bHQoImxpbmsiKSxyZXdhcmRfcGFpZDppbnRlZ2VyKCJyZXdhcmRfcGFpZCIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bdW5pcXVlSW5kZXgoInJlZmVycmFsc19yZWZlcmVlX3VuaXF1ZSIpLm9uKGUucmVmZXJlZV9pZCksaW5kZXgoInJlZmVycmFsc19yZWZlcnJlcl9pZHgiKS5vbihlLnJlZmVycmVyX2lkKV0pLFRkPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxBY3Rpdml0eUFjdGlvbjpMdSxBdXRoUHJvdmlkZXI6VXUsTUVTU0FHRV9ST0xFUzokZCxUSUNLRVRfQ0FURUdPUklFUzp4ZCxUSUNLRVRfS0lORFM6X2QsVElDS0VUX1NUQVRVU0VTOndkLGFjdGl2aXR5UmVsYXRpb25zOkt1LGFjdGl2aXR5VGFibGU6RnUsaWRlbnRpdHlSZWxhdGlvbnM6SnUsaWRlbnRpdHlUYWJsZTpxdSxpbnZvaWNlSXRlbVRhYmxlOll1LGludm9pY2VUYWJsZTpYdSxub3RpZmljYXRpb25UYWJsZTpyZCxvcmdhbml6YXRpb25CaWxsaW5nU2V0dGluZ3NUYWJsZTpHdSxvcmdhbml6YXRpb25DcmVkaXRUYWJsZTp0ZCxvcmdhbml6YXRpb25JbnZpdGF0aW9uVGFibGU6SHUsb3JnYW5pemF0aW9uTWVtYmVyUm9sZVRhYmxlOlZ1LG9yZ2FuaXphdGlvbk1lbWJlclRhYmxlOlp1LG9yZ2FuaXphdGlvblRhYmxlOkJ1LHBlcm1pc3Npb25UYWJsZTpNdSxwcm9kdWN0VGFibGU6b2QscHJvamVjdE1lbWJlclRhYmxlOnBkLHByb2plY3RQcm9kdWN0VGFibGU6dWQscHJvamVjdFRhYmxlOnNkLHJlZmVycmFsVGFibGU6Q2Qscm9sZVRhYmxlOlF1LHNlbGZob3N0QXVkaXRUYWJsZTp2ZCxzZWxmaG9zdERlcGxveW1lbnRTZWNyZXRUYWJsZTp5ZCxzZWxmaG9zdERlcGxveW1lbnRUYWJsZTptZCxzdXBwb3J0VGlja2V0TWVzc2FnZVRhYmxlOnpkLHN1cHBvcnRUaWNrZXRUYWJsZTpTZCx0cmFuc2FjdGlvblRhYmxlOm5kLHVzZXJSZWZlcnJhbFRhYmxlOklkLHVzZXJSZWxhdGlvbnM6V3UsdXNlclRhYmxlOkF1fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2xldCBSZDtjb25zdCBFZD1uZXcgUHJveHkoe30se2dldDooZSxzKT0+ZnVuY3Rpb24oKXtpZighUmQpdHJ5e2NvbnN0IGU9VC5lbnYuREJ8fGdsb2JhbFRoaXMuX19lbnZfXz8uREJ8fGdsb2JhbFRoaXMuREI7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJEQiBiaW5kaW5nIG5vdCBmb3VuZCIpO1JkPWRyaXp6bGUoZSx7c2NoZW1hOlRkfSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKCJbbnV4dC1odWJdICIrZS5tZXNzYWdlKX1yZXR1cm4gUmR9KClbc119KSxPZD1jcmVhdGVTdG9yYWdlKHtkcml2ZXI6ZHJpdmVyKHtiaW5kaW5nOiJLViJ9KX0pLFBkPWNyZWF0ZURlZnUkMSgoZSxzLGQpPT57aWYoQXJyYXkuaXNBcnJheShlW3NdKXx8QXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZVtzXT1kLCEwfSk7dmFyIE5kPXt9LERkPXt9LFVkPXtleHBvcnRzOnt9fSxMZD17fSxBZD1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IikscWQ9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksRmQ9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxCZD1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLFpkPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksTWQ9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxRZD1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksVmQ9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxIZD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLFdkPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxKZD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksS2Q9U3ltYm9sLml0ZXJhdG9yO3ZhciBHZD17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sWGQ9T2JqZWN0LmFzc2lnbixZZD17fTtmdW5jdGlvbiBFJDIoZSxzLGQpe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9cyx0aGlzLnJlZnM9WWQsdGhpcy51cGRhdGVyPWR8fEdkfWZ1bmN0aW9uIEYkMSgpe31mdW5jdGlvbiBHJDEoZSxzLGQpe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9cyx0aGlzLnJlZnM9WWQsdGhpcy51cGRhdGVyPWR8fEdkfUUkMi5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxFJDIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUscyl7aWYoIm9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcigic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUscywic2V0U3RhdGUiKX0sRSQyLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX0sRiQxLnByb3RvdHlwZT1FJDIucHJvdG90eXBlO3ZhciBlcD1HJDEucHJvdG90eXBlPW5ldyBGJDE7ZXAuY29uc3RydWN0b3I9RyQxLFhkKGVwLEUkMi5wcm90b3R5cGUpLGVwLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciB0cD1BcnJheS5pc0FycmF5LG5wPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksaXA9e2N1cnJlbnQ6bnVsbH0scnA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtmdW5jdGlvbiBNJDIoZSxzLGQpe3ZhciBtLGg9e30sZz1udWxsLHg9bnVsbDtpZihudWxsIT1zKWZvcihtIGluIHZvaWQgMCE9PXMucmVmJiYoeD1zLnJlZiksdm9pZCAwIT09cy5rZXkmJihnPSIiK3Mua2V5KSxzKW5wLmNhbGwocyxtKSYmIXJwLmhhc093blByb3BlcnR5KG0pJiYoaFttXT1zW21dKTt2YXIgJD1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PSQpaC5jaGlsZHJlbj1kO2Vsc2UgaWYoMTwkKXtmb3IodmFyIFM9QXJyYXkoJCksaj0wO2o8JDtqKyspU1tqXT1hcmd1bWVudHNbaisyXTtoLmNoaWxkcmVuPVN9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKG0gaW4gJD1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1oW21dJiYoaFttXT0kW21dKTtyZXR1cm57JCR0eXBlb2Y6QWQsdHlwZTplLGtleTpnLHJlZjp4LHByb3BzOmgsX293bmVyOmlwLmN1cnJlbnR9fWZ1bmN0aW9uIE8kMihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09QWR9dmFyIG9wPS9cLysvZztmdW5jdGlvbiBRJDIoZSxzKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgcz17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVybiIkIitlLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihlKXtyZXR1cm4gc1tlXX0pfSgiIitlLmtleSk6cy50b1N0cmluZygzNil9ZnVuY3Rpb24gUiQyKGUscyxkLG0saCl7dmFyIGc9dHlwZW9mIGU7InVuZGVmaW5lZCIhPT1nJiYiYm9vbGVhbiIhPT1nfHwoZT1udWxsKTt2YXIgeD0hMTtpZihudWxsPT09ZSl4PSEwO2Vsc2Ugc3dpdGNoKGcpe2Nhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6eD0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgQWQ6Y2FzZSBxZDp4PSEwfX1pZih4KXJldHVybiBoPWgoeD1lKSxlPSIiPT09bT8iLiIrUSQyKHgsMCk6bSx0cChoKT8oZD0iIixudWxsIT1lJiYoZD1lLnJlcGxhY2Uob3AsIiQmLyIpKyIvIiksUiQyKGgscyxkLCIiLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpOm51bGwhPWgmJihPJDIoaCkmJihoPWZ1bmN0aW9uKGUscyl7cmV0dXJueyQkdHlwZW9mOkFkLHR5cGU6ZS50eXBlLGtleTpzLHJlZjplLnJlZixwcm9wczplLnByb3BzLF9vd25lcjplLl9vd25lcn19KGgsZCsoIWgua2V5fHx4JiZ4LmtleT09PWgua2V5PyIiOigiIitoLmtleSkucmVwbGFjZShvcCwiJCYvIikrIi8iKStlKSkscy5wdXNoKGgpKSwxO2lmKHg9MCxtPSIiPT09bT8iLiI6bSsiOiIsdHAoZSkpZm9yKHZhciAkPTA7JDxlLmxlbmd0aDskKyspe3ZhciBTPW0rUSQyKGc9ZVskXSwkKTt4Kz1SJDIoZyxzLGQsUyxoKX1lbHNlIGlmKFM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YoZT1LZCYmZVtLZF18fGVbIkBAaXRlcmF0b3IiXSk/ZTpudWxsfShlKSwiZnVuY3Rpb24iPT10eXBlb2YgUylmb3IoZT1TLmNhbGwoZSksJD0wOyEoZz1lLm5leHQoKSkuZG9uZTspeCs9UiQyKGc9Zy52YWx1ZSxzLGQsUz1tK1EkMihnLCQrKyksaCk7ZWxzZSBpZigib2JqZWN0Ij09PWcpdGhyb3cgcz1TdHJpbmcoZSksRXJyb3IoIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogIisoIltvYmplY3QgT2JqZWN0XSI9PT1zPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOnMpKyIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuIik7cmV0dXJuIHh9ZnVuY3Rpb24gUyQyKGUscyxkKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBtPVtdLGg9MDtyZXR1cm4gUiQyKGUsbSwiIiwiIixmdW5jdGlvbihlKXtyZXR1cm4gcy5jYWxsKGQsZSxoKyspfSksbX1mdW5jdGlvbiBUJDIoZSl7aWYoLTE9PT1lLl9zdGF0dXMpe3ZhciBzPWUuX3Jlc3VsdDsocz1zKCkpLnRoZW4oZnVuY3Rpb24ocyl7MCE9PWUuX3N0YXR1cyYmLTEhPT1lLl9zdGF0dXN8fChlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9cyl9LGZ1bmN0aW9uKHMpezAhPT1lLl9zdGF0dXMmJi0xIT09ZS5fc3RhdHVzfHwoZS5fc3RhdHVzPTIsZS5fcmVzdWx0PXMpfSksLTE9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9cyl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBhcD17Y3VycmVudDpudWxsfSxzcD17dHJhbnNpdGlvbjpudWxsfSxscD17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjphcCxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpzcCxSZWFjdEN1cnJlbnRPd25lcjppcH07TGQuQ2hpbGRyZW49e21hcDpTJDIsZm9yRWFjaDpmdW5jdGlvbihlLHMsZCl7UyQyKGUsZnVuY3Rpb24oKXtzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZCl9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciBzPTA7cmV0dXJuIFMkMihlLGZ1bmN0aW9uKCl7cysrfSksc30sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gUyQyKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KXx8W119LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIU8kMihlKSl0aHJvdyBFcnJvcigiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuIik7cmV0dXJuIGV9fSxMZC5Db21wb25lbnQ9RSQyLExkLkZyYWdtZW50PUZkLExkLlByb2ZpbGVyPVpkLExkLlB1cmVDb21wb25lbnQ9RyQxLExkLlN0cmljdE1vZGU9QmQsTGQuU3VzcGVuc2U9SGQsTGQuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9bHAsTGQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUscyxkKXtpZihudWxsPT1lKXRocm93IEVycm9yKCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCAiK2UrIi4iKTt2YXIgbT1YZCh7fSxlLnByb3BzKSxoPWUua2V5LGc9ZS5yZWYseD1lLl9vd25lcjtpZihudWxsIT1zKXtpZih2b2lkIDAhPT1zLnJlZiYmKGc9cy5yZWYseD1pcC5jdXJyZW50KSx2b2lkIDAhPT1zLmtleSYmKGg9IiIrcy5rZXkpLGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgJD1lLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihTIGluIHMpbnAuY2FsbChzLFMpJiYhcnAuaGFzT3duUHJvcGVydHkoUykmJihtW1NdPXZvaWQgMD09PXNbU10mJnZvaWQgMCE9PSQ/JFtTXTpzW1NdKX12YXIgUz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PVMpbS5jaGlsZHJlbj1kO2Vsc2UgaWYoMTxTKXskPUFycmF5KFMpO2Zvcih2YXIgaj0wO2o8UztqKyspJFtqXT1hcmd1bWVudHNbaisyXTttLmNoaWxkcmVuPSR9cmV0dXJueyQkdHlwZW9mOkFkLHR5cGU6ZS50eXBlLGtleTpoLHJlZjpnLHByb3BzOm0sX293bmVyOnh9fSxMZC5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybihlPXskJHR5cGVvZjpRZCxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGwsX2RlZmF1bHRWYWx1ZTpudWxsLF9nbG9iYWxOYW1lOm51bGx9KS5Qcm92aWRlcj17JCR0eXBlb2Y6TWQsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSxMZC5jcmVhdGVFbGVtZW50PU0kMixMZC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciBzPU0kMi5iaW5kKG51bGwsZSk7cmV0dXJuIHMudHlwZT1lLHN9LExkLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSxMZC5mb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpWZCxyZW5kZXI6ZX19LExkLmlzVmFsaWRFbGVtZW50PU8kMixMZC5sYXp5PWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpKZCxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmV9LF9pbml0OlQkMn19LExkLm1lbW89ZnVuY3Rpb24oZSxzKXtyZXR1cm57JCR0eXBlb2Y6V2QsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09cz9udWxsOnN9fSxMZC5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHM9c3AudHJhbnNpdGlvbjtzcC50cmFuc2l0aW9uPXt9O3RyeXtlKCl9ZmluYWxseXtzcC50cmFuc2l0aW9uPXN9fSxMZC51bnN0YWJsZV9hY3Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC4iKX0sTGQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSxzKXtyZXR1cm4gYXAuY3VycmVudC51c2VDYWxsYmFjayhlLHMpfSxMZC51c2VDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBhcC5jdXJyZW50LnVzZUNvbnRleHQoZSl9LExkLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LExkLnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFwLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShlKX0sTGQudXNlRWZmZWN0PWZ1bmN0aW9uKGUscyl7cmV0dXJuIGFwLmN1cnJlbnQudXNlRWZmZWN0KGUscyl9LExkLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlSWQoKX0sTGQudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihlLHMsZCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHMsZCl9LExkLnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihlLHMpe3JldHVybiBhcC5jdXJyZW50LnVzZUluc2VydGlvbkVmZmVjdChlLHMpfSxMZC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSxzKXtyZXR1cm4gYXAuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoZSxzKX0sTGQudXNlTWVtbz1mdW5jdGlvbihlLHMpe3JldHVybiBhcC5jdXJyZW50LnVzZU1lbW8oZSxzKX0sTGQudXNlUmVkdWNlcj1mdW5jdGlvbihlLHMsZCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlUmVkdWNlcihlLHMsZCl9LExkLnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gYXAuY3VycmVudC51c2VSZWYoZSl9LExkLnVzZVN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcC5jdXJyZW50LnVzZVN0YXRlKGUpfSxMZC51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihlLHMsZCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoZSxzLGQpfSxMZC51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfSxMZC52ZXJzaW9uPSIxOC4yLjAiLFVkLmV4cG9ydHM9TGQ7dmFyIGNwPVVkLmV4cG9ydHMsdXA9Y3A7ZnVuY3Rpb24gbCQyKGUpe2Zvcih2YXIgcz0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXMrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tkXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIitzKyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIGRwPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscHA9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLyxtcD17fSxmcD17fTtmdW5jdGlvbiBqYSQxKGUpe3JldHVybiEhZHAuY2FsbChmcCxlKXx8IWRwLmNhbGwobXAsZSkmJihwcC50ZXN0KGUpP2ZwW2VdPSEwOihtcFtlXT0hMCwhMSkpfWZ1bmN0aW9uIHIoZSxzLGQsbSxoLGcseCl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PXN8fDM9PT1zfHw0PT09cyx0aGlzLmF0dHJpYnV0ZU5hbWU9bSx0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1oLHRoaXMubXVzdFVzZVByb3BlcnR5PWQsdGhpcy5wcm9wZXJ0eU5hbWU9ZSx0aGlzLnR5cGU9cyx0aGlzLnNhbml0aXplVVJMPWcsdGhpcy5yZW1vdmVFbXB0eVN0cmluZz14fXZhciBocD17fTsiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSwwLCExLGUsbnVsbCwhMSwhMSl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZVswXTtocFtzXT1uZXcgcihzLDEsITEsZVsxXSxudWxsLCExLCExKX0pLFsiY29udGVudEVkaXRhYmxlIiwiZHJhZ2dhYmxlIiwic3BlbGxDaGVjayIsInZhbHVlIl0uZm9yRWFjaChmdW5jdGlvbihlKXtocFtlXT1uZXcgcihlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksWyJhdXRvUmV2ZXJzZSIsImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLCJmb2N1c2FibGUiLCJwcmVzZXJ2ZUFscGhhIl0uZm9yRWFjaChmdW5jdGlvbihlKXtocFtlXT1uZXcgcihlLDIsITEsZSxudWxsLCExLCExKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSwzLCEwLGUsbnVsbCwhMSwhMSl9KSxbImNhcHR1cmUiLCJkb3dubG9hZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSw0LCExLGUsbnVsbCwhMSwhMSl9KSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2hwW2VdPW5ldyByKGUsNiwhMSxlLG51bGwsITEsITEpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2hwW2VdPW5ldyByKGUsNSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgZ3A9L1tcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIGxhJDEoZSl7cmV0dXJuIGVbMV0udG9VcHBlckNhc2UoKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcz1lLnJlcGxhY2UoZ3AsbGEkMSk7aHBbc109bmV3IHIocywxLCExLGUsbnVsbCwhMSwhMSl9KSwieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZS5yZXBsYWNlKGdwLGxhJDEpO2hwW3NdPW5ldyByKHMsMSwhMSxlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMSwhMSl9KSxbInhtbDpiYXNlIiwieG1sOmxhbmciLCJ4bWw6c3BhY2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBzPWUucmVwbGFjZShncCxsYSQxKTtocFtzXT1uZXcgcihzLDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwhMSwhMSl9KSxbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2hwW2VdPW5ldyByKGUsMSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KSxocC54bGlua0hyZWY9bmV3IHIoInhsaW5rSHJlZiIsMSwhMSwieGxpbms6aHJlZiIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCEwLCExKSxbInNyYyIsImhyZWYiLCJhY3Rpb24iLCJmb3JtQWN0aW9uIl0uZm9yRWFjaChmdW5jdGlvbihlKXtocFtlXT1uZXcgcihlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7dmFyIHZwPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSx5cD1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKHZwKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3lwLmZvckVhY2goZnVuY3Rpb24ocyl7cz1zK2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSksdnBbc109dnBbZV19KX0pO3ZhciBicD0vWyInJjw+XS87ZnVuY3Rpb24gdihlKXtpZigiYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIiIrZTtlPSIiK2U7dmFyIHM9YnAuZXhlYyhlKTtpZihzKXt2YXIgZCxtPSIiLGg9MDtmb3IoZD1zLmluZGV4O2Q8ZS5sZW5ndGg7ZCsrKXtzd2l0Y2goZS5jaGFyQ29kZUF0KGQpKXtjYXNlIDM0OnM9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpzPSImYW1wOyI7YnJlYWs7Y2FzZSAzOTpzPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cz0iJmx0OyI7YnJlYWs7Y2FzZSA2MjpzPSImZ3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfWghPT1kJiYobSs9ZS5zdWJzdHJpbmcoaCxkKSksaD1kKzEsbSs9c31lPWghPT1kP20rZS5zdWJzdHJpbmcoaCxkKTptfXJldHVybiBlfXZhciBfcD0vKFtBLVpdKS9nLHhwPS9ebXMtLyx3cD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHckMShlLHMpe3JldHVybntpbnNlcnRpb25Nb2RlOmUsc2VsZWN0ZWRWYWx1ZTpzfX12YXIgJHA9bmV3IE1hcDtmdW5jdGlvbiB0YSQxKGUscyxkKXtpZigib2JqZWN0IiE9dHlwZW9mIGQpdGhyb3cgRXJyb3IobCQyKDYyKSk7Zm9yKHZhciBtIGluIHM9ITAsZClpZihkcC5jYWxsKGQsbSkpe3ZhciBoPWRbbV07aWYobnVsbCE9aCYmImJvb2xlYW4iIT10eXBlb2YgaCYmIiIhPT1oKXtpZigwPT09bS5pbmRleE9mKCItLSIpKXt2YXIgZz12KG0pO2g9digoIiIraCkudHJpbSgpKX1lbHNle2c9bTt2YXIgeD0kcC5nZXQoZyk7dm9pZCAwIT09eHx8KHg9dihnLnJlcGxhY2UoX3AsIi0kMSIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSh4cCwiLW1zLSIpKSwkcC5zZXQoZyx4KSksZz14LGg9Im51bWJlciI9PXR5cGVvZiBoPzA9PT1ofHxkcC5jYWxsKHZwLG0pPyIiK2g6aCsicHgiOnYoKCIiK2gpLnRyaW0oKSl9cz8ocz0hMSxlLnB1c2goJyBzdHlsZT0iJyxnLCI6IixoKSk6ZS5wdXNoKCI7IixnLCI6IixoKX19c3x8ZS5wdXNoKCciJyl9ZnVuY3Rpb24geCQxKGUscyxkLG0pe3N3aXRjaChkKXtjYXNlInN0eWxlIjpyZXR1cm4gdm9pZCB0YSQxKGUscyxtKTtjYXNlImRlZmF1bHRWYWx1ZSI6Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6Y2FzZSJpbm5lckhUTUwiOmNhc2Uic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIjpjYXNlInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyI6cmV0dXJufWlmKCEoMjxkLmxlbmd0aCl8fCJvIiE9PWRbMF0mJiJPIiE9PWRbMF18fCJuIiE9PWRbMV0mJiJOIiE9PWRbMV0paWYobnVsbCE9PShzPWhwLmhhc093blByb3BlcnR5KGQpP2hwW2RdOm51bGwpKXtzd2l0Y2godHlwZW9mIG0pe2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjpyZXR1cm47Y2FzZSJib29sZWFuIjppZighcy5hY2NlcHRzQm9vbGVhbnMpcmV0dXJufXN3aXRjaChkPXMuYXR0cmlidXRlTmFtZSxzLnR5cGUpe2Nhc2UgMzptJiZlLnB1c2goIiAiLGQsJz0iIicpO2JyZWFrO2Nhc2UgNDohMD09PW0/ZS5wdXNoKCIgIixkLCc9IiInKTohMSE9PW0mJmUucHVzaCgiICIsZCwnPSInLHYobSksJyInKTticmVhaztjYXNlIDU6aXNOYU4obSl8fGUucHVzaCgiICIsZCwnPSInLHYobSksJyInKTticmVhaztjYXNlIDY6IWlzTmFOKG0pJiYxPD1tJiZlLnB1c2goIiAiLGQsJz0iJyx2KG0pLCciJyk7YnJlYWs7ZGVmYXVsdDpzLnNhbml0aXplVVJMJiYobT0iIittKSxlLnB1c2goIiAiLGQsJz0iJyx2KG0pLCciJyl9fWVsc2UgaWYoamEkMShkKSl7c3dpdGNoKHR5cGVvZiBtKXtjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6cmV0dXJuO2Nhc2UiYm9vbGVhbiI6aWYoImRhdGEtIiE9PShzPWQudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmImFyaWEtIiE9PXMpcmV0dXJufWUucHVzaCgiICIsZCwnPSInLHYobSksJyInKX19ZnVuY3Rpb24geSQxKGUscyxkKXtpZihudWxsIT1zKXtpZihudWxsIT1kKXRocm93IEVycm9yKGwkMig2MCkpO2lmKCJvYmplY3QiIT10eXBlb2Ygc3x8ISgiX19odG1sImluIHMpKXRocm93IEVycm9yKGwkMig2MSkpO251bGwhPShzPXMuX19odG1sKSYmZS5wdXNoKCIiK3MpfX1mdW5jdGlvbiB2YSQxKGUscyxkLG0pe2UucHVzaChBKGQpKTt2YXIgaCxnPWQ9bnVsbDtmb3IoaCBpbiBzKWlmKGRwLmNhbGwocyxoKSl7dmFyIHg9c1toXTtpZihudWxsIT14KXN3aXRjaChoKXtjYXNlImNoaWxkcmVuIjpkPXg7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6Zz14O2JyZWFrO2RlZmF1bHQ6eCQxKGUsbSxoLHgpfX1yZXR1cm4gZS5wdXNoKCI+IikseSQxKGUsZyxkKSwic3RyaW5nIj09dHlwZW9mIGQ/KGUucHVzaCh2KGQpKSxudWxsKTpkfXZhciBTcD0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxrcD1uZXcgTWFwO2Z1bmN0aW9uIEEoZSl7dmFyIHM9a3AuZ2V0KGUpO2lmKHZvaWQgMD09PXMpe2lmKCFTcC50ZXN0KGUpKXRocm93IEVycm9yKGwkMig2NSxlKSk7cz0iPCIrZSxrcC5zZXQoZSxzKX1yZXR1cm4gc31mdW5jdGlvbiB5YSQxKGUscyxkLG0saCl7c3dpdGNoKHMpe2Nhc2Uic2VsZWN0IjplLnB1c2goQSgic2VsZWN0IikpO3ZhciBnPW51bGwseD1udWxsO2Zvcih6IGluIGQpaWYoZHAuY2FsbChkLHopKXt2YXIgJD1kW3pdO2lmKG51bGwhPSQpc3dpdGNoKHope2Nhc2UiY2hpbGRyZW4iOmc9JDticmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp4PSQ7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOmNhc2UidmFsdWUiOmJyZWFrO2RlZmF1bHQ6eCQxKGUsbSx6LCQpfX1yZXR1cm4gZS5wdXNoKCI+IikseSQxKGUseCxnKSxnO2Nhc2Uib3B0aW9uIjp4PWguc2VsZWN0ZWRWYWx1ZSxlLnB1c2goQSgib3B0aW9uIikpO3ZhciBTPSQ9bnVsbCxqPW51bGwsej1udWxsO2ZvcihnIGluIGQpaWYoZHAuY2FsbChkLGcpKXt2YXIgST1kW2ddO2lmKG51bGwhPUkpc3dpdGNoKGcpe2Nhc2UiY2hpbGRyZW4iOiQ9STticmVhaztjYXNlInNlbGVjdGVkIjpqPUk7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6ej1JO2JyZWFrO2Nhc2UidmFsdWUiOlM9STtkZWZhdWx0OngkMShlLG0sZyxJKX19aWYobnVsbCE9eClpZihkPW51bGwhPT1TPyIiK1M6ZnVuY3Rpb24oZSl7dmFyIHM9IiI7cmV0dXJuIHVwLkNoaWxkcmVuLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxsIT1lJiYocys9ZSl9KSxzfSgkKSx3cCh4KSl7Zm9yKG09MDttPHgubGVuZ3RoO20rKylpZigiIit4W21dPT09ZCl7ZS5wdXNoKCcgc2VsZWN0ZWQ9IiInKTticmVha319ZWxzZSIiK3g9PT1kJiZlLnB1c2goJyBzZWxlY3RlZD0iIicpO2Vsc2UgaiYmZS5wdXNoKCcgc2VsZWN0ZWQ9IiInKTtyZXR1cm4gZS5wdXNoKCI+IikseSQxKGUseiwkKSwkO2Nhc2UidGV4dGFyZWEiOmZvcigkIGluIGUucHVzaChBKCJ0ZXh0YXJlYSIpKSx6PXg9Zz1udWxsLGQpaWYoZHAuY2FsbChkLCQpJiZudWxsIT0oUz1kWyRdKSlzd2l0Y2goJCl7Y2FzZSJjaGlsZHJlbiI6ej1TO2JyZWFrO2Nhc2UidmFsdWUiOmc9UzticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6eD1TO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGwkMig5MSkpO2RlZmF1bHQ6eCQxKGUsbSwkLFMpfWlmKG51bGw9PT1nJiZudWxsIT09eCYmKGc9eCksZS5wdXNoKCI+IiksbnVsbCE9eil7aWYobnVsbCE9Zyl0aHJvdyBFcnJvcihsJDIoOTIpKTtpZih3cCh6KSYmMTx6Lmxlbmd0aCl0aHJvdyBFcnJvcihsJDIoOTMpKTtnPSIiK3p9cmV0dXJuInN0cmluZyI9PXR5cGVvZiBnJiYiXG4iPT09Z1swXSYmZS5wdXNoKCJcbiIpLG51bGwhPT1nJiZlLnB1c2godigiIitnKSksbnVsbDtjYXNlImlucHV0Ijpmb3IoeCBpbiBlLnB1c2goQSgiaW5wdXQiKSksUz16PSQ9Zz1udWxsLGQpaWYoZHAuY2FsbChkLHgpJiZudWxsIT0oaj1kW3hdKSlzd2l0Y2goeCl7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IobCQyKDM5OSwiaW5wdXQiKSk7Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6Uz1qO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjokPWo7YnJlYWs7Y2FzZSJjaGVja2VkIjp6PWo7YnJlYWs7Y2FzZSJ2YWx1ZSI6Zz1qO2JyZWFrO2RlZmF1bHQ6eCQxKGUsbSx4LGopfXJldHVybiBudWxsIT09ej94JDEoZSxtLCJjaGVja2VkIix6KTpudWxsIT09UyYmeCQxKGUsbSwiY2hlY2tlZCIsUyksbnVsbCE9PWc/eCQxKGUsbSwidmFsdWUiLGcpOm51bGwhPT0kJiZ4JDEoZSxtLCJ2YWx1ZSIsJCksZS5wdXNoKCIvPiIpLG51bGw7Y2FzZSJtZW51aXRlbSI6Zm9yKHZhciBUIGluIGUucHVzaChBKCJtZW51aXRlbSIpKSxkKWlmKGRwLmNhbGwoZCxUKSYmbnVsbCE9KGc9ZFtUXSkpc3dpdGNoKFQpe2Nhc2UiY2hpbGRyZW4iOmNhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGwkMig0MDApKTtkZWZhdWx0OngkMShlLG0sVCxnKX1yZXR1cm4gZS5wdXNoKCI+IiksbnVsbDtjYXNlInRpdGxlIjpmb3IoSSBpbiBlLnB1c2goQSgidGl0bGUiKSksZz1udWxsLGQpaWYoZHAuY2FsbChkLEkpJiZudWxsIT0oeD1kW0ldKSlzd2l0Y2goSSl7Y2FzZSJjaGlsZHJlbiI6Zz14O2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGwkMig0MzQpKTtkZWZhdWx0OngkMShlLG0sSSx4KX1yZXR1cm4gZS5wdXNoKCI+IiksZztjYXNlImxpc3RpbmciOmNhc2UicHJlIjpmb3IoUyBpbiBlLnB1c2goQShzKSkseD1nPW51bGwsZClpZihkcC5jYWxsKGQsUykmJm51bGwhPSgkPWRbU10pKXN3aXRjaChTKXtjYXNlImNoaWxkcmVuIjpnPSQ7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6eD0kO2JyZWFrO2RlZmF1bHQ6eCQxKGUsbSxTLCQpfWlmKGUucHVzaCgiPiIpLG51bGwhPXgpe2lmKG51bGwhPWcpdGhyb3cgRXJyb3IobCQyKDYwKSk7aWYoIm9iamVjdCIhPXR5cGVvZiB4fHwhKCJfX2h0bWwiaW4geCkpdGhyb3cgRXJyb3IobCQyKDYxKSk7bnVsbCE9KGQ9eC5fX2h0bWwpJiYoInN0cmluZyI9PXR5cGVvZiBkJiYwPGQubGVuZ3RoJiYiXG4iPT09ZFswXT9lLnB1c2goIlxuIixkKTplLnB1c2goIiIrZCkpfXJldHVybiJzdHJpbmciPT10eXBlb2YgZyYmIlxuIj09PWdbMF0mJmUucHVzaCgiXG4iKSxnO2Nhc2UiYXJlYSI6Y2FzZSJiYXNlIjpjYXNlImJyIjpjYXNlImNvbCI6Y2FzZSJlbWJlZCI6Y2FzZSJociI6Y2FzZSJpbWciOmNhc2Uia2V5Z2VuIjpjYXNlImxpbmsiOmNhc2UibWV0YSI6Y2FzZSJwYXJhbSI6Y2FzZSJzb3VyY2UiOmNhc2UidHJhY2siOmNhc2Uid2JyIjpmb3IodmFyIFIgaW4gZS5wdXNoKEEocykpLGQpaWYoZHAuY2FsbChkLFIpJiZudWxsIT0oZz1kW1JdKSlzd2l0Y2goUil7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IobCQyKDM5OSxzKSk7ZGVmYXVsdDp4JDEoZSxtLFIsZyl9cmV0dXJuIGUucHVzaCgiLz4iKSxudWxsO2Nhc2UiYW5ub3RhdGlvbi14bWwiOmNhc2UiY29sb3ItcHJvZmlsZSI6Y2FzZSJmb250LWZhY2UiOmNhc2UiZm9udC1mYWNlLXNyYyI6Y2FzZSJmb250LWZhY2UtdXJpIjpjYXNlImZvbnQtZmFjZS1mb3JtYXQiOmNhc2UiZm9udC1mYWNlLW5hbWUiOmNhc2UibWlzc2luZy1nbHlwaCI6cmV0dXJuIHZhJDEoZSxkLHMsbSk7Y2FzZSJodG1sIjpyZXR1cm4gMD09PWguaW5zZXJ0aW9uTW9kZSYmZS5wdXNoKCI8IURPQ1RZUEUgaHRtbD4iKSx2YSQxKGUsZCxzLG0pO2RlZmF1bHQ6aWYoLTE9PT1zLmluZGV4T2YoIi0iKSYmInN0cmluZyIhPXR5cGVvZiBkLmlzKXJldHVybiB2YSQxKGUsZCxzLG0pO2ZvcihqIGluIGUucHVzaChBKHMpKSx4PWc9bnVsbCxkKWlmKGRwLmNhbGwoZCxqKSYmbnVsbCE9KCQ9ZFtqXSkpc3dpdGNoKGope2Nhc2UiY2hpbGRyZW4iOmc9JDticmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp4PSQ7YnJlYWs7Y2FzZSJzdHlsZSI6dGEkMShlLG0sJCk7YnJlYWs7Y2FzZSJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciOmNhc2Uic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIjpicmVhaztkZWZhdWx0OmphJDEoaikmJiJmdW5jdGlvbiIhPXR5cGVvZiAkJiYic3ltYm9sIiE9dHlwZW9mICQmJmUucHVzaCgiICIsaiwnPSInLHYoJCksJyInKX1yZXR1cm4gZS5wdXNoKCI+IikseSQxKGUseCxnKSxnfX1mdW5jdGlvbiB6YSQxKGUscyxkKXtpZihlLnB1c2goJ1x4M2MhLS0kPy0tXHgzZTx0ZW1wbGF0ZSBpZD0iJyksbnVsbD09PWQpdGhyb3cgRXJyb3IobCQyKDM5NSkpO3JldHVybiBlLnB1c2goZCksZS5wdXNoKCciPjwvdGVtcGxhdGU+Jyl9dmFyIGpwPS9bPFx1MjAyOFx1MjAyOV0vZztmdW5jdGlvbiBEYSQxKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKGpwLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIjwiOnJldHVybiJcXHUwMDNjIjtjYXNlIlx1MjAyOCI6cmV0dXJuIlxcdTIwMjgiO2Nhc2UiXHUyMDI5IjpyZXR1cm4iXFx1MjAyOSI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzIGVuY291bnRlcmVkIGEgbWF0Y2ggaXQgZG9lcyBub3Qga25vdyBob3cgdG8gcmVwbGFjZS4gdGhpcyBtZWFucyB0aGUgbWF0Y2ggcmVnZXggYW5kIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBubyBsb25nZXIgaW4gc3luYy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdCIpfX0pfWZ1bmN0aW9uIEZhJDEoZSxzLGQsbSl7cmV0dXJuIGQuZ2VuZXJhdGVTdGF0aWNNYXJrdXA/KGUucHVzaCh2KHMpKSwhMSk6KCIiPT09cz9lPW06KG0mJmUucHVzaCgiXHgzYyEtLSAtLVx4M2UiKSxlLnB1c2godihzKSksZT0hMCksZSl9dmFyIHpwPU9iamVjdC5hc3NpZ24sSXA9U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLENwPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLFRwPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksUnA9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxFcD1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLE9wPVN5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIiksUHA9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLE5wPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksRHA9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSxVcD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0IiksTHA9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLEFwPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxxcD1TeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpLEZwPVN5bWJvbC5mb3IoInJlYWN0LmRlYnVnX3RyYWNlX21vZGUiKSxCcD1TeW1ib2wuZm9yKCJyZWFjdC5sZWdhY3lfaGlkZGVuIiksWnA9U3ltYm9sLmZvcigicmVhY3QuZGVmYXVsdF92YWx1ZSIpLE1wPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBYYSQxKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7c3dpdGNoKGUpe2Nhc2UgVHA6cmV0dXJuIkZyYWdtZW50IjtjYXNlIENwOnJldHVybiJQb3J0YWwiO2Nhc2UgRXA6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIFJwOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIERwOnJldHVybiJTdXNwZW5zZSI7Y2FzZSBVcDpyZXR1cm4iU3VzcGVuc2VMaXN0In1pZigib2JqZWN0Ij09dHlwZW9mIGUpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgUHA6cmV0dXJuKGUuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSBPcDpyZXR1cm4oZS5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIE5wOnZhciBzPWUucmVuZGVyO3JldHVybihlPWUuZGlzcGxheU5hbWUpfHwoZT0iIiE9PShlPXMuZGlzcGxheU5hbWV8fHMubmFtZXx8IiIpPyJGb3J3YXJkUmVmKCIrZSsiKSI6IkZvcndhcmRSZWYiKSxlO2Nhc2UgTHA6cmV0dXJuIG51bGwhPT0ocz1lLmRpc3BsYXlOYW1lfHxudWxsKT9zOlhhJDEoZS50eXBlKXx8Ik1lbW8iO2Nhc2UgQXA6cz1lLl9wYXlsb2FkLGU9ZS5faW5pdDt0cnl7cmV0dXJuIFhhJDEoZShzKSl9Y2F0Y2goZSl7fX1yZXR1cm4gbnVsbH12YXIgUXA9e307ZnVuY3Rpb24gWmEkMShlLHMpe2lmKCEoZT1lLmNvbnRleHRUeXBlcykpcmV0dXJuIFFwO3ZhciBkLG09e307Zm9yKGQgaW4gZSltW2RdPXNbZF07cmV0dXJuIG19dmFyIFZwPW51bGw7ZnVuY3Rpb24gRihlLHMpe2lmKGUhPT1zKXtlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZTI9ZS5wYXJlbnRWYWx1ZSxlPWUucGFyZW50O3ZhciBkPXMucGFyZW50O2lmKG51bGw9PT1lKXtpZihudWxsIT09ZCl0aHJvdyBFcnJvcihsJDIoNDAxKSl9ZWxzZXtpZihudWxsPT09ZCl0aHJvdyBFcnJvcihsJDIoNDAxKSk7RihlLGQpfXMuY29udGV4dC5fY3VycmVudFZhbHVlMj1zLnZhbHVlfX1mdW5jdGlvbiAkYSQxKGUpe2UuY29udGV4dC5fY3VycmVudFZhbHVlMj1lLnBhcmVudFZhbHVlLG51bGwhPT0oZT1lLnBhcmVudCkmJiRhJDEoZSl9ZnVuY3Rpb24gYWIkMShlKXt2YXIgcz1lLnBhcmVudDtudWxsIT09cyYmYWIkMShzKSxlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZTI9ZS52YWx1ZX1mdW5jdGlvbiBiYiQxKGUscyl7aWYoZS5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPWUucGFyZW50VmFsdWUsbnVsbD09PShlPWUucGFyZW50KSl0aHJvdyBFcnJvcihsJDIoNDAyKSk7ZS5kZXB0aD09PXMuZGVwdGg/RihlLHMpOmJiJDEoZSxzKX1mdW5jdGlvbiBjYiQxKGUscyl7dmFyIGQ9cy5wYXJlbnQ7aWYobnVsbD09PWQpdGhyb3cgRXJyb3IobCQyKDQwMikpO2UuZGVwdGg9PT1kLmRlcHRoP0YoZSxkKTpjYiQxKGUsZCkscy5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPXMudmFsdWV9ZnVuY3Rpb24gRyhlKXt2YXIgcz1WcDtzIT09ZSYmKG51bGw9PT1zP2FiJDEoZSk6bnVsbD09PWU/JGEkMShzKTpzLmRlcHRoPT09ZS5kZXB0aD9GKHMsZSk6cy5kZXB0aD5lLmRlcHRoP2JiJDEocyxlKTpjYiQxKHMsZSksVnA9ZSl9dmFyIEhwPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUscyl7bnVsbCE9PShlPWUuX3JlYWN0SW50ZXJuYWxzKS5xdWV1ZSYmZS5xdWV1ZS5wdXNoKHMpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUscyl7KGU9ZS5fcmVhY3RJbnRlcm5hbHMpLnJlcGxhY2U9ITAsZS5xdWV1ZT1bc119LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIGViJDEoZSxzLGQsbSl7dmFyIGg9dm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGw7ZS51cGRhdGVyPUhwLGUucHJvcHM9ZCxlLnN0YXRlPWg7dmFyIGc9e3F1ZXVlOltdLHJlcGxhY2U6ITF9O2UuX3JlYWN0SW50ZXJuYWxzPWc7dmFyIHg9cy5jb250ZXh0VHlwZTtpZihlLmNvbnRleHQ9Im9iamVjdCI9PXR5cGVvZiB4JiZudWxsIT09eD94Ll9jdXJyZW50VmFsdWUyOm0sImZ1bmN0aW9uIj09dHlwZW9mKHg9cy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpJiYoaD1udWxsPT0oeD14KGQsaCkpP2g6enAoe30saCx4KSxlLnN0YXRlPWgpLCJmdW5jdGlvbiIhPXR5cGVvZiBzLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJigiZnVuY3Rpb24iPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50fHwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQpKWlmKHM9ZS5zdGF0ZSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkscyE9PWUuc3RhdGUmJkhwLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLG51bGwhPT1nLnF1ZXVlJiYwPGcucXVldWUubGVuZ3RoKWlmKHM9Zy5xdWV1ZSx4PWcucmVwbGFjZSxnLnF1ZXVlPW51bGwsZy5yZXBsYWNlPSExLHgmJjE9PT1zLmxlbmd0aCllLnN0YXRlPXNbMF07ZWxzZXtmb3IoZz14P3NbMF06ZS5zdGF0ZSxoPSEwLHg9eD8xOjA7eDxzLmxlbmd0aDt4Kyspe3ZhciAkPXNbeF07bnVsbCE9KCQ9ImZ1bmN0aW9uIj09dHlwZW9mICQ/JC5jYWxsKGUsZyxkLG0pOiQpJiYoaD8oaD0hMSxnPXpwKHt9LGcsJCkpOnpwKGcsJCkpfWUuc3RhdGU9Z31lbHNlIGcucXVldWU9bnVsbH12YXIgV3A9e2lkOjEsb3ZlcmZsb3c6IiJ9O2Z1bmN0aW9uIGdiJDEoZSxzLGQpe3ZhciBtPWUuaWQ7ZT1lLm92ZXJmbG93O3ZhciBoPTMyLUpwKG0pLTE7bSY9figxPDxoKSxkKz0xO3ZhciBnPTMyLUpwKHMpK2g7aWYoMzA8Zyl7dmFyIHg9aC1oJTU7cmV0dXJuIGc9KG0mKDE8PHgpLTEpLnRvU3RyaW5nKDMyKSxtPj49eCxoLT14LHtpZDoxPDwzMi1KcChzKStofGQ8PGh8bSxvdmVyZmxvdzpnK2V9fXJldHVybntpZDoxPDxnfGQ8PGh8bSxvdmVyZmxvdzplfX12YXIgSnA9TWF0aC5jbHozMj9NYXRoLmNsejMyOmZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU+Pj49MCk/MzI6MzEtKEtwKGUpL0dwfDApfDB9LEtwPU1hdGgubG9nLEdwPU1hdGguTE4yO3ZhciBYcD0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpmdW5jdGlvbihlLHMpe3JldHVybiBlPT09cyYmKDAhPT1lfHwxL2U9PTEvcyl8fGUhPWUmJnMhPXN9LFlwPW51bGwsZW09bnVsbCx0bT1udWxsLG5tPW51bGwsaW09ITEscm09ITEsb209MCxhbT1udWxsLHNtPTA7ZnVuY3Rpb24gUSQxKCl7aWYobnVsbD09PVlwKXRocm93IEVycm9yKGwkMigzMjEpKTtyZXR1cm4gWXB9ZnVuY3Rpb24gcGIkMSgpe2lmKDA8c20pdGhyb3cgRXJyb3IobCQyKDMxMikpO3JldHVybnttZW1vaXplZFN0YXRlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIHFiJDEoKXtyZXR1cm4gbnVsbD09PW5tP251bGw9PT10bT8oaW09ITEsdG09bm09cGIkMSgpKTooaW09ITAsbm09dG0pOm51bGw9PT1ubS5uZXh0PyhpbT0hMSxubT1ubS5uZXh0PXBiJDEoKSk6KGltPSEwLG5tPW5tLm5leHQpLG5tfWZ1bmN0aW9uIHJiJDEoKXtlbT1ZcD1udWxsLHJtPSExLHRtPW51bGwsc209MCxubT1hbT1udWxsfWZ1bmN0aW9uIHNiJDEoZSxzKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKGUpOnN9ZnVuY3Rpb24gdGIkMShlLHMsZCl7aWYoWXA9USQxKCksbm09cWIkMSgpLGltKXt2YXIgbT1ubS5xdWV1ZTtpZihzPW0uZGlzcGF0Y2gsbnVsbCE9PWFtJiZ2b2lkIDAhPT0oZD1hbS5nZXQobSkpKXthbS5kZWxldGUobSksbT1ubS5tZW1vaXplZFN0YXRlO2Rve209ZShtLGQuYWN0aW9uKSxkPWQubmV4dH13aGlsZShudWxsIT09ZCk7cmV0dXJuIG5tLm1lbW9pemVkU3RhdGU9bSxbbSxzXX1yZXR1cm5bbm0ubWVtb2l6ZWRTdGF0ZSxzXX1yZXR1cm4gZT1lPT09c2IkMT8iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKCk6czp2b2lkIDAhPT1kP2Qocyk6cyxubS5tZW1vaXplZFN0YXRlPWUsZT0oZT1ubS5xdWV1ZT17bGFzdDpudWxsLGRpc3BhdGNoOm51bGx9KS5kaXNwYXRjaD11YiQxLmJpbmQobnVsbCxZcCxlKSxbbm0ubWVtb2l6ZWRTdGF0ZSxlXX1mdW5jdGlvbiB2YiQxKGUscyl7aWYoWXA9USQxKCkscz12b2lkIDA9PT1zP251bGw6cyxudWxsIT09KG5tPXFiJDEoKSkpe3ZhciBkPW5tLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1zKXt2YXIgbT1kWzFdO2U6aWYobnVsbD09PW0pbT0hMTtlbHNle2Zvcih2YXIgaD0wO2g8bS5sZW5ndGgmJmg8cy5sZW5ndGg7aCsrKWlmKCFYcChzW2hdLG1baF0pKXttPSExO2JyZWFrIGV9bT0hMH1pZihtKXJldHVybiBkWzBdfX1yZXR1cm4gZT1lKCksbm0ubWVtb2l6ZWRTdGF0ZT1bZSxzXSxlfWZ1bmN0aW9uIHViJDEoZSxzLGQpe2lmKDI1PD1zbSl0aHJvdyBFcnJvcihsJDIoMzAxKSk7aWYoZT09PVlwKWlmKHJtPSEwLGU9e2FjdGlvbjpkLG5leHQ6bnVsbH0sbnVsbD09PWFtJiYoYW09bmV3IE1hcCksdm9pZCAwPT09KGQ9YW0uZ2V0KHMpKSlhbS5zZXQocyxlKTtlbHNle2ZvcihzPWQ7bnVsbCE9PXMubmV4dDspcz1zLm5leHQ7cy5uZXh0PWV9fWZ1bmN0aW9uIHdiJDEoKXt0aHJvdyBFcnJvcihsJDIoMzk0KSl9ZnVuY3Rpb24gUiQxKCl7fXZhciBsbT17cmVhZENvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2N1cnJlbnRWYWx1ZTJ9LHVzZUNvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFEkMSgpLGUuX2N1cnJlbnRWYWx1ZTJ9LHVzZU1lbW86dmIkMSx1c2VSZWR1Y2VyOnRiJDEsdXNlUmVmOmZ1bmN0aW9uKGUpe1lwPVEkMSgpO3ZhciBzPShubT1xYiQxKCkpLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGw9PT1zPyhlPXtjdXJyZW50OmV9LG5tLm1lbW9pemVkU3RhdGU9ZSk6c30sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRiJDEoc2IkMSxlKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OlIkMSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oKXt9LHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUscyl7cmV0dXJuIHZiJDEoZnVuY3Rpb24oKXtyZXR1cm4gZX0scyl9LHVzZUltcGVyYXRpdmVIYW5kbGU6UiQxLHVzZUVmZmVjdDpSJDEsdXNlRGVidWdWYWx1ZTpSJDEsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUSQxKCksZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiBRJDEoKSxbITEsd2IkMV19LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGU9ZW0udHJlZUNvbnRleHQscz1lLm92ZXJmbG93O2U9KChlPWUuaWQpJn4oMTw8MzItSnAoZSktMSkpLnRvU3RyaW5nKDMyKStzO3ZhciBkPWNtO2lmKG51bGw9PT1kKXRocm93IEVycm9yKGwkMig0MDQpKTtyZXR1cm4gcz1vbSsrLGU9IjoiK2QuaWRQcmVmaXgrIlIiK2UsMDxzJiYoZSs9IkgiK3MudG9TdHJpbmcoMzIpKSxlKyI6In0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbihlLHMpe3JldHVybiBRJDEoKSxzKGUuX3NvdXJjZSl9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGUscyxkKXtpZih2b2lkIDA9PT1kKXRocm93IEVycm9yKGwkMig0MDcpKTtyZXR1cm4gZCgpfX0sY209bnVsbCx1bT11cC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO2Z1bmN0aW9uIHpiJDEoZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoZSksbnVsbH1mdW5jdGlvbiBUJDEoKXt9ZnVuY3Rpb24gQmIkMShlLHMsZCxtLGgsZyx4LCQpe2UuYWxsUGVuZGluZ1Rhc2tzKyssbnVsbD09PWQ/ZS5wZW5kaW5nUm9vdFRhc2tzKys6ZC5wZW5kaW5nVGFza3MrKzt2YXIgUz17bm9kZTpzLHBpbmc6ZnVuY3Rpb24oKXt2YXIgcz1lLnBpbmdlZFRhc2tzO3MucHVzaChTKSwxPT09cy5sZW5ndGgmJkNiJDEoZSl9LGJsb2NrZWRCb3VuZGFyeTpkLGJsb2NrZWRTZWdtZW50Om0sYWJvcnRTZXQ6aCxsZWdhY3lDb250ZXh0OmcsY29udGV4dDp4LHRyZWVDb250ZXh0OiR9O3JldHVybiBoLmFkZChTKSxTfWZ1bmN0aW9uIFUkMShlLHMsZCxtLGgsZyl7cmV0dXJue3N0YXR1czowLGlkOi0xLGluZGV4OnMscGFyZW50Rmx1c2hlZDohMSxjaHVua3M6W10sY2hpbGRyZW46W10sZm9ybWF0Q29udGV4dDptLGJvdW5kYXJ5OmQsbGFzdFB1c2hlZFRleHQ6aCx0ZXh0RW1iZWRkZWQ6Z319ZnVuY3Rpb24gViQxKGUscyl7aWYobnVsbCE9KGU9ZS5vbkVycm9yKHMpKSYmInN0cmluZyIhPXR5cGVvZiBlKXRocm93IEVycm9yKCdvbkVycm9yIHJldHVybmVkIHNvbWV0aGluZyB3aXRoIGEgdHlwZSBvdGhlciB0aGFuICJzdHJpbmciLiBvbkVycm9yIHNob3VsZCByZXR1cm4gYSBzdHJpbmcgYW5kIG1heSByZXR1cm4gbnVsbCBvciB1bmRlZmluZWQgYnV0IG11c3Qgbm90IHJldHVybiBhbnl0aGluZyBlbHNlLiBJdCByZWNlaXZlZCBzb21ldGhpbmcgb2YgdHlwZSAiJyt0eXBlb2YgZSsnIiBpbnN0ZWFkJyk7cmV0dXJuIGV9ZnVuY3Rpb24gVyQxKGUscyl7dmFyIGQ9ZS5vblNoZWxsRXJyb3I7ZChzKSwoZD1lLm9uRmF0YWxFcnJvcikocyksbnVsbCE9PWUuZGVzdGluYXRpb24/KGUuc3RhdHVzPTIsZS5kZXN0aW5hdGlvbi5kZXN0cm95KHMpKTooZS5zdGF0dXM9MSxlLmZhdGFsRXJyb3I9cyl9ZnVuY3Rpb24gRGIkMShlLHMsZCxtLGgpe2ZvcihZcD17fSxlbT1zLG9tPTAsZT1kKG0saCk7cm07KXJtPSExLG9tPTAsc20rPTEsbm09bnVsbCxlPWQobSxoKTtyZXR1cm4gcmIkMSgpLGV9ZnVuY3Rpb24gRWIkMShlLHMsZCxtKXt2YXIgaD1kLnJlbmRlcigpLGc9bS5jaGlsZENvbnRleHRUeXBlcztpZihudWxsIT1nKXt2YXIgeD1zLmxlZ2FjeUNvbnRleHQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KW09eDtlbHNle2Zvcih2YXIgJCBpbiBkPWQuZ2V0Q2hpbGRDb250ZXh0KCkpaWYoISgkIGluIGcpKXRocm93IEVycm9yKGwkMigxMDgsWGEkMShtKXx8IlVua25vd24iLCQpKTttPXpwKHt9LHgsZCl9cy5sZWdhY3lDb250ZXh0PW0sWCQxKGUscyxoKSxzLmxlZ2FjeUNvbnRleHQ9eH1lbHNlIFgkMShlLHMsaCl9ZnVuY3Rpb24gRmIoZSxzKXtpZihlJiZlLmRlZmF1bHRQcm9wcyl7Zm9yKHZhciBkIGluIHM9enAoe30scyksZT1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1zW2RdJiYoc1tkXT1lW2RdKTtyZXR1cm4gc31yZXR1cm4gc31mdW5jdGlvbiBHYiQxKGUscyxkLG0saCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQpaWYoZC5wcm90b3R5cGUmJmQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpe2g9WmEkMShkLHMubGVnYWN5Q29udGV4dCk7dmFyIGc9ZC5jb250ZXh0VHlwZTtlYiQxKGc9bmV3IGQobSwib2JqZWN0Ij09dHlwZW9mIGcmJm51bGwhPT1nP2cuX2N1cnJlbnRWYWx1ZTI6aCksZCxtLGgpLEViJDEoZSxzLGcsZCl9ZWxzZXtoPURiJDEoZSxzLGQsbSxnPVphJDEoZCxzLmxlZ2FjeUNvbnRleHQpKTt2YXIgeD0wIT09b207aWYoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aCYmImZ1bmN0aW9uIj09dHlwZW9mIGgucmVuZGVyJiZ2b2lkIDA9PT1oLiQkdHlwZW9mKWViJDEoaCxkLG0sZyksRWIkMShlLHMsaCxkKTtlbHNlIGlmKHgpe209cy50cmVlQ29udGV4dCxzLnRyZWVDb250ZXh0PWdiJDEobSwxLDApO3RyeXtYJDEoZSxzLGgpfWZpbmFsbHl7cy50cmVlQ29udGV4dD1tfX1lbHNlIFgkMShlLHMsaCl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGQpe3N3aXRjaChkKXtjYXNlIEJwOmNhc2UgRnA6Y2FzZSBScDpjYXNlIEVwOmNhc2UgVHA6Y2FzZSBVcDpyZXR1cm4gdm9pZCBYJDEoZSxzLG0uY2hpbGRyZW4pO2Nhc2UgcXA6dGhyb3cgRXJyb3IobCQyKDM0MykpO2Nhc2UgRHA6ZTp7ZD1zLmJsb2NrZWRCb3VuZGFyeSxoPXMuYmxvY2tlZFNlZ21lbnQsZz1tLmZhbGxiYWNrLG09bS5jaGlsZHJlbjt2YXIgJD17aWQ6bnVsbCxyb290U2VnbWVudElEOi0xLHBhcmVudEZsdXNoZWQ6ITEscGVuZGluZ1Rhc2tzOjAsZm9yY2VDbGllbnRSZW5kZXI6ITEsY29tcGxldGVkU2VnbWVudHM6W10sYnl0ZVNpemU6MCxmYWxsYmFja0Fib3J0YWJsZVRhc2tzOng9bmV3IFNldCxlcnJvckRpZ2VzdDpudWxsfSxTPVUkMSgwLGguY2h1bmtzLmxlbmd0aCwkLGguZm9ybWF0Q29udGV4dCwhMSwhMSk7aC5jaGlsZHJlbi5wdXNoKFMpLGgubGFzdFB1c2hlZFRleHQ9ITE7dmFyIGo9VSQxKDAsMCxudWxsLGguZm9ybWF0Q29udGV4dCwhMSwhMSk7ai5wYXJlbnRGbHVzaGVkPSEwLHMuYmxvY2tlZEJvdW5kYXJ5PSQscy5ibG9ja2VkU2VnbWVudD1qO3RyeXtpZihIYiQxKGUscyxtKSxlLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fGoubGFzdFB1c2hlZFRleHQmJmoudGV4dEVtYmVkZGVkJiZqLmNodW5rcy5wdXNoKCJceDNjIS0tIC0tXHgzZSIpLGouc3RhdHVzPTEsWSQxKCQsaiksMD09PSQucGVuZGluZ1Rhc2tzKWJyZWFrIGV9Y2F0Y2gocyl7ai5zdGF0dXM9NCwkLmZvcmNlQ2xpZW50UmVuZGVyPSEwLCQuZXJyb3JEaWdlc3Q9ViQxKGUscyl9ZmluYWxseXtzLmJsb2NrZWRCb3VuZGFyeT1kLHMuYmxvY2tlZFNlZ21lbnQ9aH1zPUJiJDEoZSxnLGQsUyx4LHMubGVnYWN5Q29udGV4dCxzLmNvbnRleHQscy50cmVlQ29udGV4dCksZS5waW5nZWRUYXNrcy5wdXNoKHMpfXJldHVybn1pZigib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPT1kKXN3aXRjaChkLiQkdHlwZW9mKXtjYXNlIE5wOmlmKG09RGIkMShlLHMsZC5yZW5kZXIsbSxoKSwwIT09b20pe2Q9cy50cmVlQ29udGV4dCxzLnRyZWVDb250ZXh0PWdiJDEoZCwxLDApO3RyeXtYJDEoZSxzLG0pfWZpbmFsbHl7cy50cmVlQ29udGV4dD1kfX1lbHNlIFgkMShlLHMsbSk7cmV0dXJuO2Nhc2UgTHA6cmV0dXJuIHZvaWQgR2IkMShlLHMsZD1kLnR5cGUsbT1GYihkLG0pLGgpO2Nhc2UgT3A6aWYoaD1tLmNoaWxkcmVuLGQ9ZC5fY29udGV4dCxtPW0udmFsdWUsZz1kLl9jdXJyZW50VmFsdWUyLGQuX2N1cnJlbnRWYWx1ZTI9bSxWcD1tPXtwYXJlbnQ6eD1WcCxkZXB0aDpudWxsPT09eD8wOnguZGVwdGgrMSxjb250ZXh0OmQscGFyZW50VmFsdWU6Zyx2YWx1ZTptfSxzLmNvbnRleHQ9bSxYJDEoZSxzLGgpLG51bGw9PT0oZT1WcCkpdGhyb3cgRXJyb3IobCQyKDQwMykpO3JldHVybiBtPWUucGFyZW50VmFsdWUsZS5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPW09PT1acD9lLmNvbnRleHQuX2RlZmF1bHRWYWx1ZTptLGU9VnA9ZS5wYXJlbnQsdm9pZChzLmNvbnRleHQ9ZSk7Y2FzZSBQcDpyZXR1cm4gdm9pZCBYJDEoZSxzLG09KG09bS5jaGlsZHJlbikoZC5fY3VycmVudFZhbHVlMikpO2Nhc2UgQXA6cmV0dXJuIHZvaWQgR2IkMShlLHMsZD0oaD1kLl9pbml0KShkLl9wYXlsb2FkKSxtPUZiKGQsbSksdm9pZCAwKX10aHJvdyBFcnJvcihsJDIoMTMwLG51bGw9PWQ/ZDp0eXBlb2YgZCwiIikpfXN3aXRjaChnPXlhJDEoKGg9cy5ibG9ja2VkU2VnbWVudCkuY2h1bmtzLGQsbSxlLnJlc3BvbnNlU3RhdGUsaC5mb3JtYXRDb250ZXh0KSxoLmxhc3RQdXNoZWRUZXh0PSExLHg9aC5mb3JtYXRDb250ZXh0LGguZm9ybWF0Q29udGV4dD1mdW5jdGlvbihlLHMsZCl7c3dpdGNoKHMpe2Nhc2Uic2VsZWN0IjpyZXR1cm4gdyQxKDEsbnVsbCE9ZC52YWx1ZT9kLnZhbHVlOmQuZGVmYXVsdFZhbHVlKTtjYXNlInN2ZyI6cmV0dXJuIHckMSgyLG51bGwpO2Nhc2UibWF0aCI6cmV0dXJuIHckMSgzLG51bGwpO2Nhc2UiZm9yZWlnbk9iamVjdCI6cmV0dXJuIHckMSgxLG51bGwpO2Nhc2UidGFibGUiOnJldHVybiB3JDEoNCxudWxsKTtjYXNlInRoZWFkIjpjYXNlInRib2R5IjpjYXNlInRmb290IjpyZXR1cm4gdyQxKDUsbnVsbCk7Y2FzZSJjb2xncm91cCI6cmV0dXJuIHckMSg3LG51bGwpO2Nhc2UidHIiOnJldHVybiB3JDEoNixudWxsKX1yZXR1cm4gNDw9ZS5pbnNlcnRpb25Nb2RlfHwwPT09ZS5pbnNlcnRpb25Nb2RlP3ckMSgxLG51bGwpOmV9KHgsZCxtKSxIYiQxKGUscyxnKSxoLmZvcm1hdENvbnRleHQ9eCxkKXtjYXNlImFyZWEiOmNhc2UiYmFzZSI6Y2FzZSJiciI6Y2FzZSJjb2wiOmNhc2UiZW1iZWQiOmNhc2UiaHIiOmNhc2UiaW1nIjpjYXNlImlucHV0IjpjYXNlImtleWdlbiI6Y2FzZSJsaW5rIjpjYXNlIm1ldGEiOmNhc2UicGFyYW0iOmNhc2Uic291cmNlIjpjYXNlInRyYWNrIjpjYXNlIndiciI6YnJlYWs7ZGVmYXVsdDpoLmNodW5rcy5wdXNoKCI8LyIsZCwiPiIpfWgubGFzdFB1c2hlZFRleHQ9ITF9fWZ1bmN0aW9uIFgkMShlLHMsZCl7aWYocy5ub2RlPWQsIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgSXA6cmV0dXJuIHZvaWQgR2IkMShlLHMsZC50eXBlLGQucHJvcHMsZC5yZWYpO2Nhc2UgQ3A6dGhyb3cgRXJyb3IobCQyKDI1NykpO2Nhc2UgQXA6dmFyIG09ZC5faW5pdDtyZXR1cm4gdm9pZCBYJDEoZSxzLGQ9bShkLl9wYXlsb2FkKSl9aWYod3AoZCkpcmV0dXJuIHZvaWQgSWIkMShlLHMsZCk7aWYobnVsbD09PWR8fCJvYmplY3QiIT10eXBlb2YgZD9tPW51bGw6bT0iZnVuY3Rpb24iPT10eXBlb2YobT1NcCYmZFtNcF18fGRbIkBAaXRlcmF0b3IiXSk/bTpudWxsLG0mJihtPW0uY2FsbChkKSkpe2lmKCEoZD1tLm5leHQoKSkuZG9uZSl7dmFyIGg9W107ZG97aC5wdXNoKGQudmFsdWUpLGQ9bS5uZXh0KCl9d2hpbGUoIWQuZG9uZSk7SWIkMShlLHMsaCl9cmV0dXJufXRocm93IGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLEVycm9yKGwkMigzMSwiW29iamVjdCBPYmplY3RdIj09PWU/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZCkuam9pbigiLCAiKSsifSI6ZSkpfSJzdHJpbmciPT10eXBlb2YgZD8obT1zLmJsb2NrZWRTZWdtZW50KS5sYXN0UHVzaGVkVGV4dD1GYSQxKHMuYmxvY2tlZFNlZ21lbnQuY2h1bmtzLGQsZS5yZXNwb25zZVN0YXRlLG0ubGFzdFB1c2hlZFRleHQpOiJudW1iZXIiPT10eXBlb2YgZCYmKChtPXMuYmxvY2tlZFNlZ21lbnQpLmxhc3RQdXNoZWRUZXh0PUZhJDEocy5ibG9ja2VkU2VnbWVudC5jaHVua3MsIiIrZCxlLnJlc3BvbnNlU3RhdGUsbS5sYXN0UHVzaGVkVGV4dCkpfWZ1bmN0aW9uIEliJDEoZSxzLGQpe2Zvcih2YXIgbT1kLmxlbmd0aCxoPTA7aDxtO2grKyl7dmFyIGc9cy50cmVlQ29udGV4dDtzLnRyZWVDb250ZXh0PWdiJDEoZyxtLGgpO3RyeXtIYiQxKGUscyxkW2hdKX1maW5hbGx5e3MudHJlZUNvbnRleHQ9Z319fWZ1bmN0aW9uIEhiJDEoZSxzLGQpe3ZhciBtPXMuYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dCxoPXMubGVnYWN5Q29udGV4dCxnPXMuY29udGV4dDt0cnl7cmV0dXJuIFgkMShlLHMsZCl9Y2F0Y2goUyl7aWYocmIkMSgpLCJvYmplY3QiIT10eXBlb2YgU3x8bnVsbD09PVN8fCJmdW5jdGlvbiIhPXR5cGVvZiBTLnRoZW4pdGhyb3cgcy5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0PW0scy5sZWdhY3lDb250ZXh0PWgscy5jb250ZXh0PWcsRyhnKSxTO2Q9Uzt2YXIgeD1zLmJsb2NrZWRTZWdtZW50LCQ9VSQxKDAseC5jaHVua3MubGVuZ3RoLG51bGwseC5mb3JtYXRDb250ZXh0LHgubGFzdFB1c2hlZFRleHQsITApO3guY2hpbGRyZW4ucHVzaCgkKSx4Lmxhc3RQdXNoZWRUZXh0PSExLGU9QmIkMShlLHMubm9kZSxzLmJsb2NrZWRCb3VuZGFyeSwkLHMuYWJvcnRTZXQscy5sZWdhY3lDb250ZXh0LHMuY29udGV4dCxzLnRyZWVDb250ZXh0KS5waW5nLGQudGhlbihlLGUpLHMuYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dD1tLHMubGVnYWN5Q29udGV4dD1oLHMuY29udGV4dD1nLEcoZyl9fWZ1bmN0aW9uIEpiJDEoZSl7dmFyIHM9ZS5ibG9ja2VkQm91bmRhcnk7KGU9ZS5ibG9ja2VkU2VnbWVudCkuc3RhdHVzPTMsS2IkMSh0aGlzLHMsZSl9ZnVuY3Rpb24gTGIkMShlLHMsZCl7dmFyIG09ZS5ibG9ja2VkQm91bmRhcnk7ZS5ibG9ja2VkU2VnbWVudC5zdGF0dXM9MyxudWxsPT09bT8ocy5hbGxQZW5kaW5nVGFza3MtLSwyIT09cy5zdGF0dXMmJihzLnN0YXR1cz0yLG51bGwhPT1zLmRlc3RpbmF0aW9uJiZzLmRlc3RpbmF0aW9uLnB1c2gobnVsbCkpKToobS5wZW5kaW5nVGFza3MtLSxtLmZvcmNlQ2xpZW50UmVuZGVyfHwobS5mb3JjZUNsaWVudFJlbmRlcj0hMCxlPXZvaWQgMD09PWQ/RXJyb3IobCQyKDQzMikpOmQsbS5lcnJvckRpZ2VzdD1zLm9uRXJyb3IoZSksbS5wYXJlbnRGbHVzaGVkJiZzLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKG0pKSxtLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gTGIkMShlLHMsZCl9KSxtLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuY2xlYXIoKSxzLmFsbFBlbmRpbmdUYXNrcy0tLDA9PT1zLmFsbFBlbmRpbmdUYXNrcyYmKG09cy5vbkFsbFJlYWR5KSgpKX1mdW5jdGlvbiBZJDEoZSxzKXtpZigwPT09cy5jaHVua3MubGVuZ3RoJiYxPT09cy5jaGlsZHJlbi5sZW5ndGgmJm51bGw9PT1zLmNoaWxkcmVuWzBdLmJvdW5kYXJ5KXt2YXIgZD1zLmNoaWxkcmVuWzBdO2QuaWQ9cy5pZCxkLnBhcmVudEZsdXNoZWQ9ITAsMT09PWQuc3RhdHVzJiZZJDEoZSxkKX1lbHNlIGUuY29tcGxldGVkU2VnbWVudHMucHVzaChzKX1mdW5jdGlvbiBLYiQxKGUscyxkKXtpZihudWxsPT09cyl7aWYoZC5wYXJlbnRGbHVzaGVkKXtpZihudWxsIT09ZS5jb21wbGV0ZWRSb290U2VnbWVudCl0aHJvdyBFcnJvcihsJDIoMzg5KSk7ZS5jb21wbGV0ZWRSb290U2VnbWVudD1kfWUucGVuZGluZ1Jvb3RUYXNrcy0tLDA9PT1lLnBlbmRpbmdSb290VGFza3MmJihlLm9uU2hlbGxFcnJvcj1UJDEsKHM9ZS5vblNoZWxsUmVhZHkpKCkpfWVsc2Ugcy5wZW5kaW5nVGFza3MtLSxzLmZvcmNlQ2xpZW50UmVuZGVyfHwoMD09PXMucGVuZGluZ1Rhc2tzPyhkLnBhcmVudEZsdXNoZWQmJjE9PT1kLnN0YXR1cyYmWSQxKHMsZCkscy5wYXJlbnRGbHVzaGVkJiZlLmNvbXBsZXRlZEJvdW5kYXJpZXMucHVzaChzKSxzLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuZm9yRWFjaChKYiQxLGUpLHMuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpKTpkLnBhcmVudEZsdXNoZWQmJjE9PT1kLnN0YXR1cyYmKFkkMShzLGQpLDE9PT1zLmNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aCYmcy5wYXJlbnRGbHVzaGVkJiZlLnBhcnRpYWxCb3VuZGFyaWVzLnB1c2gocykpKTtlLmFsbFBlbmRpbmdUYXNrcy0tLDA9PT1lLmFsbFBlbmRpbmdUYXNrcyYmKGU9ZS5vbkFsbFJlYWR5KSgpfWZ1bmN0aW9uIENiJDEoZSl7aWYoMiE9PWUuc3RhdHVzKXt2YXIgcz1WcCxkPXVtLmN1cnJlbnQ7dW0uY3VycmVudD1sbTt2YXIgbT1jbTtjbT1lLnJlc3BvbnNlU3RhdGU7dHJ5e3ZhciBoLGc9ZS5waW5nZWRUYXNrcztmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgeD1nW2hdLCQ9ZSxTPXguYmxvY2tlZFNlZ21lbnQ7aWYoMD09PVMuc3RhdHVzKXtHKHguY29udGV4dCk7dHJ5e1gkMSgkLHgseC5ub2RlKSwkLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fFMubGFzdFB1c2hlZFRleHQmJlMudGV4dEVtYmVkZGVkJiZTLmNodW5rcy5wdXNoKCJceDNjIS0tIC0tXHgzZSIpLHguYWJvcnRTZXQuZGVsZXRlKHgpLFMuc3RhdHVzPTEsS2IkMSgkLHguYmxvY2tlZEJvdW5kYXJ5LFMpfWNhdGNoKGUpe2lmKHJiJDEoKSwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuKXt2YXIgaj14LnBpbmc7ZS50aGVuKGosail9ZWxzZXt4LmFib3J0U2V0LmRlbGV0ZSh4KSxTLnN0YXR1cz00O3ZhciB6PXguYmxvY2tlZEJvdW5kYXJ5LEk9ZSxUPVYkMSgkLEkpO2lmKG51bGw9PT16P1ckMSgkLEkpOih6LnBlbmRpbmdUYXNrcy0tLHouZm9yY2VDbGllbnRSZW5kZXJ8fCh6LmZvcmNlQ2xpZW50UmVuZGVyPSEwLHouZXJyb3JEaWdlc3Q9VCx6LnBhcmVudEZsdXNoZWQmJiQuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnB1c2goeikpKSwkLmFsbFBlbmRpbmdUYXNrcy0tLDA9PT0kLmFsbFBlbmRpbmdUYXNrcykoMCwkLm9uQWxsUmVhZHkpKCl9fX19Zy5zcGxpY2UoMCxoKSxudWxsIT09ZS5kZXN0aW5hdGlvbiYmTWIkMShlLGUuZGVzdGluYXRpb24pfWNhdGNoKHMpe1YkMShlLHMpLFckMShlLHMpfWZpbmFsbHl7Y209bSx1bS5jdXJyZW50PWQsZD09PWxtJiZHKHMpfX19ZnVuY3Rpb24gWiQxKGUscyxkKXtzd2l0Y2goZC5wYXJlbnRGbHVzaGVkPSEwLGQuc3RhdHVzKXtjYXNlIDA6dmFyIG09ZC5pZD1lLm5leHRTZWdtZW50SWQrKztyZXR1cm4gZC5sYXN0UHVzaGVkVGV4dD0hMSxkLnRleHRFbWJlZGRlZD0hMSxlPWUucmVzcG9uc2VTdGF0ZSxzLnB1c2goJzx0ZW1wbGF0ZSBpZD0iJykscy5wdXNoKGUucGxhY2Vob2xkZXJQcmVmaXgpLGU9bS50b1N0cmluZygxNikscy5wdXNoKGUpLHMucHVzaCgnIj48L3RlbXBsYXRlPicpO2Nhc2UgMTpkLnN0YXR1cz0yO3ZhciBoPSEwO209ZC5jaHVua3M7dmFyIGc9MDtkPWQuY2hpbGRyZW47Zm9yKHZhciB4PTA7eDxkLmxlbmd0aDt4Kyspe2ZvcihoPWRbeF07ZzxoLmluZGV4O2crKylzLnB1c2gobVtnXSk7aD1OYiQxKGUscyxoKX1mb3IoO2c8bS5sZW5ndGgtMTtnKyspcy5wdXNoKG1bZ10pO3JldHVybiBnPG0ubGVuZ3RoJiYoaD1zLnB1c2gobVtnXSkpLGg7ZGVmYXVsdDp0aHJvdyBFcnJvcihsJDIoMzkwKSl9fWZ1bmN0aW9uIE5iJDEoZSxzLGQpe3ZhciBtPWQuYm91bmRhcnk7aWYobnVsbD09PW0pcmV0dXJuIFokMShlLHMsZCk7aWYobS5wYXJlbnRGbHVzaGVkPSEwLG0uZm9yY2VDbGllbnRSZW5kZXIpcmV0dXJuIGUucmVzcG9uc2VTdGF0ZS5nZW5lcmF0ZVN0YXRpY01hcmt1cHx8KG09bS5lcnJvckRpZ2VzdCxzLnB1c2goIlx4M2MhLS0kIS0tXHgzZSIpLHMucHVzaCgiPHRlbXBsYXRlIiksbSYmKHMucHVzaCgnIGRhdGEtZGdzdD0iJyksbT12KG0pLHMucHVzaChtKSxzLnB1c2goJyInKSkscy5wdXNoKCI+PC90ZW1wbGF0ZT4iKSksWiQxKGUscyxkKSxlPSEhZS5yZXNwb25zZVN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwfHxzLnB1c2goIlx4M2MhLS0vJC0tXHgzZSIpO2lmKDA8bS5wZW5kaW5nVGFza3Mpe20ucm9vdFNlZ21lbnRJRD1lLm5leHRTZWdtZW50SWQrKywwPG0uY29tcGxldGVkU2VnbWVudHMubGVuZ3RoJiZlLnBhcnRpYWxCb3VuZGFyaWVzLnB1c2gobSk7dmFyIGg9ZS5yZXNwb25zZVN0YXRlLGc9aC5uZXh0U3VzcGVuc2VJRCsrO3JldHVybiBoPWguYm91bmRhcnlQcmVmaXgrZy50b1N0cmluZygxNiksbT1tLmlkPWgsemEkMShzLGUucmVzcG9uc2VTdGF0ZSxtKSxaJDEoZSxzLGQpLHMucHVzaCgiXHgzYyEtLS8kLS1ceDNlIil9aWYobS5ieXRlU2l6ZT5lLnByb2dyZXNzaXZlQ2h1bmtTaXplKXJldHVybiBtLnJvb3RTZWdtZW50SUQ9ZS5uZXh0U2VnbWVudElkKyssZS5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2gobSksemEkMShzLGUucmVzcG9uc2VTdGF0ZSxtLmlkKSxaJDEoZSxzLGQpLHMucHVzaCgiXHgzYyEtLS8kLS1ceDNlIik7aWYoZS5yZXNwb25zZVN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwfHxzLnB1c2goIlx4M2MhLS0kLS1ceDNlIiksMSE9PShkPW0uY29tcGxldGVkU2VnbWVudHMpLmxlbmd0aCl0aHJvdyBFcnJvcihsJDIoMzkxKSk7cmV0dXJuIE5iJDEoZSxzLGRbMF0pLGU9ISFlLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fHMucHVzaCgiXHgzYyEtLS8kLS1ceDNlIil9ZnVuY3Rpb24gT2IkMShlLHMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUscyxkLG0pe3N3aXRjaChkLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIGUucHVzaCgnPGRpdiBoaWRkZW4gaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDI6cmV0dXJuIGUucHVzaCgnPHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDM6cmV0dXJuIGUucHVzaCgnPG1hdGggYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGlkPSInKSxlLnB1c2gocy5zZWdtZW50UHJlZml4KSxzPW0udG9TdHJpbmcoMTYpLGUucHVzaChzKSxlLnB1c2goJyI+Jyk7Y2FzZSA0OnJldHVybiBlLnB1c2goJzx0YWJsZSBoaWRkZW4gaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDU6cmV0dXJuIGUucHVzaCgnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDY6cmV0dXJuIGUucHVzaCgnPHRhYmxlIGhpZGRlbj48dHIgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDc6cmV0dXJuIGUucHVzaCgnPHRhYmxlIGhpZGRlbj48Y29sZ3JvdXAgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtkZWZhdWx0OnRocm93IEVycm9yKGwkMigzOTcpKX19KHMsZS5yZXNwb25zZVN0YXRlLGQuZm9ybWF0Q29udGV4dCxkLmlkKSxOYiQxKGUscyxkKSxmdW5jdGlvbihlLHMpe3N3aXRjaChzLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIGUucHVzaCgiPC9kaXY+Iik7Y2FzZSAyOnJldHVybiBlLnB1c2goIjwvc3ZnPiIpO2Nhc2UgMzpyZXR1cm4gZS5wdXNoKCI8L21hdGg+Iik7Y2FzZSA0OnJldHVybiBlLnB1c2goIjwvdGFibGU+Iik7Y2FzZSA1OnJldHVybiBlLnB1c2goIjwvdGJvZHk+PC90YWJsZT4iKTtjYXNlIDY6cmV0dXJuIGUucHVzaCgiPC90cj48L3RhYmxlPiIpO2Nhc2UgNzpyZXR1cm4gZS5wdXNoKCI8L2NvbGdyb3VwPjwvdGFibGU+Iik7ZGVmYXVsdDp0aHJvdyBFcnJvcihsJDIoMzk3KSl9fShzLGQuZm9ybWF0Q29udGV4dCl9ZnVuY3Rpb24gUGIkMShlLHMsZCl7Zm9yKHZhciBtPWQuY29tcGxldGVkU2VnbWVudHMsaD0wO2g8bS5sZW5ndGg7aCsrKVFiJDEoZSxzLGQsbVtoXSk7aWYobS5sZW5ndGg9MCxlPWUucmVzcG9uc2VTdGF0ZSxtPWQuaWQsZD1kLnJvb3RTZWdtZW50SUQscy5wdXNoKGUuc3RhcnRJbmxpbmVTY3JpcHQpLGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj9zLnB1c2goJyRSQygiJyk6KGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj0hMCxzLnB1c2goJ2Z1bmN0aW9uICRSQyhhLGIpe2E9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYik7aWYoYSl7YT1hLnByZXZpb3VzU2libGluZzt2YXIgZj1hLnBhcmVudE5vZGUsYz1hLm5leHRTaWJsaW5nLGU9MDtkb3tpZihjJiY4PT09Yy5ub2RlVHlwZSl7dmFyIGQ9Yy5kYXRhO2lmKCIvJCI9PT1kKWlmKDA9PT1lKWJyZWFrO2Vsc2UgZS0tO2Vsc2UiJCIhPT1kJiYiJD8iIT09ZCYmIiQhIiE9PWR8fGUrK31kPWMubmV4dFNpYmxpbmc7Zi5yZW1vdmVDaGlsZChjKTtjPWR9d2hpbGUoYyk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWYuaW5zZXJ0QmVmb3JlKGIuZmlyc3RDaGlsZCxjKTthLmRhdGE9IiQiO2EuX3JlYWN0UmV0cnkmJmEuX3JlYWN0UmV0cnkoKX19OyRSQygiJykpLG51bGw9PT1tKXRocm93IEVycm9yKGwkMigzOTUpKTtyZXR1cm4gZD1kLnRvU3RyaW5nKDE2KSxzLnB1c2gobSkscy5wdXNoKCciLCInKSxzLnB1c2goZS5zZWdtZW50UHJlZml4KSxzLnB1c2goZCkscy5wdXNoKCciKTxcL3NjcmlwdD4nKX1mdW5jdGlvbiBRYiQxKGUscyxkLG0pe2lmKDI9PT1tLnN0YXR1cylyZXR1cm4hMDt2YXIgaD1tLmlkO2lmKC0xPT09aCl7aWYoLTE9PT0obS5pZD1kLnJvb3RTZWdtZW50SUQpKXRocm93IEVycm9yKGwkMigzOTIpKTtyZXR1cm4gT2IkMShlLHMsbSl9cmV0dXJuIE9iJDEoZSxzLG0pLGU9ZS5yZXNwb25zZVN0YXRlLHMucHVzaChlLnN0YXJ0SW5saW5lU2NyaXB0KSxlLnNlbnRDb21wbGV0ZVNlZ21lbnRGdW5jdGlvbj9zLnB1c2goJyRSUygiJyk6KGUuc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uPSEwLHMucHVzaCgnZnVuY3Rpb24gJFJTKGEsYil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2ZvcihhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk7YS5maXJzdENoaWxkOyliLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEuZmlyc3RDaGlsZCxiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9OyRSUygiJykpLHMucHVzaChlLnNlZ21lbnRQcmVmaXgpLGg9aC50b1N0cmluZygxNikscy5wdXNoKGgpLHMucHVzaCgnIiwiJykscy5wdXNoKGUucGxhY2Vob2xkZXJQcmVmaXgpLHMucHVzaChoKSxzLnB1c2goJyIpPFwvc2NyaXB0PicpfWZ1bmN0aW9uIE1iJDEoZSxzKXt0cnl7dmFyIGQ9ZS5jb21wbGV0ZWRSb290U2VnbWVudDtpZihudWxsIT09ZCYmMD09PWUucGVuZGluZ1Jvb3RUYXNrcyl7TmIkMShlLHMsZCksZS5jb21wbGV0ZWRSb290U2VnbWVudD1udWxsO3ZhciBtPWUucmVzcG9uc2VTdGF0ZS5ib290c3RyYXBDaHVua3M7Zm9yKGQ9MDtkPG0ubGVuZ3RoLTE7ZCsrKXMucHVzaChtW2RdKTtkPG0ubGVuZ3RoJiZzLnB1c2gobVtkXSl9dmFyIGgsZz1lLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcztmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgeD1nW2hdO209czt2YXIgJD1lLnJlc3BvbnNlU3RhdGUsUz14LmlkLGo9eC5lcnJvckRpZ2VzdCx6PXguZXJyb3JNZXNzYWdlLEk9eC5lcnJvckNvbXBvbmVudFN0YWNrO2lmKG0ucHVzaCgkLnN0YXJ0SW5saW5lU2NyaXB0KSwkLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj9tLnB1c2goJyRSWCgiJyk6KCQuc2VudENsaWVudFJlbmRlckZ1bmN0aW9uPSEwLG0ucHVzaCgnZnVuY3Rpb24gJFJYKGIsYyxkLGUpe3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2EmJihiPWEucHJldmlvdXNTaWJsaW5nLGIuZGF0YT0iJCEiLGE9YS5kYXRhc2V0LGMmJihhLmRnc3Q9YyksZCYmKGEubXNnPWQpLGUmJihhLnN0Y2s9ZSksYi5fcmVhY3RSZXRyeSYmYi5fcmVhY3RSZXRyeSgpKX07JFJYKCInKSksbnVsbD09PVMpdGhyb3cgRXJyb3IobCQyKDM5NSkpO2lmKG0ucHVzaChTKSxtLnB1c2goJyInKSxqfHx6fHxJKXttLnB1c2goIiwiKTt2YXIgVD1EYSQxKGp8fCIiKTttLnB1c2goVCl9aWYoenx8SSl7bS5wdXNoKCIsIik7dmFyIFI9RGEkMSh6fHwiIik7bS5wdXNoKFIpfWlmKEkpe20ucHVzaCgiLCIpO3ZhciBFPURhJDEoSSk7bS5wdXNoKEUpfWlmKCFtLnB1c2goIik8XC9zY3JpcHQ+IikpcmV0dXJuIGUuZGVzdGluYXRpb249bnVsbCxoKyssdm9pZCBnLnNwbGljZSgwLGgpfWcuc3BsaWNlKDAsaCk7dmFyIE89ZS5jb21wbGV0ZWRCb3VuZGFyaWVzO2ZvcihoPTA7aDxPLmxlbmd0aDtoKyspaWYoIVBiJDEoZSxzLE9baF0pKXJldHVybiBlLmRlc3RpbmF0aW9uPW51bGwsaCsrLHZvaWQgTy5zcGxpY2UoMCxoKTtPLnNwbGljZSgwLGgpO3ZhciBOPWUucGFydGlhbEJvdW5kYXJpZXM7Zm9yKGg9MDtoPE4ubGVuZ3RoO2grKyl7dmFyIFU9TltoXTtlOntnPWUseD1zO3ZhciBCPVUuY29tcGxldGVkU2VnbWVudHM7Zm9yKCQ9MDskPEIubGVuZ3RoOyQrKylpZighUWIkMShnLHgsVSxCWyRdKSl7JCsrLEIuc3BsaWNlKDAsJCk7dmFyIFY9ITE7YnJlYWsgZX1CLnNwbGljZSgwLCQpLFY9ITB9aWYoIVYpcmV0dXJuIGUuZGVzdGluYXRpb249bnVsbCxoKyssdm9pZCBOLnNwbGljZSgwLGgpfU4uc3BsaWNlKDAsaCk7dmFyIEg9ZS5jb21wbGV0ZWRCb3VuZGFyaWVzO2ZvcihoPTA7aDxILmxlbmd0aDtoKyspaWYoIVBiJDEoZSxzLEhbaF0pKXJldHVybiBlLmRlc3RpbmF0aW9uPW51bGwsaCsrLHZvaWQgSC5zcGxpY2UoMCxoKTtILnNwbGljZSgwLGgpfWZpbmFsbHl7MD09PWUuYWxsUGVuZGluZ1Rhc2tzJiYwPT09ZS5waW5nZWRUYXNrcy5sZW5ndGgmJjA9PT1lLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5sZW5ndGgmJjA9PT1lLmNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoJiZzLnB1c2gobnVsbCl9fWZ1bmN0aW9uIFJiJDEoZSxzKXt0cnl7dmFyIGQ9ZS5hYm9ydGFibGVUYXNrcztkLmZvckVhY2goZnVuY3Rpb24oZCl7cmV0dXJuIExiJDEoZCxlLHMpfSksZC5jbGVhcigpLG51bGwhPT1lLmRlc3RpbmF0aW9uJiZNYiQxKGUsZS5kZXN0aW5hdGlvbil9Y2F0Y2gocyl7ViQxKGUscyksVyQxKGUscyl9fWZ1bmN0aW9uIFNiJDEoKXt9ZnVuY3Rpb24gVGIkMShlLHMsZCxtKXt2YXIgaD0hMSxnPW51bGwseD0iIiwkPXtwdXNoOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmKHgrPWUpLCEwfSxkZXN0cm95OmZ1bmN0aW9uKGUpe2g9ITAsZz1lfX0sUz0hMTtpZihlPWZ1bmN0aW9uKGUscyxkLG0saCxnLHgpe3ZhciAkPVtdLFM9bmV3IFNldDtyZXR1cm4oZD1VJDEocz17ZGVzdGluYXRpb246bnVsbCxyZXNwb25zZVN0YXRlOnMscHJvZ3Jlc3NpdmVDaHVua1NpemU6dm9pZCAwPT09bT8xMjgwMDptLHN0YXR1czowLGZhdGFsRXJyb3I6bnVsbCxuZXh0U2VnbWVudElkOjAsYWxsUGVuZGluZ1Rhc2tzOjAscGVuZGluZ1Jvb3RUYXNrczowLGNvbXBsZXRlZFJvb3RTZWdtZW50Om51bGwsYWJvcnRhYmxlVGFza3M6UyxwaW5nZWRUYXNrczokLGNsaWVudFJlbmRlcmVkQm91bmRhcmllczpbXSxjb21wbGV0ZWRCb3VuZGFyaWVzOltdLHBhcnRpYWxCb3VuZGFyaWVzOltdLG9uRXJyb3I6dm9pZCAwPT09aD96YiQxOmgsb25BbGxSZWFkeTpUJDEsb25TaGVsbFJlYWR5OnZvaWQgMD09PXg/VCQxOngsb25TaGVsbEVycm9yOlQkMSxvbkZhdGFsRXJyb3I6VCQxfSwwLG51bGwsZCwhMSwhMSkpLnBhcmVudEZsdXNoZWQ9ITAsZT1CYiQxKHMsZSxudWxsLGQsUyxRcCxudWxsLFdwKSwkLnB1c2goZSksc30oZSxmdW5jdGlvbihlLHMpe3JldHVybntib290c3RyYXBDaHVua3M6W10sc3RhcnRJbmxpbmVTY3JpcHQ6IjxzY3JpcHQ+IixwbGFjZWhvbGRlclByZWZpeDoocz12b2lkIDA9PT1zPyIiOnMpKyJQOiIsc2VnbWVudFByZWZpeDpzKyJTOiIsYm91bmRhcnlQcmVmaXg6cysiQjoiLGlkUHJlZml4OnMsbmV4dFN1c3BlbnNlSUQ6MCxzZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb246ITEsc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbjohMSxzZW50Q2xpZW50UmVuZGVyRnVuY3Rpb246ITEsZ2VuZXJhdGVTdGF0aWNNYXJrdXA6ZX19KGQscz9zLmlkZW50aWZpZXJQcmVmaXg6dm9pZCAwKSx7aW5zZXJ0aW9uTW9kZToxLHNlbGVjdGVkVmFsdWU6bnVsbH0sMS8wLFNiJDEsMCxmdW5jdGlvbigpe1M9ITB9KSxDYiQxKGUpLFJiJDEoZSxtKSwxPT09ZS5zdGF0dXMpZS5zdGF0dXM9MiwkLmRlc3Ryb3koZS5mYXRhbEVycm9yKTtlbHNlIGlmKDIhPT1lLnN0YXR1cyYmbnVsbD09PWUuZGVzdGluYXRpb24pe2UuZGVzdGluYXRpb249JDt0cnl7TWIkMShlLCQpfWNhdGNoKHMpe1YkMShlLHMpLFckMShlLHMpfX1pZihoKXRocm93IGc7aWYoIVMpdGhyb3cgRXJyb3IobCQyKDQyNikpO3JldHVybiB4fURkLnJlbmRlclRvTm9kZVN0cmVhbT1mdW5jdGlvbigpe3Rocm93IEVycm9yKGwkMigyMDcpKX0sRGQucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZnVuY3Rpb24oZSxzKXtyZXR1cm4gVGIkMShlLHMsITAsJ1RoZSBzZXJ2ZXIgdXNlZCAicmVuZGVyVG9TdGF0aWNNYXJrdXAiIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgU3VzcGVuc2UuIElmIHlvdSBpbnRlbmRlZCB0byBoYXZlIHRoZSBzZXJ2ZXIgd2FpdCBmb3IgdGhlIHN1c3BlbmRlZCBjb21wb25lbnQgcGxlYXNlIHN3aXRjaCB0byAicmVuZGVyVG9SZWFkYWJsZVN0cmVhbSIgd2hpY2ggc3VwcG9ydHMgU3VzcGVuc2Ugb24gdGhlIHNlcnZlcicpfSxEZC5yZW5kZXJUb1N0YXRpY05vZGVTdHJlYW09ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihsJDIoMjA4KSl9LERkLnJlbmRlclRvU3RyaW5nPWZ1bmN0aW9uKGUscyl7cmV0dXJuIFRiJDEoZSxzLCExLCdUaGUgc2VydmVyIHVzZWQgInJlbmRlclRvU3RyaW5nIiB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IFN1c3BlbnNlLiBJZiB5b3UgaW50ZW5kZWQgZm9yIHRoaXMgU3VzcGVuc2UgYm91bmRhcnkgdG8gcmVuZGVyIHRoZSBmYWxsYmFjayBjb250ZW50IG9uIHRoZSBzZXJ2ZXIgY29uc2lkZXIgdGhyb3dpbmcgYW4gRXJyb3Igc29tZXdoZXJlIHdpdGhpbiB0aGUgU3VzcGVuc2UgYm91bmRhcnkuIElmIHlvdSBpbnRlbmRlZCB0byBoYXZlIHRoZSBzZXJ2ZXIgd2FpdCBmb3IgdGhlIHN1c3BlbmRlZCBjb21wb25lbnQgcGxlYXNlIHN3aXRjaCB0byAicmVuZGVyVG9SZWFkYWJsZVN0cmVhbSIgd2hpY2ggc3VwcG9ydHMgU3VzcGVuc2Ugb24gdGhlIHNlcnZlcicpfSxEZC52ZXJzaW9uPSIxOC4yLjAiO3ZhciBkbT17fSxwbT1jcDtmdW5jdGlvbiBrKGUpe2Zvcih2YXIgcz0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXMrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tkXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIitzKyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIG1tPW51bGwsZm09MDtmdW5jdGlvbiBwKGUscyl7aWYoMCE9PXMubGVuZ3RoKWlmKDUxMjxzLmxlbmd0aCkwPGZtJiYoZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KG1tLmJ1ZmZlciwwLGZtKSksbW09bmV3IFVpbnQ4QXJyYXkoNTEyKSxmbT0wKSxlLmVucXVldWUocyk7ZWxzZXt2YXIgZD1tbS5sZW5ndGgtZm07ZDxzLmxlbmd0aCYmKDA9PT1kP2UuZW5xdWV1ZShtbSk6KG1tLnNldChzLnN1YmFycmF5KDAsZCksZm0pLGUuZW5xdWV1ZShtbSkscz1zLnN1YmFycmF5KGQpKSxtbT1uZXcgVWludDhBcnJheSg1MTIpLGZtPTApLG1tLnNldChzLGZtKSxmbSs9cy5sZW5ndGh9fWZ1bmN0aW9uIHQoZSxzKXtyZXR1cm4gcChlLHMpLCEwfWZ1bmN0aW9uIGJhKGUpe21tJiYwPGZtJiYoZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KG1tLmJ1ZmZlciwwLGZtKSksbW09bnVsbCxmbT0wKX12YXIgaG09bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGhtLmVuY29kZShlKX1mdW5jdGlvbiB3KGUpe3JldHVybiBobS5lbmNvZGUoZSl9ZnVuY3Rpb24gZGEoZSxzKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5lcnJvcj9lLmVycm9yKHMpOmUuY2xvc2UoKX12YXIgZ209T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx2bT0vXls6QS1aX2Etelx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDJGRlx1MDM3MC1cdTAzN0RcdTAzN0YtXHUxRkZGXHUyMDBDLVx1MjAwRFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZEXVs6QS1aX2Etelx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDJGRlx1MDM3MC1cdTAzN0RcdTAzN0YtXHUxRkZGXHUyMDBDLVx1MjAwRFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZEXC0uMC05XHUwMEI3XHUwMzAwLVx1MDM2Rlx1MjAzRi1cdTIwNDBdKiQvLHltPXt9LGJtPXt9O2Z1bmN0aW9uIGlhKGUpe3JldHVybiEhZ20uY2FsbChibSxlKXx8IWdtLmNhbGwoeW0sZSkmJih2bS50ZXN0KGUpP2JtW2VdPSEwOih5bVtlXT0hMCwhMSkpfWZ1bmN0aW9uIHkoZSxzLGQsbSxoLGcseCl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PXN8fDM9PT1zfHw0PT09cyx0aGlzLmF0dHJpYnV0ZU5hbWU9bSx0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1oLHRoaXMubXVzdFVzZVByb3BlcnR5PWQsdGhpcy5wcm9wZXJ0eU5hbWU9ZSx0aGlzLnR5cGU9cyx0aGlzLnNhbml0aXplVVJMPWcsdGhpcy5yZW1vdmVFbXB0eVN0cmluZz14fXZhciBfbT17fTsiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwwLCExLGUsbnVsbCwhMSwhMSl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZVswXTtfbVtzXT1uZXcgeShzLDEsITEsZVsxXSxudWxsLCExLCExKX0pLFsiY29udGVudEVkaXRhYmxlIiwiZHJhZ2dhYmxlIiwic3BlbGxDaGVjayIsInZhbHVlIl0uZm9yRWFjaChmdW5jdGlvbihlKXtfbVtlXT1uZXcgeShlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksWyJhdXRvUmV2ZXJzZSIsImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLCJmb2N1c2FibGUiLCJwcmVzZXJ2ZUFscGhhIl0uZm9yRWFjaChmdW5jdGlvbihlKXtfbVtlXT1uZXcgeShlLDIsITEsZSxudWxsLCExLCExKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwzLCEwLGUsbnVsbCwhMSwhMSl9KSxbImNhcHR1cmUiLCJkb3dubG9hZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSw0LCExLGUsbnVsbCwhMSwhMSl9KSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe19tW2VdPW5ldyB5KGUsNiwhMSxlLG51bGwsITEsITEpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe19tW2VdPW5ldyB5KGUsNSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgeG09L1tcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIGthKGUpe3JldHVybiBlWzFdLnRvVXBwZXJDYXNlKCl9ImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0Ii5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZS5yZXBsYWNlKHhtLGthKTtfbVtzXT1uZXcgeShzLDEsITEsZSxudWxsLCExLCExKX0pLCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcz1lLnJlcGxhY2UoeG0sa2EpO19tW3NdPW5ldyB5KHMsMSwhMSxlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMSwhMSl9KSxbInhtbDpiYXNlIiwieG1sOmxhbmciLCJ4bWw6c3BhY2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBzPWUucmVwbGFjZSh4bSxrYSk7X21bc109bmV3IHkocywxLCExLGUsImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsITEsITEpfSksWyJ0YWJJbmRleCIsImNyb3NzT3JpZ2luIl0uZm9yRWFjaChmdW5jdGlvbihlKXtfbVtlXT1uZXcgeShlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksX20ueGxpbmtIcmVmPW5ldyB5KCJ4bGlua0hyZWYiLDEsITEsInhsaW5rOmhyZWYiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMCwhMSksWyJzcmMiLCJocmVmIiwiYWN0aW9uIiwiZm9ybUFjdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO3ZhciB3bT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sJG09WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyh3bSkuZm9yRWFjaChmdW5jdGlvbihlKXskbS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3M9cytlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc3Vic3RyaW5nKDEpLHdtW3NdPXdtW2VdfSl9KTt2YXIgU209L1siJyY8Pl0vO2Z1bmN0aW9uIEMoZSl7aWYoImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlKXJldHVybiIiK2U7ZT0iIitlO3ZhciBzPVNtLmV4ZWMoZSk7aWYocyl7dmFyIGQsbT0iIixoPTA7Zm9yKGQ9cy5pbmRleDtkPGUubGVuZ3RoO2QrKyl7c3dpdGNoKGUuY2hhckNvZGVBdChkKSl7Y2FzZSAzNDpzPSImcXVvdDsiO2JyZWFrO2Nhc2UgMzg6cz0iJmFtcDsiO2JyZWFrO2Nhc2UgMzk6cz0iJiN4Mjc7IjticmVhaztjYXNlIDYwOnM9IiZsdDsiO2JyZWFrO2Nhc2UgNjI6cz0iJmd0OyI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1oIT09ZCYmKG0rPWUuc3Vic3RyaW5nKGgsZCkpLGg9ZCsxLG0rPXN9ZT1oIT09ZD9tK2Uuc3Vic3RyaW5nKGgsZCk6bX1yZXR1cm4gZX12YXIgam09LyhbQS1aXSkvZyx6bT0vXm1zLS8sSW09QXJyYXkuaXNBcnJheSxDbT13KCI8c2NyaXB0PiIpLFRtPXcoIjxcL3NjcmlwdD4iKSxSbT13KCc8c2NyaXB0IHNyYz0iJyksRW09dygnPHNjcmlwdCB0eXBlPSJtb2R1bGUiIHNyYz0iJyksT209dygnIiBhc3luYz0iIj48XC9zY3JpcHQ+JyksUG09Lyg8XC98PCkocykoY3JpcHQpL2dpO2Z1bmN0aW9uIHlhKGUscyxkLG0pe3JldHVybiBzKygicyI9PT1kPyJcXHUwMDczIjoiXFx1MDA1MyIpK219ZnVuY3Rpb24gRChlLHMpe3JldHVybntpbnNlcnRpb25Nb2RlOmUsc2VsZWN0ZWRWYWx1ZTpzfX12YXIgTm09dygiXHgzYyEtLSAtLVx4M2UiKTtmdW5jdGlvbiBEYShlLHMsZCxtKXtyZXR1cm4iIj09PXM/bToobSYmZS5wdXNoKE5tKSxlLnB1c2godShDKHMpKSksITApfXZhciBEbT1uZXcgTWFwLFVtPXcoJyBzdHlsZT0iJyksTG09dygiOiIpLEFtPXcoIjsiKTtmdW5jdGlvbiBJYShlLHMsZCl7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXRocm93IEVycm9yKGsoNjIpKTtmb3IodmFyIG0gaW4gcz0hMCxkKWlmKGdtLmNhbGwoZCxtKSl7dmFyIGg9ZFttXTtpZihudWxsIT1oJiYiYm9vbGVhbiIhPXR5cGVvZiBoJiYiIiE9PWgpe2lmKDA9PT1tLmluZGV4T2YoIi0tIikpe3ZhciBnPXUoQyhtKSk7aD11KEMoKCIiK2gpLnRyaW0oKSkpfWVsc2V7Zz1tO3ZhciB4PURtLmdldChnKTt2b2lkIDAhPT14fHwoeD13KEMoZy5yZXBsYWNlKGptLCItJDEiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2Uoem0sIi1tcy0iKSkpLERtLnNldChnLHgpKSxnPXgsaD0ibnVtYmVyIj09dHlwZW9mIGg/MD09PWh8fGdtLmNhbGwod20sbSk/dSgiIitoKTp1KGgrInB4Iik6dShDKCgiIitoKS50cmltKCkpKX1zPyhzPSExLGUucHVzaChVbSxnLExtLGgpKTplLnB1c2goQW0sZyxMbSxoKX19c3x8ZS5wdXNoKEJtKX12YXIgcW09dygiICIpLEZtPXcoJz0iJyksQm09dygnIicpLFptPXcoJz0iIicpO2Z1bmN0aW9uIEooZSxzLGQsbSl7c3dpdGNoKGQpe2Nhc2Uic3R5bGUiOnJldHVybiB2b2lkIElhKGUscyxtKTtjYXNlImRlZmF1bHRWYWx1ZSI6Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6Y2FzZSJpbm5lckhUTUwiOmNhc2Uic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIjpjYXNlInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyI6cmV0dXJufWlmKCEoMjxkLmxlbmd0aCl8fCJvIiE9PWRbMF0mJiJPIiE9PWRbMF18fCJuIiE9PWRbMV0mJiJOIiE9PWRbMV0paWYobnVsbCE9PShzPV9tLmhhc093blByb3BlcnR5KGQpP19tW2RdOm51bGwpKXtzd2l0Y2godHlwZW9mIG0pe2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjpyZXR1cm47Y2FzZSJib29sZWFuIjppZighcy5hY2NlcHRzQm9vbGVhbnMpcmV0dXJufXN3aXRjaChkPXUocy5hdHRyaWJ1dGVOYW1lKSxzLnR5cGUpe2Nhc2UgMzptJiZlLnB1c2gocW0sZCxabSk7YnJlYWs7Y2FzZSA0OiEwPT09bT9lLnB1c2gocW0sZCxabSk6ITEhPT1tJiZlLnB1c2gocW0sZCxGbSx1KEMobSkpLEJtKTticmVhaztjYXNlIDU6aXNOYU4obSl8fGUucHVzaChxbSxkLEZtLHUoQyhtKSksQm0pO2JyZWFrO2Nhc2UgNjohaXNOYU4obSkmJjE8PW0mJmUucHVzaChxbSxkLEZtLHUoQyhtKSksQm0pO2JyZWFrO2RlZmF1bHQ6cy5zYW5pdGl6ZVVSTCYmKG09IiIrbSksZS5wdXNoKHFtLGQsRm0sdShDKG0pKSxCbSl9fWVsc2UgaWYoaWEoZCkpe3N3aXRjaCh0eXBlb2YgbSl7Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOnJldHVybjtjYXNlImJvb2xlYW4iOmlmKCJkYXRhLSIhPT0ocz1kLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KSkmJiJhcmlhLSIhPT1zKXJldHVybn1lLnB1c2gocW0sdShkKSxGbSx1KEMobSkpLEJtKX19dmFyIE1tPXcoIj4iKSxRbT13KCIvPiIpO2Z1bmN0aW9uIEwoZSxzLGQpe2lmKG51bGwhPXMpe2lmKG51bGwhPWQpdGhyb3cgRXJyb3Ioayg2MCkpO2lmKCJvYmplY3QiIT10eXBlb2Ygc3x8ISgiX19odG1sImluIHMpKXRocm93IEVycm9yKGsoNjEpKTtudWxsIT0ocz1zLl9faHRtbCkmJmUucHVzaCh1KCIiK3MpKX19dmFyIFZtPXcoJyBzZWxlY3RlZD0iIicpO2Z1bmN0aW9uIE5hKGUscyxkLG0pe2UucHVzaChNKGQpKTt2YXIgaCxnPWQ9bnVsbDtmb3IoaCBpbiBzKWlmKGdtLmNhbGwocyxoKSl7dmFyIHg9c1toXTtpZihudWxsIT14KXN3aXRjaChoKXtjYXNlImNoaWxkcmVuIjpkPXg7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6Zz14O2JyZWFrO2RlZmF1bHQ6SihlLG0saCx4KX19cmV0dXJuIGUucHVzaChNbSksTChlLGcsZCksInN0cmluZyI9PXR5cGVvZiBkPyhlLnB1c2godShDKGQpKSksbnVsbCk6ZH12YXIgSG09dygiXG4iKSxXbT0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxKbT1uZXcgTWFwO2Z1bmN0aW9uIE0oZSl7dmFyIHM9Sm0uZ2V0KGUpO2lmKHZvaWQgMD09PXMpe2lmKCFXbS50ZXN0KGUpKXRocm93IEVycm9yKGsoNjUsZSkpO3M9dygiPCIrZSksSm0uc2V0KGUscyl9cmV0dXJuIHN9dmFyIEttPXcoIjwhRE9DVFlQRSBodG1sPiIpO2Z1bmN0aW9uIFNhKGUscyxkLG0saCl7c3dpdGNoKHMpe2Nhc2Uic2VsZWN0IjplLnB1c2goTSgic2VsZWN0IikpO3ZhciBnPW51bGwseD1udWxsO2Zvcih6IGluIGQpaWYoZ20uY2FsbChkLHopKXt2YXIgJD1kW3pdO2lmKG51bGwhPSQpc3dpdGNoKHope2Nhc2UiY2hpbGRyZW4iOmc9JDticmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp4PSQ7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOmNhc2UidmFsdWUiOmJyZWFrO2RlZmF1bHQ6SihlLG0seiwkKX19cmV0dXJuIGUucHVzaChNbSksTChlLHgsZyksZztjYXNlIm9wdGlvbiI6eD1oLnNlbGVjdGVkVmFsdWUsZS5wdXNoKE0oIm9wdGlvbiIpKTt2YXIgUz0kPW51bGwsaj1udWxsLHo9bnVsbDtmb3IoZyBpbiBkKWlmKGdtLmNhbGwoZCxnKSl7dmFyIEk9ZFtnXTtpZihudWxsIT1JKXN3aXRjaChnKXtjYXNlImNoaWxkcmVuIjokPUk7YnJlYWs7Y2FzZSJzZWxlY3RlZCI6aj1JO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOno9STticmVhaztjYXNlInZhbHVlIjpTPUk7ZGVmYXVsdDpKKGUsbSxnLEkpfX1pZihudWxsIT14KWlmKGQ9bnVsbCE9PVM/IiIrUzpmdW5jdGlvbihlKXt2YXIgcz0iIjtyZXR1cm4gcG0uQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe251bGwhPWUmJihzKz1lKX0pLHN9KCQpLEltKHgpKXtmb3IobT0wO208eC5sZW5ndGg7bSsrKWlmKCIiK3hbbV09PT1kKXtlLnB1c2goVm0pO2JyZWFrfX1lbHNlIiIreD09PWQmJmUucHVzaChWbSk7ZWxzZSBqJiZlLnB1c2goVm0pO3JldHVybiBlLnB1c2goTW0pLEwoZSx6LCQpLCQ7Y2FzZSJ0ZXh0YXJlYSI6Zm9yKCQgaW4gZS5wdXNoKE0oInRleHRhcmVhIikpLHo9eD1nPW51bGwsZClpZihnbS5jYWxsKGQsJCkmJm51bGwhPShTPWRbJF0pKXN3aXRjaCgkKXtjYXNlImNoaWxkcmVuIjp6PVM7YnJlYWs7Y2FzZSJ2YWx1ZSI6Zz1TO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjp4PVM7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3Ioayg5MSkpO2RlZmF1bHQ6SihlLG0sJCxTKX1pZihudWxsPT09ZyYmbnVsbCE9PXgmJihnPXgpLGUucHVzaChNbSksbnVsbCE9eil7aWYobnVsbCE9Zyl0aHJvdyBFcnJvcihrKDkyKSk7aWYoSW0oeikmJjE8ei5sZW5ndGgpdGhyb3cgRXJyb3Ioayg5MykpO2c9IiIren1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGcmJiJcbiI9PT1nWzBdJiZlLnB1c2goSG0pLG51bGwhPT1nJiZlLnB1c2godShDKCIiK2cpKSksbnVsbDtjYXNlImlucHV0Ijpmb3IoeCBpbiBlLnB1c2goTSgiaW5wdXQiKSksUz16PSQ9Zz1udWxsLGQpaWYoZ20uY2FsbChkLHgpJiZudWxsIT0oaj1kW3hdKSlzd2l0Y2goeCl7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IoaygzOTksImlucHV0IikpO2Nhc2UiZGVmYXVsdENoZWNrZWQiOlM9ajticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6JD1qO2JyZWFrO2Nhc2UiY2hlY2tlZCI6ej1qO2JyZWFrO2Nhc2UidmFsdWUiOmc9ajticmVhaztkZWZhdWx0OkooZSxtLHgsail9cmV0dXJuIG51bGwhPT16P0ooZSxtLCJjaGVja2VkIix6KTpudWxsIT09UyYmSihlLG0sImNoZWNrZWQiLFMpLG51bGwhPT1nP0ooZSxtLCJ2YWx1ZSIsZyk6bnVsbCE9PSQmJkooZSxtLCJ2YWx1ZSIsJCksZS5wdXNoKFFtKSxudWxsO2Nhc2UibWVudWl0ZW0iOmZvcih2YXIgVCBpbiBlLnB1c2goTSgibWVudWl0ZW0iKSksZClpZihnbS5jYWxsKGQsVCkmJm51bGwhPShnPWRbVF0pKXN3aXRjaChUKXtjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp0aHJvdyBFcnJvcihrKDQwMCkpO2RlZmF1bHQ6SihlLG0sVCxnKX1yZXR1cm4gZS5wdXNoKE1tKSxudWxsO2Nhc2UidGl0bGUiOmZvcihJIGluIGUucHVzaChNKCJ0aXRsZSIpKSxnPW51bGwsZClpZihnbS5jYWxsKGQsSSkmJm51bGwhPSh4PWRbSV0pKXN3aXRjaChJKXtjYXNlImNoaWxkcmVuIjpnPXg7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3Ioayg0MzQpKTtkZWZhdWx0OkooZSxtLEkseCl9cmV0dXJuIGUucHVzaChNbSksZztjYXNlImxpc3RpbmciOmNhc2UicHJlIjpmb3IoUyBpbiBlLnB1c2goTShzKSkseD1nPW51bGwsZClpZihnbS5jYWxsKGQsUykmJm51bGwhPSgkPWRbU10pKXN3aXRjaChTKXtjYXNlImNoaWxkcmVuIjpnPSQ7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6eD0kO2JyZWFrO2RlZmF1bHQ6SihlLG0sUywkKX1pZihlLnB1c2goTW0pLG51bGwhPXgpe2lmKG51bGwhPWcpdGhyb3cgRXJyb3Ioayg2MCkpO2lmKCJvYmplY3QiIT10eXBlb2YgeHx8ISgiX19odG1sImluIHgpKXRocm93IEVycm9yKGsoNjEpKTtudWxsIT0oZD14Ll9faHRtbCkmJigic3RyaW5nIj09dHlwZW9mIGQmJjA8ZC5sZW5ndGgmJiJcbiI9PT1kWzBdP2UucHVzaChIbSx1KGQpKTplLnB1c2godSgiIitkKSkpfXJldHVybiJzdHJpbmciPT10eXBlb2YgZyYmIlxuIj09PWdbMF0mJmUucHVzaChIbSksZztjYXNlImFyZWEiOmNhc2UiYmFzZSI6Y2FzZSJiciI6Y2FzZSJjb2wiOmNhc2UiZW1iZWQiOmNhc2UiaHIiOmNhc2UiaW1nIjpjYXNlImtleWdlbiI6Y2FzZSJsaW5rIjpjYXNlIm1ldGEiOmNhc2UicGFyYW0iOmNhc2Uic291cmNlIjpjYXNlInRyYWNrIjpjYXNlIndiciI6Zm9yKHZhciBSIGluIGUucHVzaChNKHMpKSxkKWlmKGdtLmNhbGwoZCxSKSYmbnVsbCE9KGc9ZFtSXSkpc3dpdGNoKFIpe2Nhc2UiY2hpbGRyZW4iOmNhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGsoMzk5LHMpKTtkZWZhdWx0OkooZSxtLFIsZyl9cmV0dXJuIGUucHVzaChRbSksbnVsbDtjYXNlImFubm90YXRpb24teG1sIjpjYXNlImNvbG9yLXByb2ZpbGUiOmNhc2UiZm9udC1mYWNlIjpjYXNlImZvbnQtZmFjZS1zcmMiOmNhc2UiZm9udC1mYWNlLXVyaSI6Y2FzZSJmb250LWZhY2UtZm9ybWF0IjpjYXNlImZvbnQtZmFjZS1uYW1lIjpjYXNlIm1pc3NpbmctZ2x5cGgiOnJldHVybiBOYShlLGQscyxtKTtjYXNlImh0bWwiOnJldHVybiAwPT09aC5pbnNlcnRpb25Nb2RlJiZlLnB1c2goS20pLE5hKGUsZCxzLG0pO2RlZmF1bHQ6aWYoLTE9PT1zLmluZGV4T2YoIi0iKSYmInN0cmluZyIhPXR5cGVvZiBkLmlzKXJldHVybiBOYShlLGQscyxtKTtmb3IoaiBpbiBlLnB1c2goTShzKSkseD1nPW51bGwsZClpZihnbS5jYWxsKGQsaikmJm51bGwhPSgkPWRbal0pKXN3aXRjaChqKXtjYXNlImNoaWxkcmVuIjpnPSQ7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6eD0kO2JyZWFrO2Nhc2Uic3R5bGUiOklhKGUsbSwkKTticmVhaztjYXNlInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyI6Y2FzZSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciOmJyZWFrO2RlZmF1bHQ6aWEoaikmJiJmdW5jdGlvbiIhPXR5cGVvZiAkJiYic3ltYm9sIiE9dHlwZW9mICQmJmUucHVzaChxbSx1KGopLEZtLHUoQygkKSksQm0pfXJldHVybiBlLnB1c2goTW0pLEwoZSx4LGcpLGd9fXZhciBHbT13KCI8LyIpLFhtPXcoIj4iKSxZbT13KCc8dGVtcGxhdGUgaWQ9IicpLGVmPXcoJyI+PC90ZW1wbGF0ZT4nKSx0Zj13KCJceDNjIS0tJC0tXHgzZSIpLG5mPXcoJ1x4M2MhLS0kPy0tXHgzZTx0ZW1wbGF0ZSBpZD0iJykscmY9dygnIj48L3RlbXBsYXRlPicpLG9mPXcoIlx4M2MhLS0kIS0tXHgzZSIpLGFmPXcoIlx4M2MhLS0vJC0tXHgzZSIpLHNmPXcoIjx0ZW1wbGF0ZSIpLGxmPXcoJyInKSxjZj13KCcgZGF0YS1kZ3N0PSInKTt3KCcgZGF0YS1tc2c9IicpLHcoJyBkYXRhLXN0Y2s9IicpO3ZhciB1Zj13KCI+PC90ZW1wbGF0ZT4iKTtmdW5jdGlvbiBmYihlLHMsZCl7aWYocChlLG5mKSxudWxsPT09ZCl0aHJvdyBFcnJvcihrKDM5NSkpO3JldHVybiBwKGUsZCksdChlLHJmKX12YXIgZGY9dygnPGRpdiBoaWRkZW4gaWQ9IicpLHBmPXcoJyI+JyksbWY9dygiPC9kaXY+IiksZmY9dygnPHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgaWQ9IicpLGhmPXcoJyI+JyksZ2Y9dygiPC9zdmc+IiksdmY9dygnPG1hdGggYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGlkPSInKSx5Zj13KCciPicpLGJmPXcoIjwvbWF0aD4iKSxfZj13KCc8dGFibGUgaGlkZGVuIGlkPSInKSx4Zj13KCciPicpLHdmPXcoIjwvdGFibGU+IiksJGY9dygnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9IicpLFNmPXcoJyI+Jyksa2Y9dygiPC90Ym9keT48L3RhYmxlPiIpLGpmPXcoJzx0YWJsZSBoaWRkZW4+PHRyIGlkPSInKSx6Zj13KCciPicpLElmPXcoIjwvdHI+PC90YWJsZT4iKSxDZj13KCc8dGFibGUgaGlkZGVuPjxjb2xncm91cCBpZD0iJyksVGY9dygnIj4nKSxSZj13KCI8L2NvbGdyb3VwPjwvdGFibGU+Iik7dmFyIEVmPXcoJ2Z1bmN0aW9uICRSUyhhLGIpe2E9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtmb3IoYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpO2EuZmlyc3RDaGlsZDspYi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLmZpcnN0Q2hpbGQsYik7Yi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpfTskUlMoIicpLE9mPXcoJyRSUygiJyksUGY9dygnIiwiJyksTmY9dygnIik8XC9zY3JpcHQ+JyksRGY9dygnZnVuY3Rpb24gJFJDKGEsYil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKTtpZihhKXthPWEucHJldmlvdXNTaWJsaW5nO3ZhciBmPWEucGFyZW50Tm9kZSxjPWEubmV4dFNpYmxpbmcsZT0wO2Rve2lmKGMmJjg9PT1jLm5vZGVUeXBlKXt2YXIgZD1jLmRhdGE7aWYoIi8kIj09PWQpaWYoMD09PWUpYnJlYWs7ZWxzZSBlLS07ZWxzZSIkIiE9PWQmJiIkPyIhPT1kJiYiJCEiIT09ZHx8ZSsrfWQ9Yy5uZXh0U2libGluZztmLnJlbW92ZUNoaWxkKGMpO2M9ZH13aGlsZShjKTtmb3IoO2IuZmlyc3RDaGlsZDspZi5pbnNlcnRCZWZvcmUoYi5maXJzdENoaWxkLGMpO2EuZGF0YT0iJCI7YS5fcmVhY3RSZXRyeSYmYS5fcmVhY3RSZXRyeSgpfX07JFJDKCInKSxVZj13KCckUkMoIicpLExmPXcoJyIsIicpLEFmPXcoJyIpPFwvc2NyaXB0PicpLHFmPXcoJ2Z1bmN0aW9uICRSWChiLGMsZCxlKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTthJiYoYj1hLnByZXZpb3VzU2libGluZyxiLmRhdGE9IiQhIixhPWEuZGF0YXNldCxjJiYoYS5kZ3N0PWMpLGQmJihhLm1zZz1kKSxlJiYoYS5zdGNrPWUpLGIuX3JlYWN0UmV0cnkmJmIuX3JlYWN0UmV0cnkoKSl9OyRSWCgiJyksRmY9dygnJFJYKCInKSxCZj13KCciJyksWmY9dygiKTxcL3NjcmlwdD4iKSxNZj13KCIsIiksUWY9L1s8XHUyMDI4XHUyMDI5XS9nO2Z1bmN0aW9uIFNiKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKFFmLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIjwiOnJldHVybiJcXHUwMDNjIjtjYXNlIlx1MjAyOCI6cmV0dXJuIlxcdTIwMjgiO2Nhc2UiXHUyMDI5IjpyZXR1cm4iXFx1MjAyOSI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzIGVuY291bnRlcmVkIGEgbWF0Y2ggaXQgZG9lcyBub3Qga25vdyBob3cgdG8gcmVwbGFjZS4gdGhpcyBtZWFucyB0aGUgbWF0Y2ggcmVnZXggYW5kIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBubyBsb25nZXIgaW4gc3luYy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdCIpfX0pfXZhciBWZj1PYmplY3QuYXNzaWduLEhmPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxXZj1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSxKZj1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLEtmPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksR2Y9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxYZj1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLFlmPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxlaD1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLHRoPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksbmg9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpLGloPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxyaD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iiksb2g9U3ltYm9sLmZvcigicmVhY3Quc2NvcGUiKSxhaD1TeW1ib2wuZm9yKCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlIiksc2g9U3ltYm9sLmZvcigicmVhY3QubGVnYWN5X2hpZGRlbiIpLGxoPVN5bWJvbC5mb3IoInJlYWN0LmRlZmF1bHRfdmFsdWUiKSxjaD1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gamMoZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxudWxsO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtzd2l0Y2goZSl7Y2FzZSBKZjpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgV2Y6cmV0dXJuIlBvcnRhbCI7Y2FzZSBHZjpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgS2Y6cmV0dXJuIlN0cmljdE1vZGUiO2Nhc2UgdGg6cmV0dXJuIlN1c3BlbnNlIjtjYXNlIG5oOnJldHVybiJTdXNwZW5zZUxpc3QifWlmKCJvYmplY3QiPT10eXBlb2YgZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBZZjpyZXR1cm4oZS5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLkNvbnN1bWVyIjtjYXNlIFhmOnJldHVybihlLl9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuUHJvdmlkZXIiO2Nhc2UgZWg6dmFyIHM9ZS5yZW5kZXI7cmV0dXJuKGU9ZS5kaXNwbGF5TmFtZSl8fChlPSIiIT09KGU9cy5kaXNwbGF5TmFtZXx8cy5uYW1lfHwiIik/IkZvcndhcmRSZWYoIitlKyIpIjoiRm9yd2FyZFJlZiIpLGU7Y2FzZSBpaDpyZXR1cm4gbnVsbCE9PShzPWUuZGlzcGxheU5hbWV8fG51bGwpP3M6amMoZS50eXBlKXx8Ik1lbW8iO2Nhc2Ugcmg6cz1lLl9wYXlsb2FkLGU9ZS5faW5pdDt0cnl7cmV0dXJuIGpjKGUocykpfWNhdGNoKGUpe319cmV0dXJuIG51bGx9dmFyIHVoPXt9O2Z1bmN0aW9uIGxjKGUscyl7aWYoIShlPWUuY29udGV4dFR5cGVzKSlyZXR1cm4gdWg7dmFyIGQsbT17fTtmb3IoZCBpbiBlKW1bZF09c1tkXTtyZXR1cm4gbX12YXIgZGg9bnVsbDtmdW5jdGlvbiBQKGUscyl7aWYoZSE9PXMpe2UuY29udGV4dC5fY3VycmVudFZhbHVlPWUucGFyZW50VmFsdWUsZT1lLnBhcmVudDt2YXIgZD1zLnBhcmVudDtpZihudWxsPT09ZSl7aWYobnVsbCE9PWQpdGhyb3cgRXJyb3Ioayg0MDEpKX1lbHNle2lmKG51bGw9PT1kKXRocm93IEVycm9yKGsoNDAxKSk7UChlLGQpfXMuY29udGV4dC5fY3VycmVudFZhbHVlPXMudmFsdWV9fWZ1bmN0aW9uIG1jKGUpe2UuY29udGV4dC5fY3VycmVudFZhbHVlPWUucGFyZW50VmFsdWUsbnVsbCE9PShlPWUucGFyZW50KSYmbWMoZSl9ZnVuY3Rpb24gbmMoZSl7dmFyIHM9ZS5wYXJlbnQ7bnVsbCE9PXMmJm5jKHMpLGUuY29udGV4dC5fY3VycmVudFZhbHVlPWUudmFsdWV9ZnVuY3Rpb24gb2MoZSxzKXtpZihlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZT1lLnBhcmVudFZhbHVlLG51bGw9PT0oZT1lLnBhcmVudCkpdGhyb3cgRXJyb3Ioayg0MDIpKTtlLmRlcHRoPT09cy5kZXB0aD9QKGUscyk6b2MoZSxzKX1mdW5jdGlvbiBwYyhlLHMpe3ZhciBkPXMucGFyZW50O2lmKG51bGw9PT1kKXRocm93IEVycm9yKGsoNDAyKSk7ZS5kZXB0aD09PWQuZGVwdGg/UChlLGQpOnBjKGUsZCkscy5jb250ZXh0Ll9jdXJyZW50VmFsdWU9cy52YWx1ZX1mdW5jdGlvbiBRKGUpe3ZhciBzPWRoO3MhPT1lJiYobnVsbD09PXM/bmMoZSk6bnVsbD09PWU/bWMocyk6cy5kZXB0aD09PWUuZGVwdGg/UChzLGUpOnMuZGVwdGg+ZS5kZXB0aD9vYyhzLGUpOnBjKHMsZSksZGg9ZSl9dmFyIHBoPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUscyl7bnVsbCE9PShlPWUuX3JlYWN0SW50ZXJuYWxzKS5xdWV1ZSYmZS5xdWV1ZS5wdXNoKHMpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUscyl7KGU9ZS5fcmVhY3RJbnRlcm5hbHMpLnJlcGxhY2U9ITAsZS5xdWV1ZT1bc119LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHJjKGUscyxkLG0pe3ZhciBoPXZvaWQgMCE9PWUuc3RhdGU/ZS5zdGF0ZTpudWxsO2UudXBkYXRlcj1waCxlLnByb3BzPWQsZS5zdGF0ZT1oO3ZhciBnPXtxdWV1ZTpbXSxyZXBsYWNlOiExfTtlLl9yZWFjdEludGVybmFscz1nO3ZhciB4PXMuY29udGV4dFR5cGU7aWYoZS5jb250ZXh0PSJvYmplY3QiPT10eXBlb2YgeCYmbnVsbCE9PXg/eC5fY3VycmVudFZhbHVlOm0sImZ1bmN0aW9uIj09dHlwZW9mKHg9cy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpJiYoaD1udWxsPT0oeD14KGQsaCkpP2g6VmYoe30saCx4KSxlLnN0YXRlPWgpLCJmdW5jdGlvbiIhPXR5cGVvZiBzLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJigiZnVuY3Rpb24iPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50fHwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQpKWlmKHM9ZS5zdGF0ZSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkscyE9PWUuc3RhdGUmJnBoLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLG51bGwhPT1nLnF1ZXVlJiYwPGcucXVldWUubGVuZ3RoKWlmKHM9Zy5xdWV1ZSx4PWcucmVwbGFjZSxnLnF1ZXVlPW51bGwsZy5yZXBsYWNlPSExLHgmJjE9PT1zLmxlbmd0aCllLnN0YXRlPXNbMF07ZWxzZXtmb3IoZz14P3NbMF06ZS5zdGF0ZSxoPSEwLHg9eD8xOjA7eDxzLmxlbmd0aDt4Kyspe3ZhciAkPXNbeF07bnVsbCE9KCQ9ImZ1bmN0aW9uIj09dHlwZW9mICQ/JC5jYWxsKGUsZyxkLG0pOiQpJiYoaD8oaD0hMSxnPVZmKHt9LGcsJCkpOlZmKGcsJCkpfWUuc3RhdGU9Z31lbHNlIGcucXVldWU9bnVsbH12YXIgbWg9e2lkOjEsb3ZlcmZsb3c6IiJ9O2Z1bmN0aW9uIHRjKGUscyxkKXt2YXIgbT1lLmlkO2U9ZS5vdmVyZmxvdzt2YXIgaD0zMi1maChtKS0xO20mPX4oMTw8aCksZCs9MTt2YXIgZz0zMi1maChzKStoO2lmKDMwPGcpe3ZhciB4PWgtaCU1O3JldHVybiBnPShtJigxPDx4KS0xKS50b1N0cmluZygzMiksbT4+PXgsaC09eCx7aWQ6MTw8MzItZmgocykraHxkPDxofG0sb3ZlcmZsb3c6ZytlfX1yZXR1cm57aWQ6MTw8Z3xkPDxofG0sb3ZlcmZsb3c6ZX19dmFyIGZoPU1hdGguY2x6MzI/TWF0aC5jbHozMjpmdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPj4+PTApPzMyOjMxLShoaChlKS9naHwwKXwwfSxoaD1NYXRoLmxvZyxnaD1NYXRoLkxOMjt2YXIgdmg9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24oZSxzKXtyZXR1cm4gZT09PXMmJigwIT09ZXx8MS9lPT0xL3MpfHxlIT1lJiZzIT1zfSx5aD1udWxsLGJoPW51bGwsX2g9bnVsbCx4aD1udWxsLHdoPSExLCRoPSExLFNoPTAsa2g9bnVsbCxqaD0wO2Z1bmN0aW9uIFcoKXtpZihudWxsPT09eWgpdGhyb3cgRXJyb3IoaygzMjEpKTtyZXR1cm4geWh9ZnVuY3Rpb24gRWMoKXtpZigwPGpoKXRocm93IEVycm9yKGsoMzEyKSk7cmV0dXJue21lbW9pemVkU3RhdGU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH19ZnVuY3Rpb24gRmMoKXtyZXR1cm4gbnVsbD09PXhoP251bGw9PT1faD8od2g9ITEsX2g9eGg9RWMoKSk6KHdoPSEwLHhoPV9oKTpudWxsPT09eGgubmV4dD8od2g9ITEseGg9eGgubmV4dD1FYygpKTood2g9ITAseGg9eGgubmV4dCkseGh9ZnVuY3Rpb24gR2MoKXtiaD15aD1udWxsLCRoPSExLF9oPW51bGwsamg9MCx4aD1raD1udWxsfWZ1bmN0aW9uIEhjKGUscyl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHM/cyhlKTpzfWZ1bmN0aW9uIEljKGUscyxkKXtpZih5aD1XKCkseGg9RmMoKSx3aCl7dmFyIG09eGgucXVldWU7aWYocz1tLmRpc3BhdGNoLG51bGwhPT1raCYmdm9pZCAwIT09KGQ9a2guZ2V0KG0pKSl7a2guZGVsZXRlKG0pLG09eGgubWVtb2l6ZWRTdGF0ZTtkb3ttPWUobSxkLmFjdGlvbiksZD1kLm5leHR9d2hpbGUobnVsbCE9PWQpO3JldHVybiB4aC5tZW1vaXplZFN0YXRlPW0sW20sc119cmV0dXJuW3hoLm1lbW9pemVkU3RhdGUsc119cmV0dXJuIGU9ZT09PUhjPyJmdW5jdGlvbiI9PXR5cGVvZiBzP3MoKTpzOnZvaWQgMCE9PWQ/ZChzKTpzLHhoLm1lbW9pemVkU3RhdGU9ZSxlPShlPXhoLnF1ZXVlPXtsYXN0Om51bGwsZGlzcGF0Y2g6bnVsbH0pLmRpc3BhdGNoPUpjLmJpbmQobnVsbCx5aCxlKSxbeGgubWVtb2l6ZWRTdGF0ZSxlXX1mdW5jdGlvbiBLYyhlLHMpe2lmKHloPVcoKSxzPXZvaWQgMD09PXM/bnVsbDpzLG51bGwhPT0oeGg9RmMoKSkpe3ZhciBkPXhoLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1zKXt2YXIgbT1kWzFdO2U6aWYobnVsbD09PW0pbT0hMTtlbHNle2Zvcih2YXIgaD0wO2g8bS5sZW5ndGgmJmg8cy5sZW5ndGg7aCsrKWlmKCF2aChzW2hdLG1baF0pKXttPSExO2JyZWFrIGV9bT0hMH1pZihtKXJldHVybiBkWzBdfX1yZXR1cm4gZT1lKCkseGgubWVtb2l6ZWRTdGF0ZT1bZSxzXSxlfWZ1bmN0aW9uIEpjKGUscyxkKXtpZigyNTw9amgpdGhyb3cgRXJyb3IoaygzMDEpKTtpZihlPT09eWgpaWYoJGg9ITAsZT17YWN0aW9uOmQsbmV4dDpudWxsfSxudWxsPT09a2gmJihraD1uZXcgTWFwKSx2b2lkIDA9PT0oZD1raC5nZXQocykpKWtoLnNldChzLGUpO2Vsc2V7Zm9yKHM9ZDtudWxsIT09cy5uZXh0OylzPXMubmV4dDtzLm5leHQ9ZX19ZnVuY3Rpb24gTGMoKXt0aHJvdyBFcnJvcihrKDM5NCkpfWZ1bmN0aW9uIE1jKCl7fXZhciB6aCxJaCxDaD17cmVhZENvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2N1cnJlbnRWYWx1ZX0sdXNlQ29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gVygpLGUuX2N1cnJlbnRWYWx1ZX0sdXNlTWVtbzpLYyx1c2VSZWR1Y2VyOkljLHVzZVJlZjpmdW5jdGlvbihlKXt5aD1XKCk7dmFyIHM9KHhoPUZjKCkpLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGw9PT1zPyhlPXtjdXJyZW50OmV9LHhoLm1lbW9pemVkU3RhdGU9ZSk6c30sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIEljKEhjLGUpfSx1c2VJbnNlcnRpb25FZmZlY3Q6TWMsdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKCl7fSx1c2VDYWxsYmFjazpmdW5jdGlvbihlLHMpe3JldHVybiBLYyhmdW5jdGlvbigpe3JldHVybiBlfSxzKX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpNYyx1c2VFZmZlY3Q6TWMsdXNlRGVidWdWYWx1ZTpNYyx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBXKCksZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiBXKCksWyExLExjXX0sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgZT1iaC50cmVlQ29udGV4dCxzPWUub3ZlcmZsb3c7ZT0oKGU9ZS5pZCkmfigxPDwzMi1maChlKS0xKSkudG9TdHJpbmcoMzIpK3M7dmFyIGQ9VGg7aWYobnVsbD09PWQpdGhyb3cgRXJyb3Ioayg0MDQpKTtyZXR1cm4gcz1TaCsrLGU9IjoiK2QuaWRQcmVmaXgrIlIiK2UsMDxzJiYoZSs9IkgiK3MudG9TdHJpbmcoMzIpKSxlKyI6In0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbihlLHMpe3JldHVybiBXKCkscyhlLl9zb3VyY2UpfSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihlLHMsZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBFcnJvcihrKDQwNykpO3JldHVybiBkKCl9fSxUaD1udWxsLFJoPXBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudERpc3BhdGNoZXI7ZnVuY3Rpb24gUWMoZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoZSksbnVsbH1mdW5jdGlvbiBYKCl7fWZ1bmN0aW9uIFRjKGUscyxkLG0saCxnLHgsJCl7ZS5hbGxQZW5kaW5nVGFza3MrKyxudWxsPT09ZD9lLnBlbmRpbmdSb290VGFza3MrKzpkLnBlbmRpbmdUYXNrcysrO3ZhciBTPXtub2RlOnMscGluZzpmdW5jdGlvbigpe3ZhciBzPWUucGluZ2VkVGFza3M7cy5wdXNoKFMpLDE9PT1zLmxlbmd0aCYmVWMoZSl9LGJsb2NrZWRCb3VuZGFyeTpkLGJsb2NrZWRTZWdtZW50Om0sYWJvcnRTZXQ6aCxsZWdhY3lDb250ZXh0OmcsY29udGV4dDp4LHRyZWVDb250ZXh0OiR9O3JldHVybiBoLmFkZChTKSxTfWZ1bmN0aW9uIFNjKGUscyxkLG0saCxnKXtyZXR1cm57c3RhdHVzOjAsaWQ6LTEsaW5kZXg6cyxwYXJlbnRGbHVzaGVkOiExLGNodW5rczpbXSxjaGlsZHJlbjpbXSxmb3JtYXRDb250ZXh0Om0sYm91bmRhcnk6ZCxsYXN0UHVzaGVkVGV4dDpoLHRleHRFbWJlZGRlZDpnfX1mdW5jdGlvbiBZKGUscyl7aWYobnVsbCE9KGU9ZS5vbkVycm9yKHMpKSYmInN0cmluZyIhPXR5cGVvZiBlKXRocm93IEVycm9yKCdvbkVycm9yIHJldHVybmVkIHNvbWV0aGluZyB3aXRoIGEgdHlwZSBvdGhlciB0aGFuICJzdHJpbmciLiBvbkVycm9yIHNob3VsZCByZXR1cm4gYSBzdHJpbmcgYW5kIG1heSByZXR1cm4gbnVsbCBvciB1bmRlZmluZWQgYnV0IG11c3Qgbm90IHJldHVybiBhbnl0aGluZyBlbHNlLiBJdCByZWNlaXZlZCBzb21ldGhpbmcgb2YgdHlwZSAiJyt0eXBlb2YgZSsnIiBpbnN0ZWFkJyk7cmV0dXJuIGV9ZnVuY3Rpb24gVmMoZSxzKXt2YXIgZD1lLm9uU2hlbGxFcnJvcjtkKHMpLChkPWUub25GYXRhbEVycm9yKShzKSxudWxsIT09ZS5kZXN0aW5hdGlvbj8oZS5zdGF0dXM9MixkYShlLmRlc3RpbmF0aW9uLHMpKTooZS5zdGF0dXM9MSxlLmZhdGFsRXJyb3I9cyl9ZnVuY3Rpb24gV2MoZSxzLGQsbSxoKXtmb3IoeWg9e30sYmg9cyxTaD0wLGU9ZChtLGgpOyRoOykkaD0hMSxTaD0wLGpoKz0xLHhoPW51bGwsZT1kKG0saCk7cmV0dXJuIEdjKCksZX1mdW5jdGlvbiBYYyhlLHMsZCxtKXt2YXIgaD1kLnJlbmRlcigpLGc9bS5jaGlsZENvbnRleHRUeXBlcztpZihudWxsIT1nKXt2YXIgeD1zLmxlZ2FjeUNvbnRleHQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KW09eDtlbHNle2Zvcih2YXIgJCBpbiBkPWQuZ2V0Q2hpbGRDb250ZXh0KCkpaWYoISgkIGluIGcpKXRocm93IEVycm9yKGsoMTA4LGpjKG0pfHwiVW5rbm93biIsJCkpO209VmYoe30seCxkKX1zLmxlZ2FjeUNvbnRleHQ9bSxaKGUscyxoKSxzLmxlZ2FjeUNvbnRleHQ9eH1lbHNlIFooZSxzLGgpfWZ1bmN0aW9uIFljKGUscyl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpe2Zvcih2YXIgZCBpbiBzPVZmKHt9LHMpLGU9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09c1tkXSYmKHNbZF09ZVtkXSk7cmV0dXJuIHN9cmV0dXJuIHN9ZnVuY3Rpb24gWmMoZSxzLGQsbSxoKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZClpZihkLnByb3RvdHlwZSYmZC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCl7aD1sYyhkLHMubGVnYWN5Q29udGV4dCk7dmFyIGc9ZC5jb250ZXh0VHlwZTtyYyhnPW5ldyBkKG0sIm9iamVjdCI9PXR5cGVvZiBnJiZudWxsIT09Zz9nLl9jdXJyZW50VmFsdWU6aCksZCxtLGgpLFhjKGUscyxnLGQpfWVsc2V7aD1XYyhlLHMsZCxtLGc9bGMoZCxzLmxlZ2FjeUNvbnRleHQpKTt2YXIgeD0wIT09U2g7aWYoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aCYmImZ1bmN0aW9uIj09dHlwZW9mIGgucmVuZGVyJiZ2b2lkIDA9PT1oLiQkdHlwZW9mKXJjKGgsZCxtLGcpLFhjKGUscyxoLGQpO2Vsc2UgaWYoeCl7bT1zLnRyZWVDb250ZXh0LHMudHJlZUNvbnRleHQ9dGMobSwxLDApO3RyeXtaKGUscyxoKX1maW5hbGx5e3MudHJlZUNvbnRleHQ9bX19ZWxzZSBaKGUscyxoKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgZCl7c3dpdGNoKGQpe2Nhc2Ugc2g6Y2FzZSBhaDpjYXNlIEtmOmNhc2UgR2Y6Y2FzZSBKZjpjYXNlIG5oOnJldHVybiB2b2lkIFooZSxzLG0uY2hpbGRyZW4pO2Nhc2Ugb2g6dGhyb3cgRXJyb3IoaygzNDMpKTtjYXNlIHRoOmU6e2Q9cy5ibG9ja2VkQm91bmRhcnksaD1zLmJsb2NrZWRTZWdtZW50LGc9bS5mYWxsYmFjayxtPW0uY2hpbGRyZW47dmFyICQ9e2lkOm51bGwscm9vdFNlZ21lbnRJRDotMSxwYXJlbnRGbHVzaGVkOiExLHBlbmRpbmdUYXNrczowLGZvcmNlQ2xpZW50UmVuZGVyOiExLGNvbXBsZXRlZFNlZ21lbnRzOltdLGJ5dGVTaXplOjAsZmFsbGJhY2tBYm9ydGFibGVUYXNrczp4PW5ldyBTZXQsZXJyb3JEaWdlc3Q6bnVsbH0sUz1TYygwLGguY2h1bmtzLmxlbmd0aCwkLGguZm9ybWF0Q29udGV4dCwhMSwhMSk7aC5jaGlsZHJlbi5wdXNoKFMpLGgubGFzdFB1c2hlZFRleHQ9ITE7dmFyIGo9U2MoMCwwLG51bGwsaC5mb3JtYXRDb250ZXh0LCExLCExKTtqLnBhcmVudEZsdXNoZWQ9ITAscy5ibG9ja2VkQm91bmRhcnk9JCxzLmJsb2NrZWRTZWdtZW50PWo7dHJ5e2lmKCRjKGUscyxtKSxqLmxhc3RQdXNoZWRUZXh0JiZqLnRleHRFbWJlZGRlZCYmai5jaHVua3MucHVzaChObSksai5zdGF0dXM9MSxhZCgkLGopLDA9PT0kLnBlbmRpbmdUYXNrcylicmVhayBlfWNhdGNoKHMpe2ouc3RhdHVzPTQsJC5mb3JjZUNsaWVudFJlbmRlcj0hMCwkLmVycm9yRGlnZXN0PVkoZSxzKX1maW5hbGx5e3MuYmxvY2tlZEJvdW5kYXJ5PWQscy5ibG9ja2VkU2VnbWVudD1ofXM9VGMoZSxnLGQsUyx4LHMubGVnYWN5Q29udGV4dCxzLmNvbnRleHQscy50cmVlQ29udGV4dCksZS5waW5nZWRUYXNrcy5wdXNoKHMpfXJldHVybn1pZigib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPT1kKXN3aXRjaChkLiQkdHlwZW9mKXtjYXNlIGVoOmlmKG09V2MoZSxzLGQucmVuZGVyLG0saCksMCE9PVNoKXtkPXMudHJlZUNvbnRleHQscy50cmVlQ29udGV4dD10YyhkLDEsMCk7dHJ5e1ooZSxzLG0pfWZpbmFsbHl7cy50cmVlQ29udGV4dD1kfX1lbHNlIFooZSxzLG0pO3JldHVybjtjYXNlIGloOnJldHVybiB2b2lkIFpjKGUscyxkPWQudHlwZSxtPVljKGQsbSksaCk7Y2FzZSBYZjppZihoPW0uY2hpbGRyZW4sZD1kLl9jb250ZXh0LG09bS52YWx1ZSxnPWQuX2N1cnJlbnRWYWx1ZSxkLl9jdXJyZW50VmFsdWU9bSxkaD1tPXtwYXJlbnQ6eD1kaCxkZXB0aDpudWxsPT09eD8wOnguZGVwdGgrMSxjb250ZXh0OmQscGFyZW50VmFsdWU6Zyx2YWx1ZTptfSxzLmNvbnRleHQ9bSxaKGUscyxoKSxudWxsPT09KGU9ZGgpKXRocm93IEVycm9yKGsoNDAzKSk7cmV0dXJuIG09ZS5wYXJlbnRWYWx1ZSxlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZT1tPT09bGg/ZS5jb250ZXh0Ll9kZWZhdWx0VmFsdWU6bSxlPWRoPWUucGFyZW50LHZvaWQocy5jb250ZXh0PWUpO2Nhc2UgWWY6cmV0dXJuIHZvaWQgWihlLHMsbT0obT1tLmNoaWxkcmVuKShkLl9jdXJyZW50VmFsdWUpKTtjYXNlIHJoOnJldHVybiB2b2lkIFpjKGUscyxkPShoPWQuX2luaXQpKGQuX3BheWxvYWQpLG09WWMoZCxtKSx2b2lkIDApfXRocm93IEVycm9yKGsoMTMwLG51bGw9PWQ/ZDp0eXBlb2YgZCwiIikpfXN3aXRjaChnPVNhKChoPXMuYmxvY2tlZFNlZ21lbnQpLmNodW5rcyxkLG0sZS5yZXNwb25zZVN0YXRlLGguZm9ybWF0Q29udGV4dCksaC5sYXN0UHVzaGVkVGV4dD0hMSx4PWguZm9ybWF0Q29udGV4dCxoLmZvcm1hdENvbnRleHQ9ZnVuY3Rpb24oZSxzLGQpe3N3aXRjaChzKXtjYXNlInNlbGVjdCI6cmV0dXJuIEQoMSxudWxsIT1kLnZhbHVlP2QudmFsdWU6ZC5kZWZhdWx0VmFsdWUpO2Nhc2Uic3ZnIjpyZXR1cm4gRCgyLG51bGwpO2Nhc2UibWF0aCI6cmV0dXJuIEQoMyxudWxsKTtjYXNlImZvcmVpZ25PYmplY3QiOnJldHVybiBEKDEsbnVsbCk7Y2FzZSJ0YWJsZSI6cmV0dXJuIEQoNCxudWxsKTtjYXNlInRoZWFkIjpjYXNlInRib2R5IjpjYXNlInRmb290IjpyZXR1cm4gRCg1LG51bGwpO2Nhc2UiY29sZ3JvdXAiOnJldHVybiBEKDcsbnVsbCk7Y2FzZSJ0ciI6cmV0dXJuIEQoNixudWxsKX1yZXR1cm4gNDw9ZS5pbnNlcnRpb25Nb2RlfHwwPT09ZS5pbnNlcnRpb25Nb2RlP0QoMSxudWxsKTplfSh4LGQsbSksJGMoZSxzLGcpLGguZm9ybWF0Q29udGV4dD14LGQpe2Nhc2UiYXJlYSI6Y2FzZSJiYXNlIjpjYXNlImJyIjpjYXNlImNvbCI6Y2FzZSJlbWJlZCI6Y2FzZSJociI6Y2FzZSJpbWciOmNhc2UiaW5wdXQiOmNhc2Uia2V5Z2VuIjpjYXNlImxpbmsiOmNhc2UibWV0YSI6Y2FzZSJwYXJhbSI6Y2FzZSJzb3VyY2UiOmNhc2UidHJhY2siOmNhc2Uid2JyIjpicmVhaztkZWZhdWx0OmguY2h1bmtzLnB1c2goR20sdShkKSxYbSl9aC5sYXN0UHVzaGVkVGV4dD0hMX19ZnVuY3Rpb24gWihlLHMsZCl7aWYocy5ub2RlPWQsIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgSGY6cmV0dXJuIHZvaWQgWmMoZSxzLGQudHlwZSxkLnByb3BzLGQucmVmKTtjYXNlIFdmOnRocm93IEVycm9yKGsoMjU3KSk7Y2FzZSByaDp2YXIgbT1kLl9pbml0O3JldHVybiB2b2lkIFooZSxzLGQ9bShkLl9wYXlsb2FkKSl9aWYoSW0oZCkpcmV0dXJuIHZvaWQgYmQoZSxzLGQpO2lmKG51bGw9PT1kfHwib2JqZWN0IiE9dHlwZW9mIGQ/bT1udWxsOm09ImZ1bmN0aW9uIj09dHlwZW9mKG09Y2gmJmRbY2hdfHxkWyJAQGl0ZXJhdG9yIl0pP206bnVsbCxtJiYobT1tLmNhbGwoZCkpKXtpZighKGQ9bS5uZXh0KCkpLmRvbmUpe3ZhciBoPVtdO2Rve2gucHVzaChkLnZhbHVlKSxkPW0ubmV4dCgpfXdoaWxlKCFkLmRvbmUpO2JkKGUscyxoKX1yZXR1cm59dGhyb3cgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCksRXJyb3IoaygzMSwiW29iamVjdCBPYmplY3RdIj09PWU/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZCkuam9pbigiLCAiKSsifSI6ZSkpfSJzdHJpbmciPT10eXBlb2YgZD8obT1zLmJsb2NrZWRTZWdtZW50KS5sYXN0UHVzaGVkVGV4dD1EYShzLmJsb2NrZWRTZWdtZW50LmNodW5rcyxkLGUucmVzcG9uc2VTdGF0ZSxtLmxhc3RQdXNoZWRUZXh0KToibnVtYmVyIj09dHlwZW9mIGQmJigobT1zLmJsb2NrZWRTZWdtZW50KS5sYXN0UHVzaGVkVGV4dD1EYShzLmJsb2NrZWRTZWdtZW50LmNodW5rcywiIitkLGUucmVzcG9uc2VTdGF0ZSxtLmxhc3RQdXNoZWRUZXh0KSl9ZnVuY3Rpb24gYmQoZSxzLGQpe2Zvcih2YXIgbT1kLmxlbmd0aCxoPTA7aDxtO2grKyl7dmFyIGc9cy50cmVlQ29udGV4dDtzLnRyZWVDb250ZXh0PXRjKGcsbSxoKTt0cnl7JGMoZSxzLGRbaF0pfWZpbmFsbHl7cy50cmVlQ29udGV4dD1nfX19ZnVuY3Rpb24gJGMoZSxzLGQpe3ZhciBtPXMuYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dCxoPXMubGVnYWN5Q29udGV4dCxnPXMuY29udGV4dDt0cnl7cmV0dXJuIFooZSxzLGQpfWNhdGNoKFMpe2lmKEdjKCksIm9iamVjdCIhPXR5cGVvZiBTfHxudWxsPT09U3x8ImZ1bmN0aW9uIiE9dHlwZW9mIFMudGhlbil0aHJvdyBzLmJsb2NrZWRTZWdtZW50LmZvcm1hdENvbnRleHQ9bSxzLmxlZ2FjeUNvbnRleHQ9aCxzLmNvbnRleHQ9ZyxRKGcpLFM7ZD1TO3ZhciB4PXMuYmxvY2tlZFNlZ21lbnQsJD1TYygwLHguY2h1bmtzLmxlbmd0aCxudWxsLHguZm9ybWF0Q29udGV4dCx4Lmxhc3RQdXNoZWRUZXh0LCEwKTt4LmNoaWxkcmVuLnB1c2goJCkseC5sYXN0UHVzaGVkVGV4dD0hMSxlPVRjKGUscy5ub2RlLHMuYmxvY2tlZEJvdW5kYXJ5LCQscy5hYm9ydFNldCxzLmxlZ2FjeUNvbnRleHQscy5jb250ZXh0LHMudHJlZUNvbnRleHQpLnBpbmcsZC50aGVuKGUsZSkscy5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0PW0scy5sZWdhY3lDb250ZXh0PWgscy5jb250ZXh0PWcsUShnKX19ZnVuY3Rpb24gY2QoZSl7dmFyIHM9ZS5ibG9ja2VkQm91bmRhcnk7KGU9ZS5ibG9ja2VkU2VnbWVudCkuc3RhdHVzPTMsZGQodGhpcyxzLGUpfWZ1bmN0aW9uIGVkKGUscyxkKXt2YXIgbT1lLmJsb2NrZWRCb3VuZGFyeTtlLmJsb2NrZWRTZWdtZW50LnN0YXR1cz0zLG51bGw9PT1tPyhzLmFsbFBlbmRpbmdUYXNrcy0tLDIhPT1zLnN0YXR1cyYmKHMuc3RhdHVzPTIsbnVsbCE9PXMuZGVzdGluYXRpb24mJnMuZGVzdGluYXRpb24uY2xvc2UoKSkpOihtLnBlbmRpbmdUYXNrcy0tLG0uZm9yY2VDbGllbnRSZW5kZXJ8fChtLmZvcmNlQ2xpZW50UmVuZGVyPSEwLGU9dm9pZCAwPT09ZD9FcnJvcihrKDQzMikpOmQsbS5lcnJvckRpZ2VzdD1zLm9uRXJyb3IoZSksbS5wYXJlbnRGbHVzaGVkJiZzLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKG0pKSxtLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZWQoZSxzLGQpfSksbS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCkscy5hbGxQZW5kaW5nVGFza3MtLSwwPT09cy5hbGxQZW5kaW5nVGFza3MmJihtPXMub25BbGxSZWFkeSkoKSl9ZnVuY3Rpb24gYWQoZSxzKXtpZigwPT09cy5jaHVua3MubGVuZ3RoJiYxPT09cy5jaGlsZHJlbi5sZW5ndGgmJm51bGw9PT1zLmNoaWxkcmVuWzBdLmJvdW5kYXJ5KXt2YXIgZD1zLmNoaWxkcmVuWzBdO2QuaWQ9cy5pZCxkLnBhcmVudEZsdXNoZWQ9ITAsMT09PWQuc3RhdHVzJiZhZChlLGQpfWVsc2UgZS5jb21wbGV0ZWRTZWdtZW50cy5wdXNoKHMpfWZ1bmN0aW9uIGRkKGUscyxkKXtpZihudWxsPT09cyl7aWYoZC5wYXJlbnRGbHVzaGVkKXtpZihudWxsIT09ZS5jb21wbGV0ZWRSb290U2VnbWVudCl0aHJvdyBFcnJvcihrKDM4OSkpO2UuY29tcGxldGVkUm9vdFNlZ21lbnQ9ZH1lLnBlbmRpbmdSb290VGFza3MtLSwwPT09ZS5wZW5kaW5nUm9vdFRhc2tzJiYoZS5vblNoZWxsRXJyb3I9WCwocz1lLm9uU2hlbGxSZWFkeSkoKSl9ZWxzZSBzLnBlbmRpbmdUYXNrcy0tLHMuZm9yY2VDbGllbnRSZW5kZXJ8fCgwPT09cy5wZW5kaW5nVGFza3M/KGQucGFyZW50Rmx1c2hlZCYmMT09PWQuc3RhdHVzJiZhZChzLGQpLHMucGFyZW50Rmx1c2hlZCYmZS5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2gocykscy5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goY2QsZSkscy5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCkpOmQucGFyZW50Rmx1c2hlZCYmMT09PWQuc3RhdHVzJiYoYWQocyxkKSwxPT09cy5jb21wbGV0ZWRTZWdtZW50cy5sZW5ndGgmJnMucGFyZW50Rmx1c2hlZCYmZS5wYXJ0aWFsQm91bmRhcmllcy5wdXNoKHMpKSk7ZS5hbGxQZW5kaW5nVGFza3MtLSwwPT09ZS5hbGxQZW5kaW5nVGFza3MmJihlPWUub25BbGxSZWFkeSkoKX1mdW5jdGlvbiBVYyhlKXtpZigyIT09ZS5zdGF0dXMpe3ZhciBzPWRoLGQ9UmguY3VycmVudDtSaC5jdXJyZW50PUNoO3ZhciBtPVRoO1RoPWUucmVzcG9uc2VTdGF0ZTt0cnl7dmFyIGgsZz1lLnBpbmdlZFRhc2tzO2ZvcihoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB4PWdbaF0sJD1lLFM9eC5ibG9ja2VkU2VnbWVudDtpZigwPT09Uy5zdGF0dXMpe1EoeC5jb250ZXh0KTt0cnl7WigkLHgseC5ub2RlKSxTLmxhc3RQdXNoZWRUZXh0JiZTLnRleHRFbWJlZGRlZCYmUy5jaHVua3MucHVzaChObSkseC5hYm9ydFNldC5kZWxldGUoeCksUy5zdGF0dXM9MSxkZCgkLHguYmxvY2tlZEJvdW5kYXJ5LFMpfWNhdGNoKGUpe2lmKEdjKCksIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudGhlbil7dmFyIGo9eC5waW5nO2UudGhlbihqLGopfWVsc2V7eC5hYm9ydFNldC5kZWxldGUoeCksUy5zdGF0dXM9NDt2YXIgej14LmJsb2NrZWRCb3VuZGFyeSxJPWUsVD1ZKCQsSSk7aWYobnVsbD09PXo/VmMoJCxJKTooei5wZW5kaW5nVGFza3MtLSx6LmZvcmNlQ2xpZW50UmVuZGVyfHwoei5mb3JjZUNsaWVudFJlbmRlcj0hMCx6LmVycm9yRGlnZXN0PVQsei5wYXJlbnRGbHVzaGVkJiYkLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKHopKSksJC5hbGxQZW5kaW5nVGFza3MtLSwwPT09JC5hbGxQZW5kaW5nVGFza3MpKDAsJC5vbkFsbFJlYWR5KSgpfX19fWcuc3BsaWNlKDAsaCksbnVsbCE9PWUuZGVzdGluYXRpb24mJmZkKGUsZS5kZXN0aW5hdGlvbil9Y2F0Y2gocyl7WShlLHMpLFZjKGUscyl9ZmluYWxseXtUaD1tLFJoLmN1cnJlbnQ9ZCxkPT09Q2gmJlEocyl9fX1mdW5jdGlvbiBnZChlLHMsZCl7c3dpdGNoKGQucGFyZW50Rmx1c2hlZD0hMCxkLnN0YXR1cyl7Y2FzZSAwOnZhciBtPWQuaWQ9ZS5uZXh0U2VnbWVudElkKys7cmV0dXJuIGQubGFzdFB1c2hlZFRleHQ9ITEsZC50ZXh0RW1iZWRkZWQ9ITEsZT1lLnJlc3BvbnNlU3RhdGUscChzLFltKSxwKHMsZS5wbGFjZWhvbGRlclByZWZpeCkscChzLGU9dShtLnRvU3RyaW5nKDE2KSkpLHQocyxlZik7Y2FzZSAxOmQuc3RhdHVzPTI7dmFyIGg9ITA7bT1kLmNodW5rczt2YXIgZz0wO2Q9ZC5jaGlsZHJlbjtmb3IodmFyIHg9MDt4PGQubGVuZ3RoO3grKyl7Zm9yKGg9ZFt4XTtnPGguaW5kZXg7ZysrKXAocyxtW2ddKTtoPWhkKGUscyxoKX1mb3IoO2c8bS5sZW5ndGgtMTtnKyspcChzLG1bZ10pO3JldHVybiBnPG0ubGVuZ3RoJiYoaD10KHMsbVtnXSkpLGg7ZGVmYXVsdDp0aHJvdyBFcnJvcihrKDM5MCkpfX1mdW5jdGlvbiBoZChlLHMsZCl7dmFyIG09ZC5ib3VuZGFyeTtpZihudWxsPT09bSlyZXR1cm4gZ2QoZSxzLGQpO2lmKG0ucGFyZW50Rmx1c2hlZD0hMCxtLmZvcmNlQ2xpZW50UmVuZGVyKW09bS5lcnJvckRpZ2VzdCx0KHMsb2YpLHAocyxzZiksbSYmKHAocyxjZikscChzLHUoQyhtKSkpLHAocyxsZikpLHQocyx1ZiksZ2QoZSxzLGQpO2Vsc2UgaWYoMDxtLnBlbmRpbmdUYXNrcyl7bS5yb290U2VnbWVudElEPWUubmV4dFNlZ21lbnRJZCsrLDA8bS5jb21wbGV0ZWRTZWdtZW50cy5sZW5ndGgmJmUucGFydGlhbEJvdW5kYXJpZXMucHVzaChtKTt2YXIgaD1lLnJlc3BvbnNlU3RhdGUsZz1oLm5leHRTdXNwZW5zZUlEKys7aD13KGguYm91bmRhcnlQcmVmaXgrZy50b1N0cmluZygxNikpLG09bS5pZD1oLGZiKHMsZS5yZXNwb25zZVN0YXRlLG0pLGdkKGUscyxkKX1lbHNlIGlmKG0uYnl0ZVNpemU+ZS5wcm9ncmVzc2l2ZUNodW5rU2l6ZSltLnJvb3RTZWdtZW50SUQ9ZS5uZXh0U2VnbWVudElkKyssZS5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2gobSksZmIocyxlLnJlc3BvbnNlU3RhdGUsbS5pZCksZ2QoZSxzLGQpO2Vsc2V7aWYodChzLHRmKSwxIT09KGQ9bS5jb21wbGV0ZWRTZWdtZW50cykubGVuZ3RoKXRocm93IEVycm9yKGsoMzkxKSk7aGQoZSxzLGRbMF0pfXJldHVybiB0KHMsYWYpfWZ1bmN0aW9uIGlkKGUscyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxzLGQsbSl7c3dpdGNoKGQuaW5zZXJ0aW9uTW9kZSl7Y2FzZSAwOmNhc2UgMTpyZXR1cm4gcChlLGRmKSxwKGUscy5zZWdtZW50UHJlZml4KSxwKGUsdShtLnRvU3RyaW5nKDE2KSkpLHQoZSxwZik7Y2FzZSAyOnJldHVybiBwKGUsZmYpLHAoZSxzLnNlZ21lbnRQcmVmaXgpLHAoZSx1KG0udG9TdHJpbmcoMTYpKSksdChlLGhmKTtjYXNlIDM6cmV0dXJuIHAoZSx2ZikscChlLHMuc2VnbWVudFByZWZpeCkscChlLHUobS50b1N0cmluZygxNikpKSx0KGUseWYpO2Nhc2UgNDpyZXR1cm4gcChlLF9mKSxwKGUscy5zZWdtZW50UHJlZml4KSxwKGUsdShtLnRvU3RyaW5nKDE2KSkpLHQoZSx4Zik7Y2FzZSA1OnJldHVybiBwKGUsJGYpLHAoZSxzLnNlZ21lbnRQcmVmaXgpLHAoZSx1KG0udG9TdHJpbmcoMTYpKSksdChlLFNmKTtjYXNlIDY6cmV0dXJuIHAoZSxqZikscChlLHMuc2VnbWVudFByZWZpeCkscChlLHUobS50b1N0cmluZygxNikpKSx0KGUsemYpO2Nhc2UgNzpyZXR1cm4gcChlLENmKSxwKGUscy5zZWdtZW50UHJlZml4KSxwKGUsdShtLnRvU3RyaW5nKDE2KSkpLHQoZSxUZik7ZGVmYXVsdDp0aHJvdyBFcnJvcihrKDM5NykpfX0ocyxlLnJlc3BvbnNlU3RhdGUsZC5mb3JtYXRDb250ZXh0LGQuaWQpLGhkKGUscyxkKSxmdW5jdGlvbihlLHMpe3N3aXRjaChzLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIHQoZSxtZik7Y2FzZSAyOnJldHVybiB0KGUsZ2YpO2Nhc2UgMzpyZXR1cm4gdChlLGJmKTtjYXNlIDQ6cmV0dXJuIHQoZSx3Zik7Y2FzZSA1OnJldHVybiB0KGUsa2YpO2Nhc2UgNjpyZXR1cm4gdChlLElmKTtjYXNlIDc6cmV0dXJuIHQoZSxSZik7ZGVmYXVsdDp0aHJvdyBFcnJvcihrKDM5NykpfX0ocyxkLmZvcm1hdENvbnRleHQpfWZ1bmN0aW9uIGpkKGUscyxkKXtmb3IodmFyIG09ZC5jb21wbGV0ZWRTZWdtZW50cyxoPTA7aDxtLmxlbmd0aDtoKyspa2QoZSxzLGQsbVtoXSk7aWYobS5sZW5ndGg9MCxlPWUucmVzcG9uc2VTdGF0ZSxtPWQuaWQsZD1kLnJvb3RTZWdtZW50SUQscChzLGUuc3RhcnRJbmxpbmVTY3JpcHQpLGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj9wKHMsVWYpOihlLnNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb249ITAscChzLERmKSksbnVsbD09PW0pdGhyb3cgRXJyb3IoaygzOTUpKTtyZXR1cm4gZD11KGQudG9TdHJpbmcoMTYpKSxwKHMsbSkscChzLExmKSxwKHMsZS5zZWdtZW50UHJlZml4KSxwKHMsZCksdChzLEFmKX1mdW5jdGlvbiBrZChlLHMsZCxtKXtpZigyPT09bS5zdGF0dXMpcmV0dXJuITA7dmFyIGg9bS5pZDtpZigtMT09PWgpe2lmKC0xPT09KG0uaWQ9ZC5yb290U2VnbWVudElEKSl0aHJvdyBFcnJvcihrKDM5MikpO3JldHVybiBpZChlLHMsbSl9cmV0dXJuIGlkKGUscyxtKSxwKHMsKGU9ZS5yZXNwb25zZVN0YXRlKS5zdGFydElubGluZVNjcmlwdCksZS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb24/cChzLE9mKTooZS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb249ITAscChzLEVmKSkscChzLGUuc2VnbWVudFByZWZpeCkscChzLGg9dShoLnRvU3RyaW5nKDE2KSkpLHAocyxQZikscChzLGUucGxhY2Vob2xkZXJQcmVmaXgpLHAocyxoKSx0KHMsTmYpfWZ1bmN0aW9uIGZkKGUscyl7bW09bmV3IFVpbnQ4QXJyYXkoNTEyKSxmbT0wO3RyeXt2YXIgZD1lLmNvbXBsZXRlZFJvb3RTZWdtZW50O2lmKG51bGwhPT1kJiYwPT09ZS5wZW5kaW5nUm9vdFRhc2tzKXtoZChlLHMsZCksZS5jb21wbGV0ZWRSb290U2VnbWVudD1udWxsO3ZhciBtPWUucmVzcG9uc2VTdGF0ZS5ib290c3RyYXBDaHVua3M7Zm9yKGQ9MDtkPG0ubGVuZ3RoLTE7ZCsrKXAocyxtW2RdKTtkPG0ubGVuZ3RoJiZ0KHMsbVtkXSl9dmFyIGgsZz1lLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcztmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgeD1nW2hdO209czt2YXIgJD1lLnJlc3BvbnNlU3RhdGUsUz14LmlkLGo9eC5lcnJvckRpZ2VzdCx6PXguZXJyb3JNZXNzYWdlLEk9eC5lcnJvckNvbXBvbmVudFN0YWNrO2lmKHAobSwkLnN0YXJ0SW5saW5lU2NyaXB0KSwkLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj9wKG0sRmYpOigkLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj0hMCxwKG0scWYpKSxudWxsPT09Uyl0aHJvdyBFcnJvcihrKDM5NSkpO3AobSxTKSxwKG0sQmYpLChqfHx6fHxJKSYmKHAobSxNZikscChtLHUoU2Ioanx8IiIpKSkpLCh6fHxJKSYmKHAobSxNZikscChtLHUoU2Ioenx8IiIpKSkpLEkmJihwKG0sTWYpLHAobSx1KFNiKEkpKSkpLHQobSxaZil9Zy5zcGxpY2UoMCxoKTt2YXIgVD1lLmNvbXBsZXRlZEJvdW5kYXJpZXM7Zm9yKGg9MDtoPFQubGVuZ3RoO2grKylqZChlLHMsVFtoXSk7VC5zcGxpY2UoMCxoKSxiYShzKSxtbT1uZXcgVWludDhBcnJheSg1MTIpLGZtPTA7dmFyIFI9ZS5wYXJ0aWFsQm91bmRhcmllcztmb3IoaD0wO2g8Ui5sZW5ndGg7aCsrKXt2YXIgRT1SW2hdO2U6e2c9ZSx4PXM7dmFyIE89RS5jb21wbGV0ZWRTZWdtZW50cztmb3IoJD0wOyQ8Ty5sZW5ndGg7JCsrKWlmKCFrZChnLHgsRSxPWyRdKSl7JCsrLE8uc3BsaWNlKDAsJCk7dmFyIE49ITE7YnJlYWsgZX1PLnNwbGljZSgwLCQpLE49ITB9aWYoIU4pcmV0dXJuIGUuZGVzdGluYXRpb249bnVsbCxoKyssdm9pZCBSLnNwbGljZSgwLGgpfVIuc3BsaWNlKDAsaCk7dmFyIFU9ZS5jb21wbGV0ZWRCb3VuZGFyaWVzO2ZvcihoPTA7aDxVLmxlbmd0aDtoKyspamQoZSxzLFVbaF0pO1Uuc3BsaWNlKDAsaCl9ZmluYWxseXtiYShzKSwwPT09ZS5hbGxQZW5kaW5nVGFza3MmJjA9PT1lLnBpbmdlZFRhc2tzLmxlbmd0aCYmMD09PWUuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLmxlbmd0aCYmMD09PWUuY29tcGxldGVkQm91bmRhcmllcy5sZW5ndGgmJnMuY2xvc2UoKX19ZnVuY3Rpb24gbGQoZSxzKXt0cnl7dmFyIGQ9ZS5hYm9ydGFibGVUYXNrcztkLmZvckVhY2goZnVuY3Rpb24oZCl7cmV0dXJuIGVkKGQsZSxzKX0pLGQuY2xlYXIoKSxudWxsIT09ZS5kZXN0aW5hdGlvbiYmZmQoZSxlLmRlc3RpbmF0aW9uKX1jYXRjaChzKXtZKGUscyksVmMoZSxzKX19ZG0ucmVuZGVyVG9SZWFkYWJsZVN0cmVhbT1mdW5jdGlvbihlLHMpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLG0pe3ZhciBoLGcseD1uZXcgUHJvbWlzZShmdW5jdGlvbihlLHMpe2c9ZSxoPXN9KSwkPWZ1bmN0aW9uKGUscyxkLG0saCxnLHgsJCxTKXt2YXIgaj1bXSx6PW5ldyBTZXQ7cmV0dXJuKGQ9U2Mocz17ZGVzdGluYXRpb246bnVsbCxyZXNwb25zZVN0YXRlOnMscHJvZ3Jlc3NpdmVDaHVua1NpemU6dm9pZCAwPT09bT8xMjgwMDptLHN0YXR1czowLGZhdGFsRXJyb3I6bnVsbCxuZXh0U2VnbWVudElkOjAsYWxsUGVuZGluZ1Rhc2tzOjAscGVuZGluZ1Jvb3RUYXNrczowLGNvbXBsZXRlZFJvb3RTZWdtZW50Om51bGwsYWJvcnRhYmxlVGFza3M6eixwaW5nZWRUYXNrczpqLGNsaWVudFJlbmRlcmVkQm91bmRhcmllczpbXSxjb21wbGV0ZWRCb3VuZGFyaWVzOltdLHBhcnRpYWxCb3VuZGFyaWVzOltdLG9uRXJyb3I6dm9pZCAwPT09aD9RYzpoLG9uQWxsUmVhZHk6dm9pZCAwPT09Zz9YOmcsb25TaGVsbFJlYWR5OnZvaWQgMD09PXg/WDp4LG9uU2hlbGxFcnJvcjp2b2lkIDA9PT0kP1g6JCxvbkZhdGFsRXJyb3I6dm9pZCAwPT09Uz9YOlN9LDAsbnVsbCxkLCExLCExKSkucGFyZW50Rmx1c2hlZD0hMCxlPVRjKHMsZSxudWxsLGQseix1aCxudWxsLG1oKSxqLnB1c2goZSksc30oZSxmdW5jdGlvbihlLHMsZCxtLGgpe2U9dm9pZCAwPT09ZT8iIjplLHM9dm9pZCAwPT09cz9DbTp3KCc8c2NyaXB0IG5vbmNlPSInK0MocykrJyI+Jyk7dmFyIGc9W107aWYodm9pZCAwIT09ZCYmZy5wdXNoKHMsdSgoIiIrZCkucmVwbGFjZShQbSx5YSkpLFRtKSx2b2lkIDAhPT1tKWZvcihkPTA7ZDxtLmxlbmd0aDtkKyspZy5wdXNoKFJtLHUoQyhtW2RdKSksT20pO2lmKHZvaWQgMCE9PWgpZm9yKG09MDttPGgubGVuZ3RoO20rKylnLnB1c2goRW0sdShDKGhbbV0pKSxPbSk7cmV0dXJue2Jvb3RzdHJhcENodW5rczpnLHN0YXJ0SW5saW5lU2NyaXB0OnMscGxhY2Vob2xkZXJQcmVmaXg6dyhlKyJQOiIpLHNlZ21lbnRQcmVmaXg6dyhlKyJTOiIpLGJvdW5kYXJ5UHJlZml4OmUrIkI6IixpZFByZWZpeDplLG5leHRTdXNwZW5zZUlEOjAsc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uOiExLHNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb246ITEsc2VudENsaWVudFJlbmRlckZ1bmN0aW9uOiExfX0ocz9zLmlkZW50aWZpZXJQcmVmaXg6dm9pZCAwLHM/cy5ub25jZTp2b2lkIDAscz9zLmJvb3RzdHJhcFNjcmlwdENvbnRlbnQ6dm9pZCAwLHM/cy5ib290c3RyYXBTY3JpcHRzOnZvaWQgMCxzP3MuYm9vdHN0cmFwTW9kdWxlczp2b2lkIDApLGZ1bmN0aW9uKGUpe3JldHVybiBEKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI9PT1lPzI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiPT09ZT8zOjAsbnVsbCl9KHM/cy5uYW1lc3BhY2VVUkk6dm9pZCAwKSxzP3MucHJvZ3Jlc3NpdmVDaHVua1NpemU6dm9pZCAwLHM/cy5vbkVycm9yOnZvaWQgMCxnLGZ1bmN0aW9uKCl7dmFyIGU9bmV3IFJlYWRhYmxlU3RyZWFtKHt0eXBlOiJieXRlcyIscHVsbDpmdW5jdGlvbihlKXtpZigxPT09JC5zdGF0dXMpJC5zdGF0dXM9MixkYShlLCQuZmF0YWxFcnJvcik7ZWxzZSBpZigyIT09JC5zdGF0dXMmJm51bGw9PT0kLmRlc3RpbmF0aW9uKXskLmRlc3RpbmF0aW9uPWU7dHJ5e2ZkKCQsZSl9Y2F0Y2goZSl7WSgkLGUpLFZjKCQsZSl9fX0sY2FuY2VsOmZ1bmN0aW9uKCl7bGQoJCl9fSx7aGlnaFdhdGVyTWFyazowfSk7ZS5hbGxSZWFkeT14LGQoZSl9LGZ1bmN0aW9uKGUpe3guY2F0Y2goZnVuY3Rpb24oKXt9KSxtKGUpfSxoKTtpZihzJiZzLnNpZ25hbCl7dmFyIFM9cy5zaWduYWwscT1mdW5jdGlvbigpe2xkKCQsUy5yZWFzb24pLFMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHEpfTtTLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixxKX1VYygkKX0pfSxkbS52ZXJzaW9uPSIxOC4yLjAiLHpoPURkLEloPWRtO3ZhciBFaD1OZC52ZXJzaW9uPXpoLnZlcnNpb24sT2g9TmQucmVuZGVyVG9TdHJpbmc9emgucmVuZGVyVG9TdHJpbmcsUGg9TmQucmVuZGVyVG9TdGF0aWNNYXJrdXA9emgucmVuZGVyVG9TdGF0aWNNYXJrdXAsTmg9TmQucmVuZGVyVG9Ob2RlU3RyZWFtPXpoLnJlbmRlclRvTm9kZVN0cmVhbSxEaD1OZC5yZW5kZXJUb1N0YXRpY05vZGVTdHJlYW09emgucmVuZGVyVG9TdGF0aWNOb2RlU3RyZWFtLFVoPU5kLnJlbmRlclRvUmVhZGFibGVTdHJlYW09SWgucmVuZGVyVG9SZWFkYWJsZVN0cmVhbTtjb25zdCBMaD1fbWVyZ2VOYW1lc3BhY2VzKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0Ok5kLHJlbmRlclRvTm9kZVN0cmVhbTpOaCxyZW5kZXJUb1JlYWRhYmxlU3RyZWFtOlVoLHJlbmRlclRvU3RhdGljTWFya3VwOlBoLHJlbmRlclRvU3RhdGljTm9kZVN0cmVhbTpEaCxyZW5kZXJUb1N0cmluZzpPaCx2ZXJzaW9uOkVofSxbTmRdKTt2YXIgX19hc3luYyQxPShlLHMsZCk9Pm5ldyBQcm9taXNlKChtLGgpPT57dmFyIGZ1bGZpbGxlZD1lPT57dHJ5e3N0ZXAoZC5uZXh0KGUpKX1jYXRjaChlKXtoKGUpfX0scmVqZWN0ZWQ9ZT0+e3RyeXtzdGVwKGQudGhyb3coZSkpfWNhdGNoKGUpe2goZSl9fSxzdGVwPWU9PmUuZG9uZT9tKGUudmFsdWUpOlByb21pc2UucmVzb2x2ZShlLnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCk7c3RlcCgoZD1kLmFwcGx5KGUscykpLm5leHQoKSl9KSxyZW5kZXJBc3luYz0oZSxzKT0+X19hc3luYyQxKHZvaWQgMCxudWxsLGZ1bmN0aW9uKigpe2NvbnN0IHM9KHlpZWxkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gTGh9KSkuZGVmYXVsdCxkPXMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbXx8cy5yZW5kZXJUb1N0cmluZ3x8cy5yZW5kZXJUb1BpcGVhYmxlU3RyZWFtLG09eWllbGQgZChlKSxoPSJzdHJpbmciPT10eXBlb2YgbT9tOnlpZWxkKGU9Pl9fYXN5bmMkMSh2b2lkIDAsbnVsbCxmdW5jdGlvbiooKXtjb25zdCBzPWUuZ2V0UmVhZGVyKCksZD1bXTtmb3IoOzspe2NvbnN0e3ZhbHVlOmUsZG9uZTptfT15aWVsZCBzLnJlYWQoKTtpZihtKWJyZWFrO2QucHVzaChlKX1yZXR1cm4gZC5tYXAoZT0+bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpLmRlY29kZShlKSkuam9pbigiIil9KSkobSk7cmV0dXJuYDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4ke2h9YH0pLEFoPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxxaD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLEZoPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQmg9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxfX2RlZk5vcm1hbFByb3A9KGUscyxkKT0+cyBpbiBlP0FoKGUscyx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pOmVbc109ZCxfX3NwcmVhZFZhbHVlcz0oZSxzKT0+e2Zvcih2YXIgZCBpbiBzfHwocz17fSkpRmguY2FsbChzLGQpJiZfX2RlZk5vcm1hbFByb3AoZSxkLHNbZF0pO2lmKHFoKWZvcih2YXIgZCBvZiBxaChzKSlCaC5jYWxsKHMsZCkmJl9fZGVmTm9ybWFsUHJvcChlLGQsc1tkXSk7cmV0dXJuIGV9LF9fYXN5bmM9KGUscyxkKT0+bmV3IFByb21pc2UoKG0saCk9Pnt2YXIgZnVsZmlsbGVkPWU9Pnt0cnl7c3RlcChkLm5leHQoZSkpfWNhdGNoKGUpe2goZSl9fSxyZWplY3RlZD1lPT57dHJ5e3N0ZXAoZC50aHJvdyhlKSl9Y2F0Y2goZSl7aChlKX19LHN0ZXA9ZT0+ZS5kb25lP20oZS52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGUudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKTtzdGVwKChkPWQuYXBwbHkoZSxzKSkubmV4dCgpKX0pLFpoPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMucmVzZW5kPWV9Y3JlYXRlKGUpe3JldHVybiBfX2FzeW5jKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKihlLHM9e30pe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5wb3N0KCIvYXBpLWtleXMiLGUscyl9KX1saXN0KCl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5nZXQoIi9hcGkta2V5cyIpfSl9cmVtb3ZlKGUpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZGVsZXRlKGAvYXBpLWtleXMvJHtlfWApfSl9fSxNaD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLnJlc2VuZD1lfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQucG9zdCgiL2F1ZGllbmNlcyIsZSxzKX0pfWxpc3QoKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmdldCgiL2F1ZGllbmNlcyIpfSl9Z2V0KGUpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KGAvYXVkaWVuY2VzLyR7ZX1gKX0pfXJlbW92ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmRlbGV0ZShgL2F1ZGllbmNlcy8ke2V9YCl9KX19LFFoPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMucmVzZW5kPWV9c2VuZChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4gdGhpcy5jcmVhdGUoZSxzKX0pfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtmb3IoY29uc3QgcyBvZiBlKXMucmVhY3QmJihzLmh0bWw9eWllbGQgcmVuZGVyQXN5bmMocy5yZWFjdCksZGVsZXRlIHMucmVhY3QpO3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5wb3N0KCIvZW1haWxzL2JhdGNoIixlLHMpfSl9fSxWaD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLnJlc2VuZD1lfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQucG9zdChgL2F1ZGllbmNlcy8ke2UuYXVkaWVuY2VfaWR9L2NvbnRhY3RzYCxlLHMpfSl9bGlzdChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooe2F1ZGllbmNlX2lkOmV9KXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KGAvYXVkaWVuY2VzLyR7ZX0vY29udGFjdHNgKX0pfWdldChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooe2F1ZGllbmNlX2lkOmUsaWQ6c30pe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5nZXQoYC9hdWRpZW5jZXMvJHtlfS9jb250YWN0cy8ke3N9YCl9KX11cGRhdGUoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5wYXRjaChgL2F1ZGllbmNlcy8ke2UuYXVkaWVuY2VfaWR9L2NvbnRhY3RzLyR7ZS5pZH1gLGUpfSl9cmVtb3ZlKGUpe3JldHVybiBfX2FzeW5jKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKih7YXVkaWVuY2VfaWQ6ZSxpZDpzfSl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmRlbGV0ZShgL2F1ZGllbmNlcy8ke2V9L2NvbnRhY3RzLyR7c31gKX0pfX0sSGg9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5yZXNlbmQ9ZX1jcmVhdGUoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxhcmd1bWVudHMsZnVuY3Rpb24qKGUscz17fSl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLnBvc3QoIi9kb21haW5zIixlLHMpfSl9bGlzdCgpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KCIvZG9tYWlucyIpfSl9Z2V0KGUpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KGAvZG9tYWlucy8ke2V9YCl9KX1yZW1vdmUoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5kZWxldGUoYC9kb21haW5zLyR7ZX1gKX0pfXZlcmlmeShlKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLnBvc3QoYC9kb21haW5zLyR7ZX0vdmVyaWZ5YCl9KX19LFdoPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMucmVzZW5kPWV9c2VuZChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4gdGhpcy5jcmVhdGUoZSxzKX0pfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtlLnJlYWN0JiYoZS5odG1sPXlpZWxkIHJlbmRlckFzeW5jKGUucmVhY3QpLGRlbGV0ZSBlLnJlYWN0KTtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQucG9zdCgiL2VtYWlscyIsZSxzKX0pfWdldChlKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmdldChgL2VtYWlscy8ke2V9YCl9KX19LEpoPSJodHRwczovL2FwaS5yZXNlbmQuY29tIixLaD0icmVzZW5kLW5vZGU6Mi4xLjAiLEdoPXZvaWQgMCE9PVQmJlQuZW52JiZULmVudi5SRVNFTkRfQkFTRV9VUkx8fEpoLFhoPXZvaWQgMCE9PVQmJlQuZW52JiZULmVudi5SRVNFTkRfVVNFUl9BR0VOVHx8S2gsWWg9Y2xhc3N7Y29uc3RydWN0b3IoZSl7aWYodGhpcy5rZXk9ZSx0aGlzLmFwaUtleXM9bmV3IFpoKHRoaXMpLHRoaXMuYXVkaWVuY2VzPW5ldyBNaCh0aGlzKSx0aGlzLmJhdGNoPW5ldyBRaCh0aGlzKSx0aGlzLmNvbnRhY3RzPW5ldyBWaCh0aGlzKSx0aGlzLmRvbWFpbnM9bmV3IEhoKHRoaXMpLHRoaXMuZW1haWxzPW5ldyBXaCh0aGlzKSwhZSYmKHZvaWQgMCE9PVQmJlQuZW52JiYodGhpcy5rZXk9VC5lbnYuUkVTRU5EX0FQSV9LRVkpLCF0aGlzLmtleSkpdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEFQSSBrZXkuIFBhc3MgaXQgdG8gdGhlIGNvbnN0cnVjdG9yIGBuZXcgUmVzZW5kKCJyZV8xMjMiKWAnKTt0aGlzLmhlYWRlcnM9bmV3IEhlYWRlcnMoe0F1dGhvcml6YXRpb246YEJlYXJlciAke3RoaXMua2V5fWAsIlVzZXItQWdlbnQiOlhoLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0pfWZldGNoUmVxdWVzdChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtjb25zdCBkPXlpZWxkIGZldGNoKGAke0dofSR7ZX1gLHMpO2lmKCFkLm9rKXtjb25zdCBlPXlpZWxkIGQuanNvbigpO3JldHVybihlPT57aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4hMTtjb25zdCBzPWU7aWYoIm9iamVjdCIhPXR5cGVvZiBzfHxudWxsPT09cylyZXR1cm4hMTtjb25zdHttZXNzYWdlOmQsbmFtZTptfT1zfSkoZSkse2RhdGE6bnVsbCxlcnJvcjplfX1yZXR1cm57ZGF0YTp5aWVsZCBkLmpzb24oKSxlcnJvcjpudWxsfX0pfXBvc3QoZSxzKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzLGQ9e30pe2NvbnN0IG09X19zcHJlYWRWYWx1ZXMoe21ldGhvZDoiUE9TVCIsaGVhZGVyczp0aGlzLmhlYWRlcnMsYm9keTpKU09OLnN0cmluZ2lmeShzKX0sZCk7cmV0dXJuIHRoaXMuZmV0Y2hSZXF1ZXN0KGUsbSl9KX1nZXQoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxhcmd1bWVudHMsZnVuY3Rpb24qKGUscz17fSl7Y29uc3QgZD1fX3NwcmVhZFZhbHVlcyh7bWV0aG9kOiJHRVQiLGhlYWRlcnM6dGhpcy5oZWFkZXJzfSxzKTtyZXR1cm4gdGhpcy5mZXRjaFJlcXVlc3QoZSxkKX0pfXB1dChlLHMpe3JldHVybiBfX2FzeW5jKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKihlLHMsZD17fSl7Y29uc3QgbT1fX3NwcmVhZFZhbHVlcyh7bWV0aG9kOiJQVVQiLGhlYWRlcnM6dGhpcy5oZWFkZXJzLGJvZHk6SlNPTi5zdHJpbmdpZnkocyl9LGQpO3JldHVybiB0aGlzLmZldGNoUmVxdWVzdChlLG0pfSl9cGF0Y2goZSxzKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzLGQ9e30pe2NvbnN0IG09X19zcHJlYWRWYWx1ZXMoe21ldGhvZDoiUEFUQ0giLGhlYWRlcnM6dGhpcy5oZWFkZXJzLGJvZHk6SlNPTi5zdHJpbmdpZnkocyl9LGQpO3JldHVybiB0aGlzLmZldGNoUmVxdWVzdChlLG0pfSl9ZGVsZXRlKGUscyl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe2NvbnN0IGQ9e21ldGhvZDoiREVMRVRFIixoZWFkZXJzOnRoaXMuaGVhZGVycyxib2R5OkpTT04uc3RyaW5naWZ5KHMpfTtyZXR1cm4gdGhpcy5mZXRjaFJlcXVlc3QoZSxkKX0pfX07Y29uc3QgdXNlUmVzZW5kPSgpPT57Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkucmVzZW5kLmFwaUtleTtyZXR1cm4gbmV3IFloKGUpfTtsZXQgcmFuZG9tPWU9PmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoZSkpLGN1c3RvbUFscGhhYmV0PShlLHM9MjEpPT4oKGUscyxkKT0+e2xldCBtPSgyPDxNYXRoLmxvZzIoZS5sZW5ndGgtMSkpLTEsaD0tfigxLjYqbSpzL2UubGVuZ3RoKTtyZXR1cm4oZz1zKT0+e2xldCB4PSIiO2Zvcig7Oyl7bGV0IHM9ZChoKSwkPTB8aDtmb3IoOyQtLTspaWYoeCs9ZVtzWyRdJm1dfHwiIix4Lmxlbmd0aD49ZylyZXR1cm4geH19fSkoZSwwfHMscmFuZG9tKTtmdW5jdGlvbiBzaW1wbGlmeU5hbm9JZChlPTIxKXtyZXR1cm4gY3VzdG9tQWxwaGFiZXQoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsZSkoKX1mdW5jdGlvbiBlc2NhcGVMaWtlKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXCVfXS9nLGU9PmBcXCR7ZX1gKX1mdW5jdGlvbiBzYWZlRXF1YWwoZSxzKXtjb25zdCBkPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSxtPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShzKTtpZihkLmxlbmd0aCE9PW0ubGVuZ3RoKXJldHVybiExO2xldCBoPTA7Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspaHw9ZFtlXV5tW2VdO3JldHVybiAwPT09aH1hc3luYyBmdW5jdGlvbiBnZXRDYWNoZWRPckZldGNoKGUscyxkPTM2MDApe2NvbnN0IG09YXdhaXQgT2QuZ2V0KGUpO2lmKG0pcmV0dXJuIG07Y29uc3QgaD1hd2FpdCBzKCk7cmV0dXJuIGgmJmF3YWl0IE9kLnNldChlLGgse3R0bDpkfSksaH1mdW5jdGlvbiBkZWZpbmVTY2hlZHVsZWRUYXNrKGUscyl7cmV0dXJuIGRlZmluZVRhc2socyl9ZnVuY3Rpb24gdG9CYXNlNjQocyl7cmV0dXJuIGUuZnJvbShzKS50b1N0cmluZygiYmFzZTY0Iil9ZnVuY3Rpb24gZnJvbUJhc2U2NChzKXtyZXR1cm4gVWludDhBcnJheS5mcm9tKGUuZnJvbShzLCJiYXNlNjQiKSl9YXN5bmMgZnVuY3Rpb24ga2V5KCl7Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkuYXV0aFNlY3JldDtpZighZSl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOiJhdXRoU2VjcmV0IG5vdCBjb25maWd1cmVkIn0pO2NvbnN0IHM9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSk7cmV0dXJuIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHMsIkFFUy1HQ00iLCExLFsiZW5jcnlwdCIsImRlY3J5cHQiXSl9YXN5bmMgZnVuY3Rpb24gZW5jcnlwdFNlY3JldChlKXtjb25zdCBzPW5ldyBVaW50OEFycmF5KDEyKTtjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHMpO2NvbnN0IGQ9YXdhaXQgY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiJBRVMtR0NNIixpdjpzfSxhd2FpdCBrZXkoKSwobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoZSkpO3JldHVybntjaXBoZXJ0ZXh0OnRvQmFzZTY0KG5ldyBVaW50OEFycmF5KGQpKSxpdjp0b0Jhc2U2NChzKX19YXN5bmMgZnVuY3Rpb24gZGVjcnlwdFNlY3JldChlKXtjb25zdCBzPWF3YWl0IGNyeXB0by5zdWJ0bGUuZGVjcnlwdCh7bmFtZToiQUVTLUdDTSIsaXY6ZnJvbUJhc2U2NChlLml2KX0sYXdhaXQga2V5KCksZnJvbUJhc2U2NChlLmNpcGhlcnRleHQpKTtyZXR1cm4obmV3IFRleHREZWNvZGVyKS5kZWNvZGUocyl9Y29uc3QgZWc9W3t0eXBlOiJpbWFnZS9wbmciLGV4dDoicG5nIixieXRlczpbMTM3LDgwLDc4LDcxXX0se3R5cGU6ImltYWdlL2pwZWciLGV4dDoianBnIixieXRlczpbMjU1LDIxNiwyNTVdfSx7dHlwZToiaW1hZ2UvZ2lmIixleHQ6ImdpZiIsYnl0ZXM6WzcxLDczLDcwLDU2XX0se3R5cGU6ImltYWdlL3dlYnAiLGV4dDoid2VicCIsYnl0ZXM6WzgyLDczLDcwLDcwXX1dO2Z1bmN0aW9uIHNuaWZmSW1hZ2UoZSl7Zm9yKGNvbnN0IHMgb2YgZWcpaWYocy5ieXRlcy5ldmVyeSgocyxkKT0+ZVtkXT09PXMpKXtpZigiaW1hZ2Uvd2VicCI9PT1zLnR5cGUmJig4NyE9PWVbOF18fDY5IT09ZVs5XXx8NjYhPT1lWzEwXXx8ODAhPT1lWzExXSkpY29udGludWU7cmV0dXJue3R5cGU6cy50eXBlLGV4dDpzLmV4dH19cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ2V0QmFzZVVybChlKXtpZihlKXtyZXR1cm5gJHtnZXRSZXF1ZXN0UHJvdG9jb2woZSl9Oi8vJHtnZXRSZXF1ZXN0SG9zdChlKX1gfWNvbnN0IHM9dXNlUnVudGltZUNvbmZpZygpO3JldHVybmAke3MucHVibGljLnNzbEVuYWJsZWQ/Imh0dHBzIjoiaHR0cCJ9Oi8vJHtzLnB1YmxpYy5iYXNlRG9tYWlufWB9Y29uc3QgX3M2NWEwN0hodDBNazZNdGxHNTFDcTloYmlaMVhoQ09FRFE0UWN6VFRCdWc9YXN5bmMoKT0+e30sdGc9Z2xvYmFsVGhpcy5jcnlwdG8sbmc9dGcuc3VidGxlLGlnPSJBRVMtQ0JDIixjcmVhdGU9YXN5bmMocyxkLG0pPT57Y29uc3QgaD0oZT0+dGcuZ2V0UmFuZG9tVmFsdWVzKGUpKShuZXcgVWludDhBcnJheSgxNikpLGc9YXdhaXQgbmcuZW5jcnlwdCh7bmFtZTptfHxpZyxpdjpofSxkLChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShzKSkseD1lLmZyb20obmV3IFVpbnQ4QXJyYXkoZykpO3JldHVybmAke2UuZnJvbShoKS50b1N0cmluZygiYmFzZTY0Iil9OiR7eC50b1N0cmluZygiYmFzZTY0Iil9YH0scmFuZG9tU2VjcmV0PSgpPT50Zy5yYW5kb21VVUlEKCkscmFuZG9tRW5jcnlwdFNlY3JldD0oKT0+Wy4uLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMTYpKV0ubWFwKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIik7bGV0IHJnO2NvbnN0IHVzZVNlY3JldEtleT1hc3luYyBlPT5yZ3x8KHJnPWF3YWl0KGFzeW5jKGUscyk9Pntjb25zdCBkPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlPz9yYW5kb21FbmNyeXB0U2VjcmV0KCkpO3JldHVybiBhd2FpdCBuZy5pbXBvcnRLZXkoInJhdyIsZCx7bmFtZTpzfHxpZ30sITEsWyJlbmNyeXB0IiwiZGVjcnlwdCJdKX0pKGUuZW5jcnlwdFNlY3JldCxlLmVuY3J5cHRBbGdvcml0aG0pKSxfQTdzV1hyMnExbXF0WXJtbTlMbVl3akRBOWlUa0NkeE9SY3p4akVId1ZvPWU9Pntjb25zdCBzPXVzZVJ1bnRpbWVDb25maWcoKS5jc3VyZixkPXMuY29va2llS2V5O3MuYWRkQ3NyZlRva2VuVG9FdmVudEN0eD8oZS5ob29rcy5ob29rKCJyZXF1ZXN0Iixhc3luYyBlPT57Y29uc3R7Y3N1cmY6bX09Z2V0Um91dGVSdWxlcyhlKSxoPSEoITE9PT1tfHwhMT09PW0/LmVuYWJsZWQpO2xldCBnPWdldENvb2tpZShlLGQpO2d8fChnPXJhbmRvbVNlY3JldCgpLGgmJnNldENvb2tpZShlLGQsZyxzLmNvb2tpZSkpLGUuY29udGV4dC5jc3JmVG9rZW49YXdhaXQgY3JlYXRlKGcsYXdhaXQgdXNlU2VjcmV0S2V5KHMpLHMuZW5jcnlwdEFsZ29yaXRobSl9KSxlLmhvb2tzLmhvb2soInJlbmRlcjpodG1sIixhc3luYyhlLHtldmVudDpzfSk9PntlLmhlYWQucHVzaChgPG1ldGEgbmFtZT0iY3NyZi10b2tlbiIgY29udGVudD0iJHtzLmNvbnRleHQuY3NyZlRva2VufSI+YCl9KSk6ZS5ob29rcy5ob29rKCJyZW5kZXI6aHRtbCIsYXN5bmMoZSx7ZXZlbnQ6bX0pPT57bGV0IGg9Z2V0Q29va2llKG0sZCk7aHx8KGg9cmFuZG9tU2VjcmV0KCksc2V0Q29va2llKG0sZCxoLHMuY29va2llKSk7Y29uc3QgZz1hd2FpdCBjcmVhdGUoaCxhd2FpdCB1c2VTZWNyZXRLZXkocykscy5lbmNyeXB0QWxnb3JpdGhtKTtlLmhlYWQucHVzaChgPG1ldGEgbmFtZT0iY3NyZi10b2tlbiIgY29udGVudD0iJHtnfSI+YCl9KX07YXN5bmMgZnVuY3Rpb24gZ2V0QmFsYW5jZShlKXt2YXIgcztjb25zdCBkPWF3YWl0IEVkLnF1ZXJ5Lm9yZ2FuaXphdGlvbkNyZWRpdFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6ZXEodGQub3JnYW5pemF0aW9uX2lkLGUpLGNvbHVtbnM6e2JhbGFuY2U6ITB9fSk7cmV0dXJuIG51bGwhPShzPW51bGw9PWQ/dm9pZCAwOmQuYmFsYW5jZSk/czowfXZhciBvZz0oZT0+KGUuR09PR0xFPSJnb29nbGUiLGUuR0lUSFVCPSJnaXRodWIiLGUpKShvZ3x8e30pLGFnPShlPT4oZS5TSUdOX0lOPSJhdXRoOnNpZ25faW4iLGUuU0lHTl9VUD0iYXV0aDpzaWduX3VwIixlLklNUEVSU09OQVRFX1NUQVJUPSJhdXRoOmltcGVyc29uYXRlX3N0YXJ0IixlLklNUEVSU09OQVRFX1NUT1A9ImF1dGg6aW1wZXJzb25hdGVfc3RvcCIsZSkpKGFnfHx7fSk7ZnVuY3Rpb24gZW51bVZhbHVlcyhlKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyhlKX1jb25zdCBzZz1zcWxpdGVUYWJsZSgidXNlcnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcm5hbWU6dGV4dCgidXNlcm5hbWUiKSxuYW1lOnRleHQoIm5hbWUiKSxwcmltYXJ5X2VtYWlsOnRleHQoInByaW1hcnlfZW1haWwiKS51bmlxdWUoKS5ub3ROdWxsKCkscHJpbWFyeV9waG9uZTp0ZXh0KCJwcmltYXJ5X3Bob25lIikudW5pcXVlKCksYXZhdGFyOnRleHQoImF2YXRhciIpLHZlcmlmaWVkOmludGVnZXIoInZlcmlmaWVkIix7bW9kZToiYm9vbGVhbiJ9KS5kZWZhdWx0KCExKSxlbWFpbF9ub3RpZmljYXRpb25zOmludGVnZXIoImVtYWlsX25vdGlmaWNhdGlvbnMiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITApLGJpbzp0ZXh0KCJiaW8iKSxub3RpZmljYXRpb25fcHJlZnM6dGV4dCgibm90aWZpY2F0aW9uX3ByZWZzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoe2VtYWlsOiEwLHByb2R1Y3RfdXBkYXRlczohMCx3ZWVrbHlfZGlnZXN0OiExLGltcG9ydGFudF91cGRhdGVzOiEwfSksY3VzdG9tX2RhdGE6dGV4dCgiY3VzdG9tX2RhdGEiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdCh7fSksbGFzdF9zaWduX2luX2F0OmludGVnZXIoImxhc3Rfc2lnbl9pbl9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxpc19zdXNwZW5kZWQ6aW50ZWdlcigiaXNfc3VzcGVuZGVkIix7bW9kZToiYm9vbGVhbiJ9KS5kZWZhdWx0KCExKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInVzZXJzX3VzZXJuYW1lX2lkeCIpLm9uKGUudXNlcm5hbWUpLGluZGV4KCJ1c2Vyc19uYW1lX2lkeCIpLm9uKGUubmFtZSldKTtzcWxpdGVUYWJsZSgiaWRlbnRpdGllcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxwcm92aWRlcjp0ZXh0KCJwcm92aWRlciIse2VudW06ZW51bVZhbHVlcyhvZyl9KS5ub3ROdWxsKCkscHJvdmlkZXJfdXNlcl9pZDp0ZXh0KCJwcm92aWRlcl91c2VyX2lkIikubm90TnVsbCgpLHByb3ZpZGVyX2RhdGE6dGV4dCgicHJvdmlkZXJfZGF0YSIse21vZGU6Impzb24ifSkuJHR5cGUoKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImlkZW50aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpLHVuaXF1ZUluZGV4KCJpZGVudGl0aWVzX3Byb3ZpZGVyX3VuaXF1ZV9pZHgiKS5vbihlLnByb3ZpZGVyLGUucHJvdmlkZXJfdXNlcl9pZCldKSxzcWxpdGVUYWJsZSgiYWN0aXZpdGllcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhY3Rpb246dGV4dCgiYWN0aW9uIix7ZW51bTplbnVtVmFsdWVzKGFnKX0pLm5vdE51bGwoKSxhY3Rpb25fcmVmX2lkOnRleHQoImFjdGlvbl9yZWZfaWQiKSx0ZXN0OnRleHQoInRlc3QiLHttb2RlOiJqc29uIn0pLG1ldGFkYXRhOnRleHQoIm1ldGFkYXRhIix7bW9kZToianNvbiJ9KSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJhY3Rpdml0aWVzX3VzZXJfaWRfaWR4Iikub24oZS51c2VyX2lkKV0pO2NvbnN0IGxnPXNxbGl0ZVRhYmxlKCJvcmdhbml6YXRpb25zIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG5hbWU6dGV4dCgibmFtZSIpLm5vdE51bGwoKSxzbHVnOnRleHQoInNsdWciKS5ub3ROdWxsKCkudW5pcXVlKCksb3duZXJfaWQ6dGV4dCgib3duZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGlzX3BlcnNvbmFsOmludGVnZXIoImlzX3BlcnNvbmFsIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksaXNfc3lzdGVtOmludGVnZXIoImlzX3N5c3RlbSIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6aW50ZWdlcigidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9PltpbmRleCgib3JnYW5pemF0aW9uc19pc19zeXN0ZW1faWR4Iikub24oZS5pc19zeXN0ZW0pXSksY2c9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9tZW1iZXJzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6dGV4dCgidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnNnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PmxnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksYWJpbGl0aWVzOnRleHQoImFiaWxpdGllcyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5ub3ROdWxsKCkuZGVmYXVsdChbXSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJvcmdfbWVtYmVyc191c2VyX29yZ191bmlxdWUiKS5vbihlLnVzZXJfaWQsZS5vcmdhbml6YXRpb25faWQpLGluZGV4KCJvcmdfbWVtYmVyc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpXSk7c3FsaXRlVGFibGUoInBlcm1pc3Npb25zIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLGtleTp0ZXh0KCJrZXkiKS5ub3ROdWxsKCkudW5pcXVlKCksc3ViamVjdDp0ZXh0KCJzdWJqZWN0Iikubm90TnVsbCgpLGFjdGlvbjp0ZXh0KCJhY3Rpb24iKS5ub3ROdWxsKCksc2NvcGU6dGV4dCgic2NvcGUiKSxvcmdfa2luZDp0ZXh0KCJvcmdfa2luZCIse2VudW06WyJzeXN0ZW0iLCJ0ZW5hbnQiXX0pLm5vdE51bGwoKSxkZXNjcmlwdGlvbjp0ZXh0KCJkZXNjcmlwdGlvbiIpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInBlcm1pc3Npb25zX3N1YmplY3RfaWR4Iikub24oZS5zdWJqZWN0KV0pO2NvbnN0IHVnPXNxbGl0ZVRhYmxlKCJyb2xlcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+bGcuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxuYW1lOnRleHQoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246dGV4dCgiZGVzY3JpcHRpb24iKSxwZXJtaXNzaW9uczp0ZXh0KCJwZXJtaXNzaW9ucyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5ub3ROdWxsKCkuZGVmYXVsdChbXSksaXNfc3lzdGVtOmludGVnZXIoImlzX3N5c3RlbSIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6aW50ZWdlcigidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9Plt1bmlxdWVJbmRleCgicm9sZXNfb3JnX25hbWVfdW5pcXVlIikub24oZS5vcmdhbml6YXRpb25faWQsZS5uYW1lKSxpbmRleCgicm9sZXNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKV0pO3NxbGl0ZVRhYmxlKCJvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG1lbWJlcl9pZDp0ZXh0KCJtZW1iZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5jZy5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHJvbGVfaWQ6dGV4dCgicm9sZV9pZCIpLnJlZmVyZW5jZXMoKCk9PnVnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9Plt1bmlxdWVJbmRleCgibWVtYmVyX3JvbGVzX3VuaXF1ZSIpLm9uKGUubWVtYmVyX2lkLGUucm9sZV9pZCksaW5kZXgoIm1lbWJlcl9yb2xlc19tZW1iZXJfaWR4Iikub24oZS5tZW1iZXJfaWQpLGluZGV4KCJtZW1iZXJfcm9sZXNfcm9sZV9pZHgiKS5vbihlLnJvbGVfaWQpXSksc3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9pbnZpdGF0aW9ucyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+bGcuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxlbWFpbDp0ZXh0KCJlbWFpbCIpLm5vdE51bGwoKSxyb2xlX2lkOnRleHQoInJvbGVfaWQiKS5yZWZlcmVuY2VzKCgpPT51Zy5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLHRva2VuOnRleHQoInRva2VuIikubm90TnVsbCgpLnVuaXF1ZSgpLGludml0ZWRfYnk6dGV4dCgiaW52aXRlZF9ieSIpLnJlZmVyZW5jZXMoKCk9PnNnLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSkscHJvamVjdF9pZHM6dGV4dCgicHJvamVjdF9pZHMiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdChbXSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksZXhwaXJlc19hdDppbnRlZ2VyKCJleHBpcmVzX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKX0sZT0+W2luZGV4KCJvcmdfaW52aXRhdGlvbnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKSxpbmRleCgib3JnX2ludml0YXRpb25zX3Rva2VuX2lkeCIpLm9uKGUudG9rZW4pXSk7Y29uc3QgZGc9c3FsaXRlVGFibGUoInVzZXJfcmVmZXJyYWxzIix7dXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCk9PnNnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxjb2RlOnRleHQoImNvZGUiKS5ub3ROdWxsKCkudW5pcXVlKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9KSxwZz1zcWxpdGVUYWJsZSgicmVmZXJyYWxzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHJlZmVycmVyX2lkOnRleHQoInJlZmVycmVyX2lkIikucmVmZXJlbmNlcygoKT0+c2cuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxyZWZlcmVlX2lkOnRleHQoInJlZmVyZWVfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHNvdXJjZTp0ZXh0KCJzb3VyY2UiLHtlbnVtOlsibGluayIsImludml0ZSJdfSkubm90TnVsbCgpLmRlZmF1bHQoImxpbmsiKSxyZXdhcmRfcGFpZDppbnRlZ2VyKCJyZXdhcmRfcGFpZCIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bdW5pcXVlSW5kZXgoInJlZmVycmFsc19yZWZlcmVlX3VuaXF1ZSIpLm9uKGUucmVmZXJlZV9pZCksaW5kZXgoInJlZmVycmFsc19yZWZlcnJlcl9pZHgiKS5vbihlLnJlZmVycmVyX2lkKV0pO2Z1bmN0aW9uIHN1bUJ5KGUscyl7bGV0IGQ9MDtmb3IobGV0IG09MDttPGUubGVuZ3RoO20rKylkKz1zKGVbbV0sbSk7cmV0dXJuIGR9ZnVuY3Rpb24gcGljayhlLHMpe2NvbnN0IGQ9e307Zm9yKGxldCBtPTA7bTxzLmxlbmd0aDttKyspe2NvbnN0IGg9c1ttXTtPYmplY3QuaGFzT3duKGUsaCkmJihkW2hdPWVbaF0pfXJldHVybiBkfWNvbnN0IG1nPS9eW2EtejAtOV17OH0kL2ksZmc9MmU0O2FzeW5jIGZ1bmN0aW9uIGVuc3VyZVJlZmVycmFsQ29kZShlKXtjb25zdCBzPWF3YWl0IEVkLnF1ZXJ5LnVzZXJSZWZlcnJhbFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6ZXEoZGcudXNlcl9pZCxlKX0pO2lmKHMpcmV0dXJuIHMuY29kZTtjb25zdCBkPXNpbXBsaWZ5TmFub0lkKDgpLFttXT1hd2FpdCBFZC5pbnNlcnQoZGcpLnZhbHVlcyh7dXNlcl9pZDplLGNvZGU6ZH0pLm9uQ29uZmxpY3REb05vdGhpbmcoKS5yZXR1cm5pbmcoKTtpZihtKXJldHVybiBtLmNvZGU7cmV0dXJuKGF3YWl0IEVkLnF1ZXJ5LnVzZXJSZWZlcnJhbFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6ZXEoZGcudXNlcl9pZCxlKX0pKS5jb2RlfWFzeW5jIGZ1bmN0aW9uIGdldFJlZmVycmFsU3RhdHMoZSl7Y29uc3Qgcz1hd2FpdCBlbnN1cmVSZWZlcnJhbENvZGUoZSksZD1hd2FpdCBFZC5zZWxlY3Qoe2lkOnBnLmlkLGVtYWlsOkF1LnByaW1hcnlfZW1haWwsc291cmNlOnBnLnNvdXJjZSxyZXdhcmRfcGFpZDpwZy5yZXdhcmRfcGFpZCxjcmVhdGVkX2F0OnBnLmNyZWF0ZWRfYXR9KS5mcm9tKHBnKS5pbm5lckpvaW4oQXUsZXEoQXUuaWQscGcucmVmZXJlZV9pZCkpLndoZXJlKGVxKHBnLnJlZmVycmVyX2lkLGUpKS5vcmRlckJ5KGRlc2MocGcuY3JlYXRlZF9hdCkpO3JldHVybntjb2RlOnMscmVmZXJyZWRDb3VudDpkLmxlbmd0aCx0b3RhbEVhcm5lZDpzdW1CeShkLGU9PmUucmV3YXJkX3BhaWQ/Zmc6MCkscmVmZXJyYWxzOmR9fWNvbnN0IGhnPW5ldyBTZXQoWyJnb29nbGUiLCJnaXRodWIiXSksX3FxSnVYdGtKVGx2TWtFYVdGS2dtdkxOdmJXc3R3TUtpSW1rM0xrcFFNPWU9PntlLmhvb2tzLmhvb2soImF1dGg6dXNlci1jcmVhdGVkIixhc3luYyh7dXNlcjplLHByb3ZpZGVyOnMsZXZlbnQ6ZH0pPT57aWYoYXdhaXQgZW5zdXJlUmVmZXJyYWxDb2RlKGUuaWQpLCFoZy5oYXMocykpcmV0dXJuO2NvbnN0IG09Z2V0Q29va2llKGQsInJlZiIpLGg9Z2V0Q29va2llKGQsInJlZl9pbnZpdGUiKTthd2FpdCBhc3luYyBmdW5jdGlvbihlLHMpe3ZhciBkO2xldCBtPW51bGw7aWYocy5jb2RlJiZtZy50ZXN0KHMuY29kZSkpe2NvbnN0IGU9YXdhaXQgRWQucXVlcnkudXNlclJlZmVycmFsVGFibGUuZmluZEZpcnN0KHt3aGVyZTplcShkZy5jb2RlLHMuY29kZSksY29sdW1uczp7dXNlcl9pZDohMH19KTttPW51bGwhPShkPW51bGw9PWU/dm9pZCAwOmUudXNlcl9pZCk/ZDpudWxsfWVsc2Ugcy5pbnZpdGVySWQmJihtPXMuaW52aXRlcklkKTttJiZtIT09ZSYmYXdhaXQgRWQuaW5zZXJ0KHBnKS52YWx1ZXMoe3JlZmVycmVyX2lkOm0scmVmZXJlZV9pZDplLHNvdXJjZTpzLmNvZGU/ImxpbmsiOiJpbnZpdGUifSkub25Db25mbGljdERvTm90aGluZygpfShlLmlkLHtjb2RlOm0saW52aXRlcklkOmh9KSxkZWxldGVDb29raWUoZCwicmVmIiksZGVsZXRlQ29va2llKGQsInJlZl9pbnZpdGUiKX0pLGUuaG9va3MuaG9vaygiYmlsbGluZzp0b3B1cC1zdWNjZWVkZWQiLGFzeW5jKHt1c2VySWQ6ZSxpc0ZpcnN0VG9wdXA6c30pPT57aWYoIXN8fCFlKXJldHVybjtjb25zdCBkPWF3YWl0IEVkLnF1ZXJ5LnJlZmVycmFsVGFibGUuZmluZEZpcnN0KHt3aGVyZTphbmQoZXEocGcucmVmZXJlZV9pZCxlKSxlcShwZy5yZXdhcmRfcGFpZCwhMSkpfSk7aWYoIWQpcmV0dXJuO2NvbnN0IG09YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSl7dmFyIHM7Y29uc3QgZD1hd2FpdCBFZC5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmFuZChlcShCdS5vd25lcl9pZCxlKSxlcShCdS5pc19wZXJzb25hbCwhMCkpLGNvbHVtbnM6e2lkOiEwfX0pO3JldHVybiBudWxsIT0ocz1udWxsPT1kP3ZvaWQgMDpkLmlkKT9zOm51bGx9KGQucmVmZXJyZXJfaWQpO20mJihhd2FpdCBFZC5iYXRjaChbRWQuaW5zZXJ0KG5kKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDptLHVzZXJfaWQ6ZC5yZWZlcnJlcl9pZCx0eXBlOiJyZWZlcnJhbF9yZXdhcmQiLHN0YXR1czoic3VjY2VzcyIsYW1vdW50OmZnLG1ldGFkYXRhOntyZWZlcmVlX2lkOmV9fSksRWQudXBkYXRlKHBnKS5zZXQoe3Jld2FyZF9wYWlkOiEwfSkud2hlcmUoZXEocGcuaWQsZC5pZCkpXSksYXdhaXQgYXN5bmMgZnVuY3Rpb24oZSxzKXthd2FpdCBFZC5pbnNlcnQodGQpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOmUsYmFsYW5jZTpzfSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6dGQub3JnYW5pemF0aW9uX2lkLHNldDp7YmFsYW5jZTpzcWxgJHt0ZC5iYWxhbmNlfSArICR7c31gfX0pfShtLGZnKSl9KX0sZ2c9e307ZnVuY3Rpb24gcmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSl7aWYoZS5jb250ZXh0LnNlY3VyaXR5fHwoZS5jb250ZXh0LnNlY3VyaXR5PXt9KSwhZS5jb250ZXh0LnNlY3VyaXR5LnJ1bGVzKXtjb25zdCBzPXRvUm91dGVNYXRjaGVyKGNyZWF0ZVJvdXRlciQxKHtyb3V0ZXM6c3RydWN0dXJlZENsb25lKGdnKX0pKSxkPWUucGF0aC5zcGxpdCgiPyIpWzBdLG09ZD9zLm1hdGNoQWxsKGQpOltdLGg9UGQoe30sLi4ubS5yZXZlcnNlKCkpO2UuY29udGV4dC5zZWN1cml0eS5ydWxlcz1ofXJldHVybiBlLmNvbnRleHQuc2VjdXJpdHkucnVsZXN9Y29uc3Qgdmc9e2NvbnRlbnRTZWN1cml0eVBvbGljeToiQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiLGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3k6IkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kiLGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OiJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsY3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeToiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSIsb3JpZ2luQWdlbnRDbHVzdGVyOiJPcmlnaW4tQWdlbnQtQ2x1c3RlciIscmVmZXJyZXJQb2xpY3k6IlJlZmVycmVyLVBvbGljeSIsc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IlN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkiLHhDb250ZW50VHlwZU9wdGlvbnM6IlgtQ29udGVudC1UeXBlLU9wdGlvbnMiLHhETlNQcmVmZXRjaENvbnRyb2w6IlgtRE5TLVByZWZldGNoLUNvbnRyb2wiLHhEb3dubG9hZE9wdGlvbnM6IlgtRG93bmxvYWQtT3B0aW9ucyIseEZyYW1lT3B0aW9uczoiWC1GcmFtZS1PcHRpb25zIix4UGVybWl0dGVkQ3Jvc3NEb21haW5Qb2xpY2llczoiWC1QZXJtaXR0ZWQtQ3Jvc3MtRG9tYWluLVBvbGljaWVzIix4WFNTUHJvdGVjdGlvbjoiWC1YU1MtUHJvdGVjdGlvbiIscGVybWlzc2lvbnNQb2xpY3k6IlBlcm1pc3Npb25zLVBvbGljeSJ9LHlnPU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2ZykubWFwKChbZSxzXSk9PltzLGVdKSk7ZnVuY3Rpb24gaGVhZGVyT2JqZWN0RnJvbVN0cmluZyhlLHMpe2lmKCFzKXJldHVybiExO2lmKCJjb250ZW50U2VjdXJpdHlQb2xpY3kiPT09ZSl7Y29uc3QgZT1zLnNwbGl0KCI7IikubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoZT0+ZSksZD17fTtmb3IoY29uc3QgcyBvZiBlKXtjb25zdFtlLC4uLm1dPXMuc3BsaXQoIiAiKS5tYXAoZT0+ZS50cmltKCkpO2RbZV09InVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiPT09ZXx8bS5qb2luKCIgIil9cmV0dXJuIGR9aWYoInN0cmljdFRyYW5zcG9ydFNlY3VyaXR5Ij09PWUpe2NvbnN0IGU9cy5zcGxpdCgiOyIpLm1hcChlPT5lLnRyaW0oKSkuZmlsdGVyKGU9PmUpLGQ9e307Zm9yKGNvbnN0IHMgb2YgZSl7Y29uc3RbZSxtXT1zLnNwbGl0KCI9IikubWFwKGU9PmUudHJpbSgpKTsibWF4LWFnZSI9PT1lP2QubWF4QWdlPU51bWJlcihtKToiaW5jbHVkZVN1YmRvbWFpbnMiIT09ZSYmInByZWxvYWQiIT09ZXx8KGRbZV09ITApfXJldHVybiBkfWlmKCJwZXJtaXNzaW9uc1BvbGljeSI9PT1lKXtjb25zdCBlPXMuc3BsaXQoIiwiKS5tYXAoZT0+ZS50cmltKCkpLmZpbHRlcihlPT5lKSxkPXt9O2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0W2UsbV09cy5zcGxpdCgiPSIpLm1hcChlPT5lLnRyaW0oKSk7ZFtlXT1tfXJldHVybiBkfXJldHVybiBzfWZ1bmN0aW9uIHN0YW5kYXJkVG9TZWN1cml0eShlKXtpZighZSlyZXR1cm47Y29uc3Qgcz17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW2UsZF0pPT57Y29uc3QgbT1mdW5jdGlvbihlKXtjb25zdFssc109T2JqZWN0LmVudHJpZXMoeWcpLmZpbmQoKFtzXSk9PnMudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKSl8fFtdO3JldHVybiBzfShlKTtpZihtKWlmKCJzdHJpbmciPT10eXBlb2YgZCl7Y29uc3QgZT1oZWFkZXJPYmplY3RGcm9tU3RyaW5nKG0sZCk7c1ttXT1lfWVsc2Ugc1ttXT1kfSksMCE9PU9iamVjdC5rZXlzKHMpLmxlbmd0aD9zOnZvaWQgMH1mdW5jdGlvbiBiYWNrd2FyZHNDb21wYXRpYmxlU2VjdXJpdHkoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHM9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtlLGRdKT0+e2NvbnN0IG09ZTtpZigiY29udGVudFNlY3VyaXR5UG9saWN5IiE9PW0mJiJwZXJtaXNzaW9uc1BvbGljeSIhPT1tJiYic3RyaWN0VHJhbnNwb3J0U2VjdXJpdHkiIT09bXx8InN0cmluZyIhPXR5cGVvZiBkKXNbbV09IiIhPT1kJiZkO2Vsc2V7Y29uc3QgZT1oZWFkZXJPYmplY3RGcm9tU3RyaW5nKG0sZCk7c1ttXT1lfX0pLHN9Y29uc3QgX1pqamh6bW5mcDZrNE5xWHlGcUUyaHlvY0pzN0JYZmdCbE5LN3VDYVhhNVk9YXN5bmMgZT0+e2NvbnN0IHM9Z2csZD11c2VSdW50aW1lQ29uZmlnKCk7Zm9yKGNvbnN0IGUgaW4gZC5uaXRyby5yb3V0ZVJ1bGVzKXtjb25zdCBtPWQubml0cm8ucm91dGVSdWxlc1tlXTtpZighbSljb250aW51ZTtjb25zdHtoZWFkZXJzOmh9PW0sZz1zdGFuZGFyZFRvU2VjdXJpdHkoaCk7ZyYmKHNbZV09e2hlYWRlcnM6Z30pfWNvbnN0IG09ZC5zZWN1cml0eSx7aGVhZGVyczpofT1tLGc9YmFja3dhcmRzQ29tcGF0aWJsZVNlY3VyaXR5KGgpO3NbIi8qKiJdPVBkKHtoZWFkZXJzOmd9LG0sc1siLyoqIl0pO2Zvcihjb25zdCBlIGluIGQubml0cm8ucm91dGVSdWxlcyl7Y29uc3QgbT1kLm5pdHJvLnJvdXRlUnVsZXNbZV07aWYoIW0pY29udGludWU7Y29uc3R7c2VjdXJpdHk6aH09bTtpZihoKXtjb25zdHtoZWFkZXJzOmR9PWgsbT1iYWNrd2FyZHNDb21wYXRpYmxlU2VjdXJpdHkoZCk7c1tlXT1QZCh7aGVhZGVyczptfSxoLHNbZV0pfX1lLmhvb2tzLmhvb2soIm51eHQtc2VjdXJpdHk6aGVhZGVycyIsKHtyb3V0ZTplLGhlYWRlcnM6ZH0pPT57c1tlXT1QZCh7aGVhZGVyczpkfSxzW2VdKX0pLGUuaG9va3MuaG9vaygibnV4dC1zZWN1cml0eTpyZWFkeSIsYXN5bmMoKT0+e2F3YWl0IGUuaG9va3MuY2FsbEhvb2soIm51eHQtc2VjdXJpdHk6cm91dGVSdWxlcyIscyl9KSxhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJudXh0LXNlY3VyaXR5OnJlYWR5Iil9LGJnPXsiL19udXh0L2J1aWxkcy9tZXRhL2UyMzk3NGFhLWY4OGQtNGE0Mi05NzU5LTFmMWFlNzg4NGVmOC5qc29uIjoic2hhMzg0LTBxSTd4NFBqcWpqMEFlRThkSWhRVVRmRWxVcC8ySU14OFZsOFgvY1JFZHlBZkhOd3BiS0N4dHBVSEZidDVwOHciLCIvX251eHQvMURJa0J5TWQuanMiOiJzaGEzODQtVktMaEZXTXEyV25tdnFkK1BmeGlJWmNYYjMyaFNWTEtpYVdjd1luNnJtUmZ1cDNxN2h6aldGNmNRMWljSHRHMyIsIi9fbnV4dC80bEhteUhiSC5qcyI6InNoYTM4NC1pbVY5blJmY3ptZ2wydWRYUU9COGczc1d3QmFpVGE1bjdIY1pZbS95ZTJ3TCs5T0ZMU2g1a1lUWUc0dkdxN2VUIiwiL19udXh0LzdjVlNPQ2N1LmpzIjoic2hhMzg0LWJZdURzaU1GSmZkNlVJY21HTnJNb2dPcWFqbU00MFByZzFWeEtsRk9UOHN5NU1DeCt0QmJ4L0NmRXZsbGlUTEciLCIvX251eHQvQjFNZUxyaTMuanMiOiJzaGEzODQtK2RPUGZ6M0JDTkhHVjlwUjgxR1pNTnFiTlpueUdwb2M1MmNFN01JOTQ4ZVhiSmZDSUd1QkZtak54Qnp1TWVOYSIsIi9fbnV4dC9CN3M1cGpqUi5qcyI6InNoYTM4NC1CSmtPdWZ6ZjZQT3VxVUMwYk95MGdPV1ZxenJYZXpWcEFlY3E5cjRkOUw4aWdiSWIyamdLMVBLUmFkdmNrdi83IiwiL19udXh0L0JBdW5pLXFkLmpzIjoic2hhMzg0LTlqTDdYMTFiNGJRRVQ5K21INnNSL09HYnpKUExBRkZTUSs2RDYvUUZkY3dtR2tROUxsUTlmT1NmWG9TSVlWV0QiLCIvX251eHQvQkZPTm82M1guanMiOiJzaGEzODQtMER6RWJ3eUpHUXVzNFFwWnJjczlmcmV0ZGJVWUhnUmgzbHk0eURBUHdNNmFxcWVSYnVnWHJRK01DaURJL2tpeCIsIi9fbnV4dC9CTXliRzRPay5qcyI6InNoYTM4NC1EMFlmRDJhQ0FtK3hIZVRkelliMVJ4dWk3L2hUazJybjVjY3hRNjJ3eGFxVmZ1VTNNenlwTWZPeTRRbUhRNXRTIiwiL19udXh0L0JTR3QzeFJXLmpzIjoic2hhMzg0LTVaM010dWx4VTdzSk1LblcrNktqYzBJalNUdkJzTlh1a09jbXd3cUNVNk84Szd0ak4zaGZZSFNtNFh0dXJyVFQiLCIvX251eHQvQlNSS3FHclAuanMiOiJzaGEzODQtdUJBYXZQT3E4SGs1RzllWWZMY3JpWUM2U2l0czc1blFyVWVqcWJsWVFYSjEvdWMyaS9rRDZXcktRWktjVW5aQyIsIi9fbnV4dC9CU3kwaTJBZi5qcyI6InNoYTM4NC1CK2pVbVZFdHdlZTdaeUlheHNHOGdnUmY2eVJPbFlLamFnemVheTFHMTdMVVV3cTlOZmhIL29Tdjl2dGM2MExMIiwiL19udXh0L0JXdnFsdzVmLmpzIjoic2hhMzg0LXdYd2NYRHlIREprNFNaVE5aWWc5NUFmWlFNZjRGQ1hKekhpamd2WVRxSDhGZVAwL1lEc1QzMDNjUzIrcmNGcTgiLCIvX251eHQvQlpsTk5mazQuanMiOiJzaGEzODQtZUZYaEtoYkQ2Yk1LMDNpR3JIWEdURjZTSmZBcmhEbVJVYzBiRDBnOXdQRWFKaW01bnh2K1V3MFZhbjRCT3VieiIsIi9fbnV4dC9CZDQtT2MzNi5qcyI6InNoYTM4NC1TRTJWcTViT1JlS1lCL1R3clFlWG9NbDNYbUpibjBnOVJMc3RwYmJjQnZ0MUYwbHBjRGlKTWFmYVg1cksrN05NIiwiL19udXh0L0JkWlg1eGdmLmpzIjoic2hhMzg0LVdrR1lvZ09YQnFuSU9zYlNQcENQSkFhNkIrQ2c2dUs1Q0ZHN3NRVnZFRW92bk1kTVZQNWlEQmQvU2dicW5tNUIiLCIvX251eHQvQmVFTUN5dVouanMiOiJzaGEzODQtYlhnYldkV2lhNjh1TG0yYVNwRmR4bnNVZHZwalBsYU52NXdZNVF0ZnU0NUxxUEFQM2lMZ09oMTYvMFpUK3QzRSIsIi9fbnV4dC9CaFdTMThpNy5qcyI6InNoYTM4NC13WGlsRmxPVkphL3NKT0RuUERoUzNpMHhyeWJwQ3hCeXY3ZHBvd1gyU0N0b05PbFNHSTdMVElzWllmREwvZU51IiwiL19udXh0L0JoYUdvYXpvLmpzIjoic2hhMzg0LVZLTGhGV01xMldubXZxZCtQZnhpSVpjWGIzMmhTVkxLaWFXY3dZbjZybVJmdXAzcTdoempXRjZjUTFpY0h0RzMiLCIvX251eHQvQnJOUlZJQkEuanMiOiJzaGEzODQtZUNHeU9XYmVpc0tpb3Z2VHNidmJYaWRObkdQRnYrelNxL1BwQmRXeDRDanNiTmdJR01NbkVBaldORCtUV0FjTCIsIi9fbnV4dC9CdDhTMGRtbC5qcyI6InNoYTM4NC11Z2dzb3I0N3A0eWl4SmVRRFU0K0pyK3JnN0g2M0hCMnkzMjZxTlZyYnRBRjYrcmZNNVFDejUrVis3YWJDdlNHIiwiL19udXh0L0J1TFN1QThNLmpzIjoic2hhMzg0LWcwbHArRFJqNWdsNXNyekZUNTF5b0RMSHNiYUVURCtFSTg5cDJ4cHJGT3htdXJncXBFVWZ3VjRNTktUWjVxZUciLCIvX251eHQvQzFPUWl5VUQuanMiOiJzaGEzODQtRzZzVXlJeTU2VDZvdEd2aXNZV08wa0NPUUZMdFF4N3VSWVZsWHpGV0Q3WHRpb2dPbVBQTWIrZDhDQURSWGhDSSIsIi9fbnV4dC9DN1l5NnRSMy5qcyI6InNoYTM4NC01ZC9JUFVTQTVmeklrbENpLzdwcjIydXVsazU0TTQxam5CbXAwZGxIRXZkdTJHTUR0cm9TeG5OeTkwOUVUazF4IiwiL19udXh0L0NBVUFYNVZyLmpzIjoic2hhMzg0LVVEZUpDck5JaFREL245TDJpVjlDa2xjNnZDeDBlMC82NkdySk0rRG9OYUdrWlZDUEpyc1p2Y0Y4ZW1sU2hvd0QiLCIvX251eHQvQ0ZCdGNCN28uanMiOiJzaGEzODQtWEZxcDdzVHJTUHE4eDc0Mm9LbE9hUWJqVm5TNEphSjhjWmR2b0xtTXV5bWczUytqNkhmbUFFZCtkYTBoZXZydiIsIi9fbnV4dC9DR1hnU01aaC5qcyI6InNoYTM4NC1XZzZhbldleGFiNUhhbnlyQXJSQ3RWeGRMLzE0OTFLTC9sdm5UZllpVXA1UGRvUHZadk05Rks0S3cwak85dGRDIiwiL19udXh0L0NJQzd2c1o1LmpzIjoic2hhMzg0LVlzS1FIaWNEeFRIOWlXZkE3Nnl2Q3ExbUpDNFlyMy9ZbmRrb01vWWVod1NTdDNOQUFBRWNSZjJpL1I4ZEM2Q1IiLCIvX251eHQvQ1c4ZktuRkUuanMiOiJzaGEzODQtcm5HbkRsZGFUVm1CWDI2UmdqTk1pZFlTVnBmMGh1SjM5dkFXUENseGVIaVZFKzBWOFBrckQ3c1l6OWdKWWtHSiIsIi9fbnV4dC9DWG9jNFVFUi5qcyI6InNoYTM4NC0vRFBDb2FobTlZaWJNMFBPcUZDNjNXNWRKVUhZVDZ6b2JwZC9TOC8rbmpCWjJESUMrY2YybmJHSkp0SkNnMWswIiwiL19udXh0L0NZYW16TG01LmpzIjoic2hhMzg0LWJFMDJXT0tZSjRYQ0VXUS8walluUUIvNCtIKzc5MFkrM1lXWDFhNytEWGMreG12ZHJxU2M1dVEyWnB6c2YwMU4iLCIvX251eHQvQ1ltbE1JWHouanMiOiJzaGEzODQtUzFWRkduYWozcHo4Nzc2SGZFYzhxVlRBa0tWQXpHd2x2UThCMSt3ZVREdnJMeUFtMkhQMXBLOENsMHMxeGpJRiIsIi9fbnV4dC9DYzZ6aWgtUi5qcyI6InNoYTM4NC1lNHpxR3V1cDNZcUhJN1NDZmhkUEhQbjZxWHl5b3YxZXIrOTRUcmZoelRIV2tDUEtQNTdpZktFdWN6TEE5dWJIIiwiL19udXh0L0NjTU1GMWc5LmpzIjoic2hhMzg0LUJ6b3VCK3crVWlUN2dMbjBGSVdXQ1VlT290YXB4ZEFIT05aRlVaRVJXcjMyazQwTmlVVlBYdVZYclJQUjRjUHgiLCIvX251eHQvQ2ZfZncxRTkuanMiOiJzaGEzODQtZmxmaTVaUkxlRjlHM3d4SUtVZ0VqWnN3djh0VGxBNVFXUXZkeE5lYWpoNlhiWkRJdzRWTm1BZ2JOYnp6VXo0ZyIsIi9fbnV4dC9DZmhZRllPWS5qcyI6InNoYTM4NC1sUVg1ZGhRLytoQitRUUhIWUlOTk5hTVZzUC95RDRmcXhYak5hR3FiVUhTeDFZOWl6L0pMTTAzdjltcFRXSmxTIiwiL19udXh0L0NsNGk0clNNLmpzIjoic2hhMzg0LWMyeDJTRUM5UmhGWjJPZ0pMVzBGUTA2TUJJK2FIY09sekxpY1N2SC9kRm5SMlAxV2YwYXl2MmZLY2V3TlpLdkciLCIvX251eHQvQ29JZHo0a2EuanMiOiJzaGEzODQtVCtlTHJZbGlHTGlpVG56RGNHTWNLVTZ2T3BHZk5zdUJKZFJzY0gxVEM2Syt5R25YNDBwUWd1VjlqUXl4UDZTayIsIi9fbnV4dC9DcXlXck5OeC5qcyI6InNoYTM4NC01SGJrMFBtSEJOTDNmYVJEYW15TjVTdWtlY3ovUnhHSG9UY0c4NWJ2OC8ydE1QYytqRHVZd0puaDQ1UHVpOEdkIiwiL19udXh0L0NzSzUxcXRkLmpzIjoic2hhMzg0LVZoWkNEWG9EYVJCbWFsbGFucXFxQ2I3UlVPTlpNWDVKSE85ME9IREdjYklnaTA1RzdHUGdZdzNMSlpxV0lXVmwiLCIvX251eHQvQ3RhMTVzRy0uanMiOiJzaGEzODQtWElBQlAxYjl3NEI0Ymhza2RyUXZXd0xwdUdScEJScmdpdHBUQUVyeElJejlzM1BrSU5DeGdCVENRUjhTbUZxUCIsIi9fbnV4dC9DeGNaclkzVy5qcyI6InNoYTM4NC16U3JSSWFnUUg3aDliNlV0VVZEZ3BtV00xRWg0VXE1MVFkK0dCRFA1NmNPNkZseFZNbjB1VHdybVFFdFQrTUNzIiwiL19udXh0L0RIQ3dFTFdwLmpzIjoic2hhMzg0LUx3TnVWNC96RjgzaVlPbEx3OUY4Qjh0VWN2VjVickxhNzd2bTBNYWZveGM1RFJ2U0JxT3IxMHFHN0FPdDRjY2IiLCIvX251eHQvRE9DRkRUY1kuanMiOiJzaGEzODQtczg2YkVnVUZSMTUxTUVnZmY3WS9HdXFZZFBTTkw5WUh6YVROWU0wNk9QWVN4RElsMFdTMUVIY24vMVBaSkZaTiIsIi9fbnV4dC9EUGZaa2wyZS5qcyI6InNoYTM4NC1HSCttNWVDQW5EQjhoUUdMb01GRmdNYWpoZW9pS3ZoNEZVRk9hWEtPbC85dkNyWC9qSVFidjY4RFpXeTN0K0RYIiwiL19udXh0L0RUVExyNUhyLmpzIjoic2hhMzg0LUpGNzZYTVhOL2ErRGFBVEJaWFVoMFRSazkwejdBTGxYcTArYklENldHRkNSZE9rVmYvS2FYK1lIZUI0aEd6d28iLCIvX251eHQvRFR2WFQtblIuanMiOiJzaGEzODQtYUh0M09mSmI0ZGcxVXBiK096cnRNK2dZYWhiU1JwclhHbi9iRjRJaXBjQnFmU0JMb3kvNzBxVE5GbWI1TUgrMSIsIi9fbnV4dC9EV2ZXcU1KcS5qcyI6InNoYTM4NC11WU5tLy9UUDVGMGFwVUd4MG42cFNZVXRSNktya0ZSRndlc3BFRjVzVUxLaFR5ZGpFM2Q1bHBFQitRYlZZaTdDIiwiL19udXh0L0RZWmxnMC01LmpzIjoic2hhMzg0LUhEMkN0K2JJdkx5S1MrWHNncy9YQmRwWnJSL1Q2czYzWjJTRzVjK3FrNUdMUE03QUpoaUcrdlMyY2x3bnRqOTMiLCIvX251eHQvRF9jdS1xTVIuanMiOiJzaGEzODQtTXJlOERSMjV0ZXFFcEpBSFpWQ3lLQ3ZjODRkdzlGUE1aTXlnRFRrR3laaUxxSU9nSWIwdFZMRnhNUWVkWHB3diIsIi9fbnV4dC9EYkM0cDNRQS5qcyI6InNoYTM4NC04K1dWMFc1S0N1d2VQUytRb0EwamRhQU5rMlFiMGFxc3BJUzQxdnk0dm5IOW93U3U2S1p0NjBTOGxtTysraXQvIiwiL19udXh0L0RjNDZRd0RKLmpzIjoic2hhMzg0LW0rc2orL3VCengvUnFwZ1RvekxBWStoTzJRKzU5TUcvdklpV05uc3NpMHZaQmhGSENVbHZHOVlIekVtWlA3M2oiLCIvX251eHQvRGwtRHptN3ouanMiOiJzaGEzODQtd3pCNWFJc25ndW11N2N1aGVvTlNxaHRPWUVWcmRxTGFURXpOcFp4M2VZdHZSaU5hN3dLUURwaVkxOXU0ZHBYVCIsIi9fbnV4dC9EbTc5NHF4SS5qcyI6InNoYTM4NC13SU8wNVRrQkh2QUtYSXlaQ3pMMTBuSXhaL0lxVEpXZHZmMWQzQVFKdmhmMXlTUm1tNjNlSVB3TVM5dFJBYnJHIiwiL19udXh0L0RwQXZ0TjhnLmpzIjoic2hhMzg0LUlCQldQZnkzdStVekJWaWdwUWlFdzVnckFLcTVsSEpUdEtzK3VNZWR5TlJ1ZUtvSEU5allMZk14WkcyaWN1MTMiLCIvX251eHQvRHRTdGZWbVQuanMiOiJzaGEzODQtbzNTMVVTRG16MXY5cXJ4TFM0QkNvNXFwRW5FT2luOXZNUU0zSTM3SWlrYmdqaTJRdkVCZXN2Q212QXRiL0VzUSIsIi9fbnV4dC9EdUVBZm5ocS5qcyI6InNoYTM4NC1LMjZBQ3FsRnpnaVZMbFRtSWhUNnVIb2FkdUppR0hxTDJ1WHR4VmxhdnZ0R3hWOTB1VHh6Y2Zub3VzTG4wU1VpIiwiL19udXh0L0R2ZGh5cERpLmpzIjoic2hhMzg0LWtvUEVjemF1dmc2d1N1UVhNbkdrWWJIMDlHeU80UW83ZnYxZ0NFd0VBTm9WeWFDOWJnNldaNDJFUURjV0VKNTUiLCIvX251eHQvRHhDV1FzbmwuanMiOiJzaGEzODQtcUpZODhxTFliVHUxY08rQzdmT2s0djhWaThlM1NhcnpCTTJLSnBkTDVpakdPRC9DWnE1Z0c4d2hDd3c1MFprcCIsIi9fbnV4dC9ONkswcnF0Yy5qcyI6InNoYTM4NC1GbklOVW05WStkK0pLamxld3dSbkNUUzFvSmZZdEh4TmcxODRpeXMyT0pGWWNSWDZFSEtpOXhJZWlBVmlnOWFUIiwiL19udXh0L1dtRFhIWUtrLmpzIjoic2hhMzg0LXNSS2ticUlJZ1BqWTVLeloyU3cwQ2VIU09jU3NnN1BGc3hnTUdGczN4djcvV2I4ZXFFNXh2Z0kzanV0NEJFUlciLCIvX251eHQvWkpWazBvbE4uanMiOiJzaGEzODQtaFlRTWprbnVwc0FBanlEZmIveC9hR2lrdS9nNk1lcG5uWkZ5ZG0xQlVqRnpjNUFrakN2azV3TEVHKythSDh1WSIsIi9fbnV4dC9aWnNmUDlLWi5qcyI6InNoYTM4NC1lK1NKQnpSeTVFcnovVFdGTGhTc3NKT3RXQys2K0FSTTl3bkN1K3doUFNXODNhRXBGOUd0YXVzbU9QcWhQd2VPIiwiL19udXh0L18ybFNkcjEzLmpzIjoic2hhMzg0LVNQdUdHOWRyOVBYQnJWTWxKQkZUNGtzWHdTYnZJajg2N2ZGU2NYNCtmaWt3QWc0QkhNR1lwTVRsRnhrT1RpR3IiLCIvX251eHQvY2RLX0E2Tm0uanMiOiJzaGEzODQtS0VvTEpWSGIwd0lkb3ZpVzhyRURBa0ZPOW5iS0lYMHZYMEdmTzl2d0g2VjI1ZWZDL044TkZhQVdqOXJJdFNWdSIsIi9fbnV4dC9kXzBOd1FMVS5qcyI6InNoYTM4NC00QkhTV0NOeHNFYnlKelNRVWNjalFaTHdvZDh3T0ZUZTY4SzBJWTV1bTNpdE0wZWZGc1dHQ1dpSjZRN21BcFEvIiwiL19udXh0L2VudHJ5LnpkVDMxRVk1LmNzcyI6InNoYTM4NC1qOExIaUtibXg5TmF0Q25GcjFrMGVueTNwNWhBVU5RMDY2R2w3WXoxQkV3Zml0M0pSYXpnSVh3bVk0K2ZSOUZNIiwiL19udXh0L2Vycm9yLTQwNC5DRlU1b2dObS5jc3MiOiJzaGEzODQtLzZvUlR1N3hrcGw5V3pXZVVEaXd2YXdRalpzSHg5VDdVU0pyeW5OdHg3ZXpzSGdyL2UzTG9LMS93YVNkOTdmRSIsIi9fbnV4dC9lcnJvci01MDAuQjVhVDRQN1ouY3NzIjoic2hhMzg0LTkzRWYrQ1c3KzgwRkJLYldEQkZDR3B6VSthK0lTdldlUVBHdkJ1K1pmTE1za0F4Mk1JcVRDa2dKekV6RXJ6ak8iLCIvX251eHQvZ2hxWWJJU1QuanMiOiJzaGEzODQtMW5lTGl2WTVLMXhKNUwvenNZM1UrQWs3T1RtQnNYbE9PSlo0bGVyM2k2YnVkVVVIM2NmWmdVbjMrdDRtRGJEaiIsIi9fbnV4dC9tMjBrZEd4VS5qcyI6InNoYTM4NC1mV0FkQUx6OWVBbUVIUkJCaEZSRTFEWVVvRUxXNEozUG1LSXIvZGFVYzZQcVpiTlVsTU9OeURra1Q0bHBLS2ZxIiwiL19udXh0L284dGRfRzBKLmpzIjoic2hhMzg0LWtBZTF2OU9oS2ZtaUhoWEtRNTQ2bTdPeWZCQjFoNW1PZy9McjRqSWpvbkIyTGZjN1BJQ3pGQkZYOGlxRnRjdXAiLCIvX251eHQvczNwMGMwM00uanMiOiJzaGEzODQtUEhBZ1ZOY3hkRHJvQzdmNlJsM0wvNmdaWnFLaSswQy9xT2VaOXpiYWFXUVNMWWcwQkh2ZDgxZ043TjVqVWw4cCIsIi9mYXZpY29uLmljbyI6InNoYTM4NC11ZGJjYlZTb0owanlueFlvK0ZLZGhtY1lEc3QxemU2czZya2dGRXhTWWZwWDZ0QXVHbjV3aHNITmptY1JyNGVVIiwiL3JvYm90cy50eHQiOiJzaGEzODQtMSt6K3hPUFpDMFkvc0NaTzMrbnFYTlF5UldpM3RRa1NtUUUwaUhkV3Y3MVFRQ1RQWlBrOUh5QlRsNkFXcEMyUiJ9LF9nPS88c2NyaXB0KCg/PVtePl0rXGJzcmM9IihbXiJdKykiKSg/IVtePl0rXGJpbnRlZ3JpdHk9IlteIl0rIilbXj5dKykoPzpcLz58PjxcL3NjcmlwdD4pL2cseGc9LzxsaW5rKCg/PVtePl0rXGJyZWw9Iig/OnN0eWxlc2hlZXR8cHJlbG9hZHxtb2R1bGVwcmVsb2FkKSIpKD89W14+XStcYmhyZWY9IihbXiJdKykiKSg/IVtePl0rXGJpbnRlZ3JpdHk9Iltcd1wtKy89XSsiKVtePl0rKT4vZyxfSTdpdmVBRlNUa1VTVnQ1RHVhdEVKNzlOa21rc2h3eW1TVTRoWTFDVFZzPWU9PntlLmhvb2tzLmhvb2soInJlbmRlcjpodG1sIiwoZSx7ZXZlbnQ6c30pPT57Y29uc3QgZD1yZXNvbHZlU2VjdXJpdHlSdWxlcyhzKTtpZighZC5lbmFibGVkfHwhZC5zcmkpcmV0dXJuO2NvbnN0IG09WyJib2R5IiwiYm9keUFwcGVuZCIsImJvZHlQcmVwZW5kIiwiaGVhZCJdO2Zvcihjb25zdCBzIG9mIG0pZVtzXT1lW3NdLm1hcChlPT4oInN0cmluZyIhPXR5cGVvZiBlfHwoZT1lLnJlcGxhY2UoX2csKGUscyxkKT0+e2NvbnN0IG09YmdbZF07aWYobSl7cmV0dXJuYDxzY3JpcHQgaW50ZWdyaXR5PSIke219IiR7c30+PFwvc2NyaXB0PmB9cmV0dXJuIGV9KSxlPWUucmVwbGFjZSh4ZywoZSxzLGQpPT57Y29uc3QgbT1iZ1tkXTtpZihtKXtyZXR1cm5gPGxpbmsgaW50ZWdyaXR5PSIke219IiR7c30+YH1yZXR1cm4gZX0pKSxlKSl9KX07Y29uc3Qgd2c9LzxsaW5rXGIoW14+XSo/PikvZ2ksJGc9L25vbmNlPSJbXiJdKyIvaSxTZz0vPHNjcmlwdFxiKFtePl0qPz4pL2dpLGtnPS88c3R5bGVcYihbXj5dKj8+KS9naSxqZz0vIigoPzpbXiJcXF18XFwuKSopIi9nLHpnPS9fX1FVT1RFX1BMQUNFSE9MREVSXyhcZCspX18vZztmdW5jdGlvbiBpbmplY3ROb25jZVRvVGFncyhlLHMpe2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZTtjb25zdCBkPVtdO2xldCBtPWUucmVwbGFjZShqZyxlPT4oZC5wdXNoKGUpLGBfX1FVT1RFX1BMQUNFSE9MREVSXyR7ZC5sZW5ndGgtMX1fX2ApKTttPW0ucmVwbGFjZSh3ZywoZSxkKT0+JGcudGVzdChkKT9lLnJlcGxhY2UoJGcsYG5vbmNlPSIke3N9ImApOmA8bGluayBub25jZT0iJHtzfSJgK2QpLG09bS5yZXBsYWNlKFNnLChlLGQpPT5gPHNjcmlwdCBub25jZT0iJHtzfSJgK2QpLG09bS5yZXBsYWNlKGtnLChlLGQpPT5gPHN0eWxlIG5vbmNlPSIke3N9ImArZCk7Y29uc3QgaD1tLnJlcGxhY2UoemcsKGUscyk9PmRbcGFyc2VJbnQocywxMCldKTtyZXR1cm4gaH1jb25zdCBfNlU0WmdLY3JORk80clE3X3RJQjFldGNhdWtrdXN3SmlqYmdBSjIzMD1lPT57ZS5ob29rcy5ob29rKCJyZXF1ZXN0IixlPT57aWYoZS5jb250ZXh0LnNlY3VyaXR5Py5ub25jZSlyZXR1cm47Y29uc3Qgcz1yZXNvbHZlU2VjdXJpdHlSdWxlcyhlKTtpZihzLmVuYWJsZWQmJnMubm9uY2Upe2NvbnN0IHM9ZnVuY3Rpb24oKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDE4KTtyZXR1cm4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhlKSxidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZSkpfSgpO2UuY29udGV4dC5zZWN1cml0eS5ub25jZT1zfX0pLGUuaG9va3MuaG9vaygicmVuZGVyOmh0bWwiLChlLHtldmVudDpzfSk9Pntjb25zdCBkPXJlc29sdmVTZWN1cml0eVJ1bGVzKHMpO2lmKCEoZC5lbmFibGVkJiZkLmhlYWRlcnMmJmQuaGVhZGVycy5jb250ZW50U2VjdXJpdHlQb2xpY3kmJmQubm9uY2UpKXJldHVybjtjb25zdCBtPXMuY29udGV4dC5zZWN1cml0eS5ub25jZSxoPVsiYm9keSIsImJvZHlBcHBlbmQiLCJib2R5UHJlcGVuZCIsImhlYWQiXTtmb3IoY29uc3QgcyBvZiBoKWVbc109ZVtzXS5tYXAoZT0+aW5qZWN0Tm9uY2VUb1RhZ3MoZSxtKSl9KX0sX2hhUVhkRHY5a0FEaGs4UUFxTnpOTXhDTzVJSGNZc0RHUExibngzYTdIUGM9ZT0+e2UuaG9va3MuaG9vaygicmVuZGVyOmh0bWwiLChlLHtldmVudDpzfSk9PntpZihlLmlzbGFuZClyZXR1cm47Y29uc3QgZD1yZXNvbHZlU2VjdXJpdHlSdWxlcyhzKTtpZihkLmVuYWJsZWQmJmQuaGVhZGVycyl7Y29uc3QgZT1kLmhlYWRlcnM7aWYoZS5jb250ZW50U2VjdXJpdHlQb2xpY3kpe2NvbnN0IGQ9ZS5jb250ZW50U2VjdXJpdHlQb2xpY3ksbT1zLmNvbnRleHQuc2VjdXJpdHk/Lm5vbmNlLGg9cy5jb250ZXh0LnNlY3VyaXR5Py5oYXNoZXM/LnNjcmlwdCxnPXMuY29udGV4dC5zZWN1cml0eT8uaGFzaGVzPy5zdHlsZTtlLmNvbnRlbnRTZWN1cml0eVBvbGljeT1mdW5jdGlvbihlLHMsZCxtKXtjb25zdCBoPU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5tYXAoKFtlLGhdKT0+e2lmKCJib29sZWFuIj09dHlwZW9mIGgpcmV0dXJuW2UsaF07Y29uc3QgZz0oInN0cmluZyI9PXR5cGVvZiBoP2guc3BsaXQoIiAiKS5tYXAoZT0+ZS50cmltKCkpLmZpbHRlcihlPT5lKTpoKS5maWx0ZXIoZT0+IWUuc3RhcnRzV2l0aCgiJ25vbmNlLSIpfHwiJ25vbmNlLXt7bm9uY2V9fSciPT09ZXx8KGNvbnNvbGUud2FybigiW251eHQtc2VjdXJpdHldIHJlbW92aW5nIHN0YXRpYyBub25jZSBmcm9tIENTUCBoZWFkZXIiKSwhMSkpLm1hcChlPT4iJ25vbmNlLXt7bm9uY2V9fSciPT09ZT9zP2Anbm9uY2UtJHtzfSdgOiIiOmUpLmZpbHRlcihlPT5lKTtyZXR1cm5bInNjcmlwdC1zcmMiLCJzY3JpcHQtc3JjLWVsZW0iXS5pbmNsdWRlcyhlKSYmZCYmZy5wdXNoKC4uLmQpLFsic3R5bGUtc3JjIiwic3R5bGUtc3JjLWVsZW0iXS5pbmNsdWRlcyhlKSYmbSYmZy5wdXNoKC4uLm0pLFtlLGddfSkpO3JldHVybiBofShkLG0saCxnKX19fSl9O2NvbnN0IF9NQlV5bERLVHBzRFVTVkcyUEo2TWdrNGJ0blVXMTEybXBnSkVyb0hWX0k9ZT0+e2UuaG9va3MuaG9vaygicmVuZGVyOnJlc3BvbnNlIiwoZSx7ZXZlbnQ6c30pPT57Y29uc3QgZD1yZXNvbHZlU2VjdXJpdHlSdWxlcyhzKTtpZihkLmVuYWJsZWQmJmQuaGVhZGVycyl7Y29uc3QgZT1kLmhlYWRlcnM7T2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW2UsZF0pPT57Y29uc3QgbT1mdW5jdGlvbihlKXtyZXR1cm4gdmdbZV19KGUpO2lmKCExPT09ZCl7Y29uc3R7aGVhZGVyczplfT1nZXRSb3V0ZVJ1bGVzKHMpLGQ9ZT8uW21dO2Q9PT1nZXRSZXNwb25zZUhlYWRlcihzLG0pJiZyZW1vdmVSZXNwb25zZUhlYWRlcihzLG0pfWVsc2V7Y29uc3QgaD1mdW5jdGlvbihlLHMpe2lmKCExPT09cylyZXR1cm4iIjtpZigiY29udGVudFNlY3VyaXR5UG9saWN5Ij09PWUpe2NvbnN0IGU9cztyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkuZmlsdGVyKChbLGVdKT0+ITEhPT1lKS5tYXAoKFtlLHNdKT0+InVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiPT09ZT8idXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0czsiOmAke2V9ICR7InN0cmluZyI9PXR5cGVvZiBzP3M6cy5tYXAoZT0+ZS50cmltKCkpLmpvaW4oIiAiKX07YCkuam9pbigiICIpfWlmKCJzdHJpY3RUcmFuc3BvcnRTZWN1cml0eSI9PT1lKXtjb25zdCBlPXM7cmV0dXJuW2BtYXgtYWdlPSR7ZS5tYXhBZ2V9YCxlLmluY2x1ZGVTdWJkb21haW5zJiYiaW5jbHVkZVN1YkRvbWFpbnMiLGUucHJlbG9hZCYmInByZWxvYWQiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiOyAiKX1pZigicGVybWlzc2lvbnNQb2xpY3kiPT09ZSl7Y29uc3QgZT1zO3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFssZV0pPT4hMSE9PWUpLm1hcCgoW2Usc10pPT4ic3RyaW5nIj09dHlwZW9mIHM/YCR7ZX09JHtzfWA6YCR7ZX09KCR7cy5qb2luKCIgIil9KWApLmpvaW4oIiwgIil9cmV0dXJuIHN9KGUsZCk7c2V0UmVzcG9uc2VIZWFkZXIocyxtLGgpfX0pfX0pfSxfb1A4emllVjlYVTNXYlljSFE0amoyU3Z6UThPdW15Qm9kRF9wSkxhMXNtYz1lPT57ZS5ob29rcy5ob29rKCJiZWZvcmVSZXNwb25zZSIsZT0+e2NvbnN0IHM9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSk7cy5lbmFibGVkJiZzLmhpZGVQb3dlcmVkQnkmJiFlLm5vZGUucmVzLmhlYWRlcnNTZW50JiZyZW1vdmVSZXNwb25zZUhlYWRlcihlLCJ4LXBvd2VyZWQtYnkiKX0pfSxfaTlKYUIzWXFXdTFBcXdfRzJGTFBYN0NUbWNPcFM1TE1xZGQwVlRUNlQwST1hc3luYyBlPT57e2NvbnN0IHM9YXdhaXQgdXNlU3RvcmFnZSgiYXNzZXRzOm51eHQtc2VjdXJpdHkiKS5nZXRJdGVtKCJoZWFkZXJzLmpzb24iKXx8e307ZS5ob29rcy5ob29rKCJiZWZvcmVSZXNwb25zZSIsZT0+e2NvbnN0IGQ9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSk7aWYoZC5lbmFibGVkJiZkLnNzZyYmZC5zc2cubml0cm9IZWFkZXJzKXtjb25zdCBkPWUucGF0aC5zcGxpdCgiPyIpWzBdO2QmJnNbZF0mJnNldFJlc3BvbnNlSGVhZGVycyhlLHNbZF0pfX0pfX0sSWc9W19zNjVhMDdIaHQwTWs2TXRsRzUxQ3E5aGJpWjFYaENPRURRNFFjelRUQnVnLF9BN3NXWHIycTFtcXRZcm1tOUxtWXdqREE5aVRrQ2R4T1JjenhqRUh3Vm8sZnVuY3Rpb24oZSl7ZS5ob29rcy5ob29rKCJyZW5kZXI6aHRtbCIsZT0+e2UuaGVhZC5wdXNoKCc8c2NyaXB0PiJ1c2Ugc3RyaWN0IjsoKCk9Pntjb25zdCB0PXdpbmRvdyxlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjPVsiZGFyayIsImxpZ2h0Il0sbj1nZXRTdG9yYWdlVmFsdWUoImxvY2FsU3RvcmFnZSIsIm51eHQtY29sb3ItbW9kZSIpfHwic3lzdGVtIjtsZXQgaT1uPT09InN5c3RlbSI/dSgpOm47Y29uc3Qgcj1lLmdldEF0dHJpYnV0ZSgiZGF0YS1jb2xvci1tb2RlLWZvcmNlZCIpO3ImJihpPXIpLGwoaSksdFsiX19OVVhUX0NPTE9SX01PREVfXyJdPXtwcmVmZXJlbmNlOm4sdmFsdWU6aSxnZXRDb2xvclNjaGVtZTp1LGFkZENvbG9yU2NoZW1lOmwscmVtb3ZlQ29sb3JTY2hlbWU6ZH07ZnVuY3Rpb24gbChvKXtjb25zdCBzPSIiK28rIiIsYT0iIjtlLmNsYXNzTGlzdD9lLmNsYXNzTGlzdC5hZGQocyk6ZS5jbGFzc05hbWUrPSIgIitzLGEmJmUuc2V0QXR0cmlidXRlKCJkYXRhLSIrYSxvKX1mdW5jdGlvbiBkKG8pe2NvbnN0IHM9IiIrbysiIixhPSIiO2UuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LnJlbW92ZShzKTplLmNsYXNzTmFtZT1lLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAocywiZyIpLCIiKSxhJiZlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS0iK2EpfWZ1bmN0aW9uIGYobyl7cmV0dXJuIHQubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lIitvKyIpIil9ZnVuY3Rpb24gdSgpe2lmKHQubWF0Y2hNZWRpYSYmZigiIikubWVkaWEhPT0ibm90IGFsbCIpe2Zvcihjb25zdCBvIG9mIGMpaWYoZigiOiIrbykubWF0Y2hlcylyZXR1cm4gb31yZXR1cm4ibGlnaHQifX0pKCk7ZnVuY3Rpb24gZ2V0U3RvcmFnZVZhbHVlKHQsZSl7c3dpdGNoKHQpe2Nhc2UibG9jYWxTdG9yYWdlIjpyZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpO2Nhc2Uic2Vzc2lvblN0b3JhZ2UiOnJldHVybiB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShlKTtjYXNlImNvb2tpZSI6cmV0dXJuIGdldENvb2tpZShlKTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBnZXRDb29raWUodCl7Y29uc3QgYz0oIjsgIit3aW5kb3cuZG9jdW1lbnQuY29va2llKS5zcGxpdCgiOyAiK3QrIj0iKTtpZihjLmxlbmd0aD09PTIpcmV0dXJuIGMucG9wKCk/LnNwbGl0KCI7Iikuc2hpZnQoKX08XC9zY3JpcHQ+Jyl9KX0sX3FxSnVYdGtKVGx2TWtFYVdGS2dtdkxOdmJXc3R3TUtpSW1rM0xrcFFNLF9aampoem1uZnA2azROcVh5RnFFMmh5b2NKczdCWGZnQmxOSzd1Q2FYYTVZLF9JN2l2ZUFGU1RrVVNWdDVEdWF0RUo3OU5rbWtzaHd5bVNVNGhZMUNUVnMsZT0+e30sXzZVNFpnS2NyTkZPNHJRN190SUIxZXRjYXVra3Vzd0ppamJnQUoyMzAsX2hhUVhkRHY5a0FEaGs4UUFxTnpOTXhDTzVJSGNZc0RHUExibngzYTdIUGMsZT0+e30sX01CVXlsREtUcHNEVVNWRzJQSjZNZ2s0YnRuVVcxMTJtcGdKRXJvSFZfSSxfb1A4emllVjlYVTNXYlljSFE0amoyU3Z6UThPdW15Qm9kRF9wSkxhMXNtYyxfaTlKYUIzWXFXdTFBcXdfRzJGTFBYN0NUbWNPcFM1TE1xZGQwVlRUNlQwSV0sQ2c9ZGVmaW5lRXZlbnRIYW5kbGVyKGU9Pntjb25zdCBzPWUucGF0aHx8IiI7aWYocy5zdGFydHNXaXRoKCIvYXBpLyIpfHxzLnN0YXJ0c1dpdGgoIi9fbnV4dCIpfHxzLnN0YXJ0c1dpdGgoIi9pbWFnZXMvIikpcmV0dXJuO2NvbnN0IGQ9Z2V0UXVlcnkoZSkucmVmOyJzdHJpbmciPT10eXBlb2YgZCYmbWcudGVzdChkKSYmKGdldENvb2tpZShlLCJyZWYiKXx8c2V0Q29va2llKGUsInJlZiIsZCx7aHR0cE9ubHk6ITAsc2VjdXJlOiEwLHNhbWVTaXRlOiJsYXgiLG1heEFnZTo2MDQ4MDAscGF0aDoiLyJ9KSl9KSxUZz1kZWZpbmVFdmVudEhhbmRsZXIoKCk9Pnt9KSxSZz1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksRWc9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxPZz1PYmplY3QuZnJlZXplKHsuLi5SZywuLi5FZ30pO09iamVjdC5mcmVlemUoey4uLk9nLGJvZHk6IiIsaGlkZGVuOiExfSk7Y29uc3QgUGc9T2JqZWN0LmtleXMoUmcpLmNvbmNhdChbInByb3ZpZGVyIl0pO2Z1bmN0aW9uIGdldEljb25zKGUscyxkKXtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCksaD1PYmplY3QuY3JlYXRlKG51bGwpLGc9e3ByZWZpeDplLnByZWZpeCxpY29uczptfSx4PWUuaWNvbnMsJD1lLmFsaWFzZXN8fE9iamVjdC5jcmVhdGUobnVsbCk7ZS5sYXN0TW9kaWZpZWQmJihnLmxhc3RNb2RpZmllZD1lLmxhc3RNb2RpZmllZCk7Y29uc3QgUz1mdW5jdGlvbihlLHMpe2NvbnN0IGQ9ZS5pY29ucyxtPWUuYWxpYXNlc3x8T2JqZWN0LmNyZWF0ZShudWxsKSxoPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuKHN8fE9iamVjdC5rZXlzKGQpLmNvbmNhdChPYmplY3Qua2V5cyhtKSkpLmZvckVhY2goZnVuY3Rpb24gcmVzb2x2ZShlKXtpZihkW2VdKXJldHVybiBoW2VdPVtdO2lmKCEoZSBpbiBoKSl7aFtlXT1udWxsO2NvbnN0IHM9bVtlXSYmbVtlXS5wYXJlbnQsZD1zJiZyZXNvbHZlKHMpO2QmJihoW2VdPVtzXS5jb25jYXQoZCkpfXJldHVybiBoW2VdfSksaH0oZSxzKTtsZXQgaj0hMDtmb3IoY29uc3QgZSBpbiBTKVNbZV0mJih4W2VdPyhtW2VdPXsuLi54W2VdfSxqPSExKTooaFtlXT17Li4uJFtlXX0sZy5hbGlhc2VzPWgpKTtyZXR1cm4gUGcuZm9yRWFjaChzPT57cyBpbiBlJiYoZ1tzXT1lW3NdKX0pLGomJiEwIT09ZD9udWxsOmd9ZnVuY3Rpb24gY3JlYXRlUmVtb3RlQ29sbGVjdGlvbihlKXtsZXQgcztyZXR1cm4gYXN5bmMoKT0+e2lmKHMpcmV0dXJuIHM7Y29uc3QgZD1hd2FpdCBmZXRjaChlKS50aGVuKGU9PmUuanNvbigpKTtyZXR1cm4gcz1kLGR9fWNvbnN0IE5nPXthY2FkZW1pY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYWNhZGVtaWNvbnMvaWNvbnMuanNvbiIpLCJha2FyLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYWthci1pY29ucy9pY29ucy5qc29uIiksImFudC1kZXNpZ24iOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9hbnQtZGVzaWduL2ljb25zLmpzb24iKSxhcmN0aWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2FyY3RpY29ucy9pY29ucy5qc29uIiksYmFzaWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Jhc2lsL2ljb25zLmpzb24iKSxiaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYmkvaWNvbnMuanNvbiIpLCJiaXRjb2luLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYml0Y29pbi1pY29ucy9pY29ucy5qc29uIiksYnBtbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYnBtbi9pY29ucy5qc29uIiksYnJhbmRpY286Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2JyYW5kaWNvL2ljb25zLmpzb24iKSxieDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYngvaWNvbnMuanNvbiIpLGJ4bDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYnhsL2ljb25zLmpzb24iKSxieHM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2J4cy9pY29ucy5qc29uIiksYnl0ZXNpemU6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2J5dGVzaXplL2ljb25zLmpzb24iKSxjYXJib246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NhcmJvbi9pY29ucy5qc29uIiksY2F0cHB1Y2NpbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2F0cHB1Y2Npbi9pY29ucy5qc29uIiksY2JpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jYmkvaWNvbnMuanNvbiIpLGNoYXJtOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jaGFybS9pY29ucy5qc29uIiksY2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NpL2ljb25zLmpzb24iKSxjaWI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NpYi9pY29ucy5qc29uIiksY2lmOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jaWYvaWNvbnMuanNvbiIpLGNpbDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2lsL2ljb25zLmpzb24iKSwiY2lyY2xlLWZsYWdzIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2lyY2xlLWZsYWdzL2ljb25zLmpzb24iKSxjaXJjdW06Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NpcmN1bS9pY29ucy5qc29uIiksY2xhcml0eTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2xhcml0eS9pY29ucy5qc29uIiksY29kZXg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NvZGV4L2ljb25zLmpzb24iKSxjb2RpY29uOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jb2RpY29uL2ljb25zLmpzb24iKSxjb3ZpZDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY292aWQvaWNvbnMuanNvbiIpLGNyeXB0b2N1cnJlbmN5OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jcnlwdG9jdXJyZW5jeS9pY29ucy5qc29uIiksImNyeXB0b2N1cnJlbmN5LWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY3J5cHRvY3VycmVuY3ktY29sb3IvaWNvbnMuanNvbiIpLGN1aWRhOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jdWlkYS9pY29ucy5qc29uIiksZGFzaGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9kYXNoaWNvbnMvaWNvbnMuanNvbiIpLGRldmljb246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Rldmljb24vaWNvbnMuanNvbiIpLCJkZXZpY29uLXBsYWluIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZGV2aWNvbi1wbGFpbi9pY29ucy5qc29uIiksImRpbmtpZS1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2RpbmtpZS1pY29ucy9pY29ucy5qc29uIiksImR1by1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2R1by1pY29ucy9pY29ucy5qc29uIiksZWk6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2VpL2ljb25zLmpzb24iKSxlbDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZWwvaWNvbnMuanNvbiIpLGVtb2ppb25lOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9lbW9qaW9uZS9pY29ucy5qc29uIiksImVtb2ppb25lLW1vbm90b25lIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZW1vamlvbmUtbW9ub3RvbmUvaWNvbnMuanNvbiIpLCJlbW9qaW9uZS12MSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Vtb2ppb25lLXYxL2ljb25zLmpzb24iKSxlbnR5cG86Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2VudHlwby9pY29ucy5qc29uIiksImVudHlwby1zb2NpYWwiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9lbnR5cG8tc29jaWFsL2ljb25zLmpzb24iKSwiZW9zLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZW9zLWljb25zL2ljb25zLmpzb24iKSxlcDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZXAvaWNvbnMuanNvbiIpLGV0OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ldC9pY29ucy5qc29uIiksZXZhOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ldmEvaWNvbnMuanNvbiIpLGY3OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mNy9pY29ucy5qc29uIiksZmE6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhL2ljb25zLmpzb24iKSwiZmEtYnJhbmRzIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmEtYnJhbmRzL2ljb25zLmpzb24iKSwiZmEtcmVndWxhciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhLXJlZ3VsYXIvaWNvbnMuanNvbiIpLCJmYS1zb2xpZCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhLXNvbGlkL2ljb25zLmpzb24iKSwiZmE2LWJyYW5kcyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNi1icmFuZHMvaWNvbnMuanNvbiIpLCJmYTYtcmVndWxhciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNi1yZWd1bGFyL2ljb25zLmpzb24iKSwiZmE2LXNvbGlkIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmE2LXNvbGlkL2ljb25zLmpzb24iKSwiZmE3LWJyYW5kcyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNy1icmFuZHMvaWNvbnMuanNvbiIpLCJmYTctcmVndWxhciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNy1yZWd1bGFyL2ljb25zLmpzb24iKSwiZmE3LXNvbGlkIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmE3LXNvbGlkL2ljb25zLmpzb24iKSxmYWQ6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhZC9pY29ucy5qc29uIiksZmFtaWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhbWljb25zL2ljb25zLmpzb24iKSxmZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmUvaWNvbnMuanNvbiIpLGZlYXRoZXI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZlYXRoZXIvaWNvbnMuanNvbiIpLCJmaWxlLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmlsZS1pY29ucy9pY29ucy5qc29uIiksZmxhZzpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmxhZy9pY29ucy5qc29uIiksZmxhZ3BhY2s6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsYWdwYWNrL2ljb25zLmpzb24iKSwiZmxhdC1jb2xvci1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsYXQtY29sb3ItaWNvbnMvaWNvbnMuanNvbiIpLCJmbGF0LXVpIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmxhdC11aS9pY29ucy5qc29uIiksZmxvd2JpdGU6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Zsb3diaXRlL2ljb25zLmpzb24iKSxmbHVlbnQ6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC9pY29ucy5qc29uIiksImZsdWVudC1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC1jb2xvci9pY29ucy5qc29uIiksImZsdWVudC1lbW9qaSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC1lbW9qaS9pY29ucy5qc29uIiksImZsdWVudC1lbW9qaS1mbGF0IjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmx1ZW50LWVtb2ppLWZsYXQvaWNvbnMuanNvbiIpLCJmbHVlbnQtZW1vamktaGlnaC1jb250cmFzdCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC1lbW9qaS1oaWdoLWNvbnRyYXN0L2ljb25zLmpzb24iKSwiZmx1ZW50LW1kbDIiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mbHVlbnQtbWRsMi9pY29ucy5qc29uIiksZm9udGVsaWNvOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mb250ZWxpY28vaWNvbnMuanNvbiIpLGZvbnRpc3RvOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mb250aXN0by9pY29ucy5qc29uIiksZm9ybWtpdDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZm9ybWtpdC9pY29ucy5qc29uIiksZm91bmRhdGlvbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZm91bmRhdGlvbi9pY29ucy5qc29uIiksZnhlbW9qaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZnhlbW9qaS9pY29ucy5qc29uIiksZ2FsYTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZ2FsYS9pY29ucy5qc29uIiksImdhbWUtaWNvbnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9nYW1lLWljb25zL2ljb25zLmpzb24iKSxnYXJkZW46Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2dhcmRlbi9pY29ucy5qc29uIiksZ2VvOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9nZW8vaWNvbnMuanNvbiIpLGdnOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9nZy9pY29ucy5qc29uIiksZ2lzOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9naXMvaWNvbnMuanNvbiIpLCJncmF2aXR5LXVpIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZ3Jhdml0eS11aS9pY29ucy5qc29uIiksZ3JpZGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ncmlkaWNvbnMvaWNvbnMuanNvbiIpLCJncm9tbWV0LWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZ3JvbW1ldC1pY29ucy9pY29ucy5qc29uIiksZ3VpZGFuY2U6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2d1aWRhbmNlL2ljb25zLmpzb24iKSxoZWFsdGhpY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaGVhbHRoaWNvbnMvaWNvbnMuanNvbiIpLGhlcm9pY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaGVyb2ljb25zL2ljb25zLmpzb24iKSwiaGVyb2ljb25zLW91dGxpbmUiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9oZXJvaWNvbnMtb3V0bGluZS9pY29ucy5qc29uIiksImhlcm9pY29ucy1zb2xpZCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2hlcm9pY29ucy1zb2xpZC9pY29ucy5qc29uIiksaHVnZWljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9odWdlaWNvbnMvaWNvbnMuanNvbiIpLGh1bWJsZWljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9odW1ibGVpY29ucy9pY29ucy5qc29uIiksaWM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ljL2ljb25zLmpzb24iKSwiaWNvbW9vbi1mcmVlIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbW9vbi1mcmVlL2ljb25zLmpzb24iKSwiaWNvbi1wYXJrIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbi1wYXJrL2ljb25zLmpzb24iKSwiaWNvbi1wYXJrLW91dGxpbmUiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9pY29uLXBhcmstb3V0bGluZS9pY29ucy5qc29uIiksImljb24tcGFyay1zb2xpZCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ljb24tcGFyay1zb2xpZC9pY29ucy5qc29uIiksImljb24tcGFyay10d290b25lIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbi1wYXJrLXR3b3RvbmUvaWNvbnMuanNvbiIpLGljb25hbW9vbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbmFtb29uL2ljb25zLmpzb24iKSxpY29ub2lyOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9pY29ub2lyL2ljb25zLmpzb24iKSxpY29uczg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ljb25zOC9pY29ucy5qc29uIiksaWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2lsL2ljb25zLmpzb24iKSxpb246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2lvbi9pY29ucy5qc29uIiksaXd3YTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaXd3YS9pY29ucy5qc29uIiksaXg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2l4L2ljb25zLmpzb24iKSxqYW06Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2phbS9pY29ucy5qc29uIiksbGE6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xhL2ljb25zLmpzb24iKSwibGV0cy1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xldHMtaWNvbnMvaWNvbnMuanNvbiIpLCJsaW5lLW1kIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbGluZS1tZC9pY29ucy5qc29uIiksbGluZWljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9saW5laWNvbnMvaWNvbnMuanNvbiIpLGxvZ29zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9sb2dvcy9pY29ucy5qc29uIiksbHM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xzL2ljb25zLmpzb24iKSxsc2ljb246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xzaWNvbi9pY29ucy5qc29uIiksbHVjaWRlOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9sdWNpZGUvaWNvbnMuanNvbiIpLCJsdWNpZGUtbGFiIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbHVjaWRlLWxhYi9pY29ucy5qc29uIiksbWFnZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWFnZS9pY29ucy5qc29uIiksbWFqZXN0aWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hamVzdGljb25zL2ljb25zLmpzb24iKSxtYWtpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tYWtpL2ljb25zLmpzb24iKSxtYXA6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hcC9pY29ucy5qc29uIiksbWFya2V0ZXE6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hcmtldGVxL2ljb25zLmpzb24iKSwibWF0ZXJpYWwtaWNvbi10aGVtZSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hdGVyaWFsLWljb24tdGhlbWUvaWNvbnMuanNvbiIpLCJtYXRlcmlhbC1zeW1ib2xzIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWF0ZXJpYWwtc3ltYm9scy9pY29ucy5qc29uIiksIm1hdGVyaWFsLXN5bWJvbHMtbGlnaHQiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tYXRlcmlhbC1zeW1ib2xzLWxpZ2h0L2ljb25zLmpzb24iKSxtZGk6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21kaS9pY29ucy5qc29uIiksIm1kaS1saWdodCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21kaS1saWdodC9pY29ucy5qc29uIiksIm1lZGljYWwtaWNvbiI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21lZGljYWwtaWNvbi9pY29ucy5qc29uIiksbWVtb3J5OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tZW1vcnkvaWNvbnMuanNvbiIpLG1ldGVvY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWV0ZW9jb25zL2ljb25zLmpzb24iKSwibWV0ZW9yLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWV0ZW9yLWljb25zL2ljb25zLmpzb24iKSxtaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWkvaWNvbnMuanNvbiIpLG1pbmdjdXRlOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9taW5nY3V0ZS9pY29ucy5qc29uIiksIm1vbm8taWNvbnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tb25vLWljb25zL2ljb25zLmpzb24iKSxteW5hdWk6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL215bmF1aS9pY29ucy5qc29uIiksbmltYnVzOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9uaW1idXMvaWNvbnMuanNvbiIpLG5vbmljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ub25pY29ucy9pY29ucy5qc29uIiksbm90bzpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbm90by9pY29ucy5qc29uIiksIm5vdG8tdjEiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ub3RvLXYxL2ljb25zLmpzb24iKSxucms6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL25yay9pY29ucy5qc29uIiksb2N0aWNvbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vb2N0aWNvbi9pY29ucy5qc29uIiksb2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL29pL2ljb25zLmpzb24iKSxvb3VpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9vb3VpL2ljb25zLmpzb24iKSxvcGVubW9qaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vb3Blbm1vamkvaWNvbnMuanNvbiIpLG91aTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vb3VpL2ljb25zLmpzb24iKSxwYWphbWFzOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wYWphbWFzL2ljb25zLmpzb24iKSxwZXBpY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcGVwaWNvbnMvaWNvbnMuanNvbiIpLCJwZXBpY29ucy1wZW5jaWwiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wZXBpY29ucy1wZW5jaWwvaWNvbnMuanNvbiIpLCJwZXBpY29ucy1wb3AiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wZXBpY29ucy1wb3AvaWNvbnMuanNvbiIpLCJwZXBpY29ucy1wcmludCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3BlcGljb25zLXByaW50L2ljb25zLmpzb24iKSxwaDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcGgvaWNvbnMuanNvbiIpLHBpY29uOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9waWNvbi9pY29ucy5qc29uIikscGl4ZWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3BpeGVsL2ljb25zLmpzb24iKSxwaXhlbGFydGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9waXhlbGFydGljb25zL2ljb25zLmpzb24iKSxwcmltZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcHJpbWUvaWNvbnMuanNvbiIpLHByb2ljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wcm9pY29ucy9pY29ucy5qc29uIikscHM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3BzL2ljb25zLmpzb24iKSwicWxlbWVudGluZS1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3FsZW1lbnRpbmUtaWNvbnMvaWNvbnMuanNvbiIpLHF1aWxsOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9xdWlsbC9pY29ucy5qc29uIiksInJhZGl4LWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcmFkaXgtaWNvbnMvaWNvbnMuanNvbiIpLHJhcGhhZWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3JhcGhhZWwvaWNvbnMuanNvbiIpLHJpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9yaS9pY29ucy5qc29uIiksInJpdmV0LWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcml2ZXQtaWNvbnMvaWNvbnMuanNvbiIpLHJvZW50Z2VuOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9yb2VudGdlbi9pY29ucy5qc29uIiksc2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3NpL2ljb25zLmpzb24iKSwic2ktZ2x5cGgiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zaS1nbHlwaC9pY29ucy5qc29uIiksc2lkZWtpY2tpY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc2lkZWtpY2tpY29ucy9pY29ucy5qc29uIiksInNpbXBsZS1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3NpbXBsZS1pY29ucy9pY29ucy5qc29uIiksInNpbXBsZS1saW5lLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc2ltcGxlLWxpbmUtaWNvbnMvaWNvbnMuanNvbiIpLCJza2lsbC1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3NraWxsLWljb25zL2ljb25zLmpzb24iKSxzb2xhcjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc29sYXIvaWNvbnMuanNvbiIpLHN0YXNoOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdGFzaC9pY29ucy5qc29uIiksc3RyZWFtbGluZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtYmxvY2siOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWJsb2NrL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtY29sb3IvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLWN5YmVyIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1jeWJlci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtY3liZXItY29sb3IiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWN5YmVyLWNvbG9yL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1lbW9qaXMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWVtb2ppcy9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtZmxleCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtZmxleC9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtZmxleC1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtZmxleC1jb2xvci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtZnJlZWhhbmQiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWZyZWVoYW5kL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1mcmVlaGFuZC1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtZnJlZWhhbmQtY29sb3IvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLWthbWVsZW9uLWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1rYW1lbGVvbi1jb2xvci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtbG9nb3MiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWxvZ29zL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1waXhlbCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtcGl4ZWwvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLXBsdW1wIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1wbHVtcC9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtcGx1bXAtY29sb3IiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLXBsdW1wLWNvbG9yL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1zaGFycCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtc2hhcnAvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLXNoYXJwLWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1zaGFycC1jb2xvci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtc3RpY2tpZXMtY29sb3IiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLXN0aWNraWVzLWNvbG9yL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS11bHRpbWF0ZSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtdWx0aW1hdGUvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLXVsdGltYXRlLWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS11bHRpbWF0ZS1jb2xvci9pY29ucy5qc29uIiksc3Vid2F5OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdWJ3YXkvaWNvbnMuanNvbiIpLCJzdmctc3Bpbm5lcnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdmctc3Bpbm5lcnMvaWNvbnMuanNvbiIpLCJzeXN0ZW0tdWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3lzdGVtLXVpY29ucy9pY29ucy5qc29uIiksdGFibGVyOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi90YWJsZXIvaWNvbnMuanNvbiIpLHRkZXNpZ246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3RkZXNpZ24vaWNvbnMuanNvbiIpLHRlZW55aWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3RlZW55aWNvbnMvaWNvbnMuanNvbiIpLHRlbWFraTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdGVtYWtpL2ljb25zLmpzb24iKSx0b2tlbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdG9rZW4vaWNvbnMuanNvbiIpLCJ0b2tlbi1icmFuZGVkIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdG9rZW4tYnJhbmRlZC9pY29ucy5qc29uIiksdG9wY29hdDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdG9wY29hdC9pY29ucy5qc29uIiksdHdlbW9qaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdHdlbW9qaS9pY29ucy5qc29uIiksdHlwY246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3R5cGNuL2ljb25zLmpzb24iKSx1aWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3VpbC9pY29ucy5qc29uIiksdWltOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi91aW0vaWNvbnMuanNvbiIpLHVpczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdWlzL2ljb25zLmpzb24iKSx1aXQ6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3VpdC9pY29ucy5qc29uIiksdWl3OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi91aXcvaWNvbnMuanNvbiIpLHVuanM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3VuanMvaWNvbnMuanNvbiIpLHZhYWRpbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdmFhZGluL2ljb25zLmpzb24iKSx2czpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdnMvaWNvbnMuanNvbiIpLCJ2c2NvZGUtaWNvbnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi92c2NvZGUtaWNvbnMvaWNvbnMuanNvbiIpLHdlYnN5bWJvbDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vd2Vic3ltYm9sL2ljb25zLmpzb24iKSx3ZXVpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi93ZXVpL2ljb25zLmpzb24iKSx3aGg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3doaC9pY29ucy5qc29uIiksd2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3dpL2ljb25zLmpzb24iKSx3cGY6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3dwZi9pY29ucy5qc29uIiksem1kaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vem1kaS9pY29ucy5qc29uIiksem9uZGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi96b25kaWNvbnMvaWNvbnMuanNvbiIpfSxEZz1kZWZpbmVDYWNoZWRFdmVudEhhbmRsZXIoYXN5bmMgZT0+e2NvbnN0IHM9Z2V0UmVxdWVzdFVSTChlKTtpZighcylyZXR1cm4gY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwMCxtZXNzYWdlOiJJbnZhbGlkIGljb24gcmVxdWVzdCJ9KTtjb25zdCBkPU1pLmljb24sbT1lLmNvbnRleHQucGFyYW1zPy5jb2xsZWN0aW9uPy5yZXBsYWNlKC9cLmpzb24kLywiIiksaD1tP2F3YWl0KE5nW21dPy4oKSk6bnVsbCxnPWQuaWNvbmlmeUFwaUVuZHBvaW50fHwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24iLHg9cy5zZWFyY2hQYXJhbXMuZ2V0KCJpY29ucyIpPy5zcGxpdCgiLCIpO2lmKGgmJng/Lmxlbmd0aCl7Y29uc3QgZT1nZXRJY29ucyhoLHgpO3JldHVybiByci5kZWJ1ZyhgW0ljb25dIHNlcnZpbmcgJHsoeHx8W10pLm1hcChlPT4iYCIrbSsiOiIrZSsiYCIpLmpvaW4oIiwiKX0gZnJvbSBidW5kbGVkIGNvbGxlY3Rpb25gKSxlfWlmKCEwPT09ZC5mYWxsYmFja1RvQXBpfHwic2VydmVyLW9ubHkiPT09ZC5mYWxsYmFja1RvQXBpKXtjb25zdCBlPW5ldyBVUkwoIi4vIitiYXNlbmFtZShzLnBhdGhuYW1lKStzLnNlYXJjaCxnKTtpZihyci5kZWJ1ZyhgW0ljb25dIGZldGNoaW5nICR7KHh8fFtdKS5tYXAoZT0+ImAiK20rIjoiK2UrImAiKS5qb2luKCIsIil9IGZyb20gaWNvbmlmeSBhcGlgKSxlLmhvc3QhPT1uZXcgVVJMKGcpLmhvc3QpcmV0dXJuIGNyZWF0ZUVycm9yJDEoe3N0YXR1czo0MDAsbWVzc2FnZToiSW52YWxpZCBpY29uIHJlcXVlc3QifSk7dHJ5e3JldHVybiBhd2FpdCAkZmV0Y2goZS5ocmVmKX1jYXRjaChlKXtyZXR1cm4gcnIuZXJyb3IoZSksNDA0PT09ZS5zdGF0dXM/Y3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwNH0pOmNyZWF0ZUVycm9yJDEoe3N0YXR1czo1MDAsbWVzc2FnZToiRmFpbGVkIHRvIGZldGNoIGZhbGxiYWNrIGljb24ifSl9fXJldHVybiBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDA0fSl9LHtncm91cDoibnV4dCIsbmFtZToiaWNvbiIsZ2V0S2V5KGUpe2NvbnN0IHM9ZS5jb250ZXh0LnBhcmFtcz8uY29sbGVjdGlvbj8ucmVwbGFjZSgvXC5qc29uJC8sIiIpfHwidW5rbm93biIsZD1TdHJpbmcoZ2V0UXVlcnkoZSkuaWNvbnN8fCIiKTtyZXR1cm5gJHtzfV8ke2Quc3BsaXQoIiwiKVswXX1fJHtkLmxlbmd0aH1fJHtoYXNoJDIoZCl9YH0sc3dyOiEwLG1heEFnZTo2MDQ4MDB9KSxVZz17dGhyb3dFcnJvcjohMH0sZGVmYXVsdFNlY3VyaXR5Q29uZmlnPShlLHMpPT57Y29uc3QgZD17c3RyaWN0OnMsaGVhZGVyczp7Y3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeToic2FtZS1vcmlnaW4iLGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OiJzYW1lLW9yaWdpbiIsY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeToiY3JlZGVudGlhbGxlc3MiLGNvbnRlbnRTZWN1cml0eVBvbGljeTp7ImJhc2UtdXJpIjpbIidub25lJyJdLCJmb250LXNyYyI6WyInc2VsZiciLCJodHRwczoiLCJkYXRhOiJdLCJmb3JtLWFjdGlvbiI6WyInc2VsZiciXSwiZnJhbWUtYW5jZXN0b3JzIjpbIidzZWxmJyJdLCJpbWctc3JjIjpbIidzZWxmJyIsImRhdGE6Il0sIm9iamVjdC1zcmMiOlsiJ25vbmUnIl0sInNjcmlwdC1zcmMtYXR0ciI6WyInbm9uZSciXSwic3R5bGUtc3JjIjpbIidzZWxmJyIsImh0dHBzOiIsIid1bnNhZmUtaW5saW5lJyJdLCJzY3JpcHQtc3JjIjpbIidzZWxmJyIsImh0dHBzOiIsIid1bnNhZmUtaW5saW5lJyIsIidzdHJpY3QtZHluYW1pYyciLCInbm9uY2Ute3tub25jZX19JyJdLCJ1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzIjohMH0sb3JpZ2luQWdlbnRDbHVzdGVyOiI/MSIscmVmZXJyZXJQb2xpY3k6Im5vLXJlZmVycmVyIixzdHJpY3RUcmFuc3BvcnRTZWN1cml0eTp7bWF4QWdlOjE1NTUyZTMsaW5jbHVkZVN1YmRvbWFpbnM6ITB9LHhDb250ZW50VHlwZU9wdGlvbnM6Im5vc25pZmYiLHhETlNQcmVmZXRjaENvbnRyb2w6Im9mZiIseERvd25sb2FkT3B0aW9uczoibm9vcGVuIix4RnJhbWVPcHRpb25zOiJTQU1FT1JJR0lOIix4UGVybWl0dGVkQ3Jvc3NEb21haW5Qb2xpY2llczoibm9uZSIseFhTU1Byb3RlY3Rpb246IjAiLHBlcm1pc3Npb25zUG9saWN5OntjYW1lcmE6W10sImRpc3BsYXktY2FwdHVyZSI6W10sZnVsbHNjcmVlbjpbXSxnZW9sb2NhdGlvbjpbXSxtaWNyb3Bob25lOltdfX0scmVxdWVzdFNpemVMaW1pdGVyOnttYXhSZXF1ZXN0U2l6ZUluQnl0ZXM6MmU2LG1heFVwbG9hZEZpbGVSZXF1ZXN0SW5CeXRlczo4ZTYsLi4uVWd9LHJhdGVMaW1pdGVyOnt0b2tlbnNQZXJJbnRlcnZhbDoxNTAsaW50ZXJ2YWw6M2U1LGhlYWRlcnM6ITEsZHJpdmVyOntuYW1lOiJscnVDYWNoZSJ9LHdoaXRlTGlzdDp2b2lkIDAsaXBIZWFkZXI6dm9pZCAwLC4uLlVnfSx4c3NWYWxpZGF0b3I6e21ldGhvZHM6WyJHRVQiLCJQT1NUIl0sLi4uVWd9LGNvcnNIYW5kbGVyOntvcmlnaW46ZSxtZXRob2RzOlsiR0VUIiwiSEVBRCIsIlBVVCIsIlBBVENIIiwiUE9TVCIsIkRFTEVURSJdLHByZWZsaWdodDp7c3RhdHVzQ29kZToyMDR9fSxhbGxvd2VkTWV0aG9kc1Jlc3RyaWN0ZXI6e21ldGhvZHM6IioiLC4uLlVnfSxoaWRlUG93ZXJlZEJ5OiEwLGJhc2ljQXV0aDohMSxlbmFibGVkOiEwLGNzcmY6ITEsbm9uY2U6ITAscmVtb3ZlTG9nZ2VyczohMCxzc2c6e21ldGE6ITAsaGFzaFNjcmlwdHM6ITAsaGFzaFN0eWxlczohMSxuaXRyb0hlYWRlcnM6ITAsZXhwb3J0VG9QcmVzZXRzOiEwfSxzcmk6ITB9O3JldHVybiBkLmhlYWRlcnMuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeT0icmVxdWlyZS1jb3JwIixkLmhlYWRlcnMuY29udGVudFNlY3VyaXR5UG9saWN5PXsiYmFzZS11cmkiOlsiJ25vbmUnIl0sImRlZmF1bHQtc3JjIjpbIidub25lJyJdLCJjb25uZWN0LXNyYyI6WyInc2VsZiciXSwiZm9udC1zcmMiOlsiJ3NlbGYnIl0sImZvcm0tYWN0aW9uIjpbIidzZWxmJyJdLCJmcmFtZS1hbmNlc3RvcnMiOlsiJ3NlbGYnIl0sImZyYW1lLXNyYyI6WyInc2VsZiciXSwiaW1nLXNyYyI6WyInc2VsZiciXSwibWFuaWZlc3Qtc3JjIjpbIidzZWxmJyJdLCJtZWRpYS1zcmMiOlsiJ3NlbGYnIl0sIm9iamVjdC1zcmMiOlsiJ25vbmUnIl0sInNjcmlwdC1zcmMtYXR0ciI6WyInbm9uZSciXSwic3R5bGUtc3JjIjpbIidzZWxmJyIsIidub25jZS17e25vbmNlfX0nIl0sInNjcmlwdC1zcmMiOlsiJ3NlbGYnIiwiJ3N0cmljdC1keW5hbWljJyIsIidub25jZS17e25vbmNlfX0nIl0sInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiOiEwLCJ3b3JrZXItc3JjIjpbIidzZWxmJyJdfSxkLnNzZy5oYXNoU3R5bGVzPSEwLGQuaGVhZGVycy5zdHJpY3RUcmFuc3BvcnRTZWN1cml0eT17bWF4QWdlOjMxNTM2ZTMsaW5jbHVkZVN1YmRvbWFpbnM6ITAscHJlbG9hZDohMH0sZC5oZWFkZXJzLnhGcmFtZU9wdGlvbnM9IkRFTlkiLGQuaGVhZGVycy5wZXJtaXNzaW9uc1BvbGljeT17YWNjZWxlcm9tZXRlcjpbXSxhdXRvcGxheTpbXSxjYW1lcmE6W10sImRpc3BsYXktY2FwdHVyZSI6W10sImVuY3J5cHRlZC1tZWRpYSI6W10sZnVsbHNjcmVlbjpbXSxnZW9sb2NhdGlvbjpbXSxneXJvc2NvcGU6W10sbWFnbmV0b21ldGVyOltdLG1pY3JvcGhvbmU6W10sbWlkaTpbXSxwYXltZW50OltdLCJwaWN0dXJlLWluLXBpY3R1cmUiOltdLCJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IjpbXSwic2NyZWVuLXdha2UtbG9jayI6W10sInN5bmMteGhyIjpbInNlbGYiXSx1c2I6W10sIndlYi1zaGFyZSI6W10sInhyLXNwYXRpYWwtdHJhY2tpbmciOltdfSxkfSxMZz1kZWZhdWx0U2VjdXJpdHlDb25maWcoIiIsITApLnJlcXVlc3RTaXplTGltaXRlcixBZz1kZWZpbmVFdmVudEhhbmRsZXIoZT0+e2NvbnN0IHM9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSk7aWYocy5lbmFibGVkJiZzLnJlcXVlc3RTaXplTGltaXRlcil7Y29uc3QgZD13bihzLnJlcXVlc3RTaXplTGltaXRlcixMZyk7aWYoWyJQT1NUIiwiUFVUIiwiREVMRVRFIl0uaW5jbHVkZXMoZS5ub2RlLnJlcS5tZXRob2QpKXtjb25zdCBzPWdldFJlcXVlc3RIZWFkZXIoZSwiY29udGVudC1sZW5ndGgiKSxtPWdldFJlcXVlc3RIZWFkZXIoZSwiY29udGVudC10eXBlIiksaD1tPy5pbmNsdWRlcygibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpLGc9aD9kLm1heFVwbG9hZEZpbGVSZXF1ZXN0SW5CeXRlczpkLm1heFJlcXVlc3RTaXplSW5CeXRlcztpZihwYXJzZUludChzKT49Zyl7Y29uc3QgZT17c3RhdHVzQ29kZTo0MTMsc3RhdHVzTWVzc2FnZToiUGF5bG9hZCBUb28gTGFyZ2UifTtpZighMT09PWQudGhyb3dFcnJvcilyZXR1cm4gZTt0aHJvdyBjcmVhdGVFcnJvciQxKGUpfX19fSkscWc9ZGVmaW5lRXZlbnRIYW5kbGVyKGU9Pntjb25zdCBzPXJlc29sdmVTZWN1cml0eVJ1bGVzKGUpO2lmKHMuZW5hYmxlZCYmcy5jb3JzSGFuZGxlcil7Y29uc3R7Y29yc0hhbmRsZXI6ZH09cztsZXQgbTttPSJzdHJpbmciPT10eXBlb2YgZC5vcmlnaW4mJiIqIiE9PWQub3JpZ2luP1tkLm9yaWdpbl06ZC5vcmlnaW4sbSYmIioiIT09bSYmZC51c2VSZWdFeHAmJihtPW0ubWFwKGU9Pm5ldyBSZWdFeHAoZSwiaSIpKSksaGFuZGxlQ29ycyhlLHtvcmlnaW46bSxtZXRob2RzOmQubWV0aG9kcyxhbGxvd0hlYWRlcnM6ZC5hbGxvd0hlYWRlcnMsZXhwb3NlSGVhZGVyczpkLmV4cG9zZUhlYWRlcnMsY3JlZGVudGlhbHM6ZC5jcmVkZW50aWFscyxtYXhBZ2U6ZC5tYXhBZ2UscHJlZmxpZ2h0OmQucHJlZmxpZ2h0fSl9fSksRmc9ZGVmaW5lRXZlbnRIYW5kbGVyKGU9Pntjb25zdCBzPXJlc29sdmVTZWN1cml0eVJ1bGVzKGUpO2lmKHMuZW5hYmxlZCYmcy5hbGxvd2VkTWV0aG9kc1Jlc3RyaWN0ZXIpe2NvbnN0e2FsbG93ZWRNZXRob2RzUmVzdHJpY3RlcjpkfT1zLG09ZC5tZXRob2RzO2lmKCIqIiE9PW0mJiFtLmluY2x1ZGVzKGUubm9kZS5yZXEubWV0aG9kKSl7Y29uc3QgZT17c3RhdHVzQ29kZTo0MDUsc3RhdHVzTWVzc2FnZToiTWV0aG9kIG5vdCBhbGxvd2VkIn07aWYoITE9PT1kLnRocm93RXJyb3IpcmV0dXJuIGU7dGhyb3cgY3JlYXRlRXJyb3IkMShlKX19fSksQmc9dXNlU3RvcmFnZSgiI3JhdGUtbGltaXRlci1zdG9yYWdlIiksWmc9ZGVmYXVsdFNlY3VyaXR5Q29uZmlnKCIiLCEwKS5yYXRlTGltaXRlcixNZz1kZWZpbmVFdmVudEhhbmRsZXIoYXN5bmMgZT0+e2NvbnN0IHM9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSksZD1mdW5jdGlvbihlKXtpZihlLmNvbnRleHQuc2VjdXJpdHl8fChlLmNvbnRleHQuc2VjdXJpdHk9e30pLCFlLmNvbnRleHQuc2VjdXJpdHkucm91dGUpe2NvbnN0IHM9Y3JlYXRlUm91dGVyJDEoe3JvdXRlczpPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZ2cpLm1hcCgoW2VdKT0+W2Use25hbWU6ZX1dKSl9KSxkPWUucGF0aC5zcGxpdCgiPyIpWzBdLG09ZD9zLmxvb2t1cChkKTp2b2lkIDAsaD1tPy5uYW1lPz8iIjtlLmNvbnRleHQuc2VjdXJpdHkucm91dGU9aH1yZXR1cm4gZS5jb250ZXh0LnNlY3VyaXR5LnJvdXRlfShlKTtpZihzLmVuYWJsZWQmJnMucmF0ZUxpbWl0ZXIpe2NvbnN0IG09d24ocy5yYXRlTGltaXRlcixaZyksaD1mdW5jdGlvbihlLHMpe2NvbnN0IGQ9cz9nZXRSZXF1ZXN0SGVhZGVyKGUscyl8fCIiOmZ1bmN0aW9uKGUscz17fSl7aWYoZS5jb250ZXh0LmNsaWVudEFkZHJlc3MpcmV0dXJuIGUuY29udGV4dC5jbGllbnRBZGRyZXNzO2lmKHMueEZvcndhcmRlZEZvcil7Y29uc3Qgcz1nZXRSZXF1ZXN0SGVhZGVyKGUsIngtZm9yd2FyZGVkLWZvciIpPy5zcGxpdCgiLCIpLnNoaWZ0KCk/LnRyaW0oKTtpZihzKXJldHVybiBzfXJldHVybiBlLm5vZGUucmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzP2Uubm9kZS5yZXEuc29ja2V0LnJlbW90ZUFkZHJlc3M6dm9pZCAwfShlLHt4Rm9yd2FyZGVkRm9yOiEwfSl8fCIiO3JldHVybiBkfShlLG0uaXBIZWFkZXIpO2lmKG0ud2hpdGVMaXN0JiZtLndoaXRlTGlzdC5pbmNsdWRlcyhoKSlyZXR1cm47Y29uc3QgZz1oK2Q7bGV0IHg9YXdhaXQgQmcuZ2V0SXRlbShnKTtpZih4KXtpZigib2JqZWN0IiE9dHlwZW9mIHgpcmV0dXJuO2NvbnN0IGQ9eC5kYXRlLGg9eC5kYXRlK051bWJlcihtLmludGVydmFsKTtEYXRlLm5vdygpPj1oJiYoYXdhaXQgc2V0U3RvcmFnZUl0ZW0obSxnKSx4PWF3YWl0IEJnLmdldEl0ZW0oZykpO2lmKGQ8PWgmJjA9PT14LnZhbHVlKXtjb25zdCBkPXtzdGF0dXNDb2RlOjQyOSxzdGF0dXNNZXNzYWdlOiJUb28gTWFueSBSZXF1ZXN0cyJ9O2lmKHMucmF0ZUxpbWl0ZXIuaGVhZGVycyYmKHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlbWFpbmluZyIsMCksc2V0UmVzcG9uc2VIZWFkZXIoZSwieC1yYXRlbGltaXQtbGltaXQiLG0udG9rZW5zUGVySW50ZXJ2YWwpLHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlc2V0IixoKSksITE9PT1tLnRocm93RXJyb3IpcmV0dXJuIGQ7dGhyb3cgY3JlYXRlRXJyb3IkMShkKX1jb25zdCAkPWQ+aD9EYXRlLm5vdygpOnguZGF0ZSxTPXt2YWx1ZTp4LnZhbHVlLTEsZGF0ZTokfTthd2FpdCBCZy5zZXRJdGVtKGcsUyk7Y29uc3Qgaj1hd2FpdCBCZy5nZXRJdGVtKGcpO2omJm0uaGVhZGVycyYmKHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlbWFpbmluZyIsai52YWx1ZSksc2V0UmVzcG9uc2VIZWFkZXIoZSwieC1yYXRlbGltaXQtbGltaXQiLG0udG9rZW5zUGVySW50ZXJ2YWwpLHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlc2V0IixoKSl9ZWxzZSBhd2FpdCBzZXRTdG9yYWdlSXRlbShtLGcpfX0pO2FzeW5jIGZ1bmN0aW9uIHNldFN0b3JhZ2VJdGVtKGUscyl7Y29uc3QgZD17dmFsdWU6ZS50b2tlbnNQZXJJbnRlcnZhbCxkYXRlOkRhdGUubm93KCl9O2F3YWl0IEJnLnNldEl0ZW0ocyxkKX12YXIgUWc9e2V4cG9ydHM6e319LFZnPXt9LEhnPXtleHBvcnRzOnt9fSxXZz17fTtmdW5jdGlvbiBnZXREZWZhdWx0V2hpdGVMaXN0JDEoKXt2YXIgZT17ImFsaWduLWNvbnRlbnQiOiExLCJhbGlnbi1pdGVtcyI6ITEsImFsaWduLXNlbGYiOiExLCJhbGlnbm1lbnQtYWRqdXN0IjohMSwiYWxpZ25tZW50LWJhc2VsaW5lIjohMSxhbGw6ITEsImFuY2hvci1wb2ludCI6ITEsYW5pbWF0aW9uOiExLCJhbmltYXRpb24tZGVsYXkiOiExLCJhbmltYXRpb24tZGlyZWN0aW9uIjohMSwiYW5pbWF0aW9uLWR1cmF0aW9uIjohMSwiYW5pbWF0aW9uLWZpbGwtbW9kZSI6ITEsImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOiExLCJhbmltYXRpb24tbmFtZSI6ITEsImFuaW1hdGlvbi1wbGF5LXN0YXRlIjohMSwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiI6ITEsYXppbXV0aDohMSwiYmFja2ZhY2UtdmlzaWJpbGl0eSI6ITEsYmFja2dyb3VuZDohMCwiYmFja2dyb3VuZC1hdHRhY2htZW50IjohMCwiYmFja2dyb3VuZC1jbGlwIjohMCwiYmFja2dyb3VuZC1jb2xvciI6ITAsImJhY2tncm91bmQtaW1hZ2UiOiEwLCJiYWNrZ3JvdW5kLW9yaWdpbiI6ITAsImJhY2tncm91bmQtcG9zaXRpb24iOiEwLCJiYWNrZ3JvdW5kLXJlcGVhdCI6ITAsImJhY2tncm91bmQtc2l6ZSI6ITAsImJhc2VsaW5lLXNoaWZ0IjohMSxiaW5kaW5nOiExLGJsZWVkOiExLCJib29rbWFyay1sYWJlbCI6ITEsImJvb2ttYXJrLWxldmVsIjohMSwiYm9va21hcmstc3RhdGUiOiExLGJvcmRlcjohMCwiYm9yZGVyLWJvdHRvbSI6ITAsImJvcmRlci1ib3R0b20tY29sb3IiOiEwLCJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIjohMCwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiOiEwLCJib3JkZXItYm90dG9tLXN0eWxlIjohMCwiYm9yZGVyLWJvdHRvbS13aWR0aCI6ITAsImJvcmRlci1jb2xsYXBzZSI6ITAsImJvcmRlci1jb2xvciI6ITAsImJvcmRlci1pbWFnZSI6ITAsImJvcmRlci1pbWFnZS1vdXRzZXQiOiEwLCJib3JkZXItaW1hZ2UtcmVwZWF0IjohMCwiYm9yZGVyLWltYWdlLXNsaWNlIjohMCwiYm9yZGVyLWltYWdlLXNvdXJjZSI6ITAsImJvcmRlci1pbWFnZS13aWR0aCI6ITAsImJvcmRlci1sZWZ0IjohMCwiYm9yZGVyLWxlZnQtY29sb3IiOiEwLCJib3JkZXItbGVmdC1zdHlsZSI6ITAsImJvcmRlci1sZWZ0LXdpZHRoIjohMCwiYm9yZGVyLXJhZGl1cyI6ITAsImJvcmRlci1yaWdodCI6ITAsImJvcmRlci1yaWdodC1jb2xvciI6ITAsImJvcmRlci1yaWdodC1zdHlsZSI6ITAsImJvcmRlci1yaWdodC13aWR0aCI6ITAsImJvcmRlci1zcGFjaW5nIjohMCwiYm9yZGVyLXN0eWxlIjohMCwiYm9yZGVyLXRvcCI6ITAsImJvcmRlci10b3AtY29sb3IiOiEwLCJib3JkZXItdG9wLWxlZnQtcmFkaXVzIjohMCwiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiOiEwLCJib3JkZXItdG9wLXN0eWxlIjohMCwiYm9yZGVyLXRvcC13aWR0aCI6ITAsImJvcmRlci13aWR0aCI6ITAsYm90dG9tOiExLCJib3gtZGVjb3JhdGlvbi1icmVhayI6ITAsImJveC1zaGFkb3ciOiEwLCJib3gtc2l6aW5nIjohMCwiYm94LXNuYXAiOiEwLCJib3gtc3VwcHJlc3MiOiEwLCJicmVhay1hZnRlciI6ITAsImJyZWFrLWJlZm9yZSI6ITAsImJyZWFrLWluc2lkZSI6ITAsImNhcHRpb24tc2lkZSI6ITEsY2hhaW5zOiExLGNsZWFyOiEwLGNsaXA6ITEsImNsaXAtcGF0aCI6ITEsImNsaXAtcnVsZSI6ITEsY29sb3I6ITAsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyI6ITAsImNvbHVtbi1jb3VudCI6ITEsImNvbHVtbi1maWxsIjohMSwiY29sdW1uLWdhcCI6ITEsImNvbHVtbi1ydWxlIjohMSwiY29sdW1uLXJ1bGUtY29sb3IiOiExLCJjb2x1bW4tcnVsZS1zdHlsZSI6ITEsImNvbHVtbi1ydWxlLXdpZHRoIjohMSwiY29sdW1uLXNwYW4iOiExLCJjb2x1bW4td2lkdGgiOiExLGNvbHVtbnM6ITEsY29udGFpbjohMSxjb250ZW50OiExLCJjb3VudGVyLWluY3JlbWVudCI6ITEsImNvdW50ZXItcmVzZXQiOiExLCJjb3VudGVyLXNldCI6ITEsY3JvcDohMSxjdWU6ITEsImN1ZS1hZnRlciI6ITEsImN1ZS1iZWZvcmUiOiExLGN1cnNvcjohMSxkaXJlY3Rpb246ITEsZGlzcGxheTohMCwiZGlzcGxheS1pbnNpZGUiOiEwLCJkaXNwbGF5LWxpc3QiOiEwLCJkaXNwbGF5LW91dHNpZGUiOiEwLCJkb21pbmFudC1iYXNlbGluZSI6ITEsZWxldmF0aW9uOiExLCJlbXB0eS1jZWxscyI6ITEsZmlsdGVyOiExLGZsZXg6ITEsImZsZXgtYmFzaXMiOiExLCJmbGV4LWRpcmVjdGlvbiI6ITEsImZsZXgtZmxvdyI6ITEsImZsZXgtZ3JvdyI6ITEsImZsZXgtc2hyaW5rIjohMSwiZmxleC13cmFwIjohMSxmbG9hdDohMSwiZmxvYXQtb2Zmc2V0IjohMSwiZmxvb2QtY29sb3IiOiExLCJmbG9vZC1vcGFjaXR5IjohMSwiZmxvdy1mcm9tIjohMSwiZmxvdy1pbnRvIjohMSxmb250OiEwLCJmb250LWZhbWlseSI6ITAsImZvbnQtZmVhdHVyZS1zZXR0aW5ncyI6ITAsImZvbnQta2VybmluZyI6ITAsImZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUiOiEwLCJmb250LXNpemUiOiEwLCJmb250LXNpemUtYWRqdXN0IjohMCwiZm9udC1zdHJldGNoIjohMCwiZm9udC1zdHlsZSI6ITAsImZvbnQtc3ludGhlc2lzIjohMCwiZm9udC12YXJpYW50IjohMCwiZm9udC12YXJpYW50LWFsdGVybmF0ZXMiOiEwLCJmb250LXZhcmlhbnQtY2FwcyI6ITAsImZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIjohMCwiZm9udC12YXJpYW50LWxpZ2F0dXJlcyI6ITAsImZvbnQtdmFyaWFudC1udW1lcmljIjohMCwiZm9udC12YXJpYW50LXBvc2l0aW9uIjohMCwiZm9udC13ZWlnaHQiOiEwLGdyaWQ6ITEsImdyaWQtYXJlYSI6ITEsImdyaWQtYXV0by1jb2x1bW5zIjohMSwiZ3JpZC1hdXRvLWZsb3ciOiExLCJncmlkLWF1dG8tcm93cyI6ITEsImdyaWQtY29sdW1uIjohMSwiZ3JpZC1jb2x1bW4tZW5kIjohMSwiZ3JpZC1jb2x1bW4tc3RhcnQiOiExLCJncmlkLXJvdyI6ITEsImdyaWQtcm93LWVuZCI6ITEsImdyaWQtcm93LXN0YXJ0IjohMSwiZ3JpZC10ZW1wbGF0ZSI6ITEsImdyaWQtdGVtcGxhdGUtYXJlYXMiOiExLCJncmlkLXRlbXBsYXRlLWNvbHVtbnMiOiExLCJncmlkLXRlbXBsYXRlLXJvd3MiOiExLCJoYW5naW5nLXB1bmN0dWF0aW9uIjohMSxoZWlnaHQ6ITAsaHlwaGVuczohMSxpY29uOiExLCJpbWFnZS1vcmllbnRhdGlvbiI6ITEsImltYWdlLXJlc29sdXRpb24iOiExLCJpbWUtbW9kZSI6ITEsImluaXRpYWwtbGV0dGVycyI6ITEsImlubGluZS1ib3gtYWxpZ24iOiExLCJqdXN0aWZ5LWNvbnRlbnQiOiExLCJqdXN0aWZ5LWl0ZW1zIjohMSwianVzdGlmeS1zZWxmIjohMSxsZWZ0OiExLCJsZXR0ZXItc3BhY2luZyI6ITAsImxpZ2h0aW5nLWNvbG9yIjohMCwibGluZS1ib3gtY29udGFpbiI6ITEsImxpbmUtYnJlYWsiOiExLCJsaW5lLWdyaWQiOiExLCJsaW5lLWhlaWdodCI6ITEsImxpbmUtc25hcCI6ITEsImxpbmUtc3RhY2tpbmciOiExLCJsaW5lLXN0YWNraW5nLXJ1YnkiOiExLCJsaW5lLXN0YWNraW5nLXNoaWZ0IjohMSwibGluZS1zdGFja2luZy1zdHJhdGVneSI6ITEsImxpc3Qtc3R5bGUiOiEwLCJsaXN0LXN0eWxlLWltYWdlIjohMCwibGlzdC1zdHlsZS1wb3NpdGlvbiI6ITAsImxpc3Qtc3R5bGUtdHlwZSI6ITAsbWFyZ2luOiEwLCJtYXJnaW4tYm90dG9tIjohMCwibWFyZ2luLWxlZnQiOiEwLCJtYXJnaW4tcmlnaHQiOiEwLCJtYXJnaW4tdG9wIjohMCwibWFya2VyLW9mZnNldCI6ITEsIm1hcmtlci1zaWRlIjohMSxtYXJrczohMSxtYXNrOiExLCJtYXNrLWJveCI6ITEsIm1hc2stYm94LW91dHNldCI6ITEsIm1hc2stYm94LXJlcGVhdCI6ITEsIm1hc2stYm94LXNsaWNlIjohMSwibWFzay1ib3gtc291cmNlIjohMSwibWFzay1ib3gtd2lkdGgiOiExLCJtYXNrLWNsaXAiOiExLCJtYXNrLWltYWdlIjohMSwibWFzay1vcmlnaW4iOiExLCJtYXNrLXBvc2l0aW9uIjohMSwibWFzay1yZXBlYXQiOiExLCJtYXNrLXNpemUiOiExLCJtYXNrLXNvdXJjZS10eXBlIjohMSwibWFzay10eXBlIjohMSwibWF4LWhlaWdodCI6ITAsIm1heC1saW5lcyI6ITEsIm1heC13aWR0aCI6ITAsIm1pbi1oZWlnaHQiOiEwLCJtaW4td2lkdGgiOiEwLCJtb3ZlLXRvIjohMSwibmF2LWRvd24iOiExLCJuYXYtaW5kZXgiOiExLCJuYXYtbGVmdCI6ITEsIm5hdi1yaWdodCI6ITEsIm5hdi11cCI6ITEsIm9iamVjdC1maXQiOiExLCJvYmplY3QtcG9zaXRpb24iOiExLG9wYWNpdHk6ITEsb3JkZXI6ITEsb3JwaGFuczohMSxvdXRsaW5lOiExLCJvdXRsaW5lLWNvbG9yIjohMSwib3V0bGluZS1vZmZzZXQiOiExLCJvdXRsaW5lLXN0eWxlIjohMSwib3V0bGluZS13aWR0aCI6ITEsb3ZlcmZsb3c6ITEsIm92ZXJmbG93LXdyYXAiOiExLCJvdmVyZmxvdy14IjohMSwib3ZlcmZsb3cteSI6ITEscGFkZGluZzohMCwicGFkZGluZy1ib3R0b20iOiEwLCJwYWRkaW5nLWxlZnQiOiEwLCJwYWRkaW5nLXJpZ2h0IjohMCwicGFkZGluZy10b3AiOiEwLHBhZ2U6ITEsInBhZ2UtYnJlYWstYWZ0ZXIiOiExLCJwYWdlLWJyZWFrLWJlZm9yZSI6ITEsInBhZ2UtYnJlYWstaW5zaWRlIjohMSwicGFnZS1wb2xpY3kiOiExLHBhdXNlOiExLCJwYXVzZS1hZnRlciI6ITEsInBhdXNlLWJlZm9yZSI6ITEscGVyc3BlY3RpdmU6ITEsInBlcnNwZWN0aXZlLW9yaWdpbiI6ITEscGl0Y2g6ITEsInBpdGNoLXJhbmdlIjohMSwicGxheS1kdXJpbmciOiExLHBvc2l0aW9uOiExLCJwcmVzZW50YXRpb24tbGV2ZWwiOiExLHF1b3RlczohMSwicmVnaW9uLWZyYWdtZW50IjohMSxyZXNpemU6ITEscmVzdDohMSwicmVzdC1hZnRlciI6ITEsInJlc3QtYmVmb3JlIjohMSxyaWNobmVzczohMSxyaWdodDohMSxyb3RhdGlvbjohMSwicm90YXRpb24tcG9pbnQiOiExLCJydWJ5LWFsaWduIjohMSwicnVieS1tZXJnZSI6ITEsInJ1YnktcG9zaXRpb24iOiExLCJzaGFwZS1pbWFnZS10aHJlc2hvbGQiOiExLCJzaGFwZS1vdXRzaWRlIjohMSwic2hhcGUtbWFyZ2luIjohMSxzaXplOiExLHNwZWFrOiExLCJzcGVhay1hcyI6ITEsInNwZWFrLWhlYWRlciI6ITEsInNwZWFrLW51bWVyYWwiOiExLCJzcGVhay1wdW5jdHVhdGlvbiI6ITEsInNwZWVjaC1yYXRlIjohMSxzdHJlc3M6ITEsInN0cmluZy1zZXQiOiExLCJ0YWItc2l6ZSI6ITEsInRhYmxlLWxheW91dCI6ITEsInRleHQtYWxpZ24iOiEwLCJ0ZXh0LWFsaWduLWxhc3QiOiEwLCJ0ZXh0LWNvbWJpbmUtdXByaWdodCI6ITAsInRleHQtZGVjb3JhdGlvbiI6ITAsInRleHQtZGVjb3JhdGlvbi1jb2xvciI6ITAsInRleHQtZGVjb3JhdGlvbi1saW5lIjohMCwidGV4dC1kZWNvcmF0aW9uLXNraXAiOiEwLCJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiOiEwLCJ0ZXh0LWVtcGhhc2lzIjohMCwidGV4dC1lbXBoYXNpcy1jb2xvciI6ITAsInRleHQtZW1waGFzaXMtcG9zaXRpb24iOiEwLCJ0ZXh0LWVtcGhhc2lzLXN0eWxlIjohMCwidGV4dC1oZWlnaHQiOiEwLCJ0ZXh0LWluZGVudCI6ITAsInRleHQtanVzdGlmeSI6ITAsInRleHQtb3JpZW50YXRpb24iOiEwLCJ0ZXh0LW92ZXJmbG93IjohMCwidGV4dC1zaGFkb3ciOiEwLCJ0ZXh0LXNwYWNlLWNvbGxhcHNlIjohMCwidGV4dC10cmFuc2Zvcm0iOiEwLCJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiI6ITAsInRleHQtd3JhcCI6ITAsdG9wOiExLHRyYW5zZm9ybTohMSwidHJhbnNmb3JtLW9yaWdpbiI6ITEsInRyYW5zZm9ybS1zdHlsZSI6ITEsdHJhbnNpdGlvbjohMSwidHJhbnNpdGlvbi1kZWxheSI6ITEsInRyYW5zaXRpb24tZHVyYXRpb24iOiExLCJ0cmFuc2l0aW9uLXByb3BlcnR5IjohMSwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOiExLCJ1bmljb2RlLWJpZGkiOiExLCJ2ZXJ0aWNhbC1hbGlnbiI6ITEsdmlzaWJpbGl0eTohMSwidm9pY2UtYmFsYW5jZSI6ITEsInZvaWNlLWR1cmF0aW9uIjohMSwidm9pY2UtZmFtaWx5IjohMSwidm9pY2UtcGl0Y2giOiExLCJ2b2ljZS1yYW5nZSI6ITEsInZvaWNlLXJhdGUiOiExLCJ2b2ljZS1zdHJlc3MiOiExLCJ2b2ljZS12b2x1bWUiOiExLHZvbHVtZTohMSwid2hpdGUtc3BhY2UiOiExLHdpZG93czohMSx3aWR0aDohMCwid2lsbC1jaGFuZ2UiOiExLCJ3b3JkLWJyZWFrIjohMCwid29yZC1zcGFjaW5nIjohMCwid29yZC13cmFwIjohMCwid3JhcC1mbG93IjohMSwid3JhcC10aHJvdWdoIjohMSwid3JpdGluZy1tb2RlIjohMSwiei1pbmRleCI6ITF9O3JldHVybiBlfXZhciBKZz0vamF2YXNjcmlwdFxzKlw6L2dpbTtXZy53aGl0ZUxpc3Q9Z2V0RGVmYXVsdFdoaXRlTGlzdCQxKCksV2cuZ2V0RGVmYXVsdFdoaXRlTGlzdD1nZXREZWZhdWx0V2hpdGVMaXN0JDEsV2cub25BdHRyPWZ1bmN0aW9uKGUscyxkKXt9LFdnLm9uSWdub3JlQXR0cj1mdW5jdGlvbihlLHMsZCl7fSxXZy5zYWZlQXR0clZhbHVlPWZ1bmN0aW9uKGUscyl7cmV0dXJuIEpnLnRlc3Qocyk/IiI6c307dmFyIEtnPXtpbmRleE9mOmZ1bmN0aW9uKGUscyl7dmFyIGQsbTtpZihBcnJheS5wcm90b3R5cGUuaW5kZXhPZilyZXR1cm4gZS5pbmRleE9mKHMpO2ZvcihkPTAsbT1lLmxlbmd0aDtkPG07ZCsrKWlmKGVbZF09PT1zKXJldHVybiBkO3JldHVybi0xfSxmb3JFYWNoOmZ1bmN0aW9uKGUscyxkKXt2YXIgbSxoO2lmKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKXJldHVybiBlLmZvckVhY2gocyxkKTtmb3IobT0wLGg9ZS5sZW5ndGg7bTxoO20rKylzLmNhbGwoZCxlW21dLG0sZSl9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoLyheXHMqKXwoXHMqJCkvZywiIil9LHRyaW1SaWdodDpmdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQ/ZS50cmltUmlnaHQoKTplLnJlcGxhY2UoLyhccyokKS9nLCIiKX19LEdnPUtnO3ZhciBwYXJzZXIkMj1mdW5jdGlvbihlLHMpeyI7IiE9PShlPUdnLnRyaW1SaWdodChlKSlbZS5sZW5ndGgtMV0mJihlKz0iOyIpO3ZhciBkPWUubGVuZ3RoLG09ITEsaD0wLGc9MCx4PSIiO2Z1bmN0aW9uIGFkZE5ld0F0dHIoKXtpZighbSl7dmFyIGQ9R2cudHJpbShlLnNsaWNlKGgsZykpLCQ9ZC5pbmRleE9mKCI6Iik7aWYoLTEhPT0kKXt2YXIgUz1HZy50cmltKGQuc2xpY2UoMCwkKSksaj1HZy50cmltKGQuc2xpY2UoJCsxKSk7aWYoUyl7dmFyIHo9cyhoLHgubGVuZ3RoLFMsaixkKTt6JiYoeCs9eisiOyAiKX19fWg9ZysxfWZvcig7ZzxkO2crKyl7dmFyICQ9ZVtnXTtpZigiLyI9PT0kJiYiKiI9PT1lW2crMV0pe3ZhciBTPWUuaW5kZXhPZigiKi8iLGcrMik7aWYoLTE9PT1TKWJyZWFrO2g9KGc9UysxKSsxLG09ITF9ZWxzZSIoIj09PSQ/bT0hMDoiKSI9PT0kP209ITE6IjsiPT09JD9tfHxhZGROZXdBdHRyKCk6IlxuIj09PSQmJmFkZE5ld0F0dHIoKX1yZXR1cm4gR2cudHJpbSh4KX0sWGc9V2csWWc9cGFyc2VyJDI7ZnVuY3Rpb24gaXNOdWxsJDEoZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gRmlsdGVyQ1NTJDIoZSl7ZT1mdW5jdGlvbihlKXt2YXIgcz17fTtmb3IodmFyIGQgaW4gZSlzW2RdPWVbZF07cmV0dXJuIHN9KGV8fHt9KSxlLndoaXRlTGlzdD1lLndoaXRlTGlzdHx8WGcud2hpdGVMaXN0LGUub25BdHRyPWUub25BdHRyfHxYZy5vbkF0dHIsZS5vbklnbm9yZUF0dHI9ZS5vbklnbm9yZUF0dHJ8fFhnLm9uSWdub3JlQXR0cixlLnNhZmVBdHRyVmFsdWU9ZS5zYWZlQXR0clZhbHVlfHxYZy5zYWZlQXR0clZhbHVlLHRoaXMub3B0aW9ucz1lfUZpbHRlckNTUyQyLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0aW9uKGUpe2lmKCEoZT0oZT1lfHwiIikudG9TdHJpbmcoKSkpcmV0dXJuIiI7dmFyIHM9dGhpcy5vcHRpb25zLGQ9cy53aGl0ZUxpc3QsbT1zLm9uQXR0cixoPXMub25JZ25vcmVBdHRyLGc9cy5zYWZlQXR0clZhbHVlLHg9WWcoZSxmdW5jdGlvbihlLHMseCwkLFMpe3ZhciBqPWRbeF0sej0hMTtpZighMD09PWo/ej1qOiJmdW5jdGlvbiI9PXR5cGVvZiBqP3o9aigkKTpqIGluc3RhbmNlb2YgUmVnRXhwJiYoej1qLnRlc3QoJCkpLCEwIT09eiYmKHo9ITEpLCQ9Zyh4LCQpKXt2YXIgSSxUPXtwb3NpdGlvbjpzLHNvdXJjZVBvc2l0aW9uOmUsc291cmNlOlMsaXNXaGl0ZTp6fTtyZXR1cm4gej9pc051bGwkMShJPW0oeCwkLFQpKT94KyI6IiskOkk6aXNOdWxsJDEoST1oKHgsJCxUKSk/dm9pZCAwOkl9fSk7cmV0dXJuIHh9O3ZhciBldj1GaWx0ZXJDU1MkMjshZnVuY3Rpb24oZSxzKXt2YXIgZD1XZyxtPWV2O2Zvcih2YXIgaCBpbihzPWUuZXhwb3J0cz1mdW5jdGlvbihlLHMpe3JldHVybiBuZXcgbShzKS5wcm9jZXNzKGUpfSkuRmlsdGVyQ1NTPW0sZClzW2hdPWRbaF19KEhnLEhnLmV4cG9ydHMpO3ZhciB0dj1IZy5leHBvcnRzLG52PXtpbmRleE9mOmZ1bmN0aW9uKGUscyl7dmFyIGQsbTtpZihBcnJheS5wcm90b3R5cGUuaW5kZXhPZilyZXR1cm4gZS5pbmRleE9mKHMpO2ZvcihkPTAsbT1lLmxlbmd0aDtkPG07ZCsrKWlmKGVbZF09PT1zKXJldHVybiBkO3JldHVybi0xfSxmb3JFYWNoOmZ1bmN0aW9uKGUscyxkKXt2YXIgbSxoO2lmKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKXJldHVybiBlLmZvckVhY2gocyxkKTtmb3IobT0wLGg9ZS5sZW5ndGg7bTxoO20rKylzLmNhbGwoZCxlW21dLG0sZSl9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoLyheXHMqKXwoXHMqJCkvZywiIil9LHNwYWNlSW5kZXg6ZnVuY3Rpb24oZSl7dmFyIHM9L1xzfFxufFx0Ly5leGVjKGUpO3JldHVybiBzP3MuaW5kZXg6LTF9fSxpdj10di5GaWx0ZXJDU1MscnY9dHYuZ2V0RGVmYXVsdFdoaXRlTGlzdCxvdj1udjtmdW5jdGlvbiBnZXREZWZhdWx0V2hpdGVMaXN0KCl7cmV0dXJue2E6WyJ0YXJnZXQiLCJocmVmIiwidGl0bGUiXSxhYmJyOlsidGl0bGUiXSxhZGRyZXNzOltdLGFyZWE6WyJzaGFwZSIsImNvb3JkcyIsImhyZWYiLCJhbHQiXSxhcnRpY2xlOltdLGFzaWRlOltdLGF1ZGlvOlsiYXV0b3BsYXkiLCJjb250cm9scyIsImNyb3Nzb3JpZ2luIiwibG9vcCIsIm11dGVkIiwicHJlbG9hZCIsInNyYyJdLGI6W10sYmRpOlsiZGlyIl0sYmRvOlsiZGlyIl0sYmlnOltdLGJsb2NrcXVvdGU6WyJjaXRlIl0sYnI6W10sY2FwdGlvbjpbXSxjZW50ZXI6W10sY2l0ZTpbXSxjb2RlOltdLGNvbDpbImFsaWduIiwidmFsaWduIiwic3BhbiIsIndpZHRoIl0sY29sZ3JvdXA6WyJhbGlnbiIsInZhbGlnbiIsInNwYW4iLCJ3aWR0aCJdLGRkOltdLGRlbDpbImRhdGV0aW1lIl0sZGV0YWlsczpbIm9wZW4iXSxkaXY6W10sZGw6W10sZHQ6W10sZW06W10sZmlnY2FwdGlvbjpbXSxmaWd1cmU6W10sZm9udDpbImNvbG9yIiwic2l6ZSIsImZhY2UiXSxmb290ZXI6W10saDE6W10saDI6W10saDM6W10saDQ6W10saDU6W10saDY6W10saGVhZGVyOltdLGhyOltdLGk6W10saW1nOlsic3JjIiwiYWx0IiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCIsImxvYWRpbmciXSxpbnM6WyJkYXRldGltZSJdLGtiZDpbXSxsaTpbXSxtYXJrOltdLG5hdjpbXSxvbDpbXSxwOltdLHByZTpbXSxzOltdLHNlY3Rpb246W10sc21hbGw6W10sc3BhbjpbXSxzdWI6W10sc3VtbWFyeTpbXSxzdXA6W10sc3Ryb25nOltdLHN0cmlrZTpbXSx0YWJsZTpbIndpZHRoIiwiYm9yZGVyIiwiYWxpZ24iLCJ2YWxpZ24iXSx0Ym9keTpbImFsaWduIiwidmFsaWduIl0sdGQ6WyJ3aWR0aCIsInJvd3NwYW4iLCJjb2xzcGFuIiwiYWxpZ24iLCJ2YWxpZ24iXSx0Zm9vdDpbImFsaWduIiwidmFsaWduIl0sdGg6WyJ3aWR0aCIsInJvd3NwYW4iLCJjb2xzcGFuIiwiYWxpZ24iLCJ2YWxpZ24iXSx0aGVhZDpbImFsaWduIiwidmFsaWduIl0sdHI6WyJyb3dzcGFuIiwiYWxpZ24iLCJ2YWxpZ24iXSx0dDpbXSx1OltdLHVsOltdLHZpZGVvOlsiYXV0b3BsYXkiLCJjb250cm9scyIsImNyb3Nzb3JpZ2luIiwibG9vcCIsIm11dGVkIiwicGxheXNpbmxpbmUiLCJwb3N0ZXIiLCJwcmVsb2FkIiwic3JjIiwiaGVpZ2h0Iiwid2lkdGgiXX19dmFyIGF2PW5ldyBpdjtmdW5jdGlvbiBlc2NhcGVIdG1sKGUpe3JldHVybiBlLnJlcGxhY2Uoc3YsIiZsdDsiKS5yZXBsYWNlKGx2LCImZ3Q7Iil9dmFyIHN2PS88L2csbHY9Lz4vZyxjdj0vIi9nLHV2PS8mcXVvdDsvZyxkdj0vJiMoW2EtekEtWjAtOV0qKTs/L2dpbSxwdj0vJmNvbG9uOz8vZ2ltLG12PS8mbmV3bGluZTs/L2dpbSxmdj0vKChqXHMqYVxzKnZccyphfHZccypifGxccyppXHMqdlxzKmUpXHMqc1xzKmNccypyXHMqaVxzKnBccyp0XHMqfG1ccypvXHMqY1xzKmhccyphKTovZ2ksaHY9L2Vccyp4XHMqcFxzKnJccyplXHMqc1xzKnNccyppXHMqb1xzKm5ccypcKC4qL2dpLGd2PS91XHMqclxzKmxccypcKC4qL2dpO2Z1bmN0aW9uIGVzY2FwZVF1b3RlKGUpe3JldHVybiBlLnJlcGxhY2UoY3YsIiZxdW90OyIpfWZ1bmN0aW9uIHVuZXNjYXBlUXVvdGUoZSl7cmV0dXJuIGUucmVwbGFjZSh1diwnIicpfWZ1bmN0aW9uIGVzY2FwZUh0bWxFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlKGR2LGZ1bmN0aW9uKGUscyl7cmV0dXJuIngiPT09c1swXXx8IlgiPT09c1swXT9TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHMuc3Vic3RyKDEpLDE2KSk6U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChzLDEwKSl9KX1mdW5jdGlvbiBlc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2UocHYsIjoiKS5yZXBsYWNlKG12LCIgIil9ZnVuY3Rpb24gY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIoZSl7Zm9yKHZhciBzPSIiLGQ9MCxtPWUubGVuZ3RoO2Q8bTtkKyspcys9ZS5jaGFyQ29kZUF0KGQpPDMyPyIgIjplLmNoYXJBdChkKTtyZXR1cm4gb3YudHJpbShzKX1mdW5jdGlvbiBmcmllbmRseUF0dHJWYWx1ZShlKXtyZXR1cm4gZT1jbGVhck5vblByaW50YWJsZUNoYXJhY3RlcihlPWVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMoZT1lc2NhcGVIdG1sRW50aXRpZXMoZT11bmVzY2FwZVF1b3RlKGUpKSkpfWZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShlKXtyZXR1cm4gZT1lc2NhcGVIdG1sKGU9ZXNjYXBlUXVvdGUoZSkpfVZnLndoaXRlTGlzdD17YTpbInRhcmdldCIsImhyZWYiLCJ0aXRsZSJdLGFiYnI6WyJ0aXRsZSJdLGFkZHJlc3M6W10sYXJlYTpbInNoYXBlIiwiY29vcmRzIiwiaHJlZiIsImFsdCJdLGFydGljbGU6W10sYXNpZGU6W10sYXVkaW86WyJhdXRvcGxheSIsImNvbnRyb2xzIiwiY3Jvc3NvcmlnaW4iLCJsb29wIiwibXV0ZWQiLCJwcmVsb2FkIiwic3JjIl0sYjpbXSxiZGk6WyJkaXIiXSxiZG86WyJkaXIiXSxiaWc6W10sYmxvY2txdW90ZTpbImNpdGUiXSxicjpbXSxjYXB0aW9uOltdLGNlbnRlcjpbXSxjaXRlOltdLGNvZGU6W10sY29sOlsiYWxpZ24iLCJ2YWxpZ24iLCJzcGFuIiwid2lkdGgiXSxjb2xncm91cDpbImFsaWduIiwidmFsaWduIiwic3BhbiIsIndpZHRoIl0sZGQ6W10sZGVsOlsiZGF0ZXRpbWUiXSxkZXRhaWxzOlsib3BlbiJdLGRpdjpbXSxkbDpbXSxkdDpbXSxlbTpbXSxmaWdjYXB0aW9uOltdLGZpZ3VyZTpbXSxmb250OlsiY29sb3IiLCJzaXplIiwiZmFjZSJdLGZvb3RlcjpbXSxoMTpbXSxoMjpbXSxoMzpbXSxoNDpbXSxoNTpbXSxoNjpbXSxoZWFkZXI6W10saHI6W10saTpbXSxpbWc6WyJzcmMiLCJhbHQiLCJ0aXRsZSIsIndpZHRoIiwiaGVpZ2h0IiwibG9hZGluZyJdLGluczpbImRhdGV0aW1lIl0sa2JkOltdLGxpOltdLG1hcms6W10sbmF2OltdLG9sOltdLHA6W10scHJlOltdLHM6W10sc2VjdGlvbjpbXSxzbWFsbDpbXSxzcGFuOltdLHN1YjpbXSxzdW1tYXJ5OltdLHN1cDpbXSxzdHJvbmc6W10sc3RyaWtlOltdLHRhYmxlOlsid2lkdGgiLCJib3JkZXIiLCJhbGlnbiIsInZhbGlnbiJdLHRib2R5OlsiYWxpZ24iLCJ2YWxpZ24iXSx0ZDpbIndpZHRoIiwicm93c3BhbiIsImNvbHNwYW4iLCJhbGlnbiIsInZhbGlnbiJdLHRmb290OlsiYWxpZ24iLCJ2YWxpZ24iXSx0aDpbIndpZHRoIiwicm93c3BhbiIsImNvbHNwYW4iLCJhbGlnbiIsInZhbGlnbiJdLHRoZWFkOlsiYWxpZ24iLCJ2YWxpZ24iXSx0cjpbInJvd3NwYW4iLCJhbGlnbiIsInZhbGlnbiJdLHR0OltdLHU6W10sdWw6W10sdmlkZW86WyJhdXRvcGxheSIsImNvbnRyb2xzIiwiY3Jvc3NvcmlnaW4iLCJsb29wIiwibXV0ZWQiLCJwbGF5c2lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJzcmMiLCJoZWlnaHQiLCJ3aWR0aCJdfSxWZy5nZXREZWZhdWx0V2hpdGVMaXN0PWdldERlZmF1bHRXaGl0ZUxpc3QsVmcub25UYWc9ZnVuY3Rpb24oZSxzLGQpe30sVmcub25JZ25vcmVUYWc9ZnVuY3Rpb24oZSxzLGQpe30sVmcub25UYWdBdHRyPWZ1bmN0aW9uKGUscyxkKXt9LFZnLm9uSWdub3JlVGFnQXR0cj1mdW5jdGlvbihlLHMsZCl7fSxWZy5zYWZlQXR0clZhbHVlPWZ1bmN0aW9uKGUscyxkLG0pe2lmKGQ9ZnJpZW5kbHlBdHRyVmFsdWUoZCksImhyZWYiPT09c3x8InNyYyI9PT1zKXtpZigiIyI9PT0oZD1vdi50cmltKGQpKSlyZXR1cm4iIyI7aWYoImh0dHA6Ly8iIT09ZC5zdWJzdHIoMCw3KSYmImh0dHBzOi8vIiE9PWQuc3Vic3RyKDAsOCkmJiJtYWlsdG86IiE9PWQuc3Vic3RyKDAsNykmJiJ0ZWw6IiE9PWQuc3Vic3RyKDAsNCkmJiJkYXRhOmltYWdlLyIhPT1kLnN1YnN0cigwLDExKSYmImZ0cDovLyIhPT1kLnN1YnN0cigwLDYpJiYiLi8iIT09ZC5zdWJzdHIoMCwyKSYmIi4uLyIhPT1kLnN1YnN0cigwLDMpJiYiIyIhPT1kWzBdJiYiLyIhPT1kWzBdKXJldHVybiIifWVsc2UgaWYoImJhY2tncm91bmQiPT09cyl7aWYoZnYubGFzdEluZGV4PTAsZnYudGVzdChkKSlyZXR1cm4iIn1lbHNlIGlmKCJzdHlsZSI9PT1zKXtpZihodi5sYXN0SW5kZXg9MCxodi50ZXN0KGQpKXJldHVybiIiO2lmKGd2Lmxhc3RJbmRleD0wLGd2LnRlc3QoZCkmJihmdi5sYXN0SW5kZXg9MCxmdi50ZXN0KGQpKSlyZXR1cm4iIjshMSE9PW0mJihkPShtPW18fGF2KS5wcm9jZXNzKGQpKX1yZXR1cm4gZD1lc2NhcGVBdHRyVmFsdWUoZCl9LFZnLmVzY2FwZUh0bWw9ZXNjYXBlSHRtbCxWZy5lc2NhcGVRdW90ZT1lc2NhcGVRdW90ZSxWZy51bmVzY2FwZVF1b3RlPXVuZXNjYXBlUXVvdGUsVmcuZXNjYXBlSHRtbEVudGl0aWVzPWVzY2FwZUh0bWxFbnRpdGllcyxWZy5lc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzPWVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMsVmcuY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXI9Y2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIsVmcuZnJpZW5kbHlBdHRyVmFsdWU9ZnJpZW5kbHlBdHRyVmFsdWUsVmcuZXNjYXBlQXR0clZhbHVlPWVzY2FwZUF0dHJWYWx1ZSxWZy5vbklnbm9yZVRhZ1N0cmlwQWxsPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LFZnLlN0cmlwVGFnQm9keT1mdW5jdGlvbihlLHMpeyJmdW5jdGlvbiIhPXR5cGVvZiBzJiYocz1mdW5jdGlvbigpe30pO3ZhciBkPSFBcnJheS5pc0FycmF5KGUpLG09W10saD0hMTtyZXR1cm57b25JZ25vcmVUYWc6ZnVuY3Rpb24oZyx4LCQpe2lmKGZ1bmN0aW9uKHMpe3JldHVybiEhZHx8LTEhPT1vdi5pbmRleE9mKGUscyl9KGcpKXtpZigkLmlzQ2xvc2luZyl7dmFyIFM9IlsvcmVtb3ZlZF0iLGo9JC5wb3NpdGlvbisxMDtyZXR1cm4gbS5wdXNoKFshMSE9PWg/aDokLnBvc2l0aW9uLGpdKSxoPSExLFN9cmV0dXJuIGh8fChoPSQucG9zaXRpb24pLCJbcmVtb3ZlZF0ifXJldHVybiBzKGcseCwkKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciBzPSIiLGQ9MDtyZXR1cm4gb3YuZm9yRWFjaChtLGZ1bmN0aW9uKG0pe3MrPWUuc2xpY2UoZCxtWzBdKSxkPW1bMV19KSxzKz1lLnNsaWNlKGQpfX19LFZnLnN0cmlwQ29tbWVudFRhZz1mdW5jdGlvbihlKXtmb3IodmFyIHM9IiIsZD0wO2Q8ZS5sZW5ndGg7KXt2YXIgbT1lLmluZGV4T2YoIlx4M2MhLS0iLGQpO2lmKC0xPT09bSl7cys9ZS5zbGljZShkKTticmVha31zKz1lLnNsaWNlKGQsbSk7dmFyIGg9ZS5pbmRleE9mKCItLVx4M2UiLG0pO2lmKC0xPT09aClicmVhaztkPWgrM31yZXR1cm4gc30sVmcuc3RyaXBCbGFua0NoYXI9ZnVuY3Rpb24oZSl7dmFyIHM9ZS5zcGxpdCgiIik7cmV0dXJuIHM9cy5maWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHM9ZS5jaGFyQ29kZUF0KDApO3JldHVybiAxMjchPT1zJiYoIShzPD0zMSl8fCgxMD09PXN8fDEzPT09cykpfSkscy5qb2luKCIiKX0sVmcuYXR0cmlidXRlV3JhcFNpZ249JyInLFZnLmNzc0ZpbHRlcj1hdixWZy5nZXREZWZhdWx0Q1NTV2hpdGVMaXN0PXJ2O3ZhciB2dj17fSx5dj1udjtmdW5jdGlvbiBnZXRUYWdOYW1lKGUpe3ZhciBzLGQ9eXYuc3BhY2VJbmRleChlKTtyZXR1cm4gcz0tMT09PWQ/ZS5zbGljZSgxLC0xKTplLnNsaWNlKDEsZCsxKSwiLyI9PT0ocz15di50cmltKHMpLnRvTG93ZXJDYXNlKCkpLnNsaWNlKDAsMSkmJihzPXMuc2xpY2UoMSkpLCIvIj09PXMuc2xpY2UoLTEpJiYocz1zLnNsaWNlKDAsLTEpKSxzfWZ1bmN0aW9uIGlzQ2xvc2luZyhlKXtyZXR1cm4iPC8iPT09ZS5zbGljZSgwLDIpfXZhciBidj0vW15hLXpBLVowLTlcXF86Li1dL2dpbTtmdW5jdGlvbiBmaW5kTmV4dEVxdWFsKGUscyl7Zm9yKDtzPGUubGVuZ3RoO3MrKyl7dmFyIGQ9ZVtzXTtpZigiICIhPT1kKXJldHVybiI9Ij09PWQ/czotMX19ZnVuY3Rpb24gZmluZE5leHRRdW90YXRpb25NYXJrKGUscyl7Zm9yKDtzPGUubGVuZ3RoO3MrKyl7dmFyIGQ9ZVtzXTtpZigiICIhPT1kKXJldHVybiInIj09PWR8fCciJz09PWQ/czotMX19ZnVuY3Rpb24gZmluZEJlZm9yZUVxdWFsKGUscyl7Zm9yKDtzPjA7cy0tKXt2YXIgZD1lW3NdO2lmKCIgIiE9PWQpcmV0dXJuIj0iPT09ZD9zOi0xfX1mdW5jdGlvbiBzdHJpcFF1b3RlV3JhcChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuJyInPT09ZVswXSYmJyInPT09ZVtlLmxlbmd0aC0xXXx8IiciPT09ZVswXSYmIiciPT09ZVtlLmxlbmd0aC0xXX0oZSk/ZS5zdWJzdHIoMSxlLmxlbmd0aC0yKTplfXZ2LnBhcnNlVGFnPWZ1bmN0aW9uKGUscyxkKXt2YXIgbT0iIixoPTAsZz0hMSx4PSExLCQ9MCxTPWUubGVuZ3RoLGo9IiIsej0iIjtlOmZvcigkPTA7JDxTOyQrKyl7dmFyIEk9ZS5jaGFyQXQoJCk7aWYoITE9PT1nKXtpZigiPCI9PT1JKXtnPSQ7Y29udGludWV9fWVsc2UgaWYoITE9PT14KXtpZigiPCI9PT1JKXttKz1kKGUuc2xpY2UoaCwkKSksZz0kLGg9JDtjb250aW51ZX1pZigiPiI9PT1JfHwkPT09Uy0xKXttKz1kKGUuc2xpY2UoaCxnKSksaj1nZXRUYWdOYW1lKHo9ZS5zbGljZShnLCQrMSkpLG0rPXMoZyxtLmxlbmd0aCxqLHosaXNDbG9zaW5nKHopKSxoPSQrMSxnPSExO2NvbnRpbnVlfWlmKCciJz09PUl8fCInIj09PUkpZm9yKHZhciBUPTEsUj1lLmNoYXJBdCgkLVQpOyIiPT09Ui50cmltKCl8fCI9Ij09PVI7KXtpZigiPSI9PT1SKXt4PUk7Y29udGludWUgZX1SPWUuY2hhckF0KCQtKytUKX19ZWxzZSBpZihJPT09eCl7eD0hMTtjb250aW51ZX19cmV0dXJuIGg8UyYmKG0rPWQoZS5zdWJzdHIoaCkpKSxtfSx2di5wYXJzZUF0dHI9ZnVuY3Rpb24oZSxzKXt2YXIgZD0wLG09MCxoPVtdLGc9ITEseD1lLmxlbmd0aDtmdW5jdGlvbiBhZGRBdHRyKGUsZCl7aWYoISgoZT0oZT15di50cmltKGUpKS5yZXBsYWNlKGJ2LCIiKS50b0xvd2VyQ2FzZSgpKS5sZW5ndGg8MSkpe3ZhciBtPXMoZSxkfHwiIik7bSYmaC5wdXNoKG0pfX1mb3IodmFyICQ9MDskPHg7JCsrKXt2YXIgUyxqPWUuY2hhckF0KCQpO2lmKCExIT09Z3x8Ij0iIT09ailpZighMT09PWd8fCQhPT1tKWlmKC9cc3xcbnxcdC8udGVzdChqKSl7aWYoZT1lLnJlcGxhY2UoL1xzfFxufFx0L2csIiAiKSwhMT09PWcpe2lmKC0xPT09KFM9ZmluZE5leHRFcXVhbChlLCQpKSl7YWRkQXR0cih5di50cmltKGUuc2xpY2UoZCwkKSkpLGc9ITEsZD0kKzE7Y29udGludWV9JD1TLTE7Y29udGludWV9aWYoLTE9PT0oUz1maW5kQmVmb3JlRXF1YWwoZSwkLTEpKSl7YWRkQXR0cihnLHN0cmlwUXVvdGVXcmFwKHl2LnRyaW0oZS5zbGljZShkLCQpKSkpLGc9ITEsZD0kKzE7Y29udGludWV9fWVsc2U7ZWxzZXtpZigtMT09PShTPWUuaW5kZXhPZihqLCQrMSkpKWJyZWFrO2FkZEF0dHIoZyx5di50cmltKGUuc2xpY2UobSsxLFMpKSksZz0hMSxkPSgkPVMpKzF9ZWxzZSBnPWUuc2xpY2UoZCwkKSxkPSQrMSxtPSciJz09PWUuY2hhckF0KGQpfHwiJyI9PT1lLmNoYXJBdChkKT9kOmZpbmROZXh0UXVvdGF0aW9uTWFyayhlLCQrMSl9cmV0dXJuIGQ8ZS5sZW5ndGgmJighMT09PWc/YWRkQXR0cihlLnNsaWNlKGQpKTphZGRBdHRyKGcsc3RyaXBRdW90ZVdyYXAoeXYudHJpbShlLnNsaWNlKGQpKSkpKSx5di50cmltKGguam9pbigiICIpKX07dmFyIF92PXR2LkZpbHRlckNTUyx4dj1WZyx3dj12diwkdj13di5wYXJzZVRhZyxTdj13di5wYXJzZUF0dHIsa3Y9bnY7ZnVuY3Rpb24gaXNOdWxsKGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIEZpbHRlclhTUyhlKXtlPWZ1bmN0aW9uKGUpe3ZhciBzPXt9O2Zvcih2YXIgZCBpbiBlKXNbZF09ZVtkXTtyZXR1cm4gc30oZXx8e30pLGUuc3RyaXBJZ25vcmVUYWcmJihlLm9uSWdub3JlVGFnJiZjb25zb2xlLmVycm9yKCdOb3RlczogY2Fubm90IHVzZSB0aGVzZSB0d28gb3B0aW9ucyAic3RyaXBJZ25vcmVUYWciIGFuZCAib25JZ25vcmVUYWciIGF0IHRoZSBzYW1lIHRpbWUnKSxlLm9uSWdub3JlVGFnPXh2Lm9uSWdub3JlVGFnU3RyaXBBbGwpLGUud2hpdGVMaXN0fHxlLmFsbG93TGlzdD9lLndoaXRlTGlzdD1mdW5jdGlvbihlKXt2YXIgcz17fTtmb3IodmFyIGQgaW4gZSlBcnJheS5pc0FycmF5KGVbZF0pP3NbZC50b0xvd2VyQ2FzZSgpXT1lW2RdLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSk6c1tkLnRvTG93ZXJDYXNlKCldPWVbZF07cmV0dXJuIHN9KGUud2hpdGVMaXN0fHxlLmFsbG93TGlzdCk6ZS53aGl0ZUxpc3Q9eHYud2hpdGVMaXN0LHRoaXMuYXR0cmlidXRlV3JhcFNpZ249ITA9PT1lLnNpbmdsZVF1b3RlZEF0dHJpYnV0ZVZhbHVlPyInIjp4di5hdHRyaWJ1dGVXcmFwU2lnbixlLm9uVGFnPWUub25UYWd8fHh2Lm9uVGFnLGUub25UYWdBdHRyPWUub25UYWdBdHRyfHx4di5vblRhZ0F0dHIsZS5vbklnbm9yZVRhZz1lLm9uSWdub3JlVGFnfHx4di5vbklnbm9yZVRhZyxlLm9uSWdub3JlVGFnQXR0cj1lLm9uSWdub3JlVGFnQXR0cnx8eHYub25JZ25vcmVUYWdBdHRyLGUuc2FmZUF0dHJWYWx1ZT1lLnNhZmVBdHRyVmFsdWV8fHh2LnNhZmVBdHRyVmFsdWUsZS5lc2NhcGVIdG1sPWUuZXNjYXBlSHRtbHx8eHYuZXNjYXBlSHRtbCx0aGlzLm9wdGlvbnM9ZSwhMT09PWUuY3NzP3RoaXMuY3NzRmlsdGVyPSExOihlLmNzcz1lLmNzc3x8e30sdGhpcy5jc3NGaWx0ZXI9bmV3IF92KGUuY3NzKSl9RmlsdGVyWFNTLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0aW9uKGUpe2lmKCEoZT0oZT1lfHwiIikudG9TdHJpbmcoKSkpcmV0dXJuIiI7dmFyIHM9dGhpcyxkPXMub3B0aW9ucyxtPWQud2hpdGVMaXN0LGg9ZC5vblRhZyxnPWQub25JZ25vcmVUYWcseD1kLm9uVGFnQXR0ciwkPWQub25JZ25vcmVUYWdBdHRyLFM9ZC5zYWZlQXR0clZhbHVlLGo9ZC5lc2NhcGVIdG1sLHo9cy5hdHRyaWJ1dGVXcmFwU2lnbixJPXMuY3NzRmlsdGVyO2Quc3RyaXBCbGFua0NoYXImJihlPXh2LnN0cmlwQmxhbmtDaGFyKGUpKSxkLmFsbG93Q29tbWVudFRhZ3x8KGU9eHYuc3RyaXBDb21tZW50VGFnKGUpKTt2YXIgVD0hMTtkLnN0cmlwSWdub3JlVGFnQm9keSYmKFQ9eHYuU3RyaXBUYWdCb2R5KGQuc3RyaXBJZ25vcmVUYWdCb2R5LGcpLGc9VC5vbklnbm9yZVRhZyk7dmFyIFI9JHYoZSxmdW5jdGlvbihlLHMsZCxULFIpe3ZhciBFPXtzb3VyY2VQb3NpdGlvbjplLHBvc2l0aW9uOnMsaXNDbG9zaW5nOlIsaXNXaGl0ZTpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobSxkKX0sTz1oKGQsVCxFKTtpZighaXNOdWxsKE8pKXJldHVybiBPO2lmKEUuaXNXaGl0ZSl7aWYoRS5pc0Nsb3NpbmcpcmV0dXJuIjwvIitkKyI+Ijt2YXIgTj1mdW5jdGlvbihlKXt2YXIgcz1rdi5zcGFjZUluZGV4KGUpO2lmKC0xPT09cylyZXR1cm57aHRtbDoiIixjbG9zaW5nOiIvIj09PWVbZS5sZW5ndGgtMl19O3ZhciBkPSIvIj09PShlPWt2LnRyaW0oZS5zbGljZShzKzEsLTEpKSlbZS5sZW5ndGgtMV07cmV0dXJuIGQmJihlPWt2LnRyaW0oZS5zbGljZSgwLC0xKSkpLHtodG1sOmUsY2xvc2luZzpkfX0oVCksVT1tW2RdLEI9U3YoTi5odG1sLGZ1bmN0aW9uKGUscyl7dmFyIG09LTEhPT1rdi5pbmRleE9mKFUsZSksaD14KGQsZSxzLG0pO3JldHVybiBpc051bGwoaCk/bT8ocz1TKGQsZSxzLEkpKT9lKyI9Iit6K3MrejplOmlzTnVsbChoPSQoZCxlLHMsbSkpP3ZvaWQgMDpoOmh9KTtyZXR1cm4gVD0iPCIrZCxCJiYoVCs9IiAiK0IpLE4uY2xvc2luZyYmKFQrPSIgLyIpLFQrPSI+In1yZXR1cm4gaXNOdWxsKE89ZyhkLFQsRSkpP2ooVCk6T30saik7cmV0dXJuIFQmJihSPVQucmVtb3ZlKFIpKSxSfTt2YXIganY9RmlsdGVyWFNTOyFmdW5jdGlvbihlLHMpe3ZhciBkPVZnLG09dnYsaD1qdjtmdW5jdGlvbiBmaWx0ZXJYU1MoZSxzKXtyZXR1cm4gbmV3IGgocykucHJvY2VzcyhlKX0ocz1lLmV4cG9ydHM9ZmlsdGVyWFNTKS5maWx0ZXJYU1M9ZmlsdGVyWFNTLHMuRmlsdGVyWFNTPWgsZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gZClzW2VdPWRbZV07Zm9yKHZhciBoIGluIG0pc1toXT1tW2hdfSgpLCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5cGVvZiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiYoc2VsZi5maWx0ZXJYU1M9ZS5leHBvcnRzKX0oUWcsUWcuZXhwb3J0cyk7dmFyIHp2PVFnLmV4cG9ydHM7Y29uc3QgSXY9ZGVmaW5lRXZlbnRIYW5kbGVyKGFzeW5jIGU9Pntjb25zdCBzPXJlc29sdmVTZWN1cml0eVJ1bGVzKGUpO2lmKHMuZW5hYmxlZCYmcy54c3NWYWxpZGF0b3Ipe2NvbnN0IGQ9ey4uLnMueHNzVmFsaWRhdG9yLGVzY2FwZUh0bWw6dm9pZCAwfTshMT09PXMueHNzVmFsaWRhdG9yLmVzY2FwZUh0bWwmJihkLmVzY2FwZUh0bWw9ZT0+ZSk7Y29uc3QgbT1uZXcgenYuRmlsdGVyWFNTKGQpO2lmKCJyZWFkT25seSIhPT1lLm5vZGUucmVxLnNvY2tldC5yZWFkeVN0YXRlJiZzLnhzc1ZhbGlkYXRvci5tZXRob2RzJiZzLnhzc1ZhbGlkYXRvci5tZXRob2RzLmluY2x1ZGVzKGUubm9kZS5yZXEubWV0aG9kKSl7Y29uc3QgZD0iR0VUIj09PWUubm9kZS5yZXEubWV0aG9kP2dldFF1ZXJ5KGUpOmUubm9kZS5yZXEuaGVhZGVyc1siY29udGVudC10eXBlIl0/LmluY2x1ZGVzKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik/YXdhaXQgcmVhZE11bHRpcGFydEZvcm1EYXRhKGUpOmF3YWl0IHJlYWRCb2R5KGUpO2lmKGQmJk9iamVjdC5rZXlzKGQpLmxlbmd0aCl7aWYoZC5zdGF0dXNNZXNzYWdlJiYiQmFkIFJlcXVlc3QiIT09ZC5zdGF0dXNNZXNzYWdlKXJldHVybjtjb25zdCBlPUpTT04uc3RyaW5naWZ5KGQpO2lmKG0ucHJvY2VzcyhKU09OLnN0cmluZ2lmeShkKSkhPT1lKXtjb25zdCBlPXtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJCYWQgUmVxdWVzdCJ9O2lmKCExPT09cy54c3NWYWxpZGF0b3IudGhyb3dFcnJvcilyZXR1cm4gZTt0aHJvdyBjcmVhdGVFcnJvciQxKGUpfX19fX0pLEN2PWNyZWF0ZURlZnUkMSgoZSxzLGQpPT57aWYoQXJyYXkuaXNBcnJheShlW3NdKXx8QXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZVtzXT1kLCEwfSksVHY9dXNlUnVudGltZUNvbmZpZygpLmNzdXJmLFJ2PWRlZmluZUV2ZW50SGFuZGxlcihhc3luYyBzPT57Y29uc3R7Y3N1cmY6ZH09Z2V0Um91dGVSdWxlcyhzKTtpZighMT09PWR8fCExPT09ZD8uZW5hYmxlZClyZXR1cm47Y29uc3QgbT1DdihkLFR2KSxoPXMubm9kZS5yZXEubWV0aG9kPz8iIjtpZighKG0ubWV0aG9kc1RvUHJvdGVjdD8/W10pLmluY2x1ZGVzKGgpKXJldHVybjtjb25zdCBnPWdldENvb2tpZShzLG0uY29va2llS2V5KT8/IiIseD1FbihzLFR2LmhlYWRlck5hbWUpPz8iIiwkPWF3YWl0KGFzeW5jKHMsZCxtLGgpPT57Y29uc3RbZyx4XT1kLnNwbGl0KCI6Iik7aWYoIWd8fCF4KXJldHVybiExO2xldCAkO3RyeXtjb25zdCBzPWF3YWl0IG5nLmRlY3J5cHQoe25hbWU6aHx8aWcsaXY6ZS5mcm9tKGcsImJhc2U2NCIpfSxtLGUuZnJvbSh4LCJiYXNlNjQiKSk7JD0obmV3IFRleHREZWNvZGVyKS5kZWNvZGUocyl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuICQ9PT1zfSkoZyx4LGF3YWl0IHVzZVNlY3JldEtleShtKSxtLmVuY3J5cHRBbGdvcml0aG0pO2lmKCEkKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAzLG5hbWU6IkVCQURDU1JGVE9LRU4iLHN0YXR1c01lc3NhZ2U6IkNTUkYgVG9rZW4gTWlzbWF0Y2giLG1lc3NhZ2U6Zz94PyJDU1JGIFRva2VuIGludmFsaWQiOiJDU1JGIFRva2VuIG5vdCBmb3VuZCI6IkNTUkYgQ29va2llIG5vdCBmb3VuZCJ9KX0pLF9sYXp5Xzc2VGlZbT0oKT0+aW1wb3J0KCIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIikudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5IfSksRXY9W3tyb3V0ZToiIixoYW5kbGVyOkNnLGxhenk6ITEsbWlkZGxld2FyZTohMCxtZXRob2Q6dm9pZCAwfSx7cm91dGU6Ii9hcGkvc3lzdGVtL2Rpc3BhdGNoL29wdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvb3B0aW9ucy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3N5c3RlbS9kaXNwYXRjaC9wcmV2aWV3IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL2Rpc3BhdGNoL3ByZXZpZXcucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3N5c3RlbS9kaXNwYXRjaC9zZW5kIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL2Rpc3BhdGNoL3NlbmQucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3N5c3RlbS90aWNrZXRzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3N5c3RlbS90aWNrZXRzL2luZGV4LmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvc3lzdGVtL3RpY2tldHMvOmlkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL3RpY2tldHMvaW5kZXgucGF0Y2gubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicGF0Y2gifSx7cm91dGU6Ii9hcGkvc3lzdGVtL3RpY2tldHMvOmlkL21lc3NhZ2VzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL3RpY2tldHMvX2lkL21lc3NhZ2VzLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9zeXN0ZW0vdGlja2V0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3N5c3RlbS9pbmRleC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3N1cHBvcnQvdGlja2V0cy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zdXBwb3J0L3RpY2tldHMvaW5kZXguZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkL21lc3NhZ2VzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3VwcG9ydC90aWNrZXRzL19pZC9tZXNzYWdlcy5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvc3VwcG9ydC90aWNrZXRzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3VwcG9ydC9pbmRleC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3N1cHBvcnQvdGlja2V0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3N1cHBvcnQvaW5kZXgucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L2F1ZGl0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc2VsZmhvc3QvYXVkaXQuZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9zZWxmaG9zdC9jZi1hY2NvdW50cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3NlbGZob3N0L2NmLWFjY291bnRzLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9zZWxmaG9zdC9kZXBsb3kiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC9kZXBsb3kucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L2Rpc2Nvbm5lY3QiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC9kaXNjb25uZWN0LnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9zZWxmaG9zdC9zZWNyZXRzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc2VsZmhvc3Qvc2VjcmV0cy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L3NlY3JldHMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC9zZWNyZXRzLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3NlbGZob3N0L3N0YXR1cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3NlbGZob3N0L3N0YXR1cy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L3Rlc3QtZW1haWwiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC90ZXN0LWVtYWlsLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9yZWZlcnJhbC9zdGF0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3JlZmVycmFsL3N0YXRzLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcHJvamVjdHMvOmlkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcHJvamVjdHMvX2lkXy5kZWxldGUubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZGVsZXRlIn0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Byb2plY3RzL19pZF8uZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9wcm9qZWN0cy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9qZWN0cy9faWRfLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZC9tZW1iZXJzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcHJvamVjdHMvX2lkL21lbWJlcnMucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZC9tZW1iZXJzLzp1c2VySWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9qZWN0cy9faWQvbWVtYmVycy9fdXNlcklkXy5kZWxldGUubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZGVsZXRlIn0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZC9wcm9kdWN0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Byb2plY3RzL19pZC9wcm9kdWN0cy5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvcHJvamVjdHMvOmlkL3Byb2R1Y3RzLzpwcm9kdWN0SWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9qZWN0cy9faWQvcHJvZHVjdHMvX3Byb2R1Y3RJZF8uZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9wcm9qZWN0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcHJvamVjdHMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvcHJvZHVjdHMvOmlkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcHJvZHVjdHMvX2lkXy5kZWxldGUubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZGVsZXRlIn0se3JvdXRlOiIvYXBpL3Byb2R1Y3RzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Byb2R1Y3RzL19pZF8uZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9wcm9kdWN0cy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9kdWN0cy9faWRfLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3Byb2R1Y3RzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXguZ2V0Mi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcHJvZHVjdHMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5wb3N0Mi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL25vdGlmaWNhdGlvbnMvOmlkL3JlYWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9ub3RpZmljYXRpb25zL19pZC9yZWFkLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL25vdGlmaWNhdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5nZXQzLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9ub3RpZmljYXRpb25zL3VucmVhZC1jb3VudCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL25vdGlmaWNhdGlvbnMvdW5yZWFkLWNvdW50LmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2UiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW5kZXguZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZSIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbi9pbmRleC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2Uvc2V0dGluZ3MiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZS9zZXR0aW5ncy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbi9pbnZvaWNlL3NldHRpbmdzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2Uvc2V0dGluZ3MucGF0Y2gubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicGF0Y2gifSx7cm91dGU6Ii9hcGkvcGF5bWVudHMvYmlsbGluZy9iYWxhbmNlIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcGF5bWVudHMvYmlsbGluZy9iYWxhbmNlLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcGF5bWVudHMvYmlsbGluZy90cmFuc2FjdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wYXltZW50cy9iaWxsaW5nL3RyYW5zYWN0aW9ucy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3BheW1lbnRzL3NlcGF5L2NoZWNrb3V0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcGF5bWVudHMvc2VwYXkvY2hlY2tvdXQucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3BheW1lbnRzL3NlcGF5L3N0YXR1cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3BheW1lbnRzL3NlcGF5L3N0YXR1cy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3BheW1lbnRzL3NlcGF5L3dlYmhvb2siLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wYXltZW50cy9zZXBheS93ZWJob29rLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9hY2NvdW50IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXguZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9hdXRoL2FnZW50IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9hZ2VudC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvZGVtby1sb2dpbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGVtby1sb2dpbi5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvYXV0aC9kZXYtY2xlYW51cCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGV2LWNsZWFudXAucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL2F1dGgvZGV2LWxvZ2luIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9kZXYtbG9naW4ucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL2F1dGgvZGV2LXByb3Zpc2lvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGV2LXByb3Zpc2lvbi5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvYXV0aC9kZXYtc2VlZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGV2LXNlZWQucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL2F1dGgvZ2l0aHViIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9naXRodWIuZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFjayIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZ2l0aHViL2NhbGxiYWNrLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvYXV0aC9nb29nbGUiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9hdXRoL2dvb2dsZS5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvZ29vZ2xlL2NhbGxiYWNrIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2suZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3N0YXJ0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdGFydC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdG9wIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdG9wLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3VzZXJzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9pbXBlcnNvbmF0ZS91c2Vycy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvbG9nb3V0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9sb2dvdXQuZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9hdXRoL21lIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9tZS5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvcGhvbmUiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9hdXRoL3Bob25lLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL2ludml0YXRpb25zLzp0b2tlbi9hY2NlcHQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbnZpdGF0aW9ucy9fdG9rZW4vYWNjZXB0LnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9pbnZpdGF0aW9ucy86dG9rZW4iLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbnZpdGF0aW9ucy9pbmRleC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LmdldDQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbi9pbnZpdGF0aW9ucy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMvaW5kZXguZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW5kZXguZ2V0Mi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL2ludml0YXRpb25zIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL2luZGV4LnBvc3QyLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvOnVzZXJJZC9hYmlsaXRpZXMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy9fdXNlcklkL2FiaWxpdGllcy5wYXRjaC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy86dXNlcklkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvaW5kZXguZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy86dXNlcklkL3JvbGVzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvX3VzZXJJZC9yb2xlcy5wYXRjaC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbi9pbmRleC5nZXQzLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbi9pbmRleC5wb3N0My5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5nZXQ1Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb25zIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXgucG9zdDMubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb25zL3N3aXRjaCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbnMvc3dpdGNoLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9wZXJtaXNzaW9ucyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LmdldDYubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3JvbGVzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3JvbGVzL19pZF8uZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9yb2xlcy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9yb2xlcy9faWRfLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3JvbGVzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXguZ2V0Ny5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcm9sZXMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5wb3N0NC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3Nlc3Npb24vcmVmcmVzaCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Nlc3Npb24vcmVmcmVzaC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvdXNlci9hdmF0YXIiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS91c2VyL2F2YXRhci5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvdXNlciIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LnBhdGNoMi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2FwaS91c2VyL25vdGlmaWNhdGlvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3VzZXIvbm90aWZpY2F0aW9uLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvdXNlci9ub3RpZmljYXRpb24iLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS91c2VyL25vdGlmaWNhdGlvbi5wYXRjaC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2ltYWdlcy8qKjpwYXRobmFtZSIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvaW1hZ2VzL18uLi5wYXRobmFtZV8uZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL19fbnV4dF9lcnJvciIsaGFuZGxlcjpfbGF6eV83NlRpWW0sbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiL19fbnV4dF9pc2xhbmQvKioiLGhhbmRsZXI6VGcsbGF6eTohMSxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiL2FwaS9fbnV4dF9pY29uLzpjb2xsZWN0aW9uIixoYW5kbGVyOkRnLGxhenk6ITEsbWlkZGxld2FyZTohMSxtZXRob2Q6dm9pZCAwfSx7cm91dGU6IiIsaGFuZGxlcjpBZyxsYXp5OiExLG1pZGRsZXdhcmU6ITEsbWV0aG9kOnZvaWQgMH0se3JvdXRlOiIiLGhhbmRsZXI6cWcsbGF6eTohMSxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiIixoYW5kbGVyOkZnLGxhenk6ITEsbWlkZGxld2FyZTohMSxtZXRob2Q6dm9pZCAwfSx7cm91dGU6IiIsaGFuZGxlcjpNZyxsYXp5OiExLG1pZGRsZXdhcmU6ITEsbWV0aG9kOnZvaWQgMH0se3JvdXRlOiIiLGhhbmRsZXI6SXYsbGF6eTohMSxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiIixoYW5kbGVyOlJ2LGxhenk6ITEsbWlkZGxld2FyZTohMSxtZXRob2Q6dm9pZCAwfSx7cm91dGU6Ii8qKiIsaGFuZGxlcjpfbGF6eV83NlRpWW0sbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9XTtjb25zdCBPdj1mdW5jdGlvbigpe2NvbnN0IGU9dXNlUnVudGltZUNvbmZpZygpLHM9bmV3IEhvb2thYmxlLGNhcHR1cmVFcnJvcj0oZSxkPXt9KT0+e2NvbnN0IG09cy5jYWxsSG9va1BhcmFsbGVsKCJlcnJvciIsZSxkKS5jYXRjaChlPT57Y29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgY2FwdHVyaW5nIGFub3RoZXIgZXJyb3IiLGUpfSk7aWYoZC5ldmVudCYmaXNFdmVudChkLmV2ZW50KSl7Y29uc3Qgcz1kLmV2ZW50LmNvbnRleHQubml0cm8/LmVycm9ycztzJiZzLnB1c2goe2Vycm9yOmUsY29udGV4dDpkfSksZC5ldmVudC53YWl0VW50aWwmJmQuZXZlbnQud2FpdFVudGlsKG0pfX0sZD1jcmVhdGVBcHAoe2RlYnVnOmRlc3RyKCExKSxvbkVycm9yOihlLHMpPT4oY2FwdHVyZUVycm9yKGUse2V2ZW50OnMsdGFnczpbInJlcXVlc3QiXX0pLGFzeW5jIGZ1bmN0aW9uKGUscyl7Zm9yKGNvbnN0IGQgb2YgWWkpdHJ5e2lmKGF3YWl0IGQoZSxzLHtkZWZhdWx0SGFuZGxlcjpkZWZhdWx0SGFuZGxlcn0pLHMuaGFuZGxlZClyZXR1cm59Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19KGUscykpLG9uUmVxdWVzdDphc3luYyBlPT57ZS5jb250ZXh0Lm5pdHJvPWUuY29udGV4dC5uaXRyb3x8e2Vycm9yczpbXX07Y29uc3Qgcz1lLm5vZGUucmVxPy5fX3VuZW52X187cz8uX3BsYXRmb3JtJiYoZS5jb250ZXh0PXtfcGxhdGZvcm06cz8uX3BsYXRmb3JtLC4uLnMuX3BsYXRmb3JtLC4uLmUuY29udGV4dH0pLCFlLmNvbnRleHQud2FpdFVudGlsJiZzPy53YWl0VW50aWwmJihlLmNvbnRleHQud2FpdFVudGlsPXMud2FpdFVudGlsKSxlLmZldGNoPShzLGQpPT5mZXRjaFdpdGhFdmVudChlLHMsZCx7ZmV0Y2g6bG9jYWxGZXRjaH0pLGUuJGZldGNoPShzLGQpPT5mZXRjaFdpdGhFdmVudChlLHMsZCx7ZmV0Y2g6Z30pLGUud2FpdFVudGlsPXM9PntlLmNvbnRleHQubml0cm8uX3dhaXRVbnRpbFByb21pc2VzfHwoZS5jb250ZXh0Lm5pdHJvLl93YWl0VW50aWxQcm9taXNlcz1bXSksZS5jb250ZXh0Lm5pdHJvLl93YWl0VW50aWxQcm9taXNlcy5wdXNoKHMpLGUuY29udGV4dC53YWl0VW50aWwmJmUuY29udGV4dC53YWl0VW50aWwocyl9LGUuY2FwdHVyZUVycm9yPShzLGQpPT57Y2FwdHVyZUVycm9yKHMse2V2ZW50OmUsLi4uZH0pfSxhd2FpdCBPdi5ob29rcy5jYWxsSG9vaygicmVxdWVzdCIsZSkuY2F0Y2gocz0+e2NhcHR1cmVFcnJvcihzLHtldmVudDplLHRhZ3M6WyJyZXF1ZXN0Il19KX0pfSxvbkJlZm9yZVJlc3BvbnNlOmFzeW5jKGUscyk9Pnthd2FpdCBPdi5ob29rcy5jYWxsSG9vaygiYmVmb3JlUmVzcG9uc2UiLGUscykuY2F0Y2gocz0+e2NhcHR1cmVFcnJvcihzLHtldmVudDplLHRhZ3M6WyJyZXF1ZXN0IiwicmVzcG9uc2UiXX0pfSl9LG9uQWZ0ZXJSZXNwb25zZTphc3luYyhlLHMpPT57YXdhaXQgT3YuaG9va3MuY2FsbEhvb2soImFmdGVyUmVzcG9uc2UiLGUscykuY2F0Y2gocz0+e2NhcHR1cmVFcnJvcihzLHtldmVudDplLHRhZ3M6WyJyZXF1ZXN0IiwicmVzcG9uc2UiXX0pfSl9fSksbT1mdW5jdGlvbihlPXt9KXtjb25zdCBzPWNyZWF0ZVJvdXRlciQxKHt9KSxkPXt9O2xldCBtO2NvbnN0IGg9e30sYWRkUm91dGU9KGUsbSxnKT0+e2xldCB4PWRbZV07aWYoeHx8KGRbZV09eD17cGF0aDplLGhhbmRsZXJzOnt9fSxzLmluc2VydChlLHgpKSxBcnJheS5pc0FycmF5KGcpKWZvcihjb25zdCBzIG9mIGcpYWRkUm91dGUoZSxtLHMpO2Vsc2UgeC5oYW5kbGVyc1tnXT10b0V2ZW50SGFuZGxlcihtKTtyZXR1cm4gaH07aC51c2U9aC5hZGQ9KGUscyxkKT0+YWRkUm91dGUoZSxzLGR8fCJhbGwiKTtmb3IoY29uc3QgZSBvZiBNbiloW2VdPShzLGQpPT5oLmFkZChzLGQsZSk7Y29uc3QgbWF0Y2hIYW5kbGVyPShlPSIvIixkPSJnZXQiKT0+e2NvbnN0IGg9ZS5pbmRleE9mKCI/Iik7LTEhPT1oJiYoZT1lLnNsaWNlKDAsTWF0aC5tYXgoMCxoKSkpO2NvbnN0IGc9cy5sb29rdXAoZSk7aWYoIWd8fCFnLmhhbmRsZXJzKXJldHVybntlcnJvcjpjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwNCxuYW1lOiJOb3QgRm91bmQiLHN0YXR1c01lc3NhZ2U6YENhbm5vdCBmaW5kIGFueSByb3V0ZSBtYXRjaGluZyAke2V8fCIvIn0uYH0pfTtsZXQgeD1nLmhhbmRsZXJzW2RdfHxnLmhhbmRsZXJzLmFsbDtpZigheCl7bXx8KG09dG9Sb3V0ZU1hdGNoZXIocykpO2NvbnN0IGg9bS5tYXRjaEFsbChlKS5yZXZlcnNlKCk7Zm9yKGNvbnN0IGUgb2YgaCl7aWYoZS5oYW5kbGVyc1tkXSl7eD1lLmhhbmRsZXJzW2RdLGcuaGFuZGxlcnNbZF09Zy5oYW5kbGVyc1tkXXx8eDticmVha31pZihlLmhhbmRsZXJzLmFsbCl7eD1lLmhhbmRsZXJzLmFsbCxnLmhhbmRsZXJzLmFsbD1nLmhhbmRsZXJzLmFsbHx8eDticmVha319fXJldHVybiB4P3ttYXRjaGVkOmcsaGFuZGxlcjp4fTp7ZXJyb3I6Y3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDUsbmFtZToiTWV0aG9kIE5vdCBBbGxvd2VkIixzdGF0dXNNZXNzYWdlOmBNZXRob2QgJHtkfSBpcyBub3QgYWxsb3dlZCBvbiB0aGlzIHJvdXRlLmB9KX19LGc9ZS5wcmVlbXB0aXZlfHxlLnByZWVtdGl2ZTtyZXR1cm4gaC5oYW5kbGVyPVpuKGU9Pntjb25zdCBzPW1hdGNoSGFuZGxlcihlLnBhdGgsZS5tZXRob2QudG9Mb3dlckNhc2UoKSk7aWYoImVycm9yImluIHMpe2lmKGcpdGhyb3cgcy5lcnJvcjtyZXR1cm59ZS5jb250ZXh0Lm1hdGNoZWRSb3V0ZT1zLm1hdGNoZWQ7Y29uc3QgZD1zLm1hdGNoZWQucGFyYW1zfHx7fTtyZXR1cm4gZS5jb250ZXh0LnBhcmFtcz1kLFByb21pc2UucmVzb2x2ZShzLmhhbmRsZXIoZSkpLnRoZW4oZT0+dm9pZCAwPT09ZSYmZz9udWxsOmUpfSksaC5oYW5kbGVyLl9fcmVzb2x2ZV9fPWFzeW5jIGU9PntlPXdpdGhMZWFkaW5nU2xhc2goZSk7Y29uc3Qgcz1tYXRjaEhhbmRsZXIoZSk7aWYoImVycm9yImluIHMpcmV0dXJuO2xldCBkPXtyb3V0ZTpzLm1hdGNoZWQucGF0aCxoYW5kbGVyOnMuaGFuZGxlcn07aWYocy5oYW5kbGVyLl9fcmVzb2x2ZV9fKXtjb25zdCBtPWF3YWl0IHMuaGFuZGxlci5fX3Jlc29sdmVfXyhlKTtpZighbSlyZXR1cm47ZD17Li4uZCwuLi5tfX1yZXR1cm4gZH0saH0oe3ByZWVtcHRpdmU6ITB9KSxoPXRvTm9kZUxpc3RlbmVyKGQpLGxvY2FsRmV0Y2g9KGUscyk9PmUudG9TdHJpbmcoKS5zdGFydHNXaXRoKCIvIik/YXN5bmMgZnVuY3Rpb24oZSxzLGQ9e30pe3RyeXtjb25zdCBtPWF3YWl0IGIoZSx7dXJsOnMsLi4uZH0pO3JldHVybiBuZXcgUmVzcG9uc2UobS5ib2R5LHtzdGF0dXM6bS5zdGF0dXMsc3RhdHVzVGV4dDptLnN0YXR1c1RleHQsaGVhZGVyczp2JDIobS5oZWFkZXJzKX0pfWNhdGNoKGUpe3JldHVybiBuZXcgUmVzcG9uc2UoZS50b1N0cmluZygpLHtzdGF0dXM6TnVtYmVyLnBhcnNlSW50KGUuc3RhdHVzQ29kZXx8ZS5jb2RlKXx8NTAwLHN0YXR1c1RleHQ6ZS5zdGF0dXNUZXh0fSl9fShoLGUscykudGhlbihlPT5mdW5jdGlvbihlKXtyZXR1cm4gZS5oZWFkZXJzLmhhcygic2V0LWNvb2tpZSIpP25ldyBSZXNwb25zZShlLmJvZHkse3N0YXR1czplLnN0YXR1cyxzdGF0dXNUZXh0OmUuc3RhdHVzVGV4dCxoZWFkZXJzOm5vcm1hbGl6ZUNvb2tpZUhlYWRlcnMoZS5oZWFkZXJzKX0pOmV9KGUpKTpnbG9iYWxUaGlzLmZldGNoKGUscyksZz1jcmVhdGVGZXRjaCh7ZmV0Y2g6bG9jYWxGZXRjaCxIZWFkZXJzOnRpLGRlZmF1bHRzOntiYXNlVVJMOmUuYXBwLmJhc2VVUkx9fSk7dmFyIHg7Z2xvYmFsVGhpcy4kZmV0Y2g9ZyxkLnVzZSgoeD17bG9jYWxGZXRjaDpsb2NhbEZldGNofSxabihlPT57Y29uc3Qgcz1nZXRSb3V0ZVJ1bGVzKGUpO2lmKHMuaGVhZGVycyYmQW4oZSxzLmhlYWRlcnMpLHMucmVkaXJlY3Qpe2xldCBkPXMucmVkaXJlY3QudG87aWYoZC5lbmRzV2l0aCgiLyoqIikpe2xldCBtPWUucGF0aDtjb25zdCBoPXMucmVkaXJlY3QuX3JlZGlyZWN0U3RyaXBCYXNlO2gmJihtPXdpdGhvdXRCYXNlKG0saCkpLGQ9am9pblVSTChkLnNsaWNlKDAsLTMpLG0pfWVsc2UgZS5wYXRoLmluY2x1ZGVzKCI/IikmJihkPXdpdGhRdWVyeShkLGdldFF1ZXJ5JDEoZS5wYXRoKSkpO3JldHVybiBzZW5kUmVkaXJlY3QoZSxkLHMucmVkaXJlY3Quc3RhdHVzQ29kZSl9aWYocy5wcm94eSl7bGV0IGQ9cy5wcm94eS50bztpZihkLmVuZHNXaXRoKCIvKioiKSl7bGV0IG09ZS5wYXRoO2NvbnN0IGg9cy5wcm94eS5fcHJveHlTdHJpcEJhc2U7aCYmKG09d2l0aG91dEJhc2UobSxoKSksZD1qb2luVVJMKGQuc2xpY2UoMCwtMyksbSl9ZWxzZSBlLnBhdGguaW5jbHVkZXMoIj8iKSYmKGQ9d2l0aFF1ZXJ5KGQsZ2V0UXVlcnkkMShlLnBhdGgpKSk7cmV0dXJuIHByb3h5UmVxdWVzdChlLGQse2ZldGNoOngubG9jYWxGZXRjaCwuLi5zLnByb3h5fSl9fSkpKTtmb3IoY29uc3QgcyBvZiBFdil7bGV0IGg9cy5sYXp5P2xhenlFdmVudEhhbmRsZXIocy5oYW5kbGVyKTpzLmhhbmRsZXI7aWYocy5taWRkbGV3YXJlfHwhcy5yb3V0ZSl7Y29uc3QgbT0oZS5hcHAuYmFzZVVSTCsocy5yb3V0ZXx8Ii8iKSkucmVwbGFjZSgvXC8rL2csIi8iKTtkLnVzZShtLGgpfWVsc2V7Y29uc3QgZT1nZXRSb3V0ZVJ1bGVzRm9yUGF0aChzLnJvdXRlLnJlcGxhY2UoLzpcdyt8XCpcKi9nLCJfIikpO2UuY2FjaGUmJihoPURpKGgse2dyb3VwOiJuaXRyby9yb3V0ZXMiLC4uLmUuY2FjaGV9KSksbS51c2Uocy5yb3V0ZSxoLHMubWV0aG9kKX19ZC51c2UoZS5hcHAuYmFzZVVSTCxtLmhhbmRsZXIpO3tjb25zdCBlPWQuaGFuZGxlcjtkLmhhbmRsZXI9cz0+e2NvbnN0IGQ9e2V2ZW50OnN9O3JldHVybiBLaS5jYWxsQXN5bmMoZCwoKT0+ZShzKSl9fXJldHVybntob29rczpzLGgzQXBwOmQscm91dGVyOm0sbG9jYWxDYWxsOmU9PmIoaCxlKSxsb2NhbEZldGNoOmxvY2FsRmV0Y2gsY2FwdHVyZUVycm9yOmNhcHR1cmVFcnJvcn19KCk7ZnVuY3Rpb24gdXNlTml0cm9BcHAoKXtyZXR1cm4gT3Z9IWZ1bmN0aW9uKGUpe2Zvcihjb25zdCBzIG9mIElnKXRyeXtzKGUpfWNhdGNoKHMpe3Rocm93IGUuY2FwdHVyZUVycm9yKHMse3RhZ3M6WyJwbHVnaW4iXX0pLHN9fShPdik7Y29uc3QgUHY9eyIvZmF2aWNvbi5pY28iOnt0eXBlOiJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLGV0YWc6JyIxMGJlLW44ZWd5RTl0Y2I3c0tHci9wWUNhUTR1V3F4SSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQyMVoiLHNpemU6NDI4NixwYXRoOiIuLi9wdWJsaWMvZmF2aWNvbi5pY28ifSwiL3JvYm90cy50eHQiOnt0eXBlOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTgtajhPSXNMOXFHRG1OWitsSGhwMnR5SDRYdGFFIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDIxWiIsc2l6ZToyNCxwYXRoOiIuLi9wdWJsaWMvcm9ib3RzLnR4dCJ9LCIvX251eHQvMURJa0J5TWQuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI4OC1DODJTRGh1NEwyaCswZ0NrbGFOckJZNFREVTQiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjEzNixwYXRoOiIuLi9wdWJsaWMvX251eHQvMURJa0J5TWQuanMifSwiL19udXh0LzRsSG15SGJILmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNDU2MC0vRHR1ckVTWi9FTGJidWxDVjNENXpXZldyYXMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjE3NzYwLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC80bEhteUhiSC5qcyJ9LCIvX251eHQvN2NWU09DY3UuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJjYjYtamlBWEZNK2hDOEtUMjFoUnFnT2k1dW1hVUFNIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZTozMjU0LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC83Y1ZTT0NjdS5qcyJ9LCIvX251eHQvQjFNZUxyaTMuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIxYWJjLXdyY2J3NVRDZUVnUE96SENwQTZRZlZUNWVmbyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6Njg0NCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQjFNZUxyaTMuanMifSwiL19udXh0L0I3czVwampSLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNjE0LUlPMkRodlh4a0d2ZGVkVjNqOGRVcUwvd2lBcyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6MTU1NixwYXRoOiIuLi9wdWJsaWMvX251eHQvQjdzNXBqalIuanMifSwiL19udXh0L0JBdW5pLXFkLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMWZiLUpQZThUT2JQVWx4QThtRW5GSDBDcUtnUjY0dyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6NTA3LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CQXVuaS1xZC5qcyJ9LCIvX251eHQvQkZPTm82M1guanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJhMjktQnZTWFdyR0I5S2lmdU56UElCMkcvaWtMcjA0IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZToyNjAxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CRk9ObzYzWC5qcyJ9LCIvX251eHQvQk15Ykc0T2suanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJlZmQtQnAxWFZsUTE4bEo3UXV6MG9nMXJPeXFkdUdvIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZTozODM3LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CTXliRzRPay5qcyJ9LCIvX251eHQvQlNHdDN4UlcuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI0OGUtTzJZRFE4ejZBd3ZTTWUwOHJjemtMYW1CdStZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZToxMTY2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CU0d0M3hSVy5qcyJ9LCIvX251eHQvQlNSS3FHclAuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI3YjYtWlNvS29hRUJRQWVqaXhWd3hQa202emxZR2FRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZToxOTc0LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CU1JLcUdyUC5qcyJ9LCIvX251eHQvQlN5MGkyQWYuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJmODAtMkh3dEF1UCswYzdjWG9DTDk1c0thQkFaR25ZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZTozOTY4LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CU3kwaTJBZi5qcyJ9LCIvX251eHQvQld2cWx3NWYuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIzYmNkLVo5cHlGb3V2TnEzcENwRVIwMFpGR2Y3dGdDcyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6MTUzMDkscGF0aDoiLi4vcHVibGljL19udXh0L0JXdnFsdzVmLmpzIn0sIi9fbnV4dC9CWmxOTmZrNC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjZmOC1HdWgxeTVGOGFMeUl6ZkM1bzJ2RUpjcGlVTVUiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjE3ODQscGF0aDoiLi4vcHVibGljL19udXh0L0JabE5OZms0LmpzIn0sIi9fbnV4dC9CZDQtT2MzNi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjI1Ny1zbCtYWTJUTW1ncS9qRjg1Zjg5N2ovenFSQ1kiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjU5OSxwYXRoOiIuLi9wdWJsaWMvX251eHQvQmQ0LU9jMzYuanMifSwiL19udXh0L0JkWlg1eGdmLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjNmNy0rTGNPWTZENHRuTTNLdTVKZi9IWlZkSlFxM0kiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjkyMDcscGF0aDoiLi4vcHVibGljL19udXh0L0JkWlg1eGdmLmpzIn0sIi9fbnV4dC9CZUVNQ3l1Wi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEzNmMtUjlJZEFPQUtwaURlMFJ0ejlvYlZQVTNtU2FRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZTo0OTcyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CZUVNQ3l1Wi5qcyJ9LCIvX251eHQvQmhXUzE4aTcuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI2ZmMtVndpVnVISGJsTW94VTEyVnQwekNSMGxWSzRjIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxNzg4LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CaFdTMThpNy5qcyJ9LCIvX251eHQvQmhhR29hem8uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI4OC1DODJTRGh1NEwyaCswZ0NrbGFOckJZNFREVTQiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjEzNixwYXRoOiIuLi9wdWJsaWMvX251eHQvQmhhR29hem8uanMifSwiL19udXh0L0JyTlJWSUJBLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNzY5LWQ5MjFSb3NwYXR0SkdPWExRYWxlTmtuZkxqVSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6MTg5NyxwYXRoOiIuLi9wdWJsaWMvX251eHQvQnJOUlZJQkEuanMifSwiL19udXh0L0J0OFMwZG1sLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMmJkLVVLWHVIWjVPWGlickl6VktDUnBha05GUTd5YyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6NzAxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CdDhTMGRtbC5qcyJ9LCIvX251eHQvQzFPUWl5VUQuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI3M2MtS0NmMDJ5RXVBUUJveDFjK0Z6bG8wU1NpTVA0IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxODUyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DMU9RaXlVRC5qcyJ9LCIvX251eHQvQnVMU3VBOE0uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJmOGViLVJYMm5OMHZRSnlqZ1hBc2xFdGFaK3VIL1BzSSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6NjM3MjMscGF0aDoiLi4vcHVibGljL19udXh0L0J1TFN1QThNLmpzIn0sIi9fbnV4dC9DN1l5NnRSMy5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjNmMmUtVm84NzZKTmJySFF5T0p0YTMwa2NIZjdnUDIwIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxNjE3NCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQzdZeTZ0UjMuanMifSwiL19udXh0L0NBVUFYNVZyLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjA0MC1nUGt6ckZpYlYyTXRMakNEdzZsUlNaRGVoaU0iJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjgyNTYscGF0aDoiLi4vcHVibGljL19udXh0L0NBVUFYNVZyLmpzIn0sIi9fbnV4dC9DR1hnU01aaC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjI1ZC1HK01qRkNKNWp6THh6UHM5cTEzaGJpZTBvZ3ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjYwNSxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ0dYZ1NNWmguanMifSwiL19udXh0L0NGQnRjQjdvLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTkwMGEtdVB1VVN4UWZVVlorUXJaeHBoR1FzaE9ZYk9VIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxMDI0MTAscGF0aDoiLi4vcHVibGljL19udXh0L0NGQnRjQjdvLmpzIn0sIi9fbnV4dC9DSUM3dnNaNS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjc3Yy1nSkF3SGw3TGpvNTlIU3phckFnMHBCZXBuQ2ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjE5MTYscGF0aDoiLi4vcHVibGljL19udXh0L0NJQzd2c1o1LmpzIn0sIi9fbnV4dC9DVzhmS25GRS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEwYzdiLWtVTkV3TDRVY0pCT0cyTjR4cGpFYURtdFF1dyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6Njg3MzEscGF0aDoiLi4vcHVibGljL19udXh0L0NXOGZLbkZFLmpzIn0sIi9fbnV4dC9DWG9jNFVFUi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjJhNmMtQm95SEZ2dVhZTXRjRnRCbmtnNFEwWVp3OEpZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxMDg2MCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ1hvYzRVRVIuanMifSwiL19udXh0L0NZbWxNSVh6LmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciYWY2LTJSV2NNUEt4aFpERm84b1hHV3o3V0JOQzFoZyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6MjgwNixwYXRoOiIuLi9wdWJsaWMvX251eHQvQ1ltbE1JWHouanMifSwiL19udXh0L0NjNnppaC1SLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNzE2LTdUZk04RjVvU3IyOW9IL3VzUnVEMFA3M1lFUSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6MTgxNCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ2M2emloLVIuanMifSwiL19udXh0L0NZYW16TG01LmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciZTAxNi1NRUE1TXlVZzNmZldraHN5ajNaM05kMUJ0ZFEiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjU3MzY2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DWWFtekxtNS5qcyJ9LCIvX251eHQvQ2NNTUYxZzkuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIzYWYtV0JoSnZBa0JiZHNVSndoMFBIb0NURVBHRnhNIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZTo5NDMscGF0aDoiLi4vcHVibGljL19udXh0L0NjTU1GMWc5LmpzIn0sIi9fbnV4dC9DZl9mdzFFOS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjMyMi0zdm0va29xYi83T05xV0lvalpjbmRKYkdNZnMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjgwMixwYXRoOiIuLi9wdWJsaWMvX251eHQvQ2ZfZncxRTkuanMifSwiL19udXh0L0NmaFlGWU9ZLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMmFhMC0rOEpMejl5eHdiRld5b090TzZsQzB1TFJBUjAiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjEwOTEyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DZmhZRllPWS5qcyJ9LCIvX251eHQvQ2w0aTRyU00uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI2YzQtTGFQV3gzRDNwOFpwUlVFVzF1c1krZDdRVXJRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE3WiIsc2l6ZToxNzMyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DbDRpNHJTTS5qcyJ9LCIvX251eHQvQ29JZHo0a2EuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIxN2U1LXB3c3hKZ0NiZ0o3bmhOcTJHNXFuVUgxayt3SSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxN1oiLHNpemU6NjExNyxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ29JZHo0a2EuanMifSwiL19udXh0L0NxeVdyTk54LmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNTk5LVMva1NheTlRekh2UTBhekRYWEJYRUowMG96ayInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxN1oiLHNpemU6MTQzMyxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ3F5V3JOTnguanMifSwiL19udXh0L0NzSzUxcXRkLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNTE2LWpMNXFOc1RRK2ltaHluQ1BHbGtDcjNZdm5tSSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxN1oiLHNpemU6MTMwMixwYXRoOiIuLi9wdWJsaWMvX251eHQvQ3NLNTFxdGQuanMifSwiL19udXh0L0N0YTE1c0ctLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjNhNC0ya28xNEpJTDh6azg0bnhId2hLOUFKaVh2ZVkiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjkxMjQscGF0aDoiLi4vcHVibGljL19udXh0L0N0YTE1c0ctLmpzIn0sIi9fbnV4dC9DeGNaclkzVy5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjg5Ny1Dd0dpekRjV3VzNGoyenBIOXFRZnZTbWcvZU0iJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjIxOTkscGF0aDoiLi4vcHVibGljL19udXh0L0N4Y1pyWTNXLmpzIn0sIi9fbnV4dC9ESEN3RUxXcC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjM4N2EtbFhSRXRjbUx1a1pxd083TXZzdmp2TSsrMDJ3IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE3WiIsc2l6ZToxNDQ1OCxwYXRoOiIuLi9wdWJsaWMvX251eHQvREhDd0VMV3AuanMifSwiL19udXh0L0RPQ0ZEVGNZLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTk4ZS1md0xJblg3cHlvdERnVTJBSDNNbTdaS2dOYmMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjY1NDIscGF0aDoiLi4vcHVibGljL19udXh0L0RPQ0ZEVGNZLmpzIn0sIi9fbnV4dC9EUGZaa2wyZS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonImU5OS1na2hpbGJnT3h0SndXWDBNdTlZUWRMa0llZ2MiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjM3MzcscGF0aDoiLi4vcHVibGljL19udXh0L0RQZlprbDJlLmpzIn0sIi9fbnV4dC9EVFRMcjVIci5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEwNzgtbVpoTHIrcTJ1ek05bGRFbVFNVXVJd2JNdmZBIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE3WiIsc2l6ZTo0MjE2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9EVFRMcjVIci5qcyJ9LCIvX251eHQvRFdmV3FNSnEuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI0OGQtb3Z6amkyeUhNSFFWcTE5ZFNtSGxuNXR1N0NnIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZToxMTY1LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9EV2ZXcU1KcS5qcyJ9LCIvX251eHQvRFR2WFQtblIuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJjNTNlLUdxU3gzYWZyaDdDM3pmREF3VnVRaXd0TkFqUSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6NTA0OTQscGF0aDoiLi4vcHVibGljL19udXh0L0RUdlhULW5SLmpzIn0sIi9fbnV4dC9EWVpsZzAtNS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjFjZC1BMVlVd1ZZZmU1ZDNlS09uNVBGSmVHT2lyNDgiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjQ2MSxwYXRoOiIuLi9wdWJsaWMvX251eHQvRFlabGcwLTUuanMifSwiL19udXh0L0RfY3UtcU1SLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciYThkLWlZTXc5RHZ6Ny9wZlFCSXV4dDROMUlSTk9oMCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6MjcwMSxwYXRoOiIuLi9wdWJsaWMvX251eHQvRF9jdS1xTVIuanMifSwiL19udXh0L0RjNDZRd0RKLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMzExLVZFQzRPZ0tYUGxrRTBYUllBTVg4aWZwYUdmMCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6Nzg1LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9EYzQ2UXdESi5qcyJ9LCIvX251eHQvRGwtRHptN3ouanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJmZC1YeDFLSFc0eG1iNVNHeTBRVldxM3UyWFpRQ2ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjI1MyxwYXRoOiIuLi9wdWJsaWMvX251eHQvRGwtRHptN3ouanMifSwiL19udXh0L0RtNzk0cXhJLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNWQtZ3ZROEFvZzZFNjVlRHgyQ0lHVHFEaDRKZ29vIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZTo5MyxwYXRoOiIuLi9wdWJsaWMvX251eHQvRG03OTRxeEkuanMifSwiL19udXh0L0RwQXZ0TjhnLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjFjYy1NUmZHanRPNDJ1TlVkSXRJenk3ZlYxbDFhVWMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjg2NTIscGF0aDoiLi4vcHVibGljL19udXh0L0RwQXZ0TjhnLmpzIn0sIi9fbnV4dC9EdUVBZm5ocS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonImRjZi1lSXJtVDlNeGJlR05yb0ZyN0xYT0ZtaWRlNmsiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjM1MzUscGF0aDoiLi4vcHVibGljL19udXh0L0R1RUFmbmhxLmpzIn0sIi9fbnV4dC9EdFN0ZlZtVC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjJkZTItdGhLK0lMRmxxdG1RVm9RSUhSTVdoWDBzOTdrIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZToxMTc0NixwYXRoOiIuLi9wdWJsaWMvX251eHQvRHRTdGZWbVQuanMifSwiL19udXh0L0R2ZGh5cERpLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciN2U4LTVqa0xXUGJScm9Dc2VFOWd2dkZ0MVFWZTNHMCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6MjAyNCxwYXRoOiIuLi9wdWJsaWMvX251eHQvRHZkaHlwRGkuanMifSwiL19udXh0L0R4Q1dRc25sLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciODQtQmthcTBTbXFvNld1VHJIa21jTmJ4UzY0dXZFIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZToxMzIscGF0aDoiLi4vcHVibGljL19udXh0L0R4Q1dRc25sLmpzIn0sIi9fbnV4dC9ONkswcnF0Yy5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEwYzYtRk1JblBhWWNxL2VpZGlCaXoyb1V0LzFJZ3dZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZTo0Mjk0LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9ONkswcnF0Yy5qcyJ9LCIvX251eHQvWkpWazBvbE4uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIxN2Q1LUxFZkJrRjdDMytwMHNvY0NtNmtpT0Y5UFZjbyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6NjEwMSxwYXRoOiIuLi9wdWJsaWMvX251eHQvWkpWazBvbE4uanMifSwiL19udXh0L1dtRFhIWUtrLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciOTFlNy1sTnBQeFpFVFc3NElPb3dFUFVCaDlxanYwU2ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjM3MzUxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9XbURYSFlLay5qcyJ9LCIvX251eHQvRGJDNHAzUUEuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI3NmY0NC1UMGtEYnZwTGkyNjRwcENNdnNOdnhralJQdUkiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjQ4NzIzNixwYXRoOiIuLi9wdWJsaWMvX251eHQvRGJDNHAzUUEuanMifSwiL19udXh0L1pac2ZQOUtaLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciZDdiLXZWTjVPK2F1Z0Z0Kzl1bGFjSUx6YWJFY05YOCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6MzQ1MSxwYXRoOiIuLi9wdWJsaWMvX251eHQvWlpzZlA5S1ouanMifSwiL19udXh0L18ybFNkcjEzLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTVmMi11VVRZWXR5ZGFhdStTalVOMGdVWUpuQm84UDAiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjU2MTgscGF0aDoiLi4vcHVibGljL19udXh0L18ybFNkcjEzLmpzIn0sIi9fbnV4dC9jZEtfQTZObS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjE4NjctWHNtWnpJTHFHci91L3RDNmZHb2s2VVZVcjNjIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZTo2MjQ3LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9jZEtfQTZObS5qcyJ9LCIvX251eHQvZF8wTndRTFUuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI0MzktaXprMCtiWWJ1cHQ2NUFqVTlVL1pjc2ZTNUNnIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZToxMDgxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9kXzBOd1FMVS5qcyJ9LCIvX251eHQvZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyI6e3R5cGU6InRleHQvY3NzOyBjaGFyc2V0PXV0Zi04IixldGFnOiciOTdlLUR3VUtrOGhTNW9SZlhMOWNhRjJocVRTd1UwcyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6MjQzMCxwYXRoOiIuLi9wdWJsaWMvX251eHQvZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyJ9LCIvX251eHQvZXJyb3ItNTAwLkI1YVQ0UDdaLmNzcyI6e3R5cGU6InRleHQvY3NzOyBjaGFyc2V0PXV0Zi04IixldGFnOiciNzczLWwxQXV6Vy8vWFBLQnN4SHFuN3VkU1I0amVPOCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6MTkwNyxwYXRoOiIuLi9wdWJsaWMvX251eHQvZXJyb3ItNTAwLkI1YVQ0UDdaLmNzcyJ9LCIvX251eHQvZ2hxWWJJU1QuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI5YWItREZOUE0zalpIWjA1OTlvUTh1Q20vbTZrQTcwIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZToyNDc1LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9naHFZYklTVC5qcyJ9LCIvX251eHQvbTIwa2RHeFUuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI4NmMtdmpJTmU4NTVLZHhLam05Sm9QVDA0Y0ppK3hRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZToyMTU2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9tMjBrZEd4VS5qcyJ9LCIvX251eHQvZW50cnkuemRUMzFFWTUuY3NzIjp7dHlwZToidGV4dC9jc3M7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIyYjU0Zi1ZKzEzcVJxS29QaWFhTjdKM2toay9CTTRmMHMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjE3NzQ4NyxwYXRoOiIuLi9wdWJsaWMvX251eHQvZW50cnkuemRUMzFFWTUuY3NzIn0sIi9fbnV4dC9zM3AwYzAzTS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjRiMi0wR2hqV3FUQ3lzTXJjNkNPTG5ySTdpVktLVlUiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjEyMDIscGF0aDoiLi4vcHVibGljL19udXh0L3MzcDBjMDNNLmpzIn0sIi9fbnV4dC9idWlsZHMvbGF0ZXN0Lmpzb24iOnt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIixldGFnOiciNDctS2NFRnJka1NIdERMRjB4TUJlUHE2MVpaKzU4IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDA5WiIsc2l6ZTo3MSxwYXRoOiIuLi9wdWJsaWMvX251eHQvYnVpbGRzL2xhdGVzdC5qc29uIn0sIi9fbnV4dC9vOHRkX0cwSi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjk5MWE5LU9rdXBvWWl0SnhHUUNsaGJVY3YxNSs5S0htbyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQyMFoiLHNpemU6NjI3MTEzLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9vOHRkX0cwSi5qcyJ9LCIvX251eHQvYnVpbGRzL21ldGEvZTIzOTc0YWEtZjg4ZC00YTQyLTk3NTktMWYxYWU3ODg0ZWY4Lmpzb24iOnt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIixldGFnOiciNTgtU0dMQThVVzcxcUhGU3prcGtXQ3NSdFV4QVJVIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDA3WiIsc2l6ZTo4OCxwYXRoOiIuLi9wdWJsaWMvX251eHQvYnVpbGRzL21ldGEvZTIzOTc0YWEtZjg4ZC00YTQyLTk3NTktMWYxYWU3ODg0ZWY4Lmpzb24ifX0sTnY9eyIvX251eHQvYnVpbGRzL21ldGEvIjp7bWF4QWdlOjMxNTM2ZTN9LCIvX251eHQvYnVpbGRzLyI6e21heEFnZToxfSwiL19mb250cy8iOnttYXhBZ2U6MzE1MzZlM30sIi9fc2NyaXB0cy8iOnttYXhBZ2U6MzE1MzZlM30sIi9fbnV4dC8iOnttYXhBZ2U6MzE1MzZlM319O2NvbnN0IER2PSgoKT0+e2NvbnN0IEM9ZnVuY3Rpb24oKXt9O3JldHVybiBDLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpLEN9KSgpO2Z1bmN0aW9uIHBhcnNlKGUscyl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHN0ciBtdXN0IGJlIGEgc3RyaW5nIik7Y29uc3QgZD1uZXcgRHYsbT1zfHx7fSxoPW0uZGVjb2RlfHxkZWNvZGU7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtjb25zdCBzPWUuaW5kZXhPZigiPSIsZyk7aWYoLTE9PT1zKWJyZWFrO2xldCB4PWUuaW5kZXhPZigiOyIsZyk7aWYoLTE9PT14KXg9ZS5sZW5ndGg7ZWxzZSBpZih4PHMpe2c9ZS5sYXN0SW5kZXhPZigiOyIscy0xKSsxO2NvbnRpbnVlfWNvbnN0ICQ9ZS5zbGljZShnLHMpLnRyaW0oKTtpZighbT8uZmlsdGVyfHxtPy5maWx0ZXIoJCkpe2lmKHZvaWQgMD09PWRbJF0pe2xldCBtPWUuc2xpY2UocysxLHgpLnRyaW0oKTszND09PW0uY29kZVBvaW50QXQoMCkmJihtPW0uc2xpY2UoMSwtMSkpLGRbJF09dHJ5RGVjb2RlKG0saCl9Zz14KzF9ZWxzZSBnPXgrMX1yZXR1cm4gZH1mdW5jdGlvbiBkZWNvZGUoZSl7cmV0dXJuIGUuaW5jbHVkZXMoIiUiKT9kZWNvZGVVUklDb21wb25lbnQoZSk6ZX1mdW5jdGlvbiB0cnlEZWNvZGUoZSxzKXt0cnl7cmV0dXJuIHMoZSl9Y2F0Y2h7cmV0dXJuIGV9fWNvbnN0IFV2PWZ1bmN0aW9uKHMpe2NvbnN0IGQ9dXNlTml0cm9BcHAoKTtyZXR1cm57YXN5bmMgZmV0Y2gobSxoLGcpe2NvbnN0IHg9e30sJD1uZXcgVVJMKG0udXJsKTtpZihzLmZldGNoKXtjb25zdCBlPWF3YWl0IHMuZmV0Y2gobSxoLGcsJCx4KTtpZihlKXJldHVybiBlfXJldHVybiBhc3luYyBmdW5jdGlvbihzLGQsbSxoPW5ldyBVUkwocy51cmwpLGc9dXNlTml0cm9BcHAoKSx4KXtsZXQgJDsoZnVuY3Rpb24oZSl7cmV0dXJuIFhpLnRlc3QoZS5tZXRob2QpfSkocykmJigkPWUuZnJvbShhd2FpdCBzLmFycmF5QnVmZmVyKCkpKTtyZXR1cm4gZ2xvYmFsVGhpcy5fX2Vudl9fPWQsZy5sb2NhbEZldGNoKGgucGF0aG5hbWUraC5zZWFyY2gse2NvbnRleHQ6e3dhaXRVbnRpbDplPT5tLndhaXRVbnRpbChlKSxfcGxhdGZvcm06e2NmOnMuY2YsY2xvdWRmbGFyZTp7cmVxdWVzdDpzLGVudjpkLGNvbnRleHQ6bSx1cmw6aCwuLi54fX19LGhvc3Q6aC5ob3N0bmFtZSxwcm90b2NvbDpoLnByb3RvY29sLG1ldGhvZDpzLm1ldGhvZCxoZWFkZXJzOnMuaGVhZGVycyxib2R5OiR9KX0obSxoLGcsJCxkLHgpfSxzY2hlZHVsZWQoZSxzLG0pe2dsb2JhbFRoaXMuX19lbnZfXz1zLG0ud2FpdFVudGlsKGQuaG9va3MuY2FsbEhvb2soImNsb3VkZmxhcmU6c2NoZWR1bGVkIix7Y29udHJvbGxlcjplLGVudjpzLGNvbnRleHQ6bX0pKSxtLndhaXRVbnRpbChydW5Dcm9uVGFza3MoZS5jcm9uLHtjb250ZXh0OntjbG91ZGZsYXJlOntlbnY6cyxjb250ZXh0Om19fSxwYXlsb2FkOnt9fSkpfSxlbWFpbChlLHMsbSl7Z2xvYmFsVGhpcy5fX2Vudl9fPXMsbS53YWl0VW50aWwoZC5ob29rcy5jYWxsSG9vaygiY2xvdWRmbGFyZTplbWFpbCIse21lc3NhZ2U6ZSxldmVudDplLGVudjpzLGNvbnRleHQ6bX0pKX0scXVldWUoZSxzLG0pe2dsb2JhbFRoaXMuX19lbnZfXz1zLG0ud2FpdFVudGlsKGQuaG9va3MuY2FsbEhvb2soImNsb3VkZmxhcmU6cXVldWUiLHtiYXRjaDplLGV2ZW50OmUsZW52OnMsY29udGV4dDptfSkpfSx0YWlsKGUscyxtKXtnbG9iYWxUaGlzLl9fZW52X189cyxtLndhaXRVbnRpbChkLmhvb2tzLmNhbGxIb29rKCJjbG91ZGZsYXJlOnRhaWwiLHt0cmFjZXM6ZSxlbnY6cyxjb250ZXh0Om19KSl9LHRyYWNlKGUscyxtKXtnbG9iYWxUaGlzLl9fZW52X189cyxtLndhaXRVbnRpbChkLmhvb2tzLmNhbGxIb29rKCJjbG91ZGZsYXJlOnRyYWNlIix7dHJhY2VzOmUsZW52OnMsY29udGV4dDptfSkpfX19KHtmZXRjaChlLHMsZCxtKXtpZihzLkFTU0VUUyYmZnVuY3Rpb24oZT0iIil7aWYoUHZbZV0pcmV0dXJuITA7Zm9yKGNvbnN0IHMgaW4gTnYpaWYoZS5zdGFydHNXaXRoKHMpKXJldHVybiEwO3JldHVybiExfShtLnBhdGhuYW1lKSlyZXR1cm4gcy5BU1NFVFMuZmV0Y2goZSl9fSk7ZXhwb3J0e2dldEJhc2VVcmwgYXMgJCxpbnRlZ2VyIGFzIEEsdGV4dCBhcyBCLHNnIGFzIEMsdW5pcXVlSW5kZXggYXMgRCxnZXRSZWZlcnJhbFN0YXRzIGFzIEUsYW5kIGFzIEYsbnVtYmVyJDEgYXMgRyxkZWZpbmVFdmVudEhhbmRsZXIgYXMgSCxnZXRDb29raWUgYXMgSSxFbiBhcyBKLEh1IGFzIEssc2ltcGxpZnlOYW5vSWQgYXMgTCxlc2NhcGVMaWtlIGFzIE0sb3IgYXMgTixzcWwgYXMgTyxuZSBhcyBQLHVzZVJlc2VuZCBhcyBRLHNldENvb2tpZSBhcyBSLHJkIGFzIFMsbnVtYmVyIGFzIFQscHJlcHJvY2VzcyBhcyBVLFNkIGFzIFYsemQgYXMgVyxsdCBhcyBYLHdpdGhRdWVyeSBhcyBZLGpvaW5VUkwgYXMgWixfZW51bSBhcyBfLGFycmF5IGFzIGEsbGlrZSBhcyBhMCxkYXRldGltZSBhcyBhMSxwcmltYXJ5S2V5IGFzIGEyLGdldFF1ZXJ5IGFzIGEzLGNvdW50IGFzIGE0LGdldEJhbGFuY2UgYXMgYTUsbmQgYXMgYTYsdW5pb24kMSBhcyBhNyxzYWZlRXF1YWwgYXMgYTgsdGQgYXMgYTksZGVmaW5lU2NoZWR1bGVkVGFzayBhcyBhQSxkZWZpbmVUYXNrIGFzIGFCLGhhc1Byb3RvY29sIGFzIGFDLGlzU2NyaXB0UHJvdG9jb2wgYXMgYUQsd24gYXMgYUUsa2xvbmEgYXMgYUYsZ2V0UmVxdWVzdEhlYWRlcnMgYXMgYUcsc2FuaXRpemVTdGF0dXNDb2RlIGFzIGFILHBhcnNlVVJMIGFzIGFJLGVuY29kZVBhdGggYXMgYUosZGVjb2RlUGF0aCBhcyBhSyxwYXJzZVF1ZXJ5IGFzIGFMLCRuIGFzIGFNLGdldENvbnRleHQgYXMgYU4sd2l0aFRyYWlsaW5nU2xhc2ggYXMgYU8sd2l0aG91dFRyYWlsaW5nU2xhc2ggYXMgYVAsaWkgYXMgYVEsYmFzZVVSTCBhcyBhUixoYXNoJDIgYXMgYVMsZXhlY3V0ZUFzeW5jIGFzIGFULGVuY29kZVF1ZXJ5SXRlbSBhcyBhVSxwYXJzZSBhcyBhVixnZXRSZXF1ZXN0SGVhZGVyIGFzIGFXLGlzRXF1YWwgYXMgYVgsdXBwZXJGaXJzdCBhcyBhWSxnZXRSZXF1ZXN0VVJMIGFzIGFaLFV2IGFzIGFfLHVzZU5pdHJvQXBwIGFzIGFhLGRlbGV0ZUNvb2tpZSBhcyBhYixUIGFzIGFjLEZ1IGFzIGFkLEx1IGFzIGFlLGVtYWlsIGFzIGFmLHNlbmRSZWRpcmVjdCBhcyBhZyxxdSBhcyBhaCx1dWlkIGFzIGFpLHBpY2sgYXMgYWosbnUgYXMgYWssZ2V0VmFsaWRhdGVkUm91dGVyUGFyYW1zIGFzIGFsLE11IGFzIGFtLHJlYWRNdWx0aXBhcnRGb3JtRGF0YSBhcyBhbixzbmlmZkltYWdlIGFzIGFvLGN1IGFzIGFwLFpuIGFzIGFxLHdpdGhMZWFkaW5nU2xhc2ggYXMgYXIsYnVpbGRBc3NldHNVUkwgYXMgYXMsZ2V0UmVzcG9uc2VTdGF0dXNUZXh0IGFzIGF0LGdldFJlc3BvbnNlU3RhdHVzIGFzIGF1LGRlZmluZVJlbmRlckhhbmRsZXIgYXMgYXYscHVibGljQXNzZXRzVVJMIGFzIGF3LGRlc3RyIGFzIGF4LGdldFJvdXRlUnVsZXMgYXMgYXksSG4gYXMgYXosYm9vbGVhbiQxIGFzIGIsY3JlYXRlRXJyb3IkMSBhcyBjLEVkIGFzIGQsQnUgYXMgZSxhc2MgYXMgZixRdSBhcyBnLGVxIGFzIGgsWnUgYXMgaSxpbkFycmF5IGFzIGosT2QgYXMgayxWdSBhcyBsLGdldFJvdXRlclBhcmFtIGFzIG0sZ2V0VmFsaWRhdGVkUXVlcnkgYXMgbixvYmplY3QgYXMgbyxkZXNjIGFzIHAsbGcgYXMgcSxyZWFkVmFsaWRhdGVkQm9keSBhcyByLHN0cmluZyQxIGFzIHMsZGVjcnlwdFNlY3JldCBhcyB0LEF1IGFzIHUsdXNlUnVudGltZUNvbmZpZyBhcyB2LGVuY3J5cHRTZWNyZXQgYXMgdyxnZXRDYWNoZWRPckZldGNoIGFzIHgsc3FsaXRlVGFibGUgYXMgeSxpbmRleCBhcyB6fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bml0cm8ubWpzLm1hcAo=", "chunks/routes/api/auth/agent.get.mjs": "aW1wb3J0e0ggYXMgbyxjIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBzPW8oYXN5bmMgbz0+e3Rocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KX0pO2V4cG9ydHtzIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hZ2VudC5nZXQubWpzLm1hcAo=", "chunks/routes/api/auth/demo-login.post.mjs": "aW1wb3J0e0ggYXMgYSxhYyBhcyBlLGMgYXMgaSxyIGFzIHMsZCBhcyB0LGggYXMgcix1IGFzIG4sYWQgYXMgbyxhZSBhcyBtLGFhIGFzIGQsaSBhcyB1LG8gYXMgXyxfIGFzIGx9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtlIGFzIHAsYSBhcyBjfWZyb20iLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7UyBhcyB3LEQgYXMgZixhIGFzIGcsYiBhcyB2fWZyb20iLi4vLi4vLi4vXy9zZWVkLm1qcyI7aW1wb3J0e3AgYXMgeX1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydHtzIGFzIGgsZiBhcyBqfWZyb20iLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL25vdGlmaWNhdGlvbi5tanMiO2NvbnN0IGI9e2FkbWluOntlbWFpbDoiYWRtaW5AZGVtby5sb2NhbCIsdXNlcm5hbWU6ImRlbW9fYWRtaW4iLG5hbWU6IkFkbWluIEFnZW50In0sdXNlcjp7ZW1haWw6InVzZXJAZGVtby5sb2NhbCIsdXNlcm5hbWU6ImRlbW9fdXNlciIsbmFtZToiVXNlciBBZ2VudCJ9fSxrPV8oe2FnZW50OmwoWyJhZG1pbiIsInVzZXIiXSl9KSxEPWEoYXN5bmMgYT0+e2lmKCJ0cnVlIiE9PWUuZW52Lk5VWFRfREVNT19NT0RFKXRocm93IGkoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KTtjb25zdHthZ2VudDpffT1hd2FpdCBzKGEsay5wYXJzZSksbD1iW19dLEQ9bmV3IERhdGU7bGV0IEk9YXdhaXQgdC5xdWVyeS51c2VyVGFibGUuZmluZEZpcnN0KHt3aGVyZTpyKG4ucHJpbWFyeV9lbWFpbCxsLmVtYWlsKX0pO2lmKEkpe2NvbnN0W2FdPWF3YWl0IHQudXBkYXRlKG4pLnNldCh7dXNlcm5hbWU6bC51c2VybmFtZSxuYW1lOmwubmFtZSx2ZXJpZmllZDohMCxsYXN0X3NpZ25faW5fYXQ6RH0pLndoZXJlKHIobi5pZCxJLmlkKSkucmV0dXJuaW5nKCk7ST1hfWVsc2V7Y29uc3RbZV09YXdhaXQgdC5pbnNlcnQobikudmFsdWVzKHtwcmltYXJ5X2VtYWlsOmwuZW1haWwsdXNlcm5hbWU6bC51c2VybmFtZSxuYW1lOmwubmFtZSx2ZXJpZmllZDohMCxsYXN0X3NpZ25faW5fYXQ6RH0pLnJldHVybmluZygpO0k9ZSxhd2FpdCB0Lmluc2VydChvKS52YWx1ZXMoe3VzZXJfaWQ6SS5pZCxhY3Rpb246bS5TSUdOX1VQfSksYXdhaXQgZCgpLmhvb2tzLmNhbGxIb29rKCJhdXRoOnVzZXItY3JlYXRlZCIse3VzZXI6SSxwcm92aWRlcjoiZGVtbyIsZXZlbnQ6YX0pfWNvbnN0IE49YXdhaXQgcChmLnNsdWcsZi5uYW1lKTtpZihhd2FpdCBjKEkuaWQsTi5pZCwiYWRtaW4iPT09Xz92LmFkbWluOnYubWVtYmVyKSwiYWRtaW4iPT09Xyl7Y29uc3QgYT1hd2FpdCBwKGcuc2x1ZyxnLm5hbWUse2lzX3N5c3RlbTohMH0pO2F3YWl0IHQuaW5zZXJ0KHUpLnZhbHVlcyh7dXNlcl9pZDpJLmlkLG9yZ2FuaXphdGlvbl9pZDphLmlkLGFiaWxpdGllczpbLi4udy5hZG1pbl19KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbdS51c2VyX2lkLHUub3JnYW5pemF0aW9uX2lkXSxzZXQ6e2FiaWxpdGllczpbLi4udy5hZG1pbl19fSl9YXdhaXQgaChJLmlkLE4uaWQpLCJ1c2VyIj09PV8mJmF3YWl0IGooSS5pZCxOLmlkKTtjb25zdHtzZXNzaW9uSWQ6en09YXdhaXQgeShhLEkse3Byb3ZpZGVyOiJkZW1vIixhY3RpdmVPcmdhbml6YXRpb25JZDpOLmlkfSk7cmV0dXJuIGF3YWl0IHQuaW5zZXJ0KG8pLnZhbHVlcyh7dXNlcl9pZDpJLmlkLGFjdGlvbjptLlNJR05fSU59KSx7YWdlbnQ6Xyx1c2VyX2lkOkkuaWQscHJpbWFyeV9lbWFpbDpJLnByaW1hcnlfZW1haWwsc2Vzc2lvbl9pZDp6fX0pO2V4cG9ydHtEIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZW1vLWxvZ2luLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/auth/dev-cleanup.post.mjs": "aW1wb3J0e0ggYXMgcyxjIGFzIG8sbyBhcyB0LGEgYXMgZSxzIGFzIGEsYWYgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO3Qoe2VtYWlsczplKHIoKSkuZGVmYXVsdChbXSksc2Vzc2lvbl9pZHM6ZShhKCkubWluKDEpKS5kZWZhdWx0KFtdKX0pO2NvbnN0IGk9cyhhc3luYyBzPT57dGhyb3cgbyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90IEZvdW5kIn0pfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRldi1jbGVhbnVwLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/auth/dev-login.post.mjs": "aW1wb3J0e0ggYXMgcyxhYyBhcyBhLGMgYXMgZSxyIGFzIHQsZCBhcyBvLGggYXMgaSx1IGFzIHIsYWQgYXMgbixhZSBhcyBkLG8gYXMgbSxhZiBhcyB1fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7cH1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBfPW0oe2VtYWlsOnUoKX0pLGY9cyhhc3luYyBzPT57aWYoInRydWUiIT09YS5lbnYuTlVYVF9ERU1PX01PREUpdGhyb3cgZSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90IEZvdW5kIn0pO2NvbnN0e2VtYWlsOm19PWF3YWl0IHQocyxfLnBhcnNlKSx1PWF3YWl0IG8ucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShyLnByaW1hcnlfZW1haWwsbSl9KTtpZighdSl0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJVc2VyIG5vdCBmb3VuZCJ9KTtjb25zdHtzZXNzaW9uSWQ6Zn09YXdhaXQgcChzLHUse3Byb3ZpZGVyOiJkZXYtbG9naW4ifSk7cmV0dXJuIGF3YWl0IG8udXBkYXRlKHIpLnNldCh7bGFzdF9zaWduX2luX2F0Om5ldyBEYXRlfSkud2hlcmUoaShyLmlkLHUuaWQpKSxhd2FpdCBvLmluc2VydChuKS52YWx1ZXMoe3VzZXJfaWQ6dS5pZCxhY3Rpb246ZC5TSUdOX0lOfSkse3Nlc3Npb25faWQ6Zix1c2VyX2lkOnUuaWR9fSk7ZXhwb3J0e2YgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRldi1sb2dpbi5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/auth/dev-provision.post.mjs": "aW1wb3J0e0ggYXMgbyxjIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBzPW8oYXN5bmMgbz0+e3Rocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KX0pO2V4cG9ydHtzIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZXYtcHJvdmlzaW9uLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/auth/dev-seed.post.mjs": "aW1wb3J0e0ggYXMgbyxhYyBhcyBzLGMgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e3MgYXMgdH1mcm9tIi4uLy4uLy4uL18vc2VlZC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBlPW8oYXN5bmMgbz0+e2lmKCJ0cnVlIiE9PXMuZW52Lk5VWFRfREVNT19NT0RFKXRocm93IHIoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KTtyZXR1cm57dXNlcnM6YXdhaXQgdCgpfX0pO2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZXYtc2VlZC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/auth/github/callback.get.mjs": "aW1wb3J0e0ggYXMgYSxhMyBhcyBlLEkgYXMgdCxjIGFzIGksYWIgYXMgcyxkIGFzIHIsaCBhcyBvLHUgYXMgbixhZCBhcyBkLGFlIGFzIHUsYWEgYXMgYyxGIGFzIGgsYWggYXMgbCxhZyBhcyBfLHYgYXMgbX1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2MgYXMgcH1mcm9tIi4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3AgYXMgdn1mcm9tIi4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBnPWEoYXN5bmMgYT0+e3ZhciBnO2NvbnN0IHc9bSgpLGY9ZShhKSxiPWYuY29kZSxrPWYuc3RhdGUseT10KGEsImdpdGh1Yl9vYXV0aF9zdGF0ZSIpO2lmKCFifHwha3x8ayE9PXkpdGhyb3cgaSh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiSW52YWxpZCBzdGF0ZSBvciBjb2RlIn0pO3MoYSwiZ2l0aHViX29hdXRoX3N0YXRlIik7Y29uc3QgST1hd2FpdCAkZmV0Y2goImh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aC9hY2Nlc3NfdG9rZW4iLHttZXRob2Q6IlBPU1QiLGJvZHk6e2NsaWVudF9pZDp3LmdpdGh1YkNsaWVudElkLGNsaWVudF9zZWNyZXQ6dy5naXRodWJDbGllbnRTZWNyZXQsY29kZTpifSxoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pO2lmKCFJLmFjY2Vzc190b2tlbil0aHJvdyBpKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJGYWlsZWQgdG8gcmV0cmlldmUgYWNjZXNzIHRva2VuIn0pO2NvbnN0IEM9YXdhaXQgJGZldGNoKCJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXIiLHtoZWFkZXJzOntBdXRob3JpemF0aW9uOmBCZWFyZXIgJHtJLmFjY2Vzc190b2tlbn1gfX0pLFM9KG51bGw9PShnPShhd2FpdCAkZmV0Y2goImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlci9lbWFpbHMiLHtoZWFkZXJzOntBdXRob3JpemF0aW9uOmBCZWFyZXIgJHtJLmFjY2Vzc190b2tlbn1gfX0pKS5maW5kKGE9PmEucHJpbWFyeSYmYS52ZXJpZmllZCkpP3ZvaWQgMDpnLmVtYWlsKXx8Qy5lbWFpbDtpZighUyl0aHJvdyBpKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyB2ZXJpZmllZCBlbWFpbCBmb3VuZCJ9KTtjb25zdCAkPW5ldyBEYXRlO2xldCBqPWF3YWl0IHIucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6byhuLnByaW1hcnlfZW1haWwsUyl9KTtpZihqKXtjb25zdFthXT1hd2FpdCByLnVwZGF0ZShuKS5zZXQoe25hbWU6Qy5uYW1lfHxDLmxvZ2lufHxqLm5hbWUsYXZhdGFyOkMuYXZhdGFyX3VybHx8ai5hdmF0YXIsbGFzdF9zaWduX2luX2F0OiQsdXBkYXRlZF9hdDokfSkud2hlcmUobyhuLmlkLGouaWQpKS5yZXR1cm5pbmcoKTtqPWF9ZWxzZXtjb25zdFtlXT1hd2FpdCByLmluc2VydChuKS52YWx1ZXMoe3ByaW1hcnlfZW1haWw6UyxuYW1lOkMubmFtZXx8Qy5sb2dpbixhdmF0YXI6Qy5hdmF0YXJfdXJsLHVzZXJuYW1lOkMubG9naW4sbGFzdF9zaWduX2luX2F0OiR9KS5yZXR1cm5pbmcoKTtqPWUsYXdhaXQgci5pbnNlcnQoZCkudmFsdWVzKHt1c2VyX2lkOmouaWQsYWN0aW9uOnUuU0lHTl9VUH0pLGF3YWl0IHAoaiksYXdhaXQgYygpLmhvb2tzLmNhbGxIb29rKCJhdXRoOnVzZXItY3JlYXRlZCIse3VzZXI6aixwcm92aWRlcjoiZ2l0aHViIixldmVudDphfSl9Y29uc3QgRj1TdHJpbmcoQy5pZCksTj1hd2FpdCByLnF1ZXJ5LmlkZW50aXR5VGFibGUuZmluZEZpcnN0KHt3aGVyZTpoKG8obC5wcm92aWRlciwiZ2l0aHViIiksbyhsLnByb3ZpZGVyX3VzZXJfaWQsRikpfSk7cmV0dXJuIE4/YXdhaXQgci51cGRhdGUobCkuc2V0KHtwcm92aWRlcl9kYXRhOkMsdXBkYXRlZF9hdDokfSkud2hlcmUobyhsLmlkLE4uaWQpKTphd2FpdCByLmluc2VydChsKS52YWx1ZXMoe3VzZXJfaWQ6ai5pZCxwcm92aWRlcjoiZ2l0aHViIixwcm92aWRlcl91c2VyX2lkOkYscHJvdmlkZXJfZGF0YTpDfSksYXdhaXQgdihhLGose3Byb3ZpZGVyOiJnaXRodWIifSksYXdhaXQgci5pbnNlcnQoZCkudmFsdWVzKHt1c2VyX2lkOmouaWQsYWN0aW9uOnUuU0lHTl9JTn0pLF8oYSwiL2Rhc2hib2FyZCIpfSk7ZXhwb3J0e2cgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbGxiYWNrLmdldC5tanMubWFwCg==", "chunks/routes/api/auth/github.get.mjs": "aW1wb3J0e0ggYXMgdCxMIGFzIGUsUiBhcyBhLGFnIGFzIG8sWSBhcyBzLCQgYXMgaSx2IGFzIHJ9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBuPXQoYXN5bmMgdD0+e2NvbnN0IG49cigpLHU9ZSgpO3JldHVybiBhKHQsImdpdGh1Yl9vYXV0aF9zdGF0ZSIsdSx7aHR0cE9ubHk6ITAsc2VjdXJlOiEwLHNhbWVTaXRlOiJsYXgiLG1heEFnZTo2MDAscGF0aDoiL2FwaS9hdXRoIn0pLG8odCxzKCJodHRwczovL2dpdGh1Yi5jb20vbG9naW4vb2F1dGgvYXV0aG9yaXplIix7Y2xpZW50X2lkOm4uZ2l0aHViQ2xpZW50SWQscmVkaXJlY3RfdXJpOmAke2kodCl9L2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFja2Asc2NvcGU6InVzZXI6ZW1haWwiLHN0YXRlOnV9KSl9KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2l0aHViLmdldC5tanMubWFwCg==", "chunks/routes/api/auth/google/callback.get.mjs": "aW1wb3J0e0ggYXMgZSxhMyBhcyBhLEkgYXMgdCxjIGFzIG8sYWIgYXMgcywkIGFzIGksZCBhcyByLGggYXMgbix1IGFzIGQsYWQgYXMgdSxhZSBhcyBsLGFhIGFzIHAsRiBhcyBjLGFoIGFzIGcsYWcgYXMgXyx2IGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtjIGFzIGh9ZnJvbSIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtwIGFzIHd9ZnJvbSIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3Qgdj1lKGFzeW5jIGU9Pntjb25zdCB2PW0oKSxmPWEoZSksaz1mLmNvZGUseT1mLnN0YXRlLGI9dChlLCJnb29nbGVfb2F1dGhfc3RhdGUiKTtpZigha3x8IXl8fHkhPT1iKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkludmFsaWQgc3RhdGUgb3IgY29kZSJ9KTtzKGUsImdvb2dsZV9vYXV0aF9zdGF0ZSIpO2NvbnN0IEk9YXdhaXQgJGZldGNoKCJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIse21ldGhvZDoiUE9TVCIsYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKHtjb2RlOmssY2xpZW50X2lkOnYuZ29vZ2xlQ2xpZW50SWQsY2xpZW50X3NlY3JldDp2Lmdvb2dsZUNsaWVudFNlY3JldCxyZWRpcmVjdF91cmk6YCR7aShlKX0vYXBpL2F1dGgvZ29vZ2xlL2NhbGxiYWNrYCxncmFudF90eXBlOiJhdXRob3JpemF0aW9uX2NvZGUifSkudG9TdHJpbmcoKSxoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19KTtpZighSS5pZF90b2tlbil0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJNaXNzaW5nIGlkX3Rva2VuIGluIHRva2VuIHJlc3BvbnNlIn0pO2NvbnN0IEM9YXdhaXQgJGZldGNoKCJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbmluZm8iLHtxdWVyeTp7aWRfdG9rZW46SS5pZF90b2tlbn19KTtpZihDLmF1ZCE9PXYuZ29vZ2xlQ2xpZW50SWQpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiSW52YWxpZCB0b2tlbiBhdWRpZW5jZSJ9KTtpZighQy5lbWFpbHx8IUMuc3ViKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkludmFsaWQgdG9rZW4gcGF5bG9hZCJ9KTtjb25zdCBTPW5ldyBEYXRlO2xldCBNPWF3YWl0IHIucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6bihkLnByaW1hcnlfZW1haWwsQy5lbWFpbCl9KTtpZihNKXtjb25zdFtlXT1hd2FpdCByLnVwZGF0ZShkKS5zZXQoe25hbWU6Qy5uYW1lfHxNLm5hbWUsYXZhdGFyOkMucGljdHVyZXx8TS5hdmF0YXIsbGFzdF9zaWduX2luX2F0OlMsdXBkYXRlZF9hdDpTfSkud2hlcmUobihkLmlkLE0uaWQpKS5yZXR1cm5pbmcoKTtNPWV9ZWxzZXtjb25zdFthXT1hd2FpdCByLmluc2VydChkKS52YWx1ZXMoe3ByaW1hcnlfZW1haWw6Qy5lbWFpbCxuYW1lOkMubmFtZSxhdmF0YXI6Qy5waWN0dXJlLHVzZXJuYW1lOkMuZW1haWwuc3BsaXQoIkAiKVswXSxsYXN0X3NpZ25faW5fYXQ6U30pLnJldHVybmluZygpO009YSxhd2FpdCByLmluc2VydCh1KS52YWx1ZXMoe3VzZXJfaWQ6TS5pZCxhY3Rpb246bC5TSUdOX1VQfSksYXdhaXQgaChNKSxhd2FpdCBwKCkuaG9va3MuY2FsbEhvb2soImF1dGg6dXNlci1jcmVhdGVkIix7dXNlcjpNLHByb3ZpZGVyOiJnb29nbGUiLGV2ZW50OmV9KX1jb25zdCBUPUMuc3ViLCQ9YXdhaXQgci5xdWVyeS5pZGVudGl0eVRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6YyhuKGcucHJvdmlkZXIsImdvb2dsZSIpLG4oZy5wcm92aWRlcl91c2VyX2lkLFQpKX0pO3JldHVybiAkP2F3YWl0IHIudXBkYXRlKGcpLnNldCh7cHJvdmlkZXJfZGF0YTpDLHVwZGF0ZWRfYXQ6U30pLndoZXJlKG4oZy5pZCwkLmlkKSk6YXdhaXQgci5pbnNlcnQoZykudmFsdWVzKHt1c2VyX2lkOk0uaWQscHJvdmlkZXI6Imdvb2dsZSIscHJvdmlkZXJfdXNlcl9pZDpULHByb3ZpZGVyX2RhdGE6Q30pLGF3YWl0IHcoZSxNLHtwcm92aWRlcjoiZ29vZ2xlIn0pLGF3YWl0IHIuaW5zZXJ0KHUpLnZhbHVlcyh7dXNlcl9pZDpNLmlkLGFjdGlvbjpsLlNJR05fSU59KSxfKGUsIi9kYXNoYm9hcmQiKX0pO2V4cG9ydHt2IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jYWxsYmFjay5nZXQubWpzLm1hcAo=", "chunks/routes/api/auth/google.get.mjs": "aW1wb3J0e0ggYXMgbyxMIGFzIGUsUiBhcyB0LGFnIGFzIGEsWSBhcyBzLCQgYXMgcix2IGFzIGl9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBuPW8oYXN5bmMgbz0+e2NvbnN0IG49aSgpLHA9ZSgpO3JldHVybiB0KG8sImdvb2dsZV9vYXV0aF9zdGF0ZSIscCx7aHR0cE9ubHk6ITAsc2VjdXJlOiEwLHNhbWVTaXRlOiJsYXgiLG1heEFnZTo2MDAscGF0aDoiL2FwaS9hdXRoIn0pLGEobyxzKCJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvdjIvYXV0aCIse2NsaWVudF9pZDpuLmdvb2dsZUNsaWVudElkLHJlZGlyZWN0X3VyaTpgJHtyKG8pfS9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2tgLHJlc3BvbnNlX3R5cGU6ImNvZGUiLHNjb3BlOiJlbWFpbCBwcm9maWxlIG9wZW5pZCIsc3RhdGU6cCxhY2Nlc3NfdHlwZToib2ZmbGluZSIscHJvbXB0OiJjb25zZW50In0pKX0pO2V4cG9ydHtuIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1nb29nbGUuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/auth/impersonate/start.post.mjs": "aW1wb3J0e28gYXMgcyxhaSBhcyB0LGMgYXMgYSxyIGFzIGUsSSBhcyBvLEogYXMgaSxkIGFzIHIsdSBhcyBuLGggYXMgZCxrIGFzIG0sYWQgYXMgcCxhZSBhcyB1fWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBmfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2kgYXMgXyxiIGFzIGMsSSBhcyB3fWZyb20iLi4vLi4vLi4vLi4vXy9pbXBlcnNvbmF0ZS5tanMiO2ltcG9ydHtiIGFzIGcsdyBhcyBofWZyb20iLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBsPXMoe3VzZXJfaWQ6dCgpfSksQz1mKFt3XSxhc3luYyhzLHtzZXNzaW9uOnR9KT0+e2lmKHQuaW1wZXJzb25hdG9yKXRocm93IGEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkFscmVhZHkgaW1wZXJzb25hdGluZy4gU3RvcCB0aGUgY3VycmVudCBpbXBlcnNvbmF0aW9uIGZpcnN0LiJ9KTtjb25zdHt1c2VyX2lkOmZ9PWF3YWl0IGUocyxsLnBhcnNlKTtpZihmPT09dC5pZCl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJDYW5ub3QgaW1wZXJzb25hdGUgeW91cnNlbGYuIn0pO2NvbnN0IHc9byhzLCJzZXNzaW9uaWQiKXx8aShzLCJ4LXNlc3Npb24taWQiKTtpZighdyl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7Y29uc3RbQ109YXdhaXQgci5zZWxlY3QoKS5mcm9tKG4pLndoZXJlKGQobi5pZCxmKSkubGltaXQoMSk7aWYoIUMpdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiVGFyZ2V0IHVzZXIgbm90IGZvdW5kLiJ9KTtpZihDLmlzX3N1c3BlbmRlZCl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJDYW5ub3QgaW1wZXJzb25hdGUgYSBzdXNwZW5kZWQgdXNlci4ifSk7Y29uc3Qgaj1fKHQpLE09YXdhaXQgZyhDLHtwcm92aWRlcjoiaW1wZXJzb25hdGlvbiIsaW1wZXJzb25hdG9yOmp9KTtyZXR1cm4gYXdhaXQgbS5zZXQoYyh3KSx0KSxhd2FpdCBoKHcsTSksYXdhaXQgci5pbnNlcnQocCkudmFsdWVzKHt1c2VyX2lkOnQuaWQsYWN0aW9uOnUuSU1QRVJTT05BVEVfU1RBUlQsYWN0aW9uX3JlZl9pZDpDLmlkLG1ldGFkYXRhOnt0YXJnZXRfaWQ6Qy5pZCx0YXJnZXRfZW1haWw6Qy5wcmltYXJ5X2VtYWlsLG9yZ2FuaXphdGlvbl9pZDpNLmFjdGl2ZU9yZ2FuaXphdGlvbklkfX0pLE19KTtleHBvcnR7QyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhcnQucG9zdC5tanMubWFwCg==", "chunks/routes/api/auth/impersonate/stop.post.mjs": "aW1wb3J0e2MgYXMgYSxJIGFzIHMsSiBhcyBpLGsgYXMgdCxkIGFzIG8saCBhcyBlLHUgYXMgcixhZCBhcyBuLGFlIGFzIGR9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7YiBhcyB1fWZyb20iLi4vLi4vLi4vLi4vXy9pbXBlcnNvbmF0ZS5tanMiO2ltcG9ydHtpIGFzIHB9ZnJvbSIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtiIGFzIGcsdyBhcyBjfWZyb20iLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IGY9bShhc3luYyhtLGYpPT57aWYoIWYuaW1wZXJzb25hdG9yKXRocm93IGEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vdCBjdXJyZW50bHkgaW1wZXJzb25hdGluZy4ifSk7Y29uc3QgbD1zKG0sInNlc3Npb25pZCIpfHxpKG0sIngtc2Vzc2lvbi1pZCIpO2lmKCFsKXRocm93IGEoe3N0YXR1c0NvZGU6NDAxLHN0YXR1c01lc3NhZ2U6IlVuYXV0aG9yaXplZCJ9KTtjb25zdCB3PWF3YWl0IHQuZ2V0KHUobCkpO2lmKCF3KXRocm93IGEoe3N0YXR1c0NvZGU6NTAwLHN0YXR1c01lc3NhZ2U6Ik9yaWdpbmFsIHNlc3Npb24gYmFja3VwIG1pc3NpbmcuIFBsZWFzZSBsb2cgaW4gYWdhaW4uIn0pO2NvbnN0IF89YXdhaXQgby5xdWVyeS51c2VyVGFibGUuZmluZEZpcnN0KHt3aGVyZTplKHIuaWQsdy5pZCl9KTtpZighXyl0aHJvdyBhKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOiJPcmlnaW5hbCB1c2VyIG5vIGxvbmdlciBleGlzdHMuIn0pO2NvbnN0IGg9dy5hY3RpdmVPcmdhbml6YXRpb25JZCYmYXdhaXQgcCh3LmlkLHcuYWN0aXZlT3JnYW5pemF0aW9uSWQpP3cuYWN0aXZlT3JnYW5pemF0aW9uSWQ6dm9pZCAwLHY9YXdhaXQgZyhfLHtwcm92aWRlcjp3LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOmh9KTtyZXR1cm4gYXdhaXQgYyhsLHYpLGF3YWl0IHQuZGVsKHUobCkpLGF3YWl0IG8uaW5zZXJ0KG4pLnZhbHVlcyh7dXNlcl9pZDp3LmlkLGFjdGlvbjpkLklNUEVSU09OQVRFX1NUT1AsYWN0aW9uX3JlZl9pZDpmLmlkLG1ldGFkYXRhOnt0YXJnZXRfaWQ6Zi5pZCx0YXJnZXRfZW1haWw6Zi5wcmltYXJ5X2VtYWlsfX0pLHZ9KTtleHBvcnR7ZiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RvcC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/auth/impersonate/users.get.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e0wgYXMgcn1mcm9tIi4uLy4uLy4uLy4uL18vcGFnaW5hdGlvbi5tanMiO2ltcG9ydHtkIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7SSBhcyBtfWZyb20iLi4vLi4vLi4vLi4vXy9pbXBlcnNvbmF0ZS5tanMiO2ltcG9ydHtiIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IGk9cyhbbV0sYXN5bmMocyx7c2Vzc2lvbjptfSk9Pntjb25zdCBpPWF3YWl0IG8ocyxyLnBhcnNlKTtyZXR1cm4gdChtLmlkLGkpfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZXJzLmdldC5tanMubWFwCg==", "chunks/routes/api/auth/logout.get.mjs": "aW1wb3J0e0ggYXMgcyxJIGFzIG8sSiBhcyBlLGsgYXMgcixhYiBhcyBpfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3QgdD1zKGFzeW5jIHM9Pntjb25zdCB0PW8ocywic2Vzc2lvbmlkIil8fGUocywieC1zZXNzaW9uLWlkIik7cmV0dXJuIHQmJmF3YWl0IHIuZGVsKGBzZXNzaW9uOiR7dH1gKSxpKHMsInNlc3Npb25pZCIse3BhdGg6Ii9kYXNoYm9hcmQiLHNlY3VyZTohMCxzYW1lU2l0ZToibGF4In0pLHtzdWNjZXNzOiEwfX0pO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1sb2dvdXQuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/auth/me.get.mjs": "aW1wb3J0e2QgYXMgb31mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgcj1vKChvLHIpPT5yKTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWUuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/auth/phone.patch.mjs": "aW1wb3J0e3IgYXMgdCxrIGFzIGUsYyBhcyBzLGQgYXMgYSx1IGFzIG8saCBhcyByLEkgYXMgaSxKIGFzIG4sYWsgYXMgZH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcH1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtwIGFzIG19ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgdT1kLm9iamVjdCh7cGhvbmU6ZC5zdHJpbmcoKS50cmltKCkucmVnZXgoL15cK1xkezcsMTV9JC8sIkludmFsaWQgcGhvbmUgbnVtYmVyIil9KSxoPXAoYXN5bmMoZCxwKT0+e2NvbnN0IGg9YXdhaXQgdChkLHUucGFyc2UpLGM9YHJhdGVsaW1pdDpwaG9uZS11cGRhdGU6JHtwLmlkfWAsdz1hd2FpdCBlLmdldChjKXx8MDtpZih3Pj01KXRocm93IHMoe3N0YXR1c0NvZGU6NDI5LHN0YXR1c01lc3NhZ2U6IlRvbyBtYW55IHJlcXVlc3RzLiBQbGVhc2UgdHJ5IGFnYWluIGluIDEwIG1pbnV0ZXMuIn0pO2F3YWl0IGUuc2V0KGMsdysxLHt0dGw6NjAwfSk7dHJ5e2NvbnN0IHQ9bmV3IERhdGUsW2VdPWF3YWl0IGEuc2VsZWN0KCkuZnJvbShvKS53aGVyZShyKG8ucHJpbWFyeV9waG9uZSxoLnBob25lKSkubGltaXQoMSk7aWYoZSYmZS5pZCE9PXAuaWQpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiUGhvbmUgbnVtYmVyIGFscmVhZHkgaW4gdXNlIn0pO2NvbnN0W3VdPWF3YWl0IGEudXBkYXRlKG8pLnNldCh7cHJpbWFyeV9waG9uZTpoLnBob25lLHZlcmlmaWVkOiEwLHVwZGF0ZWRfYXQ6dH0pLndoZXJlKHIoby5pZCxwLmlkKSkucmV0dXJuaW5nKCk7aWYoIXUpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiVXNlciBub3QgZm91bmQifSk7Y29uc3QgYz1pKGQsInNlc3Npb25pZCIpfHxuKGQsIngtc2Vzc2lvbi1pZCIpO3JldHVybiBjJiZhd2FpdCBtKGQsdSx7cHJvdmlkZXI6cC5wcm92aWRlcixhY3RpdmVPcmdhbml6YXRpb25JZDpwLmFjdGl2ZU9yZ2FuaXphdGlvbklkLGltcGVyc29uYXRvcjpwLmltcGVyc29uYXRvcixzZXNzaW9uSWQ6Y30pLHtzdWNjZXNzOiEwfX1jYXRjaCh0KXtpZih0LnN0YXR1c0NvZGUpdGhyb3cgdDt0aHJvdyBzKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOiJGYWlsZWQgdG8gdXBkYXRlIHBob25lIG51bWJlciJ9KX19KTtleHBvcnR7aCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGhvbmUucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/index.delete.mjs": "aW1wb3J0e2MgYXMgcyxkIGFzIGUsZSBhcyBpLEYgYXMgdCxoIGFzIG8saSBhcyBhLFAgYXMgcix1IGFzIG4sSSBhcyBkLEogYXMgbSxrIGFzIHUsYWIgYXMgY31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbH1mcm9tIi4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtnIGFzIGZ9ZnJvbSIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7Y29uc3QgcD1sKGFzeW5jKGwscCk9PntpZihwLmltcGVyc29uYXRvcil0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJDYW5ub3QgZGVsZXRlIGFuIGFjY291bnQgd2hpbGUgaW1wZXJzb25hdGluZyJ9KTtjb25zdCB3PWF3YWl0IGUuc2VsZWN0KCkuZnJvbShpKS53aGVyZSh0KG8oaS5vd25lcl9pZCxwLmlkKSxvKGkuaXNfcGVyc29uYWwsITEpLG8oaS5pc19zeXN0ZW0sITEpKSk7Zm9yKGNvbnN0IGkgb2Ygdyl7Y29uc3Rbbl09YXdhaXQgZS5zZWxlY3Qoe2lkOmEuaWR9KS5mcm9tKGEpLndoZXJlKHQobyhhLm9yZ2FuaXphdGlvbl9pZCxpLmlkKSxyKGEudXNlcl9pZCxwLmlkKSkpLmxpbWl0KDEpO2lmKG4pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDksc3RhdHVzTWVzc2FnZTpgVHJhbnNmZXIgb3IgZW1wdHkgIiR7aS5uYW1lfSIgYmVmb3JlIGRlbGV0aW5nIHlvdXIgYWNjb3VudGB9KX1jb25zdCBoPWF3YWl0IGYoKTtpZihoKXtjb25zdCBpPShhd2FpdCBlLnNlbGVjdCh7dXNlcl9pZDphLnVzZXJfaWQsYWJpbGl0aWVzOmEuYWJpbGl0aWVzfSkuZnJvbShhKS53aGVyZShvKGEub3JnYW5pemF0aW9uX2lkLGgpKSkuZmlsdGVyKHM9PnMuYWJpbGl0aWVzLmluY2x1ZGVzKCJ1c2VyOmltcGVyc29uYXRlIikpO2lmKGkuc29tZShzPT5zLnVzZXJfaWQ9PT1wLmlkKSYmaS5sZW5ndGg8PTEpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDksc3RhdHVzTWVzc2FnZToiWW91IGFyZSB0aGUgbGFzdCBwbGF0Zm9ybSBhZG1pbjsgZ3JhbnQgYW5vdGhlciBiZWZvcmUgZGVsZXRpbmcgeW91ciBhY2NvdW50In0pfWF3YWl0IGUuZGVsZXRlKGkpLndoZXJlKHQobyhpLm93bmVyX2lkLHAuaWQpLG8oaS5pc19wZXJzb25hbCwhMCkpKSxhd2FpdCBlLmRlbGV0ZShuKS53aGVyZShvKG4uaWQscC5pZCkpO2NvbnN0IF89ZChsLCJzZXNzaW9uaWQiKXx8bShsLCJ4LXNlc3Npb24taWQiKTtyZXR1cm4gXyYmYXdhaXQgdS5kZWwoYHNlc3Npb246JHtffWApLGMobCwic2Vzc2lvbmlkIix7cGF0aDoiLyJ9KSx7c3VjY2VzczohMH19KTtleHBvcnR7cCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZGVsZXRlLm1qcy5tYXAK", "chunks/routes/api/index.get.mjs": "aW1wb3J0e2QgYXMgbyxGIGFzIHIsaCBhcyB0LHAgYXMgZX1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgc31mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIGF9ZnJvbSIuLi8uLi9fL3NjaGVtYTIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBpPXMoWyJwcm9qZWN0OnJlYWQiLCJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXSxhc3luYyhzLHtzZXNzaW9uOml9KT0+e2NvbnN0IG09aS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighbSlyZXR1cm5bXTtyZXR1cm4gYXdhaXQgby5zZWxlY3QoKS5mcm9tKGEpLndoZXJlKHIodChhLm9yZ2FuaXphdGlvbl9pZCxtKSx0KGEuc3RhdHVzLCJhY3RpdmUiKSkpLm9yZGVyQnkoZShhLmNyZWF0ZWRfYXQpKX0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQubWpzLm1hcAo=", "chunks/routes/api/index.get2.mjs": "aW1wb3J0e2EzIGFzIG8sZCBhcyB0LGggYXMgcixwIGFzIHN9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGV9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhfWZyb20iLi4vLi4vXy9zY2hlbWEzLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgaT1lKFsicHJvZHVjdDp3cml0ZSIsInByb2R1Y3Q6bWFuYWdlIl0sYXN5bmMgZT0+e2NvbnN0e3N0YXR1czppfT1vKGUpO3JldHVybiBhd2FpdCB0LnNlbGVjdCgpLmZyb20oYSkud2hlcmUocihhLnN0YXR1cywiaW5hY3RpdmUiPT09aT8iaW5hY3RpdmUiOiJhY3RpdmUiKSkub3JkZXJCeShzKGEuY3JlYXRlZF9hdCkpfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldDIubWpzLm1hcAo=", "chunks/routes/api/index.get3.mjs": "aW1wb3J0e24gYXMgbyxkIGFzIHQsUyBhcyByLEYgYXMgcyxoIGFzIGkscCBhcyBlfWZyb20iLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBhfWZyb20iLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e04gYXMgbix0IGFzIG19ZnJvbSIuLi8uLi9fL25vdGlmaWNhdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgcD1hKGFzeW5jKGEscCk9Pntjb25zdCBkPWEuY29udGV4dC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighZClyZXR1cm57aXRlbXM6W10saGFzTW9yZTohMX07Y29uc3R7b2Zmc2V0OmYsbGltaXQ6Y309YXdhaXQgbyhhLG4ucGFyc2UpLGw9YXdhaXQgdC5zZWxlY3QoKS5mcm9tKHIpLndoZXJlKHMoaShyLnVzZXJfaWQscC5pZCksaShyLm9yZ2FuaXphdGlvbl9pZCxkKSkpLm9yZGVyQnkoZShyLmNyZWF0ZWRfYXQpKS5saW1pdChjKzEpLm9mZnNldChmKSxfPWwubGVuZ3RoPmM7cmV0dXJue2l0ZW1zOmwuc2xpY2UoMCxjKS5tYXAobSksaGFzTW9yZTpffX0pO2V4cG9ydHtwIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQzLm1qcy5tYXAK", "chunks/routes/api/index.get4.mjs": "aW1wb3J0e2MgYXMgcyxkIGFzIG8sZSBhcyB0LGggYXMgZSxhNCBhcyBhLGl9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHJ9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPXIoWyJ1c2VyOnJlYWQiXSxhc3luYyByPT57dmFyIG47Y29uc3QgbT1yLmNvbnRleHQuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIW0pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdFtkXT1hd2FpdCBvLnNlbGVjdCgpLmZyb20odCkud2hlcmUoZSh0LmlkLG0pKS5saW1pdCgxKTtpZighZCl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJPcmdhbml6YXRpb24gbm90IGZvdW5kIn0pO2NvbnN0W3VdPWF3YWl0IG8uc2VsZWN0KHtjb3VudDphKCl9KS5mcm9tKGkpLndoZXJlKGUoaS5vcmdhbml6YXRpb25faWQsbSkpO3JldHVybntpZDpkLmlkLG5hbWU6ZC5uYW1lLHNsdWc6ZC5zbHVnLGlzX3N5c3RlbTpkLmlzX3N5c3RlbSxpc19wZXJzb25hbDpkLmlzX3BlcnNvbmFsLG1lbWJlckNvdW50Om51bGwhPShuPW51bGw9PXU/dm9pZCAwOnUuY291bnQpP246MH19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0NC5tanMubWFwCg==", "chunks/routes/api/index.get5.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e0wgYXMgcn1mcm9tIi4uLy4uL18vcGFnaW5hdGlvbi5tanMiO2ltcG9ydHtkIGFzIHN9ZnJvbSIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7eCBhcyB0fWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IGk9cyhhc3luYyhzLGkpPT57Y29uc3QgbT1hd2FpdCBvKHMsci5wYXJzZSk7cmV0dXJuIHQoaS5pZCxtKX0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQ1Lm1qcy5tYXAK", "chunks/routes/api/index.get6.mjs": "aW1wb3J0e2QgYXMgbyxoIGFzIHIsYW0gYXMgc31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgZX1mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IHQ9ZShbInVzZXI6cmVhZCJdLGFzeW5jKCk9Pm8ucXVlcnkucGVybWlzc2lvblRhYmxlLmZpbmRNYW55KHt3aGVyZTpyKHMub3JnX2tpbmQsInRlbmFudCIpfSkpO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQ2Lm1qcy5tYXAK", "chunks/routes/api/index.get7.mjs": "aW1wb3J0e2MgYXMgbyxkIGFzIHMsaCBhcyByLGcgYXMgaX1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGU9dChbInVzZXI6cmVhZCJdLGFzeW5jKHQse3Nlc3Npb246ZX0pPT57Y29uc3QgYT1lLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFhKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7cmV0dXJuIHMucXVlcnkucm9sZVRhYmxlLmZpbmRNYW55KHt3aGVyZTpyKGkub3JnYW5pemF0aW9uX2lkLGEpLGNvbHVtbnM6e2lkOiEwLG5hbWU6ITAsZGVzY3JpcHRpb246ITAscGVybWlzc2lvbnM6ITAsaXNfc3lzdGVtOiEwfX0pfSk7ZXhwb3J0e2UgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldDcubWpzLm1hcAo=", "chunks/routes/api/index.patch.mjs": "aW1wb3J0e2MgYXMgdCxyIGFzIHMsZCBhcyBvLGUgYXMgYSxoIGFzIGV9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7VSBhcyByfWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24yLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgbj1pKFsidXNlcjptYW5hZ2UiXSxhc3luYyBpPT57Y29uc3Qgbj1pLmNvbnRleHQuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIW4pdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBtPWF3YWl0IHMoaSxyLnBhcnNlKSxbZF09YXdhaXQgby5zZWxlY3QoKS5mcm9tKGEpLndoZXJlKGUoYS5pZCxuKSkubGltaXQoMSk7aWYoIWQpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiT3JnYW5pemF0aW9uIG5vdCBmb3VuZCJ9KTtpZihkLmlzX3N5c3RlbSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJUaGUgc3lzdGVtIG9yZ2FuaXphdGlvbiBjYW5ub3QgYmUgcmVuYW1lZCJ9KTtjb25zdFtwXT1hd2FpdCBvLnVwZGF0ZShhKS5zZXQoe25hbWU6bS5uYW1lfSkud2hlcmUoZShhLmlkLG4pKS5yZXR1cm5pbmcoKTtyZXR1cm57aWQ6cC5pZCxuYW1lOnAubmFtZX19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/index.patch2.mjs": "aW1wb3J0e3IgYXMgcyxkIGFzIGUsdSBhcyBvLEYgYXMgYSxQIGFzIHIsaCBhcyBpLGMgYXMgdCxJIGFzIG4sSiBhcyBtfWZyb20iLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZH1mcm9tIi4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtwIGFzIHV9ZnJvbSIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7VSBhcyBwfWZyb20iLi4vLi4vXy91c2VyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGM9ZChhc3luYyhkLGMpPT57Y29uc3QgZj1hd2FpdCBzKGQscC5wYXJzZSk7aWYoZi51c2VybmFtZSl7Y29uc3Rbc109YXdhaXQgZS5zZWxlY3Qoe2lkOm8uaWR9KS5mcm9tKG8pLndoZXJlKGEoaShvLnVzZXJuYW1lLGYudXNlcm5hbWUpLHIoby5pZCxjLmlkKSkpLmxpbWl0KDEpO2lmKHMpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiVXNlcm5hbWUgYWxyZWFkeSB0YWtlbiJ9KX1jb25zdCB3PXt9O3ZvaWQgMCE9PWYubmFtZSYmKHcubmFtZT1mLm5hbWUpLHZvaWQgMCE9PWYudXNlcm5hbWUmJih3LnVzZXJuYW1lPWYudXNlcm5hbWUpLHZvaWQgMCE9PWYuYmlvJiYody5iaW89Zi5iaW8pO2NvbnN0W3ZdPWF3YWl0IGUudXBkYXRlKG8pLnNldCh3KS53aGVyZShpKG8uaWQsYy5pZCkpLnJldHVybmluZygpO2lmKCF2KXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlVzZXIgbm90IGZvdW5kIn0pO2NvbnN0IGg9bihkLCJzZXNzaW9uaWQiKXx8bShkLCJ4LXNlc3Npb24taWQiKTtyZXR1cm4gaCYmYXdhaXQgdShkLHYse3Byb3ZpZGVyOmMucHJvdmlkZXIsYWN0aXZlT3JnYW5pemF0aW9uSWQ6Yy5hY3RpdmVPcmdhbml6YXRpb25JZCxpbXBlcnNvbmF0b3I6Yy5pbXBlcnNvbmF0b3Isc2Vzc2lvbklkOmh9KSx7c3VjY2VzczohMH19KTtleHBvcnR7YyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucGF0Y2gyLm1qcy5tYXAK", "chunks/routes/api/index.post.mjs": "aW1wb3J0e2MgYXMgbyxyLGQgYXMgdH1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgc31mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIGksYX1mcm9tIi4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydHtDIGFzIGV9ZnJvbSIuLi8uLi9fL3Byb2plY3QubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPXMoWyJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXSxhc3luYyhzLHtzZXNzaW9uOm59KT0+e2NvbnN0IG09bi5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighbSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IHA9YXdhaXQgcihzLGUucGFyc2UpLFtkXT1hd2FpdCB0Lmluc2VydChpKS52YWx1ZXMoey4uLnAsb3JnYW5pemF0aW9uX2lkOm0sY3JlYXRlZF9ieTpuLmlkfSkucmV0dXJuaW5nKCk7cmV0dXJuIGF3YWl0IHQuaW5zZXJ0KGEpLnZhbHVlcyh7cHJvamVjdF9pZDpkLmlkLHVzZXJfaWQ6bi5pZCxyb2xlOiJvd25lciJ9KSxkfSk7ZXhwb3J0e24gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBvc3QubWpzLm1hcAo=", "chunks/routes/api/index.post2.mjs": "aW1wb3J0e3IgYXMgbyxkIGFzIHJ9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBzfWZyb20iLi4vLi4vXy9zY2hlbWEzLm1qcyI7aW1wb3J0e0MgYXMgbX1mcm9tIi4uLy4uL18vcHJvZHVjdC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGk9dChbInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0Om1hbmFnZSJdLGFzeW5jIHQ9Pntjb25zdCBpPWF3YWl0IG8odCxtLnBhcnNlKSxbYV09YXdhaXQgci5pbnNlcnQocykudmFsdWVzKGkpLnJldHVybmluZygpO3JldHVybiBhfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBvc3QyLm1qcy5tYXAK", "chunks/routes/api/index.post3.mjs": "aW1wb3J0e3IgYXMgb31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHt5IGFzIHR9ZnJvbSIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIHN9ZnJvbSIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7QyBhcyBpfWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24yLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IGE9cihhc3luYyhyLGEpPT57Y29uc3R7bmFtZTptfT1hd2FpdCBvKHIsaS5wYXJzZSksbj1hd2FpdCB0KGEuaWQsbSk7cmV0dXJuIGF3YWl0IHMoYS5pZCksbn0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5wb3N0My5tanMubWFwCg==", "chunks/routes/api/index.post4.mjs": "aW1wb3J0e2MgYXMgcyxyIGFzIG8sZCBhcyB0LGcgYXMgYX1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHt1IGFzIGksdiBhcyBufWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7QyBhcyBlfWZyb20iLi4vLi4vXy9yb2xlLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7Y29uc3QgbT1yKFsidXNlcjptYW5hZ2UiXSxhc3luYyhyLHtzZXNzaW9uOm19KT0+e2NvbnN0IHA9bS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighcCl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IGQ9YXdhaXQgbyhyLGUucGFyc2UpLHU9YXdhaXQgaShtLmlkLHApLGM9bih1LGQucGVybWlzc2lvbnMpO2lmKGMubGVuZ3RoPjApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZTpgQ2Fubm90IGdyYW50OiAke2Muam9pbigiLCAiKX1gfSk7Y29uc3RbZ109YXdhaXQgdC5pbnNlcnQoYSkudmFsdWVzKHtvcmdhbml6YXRpb25faWQ6cCwuLi5kfSkucmV0dXJuaW5nKCk7cmV0dXJuIGd9KTtleHBvcnR7bSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucG9zdDQubWpzLm1hcAo=", "chunks/routes/api/invitations/_token/accept.post.mjs": "aW1wb3J0e20gYXMgYSxjIGFzIGksZCBhcyB0LEYgYXMgbyxoIGFzIHMsaSBhcyBlLGcgYXMgcn1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtmIGFzIGQsaCBhcyBtLGkgYXMgdSxhIGFzIGYsRCBhcyBsLGogYXMgdyxrIGFzIGMsbSBhcyBnfWZyb20iLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7ciBhcyBwfWZyb20iLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0e2EgYXMgX31mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBoPW4oYXN5bmMobixoKT0+e3ZhciB6O2NvbnN0IGo9YShuLCJ0b2tlbiIpO2lmKCFqKXRocm93IGkoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik1pc3NpbmcgdG9rZW4ifSk7Y29uc3QgTT1hd2FpdCBkKGopO2lmKCFNfHxNLmV4cGlyZXNfYXQ8bmV3IERhdGUpdGhyb3cgaSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCJ9KTtjb25zdCBiPWF3YWl0IG0oTS5vcmdhbml6YXRpb25faWQpO2lmKCFiKXRocm93IGkoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik9yZ2FuaXphdGlvbiBub3QgZm91bmQifSk7aWYoTS5lbWFpbCE9PWgucHJpbWFyeV9lbWFpbCl0aHJvdyBpKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJJbnZpdGF0aW9uIHdhcyBpc3N1ZWQgdG8gYSBkaWZmZXJlbnQgZW1haWwgYWRkcmVzcyJ9KTtpZihhd2FpdCB1KGguaWQsTS5vcmdhbml6YXRpb25faWQpKXRocm93IGkoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IllvdSBhcmUgYWxyZWFkeSBhIG1lbWJlciBvZiB0aGlzIG9yZ2FuaXphdGlvbiJ9KTthd2FpdCBmKGguaWQsTS5vcmdhbml6YXRpb25faWQsbCk7Y29uc3QgeT1hd2FpdCB0LnF1ZXJ5Lm9yZ2FuaXphdGlvbk1lbWJlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6byhzKGUudXNlcl9pZCxoLmlkKSxzKGUub3JnYW5pemF0aW9uX2lkLE0ub3JnYW5pemF0aW9uX2lkKSksY29sdW1uczp7aWQ6ITB9fSk7aWYoeSlpZihNLnJvbGVfaWQpe2NvbnN0IGE9YXdhaXQgdC5xdWVyeS5yb2xlVGFibGUuZmluZEZpcnN0KHt3aGVyZTpzKHIuaWQsTS5yb2xlX2lkKSxjb2x1bW5zOntpZDohMH19KTthJiZhd2FpdCB3KHkuaWQsYS5pZCl9ZWxzZXtjb25zdCBhPShhd2FpdCBjKE0ub3JnYW5pemF0aW9uX2lkKSkuZmluZChhPT4iTWVtYmVyIj09PWEubmFtZSk7YSYmYXdhaXQgdyh5LmlkLGEuaWQpfXJldHVybihudWxsPT0oej1NLnByb2plY3RfaWRzKT92b2lkIDA6ei5sZW5ndGgpJiZhd2FpdCBhc3luYyBmdW5jdGlvbihhLGkpe2F3YWl0IFByb21pc2UuYWxsKGkubWFwKGk9PnQuaW5zZXJ0KF8pLnZhbHVlcyh7cHJvamVjdF9pZDppLHVzZXJfaWQ6YSxyb2xlOiJtZW1iZXIifSkub25Db25mbGljdERvTm90aGluZygpKSl9KGguaWQsTS5wcm9qZWN0X2lkcyksYXdhaXQgZyhNLmlkKSxhd2FpdCBwKGguaWQpLHtvcmc6e2lkOmIuaWQsbmFtZTpiLm5hbWV9fX0pO2V4cG9ydHtoIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hY2NlcHQucG9zdC5tanMubWFwCg==", "chunks/routes/api/invitations/index.get.mjs": "aW1wb3J0e0ggYXMgdCxtIGFzIGUsYyBhcyBvLGQgYXMgYSxoIGFzIGksZyBhcyBzLFIgYXMgbn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2YgYXMgcixoIGFzIGR9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBtPXQoYXN5bmMgdD0+e3ZhciBtO2NvbnN0IGw9ZSh0LCJ0b2tlbiIpO2lmKCFsKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik1pc3NpbmcgdG9rZW4ifSk7Y29uc3QgdT1hd2FpdCByKGwpO2lmKCF1fHx1LmV4cGlyZXNfYXQ8bmV3IERhdGUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCJ9KTtjb25zdCBmPWF3YWl0IGQodS5vcmdhbml6YXRpb25faWQpO2lmKCFmKXRocm93IG8oe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik9yZ2FuaXphdGlvbiBub3QgZm91bmQifSk7bGV0IHA9bnVsbDtpZih1LnJvbGVfaWQpe2NvbnN0IHQ9YXdhaXQgYS5xdWVyeS5yb2xlVGFibGUuZmluZEZpcnN0KHt3aGVyZTppKHMuaWQsdS5yb2xlX2lkKSxjb2x1bW5zOntuYW1lOiEwfX0pO3A9bnVsbCE9KG09bnVsbD09dD92b2lkIDA6dC5uYW1lKT9tOm51bGx9cmV0dXJuIHUuaW52aXRlZF9ieSYmbih0LCJyZWZfaW52aXRlIix1Lmludml0ZWRfYnkse2h0dHBPbmx5OiEwLHNlY3VyZTohMCxzYW1lU2l0ZToibGF4IixtYXhBZ2U6NjA0ODAwLHBhdGg6Ii8ifSkse2lkOnUuaWQsZW1haWw6dS5lbWFpbCxyb2xlTmFtZTpwLG9yZzp7aWQ6Zi5pZCxuYW1lOmYubmFtZX19fSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldC5tanMubWFwCg==", "chunks/routes/api/notifications/_id/read.patch.mjs": "aW1wb3J0e20gYXMgdCxjIGFzIG8sZCBhcyBzLFMgYXMgaSxGIGFzIHIsaCBhcyBhfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e3QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBkPWUoYXN5bmMoZSxkKT0+e2NvbnN0IG09ZS5jb250ZXh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkLHA9dChlLCJpZCIpO2lmKCFtfHwhcCl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJCYWQgcmVxdWVzdCJ9KTtjb25zdFt1XT1hd2FpdCBzLnVwZGF0ZShpKS5zZXQoe2lzX3JlYWQ6ITB9KS53aGVyZShyKGEoaS5pZCxwKSxhKGkudXNlcl9pZCxkLmlkKSxhKGkub3JnYW5pemF0aW9uX2lkLG0pKSkucmV0dXJuaW5nKCk7aWYoIXUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90aWZpY2F0aW9uIG5vdCBmb3VuZCJ9KTtyZXR1cm4gbih1KX0pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1yZWFkLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/notifications/unread-count.get.mjs": "aW1wb3J0e2QgYXMgbyxhNCBhcyB0LFMgYXMgcixGIGFzIG4saCBhcyBpfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBzfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBlPXMoYXN5bmMocyxlKT0+e3ZhciBhO2NvbnN0IG09cy5jb250ZXh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFtKXJldHVybntjb3VudDowfTtjb25zdFtkXT1hd2FpdCBvLnNlbGVjdCh7Y291bnQ6dCgpfSkuZnJvbShyKS53aGVyZShuKGkoci51c2VyX2lkLGUuaWQpLGkoci5vcmdhbml6YXRpb25faWQsbSksaShyLmlzX3JlYWQsITEpKSk7cmV0dXJue2NvdW50Om51bGwhPShhPW51bGw9PWQ/dm9pZCAwOmQuY291bnQpP2E6MH19KTtleHBvcnR7ZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dW5yZWFkLWNvdW50LmdldC5tanMubWFwCg==", "chunks/routes/api/organization/index.get.mjs": "aW1wb3J0e2MgYXMgbyxkIGFzIHMsaCBhcyByLHAgYXMgdH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgaX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtpIGFzIGF9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBlPWkoWyJiaWxsaW5nOnJlYWQiLCJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246ZX0pPT57Y29uc3Qgbj1lLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFuKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7cmV0dXJuIHMuc2VsZWN0KCkuZnJvbShhKS53aGVyZShyKGEub3JnYW5pemF0aW9uX2lkLG4pKS5vcmRlckJ5KHQoYS5jcmVhdGVkX2F0KSl9KTtleHBvcnR7ZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0Lm1qcy5tYXAK", "chunks/routes/api/organization/index.get2.mjs": "aW1wb3J0e2MgYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtuIGFzIHN9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IHQ9cihbInVzZXI6cmVhZCJdLGFzeW5jKHIse3Nlc3Npb246dH0pPT57aWYoIXQuYWN0aXZlT3JnYW5pemF0aW9uSWQpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtyZXR1cm4gcyh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkKX0pO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQyLm1qcy5tYXAK", "chunks/routes/api/organization/index.get3.mjs": "aW1wb3J0e2MgYXMgbyxuIGFzIHN9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtMIGFzIHR9ZnJvbSIuLi8uLi8uLi9fL3BhZ2luYXRpb24ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3cgYXMgYX1mcm9tIi4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7Y29uc3QgaT1yKFsidXNlcjpyZWFkIl0sYXN5bmMocix7c2Vzc2lvbjppfSk9Pntjb25zdCBlPWkuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBuPWF3YWl0IHMocix0LnBhcnNlKTtyZXR1cm4gYShlLG4pfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldDMubWpzLm1hcAo=", "chunks/routes/api/organization/index.post.mjs": "aW1wb3J0e2MgYXMgdCxyIGFzIGksZCBhcyBlfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2kgYXMgYSxhIGFzIG99ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTQubWpzIjtpbXBvcnR7QyBhcyBufWZyb20iLi4vLi4vLi4vXy9pbnZvaWNlLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7ZnVuY3Rpb24gZ2VuZXJhdGVJbnZvaWNlTnVtYmVyKCl7Y29uc3QgdD1uZXcgRGF0ZTtyZXR1cm5gSU5WLSR7dC5nZXRGdWxsWWVhcigpfSR7U3RyaW5nKHQuZ2V0TW9udGgoKSsxKS5wYWRTdGFydCgyLCIwIil9LSR7TWF0aC5mbG9vcigxZTQqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9YH1jb25zdCBzPXIoWyJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKHIse3Nlc3Npb246c30pPT57Y29uc3QgbT1zLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFtKXRocm93IHQoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7aXRlbXM6dSwuLi5jfT1hd2FpdCBpKHIsbi5wYXJzZSkscD11LnJlZHVjZSgodCxpKT0+dCtpLnVuaXRfcHJpY2UqaS5xdWFudGl0eSwwKSxkPXAsW19dPWF3YWl0IGUuaW5zZXJ0KGEpLnZhbHVlcyh7Li4uYyxvcmdhbml6YXRpb25faWQ6bSxudW1iZXI6Z2VuZXJhdGVJbnZvaWNlTnVtYmVyKCksc3VidG90YWw6cCx0b3RhbDpkLGR1ZV9hdDpjLmR1ZV9hdD9uZXcgRGF0ZShjLmR1ZV9hdCk6dm9pZCAwfSkucmV0dXJuaW5nKCk7cmV0dXJuIHUubGVuZ3RoPjAmJmF3YWl0IGUuaW5zZXJ0KG8pLnZhbHVlcyh1Lm1hcCh0PT4oe2ludm9pY2VfaWQ6Xy5pZCxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uLHF1YW50aXR5OnQucXVhbnRpdHksdW5pdF9wcmljZTp0LnVuaXRfcHJpY2UsY3VycmVuY3k6dC5jdXJyZW5jeSxhbW91bnQ6dC51bml0X3ByaWNlKnQucXVhbnRpdHl9KSkpLF99KTtleHBvcnR7cyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucG9zdC5tanMubWFwCg==", "chunks/routes/api/organization/index.post2.mjs": "aW1wb3J0e28gYXMgYSxhIGFzIHMscyBhcyBpLGMgYXMgbyxyIGFzIHQsZCBhcyBlLHUgYXMgcixoIGFzIG59ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIG19ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7aSBhcyBkLG4gYXMgbCxvIGFzIHB9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IHU9YSh7ZW1haWw6aSgpLnRyaW0oKS5lbWFpbCgiSW52YWxpZCBlbWFpbCBhZGRyZXNzIikscm9sZV9pZDppKCkub3B0aW9uYWwoKSxwcm9qZWN0X2lkczpzKGkoKS51dWlkKCkpLm9wdGlvbmFsKCl9KSxjPW0oWyJ1c2VyOm1hbmFnZSJdLGFzeW5jKGEse3Nlc3Npb246c30pPT57Y29uc3QgaT1zLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFpKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7ZW1haWw6bSxyb2xlX2lkOmMscHJvamVjdF9pZHM6Zn09YXdhaXQgdChhLHUucGFyc2UpLFtfXT1hd2FpdCBlLnNlbGVjdCh7aWQ6ci5pZH0pLmZyb20ocikud2hlcmUobihyLnByaW1hcnlfZW1haWwsbSkpLmxpbWl0KDEpO2lmKF8mJmF3YWl0IGQoXy5pZCxpKSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwOSxzdGF0dXNNZXNzYWdlOiJVc2VyIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgdGhpcyBvcmdhbml6YXRpb24ifSk7aWYoKGF3YWl0IGwoaSkpLnNvbWUoYT0+YS5lbWFpbD09PW0pKXRocm93IG8oe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IkFuIGludml0YXRpb24gZm9yIHRoaXMgZW1haWwgaXMgYWxyZWFkeSBwZW5kaW5nIn0pO3JldHVybiBwKGksbSxudWxsIT1jP2M6bnVsbCxzLmlkLG51bGwhPWY/ZjpbXSl9KTtleHBvcnR7YyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucG9zdDIubWpzLm1hcAo=", "chunks/routes/api/organization/index.post3.mjs": "aW1wb3J0e2MgYXMgYSxyIGFzIHMsZCBhcyBpLHUgYXMgZSxoIGFzIHQsaSBhcyByfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBvfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2kgYXMgbSxEIGFzIG59ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIGR9ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7QSBhcyB1fWZyb20iLi4vLi4vLi4vXy9tZW1iZXIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2NvbnN0IHA9byhbInVzZXI6bWFuYWdlIl0sYXN5bmMobyx7c2Vzc2lvbjpwfSk9Pntjb25zdCBmPXAuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWYpdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdHtlbWFpbDpsfT1hd2FpdCBzKG8sdS5wYXJzZSksW19dPWF3YWl0IGkuc2VsZWN0KCkuZnJvbShlKS53aGVyZSh0KGUucHJpbWFyeV9lbWFpbCxsKSkubGltaXQoMSk7aWYoIV8pdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm8gdXNlciBmb3VuZCB3aXRoIHRoYXQgZW1haWwifSk7aWYoYXdhaXQgbShfLmlkLGYpKXRocm93IGEoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IlVzZXIgaXMgYWxyZWFkeSBhIG1lbWJlciBvZiB0aGlzIG9yZ2FuaXphdGlvbiJ9KTtyZXR1cm4gYXdhaXQgaS5pbnNlcnQocikudmFsdWVzKHt1c2VyX2lkOl8uaWQsb3JnYW5pemF0aW9uX2lkOmYsYWJpbGl0aWVzOlsuLi5uXX0pLGF3YWl0IGQoXy5pZCkse2lkOl8uaWQsbmFtZTpfLm5hbWUsdXNlcm5hbWU6Xy51c2VybmFtZSxwcmltYXJ5X2VtYWlsOl8ucHJpbWFyeV9lbWFpbCxhdmF0YXI6Xy5hdmF0YXIsYWJpbGl0aWVzOlsuLi5uXSxpc19zdXNwZW5kZWQ6Xy5pc19zdXNwZW5kZWR9fSk7ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBvc3QzLm1qcy5tYXAK", "chunks/routes/api/organization/invitations/index.delete.mjs": "aW1wb3J0e2MgYXMgbyxtIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7ciBhcyBpfWZyb20iLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtjb25zdCByPXQoWyJ1c2VyOm1hbmFnZSJdLGFzeW5jKHQse3Nlc3Npb246cn0pPT57Y29uc3QgYT1yLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFhKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3QgZT1zKHQsImlkIik7aWYoIWUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpbnZpdGF0aW9uIGlkIn0pO3JldHVybiBhd2FpdCBpKGUsYSkse29rOiEwfX0pO2V4cG9ydHtyIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/organization/invoice/settings.get.mjs": "aW1wb3J0e2MgYXMgbyxkIGFzIGksaCBhcyB0fWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e28gYXMgc31mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hNC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGE9cihbImJpbGxpbmc6cmVhZCIsImJpbGxpbmc6bWFuYWdlIl0sYXN5bmMocix7c2Vzc2lvbjphfSk9Pntjb25zdCBuPWEuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIW4pdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBlPWF3YWl0IGkucXVlcnkub3JnYW5pemF0aW9uQmlsbGluZ1NldHRpbmdzVGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KHMub3JnYW5pemF0aW9uX2lkLG4pfSk7cmV0dXJuIG51bGwhPWU/ZTp7b3JnYW5pemF0aW9uX2lkOm4sY3VycmVuY3k6IlVTRCJ9fSk7ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNldHRpbmdzLmdldC5tanMubWFwCg==", "chunks/routes/api/organization/invoice/settings.patch.mjs": "aW1wb3J0e2MgYXMgbyxyIGFzIHQsZCBhcyBzfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBpfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e28gYXMgcn1mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hNC5tanMiO2ltcG9ydHtVIGFzIGF9ZnJvbSIuLi8uLi8uLi8uLi9fL2ludm9pY2UubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPWkoWyJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246bn0pPT57Y29uc3QgZT1uLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFlKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3QgbT1hd2FpdCB0KGksYS5wYXJzZSksW3BdPWF3YWl0IHMuaW5zZXJ0KHIpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOmUsLi4ubX0pLm9uQ29uZmxpY3REb1VwZGF0ZSh7dGFyZ2V0OnIub3JnYW5pemF0aW9uX2lkLHNldDptfSkucmV0dXJuaW5nKCk7cmV0dXJuIHB9KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2V0dGluZ3MucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/organization/members/_userId/abilities.patch.mjs": "aW1wb3J0e2MgYXMgcyxtIGFzIHQsciBhcyBhLGQgYXMgaSxpIGFzIGUsRiBhcyBvLGggYXMgcn1mcm9tIi4uLy4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtxIGFzIG0scyBhcyB1LHQgYXMgZCxTIGFzIGx9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIGd9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7VSBhcyBjfWZyb20iLi4vLi4vLi4vLi4vLi4vXy9tZW1iZXIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2NvbnN0IGY9bihbInVzZXI6bWFuYWdlIl0sYXN5bmMobix7c2Vzc2lvbjpmfSk9Pnt2YXIgdztjb25zdCBoPWYuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWgpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBwPXQobiwidXNlcklkIik7aWYoIXApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyB1c2VySWQifSk7aWYocD09PWYuaWQpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiWW91IGNhbm5vdCBlZGl0IHlvdXIgb3duIG1lbWJlcnNoaXAifSk7Y29uc3R7YWJpbGl0aWVzOl99PWF3YWl0IGEobixjLnBhcnNlKSxbYl09YXdhaXQgaS5zZWxlY3QoKS5mcm9tKGUpLndoZXJlKG8ocihlLnVzZXJfaWQsZi5pZCkscihlLm9yZ2FuaXphdGlvbl9pZCxoKSkpLmxpbWl0KDEpLHo9KG51bGwhPSh3PW51bGw9PWI/dm9pZCAwOmIuYWJpbGl0aWVzKT93OltdKS5maWx0ZXIocz0+bSghMSkuaGFzKHMpKSxqPV8uZmlsdGVyKHM9PiF1KHoscykpO2lmKGoubGVuZ3RoPjApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZTpgWW91IGNhbm5vdCBncmFudDogJHtqLmpvaW4oIiwgIil9YH0pO2NvbnN0W0NdPWF3YWl0IGkuc2VsZWN0KCkuZnJvbShlKS53aGVyZShvKHIoZS51c2VyX2lkLHApLHIoZS5vcmdhbml6YXRpb25faWQsaCkpKS5saW1pdCgxKTtpZighQyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJOb3QgYSBtZW1iZXIgb2YgdGhpcyBvcmdhbml6YXRpb24ifSk7aWYoQy5hYmlsaXRpZXMuaW5jbHVkZXMoInVzZXI6bWFuYWdlIikmJiFfLmluY2x1ZGVzKCJ1c2VyOm1hbmFnZSIpJiZhd2FpdCBkKGgpPD0xKXRocm93IHMoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IkNhbm5vdCByZW1vdmUgdGhlIGxhc3Qgb3JnYW5pemF0aW9uIGFkbWluIn0pO2NvbnN0IE09Wy4uLm5ldyBTZXQoWy4uLl8sLi4ubF0pXSxbdl09YXdhaXQgaS51cGRhdGUoZSkuc2V0KHthYmlsaXRpZXM6TX0pLndoZXJlKG8ocihlLnVzZXJfaWQscCkscihlLm9yZ2FuaXphdGlvbl9pZCxoKSkpLnJldHVybmluZygpO3JldHVybiBhd2FpdCBnKHApLHZ9KTtleHBvcnR7ZiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWJpbGl0aWVzLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/organization/members/_userId/roles.patch.mjs": "aW1wb3J0e2MgYXMgcyxhbCBhcyBlLG8gYXMgYSxzIGFzIG8sciBhcyB0LGQgYXMgaSxoIGFzIHIsZyBhcyBuLEYgYXMgZCxpIGFzIG0sbH1mcm9tIi4uLy4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdX1mcm9tIi4uLy4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHt1IGFzIGYsdiBhcyBnLHQgYXMgY31mcm9tIi4uLy4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3IgYXMgcH1mcm9tIi4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydHtBIGFzIHd9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3JvbGUubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2NvbnN0IGg9dShbInVzZXI6bWFuYWdlIl0sYXN5bmModSx7c2Vzc2lvbjpofSk9Pntjb25zdCBfPWguYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIV8pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdHt1c2VySWQ6dn09YXdhaXQgZSh1LGEoe3VzZXJJZDpvKCl9KS5wYXJzZSksQz1hd2FpdCB0KHUsdy5wYXJzZSksTT1DLnJvbGVfaWRzLmxlbmd0aD4wP2F3YWl0IGkucXVlcnkucm9sZVRhYmxlLmZpbmRNYW55KHt3aGVyZTpyKG4ub3JnYW5pemF0aW9uX2lkLF8pfSk6W10sYj1uZXcgU2V0KE0ubWFwKHM9PnMuaWQpKTtpZihDLnJvbGVfaWRzLmZpbHRlcihzPT4hYi5oYXMocykpLmxlbmd0aD4wKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkludmFsaWQgcm9sZSBJRHMifSk7Y29uc3Qgaj1hd2FpdCBmKGguaWQsXyk7Zm9yKGNvbnN0IGUgb2YgTS5maWx0ZXIocz0+Qy5yb2xlX2lkcy5pbmNsdWRlcyhzLmlkKSkpe2NvbnN0IGE9ZyhqLGUucGVybWlzc2lvbnMpO2lmKGEubGVuZ3RoPjApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZTpgQ2Fubm90IGdyYW50IHJvbGUgIiR7ZS5uYW1lfSI6ICR7YS5qb2luKCIsICIpfWB9KX1jb25zdCB6PWF3YWl0IGkucXVlcnkub3JnYW5pemF0aW9uTWVtYmVyVGFibGUuZmluZEZpcnN0KHt3aGVyZTpkKHIobS51c2VyX2lkLHYpLHIobS5vcmdhbml6YXRpb25faWQsXykpLGNvbHVtbnM6e2lkOiEwfX0pO2lmKCF6KXRocm93IHMoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik1lbWJlciBub3QgZm91bmQifSk7aWYoKGF3YWl0IGYodixfKSkuaW5jbHVkZXMoInVzZXI6bWFuYWdlIikmJiFDLnJvbGVfaWRzLnNvbWUocz0+e3ZhciBlO3JldHVybiBudWxsPT0oZT1NLmZpbmQoZT0+ZS5pZD09PXMpKT92b2lkIDA6ZS5wZXJtaXNzaW9ucy5pbmNsdWRlcygidXNlcjptYW5hZ2UiKX0pKXtpZihhd2FpdCBjKF8pPD0xKXRocm93IHMoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6IkNhbm5vdCByZW1vdmUgdGhlIGxhc3QgYWRtaW4ifSl9cmV0dXJuIGF3YWl0IGkuZGVsZXRlKGwpLndoZXJlKHIobC5tZW1iZXJfaWQsei5pZCkpLEMucm9sZV9pZHMubGVuZ3RoPjAmJmF3YWl0IGkuaW5zZXJ0KGwpLnZhbHVlcyhDLnJvbGVfaWRzLm1hcChzPT4oe21lbWJlcl9pZDp6LmlkLHJvbGVfaWQ6c30pKSkub25Db25mbGljdERvTm90aGluZygpLGF3YWl0IHAodikse29rOiEwfX0pO2V4cG9ydHtoIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1yb2xlcy5wYXRjaC5tanMubWFwCg==", "chunks/routes/api/organization/members/index.delete.mjs": "aW1wb3J0e2MgYXMgcyxtIGFzIHQsZCBhcyBvLGkgYXMgYSxGIGFzIGUsaCBhcyBpfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3IgYXMgbX1mcm9tIi4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7Y29uc3QgZD1yKFsidXNlcjptYW5hZ2UiXSxhc3luYyhyLHtzZXNzaW9uOmR9KT0+e2NvbnN0IHU9ZC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighdSl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IGM9dChyLCJ1c2VySWQiKTtpZighYyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJNaXNzaW5nIHVzZXJJZCJ9KTtpZihjPT09ZC5pZCl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJVc2UgbGVhdmUtb3JnYW5pemF0aW9uIHRvIHJlbW92ZSB5b3Vyc2VsZiJ9KTtjb25zdFtmXT1hd2FpdCBvLnNlbGVjdCgpLmZyb20oYSkud2hlcmUoZShpKGEudXNlcl9pZCxjKSxpKGEub3JnYW5pemF0aW9uX2lkLHUpKSkubGltaXQoMSk7aWYoIWYpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90IGEgbWVtYmVyIG9mIHRoaXMgb3JnYW5pemF0aW9uIn0pO2lmKGYuYWJpbGl0aWVzLmluY2x1ZGVzKCJ1c2VyOm1hbmFnZSIpJiZhd2FpdCBuKHUpPD0xKXRocm93IHMoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IkNhbm5vdCByZW1vdmUgdGhlIGxhc3Qgb3JnYW5pemF0aW9uIGFkbWluIn0pO3JldHVybiBhd2FpdCBvLmRlbGV0ZShhKS53aGVyZShlKGkoYS51c2VyX2lkLGMpLGkoYS5vcmdhbml6YXRpb25faWQsdSkpKSxhd2FpdCBtKGMpLHtzdWNjZXNzOiEwfX0pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/organizations/switch.post.mjs": "aW1wb3J0e3IgYXMgcyxjIGFzIHQsSSBhcyBvLEogYXMgYSxkIGFzIGksaCBhcyByLHUgYXMgZX1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtnIGFzIG0saSBhcyBkfWZyb20iLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7YiBhcyBwLHcgYXMgdX1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydHtTIGFzIGZ9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbjIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3Qgdz1uKGFzeW5jKG4sdyk9Pntjb25zdHtvcmdhbml6YXRpb25faWQ6Y309YXdhaXQgcyhuLGYucGFyc2UpO2lmKGM9PT1hd2FpdCBtKCkpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiQ2Fubm90IHN3aXRjaCBpbnRvIHRoZSBzeXN0ZW0gb3JnYW5pemF0aW9uIn0pO2lmKCFhd2FpdCBkKHcuaWQsYykpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiTm90IGEgbWVtYmVyIG9mIHRoYXQgb3JnYW5pemF0aW9uIn0pO2NvbnN0IGg9byhuLCJzZXNzaW9uaWQiKXx8YShuLCJ4LXNlc3Npb24taWQiKTtpZighaCl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7Y29uc3QgZz1hd2FpdCBpLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnIoZS5pZCx3LmlkKX0pO2lmKCFnKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlVzZXIgbm90IGZvdW5kIn0pO2NvbnN0IHo9YXdhaXQgcChnLHtwcm92aWRlcjp3LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOmMsaW1wZXJzb25hdG9yOncuaW1wZXJzb25hdG9yfSk7cmV0dXJuIGF3YWl0IHUoaCx6KSx6fSk7ZXhwb3J0e3cgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXN3aXRjaC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/payments/billing/balance.get.mjs": "aW1wb3J0e2MgYXMgbyxhNSBhcyBzfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyB0fWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgcj10KFsiYmlsbGluZzpyZWFkIl0sYXN5bmModCx7c2Vzc2lvbjpyfSk9Pntjb25zdCBpPXIuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWkpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtyZXR1cm57YmFsYW5jZTphd2FpdCBzKGkpfX0pO2V4cG9ydHtyIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1iYWxhbmNlLmdldC5tanMubWFwCg==", "chunks/routes/api/payments/billing/transactions.get.mjs": "aW1wb3J0e2MgYXMgdCxhMyBhcyBvLGQgYXMgcyxoIGFzIGEscCBhcyBpfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3QgYXMgZX1mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hNC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG09cihbImJpbGxpbmc6cmVhZCJdLGFzeW5jKHIse3Nlc3Npb246bX0pPT57Y29uc3Qgbj1tLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFuKXRocm93IHQoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3QgcD1vKHIpLGQ9TWF0aC5tYXgoMSxOdW1iZXIocC5wYWdlKXx8MSksYz1NYXRoLm1pbig1MCxNYXRoLm1heCgxLE51bWJlcihwLmxpbWl0KXx8MjApKSxmPShkLTEpKmM7cmV0dXJue2l0ZW1zOmF3YWl0IHMuc2VsZWN0KCkuZnJvbShlKS53aGVyZShhKGUub3JnYW5pemF0aW9uX2lkLG4pKS5vcmRlckJ5KGkoZS5jcmVhdGVkX2F0KSkubGltaXQoYykub2Zmc2V0KGYpLHBhZ2U6ZCxsaW1pdDpjfX0pO2V4cG9ydHttIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD10cmFuc2FjdGlvbnMuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/payments/sepay/checkout.post.mjs": "aW1wb3J0e3YgYXMgYSxZIGFzIHQsYyBhcyBuLHIgYXMgZSxMIGFzIG8sZCBhcyByLGE2IGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7QyBhcyBtfWZyb20iLi4vLi4vLi4vLi4vXy9iaWxsaW5nLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7ZnVuY3Rpb24gYnVpbGRTZXBheVFyVXJsKG4sZSl7Y29uc3Qgbz1hKCkscj1vLnNlcGF5VHJhbnNhY3Rpb25QcmVmaXh8fCJTUCI7cmV0dXJuIHQoImh0dHBzOi8vcXIuc2VwYXkudm4vaW1nIix7YWNjOm8uc2VwYXlCYW5rTnVtYmVyLGJhbms6by5zZXBheUJhbmtOYW1lLGFtb3VudDpTdHJpbmcobiksZGVzOmAke3J9JHtlfWAsdGVtcGxhdGU6ImNvbXBhY3QiLGRvd25sb2FkOiJmYWxzZSJ9KX1mdW5jdGlvbiBiYW5rSW5mbygpe2NvbnN0IHQ9YSgpO3JldHVybntiYW5rTmFtZTp0LnNlcGF5QmFua05hbWUsYWNjb3VudE51bWJlcjp0LnNlcGF5QmFua051bWJlcixwcmVmaXg6dC5zZXBheVRyYW5zYWN0aW9uUHJlZml4fHwiU1AifX1jb25zdCBwPWkoWyJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKGEse3Nlc3Npb246dH0pPT57Y29uc3QgaT10LmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFpKXRocm93IG4oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7YW1vdW50OnB9PWF3YWl0IGUoYSxtLnBhcnNlKSx1PW8oMTIpLGM9bmV3IERhdGUoRGF0ZS5ub3coKSszNmU1KSxbZF09YXdhaXQgci5pbnNlcnQocykudmFsdWVzKHtvcmdhbml6YXRpb25faWQ6aSx1c2VyX2lkOnQuaWQsdHlwZToidG9wX3VwIixzdGF0dXM6InBlbmRpbmciLGFtb3VudDpwLGdhdGV3YXlfcmVmOnUsZXhwaXJlc19hdDpjfSkucmV0dXJuaW5nKCk7cmV0dXJue3RyYW5zYWN0aW9uSWQ6ZC5pZCxvcmRlckNvZGU6dSxhbW91bnQ6cCxxclVybDpidWlsZFNlcGF5UXJVcmwocCx1KSxiYW5rOmJhbmtJbmZvKCksZXhwaXJlc0F0OmN9fSk7ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNoZWNrb3V0LnBvc3QubWpzLm1hcAo=", "chunks/routes/api/payments/sepay/status.get.mjs": "aW1wb3J0e24gYXMgcyxvLGMgYXMgdCxkIGFzIGEsRiBhcyBpLGggYXMgcixhNiBhcyBlLHMgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2R9ZnJvbSIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG09ZChhc3luYyhkLG0pPT57Y29uc3R7aWQ6cH09YXdhaXQgcyhkLG8oe2lkOm4oKX0pLnBhcnNlKSx1PW0uYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIXUpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBjPWF3YWl0IGEucXVlcnkudHJhbnNhY3Rpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkocihlLmlkLHApLHIoZS5vcmdhbml6YXRpb25faWQsdSkpLGNvbHVtbnM6e2lkOiEwLHN0YXR1czohMH19KTtpZighYyl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJOb3QgZm91bmQifSk7cmV0dXJuIGN9KTtleHBvcnR7bSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdHVzLmdldC5tanMubWFwCg==", "chunks/routes/api/payments/sepay/webhook.post.mjs": "aW1wb3J0e0ggYXMgYSxKIGFzIHQsYTggYXMgZSxjIGFzIHMsciBhcyBuLGQgYXMgbyxoIGFzIGksYTYgYXMgcixGIGFzIHUsUCBhcyBkLGE5IGFzIGMsTyBhcyBwLGFhIGFzIGwsdiBhcyBtfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7UyBhcyBmfWZyb20iLi4vLi4vLi4vLi4vXy9iaWxsaW5nLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IGs9YShhc3luYyBhPT57dmFyIGssZyx3O2NvbnN0IGg9bSgpLF89bnVsbCE9KGs9dChhLCJhdXRob3JpemF0aW9uIikpP2s6IiI7aWYoIWgud2ViaG9va1NpZ25pbmdTZWNyZXR8fCFlKF8sYEFwaWtleSAke2gud2ViaG9va1NpZ25pbmdTZWNyZXR9YCkpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDEsc3RhdHVzTWVzc2FnZToiVW5hdXRob3JpemVkIn0pO2NvbnN0IHk9YXdhaXQgbihhLGYucGFyc2UpO2lmKCJpbiIhPT15LnRyYW5zZmVyVHlwZSlyZXR1cm57b2s6ITAsc2tpcHBlZDoibm90LWluY29taW5nIn07Y29uc3QgYj1oLnNlcGF5VHJhbnNhY3Rpb25QcmVmaXh8fCJTUCIsej1gJHt5LmNvbnRlbnR9ICR7bnVsbCE9KGc9eS5jb2RlKT9nOiIifWAubWF0Y2gobmV3IFJlZ0V4cChgJHtifShbQS1aYS16MC05XSspYCkpLHg9bnVsbD09ej92b2lkIDA6elsxXTtpZigheClyZXR1cm57b2s6ITAsc2tpcHBlZDoibm8tb3JkZXItY29kZSJ9O2NvbnN0IHY9YXdhaXQgby5xdWVyeS50cmFuc2FjdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShyLmdhdGV3YXlfcmVmLHgpfSk7aWYoIXYpcmV0dXJue29rOiEwLHNraXBwZWQ6InVua25vd24tb3JkZXIifTtpZigic3VjY2VzcyI9PT12LnN0YXR1cylyZXR1cm57b2s6ITAsc2tpcHBlZDoiYWxyZWFkeS1wcm9jZXNzZWQifTtpZih2LmV4cGlyZXNfYXQmJnYuZXhwaXJlc19hdDxuZXcgRGF0ZSlyZXR1cm4gYXdhaXQgby51cGRhdGUocikuc2V0KHtzdGF0dXM6ImV4cGlyZWQifSkud2hlcmUodShpKHIuaWQsdi5pZCksZChyLnN0YXR1cywic3VjY2VzcyIpKSkse29rOiEwLHNraXBwZWQ6ImV4cGlyZWQifTtpZih5LnRyYW5zZmVyQW1vdW50PHYuYW1vdW50KXJldHVybntvazohMCxza2lwcGVkOiJhbW91bnQtbWlzbWF0Y2gifTthd2FpdCBvLmJhdGNoKFtvLnVwZGF0ZShyKS5zZXQoe3N0YXR1czoic3VjY2VzcyIsc2VwYXlfZXZlbnRfaWQ6eS5pZCxtZXRhZGF0YTp7dHJhbnNmZXJBbW91bnQ6eS50cmFuc2ZlckFtb3VudH19KS53aGVyZSh1KGkoci5pZCx2LmlkKSxkKHIuc3RhdHVzLCJzdWNjZXNzIikpKSxvLmluc2VydChjKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDp2Lm9yZ2FuaXphdGlvbl9pZCxiYWxhbmNlOnYuYW1vdW50fSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6Yy5vcmdhbml6YXRpb25faWQsc2V0OntiYWxhbmNlOnBgJHtjLmJhbGFuY2V9ICsgJHt2LmFtb3VudH1gfX0pXSk7Y29uc3QgUz0oYXdhaXQgby5xdWVyeS50cmFuc2FjdGlvblRhYmxlLmZpbmRNYW55KHt3aGVyZTp1KGkoci5vcmdhbml6YXRpb25faWQsdi5vcmdhbml6YXRpb25faWQpLGkoci50eXBlLCJ0b3BfdXAiKSxpKHIuc3RhdHVzLCJzdWNjZXNzIikpLGNvbHVtbnM6e2lkOiEwfX0pKS5sZW5ndGg8PTEsJD17b3JnYW5pemF0aW9uSWQ6di5vcmdhbml6YXRpb25faWQsdXNlcklkOm51bGwhPSh3PXYudXNlcl9pZCk/dzpudWxsLHRyYW5zYWN0aW9uSWQ6di5pZCxhbW91bnQ6di5hbW91bnQsaXNGaXJzdFRvcHVwOlN9O3JldHVybiBhd2FpdCBsKCkuaG9va3MuY2FsbEhvb2soImJpbGxpbmc6dG9wdXAtc3VjY2VlZGVkIiwkKSx7b2s6ITB9fSk7ZXhwb3J0e2sgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdlYmhvb2sucG9zdC5tanMubWFwCg==", "chunks/routes/api/products/_id_.delete.mjs": "aW1wb3J0e20gYXMgbyxkIGFzIHMsaCBhcyB0LGMgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgZX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIG19ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTMubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBhPWUoWyJwcm9kdWN0OmRlbGV0ZSIsInByb2R1Y3Q6bWFuYWdlIl0sYXN5bmMgZT0+e2NvbnN0IGE9byhlLCJpZCIpLFtpXT1hd2FpdCBzLmRlbGV0ZShtKS53aGVyZSh0KG0uaWQsYSkpLnJldHVybmluZygpO2lmKCFpKXRocm93IHIoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2R1Y3Qgbm90IGZvdW5kIn0pO3JldHVybntzdWNjZXNzOiEwfX0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLmRlbGV0ZS5tanMubWFwCg==", "chunks/routes/api/products/_id_.get.mjs": "aW1wb3J0e20gYXMgbyxkIGFzIHIsaCBhcyB0LGMgYXMgc31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgZX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTMubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBtPWUoWyJwcm9kdWN0OndyaXRlIiwicHJvZHVjdDptYW5hZ2UiXSxhc3luYyBlPT57Y29uc3QgbT1vKGUsImlkIiksYT1hd2FpdCByLnF1ZXJ5LnByb2R1Y3RUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnQoaS5pZCxtKX0pO2lmKCFhKXRocm93IHMoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2R1Y3Qgbm90IGZvdW5kIn0pO3JldHVybiBhfSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8uZ2V0Lm1qcy5tYXAK", "chunks/routes/api/products/_id_.patch.mjs": "aW1wb3J0e20gYXMgbyxyLGQgYXMgdCxoIGFzIHMsYyBhcyBhfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbX1mcm9tIi4uLy4uLy4uL18vc2NoZW1hMy5tanMiO2ltcG9ydHtVIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL3Byb2R1Y3QubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPWUoWyJwcm9kdWN0OndyaXRlIiwicHJvZHVjdDptYW5hZ2UiXSxhc3luYyBlPT57Y29uc3Qgbj1vKGUsImlkIikscD1hd2FpdCByKGUsaS5wYXJzZSksW2RdPWF3YWl0IHQudXBkYXRlKG0pLnNldChwKS53aGVyZShzKG0uaWQsbikpLnJldHVybmluZygpO2lmKCFkKXRocm93IGEoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2R1Y3Qgbm90IGZvdW5kIn0pO3JldHVybiBkfSk7ZXhwb3J0e24gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8ucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/projects/_id/members/_userId_.delete.mjs": "aW1wb3J0e20gYXMgcyxkIGFzIG8sRiBhcyB0LGggYXMgZSxjIGFzIHJ9ZnJvbSIuLi8uLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhLGEgYXMgbn1mcm9tIi4uLy4uLy4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG09aShbInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246bX0pPT57Y29uc3QgZD1zKGksImlkIikscD1zKGksInVzZXJJZCIpLGM9bS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYXdhaXQgby5xdWVyeS5wcm9qZWN0VGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KGUoYS5pZCxkKSxlKGEub3JnYW5pemF0aW9uX2lkLGMpKX0pKXRocm93IHIoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2plY3Qgbm90IGZvdW5kIn0pO2NvbnN0W3VdPWF3YWl0IG8uZGVsZXRlKG4pLndoZXJlKHQoZShuLnByb2plY3RfaWQsZCksZShuLnVzZXJfaWQscCkpKS5yZXR1cm5pbmcoKTtpZighdSl0aHJvdyByKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJNZW1iZXIgbm90IGZvdW5kIGluIHRoaXMgcHJvamVjdCJ9KTtyZXR1cm57c3VjY2VzczohMH19KTtleHBvcnR7bSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9X3VzZXJJZF8uZGVsZXRlLm1qcy5tYXAK", "chunks/routes/api/projects/_id/members.post.mjs": "aW1wb3J0e20gYXMgbyxyLGQgYXMgdCxGIGFzIHMsaCBhcyBlLGMgYXMgaX1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgYX1mcm9tIi4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIG4sYSBhcyBtfWZyb20iLi4vLi4vLi4vLi4vXy9zY2hlbWEyLm1qcyI7aW1wb3J0e0EgYXMgcH1mcm9tIi4uLy4uLy4uLy4uL18vcHJvamVjdC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGQ9YShbInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdLGFzeW5jKGEse3Nlc3Npb246ZH0pPT57Y29uc3QgYz1vKGEsImlkIiksaj1kLmFjdGl2ZU9yZ2FuaXphdGlvbklkLHU9YXdhaXQgcihhLHAucGFyc2UpO2lmKCFhd2FpdCB0LnF1ZXJ5LnByb2plY3RUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnMoZShuLmlkLGMpLGUobi5vcmdhbml6YXRpb25faWQsaikpfSkpdGhyb3cgaSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiUHJvamVjdCBub3QgZm91bmQifSk7Y29uc3RbX109YXdhaXQgdC5pbnNlcnQobSkudmFsdWVzKHtwcm9qZWN0X2lkOmMsdXNlcl9pZDp1LnVzZXJfaWQscm9sZTp1LnJvbGV9KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbbS5wcm9qZWN0X2lkLG0udXNlcl9pZF0sc2V0Ontyb2xlOnUucm9sZX19KS5yZXR1cm5pbmcoKTtyZXR1cm4gX30pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1tZW1iZXJzLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/projects/_id/products/_productId_.delete.mjs": "aW1wb3J0e20gYXMgdCxkIGFzIG8sRiBhcyBzLGggYXMgcixjIGFzIGV9ZnJvbSIuLi8uLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhLGIgYXMgbn1mcm9tIi4uLy4uLy4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGQ9aShbInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246ZH0pPT57Y29uc3QgbT10KGksImlkIiksYz10KGksInByb2R1Y3RJZCIpLHA9ZC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYXdhaXQgby5xdWVyeS5wcm9qZWN0VGFibGUuZmluZEZpcnN0KHt3aGVyZTpzKHIoYS5pZCxtKSxyKGEub3JnYW5pemF0aW9uX2lkLHApKX0pKXRocm93IGUoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2plY3Qgbm90IGZvdW5kIn0pO2NvbnN0W3VdPWF3YWl0IG8uZGVsZXRlKG4pLndoZXJlKHMocihuLnByb2plY3RfaWQsbSkscihuLnByb2R1Y3RfaWQsYykpKS5yZXR1cm5pbmcoKTtpZighdSl0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9kdWN0IG5vdCBsaW5rZWQgdG8gdGhpcyBwcm9qZWN0In0pO3JldHVybntzdWNjZXNzOiEwfX0pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1fcHJvZHVjdElkXy5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/projects/_id/products.post.mjs": "aW1wb3J0e20gYXMgdCxyIGFzIG8sZCBhcyByLEYgYXMgcyxoIGFzIGksYyBhcyBhfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbixiIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL3NjaGVtYTIubWpzIjtpbXBvcnR7YSBhcyBwfWZyb20iLi4vLi4vLi4vLi4vXy9wcm9qZWN0Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgZD1lKFsicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl0sYXN5bmMoZSx7c2Vzc2lvbjpkfSk9Pntjb25zdCBjPXQoZSwiaWQiKSx1PWQuYWN0aXZlT3JnYW5pemF0aW9uSWQsaj1hd2FpdCBvKGUscC5wYXJzZSk7aWYoIWF3YWl0IHIucXVlcnkucHJvamVjdFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6cyhpKG4uaWQsYyksaShuLm9yZ2FuaXphdGlvbl9pZCx1KSl9KSl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9qZWN0IG5vdCBmb3VuZCJ9KTtjb25zdFtfXT1hd2FpdCByLmluc2VydChtKS52YWx1ZXMoe3Byb2plY3RfaWQ6Yyxwcm9kdWN0X2lkOmoucHJvZHVjdF9pZCxxdWFudGl0eTpqLnF1YW50aXR5fSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6W20ucHJvamVjdF9pZCxtLnByb2R1Y3RfaWRdLHNldDp7cXVhbnRpdHk6ai5xdWFudGl0eX19KS5yZXR1cm5pbmcoKTtyZXR1cm4gX30pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1wcm9kdWN0cy5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/projects/_id_.delete.mjs": "aW1wb3J0e20gYXMgbyxkIGFzIHMsRiBhcyB0LGggYXMgcixjIGFzIGV9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgbj1pKFsicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl0sYXN5bmMoaSx7c2Vzc2lvbjpufSk9Pntjb25zdCBtPW8oaSwiaWQiKSxwPW4uYWN0aXZlT3JnYW5pemF0aW9uSWQsW2RdPWF3YWl0IHMuZGVsZXRlKGEpLndoZXJlKHQocihhLmlkLG0pLHIoYS5vcmdhbml6YXRpb25faWQscCkpKS5yZXR1cm5pbmcoKTtpZighZCl0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9qZWN0IG5vdCBmb3VuZCJ9KTtyZXR1cm57c3VjY2VzczohMH19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9X2lkXy5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/projects/_id_.get.mjs": "aW1wb3J0e20gYXMgZSxkIGFzIHIsRiBhcyBvLGggYXMgcyxjIGFzIGEsdSBhcyB0fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBpfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbSxhIGFzIG4sYiBhcyBkfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgcD1pKFsicHJvamVjdDpyZWFkIiwicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl0sYXN5bmMoaSx7c2Vzc2lvbjpwfSk9Pntjb25zdCBjPWUoaSwiaWQiKSx1PXAuYWN0aXZlT3JnYW5pemF0aW9uSWQsXz1hd2FpdCByLnF1ZXJ5LnByb2plY3RUYWJsZS5maW5kRmlyc3Qoe3doZXJlOm8ocyhtLmlkLGMpLHMobS5vcmdhbml6YXRpb25faWQsdSkpfSk7aWYoIV8pdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiUHJvamVjdCBub3QgZm91bmQifSk7Y29uc3RbZixqXT1hd2FpdCBQcm9taXNlLmFsbChbci5zZWxlY3Qoe3VzZXJfaWQ6bi51c2VyX2lkLHJvbGU6bi5yb2xlLGFkZGVkX2F0Om4uYWRkZWRfYXQsbmFtZTp0Lm5hbWUsdXNlcm5hbWU6dC51c2VybmFtZSxhdmF0YXI6dC5hdmF0YXJ9KS5mcm9tKG4pLmxlZnRKb2luKHQscyhuLnVzZXJfaWQsdC5pZCkpLndoZXJlKHMobi5wcm9qZWN0X2lkLGMpKSxyLnNlbGVjdCgpLmZyb20oZCkud2hlcmUocyhkLnByb2plY3RfaWQsYykpXSk7cmV0dXJuey4uLl8sbWVtYmVyczpmLHByb2R1Y3RzOmp9fSk7ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8uZ2V0Lm1qcy5tYXAK", "chunks/routes/api/projects/_id_.patch.mjs": "aW1wb3J0e20gYXMgbyxyIGFzIHMsZCBhcyB0LEYgYXMgcixoIGFzIGEsYyBhcyBlfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBpfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbX1mcm9tIi4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydHtVIGFzIG59ZnJvbSIuLi8uLi8uLi9fL3Byb2plY3QubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBwPWkoWyJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXSxhc3luYyhpLHtzZXNzaW9uOnB9KT0+e2NvbnN0IGQ9byhpLCJpZCIpLGM9cC5hY3RpdmVPcmdhbml6YXRpb25JZCxqPWF3YWl0IHMoaSxuLnBhcnNlKSxbZl09YXdhaXQgdC51cGRhdGUobSkuc2V0KGopLndoZXJlKHIoYShtLmlkLGQpLGEobS5vcmdhbml6YXRpb25faWQsYykpKS5yZXR1cm5pbmcoKTtpZighZil0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9qZWN0IG5vdCBmb3VuZCJ9KTtyZXR1cm4gZn0pO2V4cG9ydHtwIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/referral/stats.get.mjs": "aW1wb3J0e2QgYXMgb31mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtFIGFzIHJ9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3QgdD1vKChvLHQpPT5yKHQuaWQpKTtleHBvcnR7dCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdHMuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/roles/_id_.delete.mjs": "aW1wb3J0e2MgYXMgcyxhbCBhcyBvLG8gYXMgdCxzIGFzIGEsZCBhcyBlLEYgYXMgaSxoIGFzIHIsZyBhcyBufWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBtfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3ogYXMgZH1mcm9tIi4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3IgYXMgcH1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7Y29uc3QgdT1tKFsidXNlcjptYW5hZ2UiXSxhc3luYyhtLHtzZXNzaW9uOnV9KT0+e2NvbnN0IGM9dS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0e2lkOmZ9PWF3YWl0IG8obSx0KHtpZDphKCl9KS5wYXJzZSksbD1hd2FpdCBlLnF1ZXJ5LnJvbGVUYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkocihuLmlkLGYpLHIobi5vcmdhbml6YXRpb25faWQsYykpfSk7aWYoIWwpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiUm9sZSBub3QgZm91bmQifSk7aWYobC5pc19zeXN0ZW0pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiU3lzdGVtIHJvbGVzIGNhbm5vdCBiZSBkZWxldGVkIn0pO2NvbnN0IHc9YXdhaXQgZChmKTtyZXR1cm4gYXdhaXQgZS5kZWxldGUobikud2hlcmUocihuLmlkLGYpKSxhd2FpdCBQcm9taXNlLmFsbCh3Lm1hcChzPT5wKHMpKSkse29rOiEwfX0pO2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLmRlbGV0ZS5tanMubWFwCg==", "chunks/routes/api/roles/_id_.patch.mjs": "aW1wb3J0e2MgYXMgcyxhbCBhcyBhLG8gYXMgdCxzIGFzIG8sZCBhcyBlLEYgYXMgaSxoIGFzIHIsZyBhcyBuLHIgYXMgbX1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2R9ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7dSBhcyBwLHYgYXMgdSx6IGFzIGN9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIGZ9ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7VSBhcyB3fWZyb20iLi4vLi4vLi4vXy9yb2xlLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtjb25zdCBnPWQoWyJ1c2VyOm1hbmFnZSJdLGFzeW5jKGQse3Nlc3Npb246Z30pPT57Y29uc3QgbD1nLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFsKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7aWQ6aH09YXdhaXQgYShkLHQoe2lkOm8oKX0pLnBhcnNlKSxfPWF3YWl0IGUucXVlcnkucm9sZVRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShyKG4uaWQsaCkscihuLm9yZ2FuaXphdGlvbl9pZCxsKSl9KTtpZighXyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJSb2xlIG5vdCBmb3VuZCJ9KTtjb25zdCBqPWF3YWl0IG0oZCx3LnBhcnNlKTtpZihqLnBlcm1pc3Npb25zKXtjb25zdCBhPWF3YWl0IHAoZy5pZCxsKSx0PXUoYSxqLnBlcm1pc3Npb25zKTtpZih0Lmxlbmd0aD4wKXRocm93IHMoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6YENhbm5vdCBncmFudDogJHt0LmpvaW4oIiwgIil9YH0pfWlmKF8uaXNfc3lzdGVtJiZ2b2lkIDAhPT1qLm5hbWUpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiU3lzdGVtIHJvbGUgbmFtZSBjYW5ub3QgYmUgY2hhbmdlZCJ9KTtjb25zdFt2XT1hd2FpdCBlLnVwZGF0ZShuKS5zZXQoey4uLmosdXBkYXRlZF9hdDpuZXcgRGF0ZX0pLndoZXJlKHIobi5pZCxoKSkucmV0dXJuaW5nKCkseT1hd2FpdCBjKGgpO3JldHVybiBhd2FpdCBQcm9taXNlLmFsbCh5Lm1hcChzPT5mKHMpKSksdn0pO2V4cG9ydHtnIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/selfhost/audit.get.mjs": "aW1wb3J0e2QgYXMgbyxwIGFzIHMsaCBhcyB0fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3MgYXMgaX1mcm9tIi4uLy4uLy4uL18vc2NoZW1hLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgYT1yKFsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdLGFzeW5jKHIse3Nlc3Npb246YX0pPT57Y29uc3QgZT1hLmFjdGl2ZU9yZ2FuaXphdGlvbklkO3JldHVybnthdWRpdHM6YXdhaXQgby5xdWVyeS5zZWxmaG9zdEF1ZGl0VGFibGUuZmluZE1hbnkoe3doZXJlOnQoaS5vcmdhbml6YXRpb25faWQsZSksb3JkZXJCeTpbcyhpLnN0YXJ0ZWRfYXQpXSxsaW1pdDo1MH0pfX0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hdWRpdC5nZXQubWpzLm1hcAo=", "chunks/routes/api/selfhost/cf-accounts.post.mjs": "aW1wb3J0e3IgYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHt2IGFzIHMsbCBhcyB0fWZyb20iLi4vLi4vLi4vXy9jbG91ZGZsYXJlLm1qcyI7aW1wb3J0e0MgYXMgbX1mcm9tIi4uLy4uLy4uL18vZGVwbG95Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgYT1yKFsic2VsZmhvc3Q6bWFuYWdlIl0sYXN5bmMgcj0+e2NvbnN0e3Rva2VuOmF9PWF3YWl0IG8ocixtLnBhcnNlKTthd2FpdCBzKGEpO3JldHVybnthY2NvdW50czphd2FpdCB0KGEpfX0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jZi1hY2NvdW50cy5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/selfhost/deploy.post.mjs": "aW1wb3J0e3IgYXMgdCxkIGFzIGUsaCBhcyBhLHEgYXMgcyxjIGFzIG8sayBhcyBpLHQgYXMgbix2IGFzIHIsdyBhcyBkfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBsfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2EgYXMgYyxiIGFzIHUscyBhcyBffWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7diBhcyBwLGwgYXMgZixwIGFzIHcsYSBhcyBtLGIgYXMgaCx1IGFzIGcsYyBhcyB5LGUgYXMgdixzIGFzIGt9ZnJvbSIuLi8uLi8uLi9fL2Nsb3VkZmxhcmUubWpzIjtpbXBvcnR7ZyBhcyBifWZyb20iLi4vLi4vLi4vXy9naXRodWIubWpzIjtpbXBvcnR7UyBhcyB4LGcgYXMgen1mcm9tIi4uLy4uLy4uL18vc2VjcmV0cy5tanMiO2ltcG9ydHtEfWZyb20iLi4vLi4vLi4vXy9kZXBsb3kubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBqPWwoWyJzZWxmaG9zdDptYW5hZ2UiXSxhc3luYyhsLHtzZXNzaW9uOmp9KT0+e3ZhciBDLE07Y29uc3QgUj1qLmFjdGl2ZU9yZ2FuaXphdGlvbklkLFQ9YXdhaXQgdChsLEQucGFyc2UpLHE9bmV3IERhdGUsUz1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6YShzLmlkLFIpfSk7aWYoIVN8fFMub3duZXJfaWQhPT1qLmlkKXRocm93IG8oe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6Ik9ubHkgdGhlIG9yZ2FuaXphdGlvbiBvd25lciBjYW4gZGVwbG95IGEgc2VsZi1ob3N0ZWQgaW5zdGFuY2UifSk7Y29uc3QgVT1gc2VsZmhvc3Q6ZGVwbG95LXJsOiR7Un1gO2lmKGF3YWl0IGkuaGFzKFUpKXRocm93IG8oe3N0YXR1c0NvZGU6NDI5LHN0YXR1c01lc3NhZ2U6IkRlcGxveSBhdHRlbXB0ZWQgdG9vIHJlY2VudGx5LiBXYWl0IDYwcy4ifSk7YXdhaXQgaS5zZXQoVSwxLHt0dGw6NjB9KTtjb25zdCAkPWF3YWl0IGUucXVlcnkuc2VsZmhvc3REZXBsb3ltZW50VGFibGUuZmluZEZpcnN0KHt3aGVyZTphKGMub3JnYW5pemF0aW9uX2lkLFIpfSk7aWYoImRlcGxveWluZyI9PT0obnVsbD09JD92b2lkIDA6JC5zdGF0dXMpJiYkLmRlcGxveWVkX2F0JiZEYXRlLm5vdygpLSQuZGVwbG95ZWRfYXQuZ2V0VGltZSgpPDNlNSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwOSxzdGF0dXNNZXNzYWdlOiJBbm90aGVyIGRlcGxveSBpcyBhbHJlYWR5IGluIHByb2dyZXNzIn0pO2xldCBGO2lmKFQudG9rZW4pRj1ULnRva2VuO2Vsc2V7aWYoIShudWxsPT0kP3ZvaWQgMDokLmNmX3Rva2VuX2NpcGhlcnRleHQpfHwhKG51bGw9PSQ/dm9pZCAwOiQuY2ZfdG9rZW5faXYpKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIHRva2VuIHByb3ZpZGVkIGFuZCBubyBzdG9yZWQgdG9rZW4gZm91bmQifSk7Rj1hd2FpdCBuKHtjaXBoZXJ0ZXh0OiQuY2ZfdG9rZW5fY2lwaGVydGV4dCxpdjokLmNmX3Rva2VuX2l2fSl9Y29uc3QgST0obnVsbD09JD92b2lkIDA6JC5kZXBsb3llZF92ZXJzaW9uKT8icmVkZXBsb3kiOiJkZXBsb3kiO2F3YWl0IGUuaW5zZXJ0KGMpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOlIsc3RhdHVzOiJkZXBsb3lpbmciLGRlcGxveWVkX2F0OnF9KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpjLm9yZ2FuaXphdGlvbl9pZCxzZXQ6e3N0YXR1czoiZGVwbG95aW5nIixsYXN0X2Vycm9yOm51bGwsZGVwbG95ZWRfYXQ6cX19KTtsZXQgTj1udWxsO3RyeXtjb25zdCB0PWF3YWl0IHAoRik7aWYoVC5hY2NvdW50X2lkKXtpZighKGF3YWl0IGYoRikpLnNvbWUodD0+dC5pZD09PVQuYWNjb3VudF9pZCkpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiU2VsZWN0ZWQgYWNjb3VudF9pZCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBwcm92aWRlZCB0b2tlbiJ9KTtOPVQuYWNjb3VudF9pZH1lbHNlIGlmKG51bGw9PSQ/dm9pZCAwOiQuY2ZfYWNjb3VudF9pZClOPSQuY2ZfYWNjb3VudF9pZDtlbHNle2NvbnN0IHQ9YXdhaXQgZihGKTtpZih0Lmxlbmd0aD4xKXRocm93IG8oe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6Ik11bHRpcGxlIENsb3VkZmxhcmUgYWNjb3VudHMgYXZhaWxhYmxlIOKAlCBjaG9vc2Ugb25lIGJlZm9yZSBkZXBsb3lpbmciLGRhdGE6e2NvZGU6Im11bHRpcGxlX2FjY291bnRzIixhY2NvdW50czp0fX0pO049dFswXS5pZH1jb25zdCBzPWF3YWl0IHcoRixOKTtpZihzLmxlbmd0aCl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOmBUb2tlbiBtaXNzaW5nIHBlcm1pc3Npb25zOiAke3Muam9pbigiLCAiKX1gfSk7Y29uc3QgaT1hd2FpdCBtKEYsTiksbD1yKCkuZ2l0aHViUmVsZWFzZVJlcG87aWYoIWwpdGhyb3cgbyh7c3RhdHVzQ29kZTo1MDAsc3RhdHVzTWVzc2FnZToiZ2l0aHViUmVsZWFzZVJlcG8gcnVudGltZSBjb25maWcgbm90IHNldCJ9KTtjb25zdHt2ZXJzaW9uOkQsYnVuZGxlOkN9PWF3YWl0IGIobCk7YXdhaXQgaChGLE4saS5kYklkLEMubWlncmF0aW9ucyk7Y29uc3QgTT1gbnV4dC10ZW1wbGF0ZS0ke1Iuc2xpY2UoMCw4KX1gLnNsaWNlKDAsNjMpLFM9Qy5hc3NldHM/YXdhaXQgZyhGLE4sTSxDLmFzc2V0cyk6bnVsbDthd2FpdCB5KEYsTixNLEMsaSxELFMpO2NvbnN0IFU9YXdhaXQgdihGLE4sTSksTz17d29ya2Vyc0RldlVybDpVLHJlbGVhc2VSZXBvOmx9O2Zvcihjb25zdCB0IG9mIHgpe2lmKCF0LmF1dG8pY29udGludWU7Y29uc3QgYT16KHQsTyk7aWYoIWEpY29udGludWU7Y29uc3Qgcz1hd2FpdCBkKGEpO2F3YWl0IGUuaW5zZXJ0KHUpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOlIsa2V5OnQua2V5LGNpcGhlcnRleHQ6cy5jaXBoZXJ0ZXh0LGl2OnMuaXZ9KS5vbkNvbmZsaWN0RG9Ob3RoaW5nKHt0YXJnZXQ6W3Uub3JnYW5pemF0aW9uX2lkLHUua2V5XX0pfWNvbnN0IEE9YXdhaXQgZS5xdWVyeS5zZWxmaG9zdERlcGxveW1lbnRTZWNyZXRUYWJsZS5maW5kTWFueSh7d2hlcmU6YSh1Lm9yZ2FuaXphdGlvbl9pZCxSKX0pO2Zvcihjb25zdCB0IG9mIEEpe2NvbnN0IGU9eC5maW5kKGU9PmUua2V5PT09dC5rZXkpO2lmKCFlKWNvbnRpbnVlO2NvbnN0IGE9YXdhaXQgbih7Y2lwaGVydGV4dDp0LmNpcGhlcnRleHQsaXY6dC5pdn0pO2F3YWl0IGsoRixOLE0sdC5rZXksYSxlLnR5cGUpfWNvbnN0IFc9YXdhaXQgZChGKSxCPXQuZXhwaXJlc19vbj9uZXcgRGF0ZSh0LmV4cGlyZXNfb24pOm51bGw7cmV0dXJuIGF3YWl0IGUudXBkYXRlKGMpLnNldCh7Y2ZfYWNjb3VudF9pZDpOLGNmX3NjcmlwdF9uYW1lOk0sd29ya2Vyc19kZXZfdXJsOlUsZGVwbG95ZWRfdmVyc2lvbjpELGRlcGxveWVkX2F0Om5ldyBEYXRlLHN0YXR1czoiZGVwbG95ZWQiLGNmX3Rva2VuX2NpcGhlcnRleHQ6Vy5jaXBoZXJ0ZXh0LGNmX3Rva2VuX2l2OlcuaXYsY2ZfdG9rZW5fZXhwaXJlc19hdDpudWxsIT1CP0I6dm9pZCAwLGxhc3RfZXJyb3I6bnVsbH0pLndoZXJlKGEoYy5vcmdhbml6YXRpb25faWQsUikpLGF3YWl0IGUuaW5zZXJ0KF8pLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOlIsYWN0b3JfdXNlcl9pZDpqLmlkLGFjdGlvbjpJLHN1Y2Nlc3M6ITAsY2ZfYWNjb3VudF9pZDpOLHN0YXJ0ZWRfYXQ6cSxmaW5pc2hlZF9hdDpuZXcgRGF0ZX0pLHt1cmw6VSx2ZXJzaW9uOkR9fWNhdGNoKHQpe2NvbnN0IHM9KG51bGwhPShNPW51bGwhPShDPW51bGw9PXQ/dm9pZCAwOnQuc3RhdHVzTWVzc2FnZSk/QzpudWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpP006IlVua25vd24gZXJyb3IiKS5zbGljZSgwLDUwMCk7dGhyb3cgYXdhaXQgZS51cGRhdGUoYykuc2V0KHtzdGF0dXM6ImZhaWxlZCIsbGFzdF9lcnJvcjpzfSkud2hlcmUoYShjLm9yZ2FuaXphdGlvbl9pZCxSKSksYXdhaXQgZS5pbnNlcnQoXykudmFsdWVzKHtvcmdhbml6YXRpb25faWQ6UixhY3Rvcl91c2VyX2lkOmouaWQsYWN0aW9uOkksc3VjY2VzczohMSxjZl9hY2NvdW50X2lkOk4sZXJyb3JfbWVzc2FnZTpzLHN0YXJ0ZWRfYXQ6cSxmaW5pc2hlZF9hdDpuZXcgRGF0ZX0pLHR9fSk7ZXhwb3J0e2ogYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlcGxveS5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/selfhost/disconnect.post.mjs": "aW1wb3J0e2QgYXMgdCxoIGFzIGV9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHN9ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7YSBhcyBvLGIgYXMgYSxzIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYS5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG49cyhbInNlbGZob3N0Om1hbmFnZSJdLGFzeW5jKHMse3Nlc3Npb246bn0pPT57Y29uc3Qgcj1uLmFjdGl2ZU9yZ2FuaXphdGlvbklkLG09bmV3IERhdGU7cmV0dXJuIGF3YWl0IHQudXBkYXRlKG8pLnNldCh7Y2ZfdG9rZW5fY2lwaGVydGV4dDpudWxsLGNmX3Rva2VuX2l2Om51bGwsY2ZfdG9rZW5fZXhwaXJlc19hdDpudWxsLHN0YXR1czoiaWRsZSJ9KS53aGVyZShlKG8ub3JnYW5pemF0aW9uX2lkLHIpKSxhd2FpdCB0LmRlbGV0ZShhKS53aGVyZShlKGEub3JnYW5pemF0aW9uX2lkLHIpKSxhd2FpdCB0Lmluc2VydChpKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDpyLGFjdG9yX3VzZXJfaWQ6bi5pZCxhY3Rpb246ImRpc2Nvbm5lY3QiLHN1Y2Nlc3M6ITAsc3RhcnRlZF9hdDptLGZpbmlzaGVkX2F0Om5ldyBEYXRlfSkse3N1Y2Nlc3M6ITB9fSk7ZXhwb3J0e24gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRpc2Nvbm5lY3QucG9zdC5tanMubWFwCg==", "chunks/routes/api/selfhost/secrets.get.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIG99ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7YiBhcyBzfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7UyBhcyByfWZyb20iLi4vLi4vLi4vXy9zZWNyZXRzLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgYT1vKFsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdLGFzeW5jKG8se3Nlc3Npb246YX0pPT57Y29uc3QgaT1hLmFjdGl2ZU9yZ2FuaXphdGlvbklkLG09YXdhaXQgZS5xdWVyeS5zZWxmaG9zdERlcGxveW1lbnRTZWNyZXRUYWJsZS5maW5kTWFueSh7d2hlcmU6dChzLm9yZ2FuaXphdGlvbl9pZCxpKSxjb2x1bW5zOntrZXk6ITAsdXBkYXRlZF9hdDohMH19KSxuPW5ldyBNYXAobS5tYXAoZT0+W2Uua2V5LGUudXBkYXRlZF9hdF0pKTtyZXR1cm57aXRlbXM6ci5tYXAoZT0+e3ZhciB0O3JldHVybntrZXk6ZS5rZXksbGFiZWw6ZS5sYWJlbCxkZXNjcmlwdGlvbjplLmRlc2NyaXB0aW9uLGNhdGVnb3J5OmUuY2F0ZWdvcnksdHlwZTplLnR5cGUsaXNBdXRvOiEhZS5hdXRvLGlzU2V0Om4uaGFzKGUua2V5KSx1cGRhdGVkQXQ6bnVsbCE9KHQ9bi5nZXQoZS5rZXkpKT90Om51bGx9fSl9fSk7ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlY3JldHMuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/selfhost/secrets.patch.mjs": "aW1wb3J0e3IgYXMgdCxkIGFzIGUsaCBhcyBvLHEgYXMgcyxjIGFzIGEsdyBhcyBpLHQgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtiIGFzIGMsYSBhcyBkfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7cyBhcyBtfWZyb20iLi4vLi4vLi4vXy9jbG91ZGZsYXJlLm1qcyI7aW1wb3J0e2kgYXMgcCxmfWZyb20iLi4vLi4vLi4vXy9zZWNyZXRzLm1qcyI7aW1wb3J0e1AgYXMgbH1mcm9tIi4uLy4uLy4uL18vc2VjcmV0Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgXz1uKFsic2VsZmhvc3Q6bWFuYWdlIl0sYXN5bmMobix7c2Vzc2lvbjpffSk9Pntjb25zdCB1PV8uYWN0aXZlT3JnYW5pemF0aW9uSWQsaD1hd2FpdCB0KG4sbC5wYXJzZSksdz1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6byhzLmlkLHUpfSk7aWYoIXd8fHcub3duZXJfaWQhPT1fLmlkKXRocm93IGEoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6Ik9ubHkgdGhlIG9yZ2FuaXphdGlvbiBvd25lciBjYW4gbW9kaWZ5IGRlcGxveW1lbnQgc2VjcmV0cyJ9KTtjb25zdCB5PWgudXBkYXRlcy5maWx0ZXIodD0+IXAodC5rZXkpKS5tYXAodD0+dC5rZXkpO2lmKHkubGVuZ3RoKXRocm93IGEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6YFVua25vd24gc2VjcmV0IGtleShzKTogJHt5LmpvaW4oIiwgIil9YH0pO2Zvcihjb25zdCB0IG9mIGgudXBkYXRlcyl7Y29uc3Qgbz1hd2FpdCBpKHQudmFsdWUpO2F3YWl0IGUuaW5zZXJ0KGMpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOnUsa2V5OnQua2V5LGNpcGhlcnRleHQ6by5jaXBoZXJ0ZXh0LGl2Om8uaXZ9KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbYy5vcmdhbml6YXRpb25faWQsYy5rZXldLHNldDp7Y2lwaGVydGV4dDpvLmNpcGhlcnRleHQsaXY6by5pdix1cGRhdGVkX2F0Om5ldyBEYXRlfX0pfWNvbnN0IHY9YXdhaXQgZS5xdWVyeS5zZWxmaG9zdERlcGxveW1lbnRUYWJsZS5maW5kRmlyc3Qoe3doZXJlOm8oZC5vcmdhbml6YXRpb25faWQsdSl9KTtsZXQgaz0wO2lmKChudWxsPT12P3ZvaWQgMDp2LmNmX2FjY291bnRfaWQpJiYobnVsbD09dj92b2lkIDA6di5jZl9zY3JpcHRfbmFtZSkmJihudWxsPT12P3ZvaWQgMDp2LmNmX3Rva2VuX2NpcGhlcnRleHQpJiYobnVsbD09dj92b2lkIDA6di5jZl90b2tlbl9pdikpe2NvbnN0IHQ9YXdhaXQgcih7Y2lwaGVydGV4dDp2LmNmX3Rva2VuX2NpcGhlcnRleHQsaXY6di5jZl90b2tlbl9pdn0pO2Zvcihjb25zdCBlIG9mIGgudXBkYXRlcyl7Y29uc3Qgbz1mKGUua2V5KTtvJiYoYXdhaXQgbSh0LHYuY2ZfYWNjb3VudF9pZCx2LmNmX3NjcmlwdF9uYW1lLGUua2V5LGUudmFsdWUsby50eXBlKSxrKyspfX1yZXR1cm57dXBkYXRlZDpoLnVwZGF0ZXMubGVuZ3RoLHB1c2hlZFRvQ2xvdWRmbGFyZTprfX0pO2V4cG9ydHtfIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zZWNyZXRzLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/selfhost/status.get.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIG8sdiBhcyBzLHggYXMgdH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgYX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHthIGFzIHJ9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYS5tanMiO2ltcG9ydHthIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL2dpdGh1Yi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG49YShbInNlbGZob3N0OnJlYWQiLCJzZWxmaG9zdDptYW5hZ2UiXSxhc3luYyhhLHtzZXNzaW9uOm59KT0+e2NvbnN0IG09bi5hY3RpdmVPcmdhbml6YXRpb25JZCxsPWF3YWl0IGUucXVlcnkuc2VsZmhvc3REZXBsb3ltZW50VGFibGUuZmluZEZpcnN0KHt3aGVyZTpvKHIub3JnYW5pemF0aW9uX2lkLG0pfSksZD1zKCkuZ2l0aHViUmVsZWFzZVJlcG8scD1kP2F3YWl0IHQoInNlbGZob3N0OmxhdGVzdC12ZXJzaW9uIiwoKT0+aShkKSwzNjAwKTpudWxsO2lmKCFsKXJldHVybntzdGF0dXM6ImlkbGUiLGxhdGVzdF92ZXJzaW9uOnAsdXBkYXRlX2F2YWlsYWJsZTohMSxoYXNfc3RvcmVkX3Rva2VuOiExfTtjb25zdHtjZl90b2tlbl9jaXBoZXJ0ZXh0Ol8sY2ZfdG9rZW5faXY6ZiwuLi5ofT1sO3JldHVybnsuLi5oLGxhdGVzdF92ZXJzaW9uOnAsdXBkYXRlX2F2YWlsYWJsZTohKCFwfHwhbC5kZXBsb3llZF92ZXJzaW9ufHxwPT09bC5kZXBsb3llZF92ZXJzaW9uKSxoYXNfc3RvcmVkX3Rva2VuOiEoIV98fCFmKX19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdHVzLmdldC5tanMubWFwCg==", "chunks/routes/api/selfhost/test-email.post.mjs": "aW1wb3J0e3IgYXMgZSxkIGFzIG8saCBhcyByLGMgYXMgc31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHthfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7VCBhcyBpfWZyb20iLi4vLi4vLi4vXy9zZWNyZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPXQoWyJzZWxmaG9zdDptYW5hZ2UiXSxhc3luYyh0LHtzZXNzaW9uOm59KT0+e2F3YWl0IGUodCxpLnBhcnNlKTtjb25zdCBtPW4uYWN0aXZlT3JnYW5pemF0aW9uSWQsZD1hd2FpdCBvLnF1ZXJ5LnNlbGZob3N0RGVwbG95bWVudFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6cihhLm9yZ2FuaXphdGlvbl9pZCxtKX0pO2lmKCEobnVsbD09ZD92b2lkIDA6ZC53b3JrZXJzX2Rldl91cmwpKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBkZXBsb3ltZW50IGZvdW5kIn0pO2NvbnN0IGw9YXdhaXQgZmV0Y2goZC53b3JrZXJzX2Rldl91cmwse21ldGhvZDoiR0VUIixyZWRpcmVjdDoibWFudWFsIn0pO3JldHVybntyZWFjaGFibGU6bC5va3x8MzAyPT09bC5zdGF0dXMsc3RhdHVzOmwuc3RhdHVzLHdvcmtlclVybDpkLndvcmtlcnNfZGV2X3VybCxub3RlOiJUbyB2ZXJpZnkgU01UUCBlbmQtdG8tZW5kLCBzaWduIHVwIG9uIHRoZSBkZXBsb3llZCBVUkwgYWJvdmUgYW5kIGNvbmZpcm0gdGhlIHdlbGNvbWUvdmVyaWZpY2F0aW9uIGVtYWlsIGFycml2ZXMuIn19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGVzdC1lbWFpbC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/session/refresh.post.mjs": "aW1wb3J0e0kgYXMgcyxKIGFzIG8sYyBhcyB0LGQgYXMgYSxoIGFzIGksdSBhcyByfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e2kgYXMgbixkfWZyb20iLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7YiBhcyBtLHcgYXMgcH1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCB1PWUoYXN5bmMoZSx1KT0+e2NvbnN0IGY9cyhlLCJzZXNzaW9uaWQiKXx8byhlLCJ4LXNlc3Npb24taWQiKTtpZighZil0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7Y29uc3QgYz1hd2FpdCBhLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkoci5pZCx1LmlkKX0pO2lmKCFjKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlVzZXIgbm90IGZvdW5kIn0pO2xldCB3PXUuYWN0aXZlT3JnYW5pemF0aW9uSWQ7dyYmIWF3YWl0IG4odS5pZCx3KSYmKHc9YXdhaXQgZCh1LmlkKSk7Y29uc3QgaD1hd2FpdCBtKGMse3Byb3ZpZGVyOnUucHJvdmlkZXIsYWN0aXZlT3JnYW5pemF0aW9uSWQ6dyxpbXBlcnNvbmF0b3I6dS5pbXBlcnNvbmF0b3J9KTtyZXR1cm4gYXdhaXQgcChmLGgpLGh9KTtleHBvcnR7dSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVmcmVzaC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/support/index.get.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtUIGFzIHIsZCBhcyBpfWZyb20iLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBzPXQoYXN5bmModCxzKT0+e2NvbnN0e29mZnNldDptLGxpbWl0OmV9PWF3YWl0IG8odCxyLnBhcnNlKTtyZXR1cm4gaShzLmlkLG0sZSl9KTtleHBvcnR7cyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0Lm1qcy5tYXAK", "chunks/routes/api/support/index.post.mjs": "aW1wb3J0e2MgYXMgbyxyIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHJ9ZnJvbSIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7QyBhcyBzLGUgYXMgaX1mcm9tIi4uLy4uLy4uL18vdGlja2V0Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3QgZT1yKGFzeW5jKHIsZSk9Pntjb25zdCBhPXIuY29udGV4dC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IG49YXdhaXQgdChyLHMucGFyc2UpO3JldHVybiBpKHt1c2VySWQ6ZS5pZCxvcmdhbml6YXRpb25JZDphLGtpbmQ6bi5raW5kLGNhdGVnb3J5Om4uY2F0ZWdvcnksc3ViamVjdDpuLnN1YmplY3QsYm9keTpuLmJvZHl9KX0pO2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/support/tickets/_id/messages.post.mjs": "aW1wb3J0e20gYXMgbyxjIGFzIHMsciBhcyB0fWZyb20iLi4vLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e1AgYXMgaSxjIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL25vdGlmaWNhdGlvbi5tanMiO2NvbnN0IGU9cihhc3luYyhyLGUpPT57Y29uc3QgYT1vKHIsImlkIik7aWYoIWEpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpZCJ9KTtjb25zdHtib2R5Om59PWF3YWl0IHQocixpLnBhcnNlKTtyZXR1cm4gbShlLmlkLGEsbil9KTtleHBvcnR7ZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVzc2FnZXMucG9zdC5tanMubWFwCg==", "chunks/routes/api/support/tickets/index.get.mjs": "aW1wb3J0e20gYXMgbyxjIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7YiBhcyBpfWZyb20iLi4vLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCByPXQoYXN5bmModCxyKT0+e2NvbnN0IG09byh0LCJpZCIpO2lmKCFtKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik1pc3NpbmcgaWQifSk7cmV0dXJuIGkoci5pZCxtKX0pO2V4cG9ydHtyIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQubWpzLm1hcAo=", "chunks/routes/api/system/dispatch/options.get.mjs": "aW1wb3J0e2QgYXMgb31mcm9tIi4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtnIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL2Rpc3BhdGNoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2NvbnN0IHI9byhbInN5c3RlbTptYW5hZ2UiXSwoKT0+bSgpKTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3B0aW9ucy5nZXQubWpzLm1hcAo=", "chunks/routes/api/system/dispatch/preview.post.mjs": "aW1wb3J0e3IgYXMgb31mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtyIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9fL2Rpc3BhdGNoLm1qcyI7aW1wb3J0e0QgYXMgcn1mcm9tIi4uLy4uLy4uLy4uL18vZGlzcGF0Y2gyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2NvbnN0IG09dChbInN5c3RlbTptYW5hZ2UiXSxhc3luYyB0PT57Y29uc3QgbT1hd2FpdCBvKHQsci5wYXJzZSkse2VuYWJsZWQ6ZSxza2lwcGVkQ291bnQ6YSx0b3RhbDppfT1hd2FpdCBzKG0pO3JldHVybnt0b3RhbDppLGVuYWJsZWQ6ZS5sZW5ndGgsc2tpcHBlZDphfX0pO2V4cG9ydHttIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1wcmV2aWV3LnBvc3QubWpzLm1hcAo=", "chunks/routes/api/system/dispatch/send.post.mjs": "aW1wb3J0e3IgYXMgdCxrIGFzIHMsYyBhcyBlfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBvfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3MgYXMgYX1mcm9tIi4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2ltcG9ydHtyIGFzIGksYyBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9kaXNwYXRjaC5tanMiO2ltcG9ydHthIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL2Rpc3BhdGNoMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG49byhbInN5c3RlbTptYW5hZ2UiXSxhc3luYyhvLHtzZXNzaW9uOm59KT0+e2NvbnN0e2ZpbHRlcjpsLHN1YmplY3Q6cCxib2R5OmN9PWF3YWl0IHQobyxtLnBhcnNlKSxkPWByYXRlbGltaXQ6ZGlzcGF0Y2gtc2VuZDoke24uaWR9YCxmPWF3YWl0IHMuZ2V0KGQpfHwwO2lmKGY+PTEwKXRocm93IGUoe3N0YXR1c0NvZGU6NDI5LHN0YXR1c01lc3NhZ2U6IkRpc3BhdGNoIGxpbWl0IHJlYWNoZWQuIFRyeSBhZ2FpbiBsYXRlci4ifSk7Y29uc3R7ZW5hYmxlZDp1LHNraXBwZWRDb3VudDpoLHRvdGFsOnd9PWF3YWl0IGkobCk7aWYoMD09PXcpdGhyb3cgZSh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gcmVjaXBpZW50cyBtYXRjaCB0aGlzIGZpbHRlci4ifSk7aWYodS5sZW5ndGg+NTAwKXRocm93IGUoe3N0YXR1c0NvZGU6NDEzLHN0YXR1c01lc3NhZ2U6YFRvbyBtYW55IHJlY2lwaWVudHMgKCR7dS5sZW5ndGh9KS4gTmFycm93IHRoZSBmaWx0ZXIgdG8gNTAwIG9yIGZld2VyLmB9KTthd2FpdCBzLnNldChkLGYrMSx7dHRsOjM2MDB9KTtjb25zdCBnPXIocCxjKTtsZXQgaj0wLF89MDtmb3IobGV0IHQ9MDt0PHUubGVuZ3RoO3QrPTIwKXtjb25zdCBzPXUuc2xpY2UodCx0KzIwKSxlPWF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChzLm1hcCh0PT5hKHQse3N1YmplY3Q6cCxodG1sOmd9KSkpO2Zvcihjb25zdCB0IG9mIGUpImZ1bGZpbGxlZCI9PT10LnN0YXR1cyYmdC52YWx1ZS5zZW50P2orKzpfKyt9cmV0dXJue3NlbnQ6aixmYWlsZWQ6Xyxza2lwcGVkOmgsdG90YWw6d319KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VuZC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/system/index.get.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgc31mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtBIGFzIHQsbCBhcyBpfWZyb20iLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3Qgcj1zKFsic3VwcG9ydDptYW5hZ2UiXSxhc3luYyhzLHtzZXNzaW9uOnJ9KT0+YXN5bmMgZnVuY3Rpb24ocyxyKXtjb25zdCBtPWF3YWl0IG8ocyx0LnBhcnNlKTtyZXR1cm4gaSh7YWdlbnRJZDpyLG9mZnNldDptLm9mZnNldCxsaW1pdDptLmxpbWl0LHN0YXR1czptLnN0YXR1cyxraW5kOm0ua2luZCxtaW5lT25seTptLm1pbmVPbmx5LHNlYXJjaDptLnNlYXJjaH0pfShzLHIuaWQpKTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0Lm1qcy5tYXAK", "chunks/routes/api/system/tickets/_id/messages.post.mjs": "aW1wb3J0e20gYXMgcyxjIGFzIG8sciBhcyB0fWZyb20iLi4vLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e1AgYXMgaSxhIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBhPXIoWyJzdXBwb3J0Om1hbmFnZSJdLGFzeW5jKHIse3Nlc3Npb246YX0pPT57Y29uc3QgZT1zKHIsImlkIik7aWYoIWUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpZCJ9KTtjb25zdHtib2R5Om59PWF3YWl0IHQocixpLnBhcnNlKTtyZXR1cm4gbShhLmlkLGUsbil9KTtleHBvcnR7YSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVzc2FnZXMucG9zdC5tanMubWFwCg==", "chunks/routes/api/system/tickets/index.get.mjs": "aW1wb3J0e20gYXMgbyxjIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7ZyBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3QgaT10KFsic3VwcG9ydDptYW5hZ2UiXSxhc3luYyB0PT57Y29uc3QgaT1vKHQsImlkIik7aWYoIWkpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpZCJ9KTtyZXR1cm4gcihpKX0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQubWpzLm1hcAo=", "chunks/routes/api/system/tickets/index.patch.mjs": "aW1wb3J0e20gYXMgcyxjIGFzIG8sciBhcyB0fWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e1UgYXMgaSx1IGFzIGF9ZnJvbSIuLi8uLi8uLi8uLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBtPXIoWyJzdXBwb3J0Om1hbmFnZSJdLGFzeW5jIHI9Pntjb25zdCBtPXMociwiaWQiKTtpZighbSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJNaXNzaW5nIGlkIn0pO3JldHVybiBhc3luYyBmdW5jdGlvbihzLG8pe2NvbnN0IHI9YXdhaXQgdChzLGkucGFyc2UpO3JldHVybiBhKG8se3N0YXR1czpyLnN0YXR1cyxhc3NpZ25lZFRvOnIuYXNzaWduZWRUb30pfShyLG0pfSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/user/avatar.post.mjs": "aW1wb3J0e2FuIGFzIGEsYyBhcyB0LGFvIGFzIHMsYXAgYXMgZSxkIGFzIG8saCBhcyBpLHUgYXMgcixJIGFzIG4sSiBhcyBkfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBtfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e3B9ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgdT1tKGFzeW5jKG0sdSk9Pnt2YXIgbDtjb25zdCBjPWF3YWl0IGEobSksdj1udWxsPT1jP3ZvaWQgMDpjLmZpbmQoYT0+ImZpbGUiPT09YS5uYW1lJiZhLmZpbGVuYW1lKTtpZighKG51bGw9PShsPW51bGw9PXY/dm9pZCAwOnYuZGF0YSk/dm9pZCAwOmwubGVuZ3RoKSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBmaWxlIHVwbG9hZGVkIn0pO2lmKHYuZGF0YS5sZW5ndGg+MjA5NzE1Mil0aHJvdyB0KHtzdGF0dXNDb2RlOjQxMyxzdGF0dXNNZXNzYWdlOiJBdmF0YXIgbXVzdCBiZSDiiaQgMk1CIn0pO2NvbnN0IGY9cyh2LmRhdGEpO2lmKCFmKXRocm93IHQoe3N0YXR1c0NvZGU6NDE1LHN0YXR1c01lc3NhZ2U6IlVuc3VwcG9ydGVkIGltYWdlIHR5cGUgKFBORy9KUEVHL0dJRi9XRUJQIG9ubHkpIn0pO2NvbnN0IGc9YGF2YXRhcnMvJHt1LmlkfS8ke2NyeXB0by5yYW5kb21VVUlEKCl9LiR7Zi5leHR9YDthd2FpdCBlLnB1dChnLHYuZGF0YSx7Y29udGVudFR5cGU6Zi50eXBlfSk7Y29uc3QgaD1hd2FpdCBvLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkoci5pZCx1LmlkKSxjb2x1bW5zOnthdmF0YXI6ITB9fSksW3ddPWF3YWl0IG8udXBkYXRlKHIpLnNldCh7YXZhdGFyOmAvaW1hZ2VzLyR7Z31gfSkud2hlcmUoaShyLmlkLHUuaWQpKS5yZXR1cm5pbmcoKSx5PW51bGw9PWg/dm9pZCAwOmguYXZhdGFyOyhudWxsPT15P3ZvaWQgMDp5LnN0YXJ0c1dpdGgoIi9pbWFnZXMvYXZhdGFycy8iKSkmJmF3YWl0IGUuZGVsKHkucmVwbGFjZSgiL2ltYWdlcy8iLCIiKSkuY2F0Y2goKCk9Pnt9KTtjb25zdCBJPW4obSwic2Vzc2lvbmlkIil8fGQobSwieC1zZXNzaW9uLWlkIik7cmV0dXJuIEkmJncmJmF3YWl0IHAobSx3LHtwcm92aWRlcjp1LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOnUuYWN0aXZlT3JnYW5pemF0aW9uSWQsaW1wZXJzb25hdG9yOnUuaW1wZXJzb25hdG9yLHNlc3Npb25JZDpJfSkse2F2YXRhcjp3LmF2YXRhcn19KTtleHBvcnR7dSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXZhdGFyLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/user/notification.get.mjs": "aW1wb3J0e2QgYXMgbyx1IGFzIHIsaCBhcyB0fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBzPXtlbWFpbDohMCxwcm9kdWN0X3VwZGF0ZXM6ITAsd2Vla2x5X2RpZ2VzdDohMSxpbXBvcnRhbnRfdXBkYXRlczohMH0saT1lKGFzeW5jKGUsaSk9Pnt2YXIgbTtjb25zdFtuXT1hd2FpdCBvLnNlbGVjdCh7cHJlZnM6ci5ub3RpZmljYXRpb25fcHJlZnN9KS5mcm9tKHIpLndoZXJlKHQoci5pZCxpLmlkKSkubGltaXQoMSk7cmV0dXJuey4uLnMsLi4ubnVsbCE9KG09bnVsbD09bj92b2lkIDA6bi5wcmVmcyk/bTp7fX19KTtleHBvcnR7aSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm90aWZpY2F0aW9uLmdldC5tanMubWFwCg==", "chunks/routes/api/user/notification.patch.mjs": "aW1wb3J0e3IgYXMgbyxkIGFzIHIsdSBhcyBzLGggYXMgdH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgaX1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtOIGFzIGV9ZnJvbSIuLi8uLi8uLi9fL3VzZXIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGE9aShhc3luYyhpLGEpPT57Y29uc3QgbT1hd2FpdCBvKGksZS5wYXJzZSk7cmV0dXJuIGF3YWl0IHIudXBkYXRlKHMpLnNldCh7bm90aWZpY2F0aW9uX3ByZWZzOm19KS53aGVyZSh0KHMuaWQsYS5pZCkpLG19KTtleHBvcnR7YSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm90aWZpY2F0aW9uLnBhdGNoLm1qcy5tYXAK", "chunks/routes/images/_...pathname_.get.mjs": "aW1wb3J0e2FxIGFzIG8sbSBhcyBzLGMgYXMgdCxhcCBhcyBlfWZyb20iLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3Qgcj0vXig/OmF2YXRhcnN8cHVibGljKVwvLyxhPW8oYXN5bmMgbz0+e2NvbnN0IGE9cyhvLCJwYXRobmFtZSIpfHwiIjtpZighci50ZXN0KGEpfHxhLmluY2x1ZGVzKCIuLiIpKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBmb3VuZCJ9KTtyZXR1cm4gZS5zZXJ2ZShvLGEpfSk7ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV8uLi5wYXRobmFtZV8uZ2V0Lm1qcy5tYXAK", "chunks/routes/renderer.mjs": "aW1wb3J0e2FyIGFzIGUsdiBhcyB0LGFzIGFzIG4sYXQgYXMgcixhdSBhcyBvLGF2IGFzIHMsYXcgYXMgaSxhMyBhcyBhLGMgYXMgbCxheCBhcyBjLGF5IGFzIHUsWiBhcyBwLGFhIGFzIGR9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtpIGFzIGYsYSBhcyBnLEUgYXMgbSxiIGFzIHksaCBhcyB2LGQgYXMgXyxjIGFzIGIsZSBhcyBrLGYgYXMgQyx0IGFzIFMsZyBhcyB3LGogYXMgVCxtIGFzIFIsciBhcyBBLGsgYXMgeCxsIGFzIEUsTiBhcyBQLG4gYXMgJCxvIGFzIE8scCBhcyBOLHEgYXMgSCxzIGFzIE0sdSBhcyBWLHYgYXMgaix3IGFzIEkseCBhcyBELHkgYXMgTCx6IGFzIEYsQSBhcyBCLEIgYXMgVSxDIGFzIFcsRCBhcyB6LEYgYXMgcSxHIGFzIEssSCBhcyBKLEkgYXMgRyxKIGFzIFosSyBhcyBYLEwgYXMgWSxNIGFzIFEsTyBhcyBlZSxQIGFzIHRlLFEgYXMgbmUsUiBhcyByZSxTIGFzIG9lLFQgYXMgc2UsVSBhcyBpZSxWIGFzIGFlLFcgYXMgbGUsWCBhcyBjZSxZIGFzIHVlLFogYXMgcGV9ZnJvbSIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2Z1bmN0aW9uIGdldE1vZHVsZURlcGVuZGVuY2llcyhlLHQpe2lmKHQuX2RlcGVuZGVuY2llc1tlXSlyZXR1cm4gdC5fZGVwZW5kZW5jaWVzW2VdO2NvbnN0IG49dC5fZGVwZW5kZW5jaWVzW2VdPXtzY3JpcHRzOnt9LHN0eWxlczp7fSxwcmVsb2FkOnt9LHByZWZldGNoOnt9fTtpZighdC5tYW5pZmVzdClyZXR1cm4gbjtjb25zdCByPXQubWFuaWZlc3RbZV07aWYoIXIpcmV0dXJuIG47ci5maWxlJiYobi5wcmVsb2FkW2VdPXIsKHIuaXNFbnRyeXx8ci5zaWRlRWZmZWN0cykmJihuLnNjcmlwdHNbZV09cikpO2Zvcihjb25zdCBlIG9mIHIuY3NzfHxbXSluLnN0eWxlc1tlXT1uLnByZWxvYWRbZV09bi5wcmVmZXRjaFtlXT10Lm1hbmlmZXN0W2VdO2Zvcihjb25zdCBlIG9mIHIuYXNzZXRzfHxbXSluLnByZWxvYWRbZV09bi5wcmVmZXRjaFtlXT10Lm1hbmlmZXN0W2VdO2Zvcihjb25zdCBlIG9mIHIuaW1wb3J0c3x8W10pe2NvbnN0IHI9Z2V0TW9kdWxlRGVwZW5kZW5jaWVzKGUsdCk7Zm9yKGNvbnN0IGUgaW4gci5zdHlsZXMpbi5zdHlsZXNbZV09ci5zdHlsZXNbZV07Zm9yKGNvbnN0IGUgaW4gci5wcmVsb2FkKW4ucHJlbG9hZFtlXT1yLnByZWxvYWRbZV07Zm9yKGNvbnN0IGUgaW4gci5wcmVmZXRjaCluLnByZWZldGNoW2VdPXIucHJlZmV0Y2hbZV19Y29uc3Qgbz17fTtmb3IoY29uc3QgZSBpbiBuLnByZWxvYWQpe2NvbnN0IHQ9bi5wcmVsb2FkW2VdO3QucHJlbG9hZCYmKG9bZV09dCl9cmV0dXJuIG4ucHJlbG9hZD1vLG59ZnVuY3Rpb24gZ2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpe2lmKGUuX3JlcXVlc3REZXBlbmRlbmNpZXMpcmV0dXJuIGUuX3JlcXVlc3REZXBlbmRlbmNpZXM7Y29uc3Qgbj1mdW5jdGlvbihlLHQpe2xldCBuPSIiO2NvbnN0IHI9Wy4uLmVdLnNvcnQoKTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyllPjAmJihuKz0iLCIpLG4rPXJbZV07aWYodC5fZGVwZW5kZW5jeVNldHNbbl0pcmV0dXJuIHQuX2RlcGVuZGVuY3lTZXRzW25dO2NvbnN0IG89e3NjcmlwdHM6e30sc3R5bGVzOnt9LHByZWxvYWQ6e30scHJlZmV0Y2g6e319O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9Z2V0TW9kdWxlRGVwZW5kZW5jaWVzKG4sdCk7Zm9yKGNvbnN0IHQgaW4gZS5zY3JpcHRzKW8uc2NyaXB0c1t0XT1lLnNjcmlwdHNbdF07Zm9yKGNvbnN0IHQgaW4gZS5zdHlsZXMpby5zdHlsZXNbdF09ZS5zdHlsZXNbdF07Zm9yKGNvbnN0IHQgaW4gZS5wcmVsb2FkKW8ucHJlbG9hZFt0XT1lLnByZWxvYWRbdF07Zm9yKGNvbnN0IHQgaW4gZS5wcmVmZXRjaClvLnByZWZldGNoW3RdPWUucHJlZmV0Y2hbdF07Zm9yKGNvbnN0IGUgb2YgdC5tYW5pZmVzdD8uW25dPy5keW5hbWljSW1wb3J0c3x8W10pe2NvbnN0IG49Z2V0TW9kdWxlRGVwZW5kZW5jaWVzKGUsdCk7Zm9yKGNvbnN0IGUgaW4gbi5zY3JpcHRzKW8ucHJlZmV0Y2hbZV09bi5zY3JpcHRzW2VdO2Zvcihjb25zdCBlIGluIG4uc3R5bGVzKW8ucHJlZmV0Y2hbZV09bi5zdHlsZXNbZV07Zm9yKGNvbnN0IGUgaW4gbi5wcmVsb2FkKW8ucHJlZmV0Y2hbZV09bi5wcmVsb2FkW2VdfX1jb25zdCBzPXt9O2Zvcihjb25zdCBlIGluIG8ucHJlZmV0Y2gpe2NvbnN0IHQ9by5wcmVmZXRjaFtlXTt0LnByZWZldGNoJiYoc1tlXT10KX1vLnByZWZldGNoPXM7Zm9yKGNvbnN0IGUgaW4gby5wcmVsb2FkKWRlbGV0ZSBvLnByZWZldGNoW2VdO2Zvcihjb25zdCBlIGluIG8uc3R5bGVzKWRlbGV0ZSBvLnByZWxvYWRbZV0sZGVsZXRlIG8ucHJlZmV0Y2hbZV07cmV0dXJuIHQuX2RlcGVuZGVuY3lTZXRzW25dPW8sb30obmV3IFNldChBcnJheS5mcm9tKFsuLi50Ll9lbnRyeXBvaW50cywuLi5lLm1vZHVsZXN8fGUuX3JlZ2lzdGVyZWRDb21wb25lbnRzfHxbXV0pKSx0KTtyZXR1cm4gZS5fcmVxdWVzdERlcGVuZGVuY2llcz1uLG59ZnVuY3Rpb24gcmVuZGVyU3R5bGVzKGUsdCl7Y29uc3R7c3R5bGVzOm59PWdldFJlcXVlc3REZXBlbmRlbmNpZXMoZSx0KTtsZXQgcj0iIjtmb3IoY29uc3QgZSBpbiBuKXtjb25zdCBvPW5bZV07cis9YDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJHt0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9IiBjcm9zc29yaWdpbj5gfXJldHVybiByfWZ1bmN0aW9uIHJlbmRlclJlc291cmNlSGludHMoZSx0KXtjb25zdHtwcmVsb2FkOm4scHJlZmV0Y2g6cn09Z2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpO2xldCBvPSIiO2Zvcihjb25zdCBlIGluIG4pe2NvbnN0IHI9bltlXSxzPXQuYnVpbGRBc3NldHNVUkwoci5maWxlKSxpPXIubW9kdWxlPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCIsYT0ic3R5bGUiPT09ci5yZXNvdXJjZVR5cGV8fCJmb250Ij09PXIucmVzb3VyY2VUeXBlfHwic2NyaXB0Ij09PXIucmVzb3VyY2VUeXBlfHxyLm1vZHVsZT8iIGNyb3Nzb3JpZ2luIjoiIjtyLnJlc291cmNlVHlwZSYmci5taW1lVHlwZT9vKz1gPGxpbmsgcmVsPSIke2l9IiBhcz0iJHtyLnJlc291cmNlVHlwZX0iIHR5cGU9IiR7ci5taW1lVHlwZX0iJHthfSBocmVmPSIke3N9Ij5gOnIucmVzb3VyY2VUeXBlP28rPWA8bGluayByZWw9IiR7aX0iIGFzPSIke3IucmVzb3VyY2VUeXBlfSIke2F9IGhyZWY9IiR7c30iPmA6bys9YDxsaW5rIHJlbD0iJHtpfSIke2F9IGhyZWY9IiR7c30iPmB9Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3Qgbj1yW2VdLHM9dC5idWlsZEFzc2V0c1VSTChuLmZpbGUpLGk9InN0eWxlIj09PW4ucmVzb3VyY2VUeXBlfHwiZm9udCI9PT1uLnJlc291cmNlVHlwZXx8InNjcmlwdCI9PT1uLnJlc291cmNlVHlwZXx8bi5tb2R1bGU/IiBjcm9zc29yaWdpbiI6IiI7bi5yZXNvdXJjZVR5cGUmJm4ubWltZVR5cGU/bys9YDxsaW5rIHJlbD0icHJlZmV0Y2giIGFzPSIke24ucmVzb3VyY2VUeXBlfSIgdHlwZT0iJHtuLm1pbWVUeXBlfSIke2l9IGhyZWY9IiR7c30iPmA6bi5yZXNvdXJjZVR5cGU/bys9YDxsaW5rIHJlbD0icHJlZmV0Y2giIGFzPSIke24ucmVzb3VyY2VUeXBlfSIke2l9IGhyZWY9IiR7c30iPmA6bys9YDxsaW5rIHJlbD0icHJlZmV0Y2giJHtpfSBocmVmPSIke3N9Ij5gfXJldHVybiBvfWZ1bmN0aW9uIHJlbmRlclJlc291cmNlSGVhZGVycyhlLHQpe2NvbnN0e3ByZWxvYWQ6bixwcmVmZXRjaDpyfT1nZXRSZXF1ZXN0RGVwZW5kZW5jaWVzKGUsdCksbz1bXTtmb3IoY29uc3QgZSBpbiBuKXtjb25zdCByPW5bZV07bGV0IHM9YDwke3QuYnVpbGRBc3NldHNVUkwoci5maWxlKX0+OyByZWw9IiR7ci5tb2R1bGU/Im1vZHVsZXByZWxvYWQiOiJwcmVsb2FkIn0iYDtyLnJlc291cmNlVHlwZSYmKHMrPWA7IGFzPSIke3IucmVzb3VyY2VUeXBlfSJgKSxyLm1pbWVUeXBlJiYocys9YDsgdHlwZT0iJHtyLm1pbWVUeXBlfSJgKSwoInN0eWxlIj09PXIucmVzb3VyY2VUeXBlfHwiZm9udCI9PT1yLnJlc291cmNlVHlwZXx8InNjcmlwdCI9PT1yLnJlc291cmNlVHlwZXx8ci5tb2R1bGUpJiYocys9IjsgY3Jvc3NvcmlnaW4iKSxvLnB1c2gocyl9Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3Qgbj1yW2VdO2xldCBzPWA8JHt0LmJ1aWxkQXNzZXRzVVJMKG4uZmlsZSl9PjsgcmVsPSJwcmVmZXRjaCJgO24ucmVzb3VyY2VUeXBlJiYocys9YDsgYXM9IiR7bi5yZXNvdXJjZVR5cGV9ImApLG4ubWltZVR5cGUmJihzKz1gOyB0eXBlPSIke24ubWltZVR5cGV9ImApLCgic3R5bGUiPT09bi5yZXNvdXJjZVR5cGV8fCJmb250Ij09PW4ucmVzb3VyY2VUeXBlfHwic2NyaXB0Ij09PW4ucmVzb3VyY2VUeXBlfHxuLm1vZHVsZSkmJihzKz0iOyBjcm9zc29yaWdpbiIpLG8ucHVzaChzKX1yZXR1cm57bGluazpvLmpvaW4oIiwgIil9fWZ1bmN0aW9uIGdldFByZWxvYWRMaW5rcyhlLHQpe2NvbnN0e3ByZWxvYWQ6bn09Z2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpLHI9W107Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3Qgbz1uW2VdO3IucHVzaCh7cmVsOm8ubW9kdWxlPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCIsYXM6by5yZXNvdXJjZVR5cGUsdHlwZTpvLm1pbWVUeXBlPz9udWxsLGNyb3Nzb3JpZ2luOiJzdHlsZSI9PT1vLnJlc291cmNlVHlwZXx8ImZvbnQiPT09by5yZXNvdXJjZVR5cGV8fCJzY3JpcHQiPT09by5yZXNvdXJjZVR5cGV8fG8ubW9kdWxlPyIiOm51bGwsaHJlZjp0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9KX1yZXR1cm4gcn1mdW5jdGlvbiBnZXRQcmVmZXRjaExpbmtzKGUsdCl7Y29uc3R7cHJlZmV0Y2g6bn09Z2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpLHI9W107Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3Qgbz1uW2VdO3IucHVzaCh7cmVsOiJwcmVmZXRjaCIsYXM6by5yZXNvdXJjZVR5cGUsdHlwZTpvLm1pbWVUeXBlPz9udWxsLGNyb3Nzb3JpZ2luOiJzdHlsZSI9PT1vLnJlc291cmNlVHlwZXx8ImZvbnQiPT09by5yZXNvdXJjZVR5cGV8fCJzY3JpcHQiPT09by5yZXNvdXJjZVR5cGV8fG8ubW9kdWxlPyIiOm51bGwsaHJlZjp0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9KX1yZXR1cm4gcn1mdW5jdGlvbiByZW5kZXJTY3JpcHRzKGUsdCl7Y29uc3R7c2NyaXB0czpufT1nZXRSZXF1ZXN0RGVwZW5kZW5jaWVzKGUsdCk7bGV0IHI9IiI7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3Qgbz1uW2VdO28ubW9kdWxlP3IrPWA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgc3JjPSIke3QuYnVpbGRBc3NldHNVUkwoby5maWxlKX0iIGNyb3Nzb3JpZ2luPjxcL3NjcmlwdD5gOnIrPWA8c2NyaXB0IHNyYz0iJHt0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9IiBkZWZlciBjcm9zc29yaWdpbj48XC9zY3JpcHQ+YH1yZXR1cm4gcn1mdW5jdGlvbiBjcmVhdGVSZW5kZXJlciQxKHQsbil7Y29uc3Qgcj1mdW5jdGlvbih7bWFuaWZlc3Q6dCxwcmVjb21wdXRlZDpuLGJ1aWxkQXNzZXRzVVJMOnJ9KXtpZighdCYmIW4pdGhyb3cgbmV3IEVycm9yKCJFaXRoZXIgbWFuaWZlc3Qgb3IgcHJlY29tcHV0ZWQgZGF0YSBtdXN0IGJlIHByb3ZpZGVkIik7Y29uc3Qgbz17YnVpbGRBc3NldHNVUkw6cnx8ZSxtYW5pZmVzdDp0LHByZWNvbXB1dGVkOm4sdXBkYXRlTWFuaWZlc3Q6dXBkYXRlTWFuaWZlc3QsX2RlcGVuZGVuY2llczp7fSxfZGVwZW5kZW5jeVNldHM6e30sX2VudHJ5cG9pbnRzOltdfTtmdW5jdGlvbiB1cGRhdGVNYW5pZmVzdChlKXtjb25zdCB0PU9iamVjdC5lbnRyaWVzKGUpO28ubWFuaWZlc3Q9ZSxvLl9kZXBlbmRlbmNpZXM9e30sby5fZGVwZW5kZW5jeVNldHM9e30sby5fZW50cnlwb2ludHM9dC5maWx0ZXIoZT0+ZVsxXS5pc0VudHJ5KS5tYXAoKFtlXSk9PmUpfXJldHVybiBuPyhvLl9kZXBlbmRlbmNpZXM9bi5kZXBlbmRlbmNpZXMsby5fZW50cnlwb2ludHM9bi5lbnRyeXBvaW50cyk6dCYmdXBkYXRlTWFuaWZlc3QodCksb30obik7cmV0dXJue3JlbmRlcmVyQ29udGV4dDpyLGFzeW5jIHJlbmRlclRvU3RyaW5nKGUpe2UuX3JlZ2lzdGVyZWRDb21wb25lbnRzPWUuX3JlZ2lzdGVyZWRDb21wb25lbnRzfHxuZXcgU2V0O2NvbnN0IG89YXdhaXQgUHJvbWlzZS5yZXNvbHZlKHQpLnRoZW4oZT0+ImRlZmF1bHQiaW4gZT9lLmRlZmF1bHQ6ZSkscz1hd2FpdCBvKGUpLHdyYXA9dD0+KCk9PnQoZSxyKTtyZXR1cm57aHRtbDphd2FpdCBuLnJlbmRlclRvU3RyaW5nKHMsZSkscmVuZGVyUmVzb3VyY2VIZWFkZXJzOndyYXAocmVuZGVyUmVzb3VyY2VIZWFkZXJzKSxyZW5kZXJSZXNvdXJjZUhpbnRzOndyYXAocmVuZGVyUmVzb3VyY2VIaW50cykscmVuZGVyU3R5bGVzOndyYXAocmVuZGVyU3R5bGVzKSxyZW5kZXJTY3JpcHRzOndyYXAocmVuZGVyU2NyaXB0cyl9fX19ZnVuY3Rpb24gZmxhdEhvb2tzKGUsdD17fSxuKXtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBvPWVbcl0scz1uP2Ake259OiR7cn1gOnI7Im9iamVjdCI9PXR5cGVvZiBvJiZudWxsIT09bz9mbGF0SG9va3Mobyx0LHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBvJiYodFtzXT1vKX1yZXR1cm4gdH1jb25zdCBkZT0oKCk9PntpZihjb25zb2xlLmNyZWF0ZVRhc2spcmV0dXJuIGNvbnNvbGUuY3JlYXRlVGFzaztjb25zdCBlPXtydW46ZT0+ZSgpfTtyZXR1cm4oKT0+ZX0pKCk7ZnVuY3Rpb24gY2FsbEhvb2tzKGUsdCxuLHIpe2ZvcihsZXQgbz1uO288ZS5sZW5ndGg7bys9MSl0cnl7Y29uc3Qgbj1yP3IucnVuKCgpPT5lW29dKC4uLnQpKTplW29dKC4uLnQpO2lmKG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnRoZW4pcmV0dXJuIFByb21pc2UucmVzb2x2ZShuKS50aGVuKCgpPT5jYWxsSG9va3MoZSx0LG8rMSxyKSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1mdW5jdGlvbiBzZXJpYWxUYXNrQ2FsbGVyKGUsdCxuKXtpZihlLmxlbmd0aD4wKXJldHVybiBjYWxsSG9va3MoZSx0LDAsZGUobikpfWZ1bmN0aW9uIHBhcmFsbGVsVGFza0NhbGxlcihlLHQsbil7aWYoZS5sZW5ndGg+MCl7Y29uc3Qgcj1kZShuKTtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAoZT0+ci5ydW4oKCk9PmUoLi4udCkpKSl9fWZ1bmN0aW9uIGNhbGxFYWNoV2l0aChlLHQpe2Zvcihjb25zdCBuIG9mWy4uLmVdKW4odCl9dmFyIGZlPWNsYXNze19ob29rcztfYmVmb3JlO19hZnRlcjtfZGVwcmVjYXRlZEhvb2tzO19kZXByZWNhdGVkTWVzc2FnZXM7Y29uc3RydWN0b3IoKXt0aGlzLl9ob29rcz17fSx0aGlzLl9iZWZvcmU9dm9pZCAwLHRoaXMuX2FmdGVyPXZvaWQgMCx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXM9dm9pZCAwLHRoaXMuX2RlcHJlY2F0ZWRIb29rcz17fSx0aGlzLmhvb2s9dGhpcy5ob29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9vaz10aGlzLmNhbGxIb29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9va1dpdGg9dGhpcy5jYWxsSG9va1dpdGguYmluZCh0aGlzKX1ob29rKGUsdCxuPXt9KXtpZighZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuKCk9Pnt9O2NvbnN0IHI9ZTtsZXQgbztmb3IoO3RoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXTspbz10aGlzLl9kZXByZWNhdGVkSG9va3NbZV0sZT1vLnRvO2lmKG8mJiFuLmFsbG93RGVwcmVjYXRlZCl7bGV0IGU9by5tZXNzYWdlO2V8fChlPWAke3J9IGhvb2sgaGFzIGJlZW4gZGVwcmVjYXRlZGArKG8udG8/YCwgcGxlYXNlIHVzZSAke28udG99YDoiIikpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlc3x8KHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcz1uZXcgU2V0KSx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXMuaGFzKGUpfHwoY29uc29sZS53YXJuKGUpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5hZGQoZSkpfWlmKCF0Lm5hbWUpdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJuYW1lIix7Z2V0OigpPT4iXyIrZS5yZXBsYWNlKC9cVysvZywiXyIpKyJfaG9va19jYiIsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2h7fXJldHVybiB0aGlzLl9ob29rc1tlXT10aGlzLl9ob29rc1tlXXx8W10sdGhpcy5faG9va3NbZV0ucHVzaCh0KSwoKT0+e3QmJih0aGlzLnJlbW92ZUhvb2soZSx0KSx0PXZvaWQgMCl9fWhvb2tPbmNlKGUsdCl7bGV0IG4sX2Z1bmN0aW9uPSguLi5lKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuKCksbj12b2lkIDAsX2Z1bmN0aW9uPXZvaWQgMCx0KC4uLmUpKTtyZXR1cm4gbj10aGlzLmhvb2soZSxfZnVuY3Rpb24pLG59cmVtb3ZlSG9vayhlLHQpe2NvbnN0IG49dGhpcy5faG9va3NbZV07aWYobil7Y29uc3Qgcj1uLmluZGV4T2YodCk7LTEhPT1yJiZuLnNwbGljZShyLDEpLDA9PT1uLmxlbmd0aCYmKHRoaXMuX2hvb2tzW2VdPXZvaWQgMCl9fWNsZWFySG9vayhlKXt0aGlzLl9ob29rc1tlXT12b2lkIDB9ZGVwcmVjYXRlSG9vayhlLHQpe3RoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXT0ic3RyaW5nIj09dHlwZW9mIHQ/e3RvOnR9OnQ7Y29uc3Qgbj10aGlzLl9ob29rc1tlXXx8W107dGhpcy5faG9va3NbZV09dm9pZCAwO2Zvcihjb25zdCB0IG9mIG4pdGhpcy5ob29rKGUsdCl9ZGVwcmVjYXRlSG9va3MoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLmRlcHJlY2F0ZUhvb2sodCxlW3RdKX1hZGRIb29rcyhlKXtjb25zdCB0PWZsYXRIb29rcyhlKSxuPU9iamVjdC5rZXlzKHQpLm1hcChlPT50aGlzLmhvb2soZSx0W2VdKSk7cmV0dXJuKCk9Pntmb3IoY29uc3QgZSBvZiBuKWUoKTtuLmxlbmd0aD0wfX1yZW1vdmVIb29rcyhlKXtjb25zdCB0PWZsYXRIb29rcyhlKTtmb3IoY29uc3QgZSBpbiB0KXRoaXMucmVtb3ZlSG9vayhlLHRbZV0pfXJlbW92ZUFsbEhvb2tzKCl7dGhpcy5faG9va3M9e319Y2FsbEhvb2soZSwuLi50KXtyZXR1cm4gdGhpcy5jYWxsSG9va1dpdGgoc2VyaWFsVGFza0NhbGxlcixlLHQpfWNhbGxIb29rUGFyYWxsZWwoZSwuLi50KXtyZXR1cm4gdGhpcy5jYWxsSG9va1dpdGgocGFyYWxsZWxUYXNrQ2FsbGVyLGUsdCl9Y2FsbEhvb2tXaXRoKGUsdCxuKXtjb25zdCByPXRoaXMuX2JlZm9yZXx8dGhpcy5fYWZ0ZXI/e25hbWU6dCxhcmdzOm4sY29udGV4dDp7fX06dm9pZCAwO3RoaXMuX2JlZm9yZSYmY2FsbEVhY2hXaXRoKHRoaXMuX2JlZm9yZSxyKTtjb25zdCBvPWUodGhpcy5faG9va3NbdF0/Wy4uLnRoaXMuX2hvb2tzW3RdXTpbXSxuLHQpO3JldHVybiBvIGluc3RhbmNlb2YgUHJvbWlzZT9vLmZpbmFsbHkoKCk9Pnt0aGlzLl9hZnRlciYmciYmY2FsbEVhY2hXaXRoKHRoaXMuX2FmdGVyLHIpfSk6KHRoaXMuX2FmdGVyJiZyJiZjYWxsRWFjaFdpdGgodGhpcy5fYWZ0ZXIsciksbyl9YmVmb3JlRWFjaChlKXtyZXR1cm4gdGhpcy5fYmVmb3JlPXRoaXMuX2JlZm9yZXx8W10sdGhpcy5fYmVmb3JlLnB1c2goZSksKCk9PntpZih2b2lkIDAhPT10aGlzLl9iZWZvcmUpe2NvbnN0IHQ9dGhpcy5fYmVmb3JlLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9iZWZvcmUuc3BsaWNlKHQsMSl9fX1hZnRlckVhY2goZSl7cmV0dXJuIHRoaXMuX2FmdGVyPXRoaXMuX2FmdGVyfHxbXSx0aGlzLl9hZnRlci5wdXNoKGUpLCgpPT57aWYodm9pZCAwIT09dGhpcy5fYWZ0ZXIpe2NvbnN0IHQ9dGhpcy5fYWZ0ZXIuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2FmdGVyLnNwbGljZSh0LDEpfX19fTtmdW5jdGlvbiBjcmVhdGVIb29rcygpe3JldHVybiBuZXcgZmV9Y29uc3QgaGU9bmV3IFNldChbIm1ldGEiLCJsaW5rIiwiYmFzZSJdKSxnZT1uZXcgU2V0KFsibGluayIsInN0eWxlIiwic2NyaXB0Iiwibm9zY3JpcHQiXSksbWU9bmV3IFNldChbInRpdGxlIiwidGl0bGVUZW1wbGF0ZSIsInNjcmlwdCIsInN0eWxlIiwibm9zY3JpcHQiXSkseWU9bmV3IFNldChbImJhc2UiLCJtZXRhIiwibGluayIsInN0eWxlIiwic2NyaXB0Iiwibm9zY3JpcHQiXSksdmU9bmV3IFNldChbInRpdGxlIiwiYmFzZSIsImh0bWxBdHRycyIsImJvZHlBdHRycyIsIm1ldGEiLCJsaW5rIiwic3R5bGUiLCJzY3JpcHQiLCJub3NjcmlwdCJdKSxfZT1uZXcgU2V0KFsiYmFzZSIsInRpdGxlIiwidGl0bGVUZW1wbGF0ZSIsImJvZHlBdHRycyIsImh0bWxBdHRycyIsInRlbXBsYXRlUGFyYW1zIl0pLGJlPW5ldyBTZXQoWyJrZXkiLCJ0YWdQb3NpdGlvbiIsInRhZ1ByaW9yaXR5IiwidGFnRHVwbGljYXRlU3RyYXRlZ3kiLCJpbm5lckhUTUwiLCJ0ZXh0Q29udGVudCIsInByb2Nlc3NUZW1wbGF0ZVBhcmFtcyJdKSxrZT1uZXcgU2V0KFsidGVtcGxhdGVQYXJhbXMiLCJodG1sQXR0cnMiLCJib2R5QXR0cnMiXSksQ2U9bmV3IFNldChbInRoZW1lLWNvbG9yIiwiZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiwib2ciLCJhcnRpY2xlIiwiYm9vayIsInByb2ZpbGUiLCJ0d2l0dGVyIiwiYXV0aG9yIl0pLFNlPVsibmFtZSIsInByb3BlcnR5IiwiaHR0cC1lcXVpdiJdLHdlPW5ldyBTZXQoWyJ2aWV3cG9ydCIsImRlc2NyaXB0aW9uIiwia2V5d29yZHMiLCJyb2JvdHMiXSk7ZnVuY3Rpb24gZGVkdXBlS2V5KGUpe2NvbnN0e3Byb3BzOnQsdGFnOm59PWU7aWYoX2UuaGFzKG4pKXJldHVybiBuO2lmKCJsaW5rIj09PW4mJiJjYW5vbmljYWwiPT09dC5yZWwpcmV0dXJuImNhbm9uaWNhbCI7aWYoImxpbmsiPT09biYmImFsdGVybmF0ZSI9PT10LnJlbCl7Y29uc3QgZT10LmhyZWZsYW5nfHx0LnR5cGU7aWYoZSlyZXR1cm5gYWx0ZXJuYXRlOiR7ZX1gfWlmKHQuY2hhcnNldClyZXR1cm4iY2hhcnNldCI7aWYoIm1ldGEiPT09ZS50YWcpZm9yKGNvbnN0IHIgb2YgU2UpaWYodm9pZCAwIT09dFtyXSl7Y29uc3Qgbz10W3JdLHM9byYmInN0cmluZyI9PXR5cGVvZiBvJiZvLmluY2x1ZGVzKCI6IiksaT1vJiZ3ZS5oYXMobyk7cmV0dXJuYCR7bn06JHtvfSR7IShzfHxpKSYmZS5rZXk/YDprZXk6JHtlLmtleX1gOiIifWB9aWYoZS5rZXkpcmV0dXJuYCR7bn06a2V5OiR7ZS5rZXl9YDtpZih0LmlkKXJldHVybmAke259OmlkOiR7dC5pZH1gO2lmKCJsaW5rIj09PW4mJiJhbHRlcm5hdGUiPT09dC5yZWwpcmV0dXJuYGFsdGVybmF0ZToke3QuaHJlZnx8IiJ9YDtpZihtZS5oYXMobikpe2NvbnN0IHQ9ZS50ZXh0Q29udGVudHx8ZS5pbm5lckhUTUw7aWYodClyZXR1cm5gJHtufTpjb250ZW50OiR7dH1gfX1mdW5jdGlvbiBoYXNoVGFnKGUpe2NvbnN0IHQ9ZS5faHx8ZS5fZDtpZih0KXJldHVybiB0O2NvbnN0IG49ZS50ZXh0Q29udGVudHx8ZS5pbm5lckhUTUw7cmV0dXJuIG58fGAke2UudGFnfToke09iamVjdC5lbnRyaWVzKGUucHJvcHMpLm1hcCgoW2UsdF0pPT5gJHtlfToke1N0cmluZyh0KX1gKS5qb2luKCIsIil9YH1mdW5jdGlvbiB3YWxrUmVzb2x2ZXIoZSx0LG4peyJmdW5jdGlvbiI9PT10eXBlb2YgZSYmKG4mJigidGl0bGVUZW1wbGF0ZSI9PT1ufHwibyI9PT1uWzBdJiYibiI9PT1uWzFdKXx8KGU9ZSgpKSk7Y29uc3Qgcj10P3QobixlKTplO2lmKEFycmF5LmlzQXJyYXkocikpcmV0dXJuIHIubWFwKGU9PndhbGtSZXNvbHZlcihlLHQpKTtpZihyPy5jb25zdHJ1Y3Rvcj09PU9iamVjdCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiBPYmplY3Qua2V5cyhyKSllW25dPXdhbGtSZXNvbHZlcihyW25dLHQsbik7cmV0dXJuIGV9cmV0dXJuIHJ9ZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMoZSx0KXtpZihlLnByb3BzPWUucHJvcHN8fHt9LCF0KXJldHVybiBlO2lmKCJ0ZW1wbGF0ZVBhcmFtcyI9PT1lLnRhZylyZXR1cm4gZS5wcm9wcz10LGU7Y29uc3Qgbj15ZS5oYXMoZS50YWcpfHwiaHRtbEF0dHJzIj09PWUudGFnfHwiYm9keUF0dHJzIj09PWUudGFnO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbcixvXSk9PntpZigiX19wcm90b19fIj09PXJ8fCJjb25zdHJ1Y3RvciI9PT1yfHwicHJvdG90eXBlIj09PXIpcmV0dXJuO2lmKG51bGw9PT1vKXJldHVybiB2b2lkKGUucHJvcHNbcl09bnVsbCk7aWYoImNsYXNzIj09PXJ8fCJzdHlsZSI9PT1yKXJldHVybiB2b2lkKGUucHJvcHNbcl09ZnVuY3Rpb24oZSx0KXtjb25zdCBuPSJzdHlsZSI9PT1lP25ldyBNYXA6bmV3IFNldDtmdW5jdGlvbiBwcm9jZXNzVmFsdWUodCl7aWYobnVsbD09dHx8dm9pZCAwPT09dClyZXR1cm47Y29uc3Qgcj1TdHJpbmcodCkudHJpbSgpO2lmKHIpaWYoInN0eWxlIj09PWUpe2NvbnN0W2UsLi4udF09ci5zcGxpdCgiOiIpLm1hcChlPT5lP2UudHJpbSgpOiIiKTtlJiZ0Lmxlbmd0aCYmbi5zZXQoZSx0LmpvaW4oIjoiKSl9ZWxzZSByLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goZT0+bi5hZGQoZSkpfXJldHVybiJzdHJpbmciPT10eXBlb2YgdD8ic3R5bGUiPT09ZT90LnNwbGl0KCI7IikuZm9yRWFjaChwcm9jZXNzVmFsdWUpOnByb2Nlc3NWYWx1ZSh0KTpBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFjaChlPT5wcm9jZXNzVmFsdWUoZSkpOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW3Qscl0pPT57ciYmImZhbHNlIiE9PXImJigic3R5bGUiPT09ZT9uLnNldChTdHJpbmcodCkudHJpbSgpLFN0cmluZyhyKSk6cHJvY2Vzc1ZhbHVlKHQpKX0pLG59KHIsbykpO2lmKGJlLmhhcyhyKSl7aWYoInRleHRDb250ZW50IiE9PXImJiJpbm5lckhUTUwiIT09cnx8Im9iamVjdCIhPXR5cGVvZiBvKWVbcl09bztlbHNle2xldCBuPXQudHlwZTtpZih0LnR5cGV8fChuPSJhcHBsaWNhdGlvbi9qc29uIiksIW4/LmVuZHNXaXRoKCJqc29uIikmJiJzcGVjdWxhdGlvbnJ1bGVzIiE9PW4pcmV0dXJuO3QudHlwZT1uLGUucHJvcHMudHlwZT1uLGVbcl09SlNPTi5zdHJpbmdpZnkobyl9cmV0dXJufWNvbnN0IHM9ci5zdGFydHNXaXRoKCJkYXRhLSIpLGk9biYmIXM/ci50b0xvd2VyQ2FzZSgpOnIsYT1TdHJpbmcobyksbD0ibWV0YSI9PT1lLnRhZyYmImNvbnRlbnQiPT09aTsidHJ1ZSI9PT1hfHwiIj09PWE/ZS5wcm9wc1tpXT0hcyYmIWx8fGE6IW8mJnMmJiJmYWxzZSI9PT1hP2UucHJvcHNbaV09ImZhbHNlIjp2b2lkIDAhPT1vJiYoZS5wcm9wc1tpXT1vKX0pLGV9ZnVuY3Rpb24gbm9ybWFsaXplVGFnKGUsdCl7Y29uc3Qgbj1ub3JtYWxpemVQcm9wcyh7dGFnOmUscHJvcHM6e319LCJvYmplY3QiPT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/dDp7WyJzY3JpcHQiPT09ZXx8Im5vc2NyaXB0Ij09PWV8fCJzdHlsZSI9PT1lPyJpbm5lckhUTUwiOiJ0ZXh0Q29udGVudCJdOnR9KTtyZXR1cm4gbi5rZXkmJmdlLmhhcyhuLnRhZykmJihuLnByb3BzWyJkYXRhLWhpZCJdPW4uX2g9bi5rZXkpLCJzY3JpcHQiPT09bi50YWcmJiJvYmplY3QiPT10eXBlb2Ygbi5pbm5lckhUTUwmJihuLmlubmVySFRNTD1KU09OLnN0cmluZ2lmeShuLmlubmVySFRNTCksbi5wcm9wcy50eXBlPW4ucHJvcHMudHlwZXx8ImFwcGxpY2F0aW9uL2pzb24iKSxBcnJheS5pc0FycmF5KG4ucHJvcHMuY29udGVudCk/bi5wcm9wcy5jb250ZW50Lm1hcChlPT4oey4uLm4scHJvcHM6ey4uLm4ucHJvcHMsY29udGVudDplfX0pKTpufWZ1bmN0aW9uIG5vcm1hbGl6ZUVudHJ5VG9UYWdzKGUsdCl7aWYoIWUpcmV0dXJuW107ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUoKSk7Y29uc3QgcmVzb2x2ZXJzPShlLG4pPT57Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspbj10W3JdKGUsbik7cmV0dXJuIG59O2U9cmVzb2x2ZXJzKHZvaWQgMCxlKTtjb25zdCBuPVtdO3JldHVybiBlPXdhbGtSZXNvbHZlcihlLHJlc29sdmVycyksT2JqZWN0LmVudHJpZXMoZXx8e30pLmZvckVhY2goKFtlLHRdKT0+e2lmKHZvaWQgMCE9PXQpZm9yKGNvbnN0IHIgb2YgQXJyYXkuaXNBcnJheSh0KT90Olt0XSluLnB1c2gobm9ybWFsaXplVGFnKGUscikpfSksbi5mbGF0KCl9Y29uc3Qgc29ydFRhZ3M9KGUsdCk9PmUuX3c9PT10Ll93P2UuX3AtdC5fcDplLl93LXQuX3csVGU9e2Jhc2U6LTEwLHRpdGxlOjEwfSxSZT17Y3JpdGljYWw6LTgsaGlnaDotMSxsb3c6Mn0sQWU9e21ldGE6eyJjb250ZW50LXNlY3VyaXR5LXBvbGljeSI6LTMwLGNoYXJzZXQ6LTIwLHZpZXdwb3J0Oi0xNX0sbGluazp7cHJlY29ubmVjdDoyMCxzdHlsZXNoZWV0OjYwLHByZWxvYWQ6NzAsbW9kdWxlcHJlbG9hZDo3MCxwcmVmZXRjaDo5MCwiZG5zLXByZWZldGNoIjo5MCxwcmVyZW5kZXI6OTB9LHNjcmlwdDp7YXN5bmM6MzAsZGVmZXI6ODAsc3luYzo1MH0sc3R5bGU6e2ltcG9ydGVkOjQwLHN5bmM6NjB9fSx4ZT0vQGltcG9ydC8saXNUcnV0aHk9ZT0+IiI9PT1lfHwhMD09PWU7ZnVuY3Rpb24gdGFnV2VpZ2h0KGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0LnRhZ1ByaW9yaXR5KXJldHVybiB0LnRhZ1ByaW9yaXR5O2xldCBuPTEwMDtjb25zdCByPVJlW3QudGFnUHJpb3JpdHldfHwwLG89ZS5yZXNvbHZlZE9wdGlvbnMuZGlzYWJsZUNhcG9Tb3J0aW5nP3tsaW5rOnt9LHNjcmlwdDp7fSxzdHlsZTp7fX06QWU7aWYodC50YWcgaW4gVGUpbj1UZVt0LnRhZ107ZWxzZSBpZigibWV0YSI9PT10LnRhZyl7Y29uc3QgZT0iY29udGVudC1zZWN1cml0eS1wb2xpY3kiPT09dC5wcm9wc1siaHR0cC1lcXVpdiJdPyJjb250ZW50LXNlY3VyaXR5LXBvbGljeSI6dC5wcm9wcy5jaGFyc2V0PyJjaGFyc2V0Ijoidmlld3BvcnQiPT09dC5wcm9wcy5uYW1lPyJ2aWV3cG9ydCI6bnVsbDtlJiYobj1BZS5tZXRhW2VdKX1lbHNlIGlmKCJsaW5rIj09PXQudGFnJiZ0LnByb3BzLnJlbCluPW8ubGlua1t0LnByb3BzLnJlbF07ZWxzZSBpZigic2NyaXB0Ij09PXQudGFnKXtjb25zdCBlPVN0cmluZyh0LnByb3BzLnR5cGUpO2lzVHJ1dGh5KHQucHJvcHMuYXN5bmMpP249by5zY3JpcHQuYXN5bmM6dC5wcm9wcy5zcmMmJiFpc1RydXRoeSh0LnByb3BzLmRlZmVyKSYmIWlzVHJ1dGh5KHQucHJvcHMuYXN5bmMpJiYibW9kdWxlIiE9PWUmJiFlLmVuZHNXaXRoKCJqc29uIil8fHQuaW5uZXJIVE1MJiYhZS5lbmRzV2l0aCgianNvbiIpP249by5zY3JpcHQuc3luYzooaXNUcnV0aHkodC5wcm9wcy5kZWZlcikmJnQucHJvcHMuc3JjJiYhaXNUcnV0aHkodC5wcm9wcy5hc3luYyl8fCJtb2R1bGUiPT09ZSkmJihuPW8uc2NyaXB0LmRlZmVyKX1lbHNlInN0eWxlIj09PXQudGFnJiYobj10LmlubmVySFRNTCYmeGUudGVzdCh0LmlubmVySFRNTCk/by5zdHlsZS5pbXBvcnRlZDpvLnN0eWxlLnN5bmMpO3JldHVybihufHwxMDApK3J9ZnVuY3Rpb24gcmVnaXN0ZXJQbHVnaW4oZSx0KXtjb25zdCBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoZSk6dCxyPW4ua2V5fHxTdHJpbmcoZS5wbHVnaW5zLnNpemUrMSk7ZS5wbHVnaW5zLmdldChyKXx8KGUucGx1Z2lucy5zZXQocixuKSxlLmhvb2tzLmFkZEhvb2tzKG4uaG9va3N8fHt9KSl9ZnVuY3Rpb24gY3JlYXRlVW5oZWFkKGU9e30pe2NvbnN0IHQ9Y3JlYXRlSG9va3MoKTt0LmFkZEhvb2tzKGUuaG9va3N8fHt9KTtjb25zdCBuPSFlLmRvY3VtZW50LHI9bmV3IE1hcCxvPW5ldyBNYXAscz1uZXcgU2V0LGk9e19lbnRyeUNvdW50OjEscGx1Z2luczpvLGRpcnR5OiExLHJlc29sdmVkT3B0aW9uczplLGhvb2tzOnQsc3NyOm4sZW50cmllczpyLGhlYWRFbnRyaWVzOigpPT5bLi4uci52YWx1ZXMoKV0sdXNlOmU9PnJlZ2lzdGVyUGx1Z2luKGksZSkscHVzaChlLG8pe2NvbnN0IGE9ey4uLm98fHt9fTtkZWxldGUgYS5oZWFkO2NvbnN0IGw9YS5faW5kZXg/P2kuX2VudHJ5Q291bnQrKyxjPXtfaTpsLGlucHV0OmUsb3B0aW9uczphfSx1PXtfcG9sbChlPSExKXtpLmRpcnR5PSEwLCFlJiZzLmFkZChsKSx0LmNhbGxIb29rKCJlbnRyaWVzOnVwZGF0ZWQiLGkpfSxkaXNwb3NlKCl7ci5kZWxldGUobCkmJmkuaW52YWxpZGF0ZSgpfSxwYXRjaChlKXsoIWEubW9kZXx8InNlcnZlciI9PT1hLm1vZGUmJm58fCJjbGllbnQiPT09YS5tb2RlJiYhbikmJihjLmlucHV0PWUsci5zZXQobCxjKSx1Ll9wb2xsKCkpfX07cmV0dXJuIHUucGF0Y2goZSksdX0sYXN5bmMgcmVzb2x2ZVRhZ3MoKXtjb25zdCBuPXt0YWdNYXA6bmV3IE1hcCx0YWdzOltdLGVudHJpZXM6Wy4uLmkuZW50cmllcy52YWx1ZXMoKV19O2Zvcihhd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOnJlc29sdmUiLG4pO3Muc2l6ZTspe2NvbnN0IG49cy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7cy5kZWxldGUobik7Y29uc3Qgbz1yLmdldChuKTtpZihvKXtjb25zdCBuPXt0YWdzOm5vcm1hbGl6ZUVudHJ5VG9UYWdzKG8uaW5wdXQsZS5wcm9wUmVzb2x2ZXJzfHxbXSkubWFwKGU9Pk9iamVjdC5hc3NpZ24oZSxvLm9wdGlvbnMpKSxlbnRyeTpvfTthd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOm5vcm1hbGl6ZSIsbiksby5fdGFncz1uLnRhZ3MubWFwKChlLHQpPT4oZS5fdz10YWdXZWlnaHQoaSxlKSxlLl9wPShvLl9pPDwxMCkrdCxlLl9kPWRlZHVwZUtleShlKSxlLl9kfHwoZS5faD1oYXNoVGFnKGUpKSxlKSl9fWxldCBvPSExO24uZW50cmllcy5mbGF0TWFwKGU9PihlLl90YWdzfHxbXSkubWFwKGU9Pih7Li4uZSxwcm9wczp7Li4uZS5wcm9wc319KSkpLnNvcnQoc29ydFRhZ3MpLnJlZHVjZSgoZSx0KT0+e2NvbnN0IG49dC5fZHx8dC5faDtpZighZS5oYXMobikpcmV0dXJuIGUuc2V0KG4sdCk7Y29uc3Qgcj1lLmdldChuKTtpZigibWVyZ2UiPT09KHQ/LnRhZ0R1cGxpY2F0ZVN0cmF0ZWd5fHwoa2UuaGFzKHQudGFnKT8ibWVyZ2UiOm51bGwpfHwodC5rZXkmJnQua2V5PT09ci5rZXk/Im1lcmdlIjpudWxsKSkpe2NvbnN0IG89ey4uLnIucHJvcHN9O09iamVjdC5lbnRyaWVzKHQucHJvcHMpLmZvckVhY2goKFtlLHRdKT0+b1tlXT0ic3R5bGUiPT09ZT9uZXcgTWFwKFsuLi5yLnByb3BzLnN0eWxlfHxuZXcgTWFwLC4uLnRdKToiY2xhc3MiPT09ZT9uZXcgU2V0KFsuLi5yLnByb3BzLmNsYXNzfHxuZXcgU2V0LC4uLnRdKTp0KSxlLnNldChuLHsuLi50LHByb3BzOm99KX1lbHNlIHQuX3A+PjEwPT1yLl9wPj4xMCYmIm1ldGEiPT09dC50YWcmJmZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5zcGxpdCgiOiIpO3JldHVybiEhdC5sZW5ndGgmJkNlLmhhcyh0WzFdKX0obik/KGUuc2V0KG4sT2JqZWN0LmFzc2lnbihbLi4uQXJyYXkuaXNBcnJheShyKT9yOltyXSx0XSx0KSksbz0hMCk6KHQuX3c9PT1yLl93P3QuX3A+ci5fcDp0Py5fdzxyPy5fdykmJmUuc2V0KG4sdCk7cmV0dXJuIGV9LG4udGFnTWFwKTtjb25zdCBhPW4udGFnTWFwLmdldCgidGl0bGUiKSxsPW4udGFnTWFwLmdldCgidGl0bGVUZW1wbGF0ZSIpO2lmKGkuX3RpdGxlPWE/LnRleHRDb250ZW50LGwpe2NvbnN0IGU9bD8udGV4dENvbnRlbnQ7aWYoaS5fdGl0bGVUZW1wbGF0ZT1lLGUpe2xldCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoYT8udGV4dENvbnRlbnQpOmU7InN0cmluZyIhPXR5cGVvZiB0fHxpLnBsdWdpbnMuaGFzKCJ0ZW1wbGF0ZS1wYXJhbXMiKXx8KHQ9dC5yZXBsYWNlKCIlcyIsYT8udGV4dENvbnRlbnR8fCIiKSksYT9udWxsPT09dD9uLnRhZ01hcC5kZWxldGUoInRpdGxlIik6bi50YWdNYXAuc2V0KCJ0aXRsZSIsey4uLmEsdGV4dENvbnRlbnQ6dH0pOihsLnRhZz0idGl0bGUiLGwudGV4dENvbnRlbnQ9dCl9fW4udGFncz1BcnJheS5mcm9tKG4udGFnTWFwLnZhbHVlcygpKSxvJiYobi50YWdzPW4udGFncy5mbGF0KCkuc29ydChzb3J0VGFncykpLGF3YWl0IHQuY2FsbEhvb2soInRhZ3M6YmVmb3JlUmVzb2x2ZSIsbiksYXdhaXQgdC5jYWxsSG9vaygidGFnczpyZXNvbHZlIixuKSxhd2FpdCB0LmNhbGxIb29rKCJ0YWdzOmFmdGVyUmVzb2x2ZSIsbik7Y29uc3QgYz1bXTtmb3IoY29uc3QgZSBvZiBuLnRhZ3Mpe2NvbnN0e2lubmVySFRNTDp0LHRhZzpuLHByb3BzOnJ9PWU7aWYodmUuaGFzKG4pJiYoKDAhPT1PYmplY3Qua2V5cyhyKS5sZW5ndGh8fGUuaW5uZXJIVE1MfHxlLnRleHRDb250ZW50KSYmKCJtZXRhIiE9PW58fHIuY29udGVudHx8clsiaHR0cC1lcXVpdiJdfHxyLmNoYXJzZXQpKSl7aWYoInNjcmlwdCI9PT1uJiZ0KXtpZihTdHJpbmcoci50eXBlKS5lbmRzV2l0aCgianNvbiIpKXtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgdD90OkpTT04uc3RyaW5naWZ5KHQpO2UuaW5uZXJIVE1MPW4ucmVwbGFjZSgvPC9nLCJcXHUwMDNDIil9ZWxzZSJzdHJpbmciPT10eXBlb2YgdCYmKGUuaW5uZXJIVE1MPXQucmVwbGFjZShuZXcgUmVnRXhwKGA8LyR7bn1gLCJnIiksYDxcXC8ke259YCkpO2UuX2Q9ZGVkdXBlS2V5KGUpfWMucHVzaChlKX19cmV0dXJuIGN9LGludmFsaWRhdGUoKXtmb3IoY29uc3QgZSBvZiByLnZhbHVlcygpKXMuYWRkKGUuX2kpO2kuZGlydHk9ITAsdC5jYWxsSG9vaygiZW50cmllczp1cGRhdGVkIixpKX19O3JldHVybihlPy5wbHVnaW5zfHxbXSkuZm9yRWFjaChlPT5yZWdpc3RlclBsdWdpbihpLGUpKSxpLmhvb2tzLmNhbGxIb29rKCJpbml0IixpKSxlLmluaXQ/LmZvckVhY2goZT0+ZSYmaS5wdXNoKGUpKSxpfWZ1bmN0aW9uIGVuY29kZUF0dHJpYnV0ZShlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9ZnVuY3Rpb24gcHJvcHNUb1N0cmluZyhlKXtsZXQgdD0iIjtmb3IoY29uc3QgbiBpbiBlKXtpZighT2JqZWN0Lmhhc093bihlLG4pKWNvbnRpbnVlO2xldCByPWVbbl07ImNsYXNzIiE9PW4mJiJzdHlsZSIhPT1ufHwic3RyaW5nIj09dHlwZW9mIHJ8fChyPSJjbGFzcyI9PT1uP0FycmF5LmZyb20ocikuam9pbigiICIpOkFycmF5LmZyb20ocikubWFwKChbZSx0XSk9PmAke2V9OiR7dH1gKS5qb2luKCI7IikpLCExIT09ciYmbnVsbCE9PXImJih0Kz0hMD09PXI/YCAke259YDpgICR7bn09IiR7ZW5jb2RlQXR0cmlidXRlKHIpfSJgKX1yZXR1cm4gdH1mdW5jdGlvbiB0YWdUb1N0cmluZyhlKXtjb25zdCB0PXByb3BzVG9TdHJpbmcoZS5wcm9wcyksbj1gPCR7ZS50YWd9JHt0fT5gO2lmKCFtZS5oYXMoZS50YWcpKXJldHVybiBoZS5oYXMoZS50YWcpP246YCR7bn08LyR7ZS50YWd9PmA7bGV0IHI9U3RyaW5nKGUudGV4dENvbnRlbnR8fGUuaW5uZXJIVE1MfHwiIik7cmV0dXJuIHI9InRpdGxlIj09PWUudGFnP3IucmVwbGFjZSgvWyY8PiInL10vZyxlPT57c3dpdGNoKGUpe2Nhc2UiJiI6cmV0dXJuIiZhbXA7IjtjYXNlIjwiOnJldHVybiImbHQ7IjtjYXNlIj4iOnJldHVybiImZ3Q7IjtjYXNlJyInOnJldHVybiImcXVvdDsiO2Nhc2UiJyI6cmV0dXJuIiYjeDI3OyI7Y2FzZSIvIjpyZXR1cm4iJiN4MkY7IjtkZWZhdWx0OnJldHVybiBlfX0pOnIucmVwbGFjZShuZXcgUmVnRXhwKGA8LyR7ZS50YWd9YCwiZ2kiKSxgPFxcLyR7ZS50YWd9YCksaGUuaGFzKGUudGFnKT9uOmAke259JHtyfTwvJHtlLnRhZ30+YH1hc3luYyBmdW5jdGlvbiByZW5kZXJTU1JIZWFkKGUsdCl7Y29uc3Qgbj17c2hvdWxkUmVuZGVyOiEwfTtpZihhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJzc3I6YmVmb3JlUmVuZGVyIixuKSwhbi5zaG91bGRSZW5kZXIpcmV0dXJue2hlYWRUYWdzOiIiLGJvZHlUYWdzOiIiLGJvZHlUYWdzT3BlbjoiIixodG1sQXR0cnM6IiIsYm9keUF0dHJzOiIifTtjb25zdCByPXt0YWdzOnQ/LnJlc29sdmVkVGFnc3x8YXdhaXQgZS5yZXNvbHZlVGFncygpfTthd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJzc3I6cmVuZGVyIixyKTtjb25zdCBvPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9e2h0bWxBdHRyczp7fSxib2R5QXR0cnM6e30sdGFnczp7aGVhZDoiIixib2R5Q2xvc2U6IiIsYm9keU9wZW46IiJ9fTtmb3IoY29uc3QgbiBvZiBlKXtpZigiaHRtbEF0dHJzIj09PW4udGFnfHwiYm9keUF0dHJzIj09PW4udGFnKXtPYmplY3QuYXNzaWduKHRbbi50YWddLG4ucHJvcHMpO2NvbnRpbnVlfWNvbnN0IGU9dGFnVG9TdHJpbmcobikscj1uLnRhZ1Bvc2l0aW9ufHwiaGVhZCI7dC50YWdzW3JdKz10LnRhZ3Nbcl0/YCR7ZX1gOmV9cmV0dXJue2hlYWRUYWdzOnQudGFncy5oZWFkLGJvZHlUYWdzOnQudGFncy5ib2R5Q2xvc2UsYm9keVRhZ3NPcGVuOnQudGFncy5ib2R5T3BlbixodG1sQXR0cnM6cHJvcHNUb1N0cmluZyh0Lmh0bWxBdHRycyksYm9keUF0dHJzOnByb3BzVG9TdHJpbmcodC5ib2R5QXR0cnMpfX0oci50YWdzKSxzPXt0YWdzOnIudGFncyxodG1sOm99O3JldHVybiBhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJzc3I6cmVuZGVyZWQiLHMpLHMuaHRtbH1sZXQgRWUsUGU7Y2xhc3MgRWZmZWN0U2NvcGV7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5kZXRhY2hlZD1lLHRoaXMuX2FjdGl2ZT0hMCx0aGlzLl9vbj0wLHRoaXMuZWZmZWN0cz1bXSx0aGlzLmNsZWFudXBzPVtdLHRoaXMuX2lzUGF1c2VkPSExLHRoaXMuX192X3NraXA9ITAsdGhpcy5wYXJlbnQ9RWUsIWUmJkVlJiYodGhpcy5pbmRleD0oRWUuc2NvcGVzfHwoRWUuc2NvcGVzPVtdKSkucHVzaCh0aGlzKS0xKX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX1wYXVzZSgpe2lmKHRoaXMuX2FjdGl2ZSl7bGV0IGUsdDtpZih0aGlzLl9pc1BhdXNlZD0hMCx0aGlzLnNjb3Blcylmb3IoZT0wLHQ9dGhpcy5zY29wZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5zY29wZXNbZV0ucGF1c2UoKTtmb3IoZT0wLHQ9dGhpcy5lZmZlY3RzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuZWZmZWN0c1tlXS5wYXVzZSgpfX1yZXN1bWUoKXtpZih0aGlzLl9hY3RpdmUmJnRoaXMuX2lzUGF1c2VkKXtsZXQgZSx0O2lmKHRoaXMuX2lzUGF1c2VkPSExLHRoaXMuc2NvcGVzKWZvcihlPTAsdD10aGlzLnNjb3Blcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLnNjb3Blc1tlXS5yZXN1bWUoKTtmb3IoZT0wLHQ9dGhpcy5lZmZlY3RzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuZWZmZWN0c1tlXS5yZXN1bWUoKX19cnVuKGUpe2lmKHRoaXMuX2FjdGl2ZSl7Y29uc3QgdD1FZTt0cnl7cmV0dXJuIEVlPXRoaXMsZSgpfWZpbmFsbHl7RWU9dH19fW9uKCl7MT09PSsrdGhpcy5fb24mJih0aGlzLnByZXZTY29wZT1FZSxFZT10aGlzKX1vZmYoKXt0aGlzLl9vbj4wJiYwPT09LS10aGlzLl9vbiYmKEVlPXRoaXMucHJldlNjb3BlLHRoaXMucHJldlNjb3BlPXZvaWQgMCl9c3RvcChlKXtpZih0aGlzLl9hY3RpdmUpe2xldCB0LG47Zm9yKHRoaXMuX2FjdGl2ZT0hMSx0PTAsbj10aGlzLmVmZmVjdHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5lZmZlY3RzW3RdLnN0b3AoKTtmb3IodGhpcy5lZmZlY3RzLmxlbmd0aD0wLHQ9MCxuPXRoaXMuY2xlYW51cHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5jbGVhbnVwc1t0XSgpO2lmKHRoaXMuY2xlYW51cHMubGVuZ3RoPTAsdGhpcy5zY29wZXMpe2Zvcih0PTAsbj10aGlzLnNjb3Blcy5sZW5ndGg7dDxuO3QrKyl0aGlzLnNjb3Blc1t0XS5zdG9wKCEwKTt0aGlzLnNjb3Blcy5sZW5ndGg9MH1pZighdGhpcy5kZXRhY2hlZCYmdGhpcy5wYXJlbnQmJiFlKXtjb25zdCBlPXRoaXMucGFyZW50LnNjb3Blcy5wb3AoKTtlJiZlIT09dGhpcyYmKHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XT1lLGUuaW5kZXg9dGhpcy5pbmRleCl9dGhpcy5wYXJlbnQ9dm9pZCAwfX19ZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCl7cmV0dXJuIEVlfWNvbnN0ICRlPW5ldyBXZWFrU2V0O2NsYXNzIFJlYWN0aXZlRWZmZWN0e2NvbnN0cnVjdG9yKGUpe3RoaXMuZm49ZSx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9NSx0aGlzLm5leHQ9dm9pZCAwLHRoaXMuY2xlYW51cD12b2lkIDAsdGhpcy5zY2hlZHVsZXI9dm9pZCAwLEVlJiZFZS5hY3RpdmUmJkVlLmVmZmVjdHMucHVzaCh0aGlzKX1wYXVzZSgpe3RoaXMuZmxhZ3N8PTY0fXJlc3VtZSgpezY0JnRoaXMuZmxhZ3MmJih0aGlzLmZsYWdzJj0tNjUsJGUuaGFzKHRoaXMpJiYoJGUuZGVsZXRlKHRoaXMpLHRoaXMudHJpZ2dlcigpKSl9bm90aWZ5KCl7MiZ0aGlzLmZsYWdzJiYhKDMyJnRoaXMuZmxhZ3MpfHw4JnRoaXMuZmxhZ3N8fGJhdGNoKHRoaXMpfXJ1bigpe2lmKCEoMSZ0aGlzLmZsYWdzKSlyZXR1cm4gdGhpcy5mbigpO3RoaXMuZmxhZ3N8PTIsY2xlYW51cEVmZmVjdCh0aGlzKSxwcmVwYXJlRGVwcyh0aGlzKTtjb25zdCBlPVBlLHQ9TWU7UGU9dGhpcyxNZT0hMDt0cnl7cmV0dXJuIHRoaXMuZm4oKX1maW5hbGx5e2NsZWFudXBEZXBzKHRoaXMpLFBlPWUsTWU9dCx0aGlzLmZsYWdzJj0tM319c3RvcCgpe2lmKDEmdGhpcy5mbGFncyl7Zm9yKGxldCBlPXRoaXMuZGVwcztlO2U9ZS5uZXh0RGVwKXJlbW92ZVN1YihlKTt0aGlzLmRlcHM9dGhpcy5kZXBzVGFpbD12b2lkIDAsY2xlYW51cEVmZmVjdCh0aGlzKSx0aGlzLm9uU3RvcCYmdGhpcy5vblN0b3AoKSx0aGlzLmZsYWdzJj0tMn19dHJpZ2dlcigpezY0JnRoaXMuZmxhZ3M/JGUuYWRkKHRoaXMpOnRoaXMuc2NoZWR1bGVyP3RoaXMuc2NoZWR1bGVyKCk6dGhpcy5ydW5JZkRpcnR5KCl9cnVuSWZEaXJ0eSgpe2lzRGlydHkodGhpcykmJnRoaXMucnVuKCl9Z2V0IGRpcnR5KCl7cmV0dXJuIGlzRGlydHkodGhpcyl9fWxldCBPZSxOZSxIZT0wO2Z1bmN0aW9uIGJhdGNoKGUsdD0hMSl7aWYoZS5mbGFnc3w9OCx0KXJldHVybiBlLm5leHQ9TmUsdm9pZChOZT1lKTtlLm5leHQ9T2UsT2U9ZX1mdW5jdGlvbiBzdGFydEJhdGNoKCl7SGUrK31mdW5jdGlvbiBlbmRCYXRjaCgpe2lmKC0tSGU+MClyZXR1cm47aWYoTmUpe2xldCBlPU5lO2ZvcihOZT12b2lkIDA7ZTspe2NvbnN0IHQ9ZS5uZXh0O2UubmV4dD12b2lkIDAsZS5mbGFncyY9LTksZT10fX1sZXQgZTtmb3IoO09lOyl7bGV0IHQ9T2U7Zm9yKE9lPXZvaWQgMDt0Oyl7Y29uc3Qgbj10Lm5leHQ7aWYodC5uZXh0PXZvaWQgMCx0LmZsYWdzJj0tOSwxJnQuZmxhZ3MpdHJ5e3QudHJpZ2dlcigpfWNhdGNoKHQpe2V8fChlPXQpfXQ9bn19aWYoZSl0aHJvdyBlfWZ1bmN0aW9uIHByZXBhcmVEZXBzKGUpe2ZvcihsZXQgdD1lLmRlcHM7dDt0PXQubmV4dERlcCl0LnZlcnNpb249LTEsdC5wcmV2QWN0aXZlTGluaz10LmRlcC5hY3RpdmVMaW5rLHQuZGVwLmFjdGl2ZUxpbms9dH1mdW5jdGlvbiBjbGVhbnVwRGVwcyhlKXtsZXQgdCxuPWUuZGVwc1RhaWwscj1uO2Zvcig7cjspe2NvbnN0IGU9ci5wcmV2RGVwOy0xPT09ci52ZXJzaW9uPyhyPT09biYmKG49ZSkscmVtb3ZlU3ViKHIpLHJlbW92ZURlcChyKSk6dD1yLHIuZGVwLmFjdGl2ZUxpbms9ci5wcmV2QWN0aXZlTGluayxyLnByZXZBY3RpdmVMaW5rPXZvaWQgMCxyPWV9ZS5kZXBzPXQsZS5kZXBzVGFpbD1ufWZ1bmN0aW9uIGlzRGlydHkoZSl7Zm9yKGxldCB0PWUuZGVwczt0O3Q9dC5uZXh0RGVwKWlmKHQuZGVwLnZlcnNpb24hPT10LnZlcnNpb258fHQuZGVwLmNvbXB1dGVkJiYocmVmcmVzaENvbXB1dGVkKHQuZGVwLmNvbXB1dGVkKXx8dC5kZXAudmVyc2lvbiE9PXQudmVyc2lvbikpcmV0dXJuITA7cmV0dXJuISFlLl9kaXJ0eX1mdW5jdGlvbiByZWZyZXNoQ29tcHV0ZWQoZSl7aWYoNCZlLmZsYWdzJiYhKDE2JmUuZmxhZ3MpKXJldHVybjtpZihlLmZsYWdzJj0tMTcsZS5nbG9iYWxWZXJzaW9uPT09amUpcmV0dXJuO2lmKGUuZ2xvYmFsVmVyc2lvbj1qZSwhZS5pc1NTUiYmMTI4JmUuZmxhZ3MmJighZS5kZXBzJiYhZS5fZGlydHl8fCFpc0RpcnR5KGUpKSlyZXR1cm47ZS5mbGFnc3w9Mjtjb25zdCB0PWUuZGVwLG49UGUscj1NZTtQZT1lLE1lPSEwO3RyeXtwcmVwYXJlRGVwcyhlKTtjb25zdCBuPWUuZm4oZS5fdmFsdWUpOygwPT09dC52ZXJzaW9ufHxrKG4sZS5fdmFsdWUpKSYmKGUuZmxhZ3N8PTEyOCxlLl92YWx1ZT1uLHQudmVyc2lvbisrKX1jYXRjaChlKXt0aHJvdyB0LnZlcnNpb24rKyxlfWZpbmFsbHl7UGU9bixNZT1yLGNsZWFudXBEZXBzKGUpLGUuZmxhZ3MmPS0zfX1mdW5jdGlvbiByZW1vdmVTdWIoZSx0PSExKXtjb25zdHtkZXA6bixwcmV2U3ViOnIsbmV4dFN1YjpvfT1lO2lmKHImJihyLm5leHRTdWI9byxlLnByZXZTdWI9dm9pZCAwKSxvJiYoby5wcmV2U3ViPXIsZS5uZXh0U3ViPXZvaWQgMCksbi5zdWJzPT09ZSYmKG4uc3Vicz1yLCFyJiZuLmNvbXB1dGVkKSl7bi5jb21wdXRlZC5mbGFncyY9LTU7Zm9yKGxldCBlPW4uY29tcHV0ZWQuZGVwcztlO2U9ZS5uZXh0RGVwKXJlbW92ZVN1YihlLCEwKX10fHwtLW4uc2N8fCFuLm1hcHx8bi5tYXAuZGVsZXRlKG4ua2V5KX1mdW5jdGlvbiByZW1vdmVEZXAoZSl7Y29uc3R7cHJldkRlcDp0LG5leHREZXA6bn09ZTt0JiYodC5uZXh0RGVwPW4sZS5wcmV2RGVwPXZvaWQgMCksbiYmKG4ucHJldkRlcD10LGUubmV4dERlcD12b2lkIDApfWxldCBNZT0hMDtjb25zdCBWZT1bXTtmdW5jdGlvbiBwYXVzZVRyYWNraW5nKCl7VmUucHVzaChNZSksTWU9ITF9ZnVuY3Rpb24gcmVzZXRUcmFja2luZygpe2NvbnN0IGU9VmUucG9wKCk7TWU9dm9pZCAwPT09ZXx8ZX1mdW5jdGlvbiBjbGVhbnVwRWZmZWN0KGUpe2NvbnN0e2NsZWFudXA6dH09ZTtpZihlLmNsZWFudXA9dm9pZCAwLHQpe2NvbnN0IGU9UGU7UGU9dm9pZCAwO3RyeXt0KCl9ZmluYWxseXtQZT1lfX19bGV0IGplPTA7Y2xhc3MgTGlua3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3ViPWUsdGhpcy5kZXA9dCx0aGlzLnZlcnNpb249dC52ZXJzaW9uLHRoaXMubmV4dERlcD10aGlzLnByZXZEZXA9dGhpcy5uZXh0U3ViPXRoaXMucHJldlN1Yj10aGlzLnByZXZBY3RpdmVMaW5rPXZvaWQgMH19Y2xhc3MgRGVwe2NvbnN0cnVjdG9yKGUpe3RoaXMuY29tcHV0ZWQ9ZSx0aGlzLnZlcnNpb249MCx0aGlzLmFjdGl2ZUxpbms9dm9pZCAwLHRoaXMuc3Vicz12b2lkIDAsdGhpcy5tYXA9dm9pZCAwLHRoaXMua2V5PXZvaWQgMCx0aGlzLnNjPTAsdGhpcy5fX3Zfc2tpcD0hMH10cmFjayhlKXtpZighUGV8fCFNZXx8UGU9PT10aGlzLmNvbXB1dGVkKXJldHVybjtsZXQgdD10aGlzLmFjdGl2ZUxpbms7aWYodm9pZCAwPT09dHx8dC5zdWIhPT1QZSl0PXRoaXMuYWN0aXZlTGluaz1uZXcgTGluayhQZSx0aGlzKSxQZS5kZXBzPyh0LnByZXZEZXA9UGUuZGVwc1RhaWwsUGUuZGVwc1RhaWwubmV4dERlcD10LFBlLmRlcHNUYWlsPXQpOlBlLmRlcHM9UGUuZGVwc1RhaWw9dCxhZGRTdWIodCk7ZWxzZSBpZigtMT09PXQudmVyc2lvbiYmKHQudmVyc2lvbj10aGlzLnZlcnNpb24sdC5uZXh0RGVwKSl7Y29uc3QgZT10Lm5leHREZXA7ZS5wcmV2RGVwPXQucHJldkRlcCx0LnByZXZEZXAmJih0LnByZXZEZXAubmV4dERlcD1lKSx0LnByZXZEZXA9UGUuZGVwc1RhaWwsdC5uZXh0RGVwPXZvaWQgMCxQZS5kZXBzVGFpbC5uZXh0RGVwPXQsUGUuZGVwc1RhaWw9dCxQZS5kZXBzPT09dCYmKFBlLmRlcHM9ZSl9cmV0dXJuIHR9dHJpZ2dlcihlKXt0aGlzLnZlcnNpb24rKyxqZSsrLHRoaXMubm90aWZ5KGUpfW5vdGlmeShlKXtzdGFydEJhdGNoKCk7dHJ5ezA7Zm9yKGxldCBlPXRoaXMuc3VicztlO2U9ZS5wcmV2U3ViKWUuc3ViLm5vdGlmeSgpJiZlLnN1Yi5kZXAubm90aWZ5KCl9ZmluYWxseXtlbmRCYXRjaCgpfX19ZnVuY3Rpb24gYWRkU3ViKGUpe2lmKGUuZGVwLnNjKyssNCZlLnN1Yi5mbGFncyl7Y29uc3QgdD1lLmRlcC5jb21wdXRlZDtpZih0JiYhZS5kZXAuc3Vicyl7dC5mbGFnc3w9MjA7Zm9yKGxldCBlPXQuZGVwcztlO2U9ZS5uZXh0RGVwKWFkZFN1YihlKX1jb25zdCBuPWUuZGVwLnN1YnM7biE9PWUmJihlLnByZXZTdWI9bixuJiYobi5uZXh0U3ViPWUpKSxlLmRlcC5zdWJzPWV9fWNvbnN0IEllPW5ldyBXZWFrTWFwLERlPVN5bWJvbCgiIiksTGU9U3ltYm9sKCIiKSxGZT1TeW1ib2woIiIpO2Z1bmN0aW9uIHRyYWNrKGUsdCxuKXtpZihNZSYmUGUpe2xldCB0PUllLmdldChlKTt0fHxJZS5zZXQoZSx0PW5ldyBNYXApO2xldCByPXQuZ2V0KG4pO3J8fCh0LnNldChuLHI9bmV3IERlcCksci5tYXA9dCxyLmtleT1uKSxyLnRyYWNrKCl9fWZ1bmN0aW9uIHRyaWdnZXIoZSx0LG4scixvLHMpe2NvbnN0IGk9SWUuZ2V0KGUpO2lmKCFpKXJldHVybiB2b2lkIGplKys7Y29uc3QgcnVuPWU9PntlJiZlLnRyaWdnZXIoKX07aWYoc3RhcnRCYXRjaCgpLCJjbGVhciI9PT10KWkuZm9yRWFjaChydW4pO2Vsc2V7Y29uc3Qgbz15KGUpLHM9byYmVChuKTtpZihvJiYibGVuZ3RoIj09PW4pe2NvbnN0IGU9TnVtYmVyKHIpO2kuZm9yRWFjaCgodCxuKT0+eygibGVuZ3RoIj09PW58fG49PT1GZXx8IWcobikmJm4+PWUpJiZydW4odCl9KX1lbHNlIHN3aXRjaCgodm9pZCAwIT09bnx8aS5oYXModm9pZCAwKSkmJnJ1bihpLmdldChuKSkscyYmcnVuKGkuZ2V0KEZlKSksdCl7Y2FzZSJhZGQiOm8/cyYmcnVuKGkuZ2V0KCJsZW5ndGgiKSk6KHJ1bihpLmdldChEZSkpLEMoZSkmJnJ1bihpLmdldChMZSkpKTticmVhaztjYXNlImRlbGV0ZSI6b3x8KHJ1bihpLmdldChEZSkpLEMoZSkmJnJ1bihpLmdldChMZSkpKTticmVhaztjYXNlInNldCI6QyhlKSYmcnVuKGkuZ2V0KERlKSl9fWVuZEJhdGNoKCl9ZnVuY3Rpb24gcmVhY3RpdmVSZWFkQXJyYXkoZSl7Y29uc3QgdD10b1JhdyhlKTtyZXR1cm4gdD09PWU/dDoodHJhY2sodCwwLEZlKSxpc1NoYWxsb3coZSk/dDp0Lm1hcCh0b1JlYWN0aXZlKSl9ZnVuY3Rpb24gc2hhbGxvd1JlYWRBcnJheShlKXtyZXR1cm4gdHJhY2soZT10b1JhdyhlKSwwLEZlKSxlfWZ1bmN0aW9uIHRvV3JhcHBlZChlLHQpe3JldHVybiBpc1JlYWRvbmx5KGUpP2lzUmVhY3RpdmUoZSk/dG9SZWFkb25seSh0b1JlYWN0aXZlKHQpKTp0b1JlYWRvbmx5KHQpOnRvUmVhY3RpdmUodCl9Y29uc3QgQmU9e19fcHJvdG9fXzpudWxsLFtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGl0ZXJhdG9yKHRoaXMsU3ltYm9sLml0ZXJhdG9yLGU9PnRvV3JhcHBlZCh0aGlzLGUpKX0sY29uY2F0KC4uLmUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS5jb25jYXQoLi4uZS5tYXAoZT0+eShlKT9yZWFjdGl2ZVJlYWRBcnJheShlKTplKSl9LGVudHJpZXMoKXtyZXR1cm4gaXRlcmF0b3IodGhpcywiZW50cmllcyIsZT0+KGVbMV09dG9XcmFwcGVkKHRoaXMsZVsxXSksZSkpfSxldmVyeShlLHQpe3JldHVybiBhcHBseSh0aGlzLCJldmVyeSIsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxmaWx0ZXIoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywiZmlsdGVyIixlLHQsZT0+ZS5tYXAoZT0+dG9XcmFwcGVkKHRoaXMsZSkpLGFyZ3VtZW50cyl9LGZpbmQoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywiZmluZCIsZSx0LGU9PnRvV3JhcHBlZCh0aGlzLGUpLGFyZ3VtZW50cyl9LGZpbmRJbmRleChlLHQpe3JldHVybiBhcHBseSh0aGlzLCJmaW5kSW5kZXgiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZmluZExhc3QoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywiZmluZExhc3QiLGUsdCxlPT50b1dyYXBwZWQodGhpcyxlKSxhcmd1bWVudHMpfSxmaW5kTGFzdEluZGV4KGUsdCl7cmV0dXJuIGFwcGx5KHRoaXMsImZpbmRMYXN0SW5kZXgiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZm9yRWFjaChlLHQpe3JldHVybiBhcHBseSh0aGlzLCJmb3JFYWNoIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGluY2x1ZGVzKC4uLmUpe3JldHVybiBzZWFyY2hQcm94eSh0aGlzLCJpbmNsdWRlcyIsZSl9LGluZGV4T2YoLi4uZSl7cmV0dXJuIHNlYXJjaFByb3h5KHRoaXMsImluZGV4T2YiLGUpfSxqb2luKGUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS5qb2luKGUpfSxsYXN0SW5kZXhPZiguLi5lKXtyZXR1cm4gc2VhcmNoUHJveHkodGhpcywibGFzdEluZGV4T2YiLGUpfSxtYXAoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywibWFwIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LHBvcCgpe3JldHVybiBub1RyYWNraW5nKHRoaXMsInBvcCIpfSxwdXNoKC4uLmUpe3JldHVybiBub1RyYWNraW5nKHRoaXMsInB1c2giLGUpfSxyZWR1Y2UoZSwuLi50KXtyZXR1cm4gcmVkdWNlKHRoaXMsInJlZHVjZSIsZSx0KX0scmVkdWNlUmlnaHQoZSwuLi50KXtyZXR1cm4gcmVkdWNlKHRoaXMsInJlZHVjZVJpZ2h0IixlLHQpfSxzaGlmdCgpe3JldHVybiBub1RyYWNraW5nKHRoaXMsInNoaWZ0Iil9LHNvbWUoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywic29tZSIsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxzcGxpY2UoLi4uZSl7cmV0dXJuIG5vVHJhY2tpbmcodGhpcywic3BsaWNlIixlKX0sdG9SZXZlcnNlZCgpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS50b1JldmVyc2VkKCl9LHRvU29ydGVkKGUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS50b1NvcnRlZChlKX0sdG9TcGxpY2VkKC4uLmUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS50b1NwbGljZWQoLi4uZSl9LHVuc2hpZnQoLi4uZSl7cmV0dXJuIG5vVHJhY2tpbmcodGhpcywidW5zaGlmdCIsZSl9LHZhbHVlcygpe3JldHVybiBpdGVyYXRvcih0aGlzLCJ2YWx1ZXMiLGU9PnRvV3JhcHBlZCh0aGlzLGUpKX19O2Z1bmN0aW9uIGl0ZXJhdG9yKGUsdCxuKXtjb25zdCByPXNoYWxsb3dSZWFkQXJyYXkoZSksbz1yW3RdKCk7cmV0dXJuIHI9PT1lfHxpc1NoYWxsb3coZSl8fChvLl9uZXh0PW8ubmV4dCxvLm5leHQ9KCk9Pntjb25zdCBlPW8uX25leHQoKTtyZXR1cm4gZS5kb25lfHwoZS52YWx1ZT1uKGUudmFsdWUpKSxlfSksb31jb25zdCBVZT1BcnJheS5wcm90b3R5cGU7ZnVuY3Rpb24gYXBwbHkoZSx0LG4scixvLHMpe2NvbnN0IGk9c2hhbGxvd1JlYWRBcnJheShlKSxhPWkhPT1lJiYhaXNTaGFsbG93KGUpLGw9aVt0XTtpZihsIT09VWVbdF0pe2NvbnN0IHQ9bC5hcHBseShlLHMpO3JldHVybiBhP3RvUmVhY3RpdmUodCk6dH1sZXQgYz1uO2khPT1lJiYoYT9jPWZ1bmN0aW9uKHQscil7cmV0dXJuIG4uY2FsbCh0aGlzLHRvV3JhcHBlZChlLHQpLHIsZSl9Om4ubGVuZ3RoPjImJihjPWZ1bmN0aW9uKHQscil7cmV0dXJuIG4uY2FsbCh0aGlzLHQscixlKX0pKTtjb25zdCB1PWwuY2FsbChpLGMscik7cmV0dXJuIGEmJm8/byh1KTp1fWZ1bmN0aW9uIHJlZHVjZShlLHQsbixyKXtjb25zdCBvPXNoYWxsb3dSZWFkQXJyYXkoZSkscz1vIT09ZSYmIWlzU2hhbGxvdyhlKTtsZXQgaT1uLGE9ITE7byE9PWUmJihzPyhhPTA9PT1yLmxlbmd0aCxpPWZ1bmN0aW9uKHQscixvKXtyZXR1cm4gYSYmKGE9ITEsdD10b1dyYXBwZWQoZSx0KSksbi5jYWxsKHRoaXMsdCx0b1dyYXBwZWQoZSxyKSxvLGUpfSk6bi5sZW5ndGg+MyYmKGk9ZnVuY3Rpb24odCxyLG8pe3JldHVybiBuLmNhbGwodGhpcyx0LHIsbyxlKX0pKTtjb25zdCBsPW9bdF0oaSwuLi5yKTtyZXR1cm4gYT90b1dyYXBwZWQoZSxsKTpsfWZ1bmN0aW9uIHNlYXJjaFByb3h5KGUsdCxuKXtjb25zdCByPXRvUmF3KGUpO3RyYWNrKHIsMCxGZSk7Y29uc3Qgbz1yW3RdKC4uLm4pO3JldHVybi0xIT09byYmITEhPT1vfHwhaXNQcm94eShuWzBdKT9vOihuWzBdPXRvUmF3KG5bMF0pLHJbdF0oLi4ubikpfWZ1bmN0aW9uIG5vVHJhY2tpbmcoZSx0LG49W10pe3BhdXNlVHJhY2tpbmcoKSxzdGFydEJhdGNoKCk7Y29uc3Qgcj10b1JhdyhlKVt0XS5hcHBseShlLG4pO3JldHVybiBlbmRCYXRjaCgpLHJlc2V0VHJhY2tpbmcoKSxyfWNvbnN0IFdlPVIoIl9fcHJvdG9fXyxfX3ZfaXNSZWYsX19pc1Z1ZSIpLHplPW5ldyBTZXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKS5maWx0ZXIoZT0+ImFyZ3VtZW50cyIhPT1lJiYiY2FsbGVyIiE9PWUpLm1hcChlPT5TeW1ib2xbZV0pLmZpbHRlcihnKSk7ZnVuY3Rpb24gaGFzT3duUHJvcGVydHkoZSl7ZyhlKXx8KGU9U3RyaW5nKGUpKTtjb25zdCB0PXRvUmF3KHRoaXMpO3JldHVybiB0cmFjayh0LDAsZSksdC5oYXNPd25Qcm9wZXJ0eShlKX1jbGFzcyBCYXNlUmVhY3RpdmVIYW5kbGVye2NvbnN0cnVjdG9yKGU9ITEsdD0hMSl7dGhpcy5faXNSZWFkb25seT1lLHRoaXMuX2lzU2hhbGxvdz10fWdldChlLHQsbil7aWYoIl9fdl9za2lwIj09PXQpcmV0dXJuIGUuX192X3NraXA7Y29uc3Qgcj10aGlzLl9pc1JlYWRvbmx5LG89dGhpcy5faXNTaGFsbG93O2lmKCJfX3ZfaXNSZWFjdGl2ZSI9PT10KXJldHVybiFyO2lmKCJfX3ZfaXNSZWFkb25seSI9PT10KXJldHVybiByO2lmKCJfX3ZfaXNTaGFsbG93Ij09PXQpcmV0dXJuIG87aWYoIl9fdl9yYXciPT09dClyZXR1cm4gbj09PShyP28/cnQ6bnQ6bz90dDpldCkuZ2V0KGUpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik/ZTp2b2lkIDA7Y29uc3Qgcz15KGUpO2lmKCFyKXtsZXQgZTtpZihzJiYoZT1CZVt0XSkpcmV0dXJuIGU7aWYoImhhc093blByb3BlcnR5Ij09PXQpcmV0dXJuIGhhc093blByb3BlcnR5fWNvbnN0IGk9UmVmbGVjdC5nZXQoZSx0LGlzUmVmKGUpP2U6bik7aWYoZyh0KT96ZS5oYXModCk6V2UodCkpcmV0dXJuIGk7aWYocnx8dHJhY2soZSwwLHQpLG8pcmV0dXJuIGk7aWYoaXNSZWYoaSkpe2NvbnN0IGU9cyYmVCh0KT9pOmkudmFsdWU7cmV0dXJuIHImJmIoZSk/cmVhZG9ubHkoZSk6ZX1yZXR1cm4gYihpKT9yP3JlYWRvbmx5KGkpOnJlYWN0aXZlKGkpOml9fWNsYXNzIE11dGFibGVSZWFjdGl2ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlUmVhY3RpdmVIYW5kbGVye2NvbnN0cnVjdG9yKGU9ITEpe3N1cGVyKCExLGUpfXNldChlLHQsbixyKXtsZXQgbz1lW3RdO2NvbnN0IHM9eShlKSYmVCh0KTtpZighdGhpcy5faXNTaGFsbG93KXtjb25zdCBlPWlzUmVhZG9ubHkobyk7aWYoaXNTaGFsbG93KG4pfHxpc1JlYWRvbmx5KG4pfHwobz10b1JhdyhvKSxuPXRvUmF3KG4pKSwhcyYmaXNSZWYobykmJiFpc1JlZihuKSlyZXR1cm4gZXx8KG8udmFsdWU9biksITB9Y29uc3QgaT1zP051bWJlcih0KTxlLmxlbmd0aDp2KGUsdCksYT1SZWZsZWN0LnNldChlLHQsbixpc1JlZihlKT9lOnIpO3JldHVybiBlPT09dG9SYXcocikmJihpP2sobixvKSYmdHJpZ2dlcihlLCJzZXQiLHQsbik6dHJpZ2dlcihlLCJhZGQiLHQsbikpLGF9ZGVsZXRlUHJvcGVydHkoZSx0KXtjb25zdCBuPXYoZSx0KTtlW3RdO2NvbnN0IHI9UmVmbGVjdC5kZWxldGVQcm9wZXJ0eShlLHQpO3JldHVybiByJiZuJiZ0cmlnZ2VyKGUsImRlbGV0ZSIsdCx2b2lkIDApLHJ9aGFzKGUsdCl7Y29uc3Qgbj1SZWZsZWN0LmhhcyhlLHQpO3JldHVybiBnKHQpJiZ6ZS5oYXModCl8fHRyYWNrKGUsMCx0KSxufW93bktleXMoZSl7cmV0dXJuIHRyYWNrKGUsMCx5KGUpPyJsZW5ndGgiOkRlKSxSZWZsZWN0Lm93bktleXMoZSl9fWNsYXNzIFJlYWRvbmx5UmVhY3RpdmVIYW5kbGVyIGV4dGVuZHMgQmFzZVJlYWN0aXZlSGFuZGxlcntjb25zdHJ1Y3RvcihlPSExKXtzdXBlcighMCxlKX1zZXQoZSx0KXtyZXR1cm4hMH1kZWxldGVQcm9wZXJ0eShlLHQpe3JldHVybiEwfX1jb25zdCBxZT1uZXcgTXV0YWJsZVJlYWN0aXZlSGFuZGxlcixLZT1uZXcgUmVhZG9ubHlSZWFjdGl2ZUhhbmRsZXIsSmU9bmV3IE11dGFibGVSZWFjdGl2ZUhhbmRsZXIoITApLEdlPW5ldyBSZWFkb25seVJlYWN0aXZlSGFuZGxlcighMCksdG9TaGFsbG93PWU9PmUsZ2V0UHJvdG89ZT0+UmVmbGVjdC5nZXRQcm90b3R5cGVPZihlKTtmdW5jdGlvbiBjcmVhdGVSZWFkb25seU1ldGhvZChlKXtyZXR1cm4gZnVuY3Rpb24oLi4udCl7cmV0dXJuImRlbGV0ZSIhPT1lJiYoImNsZWFyIj09PWU/dm9pZCAwOnRoaXMpfX1mdW5jdGlvbiBjcmVhdGVJbnN0cnVtZW50YXRpb25zKGUsdCl7Y29uc3Qgbj17Z2V0KG4pe2NvbnN0IHI9dGhpcy5fX3ZfcmF3LG89dG9SYXcocikscz10b1JhdyhuKTtlfHwoayhuLHMpJiZ0cmFjayhvLDAsbiksdHJhY2sobywwLHMpKTtjb25zdHtoYXM6aX09Z2V0UHJvdG8obyksYT10P3RvU2hhbGxvdzplP3RvUmVhZG9ubHk6dG9SZWFjdGl2ZTtyZXR1cm4gaS5jYWxsKG8sbik/YShyLmdldChuKSk6aS5jYWxsKG8scyk/YShyLmdldChzKSk6dm9pZChyIT09byYmci5nZXQobikpfSxnZXQgc2l6ZSgpe2NvbnN0IHQ9dGhpcy5fX3ZfcmF3O3JldHVybiFlJiZ0cmFjayh0b1Jhdyh0KSwwLERlKSx0LnNpemV9LGhhcyh0KXtjb25zdCBuPXRoaXMuX192X3JhdyxyPXRvUmF3KG4pLG89dG9SYXcodCk7cmV0dXJuIGV8fChrKHQsbykmJnRyYWNrKHIsMCx0KSx0cmFjayhyLDAsbykpLHQ9PT1vP24uaGFzKHQpOm4uaGFzKHQpfHxuLmhhcyhvKX0sZm9yRWFjaChuLHIpe2NvbnN0IG89dGhpcyxzPW8uX192X3JhdyxpPXRvUmF3KHMpLGE9dD90b1NoYWxsb3c6ZT90b1JlYWRvbmx5OnRvUmVhY3RpdmU7cmV0dXJuIWUmJnRyYWNrKGksMCxEZSkscy5mb3JFYWNoKChlLHQpPT5uLmNhbGwocixhKGUpLGEodCksbykpfX07dyhuLGU/e2FkZDpjcmVhdGVSZWFkb25seU1ldGhvZCgiYWRkIiksc2V0OmNyZWF0ZVJlYWRvbmx5TWV0aG9kKCJzZXQiKSxkZWxldGU6Y3JlYXRlUmVhZG9ubHlNZXRob2QoImRlbGV0ZSIpLGNsZWFyOmNyZWF0ZVJlYWRvbmx5TWV0aG9kKCJjbGVhciIpfTp7YWRkKGUpe2NvbnN0IG49dG9SYXcodGhpcykscj1nZXRQcm90byhuKSxvPXRvUmF3KGUpLHM9dHx8aXNTaGFsbG93KGUpfHxpc1JlYWRvbmx5KGUpP2U6bztyZXR1cm4gci5oYXMuY2FsbChuLHMpfHxrKGUscykmJnIuaGFzLmNhbGwobixlKXx8ayhvLHMpJiZyLmhhcy5jYWxsKG4sbyl8fChuLmFkZChzKSx0cmlnZ2VyKG4sImFkZCIscyxzKSksdGhpc30sc2V0KGUsbil7dHx8aXNTaGFsbG93KG4pfHxpc1JlYWRvbmx5KG4pfHwobj10b1JhdyhuKSk7Y29uc3Qgcj10b1Jhdyh0aGlzKSx7aGFzOm8sZ2V0OnN9PWdldFByb3RvKHIpO2xldCBpPW8uY2FsbChyLGUpO2l8fChlPXRvUmF3KGUpLGk9by5jYWxsKHIsZSkpO2NvbnN0IGE9cy5jYWxsKHIsZSk7cmV0dXJuIHIuc2V0KGUsbiksaT9rKG4sYSkmJnRyaWdnZXIociwic2V0IixlLG4pOnRyaWdnZXIociwiYWRkIixlLG4pLHRoaXN9LGRlbGV0ZShlKXtjb25zdCB0PXRvUmF3KHRoaXMpLHtoYXM6bixnZXQ6cn09Z2V0UHJvdG8odCk7bGV0IG89bi5jYWxsKHQsZSk7b3x8KGU9dG9SYXcoZSksbz1uLmNhbGwodCxlKSksciYmci5jYWxsKHQsZSk7Y29uc3Qgcz10LmRlbGV0ZShlKTtyZXR1cm4gbyYmdHJpZ2dlcih0LCJkZWxldGUiLGUsdm9pZCAwKSxzfSxjbGVhcigpe2NvbnN0IGU9dG9SYXcodGhpcyksdD0wIT09ZS5zaXplLG49ZS5jbGVhcigpO3JldHVybiB0JiZ0cmlnZ2VyKGUsImNsZWFyIix2b2lkIDAsdm9pZCAwKSxufX0pO3JldHVyblsia2V5cyIsInZhbHVlcyIsImVudHJpZXMiLFN5bWJvbC5pdGVyYXRvcl0uZm9yRWFjaChyPT57bltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe2NvbnN0IG89dGhpcy5fX3ZfcmF3LHM9dG9SYXcobyksaT1DKHMpLGE9ImVudHJpZXMiPT09ZXx8ZT09PVN5bWJvbC5pdGVyYXRvciYmaSxsPSJrZXlzIj09PWUmJmksYz1vW2VdKC4uLnIpLHU9bj90b1NoYWxsb3c6dD90b1JlYWRvbmx5OnRvUmVhY3RpdmU7cmV0dXJuIXQmJnRyYWNrKHMsMCxsP0xlOkRlKSx3KE9iamVjdC5jcmVhdGUoYykse25leHQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09Yy5uZXh0KCk7cmV0dXJuIHQ/e3ZhbHVlOmUsZG9uZTp0fTp7dmFsdWU6YT9bdShlWzBdKSx1KGVbMV0pXTp1KGUpLGRvbmU6dH19fSl9fShyLGUsdCl9KSxufWZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihlLHQpe2NvbnN0IG49Y3JlYXRlSW5zdHJ1bWVudGF0aW9ucyhlLHQpO3JldHVybih0LHIsbyk9PiJfX3ZfaXNSZWFjdGl2ZSI9PT1yPyFlOiJfX3ZfaXNSZWFkb25seSI9PT1yP2U6Il9fdl9yYXciPT09cj90OlJlZmxlY3QuZ2V0KHYobixyKSYmciBpbiB0P246dCxyLG8pfWNvbnN0IFplPXtnZXQ6Y3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKCExLCExKX0sWGU9e2dldDpjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIoITEsITApfSxZZT17Z2V0OmNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcighMCwhMSl9LFFlPXtnZXQ6Y3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKCEwLCEwKX0sZXQ9bmV3IFdlYWtNYXAsdHQ9bmV3IFdlYWtNYXAsbnQ9bmV3IFdlYWtNYXAscnQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcmVhY3RpdmUoZSl7cmV0dXJuIGlzUmVhZG9ubHkoZSk/ZTpjcmVhdGVSZWFjdGl2ZU9iamVjdChlLCExLHFlLFplLGV0KX1mdW5jdGlvbiBzaGFsbG93UmVhY3RpdmUoZSl7cmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KGUsITEsSmUsWGUsdHQpfWZ1bmN0aW9uIHJlYWRvbmx5KGUpe3JldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdChlLCEwLEtlLFllLG50KX1mdW5jdGlvbiBzaGFsbG93UmVhZG9ubHkoZSl7cmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KGUsITAsR2UsUWUscnQpfWZ1bmN0aW9uIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KGUsdCxuLHIsbyl7aWYoIWIoZSkpcmV0dXJuIGU7aWYoZS5fX3ZfcmF3JiYoIXR8fCFlLl9fdl9pc1JlYWN0aXZlKSlyZXR1cm4gZTtjb25zdCBzPShpPWUpLl9fdl9za2lwfHwhT2JqZWN0LmlzRXh0ZW5zaWJsZShpKT8wOmZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIk9iamVjdCI6Y2FzZSJBcnJheSI6cmV0dXJuIDE7Y2FzZSJNYXAiOmNhc2UiU2V0IjpjYXNlIldlYWtNYXAiOmNhc2UiV2Vha1NldCI6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19KFMoaSkpO3ZhciBpO2lmKDA9PT1zKXJldHVybiBlO2NvbnN0IGE9by5nZXQoZSk7aWYoYSlyZXR1cm4gYTtjb25zdCBsPW5ldyBQcm94eShlLDI9PT1zP3I6bik7cmV0dXJuIG8uc2V0KGUsbCksbH1mdW5jdGlvbiBpc1JlYWN0aXZlKGUpe3JldHVybiBpc1JlYWRvbmx5KGUpP2lzUmVhY3RpdmUoZS5fX3ZfcmF3KTohKCFlfHwhZS5fX3ZfaXNSZWFjdGl2ZSl9ZnVuY3Rpb24gaXNSZWFkb25seShlKXtyZXR1cm4hKCFlfHwhZS5fX3ZfaXNSZWFkb25seSl9ZnVuY3Rpb24gaXNTaGFsbG93KGUpe3JldHVybiEoIWV8fCFlLl9fdl9pc1NoYWxsb3cpfWZ1bmN0aW9uIGlzUHJveHkoZSl7cmV0dXJuISFlJiYhIWUuX192X3Jhd31mdW5jdGlvbiB0b1JhdyhlKXtjb25zdCB0PWUmJmUuX192X3JhdztyZXR1cm4gdD90b1Jhdyh0KTplfWZ1bmN0aW9uIG1hcmtSYXcoZSl7cmV0dXJuIXYoZSwiX192X3NraXAiKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmXyhlLCJfX3Zfc2tpcCIsITApLGV9Y29uc3QgdG9SZWFjdGl2ZT1lPT5iKGUpP3JlYWN0aXZlKGUpOmUsdG9SZWFkb25seT1lPT5iKGUpP3JlYWRvbmx5KGUpOmU7ZnVuY3Rpb24gaXNSZWYoZSl7cmV0dXJuISFlJiYhMD09PWUuX192X2lzUmVmfWZ1bmN0aW9uIHJlZihlKXtyZXR1cm4gY3JlYXRlUmVmKGUsITEpfWZ1bmN0aW9uIHNoYWxsb3dSZWYoZSl7cmV0dXJuIGNyZWF0ZVJlZihlLCEwKX1mdW5jdGlvbiBjcmVhdGVSZWYoZSx0KXtyZXR1cm4gaXNSZWYoZSk/ZTpuZXcgUmVmSW1wbChlLHQpfWNsYXNzIFJlZkltcGx7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRlcD1uZXcgRGVwLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzU2hhbGxvdz0hMSx0aGlzLl9yYXdWYWx1ZT10P2U6dG9SYXcoZSksdGhpcy5fdmFsdWU9dD9lOnRvUmVhY3RpdmUoZSksdGhpcy5fX3ZfaXNTaGFsbG93PXR9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGVwLnRyYWNrKCksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5fcmF3VmFsdWUsbj10aGlzLl9fdl9pc1NoYWxsb3d8fGlzU2hhbGxvdyhlKXx8aXNSZWFkb25seShlKTtlPW4/ZTp0b1JhdyhlKSxrKGUsdCkmJih0aGlzLl9yYXdWYWx1ZT1lLHRoaXMuX3ZhbHVlPW4/ZTp0b1JlYWN0aXZlKGUpLHRoaXMuZGVwLnRyaWdnZXIoKSl9fWZ1bmN0aW9uIHVucmVmKGUpe3JldHVybiBpc1JlZihlKT9lLnZhbHVlOmV9ZnVuY3Rpb24gdG9WYWx1ZShlKXtyZXR1cm4gZihlKT9lKCk6dW5yZWYoZSl9Y29uc3Qgb3Q9e2dldDooZSx0LG4pPT4iX192X3JhdyI9PT10P2U6dW5yZWYoUmVmbGVjdC5nZXQoZSx0LG4pKSxzZXQ6KGUsdCxuLHIpPT57Y29uc3Qgbz1lW3RdO3JldHVybiBpc1JlZihvKSYmIWlzUmVmKG4pPyhvLnZhbHVlPW4sITApOlJlZmxlY3Quc2V0KGUsdCxuLHIpfX07ZnVuY3Rpb24gcHJveHlSZWZzKGUpe3JldHVybiBpc1JlYWN0aXZlKGUpP2U6bmV3IFByb3h5KGUsb3QpfWNsYXNzIEN1c3RvbVJlZkltcGx7Y29uc3RydWN0b3IoZSl7dGhpcy5fX3ZfaXNSZWY9ITAsdGhpcy5fdmFsdWU9dm9pZCAwO2NvbnN0IHQ9dGhpcy5kZXA9bmV3IERlcCx7Z2V0Om4sc2V0OnJ9PWUodC50cmFjay5iaW5kKHQpLHQudHJpZ2dlci5iaW5kKHQpKTt0aGlzLl9nZXQ9bix0aGlzLl9zZXQ9cn1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWU9dGhpcy5fZ2V0KCl9c2V0IHZhbHVlKGUpe3RoaXMuX3NldChlKX19ZnVuY3Rpb24gY3VzdG9tUmVmKGUpe3JldHVybiBuZXcgQ3VzdG9tUmVmSW1wbChlKX1jbGFzcyBPYmplY3RSZWZJbXBse2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl9vYmplY3Q9ZSx0aGlzLl9kZWZhdWx0VmFsdWU9bix0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLl92YWx1ZT12b2lkIDAsdGhpcy5fa2V5PWcodCk/dDpTdHJpbmcodCksdGhpcy5fcmF3PXRvUmF3KGUpO2xldCByPSEwLG89ZTtpZigheShlKXx8Zyh0aGlzLl9rZXkpfHwhVCh0aGlzLl9rZXkpKWRve3I9IWlzUHJveHkobyl8fGlzU2hhbGxvdyhvKX13aGlsZShyJiYobz1vLl9fdl9yYXcpKTt0aGlzLl9zaGFsbG93PXJ9Z2V0IHZhbHVlKCl7bGV0IGU9dGhpcy5fb2JqZWN0W3RoaXMuX2tleV07cmV0dXJuIHRoaXMuX3NoYWxsb3cmJihlPXVucmVmKGUpKSx0aGlzLl92YWx1ZT12b2lkIDA9PT1lP3RoaXMuX2RlZmF1bHRWYWx1ZTplfXNldCB2YWx1ZShlKXtpZih0aGlzLl9zaGFsbG93JiZpc1JlZih0aGlzLl9yYXdbdGhpcy5fa2V5XSkpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0W3RoaXMuX2tleV07aWYoaXNSZWYodCkpcmV0dXJuIHZvaWQodC52YWx1ZT1lKX10aGlzLl9vYmplY3RbdGhpcy5fa2V5XT1lfWdldCBkZXAoKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtjb25zdCBuPUllLmdldChlKTtyZXR1cm4gbiYmbi5nZXQodCl9KHRoaXMuX3Jhdyx0aGlzLl9rZXkpfX1jbGFzcyBHZXR0ZXJSZWZJbXBse2NvbnN0cnVjdG9yKGUpe3RoaXMuX2dldHRlcj1lLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzUmVhZG9ubHk9ITAsdGhpcy5fdmFsdWU9dm9pZCAwfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXR0ZXIoKX19ZnVuY3Rpb24gcHJvcGVydHlUb1JlZihlLHQsbil7cmV0dXJuIG5ldyBPYmplY3RSZWZJbXBsKGUsdCxuKX1jbGFzcyBDb21wdXRlZFJlZkltcGx7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuZm49ZSx0aGlzLnNldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLmRlcD1uZXcgRGVwKHRoaXMpLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuZGVwcz12b2lkIDAsdGhpcy5kZXBzVGFpbD12b2lkIDAsdGhpcy5mbGFncz0xNix0aGlzLmdsb2JhbFZlcnNpb249amUtMSx0aGlzLm5leHQ9dm9pZCAwLHRoaXMuZWZmZWN0PXRoaXMsdGhpcy5fX3ZfaXNSZWFkb25seT0hdCx0aGlzLmlzU1NSPW59bm90aWZ5KCl7aWYodGhpcy5mbGFnc3w9MTYsISg4JnRoaXMuZmxhZ3MpJiZQZSE9PXRoaXMpcmV0dXJuIGJhdGNoKHRoaXMsITApLCEwfWdldCB2YWx1ZSgpe2NvbnN0IGU9dGhpcy5kZXAudHJhY2soKTtyZXR1cm4gcmVmcmVzaENvbXB1dGVkKHRoaXMpLGUmJihlLnZlcnNpb249dGhpcy5kZXAudmVyc2lvbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe3RoaXMuc2V0dGVyJiZ0aGlzLnNldHRlcihlKX19Y29uc3Qgc3Q9e30saXQ9bmV3IFdlYWtNYXA7bGV0IGF0O2Z1bmN0aW9uIG9uV2F0Y2hlckNsZWFudXAoZSx0PSExLG49YXQpe2lmKG4pe2xldCB0PWl0LmdldChuKTt0fHxpdC5zZXQobix0PVtdKSx0LnB1c2goZSl9fWZ1bmN0aW9uIHRyYXZlcnNlKGUsdD0xLzAsbil7aWYodDw9MHx8IWIoZSl8fGUuX192X3NraXApcmV0dXJuIGU7aWYoKChuPW58fG5ldyBNYXApLmdldChlKXx8MCk+PXQpcmV0dXJuIGU7aWYobi5zZXQoZSx0KSx0LS0saXNSZWYoZSkpdHJhdmVyc2UoZS52YWx1ZSx0LG4pO2Vsc2UgaWYoeShlKSlmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl0cmF2ZXJzZShlW3JdLHQsbik7ZWxzZSBpZih4KGUpfHxDKGUpKWUuZm9yRWFjaChlPT57dHJhdmVyc2UoZSx0LG4pfSk7ZWxzZSBpZihFKGUpKXtmb3IoY29uc3QgciBpbiBlKXRyYXZlcnNlKGVbcl0sdCxuKTtmb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiZ0cmF2ZXJzZShlW3JdLHQsbil9cmV0dXJuIGV9Y29uc3QgbHQ9W107Y29uc3QgY3Q9e3NwOiJzZXJ2ZXJQcmVmZXRjaCBob29rIixiYzoiYmVmb3JlQ3JlYXRlIGhvb2siLGM6ImNyZWF0ZWQgaG9vayIsYm06ImJlZm9yZU1vdW50IGhvb2siLG06Im1vdW50ZWQgaG9vayIsYnU6ImJlZm9yZVVwZGF0ZSBob29rIix1OiJ1cGRhdGVkIixidW06ImJlZm9yZVVubW91bnQgaG9vayIsdW06InVubW91bnRlZCBob29rIixhOiJhY3RpdmF0ZWQgaG9vayIsZGE6ImRlYWN0aXZhdGVkIGhvb2siLGVjOiJlcnJvckNhcHR1cmVkIGhvb2siLHJ0YzoicmVuZGVyVHJhY2tlZCBob29rIixydGc6InJlbmRlclRyaWdnZXJlZCBob29rIiwwOiJzZXR1cCBmdW5jdGlvbiIsMToicmVuZGVyIGZ1bmN0aW9uIiwyOiJ3YXRjaGVyIGdldHRlciIsMzoid2F0Y2hlciBjYWxsYmFjayIsNDoid2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uIiw1OiJuYXRpdmUgZXZlbnQgaGFuZGxlciIsNjoiY29tcG9uZW50IGV2ZW50IGhhbmRsZXIiLDc6InZub2RlIGhvb2siLDg6ImRpcmVjdGl2ZSBob29rIiw5OiJ0cmFuc2l0aW9uIGhvb2siLDEwOiJhcHAgZXJyb3JIYW5kbGVyIiwxMToiYXBwIHdhcm5IYW5kbGVyIiwxMjoicmVmIGZ1bmN0aW9uIiwxMzoiYXN5bmMgY29tcG9uZW50IGxvYWRlciIsMTQ6InNjaGVkdWxlciBmbHVzaCIsMTU6ImNvbXBvbmVudCB1cGRhdGUiLDE2OiJhcHAgdW5tb3VudCBjbGVhbnVwIGZ1bmN0aW9uIn07ZnVuY3Rpb24gY2FsbFdpdGhFcnJvckhhbmRsaW5nKGUsdCxuLHIpe3RyeXtyZXR1cm4gcj9lKC4uLnIpOmUoKX1jYXRjaChlKXtoYW5kbGVFcnJvcihlLHQsbil9fWZ1bmN0aW9uIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGUsdCxuLHIpe2lmKGYoZSkpe2NvbnN0IG89Y2FsbFdpdGhFcnJvckhhbmRsaW5nKGUsdCxuLHIpO3JldHVybiBvJiZWKG8pJiZvLmNhdGNoKGU9PntoYW5kbGVFcnJvcihlLHQsbil9KSxvfWlmKHkoZSkpe2NvbnN0IG89W107Zm9yKGxldCBzPTA7czxlLmxlbmd0aDtzKyspby5wdXNoKGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGVbc10sdCxuLHIpKTtyZXR1cm4gb319ZnVuY3Rpb24gaGFuZGxlRXJyb3IoZSx0LG4scj0hMCl7dCYmdC52bm9kZTtjb25zdHtlcnJvckhhbmRsZXI6byx0aHJvd1VuaGFuZGxlZEVycm9ySW5Qcm9kdWN0aW9uOnN9PXQmJnQuYXBwQ29udGV4dC5jb25maWd8fG07aWYodCl7bGV0IHI9dC5wYXJlbnQ7Y29uc3Qgcz10LnByb3h5LGk9YGh0dHBzOi8vdnVlanMub3JnL2Vycm9yLXJlZmVyZW5jZS8jcnVudGltZS0ke259YDtmb3IoO3I7KXtjb25zdCB0PXIuZWM7aWYodClmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZighMT09PXRbbl0oZSxzLGkpKXJldHVybjtyPXIucGFyZW50fWlmKG8pcmV0dXJuIHBhdXNlVHJhY2tpbmcoKSxjYWxsV2l0aEVycm9ySGFuZGxpbmcobyxudWxsLDEwLFtlLHMsaV0pLHZvaWQgcmVzZXRUcmFja2luZygpfSFmdW5jdGlvbihlLHQsbixyPSEwLG89ITEpe2lmKG8pdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfShlLDAsMCxyLHMpfWNvbnN0IHV0PVtdO2xldCBwdD0tMTtjb25zdCBkdD1bXTtsZXQgZnQ9bnVsbCxodD0wO2NvbnN0IGd0PVByb21pc2UucmVzb2x2ZSgpO2xldCBtdD1udWxsO2Z1bmN0aW9uIG5leHRUaWNrKGUpe2NvbnN0IHQ9bXR8fGd0O3JldHVybiBlP3QudGhlbih0aGlzP2UuYmluZCh0aGlzKTplKTp0fWZ1bmN0aW9uIHF1ZXVlSm9iKGUpe2lmKCEoMSZlLmZsYWdzKSl7Y29uc3QgdD1nZXRJZChlKSxuPXV0W3V0Lmxlbmd0aC0xXTshbnx8ISgyJmUuZmxhZ3MpJiZ0Pj1nZXRJZChuKT91dC5wdXNoKGUpOnV0LnNwbGljZShmdW5jdGlvbihlKXtsZXQgdD1wdCsxLG49dXQubGVuZ3RoO2Zvcig7dDxuOyl7Y29uc3Qgcj10K24+Pj4xLG89dXRbcl0scz1nZXRJZChvKTtzPGV8fHM9PT1lJiYyJm8uZmxhZ3M/dD1yKzE6bj1yfXJldHVybiB0fSh0KSwwLGUpLGUuZmxhZ3N8PTEscXVldWVGbHVzaCgpfX1mdW5jdGlvbiBxdWV1ZUZsdXNoKCl7bXR8fChtdD1ndC50aGVuKGZsdXNoSm9icykpfWZ1bmN0aW9uIHF1ZXVlUG9zdEZsdXNoQ2IoZSl7eShlKT9kdC5wdXNoKC4uLmUpOmZ0JiYtMT09PWUuaWQ/ZnQuc3BsaWNlKGh0KzEsMCxlKToxJmUuZmxhZ3N8fChkdC5wdXNoKGUpLGUuZmxhZ3N8PTEpLHF1ZXVlRmx1c2goKX1mdW5jdGlvbiBmbHVzaFByZUZsdXNoQ2JzKGUsdCxuPXB0KzEpe2Zvcig7bjx1dC5sZW5ndGg7bisrKXtjb25zdCB0PXV0W25dO2lmKHQmJjImdC5mbGFncyl7aWYoZSYmdC5pZCE9PWUudWlkKWNvbnRpbnVlO3V0LnNwbGljZShuLDEpLG4tLSw0JnQuZmxhZ3MmJih0LmZsYWdzJj0tMiksdCgpLDQmdC5mbGFnc3x8KHQuZmxhZ3MmPS0yKX19fWZ1bmN0aW9uIGZsdXNoUG9zdEZsdXNoQ2JzKGUpe2lmKGR0Lmxlbmd0aCl7Y29uc3QgZT1bLi4ubmV3IFNldChkdCldLnNvcnQoKGUsdCk9PmdldElkKGUpLWdldElkKHQpKTtpZihkdC5sZW5ndGg9MCxmdClyZXR1cm4gdm9pZCBmdC5wdXNoKC4uLmUpO2ZvcihmdD1lLGh0PTA7aHQ8ZnQubGVuZ3RoO2h0Kyspe2NvbnN0IGU9ZnRbaHRdOzQmZS5mbGFncyYmKGUuZmxhZ3MmPS0yKSw4JmUuZmxhZ3N8fGUoKSxlLmZsYWdzJj0tMn1mdD1udWxsLGh0PTB9fWNvbnN0IGdldElkPWU9Pm51bGw9PWUuaWQ/MiZlLmZsYWdzPy0xOjEvMDplLmlkO2Z1bmN0aW9uIGZsdXNoSm9icyhlKXt0cnl7Zm9yKHB0PTA7cHQ8dXQubGVuZ3RoO3B0Kyspe2NvbnN0IGU9dXRbcHRdOyFlfHw4JmUuZmxhZ3N8fCg0JmUuZmxhZ3MmJihlLmZsYWdzJj0tMiksY2FsbFdpdGhFcnJvckhhbmRsaW5nKGUsZS5pLGUuaT8xNToxNCksNCZlLmZsYWdzfHwoZS5mbGFncyY9LTIpKX19ZmluYWxseXtmb3IoO3B0PHV0Lmxlbmd0aDtwdCsrKXtjb25zdCBlPXV0W3B0XTtlJiYoZS5mbGFncyY9LTIpfXB0PS0xLHV0Lmxlbmd0aD0wLGZsdXNoUG9zdEZsdXNoQ2JzKCksbXQ9bnVsbCwodXQubGVuZ3RofHxkdC5sZW5ndGgpJiZmbHVzaEpvYnMoKX19bGV0IHl0LHZ0PVtdO2xldCBfdD1udWxsLGJ0PW51bGw7ZnVuY3Rpb24gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEoZSl7Y29uc3QgdD1fdDtyZXR1cm4gX3Q9ZSxidD1lJiZlLnR5cGUuX19zY29wZUlkfHxudWxsLHR9ZnVuY3Rpb24gd2l0aEN0eChlLHQ9X3Qsbil7aWYoIXQpcmV0dXJuIGU7aWYoZS5fbilyZXR1cm4gZTtjb25zdCByZW5kZXJGbldpdGhDb250ZXh0PSguLi5uKT0+e3JlbmRlckZuV2l0aENvbnRleHQuX2QmJnNldEJsb2NrVHJhY2tpbmcoLTEpO2NvbnN0IHI9c2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEodCk7bGV0IG87dHJ5e289ZSguLi5uKX1maW5hbGx5e3NldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSQxKHIpLHJlbmRlckZuV2l0aENvbnRleHQuX2QmJnNldEJsb2NrVHJhY2tpbmcoMSl9cmV0dXJuIG99O3JldHVybiByZW5kZXJGbldpdGhDb250ZXh0Ll9uPSEwLHJlbmRlckZuV2l0aENvbnRleHQuX2M9ITAscmVuZGVyRm5XaXRoQ29udGV4dC5fZD0hMCxyZW5kZXJGbldpdGhDb250ZXh0fWZ1bmN0aW9uIGludm9rZURpcmVjdGl2ZUhvb2soZSx0LG4scil7Y29uc3Qgbz1lLmRpcnMscz10JiZ0LmRpcnM7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspe2NvbnN0IGE9b1tpXTtzJiYoYS5vbGRWYWx1ZT1zW2ldLnZhbHVlKTtsZXQgbD1hLmRpcltyXTtsJiYocGF1c2VUcmFja2luZygpLGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGwsbiw4LFtlLmVsLGEsZSx0XSkscmVzZXRUcmFja2luZygpKX19ZnVuY3Rpb24gcHJvdmlkZShlLHQpe2lmKHluKXtsZXQgbj15bi5wcm92aWRlcztjb25zdCByPXluLnBhcmVudCYmeW4ucGFyZW50LnByb3ZpZGVzO3I9PT1uJiYobj15bi5wcm92aWRlcz1PYmplY3QuY3JlYXRlKHIpKSxuW2VdPXR9fWZ1bmN0aW9uIGluamVjdChlLHQsbj0hMSl7Y29uc3Qgcj1nZXRDdXJyZW50SW5zdGFuY2UoKTtpZihyfHxlbil7bGV0IG89ZW4/ZW4uX2NvbnRleHQucHJvdmlkZXM6cj9udWxsPT1yLnBhcmVudHx8ci5jZT9yLnZub2RlLmFwcENvbnRleHQmJnIudm5vZGUuYXBwQ29udGV4dC5wcm92aWRlczpyLnBhcmVudC5wcm92aWRlczp2b2lkIDA7aWYobyYmZSBpbiBvKXJldHVybiBvW2VdO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlyZXR1cm4gbiYmZih0KT90LmNhbGwociYmci5wcm94eSk6dH19ZnVuY3Rpb24gaGFzSW5qZWN0aW9uQ29udGV4dCgpe3JldHVybiEoIWdldEN1cnJlbnRJbnN0YW5jZSgpJiYhZW4pfWNvbnN0IGt0PVN5bWJvbC5mb3IoInYtc2N4IiksdXNlU1NSQ29udGV4dD0oKT0+aW5qZWN0KGt0KTtmdW5jdGlvbiB3YXRjaEVmZmVjdChlLHQpe3JldHVybiBkb1dhdGNoKGUsbnVsbCx0KX1mdW5jdGlvbiB3YXRjaFN5bmNFZmZlY3QoZSx0KXtyZXR1cm4gZG9XYXRjaChlLG51bGwse2ZsdXNoOiJzeW5jIn0pfWZ1bmN0aW9uIHdhdGNoKGUsdCxuKXtyZXR1cm4gZG9XYXRjaChlLHQsbil9ZnVuY3Rpb24gZG9XYXRjaChlLHQsbj1tKXtjb25zdHtpbW1lZGlhdGU6cixkZWVwOm8sZmx1c2g6cyxvbmNlOml9PW4sYT13KHt9LG4pLGw9dCYmcnx8IXQmJiJwb3N0IiE9PXM7bGV0IGM7aWYoQ24paWYoInN5bmMiPT09cyl7Y29uc3QgZT11c2VTU1JDb250ZXh0KCk7Yz1lLl9fd2F0Y2hlckhhbmRsZXN8fChlLl9fd2F0Y2hlckhhbmRsZXM9W10pfWVsc2UgaWYoIWwpe2NvbnN0IHdhdGNoU3RvcEhhbmRsZT0oKT0+e307cmV0dXJuIHdhdGNoU3RvcEhhbmRsZS5zdG9wPVAsd2F0Y2hTdG9wSGFuZGxlLnJlc3VtZT1QLHdhdGNoU3RvcEhhbmRsZS5wYXVzZT1QLHdhdGNoU3RvcEhhbmRsZX1jb25zdCB1PXluO2EuY2FsbD0oZSx0LG4pPT5jYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhlLHUsdCxuKTtsZXQgcD0hMTsicG9zdCI9PT1zP2Euc2NoZWR1bGVyPWU9PntvbihlLHUmJnUuc3VzcGVuc2UpfToic3luYyIhPT1zJiYocD0hMCxhLnNjaGVkdWxlcj0oZSx0KT0+e3Q/ZSgpOnF1ZXVlSm9iKGUpfSksYS5hdWdtZW50Sm9iPWU9Pnt0JiYoZS5mbGFnc3w9NCkscCYmKGUuZmxhZ3N8PTIsdSYmKGUuaWQ9dS51aWQsZS5pPXUpKX07Y29uc3QgZD1mdW5jdGlvbihlLHQsbj1tKXtjb25zdHtpbW1lZGlhdGU6cixkZWVwOm8sb25jZTpzLHNjaGVkdWxlcjppLGF1Z21lbnRKb2I6YSxjYWxsOmx9PW4scmVhY3RpdmVHZXR0ZXI9ZT0+bz9lOmlzU2hhbGxvdyhlKXx8ITE9PT1vfHwwPT09bz90cmF2ZXJzZShlLDEpOnRyYXZlcnNlKGUpO2xldCBjLHUscCxkLGc9ITEsdj0hMTtpZihpc1JlZihlKT8odT0oKT0+ZS52YWx1ZSxnPWlzU2hhbGxvdyhlKSk6aXNSZWFjdGl2ZShlKT8odT0oKT0+cmVhY3RpdmVHZXR0ZXIoZSksZz0hMCk6eShlKT8odj0hMCxnPWUuc29tZShlPT5pc1JlYWN0aXZlKGUpfHxpc1NoYWxsb3coZSkpLHU9KCk9PmUubWFwKGU9PmlzUmVmKGUpP2UudmFsdWU6aXNSZWFjdGl2ZShlKT9yZWFjdGl2ZUdldHRlcihlKTpmKGUpP2w/bChlLDIpOmUoKTp2b2lkIDApKTp1PWYoZSk/dD9sPygpPT5sKGUsMik6ZTooKT0+e2lmKHApe3BhdXNlVHJhY2tpbmcoKTt0cnl7cCgpfWZpbmFsbHl7cmVzZXRUcmFja2luZygpfX1jb25zdCB0PWF0O2F0PWM7dHJ5e3JldHVybiBsP2woZSwzLFtkXSk6ZShkKX1maW5hbGx5e2F0PXR9fTpQLHQmJm8pe2NvbnN0IGU9dSx0PSEwPT09bz8xLzA6bzt1PSgpPT50cmF2ZXJzZShlKCksdCl9Y29uc3QgXz1nZXRDdXJyZW50U2NvcGUoKSx3YXRjaEhhbmRsZT0oKT0+e2Muc3RvcCgpLF8mJl8uYWN0aXZlJiZBKF8uZWZmZWN0cyxjKX07aWYocyYmdCl7Y29uc3QgZT10O3Q9KC4uLnQpPT57ZSguLi50KSx3YXRjaEhhbmRsZSgpfX1sZXQgYj12P25ldyBBcnJheShlLmxlbmd0aCkuZmlsbChzdCk6c3Q7Y29uc3Qgam9iPWU9PntpZigxJmMuZmxhZ3MmJihjLmRpcnR5fHxlKSlpZih0KXtjb25zdCBlPWMucnVuKCk7aWYob3x8Z3x8KHY/ZS5zb21lKChlLHQpPT5rKGUsYlt0XSkpOmsoZSxiKSkpe3AmJnAoKTtjb25zdCBuPWF0O2F0PWM7dHJ5e2NvbnN0IG49W2UsYj09PXN0P3ZvaWQgMDp2JiZiWzBdPT09c3Q/W106YixkXTtiPWUsbD9sKHQsMyxuKTp0KC4uLm4pfWZpbmFsbHl7YXQ9bn19fWVsc2UgYy5ydW4oKX07cmV0dXJuIGEmJmEoam9iKSxjPW5ldyBSZWFjdGl2ZUVmZmVjdCh1KSxjLnNjaGVkdWxlcj1pPygpPT5pKGpvYiwhMSk6am9iLGQ9ZT0+b25XYXRjaGVyQ2xlYW51cChlLCExLGMpLHA9Yy5vblN0b3A9KCk9Pntjb25zdCBlPWl0LmdldChjKTtpZihlKXtpZihsKWwoZSw0KTtlbHNlIGZvcihjb25zdCB0IG9mIGUpdCgpO2l0LmRlbGV0ZShjKX19LHQ/cj9qb2IoITApOmI9Yy5ydW4oKTppP2koam9iLmJpbmQobnVsbCwhMCksITApOmMucnVuKCksd2F0Y2hIYW5kbGUucGF1c2U9Yy5wYXVzZS5iaW5kKGMpLHdhdGNoSGFuZGxlLnJlc3VtZT1jLnJlc3VtZS5iaW5kKGMpLHdhdGNoSGFuZGxlLnN0b3A9d2F0Y2hIYW5kbGUsd2F0Y2hIYW5kbGV9KGUsdCxhKTtyZXR1cm4gQ24mJihjP2MucHVzaChkKTpsJiZkKCkpLGR9ZnVuY3Rpb24gaW5zdGFuY2VXYXRjaChlLHQsbil7Y29uc3Qgcj10aGlzLnByb3h5LG89JChlKT9lLmluY2x1ZGVzKCIuIik/Y3JlYXRlUGF0aEdldHRlcihyLGUpOigpPT5yW2VdOmUuYmluZChyLHIpO2xldCBzO2YodCk/cz10OihzPXQuaGFuZGxlcixuPXQpO2NvbnN0IGk9c2V0Q3VycmVudEluc3RhbmNlKHRoaXMpLGE9ZG9XYXRjaChvLHMuYmluZChyKSxuKTtyZXR1cm4gaSgpLGF9ZnVuY3Rpb24gY3JlYXRlUGF0aEdldHRlcihlLHQpe2NvbnN0IG49dC5zcGxpdCgiLiIpO3JldHVybigpPT57bGV0IHQ9ZTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoJiZ0O2UrKyl0PXRbbltlXV07cmV0dXJuIHR9fWNvbnN0IEN0PW5ldyBXZWFrTWFwLFN0PVN5bWJvbCgiX3Z0ZSIpLGlzVGVsZXBvcnQ9ZT0+ZS5fX2lzVGVsZXBvcnQsaXNUZWxlcG9ydERpc2FibGVkPWU9PmUmJihlLmRpc2FibGVkfHwiIj09PWUuZGlzYWJsZWQpLGlzVGFyZ2V0U1ZHPWU9PiJ1bmRlZmluZWQiIT10eXBlb2YgU1ZHRWxlbWVudCYmZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQsaXNUYXJnZXRNYXRoTUw9ZT0+ImZ1bmN0aW9uIj09dHlwZW9mIE1hdGhNTEVsZW1lbnQmJmUgaW5zdGFuY2VvZiBNYXRoTUxFbGVtZW50LHJlc29sdmVUYXJnZXQ9KGUsdCk9Pntjb25zdCBuPWUmJmUudG87aWYoJChuKSl7aWYodCl7cmV0dXJuIHQobil9cmV0dXJuIG51bGx9cmV0dXJuIG59O2Z1bmN0aW9uIG1vdmVUZWxlcG9ydChlLHQsbix7bzp7aW5zZXJ0OnJ9LG06b30scz0yKXswPT09cyYmcihlLnRhcmdldEFuY2hvcix0LG4pO2NvbnN0e2VsOmksYW5jaG9yOmEsc2hhcGVGbGFnOmwsY2hpbGRyZW46Yyxwcm9wczp1fT1lLHA9Mj09PXM7aWYocCYmcihpLHQsbiksKCFwfHxpc1RlbGVwb3J0RGlzYWJsZWQodSkpJiYxNiZsKWZvcihsZXQgZT0wO2U8Yy5sZW5ndGg7ZSsrKW8oY1tlXSx0LG4sMik7cCYmcihhLHQsbil9Y29uc3Qgd3Q9e25hbWU6IlRlbGVwb3J0IixfX2lzVGVsZXBvcnQ6ITAscHJvY2VzcyhlLHQsbixyLG8scyxpLGEsbCxjKXtjb25zdHttYzp1LHBjOnAscGJjOmQsbzp7aW5zZXJ0OmYscXVlcnlTZWxlY3RvcjpnLGNyZWF0ZVRleHQ6bSxjcmVhdGVDb21tZW50Onl9fT1jLHY9aXNUZWxlcG9ydERpc2FibGVkKHQucHJvcHMpO2xldHtkeW5hbWljQ2hpbGRyZW46X309dDtjb25zdCBtb3VudD0oZSx0LG4pPT57MTYmZS5zaGFwZUZsYWcmJnUoZS5jaGlsZHJlbix0LG4sbyxzLGksYSxsKX0sbW91bnRUb1RhcmdldD0oZT10KT0+e2NvbnN0IG49aXNUZWxlcG9ydERpc2FibGVkKGUucHJvcHMpLHI9ZS50YXJnZXQ9cmVzb2x2ZVRhcmdldChlLnByb3BzLGcpLHM9cHJlcGFyZUFuY2hvcihyLGUsbSxmKTtyJiYoInN2ZyIhPT1pJiZpc1RhcmdldFNWRyhyKT9pPSJzdmciOiJtYXRobWwiIT09aSYmaXNUYXJnZXRNYXRoTUwocikmJihpPSJtYXRobWwiKSxvJiZvLmlzQ0UmJihvLmNlLl90ZWxlcG9ydFRhcmdldHN8fChvLmNlLl90ZWxlcG9ydFRhcmdldHM9bmV3IFNldCkpLmFkZChyKSxufHwobW91bnQoZSxyLHMpLHVwZGF0ZUNzc1ZhcnMoZSwhMSkpKX0scXVldWVQZW5kaW5nTW91bnQ9ZT0+e2NvbnN0IG1vdW50Sm9iPSgpPT57Q3QuZ2V0KGUpPT09bW91bnRKb2ImJihDdC5kZWxldGUoZSksaXNUZWxlcG9ydERpc2FibGVkKGUucHJvcHMpJiYobW91bnQoZSxuLGUuYW5jaG9yKSx1cGRhdGVDc3NWYXJzKGUsITApKSxtb3VudFRvVGFyZ2V0KGUpKX07Q3Quc2V0KGUsbW91bnRKb2IpLG9uKG1vdW50Sm9iLHMpfTtpZihudWxsPT1lKXtjb25zdCBlPXQuZWw9bSgiIiksbz10LmFuY2hvcj1tKCIiKTtpZihmKGUsbixyKSxmKG8sbixyKSwoYj10LnByb3BzKSYmKGIuZGVmZXJ8fCIiPT09Yi5kZWZlcil8fHMmJnMucGVuZGluZ0JyYW5jaClyZXR1cm4gdm9pZCBxdWV1ZVBlbmRpbmdNb3VudCh0KTt2JiYobW91bnQodCxuLG8pLHVwZGF0ZUNzc1ZhcnModCwhMCkpLG1vdW50VG9UYXJnZXQoKX1lbHNle3QuZWw9ZS5lbDtjb25zdCByPXQuYW5jaG9yPWUuYW5jaG9yLHU9Q3QuZ2V0KGUpO2lmKHUpcmV0dXJuIHUuZmxhZ3N8PTgsQ3QuZGVsZXRlKGUpLHZvaWQgcXVldWVQZW5kaW5nTW91bnQodCk7dC50YXJnZXRTdGFydD1lLnRhcmdldFN0YXJ0O2NvbnN0IGY9dC50YXJnZXQ9ZS50YXJnZXQsbT10LnRhcmdldEFuY2hvcj1lLnRhcmdldEFuY2hvcix5PWlzVGVsZXBvcnREaXNhYmxlZChlLnByb3BzKSxiPXk/bjpmLGs9eT9yOm07aWYoInN2ZyI9PT1pfHxpc1RhcmdldFNWRyhmKT9pPSJzdmciOigibWF0aG1sIj09PWl8fGlzVGFyZ2V0TWF0aE1MKGYpKSYmKGk9Im1hdGhtbCIpLF8/KGQoZS5keW5hbWljQ2hpbGRyZW4sXyxiLG8scyxpLGEpLHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4oZSx0LCEwKSk6bHx8cChlLHQsYixrLG8scyxpLGEsITEpLHYpeT90LnByb3BzJiZlLnByb3BzJiZ0LnByb3BzLnRvIT09ZS5wcm9wcy50byYmKHQucHJvcHMudG89ZS5wcm9wcy50byk6bW92ZVRlbGVwb3J0KHQsbixyLGMsMSk7ZWxzZSBpZigodC5wcm9wcyYmdC5wcm9wcy50bykhPT0oZS5wcm9wcyYmZS5wcm9wcy50bykpe2NvbnN0IGU9dC50YXJnZXQ9cmVzb2x2ZVRhcmdldCh0LnByb3BzLGcpO2UmJm1vdmVUZWxlcG9ydCh0LGUsbnVsbCxjLDApfWVsc2UgeSYmbW92ZVRlbGVwb3J0KHQsZixtLGMsMSk7dXBkYXRlQ3NzVmFycyh0LHYpfXZhciBifSxyZW1vdmUoZSx0LG4se3VtOnIsbzp7cmVtb3ZlOm99fSxzKXtjb25zdHtzaGFwZUZsYWc6aSxjaGlsZHJlbjphLGFuY2hvcjpsLHRhcmdldFN0YXJ0OmMsdGFyZ2V0QW5jaG9yOnUsdGFyZ2V0OnAscHJvcHM6ZH09ZTtsZXQgZj1zfHwhaXNUZWxlcG9ydERpc2FibGVkKGQpO2NvbnN0IGc9Q3QuZ2V0KGUpO2lmKGcmJihnLmZsYWdzfD04LEN0LmRlbGV0ZShlKSxmPSExKSxwJiYobyhjKSxvKHUpKSxzJiZvKGwpLDE2JmkpZm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2NvbnN0IG89YVtlXTtyKG8sdCxuLGYsISFvLmR5bmFtaWNDaGlsZHJlbil9fSxtb3ZlOm1vdmVUZWxlcG9ydCxoeWRyYXRlOmZ1bmN0aW9uKGUsdCxuLHIsbyxzLHtvOntuZXh0U2libGluZzppLHBhcmVudE5vZGU6YSxxdWVyeVNlbGVjdG9yOmwsaW5zZXJ0OmMsY3JlYXRlVGV4dDp1fX0scCl7ZnVuY3Rpb24gaHlkcmF0ZUFuY2hvcihlLG4pe2xldCByPW47Zm9yKDtyOyl7aWYociYmOD09PXIubm9kZVR5cGUpaWYoInRlbGVwb3J0IHN0YXJ0IGFuY2hvciI9PT1yLmRhdGEpdC50YXJnZXRTdGFydD1yO2Vsc2UgaWYoInRlbGVwb3J0IGFuY2hvciI9PT1yLmRhdGEpe3QudGFyZ2V0QW5jaG9yPXIsZS5fbHBhPXQudGFyZ2V0QW5jaG9yJiZpKHQudGFyZ2V0QW5jaG9yKTticmVha31yPWkocil9fWZ1bmN0aW9uIGh5ZHJhdGVEaXNhYmxlZFRlbGVwb3J0KGUsdCl7dC5hbmNob3I9cChpKGUpLHQsYShlKSxuLHIsbyxzKX1jb25zdCBkPXQudGFyZ2V0PXJlc29sdmVUYXJnZXQodC5wcm9wcyxsKSxmPWlzVGVsZXBvcnREaXNhYmxlZCh0LnByb3BzKTtpZihkKXtjb25zdCBsPWQuX2xwYXx8ZC5maXJzdENoaWxkOzE2JnQuc2hhcGVGbGFnJiYoZj8oaHlkcmF0ZURpc2FibGVkVGVsZXBvcnQoZSx0KSxoeWRyYXRlQW5jaG9yKGQsbCksdC50YXJnZXRBbmNob3J8fHByZXBhcmVBbmNob3IoZCx0LHUsYyxhKGUpPT09ZD9lOm51bGwpKToodC5hbmNob3I9aShlKSxoeWRyYXRlQW5jaG9yKGQsbCksdC50YXJnZXRBbmNob3J8fHByZXBhcmVBbmNob3IoZCx0LHUsYykscChsJiZpKGwpLHQsZCxuLHIsbyxzKSkpLHVwZGF0ZUNzc1ZhcnModCxmKX1lbHNlIGYmJjE2JnQuc2hhcGVGbGFnJiYoaHlkcmF0ZURpc2FibGVkVGVsZXBvcnQoZSx0KSx0LnRhcmdldFN0YXJ0PWUsdC50YXJnZXRBbmNob3I9aShlKSk7cmV0dXJuIHQuYW5jaG9yJiZpKHQuYW5jaG9yKX19O2Z1bmN0aW9uIHVwZGF0ZUNzc1ZhcnMoZSx0KXtjb25zdCBuPWUuY3R4O2lmKG4mJm4udXQpe2xldCByLG87Zm9yKHQ/KHI9ZS5lbCxvPWUuYW5jaG9yKToocj1lLnRhcmdldFN0YXJ0LG89ZS50YXJnZXRBbmNob3IpO3ImJnIhPT1vOykxPT09ci5ub2RlVHlwZSYmci5zZXRBdHRyaWJ1dGUoImRhdGEtdi1vd25lciIsbi51aWQpLHI9ci5uZXh0U2libGluZztuLnV0KCl9fWZ1bmN0aW9uIHByZXBhcmVBbmNob3IoZSx0LG4scixvPW51bGwpe2NvbnN0IHM9dC50YXJnZXRTdGFydD1uKCIiKSxpPXQudGFyZ2V0QW5jaG9yPW4oIiIpO3JldHVybiBzW1N0XT1pLGUmJihyKHMsZSxvKSxyKGksZSxvKSksaX1jb25zdCBUdD1TeW1ib2woIl9sZWF2ZUNiIiksUnQ9U3ltYm9sKCJfZW50ZXJDYiIpO2Z1bmN0aW9uIHVzZVRyYW5zaXRpb25TdGF0ZSgpe2NvbnN0IGU9e2lzTW91bnRlZDohMSxpc0xlYXZpbmc6ITEsaXNVbm1vdW50aW5nOiExLGxlYXZpbmdWTm9kZXM6bmV3IE1hcH07cmV0dXJuIEl0KCgpPT57ZS5pc01vdW50ZWQ9ITB9KSxGdCgoKT0+e2UuaXNVbm1vdW50aW5nPSEwfSksZX1jb25zdCBBdD1bRnVuY3Rpb24sQXJyYXldLHh0PXttb2RlOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixwZXJzaXN0ZWQ6Qm9vbGVhbixvbkJlZm9yZUVudGVyOkF0LG9uRW50ZXI6QXQsb25BZnRlckVudGVyOkF0LG9uRW50ZXJDYW5jZWxsZWQ6QXQsb25CZWZvcmVMZWF2ZTpBdCxvbkxlYXZlOkF0LG9uQWZ0ZXJMZWF2ZTpBdCxvbkxlYXZlQ2FuY2VsbGVkOkF0LG9uQmVmb3JlQXBwZWFyOkF0LG9uQXBwZWFyOkF0LG9uQWZ0ZXJBcHBlYXI6QXQsb25BcHBlYXJDYW5jZWxsZWQ6QXR9LHJlY3Vyc2l2ZUdldFN1YnRyZWU9ZT0+e2NvbnN0IHQ9ZS5zdWJUcmVlO3JldHVybiB0LmNvbXBvbmVudD9yZWN1cnNpdmVHZXRTdWJ0cmVlKHQuY29tcG9uZW50KTp0fTtmdW5jdGlvbiBmaW5kTm9uQ29tbWVudENoaWxkKGUpe2xldCB0PWVbMF07aWYoZS5sZW5ndGg+MSlmb3IoY29uc3QgbiBvZiBlKWlmKG4udHlwZSE9PXVuKXt0PW47YnJlYWt9cmV0dXJuIHR9Y29uc3QgRXQ9e25hbWU6IkJhc2VUcmFuc2l0aW9uIixwcm9wczp4dCxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1nZXRDdXJyZW50SW5zdGFuY2UoKSxyPXVzZVRyYW5zaXRpb25TdGF0ZSgpO3JldHVybigpPT57Y29uc3Qgbz10LmRlZmF1bHQmJmdldFRyYW5zaXRpb25SYXdDaGlsZHJlbih0LmRlZmF1bHQoKSwhMCk7aWYoIW98fCFvLmxlbmd0aClyZXR1cm47Y29uc3Qgcz1maW5kTm9uQ29tbWVudENoaWxkKG8pLGk9dG9SYXcoZSkse21vZGU6YX09aTtpZihyLmlzTGVhdmluZylyZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihzKTtjb25zdCBsPWdldElubmVyQ2hpbGQkMShzKTtpZighbClyZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihzKTtsZXQgYz1yZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGwsaSxyLG4sZT0+Yz1lKTtsLnR5cGUhPT11biYmc2V0VHJhbnNpdGlvbkhvb2tzKGwsYyk7bGV0IHU9bi5zdWJUcmVlJiZnZXRJbm5lckNoaWxkJDEobi5zdWJUcmVlKTtpZih1JiZ1LnR5cGUhPT11biYmIWlzU2FtZVZOb2RlVHlwZSh1LGwpJiZyZWN1cnNpdmVHZXRTdWJ0cmVlKG4pLnR5cGUhPT11bil7bGV0IGU9cmVzb2x2ZVRyYW5zaXRpb25Ib29rcyh1LGkscixuKTtpZihzZXRUcmFuc2l0aW9uSG9va3ModSxlKSwib3V0LWluIj09PWEmJmwudHlwZSE9PXVuKXJldHVybiByLmlzTGVhdmluZz0hMCxlLmFmdGVyTGVhdmU9KCk9PntyLmlzTGVhdmluZz0hMSw4Jm4uam9iLmZsYWdzfHxuLnVwZGF0ZSgpLGRlbGV0ZSBlLmFmdGVyTGVhdmUsdT12b2lkIDB9LGVtcHR5UGxhY2Vob2xkZXIocyk7ImluLW91dCI9PT1hJiZsLnR5cGUhPT11bj9lLmRlbGF5TGVhdmU9KGUsdCxuKT0+e2dldExlYXZpbmdOb2Rlc0ZvclR5cGUocix1KVtTdHJpbmcodS5rZXkpXT11LGVbVHRdPSgpPT57dCgpLGVbVHRdPXZvaWQgMCxkZWxldGUgYy5kZWxheWVkTGVhdmUsdT12b2lkIDB9LGMuZGVsYXllZExlYXZlPSgpPT57bigpLGRlbGV0ZSBjLmRlbGF5ZWRMZWF2ZSx1PXZvaWQgMH19OnU9dm9pZCAwfWVsc2UgdSYmKHU9dm9pZCAwKTtyZXR1cm4gc319fTtmdW5jdGlvbiBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKGUsdCl7Y29uc3R7bGVhdmluZ1ZOb2RlczpufT1lO2xldCByPW4uZ2V0KHQudHlwZSk7cmV0dXJuIHJ8fChyPU9iamVjdC5jcmVhdGUobnVsbCksbi5zZXQodC50eXBlLHIpKSxyfWZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uSG9va3MoZSx0LG4scixvKXtjb25zdHthcHBlYXI6cyxtb2RlOmkscGVyc2lzdGVkOmE9ITEsb25CZWZvcmVFbnRlcjpsLG9uRW50ZXI6YyxvbkFmdGVyRW50ZXI6dSxvbkVudGVyQ2FuY2VsbGVkOnAsb25CZWZvcmVMZWF2ZTpkLG9uTGVhdmU6ZixvbkFmdGVyTGVhdmU6ZyxvbkxlYXZlQ2FuY2VsbGVkOm0sb25CZWZvcmVBcHBlYXI6dixvbkFwcGVhcjpfLG9uQWZ0ZXJBcHBlYXI6YixvbkFwcGVhckNhbmNlbGxlZDprfT10LEM9U3RyaW5nKGUua2V5KSxTPWdldExlYXZpbmdOb2Rlc0ZvclR5cGUobixlKSxjYWxsSG9vaz0oZSx0KT0+e2UmJmNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGUsciw5LHQpfSxjYWxsQXN5bmNIb29rPShlLHQpPT57Y29uc3Qgbj10WzFdO2NhbGxIb29rKGUsdCkseShlKT9lLmV2ZXJ5KGU9PmUubGVuZ3RoPD0xKSYmbigpOmUubGVuZ3RoPD0xJiZuKCl9LHc9e21vZGU6aSxwZXJzaXN0ZWQ6YSxiZWZvcmVFbnRlcih0KXtsZXQgcj1sO2lmKCFuLmlzTW91bnRlZCl7aWYoIXMpcmV0dXJuO3I9dnx8bH10W1R0XSYmdFtUdF0oITApO2NvbnN0IG89U1tDXTtvJiZpc1NhbWVWTm9kZVR5cGUoZSxvKSYmby5lbFtUdF0mJm8uZWxbVHRdKCksY2FsbEhvb2socixbdF0pfSxlbnRlcih0KXtpZihTW0NdPT09ZSlyZXR1cm47bGV0IHI9YyxvPXUsaT1wO2lmKCFuLmlzTW91bnRlZCl7aWYoIXMpcmV0dXJuO3I9X3x8YyxvPWJ8fHUsaT1rfHxwfWxldCBhPSExO3RbUnRdPWU9PnthfHwoYT0hMCxjYWxsSG9vayhlP2k6byxbdF0pLHcuZGVsYXllZExlYXZlJiZ3LmRlbGF5ZWRMZWF2ZSgpLHRbUnRdPXZvaWQgMCl9O2NvbnN0IGw9dFtSdF0uYmluZChudWxsLCExKTtyP2NhbGxBc3luY0hvb2socixbdCxsXSk6bCgpfSxsZWF2ZSh0LHIpe2NvbnN0IG89U3RyaW5nKGUua2V5KTtpZih0W1J0XSYmdFtSdF0oITApLG4uaXNVbm1vdW50aW5nKXJldHVybiByKCk7Y2FsbEhvb2soZCxbdF0pO2xldCBzPSExO3RbVHRdPW49PntzfHwocz0hMCxyKCksY2FsbEhvb2sobj9tOmcsW3RdKSx0W1R0XT12b2lkIDAsU1tvXT09PWUmJmRlbGV0ZSBTW29dKX07Y29uc3QgaT10W1R0XS5iaW5kKG51bGwsITEpO1Nbb109ZSxmP2NhbGxBc3luY0hvb2soZixbdCxpXSk6aSgpfSxjbG9uZShlKXtjb25zdCBzPXJlc29sdmVUcmFuc2l0aW9uSG9va3MoZSx0LG4scixvKTtyZXR1cm4gbyYmbyhzKSxzfX07cmV0dXJuIHd9ZnVuY3Rpb24gZW1wdHlQbGFjZWhvbGRlcihlKXtpZihpc0tlZXBBbGl2ZShlKSlyZXR1cm4oZT1jbG9uZVZOb2RlKGUpKS5jaGlsZHJlbj1udWxsLGV9ZnVuY3Rpb24gZ2V0SW5uZXJDaGlsZCQxKGUpe2lmKCFpc0tlZXBBbGl2ZShlKSlyZXR1cm4gaXNUZWxlcG9ydChlLnR5cGUpJiZlLmNoaWxkcmVuP2ZpbmROb25Db21tZW50Q2hpbGQoZS5jaGlsZHJlbik6ZTtpZihlLmNvbXBvbmVudClyZXR1cm4gZS5jb21wb25lbnQuc3ViVHJlZTtjb25zdHtzaGFwZUZsYWc6dCxjaGlsZHJlbjpufT1lO2lmKG4pe2lmKDE2JnQpcmV0dXJuIG5bMF07aWYoMzImdCYmZihuLmRlZmF1bHQpKXJldHVybiBuLmRlZmF1bHQoKX19ZnVuY3Rpb24gc2V0VHJhbnNpdGlvbkhvb2tzKGUsdCl7NiZlLnNoYXBlRmxhZyYmZS5jb21wb25lbnQ/KGUudHJhbnNpdGlvbj10LHNldFRyYW5zaXRpb25Ib29rcyhlLmNvbXBvbmVudC5zdWJUcmVlLHQpKToxMjgmZS5zaGFwZUZsYWc/KGUuc3NDb250ZW50LnRyYW5zaXRpb249dC5jbG9uZShlLnNzQ29udGVudCksZS5zc0ZhbGxiYWNrLnRyYW5zaXRpb249dC5jbG9uZShlLnNzRmFsbGJhY2spKTplLnRyYW5zaXRpb249dH1mdW5jdGlvbiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oZSx0PSExLG4pe2xldCByPVtdLG89MDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtjb25zdCBhPW51bGw9PW4/aS5rZXk6U3RyaW5nKG4pK1N0cmluZyhudWxsIT1pLmtleT9pLmtleTpzKTtpLnR5cGU9PT1sbj8oMTI4JmkucGF0Y2hGbGFnJiZvKysscj1yLmNvbmNhdChnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oaS5jaGlsZHJlbix0LGEpKSk6KHR8fGkudHlwZSE9PXVuKSYmci5wdXNoKG51bGwhPWE/Y2xvbmVWTm9kZShpLHtrZXk6YX0pOmkpfWlmKG8+MSlmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKylyW2VdLnBhdGNoRmxhZz0tMjtyZXR1cm4gcn1mdW5jdGlvbiBkZWZpbmVDb21wb25lbnQoZSx0KXtyZXR1cm4gZihlKT8oKCk9Pncoe25hbWU6ZS5uYW1lfSx0LHtzZXR1cDplfSkpKCk6ZX1mdW5jdGlvbiBtYXJrQXN5bmNCb3VuZGFyeShlKXtlLmlkcz1bZS5pZHNbMF0rZS5pZHNbMl0rKysiLSIsMCwwXX1mdW5jdGlvbiBpc1RlbXBsYXRlUmVmS2V5KGUsdCl7bGV0IG47cmV0dXJuISghKG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpKXx8bi5jb25maWd1cmFibGUpfWNvbnN0IFB0PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHNldFJlZihlLHQsbixyLG89ITEpe2lmKHkoZSkpcmV0dXJuIHZvaWQgZS5mb3JFYWNoKChlLHMpPT5zZXRSZWYoZSx0JiYoeSh0KT90W3NdOnQpLG4scixvKSk7aWYoaXNBc3luY1dyYXBwZXIocikmJiFvKXJldHVybiB2b2lkKDUxMiZyLnNoYXBlRmxhZyYmci50eXBlLl9fYXN5bmNSZXNvbHZlZCYmci5jb21wb25lbnQuc3ViVHJlZS5jb21wb25lbnQmJnNldFJlZihlLHQsbixyLmNvbXBvbmVudC5zdWJUcmVlKSk7Y29uc3Qgcz00JnIuc2hhcGVGbGFnP2dldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKHIuY29tcG9uZW50KTpyLmVsLGk9bz9udWxsOnMse2k6YSxyOmx9PWUsYz10JiZ0LnIsdT1hLnJlZnM9PT1tP2EucmVmcz17fTphLnJlZnMscD1hLnNldHVwU3RhdGUsZD10b1JhdyhwKSxnPXA9PT1tP0Q6ZT0+IWlzVGVtcGxhdGVSZWZLZXkodSxlKSYmdihkLGUpLGNhblNldFJlZj0oZSx0KT0+IXR8fCFpc1RlbXBsYXRlUmVmS2V5KHUsdCk7aWYobnVsbCE9YyYmYyE9PWwpaWYoaW52YWxpZGF0ZVBlbmRpbmdTZXRSZWYodCksJChjKSl1W2NdPW51bGwsZyhjKSYmKHBbY109bnVsbCk7ZWxzZSBpZihpc1JlZihjKSl7Y29uc3QgZT10O2NhblNldFJlZigwLGUuaykmJihjLnZhbHVlPW51bGwpLGUuayYmKHVbZS5rXT1udWxsKX1pZihmKGwpKWNhbGxXaXRoRXJyb3JIYW5kbGluZyhsLGEsMTIsW2ksdV0pO2Vsc2V7Y29uc3QgdD0kKGwpLHI9aXNSZWYobCk7aWYodHx8cil7Y29uc3QgZG9TZXQ9KCk9PntpZihlLmYpe2NvbnN0IG49dD9nKGwpP3BbbF06dVtsXTpjYW5TZXRSZWYoKXx8IWUuaz9sLnZhbHVlOnVbZS5rXTtpZihvKXkobikmJkEobixzKTtlbHNlIGlmKHkobikpbi5pbmNsdWRlcyhzKXx8bi5wdXNoKHMpO2Vsc2UgaWYodCl1W2xdPVtzXSxnKGwpJiYocFtsXT11W2xdKTtlbHNle2NvbnN0IHQ9W3NdO2NhblNldFJlZigwLGUuaykmJihsLnZhbHVlPXQpLGUuayYmKHVbZS5rXT10KX19ZWxzZSB0Pyh1W2xdPWksZyhsKSYmKHBbbF09aSkpOnImJihjYW5TZXRSZWYoMCxlLmspJiYobC52YWx1ZT1pKSxlLmsmJih1W2Uua109aSkpfTtpZihpKXtjb25zdCBqb2I9KCk9Pntkb1NldCgpLFB0LmRlbGV0ZShlKX07am9iLmlkPS0xLFB0LnNldChlLGpvYiksb24oam9iLG4pfWVsc2UgaW52YWxpZGF0ZVBlbmRpbmdTZXRSZWYoZSksZG9TZXQoKX19fWZ1bmN0aW9uIGludmFsaWRhdGVQZW5kaW5nU2V0UmVmKGUpe2NvbnN0IHQ9UHQuZ2V0KGUpO3QmJih0LmZsYWdzfD04LFB0LmRlbGV0ZShlKSl9bGV0ICR0PSExO2NvbnN0IGxvZ01pc21hdGNoRXJyb3I9KCk9PnskdHx8KGNvbnNvbGUuZXJyb3IoIkh5ZHJhdGlvbiBjb21wbGV0ZWQgYnV0IGNvbnRhaW5zIG1pc21hdGNoZXMuIiksJHQ9ITApfSxnZXRDb250YWluZXJUeXBlPWU9PntpZigxPT09ZS5ub2RlVHlwZSlyZXR1cm4oZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoInN2ZyIpJiYiZm9yZWlnbk9iamVjdCIhPT1lLnRhZ05hbWUpKGUpPyJzdmciOihlPT5lLm5hbWVzcGFjZVVSSS5pbmNsdWRlcygiTWF0aE1MIikpKGUpPyJtYXRobWwiOnZvaWQgMH0saXNDb21tZW50JDE9ZT0+OD09PWUubm9kZVR5cGU7ZnVuY3Rpb24gY3JlYXRlSHlkcmF0aW9uRnVuY3Rpb25zKGUpe2NvbnN0e210OnQscDpuLG86e3BhdGNoUHJvcDpyLGNyZWF0ZVRleHQ6byxuZXh0U2libGluZzpzLHBhcmVudE5vZGU6aSxyZW1vdmU6YSxpbnNlcnQ6bCxjcmVhdGVDb21tZW50OmN9fT1lLGh5ZHJhdGVOb2RlPShuLHIsYSxjLHUscD0hMSk9PntwPXB8fCEhci5keW5hbWljQ2hpbGRyZW47Y29uc3QgZD1pc0NvbW1lbnQkMShuKSYmIlsiPT09bi5kYXRhLG9uTWlzbWF0Y2g9KCk9PmhhbmRsZU1pc21hdGNoKG4scixhLGMsdSxkKSx7dHlwZTpmLHJlZjpnLHNoYXBlRmxhZzptLHBhdGNoRmxhZzp5fT1yO2xldCB2PW4ubm9kZVR5cGU7ci5lbD1uLC0yPT09eSYmKHA9ITEsci5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0IF89bnVsbDtzd2l0Y2goZil7Y2FzZSBjbjozIT09dj8iIj09PXIuY2hpbGRyZW4/KGwoci5lbD1vKCIiKSxpKG4pLG4pLF89bik6Xz1vbk1pc21hdGNoKCk6KG4uZGF0YSE9PXIuY2hpbGRyZW4mJihsb2dNaXNtYXRjaEVycm9yKCksbi5kYXRhPXIuY2hpbGRyZW4pLF89cyhuKSk7YnJlYWs7Y2FzZSB1bjppc1RlbXBsYXRlTm9kZShuKT8oXz1zKG4pLHJlcGxhY2VOb2RlKHIuZWw9bi5jb250ZW50LmZpcnN0Q2hpbGQsbixhKSk6Xz04IT09dnx8ZD9vbk1pc21hdGNoKCk6cyhuKTticmVhaztjYXNlIHBuOmlmKGQmJih2PShuPXMobikpLm5vZGVUeXBlKSwxPT09dnx8Mz09PXYpe189bjtjb25zdCBlPSFyLmNoaWxkcmVuLmxlbmd0aDtmb3IobGV0IHQ9MDt0PHIuc3RhdGljQ291bnQ7dCsrKWUmJihyLmNoaWxkcmVuKz0xPT09Xy5ub2RlVHlwZT9fLm91dGVySFRNTDpfLmRhdGEpLHQ9PT1yLnN0YXRpY0NvdW50LTEmJihyLmFuY2hvcj1fKSxfPXMoXyk7cmV0dXJuIGQ/cyhfKTpffW9uTWlzbWF0Y2goKTticmVhaztjYXNlIGxuOl89ZD9oeWRyYXRlRnJhZ21lbnQobixyLGEsYyx1LHApOm9uTWlzbWF0Y2goKTticmVhaztkZWZhdWx0OmlmKDEmbSlfPTE9PT12JiZyLnR5cGUudG9Mb3dlckNhc2UoKT09PW4udGFnTmFtZS50b0xvd2VyQ2FzZSgpfHxpc1RlbXBsYXRlTm9kZShuKT9oeWRyYXRlRWxlbWVudChuLHIsYSxjLHUscCk6b25NaXNtYXRjaCgpO2Vsc2UgaWYoNiZtKXtyLnNsb3RTY29wZUlkcz11O2NvbnN0IGU9aShuKTtpZihfPWQ/bG9jYXRlQ2xvc2luZ0FuY2hvcihuKTppc0NvbW1lbnQkMShuKSYmInRlbGVwb3J0IHN0YXJ0Ij09PW4uZGF0YT9sb2NhdGVDbG9zaW5nQW5jaG9yKG4sbi5kYXRhLCJ0ZWxlcG9ydCBlbmQiKTpzKG4pLHQocixlLG51bGwsYSxjLGdldENvbnRhaW5lclR5cGUoZSkscCksaXNBc3luY1dyYXBwZXIocikmJiFyLnR5cGUuX19hc3luY1Jlc29sdmVkKXtsZXQgdDtkPyh0PWNyZWF0ZVZOb2RlKGxuKSx0LmFuY2hvcj1fP18ucHJldmlvdXNTaWJsaW5nOmUubGFzdENoaWxkKTp0PTM9PT1uLm5vZGVUeXBlP2NyZWF0ZVRleHRWTm9kZSgiIik6Y3JlYXRlVk5vZGUoImRpdiIpLHQuZWw9bixyLmNvbXBvbmVudC5zdWJUcmVlPXR9fWVsc2UgNjQmbT9fPTghPT12P29uTWlzbWF0Y2goKTpyLnR5cGUuaHlkcmF0ZShuLHIsYSxjLHUscCxlLGh5ZHJhdGVDaGlsZHJlbik6MTI4Jm0mJihfPXIudHlwZS5oeWRyYXRlKG4scixhLGMsZ2V0Q29udGFpbmVyVHlwZShpKG4pKSx1LHAsZSxoeWRyYXRlTm9kZSkpfXJldHVybiBudWxsIT1nJiZzZXRSZWYoZyxudWxsLGMsciksX30saHlkcmF0ZUVsZW1lbnQ9KGUsdCxuLG8scyxpKT0+e2k9aXx8ISF0LmR5bmFtaWNDaGlsZHJlbjtjb25zdHt0eXBlOmwscHJvcHM6YyxwYXRjaEZsYWc6dSxzaGFwZUZsYWc6cCxkaXJzOmQsdHJhbnNpdGlvbjpmfT10LGc9ImlucHV0Ij09PWx8fCJvcHRpb24iPT09bDtpZihnfHwtMSE9PXUpe2QmJmludm9rZURpcmVjdGl2ZUhvb2sodCxudWxsLG4sImNyZWF0ZWQiKTtsZXQgbCxtPSExO2lmKGlzVGVtcGxhdGVOb2RlKGUpKXttPW5lZWRUcmFuc2l0aW9uKG51bGwsZikmJm4mJm4udm5vZGUucHJvcHMmJm4udm5vZGUucHJvcHMuYXBwZWFyO2NvbnN0IHI9ZS5jb250ZW50LmZpcnN0Q2hpbGQ7aWYobSl7Y29uc3QgZT1yLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTtlJiYoci4kY2xzPWUpLGYuYmVmb3JlRW50ZXIocil9cmVwbGFjZU5vZGUocixlLG4pLHQuZWw9ZT1yfWlmKDE2JnAmJighY3x8IWMuaW5uZXJIVE1MJiYhYy50ZXh0Q29udGVudCkpe2xldCByPWh5ZHJhdGVDaGlsZHJlbihlLmZpcnN0Q2hpbGQsdCxlLG4sbyxzLGkpO2Zvcig7cjspe2lzTWlzbWF0Y2hBbGxvd2VkKGUsMSl8fGxvZ01pc21hdGNoRXJyb3IoKTtjb25zdCB0PXI7cj1yLm5leHRTaWJsaW5nLGEodCl9fWVsc2UgaWYoOCZwKXtsZXQgbj10LmNoaWxkcmVuOyJcbiIhPT1uWzBdfHwiUFJFIiE9PWUudGFnTmFtZSYmIlRFWFRBUkVBIiE9PWUudGFnTmFtZXx8KG49bi5zbGljZSgxKSk7Y29uc3R7dGV4dENvbnRlbnQ6cn09ZTtyIT09biYmciE9PW4ucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpJiYoaXNNaXNtYXRjaEFsbG93ZWQoZSwwKXx8bG9nTWlzbWF0Y2hFcnJvcigpLGUudGV4dENvbnRlbnQ9dC5jaGlsZHJlbil9aWYoYylpZihnfHwhaXx8NDgmdSl7Y29uc3QgdD1lLnRhZ05hbWUuaW5jbHVkZXMoIi0iKTtmb3IoY29uc3QgbyBpbiBjKShnJiYoby5lbmRzV2l0aCgidmFsdWUiKXx8ImluZGV0ZXJtaW5hdGUiPT09byl8fEgobykmJiFGKG8pfHwiLiI9PT1vWzBdfHx0JiYhRihvKSkmJnIoZSxvLG51bGwsY1tvXSx2b2lkIDAsbil9ZWxzZSBpZihjLm9uQ2xpY2spcihlLCJvbkNsaWNrIixudWxsLGMub25DbGljayx2b2lkIDAsbik7ZWxzZSBpZig0JnUmJmlzUmVhY3RpdmUoYy5zdHlsZSkpZm9yKGNvbnN0IGUgaW4gYy5zdHlsZSljLnN0eWxlW2VdOyhsPWMmJmMub25Wbm9kZUJlZm9yZU1vdW50KSYmaW52b2tlVk5vZGVIb29rKGwsbix0KSxkJiZpbnZva2VEaXJlY3RpdmVIb29rKHQsbnVsbCxuLCJiZWZvcmVNb3VudCIpLCgobD1jJiZjLm9uVm5vZGVNb3VudGVkKXx8ZHx8bSkmJnF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlKCgpPT57bCYmaW52b2tlVk5vZGVIb29rKGwsbix0KSxtJiZmLmVudGVyKGUpLGQmJmludm9rZURpcmVjdGl2ZUhvb2sodCxudWxsLG4sIm1vdW50ZWQiKX0sbyl9cmV0dXJuIGUubmV4dFNpYmxpbmd9LGh5ZHJhdGVDaGlsZHJlbj0oZSx0LHIsaSxhLGMsdSk9Pnt1PXV8fCEhdC5keW5hbWljQ2hpbGRyZW47Y29uc3QgcD10LmNoaWxkcmVuLGQ9cC5sZW5ndGg7Zm9yKGxldCB0PTA7dDxkO3QrKyl7Y29uc3QgZj11P3BbdF06cFt0XT1ub3JtYWxpemVWTm9kZSQxKHBbdF0pLGc9Zi50eXBlPT09Y247ZT8oZyYmIXUmJnQrMTxkJiZub3JtYWxpemVWTm9kZSQxKHBbdCsxXSkudHlwZT09PWNuJiYobChvKGUuZGF0YS5zbGljZShmLmNoaWxkcmVuLmxlbmd0aCkpLHIscyhlKSksZS5kYXRhPWYuY2hpbGRyZW4pLGU9aHlkcmF0ZU5vZGUoZSxmLGksYSxjLHUpKTpnJiYhZi5jaGlsZHJlbj9sKGYuZWw9bygiIikscik6KGlzTWlzbWF0Y2hBbGxvd2VkKHIsMSl8fGxvZ01pc21hdGNoRXJyb3IoKSxuKG51bGwsZixyLG51bGwsaSxhLGdldENvbnRhaW5lclR5cGUociksYykpfXJldHVybiBlfSxoeWRyYXRlRnJhZ21lbnQ9KGUsdCxuLHIsbyxhKT0+e2NvbnN0e3Nsb3RTY29wZUlkczp1fT10O3UmJihvPW8/by5jb25jYXQodSk6dSk7Y29uc3QgcD1pKGUpLGQ9aHlkcmF0ZUNoaWxkcmVuKHMoZSksdCxwLG4scixvLGEpO3JldHVybiBkJiZpc0NvbW1lbnQkMShkKSYmIl0iPT09ZC5kYXRhP3ModC5hbmNob3I9ZCk6KGxvZ01pc21hdGNoRXJyb3IoKSxsKHQuYW5jaG9yPWMoIl0iKSxwLGQpLGQpfSxoYW5kbGVNaXNtYXRjaD0oZSx0LHIsbyxsLGMpPT57aWYoaXNNaXNtYXRjaEFsbG93ZWQoZS5wYXJlbnRFbGVtZW50LDEpfHxsb2dNaXNtYXRjaEVycm9yKCksdC5lbD1udWxsLGMpe2NvbnN0IHQ9bG9jYXRlQ2xvc2luZ0FuY2hvcihlKTtmb3IoOzspe2NvbnN0IG49cyhlKTtpZighbnx8bj09PXQpYnJlYWs7YShuKX19Y29uc3QgdT1zKGUpLHA9aShlKTtyZXR1cm4gYShlKSxuKG51bGwsdCxwLHUscixvLGdldENvbnRhaW5lclR5cGUocCksbCksciYmKHIudm5vZGUuZWw9dC5lbCx1cGRhdGVIT0NIb3N0RWwocix0LmVsKSksdX0sbG9jYXRlQ2xvc2luZ0FuY2hvcj0oZSx0PSJbIixuPSJdIik9PntsZXQgcj0wO2Zvcig7ZTspaWYoKGU9cyhlKSkmJmlzQ29tbWVudCQxKGUpJiYoZS5kYXRhPT09dCYmcisrLGUuZGF0YT09PW4pKXtpZigwPT09cilyZXR1cm4gcyhlKTtyLS19cmV0dXJuIGV9LHJlcGxhY2VOb2RlPShlLHQsbik9Pntjb25zdCByPXQucGFyZW50Tm9kZTtyJiZyLnJlcGxhY2VDaGlsZChlLHQpO2xldCBvPW47Zm9yKDtvOylvLnZub2RlLmVsPT09dCYmKG8udm5vZGUuZWw9by5zdWJUcmVlLmVsPWUpLG89by5wYXJlbnR9LGlzVGVtcGxhdGVOb2RlPWU9PjE9PT1lLm5vZGVUeXBlJiYiVEVNUExBVEUiPT09ZS50YWdOYW1lO3JldHVyblsoZSx0KT0+e2lmKCF0Lmhhc0NoaWxkTm9kZXMoKSlyZXR1cm4gbihudWxsLGUsdCksZmx1c2hQb3N0Rmx1c2hDYnMoKSx2b2lkKHQuX3Zub2RlPWUpO2h5ZHJhdGVOb2RlKHQuZmlyc3RDaGlsZCxlLG51bGwsbnVsbCxudWxsKSxmbHVzaFBvc3RGbHVzaENicygpLHQuX3Zub2RlPWV9LGh5ZHJhdGVOb2RlXX1jb25zdCBPdD0iZGF0YS1hbGxvdy1taXNtYXRjaCIsTnQ9ezA6InRleHQiLDE6ImNoaWxkcmVuIiwyOiJjbGFzcyIsMzoic3R5bGUiLDQ6ImF0dHJpYnV0ZSJ9O2Z1bmN0aW9uIGlzTWlzbWF0Y2hBbGxvd2VkKGUsdCl7aWYoMD09PXR8fDE9PT10KWZvcig7ZSYmIWUuaGFzQXR0cmlidXRlKE90KTspZT1lLnBhcmVudEVsZW1lbnQ7Y29uc3Qgbj1lJiZlLmdldEF0dHJpYnV0ZShPdCk7aWYobnVsbD09bilyZXR1cm4hMTtpZigiIj09PW4pcmV0dXJuITA7e2NvbnN0IGU9bi5zcGxpdCgiLCIpO3JldHVybiEoMCE9PXR8fCFlLmluY2x1ZGVzKCJjaGlsZHJlbiIpKXx8ZS5pbmNsdWRlcyhOdFt0XSl9fWNvbnN0IEh0PWooKS5yZXF1ZXN0SWRsZUNhbGxiYWNrfHwoZT0+c2V0VGltZW91dChlLDEpKSxNdD1qKCkuY2FuY2VsSWRsZUNhbGxiYWNrfHwoZT0+Y2xlYXJUaW1lb3V0KGUpKTtjb25zdCBpc0FzeW5jV3JhcHBlcj1lPT4hIWUudHlwZS5fX2FzeW5jTG9hZGVyO2Z1bmN0aW9uIGNyZWF0ZUlubmVyQ29tcChlLHQpe2NvbnN0e3JlZjpuLHByb3BzOnIsY2hpbGRyZW46byxjZTpzfT10LnZub2RlLGk9Y3JlYXRlVk5vZGUoZSxyLG8pO3JldHVybiBpLnJlZj1uLGkuY2U9cyxkZWxldGUgdC52bm9kZS5jZSxpfWNvbnN0IGlzS2VlcEFsaXZlPWU9PmUudHlwZS5fX2lzS2VlcEFsaXZlLFZ0PXtuYW1lOiJLZWVwQWxpdmUiLF9faXNLZWVwQWxpdmU6ITAscHJvcHM6e2luY2x1ZGU6W1N0cmluZyxSZWdFeHAsQXJyYXldLGV4Y2x1ZGU6W1N0cmluZyxSZWdFeHAsQXJyYXldLG1heDpbU3RyaW5nLE51bWJlcl19LHNldHVwKGUse3Nsb3RzOnR9KXtjb25zdCBuPWdldEN1cnJlbnRJbnN0YW5jZSgpLHI9bi5jdHg7aWYoIXIucmVuZGVyZXIpcmV0dXJuKCk9Pntjb25zdCBlPXQuZGVmYXVsdCYmdC5kZWZhdWx0KCk7cmV0dXJuIGUmJjE9PT1lLmxlbmd0aD9lWzBdOmV9O2NvbnN0IG89bmV3IE1hcCxzPW5ldyBTZXQ7bGV0IGk9bnVsbDtjb25zdCBhPW4uc3VzcGVuc2Use3JlbmRlcmVyOntwOmwsbTpjLHVtOnUsbzp7Y3JlYXRlRWxlbWVudDpwfX19PXIsZD1wKCJkaXYiKTtmdW5jdGlvbiB1bm1vdW50KGUpe3Jlc2V0U2hhcGVGbGFnKGUpLHUoZSxuLGEsITApfWZ1bmN0aW9uIHBydW5lQ2FjaGUoZSl7by5mb3JFYWNoKCh0LG4pPT57Y29uc3Qgcj1nZXRDb21wb25lbnROYW1lKGlzQXN5bmNXcmFwcGVyKHQpP3QudHlwZS5fX2FzeW5jUmVzb2x2ZWR8fHt9OnQudHlwZSk7ciYmIWUocikmJnBydW5lQ2FjaGVFbnRyeShuKX0pfWZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeShlKXtjb25zdCB0PW8uZ2V0KGUpOyF0fHxpJiZpc1NhbWVWTm9kZVR5cGUodCxpKT9pJiZyZXNldFNoYXBlRmxhZyhpKTp1bm1vdW50KHQpLG8uZGVsZXRlKGUpLHMuZGVsZXRlKGUpfXIuYWN0aXZhdGU9KGUsdCxuLHIsbyk9Pntjb25zdCBzPWUuY29tcG9uZW50O2MoZSx0LG4sMCxhKSxsKHMudm5vZGUsZSx0LG4scyxhLHIsZS5zbG90U2NvcGVJZHMsbyksb24oKCk9PntzLmlzRGVhY3RpdmF0ZWQ9ITEscy5hJiZJKHMuYSk7Y29uc3QgdD1lLnByb3BzJiZlLnByb3BzLm9uVm5vZGVNb3VudGVkO3QmJmludm9rZVZOb2RlSG9vayh0LHMucGFyZW50LGUpfSxhKX0sci5kZWFjdGl2YXRlPWU9Pntjb25zdCB0PWUuY29tcG9uZW50O2ludmFsaWRhdGVNb3VudCh0Lm0pLGludmFsaWRhdGVNb3VudCh0LmEpLGMoZSxkLG51bGwsMSxhKSxvbigoKT0+e3QuZGEmJkkodC5kYSk7Y29uc3Qgbj1lLnByb3BzJiZlLnByb3BzLm9uVm5vZGVVbm1vdW50ZWQ7biYmaW52b2tlVk5vZGVIb29rKG4sdC5wYXJlbnQsZSksdC5pc0RlYWN0aXZhdGVkPSEwfSxhKX0sd2F0Y2goKCk9PltlLmluY2x1ZGUsZS5leGNsdWRlXSwoW2UsdF0pPT57ZSYmcHJ1bmVDYWNoZSh0PT5tYXRjaGVzKGUsdCkpLHQmJnBydW5lQ2FjaGUoZT0+IW1hdGNoZXModCxlKSl9LHtmbHVzaDoicG9zdCIsZGVlcDohMH0pO2xldCBmPW51bGw7Y29uc3QgY2FjaGVTdWJ0cmVlPSgpPT57bnVsbCE9ZiYmKGlzU3VzcGVuc2Uobi5zdWJUcmVlLnR5cGUpP29uKCgpPT57by5zZXQoZixnZXRJbm5lckNoaWxkKG4uc3ViVHJlZSkpfSxuLnN1YlRyZWUuc3VzcGVuc2UpOm8uc2V0KGYsZ2V0SW5uZXJDaGlsZChuLnN1YlRyZWUpKSl9O3JldHVybiBJdChjYWNoZVN1YnRyZWUpLEx0KGNhY2hlU3VidHJlZSksRnQoKCk9PntvLmZvckVhY2goZT0+e2NvbnN0e3N1YlRyZWU6dCxzdXNwZW5zZTpyfT1uLG89Z2V0SW5uZXJDaGlsZCh0KTtpZihlLnR5cGU9PT1vLnR5cGUmJmUua2V5PT09by5rZXkpe3Jlc2V0U2hhcGVGbGFnKG8pO2NvbnN0IGU9by5jb21wb25lbnQuZGE7cmV0dXJuIHZvaWQoZSYmb24oZSxyKSl9dW5tb3VudChlKX0pfSksKCk9PntpZihmPW51bGwsIXQuZGVmYXVsdClyZXR1cm4gaT1udWxsO2NvbnN0IG49dC5kZWZhdWx0KCkscj1uWzBdO2lmKG4ubGVuZ3RoPjEpcmV0dXJuIGk9bnVsbCxuO2lmKCEoaXNWTm9kZSQyKHIpJiYoNCZyLnNoYXBlRmxhZ3x8MTI4JnIuc2hhcGVGbGFnKSkpcmV0dXJuIGk9bnVsbCxyO2xldCBhPWdldElubmVyQ2hpbGQocik7aWYoYS50eXBlPT09dW4pcmV0dXJuIGk9bnVsbCxhO2NvbnN0IGw9YS50eXBlLGM9Z2V0Q29tcG9uZW50TmFtZShpc0FzeW5jV3JhcHBlcihhKT9hLnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTpsKSx7aW5jbHVkZTp1LGV4Y2x1ZGU6cCxtYXg6ZH09ZTtpZih1JiYoIWN8fCFtYXRjaGVzKHUsYykpfHxwJiZjJiZtYXRjaGVzKHAsYykpcmV0dXJuIGEuc2hhcGVGbGFnJj0tMjU3LGk9YSxyO2NvbnN0IGc9bnVsbD09YS5rZXk/bDphLmtleSxtPW8uZ2V0KGcpO3JldHVybiBhLmVsJiYoYT1jbG9uZVZOb2RlKGEpLDEyOCZyLnNoYXBlRmxhZyYmKHIuc3NDb250ZW50PWEpKSxmPWcsbT8oYS5lbD1tLmVsLGEuY29tcG9uZW50PW0uY29tcG9uZW50LGEudHJhbnNpdGlvbiYmc2V0VHJhbnNpdGlvbkhvb2tzKGEsYS50cmFuc2l0aW9uKSxhLnNoYXBlRmxhZ3w9NTEyLHMuZGVsZXRlKGcpLHMuYWRkKGcpKToocy5hZGQoZyksZCYmcy5zaXplPnBhcnNlSW50KGQsMTApJiZwcnVuZUNhY2hlRW50cnkocy52YWx1ZXMoKS5uZXh0KCkudmFsdWUpKSxhLnNoYXBlRmxhZ3w9MjU2LGk9YSxpc1N1c3BlbnNlKHIudHlwZSk/cjphfX19O2Z1bmN0aW9uIG1hdGNoZXMoZSx0KXtyZXR1cm4geShlKT9lLnNvbWUoZT0+bWF0Y2hlcyhlLHQpKTokKGUpP2Uuc3BsaXQoIiwiKS5pbmNsdWRlcyh0KTohIUsoZSkmJihlLmxhc3RJbmRleD0wLGUudGVzdCh0KSl9ZnVuY3Rpb24gb25BY3RpdmF0ZWQoZSx0KXtyZWdpc3RlcktlZXBBbGl2ZUhvb2soZSwiYSIsdCl9ZnVuY3Rpb24gb25EZWFjdGl2YXRlZChlLHQpe3JlZ2lzdGVyS2VlcEFsaXZlSG9vayhlLCJkYSIsdCl9ZnVuY3Rpb24gcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGUsdCxuPXluKXtjb25zdCByPWUuX193ZGN8fChlLl9fd2RjPSgpPT57bGV0IHQ9bjtmb3IoO3Q7KXtpZih0LmlzRGVhY3RpdmF0ZWQpcmV0dXJuO3Q9dC5wYXJlbnR9cmV0dXJuIGUoKX0pO2lmKGluamVjdEhvb2sodCxyLG4pLG4pe2xldCBlPW4ucGFyZW50O2Zvcig7ZSYmZS5wYXJlbnQ7KWlzS2VlcEFsaXZlKGUucGFyZW50LnZub2RlKSYmaW5qZWN0VG9LZWVwQWxpdmVSb290KHIsdCxuLGUpLGU9ZS5wYXJlbnR9fWZ1bmN0aW9uIGluamVjdFRvS2VlcEFsaXZlUm9vdChlLHQsbixyKXtjb25zdCBvPWluamVjdEhvb2sodCxlLHIsITApO0J0KCgpPT57QShyW3RdLG8pfSxuKX1mdW5jdGlvbiByZXNldFNoYXBlRmxhZyhlKXtlLnNoYXBlRmxhZyY9LTI1NyxlLnNoYXBlRmxhZyY9LTUxM31mdW5jdGlvbiBnZXRJbm5lckNoaWxkKGUpe3JldHVybiAxMjgmZS5zaGFwZUZsYWc/ZS5zc0NvbnRlbnQ6ZX1mdW5jdGlvbiBpbmplY3RIb29rKGUsdCxuPXluLHI9ITEpe2lmKG4pe2NvbnN0IG89bltlXXx8KG5bZV09W10pLHM9dC5fX3dlaHx8KHQuX193ZWg9KC4uLnIpPT57cGF1c2VUcmFja2luZygpO2NvbnN0IG89c2V0Q3VycmVudEluc3RhbmNlKG4pLHM9Y2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcodCxuLGUscik7cmV0dXJuIG8oKSxyZXNldFRyYWNraW5nKCksc30pO3JldHVybiByP28udW5zaGlmdChzKTpvLnB1c2gocyksc319Y29uc3QgY3JlYXRlSG9vaz1lPT4odCxuPXluKT0+e0NuJiYic3AiIT09ZXx8aW5qZWN0SG9vayhlLCguLi5lKT0+dCguLi5lKSxuKX0sanQ9Y3JlYXRlSG9vaygiYm0iKSxJdD1jcmVhdGVIb29rKCJtIiksRHQ9Y3JlYXRlSG9vaygiYnUiKSxMdD1jcmVhdGVIb29rKCJ1IiksRnQ9Y3JlYXRlSG9vaygiYnVtIiksQnQ9Y3JlYXRlSG9vaygidW0iKSxVdD1jcmVhdGVIb29rKCJzcCIpLFd0PWNyZWF0ZUhvb2soInJ0ZyIpLHp0PWNyZWF0ZUhvb2soInJ0YyIpO2Z1bmN0aW9uIG9uRXJyb3JDYXB0dXJlZChlLHQ9eW4pe2luamVjdEhvb2soImVjIixlLHQpfWNvbnN0IHF0PSJjb21wb25lbnRzIjtjb25zdCBLdD1TeW1ib2wuZm9yKCJ2LW5kYyIpO2Z1bmN0aW9uIHJlc29sdmVBc3NldChlLHQsbj0hMCxyPSExKXtjb25zdCBvPV90fHx5bjtpZihvKXtjb25zdCBuPW8udHlwZTtpZihlPT09cXQpe2NvbnN0IGU9Z2V0Q29tcG9uZW50TmFtZShuLCExKTtpZihlJiYoZT09PXR8fGU9PT1CKHQpfHxlPT09RyhCKHQpKSkpcmV0dXJuIG59Y29uc3Qgcz1yZXNvbHZlKG9bZV18fG5bZV0sdCl8fHJlc29sdmUoby5hcHBDb250ZXh0W2VdLHQpO3JldHVybiFzJiZyP246c319ZnVuY3Rpb24gcmVzb2x2ZShlLHQpe3JldHVybiBlJiYoZVt0XXx8ZVtCKHQpXXx8ZVtHKEIodCkpXSl9ZnVuY3Rpb24gZW5zdXJlVmFsaWRWTm9kZSQxKGUpe3JldHVybiBlLnNvbWUoZT0+IWlzVk5vZGUkMihlKXx8ZS50eXBlIT09dW4mJiEoZS50eXBlPT09bG4mJiFlbnN1cmVWYWxpZFZOb2RlJDEoZS5jaGlsZHJlbikpKT9lOm51bGx9Y29uc3QgZ2V0UHVibGljSW5zdGFuY2U9ZT0+ZT9pc1N0YXRlZnVsQ29tcG9uZW50KGUpP2dldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKGUpOmdldFB1YmxpY0luc3RhbmNlKGUucGFyZW50KTpudWxsLEp0PXcoT2JqZWN0LmNyZWF0ZShudWxsKSx7JDplPT5lLCRlbDplPT5lLnZub2RlLmVsLCRkYXRhOmU9PmUuZGF0YSwkcHJvcHM6ZT0+ZS5wcm9wcywkYXR0cnM6ZT0+ZS5hdHRycywkc2xvdHM6ZT0+ZS5zbG90cywkcmVmczplPT5lLnJlZnMsJHBhcmVudDplPT5nZXRQdWJsaWNJbnN0YW5jZShlLnBhcmVudCksJHJvb3Q6ZT0+Z2V0UHVibGljSW5zdGFuY2UoZS5yb290KSwkaG9zdDplPT5lLmNlLCRlbWl0OmU9PmUuZW1pdCwkb3B0aW9uczplPT5yZXNvbHZlTWVyZ2VkT3B0aW9ucyhlKSwkZm9yY2VVcGRhdGU6ZT0+ZS5mfHwoZS5mPSgpPT57cXVldWVKb2IoZS51cGRhdGUpfSksJG5leHRUaWNrOmU9PmUubnx8KGUubj1uZXh0VGljay5iaW5kKGUucHJveHkpKSwkd2F0Y2g6ZT0+aW5zdGFuY2VXYXRjaC5iaW5kKGUpfSksaGFzU2V0dXBCaW5kaW5nPShlLHQpPT5lIT09bSYmIWUuX19pc1NjcmlwdFNldHVwJiZ2KGUsdCksR3Q9e2dldCh7XzplfSx0KXtpZigiX192X3NraXAiPT09dClyZXR1cm4hMDtjb25zdHtjdHg6bixzZXR1cFN0YXRlOnIsZGF0YTpvLHByb3BzOnMsYWNjZXNzQ2FjaGU6aSx0eXBlOmEsYXBwQ29udGV4dDpsfT1lO2lmKCIkIiE9PXRbMF0pe2NvbnN0IGU9aVt0XTtpZih2b2lkIDAhPT1lKXN3aXRjaChlKXtjYXNlIDE6cmV0dXJuIHJbdF07Y2FzZSAyOnJldHVybiBvW3RdO2Nhc2UgNDpyZXR1cm4gblt0XTtjYXNlIDM6cmV0dXJuIHNbdF19ZWxzZXtpZihoYXNTZXR1cEJpbmRpbmcocix0KSlyZXR1cm4gaVt0XT0xLHJbdF07aWYobyE9PW0mJnYobyx0KSlyZXR1cm4gaVt0XT0yLG9bdF07aWYodihzLHQpKXJldHVybiBpW3RdPTMsc1t0XTtpZihuIT09bSYmdihuLHQpKXJldHVybiBpW3RdPTQsblt0XTtYdCYmKGlbdF09MCl9fWNvbnN0IGM9SnRbdF07bGV0IHUscDtyZXR1cm4gYz8oIiRhdHRycyI9PT10JiZ0cmFjayhlLmF0dHJzLDAsIiIpLGMoZSkpOih1PWEuX19jc3NNb2R1bGVzKSYmKHU9dVt0XSk/dTpuIT09bSYmdihuLHQpPyhpW3RdPTQsblt0XSk6KHA9bC5jb25maWcuZ2xvYmFsUHJvcGVydGllcyx2KHAsdCk/cFt0XTp2b2lkIDApfSxzZXQoe186ZX0sdCxuKXtjb25zdHtkYXRhOnIsc2V0dXBTdGF0ZTpvLGN0eDpzfT1lO3JldHVybiBoYXNTZXR1cEJpbmRpbmcobyx0KT8ob1t0XT1uLCEwKTpyIT09bSYmdihyLHQpPyhyW3RdPW4sITApOiF2KGUucHJvcHMsdCkmJigoIiQiIT09dFswXXx8ISh0LnNsaWNlKDEpaW4gZSkpJiYoc1t0XT1uLCEwKSl9LGhhcyh7Xzp7ZGF0YTplLHNldHVwU3RhdGU6dCxhY2Nlc3NDYWNoZTpuLGN0eDpyLGFwcENvbnRleHQ6byxwcm9wczpzLHR5cGU6aX19LGEpe2xldCBsO3JldHVybiEhKG5bYV18fGUhPT1tJiYiJCIhPT1hWzBdJiZ2KGUsYSl8fGhhc1NldHVwQmluZGluZyh0LGEpfHx2KHMsYSl8fHYocixhKXx8dihKdCxhKXx8dihvLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLGEpfHwobD1pLl9fY3NzTW9kdWxlcykmJmxbYV0pfSxkZWZpbmVQcm9wZXJ0eShlLHQsbil7cmV0dXJuIG51bGwhPW4uZ2V0P2UuXy5hY2Nlc3NDYWNoZVt0XT0wOnYobiwidmFsdWUiKSYmdGhpcy5zZXQoZSx0LG4udmFsdWUsbnVsbCksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbil9fSxadD13KHt9LEd0LHtnZXQoZSx0KXtpZih0IT09U3ltYm9sLnVuc2NvcGFibGVzKXJldHVybiBHdC5nZXQoZSx0LGUpfSxoYXM6KGUsdCk9PiJfIiE9PXRbMF0mJiFaKHQpfSk7ZnVuY3Rpb24gZ2V0Q29udGV4dChlKXtjb25zdCB0PWdldEN1cnJlbnRJbnN0YW5jZSgpO3JldHVybiB0LnNldHVwQ29udGV4dHx8KHQuc2V0dXBDb250ZXh0PWNyZWF0ZVNldHVwQ29udGV4dCh0KSl9ZnVuY3Rpb24gbm9ybWFsaXplUHJvcHNPckVtaXRzKGUpe3JldHVybiB5KGUpP2UucmVkdWNlKChlLHQpPT4oZVt0XT1udWxsLGUpLHt9KTplfWxldCBYdD0hMDtmdW5jdGlvbiBhcHBseU9wdGlvbnMoZSl7Y29uc3QgdD1yZXNvbHZlTWVyZ2VkT3B0aW9ucyhlKSxuPWUucHJveHkscj1lLmN0eDtYdD0hMSx0LmJlZm9yZUNyZWF0ZSYmY2FsbEhvb2skMSh0LmJlZm9yZUNyZWF0ZSxlLCJiYyIpO2NvbnN0e2RhdGE6byxjb21wdXRlZDpzLG1ldGhvZHM6aSx3YXRjaDphLHByb3ZpZGU6bCxpbmplY3Q6YyxjcmVhdGVkOnUsYmVmb3JlTW91bnQ6cCxtb3VudGVkOmQsYmVmb3JlVXBkYXRlOmcsdXBkYXRlZDptLGFjdGl2YXRlZDp2LGRlYWN0aXZhdGVkOl8sYmVmb3JlRGVzdHJveTprLGJlZm9yZVVubW91bnQ6QyxkZXN0cm95ZWQ6Uyx1bm1vdW50ZWQ6dyxyZW5kZXI6VCxyZW5kZXJUcmFja2VkOlIscmVuZGVyVHJpZ2dlcmVkOkEsZXJyb3JDYXB0dXJlZDp4LHNlcnZlclByZWZldGNoOkUsZXhwb3NlOiQsaW5oZXJpdEF0dHJzOk8sY29tcG9uZW50czpOLGRpcmVjdGl2ZXM6SCxmaWx0ZXJzOk19PXQ7aWYoYyYmZnVuY3Rpb24oZSx0KXt5KGUpJiYoZT1ub3JtYWxpemVJbmplY3QoZSkpO2Zvcihjb25zdCBuIGluIGUpe2NvbnN0IHI9ZVtuXTtsZXQgbztvPWIocik/ImRlZmF1bHQiaW4gcj9pbmplY3Qoci5mcm9tfHxuLHIuZGVmYXVsdCwhMCk6aW5qZWN0KHIuZnJvbXx8bik6aW5qZWN0KHIpLGlzUmVmKG8pP09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+by52YWx1ZSxzZXQ6ZT0+by52YWx1ZT1lfSk6dFtuXT1vfX0oYyxyLG51bGwpLGkpZm9yKGNvbnN0IGUgaW4gaSl7Y29uc3QgdD1pW2VdO2YodCkmJihyW2VdPXQuYmluZChuKSl9aWYobyl7Y29uc3QgdD1vLmNhbGwobixuKTtiKHQpJiYoZS5kYXRhPXJlYWN0aXZlKHQpKX1pZihYdD0hMCxzKWZvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXSxvPWYodCk/dC5iaW5kKG4sbik6Zih0LmdldCk/dC5nZXQuYmluZChuLG4pOlAsaT0hZih0KSYmZih0LnNldCk/dC5zZXQuYmluZChuKTpQLGE9Y29tcHV0ZWQoe2dldDpvLHNldDppfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5hLnZhbHVlLHNldDplPT5hLnZhbHVlPWV9KX1pZihhKWZvcihjb25zdCBlIGluIGEpY3JlYXRlV2F0Y2hlcihhW2VdLHIsbixlKTtpZihsKXtjb25zdCBlPWYobCk/bC5jYWxsKG4pOmw7UmVmbGVjdC5vd25LZXlzKGUpLmZvckVhY2godD0+e3Byb3ZpZGUodCxlW3RdKX0pfWZ1bmN0aW9uIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhlLHQpe3kodCk/dC5mb3JFYWNoKHQ9PmUodC5iaW5kKG4pKSk6dCYmZSh0LmJpbmQobikpfWlmKHUmJmNhbGxIb29rJDEodSxlLCJjIikscmVnaXN0ZXJMaWZlY3ljbGVIb29rKGp0LHApLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhJdCxkKSxyZWdpc3RlckxpZmVjeWNsZUhvb2soRHQsZykscmVnaXN0ZXJMaWZlY3ljbGVIb29rKEx0LG0pLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkFjdGl2YXRlZCx2KSxyZWdpc3RlckxpZmVjeWNsZUhvb2sob25EZWFjdGl2YXRlZCxfKSxyZWdpc3RlckxpZmVjeWNsZUhvb2sob25FcnJvckNhcHR1cmVkLHgpLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayh6dCxSKSxyZWdpc3RlckxpZmVjeWNsZUhvb2soV3QsQSkscmVnaXN0ZXJMaWZlY3ljbGVIb29rKEZ0LEMpLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhCdCx3KSxyZWdpc3RlckxpZmVjeWNsZUhvb2soVXQsRSkseSgkKSlpZigkLmxlbmd0aCl7Y29uc3QgdD1lLmV4cG9zZWR8fChlLmV4cG9zZWQ9e30pOyQuZm9yRWFjaChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OigpPT5uW2VdLHNldDp0PT5uW2VdPXQsZW51bWVyYWJsZTohMH0pfSl9ZWxzZSBlLmV4cG9zZWR8fChlLmV4cG9zZWQ9e30pO1QmJmUucmVuZGVyPT09UCYmKGUucmVuZGVyPVQpLG51bGwhPU8mJihlLmluaGVyaXRBdHRycz1PKSxOJiYoZS5jb21wb25lbnRzPU4pLEgmJihlLmRpcmVjdGl2ZXM9SCksRSYmbWFya0FzeW5jQm91bmRhcnkoZSl9ZnVuY3Rpb24gY2FsbEhvb2skMShlLHQsbil7Y2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoeShlKT9lLm1hcChlPT5lLmJpbmQodC5wcm94eSkpOmUuYmluZCh0LnByb3h5KSx0LG4pfWZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIoZSx0LG4scil7bGV0IG89ci5pbmNsdWRlcygiLiIpP2NyZWF0ZVBhdGhHZXR0ZXIobixyKTooKT0+bltyXTtpZigkKGUpKXtjb25zdCBuPXRbZV07ZihuKSYmd2F0Y2gobyxuKX1lbHNlIGlmKGYoZSkpd2F0Y2gobyxlLmJpbmQobikpO2Vsc2UgaWYoYihlKSlpZih5KGUpKWUuZm9yRWFjaChlPT5jcmVhdGVXYXRjaGVyKGUsdCxuLHIpKTtlbHNle2NvbnN0IHI9ZihlLmhhbmRsZXIpP2UuaGFuZGxlci5iaW5kKG4pOnRbZS5oYW5kbGVyXTtmKHIpJiZ3YXRjaChvLHIsZSl9fWZ1bmN0aW9uIHJlc29sdmVNZXJnZWRPcHRpb25zKGUpe2NvbnN0IHQ9ZS50eXBlLHttaXhpbnM6bixleHRlbmRzOnJ9PXQse21peGluczpvLG9wdGlvbnNDYWNoZTpzLGNvbmZpZzp7b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOml9fT1lLmFwcENvbnRleHQsYT1zLmdldCh0KTtsZXQgbDtyZXR1cm4gYT9sPWE6by5sZW5ndGh8fG58fHI/KGw9e30sby5sZW5ndGgmJm8uZm9yRWFjaChlPT5tZXJnZU9wdGlvbnMobCxlLGksITApKSxtZXJnZU9wdGlvbnMobCx0LGkpKTpsPXQsYih0KSYmcy5zZXQodCxsKSxsfWZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhlLHQsbixyPSExKXtjb25zdHttaXhpbnM6byxleHRlbmRzOnN9PXQ7cyYmbWVyZ2VPcHRpb25zKGUscyxuLCEwKSxvJiZvLmZvckVhY2godD0+bWVyZ2VPcHRpb25zKGUsdCxuLCEwKSk7Zm9yKGNvbnN0IG8gaW4gdClpZihyJiYiZXhwb3NlIj09PW8pO2Vsc2V7Y29uc3Qgcj1ZdFtvXXx8biYmbltvXTtlW29dPXI/cihlW29dLHRbb10pOnRbb119cmV0dXJuIGV9Y29uc3QgWXQ9e2RhdGE6bWVyZ2VEYXRhRm4scHJvcHM6bWVyZ2VFbWl0c09yUHJvcHNPcHRpb25zLGVtaXRzOm1lcmdlRW1pdHNPclByb3BzT3B0aW9ucyxtZXRob2RzOm1lcmdlT2JqZWN0T3B0aW9ucyxjb21wdXRlZDptZXJnZU9iamVjdE9wdGlvbnMsYmVmb3JlQ3JlYXRlOm1lcmdlQXNBcnJheSxjcmVhdGVkOm1lcmdlQXNBcnJheSxiZWZvcmVNb3VudDptZXJnZUFzQXJyYXksbW91bnRlZDptZXJnZUFzQXJyYXksYmVmb3JlVXBkYXRlOm1lcmdlQXNBcnJheSx1cGRhdGVkOm1lcmdlQXNBcnJheSxiZWZvcmVEZXN0cm95Om1lcmdlQXNBcnJheSxiZWZvcmVVbm1vdW50Om1lcmdlQXNBcnJheSxkZXN0cm95ZWQ6bWVyZ2VBc0FycmF5LHVubW91bnRlZDptZXJnZUFzQXJyYXksYWN0aXZhdGVkOm1lcmdlQXNBcnJheSxkZWFjdGl2YXRlZDptZXJnZUFzQXJyYXksZXJyb3JDYXB0dXJlZDptZXJnZUFzQXJyYXksc2VydmVyUHJlZmV0Y2g6bWVyZ2VBc0FycmF5LGNvbXBvbmVudHM6bWVyZ2VPYmplY3RPcHRpb25zLGRpcmVjdGl2ZXM6bWVyZ2VPYmplY3RPcHRpb25zLHdhdGNoOmZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIHQ7aWYoIXQpcmV0dXJuIGU7Y29uc3Qgbj13KE9iamVjdC5jcmVhdGUobnVsbCksZSk7Zm9yKGNvbnN0IHIgaW4gdCluW3JdPW1lcmdlQXNBcnJheShlW3JdLHRbcl0pO3JldHVybiBufSxwcm92aWRlOm1lcmdlRGF0YUZuLGluamVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBtZXJnZU9iamVjdE9wdGlvbnMobm9ybWFsaXplSW5qZWN0KGUpLG5vcm1hbGl6ZUluamVjdCh0KSl9fTtmdW5jdGlvbiBtZXJnZURhdGFGbihlLHQpe3JldHVybiB0P2U/ZnVuY3Rpb24oKXtyZXR1cm4gdyhmKGUpP2UuY2FsbCh0aGlzLHRoaXMpOmUsZih0KT90LmNhbGwodGhpcyx0aGlzKTp0KX06dDplfWZ1bmN0aW9uIG5vcm1hbGl6ZUluamVjdChlKXtpZih5KGUpKXtjb25zdCB0PXt9O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXRbZVtuXV09ZVtuXTtyZXR1cm4gdH1yZXR1cm4gZX1mdW5jdGlvbiBtZXJnZUFzQXJyYXkoZSx0KXtyZXR1cm4gZT9bLi4ubmV3IFNldChbXS5jb25jYXQoZSx0KSldOnR9ZnVuY3Rpb24gbWVyZ2VPYmplY3RPcHRpb25zKGUsdCl7cmV0dXJuIGU/dyhPYmplY3QuY3JlYXRlKG51bGwpLGUsdCk6dH1mdW5jdGlvbiBtZXJnZUVtaXRzT3JQcm9wc09wdGlvbnMoZSx0KXtyZXR1cm4gZT95KGUpJiZ5KHQpP1suLi5uZXcgU2V0KFsuLi5lLC4uLnRdKV06dyhPYmplY3QuY3JlYXRlKG51bGwpLG5vcm1hbGl6ZVByb3BzT3JFbWl0cyhlKSxub3JtYWxpemVQcm9wc09yRW1pdHMobnVsbCE9dD90Ont9KSk6dH1mdW5jdGlvbiBjcmVhdGVBcHBDb250ZXh0KCl7cmV0dXJue2FwcDpudWxsLGNvbmZpZzp7aXNOYXRpdmVUYWc6RCxwZXJmb3JtYW5jZTohMSxnbG9iYWxQcm9wZXJ0aWVzOnt9LG9wdGlvbk1lcmdlU3RyYXRlZ2llczp7fSxlcnJvckhhbmRsZXI6dm9pZCAwLHdhcm5IYW5kbGVyOnZvaWQgMCxjb21waWxlck9wdGlvbnM6e319LG1peGluczpbXSxjb21wb25lbnRzOnt9LGRpcmVjdGl2ZXM6e30scHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxvcHRpb25zQ2FjaGU6bmV3IFdlYWtNYXAscHJvcHNDYWNoZTpuZXcgV2Vha01hcCxlbWl0c0NhY2hlOm5ldyBXZWFrTWFwfX1sZXQgUXQ9MDtmdW5jdGlvbiBjcmVhdGVBcHBBUEkoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyPW51bGwpe2Yobil8fChuPXcoe30sbikpLG51bGw9PXJ8fGIocil8fChyPW51bGwpO2NvbnN0IG89Y3JlYXRlQXBwQ29udGV4dCgpLHM9bmV3IFdlYWtTZXQsaT1bXTtsZXQgYT0hMTtjb25zdCBsPW8uYXBwPXtfdWlkOlF0KyssX2NvbXBvbmVudDpuLF9wcm9wczpyLF9jb250YWluZXI6bnVsbCxfY29udGV4dDpvLF9pbnN0YW5jZTpudWxsLHZlcnNpb246d24sZ2V0IGNvbmZpZygpe3JldHVybiBvLmNvbmZpZ30sc2V0IGNvbmZpZyhlKXt9LHVzZTooZSwuLi50KT0+KHMuaGFzKGUpfHwoZSYmZihlLmluc3RhbGwpPyhzLmFkZChlKSxlLmluc3RhbGwobCwuLi50KSk6ZihlKSYmKHMuYWRkKGUpLGUobCwuLi50KSkpLGwpLG1peGluOmU9PihvLm1peGlucy5pbmNsdWRlcyhlKXx8by5taXhpbnMucHVzaChlKSxsKSxjb21wb25lbnQ6KGUsdCk9PnQ/KG8uY29tcG9uZW50c1tlXT10LGwpOm8uY29tcG9uZW50c1tlXSxkaXJlY3RpdmU6KGUsdCk9PnQ/KG8uZGlyZWN0aXZlc1tlXT10LGwpOm8uZGlyZWN0aXZlc1tlXSxtb3VudChzLGksYyl7aWYoIWEpe2NvbnN0IHU9bC5fY2VWTm9kZXx8Y3JlYXRlVk5vZGUobixyKTtyZXR1cm4gdS5hcHBDb250ZXh0PW8sITA9PT1jP2M9InN2ZyI6ITE9PT1jJiYoYz12b2lkIDApLGkmJnQ/dCh1LHMpOmUodSxzLGMpLGE9ITAsbC5fY29udGFpbmVyPXMscy5fX3Z1ZV9hcHBfXz1sLGdldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKHUuY29tcG9uZW50KX19LG9uVW5tb3VudChlKXtpLnB1c2goZSl9LHVubW91bnQoKXthJiYoY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaSxsLl9pbnN0YW5jZSwxNiksZShudWxsLGwuX2NvbnRhaW5lciksZGVsZXRlIGwuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXyl9LHByb3ZpZGU6KGUsdCk9PihvLnByb3ZpZGVzW2VdPXQsbCkscnVuV2l0aENvbnRleHQoZSl7Y29uc3QgdD1lbjtlbj1sO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7ZW49dH19fTtyZXR1cm4gbH19bGV0IGVuPW51bGw7Y29uc3QgZ2V0TW9kZWxNb2RpZmllcnM9KGUsdCk9PiJtb2RlbFZhbHVlIj09PXR8fCJtb2RlbC12YWx1ZSI9PT10P2UubW9kZWxNb2RpZmllcnM6ZVtgJHt0fU1vZGlmaWVyc2BdfHxlW2Ake0IodCl9TW9kaWZpZXJzYF18fGVbYCR7eih0KX1Nb2RpZmllcnNgXTtmdW5jdGlvbiBlbWl0KGUsdCwuLi5uKXtpZihlLmlzVW5tb3VudGVkKXJldHVybjtjb25zdCByPWUudm5vZGUucHJvcHN8fG07bGV0IG89bjtjb25zdCBzPXQuc3RhcnRzV2l0aCgidXBkYXRlOiIpLGk9cyYmZ2V0TW9kZWxNb2RpZmllcnMocix0LnNsaWNlKDcpKTtsZXQgYTtpJiYoaS50cmltJiYobz1uLm1hcChlPT4kKGUpP2UudHJpbSgpOmUpKSxpLm51bWJlciYmKG89bi5tYXAoVSkpKTtsZXQgbD1yW2E9Vyh0KV18fHJbYT1XKEIodCkpXTshbCYmcyYmKGw9clthPVcoeih0KSldKSxsJiZjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhsLGUsNixvKTtjb25zdCBjPXJbYSsiT25jZSJdO2lmKGMpe2lmKGUuZW1pdHRlZCl7aWYoZS5lbWl0dGVkW2FdKXJldHVybn1lbHNlIGUuZW1pdHRlZD17fTtlLmVtaXR0ZWRbYV09ITAsY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoYyxlLDYsbyl9fWNvbnN0IHRuPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhlLHQsbj0hMSl7Y29uc3Qgcj1uP3RuOnQuZW1pdHNDYWNoZSxvPXIuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG87Y29uc3Qgcz1lLmVtaXRzO2xldCBpPXt9LGE9ITE7aWYoIWYoZSkpe2NvbnN0IGV4dGVuZEVtaXRzPWU9Pntjb25zdCBuPW5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhlLHQsITApO24mJihhPSEwLHcoaSxuKSl9OyFuJiZ0Lm1peGlucy5sZW5ndGgmJnQubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpLGUuZXh0ZW5kcyYmZXh0ZW5kRW1pdHMoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChleHRlbmRFbWl0cyl9cmV0dXJuIHN8fGE/KHkocyk/cy5mb3JFYWNoKGU9PmlbZV09bnVsbCk6dyhpLHMpLGIoZSkmJnIuc2V0KGUsaSksaSk6KGIoZSkmJnIuc2V0KGUsbnVsbCksbnVsbCl9ZnVuY3Rpb24gaXNFbWl0TGlzdGVuZXIoZSx0KXtyZXR1cm4hKCFlfHwhSCh0KSkmJih0PXQuc2xpY2UoMikucmVwbGFjZSgvT25jZSQvLCIiKSx2KGUsdFswXS50b0xvd2VyQ2FzZSgpK3Quc2xpY2UoMSkpfHx2KGUseih0KSl8fHYoZSx0KSl9ZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50Um9vdCQxKGUpe2NvbnN0e3R5cGU6dCx2bm9kZTpuLHByb3h5OnIsd2l0aFByb3h5Om8scHJvcHNPcHRpb25zOltzXSxzbG90czppLGF0dHJzOmEsZW1pdDpsLHJlbmRlcjpjLHJlbmRlckNhY2hlOnUscHJvcHM6cCxkYXRhOmQsc2V0dXBTdGF0ZTpmLGN0eDpnLGluaGVyaXRBdHRyczptfT1lLHk9c2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEoZSk7bGV0IHYsXzt0cnl7aWYoNCZuLnNoYXBlRmxhZyl7Y29uc3QgZT1vfHxyLHQ9ZTt2PW5vcm1hbGl6ZVZOb2RlJDEoYy5jYWxsKHQsZSx1LHAsZixkLGcpKSxfPWF9ZWxzZXtjb25zdCBlPXQ7MCx2PW5vcm1hbGl6ZVZOb2RlJDEoZS5sZW5ndGg+MT9lKHAse2F0dHJzOmEsc2xvdHM6aSxlbWl0Omx9KTplKHAsbnVsbCkpLF89dC5wcm9wcz9hOmdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaChhKX19Y2F0Y2godCl7ZG4ubGVuZ3RoPTAsaGFuZGxlRXJyb3IodCxlLDEpLHY9Y3JlYXRlVk5vZGUodW4pfWxldCBiPXY7aWYoXyYmITEhPT1tKXtjb25zdCBlPU9iamVjdC5rZXlzKF8pLHtzaGFwZUZsYWc6dH09YjtlLmxlbmd0aCYmNyZ0JiYocyYmZS5zb21lKE0pJiYoXz1maWx0ZXJNb2RlbExpc3RlbmVycyhfLHMpKSxiPWNsb25lVk5vZGUoYixfLCExLCEwKSl9cmV0dXJuIG4uZGlycyYmKGI9Y2xvbmVWTm9kZShiLG51bGwsITEsITApLGIuZGlycz1iLmRpcnM/Yi5kaXJzLmNvbmNhdChuLmRpcnMpOm4uZGlycyksbi50cmFuc2l0aW9uJiZzZXRUcmFuc2l0aW9uSG9va3MoYixuLnRyYW5zaXRpb24pLHY9YixzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UkMSh5KSx2fWNvbnN0IGdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaD1lPT57bGV0IHQ7Zm9yKGNvbnN0IG4gaW4gZSkoImNsYXNzIj09PW58fCJzdHlsZSI9PT1ufHxIKG4pKSYmKCh0fHwodD17fSkpW25dPWVbbl0pO3JldHVybiB0fSxmaWx0ZXJNb2RlbExpc3RlbmVycz0oZSx0KT0+e2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSlNKHIpJiZyLnNsaWNlKDkpaW4gdHx8KG5bcl09ZVtyXSk7cmV0dXJuIG59O2Z1bmN0aW9uIGhhc1Byb3BzQ2hhbmdlZChlLHQsbil7Y29uc3Qgcj1PYmplY3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9PU9iamVjdC5rZXlzKGUpLmxlbmd0aClyZXR1cm4hMDtmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyl7Y29uc3Qgcz1yW29dO2lmKGhhc1Byb3BWYWx1ZUNoYW5nZWQodCxlLHMpJiYhaXNFbWl0TGlzdGVuZXIobixzKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBoYXNQcm9wVmFsdWVDaGFuZ2VkKGUsdCxuKXtjb25zdCByPWVbbl0sbz10W25dO3JldHVybiJzdHlsZSI9PT1uJiZiKHIpJiZiKG8pPyFxKHIsbyk6ciE9PW99ZnVuY3Rpb24gdXBkYXRlSE9DSG9zdEVsKHt2bm9kZTplLHBhcmVudDp0LHN1c3BlbnNlOm59LHIpe2Zvcig7dDspe2NvbnN0IG49dC5zdWJUcmVlO2lmKG4uc3VzcGVuc2UmJm4uc3VzcGVuc2UuYWN0aXZlQnJhbmNoPT09ZSYmKG4uc3VzcGVuc2Uudm5vZGUuZWw9bi5lbD1yLGU9biksbiE9PWUpYnJlYWs7KGU9dC52bm9kZSkuZWw9cix0PXQucGFyZW50fW4mJm4uYWN0aXZlQnJhbmNoPT09ZSYmKG4udm5vZGUuZWw9cil9Y29uc3Qgbm49e30sY3JlYXRlSW50ZXJuYWxPYmplY3Q9KCk9Pk9iamVjdC5jcmVhdGUobm4pLGlzSW50ZXJuYWxPYmplY3Q9ZT0+T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bm47ZnVuY3Rpb24gc2V0RnVsbFByb3BzKGUsdCxuLHIpe2NvbnN0W28sc109ZS5wcm9wc09wdGlvbnM7bGV0IGksYT0hMTtpZih0KWZvcihsZXQgbCBpbiB0KXtpZihGKGwpKWNvbnRpbnVlO2NvbnN0IGM9dFtsXTtsZXQgdTtvJiZ2KG8sdT1CKGwpKT9zJiZzLmluY2x1ZGVzKHUpPyhpfHwoaT17fSkpW3VdPWM6blt1XT1jOmlzRW1pdExpc3RlbmVyKGUuZW1pdHNPcHRpb25zLGwpfHxsIGluIHImJmM9PT1yW2xdfHwocltsXT1jLGE9ITApfWlmKHMpe2NvbnN0IHQ9dG9SYXcobikscj1pfHxtO2ZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKXtjb25zdCBhPXNbaV07blthXT1yZXNvbHZlUHJvcFZhbHVlKG8sdCxhLHJbYV0sZSwhdihyLGEpKX19cmV0dXJuIGF9ZnVuY3Rpb24gcmVzb2x2ZVByb3BWYWx1ZShlLHQsbixyLG8scyl7Y29uc3QgaT1lW25dO2lmKG51bGwhPWkpe2NvbnN0IGU9dihpLCJkZWZhdWx0Iik7aWYoZSYmdm9pZCAwPT09cil7Y29uc3QgZT1pLmRlZmF1bHQ7aWYoaS50eXBlIT09RnVuY3Rpb24mJiFpLnNraXBGYWN0b3J5JiZmKGUpKXtjb25zdHtwcm9wc0RlZmF1bHRzOnN9PW87aWYobiBpbiBzKXI9c1tuXTtlbHNle2NvbnN0IGk9c2V0Q3VycmVudEluc3RhbmNlKG8pO3I9c1tuXT1lLmNhbGwobnVsbCx0KSxpKCl9fWVsc2Ugcj1lO28uY2UmJm8uY2UuX3NldFByb3AobixyKX1pWzBdJiYocyYmIWU/cj0hMTohaVsxXXx8IiIhPT1yJiZyIT09eihuKXx8KHI9ITApKX1yZXR1cm4gcn1jb25zdCBybj1uZXcgV2Vha01hcDtmdW5jdGlvbiBub3JtYWxpemVQcm9wc09wdGlvbnMoZSx0LG49ITEpe2NvbnN0IHI9bj9ybjp0LnByb3BzQ2FjaGUsbz1yLmdldChlKTtpZihvKXJldHVybiBvO2NvbnN0IHM9ZS5wcm9wcyxpPXt9LGE9W107bGV0IGw9ITE7aWYoIWYoZSkpe2NvbnN0IGV4dGVuZFByb3BzPWU9PntsPSEwO2NvbnN0W24scl09bm9ybWFsaXplUHJvcHNPcHRpb25zKGUsdCwhMCk7dyhpLG4pLHImJmEucHVzaCguLi5yKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyksZS5leHRlbmRzJiZleHRlbmRQcm9wcyhlLmV4dGVuZHMpLGUubWl4aW5zJiZlLm1peGlucy5mb3JFYWNoKGV4dGVuZFByb3BzKX1pZighcyYmIWwpcmV0dXJuIGIoZSkmJnIuc2V0KGUsTCksTDtpZih5KHMpKWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXtjb25zdCB0PUIoc1tlXSk7dmFsaWRhdGVQcm9wTmFtZSh0KSYmKGlbdF09bSl9ZWxzZSBpZihzKWZvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9QihlKTtpZih2YWxpZGF0ZVByb3BOYW1lKHQpKXtjb25zdCBuPXNbZV0scj1pW3RdPXkobil8fGYobik/e3R5cGU6bn06dyh7fSxuKSxvPXIudHlwZTtsZXQgbD0hMSxjPSEwO2lmKHkobykpZm9yKGxldCBlPTA7ZTxvLmxlbmd0aDsrK2Upe2NvbnN0IHQ9b1tlXSxuPWYodCkmJnQubmFtZTtpZigiQm9vbGVhbiI9PT1uKXtsPSEwO2JyZWFrfSJTdHJpbmciPT09biYmKGM9ITEpfWVsc2UgbD1mKG8pJiYiQm9vbGVhbiI9PT1vLm5hbWU7clswXT1sLHJbMV09YywobHx8dihyLCJkZWZhdWx0IikpJiZhLnB1c2godCl9fWNvbnN0IGM9W2ksYV07cmV0dXJuIGIoZSkmJnIuc2V0KGUsYyksY31mdW5jdGlvbiB2YWxpZGF0ZVByb3BOYW1lKGUpe3JldHVybiIkIiE9PWVbMF0mJiFGKGUpfWNvbnN0IGlzSW50ZXJuYWxLZXk9ZT0+Il8iPT09ZXx8Il9jdHgiPT09ZXx8IiRzdGFibGUiPT09ZSxub3JtYWxpemVTbG90VmFsdWU9ZT0+eShlKT9lLm1hcChub3JtYWxpemVWTm9kZSQxKTpbbm9ybWFsaXplVk5vZGUkMShlKV0sbm9ybWFsaXplU2xvdD0oZSx0LG4pPT57aWYodC5fbilyZXR1cm4gdDtjb25zdCByPXdpdGhDdHgoKC4uLmUpPT5ub3JtYWxpemVTbG90VmFsdWUodCguLi5lKSksbik7cmV0dXJuIHIuX2M9ITEscn0sbm9ybWFsaXplT2JqZWN0U2xvdHM9KGUsdCxuKT0+e2NvbnN0IHI9ZS5fY3R4O2Zvcihjb25zdCBuIGluIGUpe2lmKGlzSW50ZXJuYWxLZXkobikpY29udGludWU7Y29uc3Qgbz1lW25dO2lmKGYobykpdFtuXT1ub3JtYWxpemVTbG90KDAsbyxyKTtlbHNlIGlmKG51bGwhPW8pe2NvbnN0IGU9bm9ybWFsaXplU2xvdFZhbHVlKG8pO3Rbbl09KCk9PmV9fX0sbm9ybWFsaXplVk5vZGVTbG90cz0oZSx0KT0+e2NvbnN0IG49bm9ybWFsaXplU2xvdFZhbHVlKHQpO2Uuc2xvdHMuZGVmYXVsdD0oKT0+bn0sYXNzaWduU2xvdHM9KGUsdCxuKT0+e2Zvcihjb25zdCByIGluIHQpIW4mJmlzSW50ZXJuYWxLZXkocil8fChlW3JdPXRbcl0pfSxvbj1xdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZTtmdW5jdGlvbiBjcmVhdGVSZW5kZXJlcihlKXtyZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKGUpfWZ1bmN0aW9uIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyKGUpe3JldHVybiBiYXNlQ3JlYXRlUmVuZGVyZXIoZSxjcmVhdGVIeWRyYXRpb25GdW5jdGlvbnMpfWZ1bmN0aW9uIGJhc2VDcmVhdGVSZW5kZXJlcihlLHQpe2ooKS5fX1ZVRV9fPSEwO2NvbnN0e2luc2VydDpuLHJlbW92ZTpyLHBhdGNoUHJvcDpvLGNyZWF0ZUVsZW1lbnQ6cyxjcmVhdGVUZXh0OmksY3JlYXRlQ29tbWVudDphLHNldFRleHQ6bCxzZXRFbGVtZW50VGV4dDpjLHBhcmVudE5vZGU6dSxuZXh0U2libGluZzpwLHNldFNjb3BlSWQ6ZD1QLGluc2VydFN0YXRpY0NvbnRlbnQ6Zn09ZSxwYXRjaD0oZSx0LG4scj1udWxsLG89bnVsbCxzPW51bGwsaT12b2lkIDAsYT1udWxsLGw9ISF0LmR5bmFtaWNDaGlsZHJlbik9PntpZihlPT09dClyZXR1cm47ZSYmIWlzU2FtZVZOb2RlVHlwZShlLHQpJiYocj1nZXROZXh0SG9zdE5vZGUoZSksdW5tb3VudChlLG8scywhMCksZT1udWxsKSwtMj09PXQucGF0Y2hGbGFnJiYobD0hMSx0LmR5bmFtaWNDaGlsZHJlbj1udWxsKTtjb25zdHt0eXBlOmMscmVmOnUsc2hhcGVGbGFnOnB9PXQ7c3dpdGNoKGMpe2Nhc2UgY246cHJvY2Vzc1RleHQoZSx0LG4scik7YnJlYWs7Y2FzZSB1bjpwcm9jZXNzQ29tbWVudE5vZGUoZSx0LG4scik7YnJlYWs7Y2FzZSBwbjpudWxsPT1lJiZtb3VudFN0YXRpY05vZGUodCxuLHIsaSk7YnJlYWs7Y2FzZSBsbjpwcm9jZXNzRnJhZ21lbnQoZSx0LG4scixvLHMsaSxhLGwpO2JyZWFrO2RlZmF1bHQ6MSZwP3Byb2Nlc3NFbGVtZW50KGUsdCxuLHIsbyxzLGksYSxsKTo2JnA/cHJvY2Vzc0NvbXBvbmVudChlLHQsbixyLG8scyxpLGEsbCk6KDY0JnB8fDEyOCZwKSYmYy5wcm9jZXNzKGUsdCxuLHIsbyxzLGksYSxsLHkpfW51bGwhPXUmJm8/c2V0UmVmKHUsZSYmZS5yZWYscyx0fHxlLCF0KTpudWxsPT11JiZlJiZudWxsIT1lLnJlZiYmc2V0UmVmKGUucmVmLG51bGwscyxlLCEwKX0scHJvY2Vzc1RleHQ9KGUsdCxyLG8pPT57aWYobnVsbD09ZSluKHQuZWw9aSh0LmNoaWxkcmVuKSxyLG8pO2Vsc2V7Y29uc3Qgbj10LmVsPWUuZWw7dC5jaGlsZHJlbiE9PWUuY2hpbGRyZW4mJmwobix0LmNoaWxkcmVuKX19LHByb2Nlc3NDb21tZW50Tm9kZT0oZSx0LHIsbyk9PntudWxsPT1lP24odC5lbD1hKHQuY2hpbGRyZW58fCIiKSxyLG8pOnQuZWw9ZS5lbH0sbW91bnRTdGF0aWNOb2RlPShlLHQsbixyKT0+e1tlLmVsLGUuYW5jaG9yXT1mKGUuY2hpbGRyZW4sdCxuLHIsZS5lbCxlLmFuY2hvcil9LHByb2Nlc3NFbGVtZW50PShlLHQsbixyLG8scyxpLGEsbCk9PntpZigic3ZnIj09PXQudHlwZT9pPSJzdmciOiJtYXRoIj09PXQudHlwZSYmKGk9Im1hdGhtbCIpLG51bGw9PWUpbW91bnRFbGVtZW50KHQsbixyLG8scyxpLGEsbCk7ZWxzZXtjb25zdCBuPWUuZWwmJmUuZWwuX2lzVnVlQ0U/ZS5lbDpudWxsO3RyeXtuJiZuLl9iZWdpblBhdGNoKCkscGF0Y2hFbGVtZW50KGUsdCxvLHMsaSxhLGwpfWZpbmFsbHl7biYmbi5fZW5kUGF0Y2goKX19fSxtb3VudEVsZW1lbnQ9KGUsdCxyLGksYSxsLHUscCk9PntsZXQgZCxmO2NvbnN0e3Byb3BzOmcsc2hhcGVGbGFnOm0sdHJhbnNpdGlvbjp5LGRpcnM6dn09ZTtpZihkPWUuZWw9cyhlLnR5cGUsbCxnJiZnLmlzLGcpLDgmbT9jKGQsZS5jaGlsZHJlbik6MTYmbSYmbW91bnRDaGlsZHJlbihlLmNoaWxkcmVuLGQsbnVsbCxpLGEscmVzb2x2ZUNoaWxkcmVuTmFtZXNwYWNlKGUsbCksdSxwKSx2JiZpbnZva2VEaXJlY3RpdmVIb29rKGUsbnVsbCxpLCJjcmVhdGVkIiksc2V0U2NvcGVJZChkLGUsZS5zY29wZUlkLHUsaSksZyl7Zm9yKGNvbnN0IGUgaW4gZykidmFsdWUiPT09ZXx8RihlKXx8byhkLGUsbnVsbCxnW2VdLGwsaSk7InZhbHVlImluIGcmJm8oZCwidmFsdWUiLG51bGwsZy52YWx1ZSxsKSwoZj1nLm9uVm5vZGVCZWZvcmVNb3VudCkmJmludm9rZVZOb2RlSG9vayhmLGksZSl9diYmaW52b2tlRGlyZWN0aXZlSG9vayhlLG51bGwsaSwiYmVmb3JlTW91bnQiKTtjb25zdCBfPW5lZWRUcmFuc2l0aW9uKGEseSk7XyYmeS5iZWZvcmVFbnRlcihkKSxuKGQsdCxyKSwoKGY9ZyYmZy5vblZub2RlTW91bnRlZCl8fF98fHYpJiZvbigoKT0+e3RyeXtmJiZpbnZva2VWTm9kZUhvb2soZixpLGUpLF8mJnkuZW50ZXIoZCksdiYmaW52b2tlRGlyZWN0aXZlSG9vayhlLG51bGwsaSwibW91bnRlZCIpfWZpbmFsbHl7fX0sYSl9LHNldFNjb3BlSWQ9KGUsdCxuLHIsbyk9PntpZihuJiZkKGUsbikscilmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylkKGUsclt0XSk7aWYobyl7bGV0IG49by5zdWJUcmVlO2lmKHQ9PT1ufHxpc1N1c3BlbnNlKG4udHlwZSkmJihuLnNzQ29udGVudD09PXR8fG4uc3NGYWxsYmFjaz09PXQpKXtjb25zdCB0PW8udm5vZGU7c2V0U2NvcGVJZChlLHQsdC5zY29wZUlkLHQuc2xvdFNjb3BlSWRzLG8ucGFyZW50KX19fSxtb3VudENoaWxkcmVuPShlLHQsbixyLG8scyxpLGEsbD0wKT0+e2ZvcihsZXQgYz1sO2M8ZS5sZW5ndGg7YysrKXtjb25zdCBsPWVbY109YT9jbG9uZUlmTW91bnRlZChlW2NdKTpub3JtYWxpemVWTm9kZSQxKGVbY10pO3BhdGNoKG51bGwsbCx0LG4scixvLHMsaSxhKX19LHBhdGNoRWxlbWVudD0oZSx0LG4scixzLGksYSk9Pntjb25zdCBsPXQuZWw9ZS5lbDtsZXR7cGF0Y2hGbGFnOnUsZHluYW1pY0NoaWxkcmVuOnAsZGlyczpkfT10O3V8PTE2JmUucGF0Y2hGbGFnO2NvbnN0IGY9ZS5wcm9wc3x8bSxnPXQucHJvcHN8fG07bGV0IHk7aWYobiYmdG9nZ2xlUmVjdXJzZShuLCExKSwoeT1nLm9uVm5vZGVCZWZvcmVVcGRhdGUpJiZpbnZva2VWTm9kZUhvb2soeSxuLHQsZSksZCYmaW52b2tlRGlyZWN0aXZlSG9vayh0LGUsbiwiYmVmb3JlVXBkYXRlIiksbiYmdG9nZ2xlUmVjdXJzZShuLCEwKSwoZi5pbm5lckhUTUwmJm51bGw9PWcuaW5uZXJIVE1MfHxmLnRleHRDb250ZW50JiZudWxsPT1nLnRleHRDb250ZW50KSYmYyhsLCIiKSxwP3BhdGNoQmxvY2tDaGlsZHJlbihlLmR5bmFtaWNDaGlsZHJlbixwLGwsbixyLHJlc29sdmVDaGlsZHJlbk5hbWVzcGFjZSh0LHMpLGkpOmF8fHBhdGNoQ2hpbGRyZW4oZSx0LGwsbnVsbCxuLHIscmVzb2x2ZUNoaWxkcmVuTmFtZXNwYWNlKHQscyksaSwhMSksdT4wKXtpZigxNiZ1KXBhdGNoUHJvcHMobCxmLGcsbixzKTtlbHNlIGlmKDImdSYmZi5jbGFzcyE9PWcuY2xhc3MmJm8obCwiY2xhc3MiLG51bGwsZy5jbGFzcyxzKSw0JnUmJm8obCwic3R5bGUiLGYuc3R5bGUsZy5zdHlsZSxzKSw4JnUpe2NvbnN0IGU9dC5keW5hbWljUHJvcHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IHI9ZVt0XSxpPWZbcl0sYT1nW3JdO2E9PT1pJiYidmFsdWUiIT09cnx8byhsLHIsaSxhLHMsbil9fTEmdSYmZS5jaGlsZHJlbiE9PXQuY2hpbGRyZW4mJmMobCx0LmNoaWxkcmVuKX1lbHNlIGF8fG51bGwhPXB8fHBhdGNoUHJvcHMobCxmLGcsbixzKTsoKHk9Zy5vblZub2RlVXBkYXRlZCl8fGQpJiZvbigoKT0+e3kmJmludm9rZVZOb2RlSG9vayh5LG4sdCxlKSxkJiZpbnZva2VEaXJlY3RpdmVIb29rKHQsZSxuLCJ1cGRhdGVkIil9LHIpfSxwYXRjaEJsb2NrQ2hpbGRyZW49KGUsdCxuLHIsbyxzLGkpPT57Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspe2NvbnN0IGw9ZVthXSxjPXRbYV0scD1sLmVsJiYobC50eXBlPT09bG58fCFpc1NhbWVWTm9kZVR5cGUobCxjKXx8MTk4Jmwuc2hhcGVGbGFnKT91KGwuZWwpOm47cGF0Y2gobCxjLHAsbnVsbCxyLG8scyxpLCEwKX19LHBhdGNoUHJvcHM9KGUsdCxuLHIscyk9PntpZih0IT09bil7aWYodCE9PW0pZm9yKGNvbnN0IGkgaW4gdClGKGkpfHxpIGluIG58fG8oZSxpLHRbaV0sbnVsbCxzLHIpO2Zvcihjb25zdCBpIGluIG4pe2lmKEYoaSkpY29udGludWU7Y29uc3QgYT1uW2ldLGw9dFtpXTthIT09bCYmInZhbHVlIiE9PWkmJm8oZSxpLGwsYSxzLHIpfSJ2YWx1ZSJpbiBuJiZvKGUsInZhbHVlIix0LnZhbHVlLG4udmFsdWUscyl9fSxwcm9jZXNzRnJhZ21lbnQ9KGUsdCxyLG8scyxhLGwsYyx1KT0+e2NvbnN0IHA9dC5lbD1lP2UuZWw6aSgiIiksZD10LmFuY2hvcj1lP2UuYW5jaG9yOmkoIiIpO2xldHtwYXRjaEZsYWc6ZixkeW5hbWljQ2hpbGRyZW46ZyxzbG90U2NvcGVJZHM6bX09dDttJiYoYz1jP2MuY29uY2F0KG0pOm0pLG51bGw9PWU/KG4ocCxyLG8pLG4oZCxyLG8pLG1vdW50Q2hpbGRyZW4odC5jaGlsZHJlbnx8W10scixkLHMsYSxsLGMsdSkpOmY+MCYmNjQmZiYmZyYmZS5keW5hbWljQ2hpbGRyZW4mJmUuZHluYW1pY0NoaWxkcmVuLmxlbmd0aD09PWcubGVuZ3RoPyhwYXRjaEJsb2NrQ2hpbGRyZW4oZS5keW5hbWljQ2hpbGRyZW4sZyxyLHMsYSxsLGMpLChudWxsIT10LmtleXx8cyYmdD09PXMuc3ViVHJlZSkmJnRyYXZlcnNlU3RhdGljQ2hpbGRyZW4oZSx0LCEwKSk6cGF0Y2hDaGlsZHJlbihlLHQscixkLHMsYSxsLGMsdSl9LHByb2Nlc3NDb21wb25lbnQ9KGUsdCxuLHIsbyxzLGksYSxsKT0+e3Quc2xvdFNjb3BlSWRzPWEsbnVsbD09ZT81MTImdC5zaGFwZUZsYWc/by5jdHguYWN0aXZhdGUodCxuLHIsaSxsKTptb3VudENvbXBvbmVudCh0LG4scixvLHMsaSxsKTp1cGRhdGVDb21wb25lbnQoZSx0LGwpfSxtb3VudENvbXBvbmVudD0oZSx0LG4scixvLHMsaSk9Pntjb25zdCBhPWUuY29tcG9uZW50PWNyZWF0ZUNvbXBvbmVudEluc3RhbmNlJDEoZSxyLG8pO2lmKGlzS2VlcEFsaXZlKGUpJiYoYS5jdHgucmVuZGVyZXI9eSksc2V0dXBDb21wb25lbnQkMShhLCExLGkpLGEuYXN5bmNEZXApe2lmKG8mJm8ucmVnaXN0ZXJEZXAoYSxzZXR1cFJlbmRlckVmZmVjdCxpKSwhZS5lbCl7Y29uc3Qgcj1hLnN1YlRyZWU9Y3JlYXRlVk5vZGUodW4pO3Byb2Nlc3NDb21tZW50Tm9kZShudWxsLHIsdCxuKSxlLnBsYWNlaG9sZGVyPXIuZWx9fWVsc2Ugc2V0dXBSZW5kZXJFZmZlY3QoYSxlLHQsbixvLHMsaSl9LHVwZGF0ZUNvbXBvbmVudD0oZSx0LG4pPT57Y29uc3Qgcj10LmNvbXBvbmVudD1lLmNvbXBvbmVudDtpZihmdW5jdGlvbihlLHQsbil7Y29uc3R7cHJvcHM6cixjaGlsZHJlbjpvLGNvbXBvbmVudDpzfT1lLHtwcm9wczppLGNoaWxkcmVuOmEscGF0Y2hGbGFnOmx9PXQsYz1zLmVtaXRzT3B0aW9ucztpZih0LmRpcnN8fHQudHJhbnNpdGlvbilyZXR1cm4hMDtpZighKG4mJmw+PTApKXJldHVybiEoIW8mJiFhfHxhJiZhLiRzdGFibGUpfHxyIT09aSYmKHI/IWl8fGhhc1Byb3BzQ2hhbmdlZChyLGksYyk6ISFpKTtpZigxMDI0JmwpcmV0dXJuITA7aWYoMTYmbClyZXR1cm4gcj9oYXNQcm9wc0NoYW5nZWQocixpLGMpOiEhaTtpZig4Jmwpe2NvbnN0IGU9dC5keW5hbWljUHJvcHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtpZihoYXNQcm9wVmFsdWVDaGFuZ2VkKGkscixuKSYmIWlzRW1pdExpc3RlbmVyKGMsbikpcmV0dXJuITB9fXJldHVybiExfShlLHQsbikpe2lmKHIuYXN5bmNEZXAmJiFyLmFzeW5jUmVzb2x2ZWQpcmV0dXJuIHZvaWQgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyKHIsdCxuKTtyLm5leHQ9dCxyLnVwZGF0ZSgpfWVsc2UgdC5lbD1lLmVsLHIudm5vZGU9dH0sc2V0dXBSZW5kZXJFZmZlY3Q9KGUsdCxuLHIsbyxzLGkpPT57ZS5zY29wZS5vbigpO2NvbnN0IGE9ZS5lZmZlY3Q9bmV3IFJlYWN0aXZlRWZmZWN0KCgpPT57aWYoZS5pc01vdW50ZWQpe2xldHtuZXh0OnQsYnU6bix1OnIscGFyZW50OmEsdm5vZGU6Y309ZTt7Y29uc3Qgbj1sb2NhdGVOb25IeWRyYXRlZEFzeW5jUm9vdChlKTtpZihuKXJldHVybiB0JiYodC5lbD1jLmVsLHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcihlLHQsaSkpLHZvaWQgbi5hc3luY0RlcC50aGVuKCgpPT57b24oKCk9PntlLmlzVW5tb3VudGVkfHxsKCl9LG8pfSl9bGV0IHAsZD10O3RvZ2dsZVJlY3Vyc2UoZSwhMSksdD8odC5lbD1jLmVsLHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcihlLHQsaSkpOnQ9YyxuJiZJKG4pLChwPXQucHJvcHMmJnQucHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkmJmludm9rZVZOb2RlSG9vayhwLGEsdCxjKSx0b2dnbGVSZWN1cnNlKGUsITApO2NvbnN0IGY9cmVuZGVyQ29tcG9uZW50Um9vdCQxKGUpLGc9ZS5zdWJUcmVlO2Uuc3ViVHJlZT1mLHBhdGNoKGcsZix1KGcuZWwpLGdldE5leHRIb3N0Tm9kZShnKSxlLG8scyksdC5lbD1mLmVsLG51bGw9PT1kJiZ1cGRhdGVIT0NIb3N0RWwoZSxmLmVsKSxyJiZvbihyLG8pLChwPXQucHJvcHMmJnQucHJvcHMub25Wbm9kZVVwZGF0ZWQpJiZvbigoKT0+aW52b2tlVk5vZGVIb29rKHAsYSx0LGMpLG8pfWVsc2V7bGV0IGk7Y29uc3R7ZWw6YSxwcm9wczpsfT10LHtibTpjLG06dSxwYXJlbnQ6cCxyb290OmQsdHlwZTpmfT1lLGc9aXNBc3luY1dyYXBwZXIodCk7aWYodG9nZ2xlUmVjdXJzZShlLCExKSxjJiZJKGMpLCFnJiYoaT1sJiZsLm9uVm5vZGVCZWZvcmVNb3VudCkmJmludm9rZVZOb2RlSG9vayhpLHAsdCksdG9nZ2xlUmVjdXJzZShlLCEwKSxhJiZiKXtjb25zdCBoeWRyYXRlU3ViVHJlZT0oKT0+e2Uuc3ViVHJlZT1yZW5kZXJDb21wb25lbnRSb290JDEoZSksYihhLGUuc3ViVHJlZSxlLG8sbnVsbCl9O2cmJmYuX19hc3luY0h5ZHJhdGU/Zi5fX2FzeW5jSHlkcmF0ZShhLGUsaHlkcmF0ZVN1YlRyZWUpOmh5ZHJhdGVTdWJUcmVlKCl9ZWxzZXtkLmNlJiZkLmNlLl9oYXNTaGFkb3dSb290KCkmJmQuY2UuX2luamVjdENoaWxkU3R5bGUoZixlLnBhcmVudD9lLnBhcmVudC50eXBlOnZvaWQgMCk7Y29uc3QgaT1lLnN1YlRyZWU9cmVuZGVyQ29tcG9uZW50Um9vdCQxKGUpO3BhdGNoKG51bGwsaSxuLHIsZSxvLHMpLHQuZWw9aS5lbH1pZih1JiZvbih1LG8pLCFnJiYoaT1sJiZsLm9uVm5vZGVNb3VudGVkKSl7Y29uc3QgZT10O29uKCgpPT5pbnZva2VWTm9kZUhvb2soaSxwLGUpLG8pfSgyNTYmdC5zaGFwZUZsYWd8fHAmJmlzQXN5bmNXcmFwcGVyKHAudm5vZGUpJiYyNTYmcC52bm9kZS5zaGFwZUZsYWcpJiZlLmEmJm9uKGUuYSxvKSxlLmlzTW91bnRlZD0hMCx0PW49cj1udWxsfX0pO2Uuc2NvcGUub2ZmKCk7Y29uc3QgbD1lLnVwZGF0ZT1hLnJ1bi5iaW5kKGEpLGM9ZS5qb2I9YS5ydW5JZkRpcnR5LmJpbmQoYSk7Yy5pPWUsYy5pZD1lLnVpZCxhLnNjaGVkdWxlcj0oKT0+cXVldWVKb2IoYyksdG9nZ2xlUmVjdXJzZShlLCEwKSxsKCl9LHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcj0oZSx0LG4pPT57dC5jb21wb25lbnQ9ZTtjb25zdCByPWUudm5vZGUucHJvcHM7ZS52bm9kZT10LGUubmV4dD1udWxsLGZ1bmN0aW9uKGUsdCxuLHIpe2NvbnN0e3Byb3BzOm8sYXR0cnM6cyx2bm9kZTp7cGF0Y2hGbGFnOml9fT1lLGE9dG9SYXcobyksW2xdPWUucHJvcHNPcHRpb25zO2xldCBjPSExO2lmKCEocnx8aT4wKXx8MTYmaSl7bGV0IHI7c2V0RnVsbFByb3BzKGUsdCxvLHMpJiYoYz0hMCk7Zm9yKGNvbnN0IHMgaW4gYSl0JiYodih0LHMpfHwocj16KHMpKSE9PXMmJnYodCxyKSl8fChsPyFufHx2b2lkIDA9PT1uW3NdJiZ2b2lkIDA9PT1uW3JdfHwob1tzXT1yZXNvbHZlUHJvcFZhbHVlKGwsYSxzLHZvaWQgMCxlLCEwKSk6ZGVsZXRlIG9bc10pO2lmKHMhPT1hKWZvcihjb25zdCBlIGluIHMpdCYmdih0LGUpfHwoZGVsZXRlIHNbZV0sYz0hMCl9ZWxzZSBpZig4Jmkpe2NvbnN0IG49ZS52bm9kZS5keW5hbWljUHJvcHM7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2xldCBpPW5bcl07aWYoaXNFbWl0TGlzdGVuZXIoZS5lbWl0c09wdGlvbnMsaSkpY29udGludWU7Y29uc3QgdT10W2ldO2lmKGwpaWYodihzLGkpKXUhPT1zW2ldJiYoc1tpXT11LGM9ITApO2Vsc2V7Y29uc3QgdD1CKGkpO29bdF09cmVzb2x2ZVByb3BWYWx1ZShsLGEsdCx1LGUsITEpfWVsc2UgdSE9PXNbaV0mJihzW2ldPXUsYz0hMCl9fWMmJnRyaWdnZXIoZS5hdHRycywic2V0IiwiIil9KGUsdC5wcm9wcyxyLG4pLCgoZSx0LG4pPT57Y29uc3R7dm5vZGU6cixzbG90czpvfT1lO2xldCBzPSEwLGk9bTtpZigzMiZyLnNoYXBlRmxhZyl7Y29uc3QgZT10Ll87ZT9uJiYxPT09ZT9zPSExOmFzc2lnblNsb3RzKG8sdCxuKToocz0hdC4kc3RhYmxlLG5vcm1hbGl6ZU9iamVjdFNsb3RzKHQsbykpLGk9dH1lbHNlIHQmJihub3JtYWxpemVWTm9kZVNsb3RzKGUsdCksaT17ZGVmYXVsdDoxfSk7aWYocylmb3IoY29uc3QgZSBpbiBvKWlzSW50ZXJuYWxLZXkoZSl8fG51bGwhPWlbZV18fGRlbGV0ZSBvW2VdfSkoZSx0LmNoaWxkcmVuLG4pLHBhdXNlVHJhY2tpbmcoKSxmbHVzaFByZUZsdXNoQ2JzKGUpLHJlc2V0VHJhY2tpbmcoKX0scGF0Y2hDaGlsZHJlbj0oZSx0LG4scixvLHMsaSxhLGw9ITEpPT57Y29uc3QgdT1lJiZlLmNoaWxkcmVuLHA9ZT9lLnNoYXBlRmxhZzowLGQ9dC5jaGlsZHJlbix7cGF0Y2hGbGFnOmYsc2hhcGVGbGFnOmd9PXQ7aWYoZj4wKXtpZigxMjgmZilyZXR1cm4gdm9pZCBwYXRjaEtleWVkQ2hpbGRyZW4odSxkLG4scixvLHMsaSxhLGwpO2lmKDI1NiZmKXJldHVybiB2b2lkIHBhdGNoVW5rZXllZENoaWxkcmVuKHUsZCxuLHIsbyxzLGksYSxsKX04Jmc/KDE2JnAmJnVubW91bnRDaGlsZHJlbih1LG8scyksZCE9PXUmJmMobixkKSk6MTYmcD8xNiZnP3BhdGNoS2V5ZWRDaGlsZHJlbih1LGQsbixyLG8scyxpLGEsbCk6dW5tb3VudENoaWxkcmVuKHUsbyxzLCEwKTooOCZwJiZjKG4sIiIpLDE2JmcmJm1vdW50Q2hpbGRyZW4oZCxuLHIsbyxzLGksYSxsKSl9LHBhdGNoVW5rZXllZENoaWxkcmVuPShlLHQsbixyLG8scyxpLGEsbCk9Pnt0PXR8fEw7Y29uc3QgYz0oZT1lfHxMKS5sZW5ndGgsdT10Lmxlbmd0aCxwPU1hdGgubWluKGMsdSk7bGV0IGQ7Zm9yKGQ9MDtkPHA7ZCsrKXtjb25zdCByPXRbZF09bD9jbG9uZUlmTW91bnRlZCh0W2RdKTpub3JtYWxpemVWTm9kZSQxKHRbZF0pO3BhdGNoKGVbZF0scixuLG51bGwsbyxzLGksYSxsKX1jPnU/dW5tb3VudENoaWxkcmVuKGUsbyxzLCEwLCExLHApOm1vdW50Q2hpbGRyZW4odCxuLHIsbyxzLGksYSxsLHApfSxwYXRjaEtleWVkQ2hpbGRyZW49KGUsdCxuLHIsbyxzLGksYSxsKT0+e2xldCBjPTA7Y29uc3QgdT10Lmxlbmd0aDtsZXQgcD1lLmxlbmd0aC0xLGQ9dS0xO2Zvcig7Yzw9cCYmYzw9ZDspe2NvbnN0IHI9ZVtjXSx1PXRbY109bD9jbG9uZUlmTW91bnRlZCh0W2NdKTpub3JtYWxpemVWTm9kZSQxKHRbY10pO2lmKCFpc1NhbWVWTm9kZVR5cGUocix1KSlicmVhaztwYXRjaChyLHUsbixudWxsLG8scyxpLGEsbCksYysrfWZvcig7Yzw9cCYmYzw9ZDspe2NvbnN0IHI9ZVtwXSxjPXRbZF09bD9jbG9uZUlmTW91bnRlZCh0W2RdKTpub3JtYWxpemVWTm9kZSQxKHRbZF0pO2lmKCFpc1NhbWVWTm9kZVR5cGUocixjKSlicmVhaztwYXRjaChyLGMsbixudWxsLG8scyxpLGEsbCkscC0tLGQtLX1pZihjPnApe2lmKGM8PWQpe2NvbnN0IGU9ZCsxLHA9ZTx1P3RbZV0uZWw6cjtmb3IoO2M8PWQ7KXBhdGNoKG51bGwsdFtjXT1sP2Nsb25lSWZNb3VudGVkKHRbY10pOm5vcm1hbGl6ZVZOb2RlJDEodFtjXSksbixwLG8scyxpLGEsbCksYysrfX1lbHNlIGlmKGM+ZClmb3IoO2M8PXA7KXVubW91bnQoZVtjXSxvLHMsITApLGMrKztlbHNle2NvbnN0IGY9YyxnPWMsbT1uZXcgTWFwO2ZvcihjPWc7Yzw9ZDtjKyspe2NvbnN0IGU9dFtjXT1sP2Nsb25lSWZNb3VudGVkKHRbY10pOm5vcm1hbGl6ZVZOb2RlJDEodFtjXSk7bnVsbCE9ZS5rZXkmJm0uc2V0KGUua2V5LGMpfWxldCB5LHY9MDtjb25zdCBfPWQtZysxO2xldCBiPSExLGs9MDtjb25zdCBDPW5ldyBBcnJheShfKTtmb3IoYz0wO2M8XztjKyspQ1tjXT0wO2ZvcihjPWY7Yzw9cDtjKyspe2NvbnN0IHI9ZVtjXTtpZih2Pj1fKXt1bm1vdW50KHIsbyxzLCEwKTtjb250aW51ZX1sZXQgdTtpZihudWxsIT1yLmtleSl1PW0uZ2V0KHIua2V5KTtlbHNlIGZvcih5PWc7eTw9ZDt5KyspaWYoMD09PUNbeS1nXSYmaXNTYW1lVk5vZGVUeXBlKHIsdFt5XSkpe3U9eTticmVha312b2lkIDA9PT11P3VubW91bnQocixvLHMsITApOihDW3UtZ109YysxLHU+PWs/az11OmI9ITAscGF0Y2gocix0W3VdLG4sbnVsbCxvLHMsaSxhLGwpLHYrKyl9Y29uc3QgUz1iP2Z1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5zbGljZSgpLG49WzBdO2xldCByLG8scyxpLGE7Y29uc3QgbD1lLmxlbmd0aDtmb3Iocj0wO3I8bDtyKyspe2NvbnN0IGw9ZVtyXTtpZigwIT09bCl7aWYobz1uW24ubGVuZ3RoLTFdLGVbb108bCl7dFtyXT1vLG4ucHVzaChyKTtjb250aW51ZX1mb3Iocz0wLGk9bi5sZW5ndGgtMTtzPGk7KWE9cytpPj4xLGVbblthXV08bD9zPWErMTppPWE7bDxlW25bc11dJiYocz4wJiYodFtyXT1uW3MtMV0pLG5bc109cil9fXM9bi5sZW5ndGgsaT1uW3MtMV07Zm9yKDtzLS0gPjA7KW5bc109aSxpPXRbaV07cmV0dXJuIG59KEMpOkw7Zm9yKHk9Uy5sZW5ndGgtMSxjPV8tMTtjPj0wO2MtLSl7Y29uc3QgZT1nK2MscD10W2VdLGQ9dFtlKzFdLGY9ZSsxPHU/ZC5lbHx8cmVzb2x2ZUFzeW5jQ29tcG9uZW50UGxhY2Vob2xkZXIoZCk6cjswPT09Q1tjXT9wYXRjaChudWxsLHAsbixmLG8scyxpLGEsbCk6YiYmKHk8MHx8YyE9PVNbeV0/bW92ZShwLG4sZiwyKTp5LS0pfX19LG1vdmU9KGUsdCxvLHMsaT1udWxsKT0+e2NvbnN0e2VsOmEsdHlwZTpsLHRyYW5zaXRpb246YyxjaGlsZHJlbjp1LHNoYXBlRmxhZzpkfT1lO2lmKDYmZClyZXR1cm4gdm9pZCBtb3ZlKGUuY29tcG9uZW50LnN1YlRyZWUsdCxvLHMpO2lmKDEyOCZkKXJldHVybiB2b2lkIGUuc3VzcGVuc2UubW92ZSh0LG8scyk7aWYoNjQmZClyZXR1cm4gdm9pZCBsLm1vdmUoZSx0LG8seSk7aWYobD09PWxuKXtuKGEsdCxvKTtmb3IobGV0IGU9MDtlPHUubGVuZ3RoO2UrKyltb3ZlKHVbZV0sdCxvLHMpO3JldHVybiB2b2lkIG4oZS5hbmNob3IsdCxvKX1pZihsPT09cG4pcmV0dXJuIHZvaWQoKHtlbDplLGFuY2hvcjp0fSxyLG8pPT57bGV0IHM7Zm9yKDtlJiZlIT09dDspcz1wKGUpLG4oZSxyLG8pLGU9cztuKHQscixvKX0pKGUsdCxvKTtpZigyIT09cyYmMSZkJiZjKWlmKDA9PT1zKWMuYmVmb3JlRW50ZXIoYSksbihhLHQsbyksb24oKCk9PmMuZW50ZXIoYSksaSk7ZWxzZXtjb25zdHtsZWF2ZTpzLGRlbGF5TGVhdmU6aSxhZnRlckxlYXZlOmx9PWMscmVtb3ZlMj0oKT0+e2UuY3R4LmlzVW5tb3VudGVkP3IoYSk6bihhLHQsbyl9LHBlcmZvcm1MZWF2ZT0oKT0+e2EuX2lzTGVhdmluZyYmYVtUdF0oITApLHMoYSwoKT0+e3JlbW92ZTIoKSxsJiZsKCl9KX07aT9pKGEscmVtb3ZlMixwZXJmb3JtTGVhdmUpOnBlcmZvcm1MZWF2ZSgpfWVsc2UgbihhLHQsbyl9LHVubW91bnQ9KGUsdCxuLHI9ITEsbz0hMSk9Pntjb25zdHt0eXBlOnMscHJvcHM6aSxyZWY6YSxjaGlsZHJlbjpsLGR5bmFtaWNDaGlsZHJlbjpjLHNoYXBlRmxhZzp1LHBhdGNoRmxhZzpwLGRpcnM6ZCxjYWNoZUluZGV4OmYsbWVtbzpnfT1lO2lmKC0yPT09cCYmKG89ITEpLG51bGwhPWEmJihwYXVzZVRyYWNraW5nKCksc2V0UmVmKGEsbnVsbCxuLGUsITApLHJlc2V0VHJhY2tpbmcoKSksbnVsbCE9ZiYmKHQucmVuZGVyQ2FjaGVbZl09dm9pZCAwKSwyNTYmdSlyZXR1cm4gdm9pZCB0LmN0eC5kZWFjdGl2YXRlKGUpO2NvbnN0IG09MSZ1JiZkLHY9IWlzQXN5bmNXcmFwcGVyKGUpO2xldCBfO2lmKHYmJihfPWkmJmkub25Wbm9kZUJlZm9yZVVubW91bnQpJiZpbnZva2VWTm9kZUhvb2soXyx0LGUpLDYmdSl1bm1vdW50Q29tcG9uZW50KGUuY29tcG9uZW50LG4scik7ZWxzZXtpZigxMjgmdSlyZXR1cm4gdm9pZCBlLnN1c3BlbnNlLnVubW91bnQobixyKTttJiZpbnZva2VEaXJlY3RpdmVIb29rKGUsbnVsbCx0LCJiZWZvcmVVbm1vdW50IiksNjQmdT9lLnR5cGUucmVtb3ZlKGUsdCxuLHkscik6YyYmIWMuaGFzT25jZSYmKHMhPT1sbnx8cD4wJiY2NCZwKT91bm1vdW50Q2hpbGRyZW4oYyx0LG4sITEsITApOihzPT09bG4mJjM4NCZwfHwhbyYmMTYmdSkmJnVubW91bnRDaGlsZHJlbihsLHQsbiksciYmcmVtb3ZlKGUpfWNvbnN0IGI9bnVsbCE9ZyYmbnVsbD09ZjsodiYmKF89aSYmaS5vblZub2RlVW5tb3VudGVkKXx8bXx8YikmJm9uKCgpPT57XyYmaW52b2tlVk5vZGVIb29rKF8sdCxlKSxtJiZpbnZva2VEaXJlY3RpdmVIb29rKGUsbnVsbCx0LCJ1bm1vdW50ZWQiKSxiJiYoZS5lbD1udWxsKX0sbil9LHJlbW92ZT1lPT57Y29uc3R7dHlwZTp0LGVsOm4sYW5jaG9yOm8sdHJhbnNpdGlvbjpzfT1lO2lmKHQ9PT1sbilyZXR1cm4gdm9pZCByZW1vdmVGcmFnbWVudChuLG8pO2lmKHQ9PT1wbilyZXR1cm4gdm9pZCgoe2VsOmUsYW5jaG9yOnR9KT0+e2xldCBuO2Zvcig7ZSYmZSE9PXQ7KW49cChlKSxyKGUpLGU9bjtyKHQpfSkoZSk7Y29uc3QgcGVyZm9ybVJlbW92ZT0oKT0+e3IobikscyYmIXMucGVyc2lzdGVkJiZzLmFmdGVyTGVhdmUmJnMuYWZ0ZXJMZWF2ZSgpfTtpZigxJmUuc2hhcGVGbGFnJiZzJiYhcy5wZXJzaXN0ZWQpe2NvbnN0e2xlYXZlOnQsZGVsYXlMZWF2ZTpyfT1zLHBlcmZvcm1MZWF2ZT0oKT0+dChuLHBlcmZvcm1SZW1vdmUpO3I/cihlLmVsLHBlcmZvcm1SZW1vdmUscGVyZm9ybUxlYXZlKTpwZXJmb3JtTGVhdmUoKX1lbHNlIHBlcmZvcm1SZW1vdmUoKX0scmVtb3ZlRnJhZ21lbnQ9KGUsdCk9PntsZXQgbjtmb3IoO2UhPT10OyluPXAoZSkscihlKSxlPW47cih0KX0sdW5tb3VudENvbXBvbmVudD0oZSx0LG4pPT57Y29uc3R7YnVtOnIsc2NvcGU6byxqb2I6cyxzdWJUcmVlOmksdW06YSxtOmwsYTpjfT1lO2ludmFsaWRhdGVNb3VudChsKSxpbnZhbGlkYXRlTW91bnQoYyksciYmSShyKSxvLnN0b3AoKSxzJiYocy5mbGFnc3w9OCx1bm1vdW50KGksZSx0LG4pKSxhJiZvbihhLHQpLG9uKCgpPT57ZS5pc1VubW91bnRlZD0hMH0sdCl9LHVubW91bnRDaGlsZHJlbj0oZSx0LG4scj0hMSxvPSExLHM9MCk9Pntmb3IobGV0IGk9cztpPGUubGVuZ3RoO2krKyl1bm1vdW50KGVbaV0sdCxuLHIsbyl9LGdldE5leHRIb3N0Tm9kZT1lPT57aWYoNiZlLnNoYXBlRmxhZylyZXR1cm4gZ2V0TmV4dEhvc3ROb2RlKGUuY29tcG9uZW50LnN1YlRyZWUpO2lmKDEyOCZlLnNoYXBlRmxhZylyZXR1cm4gZS5zdXNwZW5zZS5uZXh0KCk7Y29uc3QgdD1wKGUuYW5jaG9yfHxlLmVsKSxuPXQmJnRbU3RdO3JldHVybiBuP3Aobik6dH07bGV0IGc9ITE7Y29uc3QgcmVuZGVyPShlLHQsbik9PntsZXQgcjtudWxsPT1lP3QuX3Zub2RlJiYodW5tb3VudCh0Ll92bm9kZSxudWxsLG51bGwsITApLHI9dC5fdm5vZGUuY29tcG9uZW50KTpwYXRjaCh0Ll92bm9kZXx8bnVsbCxlLHQsbnVsbCxudWxsLG51bGwsbiksdC5fdm5vZGU9ZSxnfHwoZz0hMCxmbHVzaFByZUZsdXNoQ2JzKHIpLGZsdXNoUG9zdEZsdXNoQ2JzKCksZz0hMSl9LHk9e3A6cGF0Y2gsdW06dW5tb3VudCxtOm1vdmUscjpyZW1vdmUsbXQ6bW91bnRDb21wb25lbnQsbWM6bW91bnRDaGlsZHJlbixwYzpwYXRjaENoaWxkcmVuLHBiYzpwYXRjaEJsb2NrQ2hpbGRyZW4sbjpnZXROZXh0SG9zdE5vZGUsbzplfTtsZXQgXyxiO3JldHVybiB0JiYoW18sYl09dCh5KSkse3JlbmRlcjpyZW5kZXIsaHlkcmF0ZTpfLGNyZWF0ZUFwcDpjcmVhdGVBcHBBUEkocmVuZGVyLF8pfX1mdW5jdGlvbiByZXNvbHZlQ2hpbGRyZW5OYW1lc3BhY2Uoe3R5cGU6ZSxwcm9wczp0fSxuKXtyZXR1cm4ic3ZnIj09PW4mJiJmb3JlaWduT2JqZWN0Ij09PWV8fCJtYXRobWwiPT09biYmImFubm90YXRpb24teG1sIj09PWUmJnQmJnQuZW5jb2RpbmcmJnQuZW5jb2RpbmcuaW5jbHVkZXMoImh0bWwiKT92b2lkIDA6bn1mdW5jdGlvbiB0b2dnbGVSZWN1cnNlKHtlZmZlY3Q6ZSxqb2I6dH0sbil7bj8oZS5mbGFnc3w9MzIsdC5mbGFnc3w9NCk6KGUuZmxhZ3MmPS0zMyx0LmZsYWdzJj0tNSl9ZnVuY3Rpb24gbmVlZFRyYW5zaXRpb24oZSx0KXtyZXR1cm4oIWV8fGUmJiFlLnBlbmRpbmdCcmFuY2gpJiZ0JiYhdC5wZXJzaXN0ZWR9ZnVuY3Rpb24gdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihlLHQsbj0hMSl7Y29uc3Qgcj1lLmNoaWxkcmVuLG89dC5jaGlsZHJlbjtpZih5KHIpJiZ5KG8pKWZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXtjb25zdCB0PXJbZV07bGV0IHM9b1tlXTsxJnMuc2hhcGVGbGFnJiYhcy5keW5hbWljQ2hpbGRyZW4mJigocy5wYXRjaEZsYWc8PTB8fDMyPT09cy5wYXRjaEZsYWcpJiYocz1vW2VdPWNsb25lSWZNb3VudGVkKG9bZV0pLHMuZWw9dC5lbCksbnx8LTI9PT1zLnBhdGNoRmxhZ3x8dHJhdmVyc2VTdGF0aWNDaGlsZHJlbih0LHMpKSxzLnR5cGU9PT1jbiYmKC0xPT09cy5wYXRjaEZsYWcmJihzPW9bZV09Y2xvbmVJZk1vdW50ZWQocykpLHMuZWw9dC5lbCkscy50eXBlIT09dW58fHMuZWx8fChzLmVsPXQuZWwpfX1mdW5jdGlvbiBsb2NhdGVOb25IeWRyYXRlZEFzeW5jUm9vdChlKXtjb25zdCB0PWUuc3ViVHJlZS5jb21wb25lbnQ7aWYodClyZXR1cm4gdC5hc3luY0RlcCYmIXQuYXN5bmNSZXNvbHZlZD90OmxvY2F0ZU5vbkh5ZHJhdGVkQXN5bmNSb290KHQpfWZ1bmN0aW9uIGludmFsaWRhdGVNb3VudChlKXtpZihlKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0uZmxhZ3N8PTh9ZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50UGxhY2Vob2xkZXIoZSl7aWYoZS5wbGFjZWhvbGRlcilyZXR1cm4gZS5wbGFjZWhvbGRlcjtjb25zdCB0PWUuY29tcG9uZW50O3JldHVybiB0P3Jlc29sdmVBc3luY0NvbXBvbmVudFBsYWNlaG9sZGVyKHQuc3ViVHJlZSk6bnVsbH1jb25zdCBpc1N1c3BlbnNlPWU9PmUuX19pc1N1c3BlbnNlO2xldCBzbj0wO2NvbnN0IGFuPXtuYW1lOiJTdXNwZW5zZSIsX19pc1N1c3BlbnNlOiEwLHByb2Nlc3MoZSx0LG4scixvLHMsaSxhLGwsYyl7aWYobnVsbD09ZSkhZnVuY3Rpb24oZSx0LG4scixvLHMsaSxhLGwpe2NvbnN0e3A6YyxvOntjcmVhdGVFbGVtZW50OnV9fT1sLHA9dSgiZGl2IiksZD1lLnN1c3BlbnNlPWNyZWF0ZVN1c3BlbnNlQm91bmRhcnkoZSxvLHIsdCxwLG4scyxpLGEsbCk7YyhudWxsLGQucGVuZGluZ0JyYW5jaD1lLnNzQ29udGVudCxwLG51bGwscixkLHMsaSksZC5kZXBzPjA/KHRyaWdnZXJFdmVudChlLCJvblBlbmRpbmciKSx0cmlnZ2VyRXZlbnQoZSwib25GYWxsYmFjayIpLGMobnVsbCxlLnNzRmFsbGJhY2ssdCxuLHIsbnVsbCxzLGkpLHNldEFjdGl2ZUJyYW5jaChkLGUuc3NGYWxsYmFjaykpOmQucmVzb2x2ZSghMSwhMCl9KHQsbixyLG8scyxpLGEsbCxjKTtlbHNle2lmKHMmJnMuZGVwcz4wJiYhZS5zdXNwZW5zZS5pc0luRmFsbGJhY2spcmV0dXJuIHQuc3VzcGVuc2U9ZS5zdXNwZW5zZSx0LnN1c3BlbnNlLnZub2RlPXQsdm9pZCh0LmVsPWUuZWwpOyFmdW5jdGlvbihlLHQsbixyLG8scyxpLGEse3A6bCx1bTpjLG86e2NyZWF0ZUVsZW1lbnQ6dX19KXtjb25zdCBwPXQuc3VzcGVuc2U9ZS5zdXNwZW5zZTtwLnZub2RlPXQsdC5lbD1lLmVsO2NvbnN0IGQ9dC5zc0NvbnRlbnQsZj10LnNzRmFsbGJhY2sse2FjdGl2ZUJyYW5jaDpnLHBlbmRpbmdCcmFuY2g6bSxpc0luRmFsbGJhY2s6eSxpc0h5ZHJhdGluZzp2fT1wO2lmKG0pcC5wZW5kaW5nQnJhbmNoPWQsaXNTYW1lVk5vZGVUeXBlKG0sZCk/KGwobSxkLHAuaGlkZGVuQ29udGFpbmVyLG51bGwsbyxwLHMsaSxhKSxwLmRlcHM8PTA/cC5yZXNvbHZlKCk6eSYmKHZ8fChsKGcsZixuLHIsbyxudWxsLHMsaSxhKSxzZXRBY3RpdmVCcmFuY2gocCxmKSkpKToocC5wZW5kaW5nSWQ9c24rKyx2PyhwLmlzSHlkcmF0aW5nPSExLHAuYWN0aXZlQnJhbmNoPW0pOmMobSxvLHApLHAuZGVwcz0wLHAuZWZmZWN0cy5sZW5ndGg9MCxwLmhpZGRlbkNvbnRhaW5lcj11KCJkaXYiKSx5PyhsKG51bGwsZCxwLmhpZGRlbkNvbnRhaW5lcixudWxsLG8scCxzLGksYSkscC5kZXBzPD0wP3AucmVzb2x2ZSgpOihsKGcsZixuLHIsbyxudWxsLHMsaSxhKSxzZXRBY3RpdmVCcmFuY2gocCxmKSkpOmcmJmlzU2FtZVZOb2RlVHlwZShnLGQpPyhsKGcsZCxuLHIsbyxwLHMsaSxhKSxwLnJlc29sdmUoITApKToobChudWxsLGQscC5oaWRkZW5Db250YWluZXIsbnVsbCxvLHAscyxpLGEpLHAuZGVwczw9MCYmcC5yZXNvbHZlKCkpKTtlbHNlIGlmKGcmJmlzU2FtZVZOb2RlVHlwZShnLGQpKWwoZyxkLG4scixvLHAscyxpLGEpLHNldEFjdGl2ZUJyYW5jaChwLGQpO2Vsc2UgaWYodHJpZ2dlckV2ZW50KHQsIm9uUGVuZGluZyIpLHAucGVuZGluZ0JyYW5jaD1kLDUxMiZkLnNoYXBlRmxhZz9wLnBlbmRpbmdJZD1kLmNvbXBvbmVudC5zdXNwZW5zZUlkOnAucGVuZGluZ0lkPXNuKyssbChudWxsLGQscC5oaWRkZW5Db250YWluZXIsbnVsbCxvLHAscyxpLGEpLHAuZGVwczw9MClwLnJlc29sdmUoKTtlbHNle2NvbnN0e3RpbWVvdXQ6ZSxwZW5kaW5nSWQ6dH09cDtlPjA/c2V0VGltZW91dCgoKT0+e3AucGVuZGluZ0lkPT09dCYmcC5mYWxsYmFjayhmKX0sZSk6MD09PWUmJnAuZmFsbGJhY2soZil9fShlLHQsbixyLG8saSxhLGwsYyl9fSxoeWRyYXRlOmZ1bmN0aW9uKGUsdCxuLHIsbyxzLGksYSxsKXtjb25zdCBjPXQuc3VzcGVuc2U9Y3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh0LHIsbixlLnBhcmVudE5vZGUsZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksbnVsbCxvLHMsaSxhLCEwKSx1PWwoZSxjLnBlbmRpbmdCcmFuY2g9dC5zc0NvbnRlbnQsbixjLHMsaSk7MD09PWMuZGVwcyYmYy5yZXNvbHZlKCExLCEwKTtyZXR1cm4gdX0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2NvbnN0e3NoYXBlRmxhZzp0LGNoaWxkcmVuOm59PWUscj0zMiZ0O2Uuc3NDb250ZW50PW5vcm1hbGl6ZVN1c3BlbnNlU2xvdChyP24uZGVmYXVsdDpuKSxlLnNzRmFsbGJhY2s9cj9ub3JtYWxpemVTdXNwZW5zZVNsb3Qobi5mYWxsYmFjayk6Y3JlYXRlVk5vZGUodW4pfX07ZnVuY3Rpb24gdHJpZ2dlckV2ZW50KGUsdCl7Y29uc3Qgbj1lLnByb3BzJiZlLnByb3BzW3RdO2YobikmJm4oKX1mdW5jdGlvbiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KGUsdCxuLHIsbyxzLGksYSxsLGMsdT0hMSl7Y29uc3R7cDpwLG06ZCx1bTpmLG46ZyxvOntwYXJlbnROb2RlOm0scmVtb3ZlOnl9fT1jO2xldCB2O2NvbnN0IF89ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLnByb3BzJiZlLnByb3BzLnN1c3BlbnNpYmxlO3JldHVybiBudWxsIT10JiYhMSE9PXR9KGUpO18mJnQmJnQucGVuZGluZ0JyYW5jaCYmKHY9dC5wZW5kaW5nSWQsdC5kZXBzKyspO2NvbnN0IGI9ZS5wcm9wcz9KKGUucHJvcHMudGltZW91dCk6dm9pZCAwLGs9cyxDPXt2bm9kZTplLHBhcmVudDp0LHBhcmVudENvbXBvbmVudDpuLG5hbWVzcGFjZTppLGNvbnRhaW5lcjpyLGhpZGRlbkNvbnRhaW5lcjpvLGRlcHM6MCxwZW5kaW5nSWQ6c24rKyx0aW1lb3V0OiJudW1iZXIiPT10eXBlb2YgYj9iOi0xLGFjdGl2ZUJyYW5jaDpudWxsLGlzRmFsbGJhY2tNb3VudFBlbmRpbmc6ITEscGVuZGluZ0JyYW5jaDpudWxsLGlzSW5GYWxsYmFjazohdSxpc0h5ZHJhdGluZzp1LGlzVW5tb3VudGVkOiExLGVmZmVjdHM6W10scmVzb2x2ZShlPSExLG49ITEpe2NvbnN0e3Zub2RlOnIsYWN0aXZlQnJhbmNoOm8scGVuZGluZ0JyYW5jaDppLHBlbmRpbmdJZDphLGVmZmVjdHM6bCxwYXJlbnRDb21wb25lbnQ6Yyxjb250YWluZXI6dSxpc0luRmFsbGJhY2s6cH09QztsZXQgeT0hMTtDLmlzSHlkcmF0aW5nP0MuaXNIeWRyYXRpbmc9ITE6ZXx8KHk9byYmaS50cmFuc2l0aW9uJiYib3V0LWluIj09PWkudHJhbnNpdGlvbi5tb2RlLHkmJihvLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZT0oKT0+e2E9PT1DLnBlbmRpbmdJZCYmKGQoaSx1LHM9PT1rP2cobyk6cywwKSxxdWV1ZVBvc3RGbHVzaENiKGwpLHAmJnIuc3NGYWxsYmFjayYmKHIuc3NGYWxsYmFjay5lbD1udWxsKSl9KSxvJiYhQy5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nJiYobShvLmVsKT09PXUmJihzPWcobykpLGYobyxjLEMsITApLCF5JiZwJiZyLnNzRmFsbGJhY2smJm9uKCgpPT5yLnNzRmFsbGJhY2suZWw9bnVsbCxDKSkseXx8ZChpLHUscywwKSksQy5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nPSExLHNldEFjdGl2ZUJyYW5jaChDLGkpLEMucGVuZGluZ0JyYW5jaD1udWxsLEMuaXNJbkZhbGxiYWNrPSExO2xldCBiPUMucGFyZW50LFM9ITE7Zm9yKDtiOyl7aWYoYi5wZW5kaW5nQnJhbmNoKXtiLmVmZmVjdHMucHVzaCguLi5sKSxTPSEwO2JyZWFrfWI9Yi5wYXJlbnR9U3x8eXx8cXVldWVQb3N0Rmx1c2hDYihsKSxDLmVmZmVjdHM9W10sXyYmdCYmdC5wZW5kaW5nQnJhbmNoJiZ2PT09dC5wZW5kaW5nSWQmJih0LmRlcHMtLSwwIT09dC5kZXBzfHxufHx0LnJlc29sdmUoKSksdHJpZ2dlckV2ZW50KHIsIm9uUmVzb2x2ZSIpfSxmYWxsYmFjayhlKXtpZighQy5wZW5kaW5nQnJhbmNoKXJldHVybjtjb25zdHt2bm9kZTp0LGFjdGl2ZUJyYW5jaDpuLHBhcmVudENvbXBvbmVudDpyLGNvbnRhaW5lcjpvLG5hbWVzcGFjZTpzfT1DO3RyaWdnZXJFdmVudCh0LCJvbkZhbGxiYWNrIik7Y29uc3QgaT1nKG4pLG1vdW50RmFsbGJhY2s9KCk9PntDLmlzRmFsbGJhY2tNb3VudFBlbmRpbmc9ITEsQy5pc0luRmFsbGJhY2smJihwKG51bGwsZSxvLGkscixudWxsLHMsYSxsKSxzZXRBY3RpdmVCcmFuY2goQyxlKSl9LGM9ZS50cmFuc2l0aW9uJiYib3V0LWluIj09PWUudHJhbnNpdGlvbi5tb2RlO2MmJihDLmlzRmFsbGJhY2tNb3VudFBlbmRpbmc9ITAsbi50cmFuc2l0aW9uLmFmdGVyTGVhdmU9bW91bnRGYWxsYmFjayksQy5pc0luRmFsbGJhY2s9ITAsZihuLHIsbnVsbCwhMCksY3x8bW91bnRGYWxsYmFjaygpfSxtb3ZlKGUsdCxuKXtDLmFjdGl2ZUJyYW5jaCYmZChDLmFjdGl2ZUJyYW5jaCxlLHQsbiksQy5jb250YWluZXI9ZX0sbmV4dDooKT0+Qy5hY3RpdmVCcmFuY2gmJmcoQy5hY3RpdmVCcmFuY2gpLHJlZ2lzdGVyRGVwKGUsdCxuKXtjb25zdCByPSEhQy5wZW5kaW5nQnJhbmNoO3ImJkMuZGVwcysrO2NvbnN0IG89ZS52bm9kZS5lbDtlLmFzeW5jRGVwLmNhdGNoKHQ9PntoYW5kbGVFcnJvcih0LGUsMCl9KS50aGVuKHM9PntpZihlLmlzVW5tb3VudGVkfHxDLmlzVW5tb3VudGVkfHxDLnBlbmRpbmdJZCE9PWUuc3VzcGVuc2VJZClyZXR1cm47dW5zZXRDdXJyZW50SW5zdGFuY2UoKSxlLmFzeW5jUmVzb2x2ZWQ9ITA7Y29uc3R7dm5vZGU6YX09ZTtoYW5kbGVTZXR1cFJlc3VsdChlLHMsITEpLG8mJihhLmVsPW8pO2NvbnN0IGw9IW8mJmUuc3ViVHJlZS5lbDt0KGUsYSxtKG98fGUuc3ViVHJlZS5lbCksbz9udWxsOmcoZS5zdWJUcmVlKSxDLGksbiksbCYmKGEucGxhY2Vob2xkZXI9bnVsbCx5KGwpKSx1cGRhdGVIT0NIb3N0RWwoZSxhLmVsKSxyJiYwPT09LS1DLmRlcHMmJkMucmVzb2x2ZSgpfSl9LHVubW91bnQoZSx0KXtDLmlzVW5tb3VudGVkPSEwLEMuYWN0aXZlQnJhbmNoJiZmKEMuYWN0aXZlQnJhbmNoLG4sZSx0KSxDLnBlbmRpbmdCcmFuY2gmJmYoQy5wZW5kaW5nQnJhbmNoLG4sZSx0KX19O3JldHVybiBDfWZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlU2xvdChlKXtsZXQgdDtpZihmKGUpKXtjb25zdCBuPWhuJiZlLl9jO24mJihlLl9kPSExLG9wZW5CbG9jaygpKSxlPWUoKSxuJiYoZS5fZD0hMCx0PWZuLGNsb3NlQmxvY2soKSl9aWYoeShlKSl7Y29uc3QgdD1mdW5jdGlvbihlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lW25dO2lmKCFpc1ZOb2RlJDIocikpcmV0dXJuO2lmKHIudHlwZSE9PXVufHwidi1pZiI9PT1yLmNoaWxkcmVuKXtpZih0KXJldHVybjt0PXJ9fXJldHVybiB0fShlKTtlPXR9cmV0dXJuIGU9bm9ybWFsaXplVk5vZGUkMShlKSx0JiYhZS5keW5hbWljQ2hpbGRyZW4mJihlLmR5bmFtaWNDaGlsZHJlbj10LmZpbHRlcih0PT50IT09ZSkpLGV9ZnVuY3Rpb24gcXVldWVFZmZlY3RXaXRoU3VzcGVuc2UoZSx0KXt0JiZ0LnBlbmRpbmdCcmFuY2g/eShlKT90LmVmZmVjdHMucHVzaCguLi5lKTp0LmVmZmVjdHMucHVzaChlKTpxdWV1ZVBvc3RGbHVzaENiKGUpfWZ1bmN0aW9uIHNldEFjdGl2ZUJyYW5jaChlLHQpe2UuYWN0aXZlQnJhbmNoPXQ7Y29uc3R7dm5vZGU6bixwYXJlbnRDb21wb25lbnQ6cn09ZTtsZXQgbz10LmVsO2Zvcig7IW8mJnQuY29tcG9uZW50OylvPSh0PXQuY29tcG9uZW50LnN1YlRyZWUpLmVsO24uZWw9byxyJiZyLnN1YlRyZWU9PT1uJiYoci52bm9kZS5lbD1vLHVwZGF0ZUhPQ0hvc3RFbChyLG8pKX1jb25zdCBsbj1TeW1ib2wuZm9yKCJ2LWZndCIpLGNuPVN5bWJvbC5mb3IoInYtdHh0IiksdW49U3ltYm9sLmZvcigidi1jbXQiKSxwbj1TeW1ib2wuZm9yKCJ2LXN0YyIpLGRuPVtdO2xldCBmbj1udWxsO2Z1bmN0aW9uIG9wZW5CbG9jayhlPSExKXtkbi5wdXNoKGZuPWU/bnVsbDpbXSl9ZnVuY3Rpb24gY2xvc2VCbG9jaygpe2RuLnBvcCgpLGZuPWRuW2RuLmxlbmd0aC0xXXx8bnVsbH1sZXQgaG49MTtmdW5jdGlvbiBzZXRCbG9ja1RyYWNraW5nKGUsdD0hMSl7aG4rPWUsZTwwJiZmbiYmdCYmKGZuLmhhc09uY2U9ITApfWZ1bmN0aW9uIHNldHVwQmxvY2soZSl7cmV0dXJuIGUuZHluYW1pY0NoaWxkcmVuPWhuPjA/Zm58fEw6bnVsbCxjbG9zZUJsb2NrKCksaG4+MCYmZm4mJmZuLnB1c2goZSksZX1mdW5jdGlvbiBjcmVhdGVCbG9jayhlLHQsbixyLG8pe3JldHVybiBzZXR1cEJsb2NrKGNyZWF0ZVZOb2RlKGUsdCxuLHIsbywhMCkpfWZ1bmN0aW9uIGlzVk5vZGUkMihlKXtyZXR1cm4hIWUmJiEwPT09ZS5fX3ZfaXNWTm9kZX1mdW5jdGlvbiBpc1NhbWVWTm9kZVR5cGUoZSx0KXtyZXR1cm4gZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fWNvbnN0IG5vcm1hbGl6ZUtleT0oe2tleTplfSk9Pm51bGwhPWU/ZTpudWxsLG5vcm1hbGl6ZVJlZj0oe3JlZjplLHJlZl9rZXk6dCxyZWZfZm9yOm59KT0+KCJudW1iZXIiPT10eXBlb2YgZSYmKGU9IiIrZSksbnVsbCE9ZT8kKGUpfHxpc1JlZihlKXx8ZihlKT97aTpfdCxyOmUsazp0LGY6ISFufTplOm51bGwpO2Z1bmN0aW9uIGNyZWF0ZUJhc2VWTm9kZShlLHQ9bnVsbCxuPW51bGwscj0wLG89bnVsbCxzPShlPT09bG4/MDoxKSxpPSExLGE9ITEpe2NvbnN0IGw9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZSxwcm9wczp0LGtleTp0JiZub3JtYWxpemVLZXkodCkscmVmOnQmJm5vcm1hbGl6ZVJlZih0KSxzY29wZUlkOmJ0LHNsb3RTY29wZUlkczpudWxsLGNoaWxkcmVuOm4sY29tcG9uZW50Om51bGwsc3VzcGVuc2U6bnVsbCxzc0NvbnRlbnQ6bnVsbCxzc0ZhbGxiYWNrOm51bGwsZGlyczpudWxsLHRyYW5zaXRpb246bnVsbCxlbDpudWxsLGFuY2hvcjpudWxsLHRhcmdldDpudWxsLHRhcmdldFN0YXJ0Om51bGwsdGFyZ2V0QW5jaG9yOm51bGwsc3RhdGljQ291bnQ6MCxzaGFwZUZsYWc6cyxwYXRjaEZsYWc6cixkeW5hbWljUHJvcHM6byxkeW5hbWljQ2hpbGRyZW46bnVsbCxhcHBDb250ZXh0Om51bGwsY3R4Ol90fTtyZXR1cm4gYT8obm9ybWFsaXplQ2hpbGRyZW4obCxuKSwxMjgmcyYmZS5ub3JtYWxpemUobCkpOm4mJihsLnNoYXBlRmxhZ3w9JChuKT84OjE2KSxobj4wJiYhaSYmZm4mJihsLnBhdGNoRmxhZz4wfHw2JnMpJiYzMiE9PWwucGF0Y2hGbGFnJiZmbi5wdXNoKGwpLGx9Y29uc3QgY3JlYXRlVk5vZGU9ZnVuY3Rpb24oZSx0PW51bGwsbj1udWxsLHI9MCxvPW51bGwscz0hMSl7ZSYmZSE9PUt0fHwoZT11bik7aWYoaXNWTm9kZSQyKGUpKXtjb25zdCByPWNsb25lVk5vZGUoZSx0LCEwKTtyZXR1cm4gbiYmbm9ybWFsaXplQ2hpbGRyZW4ocixuKSxobj4wJiYhcyYmZm4mJig2JnIuc2hhcGVGbGFnP2ZuW2ZuLmluZGV4T2YoZSldPXI6Zm4ucHVzaChyKSksci5wYXRjaEZsYWc9LTIscn1pPWUsZihpKSYmIl9fdmNjT3B0cyJpbiBpJiYoZT1lLl9fdmNjT3B0cyk7dmFyIGk7aWYodCl7dD1ndWFyZFJlYWN0aXZlUHJvcHModCk7bGV0e2NsYXNzOmUsc3R5bGU6bn09dDtlJiYhJChlKSYmKHQuY2xhc3M9TyhlKSksYihuKSYmKGlzUHJveHkobikmJiF5KG4pJiYobj13KHt9LG4pKSx0LnN0eWxlPU4obikpfWNvbnN0IGE9JChlKT8xOmlzU3VzcGVuc2UoZSk/MTI4OmlzVGVsZXBvcnQoZSk/NjQ6YihlKT80OmYoZSk/MjowO3JldHVybiBjcmVhdGVCYXNlVk5vZGUoZSx0LG4scixvLGEscywhMCl9O2Z1bmN0aW9uIGd1YXJkUmVhY3RpdmVQcm9wcyhlKXtyZXR1cm4gZT9pc1Byb3h5KGUpfHxpc0ludGVybmFsT2JqZWN0KGUpP3coe30sZSk6ZTpudWxsfWZ1bmN0aW9uIGNsb25lVk5vZGUoZSx0LG49ITEscj0hMSl7Y29uc3R7cHJvcHM6byxyZWY6cyxwYXRjaEZsYWc6aSxjaGlsZHJlbjphLHRyYW5zaXRpb246bH09ZSxjPXQ/bWVyZ2VQcm9wcyhvfHx7fSx0KTpvLHU9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZS50eXBlLHByb3BzOmMsa2V5OmMmJm5vcm1hbGl6ZUtleShjKSxyZWY6dCYmdC5yZWY/biYmcz95KHMpP3MuY29uY2F0KG5vcm1hbGl6ZVJlZih0KSk6W3Msbm9ybWFsaXplUmVmKHQpXTpub3JtYWxpemVSZWYodCk6cyxzY29wZUlkOmUuc2NvcGVJZCxzbG90U2NvcGVJZHM6ZS5zbG90U2NvcGVJZHMsY2hpbGRyZW46YSx0YXJnZXQ6ZS50YXJnZXQsdGFyZ2V0U3RhcnQ6ZS50YXJnZXRTdGFydCx0YXJnZXRBbmNob3I6ZS50YXJnZXRBbmNob3Isc3RhdGljQ291bnQ6ZS5zdGF0aWNDb3VudCxzaGFwZUZsYWc6ZS5zaGFwZUZsYWcscGF0Y2hGbGFnOnQmJmUudHlwZSE9PWxuPy0xPT09aT8xNjoxNnxpOmksZHluYW1pY1Byb3BzOmUuZHluYW1pY1Byb3BzLGR5bmFtaWNDaGlsZHJlbjplLmR5bmFtaWNDaGlsZHJlbixhcHBDb250ZXh0OmUuYXBwQ29udGV4dCxkaXJzOmUuZGlycyx0cmFuc2l0aW9uOmwsY29tcG9uZW50OmUuY29tcG9uZW50LHN1c3BlbnNlOmUuc3VzcGVuc2Usc3NDb250ZW50OmUuc3NDb250ZW50JiZjbG9uZVZOb2RlKGUuc3NDb250ZW50KSxzc0ZhbGxiYWNrOmUuc3NGYWxsYmFjayYmY2xvbmVWTm9kZShlLnNzRmFsbGJhY2spLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZWw6ZS5lbCxhbmNob3I6ZS5hbmNob3IsY3R4OmUuY3R4LGNlOmUuY2V9O3JldHVybiBsJiZyJiZzZXRUcmFuc2l0aW9uSG9va3ModSxsLmNsb25lKHUpKSx1fWZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZShlPSIgIix0PTApe3JldHVybiBjcmVhdGVWTm9kZShjbixudWxsLGUsdCl9ZnVuY3Rpb24gbm9ybWFsaXplVk5vZGUkMShlKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9jcmVhdGVWTm9kZSh1bik6eShlKT9jcmVhdGVWTm9kZShsbixudWxsLGUuc2xpY2UoKSk6aXNWTm9kZSQyKGUpP2Nsb25lSWZNb3VudGVkKGUpOmNyZWF0ZVZOb2RlKGNuLG51bGwsU3RyaW5nKGUpKX1mdW5jdGlvbiBjbG9uZUlmTW91bnRlZChlKXtyZXR1cm4gbnVsbD09PWUuZWwmJi0xIT09ZS5wYXRjaEZsYWd8fGUubWVtbz9lOmNsb25lVk5vZGUoZSl9ZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4oZSx0KXtsZXQgbj0wO2NvbnN0e3NoYXBlRmxhZzpyfT1lO2lmKG51bGw9PXQpdD1udWxsO2Vsc2UgaWYoeSh0KSluPTE2O2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiB0KXtpZig2NSZyKXtjb25zdCBuPXQuZGVmYXVsdDtyZXR1cm4gdm9pZChuJiYobi5fYyYmKG4uX2Q9ITEpLG5vcm1hbGl6ZUNoaWxkcmVuKGUsbigpKSxuLl9jJiYobi5fZD0hMCkpKX17bj0zMjtjb25zdCByPXQuXztyfHxpc0ludGVybmFsT2JqZWN0KHQpPzM9PT1yJiZfdCYmKDE9PT1fdC5zbG90cy5fP3QuXz0xOih0Ll89MixlLnBhdGNoRmxhZ3w9MTAyNCkpOnQuX2N0eD1fdH19ZWxzZSBmKHQpPyh0PXtkZWZhdWx0OnQsX2N0eDpfdH0sbj0zMik6KHQ9U3RyaW5nKHQpLDY0JnI/KG49MTYsdD1bY3JlYXRlVGV4dFZOb2RlKHQpXSk6bj04KTtlLmNoaWxkcmVuPXQsZS5zaGFwZUZsYWd8PW59ZnVuY3Rpb24gbWVyZ2VQcm9wcyguLi5lKXtjb25zdCB0PXt9O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWVbbl07Zm9yKGNvbnN0IGUgaW4gcilpZigiY2xhc3MiPT09ZSl0LmNsYXNzIT09ci5jbGFzcyYmKHQuY2xhc3M9TyhbdC5jbGFzcyxyLmNsYXNzXSkpO2Vsc2UgaWYoInN0eWxlIj09PWUpdC5zdHlsZT1OKFt0LnN0eWxlLHIuc3R5bGVdKTtlbHNlIGlmKEgoZSkpe2NvbnN0IG49dFtlXSxvPXJbZV07IW98fG49PT1vfHx5KG4pJiZuLmluY2x1ZGVzKG8pP251bGwhPW98fG51bGwhPW58fE0oZSl8fCh0W2VdPW8pOnRbZV09bj9bXS5jb25jYXQobixvKTpvfWVsc2UiIiE9PWUmJih0W2VdPXJbZV0pfXJldHVybiB0fWZ1bmN0aW9uIGludm9rZVZOb2RlSG9vayhlLHQsbixyPW51bGwpe2NhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGUsdCw3LFtuLHJdKX1jb25zdCBnbj1jcmVhdGVBcHBDb250ZXh0KCk7bGV0IG1uPTA7ZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UkMShlLHQsbil7Y29uc3Qgcj1lLnR5cGUsbz0odD90LmFwcENvbnRleHQ6ZS5hcHBDb250ZXh0KXx8Z24scz17dWlkOm1uKyssdm5vZGU6ZSx0eXBlOnIscGFyZW50OnQsYXBwQ29udGV4dDpvLHJvb3Q6bnVsbCxuZXh0Om51bGwsc3ViVHJlZTpudWxsLGVmZmVjdDpudWxsLHVwZGF0ZTpudWxsLGpvYjpudWxsLHNjb3BlOm5ldyBFZmZlY3RTY29wZSghMCkscmVuZGVyOm51bGwscHJveHk6bnVsbCxleHBvc2VkOm51bGwsZXhwb3NlUHJveHk6bnVsbCx3aXRoUHJveHk6bnVsbCxwcm92aWRlczp0P3QucHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShvLnByb3ZpZGVzKSxpZHM6dD90LmlkczpbIiIsMCwwXSxhY2Nlc3NDYWNoZTpudWxsLHJlbmRlckNhY2hlOltdLGNvbXBvbmVudHM6bnVsbCxkaXJlY3RpdmVzOm51bGwscHJvcHNPcHRpb25zOm5vcm1hbGl6ZVByb3BzT3B0aW9ucyhyLG8pLGVtaXRzT3B0aW9uczpub3JtYWxpemVFbWl0c09wdGlvbnMocixvKSxlbWl0Om51bGwsZW1pdHRlZDpudWxsLHByb3BzRGVmYXVsdHM6bSxpbmhlcml0QXR0cnM6ci5pbmhlcml0QXR0cnMsY3R4Om0sZGF0YTptLHByb3BzOm0sYXR0cnM6bSxzbG90czptLHJlZnM6bSxzZXR1cFN0YXRlOm0sc2V0dXBDb250ZXh0Om51bGwsc3VzcGVuc2U6bixzdXNwZW5zZUlkOm4/bi5wZW5kaW5nSWQ6MCxhc3luY0RlcDpudWxsLGFzeW5jUmVzb2x2ZWQ6ITEsaXNNb3VudGVkOiExLGlzVW5tb3VudGVkOiExLGlzRGVhY3RpdmF0ZWQ6ITEsYmM6bnVsbCxjOm51bGwsYm06bnVsbCxtOm51bGwsYnU6bnVsbCx1Om51bGwsdW06bnVsbCxidW06bnVsbCxkYTpudWxsLGE6bnVsbCxydGc6bnVsbCxydGM6bnVsbCxlYzpudWxsLHNwOm51bGx9O3JldHVybiBzLmN0eD17XzpzfSxzLnJvb3Q9dD90LnJvb3Q6cyxzLmVtaXQ9ZW1pdC5iaW5kKG51bGwscyksZS5jZSYmZS5jZShzKSxzfWxldCB5bj1udWxsO2NvbnN0IGdldEN1cnJlbnRJbnN0YW5jZT0oKT0+eW58fF90O2xldCB2bixfbjt7Y29uc3QgZT1qKCkscmVnaXN0ZXJHbG9iYWxTZXR0ZXI9KHQsbik9PntsZXQgcjtyZXR1cm4ocj1lW3RdKXx8KHI9ZVt0XT1bXSksci5wdXNoKG4pLGU9PntyLmxlbmd0aD4xP3IuZm9yRWFjaCh0PT50KGUpKTpyWzBdKGUpfX07dm49cmVnaXN0ZXJHbG9iYWxTZXR0ZXIoIl9fVlVFX0lOU1RBTkNFX1NFVFRFUlNfXyIsZT0+eW49ZSksX249cmVnaXN0ZXJHbG9iYWxTZXR0ZXIoIl9fVlVFX1NTUl9TRVRURVJTX18iLGU9PkNuPWUpfWNvbnN0IHNldEN1cnJlbnRJbnN0YW5jZT1lPT57Y29uc3QgdD15bjtyZXR1cm4gdm4oZSksZS5zY29wZS5vbigpLCgpPT57ZS5zY29wZS5vZmYoKSx2bih0KX19LHVuc2V0Q3VycmVudEluc3RhbmNlPSgpPT57eW4mJnluLnNjb3BlLm9mZigpLHZuKG51bGwpfTtmdW5jdGlvbiBpc1N0YXRlZnVsQ29tcG9uZW50KGUpe3JldHVybiA0JmUudm5vZGUuc2hhcGVGbGFnfWxldCBibixrbixDbj0hMTtmdW5jdGlvbiBzZXR1cENvbXBvbmVudCQxKGUsdD0hMSxuPSExKXt0JiZfbih0KTtjb25zdHtwcm9wczpyLGNoaWxkcmVuOm99PWUudm5vZGUscz1pc1N0YXRlZnVsQ29tcG9uZW50KGUpOyFmdW5jdGlvbihlLHQsbixyPSExKXtjb25zdCBvPXt9LHM9Y3JlYXRlSW50ZXJuYWxPYmplY3QoKTtlLnByb3BzRGVmYXVsdHM9T2JqZWN0LmNyZWF0ZShudWxsKSxzZXRGdWxsUHJvcHMoZSx0LG8scyk7Zm9yKGNvbnN0IHQgaW4gZS5wcm9wc09wdGlvbnNbMF0pdCBpbiBvfHwob1t0XT12b2lkIDApO24/ZS5wcm9wcz1yP286c2hhbGxvd1JlYWN0aXZlKG8pOmUudHlwZS5wcm9wcz9lLnByb3BzPW86ZS5wcm9wcz1zLGUuYXR0cnM9c30oZSxyLHMsdCksKChlLHQsbik9Pntjb25zdCByPWUuc2xvdHM9Y3JlYXRlSW50ZXJuYWxPYmplY3QoKTtpZigzMiZlLnZub2RlLnNoYXBlRmxhZyl7Y29uc3QgZT10Ll87ZT8oYXNzaWduU2xvdHMocix0LG4pLG4mJl8ociwiXyIsZSwhMCkpOm5vcm1hbGl6ZU9iamVjdFNsb3RzKHQscil9ZWxzZSB0JiZub3JtYWxpemVWTm9kZVNsb3RzKGUsdCl9KShlLG8sbnx8dCk7Y29uc3QgaT1zP2Z1bmN0aW9uKGUsdCl7Y29uc3Qgbj1lLnR5cGU7ZS5hY2Nlc3NDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLGUucHJveHk9bmV3IFByb3h5KGUuY3R4LEd0KTtjb25zdHtzZXR1cDpyfT1uO2lmKHIpe3BhdXNlVHJhY2tpbmcoKTtjb25zdCBuPWUuc2V0dXBDb250ZXh0PXIubGVuZ3RoPjE/Y3JlYXRlU2V0dXBDb250ZXh0KGUpOm51bGwsbz1zZXRDdXJyZW50SW5zdGFuY2UoZSkscz1jYWxsV2l0aEVycm9ySGFuZGxpbmcocixlLDAsW2UucHJvcHMsbl0pLGk9VihzKTtpZihyZXNldFRyYWNraW5nKCksbygpLCFpJiYhZS5zcHx8aXNBc3luY1dyYXBwZXIoZSl8fG1hcmtBc3luY0JvdW5kYXJ5KGUpLGkpe2lmKHMudGhlbih1bnNldEN1cnJlbnRJbnN0YW5jZSx1bnNldEN1cnJlbnRJbnN0YW5jZSksdClyZXR1cm4gcy50aGVuKG49PntoYW5kbGVTZXR1cFJlc3VsdChlLG4sdCl9KS5jYXRjaCh0PT57aGFuZGxlRXJyb3IodCxlLDApfSk7ZS5hc3luY0RlcD1zfWVsc2UgaGFuZGxlU2V0dXBSZXN1bHQoZSxzLHQpfWVsc2UgZmluaXNoQ29tcG9uZW50U2V0dXAoZSx0KX0oZSx0KTp2b2lkIDA7cmV0dXJuIHQmJl9uKCExKSxpfWZ1bmN0aW9uIGhhbmRsZVNldHVwUmVzdWx0KGUsdCxuKXtmKHQpP2UudHlwZS5fX3NzcklubGluZVJlbmRlcj9lLnNzclJlbmRlcj10OmUucmVuZGVyPXQ6Yih0KSYmKGUuc2V0dXBTdGF0ZT1wcm94eVJlZnModCkpLGZpbmlzaENvbXBvbmVudFNldHVwKGUsbil9ZnVuY3Rpb24gZmluaXNoQ29tcG9uZW50U2V0dXAoZSx0LG4pe2NvbnN0IHI9ZS50eXBlO2lmKCFlLnJlbmRlcil7aWYoIXQmJmJuJiYhci5yZW5kZXIpe2NvbnN0IHQ9ci50ZW1wbGF0ZXx8cmVzb2x2ZU1lcmdlZE9wdGlvbnMoZSkudGVtcGxhdGU7aWYodCl7Y29uc3R7aXNDdXN0b21FbGVtZW50Om4sY29tcGlsZXJPcHRpb25zOm99PWUuYXBwQ29udGV4dC5jb25maWcse2RlbGltaXRlcnM6cyxjb21waWxlck9wdGlvbnM6aX09cixhPXcodyh7aXNDdXN0b21FbGVtZW50Om4sZGVsaW1pdGVyczpzfSxvKSxpKTtyLnJlbmRlcj1ibih0LGEpfX1lLnJlbmRlcj1yLnJlbmRlcnx8UCxrbiYma24oZSl9e2NvbnN0IHQ9c2V0Q3VycmVudEluc3RhbmNlKGUpO3BhdXNlVHJhY2tpbmcoKTt0cnl7YXBwbHlPcHRpb25zKGUpfWZpbmFsbHl7cmVzZXRUcmFja2luZygpLHQoKX19fWNvbnN0IFNuPXtnZXQ6KGUsdCk9Pih0cmFjayhlLDAsIiIpLGVbdF0pfTtmdW5jdGlvbiBjcmVhdGVTZXR1cENvbnRleHQoZSl7Y29uc3QgZXhwb3NlPXQ9PntlLmV4cG9zZWQ9dHx8e319O3JldHVybnthdHRyczpuZXcgUHJveHkoZS5hdHRycyxTbiksc2xvdHM6ZS5zbG90cyxlbWl0OmUuZW1pdCxleHBvc2U6ZXhwb3NlfX1mdW5jdGlvbiBnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZShlKXtyZXR1cm4gZS5leHBvc2VkP2UuZXhwb3NlUHJveHl8fChlLmV4cG9zZVByb3h5PW5ldyBQcm94eShwcm94eVJlZnMobWFya1JhdyhlLmV4cG9zZWQpKSx7Z2V0Oih0LG4pPT5uIGluIHQ/dFtuXTpuIGluIEp0P0p0W25dKGUpOnZvaWQgMCxoYXM6KGUsdCk9PnQgaW4gZXx8dCBpbiBKdH0pKTplLnByb3h5fWZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUoZSx0PSEwKXtyZXR1cm4gZihlKT9lLmRpc3BsYXlOYW1lfHxlLm5hbWU6ZS5uYW1lfHx0JiZlLl9fbmFtZX1jb25zdCBjb21wdXRlZD0oZSx0KT0+e2NvbnN0IG49ZnVuY3Rpb24oZSx0LG49ITEpe2xldCByLG87cmV0dXJuIGYoZSk/cj1lOihyPWUuZ2V0LG89ZS5zZXQpLG5ldyBDb21wdXRlZFJlZkltcGwocixvLG4pfShlLDAsQ24pO3JldHVybiBufTtmdW5jdGlvbiBoKGUsdCxuKXt0cnl7c2V0QmxvY2tUcmFja2luZygtMSk7Y29uc3Qgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiAyPT09cj9iKHQpJiYheSh0KT9pc1ZOb2RlJDIodCk/Y3JlYXRlVk5vZGUoZSxudWxsLFt0XSk6Y3JlYXRlVk5vZGUoZSx0KTpjcmVhdGVWTm9kZShlLG51bGwsdCk6KHI+Mz9uPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTozPT09ciYmaXNWTm9kZSQyKG4pJiYobj1bbl0pLGNyZWF0ZVZOb2RlKGUsdCxuKSl9ZmluYWxseXtzZXRCbG9ja1RyYWNraW5nKDEpfX1mdW5jdGlvbiBpc01lbW9TYW1lKGUsdCl7Y29uc3Qgbj1lLm1lbW87aWYobi5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKGsobltlXSx0W2VdKSlyZXR1cm4hMTtyZXR1cm4gaG4+MCYmZm4mJmZuLnB1c2goZSksITB9Y29uc3Qgd249IjMuNS4zMiIsVG49UCxSbj1jdCxBbj15dCxzZXREZXZ0b29sc0hvb2s9ZnVuY3Rpb24oZSx0KXt5dD1lLHl0Pyh5dC5lbmFibGVkPSEwLHZ0LmZvckVhY2goKHtldmVudDplLGFyZ3M6dH0pPT55dC5lbWl0KGUsLi4udCkpLHZ0PVtdKTp2dD1bXX0seG49e2NyZWF0ZUNvbXBvbmVudEluc3RhbmNlOmNyZWF0ZUNvbXBvbmVudEluc3RhbmNlJDEsc2V0dXBDb21wb25lbnQ6c2V0dXBDb21wb25lbnQkMSxyZW5kZXJDb21wb25lbnRSb290OnJlbmRlckNvbXBvbmVudFJvb3QkMSxzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U6c2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEsaXNWTm9kZTppc1ZOb2RlJDIsbm9ybWFsaXplVk5vZGU6bm9ybWFsaXplVk5vZGUkMSxnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZTpnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZSxlbnN1cmVWYWxpZFZOb2RlOmVuc3VyZVZhbGlkVk5vZGUkMSxwdXNoV2FybmluZ0NvbnRleHQ6ZnVuY3Rpb24oZSl7bHQucHVzaChlKX0scG9wV2FybmluZ0NvbnRleHQ6ZnVuY3Rpb24oKXtsdC5wb3AoKX19LEVuPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6bnVsbCxQbj1FbiYmRW4uY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKSwkbj17aW5zZXJ0OihlLHQsbik9Pnt0Lmluc2VydEJlZm9yZShlLG58fG51bGwpfSxyZW1vdmU6ZT0+e2NvbnN0IHQ9ZS5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQoZSl9LGNyZWF0ZUVsZW1lbnQ6KGUsdCxuLHIpPT57Y29uc3Qgbz0ic3ZnIj09PXQ/RW4uY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZSk6Im1hdGhtbCI9PT10P0VuLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsZSk6bj9Fbi5jcmVhdGVFbGVtZW50KGUse2lzOm59KTpFbi5jcmVhdGVFbGVtZW50KGUpO3JldHVybiJzZWxlY3QiPT09ZSYmciYmbnVsbCE9ci5tdWx0aXBsZSYmby5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIixyLm11bHRpcGxlKSxvfSxjcmVhdGVUZXh0OmU9PkVuLmNyZWF0ZVRleHROb2RlKGUpLGNyZWF0ZUNvbW1lbnQ6ZT0+RW4uY3JlYXRlQ29tbWVudChlKSxzZXRUZXh0OihlLHQpPT57ZS5ub2RlVmFsdWU9dH0sc2V0RWxlbWVudFRleHQ6KGUsdCk9PntlLnRleHRDb250ZW50PXR9LHBhcmVudE5vZGU6ZT0+ZS5wYXJlbnROb2RlLG5leHRTaWJsaW5nOmU9PmUubmV4dFNpYmxpbmcscXVlcnlTZWxlY3RvcjplPT5Fbi5xdWVyeVNlbGVjdG9yKGUpLHNldFNjb3BlSWQoZSx0KXtlLnNldEF0dHJpYnV0ZSh0LCIiKX0saW5zZXJ0U3RhdGljQ29udGVudChlLHQsbixyLG8scyl7Y29uc3QgaT1uP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkO2lmKG8mJihvPT09c3x8by5uZXh0U2libGluZykpZm9yKDt0Lmluc2VydEJlZm9yZShvLmNsb25lTm9kZSghMCksbiksbyE9PXMmJihvPW8ubmV4dFNpYmxpbmcpOyk7ZWxzZXtQbi5pbm5lckhUTUw9InN2ZyI9PT1yP2A8c3ZnPiR7ZX08L3N2Zz5gOiJtYXRobWwiPT09cj9gPG1hdGg+JHtlfTwvbWF0aD5gOmU7Y29uc3Qgbz1Qbi5jb250ZW50O2lmKCJzdmciPT09cnx8Im1hdGhtbCI9PT1yKXtjb25zdCBlPW8uZmlyc3RDaGlsZDtmb3IoO2UuZmlyc3RDaGlsZDspby5hcHBlbmRDaGlsZChlLmZpcnN0Q2hpbGQpO28ucmVtb3ZlQ2hpbGQoZSl9dC5pbnNlcnRCZWZvcmUobyxuKX1yZXR1cm5baT9pLm5leHRTaWJsaW5nOnQuZmlyc3RDaGlsZCxuP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkXX19LE9uPSJ0cmFuc2l0aW9uIixObj0iYW5pbWF0aW9uIixIbj1TeW1ib2woIl92dGMiKSxNbj17bmFtZTpTdHJpbmcsdHlwZTpTdHJpbmcsY3NzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sZHVyYXRpb246W1N0cmluZyxOdW1iZXIsT2JqZWN0XSxlbnRlckZyb21DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxhcHBlYXJGcm9tQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxsZWF2ZUZyb21DbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZ30sVm49dyh7fSx4dCxNbiksam49KGU9PihlLmRpc3BsYXlOYW1lPSJUcmFuc2l0aW9uIixlLnByb3BzPVZuLGUpKSgoZSx7c2xvdHM6dH0pPT5oKEV0LHJlc29sdmVUcmFuc2l0aW9uUHJvcHMoZSksdCkpLGNhbGxIb29rPShlLHQ9W10pPT57eShlKT9lLmZvckVhY2goZT0+ZSguLi50KSk6ZSYmZSguLi50KX0saGFzRXhwbGljaXRDYWxsYmFjaz1lPT4hIWUmJih5KGUpP2Uuc29tZShlPT5lLmxlbmd0aD4xKTplLmxlbmd0aD4xKTtmdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvblByb3BzKGUpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IG4gaW4gZSluIGluIE1ufHwodFtuXT1lW25dKTtpZighMT09PWUuY3NzKXJldHVybiB0O2NvbnN0e25hbWU6bj0idiIsdHlwZTpyLGR1cmF0aW9uOm8sZW50ZXJGcm9tQ2xhc3M6cz1gJHtufS1lbnRlci1mcm9tYCxlbnRlckFjdGl2ZUNsYXNzOmk9YCR7bn0tZW50ZXItYWN0aXZlYCxlbnRlclRvQ2xhc3M6YT1gJHtufS1lbnRlci10b2AsYXBwZWFyRnJvbUNsYXNzOmw9cyxhcHBlYXJBY3RpdmVDbGFzczpjPWksYXBwZWFyVG9DbGFzczp1PWEsbGVhdmVGcm9tQ2xhc3M6cD1gJHtufS1sZWF2ZS1mcm9tYCxsZWF2ZUFjdGl2ZUNsYXNzOmQ9YCR7bn0tbGVhdmUtYWN0aXZlYCxsZWF2ZVRvQ2xhc3M6Zj1gJHtufS1sZWF2ZS10b2B9PWUsZz1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiBudWxsO2lmKGIoZSkpcmV0dXJuW051bWJlck9mKGUuZW50ZXIpLE51bWJlck9mKGUubGVhdmUpXTt7Y29uc3QgdD1OdW1iZXJPZihlKTtyZXR1cm5bdCx0XX19KG8pLG09ZyYmZ1swXSx5PWcmJmdbMV0se29uQmVmb3JlRW50ZXI6dixvbkVudGVyOl8sb25FbnRlckNhbmNlbGxlZDprLG9uTGVhdmU6QyxvbkxlYXZlQ2FuY2VsbGVkOlMsb25CZWZvcmVBcHBlYXI6VD12LG9uQXBwZWFyOlI9XyxvbkFwcGVhckNhbmNlbGxlZDpBPWt9PXQsZmluaXNoRW50ZXI9KGUsdCxuLHIpPT57ZS5fZW50ZXJDYW5jZWxsZWQ9cixyZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZSx0P3U6YSkscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUsdD9jOmkpLG4mJm4oKX0sZmluaXNoTGVhdmU9KGUsdCk9PntlLl9pc0xlYXZpbmc9ITEscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUscCkscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUsZikscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUsZCksdCYmdCgpfSxtYWtlRW50ZXJIb29rPWU9Pih0LG4pPT57Y29uc3Qgbz1lP1I6XyxyZXNvbHZlPSgpPT5maW5pc2hFbnRlcih0LGUsbik7Y2FsbEhvb2sobyxbdCxyZXNvbHZlXSksbmV4dEZyYW1lKCgpPT57cmVtb3ZlVHJhbnNpdGlvbkNsYXNzKHQsZT9sOnMpLGFkZFRyYW5zaXRpb25DbGFzcyh0LGU/dTphKSxoYXNFeHBsaWNpdENhbGxiYWNrKG8pfHx3aGVuVHJhbnNpdGlvbkVuZHModCxyLG0scmVzb2x2ZSl9KX07cmV0dXJuIHcodCx7b25CZWZvcmVFbnRlcihlKXtjYWxsSG9vayh2LFtlXSksYWRkVHJhbnNpdGlvbkNsYXNzKGUscyksYWRkVHJhbnNpdGlvbkNsYXNzKGUsaSl9LG9uQmVmb3JlQXBwZWFyKGUpe2NhbGxIb29rKFQsW2VdKSxhZGRUcmFuc2l0aW9uQ2xhc3MoZSxsKSxhZGRUcmFuc2l0aW9uQ2xhc3MoZSxjKX0sb25FbnRlcjptYWtlRW50ZXJIb29rKCExKSxvbkFwcGVhcjptYWtlRW50ZXJIb29rKCEwKSxvbkxlYXZlKGUsdCl7ZS5faXNMZWF2aW5nPSEwO2NvbnN0IHJlc29sdmU9KCk9PmZpbmlzaExlYXZlKGUsdCk7YWRkVHJhbnNpdGlvbkNsYXNzKGUscCksZS5fZW50ZXJDYW5jZWxsZWQ/KGFkZFRyYW5zaXRpb25DbGFzcyhlLGQpLGZvcmNlUmVmbG93KGUpKTooZm9yY2VSZWZsb3coZSksYWRkVHJhbnNpdGlvbkNsYXNzKGUsZCkpLG5leHRGcmFtZSgoKT0+e2UuX2lzTGVhdmluZyYmKHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlLHApLGFkZFRyYW5zaXRpb25DbGFzcyhlLGYpLGhhc0V4cGxpY2l0Q2FsbGJhY2soQyl8fHdoZW5UcmFuc2l0aW9uRW5kcyhlLHIseSxyZXNvbHZlKSl9KSxjYWxsSG9vayhDLFtlLHJlc29sdmVdKX0sb25FbnRlckNhbmNlbGxlZChlKXtmaW5pc2hFbnRlcihlLCExLHZvaWQgMCwhMCksY2FsbEhvb2soayxbZV0pfSxvbkFwcGVhckNhbmNlbGxlZChlKXtmaW5pc2hFbnRlcihlLCEwLHZvaWQgMCwhMCksY2FsbEhvb2soQSxbZV0pfSxvbkxlYXZlQ2FuY2VsbGVkKGUpe2ZpbmlzaExlYXZlKGUpLGNhbGxIb29rKFMsW2VdKX19KX1mdW5jdGlvbiBOdW1iZXJPZihlKXtyZXR1cm4gSihlKX1mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKHQ9PnQmJmUuY2xhc3NMaXN0LmFkZCh0KSksKGVbSG5dfHwoZVtIbl09bmV3IFNldCkpLmFkZCh0KX1mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKHQ9PnQmJmUuY2xhc3NMaXN0LnJlbW92ZSh0KSk7Y29uc3Qgbj1lW0huXTtuJiYobi5kZWxldGUodCksbi5zaXplfHwoZVtIbl09dm9pZCAwKSl9ZnVuY3Rpb24gbmV4dEZyYW1lKGUpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZShlKX0pfWxldCBJbj0wO2Z1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyhlLHQsbixyKXtjb25zdCBvPWUuX2VuZElkPSsrSW4scmVzb2x2ZUlmTm90U3RhbGU9KCk9PntvPT09ZS5fZW5kSWQmJnIoKX07aWYobnVsbCE9bilyZXR1cm4gc2V0VGltZW91dChyZXNvbHZlSWZOb3RTdGFsZSxuKTtjb25zdHt0eXBlOnMsdGltZW91dDppLHByb3BDb3VudDphfT1nZXRUcmFuc2l0aW9uSW5mbyhlLHQpO2lmKCFzKXJldHVybiByKCk7Y29uc3QgbD1zKyJlbmQiO2xldCBjPTA7Y29uc3QgZW5kPSgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKGwsb25FbmQpLHJlc29sdmVJZk5vdFN0YWxlKCl9LG9uRW5kPXQ9Pnt0LnRhcmdldD09PWUmJisrYz49YSYmZW5kKCl9O3NldFRpbWVvdXQoKCk9PntjPGEmJmVuZCgpfSxpKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihsLG9uRW5kKX1mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyhlLHQpe2NvbnN0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksZ2V0U3R5bGVQcm9wZXJ0aWVzPWU9PihuW2VdfHwiIikuc3BsaXQoIiwgIikscj1nZXRTdHlsZVByb3BlcnRpZXMoYCR7T259RGVsYXlgKSxvPWdldFN0eWxlUHJvcGVydGllcyhgJHtPbn1EdXJhdGlvbmApLHM9Z2V0VGltZW91dChyLG8pLGk9Z2V0U3R5bGVQcm9wZXJ0aWVzKGAke05ufURlbGF5YCksYT1nZXRTdHlsZVByb3BlcnRpZXMoYCR7Tm59RHVyYXRpb25gKSxsPWdldFRpbWVvdXQoaSxhKTtsZXQgYz1udWxsLHU9MCxwPTA7dD09PU9uP3M+MCYmKGM9T24sdT1zLHA9by5sZW5ndGgpOnQ9PT1Obj9sPjAmJihjPU5uLHU9bCxwPWEubGVuZ3RoKToodT1NYXRoLm1heChzLGwpLGM9dT4wP3M+bD9PbjpObjpudWxsLHA9Yz9jPT09T24/by5sZW5ndGg6YS5sZW5ndGg6MCk7cmV0dXJue3R5cGU6Yyx0aW1lb3V0OnUscHJvcENvdW50OnAsaGFzVHJhbnNmb3JtOmM9PT1PbiYmL1xiKD86dHJhbnNmb3JtfGFsbCkoPzosfCQpLy50ZXN0KGdldFN0eWxlUHJvcGVydGllcyhgJHtPbn1Qcm9wZXJ0eWApLnRvU3RyaW5nKCkpfX1mdW5jdGlvbiBnZXRUaW1lb3V0KGUsdCl7Zm9yKDtlLmxlbmd0aDx0Lmxlbmd0aDspZT1lLmNvbmNhdChlKTtyZXR1cm4gTWF0aC5tYXgoLi4udC5tYXAoKHQsbik9PnRvTXModCkrdG9NcyhlW25dKSkpfWZ1bmN0aW9uIHRvTXMoZSl7cmV0dXJuImF1dG8iPT09ZT8wOjFlMypOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKCIsIiwiLiIpKX1mdW5jdGlvbiBmb3JjZVJlZmxvdyhlKXtyZXR1cm4oZT9lLm93bmVyRG9jdW1lbnQ6ZG9jdW1lbnQpLmJvZHkub2Zmc2V0SGVpZ2h0fWNvbnN0IERuPVN5bWJvbCgiX3ZvZCIpLExuPVN5bWJvbCgiX3ZzaCIpLEZuPXtuYW1lOiJzaG93IixiZWZvcmVNb3VudChlLHt2YWx1ZTp0fSx7dHJhbnNpdGlvbjpufSl7ZVtEbl09Im5vbmUiPT09ZS5zdHlsZS5kaXNwbGF5PyIiOmUuc3R5bGUuZGlzcGxheSxuJiZ0P24uYmVmb3JlRW50ZXIoZSk6c2V0RGlzcGxheShlLHQpfSxtb3VudGVkKGUse3ZhbHVlOnR9LHt0cmFuc2l0aW9uOm59KXtuJiZ0JiZuLmVudGVyKGUpfSx1cGRhdGVkKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0se3RyYW5zaXRpb246cn0peyF0IT0hbiYmKHI/dD8oci5iZWZvcmVFbnRlcihlKSxzZXREaXNwbGF5KGUsITApLHIuZW50ZXIoZSkpOnIubGVhdmUoZSwoKT0+e3NldERpc3BsYXkoZSwhMSl9KTpzZXREaXNwbGF5KGUsdCkpfSxiZWZvcmVVbm1vdW50KGUse3ZhbHVlOnR9KXtzZXREaXNwbGF5KGUsdCl9fTtmdW5jdGlvbiBzZXREaXNwbGF5KGUsdCl7ZS5zdHlsZS5kaXNwbGF5PXQ/ZVtEbl06Im5vbmUiLGVbTG5dPSF0fWNvbnN0IEJuPVN5bWJvbCgiIik7ZnVuY3Rpb24gc2V0VmFyc09uVk5vZGUoZSx0KXtpZigxMjgmZS5zaGFwZUZsYWcpe2NvbnN0IG49ZS5zdXNwZW5zZTtlPW4uYWN0aXZlQnJhbmNoLG4ucGVuZGluZ0JyYW5jaCYmIW4uaXNIeWRyYXRpbmcmJm4uZWZmZWN0cy5wdXNoKCgpPT57c2V0VmFyc09uVk5vZGUobi5hY3RpdmVCcmFuY2gsdCl9KX1mb3IoO2UuY29tcG9uZW50OyllPWUuY29tcG9uZW50LnN1YlRyZWU7aWYoMSZlLnNoYXBlRmxhZyYmZS5lbClzZXRWYXJzT25Ob2RlKGUuZWwsdCk7ZWxzZSBpZihlLnR5cGU9PT1sbillLmNoaWxkcmVuLmZvckVhY2goZT0+c2V0VmFyc09uVk5vZGUoZSx0KSk7ZWxzZSBpZihlLnR5cGU9PT1wbil7bGV0e2VsOm4sYW5jaG9yOnJ9PWU7Zm9yKDtuJiYoc2V0VmFyc09uTm9kZShuLHQpLG4hPT1yKTspbj1uLm5leHRTaWJsaW5nfX1mdW5jdGlvbiBzZXRWYXJzT25Ob2RlKGUsdCl7aWYoMT09PWUubm9kZVR5cGUpe2NvbnN0IG49ZS5zdHlsZTtsZXQgcj0iIjtmb3IoY29uc3QgZSBpbiB0KXtjb25zdCBvPWVlKHRbZV0pO24uc2V0UHJvcGVydHkoYC0tJHtlfWAsbykscis9YC0tJHtlfTogJHtvfTtgfW5bQm5dPXJ9fWNvbnN0IFVuPS8oPzpefDspXHMqZGlzcGxheVxzKjovO2NvbnN0IFduPS9ccyohaW1wb3J0YW50JC87ZnVuY3Rpb24gc2V0U3R5bGUoZSx0LG4pe2lmKHkobikpbi5mb3JFYWNoKG49PnNldFN0eWxlKGUsdCxuKSk7ZWxzZSBpZihudWxsPT1uJiYobj0iIiksdC5zdGFydHNXaXRoKCItLSIpKWUuc2V0UHJvcGVydHkodCxuKTtlbHNle2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXFuW3RdO2lmKG4pcmV0dXJuIG47bGV0IHI9Qih0KTtpZigiZmlsdGVyIiE9PXImJnIgaW4gZSlyZXR1cm4gcW5bdF09cjtyPUcocik7Zm9yKGxldCBuPTA7bjx6bi5sZW5ndGg7bisrKXtjb25zdCBvPXpuW25dK3I7aWYobyBpbiBlKXJldHVybiBxblt0XT1vfXJldHVybiB0fShlLHQpO1duLnRlc3Qobik/ZS5zZXRQcm9wZXJ0eSh6KHIpLG4ucmVwbGFjZShXbiwiIiksImltcG9ydGFudCIpOmVbcl09bn19Y29uc3Qgem49WyJXZWJraXQiLCJNb3oiLCJtcyJdLHFuPXt9O2NvbnN0IEtuPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjtmdW5jdGlvbiBwYXRjaEF0dHIoZSx0LG4scixvLHM9WSh0KSl7ciYmdC5zdGFydHNXaXRoKCJ4bGluazoiKT9udWxsPT1uP2UucmVtb3ZlQXR0cmlidXRlTlMoS24sdC5zbGljZSg2LHQubGVuZ3RoKSk6ZS5zZXRBdHRyaWJ1dGVOUyhLbix0LG4pOm51bGw9PW58fHMmJiFYKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQscz8iIjpnKG4pP1N0cmluZyhuKTpuKX1mdW5jdGlvbiBwYXRjaERPTVByb3AoZSx0LG4scixvKXtpZigiaW5uZXJIVE1MIj09PXR8fCJ0ZXh0Q29udGVudCI9PT10KXJldHVybiB2b2lkKG51bGwhPW4mJihlW3RdPW4pKTtjb25zdCBzPWUudGFnTmFtZTtpZigidmFsdWUiPT09dCYmIlBST0dSRVNTIiE9PXMmJiFzLmluY2x1ZGVzKCItIikpe2NvbnN0IHI9Ik9QVElPTiI9PT1zP2UuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfHwiIjplLnZhbHVlLG89bnVsbD09bj8iY2hlY2tib3giPT09ZS50eXBlPyJvbiI6IiI6U3RyaW5nKG4pO3JldHVybiByPT09byYmIl92YWx1ZSJpbiBlfHwoZS52YWx1ZT1vKSxudWxsPT1uJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KSx2b2lkKGUuX3ZhbHVlPW4pfWxldCBpPSExO2lmKCIiPT09bnx8bnVsbD09bil7Y29uc3Qgcj10eXBlb2YgZVt0XTsiYm9vbGVhbiI9PT1yP249WChuKTpudWxsPT1uJiYic3RyaW5nIj09PXI/KG49IiIsaT0hMCk6Im51bWJlciI9PT1yJiYobj0wLGk9ITApfXRyeXtlW3RdPW59Y2F0Y2goZSl7fWkmJmUucmVtb3ZlQXR0cmlidXRlKG98fHQpfWZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoZSx0LG4scil7ZS5hZGRFdmVudExpc3RlbmVyKHQsbixyKX1jb25zdCBKbj1TeW1ib2woIl92ZWkiKTtmdW5jdGlvbiBwYXRjaEV2ZW50KGUsdCxuLHIsbz1udWxsKXtjb25zdCBzPWVbSm5dfHwoZVtKbl09e30pLGk9c1t0XTtpZihyJiZpKWkudmFsdWU9cjtlbHNle2NvbnN0W24sYV09ZnVuY3Rpb24oZSl7bGV0IHQ7aWYoR24udGVzdChlKSl7bGV0IG47Zm9yKHQ9e307bj1lLm1hdGNoKEduKTspZT1lLnNsaWNlKDAsZS5sZW5ndGgtblswXS5sZW5ndGgpLHRbblswXS50b0xvd2VyQ2FzZSgpXT0hMH1jb25zdCBuPSI6Ij09PWVbMl0/ZS5zbGljZSgzKTp6KGUuc2xpY2UoMikpO3JldHVybltuLHRdfSh0KTtpZihyKXtjb25zdCBpPXNbdF09ZnVuY3Rpb24oZSx0KXtjb25zdCBpbnZva2VyPWU9PntpZihlLl92dHMpe2lmKGUuX3Z0czw9aW52b2tlci5hdHRhY2hlZClyZXR1cm59ZWxzZSBlLl92dHM9RGF0ZS5ub3coKTtjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhmdW5jdGlvbihlLHQpe2lmKHkodCkpe2NvbnN0IG49ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247cmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPSgpPT57bi5jYWxsKGUpLGUuX3N0b3BwZWQ9ITB9LHQubWFwKGU9PnQ9PiF0Ll9zdG9wcGVkJiZlJiZlKHQpKX1yZXR1cm4gdH0oZSxpbnZva2VyLnZhbHVlKSx0LDUsW2VdKX07cmV0dXJuIGludm9rZXIudmFsdWU9ZSxpbnZva2VyLmF0dGFjaGVkPWdldE5vdygpLGludm9rZXJ9KHIsbyk7YWRkRXZlbnRMaXN0ZW5lcihlLG4saSxhKX1lbHNlIGkmJighZnVuY3Rpb24oZSx0LG4scil7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKX0oZSxuLGksYSksc1t0XT12b2lkIDApfX1jb25zdCBHbj0vKD86T25jZXxQYXNzaXZlfENhcHR1cmUpJC87bGV0IFpuPTA7Y29uc3QgWG49UHJvbWlzZS5yZXNvbHZlKCksZ2V0Tm93PSgpPT5abnx8KFhuLnRoZW4oKCk9PlpuPTApLFpuPURhdGUubm93KCkpO2NvbnN0IGlzTmF0aXZlT249ZT0+MTExPT09ZS5jaGFyQ29kZUF0KDApJiYxMTA9PT1lLmNoYXJDb2RlQXQoMSkmJmUuY2hhckNvZGVBdCgyKT45NiYmZS5jaGFyQ29kZUF0KDIpPDEyMyxwYXRjaFByb3A9KGUsdCxuLHIsbyxzKT0+e2NvbnN0IGk9InN2ZyI9PT1vOyJjbGFzcyI9PT10P2Z1bmN0aW9uKGUsdCxuKXtjb25zdCByPWVbSG5dO3ImJih0PSh0P1t0LC4uLnJdOlsuLi5yXSkuam9pbigiICIpKSxudWxsPT10P2UucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpOm4/ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0KTplLmNsYXNzTmFtZT10fShlLHIsaSk6InN0eWxlIj09PXQ/ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9ZS5zdHlsZSxvPSQobik7bGV0IHM9ITE7aWYobiYmIW8pe2lmKHQpaWYoJCh0KSlmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCI7Iikpe2NvbnN0IHQ9ZS5zbGljZSgwLGUuaW5kZXhPZigiOiIpKS50cmltKCk7bnVsbD09blt0XSYmc2V0U3R5bGUocix0LCIiKX1lbHNlIGZvcihjb25zdCBlIGluIHQpbnVsbD09bltlXSYmc2V0U3R5bGUocixlLCIiKTtmb3IoY29uc3QgZSBpbiBuKSJkaXNwbGF5Ij09PWUmJihzPSEwKSxzZXRTdHlsZShyLGUsbltlXSl9ZWxzZSBpZihvKXtpZih0IT09bil7Y29uc3QgZT1yW0JuXTtlJiYobis9IjsiK2UpLHIuY3NzVGV4dD1uLHM9VW4udGVzdChuKX19ZWxzZSB0JiZlLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKTtEbiBpbiBlJiYoZVtEbl09cz9yLmRpc3BsYXk6IiIsZVtMbl0mJihyLmRpc3BsYXk9Im5vbmUiKSl9KGUsbixyKTpIKHQpP00odCl8fHBhdGNoRXZlbnQoZSx0LDAscixzKTooIi4iPT09dFswXT8odD10LnNsaWNlKDEpLDEpOiJeIj09PXRbMF0/KHQ9dC5zbGljZSgxKSwwKTpmdW5jdGlvbihlLHQsbixyKXtpZihyKXJldHVybiJpbm5lckhUTUwiPT09dHx8InRleHRDb250ZW50Ij09PXR8fCEhKHQgaW4gZSYmaXNOYXRpdmVPbih0KSYmZihuKSk7aWYoInNwZWxsY2hlY2siPT09dHx8ImRyYWdnYWJsZSI9PT10fHwidHJhbnNsYXRlIj09PXR8fCJhdXRvY29ycmVjdCI9PT10KXJldHVybiExO2lmKCJzYW5kYm94Ij09PXQmJiJJRlJBTUUiPT09ZS50YWdOYW1lKXJldHVybiExO2lmKCJmb3JtIj09PXQpcmV0dXJuITE7aWYoImxpc3QiPT09dCYmIklOUFVUIj09PWUudGFnTmFtZSlyZXR1cm4hMTtpZigidHlwZSI9PT10JiYiVEVYVEFSRUEiPT09ZS50YWdOYW1lKXJldHVybiExO2lmKCJ3aWR0aCI9PT10fHwiaGVpZ2h0Ij09PXQpe2NvbnN0IHQ9ZS50YWdOYW1lO2lmKCJJTUciPT09dHx8IlZJREVPIj09PXR8fCJDQU5WQVMiPT09dHx8IlNPVVJDRSI9PT10KXJldHVybiExfWlmKGlzTmF0aXZlT24odCkmJiQobikpcmV0dXJuITE7cmV0dXJuIHQgaW4gZX0oZSx0LHIsaSkpPyhwYXRjaERPTVByb3AoZSx0LHIpLGUudGFnTmFtZS5pbmNsdWRlcygiLSIpfHwidmFsdWUiIT09dCYmImNoZWNrZWQiIT09dCYmInNlbGVjdGVkIiE9PXR8fHBhdGNoQXR0cihlLHQscixpLDAsInZhbHVlIiE9PXQpKTplLl9pc1Z1ZUNFJiYoZnVuY3Rpb24oZSx0KXtjb25zdCBuPWUuX2RlZi5wcm9wcztpZighbilyZXR1cm4hMTtjb25zdCByPUIodCk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5zb21lKGU9PkIoZSk9PT1yKTpPYmplY3Qua2V5cyhuKS5zb21lKGU9PkIoZSk9PT1yKX0oZSx0KXx8ZS5fZGVmLl9fYXN5bmNMb2FkZXImJigvW0EtWl0vLnRlc3QodCl8fCEkKHIpKSk/cGF0Y2hET01Qcm9wKGUsQih0KSxyLDAsdCk6KCJ0cnVlLXZhbHVlIj09PXQ/ZS5fdHJ1ZVZhbHVlPXI6ImZhbHNlLXZhbHVlIj09PXQmJihlLl9mYWxzZVZhbHVlPXIpLHBhdGNoQXR0cihlLHQscixpKSl9O2NvbnN0IFluPXt9O2Z1bmN0aW9uIGRlZmluZUN1c3RvbUVsZW1lbnQoZSx0LG4pe2xldCByPWRlZmluZUNvbXBvbmVudChlLHQpO0UocikmJihyPXcoe30scix0KSk7Y2xhc3MgVnVlQ3VzdG9tRWxlbWVudCBleHRlbmRzIFZ1ZUVsZW1lbnR7Y29uc3RydWN0b3IoZSl7c3VwZXIocixlLG4pfX1yZXR1cm4gVnVlQ3VzdG9tRWxlbWVudC5kZWY9cixWdWVDdXN0b21FbGVtZW50fWNvbnN0IFFuPSJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEVsZW1lbnQ/SFRNTEVsZW1lbnQ6Y2xhc3N7fTtjbGFzcyBWdWVFbGVtZW50IGV4dGVuZHMgUW57Y29uc3RydWN0b3IoZSx0PXt9LG49Y3JlYXRlQXBwKXtzdXBlcigpLHRoaXMuX2RlZj1lLHRoaXMuX3Byb3BzPXQsdGhpcy5fY3JlYXRlQXBwPW4sdGhpcy5faXNWdWVDRT0hMCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2FwcD1udWxsLHRoaXMuX25vbmNlPXRoaXMuX2RlZi5ub25jZSx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5fcmVzb2x2ZWQ9ITEsdGhpcy5fcGF0Y2hpbmc9ITEsdGhpcy5fZGlydHk9ITEsdGhpcy5fbnVtYmVyUHJvcHM9bnVsbCx0aGlzLl9zdHlsZUNoaWxkcmVuPW5ldyBXZWFrU2V0LHRoaXMuX3N0eWxlQW5jaG9ycz1uZXcgV2Vha01hcCx0aGlzLl9vYj1udWxsLHRoaXMuc2hhZG93Um9vdCYmbiE9PWNyZWF0ZUFwcD90aGlzLl9yb290PXRoaXMuc2hhZG93Um9vdDohMSE9PWUuc2hhZG93Um9vdD8odGhpcy5hdHRhY2hTaGFkb3codyh7fSxlLnNoYWRvd1Jvb3RPcHRpb25zLHttb2RlOiJvcGVuIn0pKSx0aGlzLl9yb290PXRoaXMuc2hhZG93Um9vdCk6dGhpcy5fcm9vdD10aGlzfWNvbm5lY3RlZENhbGxiYWNrKCl7aWYoIXRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuO3RoaXMuc2hhZG93Um9vdHx8dGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3BhcnNlU2xvdHMoKSx0aGlzLl9jb25uZWN0ZWQ9ITA7bGV0IGU9dGhpcztmb3IoO2U9ZSYmKGUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGV8fGUuaG9zdCk7KWlmKGUgaW5zdGFuY2VvZiBWdWVFbGVtZW50KXt0aGlzLl9wYXJlbnQ9ZTticmVha310aGlzLl9pbnN0YW5jZXx8KHRoaXMuX3Jlc29sdmVkP3RoaXMuX21vdW50KHRoaXMuX2RlZik6ZSYmZS5fcGVuZGluZ1Jlc29sdmU/dGhpcy5fcGVuZGluZ1Jlc29sdmU9ZS5fcGVuZGluZ1Jlc29sdmUudGhlbigoKT0+e3RoaXMuX3BlbmRpbmdSZXNvbHZlPXZvaWQgMCx0aGlzLl9yZXNvbHZlRGVmKCl9KTp0aGlzLl9yZXNvbHZlRGVmKCkpfV9zZXRQYXJlbnQoZT10aGlzLl9wYXJlbnQpe2UmJih0aGlzLl9pbnN0YW5jZS5wYXJlbnQ9ZS5faW5zdGFuY2UsdGhpcy5faW5oZXJpdFBhcmVudENvbnRleHQoZSkpfV9pbmhlcml0UGFyZW50Q29udGV4dChlPXRoaXMuX3BhcmVudCl7ZSYmdGhpcy5fYXBwJiZPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcy5fYXBwLl9jb250ZXh0LnByb3ZpZGVzLGUuX2luc3RhbmNlLnByb3ZpZGVzKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX2Nvbm5lY3RlZD0hMSxuZXh0VGljaygoKT0+e3RoaXMuX2Nvbm5lY3RlZHx8KHRoaXMuX29iJiYodGhpcy5fb2IuZGlzY29ubmVjdCgpLHRoaXMuX29iPW51bGwpLHRoaXMuX2FwcCYmdGhpcy5fYXBwLnVubW91bnQoKSx0aGlzLl9pbnN0YW5jZSYmKHRoaXMuX2luc3RhbmNlLmNlPXZvaWQgMCksdGhpcy5fYXBwPXRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5fdGVsZXBvcnRUYXJnZXRzJiYodGhpcy5fdGVsZXBvcnRUYXJnZXRzLmNsZWFyKCksdGhpcy5fdGVsZXBvcnRUYXJnZXRzPXZvaWQgMCkpfSl9X3Byb2Nlc3NNdXRhdGlvbnMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLl9zZXRBdHRyKHQuYXR0cmlidXRlTmFtZSl9X3Jlc29sdmVEZWYoKXtpZih0aGlzLl9wZW5kaW5nUmVzb2x2ZSlyZXR1cm47Zm9yKGxldCBlPTA7ZTx0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoO2UrKyl0aGlzLl9zZXRBdHRyKHRoaXMuYXR0cmlidXRlc1tlXS5uYW1lKTt0aGlzLl9vYj1uZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLl9wcm9jZXNzTXV0YXRpb25zLmJpbmQodGhpcykpLHRoaXMuX29iLm9ic2VydmUodGhpcyx7YXR0cmlidXRlczohMH0pO2NvbnN0IHJlc29sdmU9KGUsdD0hMSk9Pnt0aGlzLl9yZXNvbHZlZD0hMCx0aGlzLl9wZW5kaW5nUmVzb2x2ZT12b2lkIDA7Y29uc3R7cHJvcHM6bixzdHlsZXM6cn09ZTtsZXQgbztpZihuJiYheShuKSlmb3IoY29uc3QgZSBpbiBuKXtjb25zdCB0PW5bZV07KHQ9PT1OdW1iZXJ8fHQmJnQudHlwZT09PU51bWJlcikmJihlIGluIHRoaXMuX3Byb3BzJiYodGhpcy5fcHJvcHNbZV09Sih0aGlzLl9wcm9wc1tlXSkpLChvfHwobz1PYmplY3QuY3JlYXRlKG51bGwpKSlbQihlKV09ITApfXRoaXMuX251bWJlclByb3BzPW8sdGhpcy5fcmVzb2x2ZVByb3BzKGUpLHRoaXMuc2hhZG93Um9vdCYmdGhpcy5fYXBwbHlTdHlsZXMociksdGhpcy5fbW91bnQoZSl9LGU9dGhpcy5fZGVmLl9fYXN5bmNMb2FkZXI7ZT90aGlzLl9wZW5kaW5nUmVzb2x2ZT1lKCkudGhlbihlPT57ZS5jb25maWd1cmVBcHA9dGhpcy5fZGVmLmNvbmZpZ3VyZUFwcCxyZXNvbHZlKHRoaXMuX2RlZj1lLCEwKX0pOnJlc29sdmUodGhpcy5fZGVmKX1fbW91bnQoZSl7dGhpcy5fYXBwPXRoaXMuX2NyZWF0ZUFwcChlKSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dCgpLGUuY29uZmlndXJlQXBwJiZlLmNvbmZpZ3VyZUFwcCh0aGlzLl9hcHApLHRoaXMuX2FwcC5fY2VWTm9kZT10aGlzLl9jcmVhdGVWTm9kZSgpLHRoaXMuX2FwcC5tb3VudCh0aGlzLl9yb290KTtjb25zdCB0PXRoaXMuX2luc3RhbmNlJiZ0aGlzLl9pbnN0YW5jZS5leHBvc2VkO2lmKHQpZm9yKGNvbnN0IGUgaW4gdCl2KHRoaXMsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2dldDooKT0+dW5yZWYodFtlXSl9KX1fcmVzb2x2ZVByb3BzKGUpe2NvbnN0e3Byb3BzOnR9PWUsbj15KHQpP3Q6T2JqZWN0LmtleXModHx8e30pO2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKHRoaXMpKSJfIiE9PWVbMF0mJm4uaW5jbHVkZXMoZSkmJnRoaXMuX3NldFByb3AoZSx0aGlzW2VdKTtmb3IoY29uc3QgZSBvZiBuLm1hcChCKSlPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxlLHtnZXQoKXtyZXR1cm4gdGhpcy5fZ2V0UHJvcChlKX0sc2V0KHQpe3RoaXMuX3NldFByb3AoZSx0LCEwLCF0aGlzLl9wYXRjaGluZyl9fSl9X3NldEF0dHIoZSl7aWYoZS5zdGFydHNXaXRoKCJkYXRhLXYtIikpcmV0dXJuO2NvbnN0IHQ9dGhpcy5oYXNBdHRyaWJ1dGUoZSk7bGV0IG49dD90aGlzLmdldEF0dHJpYnV0ZShlKTpZbjtjb25zdCByPUIoZSk7dCYmdGhpcy5fbnVtYmVyUHJvcHMmJnRoaXMuX251bWJlclByb3BzW3JdJiYobj1KKG4pKSx0aGlzLl9zZXRQcm9wKHIsbiwhMSwhMCl9X2dldFByb3AoZSl7cmV0dXJuIHRoaXMuX3Byb3BzW2VdfV9zZXRQcm9wKGUsdCxuPSEwLHI9ITEpe2lmKHQhPT10aGlzLl9wcm9wc1tlXSYmKHRoaXMuX2RpcnR5PSEwLHQ9PT1Zbj9kZWxldGUgdGhpcy5fcHJvcHNbZV06KHRoaXMuX3Byb3BzW2VdPXQsImtleSI9PT1lJiZ0aGlzLl9hcHAmJih0aGlzLl9hcHAuX2NlVk5vZGUua2V5PXQpKSxyJiZ0aGlzLl9pbnN0YW5jZSYmdGhpcy5fdXBkYXRlKCksbikpe2NvbnN0IG49dGhpcy5fb2I7biYmKHRoaXMuX3Byb2Nlc3NNdXRhdGlvbnMobi50YWtlUmVjb3JkcygpKSxuLmRpc2Nvbm5lY3QoKSksITA9PT10P3RoaXMuc2V0QXR0cmlidXRlKHooZSksIiIpOiJzdHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0P3RoaXMuc2V0QXR0cmlidXRlKHooZSksdCsiIik6dHx8dGhpcy5yZW1vdmVBdHRyaWJ1dGUoeihlKSksbiYmbi5vYnNlcnZlKHRoaXMse2F0dHJpYnV0ZXM6ITB9KX19X3VwZGF0ZSgpe2NvbnN0IGU9dGhpcy5fY3JlYXRlVk5vZGUoKTt0aGlzLl9hcHAmJihlLmFwcENvbnRleHQ9dGhpcy5fYXBwLl9jb250ZXh0KSxyZW5kZXIoZSx0aGlzLl9yb290KX1fY3JlYXRlVk5vZGUoKXtjb25zdCBlPXt9O3RoaXMuc2hhZG93Um9vdHx8KGUub25Wbm9kZU1vdW50ZWQ9ZS5vblZub2RlVXBkYXRlZD10aGlzLl9yZW5kZXJTbG90cy5iaW5kKHRoaXMpKTtjb25zdCB0PWNyZWF0ZVZOb2RlKHRoaXMuX2RlZix3KGUsdGhpcy5fcHJvcHMpKTtyZXR1cm4gdGhpcy5faW5zdGFuY2V8fCh0LmNlPWU9Pnt0aGlzLl9pbnN0YW5jZT1lLGUuY2U9dGhpcyxlLmlzQ0U9ITA7Y29uc3QgZGlzcGF0Y2g9KGUsdCk9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGUsRSh0WzBdKT93KHtkZXRhaWw6dH0sdFswXSk6e2RldGFpbDp0fSkpfTtlLmVtaXQ9KGUsLi4udCk9PntkaXNwYXRjaChlLHQpLHooZSkhPT1lJiZkaXNwYXRjaCh6KGUpLHQpfSx0aGlzLl9zZXRQYXJlbnQoKX0pLHR9X2FwcGx5U3R5bGVzKGUsdCxuKXtpZighZSlyZXR1cm47aWYodCl7aWYodD09PXRoaXMuX2RlZnx8dGhpcy5fc3R5bGVDaGlsZHJlbi5oYXModCkpcmV0dXJuO3RoaXMuX3N0eWxlQ2hpbGRyZW4uYWRkKHQpfWNvbnN0IHI9dGhpcy5fbm9uY2Usbz10aGlzLnNoYWRvd1Jvb3Qscz1uP3RoaXMuX2dldFN0eWxlQW5jaG9yKG4pfHx0aGlzLl9nZXRTdHlsZUFuY2hvcih0aGlzLl9kZWYpOnRoaXMuX2dldFJvb3RTdHlsZUluc2VydGlvbkFuY2hvcihvKTtsZXQgaT1udWxsO2ZvcihsZXQgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKXtjb25zdCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ciYmbC5zZXRBdHRyaWJ1dGUoIm5vbmNlIixyKSxsLnRleHRDb250ZW50PWVbYV0sby5pbnNlcnRCZWZvcmUobCxpfHxzKSxpPWwsMD09PWEmJihufHx0aGlzLl9zdHlsZUFuY2hvcnMuc2V0KHRoaXMuX2RlZixsKSx0JiZ0aGlzLl9zdHlsZUFuY2hvcnMuc2V0KHQsbCkpfX1fZ2V0U3R5bGVBbmNob3IoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLl9zdHlsZUFuY2hvcnMuZ2V0KGUpO3JldHVybiB0JiZ0LnBhcmVudE5vZGU9PT10aGlzLnNoYWRvd1Jvb3Q/dDoodCYmdGhpcy5fc3R5bGVBbmNob3JzLmRlbGV0ZShlKSxudWxsKX1fZ2V0Um9vdFN0eWxlSW5zZXJ0aW9uQW5jaG9yKGUpe2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZE5vZGVzLmxlbmd0aDt0Kyspe2NvbnN0IG49ZS5jaGlsZE5vZGVzW3RdO2lmKCEobiBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpKXJldHVybiBufXJldHVybiBudWxsfV9wYXJzZVNsb3RzKCl7Y29uc3QgZT10aGlzLl9zbG90cz17fTtsZXQgdDtmb3IoO3Q9dGhpcy5maXJzdENoaWxkOyl7Y29uc3Qgbj0xPT09dC5ub2RlVHlwZSYmdC5nZXRBdHRyaWJ1dGUoInNsb3QiKXx8ImRlZmF1bHQiOyhlW25dfHwoZVtuXT1bXSkpLnB1c2godCksdGhpcy5yZW1vdmVDaGlsZCh0KX19X3JlbmRlclNsb3RzKCl7Y29uc3QgZT10aGlzLl9nZXRTbG90cygpLHQ9dGhpcy5faW5zdGFuY2UudHlwZS5fX3Njb3BlSWQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZVtuXSxvPXIuZ2V0QXR0cmlidXRlKCJuYW1lIil8fCJkZWZhdWx0IixzPXRoaXMuX3Nsb3RzW29dLGk9ci5wYXJlbnROb2RlO2lmKHMpZm9yKGNvbnN0IGUgb2Ygcyl7aWYodCYmMT09PWUubm9kZVR5cGUpe2NvbnN0IG49dCsiLXMiLHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLDEpO2xldCBvO2ZvcihlLnNldEF0dHJpYnV0ZShuLCIiKTtvPXIubmV4dE5vZGUoKTspby5zZXRBdHRyaWJ1dGUobiwiIil9aS5pbnNlcnRCZWZvcmUoZSxyKX1lbHNlIGZvcig7ci5maXJzdENoaWxkOylpLmluc2VydEJlZm9yZShyLmZpcnN0Q2hpbGQscik7aS5yZW1vdmVDaGlsZChyKX19X2dldFNsb3RzKCl7Y29uc3QgZT1bdGhpc107dGhpcy5fdGVsZXBvcnRUYXJnZXRzJiZlLnB1c2goLi4udGhpcy5fdGVsZXBvcnRUYXJnZXRzKTtjb25zdCB0PW5ldyBTZXQ7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uLnF1ZXJ5U2VsZWN0b3JBbGwoInNsb3QiKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0LmFkZChlW25dKX1yZXR1cm4gQXJyYXkuZnJvbSh0KX1faW5qZWN0Q2hpbGRTdHlsZShlLHQpe3RoaXMuX2FwcGx5U3R5bGVzKGUuc3R5bGVzLGUsdCl9X2JlZ2luUGF0Y2goKXt0aGlzLl9wYXRjaGluZz0hMCx0aGlzLl9kaXJ0eT0hMX1fZW5kUGF0Y2goKXt0aGlzLl9wYXRjaGluZz0hMSx0aGlzLl9kaXJ0eSYmdGhpcy5faW5zdGFuY2UmJnRoaXMuX3VwZGF0ZSgpfV9oYXNTaGFkb3dSb290KCl7cmV0dXJuITEhPT10aGlzLl9kZWYuc2hhZG93Um9vdH1fcmVtb3ZlQ2hpbGRTdHlsZShlKXt9fWZ1bmN0aW9uIHVzZUhvc3QoZSl7Y29uc3QgdD1nZXRDdXJyZW50SW5zdGFuY2UoKSxuPXQmJnQuY2U7cmV0dXJuIG58fG51bGx9Y29uc3QgZXI9bmV3IFdlYWtNYXAsdHI9bmV3IFdlYWtNYXAsbnI9U3ltYm9sKCJfbW92ZUNiIikscnI9U3ltYm9sKCJfZW50ZXJDYiIpLG9yPShlPT4oZGVsZXRlIGUucHJvcHMubW9kZSxlKSkoe25hbWU6IlRyYW5zaXRpb25Hcm91cCIscHJvcHM6dyh7fSxWbix7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSksc2V0dXAoZSx7c2xvdHM6dH0pe2NvbnN0IG49Z2V0Q3VycmVudEluc3RhbmNlKCkscj11c2VUcmFuc2l0aW9uU3RhdGUoKTtsZXQgbyxzO3JldHVybiBMdCgoKT0+e2lmKCFvLmxlbmd0aClyZXR1cm47Y29uc3QgdD1lLm1vdmVDbGFzc3x8YCR7ZS5uYW1lfHwidiJ9LW1vdmVgO2lmKCFmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1lLmNsb25lTm9kZSgpLG89ZVtIbl07byYmby5mb3JFYWNoKGU9PntlLnNwbGl0KC9ccysvKS5mb3JFYWNoKGU9PmUmJnIuY2xhc3NMaXN0LnJlbW92ZShlKSl9KTtuLnNwbGl0KC9ccysvKS5mb3JFYWNoKGU9PmUmJnIuY2xhc3NMaXN0LmFkZChlKSksci5zdHlsZS5kaXNwbGF5PSJub25lIjtjb25zdCBzPTE9PT10Lm5vZGVUeXBlP3Q6dC5wYXJlbnROb2RlO3MuYXBwZW5kQ2hpbGQocik7Y29uc3R7aGFzVHJhbnNmb3JtOml9PWdldFRyYW5zaXRpb25JbmZvKHIpO3JldHVybiBzLnJlbW92ZUNoaWxkKHIpLGl9KG9bMF0uZWwsbi52bm9kZS5lbCx0KSlyZXR1cm4gdm9pZChvPVtdKTtvLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpLG8uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7Y29uc3Qgcj1vLmZpbHRlcihhcHBseVRyYW5zbGF0aW9uKTtmb3JjZVJlZmxvdyhuLnZub2RlLmVsKSxyLmZvckVhY2goZT0+e2NvbnN0IG49ZS5lbCxyPW4uc3R5bGU7YWRkVHJhbnNpdGlvbkNsYXNzKG4sdCksci50cmFuc2Zvcm09ci53ZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249IiI7Y29uc3Qgbz1uW25yXT1lPT57ZSYmZS50YXJnZXQhPT1ufHxlJiYhZS5wcm9wZXJ0eU5hbWUuZW5kc1dpdGgoInRyYW5zZm9ybSIpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixvKSxuW25yXT1udWxsLHJlbW92ZVRyYW5zaXRpb25DbGFzcyhuLHQpKX07bi5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixvKX0pLG89W119KSwoKT0+e2NvbnN0IGk9dG9SYXcoZSksYT1yZXNvbHZlVHJhbnNpdGlvblByb3BzKGkpO2xldCBsPWkudGFnfHxsbjtpZihvPVtdLHMpZm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspe2NvbnN0IHQ9c1tlXTt0LmVsJiZ0LmVsIGluc3RhbmNlb2YgRWxlbWVudCYmKG8ucHVzaCh0KSxzZXRUcmFuc2l0aW9uSG9va3ModCxyZXNvbHZlVHJhbnNpdGlvbkhvb2tzKHQsYSxyLG4pKSxlci5zZXQodCxnZXRQb3NpdGlvbih0LmVsKSkpfXM9dC5kZWZhdWx0P2dldFRyYW5zaXRpb25SYXdDaGlsZHJlbih0LmRlZmF1bHQoKSk6W107Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspe2NvbnN0IHQ9c1tlXTtudWxsIT10LmtleSYmc2V0VHJhbnNpdGlvbkhvb2tzKHQscmVzb2x2ZVRyYW5zaXRpb25Ib29rcyh0LGEscixuKSl9cmV0dXJuIGNyZWF0ZVZOb2RlKGwsbnVsbCxzKX19fSk7ZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMoZSl7Y29uc3QgdD1lLmVsO3RbbnJdJiZ0W25yXSgpLHRbcnJdJiZ0W3JyXSgpfWZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uKGUpe3RyLnNldChlLGdldFBvc2l0aW9uKGUuZWwpKX1mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uKGUpe2NvbnN0IHQ9ZXIuZ2V0KGUpLG49dHIuZ2V0KGUpLHI9dC5sZWZ0LW4ubGVmdCxvPXQudG9wLW4udG9wO2lmKHJ8fG8pe2NvbnN0IHQ9ZS5lbCxuPXQuc3R5bGUscz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBpPTEsYT0xO3JldHVybiB0Lm9mZnNldFdpZHRoJiYoaT1zLndpZHRoL3Qub2Zmc2V0V2lkdGgpLHQub2Zmc2V0SGVpZ2h0JiYoYT1zLmhlaWdodC90Lm9mZnNldEhlaWdodCksTnVtYmVyLmlzRmluaXRlKGkpJiYwIT09aXx8KGk9MSksTnVtYmVyLmlzRmluaXRlKGEpJiYwIT09YXx8KGE9MSksTWF0aC5hYnMoaS0xKTwuMDEmJihpPTEpLE1hdGguYWJzKGEtMSk8LjAxJiYoYT0xKSxuLnRyYW5zZm9ybT1uLndlYmtpdFRyYW5zZm9ybT1gdHJhbnNsYXRlKCR7ci9pfXB4LCR7by9hfXB4KWAsbi50cmFuc2l0aW9uRHVyYXRpb249IjBzIixlfX1mdW5jdGlvbiBnZXRQb3NpdGlvbihlKXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2xlZnQ6dC5sZWZ0LHRvcDp0LnRvcH19Y29uc3QgZ2V0TW9kZWxBc3NpZ25lcj1lPT57Y29uc3QgdD1lLnByb3BzWyJvblVwZGF0ZTptb2RlbFZhbHVlIl18fCExO3JldHVybiB5KHQpP2U9PkkodCxlKTp0fTtmdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQoZSl7Y29uc3QgdD1lLnRhcmdldDt0LmNvbXBvc2luZyYmKHQuY29tcG9zaW5nPSExLHQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImlucHV0IikpKX1jb25zdCBzcj1TeW1ib2woIl9hc3NpZ24iKTtmdW5jdGlvbiBjYXN0VmFsdWUoZSx0LG4pe3JldHVybiB0JiYoZT1lLnRyaW0oKSksbiYmKGU9VShlKSksZX1jb25zdCBpcj17Y3JlYXRlZChlLHttb2RpZmllcnM6e2xhenk6dCx0cmltOm4sbnVtYmVyOnJ9fSxvKXtlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKG8pO2NvbnN0IHM9cnx8by5wcm9wcyYmIm51bWJlciI9PT1vLnByb3BzLnR5cGU7YWRkRXZlbnRMaXN0ZW5lcihlLHQ/ImNoYW5nZSI6ImlucHV0Iix0PT57dC50YXJnZXQuY29tcG9zaW5nfHxlW3NyXShjYXN0VmFsdWUoZS52YWx1ZSxuLHMpKX0pLChufHxzKSYmYWRkRXZlbnRMaXN0ZW5lcihlLCJjaGFuZ2UiLCgpPT57ZS52YWx1ZT1jYXN0VmFsdWUoZS52YWx1ZSxuLHMpfSksdHx8KGFkZEV2ZW50TGlzdGVuZXIoZSwiY29tcG9zaXRpb25zdGFydCIsb25Db21wb3NpdGlvblN0YXJ0KSxhZGRFdmVudExpc3RlbmVyKGUsImNvbXBvc2l0aW9uZW5kIixvbkNvbXBvc2l0aW9uRW5kKSxhZGRFdmVudExpc3RlbmVyKGUsImNoYW5nZSIsb25Db21wb3NpdGlvbkVuZCkpfSxtb3VudGVkKGUse3ZhbHVlOnR9KXtlLnZhbHVlPW51bGw9PXQ/IiI6dH0sYmVmb3JlVXBkYXRlKGUse3ZhbHVlOnQsb2xkVmFsdWU6bixtb2RpZmllcnM6e2xhenk6cix0cmltOm8sbnVtYmVyOnN9fSxpKXtpZihlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKGkpLGUuY29tcG9zaW5nKXJldHVybjtjb25zdCBhPW51bGw9PXQ/IiI6dDtpZigoIXMmJiJudW1iZXIiIT09ZS50eXBlfHwvXjBcZC8udGVzdChlLnZhbHVlKT9lLnZhbHVlOlUoZS52YWx1ZSkpPT09YSlyZXR1cm47Y29uc3QgbD1lLmdldFJvb3ROb2RlKCk7aWYoKGwgaW5zdGFuY2VvZiBEb2N1bWVudHx8bCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpJiZsLmFjdGl2ZUVsZW1lbnQ9PT1lJiYicmFuZ2UiIT09ZS50eXBlKXtpZihyJiZ0PT09bilyZXR1cm47aWYobyYmZS52YWx1ZS50cmltKCk9PT1hKXJldHVybn1lLnZhbHVlPWF9fSxhcj17ZGVlcDohMCxjcmVhdGVkKGUsdCxuKXtlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKG4pLGFkZEV2ZW50TGlzdGVuZXIoZSwiY2hhbmdlIiwoKT0+e2NvbnN0IHQ9ZS5fbW9kZWxWYWx1ZSxuPWdldFZhbHVlKGUpLHI9ZS5jaGVja2VkLG89ZVtzcl07aWYoeSh0KSl7Y29uc3QgZT1RKHQsbikscz0tMSE9PWU7aWYociYmIXMpbyh0LmNvbmNhdChuKSk7ZWxzZSBpZighciYmcyl7Y29uc3Qgbj1bLi4udF07bi5zcGxpY2UoZSwxKSxvKG4pfX1lbHNlIGlmKHgodCkpe2NvbnN0IGU9bmV3IFNldCh0KTtyP2UuYWRkKG4pOmUuZGVsZXRlKG4pLG8oZSl9ZWxzZSBvKGdldENoZWNrYm94VmFsdWUoZSxyKSl9KX0sbW91bnRlZDpzZXRDaGVja2VkLGJlZm9yZVVwZGF0ZShlLHQsbil7ZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihuKSxzZXRDaGVja2VkKGUsdCxuKX19O2Z1bmN0aW9uIHNldENoZWNrZWQoZSx7dmFsdWU6dCxvbGRWYWx1ZTpufSxyKXtsZXQgbztpZihlLl9tb2RlbFZhbHVlPXQseSh0KSlvPVEodCxyLnByb3BzLnZhbHVlKT4tMTtlbHNlIGlmKHgodCkpbz10LmhhcyhyLnByb3BzLnZhbHVlKTtlbHNle2lmKHQ9PT1uKXJldHVybjtvPXEodCxnZXRDaGVja2JveFZhbHVlKGUsITApKX1lLmNoZWNrZWQhPT1vJiYoZS5jaGVja2VkPW8pfWNvbnN0IGxyPXtjcmVhdGVkKGUse3ZhbHVlOnR9LG4pe2UuY2hlY2tlZD1xKHQsbi5wcm9wcy52YWx1ZSksZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihuKSxhZGRFdmVudExpc3RlbmVyKGUsImNoYW5nZSIsKCk9PntlW3NyXShnZXRWYWx1ZShlKSl9KX0sYmVmb3JlVXBkYXRlKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0scil7ZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihyKSx0IT09biYmKGUuY2hlY2tlZD1xKHQsci5wcm9wcy52YWx1ZSkpfX0sY3I9e2RlZXA6ITAsY3JlYXRlZChlLHt2YWx1ZTp0LG1vZGlmaWVyczp7bnVtYmVyOm59fSxyKXtjb25zdCBvPXgodCk7YWRkRXZlbnRMaXN0ZW5lcihlLCJjaGFuZ2UiLCgpPT57Y29uc3QgdD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoZS5vcHRpb25zLGU9PmUuc2VsZWN0ZWQpLm1hcChlPT5uP1UoZ2V0VmFsdWUoZSkpOmdldFZhbHVlKGUpKTtlW3NyXShlLm11bHRpcGxlP28/bmV3IFNldCh0KTp0OnRbMF0pLGUuX2Fzc2lnbmluZz0hMCxuZXh0VGljaygoKT0+e2UuX2Fzc2lnbmluZz0hMX0pfSksZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihyKX0sbW91bnRlZChlLHt2YWx1ZTp0fSl7c2V0U2VsZWN0ZWQoZSx0KX0sYmVmb3JlVXBkYXRlKGUsdCxuKXtlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKG4pfSx1cGRhdGVkKGUse3ZhbHVlOnR9KXtlLl9hc3NpZ25pbmd8fHNldFNlbGVjdGVkKGUsdCl9fTtmdW5jdGlvbiBzZXRTZWxlY3RlZChlLHQpe2NvbnN0IG49ZS5tdWx0aXBsZSxyPXkodCk7aWYoIW58fHJ8fHgodCkpe2ZvcihsZXQgbz0wLHM9ZS5vcHRpb25zLmxlbmd0aDtvPHM7bysrKXtjb25zdCBzPWUub3B0aW9uc1tvXSxpPWdldFZhbHVlKHMpO2lmKG4paWYocil7Y29uc3QgZT10eXBlb2YgaTtzLnNlbGVjdGVkPSJzdHJpbmciPT09ZXx8Im51bWJlciI9PT1lP3Quc29tZShlPT5TdHJpbmcoZSk9PT1TdHJpbmcoaSkpOlEodCxpKT4tMX1lbHNlIHMuc2VsZWN0ZWQ9dC5oYXMoaSk7ZWxzZSBpZihxKGdldFZhbHVlKHMpLHQpKXJldHVybiB2b2lkKGUuc2VsZWN0ZWRJbmRleCE9PW8mJihlLnNlbGVjdGVkSW5kZXg9bykpfW58fC0xPT09ZS5zZWxlY3RlZEluZGV4fHwoZS5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gZ2V0VmFsdWUoZSl7cmV0dXJuIl92YWx1ZSJpbiBlP2UuX3ZhbHVlOmUudmFsdWV9ZnVuY3Rpb24gZ2V0Q2hlY2tib3hWYWx1ZShlLHQpe2NvbnN0IG49dD8iX3RydWVWYWx1ZSI6Il9mYWxzZVZhbHVlIjtyZXR1cm4gbiBpbiBlP2Vbbl06dH1jb25zdCB1cj17Y3JlYXRlZChlLHQsbil7Y2FsbE1vZGVsSG9vayhlLHQsbixudWxsLCJjcmVhdGVkIil9LG1vdW50ZWQoZSx0LG4pe2NhbGxNb2RlbEhvb2soZSx0LG4sbnVsbCwibW91bnRlZCIpfSxiZWZvcmVVcGRhdGUoZSx0LG4scil7Y2FsbE1vZGVsSG9vayhlLHQsbixyLCJiZWZvcmVVcGRhdGUiKX0sdXBkYXRlZChlLHQsbixyKXtjYWxsTW9kZWxIb29rKGUsdCxuLHIsInVwZGF0ZWQiKX19O2Z1bmN0aW9uIHJlc29sdmVEeW5hbWljTW9kZWwoZSx0KXtzd2l0Y2goZSl7Y2FzZSJTRUxFQ1QiOnJldHVybiBjcjtjYXNlIlRFWFRBUkVBIjpyZXR1cm4gaXI7ZGVmYXVsdDpzd2l0Y2godCl7Y2FzZSJjaGVja2JveCI6cmV0dXJuIGFyO2Nhc2UicmFkaW8iOnJldHVybiBscjtkZWZhdWx0OnJldHVybiBpcn19fWZ1bmN0aW9uIGNhbGxNb2RlbEhvb2soZSx0LG4scixvKXtjb25zdCBzPXJlc29sdmVEeW5hbWljTW9kZWwoZS50YWdOYW1lLG4ucHJvcHMmJm4ucHJvcHMudHlwZSlbb107cyYmcyhlLHQsbixyKX1jb25zdCBwcj1bImN0cmwiLCJzaGlmdCIsImFsdCIsIm1ldGEiXSxkcj17c3RvcDplPT5lLnN0b3BQcm9wYWdhdGlvbigpLHByZXZlbnQ6ZT0+ZS5wcmV2ZW50RGVmYXVsdCgpLHNlbGY6ZT0+ZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQsY3RybDplPT4hZS5jdHJsS2V5LHNoaWZ0OmU9PiFlLnNoaWZ0S2V5LGFsdDplPT4hZS5hbHRLZXksbWV0YTplPT4hZS5tZXRhS2V5LGxlZnQ6ZT0+ImJ1dHRvbiJpbiBlJiYwIT09ZS5idXR0b24sbWlkZGxlOmU9PiJidXR0b24iaW4gZSYmMSE9PWUuYnV0dG9uLHJpZ2h0OmU9PiJidXR0b24iaW4gZSYmMiE9PWUuYnV0dG9uLGV4YWN0OihlLHQpPT5wci5zb21lKG49PmVbYCR7bn1LZXlgXSYmIXQuaW5jbHVkZXMobikpfSxmcj17ZXNjOiJlc2NhcGUiLHNwYWNlOiIgIix1cDoiYXJyb3ctdXAiLGxlZnQ6ImFycm93LWxlZnQiLHJpZ2h0OiJhcnJvdy1yaWdodCIsZG93bjoiYXJyb3ctZG93biIsZGVsZXRlOiJiYWNrc3BhY2UifSxocj13KHtwYXRjaFByb3A6cGF0Y2hQcm9wfSwkbik7bGV0IGdyLG1yPSExO2Z1bmN0aW9uIGVuc3VyZVJlbmRlcmVyKCl7cmV0dXJuIGdyfHwoZ3I9Y3JlYXRlUmVuZGVyZXIoaHIpKX1mdW5jdGlvbiBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpe3JldHVybiBncj1tcj9ncjpjcmVhdGVIeWRyYXRpb25SZW5kZXJlcihociksbXI9ITAsZ3J9Y29uc3QgcmVuZGVyPSguLi5lKT0+e2Vuc3VyZVJlbmRlcmVyKCkucmVuZGVyKC4uLmUpfSxjcmVhdGVBcHA9KC4uLmUpPT57Y29uc3QgdD1lbnN1cmVSZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1lPT57Y29uc3Qgcj1ub3JtYWxpemVDb250YWluZXIoZSk7aWYoIXIpcmV0dXJuO2NvbnN0IG89dC5fY29tcG9uZW50O2Yobyl8fG8ucmVuZGVyfHxvLnRlbXBsYXRlfHwoby50ZW1wbGF0ZT1yLmlubmVySFRNTCksMT09PXIubm9kZVR5cGUmJihyLnRleHRDb250ZW50PSIiKTtjb25zdCBzPW4ociwhMSxyZXNvbHZlUm9vdE5hbWVzcGFjZShyKSk7cmV0dXJuIHIgaW5zdGFuY2VvZiBFbGVtZW50JiYoci5yZW1vdmVBdHRyaWJ1dGUoInYtY2xvYWsiKSxyLnNldEF0dHJpYnV0ZSgiZGF0YS12LWFwcCIsIiIpKSxzfSx0fSxjcmVhdGVTU1JBcHA9KC4uLmUpPT57Y29uc3QgdD1lbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1lPT57Y29uc3QgdD1ub3JtYWxpemVDb250YWluZXIoZSk7aWYodClyZXR1cm4gbih0LCEwLHJlc29sdmVSb290TmFtZXNwYWNlKHQpKX0sdH07ZnVuY3Rpb24gcmVzb2x2ZVJvb3ROYW1lc3BhY2UoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50PyJzdmciOiJmdW5jdGlvbiI9PXR5cGVvZiBNYXRoTUxFbGVtZW50JiZlIGluc3RhbmNlb2YgTWF0aE1MRWxlbWVudD8ibWF0aG1sIjp2b2lkIDB9ZnVuY3Rpb24gbm9ybWFsaXplQ29udGFpbmVyKGUpe2lmKCQoZSkpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpfXJldHVybiBlfWxldCB5cj0hMTtjb25zdCBpbml0RGlyZWN0aXZlc0ZvclNTUj0oKT0+e3lyfHwoeXI9ITAsaXIuZ2V0U1NSUHJvcHM9KHt2YWx1ZTplfSk9Pih7dmFsdWU6ZX0pLGxyLmdldFNTUlByb3BzPSh7dmFsdWU6ZX0sdCk9PntpZih0LnByb3BzJiZxKHQucHJvcHMudmFsdWUsZSkpcmV0dXJue2NoZWNrZWQ6ITB9fSxhci5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9LHQpPT57aWYoeShlKSl7aWYodC5wcm9wcyYmUShlLHQucHJvcHMudmFsdWUpPi0xKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKHgoZSkpe2lmKHQucHJvcHMmJmUuaGFzKHQucHJvcHMudmFsdWUpKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKGUpcmV0dXJue2NoZWNrZWQ6ITB9fSx1ci5nZXRTU1JQcm9wcz0oZSx0KT0+e2lmKCJzdHJpbmciIT10eXBlb2YgdC50eXBlKXJldHVybjtjb25zdCBuPXJlc29sdmVEeW5hbWljTW9kZWwodC50eXBlLnRvVXBwZXJDYXNlKCksdC5wcm9wcyYmdC5wcm9wcy50eXBlKTtyZXR1cm4gbi5nZXRTU1JQcm9wcz9uLmdldFNTUlByb3BzKGUsdCk6dm9pZCAwfSxGbi5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9KT0+e2lmKCFlKXJldHVybntzdHlsZTp7ZGlzcGxheToibm9uZSJ9fX0pfSx2cj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsQmFzZVRyYW5zaXRpb246RXQsQmFzZVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnM6eHQsQ29tbWVudDp1bixEZXByZWNhdGlvblR5cGVzOm51bGwsRWZmZWN0U2NvcGU6RWZmZWN0U2NvcGUsRXJyb3JDb2Rlczp7U0VUVVBfRlVOQ1RJT046MCwwOiJTRVRVUF9GVU5DVElPTiIsUkVOREVSX0ZVTkNUSU9OOjEsMToiUkVOREVSX0ZVTkNUSU9OIixOQVRJVkVfRVZFTlRfSEFORExFUjo1LDU6Ik5BVElWRV9FVkVOVF9IQU5ETEVSIixDT01QT05FTlRfRVZFTlRfSEFORExFUjo2LDY6IkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSIixWTk9ERV9IT09LOjcsNzoiVk5PREVfSE9PSyIsRElSRUNUSVZFX0hPT0s6OCw4OiJESVJFQ1RJVkVfSE9PSyIsVFJBTlNJVElPTl9IT09LOjksOToiVFJBTlNJVElPTl9IT09LIixBUFBfRVJST1JfSEFORExFUjoxMCwxMDoiQVBQX0VSUk9SX0hBTkRMRVIiLEFQUF9XQVJOX0hBTkRMRVI6MTEsMTE6IkFQUF9XQVJOX0hBTkRMRVIiLEZVTkNUSU9OX1JFRjoxMiwxMjoiRlVOQ1RJT05fUkVGIixBU1lOQ19DT01QT05FTlRfTE9BREVSOjEzLDEzOiJBU1lOQ19DT01QT05FTlRfTE9BREVSIixTQ0hFRFVMRVI6MTQsMTQ6IlNDSEVEVUxFUiIsQ09NUE9ORU5UX1VQREFURToxNSwxNToiQ09NUE9ORU5UX1VQREFURSIsQVBQX1VOTU9VTlRfQ0xFQU5VUDoxNiwxNjoiQVBQX1VOTU9VTlRfQ0xFQU5VUCJ9LEVycm9yVHlwZVN0cmluZ3M6Um4sRnJhZ21lbnQ6bG4sS2VlcEFsaXZlOlZ0LFJlYWN0aXZlRWZmZWN0OlJlYWN0aXZlRWZmZWN0LFN0YXRpYzpwbixTdXNwZW5zZTphbixUZWxlcG9ydDp3dCxUZXh0OmNuLFRyYWNrT3BUeXBlczp7R0VUOiJnZXQiLEhBUzoiaGFzIixJVEVSQVRFOiJpdGVyYXRlIn0sVHJhbnNpdGlvbjpqbixUcmFuc2l0aW9uR3JvdXA6b3IsVHJpZ2dlck9wVHlwZXM6e1NFVDoic2V0IixBREQ6ImFkZCIsREVMRVRFOiJkZWxldGUiLENMRUFSOiJjbGVhciJ9LFZ1ZUVsZW1lbnQ6VnVlRWxlbWVudCxhc3NlcnROdW1iZXI6ZnVuY3Rpb24oZSx0KXt9LGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nOmNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nLGNhbGxXaXRoRXJyb3JIYW5kbGluZzpjYWxsV2l0aEVycm9ySGFuZGxpbmcsY2FtZWxpemU6QixjYXBpdGFsaXplOkcsY2xvbmVWTm9kZTpjbG9uZVZOb2RlLGNvbXBhdFV0aWxzOm51bGwsY29tcHV0ZWQ6Y29tcHV0ZWQsY3JlYXRlQXBwOmNyZWF0ZUFwcCxjcmVhdGVCbG9jazpjcmVhdGVCbG9jayxjcmVhdGVDb21tZW50Vk5vZGU6ZnVuY3Rpb24oZT0iIix0PSExKXtyZXR1cm4gdD8ob3BlbkJsb2NrKCksY3JlYXRlQmxvY2sodW4sbnVsbCxlKSk6Y3JlYXRlVk5vZGUodW4sbnVsbCxlKX0sY3JlYXRlRWxlbWVudEJsb2NrOmZ1bmN0aW9uKGUsdCxuLHIsbyxzKXtyZXR1cm4gc2V0dXBCbG9jayhjcmVhdGVCYXNlVk5vZGUoZSx0LG4scixvLHMsITApKX0sY3JlYXRlRWxlbWVudFZOb2RlOmNyZWF0ZUJhc2VWTm9kZSxjcmVhdGVIeWRyYXRpb25SZW5kZXJlcjpjcmVhdGVIeWRyYXRpb25SZW5kZXJlcixjcmVhdGVQcm9wc1Jlc3RQcm94eTpmdW5jdGlvbihlLHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSl0LmluY2x1ZGVzKHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZVtyXX0pO3JldHVybiBufSxjcmVhdGVSZW5kZXJlcjpjcmVhdGVSZW5kZXJlcixjcmVhdGVTU1JBcHA6Y3JlYXRlU1NSQXBwLGNyZWF0ZVNsb3RzOmZ1bmN0aW9uKGUsdCl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9dFtuXTtpZih5KHIpKWZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWVbclt0XS5uYW1lXT1yW3RdLmZuO2Vsc2UgciYmKGVbci5uYW1lXT1yLmtleT8oLi4uZSk9Pntjb25zdCB0PXIuZm4oLi4uZSk7cmV0dXJuIHQmJih0LmtleT1yLmtleSksdH06ci5mbil9cmV0dXJuIGV9LGNyZWF0ZVN0YXRpY1ZOb2RlOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1jcmVhdGVWTm9kZShwbixudWxsLGUpO3JldHVybiBuLnN0YXRpY0NvdW50PXQsbn0sY3JlYXRlVGV4dFZOb2RlOmNyZWF0ZVRleHRWTm9kZSxjcmVhdGVWTm9kZTpjcmVhdGVWTm9kZSxjdXN0b21SZWY6Y3VzdG9tUmVmLGRlZmluZUFzeW5jQ29tcG9uZW50OmZ1bmN0aW9uKGUpe2YoZSkmJihlPXtsb2FkZXI6ZX0pO2NvbnN0e2xvYWRlcjp0LGxvYWRpbmdDb21wb25lbnQ6bixlcnJvckNvbXBvbmVudDpyLGRlbGF5Om89MjAwLGh5ZHJhdGU6cyx0aW1lb3V0Omksc3VzcGVuc2libGU6YT0hMCxvbkVycm9yOmx9PWU7bGV0IGMsdT1udWxsLHA9MDtjb25zdCBsb2FkPSgpPT57bGV0IGU7cmV0dXJuIHV8fChlPXU9dCgpLmNhdGNoKGU9PntpZihlPWUgaW5zdGFuY2VvZiBFcnJvcj9lOm5ldyBFcnJvcihTdHJpbmcoZSkpLGwpcmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57bChlLCgpPT50KChwKyssdT1udWxsLGxvYWQoKSkpLCgpPT5uKGUpLHArMSl9KTt0aHJvdyBlfSkudGhlbih0PT5lIT09dSYmdT91Oih0JiYodC5fX2VzTW9kdWxlfHwiTW9kdWxlIj09PXRbU3ltYm9sLnRvU3RyaW5nVGFnXSkmJih0PXQuZGVmYXVsdCksYz10LHQpKSl9O3JldHVybiBkZWZpbmVDb21wb25lbnQoe25hbWU6IkFzeW5jQ29tcG9uZW50V3JhcHBlciIsX19hc3luY0xvYWRlcjpsb2FkLF9fYXN5bmNIeWRyYXRlKGUsdCxuKXtsZXQgcj0hMTsodC5idXx8KHQuYnU9W10pKS5wdXNoKCgpPT5yPSEwKTtjb25zdCBwZXJmb3JtSHlkcmF0ZT0oKT0+e3J8fG4oKX0sbz1zPygpPT57Y29uc3Qgbj1zKHBlcmZvcm1IeWRyYXRlLHQ9PmZ1bmN0aW9uKGUsdCl7aWYoaXNDb21tZW50JDEoZSkmJiJbIj09PWUuZGF0YSl7bGV0IG49MSxyPWUubmV4dFNpYmxpbmc7Zm9yKDtyOyl7aWYoMT09PXIubm9kZVR5cGUpe2lmKCExPT09dChyKSlicmVha31lbHNlIGlmKGlzQ29tbWVudCQxKHIpKWlmKCJdIj09PXIuZGF0YSl7aWYoMD09PS0tbilicmVha31lbHNlIlsiPT09ci5kYXRhJiZuKys7cj1yLm5leHRTaWJsaW5nfX1lbHNlIHQoZSl9KGUsdCkpO24mJih0LmJ1bXx8KHQuYnVtPVtdKSkucHVzaChuKX06cGVyZm9ybUh5ZHJhdGU7Yz9vKCk6bG9hZCgpLnRoZW4oKCk9PiF0LmlzVW5tb3VudGVkJiZvKCkpfSxnZXQgX19hc3luY1Jlc29sdmVkKCl7cmV0dXJuIGN9LHNldHVwKCl7Y29uc3QgZT15bjtpZihtYXJrQXN5bmNCb3VuZGFyeShlKSxjKXJldHVybigpPT5jcmVhdGVJbm5lckNvbXAoYyxlKTtjb25zdCBvbkVycm9yPXQ9Pnt1PW51bGwsaGFuZGxlRXJyb3IodCxlLDEzLCFyKX07aWYoYSYmZS5zdXNwZW5zZXx8Q24pcmV0dXJuIGxvYWQoKS50aGVuKHQ9PigpPT5jcmVhdGVJbm5lckNvbXAodCxlKSkuY2F0Y2goZT0+KG9uRXJyb3IoZSksKCk9PnI/Y3JlYXRlVk5vZGUocix7ZXJyb3I6ZX0pOm51bGwpKTtjb25zdCB0PXJlZighMSkscz1yZWYoKSxsPXJlZighIW8pO3JldHVybiBvJiZzZXRUaW1lb3V0KCgpPT57bC52YWx1ZT0hMX0sbyksbnVsbCE9aSYmc2V0VGltZW91dCgoKT0+e2lmKCF0LnZhbHVlJiYhcy52YWx1ZSl7Y29uc3QgZT1uZXcgRXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHtpfW1zLmApO29uRXJyb3IoZSkscy52YWx1ZT1lfX0saSksbG9hZCgpLnRoZW4oKCk9Pnt0LnZhbHVlPSEwLGUucGFyZW50JiZpc0tlZXBBbGl2ZShlLnBhcmVudC52bm9kZSkmJmUucGFyZW50LnVwZGF0ZSgpfSkuY2F0Y2goZT0+e29uRXJyb3IoZSkscy52YWx1ZT1lfSksKCk9PnQudmFsdWUmJmM/Y3JlYXRlSW5uZXJDb21wKGMsZSk6cy52YWx1ZSYmcj9jcmVhdGVWTm9kZShyLHtlcnJvcjpzLnZhbHVlfSk6biYmIWwudmFsdWU/Y3JlYXRlSW5uZXJDb21wKG4sZSk6dm9pZCAwfX0pfSxkZWZpbmVDb21wb25lbnQ6ZGVmaW5lQ29tcG9uZW50LGRlZmluZUN1c3RvbUVsZW1lbnQ6ZGVmaW5lQ3VzdG9tRWxlbWVudCxkZWZpbmVFbWl0czpmdW5jdGlvbigpe3JldHVybiBudWxsfSxkZWZpbmVFeHBvc2U6ZnVuY3Rpb24oZSl7fSxkZWZpbmVNb2RlbDpmdW5jdGlvbigpe30sZGVmaW5lT3B0aW9uczpmdW5jdGlvbihlKXt9LGRlZmluZVByb3BzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGRlZmluZVNTUkN1c3RvbUVsZW1lbnQ6KGUsdCk9PmRlZmluZUN1c3RvbUVsZW1lbnQoZSx0LGNyZWF0ZVNTUkFwcCksZGVmaW5lU2xvdHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZGV2dG9vbHM6QW4sZWZmZWN0OmZ1bmN0aW9uKGUsdCl7ZS5lZmZlY3QgaW5zdGFuY2VvZiBSZWFjdGl2ZUVmZmVjdCYmKGU9ZS5lZmZlY3QuZm4pO2NvbnN0IG49bmV3IFJlYWN0aXZlRWZmZWN0KGUpO3QmJncobix0KTt0cnl7bi5ydW4oKX1jYXRjaChlKXt0aHJvdyBuLnN0b3AoKSxlfWNvbnN0IHI9bi5ydW4uYmluZChuKTtyZXR1cm4gci5lZmZlY3Q9bixyfSxlZmZlY3RTY29wZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEVmZmVjdFNjb3BlKGUpfSxnZXRDdXJyZW50SW5zdGFuY2U6Z2V0Q3VycmVudEluc3RhbmNlLGdldEN1cnJlbnRTY29wZTpnZXRDdXJyZW50U2NvcGUsZ2V0Q3VycmVudFdhdGNoZXI6ZnVuY3Rpb24oKXtyZXR1cm4gYXR9LGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbjpnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4sZ3VhcmRSZWFjdGl2ZVByb3BzOmd1YXJkUmVhY3RpdmVQcm9wcyxoOmgsaGFuZGxlRXJyb3I6aGFuZGxlRXJyb3IsaGFzSW5qZWN0aW9uQ29udGV4dDpoYXNJbmplY3Rpb25Db250ZXh0LGh5ZHJhdGU6KC4uLmUpPT57ZW5zdXJlSHlkcmF0aW9uUmVuZGVyZXIoKS5oeWRyYXRlKC4uLmUpfSxoeWRyYXRlT25JZGxlOihlPTFlNCk9PnQ9Pntjb25zdCBuPUh0KHQse3RpbWVvdXQ6ZX0pO3JldHVybigpPT5NdChuKX0saHlkcmF0ZU9uSW50ZXJhY3Rpb246KGU9W10pPT4odCxuKT0+eyQoZSkmJihlPVtlXSk7bGV0IHI9ITE7Y29uc3QgZG9IeWRyYXRlPWU9PntyfHwocj0hMCx0ZWFyZG93bigpLHQoKSxlLnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBlLmNvbnN0cnVjdG9yKGUudHlwZSxlKSkpfSx0ZWFyZG93bj0oKT0+e24odD0+e2Zvcihjb25zdCBuIG9mIGUpdC5yZW1vdmVFdmVudExpc3RlbmVyKG4sZG9IeWRyYXRlKX0pfTtyZXR1cm4gbih0PT57Zm9yKGNvbnN0IG4gb2YgZSl0LmFkZEV2ZW50TGlzdGVuZXIobixkb0h5ZHJhdGUse29uY2U6ITB9KX0pLHRlYXJkb3dufSxoeWRyYXRlT25NZWRpYVF1ZXJ5OmU9PnQ9PntpZihlKXtjb25zdCBuPW1hdGNoTWVkaWEoZSk7aWYoIW4ubWF0Y2hlcylyZXR1cm4gbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHQse29uY2U6ITB9KSwoKT0+bi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHQpO3QoKX19LGh5ZHJhdGVPblZpc2libGU6ZT0+KHQsbik9Pntjb25zdCByPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IG4gb2YgZSlpZihuLmlzSW50ZXJzZWN0aW5nKXtyLmRpc2Nvbm5lY3QoKSx0KCk7YnJlYWt9fSxlKTtyZXR1cm4gbihlPT57aWYoZSBpbnN0YW5jZW9mIEVsZW1lbnQpcmV0dXJuIGZ1bmN0aW9uKGUpe2NvbnN0e3RvcDp0LGxlZnQ6bixib3R0b206cixyaWdodDpvfT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHtpbm5lckhlaWdodDpzLGlubmVyV2lkdGg6aX09d2luZG93O3JldHVybih0PjAmJnQ8c3x8cj4wJiZyPHMpJiYobj4wJiZuPGl8fG8+MCYmbzxpKX0oZSk/KHQoKSxyLmRpc2Nvbm5lY3QoKSwhMSk6dm9pZCByLm9ic2VydmUoZSl9KSwoKT0+ci5kaXNjb25uZWN0KCl9LGluaXRDdXN0b21Gb3JtYXR0ZXI6ZnVuY3Rpb24oKXt9LGluaXREaXJlY3RpdmVzRm9yU1NSOmluaXREaXJlY3RpdmVzRm9yU1NSLGluamVjdDppbmplY3QsaXNNZW1vU2FtZTppc01lbW9TYW1lLGlzUHJveHk6aXNQcm94eSxpc1JlYWN0aXZlOmlzUmVhY3RpdmUsaXNSZWFkb25seTppc1JlYWRvbmx5LGlzUmVmOmlzUmVmLGlzUnVudGltZU9ubHk6KCk9PiFibixpc1NoYWxsb3c6aXNTaGFsbG93LGlzVk5vZGU6aXNWTm9kZSQyLG1hcmtSYXc6bWFya1JhdyxtZXJnZURlZmF1bHRzOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1ub3JtYWxpemVQcm9wc09yRW1pdHMoZSk7Zm9yKGNvbnN0IGUgaW4gdCl7aWYoZS5zdGFydHNXaXRoKCJfX3NraXAiKSljb250aW51ZTtsZXQgcj1uW2VdO3I/eShyKXx8ZihyKT9yPW5bZV09e3R5cGU6cixkZWZhdWx0OnRbZV19OnIuZGVmYXVsdD10W2VdOm51bGw9PT1yJiYocj1uW2VdPXtkZWZhdWx0OnRbZV19KSxyJiZ0W2BfX3NraXBfJHtlfWBdJiYoci5za2lwRmFjdG9yeT0hMCl9cmV0dXJuIG59LG1lcmdlTW9kZWxzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnQ/eShlKSYmeSh0KT9lLmNvbmNhdCh0KTp3KHt9LG5vcm1hbGl6ZVByb3BzT3JFbWl0cyhlKSxub3JtYWxpemVQcm9wc09yRW1pdHModCkpOmV8fHR9LG1lcmdlUHJvcHM6bWVyZ2VQcm9wcyxuZXh0VGljazpuZXh0VGljayxub2RlT3BzOiRuLG5vcm1hbGl6ZUNsYXNzOk8sbm9ybWFsaXplUHJvcHM6dGUsbm9ybWFsaXplU3R5bGU6TixvbkFjdGl2YXRlZDpvbkFjdGl2YXRlZCxvbkJlZm9yZU1vdW50Omp0LG9uQmVmb3JlVW5tb3VudDpGdCxvbkJlZm9yZVVwZGF0ZTpEdCxvbkRlYWN0aXZhdGVkOm9uRGVhY3RpdmF0ZWQsb25FcnJvckNhcHR1cmVkOm9uRXJyb3JDYXB0dXJlZCxvbk1vdW50ZWQ6SXQsb25SZW5kZXJUcmFja2VkOnp0LG9uUmVuZGVyVHJpZ2dlcmVkOld0LG9uU2NvcGVEaXNwb3NlOmZ1bmN0aW9uKGUsdD0hMSl7RWUmJkVlLmNsZWFudXBzLnB1c2goZSl9LG9uU2VydmVyUHJlZmV0Y2g6VXQsb25Vbm1vdW50ZWQ6QnQsb25VcGRhdGVkOkx0LG9uV2F0Y2hlckNsZWFudXA6b25XYXRjaGVyQ2xlYW51cCxvcGVuQmxvY2s6b3BlbkJsb2NrLHBhdGNoUHJvcDpwYXRjaFByb3AscG9wU2NvcGVJZDpmdW5jdGlvbigpe2J0PW51bGx9LHByb3ZpZGU6cHJvdmlkZSxwcm94eVJlZnM6cHJveHlSZWZzLHB1c2hTY29wZUlkOmZ1bmN0aW9uKGUpe2J0PWV9LHF1ZXVlUG9zdEZsdXNoQ2I6cXVldWVQb3N0Rmx1c2hDYixyZWFjdGl2ZTpyZWFjdGl2ZSxyZWFkb25seTpyZWFkb25seSxyZWY6cmVmLHJlZ2lzdGVyUnVudGltZUNvbXBpbGVyOmZ1bmN0aW9uKGUpe2JuPWUsa249ZT0+e2UucmVuZGVyLl9yYyYmKGUud2l0aFByb3h5PW5ldyBQcm94eShlLmN0eCxadCkpfX0scmVuZGVyOnJlbmRlcixyZW5kZXJMaXN0OmZ1bmN0aW9uKGUsdCxuLHIpe2xldCBvO2NvbnN0IHM9biYmbltyXSxpPXkoZSk7aWYoaXx8JChlKSl7bGV0IG49ITEscj0hMTtpJiZpc1JlYWN0aXZlKGUpJiYobj0haXNTaGFsbG93KGUpLHI9aXNSZWFkb25seShlKSxlPXNoYWxsb3dSZWFkQXJyYXkoZSkpLG89bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspb1tpXT10KG4/cj90b1JlYWRvbmx5KHRvUmVhY3RpdmUoZVtpXSkpOnRvUmVhY3RpdmUoZVtpXSk6ZVtpXSxpLHZvaWQgMCxzJiZzW2ldKX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSl7bz1uZXcgQXJyYXkoZSk7Zm9yKGxldCBuPTA7bjxlO24rKylvW25dPXQobisxLG4sdm9pZCAwLHMmJnNbbl0pfWVsc2UgaWYoYihlKSlpZihlW1N5bWJvbC5pdGVyYXRvcl0pbz1BcnJheS5mcm9tKGUsKGUsbik9PnQoZSxuLHZvaWQgMCxzJiZzW25dKSk7ZWxzZXtjb25zdCBuPU9iamVjdC5rZXlzKGUpO289bmV3IEFycmF5KG4ubGVuZ3RoKTtmb3IobGV0IHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9bltyXTtvW3JdPXQoZVtpXSxpLHIscyYmc1tyXSl9fWVsc2Ugbz1bXTtyZXR1cm4gbiYmKG5bcl09byksb30scmVuZGVyU2xvdDpmdW5jdGlvbihlLHQsbj17fSxyLG8pe2lmKF90LmNlfHxfdC5wYXJlbnQmJmlzQXN5bmNXcmFwcGVyKF90LnBhcmVudCkmJl90LnBhcmVudC5jZSl7Y29uc3QgZT1PYmplY3Qua2V5cyhuKS5sZW5ndGg+MDtyZXR1cm4iZGVmYXVsdCIhPT10JiYobi5uYW1lPXQpLG9wZW5CbG9jaygpLGNyZWF0ZUJsb2NrKGxuLG51bGwsW2NyZWF0ZVZOb2RlKCJzbG90IixuLHImJnIoKSldLGU/LTI6NjQpfWxldCBzPWVbdF07cyYmcy5fYyYmKHMuX2Q9ITEpLG9wZW5CbG9jaygpO2NvbnN0IGk9cyYmZW5zdXJlVmFsaWRWTm9kZSQxKHMobikpLGE9bi5rZXl8fGkmJmkua2V5LGw9Y3JlYXRlQmxvY2sobG4se2tleTooYSYmIWcoYSk/YTpgXyR7dH1gKSsoIWkmJnI/Il9mYiI6IiIpfSxpfHwocj9yKCk6W10pLGkmJjE9PT1lLl8/NjQ6LTIpO3JldHVybiFvJiZsLnNjb3BlSWQmJihsLnNsb3RTY29wZUlkcz1bbC5zY29wZUlkKyItcyJdKSxzJiZzLl9jJiYocy5fZD0hMCksbH0scmVzb2x2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe3JldHVybiByZXNvbHZlQXNzZXQocXQsZSwhMCx0KXx8ZX0scmVzb2x2ZURpcmVjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4gcmVzb2x2ZUFzc2V0KCJkaXJlY3RpdmVzIixlKX0scmVzb2x2ZUR5bmFtaWNDb21wb25lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQoZSk/cmVzb2x2ZUFzc2V0KHF0LGUsITEpfHxlOmV8fEt0fSxyZXNvbHZlRmlsdGVyOm51bGwscmVzb2x2ZVRyYW5zaXRpb25Ib29rczpyZXNvbHZlVHJhbnNpdGlvbkhvb2tzLHNldEJsb2NrVHJhY2tpbmc6c2V0QmxvY2tUcmFja2luZyxzZXREZXZ0b29sc0hvb2s6c2V0RGV2dG9vbHNIb29rLHNldFRyYW5zaXRpb25Ib29rczpzZXRUcmFuc2l0aW9uSG9va3Msc2hhbGxvd1JlYWN0aXZlOnNoYWxsb3dSZWFjdGl2ZSxzaGFsbG93UmVhZG9ubHk6c2hhbGxvd1JlYWRvbmx5LHNoYWxsb3dSZWY6c2hhbGxvd1JlZixzc3JDb250ZXh0S2V5Omt0LHNzclV0aWxzOnhuLHN0b3A6ZnVuY3Rpb24oZSl7ZS5lZmZlY3Quc3RvcCgpfSx0b0Rpc3BsYXlTdHJpbmc6bmUsdG9IYW5kbGVyS2V5OlcsdG9IYW5kbGVyczpmdW5jdGlvbihlLHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSluW3QmJi9bQS1aXS8udGVzdChyKT9gb246JHtyfWA6VyhyKV09ZVtyXTtyZXR1cm4gbn0sdG9SYXc6dG9SYXcsdG9SZWY6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBpc1JlZihlKT9lOmYoZSk/bmV3IEdldHRlclJlZkltcGwoZSk6YihlKSYmYXJndW1lbnRzLmxlbmd0aD4xP3Byb3BlcnR5VG9SZWYoZSx0LG4pOnJlZihlKX0sdG9SZWZzOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9eShlKT9uZXcgQXJyYXkoZS5sZW5ndGgpOnt9O2Zvcihjb25zdCBuIGluIGUpdFtuXT1wcm9wZXJ0eVRvUmVmKGUsbik7cmV0dXJuIHR9LHRvVmFsdWU6dG9WYWx1ZSx0cmFuc2Zvcm1WTm9kZUFyZ3M6ZnVuY3Rpb24oZSl7fSx0cmlnZ2VyUmVmOmZ1bmN0aW9uKGUpe2UuZGVwJiZlLmRlcC50cmlnZ2VyKCl9LHVucmVmOnVucmVmLHVzZUF0dHJzOmZ1bmN0aW9uKCl7cmV0dXJuIGdldENvbnRleHQoKS5hdHRyc30sdXNlQ3NzTW9kdWxlOmZ1bmN0aW9uKGU9IiRzdHlsZSIpe3tjb25zdCB0PWdldEN1cnJlbnRJbnN0YW5jZSgpO2lmKCF0KXJldHVybiBtO2NvbnN0IG49dC50eXBlLl9fY3NzTW9kdWxlcztpZighbilyZXR1cm4gbTtjb25zdCByPW5bZV07cmV0dXJuIHJ8fG19fSx1c2VDc3NWYXJzOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudEluc3RhbmNlKCk7aWYoIXQpcmV0dXJuO2NvbnN0IG49dC51dD0obj1lKHQucHJveHkpKT0+e0FycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtdi1vd25lcj0iJHt0LnVpZH0iXWApKS5mb3JFYWNoKGU9PnNldFZhcnNPbk5vZGUoZSxuKSl9LHNldFZhcnM9KCk9Pntjb25zdCByPWUodC5wcm94eSk7dC5jZT9zZXRWYXJzT25Ob2RlKHQuY2Uscik6c2V0VmFyc09uVk5vZGUodC5zdWJUcmVlLHIpLG4ocil9O0R0KCgpPT57cXVldWVQb3N0Rmx1c2hDYihzZXRWYXJzKX0pLEl0KCgpPT57d2F0Y2goc2V0VmFycyxQLHtmbHVzaDoicG9zdCJ9KTtjb25zdCBlPW5ldyBNdXRhdGlvbk9ic2VydmVyKHNldFZhcnMpO2Uub2JzZXJ2ZSh0LnN1YlRyZWUuZWwucGFyZW50Tm9kZSx7Y2hpbGRMaXN0OiEwfSksQnQoKCk9PmUuZGlzY29ubmVjdCgpKX0pfSx1c2VIb3N0OnVzZUhvc3QsdXNlSWQ6ZnVuY3Rpb24oKXtjb25zdCBlPWdldEN1cnJlbnRJbnN0YW5jZSgpO3JldHVybiBlPyhlLmFwcENvbnRleHQuY29uZmlnLmlkUHJlZml4fHwidiIpKyItIitlLmlkc1swXStlLmlkc1sxXSsrOiIifSx1c2VNb2RlbDpmdW5jdGlvbihlLHQsbj1tKXtjb25zdCByPWdldEN1cnJlbnRJbnN0YW5jZSgpLG89Qih0KSxzPXoodCksaT1nZXRNb2RlbE1vZGlmaWVycyhlLG8pLGE9Y3VzdG9tUmVmKChpLGEpPT57bGV0IGwsYyx1PW07cmV0dXJuIHdhdGNoU3luY0VmZmVjdCgoKT0+e2NvbnN0IHQ9ZVtvXTtrKGwsdCkmJihsPXQsYSgpKX0pLHtnZXQ6KCk9PihpKCksbi5nZXQ/bi5nZXQobCk6bCksc2V0KGUpe2NvbnN0IGk9bi5zZXQ/bi5zZXQoZSk6ZTtpZighKGsoaSxsKXx8dSE9PW0mJmsoZSx1KSkpcmV0dXJuO2NvbnN0IHA9ci52bm9kZS5wcm9wcztwJiYodCBpbiBwfHxvIGluIHB8fHMgaW4gcCkmJihgb25VcGRhdGU6JHt0fWBpbiBwfHxgb25VcGRhdGU6JHtvfWBpbiBwfHxgb25VcGRhdGU6JHtzfWBpbiBwKXx8KGw9ZSxhKCkpLHIuZW1pdChgdXBkYXRlOiR7dH1gLGkpLGsoZSxpKSYmayhlLHUpJiYhayhpLGMpJiZhKCksdT1lLGM9aX19fSk7cmV0dXJuIGFbU3ltYm9sLml0ZXJhdG9yXT0oKT0+e2xldCBlPTA7cmV0dXJue25leHQ6KCk9PmU8Mj97dmFsdWU6ZSsrP2l8fG06YSxkb25lOiExfTp7ZG9uZTohMH19fSxhfSx1c2VTU1JDb250ZXh0OnVzZVNTUkNvbnRleHQsdXNlU2hhZG93Um9vdDpmdW5jdGlvbigpe2NvbnN0IGU9dXNlSG9zdCgpO3JldHVybiBlJiZlLnNoYWRvd1Jvb3R9LHVzZVNsb3RzOmZ1bmN0aW9uKCl7cmV0dXJuIGdldENvbnRleHQoKS5zbG90c30sdXNlVGVtcGxhdGVSZWY6ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50SW5zdGFuY2UoKSxuPXNoYWxsb3dSZWYobnVsbCk7aWYodCl7Y29uc3Qgcj10LnJlZnM9PT1tP3QucmVmcz17fTp0LnJlZnM7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZSx7ZW51bWVyYWJsZTohMCxnZXQ6KCk9Pm4udmFsdWUsc2V0OmU9Pm4udmFsdWU9ZX0pfXJldHVybiBufSx1c2VUcmFuc2l0aW9uU3RhdGU6dXNlVHJhbnNpdGlvblN0YXRlLHZNb2RlbENoZWNrYm94OmFyLHZNb2RlbER5bmFtaWM6dXIsdk1vZGVsUmFkaW86bHIsdk1vZGVsU2VsZWN0OmNyLHZNb2RlbFRleHQ6aXIsdlNob3c6Rm4sdmVyc2lvbjp3bix3YXJuOlRuLHdhdGNoOndhdGNoLHdhdGNoRWZmZWN0OndhdGNoRWZmZWN0LHdhdGNoUG9zdEVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBkb1dhdGNoKGUsbnVsbCx7Zmx1c2g6InBvc3QifSl9LHdhdGNoU3luY0VmZmVjdDp3YXRjaFN5bmNFZmZlY3Qsd2l0aEFzeW5jQ29udGV4dDpmdW5jdGlvbihlKXtjb25zdCB0PWdldEN1cnJlbnRJbnN0YW5jZSgpLG49Q247bGV0IHI9ZSgpO3Vuc2V0Q3VycmVudEluc3RhbmNlKCksbiYmX24oITEpO2NvbnN0IHJlc3RvcmU9KCk9PntzZXRDdXJyZW50SW5zdGFuY2UodCksbiYmX24oITApfSxjbGVhbnVwPSgpPT57Z2V0Q3VycmVudEluc3RhbmNlKCkhPT10JiZ0LnNjb3BlLm9mZigpLHVuc2V0Q3VycmVudEluc3RhbmNlKCksbiYmX24oITEpfTtyZXR1cm4gVihyKSYmKHI9ci5jYXRjaChlPT57dGhyb3cgcmVzdG9yZSgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oY2xlYW51cCkpLGV9KSksW3IsKCk9PntyZXN0b3JlKCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihjbGVhbnVwKX1dfSx3aXRoQ3R4OndpdGhDdHgsd2l0aERlZmF1bHRzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGx9LHdpdGhEaXJlY3RpdmVzOmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09PV90KXJldHVybiBlO2NvbnN0IG49Z2V0Q29tcG9uZW50UHVibGljSW5zdGFuY2UoX3QpLHI9ZS5kaXJzfHwoZS5kaXJzPVtdKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0W28scyxpLGE9bV09dFtlXTtvJiYoZihvKSYmKG89e21vdW50ZWQ6byx1cGRhdGVkOm99KSxvLmRlZXAmJnRyYXZlcnNlKHMpLHIucHVzaCh7ZGlyOm8saW5zdGFuY2U6bix2YWx1ZTpzLG9sZFZhbHVlOnZvaWQgMCxhcmc6aSxtb2RpZmllcnM6YX0pKX1yZXR1cm4gZX0sd2l0aEtleXM6KGUsdCk9Pntjb25zdCBuPWUuX3dpdGhLZXlzfHwoZS5fd2l0aEtleXM9e30pLHI9dC5qb2luKCIuIik7cmV0dXJuIG5bcl18fChuW3JdPW49PntpZighKCJrZXkiaW4gbikpcmV0dXJuO2NvbnN0IHI9eihuLmtleSk7cmV0dXJuIHQuc29tZShlPT5lPT09cnx8ZnJbZV09PT1yKT9lKG4pOnZvaWQgMH0pfSx3aXRoTWVtbzpmdW5jdGlvbihlLHQsbixyKXtjb25zdCBvPW5bcl07aWYobyYmaXNNZW1vU2FtZShvLGUpKXJldHVybiBvO2NvbnN0IHM9dCgpO3JldHVybiBzLm1lbW89ZS5zbGljZSgpLHMuY2FjaGVJbmRleD1yLG5bcl09c30sd2l0aE1vZGlmaWVyczooZSx0KT0+e2lmKCFlKXJldHVybiBlO2NvbnN0IG49ZS5fd2l0aE1vZHN8fChlLl93aXRoTW9kcz17fSkscj10LmpvaW4oIi4iKTtyZXR1cm4gbltyXXx8KG5bcl09KG4sLi4ucik9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgcj1kclt0W2VdXTtpZihyJiZyKG4sdCkpcmV0dXJufXJldHVybiBlKG4sLi4ucil9KX0sd2l0aFNjb3BlSWQ6ZT0+d2l0aEN0eH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxWdWVSZXNvbHZlcj0oZSx0KT0+aXNSZWYodCk/dG9WYWx1ZSh0KTp0LF9yPSJ1c2VoZWFkIjtmdW5jdGlvbiBpbmplY3RIZWFkKCl7aWYoaGFzSW5qZWN0aW9uQ29udGV4dCgpKXtjb25zdCBlPWluamVjdChfcik7aWYoZSlyZXR1cm4gZX10aHJvdyBuZXcgRXJyb3IoInVzZUhlYWQoKSB3YXMgY2FsbGVkIHdpdGhvdXQgcHJvdmlkZSBjb250ZXh0LCBlbnN1cmUgeW91IGNhbGwgaXQgdGhyb3VnaCB0aGUgc2V0dXAoKSBmdW5jdGlvbi4iKX1mdW5jdGlvbiB1c2VIZWFkKGUsdD17fSl7Y29uc3Qgbj10LmhlYWR8fGluamVjdEhlYWQoKTtyZXR1cm4gbi5zc3I/bi5wdXNoKGV8fHt9LHQpOmZ1bmN0aW9uKGUsdCxuPXt9KXtjb25zdCByPXJlZighMSk7bGV0IG87d2F0Y2hFZmZlY3QoKCk9Pntjb25zdCBzPXIudmFsdWU/e306d2Fsa1Jlc29sdmVyKHQsVnVlUmVzb2x2ZXIpO28/by5wYXRjaChzKTpvPWUucHVzaChzLG4pfSk7Z2V0Q3VycmVudEluc3RhbmNlKCkmJihGdCgoKT0+e28uZGlzcG9zZSgpfSksb25EZWFjdGl2YXRlZCgoKT0+e3IudmFsdWU9ITB9KSxvbkFjdGl2YXRlZCgoKT0+e3IudmFsdWU9ITF9KSk7cmV0dXJuIG99KG4sZSx0KX1mdW5jdGlvbiBjcmVhdGVIZWFkKGU9e30pe2NvbnN0IHQ9ZnVuY3Rpb24oZT17fSl7Y29uc3QgdD1jcmVhdGVVbmhlYWQoey4uLmUsZG9jdW1lbnQ6ITEscHJvcFJlc29sdmVyczpbLi4uZS5wcm9wUmVzb2x2ZXJzfHxbXSwoZSx0KT0+ZSYmZS5zdGFydHNXaXRoKCJvbiIpJiYiZnVuY3Rpb24iPT10eXBlb2YgdD9gdGhpcy5kYXRhc2V0LiR7ZX1maXJlZCA9IHRydWVgOnRdLGluaXQ6W2UuZGlzYWJsZURlZmF1bHRzP3ZvaWQgMDp7aHRtbEF0dHJzOntsYW5nOiJlbiJ9LG1ldGE6W3tjaGFyc2V0OiJ1dGYtOCJ9LHtuYW1lOiJ2aWV3cG9ydCIsY29udGVudDoid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEifV19LC4uLmUuaW5pdHx8W11dfSk7cmV0dXJuIHQuX3NzclBheWxvYWQ9e30sdC51c2Uoe2tleToic2VydmVyIixob29rczp7InRhZ3M6cmVzb2x2ZSI6ZnVuY3Rpb24oZSl7Y29uc3Qgbj1lLnRhZ01hcC5nZXQoInRpdGxlIikscj1lLnRhZ01hcC5nZXQoInRpdGxlVGVtcGxhdGUiKTtsZXQgbz17dGl0bGU6InNlcnZlciI9PT1uPy5tb2RlP3QuX3RpdGxlOnZvaWQgMCx0aXRsZVRlbXBsYXRlOiJzZXJ2ZXIiPT09cj8ubW9kZT90Ll90aXRsZVRlbXBsYXRlOnZvaWQgMH07T2JqZWN0LmtleXModC5fc3NyUGF5bG9hZHx8e30pLmxlbmd0aD4wJiYobz17Li4udC5fc3NyUGF5bG9hZCwuLi5vfSksT2JqZWN0LnZhbHVlcyhvKS5zb21lKEJvb2xlYW4pJiZlLnRhZ3MucHVzaCh7dGFnOiJzY3JpcHQiLGlubmVySFRNTDpKU09OLnN0cmluZ2lmeShvKSxwcm9wczp7aWQ6InVuaGVhZDpwYXlsb2FkIix0eXBlOiJhcHBsaWNhdGlvbi9qc29uIn19KX19fSksdH0oey4uLmUscHJvcFJlc29sdmVyczpbVnVlUmVzb2x2ZXJdfSk7cmV0dXJuIHQuaW5zdGFsbD1mdW5jdGlvbihlKXtyZXR1cm57aW5zdGFsbCh0KXt0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiR1bmhlYWQ9ZSx0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRoZWFkPWUsdC5wcm92aWRlKF9yLGUpfX0uaW5zdGFsbH0odCksdH1jb25zdCBicj1SKCIsa2V5LHJlZixpbm5lckhUTUwsdGV4dENvbnRlbnQscmVmX2tleSxyZWZfZm9yIik7ZnVuY3Rpb24gc3NyUmVuZGVyQXR0cnMoZSx0KXtsZXQgbj0iIjtmb3IobGV0IHIgaW4gZSl7aWYoYnIocil8fEgocil8fCJ0ZXh0YXJlYSI9PT10JiYidmFsdWUiPT09cnx8ci5zdGFydHNXaXRoKCIuIikpY29udGludWU7Y29uc3Qgbz1lW3JdO3Iuc3RhcnRzV2l0aCgiXiIpJiYocj1yLnNsaWNlKDEpKSwiY2xhc3MiPT09cj9uKz1gIGNsYXNzPSIke3NzclJlbmRlckNsYXNzKG8pfSJgOiJzdHlsZSI9PT1yP24rPWAgc3R5bGU9IiR7c3NyUmVuZGVyU3R5bGUobyl9ImA6ImNsYXNzTmFtZSI9PT1yP251bGwhPW8mJihuKz1gIGNsYXNzPSIke3JlKFN0cmluZyhvKSl9ImApOm4rPXNzclJlbmRlckR5bmFtaWNBdHRyKHIsbyx0KX1yZXR1cm4gbn1mdW5jdGlvbiBzc3JSZW5kZXJEeW5hbWljQXR0cihlLHQsbil7aWYoIWFlKHQpKXJldHVybiIiO2NvbnN0IHI9biYmKG4uaW5kZXhPZigiLSIpPjB8fGxlKG4pKT9lOmNlW2VdfHxlLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHVlKHIpP1godCk/YCAke3J9YDoiIjpwZShyKT8iIj09PXQ/YCAke3J9YDpgICR7cn09IiR7cmUodCl9ImA6KGNvbnNvbGUud2FybihgW0B2dWUvc2VydmVyLXJlbmRlcmVyXSBTa2lwcGVkIHJlbmRlcmluZyB1bnNhZmUgYXR0cmlidXRlIG5hbWU6ICR7cn1gKSwiIil9ZnVuY3Rpb24gc3NyUmVuZGVyQXR0cihlLHQpe3JldHVybiBhZSh0KT9gICR7ZX09IiR7cmUodCl9ImA6IiJ9ZnVuY3Rpb24gc3NyUmVuZGVyQ2xhc3MoZSl7cmV0dXJuIHJlKE8oZSkpfWZ1bmN0aW9uIHNzclJlbmRlclN0eWxlKGUpe2lmKCFlKXJldHVybiIiO2lmKCQoZSkpcmV0dXJuIHJlKGUpO2NvbnN0IHQ9TihmdW5jdGlvbihlKXtpZigheShlKSYmYihlKSl7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBpbiBlKW4uc3RhcnRzV2l0aCgiOi0tIik/dFtuLnNsaWNlKDEpXT1lZShlW25dKTp0W25dPWVbbl07cmV0dXJuIHR9cmV0dXJuIGV9KGUpKTtyZXR1cm4gcmUoaWUodCkpfWZ1bmN0aW9uIHNzclJlbmRlckNvbXBvbmVudChlLHQ9bnVsbCxuPW51bGwscj1udWxsLG8pe3JldHVybiByZW5kZXJDb21wb25lbnRWTm9kZShjcmVhdGVWTm9kZShlLHQsbikscixvKX1jb25zdHtlbnN1cmVWYWxpZFZOb2RlOmtyfT14bjtmdW5jdGlvbiBzc3JSZW5kZXJTbG90KGUsdCxuLHIsbyxzLGkpe28oIlx4M2MhLS1bLS1ceDNlIiksZnVuY3Rpb24oZSx0LG4scixvLHMsaSl7Y29uc3QgYT1lW3RdO2lmKGEpe2NvbnN0IGU9W10sdD1hKG4sdD0+e2UucHVzaCh0KX0scyxpPyIgIitpOiIiKTtpZih5KHQpKXtjb25zdCBlPWtyKHQpO2U/cmVuZGVyVk5vZGVDaGlsZHJlbihvLGUscyxpKTpyJiZyKCl9ZWxzZXtsZXQgdD0hMDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylpZighaXNDb21tZW50KGVbbl0pKXt0PSExO2JyZWFrfWlmKHQpciYmcigpO2Vsc2V7bGV0IHQ9MCxuPWUubGVuZ3RoO2lmKHQ8bilmb3IobGV0IHI9dDtyPG47cisrKW8oZVtyXSl9fX1lbHNlIHImJnIoKX0oZSx0LG4scixvLHMsaSksbygiXHgzYyEtLV0tLVx4M2UiKX1jb25zdCBDcj0vXjwhLS1bXHNcU10qLS0+JC8sU3I9LzwhLS1bXl0qPy0tPi9nbTtmdW5jdGlvbiBpc0NvbW1lbnQoZSl7cmV0dXJuISgic3RyaW5nIiE9dHlwZW9mIGV8fCFDci50ZXN0KGUpKSYmKGUubGVuZ3RoPD04fHwhZS5yZXBsYWNlKFNyLCIiKS50cmltKCkpfWZ1bmN0aW9uIHNzckludGVycG9sYXRlKGUpe3JldHVybiByZShuZShlKSl9e2NvbnN0IGU9aigpLHJlZ2lzdGVyR2xvYmFsU2V0dGVyPSh0LG4pPT57bGV0IHI7cmV0dXJuKHI9ZVt0XSl8fChyPWVbdF09W10pLHIucHVzaChuKSxlPT57ci5sZW5ndGg+MT9yLmZvckVhY2godD0+dChlKSk6clswXShlKX19O3JlZ2lzdGVyR2xvYmFsU2V0dGVyKCJfX1ZVRV9JTlNUQU5DRV9TRVRURVJTX18iLGU9PmUpLHJlZ2lzdGVyR2xvYmFsU2V0dGVyKCJfX1ZVRV9TU1JfU0VUVEVSU19fIixlPT5lKX1mdW5jdGlvbiBzc3JSZW5kZXJMaXN0KGUsdCl7aWYoeShlKXx8JChlKSlmb3IobGV0IG49MCxyPWUubGVuZ3RoO248cjtuKyspdChlW25dLG4pO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKWZvcihsZXQgbj0wO248ZTtuKyspdChuKzEsbik7ZWxzZSBpZihiKGUpKWlmKGVbU3ltYm9sLml0ZXJhdG9yXSl7Y29uc3Qgbj1BcnJheS5mcm9tKGUpO2ZvcihsZXQgZT0wLHI9bi5sZW5ndGg7ZTxyO2UrKyl0KG5bZV0sZSl9ZWxzZXtjb25zdCBuPU9iamVjdC5rZXlzKGUpO2ZvcihsZXQgcj0wLG89bi5sZW5ndGg7cjxvO3IrKyl7Y29uc3Qgbz1uW3JdO3QoZVtvXSxvLHIpfX19YXN5bmMgZnVuY3Rpb24gc3NyUmVuZGVyU3VzcGVuc2UoZSx7ZGVmYXVsdDp0fSl7dD90KCk6ZSgiXHgzYyEtLS0tXHgzZSIpfWNvbnN0e2NyZWF0ZUNvbXBvbmVudEluc3RhbmNlOndyLHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTpUcixzZXR1cENvbXBvbmVudDpScixyZW5kZXJDb21wb25lbnRSb290OkFyLG5vcm1hbGl6ZVZOb2RlOnhyLHB1c2hXYXJuaW5nQ29udGV4dDpFcixwb3BXYXJuaW5nQ29udGV4dDpQcn09eG47ZnVuY3Rpb24gY3JlYXRlQnVmZmVyKCl7bGV0IGU9ITE7Y29uc3QgdD1bXTtyZXR1cm57Z2V0QnVmZmVyOigpPT50LHB1c2gobil7Y29uc3Qgcj0kKG4pO2UmJnI/dFt0Lmxlbmd0aC0xXSs9bjoodC5wdXNoKG4pLGU9ciwoVihuKXx8eShuKSYmbi5oYXNBc3luYykmJih0Lmhhc0FzeW5jPSEwKSl9fX1mdW5jdGlvbiByZW5kZXJDb21wb25lbnRWTm9kZShlLHQ9bnVsbCxuKXtjb25zdCByPWUuY29tcG9uZW50PXdyKGUsdCxudWxsKSxvPVJyKHIsITApLHM9VihvKTtsZXQgaT1yLnNwO2lmKHN8fGkpe3JldHVybiBQcm9taXNlLnJlc29sdmUobykudGhlbigoKT0+e2lmKHMmJihpPXIuc3ApLGkpcmV0dXJuIFByb21pc2UuYWxsKGkubWFwKGU9PmUuY2FsbChyLnByb3h5KSkpfSkuY2F0Y2goUCkudGhlbigoKT0+cmVuZGVyQ29tcG9uZW50U3ViVHJlZShyLG4pKX1yZXR1cm4gcmVuZGVyQ29tcG9uZW50U3ViVHJlZShyLG4pfWZ1bmN0aW9uIHJlbmRlckNvbXBvbmVudFN1YlRyZWUoZSx0KXtjb25zdCBuPWUudHlwZSx7Z2V0QnVmZmVyOnIscHVzaDpvfT1jcmVhdGVCdWZmZXIoKTtpZihmKG4pKXtsZXQgcj1BcihlKTtpZighbi5wcm9wcylmb3IoY29uc3QgdCBpbiBlLmF0dHJzKXQuc3RhcnRzV2l0aCgiZGF0YS12LSIpJiYoKHIucHJvcHN8fChyLnByb3BzPXt9KSlbdF09IiIpO3JlbmRlclZOb2RlKG8sZS5zdWJUcmVlPXIsZSx0KX1lbHNle2UucmVuZGVyJiZlLnJlbmRlciE9PVB8fGUuc3NyUmVuZGVyfHxuLnNzclJlbmRlcnx8ISQobi50ZW1wbGF0ZSl8fChuLnNzclJlbmRlcj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiT24tdGhlLWZseSB0ZW1wbGF0ZSBjb21waWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBFU00gYnVpbGQgb2YgQHZ1ZS9zZXJ2ZXItcmVuZGVyZXIuIEFsbCB0ZW1wbGF0ZXMgbXVzdCBiZSBwcmUtY29tcGlsZWQgaW50byByZW5kZXIgZnVuY3Rpb25zLiIpfShuLnRlbXBsYXRlKSk7Y29uc3Qgcj1lLnNzclJlbmRlcnx8bi5zc3JSZW5kZXI7aWYocil7bGV0IG49ITEhPT1lLmluaGVyaXRBdHRycz9lLmF0dHJzOnZvaWQgMCxzPSExLGk9ZTtmb3IoOzspe2NvbnN0IGU9aS52bm9kZS5zY29wZUlkO2UmJihzfHwobj17Li4ubn0scz0hMCksbltlXT0iIik7Y29uc3QgdD1pLnBhcmVudDtpZighdHx8IXQuc3ViVHJlZXx8dC5zdWJUcmVlIT09aS52bm9kZSlicmVhaztpPXR9aWYodCl7c3x8KG49ey4uLm59KTtjb25zdCBlPXQudHJpbSgpLnNwbGl0KCIgIik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspbltlW3RdXT0iIn1jb25zdCBhPVRyKGUpO3RyeXtyKGUucHJveHksbyxlLG4sZS5wcm9wcyxlLnNldHVwU3RhdGUsZS5kYXRhLGUuY3R4KX1maW5hbGx5e1RyKGEpfX1lbHNlIGUucmVuZGVyJiZlLnJlbmRlciE9PVA/cmVuZGVyVk5vZGUobyxlLnN1YlRyZWU9QXIoZSksZSx0KToobi5uYW1lfHxuLl9fZmlsZSxvKCJceDNjIS0tLS1ceDNlIikpfXJldHVybiByKCl9ZnVuY3Rpb24gcmVuZGVyVk5vZGUoZSx0LG4scil7Y29uc3R7dHlwZTpvLHNoYXBlRmxhZzpzLGNoaWxkcmVuOmksZGlyczphLHByb3BzOmx9PXQ7c3dpdGNoKGEmJih0LnByb3BzPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPVtdO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBvPW5bdF0se2Rpcjp7Z2V0U1NSUHJvcHM6c319PW87aWYocyl7Y29uc3QgdD1zKG8sZSk7dCYmci5wdXNoKHQpfX1yZXR1cm4gbWVyZ2VQcm9wcyh0fHx7fSwuLi5yKX0odCxsLGEpKSxvKXtjYXNlIGNuOmUocmUoaSkpO2JyZWFrO2Nhc2UgdW46ZShpP2BceDNjIS0tJHtvZShpKX0tLVx4M2VgOiJceDNjIS0tLS1ceDNlIik7YnJlYWs7Y2FzZSBwbjplKGkpO2JyZWFrO2Nhc2UgbG46dC5zbG90U2NvcGVJZHMmJihyPShyP3IrIiAiOiIiKSt0LnNsb3RTY29wZUlkcy5qb2luKCIgIikpLGUoIlx4M2MhLS1bLS1ceDNlIikscmVuZGVyVk5vZGVDaGlsZHJlbihlLGksbixyKSxlKCJceDNjIS0tXS0tXHgzZSIpO2JyZWFrO2RlZmF1bHQ6MSZzP2Z1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89dC50eXBlO2xldHtwcm9wczpzLGNoaWxkcmVuOmksc2hhcGVGbGFnOmEsc2NvcGVJZDpsfT10LGM9YDwke299YDtzJiYoYys9c3NyUmVuZGVyQXR0cnMocyxvKSk7bCYmKGMrPWAgJHtsfWApO2xldCB1PW4scD10O2Zvcig7dSYmcD09PXUuc3ViVHJlZTspcD11LnZub2RlLHAuc2NvcGVJZCYmKGMrPWAgJHtwLnNjb3BlSWR9YCksdT11LnBhcmVudDtyJiYoYys9YCAke3J9YCk7aWYoZShjKyI+IiksIXNlKG8pKXtsZXQgdD0hMTtzJiYocy5pbm5lckhUTUw/KHQ9ITAsZShzLmlubmVySFRNTCkpOnMudGV4dENvbnRlbnQ/KHQ9ITAsZShyZShzLnRleHRDb250ZW50KSkpOiJ0ZXh0YXJlYSI9PT1vJiZzLnZhbHVlJiYodD0hMCxlKHJlKHMudmFsdWUpKSkpLHR8fCg4JmE/ZShyZShpKSk6MTYmYSYmcmVuZGVyVk5vZGVDaGlsZHJlbihlLGksbixyKSksZShgPC8ke299PmApfX0oZSx0LG4scik6NiZzP2UocmVuZGVyQ29tcG9uZW50Vk5vZGUodCxuLHIpKTo2NCZzP2Z1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89dC5wcm9wcyYmdC5wcm9wcy50byxzPXQucHJvcHMmJnQucHJvcHMuZGlzYWJsZWQ7aWYoIW8pcmV0dXJuW107aWYoISQobykpcmV0dXJuW107IWZ1bmN0aW9uKGUsdCxuLHIsbyl7ZSgiXHgzYyEtLXRlbGVwb3J0IHN0YXJ0LS1ceDNlIik7Y29uc3Qgcz1vLmFwcENvbnRleHQucHJvdmlkZXNba3RdLGk9cy5fX3RlbGVwb3J0QnVmZmVyc3x8KHMuX190ZWxlcG9ydEJ1ZmZlcnM9e30pLGE9aVtuXXx8KGlbbl09W10pLGw9YS5sZW5ndGg7bGV0IGM7aWYocil0KGUpLGM9Ilx4M2MhLS10ZWxlcG9ydCBzdGFydCBhbmNob3ItLVx4M2VceDNjIS0tdGVsZXBvcnQgYW5jaG9yLS1ceDNlIjtlbHNle2NvbnN0e2dldEJ1ZmZlcjplLHB1c2g6bn09Y3JlYXRlQnVmZmVyKCk7bigiXHgzYyEtLXRlbGVwb3J0IHN0YXJ0IGFuY2hvci0tXHgzZSIpLHQobiksbigiXHgzYyEtLXRlbGVwb3J0IGFuY2hvci0tXHgzZSIpLGM9ZSgpfWEuc3BsaWNlKGwsMCxjKSxlKCJceDNjIS0tdGVsZXBvcnQgZW5kLS1ceDNlIil9KGUsZT0+e3JlbmRlclZOb2RlQ2hpbGRyZW4oZSx0LmNoaWxkcmVuLG4scil9LG8sc3x8IiI9PT1zLG4pfShlLHQsbixyKToxMjgmcyYmcmVuZGVyVk5vZGUoZSx0LnNzQ29udGVudCxuLHIpfX1mdW5jdGlvbiByZW5kZXJWTm9kZUNoaWxkcmVuKGUsdCxuLHIpe2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXJlbmRlclZOb2RlKGUseHIodFtvXSksbixyKX1jb25zdHtpc1ZOb2RlOiRyfT14bjtmdW5jdGlvbiBuZXN0ZWRVbnJvbGxCdWZmZXIoZSx0LG4pe2lmKCFlLmhhc0FzeW5jKXJldHVybiB0K3Vucm9sbEJ1ZmZlclN5bmMkMShlKTtsZXQgcj10O2ZvcihsZXQgdD1uO3Q8ZS5sZW5ndGg7dCs9MSl7Y29uc3Qgbj1lW3RdO2lmKCQobikpe3IrPW47Y29udGludWV9aWYoVihuKSlyZXR1cm4gbi50aGVuKG49PihlW3RdPW4sbmVzdGVkVW5yb2xsQnVmZmVyKGUscix0KSkpO2NvbnN0IG89bmVzdGVkVW5yb2xsQnVmZmVyKG4sciwwKTtpZihWKG8pKXJldHVybiBvLnRoZW4obj0+KGVbdF09bixuZXN0ZWRVbnJvbGxCdWZmZXIoZSwiIix0KSkpO3I9b31yZXR1cm4gcn1mdW5jdGlvbiB1bnJvbGxCdWZmZXIkMShlKXtyZXR1cm4gbmVzdGVkVW5yb2xsQnVmZmVyKGUsIiIsMCl9ZnVuY3Rpb24gdW5yb2xsQnVmZmVyU3luYyQxKGUpe2xldCB0PSIiO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgcj1lW25dOyQocik/dCs9cjp0Kz11bnJvbGxCdWZmZXJTeW5jJDEocil9cmV0dXJuIHR9YXN5bmMgZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoZSx0PXt9KXtpZigkcihlKSlyZXR1cm4gcmVuZGVyVG9TdHJpbmcoY3JlYXRlQXBwKHtyZW5kZXI6KCk9PmV9KSx0KTtjb25zdCBuPWNyZWF0ZVZOb2RlKGUuX2NvbXBvbmVudCxlLl9wcm9wcyk7bi5hcHBDb250ZXh0PWUuX2NvbnRleHQsZS5wcm92aWRlKGt0LHQpO2NvbnN0IHI9YXdhaXQgcmVuZGVyQ29tcG9uZW50Vk5vZGUobiksbz1hd2FpdCB1bnJvbGxCdWZmZXIkMShyKTtpZihhd2FpdCBhc3luYyBmdW5jdGlvbihlKXtpZihlLl9fdGVsZXBvcnRCdWZmZXJzKXtlLnRlbGVwb3J0cz1lLnRlbGVwb3J0c3x8e307Zm9yKGNvbnN0IHQgaW4gZS5fX3RlbGVwb3J0QnVmZmVycyllLnRlbGVwb3J0c1t0XT1hd2FpdCB1bnJvbGxCdWZmZXIkMShhd2FpdCBQcm9taXNlLmFsbChbZS5fX3RlbGVwb3J0QnVmZmVyc1t0XV0pKX19KHQpLHQuX193YXRjaGVySGFuZGxlcylmb3IoY29uc3QgZSBvZiB0Ll9fd2F0Y2hlckhhbmRsZXMpZSgpO3JldHVybiBvfWNvbnN0e2lzVk5vZGU6T3J9PXhuO2luaXREaXJlY3RpdmVzRm9yU1NSKCk7Y29uc3QgTnI9e21ldGE6W3tuYW1lOiJ2aWV3cG9ydCIsY29udGVudDoid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEifSx7Y2hhcnNldDoidXRmLTgifV0sbGluazpbXSxzdHlsZTpbXSxzY3JpcHQ6W10sbm9zY3JpcHQ6W10saHRtbEF0dHJzOntsYW5nOiJlbiJ9fSxIcj17aWQ6InRlbGVwb3J0cyJ9LE1yPXtpZDoiX19udXh0LWxvYWRlciJ9LFZyPWA8ZGl2JHtwcm9wc1RvU3RyaW5nKHtpZDoiX19udXh0IixjbGFzczoiaXNvbGF0ZSJ9KX0+YCxqcj0iPC9kaXY+IixnZXRQcmVjb21wdXRlZERlcGVuZGVuY2llcz0oKT0+aW1wb3J0KCIuLi9idWlsZC9jbGllbnQucHJlY29tcHV0ZWQubWpzIikudGhlbihlPT5lLmRlZmF1bHR8fGUpLnRoZW4oZT0+ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmUpLElyPWxhenlDYWNoZWRGdW5jdGlvbihhc3luYygpPT57Y29uc3QgZT1hd2FpdCBpbXBvcnQoIi4uL2J1aWxkL3NlcnZlci5tanMiKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFVfSkudGhlbihlPT5lLmRlZmF1bHR8fGUpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiU2VydmVyIGJ1bmRsZSBpcyBub3QgYXZhaWxhYmxlIik7cmV0dXJuIGNyZWF0ZVJlbmRlcmVyJDEoZSx7cHJlY29tcHV0ZWQ6YXdhaXQgZ2V0UHJlY29tcHV0ZWREZXBlbmRlbmNpZXMoKSxtYW5pZmVzdDp2b2lkIDAscmVuZGVyVG9TdHJpbmc6YXN5bmMgZnVuY3Rpb24oZSx0KXtjb25zdCBuPWF3YWl0IHJlbmRlclRvU3RyaW5nKGUsdCk7cmV0dXJuIFZyK24ranJ9LGJ1aWxkQXNzZXRzVVJMOm59KX0pLERyPWxhenlDYWNoZWRGdW5jdGlvbihhc3luYygpPT57Y29uc3QgZT1hd2FpdCBnZXRQcmVjb21wdXRlZERlcGVuZGVuY2llcygpLHI9YXdhaXQgaW1wb3J0KCIuLi92aXJ0dWFsL192aXJ0dWFsX3NwYS10ZW1wbGF0ZS5tanMiKS50aGVuKGU9PmUudGVtcGxhdGUpLmNhdGNoKCgpPT4iIikudGhlbihlPT57e2NvbnN0IHQ9YDxkaXYke3Byb3BzVG9TdHJpbmcoTXIpfT5gO3JldHVybiBWcitqcisoZT90K2UrIjwvZGl2PiI6IiIpfX0pLG89Y3JlYXRlUmVuZGVyZXIkMSgoKT0+KCk9Pnt9LHtwcmVjb21wdXRlZDplLG1hbmlmZXN0OnZvaWQgMCxyZW5kZXJUb1N0cmluZzooKT0+cixidWlsZEFzc2V0c1VSTDpufSkscz1hd2FpdCBvLnJlbmRlclRvU3RyaW5nKHt9KTtyZXR1cm57cmVuZGVyZXJDb250ZXh0Om8ucmVuZGVyZXJDb250ZXh0LHJlbmRlclRvU3RyaW5nOmU9Pntjb25zdCBuPXQoZS5ldmVudCk7cmV0dXJuIGUubW9kdWxlc3x8PW5ldyBTZXQsZS5wYXlsb2FkLnNlcnZlclJlbmRlcmVkPSExLGUuY29uZmlnPXtwdWJsaWM6bi5wdWJsaWMsYXBwOm4uYXBwfSxQcm9taXNlLnJlc29sdmUocyl9fX0pO2Z1bmN0aW9uIGxhenlDYWNoZWRGdW5jdGlvbihlKXtsZXQgdD1udWxsO3JldHVybigpPT4obnVsbD09PXQmJih0PWUoKS5jYXRjaChlPT57dGhyb3cgdD1udWxsLGV9KSksdCl9Y29uc3QgTHI9bGF6eUNhY2hlZEZ1bmN0aW9uKCgpPT5pbXBvcnQoIi4uL2J1aWxkL3N0eWxlcy5tanMiKS50aGVuKGU9PmUuZGVmYXVsdHx8ZSkpLEZyPXsiPCI6IlxcdTAwM0MiLCJcXCI6IlxcXFwiLCJcYiI6IlxcYiIsIlxmIjoiXFxmIiwiXG4iOiJcXG4iLCJcciI6IlxcciIsIlx0IjoiXFx0IiwiXHUyMDI4IjoiXFx1MjAyOCIsIlx1MjAyOSI6IlxcdTIwMjkifTtjbGFzcyBEZXZhbHVlRXJyb3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlKSx0aGlzLm5hbWU9IkRldmFsdWVFcnJvciIsdGhpcy5wYXRoPXQuam9pbigiIiksdGhpcy52YWx1ZT1uLHRoaXMucm9vdD1yfX1mdW5jdGlvbiBpc19wcmltaXRpdmUoZSl7cmV0dXJuIE9iamVjdChlKSE9PWV9Y29uc3QgQnI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkuc29ydCgpLmpvaW4oIlwwIik7ZnVuY3Rpb24gaXNfcGxhaW5fb2JqZWN0KGUpe2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiB0PT09T2JqZWN0LnByb3RvdHlwZXx8bnVsbD09PXR8fG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCl8fE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLnNvcnQoKS5qb2luKCJcMCIpPT09QnJ9ZnVuY3Rpb24gZ2V0X3R5cGUoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKX1mdW5jdGlvbiBnZXRfZXNjYXBlZF9jaGFyKGUpe3N3aXRjaChlKXtjYXNlJyInOnJldHVybidcXCInO2Nhc2UiPCI6cmV0dXJuIlxcdTAwM0MiO2Nhc2UiXFwiOnJldHVybiJcXFxcIjtjYXNlIlxuIjpyZXR1cm4iXFxuIjtjYXNlIlxyIjpyZXR1cm4iXFxyIjtjYXNlIlx0IjpyZXR1cm4iXFx0IjtjYXNlIlxiIjpyZXR1cm4iXFxiIjtjYXNlIlxmIjpyZXR1cm4iXFxmIjtjYXNlIlx1MjAyOCI6cmV0dXJuIlxcdTIwMjgiO2Nhc2UiXHUyMDI5IjpyZXR1cm4iXFx1MjAyOSI7ZGVmYXVsdDpyZXR1cm4gZTwiICI/YFxcdSR7ZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg0LCIwIil9YDoiIn19ZnVuY3Rpb24gc3RyaW5naWZ5X3N0cmluZyhlKXtsZXQgdD0iIixuPTA7Y29uc3Qgcj1lLmxlbmd0aDtmb3IobGV0IG89MDtvPHI7bys9MSl7Y29uc3Qgcj1nZXRfZXNjYXBlZF9jaGFyKGVbb10pO3ImJih0Kz1lLnNsaWNlKG4sbykrcixuPW8rMSl9cmV0dXJuYCIkezA9PT1uP2U6dCtlLnNsaWNlKG4pfSJgfWZ1bmN0aW9uIGVudW1lcmFibGVfc3ltYm9scyhlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKS5maWx0ZXIodD0+T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGUpfWNvbnN0IFVyPS9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qJC87ZnVuY3Rpb24gc3RyaW5naWZ5X2tleShlKXtyZXR1cm4gVXIudGVzdChlKT8iLiIrZToiWyIrSlNPTi5zdHJpbmdpZnkoZSkrIl0ifWZ1bmN0aW9uIGlzX3ZhbGlkX2FycmF5X2luZGV4KGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4hMTtpZihlLmxlbmd0aD4xJiY0OD09PWUuY2hhckNvZGVBdCgwKSlyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQodCk7aWYobjw0OHx8bj41NylyZXR1cm4hMX1jb25zdCB0PStlO3JldHVybiEodD49MioqMzItMSkmJiEodDwwKX1mdW5jdGlvbiB2YWxpZF9hcnJheV9pbmRpY2VzKGUpe2NvbnN0IHQ9T2JqZWN0LmtleXMoZSk7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MCYmIWlzX3ZhbGlkX2FycmF5X2luZGV4KHRbbl0pO24tLSk7cmV0dXJuIHQubGVuZ3RoPW4rMSx0fWNvbnN0IFdyPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXyQiLHpyPS9bPFxiXGZcblxyXHRcMFx1MjAyOFx1MjAyOV0vZyxxcj0vXig/OmRvfGlmfGlufGZvcnxpbnR8bGV0fG5ld3x0cnl8dmFyfGJ5dGV8Y2FzZXxjaGFyfGVsc2V8ZW51bXxnb3RvfGxvbmd8dGhpc3x2b2lkfHdpdGh8YXdhaXR8YnJlYWt8Y2F0Y2h8Y2xhc3N8Y29uc3R8ZmluYWx8ZmxvYXR8c2hvcnR8c3VwZXJ8dGhyb3d8d2hpbGV8eWllbGR8ZGVsZXRlfGRvdWJsZXxleHBvcnR8aW1wb3J0fG5hdGl2ZXxyZXR1cm58c3dpdGNofHRocm93c3x0eXBlb2Z8Ym9vbGVhbnxkZWZhdWx0fGV4dGVuZHN8ZmluYWxseXxwYWNrYWdlfHByaXZhdGV8YWJzdHJhY3R8Y29udGludWV8ZGVidWdnZXJ8ZnVuY3Rpb258dm9sYXRpbGV8aW50ZXJmYWNlfHByb3RlY3RlZHx0cmFuc2llbnR8aW1wbGVtZW50c3xpbnN0YW5jZW9mfHN5bmNocm9uaXplZCkkLztmdW5jdGlvbiB1bmV2YWwoZSx0KXtjb25zdCBuPW5ldyBNYXAscj1bXSxvPW5ldyBNYXA7IWZ1bmN0aW9uIHdhbGsodCl7aWYoIWlzX3ByaW1pdGl2ZSh0KSl7aWYobi5oYXModCkpcmV0dXJuIHZvaWQgbi5zZXQodCxuLmdldCh0KSsxKTtpZihuLnNldCh0LDEpLCJmdW5jdGlvbiI9PXR5cGVvZiB0KXRocm93IG5ldyBEZXZhbHVlRXJyb3IoIkNhbm5vdCBzdHJpbmdpZnkgYSBmdW5jdGlvbiIscix0LGUpO3N3aXRjaChnZXRfdHlwZSh0KSl7Y2FzZSJOdW1iZXIiOmNhc2UiQmlnSW50IjpjYXNlIlN0cmluZyI6Y2FzZSJCb29sZWFuIjpjYXNlIkRhdGUiOmNhc2UiUmVnRXhwIjpjYXNlIlVSTCI6Y2FzZSJVUkxTZWFyY2hQYXJhbXMiOmNhc2UiQXJyYXlCdWZmZXIiOmNhc2UiVGVtcG9yYWwuRHVyYXRpb24iOmNhc2UiVGVtcG9yYWwuSW5zdGFudCI6Y2FzZSJUZW1wb3JhbC5QbGFpbkRhdGUiOmNhc2UiVGVtcG9yYWwuUGxhaW5UaW1lIjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZVRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5Nb250aERheSI6Y2FzZSJUZW1wb3JhbC5QbGFpblllYXJNb250aCI6Y2FzZSJUZW1wb3JhbC5ab25lZERhdGVUaW1lIjpyZXR1cm47Y2FzZSJBcnJheSI6dC5mb3JFYWNoKChlLHQpPT57ci5wdXNoKGBbJHt0fV1gKSx3YWxrKGUpLHIucG9wKCl9KTticmVhaztjYXNlIlNldCI6QXJyYXkuZnJvbSh0KS5mb3JFYWNoKHdhbGspO2JyZWFrO2Nhc2UiTWFwIjpmb3IoY29uc3RbZSxuXW9mIHQpci5wdXNoKGAuZ2V0KCR7aXNfcHJpbWl0aXZlKGUpP3N0cmluZ2lmeV9wcmltaXRpdmUkMShlKToiLi4uIn0pYCksd2FsayhuKSxyLnBvcCgpO2JyZWFrO2Nhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQmlnSW50NjRBcnJheSI6Y2FzZSJCaWdVaW50NjRBcnJheSI6cmV0dXJuIHZvaWQgd2Fsayh0LmJ1ZmZlcik7ZGVmYXVsdDppZighaXNfcGxhaW5fb2JqZWN0KHQpKXRocm93IG5ldyBEZXZhbHVlRXJyb3IoIkNhbm5vdCBzdHJpbmdpZnkgYXJiaXRyYXJ5IG5vbi1QT0pPcyIscix0LGUpO2lmKGVudW1lcmFibGVfc3ltYm9scyh0KS5sZW5ndGg+MCl0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IFBPSk9zIHdpdGggc3ltYm9saWMga2V5cyIscix0LGUpO2Zvcihjb25zdCBuIG9mIE9iamVjdC5rZXlzKHQpKXtpZigiX19wcm90b19fIj09PW4pdGhyb3cgbmV3IERldmFsdWVFcnJvcigiQ2Fubm90IHN0cmluZ2lmeSBvYmplY3RzIHdpdGggX19wcm90b19fIGtleXMiLHIsdCxlKTtyLnB1c2goc3RyaW5naWZ5X2tleShuKSksd2Fsayh0W25dKSxyLnBvcCgpfX19fShlKTtjb25zdCBzPW5ldyBNYXA7ZnVuY3Rpb24gc3RyaW5naWZ5KGUpe2lmKHMuaGFzKGUpKXJldHVybiBzLmdldChlKTtpZihpc19wcmltaXRpdmUoZSkpcmV0dXJuIHN0cmluZ2lmeV9wcmltaXRpdmUkMShlKTtpZihvLmhhcyhlKSlyZXR1cm4gby5nZXQoZSk7Y29uc3QgdD1nZXRfdHlwZShlKTtzd2l0Y2godCl7Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjpjYXNlIkJvb2xlYW4iOnJldHVybmBPYmplY3QoJHtzdHJpbmdpZnkoZS52YWx1ZU9mKCkpfSlgO2Nhc2UiUmVnRXhwIjpyZXR1cm5gbmV3IFJlZ0V4cCgke3N0cmluZ2lmeV9zdHJpbmcoZS5zb3VyY2UpfSwgIiR7ZS5mbGFnc30iKWA7Y2FzZSJEYXRlIjpyZXR1cm5gbmV3IERhdGUoJHtlLmdldFRpbWUoKX0pYDtjYXNlIlVSTCI6cmV0dXJuYG5ldyBVUkwoJHtzdHJpbmdpZnlfc3RyaW5nKGUudG9TdHJpbmcoKSl9KWA7Y2FzZSJVUkxTZWFyY2hQYXJhbXMiOnJldHVybmBuZXcgVVJMU2VhcmNoUGFyYW1zKCR7c3RyaW5naWZ5X3N0cmluZyhlLnRvU3RyaW5nKCkpfSlgO2Nhc2UiQXJyYXkiOntsZXQgdD0hMSxuPSJbIjtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrPTEpaWYocj4wJiYobis9IiwiKSxPYmplY3QuaGFzT3duKGUscikpbis9c3RyaW5naWZ5KGVbcl0pO2Vsc2UgaWYoIXQpe2NvbnN0IG49dmFsaWRfYXJyYXlfaW5kaWNlcyhlKSxvPW4ubGVuZ3RoLHM9U3RyaW5nKGUubGVuZ3RoKS5sZW5ndGg7aWYoZS5sZW5ndGgrMj4yNStzK28qKHMrMikpe2NvbnN0IHQ9bi5tYXAodD0+YCR7dH06JHtzdHJpbmdpZnkoZVt0XSl9YCkuam9pbigiLCIpO3JldHVybmBPYmplY3QuYXNzaWduKEFycmF5KCR7ZS5sZW5ndGh9KSx7JHt0fX0pYH10PSEwLHItPTF9cmV0dXJuIG4rKDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgtMSBpbiBlPyIiOiIsIikrIl0ifWNhc2UiU2V0IjpjYXNlIk1hcCI6cmV0dXJuYG5ldyAke3R9KFske0FycmF5LmZyb20oZSkubWFwKHN0cmluZ2lmeSkuam9pbigiLCIpfV0pYDtjYXNlIkludDhBcnJheSI6Y2FzZSJVaW50OEFycmF5IjpjYXNlIlVpbnQ4Q2xhbXBlZEFycmF5IjpjYXNlIkludDE2QXJyYXkiOmNhc2UiVWludDE2QXJyYXkiOmNhc2UiSW50MzJBcnJheSI6Y2FzZSJVaW50MzJBcnJheSI6Y2FzZSJGbG9hdDMyQXJyYXkiOmNhc2UiRmxvYXQ2NEFycmF5IjpjYXNlIkJpZ0ludDY0QXJyYXkiOmNhc2UiQmlnVWludDY0QXJyYXkiOntsZXQgcj1gbmV3ICR7dH1gO2lmKDE9PT1uLmdldChlLmJ1ZmZlcikpe3IrPWAoWyR7bmV3IGUuY29uc3RydWN0b3IoZS5idWZmZXIpfV0pYH1lbHNlIHIrPWAoWyR7c3RyaW5naWZ5KGUuYnVmZmVyKX1dKWA7Y29uc3Qgbz1lLmJ5dGVPZmZzZXQscz1vK2UuYnl0ZUxlbmd0aDtpZihvPjB8fHMhPT1lLmJ1ZmZlci5ieXRlTGVuZ3RoKXtjb25zdCBlPSsvKFxkKykvLmV4ZWModClbMV0vODtyKz1gLnN1YmFycmF5KCR7by9lfSwke3MvZX0pYH1yZXR1cm4gcn1jYXNlIkFycmF5QnVmZmVyIjpyZXR1cm5gbmV3IFVpbnQ4QXJyYXkoWyR7bmV3IFVpbnQ4QXJyYXkoZSkudG9TdHJpbmcoKX1dKS5idWZmZXJgO2Nhc2UiVGVtcG9yYWwuRHVyYXRpb24iOmNhc2UiVGVtcG9yYWwuSW5zdGFudCI6Y2FzZSJUZW1wb3JhbC5QbGFpbkRhdGUiOmNhc2UiVGVtcG9yYWwuUGxhaW5UaW1lIjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZVRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5Nb250aERheSI6Y2FzZSJUZW1wb3JhbC5QbGFpblllYXJNb250aCI6Y2FzZSJUZW1wb3JhbC5ab25lZERhdGVUaW1lIjpyZXR1cm5gJHt0fS5mcm9tKCR7c3RyaW5naWZ5X3N0cmluZyhlLnRvU3RyaW5nKCkpfSlgO2RlZmF1bHQ6Y29uc3Qgcj1PYmplY3Qua2V5cyhlKSxvPXIubWFwKHQ9PmAke2Z1bmN0aW9uKGUpe3JldHVybi9eW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJC8udGVzdChlKT9lOmVzY2FwZV91bnNhZmVfY2hhcnMoSlNPTi5zdHJpbmdpZnkoZSkpfSh0KX06JHtzdHJpbmdpZnkoZVt0XSl9YCkuam9pbigiLCIpO3JldHVybiBudWxsPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpP3IubGVuZ3RoPjA/YHske299LF9fcHJvdG9fXzpudWxsfWA6IntfX3Byb3RvX186bnVsbH0iOmB7JHtvfX1gfX1BcnJheS5mcm9tKG4pLmZpbHRlcihlPT5lWzFdPjEpLnNvcnQoKGUsdCk9PnRbMV0tZVsxXSkuZm9yRWFjaCgoZSx0KT0+e3Muc2V0KGVbMF0sZnVuY3Rpb24oZSl7bGV0IHQ9IiI7ZG97dD1XcltlJTU0XSt0LGU9fn4oZS81NCktMX13aGlsZShlPj0wKTtyZXR1cm4gcXIudGVzdCh0KT9gJHt0fTBgOnR9KHQpKX0pO2NvbnN0IGk9c3RyaW5naWZ5KGUpO2lmKHMuc2l6ZSl7Y29uc3QgZT1bXSx0PVtdLG49W107cmV0dXJuIHMuZm9yRWFjaCgocixzKT0+e2lmKGUucHVzaChyKSxvLmhhcyhzKSlyZXR1cm4gdm9pZCBuLnB1c2goby5nZXQocykpO2lmKGlzX3ByaW1pdGl2ZShzKSlyZXR1cm4gdm9pZCBuLnB1c2goc3RyaW5naWZ5X3ByaW1pdGl2ZSQxKHMpKTtzd2l0Y2goZ2V0X3R5cGUocykpe2Nhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6Y2FzZSJCb29sZWFuIjpuLnB1c2goYE9iamVjdCgke3N0cmluZ2lmeShzLnZhbHVlT2YoKSl9KWApO2JyZWFrO2Nhc2UiUmVnRXhwIjpuLnB1c2gocy50b1N0cmluZygpKTticmVhaztjYXNlIkRhdGUiOm4ucHVzaChgbmV3IERhdGUoJHtzLmdldFRpbWUoKX0pYCk7YnJlYWs7Y2FzZSJBcnJheSI6bi5wdXNoKGBBcnJheSgke3MubGVuZ3RofSlgKSxzLmZvckVhY2goKGUsbik9Pnt0LnB1c2goYCR7cn1bJHtufV09JHtzdHJpbmdpZnkoZSl9YCl9KTticmVhaztjYXNlIlNldCI6bi5wdXNoKCJuZXcgU2V0IiksdC5wdXNoKGAke3J9LiR7QXJyYXkuZnJvbShzKS5tYXAoZT0+YGFkZCgke3N0cmluZ2lmeShlKX0pYCkuam9pbigiLiIpfWApO2JyZWFrO2Nhc2UiTWFwIjpuLnB1c2goIm5ldyBNYXAiKSx0LnB1c2goYCR7cn0uJHtBcnJheS5mcm9tKHMpLm1hcCgoW2UsdF0pPT5gc2V0KCR7c3RyaW5naWZ5KGUpfSwgJHtzdHJpbmdpZnkodCl9KWApLmpvaW4oIi4iKX1gKTticmVhaztjYXNlIkFycmF5QnVmZmVyIjpuLnB1c2goYG5ldyBVaW50OEFycmF5KFske25ldyBVaW50OEFycmF5KHMpLmpvaW4oIiwiKX1dKS5idWZmZXJgKTticmVhaztkZWZhdWx0Om4ucHVzaChudWxsPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHMpPyJPYmplY3QuY3JlYXRlKG51bGwpIjoie30iKSxPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGU9Pnt0LnB1c2goYCR7cn0ke2Z1bmN0aW9uKGUpe3JldHVybi9eW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJC8udGVzdChlKT9gLiR7ZX1gOmBbJHtlc2NhcGVfdW5zYWZlX2NoYXJzKEpTT04uc3RyaW5naWZ5KGUpKX1dYH0oZSl9PSR7c3RyaW5naWZ5KHNbZV0pfWApfSl9fSksdC5wdXNoKGByZXR1cm4gJHtpfWApLGAoZnVuY3Rpb24oJHtlLmpvaW4oIiwiKX0peyR7dC5qb2luKCI7Iil9fSgke24uam9pbigiLCIpfSkpYH1yZXR1cm4gaX1mdW5jdGlvbiBlc2NhcGVfdW5zYWZlX2NoYXIoZSl7cmV0dXJuIEZyW2VdfHxlfWZ1bmN0aW9uIGVzY2FwZV91bnNhZmVfY2hhcnMoZSl7cmV0dXJuIGUucmVwbGFjZSh6cixlc2NhcGVfdW5zYWZlX2NoYXIpfWZ1bmN0aW9uIHN0cmluZ2lmeV9wcmltaXRpdmUkMShlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHN0cmluZ2lmeV9zdHJpbmcoZSk7aWYodm9pZCAwPT09ZSlyZXR1cm4idm9pZCAwIjtpZigwPT09ZSYmMS9lPDApcmV0dXJuIi0wIjtjb25zdCB0PVN0cmluZyhlKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dC5yZXBsYWNlKC9eKC0pPzBcLi8sIiQxLiIpOiJiaWdpbnQiPT10eXBlb2YgZT9lKyJuIjp0fWZ1bmN0aW9uIGVuY29kZTY0KGUpe2NvbnN0IHQ9bmV3IERhdGFWaWV3KGUpO2xldCBuPSIiO2ZvcihsZXQgcj0wO3I8ZS5ieXRlTGVuZ3RoO3IrKyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDgocikpO3JldHVybiBmdW5jdGlvbihlKXtsZXQgdD0iIjtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTMpe2NvbnN0IHI9W3ZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMF07clswXT1lLmNoYXJDb2RlQXQobik+PjIsclsxXT0oMyZlLmNoYXJDb2RlQXQobikpPDw0LGUubGVuZ3RoPm4rMSYmKHJbMV18PWUuY2hhckNvZGVBdChuKzEpPj40LHJbMl09KDE1JmUuY2hhckNvZGVBdChuKzEpKTw8MiksZS5sZW5ndGg+bisyJiYoclsyXXw9ZS5jaGFyQ29kZUF0KG4rMik+PjYsclszXT02MyZlLmNoYXJDb2RlQXQobisyKSk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspdm9pZCAwPT09cltlXT90Kz0iPSI6dCs9S3JbcltlXV19cmV0dXJuIHR9KG4pfWNvbnN0IEtyPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjtmdW5jdGlvbiBzdHJpbmdpZnkoZSx0KXtjb25zdCBuPVtdLHI9bmV3IE1hcCxvPVtdO2lmKHQpZm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkpby5wdXNoKHtrZXk6ZSxmbjp0W2VdfSk7Y29uc3Qgcz1bXTtsZXQgaT0wO2NvbnN0IGE9ZnVuY3Rpb24gZmxhdHRlbih0KXtpZih2b2lkIDA9PT10KXJldHVybi0xO2lmKE51bWJlci5pc05hTih0KSlyZXR1cm4tMztpZih0PT09MS8wKXJldHVybi00O2lmKHQ9PT0tMS8wKXJldHVybi01O2lmKDA9PT10JiYxL3Q8MClyZXR1cm4tNjtpZihyLmhhcyh0KSlyZXR1cm4gci5nZXQodCk7Y29uc3QgYT1pKys7ci5zZXQodCxhKTtmb3IoY29uc3R7a2V5OmUsZm46cn1vZiBvKXtjb25zdCBvPXIodCk7aWYobylyZXR1cm4gblthXT1gWyIke2V9Iiwke2ZsYXR0ZW4obyl9XWAsYX1pZigiZnVuY3Rpb24iPT10eXBlb2YgdCl0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IGEgZnVuY3Rpb24iLHMsdCxlKTtsZXQgbD0iIjtpZihpc19wcmltaXRpdmUodCkpbD1zdHJpbmdpZnlfcHJpbWl0aXZlKHQpO2Vsc2V7Y29uc3Qgbj1nZXRfdHlwZSh0KTtzd2l0Y2gobil7Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjpjYXNlIkJvb2xlYW4iOmw9YFsiT2JqZWN0Iiwke3N0cmluZ2lmeV9wcmltaXRpdmUodCl9XWA7YnJlYWs7Y2FzZSJCaWdJbnQiOmw9YFsiQmlnSW50Iiwke3R9XWA7YnJlYWs7Y2FzZSJEYXRlIjpsPWBbIkRhdGUiLCIkeyFpc05hTih0LmdldERhdGUoKSk/dC50b0lTT1N0cmluZygpOiIifSJdYDticmVhaztjYXNlIlVSTCI6bD1gWyJVUkwiLCR7c3RyaW5naWZ5X3N0cmluZyh0LnRvU3RyaW5nKCkpfV1gO2JyZWFrO2Nhc2UiVVJMU2VhcmNoUGFyYW1zIjpsPWBbIlVSTFNlYXJjaFBhcmFtcyIsJHtzdHJpbmdpZnlfc3RyaW5nKHQudG9TdHJpbmcoKSl9XWA7YnJlYWs7Y2FzZSJSZWdFeHAiOmNvbnN0e3NvdXJjZTpyLGZsYWdzOm99PXQ7bD1vP2BbIlJlZ0V4cCIsJHtzdHJpbmdpZnlfc3RyaW5nKHIpfSwiJHtvfSJdYDpgWyJSZWdFeHAiLCR7c3RyaW5naWZ5X3N0cmluZyhyKX1dYDticmVhaztjYXNlIkFycmF5Ijp7bGV0IGU9ITE7bD0iWyI7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz0xKWlmKG4+MCYmKGwrPSIsIiksT2JqZWN0Lmhhc093bih0LG4pKXMucHVzaChgWyR7bn1dYCksbCs9ZmxhdHRlbih0W25dKSxzLnBvcCgpO2Vsc2UgaWYoZSlsKz0tMjtlbHNle2NvbnN0IG49dmFsaWRfYXJyYXlfaW5kaWNlcyh0KSxyPW4ubGVuZ3RoLG89U3RyaW5nKHQubGVuZ3RoKS5sZW5ndGg7aWYoMyoodC5sZW5ndGgtcik+NCtvK3IqKG8rMSkpe2w9IlstNywiK3QubGVuZ3RoO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtjb25zdCByPW5bZV07cy5wdXNoKGBbJHtyfV1gKSxsKz0iLCIrcisiLCIrZmxhdHRlbih0W3JdKSxzLnBvcCgpfWJyZWFrfWU9ITAsbCs9LTJ9bCs9Il0iO2JyZWFrfWNhc2UiU2V0IjpsPSdbIlNldCInO2Zvcihjb25zdCBlIG9mIHQpbCs9YCwke2ZsYXR0ZW4oZSl9YDtsKz0iXSI7YnJlYWs7Y2FzZSJNYXAiOmw9J1siTWFwIic7Zm9yKGNvbnN0W2Usbl1vZiB0KXMucHVzaChgLmdldCgke2lzX3ByaW1pdGl2ZShlKT9zdHJpbmdpZnlfcHJpbWl0aXZlKGUpOiIuLi4ifSlgKSxsKz1gLCR7ZmxhdHRlbihlKX0sJHtmbGF0dGVuKG4pfWAscy5wb3AoKTtsKz0iXSI7YnJlYWs7Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIkludDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQzMkFycmF5IjpjYXNlIkZsb2F0NjRBcnJheSI6Y2FzZSJCaWdJbnQ2NEFycmF5IjpjYXNlIkJpZ1VpbnQ2NEFycmF5Ijp7Y29uc3QgZT10O2w9J1siJytuKyciLCcrZmxhdHRlbihlLmJ1ZmZlcik7Y29uc3Qgcj10LmJ5dGVPZmZzZXQsbz1yK3QuYnl0ZUxlbmd0aDtpZihyPjB8fG8hPT1lLmJ1ZmZlci5ieXRlTGVuZ3RoKXtjb25zdCBlPSsvKFxkKykvLmV4ZWMobilbMV0vODtsKz1gLCR7ci9lfSwke28vZX1gfWwrPSJdIjticmVha31jYXNlIkFycmF5QnVmZmVyIjpsPWBbIkFycmF5QnVmZmVyIiwiJHtlbmNvZGU2NCh0KX0iXWA7YnJlYWs7Y2FzZSJUZW1wb3JhbC5EdXJhdGlvbiI6Y2FzZSJUZW1wb3JhbC5JbnN0YW50IjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZSI6Y2FzZSJUZW1wb3JhbC5QbGFpblRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5EYXRlVGltZSI6Y2FzZSJUZW1wb3JhbC5QbGFpbk1vbnRoRGF5IjpjYXNlIlRlbXBvcmFsLlBsYWluWWVhck1vbnRoIjpjYXNlIlRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUiOmw9YFsiJHtufSIsJHtzdHJpbmdpZnlfc3RyaW5nKHQudG9TdHJpbmcoKSl9XWA7YnJlYWs7ZGVmYXVsdDppZighaXNfcGxhaW5fb2JqZWN0KHQpKXRocm93IG5ldyBEZXZhbHVlRXJyb3IoIkNhbm5vdCBzdHJpbmdpZnkgYXJiaXRyYXJ5IG5vbi1QT0pPcyIscyx0LGUpO2lmKGVudW1lcmFibGVfc3ltYm9scyh0KS5sZW5ndGg+MCl0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IFBPSk9zIHdpdGggc3ltYm9saWMga2V5cyIscyx0LGUpO2lmKG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpe2w9J1sibnVsbCInO2Zvcihjb25zdCBuIG9mIE9iamVjdC5rZXlzKHQpKXtpZigiX19wcm90b19fIj09PW4pdGhyb3cgbmV3IERldmFsdWVFcnJvcigiQ2Fubm90IHN0cmluZ2lmeSBvYmplY3RzIHdpdGggX19wcm90b19fIGtleXMiLHMsdCxlKTtzLnB1c2goc3RyaW5naWZ5X2tleShuKSksbCs9YCwke3N0cmluZ2lmeV9zdHJpbmcobil9LCR7ZmxhdHRlbih0W25dKX1gLHMucG9wKCl9bCs9Il0ifWVsc2V7bD0ieyI7bGV0IG49ITE7Zm9yKGNvbnN0IHIgb2YgT2JqZWN0LmtleXModCkpe2lmKCJfX3Byb3RvX18iPT09cil0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IG9iamVjdHMgd2l0aCBfX3Byb3RvX18ga2V5cyIscyx0LGUpO24mJihsKz0iLCIpLG49ITAscy5wdXNoKHN0cmluZ2lmeV9rZXkocikpLGwrPWAke3N0cmluZ2lmeV9zdHJpbmcocil9OiR7ZmxhdHRlbih0W3JdKX1gLHMucG9wKCl9bCs9In0ifX19cmV0dXJuIG5bYV09bCxhfShlKTtyZXR1cm4gYTwwP2Ake2F9YDpgWyR7bi5qb2luKCIsIil9XWB9ZnVuY3Rpb24gc3RyaW5naWZ5X3ByaW1pdGl2ZShlKXtjb25zdCB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT09dD9zdHJpbmdpZnlfc3RyaW5nKGUpOmUgaW5zdGFuY2VvZiBTdHJpbmc/c3RyaW5naWZ5X3N0cmluZyhlLnRvU3RyaW5nKCkpOnZvaWQgMD09PWU/KC0xKS50b1N0cmluZygpOjA9PT1lJiYxL2U8MD8oLTYpLnRvU3RyaW5nKCk6ImJpZ2ludCI9PT10P2BbIkJpZ0ludCIsIiR7ZX0iXWA6U3RyaW5nKGUpfWZ1bmN0aW9uIHJlbmRlclBheWxvYWRKc29uU2NyaXB0KGUpe2NvbnN0IHQ9e3R5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGlubmVySFRNTDplLmRhdGE/ZW5jb2RlRm9yd2FyZFNsYXNoZXMoc3RyaW5naWZ5KGUuZGF0YSxlLnNzckNvbnRleHRbIn5wYXlsb2FkUmVkdWNlcnMiXSkpOiIiLCJkYXRhLW51eHQtZGF0YSI6Im51eHQtYXBwIiwiZGF0YS1zc3IiOiFlLnNzckNvbnRleHQubm9TU1IsaWQ6Il9fTlVYVF9EQVRBX18ifTtlLnNyYyYmKHRbImRhdGEtc3JjIl09ZS5zcmMpO3JldHVyblt0LHtpbm5lckhUTUw6YHdpbmRvdy5fX05VWFRfXz17fTt3aW5kb3cuX19OVVhUX18uY29uZmlnPSR7dW5ldmFsKGUuc3NyQ29udGV4dC5jb25maWcpfWB9XX1mdW5jdGlvbiBlbmNvZGVGb3J3YXJkU2xhc2hlcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKCIvIiwiXFx1MDAyRiIpfWZ1bmN0aW9uIHNwbGl0UGF5bG9hZChlKXtjb25zdHtkYXRhOnQscHJlcmVuZGVyZWRBdDpuLC4uLnJ9PWUucGF5bG9hZDtyZXR1cm57aW5pdGlhbDp7Li4ucixwcmVyZW5kZXJlZEF0Om59LHBheWxvYWQ6e2RhdGE6dCxwcmVyZW5kZXJlZEF0Om59fX1jb25zdCBKcj17ZGlzYWJsZURlZmF1bHRzOiEwfTtjb25zdCBHcj17fSxacj1bXTtnbG9iYWxUaGlzLl9fYnVpbGRBc3NldHNVUkw9bixnbG9iYWxUaGlzLl9fcHVibGljQXNzZXRzVVJMPWk7Y29uc3QgWHI9ISFIci5pZCxZcj1Ycj9gPGRpdiR7cHJvcHNUb1N0cmluZyhIcil9PmA6IiIsUXI9WHI/IjwvZGl2PiI6IiIsZW89L15bXj9dKlwvX3BheWxvYWQuanNvbig/Olw/LiopPyQvLHRvPXMoYXN5bmMgZT0+e2NvbnN0IG49ZCgpLHM9ZS5wYXRoLnN0YXJ0c1dpdGgoIi9fX251eHRfZXJyb3IiKT9hKGUpOm51bGw7aWYocyYmISgiX191bmVudl9fImluIGUubm9kZS5yZXEpKXRocm93IGwoe3N0YXR1czo0MDQsc3RhdHVzVGV4dDoiUGFnZSBOb3QgRm91bmQ6IC9fX251eHRfZXJyb3IiLG1lc3NhZ2U6IlBhZ2UgTm90IEZvdW5kOiAvX19udXh0X2Vycm9yIn0pO2NvbnN0IGk9ZnVuY3Rpb24oZSl7cmV0dXJue3VybDplLnBhdGgsZXZlbnQ6ZSxydW50aW1lQ29uZmlnOnQoZSksbm9TU1I6ZS5jb250ZXh0Lm51eHQ/Lm5vU1NSfHwhMSxoZWFkOmNyZWF0ZUhlYWQoSnIpLGVycm9yOiExLG51eHQ6dm9pZCAwLHBheWxvYWQ6e30sIn5wYXlsb2FkUmVkdWNlcnMiOk9iamVjdC5jcmVhdGUobnVsbCksbW9kdWxlczpuZXcgU2V0fX0oZSksZj17bW9kZToic2VydmVyIn07aWYoaS5oZWFkLnB1c2goTnIsZikscyl7Y29uc3QgZT1zLnN0YXR1c3x8cy5zdGF0dXNDb2RlO2lmKGUmJihzLnN0YXR1cz1zLnN0YXR1c0NvZGU9TnVtYmVyLnBhcnNlSW50KGUpKSwic3RyaW5nIj09dHlwZW9mIHMuZGF0YSl0cnl7cy5kYXRhPWMocy5kYXRhKX1jYXRjaHt9IWZ1bmN0aW9uKGUsdCl7ZS5lcnJvcj0hMCxlLnBheWxvYWQ9e2Vycm9yOnR9LGUudXJsPXQudXJsfShpLHMpfWNvbnN0IGc9dShlKSxtPSFpLm5vU1NSJiZmYWxzZSx5PSFtfHxmYWxzZSx2PSEhbSYmZW8udGVzdChpLnVybCk7aWYodil7Y29uc3QgdD1pLnVybC5zdWJzdHJpbmcoMCxpLnVybC5sYXN0SW5kZXhPZigiLyIpKXx8Ii8iO2kudXJsPXQsZS5fcGF0aD1lLm5vZGUucmVxLnVybD10fSExPT09Zy5zc3ImJihpLm5vU1NSPSEwKTtjb25zdCBfPW0/cChpLnJ1bnRpbWVDb25maWcuYXBwLmNkblVSTHx8aS5ydW50aW1lQ29uZmlnLmFwcC5iYXNlVVJMLGkudXJsLnJlcGxhY2UoL1w/LiokLywiIiksIl9wYXlsb2FkLmpzb24iKSsiPyIraS5ydW50aW1lQ29uZmlnLmFwcC5idWlsZElkOnZvaWQgMCxiPWF3YWl0IGZ1bmN0aW9uKGUpe3JldHVybiBlLm5vU1NSP0RyKCk6SXIoKX0oaSk7Zm9yKGNvbnN0IGUgb2YgWnIpaS5tb2R1bGVzLmFkZChlKTtjb25zdCBrPWF3YWl0IGIucmVuZGVyVG9TdHJpbmcoaSkuY2F0Y2goYXN5bmMgZT0+e2lmKChpWyJ+cmVuZGVyUmVzcG9uc2UiXXx8aS5fcmVuZGVyUmVzcG9uc2UpJiYic2tpcHBpbmcgcmVuZGVyIj09PWUubWVzc2FnZSlyZXR1cm57fTtjb25zdCB0PSFzJiZpLnBheWxvYWQ/LmVycm9yfHxlO3Rocm93IGF3YWl0KGkubnV4dD8uaG9va3MuY2FsbEhvb2soImFwcDplcnJvciIsdCkpLHR9KSxDPWlbIn5yZW5kZXJSZXNwb25zZSJdfHxpLl9yZW5kZXJSZXNwb25zZXx8dj9bXTphd2FpdCBhc3luYyBmdW5jdGlvbihlKXtjb25zdCB0PWF3YWl0IExyKCksbj1uZXcgU2V0O2Zvcihjb25zdCByIG9mIGUpaWYociBpbiB0JiZ0W3JdKWZvcihjb25zdCBlIG9mIGF3YWl0IHRbcl0oKSluLmFkZChlKTtyZXR1cm4gQXJyYXkuZnJvbShuKS5tYXAoZT0+KHtpbm5lckhUTUw6ZX0pKX0oaS5tb2R1bGVzPz9bXSk7aWYoYXdhaXQoaS5udXh0Py5ob29rcy5jYWxsSG9vaygiYXBwOnJlbmRlcmVkIix7c3NyQ29udGV4dDppLHJlbmRlclJlc3VsdDprfSkpLGlbIn5yZW5kZXJSZXNwb25zZSJdfHxpLl9yZW5kZXJSZXNwb25zZSlyZXR1cm4gaVsifnJlbmRlclJlc3BvbnNlIl18fGkuX3JlbmRlclJlc3BvbnNlO2lmKGkucGF5bG9hZD8uZXJyb3ImJiFzKXRocm93IGkucGF5bG9hZC5lcnJvcjtpZih2KXtjb25zdCBlPWZ1bmN0aW9uKGUpe3JldHVybntib2R5OmVuY29kZUZvcndhcmRTbGFzaGVzKHN0cmluZ2lmeShzcGxpdFBheWxvYWQoZSkucGF5bG9hZCxlWyJ+cGF5bG9hZFJlZHVjZXJzIl0pKSxzdGF0dXNDb2RlOm8oZS5ldmVudCksc3RhdHVzTWVzc2FnZTpyKGUuZXZlbnQpLGhlYWRlcnM6eyJjb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgiLCJ4LXBvd2VyZWQtYnkiOiJOdXh0In19fShpKTtyZXR1cm4gZX1jb25zdCBTPWcubm9TY3JpcHRzLHtzdHlsZXM6dyxzY3JpcHRzOlR9PWdldFJlcXVlc3REZXBlbmRlbmNpZXMoaSxiLnJlbmRlcmVyQ29udGV4dCk7IW18fHl8fFN8fGkuaGVhZC5wdXNoKHtsaW5rOlt7cmVsOiJwcmVsb2FkIixhczoiZmV0Y2giLGNyb3Nzb3JpZ2luOiJhbm9ueW1vdXMiLGhyZWY6X31dfSxmKSxDLmxlbmd0aCYmaS5oZWFkLnB1c2goe3N0eWxlOkN9KTtjb25zdCBSPVtdO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModykpUi5wdXNoKHtyZWw6InN0eWxlc2hlZXQiLGhyZWY6Yi5yZW5kZXJlckNvbnRleHQuYnVpbGRBc3NldHNVUkwoZS5maWxlKSxjcm9zc29yaWdpbjoiIn0pO2lmKFIubGVuZ3RoJiZpLmhlYWQucHVzaCh7bGluazpSfSxmKSwhUyl7aWYoaVsifmxhenlIeWRyYXRlZE1vZHVsZXMiXSlmb3IoY29uc3QgZSBvZiBpWyJ+bGF6eUh5ZHJhdGVkTW9kdWxlcyJdKWkubW9kdWxlcz8uZGVsZXRlKGUpO2kuaGVhZC5wdXNoKHtsaW5rOmdldFByZWxvYWRMaW5rcyhpLGIucmVuZGVyZXJDb250ZXh0KX0sZiksaS5oZWFkLnB1c2goe2xpbms6Z2V0UHJlZmV0Y2hMaW5rcyhpLGIucmVuZGVyZXJDb250ZXh0KX0sZiksaS5oZWFkLnB1c2goe3NjcmlwdDpyZW5kZXJQYXlsb2FkSnNvblNjcmlwdCh5P3tzc3JDb250ZXh0OmksZGF0YTppLnBheWxvYWR9Ontzc3JDb250ZXh0OmksZGF0YTpzcGxpdFBheWxvYWQoaSkuaW5pdGlhbCxzcmM6X30pfSx7Li4uZix0YWdQb3NpdGlvbjoiYm9keUNsb3NlIix0YWdQcmlvcml0eToiaGlnaCJ9KX1pZighZy5ub1NjcmlwdHMpe2NvbnN0IGU9ImhlYWQiO2kuaGVhZC5wdXNoKHtzY3JpcHQ6T2JqZWN0LnZhbHVlcyhUKS5tYXAodD0+KHt0eXBlOnQubW9kdWxlPyJtb2R1bGUiOm51bGwsc3JjOmIucmVuZGVyZXJDb250ZXh0LmJ1aWxkQXNzZXRzVVJMKHQuZmlsZSksZGVmZXI6IXQubW9kdWxlfHxudWxsLHRhZ1Bvc2l0aW9uOmUsY3Jvc3NvcmlnaW46IiJ9KSl9LGYpfWNvbnN0e2hlYWRUYWdzOkEsYm9keVRhZ3M6eCxib2R5VGFnc09wZW46RSxodG1sQXR0cnM6UCxib2R5QXR0cnM6JH09YXdhaXQgcmVuZGVyU1NSSGVhZChpLmhlYWQsR3IpLE89e2h0bWxBdHRyczpQP1tQXTpbXSxoZWFkOm5vcm1hbGl6ZUNodW5rcyhbQV0pLGJvZHlBdHRyczokP1skXTpbXSxib2R5UHJlcGVuZDpub3JtYWxpemVDaHVua3MoW0UsaS50ZWxlcG9ydHM/LmJvZHldKSxib2R5OltrLmh0bWwsWXIrKFhyP2pvaW5UYWdzKFtpLnRlbGVwb3J0cz8uW2AjJHtIci5pZH1gXV0pOiIiKStRcl0sYm9keUFwcGVuZDpbeF19O3JldHVybiBhd2FpdCBuLmhvb2tzLmNhbGxIb29rKCJyZW5kZXI6aHRtbCIsTyx7ZXZlbnQ6ZX0pLHtib2R5OihOPU8sYDwhRE9DVFlQRSBodG1sPjxodG1sJHtqb2luQXR0cnMoTi5odG1sQXR0cnMpfT48aGVhZD4ke2pvaW5UYWdzKE4uaGVhZCl9PC9oZWFkPjxib2R5JHtqb2luQXR0cnMoTi5ib2R5QXR0cnMpfT4ke2pvaW5UYWdzKE4uYm9keVByZXBlbmQpfSR7am9pblRhZ3MoTi5ib2R5KX0ke2pvaW5UYWdzKE4uYm9keUFwcGVuZCl9PC9ib2R5PjwvaHRtbD5gKSxzdGF0dXNDb2RlOm8oZSksc3RhdHVzTWVzc2FnZTpyKGUpLGhlYWRlcnM6eyJjb250ZW50LXR5cGUiOiJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIsIngtcG93ZXJlZC1ieSI6Ik51eHQifX07dmFyIE59KTtmdW5jdGlvbiBub3JtYWxpemVDaHVua3MoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPW4/LnRyaW0oKTtlJiZ0LnB1c2goZSl9cmV0dXJuIHR9ZnVuY3Rpb24gam9pblRhZ3MoZSl7cmV0dXJuIGUuam9pbigiIil9ZnVuY3Rpb24gam9pbkF0dHJzKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/IiI6IiAiK2Uuam9pbigiICIpfWNvbnN0IG5vPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OnRvfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2V4cG9ydHtpc1JlZiBhcyBBLHdhdGNoRWZmZWN0IGFzIEIsSXQgYXMgQyxGdCBhcyBELGdldEN1cnJlbnRJbnN0YW5jZSBhcyBFLG1hcmtSYXcgYXMgRixjdXN0b21SZWYgYXMgRyxubyBhcyBILHJlZiBhcyBhLHNoYWxsb3dSZWYgYXMgYixjb21wdXRlZCBhcyBjLGRlZmluZUNvbXBvbmVudCBhcyBkLHJlYWN0aXZlIGFzIGUsc3NyUmVuZGVyQ29tcG9uZW50IGFzIGYsc3NyUmVuZGVyU2xvdCBhcyBnLGgsaW5qZWN0IGFzIGksc3NyUmVuZGVyQ2xhc3MgYXMgaixyZW5kZXJWTm9kZSBhcyBrLHVzZUhlYWQgYXMgbCxfciBhcyBtLG5leHRUaWNrIGFzIG4sc3NyUmVuZGVyQXR0cnMgYXMgbyxwcm92aWRlIGFzIHAsc3NySW50ZXJwb2xhdGUgYXMgcSx2ciBhcyByLHNoYWxsb3dSZWFjdGl2ZSBhcyBzLHNzclJlbmRlckxpc3QgYXMgdCx1bnJlZiBhcyB1LHNzclJlbmRlclN1c3BlbnNlIGFzIHYsd2F0Y2ggYXMgdyxjcmVhdGVIb29rcyBhcyB4LHNzclJlbmRlclN0eWxlIGFzIHksc3NyUmVuZGVyQXR0ciBhcyB6fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVuZGVyZXIubWpzLm1hcAo=", "chunks/tasks/remindStale.mjs": "aW1wb3J0e2FBIGFzIG99ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtoIGFzIHR9ZnJvbSIuLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3Qgcj1vKCIwICogKiAqICoiLHttZXRhOntuYW1lOiJzdXBwb3J0OnJlbWluZFN0YWxlIixkZXNjcmlwdGlvbjoiRW1haWwgdXNlcnMgd2hvIGhhdmUgbm90IHJlcGxpZWQgdG8gYSBzdXBwb3J0IGFnZW50IGluIDI0aC4ifSxydW46YXN5bmMoKT0+KHtyZXN1bHQ6YXdhaXQgdCgpfSl9KTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVtaW5kU3RhbGUubWpzLm1hcAo=", "chunks/tasks/users.mjs": "aW1wb3J0e2QgYXMgZSxhbSBhcyBzLGUgYXMgaSxoIGFzIHQsdSBhcyBhLGkgYXMgcixhQiBhcyBvfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7QSBhcyBufWZyb20iLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7UyBhcyBtLGIgYXMgZCxzIGFzIGN9ZnJvbSIuLi9fL3NlZWQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7YXN5bmMgZnVuY3Rpb24gZW5zdXJlT3JnKHMsYSxyPXt9KXtjb25zdFtvXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oaSkud2hlcmUodChpLnNsdWcscykpLmxpbWl0KDEpO2lmKG8pcmV0dXJuIG87Y29uc3Rbbl09YXdhaXQgZS5pbnNlcnQoaSkudmFsdWVzKHtzbHVnOnMsbmFtZTphLGlzX3N5c3RlbTohIXIuaXNfc3lzdGVtfSkucmV0dXJuaW5nKCk7cmV0dXJuIG59YXN5bmMgZnVuY3Rpb24gdXBzZXJ0TWVtYmVyKHMsaSxvKXtjb25zdFtuXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oYSkud2hlcmUodChhLnByaW1hcnlfZW1haWwscykpLmxpbWl0KDEpO24mJmF3YWl0IGUuaW5zZXJ0KHIpLnZhbHVlcyh7dXNlcl9pZDpuLmlkLG9yZ2FuaXphdGlvbl9pZDppLGFiaWxpdGllczpbLi4ub119KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbci51c2VyX2lkLHIub3JnYW5pemF0aW9uX2lkXSxzZXQ6e2FiaWxpdGllczpbLi4ub119fSl9Y29uc3QgdT1vKHttZXRhOntuYW1lOiJzZWVkOnVzZXJzIixkZXNjcmlwdGlvbjoiU2VlZCBjYXRhbG9nLCB1c2Vycywgc3lzdGVtIG9yZywgYW5kIERlbW8gb3JnLiJ9LHJ1bjphc3luYygpPT57Y29uc3QgaT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe2NvbnN0IGk9bigpO2Zvcihjb25zdCB0IG9mIGkpYXdhaXQgZS5pbnNlcnQocykudmFsdWVzKHtrZXk6dC5rZXksc3ViamVjdDp0LnN1YmplY3QsYWN0aW9uOnQuYWN0aW9uLHNjb3BlOnQuc2NvcGUsb3JnX2tpbmQ6dC5vcmdfa2luZCxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6cy5rZXksc2V0OntzdWJqZWN0OnQuc3ViamVjdCxhY3Rpb246dC5hY3Rpb24sc2NvcGU6dC5zY29wZSxvcmdfa2luZDp0Lm9yZ19raW5kLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb259fSk7cmV0dXJuIGkubGVuZ3RofSgpLHQ9YXdhaXQgYygpLGE9YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtjb25zdCBlPWF3YWl0IGVuc3VyZU9yZygic3lzdGVtIiwiU3lzdGVtIix7aXNfc3lzdGVtOiEwfSk7cmV0dXJuIGF3YWl0IHVwc2VydE1lbWJlcigiYWRtaW5Ac2VlZC5sb2NhbCIsZS5pZCxtLmFkbWluKSxhd2FpdCB1cHNlcnRNZW1iZXIoImFkbWluQGRlbW8ubG9jYWwiLGUuaWQsbS5hZG1pbiksZS5pZH0oKSxyPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1hd2FpdCBlbnN1cmVPcmcoImRlbW8iLCJEZW1vIE9yZ2FuaXphdGlvbiIpO3JldHVybiBhd2FpdCB1cHNlcnRNZW1iZXIoImFkbWluQHNlZWQubG9jYWwiLGUuaWQsZC5hZG1pbiksYXdhaXQgdXBzZXJ0TWVtYmVyKCJhbGljZUBzZWVkLmxvY2FsIixlLmlkLGQubWVtYmVyKSxhd2FpdCB1cHNlcnRNZW1iZXIoImJvYkBzZWVkLmxvY2FsIixlLmlkLGQuZ3Vlc3QpLGF3YWl0IHVwc2VydE1lbWJlcigiYWRtaW5AZGVtby5sb2NhbCIsZS5pZCxkLmFkbWluKSxhd2FpdCB1cHNlcnRNZW1iZXIoInVzZXJAZGVtby5sb2NhbCIsZS5pZCxkLm1lbWJlciksZS5pZH0oKTtyZXR1cm57cmVzdWx0OiJvayIscGVybWlzc2lvbnM6aSx1c2Vyczp0Lm1hcChlPT5lLnByaW1hcnlfZW1haWwpLHN5c3RlbU9yZ0lkOmEsZGVtb09yZ0lkOnJ9fX0pO2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2Vycy5tanMubWFwCg==", "chunks/virtual/_virtual_spa-template.mjs": "Y29uc3Qgbz0iIjtleHBvcnR7byBhcyB0ZW1wbGF0ZX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV92aXJ0dWFsX3NwYS10ZW1wbGF0ZS5tanMubWFwCg==", "index.mjs": "Z2xvYmFsVGhpcy5faW1wb3J0TWV0YV89e3VybDoiZmlsZTovLy9fZW50cnkuanMiLGVudjp7fX07ZXhwb3J0e2FfIGFzIGRlZmF1bHR9ZnJvbSIuL2NodW5rcy9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcAo=" }, "assets": { "/_headers": "L19udXh0L2J1aWxkcy9tZXRhLyoKICBjYWNoZS1jb250cm9sOiBwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDAsIGltbXV0YWJsZQovX251eHQvYnVpbGRzLyoKICBjYWNoZS1jb250cm9sOiBwdWJsaWMsIG1heC1hZ2U9MSwgaW1tdXRhYmxlCi9fZm9udHMvKgogIGNhY2hlLWNvbnRyb2w6IHB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlCi9fc2NyaXB0cy8qCiAgY2FjaGUtY29udHJvbDogcHVibGljLCBtYXgtYWdlPTMxNTM2MDAwLCBpbW11dGFibGUKL19udXh0LyoKICBjYWNoZS1jb250cm9sOiBwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDAsIGltbXV0YWJsZQovKgogIFJlZmVycmVyLVBvbGljeTogbm8tcmVmZXJyZXIKICBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5OiBtYXgtYWdlPTE1NTUyMDAwOyBpbmNsdWRlU3ViRG9tYWluczsgcHJlbG9hZAogIFgtQ29udGVudC1UeXBlLU9wdGlvbnM6IG5vc25pZmYKICBYLURvd25sb2FkLU9wdGlvbnM6IG5vb3BlbgogIFgtRnJhbWUtT3B0aW9uczogU0FNRU9SSUdJTgogIFgtUGVybWl0dGVkLUNyb3NzLURvbWFpbi1Qb2xpY2llczogbm9uZQogIFgtWFNTLVByb3RlY3Rpb246IDA=", "/_nuxt/1DIkByMd.js": "aW1wb3J0e2YgYXMgZSxvIGFzIG4sYyBhcyBvfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3Qgcz1lKHtfX25hbWU6ImluZGV4IixzZXR1cCh0KXtyZXR1cm4oYSxjKT0+KG4oKSxvKCJkaXYiKSl9fSk7ZXhwb3J0e3MgYXMgZGVmYXVsdH07Cg==", "/_nuxt/4lHmyHbH.js": "aW1wb3J0e2FoIGFzIHRlLGF4IGFzIG9lLEogYXMgYWUsYnEgYXMgZGUsYUYgYXMgTSxhaSBhcyBpZSxhWCBhcyB1ZSxhQiBhcyBjZSxvIGFzIHIsYyBhcyBiLGIgYXMgdSx3IGFzIG4sTCBhcyBmLGggYXMgZCxrIGFzIFMsTSBhcyBvLGksSSBhcyBnZSxhYSBhcyB5LHYgYXMgcCxidCBhcyBJLGEgYXMgWixkIGFzIEUsdCBhcyBSLEYgYXMgTyxxIGFzIEssYnYgYXMgZmUsYWMgYXMgbWUsSCBhcyBiZSxhYiBhcyB5ZSxBIGFzIGxlLGJDIGFzIHBlLGJWIGFzIGhlLGJXIGFzIHhlLGF2IGFzIEcsYXcgYXMgSCxsIGFzIFQsYUcgYXMgSixiOCBhcyByZSxyIGFzIHZlLGI2IGFzIEllLFUgYXMga2UsSyBhcyBMZSxhaiBhcyBUZSxXIGFzIF8sTiBhcyBlZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIHFlLEQgYXMgZyxiIGFzIHdlLGMgYXMgemUsZCBhcyBTZX1mcm9tIi4vQ1lhbXpMbTUuanMiO2ltcG9ydHthIGFzIE9lfWZyb20iLi9CN3M1cGpqUi5qcyI7Y29uc3Qgc2U9e19fbmFtZToiVURyb3Bkb3duTWVudUNvbnRlbnQiLHByb3BzOntpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITB9LHN1Yjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkZXNjcmlwdGlvbktleTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxjaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbEljb246e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITB9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZmlsdGVyOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGZpbHRlckZpZWxkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saWdub3JlRmlsdGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNlYXJjaFRlcm06e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSx1aU92ZXJyaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTpzZWFyY2hUZXJtIiwiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDpWfSl7Y29uc3QgbD1lLCQ9Vix2PXRlKCkse3Q6cSxkaXI6VX09b2UoKSxoPWFlKCkse2ZpbHRlckdyb3VwczpOfT1PZSgpLEI9dmUoIiIpLG09VCh7Z2V0OigpPT5sLnNlYXJjaFRlcm0/P0IudmFsdWUsc2V0OnM9PntCLnZhbHVlPXMsJCgidXBkYXRlOnNlYXJjaFRlcm0iLHMpfX0pLFc9TSgoKT0+SihsLmZpbHRlcix7cGxhY2Vob2xkZXI6cSgiZHJvcGRvd25NZW51LnNlYXJjaCIpLHZhcmlhbnQ6Im5vbmUifSkpLHc9ZGUoTSgoKT0+bC5wb3J0YWwpKSxGPWllKHVlKGwsInN1YiIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWxLZXkiLCJkZXNjcmlwdGlvbktleSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJzaXplIiwiZmlsdGVyIiwiZmlsdGVyRmllbGRzIiwiaWdub3JlRmlsdGVyIiwic2VhcmNoVGVybSIsImNsYXNzIiwidWkiLCJ1aU92ZXJyaWRlIiksJCksQT0oKT0+cmUodixbImRlZmF1bHQiXSksW2osa109Y2UoKSxQPVQoKCk9PlUudmFsdWU9PT0icnRsIj9oLnVpLmljb25zLmNoZXZyb25MZWZ0OmgudWkuaWNvbnMuY2hldnJvblJpZ2h0KSxDPVQoKCk9PmwuaXRlbXM/Lmxlbmd0aD9JZShsLml0ZW1zKT9sLml0ZW1zOltsLml0ZW1zXTpbXSksWD1zPT4hIXMudHlwZSYmWyJsYWJlbCIsInNlcGFyYXRvciJdLmluY2x1ZGVzKHMudHlwZSksUT1UKCgpPT57aWYoIWwuZmlsdGVyfHxsLmlnbm9yZUZpbHRlcnx8IW0udmFsdWUpcmV0dXJuIEMudmFsdWU7Y29uc3Qgcz1BcnJheS5pc0FycmF5KGwuZmlsdGVyRmllbGRzKSYmbC5maWx0ZXJGaWVsZHMubGVuZ3RoP2wuZmlsdGVyRmllbGRzOltsLmxhYmVsS2V5XTtyZXR1cm4gTihDLnZhbHVlLG0udmFsdWUse2ZpZWxkczpzLGlzU3RydWN0dXJhbDpYfSl9KSxZPVQoKCk9PlEudmFsdWUuc29tZShzPT5zLnNvbWUoTD0+IVgoTCkpKSk7cmV0dXJuKHMsTCk9PihyKCksYihPLG51bGwsW3UoaShqKSxudWxsLHtkZWZhdWx0Om4oKHtpdGVtOnQsYWN0aXZlOmMsaW5kZXg6YX0pPT5bZihzLiRzbG90cyx0LnNsb3R8fCJpdGVtIix7aXRlbTp0LGluZGV4OmEsdWk6ZS51aX0sKCk9PltmKHMuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOnQsYWN0aXZlOmMsaW5kZXg6YSx1aTplLnVpfSwoKT0+W3QubG9hZGluZz8ocigpLGQoUyx7a2V5OjAsbmFtZTplLmxvYWRpbmdJY29ufHxpKGgpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6byhlLnVpLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdJY29uLHQudWk/Lml0ZW1MZWFkaW5nSWNvbl0sY29sb3I6dD8uY29sb3IsbG9hZGluZzohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTp0Lmljb24/KHIoKSxkKFMse2tleToxLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOm8oZS51aS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nSWNvbix0LnVpPy5pdGVtTGVhZGluZ0ljb25dLGNvbG9yOnQ/LmNvbG9yLGFjdGl2ZTpjfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnQuYXZhdGFyPyhyKCksZChnZSx5KHtrZXk6MixzaXplOnQudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51aU92ZXJyaWRlPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudWkuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHQuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmUudWkuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nQXZhdGFyLHQudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6Y30pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6cCgiIiwhMCldKSxpKEkpKHQsbC5sYWJlbEtleSl8fHZbdC5zbG90P2Ake3Quc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fGkoSSkodCxsLmRlc2NyaXB0aW9uS2V5KXx8dlt0LnNsb3Q/YCR7dC5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8ocigpLGIoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOm8oZS51aS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbVdyYXBwZXIsdC51aT8uaXRlbVdyYXBwZXJdfSkpfSxbWigic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOm8oZS51aS5pdGVtTGFiZWwoe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MYWJlbCx0LnVpPy5pdGVtTGFiZWxdLGFjdGl2ZTpjfSkpfSxbZihzLiRzbG90cyx0LnNsb3Q/YCR7dC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOnQsYWN0aXZlOmMsaW5kZXg6YX0sKCk9PltFKFIoaShJKSh0LGwubGFiZWxLZXkpKSwxKV0pLHQudGFyZ2V0PT09Il9ibGFuayImJmUuZXh0ZXJuYWxJY29uIT09ITE/KHIoKSxkKFMse2tleTowLG5hbWU6dHlwZW9mIGUuZXh0ZXJuYWxJY29uPT0ic3RyaW5nIj9lLmV4dGVybmFsSWNvbjppKGgpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOm8oZS51aS5pdGVtTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MYWJlbEV4dGVybmFsSWNvbix0LnVpPy5pdGVtTGFiZWxFeHRlcm5hbEljb25dLGNvbG9yOnQ/LmNvbG9yLGFjdGl2ZTpjfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnAoIiIsITApXSwyKSxpKEkpKHQsbC5kZXNjcmlwdGlvbktleSl8fHZbdC5zbG90P2Ake3Quc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KHIoKSxiKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6byhlLnVpLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbURlc2NyaXB0aW9uLHQudWk/Lml0ZW1EZXNjcmlwdGlvbl19KSl9LFtmKHMuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06dCxhY3RpdmU6YyxpbmRleDphfSwoKT0+W0UoUihpKEkpKHQsbC5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTpwKCIiLCEwKV0sMikpOnAoIiIsITApLFooInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczpvKGUudWkuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmcsdC51aT8uaXRlbVRyYWlsaW5nXX0pKX0sW2Yocy4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTp0LGFjdGl2ZTpjLGluZGV4OmEsdWk6ZS51aX0sKCk9Plt0LmNoaWxkcmVuPy5sZW5ndGg/KHIoKSxkKFMse2tleTowLG5hbWU6UC52YWx1ZSwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6byhlLnVpLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0ljb24sdC51aT8uaXRlbVRyYWlsaW5nSWNvbl0sY29sb3I6dD8uY29sb3IsYWN0aXZlOmN9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6dC5rYmRzPy5sZW5ndGg/KHIoKSxiKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0tiZHMiLGNsYXNzOm8oZS51aS5pdGVtVHJhaWxpbmdLYmRzKHtjbGFzczpbZS51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdLYmRzLHQudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSkpfSxbKHIoITApLGIoTyxudWxsLEsodC5rYmRzLCh4LHopPT4ocigpLGQocWUseSh7a2V5Onosc2l6ZTp0LnVpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ZS51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ZS51aS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sdHlwZW9mIHg9PSJzdHJpbmciP3t2YWx1ZTp4fTp4KSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6cCgiIiwhMCldKSx1KGkoZykuSXRlbUluZGljYXRvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6bigoKT0+W3UoUyx7bmFtZTplLmNoZWNrZWRJY29ufHxpKGgpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpvKGUudWkuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nSWNvbix0LnVpPy5pdGVtVHJhaWxpbmdJY29uXSxjb2xvcjp0Py5jb2xvcn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86M30pLHUoaShnKS5Qb3J0YWwsRyhIKGkodykpKSx7ZGVmYXVsdDpuKCgpPT5bdShpKGZlKSxudWxsLHtkZWZhdWx0Om4oKCk9PlsocigpLGQobWUoZS5zdWI/aShnKS5TdWJDb250ZW50OmkoZykuQ29udGVudCkseSh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOmUudWkuY29udGVudCh7Y2xhc3M6W2UudWlPdmVycmlkZT8uY29udGVudCxsLmNsYXNzXX0pfSxpKEYpKSx7ZGVmYXVsdDpuKCgpPT5bZS5maWx0ZXI/KHIoKSxkKGkoZykuRmlsdGVyLHtrZXk6MCxtb2RlbFZhbHVlOm0udmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOkxbMV18fChMWzFdPXQ9Pm0udmFsdWU9dCksImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6bigoKT0+W3UoYmUseSh7YXV0b2ZvY3VzOiIiLGF1dG9jb21wbGV0ZToib2ZmIixzaXplOmUuc2l6ZX0sVy52YWx1ZSx7ImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczplLnVpLmlucHV0KHtjbGFzczplLnVpT3ZlcnJpZGU/LmlucHV0fSksb25DaGFuZ2U6TFswXXx8KExbMF09eWUoKCk9Pnt9LFsic3RvcCJdKSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSJdKSk6cCgiIiwhMCksZihzLiRzbG90cywiY29udGVudC10b3AiLHtzdWI6ZS5zdWI/PyExfSksIW0udmFsdWV8fFkudmFsdWU/KHIoKSxiKCJkaXYiLHtrZXk6MSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6byhlLnVpLnZpZXdwb3J0KHtjbGFzczplLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSkpfSxbKHIoITApLGIoTyxudWxsLEsoUS52YWx1ZSwodCxjKT0+KHIoKSxkKGkoZykuR3JvdXAse2tleTpgZ3JvdXAtJHtjfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpvKGUudWkuZ3JvdXAoe2NsYXNzOmUudWlPdmVycmlkZT8uZ3JvdXB9KSl9LHtkZWZhdWx0Om4oKCk9PlsocighMCksYihPLG51bGwsSyh0LChhLHgpPT4ocigpLGIoTyx7a2V5OmBncm91cC0ke2N9LSR7eH1gfSxbYS50eXBlPT09ImxhYmVsIj8ocigpLGQoaShnKS5MYWJlbCx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpvKGUudWkubGFiZWwoe2NsYXNzOltlLnVpT3ZlcnJpZGU/LmxhYmVsLGEudWk/LmxhYmVsLGEuY2xhc3NdfSkpfSx7ZGVmYXVsdDpuKCgpPT5bdShpKGspLHtpdGVtOmEsaW5kZXg6eH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmEudHlwZT09PSJzZXBhcmF0b3IiPyhyKCksZChpKGcpLlNlcGFyYXRvcix7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6byhlLnVpLnNlcGFyYXRvcih7Y2xhc3M6W2UudWlPdmVycmlkZT8uc2VwYXJhdG9yLGEudWk/LnNlcGFyYXRvcixhLmNsYXNzXX0pKX0sbnVsbCw4LFsiY2xhc3MiXSkpOmE/LmNoaWxkcmVuPy5sZW5ndGg/KHIoKSxkKGkoZykuU3ViLHtrZXk6MixvcGVuOmEub3BlbiwiZGVmYXVsdC1vcGVuIjphLmRlZmF1bHRPcGVufSx7ZGVmYXVsdDpuKCgpPT5bdShpKGcpLlN1YlRyaWdnZXIse2FzOiJidXR0b24iLHR5cGU6ImJ1dHRvbiIsZGlzYWJsZWQ6YS5kaXNhYmxlZCwidGV4dC12YWx1ZSI6aShJKShhLGwubGFiZWxLZXkpLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpvKGUudWkuaXRlbSh7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbSxhLnVpPy5pdGVtLGEuY2xhc3NdLGNvbG9yOmE/LmNvbG9yfSkpfSx7ZGVmYXVsdDpuKCgpPT5bdShpKGspLHtpdGVtOmEsaW5kZXg6eH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdShzZSx5KHtzdWI6IiIsY2xhc3M6YS51aT8uY29udGVudCx1aTplLnVpLCJ1aS1vdmVycmlkZSI6ZS51aU92ZXJyaWRlLHBvcnRhbDplLnBvcnRhbCxpdGVtczphLmNoaWxkcmVuLGFsaWduOiJzdGFydCIsImFsaWduLW9mZnNldCI6LTQsInNpZGUtb2Zmc2V0IjozLCJsYWJlbC1rZXkiOmUubGFiZWxLZXksImRlc2NyaXB0aW9uLWtleSI6ZS5kZXNjcmlwdGlvbktleSwiY2hlY2tlZC1pY29uIjplLmNoZWNrZWRJY29uLCJsb2FkaW5nLWljb24iOmUubG9hZGluZ0ljb24sImV4dGVybmFsLWljb24iOmUuZXh0ZXJuYWxJY29uLHNpemU6ZS5zaXplLGZpbHRlcjphLmZpbHRlciwiZmlsdGVyLWZpZWxkcyI6YS5maWx0ZXJGaWVsZHN8fGUuZmlsdGVyRmllbGRzLCJpZ25vcmUtZmlsdGVyIjphLmlnbm9yZUZpbHRlcj8/ZS5pZ25vcmVGaWx0ZXJ9LHtyZWZfZm9yOiEwfSxhLmNvbnRlbnQpLGxlKHtfOjJ9LFtLKEEoKSwoeixEKT0+KHtuYW1lOkQsZm46bihuZT0+W2Yocy4kc2xvdHMsRCx5KHtyZWZfZm9yOiEwfSxuZSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6YS50eXBlPT09ImNoZWNrYm94Ij8ocigpLGQoaShnKS5DaGVja2JveEl0ZW0se2tleTozLCJtb2RlbC12YWx1ZSI6YS5jaGVja2VkLGRpc2FibGVkOmEuZGlzYWJsZWQsInRleHQtdmFsdWUiOmkoSSkoYSxsLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6byhlLnVpLml0ZW0oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW0sYS51aT8uaXRlbSxhLmNsYXNzXSxjb2xvcjphPy5jb2xvcn0pKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YS5vblVwZGF0ZUNoZWNrZWQsb25TZWxlY3Q6YS5vblNlbGVjdH0se2RlZmF1bHQ6bigoKT0+W3UoaShrKSx7aXRlbTphLGluZGV4Onh9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOihyKCksZChwZSx5KHtrZXk6NCxyZWZfZm9yOiEwfSxpKGhlKShhKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6bigoe2FjdGl2ZTp6LC4uLkR9KT0+W3UoaShnKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmEuZGlzYWJsZWQsInRleHQtdmFsdWUiOmkoSSkoYSxsLmxhYmVsS2V5KSxvblNlbGVjdDphLm9uU2VsZWN0fSx7ZGVmYXVsdDpuKCgpPT5bdSh4ZSx5KHtyZWZfZm9yOiEwfSxELHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ZS51aS5pdGVtKHtjbGFzczpbZS51aU92ZXJyaWRlPy5pdGVtLGEudWk/Lml0ZW0sYS5jbGFzc10sY29sb3I6YT8uY29sb3IsYWN0aXZlOnp9KX0pLHtkZWZhdWx0Om4oKCk9Plt1KGkoaykse2l0ZW06YSxhY3RpdmU6eixpbmRleDp4fSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImRpc2FibGVkIiwidGV4dC12YWx1ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKSldLDY0KSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOnAoIiIsITApLG0udmFsdWUmJiFZLnZhbHVlPyhyKCksYigiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpvKGUudWkuZW1wdHkoe2NsYXNzOmUudWlPdmVycmlkZT8uZW1wdHl9KSl9LFtmKHMuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06bS52YWx1ZX0sKCk9PltFKFIoaShxKSgiZHJvcGRvd25NZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOm0udmFsdWV9KSksMSldKV0sMikpOnAoIiIsITApLGYocy4kc2xvdHMsImRlZmF1bHQiKSxmKHMuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIse3N1YjplLnN1Yj8/ITF9KV0pLF86M30sMTYsWyJjbGFzcyJdKSldKSxfOjN9KV0pLF86M30sMTYpXSw2NCkpfX0sS2U9e3Nsb3RzOntjb250ZW50OiJtaW4tdy0zMiBiZy1kZWZhdWx0IHNoYWRvdy1sZyByb3VuZGVkLW1kIHJpbmcgcmluZy1kZWZhdWx0IG92ZXJmbG93LWhpZGRlbiBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzY2FsZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pbl0gb3JpZ2luLSgtLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIGZsZXggZmxleC1jb2wiLGlucHV0OiJib3JkZXItYiBib3JkZXItZGVmYXVsdCIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLHZpZXdwb3J0OiJyZWxhdGl2ZSBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCBzY3JvbGwtcHktMSBvdmVyZmxvdy15LWF1dG8gZmxleC0xIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsZ3JvdXA6InAtMSBpc29sYXRlIixsYWJlbDoidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsc2VwYXJhdG9yOiItbXgtMSBteS0xIGgtcHggYmctYm9yZGVyIixpdGVtOiJncm91cCByZWxhdGl2ZSB3LWZ1bGwgZmxleCBpdGVtcy1zdGFydCBzZWxlY3Qtbm9uZSBvdXRsaW5lLW5vbmUgYmVmb3JlOmFic29sdXRlIGJlZm9yZTp6LVstMV0gYmVmb3JlOmluc2V0LXB4IGJlZm9yZTpyb3VuZGVkLW1kIGRhdGEtZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRhdGEtZGlzYWJsZWQ6b3BhY2l0eS03NSIsaXRlbUxlYWRpbmdJY29uOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdBdmF0YXI6InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhclNpemU6IiIsaXRlbVRyYWlsaW5nOiJtcy1hdXRvIGlubGluZS1mbGV4IGdhcC0xLjUgaXRlbXMtY2VudGVyIixpdGVtVHJhaWxpbmdJY29uOiJzaHJpbmstMCIsaXRlbVRyYWlsaW5nS2JkczoiaGlkZGVuIGxnOmlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzaHJpbmstMCIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6IiIsaXRlbVdyYXBwZXI6ImZsZXgtMSBmbGV4IGZsZXgtY29sIHRleHQtc3RhcnQgbWluLXctMCIsaXRlbUxhYmVsOiJ0cnVuY2F0ZSIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIixpdGVtTGFiZWxFeHRlcm5hbEljb246ImlubGluZS1ibG9jayBzaXplLTMgYWxpZ24tdG9wIHRleHQtZGltbWVkIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSxhY3RpdmU6e3RydWU6e2l0ZW06InRleHQtaGlnaGxpZ2h0ZWQgYmVmb3JlOmJnLWVsZXZhdGVkIixpdGVtTGVhZGluZ0ljb246InRleHQtZGVmYXVsdCJ9LGZhbHNlOntpdGVtOlsidGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWhpZ2hsaWdodGVkIGRhdGEtaGlnaGxpZ2h0ZWQ6YmVmb3JlOmJnLWVsZXZhdGVkLzUwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1kZWZhdWx0IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19fSxsb2FkaW5nOnt0cnVlOntpdGVtTGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSxzaXplOnt4czp7bGFiZWw6InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsZW1wdHk6InAtMiB0ZXh0LXhzIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6InNtIn0sc206e2xhYmVsOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsZW1wdHk6InAtMi41IHRleHQteHMiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToic20ifSxtZDp7bGFiZWw6InAtMS41IHRleHQtc20gZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC1zbSBnYXAtMS41IixlbXB0eToicC0yLjUgdGV4dC1zbSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJtZCJ9LGxnOntsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LXNtIGdhcC0yIixlbXB0eToicC0zIHRleHQtc20iLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6Im1kIn0seGw6e2xhYmVsOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixlbXB0eToicC0zIHRleHQtYmFzZSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTYiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToieHMiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTEiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJsZyJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5IixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtcHJpbWFyeSBkYXRhLWhpZ2hsaWdodGVkOnRleHQtcHJpbWFyeSBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1wcmltYXJ5LzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1wcmltYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtcHJpbWFyeS83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtcHJpbWFyeSBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLGFjdGl2ZTohMSxjbGFzczp7aXRlbToidGV4dC1zZWNvbmRhcnkgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXNlY29uZGFyeSBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1zZWNvbmRhcnkvMTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLXNlY29uZGFyeS8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXNlY29uZGFyeS83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtc2Vjb25kYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LXN1Y2Nlc3MgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXN1Y2Nlc3MgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6Ymctc3VjY2Vzcy8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6Ymctc3VjY2Vzcy8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXN1Y2Nlc3MvNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXN1Y2Nlc3MgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LWluZm8gZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWluZm8gZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6YmctaW5mby8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctaW5mby8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LWluZm8vNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWluZm8gZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LXdhcm5pbmcgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXdhcm5pbmcgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6Ymctd2FybmluZy8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6Ymctd2FybmluZy8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXdhcm5pbmcvNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXdhcm5pbmcgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLGFjdGl2ZTohMSxjbGFzczp7aXRlbToidGV4dC1lcnJvciBkYXRhLWhpZ2hsaWdodGVkOnRleHQtZXJyb3IgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6YmctZXJyb3IvMTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLWVycm9yLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtZXJyb3IvNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWVycm9yIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZXJyb3IifX0se2NvbG9yOiJwcmltYXJ5IixhY3RpdmU6ITAsY2xhc3M6e2l0ZW06InRleHQtcHJpbWFyeSBiZWZvcmU6YmctcHJpbWFyeS8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1zZWNvbmRhcnkgYmVmb3JlOmJnLXNlY29uZGFyeS8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXNlY29uZGFyeSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1zdWNjZXNzIGJlZm9yZTpiZy1zdWNjZXNzLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1pbmZvIGJlZm9yZTpiZy1pbmZvLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtaW5mbyJ9fSx7Y29sb3I6Indhcm5pbmciLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC13YXJuaW5nIGJlZm9yZTpiZy13YXJuaW5nLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtd2FybmluZyJ9fSx7Y29sb3I6ImVycm9yIixhY3RpdmU6ITAsY2xhc3M6e2l0ZW06InRleHQtZXJyb3IgYmVmb3JlOmJnLWVycm9yLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtZXJyb3IifX1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQifX0sQWU9e19fbmFtZToiVURyb3Bkb3duTWVudSIscHJvcHM6Xyh7c2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbEljb246e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkZXNjcmlwdGlvbiJ9LGZpbHRlcjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGZpbHRlckZpZWxkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saWdub3JlRmlsdGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LHtzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxzZWFyY2hUZXJtTW9kaWZpZXJzOnt9fSksZW1pdHM6XyhbInVwZGF0ZTpvcGVuIl0sWyJ1cGRhdGU6c2VhcmNoVGVybSJdKSxzZXR1cChlLHtlbWl0OlZ9KXtjb25zdCBsPWUsJD1WLHY9dGUoKSxxPWtlKGUsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSksVT1hZSgpLGg9TGUoImRyb3Bkb3duTWVudSIsbCksTj1pZShUZShsLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJtb2RhbCIpLCQpLEI9TSgoKT0+SihsLmNvbnRlbnQse3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDo4LGNvbGxpc2lvblBhZGRpbmc6OH0pKSxtPU0oKCk9PkoobC5hcnJvdyx7cm91bmRlZDohMH0pKSxXPSgpPT5yZSh2LFsiZGVmYXVsdCJdKSx3PVQoKCk9PmVlKHtleHRlbmQ6ZWUoS2UpLC4uLlUudWk/LmRyb3Bkb3duTWVudXx8e319KSh7c2l6ZTpsLnNpemV9KSk7cmV0dXJuKEYsQSk9PihyKCksZChpKFNlKSxHKEgoaShOKSkpLHtkZWZhdWx0Om4oKHtvcGVuOmp9KT0+W3YuZGVmYXVsdD8ocigpLGQoaSh3ZSkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6byhsLmNsYXNzKSxkaXNhYmxlZDplLmRpc2FibGVkfSx7ZGVmYXVsdDpuKCgpPT5bZihGLiRzbG90cywiZGVmYXVsdCIse29wZW46an0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCJdKSk6cCgiIiwhMCksdShzZSx5KHsic2VhcmNoLXRlcm0iOnEudmFsdWUsIm9uVXBkYXRlOnNlYXJjaFRlcm0iOkFbMF18fChBWzBdPWs9PnEudmFsdWU9ayksY2xhc3M6dy52YWx1ZS5jb250ZW50KHtjbGFzczpbIXYuZGVmYXVsdCYmbC5jbGFzcyxpKGgpPy5jb250ZW50XX0pLHVpOncudmFsdWUsInVpLW92ZXJyaWRlIjppKGgpfSxCLnZhbHVlLHtpdGVtczplLml0ZW1zLHBvcnRhbDplLnBvcnRhbCwibGFiZWwta2V5IjplLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmUuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6ZS5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjplLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjplLmV4dGVybmFsSWNvbixzaXplOmUuc2l6ZSxmaWx0ZXI6ZS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmUuZmlsdGVyRmllbGRzLCJpZ25vcmUtZmlsdGVyIjplLmlnbm9yZUZpbHRlcn0pLGxlKHtkZWZhdWx0Om4oKCk9PltlLmFycm93PyhyKCksZChpKHplKSx5KHtrZXk6MH0sbS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczp3LnZhbHVlLmFycm93KHtjbGFzczppKGgpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTpwKCIiLCEwKV0pLF86Mn0sW0soVygpLChrLFApPT4oe25hbWU6UCxmbjpuKEM9PltmKEYuJHNsb3RzLFAsRyhIKEMpKSldKX0pKV0pLDEwNDAsWyJzZWFyY2gtdGVybSIsImNsYXNzIiwidWkiLCJ1aS1vdmVycmlkZSIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWwta2V5IiwiZGVzY3JpcHRpb24ta2V5IiwiY2hlY2tlZC1pY29uIiwibG9hZGluZy1pY29uIiwiZXh0ZXJuYWwtaWNvbiIsInNpemUiLCJmaWx0ZXIiLCJmaWx0ZXItZmllbGRzIiwiaWdub3JlLWZpbHRlciJdKV0pLF86M30sMTYpKX19O2V4cG9ydHtBZSBhcyBffTsK", "/_nuxt/7cVSOCcu.js": "aW1wb3J0e2FoIGFzIHosSiBhcyB4LEsgYXMgeSxhRCBhcyBoLGFqIGFzIGcsbyBhcyB0LGggYXMgaSx3IGFzIGssYSBhcyBuLE0gYXMgbCxpIGFzIHIsYyBhcyBkLEYgYXMgcSxMIGFzIHcsdCBhcyBTLGsgYXMgQyxJIGFzIEIsYWEgYXMgYyx2IGFzIHUsbCBhcyBQLE4gYXMgYn1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtTIGFzIFZ9ZnJvbSIuL2RfME53UUxVLmpzIjtjb25zdCBGPXtzbG90czp7cm9vdDoiZmxleCBpdGVtcy1jZW50ZXIgYWxpZ24tY2VudGVyIHRleHQtY2VudGVyIixib3JkZXI6IiIsY29udGFpbmVyOiJmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQgZmxleCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IixhdmF0YXI6InNocmluay0wIixhdmF0YXJTaXplOiIyeHMiLGxhYmVsOiJ0ZXh0LXNtIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5Ontib3JkZXI6ImJvcmRlci1wcmltYXJ5In0sc2Vjb25kYXJ5Ontib3JkZXI6ImJvcmRlci1zZWNvbmRhcnkifSxzdWNjZXNzOntib3JkZXI6ImJvcmRlci1zdWNjZXNzIn0saW5mbzp7Ym9yZGVyOiJib3JkZXItaW5mbyJ9LHdhcm5pbmc6e2JvcmRlcjoiYm9yZGVyLXdhcm5pbmcifSxlcnJvcjp7Ym9yZGVyOiJib3JkZXItZXJyb3IifSxuZXV0cmFsOntib3JkZXI6ImJvcmRlci1kZWZhdWx0In19LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJ3LWZ1bGwgZmxleC1yb3ciLGJvcmRlcjoidy1mdWxsIixjb250YWluZXI6Im14LTMgd2hpdGVzcGFjZS1ub3dyYXAifSx2ZXJ0aWNhbDp7cm9vdDoiaC1mdWxsIGZsZXgtY29sIixib3JkZXI6ImgtZnVsbCIsY29udGFpbmVyOiJteS0yIn19LHNpemU6e3hzOiIiLHNtOiIiLG1kOiIiLGxnOiIiLHhsOiIifSx0eXBlOntzb2xpZDp7Ym9yZGVyOiJib3JkZXItc29saWQifSxkYXNoZWQ6e2JvcmRlcjoiYm9yZGVyLWRhc2hlZCJ9LGRvdHRlZDp7Ym9yZGVyOiJib3JkZXItZG90dGVkIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhzIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdCJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InNtIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bMnB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bM3B4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6ImxnIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNHB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhsIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNXB4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4cyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToic20iLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVsycHhdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItcy1bM3B4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJsZyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMtWzRweF0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToieGwiLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVs1cHhdIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJuZXV0cmFsIixzaXplOiJ4cyIsdHlwZToic29saWQifX0sRD17X19uYW1lOiJVU2VwYXJhdG9yIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWNvcmF0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBzPWUsZj16KCkscD14KCksbz15KCJzZXBhcmF0b3IiLHMpLHY9aChnKHMsImFzIiwiZGVjb3JhdGl2ZSIsIm9yaWVudGF0aW9uIikpLGE9UCgoKT0+Yih7ZXh0ZW5kOmIoRiksLi4ucC51aT8uc2VwYXJhdG9yfHx7fX0pKHtjb2xvcjpzLmNvbG9yLG9yaWVudGF0aW9uOnMub3JpZW50YXRpb24sc2l6ZTpzLnNpemUsdHlwZTpzLnR5cGV9KSk7cmV0dXJuKG0sTik9Pih0KCksaShyKFYpLGMocih2KSx7ImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmEudmFsdWUucm9vdCh7Y2xhc3M6W3Iobyk/LnJvb3Qscy5jbGFzc119KX0pLHtkZWZhdWx0OmsoKCk9PltuKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9yZGVyIixjbGFzczpsKGEudmFsdWUuYm9yZGVyKHtjbGFzczpyKG8pPy5ib3JkZXJ9KSl9LG51bGwsMiksZS5sYWJlbHx8ZS5pY29ufHxlLmF2YXRhcnx8Zi5kZWZhdWx0Pyh0KCksZChxLHtrZXk6MH0sW24oImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOmwoYS52YWx1ZS5jb250YWluZXIoe2NsYXNzOnIobyk/LmNvbnRhaW5lcn0pKX0sW3cobS4kc2xvdHMsImRlZmF1bHQiLHt1aTphLnZhbHVlfSwoKT0+W2UubGFiZWw/KHQoKSxkKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpsKGEudmFsdWUubGFiZWwoe2NsYXNzOnIobyk/LmxhYmVsfSkpfSxTKGUubGFiZWwpLDMpKTplLmljb24/KHQoKSxpKEMse2tleToxLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpsKGEudmFsdWUuaWNvbih7Y2xhc3M6cihvKT8uaWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8odCgpLGkoQixjKHtrZXk6MixzaXplOnIobyk/LmF2YXRhclNpemV8fGEudmFsdWUuYXZhdGFyU2l6ZSgpfSxlLmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6YS52YWx1ZS5hdmF0YXIoe2NsYXNzOnIobyk/LmF2YXRhcn0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6dSgiIiwhMCldKV0sMiksbigiZGl2Iix7ImRhdGEtc2xvdCI6ImJvcmRlciIsY2xhc3M6bChhLnZhbHVlLmJvcmRlcih7Y2xhc3M6cihvKT8uYm9yZGVyfSkpfSxudWxsLDIpXSw2NCkpOnUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pKX19O2V4cG9ydHtEIGFzIF99Owo=", "/_nuxt/B1MeLri3.js": "aW1wb3J0e2FoIGFzIFMsYkEgYXMgeixKIGFzIEksSyBhcyBQLGJCIGFzIFYsUiBhcyBGLG8gYXMgcyxoLHcgYXMgQyxjLE0gYXMgbixpIGFzIHIsdiBhcyBnLGEgYXMgeCxMIGFzIGQsayBhcyBOLGQgYXMgayx0IGFzIHEsYkMgYXMgVCxhYSBhcyBqLGFFIGFzIEEsUCBhcyBFLGwgYXMgcCxOIGFzIHcsYkQgYXMgTyxyIGFzIFJ9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBEPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCByb3VuZGVkLWxnIixzcG90bGlnaHQ6ImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1baW5oZXJpdF0gcG9pbnRlci1ldmVudHMtbm9uZSBiZy1kZWZhdWx0LzkwIixjb250YWluZXI6InJlbGF0aXZlIGZsZXggZmxleC1jb2wgZmxleC0xIGxnOmdyaWQgZ2FwLXgtOCBnYXAteS00IHAtNCBzbTpwLTYiLHdyYXBwZXI6ImZsZXggZmxleC1jb2wgZmxleC0xIGl0ZW1zLXN0YXJ0IixoZWFkZXI6Im1iLTQiLGJvZHk6ImZsZXgtMSIsZm9vdGVyOiJwdC00IG10LWF1dG8iLGxlYWRpbmc6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUgc2hyaW5rLTAgdGV4dC1wcmltYXJ5Iix0aXRsZToidGV4dC1iYXNlIHRleHQtcHJldHR5IGZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsZGVzY3JpcHRpb246InRleHQtWzE1cHhdIHRleHQtcHJldHR5In0sdmFyaWFudHM6e29yaWVudGF0aW9uOntob3Jpem9udGFsOntjb250YWluZXI6ImxnOmdyaWQtY29scy0yIGxnOml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntjb250YWluZXI6IiJ9fSxyZXZlcnNlOnt0cnVlOnt3cmFwcGVyOiJvcmRlci1sYXN0In19LHZhcmlhbnQ6e3NvbGlkOntyb290OiJiZy1pbnZlcnRlZCB0ZXh0LWludmVydGVkIix0aXRsZToidGV4dC1pbnZlcnRlZCIsZGVzY3JpcHRpb246InRleHQtZGltbWVkIn0sb3V0bGluZTp7cm9vdDoiYmctZGVmYXVsdCByaW5nIHJpbmctZGVmYXVsdCIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQifSxzb2Z0Ontyb290OiJiZy1lbGV2YXRlZC81MCIsZGVzY3JpcHRpb246InRleHQtdG9uZWQifSxzdWJ0bGU6e3Jvb3Q6ImJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1kZWZhdWx0IixkZXNjcmlwdGlvbjoidGV4dC10b25lZCJ9LGdob3N0OntkZXNjcmlwdGlvbjoidGV4dC1tdXRlZCJ9LG5ha2VkOntjb250YWluZXI6InAtMCBzbTpwLTAiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn19LHRvOnt0cnVlOntyb290OlsiaGFzLWZvY3VzLXZpc2libGU6cmluZy0yIGhhcy1mb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSIsInRyYW5zaXRpb24iXX19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fSxoaWdobGlnaHQ6e3RydWU6e3Jvb3Q6InJpbmctMiJ9fSxoaWdobGlnaHRDb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sc3BvdGxpZ2h0Ont0cnVlOntyb290OiJbLS1zcG90bGlnaHQtc2l6ZTo0MDBweF0gYmVmb3JlOmFic29sdXRlIGJlZm9yZTotaW5zZXQtcHggYmVmb3JlOnBvaW50ZXItZXZlbnRzLW5vbmUgYmVmb3JlOnJvdW5kZWQtW2luaGVyaXRdIGJlZm9yZTpiZy1bcmFkaWFsLWdyYWRpZW50KHZhcigtLXNwb3RsaWdodC1zaXplKV92YXIoLS1zcG90bGlnaHQtc2l6ZSlfYXRfY2FsYyh2YXIoLS1zcG90bGlnaHQteCwwcHgpKV9jYWxjKHZhcigtLXNwb3RsaWdodC15LDBweCkpLHZhcigtLXNwb3RsaWdodC1jb2xvciksdHJhbnNwYXJlbnRfNzAlKV0ifX0sc3BvdGxpZ2h0Q29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7dmFyaWFudDoic29saWQiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1pbnZlcnRlZC85MCJ9fSx7dmFyaWFudDoib3V0bGluZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkLzUwIn19LHt2YXJpYW50OiJzb2Z0Iix0bzohMCxjbGFzczp7cm9vdDoiaG92ZXI6YmctZWxldmF0ZWQifX0se3ZhcmlhbnQ6InN1YnRsZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkIn19LHt2YXJpYW50OiJzdWJ0bGUiLHRvOiEwLGhpZ2hsaWdodDohMSxjbGFzczp7cm9vdDoiaG92ZXI6cmluZy1hY2NlbnRlZCJ9fSx7dmFyaWFudDoiZ2hvc3QiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1lbGV2YXRlZC81MCJ9fSx7aGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1wcmltYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctc2Vjb25kYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOntyb290OiJyaW5nLXN1Y2Nlc3MifX0se2hpZ2hsaWdodENvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctaW5mbyJ9fSx7aGlnaGxpZ2h0Q29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy13YXJuaW5nIn19LHtoaWdobGlnaHRDb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1lcnJvciJ9fSx7aGlnaGxpZ2h0Q29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1pbnZlcnRlZCJ9fSx7c3BvdGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLXByaW1hcnkpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6InNlY29uZGFyeSIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KV0ifX0se3Nwb3RsaWdodENvbG9yOiJzdWNjZXNzIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKV0ifX0se3Nwb3RsaWdodENvbG9yOiJpbmZvIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1pbmZvKV0ifX0se3Nwb3RsaWdodENvbG9yOiJ3YXJuaW5nIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKV0ifX0se3Nwb3RsaWdodENvbG9yOiJlcnJvciIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktZXJyb3IpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6Im5ldXRyYWwiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKV0ifX1dLGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDoib3V0bGluZSIsaGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodENvbG9yOiJwcmltYXJ5In19LE09T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVUGFnZUNhcmQiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0scmV2ZXJzZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Q29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3BvdGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNwb3RsaWdodENvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBvPXQsZT1TKCksdj1SKCksdT16KCksJD1JKCksbD1QKCJwYWdlQ2FyZCIsbykse2VsZW1lbnRYOmYsZWxlbWVudFk6eX09Vih2LHtldmVudEZpbHRlcjp1LmV2ZW50RmlsdGVyfSksbT1wKCgpPT5vLnNwb3RsaWdodCYmKGYudmFsdWUhPT0wfHx5LnZhbHVlIT09MCkpO0YoKCk9Pm8uc3BvdGxpZ2h0LGE9PnthP3UucmVzdW1lKCk6dS5wYXVzZSgpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgaT1wKCgpPT53KHtleHRlbmQ6dyhEKSwuLi4kLnVpPy5wYWdlQ2FyZHx8e319KSh7b3JpZW50YXRpb246by5vcmllbnRhdGlvbixyZXZlcnNlOm8ucmV2ZXJzZSx2YXJpYW50Om8udmFyaWFudCx0bzohIW8udG98fCEhby5vbkNsaWNrLHRpdGxlOiEhby50aXRsZXx8ISFlLnRpdGxlLGhpZ2hsaWdodDpvLmhpZ2hsaWdodCxoaWdobGlnaHRDb2xvcjpvLmhpZ2hsaWdodENvbG9yLHNwb3RsaWdodDptLnZhbHVlLHNwb3RsaWdodENvbG9yOm8uc3BvdGxpZ2h0Q29sb3J9KSksQj1wKCgpPT4oZS50aXRsZSYmTyhlLnRpdGxlKCkpfHxvLnRpdGxlfHwiQ2FyZCBsaW5rIikudHJpbSgpKTtyZXR1cm4oYSxiKT0+KHMoKSxoKHIoRSkse3JlZl9rZXk6ImNhcmRSZWYiLHJlZjp2LGFzOnQuYXMsImRhdGEtb3JpZW50YXRpb24iOnQub3JpZW50YXRpb24sImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOm4oaS52YWx1ZS5yb290KHtjbGFzczpbcihsKT8ucm9vdCxvLmNsYXNzXX0pKSxzdHlsZTpBKG0udmFsdWUmJnsiLS1zcG90bGlnaHQteCI6YCR7cihmKX1weGAsIi0tc3BvdGxpZ2h0LXkiOmAke3IoeSl9cHhgfSksb25DbGljazp0Lm9uQ2xpY2t9LHtkZWZhdWx0OkMoKCk9PltvLnNwb3RsaWdodD8ocygpLGMoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJzcG90bGlnaHQiLGNsYXNzOm4oaS52YWx1ZS5zcG90bGlnaHQoe2NsYXNzOnIobCk/LnNwb3RsaWdodH0pKX0sbnVsbCwyKSk6ZygiIiwhMCkseCgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6bihpLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6cihsKT8uY29udGFpbmVyfSkpfSxbZS5oZWFkZXJ8fHQuaWNvbnx8ZS5sZWFkaW5nfHxlLmJvZHl8fHQudGl0bGV8fGUudGl0bGV8fHQuZGVzY3JpcHRpb258fGUuZGVzY3JpcHRpb258fGUuZm9vdGVyPyhzKCksYygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOm4oaS52YWx1ZS53cmFwcGVyKHtjbGFzczpyKGwpPy53cmFwcGVyfSkpfSxbZS5oZWFkZXI/KHMoKSxjKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpuKGkudmFsdWUuaGVhZGVyKHtjbGFzczpyKGwpPy5oZWFkZXJ9KSl9LFtkKGEuJHNsb3RzLCJoZWFkZXIiKV0sMikpOmcoIiIsITApLHQuaWNvbnx8ZS5sZWFkaW5nPyhzKCksYygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOm4oaS52YWx1ZS5sZWFkaW5nKHtjbGFzczpyKGwpPy5sZWFkaW5nfSkpfSxbZChhLiRzbG90cywibGVhZGluZyIse3VpOmkudmFsdWV9LCgpPT5bdC5pY29uPyhzKCksaChOLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOm4oaS52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6cihsKT8ubGVhZGluZ0ljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZygiIiwhMCldKV0sMikpOmcoIiIsITApLGUuYm9keXx8dC50aXRsZXx8ZS50aXRsZXx8dC5kZXNjcmlwdGlvbnx8ZS5kZXNjcmlwdGlvbj8ocygpLGMoImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpuKGkudmFsdWUuYm9keSh7Y2xhc3M6cihsKT8uYm9keX0pKX0sW2QoYS4kc2xvdHMsImJvZHkiLHt9LCgpPT5bdC50aXRsZXx8ZS50aXRsZT8ocygpLGMoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6bihpLnZhbHVlLnRpdGxlKHtjbGFzczpyKGwpPy50aXRsZX0pKX0sW2QoYS4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2socSh0LnRpdGxlKSwxKV0pXSwyKSk6ZygiIiwhMCksdC5kZXNjcmlwdGlvbnx8ZS5kZXNjcmlwdGlvbj8ocygpLGMoImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6bihpLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczpyKGwpPy5kZXNjcmlwdGlvbn0pKX0sW2QoYS4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2socSh0LmRlc2NyaXB0aW9uKSwxKV0pXSwyKSk6ZygiIiwhMCldKV0sMikpOmcoIiIsITApLGUuZm9vdGVyPyhzKCksYygiZGl2Iix7a2V5OjMsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6bihpLnZhbHVlLmZvb3Rlcih7Y2xhc3M6cihsKT8uZm9vdGVyfSkpfSxbZChhLiRzbG90cywiZm9vdGVyIildLDIpKTpnKCIiLCEwKV0sMikpOmcoIiIsITApLGQoYS4kc2xvdHMsImRlZmF1bHQiKV0sMiksdC50bz8ocygpLGgoVCxqKHtrZXk6MSwiYXJpYS1sYWJlbCI6Qi52YWx1ZX0se3RvOnQudG8sdGFyZ2V0OnQudGFyZ2V0LC4uLmEuJGF0dHJzfSx7Y2xhc3M6ImZvY3VzOm91dGxpbmUtbm9uZSBwZWVyIixyYXc6IiJ9KSx7ZGVmYXVsdDpDKCgpPT5bLi4uYlswXXx8KGJbMF09W3goInNwYW4iLHtjbGFzczoiYWJzb2x1dGUgaW5zZXQtMCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LG51bGwsLTEpXSldKSxfOjF9LDE2LFsiYXJpYS1sYWJlbCJdKSk6ZygiIiwhMCldKSxfOjN9LDgsWyJhcyIsImRhdGEtb3JpZW50YXRpb24iLCJjbGFzcyIsInN0eWxlIiwib25DbGljayJdKSl9fSk7ZXhwb3J0e00gYXMgX307Cg==", "/_nuxt/B7s5pjjR.js": "aW1wb3J0e2wgYXMgaCxpIGFzIEYsYnQgYXMgdn1mcm9tIi4vbzh0ZF9HMEouanMiO2Z1bmN0aW9uIEMoaSl7Y29uc3Qgcz1oKCgpPT5GKGkpKSxjPWgoKCk9Pm5ldyBJbnRsLkNvbGxhdG9yKCJlbiIse3VzYWdlOiJzZWFyY2giLC4uLnMudmFsdWV9KSk7cmV0dXJue3N0YXJ0c1dpdGg6KHQsZSk9PmUubGVuZ3RoPT09MD8hMDoodD10Lm5vcm1hbGl6ZSgiTkZDIiksZT1lLm5vcm1hbGl6ZSgiTkZDIiksYy52YWx1ZS5jb21wYXJlKHQuc2xpY2UoMCxlLmxlbmd0aCksZSk9PT0wKSxlbmRzV2l0aDoodCxlKT0+ZS5sZW5ndGg9PT0wPyEwOih0PXQubm9ybWFsaXplKCJORkMiKSxlPWUubm9ybWFsaXplKCJORkMiKSxjLnZhbHVlLmNvbXBhcmUodC5zbGljZSgtZS5sZW5ndGgpLGUpPT09MCksY29udGFpbnM6KHQsZSk9PntpZihlLmxlbmd0aD09PTApcmV0dXJuITA7dD10Lm5vcm1hbGl6ZSgiTkZDIiksZT1lLm5vcm1hbGl6ZSgiTkZDIik7bGV0IGw9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7bCtyPD10Lmxlbmd0aDtsKyspe2NvbnN0IG89dC5zbGljZShsLGwrcik7aWYoYy52YWx1ZS5jb21wYXJlKGUsbyk9PT0wKXJldHVybiEwfXJldHVybiExfX19ZnVuY3Rpb24gTigpe2NvbnN0e2NvbnRhaW5zOmksc3RhcnRzV2l0aDpzfT1DKHtzZW5zaXRpdml0eToiYmFzZSJ9KTtmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGkodCxlKT9pKGUsdCk/MDpzKHQsZSk/MToyOm51bGx9ZnVuY3Rpb24gZih0LGUsbCl7aWYodHlwZW9mIHQhPSJvYmplY3QifHx0PT09bnVsbClyZXR1cm4gYyhTdHJpbmcodCksZSk7bGV0IHI9bnVsbDtmb3IoY29uc3QgbyBvZiBsKXtjb25zdCBuPXYodCxvKTtpZihuPT1udWxsKWNvbnRpbnVlO2NvbnN0IHU9QXJyYXkuaXNBcnJheShuKT9uLm1hcChTdHJpbmcpOltTdHJpbmcobildO2Zvcihjb25zdCBkIG9mIHUpe2NvbnN0IGE9YyhkLGUpO2lmKGEhPT1udWxsJiYocj09PW51bGx8fGE8cikmJihyPWEpLHI9PT0wKXJldHVybiAwfX1yZXR1cm4gcn1mdW5jdGlvbiBwKHQsZSxsKXtpZighZSlyZXR1cm4gdDtjb25zdCByPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0IG49ZihvLGUsbCk7biE9PW51bGwmJnIucHVzaCh7aXRlbTpvLHNjb3JlOm59KX1yZXR1cm4gci5zb3J0KChvLG4pPT5vLnNjb3JlLW4uc2NvcmUpLHIubWFwKCh7aXRlbTpvfSk9Pm8pfWZ1bmN0aW9uIG0odCxlLGwpe3JldHVybiBlP3QubWFwKHI9Pntjb25zdCBvPVtdO2Zvcihjb25zdCBuIG9mIHIpe2lmKG49PW51bGwpY29udGludWU7aWYobC5pc1N0cnVjdHVyYWw/LihuKSl7by5wdXNoKHtpdGVtOm4sc2NvcmU6LTF9KTtjb250aW51ZX1jb25zdCB1PWYobixlLGwuZmllbGRzKTt1IT09bnVsbCYmby5wdXNoKHtpdGVtOm4sc2NvcmU6dX0pfXJldHVybiBvLnNvcnQoKG4sdSk9Pm4uc2NvcmUtdS5zY29yZSksby5tYXAoKHtpdGVtOm59KT0+bil9KS5maWx0ZXIocj0+ci5zb21lKG89PiFsLmlzU3RydWN0dXJhbD8uKG8pKSk6dH1yZXR1cm57c2NvcmU6YyxzY29yZUl0ZW06ZixmaWx0ZXI6cCxmaWx0ZXJHcm91cHM6bX19ZXhwb3J0e04gYXMgYSxDIGFzIHV9Owo=", "/_nuxt/BAuni-qd.js": "aW1wb3J0e2IkIGFzIHYsciBhcyBlfWZyb20iLi9vOHRkX0cwSi5qcyI7ZnVuY3Rpb24gZChmLG89e30pe2NvbnN0IGM9by5saW1pdD8/MjAscz1lKFtdKSx1PWUoIiIpLG49ZSgwKSxhPWUoITApLHQ9ZSghMSk7YXN5bmMgZnVuY3Rpb24gbCgpe2lmKCEodC52YWx1ZXx8IWEudmFsdWUpKXt0LnZhbHVlPSEwO3RyeXtjb25zdCBpPWF3YWl0IGYoe3E6dS52YWx1ZSxsaW1pdDpjLG9mZnNldDpuLnZhbHVlfSk7cy52YWx1ZS5wdXNoKC4uLmkuaXRlbXMpLG4udmFsdWUrPWkuaXRlbXMubGVuZ3RoLGEudmFsdWU9aS5oYXNNb3JlfWZpbmFsbHl7dC52YWx1ZT0hMX19fWZ1bmN0aW9uIHIoKXtzLnZhbHVlPVtdLG4udmFsdWU9MCxhLnZhbHVlPSEwfXJldHVybiB2KHUsYXN5bmMoKT0+e3IoKSxhd2FpdCBsKCl9LHtkZWJvdW5jZTozMDB9KSxvLmltbWVkaWF0ZSE9PSExJiZsKCkse2l0ZW1zOnMscTp1LGhhc01vcmU6YSxsb2FkaW5nOnQsbG9hZE1vcmU6bCxyZXNldDpyfX1leHBvcnR7ZCBhcyB1fTsK", "/_nuxt/BFONo63X.js": "aW1wb3J0e18gYXMgcX1mcm9tIi4vZ2hxWWJJU1QuanMiO2ltcG9ydHtfIGFzIE19ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnR7XyBhcyBVfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e2YgYXMgQSx1IGFzIEIsbiBhcyBELFEgYXMgeSxhUyBhcyBGLHggYXMgVixwIGFzICQseixhNCBhcyBILG8saCBhcyBnLHcgYXMgcCxhIGFzIHIsaSBhcyBhLGMgYXMgaSx2IGFzIGosRiBhcyBFLHEgYXMgUixNIGFzIEssdCBhcyBtLGIsZCBhcyBMLGFUIGFzIFAsbCBhcyBRLHIgYXMgayxhVSBhcyBHLGFIIGFzIEksYTEgYXMgSn1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtTIGFzIE99ZnJvbSIuL0JabE5OZms0LmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2NvbnN0IFc9U3ltYm9sKCJzdXBwb3J0VGlja2V0cyIpLFg9e2NsYXNzOiJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0zIGdhcC00IGgtW2NhbGMoMTAwdmgtOHJlbSldIn0sWT17Y2xhc3M6ImxnOmNvbC1zcGFuLTEgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3cteS1hdXRvIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In0sWj17a2V5OjAsY2xhc3M6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQifSxlZT1bIm9uQ2xpY2siXSx0ZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LHNlPXtjbGFzczoiZm9udC1tZWRpdW0gdHJ1bmNhdGUifSxhZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sb2U9e2NsYXNzOiJsZzpjb2wtc3Bhbi0yIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiJ9LHJlPXtrZXk6MSxjbGFzczoiaC1mdWxsIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCJ9LHZlPUEoe19fbmFtZToic3VwcG9ydCIsYXN5bmMgc2V0dXAobmUpe2xldCBfLGY7Qih7dGl0bGU6Ik15IHJlcXVlc3RzIn0pO2NvbnN0IHY9RCgpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdOyh5KHYsInN1cHBvcnQ6bWFuYWdlIil8fHkodiwic3lzdGVtOm1hbmFnZSIpKSYmKFtfLGZdPUYoKCk9PkkoIi9zeXN0ZW0vdGlja2V0cyIpKSxhd2FpdCBfLGYoKSk7Y29uc3QgYz1QKCkseD1WKCkse2RhdGE6dyxlcnJvcjpTfT0kKCJzdXBwb3J0LXRpY2tldHMiLCgpPT5jLmZldGNoVGlja2V0cyh7bGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSl9KTt6KFMpO2NvbnN0IG49USgoKT0+dy52YWx1ZS5pdGVtcyksZT1rKG51bGwpLGw9ayghMSk7YXN5bmMgZnVuY3Rpb24gZChzKXtlLnZhbHVlPWF3YWl0IGMuZmV0Y2hUaWNrZXQocyl9YXN5bmMgZnVuY3Rpb24gaChzKXtpZihlLnZhbHVlKXtsLnZhbHVlPSEwO3RyeXtlLnZhbHVlPWF3YWl0IGMucG9zdE1lc3NhZ2UoZS52YWx1ZS5pZCxzKSxhd2FpdCBHKCJzdXBwb3J0LXRpY2tldHMiKX1maW5hbGx5e2wudmFsdWU9ITF9fX1yZXR1cm4gSCgoKT0+e2NvbnN0IHM9eC5xdWVyeS50aWNrZXQsdT1uLnZhbHVlWzBdPy5pZDsoc3x8dSkmJmQocz8/dSl9KSxKKFcse3RpY2tldHM6bixzZWxlY3RlZDplLHNlbGVjdFRpY2tldDpkLHNlbmRSZXBseTpofSksKHMsdSk9Pntjb25zdCBDPXEsVD1NLE49VTtyZXR1cm4gbygpLGcoTix7aWQ6InN1cHBvcnQifSx7aGVhZGVyOnAoKCk9PltiKEMse3RpdGxlOiJNeSByZXF1ZXN0cyJ9KV0pLGJvZHk6cCgoKT0+W3IoImRpdiIsWCxbcigiZGl2IixZLFthKG4pLmxlbmd0aD09PTA/KG8oKSxpKCJwIixaLCIgTm8gcmVxdWVzdHMgeWV0LiBVc2UgRmVlZGJhY2sgb3IgSGVscCAmIFN1cHBvcnQgdG8gc3RhcnQgb25lLiAiKSk6aigiIiwhMCksKG8oITApLGkoRSxudWxsLFIoYShuKSx0PT4obygpLGkoImJ1dHRvbiIse2tleTp0LmlkLHR5cGU6ImJ1dHRvbiIsY2xhc3M6SyhbInctZnVsbCB0ZXh0LWxlZnQgcC0zIGhvdmVyOmJnLWVsZXZhdGVkLzUwIixhKGUpPy5pZD09PXQuaWQ/ImJnLWVsZXZhdGVkIjoiIl0pLG9uQ2xpY2s6Y2U9PmQodC5pZCl9LFtyKCJkaXYiLHRlLFtyKCJzcGFuIixzZSxtKHQuc3ViamVjdCksMSksYihULHtzaXplOiJ4cyIsdmFyaWFudDoic3VidGxlIixjb2xvcjp0LnN0YXR1cz09PSJjbG9zZWQiPyJuZXV0cmFsIjp0LnN0YXR1cz09PSJhY3RpdmUiPyJzdWNjZXNzIjoid2FybmluZyJ9LHtkZWZhdWx0OnAoKCk9PltMKG0odC5zdGF0dXMpLDEpXSksXzoyfSwxMDMyLFsiY29sb3IiXSldKSxyKCJwIixhZSxtKHQua2luZD09PSJmZWVkYmFjayI/IkZlZWRiYWNrIjp0LmNhdGVnb3J5KSwxKV0sMTAsZWUpKSksMTI4KSldKSxyKCJkaXYiLG9lLFthKGUpPyhvKCksZyhPLHtrZXk6MCxtZXNzYWdlczphKGUpLm1lc3NhZ2VzLCJ2aWV3ZXItcm9sZSI6InVzZXIiLCJjYW4tcmVwbHkiOmEoZSkuc3RhdHVzIT09ImNsb3NlZCIsc2VuZGluZzphKGwpLG9uU2VuZDpofSxudWxsLDgsWyJtZXNzYWdlcyIsImNhbi1yZXBseSIsInNlbmRpbmciXSkpOihvKCksaSgiZGl2IixyZSwiIFNlbGVjdCBhIHJlcXVlc3QgdG8gdmlldyB0aGUgY29udmVyc2F0aW9uLiAiKSldKV0pXSksXzoxfSl9fX0pO2V4cG9ydHt2ZSBhcyBkZWZhdWx0fTsK", "/_nuxt/BMybG4Ok.js": "aW1wb3J0e2YgYXMgQSxuIGFzIEIsZyBhcyBDLHIgYXMgcCxvIGFzIFAsaCBhcyBTLHcgYXMgbyxiIGFzIGUsaiBhcyBJLGkgYXMgdCxEIGFzIE0sSCBhcyBxLGEgYXMgeSxJIGFzIHosYXIgYXMgRn1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIE59ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBFfWZyb20iLi83Y1ZTT0NjdS5qcyI7aW1wb3J0e18gYXMgR31mcm9tIi4vRE9DRkRUY1kuanMiO2ltcG9ydHtvIGFzIHcscyBhcyBVLGIgYXMgX31mcm9tIi4vQnVMU3VBOE0uanMiO2ltcG9ydCIuL2RfME53UUxVLmpzIjtjb25zdCBUPXcoe25hbWU6VSgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCkub3B0aW9uYWwoKSx1c2VybmFtZTpVKCkudHJpbSgpLm1pbigzKS5tYXgoNTApLnJlZ2V4KC9eXHcrJC8sIkxldHRlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmUiKS5vcHRpb25hbCgpLGJpbzpVKCkudHJpbSgpLm1heCg1MDApLm9wdGlvbmFsKCl9KS5yZWZpbmUoeD0+T2JqZWN0LmtleXMoeCkubGVuZ3RoPjAse21lc3NhZ2U6IkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCJ9KTt3KHtlbWFpbDpfKCkscHJvZHVjdF91cGRhdGVzOl8oKSx3ZWVrbHlfZGlnZXN0Ol8oKSxpbXBvcnRhbnRfdXBkYXRlczpfKCl9KTtjb25zdCBMPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxZPUEoe19fbmFtZToiaW5kZXgiLHNldHVwKHgpe2NvbnN0IHM9QigpLHI9QygpLG49cCh7bmFtZTpzLmN1cnJlbnRVc2VyPy5uYW1lPz8iIix1c2VybmFtZTpzLmN1cnJlbnRVc2VyPy51c2VybmFtZT8/IiIsYmlvOnMuY3VycmVudFVzZXI/LmJpbz8/IiJ9KSxnPXAoITEpLG09cChudWxsKSxiPXAoITEpO2FzeW5jIGZ1bmN0aW9uIGgoKXtnLnZhbHVlPSEwO3RyeXthd2FpdCBzLnVwZGF0ZUN1cnJlbnRVc2VyKHtuYW1lOm4udmFsdWUubmFtZSx1c2VybmFtZTpuLnZhbHVlLnVzZXJuYW1lLGJpbzpuLnZhbHVlLmJpb30pLHIuYWRkKHt0aXRsZToiUHJvZmlsZSB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaCh1KXtjb25zdCBhPXU7ci5hZGQoe3RpdGxlOiJVcGRhdGUgZmFpbGVkIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Zy52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gVih1KXtjb25zdCBhPXUudGFyZ2V0LmZpbGVzPy5bMF07aWYoYSl7aWYoYS5zaXplPjIqMTAyNCoxMDI0KXtyLmFkZCh7dGl0bGU6IkF2YXRhciBtdXN0IGJlIOKJpCAyTUIiLGNvbG9yOiJlcnJvciJ9KTtyZXR1cm59Yi52YWx1ZT0hMDt0cnl7YXdhaXQgcy51cGRhdGVBdmF0YXIoYSksci5hZGQoe3RpdGxlOiJBdmF0YXIgdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goYyl7Y29uc3QgZD1jO3IuYWRkKHt0aXRsZToiVXBsb2FkIGZhaWxlZCIsZGVzY3JpcHRpb246ZD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2IudmFsdWU9ITEsbS52YWx1ZSYmKG0udmFsdWUudmFsdWU9IiIpfX19cmV0dXJuKHUsYSk9Pntjb25zdCBjPUksZD1OLHY9cSxpPU0sZj1FLGs9eiwkPUYsaj1HO3JldHVybiBQKCksUyhqLHtzY2hlbWE6dChUKSxzdGF0ZTp0KG4pLG9uU3VibWl0Omh9LHtkZWZhdWx0Om8oKCk9PltlKGQse3RpdGxlOiJQcm9maWxlIixkZXNjcmlwdGlvbjoiVGhlc2UgaW5mb3JtYXRpb25zIHdpbGwgYmUgZGlzcGxheWVkIHB1YmxpY2x5LiIsdmFyaWFudDoibmFrZWQiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczoibWItNCJ9LHtkZWZhdWx0Om8oKCk9PltlKGMse3R5cGU6InN1Ym1pdCIsbGFiZWw6IlNhdmUgY2hhbmdlcyIsbG9hZGluZzp0KGcpLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIn0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0pLGUoZCx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bygoKT0+W2UoaSx7bmFtZToibmFtZSIsbGFiZWw6Ik5hbWUiLGRlc2NyaXB0aW9uOiJXaWxsIGFwcGVhciBvbiByZWNlaXB0cywgaW52b2ljZXMsIGFuZCBvdGhlciBjb21tdW5pY2F0aW9uLiIscmVxdWlyZWQ6IiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKHYse21vZGVsVmFsdWU6dChuKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzBdfHwoYVswXT1sPT50KG4pLm5hbWU9bCksYXV0b2NvbXBsZXRlOiJvZmYifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSksZShmKSxlKGkse25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHNpZ24gaW4sIGZvciBlbWFpbCByZWNlaXB0cyBhbmQgcHJvZHVjdCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKHYseyJtb2RlbC12YWx1ZSI6dChzKS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbCxkaXNhYmxlZDoiIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSldKSxfOjF9KSxlKGYpLGUoaSx7bmFtZToidXNlcm5hbWUiLGxhYmVsOiJVc2VybmFtZSIsZGVzY3JpcHRpb246IllvdXIgdW5pcXVlIHVzZXJuYW1lIGZvciBsb2dnaW5nIGluIGFuZCB5b3VyIHByb2ZpbGUgVVJMLiIscmVxdWlyZWQ6IiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKHYse21vZGVsVmFsdWU6dChuKS51c2VybmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVsxXXx8KGFbMV09bD0+dChuKS51c2VybmFtZT1sKX0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGUoZiksZShpLHtuYW1lOiJhdmF0YXIiLGxhYmVsOiJBdmF0YXIiLGRlc2NyaXB0aW9uOiJQTkcsIEpQRUcsIEdJRiBvciBXRUJQLiBNYXggMk1CLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBzbTppdGVtcy1jZW50ZXIgZ2FwLTQifSx7ZGVmYXVsdDpvKCgpPT5beSgiZGl2IixMLFtlKGsse3NyYzp0KHMpLmN1cnJlbnRVc2VyPy5hdmF0YXI/P3ZvaWQgMCxhbHQ6dChzKS5jdXJyZW50VXNlcj8ubmFtZT8/IiIsc2l6ZToibGcifSxudWxsLDgsWyJzcmMiLCJhbHQiXSksZShjLHtsYWJlbDoiQ2hhbmdlIixpY29uOiJpLWx1Y2lkZS11cGxvYWQiLHZhcmlhbnQ6Im91dGxpbmUiLGxvYWRpbmc6dChiKSxvbkNsaWNrOmFbMl18fChhWzJdPWw9PnQobSk/LmNsaWNrKCkpfSxudWxsLDgsWyJsb2FkaW5nIl0pLHkoImlucHV0Iix7cmVmX2tleToiZmlsZUlucHV0IixyZWY6bSx0eXBlOiJmaWxlIixhY2NlcHQ6ImltYWdlL3BuZyxpbWFnZS9qcGVnLGltYWdlL2dpZixpbWFnZS93ZWJwIixjbGFzczoiaGlkZGVuIixvbkNoYW5nZTpWfSxudWxsLDU0NCldKV0pLF86MX0pLGUoZiksZShpLHtuYW1lOiJiaW8iLGxhYmVsOiJCaW8iLGRlc2NyaXB0aW9uOiJCcmllZiBkZXNjcmlwdGlvbiBmb3IgeW91ciBwcm9maWxlLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKCQse21vZGVsVmFsdWU6dChuKS5iaW8sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbM118fChhWzNdPWw9PnQobikuYmlvPWwpLHJvd3M6NCxhdXRvcmVzaXplOiIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSldKSxfOjF9KV0pLF86MX0sOCxbInNjaGVtYSIsInN0YXRlIl0pfX19KTtleHBvcnR7WSBhcyBkZWZhdWx0fTsK", "/_nuxt/BSGt3xRW.js": "aW1wb3J0e18gYXMgcH1mcm9tIi4vRFR2WFQtblIuanMiO2ltcG9ydHtfIGFzIHV9ZnJvbSIuL0NjTU1GMWc5LmpzIjtpbXBvcnR7Zix1IGFzIGQsbiBhcyBoLG8gYXMgYixoIGFzIGcsdyBhcyBlLGEgYXMgeCxiIGFzIHMsTyBhcyB5LGkgYXMgayxsIGFzIGksUSBhcyBhfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgTn1mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtfIGFzIHZ9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9EeENXUXNubC5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vXzJsU2RyMTMuanMiO2ltcG9ydCIuL0NYb2M0VUVSLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgQT17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCJ9LEU9Zih7X19uYW1lOiJzeXN0ZW0iLHNldHVwKFMpe2Qoe3RpdGxlOiJTeXN0ZW0gQWRtaW5pc3RyYXRpb24ifSk7Y29uc3Qgbj1oKCksbz1pKCgpPT5uLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxtPWkoKCk9Pntjb25zdCB0PVtdO3JldHVybiBhKG8udmFsdWUsInN5c3RlbTptYW5hZ2UiKSYmdC5wdXNoKHtsYWJlbDoiTm90aWZpY2F0aW9ucyIsaWNvbjoiaS1sdWNpZGUtc2VuZCIsdG86Ii9zeXN0ZW0vbm90aWZpY2F0aW9ucyJ9KSxhKG8udmFsdWUsInN1cHBvcnQ6bWFuYWdlIikmJnQucHVzaCh7bGFiZWw6IlRpY2tldHMiLGljb246ImktbHVjaWRlLXRpY2tldCIsdG86Ii9zeXN0ZW0vdGlja2V0cyJ9KSxbdF19KTtyZXR1cm4odCxVKT0+e2NvbnN0IHI9cCxjPXUsXz15LGw9TjtyZXR1cm4gYigpLGcobCx7aWQ6InN5c3RlbSJ9LHtoZWFkZXI6ZSgoKT0+W3Modix7dGl0bGU6IlN5c3RlbSBBZG1pbmlzdHJhdGlvbiJ9KSxzKGMsbnVsbCx7ZGVmYXVsdDplKCgpPT5bcyhyLHtpdGVtczprKG0pLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCw4LFsiaXRlbXMiXSldKSxfOjF9KV0pLGJvZHk6ZSgoKT0+W3goImRpdiIsQSxbcyhfKV0pXSksXzoxfSl9fX0pO2V4cG9ydHtFIGFzIGRlZmF1bHR9Owo=", "/_nuxt/BSRKqGrP.js": "aW1wb3J0e2FoIGFzIHksSiBhcyBnLEsgYXMgaCxvLGggYXMgYix3IGFzIGssYyBhcyByLE0gYXMgbCxpIGFzIHMsTCBhcyBuLGQgYXMgdix0IGFzIGYsdiBhcyB1LFAgYXMgeCxsIGFzIEMsTiBhcyBwfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgcT17c2xvdHM6e3Jvb3Q6InJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuIixoZWFkZXI6InAtNCBzbTpweC02Iix0aXRsZToidGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIixkZXNjcmlwdGlvbjoibXQtMSB0ZXh0LW11dGVkIHRleHQtc20iLGJvZHk6InAtNCBzbTpwLTYiLGZvb3RlcjoicC00IHNtOnB4LTYifSx2YXJpYW50czp7dmFyaWFudDp7c29saWQ6e3Jvb3Q6ImJnLWludmVydGVkIHRleHQtaW52ZXJ0ZWQiLHRpdGxlOiJ0ZXh0LWludmVydGVkIixkZXNjcmlwdGlvbjoidGV4dC1kaW1tZWQifSxvdXRsaW5lOntyb290OiJiZy1kZWZhdWx0IHJpbmcgcmluZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In0sc29mdDp7cm9vdDoiYmctZWxldmF0ZWQvNTAgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxzdWJ0bGU6e3Jvb3Q6ImJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In19fSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6Im91dGxpbmUifX0sdz17X19uYW1lOiJVQ2FyZCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSx0PXkoKSxtPWcoKSxhPWgoImNhcmQiLGMpLGk9QygoKT0+cCh7ZXh0ZW5kOnAocSksLi4ubS51aT8uY2FyZHx8e319KSh7dmFyaWFudDpjLnZhcmlhbnR9KSk7cmV0dXJuKGQsUyk9PihvKCksYihzKHgpLHthczplLmFzLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpsKGkudmFsdWUucm9vdCh7Y2xhc3M6W3MoYSk/LnJvb3QsYy5jbGFzc119KSl9LHtkZWZhdWx0OmsoKCk9Plt0LmhlYWRlcnx8ZS50aXRsZXx8dC50aXRsZXx8ZS5kZXNjcmlwdGlvbnx8dC5kZXNjcmlwdGlvbj8obygpLHIoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOmwoaS52YWx1ZS5oZWFkZXIoe2NsYXNzOnMoYSk/LmhlYWRlcn0pKX0sW24oZC4kc2xvdHMsImhlYWRlciIse30sKCk9PltlLnRpdGxlfHx0LnRpdGxlPyhvKCkscigiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpsKGkudmFsdWUudGl0bGUoe2NsYXNzOnMoYSk/LnRpdGxlfSkpfSxbbihkLiRzbG90cywidGl0bGUiLHt9LCgpPT5bdihmKGUudGl0bGUpLDEpXSldLDIpKTp1KCIiLCEwKSxlLmRlc2NyaXB0aW9ufHx0LmRlc2NyaXB0aW9uPyhvKCkscigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpsKGkudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOnMoYSk/LmRlc2NyaXB0aW9ufSkpfSxbbihkLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bdihmKGUuZGVzY3JpcHRpb24pLDEpXSldLDIpKTp1KCIiLCEwKV0pXSwyKSk6dSgiIiwhMCksdC5kZWZhdWx0PyhvKCkscigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOmwoaS52YWx1ZS5ib2R5KHtjbGFzczpzKGEpPy5ib2R5fSkpfSxbbihkLiRzbG90cywiZGVmYXVsdCIpXSwyKSk6dSgiIiwhMCksdC5mb290ZXI/KG8oKSxyKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpsKGkudmFsdWUuZm9vdGVyKHtjbGFzczpzKGEpPy5mb290ZXJ9KSl9LFtuKGQuJHNsb3RzLCJmb290ZXIiKV0sMikpOnUoIiIsITApXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fTtleHBvcnR7dyBhcyBffTsK", "/_nuxt/BSy0i2Af.js": "aW1wb3J0e18gYXMgUn1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIEJ9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBLfWZyb20iLi9CU1JLcUdyUC5qcyI7aW1wb3J0e2FzIGFzIE4sZiBhcyBTLGcgYXMgUCxZIGFzIFQsbyBhcyBmLGMgYXMgeixiIGFzIG8saSBhcyByLEggYXMgRCxqIGFzIEEsbCBhcyB5LHUgYXMgSSxwIGFzIFkseiBhcyBxLFIgYXMgSCxoIGFzIHgsdyBhcyBzLGEsdiBhcyB3LHQgYXMgQyxHIGFzICQsciBhcyBVLCQgYXMga31mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIEZ9ZnJvbSIuL0NXOGZLbkZFLmpzIjtpbXBvcnR7XyBhcyBHfWZyb20iLi9CZFpYNXhnZi5qcyI7aW1wb3J0e18gYXMgT31mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHt1IGFzIEp9ZnJvbSIuL0RtNzk0cXhJLmpzIjtpbXBvcnR7XyBhcyBNfWZyb20iLi9CZDQtT2MzNi5qcyI7aW1wb3J0Ii4vQzdZeTZ0UjMuanMiO2ltcG9ydCIuL0N0YTE1c0ctLmpzIjtpbXBvcnQiLi9DYzZ6aWgtUi5qcyI7aW1wb3J0Ii4vZ2hxWWJJU1QuanMiO2ltcG9ydCIuL0JoV1MxOGk3LmpzIjtmdW5jdGlvbiBRKCl7ZnVuY3Rpb24gZCgpe3JldHVybiBOKCIvYXBpL3JlZmVycmFsL3N0YXRzIil9cmV0dXJue2ZldGNoUmVmZXJyYWxTdGF0czpkfX1jb25zdCBXPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxYPVMoe19fbmFtZToiUmVmZXJyYWxDYXJkIixwcm9wczp7Y29kZTp7fX0sc2V0dXAoZCl7Y29uc3QgbT1kLG49UCgpLHA9SigpLm9yaWdpbixsPXkoKCk9PmAke3B9Lz9yZWY9JHttLmNvZGV9YCkse2NvcHk6aSxjb3BpZWQ6Y309VCh7c291cmNlOmx9KTtmdW5jdGlvbiBfKCl7aSgpLG4uYWRkKHt0aXRsZToiQ29waWVkISIsY29sb3I6InN1Y2Nlc3MifSl9cmV0dXJuKGIsdCk9Pntjb25zdCBlPUQsZz1BO3JldHVybiBmKCkseigiZGl2IixXLFtvKGUseyJtb2RlbC12YWx1ZSI6cihsKSxyZWFkb25seToiIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyB0ZXh0LXNtIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSksbyhnLHtpY29uOnIoYyk/ImktbHVjaWRlLWNoZWNrIjoiaS1sdWNpZGUtY29weSIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixvbkNsaWNrOl99LG51bGwsOCxbImljb24iXSldKX19fSksWj1PYmplY3QuYXNzaWduKFgse19fbmFtZToiUmVmZXJyYWxDYXJkIn0pLGVlPXtjbGFzczoicC02IHNwYWNlLXktNiJ9LHRlPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMiBnYXAtNiJ9LGFlPXtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LHJlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIn0sc2U9e2NsYXNzOiJ0ZXh0LTN4bCBmb250LWJvbGQgdGFidWxhci1udW1zIn0sb2U9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxuZT17Y2xhc3M6InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMifSxsZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LHU9MTAsUmU9Uyh7X19uYW1lOiJyZWZlcnJhbCIsc2V0dXAoZCl7SSh7dGl0bGU6IlJlZmVycmFsIn0pO2NvbnN0IG09USgpLHtkYXRhOm4sZXJyb3I6cH09WSgicmVmZXJyYWwtc3RhdHMiLCgpPT5tLmZldGNoUmVmZXJyYWxTdGF0cygpLHtkZWZhdWx0OigpPT4oe2NvZGU6IiIscmVmZXJyZWRDb3VudDowLHRvdGFsRWFybmVkOjAscmVmZXJyYWxzOltdfSl9KTtxKHApO2NvbnN0IGw9VSgiIiksaT1VKDEpLGM9eSgoKT0+e2NvbnN0IHQ9bC52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD9uLnZhbHVlLnJlZmVycmFscy5maWx0ZXIoZT0+ZS5lbWFpbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHQpKTpuLnZhbHVlLnJlZmVycmFsc30pLF89eSgoKT0+e2NvbnN0IHQ9KGkudmFsdWUtMSkqdTtyZXR1cm4gYy52YWx1ZS5zbGljZSh0LHQrdSl9KTtIKGwsKCk9PntpLnZhbHVlPTF9KTtjb25zdCBiPVt7YWNjZXNzb3JLZXk6ImVtYWlsIixoZWFkZXI6IkVtYWlsIn0se2FjY2Vzc29yS2V5OiJzb3VyY2UiLGhlYWRlcjoiU291cmNlIixjZWxsOih7cm93OnR9KT0+ayhSLHtsYWJlbDp0Lm9yaWdpbmFsLnNvdXJjZT09PSJpbnZpdGUiPyJJbnZpdGUiOiJMaW5rIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0pfSx7YWNjZXNzb3JLZXk6InJld2FyZF9wYWlkIixoZWFkZXI6IlN0YXR1cyIsY2VsbDooe3Jvdzp0fSk9PmsoUix7bGFiZWw6dC5vcmlnaW5hbC5yZXdhcmRfcGFpZD8iUmV3YXJkZWQiOiJQZW5kaW5nIixjb2xvcjp0Lm9yaWdpbmFsLnJld2FyZF9wYWlkPyJzdWNjZXNzIjoid2FybmluZyIsdmFyaWFudDoic3VidGxlIn0pfSx7YWNjZXNzb3JLZXk6ImNyZWF0ZWRfYXQiLGhlYWRlcjoiRGF0ZSIsY2VsbDooe3Jvdzp0fSk9Pm5ldyBEYXRlKHQub3JpZ2luYWwuY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9XTtyZXR1cm4odCxlKT0+e2NvbnN0IGc9QixoPUssRT1ELEw9RixWPUcsaj1PO3JldHVybiBmKCkseChqLHtpZDoicmVmZXJyYWwifSx7aGVhZGVyOnMoKCk9PltvKE0se3RpdGxlOiJSZWZlcnJhbCJ9KV0pLGJvZHk6cygoKT0+W2EoImRpdiIsZWUsW2EoImRpdiIsdGUsW28oZyx7dGl0bGU6IllvdXIgcmVmZXJyYWwgbGluayIsZGVzY3JpcHRpb246IlNoYXJlIHRoaXMgbGluayB0byBpbnZpdGUgb3RoZXJzLiBZb3UnbGwgZWFybiBjcmVkaXRzIHdoZW4gdGhleSB0b3AgdXAgZm9yIHRoZSBmaXJzdCB0aW1lLiIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6cygoKT0+W3IobikuY29kZT8oZigpLHgoWix7a2V5OjAsY29kZTpyKG4pLmNvZGV9LG51bGwsOCxbImNvZGUiXSkpOncoIiIsITApXSksXzoxfSksYSgiZGl2IixhZSxbbyhoLHtjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6cygoKT0+W2EoImRpdiIscmUsW2VbMl18fChlWzJdPWEoInAiLHtjbGFzczoidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkIn0sIiBUb3RhbCBSZWZlcnJlZCAiLC0xKSksYSgicCIsc2UsQyhyKG4pLnJlZmVycmVkQ291bnQpLDEpXSldKSxfOjF9KSxvKGgse2NsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpzKCgpPT5bYSgiZGl2IixvZSxbZVszXXx8KGVbM109YSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIEVhcm5lZCAiLC0xKSksYSgicCIsbmUsQyhyKG4pLnRvdGFsRWFybmVkLnRvTG9jYWxlU3RyaW5nKCkpLDEpXSldKSxfOjF9KV0pXSksbyhoLHt1aTp7Ym9keToic206cC0wIixmb290ZXI6InAtMCJ9fSx7aGVhZGVyOnMoKCk9PlthKCJkaXYiLGxlLFtlWzRdfHwoZVs0XT1hKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFJlZmVycmFscyAiLC0xKSksbyhFLHttb2RlbFZhbHVlOnIobCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMF18fChlWzBdPXY9PiQobCk/bC52YWx1ZT12Om51bGwpLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IkZpbHRlciBieSBlbWFpbOKApiIsc2l6ZToic20iLGNsYXNzOiJ3LTU2In0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pXSksZm9vdGVyOnMoKCk9PltyKGMpLmxlbmd0aD51PyhmKCkseChWLHtrZXk6MCxwYWdlOnIoaSksIm9uVXBkYXRlOnBhZ2UiOmVbMV18fChlWzFdPXY9PiQoaSk/aS52YWx1ZT12Om51bGwpLHRvdGFsOnIoYykubGVuZ3RoLCJpdGVtcy1wZXItcGFnZSI6dX0sbnVsbCw4LFsicGFnZSIsInRvdGFsIl0pKTp3KCIiLCEwKV0pLGRlZmF1bHQ6cygoKT0+W28oTCx7ZGF0YTpyKF8pLGNvbHVtbnM6Yn0se2VtcHR5OnMoKCk9PlsuLi5lWzVdfHwoZVs1XT1bYSgiZGl2Iix7Y2xhc3M6InB5LTggdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyByZWZlcnJhbHMgeWV0LiAiLC0xKV0pXSksXzoxfSw4LFsiZGF0YSJdKV0pLF86MX0pXSldKSxfOjF9KX19fSk7ZXhwb3J0e1JlIGFzIGRlZmF1bHR9Owo=", "/_nuxt/BWvqlw5f.js": "aW1wb3J0e2YgYXMgQixhMiBhcyBpZSxhMyBhcyBkZSxhNCBhcyB1ZSxhNSBhcyBjZSxvIGFzIGYsaCBhcyB3LHcgYXMgZyxiIGFzIGgsaSBhcyBlLFAgYXMgQSxMIGFzIHosbCBhcyBxLGE2IGFzIHBlLGE3IGFzIFosYTggYXMgUSxhOSBhcyBmZSx2IGFzIFIsYWEgYXMgTSxaIGFzIG1lLGFiIGFzIHZlLGFjIGFzIFcsYWQgYXMgaixhZSBhcyBQLGFmIGFzIGJlLGFnIGFzIHllLGFoIGFzIGhlLEogYXMgZ2UsSyBhcyBrZSxhaSBhcyB3ZSxhaiBhcyBfZSxhayBhcyB4ZSxhbCBhcyBDZSxhbSBhcyBxZSxhbiBhcyBWZSxhIGFzIFYsTSBhcyBDLGsgYXMgRCxjIGFzIHgsYW8gYXMgTCxkIGFzIFksdCBhcyBJLE4gYXMgRyxhcCBhcyBJZSxnIGFzIFgsUiBhcyBTZSxqIGFzIGVlLEQgYXMgUmUsSCBhcyAkZSxHIGFzIEssRiBhcyBhZSxxIGFzIHRlLFYgYXMgRmUsciBhcyBTLEIgYXMgc2UsdSBhcyB6ZSxwIGFzIEJlLHogYXMgRWV9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBUZX1mcm9tIi4vQjFNZUxyaTMuanMiO2ltcG9ydHtpIGFzIEh9ZnJvbSIuL0R4Q1dRc25sLmpzIjtpbXBvcnR7ViBhcyBBZX1mcm9tIi4vbTIwa2RHeFUuanMiO2ltcG9ydHtnIGFzIFVlLHcgYXMgTmUsZiBhcyBLZX1mcm9tIi4vQnQ4UzBkbWwuanMiO2ltcG9ydHtpIGFzIE1lfWZyb20iLi9EdmRoeXBEaS5qcyI7dmFyIE9lPUIoe19fbmFtZToiUm92aW5nRm9jdXNJdGVtIixwcm9wczp7dGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZm9jdXNhYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsbG93U2hpZnRLZXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgcD10LGE9TWUoKSxyPWllKCksYj1xKCgpPT5wLnRhYlN0b3BJZHx8ciksaz1xKCgpPT5hLmN1cnJlbnRUYWJTdG9wSWQudmFsdWU9PT1iLnZhbHVlKSx7Z2V0SXRlbXM6bCxDb2xsZWN0aW9uSXRlbTp1fT1kZSgpO3VlKCgpPT57cC5mb2N1c2FibGUmJmEub25Gb2N1c2FibGVJdGVtQWRkKCl9KSxjZSgoKT0+e3AuZm9jdXNhYmxlJiZhLm9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpfSk7ZnVuY3Rpb24geShvKXtpZihvLmtleT09PSJUYWIiJiZvLnNoaWZ0S2V5KXthLm9uSXRlbVNoaWZ0VGFiKCk7cmV0dXJufWlmKG8udGFyZ2V0IT09by5jdXJyZW50VGFyZ2V0KXJldHVybjtjb25zdCBuPVVlKG8sYS5vcmllbnRhdGlvbi52YWx1ZSxhLmRpci52YWx1ZSk7aWYobiE9PXZvaWQgMCl7aWYoby5tZXRhS2V5fHxvLmN0cmxLZXl8fG8uYWx0S2V5fHwhcC5hbGxvd1NoaWZ0S2V5JiZvLnNoaWZ0S2V5KXJldHVybjtvLnByZXZlbnREZWZhdWx0KCk7bGV0IGM9Wy4uLmwoKS5tYXAobT0+bS5yZWYpLmZpbHRlcihtPT5tLmRhdGFzZXQuZGlzYWJsZWQhPT0iIildO2lmKG49PT0ibGFzdCIpYy5yZXZlcnNlKCk7ZWxzZSBpZihuPT09InByZXYifHxuPT09Im5leHQiKXtuPT09InByZXYiJiZjLnJldmVyc2UoKTtjb25zdCBtPWMuaW5kZXhPZihvLmN1cnJlbnRUYXJnZXQpO2M9YS5sb29wLnZhbHVlP05lKGMsbSsxKTpjLnNsaWNlKG0rMSl9cGUoKCk9PktlKGMpKX19cmV0dXJuKG8sbik9PihmKCksdyhlKHUpLG51bGwse2RlZmF1bHQ6ZygoKT0+W2goZShBKSx7dGFiaW5kZXg6ay52YWx1ZT8wOi0xLCJkYXRhLW9yaWVudGF0aW9uIjplKGEpLm9yaWVudGF0aW9uLnZhbHVlLCJkYXRhLWFjdGl2ZSI6by5hY3RpdmU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjpvLmZvY3VzYWJsZT92b2lkIDA6IiIsYXM6by5hcywiYXMtY2hpbGQiOm8uYXNDaGlsZCxvbk1vdXNlZG93bjpuWzBdfHwoblswXT1jPT57by5mb2N1c2FibGU/ZShhKS5vbkl0ZW1Gb2N1cyhiLnZhbHVlKTpjLnByZXZlbnREZWZhdWx0KCl9KSxvbkZvY3VzOm5bMV18fChuWzFdPWM9PmUoYSkub25JdGVtRm9jdXMoYi52YWx1ZSkpLG9uS2V5ZG93bjp5fSx7ZGVmYXVsdDpnKCgpPT5beihvLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidGFiaW5kZXgiLCJkYXRhLW9yaWVudGF0aW9uIiwiZGF0YS1hY3RpdmUiLCJkYXRhLWRpc2FibGVkIiwiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30pKX19KSxqZT1PZTtjb25zdFtQZV09WigiQ2hlY2tib3hHcm91cFJvb3QiKTtmdW5jdGlvbiBPKHQpe3JldHVybiB0PT09ImluZGV0ZXJtaW5hdGUifWZ1bmN0aW9uIG9lKHQpe3JldHVybiBPKHQpPyJpbmRldGVybWluYXRlIjp0PyJjaGVja2VkIjoidW5jaGVja2VkIn1jb25zdFtEZSxMZV09WigiQ2hlY2tib3hSb290Iik7dmFyIFllPUIoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IkNoZWNrYm94Um9vdCIscHJvcHM6e2RlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoib24ifSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHRydWVWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiEwfSxmYWxzZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cCh0LHtlbWl0OnB9KXtjb25zdCBhPXQscj1wLHtmb3J3YXJkUmVmOmIsY3VycmVudEVsZW1lbnQ6a309USgpLGw9UGUobnVsbCksdT1mZShhLCJtb2RlbFZhbHVlIixyLHtkZWZhdWx0VmFsdWU6YS5kZWZhdWx0VmFsdWU/P2EuZmFsc2VWYWx1ZSxwYXNzaXZlOmEubW9kZWxWYWx1ZT09PXZvaWQgMH0pLHk9cSgoKT0+bD8uZGlzYWJsZWQudmFsdWV8fGEuZGlzYWJsZWQpLG89cSgoKT0+UCh1LnZhbHVlLGEudHJ1ZVZhbHVlKSksbj1xKCgpPT5qKGw/Lm1vZGVsVmFsdWUudmFsdWUpP3UudmFsdWU9PT0iaW5kZXRlcm1pbmF0ZSI/ImluZGV0ZXJtaW5hdGUiOm8udmFsdWU6SChsLm1vZGVsVmFsdWUudmFsdWUsYS52YWx1ZSkpO2Z1bmN0aW9uIGMoKXtpZihqKGw/Lm1vZGVsVmFsdWUudmFsdWUpKXUudmFsdWU9PT0iaW5kZXRlcm1pbmF0ZSI/dS52YWx1ZT1hLnRydWVWYWx1ZTp1LnZhbHVlPW8udmFsdWU/YS5mYWxzZVZhbHVlOmEudHJ1ZVZhbHVlO2Vsc2V7Y29uc3Qgcz1bLi4ubC5tb2RlbFZhbHVlLnZhbHVlfHxbXV07aWYoSChzLGEudmFsdWUpKXtjb25zdCBpPXMuZmluZEluZGV4KF89PlAoXyxhLnZhbHVlKSk7cy5zcGxpY2UoaSwxKX1lbHNlIHMucHVzaChhLnZhbHVlKTtsLm1vZGVsVmFsdWUudmFsdWU9c319Y29uc3QgbT1iZShrKSx2PXEoKCk9PmEuaWQmJmsudmFsdWU/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2Zvcj0iJHthLmlkfSJdYCk/LmlubmVyVGV4dDp2b2lkIDApO3JldHVybiBMZSh7ZGlzYWJsZWQ6eSxzdGF0ZTpufSksKHMsaSk9PihmKCksdyhXKGUobCk/LnJvdmluZ0ZvY3VzLnZhbHVlP2UoamUpOmUoQSkpLE0ocy4kYXR0cnMse2lkOnMuaWQscmVmOmUoYikscm9sZToiY2hlY2tib3giLCJhcy1jaGlsZCI6cy5hc0NoaWxkLGFzOnMuYXMsdHlwZTpzLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLCJhcmlhLWNoZWNrZWQiOmUoTykobi52YWx1ZSk/Im1peGVkIjpuLnZhbHVlLCJhcmlhLXJlcXVpcmVkIjpzLnJlcXVpcmVkLCJhcmlhLWxhYmVsIjpzLiRhdHRyc1siYXJpYS1sYWJlbCJdfHx2LnZhbHVlLCJkYXRhLXN0YXRlIjplKG9lKShuLnZhbHVlKSwiZGF0YS1kaXNhYmxlZCI6eS52YWx1ZT8iIjp2b2lkIDAsZGlzYWJsZWQ6eS52YWx1ZSxmb2N1c2FibGU6ZShsKT8ucm92aW5nRm9jdXMudmFsdWU/IXkudmFsdWU6dm9pZCAwLG9uS2V5ZG93bjptZSh2ZSgoKT0+e30sWyJwcmV2ZW50Il0pLFsiZW50ZXIiXSksb25DbGljazpjfSkse2RlZmF1bHQ6ZygoKT0+W3oocy4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmUodSksc3RhdGU6bi52YWx1ZX0pLGUobSkmJnMubmFtZSYmIWUobCk/KGYoKSx3KGUoQWUpLHtrZXk6MCx0eXBlOiJjaGVja2JveCIsY2hlY2tlZDohIW4udmFsdWUsbmFtZTpzLm5hbWUsdmFsdWU6cy52YWx1ZSxkaXNhYmxlZDp5LnZhbHVlLHJlcXVpcmVkOnMucmVxdWlyZWR9LG51bGwsOCxbImNoZWNrZWQiLCJuYW1lIiwidmFsdWUiLCJkaXNhYmxlZCIsInJlcXVpcmVkIl0pKTpSKCJ2LWlmIiwhMCldKSxfOjN9LDE2LFsiaWQiLCJhcy1jaGlsZCIsImFzIiwidHlwZSIsImFyaWEtY2hlY2tlZCIsImFyaWEtcmVxdWlyZWQiLCJhcmlhLWxhYmVsIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkaXNhYmxlZCIsImZvY3VzYWJsZSIsIm9uS2V5ZG93biJdKSl9fSksR2U9WWUsSGU9Qih7X19uYW1lOiJDaGVja2JveEluZGljYXRvciIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3R7Zm9yd2FyZFJlZjpwfT1RKCksYT1EZSgpO3JldHVybihyLGIpPT4oZigpLHcoZSh5ZSkse3ByZXNlbnQ6ci5mb3JjZU1vdW50fHxlKE8pKGUoYSkuc3RhdGUudmFsdWUpfHxlKGEpLnN0YXRlLnZhbHVlPT09ITB9LHtkZWZhdWx0OmcoKCk9PltoKGUoQSksTSh7cmVmOmUocCksImRhdGEtc3RhdGUiOmUob2UpKGUoYSkuc3RhdGUudmFsdWUpLCJkYXRhLWRpc2FibGVkIjplKGEpLmRpc2FibGVkLnZhbHVlPyIiOnZvaWQgMCxzdHlsZTp7cG9pbnRlckV2ZW50czoibm9uZSJ9LCJhcy1jaGlsZCI6ci5hc0NoaWxkLGFzOnIuYXN9LHIuJGF0dHJzKSx7ZGVmYXVsdDpnKCgpPT5beihyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEplPUhlO2NvbnN0IEo9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0Iixjb250YWluZXI6ImZsZXggaXRlbXMtY2VudGVyIixiYXNlOiJyb3VuZGVkLXNtIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIG92ZXJmbG93LWhpZGRlbiBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIiLGluZGljYXRvcjoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc2l6ZS1mdWxsIHRleHQtaW52ZXJ0ZWQiLGljb246InNocmluay0wIHNpemUtZnVsbCIsd3JhcHBlcjoidy1mdWxsIixsYWJlbDoiYmxvY2sgZm9udC1tZWRpdW0gdGV4dC1kZWZhdWx0IixkZXNjcmlwdGlvbjoidGV4dC1tdXRlZCJ9LHZhcmlhbnRzOntjb2xvcjp7cHJpbWFyeTp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkiLGluZGljYXRvcjoiYmctcHJpbWFyeSJ9LHNlY29uZGFyeTp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXNlY29uZGFyeSIsaW5kaWNhdG9yOiJiZy1zZWNvbmRhcnkifSxzdWNjZXNzOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtc3VjY2VzcyIsaW5kaWNhdG9yOiJiZy1zdWNjZXNzIn0saW5mbzp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZm8iLGluZGljYXRvcjoiYmctaW5mbyJ9LHdhcm5pbmc6e2Jhc2U6ImZvY3VzLXZpc2libGU6b3V0bGluZS13YXJuaW5nIixpbmRpY2F0b3I6ImJnLXdhcm5pbmcifSxlcnJvcjp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWVycm9yIixpbmRpY2F0b3I6ImJnLWVycm9yIn0sbmV1dHJhbDp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWludmVydGVkIixpbmRpY2F0b3I6ImJnLWludmVydGVkIn19LHZhcmlhbnQ6e2xpc3Q6e3Jvb3Q6IiJ9LGNhcmQ6e3Jvb3Q6ImJvcmRlciBib3JkZXItbXV0ZWQgcm91bmRlZC1sZyJ9fSxpbmRpY2F0b3I6e3N0YXJ0Ontyb290OiJmbGV4LXJvdyIsd3JhcHBlcjoibXMtMiJ9LGVuZDp7cm9vdDoiZmxleC1yb3ctcmV2ZXJzZSIsd3JhcHBlcjoibWUtMiJ9LGhpZGRlbjp7YmFzZToic3Itb25seSIsd3JhcHBlcjoidGV4dC1jZW50ZXIifX0sc2l6ZTp7eHM6e2Jhc2U6InNpemUtMyIsY29udGFpbmVyOiJoLTQiLHdyYXBwZXI6InRleHQteHMifSxzbTp7YmFzZToic2l6ZS0zLjUiLGNvbnRhaW5lcjoiaC00Iix3cmFwcGVyOiJ0ZXh0LXhzIn0sbWQ6e2Jhc2U6InNpemUtNCIsY29udGFpbmVyOiJoLTUiLHdyYXBwZXI6InRleHQtc20ifSxsZzp7YmFzZToic2l6ZS00LjUiLGNvbnRhaW5lcjoiaC01Iix3cmFwcGVyOiJ0ZXh0LXNtIn0seGw6e2Jhc2U6InNpemUtNSIsY29udGFpbmVyOiJoLTYiLHdyYXBwZXI6InRleHQtYmFzZSJ9fSxyZXF1aXJlZDp7dHJ1ZTp7bGFiZWw6ImFmdGVyOmNvbnRlbnQtWycqJ10gYWZ0ZXI6bXMtMC41IGFmdGVyOnRleHQtZXJyb3IifX0sZGlzYWJsZWQ6e3RydWU6e3Jvb3Q6Im9wYWNpdHktNzUiLGJhc2U6ImN1cnNvci1ub3QtYWxsb3dlZCIsbGFiZWw6ImN1cnNvci1ub3QtYWxsb3dlZCIsZGVzY3JpcHRpb246ImN1cnNvci1ub3QtYWxsb3dlZCJ9fSxjaGVja2VkOnt0cnVlOiIifX0sY29tcG91bmRWYXJpYW50czpbe3NpemU6InhzIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC0yLjUifX0se3NpemU6InNtIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC0zIn19LHtzaXplOiJtZCIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6InAtMy41In19LHtzaXplOiJsZyIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6InAtNCJ9fSx7c2l6ZToieGwiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJwLTQuNSJ9fSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLXNlY29uZGFyeSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoiaGFzLWRhdGEtW3N0YXRlPWNoZWNrZWRdOmJvcmRlci1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItd2FybmluZyJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoiaGFzLWRhdGEtW3N0YXRlPWNoZWNrZWRdOmJvcmRlci1lcnJvciJ9fSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLWludmVydGVkIn19LHt2YXJpYW50OiJjYXJkIixkaXNhYmxlZDohMCxjbGFzczp7cm9vdDoiY3Vyc29yLW5vdC1hbGxvd2VkIn19XSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIixjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoibGlzdCIsaW5kaWNhdG9yOiJzdGFydCJ9fSxaZT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVDaGVja2JveCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saW5kaWNhdG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saW5kZXRlcm1pbmF0ZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cnVlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZmFsc2VWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjaGFuZ2UiLCJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6cH0pe2NvbnN0IGE9dCxyPWhlKCksYj1wLGs9Z2UoKSxsPWtlKCJjaGVja2JveCIsYSksdT13ZShfZShhLCJyZXF1aXJlZCIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwibW9kZWxWYWx1ZSIsInRydWVWYWx1ZSIsImZhbHNlVmFsdWUiKSxiKSx7aWQ6eSxlbWl0Rm9ybUNoYW5nZTpvLGVtaXRGb3JtSW5wdXQ6bixzaXplOmMsY29sb3I6bSxuYW1lOnYsZGlzYWJsZWQ6cyxhcmlhQXR0cnM6aX09eGUoYSksXz15LnZhbHVlPz9DZSgpLHt2YXJpYW50OiR9PXFlKCJjaGVja2JveCIsYSxKLFsidmFyaWFudCJdKSxFPVZlKCksVT1xKCgpPT57Y29uc3R7ImRhdGEtc3RhdGUiOkYsLi4uVH09RTtyZXR1cm4gVH0pLGQ9cSgoKT0+Ryh7ZXh0ZW5kOkcoSiksLi4uay51aT8uY2hlY2tib3h8fHt9fSkoe3NpemU6Yy52YWx1ZSxjb2xvcjptLnZhbHVlLHZhcmlhbnQ6JC52YWx1ZSxpbmRpY2F0b3I6YS5pbmRpY2F0b3IscmVxdWlyZWQ6YS5yZXF1aXJlZCxkaXNhYmxlZDpzLnZhbHVlfSkpO2Z1bmN0aW9uIE4oRil7Y29uc3QgVD1uZXcgRXZlbnQoImNoYW5nZSIse3RhcmdldDp7dmFsdWU6Rn19KTtiKCJjaGFuZ2UiLFQpLG8oKSxuKCl9cmV0dXJuKEYsVCk9PihmKCksdyhlKEEpLHthczplKCQpPT09Imxpc3QiP3QuYXM6ZShMKSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6QyhkLnZhbHVlLnJvb3Qoe2NsYXNzOltlKGwpPy5yb290LGEuY2xhc3NdfSkpfSx7ZGVmYXVsdDpnKCgpPT5bVigiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6QyhkLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZShsKT8uY29udGFpbmVyfSkpfSxbaChlKEdlKSxNKHtpZDplKF8pfSx7Li4uZSh1KSwuLi5VLnZhbHVlLC4uLmUoaSl9LHtuYW1lOmUodiksZGlzYWJsZWQ6ZShzKSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6ZC52YWx1ZS5iYXNlKHtjbGFzczplKGwpPy5iYXNlfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOk59KSx7ZGVmYXVsdDpnKCh7c3RhdGU6bmV9KT0+W2goZShKZSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkMoZC52YWx1ZS5pbmRpY2F0b3Ioe2NsYXNzOmUobCk/LmluZGljYXRvcn0pKX0se2RlZmF1bHQ6ZygoKT0+W25lPT09ImluZGV0ZXJtaW5hdGUiPyhmKCksdyhELHtrZXk6MCxuYW1lOnQuaW5kZXRlcm1pbmF0ZUljb258fGUoaykudWkuaWNvbnMubWludXMsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOkMoZC52YWx1ZS5pY29uKHtjbGFzczplKGwpPy5pY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihmKCksdyhELHtrZXk6MSxuYW1lOnQuaWNvbnx8ZShrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6QyhkLnZhbHVlLmljb24oe2NsYXNzOmUobCk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV0pLF86MX0sMTYsWyJpZCIsIm5hbWUiLCJkaXNhYmxlZCIsImNsYXNzIl0pXSwyKSx0LmxhYmVsfHxyLmxhYmVsfHx0LmRlc2NyaXB0aW9ufHxyLmRlc2NyaXB0aW9uPyhmKCkseCgiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOkMoZC52YWx1ZS53cmFwcGVyKHtjbGFzczplKGwpPy53cmFwcGVyfSkpfSxbdC5sYWJlbHx8ci5sYWJlbD8oZigpLHcoVyhlKCQpPT09Imxpc3QiP2UoTCk6InAiKSx7a2V5OjAsZm9yOmUoXyksImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpDKGQudmFsdWUubGFiZWwoe2NsYXNzOmUobCk/LmxhYmVsfSkpfSx7ZGVmYXVsdDpnKCgpPT5beihGLiRzbG90cywibGFiZWwiLHtsYWJlbDp0LmxhYmVsfSwoKT0+W1koSSh0LmxhYmVsKSwxKV0pXSksXzozfSw4LFsiZm9yIiwiY2xhc3MiXSkpOlIoIiIsITApLHQuZGVzY3JpcHRpb258fHIuZGVzY3JpcHRpb24/KGYoKSx4KCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpDKGQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUobCk/LmRlc2NyaXB0aW9ufSkpfSxbeihGLiRzbG90cywiZGVzY3JpcHRpb24iLHtkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufSwoKT0+W1koSSh0LmRlc2NyaXB0aW9uKSwxKV0pXSwyKSk6UigiIiwhMCldLDIpKTpSKCIiLCEwKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX0pLFFlPVsidXNlciIsInByb2plY3QiLCJiaWxsaW5nIiwic2VsZmhvc3QiXSxXZT1bInJlYWQiLCJ3cml0ZSIsImRlbGV0ZSIsIm1hbmFnZSJdLGxlPW5ldyBTZXQoWyJ1c2VyOmltcGVyc29uYXRlIiwic3lzdGVtOm1hbmFnZSIsInN1cHBvcnQ6bWFuYWdlIiwicHJvZHVjdDp3cml0ZSIsInByb2R1Y3Q6ZGVsZXRlIiwicHJvZHVjdDptYW5hZ2UiXSksWGU9bmV3IFNldChRZS5mbGF0TWFwKHQ9PldlLm1hcChwPT5gJHt0fToke3B9YCkpKSxlYT1uZXcgU2V0KFtdKSxhYT17cmVhZDoiVmlldyIsd3JpdGU6IkNyZWF0ZSBhbmQgZWRpdCIsZGVsZXRlOiJEZWxldGUiLG1hbmFnZToiRnVsbCBjb250cm9sIG92ZXIiLGltcGVyc29uYXRlOiJJbXBlcnNvbmF0ZSJ9O2Z1bmN0aW9uIHRhKHQpe3JldHVybiBsZS5oYXModCk/InN5c3RlbSI6InRlbmFudCJ9ZnVuY3Rpb24gc2EodCl7Y29uc3R7c3ViamVjdDpwLGFjdGlvbjphLHNjb3BlOnJ9PUllKHQpLGI9YCR7YWFbYV0/P2F9ICR7cH1gO3JldHVybntrZXk6dCxzdWJqZWN0OnAsYWN0aW9uOmEsc2NvcGU6cj8/bnVsbCxvcmdfa2luZDp0YSh0KSxkZXNjcmlwdGlvbjpyPT09InNlbGYiP2Ake2J9IChvd24gb25seSlgOmJ9fWZ1bmN0aW9uIHJlKCl7cmV0dXJuWy4uLlhlLC4uLmxlLC4uLmVhXS5tYXAoc2EpfW5ldyBTZXQocmUoKS5tYXAodD0+dC5rZXkpKTtjb25zdCBvYT17Y2xhc3M6InNwYWNlLXktNCJ9LGxhPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiBtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8ifSxyYT17Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxuYT1CKHtfX25hbWU6Ik9yZ2FuaXphdGlvblJvbGVNb2RhbCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbn0scm9sZTp7fX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiIsInNhdmVkIl0sc2V0dXAodCx7ZW1pdDpwfSl7Y29uc3QgYT10LHI9cCxiPXNlKCksaz1YKCksbD1yZSgpLmZpbHRlcih2PT52Lm9yZ19raW5kPT09InRlbmFudCIpLHU9UygiIikseT1TKCIiKSxvPVMoW10pLG49UyghMSk7U2UoKCk9PmEub3Blbix2PT57diYmKHUudmFsdWU9YS5yb2xlPy5uYW1lPz8iIix5LnZhbHVlPWEucm9sZT8uZGVzY3JpcHRpb24/PyIiLG8udmFsdWU9YS5yb2xlPy5wZXJtaXNzaW9ucz9bLi4uYS5yb2xlLnBlcm1pc3Npb25zXTpbXSl9KTtmdW5jdGlvbiBjKHYscyl7cz9vLnZhbHVlPVsuLi5vLnZhbHVlLHZdOm8udmFsdWU9by52YWx1ZS5maWx0ZXIoaT0+aSE9PXYpfWFzeW5jIGZ1bmN0aW9uIG0oKXtuLnZhbHVlPSEwO3RyeXthLnJvbGU/YXdhaXQgYi51cGRhdGVSb2xlKGEucm9sZS5pZCx7bmFtZTp1LnZhbHVlLGRlc2NyaXB0aW9uOnkudmFsdWV8fHZvaWQgMCxwZXJtaXNzaW9uczpvLnZhbHVlfSk6YXdhaXQgYi5jcmVhdGVSb2xlKHtuYW1lOnUudmFsdWUsZGVzY3JpcHRpb246eS52YWx1ZXx8dm9pZCAwLHBlcm1pc3Npb25zOm8udmFsdWV9KSxrLmFkZCh7dGl0bGU6IlJvbGUgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pLHIoInNhdmVkIikscigidXBkYXRlOm9wZW4iLCExKX1jYXRjaCh2KXtjb25zdCBzPXY7ay5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gc2F2ZSByb2xlIixkZXNjcmlwdGlvbjpzPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7bi52YWx1ZT0hMX19cmV0dXJuKHYscyk9Pntjb25zdCBpPSRlLF89UmUsJD1aZSxFPWVlLFU9RmU7cmV0dXJuIGYoKSx3KFUse29wZW46dC5vcGVuLHRpdGxlOnQucm9sZT9gRWRpdCBSb2xlIOKAlCAke3Qucm9sZS5uYW1lfWA6Ik5ldyBSb2xlIiwib25VcGRhdGU6b3BlbiI6c1s0XXx8KHNbNF09ZD0+cigidXBkYXRlOm9wZW4iLGQpKX0se2JvZHk6ZygoKT0+W1YoImRpdiIsb2EsW2goXyx7bGFiZWw6Ik5hbWUiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpnKCgpPT5baChpLHttb2RlbFZhbHVlOmUodSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnNbMF18fChzWzBdPWQ9PksodSk/dS52YWx1ZT1kOm51bGwpLHBsYWNlaG9sZGVyOiJlLmcuIEVkaXRvciIsZGlzYWJsZWQ6ISF0LnJvbGU/LmlzX3N5c3RlbSxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsImRpc2FibGVkIl0pXSksXzoxfSksaChfLHtsYWJlbDoiRGVzY3JpcHRpb24ifSx7ZGVmYXVsdDpnKCgpPT5baChpLHttb2RlbFZhbHVlOmUoeSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnNbMV18fChzWzFdPWQ9PksoeSk/eS52YWx1ZT1kOm51bGwpLHBsYWNlaG9sZGVyOiJPcHRpb25hbCBkZXNjcmlwdGlvbiIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxoKF8se2xhYmVsOiJQZXJtaXNzaW9ucyJ9LHtkZWZhdWx0OmcoKCk9PltWKCJkaXYiLGxhLFsoZighMCkseChhZSxudWxsLHRlKGUobCksZD0+KGYoKSx3KCQse2tleTpkLmtleSwibW9kZWwtdmFsdWUiOmUobykuaW5jbHVkZXMoZC5rZXkpLGxhYmVsOmQua2V5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjpOPT5jKGQua2V5LE49PT0hMCl9LG51bGwsOCxbIm1vZGVsLXZhbHVlIiwibGFiZWwiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pKSksMTI4KSldKV0pLF86MX0pXSldKSxmb290ZXI6ZygoKT0+W1YoImRpdiIscmEsW2goRSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOnNbMl18fChzWzJdPWQ9PnIoInVwZGF0ZTpvcGVuIiwhMSkpfSksaChFLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzplKG4pLG9uQ2xpY2s6c1szXXx8KHNbM109ZD0+bSgpKX0sbnVsbCw4LFsibG9hZGluZyJdKV0pXSksXzoxfSw4LFsib3BlbiIsInRpdGxlIl0pfX19KSxpYT1PYmplY3QuYXNzaWduKG5hLHtfX25hbWU6Ik9yZ2FuaXphdGlvblJvbGVNb2RhbCJ9KSxkYT17a2V5OjAsY2xhc3M6InRleHQtY2VudGVyIHB5LTggdGV4dC1tdXRlZCB0ZXh0LXNtIn0sdWE9e2tleToxLGNsYXNzOiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9LGNhPXtjbGFzczoiZm9udC1tZWRpdW0ifSxwYT17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LGZhPXtjbGFzczoidGV4dC14cyB0ZXh0LWRpbW1lZCJ9LG1hPXtjbGFzczoiZmxleCBnYXAtMiBzaHJpbmstMCJ9LHdhPUIoe19fbmFtZToicm9sZXMiLHNldHVwKHQpe3plKHt0aXRsZToiUm9sZXMifSk7Y29uc3QgcD1zZSgpLGE9WCgpLHtkYXRhOnIscmVmcmVzaDpiLGVycm9yOmt9PUJlKCJvcmctcm9sZXMiLCgpPT5wLmZldGNoUm9sZXMoKSx7ZGVmYXVsdDooKT0+W119KTtFZShrKTtjb25zdCBsPVMoITEpLHU9UyhudWxsKTtmdW5jdGlvbiB5KCl7dS52YWx1ZT1udWxsLGwudmFsdWU9ITB9ZnVuY3Rpb24gbyhjKXt1LnZhbHVlPWMsbC52YWx1ZT0hMH1hc3luYyBmdW5jdGlvbiBuKGMpe3RyeXthd2FpdCBwLmRlbGV0ZVJvbGUoYyksYXdhaXQgYigpfWNhdGNoKG0pe2NvbnN0IHY9bTthLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBkZWxldGUgcm9sZSIsZGVzY3JpcHRpb246dj8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19cmV0dXJuKGMsbSk9Pntjb25zdCB2PWVlLHM9VGU7cmV0dXJuIGYoKSx4KCJkaXYiLG51bGwsW2gocyx7dGl0bGU6IlJvbGVzIixkZXNjcmlwdGlvbjoiTWFuYWdlIHJvbGVzIGFuZCB0aGVpciBwZXJtaXNzaW9ucy4iLHZhcmlhbnQ6Im5ha2VkIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6Im1iLTQifSx7ZGVmYXVsdDpnKCgpPT5baCh2LHtsYWJlbDoiTmV3IHJvbGUiLGljb246ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIixvbkNsaWNrOnl9KV0pLF86MX0pLGgocyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6ZygoKT0+W2UocikubGVuZ3RoPyhmKCkseCgiZGl2Iix1YSxbKGYoITApLHgoYWUsbnVsbCx0ZShlKHIpLGk9PihmKCkseCgiZGl2Iix7a2V5OmkuaWQsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweS0zIGdhcC00In0sW1YoImRpdiIsbnVsbCxbVigicCIsY2EsSShpLm5hbWUpLDEpLGkuZGVzY3JpcHRpb24/KGYoKSx4KCJwIixwYSxJKGkuZGVzY3JpcHRpb24pLDEpKTpSKCIiLCEwKSxWKCJwIixmYSxJKGkucGVybWlzc2lvbnMubGVuZ3RoKSsiIHBlcm1pc3Npb24iK0koaS5wZXJtaXNzaW9ucy5sZW5ndGghPT0xPyJzIjoiIiksMSldKSxWKCJkaXYiLG1hLFtoKHYse3NpemU6InNtIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLXBlbmNpbCIsb25DbGljazpfPT5vKGkpfSxudWxsLDgsWyJvbkNsaWNrIl0pLGkuaXNfc3lzdGVtP1IoIiIsITApOihmKCksdyh2LHtrZXk6MCxzaXplOiJzbSIsY29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsb25DbGljazpfPT5uKGkuaWQpfSxudWxsLDgsWyJvbkNsaWNrIl0pKV0pXSkpKSwxMjgpKV0pKTooZigpLHgoImRpdiIsZGEsIiBObyBjdXN0b20gcm9sZXMgeWV0LiAiKSldKSxfOjF9KSxoKGlhLHtvcGVuOmUobCksIm9uVXBkYXRlOm9wZW4iOm1bMF18fChtWzBdPWk9PksobCk/bC52YWx1ZT1pOm51bGwpLHJvbGU6ZSh1KSxvblNhdmVkOm1bMV18fChtWzFdPWk9PmUoYikoKSl9LG51bGwsOCxbIm9wZW4iLCJyb2xlIl0pXSl9fX0pO2V4cG9ydHt3YSBhcyBkZWZhdWx0fTsK", "/_nuxt/BZlNNfk4.js": "aW1wb3J0e2YgYXMgaCxvIGFzIGksYyBhcyBsLGEgYXMgZCxGIGFzIHcscSBhcyBSLE0gYXMgZix0IGFzIGMsYWIgYXMgbSxiIGFzIF8sWiBhcyBTLEcgYXMgQixpIGFzIGcsYXIgYXMgQyxqIGFzIE0sdiBhcyBWLHIgYXMgan1mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0IGs9e2NsYXNzOiJmbGV4IGZsZXgtY29sIGgtZnVsbCJ9LCQ9e2NsYXNzOiJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTMgcC00In0sRD17Y2xhc3M6IndoaXRlc3BhY2UtcHJlLXdyYXAgYnJlYWstd29yZHMifSxLPXtjbGFzczoibXQtMSB0ZXh0LVsxMHB4XSBvcGFjaXR5LTcwIn0sTj1oKHtfX25hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24iLHByb3BzOnttZXNzYWdlczp7fSx2aWV3ZXJSb2xlOnt9LGNhblJlcGx5Ont0eXBlOkJvb2xlYW59LHNlbmRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic2VuZCJdLHNldHVwKHkse2VtaXQ6eH0pe2NvbnN0IG49eSx2PXgsbz1qKCIiKTtmdW5jdGlvbiB1KCl7Y29uc3QgdD1vLnZhbHVlLnRyaW0oKTshdHx8bi5zZW5kaW5nfHwodigic2VuZCIsdCksby52YWx1ZT0iIil9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdC5hdXRob3JSb2xlPT09bi52aWV3ZXJSb2xlfWZ1bmN0aW9uIGIodCl7Y29uc3Qgcj1EYXRlLm5vdygpLW5ldyBEYXRlKHQpLmdldFRpbWUoKSxzPU1hdGguZmxvb3Ioci82ZTQpO2lmKHM8MSlyZXR1cm4ianVzdCBub3ciO2lmKHM8NjApcmV0dXJuYCR7c31tIGFnb2A7Y29uc3QgYT1NYXRoLmZsb29yKHMvNjApO3JldHVybiBhPDI0P2Ake2F9aCBhZ29gOmAke01hdGguZmxvb3IoYS8yNCl9ZCBhZ29gfXJldHVybih0LHIpPT57Y29uc3Qgcz1DLGE9TTtyZXR1cm4gaSgpLGwoImRpdiIsayxbZCgiZGl2IiwkLFsoaSghMCksbCh3LG51bGwsUihuLm1lc3NhZ2VzLGU9PihpKCksbCgiZGl2Iix7a2V5OmUuaWQsY2xhc3M6ZihbImZsZXgiLHAoZSk/Imp1c3RpZnktZW5kIjoianVzdGlmeS1zdGFydCJdKX0sW2QoImRpdiIse2NsYXNzOmYoWyJtYXgtdy1bODAlXSByb3VuZGVkLWxnIHB4LTMgcHktMiB0ZXh0LXNtIixwKGUpPyJiZy1wcmltYXJ5IHRleHQtaW52ZXJ0ZWQiOiJiZy1lbGV2YXRlZCB0ZXh0LWRlZmF1bHQiXSl9LFtkKCJwIixELGMoZS5ib2R5KSwxKSxkKCJwIixLLGMoZS5hdXRob3JSb2xlPT09ImFnZW50Ij8iU3VwcG9ydCI6IllvdSIpKyIgwrcgIitjKGIoZS5jcmVhdGVkQXQpKSwxKV0sMildLDIpKSksMTI4KSldKSxuLmNhblJlcGx5PyhpKCksbCgiZm9ybSIse2tleTowLGNsYXNzOiJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTMgZmxleCBpdGVtcy1lbmQgZ2FwLTIiLG9uU3VibWl0Om0odSxbInByZXZlbnQiXSl9LFtfKHMse21vZGVsVmFsdWU6ZyhvKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6clswXXx8KHJbMF09ZT0+QihvKT9vLnZhbHVlPWU6bnVsbCkscm93czoyLGF1dG9yZXNpemU6IiIscGxhY2Vob2xkZXI6IldyaXRlIGEgcmVwbHnigKYiLGNsYXNzOiJmbGV4LTEiLG9uS2V5ZG93bjpTKG0odSxbImV4YWN0IiwicHJldmVudCJdKSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25LZXlkb3duIl0pLF8oYSx7dHlwZToic3VibWl0IixpY29uOiJpLWx1Y2lkZS1zZW5kIixsb2FkaW5nOm4uc2VuZGluZyxkaXNhYmxlZDohZyhvKS50cmltKCl9LG51bGwsOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0sMzIpKTpWKCIiLCEwKV0pfX19KSx6PU9iamVjdC5hc3NpZ24oTix7X19uYW1lOiJTdXBwb3J0Q29udmVyc2F0aW9uIn0pO2V4cG9ydHt6IGFzIFN9Owo=", "/_nuxt/Bd4-Oc36.js": "aW1wb3J0e18gYXMgZH1mcm9tIi4vQ2M2emloLVIuanMiO2ltcG9ydHtmIGFzIHUsYVYgYXMgZixvIGFzIHQsaCBhcyBzLHcgYXMgYSxMIGFzIGIsYiBhcyBuLGMgYXMgaCxxIGFzIHksYWMgYXMgZyxpIGFzIHYsRiBhcyBDLGFXIGFzIGssbCBhcyBEfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgTn1mcm9tIi4vZ2hxWWJJU1QuanMiO2NvbnN0ICQ9dSh7X19uYW1lOiJEYXNoYm9hcmROYXZiYXIiLHByb3BzOnt0aXRsZTp7fX0sc2V0dXAoYyl7Y29uc3QgaT1mKCksXz1EKCgpPT5bLi4uaS5uYXZiYXJJdGVtcy52YWx1ZV0uc29ydCgoZSxvKT0+ZS5wcmlvcml0eS1vLnByaW9yaXR5KSk7cmV0dXJuKGUsbyk9Pntjb25zdCBsPWQsbT1rLHA9TjtyZXR1cm4gdCgpLHMocCx7dGl0bGU6Yy50aXRsZX0se2xlYWRpbmc6YSgoKT0+W24obCldKSxyaWdodDphKCgpPT5bYihlLiRzbG90cywicmlnaHQiKSxuKG0sbnVsbCx7ZGVmYXVsdDphKCgpPT5bKHQoITApLGgoQyxudWxsLHkodihfKSxyPT4odCgpLHMoZyhyLmNvbXBvbmVudCkse2tleTpyLmlkfSkpKSwxMjgpKV0pLF86MX0pXSksXzozfSw4LFsidGl0bGUiXSl9fX0pO2V4cG9ydHskIGFzIF99Owo=", "/_nuxt/BdZX5xgf.js": "aW1wb3J0e2YgYXMgbSxhOCBhcyBoLG8gYXMgdSxoIGFzIGYsdyBhcyBkLEwgYXMgYyxkIGFzIFIsYWEgYXMgUCxpIGFzIGwsUCBhcyBxLGF1IGFzIEEsYTkgYXMgVSxsIGFzIHAsYTcgYXMgSixhdiBhcyBLLGF3IGFzIE8sdCBhcyBULGFoIGFzIEcsYXggYXMgSCxKIGFzIFEsSyBhcyBXLGFpIGFzIFgsYWogYXMgWSxiIGFzIHgsTSBhcyBfLGogYXMgTCx2IGFzIGssYyBhcyBTLEYgYXMgVixxIGFzIFosTiBhcyBEfWZyb20iLi9vOHRkX0cwSi5qcyI7dmFyIGVlPW0oe19fbmFtZToiUGFnaW5hdGlvbkVsbGlwc2lzIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3Qgcz1lO3JldHVybiBoKCksKGEsaSk9Pih1KCksZihsKHEpLFAocyx7ImRhdGEtdHlwZSI6ImVsbGlwc2lzIn0pLHtkZWZhdWx0OmQoKCk9PltjKGEuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2lbMF18fChpWzBdPVIoIuKApiIpKV0pXSksXzozfSwxNikpfX0pLGFlPWVlO2NvbnN0WyQsdGVdPUooIlBhZ2luYXRpb25Sb290Iik7dmFyIGxlPW0oe19fbmFtZToiUGFnaW5hdGlvblJvb3QiLHByb3BzOntwYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFBhZ2U6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MX0saXRlbXNQZXJQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMH0sdG90YWw6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sc2libGluZ0NvdW50Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNob3dFZGdlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuYXYifX0sZW1pdHM6WyJ1cGRhdGU6cGFnZSJdLHNldHVwKGUse2VtaXQ6c30pe2NvbnN0IGE9ZSxpPXMse3NpYmxpbmdDb3VudDpuLGRpc2FibGVkOnQsc2hvd0VkZ2VzOm99PUEoYSk7aCgpO2NvbnN0IHI9VShhLCJwYWdlIixpLHtkZWZhdWx0VmFsdWU6YS5kZWZhdWx0UGFnZSxwYXNzaXZlOmEucGFnZT09PXZvaWQgMH0pLHk9cCgoKT0+TWF0aC5tYXgoMSxNYXRoLmNlaWwoYS50b3RhbC8oYS5pdGVtc1BlclBhZ2V8fDEpKSkpO3JldHVybiB0ZSh7cGFnZTpyLG9uUGFnZUNoYW5nZShnKXtyLnZhbHVlPWd9LHBhZ2VDb3VudDp5LHNpYmxpbmdDb3VudDpuLGRpc2FibGVkOnQsc2hvd0VkZ2VzOm99KSwoZyxOKT0+KHUoKSxmKGwocSkse2FzOmcuYXMsImFzLWNoaWxkIjpnLmFzQ2hpbGR9LHtkZWZhdWx0OmQoKCk9PltjKGcuJHNsb3RzLCJkZWZhdWx0Iix7cGFnZTpsKHIpLHBhZ2VDb3VudDp5LnZhbHVlfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIl0pKX19KSxzZT1sZSxpZT1tKHtfX25hbWU6IlBhZ2luYXRpb25GaXJzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lLGE9JCgpO2goKTtjb25zdCBpPXAoKCk9PmEucGFnZS52YWx1ZT09PTF8fGEuZGlzYWJsZWQudmFsdWUpO3JldHVybihuLHQpPT4odSgpLGYobChxKSxQKHMseyJhcmlhLWxhYmVsIjoiRmlyc3QgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UoMSkpfSkse2RlZmF1bHQ6ZCgoKT0+W2Mobi4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bdFsxXXx8KHRbMV09UigiRmlyc3QgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSksbmU9aWUsb2U9bSh7X19uYW1lOiJQYWdpbmF0aW9uTGFzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lLGE9JCgpO2goKTtjb25zdCBpPXAoKCk9PmEucGFnZS52YWx1ZT09PWEucGFnZUNvdW50LnZhbHVlfHxhLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4obix0KT0+KHUoKSxmKGwocSksUChzLHsiYXJpYS1sYWJlbCI6Ikxhc3QgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UobChhKS5wYWdlQ291bnQudmFsdWUpKX0pLHtkZWZhdWx0OmQoKCk9PltjKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3RbMV18fCh0WzFdPVIoIkxhc3QgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSkscmU9b2U7ZnVuY3Rpb24gYihlLHMpe2NvbnN0IGE9cy1lKzE7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDphfSwoaSxuKT0+bitlKX1mdW5jdGlvbiB1ZShlKXtyZXR1cm4gZS5tYXAocz0+dHlwZW9mIHM9PSJudW1iZXIiP3t0eXBlOiJwYWdlIix2YWx1ZTpzfTp7dHlwZToiZWxsaXBzaXMifSl9Y29uc3QgQj0iZWxsaXBzaXMiO2Z1bmN0aW9uIGRlKGUscyxhLGkpe2NvbnN0IHQ9cyxvPU1hdGgubWF4KGUtYSwxKSxyPU1hdGgubWluKGUrYSx0KTtpZihpKXtjb25zdCBnPU1hdGgubWluKDIqYSs1LHMpLTIsTj1vPjMmJk1hdGguYWJzKHQtZy0xKzEpPjImJk1hdGguYWJzKG8tMSk+Mix3PXI8dC0yJiZNYXRoLmFicyh0LWcpPjImJk1hdGguYWJzKHQtcik+MjtpZighTiYmdylyZXR1cm5bLi4uYigxLGcpLEIsdF07aWYoTiYmIXcpe2NvbnN0IHY9Yih0LWcrMSx0KTtyZXR1cm5bMSxCLC4uLnZdfWlmKE4mJncpe2NvbnN0IHY9YihvLHIpO3JldHVyblsxLEIsLi4udixCLHRdfXJldHVybiBiKDEsdCl9ZWxzZXtjb25zdCB5PWEqMisxO3JldHVybiBzPHk/YigxLHQpOmU8PWErMT9iKDEseSk6cy1lPD1hP2Iocy15KzEsdCk6YihvLHIpfX12YXIgdmU9bSh7X19uYW1lOiJQYWdpbmF0aW9uTGlzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHM9ZTtoKCk7Y29uc3QgYT0kKCksaT1wKCgpPT51ZShkZShhLnBhZ2UudmFsdWUsYS5wYWdlQ291bnQudmFsdWUsYS5zaWJsaW5nQ291bnQudmFsdWUsYS5zaG93RWRnZXMudmFsdWUpKSk7cmV0dXJuKG4sdCk9Pih1KCksZihsKHEpLEsoTyhzKSkse2RlZmF1bHQ6ZCgoKT0+W2Mobi4kc2xvdHMsImRlZmF1bHQiLHtpdGVtczppLnZhbHVlfSldKSxfOjN9LDE2KSl9fSksZmU9dmUsY2U9bSh7X19uYW1lOiJQYWdpbmF0aW9uTGlzdEl0ZW0iLHByb3BzOnt2YWx1ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lO2goKTtjb25zdCBhPSQoKSxpPXAoKCk9PmEucGFnZS52YWx1ZT09PXMudmFsdWUpLG49cCgoKT0+YS5kaXNhYmxlZC52YWx1ZSk7cmV0dXJuKHQsbyk9Pih1KCksZihsKHEpLFAocyx7ImRhdGEtdHlwZSI6InBhZ2UiLCJhcmlhLWxhYmVsIjpgUGFnZSAke3QudmFsdWV9YCwiYXJpYS1jdXJyZW50IjppLnZhbHVlPyJwYWdlIjp2b2lkIDAsImRhdGEtc2VsZWN0ZWQiOmkudmFsdWU/InRydWUiOnZvaWQgMCxkaXNhYmxlZDpuLnZhbHVlLHR5cGU6dC5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCxvbkNsaWNrOm9bMF18fChvWzBdPXI9PiFuLnZhbHVlJiZsKGEpLm9uUGFnZUNoYW5nZSh0LnZhbHVlKSl9KSx7ZGVmYXVsdDpkKCgpPT5bYyh0LiRzbG90cywiZGVmYXVsdCIse30sKCk9PltSKFQodC52YWx1ZSksMSldKV0pLF86M30sMTYsWyJhcmlhLWxhYmVsIiwiYXJpYS1jdXJyZW50IiwiZGF0YS1zZWxlY3RlZCIsImRpc2FibGVkIiwidHlwZSJdKSl9fSkscGU9Y2UsZ2U9bSh7X19uYW1lOiJQYWdpbmF0aW9uTmV4dCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lO2goKTtjb25zdCBhPSQoKSxpPXAoKCk9PmEucGFnZS52YWx1ZT09PWEucGFnZUNvdW50LnZhbHVlfHxhLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4obix0KT0+KHUoKSxmKGwocSksUChzLHsiYXJpYS1sYWJlbCI6Ik5leHQgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UobChhKS5wYWdlLnZhbHVlKzEpKX0pLHtkZWZhdWx0OmQoKCk9PltjKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3RbMV18fCh0WzFdPVIoIk5leHQgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSkseWU9Z2UsYmU9bSh7X19uYW1lOiJQYWdpbmF0aW9uUHJldiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lO2goKTtjb25zdCBhPSQoKSxpPXAoKCk9PmEucGFnZS52YWx1ZT09PTF8fGEuZGlzYWJsZWQudmFsdWUpO3JldHVybihuLHQpPT4odSgpLGYobChxKSxQKHMseyJhcmlhLWxhYmVsIjoiUHJldmlvdXMgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UobChhKS5wYWdlLnZhbHVlLTEpKX0pLHtkZWZhdWx0OmQoKCk9PltjKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3RbMV18fCh0WzFdPVIoIlByZXYgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSksUGU9YmU7Y29uc3QgbWU9e3Nsb3RzOntyb290OiIiLGxpc3Q6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIixlbGxpcHNpczoicG9pbnRlci1ldmVudHMtbm9uZSIsbGFiZWw6Im1pbi13LTUgdGV4dC1jZW50ZXIiLGZpcnN0OiIiLHByZXY6IiIsaXRlbToiIixuZXh0OiIiLGxhc3Q6IiJ9fSxDZT17X19uYW1lOiJVUGFnaW5hdGlvbiIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGZpcnN0SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwcmV2SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuZXh0SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYXN0SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxlbGxpcHNpc0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuZXV0cmFsIn0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im91dGxpbmUifSxhY3RpdmVDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InByaW1hcnkifSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic29saWQifSxzaG93Q29udHJvbHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRvOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGRlZmF1bHRQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saXRlbXNQZXJQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxwYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2hvd0VkZ2VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sc2libGluZ0NvdW50Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjJ9LHRvdGFsOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9fSxlbWl0czpbInVwZGF0ZTpwYWdlIl0sc2V0dXAoZSx7ZW1pdDpzfSl7Y29uc3QgYT1lLGk9cyxuPUcoKSx7ZGlyOnR9PUgoKSxvPVEoKSxyPVcoInBhZ2luYXRpb24iLGEpLHk9WChZKGEsImFzIiwiZGVmYXVsdFBhZ2UiLCJkaXNhYmxlZCIsIml0ZW1zUGVyUGFnZSIsInBhZ2UiLCJzaG93RWRnZXMiLCJzaWJsaW5nQ291bnQiLCJ0b3RhbCIpLGkpLGc9cCgoKT0+YS5maXJzdEljb258fCh0LnZhbHVlPT09InJ0bCI/by51aS5pY29ucy5jaGV2cm9uRG91YmxlUmlnaHQ6by51aS5pY29ucy5jaGV2cm9uRG91YmxlTGVmdCkpLE49cCgoKT0+YS5wcmV2SWNvbnx8KHQudmFsdWU9PT0icnRsIj9vLnVpLmljb25zLmNoZXZyb25SaWdodDpvLnVpLmljb25zLmNoZXZyb25MZWZ0KSksdz1wKCgpPT5hLm5leHRJY29ufHwodC52YWx1ZT09PSJydGwiP28udWkuaWNvbnMuY2hldnJvbkxlZnQ6by51aS5pY29ucy5jaGV2cm9uUmlnaHQpKSxNPXAoKCk9PmEubGFzdEljb258fCh0LnZhbHVlPT09InJ0bCI/by51aS5pY29ucy5jaGV2cm9uRG91YmxlTGVmdDpvLnVpLmljb25zLmNoZXZyb25Eb3VibGVSaWdodCkpLHY9cCgoKT0+RCh7ZXh0ZW5kOkQobWUpLC4uLm8udWk/LnBhZ2luYXRpb258fHt9fSkoKSk7cmV0dXJuKHosaGUpPT4odSgpLGYobChzZSksUChsKHkpLHsiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6di52YWx1ZS5yb290KHtjbGFzczpbbChyKT8ucm9vdCxhLmNsYXNzXX0pfSkse2RlZmF1bHQ6ZCgoe3BhZ2U6QyxwYWdlQ291bnQ6RX0pPT5beChsKGZlKSx7ImRhdGEtc2xvdCI6Imxpc3QiLGNsYXNzOl8odi52YWx1ZS5saXN0KHtjbGFzczpsKHIpPy5saXN0fSkpfSx7ZGVmYXVsdDpkKCh7aXRlbXM6an0pPT5bZS5zaG93Q29udHJvbHN8fG4uZmlyc3Q/KHUoKSxmKGwobmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJmaXJzdCIsY2xhc3M6Xyh2LnZhbHVlLmZpcnN0KHtjbGFzczpsKHIpPy5maXJzdH0pKX0se2RlZmF1bHQ6ZCgoKT0+W2Moei4kc2xvdHMsImZpcnN0Iix7fSwoKT0+W3goTCx7Y29sb3I6ZS5jb2xvcix2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZSxpY29uOmcudmFsdWUsdG86ZS50bz8uKDEpfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6aygiIiwhMCksZS5zaG93Q29udHJvbHN8fG4ucHJldj8odSgpLGYobChQZSkse2tleToxLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6InByZXYiLGNsYXNzOl8odi52YWx1ZS5wcmV2KHtjbGFzczpsKHIpPy5wcmV2fSkpfSx7ZGVmYXVsdDpkKCgpPT5bYyh6LiRzbG90cywicHJldiIse30sKCk9Plt4KEwse2NvbG9yOmUuY29sb3IsdmFyaWFudDplLnZhcmlhbnQsc2l6ZTplLnNpemUsaWNvbjpOLnZhbHVlLHRvOkM+MT9lLnRvPy4oQy0xKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTprKCIiLCEwKSwodSghMCksUyhWLG51bGwsWihqLChJLEYpPT4odSgpLFMoVix7a2V5OkZ9LFtJLnR5cGU9PT0icGFnZSI/KHUoKSxmKGwocGUpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLHZhbHVlOkkudmFsdWUsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOl8odi52YWx1ZS5pdGVtKHtjbGFzczpsKHIpPy5pdGVtfSkpfSx7ZGVmYXVsdDpkKCgpPT5bYyh6LiRzbG90cywiaXRlbSIsUCh7cmVmX2ZvcjohMH0se2l0ZW06SSxpbmRleDpGLHBhZ2U6QyxwYWdlQ291bnQ6RX0pLCgpPT5beChMLHtjb2xvcjpDPT09SS52YWx1ZT9lLmFjdGl2ZUNvbG9yOmUuY29sb3IsdmFyaWFudDpDPT09SS52YWx1ZT9lLmFjdGl2ZVZhcmlhbnQ6ZS52YXJpYW50LHNpemU6ZS5zaXplLGxhYmVsOlN0cmluZyhJLnZhbHVlKSx1aTp7bGFiZWw6di52YWx1ZS5sYWJlbCgpfSx0bzplLnRvPy4oSS52YWx1ZSksc3F1YXJlOiIifSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwibGFiZWwiLCJ1aSIsInRvIl0pXSldKSxfOjJ9LDEwMzIsWyJ2YWx1ZSIsImNsYXNzIl0pKToodSgpLGYobChhZSkse2tleToxLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6ImVsbGlwc2lzIixjbGFzczpfKHYudmFsdWUuZWxsaXBzaXMoe2NsYXNzOmwocik/LmVsbGlwc2lzfSkpfSx7ZGVmYXVsdDpkKCgpPT5bYyh6LiRzbG90cywiZWxsaXBzaXMiLHt1aTp2LnZhbHVlfSwoKT0+W3goTCx7YXM6ImRpdiIsY29sb3I6ZS5jb2xvcix2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZSxpY29uOmUuZWxsaXBzaXNJY29ufHxsKG8pLnVpLmljb25zLmVsbGlwc2lzfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiJdKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpXSw2NCkpKSwxMjgpKSxlLnNob3dDb250cm9sc3x8bi5uZXh0Pyh1KCksZihsKHllKSx7a2V5OjIsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoibmV4dCIsY2xhc3M6Xyh2LnZhbHVlLm5leHQoe2NsYXNzOmwocik/Lm5leHR9KSl9LHtkZWZhdWx0OmQoKCk9PltjKHouJHNsb3RzLCJuZXh0Iix7fSwoKT0+W3goTCx7Y29sb3I6ZS5jb2xvcix2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZSxpY29uOncudmFsdWUsdG86QzxFP2UudG8/LihDKzEpOnZvaWQgMH0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmsoIiIsITApLGUuc2hvd0NvbnRyb2xzfHxuLmxhc3Q/KHUoKSxmKGwocmUpLHtrZXk6MywiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJsYXN0IixjbGFzczpfKHYudmFsdWUubGFzdCh7Y2xhc3M6bChyKT8ubGFzdH0pKX0se2RlZmF1bHQ6ZCgoKT0+W2Moei4kc2xvdHMsImxhc3QiLHt9LCgpPT5beChMLHtjb2xvcjplLmNvbG9yLHZhcmlhbnQ6ZS52YXJpYW50LHNpemU6ZS5zaXplLGljb246TS52YWx1ZSx0bzplLnRvPy4oRSl9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTprKCIiLCEwKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXSksXzozfSwxNixbImNsYXNzIl0pKX19O2V4cG9ydHtDZSBhcyBffTsK", "/_nuxt/BeEMCyuZ.js": "aW1wb3J0e2YgYXMgRixnIGFzIE8sYXQgYXMgUCxSLG8gYXMgcCxoIGFzIEEsdyBhcyBnLGEgYXMgbixiIGFzIG8saixpIGFzIHQsdiBhcyB6LGMgYXMgXyxrIGFzIHEsZCBhcyBDLHQgYXMgayxGIGFzIEUscSBhcyBHLFYgYXMgUSxyIGFzIGMsdSBhcyBILHAgYXMgRCx6IGFzIGgsRCBhcyBXLEcgYXMgTX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIFl9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBKfWZyb20iLi9fMmxTZHIxMy5qcyI7aW1wb3J0e18gYXMgWH1mcm9tIi4vQ1c4ZktuRkUuanMiO2ltcG9ydHtfIGFzIFp9ZnJvbSIuL0JkWlg1eGdmLmpzIjtpbXBvcnR7dSBhcyBJfWZyb20iLi9EYzQ2UXdESi5qcyI7aW1wb3J0Ii4vQzdZeTZ0UjMuanMiO2NvbnN0IGVlPXtrZXk6MCxjbGFzczoidGV4dC1jZW50ZXIgcHktNiJ9LHRlPXtrZXk6MSxjbGFzczoic3BhY2UteS00In0sbmU9e2NsYXNzOiJ0ZXh0LWNlbnRlciJ9LGFlPVsic3JjIl0sc2U9e2NsYXNzOiJ0ZXh0LXNtIHNwYWNlLXktMSBiZy1lbGV2YXRlZCByb3VuZGVkIHAtMyJ9LG9lPXtjbGFzczoiZm9udC1tb25vIn0sbGU9e2tleToyLGNsYXNzOiJzcGFjZS15LTQifSxpZT17Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTIifSxjZT17Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxyZT1GKHtfX25hbWU6IkJpbGxpbmdNb2RhbCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsidXBkYXRlOm9wZW4iLCJzdWNjZXNzIl0sc2V0dXAodyx7ZW1pdDokfSl7Y29uc3QgTj13LGI9JCxCPUkoKSxsPU8oKSxyPVs1ZTQsMWU1LDJlNSw1ZTVdLHk9YyhyWzFdKSx1PWMoITEpLGY9YyghMSksaT1jKG51bGwpLHM9YyhudWxsKSxtPWMobnVsbCksdj1jKG51bGwpLHtwYXVzZTp4LHJlc3VtZTpUfT1QKGFzeW5jKCk9PntpZihpLnZhbHVlKXRyeXtjb25zdHtzdGF0dXM6YX09YXdhaXQgQi5mZXRjaFRyYW5zYWN0aW9uU3RhdHVzKGkudmFsdWUpO2E9PT0ic3VjY2VzcyImJih4KCksZi52YWx1ZT0hMCxiKCJzdWNjZXNzIikpfWNhdGNoe319LDNlMyx7aW1tZWRpYXRlOiExfSk7YXN5bmMgZnVuY3Rpb24gUygpe3UudmFsdWU9ITA7dHJ5e2NvbnN0IGE9YXdhaXQgQi5jaGVja291dCh5LnZhbHVlKTtpLnZhbHVlPWEudHJhbnNhY3Rpb25JZCxzLnZhbHVlPWEucXJVcmwsbS52YWx1ZT1hLmJhbmssdi52YWx1ZT1hLm9yZGVyQ29kZSxUKCksc2V0VGltZW91dCh4LDMwMCoxZTMpfWNhdGNoKGEpe2NvbnN0IGU9YTtsLmFkZCh7dGl0bGU6IkNoZWNrb3V0IGZhaWxlZCIsZGVzY3JpcHRpb246ZT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3UudmFsdWU9ITF9fWZ1bmN0aW9uIFUoKXt4KCksaS52YWx1ZT1udWxsLHMudmFsdWU9bnVsbCxtLnZhbHVlPW51bGwsdi52YWx1ZT1udWxsLGYudmFsdWU9ITEsYigidXBkYXRlOm9wZW4iLCExKX1yZXR1cm4gUigoKT0+Ti5vcGVuLGE9PnthfHxVKCl9KSwoYSxlKT0+e2NvbnN0IEs9cSxWPWosTD1RO3JldHVybiBwKCksQShMLHtvcGVuOncub3Blbix0aXRsZToiVG9wIHVwIGJhbGFuY2UiLCJvblVwZGF0ZTpvcGVuIjplWzJdfHwoZVsyXT1kPT5iKCJ1cGRhdGU6b3BlbiIsZCkpfSx7Ym9keTpnKCgpPT5bdChmKT8ocCgpLF8oImRpdiIsZWUsW28oSyx7bmFtZToiaS1sdWNpZGUtY2lyY2xlLWNoZWNrIixjbGFzczoic2l6ZS0xMiB0ZXh0LXN1Y2Nlc3MgbXgtYXV0byBtYi0zIn0pLGVbM118fChlWzNdPW4oInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCB0ZXh0LWxnIn0sIiBQYXltZW50IHJlY2VpdmVkISAiLC0xKSksZVs0XXx8KGVbNF09bigicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSJ9LCIgWW91ciBiYWxhbmNlIGhhcyBiZWVuIHVwZGF0ZWQuICIsLTEpKV0pKTp0KHMpPyhwKCksXygiZGl2Iix0ZSxbbigiZGl2IixuZSxbbigiaW1nIix7c3JjOnQocyksYWx0OiJTZVBheSBRUiBjb2RlIixjbGFzczoibXgtYXV0byBtYXgtdy1bMjAwcHhdIHJvdW5kZWQifSxudWxsLDgsYWUpXSksbigiZGl2IixzZSxbbigicCIsbnVsbCxbZVs1XXx8KGVbNV09bigic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkJhbms6IiwtMSkpLEMoIiAiK2sodChtKT8uYmFua05hbWUpLDEpXSksbigicCIsbnVsbCxbZVs2XXx8KGVbNl09bigic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkFjY291bnQ6IiwtMSkpLEMoIiAiK2sodChtKT8uYWNjb3VudE51bWJlciksMSldKSxuKCJwIixudWxsLFtlWzddfHwoZVs3XT1uKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiTWVtbzoiLC0xKSksZVs4XXx8KGVbOF09QygpKSxuKCJjb2RlIixvZSxrKHQobSk/LnByZWZpeCkrayh0KHYpKSwxKV0pXSksZVs5XXx8KGVbOV09bigicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIifSwiIFdhaXRpbmcgZm9yIHBheW1lbnQgY29uZmlybWF0aW9u4oCmICIsLTEpKV0pKToocCgpLF8oImRpdiIsbGUsW2VbMTBdfHwoZVsxMF09bigicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFNlbGVjdCB0aGUgYW1vdW50IHRvIHRvcCB1cDogIiwtMSkpLG4oImRpdiIsaWUsWyhwKCksXyhFLG51bGwsRyhyLGQ9Pm8oVix7a2V5OmQsdmFyaWFudDp0KHkpPT09ZD8ic29saWQiOiJvdXRsaW5lIixjb2xvcjoibmV1dHJhbCIsYmxvY2s6IiIsb25DbGljazptZT0+eS52YWx1ZT1kfSx7ZGVmYXVsdDpnKCgpPT5bQyhrKGQudG9Mb2NhbGVTdHJpbmcoInZpLVZOIikpKyIg4oKrICIsMSldKSxfOjJ9LDEwMzIsWyJ2YXJpYW50Iiwib25DbGljayJdKSksNjQpKV0pXSkpXSksZm9vdGVyOmcoKCk9PltuKCJkaXYiLGNlLFtvKFYse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNsb3NlIixvbkNsaWNrOmVbMF18fChlWzBdPWQ9PlUoKSl9KSwhdChzKSYmIXQoZik/KHAoKSxBKFYse2tleTowLGxhYmVsOiJHZW5lcmF0ZSBRUiIsbG9hZGluZzp0KHUpLG9uQ2xpY2s6ZVsxXXx8KGVbMV09ZD0+UygpKX0sbnVsbCw4LFsibG9hZGluZyJdKSk6eigiIiwhMCldKV0pLF86MX0sOCxbIm9wZW4iXSl9fX0pLHVlPU9iamVjdC5hc3NpZ24ocmUse19fbmFtZToiQmlsbGluZ01vZGFsIn0pLGRlPXtjbGFzczoic3BhY2UteS02In0scGU9e2tleTowLGNsYXNzOiJtdC0zIGZsZXgganVzdGlmeS1lbmQifSxrZT1GKHtfX25hbWU6ImJpbGxpbmciLHNldHVwKHcpe0goe3RpdGxlOiJCaWxsaW5nIn0pO2NvbnN0ICQ9SSgpLHtkYXRhOk4scmVmcmVzaDpiLGVycm9yOkJ9PUQoImJpbGxpbmctYmFsYW5jZSIsKCk9PiQuZmV0Y2hCYWxhbmNlKCkse2RlZmF1bHQ6KCk9Pih7YmFsYW5jZTowfSl9KTtoKEIpO2NvbnN0IGw9YygxKSx7ZGF0YTpyLGVycm9yOnl9PUQoKCk9PmBiaWxsaW5nLXRyYW5zYWN0aW9ucy0ke2wudmFsdWV9YCwoKT0+JC5mZXRjaFRyYW5zYWN0aW9ucyhsLnZhbHVlKSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxwYWdlOjEsbGltaXQ6MjB9KSx3YXRjaDpbbF19KTtoKHkpO2NvbnN0IHU9YyghMSksZj1be2FjY2Vzc29yS2V5OiJ0eXBlIixoZWFkZXI6IlR5cGUifSx7YWNjZXNzb3JLZXk6InN0YXR1cyIsaGVhZGVyOiJTdGF0dXMifSx7YWNjZXNzb3JLZXk6ImFtb3VudCIsaGVhZGVyOiJBbW91bnQiLGNlbGw6KHtyb3c6aX0pPT5uZXcgSW50bC5OdW1iZXJGb3JtYXQoInZpLVZOIix7c3R5bGU6ImN1cnJlbmN5IixjdXJyZW5jeToiVk5EIn0pLmZvcm1hdChpLm9yaWdpbmFsLmFtb3VudCl9LHthY2Nlc3NvcktleToiY3JlYXRlZF9hdCIsaGVhZGVyOiJEYXRlIixjZWxsOih7cm93Oml9KT0+bmV3IERhdGUoaS5vcmlnaW5hbC5jcmVhdGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKX1dO3JldHVybihpLHMpPT57Y29uc3QgbT1qLHY9WSx4PUosVD1XLFM9WCxVPVo7cmV0dXJuIHAoKSxfKCJkaXYiLGRlLFtvKHYse3RpdGxlOiJCaWxsaW5nIixkZXNjcmlwdGlvbjoiT3JnYW5pemF0aW9uIGNyZWRpdCBiYWxhbmNlIGFuZCB0b3AtdXAuIix2YXJpYW50OiJuYWtlZCIsb3JpZW50YXRpb246Imhvcml6b250YWwifSx7ZGVmYXVsdDpnKCgpPT5bbyhtLHtsYWJlbDoiVG9wIHVwIixpY29uOiJpLWx1Y2lkZS1wbHVzIixjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpzWzBdfHwoc1swXT1hPT51LnZhbHVlPSEwKX0pXSksXzoxfSksbyh2LHt2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpnKCgpPT5bbyhULHtsYWJlbDoiQ3JlZGl0IGJhbGFuY2UiLGNsYXNzOiJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTQifSx7ZGVmYXVsdDpnKCgpPT5bbyh4LHtsYWJlbDpgJHt0KE4pLmJhbGFuY2UudG9Mb2NhbGVTdHJpbmcoInZpLVZOIil9IOKCq2AsY29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToibGcifSxudWxsLDgsWyJsYWJlbCJdKV0pLF86MX0pXSksXzoxfSksbigiZGl2IixudWxsLFtzWzRdfHwoc1s0XT1uKCJoMyIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbWItMyB0ZXh0LW11dGVkIn0sIiBUcmFuc2FjdGlvbnMgIiwtMSkpLG8oUyx7ZGF0YTp0KHIpPy5pdGVtcz8/W10sY29sdW1uczpmfSxudWxsLDgsWyJkYXRhIl0pLCh0KHIpPy5pdGVtcz8ubGVuZ3RoPz8wKT09PXQocik/LmxpbWl0PyhwKCksXygiZGl2IixwZSxbbyhVLHtwYWdlOnQobCksIm9uVXBkYXRlOnBhZ2UiOnNbMV18fChzWzFdPWE9Pk0obCk/bC52YWx1ZT1hOm51bGwpLHRvdGFsOnQobCkqdChyKS5saW1pdCsxLCJwYWdlLWNvdW50Ijp0KHIpLmxpbWl0fSxudWxsLDgsWyJwYWdlIiwidG90YWwiLCJwYWdlLWNvdW50Il0pXSkpOnooIiIsITApXSksbyh1ZSx7b3Blbjp0KHUpLCJvblVwZGF0ZTpvcGVuIjpzWzJdfHwoc1syXT1hPT5NKHUpP3UudmFsdWU9YTpudWxsKSxvblN1Y2Nlc3M6c1szXXx8KHNbM109YT0+dChiKSgpKX0sbnVsbCw4LFsib3BlbiJdKV0pfX19KTtleHBvcnR7a2UgYXMgZGVmYXVsdH07Cg==", "/_nuxt/BhWS18i7.js": "aW1wb3J0e2FEIGFzIHAsYVggYXMgZixheCBhcyBnLEogYXMgeSxLIGFzIHEsciBhcyBiLG8gYXMgaCxoIGFzIG0sYWEgYXMgdixpIGFzIGUsaiBhcyBCLGwgYXMgUyxOIGFzIGl9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7dSBhcyBDfWZyb20iLi9DdGExNXNHLS5qcyI7Y29uc3QgXz17YmFzZToibGc6aGlkZGVuIix2YXJpYW50czp7c2lkZTp7bGVmdDoiIixyaWdodDoiIn19fSxBPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNpZGViYXJUb2dnbGUiLHByb3BzOntjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZ2hvc3QifSxzaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZVZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYmxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25DbGljazp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmlld1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKG8pe2NvbnN0IGE9byx0PXAoZihhLCJpY29uIiwic2lkZSIsImNsYXNzIikpLHt0OnN9PWcoKSxyPXkoKSxuPXEoImRhc2hib2FyZFNpZGViYXJUb2dnbGUiLGEpLHtzaWRlYmFyT3BlbjpsLHRvZ2dsZVNpZGViYXI6dX09Qyh7c2lkZWJhck9wZW46YighMSksdG9nZ2xlU2lkZWJhcjooKT0+e319KSxkPVMoKCk9Pmkoe2V4dGVuZDppKF8pLC4uLnIudWk/LmRhc2hib2FyZFNpZGViYXJUb2dnbGV8fHt9fSkpO3JldHVybihjLGspPT4oaCgpLG0oQix2KHsuLi5lKHQpLGljb246YS5pY29ufHwoZShsKT9lKHIpLnVpLmljb25zLmNsb3NlOmUocikudWkuaWNvbnMubWVudSksImFyaWEtbGFiZWwiOmUobCk/ZShzKSgiZGFzaGJvYXJkU2lkZWJhclRvZ2dsZS5jbG9zZSIpOmUocykoImRhc2hib2FyZFNpZGViYXJUb2dnbGUub3BlbiIpLC4uLmMuJGF0dHJzfSx7Y2xhc3M6ZC52YWx1ZSh7Y2xhc3M6W2Uobik/LmJhc2UsYS5jbGFzc10sc2lkZTphLnNpZGV9KSxvbkNsaWNrOmUodSl9KSxudWxsLDE2LFsiY2xhc3MiLCJvbkNsaWNrIl0pKX19KTtleHBvcnR7QSBhcyBffTsK", "/_nuxt/BhaGoazo.js": "aW1wb3J0e2YgYXMgZSxvIGFzIG4sYyBhcyBvfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3Qgcz1lKHtfX25hbWU6ImluZGV4IixzZXR1cCh0KXtyZXR1cm4oYSxjKT0+KG4oKSxvKCJkaXYiKSl9fSk7ZXhwb3J0e3MgYXMgZGVmYXVsdH07Cg==", "/_nuxt/BrNRVIBA.js": "aW1wb3J0e18gYXMgeH1mcm9tIi4vQjFNZUxyaTMuanMiO2ltcG9ydHtmIGFzIHksbiBhcyBQLGcgYXMgdyxyIGFzIGksbyBhcyBVLGMgYXMgayxhLGIgYXMgZSx3IGFzIHUsRCBhcyBBLEggYXMgQyxHIGFzIEIsaSBhcyBkLGogYXMgRixhSCBhcyBWLEIgYXMgRH1mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0ICQ9e2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC02In0saj17Y2xhc3M6ImZsZXggZ2FwLTIifSxIPXkoe19fbmFtZToic2VjdXJpdHkiLHNldHVwKE4pe2NvbnN0IG09UCgpLGY9RCgpLGw9dygpLHQ9aShtLmN1cnJlbnRVc2VyPy5wcmltYXJ5X3Bob25lPz8iIiksYz1pKCExKSxyPWkoITEpO2FzeW5jIGZ1bmN0aW9uIF8oKXtjLnZhbHVlPSEwO3RyeXthd2FpdCBtLnVwZGF0ZVBob25lTnVtYmVyKHQudmFsdWUpLGwuYWRkKHt0aXRsZToiUGhvbmUgdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2gobil7bC5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gdXBkYXRlIHBob25lIixkZXNjcmlwdGlvbjpuPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtjLnZhbHVlPSExfX1hc3luYyBmdW5jdGlvbiB2KCl7ci52YWx1ZT0hMDt0cnl7YXdhaXQgZi5kZWxldGVBY2NvdW50KCksYXdhaXQgVigiL2F1dGgvbG9naW4iKX1jYXRjaChuKXtsLmFkZCh7dGl0bGU6IkNhbm5vdCBkZWxldGUgYWNjb3VudCIsZGVzY3JpcHRpb246bj8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IiIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7ci52YWx1ZT0hMX19cmV0dXJuKG4sbyk9Pntjb25zdCBzPXgsZz1DLHA9RixoPUE7cmV0dXJuIFUoKSxrKCJkaXYiLCQsW2EoImRpdiIsbnVsbCxbZShzLHt0aXRsZToiUGhvbmUgbnVtYmVyIixkZXNjcmlwdGlvbjoiVXNlZCBmb3IgYWNjb3VudCByZWNvdmVyeSBhbmQgMkZBLiIsdmFyaWFudDoibmFrZWQiLGNsYXNzOiJtYi00In0pLGUocyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6dSgoKT0+W2UoaCx7bmFtZToicGhvbmUiLGxhYmVsOiJQaG9uZSIsZGVzY3JpcHRpb246IkZvcm1hdDogKzEyMzQ1Njc4OTAiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDp1KCgpPT5bYSgiZGl2IixqLFtlKGcse21vZGVsVmFsdWU6ZCh0KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b1swXXx8KG9bMF09Yj0+Qih0KT90LnZhbHVlPWI6bnVsbCkscGxhY2Vob2xkZXI6IisxMjM0NTY3ODkwIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKSxlKHAse2xhYmVsOiJTYXZlIixsb2FkaW5nOmQoYyksb25DbGljazpffSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9KV0pLF86MX0pXSksYSgiZGl2IixudWxsLFtlKHMse3RpdGxlOiJEYW5nZXIgem9uZSIsZGVzY3JpcHRpb246IklycmV2ZXJzaWJsZSBhY2NvdW50IGFjdGlvbnMuIix2YXJpYW50OiJuYWtlZCIsY2xhc3M6Im1iLTQifSksZShzLHt2YXJpYW50OiJzdWJ0bGUiLHVpOntjb250YWluZXI6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNCJ9fSx7ZGVmYXVsdDp1KCgpPT5bb1sxXXx8KG9bMV09YSgiZGl2IixudWxsLFthKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQifSwiIERlbGV0ZSBhY2NvdW50ICIpLGEoInAiLHtjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBQZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgZGF0YS4gIildLC0xKSksZShwLHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGxhYmVsOiJEZWxldGUgYWNjb3VudCIsbG9hZGluZzpkKHIpLG9uQ2xpY2s6dn0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0pXSldKX19fSk7ZXhwb3J0e0ggYXMgZGVmYXVsdH07Cg==", "/_nuxt/Bt8S0dml.js": "aW1wb3J0e2JrIGFzIG59ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBmPSJyb3ZpbmdGb2N1c0dyb3VwLm9uRW50cnlGb2N1cyIsdT17YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfSxzPXtBcnJvd0xlZnQ6InByZXYiLEFycm93VXA6InByZXYiLEFycm93UmlnaHQ6Im5leHQiLEFycm93RG93bjoibmV4dCIsUGFnZVVwOiJmaXJzdCIsSG9tZToiZmlyc3QiLFBhZ2VEb3duOiJsYXN0IixFbmQ6Imxhc3QifTtmdW5jdGlvbiBpKHIsdCl7cmV0dXJuIHQhPT0icnRsIj9yOnI9PT0iQXJyb3dMZWZ0Ij8iQXJyb3dSaWdodCI6cj09PSJBcnJvd1JpZ2h0Ij8iQXJyb3dMZWZ0IjpyfWZ1bmN0aW9uIGEocix0LGUpe2NvbnN0IG89aShyLmtleSxlKTtpZighKHQ9PT0idmVydGljYWwiJiZbIkFycm93TGVmdCIsIkFycm93UmlnaHQiXS5pbmNsdWRlcyhvKSkmJiEodD09PSJob3Jpem9udGFsIiYmWyJBcnJvd1VwIiwiQXJyb3dEb3duIl0uaW5jbHVkZXMobykpKXJldHVybiBzW29dfWZ1bmN0aW9uIHcocix0PSExKXtjb25zdCBlPW4oKTtmb3IoY29uc3QgbyBvZiByKWlmKG89PT1lfHwoby5mb2N1cyh7cHJldmVudFNjcm9sbDp0fSksbigpIT09ZSkpcmV0dXJufWZ1bmN0aW9uIEEocix0KXtyZXR1cm4gci5tYXAoKGUsbyk9PnJbKHQrbyklci5sZW5ndGhdKX1leHBvcnR7ZiBhcyBFLHMgYXMgTSx1IGFzIGEsdyBhcyBmLGEgYXMgZyxBIGFzIHd9Owo=", "/_nuxt/BuLSuA8M.js": "ZnVuY3Rpb24gdShlLG4sdCl7ZnVuY3Rpb24gcihjLGEpe2lmKGMuX3pvZHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl96b2QiLHt2YWx1ZTp7ZGVmOmEsY29uc3RyOmksdHJhaXRzOm5ldyBTZXR9LGVudW1lcmFibGU6ITF9KSxjLl96b2QudHJhaXRzLmhhcyhlKSlyZXR1cm47Yy5fem9kLnRyYWl0cy5hZGQoZSksbihjLGEpO2NvbnN0IGY9aS5wcm90b3R5cGUsbD1PYmplY3Qua2V5cyhmKTtmb3IobGV0IG09MDttPGwubGVuZ3RoO20rKyl7Y29uc3QgcD1sW21dO3AgaW4gY3x8KGNbcF09ZltwXS5iaW5kKGMpKX19Y29uc3Qgbz10Py5QYXJlbnQ/P09iamVjdDtjbGFzcyBzIGV4dGVuZHMgb3t9T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIm5hbWUiLHt2YWx1ZTplfSk7ZnVuY3Rpb24gaShjKXt2YXIgYTtjb25zdCBmPXQ/LlBhcmVudD9uZXcgczp0aGlzO3IoZixjKSwoYT1mLl96b2QpLmRlZmVycmVkPz8oYS5kZWZlcnJlZD1bXSk7Zm9yKGNvbnN0IGwgb2YgZi5fem9kLmRlZmVycmVkKWwoKTtyZXR1cm4gZn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksImluaXQiLHt2YWx1ZTpyfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpjPT50Py5QYXJlbnQmJmMgaW5zdGFuY2VvZiB0LlBhcmVudD8hMDpjPy5fem9kPy50cmFpdHM/LmhhcyhlKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJuYW1lIix7dmFsdWU6ZX0pLGl9Y2xhc3MgUiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkVuY291bnRlcmVkIFByb21pc2UgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlLiBVc2UgLnBhcnNlQXN5bmMoKSBpbnN0ZWFkLiIpfX1jbGFzcyBqZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4pe3N1cGVyKGBFbmNvdW50ZXJlZCB1bmlkaXJlY3Rpb25hbCB0cmFuc2Zvcm0gZHVyaW5nIGVuY29kZTogJHtufWApLHRoaXMubmFtZT0iWm9kRW5jb2RlRXJyb3IifX1jb25zdCBBZT17fTtmdW5jdGlvbiBOKGUpe3JldHVybiBBZX1mdW5jdGlvbiBDZShlKXtjb25zdCBuPU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKHI9PnR5cGVvZiByPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW3Isb10pPT5uLmluZGV4T2YoK3IpPT09LTEpLm1hcCgoW3Isb10pPT5vKX1mdW5jdGlvbiBuZShlLG4pe3JldHVybiB0eXBlb2Ygbj09ImJpZ2ludCI/bi50b1N0cmluZygpOm59ZnVuY3Rpb24gb2UoZSl7cmV0dXJue2dldCB2YWx1ZSgpe3tjb25zdCBuPWUoKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInZhbHVlIix7dmFsdWU6bn0pLG59fX19ZnVuY3Rpb24gaWUoZSl7cmV0dXJuIGU9PW51bGx9ZnVuY3Rpb24gc2UoZSl7Y29uc3Qgbj1lLnN0YXJ0c1dpdGgoIl4iKT8xOjAsdD1lLmVuZHNXaXRoKCIkIik/ZS5sZW5ndGgtMTplLmxlbmd0aDtyZXR1cm4gZS5zbGljZShuLHQpfWZ1bmN0aW9uIHBuKGUsbil7Y29uc3QgdD0oZS50b1N0cmluZygpLnNwbGl0KCIuIilbMV18fCIiKS5sZW5ndGgscj1uLnRvU3RyaW5nKCk7bGV0IG89KHIuc3BsaXQoIi4iKVsxXXx8IiIpLmxlbmd0aDtpZihvPT09MCYmL1xkP2UtXGQ/Ly50ZXN0KHIpKXtjb25zdCBhPXIubWF0Y2goL1xkP2UtKFxkPykvKTthPy5bMV0mJihvPU51bWJlci5wYXJzZUludChhWzFdKSl9Y29uc3Qgcz10Pm8/dDpvLGk9TnVtYmVyLnBhcnNlSW50KGUudG9GaXhlZChzKS5yZXBsYWNlKCIuIiwiIikpLGM9TnVtYmVyLnBhcnNlSW50KG4udG9GaXhlZChzKS5yZXBsYWNlKCIuIiwiIikpO3JldHVybiBpJWMvMTAqKnN9Y29uc3QgbGU9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gXyhlLG4sdCl7bGV0IHI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0KCl7aWYociE9PWxlKXJldHVybiByPT09dm9pZCAwJiYocj1sZSxyPXQoKSkscn0sc2V0KG8pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se3ZhbHVlOm99KX0sY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gQShlLG4sdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7dmFsdWU6dCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIFAoLi4uZSl7Y29uc3Qgbj17fTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpO09iamVjdC5hc3NpZ24obixyKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sbil9ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIGhuKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgUmU9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gVyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbCYmIUFycmF5LmlzQXJyYXkoZSl9Y29uc3QgbW49b2UoKCk9PntpZih0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yPy51c2VyQWdlbnQ/LmluY2x1ZGVzKCJDbG91ZGZsYXJlIikpcmV0dXJuITE7dHJ5e2NvbnN0IGU9RnVuY3Rpb247cmV0dXJuIG5ldyBlKCIiKSwhMH1jYXRjaHtyZXR1cm4hMX19KTtmdW5jdGlvbiBVKGUpe2lmKFcoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCBuPWUuY29uc3RydWN0b3I7aWYobj09PXZvaWQgMHx8dHlwZW9mIG4hPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3QgdD1uLnByb3RvdHlwZTtyZXR1cm4hKFcodCk9PT0hMXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsImlzUHJvdG90eXBlT2YiKT09PSExKX1mdW5jdGlvbiBEZShlKXtyZXR1cm4gVShlKT97Li4uZX06QXJyYXkuaXNBcnJheShlKT9bLi4uZV06ZX1jb25zdCBfbj1uZXcgU2V0KFsic3RyaW5nIiwibnVtYmVyIiwic3ltYm9sIl0pO2Z1bmN0aW9uIFkoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBUKGUsbix0KXtjb25zdCByPW5ldyBlLl96b2QuY29uc3RyKG4/P2UuX3pvZC5kZWYpO3JldHVybighbnx8dD8ucGFyZW50KSYmKHIuX3pvZC5wYXJlbnQ9ZSkscn1mdW5jdGlvbiBkKGUpe2NvbnN0IG49ZTtpZighbilyZXR1cm57fTtpZih0eXBlb2Ygbj09InN0cmluZyIpcmV0dXJue2Vycm9yOigpPT5ufTtpZihuPy5tZXNzYWdlIT09dm9pZCAwKXtpZihuPy5lcnJvciE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGJvdGggYG1lc3NhZ2VgIGFuZCBgZXJyb3JgIHBhcmFtcyIpO24uZXJyb3I9bi5tZXNzYWdlfXJldHVybiBkZWxldGUgbi5tZXNzYWdlLHR5cGVvZiBuLmVycm9yPT0ic3RyaW5nIj97Li4ubixlcnJvcjooKT0+bi5lcnJvcn06bn1mdW5jdGlvbiBnbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZmlsdGVyKG49PmVbbl0uX3pvZC5vcHRpbj09PSJvcHRpb25hbCImJmVbbl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCB2bj17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX07ZnVuY3Rpb24gem4oZSxuKXtjb25zdCB0PWUuX3pvZC5kZWYscj10LmNoZWNrcztpZihyJiZyLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLnBpY2soKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3Qgcz1QKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGk9e307Zm9yKGNvbnN0IGMgaW4gbil7aWYoIShjIGluIHQuc2hhcGUpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7Y30iYCk7bltjXSYmKGlbY109dC5zaGFwZVtjXSl9cmV0dXJuIEEodGhpcywic2hhcGUiLGkpLGl9LGNoZWNrczpbXX0pO3JldHVybiBUKGUscyl9ZnVuY3Rpb24gYm4oZSxuKXtjb25zdCB0PWUuX3pvZC5kZWYscj10LmNoZWNrcztpZihyJiZyLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLm9taXQoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3Qgcz1QKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGk9ey4uLmUuX3pvZC5kZWYuc2hhcGV9O2Zvcihjb25zdCBjIGluIG4pe2lmKCEoYyBpbiB0LnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke2N9ImApO25bY10mJmRlbGV0ZSBpW2NdfXJldHVybiBBKHRoaXMsInNoYXBlIixpKSxpfSxjaGVja3M6W119KTtyZXR1cm4gVChlLHMpfWZ1bmN0aW9uIHluKGUsbil7aWYoIVUobikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IHRvIGV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCB0PWUuX3pvZC5kZWYuY2hlY2tzO2lmKHQmJnQubGVuZ3RoPjApe2NvbnN0IHM9ZS5fem9kLmRlZi5zaGFwZTtmb3IoY29uc3QgaSBpbiBuKWlmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxpKSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBvdmVyd3JpdGUga2V5cyBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzLiBVc2UgYC5zYWZlRXh0ZW5kKClgIGluc3RlYWQuIil9Y29uc3Qgbz1QKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IHM9ey4uLmUuX3pvZC5kZWYuc2hhcGUsLi4ubn07cmV0dXJuIEEodGhpcywic2hhcGUiLHMpLHN9fSk7cmV0dXJuIFQoZSxvKX1mdW5jdGlvbiB3bihlLG4pe2lmKCFVKG4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCB0byBzYWZlRXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHQ9UChlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCByPXsuLi5lLl96b2QuZGVmLnNoYXBlLC4uLm59O3JldHVybiBBKHRoaXMsInNoYXBlIixyKSxyfX0pO3JldHVybiBUKGUsdCl9ZnVuY3Rpb24ga24oZSxuKXtjb25zdCB0PVAoZS5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgcj17Li4uZS5fem9kLmRlZi5zaGFwZSwuLi5uLl96b2QuZGVmLnNoYXBlfTtyZXR1cm4gQSh0aGlzLCJzaGFwZSIscikscn0sZ2V0IGNhdGNoYWxsKCl7cmV0dXJuIG4uX3pvZC5kZWYuY2F0Y2hhbGx9LGNoZWNrczpbXX0pO3JldHVybiBUKGUsdCl9ZnVuY3Rpb24gJG4oZSxuLHQpe2NvbnN0IG89bi5fem9kLmRlZi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5wYXJ0aWFsKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9UChuLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBjPW4uX3pvZC5kZWYuc2hhcGUsYT17Li4uY307aWYodClmb3IoY29uc3QgZiBpbiB0KXtpZighKGYgaW4gYykpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtmfSJgKTt0W2ZdJiYoYVtmXT1lP25ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmNbZl19KTpjW2ZdKX1lbHNlIGZvcihjb25zdCBmIGluIGMpYVtmXT1lP25ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmNbZl19KTpjW2ZdO3JldHVybiBBKHRoaXMsInNoYXBlIixhKSxhfSxjaGVja3M6W119KTtyZXR1cm4gVChuLGkpfWZ1bmN0aW9uIFpuKGUsbix0KXtjb25zdCByPVAobi5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgbz1uLl96b2QuZGVmLnNoYXBlLHM9ey4uLm99O2lmKHQpZm9yKGNvbnN0IGkgaW4gdCl7aWYoIShpIGluIHMpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7aX0iYCk7dFtpXSYmKHNbaV09bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6b1tpXX0pKX1lbHNlIGZvcihjb25zdCBpIGluIG8pc1tpXT1uZXcgZSh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTpvW2ldfSk7cmV0dXJuIEEodGhpcywic2hhcGUiLHMpLHN9fSk7cmV0dXJuIFQobixyKX1mdW5jdGlvbiBDKGUsbj0wKXtpZihlLmFib3J0ZWQ9PT0hMClyZXR1cm4hMDtmb3IobGV0IHQ9bjt0PGUuaXNzdWVzLmxlbmd0aDt0KyspaWYoZS5pc3N1ZXNbdF0/LmNvbnRpbnVlIT09ITApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24geGUoZSxuKXtyZXR1cm4gbi5tYXAodD0+e3ZhciByO3JldHVybihyPXQpLnBhdGg/PyhyLnBhdGg9W10pLHQucGF0aC51bnNoaWZ0KGUpLHR9KX1mdW5jdGlvbiBNKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/ZTplPy5tZXNzYWdlfWZ1bmN0aW9uIGooZSxuLHQpe2NvbnN0IHI9ey4uLmUscGF0aDplLnBhdGg/P1tdfTtpZighZS5tZXNzYWdlKXtjb25zdCBvPU0oZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P00obj8uZXJyb3I/LihlKSk/P00odC5jdXN0b21FcnJvcj8uKGUpKT8/TSh0LmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCI7ci5tZXNzYWdlPW99cmV0dXJuIGRlbGV0ZSByLmluc3QsZGVsZXRlIHIuY29udGludWUsbj8ucmVwb3J0SW5wdXR8fGRlbGV0ZSByLmlucHV0LHJ9ZnVuY3Rpb24gY2UoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5Ijp0eXBlb2YgZT09InN0cmluZyI/InN0cmluZyI6InVua25vd24ifWZ1bmN0aW9uIEYoLi4uZSl7Y29uc3Rbbix0LHJdPWU7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj97bWVzc2FnZTpuLGNvZGU6ImN1c3RvbSIsaW5wdXQ6dCxpbnN0OnJ9OnsuLi5ufX1jb25zdCBVZT0oZSxuKT0+e2UubmFtZT0iJFpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImlzc3VlcyIse3ZhbHVlOm4sZW51bWVyYWJsZTohMX0pLGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShuLG5lLDIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0b1N0cmluZyIse3ZhbHVlOigpPT5lLm1lc3NhZ2UsZW51bWVyYWJsZTohMX0pfSxGZT11KCIkWm9kRXJyb3IiLFVlKSxKZT11KCIkWm9kRXJyb3IiLFVlLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBPbihlLG49dD0+dC5tZXNzYWdlKXtjb25zdCB0PXt9LHI9W107Zm9yKGNvbnN0IG8gb2YgZS5pc3N1ZXMpby5wYXRoLmxlbmd0aD4wPyh0W28ucGF0aFswXV09dFtvLnBhdGhbMF1dfHxbXSx0W28ucGF0aFswXV0ucHVzaChuKG8pKSk6ci5wdXNoKG4obykpO3JldHVybntmb3JtRXJyb3JzOnIsZmllbGRFcnJvcnM6dH19ZnVuY3Rpb24gU24oZSxuPXQ9PnQubWVzc2FnZSl7Y29uc3QgdD17X2Vycm9yczpbXX0scj1vPT57Zm9yKGNvbnN0IHMgb2Ygby5pc3N1ZXMpaWYocy5jb2RlPT09ImludmFsaWRfdW5pb24iJiZzLmVycm9ycy5sZW5ndGgpcy5lcnJvcnMubWFwKGk9PnIoe2lzc3VlczppfSkpO2Vsc2UgaWYocy5jb2RlPT09ImludmFsaWRfa2V5IilyKHtpc3N1ZXM6cy5pc3N1ZXN9KTtlbHNlIGlmKHMuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKXIoe2lzc3VlczpzLmlzc3Vlc30pO2Vsc2UgaWYocy5wYXRoLmxlbmd0aD09PTApdC5fZXJyb3JzLnB1c2gobihzKSk7ZWxzZXtsZXQgaT10LGM9MDtmb3IoO2M8cy5wYXRoLmxlbmd0aDspe2NvbnN0IGE9cy5wYXRoW2NdO2M9PT1zLnBhdGgubGVuZ3RoLTE/KGlbYV09aVthXXx8e19lcnJvcnM6W119LGlbYV0uX2Vycm9ycy5wdXNoKG4ocykpKTppW2FdPWlbYV18fHtfZXJyb3JzOltdfSxpPWlbYV0sYysrfX19O3JldHVybiByKGUpLHR9Y29uc3QgdWU9ZT0+KG4sdCxyLG8pPT57Y29uc3Qgcz1yP09iamVjdC5hc3NpZ24ocix7YXN5bmM6ITF9KTp7YXN5bmM6ITF9LGk9bi5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LHMpO2lmKGkgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBSO2lmKGkuaXNzdWVzLmxlbmd0aCl7Y29uc3QgYz1uZXcobz8uRXJyPz9lKShpLmlzc3Vlcy5tYXAoYT0+aihhLHMsTigpKSkpO3Rocm93IFJlKGMsbz8uY2FsbGVlKSxjfXJldHVybiBpLnZhbHVlfSxhZT1lPT5hc3luYyhuLHQscixvKT0+e2NvbnN0IHM9cj9PYmplY3QuYXNzaWduKHIse2FzeW5jOiEwfSk6e2FzeW5jOiEwfTtsZXQgaT1uLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0scyk7aWYoaSBpbnN0YW5jZW9mIFByb21pc2UmJihpPWF3YWl0IGkpLGkuaXNzdWVzLmxlbmd0aCl7Y29uc3QgYz1uZXcobz8uRXJyPz9lKShpLmlzc3Vlcy5tYXAoYT0+aihhLHMsTigpKSkpO3Rocm93IFJlKGMsbz8uY2FsbGVlKSxjfXJldHVybiBpLnZhbHVlfSxYPWU9PihuLHQscik9Pntjb25zdCBvPXI/ey4uLnIsYXN5bmM6ITF9Onthc3luYzohMX0scz1uLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbyk7aWYocyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IFI7cmV0dXJuIHMuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcoZT8/RmUpKHMuaXNzdWVzLm1hcChpPT5qKGksbyxOKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6cy52YWx1ZX19LEluPVgoSmUpLHE9ZT0+YXN5bmMobix0LHIpPT57Y29uc3Qgbz1yP09iamVjdC5hc3NpZ24ocix7YXN5bmM6ITB9KTp7YXN5bmM6ITB9O2xldCBzPW4uX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcgZShzLmlzc3Vlcy5tYXAoaT0+aihpLG8sTigpKSkpfTp7c3VjY2VzczohMCxkYXRhOnMudmFsdWV9fSxFbj1xKEplKSxQbj1lPT4obix0LHIpPT57Y29uc3Qgbz1yP09iamVjdC5hc3NpZ24ocix7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9KTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB1ZShlKShuLHQsbyl9LFRuPWU9PihuLHQscik9PnVlKGUpKG4sdCxyKSxObj1lPT5hc3luYyhuLHQscik9Pntjb25zdCBvPXI/T2JqZWN0LmFzc2lnbihyLHtkaXJlY3Rpb246ImJhY2t3YXJkIn0pOntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIGFlKGUpKG4sdCxvKX0sam49ZT0+YXN5bmMobix0LHIpPT5hZShlKShuLHQsciksQW49ZT0+KG4sdCxyKT0+e2NvbnN0IG89cj9PYmplY3QuYXNzaWduKHIse2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gWChlKShuLHQsbyl9LENuPWU9PihuLHQscik9PlgoZSkobix0LHIpLFJuPWU9PmFzeW5jKG4sdCxyKT0+e2NvbnN0IG89cj9PYmplY3QuYXNzaWduKHIse2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gcShlKShuLHQsbyl9LERuPWU9PmFzeW5jKG4sdCxyKT0+cShlKShuLHQscikseG49L15bY0NdW15ccy1dezgsfSQvLFVuPS9eWzAtOWEtel0rJC8sRm49L15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvLEpuPS9eWzAtOWEtdkEtVl17MjB9JC8sTW49L15bQS1aYS16MC05XXsyN30kLyxMbj0vXlthLXpBLVowLTlfLV17MjF9JC8sVm49L15QKD86KFxkK1cpfCg/IS4qVykoPz1cZHxUXGQpKFxkK1kpPyhcZCtNKT8oXGQrRCk/KFQoPz1cZCkoXGQrSCk/KFxkK00pPyhcZCsoWy4sXVxkKyk/Uyk/KT8pJC8sV249L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLHBlPWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxCbj0vXig/IVwuKSg/IS4qXC5cLikoW0EtWmEtejAtOV8nK1wtXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxHbj0iXihcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXHB7RW1vamlfQ29tcG9uZW50fSkrJCI7ZnVuY3Rpb24gS24oKXtyZXR1cm4gbmV3IFJlZ0V4cChHbiwidSIpfWNvbnN0IFluPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxYbj0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopKSQvLHFuPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLyxIbj0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxRbj0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyxNZT0vXltBLVphLXowLTlfLV0qJC8sZXQ9L15cK1sxLTldXGR7NiwxNH0kLyxMZT0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSIsbnQ9bmV3IFJlZ0V4cChgXiR7TGV9JGApO2Z1bmN0aW9uIFZlKGUpe2NvbnN0IG49Iig/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCI7cmV0dXJuIHR5cGVvZiBlLnByZWNpc2lvbj09Im51bWJlciI/ZS5wcmVjaXNpb249PT0tMT9gJHtufWA6ZS5wcmVjaXNpb249PT0wP2Ake259OlswLTVdXFxkYDpgJHtufTpbMC01XVxcZFxcLlxcZHske2UucHJlY2lzaW9ufX1gOmAke259KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHR0KGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHtWZShlKX0kYCl9ZnVuY3Rpb24gcnQoZSl7Y29uc3Qgbj1WZSh7cHJlY2lzaW9uOmUucHJlY2lzaW9ufSksdD1bIloiXTtlLmxvY2FsJiZ0LnB1c2goIiIpLGUub2Zmc2V0JiZ0LnB1c2goIihbKy1dKD86WzAxXVxcZHwyWzAtM10pOlswLTVdXFxkKSIpO2NvbnN0IHI9YCR7bn0oPzoke3Quam9pbigifCIpfSlgO3JldHVybiBuZXcgUmVnRXhwKGBeJHtMZX1UKD86JHtyfSkkYCl9Y29uc3Qgb3Q9ZT0+e2NvbnN0IG49ZT9gW1xcc1xcU117JHtlPy5taW5pbXVtPz8wfSwke2U/Lm1heGltdW0/PyIifX1gOiJbXFxzXFxTXSoiO3JldHVybiBuZXcgUmVnRXhwKGBeJHtufSRgKX0saXQ9L14tP1xkKyQvLHN0PS9eLT9cZCsoPzpcLlxkKyk/JC8sY3Q9L14oPzp0cnVlfGZhbHNlKSQvaSx1dD0vXlteQS1aXSokLyxhdD0vXlteYS16XSokLyxPPXUoIiRab2RDaGVjayIsKGUsbik9Pnt2YXIgdDtlLl96b2Q/PyhlLl96b2Q9e30pLGUuX3pvZC5kZWY9biwodD1lLl96b2QpLm9uYXR0YWNoPz8odC5vbmF0dGFjaD1bXSl9KSxXZT17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxCZT11KCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsbik9PntPLmluaXQoZSxuKTtjb25zdCB0PVdlW3R5cGVvZiBuLnZhbHVlXTtlLl96b2Qub25hdHRhY2gucHVzaChyPT57Y29uc3Qgbz1yLl96b2QuYmFnLHM9KG4uaW5jbHVzaXZlP28ubWF4aW11bTpvLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi52YWx1ZTxzJiYobi5pbmNsdXNpdmU/by5tYXhpbXVtPW4udmFsdWU6by5leGNsdXNpdmVNYXhpbXVtPW4udmFsdWUpfSksZS5fem9kLmNoZWNrPXI9Pnsobi5pbmNsdXNpdmU/ci52YWx1ZTw9bi52YWx1ZTpyLnZhbHVlPG4udmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtvcmlnaW46dCxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnR5cGVvZiBuLnZhbHVlPT0ib2JqZWN0Ij9uLnZhbHVlLmdldFRpbWUoKTpuLnZhbHVlLGlucHV0OnIudmFsdWUsaW5jbHVzaXZlOm4uaW5jbHVzaXZlLGluc3Q6ZSxjb250aW51ZTohbi5hYm9ydH0pfX0pLEdlPXUoIiRab2RDaGVja0dyZWF0ZXJUaGFuIiwoZSxuKT0+e08uaW5pdChlLG4pO2NvbnN0IHQ9V2VbdHlwZW9mIG4udmFsdWVdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKHI9Pntjb25zdCBvPXIuX3pvZC5iYWcscz0obi5pbmNsdXNpdmU/by5taW5pbXVtOm8uZXhjbHVzaXZlTWluaW11bSk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLnZhbHVlPnMmJihuLmluY2x1c2l2ZT9vLm1pbmltdW09bi52YWx1ZTpvLmV4Y2x1c2l2ZU1pbmltdW09bi52YWx1ZSl9KSxlLl96b2QuY2hlY2s9cj0+eyhuLmluY2x1c2l2ZT9yLnZhbHVlPj1uLnZhbHVlOnIudmFsdWU+bi52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe29yaWdpbjp0LGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0eXBlb2Ygbi52YWx1ZT09Im9iamVjdCI/bi52YWx1ZS5nZXRUaW1lKCk6bi52YWx1ZSxpbnB1dDpyLnZhbHVlLGluY2x1c2l2ZTpuLmluY2x1c2l2ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxmdD11KCIkWm9kQ2hlY2tNdWx0aXBsZU9mIiwoZSxuKT0+e08uaW5pdChlLG4pLGUuX3pvZC5vbmF0dGFjaC5wdXNoKHQ9Pnt2YXIgcjsocj10Ll96b2QuYmFnKS5tdWx0aXBsZU9mPz8oci5tdWx0aXBsZU9mPW4udmFsdWUpfSksZS5fem9kLmNoZWNrPXQ9PntpZih0eXBlb2YgdC52YWx1ZSE9dHlwZW9mIG4udmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2YgdC52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSVuLnZhbHVlPT09QmlnSW50KDApOnBuKHQudmFsdWUsbi52YWx1ZSk9PT0wKXx8dC5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiB0LnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjpuLnZhbHVlLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSksbHQ9dSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSxuKT0+e08uaW5pdChlLG4pLG4uZm9ybWF0PW4uZm9ybWF0fHwiZmxvYXQ2NCI7Y29uc3QgdD1uLmZvcm1hdD8uaW5jbHVkZXMoImludCIpLHI9dD8iaW50IjoibnVtYmVyIixbbyxzXT12bltuLmZvcm1hdF07ZS5fem9kLm9uYXR0YWNoLnB1c2goaT0+e2NvbnN0IGM9aS5fem9kLmJhZztjLmZvcm1hdD1uLmZvcm1hdCxjLm1pbmltdW09byxjLm1heGltdW09cyx0JiYoYy5wYXR0ZXJuPWl0KX0pLGUuX3pvZC5jaGVjaz1pPT57Y29uc3QgYz1pLnZhbHVlO2lmKHQpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGMpKXtpLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpyLGZvcm1hdDpuLmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmMsaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihjKSl7Yz4wP2kuaXNzdWVzLnB1c2goe2lucHV0OmMsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpyLGluY2x1c2l2ZTohMCxjb250aW51ZTohbi5hYm9ydH0pOmkuaXNzdWVzLnB1c2goe2lucHV0OmMsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOnIsaW5jbHVzaXZlOiEwLGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufX1jPG8mJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpjLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpvLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KSxjPnMmJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpjLGNvZGU6InRvb19iaWciLG1heGltdW06cyxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSksZHQ9dSgiJFpvZENoZWNrTWF4TGVuZ3RoIiwoZSxuKT0+e3ZhciB0O08uaW5pdChlLG4pLCh0PWUuX3pvZC5kZWYpLndoZW4/Pyh0LndoZW49cj0+e2NvbnN0IG89ci52YWx1ZTtyZXR1cm4haWUobykmJm8ubGVuZ3RoIT09dm9pZCAwfSksZS5fem9kLm9uYXR0YWNoLnB1c2gocj0+e2NvbnN0IG89ci5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi5tYXhpbXVtPG8mJihyLl96b2QuYmFnLm1heGltdW09bi5tYXhpbXVtKX0pLGUuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlO2lmKG8ubGVuZ3RoPD1uLm1heGltdW0pcmV0dXJuO2NvbnN0IGk9Y2Uobyk7ci5pc3N1ZXMucHVzaCh7b3JpZ2luOmksY29kZToidG9vX2JpZyIsbWF4aW11bTpuLm1heGltdW0saW5jbHVzaXZlOiEwLGlucHV0Om8saW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSkscHQ9dSgiJFpvZENoZWNrTWluTGVuZ3RoIiwoZSxuKT0+e3ZhciB0O08uaW5pdChlLG4pLCh0PWUuX3pvZC5kZWYpLndoZW4/Pyh0LndoZW49cj0+e2NvbnN0IG89ci52YWx1ZTtyZXR1cm4haWUobykmJm8ubGVuZ3RoIT09dm9pZCAwfSksZS5fem9kLm9uYXR0YWNoLnB1c2gocj0+e2NvbnN0IG89ci5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5taW5pbXVtPm8mJihyLl96b2QuYmFnLm1pbmltdW09bi5taW5pbXVtKX0pLGUuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlO2lmKG8ubGVuZ3RoPj1uLm1pbmltdW0pcmV0dXJuO2NvbnN0IGk9Y2Uobyk7ci5pc3N1ZXMucHVzaCh7b3JpZ2luOmksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6byxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxodD11KCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLG4pPT57dmFyIHQ7Ty5pbml0KGUsbiksKHQ9ZS5fem9kLmRlZikud2hlbj8/KHQud2hlbj1yPT57Y29uc3Qgbz1yLnZhbHVlO3JldHVybiFpZShvKSYmby5sZW5ndGghPT12b2lkIDB9KSxlLl96b2Qub25hdHRhY2gucHVzaChyPT57Y29uc3Qgbz1yLl96b2QuYmFnO28ubWluaW11bT1uLmxlbmd0aCxvLm1heGltdW09bi5sZW5ndGgsby5sZW5ndGg9bi5sZW5ndGh9KSxlLl96b2QuY2hlY2s9cj0+e2NvbnN0IG89ci52YWx1ZSxzPW8ubGVuZ3RoO2lmKHM9PT1uLmxlbmd0aClyZXR1cm47Y29uc3QgaT1jZShvKSxjPXM+bi5sZW5ndGg7ci5pc3N1ZXMucHVzaCh7b3JpZ2luOmksLi4uYz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpuLmxlbmd0aH06e2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLmxlbmd0aH0saW5jbHVzaXZlOiEwLGV4YWN0OiEwLGlucHV0OnIudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSksSD11KCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLG4pPT57dmFyIHQscjtPLmluaXQoZSxuKSxlLl96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3Qgcz1vLl96b2QuYmFnO3MuZm9ybWF0PW4uZm9ybWF0LG4ucGF0dGVybiYmKHMucGF0dGVybnM/PyhzLnBhdHRlcm5zPW5ldyBTZXQpLHMucGF0dGVybnMuYWRkKG4ucGF0dGVybikpfSksbi5wYXR0ZXJuPyh0PWUuX3pvZCkuY2hlY2s/Pyh0LmNoZWNrPW89PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KG8udmFsdWUpJiZvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdCxpbnB1dDpvLnZhbHVlLC4uLm4ucGF0dGVybj97cGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9KToocj1lLl96b2QpLmNoZWNrPz8oci5jaGVjaz0oKT0+e30pfSksbXQ9dSgiJFpvZENoZWNrUmVnZXgiLChlLG4pPT57SC5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KHQudmFsdWUpJiZ0Lmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoicmVnZXgiLGlucHV0OnQudmFsdWUscGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxfdD11KCIkWm9kQ2hlY2tMb3dlckNhc2UiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXV0KSxILmluaXQoZSxuKX0pLGd0PXUoIiRab2RDaGVja1VwcGVyQ2FzZSIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49YXQpLEguaW5pdChlLG4pfSksdnQ9dSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLG4pPT57Ty5pbml0KGUsbik7Y29uc3QgdD1ZKG4uaW5jbHVkZXMpLHI9bmV3IFJlZ0V4cCh0eXBlb2Ygbi5wb3NpdGlvbj09Im51bWJlciI/YF4ueyR7bi5wb3NpdGlvbn19JHt0fWA6dCk7bi5wYXR0ZXJuPXIsZS5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IHM9by5fem9kLmJhZztzLnBhdHRlcm5zPz8ocy5wYXR0ZXJucz1uZXcgU2V0KSxzLnBhdHRlcm5zLmFkZChyKX0pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5pbmNsdWRlcyhuLmluY2x1ZGVzLG4ucG9zaXRpb24pfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaW5jbHVkZXMiLGluY2x1ZGVzOm4uaW5jbHVkZXMsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSx6dD11KCIkWm9kQ2hlY2tTdGFydHNXaXRoIiwoZSxuKT0+e08uaW5pdChlLG4pO2NvbnN0IHQ9bmV3IFJlZ0V4cChgXiR7WShuLnByZWZpeCl9LipgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49dCksZS5fem9kLm9uYXR0YWNoLnB1c2gocj0+e2NvbnN0IG89ci5fem9kLmJhZztvLnBhdHRlcm5zPz8oby5wYXR0ZXJucz1uZXcgU2V0KSxvLnBhdHRlcm5zLmFkZCh0KX0pLGUuX3pvZC5jaGVjaz1yPT57ci52YWx1ZS5zdGFydHNXaXRoKG4ucHJlZml4KXx8ci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6bi5wcmVmaXgsaW5wdXQ6ci52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxidD11KCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsbik9PntPLmluaXQoZSxuKTtjb25zdCB0PW5ldyBSZWdFeHAoYC4qJHtZKG4uc3VmZml4KX0kYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXQpLGUuX3pvZC5vbmF0dGFjaC5wdXNoKHI9Pntjb25zdCBvPXIuX3pvZC5iYWc7by5wYXR0ZXJucz8/KG8ucGF0dGVybnM9bmV3IFNldCksby5wYXR0ZXJucy5hZGQodCl9KSxlLl96b2QuY2hlY2s9cj0+e3IudmFsdWUuZW5kc1dpdGgobi5zdWZmaXgpfHxyLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIixzdWZmaXg6bi5zdWZmaXgsaW5wdXQ6ci52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSx5dD11KCIkWm9kQ2hlY2tPdmVyd3JpdGUiLChlLG4pPT57Ty5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9Pnt0LnZhbHVlPW4udHgodC52YWx1ZSl9fSk7Y2xhc3Mgd3R7Y29uc3RydWN0b3Iobj1bXSl7dGhpcy5jb250ZW50PVtdLHRoaXMuaW5kZW50PTAsdGhpcyYmKHRoaXMuYXJncz1uKX1pbmRlbnRlZChuKXt0aGlzLmluZGVudCs9MSxuKHRoaXMpLHRoaXMuaW5kZW50LT0xfXdyaXRlKG4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXtuKHRoaXMse2V4ZWN1dGlvbjoic3luYyJ9KSxuKHRoaXMse2V4ZWN1dGlvbjoiYXN5bmMifSk7cmV0dXJufWNvbnN0IHI9bi5zcGxpdChgCmApLmZpbHRlcihpPT5pKSxvPU1hdGgubWluKC4uLnIubWFwKGk9PmkubGVuZ3RoLWkudHJpbVN0YXJ0KCkubGVuZ3RoKSkscz1yLm1hcChpPT5pLnNsaWNlKG8pKS5tYXAoaT0+IiAiLnJlcGVhdCh0aGlzLmluZGVudCoyKStpKTtmb3IoY29uc3QgaSBvZiBzKXRoaXMuY29udGVudC5wdXNoKGkpfWNvbXBpbGUoKXtjb25zdCBuPUZ1bmN0aW9uLHQ9dGhpcz8uYXJncyxvPVsuLi4odGhpcz8uY29udGVudD8/WyIiXSkubWFwKHM9PmAgICR7c31gKV07cmV0dXJuIG5ldyBuKC4uLnQsby5qb2luKGAKYCkpfX1jb25zdCBrdD17bWFqb3I6NCxtaW5vcjozLHBhdGNoOjZ9LHo9dSgiJFpvZFR5cGUiLChlLG4pPT57dmFyIHQ7ZT8/KGU9e30pLGUuX3pvZC5kZWY9bixlLl96b2QuYmFnPWUuX3pvZC5iYWd8fHt9LGUuX3pvZC52ZXJzaW9uPWt0O2NvbnN0IHI9Wy4uLmUuX3pvZC5kZWYuY2hlY2tzPz9bXV07ZS5fem9kLnRyYWl0cy5oYXMoIiRab2RDaGVjayIpJiZyLnVuc2hpZnQoZSk7Zm9yKGNvbnN0IG8gb2Ygcilmb3IoY29uc3QgcyBvZiBvLl96b2Qub25hdHRhY2gpcyhlKTtpZihyLmxlbmd0aD09PTApKHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZD8ucHVzaCgoKT0+e2UuX3pvZC5ydW49ZS5fem9kLnBhcnNlfSk7ZWxzZXtjb25zdCBvPShpLGMsYSk9PntsZXQgZj1DKGkpLGw7Zm9yKGNvbnN0IG0gb2YgYyl7aWYobS5fem9kLmRlZi53aGVuKXtpZighbS5fem9kLmRlZi53aGVuKGkpKWNvbnRpbnVlfWVsc2UgaWYoZiljb250aW51ZTtjb25zdCBwPWkuaXNzdWVzLmxlbmd0aCxoPW0uX3pvZC5jaGVjayhpKTtpZihoIGluc3RhbmNlb2YgUHJvbWlzZSYmYT8uYXN5bmM9PT0hMSl0aHJvdyBuZXcgUjtpZihsfHxoIGluc3RhbmNlb2YgUHJvbWlzZSlsPShsPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgaCxpLmlzc3Vlcy5sZW5ndGghPT1wJiYoZnx8KGY9QyhpLHApKSl9KTtlbHNle2lmKGkuaXNzdWVzLmxlbmd0aD09PXApY29udGludWU7Znx8KGY9QyhpLHApKX19cmV0dXJuIGw/bC50aGVuKCgpPT5pKTppfSxzPShpLGMsYSk9PntpZihDKGkpKXJldHVybiBpLmFib3J0ZWQ9ITAsaTtjb25zdCBmPW8oYyxyLGEpO2lmKGYgaW5zdGFuY2VvZiBQcm9taXNlKXtpZihhLmFzeW5jPT09ITEpdGhyb3cgbmV3IFI7cmV0dXJuIGYudGhlbihsPT5lLl96b2QucGFyc2UobCxhKSl9cmV0dXJuIGUuX3pvZC5wYXJzZShmLGEpfTtlLl96b2QucnVuPShpLGMpPT57aWYoYy5za2lwQ2hlY2tzKXJldHVybiBlLl96b2QucGFyc2UoaSxjKTtpZihjLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpe2NvbnN0IGY9ZS5fem9kLnBhcnNlKHt2YWx1ZTppLnZhbHVlLGlzc3VlczpbXX0sey4uLmMsc2tpcENoZWNrczohMH0pO3JldHVybiBmIGluc3RhbmNlb2YgUHJvbWlzZT9mLnRoZW4obD0+cyhsLGksYykpOnMoZixpLGMpfWNvbnN0IGE9ZS5fem9kLnBhcnNlKGksYyk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2Upe2lmKGMuYXN5bmM9PT0hMSl0aHJvdyBuZXcgUjtyZXR1cm4gYS50aGVuKGY9Pm8oZixyLGMpKX1yZXR1cm4gbyhhLHIsYyl9fV8oZSwifnN0YW5kYXJkIiwoKT0+KHt2YWxpZGF0ZTpvPT57dHJ5e2NvbnN0IHM9SW4oZSxvKTtyZXR1cm4gcy5zdWNjZXNzP3t2YWx1ZTpzLmRhdGF9Ontpc3N1ZXM6cy5lcnJvcj8uaXNzdWVzfX1jYXRjaHtyZXR1cm4gRW4oZSxvKS50aGVuKGk9Pmkuc3VjY2Vzcz97dmFsdWU6aS5kYXRhfTp7aXNzdWVzOmkuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX0pKX0pLGZlPXUoIiRab2RTdHJpbmciLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhdHRlcm49Wy4uLmU/Ll96b2QuYmFnPy5wYXR0ZXJucz8/W11dLnBvcCgpPz9vdChlLl96b2QuYmFnKSxlLl96b2QucGFyc2U9KHQscik9PntpZihuLmNvZXJjZSl0cnl7dC52YWx1ZT1TdHJpbmcodC52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2YgdC52YWx1ZT09InN0cmluZyJ8fHQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6dC52YWx1ZSxpbnN0OmV9KSx0fX0pLGc9dSgiJFpvZFN0cmluZ0Zvcm1hdCIsKGUsbik9PntILmluaXQoZSxuKSxmZS5pbml0KGUsbil9KSwkdD11KCIkWm9kR1VJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49V24pLGcuaW5pdChlLG4pfSksWnQ9dSgiJFpvZFVVSUQiLChlLG4pPT57aWYobi52ZXJzaW9uKXtjb25zdCByPXt2MToxLHYyOjIsdjM6Myx2NDo0LHY1OjUsdjY6Nix2Nzo3LHY4Ojh9W24udmVyc2lvbl07aWYocj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVVVJRCB2ZXJzaW9uOiAiJHtuLnZlcnNpb259ImApO24ucGF0dGVybj8/KG4ucGF0dGVybj1wZShyKSl9ZWxzZSBuLnBhdHRlcm4/PyhuLnBhdHRlcm49cGUoKSk7Zy5pbml0KGUsbil9KSxPdD11KCIkWm9kRW1haWwiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPUJuKSxnLmluaXQoZSxuKX0pLFN0PXUoIiRab2RVUkwiLChlLG4pPT57Zy5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9Pnt0cnl7Y29uc3Qgcj10LnZhbHVlLnRyaW0oKSxvPW5ldyBVUkwocik7bi5ob3N0bmFtZSYmKG4uaG9zdG5hbWUubGFzdEluZGV4PTAsbi5ob3N0bmFtZS50ZXN0KG8uaG9zdG5hbWUpfHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgaG9zdG5hbWUiLHBhdHRlcm46bi5ob3N0bmFtZS5zb3VyY2UsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KSksbi5wcm90b2NvbCYmKG4ucHJvdG9jb2wubGFzdEluZGV4PTAsbi5wcm90b2NvbC50ZXN0KG8ucHJvdG9jb2wuZW5kc1dpdGgoIjoiKT9vLnByb3RvY29sLnNsaWNlKDAsLTEpOm8ucHJvdG9jb2wpfHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgcHJvdG9jb2wiLHBhdHRlcm46bi5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KSksbi5ub3JtYWxpemU/dC52YWx1ZT1vLmhyZWY6dC52YWx1ZT1yO3JldHVybn1jYXRjaHt0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pLEl0PXUoIiRab2RFbW9qaSIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49S24oKSksZy5pbml0KGUsbil9KSxFdD11KCIkWm9kTmFub0lEIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1MbiksZy5pbml0KGUsbil9KSxQdD11KCIkWm9kQ1VJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49eG4pLGcuaW5pdChlLG4pfSksVHQ9dSgiJFpvZENVSUQyIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1VbiksZy5pbml0KGUsbil9KSxOdD11KCIkWm9kVUxJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49Rm4pLGcuaW5pdChlLG4pfSksanQ9dSgiJFpvZFhJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49Sm4pLGcuaW5pdChlLG4pfSksQXQ9dSgiJFpvZEtTVUlEIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1NbiksZy5pbml0KGUsbil9KSxDdD11KCIkWm9kSVNPRGF0ZVRpbWUiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXJ0KG4pKSxnLmluaXQoZSxuKX0pLFJ0PXUoIiRab2RJU09EYXRlIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1udCksZy5pbml0KGUsbil9KSxEdD11KCIkWm9kSVNPVGltZSIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49dHQobikpLGcuaW5pdChlLG4pfSkseHQ9dSgiJFpvZElTT0R1cmF0aW9uIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1WbiksZy5pbml0KGUsbil9KSxVdD11KCIkWm9kSVB2NCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49WW4pLGcuaW5pdChlLG4pLGUuX3pvZC5iYWcuZm9ybWF0PSJpcHY0In0pLEZ0PXUoIiRab2RJUHY2IiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1YbiksZy5pbml0KGUsbiksZS5fem9kLmJhZy5mb3JtYXQ9ImlwdjYiLGUuX3pvZC5jaGVjaz10PT57dHJ5e25ldyBVUkwoYGh0dHA6Ly9bJHt0LnZhbHVlfV1gKX1jYXRjaHt0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDp0LnZhbHVlLGluc3Q6ZSxjb250aW51ZTohbi5hYm9ydH0pfX19KSxKdD11KCIkWm9kQ0lEUnY0IiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1xbiksZy5pbml0KGUsbil9KSxNdD11KCIkWm9kQ0lEUnY2IiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1IbiksZy5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9Pntjb25zdCByPXQudmFsdWUuc3BsaXQoIi8iKTt0cnl7aWYoci5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcjtjb25zdFtvLHNdPXI7aWYoIXMpdGhyb3cgbmV3IEVycm9yO2NvbnN0IGk9TnVtYmVyKHMpO2lmKGAke2l9YCE9PXMpdGhyb3cgbmV3IEVycm9yO2lmKGk8MHx8aT4xMjgpdGhyb3cgbmV3IEVycm9yO25ldyBVUkwoYGh0dHA6Ly9bJHtvfV1gKX1jYXRjaHt0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJjaWRydjYiLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pO2Z1bmN0aW9uIEtlKGUpe2lmKGU9PT0iIilyZXR1cm4hMDtpZihlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEx0PXUoIiRab2RCYXNlNjQiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVFuKSxnLmluaXQoZSxuKSxlLl96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0IixlLl96b2QuY2hlY2s9dD0+e0tlKHQudmFsdWUpfHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjQiLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSk7ZnVuY3Rpb24gVnQoZSl7aWYoIU1lLnRlc3QoZSkpcmV0dXJuITE7Y29uc3Qgbj1lLnJlcGxhY2UoL1stX10vZyxyPT5yPT09Ii0iPyIrIjoiLyIpLHQ9bi5wYWRFbmQoTWF0aC5jZWlsKG4ubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gS2UodCl9Y29uc3QgV3Q9dSgiJFpvZEJhc2U2NFVSTCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49TWUpLGcuaW5pdChlLG4pLGUuX3pvZC5iYWcuY29udGVudEVuY29kaW5nPSJiYXNlNjR1cmwiLGUuX3pvZC5jaGVjaz10PT57VnQodC52YWx1ZSl8fHQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NHVybCIsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxCdD11KCIkWm9kRTE2NCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49ZXQpLGcuaW5pdChlLG4pfSk7ZnVuY3Rpb24gR3QoZSxuPW51bGwpe3RyeXtjb25zdCB0PWUuc3BsaXQoIi4iKTtpZih0Lmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbcl09dDtpZighcilyZXR1cm4hMTtjb25zdCBvPUpTT04ucGFyc2UoYXRvYihyKSk7cmV0dXJuISgidHlwImluIG8mJm8/LnR5cCE9PSJKV1QifHwhby5hbGd8fG4mJighKCJhbGciaW4gbyl8fG8uYWxnIT09bikpfWNhdGNoe3JldHVybiExfX1jb25zdCBLdD11KCIkWm9kSldUIiwoZSxuKT0+e2cuaW5pdChlLG4pLGUuX3pvZC5jaGVjaz10PT57R3QodC52YWx1ZSxuLmFsZyl8fHQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6Imp3dCIsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxZZT11KCIkWm9kTnVtYmVyIiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXR0ZXJuPWUuX3pvZC5iYWcucGF0dGVybj8/c3QsZS5fem9kLnBhcnNlPSh0LHIpPT57aWYobi5jb2VyY2UpdHJ5e3QudmFsdWU9TnVtYmVyKHQudmFsdWUpfWNhdGNoe31jb25zdCBvPXQudmFsdWU7aWYodHlwZW9mIG89PSJudW1iZXIiJiYhTnVtYmVyLmlzTmFOKG8pJiZOdW1iZXIuaXNGaW5pdGUobykpcmV0dXJuIHQ7Y29uc3Qgcz10eXBlb2Ygbz09Im51bWJlciI/TnVtYmVyLmlzTmFOKG8pPyJOYU4iOk51bWJlci5pc0Zpbml0ZShvKT92b2lkIDA6IkluZmluaXR5Ijp2b2lkIDA7cmV0dXJuIHQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudW1iZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6byxpbnN0OmUsLi4ucz97cmVjZWl2ZWQ6c306e319KSx0fX0pLFl0PXUoIiRab2ROdW1iZXJGb3JtYXQiLChlLG4pPT57bHQuaW5pdChlLG4pLFllLmluaXQoZSxuKX0pLFh0PXUoIiRab2RCb29sZWFuIiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXR0ZXJuPWN0LGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKG4uY29lcmNlKXRyeXt0LnZhbHVlPSEhdC52YWx1ZX1jYXRjaHt9Y29uc3Qgbz10LnZhbHVlO3JldHVybiB0eXBlb2Ygbz09ImJvb2xlYW4ifHx0Lmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYm9vbGVhbiIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpvLGluc3Q6ZX0pLHR9fSkscXQ9dSgiJFpvZFVua25vd24iLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhcnNlPXQ9PnR9KSxIdD11KCIkWm9kTmV2ZXIiLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhcnNlPSh0LHIpPT4odC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnQudmFsdWUsaW5zdDplfSksdCl9KTtmdW5jdGlvbiBoZShlLG4sdCl7ZS5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnhlKHQsZS5pc3N1ZXMpKSxuLnZhbHVlW3RdPWUudmFsdWV9Y29uc3QgUXQ9dSgiJFpvZEFycmF5IiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXJzZT0odCxyKT0+e2NvbnN0IG89dC52YWx1ZTtpZighQXJyYXkuaXNBcnJheShvKSlyZXR1cm4gdC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImFycmF5Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om8saW5zdDplfSksdDt0LnZhbHVlPUFycmF5KG8ubGVuZ3RoKTtjb25zdCBzPVtdO2ZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKXtjb25zdCBjPW9baV0sYT1uLmVsZW1lbnQuX3pvZC5ydW4oe3ZhbHVlOmMsaXNzdWVzOltdfSxyKTthIGluc3RhbmNlb2YgUHJvbWlzZT9zLnB1c2goYS50aGVuKGY9PmhlKGYsdCxpKSkpOmhlKGEsdCxpKX1yZXR1cm4gcy5sZW5ndGg/UHJvbWlzZS5hbGwocykudGhlbigoKT0+dCk6dH19KTtmdW5jdGlvbiBCKGUsbix0LHIsbyl7aWYoZS5pc3N1ZXMubGVuZ3RoKXtpZihvJiYhKHQgaW4gcikpcmV0dXJuO24uaXNzdWVzLnB1c2goLi4ueGUodCxlLmlzc3VlcykpfWUudmFsdWU9PT12b2lkIDA/dCBpbiByJiYobi52YWx1ZVt0XT12b2lkIDApOm4udmFsdWVbdF09ZS52YWx1ZX1mdW5jdGlvbiBYZShlKXtjb25zdCBuPU9iamVjdC5rZXlzKGUuc2hhcGUpO2Zvcihjb25zdCByIG9mIG4paWYoIWUuc2hhcGU/LltyXT8uX3pvZD8udHJhaXRzPy5oYXMoIiRab2RUeXBlIikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgYXQga2V5ICIke3J9IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3QgdD1nbihlLnNoYXBlKTtyZXR1cm57Li4uZSxrZXlzOm4sa2V5U2V0Om5ldyBTZXQobiksbnVtS2V5czpuLmxlbmd0aCxvcHRpb25hbEtleXM6bmV3IFNldCh0KX19ZnVuY3Rpb24gcWUoZSxuLHQscixvLHMpe2NvbnN0IGk9W10sYz1vLmtleVNldCxhPW8uY2F0Y2hhbGwuX3pvZCxmPWEuZGVmLnR5cGUsbD1hLm9wdG91dD09PSJvcHRpb25hbCI7Zm9yKGNvbnN0IG0gaW4gbil7aWYoYy5oYXMobSkpY29udGludWU7aWYoZj09PSJuZXZlciIpe2kucHVzaChtKTtjb250aW51ZX1jb25zdCBwPWEucnVuKHt2YWx1ZTpuW21dLGlzc3VlczpbXX0scik7cCBpbnN0YW5jZW9mIFByb21pc2U/ZS5wdXNoKHAudGhlbihoPT5CKGgsdCxtLG4sbCkpKTpCKHAsdCxtLG4sbCl9cmV0dXJuIGkubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsa2V5czppLGlucHV0Om4saW5zdDpzfSksZS5sZW5ndGg/UHJvbWlzZS5hbGwoZSkudGhlbigoKT0+dCk6dH1jb25zdCBlcj11KCIkWm9kT2JqZWN0IiwoZSxuKT0+e2lmKHouaW5pdChlLG4pLCFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sInNoYXBlIik/LmdldCl7Y29uc3QgYz1uLnNoYXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzaGFwZSIse2dldDooKT0+e2NvbnN0IGE9ey4uLmN9O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic2hhcGUiLHt2YWx1ZTphfSksYX19KX1jb25zdCByPW9lKCgpPT5YZShuKSk7XyhlLl96b2QsInByb3BWYWx1ZXMiLCgpPT57Y29uc3QgYz1uLnNoYXBlLGE9e307Zm9yKGNvbnN0IGYgaW4gYyl7Y29uc3QgbD1jW2ZdLl96b2Q7aWYobC52YWx1ZXMpe2FbZl0/PyhhW2ZdPW5ldyBTZXQpO2Zvcihjb25zdCBtIG9mIGwudmFsdWVzKWFbZl0uYWRkKG0pfX1yZXR1cm4gYX0pO2NvbnN0IG89VyxzPW4uY2F0Y2hhbGw7bGV0IGk7ZS5fem9kLnBhcnNlPShjLGEpPT57aT8/KGk9ci52YWx1ZSk7Y29uc3QgZj1jLnZhbHVlO2lmKCFvKGYpKXJldHVybiBjLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoib2JqZWN0Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmYsaW5zdDplfSksYztjLnZhbHVlPXt9O2NvbnN0IGw9W10sbT1pLnNoYXBlO2Zvcihjb25zdCBwIG9mIGkua2V5cyl7Y29uc3QgaD1tW3BdLGs9aC5fem9kLm9wdG91dD09PSJvcHRpb25hbCIseT1oLl96b2QucnVuKHt2YWx1ZTpmW3BdLGlzc3VlczpbXX0sYSk7eSBpbnN0YW5jZW9mIFByb21pc2U/bC5wdXNoKHkudGhlbihKPT5CKEosYyxwLGYsaykpKTpCKHksYyxwLGYsayl9cmV0dXJuIHM/cWUobCxmLGMsYSxyLnZhbHVlLGUpOmwubGVuZ3RoP1Byb21pc2UuYWxsKGwpLnRoZW4oKCk9PmMpOmN9fSksbnI9dSgiJFpvZE9iamVjdEpJVCIsKGUsbik9Pntlci5pbml0KGUsbik7Y29uc3QgdD1lLl96b2QucGFyc2Uscj1vZSgoKT0+WGUobikpLG89cD0+e2NvbnN0IGg9bmV3IHd0KFsic2hhcGUiLCJwYXlsb2FkIiwiY3R4Il0pLGs9ci52YWx1ZSx5PUU9Pntjb25zdCBaPWRlKEUpO3JldHVybmBzaGFwZVske1p9XS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFske1p9XSwgaXNzdWVzOiBbXSB9LCBjdHgpYH07aC53cml0ZSgiY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlOyIpO2NvbnN0IEo9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZm49MDtmb3IoY29uc3QgRSBvZiBrLmtleXMpSltFXT1ga2V5XyR7Zm4rK31gO2gud3JpdGUoImNvbnN0IG5ld1Jlc3VsdCA9IHt9OyIpO2Zvcihjb25zdCBFIG9mIGsua2V5cyl7Y29uc3QgWj1KW0VdLEk9ZGUoRSksZG49cFtFXT8uX3pvZD8ub3B0b3V0PT09Im9wdGlvbmFsIjtoLndyaXRlKGBjb25zdCAke1p9ID0gJHt5KEUpfTtgKSxkbj9oLndyaXRlKGAKICAgICAgICBpZiAoJHtafS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBpZiAoJHtJfSBpbiBpbnB1dCkgewogICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke1p9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7SX0sIC4uLmlzcy5wYXRoXSA6IFske0l9XQogICAgICAgICAgICB9KSkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtafS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtJfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtJfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0l9XSA9ICR7Wn0udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTpoLndyaXRlKGAKICAgICAgICBpZiAoJHtafS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke1p9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtJfSwgLi4uaXNzLnBhdGhdIDogWyR7SX1dCiAgICAgICAgICB9KSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtafS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtJfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtJfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0l9XSA9ICR7Wn0udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKX1oLndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLGgud3JpdGUoInJldHVybiBwYXlsb2FkOyIpO2NvbnN0IGxuPWguY29tcGlsZSgpO3JldHVybihFLFopPT5sbihwLEUsWil9O2xldCBzO2NvbnN0IGk9VyxjPSFBZS5qaXRsZXNzLGY9YyYmbW4udmFsdWUsbD1uLmNhdGNoYWxsO2xldCBtO2UuX3pvZC5wYXJzZT0ocCxoKT0+e20/PyhtPXIudmFsdWUpO2NvbnN0IGs9cC52YWx1ZTtyZXR1cm4gaShrKT9jJiZmJiZoPy5hc3luYz09PSExJiZoLmppdGxlc3MhPT0hMD8oc3x8KHM9byhuLnNoYXBlKSkscD1zKHAsaCksbD9xZShbXSxrLHAsaCxtLGUpOnApOnQocCxoKToocC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDprLGluc3Q6ZX0pLHApfX0pO2Z1bmN0aW9uIG1lKGUsbix0LHIpe2Zvcihjb25zdCBzIG9mIGUpaWYocy5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gbi52YWx1ZT1zLnZhbHVlLG47Y29uc3Qgbz1lLmZpbHRlcihzPT4hQyhzKSk7cmV0dXJuIG8ubGVuZ3RoPT09MT8obi52YWx1ZT1vWzBdLnZhbHVlLG9bMF0pOihuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6dCxlcnJvcnM6ZS5tYXAocz0+cy5pc3N1ZXMubWFwKGk9PmooaSxyLE4oKSkpKX0pLG4pfWNvbnN0IHRyPXUoIiRab2RVbmlvbiIsKGUsbik9Pnt6LmluaXQoZSxuKSxfKGUuX3pvZCwib3B0aW4iLCgpPT5uLm9wdGlvbnMuc29tZShvPT5vLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksXyhlLl96b2QsIm9wdG91dCIsKCk9Pm4ub3B0aW9ucy5zb21lKG89Pm8uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksXyhlLl96b2QsInZhbHVlcyIsKCk9PntpZihuLm9wdGlvbnMuZXZlcnkobz0+by5fem9kLnZhbHVlcykpcmV0dXJuIG5ldyBTZXQobi5vcHRpb25zLmZsYXRNYXAobz0+QXJyYXkuZnJvbShvLl96b2QudmFsdWVzKSkpfSksXyhlLl96b2QsInBhdHRlcm4iLCgpPT57aWYobi5vcHRpb25zLmV2ZXJ5KG89Pm8uX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgbz1uLm9wdGlvbnMubWFwKHM9PnMuX3pvZC5wYXR0ZXJuKTtyZXR1cm4gbmV3IFJlZ0V4cChgXigke28ubWFwKHM9PnNlKHMuc291cmNlKSkuam9pbigifCIpfSkkYCl9fSk7Y29uc3QgdD1uLm9wdGlvbnMubGVuZ3RoPT09MSxyPW4ub3B0aW9uc1swXS5fem9kLnJ1bjtlLl96b2QucGFyc2U9KG8scyk9PntpZih0KXJldHVybiByKG8scyk7bGV0IGk9ITE7Y29uc3QgYz1bXTtmb3IoY29uc3QgYSBvZiBuLm9wdGlvbnMpe2NvbnN0IGY9YS5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LHMpO2lmKGYgaW5zdGFuY2VvZiBQcm9taXNlKWMucHVzaChmKSxpPSEwO2Vsc2V7aWYoZi5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gZjtjLnB1c2goZil9fXJldHVybiBpP1Byb21pc2UuYWxsKGMpLnRoZW4oYT0+bWUoYSxvLGUscykpOm1lKGMsbyxlLHMpfX0pLHJyPXUoIiRab2RJbnRlcnNlY3Rpb24iLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhcnNlPSh0LHIpPT57Y29uc3Qgbz10LnZhbHVlLHM9bi5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpvLGlzc3VlczpbXX0sciksaT1uLnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpvLGlzc3VlczpbXX0scik7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlfHxpIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbcyxpXSkudGhlbigoW2EsZl0pPT5fZSh0LGEsZikpOl9lKHQscyxpKX19KTtmdW5jdGlvbiB0ZShlLG4pe2lmKGU9PT1uKXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZuIGluc3RhbmNlb2YgRGF0ZSYmK2U9PStuKXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKFUoZSkmJlUobikpe2NvbnN0IHQ9T2JqZWN0LmtleXMobikscj1PYmplY3Qua2V5cyhlKS5maWx0ZXIocz0+dC5pbmRleE9mKHMpIT09LTEpLG89ey4uLmUsLi4ubn07Zm9yKGNvbnN0IHMgb2Ygcil7Y29uc3QgaT10ZShlW3NdLG5bc10pO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbcywuLi5pLm1lcmdlRXJyb3JQYXRoXX07b1tzXT1pLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6b319aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheShuKSl7aWYoZS5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IHQ9W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG89ZVtyXSxzPW5bcl0saT10ZShvLHMpO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbciwuLi5pLm1lcmdlRXJyb3JQYXRoXX07dC5wdXNoKGkuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6dH19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiBfZShlLG4sdCl7Y29uc3Qgcj1uZXcgTWFwO2xldCBvO2Zvcihjb25zdCBjIG9mIG4uaXNzdWVzKWlmKGMuY29kZT09PSJ1bnJlY29nbml6ZWRfa2V5cyIpe28/PyhvPWMpO2Zvcihjb25zdCBhIG9mIGMua2V5cylyLmhhcyhhKXx8ci5zZXQoYSx7fSksci5nZXQoYSkubD0hMH1lbHNlIGUuaXNzdWVzLnB1c2goYyk7Zm9yKGNvbnN0IGMgb2YgdC5pc3N1ZXMpaWYoYy5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIilmb3IoY29uc3QgYSBvZiBjLmtleXMpci5oYXMoYSl8fHIuc2V0KGEse30pLHIuZ2V0KGEpLnI9ITA7ZWxzZSBlLmlzc3Vlcy5wdXNoKGMpO2NvbnN0IHM9Wy4uLnJdLmZpbHRlcigoWyxjXSk9PmMubCYmYy5yKS5tYXAoKFtjXSk9PmMpO2lmKHMubGVuZ3RoJiZvJiZlLmlzc3Vlcy5wdXNoKHsuLi5vLGtleXM6c30pLEMoZSkpcmV0dXJuIGU7Y29uc3QgaT10ZShuLnZhbHVlLHQudmFsdWUpO2lmKCFpLnZhbGlkKXRocm93IG5ldyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoaS5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuIGUudmFsdWU9aS5kYXRhLGV9Y29uc3Qgb3I9dSgiJFpvZEVudW0iLChlLG4pPT57ei5pbml0KGUsbik7Y29uc3QgdD1DZShuLmVudHJpZXMpLHI9bmV3IFNldCh0KTtlLl96b2QudmFsdWVzPXIsZS5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke3QuZmlsdGVyKG89Pl9uLmhhcyh0eXBlb2YgbykpLm1hcChvPT50eXBlb2Ygbz09InN0cmluZyI/WShvKTpvLnRvU3RyaW5nKCkpLmpvaW4oInwiKX0pJGApLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IGk9by52YWx1ZTtyZXR1cm4gci5oYXMoaSl8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczp0LGlucHV0OmksaW5zdDplfSksb319KSxpcj11KCIkWm9kVHJhbnNmb3JtIiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgamUoZS5jb25zdHJ1Y3Rvci5uYW1lKTtjb25zdCBvPW4udHJhbnNmb3JtKHQudmFsdWUsdCk7aWYoci5hc3luYylyZXR1cm4obyBpbnN0YW5jZW9mIFByb21pc2U/bzpQcm9taXNlLnJlc29sdmUobykpLnRoZW4oaT0+KHQudmFsdWU9aSx0KSk7aWYobyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IFI7cmV0dXJuIHQudmFsdWU9byx0fX0pO2Z1bmN0aW9uIGdlKGUsbil7cmV0dXJuIGUuaXNzdWVzLmxlbmd0aCYmbj09PXZvaWQgMD97aXNzdWVzOltdLHZhbHVlOnZvaWQgMH06ZX1jb25zdCBIZT11KCIkWm9kT3B0aW9uYWwiLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLm9wdGluPSJvcHRpb25hbCIsZS5fem9kLm9wdG91dD0ib3B0aW9uYWwiLF8oZS5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyx2b2lkIDBdKTp2b2lkIDApLF8oZS5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IHQ9bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiB0P25ldyBSZWdFeHAoYF4oJHtzZSh0LnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksZS5fem9kLnBhcnNlPSh0LHIpPT57aWYobi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpe2NvbnN0IG89bi5pbm5lclR5cGUuX3pvZC5ydW4odCxyKTtyZXR1cm4gbyBpbnN0YW5jZW9mIFByb21pc2U/by50aGVuKHM9PmdlKHMsdC52YWx1ZSkpOmdlKG8sdC52YWx1ZSl9cmV0dXJuIHQudmFsdWU9PT12b2lkIDA/dDpuLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpfX0pLHNyPXUoIiRab2RFeGFjdE9wdGlvbmFsIiwoZSxuKT0+e0hlLmluaXQoZSxuKSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLF8oZS5fem9kLCJwYXR0ZXJuIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxlLl96b2QucGFyc2U9KHQscik9Pm4uaW5uZXJUeXBlLl96b2QucnVuKHQscil9KSxjcj11KCIkWm9kTnVsbGFibGUiLChlLG4pPT57ei5pbml0KGUsbiksXyhlLl96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRpbiksXyhlLl96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxfKGUuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCB0PW4uaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gdD9uZXcgUmVnRXhwKGBeKCR7c2UodC5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ubi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsbnVsbF0pOnZvaWQgMCksZS5fem9kLnBhcnNlPSh0LHIpPT50LnZhbHVlPT09bnVsbD90Om4uaW5uZXJUeXBlLl96b2QucnVuKHQscil9KSx1cj11KCIkWm9kRGVmYXVsdCIsKGUsbik9Pnt6LmluaXQoZSxuKSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4odCxyKTtpZih0LnZhbHVlPT09dm9pZCAwKXJldHVybiB0LnZhbHVlPW4uZGVmYXVsdFZhbHVlLHQ7Y29uc3Qgbz1uLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpO3JldHVybiBvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4ocz0+dmUocyxuKSk6dmUobyxuKX19KTtmdW5jdGlvbiB2ZShlLG4pe3JldHVybiBlLnZhbHVlPT09dm9pZCAwJiYoZS52YWx1ZT1uLmRlZmF1bHRWYWx1ZSksZX1jb25zdCBhcj11KCIkWm9kUHJlZmF1bHQiLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLm9wdGluPSJvcHRpb25hbCIsXyhlLl96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KHQscik9PihyLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fHQudmFsdWU9PT12b2lkIDAmJih0LnZhbHVlPW4uZGVmYXVsdFZhbHVlKSxuLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpKX0pLGZyPXUoIiRab2ROb25PcHRpb25hbCIsKGUsbik9Pnt6LmluaXQoZSxuKSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+e2NvbnN0IHQ9bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIHQ/bmV3IFNldChbLi4udF0uZmlsdGVyKHI9PnIhPT12b2lkIDApKTp2b2lkIDB9KSxlLl96b2QucGFyc2U9KHQscik9Pntjb25zdCBvPW4uaW5uZXJUeXBlLl96b2QucnVuKHQscik7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT56ZShzLGUpKTp6ZShvLGUpfX0pO2Z1bmN0aW9uIHplKGUsbil7cmV0dXJuIWUuaXNzdWVzLmxlbmd0aCYmZS52YWx1ZT09PXZvaWQgMCYmZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoibm9ub3B0aW9uYWwiLGlucHV0OmUudmFsdWUsaW5zdDpufSksZX1jb25zdCBscj11KCIkWm9kQ2F0Y2giLChlLG4pPT57ei5pbml0KGUsbiksXyhlLl96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRpbiksXyhlLl96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4odCxyKTtjb25zdCBvPW4uaW5uZXJUeXBlLl96b2QucnVuKHQscik7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT4odC52YWx1ZT1zLnZhbHVlLHMuaXNzdWVzLmxlbmd0aCYmKHQudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi50LGVycm9yOntpc3N1ZXM6cy5pc3N1ZXMubWFwKGk9PmooaSxyLE4oKSkpfSxpbnB1dDp0LnZhbHVlfSksdC5pc3N1ZXM9W10pLHQpKToodC52YWx1ZT1vLnZhbHVlLG8uaXNzdWVzLmxlbmd0aCYmKHQudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi50LGVycm9yOntpc3N1ZXM6by5pc3N1ZXMubWFwKHM9PmoocyxyLE4oKSkpfSxpbnB1dDp0LnZhbHVlfSksdC5pc3N1ZXM9W10pLHQpfX0pLGRyPXUoIiRab2RQaXBlIiwoZSxuKT0+e3ouaW5pdChlLG4pLF8oZS5fem9kLCJ2YWx1ZXMiLCgpPT5uLmluLl96b2QudmFsdWVzKSxfKGUuX3pvZCwib3B0aW4iLCgpPT5uLmluLl96b2Qub3B0aW4pLF8oZS5fem9kLCJvcHRvdXQiLCgpPT5uLm91dC5fem9kLm9wdG91dCksXyhlLl96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPSh0LHIpPT57aWYoci5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCBzPW4ub3V0Ll96b2QucnVuKHQscik7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihpPT5MKGksbi5pbixyKSk6TChzLG4uaW4scil9Y29uc3Qgbz1uLmluLl96b2QucnVuKHQscik7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT5MKHMsbi5vdXQscikpOkwobyxuLm91dCxyKX19KTtmdW5jdGlvbiBMKGUsbix0KXtyZXR1cm4gZS5pc3N1ZXMubGVuZ3RoPyhlLmFib3J0ZWQ9ITAsZSk6bi5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LHQpfWNvbnN0IHByPXUoIiRab2RSZWFkb25seSIsKGUsbik9Pnt6LmluaXQoZSxuKSxfKGUuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksXyhlLl96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxfKGUuX3pvZCwib3B0aW4iLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0aW4pLF8oZS5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSxlLl96b2QucGFyc2U9KHQscik9PntpZihyLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHQscik7Y29uc3Qgbz1uLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpO3JldHVybiBvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4oYmUpOmJlKG8pfX0pO2Z1bmN0aW9uIGJlKGUpe3JldHVybiBlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSksZX1jb25zdCBocj11KCIkWm9kQ3VzdG9tIiwoZSxuKT0+e08uaW5pdChlLG4pLHouaW5pdChlLG4pLGUuX3pvZC5wYXJzZT0odCxyKT0+dCxlLl96b2QuY2hlY2s9dD0+e2NvbnN0IHI9dC52YWx1ZSxvPW4uZm4ocik7aWYobyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIG8udGhlbihzPT55ZShzLHQscixlKSk7eWUobyx0LHIsZSl9fSk7ZnVuY3Rpb24geWUoZSxuLHQscil7aWYoIWUpe2NvbnN0IG89e2NvZGU6ImN1c3RvbSIsaW5wdXQ6dCxpbnN0OnIscGF0aDpbLi4uci5fem9kLmRlZi5wYXRoPz9bXV0sY29udGludWU6IXIuX3pvZC5kZWYuYWJvcnR9O3IuX3pvZC5kZWYucGFyYW1zJiYoby5wYXJhbXM9ci5fem9kLmRlZi5wYXJhbXMpLG4uaXNzdWVzLnB1c2goRihvKSl9fXZhciB3ZTtjbGFzcyBtcntjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwfWFkZChuLC4uLnQpe2NvbnN0IHI9dFswXTtyZXR1cm4gdGhpcy5fbWFwLnNldChuLHIpLHImJnR5cGVvZiByPT0ib2JqZWN0IiYmImlkImluIHImJnRoaXMuX2lkbWFwLnNldChyLmlkLG4pLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXAsdGhpc31yZW1vdmUobil7Y29uc3QgdD10aGlzLl9tYXAuZ2V0KG4pO3JldHVybiB0JiZ0eXBlb2YgdD09Im9iamVjdCImJiJpZCJpbiB0JiZ0aGlzLl9pZG1hcC5kZWxldGUodC5pZCksdGhpcy5fbWFwLmRlbGV0ZShuKSx0aGlzfWdldChuKXtjb25zdCB0PW4uX3pvZC5wYXJlbnQ7aWYodCl7Y29uc3Qgcj17Li4udGhpcy5nZXQodCk/P3t9fTtkZWxldGUgci5pZDtjb25zdCBvPXsuLi5yLC4uLnRoaXMuX21hcC5nZXQobil9O3JldHVybiBPYmplY3Qua2V5cyhvKS5sZW5ndGg/bzp2b2lkIDB9cmV0dXJuIHRoaXMuX21hcC5nZXQobil9aGFzKG4pe3JldHVybiB0aGlzLl9tYXAuaGFzKG4pfX1mdW5jdGlvbiBfcigpe3JldHVybiBuZXcgbXJ9KHdlPWdsb2JhbFRoaXMpLl9fem9kX2dsb2JhbFJlZ2lzdHJ5Pz8od2UuX196b2RfZ2xvYmFsUmVnaXN0cnk9X3IoKSk7Y29uc3QgeD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5O2Z1bmN0aW9uIGdyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLC4uLmQobil9KX1mdW5jdGlvbiB2cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIGtlKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiB6cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gYnIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLmQobil9KX1mdW5jdGlvbiB5cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4uZChuKX0pfWZ1bmN0aW9uIHdyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi5kKG4pfSl9ZnVuY3Rpb24ga3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gJHIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBacihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBPcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gU3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBJcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gRXIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gUHIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBUcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gTnIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIGpyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIEFyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIENyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIFJyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIERyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiB4cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBVcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGV0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLmQobil9KX1mdW5jdGlvbiBGcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5kKG4pfSl9ZnVuY3Rpb24gSnIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIscHJlY2lzaW9uOm51bGwsLi4uZChuKX0pfWZ1bmN0aW9uIE1yKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZHVyYXRpb24iLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5kKG4pfSl9ZnVuY3Rpb24gTHIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2tzOltdLC4uLmQobil9KX1mdW5jdGlvbiBWcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi5kKG4pfSl9ZnVuY3Rpb24gV3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLC4uLmQobil9KX1mdW5jdGlvbiBCcihlKXtyZXR1cm4gbmV3IGUoe3R5cGU6InVua25vd24ifSl9ZnVuY3Rpb24gR3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im5ldmVyIiwuLi5kKG4pfSl9ZnVuY3Rpb24gJGUoZSxuKXtyZXR1cm4gbmV3IEJlKHtjaGVjazoibGVzc190aGFuIiwuLi5kKG4pLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gUShlLG4pe3JldHVybiBuZXcgQmUoe2NoZWNrOiJsZXNzX3RoYW4iLC4uLmQobiksdmFsdWU6ZSxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiBaZShlLG4pe3JldHVybiBuZXcgR2Uoe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmQobiksdmFsdWU6ZSxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiBlZShlLG4pe3JldHVybiBuZXcgR2Uoe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmQobiksdmFsdWU6ZSxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiBPZShlLG4pe3JldHVybiBuZXcgZnQoe2NoZWNrOiJtdWx0aXBsZV9vZiIsLi4uZChuKSx2YWx1ZTplfSl9ZnVuY3Rpb24gUWUoZSxuKXtyZXR1cm4gbmV3IGR0KHtjaGVjazoibWF4X2xlbmd0aCIsLi4uZChuKSxtYXhpbXVtOmV9KX1mdW5jdGlvbiBHKGUsbil7cmV0dXJuIG5ldyBwdCh7Y2hlY2s6Im1pbl9sZW5ndGgiLC4uLmQobiksbWluaW11bTplfSl9ZnVuY3Rpb24gZW4oZSxuKXtyZXR1cm4gbmV3IGh0KHtjaGVjazoibGVuZ3RoX2VxdWFscyIsLi4uZChuKSxsZW5ndGg6ZX0pfWZ1bmN0aW9uIEtyKGUsbil7cmV0dXJuIG5ldyBtdCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoicmVnZXgiLC4uLmQobikscGF0dGVybjplfSl9ZnVuY3Rpb24gWXIoZSl7cmV0dXJuIG5ldyBfdCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoibG93ZXJjYXNlIiwuLi5kKGUpfSl9ZnVuY3Rpb24gWHIoZSl7cmV0dXJuIG5ldyBndCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoidXBwZXJjYXNlIiwuLi5kKGUpfSl9ZnVuY3Rpb24gcXIoZSxuKXtyZXR1cm4gbmV3IHZ0KHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsLi4uZChuKSxpbmNsdWRlczplfSl9ZnVuY3Rpb24gSHIoZSxuKXtyZXR1cm4gbmV3IHp0KHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJzdGFydHNfd2l0aCIsLi4uZChuKSxwcmVmaXg6ZX0pfWZ1bmN0aW9uIFFyKGUsbil7cmV0dXJuIG5ldyBidCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIiwuLi5kKG4pLHN1ZmZpeDplfSl9ZnVuY3Rpb24gRChlKXtyZXR1cm4gbmV3IHl0KHtjaGVjazoib3ZlcndyaXRlIix0eDplfSl9ZnVuY3Rpb24gZW8oZSl7cmV0dXJuIEQobj0+bi5ub3JtYWxpemUoZSkpfWZ1bmN0aW9uIG5vKCl7cmV0dXJuIEQoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIHRvKCl7cmV0dXJuIEQoZT0+ZS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBybygpe3JldHVybiBEKGU9PmUudG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gb28oKXtyZXR1cm4gRChlPT5obihlKSl9ZnVuY3Rpb24gaW8oZSxuLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6biwuLi5kKHQpfSl9ZnVuY3Rpb24gc28oZSxuLHQpe3JldHVybiBuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpuLC4uLmQodCl9KX1mdW5jdGlvbiBjbyhlKXtjb25zdCBuPXVvKHQ9Pih0LmFkZElzc3VlPXI9PntpZih0eXBlb2Ygcj09InN0cmluZyIpdC5pc3N1ZXMucHVzaChGKHIsdC52YWx1ZSxuLl96b2QuZGVmKSk7ZWxzZXtjb25zdCBvPXI7by5mYXRhbCYmKG8uY29udGludWU9ITEpLG8uY29kZT8/KG8uY29kZT0iY3VzdG9tIiksby5pbnB1dD8/KG8uaW5wdXQ9dC52YWx1ZSksby5pbnN0Pz8oby5pbnN0PW4pLG8uY29udGludWU/PyhvLmNvbnRpbnVlPSFuLl96b2QuZGVmLmFib3J0KSx0Lmlzc3Vlcy5wdXNoKEYobykpfX0sZSh0LnZhbHVlLHQpKSk7cmV0dXJuIG59ZnVuY3Rpb24gdW8oZSxuKXtjb25zdCB0PW5ldyBPKHtjaGVjazoiY3VzdG9tIiwuLi5kKG4pfSk7cmV0dXJuIHQuX3pvZC5jaGVjaz1lLHR9ZnVuY3Rpb24gbm4oZSl7bGV0IG49ZT8udGFyZ2V0Pz8iZHJhZnQtMjAyMC0xMiI7cmV0dXJuIG49PT0iZHJhZnQtNCImJihuPSJkcmFmdC0wNCIpLG49PT0iZHJhZnQtNyImJihuPSJkcmFmdC0wNyIpLHtwcm9jZXNzb3JzOmUucHJvY2Vzc29ycz8/e30sbWV0YWRhdGFSZWdpc3RyeTplPy5tZXRhZGF0YT8/eCx0YXJnZXQ6bix1bnJlcHJlc2VudGFibGU6ZT8udW5yZXByZXNlbnRhYmxlPz8idGhyb3ciLG92ZXJyaWRlOmU/Lm92ZXJyaWRlPz8oKCk9Pnt9KSxpbzplPy5pbz8/Im91dHB1dCIsY291bnRlcjowLHNlZW46bmV3IE1hcCxjeWNsZXM6ZT8uY3ljbGVzPz8icmVmIixyZXVzZWQ6ZT8ucmV1c2VkPz8iaW5saW5lIixleHRlcm5hbDplPy5leHRlcm5hbD8/dm9pZCAwfX1mdW5jdGlvbiB3KGUsbix0PXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgcjtjb25zdCBvPWUuX3pvZC5kZWYscz1uLnNlZW4uZ2V0KGUpO2lmKHMpcmV0dXJuIHMuY291bnQrKyx0LnNjaGVtYVBhdGguaW5jbHVkZXMoZSkmJihzLmN5Y2xlPXQucGF0aCkscy5zY2hlbWE7Y29uc3QgaT17c2NoZW1hOnt9LGNvdW50OjEsY3ljbGU6dm9pZCAwLHBhdGg6dC5wYXRofTtuLnNlZW4uc2V0KGUsaSk7Y29uc3QgYz1lLl96b2QudG9KU09OU2NoZW1hPy4oKTtpZihjKWkuc2NoZW1hPWM7ZWxzZXtjb25zdCBsPXsuLi50LHNjaGVtYVBhdGg6Wy4uLnQuc2NoZW1hUGF0aCxlXSxwYXRoOnQucGF0aH07aWYoZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hKWUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYShuLGkuc2NoZW1hLGwpO2Vsc2V7Y29uc3QgcD1pLnNjaGVtYSxoPW4ucHJvY2Vzc29yc1tvLnR5cGVdO2lmKCFoKXRocm93IG5ldyBFcnJvcihgW3RvSlNPTlNjaGVtYV06IE5vbi1yZXByZXNlbnRhYmxlIHR5cGUgZW5jb3VudGVyZWQ6ICR7by50eXBlfWApO2goZSxuLHAsbCl9Y29uc3QgbT1lLl96b2QucGFyZW50O20mJihpLnJlZnx8KGkucmVmPW0pLHcobSxuLGwpLG4uc2Vlbi5nZXQobSkuaXNQYXJlbnQ9ITApfWNvbnN0IGE9bi5tZXRhZGF0YVJlZ2lzdHJ5LmdldChlKTtyZXR1cm4gYSYmT2JqZWN0LmFzc2lnbihpLnNjaGVtYSxhKSxuLmlvPT09ImlucHV0IiYmJChlKSYmKGRlbGV0ZSBpLnNjaGVtYS5leGFtcGxlcyxkZWxldGUgaS5zY2hlbWEuZGVmYXVsdCksbi5pbz09PSJpbnB1dCImJmkuc2NoZW1hLl9wcmVmYXVsdCYmKChyPWkuc2NoZW1hKS5kZWZhdWx0Pz8oci5kZWZhdWx0PWkuc2NoZW1hLl9wcmVmYXVsdCkpLGRlbGV0ZSBpLnNjaGVtYS5fcHJlZmF1bHQsbi5zZWVuLmdldChlKS5zY2hlbWF9ZnVuY3Rpb24gdG4oZSxuKXtjb25zdCB0PWUuc2Vlbi5nZXQobik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJVbnByb2Nlc3NlZCBzY2hlbWEuIFRoaXMgaXMgYSBidWcgaW4gWm9kLiIpO2NvbnN0IHI9bmV3IE1hcDtmb3IoY29uc3QgaSBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBjPWUubWV0YWRhdGFSZWdpc3RyeS5nZXQoaVswXSk/LmlkO2lmKGMpe2NvbnN0IGE9ci5nZXQoYyk7aWYoYSYmYSE9PWlbMF0pdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgc2NoZW1hIGlkICIke2N9IiBkZXRlY3RlZCBkdXJpbmcgSlNPTiBTY2hlbWEgY29udmVyc2lvbi4gVHdvIGRpZmZlcmVudCBzY2hlbWFzIGNhbm5vdCBzaGFyZSB0aGUgc2FtZSBpZCB3aGVuIGNvbnZlcnRlZCB0b2dldGhlci5gKTtyLnNldChjLGlbMF0pfX1jb25zdCBvPWk9Pntjb25zdCBjPWUudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihlLmV4dGVybmFsKXtjb25zdCBtPWUuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGlbMF0pPy5pZCxwPWUuZXh0ZXJuYWwudXJpPz8oaz0+ayk7aWYobSlyZXR1cm57cmVmOnAobSl9O2NvbnN0IGg9aVsxXS5kZWZJZD8/aVsxXS5zY2hlbWEuaWQ/P2BzY2hlbWEke2UuY291bnRlcisrfWA7cmV0dXJuIGlbMV0uZGVmSWQ9aCx7ZGVmSWQ6aCxyZWY6YCR7cCgiX19zaGFyZWQiKX0jLyR7Y30vJHtofWB9fWlmKGlbMV09PT10KXJldHVybntyZWY6IiMifTtjb25zdCBmPWAjLyR7Y30vYCxsPWlbMV0uc2NoZW1hLmlkPz9gX19zY2hlbWEke2UuY291bnRlcisrfWA7cmV0dXJue2RlZklkOmwscmVmOmYrbH19LHM9aT0+e2lmKGlbMV0uc2NoZW1hLiRyZWYpcmV0dXJuO2NvbnN0IGM9aVsxXSx7cmVmOmEsZGVmSWQ6Zn09byhpKTtjLmRlZj17Li4uYy5zY2hlbWF9LGYmJihjLmRlZklkPWYpO2NvbnN0IGw9Yy5zY2hlbWE7Zm9yKGNvbnN0IG0gaW4gbClkZWxldGUgbFttXTtsLiRyZWY9YX07aWYoZS5jeWNsZXM9PT0idGhyb3ciKWZvcihjb25zdCBpIG9mIGUuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IGM9aVsxXTtpZihjLmN5Y2xlKXRocm93IG5ldyBFcnJvcihgQ3ljbGUgZGV0ZWN0ZWQ6ICMvJHtjLmN5Y2xlPy5qb2luKCIvIil9Lzxyb290PgoKU2V0IHRoZSBcYGN5Y2xlc1xgIHBhcmFtZXRlciB0byBcYCJyZWYiXGAgdG8gcmVzb2x2ZSBjeWNsaWNhbCBzY2hlbWFzIHdpdGggZGVmcy5gKX1mb3IoY29uc3QgaSBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBjPWlbMV07aWYobj09PWlbMF0pe3MoaSk7Y29udGludWV9aWYoZS5leHRlcm5hbCl7Y29uc3QgZj1lLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChpWzBdKT8uaWQ7aWYobiE9PWlbMF0mJmYpe3MoaSk7Y29udGludWV9fWlmKGUubWV0YWRhdGFSZWdpc3RyeS5nZXQoaVswXSk/LmlkKXtzKGkpO2NvbnRpbnVlfWlmKGMuY3ljbGUpe3MoaSk7Y29udGludWV9aWYoYy5jb3VudD4xJiZlLnJldXNlZD09PSJyZWYiKXtzKGkpO2NvbnRpbnVlfX19ZnVuY3Rpb24gcm4oZSxuKXtjb25zdCB0PWUuc2Vlbi5nZXQobik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJVbnByb2Nlc3NlZCBzY2hlbWEuIFRoaXMgaXMgYSBidWcgaW4gWm9kLiIpO2NvbnN0IHI9aT0+e2NvbnN0IGM9ZS5zZWVuLmdldChpKTtpZihjLnJlZj09PW51bGwpcmV0dXJuO2NvbnN0IGE9Yy5kZWY/P2Muc2NoZW1hLGY9ey4uLmF9LGw9Yy5yZWY7aWYoYy5yZWY9bnVsbCxsKXtyKGwpO2NvbnN0IHA9ZS5zZWVuLmdldChsKSxoPXAuc2NoZW1hO2lmKGguJHJlZiYmKGUudGFyZ2V0PT09ImRyYWZ0LTA3Inx8ZS50YXJnZXQ9PT0iZHJhZnQtMDQifHxlLnRhcmdldD09PSJvcGVuYXBpLTMuMCIpPyhhLmFsbE9mPWEuYWxsT2Y/P1tdLGEuYWxsT2YucHVzaChoKSk6T2JqZWN0LmFzc2lnbihhLGgpLE9iamVjdC5hc3NpZ24oYSxmKSxpLl96b2QucGFyZW50PT09bClmb3IoY29uc3QgeSBpbiBhKXk9PT0iJHJlZiJ8fHk9PT0iYWxsT2YifHx5IGluIGZ8fGRlbGV0ZSBhW3ldO2lmKGguJHJlZiYmcC5kZWYpZm9yKGNvbnN0IHkgaW4gYSl5PT09IiRyZWYifHx5PT09ImFsbE9mInx8eSBpbiBwLmRlZiYmSlNPTi5zdHJpbmdpZnkoYVt5XSk9PT1KU09OLnN0cmluZ2lmeShwLmRlZlt5XSkmJmRlbGV0ZSBhW3ldfWNvbnN0IG09aS5fem9kLnBhcmVudDtpZihtJiZtIT09bCl7cihtKTtjb25zdCBwPWUuc2Vlbi5nZXQobSk7aWYocD8uc2NoZW1hLiRyZWYmJihhLiRyZWY9cC5zY2hlbWEuJHJlZixwLmRlZikpZm9yKGNvbnN0IGggaW4gYSloPT09IiRyZWYifHxoPT09ImFsbE9mInx8aCBpbiBwLmRlZiYmSlNPTi5zdHJpbmdpZnkoYVtoXSk9PT1KU09OLnN0cmluZ2lmeShwLmRlZltoXSkmJmRlbGV0ZSBhW2hdfWUub3ZlcnJpZGUoe3pvZFNjaGVtYTppLGpzb25TY2hlbWE6YSxwYXRoOmMucGF0aD8/W119KX07Zm9yKGNvbnN0IGkgb2ZbLi4uZS5zZWVuLmVudHJpZXMoKV0ucmV2ZXJzZSgpKXIoaVswXSk7Y29uc3Qgbz17fTtpZihlLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj9vLiRzY2hlbWE9Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hIjplLnRhcmdldD09PSJkcmFmdC0wNyI/by4kc2NoZW1hPSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSMiOmUudGFyZ2V0PT09ImRyYWZ0LTA0Ij9vLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyI6ZS50YXJnZXQsZS5leHRlcm5hbD8udXJpKXtjb25zdCBpPWUuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KG4pPy5pZDtpZighaSl0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGFuIGBpZGAgcHJvcGVydHkiKTtvLiRpZD1lLmV4dGVybmFsLnVyaShpKX1PYmplY3QuYXNzaWduKG8sdC5kZWY/P3Quc2NoZW1hKTtjb25zdCBzPWUuZXh0ZXJuYWw/LmRlZnM/P3t9O2Zvcihjb25zdCBpIG9mIGUuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IGM9aVsxXTtjLmRlZiYmYy5kZWZJZCYmKHNbYy5kZWZJZF09Yy5kZWYpfWUuZXh0ZXJuYWx8fE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiYoZS50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/by4kZGVmcz1zOm8uZGVmaW5pdGlvbnM9cyk7dHJ5e2NvbnN0IGk9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJ+c3RhbmRhcmQiLHt2YWx1ZTp7Li4ublsifnN0YW5kYXJkIl0sanNvblNjaGVtYTp7aW5wdXQ6SyhuLCJpbnB1dCIsZS5wcm9jZXNzb3JzKSxvdXRwdXQ6SyhuLCJvdXRwdXQiLGUucHJvY2Vzc29ycyl9fSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksaX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uIil9fWZ1bmN0aW9uICQoZSxuKXtjb25zdCB0PW4/P3tzZWVuOm5ldyBTZXR9O2lmKHQuc2Vlbi5oYXMoZSkpcmV0dXJuITE7dC5zZWVuLmFkZChlKTtjb25zdCByPWUuX3pvZC5kZWY7aWYoci50eXBlPT09InRyYW5zZm9ybSIpcmV0dXJuITA7aWYoci50eXBlPT09ImFycmF5IilyZXR1cm4gJChyLmVsZW1lbnQsdCk7aWYoci50eXBlPT09InNldCIpcmV0dXJuICQoci52YWx1ZVR5cGUsdCk7aWYoci50eXBlPT09ImxhenkiKXJldHVybiAkKHIuZ2V0dGVyKCksdCk7aWYoci50eXBlPT09InByb21pc2UifHxyLnR5cGU9PT0ib3B0aW9uYWwifHxyLnR5cGU9PT0ibm9ub3B0aW9uYWwifHxyLnR5cGU9PT0ibnVsbGFibGUifHxyLnR5cGU9PT0icmVhZG9ubHkifHxyLnR5cGU9PT0iZGVmYXVsdCJ8fHIudHlwZT09PSJwcmVmYXVsdCIpcmV0dXJuICQoci5pbm5lclR5cGUsdCk7aWYoci50eXBlPT09ImludGVyc2VjdGlvbiIpcmV0dXJuICQoci5sZWZ0LHQpfHwkKHIucmlnaHQsdCk7aWYoci50eXBlPT09InJlY29yZCJ8fHIudHlwZT09PSJtYXAiKXJldHVybiAkKHIua2V5VHlwZSx0KXx8JChyLnZhbHVlVHlwZSx0KTtpZihyLnR5cGU9PT0icGlwZSIpcmV0dXJuICQoci5pbix0KXx8JChyLm91dCx0KTtpZihyLnR5cGU9PT0ib2JqZWN0Iil7Zm9yKGNvbnN0IG8gaW4gci5zaGFwZSlpZigkKHIuc2hhcGVbb10sdCkpcmV0dXJuITA7cmV0dXJuITF9aWYoci50eXBlPT09InVuaW9uIil7Zm9yKGNvbnN0IG8gb2Ygci5vcHRpb25zKWlmKCQobyx0KSlyZXR1cm4hMDtyZXR1cm4hMX1pZihyLnR5cGU9PT0idHVwbGUiKXtmb3IoY29uc3QgbyBvZiByLml0ZW1zKWlmKCQobyx0KSlyZXR1cm4hMDtyZXR1cm4hIShyLnJlc3QmJiQoci5yZXN0LHQpKX1yZXR1cm4hMX1jb25zdCBhbz0oZSxuPXt9KT0+dD0+e2NvbnN0IHI9bm4oey4uLnQscHJvY2Vzc29yczpufSk7cmV0dXJuIHcoZSxyKSx0bihyLGUpLHJuKHIsZSl9LEs9KGUsbix0PXt9KT0+cj0+e2NvbnN0e2xpYnJhcnlPcHRpb25zOm8sdGFyZ2V0OnN9PXI/P3t9LGk9bm4oey4uLm8/P3t9LHRhcmdldDpzLGlvOm4scHJvY2Vzc29yczp0fSk7cmV0dXJuIHcoZSxpKSx0bihpLGUpLHJuKGksZSl9LGZvPXtndWlkOiJ1dWlkIix1cmw6InVyaSIsZGF0ZXRpbWU6ImRhdGUtdGltZSIsanNvbl9zdHJpbmc6Impzb24tc3RyaW5nIixyZWdleDoiIn0sbG89KGUsbix0LHIpPT57Y29uc3Qgbz10O28udHlwZT0ic3RyaW5nIjtjb25zdHttaW5pbXVtOnMsbWF4aW11bTppLGZvcm1hdDpjLHBhdHRlcm5zOmEsY29udGVudEVuY29kaW5nOmZ9PWUuX3pvZC5iYWc7aWYodHlwZW9mIHM9PSJudW1iZXIiJiYoby5taW5MZW5ndGg9cyksdHlwZW9mIGk9PSJudW1iZXIiJiYoby5tYXhMZW5ndGg9aSksYyYmKG8uZm9ybWF0PWZvW2NdPz9jLG8uZm9ybWF0PT09IiImJmRlbGV0ZSBvLmZvcm1hdCxjPT09InRpbWUiJiZkZWxldGUgby5mb3JtYXQpLGYmJihvLmNvbnRlbnRFbmNvZGluZz1mKSxhJiZhLnNpemU+MCl7Y29uc3QgbD1bLi4uYV07bC5sZW5ndGg9PT0xP28ucGF0dGVybj1sWzBdLnNvdXJjZTpsLmxlbmd0aD4xJiYoby5hbGxPZj1bLi4ubC5tYXAobT0+KHsuLi5uLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3t0eXBlOiJzdHJpbmcifTp7fSxwYXR0ZXJuOm0uc291cmNlfSkpXSl9fSxwbz0oZSxuLHQscik9Pntjb25zdCBvPXQse21pbmltdW06cyxtYXhpbXVtOmksZm9ybWF0OmMsbXVsdGlwbGVPZjphLGV4Y2x1c2l2ZU1heGltdW06ZixleGNsdXNpdmVNaW5pbXVtOmx9PWUuX3pvZC5iYWc7dHlwZW9mIGM9PSJzdHJpbmciJiZjLmluY2x1ZGVzKCJpbnQiKT9vLnR5cGU9ImludGVnZXIiOm8udHlwZT0ibnVtYmVyIix0eXBlb2YgbD09Im51bWJlciImJihuLnRhcmdldD09PSJkcmFmdC0wNCJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oby5taW5pbXVtPWwsby5leGNsdXNpdmVNaW5pbXVtPSEwKTpvLmV4Y2x1c2l2ZU1pbmltdW09bCksdHlwZW9mIHM9PSJudW1iZXIiJiYoby5taW5pbXVtPXMsdHlwZW9mIGw9PSJudW1iZXIiJiZuLnRhcmdldCE9PSJkcmFmdC0wNCImJihsPj1zP2RlbGV0ZSBvLm1pbmltdW06ZGVsZXRlIG8uZXhjbHVzaXZlTWluaW11bSkpLHR5cGVvZiBmPT0ibnVtYmVyIiYmKG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhvLm1heGltdW09ZixvLmV4Y2x1c2l2ZU1heGltdW09ITApOm8uZXhjbHVzaXZlTWF4aW11bT1mKSx0eXBlb2YgaT09Im51bWJlciImJihvLm1heGltdW09aSx0eXBlb2YgZj09Im51bWJlciImJm4udGFyZ2V0IT09ImRyYWZ0LTA0IiYmKGY8PWk/ZGVsZXRlIG8ubWF4aW11bTpkZWxldGUgby5leGNsdXNpdmVNYXhpbXVtKSksdHlwZW9mIGE9PSJudW1iZXIiJiYoby5tdWx0aXBsZU9mPWEpfSxobz0oZSxuLHQscik9Pnt0LnR5cGU9ImJvb2xlYW4ifSxtbz0oZSxuLHQscik9Pnt0Lm5vdD17fX0sX289KGUsbix0LHIpPT57fSxnbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz1DZShvLmVudHJpZXMpO3MuZXZlcnkoaT0+dHlwZW9mIGk9PSJudW1iZXIiKSYmKHQudHlwZT0ibnVtYmVyIikscy5ldmVyeShpPT50eXBlb2YgaT09InN0cmluZyIpJiYodC50eXBlPSJzdHJpbmciKSx0LmVudW09c30sdm89KGUsbix0LHIpPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQ3VzdG9tIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx6bz0oZSxuLHQscik9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxibz0oZSxuLHQscik9Pntjb25zdCBvPXQscz1lLl96b2QuZGVmLHttaW5pbXVtOmksbWF4aW11bTpjfT1lLl96b2QuYmFnO3R5cGVvZiBpPT0ibnVtYmVyIiYmKG8ubWluSXRlbXM9aSksdHlwZW9mIGM9PSJudW1iZXIiJiYoby5tYXhJdGVtcz1jKSxvLnR5cGU9ImFycmF5IixvLml0ZW1zPXcocy5lbGVtZW50LG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJpdGVtcyJdfSl9LHlvPShlLG4sdCxyKT0+e2NvbnN0IG89dCxzPWUuX3pvZC5kZWY7by50eXBlPSJvYmplY3QiLG8ucHJvcGVydGllcz17fTtjb25zdCBpPXMuc2hhcGU7Zm9yKGNvbnN0IGYgaW4gaSlvLnByb3BlcnRpZXNbZl09dyhpW2ZdLG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJwcm9wZXJ0aWVzIixmXX0pO2NvbnN0IGM9bmV3IFNldChPYmplY3Qua2V5cyhpKSksYT1uZXcgU2V0KFsuLi5jXS5maWx0ZXIoZj0+e2NvbnN0IGw9cy5zaGFwZVtmXS5fem9kO3JldHVybiBuLmlvPT09ImlucHV0Ij9sLm9wdGluPT09dm9pZCAwOmwub3B0b3V0PT09dm9pZCAwfSkpO2Euc2l6ZT4wJiYoby5yZXF1aXJlZD1BcnJheS5mcm9tKGEpKSxzLmNhdGNoYWxsPy5fem9kLmRlZi50eXBlPT09Im5ldmVyIj9vLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExOnMuY2F0Y2hhbGw/cy5jYXRjaGFsbCYmKG8uYWRkaXRpb25hbFByb3BlcnRpZXM9dyhzLmNhdGNoYWxsLG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJhZGRpdGlvbmFsUHJvcGVydGllcyJdfSkpOm4uaW89PT0ib3V0cHV0IiYmKG8uYWRkaXRpb25hbFByb3BlcnRpZXM9ITEpfSx3bz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz1vLmluY2x1c2l2ZT09PSExLGk9by5vcHRpb25zLm1hcCgoYyxhKT0+dyhjLG4sey4uLnIscGF0aDpbLi4uci5wYXRoLHM/Im9uZU9mIjoiYW55T2YiLGFdfSkpO3M/dC5vbmVPZj1pOnQuYW55T2Y9aX0sa289KGUsbix0LHIpPT57Y29uc3Qgbz1lLl96b2QuZGVmLHM9dyhvLmxlZnQsbix7Li4ucixwYXRoOlsuLi5yLnBhdGgsImFsbE9mIiwwXX0pLGk9dyhvLnJpZ2h0LG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJhbGxPZiIsMV19KSxjPWY9PiJhbGxPZiJpbiBmJiZPYmplY3Qua2V5cyhmKS5sZW5ndGg9PT0xLGE9Wy4uLmMocyk/cy5hbGxPZjpbc10sLi4uYyhpKT9pLmFsbE9mOltpXV07dC5hbGxPZj1hfSwkbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz13KG8uaW5uZXJUeXBlLG4sciksaT1uLnNlZW4uZ2V0KGUpO24udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oaS5yZWY9by5pbm5lclR5cGUsdC5udWxsYWJsZT0hMCk6dC5hbnlPZj1bcyx7dHlwZToibnVsbCJ9XX0sWm89KGUsbix0LHIpPT57Y29uc3Qgbz1lLl96b2QuZGVmO3coby5pbm5lclR5cGUsbixyKTtjb25zdCBzPW4uc2Vlbi5nZXQoZSk7cy5yZWY9by5pbm5lclR5cGV9LE9vPShlLG4sdCxyKT0+e2NvbnN0IG89ZS5fem9kLmRlZjt3KG8uaW5uZXJUeXBlLG4scik7Y29uc3Qgcz1uLnNlZW4uZ2V0KGUpO3MucmVmPW8uaW5uZXJUeXBlLHQuZGVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8uZGVmYXVsdFZhbHVlKSl9LFNvPShlLG4sdCxyKT0+e2NvbnN0IG89ZS5fem9kLmRlZjt3KG8uaW5uZXJUeXBlLG4scik7Y29uc3Qgcz1uLnNlZW4uZ2V0KGUpO3MucmVmPW8uaW5uZXJUeXBlLG4uaW89PT0iaW5wdXQiJiYodC5fcHJlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvLmRlZmF1bHRWYWx1ZSkpKX0sSW89KGUsbix0LHIpPT57Y29uc3Qgbz1lLl96b2QuZGVmO3coby5pbm5lclR5cGUsbixyKTtjb25zdCBzPW4uc2Vlbi5nZXQoZSk7cy5yZWY9by5pbm5lclR5cGU7bGV0IGk7dHJ5e2k9by5jYXRjaFZhbHVlKHZvaWQgMCl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJEeW5hbWljIGNhdGNoIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBKU09OIFNjaGVtYSIpfXQuZGVmYXVsdD1pfSxFbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz1uLmlvPT09ImlucHV0Ij9vLmluLl96b2QuZGVmLnR5cGU9PT0idHJhbnNmb3JtIj9vLm91dDpvLmluOm8ub3V0O3cocyxuLHIpO2NvbnN0IGk9bi5zZWVuLmdldChlKTtpLnJlZj1zfSxQbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWY7dyhvLmlubmVyVHlwZSxuLHIpO2NvbnN0IHM9bi5zZWVuLmdldChlKTtzLnJlZj1vLmlubmVyVHlwZSx0LnJlYWRPbmx5PSEwfSxvbj0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWY7dyhvLmlubmVyVHlwZSxuLHIpO2NvbnN0IHM9bi5zZWVuLmdldChlKTtzLnJlZj1vLmlubmVyVHlwZX0sVG89dSgiWm9kSVNPRGF0ZVRpbWUiLChlLG4pPT57Q3QuaW5pdChlLG4pLHYuaW5pdChlLG4pfSk7ZnVuY3Rpb24gTm8oZSl7cmV0dXJuIFVyKFRvLGUpfWNvbnN0IGpvPXUoIlpvZElTT0RhdGUiLChlLG4pPT57UnQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSk7ZnVuY3Rpb24gQW8oZSl7cmV0dXJuIEZyKGpvLGUpfWNvbnN0IENvPXUoIlpvZElTT1RpbWUiLChlLG4pPT57RHQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSk7ZnVuY3Rpb24gUm8oZSl7cmV0dXJuIEpyKENvLGUpfWNvbnN0IERvPXUoIlpvZElTT0R1cmF0aW9uIiwoZSxuKT0+e3h0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pO2Z1bmN0aW9uIHhvKGUpe3JldHVybiBNcihEbyxlKX1jb25zdCBVbz0oZSxuKT0+e0ZlLmluaXQoZSxuKSxlLm5hbWU9IlpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtmb3JtYXQ6e3ZhbHVlOnQ9PlNuKGUsdCl9LGZsYXR0ZW46e3ZhbHVlOnQ9Pk9uKGUsdCl9LGFkZElzc3VlOnt2YWx1ZTp0PT57ZS5pc3N1ZXMucHVzaCh0KSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoZS5pc3N1ZXMsbmUsMil9fSxhZGRJc3N1ZXM6e3ZhbHVlOnQ9PntlLmlzc3Vlcy5wdXNoKC4uLnQpLGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmlzc3VlcyxuZSwyKX19LGlzRW1wdHk6e2dldCgpe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg9PT0wfX19KX0sUz11KCJab2RFcnJvciIsVW8se1BhcmVudDpFcnJvcn0pLEZvPXVlKFMpLEpvPWFlKFMpLE1vPVgoUyksTG89cShTKSxWbz1QbihTKSxXbz1UbihTKSxCbz1ObihTKSxHbz1qbihTKSxLbz1BbihTKSxZbz1DbihTKSxYbz1SbihTKSxxbz1EbihTKSxiPXUoIlpvZFR5cGUiLChlLG4pPT4oei5pbml0KGUsbiksT2JqZWN0LmFzc2lnbihlWyJ+c3RhbmRhcmQiXSx7anNvblNjaGVtYTp7aW5wdXQ6SyhlLCJpbnB1dCIpLG91dHB1dDpLKGUsIm91dHB1dCIpfX0pLGUudG9KU09OU2NoZW1hPWFvKGUse30pLGUuZGVmPW4sZS50eXBlPW4udHlwZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX2RlZiIse3ZhbHVlOm59KSxlLmNoZWNrPSguLi50KT0+ZS5jbG9uZShQKG4se2NoZWNrczpbLi4ubi5jaGVja3M/P1tdLC4uLnQubWFwKHI9PnR5cGVvZiByPT0iZnVuY3Rpb24iP3tfem9kOntjaGVjazpyLGRlZjp7Y2hlY2s6ImN1c3RvbSJ9LG9uYXR0YWNoOltdfX06cildfSkse3BhcmVudDohMH0pLGUud2l0aD1lLmNoZWNrLGUuY2xvbmU9KHQscik9PlQoZSx0LHIpLGUuYnJhbmQ9KCk9PmUsZS5yZWdpc3Rlcj0oKHQscik9Pih0LmFkZChlLHIpLGUpKSxlLnBhcnNlPSh0LHIpPT5GbyhlLHQscix7Y2FsbGVlOmUucGFyc2V9KSxlLnNhZmVQYXJzZT0odCxyKT0+TW8oZSx0LHIpLGUucGFyc2VBc3luYz1hc3luYyh0LHIpPT5KbyhlLHQscix7Y2FsbGVlOmUucGFyc2VBc3luY30pLGUuc2FmZVBhcnNlQXN5bmM9YXN5bmModCxyKT0+TG8oZSx0LHIpLGUuc3BhPWUuc2FmZVBhcnNlQXN5bmMsZS5lbmNvZGU9KHQscik9PlZvKGUsdCxyKSxlLmRlY29kZT0odCxyKT0+V28oZSx0LHIpLGUuZW5jb2RlQXN5bmM9YXN5bmModCxyKT0+Qm8oZSx0LHIpLGUuZGVjb2RlQXN5bmM9YXN5bmModCxyKT0+R28oZSx0LHIpLGUuc2FmZUVuY29kZT0odCxyKT0+S28oZSx0LHIpLGUuc2FmZURlY29kZT0odCxyKT0+WW8oZSx0LHIpLGUuc2FmZUVuY29kZUFzeW5jPWFzeW5jKHQscik9PlhvKGUsdCxyKSxlLnNhZmVEZWNvZGVBc3luYz1hc3luYyh0LHIpPT5xbyhlLHQsciksZS5yZWZpbmU9KHQscik9PmUuY2hlY2soV2kodCxyKSksZS5zdXBlclJlZmluZT10PT5lLmNoZWNrKEJpKHQpKSxlLm92ZXJ3cml0ZT10PT5lLmNoZWNrKEQodCkpLGUub3B0aW9uYWw9KCk9PlBlKGUpLGUuZXhhY3RPcHRpb25hbD0oKT0+TmkoZSksZS5udWxsYWJsZT0oKT0+VGUoZSksZS5udWxsaXNoPSgpPT5QZShUZShlKSksZS5ub25vcHRpb25hbD10PT54aShlLHQpLGUuYXJyYXk9KCk9PndpKGUpLGUub3I9dD0+WmkoW2UsdF0pLGUuYW5kPXQ9PlNpKGUsdCksZS50cmFuc2Zvcm09dD0+TmUoZSxQaSh0KSksZS5kZWZhdWx0PXQ9PkNpKGUsdCksZS5wcmVmYXVsdD10PT5EaShlLHQpLGUuY2F0Y2g9dD0+RmkoZSx0KSxlLnBpcGU9dD0+TmUoZSx0KSxlLnJlYWRvbmx5PSgpPT5MaShlKSxlLmRlc2NyaWJlPXQ9Pntjb25zdCByPWUuY2xvbmUoKTtyZXR1cm4geC5hZGQocix7ZGVzY3JpcHRpb246dH0pLHJ9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJkZXNjcmlwdGlvbiIse2dldCgpe3JldHVybiB4LmdldChlKT8uZGVzY3JpcHRpb259LGNvbmZpZ3VyYWJsZTohMH0pLGUubWV0YT0oLi4udCk9PntpZih0Lmxlbmd0aD09PTApcmV0dXJuIHguZ2V0KGUpO2NvbnN0IHI9ZS5jbG9uZSgpO3JldHVybiB4LmFkZChyLHRbMF0pLHJ9LGUuaXNPcHRpb25hbD0oKT0+ZS5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzLGUuaXNOdWxsYWJsZT0oKT0+ZS5zYWZlUGFyc2UobnVsbCkuc3VjY2VzcyxlLmFwcGx5PXQ9PnQoZSksZSkpLHNuPXUoIl9ab2RTdHJpbmciLChlLG4pPT57ZmUuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLHMpPT5sbyhlLHIsbyk7Y29uc3QgdD1lLl96b2QuYmFnO2UuZm9ybWF0PXQuZm9ybWF0Pz9udWxsLGUubWluTGVuZ3RoPXQubWluaW11bT8/bnVsbCxlLm1heExlbmd0aD10Lm1heGltdW0/P251bGwsZS5yZWdleD0oLi4ucik9PmUuY2hlY2soS3IoLi4ucikpLGUuaW5jbHVkZXM9KC4uLnIpPT5lLmNoZWNrKHFyKC4uLnIpKSxlLnN0YXJ0c1dpdGg9KC4uLnIpPT5lLmNoZWNrKEhyKC4uLnIpKSxlLmVuZHNXaXRoPSguLi5yKT0+ZS5jaGVjayhRciguLi5yKSksZS5taW49KC4uLnIpPT5lLmNoZWNrKEcoLi4ucikpLGUubWF4PSguLi5yKT0+ZS5jaGVjayhRZSguLi5yKSksZS5sZW5ndGg9KC4uLnIpPT5lLmNoZWNrKGVuKC4uLnIpKSxlLm5vbmVtcHR5PSguLi5yKT0+ZS5jaGVjayhHKDEsLi4ucikpLGUubG93ZXJjYXNlPXI9PmUuY2hlY2soWXIocikpLGUudXBwZXJjYXNlPXI9PmUuY2hlY2soWHIocikpLGUudHJpbT0oKT0+ZS5jaGVjayhubygpKSxlLm5vcm1hbGl6ZT0oLi4ucik9PmUuY2hlY2soZW8oLi4ucikpLGUudG9Mb3dlckNhc2U9KCk9PmUuY2hlY2sodG8oKSksZS50b1VwcGVyQ2FzZT0oKT0+ZS5jaGVjayhybygpKSxlLnNsdWdpZnk9KCk9PmUuY2hlY2sob28oKSl9KSxIbz11KCJab2RTdHJpbmciLChlLG4pPT57ZmUuaW5pdChlLG4pLHNuLmluaXQoZSxuKSxlLmVtYWlsPXQ9PmUuY2hlY2sodnIoUW8sdCkpLGUudXJsPXQ9PmUuY2hlY2soa3IoZWksdCkpLGUuand0PXQ9PmUuY2hlY2soeHIobWksdCkpLGUuZW1vamk9dD0+ZS5jaGVjaygkcihuaSx0KSksZS5ndWlkPXQ9PmUuY2hlY2soa2UoU2UsdCkpLGUudXVpZD10PT5lLmNoZWNrKHpyKFYsdCkpLGUudXVpZHY0PXQ9PmUuY2hlY2soYnIoVix0KSksZS51dWlkdjY9dD0+ZS5jaGVjayh5cihWLHQpKSxlLnV1aWR2Nz10PT5lLmNoZWNrKHdyKFYsdCkpLGUubmFub2lkPXQ9PmUuY2hlY2soWnIodGksdCkpLGUuZ3VpZD10PT5lLmNoZWNrKGtlKFNlLHQpKSxlLmN1aWQ9dD0+ZS5jaGVjayhPcihyaSx0KSksZS5jdWlkMj10PT5lLmNoZWNrKFNyKG9pLHQpKSxlLnVsaWQ9dD0+ZS5jaGVjayhJcihpaSx0KSksZS5iYXNlNjQ9dD0+ZS5jaGVjayhDcihkaSx0KSksZS5iYXNlNjR1cmw9dD0+ZS5jaGVjayhScihwaSx0KSksZS54aWQ9dD0+ZS5jaGVjayhFcihzaSx0KSksZS5rc3VpZD10PT5lLmNoZWNrKFByKGNpLHQpKSxlLmlwdjQ9dD0+ZS5jaGVjayhUcih1aSx0KSksZS5pcHY2PXQ9PmUuY2hlY2soTnIoYWksdCkpLGUuY2lkcnY0PXQ9PmUuY2hlY2soanIoZmksdCkpLGUuY2lkcnY2PXQ9PmUuY2hlY2soQXIobGksdCkpLGUuZTE2ND10PT5lLmNoZWNrKERyKGhpLHQpKSxlLmRhdGV0aW1lPXQ9PmUuY2hlY2soTm8odCkpLGUuZGF0ZT10PT5lLmNoZWNrKEFvKHQpKSxlLnRpbWU9dD0+ZS5jaGVjayhSbyh0KSksZS5kdXJhdGlvbj10PT5lLmNoZWNrKHhvKHQpKX0pO2Z1bmN0aW9uIEtpKGUpe3JldHVybiBncihIbyxlKX1jb25zdCB2PXUoIlpvZFN0cmluZ0Zvcm1hdCIsKGUsbik9PntnLmluaXQoZSxuKSxzbi5pbml0KGUsbil9KSxRbz11KCJab2RFbWFpbCIsKGUsbik9PntPdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxTZT11KCJab2RHVUlEIiwoZSxuKT0+eyR0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLFY9dSgiWm9kVVVJRCIsKGUsbik9PntadC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxlaT11KCJab2RVUkwiLChlLG4pPT57U3QuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksbmk9dSgiWm9kRW1vamkiLChlLG4pPT57SXQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksdGk9dSgiWm9kTmFub0lEIiwoZSxuKT0+e0V0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLHJpPXUoIlpvZENVSUQiLChlLG4pPT57UHQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksb2k9dSgiWm9kQ1VJRDIiLChlLG4pPT57VHQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksaWk9dSgiWm9kVUxJRCIsKGUsbik9PntOdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxzaT11KCJab2RYSUQiLChlLG4pPT57anQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksY2k9dSgiWm9kS1NVSUQiLChlLG4pPT57QXQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksdWk9dSgiWm9kSVB2NCIsKGUsbik9PntVdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxhaT11KCJab2RJUHY2IiwoZSxuKT0+e0Z0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLGZpPXUoIlpvZENJRFJ2NCIsKGUsbik9PntKdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxsaT11KCJab2RDSURSdjYiLChlLG4pPT57TXQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksZGk9dSgiWm9kQmFzZTY0IiwoZSxuKT0+e0x0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLHBpPXUoIlpvZEJhc2U2NFVSTCIsKGUsbik9PntXdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxoaT11KCJab2RFMTY0IiwoZSxuKT0+e0J0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLG1pPXUoIlpvZEpXVCIsKGUsbik9PntLdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxjbj11KCJab2ROdW1iZXIiLChlLG4pPT57WWUuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLHMpPT5wbyhlLHIsbyksZS5ndD0ocixvKT0+ZS5jaGVjayhaZShyLG8pKSxlLmd0ZT0ocixvKT0+ZS5jaGVjayhlZShyLG8pKSxlLm1pbj0ocixvKT0+ZS5jaGVjayhlZShyLG8pKSxlLmx0PShyLG8pPT5lLmNoZWNrKCRlKHIsbykpLGUubHRlPShyLG8pPT5lLmNoZWNrKFEocixvKSksZS5tYXg9KHIsbyk9PmUuY2hlY2soUShyLG8pKSxlLmludD1yPT5lLmNoZWNrKEllKHIpKSxlLnNhZmU9cj0+ZS5jaGVjayhJZShyKSksZS5wb3NpdGl2ZT1yPT5lLmNoZWNrKFplKDAscikpLGUubm9ubmVnYXRpdmU9cj0+ZS5jaGVjayhlZSgwLHIpKSxlLm5lZ2F0aXZlPXI9PmUuY2hlY2soJGUoMCxyKSksZS5ub25wb3NpdGl2ZT1yPT5lLmNoZWNrKFEoMCxyKSksZS5tdWx0aXBsZU9mPShyLG8pPT5lLmNoZWNrKE9lKHIsbykpLGUuc3RlcD0ocixvKT0+ZS5jaGVjayhPZShyLG8pKSxlLmZpbml0ZT0oKT0+ZTtjb25zdCB0PWUuX3pvZC5iYWc7ZS5taW5WYWx1ZT1NYXRoLm1heCh0Lm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSx0LmV4Y2x1c2l2ZU1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSk/P251bGwsZS5tYXhWYWx1ZT1NYXRoLm1pbih0Lm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSx0LmV4Y2x1c2l2ZU1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSk/P251bGwsZS5pc0ludD0odC5mb3JtYXQ/PyIiKS5pbmNsdWRlcygiaW50Iil8fE51bWJlci5pc1NhZmVJbnRlZ2VyKHQubXVsdGlwbGVPZj8/LjUpLGUuaXNGaW5pdGU9ITAsZS5mb3JtYXQ9dC5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiBZaShlKXtyZXR1cm4gTHIoY24sZSl9Y29uc3QgX2k9dSgiWm9kTnVtYmVyRm9ybWF0IiwoZSxuKT0+e1l0LmluaXQoZSxuKSxjbi5pbml0KGUsbil9KTtmdW5jdGlvbiBJZShlKXtyZXR1cm4gVnIoX2ksZSl9Y29uc3QgZ2k9dSgiWm9kQm9vbGVhbiIsKGUsbik9PntYdC5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PmhvKGUsdCxyKX0pO2Z1bmN0aW9uIFhpKGUpe3JldHVybiBXcihnaSxlKX1jb25zdCB2aT11KCJab2RVbmtub3duIiwoZSxuKT0+e3F0LmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+X28oKX0pO2Z1bmN0aW9uIEVlKCl7cmV0dXJuIEJyKHZpKX1jb25zdCB6aT11KCJab2ROZXZlciIsKGUsbik9PntIdC5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9Pm1vKGUsdCxyKX0pO2Z1bmN0aW9uIGJpKGUpe3JldHVybiBHcih6aSxlKX1jb25zdCB5aT11KCJab2RBcnJheSIsKGUsbik9PntRdC5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PmJvKGUsdCxyLG8pLGUuZWxlbWVudD1uLmVsZW1lbnQsZS5taW49KHQscik9PmUuY2hlY2soRyh0LHIpKSxlLm5vbmVtcHR5PXQ9PmUuY2hlY2soRygxLHQpKSxlLm1heD0odCxyKT0+ZS5jaGVjayhRZSh0LHIpKSxlLmxlbmd0aD0odCxyKT0+ZS5jaGVjayhlbih0LHIpKSxlLnVud3JhcD0oKT0+ZS5lbGVtZW50fSk7ZnVuY3Rpb24gd2koZSxuKXtyZXR1cm4gaW8oeWksZSxuKX1jb25zdCBraT11KCJab2RPYmplY3QiLChlLG4pPT57bnIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT55byhlLHQscixvKSxfKGUsInNoYXBlIiwoKT0+bi5zaGFwZSksZS5rZXlvZj0oKT0+SWkoT2JqZWN0LmtleXMoZS5fem9kLmRlZi5zaGFwZSkpLGUuY2F0Y2hhbGw9dD0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDp0fSksZS5wYXNzdGhyb3VnaD0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDpFZSgpfSksZS5sb29zZT0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDpFZSgpfSksZS5zdHJpY3Q9KCk9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6YmkoKX0pLGUuc3RyaXA9KCk9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6dm9pZCAwfSksZS5leHRlbmQ9dD0+eW4oZSx0KSxlLnNhZmVFeHRlbmQ9dD0+d24oZSx0KSxlLm1lcmdlPXQ9PmtuKGUsdCksZS5waWNrPXQ9PnpuKGUsdCksZS5vbWl0PXQ9PmJuKGUsdCksZS5wYXJ0aWFsPSguLi50KT0+JG4odW4sZSx0WzBdKSxlLnJlcXVpcmVkPSguLi50KT0+Wm4oYW4sZSx0WzBdKX0pO2Z1bmN0aW9uIHFpKGUsbil7Y29uc3QgdD17dHlwZToib2JqZWN0IixzaGFwZTplPz97fSwuLi5kKG4pfTtyZXR1cm4gbmV3IGtpKHQpfWNvbnN0ICRpPXUoIlpvZFVuaW9uIiwoZSxuKT0+e3RyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+d28oZSx0LHIsbyksZS5vcHRpb25zPW4ub3B0aW9uc30pO2Z1bmN0aW9uIFppKGUsbil7cmV0dXJuIG5ldyAkaSh7dHlwZToidW5pb24iLG9wdGlvbnM6ZSwuLi5kKG4pfSl9Y29uc3QgT2k9dSgiWm9kSW50ZXJzZWN0aW9uIiwoZSxuKT0+e3JyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+a28oZSx0LHIsbyl9KTtmdW5jdGlvbiBTaShlLG4pe3JldHVybiBuZXcgT2koe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDplLHJpZ2h0Om59KX1jb25zdCByZT11KCJab2RFbnVtIiwoZSxuKT0+e29yLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxzKT0+Z28oZSxyLG8pLGUuZW51bT1uLmVudHJpZXMsZS5vcHRpb25zPU9iamVjdC52YWx1ZXMobi5lbnRyaWVzKTtjb25zdCB0PW5ldyBTZXQoT2JqZWN0LmtleXMobi5lbnRyaWVzKSk7ZS5leHRyYWN0PShyLG8pPT57Y29uc3Qgcz17fTtmb3IoY29uc3QgaSBvZiByKWlmKHQuaGFzKGkpKXNbaV09bi5lbnRyaWVzW2ldO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtpfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgcmUoey4uLm4sY2hlY2tzOltdLC4uLmQobyksZW50cmllczpzfSl9LGUuZXhjbHVkZT0ocixvKT0+e2NvbnN0IHM9ey4uLm4uZW50cmllc307Zm9yKGNvbnN0IGkgb2YgcilpZih0LmhhcyhpKSlkZWxldGUgc1tpXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7aX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IHJlKHsuLi5uLGNoZWNrczpbXSwuLi5kKG8pLGVudHJpZXM6c30pfX0pO2Z1bmN0aW9uIElpKGUsbil7Y29uc3QgdD1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChyPT5bcixyXSkpOmU7cmV0dXJuIG5ldyByZSh7dHlwZToiZW51bSIsZW50cmllczp0LC4uLmQobil9KX1jb25zdCBFaT11KCJab2RUcmFuc2Zvcm0iLChlLG4pPT57aXIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT56byhlLHQpLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgamUoZS5jb25zdHJ1Y3Rvci5uYW1lKTt0LmFkZElzc3VlPXM9PntpZih0eXBlb2Ygcz09InN0cmluZyIpdC5pc3N1ZXMucHVzaChGKHMsdC52YWx1ZSxuKSk7ZWxzZXtjb25zdCBpPXM7aS5mYXRhbCYmKGkuY29udGludWU9ITEpLGkuY29kZT8/KGkuY29kZT0iY3VzdG9tIiksaS5pbnB1dD8/KGkuaW5wdXQ9dC52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PWUpLHQuaXNzdWVzLnB1c2goRihpKSl9fTtjb25zdCBvPW4udHJhbnNmb3JtKHQudmFsdWUsdCk7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT4odC52YWx1ZT1zLHQpKToodC52YWx1ZT1vLHQpfX0pO2Z1bmN0aW9uIFBpKGUpe3JldHVybiBuZXcgRWkoe3R5cGU6InRyYW5zZm9ybSIsdHJhbnNmb3JtOmV9KX1jb25zdCB1bj11KCJab2RPcHRpb25hbCIsKGUsbik9PntIZS5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9Pm9uKGUsdCxyLG8pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFBlKGUpe3JldHVybiBuZXcgdW4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IFRpPXUoIlpvZEV4YWN0T3B0aW9uYWwiLChlLG4pPT57c3IuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT5vbihlLHQscixvKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBOaShlKXtyZXR1cm4gbmV3IFRpKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmV9KX1jb25zdCBqaT11KCJab2ROdWxsYWJsZSIsKGUsbik9Pntjci5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PiRvKGUsdCxyLG8pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFRlKGUpe3JldHVybiBuZXcgamkoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6ZX0pfWNvbnN0IEFpPXUoIlpvZERlZmF1bHQiLChlLG4pPT57dXIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT5PbyhlLHQscixvKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGUsZS5yZW1vdmVEZWZhdWx0PWUudW53cmFwfSk7ZnVuY3Rpb24gQ2koZSxuKXtyZXR1cm4gbmV3IEFpKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpEZShuKX19KX1jb25zdCBSaT11KCJab2RQcmVmYXVsdCIsKGUsbik9Pnthci5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PlNvKGUsdCxyLG8pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIERpKGUsbil7cmV0dXJuIG5ldyBSaSh7dHlwZToicHJlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bigpOkRlKG4pfX0pfWNvbnN0IGFuPXUoIlpvZE5vbk9wdGlvbmFsIiwoZSxuKT0+e2ZyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+Wm8oZSx0LHIsbyksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24geGkoZSxuKXtyZXR1cm4gbmV3IGFuKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmUsLi4uZChuKX0pfWNvbnN0IFVpPXUoIlpvZENhdGNoIiwoZSxuKT0+e2xyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+SW8oZSx0LHIsbyksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlLGUucmVtb3ZlQ2F0Y2g9ZS51bndyYXB9KTtmdW5jdGlvbiBGaShlLG4pe3JldHVybiBuZXcgVWkoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6ZSxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246KCk9Pm59KX1jb25zdCBKaT11KCJab2RQaXBlIiwoZSxuKT0+e2RyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+RW8oZSx0LHIsbyksZS5pbj1uLmluLGUub3V0PW4ub3V0fSk7ZnVuY3Rpb24gTmUoZSxuKXtyZXR1cm4gbmV3IEppKHt0eXBlOiJwaXBlIixpbjplLG91dDpufSl9Y29uc3QgTWk9dSgiWm9kUmVhZG9ubHkiLChlLG4pPT57cHIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT5QbyhlLHQscixvKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBMaShlKXtyZXR1cm4gbmV3IE1pKHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOmV9KX1jb25zdCBWaT11KCJab2RDdXN0b20iLChlLG4pPT57aHIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT52byhlLHQpfSk7ZnVuY3Rpb24gV2koZSxuPXt9KXtyZXR1cm4gc28oVmksZSxuKX1mdW5jdGlvbiBCaShlKXtyZXR1cm4gY28oZSl9ZXhwb3J0e0lpIGFzIF8sd2kgYXMgYSxYaSBhcyBiLFlpIGFzIG4scWkgYXMgbyxLaSBhcyBzfTsK", "/_nuxt/C1OQiyUD.js": "aW1wb3J0e0ogYXMgeixLIGFzICQsYWwgYXMgayxvIGFzIHAsYyBhcyB3LGEgYXMgaCxMIGFzIHMsTSBhcyBiLGkgYXMgZSxhYSBhcyBELGggYXMgQyx2IGFzIHEsRiBhcyBTLGwgYXMgTixOIGFzIG0sYUYgYXMgeH1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHt1IGFzIEIsYSBhcyBNLF8gYXMgUH1mcm9tIi4vQ3RhMTVzRy0uanMiO2NvbnN0IF89e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIG1pbi13LTAgbWluLWgtc3ZoIGxnOm5vdC1sYXN0OmJvcmRlci1lIGxnOm5vdC1sYXN0OmJvcmRlci1kZWZhdWx0IHNocmluay0wIixib2R5OiJmbGV4IGZsZXgtY29sIGdhcC00IHNtOmdhcC02IGZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcC00IHNtOnAtNiIsaGFuZGxlOiIifSx2YXJpYW50czp7c2l6ZTp7dHJ1ZTp7cm9vdDoidy1mdWxsIGxnOnctKC0td2lkdGgpIn0sZmFsc2U6e3Jvb3Q6ImZsZXgtMSJ9fX19LFQ9WyJkYXRhLWRyYWdnaW5nIl0sQT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVEYXNoYm9hcmRQYW5lbCIscHJvcHM6e2NsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtaW5TaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjE1fSxtYXhTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFNpemU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyZXNpemFibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfX0sc2V0dXAoaSl7Y29uc3Qgbz1pLGc9eigpLGw9JCgiZGFzaGJvYXJkUGFuZWwiLG8pLHQ9Qih7c3RvcmFnZUtleToiZGFzaGJvYXJkIix1bml0OiIlIn0pLHI9YCR7dC5zdG9yYWdlS2V5fS1wYW5lbC0ke28uaWR8fGsoKX1gLHtlbDp5LHNpemU6bixpc0RyYWdnaW5nOnYsb25Nb3VzZURvd246dSxvblRvdWNoU3RhcnQ6YyxvbkRvdWJsZUNsaWNrOmZ9PU0ocix4KCgpPT4oey4uLnQsLi4ub30pKSksZD1OKCgpPT5tKHtleHRlbmQ6bShfKSwuLi5nLnVpPy5kYXNoYm9hcmRQYW5lbHx8e319KSh7c2l6ZTohIW4udmFsdWV9KSk7cmV0dXJuKGEsRik9PihwKCksdyhTLG51bGwsW2goImRpdiIsRCh7aWQ6cixyZWZfa2V5OiJlbCIscmVmOnl9LGEuJGF0dHJzLHsiZGF0YS1kcmFnZ2luZyI6ZSh2KSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6ZC52YWx1ZS5yb290KHtjbGFzczpbZShsKT8ucm9vdCxvLmNsYXNzXX0pLHN0eWxlOltlKG4pP3siLS13aWR0aCI6YCR7ZShuKX0ke2UodCkudW5pdH1gfTp2b2lkIDBdfSksW3MoYS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bcyhhLiRzbG90cywiaGVhZGVyIiksaCgiZGl2Iix7ImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOmIoZC52YWx1ZS5ib2R5KHtjbGFzczplKGwpPy5ib2R5fSkpfSxbcyhhLiRzbG90cywiYm9keSIpXSwyKSxzKGEuJHNsb3RzLCJmb290ZXIiKV0pXSwxNixUKSxzKGEuJHNsb3RzLCJyZXNpemUtaGFuZGxlIix7b25Nb3VzZURvd246ZSh1KSxvblRvdWNoU3RhcnQ6ZShjKSxvbkRvdWJsZUNsaWNrOmUoZil9LCgpPT5baS5yZXNpemFibGU/KHAoKSxDKFAse2tleTowLCJhcmlhLWNvbnRyb2xzIjpyLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOmIoZC52YWx1ZS5oYW5kbGUoe2NsYXNzOmUobCk/LmhhbmRsZX0pKSxvbk1vdXNlZG93bjplKHUpLG9uVG91Y2hzdGFydDplKGMpLG9uRGJsY2xpY2s6ZShmKX0sbnVsbCw4LFsiY2xhc3MiLCJvbk1vdXNlZG93biIsIm9uVG91Y2hzdGFydCIsIm9uRGJsY2xpY2siXSkpOnEoIiIsITApXSldLDY0KSl9fSk7ZXhwb3J0e0EgYXMgX307Cg==", "/_nuxt/C7Yy6tR3.js": "aW1wb3J0e2kgYXMgTSxSIGFzIEksY2UgYXMgQyxiRiBhcyBULGF5IGFzIFcsbCBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7ZnVuY3Rpb24gUyhvLHIsZSl7bGV0IHM9ZS5pbml0aWFsRGVwcz8/W10sdCxuPSEwO2Z1bmN0aW9uIGwoKXt2YXIgaSxhLHU7bGV0IGM7ZS5rZXkmJigoaT1lLmRlYnVnKSE9bnVsbCYmaS5jYWxsKGUpKSYmKGM9RGF0ZS5ub3coKSk7Y29uc3QgZD1vKCk7aWYoIShkLmxlbmd0aCE9PXMubGVuZ3RofHxkLnNvbWUoKGYsYik9PnNbYl0hPT1mKSkpcmV0dXJuIHQ7cz1kO2xldCBoO2lmKGUua2V5JiYoKGE9ZS5kZWJ1ZykhPW51bGwmJmEuY2FsbChlKSkmJihoPURhdGUubm93KCkpLHQ9ciguLi5kKSxlLmtleSYmKCh1PWUuZGVidWcpIT1udWxsJiZ1LmNhbGwoZSkpKXtjb25zdCBmPU1hdGgucm91bmQoKERhdGUubm93KCktYykqMTAwKS8xMDAsZz1NYXRoLnJvdW5kKChEYXRlLm5vdygpLWgpKjEwMCkvMTAwLzE2LHg9KG0sRSk9Pntmb3IobT1TdHJpbmcobSk7bS5sZW5ndGg8RTspbT0iICIrbTtyZXR1cm4gbX19cmV0dXJuIGU/Lm9uQ2hhbmdlJiYhKG4mJmUuc2tpcEluaXRpYWxPbkNoYW5nZSkmJmUub25DaGFuZ2UodCksbj0hMSx0fXJldHVybiBsLnVwZGF0ZURlcHM9aT0+e3M9aX0sbH1mdW5jdGlvbiB6KG8scil7aWYobz09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdW5kZWZpbmVkIik7cmV0dXJuIG99Y29uc3QgRD0obyxyKT0+TWF0aC5hYnMoby1yKTwxLjAxLEw9KG8scixlKT0+e2xldCBzO3JldHVybiBmdW5jdGlvbiguLi50KXtvLmNsZWFyVGltZW91dChzKSxzPW8uc2V0VGltZW91dCgoKT0+ci5hcHBseSh0aGlzLHQpLGUpfX0seT1vPT57Y29uc3R7b2Zmc2V0V2lkdGg6cixvZmZzZXRIZWlnaHQ6ZX09bztyZXR1cm57d2lkdGg6cixoZWlnaHQ6ZX19LGo9bz0+byxQPW89Pntjb25zdCByPU1hdGgubWF4KG8uc3RhcnRJbmRleC1vLm92ZXJzY2FuLDApLGU9TWF0aC5taW4oby5lbmRJbmRleCtvLm92ZXJzY2FuLG8uY291bnQtMSkscz1bXTtmb3IobGV0IHQ9cjt0PD1lO3QrKylzLnB1c2godCk7cmV0dXJuIHN9LE49KG8scik9Pntjb25zdCBlPW8uc2Nyb2xsRWxlbWVudDtpZighZSlyZXR1cm47Y29uc3Qgcz1vLnRhcmdldFdpbmRvdztpZighcylyZXR1cm47Y29uc3QgdD1sPT57Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09bDtyKHt3aWR0aDpNYXRoLnJvdW5kKGkpLGhlaWdodDpNYXRoLnJvdW5kKGEpfSl9O2lmKHQoeShlKSksIXMuUmVzaXplT2JzZXJ2ZXIpcmV0dXJuKCk9Pnt9O2NvbnN0IG49bmV3IHMuUmVzaXplT2JzZXJ2ZXIobD0+e2NvbnN0IGk9KCk9Pntjb25zdCBhPWxbMF07aWYoYT8uYm9yZGVyQm94U2l6ZSl7Y29uc3QgdT1hLmJvcmRlckJveFNpemVbMF07aWYodSl7dCh7d2lkdGg6dS5pbmxpbmVTaXplLGhlaWdodDp1LmJsb2NrU2l6ZX0pO3JldHVybn19dCh5KGUpKX07by5vcHRpb25zLnVzZUFuaW1hdGlvbkZyYW1lV2l0aFJlc2l6ZU9ic2VydmVyP3JlcXVlc3RBbmltYXRpb25GcmFtZShpKTppKCl9KTtyZXR1cm4gbi5vYnNlcnZlKGUse2JveDoiYm9yZGVyLWJveCJ9KSwoKT0+e24udW5vYnNlcnZlKGUpfX0sQT17cGFzc2l2ZTohMH0sRj10eXBlb2Ygd2luZG93PiJ1Ij8hMDoib25zY3JvbGxlbmQiaW4gd2luZG93LEI9KG8scik9Pntjb25zdCBlPW8uc2Nyb2xsRWxlbWVudDtpZighZSlyZXR1cm47Y29uc3Qgcz1vLnRhcmdldFdpbmRvdztpZighcylyZXR1cm47bGV0IHQ9MDtjb25zdCBuPW8ub3B0aW9ucy51c2VTY3JvbGxlbmRFdmVudCYmRj8oKT0+e306TChzLCgpPT57cih0LCExKX0sby5vcHRpb25zLmlzU2Nyb2xsaW5nUmVzZXREZWxheSksbD1jPT4oKT0+e2NvbnN0e2hvcml6b250YWw6ZCxpc1J0bDp2fT1vLm9wdGlvbnM7dD1kP2Uuc2Nyb2xsTGVmdCoodiYmLTF8fDEpOmUuc2Nyb2xsVG9wLG4oKSxyKHQsYyl9LGk9bCghMCksYT1sKCExKTtlLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsaSxBKTtjb25zdCB1PW8ub3B0aW9ucy51c2VTY3JvbGxlbmRFdmVudCYmRjtyZXR1cm4gdSYmZS5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGxlbmQiLGEsQSksKCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsaSksdSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGxlbmQiLGEpfX0sVj0obyxyLGUpPT57aWYocj8uYm9yZGVyQm94U2l6ZSl7Y29uc3Qgcz1yLmJvcmRlckJveFNpemVbMF07aWYocylyZXR1cm4gTWF0aC5yb3VuZChzW2Uub3B0aW9ucy5ob3Jpem9udGFsPyJpbmxpbmVTaXplIjoiYmxvY2tTaXplIl0pfXJldHVybiBvW2Uub3B0aW9ucy5ob3Jpem9udGFsPyJvZmZzZXRXaWR0aCI6Im9mZnNldEhlaWdodCJdfSxIPShvLHthZGp1c3RtZW50czpyPTAsYmVoYXZpb3I6ZX0scyk9Pnt2YXIgdCxuO2NvbnN0IGw9bytyOyhuPSh0PXMuc2Nyb2xsRWxlbWVudCk9PW51bGw/dm9pZCAwOnQuc2Nyb2xsVG8pPT1udWxsfHxuLmNhbGwodCx7W3Mub3B0aW9ucy5ob3Jpem9udGFsPyJsZWZ0IjoidG9wIl06bCxiZWhhdmlvcjplfSl9O2NsYXNzIFV7Y29uc3RydWN0b3Iocil7dGhpcy51bnN1YnM9W10sdGhpcy5zY3JvbGxFbGVtZW50PW51bGwsdGhpcy50YXJnZXRXaW5kb3c9bnVsbCx0aGlzLmlzU2Nyb2xsaW5nPSExLHRoaXMuc2Nyb2xsU3RhdGU9bnVsbCx0aGlzLm1lYXN1cmVtZW50c0NhY2hlPVtdLHRoaXMuaXRlbVNpemVDYWNoZT1uZXcgTWFwLHRoaXMubGFuZUFzc2lnbm1lbnRzPW5ldyBNYXAsdGhpcy5wZW5kaW5nTWVhc3VyZWRDYWNoZUluZGV4ZXM9W10sdGhpcy5wcmV2TGFuZXM9dm9pZCAwLHRoaXMubGFuZXNDaGFuZ2VkRmxhZz0hMSx0aGlzLmxhbmVzU2V0dGxpbmc9ITEsdGhpcy5zY3JvbGxSZWN0PW51bGwsdGhpcy5zY3JvbGxPZmZzZXQ9bnVsbCx0aGlzLnNjcm9sbERpcmVjdGlvbj1udWxsLHRoaXMuc2Nyb2xsQWRqdXN0bWVudHM9MCx0aGlzLmVsZW1lbnRzQ2FjaGU9bmV3IE1hcCx0aGlzLm5vdz0oKT0+e3ZhciBlLHMsdDtyZXR1cm4oKHQ9KHM9KGU9dGhpcy50YXJnZXRXaW5kb3cpPT1udWxsP3ZvaWQgMDplLnBlcmZvcm1hbmNlKT09bnVsbD92b2lkIDA6cy5ub3cpPT1udWxsP3ZvaWQgMDp0LmNhbGwocykpPz9EYXRlLm5vdygpfSx0aGlzLm9ic2VydmVyPSgoKT0+e2xldCBlPW51bGw7Y29uc3Qgcz0oKT0+ZXx8KCF0aGlzLnRhcmdldFdpbmRvd3x8IXRoaXMudGFyZ2V0V2luZG93LlJlc2l6ZU9ic2VydmVyP251bGw6ZT1uZXcgdGhpcy50YXJnZXRXaW5kb3cuUmVzaXplT2JzZXJ2ZXIodD0+e3QuZm9yRWFjaChuPT57Y29uc3QgbD0oKT0+e2NvbnN0IGk9bi50YXJnZXQsYT10aGlzLmluZGV4RnJvbUVsZW1lbnQoaSk7aWYoIWkuaXNDb25uZWN0ZWQpe3RoaXMub2JzZXJ2ZXIudW5vYnNlcnZlKGkpO3JldHVybn10aGlzLnNob3VsZE1lYXN1cmVEdXJpbmdTY3JvbGwoYSkmJnRoaXMucmVzaXplSXRlbShhLHRoaXMub3B0aW9ucy5tZWFzdXJlRWxlbWVudChpLG4sdGhpcykpfTt0aGlzLm9wdGlvbnMudXNlQW5pbWF0aW9uRnJhbWVXaXRoUmVzaXplT2JzZXJ2ZXI/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGwpOmwoKX0pfSkpO3JldHVybntkaXNjb25uZWN0OigpPT57dmFyIHQ7KHQ9cygpKT09bnVsbHx8dC5kaXNjb25uZWN0KCksZT1udWxsfSxvYnNlcnZlOnQ9Pnt2YXIgbjtyZXR1cm4obj1zKCkpPT1udWxsP3ZvaWQgMDpuLm9ic2VydmUodCx7Ym94OiJib3JkZXItYm94In0pfSx1bm9ic2VydmU6dD0+e3ZhciBuO3JldHVybihuPXMoKSk9PW51bGw/dm9pZCAwOm4udW5vYnNlcnZlKHQpfX19KSgpLHRoaXMucmFuZ2U9bnVsbCx0aGlzLnNldE9wdGlvbnM9ZT0+e09iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtzLHRdKT0+e3R5cGVvZiB0PiJ1IiYmZGVsZXRlIGVbc119KSx0aGlzLm9wdGlvbnM9e2RlYnVnOiExLGluaXRpYWxPZmZzZXQ6MCxvdmVyc2NhbjoxLHBhZGRpbmdTdGFydDowLHBhZGRpbmdFbmQ6MCxzY3JvbGxQYWRkaW5nU3RhcnQ6MCxzY3JvbGxQYWRkaW5nRW5kOjAsaG9yaXpvbnRhbDohMSxnZXRJdGVtS2V5OmoscmFuZ2VFeHRyYWN0b3I6UCxvbkNoYW5nZTooKT0+e30sbWVhc3VyZUVsZW1lbnQ6Vixpbml0aWFsUmVjdDp7d2lkdGg6MCxoZWlnaHQ6MH0sc2Nyb2xsTWFyZ2luOjAsZ2FwOjAsaW5kZXhBdHRyaWJ1dGU6ImRhdGEtaW5kZXgiLGluaXRpYWxNZWFzdXJlbWVudHNDYWNoZTpbXSxsYW5lczoxLGlzU2Nyb2xsaW5nUmVzZXREZWxheToxNTAsZW5hYmxlZDohMCxpc1J0bDohMSx1c2VTY3JvbGxlbmRFdmVudDohMSx1c2VBbmltYXRpb25GcmFtZVdpdGhSZXNpemVPYnNlcnZlcjohMSxsYW5lQXNzaWdubWVudE1vZGU6ImVzdGltYXRlIiwuLi5lfX0sdGhpcy5ub3RpZnk9ZT0+e3ZhciBzLHQ7KHQ9KHM9dGhpcy5vcHRpb25zKS5vbkNoYW5nZSk9PW51bGx8fHQuY2FsbChzLHRoaXMsZSl9LHRoaXMubWF5YmVOb3RpZnk9UygoKT0+KHRoaXMuY2FsY3VsYXRlUmFuZ2UoKSxbdGhpcy5pc1Njcm9sbGluZyx0aGlzLnJhbmdlP3RoaXMucmFuZ2Uuc3RhcnRJbmRleDpudWxsLHRoaXMucmFuZ2U/dGhpcy5yYW5nZS5lbmRJbmRleDpudWxsXSksZT0+e3RoaXMubm90aWZ5KGUpfSx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWcsaW5pdGlhbERlcHM6W3RoaXMuaXNTY3JvbGxpbmcsdGhpcy5yYW5nZT90aGlzLnJhbmdlLnN0YXJ0SW5kZXg6bnVsbCx0aGlzLnJhbmdlP3RoaXMucmFuZ2UuZW5kSW5kZXg6bnVsbF19KSx0aGlzLmNsZWFudXA9KCk9Pnt0aGlzLnVuc3Vicy5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChlPT5lKCkpLHRoaXMudW5zdWJzPVtdLHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMucmFmSWQhPW51bGwmJnRoaXMudGFyZ2V0V2luZG93JiYodGhpcy50YXJnZXRXaW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yYWZJZCksdGhpcy5yYWZJZD1udWxsKSx0aGlzLnNjcm9sbFN0YXRlPW51bGwsdGhpcy5zY3JvbGxFbGVtZW50PW51bGwsdGhpcy50YXJnZXRXaW5kb3c9bnVsbH0sdGhpcy5fZGlkTW91bnQ9KCk9PigpPT57dGhpcy5jbGVhbnVwKCl9LHRoaXMuX3dpbGxVcGRhdGU9KCk9Pnt2YXIgZTtjb25zdCBzPXRoaXMub3B0aW9ucy5lbmFibGVkP3RoaXMub3B0aW9ucy5nZXRTY3JvbGxFbGVtZW50KCk6bnVsbDtpZih0aGlzLnNjcm9sbEVsZW1lbnQhPT1zKXtpZih0aGlzLmNsZWFudXAoKSwhcyl7dGhpcy5tYXliZU5vdGlmeSgpO3JldHVybn10aGlzLnNjcm9sbEVsZW1lbnQ9cyx0aGlzLnNjcm9sbEVsZW1lbnQmJiJvd25lckRvY3VtZW50ImluIHRoaXMuc2Nyb2xsRWxlbWVudD90aGlzLnRhcmdldFdpbmRvdz10aGlzLnNjcm9sbEVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp0aGlzLnRhcmdldFdpbmRvdz0oKGU9dGhpcy5zY3JvbGxFbGVtZW50KT09bnVsbD92b2lkIDA6ZS53aW5kb3cpPz9udWxsLHRoaXMuZWxlbWVudHNDYWNoZS5mb3JFYWNoKHQ9Pnt0aGlzLm9ic2VydmVyLm9ic2VydmUodCl9KSx0aGlzLnVuc3Vicy5wdXNoKHRoaXMub3B0aW9ucy5vYnNlcnZlRWxlbWVudFJlY3QodGhpcyx0PT57dGhpcy5zY3JvbGxSZWN0PXQsdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMudW5zdWJzLnB1c2godGhpcy5vcHRpb25zLm9ic2VydmVFbGVtZW50T2Zmc2V0KHRoaXMsKHQsbik9Pnt0aGlzLnNjcm9sbEFkanVzdG1lbnRzPTAsdGhpcy5zY3JvbGxEaXJlY3Rpb249bj90aGlzLmdldFNjcm9sbE9mZnNldCgpPHQ/ImZvcndhcmQiOiJiYWNrd2FyZCI6bnVsbCx0aGlzLnNjcm9sbE9mZnNldD10LHRoaXMuaXNTY3JvbGxpbmc9bix0aGlzLnNjcm9sbFN0YXRlJiZ0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCksdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCkse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjp2b2lkIDB9KX19LHRoaXMucmFmSWQ9bnVsbCx0aGlzLmdldFNpemU9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbFJlY3Q9dGhpcy5zY3JvbGxSZWN0Pz90aGlzLm9wdGlvbnMuaW5pdGlhbFJlY3QsdGhpcy5zY3JvbGxSZWN0W3RoaXMub3B0aW9ucy5ob3Jpem9udGFsPyJ3aWR0aCI6ImhlaWdodCJdKToodGhpcy5zY3JvbGxSZWN0PW51bGwsMCksdGhpcy5nZXRTY3JvbGxPZmZzZXQ9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbE9mZnNldD10aGlzLnNjcm9sbE9mZnNldD8/KHR5cGVvZiB0aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldD09ImZ1bmN0aW9uIj90aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldCgpOnRoaXMub3B0aW9ucy5pbml0aWFsT2Zmc2V0KSx0aGlzLnNjcm9sbE9mZnNldCk6KHRoaXMuc2Nyb2xsT2Zmc2V0PW51bGwsMCksdGhpcy5nZXRGdXJ0aGVzdE1lYXN1cmVtZW50PShlLHMpPT57Y29uc3QgdD1uZXcgTWFwLG49bmV3IE1hcDtmb3IobGV0IGw9cy0xO2w+PTA7bC0tKXtjb25zdCBpPWVbbF07aWYodC5oYXMoaS5sYW5lKSljb250aW51ZTtjb25zdCBhPW4uZ2V0KGkubGFuZSk7aWYoYT09bnVsbHx8aS5lbmQ+YS5lbmQ/bi5zZXQoaS5sYW5lLGkpOmkuZW5kPGEuZW5kJiZ0LnNldChpLmxhbmUsITApLHQuc2l6ZT09PXRoaXMub3B0aW9ucy5sYW5lcylicmVha31yZXR1cm4gbi5zaXplPT09dGhpcy5vcHRpb25zLmxhbmVzP0FycmF5LmZyb20obi52YWx1ZXMoKSkuc29ydCgobCxpKT0+bC5lbmQ9PT1pLmVuZD9sLmluZGV4LWkuaW5kZXg6bC5lbmQtaS5lbmQpWzBdOnZvaWQgMH0sdGhpcy5nZXRNZWFzdXJlbWVudE9wdGlvbnM9UygoKT0+W3RoaXMub3B0aW9ucy5jb3VudCx0aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0LHRoaXMub3B0aW9ucy5zY3JvbGxNYXJnaW4sdGhpcy5vcHRpb25zLmdldEl0ZW1LZXksdGhpcy5vcHRpb25zLmVuYWJsZWQsdGhpcy5vcHRpb25zLmxhbmVzLHRoaXMub3B0aW9ucy5sYW5lQXNzaWdubWVudE1vZGVdLChlLHMsdCxuLGwsaSxhKT0+KHRoaXMucHJldkxhbmVzIT09dm9pZCAwJiZ0aGlzLnByZXZMYW5lcyE9PWkmJih0aGlzLmxhbmVzQ2hhbmdlZEZsYWc9ITApLHRoaXMucHJldkxhbmVzPWksdGhpcy5wZW5kaW5nTWVhc3VyZWRDYWNoZUluZGV4ZXM9W10se2NvdW50OmUscGFkZGluZ1N0YXJ0OnMsc2Nyb2xsTWFyZ2luOnQsZ2V0SXRlbUtleTpuLGVuYWJsZWQ6bCxsYW5lczppLGxhbmVBc3NpZ25tZW50TW9kZTphfSkse2tleTohMX0pLHRoaXMuZ2V0TWVhc3VyZW1lbnRzPVMoKCk9Plt0aGlzLmdldE1lYXN1cmVtZW50T3B0aW9ucygpLHRoaXMuaXRlbVNpemVDYWNoZV0sKHtjb3VudDplLHBhZGRpbmdTdGFydDpzLHNjcm9sbE1hcmdpbjp0LGdldEl0ZW1LZXk6bixlbmFibGVkOmwsbGFuZXM6aSxsYW5lQXNzaWdubWVudE1vZGU6YX0sdSk9PntpZighbClyZXR1cm4gdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLFtdO2lmKHRoaXMubGFuZUFzc2lnbm1lbnRzLnNpemU+ZSlmb3IoY29uc3QgaCBvZiB0aGlzLmxhbmVBc3NpZ25tZW50cy5rZXlzKCkpaD49ZSYmdGhpcy5sYW5lQXNzaWdubWVudHMuZGVsZXRlKGgpO3RoaXMubGFuZXNDaGFuZ2VkRmxhZyYmKHRoaXMubGFuZXNDaGFuZ2VkRmxhZz0hMSx0aGlzLmxhbmVzU2V0dGxpbmc9ITAsdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLHRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzPVtdKSx0aGlzLm1lYXN1cmVtZW50c0NhY2hlLmxlbmd0aD09PTAmJiF0aGlzLmxhbmVzU2V0dGxpbmcmJih0aGlzLm1lYXN1cmVtZW50c0NhY2hlPXRoaXMub3B0aW9ucy5pbml0aWFsTWVhc3VyZW1lbnRzQ2FjaGUsdGhpcy5tZWFzdXJlbWVudHNDYWNoZS5mb3JFYWNoKGg9Pnt0aGlzLml0ZW1TaXplQ2FjaGUuc2V0KGgua2V5LGguc2l6ZSl9KSk7Y29uc3QgYz10aGlzLmxhbmVzU2V0dGxpbmc/MDp0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcy5sZW5ndGg+MD9NYXRoLm1pbiguLi50aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcyk6MDt0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcz1bXSx0aGlzLmxhbmVzU2V0dGxpbmcmJnRoaXMubWVhc3VyZW1lbnRzQ2FjaGUubGVuZ3RoPT09ZSYmKHRoaXMubGFuZXNTZXR0bGluZz0hMSk7Y29uc3QgZD10aGlzLm1lYXN1cmVtZW50c0NhY2hlLnNsaWNlKDAsYyksdj1uZXcgQXJyYXkoaSkuZmlsbCh2b2lkIDApO2ZvcihsZXQgaD0wO2g8YztoKyspe2NvbnN0IGY9ZFtoXTtmJiYodltmLmxhbmVdPWgpfWZvcihsZXQgaD1jO2g8ZTtoKyspe2NvbnN0IGY9bihoKSxiPXRoaXMubGFuZUFzc2lnbm1lbnRzLmdldChoKTtsZXQgZyx4O2NvbnN0IG09YT09PSJlc3RpbWF0ZSJ8fHUuaGFzKGYpO2lmKGIhPT12b2lkIDAmJnRoaXMub3B0aW9ucy5sYW5lcz4xKXtnPWI7Y29uc3QgcD12W2ddLE89cCE9PXZvaWQgMD9kW3BdOnZvaWQgMDt4PU8/Ty5lbmQrdGhpcy5vcHRpb25zLmdhcDpzK3R9ZWxzZXtjb25zdCBwPXRoaXMub3B0aW9ucy5sYW5lcz09PTE/ZFtoLTFdOnRoaXMuZ2V0RnVydGhlc3RNZWFzdXJlbWVudChkLGgpO3g9cD9wLmVuZCt0aGlzLm9wdGlvbnMuZ2FwOnMrdCxnPXA/cC5sYW5lOmgldGhpcy5vcHRpb25zLmxhbmVzLHRoaXMub3B0aW9ucy5sYW5lcz4xJiZtJiZ0aGlzLmxhbmVBc3NpZ25tZW50cy5zZXQoaCxnKX1jb25zdCBFPXUuZ2V0KGYpLHc9dHlwZW9mIEU9PSJudW1iZXIiP0U6dGhpcy5vcHRpb25zLmVzdGltYXRlU2l6ZShoKSxfPXgrdztkW2hdPXtpbmRleDpoLHN0YXJ0Ongsc2l6ZTp3LGVuZDpfLGtleTpmLGxhbmU6Z30sdltnXT1ofXJldHVybiB0aGlzLm1lYXN1cmVtZW50c0NhY2hlPWQsZH0se2tleTohMSxkZWJ1ZzooKT0+dGhpcy5vcHRpb25zLmRlYnVnfSksdGhpcy5jYWxjdWxhdGVSYW5nZT1TKCgpPT5bdGhpcy5nZXRNZWFzdXJlbWVudHMoKSx0aGlzLmdldFNpemUoKSx0aGlzLmdldFNjcm9sbE9mZnNldCgpLHRoaXMub3B0aW9ucy5sYW5lc10sKGUscyx0LG4pPT50aGlzLnJhbmdlPWUubGVuZ3RoPjAmJnM+MD8kKHttZWFzdXJlbWVudHM6ZSxvdXRlclNpemU6cyxzY3JvbGxPZmZzZXQ6dCxsYW5lczpufSk6bnVsbCx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWd9KSx0aGlzLmdldFZpcnR1YWxJbmRleGVzPVMoKCk9PntsZXQgZT1udWxsLHM9bnVsbDtjb25zdCB0PXRoaXMuY2FsY3VsYXRlUmFuZ2UoKTtyZXR1cm4gdCYmKGU9dC5zdGFydEluZGV4LHM9dC5lbmRJbmRleCksdGhpcy5tYXliZU5vdGlmeS51cGRhdGVEZXBzKFt0aGlzLmlzU2Nyb2xsaW5nLGUsc10pLFt0aGlzLm9wdGlvbnMucmFuZ2VFeHRyYWN0b3IsdGhpcy5vcHRpb25zLm92ZXJzY2FuLHRoaXMub3B0aW9ucy5jb3VudCxlLHNdfSwoZSxzLHQsbixsKT0+bj09PW51bGx8fGw9PT1udWxsP1tdOmUoe3N0YXJ0SW5kZXg6bixlbmRJbmRleDpsLG92ZXJzY2FuOnMsY291bnQ6dH0pLHtrZXk6ITEsZGVidWc6KCk9PnRoaXMub3B0aW9ucy5kZWJ1Z30pLHRoaXMuaW5kZXhGcm9tRWxlbWVudD1lPT57Y29uc3Qgcz10aGlzLm9wdGlvbnMuaW5kZXhBdHRyaWJ1dGUsdD1lLmdldEF0dHJpYnV0ZShzKTtyZXR1cm4gdD9wYXJzZUludCh0LDEwKTotMX0sdGhpcy5zaG91bGRNZWFzdXJlRHVyaW5nU2Nyb2xsPWU9Pnt2YXIgcztpZighdGhpcy5zY3JvbGxTdGF0ZXx8dGhpcy5zY3JvbGxTdGF0ZS5iZWhhdmlvciE9PSJzbW9vdGgiKXJldHVybiEwO2NvbnN0IHQ9dGhpcy5zY3JvbGxTdGF0ZS5pbmRleD8/KChzPXRoaXMuZ2V0VmlydHVhbEl0ZW1Gb3JPZmZzZXQodGhpcy5zY3JvbGxTdGF0ZS5sYXN0VGFyZ2V0T2Zmc2V0KSk9PW51bGw/dm9pZCAwOnMuaW5kZXgpO2lmKHQhPT12b2lkIDAmJnRoaXMucmFuZ2Upe2NvbnN0IG49TWF0aC5tYXgodGhpcy5vcHRpb25zLm92ZXJzY2FuLE1hdGguY2VpbCgodGhpcy5yYW5nZS5lbmRJbmRleC10aGlzLnJhbmdlLnN0YXJ0SW5kZXgpLzIpKSxsPU1hdGgubWF4KDAsdC1uKSxpPU1hdGgubWluKHRoaXMub3B0aW9ucy5jb3VudC0xLHQrbik7cmV0dXJuIGU+PWwmJmU8PWl9cmV0dXJuITB9LHRoaXMubWVhc3VyZUVsZW1lbnQ9ZT0+e2lmKCFlKXt0aGlzLmVsZW1lbnRzQ2FjaGUuZm9yRWFjaCgobCxpKT0+e2wuaXNDb25uZWN0ZWR8fCh0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZShsKSx0aGlzLmVsZW1lbnRzQ2FjaGUuZGVsZXRlKGkpKX0pO3JldHVybn1jb25zdCBzPXRoaXMuaW5kZXhGcm9tRWxlbWVudChlKSx0PXRoaXMub3B0aW9ucy5nZXRJdGVtS2V5KHMpLG49dGhpcy5lbGVtZW50c0NhY2hlLmdldCh0KTtuIT09ZSYmKG4mJnRoaXMub2JzZXJ2ZXIudW5vYnNlcnZlKG4pLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShlKSx0aGlzLmVsZW1lbnRzQ2FjaGUuc2V0KHQsZSkpLCghdGhpcy5pc1Njcm9sbGluZ3x8dGhpcy5zY3JvbGxTdGF0ZSkmJnRoaXMuc2hvdWxkTWVhc3VyZUR1cmluZ1Njcm9sbChzKSYmdGhpcy5yZXNpemVJdGVtKHMsdGhpcy5vcHRpb25zLm1lYXN1cmVFbGVtZW50KGUsdm9pZCAwLHRoaXMpKX0sdGhpcy5yZXNpemVJdGVtPShlLHMpPT57dmFyIHQ7Y29uc3Qgbj10aGlzLm1lYXN1cmVtZW50c0NhY2hlW2VdO2lmKCFuKXJldHVybjtjb25zdCBsPXRoaXMuaXRlbVNpemVDYWNoZS5nZXQobi5rZXkpPz9uLnNpemUsaT1zLWw7aSE9PTAmJigoKHQ9dGhpcy5zY3JvbGxTdGF0ZSk9PW51bGw/dm9pZCAwOnQuYmVoYXZpb3IpIT09InNtb290aCImJih0aGlzLnNob3VsZEFkanVzdFNjcm9sbFBvc2l0aW9uT25JdGVtU2l6ZUNoYW5nZSE9PXZvaWQgMD90aGlzLnNob3VsZEFkanVzdFNjcm9sbFBvc2l0aW9uT25JdGVtU2l6ZUNoYW5nZShuLGksdGhpcyk6bi5zdGFydDx0aGlzLmdldFNjcm9sbE9mZnNldCgpK3RoaXMuc2Nyb2xsQWRqdXN0bWVudHMpJiZ0aGlzLl9zY3JvbGxUb09mZnNldCh0aGlzLmdldFNjcm9sbE9mZnNldCgpLHthZGp1c3RtZW50czp0aGlzLnNjcm9sbEFkanVzdG1lbnRzKz1pLGJlaGF2aW9yOnZvaWQgMH0pLHRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzLnB1c2gobi5pbmRleCksdGhpcy5pdGVtU2l6ZUNhY2hlPW5ldyBNYXAodGhpcy5pdGVtU2l6ZUNhY2hlLnNldChuLmtleSxzKSksdGhpcy5ub3RpZnkoITEpKX0sdGhpcy5nZXRWaXJ0dWFsSXRlbXM9UygoKT0+W3RoaXMuZ2V0VmlydHVhbEluZGV4ZXMoKSx0aGlzLmdldE1lYXN1cmVtZW50cygpXSwoZSxzKT0+e2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsbD1lLmxlbmd0aDtuPGw7bisrKXtjb25zdCBpPWVbbl0sYT1zW2ldO3QucHVzaChhKX1yZXR1cm4gdH0se2tleTohMSxkZWJ1ZzooKT0+dGhpcy5vcHRpb25zLmRlYnVnfSksdGhpcy5nZXRWaXJ0dWFsSXRlbUZvck9mZnNldD1lPT57Y29uc3Qgcz10aGlzLmdldE1lYXN1cmVtZW50cygpO2lmKHMubGVuZ3RoIT09MClyZXR1cm4geihzW1IoMCxzLmxlbmd0aC0xLHQ9Pnooc1t0XSkuc3RhcnQsZSldKX0sdGhpcy5nZXRNYXhTY3JvbGxPZmZzZXQ9KCk9PntpZighdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybiAwO2lmKCJzY3JvbGxIZWlnaHQiaW4gdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybiB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbD90aGlzLnNjcm9sbEVsZW1lbnQuc2Nyb2xsV2lkdGgtdGhpcy5zY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoOnRoaXMuc2Nyb2xsRWxlbWVudC5zY3JvbGxIZWlnaHQtdGhpcy5zY3JvbGxFbGVtZW50LmNsaWVudEhlaWdodDt7Y29uc3QgZT10aGlzLnNjcm9sbEVsZW1lbnQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbD9lLnNjcm9sbFdpZHRoLXRoaXMuc2Nyb2xsRWxlbWVudC5pbm5lcldpZHRoOmUuc2Nyb2xsSGVpZ2h0LXRoaXMuc2Nyb2xsRWxlbWVudC5pbm5lckhlaWdodH19LHRoaXMuZ2V0T2Zmc2V0Rm9yQWxpZ25tZW50PShlLHMsdD0wKT0+e2lmKCF0aGlzLnNjcm9sbEVsZW1lbnQpcmV0dXJuIDA7Y29uc3Qgbj10aGlzLmdldFNpemUoKSxsPXRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCk7cz09PSJhdXRvIiYmKHM9ZT49bCtuPyJlbmQiOiJzdGFydCIpLHM9PT0iY2VudGVyIj9lKz0odC1uKS8yOnM9PT0iZW5kIiYmKGUtPW4pO2NvbnN0IGk9dGhpcy5nZXRNYXhTY3JvbGxPZmZzZXQoKTtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4oaSxlKSwwKX0sdGhpcy5nZXRPZmZzZXRGb3JJbmRleD0oZSxzPSJhdXRvIik9PntlPU1hdGgubWF4KDAsTWF0aC5taW4oZSx0aGlzLm9wdGlvbnMuY291bnQtMSkpO2NvbnN0IHQ9dGhpcy5nZXRTaXplKCksbj10aGlzLmdldFNjcm9sbE9mZnNldCgpLGw9dGhpcy5tZWFzdXJlbWVudHNDYWNoZVtlXTtpZighbClyZXR1cm47aWYocz09PSJhdXRvIilpZihsLmVuZD49bit0LXRoaXMub3B0aW9ucy5zY3JvbGxQYWRkaW5nRW5kKXM9ImVuZCI7ZWxzZSBpZihsLnN0YXJ0PD1uK3RoaXMub3B0aW9ucy5zY3JvbGxQYWRkaW5nU3RhcnQpcz0ic3RhcnQiO2Vsc2UgcmV0dXJuW24sc107aWYocz09PSJlbmQiJiZlPT09dGhpcy5vcHRpb25zLmNvdW50LTEpcmV0dXJuW3RoaXMuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCksc107Y29uc3QgaT1zPT09ImVuZCI/bC5lbmQrdGhpcy5vcHRpb25zLnNjcm9sbFBhZGRpbmdFbmQ6bC5zdGFydC10aGlzLm9wdGlvbnMuc2Nyb2xsUGFkZGluZ1N0YXJ0O3JldHVyblt0aGlzLmdldE9mZnNldEZvckFsaWdubWVudChpLHMsbC5zaXplKSxzXX0sdGhpcy5zY3JvbGxUb09mZnNldD0oZSx7YWxpZ246cz0ic3RhcnQiLGJlaGF2aW9yOnQ9ImF1dG8ifT17fSk9Pntjb25zdCBuPXRoaXMuZ2V0T2Zmc2V0Rm9yQWxpZ25tZW50KGUscyksbD10aGlzLm5vdygpO3RoaXMuc2Nyb2xsU3RhdGU9e2luZGV4Om51bGwsYWxpZ246cyxiZWhhdmlvcjp0LHN0YXJ0ZWRBdDpsLGxhc3RUYXJnZXRPZmZzZXQ6bixzdGFibGVGcmFtZXM6MH0sdGhpcy5fc2Nyb2xsVG9PZmZzZXQobix7YWRqdXN0bWVudHM6dm9pZCAwLGJlaGF2aW9yOnR9KSx0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl9LHRoaXMuc2Nyb2xsVG9JbmRleD0oZSx7YWxpZ246cz0iYXV0byIsYmVoYXZpb3I6dD0iYXV0byJ9PXt9KT0+e2U9TWF0aC5tYXgoMCxNYXRoLm1pbihlLHRoaXMub3B0aW9ucy5jb3VudC0xKSk7Y29uc3Qgbj10aGlzLmdldE9mZnNldEZvckluZGV4KGUscyk7aWYoIW4pcmV0dXJuO2NvbnN0W2wsaV09bixhPXRoaXMubm93KCk7dGhpcy5zY3JvbGxTdGF0ZT17aW5kZXg6ZSxhbGlnbjppLGJlaGF2aW9yOnQsc3RhcnRlZEF0OmEsbGFzdFRhcmdldE9mZnNldDpsLHN0YWJsZUZyYW1lczowfSx0aGlzLl9zY3JvbGxUb09mZnNldChsLHthZGp1c3RtZW50czp2b2lkIDAsYmVoYXZpb3I6dH0pLHRoaXMuc2NoZWR1bGVTY3JvbGxSZWNvbmNpbGUoKX0sdGhpcy5zY3JvbGxCeT0oZSx7YmVoYXZpb3I6cz0iYXV0byJ9PXt9KT0+e2NvbnN0IHQ9dGhpcy5nZXRTY3JvbGxPZmZzZXQoKStlLG49dGhpcy5ub3coKTt0aGlzLnNjcm9sbFN0YXRlPXtpbmRleDpudWxsLGFsaWduOiJzdGFydCIsYmVoYXZpb3I6cyxzdGFydGVkQXQ6bixsYXN0VGFyZ2V0T2Zmc2V0OnQsc3RhYmxlRnJhbWVzOjB9LHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHQse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjpzfSksdGhpcy5zY2hlZHVsZVNjcm9sbFJlY29uY2lsZSgpfSx0aGlzLmdldFRvdGFsU2l6ZT0oKT0+e3ZhciBlO2NvbnN0IHM9dGhpcy5nZXRNZWFzdXJlbWVudHMoKTtsZXQgdDtpZihzLmxlbmd0aD09PTApdD10aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0O2Vsc2UgaWYodGhpcy5vcHRpb25zLmxhbmVzPT09MSl0PSgoZT1zW3MubGVuZ3RoLTFdKT09bnVsbD92b2lkIDA6ZS5lbmQpPz8wO2Vsc2V7Y29uc3Qgbj1BcnJheSh0aGlzLm9wdGlvbnMubGFuZXMpLmZpbGwobnVsbCk7bGV0IGw9cy5sZW5ndGgtMTtmb3IoO2w+PTAmJm4uc29tZShpPT5pPT09bnVsbCk7KXtjb25zdCBpPXNbbF07bltpLmxhbmVdPT09bnVsbCYmKG5baS5sYW5lXT1pLmVuZCksbC0tfXQ9TWF0aC5tYXgoLi4ubi5maWx0ZXIoaT0+aSE9PW51bGwpKX1yZXR1cm4gTWF0aC5tYXgodC10aGlzLm9wdGlvbnMuc2Nyb2xsTWFyZ2luK3RoaXMub3B0aW9ucy5wYWRkaW5nRW5kLDApfSx0aGlzLl9zY3JvbGxUb09mZnNldD0oZSx7YWRqdXN0bWVudHM6cyxiZWhhdmlvcjp0fSk9Pnt0aGlzLm9wdGlvbnMuc2Nyb2xsVG9GbihlLHtiZWhhdmlvcjp0LGFkanVzdG1lbnRzOnN9LHRoaXMpfSx0aGlzLm1lYXN1cmU9KCk9Pnt0aGlzLml0ZW1TaXplQ2FjaGU9bmV3IE1hcCx0aGlzLmxhbmVBc3NpZ25tZW50cz1uZXcgTWFwLHRoaXMubm90aWZ5KCExKX0sdGhpcy5zZXRPcHRpb25zKHIpfXNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl7aWYoIXRoaXMudGFyZ2V0V2luZG93KXt0aGlzLnNjcm9sbFN0YXRlPW51bGw7cmV0dXJufXRoaXMucmFmSWQ9PW51bGwmJih0aGlzLnJhZklkPXRoaXMudGFyZ2V0V2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMucmFmSWQ9bnVsbCx0aGlzLnJlY29uY2lsZVNjcm9sbCgpfSkpfXJlY29uY2lsZVNjcm9sbCgpe2lmKCF0aGlzLnNjcm9sbFN0YXRlfHwhdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybjtpZih0aGlzLm5vdygpLXRoaXMuc2Nyb2xsU3RhdGUuc3RhcnRlZEF0PjVlMyl7dGhpcy5zY3JvbGxTdGF0ZT1udWxsO3JldHVybn1jb25zdCBzPXRoaXMuc2Nyb2xsU3RhdGUuaW5kZXghPW51bGw/dGhpcy5nZXRPZmZzZXRGb3JJbmRleCh0aGlzLnNjcm9sbFN0YXRlLmluZGV4LHRoaXMuc2Nyb2xsU3RhdGUuYWxpZ24pOnZvaWQgMCx0PXM/c1swXTp0aGlzLnNjcm9sbFN0YXRlLmxhc3RUYXJnZXRPZmZzZXQsbj0xLGw9dCE9PXRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldDtpZighbCYmRCh0LHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCkpKXtpZih0aGlzLnNjcm9sbFN0YXRlLnN0YWJsZUZyYW1lcysrLHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzPj1uKXt0aGlzLnNjcm9sbFN0YXRlPW51bGw7cmV0dXJufX1lbHNlIHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzPTAsbCYmKHRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldD10LHRoaXMuc2Nyb2xsU3RhdGUuYmVoYXZpb3I9ImF1dG8iLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHQse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjoiYXV0byJ9KSk7dGhpcy5zY2hlZHVsZVNjcm9sbFJlY29uY2lsZSgpfX1jb25zdCBSPShvLHIsZSxzKT0+e2Zvcig7bzw9cjspe2NvbnN0IHQ9KG8rcikvMnwwLG49ZSh0KTtpZihuPHMpbz10KzE7ZWxzZSBpZihuPnMpcj10LTE7ZWxzZSByZXR1cm4gdH1yZXR1cm4gbz4wP28tMTowfTtmdW5jdGlvbiAkKHttZWFzdXJlbWVudHM6byxvdXRlclNpemU6cixzY3JvbGxPZmZzZXQ6ZSxsYW5lczpzfSl7Y29uc3QgdD1vLmxlbmd0aC0xLG49YT0+b1thXS5zdGFydDtpZihvLmxlbmd0aDw9cylyZXR1cm57c3RhcnRJbmRleDowLGVuZEluZGV4OnR9O2xldCBsPVIoMCx0LG4sZSksaT1sO2lmKHM9PT0xKWZvcig7aTx0JiZvW2ldLmVuZDxlK3I7KWkrKztlbHNlIGlmKHM+MSl7Y29uc3QgYT1BcnJheShzKS5maWxsKDApO2Zvcig7aTx0JiZhLnNvbWUoYz0+YzxlK3IpOyl7Y29uc3QgYz1vW2ldO2FbYy5sYW5lXT1jLmVuZCxpKyt9Y29uc3QgdT1BcnJheShzKS5maWxsKGUrcik7Zm9yKDtsPj0wJiZ1LnNvbWUoYz0+Yz49ZSk7KXtjb25zdCBjPW9bbF07dVtjLmxhbmVdPWMuc3RhcnQsbC0tfWw9TWF0aC5tYXgoMCxsLWwlcyksaT1NYXRoLm1pbih0LGkrKHMtMS1pJXMpKX1yZXR1cm57c3RhcnRJbmRleDpsLGVuZEluZGV4Oml9fWZ1bmN0aW9uIHEobyl7Y29uc3Qgcj1uZXcgVShNKG8pKSxlPVcocikscz1yLl9kaWRNb3VudCgpO3JldHVybiBJKCgpPT5NKG8pLmdldFNjcm9sbEVsZW1lbnQoKSx0PT57dCYmci5fd2lsbFVwZGF0ZSgpfSx7aW1tZWRpYXRlOiEwfSksSSgoKT0+TShvKSx0PT57ci5zZXRPcHRpb25zKHsuLi50LG9uQ2hhbmdlOihuLGwpPT57dmFyIGk7QyhlKSwoaT10Lm9uQ2hhbmdlKT09bnVsbHx8aS5jYWxsKHQsbixsKX19KSxyLl93aWxsVXBkYXRlKCksQyhlKX0se2ltbWVkaWF0ZTohMH0pLFQocyksZX1mdW5jdGlvbiBYKG8pe3JldHVybiBxKGsoKCk9Pih7b2JzZXJ2ZUVsZW1lbnRSZWN0Ok4sb2JzZXJ2ZUVsZW1lbnRPZmZzZXQ6QixzY3JvbGxUb0ZuOkgsLi4uTShvKX0pKSl9ZXhwb3J0e1ggYXMgdX07Cg==", "/_nuxt/CAUAX5Vr.js": "aW1wb3J0e2YgYXMgaixhdSBhcyBMLGE5IGFzIE0sYTggYXMgQSxvIGFzIHIsaCBhcyBvLHcgYXMgcCxMIGFzIHksaSBhcyBlLHYgYXMgaCxhYSBhcyBFLFogYXMgTyxhYiBhcyBELFAgYXMgQyxsIGFzIGcsYWYgYXMgSCxhNyBhcyBKLGFoIGFzIFosSiBhcyBHLEsgYXMgUSxhaSBhcyBXLGFqIGFzIFgsYWsgYXMgWSxhbCBhcyBfLGFuIGFzIGVlLGEgYXMgYWUsTSBhcyBkLGIgYXMgRixrIGFzIHgsYyBhcyBTLEYgYXMgdGUsYW8gYXMgc2UsZCBhcyBSLHQgYXMgJCxOIGFzIFB9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7ViBhcyBsZX1mcm9tIi4vbTIwa2RHeFUuanMiO2NvbnN0W3JlLGllXT1KKCJTd2l0Y2hSb290Iik7dmFyIGRlPWooe19fbmFtZToiU3dpdGNoUm9vdCIscHJvcHM6e2RlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im9uIn0sdHJ1ZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+ITB9LGZhbHNlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT4hMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6Y30pe2NvbnN0IGE9dCx1PWMse2Rpc2FibGVkOm59PUwoYSksZj1NKGEsIm1vZGVsVmFsdWUiLHUse2RlZmF1bHRWYWx1ZTphLmRlZmF1bHRWYWx1ZT8/YS5mYWxzZVZhbHVlLHBhc3NpdmU6YS5tb2RlbFZhbHVlPT09dm9pZCAwfSkscz1nKCgpPT5mLnZhbHVlPT09YS50cnVlVmFsdWUpO2Z1bmN0aW9uIGIoKXtuLnZhbHVlfHwoZi52YWx1ZT1zLnZhbHVlP2EuZmFsc2VWYWx1ZTphLnRydWVWYWx1ZSl9Y29uc3R7Zm9yd2FyZFJlZjpxLGN1cnJlbnRFbGVtZW50OnZ9PUEoKSx3PUgodiksVj1nKCgpPT5hLmlkJiZ2LnZhbHVlP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmb3I9IiR7YS5pZH0iXWApPy5pbm5lclRleHQ6dm9pZCAwKTtyZXR1cm4gaWUoe2NoZWNrZWQ6cyx0b2dnbGVDaGVjazpiLGRpc2FibGVkOm59KSwobCx6KT0+KHIoKSxvKGUoQyksRShsLiRhdHRycyx7aWQ6bC5pZCxyZWY6ZShxKSxyb2xlOiJzd2l0Y2giLHR5cGU6bC5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCx2YWx1ZTpsLnZhbHVlLCJhcmlhLWxhYmVsIjpsLiRhdHRyc1siYXJpYS1sYWJlbCJdfHxWLnZhbHVlLCJhcmlhLWNoZWNrZWQiOnMudmFsdWUsImFyaWEtcmVxdWlyZWQiOmwucmVxdWlyZWQsImRhdGEtc3RhdGUiOnMudmFsdWU/ImNoZWNrZWQiOiJ1bmNoZWNrZWQiLCJkYXRhLWRpc2FibGVkIjplKG4pPyIiOnZvaWQgMCwiYXMtY2hpbGQiOmwuYXNDaGlsZCxhczpsLmFzLGRpc2FibGVkOmUobiksb25DbGljazpiLG9uS2V5ZG93bjpPKEQoYixbInByZXZlbnQiXSksWyJlbnRlciJdKX0pLHtkZWZhdWx0OnAoKCk9Plt5KGwuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplKGYpLGNoZWNrZWQ6cy52YWx1ZX0pLGUodykmJmwubmFtZT8ocigpLG8oZShsZSkse2tleTowLHR5cGU6ImNoZWNrYm94IixuYW1lOmwubmFtZSxkaXNhYmxlZDplKG4pLHJlcXVpcmVkOmwucmVxdWlyZWQsdmFsdWU6bC52YWx1ZSxjaGVja2VkOnMudmFsdWV9LG51bGwsOCxbIm5hbWUiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwidmFsdWUiLCJjaGVja2VkIl0pKTpoKCJ2LWlmIiwhMCldKSxfOjN9LDE2LFsiaWQiLCJ0eXBlIiwidmFsdWUiLCJhcmlhLWxhYmVsIiwiYXJpYS1jaGVja2VkIiwiYXJpYS1yZXF1aXJlZCIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiYXMtY2hpbGQiLCJhcyIsImRpc2FibGVkIiwib25LZXlkb3duIl0pKX19KSxuZT1kZSxvZT1qKHtfX25hbWU6IlN3aXRjaFRodW1iIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgYz1yZSgpO3JldHVybiBBKCksKGEsdSk9PihyKCksbyhlKEMpLHsiZGF0YS1zdGF0ZSI6ZShjKS5jaGVja2VkLnZhbHVlPyJjaGVja2VkIjoidW5jaGVja2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShjKS5kaXNhYmxlZC52YWx1ZT8iIjp2b2lkIDAsImFzLWNoaWxkIjphLmFzQ2hpbGQsYXM6YS5hc30se2RlZmF1bHQ6cCgoKT0+W3koYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiYXMtY2hpbGQiLCJhcyJdKSl9fSksdWU9b2U7Y29uc3QgY2U9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0IixiYXNlOlsiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNocmluay0wIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06YmctYWNjZW50ZWQiLCJ0cmFuc2l0aW9uLVtiYWNrZ3JvdW5kXSBkdXJhdGlvbi0yMDAiXSxjb250YWluZXI6ImZsZXggaXRlbXMtY2VudGVyIix0aHVtYjoiZ3JvdXAgcG9pbnRlci1ldmVudHMtbm9uZSByb3VuZGVkLWZ1bGwgYmctZGVmYXVsdCBzaGFkb3ctbGcgcmluZy0wIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnRyYW5zbGF0ZS14LTAgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiLGljb246WyJhYnNvbHV0ZSBzaHJpbmstMCBncm91cC1kYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnRleHQtZGltbWVkIG9wYWNpdHktMCBzaXplLTEwLzEyIiwidHJhbnNpdGlvbi1bY29sb3Isb3BhY2l0eV0gZHVyYXRpb24tMjAwIl0sd3JhcHBlcjoibXMtMiIsbGFiZWw6ImJsb2NrIGZvbnQtbWVkaXVtIHRleHQtZGVmYXVsdCIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXByaW1hcnkgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtcHJpbWFyeSJ9LHNlY29uZGFyeTp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ymctc2Vjb25kYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS1zZWNvbmRhcnkiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtc2Vjb25kYXJ5In0sc3VjY2Vzczp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ymctc3VjY2VzcyBmb2N1cy12aXNpYmxlOm91dGxpbmUtc3VjY2VzcyIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1zdWNjZXNzIn0saW5mbzp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06YmctaW5mbyBmb2N1cy12aXNpYmxlOm91dGxpbmUtaW5mbyIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1pbmZvIn0sd2FybmluZzp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ymctd2FybmluZyBmb2N1cy12aXNpYmxlOm91dGxpbmUtd2FybmluZyIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC13YXJuaW5nIn0sZXJyb3I6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLWVycm9yIGZvY3VzLXZpc2libGU6b3V0bGluZS1lcnJvciIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1lcnJvciJ9LG5ldXRyYWw6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLWludmVydGVkIGZvY3VzLXZpc2libGU6b3V0bGluZS1pbnZlcnRlZCIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1oaWdobGlnaHRlZCJ9fSxzaXplOnt4czp7YmFzZToidy03Iixjb250YWluZXI6ImgtNCIsdGh1bWI6InNpemUtMyBkYXRhLVtzdGF0ZT1jaGVja2VkXTp0cmFuc2xhdGUteC0zIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnJ0bDotdHJhbnNsYXRlLXgtMyIsd3JhcHBlcjoidGV4dC14cyJ9LHNtOntiYXNlOiJ3LTgiLGNvbnRhaW5lcjoiaC00Iix0aHVtYjoic2l6ZS0zLjUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtMy41IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnJ0bDotdHJhbnNsYXRlLXgtMy41Iix3cmFwcGVyOiJ0ZXh0LXhzIn0sbWQ6e2Jhc2U6InctOSIsY29udGFpbmVyOiJoLTUiLHRodW1iOiJzaXplLTQgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTQiLHdyYXBwZXI6InRleHQtc20ifSxsZzp7YmFzZToidy0xMCIsY29udGFpbmVyOiJoLTUiLHRodW1iOiJzaXplLTQuNSBkYXRhLVtzdGF0ZT1jaGVja2VkXTp0cmFuc2xhdGUteC00LjUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC00LjUiLHdyYXBwZXI6InRleHQtc20ifSx4bDp7YmFzZToidy0xMSIsY29udGFpbmVyOiJoLTYiLHRodW1iOiJzaXplLTUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtNSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTUiLHdyYXBwZXI6InRleHQtYmFzZSJ9fSxjaGVja2VkOnt0cnVlOntpY29uOiJncm91cC1kYXRhLVtzdGF0ZT1jaGVja2VkXTpvcGFjaXR5LTEwMCJ9fSx1bmNoZWNrZWQ6e3RydWU6e2ljb246Imdyb3VwLWRhdGEtW3N0YXRlPXVuY2hlY2tlZF06b3BhY2l0eS0xMDAifX0sbG9hZGluZzp7dHJ1ZTp7aWNvbjoiYW5pbWF0ZS1zcGluIn19LHJlcXVpcmVkOnt0cnVlOntsYWJlbDoiYWZ0ZXI6Y29udGVudC1bJyonXSBhZnRlcjptcy0wLjUgYWZ0ZXI6dGV4dC1lcnJvciJ9fSxkaXNhYmxlZDp7dHJ1ZTp7cm9vdDoib3BhY2l0eS03NSIsYmFzZToiY3Vyc29yLW5vdC1hbGxvd2VkIixsYWJlbDoiY3Vyc29yLW5vdC1hbGxvd2VkIixkZXNjcmlwdGlvbjoiY3Vyc29yLW5vdC1hbGxvd2VkIn19fSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5IixzaXplOiJtZCJ9fSxwZT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVTd2l0Y2giLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdW5jaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRydWVWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxmYWxzZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImNoYW5nZSIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAodCx7ZW1pdDpjfSl7Y29uc3QgYT10LHU9WigpLG49YyxmPUcoKSxzPVEoInN3aXRjaCIsYSksYj1XKFgoYSwicmVxdWlyZWQiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIm1vZGVsVmFsdWUiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiksbikse2lkOnEsZW1pdEZvcm1DaGFuZ2U6dixlbWl0Rm9ybUlucHV0Oncsc2l6ZTpWLGNvbG9yOmwsbmFtZTp6LGRpc2FibGVkOkksYXJpYUF0dHJzOk59PVkoYSksQj1xLnZhbHVlPz9fKCksVD1lZSgpLEs9ZygoKT0+e2NvbnN0eyJkYXRhLXN0YXRlIjptLC4uLmt9PVQ7cmV0dXJuIGt9KSxpPWcoKCk9PlAoe2V4dGVuZDpQKGNlKSwuLi5mLnVpPy5zd2l0Y2h8fHt9fSkoe3NpemU6Vi52YWx1ZSxjb2xvcjpsLnZhbHVlLHJlcXVpcmVkOmEucmVxdWlyZWQsbG9hZGluZzphLmxvYWRpbmcsZGlzYWJsZWQ6SS52YWx1ZXx8YS5sb2FkaW5nfSkpO2Z1bmN0aW9uIFUobSl7Y29uc3Qgaz1uZXcgRXZlbnQoImNoYW5nZSIse3RhcmdldDp7dmFsdWU6bX19KTtuKCJjaGFuZ2UiLGspLHYoKSx3KCl9cmV0dXJuKG0sayk9PihyKCksbyhlKEMpLHthczp0LmFzLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpkKGkudmFsdWUucm9vdCh7Y2xhc3M6W2Uocyk/LnJvb3QsYS5jbGFzc119KSl9LHtkZWZhdWx0OnAoKCk9PlthZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6ZChpLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZShzKT8uY29udGFpbmVyfSkpfSxbRihlKG5lKSxFKHtpZDplKEIpfSx7Li4uZShiKSwuLi5LLnZhbHVlLC4uLmUoTil9LHtuYW1lOmUoeiksZGlzYWJsZWQ6ZShJKXx8dC5sb2FkaW5nLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczppLnZhbHVlLmJhc2Uoe2NsYXNzOmUocyk/LmJhc2V9KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6VX0pLHtkZWZhdWx0OnAoKCk9PltGKGUodWUpLHsiZGF0YS1zbG90IjoidGh1bWIiLGNsYXNzOmQoaS52YWx1ZS50aHVtYih7Y2xhc3M6ZShzKT8udGh1bWJ9KSl9LHtkZWZhdWx0OnAoKCk9Plt0LmxvYWRpbmc/KHIoKSxvKHgse2tleTowLG5hbWU6dC5sb2FkaW5nSWNvbnx8ZShmKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpkKGkudmFsdWUuaWNvbih7Y2xhc3M6ZShzKT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKToocigpLFModGUse2tleToxfSxbdC5jaGVja2VkSWNvbj8ocigpLG8oeCx7a2V5OjAsbmFtZTp0LmNoZWNrZWRJY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpkKGkudmFsdWUuaWNvbih7Y2xhc3M6ZShzKT8uaWNvbixjaGVja2VkOiEwfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmgoIiIsITApLHQudW5jaGVja2VkSWNvbj8ocigpLG8oeCx7a2V5OjEsbmFtZTp0LnVuY2hlY2tlZEljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOmQoaS52YWx1ZS5pY29uKHtjbGFzczplKHMpPy5pY29uLHVuY2hlY2tlZDohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpoKCIiLCEwKV0sNjQpKV0pLF86MX0sOCxbImNsYXNzIl0pXSksXzoxfSwxNixbImlkIiwibmFtZSIsImRpc2FibGVkIiwiY2xhc3MiXSldLDIpLHQubGFiZWx8fHUubGFiZWx8fHQuZGVzY3JpcHRpb258fHUuZGVzY3JpcHRpb24/KHIoKSxTKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ZChpLnZhbHVlLndyYXBwZXIoe2NsYXNzOmUocyk/LndyYXBwZXJ9KSl9LFt0LmxhYmVsfHx1LmxhYmVsPyhyKCksbyhlKHNlKSx7a2V5OjAsZm9yOmUoQiksImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpkKGkudmFsdWUubGFiZWwoe2NsYXNzOmUocyk/LmxhYmVsfSkpfSx7ZGVmYXVsdDpwKCgpPT5beShtLiRzbG90cywibGFiZWwiLHtsYWJlbDp0LmxhYmVsfSwoKT0+W1IoJCh0LmxhYmVsKSwxKV0pXSksXzozfSw4LFsiZm9yIiwiY2xhc3MiXSkpOmgoIiIsITApLHQuZGVzY3JpcHRpb258fHUuZGVzY3JpcHRpb24/KHIoKSxTKCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpkKGkudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUocyk/LmRlc2NyaXB0aW9ufSkpfSxbeShtLiRzbG90cywiZGVzY3JpcHRpb24iLHtkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufSwoKT0+W1IoJCh0LmRlc2NyaXB0aW9uKSwxKV0pXSwyKSk6aCgiIiwhMCldLDIpKTpoKCIiLCEwKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX0pO2V4cG9ydHtwZSBhcyBffTsK", "/_nuxt/CFBtcB7o.js": "aW1wb3J0e2JFIGFzIFh0LGJGIGFzIE9hLGYgYXMgbWUsbyBhcyB3LGggYXMgRSx3IGFzIEMsTCBhcyBSLGFhIGFzIFksaSBhcyBsLFAgYXMgUXQsYWggYXMgTGUsYUIgYXMgWGUsYUQgYXMgZHQsYVggYXMgX2EsYXggYXMgYXQsSiBhcyBFZSxLIGFzIE9lLGMgYXMgeixiIGFzIEQsaiBhcyBDZSxiRyBhcyBKdCxBIGFzIHh0LGEgYXMgWCxNIGFzIFAsRiBhcyBwZSxxIGFzIGdlLHYgYXMgSyxhdiBhcyBEZSxhdyBhcyBUZSxsIGFzIEYsTiBhcyBkZSxiOCBhcyBRZSxhRiBhcyBNZSxhRyBhcyBQZSxiSCBhcyB6YSxheiBhcyBTdCxhYiBhcyBGYSxhRSBhcyBQYSxiSSBhcyBxYSxyIGFzIF8sYWkgYXMga3QsYXUgYXMgUmEsYkogYXMgTmEsYTcgYXMgS2EsUiBhcyB1ZSxhNiBhcyBadCxiOSBhcyBVYSxhNCBhcyBJdCxhWSBhcyBqYSxhNSBhcyBIYSxhaiBhcyBKZSxicSBhcyBXYSxiSyBhcyBWYSxiTCBhcyBHYSxidiBhcyBZYSxiTSBhcyBYYSxiTiBhcyBRYSxiTyBhcyBsdCxkIGFzIEFlLHQgYXMgY2UsYlAgYXMgb3QsYWMgYXMgZWEsYlEgYXMgSmEsVSBhcyBxZSx4IGFzIFphLGFsIGFzIGVuLFcgYXMgWmUsViBhcyBBdCxiUiBhcyB0bixiUyBhcyB2ZSxiVCBhcyBhbixiVSBhcyBubixhQyBhcyB0YSxiQyBhcyBzbixiViBhcyBsbixidCBhcyBoZSxiVyBhcyBvbixrIGFzIGtlLEkgYXMgcm4sYnUgYXMgdW4sSCBhcyAkdCxaIGFzIGFhLGJYIGFzIGNuLGJZIGFzIGRuLGJaIGFzIGZuLGJfIGFzIHBuLG4gYXMgbnQsZyBhcyBzdCxYIGFzIG5hLEcgYXMgJGUscyBhcyBobixRIGFzIHNhLHkgYXMgbW4sRCBhcyB2bixCIGFzIGduLGFIIGFzIHluLGFWIGFzIGJuLGFXIGFzIHdufWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e3UgYXMgaWEsYSBhcyB4bixfIGFzIFNuLHAgYXMga24sYiBhcyBJbn1mcm9tIi4vQ3RhMTVzRy0uanMiO2ltcG9ydHtfIGFzIGxhLHUgYXMgQW59ZnJvbSIuL0NZYW16TG01LmpzIjtpbXBvcnR7XyBhcyAkbn1mcm9tIi4vQ1hvYzRVRVIuanMiO2ltcG9ydHthIGFzIG9hLF8gYXMgQm59ZnJvbSIuL0RUdlhULW5SLmpzIjtpbXBvcnR7XyBhcyBDbn1mcm9tIi4vQmhXUzE4aTcuanMiO2ltcG9ydHtoIGFzIERuLGQgYXMgVG4sZSBhcyBNbixjIGFzIExuLGEgYXMgRW4sZiBhcyBPbixiIGFzIF9uLEwgYXMgem4sZyBhcyBGbn1mcm9tIi4vREhDd0VMV3AuanMiO2ltcG9ydHtfIGFzIHJhfWZyb20iLi80bEhteUhiSC5qcyI7aW1wb3J0e3UgYXMgdWF9ZnJvbSIuL0JBdW5pLXFkLmpzIjtpbXBvcnQiLi9EdmRoeXBEaS5qcyI7aW1wb3J0Ii4vQnQ4UzBkbWwuanMiO2ltcG9ydCIuL0R4Q1dRc25sLmpzIjtpbXBvcnQiLi9fMmxTZHIxMy5qcyI7aW1wb3J0Ii4vbTIwa2RHeFUuanMiO2ltcG9ydCIuL0M3WXk2dFIzLmpzIjtpbXBvcnQiLi9CN3M1cGpqUi5qcyI7ZnVuY3Rpb24gZnQodCxlKXtjb25zdCBzPVh0KCkuaG9vayh0LGUpO09hKHMpfXZhciBQbj1tZSh7X19uYW1lOiJMaXN0Ym94R3JvdXBMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAodCl7Y29uc3QgZT10LGE9RG4oe2lkOiIifSk7cmV0dXJuKHMsbik9Pih3KCksRShsKFF0KSxZKGUse2lkOmwoYSkuaWR9KSx7ZGVmYXVsdDpDKCgpPT5bUihzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxxbj1Qbjtjb25zdCBSbj17c2xvdHM6e2Jhc2U6IiIsbGFiZWw6IiIsdHJhaWxpbmc6ImhpZGRlbiBsZzpmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMC41IG1zLWF1dG8ifSx2YXJpYW50czp7Y29sbGFwc2VkOnt0cnVlOntsYWJlbDoiaGlkZGVuIix0cmFpbGluZzoibGc6aGlkZGVuIn19fX0sTm49T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVRGFzaGJvYXJkU2VhcmNoQnV0dG9uIixwcm9wczp7aWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGFwc2VkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdG9vbHRpcDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGtiZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+WyJtZXRhIiwiayJdfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZVZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYmxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25DbGljazp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3RBY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZpZXdUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBlPXQsYT1MZSgpLFtzLG5dPVhlKCksaT0oKT0+UWUoYSxbInRyYWlsaW5nIl0pLGM9ZHQoX2EoZSwiaWNvbiIsImxhYmVsIiwidmFyaWFudCIsImNvbGxhcHNlZCIsInRvb2x0aXAiLCJrYmRzIiwiY2xhc3MiLCJ1aSIpKSxkPU1lKCgpPT5QZSh0eXBlb2YgZS50b29sdGlwPT0iYm9vbGVhbiI/e306ZS50b29sdGlwLHtkZWxheUR1cmF0aW9uOjAsY29udGVudDp7c2lkZToicmlnaHQifX0pKSx7dDpyfT1hdCgpLG09RWUoKSxwPU9lKCJkYXNoYm9hcmRTZWFyY2hCdXR0b24iLGUpLHt0b2dnbGVTZWFyY2g6aH09aWEoe3RvZ2dsZVNlYXJjaDooKT0+e319KSxvPUYoKCk9PmRlKHtleHRlbmQ6ZGUoUm4pLC4uLm0udWk/LmRhc2hib2FyZFNlYXJjaEJ1dHRvbnx8e319KSh7Y29sbGFwc2VkOmUuY29sbGFwc2VkfSkpO3JldHVybih1LGcpPT4odygpLHoocGUsbnVsbCxbRChsKHMpLG51bGwse2RlZmF1bHQ6QygoKT0+W0QoQ2UsWSh7aWNvbjp0Lmljb258fGwobSkudWkuaWNvbnMuc2VhcmNoLGxhYmVsOnQubGFiZWx8fGwocikoImRhc2hib2FyZFNlYXJjaEJ1dHRvbi5sYWJlbCIpLHZhcmlhbnQ6dC52YXJpYW50fHwodC5jb2xsYXBzZWQ/Imdob3N0Ijoib3V0bGluZSIpfSx7Li4ubChjKSwuLi50LmNvbGxhcHNlZD97c3F1YXJlOiEwLCJhcmlhLWxhYmVsIjp0LmxhYmVsfHxsKHIpKCJkYXNoYm9hcmRTZWFyY2hCdXR0b24ubGFiZWwiKX06e30sLi4udS4kYXR0cnN9LHtjbGFzczpvLnZhbHVlLmJhc2Uoe2NsYXNzOltsKHApPy5iYXNlLGUuY2xhc3NdfSksdWk6bChKdCkoby52YWx1ZSxsKHApKSxvbkNsaWNrOmwoaCl9KSx4dCh7dHJhaWxpbmc6Qygoe3VpOnZ9KT0+W1goInNwYW4iLHsiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOlAoby52YWx1ZS50cmFpbGluZyh7Y2xhc3M6bChwKT8udHJhaWxpbmd9KSl9LFtSKHUuJHNsb3RzLCJ0cmFpbGluZyIse3VpOnZ9LCgpPT5bdC5rYmRzPy5sZW5ndGg/KHcoITApLHoocGUse2tleTowfSxnZSh0LmtiZHMsKHgsSSk9Pih3KCksRShsYSxZKHtrZXk6SSx2YXJpYW50OiJzdWJ0bGUifSx7cmVmX2ZvcjohMH0sdHlwZW9mIHg9PSJzdHJpbmciP3t2YWx1ZTp4fTp4KSxudWxsLDE2KSkpLDEyOCkpOksoIiIsITApXSldLDIpXSksXzoyfSxbZ2UoaSgpLCh2LHgpPT4oe25hbWU6eCxmbjpDKEk9PltSKHUuJHNsb3RzLHgsRGUoVGUoSSkpKV0pfSkpXSksMTA0MCxbImljb24iLCJsYWJlbCIsInZhcmlhbnQiLCJjbGFzcyIsInVpIiwib25DbGljayJdKV0pLF86M30pLHQuY29sbGFwc2VkJiZ0LnRvb2x0aXA/KHcoKSxFKCRuLFkoe2tleTowLHRleHQ6dC5sYWJlbHx8bChyKSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uLmxhYmVsIil9LGQudmFsdWUpLHtkZWZhdWx0OkMoKCk9PltEKGwobikpXSksXzoxfSwxNixbInRleHQiXSkpOih3KCksRShsKG4pLHtrZXk6MX0pKV0sNjQpKX19KTsoZnVuY3Rpb24oKXt2YXIgdDt0cnl7aWYodHlwZW9mIGRvY3VtZW50PCJ1Iil7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtlLm5vbmNlPSh0PWRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcigibWV0YVtwcm9wZXJ0eT1jc3Atbm9uY2VdIikpPT1udWxsP3ZvaWQgMDp0LmNvbnRlbnQsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW2RhdGEtdmF1bC1kcmF3ZXJde3RvdWNoLWFjdGlvbjpub25lO3dpbGwtY2hhbmdlOnRyYW5zZm9ybTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMgY3ViaWMtYmV6aWVyKC4zMiwuNzIsMCwxKTthbmltYXRpb24tZHVyYXRpb246LjVzO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4zMiwuNzIsMCwxKX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPWZhbHNlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1ib3R0b21dW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6c2xpZGVGcm9tQm90dG9tfVtkYXRhLXZhdWwtZHJhd2VyXVtkYXRhLXZhdWwtc25hcC1wb2ludHM9ZmFsc2VdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPWJvdHRvbV1bZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbi1uYW1lOnNsaWRlVG9Cb3R0b219W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249dG9wXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbi1uYW1lOnNsaWRlRnJvbVRvcH1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPWZhbHNlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj10b3BdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb24tbmFtZTpzbGlkZVRvVG9wfVtkYXRhLXZhdWwtZHJhd2VyXVtkYXRhLXZhdWwtc25hcC1wb2ludHM9ZmFsc2VdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPWxlZnRdW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6c2xpZGVGcm9tTGVmdH1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPWZhbHNlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1sZWZ0XVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uLW5hbWU6c2xpZGVUb0xlZnR9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRdW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6c2xpZGVGcm9tUmlnaHR9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb24tbmFtZTpzbGlkZVRvUmlnaHR9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz10cnVlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1ib3R0b21de3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLHZhcigtLWluaXRpYWwtdHJhbnNmb3JtLCAxMDAlKSwwKX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPXRvcF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCl9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz10cnVlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1sZWZ0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCwwKX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPXJpZ2h0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QodmFyKC0taW5pdGlhbC10cmFuc2Zvcm0sIDEwMCUpLDAsMCl9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1kZWxheWVkLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPXRvcF0sW2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1kZWxheWVkLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPWJvdHRvbV17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsdmFyKC0tc25hcC1wb2ludC1oZWlnaHQsIDApLDApfVtkYXRhLXZhdWwtZHJhd2VyXVtkYXRhLXZhdWwtZGVsYXllZC1zbmFwLXBvaW50cz10cnVlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1sZWZ0XSxbZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRlbGF5ZWQtc25hcC1wb2ludHM9dHJ1ZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRde3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS1zbmFwLXBvaW50LWhlaWdodCwgMCksMCwwKX1bZGF0YS12YXVsLW92ZXJsYXldW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV17YW5pbWF0aW9uLWR1cmF0aW9uOi41czthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMzIsLjcyLDAsMSl9W2RhdGEtdmF1bC1vdmVybGF5XVtkYXRhLXZhdWwtc25hcC1wb2ludHM9ZmFsc2VdW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6ZmFkZUlufVtkYXRhLXZhdWwtb3ZlcmxheV1bZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbi1uYW1lOmZhZGVPdXR9W2RhdGEtdmF1bC1hbmltYXRlPWZhbHNlXXthbmltYXRpb246bm9uZSFpbXBvcnRhbnR9W2RhdGEtdmF1bC1vdmVybGF5XVtkYXRhLXZhdWwtc25hcC1wb2ludHM9dHJ1ZV17b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuNXMgY3ViaWMtYmV6aWVyKC4zMiwuNzIsMCwxKX1bZGF0YS12YXVsLW92ZXJsYXldW2RhdGEtdmF1bC1zbmFwLXBvaW50cz10cnVlXXtvcGFjaXR5OjF9W2RhdGEtdmF1bC1kcmF3ZXJdOm5vdChbZGF0YS12YXVsLWN1c3RvbS1jb250YWluZXI9dHJ1ZV0pOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDppbmhlcml0O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdH1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249dG9wXTphZnRlcnt0b3A6aW5pdGlhbDtib3R0b206MTAwJTtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6MjAwJX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249Ym90dG9tXTphZnRlcnt0b3A6MTAwJTtib3R0b206aW5pdGlhbDtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6MjAwJX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249bGVmdF06YWZ0ZXJ7bGVmdDppbml0aWFsO3JpZ2h0OjEwMCU7dG9wOjA7Ym90dG9tOjA7d2lkdGg6MjAwJX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRdOmFmdGVye2xlZnQ6MTAwJTtyaWdodDppbml0aWFsO3RvcDowO2JvdHRvbTowO3dpZHRoOjIwMCV9W2RhdGEtdmF1bC1vdmVybGF5XVtkYXRhLXZhdWwtc25hcC1wb2ludHM9dHJ1ZV06bm90KFtkYXRhLXZhdWwtc25hcC1wb2ludHMtb3ZlcmxheT10cnVlXSk6bm90KFtkYXRhLXN0YXRlPWNsb3NlZF0pe29wYWNpdHk6MH1bZGF0YS12YXVsLW92ZXJsYXldW2RhdGEtdmF1bC1zbmFwLXBvaW50cy1vdmVybGF5PXRydWVde29wYWNpdHk6MX1bZGF0YS12YXVsLWhhbmRsZV17ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvcGFjaXR5Oi43O2JhY2tncm91bmQ6I2UyZTJlNDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO2hlaWdodDo1cHg7d2lkdGg6MzJweDtib3JkZXItcmFkaXVzOjFyZW07dG91Y2gtYWN0aW9uOnBhbi15fVtkYXRhLXZhdWwtaGFuZGxlXTpob3ZlcixbZGF0YS12YXVsLWhhbmRsZV06YWN0aXZle29wYWNpdHk6MX1bZGF0YS12YXVsLWhhbmRsZS1oaXRhcmVhXXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt3aWR0aDptYXgoMTAwJSwyLjc1cmVtKTtoZWlnaHQ6bWF4KDEwMCUsMi43NXJlbSk7dG91Y2gtYWN0aW9uOmluaGVyaXR9QG1lZGlhIChob3ZlcjogaG92ZXIpIGFuZCAocG9pbnRlcjogZmluZSl7W2RhdGEtdmF1bC1kcmF3ZXJdey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfX1AbWVkaWEgKHBvaW50ZXI6IGZpbmUpe1tkYXRhLXZhdWwtaGFuZGxlLWhpdGFyZWFdOnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfX1Aa2V5ZnJhbWVzIGZhZGVJbnswJXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGVPdXR7dG97b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHNsaWRlRnJvbUJvdHRvbXswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCx2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSksMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fUBrZXlmcmFtZXMgc2xpZGVUb0JvdHRvbXt0b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCx2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSksMCl9fUBrZXlmcmFtZXMgc2xpZGVGcm9tVG9wezAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLGNhbGModmFyKC0taW5pdGlhbC10cmFuc2Zvcm0sIDEwMCUpICogLTEpLDApfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfX1Aa2V5ZnJhbWVzIHNsaWRlVG9Ub3B7dG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCl9fUBrZXlmcmFtZXMgc2xpZGVGcm9tTGVmdHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCwwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX19QGtleWZyYW1lcyBzbGlkZVRvTGVmdHt0b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCwwKX19QGtleWZyYW1lcyBzbGlkZUZyb21SaWdodHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QodmFyKC0taW5pdGlhbC10cmFuc2Zvcm0sIDEwMCUpLDAsMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fUBrZXlmcmFtZXMgc2xpZGVUb1JpZ2h0e3Rve3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSksMCwwKX19JykpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZSl9fWNhdGNoe319KSgpO2NvbnN0IEtuPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiO3R5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJmdsb2JhbFRoaXMgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZTtjb25zdCBVbj10PT50eXBlb2YgdDwidSI7ZnVuY3Rpb24gam4odCl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodCkpfWZ1bmN0aW9uIHF0KHQsZSxhLHM9e30pe3ZhciBuLGksYztjb25zdHtjbG9uZTpkPSExLHBhc3NpdmU6cj0hMSxldmVudE5hbWU6bSxkZWVwOnA9ITEsZGVmYXVsdFZhbHVlOmgsc2hvdWxkRW1pdDpvfT1zLHU9VWEoKSxnPWF8fHU/LmVtaXR8fCgobj11Py4kZW1pdCk9PW51bGw/dm9pZCAwOm4uYmluZCh1KSl8fCgoYz0oaT11Py5wcm94eSk9PW51bGw/dm9pZCAwOmkuJGVtaXQpPT1udWxsP3ZvaWQgMDpjLmJpbmQodT8ucHJveHkpKTtsZXQgdj1tO2V8fChlPSJtb2RlbFZhbHVlIiksdj12fHxgdXBkYXRlOiR7ZS50b1N0cmluZygpfWA7Y29uc3QgeD1iPT5kP3R5cGVvZiBkPT0iZnVuY3Rpb24iP2QoYik6am4oYik6YixJPSgpPT5Vbih0W2VdKT94KHRbZV0pOmgsUz1iPT57bz9vKGIpJiZnKHYsYik6Zyh2LGIpfTtpZihyKXtjb25zdCBiPUkoKSx5PV8oYik7bGV0IGs9ITE7cmV0dXJuIHVlKCgpPT50W2VdLEI9PntrfHwoaz0hMCx5LnZhbHVlPXgoQiksWnQoKCk9Pms9ITEpKX0pLHVlKHksQj0+eyFrJiYoQiE9PXRbZV18fHApJiZTKEIpfSx7ZGVlcDpwfSkseX1lbHNlIHJldHVybiBGKHtnZXQoKXtyZXR1cm4gSSgpfSxzZXQoYil7UyhiKX19KX1jb25zdFtOZSxIbl09S2EoIkRyYXdlclJvb3QiKSxjYT1uZXcgV2Vha01hcDtmdW5jdGlvbiBhZSh0LGUsYT0hMSl7aWYoIXR8fCEodCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXx8IWUpcmV0dXJuO2NvbnN0IHM9e307T2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW24saV0pPT57aWYobi5zdGFydHNXaXRoKCItLSIpKXt0LnN0eWxlLnNldFByb3BlcnR5KG4saSk7cmV0dXJufXNbbl09dC5zdHlsZVtuXSx0LnN0eWxlW25dPWl9KSwhYSYmY2Euc2V0KHQscyl9ZnVuY3Rpb24gV24odCxlKXtpZighdHx8ISh0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXJldHVybjtjb25zdCBhPWNhLmdldCh0KTthJiZPYmplY3QuZW50cmllcyhhKS5mb3JFYWNoKChbcyxuXSk9Pnt0LnN0eWxlW3NdPW59KX1mdW5jdGlvbiBXZSh0LGUpe2NvbnN0IGE9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkscz1hLnRyYW5zZm9ybXx8YS53ZWJraXRUcmFuc2Zvcm18fGEubW96VHJhbnNmb3JtO2xldCBuPXMubWF0Y2goL15tYXRyaXgzZFwoKC4rKVwpJC8pO3JldHVybiBuP051bWJlci5wYXJzZUZsb2F0KG5bMV0uc3BsaXQoIiwgIilbWihlKT8xMzoxMl0pOihuPXMubWF0Y2goL15tYXRyaXhcKCguKylcKSQvKSxuP051bWJlci5wYXJzZUZsb2F0KG5bMV0uc3BsaXQoIiwgIilbWihlKT81OjRdKTpudWxsKX1mdW5jdGlvbiBWbih0KXtyZXR1cm4gOCooTWF0aC5sb2codCsxKS0yKX1mdW5jdGlvbiBaKHQpe3N3aXRjaCh0KXtjYXNlInRvcCI6Y2FzZSJib3R0b20iOnJldHVybiEwO2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gcnQodCxlKXtpZighdClyZXR1cm4oKT0+e307Y29uc3QgYT10LnN0eWxlLmNzc1RleHQ7cmV0dXJuIE9iamVjdC5hc3NpZ24odC5zdHlsZSxlKSwoKT0+e3Quc3R5bGUuY3NzVGV4dD1hfX1mdW5jdGlvbiBHbiguLi50KXtyZXR1cm4oLi4uZSk9Pntmb3IoY29uc3QgYSBvZiB0KXR5cGVvZiBhPT0iZnVuY3Rpb24iJiZhKC4uLmUpfX1jb25zdCBHPXtEVVJBVElPTjouNSxFQVNFOlsuMzIsLjcyLDAsMV19LGRhPS40LFluPS4yNSxYbj0xMDAsZmE9OCxWZT0xNixwYT0yNixSdD0idmF1bC1kcmFnZ2luZyI7ZnVuY3Rpb24gUW4oe2FjdGl2ZVNuYXBQb2ludDp0LHNuYXBQb2ludHM6ZSxkcmF3ZXJSZWY6YSxvdmVybGF5UmVmOnMsZmFkZUZyb21JbmRleDpuLG9uU25hcFBvaW50Q2hhbmdlOmksZGlyZWN0aW9uOmN9KXtjb25zdCBkPV8odHlwZW9mIHdpbmRvdzwidSI/e2lubmVyV2lkdGg6d2luZG93LmlubmVyV2lkdGgsaW5uZXJIZWlnaHQ6d2luZG93LmlubmVySGVpZ2h0fTp2b2lkIDApO2Z1bmN0aW9uIHIoKXtkLnZhbHVlPXtpbm5lcldpZHRoOndpbmRvdy5pbm5lcldpZHRoLGlubmVySGVpZ2h0OndpbmRvdy5pbm5lckhlaWdodH19SXQoKCk9Pnt0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIscil9KSxqYSgoKT0+e3R5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixyKX0pO2NvbnN0IG09RigoKT0+KGUudmFsdWUmJnQudmFsdWU9PT1lLnZhbHVlW2UudmFsdWUubGVuZ3RoLTFdKT8/bnVsbCkscD1GKCgpPT5lLnZhbHVlJiZlLnZhbHVlLmxlbmd0aD4wJiYobj8udmFsdWV8fG4/LnZhbHVlPT09MCkmJiFOdW1iZXIuaXNOYU4obj8udmFsdWUpJiZlLnZhbHVlW24/LnZhbHVlPz8tMV09PT10LnZhbHVlfHwhZS52YWx1ZSksaD1GKCgpPT57dmFyIFM7cmV0dXJuKChTPWUudmFsdWUpPT1udWxsP3ZvaWQgMDpTLmZpbmRJbmRleChiPT5iPT09dC52YWx1ZSkpPz9udWxsfSksbz1GKCgpPT57dmFyIFM7cmV0dXJuKChTPWUudmFsdWUpPT1udWxsP3ZvaWQgMDpTLm1hcChiPT57Y29uc3QgeT10eXBlb2YgYj09InN0cmluZyI7bGV0IGs9MDtpZih5JiYoaz1OdW1iZXIucGFyc2VJbnQoYiwxMCkpLFooYy52YWx1ZSkpe2NvbnN0ICQ9eT9rOmQudmFsdWU/YipkLnZhbHVlLmlubmVySGVpZ2h0OjA7cmV0dXJuIGQudmFsdWU/Yy52YWx1ZT09PSJib3R0b20iP2QudmFsdWUuaW5uZXJIZWlnaHQtJDotZC52YWx1ZS5pbm5lckhlaWdodCskOiR9Y29uc3QgQj15P2s6ZC52YWx1ZT9iKmQudmFsdWUuaW5uZXJXaWR0aDowO3JldHVybiBkLnZhbHVlP2MudmFsdWU9PT0icmlnaHQiP2QudmFsdWUuaW5uZXJXaWR0aC1COi1kLnZhbHVlLmlubmVyV2lkdGgrQjpCfSkpPz9bXX0pLHU9RigoKT0+e3ZhciBTO3JldHVybiBoLnZhbHVlIT09bnVsbD8oUz1vLnZhbHVlKT09bnVsbD92b2lkIDA6U1toLnZhbHVlXTpudWxsfSksZz1TPT57dmFyIGIseSxrLEI7Y29uc3QgJD0oKGI9by52YWx1ZSk9PW51bGw/dm9pZCAwOmIuZmluZEluZGV4KHE9PnE9PT1TKSk/P251bGw7WnQoKCk9Pnt2YXIgcTtpKCQsby52YWx1ZSksYWUoKHE9YS52YWx1ZSk9PW51bGw/dm9pZCAwOnEuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06WihjLnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHtTfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7U31weCwgMCwgMClgfSl9KSxvLnZhbHVlJiYkIT09by52YWx1ZS5sZW5ndGgtMSYmJCE9PW4/LnZhbHVlP2FlKCh5PXMudmFsdWUpPT1udWxsP3ZvaWQgMDp5LiRlbCx7dHJhbnNpdGlvbjpgb3BhY2l0eSAke0cuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtHLkVBU0Uuam9pbigiLCIpfSlgLG9wYWNpdHk6IjAifSk6YWUoKGs9cy52YWx1ZSk9PW51bGw/dm9pZCAwOmsuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7Ry5EVVJBVElPTn1zIGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWAsb3BhY2l0eToiMSJ9KSx0LnZhbHVlPSQhPT1udWxsPygoQj1lLnZhbHVlKT09bnVsbD92b2lkIDA6QlskXSk/P251bGw6bnVsbH07dWUoW3QsbyxlXSwoKT0+e3ZhciBTO2lmKHQudmFsdWUpe2NvbnN0IGI9KChTPWUudmFsdWUpPT1udWxsP3ZvaWQgMDpTLmZpbmRJbmRleCh5PT55PT09dC52YWx1ZSkpPz8tMTtvLnZhbHVlJiZiIT09LTEmJnR5cGVvZiBvLnZhbHVlW2JdPT0ibnVtYmVyIiYmZyhvLnZhbHVlW2JdKX19LHtpbW1lZGlhdGU6ITB9KTtmdW5jdGlvbiB2KHtkcmFnZ2VkRGlzdGFuY2U6UyxjbG9zZURyYXdlcjpiLHZlbG9jaXR5OnksZGlzbWlzc2libGU6a30pe3ZhciBCLCQscTtpZihuLnZhbHVlPT09dm9pZCAwKXJldHVybjtjb25zdCBqPWMudmFsdWU9PT0iYm90dG9tInx8Yy52YWx1ZT09PSJyaWdodCI/KHUudmFsdWU/PzApLVM6KHUudmFsdWU/PzApK1MsSD1oLnZhbHVlPT09bi52YWx1ZS0xLE09aC52YWx1ZT09PTAsVT1TPjA7aWYoSCYmYWUoKEI9cy52YWx1ZSk9PW51bGw/dm9pZCAwOkIuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7Ry5EVVJBVElPTn1zIGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWB9KSx5PjImJiFVKXtrP2IoKTpnKG8udmFsdWVbMF0pO3JldHVybn1pZih5PjImJlUmJm8mJmUudmFsdWUpe2coby52YWx1ZVtlLnZhbHVlLmxlbmd0aC0xXSk7cmV0dXJufWNvbnN0IGVlPSgkPW8udmFsdWUpPT1udWxsP3ZvaWQgMDokLnJlZHVjZSgoTixmKT0+dHlwZW9mIE4hPSJudW1iZXIifHx0eXBlb2YgZiE9Im51bWJlciI/TjpNYXRoLmFicyhmLWopPE1hdGguYWJzKE4taik/ZjpOKSxPPVooYy52YWx1ZSk/d2luZG93LmlubmVySGVpZ2h0OndpbmRvdy5pbm5lcldpZHRoO2lmKHk+ZGEmJk1hdGguYWJzKFMpPE8qLjQpe2NvbnN0IE49VT8xOi0xO2lmKE4+MCYmbSl7ZyhvLnZhbHVlWygoKHE9ZS52YWx1ZSk9PW51bGw/dm9pZCAwOnEubGVuZ3RoKT8/MCktMV0pO3JldHVybn1pZihNJiZOPDAmJmsmJmIoKSxoLnZhbHVlPT09bnVsbClyZXR1cm47ZyhvLnZhbHVlW2gudmFsdWUrTl0pO3JldHVybn1nKGVlKX1mdW5jdGlvbiB4KHtkcmFnZ2VkRGlzdGFuY2U6U30pe3ZhciBiO2lmKHUudmFsdWU9PT1udWxsKXJldHVybjtjb25zdCB5PWMudmFsdWU9PT0iYm90dG9tInx8Yy52YWx1ZT09PSJyaWdodCI/dS52YWx1ZS1TOnUudmFsdWUrUzsoYy52YWx1ZT09PSJib3R0b20ifHxjLnZhbHVlPT09InJpZ2h0IikmJnk8by52YWx1ZVtvLnZhbHVlLmxlbmd0aC0xXXx8KGMudmFsdWU9PT0idG9wInx8Yy52YWx1ZT09PSJsZWZ0IikmJnk+by52YWx1ZVtvLnZhbHVlLmxlbmd0aC0xXXx8YWUoKGI9YS52YWx1ZSk9PW51bGw/dm9pZCAwOmIuJGVsLHt0cmFuc2Zvcm06WihjLnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHt5fXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7eX1weCwgMCwgMClgfSl9ZnVuY3Rpb24gSShTLGIpe2lmKCFlLnZhbHVlfHx0eXBlb2YgaC52YWx1ZSE9Im51bWJlciJ8fCFvLnZhbHVlfHxuLnZhbHVlPT09dm9pZCAwKXJldHVybiBudWxsO2NvbnN0IHk9aC52YWx1ZT09PW4udmFsdWUtMTtpZihoLnZhbHVlPj1uLnZhbHVlJiZiKXJldHVybiAwO2lmKHkmJiFiKXJldHVybiAxO2lmKCFwLnZhbHVlJiYheSlyZXR1cm4gbnVsbDtjb25zdCBrPXk/aC52YWx1ZSsxOmgudmFsdWUtMSxCPXk/by52YWx1ZVtrXS1vLnZhbHVlW2stMV06by52YWx1ZVtrKzFdLW8udmFsdWVba10sJD1TL01hdGguYWJzKEIpO3JldHVybiB5PzEtJDokfXJldHVybntpc0xhc3RTbmFwUG9pbnQ6bSxzaG91bGRGYWRlOnAsZ2V0UGVyY2VudGFnZURyYWdnZWQ6SSxhY3RpdmVTbmFwUG9pbnRJbmRleDpoLG9uUmVsZWFzZTp2LG9uRHJhZzp4LHNuYXBQb2ludHNPZmZzZXQ6b319ZnVuY3Rpb24gTnQoKXtyZXR1cm4vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfWxldCBGZT1udWxsO2Z1bmN0aW9uIEpuKHQpe2NvbnN0e2lzT3BlbjplLG1vZGFsOmEsbmVzdGVkOnMsaGFzQmVlbk9wZW5lZDpuLHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjppLG5vQm9keVN0eWxlczpjfT10LGQ9Xyh0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cubG9jYXRpb24uaHJlZjoiIikscj1fKDApO2Z1bmN0aW9uIG0oKXtpZihOdCgpJiZGZT09PW51bGwmJmUudmFsdWUmJiFjLnZhbHVlKXtGZT17cG9zaXRpb246ZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbix0b3A6ZG9jdW1lbnQuYm9keS5zdHlsZS50b3AsbGVmdDpkb2N1bWVudC5ib2R5LnN0eWxlLmxlZnQsaGVpZ2h0OmRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0fTtjb25zdHtzY3JvbGxYOmgsaW5uZXJIZWlnaHQ6b309d2luZG93O2RvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInBvc2l0aW9uIiwiZml4ZWQiLCJpbXBvcnRhbnQiKSxPYmplY3QuYXNzaWduKGRvY3VtZW50LmJvZHkuc3R5bGUse3RvcDpgJHstci52YWx1ZX1weGAsbGVmdDpgJHstaH1weGAscmlnaHQ6IjBweCIsaGVpZ2h0OiJhdXRvIn0pLHNldFRpbWVvdXQoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pntjb25zdCB1PW8td2luZG93LmlubmVySGVpZ2h0O3UmJnIudmFsdWU+PW8mJihkb2N1bWVudC5ib2R5LnN0eWxlLnRvcD1gLSR7ci52YWx1ZSt1fXB4YCl9KX0sMzAwKX19ZnVuY3Rpb24gcCgpe2lmKE50KCkmJkZlIT09bnVsbCYmIWMudmFsdWUpe2NvbnN0IGg9LU51bWJlci5wYXJzZUludChkb2N1bWVudC5ib2R5LnN0eWxlLnRvcCwxMCksbz0tTnVtYmVyLnBhcnNlSW50KGRvY3VtZW50LmJvZHkuc3R5bGUubGVmdCwxMCk7T2JqZWN0LmFzc2lnbihkb2N1bWVudC5ib2R5LnN0eWxlLEZlKSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57aWYoaS52YWx1ZSYmZC52YWx1ZSE9PXdpbmRvdy5sb2NhdGlvbi5ocmVmKXtkLnZhbHVlPXdpbmRvdy5sb2NhdGlvbi5ocmVmO3JldHVybn13aW5kb3cuc2Nyb2xsVG8obyxoKX0pLEZlPW51bGx9fXJldHVybiBJdCgoKT0+e2Z1bmN0aW9uIGgoKXtyLnZhbHVlPXdpbmRvdy5zY3JvbGxZfWgoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixoKSxIYSgoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGgpfSl9KSx1ZShbZSxuLGRdLCgpPT57cy52YWx1ZXx8IW4udmFsdWV8fChlLnZhbHVlPyh3aW5kb3cubWF0Y2hNZWRpYSgiKGRpc3BsYXktbW9kZTogc3RhbmRhbG9uZSkiKS5tYXRjaGVzfHxtKCksYS52YWx1ZXx8c2V0VGltZW91dCgoKT0+e3AoKX0sNTAwKSk6cCgpKX0pLHtyZXN0b3JlUG9zaXRpb25TZXR0aW5nOnB9fWZ1bmN0aW9uIFpuKHQsZSl7cmV0dXJuIHQmJnQudmFsdWU/dDplfWZ1bmN0aW9uIGVzKHQpe2NvbnN0e2VtaXREcmFnOmUsZW1pdFJlbGVhc2U6YSxlbWl0Q2xvc2U6cyxlbWl0T3BlbkNoYW5nZTpuLG9wZW46aSxkaXNtaXNzaWJsZTpjLG5lc3RlZDpkLG1vZGFsOnIsc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOm0sc2V0QmFja2dyb3VuZENvbG9yT25TY2FsZTpwLHNjcm9sbExvY2tUaW1lb3V0OmgsY2xvc2VUaHJlc2hvbGQ6byxhY3RpdmVTbmFwUG9pbnQ6dSxmYWRlRnJvbUluZGV4OmcsZGlyZWN0aW9uOnYsbm9Cb2R5U3R5bGVzOngsaGFuZGxlT25seTpJLHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjpTfT10LGI9XyhpLnZhbHVlPz8hMSkseT1fKCExKSxrPV8oITEpLEI9XyghMSksJD1fKG51bGwpLHE9XyhudWxsKSxqPV8obnVsbCksSD1fKG51bGwpLE09XyhudWxsKSxVPV8oITEpLGVlPV8obnVsbCksTz1fKDApLE49XyghMSksZj1fKG51bGwpLEo9RigoKT0+e3ZhciBMO3JldHVybigoTD1mLnZhbHVlKT09bnVsbD92b2lkIDA6TC4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KXx8MH0pLEE9Wm4odC5zbmFwUG9pbnRzLF8odm9pZCAwKSksVz1GKCgpPT57dmFyIEw7cmV0dXJuIEEmJigoKEw9QS52YWx1ZSk9PW51bGw/dm9pZCAwOkwubGVuZ3RoKT8/MCk+MH0pLG9lPV8obnVsbCkse2FjdGl2ZVNuYXBQb2ludEluZGV4OnNlLG9uUmVsZWFzZTpfZSxzbmFwUG9pbnRzT2Zmc2V0OmthLG9uRHJhZzpJYSxzaG91bGRGYWRlOkx0LGdldFBlcmNlbnRhZ2VEcmFnZ2VkOkFhfT1Rbih7c25hcFBvaW50czpBLGFjdGl2ZVNuYXBQb2ludDp1LGRyYXdlclJlZjpmLGZhZGVGcm9tSW5kZXg6ZyxvdmVybGF5UmVmOiQsb25TbmFwUG9pbnRDaGFuZ2U6JGEsZGlyZWN0aW9uOnZ9KTtmdW5jdGlvbiAkYShMLFEpe0EudmFsdWUmJkw9PT1RLmxlbmd0aC0xJiYocS52YWx1ZT1uZXcgRGF0ZSl9Sm4oe2lzT3BlbjpiLG1vZGFsOnIsbmVzdGVkOmQsaGFzQmVlbk9wZW5lZDp5LG5vQm9keVN0eWxlczp4LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjpTfSk7ZnVuY3Rpb24gS2UoKXtyZXR1cm4od2luZG93LmlubmVyV2lkdGgtcGEpL3dpbmRvdy5pbm5lcldpZHRofWZ1bmN0aW9uIEV0KEwsUSl7dmFyIHRlO2lmKCFMKXJldHVybiExO2xldCBWPUw7Y29uc3QgbmU9KHRlPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSk9PW51bGw/dm9pZCAwOnRlLnRvU3RyaW5nKCksaWU9Zi52YWx1ZT9XZShmLnZhbHVlLiRlbCx2LnZhbHVlKTpudWxsLGZlPW5ldyBEYXRlO2lmKFYuaGFzQXR0cmlidXRlKCJkYXRhLXZhdWwtbm8tZHJhZyIpfHxWLmNsb3Nlc3QoIltkYXRhLXZhdWwtbm8tZHJhZ10iKSlyZXR1cm4hMTtpZih2LnZhbHVlPT09InJpZ2h0Inx8di52YWx1ZT09PSJsZWZ0IilyZXR1cm4hMDtpZihxLnZhbHVlJiZmZS5nZXRUaW1lKCktcS52YWx1ZS5nZXRUaW1lKCk8NTAwKXJldHVybiExO2lmKGllIT09bnVsbCYmKHYudmFsdWU9PT0iYm90dG9tIj9pZT4wOmllPDApKXJldHVybiEwO2lmKG5lJiZuZS5sZW5ndGg+MClyZXR1cm4hMTtpZihNLnZhbHVlJiZmZS5nZXRUaW1lKCktTS52YWx1ZS5nZXRUaW1lKCk8aC52YWx1ZSYmaWU9PT0wfHxRKXJldHVybiBNLnZhbHVlPWZlLCExO2Zvcig7Vjspe2lmKFYuc2Nyb2xsSGVpZ2h0PlYuY2xpZW50SGVpZ2h0KXtpZihWLnNjcm9sbFRvcCE9PTApcmV0dXJuIE0udmFsdWU9bmV3IERhdGUsITE7aWYoVi5nZXRBdHRyaWJ1dGUoInJvbGUiKT09PSJkaWFsb2ciKXJldHVybiEwfVY9Vi5wYXJlbnROb2RlfXJldHVybiEwfWZ1bmN0aW9uIEJhKEwpeyFjLnZhbHVlJiYhQS52YWx1ZXx8Zi52YWx1ZSYmIWYudmFsdWUuJGVsLmNvbnRhaW5zKEwudGFyZ2V0KXx8KGsudmFsdWU9ITAsai52YWx1ZT1uZXcgRGF0ZSxMLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShMLnBvaW50ZXJJZCksTy52YWx1ZT1aKHYudmFsdWUpP0wuY2xpZW50WTpMLmNsaWVudFgpfWZ1bmN0aW9uIENhKEwpe3ZhciBRLHRlLFYsbmUsaWUsZmU7aWYoZi52YWx1ZSYmay52YWx1ZSl7Y29uc3QgQmU9di52YWx1ZT09PSJib3R0b20ifHx2LnZhbHVlPT09InJpZ2h0Ij8xOi0xLFVlPShPLnZhbHVlLShaKHYudmFsdWUpP0wuY2xpZW50WTpMLmNsaWVudFgpKSpCZSxqZT1VZT4wLF90PUEudmFsdWUmJiFjLnZhbHVlJiYhamU7aWYoX3QmJnNlLnZhbHVlPT09MClyZXR1cm47Y29uc3QgaXQ9TWF0aC5hYnMoVWUpLHp0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXZhdWwtZHJhd2VyLXdyYXBwZXJdIil8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIlt2YXVsLWRyYXdlci13cmFwcGVyXSIpO2xldCB4ZT1pdC9KLnZhbHVlO2NvbnN0IEZ0PUFhKGl0LGplKTtpZihGdCE9PW51bGwmJih4ZT1GdCksX3QmJnhlPj0xfHwhVS52YWx1ZSYmIUV0KEwudGFyZ2V0LGplKSlyZXR1cm47aWYoKFE9Zj8udmFsdWUpPT1udWxsfHxRLiRlbC5jbGFzc0xpc3QuYWRkKFJ0KSxVLnZhbHVlPSEwLGFlKCh0ZT1mLnZhbHVlKT09bnVsbD92b2lkIDA6dGUuJGVsLHt0cmFuc2l0aW9uOiJub25lIn0pLGFlKChWPSQudmFsdWUpPT1udWxsP3ZvaWQgMDpWLiRlbCx7dHJhbnNpdGlvbjoibm9uZSJ9KSxBLnZhbHVlJiZJYSh7ZHJhZ2dlZERpc3RhbmNlOlVlfSksamUmJiFBLnZhbHVlKXtjb25zdCBTZT1WbihVZSksSGU9TWF0aC5taW4oU2UqLTEsMCkqQmU7YWUoKG5lPWYudmFsdWUpPT1udWxsP3ZvaWQgMDpuZS4kZWwse3RyYW5zZm9ybTpaKHYudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke0hlfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7SGV9cHgsIDAsIDApYH0pO3JldHVybn1jb25zdCBFYT0xLXhlO2lmKChMdC52YWx1ZXx8Zy52YWx1ZSYmc2UudmFsdWU9PT1nLnZhbHVlLTEpJiYoZSh4ZSksYWUoKGllPSQudmFsdWUpPT1udWxsP3ZvaWQgMDppZS4kZWwse29wYWNpdHk6YCR7RWF9YCx0cmFuc2l0aW9uOiJub25lIn0sITApKSx6dCYmJC52YWx1ZSYmbS52YWx1ZSl7Y29uc3QgU2U9TWF0aC5taW4oS2UoKSt4ZSooMS1LZSgpKSwxKSxIZT04LXhlKjgsUHQ9TWF0aC5tYXgoMCwxNC14ZSoxNCk7YWUoenQse2JvcmRlclJhZGl1czpgJHtIZX1weGAsdHJhbnNmb3JtOloodi52YWx1ZSk/YHNjYWxlKCR7U2V9KSB0cmFuc2xhdGUzZCgwLCAke1B0fXB4LCAwKWA6YHNjYWxlKCR7U2V9KSB0cmFuc2xhdGUzZCgke1B0fXB4LCAwLCAwKWAsdHJhbnNpdGlvbjoibm9uZSJ9LCEwKX1pZighQS52YWx1ZSl7Y29uc3QgU2U9aXQqQmU7YWUoKGZlPWYudmFsdWUpPT1udWxsP3ZvaWQgMDpmZS4kZWwse3RyYW5zZm9ybTpaKHYudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke1NlfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7U2V9cHgsIDAsIDApYH0pfX19ZnVuY3Rpb24gT3QoKXt2YXIgTDtpZighZi52YWx1ZSlyZXR1cm47Y29uc3QgUT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS12YXVsLWRyYXdlci13cmFwcGVyXSIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbdmF1bC1kcmF3ZXItd3JhcHBlcl0iKSx0ZT1XZShmLnZhbHVlLiRlbCx2LnZhbHVlKTthZShmLnZhbHVlLiRlbCx7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgwLCAwLCAwKSIsdHJhbnNpdGlvbjpgdHJhbnNmb3JtICR7Ry5EVVJBVElPTn1zIGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWB9KSxhZSgoTD0kLnZhbHVlKT09bnVsbD92b2lkIDA6TC4kZWwse3RyYW5zaXRpb246YG9wYWNpdHkgJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIxIn0pLG0udmFsdWUmJnRlJiZ0ZT4wJiZiLnZhbHVlJiZhZShRLHtib3JkZXJSYWRpdXM6YCR7ZmF9cHhgLG92ZXJmbG93OiJoaWRkZW4iLC4uLloodi52YWx1ZSk/e3RyYW5zZm9ybTpgc2NhbGUoJHtLZSgpfSkgdHJhbnNsYXRlM2QoMCwgY2FsYyhlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgKyAxNHB4KSwgMClgLHRyYW5zZm9ybU9yaWdpbjoidG9wIn06e3RyYW5zZm9ybTpgc2NhbGUoJHtLZSgpfSkgdHJhbnNsYXRlM2QoY2FsYyhlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgKyAxNHB4KSwgMCwgMClgLHRyYW5zZm9ybU9yaWdpbjoibGVmdCJ9LHRyYW5zaXRpb25Qcm9wZXJ0eToidHJhbnNmb3JtLCBib3JkZXItcmFkaXVzIix0cmFuc2l0aW9uRHVyYXRpb246YCR7Ry5EVVJBVElPTn1zYCx0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246YGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWB9LCEwKX1mdW5jdGlvbiB6ZShMKXtmLnZhbHVlJiYocygpLEx8fChiLnZhbHVlPSExKSx3aW5kb3cuc2V0VGltZW91dCgoKT0+e0EudmFsdWUmJih1LnZhbHVlPUEudmFsdWVbMF0pfSxHLkRVUkFUSU9OKjFlMykpfVN0KCgpPT57aWYoIWIudmFsdWUmJm0udmFsdWUmJktuKXtjb25zdCBMPXNldFRpbWVvdXQoKCk9PntXbihkb2N1bWVudC5ib2R5KX0sMjAwKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KEwpfX0pLHVlKGksKCk9PntiLnZhbHVlPWkudmFsdWUsaS52YWx1ZXx8emUoKX0pO2Z1bmN0aW9uIERhKEwpe2lmKCFrLnZhbHVlfHwhZi52YWx1ZSlyZXR1cm47Zi52YWx1ZS4kZWwuY2xhc3NMaXN0LnJlbW92ZShSdCksVS52YWx1ZT0hMSxrLnZhbHVlPSExLEgudmFsdWU9bmV3IERhdGU7Y29uc3QgUT1XZShmLnZhbHVlLiRlbCx2LnZhbHVlKTtpZighRXQoTC50YXJnZXQsITEpfHwhUXx8TnVtYmVyLmlzTmFOKFEpfHxqLnZhbHVlPT09bnVsbClyZXR1cm47Y29uc3QgdGU9SC52YWx1ZS5nZXRUaW1lKCktai52YWx1ZS5nZXRUaW1lKCksVj1PLnZhbHVlLShaKHYudmFsdWUpP0wuY2xpZW50WTpMLmNsaWVudFgpLG5lPU1hdGguYWJzKFYpL3RlO2lmKG5lPi4wNSYmKEIudmFsdWU9ITAsd2luZG93LnNldFRpbWVvdXQoKCk9PntCLnZhbHVlPSExfSwyMDApKSxBLnZhbHVlKXtjb25zdCBmZT12LnZhbHVlPT09ImJvdHRvbSJ8fHYudmFsdWU9PT0icmlnaHQiPzE6LTE7X2Uoe2RyYWdnZWREaXN0YW5jZTpWKmZlLGNsb3NlRHJhd2VyOnplLHZlbG9jaXR5Om5lLGRpc21pc3NpYmxlOmMudmFsdWV9KSxhKCEwKTtyZXR1cm59aWYodi52YWx1ZT09PSJib3R0b20ifHx2LnZhbHVlPT09InJpZ2h0Ij9WPjA6VjwwKXtPdCgpLGEoITApO3JldHVybn1pZihuZT5kYSl7emUoKSxhKCExKTtyZXR1cm59Y29uc3QgaWU9TWF0aC5taW4oZi52YWx1ZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0Pz8wLHdpbmRvdy5pbm5lckhlaWdodCk7aWYoUT49aWUqby52YWx1ZSl7emUoKSxhKCExKTtyZXR1cm59YSghMCksT3QoKX11ZShiLEw9PntMJiYocS52YWx1ZT1uZXcgRGF0ZSksbihMKX0se2ltbWVkaWF0ZTohMH0pO2Z1bmN0aW9uIFRhKEwpe3ZhciBRLHRlO2NvbnN0IFY9TD8od2luZG93LmlubmVyV2lkdGgtVmUpL3dpbmRvdy5pbm5lcldpZHRoOjEsbmU9TD8tMTY6MDtlZS52YWx1ZSYmd2luZG93LmNsZWFyVGltZW91dChlZS52YWx1ZSksYWUoKFE9Zi52YWx1ZSk9PW51bGw/dm9pZCAwOlEuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06YHNjYWxlKCR7Vn0pIHRyYW5zbGF0ZTNkKDAsICR7bmV9cHgsIDApYH0pLCFMJiYodGU9Zi52YWx1ZSkhPW51bGwmJnRlLiRlbCYmKGVlLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dmFyIGllLGZlO2NvbnN0IEJlPVdlKChpZT1mLnZhbHVlKT09bnVsbD92b2lkIDA6aWUuJGVsLHYudmFsdWUpO2FlKChmZT1mLnZhbHVlKT09bnVsbD92b2lkIDA6ZmUuJGVsLHt0cmFuc2l0aW9uOiJub25lIix0cmFuc2Zvcm06Wih2LnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHtCZX1weCwgMClgOmB0cmFuc2xhdGUzZCgke0JlfXB4LCAwLCAwKWB9KX0sNTAwKSl9ZnVuY3Rpb24gTWEoTCl7dmFyIFE7aWYoTDwwKXJldHVybjtjb25zdCB0ZT1aKHYudmFsdWUpP3dpbmRvdy5pbm5lckhlaWdodDp3aW5kb3cuaW5uZXJXaWR0aCxWPSh0ZS1WZSkvdGUsbmU9VitMKigxLVYpLGllPS0xNitMKlZlO2FlKChRPWYudmFsdWUpPT1udWxsP3ZvaWQgMDpRLiRlbCx7dHJhbnNmb3JtOloodi52YWx1ZSk/YHNjYWxlKCR7bmV9KSB0cmFuc2xhdGUzZCgwLCAke2llfXB4LCAwKWA6YHNjYWxlKCR7bmV9KSB0cmFuc2xhdGUzZCgke2llfXB4LCAwLCAwKWAsdHJhbnNpdGlvbjoibm9uZSJ9KX1mdW5jdGlvbiBMYShMKXt2YXIgUTtjb25zdCB0ZT1aKHYudmFsdWUpP3dpbmRvdy5pbm5lckhlaWdodDp3aW5kb3cuaW5uZXJXaWR0aCxWPUw/KHRlLVZlKS90ZToxLG5lPUw/LTE2OjA7TCYmYWUoKFE9Zi52YWx1ZSk9PW51bGw/dm9pZCAwOlEuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06Wih2LnZhbHVlKT9gc2NhbGUoJHtWfSkgdHJhbnNsYXRlM2QoMCwgJHtuZX1weCwgMClgOmBzY2FsZSgke1Z9KSB0cmFuc2xhdGUzZCgke25lfXB4LCAwLCAwKWB9KX1yZXR1cm57b3BlbjppLGlzT3BlbjpiLG1vZGFsOnIsa2V5Ym9hcmRJc09wZW46TixoYXNCZWVuT3BlbmVkOnksZHJhd2VyUmVmOmYsZHJhd2VySGVpZ2h0UmVmOkosb3ZlcmxheVJlZjokLGhhbmRsZVJlZjpvZSxpc0RyYWdnaW5nOmssZHJhZ1N0YXJ0VGltZTpqLGlzQWxsb3dlZFRvRHJhZzpVLHNuYXBQb2ludHM6QSxhY3RpdmVTbmFwUG9pbnQ6dSxoYXNTbmFwUG9pbnRzOlcscG9pbnRlclN0YXJ0Ok8sZGlzbWlzc2libGU6YyxzbmFwUG9pbnRzT2Zmc2V0OmthLGRpcmVjdGlvbjp2LHNob3VsZEZhZGU6THQsZmFkZUZyb21JbmRleDpnLHNob3VsZFNjYWxlQmFja2dyb3VuZDptLHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6cCxvblByZXNzOkJhLG9uRHJhZzpDYSxvblJlbGVhc2U6RGEsY2xvc2VEcmF3ZXI6emUsb25OZXN0ZWREcmFnOk1hLG9uTmVzdGVkUmVsZWFzZTpMYSxvbk5lc3RlZE9wZW5DaGFuZ2U6VGEsZW1pdENsb3NlOnMsZW1pdERyYWc6ZSxlbWl0UmVsZWFzZTphLGVtaXRPcGVuQ2hhbmdlOm4sbmVzdGVkOmQsaGFuZGxlT25seTpJLG5vQm9keVN0eWxlczp4fX1jb25zdCBoYT1tZSh7X19uYW1lOiJEcmF3ZXJSb290Iixwcm9wczp7YWN0aXZlU25hcFBvaW50OntkZWZhdWx0OnZvaWQgMH0sY2xvc2VUaHJlc2hvbGQ6e2RlZmF1bHQ6WW59LHNob3VsZFNjYWxlQmFja2dyb3VuZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc2Nyb2xsTG9ja1RpbWVvdXQ6e2RlZmF1bHQ6WG59LGZpeGVkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LGRpc21pc3NpYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sbW9kYWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxvcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LG5lc3RlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpcmVjdGlvbjp7ZGVmYXVsdDoiYm90dG9tIn0sbm9Cb2R5U3R5bGVzOnt0eXBlOkJvb2xlYW59LGhhbmRsZU9ubHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb246e3R5cGU6Qm9vbGVhbn0sc25hcFBvaW50czp7ZGVmYXVsdDp2b2lkIDB9LGZhZGVGcm9tSW5kZXg6e2RlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJkcmFnIiwicmVsZWFzZSIsImNsb3NlIiwidXBkYXRlOm9wZW4iLCJ1cGRhdGU6YWN0aXZlU25hcFBvaW50IiwiYW5pbWF0aW9uRW5kIl0sc2V0dXAodCx7ZXhwb3NlOmUsZW1pdDphfSl7Y29uc3Qgcz10LG49YTtMZSgpO2NvbnN0IGk9RigoKT0+cy5mYWRlRnJvbUluZGV4Pz8ocy5zbmFwUG9pbnRzJiZzLnNuYXBQb2ludHMubGVuZ3RoLTEpKSxjPXF0KHMsIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpzLmRlZmF1bHRPcGVuLHBhc3NpdmU6cy5vcGVuPT09dm9pZCAwfSksZD1xdChzLCJhY3RpdmVTbmFwUG9pbnQiLG4se3Bhc3NpdmU6cy5hY3RpdmVTbmFwUG9pbnQ9PT12b2lkIDB9KSxyPXtlbWl0RHJhZzpnPT5uKCJkcmFnIixnKSxlbWl0UmVsZWFzZTpnPT5uKCJyZWxlYXNlIixnKSxlbWl0Q2xvc2U6KCk9Pm4oImNsb3NlIiksZW1pdE9wZW5DaGFuZ2U6Zz0+e24oInVwZGF0ZTpvcGVuIixnKSxzZXRUaW1lb3V0KCgpPT57bigiYW5pbWF0aW9uRW5kIixnKX0sRy5EVVJBVElPTioxZTMpfX0se2Nsb3NlRHJhd2VyOm0saGFzQmVlbk9wZW5lZDpwLG1vZGFsOmgsaXNPcGVuOm99PUhuKGVzKHsuLi5yLC4uLlJhKHMpLGFjdGl2ZVNuYXBQb2ludDpkLGZhZGVGcm9tSW5kZXg6aSxvcGVuOmN9KSk7ZnVuY3Rpb24gdShnKXtpZihjLnZhbHVlIT09dm9pZCAwKXtyLmVtaXRPcGVuQ2hhbmdlKGcpO3JldHVybn1vLnZhbHVlPWcsZz9wLnZhbHVlPSEwOm0oKX1yZXR1cm4gZSh7b3BlbjpvfSksKGcsdik9Pih3KCksRShsKE5hKSx7b3BlbjpsKG8pLG1vZGFsOmwoaCksIm9uVXBkYXRlOm9wZW4iOnV9LHtkZWZhdWx0OkMoKCk9PltSKGcuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpsKG8pfSldKSxfOjN9LDgsWyJvcGVuIiwibW9kYWwiXSkpfX0pLHRzPW1lKHtfX25hbWU6IkRyYXdlclJvb3ROZXN0ZWQiLHByb3BzOnthY3RpdmVTbmFwUG9pbnQ6e30sY2xvc2VUaHJlc2hvbGQ6e30sc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOnt0eXBlOkJvb2xlYW59LHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6e3R5cGU6Qm9vbGVhbn0sc2Nyb2xsTG9ja1RpbWVvdXQ6e30sZml4ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbn0sbW9kYWw6e3R5cGU6Qm9vbGVhbn0sb3Blbjp7dHlwZTpCb29sZWFufSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFufSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlyZWN0aW9uOnt9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFufSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW59LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjp7dHlwZTpCb29sZWFufSxzbmFwUG9pbnRzOnt9LGZhZGVGcm9tSW5kZXg6e319LGVtaXRzOlsiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2VtaXQ6ZX0pe2NvbnN0IGE9dCxzPWUse29uTmVzdGVkRHJhZzpuLG9uTmVzdGVkT3BlbkNoYW5nZTppLG9uTmVzdGVkUmVsZWFzZTpjfT1OZSgpO2Z1bmN0aW9uIGQoKXtpKCExKX1mdW5jdGlvbiByKGgpe24oaCl9ZnVuY3Rpb24gbShoKXtoJiZpKGgpLHMoInVwZGF0ZTpvcGVuIixoKX1jb25zdCBwPWt0KGEscyk7cmV0dXJuKGgsbyk9Pih3KCksRShoYSxZKGwocCkse25lc3RlZDoiIixvbkNsb3NlOmQsb25EcmFnOnIsb25SZWxlYXNlOmwoYyksIm9uVXBkYXRlOm9wZW4iOm19KSx7ZGVmYXVsdDpDKCgpPT5bUihoLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbIm9uUmVsZWFzZSJdKSl9fSksYXM9bWUoe19fbmFtZToiRHJhd2VyT3ZlcmxheSIsc2V0dXAodCl7Y29uc3R7b3ZlcmxheVJlZjplLGhhc1NuYXBQb2ludHM6YSxpc09wZW46cyxzaG91bGRGYWRlOm59PU5lKCk7cmV0dXJuKGksYyk9Pih3KCksRShsKHphKSx7cmVmX2tleToib3ZlcmxheVJlZiIscmVmOmUsImRhdGEtdmF1bC1vdmVybGF5IjoiIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzIjpsKHMpJiZsKGEpPyJ0cnVlIjoiZmFsc2UiLCJkYXRhLXZhdWwtc25hcC1wb2ludHMtb3ZlcmxheSI6bChzKSYmbChuKT8idHJ1ZSI6ImZhbHNlIn0sbnVsbCw4LFsiZGF0YS12YXVsLXNuYXAtcG9pbnRzIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzLW92ZXJsYXkiXSkpfX0pLG5zPSgpPT4oKT0+e307ZnVuY3Rpb24gc3MoKXtjb25zdHtkaXJlY3Rpb246dCxpc09wZW46ZSxzaG91bGRTY2FsZUJhY2tncm91bmQ6YSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnMsbm9Cb2R5U3R5bGVzOm59PU5lKCksaT1fKG51bGwpLGM9Xyhkb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmRDb2xvcik7ZnVuY3Rpb24gZCgpe3JldHVybih3aW5kb3cuaW5uZXJXaWR0aC1wYSkvd2luZG93LmlubmVyV2lkdGh9U3Qocj0+e2lmKGUudmFsdWUmJmEudmFsdWUpe2kudmFsdWUmJmNsZWFyVGltZW91dChpLnZhbHVlKTtjb25zdCBtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXZhdWwtZHJhd2VyLXdyYXBwZXJdIil8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIlt2YXVsLWRyYXdlci13cmFwcGVyXSIpO2lmKCFtKXJldHVybjtHbihzLnZhbHVlJiYhbi52YWx1ZT9ydChkb2N1bWVudC5ib2R5LHtiYWNrZ3JvdW5kOiJibGFjayJ9KTpucyxydChtLHt0cmFuc2Zvcm1PcmlnaW46Wih0LnZhbHVlKT8idG9wIjoibGVmdCIsdHJhbnNpdGlvblByb3BlcnR5OiJ0cmFuc2Zvcm0sIGJvcmRlci1yYWRpdXMiLHRyYW5zaXRpb25EdXJhdGlvbjpgJHtHLkRVUkFUSU9OfXNgLHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjpgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYH0pKTtjb25zdCBwPXJ0KG0se2JvcmRlclJhZGl1czpgJHtmYX1weGAsb3ZlcmZsb3c6ImhpZGRlbiIsLi4uWih0LnZhbHVlKT97dHJhbnNmb3JtOmBzY2FsZSgke2QoKX0pIHRyYW5zbGF0ZTNkKDAsIGNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC10b3ApICsgMTRweCksIDApYH06e3RyYW5zZm9ybTpgc2NhbGUoJHtkKCl9KSB0cmFuc2xhdGUzZChjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwLCAwKWB9fSk7cigoKT0+e3AoKSxpLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57Yy52YWx1ZT9kb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmQ9Yy52YWx1ZTpkb2N1bWVudC5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJiYWNrZ3JvdW5kIil9LEcuRFVSQVRJT04qMWUzKX0pfX0se2ZsdXNoOiJwcmUifSl9Y29uc3QgaXM9bWUoe19fbmFtZToiRHJhd2VyQ29udGVudCIsc2V0dXAodCl7Y29uc3R7b3BlbjplLGlzT3BlbjphLHNuYXBQb2ludHNPZmZzZXQ6cyxoYXNTbmFwUG9pbnRzOm4sZHJhd2VyUmVmOmksb25QcmVzczpjLG9uRHJhZzpkLG9uUmVsZWFzZTpyLG1vZGFsOm0sZW1pdE9wZW5DaGFuZ2U6cCxkaXNtaXNzaWJsZTpoLGtleWJvYXJkSXNPcGVuOm8sY2xvc2VEcmF3ZXI6dSxkaXJlY3Rpb246ZyxoYW5kbGVPbmx5OnZ9PU5lKCk7c3MoKTtjb25zdCB4PV8oITEpLEk9RigoKT0+cy52YWx1ZSYmcy52YWx1ZS5sZW5ndGg+MD9gJHtzLnZhbHVlWzBdfXB4YDoiMCIpO2Z1bmN0aW9uIFMoayl7aWYoIW0udmFsdWV8fGsuZGVmYXVsdFByZXZlbnRlZCl7ay5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1vLnZhbHVlJiYoby52YWx1ZT0hMSksaC52YWx1ZT9wKCExKTprLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gYihrKXt2LnZhbHVlfHxjKGspfWZ1bmN0aW9uIHkoayl7di52YWx1ZXx8ZChrKX1yZXR1cm4gU3QoKCk9PntuLnZhbHVlJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57eC52YWx1ZT0hMH0pfSksKGssQik9Pih3KCksRShsKHFhKSx7cmVmX2tleToiZHJhd2VyUmVmIixyZWY6aSwiZGF0YS12YXVsLWRyYXdlciI6IiIsImRhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uIjpsKGcpLCJkYXRhLXZhdWwtZGVsYXllZC1zbmFwLXBvaW50cyI6eC52YWx1ZT8idHJ1ZSI6ImZhbHNlIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzIjpsKGEpJiZsKG4pPyJ0cnVlIjoiZmFsc2UiLHN0eWxlOlBhKHsiLS1zbmFwLXBvaW50LWhlaWdodCI6SS52YWx1ZX0pLG9uUG9pbnRlcmRvd246YixvblBvaW50ZXJtb3ZlOnksb25Qb2ludGVydXA6bChyKSxvblBvaW50ZXJEb3duT3V0c2lkZTpTLG9uT3BlbkF1dG9Gb2N1czpCWzBdfHwoQlswXT1GYSgoKT0+e30sWyJwcmV2ZW50Il0pKSxvbkVzY2FwZUtleURvd246QlsxXXx8KEJbMV09JD0+e2woaCl8fCQucHJldmVudERlZmF1bHQoKX0pfSx7ZGVmYXVsdDpDKCgpPT5bUihrLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb24iLCJkYXRhLXZhdWwtZGVsYXllZC1zbmFwLXBvaW50cyIsImRhdGEtdmF1bC1zbmFwLXBvaW50cyIsInN0eWxlIiwib25Qb2ludGVydXAiXSkpfX0pLGxzPVsiZGF0YS12YXVsLWRyYXdlci12aXNpYmxlIl0sb3M9eyJkYXRhLXZhdWwtaGFuZGxlLWhpdGFyZWEiOiIiLCJhcmlhLWhpZGRlbiI6InRydWUifSxycz0yNTAsdXM9MTIwLGNzPW1lKHtfX25hbWU6IkRyYXdlckhhbmRsZSIscHJvcHM6e3ByZXZlbnRDeWNsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxzZXR1cCh0KXtjb25zdCBlPXQse29uUHJlc3M6YSxvbkRyYWc6cyxoYW5kbGVSZWY6bixoYW5kbGVPbmx5OmksaXNPcGVuOmMsc25hcFBvaW50czpkLGFjdGl2ZVNuYXBQb2ludDpyLGlzRHJhZ2dpbmc6bSxkaXNtaXNzaWJsZTpwLGNsb3NlRHJhd2VyOmh9PU5lKCksbz1fKG51bGwpLHU9XyghMSk7ZnVuY3Rpb24gZygpe2lmKHUudmFsdWUpe0koKTtyZXR1cm59d2luZG93LnNldFRpbWVvdXQoKCk9Pnt2KCl9LHVzKX1mdW5jdGlvbiB2KCl7aWYobS52YWx1ZXx8ZS5wcmV2ZW50Q3ljbGV8fHUudmFsdWUpe0koKTtyZXR1cm59aWYoSSgpLCFkLnZhbHVlfHxkLnZhbHVlLmxlbmd0aD09PTApe3AudmFsdWV8fGgoKTtyZXR1cm59Y29uc3QgeT1yLnZhbHVlPT09ZC52YWx1ZVtkLnZhbHVlLmxlbmd0aC0xXTtpZih5JiZwLnZhbHVlKXtoKCk7cmV0dXJufWNvbnN0IGs9ZC52YWx1ZS5maW5kSW5kZXgoJD0+JD09PXIudmFsdWUpO2lmKGs9PT0tMSlyZXR1cm47Y29uc3QgQj15PzA6aysxO3IudmFsdWU9ZC52YWx1ZVtCXX1mdW5jdGlvbiB4KCl7by52YWx1ZT13aW5kb3cuc2V0VGltZW91dCgoKT0+e3UudmFsdWU9ITB9LHJzKX1mdW5jdGlvbiBJKCl7by52YWx1ZSYmd2luZG93LmNsZWFyVGltZW91dChvLnZhbHVlKSx1LnZhbHVlPSExfWZ1bmN0aW9uIFMoeSl7aS52YWx1ZSYmYSh5KSx4KCl9ZnVuY3Rpb24gYih5KXtpLnZhbHVlJiZzKHkpfXJldHVybih5LGspPT4odygpLHooImRpdiIse3JlZl9rZXk6ImhhbmRsZVJlZiIscmVmOm4sImRhdGEtdmF1bC1kcmF3ZXItdmlzaWJsZSI6bChjKT8idHJ1ZSI6ImZhbHNlIiwiZGF0YS12YXVsLWhhbmRsZSI6IiIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsb25DbGljazpnLG9uUG9pbnRlcmNhbmNlbDpJLG9uUG9pbnRlcmRvd246UyxvblBvaW50ZXJtb3ZlOmJ9LFtYKCJzcGFuIixvcyxbUih5LiRzbG90cywiZGVmYXVsdCIpXSldLDQwLGxzKSl9fSksZHM9e3Nsb3RzOntvdmVybGF5OiJmaXhlZCBpbnNldC0wIGJnLWVsZXZhdGVkLzc1Iixjb250ZW50OiJmaXhlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1kZWZhdWx0IGZsZXggZm9jdXM6b3V0bGluZS1ub25lIixoYW5kbGU6WyJzaHJpbmstMCAhYmctYWNjZW50ZWQiLCJ0cmFuc2l0aW9uLW9wYWNpdHkiXSxjb250YWluZXI6InctZnVsbCBmbGV4IGZsZXgtY29sIGdhcC00IHAtNCBvdmVyZmxvdy15LWF1dG8iLGhlYWRlcjoiIix0aXRsZToidGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIixkZXNjcmlwdGlvbjoibXQtMSB0ZXh0LW11dGVkIHRleHQtc20iLGJvZHk6ImZsZXgtMSIsZm9vdGVyOiJmbGV4IGZsZXgtY29sIGdhcC0xLjUifSx2YXJpYW50czp7ZGlyZWN0aW9uOnt0b3A6e2NvbnRlbnQ6Im1iLTI0IGZsZXgtY29sLXJldmVyc2UiLGhhbmRsZToibWItNCJ9LHJpZ2h0Ontjb250ZW50OiJmbGV4LXJvdyIsaGFuZGxlOiIhbWwtNCJ9LGJvdHRvbTp7Y29udGVudDoibXQtMjQgZmxleC1jb2wiLGhhbmRsZToibXQtNCJ9LGxlZnQ6e2NvbnRlbnQ6ImZsZXgtcm93LXJldmVyc2UiLGhhbmRsZToiIW1yLTQifX0saW5zZXQ6e3RydWU6e2NvbnRlbnQ6InJvdW5kZWQtbGcgYWZ0ZXI6aGlkZGVuIG92ZXJmbG93LWhpZGRlbiBbLS1pbml0aWFsLXRyYW5zZm9ybTpjYWxjKDEwMCUrMS41cmVtKV0ifX0sc25hcFBvaW50czp7dHJ1ZToiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tkaXJlY3Rpb246WyJ0b3AiLCJib3R0b20iXSxjbGFzczp7Y29udGVudDoiaC1hdXRvIG1heC1oLVs5NiVdIixoYW5kbGU6IiF3LTEyICFoLTEuNSBteC1hdXRvIn19LHtkaXJlY3Rpb246WyJ0b3AiLCJib3R0b20iXSxzbmFwUG9pbnRzOiEwLGNsYXNzOntjb250ZW50OiJoLWZ1bGwifX0se2RpcmVjdGlvbjpbInJpZ2h0IiwibGVmdCJdLGNsYXNzOntjb250ZW50OiJ3LWF1dG8gbWF4LXctW2NhbGMoMTAwJS0ycmVtKV0iLGhhbmRsZToiIWgtMTIgIXctMS41IG10LWF1dG8gbWItYXV0byJ9fSx7ZGlyZWN0aW9uOlsicmlnaHQiLCJsZWZ0Il0sc25hcFBvaW50czohMCxjbGFzczp7Y29udGVudDoidy1mdWxsIn19LHtkaXJlY3Rpb246InRvcCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXgtNCB0b3AtNCJ9fSx7ZGlyZWN0aW9uOiJ0b3AiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJpbnNldC14LTAgdG9wLTAgcm91bmRlZC1iLWxnIn19LHtkaXJlY3Rpb246ImJvdHRvbSIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXgtNCBib3R0b20tNCJ9fSx7ZGlyZWN0aW9uOiJib3R0b20iLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJpbnNldC14LTAgYm90dG9tLTAgcm91bmRlZC10LWxnIn19LHtkaXJlY3Rpb246ImxlZnQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC15LTQgbGVmdC00In19LHtkaXJlY3Rpb246ImxlZnQiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJpbnNldC15LTAgbGVmdC0wIHJvdW5kZWQtci1sZyJ9fSx7ZGlyZWN0aW9uOiJyaWdodCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXktNCByaWdodC00In19LHtkaXJlY3Rpb246InJpZ2h0IixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteS0wIHJpZ2h0LTAgcm91bmRlZC1sLWxnIn19XX0sZnM9e19fbmFtZToiVURyYXdlciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3ZlcmxheTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGhhbmRsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhY3RpdmVTbmFwUG9pbnQ6e3R5cGU6W051bWJlcixTdHJpbmcsbnVsbF0scmVxdWlyZWQ6ITF9LGNsb3NlVGhyZXNob2xkOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2Nyb2xsTG9ja1RpbWVvdXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxmaXhlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXJlY3Rpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJvdHRvbSJ9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzbmFwUG9pbnRzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjbG9zZTpwcmV2ZW50IiwiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2VtaXQ6ZX0pe2NvbnN0IGE9dCxzPWUsbj1MZSgpLGk9RWUoKSxjPU9lKCJkcmF3ZXIiLGEpLGQ9a3QoSmUoYSwiYWN0aXZlU25hcFBvaW50IiwiY2xvc2VUaHJlc2hvbGQiLCJzaG91bGRTY2FsZUJhY2tncm91bmQiLCJzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlIiwic2Nyb2xsTG9ja1RpbWVvdXQiLCJmaXhlZCIsImRpc21pc3NpYmxlIiwibW9kYWwiLCJvcGVuIiwiZGVmYXVsdE9wZW4iLCJuZXN0ZWQiLCJkaXJlY3Rpb24iLCJub0JvZHlTdHlsZXMiLCJoYW5kbGVPbmx5IiwicHJldmVudFNjcm9sbFJlc3RvcmF0aW9uIiwic25hcFBvaW50cyIpLHMpLHI9V2EoTWUoKCk9PmEucG9ydGFsKSksbT1NZSgoKT0+YS5jb250ZW50KSxwPUYoKCk9PmEuZGlzbWlzc2libGU/e3BvaW50ZXJEb3duT3V0c2lkZTpKYX06WyJpbnRlcmFjdE91dHNpZGUiLCJlc2NhcGVLZXlEb3duIl0ucmVkdWNlKCh1LGcpPT4odVtnXT12PT57di5wcmV2ZW50RGVmYXVsdCgpLHMoImNsb3NlOnByZXZlbnQiKX0sdSkse30pKSxoPUYoKCk9PmRlKHtleHRlbmQ6ZGUoZHMpLC4uLmkudWk/LmRyYXdlcnx8e319KSh7ZGlyZWN0aW9uOmEuZGlyZWN0aW9uLGluc2V0OmEuaW5zZXQsc25hcFBvaW50czphLnNuYXBQb2ludHMmJmEuc25hcFBvaW50cy5sZW5ndGg+MH0pKTtyZXR1cm4obyx1KT0+KHcoKSxFKGVhKHQubmVzdGVkP2wodHMpOmwoaGEpKSxEZShUZShsKGQpKSkse2RlZmF1bHQ6QygoKT0+W24uZGVmYXVsdD8odygpLEUobChWYSkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6UChhLmNsYXNzKX0se2RlZmF1bHQ6QygoKT0+W1Ioby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImNsYXNzIl0pKTpLKCIiLCEwKSxEKGwoR2EpLERlKFRlKGwocikpKSx7ZGVmYXVsdDpDKCgpPT5bRChsKFlhKSxudWxsLHtkZWZhdWx0OkMoKCk9Plt0Lm92ZXJsYXk/KHcoKSxFKGwoYXMpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6UChoLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmwoYyk/Lm92ZXJsYXl9KSl9LG51bGwsOCxbImNsYXNzIl0pKTpLKCIiLCEwKSxEKGwoaXMpLFkoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpoLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZhLmNsYXNzLGwoYyk/LmNvbnRlbnRdfSl9LG0udmFsdWUsWGEocC52YWx1ZSkpLHtkZWZhdWx0OkMoKCk9Plt0LmhhbmRsZT8odygpLEUobChjcykse2tleTowLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOlAoaC52YWx1ZS5oYW5kbGUoe2NsYXNzOmwoYyk/LmhhbmRsZX0pKX0sbnVsbCw4LFsiY2xhc3MiXSkpOksoIiIsITApLCF0LnRpdGxlJiYhbi50aXRsZXx8IXQuZGVzY3JpcHRpb24mJiFuLmRlc2NyaXB0aW9ufHxuLmNvbnRlbnQ/KHcoKSxFKGwoUWEpLHtrZXk6MX0se2RlZmF1bHQ6QygoKT0+WyF0LnRpdGxlJiYhbi50aXRsZT8odygpLEUobChsdCkse2tleTowfSkpOm4uY29udGVudD8odygpLEUobChsdCkse2tleToxfSx7ZGVmYXVsdDpDKCgpPT5bUihvLiRzbG90cywidGl0bGUiLHt9LCgpPT5bQWUoY2UodC50aXRsZSksMSldKV0pLF86M30pKTpLKCIiLCEwKSwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb24/KHcoKSxFKGwob3QpLHtrZXk6Mn0pKTpuLmNvbnRlbnQ/KHcoKSxFKGwob3QpLHtrZXk6M30se2RlZmF1bHQ6QygoKT0+W1Ioby4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W0FlKGNlKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6SygiIiwhMCldKSxfOjN9KSk6SygiIiwhMCksUihvLiRzbG90cywiY29udGVudCIse30sKCk9PltYKCJkaXYiLHsiZGF0YS1zbG90IjoiY29udGFpbmVyIixjbGFzczpQKGgudmFsdWUuY29udGFpbmVyKHtjbGFzczpsKGMpPy5jb250YWluZXJ9KSl9LFtuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8odygpLHooImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOlAoaC52YWx1ZS5oZWFkZXIoe2NsYXNzOmwoYyk/LmhlYWRlcn0pKX0sW1Ioby4kc2xvdHMsImhlYWRlciIse30sKCk9Plt0LnRpdGxlfHxuLnRpdGxlPyh3KCksRShsKGx0KSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpQKGgudmFsdWUudGl0bGUoe2NsYXNzOmwoYyk/LnRpdGxlfSkpfSx7ZGVmYXVsdDpDKCgpPT5bUihvLiRzbG90cywidGl0bGUiLHt9LCgpPT5bQWUoY2UodC50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpLKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyh3KCksRShsKG90KSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpQKGgudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmwoYyk/LmRlc2NyaXB0aW9ufSkpfSx7ZGVmYXVsdDpDKCgpPT5bUihvLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bQWUoY2UodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpLKCIiLCEwKV0pXSwyKSk6SygiIiwhMCksbi5ib2R5Pyh3KCkseigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOlAoaC52YWx1ZS5ib2R5KHtjbGFzczpsKGMpPy5ib2R5fSkpfSxbUihvLiRzbG90cywiYm9keSIpXSwyKSk6SygiIiwhMCksbi5mb290ZXI/KHcoKSx6KCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpQKGgudmFsdWUuZm9vdGVyKHtjbGFzczpsKGMpPy5mb290ZXJ9KSl9LFtSKG8uJHNsb3RzLCJmb290ZXIiKV0sMikpOksoIiIsITApXSwyKV0pXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldKSxfOjN9LDE2KV0pLF86M30sMTYpKX19LHBzPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaGlkZGVuIGxnOmZsZXggZmxleC1jb2wgbWluLWgtc3ZoIG1pbi13LTE2IHctKC0td2lkdGgpIHNocmluay0wIixoZWFkZXI6ImgtKC0tdWktaGVhZGVyLWhlaWdodCkgc2hyaW5rLTAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBweC00Iixib2R5OiJmbGV4IGZsZXgtY29sIGdhcC00IGZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcHgtNCBweS0yIixmb290ZXI6InNocmluay0wIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtNCBweS0yIix0b2dnbGU6IiIsaGFuZGxlOiIiLGNvbnRlbnQ6ImxnOmhpZGRlbiIsb3ZlcmxheToibGc6aGlkZGVuIn0sdmFyaWFudHM6e21lbnU6e3RydWU6e2hlYWRlcjoic206cHgtNiIsYm9keToic206cHgtNiIsZm9vdGVyOiJzbTpweC02In19LHNpZGU6e2xlZnQ6e3Jvb3Q6ImJvcmRlci1lIGJvcmRlci1kZWZhdWx0In0scmlnaHQ6e3Jvb3Q6IiJ9fSx0b2dnbGVTaWRlOntsZWZ0Ont0b2dnbGU6IiJ9LHJpZ2h0Ont0b2dnbGU6Im1zLWF1dG8ifX19fSxocz1bImRhdGEtY29sbGFwc2VkIiwiZGF0YS1kcmFnZ2luZyJdLG1zPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNpZGViYXIiLHByb3BzOlplKHttb2RlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic2xpZGVvdmVyIn0sbWVudTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0b2dnbGU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0b2dnbGVTaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sYXV0b0Nsb3NlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxlZnQifSxtaW5TaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxtYXhTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjIwfSxkZWZhdWx0U2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxNX0scmVzaXphYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sY29sbGFwc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjb2xsYXBzZWRTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9fSx7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9wZW5Nb2RpZmllcnM6e30sY29sbGFwc2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY29sbGFwc2VkTW9kaWZpZXJzOnt9fSksZW1pdHM6WyJ1cGRhdGU6b3BlbiIsInVwZGF0ZTpjb2xsYXBzZWQiXSxzZXR1cCh0KXtjb25zdCBlPXQsYT1MZSgpLHM9cWUodCwib3BlbiIse3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSksbj1xZSh0LCJjb2xsYXBzZWQiLHt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0pLGk9WmEoKSx7dDpjfT1hdCgpLGQ9RWUoKSxyPU9lKCJkYXNoYm9hcmRTaWRlYmFyIixlKSxtPWlhKHtzdG9yYWdlS2V5OiJkYXNoYm9hcmQiLHVuaXQ6IiUiLHNpZGViYXJPcGVuOl8oITEpLHNpZGViYXJDb2xsYXBzZWQ6XyghMSl9KSxwPWAke20uc3RvcmFnZUtleX0tc2lkZWJhci0ke2UuaWR8fGVuKCl9YCx7ZWw6aCxzaXplOm8sY29sbGFwc2U6dSxpc0NvbGxhcHNlZDpnLGlzRHJhZ2dpbmc6dixvbk1vdXNlRG93bjp4LG9uVG91Y2hTdGFydDpJLG9uRG91YmxlQ2xpY2s6U309eG4ocCxNZSgoKT0+KHsuLi5tLC4uLmV9KSkse2NvbGxhcHNlZDpufSksW2IseV09WGUoKSxbayxCXT1YZSgpO2Z0KCJkYXNoYm9hcmQ6c2lkZWJhcjp0b2dnbGUiLCgpPT57cy52YWx1ZT0hcy52YWx1ZX0pLGZ0KCJkYXNoYm9hcmQ6c2lkZWJhcjpjb2xsYXBzZSIsTT0+e2cudmFsdWU9TX0pLHVlKHMsKCk9Pm0uc2lkZWJhck9wZW4udmFsdWU9cy52YWx1ZSx7aW1tZWRpYXRlOiEwfSksdWUoZywoKT0+bS5zaWRlYmFyQ29sbGFwc2VkLnZhbHVlPWcudmFsdWUse2ltbWVkaWF0ZTohMH0pLHVlKCgpPT5pLmZ1bGxQYXRoLCgpPT57ZS5hdXRvQ2xvc2UmJihzLnZhbHVlPSExKX0pO2NvbnN0ICQ9RigoKT0+ZGUoe2V4dGVuZDpkZShwcyksLi4uZC51aT8uZGFzaGJvYXJkU2lkZWJhcnx8e319KSh7c2lkZTplLnNpZGV9KSkscT1GKCgpPT4oe3NsaWRlb3Zlcjp0bixtb2RhbDpBdCxkcmF3ZXI6ZnN9KVtlLm1vZGVdKSxqPU1lKCgpPT5QZShlLm1lbnUse30sZS5tb2RlPT09Im1vZGFsIj97ZnVsbHNjcmVlbjohMCx0cmFuc2l0aW9uOiExfTplLm1vZGU9PT0ic2xpZGVvdmVyIj97c2lkZToibGVmdCJ9Ont9KSk7ZnVuY3Rpb24gSCgpe3MudmFsdWU9IXMudmFsdWV9cmV0dXJuKE0sVSk9Pih3KCkseihwZSxudWxsLFtEKGwoYiksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bUihNLiRzbG90cywidG9nZ2xlIix7b3BlbjpzLnZhbHVlLHRvZ2dsZTpILHVpOiQudmFsdWV9LCgpPT5bdC50b2dnbGU/KHcoKSxFKENuLFkoe2tleTowfSx0eXBlb2YgdC50b2dnbGU9PSJvYmplY3QiP3QudG9nZ2xlOnt9LHtzaWRlOnQudG9nZ2xlU2lkZSwiZGF0YS1zbG90IjoidG9nZ2xlIixjbGFzczokLnZhbHVlLnRvZ2dsZSh7Y2xhc3M6bChyKT8udG9nZ2xlLHRvZ2dsZVNpZGU6dC50b2dnbGVTaWRlfSl9KSxudWxsLDE2LFsic2lkZSIsImNsYXNzIl0pKTpLKCIiLCEwKV0pXSksXzozfSksRChsKGspLG51bGwse2RlZmF1bHQ6QygoKT0+W1IoTS4kc2xvdHMsInJlc2l6ZS1oYW5kbGUiLHtvbk1vdXNlRG93bjpsKHgpLG9uVG91Y2hTdGFydDpsKEkpLG9uRG91YmxlQ2xpY2s6bChTKSx1aTokLnZhbHVlfSwoKT0+W3QucmVzaXphYmxlPyh3KCksRShTbix7a2V5OjAsImFyaWEtY29udHJvbHMiOnAsImRhdGEtc2xvdCI6ImhhbmRsZSIsY2xhc3M6UCgkLnZhbHVlLmhhbmRsZSh7Y2xhc3M6bChyKT8uaGFuZGxlfSkpLG9uTW91c2Vkb3duOmwoeCksb25Ub3VjaHN0YXJ0OmwoSSksb25EYmxjbGljazpsKFMpfSxudWxsLDgsWyJjbGFzcyIsIm9uTW91c2Vkb3duIiwib25Ub3VjaHN0YXJ0Iiwib25EYmxjbGljayJdKSk6SygiIiwhMCldKV0pLF86M30pLHQuc2lkZT09PSJyaWdodCI/KHcoKSxFKGwoQikse2tleTowfSkpOksoIiIsITApLFgoImRpdiIsWSh7aWQ6cCxyZWZfa2V5OiJlbCIscmVmOmh9LE0uJGF0dHJzLHsiZGF0YS1jb2xsYXBzZWQiOmwoZyksImRhdGEtZHJhZ2dpbmciOmwodiksImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOiQudmFsdWUucm9vdCh7Y2xhc3M6W2wocik/LnJvb3QsZS5jbGFzc119KSxzdHlsZTp7Ii0td2lkdGgiOmAke2wobyl8fDB9JHtsKG0pLnVuaXR9YH19KSxbYS5oZWFkZXI/KHcoKSx6KCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpQKCQudmFsdWUuaGVhZGVyKHtjbGFzczpsKHIpPy5oZWFkZXJ9KSl9LFtSKE0uJHNsb3RzLCJoZWFkZXIiLHtjb2xsYXBzZWQ6bChnKSxjb2xsYXBzZTpsKHUpfSldLDIpKTpLKCIiLCEwKSxYKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6UCgkLnZhbHVlLmJvZHkoe2NsYXNzOmwocik/LmJvZHl9KSl9LFtSKE0uJHNsb3RzLCJkZWZhdWx0Iix7Y29sbGFwc2VkOmwoZyksY29sbGFwc2U6bCh1KX0pXSwyKSxhLmZvb3Rlcj8odygpLHooImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOlAoJC52YWx1ZS5mb290ZXIoe2NsYXNzOmwocik/LmZvb3Rlcn0pKX0sW1IoTS4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDpsKGcpLGNvbGxhcHNlOmwodSl9KV0sMikpOksoIiIsITApXSwxNixocyksdC5zaWRlPT09ImxlZnQiPyh3KCksRShsKEIpLHtrZXk6MX0pKTpLKCIiLCEwKSxEKGwocSksWSh7b3BlbjpzLnZhbHVlLCJvblVwZGF0ZTpvcGVuIjpVWzBdfHwoVVswXT1lZT0+cy52YWx1ZT1lZSksdGl0bGU6bChjKSgiZGFzaGJvYXJkU2lkZWJhci50aXRsZSIpLGRlc2NyaXB0aW9uOmwoYykoImRhc2hib2FyZFNpZGViYXIuZGVzY3JpcHRpb24iKX0sai52YWx1ZSx7dWk6e292ZXJsYXk6JC52YWx1ZS5vdmVybGF5KHtjbGFzczpsKHIpPy5vdmVybGF5fSksY29udGVudDokLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmwocik/LmNvbnRlbnR9KX19KSx7Y29udGVudDpDKGVlPT5bUihNLiRzbG90cywiY29udGVudCIsRGUoVGUoZWUpKSwoKT0+W2EuaGVhZGVyfHx0Lm1vZGUhPT0iZHJhd2VyIj8odygpLHooImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOlAoJC52YWx1ZS5oZWFkZXIoe2NsYXNzOmwocik/LmhlYWRlcixtZW51OiEwfSkpfSxbdC5tb2RlIT09ImRyYXdlciImJnQudG9nZ2xlU2lkZT09PSJsZWZ0Ij8odygpLEUobCh5KSx7a2V5OjB9KSk6SygiIiwhMCksUihNLiRzbG90cywiaGVhZGVyIix7Y29sbGFwc2VkOiExLGNvbGxhcHNlOigpPT57fX0pLHQubW9kZSE9PSJkcmF3ZXIiJiZ0LnRvZ2dsZVNpZGU9PT0icmlnaHQiPyh3KCksRShsKHkpLHtrZXk6MX0pKTpLKCIiLCEwKV0sMikpOksoIiIsITApLFgoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpQKCQudmFsdWUuYm9keSh7Y2xhc3M6bChyKT8uYm9keSxtZW51OiEwfSkpfSxbUihNLiRzbG90cywiZGVmYXVsdCIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319KV0sMiksYS5mb290ZXI/KHcoKSx6KCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpQKCQudmFsdWUuZm9vdGVyKHtjbGFzczpsKHIpPy5mb290ZXIsbWVudTohMH0pKX0sW1IoTS4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319KV0sMikpOksoIiIsITApXSldKSxfOjN9LDE2LFsib3BlbiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJ1aSJdKV0sNjQpKX19KTtmdW5jdGlvbiB5ZSh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5KHQpOnZhKHQpPT09IltvYmplY3QgQXJyYXldIn1mdW5jdGlvbiB2cyh0KXtpZih0eXBlb2YgdD09InN0cmluZyIpcmV0dXJuIHQ7aWYodHlwZW9mIHQ9PSJiaWdpbnQiKXJldHVybiB0LnRvU3RyaW5nKCk7Y29uc3QgZT10KyIiO3JldHVybiBlPT0iMCImJjEvdD09LTEvMD8iLTAiOmV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIHQ9PW51bGw/IiI6dnModCl9ZnVuY3Rpb24gbGUodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIn1mdW5jdGlvbiBZZSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIifWZ1bmN0aW9uIGdzKHQpe3JldHVybiB0PT09ITB8fHQ9PT0hMXx8eXModCkmJnZhKHQpPT0iW29iamVjdCBCb29sZWFuXSJ9ZnVuY3Rpb24gbWEodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0In1mdW5jdGlvbiB5cyh0KXtyZXR1cm4gbWEodCkmJnQhPT1udWxsfWZ1bmN0aW9uIHJlKHQpe3JldHVybiB0IT1udWxsfWZ1bmN0aW9uIEdlKHQpe3JldHVybiF0LnRyaW0oKS5sZW5ndGh9ZnVuY3Rpb24gdmEodCl7cmV0dXJuIHQ9PW51bGw/dD09PXZvaWQgMD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNvbnN0IGJzPSJJbmNvcnJlY3QgJ2luZGV4JyB0eXBlIix3cz10PT5gSW52YWxpZCB2YWx1ZSBmb3Iga2V5ICR7dH1gLHhzPXQ9PmBQYXR0ZXJuIGxlbmd0aCBleGNlZWRzIG1heCBvZiAke3R9LmAsU3M9dD0+YE1pc3NpbmcgJHt0fSBwcm9wZXJ0eSBpbiBrZXlgLGtzPXQ9PmBQcm9wZXJ0eSAnd2VpZ2h0JyBpbiBrZXkgJyR7dH0nIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyYCxLdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NsYXNzIElze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2tleXM9W10sdGhpcy5fa2V5TWFwPXt9O2xldCBhPTA7ZS5mb3JFYWNoKHM9Pntjb25zdCBuPWdhKHMpO3RoaXMuX2tleXMucHVzaChuKSx0aGlzLl9rZXlNYXBbbi5pZF09bixhKz1uLndlaWdodH0pLHRoaXMuX2tleXMuZm9yRWFjaChzPT57cy53ZWlnaHQvPWF9KX1nZXQoZSl7cmV0dXJuIHRoaXMuX2tleU1hcFtlXX1rZXlzKCl7cmV0dXJuIHRoaXMuX2tleXN9dG9KU09OKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuX2tleXMpfX1mdW5jdGlvbiBnYSh0KXtsZXQgZT1udWxsLGE9bnVsbCxzPW51bGwsbj0xLGk9bnVsbDtpZihsZSh0KXx8eWUodCkpcz10LGU9VXQodCksYT1odCh0KTtlbHNle2lmKCFLdC5jYWxsKHQsIm5hbWUiKSl0aHJvdyBuZXcgRXJyb3IoU3MoIm5hbWUiKSk7Y29uc3QgYz10Lm5hbWU7aWYocz1jLEt0LmNhbGwodCwid2VpZ2h0IikmJihuPXQud2VpZ2h0LG48PTApKXRocm93IG5ldyBFcnJvcihrcyhjKSk7ZT1VdChjKSxhPWh0KGMpLGk9dC5nZXRGbn1yZXR1cm57cGF0aDplLGlkOmEsd2VpZ2h0Om4sc3JjOnMsZ2V0Rm46aX19ZnVuY3Rpb24gVXQodCl7cmV0dXJuIHllKHQpP3Q6dC5zcGxpdCgiLiIpfWZ1bmN0aW9uIGh0KHQpe3JldHVybiB5ZSh0KT90LmpvaW4oIi4iKTp0fWZ1bmN0aW9uIEFzKHQsZSl7Y29uc3QgYT1bXTtsZXQgcz0hMTtjb25zdCBuPShpLGMsZCxyKT0+e2lmKHJlKGkpKWlmKCFjW2RdKWEucHVzaChyIT09dm9pZCAwP3t2OmksaTpyfTppKTtlbHNle2NvbnN0IG09Y1tkXSxwPWlbbV07aWYoIXJlKHApKXJldHVybjtpZihkPT09Yy5sZW5ndGgtMSYmKGxlKHApfHxZZShwKXx8Z3MocCl8fHR5cGVvZiBwPT0iYmlnaW50IikpYS5wdXNoKHIhPT12b2lkIDA/e3Y6cHQocCksaTpyfTpwdChwKSk7ZWxzZSBpZih5ZShwKSl7cz0hMDtmb3IobGV0IGg9MCxvPXAubGVuZ3RoO2g8bztoKz0xKW4ocFtoXSxjLGQrMSxoKX1lbHNlIGMubGVuZ3RoJiZuKHAsYyxkKzEscil9fTtyZXR1cm4gbih0LGxlKGUpP2Uuc3BsaXQoIi4iKTplLDApLHM/YTphWzBdfWNvbnN0ICRzPXtpbmNsdWRlTWF0Y2hlczohMSxmaW5kQWxsTWF0Y2hlczohMSxtaW5NYXRjaENoYXJMZW5ndGg6MX0sQnM9e2lzQ2FzZVNlbnNpdGl2ZTohMSxpZ25vcmVEaWFjcml0aWNzOiExLGluY2x1ZGVTY29yZTohMSxrZXlzOltdLHNob3VsZFNvcnQ6ITAsc29ydEZuOih0LGUpPT50LnNjb3JlPT09ZS5zY29yZT90LmlkeDxlLmlkeD8tMToxOnQuc2NvcmU8ZS5zY29yZT8tMToxfSxDcz17bG9jYXRpb246MCx0aHJlc2hvbGQ6LjYsZGlzdGFuY2U6MTAwfSxEcz17dXNlRXh0ZW5kZWRTZWFyY2g6ITEsdXNlVG9rZW5TZWFyY2g6ITEsZ2V0Rm46QXMsaWdub3JlTG9jYXRpb246ITEsaWdub3JlRmllbGROb3JtOiExLGZpZWxkTm9ybVdlaWdodDoxfSxUPU9iamVjdC5mcmVlemUoey4uLkJzLC4uLiRzLC4uLkNzLC4uLkRzfSksVHM9L1teIF0rL2c7ZnVuY3Rpb24gTXModD0xLGU9Myl7Y29uc3QgYT1uZXcgTWFwLHM9TWF0aC5wb3coMTAsZSk7cmV0dXJue2dldChuKXtjb25zdCBpPW4ubWF0Y2goVHMpLmxlbmd0aDtpZihhLmhhcyhpKSlyZXR1cm4gYS5nZXQoaSk7Y29uc3QgYz0xL01hdGgucG93KGksLjUqdCksZD1wYXJzZUZsb2F0KE1hdGgucm91bmQoYypzKS9zKTtyZXR1cm4gYS5zZXQoaSxkKSxkfSxjbGVhcigpe2EuY2xlYXIoKX19fWNsYXNzIEJ0e2NvbnN0cnVjdG9yKHtnZXRGbjplPVQuZ2V0Rm4sZmllbGROb3JtV2VpZ2h0OmE9VC5maWVsZE5vcm1XZWlnaHR9PXt9KXt0aGlzLm5vcm09TXMoYSwzKSx0aGlzLmdldEZuPWUsdGhpcy5pc0NyZWF0ZWQ9ITEsdGhpcy5kb2NzPVtdLHRoaXMua2V5cz1bXSx0aGlzLl9rZXlzTWFwPXt9LHRoaXMuc2V0SW5kZXhSZWNvcmRzKCl9c2V0U291cmNlcyhlPVtdKXt0aGlzLmRvY3M9ZX1zZXRJbmRleFJlY29yZHMoZT1bXSl7dGhpcy5yZWNvcmRzPWV9c2V0S2V5cyhlPVtdKXt0aGlzLmtleXM9ZSx0aGlzLl9rZXlzTWFwPXt9LGUuZm9yRWFjaCgoYSxzKT0+e3RoaXMuX2tleXNNYXBbYS5pZF09c30pfWNyZWF0ZSgpe3RoaXMuaXNDcmVhdGVkfHwhdGhpcy5kb2NzLmxlbmd0aHx8KHRoaXMuaXNDcmVhdGVkPSEwLGxlKHRoaXMuZG9jc1swXSk/dGhpcy5kb2NzLmZvckVhY2goKGUsYSk9Pnt0aGlzLl9hZGRTdHJpbmcoZSxhKX0pOnRoaXMuZG9jcy5mb3JFYWNoKChlLGEpPT57dGhpcy5fYWRkT2JqZWN0KGUsYSl9KSx0aGlzLm5vcm0uY2xlYXIoKSl9YWRkKGUpe2NvbnN0IGE9dGhpcy5zaXplKCk7bGUoZSk/dGhpcy5fYWRkU3RyaW5nKGUsYSk6dGhpcy5fYWRkT2JqZWN0KGUsYSl9cmVtb3ZlQXQoZSl7dGhpcy5yZWNvcmRzLnNwbGljZShlLDEpO2ZvcihsZXQgYT1lLHM9dGhpcy5zaXplKCk7YTxzO2ErPTEpdGhpcy5yZWNvcmRzW2FdLmktPTF9cmVtb3ZlQWxsKGUpe2ZvcihsZXQgYT1lLmxlbmd0aC0xO2E+PTA7YS09MSl0aGlzLnJlY29yZHMuc3BsaWNlKGVbYV0sMSk7Zm9yKGxldCBhPTAscz10aGlzLnJlY29yZHMubGVuZ3RoO2E8czthKz0xKXRoaXMucmVjb3Jkc1thXS5pPWF9Z2V0VmFsdWVGb3JJdGVtQXRLZXlJZChlLGEpe3JldHVybiBlW3RoaXMuX2tleXNNYXBbYV1dfXNpemUoKXtyZXR1cm4gdGhpcy5yZWNvcmRzLmxlbmd0aH1fYWRkU3RyaW5nKGUsYSl7aWYoIXJlKGUpfHxHZShlKSlyZXR1cm47Y29uc3Qgcz17djplLGk6YSxuOnRoaXMubm9ybS5nZXQoZSl9O3RoaXMucmVjb3Jkcy5wdXNoKHMpfV9hZGRPYmplY3QoZSxhKXtjb25zdCBzPXtpOmEsJDp7fX07dGhpcy5rZXlzLmZvckVhY2goKG4saSk9Pntjb25zdCBjPW4uZ2V0Rm4/bi5nZXRGbihlKTp0aGlzLmdldEZuKGUsbi5wYXRoKTtpZihyZShjKSl7aWYoeWUoYykpe2NvbnN0IGQ9W107Zm9yKGxldCByPTAsbT1jLmxlbmd0aDtyPG07cis9MSl7Y29uc3QgcD1jW3JdO2lmKHJlKHApKXtpZihsZShwKSl7aWYoIUdlKHApKXtjb25zdCBoPXt2OnAsaTpyLG46dGhpcy5ub3JtLmdldChwKX07ZC5wdXNoKGgpfX1lbHNlIGlmKHJlKHAudikpe2NvbnN0IGg9bGUocC52KT9wLnY6cHQocC52KTtpZighR2UoaCkpe2NvbnN0IG89e3Y6aCxpOnAuaSxuOnRoaXMubm9ybS5nZXQoaCl9O2QucHVzaChvKX19fX1zLiRbaV09ZH1lbHNlIGlmKGxlKGMpJiYhR2UoYykpe2NvbnN0IGQ9e3Y6YyxuOnRoaXMubm9ybS5nZXQoYyl9O3MuJFtpXT1kfX19KSx0aGlzLnJlY29yZHMucHVzaChzKX10b0pTT04oKXtyZXR1cm57a2V5czp0aGlzLmtleXMubWFwKCh7Z2V0Rm46ZSwuLi5hfSk9PmEpLHJlY29yZHM6dGhpcy5yZWNvcmRzfX19ZnVuY3Rpb24geWEodCxlLHtnZXRGbjphPVQuZ2V0Rm4sZmllbGROb3JtV2VpZ2h0OnM9VC5maWVsZE5vcm1XZWlnaHR9PXt9KXtjb25zdCBuPW5ldyBCdCh7Z2V0Rm46YSxmaWVsZE5vcm1XZWlnaHQ6c30pO3JldHVybiBuLnNldEtleXModC5tYXAoZ2EpKSxuLnNldFNvdXJjZXMoZSksbi5jcmVhdGUoKSxufWZ1bmN0aW9uIExzKHQse2dldEZuOmU9VC5nZXRGbixmaWVsZE5vcm1XZWlnaHQ6YT1ULmZpZWxkTm9ybVdlaWdodH09e30pe2NvbnN0e2tleXM6cyxyZWNvcmRzOm59PXQsaT1uZXcgQnQoe2dldEZuOmUsZmllbGROb3JtV2VpZ2h0OmF9KTtyZXR1cm4gaS5zZXRLZXlzKHMpLGkuc2V0SW5kZXhSZWNvcmRzKG4pLGl9ZnVuY3Rpb24gRXModD1bXSxlPVQubWluTWF0Y2hDaGFyTGVuZ3RoKXtjb25zdCBhPVtdO2xldCBzPS0xLG49LTEsaT0wO2ZvcihsZXQgYz10Lmxlbmd0aDtpPGM7aSs9MSl7Y29uc3QgZD10W2ldO2QmJnM9PT0tMT9zPWk6IWQmJnMhPT0tMSYmKG49aS0xLG4tcysxPj1lJiZhLnB1c2goW3Msbl0pLHM9LTEpfXJldHVybiB0W2ktMV0mJmktcz49ZSYmYS5wdXNoKFtzLGktMV0pLGF9Y29uc3QgSWU9MzI7ZnVuY3Rpb24gT3ModCxlLGEse2xvY2F0aW9uOnM9VC5sb2NhdGlvbixkaXN0YW5jZTpuPVQuZGlzdGFuY2UsdGhyZXNob2xkOmk9VC50aHJlc2hvbGQsZmluZEFsbE1hdGNoZXM6Yz1ULmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpkPVQubWluTWF0Y2hDaGFyTGVuZ3RoLGluY2x1ZGVNYXRjaGVzOnI9VC5pbmNsdWRlTWF0Y2hlcyxpZ25vcmVMb2NhdGlvbjptPVQuaWdub3JlTG9jYXRpb259PXt9KXtpZihlLmxlbmd0aD5JZSl0aHJvdyBuZXcgRXJyb3IoeHMoSWUpKTtjb25zdCBwPWUubGVuZ3RoLGg9dC5sZW5ndGgsbz1NYXRoLm1heCgwLE1hdGgubWluKHMsaCkpO2xldCB1PWksZz1vO2NvbnN0IHY9KHEsaik9Pntjb25zdCBIPXEvcDtpZihtKXJldHVybiBIO2NvbnN0IE09TWF0aC5hYnMoby1qKTtyZXR1cm4gbj9IK00vbjpNPzE6SH0seD1kPjF8fHIsST14P0FycmF5KGgpOltdO2xldCBTO2Zvcig7KFM9dC5pbmRleE9mKGUsZykpPi0xOyl7Y29uc3QgcT12KDAsUyk7aWYodT1NYXRoLm1pbihxLHUpLGc9UytwLHgpe2xldCBqPTA7Zm9yKDtqPHA7KUlbUytqXT0xLGorPTF9fWc9LTE7bGV0IGI9W10seT0xLGs9cCtoO2NvbnN0IEI9MTw8cC0xO2ZvcihsZXQgcT0wO3E8cDtxKz0xKXtsZXQgaj0wLEg9aztmb3IoO2o8SDspdihxLG8rSCk8PXU/aj1IOms9SCxIPU1hdGguZmxvb3IoKGstaikvMitqKTtrPUg7bGV0IE09TWF0aC5tYXgoMSxvLUgrMSk7Y29uc3QgVT1jP2g6TWF0aC5taW4obytILGgpK3AsZWU9QXJyYXkoVSsyKTtlZVtVKzFdPSgxPDxxKS0xO2ZvcihsZXQgTj1VO04+PU07Ti09MSl7Y29uc3QgZj1OLTEsSj1hW3RbZl1dO2lmKHgmJihJW2ZdPSshIUopLGVlW05dPShlZVtOKzFdPDwxfDEpJkoscSYmKGVlW05dfD0oYltOKzFdfGJbTl0pPDwxfDF8YltOKzFdKSxlZVtOXSZCJiYoeT12KHEsZikseTw9dSkpe2lmKHU9eSxnPWYsZzw9bylicmVhaztNPU1hdGgubWF4KDEsMipvLWcpfX1pZih2KHErMSxvKT51KWJyZWFrO2I9ZWV9Y29uc3QgJD17aXNNYXRjaDpnPj0wLHNjb3JlOk1hdGgubWF4KC4wMDEseSl9O2lmKHgpe2NvbnN0IHE9RXMoSSxkKTtxLmxlbmd0aD9yJiYoJC5pbmRpY2VzPXEpOiQuaXNNYXRjaD0hMX1yZXR1cm4gJH1mdW5jdGlvbiBfcyh0KXtjb25zdCBlPXt9O2ZvcihsZXQgYT0wLHM9dC5sZW5ndGg7YTxzO2ErPTEpe2NvbnN0IG49dC5jaGFyQXQoYSk7ZVtuXT0oZVtuXXx8MCl8MTw8cy1hLTF9cmV0dXJuIGV9ZnVuY3Rpb24gQ3QodCl7aWYodC5sZW5ndGg8PTEpcmV0dXJuIHQ7dC5zb3J0KChhLHMpPT5hWzBdLXNbMF18fGFbMV0tc1sxXSk7Y29uc3QgZT1bdFswXV07Zm9yKGxldCBhPTEscz10Lmxlbmd0aDthPHM7YSs9MSl7Y29uc3Qgbj1lW2UubGVuZ3RoLTFdLGk9dFthXTtpWzBdPD1uWzFdKzE/blsxXT1NYXRoLm1heChuWzFdLGlbMV0pOmUucHVzaChpKX1yZXR1cm4gZX1jb25zdCBiYT17xYI6ImwiLMWBOiJMIizEkToiZCIsxJA6IkQiLMO4OiJvIizDmDoiTyIsxKc6ImgiLMSmOiJIIizFpzoidCIsxaY6IlQiLMSxOiJpIizDnzoic3MifSx6cz1uZXcgUmVnRXhwKCJbIitPYmplY3Qua2V5cyhiYSkuam9pbigiIikrIl0iLCJnIiksUmU9U3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemU/dD0+dC5ub3JtYWxpemUoIk5GRCIpLnJlcGxhY2UoL1tcdTAzMDAtXHUwMzZGXHUwNDgzLVx1MDQ4OVx1MDU5MS1cdTA1QkRcdTA1QkZcdTA1QzFcdTA1QzJcdTA1QzRcdTA1QzVcdTA1QzdcdTA2MTAtXHUwNjFBXHUwNjRCLVx1MDY1Rlx1MDY3MFx1MDZENi1cdTA2RENcdTA2REYtXHUwNkU0XHUwNkU3XHUwNkU4XHUwNkVBLVx1MDZFRFx1MDcxMVx1MDczMC1cdTA3NEFcdTA3QTYtXHUwN0IwXHUwN0VCLVx1MDdGM1x1MDdGRFx1MDgxNi1cdTA4MTlcdTA4MUItXHUwODIzXHUwODI1LVx1MDgyN1x1MDgyOS1cdTA4MkRcdTA4NTktXHUwODVCXHUwOEQzLVx1MDhFMVx1MDhFMy1cdTA5MDNcdTA5M0EtXHUwOTNDXHUwOTNFLVx1MDk0Rlx1MDk1MS1cdTA5NTdcdTA5NjJcdTA5NjNcdTA5ODEtXHUwOTgzXHUwOUJDXHUwOUJFLVx1MDlDNFx1MDlDN1x1MDlDOFx1MDlDQi1cdTA5Q0RcdTA5RDdcdTA5RTJcdTA5RTNcdTA5RkVcdTBBMDEtXHUwQTAzXHUwQTNDXHUwQTNFLVx1MEE0Mlx1MEE0N1x1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTFcdTBBNzBcdTBBNzFcdTBBNzVcdTBBODEtXHUwQTgzXHUwQUJDXHUwQUJFLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUUyXHUwQUUzXHUwQUZBLVx1MEFGRlx1MEIwMS1cdTBCMDNcdTBCM0NcdTBCM0UtXHUwQjQ0XHUwQjQ3XHUwQjQ4XHUwQjRCLVx1MEI0RFx1MEI1Nlx1MEI1N1x1MEI2Mlx1MEI2M1x1MEI4Mlx1MEJCRS1cdTBCQzJcdTBCQzYtXHUwQkM4XHUwQkNBLVx1MEJDRFx1MEJEN1x1MEMwMC1cdTBDMDRcdTBDM0UtXHUwQzQ0XHUwQzQ2LVx1MEM0OFx1MEM0QS1cdTBDNERcdTBDNTVcdTBDNTZcdTBDNjJcdTBDNjNcdTBDODEtXHUwQzgzXHUwQ0JDXHUwQ0JFLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1XHUwQ0Q2XHUwQ0UyXHUwQ0UzXHUwRDAwLVx1MEQwM1x1MEQzQlx1MEQzQ1x1MEQzRS1cdTBENDRcdTBENDYtXHUwRDQ4XHUwRDRBLVx1MEQ0RFx1MEQ1N1x1MEQ2Mlx1MEQ2M1x1MEQ4Mlx1MEQ4M1x1MERDQVx1MERDRi1cdTBERDRcdTBERDZcdTBERDgtXHUwRERGXHUwREYyXHUwREYzXHUwRTMxXHUwRTM0LVx1MEUzQVx1MEU0Ny1cdTBFNEVcdTBFQjFcdTBFQjQtXHUwRUI5XHUwRUJCXHUwRUJDXHUwRUM4LVx1MEVDRFx1MEYxOFx1MEYxOVx1MEYzNVx1MEYzN1x1MEYzOVx1MEYzRVx1MEYzRlx1MEY3MS1cdTBGODRcdTBGODZcdTBGODdcdTBGOEQtXHUwRjk3XHUwRjk5LVx1MEZCQ1x1MEZDNlx1MTAyQi1cdTEwM0VcdTEwNTYtXHUxMDU5XHUxMDVFLVx1MTA2MFx1MTA2Mi1cdTEwNjRcdTEwNjctXHUxMDZEXHUxMDcxLVx1MTA3NFx1MTA4Mi1cdTEwOERcdTEwOEZcdTEwOUEtXHUxMDlEXHUxMzVELVx1MTM1Rlx1MTcxMi1cdTE3MTRcdTE3MzItXHUxNzM0XHUxNzUyXHUxNzUzXHUxNzcyXHUxNzczXHUxN0I0LVx1MTdEM1x1MTdERFx1MTgwQi1cdTE4MERcdTE4ODVcdTE4ODZcdTE4QTlcdTE5MjAtXHUxOTJCXHUxOTMwLVx1MTkzQlx1MUExNy1cdTFBMUJcdTFBNTUtXHUxQTVFXHUxQTYwLVx1MUE3Q1x1MUE3Rlx1MUFCMC1cdTFBQkVcdTFCMDAtXHUxQjA0XHUxQjM0LVx1MUI0NFx1MUI2Qi1cdTFCNzNcdTFCODAtXHUxQjgyXHUxQkExLVx1MUJBRFx1MUJFNi1cdTFCRjNcdTFDMjQtXHUxQzM3XHUxQ0QwLVx1MUNEMlx1MUNENC1cdTFDRThcdTFDRURcdTFDRjItXHUxQ0Y0XHUxQ0Y3LVx1MUNGOVx1MURDMC1cdTFERjlcdTFERkItXHUxREZGXHUyMEQwLVx1MjBGMFx1MkNFRi1cdTJDRjFcdTJEN0ZcdTJERTAtXHUyREZGXHUzMDJBLVx1MzAyRlx1MzA5OVx1MzA5QVx1QTY2Ri1cdUE2NzJcdUE2NzQtXHVBNjdEXHVBNjlFXHVBNjlGXHVBNkYwXHVBNkYxXHVBODAyXHVBODA2XHVBODBCXHVBODIzLVx1QTgyN1x1QTg4MFx1QTg4MVx1QThCNC1cdUE4QzVcdUE4RTAtXHVBOEYxXHVBOEZGXHVBOTI2LVx1QTkyRFx1QTk0Ny1cdUE5NTNcdUE5ODAtXHVBOTgzXHVBOUIzLVx1QTlDMFx1QTlFNVx1QUEyOS1cdUFBMzZcdUFBNDNcdUFBNENcdUFBNERcdUFBN0ItXHVBQTdEXHVBQUIwXHVBQUIyLVx1QUFCNFx1QUFCN1x1QUFCOFx1QUFCRVx1QUFCRlx1QUFDMVx1QUFFQi1cdUFBRUZcdUFBRjVcdUFBRjZcdUFCRTMtXHVBQkVBXHVBQkVDXHVBQkVEXHVGQjFFXHVGRTAwLVx1RkUwRlx1RkUyMC1cdUZFMkZdL2csIiIpLnJlcGxhY2UoenMsZT0+YmFbZV0pOnQ9PnQ7Y2xhc3MgRHR7Y29uc3RydWN0b3IoZSx7bG9jYXRpb246YT1ULmxvY2F0aW9uLHRocmVzaG9sZDpzPVQudGhyZXNob2xkLGRpc3RhbmNlOm49VC5kaXN0YW5jZSxpbmNsdWRlTWF0Y2hlczppPVQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6Yz1ULmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpkPVQubWluTWF0Y2hDaGFyTGVuZ3RoLGlzQ2FzZVNlbnNpdGl2ZTpyPVQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6bT1ULmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246cD1ULmlnbm9yZUxvY2F0aW9ufT17fSl7aWYodGhpcy5vcHRpb25zPXtsb2NhdGlvbjphLHRocmVzaG9sZDpzLGRpc3RhbmNlOm4saW5jbHVkZU1hdGNoZXM6aSxmaW5kQWxsTWF0Y2hlczpjLG1pbk1hdGNoQ2hhckxlbmd0aDpkLGlzQ2FzZVNlbnNpdGl2ZTpyLGlnbm9yZURpYWNyaXRpY3M6bSxpZ25vcmVMb2NhdGlvbjpwfSxlPXI/ZTplLnRvTG93ZXJDYXNlKCksZT1tP1JlKGUpOmUsdGhpcy5wYXR0ZXJuPWUsdGhpcy5jaHVua3M9W10sIXRoaXMucGF0dGVybi5sZW5ndGgpcmV0dXJuO2NvbnN0IGg9KHUsZyk9Pnt0aGlzLmNodW5rcy5wdXNoKHtwYXR0ZXJuOnUsYWxwaGFiZXQ6X3ModSksc3RhcnRJbmRleDpnfSl9LG89dGhpcy5wYXR0ZXJuLmxlbmd0aDtpZihvPkllKXtsZXQgdT0wO2NvbnN0IGc9byVJZSx2PW8tZztmb3IoO3U8djspaCh0aGlzLnBhdHRlcm4uc3Vic3RyKHUsSWUpLHUpLHUrPUllO2lmKGcpe2NvbnN0IHg9by1JZTtoKHRoaXMucGF0dGVybi5zdWJzdHIoeCkseCl9fWVsc2UgaCh0aGlzLnBhdHRlcm4sMCl9c2VhcmNoSW4oZSl7Y29uc3R7aXNDYXNlU2Vuc2l0aXZlOmEsaWdub3JlRGlhY3JpdGljczpzLGluY2x1ZGVNYXRjaGVzOm59PXRoaXMub3B0aW9ucztpZihlPWE/ZTplLnRvTG93ZXJDYXNlKCksZT1zP1JlKGUpOmUsdGhpcy5wYXR0ZXJuPT09ZSl7Y29uc3Qgdj17aXNNYXRjaDohMCxzY29yZTowfTtyZXR1cm4gbiYmKHYuaW5kaWNlcz1bWzAsZS5sZW5ndGgtMV1dKSx2fWNvbnN0e2xvY2F0aW9uOmksZGlzdGFuY2U6Yyx0aHJlc2hvbGQ6ZCxmaW5kQWxsTWF0Y2hlczpyLG1pbk1hdGNoQ2hhckxlbmd0aDptLGlnbm9yZUxvY2F0aW9uOnB9PXRoaXMub3B0aW9ucyxoPVtdO2xldCBvPTAsdT0hMTt0aGlzLmNodW5rcy5mb3JFYWNoKCh7cGF0dGVybjp2LGFscGhhYmV0Ongsc3RhcnRJbmRleDpJfSk9Pntjb25zdHtpc01hdGNoOlMsc2NvcmU6YixpbmRpY2VzOnl9PU9zKGUsdix4LHtsb2NhdGlvbjppK0ksZGlzdGFuY2U6Yyx0aHJlc2hvbGQ6ZCxmaW5kQWxsTWF0Y2hlczpyLG1pbk1hdGNoQ2hhckxlbmd0aDptLGluY2x1ZGVNYXRjaGVzOm4saWdub3JlTG9jYXRpb246cH0pO1MmJih1PSEwKSxvKz1iLFMmJnkmJmgucHVzaCguLi55KX0pO2NvbnN0IGc9e2lzTWF0Y2g6dSxzY29yZTp1P28vdGhpcy5jaHVua3MubGVuZ3RoOjF9O3JldHVybiB1JiZuJiYoZy5pbmRpY2VzPUN0KGgpKSxnfX1jbGFzcyBiZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnBhdHRlcm49ZX1zdGF0aWMgaXNNdWx0aU1hdGNoKGUpe3JldHVybiBqdChlLHRoaXMubXVsdGlSZWdleCl9c3RhdGljIGlzU2luZ2xlTWF0Y2goZSl7cmV0dXJuIGp0KGUsdGhpcy5zaW5nbGVSZWdleCl9c2VhcmNoKGUpe3JldHVybntpc01hdGNoOiExLHNjb3JlOjF9fX1mdW5jdGlvbiBqdCh0LGUpe2NvbnN0IGE9dC5tYXRjaChlKTtyZXR1cm4gYT9hWzFdOm51bGx9Y2xhc3MgRnMgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9ePSIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXj0oLiopJC99c2VhcmNoKGUpe2NvbnN0IGE9ZT09PXRoaXMucGF0dGVybjtyZXR1cm57aXNNYXRjaDphLHNjb3JlOmE/MDoxLGluZGljZXM6WzAsdGhpcy5wYXR0ZXJuLmxlbmd0aC0xXX19fWNsYXNzIFBzIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImludmVyc2UtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eISIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXiEoLiopJC99c2VhcmNoKGUpe2NvbnN0IHM9ZS5pbmRleE9mKHRoaXMucGF0dGVybik9PT0tMTtyZXR1cm57aXNNYXRjaDpzLHNjb3JlOnM/MDoxLGluZGljZXM6WzAsZS5sZW5ndGgtMV19fX1jbGFzcyBxcyBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJwcmVmaXgtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eXF4iKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL15cXiguKikkL31zZWFyY2goZSl7Y29uc3QgYT1lLnN0YXJ0c1dpdGgodGhpcy5wYXR0ZXJuKTtyZXR1cm57aXNNYXRjaDphLHNjb3JlOmE/MDoxLGluZGljZXM6WzAsdGhpcy5wYXR0ZXJuLmxlbmd0aC0xXX19fWNsYXNzIFJzIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImludmVyc2UtcHJlZml4LWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiFcXiIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXiFcXiguKikkL31zZWFyY2goZSl7Y29uc3QgYT0hZS5zdGFydHNXaXRoKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6YSxzY29yZTphPzA6MSxpbmRpY2VzOlswLGUubGVuZ3RoLTFdfX19Y2xhc3MgTnMgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4ic3VmZml4LWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiIoLiopIlwkJC99c3RhdGljIGdldCBzaW5nbGVSZWdleCgpe3JldHVybi9eKC4qKVwkJC99c2VhcmNoKGUpe2NvbnN0IGE9ZS5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOmEsc2NvcmU6YT8wOjEsaW5kaWNlczpbZS5sZW5ndGgtdGhpcy5wYXR0ZXJuLmxlbmd0aCxlLmxlbmd0aC0xXX19fWNsYXNzIEtzIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImludmVyc2Utc3VmZml4LWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiEiKC4qKSJcJCQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXiEoLiopXCQkL31zZWFyY2goZSl7Y29uc3QgYT0hZS5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOmEsc2NvcmU6YT8wOjEsaW5kaWNlczpbMCxlLmxlbmd0aC0xXX19fWNsYXNzIHdhIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSx7bG9jYXRpb246YT1ULmxvY2F0aW9uLHRocmVzaG9sZDpzPVQudGhyZXNob2xkLGRpc3RhbmNlOm49VC5kaXN0YW5jZSxpbmNsdWRlTWF0Y2hlczppPVQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6Yz1ULmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpkPVQubWluTWF0Y2hDaGFyTGVuZ3RoLGlzQ2FzZVNlbnNpdGl2ZTpyPVQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6bT1ULmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246cD1ULmlnbm9yZUxvY2F0aW9ufT17fSl7c3VwZXIoZSksdGhpcy5fYml0YXBTZWFyY2g9bmV3IER0KGUse2xvY2F0aW9uOmEsdGhyZXNob2xkOnMsZGlzdGFuY2U6bixpbmNsdWRlTWF0Y2hlczppLGZpbmRBbGxNYXRjaGVzOmMsbWluTWF0Y2hDaGFyTGVuZ3RoOmQsaXNDYXNlU2Vuc2l0aXZlOnIsaWdub3JlRGlhY3JpdGljczptLGlnbm9yZUxvY2F0aW9uOnB9KX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iZnV6enkifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eIiguKikiJC99c3RhdGljIGdldCBzaW5nbGVSZWdleCgpe3JldHVybi9eKC4qKSQvfXNlYXJjaChlKXtyZXR1cm4gdGhpcy5fYml0YXBTZWFyY2guc2VhcmNoSW4oZSl9fWNsYXNzIHhhIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImluY2x1ZGUifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eJyIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXicoLiopJC99c2VhcmNoKGUpe2xldCBhPTAscztjb25zdCBuPVtdLGk9dGhpcy5wYXR0ZXJuLmxlbmd0aDtmb3IoOyhzPWUuaW5kZXhPZih0aGlzLnBhdHRlcm4sYSkpPi0xOylhPXMraSxuLnB1c2goW3MsYS0xXSk7Y29uc3QgYz0hIW4ubGVuZ3RoO3JldHVybntpc01hdGNoOmMsc2NvcmU6Yz8wOjEsaW5kaWNlczpufX19Y29uc3QgbXQ9W0ZzLHhhLHFzLFJzLEtzLE5zLFBzLHdhXSxIdD1tdC5sZW5ndGgsVXM9IlwwIixqcz0ifCI7ZnVuY3Rpb24gSHModCl7Y29uc3QgZT1bXSxhPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPGE7KXtmb3IoO3M8YSYmdFtzXT09PSIgIjspcysrO2lmKHM+PWEpYnJlYWs7bGV0IG49cztmb3IoO248YSYmdFtuXSE9PSIgIiYmdFtuXSE9PSciJzspbisrO2lmKG48YSYmdFtuXT09PSciJyl7Zm9yKG4rKztuPGE7KXtpZih0W25dPT09JyInKXtjb25zdCBpPW4rMTtpZihpPj1hfHx0W2ldPT09IiAiKXtuKys7YnJlYWt9aWYodFtpXT09PSIkIiYmKGkrMT49YXx8dFtpKzFdPT09IiAiKSl7bis9MjticmVha319bisrfWUucHVzaCh0LnN1YnN0cmluZyhzLG4pKSxzPW59ZWxzZXtmb3IoO248YSYmdFtuXSE9PSIgIjspbisrO2UucHVzaCh0LnN1YnN0cmluZyhzLG4pKSxzPW59fXJldHVybiBlfWZ1bmN0aW9uIFdzKHQsZT17fSl7cmV0dXJuIHQucmVwbGFjZSgvXFxcfC9nLFVzKS5zcGxpdChqcykubWFwKHM9Pntjb25zdCBuPXMucmVwbGFjZSgvXHUwMDAwL2csInwiKSxpPUhzKG4udHJpbSgpKS5maWx0ZXIoZD0+ZCYmISFkLnRyaW0oKSksYz1bXTtmb3IobGV0IGQ9MCxyPWkubGVuZ3RoO2Q8cjtkKz0xKXtjb25zdCBtPWlbZF07bGV0IHA9ITEsaD0tMTtmb3IoOyFwJiYrK2g8SHQ7KXtjb25zdCBvPW10W2hdLHU9by5pc011bHRpTWF0Y2gobSk7dSYmKGMucHVzaChuZXcgbyh1LGUpKSxwPSEwKX1pZighcClmb3IoaD0tMTsrK2g8SHQ7KXtjb25zdCBvPW10W2hdLHU9by5pc1NpbmdsZU1hdGNoKG0pO2lmKHUpe2MucHVzaChuZXcgbyh1LGUpKTticmVha319fXJldHVybiBjfSl9Y29uc3QgVnM9bmV3IFNldChbd2EudHlwZSx4YS50eXBlXSk7Y2xhc3MgR3N7Y29uc3RydWN0b3IoZSx7aXNDYXNlU2Vuc2l0aXZlOmE9VC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczpzPVQuaWdub3JlRGlhY3JpdGljcyxpbmNsdWRlTWF0Y2hlczpuPVQuaW5jbHVkZU1hdGNoZXMsbWluTWF0Y2hDaGFyTGVuZ3RoOmk9VC5taW5NYXRjaENoYXJMZW5ndGgsaWdub3JlTG9jYXRpb246Yz1ULmlnbm9yZUxvY2F0aW9uLGZpbmRBbGxNYXRjaGVzOmQ9VC5maW5kQWxsTWF0Y2hlcyxsb2NhdGlvbjpyPVQubG9jYXRpb24sdGhyZXNob2xkOm09VC50aHJlc2hvbGQsZGlzdGFuY2U6cD1ULmRpc3RhbmNlfT17fSl7dGhpcy5xdWVyeT1udWxsLHRoaXMub3B0aW9ucz17aXNDYXNlU2Vuc2l0aXZlOmEsaWdub3JlRGlhY3JpdGljczpzLGluY2x1ZGVNYXRjaGVzOm4sbWluTWF0Y2hDaGFyTGVuZ3RoOmksZmluZEFsbE1hdGNoZXM6ZCxpZ25vcmVMb2NhdGlvbjpjLGxvY2F0aW9uOnIsdGhyZXNob2xkOm0sZGlzdGFuY2U6cH0sZT1hP2U6ZS50b0xvd2VyQ2FzZSgpLGU9cz9SZShlKTplLHRoaXMucGF0dGVybj1lLHRoaXMucXVlcnk9V3ModGhpcy5wYXR0ZXJuLHRoaXMub3B0aW9ucyl9c3RhdGljIGNvbmRpdGlvbihlLGEpe3JldHVybiBhLnVzZUV4dGVuZGVkU2VhcmNofXNlYXJjaEluKGUpe2NvbnN0IGE9dGhpcy5xdWVyeTtpZighYSlyZXR1cm57aXNNYXRjaDohMSxzY29yZToxfTtjb25zdHtpbmNsdWRlTWF0Y2hlczpzLGlzQ2FzZVNlbnNpdGl2ZTpuLGlnbm9yZURpYWNyaXRpY3M6aX09dGhpcy5vcHRpb25zO2U9bj9lOmUudG9Mb3dlckNhc2UoKSxlPWk/UmUoZSk6ZTtsZXQgYz0wO2NvbnN0IGQ9W107bGV0IHI9MCxtPSExO2ZvcihsZXQgcD0wLGg9YS5sZW5ndGg7cDxoO3ArPTEpe2NvbnN0IG89YVtwXTtkLmxlbmd0aD0wLGM9MCxtPSExO2ZvcihsZXQgdT0wLGc9by5sZW5ndGg7dTxnO3UrPTEpe2NvbnN0IHY9b1t1XSx7aXNNYXRjaDp4LGluZGljZXM6SSxzY29yZTpTfT12LnNlYXJjaChlKTtpZih4KXtjKz0xLHIrPVM7Y29uc3QgYj12LmNvbnN0cnVjdG9yLnR5cGU7Yi5zdGFydHNXaXRoKCJpbnZlcnNlIikmJihtPSEwKSxzJiYoVnMuaGFzKGIpP2QucHVzaCguLi5JKTpkLnB1c2goSSkpfWVsc2V7cj0wLGM9MCxkLmxlbmd0aD0wLG09ITE7YnJlYWt9fWlmKGMpe2NvbnN0IHU9e2lzTWF0Y2g6ITAsc2NvcmU6ci9jfTtyZXR1cm4gbSYmKHUuaGFzSW52ZXJzZT0hMCkscyYmKHUuaW5kaWNlcz1DdChkKSksdX19cmV0dXJue2lzTWF0Y2g6ITEsc2NvcmU6MX19fWNvbnN0IHZ0PVtdO2Z1bmN0aW9uIFR0KC4uLnQpe3Z0LnB1c2goLi4udCl9ZnVuY3Rpb24gZXQodCxlKXtmb3IobGV0IGE9MCxzPXZ0Lmxlbmd0aDthPHM7YSs9MSl7Y29uc3Qgbj12dFthXTtpZihuLmNvbmRpdGlvbih0LGUpKXJldHVybiBuZXcgbih0LGUpfXJldHVybiBuZXcgRHQodCxlKX1jb25zdCB0dD17QU5EOiIkYW5kIixPUjoiJG9yIn0sZ3Q9e1BBVEg6IiRwYXRoIixQQVRURVJOOiIkdmFsIn0seXQ9dD0+ISEodFt0dC5BTkRdfHx0W3R0Lk9SXSksWXM9dD0+ISF0W2d0LlBBVEhdLFhzPXQ9PiF5ZSh0KSYmbWEodCkmJiF5dCh0KSxXdD10PT4oe1t0dC5BTkRdOk9iamVjdC5rZXlzKHQpLm1hcChlPT4oe1tlXTp0W2VdfSkpfSk7ZnVuY3Rpb24gU2EodCxlLHthdXRvOmE9ITB9PXt9KXtjb25zdCBzPW49PntpZihsZShuKSl7Y29uc3Qgcj17a2V5SWQ6bnVsbCxwYXR0ZXJuOm59O3JldHVybiBhJiYoci5zZWFyY2hlcj1ldChuLGUpKSxyfWNvbnN0IGk9T2JqZWN0LmtleXMobiksYz1ZcyhuKTtpZighYyYmaS5sZW5ndGg+MSYmIXl0KG4pKXJldHVybiBzKFd0KG4pKTtpZihYcyhuKSl7Y29uc3Qgcj1jP25bZ3QuUEFUSF06aVswXSxtPWM/bltndC5QQVRURVJOXTpuW3JdO2lmKCFsZShtKSl0aHJvdyBuZXcgRXJyb3Iod3MocikpO2NvbnN0IHA9e2tleUlkOmh0KHIpLHBhdHRlcm46bX07cmV0dXJuIGEmJihwLnNlYXJjaGVyPWV0KG0sZSkpLHB9Y29uc3QgZD17Y2hpbGRyZW46W10sb3BlcmF0b3I6aVswXX07cmV0dXJuIGkuZm9yRWFjaChyPT57Y29uc3QgbT1uW3JdO3llKG0pJiZtLmZvckVhY2gocD0+e2QuY2hpbGRyZW4ucHVzaChzKHApKX0pfSksZH07cmV0dXJuIHl0KHQpfHwodD1XdCh0KSkscyh0KX1mdW5jdGlvbiBidCh0LHtpZ25vcmVGaWVsZE5vcm06ZT1ULmlnbm9yZUZpZWxkTm9ybX0pe2xldCBhPTE7cmV0dXJuIHQuZm9yRWFjaCgoe2tleTpzLG5vcm06bixzY29yZTppfSk9Pntjb25zdCBjPXM/cy53ZWlnaHQ6bnVsbDthKj1NYXRoLnBvdyhpPT09MCYmYz9OdW1iZXIuRVBTSUxPTjppLChjfHwxKSooZT8xOm4pKX0pLGF9ZnVuY3Rpb24gUXModCx7aWdub3JlRmllbGROb3JtOmU9VC5pZ25vcmVGaWVsZE5vcm19KXt0LmZvckVhY2goYT0+e2Euc2NvcmU9YnQoYS5tYXRjaGVzLHtpZ25vcmVGaWVsZE5vcm06ZX0pfSl9Y2xhc3MgSnN7Y29uc3RydWN0b3IoZSl7dGhpcy5saW1pdD1lLHRoaXMuaGVhcD1bXX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLmhlYXAubGVuZ3RofXNob3VsZEluc2VydChlKXtyZXR1cm4gdGhpcy5zaXplPHRoaXMubGltaXR8fGU8dGhpcy5oZWFwWzBdLnNjb3JlfWluc2VydChlKXt0aGlzLnNpemU8dGhpcy5saW1pdD8odGhpcy5oZWFwLnB1c2goZSksdGhpcy5fYnViYmxlVXAodGhpcy5zaXplLTEpKTplLnNjb3JlPHRoaXMuaGVhcFswXS5zY29yZSYmKHRoaXMuaGVhcFswXT1lLHRoaXMuX3NpbmtEb3duKDApKX1leHRyYWN0U29ydGVkKGUpe3JldHVybiB0aGlzLmhlYXAuc29ydChlKX1fYnViYmxlVXAoZSl7Y29uc3QgYT10aGlzLmhlYXA7Zm9yKDtlPjA7KXtjb25zdCBzPWUtMT4+MTtpZihhW2VdLnNjb3JlPD1hW3NdLnNjb3JlKWJyZWFrO2NvbnN0IG49YVtlXTthW2VdPWFbc10sYVtzXT1uLGU9c319X3NpbmtEb3duKGUpe2NvbnN0IGE9dGhpcy5oZWFwLHM9YS5sZW5ndGg7bGV0IG49ZTtkb3tlPW47Y29uc3QgaT0yKmUrMSxjPTIqZSsyO2lmKGk8cyYmYVtpXS5zY29yZT5hW25dLnNjb3JlJiYobj1pKSxjPHMmJmFbY10uc2NvcmU+YVtuXS5zY29yZSYmKG49YyksbiE9PWUpe2NvbnN0IGQ9YVtlXTthW2VdPWFbbl0sYVtuXT1kfX13aGlsZShuIT09ZSl9fWZ1bmN0aW9uIFpzKHQsZSl7Y29uc3QgYT10Lm1hdGNoZXM7ZS5tYXRjaGVzPVtdLHJlKGEpJiZhLmZvckVhY2gocz0+e2lmKCFyZShzLmluZGljZXMpfHwhcy5pbmRpY2VzLmxlbmd0aClyZXR1cm47Y29uc3R7aW5kaWNlczpuLHZhbHVlOml9PXMsYz17aW5kaWNlczpuLHZhbHVlOml9O3Mua2V5JiYoYy5rZXk9cy5rZXkuc3JjKSxzLmlkeD4tMSYmKGMucmVmSW5kZXg9cy5pZHgpLGUubWF0Y2hlcy5wdXNoKGMpfSl9ZnVuY3Rpb24gZWkodCxlKXtlLnNjb3JlPXQuc2NvcmV9ZnVuY3Rpb24gdGkodCxlLHtpbmNsdWRlTWF0Y2hlczphPVQuaW5jbHVkZU1hdGNoZXMsaW5jbHVkZVNjb3JlOnM9VC5pbmNsdWRlU2NvcmV9PXt9KXtjb25zdCBuPVtdO3JldHVybiBhJiZuLnB1c2goWnMpLHMmJm4ucHVzaChlaSksdC5tYXAoaT0+e2NvbnN0e2lkeDpjfT1pLGQ9e2l0ZW06ZVtjXSxyZWZJbmRleDpjfTtyZXR1cm4gbi5sZW5ndGgmJm4uZm9yRWFjaChyPT57cihpLGQpfSksZH0pfWNvbnN0IGFpPS9cYlx3K1xiL2c7ZnVuY3Rpb24gd3Qoe2lzQ2FzZVNlbnNpdGl2ZTp0PSExLGlnbm9yZURpYWNyaXRpY3M6ZT0hMX09e30pe3JldHVybnt0b2tlbml6ZShhKXtyZXR1cm4gdHx8KGE9YS50b0xvd2VyQ2FzZSgpKSxlJiYoYT1SZShhKSksYS5tYXRjaChhaSl8fFtdfX19ZnVuY3Rpb24gbmkodCxlLGEpe2NvbnN0IHM9bmV3IE1hcCxuPW5ldyBNYXA7bGV0IGk9MDtmdW5jdGlvbiBjKGQscixtLHApe2NvbnN0IGg9YS50b2tlbml6ZShkKTtpZighaC5sZW5ndGgpcmV0dXJuO2krKztjb25zdCBvPW5ldyBNYXA7Zm9yKGNvbnN0IHUgb2YgaClvLnNldCh1LChvLmdldCh1KXx8MCkrMSk7Zm9yKGNvbnN0W3UsZ11vZiBvKXtjb25zdCB2PXtkb2NJZHg6cixrZXlJZHg6bSxzdWJJZHg6cCx0ZjpnfTtsZXQgeD1zLmdldCh1KTt4fHwoeD1bXSxzLnNldCh1LHgpKSx4LnB1c2godiksbi5zZXQodSwobi5nZXQodSl8fDApKzEpfX1mb3IoY29uc3QgZCBvZiB0KXtjb25zdHtpOnIsdjptLCQ6cH09ZDtpZihtIT09dm9pZCAwKXtjKG0sciwtMSwtMSk7Y29udGludWV9aWYocClmb3IobGV0IGg9MDtoPGU7aCsrKXtjb25zdCBvPXBbaF07aWYobylpZihBcnJheS5pc0FycmF5KG8pKWZvcihjb25zdCB1IG9mIG8pYyh1LnYscixoLHUuaT8/LTEpO2Vsc2UgYyhvLnYscixoLC0xKX19cmV0dXJue3Rlcm1zOnMsZmllbGRDb3VudDppLGRmOm59fWZ1bmN0aW9uIHNpKHQsZSxhLHMpe2NvbnN0e2k6bix2OmksJDpjfT1lO2Z1bmN0aW9uIGQocixtLHApe2NvbnN0IGg9cy50b2tlbml6ZShyKTtpZighaC5sZW5ndGgpcmV0dXJuO3QuZmllbGRDb3VudCsrO2NvbnN0IG89bmV3IE1hcDtmb3IoY29uc3QgdSBvZiBoKW8uc2V0KHUsKG8uZ2V0KHUpfHwwKSsxKTtmb3IoY29uc3RbdSxnXW9mIG8pe2NvbnN0IHY9e2RvY0lkeDpuLGtleUlkeDptLHN1YklkeDpwLHRmOmd9O2xldCB4PXQudGVybXMuZ2V0KHUpO3h8fCh4PVtdLHQudGVybXMuc2V0KHUseCkpLHgucHVzaCh2KSx0LmRmLnNldCh1LCh0LmRmLmdldCh1KXx8MCkrMSl9fWlmKGkhPT12b2lkIDApe2QoaSwtMSwtMSk7cmV0dXJufWlmKGMpZm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgbT1jW3JdO2lmKG0paWYoQXJyYXkuaXNBcnJheShtKSlmb3IoY29uc3QgcCBvZiBtKWQocC52LHIscC5pPz8tMSk7ZWxzZSBkKG0udixyLC0xKX19ZnVuY3Rpb24gVnQodCxlKXtmb3IoY29uc3RbYSxzXW9mIHQudGVybXMpe2NvbnN0IG49cy5maWx0ZXIoYz0+Yy5kb2NJZHghPT1lKSxpPXMubGVuZ3RoLW4ubGVuZ3RoO2k+MCYmKHQuZmllbGRDb3VudC09aSx0LmRmLnNldChhLCh0LmRmLmdldChhKXx8MCktaSksbi5sZW5ndGg9PT0wPyh0LnRlcm1zLmRlbGV0ZShhKSx0LmRmLmRlbGV0ZShhKSk6dC50ZXJtcy5zZXQoYSxuKSl9fWNsYXNzIHdle2NvbnN0cnVjdG9yKGUsYSxzKXt0aGlzLm9wdGlvbnM9ey4uLlQsLi4uYX0sdGhpcy5vcHRpb25zLnVzZUV4dGVuZGVkU2VhcmNoLHRoaXMub3B0aW9ucy51c2VUb2tlblNlYXJjaCx0aGlzLl9rZXlTdG9yZT1uZXcgSXModGhpcy5vcHRpb25zLmtleXMpLHRoaXMuX2RvY3M9ZSx0aGlzLl9teUluZGV4PW51bGwsdGhpcy5faW52ZXJ0ZWRJbmRleD1udWxsLHRoaXMuc2V0Q29sbGVjdGlvbihlLHMpLHRoaXMuX2xhc3RRdWVyeT1udWxsLHRoaXMuX2xhc3RTZWFyY2hlcj1udWxsfV9nZXRTZWFyY2hlcihlKXtpZih0aGlzLl9sYXN0UXVlcnk9PT1lKXJldHVybiB0aGlzLl9sYXN0U2VhcmNoZXI7Y29uc3QgYT10aGlzLl9pbnZlcnRlZEluZGV4P3suLi50aGlzLm9wdGlvbnMsX2ludmVydGVkSW5kZXg6dGhpcy5faW52ZXJ0ZWRJbmRleH06dGhpcy5vcHRpb25zLHM9ZXQoZSxhKTtyZXR1cm4gdGhpcy5fbGFzdFF1ZXJ5PWUsdGhpcy5fbGFzdFNlYXJjaGVyPXMsc31zZXRDb2xsZWN0aW9uKGUsYSl7aWYodGhpcy5fZG9jcz1lLGEmJiEoYSBpbnN0YW5jZW9mIEJ0KSl0aHJvdyBuZXcgRXJyb3IoYnMpO2lmKHRoaXMuX215SW5kZXg9YXx8eWEodGhpcy5vcHRpb25zLmtleXMsdGhpcy5fZG9jcyx7Z2V0Rm46dGhpcy5vcHRpb25zLmdldEZuLGZpZWxkTm9ybVdlaWdodDp0aGlzLm9wdGlvbnMuZmllbGROb3JtV2VpZ2h0fSksdGhpcy5vcHRpb25zLnVzZVRva2VuU2VhcmNoKXtjb25zdCBzPXd0KHtpc0Nhc2VTZW5zaXRpdmU6dGhpcy5vcHRpb25zLmlzQ2FzZVNlbnNpdGl2ZSxpZ25vcmVEaWFjcml0aWNzOnRoaXMub3B0aW9ucy5pZ25vcmVEaWFjcml0aWNzfSk7dGhpcy5faW52ZXJ0ZWRJbmRleD1uaSh0aGlzLl9teUluZGV4LnJlY29yZHMsdGhpcy5fbXlJbmRleC5rZXlzLmxlbmd0aCxzKX19YWRkKGUpe2lmKHJlKGUpJiYodGhpcy5fZG9jcy5wdXNoKGUpLHRoaXMuX215SW5kZXguYWRkKGUpLHRoaXMuX2ludmVydGVkSW5kZXgpKXtjb25zdCBhPXRoaXMuX215SW5kZXgucmVjb3Jkc1t0aGlzLl9teUluZGV4LnJlY29yZHMubGVuZ3RoLTFdLHM9d3Qoe2lzQ2FzZVNlbnNpdGl2ZTp0aGlzLm9wdGlvbnMuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dGhpcy5vcHRpb25zLmlnbm9yZURpYWNyaXRpY3N9KTtzaSh0aGlzLl9pbnZlcnRlZEluZGV4LGEsdGhpcy5fbXlJbmRleC5rZXlzLmxlbmd0aCxzKX19cmVtb3ZlKGU9KCk9PiExKXtjb25zdCBhPVtdLHM9W107Zm9yKGxldCBuPTAsaT10aGlzLl9kb2NzLmxlbmd0aDtuPGk7bis9MSllKHRoaXMuX2RvY3Nbbl0sbikmJihhLnB1c2godGhpcy5fZG9jc1tuXSkscy5wdXNoKG4pKTtpZihzLmxlbmd0aCl7aWYodGhpcy5faW52ZXJ0ZWRJbmRleClmb3IoY29uc3QgbiBvZiBzKVZ0KHRoaXMuX2ludmVydGVkSW5kZXgsbik7Zm9yKGxldCBuPXMubGVuZ3RoLTE7bj49MDtuLT0xKXRoaXMuX2RvY3Muc3BsaWNlKHNbbl0sMSk7dGhpcy5fbXlJbmRleC5yZW1vdmVBbGwocyl9cmV0dXJuIGF9cmVtb3ZlQXQoZSl7dGhpcy5faW52ZXJ0ZWRJbmRleCYmVnQodGhpcy5faW52ZXJ0ZWRJbmRleCxlKTtjb25zdCBhPXRoaXMuX2RvY3Muc3BsaWNlKGUsMSlbMF07cmV0dXJuIHRoaXMuX215SW5kZXgucmVtb3ZlQXQoZSksYX1nZXRJbmRleCgpe3JldHVybiB0aGlzLl9teUluZGV4fXNlYXJjaChlLGEpe2NvbnN0e2xpbWl0OnM9LTF9PWF8fHt9LHtpbmNsdWRlTWF0Y2hlczpuLGluY2x1ZGVTY29yZTppLHNob3VsZFNvcnQ6Yyxzb3J0Rm46ZCxpZ25vcmVGaWVsZE5vcm06cn09dGhpcy5vcHRpb25zO2lmKGxlKGUpJiYhZS50cmltKCkpe2xldCBoPXRoaXMuX2RvY3MubWFwKChvLHUpPT4oe2l0ZW06byxyZWZJbmRleDp1fSkpO3JldHVybiBZZShzKSYmcz4tMSYmKGg9aC5zbGljZSgwLHMpKSxofWNvbnN0IG09WWUocykmJnM+MCYmbGUoZSk7bGV0IHA7aWYobSl7Y29uc3QgaD1uZXcgSnMocyk7bGUodGhpcy5fZG9jc1swXSk/dGhpcy5fc2VhcmNoU3RyaW5nTGlzdChlLHtoZWFwOmgsaWdub3JlRmllbGROb3JtOnJ9KTp0aGlzLl9zZWFyY2hPYmplY3RMaXN0KGUse2hlYXA6aCxpZ25vcmVGaWVsZE5vcm06cn0pLHA9aC5leHRyYWN0U29ydGVkKGQpfWVsc2UgcD1sZShlKT9sZSh0aGlzLl9kb2NzWzBdKT90aGlzLl9zZWFyY2hTdHJpbmdMaXN0KGUpOnRoaXMuX3NlYXJjaE9iamVjdExpc3QoZSk6dGhpcy5fc2VhcmNoTG9naWNhbChlKSxRcyhwLHtpZ25vcmVGaWVsZE5vcm06cn0pLGMmJnAuc29ydChkKSxZZShzKSYmcz4tMSYmKHA9cC5zbGljZSgwLHMpKTtyZXR1cm4gdGkocCx0aGlzLl9kb2NzLHtpbmNsdWRlTWF0Y2hlczpuLGluY2x1ZGVTY29yZTppfSl9X3NlYXJjaFN0cmluZ0xpc3QoZSx7aGVhcDphLGlnbm9yZUZpZWxkTm9ybTpzfT17fSl7Y29uc3Qgbj10aGlzLl9nZXRTZWFyY2hlcihlKSx7cmVjb3JkczppfT10aGlzLl9teUluZGV4LGM9YT9udWxsOltdO3JldHVybiBpLmZvckVhY2goKHt2OmQsaTpyLG46bX0pPT57aWYoIXJlKGQpKXJldHVybjtjb25zdHtpc01hdGNoOnAsc2NvcmU6aCxpbmRpY2VzOm99PW4uc2VhcmNoSW4oZCk7aWYocCl7Y29uc3QgdT17aXRlbTpkLGlkeDpyLG1hdGNoZXM6W3tzY29yZTpoLHZhbHVlOmQsbm9ybTptLGluZGljZXM6b31dfTthPyh1LnNjb3JlPWJ0KHUubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOnN9KSxhLnNob3VsZEluc2VydCh1LnNjb3JlKSYmYS5pbnNlcnQodSkpOmMucHVzaCh1KX19KSxjfV9zZWFyY2hMb2dpY2FsKGUpe2NvbnN0IGE9U2EoZSx0aGlzLm9wdGlvbnMpLHM9KGQscixtKT0+e2lmKCEoImNoaWxkcmVuImluIGQpKXtjb25zdHtrZXlJZDp1LHNlYXJjaGVyOmd9PWQ7bGV0IHY7cmV0dXJuIHU9PT1udWxsPyh2PVtdLHRoaXMuX215SW5kZXgua2V5cy5mb3JFYWNoKCh4LEkpPT57di5wdXNoKC4uLnRoaXMuX2ZpbmRNYXRjaGVzKHtrZXk6eCx2YWx1ZTpyW0ldLHNlYXJjaGVyOmd9KSl9KSk6dj10aGlzLl9maW5kTWF0Y2hlcyh7a2V5OnRoaXMuX2tleVN0b3JlLmdldCh1KSx2YWx1ZTp0aGlzLl9teUluZGV4LmdldFZhbHVlRm9ySXRlbUF0S2V5SWQocix1KSxzZWFyY2hlcjpnfSksdiYmdi5sZW5ndGg/W3tpZHg6bSxpdGVtOnIsbWF0Y2hlczp2fV06W119Y29uc3R7Y2hpbGRyZW46cCxvcGVyYXRvcjpofT1kLG89W107Zm9yKGxldCB1PTAsZz1wLmxlbmd0aDt1PGc7dSs9MSl7Y29uc3Qgdj1wW3VdLHg9cyh2LHIsbSk7aWYoeC5sZW5ndGgpby5wdXNoKC4uLngpO2Vsc2UgaWYoaD09PXR0LkFORClyZXR1cm5bXX1yZXR1cm4gb30sbj10aGlzLl9teUluZGV4LnJlY29yZHMsaT1uZXcgTWFwLGM9W107cmV0dXJuIG4uZm9yRWFjaCgoeyQ6ZCxpOnJ9KT0+e2lmKHJlKGQpKXtjb25zdCBtPXMoYSxkLHIpO20ubGVuZ3RoJiYoaS5oYXMocil8fChpLnNldChyLHtpZHg6cixpdGVtOmQsbWF0Y2hlczpbXX0pLGMucHVzaChpLmdldChyKSkpLG0uZm9yRWFjaCgoe21hdGNoZXM6cH0pPT57aS5nZXQocikubWF0Y2hlcy5wdXNoKC4uLnApfSkpfX0pLGN9X3NlYXJjaE9iamVjdExpc3QoZSx7aGVhcDphLGlnbm9yZUZpZWxkTm9ybTpzfT17fSl7Y29uc3Qgbj10aGlzLl9nZXRTZWFyY2hlcihlKSx7a2V5czppLHJlY29yZHM6Y309dGhpcy5fbXlJbmRleCxkPWE/bnVsbDpbXTtyZXR1cm4gYy5mb3JFYWNoKCh7JDpyLGk6bX0pPT57aWYoIXJlKHIpKXJldHVybjtjb25zdCBwPVtdO2xldCBoPSExLG89ITE7aWYoaS5mb3JFYWNoKCh1LGcpPT57Y29uc3Qgdj10aGlzLl9maW5kTWF0Y2hlcyh7a2V5OnUsdmFsdWU6cltnXSxzZWFyY2hlcjpufSk7di5sZW5ndGg/KHAucHVzaCguLi52KSx2WzBdLmhhc0ludmVyc2UmJihvPSEwKSk6aD0hMH0pLCEobyYmaCkmJnAubGVuZ3RoKXtjb25zdCB1PXtpZHg6bSxpdGVtOnIsbWF0Y2hlczpwfTthPyh1LnNjb3JlPWJ0KHUubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOnN9KSxhLnNob3VsZEluc2VydCh1LnNjb3JlKSYmYS5pbnNlcnQodSkpOmQucHVzaCh1KX19KSxkfV9maW5kTWF0Y2hlcyh7a2V5OmUsdmFsdWU6YSxzZWFyY2hlcjpzfSl7aWYoIXJlKGEpKXJldHVybltdO2NvbnN0IG49W107aWYoeWUoYSkpYS5mb3JFYWNoKCh7djppLGk6YyxuOmR9KT0+e2lmKCFyZShpKSlyZXR1cm47Y29uc3R7aXNNYXRjaDpyLHNjb3JlOm0saW5kaWNlczpwLGhhc0ludmVyc2U6aH09cy5zZWFyY2hJbihpKTtyJiZuLnB1c2goe3Njb3JlOm0sa2V5OmUsdmFsdWU6aSxpZHg6Yyxub3JtOmQsaW5kaWNlczpwLGhhc0ludmVyc2U6aH0pfSk7ZWxzZXtjb25zdHt2OmksbjpjfT1hLHtpc01hdGNoOmQsc2NvcmU6cixpbmRpY2VzOm0saGFzSW52ZXJzZTpwfT1zLnNlYXJjaEluKGkpO2QmJm4ucHVzaCh7c2NvcmU6cixrZXk6ZSx2YWx1ZTppLG5vcm06YyxpbmRpY2VzOm0saGFzSW52ZXJzZTpwfSl9cmV0dXJuIG59fWNsYXNzIGlpe3N0YXRpYyBjb25kaXRpb24oZSxhKXtyZXR1cm4gYS51c2VUb2tlblNlYXJjaH1jb25zdHJ1Y3RvcihlLGEpe3RoaXMub3B0aW9ucz1hLHRoaXMuYW5hbHl6ZXI9d3Qoe2lzQ2FzZVNlbnNpdGl2ZTphLmlzQ2FzZVNlbnNpdGl2ZSxpZ25vcmVEaWFjcml0aWNzOmEuaWdub3JlRGlhY3JpdGljc30pO2NvbnN0IHM9dGhpcy5hbmFseXplci50b2tlbml6ZShlKSxuPWEuX2ludmVydGVkSW5kZXgse2RmOmksZmllbGRDb3VudDpjfT1uO3RoaXMudGVybVNlYXJjaGVycz1bXSx0aGlzLmlkZldlaWdodHM9W107Zm9yKGNvbnN0IGQgb2Ygcyl7dGhpcy50ZXJtU2VhcmNoZXJzLnB1c2gobmV3IER0KGQse2xvY2F0aW9uOmEubG9jYXRpb24sdGhyZXNob2xkOmEudGhyZXNob2xkLGRpc3RhbmNlOmEuZGlzdGFuY2UsaW5jbHVkZU1hdGNoZXM6YS5pbmNsdWRlTWF0Y2hlcyxmaW5kQWxsTWF0Y2hlczphLmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDphLm1pbk1hdGNoQ2hhckxlbmd0aCxpc0Nhc2VTZW5zaXRpdmU6YS5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczphLmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246ITB9KSk7Y29uc3Qgcj1pLmdldChkKXx8MCxtPU1hdGgubG9nKDErKGMtcisuNSkvKHIrLjUpKTt0aGlzLmlkZldlaWdodHMucHVzaChtKX19c2VhcmNoSW4oZSl7aWYoIXRoaXMudGVybVNlYXJjaGVycy5sZW5ndGgpcmV0dXJue2lzTWF0Y2g6ITEsc2NvcmU6MX07Y29uc3QgYT1bXTtsZXQgcz0wLG49MCxpPTA7Zm9yKGxldCByPTA7cjx0aGlzLnRlcm1TZWFyY2hlcnMubGVuZ3RoO3IrKyl7Y29uc3QgbT10aGlzLnRlcm1TZWFyY2hlcnNbcl0uc2VhcmNoSW4oZSkscD10aGlzLmlkZldlaWdodHNbcl07bis9cCxtLmlzTWF0Y2gmJihpKysscys9cCooMS1tLnNjb3JlKSxtLmluZGljZXMmJmEucHVzaCguLi5tLmluZGljZXMpKX1pZihpPT09MClyZXR1cm57aXNNYXRjaDohMSxzY29yZToxfTtjb25zdCBjPW4+MD8xLXMvbjowLGQ9e2lzTWF0Y2g6ITAsc2NvcmU6TWF0aC5tYXgoLjAwMSxjKX07cmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlTWF0Y2hlcyYmYS5sZW5ndGgmJihkLmluZGljZXM9Q3QoYSkpLGR9fXdlLnZlcnNpb249IjcuMy4wIjt3ZS5jcmVhdGVJbmRleD15YTt3ZS5wYXJzZUluZGV4PUxzO3dlLmNvbmZpZz1UO3dlLm1hdGNoPWZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4gZXQodCx7Li4uVCwuLi5hfSkuc2VhcmNoSW4oZSl9O3dlLnBhcnNlUXVlcnk9U2E7VHQoR3MpO1R0KGlpKTt3ZS51c2U9ZnVuY3Rpb24oLi4udCl7dC5mb3JFYWNoKGU9PlR0KGUpKX07ZnVuY3Rpb24gbGkodCxlLGEpe2NvbnN0IHM9KCk9Pnt2YXIgaSxjO3JldHVybiBuZXcgd2UoKGk9dmUoZSkpIT09bnVsbCYmaSE9PXZvaWQgMD9pOltdLChjPXZlKGEpKT09PW51bGx8fGM9PT12b2lkIDA/dm9pZCAwOmMuZnVzZU9wdGlvbnMpfSxuPV8ocygpKTtyZXR1cm4gdWUoKCk9Pnt2YXIgaTtyZXR1cm4oaT12ZShhKSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmZ1c2VPcHRpb25zfSwoKT0+e24udmFsdWU9cygpfSx7ZGVlcDohMH0pLHVlKCgpPT52ZShlKSxpPT57bi52YWx1ZS5zZXRDb2xsZWN0aW9uKGkpfSx7ZGVlcDohMH0pLHtmdXNlOm4scmVzdWx0czpGKCgpPT57Y29uc3QgaT12ZShhKTtpZihpPy5tYXRjaEFsbFdoZW5TZWFyY2hFbXB0eSYmIXZlKHQpKXJldHVybiB2ZShlKS5tYXAoKGQscik9Pih7aXRlbTpkLHJlZkluZGV4OnJ9KSk7Y29uc3QgYz1pPy5yZXN1bHRMaW1pdDtyZXR1cm4gbi52YWx1ZS5zZWFyY2godmUodCksYz97bGltaXQ6Y306dm9pZCAwKX0pfX1jb25zdCBvaT17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In07ZnVuY3Rpb24gcmkodCl7cmV0dXJuIHQucmVwbGFjZSgvWyY8PiInXS9nLGU9Pm9pW2VdKX1mdW5jdGlvbiB1aSh0KXtyZXR1cm4vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7Ly50ZXN0KHQpfWZ1bmN0aW9uIHV0KHQpe3JldHVybiB1aSh0KT90OnJpKHQpfWZ1bmN0aW9uIGNpKHQsZSl7bGV0IGE9IiIscz0wLG49ITE7Zm9yKGxldCBpPXQubGVuZ3RoLTE7aT49MDtpLS0pe2lmKHRbaV09PT0iPiIpbj0hMDtlbHNlIGlmKHRbaV09PT0iPCIpe249ITEsYT10W2ldK2E7Y29udGludWV9aWYobnx8cysrLHM8PWUpYT10W2ldK2E7ZWxzZXthPSIuLi4iK2E7YnJlYWt9fXJldHVybiBhfWZ1bmN0aW9uIEd0KHQsZSxhLHMpe2Z1bmN0aW9uIG4oaSxjPVtdKXtpPWl8fCIiO2xldCBkPSIiLHI9MDtjLmZvckVhY2gocD0+e2lmKHAubGVuZ3RoPT09MiYmcFswXT09PXBbMV0pcmV0dXJuO2NvbnN0IGg9cFsxXSsxLG89aC1wWzBdPj1lLmxlbmd0aDtkKz1bdXQoaS5zdWJzdHJpbmcocixwWzBdKSksbyYmIjxtYXJrPiIsdXQoaS5zdWJzdHJpbmcocFswXSxoKSksbyYmIjwvbWFyaz4iXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIikscj1ofSksZCs9dXQoaS5zdWJzdHJpbmcocikpO2NvbnN0IG09ZC5pbmRleE9mKCI8bWFyaz4iKTtyZXR1cm4gbSE9PS0xJiYoZD1jaShkLGQubGVuZ3RoLW0pKSxkfWlmKHQubWF0Y2hlcz8ubGVuZ3RoKXtmb3IoY29uc3QgaSBvZiB0Lm1hdGNoZXMpaWYoIShhJiZpLmtleSE9PWEpJiYhcz8uaW5jbHVkZXMoaS5rZXkpKXJldHVybiBuKGkudmFsdWUsaS5pbmRpY2VzKX19Y29uc3QgZGk9e3Nsb3RzOntyb290OiJmbGV4IGZsZXgtY29sIG1pbi1oLTAgbWluLXctMCBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCIsaW5wdXQ6IiIsY2xvc2U6IiIsYmFjazoicC0wIixjb250ZW50OiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gZmxleCBmbGV4LWNvbCIsZm9vdGVyOiJwLTEiLHZpZXdwb3J0OiJyZWxhdGl2ZSBzY3JvbGwtcHktMSBvdmVyZmxvdy15LWF1dG8gZmxleC0xIGZvY3VzOm91dGxpbmUtbm9uZSIsZ3JvdXA6InAtMSBpc29sYXRlIixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsbGFiZWw6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsaXRlbToiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtc3RhcnQgc2VsZWN0LW5vbmUgb3V0bGluZS1ub25lIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTppbnNldC1weCBiZWZvcmU6cm91bmRlZC1tZCBkYXRhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNzUiLGl0ZW1MZWFkaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIiLGl0ZW1MZWFkaW5nQ2hpcDoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6IiIsaXRlbVRyYWlsaW5nOiJtcy1hdXRvIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsaXRlbVRyYWlsaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQgaGlkZGVuIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6aW5saW5lLWZsZXgiLGl0ZW1UcmFpbGluZ0tiZHM6ImhpZGRlbiBsZzppbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiIiLGl0ZW1XcmFwcGVyOiJmbGV4LTEgZmxleCBmbGV4LWNvbCB0ZXh0LXN0YXJ0IG1pbi13LTAiLGl0ZW1MYWJlbDoidHJ1bmNhdGUgc3BhY2UteC0xIHRleHQtZGltbWVkIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQiLGl0ZW1MYWJlbEJhc2U6InRleHQtaGlnaGxpZ2h0ZWQgWyY+bWFya106dGV4dC1pbnZlcnRlZCBbJj5tYXJrXTpiZy1wcmltYXJ5IixpdGVtTGFiZWxQcmVmaXg6InRleHQtZGVmYXVsdCIsaXRlbUxhYmVsU3VmZml4OiJ0ZXh0LWRpbW1lZCBbJj5tYXJrXTp0ZXh0LWludmVydGVkIFsmPm1hcmtdOmJnLXByaW1hcnkifSx2YXJpYW50czp7dmlydHVhbGl6ZTp7dHJ1ZTp7dmlld3BvcnQ6InAtMSBpc29sYXRlIn0sZmFsc2U6e3ZpZXdwb3J0OiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9fSxzaXplOnt4czp7aW5wdXQ6IlsmPmlucHV0XTpoLTEwIixlbXB0eToicHktMyB0ZXh0LXhzIixsYWJlbDoicC0xIHRleHQtWzEwcHhdLzMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nOiJnYXAtMSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNCIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6InNtIn0sc206e2lucHV0OiJbJj5pbnB1dF06aC0xMSIsZW1wdHk6InB5LTQgdGV4dC14cyIsbGFiZWw6InAtMS41IHRleHQtWzEwcHhdLzMgZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nOiJnYXAtMS41IixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToic20ifSxtZDp7aW5wdXQ6IlsmPmlucHV0XTpoLTEyIixlbXB0eToicHktNiB0ZXh0LXNtIixsYWJlbDoicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmc6ImdhcC0xLjUiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJtZCJ9LGxnOntpbnB1dDoiWyY+aW5wdXRdOmgtMTMiLGVtcHR5OiJweS03IHRleHQtc20iLGxhYmVsOiJwLTIgdGV4dC14cyBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmc6ImdhcC0yIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToibWQifSx4bDp7aW5wdXQ6IlsmPmlucHV0XTpoLTE0IixlbXB0eToicHktOCB0ZXh0LWJhc2UiLGxhYmVsOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbToicC0yIHRleHQtYmFzZSBnYXAtMiIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTYiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToieHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS02IixpdGVtTGVhZGluZ0NoaXBTaXplOiJsZyIsaXRlbVRyYWlsaW5nOiJnYXAtMiIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS02IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNiIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6ImxnIn19LGFjdGl2ZTp7dHJ1ZTp7aXRlbToidGV4dC1oaWdobGlnaHRlZCBiZWZvcmU6YmctZWxldmF0ZWQiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1kZWZhdWx0In0sZmFsc2U6e2l0ZW06WyJ0ZXh0LWRlZmF1bHQgZGF0YS1oaWdobGlnaHRlZDpub3QtZGF0YS1kaXNhYmxlZDp0ZXh0LWhpZ2hsaWdodGVkIGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6YmVmb3JlOmJnLWVsZXZhdGVkLzUwIiwidHJhbnNpdGlvbi1jb2xvcnMgYmVmb3JlOnRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdJY29uOlsidGV4dC1kaW1tZWQgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDpub3QtZ3JvdXAtZGF0YS1kaXNhYmxlZDp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0sbG9hZGluZzp7dHJ1ZTp7aXRlbUxlYWRpbmdJY29uOiJhbmltYXRlLXNwaW4ifX19LGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQifX0sZmk9WyJpbm5lckhUTUwiXSxwaT1bImlubmVySFRNTCJdLGhpPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNvbW1hbmRQYWxldHRlIixwcm9wczpaZSh7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzZWxlY3RlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hpbGRyZW5JY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGJhY2s6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxiYWNrSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpbnB1dDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGdyb3Vwczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sZnVzZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHZpcnR1YWxpemU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSx2YWx1ZUtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkZXNjcmlwdGlvbiJ9LHByZXNlcnZlR3JvdXBPcmRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHNlYXJjaERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saGlnaGxpZ2h0T25Ib3Zlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHNlbGVjdGlvbkJlaGF2aW9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYnk6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHtzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxzZWFyY2hUZXJtTW9kaWZpZXJzOnt9fSksZW1pdHM6WmUoWyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsImVudHJ5Rm9jdXMiLCJsZWF2ZSIsInVwZGF0ZTpvcGVuIl0sWyJ1cGRhdGU6c2VhcmNoVGVybSJdKSxzZXR1cCh0LHtlbWl0OmV9KXtjb25zdCBhPXQscz1lLG49TGUoKSxpPXFlKHQsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSkse3Q6Y309YXQoKSxkPUVlKCkscj1PZSgiY29tbWFuZFBhbGV0dGUiLGEpLG09a3QoSmUoYSwiYXMiLCJkaXNhYmxlZCIsIm11bHRpcGxlIiwibW9kZWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImhpZ2hsaWdodE9uSG92ZXIiLCJieSIpLHMpLHA9TWUoKCk9PmEudmlydHVhbGl6ZT9QZSh0eXBlb2YgYS52aXJ0dWFsaXplPT0iYm9vbGVhbiI/e306YS52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6Rm4ocS52YWx1ZSwibWQiLGEuZGVzY3JpcHRpb25LZXksISFuWyJpdGVtLWRlc2NyaXB0aW9uIl0pfSk6ITEpLFtoLG9dPVhlKHtwcm9wczp7aXRlbTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LGdyb3VwOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saW5kZXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfX19KSx1PUYoKCk9PmRlKHtleHRlbmQ6ZGUoZGkpLC4uLmQudWk/LmNvbW1hbmRQYWxldHRlfHx7fX0pKHtzaXplOmEuc2l6ZSx2aXJ0dWFsaXplOiEhYS52aXJ0dWFsaXplfSkpLGc9RigoKT0+UGUoe30sYS5mdXNlLHtmdXNlT3B0aW9uczp7aWdub3JlTG9jYXRpb246ITAsdGhyZXNob2xkOi4xLGtleXM6W2EubGFiZWxLZXksInN1ZmZpeCJdfSxyZXN1bHRMaW1pdDoxMixtYXRjaEFsbFdoZW5TZWFyY2hFbXB0eTohMH0pKSx2PV8oW10pLHg9RigoKT0+di52YWx1ZVt2LnZhbHVlLmxlbmd0aC0xXT8ucGxhY2Vob2xkZXJ8fGEucGxhY2Vob2xkZXJ8fGMoImNvbW1hbmRQYWxldHRlLnBsYWNlaG9sZGVyIikpLEk9RigoKT0+di52YWx1ZT8ubGVuZ3RoP1t2LnZhbHVlW3YudmFsdWUubGVuZ3RoLTFdXTphLmdyb3VwcyksUz1GKCgpPT5JLnZhbHVlPy5maWx0ZXIoTz0+ISghTy5pZHx8Ty5pZ25vcmVGaWx0ZXIpKT8uZmxhdE1hcChPPT5PLml0ZW1zPy5tYXAoTj0+KHsuLi5OLGdyb3VwOk8uaWR9KSl8fFtdKXx8W10pLGI9YW4oaSwoKT0+YS5zZWFyY2hEZWxheSkse3Jlc3VsdHM6eX09bGkoYixTLGcpLGs9bm4oeSwxNiwhMCk7ZnVuY3Rpb24gQihPLE4pe2xldCBmPU47cmV0dXJuIE8/LnBvc3RGaWx0ZXImJnR5cGVvZiBPLnBvc3RGaWx0ZXI9PSJmdW5jdGlvbiImJihmPU8ucG9zdEZpbHRlcihiLnZhbHVlLGYpKSx7Li4uTyxpdGVtczpmLnNsaWNlKDAsZy52YWx1ZS5yZXN1bHRMaW1pdCkubWFwKEo9Pih7Li4uSixsYWJlbEh0bWw6R3QoSixiLnZhbHVlLGEubGFiZWxLZXkpLHN1ZmZpeEh0bWw6R3QoSixiLnZhbHVlLHZvaWQgMCxbYS5sYWJlbEtleV0pfSkpfX1jb25zdCAkPUYoKCk9Pntjb25zdCBPPUkudmFsdWUsTj1rLnZhbHVlLnJlZHVjZSgoQSxXKT0+e2NvbnN0e2l0ZW06b2UsbWF0Y2hlczpzZX09VztyZXR1cm4gb2UuZ3JvdXAmJihBW29lLmdyb3VwXXx8PVtdLEFbb2UuZ3JvdXBdPy5wdXNoKHsuLi5vZSxtYXRjaGVzOnNlfSkpLEF9LHt9KTtpZihhLnByZXNlcnZlR3JvdXBPcmRlcil7Y29uc3QgQT1bXTtmb3IoY29uc3QgVyBvZiBPfHxbXSl7aWYoIVcuaXRlbXM/Lmxlbmd0aCljb250aW51ZTtjb25zdCBvZT1XLmlnbm9yZUZpbHRlcj9XLml0ZW1zOk5bVy5pZF07aWYoIW9lPy5sZW5ndGgpY29udGludWU7Y29uc3Qgc2U9QihXLG9lKTtzZS5pdGVtcz8ubGVuZ3RoJiZBLnB1c2goc2UpfXJldHVybiBBfWNvbnN0IGY9T2JqZWN0LmVudHJpZXMoTikubWFwKChbQSxXXSk9Pntjb25zdCBvZT1PPy5maW5kKF9lPT5fZS5pZD09PUEpO2lmKCFvZSlyZXR1cm47Y29uc3Qgc2U9QihvZSxXKTtyZXR1cm4gc2UuaXRlbXM/Lmxlbmd0aD9zZTp2b2lkIDB9KS5maWx0ZXIoQT0+ISFBKTtyZXR1cm4oTz8ubWFwKChBLFcpPT4oey4uLkEsaW5kZXg6V30pKT8uZmlsdGVyKEE9PkEuaWdub3JlRmlsdGVyJiZBLml0ZW1zPy5sZW5ndGgpPy5tYXAoQT0+KHsuLi5CKEEsQS5pdGVtc3x8W10pLGluZGV4OkEuaW5kZXh9KSk/LmZpbHRlcihBPT5BLml0ZW1zPy5sZW5ndGgpfHxbXSkucmVkdWNlKChBLFcpPT4oQS5zcGxpY2UoVy5pbmRleCwwLFcpLEEpLFsuLi5mXSl9KSxxPUYoKCk9PiQudmFsdWUuZmxhdE1hcChPPT5PLml0ZW1zfHxbXSkpLGo9dGEoInJvb3RSZWYiKTtmdW5jdGlvbiBIKE8pe08uY2hpbGRyZW4/Lmxlbmd0aCYmKHYudmFsdWUucHVzaCh7aWQ6YGhpc3RvcnktJHt2LnZhbHVlLmxlbmd0aH1gLGxhYmVsOk8ubGFiZWwsc2xvdDpPLnNsb3QscGxhY2Vob2xkZXI6Ty5wbGFjZWhvbGRlcixpdGVtczpPLmNoaWxkcmVufSksaS52YWx1ZT0iIixqLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9ZnVuY3Rpb24gTSgpe3YudmFsdWUubGVuZ3RoJiYodi52YWx1ZS5wb3AoKSxpLnZhbHVlPSIiLGoudmFsdWU/LmhpZ2hsaWdodEZpcnN0SXRlbSgpKX1mdW5jdGlvbiBVKCl7aS52YWx1ZXx8TSgpfWZ1bmN0aW9uIGVlKE8sTil7Ti5jaGlsZHJlbj8ubGVuZ3RoPyhPLnByZXZlbnREZWZhdWx0KCksSChOKSk6Ti5vblNlbGVjdD8uKE8pfXJldHVybihPLE4pPT4odygpLHoocGUsbnVsbCxbRChsKGgpLG51bGwse2RlZmF1bHQ6Qygoe2l0ZW06ZixpbmRleDpKLGdyb3VwOkF9KT0+W0Qoc24sWShsKGxuKShmKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6Qygoe2FjdGl2ZTpXLC4uLm9lfSk9PltEKGwoVG4pLHt2YWx1ZTphLnZhbHVlS2V5P2woaGUpKGYsYS52YWx1ZUtleSk6bChRZSkoZixbIm1hdGNoZXMiLCJncm91cCIsIm9uU2VsZWN0IiwibGFiZWxIdG1sIiwic3VmZml4SHRtbCIsImNoaWxkcmVuIl0pLGRpc2FibGVkOmYuZGlzYWJsZWQsImFzLWNoaWxkIjoiIixvblNlbGVjdDpzZT0+ZWUoc2UsZil9LHtkZWZhdWx0OkMoKCk9PltEKG9uLFkob2UseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczp1LnZhbHVlLml0ZW0oe2NsYXNzOltsKHIpPy5pdGVtLGYudWk/Lml0ZW0sZi5jbGFzc10sYWN0aXZlOld8fGYuYWN0aXZlfSl9KSx7ZGVmYXVsdDpDKCgpPT5bUihPLiRzbG90cyxmLnNsb3R8fEE/LnNsb3R8fCJpdGVtIix7aXRlbTpmLGluZGV4OkosdWk6dS52YWx1ZX0sKCk9PltSKE8uJHNsb3RzLGYuc2xvdD9gJHtmLnNsb3R9LWxlYWRpbmdgOkE/LnNsb3Q/YCR7QS5zbG90fS1sZWFkaW5nYDoiaXRlbS1sZWFkaW5nIix7aXRlbTpmLGluZGV4OkosdWk6dS52YWx1ZX0sKCk9PltmLmxvYWRpbmc/KHcoKSxFKGtlLHtrZXk6MCxuYW1lOnQubG9hZGluZ0ljb258fGwoZCkudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpQKHUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbbChyKT8uaXRlbUxlYWRpbmdJY29uLGYudWk/Lml0ZW1MZWFkaW5nSWNvbl0sbG9hZGluZzohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpmLmljb24/KHcoKSxFKGtlLHtrZXk6MSxuYW1lOmYuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpQKHUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbbChyKT8uaXRlbUxlYWRpbmdJY29uLGYudWk/Lml0ZW1MZWFkaW5nSWNvbl0sYWN0aXZlOld8fGYuYWN0aXZlfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmYuYXZhdGFyPyh3KCksRShybixZKHtrZXk6MixzaXplOmYudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8bChyKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHx1LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxmLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczp1LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbbChyKT8uaXRlbUxlYWRpbmdBdmF0YXIsZi51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTpXfHxmLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6Zi5jaGlwPyh3KCksRSh1bixZKHtrZXk6MyxzaXplOmYudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGwocik/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fHUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGYuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6dS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltsKHIpPy5pdGVtTGVhZGluZ0NoaXAsZi51aT8uaXRlbUxlYWRpbmdDaGlwXSxhY3RpdmU6V3x8Zi5hY3RpdmV9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOksoIiIsITApXSksZi5wcmVmaXh8fGYubGFiZWxIdG1sfHxsKGhlKShmLGEubGFiZWxLZXkpfHxmLnN1ZmZpeEh0bWx8fGYuc3VmZml4fHxuW2Yuc2xvdD9gJHtmLnNsb3R9LWxhYmVsYDpBPy5zbG90P2Ake0Euc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fGwoaGUpKGYsYS5kZXNjcmlwdGlvbktleSl8fG5bZi5zbG90P2Ake2Yuc2xvdH0tZGVzY3JpcHRpb25gOkE/LnNsb3Q/YCR7QS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8odygpLHooInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOlAodS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2wocik/Lml0ZW1XcmFwcGVyLGYudWk/Lml0ZW1XcmFwcGVyXX0pKX0sW1goInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczpQKHUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbbChyKT8uaXRlbUxhYmVsLGYudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOld8fGYuYWN0aXZlfSkpfSxbUihPLiRzbG90cyxmLnNsb3Q/YCR7Zi5zbG90fS1sYWJlbGA6QT8uc2xvdD9gJHtBLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06ZixpbmRleDpKLHVpOnUudmFsdWV9LCgpPT5bZi5wcmVmaXg/KHcoKSx6KCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFByZWZpeCIsY2xhc3M6UCh1LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2wocik/Lml0ZW1MYWJlbFByZWZpeCxmLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSkpfSxjZShmLnByZWZpeCksMykpOksoIiIsITApLGYubGFiZWxIdG1sPyh3KCkseigic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczpQKHUudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2wocik/Lml0ZW1MYWJlbEJhc2UsZi51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOld8fGYuYWN0aXZlfSkpLGlubmVySFRNTDpmLmxhYmVsSHRtbH0sbnVsbCwxMCxmaSkpOih3KCkseigic3BhbiIse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczpQKHUudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2wocik/Lml0ZW1MYWJlbEJhc2UsZi51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOld8fGYuYWN0aXZlfSkpfSxjZShsKGhlKShmLGEubGFiZWxLZXkpKSwzKSksZi5zdWZmaXhIdG1sPyh3KCkseigic3BhbiIse2tleTozLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOlAodS52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltsKHIpPy5pdGVtTGFiZWxTdWZmaXgsZi51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6V3x8Zi5hY3RpdmV9KSksaW5uZXJIVE1MOmYuc3VmZml4SHRtbH0sbnVsbCwxMCxwaSkpOmYuc3VmZml4Pyh3KCkseigic3BhbiIse2tleTo0LCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOlAodS52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltsKHIpPy5pdGVtTGFiZWxTdWZmaXgsZi51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6V3x8Zi5hY3RpdmV9KSl9LGNlKGYuc3VmZml4KSwzKSk6SygiIiwhMCldKV0sMiksbChoZSkoZixhLmRlc2NyaXB0aW9uS2V5KXx8bltmLnNsb3Q/YCR7Zi5zbG90fS1kZXNjcmlwdGlvbmA6QT8uc2xvdD9gJHtBLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyh3KCkseigic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOlAodS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltsKHIpPy5pdGVtRGVzY3JpcHRpb24sZi51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0sW1IoTy4kc2xvdHMsZi5zbG90P2Ake2Yuc2xvdH0tZGVzY3JpcHRpb25gOkE/LnNsb3Q/YCR7QS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmYsaW5kZXg6Six1aTp1LnZhbHVlfSwoKT0+W0FlKGNlKGwoaGUpKGYsYS5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTpLKCIiLCEwKV0sMikpOksoIiIsITApLFgoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczpQKHUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbbChyKT8uaXRlbVRyYWlsaW5nLGYudWk/Lml0ZW1UcmFpbGluZ119KSl9LFtSKE8uJHNsb3RzLGYuc2xvdD9gJHtmLnNsb3R9LXRyYWlsaW5nYDpBPy5zbG90P2Ake0Euc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTpmLGluZGV4OkosdWk6dS52YWx1ZX0sKCk9PltmLmNoaWxkcmVuJiZmLmNoaWxkcmVuLmxlbmd0aD4wPyh3KCksRShrZSx7a2V5OjAsbmFtZTp0LmNoaWxkcmVuSWNvbnx8bChkKS51aS5pY29ucy5jaGV2cm9uUmlnaHQsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOlAodS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbbChyKT8uaXRlbVRyYWlsaW5nSWNvbixmLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpmLmtiZHM/Lmxlbmd0aD8odygpLHooInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nS2JkcyIsY2xhc3M6UCh1LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltsKHIpPy5pdGVtVHJhaWxpbmdLYmRzLGYudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSkpfSxbKHcoITApLHoocGUsbnVsbCxnZShmLmtiZHMsKHNlLF9lKT0+KHcoKSxFKGxhLFkoe2tleTpfZSxzaXplOmYudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsKHIpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8dS52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sdHlwZW9mIHNlPT0ic3RyaW5nIj97dmFsdWU6c2V9OnNlKSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6QT8uaGlnaGxpZ2h0ZWRJY29uPyh3KCksRShrZSx7a2V5OjIsbmFtZTpBLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczpQKHUudmFsdWUuaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uKHtjbGFzczpbbChyKT8uaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uLGYudWk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbl19KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6SygiIiwhMCldKSxmLmNoaWxkcmVuPy5sZW5ndGg/SygiIiwhMCk6KHcoKSxFKGwoTW4pLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpDKCgpPT5bRChrZSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8bChkKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6UCh1LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltsKHIpPy5pdGVtVHJhaWxpbmdJY29uLGYudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpKV0sMildKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsidmFsdWUiLCJkaXNhYmxlZCIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0pLF86M30pLEQobCh6biksWSh7Li4ubChtKSwuLi5PLiRhdHRyc30se3JlZl9rZXk6InJvb3RSZWYiLHJlZjpqLCJzZWxlY3Rpb24tYmVoYXZpb3IiOnQuc2VsZWN0aW9uQmVoYXZpb3IsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnUudmFsdWUucm9vdCh7Y2xhc3M6W2wocik/LnJvb3QsYS5jbGFzc119KX0pLHtkZWZhdWx0OkMoKCk9Plt0LmlucHV0Pyh3KCksRShsKExuKSx7a2V5OjAsbW9kZWxWYWx1ZTppLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpOWzFdfHwoTlsxXT1mPT5pLnZhbHVlPWYpLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OkMoKCk9PltEKCR0LFkoe3ZhcmlhbnQ6Im5vbmUiLHNpemU6dC5zaXplfSx0eXBlb2YgYS5pbnB1dD09Im9iamVjdCI/YS5pbnB1dDp7fSx7cGxhY2Vob2xkZXI6eC52YWx1ZSxhdXRvZm9jdXM6dC5hdXRvZm9jdXMsbG9hZGluZzp0LmxvYWRpbmcsImxvYWRpbmctaWNvbiI6dC5sb2FkaW5nSWNvbiwidHJhaWxpbmctaWNvbiI6dC50cmFpbGluZ0ljb24saWNvbjp0Lmljb258fGwoZCkudWkuaWNvbnMuc2VhcmNoLCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6dS52YWx1ZS5pbnB1dCh7Y2xhc3M6bChyKT8uaW5wdXR9KSxvbktleWRvd246YWEoVSxbImJhY2tzcGFjZSJdKX0pLHh0KHtfOjJ9LFt2LnZhbHVlPy5sZW5ndGgmJih0LmJhY2t8fG4uYmFjayk/e25hbWU6ImxlYWRpbmciLGZuOkMoKCk9PltSKE8uJHNsb3RzLCJiYWNrIix7dWk6dS52YWx1ZX0sKCk9PltEKENlLFkoe3NpemU6dC5zaXplLGljb246dC5iYWNrSWNvbnx8bChkKS51aS5pY29ucy5hcnJvd0xlZnQsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjpsKGMpKCJjb21tYW5kUGFsZXR0ZS5iYWNrIil9LHR5cGVvZiB0LmJhY2s9PSJvYmplY3QiP3QuYmFjazp7fSx7ImRhdGEtc2xvdCI6ImJhY2siLGNsYXNzOnUudmFsdWUuYmFjayh7Y2xhc3M6bChyKT8uYmFja30pLG9uQ2xpY2s6TX0pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKV0pXSksa2V5OiIwIn06dm9pZCAwLHQuY2xvc2V8fG4uY2xvc2U/e25hbWU6InRyYWlsaW5nIixmbjpDKCgpPT5bUihPLiRzbG90cywiY2xvc2UiLHt1aTp1LnZhbHVlfSwoKT0+W3QuY2xvc2U/KHcoKSxFKENlLFkoe2tleTowLHNpemU6dC5zaXplLGljb246dC5jbG9zZUljb258fGwoZCkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6bChjKSgiY29tbWFuZFBhbGV0dGUuY2xvc2UiKX0sdHlwZW9mIHQuY2xvc2U9PSJvYmplY3QiP3QuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6dS52YWx1ZS5jbG9zZSh7Y2xhc3M6bChyKT8uY2xvc2V9KSxvbkNsaWNrOk5bMF18fChOWzBdPWY9PnMoInVwZGF0ZTpvcGVuIiwhMSkpfSksbnVsbCwxNixbInNpemUiLCJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTpLKCIiLCEwKV0pXSksa2V5OiIxIn06dm9pZCAwXSksMTA0MCxbInNpemUiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImxvYWRpbmciLCJsb2FkaW5nLWljb24iLCJ0cmFpbGluZy1pY29uIiwiaWNvbiIsImNsYXNzIl0pXSksXzozfSw4LFsibW9kZWxWYWx1ZSJdKSk6SygiIiwhMCksRChsKEVuKSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOlAodS52YWx1ZS5jb250ZW50KHtjbGFzczpsKHIpPy5jb250ZW50fSkpfSx7ZGVmYXVsdDpDKCgpPT5bJC52YWx1ZT8ubGVuZ3RoPyh3KCkseigiZGl2Iix7a2V5OjAscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOlAodS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6bChyKT8udmlld3BvcnR9KSl9LFt0LnZpcnR1YWxpemU/KHcoKSxFKGwoT24pLFkoe2tleTowLG9wdGlvbnM6cS52YWx1ZSwidGV4dC1jb250ZW50IjpmPT5sKGhlKShmLGEubGFiZWxLZXkpfSxwLnZhbHVlKSx7ZGVmYXVsdDpDKCh7b3B0aW9uOmYsdmlydHVhbEl0ZW06Sn0pPT5bRChsKG8pLHtpdGVtOmYsaW5kZXg6Si5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSkpOih3KCEwKSx6KHBlLHtrZXk6MX0sZ2UoJC52YWx1ZSxmPT4odygpLEUobChfbikse2tleTpgZ3JvdXAtJHtmLmlkfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpQKHUudmFsdWUuZ3JvdXAoe2NsYXNzOmwocik/Lmdyb3VwfSkpfSx7ZGVmYXVsdDpDKCgpPT5bbChoZSkoZixhLmxhYmVsS2V5KXx8bltmLnNsb3Q/YCR7Zi5zbG90fS1ncm91cC1sYWJlbGA6Imdyb3VwLWxhYmVsIl0/KHcoKSxFKGwocW4pLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlAodS52YWx1ZS5sYWJlbCh7Y2xhc3M6bChyKT8ubGFiZWx9KSl9LHtkZWZhdWx0OkMoKCk9PltSKE8uJHNsb3RzLGYuc2xvdD9gJHtmLnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiLHtncm91cDpmLGxhYmVsOmwoaGUpKGYsYS5sYWJlbEtleSksdWk6dS52YWx1ZX0sKCk9PltBZShjZShsKGhlKShmLGEubGFiZWxLZXkpKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOksoIiIsITApLCh3KCEwKSx6KHBlLG51bGwsZ2UoZi5pdGVtcywoSixBKT0+KHcoKSxFKGwobykse2tleTpgZ3JvdXAtJHtmLmlkfS0ke0F9YCxpdGVtOkosaW5kZXg6QSxncm91cDpmfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJncm91cCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOih3KCkseigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpQKHUudmFsdWUuZW1wdHkoe2NsYXNzOmwocik/LmVtcHR5fSkpfSxbUihPLiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOmkudmFsdWV9LCgpPT5bQWUoY2UoaS52YWx1ZT9sKGMpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTppLnZhbHVlfSk6bChjKSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpLDEpXSldLDIpKV0pLF86M30sOCxbImNsYXNzIl0pLG4uZm9vdGVyPyh3KCkseigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6UCh1LnZhbHVlLmZvb3Rlcih7Y2xhc3M6bChyKT8uZm9vdGVyfSkpfSxbUihPLiRzbG90cywiZm9vdGVyIix7dWk6dS52YWx1ZX0pXSwyKSk6SygiIiwhMCldKSxfOjN9LDE2LFsic2VsZWN0aW9uLWJlaGF2aW9yIiwiY2xhc3MiXSldLDY0KSl9fSksbWk9e3Nsb3RzOnttb2RhbDoiIixpbnB1dDoiIn0sdmFyaWFudHM6e2Z1bGxzY3JlZW46e2ZhbHNlOnttb2RhbDoic206bWF4LXctM3hsIGgtZnVsbCBzbTpoLVsyOHJlbV0ifX0sc2l6ZTp7eHM6e30sc206e30sbWQ6e30sbGc6e30seGw6e319fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIn19LE10PSgpPT5jbigiY29sb3ItbW9kZSIpLnZhbHVlLHZpPS9eW14tXSsuKi0uKlteLV0rJC8sZ2k9L15bXl9dKy4qXy4qW15fXSskLyxZdD1bImFycm93bGVmdCIsImFycm93cmlnaHQiLCJhcnJvd3VwIiwiYXJyb3dyaWdodCIsInRhYiIsImVzY2FwZSIsImVudGVyIiwiYmFja3NwYWNlIl07ZnVuY3Rpb24gY3QodCl7cmV0dXJuL15bYS16XSQvaS50ZXN0KHQpP2BLZXkke3QudG9VcHBlckNhc2UoKX1gOi9eXGQkLy50ZXN0KHQpP2BEaWdpdCR7dH1gOi9eZlxkKyQvaS50ZXN0KHQpP3QudG9VcHBlckNhc2UoKTp7c3BhY2U6IlNwYWNlIixlbnRlcjoiRW50ZXIiLGVzY2FwZToiRXNjYXBlIix0YWI6IlRhYiIsYmFja3NwYWNlOiJCYWNrc3BhY2UiLGRlbGV0ZToiRGVsZXRlIixhcnJvd3VwOiJBcnJvd1VwIixhcnJvd2Rvd246IkFycm93RG93biIsYXJyb3dsZWZ0OiJBcnJvd0xlZnQiLGFycm93cmlnaHQ6IkFycm93UmlnaHQifVt0LnRvTG93ZXJDYXNlKCldfHx0fWZ1bmN0aW9uIHlpKHQsZT17fSl7Y29uc3QgYT1fKFtdKSxzPSgpPT57YS52YWx1ZS5zcGxpY2UoMCxhLnZhbHVlLmxlbmd0aCl9LG49ZG4ocyxlLmNoYWluRGVsYXk/PzgwMCkse21hY09TOml9PUFuKCksYz1wbigpLGQ9ZS5sYXlvdXRJbmRlcGVuZGVudD8/ITEscj1ZdC5tYXAobz0+Y3QobykpLG09bz0+e2lmKCFvLmtleSlyZXR1cm47Y29uc3QgdT1kPy9eS2V5W0EtWl0kL2kudGVzdChvLmNvZGUpOi9eW2Etel17MX0kL2kudGVzdChvLmtleSksZz1kP3IuaW5jbHVkZXMoby5jb2RlKTpZdC5pbmNsdWRlcyhvLmtleS50b0xvd2VyQ2FzZSgpKTtsZXQgdjtpZihhLnZhbHVlLnB1c2goZD9vLmNvZGU6by5rZXkpLGEudmFsdWUubGVuZ3RoPj0yKXt2PWEudmFsdWUuc2xpY2UoLTIpLmpvaW4oIi0iKTtmb3IoY29uc3QgeCBvZiBoLnZhbHVlLmZpbHRlcihJPT5JLmNoYWluZWQpKWlmKHgua2V5PT09dil7eC5lbmFibGVkJiYoby5wcmV2ZW50RGVmYXVsdCgpLHguaGFuZGxlcihvKSkscygpO3JldHVybn19Zm9yKGNvbnN0IHggb2YgaC52YWx1ZS5maWx0ZXIoST0+IUkuY2hhaW5lZCkpe2lmKGQpe2lmKG8uY29kZSE9PXgua2V5KWNvbnRpbnVlfWVsc2UgaWYoby5rZXkudG9Mb3dlckNhc2UoKSE9PXgua2V5KWNvbnRpbnVlO2lmKG8ubWV0YUtleT09PXgubWV0YUtleSYmby5jdHJsS2V5PT09eC5jdHJsS2V5JiZvLmFsdEtleT09PXguYWx0S2V5JiYhKCh1fHxnfHx4LnNoaWZ0S2V5fHxvLnNoaWZ0S2V5JiYoby5tZXRhS2V5fHxvLmN0cmxLZXkpKSYmby5zaGlmdEtleSE9PXguc2hpZnRLZXkpKXt4LmVuYWJsZWQmJihvLnByZXZlbnREZWZhdWx0KCkseC5oYW5kbGVyKG8pKSxzKCk7cmV0dXJufX1uKCl9LHA9RigoKT0+e2NvbnN0IG89Yy52YWx1ZT8udGFnTmFtZSx1PWMudmFsdWU/LmNvbnRlbnRFZGl0YWJsZTtyZXR1cm4gbz09PSJJTlBVVCJ8fG89PT0iVEVYVEFSRUEifHx1PT09InRydWUifHx1PT09InBsYWludGV4dC1vbmx5Ij9jLnZhbHVlPy5uYW1lfHwhMDohMX0pLGg9RigoKT0+T2JqZWN0LmVudHJpZXModmUodCkpLm1hcCgoW28sdV0pPT57aWYoIXUpcmV0dXJuIG51bGw7bGV0IGc7by5pbmNsdWRlcygiLSIpJiZvIT09Ii0iJiYhby5pbmNsdWRlcygiXyIpJiZvLm1hdGNoKHZpKT8ubGVuZ3RoLG8uaW5jbHVkZXMoIl8iKSYmbyE9PSJfIiYmby5tYXRjaChnaSk/Lmxlbmd0aDtjb25zdCB2PW8uaW5jbHVkZXMoIi0iKSYmbyE9PSItIiYmIW8uaW5jbHVkZXMoIl8iKTtpZih2KWQ/Zz17a2V5Om8uc3BsaXQoIi0iKS5tYXAoUz0+Y3QoUykpLmpvaW4oIi0iKSxtZXRhS2V5OiExLGN0cmxLZXk6ITEsc2hpZnRLZXk6ITEsYWx0S2V5OiExfTpnPXtrZXk6by50b0xvd2VyQ2FzZSgpLG1ldGFLZXk6ITEsY3RybEtleTohMSxzaGlmdEtleTohMSxhbHRLZXk6ITF9O2Vsc2V7Y29uc3QgST1vLnRvTG93ZXJDYXNlKCkuc3BsaXQoIl8iKS5tYXAoYj0+Yik7bGV0IFM9SS5maWx0ZXIoYj0+IVsibWV0YSIsImNvbW1hbmQiLCJjdHJsIiwic2hpZnQiLCJhbHQiLCJvcHRpb24iXS5pbmNsdWRlcyhiKSkuam9pbigiXyIpO2QmJihTPWN0KFMpKSxnPXtrZXk6UyxtZXRhS2V5OkkuaW5jbHVkZXMoIm1ldGEiKXx8SS5pbmNsdWRlcygiY29tbWFuZCIpLGN0cmxLZXk6SS5pbmNsdWRlcygiY3RybCIpLHNoaWZ0S2V5OkkuaW5jbHVkZXMoInNoaWZ0IiksYWx0S2V5OkkuaW5jbHVkZXMoImFsdCIpfHxJLmluY2x1ZGVzKCJvcHRpb24iKX19aWYoZy5jaGFpbmVkPXYsIWkudmFsdWUmJmcubWV0YUtleSYmIWcuY3RybEtleSYmKGcubWV0YUtleT0hMSxnLmN0cmxLZXk9ITApLHR5cGVvZiB1PT0iZnVuY3Rpb24iP2cuaGFuZGxlcj11OnR5cGVvZiB1PT0ib2JqZWN0IiYmKGc9ey4uLmcsaGFuZGxlcjp1LmhhbmRsZXJ9KSwhZy5oYW5kbGVyKXJldHVybiBudWxsO2xldCB4PSEwO3JldHVybiB1LnVzaW5nSW5wdXQ/dHlwZW9mIHUudXNpbmdJbnB1dD09InN0cmluZyImJih4PXAudmFsdWU9PT11LnVzaW5nSW5wdXQpOng9IXAudmFsdWUsZy5lbmFibGVkPXgsZ30pLmZpbHRlcihCb29sZWFuKSk7cmV0dXJuIGZuKCJrZXlkb3duIixtKX1jb25zdCBiaT17X19uYW1lOiJVRGFzaGJvYXJkU2VhcmNoIixwcm9wczpaZSh7c2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbG9zZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHNob3J0Y3V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJtZXRhX2sifSxzZWFyY2hEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMDB9LGNvbG9yTW9kZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG92ZXJsYXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMH0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsb3NlSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxncm91cHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGZ1c2U6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0se29wZW46e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxvcGVuTW9kaWZpZXJzOnt9LHNlYXJjaFRlcm06e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHNlYXJjaFRlcm1Nb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpvcGVuIiwidXBkYXRlOnNlYXJjaFRlcm0iXSxzZXR1cCh0LHtleHBvc2U6ZX0pe2NvbnN0IGE9dCxzPUxlKCksbj1xZSh0LCJvcGVuIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSxpPXFlKHQsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSk7ZnQoImRhc2hib2FyZDpzZWFyY2g6dG9nZ2xlIiwoKT0+e24udmFsdWU9IW4udmFsdWV9KTtjb25zdHt0OmN9PWF0KCksZD1NdCgpLHI9RWUoKSxtPU9lKCJkYXNoYm9hcmRTZWFyY2giLGEpLHA9ZHQoSmUoYSwic2l6ZSIsImljb24iLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImxvYWRpbmciLCJsb2FkaW5nSWNvbiIsImNsb3NlIiwiY2xvc2VJY29uIiwic2VhcmNoRGVsYXkiKSksaD1kdChKZShhLCJvdmVybGF5IiwidHJhbnNpdGlvbiIsImNvbnRlbnQiLCJkaXNtaXNzaWJsZSIsImZ1bGxzY3JlZW4iLCJtb2RhbCIsInBvcnRhbCIpKSxvPSgpPT5RZShzLFsiY29udGVudCJdKSx1PUYoKCk9PlBlKHt9LGEuZnVzZSx7ZnVzZU9wdGlvbnM6e319KSksZz1GKCgpPT5kZSh7ZXh0ZW5kOmRlKG1pKSwuLi5yLnVpPy5kYXNoYm9hcmRTZWFyY2h8fHt9fSkoe3NpemU6YS5zaXplLGZ1bGxzY3JlZW46YS5mdWxsc2NyZWVufSkpLHY9RigoKT0+e2NvbnN0IFM9W107cmV0dXJuIFMucHVzaCguLi5hLmdyb3Vwc3x8W10pLGEuY29sb3JNb2RlJiYhZD8uZm9yY2VkJiZTLnB1c2goe2lkOiJ0aGVtZSIsbGFiZWw6YygiZGFzaGJvYXJkU2VhcmNoLnRoZW1lIiksaXRlbXM6W3tsYWJlbDpjKCJjb2xvck1vZGUuc3lzdGVtIiksaWNvbjpyLnVpLmljb25zLnN5c3RlbSxhY3RpdmU6ZC5wcmVmZXJlbmNlPT09InN5c3RlbSIsb25TZWxlY3Q6KCk9PntkLnByZWZlcmVuY2U9InN5c3RlbSJ9fSx7bGFiZWw6YygiY29sb3JNb2RlLmxpZ2h0IiksaWNvbjpyLnVpLmljb25zLmxpZ2h0LGFjdGl2ZTpkLnByZWZlcmVuY2U9PT0ibGlnaHQiLG9uU2VsZWN0OigpPT57ZC5wcmVmZXJlbmNlPSJsaWdodCJ9fSx7bGFiZWw6YygiY29sb3JNb2RlLmRhcmsiKSxpY29uOnIudWkuaWNvbnMuZGFyayxhY3RpdmU6ZC5wcmVmZXJlbmNlPT09ImRhcmsiLG9uU2VsZWN0OigpPT57ZC5wcmVmZXJlbmNlPSJkYXJrIn19XX0pLFN9KSx4PXRhKCJjb21tYW5kUGFsZXR0ZVJlZiIpO2Z1bmN0aW9uIEkoUyl7Uy5kaXNhYmxlZHx8KG4udmFsdWU9ITEsaS52YWx1ZT0iIil9cmV0dXJuIHlpKHtbYS5zaG9ydGN1dF06e3VzaW5nSW5wdXQ6ITAsaGFuZGxlcjooKT0+bi52YWx1ZT0hbi52YWx1ZX19KSxlKHtjb21tYW5kUGFsZXR0ZVJlZjp4fSksKFMsYik9Pih3KCksRShBdCxZKHtvcGVuOm4udmFsdWUsIm9uVXBkYXRlOm9wZW4iOmJbMl18fChiWzJdPXk9Pm4udmFsdWU9eSksdGl0bGU6dC50aXRsZXx8bChjKSgiZGFzaGJvYXJkU2VhcmNoLnRpdGxlIiksZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvbnx8bChjKSgiZGFzaGJvYXJkU2VhcmNoLmRlc2NyaXB0aW9uIil9LGwoaCkseyJkYXRhLXNsb3QiOiJtb2RhbCIsY2xhc3M6Zy52YWx1ZS5tb2RhbCh7Y2xhc3M6W2wobSk/Lm1vZGFsLGEuY2xhc3NdfSl9KSx7Y29udGVudDpDKHk9PltSKFMuJHNsb3RzLCJjb250ZW50IixEZShUZSh5KSksKCk9PltEKGhpLFkoe3JlZl9rZXk6ImNvbW1hbmRQYWxldHRlUmVmIixyZWY6eCwic2VhcmNoLXRlcm0iOmkudmFsdWUsIm9uVXBkYXRlOnNlYXJjaFRlcm0iOmJbMF18fChiWzBdPWs9PmkudmFsdWU9ayl9LGwocCkse2dyb3Vwczp2LnZhbHVlLGZ1c2U6dS52YWx1ZSxpbnB1dDp7Zml4ZWQ6ITB9LHVpOmwoSnQpKGwoUWUpKGcudmFsdWUsWyJtb2RhbCJdKSxsKG0pKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6SSwib25VcGRhdGU6b3BlbiI6YlsxXXx8KGJbMV09az0+bi52YWx1ZT1rKX0pLHh0KHtfOjJ9LFtnZShvKCksKGssQik9Pih7bmFtZTpCLGZuOkMoJD0+W1IoUy4kc2xvdHMsQixEZShUZSgkKSkpXSl9KSldKSwxMDQwLFsic2VhcmNoLXRlcm0iLCJncm91cHMiLCJmdXNlIiwidWkiXSldKV0pLF86M30sMTYsWyJvcGVuIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImNsYXNzIl0pKX19LHdpPXtiYXNlOiJmaXhlZCBpbnNldC0wIGZsZXggb3ZlcmZsb3ctaGlkZGVuIn0seGk9e19fbmFtZToiVURhc2hib2FyZEdyb3VwIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxzdG9yYWdlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJjb29raWUifSxzdG9yYWdlS2V5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJkYXNoYm9hcmQifSxwZXJzaXN0ZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sdW5pdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiJSJ9fSxzZXR1cCh0KXtjb25zdCBlPXQsYT1YdCgpLHM9RWUoKSxuPU9lKCJkYXNoYm9hcmRHcm91cCIsZSksaT1GKCgpPT5kZSh7ZXh0ZW5kOmRlKHdpKSwuLi5zLnVpPy5kYXNoYm9hcmRHcm91cHx8e319KSksYz1fKCExKSxkPV8oITEpO3JldHVybiBrbih7c3RvcmFnZTplLnN0b3JhZ2Usc3RvcmFnZUtleTplLnN0b3JhZ2VLZXkscGVyc2lzdGVudDplLnBlcnNpc3RlbnQsdW5pdDplLnVuaXQsc2lkZWJhck9wZW46Yyx0b2dnbGVTaWRlYmFyOigpPT57YS5ob29rcy5jYWxsSG9vaygiZGFzaGJvYXJkOnNpZGViYXI6dG9nZ2xlIil9LHNpZGViYXJDb2xsYXBzZWQ6ZCxjb2xsYXBzZVNpZGViYXI6cj0+e2EuaG9va3MuY2FsbEhvb2soImRhc2hib2FyZDpzaWRlYmFyOmNvbGxhcHNlIixyKX0sdG9nZ2xlU2VhcmNoOigpPT57YS5ob29rcy5jYWxsSG9vaygiZGFzaGJvYXJkOnNlYXJjaDp0b2dnbGUiKX19KSwocixtKT0+KHcoKSxFKGwoUXQpLHthczp0LmFzLGNsYXNzOlAoaS52YWx1ZSh7Y2xhc3M6W2wobik/LmJhc2UsZS5jbGFzc119KSl9LHtkZWZhdWx0OkMoKCk9PltSKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19LFNpPXtrZXk6MH0sa2k9e2NsYXNzOiJwLTIgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQifSxJaT1bImRpc2FibGVkIiwib25DbGljayJdLEFpPXtjbGFzczoidHJ1bmNhdGUifSwkaT17a2V5OjAsY2xhc3M6InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCJ9LEJpPXtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sQ2k9e2tleToyLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0yIHB5LTIiLCJkYXRhLXRlc3RpZCI6ImJyYW5kLW1hcmsifSxEaT17a2V5OjAsY2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LFRpPXtrZXk6MSxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiBweS0yIiwiZGF0YS10ZXN0aWQiOiJicmFuZC1tYXJrIn0sTWk9e2tleTowLGNsYXNzOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSxMaT1tZSh7X19uYW1lOiJJbXBlcnNvbmF0ZU1lbnUiLHByb3BzOntjb2xsYXBzZWQ6e3R5cGU6Qm9vbGVhbn19LHNldHVwKHQpe2NvbnN0IGU9aG4oKSxhPW50KCkscz1zdCgpLG49RigoKT0+KGEuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10pLmluY2x1ZGVzKCJ1c2VyOmltcGVyc29uYXRlIil8fGEuaXNJbXBlcnNvbmF0aW5nKSxpPUYoKCk9PnNhKGEuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6cmVhZCIpKSxjPUYoKCk9Pm4udmFsdWV8fGkudmFsdWUpLGQ9XyghMSkscj1fKG51bGwpLG09XyghMSkse2l0ZW1zOnAscTpoLGhhc01vcmU6byxsb2FkaW5nOnUsbG9hZE1vcmU6ZyxyZXNldDp2fT11YShrPT5lLmZldGNoSW1wZXJzb25hdGlvbkNhbmRpZGF0ZXMoaykudGhlbihCPT5CKSx7aW1tZWRpYXRlOiExfSk7bmEocixnLHtkaXN0YW5jZTo4MCxjYW5Mb2FkTW9yZTooKT0+by52YWx1ZX0pLHVlKGQsaz0+e2smJih2KCksZygpKX0pO2FzeW5jIGZ1bmN0aW9uIHgoayxCKXttLnZhbHVlPSEwLGQudmFsdWU9ITE7dHJ5e2F3YWl0IGEuc3RhcnRJbXBlcnNvbmF0aW9uKGspLHMuYWRkKHt0aXRsZTpgTm93IGltcGVyc29uYXRpbmcgJHtCfWAsY29sb3I6InN1Y2Nlc3MifSksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfWNhdGNoKCQpe2NvbnN0IHE9JDtzLmFkZCh7dGl0bGU6IkltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjpxPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz9xPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7bS52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gSSgpe20udmFsdWU9ITA7dHJ5e2F3YWl0IGEuc3RvcEltcGVyc29uYXRpb24oKSxzLmFkZCh7dGl0bGU6IlN0b3BwZWQgaW1wZXJzb25hdGlvbiIsY29sb3I6InN1Y2Nlc3MifSksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfWNhdGNoKGspe2NvbnN0IEI9aztzLmFkZCh7dGl0bGU6IlN0b3AgaW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOkI/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P0I/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXttLnZhbHVlPSExfX1jb25zdCBTPUYoKCk9PmEuaXNJbXBlcnNvbmF0aW5nP2EuY3VycmVudFVzZXI/Lm5hbWU/P2EuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWw6YS5jdXJyZW50VXNlcj8ubmFtZT8/YS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbD8/Imd1ZXN0IiksYj1GKCgpPT5hLmlzSW1wZXJzb25hdGluZz8iaS1sdWNpZGUtdXNlci1jb2ciOiJpLWx1Y2lkZS1jdWJvaWQiKSx5PUYoKCk9Pltbe2xhYmVsOmBSZWFsIHVzZXI6ICR7YS5pbXBlcnNvbmF0b3I/Lm5hbWU/P2EuaW1wZXJzb25hdG9yPy5wcmltYXJ5X2VtYWlsfWAsaWNvbjoiaS1sdWNpZGUtc2hpZWxkIixkaXNhYmxlZDohMH0se2xhYmVsOiJTdG9wIGltcGVyc29uYXRpbmciLGljb246ImktbHVjaWRlLWxvZy1vdXQiLGNvbG9yOiJ3YXJuaW5nIixvblNlbGVjdDooKT0+e0koKX19XV0pO3JldHVybihrLEIpPT57Y29uc3QgJD1DZSxxPXJhLGo9JHQsSD1rZSxNPW9hO3JldHVybiBsKGMpPyh3KCkseigiZGl2IixTaSxbbChhKS5pc0ltcGVyc29uYXRpbmc/KHcoKSxFKHEse2tleTowLGl0ZW1zOmwoeSksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn0sdWk6e2NvbnRlbnQ6dC5jb2xsYXBzZWQ/InctNTYiOiJ3LSgtLXJla2EtZHJvcGRvd24tbWVudS10cmlnZ2VyLXdpZHRoKSJ9fSx7ZGVmYXVsdDpDKCgpPT5bRCgkLHtpY29uOmwoYiksbGFiZWw6dC5jb2xsYXBzZWQ/dm9pZCAwOmwoUyksInRyYWlsaW5nLWljb24iOnQuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGJsb2NrOiIiLHNxdWFyZTp0LmNvbGxhcHNlZCxjbGFzczoiZGF0YS1bc3RhdGU9b3Blbl06YmctZWxldmF0ZWQgcHktMiIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0ZS1tZW51LXRyaWdnZXIifSxudWxsLDgsWyJpY29uIiwibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXSksXzoxfSw4LFsiaXRlbXMiLCJ1aSJdKSk6bChuKT8odygpLEUoTSx7a2V5OjEsb3BlbjpsKGQpLCJvblVwZGF0ZTpvcGVuIjpCWzFdfHwoQlsxXT1VPT4kZShkKT9kLnZhbHVlPVU6bnVsbCksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn19LHtjb250ZW50OkMoKCk9PltYKCJkaXYiLHtjbGFzczpQKCh0LmNvbGxhcHNlZCwidy01NiIpKX0sW1goImRpdiIsa2ksW0Qoaix7bW9kZWxWYWx1ZTpsKGgpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpCWzBdfHwoQlswXT1VPT4kZShoKT9oLnZhbHVlPVU6bnVsbCksaWNvbjoiaS1sdWNpZGUtc2VhcmNoIixwbGFjZWhvbGRlcjoiU2VhcmNoIHVzZXJz4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksWCgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjpyLGNsYXNzOiJtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8gcHktMSJ9LFsodyghMCkseihwZSxudWxsLGdlKGwocCksVT0+KHcoKSx6KCJidXR0b24iLHtrZXk6VS5pZCx0eXBlOiJidXR0b24iLGRpc2FibGVkOiEhVS5pc19zdXNwZW5kZWR8fGwobSksY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCIsb25DbGljazplZT0+eChVLmlkLFUubmFtZT8/VS5wcmltYXJ5X2VtYWlsKX0sW0QoSCx7bmFtZToiaS1sdWNpZGUtdXNlciIsY2xhc3M6InNpemUtNCBzaHJpbmstMCJ9KSxYKCJzcGFuIixBaSxjZShVLm5hbWU/P1UudXNlcm5hbWU/P1UucHJpbWFyeV9lbWFpbCksMSldLDgsSWkpKSksMTI4KSksbCh1KT8odygpLHooImRpdiIsJGksIiBMb2FkaW5n4oCmICIpKTpsKHApLmxlbmd0aD09PTA/KHcoKSx6KCJkaXYiLEJpLCIgTm8gdXNlcnMgYXZhaWxhYmxlLiAiKSk6SygiIiwhMCldLDUxMildLDIpXSksZGVmYXVsdDpDKCgpPT5bRCgkLHtpY29uOmwoYiksbGFiZWw6dC5jb2xsYXBzZWQ/dm9pZCAwOmwoUyksInRyYWlsaW5nLWljb24iOnQuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixibG9jazoiIixzcXVhcmU6dC5jb2xsYXBzZWQsY2xhc3M6ImRhdGEtW3N0YXRlPW9wZW5dOmJnLWVsZXZhdGVkIHB5LTIiLHVpOnt0cmFpbGluZ0ljb246InRleHQtZGltbWVkIn0sImRhdGEtdGVzdGlkIjoiaW1wZXJzb25hdGUtbWVudS10cmlnZ2VyIn0sbnVsbCw4LFsiaWNvbiIsImxhYmVsIiwidHJhaWxpbmctaWNvbiIsInNxdWFyZSJdKV0pLF86MX0sOCxbIm9wZW4iXSkpOih3KCkseigiZGl2IixDaSxbRChILHtuYW1lOiJpLWx1Y2lkZS1jdWJvaWQiLGNsYXNzOiJzaXplLTUgdGV4dC1wcmltYXJ5In0pLHQuY29sbGFwc2VkP0soIiIsITApOih3KCkseigic3BhbiIsRGksIk51eHQgVGVtcGxhdGUiKSldKSldKSk6KHcoKSx6KCJkaXYiLFRpLFtEKEgse25hbWU6ImktbHVjaWRlLWN1Ym9pZCIsY2xhc3M6InNpemUtNSB0ZXh0LXByaW1hcnkifSksdC5jb2xsYXBzZWQ/SygiIiwhMCk6KHcoKSx6KCJzcGFuIixNaSwiTnV4dCBUZW1wbGF0ZSIpKV0pKX19fSksRWk9T2JqZWN0LmFzc2lnbihMaSx7X19uYW1lOiJJbXBlcnNvbmF0ZU1lbnUifSksT2k9e2NsYXNzOiJ3LTU2IGZsZXggZmxleC1jb2wifSxfaT17Y2xhc3M6InAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCJ9LHppPVsib25DbGljayJdLEZpPXtjbGFzczoidHJ1bmNhdGUifSxQaT17a2V5OjAsY2xhc3M6InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCJ9LHFpPXtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sUmk9e2NsYXNzOiJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTEifSxOaT17Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxLaT1tZSh7X19uYW1lOiJPcmdhbml6YXRpb25NZW51Iixwcm9wczp7Y29sbGFwc2VkOnt0eXBlOkJvb2xlYW59fSxzZXR1cCh0KXtjb25zdCBlPW50KCksYT1nbigpLHM9c3QoKSxuPW1uKCksaT1fKG51bGwpLHtpdGVtczpjLHE6ZCxoYXNNb3JlOnIsbG9hZGluZzptLGxvYWRNb3JlOnAscmVzZXQ6aH09dWEoYj0+YS5mZXRjaE9yZ2FuaXphdGlvbnMoYikudGhlbih5PT55KSx7aW1tZWRpYXRlOiExfSk7bmEoaSxwLHtkaXN0YW5jZTo4MCxjYW5Mb2FkTW9yZTooKT0+ci52YWx1ZX0pO2NvbnN0IG89XyghMSksdT1fKCExKSxnPV8oITEpLHY9XygiIik7dWUobyxiPT57YiYmKGgoKSxwKCkpfSksdWUodSxiPT57Ynx8KHYudmFsdWU9IiIpfSk7YXN5bmMgZnVuY3Rpb24geChiKXtiIT09ZS5hY3RpdmVPcmdhbml6YXRpb25JZCYmKG8udmFsdWU9ITEsYXdhaXQgZS5zd2l0Y2hPcmdhbml6YXRpb24oYiksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpKX1hc3luYyBmdW5jdGlvbiBJKCl7Y29uc3QgYj12LnZhbHVlLnRyaW0oKTtpZihiKXtnLnZhbHVlPSEwO3RyeXtjb25zdCB5PWF3YWl0IGEuY3JlYXRlT3JnYW5pemF0aW9uKHtuYW1lOmJ9KTtzLmFkZCh7dGl0bGU6Ik9yZ2FuaXphdGlvbiBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KSx1LnZhbHVlPSExLG8udmFsdWU9ITEsYXdhaXQgZS5zd2l0Y2hPcmdhbml6YXRpb24oeS5pZCksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfWNhdGNoKHkpe2NvbnN0IGs9eTtzLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBjcmVhdGUgb3JnYW5pemF0aW9uIixkZXNjcmlwdGlvbjprPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Zy52YWx1ZT0hMX19fWNvbnN0IFM9RigoKT0+Yy52YWx1ZS5maW5kKGI9PmIuaWQ9PT1lLmFjdGl2ZU9yZ2FuaXphdGlvbklkKT8ubmFtZT8/ZS5jdXJyZW50VXNlcj8ubmFtZT8/Ik9yZ2FuaXphdGlvbiIpO3JldHVybihiLHkpPT57Y29uc3Qgaz1DZSxCPSR0LCQ9a2UscT1vYSxqPXZuLEg9QXQ7cmV0dXJuIHcoKSx6KHBlLG51bGwsW0QocSx7b3BlbjpsKG8pLCJvblVwZGF0ZTpvcGVuIjp5WzNdfHwoeVszXT1NPT4kZShvKT9vLnZhbHVlPU06bnVsbCksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn19LHtjb250ZW50OkMoKCk9PltYKCJkaXYiLE9pLFtYKCJkaXYiLF9pLFtEKEIse21vZGVsVmFsdWU6bChkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6eVswXXx8KHlbMF09TT0+JGUoZCk/ZC52YWx1ZT1NOm51bGwpLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IlNlYXJjaCBvcmdhbml6YXRpb25z4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksWCgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjppLGNsYXNzOiJtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8gcHktMSJ9LFsodyghMCkseihwZSxudWxsLGdlKGwoYyksTT0+KHcoKSx6KCJidXR0b24iLHtrZXk6TS5pZCx0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQiLG9uQ2xpY2s6VT0+eChNLmlkKX0sW0QoJCx7bmFtZTpNLmlkPT09bChlKS5hY3RpdmVPcmdhbml6YXRpb25JZD8iaS1sdWNpZGUtY2hlY2siOiJpLWx1Y2lkZS1idWlsZGluZyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCJ9LG51bGwsOCxbIm5hbWUiXSksWCgic3BhbiIsRmksY2UoTS5uYW1lKSwxKV0sOCx6aSkpKSwxMjgpKSxsKG0pPyh3KCkseigiZGl2IixQaSwiIExvYWRpbmfigKYgIikpOmwoYykubGVuZ3RoPT09MCYmIWwobSk/KHcoKSx6KCJkaXYiLHFpLCIgTm8gb3JnYW5pemF0aW9ucyBmb3VuZC4gIikpOksoIiIsITApXSw1MTIpLFgoImRpdiIsUmksW1goImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCByb3VuZGVkIixvbkNsaWNrOnlbMV18fCh5WzFdPU09PntvLnZhbHVlPSExLGwobikucHVzaCgiL29yZ2FuaXphdGlvbiIpfSl9LFtEKCQse25hbWU6ImktbHVjaWRlLXNldHRpbmdzIixjbGFzczoic2l6ZS00IHNocmluay0wIHRleHQtbXV0ZWQifSkseVs3XXx8KHlbN109WCgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIk1hbmFnZSBvcmdhbml6YXRpb24iLC0xKSldKSxYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgcm91bmRlZCIsb25DbGljazp5WzJdfHwoeVsyXT1NPT57by52YWx1ZT0hMSx1LnZhbHVlPSEwfSl9LFtEKCQse25hbWU6ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAgdGV4dC1tdXRlZCJ9KSx5WzhdfHwoeVs4XT1YKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiQ3JlYXRlIG9yZ2FuaXphdGlvbiIsLTEpKV0pXSldKV0pLGRlZmF1bHQ6QygoKT0+W0Qoayx7bGFiZWw6dC5jb2xsYXBzZWQ/dm9pZCAwOmwoUyksaWNvbjoiaS1sdWNpZGUtYnVpbGRpbmciLCJ0cmFpbGluZy1pY29uIjp0LmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOnQuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifX0sbnVsbCw4LFsibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXSksXzoxfSw4LFsib3BlbiJdKSxEKEgse29wZW46bCh1KSwib25VcGRhdGU6b3BlbiI6eVs2XXx8KHlbNl09TT0+JGUodSk/dS52YWx1ZT1NOm51bGwpLHRpdGxlOiJDcmVhdGUgb3JnYW5pemF0aW9uIn0se2JvZHk6QygoKT0+W0Qoaix7bGFiZWw6Ik5hbWUiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpDKCgpPT5bRChCLHttb2RlbFZhbHVlOmwodiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnlbNF18fCh5WzRdPU09PiRlKHYpP3YudmFsdWU9TTpudWxsKSxwbGFjZWhvbGRlcjoiZS5nLiBBY21lIENvcnAiLGNsYXNzOiJ3LWZ1bGwiLGF1dG9mb2N1czoiIixvbktleWRvd246YWEoSSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSldKSxmb290ZXI6QygoKT0+W1goImRpdiIsTmksW0Qoayx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOnlbNV18fCh5WzVdPU09PnUudmFsdWU9ITEpfSksRChrLHtsYWJlbDoiQ3JlYXRlIixsb2FkaW5nOmwoZyksZGlzYWJsZWQ6IWwodikudHJpbSgpLG9uQ2xpY2s6SX0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldKSxfOjF9LDgsWyJvcGVuIl0pXSw2NCl9fX0pLFVpPU9iamVjdC5hc3NpZ24oS2kse19fbmFtZToiT3JnYW5pemF0aW9uTWVudSJ9KSxqaT1tZSh7X19uYW1lOiJVc2VyTWVudSIscHJvcHM6e2NvbGxhcHNlZDp7dHlwZTpCb29sZWFufX0sc2V0dXAodCl7Y29uc3QgZT1NdCgpLGE9bnQoKSxzPXN0KCksbj1GKCgpPT4oe25hbWU6YS5jdXJyZW50VXNlcj8ubmFtZT8/YS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbD8/Ikd1ZXN0IixlbWFpbDphLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsPz8iIixhdmF0YXI6YS5jdXJyZW50VXNlcj8uYXZhdGFyP3tzcmM6YS5jdXJyZW50VXNlci5hdmF0YXIsYWx0OmEuY3VycmVudFVzZXIubmFtZT8/IiJ9OnZvaWQgMH0pKTthc3luYyBmdW5jdGlvbiBpKCl7dHJ5e2F3YWl0IGEubG9nb3V0KCl9ZmluYWxseXthd2FpdCB5bigiL2F1dGgvbG9naW4iKX19YXN5bmMgZnVuY3Rpb24gYygpe3RyeXthd2FpdCBhLnN0b3BJbXBlcnNvbmF0aW9uKCkscy5hZGQoe3RpdGxlOiJTdG9wcGVkIGltcGVyc29uYXRpb24iLGNvbG9yOiJzdWNjZXNzIn0pLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX1jYXRjaChyKXtjb25zdCBtPXI7cy5hZGQoe3RpdGxlOiJTdG9wIGltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjptPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz9tPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1jb25zdCBkPUYoKCk9Pntjb25zdCByPVtdO3JldHVybiByLnB1c2goW3t0eXBlOiJsYWJlbCIsbGFiZWw6bi52YWx1ZS5uYW1lLGF2YXRhcjpuLnZhbHVlLmF2YXRhcn1dKSxhLmlzSW1wZXJzb25hdGluZyYmci5wdXNoKFt7bGFiZWw6YEJhY2sgdG8gJHthLmltcGVyc29uYXRvcj8ubmFtZT8/YS5pbXBlcnNvbmF0b3I/LnByaW1hcnlfZW1haWw/PyJhZG1pbiJ9YCxpY29uOiJpLWx1Y2lkZS1zaGllbGQiLGNvbG9yOiJ3YXJuaW5nIixvblNlbGVjdDooKT0+e2MoKX19XSksci5wdXNoKFt7bGFiZWw6IlByb2ZpbGUiLGljb246ImktbHVjaWRlLXVzZXIiLHRvOiIvc2V0dGluZ3MifV0pLHIucHVzaChbe2xhYmVsOiJBcHBlYXJhbmNlIixpY29uOiJpLWx1Y2lkZS1zdW4tbW9vbiIsY2hpbGRyZW46W3tsYWJlbDoiTGlnaHQiLGljb246ImktbHVjaWRlLXN1biIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ZS52YWx1ZT09PSJsaWdodCIsb25TZWxlY3QobSl7bS5wcmV2ZW50RGVmYXVsdCgpLGUucHJlZmVyZW5jZT0ibGlnaHQifX0se2xhYmVsOiJEYXJrIixpY29uOiJpLWx1Y2lkZS1tb29uIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDplLnZhbHVlPT09ImRhcmsiLG9uU2VsZWN0KG0pe20ucHJldmVudERlZmF1bHQoKSxlLnByZWZlcmVuY2U9ImRhcmsifX0se2xhYmVsOiJTeXN0ZW0iLGljb246ImktbHVjaWRlLWxhcHRvcCIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ZS5wcmVmZXJlbmNlPT09InN5c3RlbSIsb25TZWxlY3QobSl7bS5wcmV2ZW50RGVmYXVsdCgpLGUucHJlZmVyZW5jZT0ic3lzdGVtIn19XX1dKSxyLnB1c2goW3tsYWJlbDoiRG9jdW1lbnRhdGlvbiIsaWNvbjoiaS1sdWNpZGUtYm9vay1vcGVuIix0bzoiaHR0cHM6Ly91aS5udXh0LmNvbS9kb2NzL2dldHRpbmctc3RhcnRlZC9pbnN0YWxsYXRpb24vbnV4dCIsdGFyZ2V0OiJfYmxhbmsifSx7bGFiZWw6IkdpdEh1YiByZXBvc2l0b3J5IixpY29uOiJpLXNpbXBsZS1pY29ucy1naXRodWIiLHRvOiJodHRwczovL2dpdGh1Yi5jb20vdGhlY29kZW9yaWdpbi9udXh0LXRlbXBsYXRlIix0YXJnZXQ6Il9ibGFuayJ9LHtsYWJlbDoiTG9nIG91dCIsaWNvbjoiaS1sdWNpZGUtbG9nLW91dCIsb25TZWxlY3Q6KCk9PntpKCl9fV0pLHJ9KTtyZXR1cm4ocixtKT0+e2NvbnN0IHA9Q2UsaD1yYTtyZXR1cm4gdygpLEUoaCx7aXRlbXM6bChkKSxjb250ZW50OnthbGlnbjoiY2VudGVyIixjb2xsaXNpb25QYWRkaW5nOjEyfSx1aTp7Y29udGVudDp0LmNvbGxhcHNlZD8idy01NiI6InctKC0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgpIn19LHtkZWZhdWx0OkMoKCk9PltEKHAsWShsKG4pLmF2YXRhcj97YXZhdGFyOmwobikuYXZhdGFyfTp7aWNvbjoiaS1sdWNpZGUtdXNlciJ9LHtsYWJlbDp0LmNvbGxhcHNlZD92b2lkIDA6bChuKS5uYW1lLCJ0cmFpbGluZy1pY29uIjp0LmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOnQuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJ1c2VyLW1lbnUtdHJpZ2dlciJ9KSxudWxsLDE2LFsibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXSksXzoxfSw4LFsiaXRlbXMiLCJ1aSJdKX19fSksSGk9T2JqZWN0LmFzc2lnbihqaSx7X19uYW1lOiJVc2VyTWVudSJ9KTtmdW5jdGlvbiBXaSgpe2NvbnN0IHQ9SW4oImNvb2tpZS1jb25zZW50Iix7ZGVmYXVsdDooKT0+bnVsbCxtYXhBZ2U6MzE1MzZlMyxzYW1lU2l0ZToibGF4In0pLGU9c3QoKTtmdW5jdGlvbiBhKCl7dC52YWx1ZXx8ZS5hZGQoe2lkOiJjb29raWUtY29uc2VudCIsdGl0bGU6IldlIHVzZSBmaXJzdC1wYXJ0eSBjb29raWVzIHRvIGVuaGFuY2UgeW91ciBleHBlcmllbmNlIG9uIG91ciB3ZWJzaXRlLiIsZHVyYXRpb246MCxjbG9zZTohMSxhY3Rpb25zOlt7bGFiZWw6IkFjY2VwdCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLG9uQ2xpY2s6KCk9Pnt0LnZhbHVlPSJhY2NlcHRlZCJ9fSx7bGFiZWw6Ik9wdCBvdXQiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsb25DbGljazooKT0+e3QudmFsdWU9Im9wdGVkLW91dCJ9fV19KX1yZXR1cm57Y29uc2VudDp0LHByb21wdDphfX1jb25zdCB1bD1tZSh7X19uYW1lOiJkZWZhdWx0IixzZXR1cCh0KXtjb25zdCBlPV8oITEpLGE9TXQoKSxzPW50KCksbj1ibigpO0l0KCgpPT57V2koKS5wcm9tcHQoKX0pO2Z1bmN0aW9uIGkoKXtlLnZhbHVlPSExfWZ1bmN0aW9uIGMobyl7YS5wcmVmZXJlbmNlPW99Y29uc3QgZD1GKCgpPT5zLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKTtmdW5jdGlvbiByKG8pe3JldHVybiBvLmFiaWxpdHk/KEFycmF5LmlzQXJyYXkoby5hYmlsaXR5KT9vLmFiaWxpdHk6W28uYWJpbGl0eV0pLnNvbWUoZz0+c2EoZC52YWx1ZSxnKSk6ITB9ZnVuY3Rpb24gbShvKXtyZXR1cm57bGFiZWw6by5sYWJlbCxpY29uOm8uaWNvbix0bzpvLnRvLHR5cGU6by50eXBlLGRlZmF1bHRPcGVuOm8uZGVmYXVsdE9wZW4sY2hpbGRyZW46by5jaGlsZHJlbj8uZmlsdGVyKHIpLm1hcChtKSxvblNlbGVjdCgpe28ub25TZWxlY3Q/LigpLG8uY2hpbGRyZW4/Lmxlbmd0aHx8aSgpfX19Y29uc3QgcD1GKCgpPT57Y29uc3Qgbz1bLi4ubi5uYXZJdGVtcy52YWx1ZV0uc29ydCgoSSxTKT0+SS5wcmlvcml0eS1TLnByaW9yaXR5KSx1PW8uZmlsdGVyKEk9Pkkuc2VjdGlvbj09PSJtYWluIiYmcihJKSkubWFwKG0pLHY9e2xhYmVsOiJTZXR0aW5ncyIsaWNvbjoiaS1sdWNpZGUtc2V0dGluZ3MiLGRlZmF1bHRPcGVuOiEwLHR5cGU6InRyaWdnZXIiLGNoaWxkcmVuOm8uZmlsdGVyKEk9Pkkuc2VjdGlvbj09PSJzZXR0aW5ncyImJnIoSSkpLm1hcChtKX0seD1vLmZpbHRlcihJPT5JLnNlY3Rpb249PT0ic3ViIiYmcihJKSkubWFwKG0pO3JldHVybltbLi4udSx2XSx4XX0pLGg9RigoKT0+W3tpZDoiZ290byIsbGFiZWw6IkdvIHRvIixpdGVtczpwLnZhbHVlLmZsYXQoKS5mbGF0TWFwKG89Pm8uY2hpbGRyZW4/Lmxlbmd0aD9vLmNoaWxkcmVuOltvXSl9LHtpZDoidGhlbWUiLGxhYmVsOiJUaGVtZSIsaXRlbXM6W3tsYWJlbDoiU3lzdGVtIixpY29uOiJpLWx1Y2lkZS1tb25pdG9yIixvblNlbGVjdDooKT0+Yygic3lzdGVtIil9LHtsYWJlbDoiTGlnaHQiLGljb246ImktbHVjaWRlLXN1biIsb25TZWxlY3Q6KCk9PmMoImxpZ2h0Iil9LHtsYWJlbDoiRGFyayIsaWNvbjoiaS1sdWNpZGUtbW9vbiIsb25TZWxlY3Q6KCk9PmMoImRhcmsiKX1dfV0pO3JldHVybihvLHUpPT57Y29uc3QgZz1Obix2PUJuLHg9d24sST1tcyxTPWJpLGI9eGk7cmV0dXJuIHcoKSxFKGIse3VuaXQ6InJlbSJ9LHtkZWZhdWx0OkMoKCk9PltEKEkse2lkOiJkZWZhdWx0IixvcGVuOmwoZSksIm9uVXBkYXRlOm9wZW4iOnVbMF18fCh1WzBdPXk9PiRlKGUpP2UudmFsdWU9eTpudWxsKSxjb2xsYXBzaWJsZToiIixyZXNpemFibGU6IiIsY2xhc3M6ImJnLWVsZXZhdGVkLzI1Iix1aTp7aGVhZGVyOiJsZzpib3JkZXItYiBsZzpib3JkZXItZGVmYXVsdCIsZm9vdGVyOiJsZzpib3JkZXItdCBsZzpib3JkZXItZGVmYXVsdCIsYm9keToiZ2FwLTIgcHktNCJ9fSx7aGVhZGVyOkMoKHtjb2xsYXBzZWQ6eX0pPT5bRChVaSx7Y29sbGFwc2VkOnl9LG51bGwsOCxbImNvbGxhcHNlZCJdKV0pLGRlZmF1bHQ6Qygoe2NvbGxhcHNlZDp5fSk9PltEKGcse2NvbGxhcHNlZDp5LGNsYXNzOiJiZy10cmFuc3BhcmVudCByaW5nLWRlZmF1bHQifSxudWxsLDgsWyJjb2xsYXBzZWQiXSksRChFaSx7Y29sbGFwc2VkOnl9LG51bGwsOCxbImNvbGxhcHNlZCJdKSxEKHgsbnVsbCx7ZGVmYXVsdDpDKCgpPT5bRCh2LHtjb2xsYXBzZWQ6eSxpdGVtczpsKHApWzBdLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsdG9vbHRpcDoiIixwb3BvdmVyOiIifSxudWxsLDgsWyJjb2xsYXBzZWQiLCJpdGVtcyJdKSxEKHYse2NvbGxhcHNlZDp5LGl0ZW1zOmwocClbMV0sb3JpZW50YXRpb246InZlcnRpY2FsIix0b29sdGlwOiIiLHBvcG92ZXI6IiIsY2xhc3M6Im10LWF1dG8ifSxudWxsLDgsWyJjb2xsYXBzZWQiLCJpdGVtcyJdKV0pLF86Mn0sMTAyNCldKSxmb290ZXI6Qygoe2NvbGxhcHNlZDp5fSk9PltEKEhpLHtjb2xsYXBzZWQ6eX0sbnVsbCw4LFsiY29sbGFwc2VkIl0pXSksXzoxfSw4LFsib3BlbiJdKSxEKFMse2dyb3VwczpsKGgpfSxudWxsLDgsWyJncm91cHMiXSksUihvLiRzbG90cywiZGVmYXVsdCIpLEQoeCxudWxsLHtkZWZhdWx0OkMoKCk9PlsodyghMCkseihwZSxudWxsLGdlKGwobikub3ZlcmxheXMudmFsdWUseT0+KHcoKSxFKGVhKHkuY29tcG9uZW50KSx7a2V5OnkuaWR9KSkpLDEyOCkpXSksXzoxfSldKSxfOjN9KX19fSk7ZXhwb3J0e3VsIGFzIGRlZmF1bHR9Owo=", "/_nuxt/CGXgSMZh.js": "aW1wb3J0e0ogYXMgaSxLIGFzIHUsbyBhcyBjLGggYXMgcCx3IGFzIGQsTCBhcyBtLE0gYXMgZixpIGFzIGEsUCBhcyBiLGwgYXMgayxOIGFzIHR9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCB2PXtiYXNlOiJhbmltYXRlLXB1bHNlIHJvdW5kZWQtbWQgYmctZWxldmF0ZWQifSxnPXtfX25hbWU6IlVTa2VsZXRvbiIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHM9ZSxsPWkoKSxvPXUoInNrZWxldG9uIixzKSxyPWsoKCk9PnQoe2V4dGVuZDp0KHYpLC4uLmwudWk/LnNrZWxldG9ufHx7fX0pKTtyZXR1cm4obixDKT0+KGMoKSxwKGEoYikse2FzOmUuYXMsImFyaWEtYnVzeSI6InRydWUiLCJhcmlhLWxhYmVsIjoibG9hZGluZyIsImFyaWEtbGl2ZSI6InBvbGl0ZSIscm9sZToiYWxlcnQiLGNsYXNzOmYoci52YWx1ZSh7Y2xhc3M6W2Eobyk/LmJhc2Uscy5jbGFzc119KSl9LHtkZWZhdWx0OmQoKCk9PlttKG4uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19O2V4cG9ydHtnIGFzIF99Owo=", "/_nuxt/CIC7vsZ5.js": "aW1wb3J0e2YgYXMgeixuIGFzICQsZyBhcyBrLHAgYXMgQix6IGFzIEMsciBhcyBwLGFxIGFzIEEsbyBhcyBnLGMgYXMgUyxiIGFzIGUsdyBhcyBuLGkgYXMgYSxoIGFzIFYsaix2IGFzIE8sRCBhcyBSLEggYXMgRSxHIGFzIE0sQiBhcyBOLGwgYXMgRCxRIGFzIEZ9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBHfWZyb20iLi9CMU1lTHJpMy5qcyI7aW1wb3J0e18gYXMgcX1mcm9tIi4vN2NWU09DY3UuanMiO2ltcG9ydHtfIGFzIEh9ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnQiLi9kXzBOd1FMVS5qcyI7Y29uc3QgSj16KHtfX25hbWU6ImluZGV4IixzZXR1cChJKXtjb25zdCBiPSQoKSxpPU4oKSxjPWsoKSx7ZGF0YTp0LHJlZnJlc2g6dixlcnJvcjp5fT1CKCJhY3RpdmUtb3JnIiwoKT0+aS5mZXRjaE9yZ2FuaXphdGlvbigpKTtDKHkpO2NvbnN0IG09RCgoKT0+RihiLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLCJ1c2VyOm1hbmFnZSIpKSxzPXAodC52YWx1ZT8ubmFtZT8/IiIpO0EodCxzLHtkaXJlY3Rpb246Imx0ciIsdHJhbnNmb3JtOntsdHI6bz0+bz8ubmFtZT8/IiJ9fSk7Y29uc3QgbD1wKCExKTthc3luYyBmdW5jdGlvbiB4KCl7bC52YWx1ZT0hMDt0cnl7YXdhaXQgaS51cGRhdGVPcmdhbml6YXRpb24oe25hbWU6cy52YWx1ZX0pLGF3YWl0IHYoKSxjLmFkZCh7dGl0bGU6Ik9yZ2FuaXphdGlvbiB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChvKXtjLmFkZCh7dGl0bGU6IlVwZGF0ZSBmYWlsZWQiLGRlc2NyaXB0aW9uOm8/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyIiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2wudmFsdWU9ITF9fXJldHVybihvLHUpPT57Y29uc3QgVT1qLGQ9RyxmPUUscj1SLF89cSxoPUg7cmV0dXJuIGcoKSxTKCJkaXYiLG51bGwsW2UoZCx7dGl0bGU6IkdlbmVyYWwiLGRlc2NyaXB0aW9uOiJZb3VyIG9yZ2FuaXphdGlvbiBkZXRhaWxzLiIsdmFyaWFudDoibmFrZWQiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczoibWItNCJ9LHtkZWZhdWx0Om4oKCk9PlthKG0pJiYhYSh0KT8uaXNfc3lzdGVtPyhnKCksVihVLHtrZXk6MCxsYWJlbDoiU2F2ZSBjaGFuZ2VzIixsb2FkaW5nOmEobCksY2xhc3M6InctZml0IGxnOm1zLWF1dG8iLG9uQ2xpY2s6eH0sbnVsbCw4LFsibG9hZGluZyJdKSk6TygiIiwhMCldKSxfOjF9KSxlKGQse3ZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0Om4oKCk9PltlKHIse2xhYmVsOiJOYW1lIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bigoKT0+W2UoZix7bW9kZWxWYWx1ZTphKHMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp1WzBdfHwodVswXT13PT5NKHMpP3MudmFsdWU9dzpudWxsKSxkaXNhYmxlZDohYShtKXx8YSh0KT8uaXNfc3lzdGVtfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldKSxfOjF9KSxlKF8pLGUocix7bGFiZWw6IlNsdWciLGRlc2NyaXB0aW9uOiJVc2VkIGluIFVSTHMuIFJlYWQtb25seS4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpuKCgpPT5bZShmLHsibW9kZWwtdmFsdWUiOmEodCk/LnNsdWcsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXSksXzoxfSksZShfKSxlKHIse2xhYmVsOiJNZW1iZXJzIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6bigoKT0+W2UoaCx7bGFiZWw6YCR7YSh0KT8ubWVtYmVyQ291bnQ/PzB9YCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0sbnVsbCw4LFsibGFiZWwiXSldKSxfOjF9KV0pLF86MX0pXSl9fX0pO2V4cG9ydHtKIGFzIGRlZmF1bHR9Owo=", "/_nuxt/CW8fKnFE.js": "aW1wb3J0e0cgYXMgcHQsYXkgYXMgbXQsUiBhcyB0dCxyIGFzIFN0LGF6IGFzIHZ0LGYgYXMgQ3QsJCBhcyB3dCxpIGFzIHksYWggYXMgUnQsYXggYXMgaHQsSiBhcyBGdCxLIGFzIHl0LGFBIGFzIF90LGFCIGFzIFhlLFUgYXMgRyxhQyBhcyBLZSxhRCBhcyAkdCxhaiBhcyB4dCxvIGFzIF8sYyBhcyBJLGIgYXMgbGUsdyBhcyBSZSxhIGFzIHEsYUUgYXMgSixNIGFzIEQsRiBhcyBILHEgYXMgYixMIGFzIE4sYWEgYXMgZ2UsdiBhcyBYLGQgYXMgV2UsdCBhcyBKZSxoIGFzIGVlLFAgYXMgUHQsVyBhcyBWdCxsIGFzIGssYUYgYXMgSXQsYUcgYXMgTXQsTiBhcyBZZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHt1IGFzIER0fWZyb20iLi9DN1l5NnRSMy5qcyI7ZnVuY3Rpb24gQXQoZSl7cmV0dXJuIGU/ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk6IiJ9ZnVuY3Rpb24gSyhlLG8pe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj9lKG8pOmV9ZnVuY3Rpb24gTChlLG8pe3JldHVybiB0PT57by5zZXRTdGF0ZShuPT4oey4uLm4sW2VdOksodCxuW2VdKX0pKX19ZnVuY3Rpb24gbWUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBGdW5jdGlvbn1mdW5jdGlvbiB6dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeShvPT50eXBlb2Ygbz09Im51bWJlciIpfWZ1bmN0aW9uIE90KGUsbyl7Y29uc3QgdD1bXSxuPWk9PntpLmZvckVhY2gocj0+e3QucHVzaChyKTtjb25zdCBsPW8ocik7bCE9bnVsbCYmbC5sZW5ndGgmJm4obCl9KX07cmV0dXJuIG4oZSksdH1mdW5jdGlvbiBDKGUsbyx0KXtsZXQgbj1bXSxpO3JldHVybiByPT57bGV0IGw7dC5rZXkmJnQuZGVidWcmJihsPURhdGUubm93KCkpO2NvbnN0IHU9ZShyKTtpZighKHUubGVuZ3RoIT09bi5sZW5ndGh8fHUuc29tZSgoYyxwKT0+bltwXSE9PWMpKSlyZXR1cm4gaTtuPXU7bGV0IGc7aWYodC5rZXkmJnQuZGVidWcmJihnPURhdGUubm93KCkpLGk9byguLi51KSx0PT1udWxsfHx0Lm9uQ2hhbmdlPT1udWxsfHx0Lm9uQ2hhbmdlKGkpLHQua2V5JiZ0LmRlYnVnJiZ0IT1udWxsJiZ0LmRlYnVnKCkpe2NvbnN0IGM9TWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1sKSoxMDApLzEwMCxkPU1hdGgucm91bmQoKERhdGUubm93KCktZykqMTAwKS8xMDAvMTYscz0oZixtKT0+e2ZvcihmPVN0cmluZyhmKTtmLmxlbmd0aDxtOylmPSIgIitmO3JldHVybiBmfX1yZXR1cm4gaX19ZnVuY3Rpb24gdyhlLG8sdCxuKXtyZXR1cm57ZGVidWc6KCk9Pnt2YXIgaTtyZXR1cm4oaT1lPy5kZWJ1Z0FsbCkhPW51bGw/aTplW29dfSxrZXk6ITEsb25DaGFuZ2U6bn19ZnVuY3Rpb24gRXQoZSxvLHQsbil7Y29uc3QgaT0oKT0+e3ZhciBsO3JldHVybihsPXIuZ2V0VmFsdWUoKSkhPW51bGw/bDplLm9wdGlvbnMucmVuZGVyRmFsbGJhY2tWYWx1ZX0scj17aWQ6YCR7by5pZH1fJHt0LmlkfWAscm93Om8sY29sdW1uOnQsZ2V0VmFsdWU6KCk9Pm8uZ2V0VmFsdWUobikscmVuZGVyVmFsdWU6aSxnZXRDb250ZXh0OkMoKCk9PltlLHQsbyxyXSwobCx1LGEsZyk9Pih7dGFibGU6bCxjb2x1bW46dSxyb3c6YSxjZWxsOmcsZ2V0VmFsdWU6Zy5nZXRWYWx1ZSxyZW5kZXJWYWx1ZTpnLnJlbmRlclZhbHVlfSksdyhlLm9wdGlvbnMsImRlYnVnQ2VsbHMiKSl9O3JldHVybiBlLl9mZWF0dXJlcy5mb3JFYWNoKGw9PntsLmNyZWF0ZUNlbGw9PW51bGx8fGwuY3JlYXRlQ2VsbChyLHQsbyxlKX0se30pLHJ9ZnVuY3Rpb24gR3QoZSxvLHQsbil7dmFyIGkscjtjb25zdCB1PXsuLi5lLl9nZXREZWZhdWx0Q29sdW1uRGVmKCksLi4ub30sYT11LmFjY2Vzc29yS2V5O2xldCBnPShpPShyPXUuaWQpIT1udWxsP3I6YT90eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsPT0iZnVuY3Rpb24iP2EucmVwbGFjZUFsbCgiLiIsIl8iKTphLnJlcGxhY2UoL1wuL2csIl8iKTp2b2lkIDApIT1udWxsP2k6dHlwZW9mIHUuaGVhZGVyPT0ic3RyaW5nIj91LmhlYWRlcjp2b2lkIDAsYztpZih1LmFjY2Vzc29yRm4/Yz11LmFjY2Vzc29yRm46YSYmKGEuaW5jbHVkZXMoIi4iKT9jPWQ9PntsZXQgcz1kO2Zvcihjb25zdCBtIG9mIGEuc3BsaXQoIi4iKSl7dmFyIGY7cz0oZj1zKT09bnVsbD92b2lkIDA6ZlttXX1yZXR1cm4gc306Yz1kPT5kW3UuYWNjZXNzb3JLZXldKSwhZyl0aHJvdyBuZXcgRXJyb3I7bGV0IHA9e2lkOmAke1N0cmluZyhnKX1gLGFjY2Vzc29yRm46YyxwYXJlbnQ6bixkZXB0aDp0LGNvbHVtbkRlZjp1LGNvbHVtbnM6W10sZ2V0RmxhdENvbHVtbnM6QygoKT0+WyEwXSwoKT0+e3ZhciBkO3JldHVybltwLC4uLihkPXAuY29sdW1ucyk9PW51bGw/dm9pZCAwOmQuZmxhdE1hcChzPT5zLmdldEZsYXRDb2x1bW5zKCkpXX0sdyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxnZXRMZWFmQ29sdW1uczpDKCgpPT5bZS5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sZD0+e3ZhciBzO2lmKChzPXAuY29sdW1ucykhPW51bGwmJnMubGVuZ3RoKXtsZXQgZj1wLmNvbHVtbnMuZmxhdE1hcChtPT5tLmdldExlYWZDb2x1bW5zKCkpO3JldHVybiBkKGYpfXJldHVybltwXX0sdyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKX07Zm9yKGNvbnN0IGQgb2YgZS5fZmVhdHVyZXMpZC5jcmVhdGVDb2x1bW49PW51bGx8fGQuY3JlYXRlQ29sdW1uKHAsZSk7cmV0dXJuIHB9Y29uc3QgQT0iZGVidWdIZWFkZXJzIjtmdW5jdGlvbiBRZShlLG8sdCl7dmFyIG47bGV0IHI9e2lkOihuPXQuaWQpIT1udWxsP246by5pZCxjb2x1bW46byxpbmRleDp0LmluZGV4LGlzUGxhY2Vob2xkZXI6ISF0LmlzUGxhY2Vob2xkZXIscGxhY2Vob2xkZXJJZDp0LnBsYWNlaG9sZGVySWQsZGVwdGg6dC5kZXB0aCxzdWJIZWFkZXJzOltdLGNvbFNwYW46MCxyb3dTcGFuOjAsaGVhZGVyR3JvdXA6bnVsbCxnZXRMZWFmSGVhZGVyczooKT0+e2NvbnN0IGw9W10sdT1hPT57YS5zdWJIZWFkZXJzJiZhLnN1YkhlYWRlcnMubGVuZ3RoJiZhLnN1YkhlYWRlcnMubWFwKHUpLGwucHVzaChhKX07cmV0dXJuIHUociksbH0sZ2V0Q29udGV4dDooKT0+KHt0YWJsZTplLGhlYWRlcjpyLGNvbHVtbjpvfSl9O3JldHVybiBlLl9mZWF0dXJlcy5mb3JFYWNoKGw9PntsLmNyZWF0ZUhlYWRlcj09bnVsbHx8bC5jcmVhdGVIZWFkZXIocixlKX0pLHJ9Y29uc3QgSHQ9e2NyZWF0ZVRhYmxlOmU9PntlLmdldEhlYWRlckdyb3Vwcz1DKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwobyx0LG4saSk9Pnt2YXIgcixsO2NvbnN0IHU9KHI9bj8ubWFwKHA9PnQuZmluZChkPT5kLmlkPT09cCkpLmZpbHRlcihCb29sZWFuKSkhPW51bGw/cjpbXSxhPShsPWk/Lm1hcChwPT50LmZpbmQoZD0+ZC5pZD09PXApKS5maWx0ZXIoQm9vbGVhbikpIT1udWxsP2w6W10sZz10LmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocC5pZCkpJiYhKGkhPW51bGwmJmkuaW5jbHVkZXMocC5pZCkpKTtyZXR1cm4gZGUobyxbLi4udSwuLi5nLC4uLmFdLGUpfSx3KGUub3B0aW9ucyxBKSksZS5nZXRDZW50ZXJIZWFkZXJHcm91cHM9QygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKG8sdCxuLGkpPT4odD10LmZpbHRlcihyPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMoci5pZCkpJiYhKGkhPW51bGwmJmkuaW5jbHVkZXMoci5pZCkpKSxkZShvLHQsZSwiY2VudGVyIikpLHcoZS5vcHRpb25zLEEpKSxlLmdldExlZnRIZWFkZXJHcm91cHM9QygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdF0sKG8sdCxuKT0+e3ZhciBpO2NvbnN0IHI9KGk9bj8ubWFwKGw9PnQuZmluZCh1PT51LmlkPT09bCkpLmZpbHRlcihCb29sZWFuKSkhPW51bGw/aTpbXTtyZXR1cm4gZGUobyxyLGUsImxlZnQiKX0sdyhlLm9wdGlvbnMsQSkpLGUuZ2V0UmlnaHRIZWFkZXJHcm91cHM9QygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLChvLHQsbik9Pnt2YXIgaTtjb25zdCByPShpPW4/Lm1hcChsPT50LmZpbmQodT0+dS5pZD09PWwpKS5maWx0ZXIoQm9vbGVhbikpIT1udWxsP2k6W107cmV0dXJuIGRlKG8scixlLCJyaWdodCIpfSx3KGUub3B0aW9ucyxBKSksZS5nZXRGb290ZXJHcm91cHM9QygoKT0+W2UuZ2V0SGVhZGVyR3JvdXBzKCldLG89PlsuLi5vXS5yZXZlcnNlKCksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0TGVmdEZvb3Rlckdyb3Vwcz1DKCgpPT5bZS5nZXRMZWZ0SGVhZGVyR3JvdXBzKCldLG89PlsuLi5vXS5yZXZlcnNlKCksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0Q2VudGVyRm9vdGVyR3JvdXBzPUMoKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxvPT5bLi4ub10ucmV2ZXJzZSgpLHcoZS5vcHRpb25zLEEpKSxlLmdldFJpZ2h0Rm9vdGVyR3JvdXBzPUMoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLG89PlsuLi5vXS5yZXZlcnNlKCksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0RmxhdEhlYWRlcnM9QygoKT0+W2UuZ2V0SGVhZGVyR3JvdXBzKCldLG89Pm8ubWFwKHQ9PnQuaGVhZGVycykuZmxhdCgpLHcoZS5vcHRpb25zLEEpKSxlLmdldExlZnRGbGF0SGVhZGVycz1DKCgpPT5bZS5nZXRMZWZ0SGVhZGVyR3JvdXBzKCldLG89Pm8ubWFwKHQ9PnQuaGVhZGVycykuZmxhdCgpLHcoZS5vcHRpb25zLEEpKSxlLmdldENlbnRlckZsYXRIZWFkZXJzPUMoKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxvPT5vLm1hcCh0PT50LmhlYWRlcnMpLmZsYXQoKSx3KGUub3B0aW9ucyxBKSksZS5nZXRSaWdodEZsYXRIZWFkZXJzPUMoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLG89Pm8ubWFwKHQ9PnQuaGVhZGVycykuZmxhdCgpLHcoZS5vcHRpb25zLEEpKSxlLmdldENlbnRlckxlYWZIZWFkZXJzPUMoKCk9PltlLmdldENlbnRlckZsYXRIZWFkZXJzKCldLG89Pm8uZmlsdGVyKHQ9Pnt2YXIgbjtyZXR1cm4hKChuPXQuc3ViSGVhZGVycykhPW51bGwmJm4ubGVuZ3RoKX0pLHcoZS5vcHRpb25zLEEpKSxlLmdldExlZnRMZWFmSGVhZGVycz1DKCgpPT5bZS5nZXRMZWZ0RmxhdEhlYWRlcnMoKV0sbz0+by5maWx0ZXIodD0+e3ZhciBuO3JldHVybiEoKG49dC5zdWJIZWFkZXJzKSE9bnVsbCYmbi5sZW5ndGgpfSksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0UmlnaHRMZWFmSGVhZGVycz1DKCgpPT5bZS5nZXRSaWdodEZsYXRIZWFkZXJzKCldLG89Pm8uZmlsdGVyKHQ9Pnt2YXIgbjtyZXR1cm4hKChuPXQuc3ViSGVhZGVycykhPW51bGwmJm4ubGVuZ3RoKX0pLHcoZS5vcHRpb25zLEEpKSxlLmdldExlYWZIZWFkZXJzPUMoKCk9PltlLmdldExlZnRIZWFkZXJHcm91cHMoKSxlLmdldENlbnRlckhlYWRlckdyb3VwcygpLGUuZ2V0UmlnaHRIZWFkZXJHcm91cHMoKV0sKG8sdCxuKT0+e3ZhciBpLHIsbCx1LGEsZztyZXR1cm5bLi4uKGk9KHI9b1swXSk9PW51bGw/dm9pZCAwOnIuaGVhZGVycykhPW51bGw/aTpbXSwuLi4obD0odT10WzBdKT09bnVsbD92b2lkIDA6dS5oZWFkZXJzKSE9bnVsbD9sOltdLC4uLihhPShnPW5bMF0pPT1udWxsP3ZvaWQgMDpnLmhlYWRlcnMpIT1udWxsP2E6W11dLm1hcChjPT5jLmdldExlYWZIZWFkZXJzKCkpLmZsYXQoKX0sdyhlLm9wdGlvbnMsQSkpfX07ZnVuY3Rpb24gZGUoZSxvLHQsbil7dmFyIGkscjtsZXQgbD0wO2NvbnN0IHU9ZnVuY3Rpb24oZCxzKXtzPT09dm9pZCAwJiYocz0xKSxsPU1hdGgubWF4KGwscyksZC5maWx0ZXIoZj0+Zi5nZXRJc1Zpc2libGUoKSkuZm9yRWFjaChmPT57dmFyIG07KG09Zi5jb2x1bW5zKSE9bnVsbCYmbS5sZW5ndGgmJnUoZi5jb2x1bW5zLHMrMSl9LDApfTt1KGUpO2xldCBhPVtdO2NvbnN0IGc9KGQscyk9Pntjb25zdCBmPXtkZXB0aDpzLGlkOltuLGAke3N9YF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIl8iKSxoZWFkZXJzOltdfSxtPVtdO2QuZm9yRWFjaChoPT57Y29uc3QgUj1bLi4ubV0ucmV2ZXJzZSgpWzBdLHg9aC5jb2x1bW4uZGVwdGg9PT1mLmRlcHRoO2xldCBQLHo9ITE7aWYoeCYmaC5jb2x1bW4ucGFyZW50P1A9aC5jb2x1bW4ucGFyZW50OihQPWguY29sdW1uLHo9ITApLFImJlI/LmNvbHVtbj09PVApUi5zdWJIZWFkZXJzLnB1c2goaCk7ZWxzZXtjb25zdCBNPVFlKHQsUCx7aWQ6W24scyxQLmlkLGg/LmlkXS5maWx0ZXIoQm9vbGVhbikuam9pbigiXyIpLGlzUGxhY2Vob2xkZXI6eixwbGFjZWhvbGRlcklkOno/YCR7bS5maWx0ZXIoVD0+VC5jb2x1bW49PT1QKS5sZW5ndGh9YDp2b2lkIDAsZGVwdGg6cyxpbmRleDptLmxlbmd0aH0pO00uc3ViSGVhZGVycy5wdXNoKGgpLG0ucHVzaChNKX1mLmhlYWRlcnMucHVzaChoKSxoLmhlYWRlckdyb3VwPWZ9KSxhLnB1c2goZikscz4wJiZnKG0scy0xKX0sYz1vLm1hcCgoZCxzKT0+UWUodCxkLHtkZXB0aDpsLGluZGV4OnN9KSk7ZyhjLGwtMSksYS5yZXZlcnNlKCk7Y29uc3QgcD1kPT5kLmZpbHRlcihmPT5mLmNvbHVtbi5nZXRJc1Zpc2libGUoKSkubWFwKGY9PntsZXQgbT0wLGg9MCxSPVswXTtmLnN1YkhlYWRlcnMmJmYuc3ViSGVhZGVycy5sZW5ndGg/KFI9W10scChmLnN1YkhlYWRlcnMpLmZvckVhY2goUD0+e2xldHtjb2xTcGFuOnoscm93U3BhbjpNfT1QO20rPXosUi5wdXNoKE0pfSkpOm09MTtjb25zdCB4PU1hdGgubWluKC4uLlIpO3JldHVybiBoPWgreCxmLmNvbFNwYW49bSxmLnJvd1NwYW49aCx7Y29sU3BhbjptLHJvd1NwYW46aH19KTtyZXR1cm4gcCgoaT0ocj1hWzBdKT09bnVsbD92b2lkIDA6ci5oZWFkZXJzKSE9bnVsbD9pOltdKSxhfWNvbnN0IEVlPShlLG8sdCxuLGkscixsKT0+e2xldCB1PXtpZDpvLGluZGV4Om4sb3JpZ2luYWw6dCxkZXB0aDppLHBhcmVudElkOmwsX3ZhbHVlc0NhY2hlOnt9LF91bmlxdWVWYWx1ZXNDYWNoZTp7fSxnZXRWYWx1ZTphPT57aWYodS5fdmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkoYSkpcmV0dXJuIHUuX3ZhbHVlc0NhY2hlW2FdO2NvbnN0IGc9ZS5nZXRDb2x1bW4oYSk7aWYoZyE9bnVsbCYmZy5hY2Nlc3NvckZuKXJldHVybiB1Ll92YWx1ZXNDYWNoZVthXT1nLmFjY2Vzc29yRm4odS5vcmlnaW5hbCxuKSx1Ll92YWx1ZXNDYWNoZVthXX0sZ2V0VW5pcXVlVmFsdWVzOmE9PntpZih1Ll91bmlxdWVWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4gdS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV07Y29uc3QgZz1lLmdldENvbHVtbihhKTtpZihnIT1udWxsJiZnLmFjY2Vzc29yRm4pcmV0dXJuIGcuY29sdW1uRGVmLmdldFVuaXF1ZVZhbHVlcz8odS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV09Zy5jb2x1bW5EZWYuZ2V0VW5pcXVlVmFsdWVzKHUub3JpZ2luYWwsbiksdS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV0pOih1Ll91bmlxdWVWYWx1ZXNDYWNoZVthXT1bdS5nZXRWYWx1ZShhKV0sdS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV0pfSxyZW5kZXJWYWx1ZTphPT57dmFyIGc7cmV0dXJuKGc9dS5nZXRWYWx1ZShhKSkhPW51bGw/ZzplLm9wdGlvbnMucmVuZGVyRmFsbGJhY2tWYWx1ZX0sc3ViUm93czpbXSxnZXRMZWFmUm93czooKT0+T3QodS5zdWJSb3dzLGE9PmEuc3ViUm93cyksZ2V0UGFyZW50Um93OigpPT51LnBhcmVudElkP2UuZ2V0Um93KHUucGFyZW50SWQsITApOnZvaWQgMCxnZXRQYXJlbnRSb3dzOigpPT57bGV0IGE9W10sZz11O2Zvcig7Oyl7Y29uc3QgYz1nLmdldFBhcmVudFJvdygpO2lmKCFjKWJyZWFrO2EucHVzaChjKSxnPWN9cmV0dXJuIGEucmV2ZXJzZSgpfSxnZXRBbGxDZWxsczpDKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpXSxhPT5hLm1hcChnPT5FdChlLHUsZyxnLmlkKSksdyhlLm9wdGlvbnMsImRlYnVnUm93cyIpKSxfZ2V0QWxsQ2VsbHNCeUNvbHVtbklkOkMoKCk9Plt1LmdldEFsbENlbGxzKCldLGE9PmEucmVkdWNlKChnLGMpPT4oZ1tjLmNvbHVtbi5pZF09YyxnKSx7fSksdyhlLm9wdGlvbnMsImRlYnVnUm93cyIpKX07Zm9yKGxldCBhPTA7YTxlLl9mZWF0dXJlcy5sZW5ndGg7YSsrKXtjb25zdCBnPWUuX2ZlYXR1cmVzW2FdO2c9PW51bGx8fGcuY3JlYXRlUm93PT1udWxsfHxnLmNyZWF0ZVJvdyh1LGUpfXJldHVybiB1fSxMdD17Y3JlYXRlQ29sdW1uOihlLG8pPT57ZS5fZ2V0RmFjZXRlZFJvd01vZGVsPW8ub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwmJm8ub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwobyxlLmlkKSxlLmdldEZhY2V0ZWRSb3dNb2RlbD0oKT0+ZS5fZ2V0RmFjZXRlZFJvd01vZGVsP2UuX2dldEZhY2V0ZWRSb3dNb2RlbCgpOm8uZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbCgpLGUuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXM9by5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMmJm8ub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKG8sZS5pZCksZS5nZXRGYWNldGVkVW5pcXVlVmFsdWVzPSgpPT5lLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzP2UuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoKTpuZXcgTWFwLGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXM9by5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXMmJm8ub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzKG8sZS5pZCksZS5nZXRGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcygpfX19LG50PShlLG8sdCk9Pnt2YXIgbixpO2NvbnN0IHI9dD09bnVsbHx8KG49dC50b1N0cmluZygpKT09bnVsbD92b2lkIDA6bi50b0xvd2VyQ2FzZSgpO3JldHVybiEhKCEoKGk9ZS5nZXRWYWx1ZShvKSk9PW51bGx8fChpPWkudG9TdHJpbmcoKSk9PW51bGx8fChpPWkudG9Mb3dlckNhc2UoKSk9PW51bGwpJiZpLmluY2x1ZGVzKHIpKX07bnQuYXV0b1JlbW92ZT1lPT5CKGUpO2NvbnN0IG90PShlLG8sdCk9Pnt2YXIgbjtyZXR1cm4hISghKChuPWUuZ2V0VmFsdWUobykpPT1udWxsfHwobj1uLnRvU3RyaW5nKCkpPT1udWxsKSYmbi5pbmNsdWRlcyh0KSl9O290LmF1dG9SZW1vdmU9ZT0+QihlKTtjb25zdCBpdD0oZSxvLHQpPT57dmFyIG47cmV0dXJuKChuPWUuZ2V0VmFsdWUobykpPT1udWxsfHwobj1uLnRvU3RyaW5nKCkpPT1udWxsP3ZvaWQgMDpuLnRvTG93ZXJDYXNlKCkpPT09dD8udG9Mb3dlckNhc2UoKX07aXQuYXV0b1JlbW92ZT1lPT5CKGUpO2NvbnN0IHJ0PShlLG8sdCk9Pnt2YXIgbjtyZXR1cm4obj1lLmdldFZhbHVlKG8pKT09bnVsbD92b2lkIDA6bi5pbmNsdWRlcyh0KX07cnQuYXV0b1JlbW92ZT1lPT5CKGUpO2NvbnN0IGx0PShlLG8sdCk9PiF0LnNvbWUobj0+e3ZhciBpO3JldHVybiEoKGk9ZS5nZXRWYWx1ZShvKSkhPW51bGwmJmkuaW5jbHVkZXMobikpfSk7bHQuYXV0b1JlbW92ZT1lPT5CKGUpfHwhKGUhPW51bGwmJmUubGVuZ3RoKTtjb25zdCBzdD0oZSxvLHQpPT50LnNvbWUobj0+e3ZhciBpO3JldHVybihpPWUuZ2V0VmFsdWUobykpPT1udWxsP3ZvaWQgMDppLmluY2x1ZGVzKG4pfSk7c3QuYXV0b1JlbW92ZT1lPT5CKGUpfHwhKGUhPW51bGwmJmUubGVuZ3RoKTtjb25zdCB1dD0oZSxvLHQpPT5lLmdldFZhbHVlKG8pPT09dDt1dC5hdXRvUmVtb3ZlPWU9PkIoZSk7Y29uc3QgYXQ9KGUsbyx0KT0+ZS5nZXRWYWx1ZShvKT09dDthdC5hdXRvUmVtb3ZlPWU9PkIoZSk7Y29uc3QgR2U9KGUsbyx0KT0+e2xldFtuLGldPXQ7Y29uc3Qgcj1lLmdldFZhbHVlKG8pO3JldHVybiByPj1uJiZyPD1pfTtHZS5yZXNvbHZlRmlsdGVyVmFsdWU9ZT0+e2xldFtvLHRdPWUsbj10eXBlb2YgbyE9Im51bWJlciI/cGFyc2VGbG9hdChvKTpvLGk9dHlwZW9mIHQhPSJudW1iZXIiP3BhcnNlRmxvYXQodCk6dCxyPW89PT1udWxsfHxOdW1iZXIuaXNOYU4obik/LTEvMDpuLGw9dD09PW51bGx8fE51bWJlci5pc05hTihpKT8xLzA6aTtpZihyPmwpe2NvbnN0IHU9cjtyPWwsbD11fXJldHVybltyLGxdfTtHZS5hdXRvUmVtb3ZlPWU9PkIoZSl8fEIoZVswXSkmJkIoZVsxXSk7Y29uc3QgVT17aW5jbHVkZXNTdHJpbmc6bnQsaW5jbHVkZXNTdHJpbmdTZW5zaXRpdmU6b3QsZXF1YWxzU3RyaW5nOml0LGFyckluY2x1ZGVzOnJ0LGFyckluY2x1ZGVzQWxsOmx0LGFyckluY2x1ZGVzU29tZTpzdCxlcXVhbHM6dXQsd2Vha0VxdWFsczphdCxpbk51bWJlclJhbmdlOkdlfTtmdW5jdGlvbiBCKGUpe3JldHVybiBlPT1udWxsfHxlPT09IiJ9Y29uc3QgcXQ9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9Pih7ZmlsdGVyRm46ImF1dG8ifSksZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uRmlsdGVyczpbXSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtbkZpbHRlcnNDaGFuZ2U6TCgiY29sdW1uRmlsdGVycyIsZSksZmlsdGVyRnJvbUxlYWZSb3dzOiExLG1heExlYWZSb3dGaWx0ZXJEZXB0aDoxMDB9KSxjcmVhdGVDb2x1bW46KGUsbyk9PntlLmdldEF1dG9GaWx0ZXJGbj0oKT0+e2NvbnN0IHQ9by5nZXRDb3JlUm93TW9kZWwoKS5mbGF0Um93c1swXSxuPXQ/LmdldFZhbHVlKGUuaWQpO3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/VS5pbmNsdWRlc1N0cmluZzp0eXBlb2Ygbj09Im51bWJlciI/VS5pbk51bWJlclJhbmdlOnR5cGVvZiBuPT0iYm9vbGVhbiJ8fG4hPT1udWxsJiZ0eXBlb2Ygbj09Im9iamVjdCI/VS5lcXVhbHM6QXJyYXkuaXNBcnJheShuKT9VLmFyckluY2x1ZGVzOlUud2Vha0VxdWFsc30sZS5nZXRGaWx0ZXJGbj0oKT0+e3ZhciB0LG47cmV0dXJuIG1lKGUuY29sdW1uRGVmLmZpbHRlckZuKT9lLmNvbHVtbkRlZi5maWx0ZXJGbjplLmNvbHVtbkRlZi5maWx0ZXJGbj09PSJhdXRvIj9lLmdldEF1dG9GaWx0ZXJGbigpOih0PShuPW8ub3B0aW9ucy5maWx0ZXJGbnMpPT1udWxsP3ZvaWQgMDpuW2UuY29sdW1uRGVmLmZpbHRlckZuXSkhPW51bGw/dDpVW2UuY29sdW1uRGVmLmZpbHRlckZuXX0sZS5nZXRDYW5GaWx0ZXI9KCk9Pnt2YXIgdCxuLGk7cmV0dXJuKCh0PWUuY29sdW1uRGVmLmVuYWJsZUNvbHVtbkZpbHRlcikhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlQ29sdW1uRmlsdGVycykhPW51bGw/bjohMCkmJigoaT1vLm9wdGlvbnMuZW5hYmxlRmlsdGVycykhPW51bGw/aTohMCkmJiEhZS5hY2Nlc3NvckZufSxlLmdldElzRmlsdGVyZWQ9KCk9PmUuZ2V0RmlsdGVySW5kZXgoKT4tMSxlLmdldEZpbHRlclZhbHVlPSgpPT57dmFyIHQ7cmV0dXJuKHQ9by5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMpPT1udWxsfHwodD10LmZpbmQobj0+bi5pZD09PWUuaWQpKT09bnVsbD92b2lkIDA6dC52YWx1ZX0sZS5nZXRGaWx0ZXJJbmRleD0oKT0+e3ZhciB0LG47cmV0dXJuKHQ9KG49by5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMpPT1udWxsP3ZvaWQgMDpuLmZpbmRJbmRleChpPT5pLmlkPT09ZS5pZCkpIT1udWxsP3Q6LTF9LGUuc2V0RmlsdGVyVmFsdWU9dD0+e28uc2V0Q29sdW1uRmlsdGVycyhuPT57Y29uc3QgaT1lLmdldEZpbHRlckZuKCkscj1uPy5maW5kKGM9PmMuaWQ9PT1lLmlkKSxsPUsodCxyP3IudmFsdWU6dm9pZCAwKTtpZihaZShpLGwsZSkpe3ZhciB1O3JldHVybih1PW4/LmZpbHRlcihjPT5jLmlkIT09ZS5pZCkpIT1udWxsP3U6W119Y29uc3QgYT17aWQ6ZS5pZCx2YWx1ZTpsfTtpZihyKXt2YXIgZztyZXR1cm4oZz1uPy5tYXAoYz0+Yy5pZD09PWUuaWQ/YTpjKSkhPW51bGw/ZzpbXX1yZXR1cm4gbiE9bnVsbCYmbi5sZW5ndGg/Wy4uLm4sYV06W2FdfSl9fSxjcmVhdGVSb3c6KGUsbyk9PntlLmNvbHVtbkZpbHRlcnM9e30sZS5jb2x1bW5GaWx0ZXJzTWV0YT17fX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uRmlsdGVycz1vPT57Y29uc3QgdD1lLmdldEFsbExlYWZDb2x1bW5zKCksbj1pPT57dmFyIHI7cmV0dXJuKHI9SyhvLGkpKT09bnVsbD92b2lkIDA6ci5maWx0ZXIobD0+e2NvbnN0IHU9dC5maW5kKGE9PmEuaWQ9PT1sLmlkKTtpZih1KXtjb25zdCBhPXUuZ2V0RmlsdGVyRm4oKTtpZihaZShhLGwudmFsdWUsdSkpcmV0dXJuITF9cmV0dXJuITB9KX07ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZT09bnVsbHx8ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZShuKX0sZS5yZXNldENvbHVtbkZpbHRlcnM9bz0+e3ZhciB0LG47ZS5zZXRDb2x1bW5GaWx0ZXJzKG8/W106KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLmNvbHVtbkZpbHRlcnMpIT1udWxsP3Q6W10pfSxlLmdldFByZUZpbHRlcmVkUm93TW9kZWw9KCk9PmUuZ2V0Q29yZVJvd01vZGVsKCksZS5nZXRGaWx0ZXJlZFJvd01vZGVsPSgpPT4oIWUuX2dldEZpbHRlcmVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRGaWx0ZXJlZFJvd01vZGVsJiYoZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RmlsdGVyZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEZpbHRlcmluZ3x8IWUuX2dldEZpbHRlcmVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbCgpKX19O2Z1bmN0aW9uIFplKGUsbyx0KXtyZXR1cm4oZSYmZS5hdXRvUmVtb3ZlP2UuYXV0b1JlbW92ZShvLHQpOiExKXx8dHlwZW9mIG8+InUifHx0eXBlb2Ygbz09InN0cmluZyImJiFvfWNvbnN0IGt0PShlLG8sdCk9PnQucmVkdWNlKChuLGkpPT57Y29uc3Qgcj1pLmdldFZhbHVlKGUpO3JldHVybiBuKyh0eXBlb2Ygcj09Im51bWJlciI/cjowKX0sMCksQnQ9KGUsbyx0KT0+e2xldCBuO3JldHVybiB0LmZvckVhY2goaT0+e2NvbnN0IHI9aS5nZXRWYWx1ZShlKTtyIT1udWxsJiYobj5yfHxuPT09dm9pZCAwJiZyPj1yKSYmKG49cil9KSxufSxUdD0oZSxvLHQpPT57bGV0IG47cmV0dXJuIHQuZm9yRWFjaChpPT57Y29uc3Qgcj1pLmdldFZhbHVlKGUpO3IhPW51bGwmJihuPHJ8fG49PT12b2lkIDAmJnI+PXIpJiYobj1yKX0pLG59LGp0PShlLG8sdCk9PntsZXQgbixpO3JldHVybiB0LmZvckVhY2gocj0+e2NvbnN0IGw9ci5nZXRWYWx1ZShlKTtsIT1udWxsJiYobj09PXZvaWQgMD9sPj1sJiYobj1pPWwpOihuPmwmJihuPWwpLGk8bCYmKGk9bCkpKX0pLFtuLGldfSxidD0oZSxvKT0+e2xldCB0PTAsbj0wO2lmKG8uZm9yRWFjaChpPT57bGV0IHI9aS5nZXRWYWx1ZShlKTtyIT1udWxsJiYocj0rcik+PXImJigrK3Qsbis9cil9KSx0KXJldHVybiBuL3R9LE50PShlLG8pPT57aWYoIW8ubGVuZ3RoKXJldHVybjtjb25zdCB0PW8ubWFwKHI9PnIuZ2V0VmFsdWUoZSkpO2lmKCF6dCh0KSlyZXR1cm47aWYodC5sZW5ndGg9PT0xKXJldHVybiB0WzBdO2NvbnN0IG49TWF0aC5mbG9vcih0Lmxlbmd0aC8yKSxpPXQuc29ydCgocixsKT0+ci1sKTtyZXR1cm4gdC5sZW5ndGglMiE9PTA/aVtuXTooaVtuLTFdK2lbbl0pLzJ9LFV0PShlLG8pPT5BcnJheS5mcm9tKG5ldyBTZXQoby5tYXAodD0+dC5nZXRWYWx1ZShlKSkpLnZhbHVlcygpKSxYdD0oZSxvKT0+bmV3IFNldChvLm1hcCh0PT50LmdldFZhbHVlKGUpKSkuc2l6ZSxLdD0oZSxvKT0+by5sZW5ndGgsaGU9e3N1bTprdCxtaW46QnQsbWF4OlR0LGV4dGVudDpqdCxtZWFuOmJ0LG1lZGlhbjpOdCx1bmlxdWU6VXQsdW5pcXVlQ291bnQ6WHQsY291bnQ6S3R9LFd0PXtnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe2FnZ3JlZ2F0ZWRDZWxsOmU9Pnt2YXIgbyx0O3JldHVybihvPSh0PWUuZ2V0VmFsdWUoKSk9PW51bGx8fHQudG9TdHJpbmc9PW51bGw/dm9pZCAwOnQudG9TdHJpbmcoKSkhPW51bGw/bzpudWxsfSxhZ2dyZWdhdGlvbkZuOiJhdXRvIn0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2dyb3VwaW5nOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR3JvdXBpbmdDaGFuZ2U6TCgiZ3JvdXBpbmciLGUpLGdyb3VwZWRDb2x1bW5Nb2RlOiJyZW9yZGVyIn0pLGNyZWF0ZUNvbHVtbjooZSxvKT0+e2UudG9nZ2xlR3JvdXBpbmc9KCk9PntvLnNldEdyb3VwaW5nKHQ9PnQhPW51bGwmJnQuaW5jbHVkZXMoZS5pZCk/dC5maWx0ZXIobj0+biE9PWUuaWQpOlsuLi50Pz9bXSxlLmlkXSl9LGUuZ2V0Q2FuR3JvdXA9KCk9Pnt2YXIgdCxuO3JldHVybigodD1lLmNvbHVtbkRlZi5lbmFibGVHcm91cGluZykhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlR3JvdXBpbmcpIT1udWxsP246ITApJiYoISFlLmFjY2Vzc29yRm58fCEhZS5jb2x1bW5EZWYuZ2V0R3JvdXBpbmdWYWx1ZSl9LGUuZ2V0SXNHcm91cGVkPSgpPT57dmFyIHQ7cmV0dXJuKHQ9by5nZXRTdGF0ZSgpLmdyb3VwaW5nKT09bnVsbD92b2lkIDA6dC5pbmNsdWRlcyhlLmlkKX0sZS5nZXRHcm91cGVkSW5kZXg9KCk9Pnt2YXIgdDtyZXR1cm4odD1vLmdldFN0YXRlKCkuZ3JvdXBpbmcpPT1udWxsP3ZvaWQgMDp0LmluZGV4T2YoZS5pZCl9LGUuZ2V0VG9nZ2xlR3JvdXBpbmdIYW5kbGVyPSgpPT57Y29uc3QgdD1lLmdldENhbkdyb3VwKCk7cmV0dXJuKCk9Pnt0JiZlLnRvZ2dsZUdyb3VwaW5nKCl9fSxlLmdldEF1dG9BZ2dyZWdhdGlvbkZuPSgpPT57Y29uc3QgdD1vLmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdLG49dD8uZ2V0VmFsdWUoZS5pZCk7aWYodHlwZW9mIG49PSJudW1iZXIiKXJldHVybiBoZS5zdW07aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pPT09IltvYmplY3QgRGF0ZV0iKXJldHVybiBoZS5leHRlbnR9LGUuZ2V0QWdncmVnYXRpb25Gbj0oKT0+e3ZhciB0LG47aWYoIWUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBtZShlLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuKT9lLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuOmUuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm49PT0iYXV0byI/ZS5nZXRBdXRvQWdncmVnYXRpb25GbigpOih0PShuPW8ub3B0aW9ucy5hZ2dyZWdhdGlvbkZucyk9PW51bGw/dm9pZCAwOm5bZS5jb2x1bW5EZWYuYWdncmVnYXRpb25Gbl0pIT1udWxsP3Q6aGVbZS5jb2x1bW5EZWYuYWdncmVnYXRpb25Gbl19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRHcm91cGluZz1vPT5lLm9wdGlvbnMub25Hcm91cGluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uR3JvdXBpbmdDaGFuZ2UobyksZS5yZXNldEdyb3VwaW5nPW89Pnt2YXIgdCxuO2Uuc2V0R3JvdXBpbmcobz9bXToodD0obj1lLmluaXRpYWxTdGF0ZSk9PW51bGw/dm9pZCAwOm4uZ3JvdXBpbmcpIT1udWxsP3Q6W10pfSxlLmdldFByZUdyb3VwZWRSb3dNb2RlbD0oKT0+ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCksZS5nZXRHcm91cGVkUm93TW9kZWw9KCk9PighZS5fZ2V0R3JvdXBlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0R3JvdXBlZFJvd01vZGVsJiYoZS5fZ2V0R3JvdXBlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRHcm91cGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxHcm91cGluZ3x8IWUuX2dldEdyb3VwZWRSb3dNb2RlbD9lLmdldFByZUdyb3VwZWRSb3dNb2RlbCgpOmUuX2dldEdyb3VwZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLG8pPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PiEhZS5ncm91cGluZ0NvbHVtbklkLGUuZ2V0R3JvdXBpbmdWYWx1ZT10PT57aWYoZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVt0XTtjb25zdCBuPW8uZ2V0Q29sdW1uKHQpO3JldHVybiBuIT1udWxsJiZuLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlPyhlLl9ncm91cGluZ1ZhbHVlc0NhY2hlW3RdPW4uY29sdW1uRGVmLmdldEdyb3VwaW5nVmFsdWUoZS5vcmlnaW5hbCksZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVt0XSk6ZS5nZXRWYWx1ZSh0KX0sZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZT17fX0sY3JlYXRlQ2VsbDooZSxvLHQsbik9PntlLmdldElzR3JvdXBlZD0oKT0+by5nZXRJc0dyb3VwZWQoKSYmby5pZD09PXQuZ3JvdXBpbmdDb2x1bW5JZCxlLmdldElzUGxhY2Vob2xkZXI9KCk9PiFlLmdldElzR3JvdXBlZCgpJiZvLmdldElzR3JvdXBlZCgpLGUuZ2V0SXNBZ2dyZWdhdGVkPSgpPT57dmFyIGk7cmV0dXJuIWUuZ2V0SXNHcm91cGVkKCkmJiFlLmdldElzUGxhY2Vob2xkZXIoKSYmISEoKGk9dC5zdWJSb3dzKSE9bnVsbCYmaS5sZW5ndGgpfX19O2Z1bmN0aW9uIEp0KGUsbyx0KXtpZighKG8hPW51bGwmJm8ubGVuZ3RoKXx8IXQpcmV0dXJuIGU7Y29uc3Qgbj1lLmZpbHRlcihyPT4hby5pbmNsdWRlcyhyLmlkKSk7cmV0dXJuIHQ9PT0icmVtb3ZlIj9uOlsuLi5vLm1hcChyPT5lLmZpbmQobD0+bC5pZD09PXIpKS5maWx0ZXIoQm9vbGVhbiksLi4ubl19Y29uc3QgWXQ9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbk9yZGVyOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uT3JkZXJDaGFuZ2U6TCgiY29sdW1uT3JkZXIiLGUpfSksY3JlYXRlQ29sdW1uOihlLG8pPT57ZS5nZXRJbmRleD1DKHQ9PlthZShvLHQpXSx0PT50LmZpbmRJbmRleChuPT5uLmlkPT09ZS5pZCksdyhvLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldElzRmlyc3RDb2x1bW49dD0+e3ZhciBuO3JldHVybigobj1hZShvLHQpWzBdKT09bnVsbD92b2lkIDA6bi5pZCk9PT1lLmlkfSxlLmdldElzTGFzdENvbHVtbj10PT57dmFyIG47Y29uc3QgaT1hZShvLHQpO3JldHVybigobj1pW2kubGVuZ3RoLTFdKT09bnVsbD92b2lkIDA6bi5pZCk9PT1lLmlkfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uT3JkZXI9bz0+ZS5vcHRpb25zLm9uQ29sdW1uT3JkZXJDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtbk9yZGVyQ2hhbmdlKG8pLGUucmVzZXRDb2x1bW5PcmRlcj1vPT57dmFyIHQ7ZS5zZXRDb2x1bW5PcmRlcihvP1tdOih0PWUuaW5pdGlhbFN0YXRlLmNvbHVtbk9yZGVyKSE9bnVsbD90OltdKX0sZS5fZ2V0T3JkZXJDb2x1bW5zRm49QygoKT0+W2UuZ2V0U3RhdGUoKS5jb2x1bW5PcmRlcixlLmdldFN0YXRlKCkuZ3JvdXBpbmcsZS5vcHRpb25zLmdyb3VwZWRDb2x1bW5Nb2RlXSwobyx0LG4pPT5pPT57bGV0IHI9W107aWYoIShvIT1udWxsJiZvLmxlbmd0aCkpcj1pO2Vsc2V7Y29uc3QgbD1bLi4ub10sdT1bLi4uaV07Zm9yKDt1Lmxlbmd0aCYmbC5sZW5ndGg7KXtjb25zdCBhPWwuc2hpZnQoKSxnPXUuZmluZEluZGV4KGM9PmMuaWQ9PT1hKTtnPi0xJiZyLnB1c2godS5zcGxpY2UoZywxKVswXSl9cj1bLi4uciwuLi51XX1yZXR1cm4gSnQocix0LG4pfSx3KGUub3B0aW9ucywiZGVidWdUYWJsZSIpKX19LEZlPSgpPT4oe2xlZnQ6W10scmlnaHQ6W119KSxRdD17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uUGlubmluZzpGZSgpLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uUGlubmluZ0NoYW5nZTpMKCJjb2x1bW5QaW5uaW5nIixlKX0pLGNyZWF0ZUNvbHVtbjooZSxvKT0+e2UucGluPXQ9Pntjb25zdCBuPWUuZ2V0TGVhZkNvbHVtbnMoKS5tYXAoaT0+aS5pZCkuZmlsdGVyKEJvb2xlYW4pO28uc2V0Q29sdW1uUGlubmluZyhpPT57dmFyIHIsbDtpZih0PT09InJpZ2h0Iil7dmFyIHUsYTtyZXR1cm57bGVmdDooKHU9aT8ubGVmdCkhPW51bGw/dTpbXSkuZmlsdGVyKHA9PiEobiE9bnVsbCYmbi5pbmNsdWRlcyhwKSkpLHJpZ2h0OlsuLi4oKGE9aT8ucmlnaHQpIT1udWxsP2E6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKSwuLi5uXX19aWYodD09PSJsZWZ0Iil7dmFyIGcsYztyZXR1cm57bGVmdDpbLi4uKChnPWk/LmxlZnQpIT1udWxsP2c6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKSwuLi5uXSxyaWdodDooKGM9aT8ucmlnaHQpIT1udWxsP2M6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKX19cmV0dXJue2xlZnQ6KChyPWk/LmxlZnQpIT1udWxsP3I6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKSxyaWdodDooKGw9aT8ucmlnaHQpIT1udWxsP2w6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKX19KX0sZS5nZXRDYW5QaW49KCk9PmUuZ2V0TGVhZkNvbHVtbnMoKS5zb21lKG49Pnt2YXIgaSxyLGw7cmV0dXJuKChpPW4uY29sdW1uRGVmLmVuYWJsZVBpbm5pbmcpIT1udWxsP2k6ITApJiYoKHI9KGw9by5vcHRpb25zLmVuYWJsZUNvbHVtblBpbm5pbmcpIT1udWxsP2w6by5vcHRpb25zLmVuYWJsZVBpbm5pbmcpIT1udWxsP3I6ITApfSksZS5nZXRJc1Bpbm5lZD0oKT0+e2NvbnN0IHQ9ZS5nZXRMZWFmQ29sdW1ucygpLm1hcCh1PT51LmlkKSx7bGVmdDpuLHJpZ2h0Oml9PW8uZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLHI9dC5zb21lKHU9Pm4/LmluY2x1ZGVzKHUpKSxsPXQuc29tZSh1PT5pPy5pbmNsdWRlcyh1KSk7cmV0dXJuIHI/ImxlZnQiOmw/InJpZ2h0IjohMX0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e3ZhciB0LG47Y29uc3QgaT1lLmdldElzUGlubmVkKCk7cmV0dXJuIGk/KHQ9KG49by5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcpPT1udWxsfHwobj1uW2ldKT09bnVsbD92b2lkIDA6bi5pbmRleE9mKGUuaWQpKSE9bnVsbD90Oi0xOjB9fSxjcmVhdGVSb3c6KGUsbyk9PntlLmdldENlbnRlclZpc2libGVDZWxscz1DKCgpPT5bZS5fZ2V0QWxsVmlzaWJsZUNlbGxzKCksby5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxvLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKHQsbixpKT0+e2NvbnN0IHI9Wy4uLm4/P1tdLC4uLmk/P1tdXTtyZXR1cm4gdC5maWx0ZXIobD0+IXIuaW5jbHVkZXMobC5jb2x1bW4uaWQpKX0sdyhvLm9wdGlvbnMsImRlYnVnUm93cyIpKSxlLmdldExlZnRWaXNpYmxlQ2VsbHM9QygoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLG8uZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLCh0LG4pPT4obj8/W10pLm1hcChyPT50LmZpbmQobD0+bC5jb2x1bW4uaWQ9PT1yKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChyPT4oey4uLnIscG9zaXRpb246ImxlZnQifSkpLHcoby5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRSaWdodFZpc2libGVDZWxscz1DKCgpPT5bZS5fZ2V0QWxsVmlzaWJsZUNlbGxzKCksby5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLCh0LG4pPT4obj8/W10pLm1hcChyPT50LmZpbmQobD0+bC5jb2x1bW4uaWQ9PT1yKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChyPT4oey4uLnIscG9zaXRpb246InJpZ2h0In0pKSx3KG8ub3B0aW9ucywiZGVidWdSb3dzIikpfSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5QaW5uaW5nPW89PmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2UobyksZS5yZXNldENvbHVtblBpbm5pbmc9bz0+e3ZhciB0LG47cmV0dXJuIGUuc2V0Q29sdW1uUGlubmluZyhvP0ZlKCk6KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLmNvbHVtblBpbm5pbmcpIT1udWxsP3Q6RmUoKSl9LGUuZ2V0SXNTb21lQ29sdW1uc1Bpbm5lZD1vPT57dmFyIHQ7Y29uc3Qgbj1lLmdldFN0YXRlKCkuY29sdW1uUGlubmluZztpZighbyl7dmFyIGkscjtyZXR1cm4hISgoaT1uLmxlZnQpIT1udWxsJiZpLmxlbmd0aHx8KHI9bi5yaWdodCkhPW51bGwmJnIubGVuZ3RoKX1yZXR1cm4hISgodD1uW29dKSE9bnVsbCYmdC5sZW5ndGgpfSxlLmdldExlZnRMZWFmQ29sdW1ucz1DKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChvLHQpPT4odD8/W10pLm1hcChuPT5vLmZpbmQoaT0+aS5pZD09PW4pKS5maWx0ZXIoQm9vbGVhbiksdyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldFJpZ2h0TGVhZkNvbHVtbnM9QygoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKG8sdCk9Pih0Pz9bXSkubWFwKG49Pm8uZmluZChpPT5pLmlkPT09bikpLmZpbHRlcihCb29sZWFuKSx3KGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUuZ2V0Q2VudGVyTGVhZkNvbHVtbnM9QygoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwobyx0LG4pPT57Y29uc3QgaT1bLi4udD8/W10sLi4ubj8/W11dO3JldHVybiBvLmZpbHRlcihyPT4haS5pbmNsdWRlcyhyLmlkKSl9LHcoZS5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSl9fTtmdW5jdGlvbiBadChlKXtyZXR1cm4gZXx8KHR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQ6bnVsbCl9Y29uc3QgY2U9e3NpemU6MTUwLG1pblNpemU6MjAsbWF4U2l6ZTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0seWU9KCk9Pih7c3RhcnRPZmZzZXQ6bnVsbCxzdGFydFNpemU6bnVsbCxkZWx0YU9mZnNldDpudWxsLGRlbHRhUGVyY2VudGFnZTpudWxsLGlzUmVzaXppbmdDb2x1bW46ITEsY29sdW1uU2l6aW5nU3RhcnQ6W119KSxlbj17Z2V0RGVmYXVsdENvbHVtbkRlZjooKT0+Y2UsZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uU2l6aW5nOnt9LGNvbHVtblNpemluZ0luZm86eWUoKSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtjb2x1bW5SZXNpemVNb2RlOiJvbkVuZCIsY29sdW1uUmVzaXplRGlyZWN0aW9uOiJsdHIiLG9uQ29sdW1uU2l6aW5nQ2hhbmdlOkwoImNvbHVtblNpemluZyIsZSksb25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlOkwoImNvbHVtblNpemluZ0luZm8iLGUpfSksY3JlYXRlQ29sdW1uOihlLG8pPT57ZS5nZXRTaXplPSgpPT57dmFyIHQsbixpO2NvbnN0IHI9by5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ1tlLmlkXTtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoKHQ9ZS5jb2x1bW5EZWYubWluU2l6ZSkhPW51bGw/dDpjZS5taW5TaXplLChuPXI/P2UuY29sdW1uRGVmLnNpemUpIT1udWxsP246Y2Uuc2l6ZSksKGk9ZS5jb2x1bW5EZWYubWF4U2l6ZSkhPW51bGw/aTpjZS5tYXhTaXplKX0sZS5nZXRTdGFydD1DKHQ9Plt0LGFlKG8sdCksby5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ10sKHQsbik9Pm4uc2xpY2UoMCxlLmdldEluZGV4KHQpKS5yZWR1Y2UoKGkscik9Pmkrci5nZXRTaXplKCksMCksdyhvLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldEFmdGVyPUModD0+W3QsYWUobyx0KSxvLmdldFN0YXRlKCkuY29sdW1uU2l6aW5nXSwodCxuKT0+bi5zbGljZShlLmdldEluZGV4KHQpKzEpLnJlZHVjZSgoaSxyKT0+aStyLmdldFNpemUoKSwwKSx3KG8ub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUucmVzZXRTaXplPSgpPT57by5zZXRDb2x1bW5TaXppbmcodD0+e2xldHtbZS5pZF06biwuLi5pfT10O3JldHVybiBpfSl9LGUuZ2V0Q2FuUmVzaXplPSgpPT57dmFyIHQsbjtyZXR1cm4oKHQ9ZS5jb2x1bW5EZWYuZW5hYmxlUmVzaXppbmcpIT1udWxsP3Q6ITApJiYoKG49by5vcHRpb25zLmVuYWJsZUNvbHVtblJlc2l6aW5nKSE9bnVsbD9uOiEwKX0sZS5nZXRJc1Jlc2l6aW5nPSgpPT5vLmdldFN0YXRlKCkuY29sdW1uU2l6aW5nSW5mby5pc1Jlc2l6aW5nQ29sdW1uPT09ZS5pZH0sY3JlYXRlSGVhZGVyOihlLG8pPT57ZS5nZXRTaXplPSgpPT57bGV0IHQ9MDtjb25zdCBuPWk9PntpZihpLnN1YkhlYWRlcnMubGVuZ3RoKWkuc3ViSGVhZGVycy5mb3JFYWNoKG4pO2Vsc2V7dmFyIHI7dCs9KHI9aS5jb2x1bW4uZ2V0U2l6ZSgpKSE9bnVsbD9yOjB9fTtyZXR1cm4gbihlKSx0fSxlLmdldFN0YXJ0PSgpPT57aWYoZS5pbmRleD4wKXtjb25zdCB0PWUuaGVhZGVyR3JvdXAuaGVhZGVyc1tlLmluZGV4LTFdO3JldHVybiB0LmdldFN0YXJ0KCkrdC5nZXRTaXplKCl9cmV0dXJuIDB9LGUuZ2V0UmVzaXplSGFuZGxlcj10PT57Y29uc3Qgbj1vLmdldENvbHVtbihlLmNvbHVtbi5pZCksaT1uPy5nZXRDYW5SZXNpemUoKTtyZXR1cm4gcj0+e2lmKCFufHwhaXx8KHIucGVyc2lzdD09bnVsbHx8ci5wZXJzaXN0KCksX2UocikmJnIudG91Y2hlcyYmci50b3VjaGVzLmxlbmd0aD4xKSlyZXR1cm47Y29uc3QgbD1lLmdldFNpemUoKSx1PWU/ZS5nZXRMZWFmSGVhZGVycygpLm1hcChSPT5bUi5jb2x1bW4uaWQsUi5jb2x1bW4uZ2V0U2l6ZSgpXSk6W1tuLmlkLG4uZ2V0U2l6ZSgpXV0sYT1fZShyKT9NYXRoLnJvdW5kKHIudG91Y2hlc1swXS5jbGllbnRYKTpyLmNsaWVudFgsZz17fSxjPShSLHgpPT57dHlwZW9mIHg9PSJudW1iZXIiJiYoby5zZXRDb2x1bW5TaXppbmdJbmZvKFA9Pnt2YXIgeixNO2NvbnN0IFQ9by5vcHRpb25zLmNvbHVtblJlc2l6ZURpcmVjdGlvbj09PSJydGwiPy0xOjEsWT0oeC0oKHo9UD8uc3RhcnRPZmZzZXQpIT1udWxsP3o6MCkpKlQsUT1NYXRoLm1heChZLygoTT1QPy5zdGFydFNpemUpIT1udWxsP006MCksLS45OTk5OTkpO3JldHVybiBQLmNvbHVtblNpemluZ1N0YXJ0LmZvckVhY2godGU9PntsZXRbbmUsWl09dGU7Z1tuZV09TWF0aC5yb3VuZChNYXRoLm1heChaK1oqUSwwKSoxMDApLzEwMH0pLHsuLi5QLGRlbHRhT2Zmc2V0OlksZGVsdGFQZXJjZW50YWdlOlF9fSksKG8ub3B0aW9ucy5jb2x1bW5SZXNpemVNb2RlPT09Im9uQ2hhbmdlInx8Uj09PSJlbmQiKSYmby5zZXRDb2x1bW5TaXppbmcoUD0+KHsuLi5QLC4uLmd9KSkpfSxwPVI9PmMoIm1vdmUiLFIpLGQ9Uj0+e2MoImVuZCIsUiksby5zZXRDb2x1bW5TaXppbmdJbmZvKHg9Pih7Li4ueCxpc1Jlc2l6aW5nQ29sdW1uOiExLHN0YXJ0T2Zmc2V0Om51bGwsc3RhcnRTaXplOm51bGwsZGVsdGFPZmZzZXQ6bnVsbCxkZWx0YVBlcmNlbnRhZ2U6bnVsbCxjb2x1bW5TaXppbmdTdGFydDpbXX0pKX0scz1adCh0KSxmPXttb3ZlSGFuZGxlcjpSPT5wKFIuY2xpZW50WCksdXBIYW5kbGVyOlI9PntzPy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGYubW92ZUhhbmRsZXIpLHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGYudXBIYW5kbGVyKSxkKFIuY2xpZW50WCl9fSxtPXttb3ZlSGFuZGxlcjpSPT4oUi5jYW5jZWxhYmxlJiYoUi5wcmV2ZW50RGVmYXVsdCgpLFIuc3RvcFByb3BhZ2F0aW9uKCkpLHAoUi50b3VjaGVzWzBdLmNsaWVudFgpLCExKSx1cEhhbmRsZXI6Uj0+e3ZhciB4O3M/LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsbS5tb3ZlSGFuZGxlcikscz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLG0udXBIYW5kbGVyKSxSLmNhbmNlbGFibGUmJihSLnByZXZlbnREZWZhdWx0KCksUi5zdG9wUHJvcGFnYXRpb24oKSksZCgoeD1SLnRvdWNoZXNbMF0pPT1udWxsP3ZvaWQgMDp4LmNsaWVudFgpfX0saD10bigpP3twYXNzaXZlOiExfTohMTtfZShyKT8ocz8uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixtLm1vdmVIYW5kbGVyLGgpLHM/LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixtLnVwSGFuZGxlcixoKSk6KHM/LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZi5tb3ZlSGFuZGxlcixoKSxzPy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixmLnVwSGFuZGxlcixoKSksby5zZXRDb2x1bW5TaXppbmdJbmZvKFI9Pih7Li4uUixzdGFydE9mZnNldDphLHN0YXJ0U2l6ZTpsLGRlbHRhT2Zmc2V0OjAsZGVsdGFQZXJjZW50YWdlOjAsY29sdW1uU2l6aW5nU3RhcnQ6dSxpc1Jlc2l6aW5nQ29sdW1uOm4uaWR9KSl9fX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uU2l6aW5nPW89PmUub3B0aW9ucy5vbkNvbHVtblNpemluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uU2l6aW5nQ2hhbmdlKG8pLGUuc2V0Q29sdW1uU2l6aW5nSW5mbz1vPT5lLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlKG8pLGUucmVzZXRDb2x1bW5TaXppbmc9bz0+e3ZhciB0O2Uuc2V0Q29sdW1uU2l6aW5nKG8/e306KHQ9ZS5pbml0aWFsU3RhdGUuY29sdW1uU2l6aW5nKSE9bnVsbD90Ont9KX0sZS5yZXNldEhlYWRlclNpemVJbmZvPW89Pnt2YXIgdDtlLnNldENvbHVtblNpemluZ0luZm8obz95ZSgpOih0PWUuaW5pdGlhbFN0YXRlLmNvbHVtblNpemluZ0luZm8pIT1udWxsP3Q6eWUoKSl9LGUuZ2V0VG90YWxTaXplPSgpPT57dmFyIG8sdDtyZXR1cm4obz0odD1lLmdldEhlYWRlckdyb3VwcygpWzBdKT09bnVsbD92b2lkIDA6dC5oZWFkZXJzLnJlZHVjZSgobixpKT0+bitpLmdldFNpemUoKSwwKSkhPW51bGw/bzowfSxlLmdldExlZnRUb3RhbFNpemU9KCk9Pnt2YXIgbyx0O3JldHVybihvPSh0PWUuZ2V0TGVmdEhlYWRlckdyb3VwcygpWzBdKT09bnVsbD92b2lkIDA6dC5oZWFkZXJzLnJlZHVjZSgobixpKT0+bitpLmdldFNpemUoKSwwKSkhPW51bGw/bzowfSxlLmdldENlbnRlclRvdGFsU2l6ZT0oKT0+e3ZhciBvLHQ7cmV0dXJuKG89KHQ9ZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKVswXSk9PW51bGw/dm9pZCAwOnQuaGVhZGVycy5yZWR1Y2UoKG4saSk9Pm4raS5nZXRTaXplKCksMCkpIT1udWxsP286MH0sZS5nZXRSaWdodFRvdGFsU2l6ZT0oKT0+e3ZhciBvLHQ7cmV0dXJuKG89KHQ9ZS5nZXRSaWdodEhlYWRlckdyb3VwcygpWzBdKT09bnVsbD92b2lkIDA6dC5oZWFkZXJzLnJlZHVjZSgobixpKT0+bitpLmdldFNpemUoKSwwKSkhPW51bGw/bzowfX19O2xldCBmZT1udWxsO2Z1bmN0aW9uIHRuKCl7aWYodHlwZW9mIGZlPT0iYm9vbGVhbiIpcmV0dXJuIGZlO2xldCBlPSExO3RyeXtjb25zdCBvPXtnZXQgcGFzc2l2ZSgpe3JldHVybiBlPSEwLCExfX0sdD0oKT0+e307d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHQsbyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLHQpfWNhdGNoe2U9ITF9cmV0dXJuIGZlPWUsZmV9ZnVuY3Rpb24gX2UoZSl7cmV0dXJuIGUudHlwZT09PSJ0b3VjaHN0YXJ0In1jb25zdCBubj17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uVmlzaWJpbGl0eTp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtblZpc2liaWxpdHlDaGFuZ2U6TCgiY29sdW1uVmlzaWJpbGl0eSIsZSl9KSxjcmVhdGVDb2x1bW46KGUsbyk9PntlLnRvZ2dsZVZpc2liaWxpdHk9dD0+e2UuZ2V0Q2FuSGlkZSgpJiZvLnNldENvbHVtblZpc2liaWxpdHkobj0+KHsuLi5uLFtlLmlkXTp0Pz8hZS5nZXRJc1Zpc2libGUoKX0pKX0sZS5nZXRJc1Zpc2libGU9KCk9Pnt2YXIgdCxuO2NvbnN0IGk9ZS5jb2x1bW5zO3JldHVybih0PWkubGVuZ3RoP2kuc29tZShyPT5yLmdldElzVmlzaWJsZSgpKToobj1vLmdldFN0YXRlKCkuY29sdW1uVmlzaWJpbGl0eSk9PW51bGw/dm9pZCAwOm5bZS5pZF0pIT1udWxsP3Q6ITB9LGUuZ2V0Q2FuSGlkZT0oKT0+e3ZhciB0LG47cmV0dXJuKCh0PWUuY29sdW1uRGVmLmVuYWJsZUhpZGluZykhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlSGlkaW5nKSE9bnVsbD9uOiEwKX0sZS5nZXRUb2dnbGVWaXNpYmlsaXR5SGFuZGxlcj0oKT0+dD0+e2UudG9nZ2xlVmlzaWJpbGl0eT09bnVsbHx8ZS50b2dnbGVWaXNpYmlsaXR5KHQudGFyZ2V0LmNoZWNrZWQpfX0sY3JlYXRlUm93OihlLG8pPT57ZS5fZ2V0QWxsVmlzaWJsZUNlbGxzPUMoKCk9PltlLmdldEFsbENlbGxzKCksby5nZXRTdGF0ZSgpLmNvbHVtblZpc2liaWxpdHldLHQ9PnQuZmlsdGVyKG49Pm4uY29sdW1uLmdldElzVmlzaWJsZSgpKSx3KG8ub3B0aW9ucywiZGVidWdSb3dzIikpLGUuZ2V0VmlzaWJsZUNlbGxzPUMoKCk9PltlLmdldExlZnRWaXNpYmxlQ2VsbHMoKSxlLmdldENlbnRlclZpc2libGVDZWxscygpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHMoKV0sKHQsbixpKT0+Wy4uLnQsLi4ubiwuLi5pXSx3KG8ub3B0aW9ucywiZGVidWdSb3dzIikpfSxjcmVhdGVUYWJsZTplPT57Y29uc3Qgbz0odCxuKT0+QygoKT0+W24oKSxuKCkuZmlsdGVyKGk9PmkuZ2V0SXNWaXNpYmxlKCkpLm1hcChpPT5pLmlkKS5qb2luKCJfIildLGk9PmkuZmlsdGVyKHI9PnIuZ2V0SXNWaXNpYmxlPT1udWxsP3ZvaWQgMDpyLmdldElzVmlzaWJsZSgpKSx3KGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpO2UuZ2V0VmlzaWJsZUZsYXRDb2x1bW5zPW8oImdldFZpc2libGVGbGF0Q29sdW1ucyIsKCk9PmUuZ2V0QWxsRmxhdENvbHVtbnMoKSksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0VmlzaWJsZUxlYWZDb2x1bW5zIiwoKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpKSxlLmdldExlZnRWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1ucyIsKCk9PmUuZ2V0TGVmdExlYWZDb2x1bW5zKCkpLGUuZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnMiLCgpPT5lLmdldFJpZ2h0TGVhZkNvbHVtbnMoKSksZS5nZXRDZW50ZXJWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0Q2VudGVyVmlzaWJsZUxlYWZDb2x1bW5zIiwoKT0+ZS5nZXRDZW50ZXJMZWFmQ29sdW1ucygpKSxlLnNldENvbHVtblZpc2liaWxpdHk9dD0+ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uVmlzaWJpbGl0eT10PT57dmFyIG47ZS5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ/e306KG49ZS5pbml0aWFsU3RhdGUuY29sdW1uVmlzaWJpbGl0eSkhPW51bGw/bjp7fSl9LGUudG9nZ2xlQWxsQ29sdW1uc1Zpc2libGU9dD0+e3ZhciBuO3Q9KG49dCkhPW51bGw/bjohZS5nZXRJc0FsbENvbHVtbnNWaXNpYmxlKCksZS5zZXRDb2x1bW5WaXNpYmlsaXR5KGUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5yZWR1Y2UoKGkscik9Pih7Li4uaSxbci5pZF06dHx8IShyLmdldENhbkhpZGUhPW51bGwmJnIuZ2V0Q2FuSGlkZSgpKX0pLHt9KSl9LGUuZ2V0SXNBbGxDb2x1bW5zVmlzaWJsZT0oKT0+IWUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5zb21lKHQ9PiEodC5nZXRJc1Zpc2libGUhPW51bGwmJnQuZ2V0SXNWaXNpYmxlKCkpKSxlLmdldElzU29tZUNvbHVtbnNWaXNpYmxlPSgpPT5lLmdldEFsbExlYWZDb2x1bW5zKCkuc29tZSh0PT50LmdldElzVmlzaWJsZT09bnVsbD92b2lkIDA6dC5nZXRJc1Zpc2libGUoKSksZS5nZXRUb2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eUhhbmRsZXI9KCk9PnQ9Pnt2YXIgbjtlLnRvZ2dsZUFsbENvbHVtbnNWaXNpYmxlKChuPXQudGFyZ2V0KT09bnVsbD92b2lkIDA6bi5jaGVja2VkKX19fTtmdW5jdGlvbiBhZShlLG8pe3JldHVybiBvP289PT0iY2VudGVyIj9lLmdldENlbnRlclZpc2libGVMZWFmQ29sdW1ucygpOm89PT0ibGVmdCI/ZS5nZXRMZWZ0VmlzaWJsZUxlYWZDb2x1bW5zKCk6ZS5nZXRSaWdodFZpc2libGVMZWFmQ29sdW1ucygpOmUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCl9Y29uc3Qgb249e2NyZWF0ZVRhYmxlOmU9PntlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9ZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbChlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9KCk9PmUub3B0aW9ucy5tYW51YWxGaWx0ZXJpbmd8fCFlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsKCksZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz1lLm9wdGlvbnMuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcyYmZS5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoZSwiX19nbG9iYWxfXyIpLGUuZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz0oKT0+ZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz9lLl9nZXRHbG9iYWxGYWNldGVkVW5pcXVlVmFsdWVzKCk6bmV3IE1hcCxlLl9nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPWUub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzJiZlLm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyhlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcygpfX19LHJuPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtnbG9iYWxGaWx0ZXI6dm9pZCAwLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR2xvYmFsRmlsdGVyQ2hhbmdlOkwoImdsb2JhbEZpbHRlciIsZSksZ2xvYmFsRmlsdGVyRm46ImF1dG8iLGdldENvbHVtbkNhbkdsb2JhbEZpbHRlcjpvPT57dmFyIHQ7Y29uc3Qgbj0odD1lLmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdKT09bnVsbHx8KHQ9dC5fZ2V0QWxsQ2VsbHNCeUNvbHVtbklkKClbby5pZF0pPT1udWxsP3ZvaWQgMDp0LmdldFZhbHVlKCk7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nInx8dHlwZW9mIG49PSJudW1iZXIifX0pLGNyZWF0ZUNvbHVtbjooZSxvKT0+e2UuZ2V0Q2FuR2xvYmFsRmlsdGVyPSgpPT57dmFyIHQsbixpLHI7cmV0dXJuKCh0PWUuY29sdW1uRGVmLmVuYWJsZUdsb2JhbEZpbHRlcikhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlR2xvYmFsRmlsdGVyKSE9bnVsbD9uOiEwKSYmKChpPW8ub3B0aW9ucy5lbmFibGVGaWx0ZXJzKSE9bnVsbD9pOiEwKSYmKChyPW8ub3B0aW9ucy5nZXRDb2x1bW5DYW5HbG9iYWxGaWx0ZXI9PW51bGw/dm9pZCAwOm8ub3B0aW9ucy5nZXRDb2x1bW5DYW5HbG9iYWxGaWx0ZXIoZSkpIT1udWxsP3I6ITApJiYhIWUuYWNjZXNzb3JGbn19LGNyZWF0ZVRhYmxlOmU9PntlLmdldEdsb2JhbEF1dG9GaWx0ZXJGbj0oKT0+VS5pbmNsdWRlc1N0cmluZyxlLmdldEdsb2JhbEZpbHRlckZuPSgpPT57dmFyIG8sdDtjb25zdHtnbG9iYWxGaWx0ZXJGbjpufT1lLm9wdGlvbnM7cmV0dXJuIG1lKG4pP246bj09PSJhdXRvIj9lLmdldEdsb2JhbEF1dG9GaWx0ZXJGbigpOihvPSh0PWUub3B0aW9ucy5maWx0ZXJGbnMpPT1udWxsP3ZvaWQgMDp0W25dKSE9bnVsbD9vOlVbbl19LGUuc2V0R2xvYmFsRmlsdGVyPW89PntlLm9wdGlvbnMub25HbG9iYWxGaWx0ZXJDaGFuZ2U9PW51bGx8fGUub3B0aW9ucy5vbkdsb2JhbEZpbHRlckNoYW5nZShvKX0sZS5yZXNldEdsb2JhbEZpbHRlcj1vPT57ZS5zZXRHbG9iYWxGaWx0ZXIobz92b2lkIDA6ZS5pbml0aWFsU3RhdGUuZ2xvYmFsRmlsdGVyKX19fSxsbj17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7ZXhwYW5kZWQ6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25FeHBhbmRlZENoYW5nZTpMKCJleHBhbmRlZCIsZSkscGFnaW5hdGVFeHBhbmRlZFJvd3M6ITB9KSxjcmVhdGVUYWJsZTplPT57bGV0IG89ITEsdD0hMTtlLl9hdXRvUmVzZXRFeHBhbmRlZD0oKT0+e3ZhciBuLGk7aWYoIW8pe2UuX3F1ZXVlKCgpPT57bz0hMH0pO3JldHVybn1pZigobj0oaT1lLm9wdGlvbnMuYXV0b1Jlc2V0QWxsKSE9bnVsbD9pOmUub3B0aW9ucy5hdXRvUmVzZXRFeHBhbmRlZCkhPW51bGw/bjohZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZyl7aWYodClyZXR1cm47dD0hMCxlLl9xdWV1ZSgoKT0+e2UucmVzZXRFeHBhbmRlZCgpLHQ9ITF9KX19LGUuc2V0RXhwYW5kZWQ9bj0+ZS5vcHRpb25zLm9uRXhwYW5kZWRDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkV4cGFuZGVkQ2hhbmdlKG4pLGUudG9nZ2xlQWxsUm93c0V4cGFuZGVkPW49PntuPz8hZS5nZXRJc0FsbFJvd3NFeHBhbmRlZCgpP2Uuc2V0RXhwYW5kZWQoITApOmUuc2V0RXhwYW5kZWQoe30pfSxlLnJlc2V0RXhwYW5kZWQ9bj0+e3ZhciBpLHI7ZS5zZXRFeHBhbmRlZChuP3t9OihpPShyPWUuaW5pdGlhbFN0YXRlKT09bnVsbD92b2lkIDA6ci5leHBhbmRlZCkhPW51bGw/aTp7fSl9LGUuZ2V0Q2FuU29tZVJvd3NFeHBhbmQ9KCk9PmUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsKCkuZmxhdFJvd3Muc29tZShuPT5uLmdldENhbkV4cGFuZCgpKSxlLmdldFRvZ2dsZUFsbFJvd3NFeHBhbmRlZEhhbmRsZXI9KCk9Pm49PntuLnBlcnNpc3Q9PW51bGx8fG4ucGVyc2lzdCgpLGUudG9nZ2xlQWxsUm93c0V4cGFuZGVkKCl9LGUuZ2V0SXNTb21lUm93c0V4cGFuZGVkPSgpPT57Y29uc3Qgbj1lLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuIG49PT0hMHx8T2JqZWN0LnZhbHVlcyhuKS5zb21lKEJvb2xlYW4pfSxlLmdldElzQWxsUm93c0V4cGFuZGVkPSgpPT57Y29uc3Qgbj1lLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuIHR5cGVvZiBuPT0iYm9vbGVhbiI/bj09PSEwOiEoIU9iamVjdC5rZXlzKG4pLmxlbmd0aHx8ZS5nZXRSb3dNb2RlbCgpLmZsYXRSb3dzLnNvbWUoaT0+IWkuZ2V0SXNFeHBhbmRlZCgpKSl9LGUuZ2V0RXhwYW5kZWREZXB0aD0oKT0+e2xldCBuPTA7cmV0dXJuKGUuZ2V0U3RhdGUoKS5leHBhbmRlZD09PSEwP09iamVjdC5rZXlzKGUuZ2V0Um93TW9kZWwoKS5yb3dzQnlJZCk6T2JqZWN0LmtleXMoZS5nZXRTdGF0ZSgpLmV4cGFuZGVkKSkuZm9yRWFjaChyPT57Y29uc3QgbD1yLnNwbGl0KCIuIik7bj1NYXRoLm1heChuLGwubGVuZ3RoKX0pLG59LGUuZ2V0UHJlRXhwYW5kZWRSb3dNb2RlbD0oKT0+ZS5nZXRTb3J0ZWRSb3dNb2RlbCgpLGUuZ2V0RXhwYW5kZWRSb3dNb2RlbD0oKT0+KCFlLl9nZXRFeHBhbmRlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0RXhwYW5kZWRSb3dNb2RlbCYmKGUuX2dldEV4cGFuZGVkUm93TW9kZWw9ZS5vcHRpb25zLmdldEV4cGFuZGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxFeHBhbmRpbmd8fCFlLl9nZXRFeHBhbmRlZFJvd01vZGVsP2UuZ2V0UHJlRXhwYW5kZWRSb3dNb2RlbCgpOmUuX2dldEV4cGFuZGVkUm93TW9kZWwoKSl9LGNyZWF0ZVJvdzooZSxvKT0+e2UudG9nZ2xlRXhwYW5kZWQ9dD0+e28uc2V0RXhwYW5kZWQobj0+e3ZhciBpO2NvbnN0IHI9bj09PSEwPyEwOiEhKG4hPW51bGwmJm5bZS5pZF0pO2xldCBsPXt9O2lmKG49PT0hMD9PYmplY3Qua2V5cyhvLmdldFJvd01vZGVsKCkucm93c0J5SWQpLmZvckVhY2godT0+e2xbdV09ITB9KTpsPW4sdD0oaT10KSE9bnVsbD9pOiFyLCFyJiZ0KXJldHVybnsuLi5sLFtlLmlkXTohMH07aWYociYmIXQpe2NvbnN0e1tlLmlkXTp1LC4uLmF9PWw7cmV0dXJuIGF9cmV0dXJuIG59KX0sZS5nZXRJc0V4cGFuZGVkPSgpPT57dmFyIHQ7Y29uc3Qgbj1vLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuISEoKHQ9by5vcHRpb25zLmdldElzUm93RXhwYW5kZWQ9PW51bGw/dm9pZCAwOm8ub3B0aW9ucy5nZXRJc1Jvd0V4cGFuZGVkKGUpKSE9bnVsbD90Om49PT0hMHx8bj8uW2UuaWRdKX0sZS5nZXRDYW5FeHBhbmQ9KCk9Pnt2YXIgdCxuLGk7cmV0dXJuKHQ9by5vcHRpb25zLmdldFJvd0NhbkV4cGFuZD09bnVsbD92b2lkIDA6by5vcHRpb25zLmdldFJvd0NhbkV4cGFuZChlKSkhPW51bGw/dDooKG49by5vcHRpb25zLmVuYWJsZUV4cGFuZGluZykhPW51bGw/bjohMCkmJiEhKChpPWUuc3ViUm93cykhPW51bGwmJmkubGVuZ3RoKX0sZS5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZD0oKT0+e2xldCB0PSEwLG49ZTtmb3IoO3QmJm4ucGFyZW50SWQ7KW49by5nZXRSb3cobi5wYXJlbnRJZCwhMCksdD1uLmdldElzRXhwYW5kZWQoKTtyZXR1cm4gdH0sZS5nZXRUb2dnbGVFeHBhbmRlZEhhbmRsZXI9KCk9Pntjb25zdCB0PWUuZ2V0Q2FuRXhwYW5kKCk7cmV0dXJuKCk9Pnt0JiZlLnRvZ2dsZUV4cGFuZGVkKCl9fX19LE1lPTAsRGU9MTAsJGU9KCk9Pih7cGFnZUluZGV4Ok1lLHBhZ2VTaXplOkRlfSksc249e2dldEluaXRpYWxTdGF0ZTplPT4oey4uLmUscGFnaW5hdGlvbjp7Li4uJGUoKSwuLi5lPy5wYWdpbmF0aW9ufX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25QYWdpbmF0aW9uQ2hhbmdlOkwoInBhZ2luYXRpb24iLGUpfSksY3JlYXRlVGFibGU6ZT0+e2xldCBvPSExLHQ9ITE7ZS5fYXV0b1Jlc2V0UGFnZUluZGV4PSgpPT57dmFyIG4saTtpZighbyl7ZS5fcXVldWUoKCk9PntvPSEwfSk7cmV0dXJufWlmKChuPShpPWUub3B0aW9ucy5hdXRvUmVzZXRBbGwpIT1udWxsP2k6ZS5vcHRpb25zLmF1dG9SZXNldFBhZ2VJbmRleCkhPW51bGw/bjohZS5vcHRpb25zLm1hbnVhbFBhZ2luYXRpb24pe2lmKHQpcmV0dXJuO3Q9ITAsZS5fcXVldWUoKCk9PntlLnJlc2V0UGFnZUluZGV4KCksdD0hMX0pfX0sZS5zZXRQYWdpbmF0aW9uPW49Pntjb25zdCBpPXI9PksobixyKTtyZXR1cm4gZS5vcHRpb25zLm9uUGFnaW5hdGlvbkNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uUGFnaW5hdGlvbkNoYW5nZShpKX0sZS5yZXNldFBhZ2luYXRpb249bj0+e3ZhciBpO2Uuc2V0UGFnaW5hdGlvbihuPyRlKCk6KGk9ZS5pbml0aWFsU3RhdGUucGFnaW5hdGlvbikhPW51bGw/aTokZSgpKX0sZS5zZXRQYWdlSW5kZXg9bj0+e2Uuc2V0UGFnaW5hdGlvbihpPT57bGV0IHI9SyhuLGkucGFnZUluZGV4KTtjb25zdCBsPXR5cGVvZiBlLm9wdGlvbnMucGFnZUNvdW50PiJ1Inx8ZS5vcHRpb25zLnBhZ2VDb3VudD09PS0xP051bWJlci5NQVhfU0FGRV9JTlRFR0VSOmUub3B0aW9ucy5wYWdlQ291bnQtMTtyZXR1cm4gcj1NYXRoLm1heCgwLE1hdGgubWluKHIsbCkpLHsuLi5pLHBhZ2VJbmRleDpyfX0pfSxlLnJlc2V0UGFnZUluZGV4PW49Pnt2YXIgaSxyO2Uuc2V0UGFnZUluZGV4KG4/TWU6KGk9KHI9ZS5pbml0aWFsU3RhdGUpPT1udWxsfHwocj1yLnBhZ2luYXRpb24pPT1udWxsP3ZvaWQgMDpyLnBhZ2VJbmRleCkhPW51bGw/aTpNZSl9LGUucmVzZXRQYWdlU2l6ZT1uPT57dmFyIGkscjtlLnNldFBhZ2VTaXplKG4/RGU6KGk9KHI9ZS5pbml0aWFsU3RhdGUpPT1udWxsfHwocj1yLnBhZ2luYXRpb24pPT1udWxsP3ZvaWQgMDpyLnBhZ2VTaXplKSE9bnVsbD9pOkRlKX0sZS5zZXRQYWdlU2l6ZT1uPT57ZS5zZXRQYWdpbmF0aW9uKGk9Pntjb25zdCByPU1hdGgubWF4KDEsSyhuLGkucGFnZVNpemUpKSxsPWkucGFnZVNpemUqaS5wYWdlSW5kZXgsdT1NYXRoLmZsb29yKGwvcik7cmV0dXJuey4uLmkscGFnZUluZGV4OnUscGFnZVNpemU6cn19KX0sZS5zZXRQYWdlQ291bnQ9bj0+ZS5zZXRQYWdpbmF0aW9uKGk9Pnt2YXIgcjtsZXQgbD1LKG4sKHI9ZS5vcHRpb25zLnBhZ2VDb3VudCkhPW51bGw/cjotMSk7cmV0dXJuIHR5cGVvZiBsPT0ibnVtYmVyIiYmKGw9TWF0aC5tYXgoLTEsbCkpLHsuLi5pLHBhZ2VDb3VudDpsfX0pLGUuZ2V0UGFnZU9wdGlvbnM9QygoKT0+W2UuZ2V0UGFnZUNvdW50KCldLG49PntsZXQgaT1bXTtyZXR1cm4gbiYmbj4wJiYoaT1bLi4ubmV3IEFycmF5KG4pXS5maWxsKG51bGwpLm1hcCgocixsKT0+bCkpLGl9LHcoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIikpLGUuZ2V0Q2FuUHJldmlvdXNQYWdlPSgpPT5lLmdldFN0YXRlKCkucGFnaW5hdGlvbi5wYWdlSW5kZXg+MCxlLmdldENhbk5leHRQYWdlPSgpPT57Y29uc3R7cGFnZUluZGV4Om59PWUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uLGk9ZS5nZXRQYWdlQ291bnQoKTtyZXR1cm4gaT09PS0xPyEwOmk9PT0wPyExOm48aS0xfSxlLnByZXZpb3VzUGFnZT0oKT0+ZS5zZXRQYWdlSW5kZXgobj0+bi0xKSxlLm5leHRQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChuPT5uKzEpLGUuZmlyc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleCgwKSxlLmxhc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlLmdldFBhZ2VDb3VudCgpLTEpLGUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsPSgpPT5lLmdldEV4cGFuZGVkUm93TW9kZWwoKSxlLmdldFBhZ2luYXRpb25Sb3dNb2RlbD0oKT0+KCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwmJmUub3B0aW9ucy5nZXRQYWdpbmF0aW9uUm93TW9kZWwmJihlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw9ZS5vcHRpb25zLmdldFBhZ2luYXRpb25Sb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFBhZ2luYXRpb258fCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTplLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwoKSksZS5nZXRQYWdlQ291bnQ9KCk9Pnt2YXIgbjtyZXR1cm4obj1lLm9wdGlvbnMucGFnZUNvdW50KSE9bnVsbD9uOk1hdGguY2VpbChlLmdldFJvd0NvdW50KCkvZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemUpfSxlLmdldFJvd0NvdW50PSgpPT57dmFyIG47cmV0dXJuKG49ZS5vcHRpb25zLnJvd0NvdW50KSE9bnVsbD9uOmUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsKCkucm93cy5sZW5ndGh9fX0seGU9KCk9Pih7dG9wOltdLGJvdHRvbTpbXX0pLHVuPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dQaW5uaW5nOnhlKCksLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Sb3dQaW5uaW5nQ2hhbmdlOkwoInJvd1Bpbm5pbmciLGUpfSksY3JlYXRlUm93OihlLG8pPT57ZS5waW49KHQsbixpKT0+e2NvbnN0IHI9bj9lLmdldExlYWZSb3dzKCkubWFwKGE9PntsZXR7aWQ6Z309YTtyZXR1cm4gZ30pOltdLGw9aT9lLmdldFBhcmVudFJvd3MoKS5tYXAoYT0+e2xldHtpZDpnfT1hO3JldHVybiBnfSk6W10sdT1uZXcgU2V0KFsuLi5sLGUuaWQsLi4ucl0pO28uc2V0Um93UGlubmluZyhhPT57dmFyIGcsYztpZih0PT09ImJvdHRvbSIpe3ZhciBwLGQ7cmV0dXJue3RvcDooKHA9YT8udG9wKSE9bnVsbD9wOltdKS5maWx0ZXIobT0+ISh1IT1udWxsJiZ1LmhhcyhtKSkpLGJvdHRvbTpbLi4uKChkPWE/LmJvdHRvbSkhPW51bGw/ZDpbXSkuZmlsdGVyKG09PiEodSE9bnVsbCYmdS5oYXMobSkpKSwuLi5BcnJheS5mcm9tKHUpXX19aWYodD09PSJ0b3AiKXt2YXIgcyxmO3JldHVybnt0b3A6Wy4uLigocz1hPy50b3ApIT1udWxsP3M6W10pLmZpbHRlcihtPT4hKHUhPW51bGwmJnUuaGFzKG0pKSksLi4uQXJyYXkuZnJvbSh1KV0sYm90dG9tOigoZj1hPy5ib3R0b20pIT1udWxsP2Y6W10pLmZpbHRlcihtPT4hKHUhPW51bGwmJnUuaGFzKG0pKSl9fXJldHVybnt0b3A6KChnPWE/LnRvcCkhPW51bGw/ZzpbXSkuZmlsdGVyKG09PiEodSE9bnVsbCYmdS5oYXMobSkpKSxib3R0b206KChjPWE/LmJvdHRvbSkhPW51bGw/YzpbXSkuZmlsdGVyKG09PiEodSE9bnVsbCYmdS5oYXMobSkpKX19KX0sZS5nZXRDYW5QaW49KCk9Pnt2YXIgdDtjb25zdHtlbmFibGVSb3dQaW5uaW5nOm4sZW5hYmxlUGlubmluZzppfT1vLm9wdGlvbnM7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oZSk6KHQ9bj8/aSkhPW51bGw/dDohMH0sZS5nZXRJc1Bpbm5lZD0oKT0+e2NvbnN0IHQ9W2UuaWRdLHt0b3A6bixib3R0b206aX09by5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcscj10LnNvbWUodT0+bj8uaW5jbHVkZXModSkpLGw9dC5zb21lKHU9Pmk/LmluY2x1ZGVzKHUpKTtyZXR1cm4gcj8idG9wIjpsPyJib3R0b20iOiExfSxlLmdldFBpbm5lZEluZGV4PSgpPT57dmFyIHQsbjtjb25zdCBpPWUuZ2V0SXNQaW5uZWQoKTtpZighaSlyZXR1cm4tMTtjb25zdCByPSh0PWk9PT0idG9wIj9vLmdldFRvcFJvd3MoKTpvLmdldEJvdHRvbVJvd3MoKSk9PW51bGw/dm9pZCAwOnQubWFwKGw9PntsZXR7aWQ6dX09bDtyZXR1cm4gdX0pO3JldHVybihuPXI/LmluZGV4T2YoZS5pZCkpIT1udWxsP246LTF9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dQaW5uaW5nPW89PmUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2UobyksZS5yZXNldFJvd1Bpbm5pbmc9bz0+e3ZhciB0LG47cmV0dXJuIGUuc2V0Um93UGlubmluZyhvP3hlKCk6KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLnJvd1Bpbm5pbmcpIT1udWxsP3Q6eGUoKSl9LGUuZ2V0SXNTb21lUm93c1Bpbm5lZD1vPT57dmFyIHQ7Y29uc3Qgbj1lLmdldFN0YXRlKCkucm93UGlubmluZztpZighbyl7dmFyIGkscjtyZXR1cm4hISgoaT1uLnRvcCkhPW51bGwmJmkubGVuZ3RofHwocj1uLmJvdHRvbSkhPW51bGwmJnIubGVuZ3RoKX1yZXR1cm4hISgodD1uW29dKSE9bnVsbCYmdC5sZW5ndGgpfSxlLl9nZXRQaW5uZWRSb3dzPShvLHQsbik9Pnt2YXIgaTtyZXR1cm4oKGk9ZS5vcHRpb25zLmtlZXBQaW5uZWRSb3dzKT09bnVsbHx8aT8odD8/W10pLm1hcChsPT57Y29uc3QgdT1lLmdldFJvdyhsLCEwKTtyZXR1cm4gdS5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZCgpP3U6bnVsbH0pOih0Pz9bXSkubWFwKGw9Pm8uZmluZCh1PT51LmlkPT09bCkpKS5maWx0ZXIoQm9vbGVhbikubWFwKGw9Pih7Li4ubCxwb3NpdGlvbjpufSkpfSxlLmdldFRvcFJvd3M9QygoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLnRvcF0sKG8sdCk9PmUuX2dldFBpbm5lZFJvd3Mobyx0LCJ0b3AiKSx3KGUub3B0aW9ucywiZGVidWdSb3dzIikpLGUuZ2V0Qm90dG9tUm93cz1DKCgpPT5bZS5nZXRSb3dNb2RlbCgpLnJvd3MsZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcuYm90dG9tXSwobyx0KT0+ZS5fZ2V0UGlubmVkUm93cyhvLHQsImJvdHRvbSIpLHcoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRDZW50ZXJSb3dzPUMoKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3AsZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcuYm90dG9tXSwobyx0LG4pPT57Y29uc3QgaT1uZXcgU2V0KFsuLi50Pz9bXSwuLi5uPz9bXV0pO3JldHVybiBvLmZpbHRlcihyPT4haS5oYXMoci5pZCkpfSx3KGUub3B0aW9ucywiZGVidWdSb3dzIikpfX0sYW49e2dldEluaXRpYWxTdGF0ZTplPT4oe3Jvd1NlbGVjdGlvbjp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1NlbGVjdGlvbkNoYW5nZTpMKCJyb3dTZWxlY3Rpb24iLGUpLGVuYWJsZVJvd1NlbGVjdGlvbjohMCxlbmFibGVNdWx0aVJvd1NlbGVjdGlvbjohMCxlbmFibGVTdWJSb3dTZWxlY3Rpb246ITB9KSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dTZWxlY3Rpb249bz0+ZS5vcHRpb25zLm9uUm93U2VsZWN0aW9uQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Sb3dTZWxlY3Rpb25DaGFuZ2UobyksZS5yZXNldFJvd1NlbGVjdGlvbj1vPT57dmFyIHQ7cmV0dXJuIGUuc2V0Um93U2VsZWN0aW9uKG8/e306KHQ9ZS5pbml0aWFsU3RhdGUucm93U2VsZWN0aW9uKSE9bnVsbD90Ont9KX0sZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQ9bz0+e2Uuc2V0Um93U2VsZWN0aW9uKHQ9PntvPXR5cGVvZiBvPCJ1Ij9vOiFlLmdldElzQWxsUm93c1NlbGVjdGVkKCk7Y29uc3Qgbj17Li4udH0saT1lLmdldFByZUdyb3VwZWRSb3dNb2RlbCgpLmZsYXRSb3dzO3JldHVybiBvP2kuZm9yRWFjaChyPT57ci5nZXRDYW5TZWxlY3QoKSYmKG5bci5pZF09ITApfSk6aS5mb3JFYWNoKHI9PntkZWxldGUgbltyLmlkXX0pLG59KX0sZS50b2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkPW89PmUuc2V0Um93U2VsZWN0aW9uKHQ9Pntjb25zdCBuPXR5cGVvZiBvPCJ1Ij9vOiFlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZCgpLGk9ey4uLnR9O3JldHVybiBlLmdldFJvd01vZGVsKCkucm93cy5mb3JFYWNoKHI9PntBZShpLHIuaWQsbiwhMCxlKX0pLGl9KSxlLmdldFByZVNlbGVjdGVkUm93TW9kZWw9KCk9PmUuZ2V0Q29yZVJvd01vZGVsKCksZS5nZXRTZWxlY3RlZFJvd01vZGVsPUMoKCk9PltlLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLGUuZ2V0Q29yZVJvd01vZGVsKCldLChvLHQpPT5PYmplY3Qua2V5cyhvKS5sZW5ndGg/UGUoZSx0KTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWw9QygoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCldLChvLHQpPT5PYmplY3Qua2V5cyhvKS5sZW5ndGg/UGUoZSx0KTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRHcm91cGVkU2VsZWN0ZWRSb3dNb2RlbD1DKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldFNvcnRlZFJvd01vZGVsKCldLChvLHQpPT5PYmplY3Qua2V5cyhvKS5sZW5ndGg/UGUoZSx0KTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRJc0FsbFJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IG89ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3Mse3Jvd1NlbGVjdGlvbjp0fT1lLmdldFN0YXRlKCk7bGV0IG49ISEoby5sZW5ndGgmJk9iamVjdC5rZXlzKHQpLmxlbmd0aCk7cmV0dXJuIG4mJm8uc29tZShpPT5pLmdldENhblNlbGVjdCgpJiYhdFtpLmlkXSkmJihuPSExKSxufSxlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IG89ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5maWx0ZXIoaT0+aS5nZXRDYW5TZWxlY3QoKSkse3Jvd1NlbGVjdGlvbjp0fT1lLmdldFN0YXRlKCk7bGV0IG49ISFvLmxlbmd0aDtyZXR1cm4gbiYmby5zb21lKGk9PiF0W2kuaWRdKSYmKG49ITEpLG59LGUuZ2V0SXNTb21lUm93c1NlbGVjdGVkPSgpPT57dmFyIG87Y29uc3QgdD1PYmplY3Qua2V5cygobz1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uKSE9bnVsbD9vOnt9KS5sZW5ndGg7cmV0dXJuIHQ+MCYmdDxlLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cy5sZW5ndGh9LGUuZ2V0SXNTb21lUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IG89ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4gZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKT8hMTpvLmZpbHRlcih0PT50LmdldENhblNlbGVjdCgpKS5zb21lKHQ9PnQuZ2V0SXNTZWxlY3RlZCgpfHx0LmdldElzU29tZVNlbGVjdGVkKCkpfSxlLmdldFRvZ2dsZUFsbFJvd3NTZWxlY3RlZEhhbmRsZXI9KCk9Pm89PntlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZChvLnRhcmdldC5jaGVja2VkKX0sZS5nZXRUb2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkSGFuZGxlcj0oKT0+bz0+e2UudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZChvLnRhcmdldC5jaGVja2VkKX19LGNyZWF0ZVJvdzooZSxvKT0+e2UudG9nZ2xlU2VsZWN0ZWQ9KHQsbik9Pntjb25zdCBpPWUuZ2V0SXNTZWxlY3RlZCgpO28uc2V0Um93U2VsZWN0aW9uKHI9Pnt2YXIgbDtpZih0PXR5cGVvZiB0PCJ1Ij90OiFpLGUuZ2V0Q2FuU2VsZWN0KCkmJmk9PT10KXJldHVybiByO2NvbnN0IHU9ey4uLnJ9O3JldHVybiBBZSh1LGUuaWQsdCwobD1uPy5zZWxlY3RDaGlsZHJlbikhPW51bGw/bDohMCxvKSx1fSl9LGUuZ2V0SXNTZWxlY3RlZD0oKT0+e2NvbnN0e3Jvd1NlbGVjdGlvbjp0fT1vLmdldFN0YXRlKCk7cmV0dXJuIEhlKGUsdCl9LGUuZ2V0SXNTb21lU2VsZWN0ZWQ9KCk9Pntjb25zdHtyb3dTZWxlY3Rpb246dH09by5nZXRTdGF0ZSgpO3JldHVybiB6ZShlLHQpPT09InNvbWUifSxlLmdldElzQWxsU3ViUm93c1NlbGVjdGVkPSgpPT57Y29uc3R7cm93U2VsZWN0aW9uOnR9PW8uZ2V0U3RhdGUoKTtyZXR1cm4gemUoZSx0KT09PSJhbGwifSxlLmdldENhblNlbGVjdD0oKT0+e3ZhciB0O3JldHVybiB0eXBlb2Ygby5vcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbj09ImZ1bmN0aW9uIj9vLm9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uKGUpOih0PW8ub3B0aW9ucy5lbmFibGVSb3dTZWxlY3Rpb24pIT1udWxsP3Q6ITB9LGUuZ2V0Q2FuU2VsZWN0U3ViUm93cz0oKT0+e3ZhciB0O3JldHVybiB0eXBlb2Ygby5vcHRpb25zLmVuYWJsZVN1YlJvd1NlbGVjdGlvbj09ImZ1bmN0aW9uIj9vLm9wdGlvbnMuZW5hYmxlU3ViUm93U2VsZWN0aW9uKGUpOih0PW8ub3B0aW9ucy5lbmFibGVTdWJSb3dTZWxlY3Rpb24pIT1udWxsP3Q6ITB9LGUuZ2V0Q2FuTXVsdGlTZWxlY3Q9KCk9Pnt2YXIgdDtyZXR1cm4gdHlwZW9mIG8ub3B0aW9ucy5lbmFibGVNdWx0aVJvd1NlbGVjdGlvbj09ImZ1bmN0aW9uIj9vLm9wdGlvbnMuZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb24oZSk6KHQ9by5vcHRpb25zLmVuYWJsZU11bHRpUm93U2VsZWN0aW9uKSE9bnVsbD90OiEwfSxlLmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5TZWxlY3QoKTtyZXR1cm4gbj0+e3ZhciBpO3QmJmUudG9nZ2xlU2VsZWN0ZWQoKGk9bi50YXJnZXQpPT1udWxsP3ZvaWQgMDppLmNoZWNrZWQpfX19fSxBZT0oZSxvLHQsbixpKT0+e3ZhciByO2NvbnN0IGw9aS5nZXRSb3cobywhMCk7dD8obC5nZXRDYW5NdWx0aVNlbGVjdCgpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKHU9PmRlbGV0ZSBlW3VdKSxsLmdldENhblNlbGVjdCgpJiYoZVtvXT0hMCkpOmRlbGV0ZSBlW29dLG4mJihyPWwuc3ViUm93cykhPW51bGwmJnIubGVuZ3RoJiZsLmdldENhblNlbGVjdFN1YlJvd3MoKSYmbC5zdWJSb3dzLmZvckVhY2godT0+QWUoZSx1LmlkLHQsbixpKSl9O2Z1bmN0aW9uIFBlKGUsbyl7Y29uc3QgdD1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLG49W10saT17fSxyPWZ1bmN0aW9uKGwsdSl7cmV0dXJuIGwubWFwKGE9Pnt2YXIgZztjb25zdCBjPUhlKGEsdCk7aWYoYyYmKG4ucHVzaChhKSxpW2EuaWRdPWEpLChnPWEuc3ViUm93cykhPW51bGwmJmcubGVuZ3RoJiYoYT17Li4uYSxzdWJSb3dzOnIoYS5zdWJSb3dzKX0pLGMpcmV0dXJuIGF9KS5maWx0ZXIoQm9vbGVhbil9O3JldHVybntyb3dzOnIoby5yb3dzKSxmbGF0Um93czpuLHJvd3NCeUlkOml9fWZ1bmN0aW9uIEhlKGUsbyl7dmFyIHQ7cmV0dXJuKHQ9b1tlLmlkXSkhPW51bGw/dDohMX1mdW5jdGlvbiB6ZShlLG8sdCl7dmFyIG47aWYoISgobj1lLnN1YlJvd3MpIT1udWxsJiZuLmxlbmd0aCkpcmV0dXJuITE7bGV0IGk9ITAscj0hMTtyZXR1cm4gZS5zdWJSb3dzLmZvckVhY2gobD0+e2lmKCEociYmIWkpJiYobC5nZXRDYW5TZWxlY3QoKSYmKEhlKGwsbyk/cj0hMDppPSExKSxsLnN1YlJvd3MmJmwuc3ViUm93cy5sZW5ndGgpKXtjb25zdCB1PXplKGwsbyk7dT09PSJhbGwiP3I9ITA6KHU9PT0ic29tZSImJihyPSEwKSxpPSExKX19KSxpPyJhbGwiOnI/InNvbWUiOiExfWNvbnN0IE9lPS8oWzAtOV0rKS9nbSxnbj0oZSxvLHQpPT5ndChXKGUuZ2V0VmFsdWUodCkpLnRvTG93ZXJDYXNlKCksVyhvLmdldFZhbHVlKHQpKS50b0xvd2VyQ2FzZSgpKSxkbj0oZSxvLHQpPT5ndChXKGUuZ2V0VmFsdWUodCkpLFcoby5nZXRWYWx1ZSh0KSkpLGNuPShlLG8sdCk9PkxlKFcoZS5nZXRWYWx1ZSh0KSkudG9Mb3dlckNhc2UoKSxXKG8uZ2V0VmFsdWUodCkpLnRvTG93ZXJDYXNlKCkpLGZuPShlLG8sdCk9PkxlKFcoZS5nZXRWYWx1ZSh0KSksVyhvLmdldFZhbHVlKHQpKSkscG49KGUsbyx0KT0+e2NvbnN0IG49ZS5nZXRWYWx1ZSh0KSxpPW8uZ2V0VmFsdWUodCk7cmV0dXJuIG4+aT8xOm48aT8tMTowfSxtbj0oZSxvLHQpPT5MZShlLmdldFZhbHVlKHQpLG8uZ2V0VmFsdWUodCkpO2Z1bmN0aW9uIExlKGUsbyl7cmV0dXJuIGU9PT1vPzA6ZT5vPzE6LTF9ZnVuY3Rpb24gVyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJudW1iZXIiP2lzTmFOKGUpfHxlPT09MS8wfHxlPT09LTEvMD8iIjpTdHJpbmcoZSk6dHlwZW9mIGU9PSJzdHJpbmciP2U6IiJ9ZnVuY3Rpb24gZ3QoZSxvKXtjb25zdCB0PWUuc3BsaXQoT2UpLmZpbHRlcihCb29sZWFuKSxuPW8uc3BsaXQoT2UpLmZpbHRlcihCb29sZWFuKTtmb3IoO3QubGVuZ3RoJiZuLmxlbmd0aDspe2NvbnN0IGk9dC5zaGlmdCgpLHI9bi5zaGlmdCgpLGw9cGFyc2VJbnQoaSwxMCksdT1wYXJzZUludChyLDEwKSxhPVtsLHVdLnNvcnQoKTtpZihpc05hTihhWzBdKSl7aWYoaT5yKXJldHVybiAxO2lmKHI+aSlyZXR1cm4tMTtjb250aW51ZX1pZihpc05hTihhWzFdKSlyZXR1cm4gaXNOYU4obCk/LTE6MTtpZihsPnUpcmV0dXJuIDE7aWYodT5sKXJldHVybi0xfXJldHVybiB0Lmxlbmd0aC1uLmxlbmd0aH1jb25zdCBzZT17YWxwaGFudW1lcmljOmduLGFscGhhbnVtZXJpY0Nhc2VTZW5zaXRpdmU6ZG4sdGV4dDpjbix0ZXh0Q2FzZVNlbnNpdGl2ZTpmbixkYXRldGltZTpwbixiYXNpYzptbn0sU249e2dldEluaXRpYWxTdGF0ZTplPT4oe3NvcnRpbmc6W10sLi4uZX0pLGdldERlZmF1bHRDb2x1bW5EZWY6KCk9Pih7c29ydGluZ0ZuOiJhdXRvIixzb3J0VW5kZWZpbmVkOjF9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uU29ydGluZ0NoYW5nZTpMKCJzb3J0aW5nIixlKSxpc011bHRpU29ydEV2ZW50Om89Pm8uc2hpZnRLZXl9KSxjcmVhdGVDb2x1bW46KGUsbyk9PntlLmdldEF1dG9Tb3J0aW5nRm49KCk9Pntjb25zdCB0PW8uZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLmZsYXRSb3dzLnNsaWNlKDEwKTtsZXQgbj0hMTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCByPWk/LmdldFZhbHVlKGUuaWQpO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKT09PSJbb2JqZWN0IERhdGVdIilyZXR1cm4gc2UuZGF0ZXRpbWU7aWYodHlwZW9mIHI9PSJzdHJpbmciJiYobj0hMCxyLnNwbGl0KE9lKS5sZW5ndGg+MSkpcmV0dXJuIHNlLmFscGhhbnVtZXJpY31yZXR1cm4gbj9zZS50ZXh0OnNlLmJhc2ljfSxlLmdldEF1dG9Tb3J0RGlyPSgpPT57Y29uc3QgdD1vLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93c1swXTtyZXR1cm4gdHlwZW9mIHQ/LmdldFZhbHVlKGUuaWQpPT0ic3RyaW5nIj8iYXNjIjoiZGVzYyJ9LGUuZ2V0U29ydGluZ0ZuPSgpPT57dmFyIHQsbjtpZighZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIG1lKGUuY29sdW1uRGVmLnNvcnRpbmdGbik/ZS5jb2x1bW5EZWYuc29ydGluZ0ZuOmUuY29sdW1uRGVmLnNvcnRpbmdGbj09PSJhdXRvIj9lLmdldEF1dG9Tb3J0aW5nRm4oKToodD0obj1vLm9wdGlvbnMuc29ydGluZ0Zucyk9PW51bGw/dm9pZCAwOm5bZS5jb2x1bW5EZWYuc29ydGluZ0ZuXSkhPW51bGw/dDpzZVtlLmNvbHVtbkRlZi5zb3J0aW5nRm5dfSxlLnRvZ2dsZVNvcnRpbmc9KHQsbik9Pntjb25zdCBpPWUuZ2V0TmV4dFNvcnRpbmdPcmRlcigpLHI9dHlwZW9mIHQ8InUiJiZ0IT09bnVsbDtvLnNldFNvcnRpbmcobD0+e2NvbnN0IHU9bD8uZmluZChzPT5zLmlkPT09ZS5pZCksYT1sPy5maW5kSW5kZXgocz0+cy5pZD09PWUuaWQpO2xldCBnPVtdLGMscD1yP3Q6aT09PSJkZXNjIjtpZihsIT1udWxsJiZsLmxlbmd0aCYmZS5nZXRDYW5NdWx0aVNvcnQoKSYmbj91P2M9InRvZ2dsZSI6Yz0iYWRkIjpsIT1udWxsJiZsLmxlbmd0aCYmYSE9PWwubGVuZ3RoLTE/Yz0icmVwbGFjZSI6dT9jPSJ0b2dnbGUiOmM9InJlcGxhY2UiLGM9PT0idG9nZ2xlIiYmKHJ8fGl8fChjPSJyZW1vdmUiKSksYz09PSJhZGQiKXt2YXIgZDtnPVsuLi5sLHtpZDplLmlkLGRlc2M6cH1dLGcuc3BsaWNlKDAsZy5sZW5ndGgtKChkPW8ub3B0aW9ucy5tYXhNdWx0aVNvcnRDb2xDb3VudCkhPW51bGw/ZDpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpfWVsc2UgYz09PSJ0b2dnbGUiP2c9bC5tYXAocz0+cy5pZD09PWUuaWQ/ey4uLnMsZGVzYzpwfTpzKTpjPT09InJlbW92ZSI/Zz1sLmZpbHRlcihzPT5zLmlkIT09ZS5pZCk6Zz1be2lkOmUuaWQsZGVzYzpwfV07cmV0dXJuIGd9KX0sZS5nZXRGaXJzdFNvcnREaXI9KCk9Pnt2YXIgdCxuO3JldHVybigodD0obj1lLmNvbHVtbkRlZi5zb3J0RGVzY0ZpcnN0KSE9bnVsbD9uOm8ub3B0aW9ucy5zb3J0RGVzY0ZpcnN0KSE9bnVsbD90OmUuZ2V0QXV0b1NvcnREaXIoKT09PSJkZXNjIik/ImRlc2MiOiJhc2MifSxlLmdldE5leHRTb3J0aW5nT3JkZXI9dD0+e3ZhciBuLGk7Y29uc3Qgcj1lLmdldEZpcnN0U29ydERpcigpLGw9ZS5nZXRJc1NvcnRlZCgpO3JldHVybiBsP2whPT1yJiYoKG49by5vcHRpb25zLmVuYWJsZVNvcnRpbmdSZW1vdmFsKT09bnVsbHx8bikmJighKHQmJihpPW8ub3B0aW9ucy5lbmFibGVNdWx0aVJlbW92ZSkhPW51bGwpfHxpKT8hMTpsPT09ImRlc2MiPyJhc2MiOiJkZXNjIjpyfSxlLmdldENhblNvcnQ9KCk9Pnt2YXIgdCxuO3JldHVybigodD1lLmNvbHVtbkRlZi5lbmFibGVTb3J0aW5nKSE9bnVsbD90OiEwKSYmKChuPW8ub3B0aW9ucy5lbmFibGVTb3J0aW5nKSE9bnVsbD9uOiEwKSYmISFlLmFjY2Vzc29yRm59LGUuZ2V0Q2FuTXVsdGlTb3J0PSgpPT57dmFyIHQsbjtyZXR1cm4odD0obj1lLmNvbHVtbkRlZi5lbmFibGVNdWx0aVNvcnQpIT1udWxsP246by5vcHRpb25zLmVuYWJsZU11bHRpU29ydCkhPW51bGw/dDohIWUuYWNjZXNzb3JGbn0sZS5nZXRJc1NvcnRlZD0oKT0+e3ZhciB0O2NvbnN0IG49KHQ9by5nZXRTdGF0ZSgpLnNvcnRpbmcpPT1udWxsP3ZvaWQgMDp0LmZpbmQoaT0+aS5pZD09PWUuaWQpO3JldHVybiBuP24uZGVzYz8iZGVzYyI6ImFzYyI6ITF9LGUuZ2V0U29ydEluZGV4PSgpPT57dmFyIHQsbjtyZXR1cm4odD0obj1vLmdldFN0YXRlKCkuc29ydGluZyk9PW51bGw/dm9pZCAwOm4uZmluZEluZGV4KGk9PmkuaWQ9PT1lLmlkKSkhPW51bGw/dDotMX0sZS5jbGVhclNvcnRpbmc9KCk9PntvLnNldFNvcnRpbmcodD0+dCE9bnVsbCYmdC5sZW5ndGg/dC5maWx0ZXIobj0+bi5pZCE9PWUuaWQpOltdKX0sZS5nZXRUb2dnbGVTb3J0aW5nSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5Tb3J0KCk7cmV0dXJuIG49Pnt0JiYobi5wZXJzaXN0PT1udWxsfHxuLnBlcnNpc3QoKSxlLnRvZ2dsZVNvcnRpbmc9PW51bGx8fGUudG9nZ2xlU29ydGluZyh2b2lkIDAsZS5nZXRDYW5NdWx0aVNvcnQoKT9vLm9wdGlvbnMuaXNNdWx0aVNvcnRFdmVudD09bnVsbD92b2lkIDA6by5vcHRpb25zLmlzTXVsdGlTb3J0RXZlbnQobik6ITEpKX19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRTb3J0aW5nPW89PmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2UobyksZS5yZXNldFNvcnRpbmc9bz0+e3ZhciB0LG47ZS5zZXRTb3J0aW5nKG8/W106KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLnNvcnRpbmcpIT1udWxsP3Q6W10pfSxlLmdldFByZVNvcnRlZFJvd01vZGVsPSgpPT5lLmdldEdyb3VwZWRSb3dNb2RlbCgpLGUuZ2V0U29ydGVkUm93TW9kZWw9KCk9PighZS5fZ2V0U29ydGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbCYmKGUuX2dldFNvcnRlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFNvcnRpbmd8fCFlLl9nZXRTb3J0ZWRSb3dNb2RlbD9lLmdldFByZVNvcnRlZFJvd01vZGVsKCk6ZS5fZ2V0U29ydGVkUm93TW9kZWwoKSl9fSx2bj1bSHQsbm4sWXQsUXQsTHQscXQsb24scm4sU24sV3QsbG4sc24sdW4sYW4sZW5dO2Z1bmN0aW9uIENuKGUpe3ZhciBvLHQ7Y29uc3Qgbj1bLi4udm4sLi4uKG89ZS5fZmVhdHVyZXMpIT1udWxsP286W11dO2xldCBpPXtfZmVhdHVyZXM6bn07Y29uc3Qgcj1pLl9mZWF0dXJlcy5yZWR1Y2UoKGQscyk9Pk9iamVjdC5hc3NpZ24oZCxzLmdldERlZmF1bHRPcHRpb25zPT1udWxsP3ZvaWQgMDpzLmdldERlZmF1bHRPcHRpb25zKGkpKSx7fSksbD1kPT5pLm9wdGlvbnMubWVyZ2VPcHRpb25zP2kub3B0aW9ucy5tZXJnZU9wdGlvbnMocixkKTp7Li4uciwuLi5kfTtsZXQgYT17Li4ue30sLi4uKHQ9ZS5pbml0aWFsU3RhdGUpIT1udWxsP3Q6e319O2kuX2ZlYXR1cmVzLmZvckVhY2goZD0+e3ZhciBzO2E9KHM9ZC5nZXRJbml0aWFsU3RhdGU9PW51bGw/dm9pZCAwOmQuZ2V0SW5pdGlhbFN0YXRlKGEpKSE9bnVsbD9zOmF9KTtjb25zdCBnPVtdO2xldCBjPSExO2NvbnN0IHA9e19mZWF0dXJlczpuLG9wdGlvbnM6ey4uLnIsLi4uZX0saW5pdGlhbFN0YXRlOmEsX3F1ZXVlOmQ9PntnLnB1c2goZCksY3x8KGM9ITAsUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2Zvcig7Zy5sZW5ndGg7KWcuc2hpZnQoKSgpO2M9ITF9KS5jYXRjaChzPT5zZXRUaW1lb3V0KCgpPT57dGhyb3cgc30pKSl9LHJlc2V0OigpPT57aS5zZXRTdGF0ZShpLmluaXRpYWxTdGF0ZSl9LHNldE9wdGlvbnM6ZD0+e2NvbnN0IHM9SyhkLGkub3B0aW9ucyk7aS5vcHRpb25zPWwocyl9LGdldFN0YXRlOigpPT5pLm9wdGlvbnMuc3RhdGUsc2V0U3RhdGU6ZD0+e2kub3B0aW9ucy5vblN0YXRlQ2hhbmdlPT1udWxsfHxpLm9wdGlvbnMub25TdGF0ZUNoYW5nZShkKX0sX2dldFJvd0lkOihkLHMsZik9Pnt2YXIgbTtyZXR1cm4obT1pLm9wdGlvbnMuZ2V0Um93SWQ9PW51bGw/dm9pZCAwOmkub3B0aW9ucy5nZXRSb3dJZChkLHMsZikpIT1udWxsP206YCR7Zj9bZi5pZCxzXS5qb2luKCIuIik6c31gfSxnZXRDb3JlUm93TW9kZWw6KCk9PihpLl9nZXRDb3JlUm93TW9kZWx8fChpLl9nZXRDb3JlUm93TW9kZWw9aS5vcHRpb25zLmdldENvcmVSb3dNb2RlbChpKSksaS5fZ2V0Q29yZVJvd01vZGVsKCkpLGdldFJvd01vZGVsOigpPT5pLmdldFBhZ2luYXRpb25Sb3dNb2RlbCgpLGdldFJvdzooZCxzKT0+e2xldCBmPShzP2kuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsKCk6aS5nZXRSb3dNb2RlbCgpKS5yb3dzQnlJZFtkXTtpZighZiYmKGY9aS5nZXRDb3JlUm93TW9kZWwoKS5yb3dzQnlJZFtkXSwhZikpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmfSxfZ2V0RGVmYXVsdENvbHVtbkRlZjpDKCgpPT5baS5vcHRpb25zLmRlZmF1bHRDb2x1bW5dLGQ9Pnt2YXIgcztyZXR1cm4gZD0ocz1kKSE9bnVsbD9zOnt9LHtoZWFkZXI6Zj0+e2NvbnN0IG09Zi5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtyZXR1cm4gbS5hY2Nlc3NvcktleT9tLmFjY2Vzc29yS2V5Om0uYWNjZXNzb3JGbj9tLmlkOm51bGx9LGNlbGw6Zj0+e3ZhciBtLGg7cmV0dXJuKG09KGg9Zi5yZW5kZXJWYWx1ZSgpKT09bnVsbHx8aC50b1N0cmluZz09bnVsbD92b2lkIDA6aC50b1N0cmluZygpKSE9bnVsbD9tOm51bGx9LC4uLmkuX2ZlYXR1cmVzLnJlZHVjZSgoZixtKT0+T2JqZWN0LmFzc2lnbihmLG0uZ2V0RGVmYXVsdENvbHVtbkRlZj09bnVsbD92b2lkIDA6bS5nZXREZWZhdWx0Q29sdW1uRGVmKCkpLHt9KSwuLi5kfX0sdyhlLCJkZWJ1Z0NvbHVtbnMiKSksX2dldENvbHVtbkRlZnM6KCk9Pmkub3B0aW9ucy5jb2x1bW5zLGdldEFsbENvbHVtbnM6QygoKT0+W2kuX2dldENvbHVtbkRlZnMoKV0sZD0+e2NvbnN0IHM9ZnVuY3Rpb24oZixtLGgpe3JldHVybiBoPT09dm9pZCAwJiYoaD0wKSxmLm1hcChSPT57Y29uc3QgeD1HdChpLFIsaCxtKSxQPVI7cmV0dXJuIHguY29sdW1ucz1QLmNvbHVtbnM/cyhQLmNvbHVtbnMseCxoKzEpOltdLHh9KX07cmV0dXJuIHMoZCl9LHcoZSwiZGVidWdDb2x1bW5zIikpLGdldEFsbEZsYXRDb2x1bW5zOkMoKCk9PltpLmdldEFsbENvbHVtbnMoKV0sZD0+ZC5mbGF0TWFwKHM9PnMuZ2V0RmxhdENvbHVtbnMoKSksdyhlLCJkZWJ1Z0NvbHVtbnMiKSksX2dldEFsbEZsYXRDb2x1bW5zQnlJZDpDKCgpPT5baS5nZXRBbGxGbGF0Q29sdW1ucygpXSxkPT5kLnJlZHVjZSgocyxmKT0+KHNbZi5pZF09ZixzKSx7fSksdyhlLCJkZWJ1Z0NvbHVtbnMiKSksZ2V0QWxsTGVhZkNvbHVtbnM6QygoKT0+W2kuZ2V0QWxsQ29sdW1ucygpLGkuX2dldE9yZGVyQ29sdW1uc0ZuKCldLChkLHMpPT57bGV0IGY9ZC5mbGF0TWFwKG09Pm0uZ2V0TGVhZkNvbHVtbnMoKSk7cmV0dXJuIHMoZil9LHcoZSwiZGVidWdDb2x1bW5zIikpLGdldENvbHVtbjpkPT5pLl9nZXRBbGxGbGF0Q29sdW1uc0J5SWQoKVtkXX07T2JqZWN0LmFzc2lnbihpLHApO2ZvcihsZXQgZD0wO2Q8aS5fZmVhdHVyZXMubGVuZ3RoO2QrKyl7Y29uc3Qgcz1pLl9mZWF0dXJlc1tkXTtzPT1udWxsfHxzLmNyZWF0ZVRhYmxlPT1udWxsfHxzLmNyZWF0ZVRhYmxlKGkpfXJldHVybiBpfWZ1bmN0aW9uIHduKCl7cmV0dXJuIGU9PkMoKCk9PltlLm9wdGlvbnMuZGF0YV0sbz0+e2NvbnN0IHQ9e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LG49ZnVuY3Rpb24oaSxyLGwpe3I9PT12b2lkIDAmJihyPTApO2NvbnN0IHU9W107Zm9yKGxldCBnPTA7ZzxpLmxlbmd0aDtnKyspe2NvbnN0IGM9RWUoZSxlLl9nZXRSb3dJZChpW2ddLGcsbCksaVtnXSxnLHIsdm9pZCAwLGw/LmlkKTtpZih0LmZsYXRSb3dzLnB1c2goYyksdC5yb3dzQnlJZFtjLmlkXT1jLHUucHVzaChjKSxlLm9wdGlvbnMuZ2V0U3ViUm93cyl7dmFyIGE7Yy5vcmlnaW5hbFN1YlJvd3M9ZS5vcHRpb25zLmdldFN1YlJvd3MoaVtnXSxnKSwoYT1jLm9yaWdpbmFsU3ViUm93cykhPW51bGwmJmEubGVuZ3RoJiYoYy5zdWJSb3dzPW4oYy5vcmlnaW5hbFN1YlJvd3MscisxLGMpKX19cmV0dXJuIHV9O3JldHVybiB0LnJvd3M9bihvKSx0fSx3KGUub3B0aW9ucywiZGVidWdUYWJsZSIsImdldFJvd01vZGVsIiwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiBSbigpe3JldHVybiBlPT5DKCgpPT5bZS5nZXRTdGF0ZSgpLmV4cGFuZGVkLGUuZ2V0UHJlRXhwYW5kZWRSb3dNb2RlbCgpLGUub3B0aW9ucy5wYWdpbmF0ZUV4cGFuZGVkUm93c10sKG8sdCxuKT0+IXQucm93cy5sZW5ndGh8fG8hPT0hMCYmIU9iamVjdC5rZXlzKG8/P3t9KS5sZW5ndGh8fCFuP3Q6aG4odCksdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSl9ZnVuY3Rpb24gaG4oZSl7Y29uc3Qgbz1bXSx0PW49Pnt2YXIgaTtvLnB1c2gobiksKGk9bi5zdWJSb3dzKSE9bnVsbCYmaS5sZW5ndGgmJm4uZ2V0SXNFeHBhbmRlZCgpJiZuLnN1YlJvd3MuZm9yRWFjaCh0KX07cmV0dXJuIGUucm93cy5mb3JFYWNoKHQpLHtyb3dzOm8sZmxhdFJvd3M6ZS5mbGF0Um93cyxyb3dzQnlJZDplLnJvd3NCeUlkfX1mdW5jdGlvbiBGbihlLG8sdCl7cmV0dXJuIHQub3B0aW9ucy5maWx0ZXJGcm9tTGVhZlJvd3M/eW4oZSxvLHQpOl9uKGUsbyx0KX1mdW5jdGlvbiB5bihlLG8sdCl7dmFyIG47Y29uc3QgaT1bXSxyPXt9LGw9KG49dC5vcHRpb25zLm1heExlYWZSb3dGaWx0ZXJEZXB0aCkhPW51bGw/bjoxMDAsdT1mdW5jdGlvbihhLGcpe2c9PT12b2lkIDAmJihnPTApO2NvbnN0IGM9W107Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBwO2xldCBzPWFbZF07Y29uc3QgZj1FZSh0LHMuaWQscy5vcmlnaW5hbCxzLmluZGV4LHMuZGVwdGgsdm9pZCAwLHMucGFyZW50SWQpO2lmKGYuY29sdW1uRmlsdGVycz1zLmNvbHVtbkZpbHRlcnMsKHA9cy5zdWJSb3dzKSE9bnVsbCYmcC5sZW5ndGgmJmc8bCl7aWYoZi5zdWJSb3dzPXUocy5zdWJSb3dzLGcrMSkscz1mLG8ocykmJiFmLnN1YlJvd3MubGVuZ3RoKXtjLnB1c2gocykscltzLmlkXT1zLGkucHVzaChzKTtjb250aW51ZX1pZihvKHMpfHxmLnN1YlJvd3MubGVuZ3RoKXtjLnB1c2gocykscltzLmlkXT1zLGkucHVzaChzKTtjb250aW51ZX19ZWxzZSBzPWYsbyhzKSYmKGMucHVzaChzKSxyW3MuaWRdPXMsaS5wdXNoKHMpKX1yZXR1cm4gY307cmV0dXJue3Jvd3M6dShlKSxmbGF0Um93czppLHJvd3NCeUlkOnJ9fWZ1bmN0aW9uIF9uKGUsbyx0KXt2YXIgbjtjb25zdCBpPVtdLHI9e30sbD0obj10Lm9wdGlvbnMubWF4TGVhZlJvd0ZpbHRlckRlcHRoKSE9bnVsbD9uOjEwMCx1PWZ1bmN0aW9uKGEsZyl7Zz09PXZvaWQgMCYmKGc9MCk7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IHM9YVtkXTtpZihvKHMpKXt2YXIgcDtpZigocD1zLnN1YlJvd3MpIT1udWxsJiZwLmxlbmd0aCYmZzxsKXtjb25zdCBtPUVlKHQscy5pZCxzLm9yaWdpbmFsLHMuaW5kZXgscy5kZXB0aCx2b2lkIDAscy5wYXJlbnRJZCk7bS5zdWJSb3dzPXUocy5zdWJSb3dzLGcrMSkscz1tfWMucHVzaChzKSxpLnB1c2gocykscltzLmlkXT1zfX1yZXR1cm4gY307cmV0dXJue3Jvd3M6dShlKSxmbGF0Um93czppLHJvd3NCeUlkOnJ9fWZ1bmN0aW9uICRuKCl7cmV0dXJuIGU9PkMoKCk9PltlLmdldFByZUZpbHRlcmVkUm93TW9kZWwoKSxlLmdldFN0YXRlKCkuY29sdW1uRmlsdGVycyxlLmdldFN0YXRlKCkuZ2xvYmFsRmlsdGVyXSwobyx0LG4pPT57aWYoIW8ucm93cy5sZW5ndGh8fCEodCE9bnVsbCYmdC5sZW5ndGgpJiYhbil7Zm9yKGxldCBkPTA7ZDxvLmZsYXRSb3dzLmxlbmd0aDtkKyspby5mbGF0Um93c1tkXS5jb2x1bW5GaWx0ZXJzPXt9LG8uZmxhdFJvd3NbZF0uY29sdW1uRmlsdGVyc01ldGE9e307cmV0dXJuIG99Y29uc3QgaT1bXSxyPVtdOyh0Pz9bXSkuZm9yRWFjaChkPT57dmFyIHM7Y29uc3QgZj1lLmdldENvbHVtbihkLmlkKTtpZighZilyZXR1cm47Y29uc3QgbT1mLmdldEZpbHRlckZuKCk7bSYmaS5wdXNoKHtpZDpkLmlkLGZpbHRlckZuOm0scmVzb2x2ZWRWYWx1ZToocz1tLnJlc29sdmVGaWx0ZXJWYWx1ZT09bnVsbD92b2lkIDA6bS5yZXNvbHZlRmlsdGVyVmFsdWUoZC52YWx1ZSkpIT1udWxsP3M6ZC52YWx1ZX0pfSk7Y29uc3QgbD0odD8/W10pLm1hcChkPT5kLmlkKSx1PWUuZ2V0R2xvYmFsRmlsdGVyRm4oKSxhPWUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5maWx0ZXIoZD0+ZC5nZXRDYW5HbG9iYWxGaWx0ZXIoKSk7biYmdSYmYS5sZW5ndGgmJihsLnB1c2goIl9fZ2xvYmFsX18iKSxhLmZvckVhY2goZD0+e3ZhciBzO3IucHVzaCh7aWQ6ZC5pZCxmaWx0ZXJGbjp1LHJlc29sdmVkVmFsdWU6KHM9dS5yZXNvbHZlRmlsdGVyVmFsdWU9PW51bGw/dm9pZCAwOnUucmVzb2x2ZUZpbHRlclZhbHVlKG4pKSE9bnVsbD9zOm59KX0pKTtsZXQgZyxjO2ZvcihsZXQgZD0wO2Q8by5mbGF0Um93cy5sZW5ndGg7ZCsrKXtjb25zdCBzPW8uZmxhdFJvd3NbZF07aWYocy5jb2x1bW5GaWx0ZXJzPXt9LGkubGVuZ3RoKWZvcihsZXQgZj0wO2Y8aS5sZW5ndGg7ZisrKXtnPWlbZl07Y29uc3QgbT1nLmlkO3MuY29sdW1uRmlsdGVyc1ttXT1nLmZpbHRlckZuKHMsbSxnLnJlc29sdmVkVmFsdWUsaD0+e3MuY29sdW1uRmlsdGVyc01ldGFbbV09aH0pfWlmKHIubGVuZ3RoKXtmb3IobGV0IGY9MDtmPHIubGVuZ3RoO2YrKyl7Yz1yW2ZdO2NvbnN0IG09Yy5pZDtpZihjLmZpbHRlckZuKHMsbSxjLnJlc29sdmVkVmFsdWUsaD0+e3MuY29sdW1uRmlsdGVyc01ldGFbbV09aH0pKXtzLmNvbHVtbkZpbHRlcnMuX19nbG9iYWxfXz0hMDticmVha319cy5jb2x1bW5GaWx0ZXJzLl9fZ2xvYmFsX18hPT0hMCYmKHMuY29sdW1uRmlsdGVycy5fX2dsb2JhbF9fPSExKX19Y29uc3QgcD1kPT57Zm9yKGxldCBzPTA7czxsLmxlbmd0aDtzKyspaWYoZC5jb2x1bW5GaWx0ZXJzW2xbc11dPT09ITEpcmV0dXJuITE7cmV0dXJuITB9O3JldHVybiBGbihvLnJvd3MscCxlKX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiLCJnZXRGaWx0ZXJlZFJvd01vZGVsIiwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiB4bigpe3JldHVybiBlPT5DKCgpPT5bZS5nZXRTdGF0ZSgpLnNvcnRpbmcsZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpXSwobyx0KT0+e2lmKCF0LnJvd3MubGVuZ3RofHwhKG8hPW51bGwmJm8ubGVuZ3RoKSlyZXR1cm4gdDtjb25zdCBuPWUuZ2V0U3RhdGUoKS5zb3J0aW5nLGk9W10scj1uLmZpbHRlcihhPT57dmFyIGc7cmV0dXJuKGc9ZS5nZXRDb2x1bW4oYS5pZCkpPT1udWxsP3ZvaWQgMDpnLmdldENhblNvcnQoKX0pLGw9e307ci5mb3JFYWNoKGE9Pntjb25zdCBnPWUuZ2V0Q29sdW1uKGEuaWQpO2cmJihsW2EuaWRdPXtzb3J0VW5kZWZpbmVkOmcuY29sdW1uRGVmLnNvcnRVbmRlZmluZWQsaW52ZXJ0U29ydGluZzpnLmNvbHVtbkRlZi5pbnZlcnRTb3J0aW5nLHNvcnRpbmdGbjpnLmdldFNvcnRpbmdGbigpfSl9KTtjb25zdCB1PWE9Pntjb25zdCBnPWEubWFwKGM9Pih7Li4uY30pKTtyZXR1cm4gZy5zb3J0KChjLHApPT57Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKz0xKXt2YXIgZDtjb25zdCBmPXJbc10sbT1sW2YuaWRdLGg9bS5zb3J0VW5kZWZpbmVkLFI9KGQ9Zj8uZGVzYykhPW51bGw/ZDohMTtsZXQgeD0wO2lmKGgpe2NvbnN0IFA9Yy5nZXRWYWx1ZShmLmlkKSx6PXAuZ2V0VmFsdWUoZi5pZCksTT1QPT09dm9pZCAwLFQ9ej09PXZvaWQgMDtpZihNfHxUKXtpZihoPT09ImZpcnN0IilyZXR1cm4gTT8tMToxO2lmKGg9PT0ibGFzdCIpcmV0dXJuIE0/MTotMTt4PU0mJlQ/MDpNP2g6LWh9fWlmKHg9PT0wJiYoeD1tLnNvcnRpbmdGbihjLHAsZi5pZCkpLHghPT0wKXJldHVybiBSJiYoeCo9LTEpLG0uaW52ZXJ0U29ydGluZyYmKHgqPS0xKSx4fXJldHVybiBjLmluZGV4LXAuaW5kZXh9KSxnLmZvckVhY2goYz0+e3ZhciBwO2kucHVzaChjKSwocD1jLnN1YlJvd3MpIT1udWxsJiZwLmxlbmd0aCYmKGMuc3ViUm93cz11KGMuc3ViUm93cykpfSksZ307cmV0dXJue3Jvd3M6dSh0LnJvd3MpLGZsYXRSb3dzOmkscm93c0J5SWQ6dC5yb3dzQnlJZH19LHcoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIiwiZ2V0U29ydGVkUm93TW9kZWwiLCgpPT5lLl9hdXRvUmVzZXRQYWdlSW5kZXgoKSkpfWZ1bmN0aW9uIHBlKCl7cmV0dXJuITB9Y29uc3QgUG49U3ltYm9sKCJtZXJnZS1wcm94eSIpLFZuPXtnZXQoZSxvLHQpe3JldHVybiBvPT09UG4/dDplLmdldChvKX0saGFzKGUsbyl7cmV0dXJuIGUuaGFzKG8pfSxzZXQ6cGUsZGVsZXRlUHJvcGVydHk6cGUsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbyl7cmV0dXJue2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBlLmdldChvKX0sc2V0OnBlLGRlbGV0ZVByb3BlcnR5OnBlfX0sb3duS2V5cyhlKXtyZXR1cm4gZS5rZXlzKCl9fTtmdW5jdGlvbiBWZShlKXtyZXR1cm4idmFsdWUiaW4gZT9lLnZhbHVlOmV9ZnVuY3Rpb24gdWUoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShlKSx0PTA7dDxlO3QrKylvW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gbmV3IFByb3h5KHtnZXQobil7Zm9yKGxldCBpPW8ubGVuZ3RoLTE7aT49MDtpLS0pe2NvbnN0IHI9VmUob1tpXSlbbl07aWYociE9PXZvaWQgMClyZXR1cm4gcn19LGhhcyhuKXtmb3IobGV0IGk9by5sZW5ndGgtMTtpPj0wO2ktLSlpZihuIGluIFZlKG9baV0pKXJldHVybiEwO3JldHVybiExfSxrZXlzKCl7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MDtpPG8ubGVuZ3RoO2krKyluLnB1c2goLi4uT2JqZWN0LmtleXMoVmUob1tpXSkpKTtyZXR1cm5bLi4uQXJyYXkuZnJvbShuZXcgU2V0KG4pKV19fSxWbil9Y29uc3QgSWU9Q3Qoe3Byb3BzOlsicmVuZGVyIiwicHJvcHMiXSxzZXR1cDplPT4oKT0+dHlwZW9mIGUucmVuZGVyPT0iZnVuY3Rpb24ifHx0eXBlb2YgZS5yZW5kZXI9PSJvYmplY3QiP3d0KGUucmVuZGVyLGUucHJvcHMpOmUucmVuZGVyfSk7ZnVuY3Rpb24gZXQoZSl7cmV0dXJuIHVlKGUse2RhdGE6eShlLmRhdGEpfSl9ZnVuY3Rpb24gSW4oZSl7Y29uc3Qgbz1wdChlLmRhdGEpLHQ9dWUoe3N0YXRlOnt9LG9uU3RhdGVDaGFuZ2U6KCk9Pnt9LHJlbmRlckZhbGxiYWNrVmFsdWU6bnVsbCxtZXJnZU9wdGlvbnMocixsKXtyZXR1cm4gbz97Li4uciwuLi5sfTp1ZShyLGwpfX0sbz9ldChlKTplKSxuPUNuKHQpO2lmKG8pe2NvbnN0IHI9bXQoZS5kYXRhKTt0dChyLCgpPT57bi5zZXRTdGF0ZShsPT4oey4uLmwsZGF0YTpyLnZhbHVlfSkpfSx7aW1tZWRpYXRlOiEwfSl9Y29uc3QgaT1TdChuLmluaXRpYWxTdGF0ZSk7cmV0dXJuIHZ0KCgpPT57bi5zZXRPcHRpb25zKHI9Pnt2YXIgbDtjb25zdCB1PW5ldyBQcm94eSh7fSx7Z2V0OihhLGcpPT5pLnZhbHVlW2ddfSk7cmV0dXJuIHVlKHIsbz9ldChlKTplLHtzdGF0ZTp1ZSh1LChsPWUuc3RhdGUpIT1udWxsP2w6e30pLG9uU3RhdGVDaGFuZ2U6YT0+e2EgaW5zdGFuY2VvZiBGdW5jdGlvbj9pLnZhbHVlPWEoaS52YWx1ZSk6aS52YWx1ZT1hLGUub25TdGF0ZUNoYW5nZT09bnVsbHx8ZS5vblN0YXRlQ2hhbmdlKGEpfX0pfSl9KSxufWNvbnN0IE1uPXtzbG90czp7cm9vdDoicmVsYXRpdmUgb3ZlcmZsb3ctYXV0byIsYmFzZToibWluLXctZnVsbCBvdmVyZmxvdy1jbGlwIixjYXB0aW9uOiJzci1vbmx5Iix0aGVhZDoicmVsYXRpdmUiLHRib2R5OiJpc29sYXRlIFsmPnRyXTpkYXRhLVtzZWxlY3RhYmxlPXRydWVdOmhvdmVyOmJnLWVsZXZhdGVkLzUwIFsmPnRyXTpkYXRhLVtzZWxlY3RhYmxlPXRydWVdOmZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0Iix0Zm9vdDoicmVsYXRpdmUiLHRyOiJkYXRhLVtzZWxlY3RlZD10cnVlXTpiZy1lbGV2YXRlZC81MCIsdGg6InB4LTQgcHktMy41IHRleHQtc20gdGV4dC1oaWdobGlnaHRlZCB0ZXh0LWxlZnQgcnRsOnRleHQtcmlnaHQgZm9udC1zZW1pYm9sZCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cGUtMCIsdGQ6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQgd2hpdGVzcGFjZS1ub3dyYXAgWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnBlLTAiLHNlcGFyYXRvcjoiYWJzb2x1dGUgei0xIGxlZnQtMCB3LWZ1bGwgaC1weCBiZy0oLS11aS1ib3JkZXItYWNjZW50ZWQpIixlbXB0eToicHktNiB0ZXh0LWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQiLGxvYWRpbmc6InB5LTYgdGV4dC1jZW50ZXIifSx2YXJpYW50czp7cGlubmVkOnt0cnVlOnt0aDoic3RpY2t5IGJnLWRlZmF1bHQvNzUgei0xIix0ZDoic3RpY2t5IGJnLWRlZmF1bHQvNzUgei0xIn19LHN0aWNreTp7dHJ1ZTp7dGhlYWQ6InN0aWNreSB0b3AtMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSIsdGZvb3Q6InN0aWNreSBib3R0b20tMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSJ9LGhlYWRlcjp7dGhlYWQ6InN0aWNreSB0b3AtMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSJ9LGZvb3Rlcjp7dGZvb3Q6InN0aWNreSBib3R0b20tMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSJ9fSxsb2FkaW5nOnt0cnVlOnt0aGVhZDoiYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6ei0xIGFmdGVyOmgtcHgifX0sbG9hZGluZ0FuaW1hdGlvbjp7Y2Fyb3VzZWw6IiIsImNhcm91c2VsLWludmVyc2UiOiIiLHN3aW5nOiIiLGVsYXN0aWM6IiJ9LGxvYWRpbmdDb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoicHJpbWFyeSIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1wcmltYXJ5In19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoic2Vjb25kYXJ5IixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLXNlY29uZGFyeSJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6InN1Y2Nlc3MiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6Ymctc3VjY2VzcyJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6ImluZm8iLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YmctaW5mbyJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6Indhcm5pbmciLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6Ymctd2FybmluZyJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6ImVycm9yIixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLWVycm9yIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoibmV1dHJhbCIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1pbnZlcnRlZCJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQW5pbWF0aW9uOiJjYXJvdXNlbCIsY2xhc3M6e3RoZWFkOiJhZnRlcjphbmltYXRlLVtjYXJvdXNlbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0gcnRsOmFmdGVyOmFuaW1hdGUtW2Nhcm91c2VsLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se2xvYWRpbmc6ITAsbG9hZGluZ0FuaW1hdGlvbjoiY2Fyb3VzZWwtaW52ZXJzZSIsY2xhc3M6e3RoZWFkOiJhZnRlcjphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSBydGw6YWZ0ZXI6YW5pbWF0ZS1bY2Fyb3VzZWwtaW52ZXJzZS1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdBbmltYXRpb246InN3aW5nIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW3N3aW5nXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQW5pbWF0aW9uOiJlbGFzdGljIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW2VsYXN0aWNfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19XSxkZWZhdWx0VmFyaWFudHM6e2xvYWRpbmdDb2xvcjoicHJpbWFyeSIsbG9hZGluZ0FuaW1hdGlvbjoiY2Fyb3VzZWwifX0sRG49WyJkYXRhLXNlbGVjdGVkIiwiZGF0YS1zZWxlY3RhYmxlIiwiZGF0YS1leHBhbmRlZCIsImRhdGEtcGlubmVkIiwicm9sZSIsInRhYmluZGV4Iiwib25DbGljayIsIm9uUG9pbnRlcmVudGVyIiwib25Db250ZXh0bWVudSJdLEFuPVsiZGF0YS1waW5uZWQiLCJjb2xzcGFuIiwicm93c3BhbiJdLHpuPVsiY29sc3BhbiJdLE9uPVsiZGF0YS1waW5uZWQiLCJzY29wZSIsImNvbHNwYW4iLCJyb3dzcGFuIl0sRW49WyJjb2xzcGFuIl0sR249WyJjb2xzcGFuIl0sSG49e2tleToxfSxMbj1bImNvbHNwYW4iXSxxbj17a2V5OjJ9LGtuPVsiY29sc3BhbiJdLEJuPVsiZGF0YS1waW5uZWQiLCJjb2xzcGFuIiwicm93c3BhbiJdLGJuPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVRhYmxlIixwcm9wczpWdCh7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGF0YTp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY29sdW1uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY2FwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG1ldGE6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSx2aXJ0dWFsaXplOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZW1wdHk6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZ0FuaW1hdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx3YXRjaE9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9Pih7ZGVlcDohMH0pfSxnbG9iYWxGaWx0ZXJPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29sdW1uRmlsdGVyc09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb2x1bW5QaW5uaW5nT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbHVtblNpemluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSx2aXNpYmlsaXR5T3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHNvcnRpbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZ3JvdXBpbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZXhwYW5kZWRPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scm93U2VsZWN0aW9uT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHJvd1Bpbm5pbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scGFnaW5hdGlvbk9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxmYWNldGVkT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9uU2VsZWN0Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkhvdmVyOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkNvbnRleHRtZW51Ont0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sc3RhdGU6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvblN0YXRlQ2hhbmdlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxyZW5kZXJGYWxsYmFja1ZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LF9mZWF0dXJlczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sYXV0b1Jlc2V0QWxsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnQWxsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnQ2VsbHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdDb2x1bW5zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnSGVhZGVyczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWJ1Z1Jvd3M6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdUYWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0Q29sdW1uOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZ2V0Um93SWQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LGdldFN1YlJvd3M6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LGluaXRpYWxTdGF0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG1lcmdlT3B0aW9uczp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX19LHtnbG9iYWxGaWx0ZXI6e3R5cGU6U3RyaW5nfSxnbG9iYWxGaWx0ZXJNb2RpZmllcnM6e30sY29sdW1uRmlsdGVyczp7dHlwZTpBcnJheX0sY29sdW1uRmlsdGVyc01vZGlmaWVyczp7fSxjb2x1bW5PcmRlcjp7dHlwZTpBcnJheX0sY29sdW1uT3JkZXJNb2RpZmllcnM6e30sY29sdW1uVmlzaWJpbGl0eTp7dHlwZTpPYmplY3R9LGNvbHVtblZpc2liaWxpdHlNb2RpZmllcnM6e30sY29sdW1uUGlubmluZzp7dHlwZTpPYmplY3R9LGNvbHVtblBpbm5pbmdNb2RpZmllcnM6e30sY29sdW1uU2l6aW5nOnt0eXBlOk9iamVjdH0sY29sdW1uU2l6aW5nTW9kaWZpZXJzOnt9LGNvbHVtblNpemluZ0luZm86e3R5cGU6T2JqZWN0fSxjb2x1bW5TaXppbmdJbmZvTW9kaWZpZXJzOnt9LHJvd1NlbGVjdGlvbjp7dHlwZTpPYmplY3R9LHJvd1NlbGVjdGlvbk1vZGlmaWVyczp7fSxyb3dQaW5uaW5nOnt0eXBlOk9iamVjdH0scm93UGlubmluZ01vZGlmaWVyczp7fSxzb3J0aW5nOnt0eXBlOkFycmF5fSxzb3J0aW5nTW9kaWZpZXJzOnt9LGdyb3VwaW5nOnt0eXBlOkFycmF5fSxncm91cGluZ01vZGlmaWVyczp7fSxleHBhbmRlZDp7dHlwZTpbQm9vbGVhbixPYmplY3RdfSxleHBhbmRlZE1vZGlmaWVyczp7fSxwYWdpbmF0aW9uOnt0eXBlOk9iamVjdH0scGFnaW5hdGlvbk1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOmdsb2JhbEZpbHRlciIsInVwZGF0ZTpjb2x1bW5GaWx0ZXJzIiwidXBkYXRlOmNvbHVtbk9yZGVyIiwidXBkYXRlOmNvbHVtblZpc2liaWxpdHkiLCJ1cGRhdGU6Y29sdW1uUGlubmluZyIsInVwZGF0ZTpjb2x1bW5TaXppbmciLCJ1cGRhdGU6Y29sdW1uU2l6aW5nSW5mbyIsInVwZGF0ZTpyb3dTZWxlY3Rpb24iLCJ1cGRhdGU6cm93UGlubmluZyIsInVwZGF0ZTpzb3J0aW5nIiwidXBkYXRlOmdyb3VwaW5nIiwidXBkYXRlOmV4cGFuZGVkIiwidXBkYXRlOnBhZ2luYXRpb24iXSxzZXR1cChlLHtleHBvc2U6b30pe2NvbnN0IHQ9ZSxuPVJ0KCkse3Q6aX09aHQoKSxyPUZ0KCksbD15dCgidGFibGUiLHQpLHU9X3QodC5kYXRhPz9bXSx0LndhdGNoT3B0aW9ucz8uZGVlcCE9PSExKSxhPWsoKCk9PnQubWV0YT8/e30pLGc9aygoKT0+Yyh0LmNvbHVtbnM/P09iamVjdC5rZXlzKHUudmFsdWVbMF0/P3t9KS5tYXAoUz0+KHthY2Nlc3NvcktleTpTLGhlYWRlcjpBdChTKX0pKSkpO2Z1bmN0aW9uIGMoUyl7cmV0dXJuIFMubWFwKFY9Pntjb25zdCB2PXsuLi5WfTtyZXR1cm4iY29sdW1ucyJpbiB2JiZ2LmNvbHVtbnMmJih2LmNvbHVtbnM9Yyh2LmNvbHVtbnMpKSx2LmNlbGx8fCh2LmNlbGw9KHtnZXRWYWx1ZTpGfSk9Pntjb25zdCAkPUYoKTtyZXR1cm4gJD09PSIifHwkPT09bnVsbHx8JD09PXZvaWQgMD8iwqAiOlN0cmluZygkKX0pLHZ9KX1jb25zdCBwPWsoKCk9PlllKHtleHRlbmQ6WWUoTW4pLC4uLnIudWk/LnRhYmxlfHx7fX0pKHtzdGlja3k6dC5zdGlja3ksbG9hZGluZzp0LmxvYWRpbmcsbG9hZGluZ0NvbG9yOnQubG9hZGluZ0NvbG9yLGxvYWRpbmdBbmltYXRpb246dC5sb2FkaW5nQW5pbWF0aW9ufSkpLFtkLHNdPVhlKCksW2YsbV09WGUoe3Byb3BzOntyb3c6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSxzdHlsZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fX0pLGg9aygoKT0+e2Z1bmN0aW9uIFMoVil7Zm9yKGNvbnN0IHYgb2YgVilpZigiZm9vdGVyImluIHZ8fCJjb2x1bW5zImluIHYmJlModi5jb2x1bW5zKSlyZXR1cm4hMDtyZXR1cm4hMX1yZXR1cm4gUyhnLnZhbHVlKX0pLFI9RyhlLCJnbG9iYWxGaWx0ZXIiKSx4PUcoZSwiY29sdW1uRmlsdGVycyIpLFA9RyhlLCJjb2x1bW5PcmRlciIpLHo9RyhlLCJjb2x1bW5WaXNpYmlsaXR5IiksTT1HKGUsImNvbHVtblBpbm5pbmciKSxUPUcoZSwiY29sdW1uU2l6aW5nIiksWT1HKGUsImNvbHVtblNpemluZ0luZm8iKSxRPUcoZSwicm93U2VsZWN0aW9uIiksdGU9RyhlLCJyb3dQaW5uaW5nIiksbmU9RyhlLCJzb3J0aW5nIiksWj1HKGUsImdyb3VwaW5nIiksU2U9RyhlLCJleHBhbmRlZCIpLHZlPUcoZSwicGFnaW5hdGlvbiIpLENlPUtlKCJyb290UmVmIikscWU9S2UoInRhYmxlUmVmIiksZHQ9JHQoeHQodCwiX2ZlYXR1cmVzIiwiYXV0b1Jlc2V0QWxsIiwiZGVidWdBbGwiLCJkZWJ1Z0NlbGxzIiwiZGVidWdDb2x1bW5zIiwiZGVidWdIZWFkZXJzIiwiZGVidWdSb3dzIiwiZGVidWdUYWJsZSIsImRlZmF1bHRDb2x1bW4iLCJnZXRSb3dJZCIsImdldFN1YlJvd3MiLCJpbml0aWFsU3RhdGUiLCJtZXJnZU9wdGlvbnMiLCJyZW5kZXJGYWxsYmFja1ZhbHVlIikpLE89SW4oey4uLmR0LnZhbHVlLGdldCBkYXRhKCl7cmV0dXJuIHUudmFsdWV9LGdldCBjb2x1bW5zKCl7cmV0dXJuIGcudmFsdWV9LG1ldGE6YS52YWx1ZSxnZXRDb3JlUm93TW9kZWw6d24oKSwuLi50Lmdsb2JhbEZpbHRlck9wdGlvbnN8fHt9LC4uLlIudmFsdWUhPT12b2lkIDAmJntvbkdsb2JhbEZpbHRlckNoYW5nZTpTPT5FKFMsUil9LC4uLnQuY29sdW1uRmlsdGVyc09wdGlvbnN8fHt9LGdldEZpbHRlcmVkUm93TW9kZWw6JG4oKSwuLi54LnZhbHVlIT09dm9pZCAwJiZ7b25Db2x1bW5GaWx0ZXJzQ2hhbmdlOlM9PkUoUyx4KX0sLi4uUC52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uT3JkZXJDaGFuZ2U6Uz0+RShTLFApfSwuLi50LnZpc2liaWxpdHlPcHRpb25zfHx7fSwuLi56LnZhbHVlIT09dm9pZCAwJiZ7b25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlOlM9PkUoUyx6KX0sLi4udC5jb2x1bW5QaW5uaW5nT3B0aW9uc3x8e30sLi4uTS52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uUGlubmluZ0NoYW5nZTpTPT5FKFMsTSl9LC4uLnQuY29sdW1uU2l6aW5nT3B0aW9uc3x8e30sLi4uVC52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uU2l6aW5nQ2hhbmdlOlM9PkUoUyxUKX0sLi4uWS52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uU2l6aW5nSW5mb0NoYW5nZTpTPT5FKFMsWSl9LC4uLnQucm93U2VsZWN0aW9uT3B0aW9uc3x8e30sLi4uUS52YWx1ZSE9PXZvaWQgMCYme29uUm93U2VsZWN0aW9uQ2hhbmdlOlM9PkUoUyxRKX0sLi4udC5yb3dQaW5uaW5nT3B0aW9uc3x8e30sLi4udGUudmFsdWUhPT12b2lkIDAmJntvblJvd1Bpbm5pbmdDaGFuZ2U6Uz0+RShTLHRlKX0sLi4udC5zb3J0aW5nT3B0aW9uc3x8e30sZ2V0U29ydGVkUm93TW9kZWw6eG4oKSwuLi5uZS52YWx1ZSE9PXZvaWQgMCYme29uU29ydGluZ0NoYW5nZTpTPT5FKFMsbmUpfSwuLi50Lmdyb3VwaW5nT3B0aW9uc3x8e30sLi4uWi52YWx1ZSE9PXZvaWQgMCYme29uR3JvdXBpbmdDaGFuZ2U6Uz0+RShTLFopfSwuLi50LmV4cGFuZGVkT3B0aW9uc3x8e30sZ2V0RXhwYW5kZWRSb3dNb2RlbDpSbigpLC4uLlNlLnZhbHVlIT09dm9pZCAwJiZ7b25FeHBhbmRlZENoYW5nZTpTPT5FKFMsU2UpfSwuLi50LnBhZ2luYXRpb25PcHRpb25zfHx7fSwuLi52ZS52YWx1ZSE9PXZvaWQgMCYme29uUGFnaW5hdGlvbkNoYW5nZTpTPT5FKFMsdmUpfSwuLi50LmZhY2V0ZWRPcHRpb25zfHx7fSxzdGF0ZTp7Z2V0IGdsb2JhbEZpbHRlcigpe3JldHVybiBSLnZhbHVlfSxnZXQgY29sdW1uRmlsdGVycygpe3JldHVybiB4LnZhbHVlfSxnZXQgY29sdW1uT3JkZXIoKXtyZXR1cm4gUC52YWx1ZX0sZ2V0IGNvbHVtblZpc2liaWxpdHkoKXtyZXR1cm4gei52YWx1ZX0sZ2V0IGNvbHVtblBpbm5pbmcoKXtyZXR1cm4gTS52YWx1ZX0sZ2V0IGV4cGFuZGVkKCl7cmV0dXJuIFNlLnZhbHVlfSxnZXQgcm93U2VsZWN0aW9uKCl7cmV0dXJuIFEudmFsdWV9LGdldCBzb3J0aW5nKCl7cmV0dXJuIG5lLnZhbHVlfSxnZXQgZ3JvdXBpbmcoKXtyZXR1cm4gWi52YWx1ZX0sZ2V0IHJvd1Bpbm5pbmcoKXtyZXR1cm4gdGUudmFsdWV9LGdldCBjb2x1bW5TaXppbmcoKXtyZXR1cm4gVC52YWx1ZX0sZ2V0IGNvbHVtblNpemluZ0luZm8oKXtyZXR1cm4gWS52YWx1ZX0sZ2V0IHBhZ2luYXRpb24oKXtyZXR1cm4gdmUudmFsdWV9fX0pLGtlPWsoKCk9Pk8uZ2V0Um93TW9kZWwoKS5yb3dzKSxCZT1rKCgpPT50LnZpcnR1YWxpemU/W106Ty5nZXRUb3BSb3dzKCkpLFRlPWsoKCk9PnQudmlydHVhbGl6ZT9bXTpPLmdldEJvdHRvbVJvd3MoKSksb2U9aygoKT0+QmUudmFsdWUubGVuZ3RofHxUZS52YWx1ZS5sZW5ndGg/Ty5nZXRDZW50ZXJSb3dzKCk6a2UudmFsdWUpLGplPUl0KCgpPT5NdCh0eXBlb2YgdC52aXJ0dWFsaXplPT0iYm9vbGVhbiI/e306dC52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6NjUsb3ZlcnNjYW46MTJ9KSksaWU9ISF0LnZpcnR1YWxpemUmJkR0KHsuLi5qZS52YWx1ZSxnZXQgY291bnQoKXtyZXR1cm4gb2UudmFsdWUubGVuZ3RofSxnZXRTY3JvbGxFbGVtZW50OigpPT5DZS52YWx1ZT8uJGVsLGVzdGltYXRlU2l6ZTpTPT57Y29uc3QgVj1qZS52YWx1ZS5lc3RpbWF0ZVNpemU7cmV0dXJuIHR5cGVvZiBWPT0iZnVuY3Rpb24iP1YoUyk6Vn19KSxyZT1rKCgpPT5pZT9pZS52YWx1ZS5nZXRWaXJ0dWFsSXRlbXMoKTpbXSksYmU9aygoKT0+cmUudmFsdWVbMF0/LnN0YXJ0Pz8wKSxOZT1rKCgpPT4haWV8fCFyZS52YWx1ZS5sZW5ndGg/MDppZS52YWx1ZS5nZXRUb3RhbFNpemUoKS0ocmUudmFsdWVbcmUudmFsdWUubGVuZ3RoLTFdPy5lbmQ/PzApKTtmdW5jdGlvbiBFKFMsVil7Vi52YWx1ZT10eXBlb2YgUz09ImZ1bmN0aW9uIj9TKFYudmFsdWUpOlN9ZnVuY3Rpb24gY3QoUyxWKXtpZighdC5vblNlbGVjdClyZXR1cm47Y29uc3Qgdj1TLnRhcmdldDt2LmNsb3Nlc3QoImJ1dHRvbiIpfHx2LmNsb3Nlc3QoImEiKXx8KFMucHJldmVudERlZmF1bHQoKSxTLnN0b3BQcm9wYWdhdGlvbigpLHQub25TZWxlY3QoUyxWKSl9ZnVuY3Rpb24gVWUoUyxWKXt0Lm9uSG92ZXImJnQub25Ib3ZlcihTLFYpfWZ1bmN0aW9uIGZ0KFMsVil7dC5vbkNvbnRleHRtZW51JiYoQXJyYXkuaXNBcnJheSh0Lm9uQ29udGV4dG1lbnUpP3Qub25Db250ZXh0bWVudS5mb3JFYWNoKHY9PnYoUyxWKSk6dC5vbkNvbnRleHRtZW51KFMsVikpfWZ1bmN0aW9uIGooUyxWKXtyZXR1cm4gdHlwZW9mIFM9PSJmdW5jdGlvbiI/UyhWKTpTfWZ1bmN0aW9uIHdlKFMpe2NvbnN0IFY9e30sdj1TLmdldElzUGlubmVkKCk7cmV0dXJuIHY9PT0ibGVmdCI/Vi5sZWZ0PWAke1MuZ2V0U3RhcnQoImxlZnQiKX1weGA6dj09PSJyaWdodCImJihWLnJpZ2h0PWAke1MuZ2V0QWZ0ZXIoInJpZ2h0Iil9cHhgKSxWfXJldHVybiB0dCgoKT0+dC5kYXRhLCgpPT57dS52YWx1ZT10LmRhdGE/Wy4uLnQuZGF0YV06W119LHQud2F0Y2hPcHRpb25zKSxvKHtnZXQgJGVsKCl7cmV0dXJuIENlLnZhbHVlPy4kZWx9LHRhYmxlUmVmOnFlLHRhYmxlQXBpOk99KSwoUyxWKT0+KF8oKSxJKEgsbnVsbCxbbGUoeShmKSxudWxsLHtkZWZhdWx0OlJlKCh7cm93OnYsc3R5bGU6Rn0pPT5bcSgidHIiLHsiZGF0YS1zZWxlY3RlZCI6di5nZXRJc1NlbGVjdGVkKCksImRhdGEtc2VsZWN0YWJsZSI6ISF0Lm9uU2VsZWN0fHwhIXQub25Ib3Zlcnx8ISF0Lm9uQ29udGV4dG1lbnUsImRhdGEtZXhwYW5kZWQiOnYuZ2V0SXNFeHBhbmRlZCgpLCJkYXRhLXBpbm5lZCI6di5nZXRJc1Bpbm5lZCgpfHx2b2lkIDAscm9sZTp0Lm9uU2VsZWN0PyJidXR0b24iOnZvaWQgMCx0YWJpbmRleDp0Lm9uU2VsZWN0PzA6dm9pZCAwLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6RChwLnZhbHVlLnRyKHtjbGFzczpbeShsKT8udHIsaih5KE8pLm9wdGlvbnMubWV0YT8uY2xhc3M/LnRyLHYpXX0pKSxzdHlsZTpKKFtqKHkoTykub3B0aW9ucy5tZXRhPy5zdHlsZT8udHIsdiksRl0pLG9uQ2xpY2s6JD0+Y3QoJCx2KSxvblBvaW50ZXJlbnRlcjokPT5VZSgkLHYpLG9uUG9pbnRlcmxlYXZlOlZbMF18fChWWzBdPSQ9PlVlKCQsbnVsbCkpLG9uQ29udGV4dG1lbnU6JD0+ZnQoJCx2KX0sWyhfKCEwKSxJKEgsbnVsbCxiKHYuZ2V0VmlzaWJsZUNlbGxzKCksJD0+KF8oKSxJKCJ0ZCIse2tleTokLmlkLCJkYXRhLXBpbm5lZCI6JC5jb2x1bW4uZ2V0SXNQaW5uZWQoKSxjb2xzcGFuOmooJC5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNvbHNwYW4/LnRkLCQpLHJvd3NwYW46aigkLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8ucm93c3Bhbj8udGQsJCksImRhdGEtc2xvdCI6InRkIixjbGFzczpEKHAudmFsdWUudGQoe2NsYXNzOlt5KGwpPy50ZCxqKCQuY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5jbGFzcz8udGQsJCldLHBpbm5lZDohISQuY29sdW1uLmdldElzUGlubmVkKCl9KSksc3R5bGU6Sihbd2UoJC5jb2x1bW4pLGooJC5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnN0eWxlPy50ZCwkKV0pfSxbTihTLiRzbG90cyxgJHskLmNvbHVtbi5pZH0tY2VsbGAsZ2Uoe3JlZl9mb3I6ITB9LCQuZ2V0Q29udGV4dCgpKSwoKT0+W2xlKHkoSWUpLHtyZW5kZXI6JC5jb2x1bW4uY29sdW1uRGVmLmNlbGwscHJvcHM6JC5nZXRDb250ZXh0KCl9LG51bGwsOCxbInJlbmRlciIsInByb3BzIl0pXSldLDE0LEFuKSkpLDEyOCkpXSw0NixEbiksdi5nZXRJc0V4cGFuZGVkKCk/KF8oKSxJKCJ0ciIse2tleTowLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6RChwLnZhbHVlLnRyKHtjbGFzczpbeShsKT8udHJdfSkpfSxbcSgidGQiLHtjb2xzcGFuOnYuZ2V0QWxsQ2VsbHMoKS5sZW5ndGgsImRhdGEtc2xvdCI6InRkIixjbGFzczpEKHAudmFsdWUudGQoe2NsYXNzOlt5KGwpPy50ZF19KSl9LFtOKFMuJHNsb3RzLCJleHBhbmRlZCIse3Jvdzp2fSldLDEwLHpuKV0sMikpOlgoIiIsITApXSksXzozfSksbGUoeShkKSxudWxsLHtkZWZhdWx0OlJlKCgpPT5bcSgidGFibGUiLHtyZWZfa2V5OiJ0YWJsZVJlZiIscmVmOnFlLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpEKHAudmFsdWUuYmFzZSh7Y2xhc3M6W3kobCk/LmJhc2VdfSkpfSxbZS5jYXB0aW9ufHxuLmNhcHRpb24/KF8oKSxJKCJjYXB0aW9uIix7a2V5OjAsImRhdGEtc2xvdCI6ImNhcHRpb24iLGNsYXNzOkQocC52YWx1ZS5jYXB0aW9uKHtjbGFzczpbeShsKT8uY2FwdGlvbl19KSl9LFtOKFMuJHNsb3RzLCJjYXB0aW9uIix7fSwoKT0+W1dlKEplKGUuY2FwdGlvbiksMSldKV0sMikpOlgoIiIsITApLHEoInRoZWFkIix7ImRhdGEtc2xvdCI6InRoZWFkIixjbGFzczpEKHAudmFsdWUudGhlYWQoe2NsYXNzOlt5KGwpPy50aGVhZF19KSl9LFsoXyghMCksSShILG51bGwsYih5KE8pLmdldEhlYWRlckdyb3VwcygpLHY9PihfKCksSSgidHIiLHtrZXk6di5pZCwiZGF0YS1zbG90IjoidHIiLGNsYXNzOkQocC52YWx1ZS50cih7Y2xhc3M6W3kobCk/LnRyXX0pKX0sWyhfKCEwKSxJKEgsbnVsbCxiKHYuaGVhZGVycyxGPT4oXygpLEkoInRoIix7a2V5OkYuaWQsImRhdGEtcGlubmVkIjpGLmNvbHVtbi5nZXRJc1Bpbm5lZCgpLHNjb3BlOkYuY29sU3Bhbj4xPyJjb2xncm91cCI6ImNvbCIsY29sc3BhbjpGLmNvbFNwYW4+MT9GLmNvbFNwYW46dm9pZCAwLHJvd3NwYW46Ri5yb3dTcGFuPjE/Ri5yb3dTcGFuOnZvaWQgMCwiZGF0YS1zbG90IjoidGgiLGNsYXNzOkQocC52YWx1ZS50aCh7Y2xhc3M6W3kobCk/LnRoLGooRi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxGKV0scGlubmVkOiEhRi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKSxzdHlsZTpKKFt3ZShGLmNvbHVtbiksaihGLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uc3R5bGU/LnRoLEYpXSl9LFtOKFMuJHNsb3RzLGAke0YuaWR9LWhlYWRlcmAsZ2Uoe3JlZl9mb3I6ITB9LEYuZ2V0Q29udGV4dCgpKSwoKT0+W0YuaXNQbGFjZWhvbGRlcj9YKCIiLCEwKTooXygpLGVlKHkoSWUpLHtrZXk6MCxyZW5kZXI6Ri5jb2x1bW4uY29sdW1uRGVmLmhlYWRlcixwcm9wczpGLmdldENvbnRleHQoKX0sbnVsbCw4LFsicmVuZGVyIiwicHJvcHMiXSkpXSldLDE0LE9uKSkpLDEyOCkpXSwyKSkpLDEyOCkpLHEoInRyIix7ImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6RChwLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W3kobCk/LnNlcGFyYXRvcl19KSl9LG51bGwsMildLDIpLHEoInRib2R5Iix7ImRhdGEtc2xvdCI6InRib2R5IixjbGFzczpEKHAudmFsdWUudGJvZHkoe2NsYXNzOlt5KGwpPy50Ym9keV19KSl9LFtOKFMuJHNsb3RzLCJib2R5LXRvcCIpLGtlLnZhbHVlLmxlbmd0aD8oXygpLEkoSCx7a2V5OjB9LFsoXyghMCksSShILG51bGwsYihCZS52YWx1ZSx2PT4oXygpLGVlKHkobSkse2tleTp2LmlkLHJvdzp2fSxudWxsLDgsWyJyb3ciXSkpKSwxMjgpKSx5KGllKT8oXygpLEkoSCx7a2V5OjB9LFtiZS52YWx1ZT4wPyhfKCksSSgidHIiLHtrZXk6MCxzdHlsZTpKKHtoZWlnaHQ6YCR7YmUudmFsdWV9cHhgfSksImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LFtxKCJ0ZCIse2NvbHNwYW46eShPKS5nZXRBbGxMZWFmQ29sdW1ucygpLmxlbmd0aH0sbnVsbCw4LEVuKV0sNCkpOlgoIiIsITApLChfKCEwKSxJKEgsbnVsbCxiKHJlLnZhbHVlLHY9PihfKCksSShILHtrZXk6b2UudmFsdWVbdi5pbmRleF0/LmlkPz9gdmlydHVhbC0ke3YuaW5kZXh9YH0sW29lLnZhbHVlW3YuaW5kZXhdPyhfKCksZWUoeShtKSx7a2V5OjAscm93Om9lLnZhbHVlW3YuaW5kZXhdLHN0eWxlOkooe2hlaWdodDpgJHt2LnNpemV9cHhgfSl9LG51bGwsOCxbInJvdyIsInN0eWxlIl0pKTpYKCIiLCEwKV0sNjQpKSksMTI4KSksTmUudmFsdWU+MD8oXygpLEkoInRyIix7a2V5OjEsc3R5bGU6Sih7aGVpZ2h0OmAke05lLnZhbHVlfXB4YH0pLCJhcmlhLWhpZGRlbiI6InRydWUifSxbcSgidGQiLHtjb2xzcGFuOnkoTykuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGh9LG51bGwsOCxHbildLDQpKTpYKCIiLCEwKV0sNjQpKTooXyghMCksSShILHtrZXk6MX0sYihvZS52YWx1ZSx2PT4oXygpLGVlKHkobSkse2tleTp2LmlkLHJvdzp2fSxudWxsLDgsWyJyb3ciXSkpKSwxMjgpKSwoXyghMCksSShILG51bGwsYihUZS52YWx1ZSx2PT4oXygpLGVlKHkobSkse2tleTp2LmlkLHJvdzp2fSxudWxsLDgsWyJyb3ciXSkpKSwxMjgpKV0sNjQpKTplLmxvYWRpbmcmJm4ubG9hZGluZz8oXygpLEkoInRyIixIbixbcSgidGQiLHtjb2xzcGFuOnkoTykuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgsImRhdGEtc2xvdCI6ImxvYWRpbmciLGNsYXNzOkQocC52YWx1ZS5sb2FkaW5nKHtjbGFzczp5KGwpPy5sb2FkaW5nfSkpfSxbTihTLiRzbG90cywibG9hZGluZyIpXSwxMCxMbildKSk6KF8oKSxJKCJ0ciIscW4sW3EoInRkIix7Y29sc3Bhbjp5KE8pLmdldEFsbExlYWZDb2x1bW5zKCkubGVuZ3RoLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6RChwLnZhbHVlLmVtcHR5KHtjbGFzczp5KGwpPy5lbXB0eX0pKX0sW04oUy4kc2xvdHMsImVtcHR5Iix7fSwoKT0+W1dlKEplKGUuZW1wdHl8fHkoaSkoInRhYmxlLm5vRGF0YSIpKSwxKV0pXSwxMCxrbildKSksTihTLiRzbG90cywiYm9keS1ib3R0b20iKV0sMiksaC52YWx1ZT8oXygpLEkoInRmb290Iix7a2V5OjEsImRhdGEtc2xvdCI6InRmb290IixjbGFzczpEKHAudmFsdWUudGZvb3Qoe2NsYXNzOlt5KGwpPy50Zm9vdF19KSl9LFtxKCJ0ciIseyJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOkQocC52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOlt5KGwpPy5zZXBhcmF0b3JdfSkpfSxudWxsLDIpLChfKCEwKSxJKEgsbnVsbCxiKHkoTykuZ2V0Rm9vdGVyR3JvdXBzKCksdj0+KF8oKSxJKCJ0ciIse2tleTp2LmlkLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6RChwLnZhbHVlLnRyKHtjbGFzczpbeShsKT8udHJdfSkpfSxbKF8oITApLEkoSCxudWxsLGIodi5oZWFkZXJzLEY9PihfKCksSSgidGgiLHtrZXk6Ri5pZCwiZGF0YS1waW5uZWQiOkYuY29sdW1uLmdldElzUGlubmVkKCksY29sc3BhbjpGLmNvbFNwYW4+MT9GLmNvbFNwYW46dm9pZCAwLHJvd3NwYW46Ri5yb3dTcGFuPjE/Ri5yb3dTcGFuOnZvaWQgMCwiZGF0YS1zbG90IjoidGgiLGNsYXNzOkQocC52YWx1ZS50aCh7Y2xhc3M6W3kobCk/LnRoLGooRi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxGKV0scGlubmVkOiEhRi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKSxzdHlsZTpKKFt3ZShGLmNvbHVtbiksaihGLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uc3R5bGU/LnRoLEYpXSl9LFtOKFMuJHNsb3RzLGAke0YuaWR9LWZvb3RlcmAsZ2Uoe3JlZl9mb3I6ITB9LEYuZ2V0Q29udGV4dCgpKSwoKT0+W0YuaXNQbGFjZWhvbGRlcj9YKCIiLCEwKTooXygpLGVlKHkoSWUpLHtrZXk6MCxyZW5kZXI6Ri5jb2x1bW4uY29sdW1uRGVmLmZvb3Rlcixwcm9wczpGLmdldENvbnRleHQoKX0sbnVsbCw4LFsicmVuZGVyIiwicHJvcHMiXSkpXSldLDE0LEJuKSkpLDEyOCkpXSwyKSkpLDEyOCkpXSwyKSk6WCgiIiwhMCldLDIpXSksXzozfSksbGUoeShQdCksZ2Uoe3JlZl9rZXk6InJvb3RSZWYiLHJlZjpDZSxhczplLmFzfSxTLiRhdHRycyx7ImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnAudmFsdWUucm9vdCh7Y2xhc3M6W3kobCk/LnJvb3QsdC5jbGFzc119KX0pLHtkZWZhdWx0OlJlKCgpPT5bbGUoeShzKSldKSxfOjF9LDE2LFsiYXMiLCJjbGFzcyJdKV0sNjQpKX19KTtleHBvcnR7Ym4gYXMgX307Cg==", "/_nuxt/CXoc4UER.js": "aW1wb3J0e2YgYXMgVCxhOCBhcyBQLG8gYXMgdSxoIGFzIHYsdyBhcyBpLEwgYXMgcSxhdiBhcyBMLGF3IGFzIEksaSBhcyB0LGJvIGFzIEcsY2YgYXMgTyxhOSBhcyBVLFIgYXMgSixjZyBhcyBaLGJkIGFzIFEsbCBhcyBiLHIgYXMgeCxhNyBhcyBYLGE0IGFzIEEsYlogYXMgJCxiIGFzIHcsYm4gYXMgWSxhYSBhcyBfLGJOIGFzIGVlLGQgYXMgdGUsdCBhcyBNLGFiIGFzIGFlLGJtIGFzIHJlLGFHIGFzIEUsYUQgYXMgb2UsYWkgYXMgaixhYyBhcyBzZSxhZyBhcyBsZSxicCBhcyBuZSxhMiBhcyBpZSxQIGFzIHVlLGJNIGFzIGRlLGJnIGFzIHBlLGFoIGFzIGZlLEogYXMgY2UsSyBhcyBnZSxhaiBhcyB2ZSxicSBhcyB5ZSxhRiBhcyBSLHYgYXMgTixidiBhcyBiZSxjIGFzIEYsTSBhcyBILEYgYXMgbWUscSBhcyBfZSxOIGFzIEt9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7ZSBhcyBxZSxfIGFzIENlfWZyb20iLi9DWWFtekxtNS5qcyI7dmFyIGhlPVQoe19fbmFtZToiVG9vbHRpcEFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1fSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHIpe2NvbnN0IGQ9cjtyZXR1cm4gUCgpLChlLHApPT4odSgpLHYodChHKSxMKEkoZCkpLHtkZWZhdWx0OmkoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksVGU9aGU7Y29uc3Qgej0idG9vbHRpcC5vcGVuIixbUyx3ZV09WCgiVG9vbHRpcFJvb3QiKTt2YXIgUGU9VCh7X19uYW1lOiJUb29sdGlwUm9vdCIscHJvcHM6e2RlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0OmR9KXtjb25zdCBlPXIscD1kO1AoKTtjb25zdCBhPU8oKSxnPWIoKCk9PmUuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ/P2EuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQudmFsdWUpLG49YigoKT0+ZS5kaXNhYmxlQ2xvc2luZ1RyaWdnZXI/P2EuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlKSxmPWIoKCk9PmUuZGlzYWJsZWQ/P2EuZGlzYWJsZWQudmFsdWUpLHk9YigoKT0+ZS5kZWxheUR1cmF0aW9uPz9hLmRlbGF5RHVyYXRpb24udmFsdWUpLG09YigoKT0+ZS5pZ25vcmVOb25LZXlib2FyZEZvY3VzPz9hLmlnbm9yZU5vbktleWJvYXJkRm9jdXMudmFsdWUpLG89VShlLCJvcGVuIixwLHtkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0T3BlbixwYXNzaXZlOmUub3Blbj09PXZvaWQgMH0pO0oobyxCPT57YS5vbkNsb3NlJiYoQj8oYS5vbk9wZW4oKSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCh6KSkpOmEub25DbG9zZSgpKX0pO2NvbnN0IHM9eCghMSksbD14KCksQz1iKCgpPT5vLnZhbHVlP3MudmFsdWU/ImRlbGF5ZWQtb3BlbiI6Imluc3RhbnQtb3BlbiI6ImNsb3NlZCIpLHtzdGFydDpELHN0b3A6aH09WigoKT0+e3MudmFsdWU9ITAsby52YWx1ZT0hMH0seSx7aW1tZWRpYXRlOiExfSk7ZnVuY3Rpb24gYygpe2goKSxzLnZhbHVlPSExLG8udmFsdWU9ITB9ZnVuY3Rpb24gaygpe2goKSxvLnZhbHVlPSExfWZ1bmN0aW9uIFcoKXtEKCl9cmV0dXJuIHdlKHtjb250ZW50SWQ6IiIsb3BlbjpvLHN0YXRlQXR0cmlidXRlOkMsdHJpZ2dlcjpsLG9uVHJpZ2dlckNoYW5nZShCKXtsLnZhbHVlPUJ9LG9uVHJpZ2dlckVudGVyKCl7YS5pc09wZW5EZWxheWVkLnZhbHVlP1coKTpjKCl9LG9uVHJpZ2dlckxlYXZlKCl7Zy52YWx1ZT9rKCk6aCgpfSxvbk9wZW46YyxvbkNsb3NlOmssZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6ZyxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6bixkaXNhYmxlZDpmLGlnbm9yZU5vbktleWJvYXJkRm9jdXM6bX0pLChCLEllKT0+KHUoKSx2KHQoUSksbnVsbCx7ZGVmYXVsdDppKCgpPT5bcShCLiRzbG90cywiZGVmYXVsdCIse29wZW46dChvKX0pXSksXzozfSkpfX0pLGtlPVBlLEJlPVQoe19fbmFtZToiVG9vbHRpcENvbnRlbnRJbXBsIixwcm9wczp7YXJpYUxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiXSxzZXR1cChyLHtlbWl0OmR9KXtjb25zdCBlPXIscD1kLGE9UygpLGc9TygpLHtmb3J3YXJkUmVmOm4sY3VycmVudEVsZW1lbnQ6Zn09UCgpLHk9YigoKT0+ZS5hcmlhTGFiZWx8fGYudmFsdWU/LnRleHRDb250ZW50KSxtPWIoKCk9Pntjb25zdHthcmlhTGFiZWw6bywuLi5zfT1lO3JldHVybiBFKHMsZy5jb250ZW50LnZhbHVlPz97fSx7c2lkZToidG9wIixzaWRlT2Zmc2V0OjAsYWxpZ246ImNlbnRlciIsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OltdLGNvbGxpc2lvblBhZGRpbmc6MCxhcnJvd1BhZGRpbmc6MCxzdGlja3k6InBhcnRpYWwiLGhpZGVXaGVuRGV0YWNoZWQ6ITF9KX0pO3JldHVybiBBKCgpPT57JCh3aW5kb3csInNjcm9sbCIsbz0+e28udGFyZ2V0Py5jb250YWlucyhhLnRyaWdnZXIudmFsdWUpJiZhLm9uQ2xvc2UoKX0se2NhcHR1cmU6ITB9KSwkKHdpbmRvdyx6LGEub25DbG9zZSl9KSwobyxzKT0+KHUoKSx2KHQocmUpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uRXNjYXBlS2V5RG93bjpzWzBdfHwoc1swXT1sPT5wKCJlc2NhcGVLZXlEb3duIixsKSksb25Qb2ludGVyRG93bk91dHNpZGU6c1sxXXx8KHNbMV09bD0+e3QoYSkuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlJiZ0KGEpLnRyaWdnZXIudmFsdWU/LmNvbnRhaW5zKGwudGFyZ2V0KSYmbC5wcmV2ZW50RGVmYXVsdCgpLHAoInBvaW50ZXJEb3duT3V0c2lkZSIsbCl9KSxvbkZvY3VzT3V0c2lkZTpzWzJdfHwoc1syXT1hZSgoKT0+e30sWyJwcmV2ZW50Il0pKSxvbkRpc21pc3M6c1szXXx8KHNbM109bD0+dChhKS5vbkNsb3NlKCkpfSx7ZGVmYXVsdDppKCgpPT5bdyh0KFkpLF8oe3JlZjp0KG4pLCJkYXRhLXN0YXRlIjp0KGEpLnN0YXRlQXR0cmlidXRlLnZhbHVlfSx7Li4uby4kYXR0cnMsLi4ubS52YWx1ZX0se3N0eWxlOnsiLS1yZWthLXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS10b29sdGlwLXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6aSgoKT0+W3Eoby4kc2xvdHMsImRlZmF1bHQiKSx3KHQoZWUpLHtpZDp0KGEpLmNvbnRlbnRJZCxyb2xlOiJ0b29sdGlwIn0se2RlZmF1bHQ6aSgoKT0+W3RlKE0oeS52YWx1ZSksMSldKSxfOjF9LDgsWyJpZCJdKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIl0pXSksXzozfSkpfX0pLFY9QmUsT2U9VCh7X19uYW1lOiJUb29sdGlwQ29udGVudEhvdmVyYWJsZSIscHJvcHM6e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3QgZT1vZShyKSx7Zm9yd2FyZFJlZjpwLGN1cnJlbnRFbGVtZW50OmF9PVAoKSx7dHJpZ2dlcjpnLG9uQ2xvc2U6bn09UygpLGY9TygpLHtpc1BvaW50ZXJJblRyYW5zaXQ6eSxvblBvaW50ZXJFeGl0Om19PXFlKGcsYSk7cmV0dXJuIGYuaXNQb2ludGVySW5UcmFuc2l0UmVmPXksbSgoKT0+e24oKX0pLChvLHMpPT4odSgpLHYoVixfKHtyZWY6dChwKX0sdChlKSkse2RlZmF1bHQ6aSgoKT0+W3Eoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxEZT1PZSxOZT1UKHtfX25hbWU6IlRvb2x0aXBDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhcmlhTGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSJdLHNldHVwKHIse2VtaXQ6ZH0pe2NvbnN0IGU9cixwPWQsYT1TKCksZz1qKGUscCkse2ZvcndhcmRSZWY6bn09UCgpO3JldHVybihmLHkpPT4odSgpLHYodChsZSkse3ByZXNlbnQ6Zi5mb3JjZU1vdW50fHx0KGEpLm9wZW4udmFsdWV9LHtkZWZhdWx0OmkoKCk9PlsodSgpLHYoc2UodChhKS5kaXNhYmxlSG92ZXJhYmxlQ29udGVudC52YWx1ZT9WOkRlKSxfKHtyZWY6dChuKX0sdChnKSkse2RlZmF1bHQ6aSgoKT0+W3EoZi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLHhlPU5lLFNlPVQoe19fbmFtZToiVG9vbHRpcFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IGQ9cjtyZXR1cm4oZSxwKT0+KHUoKSx2KHQobmUpLEwoSShkKSkse2RlZmF1bHQ6aSgoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxSZT1TZSxGZT1UKHtfX25hbWU6IlRvb2x0aXBUcmlnZ2VyIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAocil7Y29uc3QgZD1yLGU9UygpLHA9TygpO2UuY29udGVudElkfHw9aWUodm9pZCAwLCJyZWthLXRvb2x0aXAtY29udGVudCIpO2NvbnN0e2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpnfT1QKCksbj14KCExKSxmPXgoITEpLHk9YigoKT0+ZS5kaXNhYmxlZC52YWx1ZT97fTp7Y2xpY2s6aCxmb2N1czpDLHBvaW50ZXJtb3ZlOnMscG9pbnRlcmxlYXZlOmwscG9pbnRlcmRvd246byxibHVyOkR9KTtBKCgpPT57ZS5vblRyaWdnZXJDaGFuZ2UoZy52YWx1ZSl9KTtmdW5jdGlvbiBtKCl7c2V0VGltZW91dCgoKT0+e24udmFsdWU9ITF9LDEpfWZ1bmN0aW9uIG8oKXtlLm9wZW4mJiFlLmRpc2FibGVDbG9zaW5nVHJpZ2dlci52YWx1ZSYmZS5vbkNsb3NlKCksbi52YWx1ZT0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLG0se29uY2U6ITB9KX1mdW5jdGlvbiBzKGMpe2MucG9pbnRlclR5cGUhPT0idG91Y2giJiYhZi52YWx1ZSYmIXAuaXNQb2ludGVySW5UcmFuc2l0UmVmLnZhbHVlJiYoZS5vblRyaWdnZXJFbnRlcigpLGYudmFsdWU9ITApfWZ1bmN0aW9uIGwoKXtlLm9uVHJpZ2dlckxlYXZlKCksZi52YWx1ZT0hMX1mdW5jdGlvbiBDKGMpe24udmFsdWV8fGUuaWdub3JlTm9uS2V5Ym9hcmRGb2N1cy52YWx1ZSYmIWMudGFyZ2V0Lm1hdGNoZXM/LigiOmZvY3VzLXZpc2libGUiKXx8ZS5vbk9wZW4oKX1mdW5jdGlvbiBEKCl7ZS5vbkNsb3NlKCl9ZnVuY3Rpb24gaCgpe2UuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlfHxlLm9uQ2xvc2UoKX1yZXR1cm4oYyxrKT0+KHUoKSx2KHQocGUpLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTpjLnJlZmVyZW5jZX0se2RlZmF1bHQ6aSgoKT0+W3codCh1ZSksXyh7cmVmOnQoYSksImFyaWEtZGVzY3JpYmVkYnkiOnQoZSkub3Blbi52YWx1ZT90KGUpLmNvbnRlbnRJZDp2b2lkIDAsImRhdGEtc3RhdGUiOnQoZSkuc3RhdGVBdHRyaWJ1dGUudmFsdWUsYXM6Yy5hcywiYXMtY2hpbGQiOmQuYXNDaGlsZCwiZGF0YS1ncmFjZS1hcmVhLXRyaWdnZXIiOiIifSxkZSh5LnZhbHVlKSkse2RlZmF1bHQ6aSgoKT0+W3EoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcmlhLWRlc2NyaWJlZGJ5IiwiZGF0YS1zdGF0ZSIsImFzIiwiYXMtY2hpbGQiXSldKSxfOjN9LDgsWyJyZWZlcmVuY2UiXSkpfX0pLEVlPUZlO2NvbnN0IExlPXtzbG90czp7Y29udGVudDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgYmctZGVmYXVsdCB0ZXh0LWhpZ2hsaWdodGVkIHNoYWRvdy1zbSByb3VuZGVkLXNtIHJpbmcgcmluZy1kZWZhdWx0IGgtNiBweC0yLjUgcHktMSB0ZXh0LXhzIHNlbGVjdC1ub25lIGRhdGEtW3N0YXRlPWRlbGF5ZWQtb3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIG9yaWdpbi0oLS1yZWthLXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSBwb2ludGVyLWV2ZW50cy1hdXRvIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsdGV4dDoidHJ1bmNhdGUiLGtiZHM6ImhpZGRlbiBsZzppbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTAuNSBub3QtZmlyc3Qtb2YtdHlwZTpiZWZvcmU6Y29udGVudC1bJ8K3J10gbm90LWZpcnN0LW9mLXR5cGU6YmVmb3JlOm1lLTAuNSIsa2Jkc1NpemU6InNtIn19LEtlPXtfX25hbWU6IlVUb29sdGlwIixwcm9wczp7dGV4dDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGtiZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0OmR9KXtjb25zdCBlPXIscD1kLGE9ZmUoKSxnPWNlKCksbj1nZSgidG9vbHRpcCIsZSksZj1PKCkseT1qKHZlKGUsImRlZmF1bHRPcGVuIiwib3BlbiIsImRlbGF5RHVyYXRpb24iLCJkaXNhYmxlSG92ZXJhYmxlQ29udGVudCIsImRpc2FibGVDbG9zaW5nVHJpZ2dlciIsImlnbm9yZU5vbktleWJvYXJkRm9jdXMiKSxwKSxtPXllKFIoKCk9PmUucG9ydGFsKSksbz1SKCgpPT5FKGUuY29udGVudCxmLmNvbnRlbnQudmFsdWUse3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDo4LGNvbGxpc2lvblBhZGRpbmc6OH0pKSxzPVIoKCk9PkUoZS5hcnJvdyx7cm91bmRlZDohMH0pKSxsPWIoKCk9Pksoe2V4dGVuZDpLKExlKSwuLi5nLnVpPy50b29sdGlwfHx7fX0pKHtzaWRlOm8udmFsdWUuc2lkZX0pKTtyZXR1cm4oQyxEKT0+KHUoKSx2KHQoa2UpLF8odCh5KSx7ZGlzYWJsZWQ6IShyLnRleHR8fHIua2Jkcz8ubGVuZ3RofHxhLmNvbnRlbnQpfHxlLmRpc2FibGVkfSkse2RlZmF1bHQ6aSgoe29wZW46aH0pPT5bYS5kZWZhdWx0fHxyLnJlZmVyZW5jZT8odSgpLHYodChFZSksXyh7a2V5OjB9LEMuJGF0dHJzLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTpyLnJlZmVyZW5jZSxjbGFzczplLmNsYXNzfSkse2RlZmF1bHQ6aSgoKT0+W3EoQy4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmh9KV0pLF86Mn0sMTA0MCxbInJlZmVyZW5jZSIsImNsYXNzIl0pKTpOKCIiLCEwKSx3KHQoUmUpLEwoSSh0KG0pKSkse2RlZmF1bHQ6aSgoKT0+W3codChiZSksbnVsbCx7ZGVmYXVsdDppKCgpPT5bdyh0KHhlKSxfKG8udmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpsLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshYS5kZWZhdWx0JiZlLmNsYXNzLHQobik/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDppKCgpPT5bcShDLiRzbG90cywiY29udGVudCIse3VpOmwudmFsdWV9LCgpPT5bci50ZXh0Pyh1KCksRigic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ0ZXh0IixjbGFzczpIKGwudmFsdWUudGV4dCh7Y2xhc3M6dChuKT8udGV4dH0pKX0sTShyLnRleHQpLDMpKTpOKCIiLCEwKSxyLmtiZHM/Lmxlbmd0aD8odSgpLEYoInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90Ijoia2JkcyIsY2xhc3M6SChsLnZhbHVlLmtiZHMoe2NsYXNzOnQobik/LmtiZHN9KSl9LFsodSghMCksRihtZSxudWxsLF9lKHIua2JkcywoYyxrKT0+KHUoKSx2KENlLF8oe2tleTprLHNpemU6dChuKT8ua2Jkc1NpemV8fGwudmFsdWUua2Jkc1NpemUoKX0se3JlZl9mb3I6ITB9LHR5cGVvZiBjPT0ic3RyaW5nIj97dmFsdWU6Y306YyksbnVsbCwxNixbInNpemUiXSkpKSwxMjgpKV0sMikpOk4oIiIsITApXSksci5hcnJvdz8odSgpLHYodChUZSksXyh7a2V5OjB9LHMudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6bC52YWx1ZS5hcnJvdyh7Y2xhc3M6dChuKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6TigiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldKSxfOjN9KV0pLF86M30sMTYpXSksXzozfSwxNixbImRpc2FibGVkIl0pKX19O2V4cG9ydHtLZSBhcyBffTsK", "/_nuxt/CYamzLm5.js": "aW1wb3J0e2MwIGFzIHR0LGNoIGFzIHJ0LGF6IGFzIGFlLHIgYXMgdyxiZiBhcyBvdCxmIGFzIGgsbyBhcyBfLGggYXMgbSx3IGFzIGYsTCBhcyBxLGF2IGFzIFMsYXcgYXMgTyxpIGFzIHQsYmcgYXMgc2UsYm8gYXMgeWUsY2kgYXMga2UsYTQgYXMgaixiWiBhcyBwZSxhdSBhcyB6LGJjIGFzIEllLGJkIGFzIGxlLGE5IGFzIE4sYTcgYXMgVCxiaSBhcyB4ZSxiaCBhcyBSZSxhOCBhcyBDLGM3IGFzIGF0LFIgYXMgbmUsYTUgYXMgWSxiayBhcyBvZSxiIGFzIGssYm0gYXMgdmUsYm4gYXMgZ2UsY2ogYXMgQWUsYmwgYXMgRmUsY2sgYXMgbnQsY2wgYXMgc3QsY20gYXMgbHQsY24gYXMgdXQsY28gYXMgaXQsY3AgYXMgZHQsY3EgYXMgVSxhMyBhcyBwdCxQIGFzIFIsYWEgYXMgTSxhNiBhcyBLLGwgYXMgWixjciBhcyBmdCxjcyBhcyBjdCxjdCBhcyBfZSxjdSBhcyBmZSxhZyBhcyBKLGFYIGFzIHVlLGFEIGFzIFEsYWkgYXMgQSxiaiBhcyBFZSxhYiBhcyBILGEyIGFzICQsYnAgYXMgbWUsY3YgYXMgeXQsY3cgYXMgdnQsY3ggYXMgZ3QsYWMgYXMgX3QsY3kgYXMgcWUsRyBhcyBUZSxjOCBhcyBtdCxiZSBhcyBxdCxaIGFzIGh0LGFxIGFzIGJ0LFMgYXMgd3QsSiBhcyBDdCxLIGFzIEJ0LGQgYXMgUHQsdCBhcyBTdCxNIGFzIE10LE4gYXMgT2V9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7UiBhcyBPdH1mcm9tIi4vRHZkaHlwRGkuanMiO2NvbnN0IER0PVsiSU5QVVQiLCJURVhUQVJFQSJdO2Z1bmN0aW9uIERlKHIsbyxlLGE9e30pe2lmKCFvfHxhLmVuYWJsZUlnbm9yZWRFbGVtZW50JiZEdC5pbmNsdWRlcyhvLm5vZGVOYW1lKSlyZXR1cm4gbnVsbDtjb25zdHthcnJvd0tleU9wdGlvbnM6bD0iYm90aCIsYXR0cmlidXRlTmFtZTpzPSJbZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbV0iLGl0ZW1zQXJyYXk6bj1bXSxsb29wOnU9ITAsZGlyOmQ9Imx0ciIscHJldmVudFNjcm9sbDpwPSEwLGZvY3VzOmk9ITF9PWEsW2MsdixiLGcsUCxJXT1bci5rZXk9PT0iQXJyb3dSaWdodCIsci5rZXk9PT0iQXJyb3dMZWZ0IixyLmtleT09PSJBcnJvd1VwIixyLmtleT09PSJBcnJvd0Rvd24iLHIua2V5PT09IkhvbWUiLHIua2V5PT09IkVuZCJdLEY9Ynx8ZyxFPWN8fHY7aWYoIVAmJiFJJiYoIUYmJiFFfHxsPT09InZlcnRpY2FsIiYmRXx8bD09PSJob3Jpem9udGFsIiYmRikpcmV0dXJuIG51bGw7Y29uc3QgRz1lP0FycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKHMpKTpuO2lmKCFHLmxlbmd0aClyZXR1cm4gbnVsbDtwJiZyLnByZXZlbnREZWZhdWx0KCk7bGV0IHg9bnVsbDtyZXR1cm4gRXx8Rj94PU5lKEcsbyx7Z29Gb3J3YXJkOkY/ZzpkPT09Imx0ciI/Yzp2LGxvb3A6dX0pOlA/eD1HLmF0KDApfHxudWxsOkkmJih4PUcuYXQoLTEpfHxudWxsKSxpJiZ4Py5mb2N1cygpLHh9ZnVuY3Rpb24gTmUocixvLGUsYT1yLmluY2x1ZGVzKG8pP3IubGVuZ3RoOnIubGVuZ3RoKzEpe2lmKC0tYT09PTApcmV0dXJuIG51bGw7Y29uc3QgbD1yLmluZGV4T2Yobyk7bGV0IHM7aWYobD09PS0xP3M9ZS5nb0ZvcndhcmQ/MDpyLmxlbmd0aC0xOnM9ZS5nb0ZvcndhcmQ/bCsxOmwtMSwhZS5sb29wJiYoczwwfHxzPj1yLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3Qgbj0ocytyLmxlbmd0aCklci5sZW5ndGgsdT1yW25dO3JldHVybiB1P3UuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpJiZ1LmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSE9PSJmYWxzZSI/TmUocix1LGUsYSk6dTpudWxsfWZ1bmN0aW9uIGt0KHIsbyl7Y29uc3QgZT10dCghMSwzMDApO3J0KCgpPT57ZS52YWx1ZT0hMX0pO2NvbnN0IGE9dyhudWxsKSxsPW90KCk7ZnVuY3Rpb24gcygpe2EudmFsdWU9bnVsbCxlLnZhbHVlPSExfWZ1bmN0aW9uIG4odSxkKXtpZighZClyZXR1cm47Y29uc3QgcD11LmN1cnJlbnRUYXJnZXQsaT17eDp1LmNsaWVudFgseTp1LmNsaWVudFl9LGM9SXQoaSxwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSx2PXh0KGksYywxKSxiPVJ0KGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGc9RnQoWy4uLnYsLi4uYl0pO2EudmFsdWU9ZyxlLnZhbHVlPSEwfXJldHVybiBhZSh1PT57aWYoci52YWx1ZSYmby52YWx1ZSl7Y29uc3QgZD1pPT5uKGksby52YWx1ZSkscD1pPT5uKGksci52YWx1ZSk7ci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLGQpLG8udmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixwKSx1KCgpPT57ci52YWx1ZT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixkKSxvLnZhbHVlPy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHApfSl9fSksYWUodT0+e2lmKGEudmFsdWUpe2NvbnN0IGQ9cD0+e2lmKCFhLnZhbHVlfHwhKHAudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCkpcmV0dXJuO2NvbnN0IGk9cC50YXJnZXQsYz17eDpwLmNsaWVudFgseTpwLmNsaWVudFl9LHY9ci52YWx1ZT8uY29udGFpbnMoaSl8fG8udmFsdWU/LmNvbnRhaW5zKGkpLGI9IUF0KGMsYS52YWx1ZSksZz0hIWkuY2xvc2VzdCgiW2RhdGEtZ3JhY2UtYXJlYS10cmlnZ2VyXSIpO3Y/cygpOihifHxnKSYmKHMoKSxsLnRyaWdnZXIoKSl9O3IudmFsdWU/Lm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGQpLHUoKCk9PnIudmFsdWU/Lm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGQpKX19KSx7aXNQb2ludGVySW5UcmFuc2l0OmUsb25Qb2ludGVyRXhpdDpsLm9ufX1mdW5jdGlvbiBJdChyLG8pe2NvbnN0IGU9TWF0aC5hYnMoby50b3Atci55KSxhPU1hdGguYWJzKG8uYm90dG9tLXIueSksbD1NYXRoLmFicyhvLnJpZ2h0LXIueCkscz1NYXRoLmFicyhvLmxlZnQtci54KTtzd2l0Y2goTWF0aC5taW4oZSxhLGwscykpe2Nhc2UgczpyZXR1cm4ibGVmdCI7Y2FzZSBsOnJldHVybiJyaWdodCI7Y2FzZSBlOnJldHVybiJ0b3AiO2Nhc2UgYTpyZXR1cm4iYm90dG9tIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24geHQocixvLGU9NSl7Y29uc3QgYT1bXTtzd2l0Y2gobyl7Y2FzZSJ0b3AiOmEucHVzaCh7eDpyLngtZSx5OnIueStlfSx7eDpyLngrZSx5OnIueStlfSk7YnJlYWs7Y2FzZSJib3R0b20iOmEucHVzaCh7eDpyLngtZSx5OnIueS1lfSx7eDpyLngrZSx5OnIueS1lfSk7YnJlYWs7Y2FzZSJsZWZ0IjphLnB1c2goe3g6ci54K2UseTpyLnktZX0se3g6ci54K2UseTpyLnkrZX0pO2JyZWFrO2Nhc2UicmlnaHQiOmEucHVzaCh7eDpyLngtZSx5OnIueS1lfSx7eDpyLngtZSx5OnIueStlfSk7YnJlYWt9cmV0dXJuIGF9ZnVuY3Rpb24gUnQocil7Y29uc3R7dG9wOm8scmlnaHQ6ZSxib3R0b206YSxsZWZ0Omx9PXI7cmV0dXJuW3t4OmwseTpvfSx7eDplLHk6b30se3g6ZSx5OmF9LHt4OmwseTphfV19ZnVuY3Rpb24gQXQocixvKXtjb25zdHt4OmUseTphfT1yO2xldCBsPSExO2ZvcihsZXQgcz0wLG49by5sZW5ndGgtMTtzPG8ubGVuZ3RoO249cysrKXtjb25zdCB1PW9bc10ueCxkPW9bc10ueSxwPW9bbl0ueCxpPW9bbl0ueTtkPmEhPWk+YSYmZTwocC11KSooYS1kKS8oaS1kKSt1JiYobD0hbCl9cmV0dXJuIGx9ZnVuY3Rpb24gRnQocil7Y29uc3Qgbz1yLnNsaWNlKCk7cmV0dXJuIG8uc29ydCgoZSxhKT0+ZS54PGEueD8tMTplLng+YS54PzE6ZS55PGEueT8tMTplLnk+YS55PzE6MCksRXQobyl9ZnVuY3Rpb24gRXQocil7aWYoci5sZW5ndGg8PTEpcmV0dXJuIHIuc2xpY2UoKTtjb25zdCBvPVtdO2ZvcihsZXQgYT0wO2E8ci5sZW5ndGg7YSsrKXtjb25zdCBsPXJbYV07Zm9yKDtvLmxlbmd0aD49Mjspe2NvbnN0IHM9by5hdCgtMSksbj1vW28ubGVuZ3RoLTJdO2lmKChzLngtbi54KSoobC55LW4ueSk+PShzLnktbi55KSoobC54LW4ueCkpby5wb3AoKTtlbHNlIGJyZWFrfW8ucHVzaChsKX1vLnBvcCgpO2NvbnN0IGU9W107Zm9yKGxldCBhPXIubGVuZ3RoLTE7YT49MDthLS0pe2NvbnN0IGw9clthXTtmb3IoO2UubGVuZ3RoPj0yOyl7Y29uc3Qgcz1lLmF0KC0xKSxuPWVbZS5sZW5ndGgtMl07aWYoKHMueC1uLngpKihsLnktbi55KT49KHMueS1uLnkpKihsLngtbi54KSllLnBvcCgpO2Vsc2UgYnJlYWt9ZS5wdXNoKGwpfXJldHVybiBlLnBvcCgpLG8ubGVuZ3RoPT09MSYmZS5sZW5ndGg9PT0xJiZvWzBdLng9PT1lWzBdLngmJm9bMF0ueT09PWVbMF0ueT9vOm8uY29uY2F0KGUpfXZhciBUdD1oKHtfX25hbWU6Ik1lbnVBbmNob3IiLHByb3BzOntyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChzZSksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEtlPVR0LE50PWgoe19fbmFtZToiTWVudUFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4oZSxhKT0+KF8oKSxtKHQoeWUpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxLdD1OdDtmdW5jdGlvbiAkdCgpe2NvbnN0IHI9dyghMSk7cmV0dXJuIGooKCk9PntwZSgia2V5ZG93biIsKCk9PntyLnZhbHVlPSEwfSx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSkscGUoWyJwb2ludGVyZG93biIsInBvaW50ZXJtb3ZlIl0sKCk9PntyLnZhbHVlPSExfSx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9KSxyfWNvbnN0IFZ0PWtlKCR0KSxbViwkZV09VChbIk1lbnVSb290IiwiTWVudVN1YiJdLCJNZW51Q29udGV4dCIpLFtXLEx0XT1UKCJNZW51Um9vdCIpO3ZhciBHdD1oKHtfX25hbWU6Ik1lbnVSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLHttb2RhbDpsLGRpcjpzfT16KGUpLG49SWUocyksdT1OKGUsIm9wZW4iLGEpLGQ9dygpLHA9VnQoKTtyZXR1cm4gJGUoe29wZW46dSxvbk9wZW5DaGFuZ2U6aT0+e3UudmFsdWU9aX0sY29udGVudDpkLG9uQ29udGVudENoYW5nZTppPT57ZC52YWx1ZT1pfX0pLEx0KHtvbkNsb3NlOigpPT57dS52YWx1ZT0hMX0saXNVc2luZ0tleWJvYXJkUmVmOnAsZGlyOm4sbW9kYWw6bH0pLChpLGMpPT4oXygpLG0odChsZSksbnVsbCx7ZGVmYXVsdDpmKCgpPT5bcShpLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpfX0pLFV0PUd0O2NvbnN0W2VlLEh0XT1UKCJNZW51Q29udGVudCIpO3ZhciBqdD1oKHtfX25hbWU6Ik1lbnVDb250ZW50SW1wbCIscHJvcHM6bnQoe2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlU2Nyb2xsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYXBGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sey4uLnN0fSksZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyIsImRpc21pc3MiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9VigpLHM9VygpLHt0cmFwRm9jdXM6bixkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6dSxsb29wOmR9PXooZSk7eGUoKSxSZSh1LnZhbHVlKTtjb25zdCBwPXcoIiIpLGk9dygwKSxjPXcoMCksdj13KG51bGwpLGI9dygicmlnaHQiKSxnPXcoMCksUD13KG51bGwpLEk9dygpLHtmb3J3YXJkUmVmOkYsY3VycmVudEVsZW1lbnQ6RX09QygpLHtoYW5kbGVUeXBlYWhlYWRTZWFyY2g6R309YXQoKSx4PXcoKTtmdW5jdGlvbiBCZSh5KXtjb25zdCBCPURlKHkseC52YWx1ZXx8b2UoKSxFLnZhbHVlLHtsb29wOmQudmFsdWUsYXJyb3dLZXlPcHRpb25zOiJ2ZXJ0aWNhbCIsZGlyOnM/LmRpci52YWx1ZSxmb2N1czohMSxhdHRyaWJ1dGVOYW1lOiJbZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbV06bm90KFtkYXRhLWRpc2FibGVkXSkifSk7QiYmKHgudmFsdWU9QixCLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCJ9KSl9ZnVuY3Rpb24gamUoKXt4LnZhbHVlJiZ4LnZhbHVlLmNsaWNrKCl9Y29uc3QgdGU9dygpLFg9dygpO25lKHgseT0+e1gudmFsdWUmJih5PT09dm9pZCAwfHx5IT09WC52YWx1ZS50cmlnZ2VyLnZhbHVlKSYmKFgudmFsdWUub25PcGVuQ2hhbmdlKCExKSxYLnZhbHVlPXZvaWQgMCl9KSxuZShFLHk9PntsLm9uQ29udGVudENoYW5nZSh5KX0pLFkoKCk9Pnt3aW5kb3cuY2xlYXJUaW1lb3V0KGkudmFsdWUpfSk7ZnVuY3Rpb24gaWUoeSl7cmV0dXJuIGIudmFsdWU9PT12LnZhbHVlPy5zaWRlJiZsdCh5LHYudmFsdWU/LmFyZWEpfWFzeW5jIGZ1bmN0aW9uIHplKHkpe2EoIm9wZW5BdXRvRm9jdXMiLHkpLCF5LmRlZmF1bHRQcmV2ZW50ZWQmJih5LnByZXZlbnREZWZhdWx0KCksRS52YWx1ZT8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSl9ZnVuY3Rpb24gV2UoeSl7aWYoeS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCBCPXkudGFyZ2V0LEQ9Qi5jbG9zZXN0KCJbZGF0YS1yZWthLW1lbnUtY29udGVudF0iKT09PXkuY3VycmVudFRhcmdldCxkZT1bImlucHV0IiwidGV4dGFyZWEiXS5pbmNsdWRlcyhCLnRhZ05hbWUudG9Mb3dlckNhc2UoKSksSmU9eS5jdHJsS2V5fHx5LmFsdEtleXx8eS5tZXRhS2V5LFFlPXkua2V5Lmxlbmd0aD09PTEsUGU9RGUoeSxvZSgpLEUudmFsdWUse2xvb3A6ZC52YWx1ZSxhcnJvd0tleU9wdGlvbnM6InZlcnRpY2FsIixkaXI6cz8uZGlyLnZhbHVlLGZvY3VzOiEwLGF0dHJpYnV0ZU5hbWU6IltkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXTpub3QoW2RhdGEtZGlzYWJsZWRdKSJ9KTtpZihQZSlyZXR1cm4gUGU/LmZvY3VzKCk7aWYoeS5jb2RlPT09IlNwYWNlIilyZXR1cm47Y29uc3QgU2U9SS52YWx1ZT8uZ2V0SXRlbXMoKT8/W107aWYoRCYmKHkua2V5PT09IlRhYiImJnkucHJldmVudERlZmF1bHQoKSwhSmUmJlFlJiYhZGUmJkcoeS5rZXksU2UpKSx5LnRhcmdldCE9PUUudmFsdWV8fCF1dC5pbmNsdWRlcyh5LmtleSkpcmV0dXJuO3kucHJldmVudERlZmF1bHQoKTtjb25zdCBNZT1bLi4uU2UubWFwKGV0PT5ldC5yZWYpXTtpdC5pbmNsdWRlcyh5LmtleSkmJk1lLnJldmVyc2UoKSxkdChNZSl9ZnVuY3Rpb24gWGUoeSl7eT8uY3VycmVudFRhcmdldD8uY29udGFpbnM/Lih5LnRhcmdldCl8fCh3aW5kb3cuY2xlYXJUaW1lb3V0KGkudmFsdWUpLHAudmFsdWU9IiIpfWZ1bmN0aW9uIFllKHkpe2lmKCFVKHkpKXJldHVybjtjb25zdCBCPXkudGFyZ2V0LEQ9Zy52YWx1ZSE9PXkuY2xpZW50WDtpZih5Py5jdXJyZW50VGFyZ2V0Py5jb250YWlucyhCKSYmRCl7Y29uc3QgZGU9eS5jbGllbnRYPmcudmFsdWU/InJpZ2h0IjoibGVmdCI7Yi52YWx1ZT1kZSxnLnZhbHVlPXkuY2xpZW50WH19ZnVuY3Rpb24gWmUoeSl7VSh5KSYmdGUudmFsdWUmJnRlLnZhbHVlLmZvY3VzKCl9cmV0dXJuIEh0KHtvbkl0ZW1FbnRlcjp5PT4hIWllKHkpLG9uSXRlbUxlYXZlOnk9PntpZihpZSh5KSlyZXR1cm47WyJJTlBVVCIsIlRFWFRBUkVBIl0uaW5jbHVkZXMob2UoKT8udGFnTmFtZXx8IiIpfHxFLnZhbHVlPy5mb2N1cygpLFAudmFsdWU9bnVsbH0sb25UcmlnZ2VyTGVhdmU6eT0+ISFpZSh5KSxzZWFyY2hSZWY6cCxoaWdobGlnaHRlZEVsZW1lbnQ6eCxvbktleWRvd25OYXZpZ2F0aW9uOkJlLG9uS2V5ZG93bkVudGVyOmplLGZpbHRlckVsZW1lbnQ6dGUsb25GaWx0ZXJFbGVtZW50Q2hhbmdlOnk9Pnt0ZS52YWx1ZT15fSxhY3RpdmVTdWJtZW51Q29udGV4dDpYLHBvaW50ZXJHcmFjZVRpbWVyUmVmOmMsb25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2U6eT0+e3YudmFsdWU9eX19KSwoeSxCKT0+KF8oKSxtKHQoRmUpLHsiYXMtY2hpbGQiOiIiLHRyYXBwZWQ6dChuKSxvbk1vdW50QXV0b0ZvY3VzOnplLG9uVW5tb3VudEF1dG9Gb2N1czpCWzddfHwoQls3XT1EPT5hKCJjbG9zZUF1dG9Gb2N1cyIsRCkpfSx7ZGVmYXVsdDpmKCgpPT5bayh0KHZlKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0KHUpLG9uRXNjYXBlS2V5RG93bjpCWzJdfHwoQlsyXT1EPT5hKCJlc2NhcGVLZXlEb3duIixEKSksb25Qb2ludGVyRG93bk91dHNpZGU6QlszXXx8KEJbM109RD0+YSgicG9pbnRlckRvd25PdXRzaWRlIixEKSksb25Gb2N1c091dHNpZGU6Qls0XXx8KEJbNF09RD0+YSgiZm9jdXNPdXRzaWRlIixEKSksb25JbnRlcmFjdE91dHNpZGU6Qls1XXx8KEJbNV09RD0+YSgiaW50ZXJhY3RPdXRzaWRlIixEKSksb25EaXNtaXNzOkJbNl18fChCWzZdPUQ9PmEoImRpc21pc3MiKSl9LHtkZWZhdWx0OmYoKCk9PltrKHQoT3QpLHtyZWZfa2V5OiJyb3ZpbmdGb2N1c0dyb3VwUmVmIixyZWY6SSwiY3VycmVudC10YWItc3RvcC1pZCI6UC52YWx1ZSwib25VcGRhdGU6Y3VycmVudFRhYlN0b3BJZCI6QlswXXx8KEJbMF09RD0+UC52YWx1ZT1EKSwiYXMtY2hpbGQiOiIiLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsZGlyOnQocykuZGlyLnZhbHVlLGxvb3A6dChkKSxvbkVudHJ5Rm9jdXM6QlsxXXx8KEJbMV09RD0+e2EoImVudHJ5Rm9jdXMiLEQpLHQocykuaXNVc2luZ0tleWJvYXJkUmVmLnZhbHVlfHxELnByZXZlbnREZWZhdWx0KCl9KX0se2RlZmF1bHQ6ZigoKT0+W2sodChnZSkse3JlZjp0KEYpLHJvbGU6Im1lbnUiLGFzOnkuYXMsImFzLWNoaWxkIjp5LmFzQ2hpbGQsImFyaWEtb3JpZW50YXRpb24iOiJ2ZXJ0aWNhbCIsImRhdGEtcmVrYS1tZW51LWNvbnRlbnQiOiIiLCJkYXRhLXN0YXRlIjp0KEFlKSh0KGwpLm9wZW4udmFsdWUpLGRpcjp0KHMpLmRpci52YWx1ZSxzaWRlOnkuc2lkZSwic2lkZS1vZmZzZXQiOnkuc2lkZU9mZnNldCxhbGlnbjp5LmFsaWduLCJhbGlnbi1vZmZzZXQiOnkuYWxpZ25PZmZzZXQsImF2b2lkLWNvbGxpc2lvbnMiOnkuYXZvaWRDb2xsaXNpb25zLCJjb2xsaXNpb24tYm91bmRhcnkiOnkuY29sbGlzaW9uQm91bmRhcnksImNvbGxpc2lvbi1wYWRkaW5nIjp5LmNvbGxpc2lvblBhZGRpbmcsImFycm93LXBhZGRpbmciOnkuYXJyb3dQYWRkaW5nLCJwcmlvcml0aXplLXBvc2l0aW9uIjp5LnByaW9yaXRpemVQb3NpdGlvbiwicG9zaXRpb24tc3RyYXRlZ3kiOnkucG9zaXRpb25TdHJhdGVneSwidXBkYXRlLXBvc2l0aW9uLXN0cmF0ZWd5Ijp5LnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3ksc3RpY2t5Onkuc3RpY2t5LCJoaWRlLXdoZW4tZGV0YWNoZWQiOnkuaGlkZVdoZW5EZXRhY2hlZCxyZWZlcmVuY2U6eS5yZWZlcmVuY2Usb25LZXlkb3duOldlLG9uQmx1cjpYZSxvblBvaW50ZXJtb3ZlOlllLG9uUG9pbnRlcmVudGVyOlplfSx7ZGVmYXVsdDpmKCgpPT5bcSh5LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkaXIiLCJzaWRlIiwic2lkZS1vZmZzZXQiLCJhbGlnbiIsImFsaWduLW9mZnNldCIsImF2b2lkLWNvbGxpc2lvbnMiLCJjb2xsaXNpb24tYm91bmRhcnkiLCJjb2xsaXNpb24tcGFkZGluZyIsImFycm93LXBhZGRpbmciLCJwcmlvcml0aXplLXBvc2l0aW9uIiwicG9zaXRpb24tc3RyYXRlZ3kiLCJ1cGRhdGUtcG9zaXRpb24tc3RyYXRlZ3kiLCJzdGlja3kiLCJoaWRlLXdoZW4tZGV0YWNoZWQiLCJyZWZlcmVuY2UiXSldKSxfOjN9LDgsWyJjdXJyZW50LXRhYi1zdG9wLWlkIiwiZGlyIiwibG9vcCJdKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLGhlPWp0LHp0PWgoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik1lbnVJdGVtSW1wbCIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cixlPWVlKCkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpsfT1DKCkse0NvbGxlY3Rpb25JdGVtOnN9PXB0KCksbj13KCExKSx1PVooKCk9Pm4udmFsdWV8fGUuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPT09bC52YWx1ZSk7YXN5bmMgZnVuY3Rpb24gZChpKXtpZighKGkuZGVmYXVsdFByZXZlbnRlZHx8IVUoaSkpKXtpZihvLmRpc2FibGVkKWUub25JdGVtTGVhdmUoaSk7ZWxzZSBpZighZS5vbkl0ZW1FbnRlcihpKSl7Y29uc3Qgdj1pLmN1cnJlbnRUYXJnZXQ7ZS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU9dixbIklOUFVUIiwiVEVYVEFSRUEiXS5pbmNsdWRlcyhvZSgpPy50YWdOYW1lfHwiIil8fHYuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX19fWFzeW5jIGZ1bmN0aW9uIHAoaSl7YXdhaXQgSygpLCFpLmRlZmF1bHRQcmV2ZW50ZWQmJlUoaSkmJmUub25JdGVtTGVhdmUoaSl9cmV0dXJuKGksYyk9PihfKCksbSh0KHMpLHt2YWx1ZTp7dGV4dFZhbHVlOmkudGV4dFZhbHVlfX0se2RlZmF1bHQ6ZigoKT0+W2sodChSKSxNKHtyZWY6dChhKSxyb2xlOiJtZW51aXRlbSIsdGFiaW5kZXg6Ii0xIn0saS4kYXR0cnMse2FzOmkuYXMsImFzLWNoaWxkIjppLmFzQ2hpbGQsImFyaWEtZGlzYWJsZWQiOmkuZGlzYWJsZWR8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6aS5kaXNhYmxlZD8iIjp2b2lkIDAsImRhdGEtaGlnaGxpZ2h0ZWQiOnUudmFsdWU/IiI6dm9pZCAwLG9uUG9pbnRlcm1vdmU6ZCxvblBvaW50ZXJsZWF2ZTpwLG9uRm9jdXM6Y1swXXx8KGNbMF09YXN5bmMgdj0+e2F3YWl0IEsoKSwhKHYuZGVmYXVsdFByZXZlbnRlZHx8aS5kaXNhYmxlZCkmJihuLnZhbHVlPSEwLHQoZSkuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPXYuY3VycmVudFRhcmdldCl9KSxvbkJsdXI6Y1sxXXx8KGNbMV09YXN5bmMgdj0+e2F3YWl0IEsoKSwhdi5kZWZhdWx0UHJldmVudGVkJiYobi52YWx1ZT0hMSl9KX0pLHtkZWZhdWx0OmYoKCk9PltxKGkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCIsImFyaWEtZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1oaWdobGlnaHRlZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxWZT16dCxXdD1oKHtfX25hbWU6Ik1lbnVJdGVtIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLHtmb3J3YXJkUmVmOmwsY3VycmVudEVsZW1lbnQ6c309QygpLG49VygpLHU9ZWUoKSxkPXcoITEpO2FzeW5jIGZ1bmN0aW9uIHAoKXtjb25zdCBpPXMudmFsdWU7aWYoIWUuZGlzYWJsZWQmJmkpe2NvbnN0IGM9bmV3IEN1c3RvbUV2ZW50KGN0LHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTthKCJzZWxlY3QiLGMpLGF3YWl0IEsoKSxjLmRlZmF1bHRQcmV2ZW50ZWQ/ZC52YWx1ZT0hMTpuLm9uQ2xvc2UoKX19cmV0dXJuKGksYyk9PihfKCksbShWZSxNKGUse3JlZjp0KGwpLG9uQ2xpY2s6cCxvblBvaW50ZXJkb3duOmNbMF18fChjWzBdPSgpPT57ZC52YWx1ZT0hMH0pLG9uUG9pbnRlcnVwOmNbMV18fChjWzFdPWFzeW5jIHY9Pnthd2FpdCBLKCksIXYuZGVmYXVsdFByZXZlbnRlZCYmKGQudmFsdWV8fHYuY3VycmVudFRhcmdldD8uY2xpY2soKSl9KSxvbktleWRvd246Y1syXXx8KGNbMl09YXN5bmMgdj0+e2NvbnN0IGI9dCh1KS5zZWFyY2hSZWYudmFsdWUhPT0iIjtpLmRpc2FibGVkfHxiJiZ2LmtleT09PSIgInx8dChmdCkuaW5jbHVkZXModi5rZXkpJiYodi5jdXJyZW50VGFyZ2V0Py5jbGljaygpLHYucHJldmVudERlZmF1bHQoKSl9KX0pLHtkZWZhdWx0OmYoKCk9PltxKGkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksYmU9V3Q7Y29uc3RbWHQsTGVdPVQoWyJNZW51Q2hlY2tib3hJdGVtIiwiTWVudVJhZGlvSXRlbSJdLCJNZW51SXRlbUluZGljYXRvckNvbnRleHQiKTt2YXIgWXQ9aCh7X19uYW1lOiJNZW51SXRlbUluZGljYXRvciIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAocil7Y29uc3Qgbz1YdCh7bW9kZWxWYWx1ZTp3KCExKX0pO3JldHVybihlLGEpPT4oXygpLG0odChKKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHQoZmUpKHQobykubW9kZWxWYWx1ZS52YWx1ZSl8fHQobykubW9kZWxWYWx1ZS52YWx1ZT09PSEwfSx7ZGVmYXVsdDpmKCgpPT5bayh0KFIpLHthczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJkYXRhLXN0YXRlIjp0KF9lKSh0KG8pLm1vZGVsVmFsdWUudmFsdWUpfSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxadD1ZdCxKdD1oKHtfX25hbWU6Ik1lbnVDaGVja2JveEl0ZW0iLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiLCJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD11ZShlLFsibW9kZWxWYWx1ZSJdKSxzPVEobCksbj1OKGUsIm1vZGVsVmFsdWUiLGEpO3JldHVybiBMZSh7bW9kZWxWYWx1ZTpufSksKHUsZCk9PihfKCksbShiZSxNKHtyb2xlOiJtZW51aXRlbWNoZWNrYm94In0sdChzKSx7ImFyaWEtY2hlY2tlZCI6dChmZSkodChuKSk/Im1peGVkIjp0KG4pLCJkYXRhLXN0YXRlIjp0KF9lKSh0KG4pKSxvblNlbGVjdDpkWzBdfHwoZFswXT1hc3luYyBwPT57YSgic2VsZWN0IixwKSx0KGZlKSh0KG4pKT9uLnZhbHVlPSEwOm4udmFsdWU9IXQobil9KX0pLHtkZWZhdWx0OmYoKCk9PltxKHUuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTp0KG4pfSldKSxfOjN9LDE2LFsiYXJpYS1jaGVja2VkIiwiZGF0YS1zdGF0ZSJdKSl9fSksUXQ9SnQsZXI9aCh7X19uYW1lOiJNZW51Um9vdENvbnRlbnRNb2RhbCIscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImVudHJ5Rm9jdXMiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9QShlLGEpLHM9VigpLHtmb3J3YXJkUmVmOm4sY3VycmVudEVsZW1lbnQ6dX09QygpO3JldHVybiBFZSh1KSwoZCxwKT0+KF8oKSxtKGhlLE0odChsKSx7cmVmOnQobiksInRyYXAtZm9jdXMiOnQocykub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0KHMpLm9wZW4udmFsdWUsImRpc2FibGUtb3V0c2lkZS1zY3JvbGwiOiEwLG9uRGlzbWlzczpwWzBdfHwocFswXT1pPT50KHMpLm9uT3BlbkNoYW5nZSghMSkpLG9uRm9jdXNPdXRzaWRlOnBbMV18fChwWzFdPUgoaT0+YSgiZm9jdXNPdXRzaWRlIixpKSxbInByZXZlbnQiXSkpfSkse2RlZmF1bHQ6ZigoKT0+W3EoZC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIl0pKX19KSx0cj1lcixycj1oKHtfX25hbWU6Ik1lbnVSb290Q29udGVudE5vbk1vZGFsIixwcm9wczp7bG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGw9QShyLG8pLHM9VigpO3JldHVybihuLHUpPT4oXygpLG0oaGUsTSh0KGwpLHsidHJhcC1mb2N1cyI6ITEsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6ITEsImRpc2FibGUtb3V0c2lkZS1zY3JvbGwiOiExLG9uRGlzbWlzczp1WzBdfHwodVswXT1kPT50KHMpLm9uT3BlbkNoYW5nZSghMSkpfSkse2RlZmF1bHQ6ZigoKT0+W3Eobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxvcj1ycixhcj1oKHtfX25hbWU6Ik1lbnVDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJlbnRyeUZvY3VzIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgbD1BKHIsbykscz1WKCksbj1XKCk7cmV0dXJuKHUsZCk9PihfKCksbSh0KEopLHtwcmVzZW50OnUuZm9yY2VNb3VudHx8dChzKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpmKCgpPT5bdChuKS5tb2RhbC52YWx1ZT8oXygpLG0odHIsUyhNKHtrZXk6MH0sey4uLnUuJGF0dHJzLC4uLnQobCl9KSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooXygpLG0ob3IsUyhNKHtrZXk6MX0sey4uLnUuJGF0dHJzLC4uLnQobCl9KSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLG5yPWFyO2NvbnN0W3NyLGxyXT1UKCJNZW51R3JvdXAiKTt2YXIgdXI9aCh7X19uYW1lOiJNZW51R3JvdXAiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXIsZT0kKHZvaWQgMCwicmVrYS1tZW51LWdyb3VwIik7cmV0dXJuIGxyKHtpZDplfSksKGEsbCk9PihfKCksbSh0KFIpLE0oe3JvbGU6Imdyb3VwIn0sbyx7ImFyaWEtbGFiZWxsZWRieSI6dChlKX0pLHtkZWZhdWx0OmYoKCk9PltxKGEuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxHZT11cixpcj1oKHtfX25hbWU6Ik1lbnVMYWJlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAocil7Y29uc3Qgbz1yLGU9c3Ioe2lkOiIifSk7cmV0dXJuKGEsbCk9PihfKCksbSh0KFIpLE0obyx7aWQ6dChlKS5pZHx8dm9pZCAwfSkse2RlZmF1bHQ6ZigoKT0+W3EoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCJdKSl9fSksZHI9aXIscHI9aCh7X19uYW1lOiJNZW51UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChtZSksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGZyPXByO2NvbnN0W2NyLHlyXT1UKCJNZW51UmFkaW9Hcm91cCIpO3ZhciB2cj1oKHtfX25hbWU6Ik1lbnVSYWRpb0dyb3VwIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6IiJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9dWUoZSxbIm1vZGVsVmFsdWUiXSkscz1RKGwpLG49TihlLCJtb2RlbFZhbHVlIixhKTtyZXR1cm4geXIoe21vZGVsVmFsdWU6bixvblZhbHVlQ2hhbmdlOnU9PntuLnZhbHVlPXV9fSksKHUsZCk9PihfKCksbShHZSxTKE8odChzKSkpLHtkZWZhdWx0OmYoKCk9PltxKHUuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTp0KG4pfSldKSxfOjN9LDE2KSl9fSksZ3I9dnIsX3I9aCh7X19uYW1lOiJNZW51UmFkaW9JdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9dWUoZSxbInZhbHVlIl0pLHM9UShsKSx7dmFsdWU6bn09eihlKSx1PWNyKCksZD1aKCgpPT51Lm1vZGVsVmFsdWUudmFsdWU9PT1uPy52YWx1ZSk7cmV0dXJuIExlKHttb2RlbFZhbHVlOmR9KSwocCxpKT0+KF8oKSxtKGJlLE0oe3JvbGU6Im1lbnVpdGVtcmFkaW8ifSx0KHMpLHsiYXJpYS1jaGVja2VkIjpkLnZhbHVlLCJkYXRhLXN0YXRlIjp0KF9lKShkLnZhbHVlKSxvblNlbGVjdDppWzBdfHwoaVswXT1hc3luYyBjPT57YSgic2VsZWN0IixjKSx0KHUpLm9uVmFsdWVDaGFuZ2UodChuKSl9KX0pLHtkZWZhdWx0OmYoKCk9PltxKHAuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1jaGVja2VkIiwiZGF0YS1zdGF0ZSJdKSl9fSksbXI9X3IscXI9aCh7X19uYW1lOiJNZW51U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChSKSxNKG8se3JvbGU6InNlcGFyYXRvciIsImFyaWEtb3JpZW50YXRpb24iOiJob3Jpem9udGFsIn0pLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksaHI9cXI7Y29uc3Rbd2UsYnJdPVQoIk1lbnVTdWIiKTt2YXIgd3I9aCh7X19uYW1lOiJNZW51U3ViIixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixsPU4oZSwib3BlbiIsbyx7ZGVmYXVsdFZhbHVlOiExLHBhc3NpdmU6ZS5vcGVuPT09dm9pZCAwfSkscz1WKCksbj13KCksdT13KCk7cmV0dXJuIGFlKGQ9PntzPy5vcGVuLnZhbHVlPT09ITEmJihsLnZhbHVlPSExKSxkKCgpPT5sLnZhbHVlPSExKX0pLCRlKHtvcGVuOmwsb25PcGVuQ2hhbmdlOmQ9PntsLnZhbHVlPWR9LGNvbnRlbnQ6dSxvbkNvbnRlbnRDaGFuZ2U6ZD0+e3UudmFsdWU9ZH19KSxicih7dHJpZ2dlcklkOiIiLGNvbnRlbnRJZDoiIix0cmlnZ2VyOm4sb25UcmlnZ2VyQ2hhbmdlOmQ9PntuLnZhbHVlPWR9fSksKGQscCk9PihfKCksbSh0KGxlKSxudWxsLHtkZWZhdWx0OmYoKCk9PltxKGQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9KSl9fSksQ3I9d3IsQnI9aCh7X19uYW1lOiJNZW51U3ViQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGw9QShyLG8pLHM9VigpLG49VygpLHU9d2UoKSxkPWVlKCkse2ZvcndhcmRSZWY6cCxjdXJyZW50RWxlbWVudDppfT1DKCk7cmV0dXJuIHUuY29udGVudElkfHw9JCh2b2lkIDAsInJla2EtbWVudS1zdWItY29udGVudCIpLChjLHYpPT4oXygpLG0odChKKSx7cHJlc2VudDpjLmZvcmNlTW91bnR8fHQocykub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZigoKT0+W2soaGUsTSh0KGwpLHtpZDp0KHUpLmNvbnRlbnRJZCxyZWY6dChwKSwiYXJpYS1sYWJlbGxlZGJ5Ijp0KHUpLnRyaWdnZXJJZCxhbGlnbjoic3RhcnQiLHNpZGU6dChuKS5kaXIudmFsdWU9PT0icnRsIj8ibGVmdCI6InJpZ2h0IiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMSwiZGlzYWJsZS1vdXRzaWRlLXNjcm9sbCI6ITEsInRyYXAtZm9jdXMiOiExLG9uT3BlbkF1dG9Gb2N1czp2WzBdfHwodlswXT1IKGI9Pnt0KG4pLmlzVXNpbmdLZXlib2FyZFJlZi52YWx1ZSYmdChpKT8uZm9jdXMoKX0sWyJwcmV2ZW50Il0pKSxvbkNsb3NlQXV0b0ZvY3VzOnZbMV18fCh2WzFdPUgoKCk9Pnt9LFsicHJldmVudCJdKSksb25Gb2N1c091dHNpZGU6dlsyXXx8KHZbMl09Yj0+e2lmKGIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47Y29uc3QgZz10KGQpLmZpbHRlckVsZW1lbnQudmFsdWU/LmNvbnRhaW5zKGIudGFyZ2V0KTtiLnRhcmdldCE9PXQodSkudHJpZ2dlci52YWx1ZSYmIWcmJnQocykub25PcGVuQ2hhbmdlKCExKX0pLG9uRXNjYXBlS2V5RG93bjp2WzNdfHwodlszXT1iPT57dChuKS5vbkNsb3NlKCksYi5wcmV2ZW50RGVmYXVsdCgpfSksb25LZXlkb3duOnZbNF18fCh2WzRdPWI9Pntjb25zdCBnPWIuY3VycmVudFRhcmdldD8uY29udGFpbnMoYi50YXJnZXQpLFA9dCh5dClbdChuKS5kaXIudmFsdWVdLmluY2x1ZGVzKGIua2V5KTtnJiZQJiYodChzKS5vbk9wZW5DaGFuZ2UoITEpLHQoZCkuZmlsdGVyRWxlbWVudC52YWx1ZT8odChkKS5maWx0ZXJFbGVtZW50LnZhbHVlLmZvY3VzKCksdChkKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU9dCh1KS50cmlnZ2VyLnZhbHVlLHQodSkudHJpZ2dlci52YWx1ZT8uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0In0pKTp0KHUpLnRyaWdnZXIudmFsdWU/LmZvY3VzKCksYi5wcmV2ZW50RGVmYXVsdCgpKX0pfSkse2RlZmF1bHQ6ZigoKT0+W3EoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsInNpZGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxQcj1CcixTcj1oKHtfX25hbWU6Ik1lbnVTdWJUcmlnZ2VyIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yLGU9VigpLGE9VygpLGw9d2UoKSxzPWVlKCk7bmUoZS5vcGVuLGM9PntjP3MuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9e29uT3BlbkNoYW5nZTplLm9uT3BlbkNoYW5nZSx0cmlnZ2VyOmwudHJpZ2dlcn06cy5hY3RpdmVTdWJtZW51Q29udGV4dC52YWx1ZT8udHJpZ2dlci52YWx1ZT09PWwudHJpZ2dlci52YWx1ZSYmKHMuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9dm9pZCAwKX0pO2NvbnN0IG49dyhudWxsKTtsLnRyaWdnZXJJZHx8PSQodm9pZCAwLCJyZWthLW1lbnUtc3ViLXRyaWdnZXIiKTtmdW5jdGlvbiB1KCl7bi52YWx1ZSYmd2luZG93LmNsZWFyVGltZW91dChuLnZhbHVlKSxuLnZhbHVlPW51bGx9WSgoKT0+e3UoKX0pO2Z1bmN0aW9uIGQoYyl7IVUoYyl8fHMub25JdGVtRW50ZXIoYyl8fCFvLmRpc2FibGVkJiYhZS5vcGVuLnZhbHVlJiYhbi52YWx1ZSYmKHMub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCksbi52YWx1ZT13aW5kb3cuc2V0VGltZW91dCgoKT0+e2Uub25PcGVuQ2hhbmdlKCEwKSx1KCl9LDEwMCkpfWFzeW5jIGZ1bmN0aW9uIHAoYyl7aWYoIVUoYykpcmV0dXJuO3UoKTtjb25zdCB2PWUuY29udGVudC52YWx1ZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYodj8ud2lkdGgpe2NvbnN0IGI9ZS5jb250ZW50LnZhbHVlPy5kYXRhc2V0LnNpZGUsZz1iPT09InJpZ2h0IixQPWc/LTU6NSxJPXZbZz8ibGVmdCI6InJpZ2h0Il0sRj12W2c/InJpZ2h0IjoibGVmdCJdO3Mub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2Uoe2FyZWE6W3t4OmMuY2xpZW50WCtQLHk6Yy5jbGllbnRZfSx7eDpJLHk6di50b3B9LHt4OkYseTp2LnRvcH0se3g6Rix5OnYuYm90dG9tfSx7eDpJLHk6di5ib3R0b219XSxzaWRlOmJ9KSx3aW5kb3cuY2xlYXJUaW1lb3V0KHMucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWUpLHMucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWU9d2luZG93LnNldFRpbWVvdXQoKCk9PnMub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCksMzAwKX1lbHNle2lmKHMub25UcmlnZ2VyTGVhdmUoYykpcmV0dXJuO3Mub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCl9fWFzeW5jIGZ1bmN0aW9uIGkoYyl7Y29uc3Qgdj1zLnNlYXJjaFJlZi52YWx1ZSE9PSIiO28uZGlzYWJsZWR8fHYmJmMua2V5PT09IiAifHx2dFthLmRpci52YWx1ZV0uaW5jbHVkZXMoYy5rZXkpJiYoZS5vbk9wZW5DaGFuZ2UoITApLGF3YWl0IEsoKSxlLmNvbnRlbnQudmFsdWU/LmZvY3VzKCksYy5wcmV2ZW50RGVmYXVsdCgpKX1yZXR1cm4oYyx2KT0+KF8oKSxtKEtlLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpmKCgpPT5bayhWZSxNKG8se2lkOnQobCkudHJpZ2dlcklkLHJlZjpiPT57YiYmdChsKT8ub25UcmlnZ2VyQ2hhbmdlKGI/LiRlbCl9LCJhcmlhLWhhc3BvcHVwIjoibWVudSIsImFyaWEtZXhwYW5kZWQiOnQoZSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6dChsKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOnQoQWUpKHQoZSkub3Blbi52YWx1ZSksb25DbGljazp2WzBdfHwodlswXT1hc3luYyBiPT57by5kaXNhYmxlZHx8Yi5kZWZhdWx0UHJldmVudGVkfHwoYi5jdXJyZW50VGFyZ2V0Py5mb2N1cygpLHQoZSkub3Blbi52YWx1ZXx8dChlKS5vbk9wZW5DaGFuZ2UoITApKX0pLG9uUG9pbnRlcm1vdmU6ZCxvblBvaW50ZXJsZWF2ZTpwLG9uS2V5ZG93bjppfSkse2RlZmF1bHQ6ZigoKT0+W3EoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSJdKV0pLF86M30pKX19KSxNcj1Tcjtjb25zdFtMLE9yXT1UKCJQb3BvdmVyUm9vdCIpO3ZhciBEcj1oKHtfX25hbWU6IlBvcG92ZXJSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLHttb2RhbDpsfT16KGUpLHM9TihlLCJvcGVuIixhLHtkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0T3BlbixwYXNzaXZlOmUub3Blbj09PXZvaWQgMH0pLG49dygpLHU9dyghMSk7cmV0dXJuIE9yKHtjb250ZW50SWQ6IiIsdHJpZ2dlcklkOiIiLG1vZGFsOmwsb3BlbjpzLG9uT3BlbkNoYW5nZTpkPT57cy52YWx1ZT1kfSxvbk9wZW5Ub2dnbGU6KCk9PntzLnZhbHVlPSFzLnZhbHVlfSx0cmlnZ2VyRWxlbWVudDpuLGhhc0N1c3RvbUFuY2hvcjp1fSksKGQscCk9PihfKCksbSh0KGxlKSxudWxsLHtkZWZhdWx0OmYoKCk9PltxKGQuJHNsb3RzLCJkZWZhdWx0Iix7b3Blbjp0KHMpLGNsb3NlOigpPT5zLnZhbHVlPSExfSldKSxfOjN9KSl9fSksa3I9RHIsSXI9aCh7X19uYW1lOiJQb3BvdmVyQW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtDKCk7Y29uc3QgZT1MKCk7cmV0dXJuIGd0KCgpPT57ZS5oYXNDdXN0b21BbmNob3IudmFsdWU9ITB9KSxZKCgpPT57ZS5oYXNDdXN0b21BbmNob3IudmFsdWU9ITF9KSwoYSxsKT0+KF8oKSxtKHQoc2UpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx4cj1JcixScj1oKHtfX25hbWU6IlBvcG92ZXJBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4gQygpLChlLGEpPT4oXygpLG0odCh5ZSksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEFyPVJyLEZyPWgoe19fbmFtZToiUG9wb3ZlckNsb3NlIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChyKXtjb25zdCBvPXI7QygpO2NvbnN0IGU9TCgpO3JldHVybihhLGwpPT4oXygpLG0odChSKSx7dHlwZTphLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGFzOmEuYXMsImFzLWNoaWxkIjpvLmFzQ2hpbGQsb25DbGljazpsWzBdfHwobFswXT1zPT50KGUpLm9uT3BlbkNoYW5nZSghMSkpfSx7ZGVmYXVsdDpmKCgpPT5bcShhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidHlwZSIsImFzIiwiYXMtY2hpbGQiXSkpfX0pLEVyPUZyLFRyPWgoe19fbmFtZToiUG9wb3ZlckNvbnRlbnRJbXBsIixwcm9wczp7dHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGE9byxsPVEodWUoZSwidHJhcEZvY3VzIiwiZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzIikpLHtmb3J3YXJkUmVmOnN9PUMoKSxuPUwoKTtyZXR1cm4geGUoKSwodSxkKT0+KF8oKSxtKHQoRmUpLHsiYXMtY2hpbGQiOiIiLGxvb3A6IiIsdHJhcHBlZDp1LnRyYXBGb2N1cyxvbk1vdW50QXV0b0ZvY3VzOmRbNV18fChkWzVdPXA9PmEoIm9wZW5BdXRvRm9jdXMiLHApKSxvblVubW91bnRBdXRvRm9jdXM6ZFs2XXx8KGRbNl09cD0+YSgiY2xvc2VBdXRvRm9jdXMiLHApKX0se2RlZmF1bHQ6ZigoKT0+W2sodCh2ZSkseyJhcy1jaGlsZCI6IiIsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6dS5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsb25Qb2ludGVyRG93bk91dHNpZGU6ZFswXXx8KGRbMF09cD0+YSgicG9pbnRlckRvd25PdXRzaWRlIixwKSksb25JbnRlcmFjdE91dHNpZGU6ZFsxXXx8KGRbMV09cD0+YSgiaW50ZXJhY3RPdXRzaWRlIixwKSksb25Fc2NhcGVLZXlEb3duOmRbMl18fChkWzJdPXA9PmEoImVzY2FwZUtleURvd24iLHApKSxvbkZvY3VzT3V0c2lkZTpkWzNdfHwoZFszXT1wPT5hKCJmb2N1c091dHNpZGUiLHApKSxvbkRpc21pc3M6ZFs0XXx8KGRbNF09cD0+dChuKS5vbk9wZW5DaGFuZ2UoITEpKX0se2RlZmF1bHQ6ZigoKT0+W2sodChnZSksTSh0KGwpLHtpZDp0KG4pLmNvbnRlbnRJZCxyZWY6dChzKSwiZGF0YS1zdGF0ZSI6dChuKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiYXJpYS1sYWJlbGxlZGJ5Ijp0KG4pLnRyaWdnZXJJZCxzdHlsZTp7Ii0tcmVrYS1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbiI6InZhcigtLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pIiwiLS1yZWthLXBvcG92ZXItY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLXBvcG92ZXItY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCkiLCItLXJla2EtcG9wb3Zlci10cmlnZ2VyLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLXdpZHRoKSIsIi0tcmVrYS1wb3BvdmVyLXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifSxyb2xlOiJkaWFsb2cifSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImRhdGEtc3RhdGUiLCJhcmlhLWxhYmVsbGVkYnkiXSldKSxfOjN9LDgsWyJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSldKSxfOjN9LDgsWyJ0cmFwcGVkIl0pKX19KSxVZT1UcixOcj1oKHtfX25hbWU6IlBvcG92ZXJDb250ZW50TW9kYWwiLHByb3BzOntzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD1MKCkscz13KCExKTtSZSghMCk7Y29uc3Qgbj1BKGUsYSkse2ZvcndhcmRSZWY6dSxjdXJyZW50RWxlbWVudDpkfT1DKCk7cmV0dXJuIEVlKGQpLChwLGkpPT4oXygpLG0oVWUsTSh0KG4pLHtyZWY6dCh1KSwidHJhcC1mb2N1cyI6dChsKS5vcGVuLnZhbHVlLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiIiLG9uQ2xvc2VBdXRvRm9jdXM6aVswXXx8KGlbMF09SChjPT57YSgiY2xvc2VBdXRvRm9jdXMiLGMpLHMudmFsdWV8fHQobCkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCl9LFsicHJldmVudCJdKSksb25Qb2ludGVyRG93bk91dHNpZGU6aVsxXXx8KGlbMV09Yz0+e2EoInBvaW50ZXJEb3duT3V0c2lkZSIsYyk7Y29uc3Qgdj1jLmRldGFpbC5vcmlnaW5hbEV2ZW50LGI9di5idXR0b249PT0wJiZ2LmN0cmxLZXk9PT0hMCxnPXYuYnV0dG9uPT09Mnx8YjtzLnZhbHVlPWd9KSxvbkZvY3VzT3V0c2lkZTppWzJdfHwoaVsyXT1IKCgpPT57fSxbInByZXZlbnQiXSkpfSkse2RlZmF1bHQ6ZigoKT0+W3EocC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxLcj1Ociwkcj1oKHtfX25hbWU6IlBvcG92ZXJDb250ZW50Tm9uTW9kYWwiLHByb3BzOntzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD1MKCkscz13KCExKSxuPXcoITEpLHU9QShlLGEpO3JldHVybihkLHApPT4oXygpLG0oVWUsTSh0KHUpLHsidHJhcC1mb2N1cyI6ITEsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6ITEsb25DbG9zZUF1dG9Gb2N1czpwWzBdfHwocFswXT1pPT57YSgiY2xvc2VBdXRvRm9jdXMiLGkpLGkuZGVmYXVsdFByZXZlbnRlZHx8KHMudmFsdWV8fHQobCkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCksaS5wcmV2ZW50RGVmYXVsdCgpKSxzLnZhbHVlPSExLG4udmFsdWU9ITF9KSxvbkludGVyYWN0T3V0c2lkZTpwWzFdfHwocFsxXT1hc3luYyBpPT57YSgiaW50ZXJhY3RPdXRzaWRlIixpKSxpLmRlZmF1bHRQcmV2ZW50ZWR8fChzLnZhbHVlPSEwLGkuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZT09PSJwb2ludGVyZG93biImJihuLnZhbHVlPSEwKSk7Y29uc3QgYz1pLnRhcmdldDt0KGwpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyhjKSYmaS5wcmV2ZW50RGVmYXVsdCgpLGkuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZT09PSJmb2N1c2luIiYmbi52YWx1ZSYmaS5wcmV2ZW50RGVmYXVsdCgpfSl9KSx7ZGVmYXVsdDpmKCgpPT5bcShkLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFZyPSRyLExyPWgoe19fbmFtZToiUG9wb3ZlckNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGE9byxsPUwoKSxzPUEoZSxhKSx7Zm9yd2FyZFJlZjpufT1DKCk7cmV0dXJuIGwuY29udGVudElkfHw9JCh2b2lkIDAsInJla2EtcG9wb3Zlci1jb250ZW50IiksKHUsZCk9PihfKCksbSh0KEopLHtwcmVzZW50OnUuZm9yY2VNb3VudHx8dChsKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpmKCgpPT5bdChsKS5tb2RhbC52YWx1ZT8oXygpLG0oS3IsTSh7a2V5OjB9LHQocykse3JlZjp0KG4pfSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooXygpLG0oVnIsTSh7a2V5OjF9LHQocykse3JlZjp0KG4pfSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEdyPUxyLFVyPWgoe19fbmFtZToiUG9wb3ZlclBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4oZSxhKT0+KF8oKSxtKHQobWUpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxIcj1Vcixqcj1oKHtfX25hbWU6IlBvcG92ZXJUcmlnZ2VyIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChyKXtjb25zdCBvPXIsZT1MKCkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpsfT1DKCk7cmV0dXJuIGUudHJpZ2dlcklkfHw9JCh2b2lkIDAsInJla2EtcG9wb3Zlci10cmlnZ2VyIiksaigoKT0+e2UudHJpZ2dlckVsZW1lbnQudmFsdWU9bC52YWx1ZX0pLChzLG4pPT4oXygpLG0oX3QodChlKS5oYXNDdXN0b21BbmNob3IudmFsdWU/dChSKTp0KHNlKSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmYoKCk9PltrKHQoUikse2lkOnQoZSkudHJpZ2dlcklkLHJlZjp0KGEpLHR5cGU6cy5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXJpYS1oYXNwb3B1cCI6ImRpYWxvZyIsImFyaWEtZXhwYW5kZWQiOnQoZSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6dChlKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOnQoZSkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsYXM6cy5hcywiYXMtY2hpbGQiOm8uYXNDaGlsZCxvbkNsaWNrOnQoZSkub25PcGVuVG9nZ2xlfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiaWQiLCJ0eXBlIiwiYXJpYS1leHBhbmRlZCIsImFyaWEtY29udHJvbHMiLCJkYXRhLXN0YXRlIiwiYXMiLCJhcy1jaGlsZCIsIm9uQ2xpY2siXSldKSxfOjN9KSl9fSksenI9anIsV3I9aCh7X19uYW1lOiJEcm9wZG93bk1lbnVBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4gQygpLChlLGEpPT4oXygpLG0odChLdCksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFhyPVdyLFlyPWgoe19fbmFtZToiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGw9cWUobyk7cmV0dXJuIEMoKSwocyxuKT0+KF8oKSxtKHQoUXQpLFMoTyh7Li4uZSwuLi50KGwpfSkpLHtkZWZhdWx0OmYoKCk9PltxKHMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksWnI9WXI7Y29uc3RbSGUsSnJdPVQoIkRyb3Bkb3duTWVudVJvb3QiKTt2YXIgUXI9aCh7X19uYW1lOiJEcm9wZG93bk1lbnVSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGE9bztDKCk7Y29uc3QgbD1OKGUsIm9wZW4iLGEse2RlZmF1bHRWYWx1ZTplLmRlZmF1bHRPcGVuLHBhc3NpdmU6ZS5vcGVuPT09dm9pZCAwfSkscz13KCkse21vZGFsOm4sZGlyOnV9PXooZSksZD1JZSh1KTtyZXR1cm4gSnIoe29wZW46bCxvbk9wZW5DaGFuZ2U6cD0+e2wudmFsdWU9cH0sb25PcGVuVG9nZ2xlOigpPT57bC52YWx1ZT0hbC52YWx1ZX0sdHJpZ2dlcklkOiIiLHRyaWdnZXJFbGVtZW50OnMsY29udGVudElkOiIiLG1vZGFsOm4sZGlyOmR9KSwocCxpKT0+KF8oKSxtKHQoVXQpLHtvcGVuOnQobCksIm9uVXBkYXRlOm9wZW4iOmlbMF18fChpWzBdPWM9PlRlKGwpP2wudmFsdWU9YzpudWxsKSxkaXI6dChkKSxtb2RhbDp0KG4pfSx7ZGVmYXVsdDpmKCgpPT5bcShwLiRzbG90cywiZGVmYXVsdCIse29wZW46dChsKX0pXSksXzozfSw4LFsib3BlbiIsImRpciIsIm1vZGFsIl0pKX19KSxlbz1Rcix0bz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgbD1BKHIsbyk7QygpO2NvbnN0IHM9SGUoKSxuPXcoITEpO2Z1bmN0aW9uIHUoZCl7ZC5kZWZhdWx0UHJldmVudGVkfHwobi52YWx1ZXx8c2V0VGltZW91dCgoKT0+e3MudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCl9LDApLG4udmFsdWU9ITEsZC5wcmV2ZW50RGVmYXVsdCgpKX1yZXR1cm4gcy5jb250ZW50SWR8fD0kKHZvaWQgMCwicmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQiKSwoZCxwKT0+KF8oKSxtKHQobnIpLE0odChsKSx7aWQ6dChzKS5jb250ZW50SWQsImFyaWEtbGFiZWxsZWRieSI6dChzKT8udHJpZ2dlcklkLHN0eWxlOnsiLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9LG9uQ2xvc2VBdXRvRm9jdXM6dSxvbkludGVyYWN0T3V0c2lkZTpwWzBdfHwocFswXT1pPT57aWYoaS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCBjPWkuZGV0YWlsLm9yaWdpbmFsRXZlbnQsdj1jLmJ1dHRvbj09PTAmJmMuY3RybEtleT09PSEwLGI9Yy5idXR0b249PT0yfHx2OyghdChzKS5tb2RhbC52YWx1ZXx8YikmJihuLnZhbHVlPSEwKSx0KHMpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyhpLnRhcmdldCkmJmkucHJldmVudERlZmF1bHQoKX0pfSkse2RlZmF1bHQ6ZigoKT0+W3EoZC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSJdKSl9fSkscm89dG8sb289aCh7X19uYW1lOiJEcm9wZG93bk1lbnVGaWx0ZXIiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbnB1dCJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGw9TihlLCJtb2RlbFZhbHVlIixvLHtkZWZhdWx0VmFsdWU6IiIscGFzc2l2ZTplLm1vZGVsVmFsdWU9PT12b2lkIDB9KSxzPVcoKSxuPWVlKCksdT13ZShudWxsKTtuZShsLGc9PntuLnNlYXJjaFJlZi52YWx1ZT1nPz8iIn0se2ltbWVkaWF0ZTohMH0pO2NvbnN0e3ByaW1pdGl2ZUVsZW1lbnQ6ZCxjdXJyZW50RWxlbWVudDpwfT1xdCgpLGk9WigoKT0+ZS5kaXNhYmxlZHx8ITEpLGM9dygpO210KCgpPT5jLnZhbHVlPW4uaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPy5pZCksaigoKT0+e24ub25GaWx0ZXJFbGVtZW50Q2hhbmdlKHAudmFsdWUpLHNldFRpbWVvdXQoKCk9PntlLmF1dG9Gb2N1cyYmKCF1fHxzLmlzVXNpbmdLZXlib2FyZFJlZi52YWx1ZSkmJnAudmFsdWU/LmZvY3VzKCl9LDEpfSksWSgoKT0+e24ub25GaWx0ZXJFbGVtZW50Q2hhbmdlKHZvaWQgMCksbi5zZWFyY2hSZWYudmFsdWU9IiJ9KTtmdW5jdGlvbiB2KGcpe2lmKGkudmFsdWUpcmV0dXJuO2NvbnN0IFA9Zy50YXJnZXQ7bC52YWx1ZT1QLnZhbHVlLG4uc2VhcmNoUmVmLnZhbHVlPVAudmFsdWV9ZnVuY3Rpb24gYihnKXtpLnZhbHVlfHwoWyJBcnJvd0Rvd24iLCJBcnJvd1VwIiwiSG9tZSIsIkVuZCJdLmluY2x1ZGVzKGcua2V5KT8oZy5wcmV2ZW50RGVmYXVsdCgpLG4ub25LZXlkb3duTmF2aWdhdGlvbihnKSk6Zy5rZXk9PT0iRW50ZXIiPyhnLnByZXZlbnREZWZhdWx0KCksbi5vbktleWRvd25FbnRlcihnKSk6Zy5rZXk9PT0iRXNjYXBlIiYmbC52YWx1ZSYmKGcuc3RvcFByb3BhZ2F0aW9uKCksbC52YWx1ZT0iIixuLnNlYXJjaFJlZi52YWx1ZT0iIikpfXJldHVybihnLFApPT4oXygpLG0odChSKSx7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOmQsYXM6Zy5hcywiYXMtY2hpbGQiOmcuYXNDaGlsZCx2YWx1ZTp0KGwpLGRpc2FibGVkOmkudmFsdWU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjppLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1kaXNhYmxlZCI6aS52YWx1ZT8hMDp2b2lkIDAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6Yy52YWx1ZSx0eXBlOiJ0ZXh0Iixyb2xlOiJzZWFyY2hib3giLG9uSW5wdXQ6dixvbktleWRvd246Yn0se2RlZmF1bHQ6ZigoKT0+W3EoZy4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnQobCl9KV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiXSkpfX0pLGFvPW9vLG5vPWgoe19fbmFtZToiRHJvcGRvd25NZW51R3JvdXAiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuIEMoKSwoZSxhKT0+KF8oKSxtKHQoR2UpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxzbz1ubyxsbz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudUl0ZW0iLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixsPXFlKG8pO3JldHVybiBDKCksKHMsbik9PihfKCksbSh0KGJlKSxTKE8oey4uLmUsLi4udChsKX0pKSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHVvPWxvLGlvPWgoe19fbmFtZToiRHJvcGRvd25NZW51SXRlbUluZGljYXRvciIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybiBDKCksKGUsYSk9PihfKCksbSh0KFp0KSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSkscG89aW8sZm89aCh7X19uYW1lOiJEcm9wZG93bk1lbnVMYWJlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4gQygpLChlLGEpPT4oXygpLG0odChkciksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGNvPWZvLHlvPWgoe19fbmFtZToiRHJvcGRvd25NZW51UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChmciksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHZvPXlvLGdvPWgoe19fbmFtZToiRHJvcGRvd25NZW51UmFkaW9Hcm91cCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixsPXFlKG8pO3JldHVybiBDKCksKHMsbik9PihfKCksbSh0KGdyKSxTKE8oey4uLmUsLi4udChsKX0pKSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLF9vPWdvLG1vPWgoe19fbmFtZToiRHJvcGRvd25NZW51UmFkaW9JdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBsPUEocixvKTtyZXR1cm4gQygpLChzLG4pPT4oXygpLG0odChtciksUyhPKHQobCkpKSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHFvPW1vLGhvPWgoe19fbmFtZToiRHJvcGRvd25NZW51U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybiBDKCksKGUsYSk9PihfKCksbSh0KGhyKSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksYm89aG8sd289aCh7X19uYW1lOiJEcm9wZG93bk1lbnVTdWIiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGw9TihlLCJvcGVuIixvLHtwYXNzaXZlOmUub3Blbj09PXZvaWQgMCxkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0T3Blbj8/ITF9KTtyZXR1cm4gQygpLChzLG4pPT4oXygpLG0odChDcikse29wZW46dChsKSwib25VcGRhdGU6b3BlbiI6blswXXx8KG5bMF09dT0+VGUobCk/bC52YWx1ZT11Om51bGwpfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIse29wZW46dChsKX0pXSksXzozfSw4LFsib3BlbiJdKSl9fSksQ289d28sQm89aCh7X19uYW1lOiJEcm9wZG93bk1lbnVTdWJDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGw9QShyLG8pO3JldHVybiBDKCksKHMsbik9PihfKCksbSh0KFByKSxNKHQobCkse3N0eWxlOnsiLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6ZigoKT0+W3Eocy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxQbz1CbyxTbz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudVN1YlRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuIEMoKSwoZSxhKT0+KF8oKSxtKHQoTXIpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxNbz1TbyxPbz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudVRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHIpe2NvbnN0IG89cixlPUhlKCkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpsfT1DKCk7cmV0dXJuIGooKCk9PntlLnRyaWdnZXJFbGVtZW50PWx9KSxlLnRyaWdnZXJJZHx8PSQodm9pZCAwLCJyZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlciIpLChzLG4pPT4oXygpLG0odChLZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmYoKCk9PltrKHQoUikse2lkOnQoZSkudHJpZ2dlcklkLHJlZjp0KGEpLHR5cGU6cy5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXMtY2hpbGQiOm8uYXNDaGlsZCxhczpzLmFzLCJhcmlhLWhhc3BvcHVwIjoibWVudSIsImFyaWEtZXhwYW5kZWQiOnQoZSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6dChlKS5vcGVuLnZhbHVlP3QoZSkuY29udGVudElkOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6cy5kaXNhYmxlZD8iIjp2b2lkIDAsZGlzYWJsZWQ6cy5kaXNhYmxlZCwiZGF0YS1zdGF0ZSI6dChlKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixvbkNsaWNrOm5bMF18fChuWzBdPWFzeW5jIHU9Pnshcy5kaXNhYmxlZCYmdS5idXR0b249PT0wJiZ1LmN0cmxLZXk9PT0hMSYmKHQoZSk/Lm9uT3BlblRvZ2dsZSgpLGF3YWl0IEsoKSx0KGUpLm9wZW4udmFsdWUmJnUucHJldmVudERlZmF1bHQoKSl9KSxvbktleWRvd246blsxXXx8KG5bMV09aHQodT0+e3MuZGlzYWJsZWR8fChbIkVudGVyIiwiICJdLmluY2x1ZGVzKHUua2V5KSYmdChlKS5vbk9wZW5Ub2dnbGUoKSx1LmtleT09PSJBcnJvd0Rvd24iJiZ0KGUpLm9uT3BlbkNoYW5nZSghMCksWyJFbnRlciIsIiAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyh1LmtleSkmJnUucHJldmVudERlZmF1bHQoKSl9LFsiZW50ZXIiLCJzcGFjZSIsImFycm93LWRvd24iXSkpfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiaWQiLCJ0eXBlIiwiYXMtY2hpbGQiLCJhcyIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1kaXNhYmxlZCIsImRpc2FibGVkIiwiZGF0YS1zdGF0ZSJdKV0pLF86M30pKX19KSxEbz1Pbyxrbz1oKHtfX25hbWU6IkhvdmVyQ2FyZEFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1fSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzdmcifX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybiBDKCksKGUsYSk9PihfKCksbSh0KHllKSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksSW89a287Y29uc3RbQ2UseG9dPVQoIkhvdmVyQ2FyZFJvb3QiKTt2YXIgUm89aCh7X19uYW1lOiJIb3ZlckNhcmRSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LG9wZW5EZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo3MDB9LGNsb3NlRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MzAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8se29wZW5EZWxheTpsLGNsb3NlRGVsYXk6c309eihlKTtDKCk7Y29uc3Qgbj1OKGUsIm9wZW4iLGEse2RlZmF1bHRWYWx1ZTplLmRlZmF1bHRPcGVuLHBhc3NpdmU6ZS5vcGVuPT09dm9pZCAwfSksdT13KDApLGQ9dygwKSxwPXcoITEpLGk9dyghMSksYz13KCExKSx2PXcoKTtmdW5jdGlvbiBiKCl7Y2xlYXJUaW1lb3V0KGQudmFsdWUpLHUudmFsdWU9d2luZG93LnNldFRpbWVvdXQoKCk9Pm4udmFsdWU9ITAsbC52YWx1ZSl9ZnVuY3Rpb24gZygpe2NsZWFyVGltZW91dCh1LnZhbHVlKSwhcC52YWx1ZSYmIWkudmFsdWUmJihkLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT5uLnZhbHVlPSExLHMudmFsdWUpKX1mdW5jdGlvbiBQKCl7bi52YWx1ZT0hMX1yZXR1cm4geG8oe29wZW46bixvbk9wZW5DaGFuZ2UoSSl7bi52YWx1ZT1JfSxvbk9wZW46YixvbkNsb3NlOmcsb25EaXNtaXNzOlAsaGFzU2VsZWN0aW9uUmVmOnAsaXNQb2ludGVyRG93bk9uQ29udGVudFJlZjppLGlzUG9pbnRlckluVHJhbnNpdFJlZjpjLHRyaWdnZXJFbGVtZW50OnZ9KSwoSSxGKT0+KF8oKSxtKHQobGUpLG51bGwse2RlZmF1bHQ6ZigoKT0+W3EoSS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnQobil9KV0pLF86M30pKX19KSxBbz1SbztmdW5jdGlvbiBjZShyKXtyZXR1cm4gbz0+by5wb2ludGVyVHlwZT09PSJ0b3VjaCI/dm9pZCAwOnIoKX1mdW5jdGlvbiBGbyhyKXtjb25zdCBvPVtdLGU9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyLE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULHthY2NlcHROb2RlOmE9PmEudGFiSW5kZXg+PTA/Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOk5vZGVGaWx0ZXIuRklMVEVSX1NLSVB9KTtmb3IoO2UubmV4dE5vZGUoKTspby5wdXNoKGUuY3VycmVudE5vZGUpO3JldHVybiBvfXZhciBFbz1oKHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnRJbXBsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD1RKGUpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6bn09QygpLHU9Q2UoKSx7aXNQb2ludGVySW5UcmFuc2l0OmQsb25Qb2ludGVyRXhpdDpwfT1rdCh1LnRyaWdnZXJFbGVtZW50LG4pO2J0KHUuaXNQb2ludGVySW5UcmFuc2l0UmVmLGQse2RpcmVjdGlvbjoicnRsIn0pLHAoKCk9Pnt1Lm9uQ2xvc2UoKX0pO2NvbnN0IGk9dyghMSk7bGV0IGM7YWUoYj0+e2lmKGkudmFsdWUpe2NvbnN0IGc9ZG9jdW1lbnQuYm9keTtjPWcuc3R5bGUudXNlclNlbGVjdHx8Zy5zdHlsZS53ZWJraXRVc2VyU2VsZWN0LGcuc3R5bGUudXNlclNlbGVjdD0ibm9uZSIsZy5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PSJub25lIixiKCgpPT57Zy5zdHlsZS51c2VyU2VsZWN0PWMsZy5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PWN9KX19KTtmdW5jdGlvbiB2KCl7aS52YWx1ZT0hMSx1LmlzUG9pbnRlckRvd25PbkNvbnRlbnRSZWYudmFsdWU9ITEsSygoKT0+e2RvY3VtZW50LmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpIT09IiImJih1Lmhhc1NlbGVjdGlvblJlZi52YWx1ZT0hMCl9KX1yZXR1cm4gaigoKT0+e24udmFsdWUmJihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHYpLEZvKG4udmFsdWUpLmZvckVhY2goZz0+Zy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSkpLHBlKHdpbmRvdywic2Nyb2xsIixiPT57Yi50YXJnZXQ/LmNvbnRhaW5zKHUudHJpZ2dlckVsZW1lbnQudmFsdWUpJiZ1Lm9uRGlzbWlzcygpfSx7Y2FwdHVyZTohMH0pfSksWSgoKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdiksdS5oYXNTZWxlY3Rpb25SZWYudmFsdWU9ITEsdS5pc1BvaW50ZXJEb3duT25Db250ZW50UmVmLnZhbHVlPSExfSksKGIsZyk9PihfKCksbSh0KHZlKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMSxvbkVzY2FwZUtleURvd246Z1sxXXx8KGdbMV09UD0+YSgiZXNjYXBlS2V5RG93biIsUCkpLG9uUG9pbnRlckRvd25PdXRzaWRlOmdbMl18fChnWzJdPVA9PmEoInBvaW50ZXJEb3duT3V0c2lkZSIsUCkpLG9uRm9jdXNPdXRzaWRlOmdbM118fChnWzNdPUgoUD0+YSgiZm9jdXNPdXRzaWRlIixQKSxbInByZXZlbnQiXSkpLG9uRGlzbWlzczp0KHUpLm9uRGlzbWlzc30se2RlZmF1bHQ6ZigoKT0+W2sodChnZSksTSh7Li4udChsKSwuLi5iLiRhdHRyc30se3JlZjp0KHMpLCJkYXRhLXN0YXRlIjp0KHUpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLHN0eWxlOnt1c2VyU2VsZWN0OmkudmFsdWU/InRleHQiOnZvaWQgMCxXZWJraXRVc2VyU2VsZWN0OmkudmFsdWU/InRleHQiOnZvaWQgMCwiLS1yZWthLWhvdmVyLWNhcmQtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtaG92ZXItY2FyZC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtaG92ZXItY2FyZC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1ob3Zlci1jYXJkLXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWhvdmVyLWNhcmQtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9LG9uUG9pbnRlcmRvd246Z1swXXx8KGdbMF09UD0+e1AuY3VycmVudFRhcmdldC5jb250YWlucyhQLnRhcmdldCkmJihpLnZhbHVlPSEwKSx0KHUpLmhhc1NlbGVjdGlvblJlZi52YWx1ZT0hMSx0KHUpLmlzUG9pbnRlckRvd25PbkNvbnRlbnRSZWYudmFsdWU9ITB9KX0pLHtkZWZhdWx0OmYoKCk9PltxKGIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsInN0eWxlIl0pXSksXzozfSw4LFsib25EaXNtaXNzIl0pKX19KSxUbz1FbyxObz1oKHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBsPUEocixvKSx7Zm9yd2FyZFJlZjpzfT1DKCksbj1DZSgpO3JldHVybih1LGQpPT4oXygpLG0odChKKSx7cHJlc2VudDp1LmZvcmNlTW91bnR8fHQobikub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZigoKT0+W2soVG8sTSh0KGwpLHtyZWY6dChzKSxvblBvaW50ZXJlbnRlcjpkWzBdfHwoZFswXT1wPT50KGNlKSh0KG4pLm9uT3BlbikocCkpfSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksS289Tm8sJG89aCh7X19uYW1lOiJIb3ZlckNhcmRQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuKGUsYSk9PihfKCksbSh0KG1lKSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksVm89JG8sTG89aCh7X19uYW1lOiJIb3ZlckNhcmRUcmlnZ2VyIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJhIn19LHNldHVwKHIpe2NvbnN0e2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDplfT1DKCksYT1DZSgpO2EudHJpZ2dlckVsZW1lbnQ9ZTtmdW5jdGlvbiBsKCl7c2V0VGltZW91dCgoKT0+eyFhLmlzUG9pbnRlckluVHJhbnNpdFJlZi52YWx1ZSYmIWEub3Blbi52YWx1ZSYmYS5vbkNsb3NlKCl9LDApfXJldHVybihzLG4pPT4oXygpLG0odChzZSkseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOnMucmVmZXJlbmNlfSx7ZGVmYXVsdDpmKCgpPT5bayh0KFIpLHtyZWY6dChvKSwiYXMtY2hpbGQiOnMuYXNDaGlsZCxhczpzLmFzLCJkYXRhLXN0YXRlIjp0KGEpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLCJkYXRhLWdyYWNlLWFyZWEtdHJpZ2dlciI6IiIsb25Qb2ludGVyZW50ZXI6blswXXx8KG5bMF09dT0+dChjZSkodChhKS5vbk9wZW4pKHUpKSxvblBvaW50ZXJsZWF2ZTpuWzFdfHwoblsxXT11PT50KGNlKShsKSh1KSksb25Gb2N1czpuWzJdfHwoblsyXT11PT50KGEpLm9uT3BlbigpKSxvbkJsdXI6blszXXx8KG5bM109dT0+dChhKS5vbkNsb3NlKCkpfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyIsImRhdGEtc3RhdGUiXSldKSxfOjN9LDgsWyJyZWZlcmVuY2UiXSkpfX0pLEdvPUxvO2NvbnN0IFhvPXtSb290OmVvLFRyaWdnZXI6RG8sUG9ydGFsOnZvLENvbnRlbnQ6cm8sQXJyb3c6WHIsSXRlbTp1byxHcm91cDpzbyxTZXBhcmF0b3I6Ym8sQ2hlY2tib3hJdGVtOlpyLEl0ZW1JbmRpY2F0b3I6cG8sTGFiZWw6Y28sUmFkaW9Hcm91cDpfbyxSYWRpb0l0ZW06cW8sU3ViOkNvLFN1YkNvbnRlbnQ6UG8sU3ViVHJpZ2dlcjpNbyxGaWx0ZXI6YW99LFlvPXtSb290OkFvLFRyaWdnZXI6R28sUG9ydGFsOlZvLENvbnRlbnQ6S28sQXJyb3c6SW99LFpvPXtSb290OmtyLFRyaWdnZXI6enIsUG9ydGFsOkhyLENvbnRlbnQ6R3IsQXJyb3c6QXIsQ2xvc2U6RXIsQW5jaG9yOnhyfSxyZT17bWV0YToiIixjdHJsOiIiLGFsdDoiIix3aW46IuKKniIsY29tbWFuZDoi4oyYIixzaGlmdDoi4oenIixjb250cm9sOiLijIMiLG9wdGlvbjoi4oylIixlbnRlcjoi4oa1IixkZWxldGU6IuKMpiIsYmFja3NwYWNlOiLijKsiLGVzY2FwZToiRXNjIix0YWI6IuKHpSIsY2Fwc2xvY2s6IuKHqiIsYXJyb3d1cDoi4oaRIixhcnJvd3JpZ2h0OiLihpIiLGFycm93ZG93bjoi4oaTIixhcnJvd2xlZnQ6IuKGkCIscGFnZXVwOiLih54iLHBhZ2Vkb3duOiLih58iLGhvbWU6IuKGliIsZW5kOiLihpgifSxVbz0oKT0+e2NvbnN0IHI9WigoKT0+bmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9NYWNpbnRvc2g7LykpLG89d3Qoe21ldGE6IiAiLGFsdDoiICIsY3RybDoiICJ9KTtqKCgpPT57by5tZXRhPXIudmFsdWU/cmUuY29tbWFuZDoiQ3RybCIsby5jdHJsPXIudmFsdWU/cmUuY29udHJvbDoiQ3RybCIsby5hbHQ9ci52YWx1ZT9yZS5vcHRpb246IkFsdCJ9KTtmdW5jdGlvbiBlKGEpe2lmKGEpcmV0dXJuWyJtZXRhIiwiYWx0IiwiY3RybCJdLmluY2x1ZGVzKGEpP29bYV06cmVbYV18fGF9cmV0dXJue21hY09TOnIsZ2V0S2JkS2V5OmV9fSxIbz1rZShVbyksam89e2Jhc2U6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0xIHJvdW5kZWQtc20gZm9udC1tZWRpdW0gZm9udC1zYW5zIHVwcGVyY2FzZSIsdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIifSxzaXplOntzbToiaC00IG1pbi13LVsxNnB4XSB0ZXh0LVsxMHB4XSIsbWQ6ImgtNSBtaW4tdy1bMjBweF0gdGV4dC1bMTFweF0iLGxnOiJoLTYgbWluLXctWzI0cHhdIHRleHQtWzEycHhdIn19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvNTAgdGV4dC1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAgdGV4dC1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIHRleHQtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vNTAgdGV4dC1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCB0ZXh0LXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvNTAgdGV4dC1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtcHJpbWFyeSBiZy1wcmltYXJ5LzEwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBiZy1zZWNvbmRhcnkvMTAifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgYmctc3VjY2Vzcy8xMCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtaW5mbyBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC13YXJuaW5nIGJnLXdhcm5pbmcvMTAifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1lcnJvciBiZy1lcnJvci8xMCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvMjUgYmctcHJpbWFyeS8xMCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUgYmctc2Vjb25kYXJ5LzEwIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSBiZy1zdWNjZXNzLzEwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWluZm8gcmluZyByaW5nLWluc2V0IHJpbmctaW5mby8yNSBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSBiZy13YXJuaW5nLzEwIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSBiZy1lcnJvci8xMCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9XSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6Im91dGxpbmUiLGNvbG9yOiJuZXV0cmFsIixzaXplOiJtZCJ9fSxKbz17X19uYW1lOiJVS2JkIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJrYmQifSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yLHtnZXRLYmRLZXk6ZX09SG8oKSxhPUN0KCksbD1CdCgia2JkIixvKSxzPVooKCk9Pk9lKHtleHRlbmQ6T2Uoam8pLC4uLmEudWk/LmtiZHx8e319KSk7cmV0dXJuKG4sdSk9PihfKCksbSh0KFIpLHthczpyLmFzLGNsYXNzOk10KHMudmFsdWUoe2NsYXNzOlt0KGwpPy5iYXNlLG8uY2xhc3NdLGNvbG9yOm8uY29sb3IsdmFyaWFudDpvLnZhcmlhbnQsc2l6ZTpvLnNpemV9KSl9LHtkZWZhdWx0OmYoKCk9PltxKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W1B0KFN0KHQoZSkoci52YWx1ZSkpLDEpXSldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19O2V4cG9ydHtYbyBhcyBELFlvIGFzIEgsWm8gYXMgUCxKbyBhcyBfLERlIGFzIGEsRG8gYXMgYixYciBhcyBjLGVvIGFzIGQsa3QgYXMgZSxIbyBhcyB1fTsK", "/_nuxt/CYmlMIXz.js": "aW1wb3J0e18gYXMgTn1mcm9tIi4vQjFNZUxyaTMuanMiO2ltcG9ydHtfIGFzIFN9ZnJvbSIuL0NBVUFYNVZyLmpzIjtpbXBvcnR7ZiBhcyBDLG4gYXMgRSxnIGFzIFIscCBhcyAkLFIgYXMgaix6IGFzIEEsbyBhcyB5LGMgYXMgdixiIGFzIHQsdyBhcyBsLEQgYXMgQixpIGFzIHMsRiBhcyBMLHEgYXMgTSxqIGFzIFAsYSBhcyBjLGQgYXMgdSxHIGFzIFksViBhcyBxLHIgYXMgd31mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydCIuL20yMGtkR3hVLmpzIjtjb25zdCB6PXtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LEg9Qyh7X19uYW1lOiJub3RpZmljYXRpb25zIixzZXR1cChHKXtjb25zdCBkPUUoKSxtPVIoKSxwPXtlbWFpbDohMCxwcm9kdWN0X3VwZGF0ZXM6ITAsd2Vla2x5X2RpZ2VzdDohMSxpbXBvcnRhbnRfdXBkYXRlczohMH0sYT13KHsuLi5wfSksbj13KCExKSx7ZGF0YTpVLGVycm9yOmt9PSQoInVzZXItbm90aWZpY2F0aW9uLXByZWZzIiwoKT0+ZC5mZXRjaFVzZXJOb3RpZmljYXRpb25TZXR0aW5ncygpLHtkZWZhdWx0OigpPT4oey4uLnB9KX0pO2ooVSxpPT57aSYmKGEudmFsdWU9ey4uLml9KX0se2ltbWVkaWF0ZTohMH0pLEEoayk7Y29uc3QgVj1be25hbWU6InByb2R1Y3RfdXBkYXRlcyIsbGFiZWw6IlByb2R1Y3QgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgbWVzc2FnZXMgYWJvdXQgcHJvZHVjdCB1cGRhdGVzLiJ9LHtuYW1lOiJ3ZWVrbHlfZGlnZXN0IixsYWJlbDoiV2Vla2x5IGRpZ2VzdCIsZGVzY3JpcHRpb246IlJlY2VpdmUgYSB3ZWVrbHkgc3VtbWFyeS4ifSx7bmFtZToiaW1wb3J0YW50X3VwZGF0ZXMiLGxhYmVsOiJJbXBvcnRhbnQgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgc2VjdXJpdHkgYW5kIGJpbGxpbmcgdXBkYXRlcy4ifV07YXN5bmMgZnVuY3Rpb24gcigpe3RyeXthd2FpdCBkLnVwZGF0ZVVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyh7Li4uYS52YWx1ZX0pLG0uYWRkKHt0aXRsZToiUHJlZmVyZW5jZXMgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoe20uYWRkKHt0aXRsZToiRmFpbGVkIHRvIHNhdmUgcHJlZmVyZW5jZXMiLGNvbG9yOiJlcnJvciJ9KX19ZnVuY3Rpb24geChpKXtpZighaSl7bi52YWx1ZT0hMDtyZXR1cm59cigpfWZ1bmN0aW9uIGgoKXtuLnZhbHVlPSExLHIoKX1mdW5jdGlvbiBGKCl7YS52YWx1ZS5lbWFpbD0hMCxuLnZhbHVlPSExfXJldHVybihpLG8pPT57Y29uc3QgZj1OLF89UyxiPUIsZz1QLFQ9cTtyZXR1cm4geSgpLHYoImRpdiIseixbdChmLHt0aXRsZToiTm90aWZpY2F0aW9ucyIsZGVzY3JpcHRpb246Ik1hbmFnZSB5b3VyIG5vdGlmaWNhdGlvbiBzZXR0aW5ncy4iLHZhcmlhbnQ6Im5ha2VkIixjbGFzczoibWItNCJ9KSx0KGYse3ZhcmlhbnQ6InN1YnRsZSIsdWk6e2NvbnRhaW5lcjoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX0se2RlZmF1bHQ6bCgoKT0+W3QoYix7bmFtZToiZW1haWwiLGxhYmVsOiJFbWFpbCBub3RpZmljYXRpb25zIixkZXNjcmlwdGlvbjoiTWFzdGVyIHN3aXRjaC4gVHVybiBvZmYgdG8gc3RvcCBBTEwgZW1haWwg4oCUIGluY2x1ZGluZyBiaWxsaW5nIGFuZCBpbXBvcnRhbnQgYWNjb3VudCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBub3QtbGFzdDpwYi00IGdhcC0yIn0se2RlZmF1bHQ6bCgoKT0+W3QoXyx7bW9kZWxWYWx1ZTpzKGEpLmVtYWlsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbb1swXXx8KG9bMF09ZT0+cyhhKS5lbWFpbD1lKSx4XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLCh5KCksdihMLG51bGwsTShWLGU9PnQoYix7a2V5OmUubmFtZSxuYW1lOmUubmFtZSxsYWJlbDplLmxhYmVsLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24sY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBub3QtbGFzdDpwYi00IHB0LTQgZ2FwLTIifSx7ZGVmYXVsdDpsKCgpPT5bdChfLHttb2RlbFZhbHVlOnMoYSlbZS5uYW1lXSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6W0Q9PnMoYSlbZS5uYW1lXT1ELHJdLGRpc2FibGVkOiFzKGEpLmVtYWlsfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsImRpc2FibGVkIl0pXSksXzoyfSwxMDMyLFsibmFtZSIsImxhYmVsIiwiZGVzY3JpcHRpb24iXSkpLDY0KSldKSxfOjF9KSx0KFQse29wZW46cyhuKSwib25VcGRhdGU6b3BlbiI6b1sxXXx8KG9bMV09ZT0+WShuKT9uLnZhbHVlPWU6bnVsbCksdGl0bGU6IlR1cm4gb2ZmIGFsbCBlbWFpbD8iLHVpOntmb290ZXI6Imp1c3RpZnktZW5kIn19LHtib2R5OmwoKCk9PlsuLi5vWzJdfHwob1syXT1bYygicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSxbdSgiIFlvdSB3aWxsIG5vIGxvbmdlciByZWNlaXZlICIpLGMoInN0cm9uZyIsbnVsbCwiYW55IiksdSgiIGVtYWlsIGZyb20gdXMg4oCUIGluY2x1ZGluZyAiKSxjKCJzdHJvbmciLG51bGwsImJpbGxpbmcgbm90aWNlcywgc2VjdXJpdHkgYWxlcnRzLCBhbmQgb3RoZXIgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcyIpLHUoIi4gWW91IGNhbiB0dXJuIGl0IGJhY2sgb24gYXQgYW55IHRpbWUuICIpXSwtMSldKV0pLGZvb3RlcjpsKCgpPT5bdChnLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJLZWVwIGVtYWlsIG9uIixvbkNsaWNrOkZ9KSx0KGcse2NvbG9yOiJlcnJvciIsbGFiZWw6IlR1cm4gb2ZmIGFsbCBlbWFpbCIsbG9hZGluZzohMSxvbkNsaWNrOmh9KV0pLF86MX0sOCxbIm9wZW4iXSldKX19fSk7ZXhwb3J0e0ggYXMgZGVmYXVsdH07Cg==", "/_nuxt/Cc6zih-R.js": "aW1wb3J0e2FEIGFzIGYsYVggYXMgeSxheCBhcyBxLEogYXMgYixLIGFzIGcsciBhcyBDLG8gYXMgbSxoIGFzIHYsYWEgYXMgaCxpIGFzIGUsaiBhcyBCLGwgYXMgUyxOIGFzIG99ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7dSBhcyB4fWZyb20iLi9DdGExNXNHLS5qcyI7Y29uc3QgXz17YmFzZToiaGlkZGVuIGxnOmZsZXgiLHZhcmlhbnRzOntzaWRlOntsZWZ0OiIiLHJpZ2h0OiIifX19LE89e19fbmFtZToiVURhc2hib2FyZFNpZGViYXJDb2xsYXBzZSIscHJvcHM6e2NvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJnaG9zdCJ9LHNpZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxlZnQifSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNxdWFyZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxibG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LG49Zih5KGEsImljb24iLCJzaWRlIiwiY2xhc3MiKSkse3Q6cn09cSgpLGw9YigpLGQ9ZygiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlIixhKSx7c2lkZWJhckNvbGxhcHNlZDpzLGNvbGxhcHNlU2lkZWJhcjp1fT14KHtzaWRlYmFyQ29sbGFwc2VkOkMoITEpLGNvbGxhcHNlU2lkZWJhcjooKT0+e319KSxwPVMoKCk9Pm8oe2V4dGVuZDpvKF8pLC4uLmwudWk/LmRhc2hib2FyZFNpZGViYXJDb2xsYXBzZXx8e319KSk7cmV0dXJuKGMsaSk9PihtKCksdihCLGgoey4uLmUobiksaWNvbjphLmljb258fChlKHMpP2UobCkudWkuaWNvbnMucGFuZWxPcGVuOmUobCkudWkuaWNvbnMucGFuZWxDbG9zZSksImFyaWEtbGFiZWwiOmUocyk/ZShyKSgiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLmV4cGFuZCIpOmUocikoImRhc2hib2FyZFNpZGViYXJDb2xsYXBzZS5jb2xsYXBzZSIpLC4uLmMuJGF0dHJzfSx7Y2xhc3M6cC52YWx1ZSh7Y2xhc3M6W2UoZCk/LmJhc2UsYS5jbGFzc10sc2lkZTphLnNpZGV9KSxvbkNsaWNrOmlbMF18fChpWzBdPWs9PmUodSk/LighZShzKSkpfSksbnVsbCwxNixbImNsYXNzIl0pKX19O2V4cG9ydHtPIGFzIF99Owo=", "/_nuxt/CcMMF1g9.js": "aW1wb3J0e0ogYXMgZCxLIGFzIHAsbyBhcyBmLGgsdyBhcyBtLEwgYXMgbyxhIGFzIG4sTSBhcyBsLGkgYXMgcyxQIGFzIGIsbCBhcyBnLE4gYXMgY31mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0IHY9e3Nsb3RzOntyb290OiJzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUgb3ZlcmZsb3cteC1hdXRvIG1pbi1oLVs0OXB4XSIsbGVmdDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSIscmlnaHQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUifX0sdz17X19uYW1lOiJVRGFzaGJvYXJkVG9vbGJhciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IGk9cix1PWQoKSxlPXAoImRhc2hib2FyZFRvb2xiYXIiLGkpLGE9ZygoKT0+Yyh7ZXh0ZW5kOmModiksLi4udS51aT8uZGFzaGJvYXJkVG9vbGJhcnx8e319KSgpKTtyZXR1cm4odCx4KT0+KGYoKSxoKHMoYikse2FzOnIuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmwoYS52YWx1ZS5yb290KHtjbGFzczpbcyhlKT8ucm9vdCxpLmNsYXNzXX0pKX0se2RlZmF1bHQ6bSgoKT0+W28odC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bbigiZGl2Iix7ImRhdGEtc2xvdCI6ImxlZnQiLGNsYXNzOmwoYS52YWx1ZS5sZWZ0KHtjbGFzczpbcyhlKT8ubGVmdF19KSl9LFtvKHQuJHNsb3RzLCJsZWZ0IildLDIpLG4oImRpdiIseyJkYXRhLXNsb3QiOiJyaWdodCIsY2xhc3M6bChhLnZhbHVlLnJpZ2h0KHtjbGFzczpbcyhlKT8ucmlnaHRdfSkpfSxbbyh0LiRzbG90cywicmlnaHQiKV0sMildKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX07ZXhwb3J0e3cgYXMgX307Cg==", "/_nuxt/Cf_fw1E9.js": "aW1wb3J0e2FzIGFzIHJ9ZnJvbSIuL284dGRfRzBKLmpzIjtmdW5jdGlvbiBqKCl7ZnVuY3Rpb24gbygpe3JldHVybiByKCIvYXBpL3Byb2plY3RzIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gcihgL2FwaS9wcm9qZWN0cy8ke3R9YCl9ZnVuY3Rpb24gbih0KXtyZXR1cm4gcigiL2FwaS9wcm9qZWN0cyIse21ldGhvZDoiUE9TVCIsYm9keTp0fSl9ZnVuY3Rpb24gdSh0LGUpe3JldHVybiByKGAvYXBpL3Byb2plY3RzLyR7dH1gLHttZXRob2Q6IlBBVENIIixib2R5OmV9KX1mdW5jdGlvbiBwKHQpe3JldHVybiByKGAvYXBpL3Byb2plY3RzLyR7dH1gLHttZXRob2Q6IkRFTEVURSJ9KX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHIoYC9hcGkvcHJvamVjdHMvJHt0fS9wcm9kdWN0c2Ase21ldGhvZDoiUE9TVCIsYm9keTplfSl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiByKGAvYXBpL3Byb2plY3RzLyR7dH0vcHJvZHVjdHMvJHtlfWAse21ldGhvZDoiREVMRVRFIn0pfWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gcihgL2FwaS9wcm9qZWN0cy8ke3R9L21lbWJlcnNgLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gcihgL2FwaS9wcm9qZWN0cy8ke3R9L21lbWJlcnMvJHtlfWAse21ldGhvZDoiREVMRVRFIn0pfXJldHVybntmZXRjaFByb2plY3RzOm8sZmV0Y2hQcm9qZWN0OmMsY3JlYXRlUHJvamVjdDpuLHVwZGF0ZVByb2plY3Q6dSxkZWxldGVQcm9qZWN0OnAsYWRkUHJvZHVjdDppLHJlbW92ZVByb2R1Y3Q6cyxhZGRNZW1iZXI6ZCxyZW1vdmVNZW1iZXI6bX19ZXhwb3J0e2ogYXMgdX07Cg==", "/_nuxt/CfhYFYOY.js": "aW1wb3J0e18gYXMgVmV9ZnJvbSIuL1pKVmswb2xOLmpzIjtpbXBvcnR7VCBhcyB6ZSxmIGFzIHRlLFUgYXMgQ2UsbiBhcyBtZSxnIGFzIHBlLHAgYXMgTCx6IGFzIFksUiBhcyBaLG8gYXMgZCxoIGFzIEosdyBhcyB4LGIgYXMgbixqIGFzIEMsaSBhcyBhLGEgYXMgaSxjIGFzIGIsRyBhcyBqLHYgYXMgUixGIGFzIE4scSBhcyBlZSx0IGFzIFgsViBhcyBSZSxXIGFzIEllLEIgYXMgYWUsciBhcyBtLGwgYXMgcSxRIGFzIHZlLFggYXMgQWUsWSBhcyBFZSxEIGFzIE9lLEggYXMgZGUsWiBhcyBQZSxFIGFzIFNlLCQgYXMgZixhMCBhcyBMZSx1IGFzIEJlLGExIGFzIEZlfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgdWV9ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnR7XyBhcyBmZX1mcm9tIi4vV21EWEhZS2suanMiO2ltcG9ydHtfIGFzIE5lfWZyb20iLi9CU1JLcUdyUC5qcyI7aW1wb3J0e18gYXMgcWV9ZnJvbSIuL0NXOGZLbkZFLmpzIjtpbXBvcnR7XyBhcyBEZX1mcm9tIi4vQ0FVQVg1VnIuanMiO2ltcG9ydHt1IGFzIEdlfWZyb20iLi9DZl9mdzFFOS5qcyI7aW1wb3J0e3UgYXMgS2V9ZnJvbSIuL0JBdW5pLXFkLmpzIjtpbXBvcnR7dSBhcyBUZX1mcm9tIi4vRG03OTRxeEkuanMiO2ltcG9ydCIuL0I3czVwampSLmpzIjtpbXBvcnQiLi9ESEN3RUxXcC5qcyI7aW1wb3J0Ii4vQnQ4UzBkbWwuanMiO2ltcG9ydCIuL20yMGtkR3hVLmpzIjtpbXBvcnQiLi9DN1l5NnRSMy5qcyI7Y29uc3QgYmU9U3ltYm9sKCJvcmctbWVtYmVycyIpO2Z1bmN0aW9uIF9lKCl7Y29uc3QgZz16ZShiZSk7aWYoIWcpdGhyb3cgbmV3IEVycm9yKCJ1c2VPcmdhbml6YXRpb25NZW1iZXJzKCkgbXVzdCBiZSBjYWxsZWQgd2l0aGluIHRoZSBtZW1iZXJzIHBhZ2UiKTtyZXR1cm4gZ31jb25zdCBXZT17Y2xhc3M6InNwYWNlLXktNCJ9LEhlPXtrZXk6MH0sUWU9e2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIn0sWGU9e2NsYXNzOiJzcGFjZS15LTIifSxZZT17Y2xhc3M6InRleHQtc20ifSxaZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LEplPXRlKHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbWJlclBlcm1pc3Npb25zTW9kYWwiLHByb3BzOkllKHttZW1iZXI6e319LHtvcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sb3Blbk1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChnKXtjb25zdCBjPWcscD1DZShnLCJvcGVuIikseT1tZSgpLG89cGUoKSxfPWFlKCkse3Blcm1pc3Npb25zOncsdXBkYXRlTWVtYmVyQWJpbGl0aWVzOlZ9PV9lKCkse2RhdGE6eixlcnJvcjpCfT1MKCJvcmctcm9sZXMiLCgpPT5fLmZldGNoUm9sZXMoKSx7ZGVmYXVsdDooKT0+W119KTtZKEIpO2NvbnN0IGs9bShbXSksaD1tKFtdKTtaKCgpPT5jLm1lbWJlcixzPT57ay52YWx1ZT1zPyhzLmFiaWxpdGllcz8/W10pLmZpbHRlcihsPT4hbC5lbmRzV2l0aCgiOnNlbGYiKSk6W10saC52YWx1ZT1bXX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IEk9bSghMSksRD1xKCgpPT57Y29uc3Qgcz13LnZhbHVlLmZpbHRlcih1PT51LnNjb3BlPT09bnVsbCk7cmV0dXJuWy4uLm5ldyBTZXQocy5tYXAodT0+dS5zdWJqZWN0KSldLm1hcCh1PT4oe3N1YmplY3Q6dSxwZXJtaXNzaW9uczpzLmZpbHRlcihPPT5PLnN1YmplY3Q9PT11KX0pKX0pLEE9cSgoKT0+ei52YWx1ZS5tYXAocz0+KHtsYWJlbDpzLm5hbWUsdmFsdWU6cy5pZH0pKSk7ZnVuY3Rpb24gRShzKXtyZXR1cm4gdmUoeS5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSxzKX1mdW5jdGlvbiBNKHMpe0UocykmJihrLnZhbHVlLmluY2x1ZGVzKHMpP2sudmFsdWU9ay52YWx1ZS5maWx0ZXIobD0+bCE9PXMpOmsudmFsdWU9Wy4uLmsudmFsdWUsc10pfWFzeW5jIGZ1bmN0aW9uICQoKXtpZihjLm1lbWJlcil7SS52YWx1ZT0hMDt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW1YoYy5tZW1iZXIuaWQsay52YWx1ZSksXy5hc3NpZ25NZW1iZXJSb2xlcyhjLm1lbWJlci5pZCxoLnZhbHVlKV0pLG8uYWRkKHt0aXRsZToiUGVybWlzc2lvbnMgdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSkscC52YWx1ZT0hMX1jYXRjaChzKXtjb25zdCBsPXM7by5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gdXBkYXRlIHBlcm1pc3Npb25zIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7SS52YWx1ZT0hMX19fXJldHVybihzLGwpPT57Y29uc3QgdT1mZSxPPURlLEY9QyxHPVJlO3JldHVybiBkKCksSihHLHtvcGVuOnAudmFsdWUsIm9uVXBkYXRlOm9wZW4iOmxbMl18fChsWzJdPXY9PnAudmFsdWU9diksdGl0bGU6Zy5tZW1iZXI/YFBlcm1pc3Npb25zIOKAlCAke2cubWVtYmVyLm5hbWU/P2cubWVtYmVyLnByaW1hcnlfZW1haWx9YDoiUGVybWlzc2lvbnMiLHVpOntmb290ZXI6Imp1c3RpZnktZW5kIn19LHtib2R5OngoKCk9PltpKCJkaXYiLFdlLFthKHopLmxlbmd0aD4wPyhkKCksYigiZGl2IixIZSxbbFszXXx8KGxbM109aSgicCIse2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIn0sIiBSb2xlcyAiLC0xKSksbih1LHttb2RlbFZhbHVlOmEoaCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmxbMF18fChsWzBdPXY9PmooaCk/aC52YWx1ZT12Om51bGwpLGl0ZW1zOmEoQSksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgcm9sZXPigKYifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiXSldKSk6UigiIiwhMCksKGQoITApLGIoTixudWxsLGVlKGEoRCksdj0+KGQoKSxiKCJkaXYiLHtrZXk6di5zdWJqZWN0fSxbaSgicCIsUWUsWCh2LnN1YmplY3QpLDEpLGkoImRpdiIsWGUsWyhkKCEwKSxiKE4sbnVsbCxlZSh2LnBlcm1pc3Npb25zLFU9PihkKCksYigiZGl2Iix7a2V5OlUua2V5LGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbaSgiZGl2IixudWxsLFtpKCJwIixZZSxYKFUuZGVzY3JpcHRpb24/P1Uua2V5KSwxKSxpKCJwIixaZSxYKFUua2V5KSwxKV0pLG4oTyx7Im1vZGVsLXZhbHVlIjphKGspLmluY2x1ZGVzKFUua2V5KSxkaXNhYmxlZDohRShVLmtleSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnNlPT5NKFUua2V5KX0sbnVsbCw4LFsibW9kZWwtdmFsdWUiLCJkaXNhYmxlZCIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSkpLDEyOCkpXSldKSkpLDEyOCkpXSldKSxmb290ZXI6eCgoKT0+W24oRix7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmxbMV18fChsWzFdPXY9PnAudmFsdWU9ITEpfSksbihGLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzphKEkpLG9uQ2xpY2s6JH0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0sOCxbIm9wZW4iLCJ0aXRsZSJdKX19fSksZXQ9T2JqZWN0LmFzc2lnbihKZSx7X19uYW1lOiJPcmdhbml6YXRpb25NZW1iZXJQZXJtaXNzaW9uc01vZGFsIn0pLHR0PXtjbGFzczoic3BhY2UteS02In0sYXQ9e2tleTowLGNsYXNzOiJzcGFjZS15LTMifSxzdD17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTMgc206ZmxleC1yb3cgc206aXRlbXMtZW5kIn0sbnQ9e2tleTowLGNsYXNzOiJtdC0zIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIn0sbHQ9e2tleToxLGNsYXNzOiJzcGFjZS15LTMifSxpdD17Y2xhc3M6InNwYWNlLXktMyJ9LG90PXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxydD17Y2xhc3M6InAtNCBzcGFjZS15LTEifSxjdD17Y2xhc3M6ImZsZXggZmxleC13cmFwIGdhcC0xLjUifSxkdD17a2V5OjAsY2xhc3M6InB5LTMgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZCB0ZXh0LXNtIn0sdXQ9dGUoe19fbmFtZToiT3JnYW5pemF0aW9uTWVtYmVyTGlzdCIsc2V0dXAoZyl7Y29uc3QgYz1tZSgpLHA9cGUoKSx5PWFlKCkse2ludml0YXRpb25zOm8scmVtb3ZlTWVtYmVyOl8sY3JlYXRlSW52aXRhdGlvbjp3LHJldm9rZUludml0YXRpb246Vn09X2UoKSx6PXEoKCk9PnZlKGMuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6bWFuYWdlIikpLEI9bShudWxsKSx7aXRlbXM6ayxxOmgsaGFzTW9yZTpJLGxvYWRpbmc6RCxsb2FkTW9yZTpBLHJlc2V0OkV9PUtlKHQ9PnkuZmV0Y2hNZW1iZXJzKHQpLnRoZW4oZT0+ZSkse2ltbWVkaWF0ZTohMH0pO0FlKEIsQSx7ZGlzdGFuY2U6MTIwLGNhbkxvYWRNb3JlOigpPT5JLnZhbHVlfSk7Y29uc3QgTT1tKCIiKSwkPW0oIiIpLHM9bShbXSksbD1tKCExKSx1PW0oIiIpLHtkYXRhOk8sZXJyb3I6Rn09TCgib3JnLXJvbGVzIiwoKT0+eS5mZXRjaFJvbGVzKCkse2RlZmF1bHQ6KCk9PltdfSk7WShGKTtjb25zdCBHPXEoKCk9Pk8udmFsdWUubWFwKHQ9Pih7bGFiZWw6dC5uYW1lLHZhbHVlOnQuaWR9KSkpLHY9bShbXSksVT1HZSgpLHtkYXRhOnNlLGVycm9yOmdlfT1MKCJvcmctaW52aXRlLXByb2plY3RzIiwoKT0+VS5mZXRjaFByb2plY3RzKCkse2RlZmF1bHQ6KCk9PltdfSk7WShnZSksWihzZSx0PT57di52YWx1ZT10Lm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgeWU9VGUoKTtmdW5jdGlvbiBuZSh0KXtyZXR1cm4gTGUoeWUub3JpZ2luLCJqb2luIix0KX1hc3luYyBmdW5jdGlvbiBsZSgpe2lmKE0udmFsdWUudHJpbSgpKXtsLnZhbHVlPSEwLHUudmFsdWU9IiI7dHJ5e2NvbnN0IHQ9YXdhaXQgdyhNLnZhbHVlLnRyaW0oKSwkLnZhbHVlfHx2b2lkIDAscy52YWx1ZS5sZW5ndGg/cy52YWx1ZTp2b2lkIDApO3UudmFsdWU9bmUodC50b2tlbiksTS52YWx1ZT0iIiwkLnZhbHVlPSIiLHMudmFsdWU9W119Y2F0Y2godCl7Y29uc3QgZT10O3AuYWRkKHt0aXRsZToiRmFpbGVkIHRvIGNyZWF0ZSBpbnZpdGF0aW9uIixkZXNjcmlwdGlvbjplPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7bC52YWx1ZT0hMX19fWNvbnN0e2NvcHk6a2V9PUVlKCk7YXN5bmMgZnVuY3Rpb24gaWUodCl7YXdhaXQga2UodCkscC5hZGQoe3RpdGxlOiJJbnZpdGF0aW9uIGxpbmsgY29waWVkIixjb2xvcjoic3VjY2VzcyJ9KX1hc3luYyBmdW5jdGlvbiB4ZSh0KXt0cnl7YXdhaXQgVih0KSxwLmFkZCh7dGl0bGU6Ikludml0YXRpb24gcmV2b2tlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2h7cC5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gcmV2b2tlIGludml0YXRpb24iLGNvbG9yOiJlcnJvciJ9KX19Y29uc3QgaGU9W3thY2Nlc3NvcktleToiZW1haWwiLGhlYWRlcjoiRW1haWwifSx7aWQ6ImxpbmsiLGhlYWRlcjoiSW52aXRhdGlvbiBsaW5rIixjZWxsOih7cm93OnR9KT0+e2NvbnN0IGU9bmUodC5vcmlnaW5hbC50b2tlbik7cmV0dXJuIGYoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtmKGRlLHttb2RlbFZhbHVlOmUsdHlwZToicGFzc3dvcmQiLHJlYWRvbmx5OiEwLHNpemU6InhzIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyIsImFyaWEtbGFiZWwiOiJJbnZpdGF0aW9uIGxpbmsifSksZihDLHtpY29uOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InhzIiwiYXJpYS1sYWJlbCI6IkNvcHkgbGluayIsb25DbGljazooKT0+aWUoZSl9KV0pfX0se2lkOiJhY3Rpb25zIixoZWFkZXI6IiIsbWV0YTp7Y2xhc3M6e3RkOiJ0ZXh0LXJpZ2h0In19LGNlbGw6KHtyb3c6dH0pPT56LnZhbHVlP2YoQyx7bGFiZWw6IlJldm9rZSIsY29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIixvbkNsaWNrOigpPT54ZSh0Lm9yaWdpbmFsLmlkKX0pOm51bGx9XSxLPW0obnVsbCksUD1tKCExKSxUPW0obnVsbCksVz1tKHt9KSxNZT1be2lkOiJuYW1lIixoZWFkZXI6Ik5hbWUiLGNlbGw6KHtyb3c6dH0pPT5mKCJkaXYiLFtmKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIn0sdC5vcmlnaW5hbC5uYW1lPz90Lm9yaWdpbmFsLnVzZXJuYW1lPz90Lm9yaWdpbmFsLnByaW1hcnlfZW1haWwpLGYoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIn0sdC5vcmlnaW5hbC5wcmltYXJ5X2VtYWlsKV0pfSx7aWQ6ImFiaWxpdGllcyIsaGVhZGVyOiJBYmlsaXRpZXMiLGNlbGw6KHtyb3c6dH0pPT5mKCJkaXYiLHtjbGFzczoiZmxleCBmbGV4LXdyYXAgZ2FwLTEifSwodC5vcmlnaW5hbC5hYmlsaXRpZXM/P1tdKS5maWx0ZXIoZT0+IWUuZW5kc1dpdGgoIjpzZWxmIikpLm1hcChlPT5mKHVlLHtsYWJlbDplLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUifSkpKX0se2lkOiJhY3Rpb25zIixoZWFkZXI6IiIsbWV0YTp7Y2xhc3M6e3RkOiJ0ZXh0LXJpZ2h0In19LGNlbGw6KHtyb3c6dH0pPT4hei52YWx1ZXx8dC5vcmlnaW5hbC5pZD09PWMuY3VycmVudFVzZXI/LmlkP251bGw6ZigiZGl2Iix7Y2xhc3M6ImZsZXggZ2FwLTIganVzdGlmeS1lbmQifSxbZihDLHtpY29uOiJpLWx1Y2lkZS1wZW5jaWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLCJhcmlhLWxhYmVsIjoiRWRpdCBwZXJtaXNzaW9ucyIsb25DbGljazooKT0+e0sudmFsdWU9dC5vcmlnaW5hbCxQLnZhbHVlPSEwfX0pLGYoQyx7aWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsY29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLCJhcmlhLWxhYmVsIjoiUmVtb3ZlIG1lbWJlciIsbG9hZGluZzpULnZhbHVlPT09dC5vcmlnaW5hbC5pZCxvbkNsaWNrOigpPT5VZSh0Lm9yaWdpbmFsKX0pXSl9XTthc3luYyBmdW5jdGlvbiBVZSh0KXtULnZhbHVlPXQuaWQ7dHJ5e2F3YWl0IF8odC5pZCkscC5hZGQoe3RpdGxlOmAke3QubmFtZT8/dC5wcmltYXJ5X2VtYWlsfSByZW1vdmVkYCxjb2xvcjoic3VjY2VzcyJ9KSxFKCksYXdhaXQgQSgpfWNhdGNoKGUpe2NvbnN0IFM9ZTtwLmFkZCh7dGl0bGU6IkZhaWxlZCB0byByZW1vdmUgbWVtYmVyIixkZXNjcmlwdGlvbjpTPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7VC52YWx1ZT1udWxsfX1yZXR1cm4gWihQLGFzeW5jIHQ9Pnt0fHwoRSgpLGF3YWl0IEEoKSl9KSwodCxlKT0+e2NvbnN0IFM9ZGUsSD1PZSx3ZT1TZSwkZT1mZSxvZT1DLFE9TmUscmU9cWUsamU9dWU7cmV0dXJuIGQoKSxiKE4sbnVsbCxbaSgiZGl2Iix0dCxbYSh6KT8oZCgpLGIoImRpdiIsYXQsW2VbOF18fChlWzhdPWkoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgSW52aXRlIGEgbWVtYmVyICIsLTEpKSxuKFEsbnVsbCx7ZGVmYXVsdDp4KCgpPT5baSgiZGl2IixzdCxbbihILHtsYWJlbDoiRW1haWwiLGNsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDp4KCgpPT5bbihTLHttb2RlbFZhbHVlOmEoTSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMF18fChlWzBdPXI9PmooTSk/TS52YWx1ZT1yOm51bGwpLHR5cGU6ImVtYWlsIixwbGFjZWhvbGRlcjoidXNlckBleGFtcGxlLmNvbSIsY2xhc3M6InctZnVsbCIsb25LZXlkb3duOlBlKGxlLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxuKEgse2xhYmVsOiJSb2xlIn0se2RlZmF1bHQ6eCgoKT0+W24od2Use21vZGVsVmFsdWU6YSgkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZVsxXXx8KGVbMV09cj0+aigkKT8kLnZhbHVlPXI6bnVsbCksaXRlbXM6YShHKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIscGxhY2Vob2xkZXI6IkRlZmF1bHQiLGNsYXNzOiJtaW4tdy00MCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLGEodikubGVuZ3RoPjA/KGQoKSxKKEgse2tleTowLGxhYmVsOiJQcm9qZWN0cyJ9LHtkZWZhdWx0OngoKCk9PltuKCRlLHttb2RlbFZhbHVlOmEocyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMl18fChlWzJdPXI9Pmoocyk/cy52YWx1ZT1yOm51bGwpLGl0ZW1zOmEodiksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJOb25lIixjbGFzczoibWluLXctNDgifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSk6UigiIiwhMCksbihvZSx7bGFiZWw6IkdlbmVyYXRlIGludml0ZSBsaW5rIixpY29uOiJpLWx1Y2lkZS1saW5rIixsb2FkaW5nOmEobCksZGlzYWJsZWQ6IWEoTSkudHJpbSgpLG9uQ2xpY2s6bGV9LG51bGwsOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pLGEodSk/KGQoKSxiKCJkaXYiLG50LFtuKFMseyJtb2RlbC12YWx1ZSI6YSh1KSx0eXBlOiJwYXNzd29yZCIscmVhZG9ubHk6IiIsY2xhc3M6ImZsZXgtMSBmb250LW1vbm8gdGV4dC14cyIsImFyaWEtbGFiZWwiOiJHZW5lcmF0ZWQgaW52aXRhdGlvbiBsaW5rIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSksbihvZSx7aWNvbjoiaS1sdWNpZGUtY29weSIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6IkNvcHkgbGluayIsb25DbGljazplWzNdfHwoZVszXT1yPT5pZShhKHUpKSl9KV0pKTpSKCIiLCEwKV0pLF86MX0pXSkpOlIoIiIsITApLGEobykubGVuZ3RoPjA/KGQoKSxiKCJkaXYiLGx0LFtlWzldfHwoZVs5XT1pKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFBlbmRpbmcgaW52aXRhdGlvbnMgIiwtMSkpLG4oUSx7dWk6e2JvZHk6InNtOnAtMCJ9fSx7ZGVmYXVsdDp4KCgpPT5bbihyZSx7Y29sdW1uczpoZSxkYXRhOmEobyl9LG51bGwsOCxbImRhdGEiXSldKSxfOjF9KV0pKTpSKCIiLCEwKSxpKCJkaXYiLGl0LFtpKCJkaXYiLG90LFtlWzEwXXx8KGVbMTBdPWkoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCBmbGV4LTEifSwiIE1lbWJlcnMgIiwtMSkpLG4oUyx7bW9kZWxWYWx1ZTphKGgpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplWzRdfHwoZVs0XT1yPT5qKGgpP2gudmFsdWU9cjpudWxsKSxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggbWVtYmVyc+KApiIsc2l6ZToic20iLGNsYXNzOiJ3LTU2In0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLG4oUSx7dWk6e2JvZHk6InNtOnAtMCJ9fSx7ZGVmYXVsdDp4KCgpPT5baSgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjpCfSxbbihyZSx7ZXhwYW5kZWQ6YShXKSwib25VcGRhdGU6ZXhwYW5kZWQiOmVbNV18fChlWzVdPXI9PmooVyk/Vy52YWx1ZT1yOm51bGwpLGNvbHVtbnM6TWUsZGF0YTphKGspfSx7ZW1wdHk6eCgoKT0+Wy4uLmVbMTFdfHwoZVsxMV09W2koImRpdiIse2NsYXNzOiJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgifSwiIE5vIG1lbWJlcnMgaW4gdGhpcyBvcmdhbml6YXRpb24uICIsLTEpXSldKSxleHBhbmRlZDp4KCh7cm93OnJ9KT0+W2koImRpdiIscnQsW2VbMTJdfHwoZVsxMl09aSgicCIse2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIn0sIiBBbGwgcGVybWlzc2lvbnMgIiwtMSkpLGkoImRpdiIsY3QsWyhkKCEwKSxiKE4sbnVsbCxlZShyLm9yaWdpbmFsLmFiaWxpdGllcyxjZT0+KGQoKSxKKGplLHtrZXk6Y2UsbGFiZWw6Y2UsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToic20ifSxudWxsLDgsWyJsYWJlbCJdKSkpLDEyOCkpXSldKV0pLF86MX0sOCxbImV4cGFuZGVkIiwiZGF0YSJdKSxhKEQpPyhkKCksYigiZGl2IixkdCwiIExvYWRpbmfigKYgIikpOlIoIiIsITApXSw1MTIpXSksXzoxfSldKV0pLG4oZXQse29wZW46YShQKSwib25VcGRhdGU6b3BlbiI6W2VbNl18fChlWzZdPXI9PmooUCk/UC52YWx1ZT1yOm51bGwpLGVbN118fChlWzddPXI9PntyfHwoSy52YWx1ZT1udWxsKX0pXSxtZW1iZXI6YShLKX0sbnVsbCw4LFsib3BlbiIsIm1lbWJlciJdKV0sNjQpfX19KSxtdD1PYmplY3QuYXNzaWduKHV0LHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbWJlckxpc3QifSkscHQ9e2NsYXNzOiJzcGFjZS15LTQifSx6dD10ZSh7X19uYW1lOiJtZW1iZXJzIixzZXR1cChnKXtCZSh7dGl0bGU6Ik1lbWJlcnMifSk7Y29uc3QgYz1hZSgpLHtkYXRhOnB9PUwoIm9yZy1wZXJtaXNzaW9ucyIsKCk9PmMuZmV0Y2hQZXJtaXNzaW9ucygpLHtkZWZhdWx0OigpPT5bXX0pLHtkYXRhOnl9PUwoIm9yZy1pbnZpdGF0aW9ucyIsKCk9PmMuZmV0Y2hJbnZpdGF0aW9ucygpLHtkZWZhdWx0OigpPT5bXX0pO3JldHVybiBGZShiZSx7aW52aXRhdGlvbnM6eSxwZXJtaXNzaW9uczpwLGFzeW5jIGFkZE1lbWJlcihvKXthd2FpdCBjLmFkZE1lbWJlcih7ZW1haWw6b30pfSxhc3luYyB1cGRhdGVNZW1iZXJBYmlsaXRpZXMobyxfKXthd2FpdCBjLnVwZGF0ZU1lbWJlckFiaWxpdGllcyhvLHthYmlsaXRpZXM6X30pfSxhc3luYyByZW1vdmVNZW1iZXIobyl7YXdhaXQgYy5yZW1vdmVNZW1iZXIobyl9LGFzeW5jIGNyZWF0ZUludml0YXRpb24obyxfLHcpe2NvbnN0IFY9YXdhaXQgYy5jcmVhdGVJbnZpdGF0aW9uKHtlbWFpbDpvLHJvbGVfaWQ6Xyxwcm9qZWN0X2lkczp3Py5sZW5ndGg/dzp2b2lkIDB9KTtyZXR1cm4geS52YWx1ZT1bLi4ueS52YWx1ZSxWXSxWfSxhc3luYyByZXZva2VJbnZpdGF0aW9uKG8pe2F3YWl0IGMucmV2b2tlSW52aXRhdGlvbihvKSx5LnZhbHVlPXkudmFsdWUuZmlsdGVyKF89Pl8uaWQhPT1vKX19KSwobyxfKT0+e2NvbnN0IHc9VmU7cmV0dXJuIGQoKSxiKCJkaXYiLHB0LFtuKHcse2ljb246ImktbHVjaWRlLWluZm8iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHRpdGxlOiJQZXJtaXNzaW9uIGNoYW5nZXMgYXBwbHkgdG8gdGhpcyBvcmdhbml6YXRpb24gYW5kIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LiJ9KSxuKG10KV0pfX19KTtleHBvcnR7enQgYXMgZGVmYXVsdH07Cg==", "/_nuxt/Cl4i4rSM.js": "aW1wb3J0e18gYXMgcH1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIHh9ZnJvbSIuL0JTUktxR3JQLmpzIjtpbXBvcnR7ZixuIGFzIGcsbyBhcyByLGggYXMgbyx3IGFzIGksYSBhcyB0LGMgYXMgZCxxIGFzIGgsZCBhcyBtLHQgYXMgbixpIGFzIHMsRiBhcyBiLHYgYXMgbH1mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0IHY9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIifSx5PXtjbGFzczoidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLCJkYXRhLXRlc3RpZCI6ImN1cnJlbnQtdXNlci1uYW1lIn0saz17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCIsImRhdGEtdGVzdGlkIjoiY3VycmVudC11c2VyLWVtYWlsIn0sVT17Y2xhc3M6InNwYWNlLXktMyJ9LHc9e2NsYXNzOiJmbGV4IGZsZXgtd3JhcCBnYXAtMSJ9LEI9e2tleTowLGNsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSxDPXtrZXk6MH0sUz17Y2xhc3M6InRleHQtc20ifSxJPXtjbGFzczoidGV4dC1tdXRlZCJ9LCQ9Zih7X19uYW1lOiJEYXNoYm9hcmRTZXNzaW9uQ2FyZCIsc2V0dXAoTil7Y29uc3QgZT1nKCk7cmV0dXJuKFYsYSk9Pntjb25zdCBjPXAsXz14O3JldHVybiByKCksbyhfLHsiZGF0YS10ZXN0aWQiOiJzZXNzaW9uLWNhcmQifSx7aGVhZGVyOmkoKCk9Plt0KCJkaXYiLHYsW3QoImRpdiIsbnVsbCxbYVswXXx8KGFbMF09dCgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFNpZ25lZCBpbiBhcyAiLC0xKSksdCgicCIseSxuKHMoZSkuY3VycmVudFVzZXI/Lm5hbWU/P3MoZSkuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwpLDEpLHQoInAiLGssbihzKGUpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsKSwxKV0pLHMoZSkuaXNJbXBlcnNvbmF0aW5nPyhyKCksbyhjLHtrZXk6MCxjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsaWNvbjoiaS1sdWNpZGUtdXNlci1jb2ciLCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRpbmctYmFkZ2UifSx7ZGVmYXVsdDppKCgpPT5bLi4uYVsxXXx8KGFbMV09W20oIiBJbXBlcnNvbmF0aW5nICIsLTEpXSldKSxfOjF9KSk6bCgiIiwhMCldKV0pLGRlZmF1bHQ6aSgoKT0+W3QoImRpdiIsVSxbdCgiZGl2IixudWxsLFthWzJdfHwoYVsyXT10KCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtYi0xIn0sIiBBYmlsaXRpZXMgIiwtMSkpLHQoImRpdiIsdyxbKHIoITApLGQoYixudWxsLGgocyhlKS5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSx1PT4ocigpLG8oYyx7a2V5OnUsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToic20ifSx7ZGVmYXVsdDppKCgpPT5bbShuKHUpLDEpXSksXzoyfSwxMDI0KSkpLDEyOCkpLHMoZSkuY3VycmVudFVzZXI/LmFiaWxpdGllcz8ubGVuZ3RoP2woIiIsITApOihyKCksZCgic3BhbiIsQiwiIChub25lKSAiKSldKV0pLHMoZSkuaXNJbXBlcnNvbmF0aW5nJiZzKGUpLmltcGVyc29uYXRvcj8ocigpLGQoImRpdiIsQyxbYVszXXx8KGFbM109dCgicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSJ9LCIgUmVhbCB1c2VyICIsLTEpKSx0KCJwIixTLFttKG4ocyhlKS5pbXBlcnNvbmF0b3IubmFtZSkrIiAiLDEpLHQoInNwYW4iLEksIsK3ICIrbihzKGUpLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKSwxKV0pXSkpOmwoIiIsITApXSldKSxfOjF9KX19fSk7ZXhwb3J0eyQgYXMgX307Cg==", "/_nuxt/CoIdz4ka.js": "aW1wb3J0e2YgYXMgJCxTIGFzIHosbyBhcyBkLGggYXMgSSx3IGFzIHUsYiBhcyB0LEQgYXMgQSxIIGFzIE0saSBhcyBuLGFyIGFzIFQsRSBhcyBILGEgYXMgUCxqIGFzIEIsYyBhcyBmLGUgYXMgRyxkIGFzIE4sdCBhcyBWLHYgYXMgSyxGIGFzIEUscSBhcyBDLGsgYXMgUix1IGFzIEosZyBhcyBRLHAgYXMgVyx6IGFzIFgsRyBhcyBZLFYgYXMgWixyIGFzIFMsbCBhcyBlZSxhMSBhcyB0ZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIG9lfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e3UgYXMgbmV9ZnJvbSIuL0NmX2Z3MUU5LmpzIjtpbXBvcnR7XyBhcyBhZX1mcm9tIi4vRE9DRkRUY1kuanMiO2ltcG9ydHtvIGFzIHNlLF8gYXMgaWUscyBhcyBGfWZyb20iLi9CdUxTdUE4TS5qcyI7aW1wb3J0e18gYXMgY2V9ZnJvbSIuL0NHWGdTTVpoLmpzIjtpbXBvcnR7XyBhcyBsZX1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIHJlfWZyb20iLi80bEhteUhiSC5qcyI7aW1wb3J0e18gYXMgZGV9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vQjdzNXBqalIuanMiO2ltcG9ydCIuL0NjNnppaC1SLmpzIjtpbXBvcnQiLi9naHFZYklTVC5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2NvbnN0IHVlPXtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LG1lPSQoe19fbmFtZToiUHJvamVjdEZvcm0iLHByb3BzOntpbml0aWFsVmFsdWVzOnt9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic3VibWl0IiwiY2FuY2VsIl0sc2V0dXAoYSx7ZW1pdDpyfSl7Y29uc3Qgcz1hLG09cixvPXNlKHtuYW1lOkYoKS5taW4oMSwiTmFtZSBpcyByZXF1aXJlZCIpLm1heCgyMDApLGRlc2NyaXB0aW9uOkYoKS5tYXgoMmUzKS5vcHRpb25hbCgpLHN0YXR1czppZShbImFjdGl2ZSIsImFyY2hpdmVkIl0pfSksZT16KHtuYW1lOnMuaW5pdGlhbFZhbHVlcz8ubmFtZT8/IiIsZGVzY3JpcHRpb246cy5pbml0aWFsVmFsdWVzPy5kZXNjcmlwdGlvbj8/IiIsc3RhdHVzOnMuaW5pdGlhbFZhbHVlcz8uc3RhdHVzPz8iYWN0aXZlIn0pLHY9W3tsYWJlbDoiQWN0aXZlIix2YWx1ZToiYWN0aXZlIn0se2xhYmVsOiJBcmNoaXZlZCIsdmFsdWU6ImFyY2hpdmVkIn1dO2Z1bmN0aW9uIHAoXyl7bSgic3VibWl0IixfLmRhdGEpfXJldHVybihfLGkpPT57Y29uc3QgYj1NLGc9QSxoPVQsdz1ILHg9QixVPWFlO3JldHVybiBkKCksSShVLHtzY2hlbWE6bihvKSxzdGF0ZTpuKGUpLGNsYXNzOiJzcGFjZS15LTQiLG9uU3VibWl0OnB9LHtkZWZhdWx0OnUoKCk9Plt0KGcse2xhYmVsOiJOYW1lIixuYW1lOiJuYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6dSgoKT0+W3QoYix7bW9kZWxWYWx1ZTpuKGUpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMF18fChpWzBdPWo9Pm4oZSkubmFtZT1qKSxwbGFjZWhvbGRlcjoiUHJvamVjdCBuYW1lIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLHQoZyx7bGFiZWw6IkRlc2NyaXB0aW9uIixuYW1lOiJkZXNjcmlwdGlvbiJ9LHtkZWZhdWx0OnUoKCk9Plt0KGgse21vZGVsVmFsdWU6bihlKS5kZXNjcmlwdGlvbiwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVsxXXx8KGlbMV09aj0+bihlKS5kZXNjcmlwdGlvbj1qKSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLHQoZyx7bGFiZWw6IlN0YXR1cyIsbmFtZToic3RhdHVzIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6dSgoKT0+W3Qodyx7bW9kZWxWYWx1ZTpuKGUpLnN0YXR1cywib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVsyXXx8KGlbMl09aj0+bihlKS5zdGF0dXM9aiksaXRlbXM6diwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxQKCJkaXYiLHVlLFt0KHgse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazppWzNdfHwoaVszXT1qPT5tKCJjYW5jZWwiKSl9KSx0KHgse3R5cGU6InN1Ym1pdCIsbGFiZWw6IlNhdmUiLGxvYWRpbmc6YS5sb2FkaW5nfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9LDgsWyJzY2hlbWEiLCJzdGF0ZSJdKX19fSkscGU9T2JqZWN0LmFzc2lnbihtZSx7X19uYW1lOiJQcm9qZWN0Rm9ybSJ9KSxfZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxmZT17Y2xhc3M6ImZsZXgtMSBtaW4tdy0wIn0samU9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LHZlPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIG10LTAuNSB0cnVuY2F0ZSJ9LGJlPSQoe19fbmFtZToiUHJvamVjdEl0ZW0iLHByb3BzOntwcm9qZWN0Ont9fSxlbWl0czpbImVkaXQiLCJkZWxldGUiXSxzZXR1cChhLHtlbWl0OnJ9KXtjb25zdCBzPWEsbT1yLG89W1t7bGFiZWw6IlZpZXciLGljb246ImktbHVjaWRlLWV5ZSIsdG86YC9wcm9qZWN0cy8ke3MucHJvamVjdC5pZH1gfSx7bGFiZWw6IkVkaXQiLGljb246ImktbHVjaWRlLXBlbmNpbCIsb25TZWxlY3Q6KCk9Pm0oImVkaXQiLHMucHJvamVjdCl9LHtsYWJlbDoiRGVsZXRlIixpY29uOiJpLWx1Y2lkZS10cmFzaC0yIixjb2xvcjoiZXJyb3IiLG9uU2VsZWN0OigpPT5tKCJkZWxldGUiLHMucHJvamVjdCl9XV07cmV0dXJuKGUsdik9Pntjb25zdCBwPUcsXz1sZSxpPUIsYj1yZTtyZXR1cm4gZCgpLGYoImRpdiIsX2UsW1AoImRpdiIsZmUsW1AoImRpdiIsamUsW3QocCx7dG86YC9wcm9qZWN0cy8ke2EucHJvamVjdC5pZH1gLGNsYXNzOiJmb250LW1lZGl1bSB0ZXh0LWhpZ2hsaWdodGVkIGhvdmVyOnVuZGVybGluZSB0cnVuY2F0ZSJ9LHtkZWZhdWx0OnUoKCk9PltOKFYoYS5wcm9qZWN0Lm5hbWUpLDEpXSksXzoxfSw4LFsidG8iXSksdChfLHtjb2xvcjphLnByb2plY3Quc3RhdHVzPT09ImFjdGl2ZSI/InN1Y2Nlc3MiOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6dSgoKT0+W04oVihhLnByb2plY3Quc3RhdHVzKSwxKV0pLF86MX0sOCxbImNvbG9yIl0pXSksYS5wcm9qZWN0LmRlc2NyaXB0aW9uPyhkKCksZigicCIsdmUsVihhLnByb2plY3QuZGVzY3JpcHRpb24pLDEpKTpLKCIiLCEwKV0pLHQoYix7aXRlbXM6b30se2RlZmF1bHQ6dSgoKT0+W3QoaSx7aWNvbjoiaS1sdWNpZGUtZWxsaXBzaXMtdmVydGljYWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToic20ifSldKSxfOjF9KV0pfX19KSxnZT1PYmplY3QuYXNzaWduKGJlLHtfX25hbWU6IlByb2plY3RJdGVtIn0pLHllPXtrZXk6MCxjbGFzczoic3BhY2UteS0zIn0sUGU9e2tleToxLGNsYXNzOiJ0ZXh0LWNlbnRlciBweS0xMiB0ZXh0LW11dGVkIn0seGU9e2tleToyLGNsYXNzOiJzcGFjZS15LTMifSwkZT0kKHtfX25hbWU6IlByb2plY3RMaXN0Iixwcm9wczp7cHJvamVjdHM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAoYSx7ZW1pdDpyfSl7Y29uc3Qgcz1yO3JldHVybihtLG8pPT57Y29uc3QgZT1jZSx2PVI7cmV0dXJuIGQoKSxmKCJkaXYiLG51bGwsW2EubG9hZGluZz8oZCgpLGYoImRpdiIseWUsWyhkKCksZihFLG51bGwsQygzLHA9PnQoZSx7a2V5OnAsY2xhc3M6ImgtMTYgcm91bmRlZC1sZyJ9KSksNjQpKV0pKTphLnByb2plY3RzLmxlbmd0aD09PTA/KGQoKSxmKCJkaXYiLFBlLFt0KHYse25hbWU6ImktbHVjaWRlLWZvbGRlci1rYW5iYW4iLGNsYXNzOiJzaXplLTEwIG14LWF1dG8gbWItMyBvcGFjaXR5LTQwIn0pLG9bMl18fChvWzJdPVAoInAiLG51bGwsIk5vIHByb2plY3RzIHlldCIsLTEpKV0pKTooZCgpLGYoImRpdiIseGUsWyhkKCEwKSxmKEUsbnVsbCxDKGEucHJvamVjdHMscD0+KGQoKSxJKGdlLHtrZXk6cC5pZCxwcm9qZWN0OnAsb25FZGl0Om9bMF18fChvWzBdPV89PnMoImVkaXQiLF8pKSxvbkRlbGV0ZTpvWzFdfHwob1sxXT1fPT5zKCJkZWxldGUiLF8pKX0sbnVsbCw4LFsicHJvamVjdCJdKSkpLDEyOCkpXSkpXSl9fX0pLGhlPU9iamVjdC5hc3NpZ24oJGUse19fbmFtZToiUHJvamVjdExpc3QifSksd2U9U3ltYm9sKCJwcm9qZWN0cyIpLFVlPXtjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00In0sSGU9JCh7X19uYW1lOiJpbmRleCIsc2V0dXAoYSl7Sih7dGl0bGU6IlByb2plY3RzIn0pO2NvbnN0IHI9bmUoKSxzPVEoKSxtPVMoITEpLG89UyghMSksZT1TKG51bGwpLHtkYXRhOnYsc3RhdHVzOnAsZXJyb3I6XyxyZWZyZXNoOml9PVcoInByb2plY3RzIiwoKT0+ci5mZXRjaFByb2plY3RzKCkse2RlZmF1bHQ6KCk9PltdfSk7WChfKTtjb25zdCBiPWVlKCgpPT5wLnZhbHVlPT09InBlbmRpbmciKTt0ZSh3ZSx7cHJvamVjdHM6dixmZXRjaFByb2plY3RzOmcsY3JlYXRlUHJvamVjdDpVLHVwZGF0ZVByb2plY3Q6aixkZWxldGVQcm9qZWN0OkR9KTthc3luYyBmdW5jdGlvbiBnKCl7YXdhaXQgaSgpfWZ1bmN0aW9uIGgoKXtlLnZhbHVlPW51bGwsby52YWx1ZT0hMH1mdW5jdGlvbiB3KGwpe2UudmFsdWU9bCxvLnZhbHVlPSEwfWFzeW5jIGZ1bmN0aW9uIHgobCl7bS52YWx1ZT0hMDt0cnl7Y29uc3QgYz0hIWUudmFsdWU7ZS52YWx1ZT9hd2FpdCByLnVwZGF0ZVByb2plY3QoZS52YWx1ZS5pZCxsKTphd2FpdCByLmNyZWF0ZVByb2plY3QobCksYXdhaXQgaSgpLG8udmFsdWU9ITEscy5hZGQoe3RpdGxlOmM/IlByb2plY3QgdXBkYXRlZCI6IlByb2plY3QgY3JlYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goYyl7Y29uc3QgeT1jO3MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOnk/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXttLnZhbHVlPSExfX1hc3luYyBmdW5jdGlvbiBVKGwpe3JldHVybiByLmNyZWF0ZVByb2plY3QobCl9YXN5bmMgZnVuY3Rpb24gaihsLGMpe3JldHVybiByLnVwZGF0ZVByb2plY3QobCxjKX1hc3luYyBmdW5jdGlvbiBEKGwpe2F3YWl0IHIuZGVsZXRlUHJvamVjdChsKSxhd2FpdCBpKCl9YXN5bmMgZnVuY3Rpb24gTyhsKXt0cnl7YXdhaXQgRChsLmlkKSxzLmFkZCh7dGl0bGU6IlByb2plY3QgZGVsZXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goYyl7Y29uc3QgeT1jO3MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOnk/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9fXJldHVybihsLGMpPT57Y29uc3QgeT1CLEw9b2UscT1aO3JldHVybiBkKCksZihFLG51bGwsW3QoTCx7aWQ6InByb2plY3RzIn0se2hlYWRlcjp1KCgpPT5bdChkZSx7dGl0bGU6IlByb2plY3RzIn0se3JpZ2h0OnUoKCk9Plt0KHkse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvamVjdCIsb25DbGljazpjWzBdfHwoY1swXT1rPT5oKCkpfSldKSxfOjF9KV0pLGJvZHk6dSgoKT0+W1AoImRpdiIsVWUsW3QoaGUse3Byb2plY3RzOm4odiksbG9hZGluZzpuKGIpLG9uRWRpdDp3LG9uRGVsZXRlOk99LG51bGwsOCxbInByb2plY3RzIiwibG9hZGluZyJdKV0pXSksXzoxfSksdChxLHtvcGVuOm4obyksIm9uVXBkYXRlOm9wZW4iOmNbMl18fChjWzJdPWs9Plkobyk/by52YWx1ZT1rOm51bGwpLHRpdGxlOm4oZSk/IkVkaXQgcHJvamVjdCI6Ik5ldyBwcm9qZWN0In0se2JvZHk6dSgoKT0+W3QocGUseyJpbml0aWFsLXZhbHVlcyI6bihlKT97Li4ubihlKSxkZXNjcmlwdGlvbjpuKGUpLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOm4obSksb25TdWJtaXQ6eCxvbkNhbmNlbDpjWzFdfHwoY1sxXT1rPT5vLnZhbHVlPSExKX0sbnVsbCw4LFsiaW5pdGlhbC12YWx1ZXMiLCJsb2FkaW5nIl0pXSksXzoxfSw4LFsib3BlbiIsInRpdGxlIl0pXSw2NCl9fX0pO2V4cG9ydHtIZSBhcyBkZWZhdWx0fTsK", "/_nuxt/CqyWrNNx.js": "aW1wb3J0e18gYXMgdX1mcm9tIi4vRFR2WFQtblIuanMiO2ltcG9ydHtffWZyb20iLi9DY01NRjFnOS5qcyI7aW1wb3J0e2YgYXMgcCx1IGFzIGQsbiBhcyBnLG8gYXMgZixoIGFzIGIsdyBhcyBlLGEgYXMgaCxiIGFzIGksTyBhcyB4LGkgYXMgeSxsIGFzIG8sUSBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgTn1mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtfIGFzIFN9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9EeENXUXNubC5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vXzJsU2RyMTMuanMiO2ltcG9ydCIuL0NYb2M0VUVSLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3Qgdz17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCBsZzptYXgtdy0yeGwgbXgtYXV0byJ9LHo9cCh7X19uYW1lOiJzZXR0aW5ncyIsc2V0dXAoQil7ZCh7dGl0bGU6IlNldHRpbmdzIn0pO2NvbnN0IHM9ZygpLG49bygoKT0+cy5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSksYT1vKCgpPT57Y29uc3QgdD1be2xhYmVsOiJHZW5lcmFsIixpY29uOiJpLWx1Y2lkZS11c2VyIix0bzoiL3NldHRpbmdzIixleGFjdDohMH1dO3JldHVybiB0LnB1c2goe2xhYmVsOiJOb3RpZmljYXRpb25zIixpY29uOiJpLWx1Y2lkZS1iZWxsIix0bzoiL3NldHRpbmdzL25vdGlmaWNhdGlvbnMifSksayhuLnZhbHVlLCJiaWxsaW5nOnJlYWQiKSYmdC5wdXNoKHtsYWJlbDoiQmlsbGluZyIsaWNvbjoiaS1sdWNpZGUtY3JlZGl0LWNhcmQiLHRvOiIvc2V0dGluZ3MvYmlsbGluZyJ9KSx0LnB1c2goe2xhYmVsOiJTZWN1cml0eSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkIix0bzoiL3NldHRpbmdzL3NlY3VyaXR5In0pLFt0LFt7bGFiZWw6IkRvY3VtZW50YXRpb24iLGljb246ImktbHVjaWRlLWJvb2stb3BlbiIsdG86Imh0dHBzOi8vdWkubnV4dC5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbGF0aW9uL251eHQiLHRhcmdldDoiX2JsYW5rIn1dXX0pO3JldHVybih0LFUpPT57Y29uc3QgbD11LGM9XyxyPXgsbT1OO3JldHVybiBmKCksYihtLHtpZDoic2V0dGluZ3MiLHVpOntib2R5OiJsZzpweS0xMiJ9fSx7aGVhZGVyOmUoKCk9PltpKFMse3RpdGxlOiJTZXR0aW5ncyJ9KSxpKGMsbnVsbCx7ZGVmYXVsdDplKCgpPT5baShsLHtpdGVtczp5KGEpLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCw4LFsiaXRlbXMiXSldKSxfOjF9KV0pLGJvZHk6ZSgoKT0+W2goImRpdiIsdyxbaShyKV0pXSksXzoxfSl9fX0pO2V4cG9ydHt6IGFzIGRlZmF1bHR9Owo=", "/_nuxt/CsK51qtd.js": "aW1wb3J0e199ZnJvbSIuL0RUdlhULW5SLmpzIjtpbXBvcnR7XyBhcyBwfWZyb20iLi9DY01NRjFnOS5qcyI7aW1wb3J0e2YgYXMgdSx1IGFzIGQsbiBhcyBmLG8gYXMgZyxoIGFzIGIsdyBhcyB0LGEgYXMgaCxiIGFzIG8sTyBhcyB4LGkgYXMgeixsIGFzIGUsUSBhcyB2fWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgd31mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtfIGFzIHl9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9EeENXUXNubC5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vXzJsU2RyMTMuanMiO2ltcG9ydCIuL0NYb2M0VUVSLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgTj17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCBsZzptYXgtdy00eGwgbXgtYXV0byJ9LFQ9dSh7X19uYW1lOiJvcmdhbml6YXRpb24iLHNldHVwKFUpe2Qoe3RpdGxlOiJPcmdhbml6YXRpb24ifSk7Y29uc3QgYT1mKCksbj1lKCgpPT5hLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxzPWUoKCk9Pntjb25zdCBpPVt7bGFiZWw6IkdlbmVyYWwiLGljb246ImktbHVjaWRlLWJ1aWxkaW5nIix0bzoiL29yZ2FuaXphdGlvbiIsZXhhY3Q6ITB9LHtsYWJlbDoiTWVtYmVycyIsaWNvbjoiaS1sdWNpZGUtdXNlcnMiLHRvOiIvb3JnYW5pemF0aW9uL21lbWJlcnMifSx7bGFiZWw6IlJvbGVzIixpY29uOiJpLWx1Y2lkZS1zaGllbGQiLHRvOiIvb3JnYW5pemF0aW9uL3JvbGVzIn1dO3JldHVybiB2KG4udmFsdWUsImJpbGxpbmc6cmVhZCIpJiZpLnB1c2goe2xhYmVsOiJJbnZvaWNlIixpY29uOiJpLWx1Y2lkZS1maWxlLXRleHQiLHRvOiIvb3JnYW5pemF0aW9uL2ludm9pY2UifSksW2ldfSk7cmV0dXJuKGksJCk9Pntjb25zdCByPV8sbD1wLGM9eCxtPXc7cmV0dXJuIGcoKSxiKG0se2lkOiJvcmdhbml6YXRpb24iLHVpOntib2R5OiJsZzpweS0xMiJ9fSx7aGVhZGVyOnQoKCk9PltvKHkse3RpdGxlOiJPcmdhbml6YXRpb24ifSksbyhsLG51bGwse2RlZmF1bHQ6dCgoKT0+W28ocix7aXRlbXM6eihzKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXSksXzoxfSldKSxib2R5OnQoKCk9PltoKCJkaXYiLE4sW28oYyldKV0pLF86MX0pfX19KTtleHBvcnR7VCBhcyBkZWZhdWx0fTsK", "/_nuxt/Cta15sG-.js": "aW1wb3J0e3IgYXMgayxiRiBhcyBBLFIgYXMgSSxjNSBhcyBGLGJiIGFzIEIsYWUgYXMgVixhNiBhcyBILGE3IGFzIHEsYXggYXMgSixpIGFzIE4sYzYgYXMgVyxHIGFzIHgsbCBhcyBULEogYXMgJCxLIGFzIEcsbyBhcyBLLGggYXMgWSx3IGFzIFEsTCBhcyBaLE0gYXMgZWUsUCBhcyB0ZSxOIGFzIFh9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBvZT0oKCk9Pntjb25zdCBlPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShudWxsKSxlfSkoKTtmdW5jdGlvbiBuZShlLGkpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzdHIgbXVzdCBiZSBhIHN0cmluZyIpO2NvbnN0IG89bmV3IG9lLHQ9aXx8e30sbj10LmRlY29kZXx8aWU7bGV0IHM9MDtmb3IoO3M8ZS5sZW5ndGg7KXtjb25zdCBhPWUuaW5kZXhPZigiPSIscyk7aWYoYT09PS0xKWJyZWFrO2xldCBsPWUuaW5kZXhPZigiOyIscyk7aWYobD09PS0xKWw9ZS5sZW5ndGg7ZWxzZSBpZihsPGEpe3M9ZS5sYXN0SW5kZXhPZigiOyIsYS0xKSsxO2NvbnRpbnVlfWNvbnN0IHU9ZS5zbGljZShzLGEpLnRyaW0oKTtpZih0Py5maWx0ZXImJiF0Py5maWx0ZXIodSkpe3M9bCsxO2NvbnRpbnVlfWlmKG9bdV09PT12b2lkIDApe2xldCBmPWUuc2xpY2UoYSsxLGwpLnRyaW0oKTtmLmNvZGVQb2ludEF0KDApPT09MzQmJihmPWYuc2xpY2UoMSwtMSkpLG9bdV09YWUoZixuKX1zPWwrMX1yZXR1cm4gb31mdW5jdGlvbiBpZShlKXtyZXR1cm4gZS5pbmNsdWRlcygiJSIpP2RlY29kZVVSSUNvbXBvbmVudChlKTplfWZ1bmN0aW9uIGFlKGUsaSl7dHJ5e3JldHVybiBpKGUpfWNhdGNoe3JldHVybiBlfX1jb25zdCBNPS9eW1x1MDAwOVx1MDAyMC1cdTAwN0VcdTAwODAtXHUwMEZGXSskLztmdW5jdGlvbiBVKGUsaSxvKXtjb25zdCB0PW98fHt9LG49dC5lbmNvZGV8fGVuY29kZVVSSUNvbXBvbmVudDtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZW5jb2RlIGlzIGludmFsaWQiKTtpZighTS50ZXN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IG5hbWUgaXMgaW52YWxpZCIpO2NvbnN0IHM9bihpKTtpZihzJiYhTS50ZXN0KHMpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHZhbCBpcyBpbnZhbGlkIik7bGV0IGE9ZSsiPSIrcztpZih0Lm1heEFnZSE9PXZvaWQgMCYmdC5tYXhBZ2UhPT1udWxsKXtjb25zdCBsPXQubWF4QWdlLTA7aWYoTnVtYmVyLmlzTmFOKGwpfHwhTnVtYmVyLmlzRmluaXRlKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiBtYXhBZ2UgaXMgaW52YWxpZCIpO2ErPSI7IE1heC1BZ2U9IitNYXRoLmZsb29yKGwpfWlmKHQuZG9tYWluKXtpZighTS50ZXN0KHQuZG9tYWluKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZG9tYWluIGlzIGludmFsaWQiKTthKz0iOyBEb21haW49Iit0LmRvbWFpbn1pZih0LnBhdGgpe2lmKCFNLnRlc3QodC5wYXRoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gcGF0aCBpcyBpbnZhbGlkIik7YSs9IjsgUGF0aD0iK3QucGF0aH1pZih0LmV4cGlyZXMpe2lmKCFyZSh0LmV4cGlyZXMpfHxOdW1iZXIuaXNOYU4odC5leHBpcmVzLnZhbHVlT2YoKSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIGV4cGlyZXMgaXMgaW52YWxpZCIpO2ErPSI7IEV4cGlyZXM9Iit0LmV4cGlyZXMudG9VVENTdHJpbmcoKX1pZih0Lmh0dHBPbmx5JiYoYSs9IjsgSHR0cE9ubHkiKSx0LnNlY3VyZSYmKGErPSI7IFNlY3VyZSIpLHQucHJpb3JpdHkpc3dpdGNoKHR5cGVvZiB0LnByaW9yaXR5PT0ic3RyaW5nIj90LnByaW9yaXR5LnRvTG93ZXJDYXNlKCk6dC5wcmlvcml0eSl7Y2FzZSJsb3ciOnthKz0iOyBQcmlvcml0eT1Mb3ciO2JyZWFrfWNhc2UibWVkaXVtIjp7YSs9IjsgUHJpb3JpdHk9TWVkaXVtIjticmVha31jYXNlImhpZ2giOnthKz0iOyBQcmlvcml0eT1IaWdoIjticmVha31kZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiBwcmlvcml0eSBpcyBpbnZhbGlkIil9aWYodC5zYW1lU2l0ZSlzd2l0Y2godHlwZW9mIHQuc2FtZVNpdGU9PSJzdHJpbmciP3Quc2FtZVNpdGUudG9Mb3dlckNhc2UoKTp0LnNhbWVTaXRlKXtjYXNlITA6e2ErPSI7IFNhbWVTaXRlPVN0cmljdCI7YnJlYWt9Y2FzZSJsYXgiOnthKz0iOyBTYW1lU2l0ZT1MYXgiO2JyZWFrfWNhc2Uic3RyaWN0Ijp7YSs9IjsgU2FtZVNpdGU9U3RyaWN0IjticmVha31jYXNlIm5vbmUiOnthKz0iOyBTYW1lU2l0ZT1Ob25lIjticmVha31kZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiBzYW1lU2l0ZSBpcyBpbnZhbGlkIil9cmV0dXJuIHQucGFydGl0aW9uZWQmJihhKz0iOyBQYXJ0aXRpb25lZCIpLGF9ZnVuY3Rpb24gcmUoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PSJbb2JqZWN0IERhdGVdInx8ZSBpbnN0YW5jZW9mIERhdGV9ZnVuY3Rpb24gZyhlKXtpZih0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuIGU7dmFyIGksbyx0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtpZih0PT09IltvYmplY3QgT2JqZWN0XSIpe2lmKGUuY29uc3RydWN0b3IhPT1PYmplY3QmJnR5cGVvZiBlLmNvbnN0cnVjdG9yPT0iZnVuY3Rpb24iKXtvPW5ldyBlLmNvbnN0cnVjdG9yO2ZvcihpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmb1tpXSE9PWVbaV0mJihvW2ldPWcoZVtpXSkpfWVsc2V7bz17fTtmb3IoaSBpbiBlKWk9PT0iX19wcm90b19fIj9PYmplY3QuZGVmaW5lUHJvcGVydHkobyxpLHt2YWx1ZTpnKGVbaV0pLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6b1tpXT1nKGVbaV0pfXJldHVybiBvfWlmKHQ9PT0iW29iamVjdCBBcnJheV0iKXtmb3IoaT1lLmxlbmd0aCxvPUFycmF5KGkpO2ktLTspb1tpXT1nKGVbaV0pO3JldHVybiBvfXJldHVybiB0PT09IltvYmplY3QgU2V0XSI/KG89bmV3IFNldCxlLmZvckVhY2goZnVuY3Rpb24obil7by5hZGQoZyhuKSl9KSxvKTp0PT09IltvYmplY3QgTWFwXSI/KG89bmV3IE1hcCxlLmZvckVhY2goZnVuY3Rpb24obixzKXtvLnNldChnKHMpLGcobikpfSksbyk6dD09PSJbb2JqZWN0IERhdGVdIj9uZXcgRGF0ZSgrZSk6dD09PSJbb2JqZWN0IFJlZ0V4cF0iPyhvPW5ldyBSZWdFeHAoZS5zb3VyY2UsZS5mbGFncyksby5sYXN0SW5kZXg9ZS5sYXN0SW5kZXgsbyk6dD09PSJbb2JqZWN0IERhdGFWaWV3XSI/bmV3IGUuY29uc3RydWN0b3IoZyhlLmJ1ZmZlcikpOnQ9PT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iP2Uuc2xpY2UoMCk6dC5zbGljZSgtNik9PT0iQXJyYXldIj9uZXcgZS5jb25zdHJ1Y3RvcihlKTplfWZ1bmN0aW9uIHNlKGUpe2lmKGUhPT0idW5kZWZpbmVkIil0cnl7Y29uc3QgaT1KU09OLnBhcnNlKGUpO3JldHVybiB0eXBlb2YgaT09Im51bWJlciImJlN0cmluZyhpKSE9PWU/ZTppfWNhdGNoe3JldHVybiBlfX1jb25zdCBsZT17cGF0aDoiLyIsd2F0Y2g6ITAsZGVjb2RlOmU9PnNlKGRlY29kZVVSSUNvbXBvbmVudChlKSksZW5jb2RlOmU9PntpZih0eXBlb2YgZSE9InN0cmluZyJ8fGU9PT0idW5kZWZpbmVkIilyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGUpKTt0cnl7aWYodHlwZW9mIEpTT04ucGFyc2UoZSkhPSJzdHJpbmciKXJldHVybiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe31yZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpfSxyZWZyZXNoOiExfSxMPWdsb2JhbFRoaXMuY29va2llU3RvcmU7ZnVuY3Rpb24gdWUoZSxpKXtjb25zdCBvPXsuLi5sZSwuLi5pfTtvLmZpbHRlcj8/PWY9PmY9PT1lO2NvbnN0IHQ9XyhvKXx8e307bGV0IG47by5tYXhBZ2UhPT12b2lkIDA/bj1vLm1heEFnZSoxZTM6by5leHBpcmVzJiYobj1vLmV4cGlyZXMuZ2V0VGltZSgpLURhdGUubm93KCkpO2NvbnN0IHM9biE9PXZvaWQgMCYmbjw9MCxhPXN8fHRbZV09PT12b2lkIDB8fHRbZV09PT1udWxsLGw9ZyhzP3ZvaWQgMDp0W2VdPz9vLmRlZmF1bHQ/LigpKSx1PW4mJiFzP2RlKGwsbixvLndhdGNoJiZvLndhdGNoIT09InNoYWxsb3ciKTprKGwpO3tsZXQgZj1udWxsO3RyeXshTCYmdHlwZW9mIEJyb2FkY2FzdENoYW5uZWw8InUiJiYoZj1uZXcgQnJvYWRjYXN0Q2hhbm5lbChgbnV4dDpjb29raWVzOiR7ZX1gKSl9Y2F0Y2h7fWNvbnN0IHY9KG09ITEpPT57IW0mJihvLnJlYWRvbmx5fHxWKHUudmFsdWUsdFtlXSkpfHwoZmUoZSx1LnZhbHVlLG8pLHRbZV09Zyh1LnZhbHVlKSxmPy5wb3N0TWVzc2FnZSh7dmFsdWU6by5lbmNvZGUodS52YWx1ZSl9KSl9LFM9bT0+e2NvbnN0IHo9bS5yZWZyZXNoP18obyk/LltlXTpvLmRlY29kZShtLnZhbHVlKTtwPSEwLHUudmFsdWU9eix0W2VdPWcoeiksSCgoKT0+e3A9ITF9KX07bGV0IHA9ITE7Y29uc3QgUj0hIUYoKTtpZihSJiZBKCgpPT57cD0hMCx2KCksZj8uY2xvc2UoKX0pLEwpe2NvbnN0IG09ej0+e2NvbnN0IEQ9ei5jaGFuZ2VkLmZpbmQodz0+dy5uYW1lPT09ZSksTz16LmRlbGV0ZWQuZmluZCh3PT53Lm5hbWU9PT1lKTtEJiZTKHt2YWx1ZTpELnZhbHVlfSksTyYmUyh7dmFsdWU6bnVsbH0pfTtMLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsbSksUiYmQSgoKT0+TC5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLG0pKX1lbHNlIGYmJihmLm9ubWVzc2FnZT0oe2RhdGE6bX0pPT5TKG0pKTtvLndhdGNoJiZJKHUsKCk9PntwfHx2KG8ucmVmcmVzaCl9LHtkZWVwOm8ud2F0Y2ghPT0ic2hhbGxvdyJ9KSxhJiZ2KGEpfXJldHVybiB1fWZ1bmN0aW9uIF8oZT17fSl7cmV0dXJuIG5lKGRvY3VtZW50LmNvb2tpZSxlKX1mdW5jdGlvbiBjZShlLGksbz17fSl7cmV0dXJuIGk9PW51bGw/VShlLGksey4uLm8sbWF4QWdlOi0xfSk6VShlLGksbyl9ZnVuY3Rpb24gZmUoZSxpLG89e30pe2RvY3VtZW50LmNvb2tpZT1jZShlLGksbyl9Y29uc3QgUD0yMTQ3NDgzNjQ3O2Z1bmN0aW9uIGRlKGUsaSxvKXtsZXQgdCxuLHM9MDtjb25zdCBhPW8/ayhlKTp7dmFsdWU6ZX07cmV0dXJuIEYoKSYmQSgoKT0+e24/LigpLGNsZWFyVGltZW91dCh0KX0pLEIoKGwsdSk9PntvJiYobj1JKGEsdSkpO2Z1bmN0aW9uIGYoKXtjb25zdCBTPWktcyxwPVM8UD9TOlA7dD1zZXRUaW1lb3V0KCgpPT57aWYocys9cCxzPGkpcmV0dXJuIGYoKTthLnZhbHVlPXZvaWQgMCx1KCl9LHApfWZ1bmN0aW9uIHYoKXtzPTAsY2xlYXJUaW1lb3V0KHQpLGYoKX1yZXR1cm57Z2V0KCl7cmV0dXJuIGwoKSxhLnZhbHVlfSxzZXQoUyl7digpLGEudmFsdWU9Uyx1KCl9fX0pfWNvbnN0W21lLGhlXT1xKCJEYXNoYm9hcmRHcm91cCIpO2Z1bmN0aW9uIGJlKGUsaT17fSx7Y29sbGFwc2VkOm89ayghMSl9PXt9KXtjb25zdCB0PWsobnVsbCksbj1UKCgpPT4oe3NpZGU6ImxlZnQiLG1pblNpemU6MCxtYXhTaXplOjEwMCxkZWZhdWx0U2l6ZTowLHN0b3JhZ2U6ImNvb2tpZSIscGVyc2lzdGVudDohMCxjb2xsYXBzaWJsZTohMSxjb2xsYXBzZWRTaXplOjAscmVzaXphYmxlOiEwLHVuaXQ6IiUiLC4uLngoaSk/aS52YWx1ZTppfSkpLHtkaXI6c309SigpLGE9e3NpemU6bi52YWx1ZS5kZWZhdWx0U2l6ZSxjb2xsYXBzZWQ6TihvKT8/ITF9LGw9bi52YWx1ZS5wZXJzaXN0ZW50JiYobi52YWx1ZS5yZXNpemFibGV8fG4udmFsdWUuY29sbGFwc2libGUpP24udmFsdWUuc3RvcmFnZT09PSJjb29raWUiP3VlKGUse2RlZmF1bHQ6KCk9PmF9KTpXKGUsYSk6ayhhKSx1PVQoe2dldDooKT0+bC52YWx1ZS5jb2xsYXBzZWQsc2V0OnI9PntuLnZhbHVlLmNvbGxhcHNpYmxlJiYoeChvKSYmKG8udmFsdWU9ciksbC52YWx1ZS5jb2xsYXBzZWQ9cil9fSksZj1rKG4udmFsdWUuZGVmYXVsdFNpemUpLHY9VCh7Z2V0OigpPT5sLnZhbHVlLnNpemUsc2V0OnI9PntsLnZhbHVlLnNpemU9cn19KSxTPVQoKCk9PnUudmFsdWU/bi52YWx1ZS5jb2xsYXBzZWRTaXplOnYudmFsdWUpLHA9ayghMSksUj0ocixjLEMpPT57aWYoIXQudmFsdWV8fCFuLnZhbHVlLnJlc2l6YWJsZSlyZXR1cm47Y29uc3QgRT10LnZhbHVlLnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRofHwxLHk9cy52YWx1ZT09PSJydGwiO2xldCBkO3k/ZD1uLnZhbHVlLnNpZGU9PT0ibGVmdCI/Yy1yLmNsaWVudFg6ci5jbGllbnRYLWM6ZD1uLnZhbHVlLnNpZGU9PT0ibGVmdCI/ci5jbGllbnRYLWM6Yy1yLmNsaWVudFg7Y29uc3QgaD1DK2Q7bGV0IGI7aWYobi52YWx1ZS51bml0PT09InJlbSIpe2NvbnN0IGo9TnVtYmVyLnBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKTtiPWgvan1lbHNlIG4udmFsdWUudW5pdD09PSJweCI/Yj1oOmI9aC9FKjEwMDtpZihuLnZhbHVlLmNvbGxhcHNpYmxlJiZiPG4udmFsdWUuY29sbGFwc2VkU2l6ZSs0KXt3KCEwKTtyZXR1cm59ZWxzZSB1LnZhbHVlJiZ3KCExKTt2LnZhbHVlPU1hdGgubWluKG4udmFsdWUubWF4U2l6ZSxNYXRoLm1heChuLnZhbHVlLm1pblNpemUsYikpfSxtPXI9PntpZighdC52YWx1ZXx8IW4udmFsdWUucmVzaXphYmxlKXJldHVybjtyLnByZXZlbnREZWZhdWx0KCksci5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBjPXQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7aWYoIWMpcmV0dXJuO2NvbnN0IEM9ci5jbGllbnRYLEU9YztwLnZhbHVlPSEwO2NvbnN0IHk9aD0+e1IoaCxDLEUpfSxkPSgpPT57cC52YWx1ZT0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGQpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHkpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGQpfSx6PShyLGMsQyk9PntpZighdC52YWx1ZXx8IW4udmFsdWUucmVzaXphYmxlfHwhci50b3VjaGVzWzBdKXJldHVybjtjb25zdCBFPXQudmFsdWUucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGh8fDEseT1zLnZhbHVlPT09InJ0bCI7bGV0IGQ7eT9kPW4udmFsdWUuc2lkZT09PSJsZWZ0Ij9jLXIudG91Y2hlc1swXS5jbGllbnRYOnIudG91Y2hlc1swXS5jbGllbnRYLWM6ZD1uLnZhbHVlLnNpZGU9PT0ibGVmdCI/ci50b3VjaGVzWzBdLmNsaWVudFgtYzpjLXIudG91Y2hlc1swXS5jbGllbnRYO2NvbnN0IGg9QytkO2xldCBiO2lmKG4udmFsdWUudW5pdD09PSJyZW0iKXtjb25zdCBqPU51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSk7Yj1oL2p9ZWxzZSBuLnZhbHVlLnVuaXQ9PT0icHgiP2I9aDpiPWgvRSoxMDA7aWYobi52YWx1ZS5jb2xsYXBzaWJsZSYmYjxuLnZhbHVlLmNvbGxhcHNlZFNpemUrNCl7dyghMCk7cmV0dXJufWVsc2UgdS52YWx1ZSYmdyghMSk7di52YWx1ZT1NYXRoLm1pbihuLnZhbHVlLm1heFNpemUsTWF0aC5tYXgobi52YWx1ZS5taW5TaXplLGIpKX0sRD1yPT57aWYoIXQudmFsdWV8fCFuLnZhbHVlLnJlc2l6YWJsZXx8IXIudG91Y2hlc1swXSlyZXR1cm47ci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3QgYz10LnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO2lmKCFjKXJldHVybjtjb25zdCBDPXIudG91Y2hlc1swXS5jbGllbnRYLEU9YztwLnZhbHVlPSEwO2NvbnN0IHk9aD0+e3ooaCxDLEUpfSxkPSgpPT57cC52YWx1ZT0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixkKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsZCl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIseSx7cGFzc2l2ZTohMX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixkKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsZCl9LE89cj0+eyF0LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGV8fChyLnByZXZlbnREZWZhdWx0KCksci5zdG9wUHJvcGFnYXRpb24oKSx1LnZhbHVlJiZ3KCExKSx2LnZhbHVlPW4udmFsdWUuZGVmYXVsdFNpemUpfSx3PXI9PntpZighbi52YWx1ZS5jb2xsYXBzaWJsZSlyZXR1cm47Y29uc3QgYz1yPz8hdS52YWx1ZTtjJiYhdS52YWx1ZT9mLnZhbHVlPXYudmFsdWU6IWMmJnUudmFsdWUmJih2LnZhbHVlPWYudmFsdWUpLHUudmFsdWU9Y307cmV0dXJuIHgobykmJmwudmFsdWUuY29sbGFwc2VkJiYoby52YWx1ZT1sLnZhbHVlLmNvbGxhcHNlZCkseChvKSYmSShvLHI9PntuLnZhbHVlLmNvbGxhcHNpYmxlJiZsLnZhbHVlLmNvbGxhcHNlZCE9PXImJihsLnZhbHVlLmNvbGxhcHNlZD1yKX0pLHtlbDp0LHNpemU6Uyxpc0RyYWdnaW5nOnAsaXNDb2xsYXBzZWQ6dSxvbk1vdXNlRG93bjptLG9uVG91Y2hTdGFydDpELG9uRG91YmxlQ2xpY2s6Tyxjb2xsYXBzZTp3fX1jb25zdCBwZT17YmFzZToiaGlkZGVuIGxnOmJsb2NrIHRvdWNoLW5vbmUgc2VsZWN0LW5vbmUgY3Vyc29yLWV3LXJlc2l6ZSByZWxhdGl2ZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOmluc2V0LXktMCBiZWZvcmU6LWxlZnQtMS41IGJlZm9yZTotcmlnaHQtMS41IGJlZm9yZTp6LTEifSxnZT17X19uYW1lOiJVRGFzaGJvYXJkUmVzaXplSGFuZGxlIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgaT1lLG89JCgpLHQ9RygiZGFzaGJvYXJkUmVzaXplSGFuZGxlIixpKSxuPVQoKCk9Plgoe2V4dGVuZDpYKHBlKSwuLi5vLnVpPy5kYXNoYm9hcmRSZXNpemVIYW5kbGV8fHt9fSkpO3JldHVybihzLGEpPT4oSygpLFkoTih0ZSkse2FzOmUuYXMscm9sZToic2VwYXJhdG9yIixjbGFzczplZShuLnZhbHVlKHtjbGFzczpbTih0KT8uYmFzZSxpLmNsYXNzXX0pKX0se2RlZmF1bHQ6USgoKT0+W1oocy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX07ZXhwb3J0e2dlIGFzIF8sYmUgYXMgYSx1ZSBhcyBiLGhlIGFzIHAsbWUgYXMgdX07Cg==", "/_nuxt/CxcZrY3W.js": "aW1wb3J0e2YgYXMgQyx4IGFzIFUseSBhcyAkLG4gYXMgQSxnIGFzIE4scCBhcyBTLHogYXMgQix1IGFzIEksbyBhcyBhLGMgYXMgcyxiIGFzIGwsQSBhcyBqLGkgYXMgZSx3IGFzIG0sYSBhcyBvLGogYXMgeixrIGFzIFYsZCBhcyBwLHQgYXMgXyxGLHYgYXMgayxCIGFzIFQsciBhcyBEfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgRX1mcm9tIi4vQlNSS3FHclAuanMiO2NvbnN0IEo9e2NsYXNzOiJtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00In0sTz17a2V5OjAsY2xhc3M6InRleHQtY2VudGVyIHB5LTQifSxSPXtrZXk6MSxjbGFzczoic3BhY2UteS00In0sSD17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LE09e2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIn0sTD1DKHtfX25hbWU6Ilt0b2tlbl0iLHNldHVwKFkpe2NvbnN0IHk9VSgpLGM9JCgpLHU9eS5wYXJhbXMudG9rZW4sZj1UKCksaT1BKCksdj1OKCkse2RhdGE6bixlcnJvcjpnfT1TKGBpbnZpdGF0aW9uLSR7dX1gLCgpPT5mLmZldGNoSW52aXRhdGlvbih1KSk7QihnKSxJKHt0aXRsZTooKT0+bi52YWx1ZT9gSm9pbiAke24udmFsdWUub3JnLm5hbWV9YDoiSW52aXRhdGlvbiJ9KTtjb25zdCBkPUQoITEpO2FzeW5jIGZ1bmN0aW9uIGgoKXtpZighaS5jdXJyZW50VXNlcil7YXdhaXQgYy5wdXNoKCIvYXV0aC9sb2dpbiIpO3JldHVybn1kLnZhbHVlPSEwO3RyeXtjb25zdCByPWF3YWl0IGYuYWNjZXB0SW52aXRhdGlvbih1KTthd2FpdCBpLmZldGNoQ3VycmVudFVzZXIoKSx2LmFkZCh7dGl0bGU6YEpvaW5lZCAke3Iub3JnLm5hbWV9YCxjb2xvcjoic3VjY2VzcyJ9KSxhd2FpdCBjLnB1c2goIi9kYXNoYm9hcmQiKX1jYXRjaChyKXtjb25zdCB0PXI7di5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gYWNjZXB0IGludml0YXRpb24iLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtkLnZhbHVlPSExfX1yZXR1cm4ocix0KT0+e2NvbnN0IHc9Vix4PXosYj1FO3JldHVybiBhKCkscygiZGl2IixKLFtsKGIse2NsYXNzOiJ3LWZ1bGwgbWF4LXctbWQifSxqKHtoZWFkZXI6bSgoKT0+W3RbMV18fCh0WzFdPW8oInAiLHtjbGFzczoidGV4dC1sZyBmb250LXNlbWlib2xkIn0sIiBPcmdhbml6YXRpb24gaW52aXRhdGlvbiAiLC0xKSldKSxkZWZhdWx0Om0oKCk9PltlKGcpfHwhZShuKT8oYSgpLHMoImRpdiIsTyxbbCh3LHtuYW1lOiJpLWx1Y2lkZS1jaXJjbGUteCIsY2xhc3M6InNpemUtMTIgdGV4dC1lcnJvciBteC1hdXRvIG1iLTMifSksdFsyXXx8KHRbMl09bygicCIse2NsYXNzOiJmb250LW1lZGl1bSJ9LCIgSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCAiLC0xKSksdFszXXx8KHRbM109bygicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSJ9LCIgVGhlIGludml0YXRpb24gbGluayBtYXkgaGF2ZSBiZWVuIHJldm9rZWQgb3IgaXMgbm8gbG9uZ2VyIHZhbGlkLiAiLC0xKSldKSk6KGEoKSxzKCJkaXYiLFIsW28oInAiLG51bGwsW3RbNV18fCh0WzVdPXAoIiBZb3UgaGF2ZSBiZWVuIGludml0ZWQgdG8gam9pbiAiLC0xKSksbygic3Ryb25nIixudWxsLF8oZShuKS5vcmcubmFtZSksMSksZShuKS5yb2xlTmFtZT8oYSgpLHMoRix7a2V5OjB9LFt0WzRdfHwodFs0XT1wKCIgYXMgYSAiLC0xKSksbygic3Ryb25nIixudWxsLF8oZShuKS5yb2xlTmFtZSksMSldLDY0KSk6aygiIiwhMCksdFs2XXx8KHRbNl09cCgiLiAiLC0xKSldKSxlKGkpLmN1cnJlbnRVc2VyP2soIiIsITApOihhKCkscygiZGl2IixILCIgU2lnbiBpbiB0byBhY2NlcHQgdGhpcyBpbnZpdGF0aW9uLiAiKSldKSldKSxfOjJ9LFtlKG4pP3tuYW1lOiJmb290ZXIiLGZuOm0oKCk9PltvKCJkaXYiLE0sW2woeCx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOnRbMF18fCh0WzBdPXE9PmUoYykucHVzaCgiLyIpKX0pLGwoeCx7bGFiZWw6ZShpKS5jdXJyZW50VXNlcj8iQWNjZXB0IGludml0YXRpb24iOiJTaWduIGluIHRvIGFjY2VwdCIsbG9hZGluZzplKGQpLG9uQ2xpY2s6aH0sbnVsbCw4LFsibGFiZWwiLCJsb2FkaW5nIl0pXSldKSxrZXk6IjAifTp2b2lkIDBdKSwxMDI0KV0pfX19KTtleHBvcnR7TCBhcyBkZWZhdWx0fTsK", "/_nuxt/DHCwELWp.js": "aW1wb3J0e2FlIGFzIFEsYTcgYXMgZWUsZiBhcyBILGF1IGFzIEFlLGEzIGFzICQsYzcgYXMgSWUsYmMgYXMgTGUsYTkgYXMgZmUsUiBhcyBTZSxhNiBhcyBOLG8gYXMgayxoIGFzIHEsdyBhcyBWLEwgYXMgUCxpIGFzIG8sdiBhcyBwZSxQIGFzIEQsYmUgYXMgdmUsYWYgYXMgcWUsciBhcyBMLGJmIGFzIEosYzAgYXMgbWUsYiBhcyBoZSxaIGFzIHosYWIgYXMgdGUsYzggYXMgVmUsYTQgYXMgS2UsYTUgYXMgVGUsbCBhcyBCLGEyIGFzIGdlLGFhIGFzIGFlLGE4IGFzIHllLGM5IGFzIEJlLGNhIGFzIEhlLGFoIGFzIFJlLGNiIGFzIFBlLGJrIGFzIERlLGNjIGFzIE1lLGMgYXMgcmUsRiBhcyB1ZSxxIGFzIE5lLGFjIGFzIHplLGFFIGFzIE9lLGNkIGFzICRlLGJ0IGFzIEdlfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e2cgYXMgVWUsTSBhcyBXZX1mcm9tIi4vQnQ4UzBkbWwuanMiO2ltcG9ydHtWIGFzIGplfWZyb20iLi9tMjBrZEd4VS5qcyI7aW1wb3J0e3UgYXMgWWV9ZnJvbSIuL0M3WXk2dFIzLmpzIjtmdW5jdGlvbiBPKG4sYSxpKXtjb25zdCBlPW4uZmluZEluZGV4KHA9PlEocCxhKSksZj1uLmZpbmRJbmRleChwPT5RKHAsaSkpO2lmKGU9PT0tMXx8Zj09PS0xKXJldHVybltdO2NvbnN0W2QsbV09W2UsZl0uc29ydCgocCxoKT0+cC1oKTtyZXR1cm4gbi5zbGljZShkLG0rMSl9ZnVuY3Rpb24gWGUoKXtyZXR1cm57QUxUOiJBbHQiLEFSUk9XX0RPV046IkFycm93RG93biIsQVJST1dfTEVGVDoiQXJyb3dMZWZ0IixBUlJPV19SSUdIVDoiQXJyb3dSaWdodCIsQVJST1dfVVA6IkFycm93VXAiLEJBQ0tTUEFDRToiQmFja3NwYWNlIixDQVBTX0xPQ0s6IkNhcHNMb2NrIixDT05UUk9MOiJDb250cm9sIixERUxFVEU6IkRlbGV0ZSIsRU5EOiJFbmQiLEVOVEVSOiJFbnRlciIsRVNDQVBFOiJFc2NhcGUiLEYxOiJGMSIsRjEwOiJGMTAiLEYxMToiRjExIixGMTI6IkYxMiIsRjI6IkYyIixGMzoiRjMiLEY0OiJGNCIsRjU6IkY1IixGNjoiRjYiLEY3OiJGNyIsRjg6IkY4IixGOToiRjkiLEhPTUU6IkhvbWUiLE1FVEE6Ik1ldGEiLFBBR0VfRE9XTjoiUGFnZURvd24iLFBBR0VfVVA6IlBhZ2VVcCIsU0hJRlQ6IlNoaWZ0IixTUEFDRToiICIsVEFCOiJUYWIiLENUUkw6IkNvbnRyb2wiLEFTVEVSSVNLOiIqIixTUEFDRV9DT0RFOiJTcGFjZSJ9fWZ1bmN0aW9uIGRlKG4pe3JldHVybiBuPy5xdWVyeVNlbGVjdG9yKCJbZGF0YS1zdGF0ZT1jaGVja2VkXSIpfWZ1bmN0aW9uIFplKG4sYSxpKXtyZXR1cm4gbj09PXZvaWQgMD8hMTpBcnJheS5pc0FycmF5KG4pP24uc29tZShlPT5TKGUsYSxpKSk6UyhuLGEsaSl9ZnVuY3Rpb24gUyhuLGEsaSl7cmV0dXJuIG49PT12b2lkIDB8fGE9PT12b2lkIDA/ITE6dHlwZW9mIG49PSJzdHJpbmciP249PT1hOnR5cGVvZiBpPT0iZnVuY3Rpb24iP2kobixhKTp0eXBlb2YgaT09InN0cmluZyI/bj8uW2ldPT09YT8uW2ldOlEobixhKX1jb25zdFtHLEplXT1lZSgiTGlzdGJveFJvb3QiKTt2YXIgUWU9SCh7X19uYW1lOiJMaXN0Ym94Um9vdCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2ZXJ0aWNhbCJ9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNlbGVjdGlvbkJlaGF2aW9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ0b2dnbGUifSxoaWdobGlnaHRPbkhvdmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsImVudHJ5Rm9jdXMiLCJsZWF2ZSJdLHNldHVwKG4se2V4cG9zZTphLGVtaXQ6aX0pe2NvbnN0IGU9bixmPWkse211bHRpcGxlOmQsaGlnaGxpZ2h0T25Ib3ZlcjptLG9yaWVudGF0aW9uOnAsZGlzYWJsZWQ6aCxzZWxlY3Rpb25CZWhhdmlvcjpFLGRpcjpffT1BZShlKSx7Z2V0SXRlbXM6Yn09JCh7aXNQcm92aWRlcjohMH0pLHtoYW5kbGVUeXBlYWhlYWRTZWFyY2g6bH09SWUoKSx7cHJpbWl0aXZlRWxlbWVudDpjLGN1cnJlbnRFbGVtZW50OnJ9PXZlKCksdj1YZSgpLEM9TGUoXyksRj1xZShyKSx3PUwoKSxLPUwoITEpLFQ9TCghMCksZz1mZShlLCJtb2RlbFZhbHVlIixmLHtkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0VmFsdWU/PyhkLnZhbHVlP1tdOnZvaWQgMCkscGFzc2l2ZTplLm1vZGVsVmFsdWU9PT12b2lkIDAsZGVlcDohMH0pO2Z1bmN0aW9uIGJlKHQpe2lmKEsudmFsdWU9ITAsZS5tdWx0aXBsZSl7Y29uc3Qgcz1BcnJheS5pc0FycmF5KGcudmFsdWUpP1suLi5nLnZhbHVlXTpbXSx1PXMuZmluZEluZGV4KHk9PlMoeSx0LGUuYnkpKTtlLnNlbGVjdGlvbkJlaGF2aW9yPT09InRvZ2dsZSI/KHU9PT0tMT9zLnB1c2godCk6cy5zcGxpY2UodSwxKSxnLnZhbHVlPXMpOihnLnZhbHVlPVt0XSx3LnZhbHVlPXQpfWVsc2UgZS5zZWxlY3Rpb25CZWhhdmlvcj09PSJ0b2dnbGUiJiZTKGcudmFsdWUsdCxlLmJ5KT9nLnZhbHVlPXZvaWQgMDpnLnZhbHVlPXQ7c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfWNvbnN0IHg9TChudWxsKSxVPUwobnVsbCksUj1MKCExKSxXPUwoITEpLGllPUooKSxqPUooKSxvZT1KKCk7ZnVuY3Rpb24gWSgpe3JldHVybiBiKCkubWFwKHQ9PnQucmVmKS5maWx0ZXIodD0+dC5kYXRhc2V0LmRpc2FibGVkIT09IiIpfWZ1bmN0aW9uIEEodCxzPSEwLHUpe2lmKCF0KXJldHVybjt4LnZhbHVlPXQsKHU/P1QudmFsdWUpJiZ4LnZhbHVlLmZvY3VzKCkscyYmeC52YWx1ZS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QifSk7Y29uc3QgeT1iKCkuZmluZChJPT5JLnJlZj09PXQpO2YoImhpZ2hsaWdodCIseSl9ZnVuY3Rpb24geGUodCl7aWYoUi52YWx1ZSlvZS50cmlnZ2VyKHQpO2Vsc2V7Y29uc3Qgcz1iKCkuZmluZCh1PT5TKHUudmFsdWUsdCxlLmJ5KSk7cyYmKHgudmFsdWU9cy5yZWYsQShzLnJlZikpfX1mdW5jdGlvbiBfZSh0KXt4LnZhbHVlJiZ4LnZhbHVlLmlzQ29ubmVjdGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksVy52YWx1ZXx8eC52YWx1ZS5jbGljaygpKX1mdW5jdGlvbiBDZSh0KXtpZihULnZhbHVlKXtpZihLLnZhbHVlPSEwLFIudmFsdWUpai50cmlnZ2VyKHQpO2Vsc2V7Y29uc3Qgcz10LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXk7aWYocyYmdC5rZXk9PT0iYSImJmQudmFsdWUpe2NvbnN0IHU9YigpLHk9dS5tYXAoWj0+Wi52YWx1ZSk7Zy52YWx1ZT1bLi4ueV0sdC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IEk9dS5hdCgtMSk7SSYmQShJLnJlZil9ZWxzZSBpZighcyl7Y29uc3QgdT1sKHQua2V5LGIoKSk7dSYmQSh1KX19c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfX1mdW5jdGlvbiBFZSgpe1cudmFsdWU9ITB9ZnVuY3Rpb24gRmUoKXtOKCgpPT57Vy52YWx1ZT0hMX0pfWZ1bmN0aW9uIG5lKCl7TigoKT0+e2NvbnN0IHQ9bmV3IEtleWJvYXJkRXZlbnQoImtleWRvd24iLHtrZXk6IlBhZ2VVcCJ9KTtsZSh0KX0pfWZ1bmN0aW9uIFgodCl7Y29uc3Qgcz14LnZhbHVlO3M/LmlzQ29ubmVjdGVkJiYoVS52YWx1ZT1zKSx4LnZhbHVlPW51bGwsZigibGVhdmUiLHQpfWZ1bmN0aW9uIGtlKHQpe2NvbnN0IHM9bmV3IEN1c3RvbUV2ZW50KCJsaXN0Ym94LmVudHJ5Rm9jdXMiLHtidWJibGVzOiExLGNhbmNlbGFibGU6ITB9KTtpZih0LmN1cnJlbnRUYXJnZXQ/LmRpc3BhdGNoRXZlbnQocyksZigiZW50cnlGb2N1cyIscyksIXMuZGVmYXVsdFByZXZlbnRlZClpZihVLnZhbHVlKUEoVS52YWx1ZSk7ZWxzZXtjb25zdCB1PVkoKT8uWzBdO0EodSl9fWZ1bmN0aW9uIGxlKHQpe2NvbnN0IHM9VWUodCxwLnZhbHVlLEMudmFsdWUpO2lmKCFzKXJldHVybjtsZXQgdT1ZKCk7aWYoeC52YWx1ZSl7aWYocz09PSJsYXN0Iil1LnJldmVyc2UoKTtlbHNlIGlmKHM9PT0icHJldiJ8fHM9PT0ibmV4dCIpe3M9PT0icHJldiImJnUucmV2ZXJzZSgpO2NvbnN0IHk9dS5pbmRleE9mKHgudmFsdWUpO3U9dS5zbGljZSh5KzEpfXdlKHQsdVswXSl9aWYodS5sZW5ndGgpe2NvbnN0IHk9IXgudmFsdWUmJnM9PT0icHJldiI/dS5sZW5ndGgtMTowO0EodVt5XSl9aWYoUi52YWx1ZSlyZXR1cm4gai50cmlnZ2VyKHQpfWZ1bmN0aW9uIHdlKHQscyl7aWYoIShSLnZhbHVlfHxlLnNlbGVjdGlvbkJlaGF2aW9yIT09InJlcGxhY2UifHwhZC52YWx1ZXx8IUFycmF5LmlzQXJyYXkoZy52YWx1ZSl8fCh0LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXkpJiYhdC5zaGlmdEtleSkmJnQuc2hpZnRLZXkpe2NvbnN0IHk9YigpLmZpbHRlcihNPT5NLnJlZi5kYXRhc2V0LmRpc2FibGVkIT09IiIpO2xldCBJPXkuZmluZChNPT5NLnJlZj09PXMpPy52YWx1ZTtpZih0LmtleT09PXYuRU5EP0k9eS5hdCgtMSk/LnZhbHVlOnQua2V5PT09di5IT01FJiYoST15WzBdPy52YWx1ZSksIUl8fCF3LnZhbHVlKXJldHVybjtjb25zdCBaPU8oeS5tYXAoTT0+TS52YWx1ZSksdy52YWx1ZSxJKTtnLnZhbHVlPVp9fWFzeW5jIGZ1bmN0aW9uIHNlKHQpe2lmKGF3YWl0IE4oKSxSLnZhbHVlKWllLnRyaWdnZXIodCk7ZWxzZXtjb25zdCBzPVkoKSx1PXMuZmluZCh5PT55LmRhdGFzZXQuc3RhdGU9PT0iY2hlY2tlZCIpO3U/QSh1KTpzLmxlbmd0aCYmQShzWzBdKX19cmV0dXJuIFNlKGcsKCk9PntLLnZhbHVlfHxOKCgpPT57c2UoKX0pfSx7aW1tZWRpYXRlOiEwLGRlZXA6ITB9KSxhKHtoaWdobGlnaHRlZEVsZW1lbnQ6eCxoaWdobGlnaHRJdGVtOnhlLGhpZ2hsaWdodEZpcnN0SXRlbTpuZSxoaWdobGlnaHRTZWxlY3RlZDpzZSxnZXRJdGVtczpifSksSmUoe21vZGVsVmFsdWU6ZyxvblZhbHVlQ2hhbmdlOmJlLG11bHRpcGxlOmQsb3JpZW50YXRpb246cCxkaXI6QyxkaXNhYmxlZDpoLGhpZ2hsaWdodE9uSG92ZXI6bSxoaWdobGlnaHRlZEVsZW1lbnQ6eCxpc1ZpcnR1YWw6Uix2aXJ0dWFsRm9jdXNIb29rOmllLHZpcnR1YWxLZXlkb3duSG9vazpqLHZpcnR1YWxIaWdobGlnaHRIb29rOm9lLGJ5OmUuYnksZmlyc3RWYWx1ZTp3LHNlbGVjdGlvbkJlaGF2aW9yOkUsZm9jdXNhYmxlOlQsb25MZWF2ZTpYLG9uRW50ZXI6a2UsY2hhbmdlSGlnaGxpZ2h0OkEsb25LZXlkb3duRW50ZXI6X2Usb25LZXlkb3duTmF2aWdhdGlvbjpsZSxvbktleWRvd25UeXBlQWhlYWQ6Q2Usb25Db21wb3NpdGlvblN0YXJ0OkVlLG9uQ29tcG9zaXRpb25FbmQ6RmUsaGlnaGxpZ2h0Rmlyc3RJdGVtOm5lfSksKHQscyk9PihrKCkscShvKEQpLHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6Yyxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpcjpvKEMpLCJkYXRhLWRpc2FibGVkIjpvKGgpPyIiOnZvaWQgMCxvblBvaW50ZXJsZWF2ZTpYLG9uRm9jdXNvdXQ6c1swXXx8KHNbMF09YXN5bmMgdT0+e2NvbnN0IHk9dS5yZWxhdGVkVGFyZ2V0fHx1LnRhcmdldDthd2FpdCBOKCkseC52YWx1ZSYmbyhyKSYmIW8ocikuY29udGFpbnMoeSkmJlgodSl9KX0se2RlZmF1bHQ6VigoKT0+W1AodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOm8oZyl9KSxvKEYpJiZ0Lm5hbWU/KGsoKSxxKG8oamUpLHtrZXk6MCxuYW1lOnQubmFtZSx2YWx1ZTpvKGcpLGRpc2FibGVkOm8oaCkscmVxdWlyZWQ6dC5yZXF1aXJlZH0sbnVsbCw4LFsibmFtZSIsInZhbHVlIiwiZGlzYWJsZWQiLCJyZXF1aXJlZCJdKSk6cGUoInYtaWYiLCEwKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkaXIiLCJkYXRhLWRpc2FibGVkIl0pKX19KSxtdD1RZSxldD1IKHtfX25hbWU6Ikxpc3Rib3hDb250ZW50Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3R7Q29sbGVjdGlvblNsb3Q6YX09JCgpLGk9RygpLGU9bWUoITEsMTApO3JldHVybihmLGQpPT4oaygpLHEobyhhKSxudWxsLHtkZWZhdWx0OlYoKCk9PltoZShvKEQpLHtyb2xlOiJsaXN0Ym94IixhczpmLmFzLCJhcy1jaGlsZCI6Zi5hc0NoaWxkLHRhYmluZGV4Om8oaSkuZm9jdXNhYmxlLnZhbHVlP28oaSkuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPyItMSI6IjAiOiItMSIsImFyaWEtb3JpZW50YXRpb24iOm8oaSkub3JpZW50YXRpb24udmFsdWUsImFyaWEtbXVsdGlzZWxlY3RhYmxlIjohIW8oaSkubXVsdGlwbGUudmFsdWUsImRhdGEtb3JpZW50YXRpb24iOm8oaSkub3JpZW50YXRpb24udmFsdWUsb25Nb3VzZWRvd246ZFswXXx8KGRbMF09dGUobT0+ZS52YWx1ZT0hMCxbImxlZnQiXSkpLG9uRm9jdXM6ZFsxXXx8KGRbMV09bT0+e28oZSl8fG8oaSkub25FbnRlcihtKX0pLG9uS2V5ZG93bjpbZFsyXXx8KGRbMl09eihtPT57byhpKS5vcmllbnRhdGlvbi52YWx1ZT09PSJ2ZXJ0aWNhbCImJihtLmtleT09PSJBcnJvd0xlZnQifHxtLmtleT09PSJBcnJvd1JpZ2h0Iil8fG8oaSkub3JpZW50YXRpb24udmFsdWU9PT0iaG9yaXpvbnRhbCImJihtLmtleT09PSJBcnJvd1VwInx8bS5rZXk9PT0iQXJyb3dEb3duIil8fChtLnByZXZlbnREZWZhdWx0KCksbyhpKS5mb2N1c2FibGUudmFsdWUmJm8oaSkub25LZXlkb3duTmF2aWdhdGlvbihtKSl9LFsiZG93biIsInVwIiwibGVmdCIsInJpZ2h0IiwiaG9tZSIsImVuZCJdKSkseihvKGkpLm9uS2V5ZG93bkVudGVyLFsiZW50ZXIiXSksbyhpKS5vbktleWRvd25UeXBlQWhlYWRdfSx7ZGVmYXVsdDpWKCgpPT5bUChmLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsInRhYmluZGV4IiwiYXJpYS1vcmllbnRhdGlvbiIsImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwiZGF0YS1vcmllbnRhdGlvbiIsIm9uS2V5ZG93biJdKV0pLF86M30pKX19KSxodD1ldCx0dD1IKHtfX25hbWU6Ikxpc3Rib3hGaWx0ZXIiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbnB1dCJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAobix7ZW1pdDphfSl7Y29uc3QgaT1uLGY9ZmUoaSwibW9kZWxWYWx1ZSIsYSx7ZGVmYXVsdFZhbHVlOiIiLHBhc3NpdmU6aS5tb2RlbFZhbHVlPT09dm9pZCAwfSksZD1HKCkse3ByaW1pdGl2ZUVsZW1lbnQ6bSxjdXJyZW50RWxlbWVudDpwfT12ZSgpLGg9QigoKT0+aS5kaXNhYmxlZHx8ZC5kaXNhYmxlZC52YWx1ZXx8ITEpLEU9TCgpO3JldHVybiBWZSgoKT0+RS52YWx1ZT1kLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZT8uaWQpLEtlKCgpPT57ZC5mb2N1c2FibGUudmFsdWU9ITEsc2V0VGltZW91dCgoKT0+e2kuYXV0b0ZvY3VzJiZwLnZhbHVlPy5mb2N1cygpfSwxKX0pLFRlKCgpPT57ZC5mb2N1c2FibGUudmFsdWU9ITB9KSwoXyxiKT0+KGsoKSxxKG8oRCkse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjptLGFzOl8uYXMsImFzLWNoaWxkIjpfLmFzQ2hpbGQsdmFsdWU6byhmKSxkaXNhYmxlZDpoLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6aC52YWx1ZT8iIjp2b2lkIDAsImFyaWEtZGlzYWJsZWQiOmgudmFsdWU/P3ZvaWQgMCwiYXJpYS1hY3RpdmVkZXNjZW5kYW50IjpFLnZhbHVlLHR5cGU6InRleHQiLG9uS2V5ZG93bjpbeih0ZShvKGQpLm9uS2V5ZG93bk5hdmlnYXRpb24sWyJwcmV2ZW50Il0pLFsiZG93biIsInVwIiwiaG9tZSIsImVuZCJdKSx6KG8oZCkub25LZXlkb3duRW50ZXIsWyJlbnRlciJdKV0sb25JbnB1dDpiWzBdfHwoYlswXT1sPT57Zi52YWx1ZT1sLnRhcmdldC52YWx1ZSxvKGQpLmhpZ2hsaWdodEZpcnN0SXRlbSgpfSksb25Db21wb3NpdGlvbnN0YXJ0Om8oZCkub25Db21wb3NpdGlvblN0YXJ0LG9uQ29tcG9zaXRpb25lbmQ6byhkKS5vbkNvbXBvc2l0aW9uRW5kfSx7ZGVmYXVsdDpWKCgpPT5bUChfLiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6byhmKX0pXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsInZhbHVlIiwiZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsIm9uS2V5ZG93biIsIm9uQ29tcG9zaXRpb25zdGFydCIsIm9uQ29tcG9zaXRpb25lbmQiXSkpfX0pLGd0PXR0O2NvbnN0W3l0LGF0XT1lZSgiTGlzdGJveEdyb3VwIik7dmFyIGl0PUgoe19fbmFtZToiTGlzdGJveEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgYT1uLGk9Z2Uodm9pZCAwLCJyZWthLWxpc3Rib3gtZ3JvdXAiKTtyZXR1cm4gYXQoe2lkOml9KSwoZSxmKT0+KGsoKSxxKG8oRCksYWUoe3JvbGU6Imdyb3VwIn0sYSx7ImFyaWEtbGFiZWxsZWRieSI6byhpKX0pLHtkZWZhdWx0OlYoKCk9PltQKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxidD1pdDtjb25zdCBvdD0ibGlzdGJveC5zZWxlY3QiLFtudCxsdF09ZWUoIkxpc3Rib3hJdGVtIik7dmFyIHN0PUgoe19fbmFtZToiTGlzdGJveEl0ZW0iLHByb3BzOnt2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAobix7ZW1pdDphfSl7Y29uc3QgaT1uLGU9YSxmPWdlKHZvaWQgMCwicmVrYS1saXN0Ym94LWl0ZW0iKSx7Q29sbGVjdGlvbkl0ZW06ZH09JCgpLHtmb3J3YXJkUmVmOm0sY3VycmVudEVsZW1lbnQ6cH09eWUoKSxoPUcoKSxFPUIoKCk9PnAudmFsdWU9PT1oLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZSksXz1CKCgpPT5aZShoLm1vZGVsVmFsdWUudmFsdWUsaS52YWx1ZSxoLmJ5KSksYj1CKCgpPT5oLmRpc2FibGVkLnZhbHVlfHxpLmRpc2FibGVkKTthc3luYyBmdW5jdGlvbiBsKHIpe2UoInNlbGVjdCIsciksIXI/LmRlZmF1bHRQcmV2ZW50ZWQmJiFiLnZhbHVlJiZyJiYoaC5vblZhbHVlQ2hhbmdlKGkudmFsdWUpLGguY2hhbmdlSGlnaGxpZ2h0KHAudmFsdWUpKX1mdW5jdGlvbiBjKHIpe2NvbnN0IHY9e29yaWdpbmFsRXZlbnQ6cix2YWx1ZTppLnZhbHVlfTtIZShvdCxsLHYpfXJldHVybiBsdCh7aXNTZWxlY3RlZDpffSksKHIsdik9PihrKCkscShvKGQpLHt2YWx1ZTpyLnZhbHVlfSx7ZGVmYXVsdDpWKCgpPT5bQmUoW0UudmFsdWUsXy52YWx1ZV0sKCk9PmhlKG8oRCksYWUoe2lkOm8oZil9LHIuJGF0dHJzLHtyZWY6byhtKSxyb2xlOiJvcHRpb24iLHRhYmluZGV4Om8oaCkuZm9jdXNhYmxlLnZhbHVlP0UudmFsdWU/IjAiOiItMSI6LTEsImFyaWEtc2VsZWN0ZWQiOl8udmFsdWUsYXM6ci5hcywiYXMtY2hpbGQiOnIuYXNDaGlsZCxkaXNhYmxlZDpiLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6Yi52YWx1ZT8iIjp2b2lkIDAsImRhdGEtaGlnaGxpZ2h0ZWQiOkUudmFsdWU/IiI6dm9pZCAwLCJkYXRhLXN0YXRlIjpfLnZhbHVlPyJjaGVja2VkIjoidW5jaGVja2VkIixvbkNsaWNrOmMsb25LZXlkb3duOnoodGUoYyxbInByZXZlbnQiXSksWyJzcGFjZSJdKSxvblBvaW50ZXJtb3ZlOnZbMF18fCh2WzBdPSgpPT57byhoKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWUhPT1vKHApJiZvKGgpLmhpZ2hsaWdodE9uSG92ZXIudmFsdWUmJm8oaCkuY2hhbmdlSGlnaGxpZ2h0KG8ocCksITEsITEpfSl9KSx7ZGVmYXVsdDpWKCgpPT5bUChyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwidGFiaW5kZXgiLCJhcmlhLXNlbGVjdGVkIiwiYXMiLCJhcy1jaGlsZCIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtaGlnaGxpZ2h0ZWQiLCJkYXRhLXN0YXRlIiwib25LZXlkb3duIl0pLHYsMSldKSxfOjN9LDgsWyJ2YWx1ZSJdKSl9fSkseHQ9c3QscnQ9SCh7X19uYW1lOiJMaXN0Ym94SXRlbUluZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKG4pe2NvbnN0IGE9bjt5ZSgpO2NvbnN0IGk9bnQoKTtyZXR1cm4oZSxmKT0+byhpKS5pc1NlbGVjdGVkLnZhbHVlPyhrKCkscShvKEQpLGFlKHtrZXk6MCwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sYSkse2RlZmF1bHQ6VigoKT0+W1AoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTpwZSgidi1pZiIsITApfX0pLF90PXJ0LHV0PUgoe19fbmFtZToiTGlzdGJveFZpcnR1YWxpemVyIixwcm9wczp7b3B0aW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMH0sb3ZlcnNjYW46e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxlc3RpbWF0ZVNpemU6e3R5cGU6W051bWJlcixGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LHRleHRDb250ZW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgYT1uLGk9UmUoKSxlPUcoKSxmPVBlKCkse2dldEl0ZW1zOmR9PSQoKTtlLmlzVmlydHVhbC52YWx1ZT0hMDtjb25zdCBtPUIoKCk9Pntjb25zdCBsPWYudmFsdWU7aWYobCl7Y29uc3QgYz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShsKTtyZXR1cm57c3RhcnQ6TnVtYmVyLnBhcnNlRmxvYXQoYy5wYWRkaW5nQmxvY2tTdGFydHx8Yy5wYWRkaW5nVG9wKSxlbmQ6TnVtYmVyLnBhcnNlRmxvYXQoYy5wYWRkaW5nQmxvY2tFbmR8fGMucGFkZGluZ0JvdHRvbSl9fWVsc2UgcmV0dXJue3N0YXJ0OjAsZW5kOjB9fSkscD1ZZSh7Z2V0IHNjcm9sbFBhZGRpbmdTdGFydCgpe3JldHVybiBtLnZhbHVlLnN0YXJ0fSxnZXQgc2Nyb2xsUGFkZGluZ0VuZCgpe3JldHVybiBtLnZhbHVlLmVuZH0sZ2V0IGNvdW50KCl7cmV0dXJuIGEub3B0aW9ucy5sZW5ndGh9LGdldCBob3Jpem9udGFsKCl7cmV0dXJuIGUub3JpZW50YXRpb24udmFsdWU9PT0iaG9yaXpvbnRhbCJ9LGVzdGltYXRlU2l6ZShsKXtyZXR1cm4gdHlwZW9mIGEuZXN0aW1hdGVTaXplPT0iZnVuY3Rpb24iP2EuZXN0aW1hdGVTaXplKGwpOmEuZXN0aW1hdGVTaXplPz8yOH0sZ2V0U2Nyb2xsRWxlbWVudCgpe3JldHVybiBmLnZhbHVlfSxvdmVyc2NhbjphLm92ZXJzY2FuPz8xMn0pLGg9QigoKT0+cC52YWx1ZS5nZXRWaXJ0dWFsSXRlbXMoKS5tYXAobD0+e2NvbnN0IGM9aS5kZWZhdWx0KHtvcHRpb246YS5vcHRpb25zW2wuaW5kZXhdLHZpcnR1YWxpemVyOnAudmFsdWUsdmlydHVhbEl0ZW06bH0pWzBdLHI9Yy50eXBlPT09dWUmJkFycmF5LmlzQXJyYXkoYy5jaGlsZHJlbik/Yy5jaGlsZHJlbi5maW5kKHY9PnR5cGVvZiB2LnR5cGUhPSJzeW1ib2wiKTpjO3JldHVybntpdGVtOmwsaXM6JGUocix7a2V5OmAke2wua2V5fWAsImRhdGEtaW5kZXgiOmwuaW5kZXgsImFyaWEtc2V0c2l6ZSI6YS5vcHRpb25zLmxlbmd0aCwiYXJpYS1wb3NpbnNldCI6bC5pbmRleCsxLHN0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCx0cmFuc2Zvcm06YHRyYW5zbGF0ZVkoJHtsLnN0YXJ0fXB4KWAsb3ZlcmZsb3dBbmNob3I6Im5vbmUifX0pfX0pKTtlLnZpcnR1YWxGb2N1c0hvb2sub24obD0+e2NvbnN0IGM9YS5vcHRpb25zLmZpbmRJbmRleChyPT5BcnJheS5pc0FycmF5KGUubW9kZWxWYWx1ZS52YWx1ZSk/UyhyLGUubW9kZWxWYWx1ZS52YWx1ZVswXSxlLmJ5KTpTKHIsZS5tb2RlbFZhbHVlLnZhbHVlLGUuYnkpKTtjIT09LTE/KGw/LnByZXZlbnREZWZhdWx0KCkscC52YWx1ZS5zY3JvbGxUb0luZGV4KGMse2FsaWduOiJzdGFydCJ9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pntjb25zdCByPWRlKGYudmFsdWUpO3ImJihlLmNoYW5nZUhpZ2hsaWdodChyKSxsJiZyPy5mb2N1cygpKX0pKTplLmhpZ2hsaWdodEZpcnN0SXRlbSgpfSksZS52aXJ0dWFsSGlnaGxpZ2h0SG9vay5vbihsPT57Y29uc3QgYz1hLm9wdGlvbnMuZmluZEluZGV4KHI9PlMocixsLGUuYnkpKTtwLnZhbHVlLnNjcm9sbFRvSW5kZXgoYyx7YWxpZ246InN0YXJ0In0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IHI9ZGUoZi52YWx1ZSk7ciYmZS5jaGFuZ2VIaWdobGlnaHQocil9KX0pO2NvbnN0IEU9bWUoIiIsMWUzKSxfPUIoKCk9Pntjb25zdCBsPWM9PmEudGV4dENvbnRlbnQ/YS50ZXh0Q29udGVudChjKTpjPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGEub3B0aW9ucy5tYXAoKGMscik9Pih7aW5kZXg6cix0ZXh0Q29udGVudDpsKGMpfSkpfSk7ZnVuY3Rpb24gYihsLGMpe2lmKCFlLmZpcnN0VmFsdWU/LnZhbHVlfHwhZS5tdWx0aXBsZS52YWx1ZXx8IUFycmF5LmlzQXJyYXkoZS5tb2RlbFZhbHVlLnZhbHVlKSlyZXR1cm47Y29uc3Qgdj1kKCkuZmlsdGVyKEY9PkYucmVmLmRhdGFzZXQuZGlzYWJsZWQhPT0iIikuZmluZChGPT5GLnJlZj09PWUuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlKT8udmFsdWU7aWYoIXYpcmV0dXJuO2xldCBDPW51bGw7c3dpdGNoKGMpe2Nhc2UicHJldiI6Y2FzZSJuZXh0Ijp7Qz1PKGEub3B0aW9ucyxlLmZpcnN0VmFsdWUudmFsdWUsdik7YnJlYWt9Y2FzZSJmaXJzdCI6e0M9TyhhLm9wdGlvbnMsZS5maXJzdFZhbHVlLnZhbHVlLGEub3B0aW9ucz8uWzBdKTticmVha31jYXNlImxhc3QiOntDPU8oYS5vcHRpb25zLGUuZmlyc3RWYWx1ZS52YWx1ZSxhLm9wdGlvbnMuYXQoLTEpKTticmVha319ZS5tb2RlbFZhbHVlLnZhbHVlPUN9cmV0dXJuIGUudmlydHVhbEtleWRvd25Ib29rLm9uKGw9Pntjb25zdCBjPWwuYWx0S2V5fHxsLmN0cmxLZXl8fGwubWV0YUtleTtpZihsLmtleT09PSJUYWIiJiYhYylyZXR1cm47bGV0IHY9V2VbbC5rZXldO2lmKGMmJmwua2V5PT09ImEiJiZlLm11bHRpcGxlLnZhbHVlPyhsLnByZXZlbnREZWZhdWx0KCksZS5tb2RlbFZhbHVlLnZhbHVlPVsuLi5hLm9wdGlvbnNdLHY9Imxhc3QiKTpsLnNoaWZ0S2V5JiZ2JiZiKGwsdiksWyJmaXJzdCIsImxhc3QiXS5pbmNsdWRlcyh2KSl7bC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IEM9dj09PSJmaXJzdCI/MDphLm9wdGlvbnMubGVuZ3RoLTE7cC52YWx1ZS5zY3JvbGxUb0luZGV4KEMpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IEY9ZCgpLHc9dj09PSJmaXJzdCI/RlswXTpGLmF0KC0xKTt3JiZlLmNoYW5nZUhpZ2hsaWdodCh3LnJlZil9KX1lbHNlIGlmKCF2JiYhYyl7RS52YWx1ZSs9bC5rZXk7Y29uc3QgQz1OdW1iZXIoRGUoKT8uZ2V0QXR0cmlidXRlKCJkYXRhLWluZGV4IikpLEY9Xy52YWx1ZVtDXS50ZXh0Q29udGVudCx3PV8udmFsdWUubWFwKGc9PmcudGV4dENvbnRlbnQ/PyIiKSxLPU1lKHcsRS52YWx1ZSxGKSxUPV8udmFsdWUuZmluZChnPT5nLnRleHRDb250ZW50PT09Syk7VCYmKHAudmFsdWUuc2Nyb2xsVG9JbmRleChULmluZGV4LHthbGlnbjoic3RhcnQifSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Y29uc3QgZz1mLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWluZGV4PSIke1QuaW5kZXh9Il1gKTtnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJmUuY2hhbmdlSGlnaGxpZ2h0KGcpfSkpfX0pLChsLGMpPT4oaygpLHJlKCJkaXYiLHsiZGF0YS1yZWthLXZpcnR1YWxpemVyIjoiIixzdHlsZTpPZSh7cG9zaXRpb246InJlbGF0aXZlIix3aWR0aDoiMTAwJSIsaGVpZ2h0OmAke28ocCkuZ2V0VG90YWxTaXplKCl9cHhgfSl9LFsoayghMCkscmUodWUsbnVsbCxOZShoLnZhbHVlLCh7aXM6cixpdGVtOnZ9KT0+KGsoKSxxKHplKHIpLHtrZXk6di5pbmRleH0pKSksMTI4KSldLDQpKX19KSxDdD11dDtmdW5jdGlvbiBkdChuLGEpe2lmKHR5cGVvZiBuIT0ib2JqZWN0Inx8bj09PW51bGwpcmV0dXJuITE7Y29uc3QgaT1HZShuLGEpO3JldHVybiBpIT1udWxsJiZpIT09IiJ9ZnVuY3Rpb24gY2UobixhKXtyZXR1cm4gYT97eHM6NDQsc206NDgsbWQ6NTIsbGc6NTYseGw6NjB9W25dOnt4czoyNCxzbToyOCxtZDozMixsZzozNix4bDo0MH1bbl19ZnVuY3Rpb24gRXQobixhLGksZSl7Y29uc3QgZj1jZShhLCEwKSxkPWNlKGEsITEpO3JldHVybiBlPygpPT5mOmk/bT0+ZHQoblttXSxpKT9mOmQ6KCk9PmR9ZXhwb3J0e210IGFzIEwsaHQgYXMgYSxidCBhcyBiLGd0IGFzIGMseHQgYXMgZCxfdCBhcyBlLEN0IGFzIGYsRXQgYXMgZyx5dCBhcyBoLEcgYXMgaX07Cg==", "/_nuxt/DOCFDTcY.js": "aW1wb3J0e0ogYXMgaWUsSyBhcyBvZSxhbCBhcyB1ZSxhQyBhcyBsZSxUIGFzIEgsYUsgYXMgSixhTCBhcyBRLGE0IGFzIFYsYTYgYXMgZmUsYTUgYXMgY2UsciBhcyBqLFMgYXMgQyxsIGFzIHEsYU0gYXMgUixvIGFzIGRlLGggYXMgbWUsdyBhcyBwZSxMIGFzIHllLGFiIGFzIHZlLE0gYXMgaGUsaSBhcyBNLGFjIGFzIEVlLGFOIGFzIGJlLE4gYXMgRyxhMSBhcyBiLGFPIGFzIGdlLGFQIGFzIHdlLGFRIGFzIFNlLGFSIGFzIEZlfWZyb20iLi9vOHRkX0cwSi5qcyI7ZnVuY3Rpb24gSWUobil7cmV0dXJuInNjaGVtYSJpbiBuJiZ0eXBlb2Ygbi5jb2VyY2VyPT0iZnVuY3Rpb24iJiZ0eXBlb2Ygbi52YWxpZGF0b3I9PSJmdW5jdGlvbiImJnR5cGVvZiBuLnJlZmluZXI9PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gamUobil7cmV0dXJuIn5zdGFuZGFyZCJpbiBufWFzeW5jIGZ1bmN0aW9uIHFlKG4saSl7Y29uc3QgbD1hd2FpdCBpWyJ+c3RhbmRhcmQiXS52YWxpZGF0ZShuKTtyZXR1cm4gbC5pc3N1ZXM/e2Vycm9yczpsLmlzc3Vlcz8ubWFwKHI9Pih7bmFtZTpyLnBhdGg/Lm1hcChvPT50eXBlb2Ygbz09Im9iamVjdCI/by5rZXk6bykuam9pbigiLiIpfHwiIixtZXNzYWdlOnIubWVzc2FnZX0pKXx8W10scmVzdWx0Om51bGx9OntlcnJvcnM6bnVsbCxyZXN1bHQ6bC52YWx1ZX19YXN5bmMgZnVuY3Rpb24geGUobixpKXtjb25zdFtsLHJdPWkudmFsaWRhdGUobik7cmV0dXJuIGw/e2Vycm9yczpsLmZhaWx1cmVzKCkubWFwKGg9Pih7bWVzc2FnZTpoLm1lc3NhZ2UsbmFtZTpoLnBhdGguam9pbigiLiIpfSkpLHJlc3VsdDpudWxsfTp7ZXJyb3JzOm51bGwscmVzdWx0OnJ9fWZ1bmN0aW9uIE5lKG4saSl7aWYoamUoaSkpcmV0dXJuIHFlKG4saSk7aWYoSWUoaSkpcmV0dXJuIHhlKG4saSk7dGhyb3cgbmV3IEVycm9yKCJGb3JtIHZhbGlkYXRpb24gZmFpbGVkOiBVbnN1cHBvcnRlZCBmb3JtIHNjaGVtYSIpfWZ1bmN0aW9uIE9lKG4saSl7cmV0dXJuIGk/aS5zcGxpdCgiLiIpLnJlZHVjZSgocixvKT0+cj8uW29dLG4pOm59ZnVuY3Rpb24gQmUobixpLGwpe2lmKCFpKXJldHVybiBPYmplY3QuYXNzaWduKG4sbCk7aWYoIW4pcmV0dXJuIG47Y29uc3Qgcj1pLnNwbGl0KCIuIik7bGV0IG89bjtmb3IobGV0IHA9MDtwPHIubGVuZ3RoLTE7cCsrKXtjb25zdCB5PXJbcF07KG9beV09PT12b2lkIDB8fG9beV09PT1udWxsKSYmKHArMTxyLmxlbmd0aCYmIU51bWJlci5pc05hTihOdW1iZXIocltwKzFdKSk/b1t5XT1bXTpvW3ldPXt9KSxvPW9beV19Y29uc3QgaD1yW3IubGVuZ3RoLTFdO3JldHVybiBvW2hdPWwsbn1jbGFzcyB4IGV4dGVuZHMgRXJyb3J7Zm9ybUlkO2Vycm9ycztjb25zdHJ1Y3RvcihpLGwpe3N1cGVyKCJGb3JtIHZhbGlkYXRpb24gZXhjZXB0aW9uIiksdGhpcy5mb3JtSWQ9aSx0aGlzLmVycm9ycz1sLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLHgucHJvdG90eXBlKX19Y29uc3QgUmU9e2Jhc2U6IiJ9LEFlPXtfX25hbWU6IlVGb3JtIixwcm9wczp7aWQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxzY2hlbWE6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3RhdGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFsaWRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT246e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITEsZGVmYXVsdCgpe3JldHVyblsiaW5wdXQiLCJibHVyIiwiY2hhbmdlIl19fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhbGlkYXRlT25JbnB1dERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjMwMH0sdHJhbnNmb3JtOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+ITB9LG5lc3RlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb25TdWJtaXQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxlbWl0czpbInN1Ym1pdCIsImVycm9yIl0sc2V0dXAobix7ZXhwb3NlOmksZW1pdDpsfSl7Y29uc3Qgcj1uLG89bCxoPWllKCkscD1vZSgiZm9ybSIscikseT1xKCgpPT5HKHtleHRlbmQ6RyhSZSksLi4uaC51aT8uZm9ybXx8e319KSksZz1yLmlkPz91ZSgpLGs9bGUoImZvcm1SZWYiKSxBPWJlKGBmb3JtLSR7Z31gKSx3PXIubmVzdGVkPT09ITAmJkgoSix2b2lkIDApLEs9ci5uZXN0ZWQ9PT0hMD9IKFEsdm9pZCAwKTp2b2lkIDAsUz1xKCgpPT5LPy52YWx1ZT9yLm5hbWU/T2UoSy52YWx1ZSxyLm5hbWUpOksudmFsdWU6ci5zdGF0ZSk7YihKLEEpLGIoUSxTKTtjb25zdCBGPWoobmV3IE1hcCk7Vihhc3luYygpPT57dyYmKGF3YWl0IGZlKCksdy5lbWl0KHt0eXBlOiJhdHRhY2giLHZhbGlkYXRlOkksZm9ybUlkOmcsbmFtZTpyLm5hbWUsYXBpOiR9KSl9KSxjZSgoKT0+e0EucmVzZXQoKSx3JiZ3LmVtaXQoe3R5cGU6ImRldGFjaCIsZm9ybUlkOmd9KX0pLFYoYXN5bmMoKT0+e0Eub24oYXN5bmMgZT0+e2UudHlwZT09PSJhdHRhY2giP0YudmFsdWUuc2V0KGUuZm9ybUlkLHt2YWxpZGF0ZTplLnZhbGlkYXRlLG5hbWU6ZS5uYW1lLGFwaTplLmFwaX0pOmUudHlwZT09PSJkZXRhY2giP0YudmFsdWUuZGVsZXRlKGUuZm9ybUlkKTpyLnZhbGlkYXRlT24/LmluY2x1ZGVzKGUudHlwZSkmJiF2LnZhbHVlJiYoZS50eXBlIT09ImlucHV0Ij9hd2FpdCBJKHtuYW1lOmUubmFtZSxzaWxlbnQ6ITAsbmVzdGVkOiExfSk6KGUuZWFnZXJ8fF8uaGFzKGUubmFtZSkpJiZhd2FpdCBJKHtuYW1lOmUubmFtZSxzaWxlbnQ6ITAsbmVzdGVkOiExfSkpLGUudHlwZT09PSJibHVyIiYmXy5hZGQoZS5uYW1lKSwoZS50eXBlPT09ImNoYW5nZSJ8fGUudHlwZT09PSJpbnB1dCJ8fGUudHlwZT09PSJibHVyInx8ZS50eXBlPT09ImZvY3VzIikmJlQuYWRkKGUubmFtZSksKGUudHlwZT09PSJjaGFuZ2UifHxlLnR5cGU9PT0iaW5wdXQiKSYmTy5hZGQoZS5uYW1lKX0pfSk7Y29uc3QgdT1qKFtdKTtiKGdlLHUpO2NvbnN0IE49aih7fSk7Yih3ZSxOKTtjb25zdCBPPUMobmV3IFNldCksVD1DKG5ldyBTZXQpLF89QyhuZXcgU2V0KTtmdW5jdGlvbiBMKGUpe3JldHVybiBlLm1hcCh0PT4oey4uLnQsaWQ6dD8ubmFtZT9OLnZhbHVlW3QubmFtZV0/LmlkOnZvaWQgMH0pKX1jb25zdCBCPWoobnVsbCk7YXN5bmMgZnVuY3Rpb24gWCgpe2xldCBlPXIudmFsaWRhdGU/YXdhaXQgci52YWxpZGF0ZShTLnZhbHVlKT8/W106W107aWYoci5zY2hlbWEpe2NvbnN0e2Vycm9yczp0LHJlc3VsdDphfT1hd2FpdCBOZShTLnZhbHVlLHIuc2NoZW1hKTt0P2U9ZS5jb25jYXQodCk6Qi52YWx1ZT1hfXJldHVybiBMKGUpfWFzeW5jIGZ1bmN0aW9uIEkoZT17c2lsZW50OiExLG5lc3RlZDohMSx0cmFuc2Zvcm06ITF9KXtjb25zdCB0PWUubmFtZSYmIUFycmF5LmlzQXJyYXkoZS5uYW1lKT9bZS5uYW1lXTplLm5hbWU7bGV0IGE9W10scz1bXTtpZighdCYmZS5uZXN0ZWQpe2NvbnN0IG09QXJyYXkuZnJvbShGLnZhbHVlLnZhbHVlcygpKS5tYXAoZD0+WShkLGUpKSxjPWF3YWl0IFByb21pc2UuYWxsKG0pO3M9Yy5maWx0ZXIoZD0+ZC5lcnJvcikuZmxhdE1hcChkPT5kLmVycm9yLmVycm9ycy5tYXAoc2U9Plooc2UsZC5uYW1lKSkpLGE9Yy5maWx0ZXIoZD0+ZC5vdXRwdXQhPT12b2lkIDApfWNvbnN0IEU9Wy4uLmF3YWl0IFgoKSwuLi5zXTtpZih0P3UudmFsdWU9cmUoRSx0KTp1LnZhbHVlPUUsdS52YWx1ZT8ubGVuZ3RoKXtpZihlLnNpbGVudClyZXR1cm4hMTt0aHJvdyBuZXcgeChnLHUudmFsdWUpfXJldHVybiBlLnRyYW5zZm9ybT8oYS5mb3JFYWNoKG09PnttLm5hbWU/QmUoQi52YWx1ZSxtLm5hbWUsbS5vdXRwdXQpOk9iamVjdC5hc3NpZ24oQi52YWx1ZSxtLm91dHB1dCl9KSxCLnZhbHVlPz9TLnZhbHVlKTpTLnZhbHVlfWNvbnN0IHY9aighMSk7YihTZSxSKHYpKTthc3luYyBmdW5jdGlvbiBXKGUpe3YudmFsdWU9ci5sb2FkaW5nQXV0byYmITA7Y29uc3QgdD1lO3RyeXt0LmRhdGE9YXdhaXQgSSh7bmVzdGVkOiEwLHRyYW5zZm9ybTpyLnRyYW5zZm9ybX0pLGF3YWl0IHIub25TdWJtaXQ/Lih0KSxPLmNsZWFyKCl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2YgeCkpdGhyb3cgYTtjb25zdCBzPXsuLi50LGVycm9yczphLmVycm9yc307bygiZXJyb3IiLHMpfWZpbmFsbHl7di52YWx1ZT0hMX19Y29uc3QgRD1xKCgpPT5yLmRpc2FibGVkfHx2LnZhbHVlKTtiKEZlLHEoKCk9Pih7ZGlzYWJsZWQ6RC52YWx1ZSx2YWxpZGF0ZU9uSW5wdXREZWxheTpyLnZhbGlkYXRlT25JbnB1dERlbGF5fSkpKTthc3luYyBmdW5jdGlvbiBZKGUsdCl7dHJ5e2NvbnN0IGE9YXdhaXQgZS52YWxpZGF0ZSh7Li4udCxzaWxlbnQ6ITF9KTtyZXR1cm57bmFtZTplLm5hbWUsb3V0cHV0OmF9fWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHgpKXRocm93IGE7cmV0dXJue25hbWU6ZS5uYW1lLGVycm9yOmF9fX1mdW5jdGlvbiBaKGUsdCl7cmV0dXJuIXR8fCFlLm5hbWU/ZTp7Li4uZSxuYW1lOnQrIi4iK2UubmFtZX19ZnVuY3Rpb24gZWUoZSx0KXtjb25zdCBhPXQrIi4iLHM9ZT8ubmFtZT8uc3RhcnRzV2l0aChhKT9lLm5hbWUuc3Vic3RyaW5nKGEubGVuZ3RoKTplLm5hbWU7cmV0dXJuey4uLmUsbmFtZTpzfX1mdW5jdGlvbiB0ZShlLHQpe3JldHVybiB0P2UuZmlsdGVyKGE9PmE/Lm5hbWU/LnN0YXJ0c1dpdGgodCsiLiIpKS5tYXAoYT0+ZWUoYSx0KSk6ZX1mdW5jdGlvbiBVKGUpe3JldHVybiBlLmFwaS5nZXRFcnJvcnMoKS5tYXAodD0+ZS5uYW1lP3suLi50LG5hbWU6ZS5uYW1lKyIuIit0Lm5hbWV9OnQpfWZ1bmN0aW9uIFAoZSx0KXtyZXR1cm4hZXx8IXQ/ITA6ZSBpbnN0YW5jZW9mIFJlZ0V4cD9lLnRlc3QodCk6dD09PWV8fHR5cGVvZiBlPT0ic3RyaW5nIiYmZS5zdGFydHNXaXRoKHQrIi4iKX1mdW5jdGlvbiBhZShlLHQpe2lmKCFlfHxlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBlO2lmKHQhPT1lKXJldHVybiB0eXBlb2YgZT09InN0cmluZyImJmUuc3RhcnRzV2l0aCh0KyIuIik/ZS5zdWJzdHJpbmcodC5sZW5ndGgrMSk6ZX1mdW5jdGlvbiByZShlLHQpe2NvbnN0IGE9bmV3IFNldCh0KSxzPXQubWFwKGM9Pk4udmFsdWU/LltjXT8ucGF0dGVybikuZmlsdGVyKEJvb2xlYW4pLGY9Yz0+Yy5uYW1lP2EuaGFzKGMubmFtZSk/ITA6cy5zb21lKGQ9PmQudGVzdChjLm5hbWUpKTohMSxFPXUudmFsdWUuZmlsdGVyKGM9PiFmKGMpKSxtPWUuZmlsdGVyKGYpO3JldHVyblsuLi5FLC4uLm1dfWZ1bmN0aW9uIG5lKGUsdCl7cmV0dXJuIGUuZmlsdGVyKGE9PnQgaW5zdGFuY2VvZiBSZWdFeHA/IShhLm5hbWUmJnQudGVzdChhLm5hbWUpKTohYS5uYW1lfHxhLm5hbWUhPT10KX1mdW5jdGlvbiB6KGUpe3JldHVybiFlLm5hbWV8fCEhTi52YWx1ZVtlLm5hbWVdfWNvbnN0ICQ9e3ZhbGlkYXRlOkksZXJyb3JzOnUsc2V0RXJyb3JzKGUsdCl7Y29uc3QgYT1MKGUuZmlsdGVyKHopKSxzPVtdO2Zvcihjb25zdCBmIG9mIEYudmFsdWUudmFsdWVzKCkpaWYoUCh0LGYubmFtZSkpe2NvbnN0IEU9dGUoZSxmLm5hbWUpO2YuYXBpLnNldEVycm9ycyhFLGFlKHQsZi5uYW1lfHwiIikpLHMucHVzaCguLi5VKGYpKX1pZih0KXtjb25zdCBmPW5lKHUudmFsdWUsdCk7dS52YWx1ZT1bLi4uZiwuLi5hLC4uLnNdfWVsc2UgdS52YWx1ZT1bLi4uYSwuLi5zXX0sYXN5bmMgc3VibWl0KCl7ay52YWx1ZSBpbnN0YW5jZW9mIEhUTUxGb3JtRWxlbWVudCYmay52YWx1ZS5yZXBvcnRWYWxpZGl0eSgpPT09ITF8fGF3YWl0IFcobmV3IEV2ZW50KCJzdWJtaXQiKSl9LGdldEVycm9ycyhlKXtyZXR1cm4gZT91LnZhbHVlLmZpbHRlcih0PT5lIGluc3RhbmNlb2YgUmVnRXhwP3QubmFtZSYmZS50ZXN0KHQubmFtZSk6dC5uYW1lPT09ZSk6dS52YWx1ZX0sY2xlYXIoZSl7Y29uc3QgdD1lP3UudmFsdWUuZmlsdGVyKHM9PnoocykmJihlIGluc3RhbmNlb2YgUmVnRXhwPyEocy5uYW1lJiZlLnRlc3Qocy5uYW1lKSk6cy5uYW1lIT09ZSkpOltdLGE9W107Zm9yKGNvbnN0IHMgb2YgRi52YWx1ZS52YWx1ZXMoKSlQKGUscy5uYW1lKSYmcy5hcGkuY2xlYXIoKSxhLnB1c2goLi4uVShzKSk7dS52YWx1ZT1bLi4udCwuLi5hXX0sZGlzYWJsZWQ6RCxsb2FkaW5nOnYsZGlydHk6cSgoKT0+ISFPLnNpemUpLGRpcnR5RmllbGRzOlIoTyksYmx1cnJlZEZpZWxkczpSKF8pLHRvdWNoZWRGaWVsZHM6UihUKX07cmV0dXJuIGkoJCksKGUsdCk9PihkZSgpLG1lKEVlKE0odyk/ImRpdiI6ImZvcm0iKSx7aWQ6TShnKSxyZWZfa2V5OiJmb3JtUmVmIixyZWY6ayxjbGFzczpoZSh5LnZhbHVlKHtjbGFzczpbTShwKT8uYmFzZSxyLmNsYXNzXX0pKSxvblN1Ym1pdDp2ZShXLFsicHJldmVudCJdKX0se2RlZmF1bHQ6cGUoKCk9Plt5ZShlLiRzbG90cywiZGVmYXVsdCIse2Vycm9yczp1LnZhbHVlLGxvYWRpbmc6di52YWx1ZX0pXSksXzozfSw0MCxbImlkIiwiY2xhc3MiXSkpfX07ZXhwb3J0e0FlIGFzIF99Owo=", "/_nuxt/DPfZkl2e.js": "aW1wb3J0e18gYXMgcyx1IGFzIGEsbyBhcyBpLGMgYXMgdSxhIGFzIHQsdCBhcyBuLGIgYXMgYyx3IGFzIGwsZCxlIGFzIGZ9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBwPXtjbGFzczoiYW50aWFsaWFzZWQgYmctd2hpdGUgZGFyazpiZy1bIzAyMDQyMF0gZGFyazp0ZXh0LXdoaXRlIGZvbnQtc2FucyBncmlkIG1pbi1oLXNjcmVlbiBvdmVyZmxvdy1oaWRkZW4gcGxhY2UtY29udGVudC1jZW50ZXIgdGV4dC1bIzAyMDQyMF0gdHJhY2tpbmctd2lkZSJ9LG09e2NsYXNzOiJtYXgtdy01MjBweCB0ZXh0LWNlbnRlciJ9LGg9WyJ0ZXh0Q29udGVudCJdLGI9WyJ0ZXh0Q29udGVudCJdLHg9WyJ0ZXh0Q29udGVudCJdLGc9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwifSx5PXtfX25hbWU6ImVycm9yLTQwNCIscHJvcHM6e2FwcE5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Ik51eHQifSxzdGF0dXM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NDA0fSxzdGF0dXNUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OiJQYWdlIG5vdCBmb3VuZCJ9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIn0sYmFja0hvbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IkdvIGJhY2sgaG9tZSJ9fSxzZXR1cChlKXtjb25zdCByPWU7cmV0dXJuIGEoe3RpdGxlOmAke3Iuc3RhdHVzfSAtICR7ci5zdGF0dXNUZXh0fSB8ICR7ci5hcHBOYW1lfWAsc2NyaXB0Olt7aW5uZXJIVE1MOmAhZnVuY3Rpb24oKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKS5yZWxMaXN0O2lmKCEoZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKSl7Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXScpKXIoZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2Zvcihjb25zdCBvIG9mIGUpaWYoImNoaWxkTGlzdCI9PT1vLnR5cGUpZm9yKGNvbnN0IGUgb2Ygby5hZGRlZE5vZGVzKSJMSU5LIj09PWUudGFnTmFtZSYmIm1vZHVsZXByZWxvYWQiPT09ZS5yZWwmJnIoZSl9KS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfWZ1bmN0aW9uIHIoZSl7aWYoZS5lcClyZXR1cm47ZS5lcD0hMDtjb25zdCByPWZ1bmN0aW9uKGUpe2NvbnN0IHI9e307cmV0dXJuIGUuaW50ZWdyaXR5JiYoci5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHkpLGUucmVmZXJyZXJQb2xpY3kmJihyLnJlZmVycmVyUG9saWN5PWUucmVmZXJyZXJQb2xpY3kpLCJ1c2UtY3JlZGVudGlhbHMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjoiYW5vbnltb3VzIj09PWUuY3Jvc3NPcmlnaW4/ci5jcmVkZW50aWFscz0ib21pdCI6ci5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLHJ9KGUpO2ZldGNoKGUuaHJlZixyKX19KCk7YH1dLHN0eWxlOlt7aW5uZXJIVE1MOicqLDphZnRlciw6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS11bi1kZWZhdWx0LWJvcmRlci1jb2xvciwjZTVlN2ViKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjA7Ym94LXNpemluZzpib3JkZXItYm94fTphZnRlciw6YmVmb3Jley0tdW4tY29udGVudDoiIn1odG1se2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjB9aDEsaDJ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9aDEsaDIscHttYXJnaW46MH0qLDphZnRlciw6YmVmb3Jley0tdW4tcm90YXRlOjA7LS11bi1yb3RhdGUteDowOy0tdW4tcm90YXRlLXk6MDstLXVuLXJvdGF0ZS16OjA7LS11bi1zY2FsZS14OjE7LS11bi1zY2FsZS15OjE7LS11bi1zY2FsZS16OjE7LS11bi1za2V3LXg6MDstLXVuLXNrZXcteTowOy0tdW4tdHJhbnNsYXRlLXg6MDstLXVuLXRyYW5zbGF0ZS15OjA7LS11bi10cmFuc2xhdGUtejowOy0tdW4tcGFuLXg6IDstLXVuLXBhbi15OiA7LS11bi1waW5jaC16b29tOiA7LS11bi1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOnByb3hpbWl0eTstLXVuLW9yZGluYWw6IDstLXVuLXNsYXNoZWQtemVybzogOy0tdW4tbnVtZXJpYy1maWd1cmU6IDstLXVuLW51bWVyaWMtc3BhY2luZzogOy0tdW4tbnVtZXJpYy1mcmFjdGlvbjogOy0tdW4tYm9yZGVyLXNwYWNpbmcteDowOy0tdW4tYm9yZGVyLXNwYWNpbmcteTowOy0tdW4tcmluZy1vZmZzZXQtc2hhZG93OjAgMCB0cmFuc3BhcmVudDstLXVuLXJpbmctc2hhZG93OjAgMCB0cmFuc3BhcmVudDstLXVuLXNoYWRvdy1pbnNldDogOy0tdW4tc2hhZG93OjAgMCB0cmFuc3BhcmVudDstLXVuLXJpbmctaW5zZXQ6IDstLXVuLXJpbmctb2Zmc2V0LXdpZHRoOjBweDstLXVuLXJpbmctb2Zmc2V0LWNvbG9yOiNmZmY7LS11bi1yaW5nLXdpZHRoOjBweDstLXVuLXJpbmctY29sb3I6cmdiYSgxNDcsMTk3LDI1MywuNSk7LS11bi1ibHVyOiA7LS11bi1icmlnaHRuZXNzOiA7LS11bi1jb250cmFzdDogOy0tdW4tZHJvcC1zaGFkb3c6IDstLXVuLWdyYXlzY2FsZTogOy0tdW4taHVlLXJvdGF0ZTogOy0tdW4taW52ZXJ0OiA7LS11bi1zYXR1cmF0ZTogOy0tdW4tc2VwaWE6IDstLXVuLWJhY2tkcm9wLWJsdXI6IDstLXVuLWJhY2tkcm9wLWJyaWdodG5lc3M6IDstLXVuLWJhY2tkcm9wLWNvbnRyYXN0OiA7LS11bi1iYWNrZHJvcC1ncmF5c2NhbGU6IDstLXVuLWJhY2tkcm9wLWh1ZS1yb3RhdGU6IDstLXVuLWJhY2tkcm9wLWludmVydDogOy0tdW4tYmFja2Ryb3Atb3BhY2l0eTogOy0tdW4tYmFja2Ryb3Atc2F0dXJhdGU6IDstLXVuLWJhY2tkcm9wLXNlcGlhOiB9J31dfSksKGssdyk9Pntjb25zdCBvPWY7cmV0dXJuIGkoKSx1KCJkaXYiLHAsW3QoImRpdiIsbSxbdCgiaDEiLHtjbGFzczoiZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgbWItNCBzbTp0ZXh0LVsxMTBweF0gdGFidWxhci1udW1zIHRleHQtWzgwcHhdIix0ZXh0Q29udGVudDpuKGUuc3RhdHVzKX0sbnVsbCw4LGgpLHQoImgyIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgbWItMiBzbTp0ZXh0LTN4bCB0ZXh0LTJ4bCIsdGV4dENvbnRlbnQ6bihlLnN0YXR1c1RleHQpfSxudWxsLDgsYiksdCgicCIse2NsYXNzOiJtYi00IHB4LTIgdGV4dC1bIzY0NzQ4Ql0gdGV4dC1tZCIsdGV4dENvbnRlbnQ6bihlLmRlc2NyaXB0aW9uKX0sbnVsbCw4LHgpLHQoImRpdiIsZyxbYyhvLHt0bzoiLyIsY2xhc3M6ImZvbnQtbWVkaXVtIGhvdmVyOnRleHQtWyMwMERDODJdIHRleHQtc20gdW5kZXJsaW5lIHVuZGVybGluZS1vZmZzZXQtMyJ9LHtkZWZhdWx0OmwoKCk9PltkKG4oZS5iYWNrSG9tZSksMSldKSxfOjF9KV0pXSldKX19fSx2PXMoeSxbWyJfX3Njb3BlSWQiLCJkYXRhLXYtNmQ3YmFjZmYiXV0pO2V4cG9ydHt2IGFzIGRlZmF1bHR9Owo=", "/_nuxt/DTTLr5Hr.js": "aW1wb3J0e18gYXMgQX1mcm9tIi4vQ2M2emloLVIuanMiO2ltcG9ydHtfIGFzIE59ZnJvbSIuL2docVliSVNULmpzIjtpbXBvcnR7XyBhcyBEfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e2YgYXMgYixuIGFzIHcsZyBhcyBrLHAgYXMgTSxvIGFzIGQsaCBhcyB5LHcgYXMgYyxpIGFzIHMsYyBhcyB1LHQgYXMgZixGIGFzIFYscSBhcyBqLGEgYXMgZSxiIGFzIHAsZCBhcyB4LGogYXMgQyxyIGFzIGcscyBhcyBMLGsgYXMgeix2IGFzIFMsdSBhcyBGfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgVX1mcm9tIi4vQlNSS3FHclAuanMiO2ltcG9ydHtfIGFzIFR9ZnJvbSIuL0NsNGk0clNNLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2ltcG9ydCIuL18ybFNkcjEzLmpzIjtjb25zdCBFPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LWVycm9yIiwiZGF0YS10ZXN0aWQiOiJjYW5kaWRhdGVzLWVycm9yIn0sTz17a2V5OjEsY2xhc3M6InRleHQtY2VudGVyIHRleHQtbXV0ZWQgcHktOCJ9LHE9e2tleToyLGNsYXNzOiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCIsImRhdGEtdGVzdGlkIjoiY2FuZGlkYXRlcy1saXN0In0sSD1bImRhdGEtdGVzdGlkIl0sSz17Y2xhc3M6ImZsZXgtMSJ9LFA9e2NsYXNzOiJmb250LW1lZGl1bSJ9LEc9e2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSxKPWIoe19fbmFtZToiSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0IixzZXR1cCgkKXtjb25zdCBuPUwoKSxfPXcoKSxpPWsoKSxsPWcoW10pLHI9ZyhudWxsKSx0PWcobnVsbCk7YXN5bmMgZnVuY3Rpb24gdigpe3IudmFsdWU9bnVsbDt0cnl7Y29uc3QgYT1hd2FpdCBuLmZldGNoSW1wZXJzb25hdGlvbkNhbmRpZGF0ZXMoKTtsLnZhbHVlPWE/Lml0ZW1zPz9bXX1jYXRjaChhKXtjb25zdCBtPWE7ci52YWx1ZT1tPy5zdGF0dXNNZXNzYWdlPz8iRmFpbGVkIHRvIGxvYWQgdXNlcnMiLGwudmFsdWU9W119fWFzeW5jIGZ1bmN0aW9uIEkoYSl7dC52YWx1ZT1hLmlkO3RyeXthd2FpdCBfLnN0YXJ0SW1wZXJzb25hdGlvbihhLmlkKSxpLmFkZCh7dGl0bGU6YE5vdyBpbXBlcnNvbmF0aW5nICR7YS5uYW1lPz9hLnByaW1hcnlfZW1haWx9YCxjb2xvcjoic3VjY2VzcyJ9KSx3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9Y2F0Y2gobSl7Y29uc3QgaD1tO2kuYWRkKHt0aXRsZToiSW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOmg/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P2g/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt0LnZhbHVlPW51bGx9fXJldHVybiBNKCJpbXBlcnNvbmF0ZS1jYW5kaWRhdGVzIiwoKT0+digpKSwoYSxtKT0+e2NvbnN0IGg9QyxCPVU7cmV0dXJuIGQoKSx5KEIsbnVsbCx7aGVhZGVyOmMoKCk9PlsuLi5tWzBdfHwobVswXT1bZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIEF2YWlsYWJsZSB1c2VycyAiLC0xKV0pXSksZGVmYXVsdDpjKCgpPT5bcyhyKT8oZCgpLHUoImRpdiIsRSxmKHMocikpLDEpKTpzKGwpLmxlbmd0aD09PTA/KGQoKSx1KCJkaXYiLE8sIiBObyBvdGhlciB1c2VycyB0byBpbXBlcnNvbmF0ZS4gIikpOihkKCksdSgidWwiLHEsWyhkKCEwKSx1KFYsbnVsbCxqKHMobCksbz0+KGQoKSx1KCJsaSIse2tleTpvLmlkLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweS0zIiwiZGF0YS10ZXN0aWQiOmBjYW5kaWRhdGUtJHtvLnByaW1hcnlfZW1haWx9YH0sW2UoImRpdiIsSyxbZSgicCIsUCxmKG8ubmFtZT8/by51c2VybmFtZT8/by5wcmltYXJ5X2VtYWlsKSwxKSxlKCJwIixHLGYoby5wcmltYXJ5X2VtYWlsKSwxKV0pLHAoaCx7c2l6ZToic20iLGljb246ImktbHVjaWRlLXVzZXItY2hlY2siLGxvYWRpbmc6cyh0KT09PW8uaWQsZGlzYWJsZWQ6cyhfKS5pc0ltcGVyc29uYXRpbmd8fCEhby5pc19zdXNwZW5kZWQsImRhdGEtdGVzdGlkIjpgaW1wZXJzb25hdGUtJHtvLnByaW1hcnlfZW1haWx9YCxvbkNsaWNrOnN0PT5JKG8pfSx7ZGVmYXVsdDpjKCgpPT5bLi4ubVsxXXx8KG1bMV09W3goIiBJbXBlcnNvbmF0ZSAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIiwiZGF0YS10ZXN0aWQiLCJvbkNsaWNrIl0pXSw4LEgpKSksMTI4KSldKSldKSxfOjF9KX19fSksUT1PYmplY3QuYXNzaWduKEose19fbmFtZToiSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0In0pLFI9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFc9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQifSxYPXtjbGFzczoiZm9udC1tZWRpdW0iLCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRvci1uYW1lIn0sWT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCIsImRhdGEtdGVzdGlkIjoiaW1wZXJzb25hdG9yLWVtYWlsIn0sWj1iKHtfX25hbWU6IkltcGVyc29uYXRlU3RvcEJ1dHRvbiIsc2V0dXAoJCl7Y29uc3Qgbj13KCksXz1rKCksaT1nKCExKTthc3luYyBmdW5jdGlvbiBsKCl7aS52YWx1ZT0hMDt0cnl7YXdhaXQgbi5zdG9wSW1wZXJzb25hdGlvbigpLF8uYWRkKHt0aXRsZToiU3RvcHBlZCBpbXBlcnNvbmF0aW9uIixjb2xvcjoic3VjY2VzcyJ9KSx3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9Y2F0Y2gocil7Y29uc3QgdD1yO18uYWRkKHt0aXRsZToiU3RvcCBpbXBlcnNvbmF0aW9uIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/dD8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2kudmFsdWU9ITF9fXJldHVybihyLHQpPT57Y29uc3Qgdj16LEk9QyxhPVU7cmV0dXJuIHMobikuaXNJbXBlcnNvbmF0aW5nJiZzKG4pLmltcGVyc29uYXRvcj8oZCgpLHkoYSx7a2V5OjAsImRhdGEtdGVzdGlkIjoiaW1wZXJzb25hdG9yLWNhcmQifSx7aGVhZGVyOmMoKCk9PltlKCJkaXYiLFIsW3Aodix7bmFtZToiaS1sdWNpZGUtdXNlci1jb2ciLGNsYXNzOiJzaXplLTQgdGV4dC13YXJuaW5nIn0pLHRbMF18fCh0WzBdPWUoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIn0sIiBJbXBlcnNvbmF0b3IgKHJlYWwgc2Vzc2lvbikgIiwtMSkpXSldKSxkZWZhdWx0OmMoKCk9PltlKCJkaXYiLFcsW2UoImRpdiIsbnVsbCxbZSgicCIsWCxmKHMobikuaW1wZXJzb25hdG9yLm5hbWUpLDEpLGUoInAiLFksZihzKG4pLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKSwxKV0pLHAoSSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0Iixsb2FkaW5nOnMoaSksImRhdGEtdGVzdGlkIjoic3RvcC1pbXBlcnNvbmF0aW9uIixvbkNsaWNrOmx9LHtkZWZhdWx0OmMoKCk9PlsuLi50WzFdfHwodFsxXT1beCgiIFN0b3AgaW1wZXJzb25hdGluZyAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyJdKV0pXSksXzoxfSkpOlMoIiIsITApfX19KSx0dD1PYmplY3QuYXNzaWduKFose19fbmFtZToiSW1wZXJzb25hdGVTdG9wQnV0dG9uIn0pLGV0PXtjbGFzczoic3BhY2UteS02IG1heC13LTN4bCJ9LHB0PWIoe19fbmFtZToiaW1wZXJzb25hdGUiLHNldHVwKCQpe0Yoe3RpdGxlOiJJbXBlcnNvbmF0aW9uIHNhbmRib3gifSk7Y29uc3Qgbj13KCk7cmV0dXJuKF8saSk9Pntjb25zdCBsPUEscj1OLHQ9RDtyZXR1cm4gZCgpLHkodCx7aWQ6ImltcGVyc29uYXRlLXNhbmRib3gifSx7aGVhZGVyOmMoKCk9PltwKHIse3RpdGxlOiJJbXBlcnNvbmF0aW9uIHNhbmRib3gifSx7bGVhZGluZzpjKCgpPT5bcChsKV0pLF86MX0pXSksYm9keTpjKCgpPT5bZSgiZGl2IixldCxbaVswXXx8KGlbMF09ZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSxbeCgiIEFkbWlucyB3aXRoIHRoZSAiKSxlKCJjb2RlIixudWxsLCJ1c2VyOmltcGVyc29uYXRlIikseCgiIGFiaWxpdHkgY2FuIHNpZ24gaW4gYXMgYW55IG90aGVyIHVzZXIuIFRoZSBLViBzZXNzaW9uIHN3YXBzIHRvIHRoZSB0YXJnZXQgc28gZXZlcnkgYXV0aG9yaXphdGlvbiBjaGVjayAoc2VydmVyIGFuZCBjbGllbnQpIHJlZmxlY3RzIHRoZSBpbXBlcnNvbmF0ZWQgdXNlci4gIildLC0xKSkscChUKSxwKHR0KSxzKG4pLmlzSW1wZXJzb25hdGluZz9TKCIiLCEwKTooZCgpLHkoUSx7a2V5OjB9KSldKV0pLF86MX0pfX19KTtleHBvcnR7cHQgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DTvXT-nR.js": "aW1wb3J0e2YgYXMgUyxhOSBhcyBJZSxhdSBhcyBfZSxhOCBhcyB6LG8gYXMgYyxoIGFzIEwsdyBhcyBoLEwgYXMgRCxpIGFzIGUsUCBhcyBLLGE3IGFzIGllLGEyIGFzIHBlLHIgYXMgVixSIGFzIExlLGE2IGFzIFBlLGE0IGFzIHFlLGJaIGFzIFNlLGIgYXMgXyxhYSBhcyBNLHYgYXMgQixhZyBhcyBnZSxsIGFzIE4sYWUgYXMgQmUsYmMgYXMgemUsWiBhcyBBZSxiayBhcyBZLGEzIGFzIG9lLGMwIGFzIEtlLGF6IGFzIFRlLGJZIGFzIFllLGJtIGFzIGV0LGFpIGFzIGRlLGFYIGFzIHR0LGMxIGFzIE5lLGMyIGFzIEZlLGMzIGFzIGNlLGMgYXMgUixGIGFzIFcsYk4gYXMgYXQsYzQgYXMgbnQsYWggYXMgSGUsSiBhcyBqZSxLIGFzIFdlLGFqIGFzIENlLGJxIGFzIGx0LGFGIGFzIGVlLE0gYXMgcSxhdiBhcyByZSxhdyBhcyBzZSxidiBhcyBpdCxiTSBhcyBvdCxhRyBhcyBmZSxOIGFzIHZlLGJRIGFzIHJ0LGFCIGFzICRlLEkgYXMgc3QsYnUgYXMgdXQsayBhcyBqLGJ0IGFzIEosZCBhcyBiZSx0IGFzIHRlLGFjIGFzIHVlLGJDIGFzIHllLGJWIGFzIG1lLGJXIGFzIGFlLGEgYXMgUSxxIGFzIG5lLGI2IGFzIGR0fWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e2kgYXMgY3R9ZnJvbSIuL0R4Q1dRc25sLmpzIjtpbXBvcnR7YSBhcyBFZSxIIGFzIGZ0LFAgYXMgdnR9ZnJvbSIuL0NZYW16TG01LmpzIjtpbXBvcnR7XyBhcyBwdH1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIGd0fWZyb20iLi9DWG9jNFVFUi5qcyI7Y29uc3RbVWUsaHRdPWllKCJDb2xsYXBzaWJsZVJvb3QiKTt2YXIgYnQ9Uyh7X19uYW1lOiJDb2xsYXBzaWJsZVJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChuLHtleHBvc2U6cyxlbWl0OmF9KXtjb25zdCBsPW4sZj1JZShsLCJvcGVuIixhLHtkZWZhdWx0VmFsdWU6bC5kZWZhdWx0T3BlbixwYXNzaXZlOmwub3Blbj09PXZvaWQgMH0pLHtkaXNhYmxlZDppLHVubW91bnRPbkhpZGU6dX09X2UobCk7cmV0dXJuIGh0KHtjb250ZW50SWQ6IiIsZGlzYWJsZWQ6aSxvcGVuOmYsdW5tb3VudE9uSGlkZTp1LG9uT3BlblRvZ2dsZTooKT0+e2kudmFsdWV8fChmLnZhbHVlPSFmLnZhbHVlKX19KSxzKHtvcGVuOmZ9KSx6KCksKHAseCk9PihjKCksTChlKEspLHthczpwLmFzLCJhcy1jaGlsZCI6bC5hc0NoaWxkLCJkYXRhLXN0YXRlIjplKGYpPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShpKT8iIjp2b2lkIDB9LHtkZWZhdWx0OmgoKCk9PltEKHAuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjplKGYpfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiXSkpfX0pLHl0PWJ0LG10PVMoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IkNvbGxhcHNpYmxlQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjb250ZW50Rm91bmQiXSxzZXR1cChuLHtlbWl0OnN9KXtjb25zdCBhPW4sbD1zLG89VWUoKTtvLmNvbnRlbnRJZHx8PXBlKHZvaWQgMCwicmVrYS1jb2xsYXBzaWJsZS1jb250ZW50Iik7Y29uc3QgZj1WKCkse2ZvcndhcmRSZWY6aSxjdXJyZW50RWxlbWVudDp1fT16KCkscD1WKDApLHg9VigwKSxJPU4oKCk9Pm8ub3Blbi52YWx1ZSksYj1WKEkudmFsdWUpLEU9VigpO0xlKCgpPT5bSS52YWx1ZSxmLnZhbHVlPy5wcmVzZW50XSxhc3luYygpPT57YXdhaXQgUGUoKTtjb25zdCBkPXUudmFsdWU7aWYoIWQpcmV0dXJuO0UudmFsdWU9RS52YWx1ZXx8e3RyYW5zaXRpb25EdXJhdGlvbjpkLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbixhbmltYXRpb25OYW1lOmQuc3R5bGUuYW5pbWF0aW9uTmFtZX0sZC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249IjBzIixkLnN0eWxlLmFuaW1hdGlvbk5hbWU9Im5vbmUiO2NvbnN0IGs9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt4LnZhbHVlPWsuaGVpZ2h0LHAudmFsdWU9ay53aWR0aCxiLnZhbHVlfHwoZC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249RS52YWx1ZS50cmFuc2l0aW9uRHVyYXRpb24sZC5zdHlsZS5hbmltYXRpb25OYW1lPUUudmFsdWUuYW5pbWF0aW9uTmFtZSl9LHtpbW1lZGlhdGU6ITB9KTtjb25zdCBDPU4oKCk9PmIudmFsdWUmJm8ub3Blbi52YWx1ZSk7cmV0dXJuIHFlKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Yi52YWx1ZT0hMX0pfSksU2UodSwiYmVmb3JlbWF0Y2giLGQ9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntvLm9uT3BlblRvZ2dsZSgpLGwoImNvbnRlbnRGb3VuZCIpfSl9KSwoZCxrKT0+KGMoKSxMKGUoZ2UpLHtyZWZfa2V5OiJwcmVzZW50UmVmIixyZWY6ZixwcmVzZW50OmQuZm9yY2VNb3VudHx8ZShvKS5vcGVuLnZhbHVlLCJmb3JjZS1tb3VudCI6ITB9LHtkZWZhdWx0OmgoKHtwcmVzZW50OnJ9KT0+W18oZShLKSxNKGQuJGF0dHJzLHtpZDplKG8pLmNvbnRlbnRJZCxyZWY6ZShpKSwiYXMtY2hpbGQiOmEuYXNDaGlsZCxhczpkLmFzLGhpZGRlbjpyP3ZvaWQgMDplKG8pLnVubW91bnRPbkhpZGUudmFsdWU/IiI6InVudGlsLWZvdW5kIiwiZGF0YS1zdGF0ZSI6Qy52YWx1ZT92b2lkIDA6ZShvKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShvKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLHN0eWxlOnsiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0IjpgJHt4LnZhbHVlfXB4YCwiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtd2lkdGgiOmAke3AudmFsdWV9cHhgfX0pLHtkZWZhdWx0OmgoKCk9PlshZShvKS51bm1vdW50T25IaWRlLnZhbHVlfHxyP0QoZC4kc2xvdHMsImRlZmF1bHQiLHtrZXk6MH0pOkIoInYtaWYiLCEwKV0pLF86Mn0sMTA0MCxbImlkIiwiYXMtY2hpbGQiLCJhcyIsImhpZGRlbiIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwic3R5bGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxrdD1tdCxMdD1TKHtfX25hbWU6IkNvbGxhcHNpYmxlVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAobil7Y29uc3Qgcz1uO3ooKTtjb25zdCBhPVVlKCk7cmV0dXJuKGwsbyk9PihjKCksTChlKEspLHt0eXBlOmwuYXM9PT0iYnV0dG9uIj8iYnV0dG9uIjp2b2lkIDAsYXM6bC5hcywiYXMtY2hpbGQiOnMuYXNDaGlsZCwiYXJpYS1jb250cm9scyI6ZShhKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOmUoYSkub3Blbi52YWx1ZSwiZGF0YS1zdGF0ZSI6ZShhKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShhKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLGRpc2FibGVkOmUoYSkuZGlzYWJsZWQ/LnZhbHVlLG9uQ2xpY2s6ZShhKS5vbk9wZW5Ub2dnbGV9LHtkZWZhdWx0OmgoKCk9PltEKGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0eXBlIiwiYXMiLCJhcy1jaGlsZCIsImFyaWEtY29udHJvbHMiLCJhcmlhLWV4cGFuZGVkIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkpfX0pLEN0PUx0O2Z1bmN0aW9uIHh0KHt0eXBlOm4sZGVmYXVsdFZhbHVlOnMsbW9kZWxWYWx1ZTphfSl7Y29uc3QgbD1hfHxzO3JldHVybiBhIT09dm9pZCAwfHxzIT09dm9pZCAwP0FycmF5LmlzQXJyYXkobCk/Im11bHRpcGxlIjoic2luZ2xlIjpuPz8ic2luZ2xlIn1mdW5jdGlvbiB3dCh7dHlwZTpuLGRlZmF1bHRWYWx1ZTpzLG1vZGVsVmFsdWU6YX0pe3JldHVybiBufHx4dCh7dHlwZTpuLGRlZmF1bHRWYWx1ZTpzLG1vZGVsVmFsdWU6YX0pfWZ1bmN0aW9uIEl0KHt0eXBlOm4sZGVmYXVsdFZhbHVlOnN9KXtyZXR1cm4gcyE9PXZvaWQgMD9zOm49PT0ic2luZ2xlIj92b2lkIDA6W119ZnVuY3Rpb24gX3QobixzKXtjb25zdCBhPU4oKCk9Pnd0KG4pKSxsPUllKG4sIm1vZGVsVmFsdWUiLHMse2RlZmF1bHRWYWx1ZTpJdChuKSxwYXNzaXZlOm4ubW9kZWxWYWx1ZT09PXZvaWQgMCxkZWVwOiEwfSk7ZnVuY3Rpb24gbyhpKXtpZihhLnZhbHVlPT09InNpbmdsZSIpbC52YWx1ZT1CZShpLGwudmFsdWUpP3ZvaWQgMDppO2Vsc2V7Y29uc3QgdT1BcnJheS5pc0FycmF5KGwudmFsdWUpP1suLi5sLnZhbHVlfHxbXV06W2wudmFsdWVdLmZpbHRlcihCb29sZWFuKTtpZihjdCh1LGkpKXtjb25zdCBwPXUuZmluZEluZGV4KHg9PkJlKHgsaSkpO3Uuc3BsaWNlKHAsMSl9ZWxzZSB1LnB1c2goaSk7bC52YWx1ZT11fX1jb25zdCBmPU4oKCk9PmEudmFsdWU9PT0ic2luZ2xlIik7cmV0dXJue21vZGVsVmFsdWU6bCxjaGFuZ2VNb2RlbFZhbHVlOm8saXNTaW5nbGU6Zn19Y29uc3RbT2UscXRdPWllKCJBY2NvcmRpb25Sb290Iik7dmFyIFR0PVMoe19fbmFtZToiQWNjb3JkaW9uUm9vdCIscHJvcHM6e2NvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmVydGljYWwifSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChuLHtlbWl0OnN9KXtjb25zdCBhPW4sbD1zLHtkaXI6byxkaXNhYmxlZDpmLHVubW91bnRPbkhpZGU6aX09X2UoYSksdT16ZShvKSx7bW9kZWxWYWx1ZTpwLGNoYW5nZU1vZGVsVmFsdWU6eCxpc1NpbmdsZTpJfT1fdChhLGwpLHtmb3J3YXJkUmVmOmIsY3VycmVudEVsZW1lbnQ6RX09eigpO3JldHVybiBxdCh7ZGlzYWJsZWQ6ZixkaXJlY3Rpb246dSxvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHBhcmVudEVsZW1lbnQ6RSxpc1NpbmdsZTpJLGNvbGxhcHNpYmxlOmEuY29sbGFwc2libGUsbW9kZWxWYWx1ZTpwLGNoYW5nZU1vZGVsVmFsdWU6eCx1bm1vdW50T25IaWRlOml9KSwoQyxkKT0+KGMoKSxMKGUoSykse3JlZjplKGIpLCJhcy1jaGlsZCI6Qy5hc0NoaWxkLGFzOkMuYXN9LHtkZWZhdWx0OmgoKCk9PltEKEMuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplKHApfSldKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KSxWZT1UdCx4ZT0oZnVuY3Rpb24obil7cmV0dXJuIG4uT3Blbj0ib3BlbiIsbi5DbG9zZWQ9ImNsb3NlZCIsbn0pKHhlfHx7fSk7Y29uc3RbR2UsRXRdPWllKCJBY2NvcmRpb25JdGVtIik7dmFyIE90PVMoe19fbmFtZToiQWNjb3JkaW9uSXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChuLHtleHBvc2U6c30pe2NvbnN0IGE9bixsPU9lKCksbz1OKCgpPT5sLmlzU2luZ2xlLnZhbHVlP2EudmFsdWU9PT1sLm1vZGVsVmFsdWUudmFsdWU6QXJyYXkuaXNBcnJheShsLm1vZGVsVmFsdWUudmFsdWUpJiZsLm1vZGVsVmFsdWUudmFsdWUuaW5jbHVkZXMoYS52YWx1ZSkpLGY9TigoKT0+bC5kaXNhYmxlZC52YWx1ZXx8YS5kaXNhYmxlZCksaT1OKCgpPT5mLnZhbHVlPyIiOnZvaWQgMCksdT1OKCgpPT5vLnZhbHVlP3hlLk9wZW46eGUuQ2xvc2VkKTtzKHtvcGVuOm8sZGF0YURpc2FibGVkOml9KTtjb25zdHtjdXJyZW50UmVmOnAsY3VycmVudEVsZW1lbnQ6eH09eigpO0V0KHtvcGVuOm8sZGF0YVN0YXRlOnUsZGlzYWJsZWQ6ZixkYXRhRGlzYWJsZWQ6aSx0cmlnZ2VySWQ6IiIsY3VycmVudFJlZjpwLGN1cnJlbnRFbGVtZW50OngsdmFsdWU6TigoKT0+YS52YWx1ZSl9KTtmdW5jdGlvbiBJKGIpe2NvbnN0IEU9Yi50YXJnZXQ7aWYoQXJyYXkuZnJvbShsLnBhcmVudEVsZW1lbnQudmFsdWU/LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXSIpPz9bXSkuZmluZEluZGV4KGs9Pms9PT1FKT09PS0xKXJldHVybiBudWxsO0VlKGIsRSxsLnBhcmVudEVsZW1lbnQudmFsdWUse2Fycm93S2V5T3B0aW9uczpsLm9yaWVudGF0aW9uLGRpcjpsLmRpcmVjdGlvbi52YWx1ZSxmb2N1czohMH0pfXJldHVybihiLEUpPT4oYygpLEwoZSh5dCkseyJkYXRhLW9yaWVudGF0aW9uIjplKGwpLm9yaWVudGF0aW9uLCJkYXRhLWRpc2FibGVkIjppLnZhbHVlLCJkYXRhLXN0YXRlIjp1LnZhbHVlLGRpc2FibGVkOmYudmFsdWUsb3BlbjpvLnZhbHVlLGFzOmEuYXMsImFzLWNoaWxkIjphLmFzQ2hpbGQsInVubW91bnQtb24taGlkZSI6YS51bm1vdW50T25IaWRlPz9lKGwpLnVubW91bnRPbkhpZGUudmFsdWUsb25LZXlkb3duOkFlKEksWyJ1cCIsImRvd24iLCJsZWZ0IiwicmlnaHQiLCJob21lIiwiZW5kIl0pfSx7ZGVmYXVsdDpoKCgpPT5bRChiLiRzbG90cywiZGVmYXVsdCIse29wZW46by52YWx1ZX0pXSksXzozfSw4LFsiZGF0YS1vcmllbnRhdGlvbiIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLXN0YXRlIiwiZGlzYWJsZWQiLCJvcGVuIiwiYXMiLCJhcy1jaGlsZCIsInVubW91bnQtb24taGlkZSJdKSl9fSksTXQ9T3QsRHQ9Uyh7X19uYW1lOiJBY2NvcmRpb25Db250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChuKXtjb25zdCBzPW4sYT1PZSgpLGw9R2UoKTtyZXR1cm4geigpLChvLGYpPT4oYygpLEwoZShrdCkse3JvbGU6InJlZ2lvbiIsImFzLWNoaWxkIjpzLmFzQ2hpbGQsYXM6by5hcywiZm9yY2UtbW91bnQiOnMuZm9yY2VNb3VudCwiYXJpYS1sYWJlbGxlZGJ5IjplKGwpLnRyaWdnZXJJZCwiZGF0YS1zdGF0ZSI6ZShsKS5kYXRhU3RhdGUudmFsdWUsImRhdGEtZGlzYWJsZWQiOmUobCkuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjplKGEpLm9yaWVudGF0aW9uLHN0eWxlOnsiLS1yZWthLWFjY29yZGlvbi1jb250ZW50LXdpZHRoIjoidmFyKC0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKSIsIi0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQiOiJ2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KSJ9LG9uQ29udGVudEZvdW5kOmZbMF18fChmWzBdPWk9PmUoYSkuY2hhbmdlTW9kZWxWYWx1ZShlKGwpLnZhbHVlLnZhbHVlKSl9LHtkZWZhdWx0OmgoKCk9PltEKG8uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIiwiZm9yY2UtbW91bnQiLCJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtb3JpZW50YXRpb24iXSkpfX0pLEJ0PUR0LE50PVMoe19fbmFtZToiQWNjb3JkaW9uVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IHM9bixhPU9lKCksbD1HZSgpO2wudHJpZ2dlcklkfHw9cGUodm9pZCAwLCJyZWthLWFjY29yZGlvbi10cmlnZ2VyIik7ZnVuY3Rpb24gbygpe2NvbnN0IGY9YS5pc1NpbmdsZS52YWx1ZSYmbC5vcGVuLnZhbHVlJiYhYS5jb2xsYXBzaWJsZTtsLmRpc2FibGVkLnZhbHVlfHxmfHxhLmNoYW5nZU1vZGVsVmFsdWUobC52YWx1ZS52YWx1ZSl9cmV0dXJuKGYsaSk9PihjKCksTChlKEN0KSx7aWQ6ZShsKS50cmlnZ2VySWQscmVmOmUobCkuY3VycmVudFJlZiwiZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbSI6IiIsYXM6cy5hcywiYXMtY2hpbGQiOnMuYXNDaGlsZCwiYXJpYS1kaXNhYmxlZCI6ZShsKS5kaXNhYmxlZC52YWx1ZXx8dm9pZCAwLCJhcmlhLWV4cGFuZGVkIjplKGwpLm9wZW4udmFsdWV8fCExLCJkYXRhLWRpc2FibGVkIjplKGwpLmRhdGFEaXNhYmxlZC52YWx1ZSwiZGF0YS1vcmllbnRhdGlvbiI6ZShhKS5vcmllbnRhdGlvbiwiZGF0YS1zdGF0ZSI6ZShsKS5kYXRhU3RhdGUudmFsdWUsZGlzYWJsZWQ6ZShsKS5kaXNhYmxlZC52YWx1ZSxvbkNsaWNrOm99LHtkZWZhdWx0OmgoKCk9PltEKGYuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJpZCIsImFzIiwiYXMtY2hpbGQiLCJhcmlhLWRpc2FibGVkIiwiYXJpYS1leHBhbmRlZCIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLW9yaWVudGF0aW9uIiwiZGF0YS1zdGF0ZSIsImRpc2FibGVkIl0pKX19KSxSZT1OdDtmdW5jdGlvbiBoZShuKXtyZXR1cm4gbj8ib3BlbiI6ImNsb3NlZCJ9ZnVuY3Rpb24gWmUobixzKXtyZXR1cm5gJHtufS10cmlnZ2VyLSR7c31gfWZ1bmN0aW9uIE1lKG4scyl7cmV0dXJuYCR7bn0tY29udGVudC0ke3N9YH1jb25zdCAkdD0ibmF2aWdhdGlvbk1lbnUubGlua1NlbGVjdCIsbGU9Im5hdmlnYXRpb25NZW51LnJvb3RDb250ZW50RGlzbWlzcyI7ZnVuY3Rpb24gd2Uobil7Y29uc3Qgcz1bXSxhPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIobixOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTpsPT57Y29uc3Qgbz1sLnRhZ05hbWU9PT0iSU5QVVQiJiZsLnR5cGU9PT0iaGlkZGVuIjtyZXR1cm4gbC5kaXNhYmxlZHx8bC5oaWRkZW58fG8/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDpsLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7YS5uZXh0Tm9kZSgpOylzLnB1c2goYS5jdXJyZW50Tm9kZSk7cmV0dXJuIHN9ZnVuY3Rpb24gSmUobil7Y29uc3Qgcz1ZKCk7cmV0dXJuIG4uc29tZShhPT5hPT09cz8hMDooYS5mb2N1cygpLFkoKSE9PXMpKX1mdW5jdGlvbiBWdChuKXtyZXR1cm4gbi5mb3JFYWNoKHM9PntzLmRhdGFzZXQudGFiaW5kZXg9cy5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fCIiLHMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIil9KSwoKT0+e24uZm9yRWFjaChzPT57Y29uc3QgYT1zLmRhdGFzZXQudGFiaW5kZXg7cy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixhKX0pfX1mdW5jdGlvbiBRZShuKXtyZXR1cm4gcz0+cy5wb2ludGVyVHlwZT09PSJtb3VzZSI/bihzKTp2b2lkIDB9Y29uc3RbWCxSdF09aWUoWyJOYXZpZ2F0aW9uTWVudVJvb3QiLCJOYXZpZ2F0aW9uTWVudVN1YiJdLCJOYXZpZ2F0aW9uTWVudUNvbnRleHQiKTt2YXIgUHQ9Uyh7X19uYW1lOiJOYXZpZ2F0aW9uTWVudVJvb3QiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGVmYXVsdFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjIwMH0sc2tpcERlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MzAwfSxkaXNhYmxlQ2xpY2tUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZUhvdmVyVHJpZ2dlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpc2FibGVQb2ludGVyTGVhdmVDbG9zZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5hdiJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYT1uLG89SWUoYSwibW9kZWxWYWx1ZSIscyx7ZGVmYXVsdFZhbHVlOmEuZGVmYXVsdFZhbHVlPz8iIixwYXNzaXZlOmEubW9kZWxWYWx1ZT09PXZvaWQgMH0pLGY9VigiIikse2ZvcndhcmRSZWY6aSxjdXJyZW50RWxlbWVudDp1fT16KCkscD1WKCkseD1WKCksST1WKCkse2dldEl0ZW1zOmIsQ29sbGVjdGlvblNsb3Q6RX09b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUiLGlzUHJvdmlkZXI6ITB9KSx7ZGVsYXlEdXJhdGlvbjpDLHNraXBEZWxheUR1cmF0aW9uOmQsZGlyOmssZGlzYWJsZUNsaWNrVHJpZ2dlcjpyLGRpc2FibGVIb3ZlclRyaWdnZXI6JCx1bm1vdW50T25IaWRlOnZ9PV9lKGEpLHk9emUoayksTz1LZSghMSxkKSxtPU4oKCk9Pm8udmFsdWUhPT0iInx8Ty52YWx1ZT8xNTA6Qy52YWx1ZSksdz1ZZShnPT57dHlwZW9mIGc9PSJzdHJpbmciJiYoZi52YWx1ZT1vLnZhbHVlLG8udmFsdWU9Zyl9LG0pO1RlKCgpPT57aWYoIW8udmFsdWUpcmV0dXJuO2NvbnN0IGc9YigpLm1hcChUPT5ULnJlZik7SS52YWx1ZT1nLmZpbmQoVD0+VC5pZC5pbmNsdWRlcyhvLnZhbHVlKSl9KSxTZSh1LGxlLHQpLFJ0KHtpc1Jvb3RNZW51OiEwLG1vZGVsVmFsdWU6byxwcmV2aW91c1ZhbHVlOmYsYmFzZUlkOnBlKHZvaWQgMCwicmVrYS1uYXZpZ2F0aW9uLW1lbnUiKSxkaXNhYmxlQ2xpY2tUcmlnZ2VyOnIsZGlzYWJsZUhvdmVyVHJpZ2dlcjokLGRpcjp5LHVubW91bnRPbkhpZGU6dixvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHJvb3ROYXZpZ2F0aW9uTWVudTp1LGluZGljYXRvclRyYWNrOnAsYWN0aXZlVHJpZ2dlcjpJLG9uSW5kaWNhdG9yVHJhY2tDaGFuZ2U6Zz0+e3AudmFsdWU9Z30sdmlld3BvcnQ6eCxvblZpZXdwb3J0Q2hhbmdlOmc9Pnt4LnZhbHVlPWd9LG9uVHJpZ2dlckVudGVyOmc9Pnt3KGcpfSxvblRyaWdnZXJMZWF2ZTooKT0+e08udmFsdWU9ITAsdygiIil9LG9uQ29udGVudEVudGVyOigpPT57dygpfSxvbkNvbnRlbnRMZWF2ZTooKT0+e2EuZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlfHx3KCIiKX0sb25JdGVtU2VsZWN0Omc9PntmLnZhbHVlPW8udmFsdWUsby52YWx1ZT1nfSxvbkl0ZW1EaXNtaXNzOnR9KTtmdW5jdGlvbiB0KCl7Zi52YWx1ZT1vLnZhbHVlLG8udmFsdWU9IiJ9cmV0dXJuKGcsVCk9PihjKCksTChlKEUpLG51bGwse2RlZmF1bHQ6aCgoKT0+W18oZShLKSx7cmVmOmUoaSksYXM6Zy5hcywiYXMtY2hpbGQiOmcuYXNDaGlsZCwiZGF0YS1vcmllbnRhdGlvbiI6Zy5vcmllbnRhdGlvbixkaXI6ZSh5KSwiZGF0YS1yZWthLW5hdmlnYXRpb24tbWVudSI6IiJ9LHtkZWZhdWx0OmgoKCk9PltEKGcuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplKG8pfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1vcmllbnRhdGlvbiIsImRpciJdKV0pLF86M30pKX19KSxTdD1QdDtjb25zdFtEZSx6dF09aWUoIk5hdmlnYXRpb25NZW51SXRlbSIpO3ZhciBBdD1TKHtfX25hbWU6Ik5hdmlnYXRpb25NZW51SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LHNldHVwKG4pe2NvbnN0IHM9bjt6KCk7Y29uc3R7Z2V0SXRlbXM6YX09b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUifSksbD1YKCksbz1wZShzLnZhbHVlKSxmPVYoKSxpPVYoKSx1PU1lKGwuYmFzZUlkLG8pO2xldCBwPSgpPT4oe30pO2NvbnN0IHg9VighMSk7YXN5bmMgZnVuY3Rpb24gSShkPSJzdGFydCIpe2NvbnN0IGs9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodSk7aWYoayl7cCgpO2NvbnN0IHI9d2Uoayk7ci5sZW5ndGgmJkplKGQ9PT0ic3RhcnQiP3I6ci5yZXZlcnNlKCkpfX1mdW5jdGlvbiBiKCl7Y29uc3QgZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh1KTtpZihkKXtjb25zdCBrPXdlKGQpO2subGVuZ3RoJiYocD1WdChrKSl9fXp0KHt2YWx1ZTpvLGNvbnRlbnRJZDp1LHRyaWdnZXJSZWY6Zixmb2N1c1Byb3h5UmVmOmksd2FzRXNjYXBlQ2xvc2VSZWY6eCxvbkVudHJ5S2V5RG93bjpJLG9uRm9jdXNQcm94eUVudGVyOkksb25Db250ZW50Rm9jdXNPdXRzaWRlOmIsb25Sb290Q29udGVudENsb3NlOmJ9KTtmdW5jdGlvbiBFKCl7bC5vbkl0ZW1EaXNtaXNzKCksZi52YWx1ZT8uZm9jdXMoKX1mdW5jdGlvbiBDKGQpe2NvbnN0IGs9WSgpO2lmKGQua2V5Q29kZT09PTMyfHxkLmtleT09PSJFbnRlciIpaWYobC5tb2RlbFZhbHVlLnZhbHVlPT09byl7RSgpLGQucHJldmVudERlZmF1bHQoKTtyZXR1cm59ZWxzZXtkLnRhcmdldC5jbGljaygpLGQucHJldmVudERlZmF1bHQoKTtyZXR1cm59Y29uc3Qgcj1hKCkuZmlsdGVyKHY9PnYucmVmLnBhcmVudEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgiZGF0YS1tZW51LWl0ZW0iKSkubWFwKHY9PnYucmVmKTtpZighci5pbmNsdWRlcyhrKSlyZXR1cm47Y29uc3QgJD1FZShkLGssdm9pZCAwLHtpdGVtc0FycmF5OnIsbG9vcDohMX0pOyQmJiQ/LmZvY3VzKCksZC5wcmV2ZW50RGVmYXVsdCgpLGQuc3RvcFByb3BhZ2F0aW9uKCl9cmV0dXJuKGQsayk9PihjKCksTChlKEspLHsiYXMtY2hpbGQiOmQuYXNDaGlsZCxhczpkLmFzLCJkYXRhLW1lbnUtaXRlbSI6IiIsb25LZXlkb3duOkFlKEMsWyJ1cCIsImRvd24iLCJsZWZ0IiwicmlnaHQiLCJob21lIiwiZW5kIiwic3BhY2UiXSl9LHtkZWZhdWx0OmgoKCk9PltEKGQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KSxLdD1BdCxGdD1TKHtfX25hbWU6Ik5hdmlnYXRpb25NZW51Q29udGVudEltcGwiLHByb3BzOntkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIl0sc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYT1uLGw9cyx7Z2V0SXRlbXM6b309b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUifSkse2ZvcndhcmRSZWY6ZixjdXJyZW50RWxlbWVudDppfT16KCksdT1YKCkscD1EZSgpLHg9WmUodS5iYXNlSWQscC52YWx1ZSksST1NZSh1LmJhc2VJZCxwLnZhbHVlKSxiPVYobnVsbCksRT1OKCgpPT57Y29uc3Qgdj1vKCkubWFwKGc9PmcucmVmLmlkLnNwbGl0KCJ0cmlnZ2VyLSIpWzFdKTt1LmRpci52YWx1ZT09PSJydGwiJiZ2LnJldmVyc2UoKTtjb25zdCB5PXYuaW5kZXhPZih1Lm1vZGVsVmFsdWUudmFsdWUpLE89di5pbmRleE9mKHUucHJldmlvdXNWYWx1ZS52YWx1ZSksbT1wLnZhbHVlPT09dS5tb2RlbFZhbHVlLnZhbHVlLHc9Tz09PXYuaW5kZXhPZihwLnZhbHVlKTtpZighbSYmIXcpcmV0dXJuIGIudmFsdWU7Y29uc3QgdD0oKCk9PntpZih5IT09Tyl7aWYobSYmTyE9PS0xKXJldHVybiB5Pk8/ImZyb20tZW5kIjoiZnJvbS1zdGFydCI7aWYodyYmeSE9PS0xKXJldHVybiB5Pk8/InRvLXN0YXJ0IjoidG8tZW5kIn1yZXR1cm4gbnVsbH0pKCk7cmV0dXJuIGIudmFsdWU9dCx0fSk7ZnVuY3Rpb24gQyh2KXtpZihsKCJmb2N1c091dHNpZGUiLHYpLGwoImludGVyYWN0T3V0c2lkZSIsdiksdi5kZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQuaGFzQXR0cmlidXRlKCJkYXRhLW5hdmlnYXRpb24tbWVudS10cmlnZ2VyIikmJnYucHJldmVudERlZmF1bHQoKSwhdi5kZWZhdWx0UHJldmVudGVkKXtwLm9uQ29udGVudEZvY3VzT3V0c2lkZSgpO2NvbnN0IE89di50YXJnZXQ7dS5yb290TmF2aWdhdGlvbk1lbnU/LnZhbHVlPy5jb250YWlucyhPKSYmdi5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBkKHYpe2lmKGwoInBvaW50ZXJEb3duT3V0c2lkZSIsdiksIXYuZGVmYXVsdFByZXZlbnRlZCl7Y29uc3QgeT12LnRhcmdldCxPPW8oKS5zb21lKHc9PncucmVmLmNvbnRhaW5zKHkpKSxtPXUuaXNSb290TWVudSYmdS52aWV3cG9ydC52YWx1ZT8uY29udGFpbnMoeSk7KE98fG18fCF1LmlzUm9vdE1lbnUpJiZ2LnByZXZlbnREZWZhdWx0KCl9fVRlKHY9Pntjb25zdCB5PWkudmFsdWU7aWYodS5pc1Jvb3RNZW51JiZ5KXtjb25zdCBPPSgpPT57dS5vbkl0ZW1EaXNtaXNzKCkscC5vblJvb3RDb250ZW50Q2xvc2UoKSx5LmNvbnRhaW5zKFkoKSkmJnAudHJpZ2dlclJlZi52YWx1ZT8uZm9jdXMoKX07eS5hZGRFdmVudExpc3RlbmVyKGxlLE8pLHYoKCk9PnkucmVtb3ZlRXZlbnRMaXN0ZW5lcihsZSxPKSl9fSk7ZnVuY3Rpb24gayh2KXtsKCJlc2NhcGVLZXlEb3duIix2KSx2LmRlZmF1bHRQcmV2ZW50ZWR8fCh1Lm9uSXRlbURpc21pc3MoKSxwLnRyaWdnZXJSZWY/LnZhbHVlPy5mb2N1cygpLHAud2FzRXNjYXBlQ2xvc2VSZWYudmFsdWU9ITApfWZ1bmN0aW9uIHIodil7aWYodi50YXJnZXQuY2xvc2VzdCgiW2RhdGEtcmVrYS1uYXZpZ2F0aW9uLW1lbnVdIikhPT11LnJvb3ROYXZpZ2F0aW9uTWVudS52YWx1ZSlyZXR1cm47Y29uc3QgeT12LmFsdEtleXx8di5jdHJsS2V5fHx2Lm1ldGFLZXksTz12LmtleT09PSJUYWIiJiYheSxtPXdlKHYuY3VycmVudFRhcmdldCk7aWYoTyl7Y29uc3QgdD1ZKCksZz1tLmZpbmRJbmRleChQPT5QPT09dCksQT12LnNoaWZ0S2V5P20uc2xpY2UoMCxnKS5yZXZlcnNlKCk6bS5zbGljZShnKzEsbS5sZW5ndGgpO2lmKEplKEEpKXYucHJldmVudERlZmF1bHQoKTtlbHNle3AuZm9jdXNQcm94eVJlZi52YWx1ZT8uZm9jdXMoKTtyZXR1cm59fUVlKHYsWSgpLHZvaWQgMCx7aXRlbXNBcnJheTptLGxvb3A6ITEsZW5hYmxlSWdub3JlZEVsZW1lbnQ6ITB9KT8uZm9jdXMoKX1mdW5jdGlvbiAkKCl7Y29uc3Qgdj1uZXcgRXZlbnQobGUse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pO2kudmFsdWU/LmRpc3BhdGNoRXZlbnQodil9cmV0dXJuKHYseSk9PihjKCksTChlKGV0KSxNKHtpZDplKEkpLHJlZjplKGYpLCJhcmlhLWxhYmVsbGVkYnkiOmUoeCksImRhdGEtbW90aW9uIjpFLnZhbHVlLCJkYXRhLXN0YXRlIjplKGhlKShlKHUpLm1vZGVsVmFsdWUudmFsdWU9PT1lKHApLnZhbHVlKSwiZGF0YS1vcmllbnRhdGlvbiI6ZSh1KS5vcmllbnRhdGlvbn0sYSx7b25LZXlkb3duOnIsb25Fc2NhcGVLZXlEb3duOmssb25Qb2ludGVyRG93bk91dHNpZGU6ZCxvbkZvY3VzT3V0c2lkZTpDLG9uRGlzbWlzczokfSkse2RlZmF1bHQ6aCgoKT0+W0Qodi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsImRhdGEtbW90aW9uIiwiZGF0YS1zdGF0ZSIsImRhdGEtb3JpZW50YXRpb24iXSkpfX0pLEh0PUZ0LGp0PVMoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik5hdmlnYXRpb25NZW51Q29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKG4se2VtaXQ6c30pe2NvbnN0IGE9bixsPXMsbz1kZSh0dChhLCJmb3JjZU1vdW50IiksbCkse2ZvcndhcmRSZWY6Zn09eigpLGk9WCgpLHU9RGUoKSxwPU4oKCk9PnUudmFsdWU9PT1pLm1vZGVsVmFsdWUudmFsdWUpLHg9TigoKT0+aS52aWV3cG9ydC52YWx1ZSYmIWkubW9kZWxWYWx1ZS52YWx1ZSYmaS5wcmV2aW91c1ZhbHVlLnZhbHVlP2kucHJldmlvdXNWYWx1ZS52YWx1ZT09PXUudmFsdWU6ITEpO3JldHVybihJLGIpPT4oYygpLEwoRmUse3RvOmUoTmUpJiZlKGkpLnZpZXdwb3J0LnZhbHVlP2UoaSkudmlld3BvcnQudmFsdWU6ImJvZHkiLGRpc2FibGVkOmUoTmUpJiZlKGkpLnZpZXdwb3J0LnZhbHVlPyFlKGkpLnZpZXdwb3J0LnZhbHVlOiEwfSxbXyhlKGdlKSx7cHJlc2VudDpJLmZvcmNlTW91bnR8fHAudmFsdWV8fHgudmFsdWUsImZvcmNlLW1vdW50IjohZShpKS51bm1vdW50T25IaWRlLnZhbHVlfSx7ZGVmYXVsdDpoKCh7cHJlc2VudDpFfSk9PltfKEh0LE0oe3JlZjplKGYpLCJkYXRhLXN0YXRlIjplKGhlKShwLnZhbHVlKSxzdHlsZTp7cG9pbnRlckV2ZW50czohcC52YWx1ZSYmZShpKS5pc1Jvb3RNZW51PyJub25lIjp2b2lkIDB9fSx7Li4uSS4kYXR0cnMsLi4uZShvKX0se2hpZGRlbjohRSxvblBvaW50ZXJlbnRlcjpiWzBdfHwoYlswXT1DPT5lKGkpLm9uQ29udGVudEVudGVyKGUodSkudmFsdWUpKSxvblBvaW50ZXJsZWF2ZTpiWzFdfHwoYlsxXT1DPT5lKFFlKSgoKT0+ZShpKS5vbkNvbnRlbnRMZWF2ZSgpKShDKSksb25Qb2ludGVyRG93bk91dHNpZGU6YlsyXXx8KGJbMl09Qz0+bCgicG9pbnRlckRvd25PdXRzaWRlIixDKSksb25Gb2N1c091dHNpZGU6YlszXXx8KGJbM109Qz0+bCgiZm9jdXNPdXRzaWRlIixDKSksb25JbnRlcmFjdE91dHNpZGU6Yls0XXx8KGJbNF09Qz0+bCgiaW50ZXJhY3RPdXRzaWRlIixDKSl9KSx7ZGVmYXVsdDpoKCgpPT5bRChJLiRzbG90cywiZGVmYXVsdCIpXSksXzoyfSwxMDQwLFsiZGF0YS1zdGF0ZSIsInN0eWxlIiwiaGlkZGVuIl0pXSksXzozfSw4LFsicHJlc2VudCIsImZvcmNlLW1vdW50Il0pXSw4LFsidG8iLCJkaXNhYmxlZCJdKSl9fSksV3Q9anQsVXQ9Uyh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiTmF2aWdhdGlvbk1lbnVJbmRpY2F0b3IiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IHM9bix7Zm9yd2FyZFJlZjphfT16KCksbD1YKCksbz1WKCksZj1OKCgpPT5sLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiKSxpPU4oKCk9PiEhbC5tb2RlbFZhbHVlLnZhbHVlKSx7YWN0aXZlVHJpZ2dlcjp1fT1sO2Z1bmN0aW9uIHAoKXt1LnZhbHVlJiYoby52YWx1ZT17c2l6ZTpmLnZhbHVlP3UudmFsdWUub2Zmc2V0V2lkdGg6dS52YWx1ZS5vZmZzZXRIZWlnaHQscG9zaXRpb246Zi52YWx1ZT91LnZhbHVlLm9mZnNldExlZnQ6dS52YWx1ZS5vZmZzZXRUb3B9KX1yZXR1cm4gVGUoKCk9PntsLm1vZGVsVmFsdWUudmFsdWUmJnAoKX0pLGNlKHUscCksY2UobC5pbmRpY2F0b3JUcmFjayxwKSwoeCxJKT0+ZShsKS5pbmRpY2F0b3JUcmFjay52YWx1ZT8oYygpLEwoRmUse2tleTowLHRvOmUobCkuaW5kaWNhdG9yVHJhY2sudmFsdWV9LFtfKGUoZ2UpLHtwcmVzZW50OnguZm9yY2VNb3VudHx8aS52YWx1ZX0se2RlZmF1bHQ6aCgoKT0+W18oZShLKSxNKHtyZWY6ZShhKSwiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiZGF0YS1zdGF0ZSI6aS52YWx1ZT8idmlzaWJsZSI6ImhpZGRlbiIsImRhdGEtb3JpZW50YXRpb24iOmUobCkub3JpZW50YXRpb24sImFzLWNoaWxkIjpzLmFzQ2hpbGQsYXM6eC5hcyxzdHlsZTp7Li4uby52YWx1ZT97Ii0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUiOmAke28udmFsdWUuc2l6ZX1weGAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uIjpgJHtvLnZhbHVlLnBvc2l0aW9ufXB4YH06e319fSx4LiRhdHRycykse2RlZmF1bHQ6aCgoKT0+W0QoeC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIiwiZGF0YS1vcmllbnRhdGlvbiIsImFzLWNoaWxkIiwiYXMiLCJzdHlsZSJdKV0pLF86M30sOCxbInByZXNlbnQiXSldLDgsWyJ0byJdKSk6Qigidi1pZiIsITApfX0pLEd0PVV0LFp0PVMoe19fbmFtZToiTmF2aWdhdGlvbk1lbnVMaW5rIixwcm9wczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJhIn19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYT1uLGw9cyx7Q29sbGVjdGlvbkl0ZW06b309b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUifSk7eigpO2FzeW5jIGZ1bmN0aW9uIGYoaSl7Y29uc3QgdT1uZXcgQ3VzdG9tRXZlbnQoJHQse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxkZXRhaWw6e29yaWdpbmFsRXZlbnQ6aX19KTtpZihsKCJzZWxlY3QiLHUpLCF1LmRlZmF1bHRQcmV2ZW50ZWQmJiFpLm1ldGFLZXkpe2NvbnN0IHA9bmV3IEN1c3RvbUV2ZW50KGxlLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTtpLnRhcmdldD8uZGlzcGF0Y2hFdmVudChwKX19cmV0dXJuKGksdSk9PihjKCksTChlKG8pLG51bGwse2RlZmF1bHQ6aCgoKT0+W18oZShLKSx7YXM6aS5hcywiZGF0YS1hY3RpdmUiOmkuYWN0aXZlPyIiOnZvaWQgMCwiYXJpYS1jdXJyZW50IjppLmFjdGl2ZT8icGFnZSI6dm9pZCAwLCJhcy1jaGlsZCI6YS5hc0NoaWxkLG9uQ2xpY2s6Zn0se2RlZmF1bHQ6aCgoKT0+W0QoaS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiZGF0YS1hY3RpdmUiLCJhcmlhLWN1cnJlbnQiLCJhcy1jaGlsZCJdKV0pLF86M30pKX19KSxrZT1adCxKdD1TKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudUxpc3QiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidWwifX0sc2V0dXAobil7Y29uc3Qgcz1uLGE9WCgpLHtmb3J3YXJkUmVmOmwsY3VycmVudEVsZW1lbnQ6b309eigpO3JldHVybiBxZSgoKT0+e2Eub25JbmRpY2F0b3JUcmFja0NoYW5nZShvLnZhbHVlKX0pLChmLGkpPT4oYygpLEwoZShLKSx7cmVmOmUobCksc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9fSx7ZGVmYXVsdDpoKCgpPT5bXyhlKEspLE0oZi4kYXR0cnMseyJhcy1jaGlsZCI6cy5hc0NoaWxkLGFzOmYuYXMsImRhdGEtb3JpZW50YXRpb24iOmUoYSkub3JpZW50YXRpb259KSx7ZGVmYXVsdDpoKCgpPT5bRChmLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzLWNoaWxkIiwiYXMiLCJkYXRhLW9yaWVudGF0aW9uIl0pXSksXzozfSw1MTIpKX19KSxRdD1KdDtjb25zdCBYdD1bImFyaWEtb3ducyJdO3ZhciBZdD1TKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudVRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKG4pe2NvbnN0IHM9bixhPVgoKSxsPURlKCkse0NvbGxlY3Rpb25JdGVtOm99PW9lKHtrZXk6Ik5hdmlnYXRpb25NZW51In0pLHtmb3J3YXJkUmVmOmYsY3VycmVudEVsZW1lbnQ6aX09eigpLHU9VigiIikscD1WKCIiKSx4PUtlKCExLDMwMCksST1WKCExKSxiPU4oKCk9PmwudmFsdWU9PT1hLm1vZGVsVmFsdWUudmFsdWUpO3FlKCgpPT57bC50cmlnZ2VyUmVmPWksdS52YWx1ZT1aZShhLmJhc2VJZCxsLnZhbHVlKSxwLnZhbHVlPU1lKGEuYmFzZUlkLGwudmFsdWUpfSk7ZnVuY3Rpb24gRSgpe2EuZGlzYWJsZUhvdmVyVHJpZ2dlci52YWx1ZXx8KEkudmFsdWU9ITEsbC53YXNFc2NhcGVDbG9zZVJlZi52YWx1ZT0hMSl9ZnVuY3Rpb24gQyh5KXtpZighYS5kaXNhYmxlSG92ZXJUcmlnZ2VyLnZhbHVlJiZ5LnBvaW50ZXJUeXBlPT09Im1vdXNlIil7aWYocy5kaXNhYmxlZHx8SS52YWx1ZXx8bC53YXNFc2NhcGVDbG9zZVJlZi52YWx1ZXx8eC52YWx1ZSlyZXR1cm47YS5vblRyaWdnZXJFbnRlcihsLnZhbHVlKSx4LnZhbHVlPSEwfX1mdW5jdGlvbiBkKHkpe2lmKCFhLmRpc2FibGVIb3ZlclRyaWdnZXIudmFsdWUmJnkucG9pbnRlclR5cGU9PT0ibW91c2UiKXtpZihzLmRpc2FibGVkKXJldHVybjthLm9uVHJpZ2dlckxlYXZlKCkseC52YWx1ZT0hMX19ZnVuY3Rpb24gayh5KXsoISgicG9pbnRlclR5cGUiaW4geSl8fHkucG9pbnRlclR5cGU9PT0ibW91c2UiKSYmYS5kaXNhYmxlQ2xpY2tUcmlnZ2VyLnZhbHVlfHx4LnZhbHVlfHwoYi52YWx1ZT9hLm9uSXRlbVNlbGVjdCgiIik6YS5vbkl0ZW1TZWxlY3QobC52YWx1ZSksSS52YWx1ZT1iLnZhbHVlKX1mdW5jdGlvbiByKHkpe2NvbnN0IG09e2hvcml6b250YWw6IkFycm93RG93biIsdmVydGljYWw6YS5kaXIudmFsdWU9PT0icnRsIj8iQXJyb3dMZWZ0IjoiQXJyb3dSaWdodCJ9W2Eub3JpZW50YXRpb25dO2IudmFsdWUmJnkua2V5PT09bSYmKGwub25FbnRyeUtleURvd24oKSx5LnByZXZlbnREZWZhdWx0KCkseS5zdG9wUHJvcGFnYXRpb24oKSl9ZnVuY3Rpb24gJCh5KXt5JiYobC5mb2N1c1Byb3h5UmVmLnZhbHVlPW50KHkpKX1mdW5jdGlvbiB2KHkpe2NvbnN0IE89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobC5jb250ZW50SWQpLG09eS5yZWxhdGVkVGFyZ2V0LHc9bT09PWkudmFsdWUsdD1PPy5jb250YWlucyhtKTsod3x8IXQpJiZsLm9uRm9jdXNQcm94eUVudGVyKHc/InN0YXJ0IjoiZW5kIil9cmV0dXJuKHksTyk9PihjKCksUihXLG51bGwsW18oZShvKSxudWxsLHtkZWZhdWx0OmgoKCk9PltfKGUoSyksTSh7aWQ6dS52YWx1ZSxyZWY6ZShmKSxkaXNhYmxlZDp5LmRpc2FibGVkLCJkYXRhLWRpc2FibGVkIjp5LmRpc2FibGVkPyIiOnZvaWQgMCwiZGF0YS1zdGF0ZSI6ZShoZSkoYi52YWx1ZSksImRhdGEtbmF2aWdhdGlvbi1tZW51LXRyaWdnZXIiOiIiLCJhcmlhLWV4cGFuZGVkIjpiLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjpwLnZhbHVlLCJhcy1jaGlsZCI6cy5hc0NoaWxkLGFzOnkuYXN9LHkuJGF0dHJzLHtvblBvaW50ZXJlbnRlcjpFLG9uUG9pbnRlcm1vdmU6QyxvblBvaW50ZXJsZWF2ZTpkLG9uQ2xpY2s6ayxvbktleWRvd246cn0pLHtkZWZhdWx0OmgoKCk9PltEKHkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJkaXNhYmxlZCIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLXN0YXRlIiwiYXJpYS1leHBhbmRlZCIsImFyaWEtY29udHJvbHMiLCJhcy1jaGlsZCIsImFzIl0pXSksXzozfSksYi52YWx1ZT8oYygpLFIoVyx7a2V5OjB9LFtfKGUoYXQpLHtyZWY6JCwiYXJpYS1oaWRkZW4iOiJ0cnVlIix0YWJpbmRleDowLG9uRm9jdXM6dn0pLGUoYSkudmlld3BvcnQ/KGMoKSxSKCJzcGFuIix7a2V5OjAsImFyaWEtb3ducyI6cC52YWx1ZX0sbnVsbCw4LFh0KSk6Qigidi1pZiIsITApXSw2NCkpOkIoInYtaWYiLCEwKV0sNjQpKX19KSxlYT1ZdCx0YT1TKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudVZpZXdwb3J0Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiY2VudGVyIn0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3Qgcz1uLHtmb3J3YXJkUmVmOmEsY3VycmVudEVsZW1lbnQ6bH09eigpLG89WCgpLHthY3RpdmVUcmlnZ2VyOmYscm9vdE5hdmlnYXRpb25NZW51OmksbW9kZWxWYWx1ZTp1fT1vLHA9VigpLHg9VigpLEk9TigoKT0+ISFvLm1vZGVsVmFsdWUudmFsdWUpO0xlKGwsKCk9PntvLm9uVmlld3BvcnRDaGFuZ2UobC52YWx1ZSl9KTtjb25zdCBiPVYoKTtMZShbdSxJXSwoKT0+e1BlKCgpPT57bC52YWx1ZSYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Y29uc3QgQz1sLnZhbHVlPy5xdWVyeVNlbGVjdG9yKCJbZGF0YS1zdGF0ZT1vcGVuXSIpO2IudmFsdWU9Q30pfSl9LHtpbW1lZGlhdGU6ITB9KTtmdW5jdGlvbiBFKCl7aWYoYi52YWx1ZSYmZi52YWx1ZSYmaS52YWx1ZSl7Y29uc3QgQz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgsZD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0LGs9aS52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWYudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse29mZnNldFdpZHRoOiQsb2Zmc2V0SGVpZ2h0OnZ9PWIudmFsdWUseT1yLmxlZnQtay5sZWZ0LE89ci50b3Atay50b3A7bGV0IG09bnVsbCx3PW51bGw7c3dpdGNoKHMuYWxpZ24pe2Nhc2Uic3RhcnQiOm09eSx3PU87YnJlYWs7Y2FzZSJlbmQiOm09eS0kK3Iud2lkdGgsdz1PLXYrci5oZWlnaHQ7YnJlYWs7ZGVmYXVsdDptPXktJC8yK3Iud2lkdGgvMix3PU8tdi8yK3IuaGVpZ2h0LzJ9Y29uc3QgdD0xMDttK2subGVmdDx0JiYobT10LWsubGVmdCk7Y29uc3QgZz1tK2subGVmdCskO2c+Qy10JiYobS09Zy1DK3QsbTx0LWsubGVmdCYmKG09dC1rLmxlZnQpKSx3K2sudG9wPHQmJih3PXQtay50b3ApO2NvbnN0IFQ9dytrLnRvcCt2O1Q+ZC10JiYody09VC1kK3Qsdzx0LWsudG9wJiYodz10LWsudG9wKSksbT1NYXRoLnJvdW5kKG0pLHc9TWF0aC5yb3VuZCh3KSx4LnZhbHVlPXtsZWZ0Om0sdG9wOnd9fX1yZXR1cm4gY2UoYiwoKT0+e2IudmFsdWUmJihwLnZhbHVlPXt3aWR0aDpiLnZhbHVlLm9mZnNldFdpZHRoLGhlaWdodDpiLnZhbHVlLm9mZnNldEhlaWdodH0sRSgpKX0pLGNlKFtnbG9iYWxUaGlzLmRvY3VtZW50Py5ib2R5LGldLCgpPT57RSgpfSksKEMsZCk9PihjKCksTChlKGdlKSx7cHJlc2VudDpDLmZvcmNlTW91bnR8fEkudmFsdWUsImZvcmNlLW1vdW50IjohZShvKS51bm1vdW50T25IaWRlLnZhbHVlLG9uQWZ0ZXJMZWF2ZTpkWzJdfHwoZFsyXT0oKT0+e3AudmFsdWU9dm9pZCAwLHgudmFsdWU9dm9pZCAwfSl9LHtkZWZhdWx0OmgoKHtwcmVzZW50Omt9KT0+W18oZShLKSxNKEMuJGF0dHJzLHtyZWY6ZShhKSxhczpDLmFzLCJhcy1jaGlsZCI6Qy5hc0NoaWxkLCJkYXRhLXN0YXRlIjplKGhlKShJLnZhbHVlKSwiZGF0YS1vcmllbnRhdGlvbiI6ZShvKS5vcmllbnRhdGlvbixzdHlsZTp7cG9pbnRlckV2ZW50czohSS52YWx1ZSYmZShvKS5pc1Jvb3RNZW51PyJub25lIjp2b2lkIDAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGgiOnAudmFsdWU/YCR7cC52YWx1ZT8ud2lkdGh9cHhgOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1oZWlnaHQiOnAudmFsdWU/YCR7cC52YWx1ZT8uaGVpZ2h0fXB4YDp2b2lkIDAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtbGVmdCI6eC52YWx1ZT9gJHt4LnZhbHVlPy5sZWZ0fXB4YDp2b2lkIDAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtdG9wIjp4LnZhbHVlP2Ake3gudmFsdWU/LnRvcH1weGA6dm9pZCAwfSxoaWRkZW46IWssb25Qb2ludGVyZW50ZXI6ZFswXXx8KGRbMF09cj0+ZShvKS5vbkNvbnRlbnRFbnRlcihlKG8pLm1vZGVsVmFsdWUudmFsdWUpKSxvblBvaW50ZXJsZWF2ZTpkWzFdfHwoZFsxXT1yPT5lKFFlKSgoKT0+ZShvKS5vbkNvbnRlbnRMZWF2ZSgpKShyKSl9KSx7ZGVmYXVsdDpoKCgpPT5bRChDLiRzbG90cywiZGVmYXVsdCIpXSksXzoyfSwxMDQwLFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkYXRhLW9yaWVudGF0aW9uIiwic3R5bGUiLCJoaWRkZW4iXSldKSxfOjN9LDgsWyJwcmVzZW50IiwiZm9yY2UtbW91bnQiXSkpfX0pLGFhPXRhO2NvbnN0IG5hPXtzbG90czp7Y29udGVudDoiYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzY2FsZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pbl0gb3JpZ2luLSgtLXJla2EtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIGZvY3VzOm91dGxpbmUtbm9uZSBwb2ludGVyLWV2ZW50cy1hdXRvIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCJ9fSxsYT17X19uYW1lOiJVUG9wb3ZlciIscHJvcHM6e21vZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJjbGljayJ9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc21pc3NpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sY2xvc2VEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfX0sZW1pdHM6WyJjbG9zZTpwcmV2ZW50IiwidXBkYXRlOm9wZW4iXSxzZXR1cChuLHtlbWl0OnN9KXtjb25zdCBhPW4sbD1zLG89SGUoKSxmPWplKCksaT1XZSgicG9wb3ZlciIsYSksdT1hLm1vZGU9PT0iaG92ZXIiP0NlKGEsImRlZmF1bHRPcGVuIiwib3BlbiIsIm9wZW5EZWxheSIsImNsb3NlRGVsYXkiKTpDZShhLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJtb2RhbCIpLHA9ZGUodSxsKSx4PWx0KGVlKCgpPT5hLnBvcnRhbCkpLEk9ZWUoKCk9PmZlKGEuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4fSkpLGI9TigoKT0+YS5kaXNtaXNzaWJsZT97cG9pbnRlckRvd25PdXRzaWRlOnJ0fTpbImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKHIsJCk9PihyWyRdPXY9Pnt2LnByZXZlbnREZWZhdWx0KCksbCgiY2xvc2U6cHJldmVudCIpfSxyKSx7fSkpLEU9ZWUoKCk9PmZlKGEuYXJyb3cse3JvdW5kZWQ6ITB9KSksQz1OKCgpPT52ZSh7ZXh0ZW5kOnZlKG5hKSwuLi5mLnVpPy5wb3BvdmVyfHx7fX0pKHtzaWRlOkkudmFsdWUuc2lkZX0pKSxkPU4oKCk9PmEubW9kZT09PSJob3ZlciI/ZnQ6dnQpO3JldHVybihrLHIpPT4oYygpLEwoZShkKS5Sb290LHJlKHNlKGUocCkpKSx7ZGVmYXVsdDpoKCh7b3BlbjokLGNsb3NlOnZ9KT0+W28uZGVmYXVsdHx8bi5yZWZlcmVuY2U/KGMoKSxMKGUoZCkuVHJpZ2dlcix7a2V5OjAsImFzLWNoaWxkIjoiIixyZWZlcmVuY2U6bi5yZWZlcmVuY2UsY2xhc3M6cShhLmNsYXNzKX0se2RlZmF1bHQ6aCgoKT0+W0Qoay4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOiR9KV0pLF86Mn0sMTAzMixbInJlZmVyZW5jZSIsImNsYXNzIl0pKTpCKCIiLCEwKSwiQW5jaG9yImluIGQudmFsdWUmJm8uYW5jaG9yPyhjKCksTChlKGQpLkFuY2hvcix7a2V5OjEsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6aCgoKT0+W0Qoay4kc2xvdHMsImFuY2hvciIscmUoc2Uodj97Y2xvc2U6dn06e30pKSldKSxfOjJ9LDEwMjQpKTpCKCIiLCEwKSxfKGUoZCkuUG9ydGFsLHJlKHNlKGUoeCkpKSx7ZGVmYXVsdDpoKCgpPT5bXyhlKGl0KSxudWxsLHtkZWZhdWx0OmgoKCk9PltfKGUoZCkuQ29udGVudCxNKEkudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpDLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshby5kZWZhdWx0JiZhLmNsYXNzLGUoaSk/LmNvbnRlbnRdfSl9LG90KGIudmFsdWUpKSx7ZGVmYXVsdDpoKCgpPT5bRChrLiRzbG90cywiY29udGVudCIscmUoc2Uodj97Y2xvc2U6dn06e30pKSksbi5hcnJvdz8oYygpLEwoZShkKS5BcnJvdyxNKHtrZXk6MH0sRS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpDLnZhbHVlLmFycm93KHtjbGFzczplKGkpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTpCKCIiLCEwKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDI0KV0pLF86Mn0sMTA0MCldKSxfOjN9LDE2KSl9fSxpYT17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGZsZXggZ2FwLTEuNSBbJj5kaXZdOm1pbi13LTAiLGxpc3Q6Imlzb2xhdGUgbWluLXctMCIsbGFiZWw6InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IGZvbnQtc2VtaWJvbGQgdGV4dC14cy81IHRleHQtaGlnaGxpZ2h0ZWQgcHgtMi41IHB5LTEuNSIsaXRlbToibWluLXctMCIsbGluazoiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1tZWRpdW0gdGV4dC1zbSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6cm91bmRlZC1tZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZGFyazpmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctMiIsbGlua0xlYWRpbmdJY29uOiJzaHJpbmstMCBzaXplLTUiLGxpbmtMZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGlua0xlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGxpbmtMZWFkaW5nQ2hpcFNpemU6InNtIixsaW5rVHJhaWxpbmc6Imdyb3VwIG1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGxpbmtUcmFpbGluZ0JhZGdlOiJzaHJpbmstMCIsbGlua1RyYWlsaW5nQmFkZ2VTaXplOiJzbSIsbGlua1RyYWlsaW5nSWNvbjoic2l6ZS01IHRyYW5zZm9ybSBzaHJpbmstMCBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTpyb3RhdGUtMTgwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCIsbGlua0xhYmVsOiJ0cnVuY2F0ZSIsbGlua0xhYmVsRXh0ZXJuYWxJY29uOiJpbmxpbmUtYmxvY2sgc2l6ZS0zIGFsaWduLXRvcCB0ZXh0LWRpbW1lZCIsY2hpbGRMaXN0OiJpc29sYXRlIixjaGlsZExhYmVsOiJ0ZXh0LXhzIHRleHQtaGlnaGxpZ2h0ZWQiLGNoaWxkSXRlbToiIixjaGlsZExpbms6Imdyb3VwIHJlbGF0aXZlIHNpemUtZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHRleHQtc3RhcnQgdGV4dC1zbSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6cm91bmRlZC1tZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZGFyazpmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctMiIsY2hpbGRMaW5rV3JhcHBlcjoibWluLXctMCIsY2hpbGRMaW5rSWNvbjoic2l6ZS01IHNocmluay0wIixjaGlsZExpbmtMYWJlbDoidHJ1bmNhdGUiLGNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uOiJpbmxpbmUtYmxvY2sgc2l6ZS0zIGFsaWduLXRvcCB0ZXh0LWRpbW1lZCIsY2hpbGRMaW5rRGVzY3JpcHRpb246InRleHQtbXV0ZWQiLHNlcGFyYXRvcjoicHgtMiBoLXB4IGJnLWJvcmRlciIsdmlld3BvcnRXcmFwcGVyOiJhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgZmxleCB3LWZ1bGwiLHZpZXdwb3J0OiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBoLSgtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWhlaWdodCkgdy1mdWxsIHRyYW5zaXRpb24tW3dpZHRoLGhlaWdodCxsZWZ0LHJpZ2h0XSBkdXJhdGlvbi0yMDAgb3JpZ2luLVt0b3BfY2VudGVyXSBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzY2FsZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pbl0gei0xIixjb250ZW50OiIiLGluZGljYXRvcjoiYWJzb2x1dGUgbGVmdC0wIGRhdGEtW3N0YXRlPXZpc2libGVdOmFuaW1hdGUtW2ZhZGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWhpZGRlbl06YW5pbWF0ZS1bZmFkZS1vdXRfMTAwbXNfZWFzZS1pbl0gZGF0YS1bc3RhdGU9aGlkZGVuXTpvcGFjaXR5LTAgYm90dG9tLTAgei0yIHctKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUpIHRyYW5zbGF0ZS14LSgtLXJla2EtbmF2aWdhdGlvbi1tZW51LWluZGljYXRvci1wb3NpdGlvbikgZmxleCBoLTIuNSBpdGVtcy1lbmQganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tW3RyYW5zbGF0ZSx3aWR0aF0gZHVyYXRpb24tMjAwIixhcnJvdzoicmVsYXRpdmUgdG9wLVs1MCVdIHNpemUtMi41IHJvdGF0ZS00NSBib3JkZXIgYm9yZGVyLWRlZmF1bHQgYmctZGVmYXVsdCB6LTEgcm91bmRlZC14cyJ9LHZhcmlhbnRzOntjb2xvcjp7cHJpbWFyeTp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1wcmltYXJ5IixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctcHJpbWFyeSJ9LHNlY29uZGFyeTp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1zZWNvbmRhcnkiLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1zZWNvbmRhcnkifSxzdWNjZXNzOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXN1Y2Nlc3MiLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1zdWNjZXNzIn0saW5mbzp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1pbmZvIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW5mbyJ9LHdhcm5pbmc6e2xpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctd2FybmluZyIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXdhcm5pbmcifSxlcnJvcjp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1lcnJvciIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWVycm9yIn0sbmV1dHJhbDp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1pbnZlcnRlZCIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWludmVydGVkIn19LGhpZ2hsaWdodENvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50OntwaWxsOiIiLGxpbms6IiJ9LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIixsaXN0OiJmbGV4IGl0ZW1zLWNlbnRlciIsaXRlbToicHktMiIsbGluazoicHgtMi41IHB5LTEuNSBiZWZvcmU6aW5zZXQteC1weCBiZWZvcmU6aW5zZXQteS0wIixjaGlsZExpc3Q6ImdyaWQgcC0yIixjaGlsZExpbms6InB4LTMgcHktMiBnYXAtMiBiZWZvcmU6aW5zZXQteC1weCBiZWZvcmU6aW5zZXQteS0wIixjaGlsZExpbmtMYWJlbDoiZm9udC1tZWRpdW0iLGNvbnRlbnQ6ImFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgbWF4LWgtWzcwdmhdIG92ZXJmbG93LXktYXV0byJ9LHZlcnRpY2FsOntyb290OiJmbGV4LWNvbCIsbGluazoiZmxleC1yb3cgcHgtMi41IHB5LTEuNSBiZWZvcmU6aW5zZXQteS1weCBiZWZvcmU6aW5zZXQteC0wIixjaGlsZExhYmVsOiJweC0xLjUgcHktMC41IixjaGlsZExpbms6InAtMS41IGdhcC0xLjUgYmVmb3JlOmluc2V0LXktcHggYmVmb3JlOmluc2V0LXgtMCJ9fSxjb250ZW50T3JpZW50YXRpb246e2hvcml6b250YWw6e3ZpZXdwb3J0V3JhcHBlcjoianVzdGlmeS1jZW50ZXIiLGNvbnRlbnQ6ImRhdGEtW21vdGlvbj1mcm9tLXN0YXJ0XTphbmltYXRlLVtlbnRlci1mcm9tLWxlZnRfMjAwbXNfZWFzZV0gZGF0YS1bbW90aW9uPWZyb20tZW5kXTphbmltYXRlLVtlbnRlci1mcm9tLXJpZ2h0XzIwMG1zX2Vhc2VdIGRhdGEtW21vdGlvbj10by1zdGFydF06YW5pbWF0ZS1bZXhpdC10by1sZWZ0XzIwMG1zX2Vhc2VdIGRhdGEtW21vdGlvbj10by1lbmRdOmFuaW1hdGUtW2V4aXQtdG8tcmlnaHRfMjAwbXNfZWFzZV0ifSx2ZXJ0aWNhbDp7dmlld3BvcnQ6InNtOnctKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGgpIGxlZnQtKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtbGVmdCkgcnRsOmxlZnQtYXV0byBydGw6cmlnaHQtW2NhbGMoMTAwJS12YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0KS12YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCkpXSJ9fSxhY3RpdmU6e3RydWU6e2NoaWxkTGluazoiYmVmb3JlOmJnLWVsZXZhdGVkIHRleHQtaGlnaGxpZ2h0ZWQiLGNoaWxkTGlua0ljb246InRleHQtZGVmYXVsdCJ9LGZhbHNlOntsaW5rOiJ0ZXh0LW11dGVkIixsaW5rTGVhZGluZ0ljb246InRleHQtZGltbWVkIixjaGlsZExpbms6WyJob3ZlcjpiZWZvcmU6YmctZWxldmF0ZWQvNTAgdGV4dC1kZWZhdWx0IGhvdmVyOnRleHQtaGlnaGxpZ2h0ZWQiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxjaGlsZExpbmtJY29uOlsidGV4dC1kaW1tZWQgZ3JvdXAtaG92ZXI6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXX19LGRpc2FibGVkOnt0cnVlOntsaW5rOiJjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS03NSJ9fSxoaWdobGlnaHQ6e3RydWU6IiJ9LGxldmVsOnt0cnVlOiIifSxjb2xsYXBzZWQ6e3RydWU6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7b3JpZW50YXRpb246Imhvcml6b250YWwiLGNvbnRlbnRPcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2NoaWxkTGlzdDoiZ3JpZC1jb2xzLTIgZ2FwLTIifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixjb250ZW50T3JpZW50YXRpb246InZlcnRpY2FsIixjbGFzczp7Y2hpbGRMaXN0OiJnYXAtMSIsY29udGVudDoidy02MCJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixjb2xsYXBzZWQ6ITEsY2xhc3M6e2NoaWxkTGlzdDoibXMtNSBib3JkZXItcyBib3JkZXItZGVmYXVsdCIsY2hpbGRJdGVtOiJwcy0xLjUgLW1zLXB4Iixjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtjb2xsYXBzaWJsZS1kb3duXzIwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW2NvbGxhcHNpYmxlLXVwXzIwMG1zX2Vhc2Utb3V0XSBvdmVyZmxvdy1oaWRkZW4ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsY29sbGFwc2VkOiEwLGNsYXNzOntsaW5rOiJweC0xLjUiLGxpbmtMYWJlbDoiaGlkZGVuIixsaW5rVHJhaWxpbmc6ImhpZGRlbiIsY29udGVudDoic2hhZG93LXNtIHJvdW5kZWQtc20gbWluLWgtNiBwLTEifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixoaWdobGlnaHQ6ITAsY2xhc3M6e2xpbms6WyJhZnRlcjphYnNvbHV0ZSBhZnRlcjotYm90dG9tLTIgYWZ0ZXI6aW5zZXQteC0yLjUgYWZ0ZXI6YmxvY2sgYWZ0ZXI6aC1weCBhZnRlcjpyb3VuZGVkLWZ1bGwiLCJhZnRlcjp0cmFuc2l0aW9uLWNvbG9ycyJdfX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGNsYXNzOntsaW5rOlsiYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6LXN0YXJ0LTEuNSBhZnRlcjppbnNldC15LTAuNSBhZnRlcjpibG9jayBhZnRlcjp3LXB4IGFmdGVyOnJvdW5kZWQtZnVsbCIsImFmdGVyOnRyYW5zaXRpb24tY29sb3JzIl19fSx7ZGlzYWJsZWQ6ITEsYWN0aXZlOiExLHZhcmlhbnQ6InBpbGwiLGNsYXNzOntsaW5rOlsiaG92ZXI6dGV4dC1oaWdobGlnaHRlZCBob3ZlcjpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxsaW5rTGVhZGluZ0ljb246WyJncm91cC1ob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0se2Rpc2FibGVkOiExLGFjdGl2ZTohMSx2YXJpYW50OiJwaWxsIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1kZWZhdWx0In19LHtkaXNhYmxlZDohMSx2YXJpYW50OiJwaWxsIixoaWdobGlnaHQ6ITAsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOntsaW5rOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctZWxldmF0ZWQvNTAifX0se2Rpc2FibGVkOiExLHZhcmlhbnQ6InBpbGwiLGhpZ2hsaWdodDohMSxhY3RpdmU6ITEsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOntsaW5rOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctZWxldmF0ZWQvNTAifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtcHJpbWFyeSIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXByaW1hcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1wcmltYXJ5In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtc2Vjb25kYXJ5IixsaW5rTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXN1Y2Nlc3MiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1zdWNjZXNzIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1pbmZvIixsaW5rTGVhZGluZ0ljb246InRleHQtaW5mbyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtd2FybmluZyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXdhcm5pbmcgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1lcnJvciIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWVycm9yIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZXJyb3IifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1oaWdobGlnaHRlZCBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWhpZ2hsaWdodGVkIn19LHt2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsaGlnaGxpZ2h0OiExLGNsYXNzOntsaW5rOiJiZWZvcmU6YmctZWxldmF0ZWQifX0se3ZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxoaWdobGlnaHQ6ITAsZGlzYWJsZWQ6ITEsY2xhc3M6e2xpbms6WyJob3ZlcjpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXX19LHtkaXNhYmxlZDohMSxhY3RpdmU6ITEsdmFyaWFudDoibGluayIsY2xhc3M6e2xpbms6WyJob3Zlcjp0ZXh0LWhpZ2hsaWdodGVkIiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsaW5rTGVhZGluZ0ljb246WyJncm91cC1ob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0se2Rpc2FibGVkOiExLGFjdGl2ZTohMSx2YXJpYW50OiJsaW5rIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1kZWZhdWx0In19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXByaW1hcnkiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1wcmltYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXNlY29uZGFyeSIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXNlY29uZGFyeSBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXNlY29uZGFyeSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6ImxpbmsiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1zdWNjZXNzIixsaW5rTGVhZGluZ0ljb246InRleHQtc3VjY2VzcyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtaW5mbyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWluZm8gZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXdhcm5pbmciLGxpbmtMZWFkaW5nSWNvbjoidGV4dC13YXJuaW5nIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtd2FybmluZyJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtZXJyb3IiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1lcnJvciBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWVycm9yIn19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LWhpZ2hsaWdodGVkIixsaW5rTGVhZGluZ0ljb246InRleHQtaGlnaGxpZ2h0ZWQgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1oaWdobGlnaHRlZCJ9fSx7aGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLXByaW1hcnkifX0se2hpZ2hsaWdodENvbG9yOiJzZWNvbmRhcnkiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLXNlY29uZGFyeSJ9fSx7aGlnaGxpZ2h0Q29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLXN1Y2Nlc3MifX0se2hpZ2hsaWdodENvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJhZnRlcjpiZy1pbmZvIn19LHtoaWdobGlnaHRDb2xvcjoid2FybmluZyIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6Ymctd2FybmluZyJ9fSx7aGlnaGxpZ2h0Q29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJhZnRlcjpiZy1lcnJvciJ9fSx7aGlnaGxpZ2h0Q29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLWludmVydGVkIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHRDb2xvcjoicHJpbWFyeSIsdmFyaWFudDoicGlsbCJ9fSxjYT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVOYXZpZ2F0aW9uTWVudSIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJtdWx0aXBsZSJ9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbEljb246e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0saXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxjb2xsYXBzZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdG9vbHRpcDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3BvdmVyOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHRDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29udGVudE9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmFsdWUifSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGRpc2FibGVDbGlja1RyaWdnZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZUhvdmVyVHJpZ2dlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGRpc2FibGVQb2ludGVyTGVhdmVDbG9zZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGFwc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKG4se2VtaXQ6c30pe2NvbnN0IGE9bixsPXMsbz1IZSgpLGY9amUoKSxpPVdlKCJuYXZpZ2F0aW9uTWVudSIsYSksdT1kZShOKCgpPT4oe2FzOmEuYXMsZGVsYXlEdXJhdGlvbjphLmRlbGF5RHVyYXRpb24sc2tpcERlbGF5RHVyYXRpb246YS5za2lwRGVsYXlEdXJhdGlvbixvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLGRpc2FibGVDbGlja1RyaWdnZXI6YS5kaXNhYmxlQ2xpY2tUcmlnZ2VyLGRpc2FibGVIb3ZlclRyaWdnZXI6YS5kaXNhYmxlSG92ZXJUcmlnZ2VyLGRpc2FibGVQb2ludGVyTGVhdmVDbG9zZTphLmRpc2FibGVQb2ludGVyTGVhdmVDbG9zZSx1bm1vdW50T25IaWRlOmEudW5tb3VudE9uSGlkZX0pKSxsKSxwPWRlKENlKGEsImNvbGxhcHNpYmxlIiwiZGlzYWJsZWQiLCJ0eXBlIiwidW5tb3VudE9uSGlkZSIpLGwpLHg9ZWUoKCk9PmEuY29udGVudCksST1lZSgoKT0+ZmUodHlwZW9mIGEudG9vbHRpcD09ImJvb2xlYW4iP3t9OmEudG9vbHRpcCx7Li4uYS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJntkZWxheUR1cmF0aW9uOjAsY29udGVudDp7c2lkZToicmlnaHQifX19KSksYj1lZSgoKT0+ZmUodHlwZW9mIGEucG9wb3Zlcj09ImJvb2xlYW4iP3t9OmEucG9wb3Zlcix7bW9kZToiaG92ZXIiLGNvbnRlbnQ6e3NpZGU6InJpZ2h0IixhbGlnbjoic3RhcnQiLGFsaWduT2Zmc2V0OjJ9fSkpLFtFLENdPSRlKCksW2Qsa109JGUoe3Byb3BzOntpdGVtOk9iamVjdCxpbmRleDpOdW1iZXIsbGV2ZWw6TnVtYmVyLGxpc3RJbmRleDpOdW1iZXJ9fSkscj1OKCgpPT52ZSh7ZXh0ZW5kOnZlKGlhKSwuLi5mLnVpPy5uYXZpZ2F0aW9uTWVudXx8e319KSh7b3JpZW50YXRpb246YS5vcmllbnRhdGlvbixjb250ZW50T3JpZW50YXRpb246YS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCI/dm9pZCAwOmEuY29udGVudE9yaWVudGF0aW9uLGNvbGxhcHNlZDphLmNvbGxhcHNlZCxjb2xvcjphLmNvbG9yLHZhcmlhbnQ6YS52YXJpYW50LGhpZ2hsaWdodDphLmhpZ2hsaWdodCxoaWdobGlnaHRDb2xvcjphLmhpZ2hsaWdodENvbG9yfHxhLmNvbG9yfSkpLCQ9TigoKT0+YS5pdGVtcz8ubGVuZ3RoP2R0KGEuaXRlbXMpP2EuaXRlbXM6W2EuaXRlbXNdOltdKTtmdW5jdGlvbiB2KG0sdyx0LGcpe2NvbnN0IFQ9JC52YWx1ZS5sZW5ndGg+MT9gZ3JvdXAtJHtnfS1gOiIiO3JldHVybiBKKG0sYS52YWx1ZUtleSk/Pyh0PjA/YCR7VH1pdGVtLSR7dH0tJHt3fWA6YCR7VH1pdGVtLSR7d31gKX1mdW5jdGlvbiB5KG0sdz0wLHQ9MCl7Y29uc3QgZz1tLnJlZHVjZSgoVCxBLFApPT4oKEEuZGVmYXVsdE9wZW58fEEub3BlbikmJlQucHVzaCh2KEEsUCx3LHQpKSxUKSxbXSk7cmV0dXJuIGEudHlwZT09PSJzaW5nbGUiP2dbMF06Z31mdW5jdGlvbiBPKG0sdyl7dy5jaGlsZHJlbj8ubGVuZ3RoJiYoYS5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj9tLnByZXZlbnREZWZhdWx0KCk6YS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJiFhLmNvbGxhcHNlZCYmKG0ucHJldmVudERlZmF1bHQoKSxtLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuKG0sdyk9PihjKCksUihXLG51bGwsW18oZShFKSxudWxsLHtkZWZhdWx0OmgoKHtpdGVtOnQsYWN0aXZlOmcsaW5kZXg6VH0pPT5bRChtLiRzbG90cyx0LnNsb3R8fCJpdGVtIix7aXRlbTp0LGluZGV4OlQsYWN0aXZlOmcsdWk6ci52YWx1ZX0sKCk9PltEKG0uJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOnQsYWN0aXZlOmcsaW5kZXg6VCx1aTpyLnZhbHVlfSwoKT0+W3QuYXZhdGFyPyhjKCksTChzdCxNKHtrZXk6MCxzaXplOnQudWk/LmxpbmtMZWFkaW5nQXZhdGFyU2l6ZXx8ZShpKT8ubGlua0xlYWRpbmdBdmF0YXJTaXplfHxyLnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyU2l6ZSgpfSx0LmF2YXRhcix7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQXZhdGFyIixjbGFzczpyLnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyKHtjbGFzczpbZShpKT8ubGlua0xlYWRpbmdBdmF0YXIsdC51aT8ubGlua0xlYWRpbmdBdmF0YXJdLGFjdGl2ZTpnLGRpc2FibGVkOiEhdC5kaXNhYmxlZH0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6dC5pY29uJiZ0LmNoaXA/KGMoKSxMKHV0LE0oe2tleToxLHNpemU6dC51aT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8ZShpKT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8ci52YWx1ZS5saW5rTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiJ9LHR5cGVvZiB0LmNoaXA9PSJvYmplY3QiP3QuY2hpcDp7fSx7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQ2hpcCJ9KSx7ZGVmYXVsdDpoKCgpPT5bXyhqLHtuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpxKHIudmFsdWUubGlua0xlYWRpbmdJY29uKHtjbGFzczpbZShpKT8ubGlua0xlYWRpbmdJY29uLHQudWk/LmxpbmtMZWFkaW5nSWNvbl0sYWN0aXZlOmcsZGlzYWJsZWQ6ISF0LmRpc2FibGVkfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJzaXplIl0pKTp0Lmljb24/KGMoKSxMKGose2tleToyLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJsaW5rTGVhZGluZ0ljb24iLGNsYXNzOnEoci52YWx1ZS5saW5rTGVhZGluZ0ljb24oe2NsYXNzOltlKGkpPy5saW5rTGVhZGluZ0ljb24sdC51aT8ubGlua0xlYWRpbmdJY29uXSxhY3RpdmU6ZyxkaXNhYmxlZDohIXQuZGlzYWJsZWR9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCldKSxlKEopKHQsYS5sYWJlbEtleSl8fG9bdC5zbG90P2Ake3Quc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl0/KGMoKSxSKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxpbmtMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmxpbmtMYWJlbCh7Y2xhc3M6W2UoaSk/LmxpbmtMYWJlbCx0LnVpPy5saW5rTGFiZWxdfSkpfSxbRChtLiRzbG90cyx0LnNsb3Q/YCR7dC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOnQsYWN0aXZlOmcsaW5kZXg6VH0sKCk9PltiZSh0ZShlKEopKHQsYS5sYWJlbEtleSkpLDEpXSksdC50YXJnZXQ9PT0iX2JsYW5rIiYmbi5leHRlcm5hbEljb24hPT0hMT8oYygpLEwoaix7a2V5OjAsbmFtZTp0eXBlb2Ygbi5leHRlcm5hbEljb249PSJzdHJpbmciP24uZXh0ZXJuYWxJY29uOmUoZikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImxpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6cShyLnZhbHVlLmxpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UoaSk/LmxpbmtMYWJlbEV4dGVybmFsSWNvbix0LnVpPy5saW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTpnfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOkIoIiIsITApXSwyKSk6QigiIiwhMCksdC5iYWRnZXx8dC5iYWRnZT09PTB8fG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJih0LmNoaWxkcmVuPy5sZW5ndGh8fG9bdC5zbG90P2Ake3Quc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKXx8bi5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJnQuY2hpbGRyZW4/Lmxlbmd0aHx8dC50cmFpbGluZ0ljb258fG9bdC5zbG90P2Ake3Quc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIl0/KGMoKSxMKHVlKG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGgmJiFuLmNvbGxhcHNlZD9lKFJlKToic3BhbiIpLHtrZXk6MSxhczpuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmdC5jaGlsZHJlbj8ubGVuZ3RoJiYhbi5jb2xsYXBzZWQ/InNwYW4iOnZvaWQgMCwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nIixjbGFzczpxKHIudmFsdWUubGlua1RyYWlsaW5nKHtjbGFzczpbZShpKT8ubGlua1RyYWlsaW5nLHQudWk/LmxpbmtUcmFpbGluZ119KSksb25DbGljazpBPT5PKEEsdCl9LHtkZWZhdWx0OmgoKCk9PltEKG0uJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06dCxhY3RpdmU6ZyxpbmRleDpULHVpOnIudmFsdWV9LCgpPT5bdC5iYWRnZXx8dC5iYWRnZT09PTA/KGMoKSxMKHB0LE0oe2tleTowLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixzaXplOnQudWk/LmxpbmtUcmFpbGluZ0JhZGdlU2l6ZXx8ZShpKT8ubGlua1RyYWlsaW5nQmFkZ2VTaXplfHxyLnZhbHVlLmxpbmtUcmFpbGluZ0JhZGdlU2l6ZSgpfSx0eXBlb2YgdC5iYWRnZT09InN0cmluZyJ8fHR5cGVvZiB0LmJhZGdlPT0ibnVtYmVyIj97bGFiZWw6dC5iYWRnZX06dC5iYWRnZSx7ImRhdGEtc2xvdCI6ImxpbmtUcmFpbGluZ0JhZGdlIixjbGFzczpyLnZhbHVlLmxpbmtUcmFpbGluZ0JhZGdlKHtjbGFzczpbZShpKT8ubGlua1RyYWlsaW5nQmFkZ2UsdC51aT8ubGlua1RyYWlsaW5nQmFkZ2VdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpCKCIiLCEwKSxuLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiJiYodC5jaGlsZHJlbj8ubGVuZ3RofHxvW3Quc2xvdD9gJHt0LnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSl8fG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGg/KGMoKSxMKGose2tleToxLG5hbWU6dC50cmFpbGluZ0ljb258fG4udHJhaWxpbmdJY29ufHxlKGYpLnVpLmljb25zLmNoZXZyb25Eb3duLCJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmdJY29uIixjbGFzczpxKHIudmFsdWUubGlua1RyYWlsaW5nSWNvbih7Y2xhc3M6W2UoaSk/LmxpbmtUcmFpbGluZ0ljb24sdC51aT8ubGlua1RyYWlsaW5nSWNvbl0sYWN0aXZlOmd9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6dC50cmFpbGluZ0ljb24/KGMoKSxMKGose2tleToyLG5hbWU6dC50cmFpbGluZ0ljb24sImRhdGEtc2xvdCI6ImxpbmtUcmFpbGluZ0ljb24iLGNsYXNzOnEoci52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZShpKT8ubGlua1RyYWlsaW5nSWNvbix0LnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6Z30pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpCKCIiLCEwKV0pXSksXzoyfSwxMDMyLFsiYXMiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOkIoIiIsITApXSldKSxfOjN9KSxfKGUoZCksbnVsbCx7ZGVmYXVsdDpoKCh7aXRlbTp0LGluZGV4OmcsbGV2ZWw6VD0wLGxpc3RJbmRleDpBPTB9KT0+WyhjKCksTCh1ZShuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmIW4uY29sbGFwc2VkP2UoTXQpOmUoS3QpKSxNKHthczoibGkifSxuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmIW4uY29sbGFwc2VkP3tkaXNhYmxlZDohIXQuZGlzYWJsZWR9Ont9LHt2YWx1ZTp2KHQsZyxULEEpfSkse2RlZmF1bHQ6aCgoKT0+W24ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LnR5cGU9PT0ibGFiZWwiJiYhbi5jb2xsYXBzZWQ/KGMoKSxSKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOnEoci52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UoaSk/LmxhYmVsLHQudWk/LmxhYmVsLHQuY2xhc3NdfSkpfSxbXyhlKEMpLHtpdGVtOnQsaW5kZXg6Z30sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSwyKSk6dC50eXBlIT09ImxhYmVsIj8oYygpLEwoeWUsTSh7a2V5OjF9LG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGgmJiFuLmNvbGxhcHNlZCYmdC50eXBlPT09InRyaWdnZXIiP3t9OmUobWUpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDpoKCh7YWN0aXZlOlAsLi4uR30pPT5bKGMoKSxMKHVlKG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJih0LmNoaWxkcmVuPy5sZW5ndGh8fG9bdC5zbG90P2Ake3Quc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT9lKGVhKTpuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmdC5jaGlsZHJlbj8ubGVuZ3RoJiYhbi5jb2xsYXBzZWQmJiFHLmhyZWY/ZShSZSk6ZShrZSkpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTpQfHx0LmFjdGl2ZSxkaXNhYmxlZDp0LmRpc2FibGVkLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmgoKCk9PltuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmbi5jb2xsYXBzZWQmJnQuY2hpbGRyZW4/Lmxlbmd0aCYmKGEucG9wb3Zlcnx8dC5wb3BvdmVyKT8oYygpLEwobGEsTSh7a2V5OjB9LHsuLi5iLnZhbHVlLC4uLnR5cGVvZiB0LnBvcG92ZXI9PSJib29sZWFuIj97fTp0LnBvcG92ZXJ8fHt9fSx7dWk6e2NvbnRlbnQ6ci52YWx1ZS5jb250ZW50KHtjbGFzczpbZShpKT8uY29udGVudCx0LnVpPy5jb250ZW50XX0pfX0pLHtjb250ZW50OmgoKHtjbG9zZTpGfSk9PltEKG0uJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOnQsYWN0aXZlOlB8fHQuYWN0aXZlLGluZGV4OmcsdWk6ci52YWx1ZSxjbG9zZTpGfSwoKT0+W1EoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UoaSk/LmNoaWxkTGlzdCx0LnVpPy5jaGlsZExpc3RdfSkpfSxbUSgibGkiLHsiZGF0YS1zbG90IjoiY2hpbGRMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGFiZWwoe2NsYXNzOltlKGkpPy5jaGlsZExhYmVsLHQudWk/LmNoaWxkTGFiZWxdfSkpfSx0ZShlKEopKHQsYS5sYWJlbEtleSkpLDMpLChjKCEwKSxSKFcsbnVsbCxuZSh0LmNoaWxkcmVuLChILFUpPT4oYygpLFIoImxpIix7a2V5OlUsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6cShyLnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UoaSk/LmNoaWxkSXRlbSx0LnVpPy5jaGlsZEl0ZW1dfSkpfSxbXyh5ZSxNKHtyZWZfZm9yOiEwfSxlKG1lKShIKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6aCgoe2FjdGl2ZTpaLC4uLlhlfSk9PltfKGUoa2UpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTpaLG9uU2VsZWN0Okgub25TZWxlY3R9LHtkZWZhdWx0OmgoKCk9PltfKGFlLE0oe3JlZl9mb3I6ITB9LFhlLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpyLnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UoaSk/LmNoaWxkTGluayx0LnVpPy5jaGlsZExpbmssSC5jbGFzc10sYWN0aXZlOlp9KX0pLHtkZWZhdWx0OmgoKCk9PltILmljb24/KGMoKSxMKGose2tleTowLG5hbWU6SC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UoaSk/LmNoaWxkTGlua0ljb24sdC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOlp9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCksUSgic3BhbiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rTGFiZWwsdC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTpafSkpfSxbYmUodGUoZShKKShILGEubGFiZWxLZXkpKSsiICIsMSksSC50YXJnZXQ9PT0iX2JsYW5rIiYmbi5leHRlcm5hbEljb24hPT0hMT8oYygpLEwoaix7a2V5OjAsbmFtZTp0eXBlb2Ygbi5leHRlcm5hbEljb249PSJzdHJpbmciP24uZXh0ZXJuYWxJY29uOmUoZikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlKGkpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbix0LnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOlp9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxkZWZhdWx0OmgoKCk9PltfKGFlLE0oRyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOnIudmFsdWUubGluayh7Y2xhc3M6W2UoaSk/LmxpbmssdC51aT8ubGluayx0LmNsYXNzXSxhY3RpdmU6UHx8dC5hY3RpdmUsZGlzYWJsZWQ6ISF0LmRpc2FibGVkLGxldmVsOlQ+MH0pfSkse2RlZmF1bHQ6aCgoKT0+W18oZShDKSx7aXRlbTp0LGFjdGl2ZTpQfHx0LmFjdGl2ZSxpbmRleDpnfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTA0MCxbInVpIl0pKTpuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmbi5jb2xsYXBzZWQmJihhLnRvb2x0aXB8fHQudG9vbHRpcCl8fG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJnQudG9vbHRpcD8oYygpLEwoZ3QsTSh7a2V5OjEsdGV4dDplKEopKHQsYS5sYWJlbEtleSl9LHsuLi5JLnZhbHVlLC4uLnR5cGVvZiB0LnRvb2x0aXA9PSJib29sZWFuIj97fTp0LnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6aCgoKT0+W18oYWUsTShHLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6ci52YWx1ZS5saW5rKHtjbGFzczpbZShpKT8ubGluayx0LnVpPy5saW5rLHQuY2xhc3NdLGFjdGl2ZTpQfHx0LmFjdGl2ZSxkaXNhYmxlZDohIXQuZGlzYWJsZWQsbGV2ZWw6VD4wfSl9KSx7ZGVmYXVsdDpoKCgpPT5bXyhlKEMpLHtpdGVtOnQsYWN0aXZlOlB8fHQuYWN0aXZlLGluZGV4Omd9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidGV4dCJdKSk6KGMoKSxMKGFlLE0oe2tleToyfSxHLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6ci52YWx1ZS5saW5rKHtjbGFzczpbZShpKT8ubGluayx0LnVpPy5saW5rLHQuY2xhc3NdLGFjdGl2ZTpQfHx0LmFjdGl2ZSxkaXNhYmxlZDohIXQuZGlzYWJsZWQsbGV2ZWw6bi5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsInx8VD4wfSl9KSx7ZGVmYXVsdDpoKCgpPT5bXyhlKEMpLHtpdGVtOnQsYWN0aXZlOlB8fHQuYWN0aXZlLGluZGV4Omd9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKV0pLF86Mn0sMTA2NCxbImFjdGl2ZSIsImRpc2FibGVkIiwib25TZWxlY3QiXSkpLG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJih0LmNoaWxkcmVuPy5sZW5ndGh8fG9bdC5zbG90P2Ake3Quc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT8oYygpLEwoZShXdCksTSh7a2V5OjB9LHgudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpyLnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlKGkpPy5jb250ZW50LHQudWk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDpoKCgpPT5bRChtLiRzbG90cyx0LnNsb3Q/YCR7dC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTp0LGFjdGl2ZTpQfHx0LmFjdGl2ZSxpbmRleDpnLHVpOnIudmFsdWV9LCgpPT5bUSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpxKHIudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZShpKT8uY2hpbGRMaXN0LHQudWk/LmNoaWxkTGlzdF19KSl9LFsoYyghMCksUihXLG51bGwsbmUodC5jaGlsZHJlbiwoRixIKT0+KGMoKSxSKCJsaSIse2tleTpILCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOnEoci52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlKGkpPy5jaGlsZEl0ZW0sdC51aT8uY2hpbGRJdGVtXX0pKX0sW18oeWUsTSh7cmVmX2ZvcjohMH0sZShtZSkoRikse2N1c3RvbToiIn0pLHtkZWZhdWx0OmgoKHthY3RpdmU6VSwuLi5afSk9PltfKGUoa2UpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTpVLG9uU2VsZWN0OkYub25TZWxlY3R9LHtkZWZhdWx0OmgoKCk9PltfKGFlLE0oe3JlZl9mb3I6ITB9LFoseyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOnIudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rLHQudWk/LmNoaWxkTGluayxGLmNsYXNzXSxhY3RpdmU6VX0pfSkse2RlZmF1bHQ6aCgoKT0+W0YuaWNvbj8oYygpLEwoaix7a2V5OjAsbmFtZTpGLmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOnEoci52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rSWNvbix0LnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6VX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpCKCIiLCEwKSxRKCJkaXYiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rV3JhcHBlciIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlKGkpPy5jaGlsZExpbmtXcmFwcGVyLHQudWk/LmNoaWxkTGlua1dyYXBwZXJdfSkpfSxbUSgicCIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rTGFiZWwsdC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTpVfSkpfSxbYmUodGUoZShKKShGLGEubGFiZWxLZXkpKSsiICIsMSksRi50YXJnZXQ9PT0iX2JsYW5rIiYmbi5leHRlcm5hbEljb24hPT0hMT8oYygpLEwoaix7a2V5OjAsbmFtZTp0eXBlb2Ygbi5leHRlcm5hbEljb249PSJzdHJpbmciP24uZXh0ZXJuYWxJY29uOmUoZikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlKGkpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbix0LnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOlV9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCldLDIpLEYuZGVzY3JpcHRpb24/KGMoKSxSKCJwIix7a2V5OjAsImRhdGEtc2xvdCI6ImNoaWxkTGlua0Rlc2NyaXB0aW9uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlKGkpPy5jaGlsZExpbmtEZXNjcmlwdGlvbix0LnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOlV9KSl9LHRlKEYuZGVzY3JpcHRpb24pLDMpKTpCKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0sMikpKSwxMjgpKV0sMildKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKTpCKCIiLCEwKV0pLF86Mn0sMTA0MCkpOkIoIiIsITApLG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGgmJiFuLmNvbGxhcHNlZD8oYygpLEwoZShCdCkse2tleToyLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpxKHIudmFsdWUuY29udGVudCh7Y2xhc3M6W2UoaSk/LmNvbnRlbnQsdC51aT8uY29udGVudF19KSl9LHtkZWZhdWx0OmgoKCk9PltfKGUoVmUpLE0oey4uLmUocCksZGVmYXVsdFZhbHVlOnkodC5jaGlsZHJlbixUKzEsQSl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOnIudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZShpKT8uY2hpbGRMaXN0LHQudWk/LmNoaWxkTGlzdF19KX0pLHtkZWZhdWx0OmgoKCk9PlsoYyghMCksUihXLG51bGwsbmUodC5jaGlsZHJlbiwoUCxHKT0+KGMoKSxMKGUoaykse2tleTpHLGl0ZW06UCxpbmRleDpHLGxldmVsOlQrMSwibGlzdC1pbmRleCI6QSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpxKHIudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZShpKT8uY2hpbGRJdGVtLFAudWk/LmNoaWxkSXRlbV19KSl9LG51bGwsOCxbIml0ZW0iLCJpbmRleCIsImxldmVsIiwibGlzdC1pbmRleCIsImNsYXNzIl0pKSksMTI4KSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTpCKCIiLCEwKV0pLF86Mn0sMTA0MCxbInZhbHVlIl0pKV0pLF86M30pLF8oZShTdCksTSh7Li4uZSh1KSwuLi5uLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiP3ttb2RlbFZhbHVlOm4ubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6bi5kZWZhdWx0VmFsdWV9Ont9LC4uLm0uJGF0dHJzfSx7ImRhdGEtY29sbGFwc2VkIjpuLmNvbGxhcHNlZCwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6ci52YWx1ZS5yb290KHtjbGFzczpbZShpKT8ucm9vdCxhLmNsYXNzXX0pfSkse2RlZmF1bHQ6aCgoKT0+W0QobS4kc2xvdHMsImxpc3QtbGVhZGluZyIpLChjKCEwKSxSKFcsbnVsbCxuZSgkLnZhbHVlLCh0LGcpPT4oYygpLFIoVyx7a2V5OmBsaXN0LSR7Z31gfSxbKGMoKSxMKHVlKG4ub3JpZW50YXRpb249PT0idmVydGljYWwiP2UoVmUpOmUoUXQpKSxNKHtyZWZfZm9yOiEwfSxuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmIW4uY29sbGFwc2VkP3suLi5lKHApLG1vZGVsVmFsdWU6bi5tb2RlbFZhbHVlLGRlZmF1bHRWYWx1ZTpuLmRlZmF1bHRWYWx1ZT8/eSh0LDAsZyl9Ont9LHthczoidWwiLCJkYXRhLXNsb3QiOiJsaXN0IixjbGFzczpyLnZhbHVlLmxpc3Qoe2NsYXNzOmUoaSk/Lmxpc3R9KX0pLHtkZWZhdWx0OmgoKCk9PlsoYyghMCksUihXLG51bGwsbmUodCwoVCxBKT0+KGMoKSxMKGUoaykse2tleTpgbGlzdC0ke2d9LSR7QX1gLGl0ZW06VCxpbmRleDpBLCJsaXN0LWluZGV4IjpnLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpxKHIudmFsdWUuaXRlbSh7Y2xhc3M6W2UoaSk/Lml0ZW0sVC51aT8uaXRlbV19KSl9LG51bGwsOCxbIml0ZW0iLCJpbmRleCIsImxpc3QtaW5kZXgiLCJjbGFzcyJdKSkpLDEyOCkpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSkpLG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZnPCQudmFsdWUubGVuZ3RoLTE/KGMoKSxSKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpxKHIudmFsdWUuc2VwYXJhdG9yKHtjbGFzczplKGkpPy5zZXBhcmF0b3J9KSl9LG51bGwsMikpOkIoIiIsITApXSw2NCkpKSwxMjgpKSxEKG0uJHNsb3RzLCJsaXN0LXRyYWlsaW5nIiksbi5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj8oYygpLFIoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydFdyYXBwZXIiLGNsYXNzOnEoci52YWx1ZS52aWV3cG9ydFdyYXBwZXIoe2NsYXNzOmUoaSk/LnZpZXdwb3J0V3JhcHBlcn0pKX0sW24uYXJyb3c/KGMoKSxMKGUoR3QpLHtrZXk6MCwiZGF0YS1zbG90IjoiaW5kaWNhdG9yIixjbGFzczpxKHIudmFsdWUuaW5kaWNhdG9yKHtjbGFzczplKGkpPy5pbmRpY2F0b3J9KSl9LHtkZWZhdWx0OmgoKCk9PltRKCJkaXYiLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOnEoci52YWx1ZS5hcnJvdyh7Y2xhc3M6ZShpKT8uYXJyb3d9KSl9LG51bGwsMildKSxfOjF9LDgsWyJjbGFzcyJdKSk6QigiIiwhMCksXyhlKGFhKSx7ImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpxKHIudmFsdWUudmlld3BvcnQoe2NsYXNzOmUoaSk/LnZpZXdwb3J0fSkpfSxudWxsLDgsWyJjbGFzcyJdKV0sMikpOkIoIiIsITApXSksXzozfSwxNixbImRhdGEtY29sbGFwc2VkIiwiY2xhc3MiXSldLDY0KSl9fSk7ZXhwb3J0e2NhIGFzIF8sbGEgYXMgYX07Cg==", "/_nuxt/DWfWqMJq.js": "aW1wb3J0e0ogYXMgbSxLIGFzIGYsbyBhcyBkLGggYXMgcCx3IGFzIGMsTCBhcyBfLE0gYXMgeCxpIGFzIGwsUCBhcyBiLGwgYXMgaCxOIGFzIHIsZiBhcyBDLHUgYXMgZyxhIGFzIGksYiBhcyB1LGsgYXMgdixqIGFzIHcsZCBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgeT17YmFzZToidy1mdWxsIG1heC13LSgtLXVpLWNvbnRhaW5lcikgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCJ9LEI9e19fbmFtZToiVUNvbnRhaW5lciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKHMpe2NvbnN0IHQ9cyxlPW0oKSxhPWYoImNvbnRhaW5lciIsdCksbz1oKCgpPT5yKHtleHRlbmQ6cih5KSwuLi5lLnVpPy5jb250YWluZXJ8fHt9fSkpO3JldHVybihuLE4pPT4oZCgpLHAobChiKSx7YXM6cy5hcyxjbGFzczp4KG8udmFsdWUoe2NsYXNzOltsKGEpPy5iYXNlLHQuY2xhc3NdfSkpfSx7ZGVmYXVsdDpjKCgpPT5bXyhuLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fSxVPXtjbGFzczoibWF4LXctbWQgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTQifSxxPUMoe19fbmFtZToiZm9yYmlkZGVuIixzZXR1cChzKXtyZXR1cm4gZyh7dGl0bGU6IkZvcmJpZGRlbiJ9KSwodCxlKT0+e2NvbnN0IGE9dixvPXcsbj1CO3JldHVybiBkKCkscChuLHtjbGFzczoicHktMjQifSx7ZGVmYXVsdDpjKCgpPT5baSgiZGl2IixVLFt1KGEse25hbWU6ImktbHVjaWRlLWxvY2siLGNsYXNzOiJzaXplLTEyIHRleHQtbXV0ZWQgbXgtYXV0byJ9KSxlWzFdfHwoZVsxXT1pKCJoMSIse2NsYXNzOiJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgNDAzIOKAlCBGb3JiaWRkZW4gIiwtMSkpLGVbMl18fChlWzJdPWkoInAiLHtjbGFzczoidGV4dC1tdXRlZCJ9LCIgWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IHRoaXMgcGFnZS4gIiwtMSkpLHUobyx7dG86Ii8iLGljb246ImktbHVjaWRlLWhvbWUifSx7ZGVmYXVsdDpjKCgpPT5bLi4uZVswXXx8KGVbMF09W2soIiBCYWNrIGhvbWUgIiwtMSldKV0pLF86MX0pXSldKSxfOjF9KX19fSk7ZXhwb3J0e3EgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DYZlg0-5.js": "aW1wb3J0e2FzIGFzIHJ9ZnJvbSIuL284dGRfRzBKLmpzIjtmdW5jdGlvbiBpKCl7ZnVuY3Rpb24gdSh0KXtyZXR1cm4gcigiL2FwaS9wcm9kdWN0cyIse3F1ZXJ5OnQ/e3N0YXR1czp0fTp2b2lkIDB9KX1mdW5jdGlvbiBvKHQpe3JldHVybiByKGAvYXBpL3Byb2R1Y3RzLyR7dH1gKX1mdW5jdGlvbiBjKHQpe3JldHVybiByKCIvYXBpL3Byb2R1Y3RzIix7bWV0aG9kOiJQT1NUIixib2R5OnR9KX1mdW5jdGlvbiBlKHQsZCl7cmV0dXJuIHIoYC9hcGkvcHJvZHVjdHMvJHt0fWAse21ldGhvZDoiUEFUQ0giLGJvZHk6ZH0pfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHIoYC9hcGkvcHJvZHVjdHMvJHt0fWAse21ldGhvZDoiREVMRVRFIn0pfXJldHVybntmZXRjaFByb2R1Y3RzOnUsZmV0Y2hQcm9kdWN0Om8sY3JlYXRlUHJvZHVjdDpjLHVwZGF0ZVByb2R1Y3Q6ZSxkZWxldGVQcm9kdWN0Om59fWV4cG9ydHtpIGFzIHV9Owo=", "/_nuxt/D_cu-qMR.js": "aW1wb3J0e2YsZyBhcyB3LG8gYXMgcixoIGFzIF8sdyBhcyBuLGkgYXMgYSxjIGFzIHAsYiBhcyBzLGogYXMgQyxkIGFzIGksYSBhcyBsLGsgYXMgQSxsIGFzIHYsciBhcyAkLG0gYXMgUyx1IGFzIEJ9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBVfWZyb20iLi9aSlZrMG9sTi5qcyI7aW1wb3J0e18gYXMgen1mcm9tIi4vQlNSS3FHclAuanMiO2NvbnN0IEQ9e2NsYXNzOiJ0ZXh0LWNlbnRlciBzcGFjZS15LTIifSxMPXtrZXk6MCxjbGFzczoic3BhY2UteS0zIiwiZGF0YS10ZXN0aWQiOiJkZW1vLWJsb2NrIn0sTT17a2V5OjEsY2xhc3M6InNwYWNlLXktMyB0ZXh0LWNlbnRlciJ9LE49Zih7X19uYW1lOiJBdXRoTG9naW5DYXJkIixzZXR1cChiKXtjb25zdCBjPVMoKSxtPXYoKCk9PiEhYy5wdWJsaWMuZGVtb01vZGUpLHg9dygpLG89JChudWxsKTthc3luYyBmdW5jdGlvbiBnKHUpe28udmFsdWU9dTt0cnl7YXdhaXQgJGZldGNoKCIvYXBpL2F1dGgvZGVtby1sb2dpbiIse21ldGhvZDoiUE9TVCIsYm9keTp7YWdlbnQ6dX0sY3JlZGVudGlhbHM6ImluY2x1ZGUifSksd2luZG93LmxvY2F0aW9uLmhyZWY9Ii9kYXNoYm9hcmQifWNhdGNoKGUpe2NvbnN0IHQ9ZTt4LmFkZCh7dGl0bGU6IkRlbW8gc2lnbi1pbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LmRhdGE/Lm1lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/P3Q/Lm1lc3NhZ2U/P2BTdGF0dXMgJHt0Py5zdGF0dXNDb2RlPz8idW5rbm93biJ9YCxjb2xvcjoiZXJyb3IifSksby52YWx1ZT1udWxsfX1yZXR1cm4odSxlKT0+e2NvbnN0IHQ9QSxrPVUsZD1DLGg9ejtyZXR1cm4gcigpLF8oaCx7Y2xhc3M6InctZnVsbCBtYXgtdy1tZCIsImRhdGEtdGVzdGlkIjoibG9naW4tY2FyZCJ9LHtoZWFkZXI6bigoKT0+W2woImRpdiIsRCxbcyh0LHtuYW1lOiJpLWx1Y2lkZS1sb2ctaW4iLGNsYXNzOiJzaXplLTggbXgtYXV0byB0ZXh0LXByaW1hcnkifSksZVsyXXx8KGVbMl09bCgiaDEiLHtjbGFzczoidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIn0sIiBTaWduIGluICIsLTEpKSxlWzNdfHwoZVszXT1sKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LCIgV2VsY29tZSBiYWNrLiBDaG9vc2UgaG93IHlvdSdkIGxpa2UgdG8gc2lnbiBpbi4gIiwtMSkpXSldKSxkZWZhdWx0Om4oKCk9PlthKG0pPyhyKCkscCgiZGl2IixMLFtzKGsse2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLWZsYXNrLWNvbmljYWwiLHRpdGxlOiJEZW1vIG1vZGUiLGRlc2NyaXB0aW9uOiJTYW5kYm94IGRlcGxveW1lbnQgd2l0aCBzZWVkZWQgZmFrZSB1c2Vycy4gRG8gbm90IHVzZSByZWFsIGNyZWRlbnRpYWxzLiJ9KSxzKGQse2Jsb2NrOiIiLHNpemU6ImxnIixjb2xvcjoicHJpbWFyeSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkLWNoZWNrIixsb2FkaW5nOmEobyk9PT0iYWRtaW4iLGRpc2FibGVkOmEobykhPT1udWxsLCJkYXRhLXRlc3RpZCI6InNpZ25pbi1hZG1pbi1hZ2VudCIsb25DbGljazplWzBdfHwoZVswXT15PT5nKCJhZG1pbiIpKX0se2RlZmF1bHQ6bigoKT0+Wy4uLmVbNF18fChlWzRdPVtpKCIgU2lnbiBpbiBhcyBBZG1pbiBBZ2VudCAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pLHMoZCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixpY29uOiJpLWx1Y2lkZS11c2VyIixsb2FkaW5nOmEobyk9PT0idXNlciIsZGlzYWJsZWQ6YShvKSE9PW51bGwsImRhdGEtdGVzdGlkIjoic2lnbmluLXVzZXItYWdlbnQiLG9uQ2xpY2s6ZVsxXXx8KGVbMV09eT0+ZygidXNlciIpKX0se2RlZmF1bHQ6bigoKT0+Wy4uLmVbNV18fChlWzVdPVtpKCIgU2lnbiBpbiBhcyBVc2VyIEFnZW50ICIsLTEpXSldKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSksZVs2XXx8KGVbNl09bCgicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIgcHQtMiJ9LFtpKCIgQWRtaW4gQWdlbnQgaGFzIHRoZSAiKSxsKCJjb2RlIixudWxsLCJ1c2VyOmltcGVyc29uYXRlIiksaSgiIGFiaWxpdHkuIFVzZXIgQWdlbnQgZG9lcyBub3QuICIpXSwtMSkpXSkpOihyKCkscCgiZGl2IixNLFtzKGQse3RvOiIvYXBpL2F1dGgvZ29vZ2xlIixleHRlcm5hbDoiIixibG9jazoiIixzaXplOiJsZyIsaWNvbjoiaS1sb2dvcy1nb29nbGUtaWNvbiIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUifSx7ZGVmYXVsdDpuKCgpPT5bLi4uZVs3XXx8KGVbN109W2koIiBDb250aW51ZSB3aXRoIEdvb2dsZSAiLC0xKV0pXSksXzoxfSkscyhkLHt0bzoiL2FwaS9hdXRoL2dpdGh1YiIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ2l0aHViLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6bigoKT0+Wy4uLmVbOF18fChlWzhdPVtpKCIgQ29udGludWUgd2l0aCBHaXRIdWIgIiwtMSldKV0pLF86MX0pXSkpXSksXzoxfSl9fX0pLFQ9T2JqZWN0LmFzc2lnbihOLHtfX25hbWU6IkF1dGhMb2dpbkNhcmQifSksSD1mKHtfX25hbWU6ImxvZ2luIixzZXR1cChiKXtyZXR1cm4gQih7dGl0bGU6IlNpZ24gaW4ifSksKGMsbSk9PihyKCksXyhUKSl9fSk7ZXhwb3J0e0ggYXMgZGVmYXVsdH07Cg==", "/_nuxt/DbC4p3QA.js": "aW1wb3J0e18gYXMgYmh9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyB4aH1mcm9tIi4vQ0FVQVg1VnIuanMiO2ltcG9ydHtmIGFzIHJyLGE0IGFzIGNvLGFZIGFzIE9zLCQgYXMgdW8sciBhcyBSZSxhNiBhcyByYyxhWiBhcyBzYyxhXyBhcyBpYyxhJCBhcyBvYyxiMCBhcyBsYyxiMSBhcyBhYyxiMiBhcyBjYyxiMyBhcyB1YyxiNCBhcyBkYyxiNSBhcyBoYyxKIGFzIGZjLEsgYXMgcGMsVCBhcyB3aCxsIGFzIGxlLGFEIGFzIG1jLGFYIGFzIGdjLG8gYXMgaGUsaCBhcyBCZSx3IGFzIGRlLGIgYXMgUSxpIGFzIHosUCBhcyBBaSxNIGFzIFJuLGMgYXMgc24sRiBhcyBJbixxIGFzIGZsLGEgYXMgT3IsTCBhcyB5YyxhYSBhcyB1dCxqIGFzIFNuLHYgYXMgRG4sTiBhcyB6cixiNiBhcyBkcixiNyBhcyB2aCxhRyBhcyBndCxiOCBhcyBTaCxheiBhcyBDaCxiOSBhcyBUaCxiYSBhcyBNaCxheSBhcyBFaCxiYiBhcyBBaCxhbiBhcyBPaCxSIGFzIE5oLGExIGFzIFJoLGFzIGFzIFFzLGcgYXMgSWgscCBhcyBEaCxhcSBhcyBMaCxhRiBhcyBQaCxEIGFzIHpoLGFyIGFzICRoLEcgYXMgaHIsSCBhcyBCaCxkIGFzIHBsLHQgYXMgX2gsViBhcyBIaCx1IGFzIEZofWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgVmh9ZnJvbSIuL1dtRFhIWUtrLmpzIjtpbXBvcnR7UyBhcyBVaH1mcm9tIi4vZF8wTndRTFUuanMiO2ltcG9ydHtfIGFzIGpofWZyb20iLi80bEhteUhiSC5qcyI7aW1wb3J0e18gYXMgbWx9ZnJvbSIuL0NYb2M0VUVSLmpzIjtpbXBvcnR7XyBhcyBxaH1mcm9tIi4vWkpWazBvbE4uanMiO2ltcG9ydHtvIGFzIGtjLGEgYXMgWHMscyBhcyBMbixiIGFzIFdofWZyb20iLi9CdUxTdUE4TS5qcyI7aW1wb3J0Ii4vbTIwa2RHeFUuanMiO2ltcG9ydCIuL0I3czVwampSLmpzIjtpbXBvcnQiLi9ESEN3RUxXcC5qcyI7aW1wb3J0Ii4vQnQ4UzBkbWwuanMiO2ltcG9ydCIuL0M3WXk2dFIzLmpzIjtpbXBvcnQiLi9DWWFtekxtNS5qcyI7aW1wb3J0Ii4vRHZkaHlwRGkuanMiO2Z1bmN0aW9uIHVlKG4pe3RoaXMuY29udGVudD1ufXVlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dWUsZmluZDpmdW5jdGlvbihuKXtmb3IodmFyIGU9MDtlPHRoaXMuY29udGVudC5sZW5ndGg7ZSs9MilpZih0aGlzLmNvbnRlbnRbZV09PT1uKXJldHVybiBlO3JldHVybi0xfSxnZXQ6ZnVuY3Rpb24obil7dmFyIGU9dGhpcy5maW5kKG4pO3JldHVybiBlPT0tMT92b2lkIDA6dGhpcy5jb250ZW50W2UrMV19LHVwZGF0ZTpmdW5jdGlvbihuLGUsdCl7dmFyIHI9dCYmdCE9bj90aGlzLnJlbW92ZSh0KTp0aGlzLHM9ci5maW5kKG4pLGk9ci5jb250ZW50LnNsaWNlKCk7cmV0dXJuIHM9PS0xP2kucHVzaCh0fHxuLGUpOihpW3MrMV09ZSx0JiYoaVtzXT10KSksbmV3IHVlKGkpfSxyZW1vdmU6ZnVuY3Rpb24obil7dmFyIGU9dGhpcy5maW5kKG4pO2lmKGU9PS0xKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuY29udGVudC5zbGljZSgpO3JldHVybiB0LnNwbGljZShlLDIpLG5ldyB1ZSh0KX0sYWRkVG9TdGFydDpmdW5jdGlvbihuLGUpe3JldHVybiBuZXcgdWUoW24sZV0uY29uY2F0KHRoaXMucmVtb3ZlKG4pLmNvbnRlbnQpKX0sYWRkVG9FbmQ6ZnVuY3Rpb24obixlKXt2YXIgdD10aGlzLnJlbW92ZShuKS5jb250ZW50LnNsaWNlKCk7cmV0dXJuIHQucHVzaChuLGUpLG5ldyB1ZSh0KX0sYWRkQmVmb3JlOmZ1bmN0aW9uKG4sZSx0KXt2YXIgcj10aGlzLnJlbW92ZShlKSxzPXIuY29udGVudC5zbGljZSgpLGk9ci5maW5kKG4pO3JldHVybiBzLnNwbGljZShpPT0tMT9zLmxlbmd0aDppLDAsZSx0KSxuZXcgdWUocyl9LGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciBlPTA7ZTx0aGlzLmNvbnRlbnQubGVuZ3RoO2UrPTIpbih0aGlzLmNvbnRlbnRbZV0sdGhpcy5jb250ZW50W2UrMV0pfSxwcmVwZW5kOmZ1bmN0aW9uKG4pe3JldHVybiBuPXVlLmZyb20obiksbi5zaXplP25ldyB1ZShuLmNvbnRlbnQuY29uY2F0KHRoaXMuc3VidHJhY3QobikuY29udGVudCkpOnRoaXN9LGFwcGVuZDpmdW5jdGlvbihuKXtyZXR1cm4gbj11ZS5mcm9tKG4pLG4uc2l6ZT9uZXcgdWUodGhpcy5zdWJ0cmFjdChuKS5jb250ZW50LmNvbmNhdChuLmNvbnRlbnQpKTp0aGlzfSxzdWJ0cmFjdDpmdW5jdGlvbihuKXt2YXIgZT10aGlzO249dWUuZnJvbShuKTtmb3IodmFyIHQ9MDt0PG4uY29udGVudC5sZW5ndGg7dCs9MillPWUucmVtb3ZlKG4uY29udGVudFt0XSk7cmV0dXJuIGV9LHRvT2JqZWN0OmZ1bmN0aW9uKCl7dmFyIG49e307cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihlLHQpe25bZV09dH0pLG59LGdldCBzaXplKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg+PjF9fTt1ZS5mcm9tPWZ1bmN0aW9uKG4pe2lmKG4gaW5zdGFuY2VvZiB1ZSlyZXR1cm4gbjt2YXIgZT1bXTtpZihuKWZvcih2YXIgdCBpbiBuKWUucHVzaCh0LG5bdF0pO3JldHVybiBuZXcgdWUoZSl9O2Z1bmN0aW9uIGJjKG4sZSx0KXtmb3IobGV0IHI9MDs7cisrKXtpZihyPT1uLmNoaWxkQ291bnR8fHI9PWUuY2hpbGRDb3VudClyZXR1cm4gbi5jaGlsZENvdW50PT1lLmNoaWxkQ291bnQ/bnVsbDp0O2xldCBzPW4uY2hpbGQociksaT1lLmNoaWxkKHIpO2lmKHM9PWkpe3QrPXMubm9kZVNpemU7Y29udGludWV9aWYoIXMuc2FtZU1hcmt1cChpKSlyZXR1cm4gdDtpZihzLmlzVGV4dCYmcy50ZXh0IT1pLnRleHQpe2ZvcihsZXQgbz0wO3MudGV4dFtvXT09aS50ZXh0W29dO28rKyl0Kys7cmV0dXJuIHR9aWYocy5jb250ZW50LnNpemV8fGkuY29udGVudC5zaXplKXtsZXQgbz1iYyhzLmNvbnRlbnQsaS5jb250ZW50LHQrMSk7aWYobyE9bnVsbClyZXR1cm4gb310Kz1zLm5vZGVTaXplfX1mdW5jdGlvbiB4YyhuLGUsdCxyKXtmb3IobGV0IHM9bi5jaGlsZENvdW50LGk9ZS5jaGlsZENvdW50Ozspe2lmKHM9PTB8fGk9PTApcmV0dXJuIHM9PWk/bnVsbDp7YTp0LGI6cn07bGV0IG89bi5jaGlsZCgtLXMpLGw9ZS5jaGlsZCgtLWkpLGE9by5ub2RlU2l6ZTtpZihvPT1sKXt0LT1hLHItPWE7Y29udGludWV9aWYoIW8uc2FtZU1hcmt1cChsKSlyZXR1cm57YTp0LGI6cn07aWYoby5pc1RleHQmJm8udGV4dCE9bC50ZXh0KXtsZXQgYz0wLHU9TWF0aC5taW4oby50ZXh0Lmxlbmd0aCxsLnRleHQubGVuZ3RoKTtmb3IoO2M8dSYmby50ZXh0W28udGV4dC5sZW5ndGgtYy0xXT09bC50ZXh0W2wudGV4dC5sZW5ndGgtYy0xXTspYysrLHQtLSxyLS07cmV0dXJue2E6dCxiOnJ9fWlmKG8uY29udGVudC5zaXplfHxsLmNvbnRlbnQuc2l6ZSl7bGV0IGM9eGMoby5jb250ZW50LGwuY29udGVudCx0LTEsci0xKTtpZihjKXJldHVybiBjfXQtPWEsci09YX19Y2xhc3MgU3tjb25zdHJ1Y3RvcihlLHQpe2lmKHRoaXMuY29udGVudD1lLHRoaXMuc2l6ZT10fHwwLHQ9PW51bGwpZm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspdGhpcy5zaXplKz1lW3JdLm5vZGVTaXplfW5vZGVzQmV0d2VlbihlLHQscixzPTAsaSl7Zm9yKGxldCBvPTAsbD0wO2w8dDtvKyspe2xldCBhPXRoaXMuY29udGVudFtvXSxjPWwrYS5ub2RlU2l6ZTtpZihjPmUmJnIoYSxzK2wsaXx8bnVsbCxvKSE9PSExJiZhLmNvbnRlbnQuc2l6ZSl7bGV0IHU9bCsxO2Eubm9kZXNCZXR3ZWVuKE1hdGgubWF4KDAsZS11KSxNYXRoLm1pbihhLmNvbnRlbnQuc2l6ZSx0LXUpLHIscyt1KX1sPWN9fWRlc2NlbmRhbnRzKGUpe3RoaXMubm9kZXNCZXR3ZWVuKDAsdGhpcy5zaXplLGUpfXRleHRCZXR3ZWVuKGUsdCxyLHMpe2xldCBpPSIiLG89ITA7cmV0dXJuIHRoaXMubm9kZXNCZXR3ZWVuKGUsdCwobCxhKT0+e2xldCBjPWwuaXNUZXh0P2wudGV4dC5zbGljZShNYXRoLm1heChlLGEpLWEsdC1hKTpsLmlzTGVhZj9zP3R5cGVvZiBzPT0iZnVuY3Rpb24iP3MobCk6czpsLnR5cGUuc3BlYy5sZWFmVGV4dD9sLnR5cGUuc3BlYy5sZWFmVGV4dChsKToiIjoiIjtsLmlzQmxvY2smJihsLmlzTGVhZiYmY3x8bC5pc1RleHRibG9jaykmJnImJihvP289ITE6aSs9ciksaSs9Y30sMCksaX1hcHBlbmQoZSl7aWYoIWUuc2l6ZSlyZXR1cm4gdGhpcztpZighdGhpcy5zaXplKXJldHVybiBlO2xldCB0PXRoaXMubGFzdENoaWxkLHI9ZS5maXJzdENoaWxkLHM9dGhpcy5jb250ZW50LnNsaWNlKCksaT0wO2Zvcih0LmlzVGV4dCYmdC5zYW1lTWFya3VwKHIpJiYoc1tzLmxlbmd0aC0xXT10LndpdGhUZXh0KHQudGV4dCtyLnRleHQpLGk9MSk7aTxlLmNvbnRlbnQubGVuZ3RoO2krKylzLnB1c2goZS5jb250ZW50W2ldKTtyZXR1cm4gbmV3IFMocyx0aGlzLnNpemUrZS5zaXplKX1jdXQoZSx0PXRoaXMuc2l6ZSl7aWYoZT09MCYmdD09dGhpcy5zaXplKXJldHVybiB0aGlzO2xldCByPVtdLHM9MDtpZih0PmUpZm9yKGxldCBpPTAsbz0wO288dDtpKyspe2xldCBsPXRoaXMuY29udGVudFtpXSxhPW8rbC5ub2RlU2l6ZTthPmUmJigobzxlfHxhPnQpJiYobC5pc1RleHQ/bD1sLmN1dChNYXRoLm1heCgwLGUtbyksTWF0aC5taW4obC50ZXh0Lmxlbmd0aCx0LW8pKTpsPWwuY3V0KE1hdGgubWF4KDAsZS1vLTEpLE1hdGgubWluKGwuY29udGVudC5zaXplLHQtby0xKSkpLHIucHVzaChsKSxzKz1sLm5vZGVTaXplKSxvPWF9cmV0dXJuIG5ldyBTKHIscyl9Y3V0QnlJbmRleChlLHQpe3JldHVybiBlPT10P1MuZW1wdHk6ZT09MCYmdD09dGhpcy5jb250ZW50Lmxlbmd0aD90aGlzOm5ldyBTKHRoaXMuY29udGVudC5zbGljZShlLHQpKX1yZXBsYWNlQ2hpbGQoZSx0KXtsZXQgcj10aGlzLmNvbnRlbnRbZV07aWYocj09dClyZXR1cm4gdGhpcztsZXQgcz10aGlzLmNvbnRlbnQuc2xpY2UoKSxpPXRoaXMuc2l6ZSt0Lm5vZGVTaXplLXIubm9kZVNpemU7cmV0dXJuIHNbZV09dCxuZXcgUyhzLGkpfWFkZFRvU3RhcnQoZSl7cmV0dXJuIG5ldyBTKFtlXS5jb25jYXQodGhpcy5jb250ZW50KSx0aGlzLnNpemUrZS5ub2RlU2l6ZSl9YWRkVG9FbmQoZSl7cmV0dXJuIG5ldyBTKHRoaXMuY29udGVudC5jb25jYXQoZSksdGhpcy5zaXplK2Uubm9kZVNpemUpfWVxKGUpe2lmKHRoaXMuY29udGVudC5sZW5ndGghPWUuY29udGVudC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLmNvbnRlbnQubGVuZ3RoO3QrKylpZighdGhpcy5jb250ZW50W3RdLmVxKGUuY29udGVudFt0XSkpcmV0dXJuITE7cmV0dXJuITB9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aD90aGlzLmNvbnRlbnRbMF06bnVsbH1nZXQgbGFzdENoaWxkKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGgtMV06bnVsbH1nZXQgY2hpbGRDb3VudCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RofWNoaWxkKGUpe2xldCB0PXRoaXMuY29udGVudFtlXTtpZighdCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggIitlKyIgb3V0IG9mIHJhbmdlIGZvciAiK3RoaXMpO3JldHVybiB0fW1heWJlQ2hpbGQoZSl7cmV0dXJuIHRoaXMuY29udGVudFtlXXx8bnVsbH1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wLHI9MDt0PHRoaXMuY29udGVudC5sZW5ndGg7dCsrKXtsZXQgcz10aGlzLmNvbnRlbnRbdF07ZShzLHIsdCkscis9cy5ub2RlU2l6ZX19ZmluZERpZmZTdGFydChlLHQ9MCl7cmV0dXJuIGJjKHRoaXMsZSx0KX1maW5kRGlmZkVuZChlLHQ9dGhpcy5zaXplLHI9ZS5zaXplKXtyZXR1cm4geGModGhpcyxlLHQscil9ZmluZEluZGV4KGUpe2lmKGU9PTApcmV0dXJuIGZyKDAsZSk7aWYoZT09dGhpcy5zaXplKXJldHVybiBmcih0aGlzLmNvbnRlbnQubGVuZ3RoLGUpO2lmKGU+dGhpcy5zaXplfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFBvc2l0aW9uICR7ZX0gb3V0c2lkZSBvZiBmcmFnbWVudCAoJHt0aGlzfSlgKTtmb3IobGV0IHQ9MCxyPTA7O3QrKyl7bGV0IHM9dGhpcy5jaGlsZCh0KSxpPXIrcy5ub2RlU2l6ZTtpZihpPj1lKXJldHVybiBpPT1lP2ZyKHQrMSxpKTpmcih0LHIpO3I9aX19dG9TdHJpbmcoKXtyZXR1cm4iPCIrdGhpcy50b1N0cmluZ0lubmVyKCkrIj4ifXRvU3RyaW5nSW5uZXIoKXtyZXR1cm4gdGhpcy5jb250ZW50LmpvaW4oIiwgIil9dG9KU09OKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50Lm1hcChlPT5lLnRvSlNPTigpKTpudWxsfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXJldHVybiBTLmVtcHR5O2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBGcmFnbWVudC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUyh0Lm1hcChlLm5vZGVGcm9tSlNPTikpfXN0YXRpYyBmcm9tQXJyYXkoZSl7aWYoIWUubGVuZ3RoKXJldHVybiBTLmVtcHR5O2xldCB0LHI9MDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtyKz1pLm5vZGVTaXplLHMmJmkuaXNUZXh0JiZlW3MtMV0uc2FtZU1hcmt1cChpKT8odHx8KHQ9ZS5zbGljZSgwLHMpKSx0W3QubGVuZ3RoLTFdPWkud2l0aFRleHQodFt0Lmxlbmd0aC0xXS50ZXh0K2kudGV4dCkpOnQmJnQucHVzaChpKX1yZXR1cm4gbmV3IFModHx8ZSxyKX1zdGF0aWMgZnJvbShlKXtpZighZSlyZXR1cm4gUy5lbXB0eTtpZihlIGluc3RhbmNlb2YgUylyZXR1cm4gZTtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiB0aGlzLmZyb21BcnJheShlKTtpZihlLmF0dHJzKXJldHVybiBuZXcgUyhbZV0sZS5ub2RlU2l6ZSk7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNhbiBub3QgY29udmVydCAiK2UrIiB0byBhIEZyYWdtZW50IisoZS5ub2Rlc0JldHdlZW4/IiAobG9va3MgbGlrZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBwcm9zZW1pcnJvci1tb2RlbCB3ZXJlIGxvYWRlZCkiOiIiKSl9fVMuZW1wdHk9bmV3IFMoW10sMCk7Y29uc3QgWXM9e2luZGV4OjAsb2Zmc2V0OjB9O2Z1bmN0aW9uIGZyKG4sZSl7cmV0dXJuIFlzLmluZGV4PW4sWXMub2Zmc2V0PWUsWXN9ZnVuY3Rpb24gJHIobixlKXtpZihuPT09ZSlyZXR1cm4hMDtpZighKG4mJnR5cGVvZiBuPT0ib2JqZWN0Iil8fCEoZSYmdHlwZW9mIGU9PSJvYmplY3QiKSlyZXR1cm4hMTtsZXQgdD1BcnJheS5pc0FycmF5KG4pO2lmKEFycmF5LmlzQXJyYXkoZSkhPXQpcmV0dXJuITE7aWYodCl7aWYobi5sZW5ndGghPWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKWlmKCEkcihuW3JdLGVbcl0pKXJldHVybiExfWVsc2V7Zm9yKGxldCByIGluIG4paWYoIShyIGluIGUpfHwhJHIobltyXSxlW3JdKSlyZXR1cm4hMTtmb3IobGV0IHIgaW4gZSlpZighKHIgaW4gbikpcmV0dXJuITF9cmV0dXJuITB9bGV0IFc9Y2xhc3MgT2l7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnR5cGU9ZSx0aGlzLmF0dHJzPXR9YWRkVG9TZXQoZSl7bGV0IHQscj0hMTtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtpZih0aGlzLmVxKGkpKXJldHVybiBlO2lmKHRoaXMudHlwZS5leGNsdWRlcyhpLnR5cGUpKXR8fCh0PWUuc2xpY2UoMCxzKSk7ZWxzZXtpZihpLnR5cGUuZXhjbHVkZXModGhpcy50eXBlKSlyZXR1cm4gZTshciYmaS50eXBlLnJhbms+dGhpcy50eXBlLnJhbmsmJih0fHwodD1lLnNsaWNlKDAscykpLHQucHVzaCh0aGlzKSxyPSEwKSx0JiZ0LnB1c2goaSl9fXJldHVybiB0fHwodD1lLnNsaWNlKCkpLHJ8fHQucHVzaCh0aGlzKSx0fXJlbW92ZUZyb21TZXQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5lcShlW3RdKSlyZXR1cm4gZS5zbGljZSgwLHQpLmNvbmNhdChlLnNsaWNlKHQrMSkpO3JldHVybiBlfWlzSW5TZXQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5lcShlW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX1lcShlKXtyZXR1cm4gdGhpcz09ZXx8dGhpcy50eXBlPT1lLnR5cGUmJiRyKHRoaXMuYXR0cnMsZS5hdHRycyl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIE1hcmsuZnJvbUpTT04iKTtsZXQgcj1lLm1hcmtzW3QudHlwZV07aWYoIXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZXJlIGlzIG5vIG1hcmsgdHlwZSAke3QudHlwZX0gaW4gdGhpcyBzY2hlbWFgKTtsZXQgcz1yLmNyZWF0ZSh0LmF0dHJzKTtyZXR1cm4gci5jaGVja0F0dHJzKHMuYXR0cnMpLHN9c3RhdGljIHNhbWVTZXQoZSx0KXtpZihlPT10KXJldHVybiEwO2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKylpZighZVtyXS5lcSh0W3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgc2V0RnJvbShlKXtpZighZXx8QXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg9PTApcmV0dXJuIE9pLm5vbmU7aWYoZSBpbnN0YW5jZW9mIE9pKXJldHVybltlXTtsZXQgdD1lLnNsaWNlKCk7cmV0dXJuIHQuc29ydCgocixzKT0+ci50eXBlLnJhbmstcy50eXBlLnJhbmspLHR9fTtXLm5vbmU9W107Y2xhc3MgQnIgZXh0ZW5kcyBFcnJvcnt9Y2xhc3MgRXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5jb250ZW50PWUsdGhpcy5vcGVuU3RhcnQ9dCx0aGlzLm9wZW5FbmQ9cn1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLmNvbnRlbnQuc2l6ZS10aGlzLm9wZW5TdGFydC10aGlzLm9wZW5FbmR9aW5zZXJ0QXQoZSx0KXtsZXQgcj12Yyh0aGlzLmNvbnRlbnQsZSt0aGlzLm9wZW5TdGFydCx0KTtyZXR1cm4gciYmbmV3IEUocix0aGlzLm9wZW5TdGFydCx0aGlzLm9wZW5FbmQpfXJlbW92ZUJldHdlZW4oZSx0KXtyZXR1cm4gbmV3IEUod2ModGhpcy5jb250ZW50LGUrdGhpcy5vcGVuU3RhcnQsdCt0aGlzLm9wZW5TdGFydCksdGhpcy5vcGVuU3RhcnQsdGhpcy5vcGVuRW5kKX1lcShlKXtyZXR1cm4gdGhpcy5jb250ZW50LmVxKGUuY29udGVudCkmJnRoaXMub3BlblN0YXJ0PT1lLm9wZW5TdGFydCYmdGhpcy5vcGVuRW5kPT1lLm9wZW5FbmR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jb250ZW50KyIoIit0aGlzLm9wZW5TdGFydCsiLCIrdGhpcy5vcGVuRW5kKyIpIn10b0pTT04oKXtpZighdGhpcy5jb250ZW50LnNpemUpcmV0dXJuIG51bGw7bGV0IGU9e2NvbnRlbnQ6dGhpcy5jb250ZW50LnRvSlNPTigpfTtyZXR1cm4gdGhpcy5vcGVuU3RhcnQ+MCYmKGUub3BlblN0YXJ0PXRoaXMub3BlblN0YXJ0KSx0aGlzLm9wZW5FbmQ+MCYmKGUub3BlbkVuZD10aGlzLm9wZW5FbmQpLGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpcmV0dXJuIEUuZW1wdHk7bGV0IHI9dC5vcGVuU3RhcnR8fDAscz10Lm9wZW5FbmR8fDA7aWYodHlwZW9mIHIhPSJudW1iZXIifHx0eXBlb2YgcyE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFNsaWNlLmZyb21KU09OIik7cmV0dXJuIG5ldyBFKFMuZnJvbUpTT04oZSx0LmNvbnRlbnQpLHIscyl9c3RhdGljIG1heE9wZW4oZSx0PSEwKXtsZXQgcj0wLHM9MDtmb3IobGV0IGk9ZS5maXJzdENoaWxkO2kmJiFpLmlzTGVhZiYmKHR8fCFpLnR5cGUuc3BlYy5pc29sYXRpbmcpO2k9aS5maXJzdENoaWxkKXIrKztmb3IobGV0IGk9ZS5sYXN0Q2hpbGQ7aSYmIWkuaXNMZWFmJiYodHx8IWkudHlwZS5zcGVjLmlzb2xhdGluZyk7aT1pLmxhc3RDaGlsZClzKys7cmV0dXJuIG5ldyBFKGUscixzKX19RS5lbXB0eT1uZXcgRShTLmVtcHR5LDAsMCk7ZnVuY3Rpb24gd2MobixlLHQpe2xldHtpbmRleDpyLG9mZnNldDpzfT1uLmZpbmRJbmRleChlKSxpPW4ubWF5YmVDaGlsZChyKSx7aW5kZXg6byxvZmZzZXQ6bH09bi5maW5kSW5kZXgodCk7aWYocz09ZXx8aS5pc1RleHQpe2lmKGwhPXQmJiFuLmNoaWxkKG8pLmlzVGV4dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVtb3Zpbmcgbm9uLWZsYXQgcmFuZ2UiKTtyZXR1cm4gbi5jdXQoMCxlKS5hcHBlbmQobi5jdXQodCkpfWlmKHIhPW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJlbW92aW5nIG5vbi1mbGF0IHJhbmdlIik7cmV0dXJuIG4ucmVwbGFjZUNoaWxkKHIsaS5jb3B5KHdjKGkuY29udGVudCxlLXMtMSx0LXMtMSkpKX1mdW5jdGlvbiB2YyhuLGUsdCxyKXtsZXR7aW5kZXg6cyxvZmZzZXQ6aX09bi5maW5kSW5kZXgoZSksbz1uLm1heWJlQ2hpbGQocyk7aWYoaT09ZXx8by5pc1RleHQpcmV0dXJuIHImJiFyLmNhblJlcGxhY2UocyxzLHQpP251bGw6bi5jdXQoMCxlKS5hcHBlbmQodCkuYXBwZW5kKG4uY3V0KGUpKTtsZXQgbD12YyhvLmNvbnRlbnQsZS1pLTEsdCxvKTtyZXR1cm4gbCYmbi5yZXBsYWNlQ2hpbGQocyxvLmNvcHkobCkpfWZ1bmN0aW9uIEtoKG4sZSx0KXtpZih0Lm9wZW5TdGFydD5uLmRlcHRoKXRocm93IG5ldyBCcigiSW5zZXJ0ZWQgY29udGVudCBkZWVwZXIgdGhhbiBpbnNlcnRpb24gcG9zaXRpb24iKTtpZihuLmRlcHRoLXQub3BlblN0YXJ0IT1lLmRlcHRoLXQub3BlbkVuZCl0aHJvdyBuZXcgQnIoIkluY29uc2lzdGVudCBvcGVuIGRlcHRocyIpO3JldHVybiBTYyhuLGUsdCwwKX1mdW5jdGlvbiBTYyhuLGUsdCxyKXtsZXQgcz1uLmluZGV4KHIpLGk9bi5ub2RlKHIpO2lmKHM9PWUuaW5kZXgocikmJnI8bi5kZXB0aC10Lm9wZW5TdGFydCl7bGV0IG89U2MobixlLHQscisxKTtyZXR1cm4gaS5jb3B5KGkuY29udGVudC5yZXBsYWNlQ2hpbGQocyxvKSl9ZWxzZSBpZih0LmNvbnRlbnQuc2l6ZSlpZighdC5vcGVuU3RhcnQmJiF0Lm9wZW5FbmQmJm4uZGVwdGg9PXImJmUuZGVwdGg9PXIpe2xldCBvPW4ucGFyZW50LGw9by5jb250ZW50O3JldHVybiAkdChvLGwuY3V0KDAsbi5wYXJlbnRPZmZzZXQpLmFwcGVuZCh0LmNvbnRlbnQpLmFwcGVuZChsLmN1dChlLnBhcmVudE9mZnNldCkpKX1lbHNle2xldHtzdGFydDpvLGVuZDpsfT1KaCh0LG4pO3JldHVybiAkdChpLFRjKG4sbyxsLGUscikpfWVsc2UgcmV0dXJuICR0KGksX3IobixlLHIpKX1mdW5jdGlvbiBDYyhuLGUpe2lmKCFlLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQobi50eXBlKSl0aHJvdyBuZXcgQnIoIkNhbm5vdCBqb2luICIrZS50eXBlLm5hbWUrIiBvbnRvICIrbi50eXBlLm5hbWUpfWZ1bmN0aW9uIE5pKG4sZSx0KXtsZXQgcj1uLm5vZGUodCk7cmV0dXJuIENjKHIsZS5ub2RlKHQpKSxyfWZ1bmN0aW9uIHp0KG4sZSl7bGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wJiZuLmlzVGV4dCYmbi5zYW1lTWFya3VwKGVbdF0pP2VbdF09bi53aXRoVGV4dChlW3RdLnRleHQrbi50ZXh0KTplLnB1c2gobil9ZnVuY3Rpb24gUG4obixlLHQscil7bGV0IHM9KGV8fG4pLm5vZGUodCksaT0wLG89ZT9lLmluZGV4KHQpOnMuY2hpbGRDb3VudDtuJiYoaT1uLmluZGV4KHQpLG4uZGVwdGg+dD9pKys6bi50ZXh0T2Zmc2V0JiYoenQobi5ub2RlQWZ0ZXIsciksaSsrKSk7Zm9yKGxldCBsPWk7bDxvO2wrKyl6dChzLmNoaWxkKGwpLHIpO2UmJmUuZGVwdGg9PXQmJmUudGV4dE9mZnNldCYmenQoZS5ub2RlQmVmb3JlLHIpfWZ1bmN0aW9uICR0KG4sZSl7cmV0dXJuIG4udHlwZS5jaGVja0NvbnRlbnQoZSksbi5jb3B5KGUpfWZ1bmN0aW9uIFRjKG4sZSx0LHIscyl7bGV0IGk9bi5kZXB0aD5zJiZOaShuLGUscysxKSxvPXIuZGVwdGg+cyYmTmkodCxyLHMrMSksbD1bXTtyZXR1cm4gUG4obnVsbCxuLHMsbCksaSYmbyYmZS5pbmRleChzKT09dC5pbmRleChzKT8oQ2MoaSxvKSx6dCgkdChpLFRjKG4sZSx0LHIscysxKSksbCkpOihpJiZ6dCgkdChpLF9yKG4sZSxzKzEpKSxsKSxQbihlLHQscyxsKSxvJiZ6dCgkdChvLF9yKHQscixzKzEpKSxsKSksUG4ocixudWxsLHMsbCksbmV3IFMobCl9ZnVuY3Rpb24gX3IobixlLHQpe2xldCByPVtdO2lmKFBuKG51bGwsbix0LHIpLG4uZGVwdGg+dCl7bGV0IHM9TmkobixlLHQrMSk7enQoJHQocyxfcihuLGUsdCsxKSkscil9cmV0dXJuIFBuKGUsbnVsbCx0LHIpLG5ldyBTKHIpfWZ1bmN0aW9uIEpoKG4sZSl7bGV0IHQ9ZS5kZXB0aC1uLm9wZW5TdGFydCxzPWUubm9kZSh0KS5jb3B5KG4uY29udGVudCk7Zm9yKGxldCBpPXQtMTtpPj0wO2ktLSlzPWUubm9kZShpKS5jb3B5KFMuZnJvbShzKSk7cmV0dXJue3N0YXJ0OnMucmVzb2x2ZU5vQ2FjaGUobi5vcGVuU3RhcnQrdCksZW5kOnMucmVzb2x2ZU5vQ2FjaGUocy5jb250ZW50LnNpemUtbi5vcGVuRW5kLXQpfX1jbGFzcyBXbntjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5wb3M9ZSx0aGlzLnBhdGg9dCx0aGlzLnBhcmVudE9mZnNldD1yLHRoaXMuZGVwdGg9dC5sZW5ndGgvMy0xfXJlc29sdmVEZXB0aChlKXtyZXR1cm4gZT09bnVsbD90aGlzLmRlcHRoOmU8MD90aGlzLmRlcHRoK2U6ZX1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMubm9kZSh0aGlzLmRlcHRoKX1nZXQgZG9jKCl7cmV0dXJuIHRoaXMubm9kZSgwKX1ub2RlKGUpe3JldHVybiB0aGlzLnBhdGhbdGhpcy5yZXNvbHZlRGVwdGgoZSkqM119aW5kZXgoZSl7cmV0dXJuIHRoaXMucGF0aFt0aGlzLnJlc29sdmVEZXB0aChlKSozKzFdfWluZGV4QWZ0ZXIoZSl7cmV0dXJuIGU9dGhpcy5yZXNvbHZlRGVwdGgoZSksdGhpcy5pbmRleChlKSsoZT09dGhpcy5kZXB0aCYmIXRoaXMudGV4dE9mZnNldD8wOjEpfXN0YXJ0KGUpe3JldHVybiBlPXRoaXMucmVzb2x2ZURlcHRoKGUpLGU9PTA/MDp0aGlzLnBhdGhbZSozLTFdKzF9ZW5kKGUpe3JldHVybiBlPXRoaXMucmVzb2x2ZURlcHRoKGUpLHRoaXMuc3RhcnQoZSkrdGhpcy5ub2RlKGUpLmNvbnRlbnQuc2l6ZX1iZWZvcmUoZSl7aWYoZT10aGlzLnJlc29sdmVEZXB0aChlKSwhZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlcmUgaXMgbm8gcG9zaXRpb24gYmVmb3JlIHRoZSB0b3AtbGV2ZWwgbm9kZSIpO3JldHVybiBlPT10aGlzLmRlcHRoKzE/dGhpcy5wb3M6dGhpcy5wYXRoW2UqMy0xXX1hZnRlcihlKXtpZihlPXRoaXMucmVzb2x2ZURlcHRoKGUpLCFlKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGVyZSBpcyBubyBwb3NpdGlvbiBhZnRlciB0aGUgdG9wLWxldmVsIG5vZGUiKTtyZXR1cm4gZT09dGhpcy5kZXB0aCsxP3RoaXMucG9zOnRoaXMucGF0aFtlKjMtMV0rdGhpcy5wYXRoW2UqM10ubm9kZVNpemV9Z2V0IHRleHRPZmZzZXQoKXtyZXR1cm4gdGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV19Z2V0IG5vZGVBZnRlcigpe2xldCBlPXRoaXMucGFyZW50LHQ9dGhpcy5pbmRleCh0aGlzLmRlcHRoKTtpZih0PT1lLmNoaWxkQ291bnQpcmV0dXJuIG51bGw7bGV0IHI9dGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV0scz1lLmNoaWxkKHQpO3JldHVybiByP2UuY2hpbGQodCkuY3V0KHIpOnN9Z2V0IG5vZGVCZWZvcmUoKXtsZXQgZT10aGlzLmluZGV4KHRoaXMuZGVwdGgpLHQ9dGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV07cmV0dXJuIHQ/dGhpcy5wYXJlbnQuY2hpbGQoZSkuY3V0KDAsdCk6ZT09MD9udWxsOnRoaXMucGFyZW50LmNoaWxkKGUtMSl9cG9zQXRJbmRleChlLHQpe3Q9dGhpcy5yZXNvbHZlRGVwdGgodCk7bGV0IHI9dGhpcy5wYXRoW3QqM10scz10PT0wPzA6dGhpcy5wYXRoW3QqMy0xXSsxO2ZvcihsZXQgaT0wO2k8ZTtpKyspcys9ci5jaGlsZChpKS5ub2RlU2l6ZTtyZXR1cm4gc31tYXJrcygpe2xldCBlPXRoaXMucGFyZW50LHQ9dGhpcy5pbmRleCgpO2lmKGUuY29udGVudC5zaXplPT0wKXJldHVybiBXLm5vbmU7aWYodGhpcy50ZXh0T2Zmc2V0KXJldHVybiBlLmNoaWxkKHQpLm1hcmtzO2xldCByPWUubWF5YmVDaGlsZCh0LTEpLHM9ZS5tYXliZUNoaWxkKHQpO2lmKCFyKXtsZXQgbD1yO3I9cyxzPWx9bGV0IGk9ci5tYXJrcztmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKylpW29dLnR5cGUuc3BlYy5pbmNsdXNpdmU9PT0hMSYmKCFzfHwhaVtvXS5pc0luU2V0KHMubWFya3MpKSYmKGk9aVtvLS1dLnJlbW92ZUZyb21TZXQoaSkpO3JldHVybiBpfW1hcmtzQWNyb3NzKGUpe2xldCB0PXRoaXMucGFyZW50Lm1heWJlQ2hpbGQodGhpcy5pbmRleCgpKTtpZighdHx8IXQuaXNJbmxpbmUpcmV0dXJuIG51bGw7bGV0IHI9dC5tYXJrcyxzPWUucGFyZW50Lm1heWJlQ2hpbGQoZS5pbmRleCgpKTtmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylyW2ldLnR5cGUuc3BlYy5pbmNsdXNpdmU9PT0hMSYmKCFzfHwhcltpXS5pc0luU2V0KHMubWFya3MpKSYmKHI9cltpLS1dLnJlbW92ZUZyb21TZXQocikpO3JldHVybiByfXNoYXJlZERlcHRoKGUpe2ZvcihsZXQgdD10aGlzLmRlcHRoO3Q+MDt0LS0paWYodGhpcy5zdGFydCh0KTw9ZSYmdGhpcy5lbmQodCk+PWUpcmV0dXJuIHQ7cmV0dXJuIDB9YmxvY2tSYW5nZShlPXRoaXMsdCl7aWYoZS5wb3M8dGhpcy5wb3MpcmV0dXJuIGUuYmxvY2tSYW5nZSh0aGlzKTtmb3IobGV0IHI9dGhpcy5kZXB0aC0odGhpcy5wYXJlbnQuaW5saW5lQ29udGVudHx8dGhpcy5wb3M9PWUucG9zPzE6MCk7cj49MDtyLS0paWYoZS5wb3M8PXRoaXMuZW5kKHIpJiYoIXR8fHQodGhpcy5ub2RlKHIpKSkpcmV0dXJuIG5ldyBIcih0aGlzLGUscik7cmV0dXJuIG51bGx9c2FtZVBhcmVudChlKXtyZXR1cm4gdGhpcy5wb3MtdGhpcy5wYXJlbnRPZmZzZXQ9PWUucG9zLWUucGFyZW50T2Zmc2V0fW1heChlKXtyZXR1cm4gZS5wb3M+dGhpcy5wb3M/ZTp0aGlzfW1pbihlKXtyZXR1cm4gZS5wb3M8dGhpcy5wb3M/ZTp0aGlzfXRvU3RyaW5nKCl7bGV0IGU9IiI7Zm9yKGxldCB0PTE7dDw9dGhpcy5kZXB0aDt0KyspZSs9KGU/Ii8iOiIiKSt0aGlzLm5vZGUodCkudHlwZS5uYW1lKyJfIit0aGlzLmluZGV4KHQtMSk7cmV0dXJuIGUrIjoiK3RoaXMucGFyZW50T2Zmc2V0fXN0YXRpYyByZXNvbHZlKGUsdCl7aWYoISh0Pj0wJiZ0PD1lLmNvbnRlbnQuc2l6ZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlBvc2l0aW9uICIrdCsiIG91dCBvZiByYW5nZSIpO2xldCByPVtdLHM9MCxpPXQ7Zm9yKGxldCBvPWU7Oyl7bGV0e2luZGV4Omwsb2Zmc2V0OmF9PW8uY29udGVudC5maW5kSW5kZXgoaSksYz1pLWE7aWYoci5wdXNoKG8sbCxzK2EpLCFjfHwobz1vLmNoaWxkKGwpLG8uaXNUZXh0KSlicmVhaztpPWMtMSxzKz1hKzF9cmV0dXJuIG5ldyBXbih0LHIsaSl9c3RhdGljIHJlc29sdmVDYWNoZWQoZSx0KXtsZXQgcj1nbC5nZXQoZSk7aWYocilmb3IobGV0IGk9MDtpPHIuZWx0cy5sZW5ndGg7aSsrKXtsZXQgbz1yLmVsdHNbaV07aWYoby5wb3M9PXQpcmV0dXJuIG99ZWxzZSBnbC5zZXQoZSxyPW5ldyBHaCk7bGV0IHM9ci5lbHRzW3IuaV09V24ucmVzb2x2ZShlLHQpO3JldHVybiByLmk9KHIuaSsxKSVRaCxzfX1jbGFzcyBHaHtjb25zdHJ1Y3Rvcigpe3RoaXMuZWx0cz1bXSx0aGlzLmk9MH19Y29uc3QgUWg9MTIsZ2w9bmV3IFdlYWtNYXA7Y2xhc3MgSHJ7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuJGZyb209ZSx0aGlzLiR0bz10LHRoaXMuZGVwdGg9cn1nZXQgc3RhcnQoKXtyZXR1cm4gdGhpcy4kZnJvbS5iZWZvcmUodGhpcy5kZXB0aCsxKX1nZXQgZW5kKCl7cmV0dXJuIHRoaXMuJHRvLmFmdGVyKHRoaXMuZGVwdGgrMSl9Z2V0IHBhcmVudCgpe3JldHVybiB0aGlzLiRmcm9tLm5vZGUodGhpcy5kZXB0aCl9Z2V0IHN0YXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy4kZnJvbS5pbmRleCh0aGlzLmRlcHRoKX1nZXQgZW5kSW5kZXgoKXtyZXR1cm4gdGhpcy4kdG8uaW5kZXhBZnRlcih0aGlzLmRlcHRoKX19Y29uc3QgWGg9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBMZXtjb25zdHJ1Y3RvcihlLHQscixzPVcubm9uZSl7dGhpcy50eXBlPWUsdGhpcy5hdHRycz10LHRoaXMubWFya3M9cyx0aGlzLmNvbnRlbnQ9cnx8Uy5lbXB0eX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jb250ZW50LmNvbnRlbnR9Z2V0IG5vZGVTaXplKCl7cmV0dXJuIHRoaXMuaXNMZWFmPzE6Mit0aGlzLmNvbnRlbnQuc2l6ZX1nZXQgY2hpbGRDb3VudCgpe3JldHVybiB0aGlzLmNvbnRlbnQuY2hpbGRDb3VudH1jaGlsZChlKXtyZXR1cm4gdGhpcy5jb250ZW50LmNoaWxkKGUpfW1heWJlQ2hpbGQoZSl7cmV0dXJuIHRoaXMuY29udGVudC5tYXliZUNoaWxkKGUpfWZvckVhY2goZSl7dGhpcy5jb250ZW50LmZvckVhY2goZSl9bm9kZXNCZXR3ZWVuKGUsdCxyLHM9MCl7dGhpcy5jb250ZW50Lm5vZGVzQmV0d2VlbihlLHQscixzLHRoaXMpfWRlc2NlbmRhbnRzKGUpe3RoaXMubm9kZXNCZXR3ZWVuKDAsdGhpcy5jb250ZW50LnNpemUsZSl9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuaXNMZWFmJiZ0aGlzLnR5cGUuc3BlYy5sZWFmVGV4dD90aGlzLnR5cGUuc3BlYy5sZWFmVGV4dCh0aGlzKTp0aGlzLnRleHRCZXR3ZWVuKDAsdGhpcy5jb250ZW50LnNpemUsIiIpfXRleHRCZXR3ZWVuKGUsdCxyLHMpe3JldHVybiB0aGlzLmNvbnRlbnQudGV4dEJldHdlZW4oZSx0LHIscyl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jb250ZW50LmZpcnN0Q2hpbGR9Z2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGFzdENoaWxkfWVxKGUpe3JldHVybiB0aGlzPT1lfHx0aGlzLnNhbWVNYXJrdXAoZSkmJnRoaXMuY29udGVudC5lcShlLmNvbnRlbnQpfXNhbWVNYXJrdXAoZSl7cmV0dXJuIHRoaXMuaGFzTWFya3VwKGUudHlwZSxlLmF0dHJzLGUubWFya3MpfWhhc01hcmt1cChlLHQscil7cmV0dXJuIHRoaXMudHlwZT09ZSYmJHIodGhpcy5hdHRycyx0fHxlLmRlZmF1bHRBdHRyc3x8WGgpJiZXLnNhbWVTZXQodGhpcy5tYXJrcyxyfHxXLm5vbmUpfWNvcHkoZT1udWxsKXtyZXR1cm4gZT09dGhpcy5jb250ZW50P3RoaXM6bmV3IExlKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9bWFyayhlKXtyZXR1cm4gZT09dGhpcy5tYXJrcz90aGlzOm5ldyBMZSh0aGlzLnR5cGUsdGhpcy5hdHRycyx0aGlzLmNvbnRlbnQsZSl9Y3V0KGUsdD10aGlzLmNvbnRlbnQuc2l6ZSl7cmV0dXJuIGU9PTAmJnQ9PXRoaXMuY29udGVudC5zaXplP3RoaXM6dGhpcy5jb3B5KHRoaXMuY29udGVudC5jdXQoZSx0KSl9c2xpY2UoZSx0PXRoaXMuY29udGVudC5zaXplLHI9ITEpe2lmKGU9PXQpcmV0dXJuIEUuZW1wdHk7bGV0IHM9dGhpcy5yZXNvbHZlKGUpLGk9dGhpcy5yZXNvbHZlKHQpLG89cj8wOnMuc2hhcmVkRGVwdGgodCksbD1zLnN0YXJ0KG8pLGM9cy5ub2RlKG8pLmNvbnRlbnQuY3V0KHMucG9zLWwsaS5wb3MtbCk7cmV0dXJuIG5ldyBFKGMscy5kZXB0aC1vLGkuZGVwdGgtbyl9cmVwbGFjZShlLHQscil7cmV0dXJuIEtoKHRoaXMucmVzb2x2ZShlKSx0aGlzLnJlc29sdmUodCkscil9bm9kZUF0KGUpe2ZvcihsZXQgdD10aGlzOzspe2xldHtpbmRleDpyLG9mZnNldDpzfT10LmNvbnRlbnQuZmluZEluZGV4KGUpO2lmKHQ9dC5tYXliZUNoaWxkKHIpLCF0KXJldHVybiBudWxsO2lmKHM9PWV8fHQuaXNUZXh0KXJldHVybiB0O2UtPXMrMX19Y2hpbGRBZnRlcihlKXtsZXR7aW5kZXg6dCxvZmZzZXQ6cn09dGhpcy5jb250ZW50LmZpbmRJbmRleChlKTtyZXR1cm57bm9kZTp0aGlzLmNvbnRlbnQubWF5YmVDaGlsZCh0KSxpbmRleDp0LG9mZnNldDpyfX1jaGlsZEJlZm9yZShlKXtpZihlPT0wKXJldHVybntub2RlOm51bGwsaW5kZXg6MCxvZmZzZXQ6MH07bGV0e2luZGV4OnQsb2Zmc2V0OnJ9PXRoaXMuY29udGVudC5maW5kSW5kZXgoZSk7aWYocjxlKXJldHVybntub2RlOnRoaXMuY29udGVudC5jaGlsZCh0KSxpbmRleDp0LG9mZnNldDpyfTtsZXQgcz10aGlzLmNvbnRlbnQuY2hpbGQodC0xKTtyZXR1cm57bm9kZTpzLGluZGV4OnQtMSxvZmZzZXQ6ci1zLm5vZGVTaXplfX1yZXNvbHZlKGUpe3JldHVybiBXbi5yZXNvbHZlQ2FjaGVkKHRoaXMsZSl9cmVzb2x2ZU5vQ2FjaGUoZSl7cmV0dXJuIFduLnJlc29sdmUodGhpcyxlKX1yYW5nZUhhc01hcmsoZSx0LHIpe2xldCBzPSExO3JldHVybiB0PmUmJnRoaXMubm9kZXNCZXR3ZWVuKGUsdCxpPT4oci5pc0luU2V0KGkubWFya3MpJiYocz0hMCksIXMpKSxzfWdldCBpc0Jsb2NrKCl7cmV0dXJuIHRoaXMudHlwZS5pc0Jsb2NrfWdldCBpc1RleHRibG9jaygpe3JldHVybiB0aGlzLnR5cGUuaXNUZXh0YmxvY2t9Z2V0IGlubGluZUNvbnRlbnQoKXtyZXR1cm4gdGhpcy50eXBlLmlubGluZUNvbnRlbnR9Z2V0IGlzSW5saW5lKCl7cmV0dXJuIHRoaXMudHlwZS5pc0lubGluZX1nZXQgaXNUZXh0KCl7cmV0dXJuIHRoaXMudHlwZS5pc1RleHR9Z2V0IGlzTGVhZigpe3JldHVybiB0aGlzLnR5cGUuaXNMZWFmfWdldCBpc0F0b20oKXtyZXR1cm4gdGhpcy50eXBlLmlzQXRvbX10b1N0cmluZygpe2lmKHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcpcmV0dXJuIHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcodGhpcyk7bGV0IGU9dGhpcy50eXBlLm5hbWU7cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZSs9IigiK3RoaXMuY29udGVudC50b1N0cmluZ0lubmVyKCkrIikiKSxNYyh0aGlzLm1hcmtzLGUpfWNvbnRlbnRNYXRjaEF0KGUpe2xldCB0PXRoaXMudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudCh0aGlzLmNvbnRlbnQsMCxlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkNhbGxlZCBjb250ZW50TWF0Y2hBdCBvbiBhIG5vZGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQiKTtyZXR1cm4gdH1jYW5SZXBsYWNlKGUsdCxyPVMuZW1wdHkscz0wLGk9ci5jaGlsZENvdW50KXtsZXQgbz10aGlzLmNvbnRlbnRNYXRjaEF0KGUpLm1hdGNoRnJhZ21lbnQocixzLGkpLGw9byYmby5tYXRjaEZyYWdtZW50KHRoaXMuY29udGVudCx0KTtpZighbHx8IWwudmFsaWRFbmQpcmV0dXJuITE7Zm9yKGxldCBhPXM7YTxpO2ErKylpZighdGhpcy50eXBlLmFsbG93c01hcmtzKHIuY2hpbGQoYSkubWFya3MpKXJldHVybiExO3JldHVybiEwfWNhblJlcGxhY2VXaXRoKGUsdCxyLHMpe2lmKHMmJiF0aGlzLnR5cGUuYWxsb3dzTWFya3MocykpcmV0dXJuITE7bGV0IGk9dGhpcy5jb250ZW50TWF0Y2hBdChlKS5tYXRjaFR5cGUociksbz1pJiZpLm1hdGNoRnJhZ21lbnQodGhpcy5jb250ZW50LHQpO3JldHVybiBvP28udmFsaWRFbmQ6ITF9Y2FuQXBwZW5kKGUpe3JldHVybiBlLmNvbnRlbnQuc2l6ZT90aGlzLmNhblJlcGxhY2UodGhpcy5jaGlsZENvdW50LHRoaXMuY2hpbGRDb3VudCxlLmNvbnRlbnQpOnRoaXMudHlwZS5jb21wYXRpYmxlQ29udGVudChlLnR5cGUpfWNoZWNrKCl7dGhpcy50eXBlLmNoZWNrQ29udGVudCh0aGlzLmNvbnRlbnQpLHRoaXMudHlwZS5jaGVja0F0dHJzKHRoaXMuYXR0cnMpO2xldCBlPVcubm9uZTtmb3IobGV0IHQ9MDt0PHRoaXMubWFya3MubGVuZ3RoO3QrKyl7bGV0IHI9dGhpcy5tYXJrc1t0XTtyLnR5cGUuY2hlY2tBdHRycyhyLmF0dHJzKSxlPXIuYWRkVG9TZXQoZSl9aWYoIVcuc2FtZVNldChlLHRoaXMubWFya3MpKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIGNvbGxlY3Rpb24gb2YgbWFya3MgZm9yIG5vZGUgJHt0aGlzLnR5cGUubmFtZX06ICR7dGhpcy5tYXJrcy5tYXAodD0+dC50eXBlLm5hbWUpfWApO3RoaXMuY29udGVudC5mb3JFYWNoKHQ9PnQuY2hlY2soKSl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZS5jb250ZW50PXRoaXMuY29udGVudC50b0pTT04oKSksdGhpcy5tYXJrcy5sZW5ndGgmJihlLm1hcmtzPXRoaXMubWFya3MubWFwKHQ9PnQudG9KU09OKCkpKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlLmZyb21KU09OIik7bGV0IHI7aWYodC5tYXJrcyl7aWYoIUFycmF5LmlzQXJyYXkodC5tYXJrcykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbWFyayBkYXRhIGZvciBOb2RlLmZyb21KU09OIik7cj10Lm1hcmtzLm1hcChlLm1hcmtGcm9tSlNPTil9aWYodC50eXBlPT0idGV4dCIpe2lmKHR5cGVvZiB0LnRleHQhPSJzdHJpbmciKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRleHQgbm9kZSBpbiBKU09OIik7cmV0dXJuIGUudGV4dCh0LnRleHQscil9bGV0IHM9Uy5mcm9tSlNPTihlLHQuY29udGVudCksaT1lLm5vZGVUeXBlKHQudHlwZSkuY3JlYXRlKHQuYXR0cnMscyxyKTtyZXR1cm4gaS50eXBlLmNoZWNrQXR0cnMoaS5hdHRycyksaX19TGUucHJvdG90eXBlLnRleHQ9dm9pZCAwO2NsYXNzIEZyIGV4dGVuZHMgTGV7Y29uc3RydWN0b3IoZSx0LHIscyl7aWYoc3VwZXIoZSx0LG51bGwscyksIXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkVtcHR5IHRleHQgbm9kZXMgYXJlIG5vdCBhbGxvd2VkIik7dGhpcy50ZXh0PXJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy50eXBlLnNwZWMudG9EZWJ1Z1N0cmluZz90aGlzLnR5cGUuc3BlYy50b0RlYnVnU3RyaW5nKHRoaXMpOk1jKHRoaXMubWFya3MsSlNPTi5zdHJpbmdpZnkodGhpcy50ZXh0KSl9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMudGV4dH10ZXh0QmV0d2VlbihlLHQpe3JldHVybiB0aGlzLnRleHQuc2xpY2UoZSx0KX1nZXQgbm9kZVNpemUoKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH1tYXJrKGUpe3JldHVybiBlPT10aGlzLm1hcmtzP3RoaXM6bmV3IEZyKHRoaXMudHlwZSx0aGlzLmF0dHJzLHRoaXMudGV4dCxlKX13aXRoVGV4dChlKXtyZXR1cm4gZT09dGhpcy50ZXh0P3RoaXM6bmV3IEZyKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9Y3V0KGU9MCx0PXRoaXMudGV4dC5sZW5ndGgpe3JldHVybiBlPT0wJiZ0PT10aGlzLnRleHQubGVuZ3RoP3RoaXM6dGhpcy53aXRoVGV4dCh0aGlzLnRleHQuc2xpY2UoZSx0KSl9ZXEoZSl7cmV0dXJuIHRoaXMuc2FtZU1hcmt1cChlKSYmdGhpcy50ZXh0PT1lLnRleHR9dG9KU09OKCl7bGV0IGU9c3VwZXIudG9KU09OKCk7cmV0dXJuIGUudGV4dD10aGlzLnRleHQsZX19ZnVuY3Rpb24gTWMobixlKXtmb3IobGV0IHQ9bi5sZW5ndGgtMTt0Pj0wO3QtLSllPW5bdF0udHlwZS5uYW1lKyIoIitlKyIpIjtyZXR1cm4gZX1jbGFzcyBGdHtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbGlkRW5kPWUsdGhpcy5uZXh0PVtdLHRoaXMud3JhcENhY2hlPVtdfXN0YXRpYyBwYXJzZShlLHQpe2xldCByPW5ldyBZaChlLHQpO2lmKHIubmV4dD09bnVsbClyZXR1cm4gRnQuZW1wdHk7bGV0IHM9RWMocik7ci5uZXh0JiZyLmVycigiVW5leHBlY3RlZCB0cmFpbGluZyB0ZXh0Iik7bGV0IGk9b2Yoc2YocykpO3JldHVybiBsZihpLHIpLGl9bWF0Y2hUeXBlKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5uZXh0Lmxlbmd0aDt0KyspaWYodGhpcy5uZXh0W3RdLnR5cGU9PWUpcmV0dXJuIHRoaXMubmV4dFt0XS5uZXh0O3JldHVybiBudWxsfW1hdGNoRnJhZ21lbnQoZSx0PTAscj1lLmNoaWxkQ291bnQpe2xldCBzPXRoaXM7Zm9yKGxldCBpPXQ7cyYmaTxyO2krKylzPXMubWF0Y2hUeXBlKGUuY2hpbGQoaSkudHlwZSk7cmV0dXJuIHN9Z2V0IGlubGluZUNvbnRlbnQoKXtyZXR1cm4gdGhpcy5uZXh0Lmxlbmd0aCE9MCYmdGhpcy5uZXh0WzBdLnR5cGUuaXNJbmxpbmV9Z2V0IGRlZmF1bHRUeXBlKCl7Zm9yKGxldCBlPTA7ZTx0aGlzLm5leHQubGVuZ3RoO2UrKyl7bGV0e3R5cGU6dH09dGhpcy5uZXh0W2VdO2lmKCEodC5pc1RleHR8fHQuaGFzUmVxdWlyZWRBdHRycygpKSlyZXR1cm4gdH1yZXR1cm4gbnVsbH1jb21wYXRpYmxlKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5uZXh0Lmxlbmd0aDt0KyspZm9yKGxldCByPTA7cjxlLm5leHQubGVuZ3RoO3IrKylpZih0aGlzLm5leHRbdF0udHlwZT09ZS5uZXh0W3JdLnR5cGUpcmV0dXJuITA7cmV0dXJuITF9ZmlsbEJlZm9yZShlLHQ9ITEscj0wKXtsZXQgcz1bdGhpc107ZnVuY3Rpb24gaShvLGwpe2xldCBhPW8ubWF0Y2hGcmFnbWVudChlLHIpO2lmKGEmJighdHx8YS52YWxpZEVuZCkpcmV0dXJuIFMuZnJvbShsLm1hcChjPT5jLmNyZWF0ZUFuZEZpbGwoKSkpO2ZvcihsZXQgYz0wO2M8by5uZXh0Lmxlbmd0aDtjKyspe2xldHt0eXBlOnUsbmV4dDpkfT1vLm5leHRbY107aWYoISh1LmlzVGV4dHx8dS5oYXNSZXF1aXJlZEF0dHJzKCkpJiZzLmluZGV4T2YoZCk9PS0xKXtzLnB1c2goZCk7bGV0IGg9aShkLGwuY29uY2F0KHUpKTtpZihoKXJldHVybiBofX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0aGlzLFtdKX1maW5kV3JhcHBpbmcoZSl7Zm9yKGxldCByPTA7cjx0aGlzLndyYXBDYWNoZS5sZW5ndGg7cis9MilpZih0aGlzLndyYXBDYWNoZVtyXT09ZSlyZXR1cm4gdGhpcy53cmFwQ2FjaGVbcisxXTtsZXQgdD10aGlzLmNvbXB1dGVXcmFwcGluZyhlKTtyZXR1cm4gdGhpcy53cmFwQ2FjaGUucHVzaChlLHQpLHR9Y29tcHV0ZVdyYXBwaW5nKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCkscj1be21hdGNoOnRoaXMsdHlwZTpudWxsLHZpYTpudWxsfV07Zm9yKDtyLmxlbmd0aDspe2xldCBzPXIuc2hpZnQoKSxpPXMubWF0Y2g7aWYoaS5tYXRjaFR5cGUoZSkpe2xldCBvPVtdO2ZvcihsZXQgbD1zO2wudHlwZTtsPWwudmlhKW8ucHVzaChsLnR5cGUpO3JldHVybiBvLnJldmVyc2UoKX1mb3IobGV0IG89MDtvPGkubmV4dC5sZW5ndGg7bysrKXtsZXR7dHlwZTpsLG5leHQ6YX09aS5uZXh0W29dOyFsLmlzTGVhZiYmIWwuaGFzUmVxdWlyZWRBdHRycygpJiYhKGwubmFtZSBpbiB0KSYmKCFzLnR5cGV8fGEudmFsaWRFbmQpJiYoci5wdXNoKHttYXRjaDpsLmNvbnRlbnRNYXRjaCx0eXBlOmwsdmlhOnN9KSx0W2wubmFtZV09ITApfX1yZXR1cm4gbnVsbH1nZXQgZWRnZUNvdW50KCl7cmV0dXJuIHRoaXMubmV4dC5sZW5ndGh9ZWRnZShlKXtpZihlPj10aGlzLm5leHQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSdzIG5vICR7ZX10aCBlZGdlIGluIHRoaXMgY29udGVudCBtYXRjaGApO3JldHVybiB0aGlzLm5leHRbZV19dG9TdHJpbmcoKXtsZXQgZT1bXTtmdW5jdGlvbiB0KHIpe2UucHVzaChyKTtmb3IobGV0IHM9MDtzPHIubmV4dC5sZW5ndGg7cysrKWUuaW5kZXhPZihyLm5leHRbc10ubmV4dCk9PS0xJiZ0KHIubmV4dFtzXS5uZXh0KX1yZXR1cm4gdCh0aGlzKSxlLm1hcCgocixzKT0+e2xldCBpPXMrKHIudmFsaWRFbmQ/IioiOiIgIikrIiAiO2ZvcihsZXQgbz0wO288ci5uZXh0Lmxlbmd0aDtvKyspaSs9KG8/IiwgIjoiIikrci5uZXh0W29dLnR5cGUubmFtZSsiLT4iK2UuaW5kZXhPZihyLm5leHRbb10ubmV4dCk7cmV0dXJuIGl9KS5qb2luKGAKYCl9fUZ0LmVtcHR5PW5ldyBGdCghMCk7Y2xhc3MgWWh7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmluZz1lLHRoaXMubm9kZVR5cGVzPXQsdGhpcy5pbmxpbmU9bnVsbCx0aGlzLnBvcz0wLHRoaXMudG9rZW5zPWUuc3BsaXQoL1xzKig/PVxifFxXfCQpLyksdGhpcy50b2tlbnNbdGhpcy50b2tlbnMubGVuZ3RoLTFdPT0iIiYmdGhpcy50b2tlbnMucG9wKCksdGhpcy50b2tlbnNbMF09PSIiJiZ0aGlzLnRva2Vucy5zaGlmdCgpfWdldCBuZXh0KCl7cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMucG9zXX1lYXQoZSl7cmV0dXJuIHRoaXMubmV4dD09ZSYmKHRoaXMucG9zKyt8fCEwKX1lcnIoZSl7dGhyb3cgbmV3IFN5bnRheEVycm9yKGUrIiAoaW4gY29udGVudCBleHByZXNzaW9uICciK3RoaXMuc3RyaW5nKyInKSIpfX1mdW5jdGlvbiBFYyhuKXtsZXQgZT1bXTtkbyBlLnB1c2goWmgobikpO3doaWxlKG4uZWF0KCJ8IikpO3JldHVybiBlLmxlbmd0aD09MT9lWzBdOnt0eXBlOiJjaG9pY2UiLGV4cHJzOmV9fWZ1bmN0aW9uIFpoKG4pe2xldCBlPVtdO2RvIGUucHVzaChlZihuKSk7d2hpbGUobi5uZXh0JiZuLm5leHQhPSIpIiYmbi5uZXh0IT0ifCIpO3JldHVybiBlLmxlbmd0aD09MT9lWzBdOnt0eXBlOiJzZXEiLGV4cHJzOmV9fWZ1bmN0aW9uIGVmKG4pe2xldCBlPXJmKG4pO2Zvcig7OylpZihuLmVhdCgiKyIpKWU9e3R5cGU6InBsdXMiLGV4cHI6ZX07ZWxzZSBpZihuLmVhdCgiKiIpKWU9e3R5cGU6InN0YXIiLGV4cHI6ZX07ZWxzZSBpZihuLmVhdCgiPyIpKWU9e3R5cGU6Im9wdCIsZXhwcjplfTtlbHNlIGlmKG4uZWF0KCJ7IikpZT10ZihuLGUpO2Vsc2UgYnJlYWs7cmV0dXJuIGV9ZnVuY3Rpb24geWwobil7L1xELy50ZXN0KG4ubmV4dCkmJm4uZXJyKCJFeHBlY3RlZCBudW1iZXIsIGdvdCAnIituLm5leHQrIiciKTtsZXQgZT1OdW1iZXIobi5uZXh0KTtyZXR1cm4gbi5wb3MrKyxlfWZ1bmN0aW9uIHRmKG4sZSl7bGV0IHQ9eWwobikscj10O3JldHVybiBuLmVhdCgiLCIpJiYobi5uZXh0IT0ifSI/cj15bChuKTpyPS0xKSxuLmVhdCgifSIpfHxuLmVycigiVW5jbG9zZWQgYnJhY2VkIHJhbmdlIikse3R5cGU6InJhbmdlIixtaW46dCxtYXg6cixleHByOmV9fWZ1bmN0aW9uIG5mKG4sZSl7bGV0IHQ9bi5ub2RlVHlwZXMscj10W2VdO2lmKHIpcmV0dXJuW3JdO2xldCBzPVtdO2ZvcihsZXQgaSBpbiB0KXtsZXQgbz10W2ldO28uaXNJbkdyb3VwKGUpJiZzLnB1c2gobyl9cmV0dXJuIHMubGVuZ3RoPT0wJiZuLmVycigiTm8gbm9kZSB0eXBlIG9yIGdyb3VwICciK2UrIicgZm91bmQiKSxzfWZ1bmN0aW9uIHJmKG4pe2lmKG4uZWF0KCIoIikpe2xldCBlPUVjKG4pO3JldHVybiBuLmVhdCgiKSIpfHxuLmVycigiTWlzc2luZyBjbG9zaW5nIHBhcmVuIiksZX1lbHNlIGlmKC9cVy8udGVzdChuLm5leHQpKW4uZXJyKCJVbmV4cGVjdGVkIHRva2VuICciK24ubmV4dCsiJyIpO2Vsc2V7bGV0IGU9bmYobixuLm5leHQpLm1hcCh0PT4obi5pbmxpbmU9PW51bGw/bi5pbmxpbmU9dC5pc0lubGluZTpuLmlubGluZSE9dC5pc0lubGluZSYmbi5lcnIoIk1peGluZyBpbmxpbmUgYW5kIGJsb2NrIGNvbnRlbnQiKSx7dHlwZToibmFtZSIsdmFsdWU6dH0pKTtyZXR1cm4gbi5wb3MrKyxlLmxlbmd0aD09MT9lWzBdOnt0eXBlOiJjaG9pY2UiLGV4cHJzOmV9fX1mdW5jdGlvbiBzZihuKXtsZXQgZT1bW11dO3JldHVybiBzKGkobiwwKSx0KCkpLGU7ZnVuY3Rpb24gdCgpe3JldHVybiBlLnB1c2goW10pLTF9ZnVuY3Rpb24gcihvLGwsYSl7bGV0IGM9e3Rlcm06YSx0bzpsfTtyZXR1cm4gZVtvXS5wdXNoKGMpLGN9ZnVuY3Rpb24gcyhvLGwpe28uZm9yRWFjaChhPT5hLnRvPWwpfWZ1bmN0aW9uIGkobyxsKXtpZihvLnR5cGU9PSJjaG9pY2UiKXJldHVybiBvLmV4cHJzLnJlZHVjZSgoYSxjKT0+YS5jb25jYXQoaShjLGwpKSxbXSk7aWYoby50eXBlPT0ic2VxIilmb3IobGV0IGE9MDs7YSsrKXtsZXQgYz1pKG8uZXhwcnNbYV0sbCk7aWYoYT09by5leHBycy5sZW5ndGgtMSlyZXR1cm4gYztzKGMsbD10KCkpfWVsc2UgaWYoby50eXBlPT0ic3RhciIpe2xldCBhPXQoKTtyZXR1cm4gcihsLGEpLHMoaShvLmV4cHIsYSksYSksW3IoYSldfWVsc2UgaWYoby50eXBlPT0icGx1cyIpe2xldCBhPXQoKTtyZXR1cm4gcyhpKG8uZXhwcixsKSxhKSxzKGkoby5leHByLGEpLGEpLFtyKGEpXX1lbHNle2lmKG8udHlwZT09Im9wdCIpcmV0dXJuW3IobCldLmNvbmNhdChpKG8uZXhwcixsKSk7aWYoby50eXBlPT0icmFuZ2UiKXtsZXQgYT1sO2ZvcihsZXQgYz0wO2M8by5taW47YysrKXtsZXQgdT10KCk7cyhpKG8uZXhwcixhKSx1KSxhPXV9aWYoby5tYXg9PS0xKXMoaShvLmV4cHIsYSksYSk7ZWxzZSBmb3IobGV0IGM9by5taW47YzxvLm1heDtjKyspe2xldCB1PXQoKTtyKGEsdSkscyhpKG8uZXhwcixhKSx1KSxhPXV9cmV0dXJuW3IoYSldfWVsc2V7aWYoby50eXBlPT0ibmFtZSIpcmV0dXJuW3IobCx2b2lkIDAsby52YWx1ZSldO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBleHByIHR5cGUiKX19fX1mdW5jdGlvbiBBYyhuLGUpe3JldHVybiBlLW59ZnVuY3Rpb24ga2wobixlKXtsZXQgdD1bXTtyZXR1cm4gcihlKSx0LnNvcnQoQWMpO2Z1bmN0aW9uIHIocyl7bGV0IGk9bltzXTtpZihpLmxlbmd0aD09MSYmIWlbMF0udGVybSlyZXR1cm4gcihpWzBdLnRvKTt0LnB1c2gocyk7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2xldHt0ZXJtOmwsdG86YX09aVtvXTshbCYmdC5pbmRleE9mKGEpPT0tMSYmcihhKX19fWZ1bmN0aW9uIG9mKG4pe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIHQoa2wobiwwKSk7ZnVuY3Rpb24gdChyKXtsZXQgcz1bXTtyLmZvckVhY2gobz0+e25bb10uZm9yRWFjaCgoe3Rlcm06bCx0bzphfSk9PntpZighbClyZXR1cm47bGV0IGM7Zm9yKGxldCB1PTA7dTxzLmxlbmd0aDt1Kyspc1t1XVswXT09bCYmKGM9c1t1XVsxXSk7a2wobixhKS5mb3JFYWNoKHU9PntjfHxzLnB1c2goW2wsYz1bXV0pLGMuaW5kZXhPZih1KT09LTEmJmMucHVzaCh1KX0pfSl9KTtsZXQgaT1lW3Iuam9pbigiLCIpXT1uZXcgRnQoci5pbmRleE9mKG4ubGVuZ3RoLTEpPi0xKTtmb3IobGV0IG89MDtvPHMubGVuZ3RoO28rKyl7bGV0IGw9c1tvXVsxXS5zb3J0KEFjKTtpLm5leHQucHVzaCh7dHlwZTpzW29dWzBdLG5leHQ6ZVtsLmpvaW4oIiwiKV18fHQobCl9KX1yZXR1cm4gaX19ZnVuY3Rpb24gbGYobixlKXtmb3IobGV0IHQ9MCxyPVtuXTt0PHIubGVuZ3RoO3QrKyl7bGV0IHM9clt0XSxpPSFzLnZhbGlkRW5kLG89W107Zm9yKGxldCBsPTA7bDxzLm5leHQubGVuZ3RoO2wrKyl7bGV0e3R5cGU6YSxuZXh0OmN9PXMubmV4dFtsXTtvLnB1c2goYS5uYW1lKSxpJiYhKGEuaXNUZXh0fHxhLmhhc1JlcXVpcmVkQXR0cnMoKSkmJihpPSExKSxyLmluZGV4T2YoYyk9PS0xJiZyLnB1c2goYyl9aSYmZS5lcnIoIk9ubHkgbm9uLWdlbmVyYXRhYmxlIG5vZGVzICgiK28uam9pbigiLCAiKSsiKSBpbiBhIHJlcXVpcmVkIHBvc2l0aW9uIChzZWUgaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9ndWlkZS8jZ2VuZXJhdGFibGUpIil9fWZ1bmN0aW9uIE9jKG4pe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIG4pe2xldCByPW5bdF07aWYoIXIuaGFzRGVmYXVsdClyZXR1cm4gbnVsbDtlW3RdPXIuZGVmYXVsdH1yZXR1cm4gZX1mdW5jdGlvbiBOYyhuLGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCByIGluIG4pe2xldCBzPWUmJmVbcl07aWYocz09PXZvaWQgMCl7bGV0IGk9bltyXTtpZihpLmhhc0RlZmF1bHQpcz1pLmRlZmF1bHQ7ZWxzZSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gdmFsdWUgc3VwcGxpZWQgZm9yIGF0dHJpYnV0ZSAiK3IpfXRbcl09c31yZXR1cm4gdH1mdW5jdGlvbiBSYyhuLGUsdCxyKXtmb3IobGV0IHMgaW4gZSlpZighKHMgaW4gbikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFVuc3VwcG9ydGVkIGF0dHJpYnV0ZSAke3N9IGZvciAke3R9IG9mIHR5cGUgJHtzfWApO2ZvcihsZXQgcyBpbiBuKXtsZXQgaT1uW3NdO2kudmFsaWRhdGUmJmkudmFsaWRhdGUoZVtzXSl9fWZ1bmN0aW9uIEljKG4sZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlKWZvcihsZXQgciBpbiBlKXRbcl09bmV3IGNmKG4scixlW3JdKTtyZXR1cm4gdH1sZXQgYmw9Y2xhc3MgRGN7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMubmFtZT1lLHRoaXMuc2NoZW1hPXQsdGhpcy5zcGVjPXIsdGhpcy5tYXJrU2V0PW51bGwsdGhpcy5ncm91cHM9ci5ncm91cD9yLmdyb3VwLnNwbGl0KCIgIik6W10sdGhpcy5hdHRycz1JYyhlLHIuYXR0cnMpLHRoaXMuZGVmYXVsdEF0dHJzPU9jKHRoaXMuYXR0cnMpLHRoaXMuY29udGVudE1hdGNoPW51bGwsdGhpcy5pbmxpbmVDb250ZW50PW51bGwsdGhpcy5pc0Jsb2NrPSEoci5pbmxpbmV8fGU9PSJ0ZXh0IiksdGhpcy5pc1RleHQ9ZT09InRleHQifWdldCBpc0lubGluZSgpe3JldHVybiF0aGlzLmlzQmxvY2t9Z2V0IGlzVGV4dGJsb2NrKCl7cmV0dXJuIHRoaXMuaXNCbG9jayYmdGhpcy5pbmxpbmVDb250ZW50fWdldCBpc0xlYWYoKXtyZXR1cm4gdGhpcy5jb250ZW50TWF0Y2g9PUZ0LmVtcHR5fWdldCBpc0F0b20oKXtyZXR1cm4gdGhpcy5pc0xlYWZ8fCEhdGhpcy5zcGVjLmF0b219aXNJbkdyb3VwKGUpe3JldHVybiB0aGlzLmdyb3Vwcy5pbmRleE9mKGUpPi0xfWdldCB3aGl0ZXNwYWNlKCl7cmV0dXJuIHRoaXMuc3BlYy53aGl0ZXNwYWNlfHwodGhpcy5zcGVjLmNvZGU/InByZSI6Im5vcm1hbCIpfWhhc1JlcXVpcmVkQXR0cnMoKXtmb3IobGV0IGUgaW4gdGhpcy5hdHRycylpZih0aGlzLmF0dHJzW2VdLmlzUmVxdWlyZWQpcmV0dXJuITA7cmV0dXJuITF9Y29tcGF0aWJsZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXM9PWV8fHRoaXMuY29udGVudE1hdGNoLmNvbXBhdGlibGUoZS5jb250ZW50TWF0Y2gpfWNvbXB1dGVBdHRycyhlKXtyZXR1cm4hZSYmdGhpcy5kZWZhdWx0QXR0cnM/dGhpcy5kZWZhdWx0QXR0cnM6TmModGhpcy5hdHRycyxlKX1jcmVhdGUoZT1udWxsLHQscil7aWYodGhpcy5pc1RleHQpdGhyb3cgbmV3IEVycm9yKCJOb2RlVHlwZS5jcmVhdGUgY2FuJ3QgY29uc3RydWN0IHRleHQgbm9kZXMiKTtyZXR1cm4gbmV3IExlKHRoaXMsdGhpcy5jb21wdXRlQXR0cnMoZSksUy5mcm9tKHQpLFcuc2V0RnJvbShyKSl9Y3JlYXRlQ2hlY2tlZChlPW51bGwsdCxyKXtyZXR1cm4gdD1TLmZyb20odCksdGhpcy5jaGVja0NvbnRlbnQodCksbmV3IExlKHRoaXMsdGhpcy5jb21wdXRlQXR0cnMoZSksdCxXLnNldEZyb20ocikpfWNyZWF0ZUFuZEZpbGwoZT1udWxsLHQscil7aWYoZT10aGlzLmNvbXB1dGVBdHRycyhlKSx0PVMuZnJvbSh0KSx0LnNpemUpe2xldCBvPXRoaXMuY29udGVudE1hdGNoLmZpbGxCZWZvcmUodCk7aWYoIW8pcmV0dXJuIG51bGw7dD1vLmFwcGVuZCh0KX1sZXQgcz10aGlzLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KHQpLGk9cyYmcy5maWxsQmVmb3JlKFMuZW1wdHksITApO3JldHVybiBpP25ldyBMZSh0aGlzLGUsdC5hcHBlbmQoaSksVy5zZXRGcm9tKHIpKTpudWxsfXZhbGlkQ29udGVudChlKXtsZXQgdD10aGlzLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KGUpO2lmKCF0fHwhdC52YWxpZEVuZClyZXR1cm4hMTtmb3IobGV0IHI9MDtyPGUuY2hpbGRDb3VudDtyKyspaWYoIXRoaXMuYWxsb3dzTWFya3MoZS5jaGlsZChyKS5tYXJrcykpcmV0dXJuITE7cmV0dXJuITB9Y2hlY2tDb250ZW50KGUpe2lmKCF0aGlzLnZhbGlkQ29udGVudChlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCBjb250ZW50IGZvciBub2RlICR7dGhpcy5uYW1lfTogJHtlLnRvU3RyaW5nKCkuc2xpY2UoMCw1MCl9YCl9Y2hlY2tBdHRycyhlKXtSYyh0aGlzLmF0dHJzLGUsIm5vZGUiLHRoaXMubmFtZSl9YWxsb3dzTWFya1R5cGUoZSl7cmV0dXJuIHRoaXMubWFya1NldD09bnVsbHx8dGhpcy5tYXJrU2V0LmluZGV4T2YoZSk+LTF9YWxsb3dzTWFya3MoZSl7aWYodGhpcy5tYXJrU2V0PT1udWxsKXJldHVybiEwO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCF0aGlzLmFsbG93c01hcmtUeXBlKGVbdF0udHlwZSkpcmV0dXJuITE7cmV0dXJuITB9YWxsb3dlZE1hcmtzKGUpe2lmKHRoaXMubWFya1NldD09bnVsbClyZXR1cm4gZTtsZXQgdDtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl0aGlzLmFsbG93c01hcmtUeXBlKGVbcl0udHlwZSk/dCYmdC5wdXNoKGVbcl0pOnR8fCh0PWUuc2xpY2UoMCxyKSk7cmV0dXJuIHQ/dC5sZW5ndGg/dDpXLm5vbmU6ZX1zdGF0aWMgY29tcGlsZShlLHQpe2xldCByPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5mb3JFYWNoKChpLG8pPT5yW2ldPW5ldyBEYyhpLHQsbykpO2xldCBzPXQuc3BlYy50b3BOb2RlfHwiZG9jIjtpZighcltzXSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgaXRzIHRvcCBub2RlIHR5cGUgKCciK3MrIicpIik7aWYoIXIudGV4dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRXZlcnkgc2NoZW1hIG5lZWRzIGEgJ3RleHQnIHR5cGUiKTtmb3IobGV0IGkgaW4gci50ZXh0LmF0dHJzKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgdGV4dCBub2RlIHR5cGUgc2hvdWxkIG5vdCBoYXZlIGF0dHJpYnV0ZXMiKTtyZXR1cm4gcn19O2Z1bmN0aW9uIGFmKG4sZSx0KXtsZXQgcj10LnNwbGl0KCJ8Iik7cmV0dXJuIHM9PntsZXQgaT1zPT09bnVsbD8ibnVsbCI6dHlwZW9mIHM7aWYoci5pbmRleE9mKGkpPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgJHtyfSBmb3IgYXR0cmlidXRlICR7ZX0gb24gdHlwZSAke259LCBnb3QgJHtpfWApfX1jbGFzcyBjZntjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5oYXNEZWZhdWx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCJkZWZhdWx0IiksdGhpcy5kZWZhdWx0PXIuZGVmYXVsdCx0aGlzLnZhbGlkYXRlPXR5cGVvZiByLnZhbGlkYXRlPT0ic3RyaW5nIj9hZihlLHQsci52YWxpZGF0ZSk6ci52YWxpZGF0ZX1nZXQgaXNSZXF1aXJlZCgpe3JldHVybiF0aGlzLmhhc0RlZmF1bHR9fWNsYXNzIE5ze2NvbnN0cnVjdG9yKGUsdCxyLHMpe3RoaXMubmFtZT1lLHRoaXMucmFuaz10LHRoaXMuc2NoZW1hPXIsdGhpcy5zcGVjPXMsdGhpcy5hdHRycz1JYyhlLHMuYXR0cnMpLHRoaXMuZXhjbHVkZWQ9bnVsbDtsZXQgaT1PYyh0aGlzLmF0dHJzKTt0aGlzLmluc3RhbmNlPWk/bmV3IFcodGhpcyxpKTpudWxsfWNyZWF0ZShlPW51bGwpe3JldHVybiFlJiZ0aGlzLmluc3RhbmNlP3RoaXMuaW5zdGFuY2U6bmV3IFcodGhpcyxOYyh0aGlzLmF0dHJzLGUpKX1zdGF0aWMgY29tcGlsZShlLHQpe2xldCByPU9iamVjdC5jcmVhdGUobnVsbCkscz0wO3JldHVybiBlLmZvckVhY2goKGksbyk9PnJbaV09bmV3IE5zKGkscysrLHQsbykpLHJ9cmVtb3ZlRnJvbVNldChlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLnR5cGU9PXRoaXMmJihlPWUuc2xpY2UoMCx0KS5jb25jYXQoZS5zbGljZSh0KzEpKSx0LS0pO3JldHVybiBlfWlzSW5TZXQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS50eXBlPT10aGlzKXJldHVybiBlW3RdfWNoZWNrQXR0cnMoZSl7UmModGhpcy5hdHRycyxlLCJtYXJrIix0aGlzLm5hbWUpfWV4Y2x1ZGVzKGUpe3JldHVybiB0aGlzLmV4Y2x1ZGVkLmluZGV4T2YoZSk+LTF9fWNsYXNzIExje2NvbnN0cnVjdG9yKGUpe3RoaXMubGluZWJyZWFrUmVwbGFjZW1lbnQ9bnVsbCx0aGlzLmNhY2hlZD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB0PXRoaXMuc3BlYz17fTtmb3IobGV0IHMgaW4gZSl0W3NdPWVbc107dC5ub2Rlcz11ZS5mcm9tKGUubm9kZXMpLHQubWFya3M9dWUuZnJvbShlLm1hcmtzfHx7fSksdGhpcy5ub2Rlcz1ibC5jb21waWxlKHRoaXMuc3BlYy5ub2Rlcyx0aGlzKSx0aGlzLm1hcmtzPU5zLmNvbXBpbGUodGhpcy5zcGVjLm1hcmtzLHRoaXMpO2xldCByPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBzIGluIHRoaXMubm9kZXMpe2lmKHMgaW4gdGhpcy5tYXJrcyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihzKyIgY2FuIG5vdCBiZSBib3RoIGEgbm9kZSBhbmQgYSBtYXJrIik7bGV0IGk9dGhpcy5ub2Rlc1tzXSxvPWkuc3BlYy5jb250ZW50fHwiIixsPWkuc3BlYy5tYXJrcztpZihpLmNvbnRlbnRNYXRjaD1yW29dfHwocltvXT1GdC5wYXJzZShvLHRoaXMubm9kZXMpKSxpLmlubGluZUNvbnRlbnQ9aS5jb250ZW50TWF0Y2guaW5saW5lQ29udGVudCxpLnNwZWMubGluZWJyZWFrUmVwbGFjZW1lbnQpe2lmKHRoaXMubGluZWJyZWFrUmVwbGFjZW1lbnQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk11bHRpcGxlIGxpbmVicmVhayBub2RlcyBkZWZpbmVkIik7aWYoIWkuaXNJbmxpbmV8fCFpLmlzTGVhZil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTGluZWJyZWFrIHJlcGxhY2VtZW50IG5vZGVzIG11c3QgYmUgaW5saW5lIGxlYWYgbm9kZXMiKTt0aGlzLmxpbmVicmVha1JlcGxhY2VtZW50PWl9aS5tYXJrU2V0PWw9PSJfIj9udWxsOmw/eGwodGhpcyxsLnNwbGl0KCIgIikpOmw9PSIifHwhaS5pbmxpbmVDb250ZW50P1tdOm51bGx9Zm9yKGxldCBzIGluIHRoaXMubWFya3Mpe2xldCBpPXRoaXMubWFya3Nbc10sbz1pLnNwZWMuZXhjbHVkZXM7aS5leGNsdWRlZD1vPT1udWxsP1tpXTpvPT0iIj9bXTp4bCh0aGlzLG8uc3BsaXQoIiAiKSl9dGhpcy5ub2RlRnJvbUpTT049cz0+TGUuZnJvbUpTT04odGhpcyxzKSx0aGlzLm1hcmtGcm9tSlNPTj1zPT5XLmZyb21KU09OKHRoaXMscyksdGhpcy50b3BOb2RlVHlwZT10aGlzLm5vZGVzW3RoaXMuc3BlYy50b3BOb2RlfHwiZG9jIl0sdGhpcy5jYWNoZWQud3JhcHBpbmdzPU9iamVjdC5jcmVhdGUobnVsbCl9bm9kZShlLHQ9bnVsbCxyLHMpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIillPXRoaXMubm9kZVR5cGUoZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgYmwpe2lmKGUuc2NoZW1hIT10aGlzKXRocm93IG5ldyBSYW5nZUVycm9yKCJOb2RlIHR5cGUgZnJvbSBkaWZmZXJlbnQgc2NoZW1hIHVzZWQgKCIrZS5uYW1lKyIpIil9ZWxzZSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBub2RlIHR5cGU6ICIrZSk7cmV0dXJuIGUuY3JlYXRlQ2hlY2tlZCh0LHIscyl9dGV4dChlLHQpe2xldCByPXRoaXMubm9kZXMudGV4dDtyZXR1cm4gbmV3IEZyKHIsci5kZWZhdWx0QXR0cnMsZSxXLnNldEZyb20odCkpfW1hcmsoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT10aGlzLm1hcmtzW2VdKSxlLmNyZWF0ZSh0KX1ub2RlVHlwZShlKXtsZXQgdD10aGlzLm5vZGVzW2VdO2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJVbmtub3duIG5vZGUgdHlwZTogIitlKTtyZXR1cm4gdH19ZnVuY3Rpb24geGwobixlKXtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IHM9ZVtyXSxpPW4ubWFya3Nbc10sbz1pO2lmKGkpdC5wdXNoKGkpO2Vsc2UgZm9yKGxldCBsIGluIG4ubWFya3Mpe2xldCBhPW4ubWFya3NbbF07KHM9PSJfInx8YS5zcGVjLmdyb3VwJiZhLnNwZWMuZ3JvdXAuc3BsaXQoIiAiKS5pbmRleE9mKHMpPi0xKSYmdC5wdXNoKG89YSl9aWYoIW8pdGhyb3cgbmV3IFN5bnRheEVycm9yKCJVbmtub3duIG1hcmsgdHlwZTogJyIrZVtyXSsiJyIpfXJldHVybiB0fWZ1bmN0aW9uIHVmKG4pe3JldHVybiBuLnRhZyE9bnVsbH1mdW5jdGlvbiBkZihuKXtyZXR1cm4gbi5zdHlsZSE9bnVsbH1jbGFzcyBpdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5ydWxlcz10LHRoaXMudGFncz1bXSx0aGlzLnN0eWxlcz1bXTtsZXQgcj10aGlzLm1hdGNoZWRTdHlsZXM9W107dC5mb3JFYWNoKHM9PntpZih1ZihzKSl0aGlzLnRhZ3MucHVzaChzKTtlbHNlIGlmKGRmKHMpKXtsZXQgaT0vW149XSovLmV4ZWMocy5zdHlsZSlbMF07ci5pbmRleE9mKGkpPDAmJnIucHVzaChpKSx0aGlzLnN0eWxlcy5wdXNoKHMpfX0pLHRoaXMubm9ybWFsaXplTGlzdHM9IXRoaXMudGFncy5zb21lKHM9PntpZighL14odWx8b2wpXGIvLnRlc3Qocy50YWcpfHwhcy5ub2RlKXJldHVybiExO2xldCBpPWUubm9kZXNbcy5ub2RlXTtyZXR1cm4gaS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKGkpfSl9cGFyc2UoZSx0PXt9KXtsZXQgcj1uZXcgdmwodGhpcyx0LCExKTtyZXR1cm4gci5hZGRBbGwoZSxXLm5vbmUsdC5mcm9tLHQudG8pLHIuZmluaXNoKCl9cGFyc2VTbGljZShlLHQ9e30pe2xldCByPW5ldyB2bCh0aGlzLHQsITApO3JldHVybiByLmFkZEFsbChlLFcubm9uZSx0LmZyb20sdC50byksRS5tYXhPcGVuKHIuZmluaXNoKCkpfW1hdGNoVGFnKGUsdCxyKXtmb3IobGV0IHM9cj90aGlzLnRhZ3MuaW5kZXhPZihyKSsxOjA7czx0aGlzLnRhZ3MubGVuZ3RoO3MrKyl7bGV0IGk9dGhpcy50YWdzW3NdO2lmKHBmKGUsaS50YWcpJiYoaS5uYW1lc3BhY2U9PT12b2lkIDB8fGUubmFtZXNwYWNlVVJJPT1pLm5hbWVzcGFjZSkmJighaS5jb250ZXh0fHx0Lm1hdGNoZXNDb250ZXh0KGkuY29udGV4dCkpKXtpZihpLmdldEF0dHJzKXtsZXQgbz1pLmdldEF0dHJzKGUpO2lmKG89PT0hMSljb250aW51ZTtpLmF0dHJzPW98fHZvaWQgMH1yZXR1cm4gaX19fW1hdGNoU3R5bGUoZSx0LHIscyl7Zm9yKGxldCBpPXM/dGhpcy5zdHlsZXMuaW5kZXhPZihzKSsxOjA7aTx0aGlzLnN0eWxlcy5sZW5ndGg7aSsrKXtsZXQgbz10aGlzLnN0eWxlc1tpXSxsPW8uc3R5bGU7aWYoIShsLmluZGV4T2YoZSkhPTB8fG8uY29udGV4dCYmIXIubWF0Y2hlc0NvbnRleHQoby5jb250ZXh0KXx8bC5sZW5ndGg+ZS5sZW5ndGgmJihsLmNoYXJDb2RlQXQoZS5sZW5ndGgpIT02MXx8bC5zbGljZShlLmxlbmd0aCsxKSE9dCkpKXtpZihvLmdldEF0dHJzKXtsZXQgYT1vLmdldEF0dHJzKHQpO2lmKGE9PT0hMSljb250aW51ZTtvLmF0dHJzPWF8fHZvaWQgMH1yZXR1cm4gb319fXN0YXRpYyBzY2hlbWFSdWxlcyhlKXtsZXQgdD1bXTtmdW5jdGlvbiByKHMpe2xldCBpPXMucHJpb3JpdHk9PW51bGw/NTA6cy5wcmlvcml0eSxvPTA7Zm9yKDtvPHQubGVuZ3RoO28rKyl7bGV0IGw9dFtvXTtpZigobC5wcmlvcml0eT09bnVsbD81MDpsLnByaW9yaXR5KTxpKWJyZWFrfXQuc3BsaWNlKG8sMCxzKX1mb3IobGV0IHMgaW4gZS5tYXJrcyl7bGV0IGk9ZS5tYXJrc1tzXS5zcGVjLnBhcnNlRE9NO2kmJmkuZm9yRWFjaChvPT57cihvPVNsKG8pKSxvLm1hcmt8fG8uaWdub3JlfHxvLmNsZWFyTWFya3x8KG8ubWFyaz1zKX0pfWZvcihsZXQgcyBpbiBlLm5vZGVzKXtsZXQgaT1lLm5vZGVzW3NdLnNwZWMucGFyc2VET007aSYmaS5mb3JFYWNoKG89PntyKG89U2wobykpLG8ubm9kZXx8by5pZ25vcmV8fG8ubWFya3x8KG8ubm9kZT1zKX0pfXJldHVybiB0fXN0YXRpYyBmcm9tU2NoZW1hKGUpe3JldHVybiBlLmNhY2hlZC5kb21QYXJzZXJ8fChlLmNhY2hlZC5kb21QYXJzZXI9bmV3IGl0KGUsaXQuc2NoZW1hUnVsZXMoZSkpKX19Y29uc3QgUGM9e2FkZHJlc3M6ITAsYXJ0aWNsZTohMCxhc2lkZTohMCxibG9ja3F1b3RlOiEwLGNhbnZhczohMCxkZDohMCxkaXY6ITAsZGw6ITAsZmllbGRzZXQ6ITAsZmlnY2FwdGlvbjohMCxmaWd1cmU6ITAsZm9vdGVyOiEwLGZvcm06ITAsaDE6ITAsaDI6ITAsaDM6ITAsaDQ6ITAsaDU6ITAsaDY6ITAsaGVhZGVyOiEwLGhncm91cDohMCxocjohMCxsaTohMCxub3NjcmlwdDohMCxvbDohMCxvdXRwdXQ6ITAscDohMCxwcmU6ITAsc2VjdGlvbjohMCx0YWJsZTohMCx0Zm9vdDohMCx1bDohMH0saGY9e2hlYWQ6ITAsbm9zY3JpcHQ6ITAsb2JqZWN0OiEwLHNjcmlwdDohMCxzdHlsZTohMCx0aXRsZTohMH0semM9e29sOiEwLHVsOiEwfSxLbj0xLFJpPTIsem49NDtmdW5jdGlvbiB3bChuLGUsdCl7cmV0dXJuIGUhPW51bGw/KGU/S246MCl8KGU9PT0iZnVsbCI/Umk6MCk6biYmbi53aGl0ZXNwYWNlPT0icHJlIj9LbnxSaTp0Jn56bn1jbGFzcyBwcntjb25zdHJ1Y3RvcihlLHQscixzLGksbyl7dGhpcy50eXBlPWUsdGhpcy5hdHRycz10LHRoaXMubWFya3M9cix0aGlzLnNvbGlkPXMsdGhpcy5vcHRpb25zPW8sdGhpcy5jb250ZW50PVtdLHRoaXMuYWN0aXZlTWFya3M9Vy5ub25lLHRoaXMubWF0Y2g9aXx8KG8mem4/bnVsbDplLmNvbnRlbnRNYXRjaCl9ZmluZFdyYXBwaW5nKGUpe2lmKCF0aGlzLm1hdGNoKXtpZighdGhpcy50eXBlKXJldHVybltdO2xldCB0PXRoaXMudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShTLmZyb20oZSkpO2lmKHQpdGhpcy5tYXRjaD10aGlzLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQodCk7ZWxzZXtsZXQgcj10aGlzLnR5cGUuY29udGVudE1hdGNoLHM7cmV0dXJuKHM9ci5maW5kV3JhcHBpbmcoZS50eXBlKSk/KHRoaXMubWF0Y2g9cixzKTpudWxsfX1yZXR1cm4gdGhpcy5tYXRjaC5maW5kV3JhcHBpbmcoZS50eXBlKX1maW5pc2goZSl7aWYoISh0aGlzLm9wdGlvbnMmS24pKXtsZXQgcj10aGlzLmNvbnRlbnRbdGhpcy5jb250ZW50Lmxlbmd0aC0xXSxzO2lmKHImJnIuaXNUZXh0JiYocz0vWyBcdFxyXG5cdTAwMGNdKyQvLmV4ZWMoci50ZXh0KSkpe2xldCBpPXI7ci50ZXh0Lmxlbmd0aD09c1swXS5sZW5ndGg/dGhpcy5jb250ZW50LnBvcCgpOnRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdPWkud2l0aFRleHQoaS50ZXh0LnNsaWNlKDAsaS50ZXh0Lmxlbmd0aC1zWzBdLmxlbmd0aCkpfX1sZXQgdD1TLmZyb20odGhpcy5jb250ZW50KTtyZXR1cm4hZSYmdGhpcy5tYXRjaCYmKHQ9dC5hcHBlbmQodGhpcy5tYXRjaC5maWxsQmVmb3JlKFMuZW1wdHksITApKSksdGhpcy50eXBlP3RoaXMudHlwZS5jcmVhdGUodGhpcy5hdHRycyx0LHRoaXMubWFya3MpOnR9aW5saW5lQ29udGV4dChlKXtyZXR1cm4gdGhpcy50eXBlP3RoaXMudHlwZS5pbmxpbmVDb250ZW50OnRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50WzBdLmlzSW5saW5lOmUucGFyZW50Tm9kZSYmIVBjLmhhc093blByb3BlcnR5KGUucGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKX19Y2xhc3Mgdmx7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMucGFyc2VyPWUsdGhpcy5vcHRpb25zPXQsdGhpcy5pc09wZW49cix0aGlzLm9wZW49MCx0aGlzLmxvY2FsUHJlc2VydmVXUz0hMTtsZXQgcz10LnRvcE5vZGUsaSxvPXdsKG51bGwsdC5wcmVzZXJ2ZVdoaXRlc3BhY2UsMCl8KHI/em46MCk7cz9pPW5ldyBwcihzLnR5cGUscy5hdHRycyxXLm5vbmUsITAsdC50b3BNYXRjaHx8cy50eXBlLmNvbnRlbnRNYXRjaCxvKTpyP2k9bmV3IHByKG51bGwsbnVsbCxXLm5vbmUsITAsbnVsbCxvKTppPW5ldyBwcihlLnNjaGVtYS50b3BOb2RlVHlwZSxudWxsLFcubm9uZSwhMCxudWxsLG8pLHRoaXMubm9kZXM9W2ldLHRoaXMuZmluZD10LmZpbmRQb3NpdGlvbnMsdGhpcy5uZWVkc0Jsb2NrPSExfWdldCB0b3AoKXtyZXR1cm4gdGhpcy5ub2Rlc1t0aGlzLm9wZW5dfWFkZERPTShlLHQpe2Uubm9kZVR5cGU9PTM/dGhpcy5hZGRUZXh0Tm9kZShlLHQpOmUubm9kZVR5cGU9PTEmJnRoaXMuYWRkRWxlbWVudChlLHQpfWFkZFRleHROb2RlKGUsdCl7bGV0IHI9ZS5ub2RlVmFsdWUscz10aGlzLnRvcCxpPXMub3B0aW9ucyZSaT8iZnVsbCI6dGhpcy5sb2NhbFByZXNlcnZlV1N8fChzLm9wdGlvbnMmS24pPjAse3NjaGVtYTpvfT10aGlzLnBhcnNlcjtpZihpPT09ImZ1bGwifHxzLmlubGluZUNvbnRleHQoZSl8fC9bXiBcdFxyXG5cdTAwMGNdLy50ZXN0KHIpKXtpZihpKWlmKGk9PT0iZnVsbCIpcj1yLnJlcGxhY2UoL1xyXG4/L2csYApgKTtlbHNlIGlmKG8ubGluZWJyZWFrUmVwbGFjZW1lbnQmJi9bXHJcbl0vLnRlc3QocikmJnRoaXMudG9wLmZpbmRXcmFwcGluZyhvLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKSl7bGV0IGw9ci5zcGxpdCgvXHI/XG58XHIvKTtmb3IobGV0IGE9MDthPGwubGVuZ3RoO2ErKylhJiZ0aGlzLmluc2VydE5vZGUoby5saW5lYnJlYWtSZXBsYWNlbWVudC5jcmVhdGUoKSx0LCEwKSxsW2FdJiZ0aGlzLmluc2VydE5vZGUoby50ZXh0KGxbYV0pLHQsIS9cUy8udGVzdChsW2FdKSk7cj0iIn1lbHNlIHI9ci5yZXBsYWNlKC9ccj9cbnxcci9nLCIgIik7ZWxzZSBpZihyPXIucmVwbGFjZSgvWyBcdFxyXG5cdTAwMGNdKy9nLCIgIiksL15bIFx0XHJcblx1MDAwY10vLnRlc3QocikmJnRoaXMub3Blbj09dGhpcy5ub2Rlcy5sZW5ndGgtMSl7bGV0IGw9cy5jb250ZW50W3MuY29udGVudC5sZW5ndGgtMV0sYT1lLnByZXZpb3VzU2libGluZzsoIWx8fGEmJmEubm9kZU5hbWU9PSJCUiJ8fGwuaXNUZXh0JiYvWyBcdFxyXG5cdTAwMGNdJC8udGVzdChsLnRleHQpKSYmKHI9ci5zbGljZSgxKSl9ciYmdGhpcy5pbnNlcnROb2RlKG8udGV4dChyKSx0LCEvXFMvLnRlc3QocikpLHRoaXMuZmluZEluVGV4dChlKX1lbHNlIHRoaXMuZmluZEluc2lkZShlKX1hZGRFbGVtZW50KGUsdCxyKXtsZXQgcz10aGlzLmxvY2FsUHJlc2VydmVXUyxpPXRoaXMudG9wOyhlLnRhZ05hbWU9PSJQUkUifHwvcHJlLy50ZXN0KGUuc3R5bGUmJmUuc3R5bGUud2hpdGVTcGFjZSkpJiYodGhpcy5sb2NhbFByZXNlcnZlV1M9ITApO2xldCBvPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxsO3pjLmhhc093blByb3BlcnR5KG8pJiZ0aGlzLnBhcnNlci5ub3JtYWxpemVMaXN0cyYmZmYoZSk7bGV0IGE9dGhpcy5vcHRpb25zLnJ1bGVGcm9tTm9kZSYmdGhpcy5vcHRpb25zLnJ1bGVGcm9tTm9kZShlKXx8KGw9dGhpcy5wYXJzZXIubWF0Y2hUYWcoZSx0aGlzLHIpKTtlOmlmKGE/YS5pZ25vcmU6aGYuaGFzT3duUHJvcGVydHkobykpdGhpcy5maW5kSW5zaWRlKGUpLHRoaXMuaWdub3JlRmFsbGJhY2soZSx0KTtlbHNlIGlmKCFhfHxhLnNraXB8fGEuY2xvc2VQYXJlbnQpe2EmJmEuY2xvc2VQYXJlbnQ/dGhpcy5vcGVuPU1hdGgubWF4KDAsdGhpcy5vcGVuLTEpOmEmJmEuc2tpcC5ub2RlVHlwZSYmKGU9YS5za2lwKTtsZXQgYyx1PXRoaXMubmVlZHNCbG9jaztpZihQYy5oYXNPd25Qcm9wZXJ0eShvKSlpLmNvbnRlbnQubGVuZ3RoJiZpLmNvbnRlbnRbMF0uaXNJbmxpbmUmJnRoaXMub3BlbiYmKHRoaXMub3Blbi0tLGk9dGhpcy50b3ApLGM9ITAsaS50eXBlfHwodGhpcy5uZWVkc0Jsb2NrPSEwKTtlbHNlIGlmKCFlLmZpcnN0Q2hpbGQpe3RoaXMubGVhZkZhbGxiYWNrKGUsdCk7YnJlYWsgZX1sZXQgZD1hJiZhLnNraXA/dDp0aGlzLnJlYWRTdHlsZXMoZSx0KTtkJiZ0aGlzLmFkZEFsbChlLGQpLGMmJnRoaXMuc3luYyhpKSx0aGlzLm5lZWRzQmxvY2s9dX1lbHNle2xldCBjPXRoaXMucmVhZFN0eWxlcyhlLHQpO2MmJnRoaXMuYWRkRWxlbWVudEJ5UnVsZShlLGEsYyxhLmNvbnN1bWluZz09PSExP2w6dm9pZCAwKX10aGlzLmxvY2FsUHJlc2VydmVXUz1zfWxlYWZGYWxsYmFjayhlLHQpe2Uubm9kZU5hbWU9PSJCUiImJnRoaXMudG9wLnR5cGUmJnRoaXMudG9wLnR5cGUuaW5saW5lQ29udGVudCYmdGhpcy5hZGRUZXh0Tm9kZShlLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYApgKSx0KX1pZ25vcmVGYWxsYmFjayhlLHQpe2Uubm9kZU5hbWU9PSJCUiImJighdGhpcy50b3AudHlwZXx8IXRoaXMudG9wLnR5cGUuaW5saW5lQ29udGVudCkmJnRoaXMuZmluZFBsYWNlKHRoaXMucGFyc2VyLnNjaGVtYS50ZXh0KCItIiksdCwhMCl9cmVhZFN0eWxlcyhlLHQpe2xldCByPWUuc3R5bGU7aWYociYmci5sZW5ndGgpZm9yKGxldCBzPTA7czx0aGlzLnBhcnNlci5tYXRjaGVkU3R5bGVzLmxlbmd0aDtzKyspe2xldCBpPXRoaXMucGFyc2VyLm1hdGNoZWRTdHlsZXNbc10sbz1yLmdldFByb3BlcnR5VmFsdWUoaSk7aWYobylmb3IobGV0IGw9dm9pZCAwOzspe2xldCBhPXRoaXMucGFyc2VyLm1hdGNoU3R5bGUoaSxvLHRoaXMsbCk7aWYoIWEpYnJlYWs7aWYoYS5pZ25vcmUpcmV0dXJuIG51bGw7aWYoYS5jbGVhck1hcms/dD10LmZpbHRlcihjPT4hYS5jbGVhck1hcmsoYykpOnQ9dC5jb25jYXQodGhpcy5wYXJzZXIuc2NoZW1hLm1hcmtzW2EubWFya10uY3JlYXRlKGEuYXR0cnMpKSxhLmNvbnN1bWluZz09PSExKWw9YTtlbHNlIGJyZWFrfX1yZXR1cm4gdH1hZGRFbGVtZW50QnlSdWxlKGUsdCxyLHMpe2xldCBpLG87aWYodC5ub2RlKWlmKG89dGhpcy5wYXJzZXIuc2NoZW1hLm5vZGVzW3Qubm9kZV0sby5pc0xlYWYpdGhpcy5pbnNlcnROb2RlKG8uY3JlYXRlKHQuYXR0cnMpLHIsZS5ub2RlTmFtZT09IkJSIil8fHRoaXMubGVhZkZhbGxiYWNrKGUscik7ZWxzZXtsZXQgYT10aGlzLmVudGVyKG8sdC5hdHRyc3x8bnVsbCxyLHQucHJlc2VydmVXaGl0ZXNwYWNlKTthJiYoaT0hMCxyPWEpfWVsc2V7bGV0IGE9dGhpcy5wYXJzZXIuc2NoZW1hLm1hcmtzW3QubWFya107cj1yLmNvbmNhdChhLmNyZWF0ZSh0LmF0dHJzKSl9bGV0IGw9dGhpcy50b3A7aWYobyYmby5pc0xlYWYpdGhpcy5maW5kSW5zaWRlKGUpO2Vsc2UgaWYocyl0aGlzLmFkZEVsZW1lbnQoZSxyLHMpO2Vsc2UgaWYodC5nZXRDb250ZW50KXRoaXMuZmluZEluc2lkZShlKSx0LmdldENvbnRlbnQoZSx0aGlzLnBhcnNlci5zY2hlbWEpLmZvckVhY2goYT0+dGhpcy5pbnNlcnROb2RlKGEsciwhMSkpO2Vsc2V7bGV0IGE9ZTt0eXBlb2YgdC5jb250ZW50RWxlbWVudD09InN0cmluZyI/YT1lLnF1ZXJ5U2VsZWN0b3IodC5jb250ZW50RWxlbWVudCk6dHlwZW9mIHQuY29udGVudEVsZW1lbnQ9PSJmdW5jdGlvbiI/YT10LmNvbnRlbnRFbGVtZW50KGUpOnQuY29udGVudEVsZW1lbnQmJihhPXQuY29udGVudEVsZW1lbnQpLHRoaXMuZmluZEFyb3VuZChlLGEsITApLHRoaXMuYWRkQWxsKGEsciksdGhpcy5maW5kQXJvdW5kKGUsYSwhMSl9aSYmdGhpcy5zeW5jKGwpJiZ0aGlzLm9wZW4tLX1hZGRBbGwoZSx0LHIscyl7bGV0IGk9cnx8MDtmb3IobGV0IG89cj9lLmNoaWxkTm9kZXNbcl06ZS5maXJzdENoaWxkLGw9cz09bnVsbD9udWxsOmUuY2hpbGROb2Rlc1tzXTtvIT1sO289by5uZXh0U2libGluZywrK2kpdGhpcy5maW5kQXRQb2ludChlLGkpLHRoaXMuYWRkRE9NKG8sdCk7dGhpcy5maW5kQXRQb2ludChlLGkpfWZpbmRQbGFjZShlLHQscil7bGV0IHMsaTtmb3IobGV0IG89dGhpcy5vcGVuLGw9MDtvPj0wO28tLSl7bGV0IGE9dGhpcy5ub2Rlc1tvXSxjPWEuZmluZFdyYXBwaW5nKGUpO2lmKGMmJighc3x8cy5sZW5ndGg+Yy5sZW5ndGgrbCkmJihzPWMsaT1hLCFjLmxlbmd0aCkpYnJlYWs7aWYoYS5zb2xpZCl7aWYocilicmVhaztsKz0yfX1pZighcylyZXR1cm4gbnVsbDt0aGlzLnN5bmMoaSk7Zm9yKGxldCBvPTA7bzxzLmxlbmd0aDtvKyspdD10aGlzLmVudGVySW5uZXIoc1tvXSxudWxsLHQsITEpO3JldHVybiB0fWluc2VydE5vZGUoZSx0LHIpe2lmKGUuaXNJbmxpbmUmJnRoaXMubmVlZHNCbG9jayYmIXRoaXMudG9wLnR5cGUpe2xldCBpPXRoaXMudGV4dGJsb2NrRnJvbUNvbnRleHQoKTtpJiYodD10aGlzLmVudGVySW5uZXIoaSxudWxsLHQpKX1sZXQgcz10aGlzLmZpbmRQbGFjZShlLHQscik7aWYocyl7dGhpcy5jbG9zZUV4dHJhKCk7bGV0IGk9dGhpcy50b3A7aS5tYXRjaCYmKGkubWF0Y2g9aS5tYXRjaC5tYXRjaFR5cGUoZS50eXBlKSk7bGV0IG89Vy5ub25lO2ZvcihsZXQgbCBvZiBzLmNvbmNhdChlLm1hcmtzKSkoaS50eXBlP2kudHlwZS5hbGxvd3NNYXJrVHlwZShsLnR5cGUpOkNsKGwudHlwZSxlLnR5cGUpKSYmKG89bC5hZGRUb1NldChvKSk7cmV0dXJuIGkuY29udGVudC5wdXNoKGUubWFyayhvKSksITB9cmV0dXJuITF9ZW50ZXIoZSx0LHIscyl7bGV0IGk9dGhpcy5maW5kUGxhY2UoZS5jcmVhdGUodCksciwhMSk7cmV0dXJuIGkmJihpPXRoaXMuZW50ZXJJbm5lcihlLHQsciwhMCxzKSksaX1lbnRlcklubmVyKGUsdCxyLHM9ITEsaSl7dGhpcy5jbG9zZUV4dHJhKCk7bGV0IG89dGhpcy50b3A7by5tYXRjaD1vLm1hdGNoJiZvLm1hdGNoLm1hdGNoVHlwZShlKTtsZXQgbD13bChlLGksby5vcHRpb25zKTtvLm9wdGlvbnMmem4mJm8uY29udGVudC5sZW5ndGg9PTAmJihsfD16bik7bGV0IGE9Vy5ub25lO3JldHVybiByPXIuZmlsdGVyKGM9PihvLnR5cGU/by50eXBlLmFsbG93c01hcmtUeXBlKGMudHlwZSk6Q2woYy50eXBlLGUpKT8oYT1jLmFkZFRvU2V0KGEpLCExKTohMCksdGhpcy5ub2Rlcy5wdXNoKG5ldyBwcihlLHQsYSxzLG51bGwsbCkpLHRoaXMub3BlbisrLHJ9Y2xvc2VFeHRyYShlPSExKXtsZXQgdD10aGlzLm5vZGVzLmxlbmd0aC0xO2lmKHQ+dGhpcy5vcGVuKXtmb3IoO3Q+dGhpcy5vcGVuO3QtLSl0aGlzLm5vZGVzW3QtMV0uY29udGVudC5wdXNoKHRoaXMubm9kZXNbdF0uZmluaXNoKGUpKTt0aGlzLm5vZGVzLmxlbmd0aD10aGlzLm9wZW4rMX19ZmluaXNoKCl7cmV0dXJuIHRoaXMub3Blbj0wLHRoaXMuY2xvc2VFeHRyYSh0aGlzLmlzT3BlbiksdGhpcy5ub2Rlc1swXS5maW5pc2goISEodGhpcy5pc09wZW58fHRoaXMub3B0aW9ucy50b3BPcGVuKSl9c3luYyhlKXtmb3IobGV0IHQ9dGhpcy5vcGVuO3Q+PTA7dC0tKXtpZih0aGlzLm5vZGVzW3RdPT1lKXJldHVybiB0aGlzLm9wZW49dCwhMDt0aGlzLmxvY2FsUHJlc2VydmVXUyYmKHRoaXMubm9kZXNbdF0ub3B0aW9uc3w9S24pfXJldHVybiExfWdldCBjdXJyZW50UG9zKCl7dGhpcy5jbG9zZUV4dHJhKCk7bGV0IGU9MDtmb3IobGV0IHQ9dGhpcy5vcGVuO3Q+PTA7dC0tKXtsZXQgcj10aGlzLm5vZGVzW3RdLmNvbnRlbnQ7Zm9yKGxldCBzPXIubGVuZ3RoLTE7cz49MDtzLS0pZSs9cltzXS5ub2RlU2l6ZTt0JiZlKyt9cmV0dXJuIGV9ZmluZEF0UG9pbnQoZSx0KXtpZih0aGlzLmZpbmQpZm9yKGxldCByPTA7cjx0aGlzLmZpbmQubGVuZ3RoO3IrKyl0aGlzLmZpbmRbcl0ubm9kZT09ZSYmdGhpcy5maW5kW3JdLm9mZnNldD09dCYmKHRoaXMuZmluZFtyXS5wb3M9dGhpcy5jdXJyZW50UG9zKX1maW5kSW5zaWRlKGUpe2lmKHRoaXMuZmluZClmb3IobGV0IHQ9MDt0PHRoaXMuZmluZC5sZW5ndGg7dCsrKXRoaXMuZmluZFt0XS5wb3M9PW51bGwmJmUubm9kZVR5cGU9PTEmJmUuY29udGFpbnModGhpcy5maW5kW3RdLm5vZGUpJiYodGhpcy5maW5kW3RdLnBvcz10aGlzLmN1cnJlbnRQb3MpfWZpbmRBcm91bmQoZSx0LHIpe2lmKGUhPXQmJnRoaXMuZmluZClmb3IobGV0IHM9MDtzPHRoaXMuZmluZC5sZW5ndGg7cysrKXRoaXMuZmluZFtzXS5wb3M9PW51bGwmJmUubm9kZVR5cGU9PTEmJmUuY29udGFpbnModGhpcy5maW5kW3NdLm5vZGUpJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMuZmluZFtzXS5ub2RlKSYocj8yOjQpJiYodGhpcy5maW5kW3NdLnBvcz10aGlzLmN1cnJlbnRQb3MpfWZpbmRJblRleHQoZSl7aWYodGhpcy5maW5kKWZvcihsZXQgdD0wO3Q8dGhpcy5maW5kLmxlbmd0aDt0KyspdGhpcy5maW5kW3RdLm5vZGU9PWUmJih0aGlzLmZpbmRbdF0ucG9zPXRoaXMuY3VycmVudFBvcy0oZS5ub2RlVmFsdWUubGVuZ3RoLXRoaXMuZmluZFt0XS5vZmZzZXQpKX1tYXRjaGVzQ29udGV4dChlKXtpZihlLmluZGV4T2YoInwiKT4tMSlyZXR1cm4gZS5zcGxpdCgvXHMqXHxccyovKS5zb21lKHRoaXMubWF0Y2hlc0NvbnRleHQsdGhpcyk7bGV0IHQ9ZS5zcGxpdCgiLyIpLHI9dGhpcy5vcHRpb25zLmNvbnRleHQscz0hdGhpcy5pc09wZW4mJighcnx8ci5wYXJlbnQudHlwZT09dGhpcy5ub2Rlc1swXS50eXBlKSxpPS0ocj9yLmRlcHRoKzE6MCkrKHM/MDoxKSxvPShsLGEpPT57Zm9yKDtsPj0wO2wtLSl7bGV0IGM9dFtsXTtpZihjPT0iIil7aWYobD09dC5sZW5ndGgtMXx8bD09MCljb250aW51ZTtmb3IoO2E+PWk7YS0tKWlmKG8obC0xLGEpKXJldHVybiEwO3JldHVybiExfWVsc2V7bGV0IHU9YT4wfHxhPT0wJiZzP3RoaXMubm9kZXNbYV0udHlwZTpyJiZhPj1pP3Iubm9kZShhLWkpLnR5cGU6bnVsbDtpZighdXx8dS5uYW1lIT1jJiYhdS5pc0luR3JvdXAoYykpcmV0dXJuITE7YS0tfX1yZXR1cm4hMH07cmV0dXJuIG8odC5sZW5ndGgtMSx0aGlzLm9wZW4pfXRleHRibG9ja0Zyb21Db250ZXh0KCl7bGV0IGU9dGhpcy5vcHRpb25zLmNvbnRleHQ7aWYoZSlmb3IobGV0IHQ9ZS5kZXB0aDt0Pj0wO3QtLSl7bGV0IHI9ZS5ub2RlKHQpLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcih0KSkuZGVmYXVsdFR5cGU7aWYociYmci5pc1RleHRibG9jayYmci5kZWZhdWx0QXR0cnMpcmV0dXJuIHJ9Zm9yKGxldCB0IGluIHRoaXMucGFyc2VyLnNjaGVtYS5ub2Rlcyl7bGV0IHI9dGhpcy5wYXJzZXIuc2NoZW1hLm5vZGVzW3RdO2lmKHIuaXNUZXh0YmxvY2smJnIuZGVmYXVsdEF0dHJzKXJldHVybiByfX19ZnVuY3Rpb24gZmYobil7Zm9yKGxldCBlPW4uZmlyc3RDaGlsZCx0PW51bGw7ZTtlPWUubmV4dFNpYmxpbmcpe2xldCByPWUubm9kZVR5cGU9PTE/ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGw7ciYmemMuaGFzT3duUHJvcGVydHkocikmJnQ/KHQuYXBwZW5kQ2hpbGQoZSksZT10KTpyPT0ibGkiP3Q9ZTpyJiYodD1udWxsKX19ZnVuY3Rpb24gcGYobixlKXtyZXR1cm4obi5tYXRjaGVzfHxuLm1zTWF0Y2hlc1NlbGVjdG9yfHxuLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8bi5tb3pNYXRjaGVzU2VsZWN0b3IpLmNhbGwobixlKX1mdW5jdGlvbiBTbChuKXtsZXQgZT17fTtmb3IobGV0IHQgaW4gbillW3RdPW5bdF07cmV0dXJuIGV9ZnVuY3Rpb24gQ2wobixlKXtsZXQgdD1lLnNjaGVtYS5ub2Rlcztmb3IobGV0IHIgaW4gdCl7bGV0IHM9dFtyXTtpZighcy5hbGxvd3NNYXJrVHlwZShuKSljb250aW51ZTtsZXQgaT1bXSxvPWw9PntpLnB1c2gobCk7Zm9yKGxldCBhPTA7YTxsLmVkZ2VDb3VudDthKyspe2xldHt0eXBlOmMsbmV4dDp1fT1sLmVkZ2UoYSk7aWYoYz09ZXx8aS5pbmRleE9mKHUpPDAmJm8odSkpcmV0dXJuITB9fTtpZihvKHMuY29udGVudE1hdGNoKSlyZXR1cm4hMH19Y2xhc3MgS3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVzPWUsdGhpcy5tYXJrcz10fXNlcmlhbGl6ZUZyYWdtZW50KGUsdD17fSxyKXtyfHwocj1acyh0KS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO2xldCBzPXIsaT1bXTtyZXR1cm4gZS5mb3JFYWNoKG89PntpZihpLmxlbmd0aHx8by5tYXJrcy5sZW5ndGgpe2xldCBsPTAsYT0wO2Zvcig7bDxpLmxlbmd0aCYmYTxvLm1hcmtzLmxlbmd0aDspe2xldCBjPW8ubWFya3NbYV07aWYoIXRoaXMubWFya3NbYy50eXBlLm5hbWVdKXthKys7Y29udGludWV9aWYoIWMuZXEoaVtsXVswXSl8fGMudHlwZS5zcGVjLnNwYW5uaW5nPT09ITEpYnJlYWs7bCsrLGErK31mb3IoO2w8aS5sZW5ndGg7KXM9aS5wb3AoKVsxXTtmb3IoO2E8by5tYXJrcy5sZW5ndGg7KXtsZXQgYz1vLm1hcmtzW2ErK10sdT10aGlzLnNlcmlhbGl6ZU1hcmsoYyxvLmlzSW5saW5lLHQpO3UmJihpLnB1c2goW2Msc10pLHMuYXBwZW5kQ2hpbGQodS5kb20pLHM9dS5jb250ZW50RE9NfHx1LmRvbSl9fXMuYXBwZW5kQ2hpbGQodGhpcy5zZXJpYWxpemVOb2RlSW5uZXIobyx0KSl9KSxyfXNlcmlhbGl6ZU5vZGVJbm5lcihlLHQpe2xldHtkb206cixjb250ZW50RE9NOnN9PU5yKFpzKHQpLHRoaXMubm9kZXNbZS50eXBlLm5hbWVdKGUpLG51bGwsZS5hdHRycyk7aWYocyl7aWYoZS5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBub3QgYWxsb3dlZCBpbiBhIGxlYWYgbm9kZSBzcGVjIik7dGhpcy5zZXJpYWxpemVGcmFnbWVudChlLmNvbnRlbnQsdCxzKX1yZXR1cm4gcn1zZXJpYWxpemVOb2RlKGUsdD17fSl7bGV0IHI9dGhpcy5zZXJpYWxpemVOb2RlSW5uZXIoZSx0KTtmb3IobGV0IHM9ZS5tYXJrcy5sZW5ndGgtMTtzPj0wO3MtLSl7bGV0IGk9dGhpcy5zZXJpYWxpemVNYXJrKGUubWFya3Nbc10sZS5pc0lubGluZSx0KTtpJiYoKGkuY29udGVudERPTXx8aS5kb20pLmFwcGVuZENoaWxkKHIpLHI9aS5kb20pfXJldHVybiByfXNlcmlhbGl6ZU1hcmsoZSx0LHI9e30pe2xldCBzPXRoaXMubWFya3NbZS50eXBlLm5hbWVdO3JldHVybiBzJiZOcihacyhyKSxzKGUsdCksbnVsbCxlLmF0dHJzKX1zdGF0aWMgcmVuZGVyU3BlYyhlLHQscj1udWxsLHMpe3JldHVybiBOcihlLHQscixzKX1zdGF0aWMgZnJvbVNjaGVtYShlKXtyZXR1cm4gZS5jYWNoZWQuZG9tU2VyaWFsaXplcnx8KGUuY2FjaGVkLmRvbVNlcmlhbGl6ZXI9bmV3IEt0KHRoaXMubm9kZXNGcm9tU2NoZW1hKGUpLHRoaXMubWFya3NGcm9tU2NoZW1hKGUpKSl9c3RhdGljIG5vZGVzRnJvbVNjaGVtYShlKXtsZXQgdD1UbChlLm5vZGVzKTtyZXR1cm4gdC50ZXh0fHwodC50ZXh0PXI9PnIudGV4dCksdH1zdGF0aWMgbWFya3NGcm9tU2NoZW1hKGUpe3JldHVybiBUbChlLm1hcmtzKX19ZnVuY3Rpb24gVGwobil7bGV0IGU9e307Zm9yKGxldCB0IGluIG4pe2xldCByPW5bdF0uc3BlYy50b0RPTTtyJiYoZVt0XT1yKX1yZXR1cm4gZX1mdW5jdGlvbiBacyhuKXtyZXR1cm4gbi5kb2N1bWVudHx8d2luZG93LmRvY3VtZW50fWNvbnN0IE1sPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG1mKG4pe2xldCBlPU1sLmdldChuKTtyZXR1cm4gZT09PXZvaWQgMCYmTWwuc2V0KG4sZT1nZihuKSksZX1mdW5jdGlvbiBnZihuKXtsZXQgZT1udWxsO2Z1bmN0aW9uIHQocil7aWYociYmdHlwZW9mIHI9PSJvYmplY3QiKWlmKEFycmF5LmlzQXJyYXkocikpaWYodHlwZW9mIHJbMF09PSJzdHJpbmciKWV8fChlPVtdKSxlLnB1c2gocik7ZWxzZSBmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKyl0KHJbc10pO2Vsc2UgZm9yKGxldCBzIGluIHIpdChyW3NdKX1yZXR1cm4gdChuKSxlfWZ1bmN0aW9uIE5yKG4sZSx0LHIpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm57ZG9tOm4uY3JlYXRlVGV4dE5vZGUoZSl9O2lmKGUubm9kZVR5cGUhPW51bGwpcmV0dXJue2RvbTplfTtpZihlLmRvbSYmZS5kb20ubm9kZVR5cGUhPW51bGwpcmV0dXJuIGU7bGV0IHM9ZVswXSxpO2lmKHR5cGVvZiBzIT0ic3RyaW5nIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBhcnJheSBwYXNzZWQgdG8gcmVuZGVyU3BlYyIpO2lmKHImJihpPW1mKHIpKSYmaS5pbmRleE9mKGUpPi0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2luZyBhbiBhcnJheSBmcm9tIGFuIGF0dHJpYnV0ZSBvYmplY3QgYXMgYSBET00gc3BlYy4gVGhpcyBtYXkgYmUgYW4gYXR0ZW1wdGVkIGNyb3NzIHNpdGUgc2NyaXB0aW5nIGF0dGFjay4iKTtsZXQgbz1zLmluZGV4T2YoIiAiKTtvPjAmJih0PXMuc2xpY2UoMCxvKSxzPXMuc2xpY2UobysxKSk7bGV0IGwsYT10P24uY3JlYXRlRWxlbWVudE5TKHQscyk6bi5jcmVhdGVFbGVtZW50KHMpLGM9ZVsxXSx1PTE7aWYoYyYmdHlwZW9mIGM9PSJvYmplY3QiJiZjLm5vZGVUeXBlPT1udWxsJiYhQXJyYXkuaXNBcnJheShjKSl7dT0yO2ZvcihsZXQgZCBpbiBjKWlmKGNbZF0hPW51bGwpe2xldCBoPWQuaW5kZXhPZigiICIpO2g+MD9hLnNldEF0dHJpYnV0ZU5TKGQuc2xpY2UoMCxoKSxkLnNsaWNlKGgrMSksY1tkXSk6ZD09InN0eWxlIiYmYS5zdHlsZT9hLnN0eWxlLmNzc1RleHQ9Y1tkXTphLnNldEF0dHJpYnV0ZShkLGNbZF0pfX1mb3IobGV0IGQ9dTtkPGUubGVuZ3RoO2QrKyl7bGV0IGg9ZVtkXTtpZihoPT09MCl7aWYoZDxlLmxlbmd0aC0xfHxkPnUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBtdXN0IGJlIHRoZSBvbmx5IGNoaWxkIG9mIGl0cyBwYXJlbnQgbm9kZSIpO3JldHVybntkb206YSxjb250ZW50RE9NOmF9fWVsc2V7bGV0e2RvbTpmLGNvbnRlbnRET006cH09TnIobixoLHQscik7aWYoYS5hcHBlbmRDaGlsZChmKSxwKXtpZihsKXRocm93IG5ldyBSYW5nZUVycm9yKCJNdWx0aXBsZSBjb250ZW50IGhvbGVzIik7bD1wfX19cmV0dXJue2RvbTphLGNvbnRlbnRET006bH19Y29uc3QgJGM9NjU1MzUsQmM9TWF0aC5wb3coMiwxNik7ZnVuY3Rpb24geWYobixlKXtyZXR1cm4gbitlKkJjfWZ1bmN0aW9uIEVsKG4pe3JldHVybiBuJiRjfWZ1bmN0aW9uIGtmKG4pe3JldHVybihuLShuJiRjKSkvQmN9Y29uc3QgX2M9MSxIYz0yLFJyPTQsRmM9ODtjbGFzcyBJaXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5wb3M9ZSx0aGlzLmRlbEluZm89dCx0aGlzLnJlY292ZXI9cn1nZXQgZGVsZXRlZCgpe3JldHVybih0aGlzLmRlbEluZm8mRmMpPjB9Z2V0IGRlbGV0ZWRCZWZvcmUoKXtyZXR1cm4odGhpcy5kZWxJbmZvJihfY3xScikpPjB9Z2V0IGRlbGV0ZWRBZnRlcigpe3JldHVybih0aGlzLmRlbEluZm8mKEhjfFJyKSk+MH1nZXQgZGVsZXRlZEFjcm9zcygpe3JldHVybih0aGlzLmRlbEluZm8mUnIpPjB9fWNsYXNzIEVle2NvbnN0cnVjdG9yKGUsdD0hMSl7aWYodGhpcy5yYW5nZXM9ZSx0aGlzLmludmVydGVkPXQsIWUubGVuZ3RoJiZFZS5lbXB0eSlyZXR1cm4gRWUuZW1wdHl9cmVjb3ZlcihlKXtsZXQgdD0wLHI9RWwoZSk7aWYoIXRoaXMuaW52ZXJ0ZWQpZm9yKGxldCBzPTA7czxyO3MrKyl0Kz10aGlzLnJhbmdlc1tzKjMrMl0tdGhpcy5yYW5nZXNbcyozKzFdO3JldHVybiB0aGlzLnJhbmdlc1tyKjNdK3Qra2YoZSl9bWFwUmVzdWx0KGUsdD0xKXtyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMSl9bWFwKGUsdD0xKXtyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMCl9X21hcChlLHQscil7bGV0IHM9MCxpPXRoaXMuaW52ZXJ0ZWQ/MjoxLG89dGhpcy5pbnZlcnRlZD8xOjI7Zm9yKGxldCBsPTA7bDx0aGlzLnJhbmdlcy5sZW5ndGg7bCs9Myl7bGV0IGE9dGhpcy5yYW5nZXNbbF0tKHRoaXMuaW52ZXJ0ZWQ/czowKTtpZihhPmUpYnJlYWs7bGV0IGM9dGhpcy5yYW5nZXNbbCtpXSx1PXRoaXMucmFuZ2VzW2wrb10sZD1hK2M7aWYoZTw9ZCl7bGV0IGg9Yz9lPT1hPy0xOmU9PWQ/MTp0OnQsZj1hK3MrKGg8MD8wOnUpO2lmKHIpcmV0dXJuIGY7bGV0IHA9ZT09KHQ8MD9hOmQpP251bGw6eWYobC8zLGUtYSksbT1lPT1hP0hjOmU9PWQ/X2M6UnI7cmV0dXJuKHQ8MD9lIT1hOmUhPWQpJiYobXw9RmMpLG5ldyBJaShmLG0scCl9cys9dS1jfXJldHVybiByP2UrczpuZXcgSWkoZStzLDAsbnVsbCl9dG91Y2hlcyhlLHQpe2xldCByPTAscz1FbCh0KSxpPXRoaXMuaW52ZXJ0ZWQ/MjoxLG89dGhpcy5pbnZlcnRlZD8xOjI7Zm9yKGxldCBsPTA7bDx0aGlzLnJhbmdlcy5sZW5ndGg7bCs9Myl7bGV0IGE9dGhpcy5yYW5nZXNbbF0tKHRoaXMuaW52ZXJ0ZWQ/cjowKTtpZihhPmUpYnJlYWs7bGV0IGM9dGhpcy5yYW5nZXNbbCtpXSx1PWErYztpZihlPD11JiZsPT1zKjMpcmV0dXJuITA7cis9dGhpcy5yYW5nZXNbbCtvXS1jfXJldHVybiExfWZvckVhY2goZSl7bGV0IHQ9dGhpcy5pbnZlcnRlZD8yOjEscj10aGlzLmludmVydGVkPzE6Mjtmb3IobGV0IHM9MCxpPTA7czx0aGlzLnJhbmdlcy5sZW5ndGg7cys9Myl7bGV0IG89dGhpcy5yYW5nZXNbc10sbD1vLSh0aGlzLmludmVydGVkP2k6MCksYT1vKyh0aGlzLmludmVydGVkPzA6aSksYz10aGlzLnJhbmdlc1tzK3RdLHU9dGhpcy5yYW5nZXNbcytyXTtlKGwsbCtjLGEsYSt1KSxpKz11LWN9fWludmVydCgpe3JldHVybiBuZXcgRWUodGhpcy5yYW5nZXMsIXRoaXMuaW52ZXJ0ZWQpfXRvU3RyaW5nKCl7cmV0dXJuKHRoaXMuaW52ZXJ0ZWQ/Ii0iOiIiKStKU09OLnN0cmluZ2lmeSh0aGlzLnJhbmdlcyl9c3RhdGljIG9mZnNldChlKXtyZXR1cm4gZT09MD9FZS5lbXB0eTpuZXcgRWUoZTwwP1swLC1lLDBdOlswLDAsZV0pfX1FZS5lbXB0eT1uZXcgRWUoW10pO2NsYXNzIEpue2NvbnN0cnVjdG9yKGUsdCxyPTAscz1lP2UubGVuZ3RoOjApe3RoaXMubWlycm9yPXQsdGhpcy5mcm9tPXIsdGhpcy50bz1zLHRoaXMuX21hcHM9ZXx8W10sdGhpcy5vd25EYXRhPSEoZXx8dCl9Z2V0IG1hcHMoKXtyZXR1cm4gdGhpcy5fbWFwc31zbGljZShlPTAsdD10aGlzLm1hcHMubGVuZ3RoKXtyZXR1cm4gbmV3IEpuKHRoaXMuX21hcHMsdGhpcy5taXJyb3IsZSx0KX1hcHBlbmRNYXAoZSx0KXt0aGlzLm93bkRhdGF8fCh0aGlzLl9tYXBzPXRoaXMuX21hcHMuc2xpY2UoKSx0aGlzLm1pcnJvcj10aGlzLm1pcnJvciYmdGhpcy5taXJyb3Iuc2xpY2UoKSx0aGlzLm93bkRhdGE9ITApLHRoaXMudG89dGhpcy5fbWFwcy5wdXNoKGUpLHQhPW51bGwmJnRoaXMuc2V0TWlycm9yKHRoaXMuX21hcHMubGVuZ3RoLTEsdCl9YXBwZW5kTWFwcGluZyhlKXtmb3IobGV0IHQ9MCxyPXRoaXMuX21hcHMubGVuZ3RoO3Q8ZS5fbWFwcy5sZW5ndGg7dCsrKXtsZXQgcz1lLmdldE1pcnJvcih0KTt0aGlzLmFwcGVuZE1hcChlLl9tYXBzW3RdLHMhPW51bGwmJnM8dD9yK3M6dm9pZCAwKX19Z2V0TWlycm9yKGUpe2lmKHRoaXMubWlycm9yKXtmb3IobGV0IHQ9MDt0PHRoaXMubWlycm9yLmxlbmd0aDt0KyspaWYodGhpcy5taXJyb3JbdF09PWUpcmV0dXJuIHRoaXMubWlycm9yW3QrKHQlMj8tMToxKV19fXNldE1pcnJvcihlLHQpe3RoaXMubWlycm9yfHwodGhpcy5taXJyb3I9W10pLHRoaXMubWlycm9yLnB1c2goZSx0KX1hcHBlbmRNYXBwaW5nSW52ZXJ0ZWQoZSl7Zm9yKGxldCB0PWUubWFwcy5sZW5ndGgtMSxyPXRoaXMuX21hcHMubGVuZ3RoK2UuX21hcHMubGVuZ3RoO3Q+PTA7dC0tKXtsZXQgcz1lLmdldE1pcnJvcih0KTt0aGlzLmFwcGVuZE1hcChlLl9tYXBzW3RdLmludmVydCgpLHMhPW51bGwmJnM+dD9yLXMtMTp2b2lkIDApfX1pbnZlcnQoKXtsZXQgZT1uZXcgSm47cmV0dXJuIGUuYXBwZW5kTWFwcGluZ0ludmVydGVkKHRoaXMpLGV9bWFwKGUsdD0xKXtpZih0aGlzLm1pcnJvcilyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMCk7Zm9yKGxldCByPXRoaXMuZnJvbTtyPHRoaXMudG87cisrKWU9dGhpcy5fbWFwc1tyXS5tYXAoZSx0KTtyZXR1cm4gZX1tYXBSZXN1bHQoZSx0PTEpe3JldHVybiB0aGlzLl9tYXAoZSx0LCExKX1fbWFwKGUsdCxyKXtsZXQgcz0wO2ZvcihsZXQgaT10aGlzLmZyb207aTx0aGlzLnRvO2krKyl7bGV0IG89dGhpcy5fbWFwc1tpXSxsPW8ubWFwUmVzdWx0KGUsdCk7aWYobC5yZWNvdmVyIT1udWxsKXtsZXQgYT10aGlzLmdldE1pcnJvcihpKTtpZihhIT1udWxsJiZhPmkmJmE8dGhpcy50byl7aT1hLGU9dGhpcy5fbWFwc1thXS5yZWNvdmVyKGwucmVjb3Zlcik7Y29udGludWV9fXN8PWwuZGVsSW5mbyxlPWwucG9zfXJldHVybiByP2U6bmV3IElpKGUscyxudWxsKX19Y29uc3QgZWk9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBiZXtnZXRNYXAoKXtyZXR1cm4gRWUuZW1wdHl9bWVyZ2UoZSl7cmV0dXJuIG51bGx9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXR8fCF0LnN0ZXBUeXBlKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBTdGVwLmZyb21KU09OIik7bGV0IHI9ZWlbdC5zdGVwVHlwZV07aWYoIXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIHN0ZXAgdHlwZSAke3Quc3RlcFR5cGV9IGRlZmluZWRgKTtyZXR1cm4gci5mcm9tSlNPTihlLHQpfXN0YXRpYyBqc29uSUQoZSx0KXtpZihlIGluIGVpKXRocm93IG5ldyBSYW5nZUVycm9yKCJEdXBsaWNhdGUgdXNlIG9mIHN0ZXAgSlNPTiBJRCAiK2UpO3JldHVybiBlaVtlXT10LHQucHJvdG90eXBlLmpzb25JRD1lLHR9fWNsYXNzIHNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kb2M9ZSx0aGlzLmZhaWxlZD10fXN0YXRpYyBvayhlKXtyZXR1cm4gbmV3IHNlKGUsbnVsbCl9c3RhdGljIGZhaWwoZSl7cmV0dXJuIG5ldyBzZShudWxsLGUpfXN0YXRpYyBmcm9tUmVwbGFjZShlLHQscixzKXt0cnl7cmV0dXJuIHNlLm9rKGUucmVwbGFjZSh0LHIscykpfWNhdGNoKGkpe2lmKGkgaW5zdGFuY2VvZiBCcilyZXR1cm4gc2UuZmFpbChpLm1lc3NhZ2UpO3Rocm93IGl9fX1mdW5jdGlvbiBobyhuLGUsdCl7bGV0IHI9W107Zm9yKGxldCBzPTA7czxuLmNoaWxkQ291bnQ7cysrKXtsZXQgaT1uLmNoaWxkKHMpO2kuY29udGVudC5zaXplJiYoaT1pLmNvcHkoaG8oaS5jb250ZW50LGUsaSkpKSxpLmlzSW5saW5lJiYoaT1lKGksdCxzKSksci5wdXNoKGkpfXJldHVybiBTLmZyb21BcnJheShyKX1jbGFzcyB4dCBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLm1hcms9cn1hcHBseShlKXtsZXQgdD1lLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvKSxyPWUucmVzb2x2ZSh0aGlzLmZyb20pLHM9ci5ub2RlKHIuc2hhcmVkRGVwdGgodGhpcy50bykpLGk9bmV3IEUoaG8odC5jb250ZW50LChvLGwpPT4hby5pc0F0b218fCFsLnR5cGUuYWxsb3dzTWFya1R5cGUodGhpcy5tYXJrLnR5cGUpP286by5tYXJrKHRoaXMubWFyay5hZGRUb1NldChvLm1hcmtzKSkscyksdC5vcGVuU3RhcnQsdC5vcGVuRW5kKTtyZXR1cm4gc2UuZnJvbVJlcGxhY2UoZSx0aGlzLmZyb20sdGhpcy50byxpKX1pbnZlcnQoKXtyZXR1cm4gbmV3IFZlKHRoaXMuZnJvbSx0aGlzLnRvLHRoaXMubWFyayl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMuZnJvbSwxKSxyPWUubWFwUmVzdWx0KHRoaXMudG8sLTEpO3JldHVybiB0LmRlbGV0ZWQmJnIuZGVsZXRlZHx8dC5wb3M+PXIucG9zP251bGw6bmV3IHh0KHQucG9zLHIucG9zLHRoaXMubWFyayl9bWVyZ2UoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB4dCYmZS5tYXJrLmVxKHRoaXMubWFyaykmJnRoaXMuZnJvbTw9ZS50byYmdGhpcy50bz49ZS5mcm9tP25ldyB4dChNYXRoLm1pbih0aGlzLmZyb20sZS5mcm9tKSxNYXRoLm1heCh0aGlzLnRvLGUudG8pLHRoaXMubWFyayk6bnVsbH10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6ImFkZE1hcmsiLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpLGZyb206dGhpcy5mcm9tLHRvOnRoaXMudG99fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmZyb20hPSJudW1iZXIifHx0eXBlb2YgdC50byE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEFkZE1hcmtTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyB4dCh0LmZyb20sdC50byxlLm1hcmtGcm9tSlNPTih0Lm1hcmspKX19YmUuanNvbklEKCJhZGRNYXJrIix4dCk7Y2xhc3MgVmUgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoKSx0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy5tYXJrPXJ9YXBwbHkoZSl7bGV0IHQ9ZS5zbGljZSh0aGlzLmZyb20sdGhpcy50bykscj1uZXcgRShobyh0LmNvbnRlbnQscz0+cy5tYXJrKHRoaXMubWFyay5yZW1vdmVGcm9tU2V0KHMubWFya3MpKSxlKSx0Lm9wZW5TdGFydCx0Lm9wZW5FbmQpO3JldHVybiBzZS5mcm9tUmVwbGFjZShlLHRoaXMuZnJvbSx0aGlzLnRvLHIpfWludmVydCgpe3JldHVybiBuZXcgeHQodGhpcy5mcm9tLHRoaXMudG8sdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLHI9ZS5tYXBSZXN1bHQodGhpcy50bywtMSk7cmV0dXJuIHQuZGVsZXRlZCYmci5kZWxldGVkfHx0LnBvcz49ci5wb3M/bnVsbDpuZXcgVmUodC5wb3Msci5wb3MsdGhpcy5tYXJrKX1tZXJnZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFZlJiZlLm1hcmsuZXEodGhpcy5tYXJrKSYmdGhpcy5mcm9tPD1lLnRvJiZ0aGlzLnRvPj1lLmZyb20/bmV3IFZlKE1hdGgubWluKHRoaXMuZnJvbSxlLmZyb20pLE1hdGgubWF4KHRoaXMudG8sZS50byksdGhpcy5tYXJrKTpudWxsfXRvSlNPTigpe3JldHVybntzdGVwVHlwZToicmVtb3ZlTWFyayIsbWFyazp0aGlzLm1hcmsudG9KU09OKCksZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b319c3RhdGljIGZyb21KU09OKGUsdCl7aWYodHlwZW9mIHQuZnJvbSE9Im51bWJlciJ8fHR5cGVvZiB0LnRvIT0ibnVtYmVyIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgUmVtb3ZlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IFZlKHQuZnJvbSx0LnRvLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1iZS5qc29uSUQoInJlbW92ZU1hcmsiLFZlKTtjbGFzcyB3dCBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLnBvcz1lLHRoaXMubWFyaz10fWFwcGx5KGUpe2xldCB0PWUubm9kZUF0KHRoaXMucG9zKTtpZighdClyZXR1cm4gc2UuZmFpbCgiTm8gbm9kZSBhdCBtYXJrIHN0ZXAncyBwb3NpdGlvbiIpO2xldCByPXQudHlwZS5jcmVhdGUodC5hdHRycyxudWxsLHRoaXMubWFyay5hZGRUb1NldCh0Lm1hcmtzKSk7cmV0dXJuIHNlLmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgRShTLmZyb20ociksMCx0LmlzTGVhZj8wOjEpKX1pbnZlcnQoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKHQpe2xldCByPXRoaXMubWFyay5hZGRUb1NldCh0Lm1hcmtzKTtpZihyLmxlbmd0aD09dC5tYXJrcy5sZW5ndGgpe2ZvcihsZXQgcz0wO3M8dC5tYXJrcy5sZW5ndGg7cysrKWlmKCF0Lm1hcmtzW3NdLmlzSW5TZXQocikpcmV0dXJuIG5ldyB3dCh0aGlzLnBvcyx0Lm1hcmtzW3NdKTtyZXR1cm4gbmV3IHd0KHRoaXMucG9zLHRoaXMubWFyayl9fXJldHVybiBuZXcgVnQodGhpcy5wb3MsdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IHd0KHQucG9zLHRoaXMubWFyayl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhZGROb2RlTWFyayIscG9zOnRoaXMucG9zLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5wb3MhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBBZGROb2RlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IHd0KHQucG9zLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1iZS5qc29uSUQoImFkZE5vZGVNYXJrIix3dCk7Y2xhc3MgVnQgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy5wb3M9ZSx0aGlzLm1hcms9dH1hcHBseShlKXtsZXQgdD1lLm5vZGVBdCh0aGlzLnBvcyk7aWYoIXQpcmV0dXJuIHNlLmZhaWwoIk5vIG5vZGUgYXQgbWFyayBzdGVwJ3MgcG9zaXRpb24iKTtsZXQgcj10LnR5cGUuY3JlYXRlKHQuYXR0cnMsbnVsbCx0aGlzLm1hcmsucmVtb3ZlRnJvbVNldCh0Lm1hcmtzKSk7cmV0dXJuIHNlLmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgRShTLmZyb20ociksMCx0LmlzTGVhZj8wOjEpKX1pbnZlcnQoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO3JldHVybiF0fHwhdGhpcy5tYXJrLmlzSW5TZXQodC5tYXJrcyk/dGhpczpuZXcgd3QodGhpcy5wb3MsdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IFZ0KHQucG9zLHRoaXMubWFyayl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJyZW1vdmVOb2RlTWFyayIscG9zOnRoaXMucG9zLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5wb3MhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBSZW1vdmVOb2RlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IFZ0KHQucG9zLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1iZS5qc29uSUQoInJlbW92ZU5vZGVNYXJrIixWdCk7Y2xhc3MgcmUgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQscixzPSExKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLnNsaWNlPXIsdGhpcy5zdHJ1Y3R1cmU9c31hcHBseShlKXtyZXR1cm4gdGhpcy5zdHJ1Y3R1cmUmJkRpKGUsdGhpcy5mcm9tLHRoaXMudG8pP3NlLmZhaWwoIlN0cnVjdHVyZSByZXBsYWNlIHdvdWxkIG92ZXJ3cml0ZSBjb250ZW50Iik6c2UuZnJvbVJlcGxhY2UoZSx0aGlzLmZyb20sdGhpcy50byx0aGlzLnNsaWNlKX1nZXRNYXAoKXtyZXR1cm4gbmV3IEVlKFt0aGlzLmZyb20sdGhpcy50by10aGlzLmZyb20sdGhpcy5zbGljZS5zaXplXSl9aW52ZXJ0KGUpe3JldHVybiBuZXcgcmUodGhpcy5mcm9tLHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemUsZS5zbGljZSh0aGlzLmZyb20sdGhpcy50bykpfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLnRvLC0xKSxyPXRoaXMuZnJvbT09dGhpcy50byYmcmUuTUFQX0JJQVM8MD90OmUubWFwUmVzdWx0KHRoaXMuZnJvbSwxKTtyZXR1cm4gci5kZWxldGVkQWNyb3NzJiZ0LmRlbGV0ZWRBY3Jvc3M/bnVsbDpuZXcgcmUoci5wb3MsTWF0aC5tYXgoci5wb3MsdC5wb3MpLHRoaXMuc2xpY2UsdGhpcy5zdHJ1Y3R1cmUpfW1lcmdlKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHJlKXx8ZS5zdHJ1Y3R1cmV8fHRoaXMuc3RydWN0dXJlKXJldHVybiBudWxsO2lmKHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemU9PWUuZnJvbSYmIXRoaXMuc2xpY2Uub3BlbkVuZCYmIWUuc2xpY2Uub3BlblN0YXJ0KXtsZXQgdD10aGlzLnNsaWNlLnNpemUrZS5zbGljZS5zaXplPT0wP0UuZW1wdHk6bmV3IEUodGhpcy5zbGljZS5jb250ZW50LmFwcGVuZChlLnNsaWNlLmNvbnRlbnQpLHRoaXMuc2xpY2Uub3BlblN0YXJ0LGUuc2xpY2Uub3BlbkVuZCk7cmV0dXJuIG5ldyByZSh0aGlzLmZyb20sdGhpcy50bysoZS50by1lLmZyb20pLHQsdGhpcy5zdHJ1Y3R1cmUpfWVsc2UgaWYoZS50bz09dGhpcy5mcm9tJiYhdGhpcy5zbGljZS5vcGVuU3RhcnQmJiFlLnNsaWNlLm9wZW5FbmQpe2xldCB0PXRoaXMuc2xpY2Uuc2l6ZStlLnNsaWNlLnNpemU9PTA/RS5lbXB0eTpuZXcgRShlLnNsaWNlLmNvbnRlbnQuYXBwZW5kKHRoaXMuc2xpY2UuY29udGVudCksZS5zbGljZS5vcGVuU3RhcnQsdGhpcy5zbGljZS5vcGVuRW5kKTtyZXR1cm4gbmV3IHJlKGUuZnJvbSx0aGlzLnRvLHQsdGhpcy5zdHJ1Y3R1cmUpfWVsc2UgcmV0dXJuIG51bGx9dG9KU09OKCl7bGV0IGU9e3N0ZXBUeXBlOiJyZXBsYWNlIixmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvfTtyZXR1cm4gdGhpcy5zbGljZS5zaXplJiYoZS5zbGljZT10aGlzLnNsaWNlLnRvSlNPTigpKSx0aGlzLnN0cnVjdHVyZSYmKGUuc3RydWN0dXJlPSEwKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmZyb20hPSJudW1iZXIifHx0eXBlb2YgdC50byE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlcGxhY2VTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyByZSh0LmZyb20sdC50byxFLmZyb21KU09OKGUsdC5zbGljZSksISF0LnN0cnVjdHVyZSl9fXJlLk1BUF9CSUFTPTE7YmUuanNvbklEKCJyZXBsYWNlIixyZSk7Y2xhc3MgYWUgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQscixzLGksbyxsPSExKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLmdhcEZyb209cix0aGlzLmdhcFRvPXMsdGhpcy5zbGljZT1pLHRoaXMuaW5zZXJ0PW8sdGhpcy5zdHJ1Y3R1cmU9bH1hcHBseShlKXtpZih0aGlzLnN0cnVjdHVyZSYmKERpKGUsdGhpcy5mcm9tLHRoaXMuZ2FwRnJvbSl8fERpKGUsdGhpcy5nYXBUbyx0aGlzLnRvKSkpcmV0dXJuIHNlLmZhaWwoIlN0cnVjdHVyZSBnYXAtcmVwbGFjZSB3b3VsZCBvdmVyd3JpdGUgY29udGVudCIpO2xldCB0PWUuc2xpY2UodGhpcy5nYXBGcm9tLHRoaXMuZ2FwVG8pO2lmKHQub3BlblN0YXJ0fHx0Lm9wZW5FbmQpcmV0dXJuIHNlLmZhaWwoIkdhcCBpcyBub3QgYSBmbGF0IHJhbmdlIik7bGV0IHI9dGhpcy5zbGljZS5pbnNlcnRBdCh0aGlzLmluc2VydCx0LmNvbnRlbnQpO3JldHVybiByP3NlLmZyb21SZXBsYWNlKGUsdGhpcy5mcm9tLHRoaXMudG8scik6c2UuZmFpbCgiQ29udGVudCBkb2VzIG5vdCBmaXQgaW4gZ2FwIil9Z2V0TWFwKCl7cmV0dXJuIG5ldyBFZShbdGhpcy5mcm9tLHRoaXMuZ2FwRnJvbS10aGlzLmZyb20sdGhpcy5pbnNlcnQsdGhpcy5nYXBUbyx0aGlzLnRvLXRoaXMuZ2FwVG8sdGhpcy5zbGljZS5zaXplLXRoaXMuaW5zZXJ0XSl9aW52ZXJ0KGUpe2xldCB0PXRoaXMuZ2FwVG8tdGhpcy5nYXBGcm9tO3JldHVybiBuZXcgYWUodGhpcy5mcm9tLHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemUrdCx0aGlzLmZyb20rdGhpcy5pbnNlcnQsdGhpcy5mcm9tK3RoaXMuaW5zZXJ0K3QsZS5zbGljZSh0aGlzLmZyb20sdGhpcy50bykucmVtb3ZlQmV0d2Vlbih0aGlzLmdhcEZyb20tdGhpcy5mcm9tLHRoaXMuZ2FwVG8tdGhpcy5mcm9tKSx0aGlzLmdhcEZyb20tdGhpcy5mcm9tLHRoaXMuc3RydWN0dXJlKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLHI9ZS5tYXBSZXN1bHQodGhpcy50bywtMSkscz10aGlzLmZyb209PXRoaXMuZ2FwRnJvbT90LnBvczplLm1hcCh0aGlzLmdhcEZyb20sLTEpLGk9dGhpcy50bz09dGhpcy5nYXBUbz9yLnBvczplLm1hcCh0aGlzLmdhcFRvLDEpO3JldHVybiB0LmRlbGV0ZWRBY3Jvc3MmJnIuZGVsZXRlZEFjcm9zc3x8czx0LnBvc3x8aT5yLnBvcz9udWxsOm5ldyBhZSh0LnBvcyxyLnBvcyxzLGksdGhpcy5zbGljZSx0aGlzLmluc2VydCx0aGlzLnN0cnVjdHVyZSl9dG9KU09OKCl7bGV0IGU9e3N0ZXBUeXBlOiJyZXBsYWNlQXJvdW5kIixmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLGdhcEZyb206dGhpcy5nYXBGcm9tLGdhcFRvOnRoaXMuZ2FwVG8saW5zZXJ0OnRoaXMuaW5zZXJ0fTtyZXR1cm4gdGhpcy5zbGljZS5zaXplJiYoZS5zbGljZT10aGlzLnNsaWNlLnRvSlNPTigpKSx0aGlzLnN0cnVjdHVyZSYmKGUuc3RydWN0dXJlPSEwKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmZyb20hPSJudW1iZXIifHx0eXBlb2YgdC50byE9Im51bWJlciJ8fHR5cGVvZiB0LmdhcEZyb20hPSJudW1iZXIifHx0eXBlb2YgdC5nYXBUbyE9Im51bWJlciJ8fHR5cGVvZiB0Lmluc2VydCE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlcGxhY2VBcm91bmRTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyBhZSh0LmZyb20sdC50byx0LmdhcEZyb20sdC5nYXBUbyxFLmZyb21KU09OKGUsdC5zbGljZSksdC5pbnNlcnQsISF0LnN0cnVjdHVyZSl9fWJlLmpzb25JRCgicmVwbGFjZUFyb3VuZCIsYWUpO2Z1bmN0aW9uIERpKG4sZSx0KXtsZXQgcj1uLnJlc29sdmUoZSkscz10LWUsaT1yLmRlcHRoO2Zvcig7cz4wJiZpPjAmJnIuaW5kZXhBZnRlcihpKT09ci5ub2RlKGkpLmNoaWxkQ291bnQ7KWktLSxzLS07aWYocz4wKXtsZXQgbz1yLm5vZGUoaSkubWF5YmVDaGlsZChyLmluZGV4QWZ0ZXIoaSkpO2Zvcig7cz4wOyl7aWYoIW98fG8uaXNMZWFmKXJldHVybiEwO289by5maXJzdENoaWxkLHMtLX19cmV0dXJuITF9ZnVuY3Rpb24gYmYobixlLHQscil7bGV0IHM9W10saT1bXSxvLGw7bi5kb2Mubm9kZXNCZXR3ZWVuKGUsdCwoYSxjLHUpPT57aWYoIWEuaXNJbmxpbmUpcmV0dXJuO2xldCBkPWEubWFya3M7aWYoIXIuaXNJblNldChkKSYmdS50eXBlLmFsbG93c01hcmtUeXBlKHIudHlwZSkpe2xldCBoPU1hdGgubWF4KGMsZSksZj1NYXRoLm1pbihjK2Eubm9kZVNpemUsdCkscD1yLmFkZFRvU2V0KGQpO2ZvcihsZXQgbT0wO208ZC5sZW5ndGg7bSsrKWRbbV0uaXNJblNldChwKXx8KG8mJm8udG89PWgmJm8ubWFyay5lcShkW21dKT9vLnRvPWY6cy5wdXNoKG89bmV3IFZlKGgsZixkW21dKSkpO2wmJmwudG89PWg/bC50bz1mOmkucHVzaChsPW5ldyB4dChoLGYscikpfX0pLHMuZm9yRWFjaChhPT5uLnN0ZXAoYSkpLGkuZm9yRWFjaChhPT5uLnN0ZXAoYSkpfWZ1bmN0aW9uIHhmKG4sZSx0LHIpe2xldCBzPVtdLGk9MDtuLmRvYy5ub2Rlc0JldHdlZW4oZSx0LChvLGwpPT57aWYoIW8uaXNJbmxpbmUpcmV0dXJuO2krKztsZXQgYT1udWxsO2lmKHIgaW5zdGFuY2VvZiBOcyl7bGV0IGM9by5tYXJrcyx1O2Zvcig7dT1yLmlzSW5TZXQoYyk7KShhfHwoYT1bXSkpLnB1c2godSksYz11LnJlbW92ZUZyb21TZXQoYyl9ZWxzZSByP3IuaXNJblNldChvLm1hcmtzKSYmKGE9W3JdKTphPW8ubWFya3M7aWYoYSYmYS5sZW5ndGgpe2xldCBjPU1hdGgubWluKGwrby5ub2RlU2l6ZSx0KTtmb3IobGV0IHU9MDt1PGEubGVuZ3RoO3UrKyl7bGV0IGQ9YVt1XSxoO2ZvcihsZXQgZj0wO2Y8cy5sZW5ndGg7ZisrKXtsZXQgcD1zW2ZdO3Auc3RlcD09aS0xJiZkLmVxKHNbZl0uc3R5bGUpJiYoaD1wKX1oPyhoLnRvPWMsaC5zdGVwPWkpOnMucHVzaCh7c3R5bGU6ZCxmcm9tOk1hdGgubWF4KGwsZSksdG86YyxzdGVwOml9KX19fSkscy5mb3JFYWNoKG89Pm4uc3RlcChuZXcgVmUoby5mcm9tLG8udG8sby5zdHlsZSkpKX1mdW5jdGlvbiBmbyhuLGUsdCxyPXQuY29udGVudE1hdGNoLHM9ITApe2xldCBpPW4uZG9jLm5vZGVBdChlKSxvPVtdLGw9ZSsxO2ZvcihsZXQgYT0wO2E8aS5jaGlsZENvdW50O2ErKyl7bGV0IGM9aS5jaGlsZChhKSx1PWwrYy5ub2RlU2l6ZSxkPXIubWF0Y2hUeXBlKGMudHlwZSk7aWYoIWQpby5wdXNoKG5ldyByZShsLHUsRS5lbXB0eSkpO2Vsc2V7cj1kO2ZvcihsZXQgaD0wO2g8Yy5tYXJrcy5sZW5ndGg7aCsrKXQuYWxsb3dzTWFya1R5cGUoYy5tYXJrc1toXS50eXBlKXx8bi5zdGVwKG5ldyBWZShsLHUsYy5tYXJrc1toXSkpO2lmKHMmJmMuaXNUZXh0JiZ0LndoaXRlc3BhY2UhPSJwcmUiKXtsZXQgaCxmPS9ccj9cbnxcci9nLHA7Zm9yKDtoPWYuZXhlYyhjLnRleHQpOylwfHwocD1uZXcgRShTLmZyb20odC5zY2hlbWEudGV4dCgiICIsdC5hbGxvd2VkTWFya3MoYy5tYXJrcykpKSwwLDApKSxvLnB1c2gobmV3IHJlKGwraC5pbmRleCxsK2guaW5kZXgraFswXS5sZW5ndGgscCkpfX1sPXV9aWYoIXIudmFsaWRFbmQpe2xldCBhPXIuZmlsbEJlZm9yZShTLmVtcHR5LCEwKTtuLnJlcGxhY2UobCxsLG5ldyBFKGEsMCwwKSl9Zm9yKGxldCBhPW8ubGVuZ3RoLTE7YT49MDthLS0pbi5zdGVwKG9bYV0pfWZ1bmN0aW9uIHdmKG4sZSx0KXtyZXR1cm4oZT09MHx8bi5jYW5SZXBsYWNlKGUsbi5jaGlsZENvdW50KSkmJih0PT1uLmNoaWxkQ291bnR8fG4uY2FuUmVwbGFjZSgwLHQpKX1mdW5jdGlvbiBtbihuKXtsZXQgdD1uLnBhcmVudC5jb250ZW50LmN1dEJ5SW5kZXgobi5zdGFydEluZGV4LG4uZW5kSW5kZXgpO2ZvcihsZXQgcj1uLmRlcHRoLHM9MCxpPTA7Oy0tcil7bGV0IG89bi4kZnJvbS5ub2RlKHIpLGw9bi4kZnJvbS5pbmRleChyKStzLGE9bi4kdG8uaW5kZXhBZnRlcihyKS1pO2lmKHI8bi5kZXB0aCYmby5jYW5SZXBsYWNlKGwsYSx0KSlyZXR1cm4gcjtpZihyPT0wfHxvLnR5cGUuc3BlYy5pc29sYXRpbmd8fCF3ZihvLGwsYSkpYnJlYWs7bCYmKHM9MSksYTxvLmNoaWxkQ291bnQmJihpPTEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHZmKG4sZSx0KXtsZXR7JGZyb206ciwkdG86cyxkZXB0aDppfT1lLG89ci5iZWZvcmUoaSsxKSxsPXMuYWZ0ZXIoaSsxKSxhPW8sYz1sLHU9Uy5lbXB0eSxkPTA7Zm9yKGxldCBwPWksbT0hMTtwPnQ7cC0tKW18fHIuaW5kZXgocCk+MD8obT0hMCx1PVMuZnJvbShyLm5vZGUocCkuY29weSh1KSksZCsrKTphLS07bGV0IGg9Uy5lbXB0eSxmPTA7Zm9yKGxldCBwPWksbT0hMTtwPnQ7cC0tKW18fHMuYWZ0ZXIocCsxKTxzLmVuZChwKT8obT0hMCxoPVMuZnJvbShzLm5vZGUocCkuY29weShoKSksZisrKTpjKys7bi5zdGVwKG5ldyBhZShhLGMsbyxsLG5ldyBFKHUuYXBwZW5kKGgpLGQsZiksdS5zaXplLWQsITApKX1mdW5jdGlvbiBwbyhuLGUsdD1udWxsLHI9bil7bGV0IHM9U2YobixlKSxpPXMmJkNmKHIsZSk7cmV0dXJuIGk/cy5tYXAoQWwpLmNvbmNhdCh7dHlwZTplLGF0dHJzOnR9KS5jb25jYXQoaS5tYXAoQWwpKTpudWxsfWZ1bmN0aW9uIEFsKG4pe3JldHVybnt0eXBlOm4sYXR0cnM6bnVsbH19ZnVuY3Rpb24gU2YobixlKXtsZXR7cGFyZW50OnQsc3RhcnRJbmRleDpyLGVuZEluZGV4OnN9PW4saT10LmNvbnRlbnRNYXRjaEF0KHIpLmZpbmRXcmFwcGluZyhlKTtpZighaSlyZXR1cm4gbnVsbDtsZXQgbz1pLmxlbmd0aD9pWzBdOmU7cmV0dXJuIHQuY2FuUmVwbGFjZVdpdGgocixzLG8pP2k6bnVsbH1mdW5jdGlvbiBDZihuLGUpe2xldHtwYXJlbnQ6dCxzdGFydEluZGV4OnIsZW5kSW5kZXg6c309bixpPXQuY2hpbGQociksbz1lLmNvbnRlbnRNYXRjaC5maW5kV3JhcHBpbmcoaS50eXBlKTtpZighbylyZXR1cm4gbnVsbDtsZXQgYT0oby5sZW5ndGg/b1tvLmxlbmd0aC0xXTplKS5jb250ZW50TWF0Y2g7Zm9yKGxldCBjPXI7YSYmYzxzO2MrKylhPWEubWF0Y2hUeXBlKHQuY2hpbGQoYykudHlwZSk7cmV0dXJuIWF8fCFhLnZhbGlkRW5kP251bGw6b31mdW5jdGlvbiBUZihuLGUsdCl7bGV0IHI9Uy5lbXB0eTtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj0wO28tLSl7aWYoci5zaXplKXtsZXQgbD10W29dLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQocik7aWYoIWx8fCFsLnZhbGlkRW5kKXRocm93IG5ldyBSYW5nZUVycm9yKCJXcmFwcGVyIHR5cGUgZ2l2ZW4gdG8gVHJhbnNmb3JtLndyYXAgZG9lcyBub3QgZm9ybSB2YWxpZCBjb250ZW50IG9mIGl0cyBwYXJlbnQgd3JhcHBlciIpfXI9Uy5mcm9tKHRbb10udHlwZS5jcmVhdGUodFtvXS5hdHRycyxyKSl9bGV0IHM9ZS5zdGFydCxpPWUuZW5kO24uc3RlcChuZXcgYWUocyxpLHMsaSxuZXcgRShyLDAsMCksdC5sZW5ndGgsITApKX1mdW5jdGlvbiBNZihuLGUsdCxyLHMpe2lmKCFyLmlzVGV4dGJsb2NrKXRocm93IG5ldyBSYW5nZUVycm9yKCJUeXBlIGdpdmVuIHRvIHNldEJsb2NrVHlwZSBzaG91bGQgYmUgYSB0ZXh0YmxvY2siKTtsZXQgaT1uLnN0ZXBzLmxlbmd0aDtuLmRvYy5ub2Rlc0JldHdlZW4oZSx0LChvLGwpPT57bGV0IGE9dHlwZW9mIHM9PSJmdW5jdGlvbiI/cyhvKTpzO2lmKG8uaXNUZXh0YmxvY2smJiFvLmhhc01hcmt1cChyLGEpJiZFZihuLmRvYyxuLm1hcHBpbmcuc2xpY2UoaSkubWFwKGwpLHIpKXtsZXQgYz1udWxsO2lmKHIuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50KXtsZXQgZj1yLndoaXRlc3BhY2U9PSJwcmUiLHA9ISFyLmNvbnRlbnRNYXRjaC5tYXRjaFR5cGUoci5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpO2YmJiFwP2M9ITE6IWYmJnAmJihjPSEwKX1jPT09ITEmJlVjKG4sbyxsLGkpLGZvKG4sbi5tYXBwaW5nLnNsaWNlKGkpLm1hcChsLDEpLHIsdm9pZCAwLGM9PT1udWxsKTtsZXQgdT1uLm1hcHBpbmcuc2xpY2UoaSksZD11Lm1hcChsLDEpLGg9dS5tYXAobCtvLm5vZGVTaXplLDEpO3JldHVybiBuLnN0ZXAobmV3IGFlKGQsaCxkKzEsaC0xLG5ldyBFKFMuZnJvbShyLmNyZWF0ZShhLG51bGwsby5tYXJrcykpLDAsMCksMSwhMCkpLGM9PT0hMCYmVmMobixvLGwsaSksITF9fSl9ZnVuY3Rpb24gVmMobixlLHQscil7ZS5mb3JFYWNoKChzLGkpPT57aWYocy5pc1RleHQpe2xldCBvLGw9L1xyP1xufFxyL2c7Zm9yKDtvPWwuZXhlYyhzLnRleHQpOyl7bGV0IGE9bi5tYXBwaW5nLnNsaWNlKHIpLm1hcCh0KzEraStvLmluZGV4KTtuLnJlcGxhY2VXaXRoKGEsYSsxLGUudHlwZS5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQuY3JlYXRlKCkpfX19KX1mdW5jdGlvbiBVYyhuLGUsdCxyKXtlLmZvckVhY2goKHMsaSk9PntpZihzLnR5cGU9PXMudHlwZS5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpe2xldCBvPW4ubWFwcGluZy5zbGljZShyKS5tYXAodCsxK2kpO24ucmVwbGFjZVdpdGgobyxvKzEsZS50eXBlLnNjaGVtYS50ZXh0KGAKYCkpfX0pfWZ1bmN0aW9uIEVmKG4sZSx0KXtsZXQgcj1uLnJlc29sdmUoZSkscz1yLmluZGV4KCk7cmV0dXJuIHIucGFyZW50LmNhblJlcGxhY2VXaXRoKHMscysxLHQpfWZ1bmN0aW9uIEFmKG4sZSx0LHIscyl7bGV0IGk9bi5kb2Mubm9kZUF0KGUpO2lmKCFpKXRocm93IG5ldyBSYW5nZUVycm9yKCJObyBub2RlIGF0IGdpdmVuIHBvc2l0aW9uIik7dHx8KHQ9aS50eXBlKTtsZXQgbz10LmNyZWF0ZShyLG51bGwsc3x8aS5tYXJrcyk7aWYoaS5pc0xlYWYpcmV0dXJuIG4ucmVwbGFjZVdpdGgoZSxlK2kubm9kZVNpemUsbyk7aWYoIXQudmFsaWRDb250ZW50KGkuY29udGVudCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgY29udGVudCBmb3Igbm9kZSB0eXBlICIrdC5uYW1lKTtuLnN0ZXAobmV3IGFlKGUsZStpLm5vZGVTaXplLGUrMSxlK2kubm9kZVNpemUtMSxuZXcgRShTLmZyb20obyksMCwwKSwxLCEwKSl9ZnVuY3Rpb24gb3QobixlLHQ9MSxyKXtsZXQgcz1uLnJlc29sdmUoZSksaT1zLmRlcHRoLXQsbz1yJiZyW3IubGVuZ3RoLTFdfHxzLnBhcmVudDtpZihpPDB8fHMucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmd8fCFzLnBhcmVudC5jYW5SZXBsYWNlKHMuaW5kZXgoKSxzLnBhcmVudC5jaGlsZENvdW50KXx8IW8udHlwZS52YWxpZENvbnRlbnQocy5wYXJlbnQuY29udGVudC5jdXRCeUluZGV4KHMuaW5kZXgoKSxzLnBhcmVudC5jaGlsZENvdW50KSkpcmV0dXJuITE7Zm9yKGxldCBjPXMuZGVwdGgtMSx1PXQtMjtjPmk7Yy0tLHUtLSl7bGV0IGQ9cy5ub2RlKGMpLGg9cy5pbmRleChjKTtpZihkLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IGY9ZC5jb250ZW50LmN1dEJ5SW5kZXgoaCxkLmNoaWxkQ291bnQpLHA9ciYmclt1KzFdO3AmJihmPWYucmVwbGFjZUNoaWxkKDAscC50eXBlLmNyZWF0ZShwLmF0dHJzKSkpO2xldCBtPXImJnJbdV18fGQ7aWYoIWQuY2FuUmVwbGFjZShoKzEsZC5jaGlsZENvdW50KXx8IW0udHlwZS52YWxpZENvbnRlbnQoZikpcmV0dXJuITF9bGV0IGw9cy5pbmRleEFmdGVyKGkpLGE9ciYmclswXTtyZXR1cm4gcy5ub2RlKGkpLmNhblJlcGxhY2VXaXRoKGwsbCxhP2EudHlwZTpzLm5vZGUoaSsxKS50eXBlKX1mdW5jdGlvbiBPZihuLGUsdD0xLHIpe2xldCBzPW4uZG9jLnJlc29sdmUoZSksaT1TLmVtcHR5LG89Uy5lbXB0eTtmb3IobGV0IGw9cy5kZXB0aCxhPXMuZGVwdGgtdCxjPXQtMTtsPmE7bC0tLGMtLSl7aT1TLmZyb20ocy5ub2RlKGwpLmNvcHkoaSkpO2xldCB1PXImJnJbY107bz1TLmZyb20odT91LnR5cGUuY3JlYXRlKHUuYXR0cnMsbyk6cy5ub2RlKGwpLmNvcHkobykpfW4uc3RlcChuZXcgcmUoZSxlLG5ldyBFKGkuYXBwZW5kKG8pLHQsdCksITApKX1mdW5jdGlvbiBBdChuLGUpe2xldCB0PW4ucmVzb2x2ZShlKSxyPXQuaW5kZXgoKTtyZXR1cm4gamModC5ub2RlQmVmb3JlLHQubm9kZUFmdGVyKSYmdC5wYXJlbnQuY2FuUmVwbGFjZShyLHIrMSl9ZnVuY3Rpb24gTmYobixlKXtlLmNvbnRlbnQuc2l6ZXx8bi50eXBlLmNvbXBhdGlibGVDb250ZW50KGUudHlwZSk7bGV0IHQ9bi5jb250ZW50TWF0Y2hBdChuLmNoaWxkQ291bnQpLHtsaW5lYnJlYWtSZXBsYWNlbWVudDpyfT1uLnR5cGUuc2NoZW1hO2ZvcihsZXQgcz0wO3M8ZS5jaGlsZENvdW50O3MrKyl7bGV0IGk9ZS5jaGlsZChzKSxvPWkudHlwZT09cj9uLnR5cGUuc2NoZW1hLm5vZGVzLnRleHQ6aS50eXBlO2lmKHQ9dC5tYXRjaFR5cGUobyksIXR8fCFuLnR5cGUuYWxsb3dzTWFya3MoaS5tYXJrcykpcmV0dXJuITF9cmV0dXJuIHQudmFsaWRFbmR9ZnVuY3Rpb24gamMobixlKXtyZXR1cm4hIShuJiZlJiYhbi5pc0xlYWYmJk5mKG4sZSkpfWZ1bmN0aW9uIFJzKG4sZSx0PS0xKXtsZXQgcj1uLnJlc29sdmUoZSk7Zm9yKGxldCBzPXIuZGVwdGg7O3MtLSl7bGV0IGksbyxsPXIuaW5kZXgocyk7aWYocz09ci5kZXB0aD8oaT1yLm5vZGVCZWZvcmUsbz1yLm5vZGVBZnRlcik6dD4wPyhpPXIubm9kZShzKzEpLGwrKyxvPXIubm9kZShzKS5tYXliZUNoaWxkKGwpKTooaT1yLm5vZGUocykubWF5YmVDaGlsZChsLTEpLG89ci5ub2RlKHMrMSkpLGkmJiFpLmlzVGV4dGJsb2NrJiZqYyhpLG8pJiZyLm5vZGUocykuY2FuUmVwbGFjZShsLGwrMSkpcmV0dXJuIGU7aWYocz09MClicmVhaztlPXQ8MD9yLmJlZm9yZShzKTpyLmFmdGVyKHMpfX1mdW5jdGlvbiBSZihuLGUsdCl7bGV0IHI9bnVsbCx7bGluZWJyZWFrUmVwbGFjZW1lbnQ6c309bi5kb2MudHlwZS5zY2hlbWEsaT1uLmRvYy5yZXNvbHZlKGUtdCksbz1pLm5vZGUoKS50eXBlO2lmKHMmJm8uaW5saW5lQ29udGVudCl7bGV0IHU9by53aGl0ZXNwYWNlPT0icHJlIixkPSEhby5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKHMpO3UmJiFkP3I9ITE6IXUmJmQmJihyPSEwKX1sZXQgbD1uLnN0ZXBzLmxlbmd0aDtpZihyPT09ITEpe2xldCB1PW4uZG9jLnJlc29sdmUoZSt0KTtVYyhuLHUubm9kZSgpLHUuYmVmb3JlKCksbCl9by5pbmxpbmVDb250ZW50JiZmbyhuLGUrdC0xLG8saS5ub2RlKCkuY29udGVudE1hdGNoQXQoaS5pbmRleCgpKSxyPT1udWxsKTtsZXQgYT1uLm1hcHBpbmcuc2xpY2UobCksYz1hLm1hcChlLXQpO2lmKG4uc3RlcChuZXcgcmUoYyxhLm1hcChlK3QsLTEpLEUuZW1wdHksITApKSxyPT09ITApe2xldCB1PW4uZG9jLnJlc29sdmUoYyk7VmMobix1Lm5vZGUoKSx1LmJlZm9yZSgpLG4uc3RlcHMubGVuZ3RoKX1yZXR1cm4gbn1mdW5jdGlvbiBJZihuLGUsdCl7bGV0IHI9bi5yZXNvbHZlKGUpO2lmKHIucGFyZW50LmNhblJlcGxhY2VXaXRoKHIuaW5kZXgoKSxyLmluZGV4KCksdCkpcmV0dXJuIGU7aWYoci5wYXJlbnRPZmZzZXQ9PTApZm9yKGxldCBzPXIuZGVwdGgtMTtzPj0wO3MtLSl7bGV0IGk9ci5pbmRleChzKTtpZihyLm5vZGUocykuY2FuUmVwbGFjZVdpdGgoaSxpLHQpKXJldHVybiByLmJlZm9yZShzKzEpO2lmKGk+MClyZXR1cm4gbnVsbH1pZihyLnBhcmVudE9mZnNldD09ci5wYXJlbnQuY29udGVudC5zaXplKWZvcihsZXQgcz1yLmRlcHRoLTE7cz49MDtzLS0pe2xldCBpPXIuaW5kZXhBZnRlcihzKTtpZihyLm5vZGUocykuY2FuUmVwbGFjZVdpdGgoaSxpLHQpKXJldHVybiByLmFmdGVyKHMrMSk7aWYoaTxyLm5vZGUocykuY2hpbGRDb3VudClyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBxYyhuLGUsdCl7bGV0IHI9bi5yZXNvbHZlKGUpO2lmKCF0LmNvbnRlbnQuc2l6ZSlyZXR1cm4gZTtsZXQgcz10LmNvbnRlbnQ7Zm9yKGxldCBpPTA7aTx0Lm9wZW5TdGFydDtpKyspcz1zLmZpcnN0Q2hpbGQuY29udGVudDtmb3IobGV0IGk9MTtpPD0odC5vcGVuU3RhcnQ9PTAmJnQuc2l6ZT8yOjEpO2krKylmb3IobGV0IG89ci5kZXB0aDtvPj0wO28tLSl7bGV0IGw9bz09ci5kZXB0aD8wOnIucG9zPD0oci5zdGFydChvKzEpK3IuZW5kKG8rMSkpLzI/LTE6MSxhPXIuaW5kZXgobykrKGw+MD8xOjApLGM9ci5ub2RlKG8pLHU9ITE7aWYoaT09MSl1PWMuY2FuUmVwbGFjZShhLGEscyk7ZWxzZXtsZXQgZD1jLmNvbnRlbnRNYXRjaEF0KGEpLmZpbmRXcmFwcGluZyhzLmZpcnN0Q2hpbGQudHlwZSk7dT1kJiZjLmNhblJlcGxhY2VXaXRoKGEsYSxkWzBdKX1pZih1KXJldHVybiBsPT0wP3IucG9zOmw8MD9yLmJlZm9yZShvKzEpOnIuYWZ0ZXIobysxKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBJcyhuLGUsdD1lLHI9RS5lbXB0eSl7aWYoZT09dCYmIXIuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgcz1uLnJlc29sdmUoZSksaT1uLnJlc29sdmUodCk7cmV0dXJuIFdjKHMsaSxyKT9uZXcgcmUoZSx0LHIpOm5ldyBEZihzLGkscikuZml0KCl9ZnVuY3Rpb24gV2MobixlLHQpe3JldHVybiF0Lm9wZW5TdGFydCYmIXQub3BlbkVuZCYmbi5zdGFydCgpPT1lLnN0YXJ0KCkmJm4ucGFyZW50LmNhblJlcGxhY2Uobi5pbmRleCgpLGUuaW5kZXgoKSx0LmNvbnRlbnQpfWNsYXNzIERme2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLiRmcm9tPWUsdGhpcy4kdG89dCx0aGlzLnVucGxhY2VkPXIsdGhpcy5mcm9udGllcj1bXSx0aGlzLnBsYWNlZD1TLmVtcHR5O2ZvcihsZXQgcz0wO3M8PWUuZGVwdGg7cysrKXtsZXQgaT1lLm5vZGUocyk7dGhpcy5mcm9udGllci5wdXNoKHt0eXBlOmkudHlwZSxtYXRjaDppLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcihzKSl9KX1mb3IobGV0IHM9ZS5kZXB0aDtzPjA7cy0tKXRoaXMucGxhY2VkPVMuZnJvbShlLm5vZGUocykuY29weSh0aGlzLnBsYWNlZCkpfWdldCBkZXB0aCgpe3JldHVybiB0aGlzLmZyb250aWVyLmxlbmd0aC0xfWZpdCgpe2Zvcig7dGhpcy51bnBsYWNlZC5zaXplOyl7bGV0IGM9dGhpcy5maW5kRml0dGFibGUoKTtjP3RoaXMucGxhY2VOb2RlcyhjKTp0aGlzLm9wZW5Nb3JlKCl8fHRoaXMuZHJvcE5vZGUoKX1sZXQgZT10aGlzLm11c3RNb3ZlSW5saW5lKCksdD10aGlzLnBsYWNlZC5zaXplLXRoaXMuZGVwdGgtdGhpcy4kZnJvbS5kZXB0aCxyPXRoaXMuJGZyb20scz10aGlzLmNsb3NlKGU8MD90aGlzLiR0bzpyLmRvYy5yZXNvbHZlKGUpKTtpZighcylyZXR1cm4gbnVsbDtsZXQgaT10aGlzLnBsYWNlZCxvPXIuZGVwdGgsbD1zLmRlcHRoO2Zvcig7byYmbCYmaS5jaGlsZENvdW50PT0xOylpPWkuZmlyc3RDaGlsZC5jb250ZW50LG8tLSxsLS07bGV0IGE9bmV3IEUoaSxvLGwpO3JldHVybiBlPi0xP25ldyBhZShyLnBvcyxlLHRoaXMuJHRvLnBvcyx0aGlzLiR0by5lbmQoKSxhLHQpOmEuc2l6ZXx8ci5wb3MhPXRoaXMuJHRvLnBvcz9uZXcgcmUoci5wb3Mscy5wb3MsYSk6bnVsbH1maW5kRml0dGFibGUoKXtsZXQgZT10aGlzLnVucGxhY2VkLm9wZW5TdGFydDtmb3IobGV0IHQ9dGhpcy51bnBsYWNlZC5jb250ZW50LHI9MCxzPXRoaXMudW5wbGFjZWQub3BlbkVuZDtyPGU7cisrKXtsZXQgaT10LmZpcnN0Q2hpbGQ7aWYodC5jaGlsZENvdW50PjEmJihzPTApLGkudHlwZS5zcGVjLmlzb2xhdGluZyYmczw9cil7ZT1yO2JyZWFrfXQ9aS5jb250ZW50fWZvcihsZXQgdD0xO3Q8PTI7dCsrKWZvcihsZXQgcj10PT0xP2U6dGhpcy51bnBsYWNlZC5vcGVuU3RhcnQ7cj49MDtyLS0pe2xldCBzLGk9bnVsbDtyPyhpPXRpKHRoaXMudW5wbGFjZWQuY29udGVudCxyLTEpLmZpcnN0Q2hpbGQscz1pLmNvbnRlbnQpOnM9dGhpcy51bnBsYWNlZC5jb250ZW50O2xldCBvPXMuZmlyc3RDaGlsZDtmb3IobGV0IGw9dGhpcy5kZXB0aDtsPj0wO2wtLSl7bGV0e3R5cGU6YSxtYXRjaDpjfT10aGlzLmZyb250aWVyW2xdLHUsZD1udWxsO2lmKHQ9PTEmJihvP2MubWF0Y2hUeXBlKG8udHlwZSl8fChkPWMuZmlsbEJlZm9yZShTLmZyb20obyksITEpKTppJiZhLmNvbXBhdGlibGVDb250ZW50KGkudHlwZSkpKXJldHVybntzbGljZURlcHRoOnIsZnJvbnRpZXJEZXB0aDpsLHBhcmVudDppLGluamVjdDpkfTtpZih0PT0yJiZvJiYodT1jLmZpbmRXcmFwcGluZyhvLnR5cGUpKSlyZXR1cm57c2xpY2VEZXB0aDpyLGZyb250aWVyRGVwdGg6bCxwYXJlbnQ6aSx3cmFwOnV9O2lmKGkmJmMubWF0Y2hUeXBlKGkudHlwZSkpYnJlYWt9fX1vcGVuTW9yZSgpe2xldHtjb250ZW50OmUsb3BlblN0YXJ0OnQsb3BlbkVuZDpyfT10aGlzLnVucGxhY2VkLHM9dGkoZSx0KTtyZXR1cm4hcy5jaGlsZENvdW50fHxzLmZpcnN0Q2hpbGQuaXNMZWFmPyExOih0aGlzLnVucGxhY2VkPW5ldyBFKGUsdCsxLE1hdGgubWF4KHIscy5zaXplK3Q+PWUuc2l6ZS1yP3QrMTowKSksITApfWRyb3BOb2RlKCl7bGV0e2NvbnRlbnQ6ZSxvcGVuU3RhcnQ6dCxvcGVuRW5kOnJ9PXRoaXMudW5wbGFjZWQscz10aShlLHQpO2lmKHMuY2hpbGRDb3VudDw9MSYmdD4wKXtsZXQgaT1lLnNpemUtdDw9dCtzLnNpemU7dGhpcy51bnBsYWNlZD1uZXcgRShDbihlLHQtMSwxKSx0LTEsaT90LTE6cil9ZWxzZSB0aGlzLnVucGxhY2VkPW5ldyBFKENuKGUsdCwxKSx0LHIpfXBsYWNlTm9kZXMoe3NsaWNlRGVwdGg6ZSxmcm9udGllckRlcHRoOnQscGFyZW50OnIsaW5qZWN0OnMsd3JhcDppfSl7Zm9yKDt0aGlzLmRlcHRoPnQ7KXRoaXMuY2xvc2VGcm9udGllck5vZGUoKTtpZihpKWZvcihsZXQgbT0wO208aS5sZW5ndGg7bSsrKXRoaXMub3BlbkZyb250aWVyTm9kZShpW21dKTtsZXQgbz10aGlzLnVucGxhY2VkLGw9cj9yLmNvbnRlbnQ6by5jb250ZW50LGE9by5vcGVuU3RhcnQtZSxjPTAsdT1bXSx7bWF0Y2g6ZCx0eXBlOmh9PXRoaXMuZnJvbnRpZXJbdF07aWYocyl7Zm9yKGxldCBtPTA7bTxzLmNoaWxkQ291bnQ7bSsrKXUucHVzaChzLmNoaWxkKG0pKTtkPWQubWF0Y2hGcmFnbWVudChzKX1sZXQgZj1sLnNpemUrZS0oby5jb250ZW50LnNpemUtby5vcGVuRW5kKTtmb3IoO2M8bC5jaGlsZENvdW50Oyl7bGV0IG09bC5jaGlsZChjKSxnPWQubWF0Y2hUeXBlKG0udHlwZSk7aWYoIWcpYnJlYWs7YysrLChjPjF8fGE9PTB8fG0uY29udGVudC5zaXplKSYmKGQ9Zyx1LnB1c2goS2MobS5tYXJrKGguYWxsb3dlZE1hcmtzKG0ubWFya3MpKSxjPT0xP2E6MCxjPT1sLmNoaWxkQ291bnQ/ZjotMSkpKX1sZXQgcD1jPT1sLmNoaWxkQ291bnQ7cHx8KGY9LTEpLHRoaXMucGxhY2VkPVRuKHRoaXMucGxhY2VkLHQsUy5mcm9tKHUpKSx0aGlzLmZyb250aWVyW3RdLm1hdGNoPWQscCYmZjwwJiZyJiZyLnR5cGU9PXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0udHlwZSYmdGhpcy5mcm9udGllci5sZW5ndGg+MSYmdGhpcy5jbG9zZUZyb250aWVyTm9kZSgpO2ZvcihsZXQgbT0wLGc9bDttPGY7bSsrKXtsZXQgeT1nLmxhc3RDaGlsZDt0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6eS50eXBlLG1hdGNoOnkuY29udGVudE1hdGNoQXQoeS5jaGlsZENvdW50KX0pLGc9eS5jb250ZW50fXRoaXMudW5wbGFjZWQ9cD9lPT0wP0UuZW1wdHk6bmV3IEUoQ24oby5jb250ZW50LGUtMSwxKSxlLTEsZjwwP28ub3BlbkVuZDplLTEpOm5ldyBFKENuKG8uY29udGVudCxlLGMpLG8ub3BlblN0YXJ0LG8ub3BlbkVuZCl9bXVzdE1vdmVJbmxpbmUoKXtpZighdGhpcy4kdG8ucGFyZW50LmlzVGV4dGJsb2NrKXJldHVybi0xO2xldCBlPXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0sdDtpZighZS50eXBlLmlzVGV4dGJsb2NrfHwhbmkodGhpcy4kdG8sdGhpcy4kdG8uZGVwdGgsZS50eXBlLGUubWF0Y2gsITEpfHx0aGlzLiR0by5kZXB0aD09dGhpcy5kZXB0aCYmKHQ9dGhpcy5maW5kQ2xvc2VMZXZlbCh0aGlzLiR0bykpJiZ0LmRlcHRoPT10aGlzLmRlcHRoKXJldHVybi0xO2xldHtkZXB0aDpyfT10aGlzLiR0byxzPXRoaXMuJHRvLmFmdGVyKHIpO2Zvcig7cj4xJiZzPT10aGlzLiR0by5lbmQoLS1yKTspKytzO3JldHVybiBzfWZpbmRDbG9zZUxldmVsKGUpe2U6Zm9yKGxldCB0PU1hdGgubWluKHRoaXMuZGVwdGgsZS5kZXB0aCk7dD49MDt0LS0pe2xldHttYXRjaDpyLHR5cGU6c309dGhpcy5mcm9udGllclt0XSxpPXQ8ZS5kZXB0aCYmZS5lbmQodCsxKT09ZS5wb3MrKGUuZGVwdGgtKHQrMSkpLG89bmkoZSx0LHMscixpKTtpZihvKXtmb3IobGV0IGw9dC0xO2w+PTA7bC0tKXtsZXR7bWF0Y2g6YSx0eXBlOmN9PXRoaXMuZnJvbnRpZXJbbF0sdT1uaShlLGwsYyxhLCEwKTtpZighdXx8dS5jaGlsZENvdW50KWNvbnRpbnVlIGV9cmV0dXJue2RlcHRoOnQsZml0Om8sbW92ZTppP2UuZG9jLnJlc29sdmUoZS5hZnRlcih0KzEpKTplfX19fWNsb3NlKGUpe2xldCB0PXRoaXMuZmluZENsb3NlTGV2ZWwoZSk7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKDt0aGlzLmRlcHRoPnQuZGVwdGg7KXRoaXMuY2xvc2VGcm9udGllck5vZGUoKTt0LmZpdC5jaGlsZENvdW50JiYodGhpcy5wbGFjZWQ9VG4odGhpcy5wbGFjZWQsdC5kZXB0aCx0LmZpdCkpLGU9dC5tb3ZlO2ZvcihsZXQgcj10LmRlcHRoKzE7cjw9ZS5kZXB0aDtyKyspe2xldCBzPWUubm9kZShyKSxpPXMudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShzLmNvbnRlbnQsITAsZS5pbmRleChyKSk7dGhpcy5vcGVuRnJvbnRpZXJOb2RlKHMudHlwZSxzLmF0dHJzLGkpfXJldHVybiBlfW9wZW5Gcm9udGllck5vZGUoZSx0PW51bGwscil7bGV0IHM9dGhpcy5mcm9udGllclt0aGlzLmRlcHRoXTtzLm1hdGNoPXMubWF0Y2gubWF0Y2hUeXBlKGUpLHRoaXMucGxhY2VkPVRuKHRoaXMucGxhY2VkLHRoaXMuZGVwdGgsUy5mcm9tKGUuY3JlYXRlKHQscikpKSx0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6ZSxtYXRjaDplLmNvbnRlbnRNYXRjaH0pfWNsb3NlRnJvbnRpZXJOb2RlKCl7bGV0IHQ9dGhpcy5mcm9udGllci5wb3AoKS5tYXRjaC5maWxsQmVmb3JlKFMuZW1wdHksITApO3QuY2hpbGRDb3VudCYmKHRoaXMucGxhY2VkPVRuKHRoaXMucGxhY2VkLHRoaXMuZnJvbnRpZXIubGVuZ3RoLHQpKX19ZnVuY3Rpb24gQ24obixlLHQpe3JldHVybiBlPT0wP24uY3V0QnlJbmRleCh0LG4uY2hpbGRDb3VudCk6bi5yZXBsYWNlQ2hpbGQoMCxuLmZpcnN0Q2hpbGQuY29weShDbihuLmZpcnN0Q2hpbGQuY29udGVudCxlLTEsdCkpKX1mdW5jdGlvbiBUbihuLGUsdCl7cmV0dXJuIGU9PTA/bi5hcHBlbmQodCk6bi5yZXBsYWNlQ2hpbGQobi5jaGlsZENvdW50LTEsbi5sYXN0Q2hpbGQuY29weShUbihuLmxhc3RDaGlsZC5jb250ZW50LGUtMSx0KSkpfWZ1bmN0aW9uIHRpKG4sZSl7Zm9yKGxldCB0PTA7dDxlO3QrKyluPW4uZmlyc3RDaGlsZC5jb250ZW50O3JldHVybiBufWZ1bmN0aW9uIEtjKG4sZSx0KXtpZihlPD0wKXJldHVybiBuO2xldCByPW4uY29udGVudDtyZXR1cm4gZT4xJiYocj1yLnJlcGxhY2VDaGlsZCgwLEtjKHIuZmlyc3RDaGlsZCxlLTEsci5jaGlsZENvdW50PT0xP3QtMTowKSkpLGU+MCYmKHI9bi50eXBlLmNvbnRlbnRNYXRjaC5maWxsQmVmb3JlKHIpLmFwcGVuZChyKSx0PD0wJiYocj1yLmFwcGVuZChuLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQocikuZmlsbEJlZm9yZShTLmVtcHR5LCEwKSkpKSxuLmNvcHkocil9ZnVuY3Rpb24gbmkobixlLHQscixzKXtsZXQgaT1uLm5vZGUoZSksbz1zP24uaW5kZXhBZnRlcihlKTpuLmluZGV4KGUpO2lmKG89PWkuY2hpbGRDb3VudCYmIXQuY29tcGF0aWJsZUNvbnRlbnQoaS50eXBlKSlyZXR1cm4gbnVsbDtsZXQgbD1yLmZpbGxCZWZvcmUoaS5jb250ZW50LCEwLG8pO3JldHVybiBsJiYhTGYodCxpLmNvbnRlbnQsbyk/bDpudWxsfWZ1bmN0aW9uIExmKG4sZSx0KXtmb3IobGV0IHI9dDtyPGUuY2hpbGRDb3VudDtyKyspaWYoIW4uYWxsb3dzTWFya3MoZS5jaGlsZChyKS5tYXJrcykpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gUGYobil7cmV0dXJuIG4uc3BlYy5kZWZpbmluZ3x8bi5zcGVjLmRlZmluaW5nRm9yQ29udGVudH1mdW5jdGlvbiB6ZihuLGUsdCxyKXtpZighci5zaXplKXJldHVybiBuLmRlbGV0ZVJhbmdlKGUsdCk7bGV0IHM9bi5kb2MucmVzb2x2ZShlKSxpPW4uZG9jLnJlc29sdmUodCk7aWYoV2MocyxpLHIpKXJldHVybiBuLnN0ZXAobmV3IHJlKGUsdCxyKSk7bGV0IG89R2MocyxpKTtvW28ubGVuZ3RoLTFdPT0wJiZvLnBvcCgpO2xldCBsPS0ocy5kZXB0aCsxKTtvLnVuc2hpZnQobCk7Zm9yKGxldCBoPXMuZGVwdGgsZj1zLnBvcy0xO2g+MDtoLS0sZi0tKXtsZXQgcD1zLm5vZGUoaCkudHlwZS5zcGVjO2lmKHAuZGVmaW5pbmd8fHAuZGVmaW5pbmdBc0NvbnRleHR8fHAuaXNvbGF0aW5nKWJyZWFrO28uaW5kZXhPZihoKT4tMT9sPWg6cy5iZWZvcmUoaCk9PWYmJm8uc3BsaWNlKDEsMCwtaCl9bGV0IGE9by5pbmRleE9mKGwpLGM9W10sdT1yLm9wZW5TdGFydDtmb3IobGV0IGg9ci5jb250ZW50LGY9MDs7ZisrKXtsZXQgcD1oLmZpcnN0Q2hpbGQ7aWYoYy5wdXNoKHApLGY9PXIub3BlblN0YXJ0KWJyZWFrO2g9cC5jb250ZW50fWZvcihsZXQgaD11LTE7aD49MDtoLS0pe2xldCBmPWNbaF0scD1QZihmLnR5cGUpO2lmKHAmJiFmLnNhbWVNYXJrdXAocy5ub2RlKE1hdGguYWJzKGwpLTEpKSl1PWg7ZWxzZSBpZihwfHwhZi50eXBlLmlzVGV4dGJsb2NrKWJyZWFrfWZvcihsZXQgaD1yLm9wZW5TdGFydDtoPj0wO2gtLSl7bGV0IGY9KGgrdSsxKSUoci5vcGVuU3RhcnQrMSkscD1jW2ZdO2lmKHApZm9yKGxldCBtPTA7bTxvLmxlbmd0aDttKyspe2xldCBnPW9bKG0rYSklby5sZW5ndGhdLHk9ITA7ZzwwJiYoeT0hMSxnPS1nKTtsZXQgaz1zLm5vZGUoZy0xKSxiPXMuaW5kZXgoZy0xKTtpZihrLmNhblJlcGxhY2VXaXRoKGIsYixwLnR5cGUscC5tYXJrcykpcmV0dXJuIG4ucmVwbGFjZShzLmJlZm9yZShnKSx5P2kuYWZ0ZXIoZyk6dCxuZXcgRShKYyhyLmNvbnRlbnQsMCxyLm9wZW5TdGFydCxmKSxmLHIub3BlbkVuZCkpfX1sZXQgZD1uLnN0ZXBzLmxlbmd0aDtmb3IobGV0IGg9by5sZW5ndGgtMTtoPj0wJiYobi5yZXBsYWNlKGUsdCxyKSwhKG4uc3RlcHMubGVuZ3RoPmQpKTtoLS0pe2xldCBmPW9baF07ZjwwfHwoZT1zLmJlZm9yZShmKSx0PWkuYWZ0ZXIoZikpfX1mdW5jdGlvbiBKYyhuLGUsdCxyLHMpe2lmKGU8dCl7bGV0IGk9bi5maXJzdENoaWxkO249bi5yZXBsYWNlQ2hpbGQoMCxpLmNvcHkoSmMoaS5jb250ZW50LGUrMSx0LHIsaSkpKX1pZihlPnIpe2xldCBpPXMuY29udGVudE1hdGNoQXQoMCksbz1pLmZpbGxCZWZvcmUobikuYXBwZW5kKG4pO249by5hcHBlbmQoaS5tYXRjaEZyYWdtZW50KG8pLmZpbGxCZWZvcmUoUy5lbXB0eSwhMCkpfXJldHVybiBufWZ1bmN0aW9uICRmKG4sZSx0LHIpe2lmKCFyLmlzSW5saW5lJiZlPT10JiZuLmRvYy5yZXNvbHZlKGUpLnBhcmVudC5jb250ZW50LnNpemUpe2xldCBzPUlmKG4uZG9jLGUsci50eXBlKTtzIT1udWxsJiYoZT10PXMpfW4ucmVwbGFjZVJhbmdlKGUsdCxuZXcgRShTLmZyb20ociksMCwwKSl9ZnVuY3Rpb24gQmYobixlLHQpe2xldCByPW4uZG9jLnJlc29sdmUoZSkscz1uLmRvYy5yZXNvbHZlKHQpO2lmKHIucGFyZW50LmlzVGV4dGJsb2NrJiZzLnBhcmVudC5pc1RleHRibG9jayYmci5zdGFydCgpIT1zLnN0YXJ0KCkmJnIucGFyZW50T2Zmc2V0PT0wJiZzLnBhcmVudE9mZnNldD09MCl7bGV0IG89ci5zaGFyZWREZXB0aCh0KSxsPSExO2ZvcihsZXQgYT1yLmRlcHRoO2E+bzthLS0pci5ub2RlKGEpLnR5cGUuc3BlYy5pc29sYXRpbmcmJihsPSEwKTtmb3IobGV0IGE9cy5kZXB0aDthPm87YS0tKXMubm9kZShhKS50eXBlLnNwZWMuaXNvbGF0aW5nJiYobD0hMCk7aWYoIWwpe2ZvcihsZXQgYT1yLmRlcHRoO2E+MCYmZT09ci5zdGFydChhKTthLS0pZT1yLmJlZm9yZShhKTtmb3IobGV0IGE9cy5kZXB0aDthPjAmJnQ9PXMuc3RhcnQoYSk7YS0tKXQ9cy5iZWZvcmUoYSk7cj1uLmRvYy5yZXNvbHZlKGUpLHM9bi5kb2MucmVzb2x2ZSh0KX19bGV0IGk9R2MocixzKTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKyl7bGV0IGw9aVtvXSxhPW89PWkubGVuZ3RoLTE7aWYoYSYmbD09MHx8ci5ub2RlKGwpLnR5cGUuY29udGVudE1hdGNoLnZhbGlkRW5kKXJldHVybiBuLmRlbGV0ZShyLnN0YXJ0KGwpLHMuZW5kKGwpKTtpZihsPjAmJihhfHxyLm5vZGUobC0xKS5jYW5SZXBsYWNlKHIuaW5kZXgobC0xKSxzLmluZGV4QWZ0ZXIobC0xKSkpKXJldHVybiBuLmRlbGV0ZShyLmJlZm9yZShsKSxzLmFmdGVyKGwpKX1mb3IobGV0IG89MTtvPD1yLmRlcHRoJiZvPD1zLmRlcHRoO28rKylpZihlLXIuc3RhcnQobyk9PXIuZGVwdGgtbyYmdD5yLmVuZChvKSYmcy5lbmQobyktdCE9cy5kZXB0aC1vJiZyLnN0YXJ0KG8tMSk9PXMuc3RhcnQoby0xKSYmci5ub2RlKG8tMSkuY2FuUmVwbGFjZShyLmluZGV4KG8tMSkscy5pbmRleChvLTEpKSlyZXR1cm4gbi5kZWxldGUoci5iZWZvcmUobyksdCk7bi5kZWxldGUoZSx0KX1mdW5jdGlvbiBHYyhuLGUpe2xldCB0PVtdLHI9TWF0aC5taW4obi5kZXB0aCxlLmRlcHRoKTtmb3IobGV0IHM9cjtzPj0wO3MtLSl7bGV0IGk9bi5zdGFydChzKTtpZihpPG4ucG9zLShuLmRlcHRoLXMpfHxlLmVuZChzKT5lLnBvcysoZS5kZXB0aC1zKXx8bi5ub2RlKHMpLnR5cGUuc3BlYy5pc29sYXRpbmd8fGUubm9kZShzKS50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrOyhpPT1lLnN0YXJ0KHMpfHxzPT1uLmRlcHRoJiZzPT1lLmRlcHRoJiZuLnBhcmVudC5pbmxpbmVDb250ZW50JiZlLnBhcmVudC5pbmxpbmVDb250ZW50JiZzJiZlLnN0YXJ0KHMtMSk9PWktMSkmJnQucHVzaChzKX1yZXR1cm4gdH1jbGFzcyBvbiBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMucG9zPWUsdGhpcy5hdHRyPXQsdGhpcy52YWx1ZT1yfWFwcGx5KGUpe2xldCB0PWUubm9kZUF0KHRoaXMucG9zKTtpZighdClyZXR1cm4gc2UuZmFpbCgiTm8gbm9kZSBhdCBhdHRyaWJ1dGUgc3RlcCdzIHBvc2l0aW9uIik7bGV0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGkgaW4gdC5hdHRycylyW2ldPXQuYXR0cnNbaV07clt0aGlzLmF0dHJdPXRoaXMudmFsdWU7bGV0IHM9dC50eXBlLmNyZWF0ZShyLG51bGwsdC5tYXJrcyk7cmV0dXJuIHNlLmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgRShTLmZyb20ocyksMCx0LmlzTGVhZj8wOjEpKX1nZXRNYXAoKXtyZXR1cm4gRWUuZW1wdHl9aW52ZXJ0KGUpe3JldHVybiBuZXcgb24odGhpcy5wb3MsdGhpcy5hdHRyLGUubm9kZUF0KHRoaXMucG9zKS5hdHRyc1t0aGlzLmF0dHJdKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IG9uKHQucG9zLHRoaXMuYXR0cix0aGlzLnZhbHVlKX10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6ImF0dHIiLHBvczp0aGlzLnBvcyxhdHRyOnRoaXMuYXR0cix2YWx1ZTp0aGlzLnZhbHVlfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5wb3MhPSJudW1iZXIifHx0eXBlb2YgdC5hdHRyIT0ic3RyaW5nIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgQXR0clN0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IG9uKHQucG9zLHQuYXR0cix0LnZhbHVlKX19YmUuanNvbklEKCJhdHRyIixvbik7Y2xhc3MgR24gZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy5hdHRyPWUsdGhpcy52YWx1ZT10fWFwcGx5KGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBzIGluIGUuYXR0cnMpdFtzXT1lLmF0dHJzW3NdO3RbdGhpcy5hdHRyXT10aGlzLnZhbHVlO2xldCByPWUudHlwZS5jcmVhdGUodCxlLmNvbnRlbnQsZS5tYXJrcyk7cmV0dXJuIHNlLm9rKHIpfWdldE1hcCgpe3JldHVybiBFZS5lbXB0eX1pbnZlcnQoZSl7cmV0dXJuIG5ldyBHbih0aGlzLmF0dHIsZS5hdHRyc1t0aGlzLmF0dHJdKX1tYXAoZSl7cmV0dXJuIHRoaXN9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJkb2NBdHRyIixhdHRyOnRoaXMuYXR0cix2YWx1ZTp0aGlzLnZhbHVlfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5hdHRyIT0ic3RyaW5nIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgRG9jQXR0clN0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEduKHQuYXR0cix0LnZhbHVlKX19YmUuanNvbklEKCJkb2NBdHRyIixHbik7bGV0IGFuPWNsYXNzIGV4dGVuZHMgRXJyb3J7fTthbj1mdW5jdGlvbiBuKGUpe2xldCB0PUVycm9yLmNhbGwodGhpcyxlKTtyZXR1cm4gdC5fX3Byb3RvX189bi5wcm90b3R5cGUsdH07YW4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTthbi5wcm90b3R5cGUuY29uc3RydWN0b3I9YW47YW4ucHJvdG90eXBlLm5hbWU9IlRyYW5zZm9ybUVycm9yIjtjbGFzcyBRY3tjb25zdHJ1Y3RvcihlKXt0aGlzLmRvYz1lLHRoaXMuc3RlcHM9W10sdGhpcy5kb2NzPVtdLHRoaXMubWFwcGluZz1uZXcgSm59Z2V0IGJlZm9yZSgpe3JldHVybiB0aGlzLmRvY3MubGVuZ3RoP3RoaXMuZG9jc1swXTp0aGlzLmRvY31zdGVwKGUpe2xldCB0PXRoaXMubWF5YmVTdGVwKGUpO2lmKHQuZmFpbGVkKXRocm93IG5ldyBhbih0LmZhaWxlZCk7cmV0dXJuIHRoaXN9bWF5YmVTdGVwKGUpe2xldCB0PWUuYXBwbHkodGhpcy5kb2MpO3JldHVybiB0LmZhaWxlZHx8dGhpcy5hZGRTdGVwKGUsdC5kb2MpLHR9Z2V0IGRvY0NoYW5nZWQoKXtyZXR1cm4gdGhpcy5zdGVwcy5sZW5ndGg+MH1jaGFuZ2VkUmFuZ2UoKXtsZXQgZT0xZTksdD0tMWU5O2ZvcihsZXQgcj0wO3I8dGhpcy5tYXBwaW5nLm1hcHMubGVuZ3RoO3IrKyl7bGV0IHM9dGhpcy5tYXBwaW5nLm1hcHNbcl07ciYmKGU9cy5tYXAoZSwxKSx0PXMubWFwKHQsLTEpKSxzLmZvckVhY2goKGksbyxsLGEpPT57ZT1NYXRoLm1pbihlLGwpLHQ9TWF0aC5tYXgodCxhKX0pfXJldHVybiBlPT0xZTk/bnVsbDp7ZnJvbTplLHRvOnR9fWFkZFN0ZXAoZSx0KXt0aGlzLmRvY3MucHVzaCh0aGlzLmRvYyksdGhpcy5zdGVwcy5wdXNoKGUpLHRoaXMubWFwcGluZy5hcHBlbmRNYXAoZS5nZXRNYXAoKSksdGhpcy5kb2M9dH1yZXBsYWNlKGUsdD1lLHI9RS5lbXB0eSl7bGV0IHM9SXModGhpcy5kb2MsZSx0LHIpO3JldHVybiBzJiZ0aGlzLnN0ZXAocyksdGhpc31yZXBsYWNlV2l0aChlLHQscil7cmV0dXJuIHRoaXMucmVwbGFjZShlLHQsbmV3IEUoUy5mcm9tKHIpLDAsMCkpfWRlbGV0ZShlLHQpe3JldHVybiB0aGlzLnJlcGxhY2UoZSx0LEUuZW1wdHkpfWluc2VydChlLHQpe3JldHVybiB0aGlzLnJlcGxhY2VXaXRoKGUsZSx0KX1yZXBsYWNlUmFuZ2UoZSx0LHIpe3JldHVybiB6Zih0aGlzLGUsdCxyKSx0aGlzfXJlcGxhY2VSYW5nZVdpdGgoZSx0LHIpe3JldHVybiAkZih0aGlzLGUsdCxyKSx0aGlzfWRlbGV0ZVJhbmdlKGUsdCl7cmV0dXJuIEJmKHRoaXMsZSx0KSx0aGlzfWxpZnQoZSx0KXtyZXR1cm4gdmYodGhpcyxlLHQpLHRoaXN9am9pbihlLHQ9MSl7cmV0dXJuIFJmKHRoaXMsZSx0KSx0aGlzfXdyYXAoZSx0KXtyZXR1cm4gVGYodGhpcyxlLHQpLHRoaXN9c2V0QmxvY2tUeXBlKGUsdD1lLHIscz1udWxsKXtyZXR1cm4gTWYodGhpcyxlLHQscixzKSx0aGlzfXNldE5vZGVNYXJrdXAoZSx0LHI9bnVsbCxzKXtyZXR1cm4gQWYodGhpcyxlLHQscixzKSx0aGlzfXNldE5vZGVBdHRyaWJ1dGUoZSx0LHIpe3JldHVybiB0aGlzLnN0ZXAobmV3IG9uKGUsdCxyKSksdGhpc31zZXREb2NBdHRyaWJ1dGUoZSx0KXtyZXR1cm4gdGhpcy5zdGVwKG5ldyBHbihlLHQpKSx0aGlzfWFkZE5vZGVNYXJrKGUsdCl7cmV0dXJuIHRoaXMuc3RlcChuZXcgd3QoZSx0KSksdGhpc31yZW1vdmVOb2RlTWFyayhlLHQpe2xldCByPXRoaXMuZG9jLm5vZGVBdChlKTtpZighcil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gbm9kZSBhdCBwb3NpdGlvbiAiK2UpO2lmKHQgaW5zdGFuY2VvZiBXKXQuaXNJblNldChyLm1hcmtzKSYmdGhpcy5zdGVwKG5ldyBWdChlLHQpKTtlbHNle2xldCBzPXIubWFya3MsaSxvPVtdO2Zvcig7aT10LmlzSW5TZXQocyk7KW8ucHVzaChuZXcgVnQoZSxpKSkscz1pLnJlbW92ZUZyb21TZXQocyk7Zm9yKGxldCBsPW8ubGVuZ3RoLTE7bD49MDtsLS0pdGhpcy5zdGVwKG9bbF0pfXJldHVybiB0aGlzfXNwbGl0KGUsdD0xLHIpe3JldHVybiBPZih0aGlzLGUsdCxyKSx0aGlzfWFkZE1hcmsoZSx0LHIpe3JldHVybiBiZih0aGlzLGUsdCxyKSx0aGlzfXJlbW92ZU1hcmsoZSx0LHIpe3JldHVybiB4Zih0aGlzLGUsdCxyKSx0aGlzfWNsZWFySW5jb21wYXRpYmxlKGUsdCxyKXtyZXR1cm4gZm8odGhpcyxlLHQsciksdGhpc319Y29uc3Qgcmk9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBJe2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLiRhbmNob3I9ZSx0aGlzLiRoZWFkPXQsdGhpcy5yYW5nZXM9cnx8W25ldyBYYyhlLm1pbih0KSxlLm1heCh0KSldfWdldCBhbmNob3IoKXtyZXR1cm4gdGhpcy4kYW5jaG9yLnBvc31nZXQgaGVhZCgpe3JldHVybiB0aGlzLiRoZWFkLnBvc31nZXQgZnJvbSgpe3JldHVybiB0aGlzLiRmcm9tLnBvc31nZXQgdG8oKXtyZXR1cm4gdGhpcy4kdG8ucG9zfWdldCAkZnJvbSgpe3JldHVybiB0aGlzLnJhbmdlc1swXS4kZnJvbX1nZXQgJHRvKCl7cmV0dXJuIHRoaXMucmFuZ2VzWzBdLiR0b31nZXQgZW1wdHkoKXtsZXQgZT10aGlzLnJhbmdlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZihlW3RdLiRmcm9tLnBvcyE9ZVt0XS4kdG8ucG9zKXJldHVybiExO3JldHVybiEwfWNvbnRlbnQoKXtyZXR1cm4gdGhpcy4kZnJvbS5kb2Muc2xpY2UodGhpcy5mcm9tLHRoaXMudG8sITApfXJlcGxhY2UoZSx0PUUuZW1wdHkpe2xldCByPXQuY29udGVudC5sYXN0Q2hpbGQscz1udWxsO2ZvcihsZXQgbD0wO2w8dC5vcGVuRW5kO2wrKylzPXIscj1yLmxhc3RDaGlsZDtsZXQgaT1lLnN0ZXBzLmxlbmd0aCxvPXRoaXMucmFuZ2VzO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKXtsZXR7JGZyb206YSwkdG86Y309b1tsXSx1PWUubWFwcGluZy5zbGljZShpKTtlLnJlcGxhY2VSYW5nZSh1Lm1hcChhLnBvcyksdS5tYXAoYy5wb3MpLGw/RS5lbXB0eTp0KSxsPT0wJiZSbChlLGksKHI/ci5pc0lubGluZTpzJiZzLmlzVGV4dGJsb2NrKT8tMToxKX19cmVwbGFjZVdpdGgoZSx0KXtsZXQgcj1lLnN0ZXBzLmxlbmd0aCxzPXRoaXMucmFuZ2VzO2ZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKXtsZXR7JGZyb206bywkdG86bH09c1tpXSxhPWUubWFwcGluZy5zbGljZShyKSxjPWEubWFwKG8ucG9zKSx1PWEubWFwKGwucG9zKTtpP2UuZGVsZXRlUmFuZ2UoYyx1KTooZS5yZXBsYWNlUmFuZ2VXaXRoKGMsdSx0KSxSbChlLHIsdC5pc0lubGluZT8tMToxKSl9fXN0YXRpYyBmaW5kRnJvbShlLHQscj0hMSl7bGV0IHM9ZS5wYXJlbnQuaW5saW5lQ29udGVudD9uZXcgRChlKTplbihlLm5vZGUoMCksZS5wYXJlbnQsZS5wb3MsZS5pbmRleCgpLHQscik7aWYocylyZXR1cm4gcztmb3IobGV0IGk9ZS5kZXB0aC0xO2k+PTA7aS0tKXtsZXQgbz10PDA/ZW4oZS5ub2RlKDApLGUubm9kZShpKSxlLmJlZm9yZShpKzEpLGUuaW5kZXgoaSksdCxyKTplbihlLm5vZGUoMCksZS5ub2RlKGkpLGUuYWZ0ZXIoaSsxKSxlLmluZGV4KGkpKzEsdCxyKTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfXN0YXRpYyBuZWFyKGUsdD0xKXtyZXR1cm4gdGhpcy5maW5kRnJvbShlLHQpfHx0aGlzLmZpbmRGcm9tKGUsLXQpfHxuZXcgQWUoZS5ub2RlKDApKX1zdGF0aWMgYXRTdGFydChlKXtyZXR1cm4gZW4oZSxlLDAsMCwxKXx8bmV3IEFlKGUpfXN0YXRpYyBhdEVuZChlKXtyZXR1cm4gZW4oZSxlLGUuY29udGVudC5zaXplLGUuY2hpbGRDb3VudCwtMSl8fG5ldyBBZShlKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZighdHx8IXQudHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgU2VsZWN0aW9uLmZyb21KU09OIik7bGV0IHI9cmlbdC50eXBlXTtpZighcil0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gc2VsZWN0aW9uIHR5cGUgJHt0LnR5cGV9IGRlZmluZWRgKTtyZXR1cm4gci5mcm9tSlNPTihlLHQpfXN0YXRpYyBqc29uSUQoZSx0KXtpZihlIGluIHJpKXRocm93IG5ldyBSYW5nZUVycm9yKCJEdXBsaWNhdGUgdXNlIG9mIHNlbGVjdGlvbiBKU09OIElEICIrZSk7cmV0dXJuIHJpW2VdPXQsdC5wcm90b3R5cGUuanNvbklEPWUsdH1nZXRCb29rbWFyaygpe3JldHVybiBELmJldHdlZW4odGhpcy4kYW5jaG9yLHRoaXMuJGhlYWQpLmdldEJvb2ttYXJrKCl9fUkucHJvdG90eXBlLnZpc2libGU9ITA7Y2xhc3MgWGN7Y29uc3RydWN0b3IoZSx0KXt0aGlzLiRmcm9tPWUsdGhpcy4kdG89dH19bGV0IE9sPSExO2Z1bmN0aW9uIE5sKG4peyFPbCYmIW4ucGFyZW50LmlubGluZUNvbnRlbnQmJihPbD0hMCl9Y2xhc3MgRCBleHRlbmRzIEl7Y29uc3RydWN0b3IoZSx0PWUpe05sKGUpLE5sKHQpLHN1cGVyKGUsdCl9Z2V0ICRjdXJzb3IoKXtyZXR1cm4gdGhpcy4kYW5jaG9yLnBvcz09dGhpcy4kaGVhZC5wb3M/dGhpcy4kaGVhZDpudWxsfW1hcChlLHQpe2xldCByPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLmhlYWQpKTtpZighci5wYXJlbnQuaW5saW5lQ29udGVudClyZXR1cm4gSS5uZWFyKHIpO2xldCBzPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLmFuY2hvcikpO3JldHVybiBuZXcgRChzLnBhcmVudC5pbmxpbmVDb250ZW50P3M6cixyKX1yZXBsYWNlKGUsdD1FLmVtcHR5KXtpZihzdXBlci5yZXBsYWNlKGUsdCksdD09RS5lbXB0eSl7bGV0IHI9dGhpcy4kZnJvbS5tYXJrc0Fjcm9zcyh0aGlzLiR0byk7ciYmZS5lbnN1cmVNYXJrcyhyKX19ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEJiZlLmFuY2hvcj09dGhpcy5hbmNob3ImJmUuaGVhZD09dGhpcy5oZWFkfWdldEJvb2ttYXJrKCl7cmV0dXJuIG5ldyBEcyh0aGlzLmFuY2hvcix0aGlzLmhlYWQpfXRvSlNPTigpe3JldHVybnt0eXBlOiJ0ZXh0IixhbmNob3I6dGhpcy5hbmNob3IsaGVhZDp0aGlzLmhlYWR9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmFuY2hvciE9Im51bWJlciJ8fHR5cGVvZiB0LmhlYWQhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBUZXh0U2VsZWN0aW9uLmZyb21KU09OIik7cmV0dXJuIG5ldyBEKGUucmVzb2x2ZSh0LmFuY2hvciksZS5yZXNvbHZlKHQuaGVhZCkpfXN0YXRpYyBjcmVhdGUoZSx0LHI9dCl7bGV0IHM9ZS5yZXNvbHZlKHQpO3JldHVybiBuZXcgdGhpcyhzLHI9PXQ/czplLnJlc29sdmUocikpfXN0YXRpYyBiZXR3ZWVuKGUsdCxyKXtsZXQgcz1lLnBvcy10LnBvcztpZigoIXJ8fHMpJiYocj1zPj0wPzE6LTEpLCF0LnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgaT1JLmZpbmRGcm9tKHQsciwhMCl8fEkuZmluZEZyb20odCwtciwhMCk7aWYoaSl0PWkuJGhlYWQ7ZWxzZSByZXR1cm4gSS5uZWFyKHQscil9cmV0dXJuIGUucGFyZW50LmlubGluZUNvbnRlbnR8fChzPT0wP2U9dDooZT0oSS5maW5kRnJvbShlLC1yLCEwKXx8SS5maW5kRnJvbShlLHIsITApKS4kYW5jaG9yLGUucG9zPHQucG9zIT1zPDAmJihlPXQpKSksbmV3IEQoZSx0KX19SS5qc29uSUQoInRleHQiLEQpO2NsYXNzIERze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5hbmNob3I9ZSx0aGlzLmhlYWQ9dH1tYXAoZSl7cmV0dXJuIG5ldyBEcyhlLm1hcCh0aGlzLmFuY2hvciksZS5tYXAodGhpcy5oZWFkKSl9cmVzb2x2ZShlKXtyZXR1cm4gRC5iZXR3ZWVuKGUucmVzb2x2ZSh0aGlzLmFuY2hvciksZS5yZXNvbHZlKHRoaXMuaGVhZCkpfX1jbGFzcyBOIGV4dGVuZHMgSXtjb25zdHJ1Y3RvcihlKXtsZXQgdD1lLm5vZGVBZnRlcixyPWUubm9kZSgwKS5yZXNvbHZlKGUucG9zK3Qubm9kZVNpemUpO3N1cGVyKGUsciksdGhpcy5ub2RlPXR9bWFwKGUsdCl7bGV0e2RlbGV0ZWQ6cixwb3M6c309dC5tYXBSZXN1bHQodGhpcy5hbmNob3IpLGk9ZS5yZXNvbHZlKHMpO3JldHVybiByP0kubmVhcihpKTpuZXcgTihpKX1jb250ZW50KCl7cmV0dXJuIG5ldyBFKFMuZnJvbSh0aGlzLm5vZGUpLDAsMCl9ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOJiZlLmFuY2hvcj09dGhpcy5hbmNob3J9dG9KU09OKCl7cmV0dXJue3R5cGU6Im5vZGUiLGFuY2hvcjp0aGlzLmFuY2hvcn19Z2V0Qm9va21hcmsoKXtyZXR1cm4gbmV3IG1vKHRoaXMuYW5jaG9yKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5hbmNob3IhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlU2VsZWN0aW9uLmZyb21KU09OIik7cmV0dXJuIG5ldyBOKGUucmVzb2x2ZSh0LmFuY2hvcikpfXN0YXRpYyBjcmVhdGUoZSx0KXtyZXR1cm4gbmV3IE4oZS5yZXNvbHZlKHQpKX1zdGF0aWMgaXNTZWxlY3RhYmxlKGUpe3JldHVybiFlLmlzVGV4dCYmZS50eXBlLnNwZWMuc2VsZWN0YWJsZSE9PSExfX1OLnByb3RvdHlwZS52aXNpYmxlPSExO0kuanNvbklEKCJub2RlIixOKTtjbGFzcyBtb3tjb25zdHJ1Y3RvcihlKXt0aGlzLmFuY2hvcj1lfW1hcChlKXtsZXR7ZGVsZXRlZDp0LHBvczpyfT1lLm1hcFJlc3VsdCh0aGlzLmFuY2hvcik7cmV0dXJuIHQ/bmV3IERzKHIscik6bmV3IG1vKHIpfXJlc29sdmUoZSl7bGV0IHQ9ZS5yZXNvbHZlKHRoaXMuYW5jaG9yKSxyPXQubm9kZUFmdGVyO3JldHVybiByJiZOLmlzU2VsZWN0YWJsZShyKT9uZXcgTih0KTpJLm5lYXIodCl9fWNsYXNzIEFlIGV4dGVuZHMgSXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLnJlc29sdmUoMCksZS5yZXNvbHZlKGUuY29udGVudC5zaXplKSl9cmVwbGFjZShlLHQ9RS5lbXB0eSl7aWYodD09RS5lbXB0eSl7ZS5kZWxldGUoMCxlLmRvYy5jb250ZW50LnNpemUpO2xldCByPUkuYXRTdGFydChlLmRvYyk7ci5lcShlLnNlbGVjdGlvbil8fGUuc2V0U2VsZWN0aW9uKHIpfWVsc2Ugc3VwZXIucmVwbGFjZShlLHQpfXRvSlNPTigpe3JldHVybnt0eXBlOiJhbGwifX1zdGF0aWMgZnJvbUpTT04oZSl7cmV0dXJuIG5ldyBBZShlKX1tYXAoZSl7cmV0dXJuIG5ldyBBZShlKX1lcShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEFlfWdldEJvb2ttYXJrKCl7cmV0dXJuIF9mfX1JLmpzb25JRCgiYWxsIixBZSk7Y29uc3QgX2Y9e21hcCgpe3JldHVybiB0aGlzfSxyZXNvbHZlKG4pe3JldHVybiBuZXcgQWUobil9fTtmdW5jdGlvbiBlbihuLGUsdCxyLHMsaT0hMSl7aWYoZS5pbmxpbmVDb250ZW50KXJldHVybiBELmNyZWF0ZShuLHQpO2ZvcihsZXQgbz1yLShzPjA/MDoxKTtzPjA/bzxlLmNoaWxkQ291bnQ6bz49MDtvKz1zKXtsZXQgbD1lLmNoaWxkKG8pO2lmKGwuaXNBdG9tKXtpZighaSYmTi5pc1NlbGVjdGFibGUobCkpcmV0dXJuIE4uY3JlYXRlKG4sdC0oczwwP2wubm9kZVNpemU6MCkpfWVsc2V7bGV0IGE9ZW4obixsLHQrcyxzPDA/bC5jaGlsZENvdW50OjAscyxpKTtpZihhKXJldHVybiBhfXQrPWwubm9kZVNpemUqc31yZXR1cm4gbnVsbH1mdW5jdGlvbiBSbChuLGUsdCl7bGV0IHI9bi5zdGVwcy5sZW5ndGgtMTtpZihyPGUpcmV0dXJuO2xldCBzPW4uc3RlcHNbcl07aWYoIShzIGluc3RhbmNlb2YgcmV8fHMgaW5zdGFuY2VvZiBhZSkpcmV0dXJuO2xldCBpPW4ubWFwcGluZy5tYXBzW3JdLG87aS5mb3JFYWNoKChsLGEsYyx1KT0+e289PW51bGwmJihvPXUpfSksbi5zZXRTZWxlY3Rpb24oSS5uZWFyKG4uZG9jLnJlc29sdmUobyksdCkpfWNvbnN0IElsPTEsbXI9MixEbD00O2NsYXNzIEhmIGV4dGVuZHMgUWN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZS5kb2MpLHRoaXMuY3VyU2VsZWN0aW9uRm9yPTAsdGhpcy51cGRhdGVkPTAsdGhpcy5tZXRhPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy50aW1lPURhdGUubm93KCksdGhpcy5jdXJTZWxlY3Rpb249ZS5zZWxlY3Rpb24sdGhpcy5zdG9yZWRNYXJrcz1lLnN0b3JlZE1hcmtzfWdldCBzZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJTZWxlY3Rpb25Gb3I8dGhpcy5zdGVwcy5sZW5ndGgmJih0aGlzLmN1clNlbGVjdGlvbj10aGlzLmN1clNlbGVjdGlvbi5tYXAodGhpcy5kb2MsdGhpcy5tYXBwaW5nLnNsaWNlKHRoaXMuY3VyU2VsZWN0aW9uRm9yKSksdGhpcy5jdXJTZWxlY3Rpb25Gb3I9dGhpcy5zdGVwcy5sZW5ndGgpLHRoaXMuY3VyU2VsZWN0aW9ufXNldFNlbGVjdGlvbihlKXtpZihlLiRmcm9tLmRvYyE9dGhpcy5kb2MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlNlbGVjdGlvbiBwYXNzZWQgdG8gc2V0U2VsZWN0aW9uIG11c3QgcG9pbnQgYXQgdGhlIGN1cnJlbnQgZG9jdW1lbnQiKTtyZXR1cm4gdGhpcy5jdXJTZWxlY3Rpb249ZSx0aGlzLmN1clNlbGVjdGlvbkZvcj10aGlzLnN0ZXBzLmxlbmd0aCx0aGlzLnVwZGF0ZWQ9KHRoaXMudXBkYXRlZHxJbCkmfm1yLHRoaXMuc3RvcmVkTWFya3M9bnVsbCx0aGlzfWdldCBzZWxlY3Rpb25TZXQoKXtyZXR1cm4odGhpcy51cGRhdGVkJklsKT4wfXNldFN0b3JlZE1hcmtzKGUpe3JldHVybiB0aGlzLnN0b3JlZE1hcmtzPWUsdGhpcy51cGRhdGVkfD1tcix0aGlzfWVuc3VyZU1hcmtzKGUpe3JldHVybiBXLnNhbWVTZXQodGhpcy5zdG9yZWRNYXJrc3x8dGhpcy5zZWxlY3Rpb24uJGZyb20ubWFya3MoKSxlKXx8dGhpcy5zZXRTdG9yZWRNYXJrcyhlKSx0aGlzfWFkZFN0b3JlZE1hcmsoZSl7cmV0dXJuIHRoaXMuZW5zdXJlTWFya3MoZS5hZGRUb1NldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSl9cmVtb3ZlU3RvcmVkTWFyayhlKXtyZXR1cm4gdGhpcy5lbnN1cmVNYXJrcyhlLnJlbW92ZUZyb21TZXQodGhpcy5zdG9yZWRNYXJrc3x8dGhpcy5zZWxlY3Rpb24uJGhlYWQubWFya3MoKSkpfWdldCBzdG9yZWRNYXJrc1NldCgpe3JldHVybih0aGlzLnVwZGF0ZWQmbXIpPjB9YWRkU3RlcChlLHQpe3N1cGVyLmFkZFN0ZXAoZSx0KSx0aGlzLnVwZGF0ZWQ9dGhpcy51cGRhdGVkJn5tcix0aGlzLnN0b3JlZE1hcmtzPW51bGx9c2V0VGltZShlKXtyZXR1cm4gdGhpcy50aW1lPWUsdGhpc31yZXBsYWNlU2VsZWN0aW9uKGUpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHRoaXMsZSksdGhpc31yZXBsYWNlU2VsZWN0aW9uV2l0aChlLHQ9ITApe2xldCByPXRoaXMuc2VsZWN0aW9uO3JldHVybiB0JiYoZT1lLm1hcmsodGhpcy5zdG9yZWRNYXJrc3x8KHIuZW1wdHk/ci4kZnJvbS5tYXJrcygpOnIuJGZyb20ubWFya3NBY3Jvc3Moci4kdG8pfHxXLm5vbmUpKSksci5yZXBsYWNlV2l0aCh0aGlzLGUpLHRoaXN9ZGVsZXRlU2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLnJlcGxhY2UodGhpcyksdGhpc31pbnNlcnRUZXh0KGUsdCxyKXtsZXQgcz10aGlzLmRvYy50eXBlLnNjaGVtYTtpZih0PT1udWxsKXJldHVybiBlP3RoaXMucmVwbGFjZVNlbGVjdGlvbldpdGgocy50ZXh0KGUpLCEwKTp0aGlzLmRlbGV0ZVNlbGVjdGlvbigpO3tpZihyPT1udWxsJiYocj10KSwhZSlyZXR1cm4gdGhpcy5kZWxldGVSYW5nZSh0LHIpO2xldCBpPXRoaXMuc3RvcmVkTWFya3M7aWYoIWkpe2xldCBvPXRoaXMuZG9jLnJlc29sdmUodCk7aT1yPT10P28ubWFya3MoKTpvLm1hcmtzQWNyb3NzKHRoaXMuZG9jLnJlc29sdmUocikpfXJldHVybiB0aGlzLnJlcGxhY2VSYW5nZVdpdGgodCxyLHMudGV4dChlLGkpKSwhdGhpcy5zZWxlY3Rpb24uZW1wdHkmJnRoaXMuc2VsZWN0aW9uLnRvPT10K2UubGVuZ3RoJiZ0aGlzLnNldFNlbGVjdGlvbihJLm5lYXIodGhpcy5zZWxlY3Rpb24uJHRvKSksdGhpc319c2V0TWV0YShlLHQpe3JldHVybiB0aGlzLm1ldGFbdHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5rZXldPXQsdGhpc31nZXRNZXRhKGUpe3JldHVybiB0aGlzLm1ldGFbdHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5rZXldfWdldCBpc0dlbmVyaWMoKXtmb3IobGV0IGUgaW4gdGhpcy5tZXRhKXJldHVybiExO3JldHVybiEwfXNjcm9sbEludG9WaWV3KCl7cmV0dXJuIHRoaXMudXBkYXRlZHw9RGwsdGhpc31nZXQgc2Nyb2xsZWRJbnRvVmlldygpe3JldHVybih0aGlzLnVwZGF0ZWQmRGwpPjB9fWZ1bmN0aW9uIExsKG4sZSl7cmV0dXJuIWV8fCFuP246bi5iaW5kKGUpfWNsYXNzIE1ue2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLm5hbWU9ZSx0aGlzLmluaXQ9TGwodC5pbml0LHIpLHRoaXMuYXBwbHk9TGwodC5hcHBseSxyKX19Y29uc3QgRmY9W25ldyBNbigiZG9jIix7aW5pdChuKXtyZXR1cm4gbi5kb2N8fG4uc2NoZW1hLnRvcE5vZGVUeXBlLmNyZWF0ZUFuZEZpbGwoKX0sYXBwbHkobil7cmV0dXJuIG4uZG9jfX0pLG5ldyBNbigic2VsZWN0aW9uIix7aW5pdChuLGUpe3JldHVybiBuLnNlbGVjdGlvbnx8SS5hdFN0YXJ0KGUuZG9jKX0sYXBwbHkobil7cmV0dXJuIG4uc2VsZWN0aW9ufX0pLG5ldyBNbigic3RvcmVkTWFya3MiLHtpbml0KG4pe3JldHVybiBuLnN0b3JlZE1hcmtzfHxudWxsfSxhcHBseShuLGUsdCxyKXtyZXR1cm4gci5zZWxlY3Rpb24uJGN1cnNvcj9uLnN0b3JlZE1hcmtzOm51bGx9fSksbmV3IE1uKCJzY3JvbGxUb1NlbGVjdGlvbiIse2luaXQoKXtyZXR1cm4gMH0sYXBwbHkobixlKXtyZXR1cm4gbi5zY3JvbGxlZEludG9WaWV3P2UrMTplfX0pXTtjbGFzcyBzaXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5wbHVnaW5zPVtdLHRoaXMucGx1Z2luc0J5S2V5PU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5maWVsZHM9RmYuc2xpY2UoKSx0JiZ0LmZvckVhY2gocj0+e2lmKHRoaXMucGx1Z2luc0J5S2V5W3Iua2V5XSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQWRkaW5nIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgYSBrZXllZCBwbHVnaW4gKCIrci5rZXkrIikiKTt0aGlzLnBsdWdpbnMucHVzaChyKSx0aGlzLnBsdWdpbnNCeUtleVtyLmtleV09cixyLnNwZWMuc3RhdGUmJnRoaXMuZmllbGRzLnB1c2gobmV3IE1uKHIua2V5LHIuc3BlYy5zdGF0ZSxyKSl9KX19Y2xhc3Mgcm57Y29uc3RydWN0b3IoZSl7dGhpcy5jb25maWc9ZX1nZXQgc2NoZW1hKCl7cmV0dXJuIHRoaXMuY29uZmlnLnNjaGVtYX1nZXQgcGx1Z2lucygpe3JldHVybiB0aGlzLmNvbmZpZy5wbHVnaW5zfWFwcGx5KGUpe3JldHVybiB0aGlzLmFwcGx5VHJhbnNhY3Rpb24oZSkuc3RhdGV9ZmlsdGVyVHJhbnNhY3Rpb24oZSx0PS0xKXtmb3IobGV0IHI9MDtyPHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoO3IrKylpZihyIT10KXtsZXQgcz10aGlzLmNvbmZpZy5wbHVnaW5zW3JdO2lmKHMuc3BlYy5maWx0ZXJUcmFuc2FjdGlvbiYmIXMuc3BlYy5maWx0ZXJUcmFuc2FjdGlvbi5jYWxsKHMsZSx0aGlzKSlyZXR1cm4hMX1yZXR1cm4hMH1hcHBseVRyYW5zYWN0aW9uKGUpe2lmKCF0aGlzLmZpbHRlclRyYW5zYWN0aW9uKGUpKXJldHVybntzdGF0ZTp0aGlzLHRyYW5zYWN0aW9uczpbXX07bGV0IHQ9W2VdLHI9dGhpcy5hcHBseUlubmVyKGUpLHM9bnVsbDtmb3IoOzspe2xldCBpPSExO2ZvcihsZXQgbz0wO288dGhpcy5jb25maWcucGx1Z2lucy5sZW5ndGg7bysrKXtsZXQgbD10aGlzLmNvbmZpZy5wbHVnaW5zW29dO2lmKGwuc3BlYy5hcHBlbmRUcmFuc2FjdGlvbil7bGV0IGE9cz9zW29dLm46MCxjPXM/c1tvXS5zdGF0ZTp0aGlzLHU9YTx0Lmxlbmd0aCYmbC5zcGVjLmFwcGVuZFRyYW5zYWN0aW9uLmNhbGwobCxhP3Quc2xpY2UoYSk6dCxjLHIpO2lmKHUmJnIuZmlsdGVyVHJhbnNhY3Rpb24odSxvKSl7aWYodS5zZXRNZXRhKCJhcHBlbmRlZFRyYW5zYWN0aW9uIixlKSwhcyl7cz1bXTtmb3IobGV0IGQ9MDtkPHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoO2QrKylzLnB1c2goZDxvP3tzdGF0ZTpyLG46dC5sZW5ndGh9OntzdGF0ZTp0aGlzLG46MH0pfXQucHVzaCh1KSxyPXIuYXBwbHlJbm5lcih1KSxpPSEwfXMmJihzW29dPXtzdGF0ZTpyLG46dC5sZW5ndGh9KX19aWYoIWkpcmV0dXJue3N0YXRlOnIsdHJhbnNhY3Rpb25zOnR9fX1hcHBseUlubmVyKGUpe2lmKCFlLmJlZm9yZS5lcSh0aGlzLmRvYykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkFwcGx5aW5nIGEgbWlzbWF0Y2hlZCB0cmFuc2FjdGlvbiIpO2xldCB0PW5ldyBybih0aGlzLmNvbmZpZykscj10aGlzLmNvbmZpZy5maWVsZHM7Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspe2xldCBpPXJbc107dFtpLm5hbWVdPWkuYXBwbHkoZSx0aGlzW2kubmFtZV0sdGhpcyx0KX1yZXR1cm4gdH1nZXQgdHIoKXtyZXR1cm4gbmV3IEhmKHRoaXMpfXN0YXRpYyBjcmVhdGUoZSl7bGV0IHQ9bmV3IHNpKGUuZG9jP2UuZG9jLnR5cGUuc2NoZW1hOmUuc2NoZW1hLGUucGx1Z2lucykscj1uZXcgcm4odCk7Zm9yKGxldCBzPTA7czx0LmZpZWxkcy5sZW5ndGg7cysrKXJbdC5maWVsZHNbc10ubmFtZV09dC5maWVsZHNbc10uaW5pdChlLHIpO3JldHVybiByfXJlY29uZmlndXJlKGUpe2xldCB0PW5ldyBzaSh0aGlzLnNjaGVtYSxlLnBsdWdpbnMpLHI9dC5maWVsZHMscz1uZXcgcm4odCk7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2xldCBvPXJbaV0ubmFtZTtzW29dPXRoaXMuaGFzT3duUHJvcGVydHkobyk/dGhpc1tvXTpyW2ldLmluaXQoZSxzKX1yZXR1cm4gc310b0pTT04oZSl7bGV0IHQ9e2RvYzp0aGlzLmRvYy50b0pTT04oKSxzZWxlY3Rpb246dGhpcy5zZWxlY3Rpb24udG9KU09OKCl9O2lmKHRoaXMuc3RvcmVkTWFya3MmJih0LnN0b3JlZE1hcmtzPXRoaXMuc3RvcmVkTWFya3MubWFwKHI9PnIudG9KU09OKCkpKSxlJiZ0eXBlb2YgZT09Im9iamVjdCIpZm9yKGxldCByIGluIGUpe2lmKHI9PSJkb2MifHxyPT0ic2VsZWN0aW9uIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlIEpTT04gZmllbGRzIGBkb2NgIGFuZCBgc2VsZWN0aW9uYCBhcmUgcmVzZXJ2ZWQiKTtsZXQgcz1lW3JdLGk9cy5zcGVjLnN0YXRlO2kmJmkudG9KU09OJiYodFtyXT1pLnRvSlNPTi5jYWxsKHMsdGhpc1tzLmtleV0pKX1yZXR1cm4gdH1zdGF0aWMgZnJvbUpTT04oZSx0LHIpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBFZGl0b3JTdGF0ZS5mcm9tSlNPTiIpO2lmKCFlLnNjaGVtYSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVxdWlyZWQgY29uZmlnIGZpZWxkICdzY2hlbWEnIG1pc3NpbmciKTtsZXQgcz1uZXcgc2koZS5zY2hlbWEsZS5wbHVnaW5zKSxpPW5ldyBybihzKTtyZXR1cm4gcy5maWVsZHMuZm9yRWFjaChvPT57aWYoby5uYW1lPT0iZG9jIilpLmRvYz1MZS5mcm9tSlNPTihlLnNjaGVtYSx0LmRvYyk7ZWxzZSBpZihvLm5hbWU9PSJzZWxlY3Rpb24iKWkuc2VsZWN0aW9uPUkuZnJvbUpTT04oaS5kb2MsdC5zZWxlY3Rpb24pO2Vsc2UgaWYoby5uYW1lPT0ic3RvcmVkTWFya3MiKXQuc3RvcmVkTWFya3MmJihpLnN0b3JlZE1hcmtzPXQuc3RvcmVkTWFya3MubWFwKGUuc2NoZW1hLm1hcmtGcm9tSlNPTikpO2Vsc2V7aWYocilmb3IobGV0IGwgaW4gcil7bGV0IGE9cltsXSxjPWEuc3BlYy5zdGF0ZTtpZihhLmtleT09by5uYW1lJiZjJiZjLmZyb21KU09OJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxsKSl7aVtvLm5hbWVdPWMuZnJvbUpTT04uY2FsbChhLGUsdFtsXSxpKTtyZXR1cm59fWlbby5uYW1lXT1vLmluaXQoZSxpKX19KSxpfX1mdW5jdGlvbiBZYyhuLGUsdCl7Zm9yKGxldCByIGluIG4pe2xldCBzPW5bcl07cyBpbnN0YW5jZW9mIEZ1bmN0aW9uP3M9cy5iaW5kKGUpOnI9PSJoYW5kbGVET01FdmVudHMiJiYocz1ZYyhzLGUse30pKSx0W3JdPXN9cmV0dXJuIHR9Y2xhc3MgR3tjb25zdHJ1Y3RvcihlKXt0aGlzLnNwZWM9ZSx0aGlzLnByb3BzPXt9LGUucHJvcHMmJlljKGUucHJvcHMsdGhpcyx0aGlzLnByb3BzKSx0aGlzLmtleT1lLmtleT9lLmtleS5rZXk6WmMoInBsdWdpbiIpfWdldFN0YXRlKGUpe3JldHVybiBlW3RoaXMua2V5XX19Y29uc3QgaWk9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBaYyhuKXtyZXR1cm4gbiBpbiBpaT9uKyIkIisgKytpaVtuXTooaWlbbl09MCxuKyIkIil9Y2xhc3MgcXtjb25zdHJ1Y3RvcihlPSJrZXkiKXt0aGlzLmtleT1aYyhlKX1nZXQoZSl7cmV0dXJuIGUuY29uZmlnLnBsdWdpbnNCeUtleVt0aGlzLmtleV19Z2V0U3RhdGUoZSl7cmV0dXJuIGVbdGhpcy5rZXldfX1jb25zdCBnbz0obixlKT0+bi5zZWxlY3Rpb24uZW1wdHk/ITE6KGUmJmUobi50ci5kZWxldGVTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpKSwhMCk7ZnVuY3Rpb24gZXUobixlKXtsZXR7JGN1cnNvcjp0fT1uLnNlbGVjdGlvbjtyZXR1cm4hdHx8KGU/IWUuZW5kT2ZUZXh0YmxvY2soImJhY2t3YXJkIixuKTp0LnBhcmVudE9mZnNldD4wKT9udWxsOnR9Y29uc3QgdHU9KG4sZSx0KT0+e2xldCByPWV1KG4sdCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9eW8ocik7aWYoIXMpe2xldCBvPXIuYmxvY2tSYW5nZSgpLGw9byYmbW4obyk7cmV0dXJuIGw9PW51bGw/ITE6KGUmJmUobi50ci5saWZ0KG8sbCkuc2Nyb2xsSW50b1ZpZXcoKSksITApfWxldCBpPXMubm9kZUJlZm9yZTtpZih1dShuLHMsZSwtMSkpcmV0dXJuITA7aWYoci5wYXJlbnQuY29udGVudC5zaXplPT0wJiYoY24oaSwiZW5kIil8fE4uaXNTZWxlY3RhYmxlKGkpKSlmb3IobGV0IG89ci5kZXB0aDs7by0tKXtsZXQgbD1JcyhuLmRvYyxyLmJlZm9yZShvKSxyLmFmdGVyKG8pLEUuZW1wdHkpO2lmKGwmJmwuc2xpY2Uuc2l6ZTxsLnRvLWwuZnJvbSl7aWYoZSl7bGV0IGE9bi50ci5zdGVwKGwpO2Euc2V0U2VsZWN0aW9uKGNuKGksImVuZCIpP0kuZmluZEZyb20oYS5kb2MucmVzb2x2ZShhLm1hcHBpbmcubWFwKHMucG9zLC0xKSksLTEpOk4uY3JlYXRlKGEuZG9jLHMucG9zLWkubm9kZVNpemUpKSxlKGEuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9aWYobz09MXx8ci5ub2RlKG8tMSkuY2hpbGRDb3VudD4xKWJyZWFrfXJldHVybiBpLmlzQXRvbSYmcy5kZXB0aD09ci5kZXB0aC0xPyhlJiZlKG4udHIuZGVsZXRlKHMucG9zLWkubm9kZVNpemUscy5wb3MpLnNjcm9sbEludG9WaWV3KCkpLCEwKTohMX0sVmY9KG4sZSx0KT0+e2xldCByPWV1KG4sdCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9eW8ocik7cmV0dXJuIHM/bnUobixzLGUpOiExfSxVZj0obixlLHQpPT57bGV0IHI9c3Uobix0KTtpZighcilyZXR1cm4hMTtsZXQgcz1rbyhyKTtyZXR1cm4gcz9udShuLHMsZSk6ITF9O2Z1bmN0aW9uIG51KG4sZSx0KXtsZXQgcj1lLm5vZGVCZWZvcmUscz1yLGk9ZS5wb3MtMTtmb3IoOyFzLmlzVGV4dGJsb2NrO2ktLSl7aWYocy50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiExO2xldCB1PXMubGFzdENoaWxkO2lmKCF1KXJldHVybiExO3M9dX1sZXQgbz1lLm5vZGVBZnRlcixsPW8sYT1lLnBvcysxO2Zvcig7IWwuaXNUZXh0YmxvY2s7YSsrKXtpZihsLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IHU9bC5maXJzdENoaWxkO2lmKCF1KXJldHVybiExO2w9dX1sZXQgYz1JcyhuLmRvYyxpLGEsRS5lbXB0eSk7aWYoIWN8fGMuZnJvbSE9aXx8YyBpbnN0YW5jZW9mIHJlJiZjLnNsaWNlLnNpemU+PWEtaSlyZXR1cm4hMTtpZih0KXtsZXQgdT1uLnRyLnN0ZXAoYyk7dS5zZXRTZWxlY3Rpb24oRC5jcmVhdGUodS5kb2MsaSkpLHQodS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH1mdW5jdGlvbiBjbihuLGUsdD0hMSl7Zm9yKGxldCByPW47cjtyPWU9PSJzdGFydCI/ci5maXJzdENoaWxkOnIubGFzdENoaWxkKXtpZihyLmlzVGV4dGJsb2NrKXJldHVybiEwO2lmKHQmJnIuY2hpbGRDb3VudCE9MSlyZXR1cm4hMX1yZXR1cm4hMX1jb25zdCBydT0obixlLHQpPT57bGV0eyRoZWFkOnIsZW1wdHk6c309bi5zZWxlY3Rpb24saT1yO2lmKCFzKXJldHVybiExO2lmKHIucGFyZW50LmlzVGV4dGJsb2NrKXtpZih0PyF0LmVuZE9mVGV4dGJsb2NrKCJiYWNrd2FyZCIsbik6ci5wYXJlbnRPZmZzZXQ+MClyZXR1cm4hMTtpPXlvKHIpfWxldCBvPWkmJmkubm9kZUJlZm9yZTtyZXR1cm4hb3x8IU4uaXNTZWxlY3RhYmxlKG8pPyExOihlJiZlKG4udHIuc2V0U2VsZWN0aW9uKE4uY3JlYXRlKG4uZG9jLGkucG9zLW8ubm9kZVNpemUpKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9O2Z1bmN0aW9uIHlvKG4pe2lmKCFuLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKWZvcihsZXQgZT1uLmRlcHRoLTE7ZT49MDtlLS0pe2lmKG4uaW5kZXgoZSk+MClyZXR1cm4gbi5kb2MucmVzb2x2ZShuLmJlZm9yZShlKzEpKTtpZihuLm5vZGUoZSkudHlwZS5zcGVjLmlzb2xhdGluZylicmVha31yZXR1cm4gbnVsbH1mdW5jdGlvbiBzdShuLGUpe2xldHskY3Vyc29yOnR9PW4uc2VsZWN0aW9uO3JldHVybiF0fHwoZT8hZS5lbmRPZlRleHRibG9jaygiZm9yd2FyZCIsbik6dC5wYXJlbnRPZmZzZXQ8dC5wYXJlbnQuY29udGVudC5zaXplKT9udWxsOnR9Y29uc3QgaXU9KG4sZSx0KT0+e2xldCByPXN1KG4sdCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9a28ocik7aWYoIXMpcmV0dXJuITE7bGV0IGk9cy5ub2RlQWZ0ZXI7aWYodXUobixzLGUsMSkpcmV0dXJuITA7aWYoci5wYXJlbnQuY29udGVudC5zaXplPT0wJiYoY24oaSwic3RhcnQiKXx8Ti5pc1NlbGVjdGFibGUoaSkpKXtsZXQgbz1JcyhuLmRvYyxyLmJlZm9yZSgpLHIuYWZ0ZXIoKSxFLmVtcHR5KTtpZihvJiZvLnNsaWNlLnNpemU8by50by1vLmZyb20pe2lmKGUpe2xldCBsPW4udHIuc3RlcChvKTtsLnNldFNlbGVjdGlvbihjbihpLCJzdGFydCIpP0kuZmluZEZyb20obC5kb2MucmVzb2x2ZShsLm1hcHBpbmcubWFwKHMucG9zKSksMSk6Ti5jcmVhdGUobC5kb2MsbC5tYXBwaW5nLm1hcChzLnBvcykpKSxlKGwuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9fXJldHVybiBpLmlzQXRvbSYmcy5kZXB0aD09ci5kZXB0aC0xPyhlJiZlKG4udHIuZGVsZXRlKHMucG9zLHMucG9zK2kubm9kZVNpemUpLnNjcm9sbEludG9WaWV3KCkpLCEwKTohMX0sb3U9KG4sZSx0KT0+e2xldHskaGVhZDpyLGVtcHR5OnN9PW4uc2VsZWN0aW9uLGk9cjtpZighcylyZXR1cm4hMTtpZihyLnBhcmVudC5pc1RleHRibG9jayl7aWYodD8hdC5lbmRPZlRleHRibG9jaygiZm9yd2FyZCIsbik6ci5wYXJlbnRPZmZzZXQ8ci5wYXJlbnQuY29udGVudC5zaXplKXJldHVybiExO2k9a28ocil9bGV0IG89aSYmaS5ub2RlQWZ0ZXI7cmV0dXJuIW98fCFOLmlzU2VsZWN0YWJsZShvKT8hMTooZSYmZShuLnRyLnNldFNlbGVjdGlvbihOLmNyZWF0ZShuLmRvYyxpLnBvcykpLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24ga28obil7aWYoIW4ucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcpZm9yKGxldCBlPW4uZGVwdGgtMTtlPj0wO2UtLSl7bGV0IHQ9bi5ub2RlKGUpO2lmKG4uaW5kZXgoZSkrMTx0LmNoaWxkQ291bnQpcmV0dXJuIG4uZG9jLnJlc29sdmUobi5hZnRlcihlKzEpKTtpZih0LnR5cGUuc3BlYy5pc29sYXRpbmcpYnJlYWt9cmV0dXJuIG51bGx9Y29uc3QgamY9KG4sZSk9PntsZXQgdD1uLnNlbGVjdGlvbixyPXQgaW5zdGFuY2VvZiBOLHM7aWYocil7aWYodC5ub2RlLmlzVGV4dGJsb2NrfHwhQXQobi5kb2MsdC5mcm9tKSlyZXR1cm4hMTtzPXQuZnJvbX1lbHNlIGlmKHM9UnMobi5kb2MsdC5mcm9tLC0xKSxzPT1udWxsKXJldHVybiExO2lmKGUpe2xldCBpPW4udHIuam9pbihzKTtyJiZpLnNldFNlbGVjdGlvbihOLmNyZWF0ZShpLmRvYyxzLW4uZG9jLnJlc29sdmUocykubm9kZUJlZm9yZS5ub2RlU2l6ZSkpLGUoaS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH0scWY9KG4sZSk9PntsZXQgdD1uLnNlbGVjdGlvbixyO2lmKHQgaW5zdGFuY2VvZiBOKXtpZih0Lm5vZGUuaXNUZXh0YmxvY2t8fCFBdChuLmRvYyx0LnRvKSlyZXR1cm4hMTtyPXQudG99ZWxzZSBpZihyPVJzKG4uZG9jLHQudG8sMSkscj09bnVsbClyZXR1cm4hMTtyZXR1cm4gZSYmZShuLnRyLmpvaW4ocikuc2Nyb2xsSW50b1ZpZXcoKSksITB9LFdmPShuLGUpPT57bGV0eyRmcm9tOnQsJHRvOnJ9PW4uc2VsZWN0aW9uLHM9dC5ibG9ja1JhbmdlKHIpLGk9cyYmbW4ocyk7cmV0dXJuIGk9PW51bGw/ITE6KGUmJmUobi50ci5saWZ0KHMsaSkuc2Nyb2xsSW50b1ZpZXcoKSksITApfSxsdT0obixlKT0+e2xldHskaGVhZDp0LCRhbmNob3I6cn09bi5zZWxlY3Rpb247cmV0dXJuIXQucGFyZW50LnR5cGUuc3BlYy5jb2RlfHwhdC5zYW1lUGFyZW50KHIpPyExOihlJiZlKG4udHIuaW5zZXJ0VGV4dChgCmApLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24gYm8obil7Zm9yKGxldCBlPTA7ZTxuLmVkZ2VDb3VudDtlKyspe2xldHt0eXBlOnR9PW4uZWRnZShlKTtpZih0LmlzVGV4dGJsb2NrJiYhdC5oYXNSZXF1aXJlZEF0dHJzKCkpcmV0dXJuIHR9cmV0dXJuIG51bGx9Y29uc3QgS2Y9KG4sZSk9PntsZXR7JGhlYWQ6dCwkYW5jaG9yOnJ9PW4uc2VsZWN0aW9uO2lmKCF0LnBhcmVudC50eXBlLnNwZWMuY29kZXx8IXQuc2FtZVBhcmVudChyKSlyZXR1cm4hMTtsZXQgcz10Lm5vZGUoLTEpLGk9dC5pbmRleEFmdGVyKC0xKSxvPWJvKHMuY29udGVudE1hdGNoQXQoaSkpO2lmKCFvfHwhcy5jYW5SZXBsYWNlV2l0aChpLGksbykpcmV0dXJuITE7aWYoZSl7bGV0IGw9dC5hZnRlcigpLGE9bi50ci5yZXBsYWNlV2l0aChsLGwsby5jcmVhdGVBbmRGaWxsKCkpO2Euc2V0U2VsZWN0aW9uKEkubmVhcihhLmRvYy5yZXNvbHZlKGwpLDEpKSxlKGEuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9LGF1PShuLGUpPT57bGV0IHQ9bi5zZWxlY3Rpb24seyRmcm9tOnIsJHRvOnN9PXQ7aWYodCBpbnN0YW5jZW9mIEFlfHxyLnBhcmVudC5pbmxpbmVDb250ZW50fHxzLnBhcmVudC5pbmxpbmVDb250ZW50KXJldHVybiExO2xldCBpPWJvKHMucGFyZW50LmNvbnRlbnRNYXRjaEF0KHMuaW5kZXhBZnRlcigpKSk7aWYoIWl8fCFpLmlzVGV4dGJsb2NrKXJldHVybiExO2lmKGUpe2xldCBvPSghci5wYXJlbnRPZmZzZXQmJnMuaW5kZXgoKTxzLnBhcmVudC5jaGlsZENvdW50P3I6cykucG9zLGw9bi50ci5pbnNlcnQobyxpLmNyZWF0ZUFuZEZpbGwoKSk7bC5zZXRTZWxlY3Rpb24oRC5jcmVhdGUobC5kb2MsbysxKSksZShsLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfSxjdT0obixlKT0+e2xldHskY3Vyc29yOnR9PW4uc2VsZWN0aW9uO2lmKCF0fHx0LnBhcmVudC5jb250ZW50LnNpemUpcmV0dXJuITE7aWYodC5kZXB0aD4xJiZ0LmFmdGVyKCkhPXQuZW5kKC0xKSl7bGV0IGk9dC5iZWZvcmUoKTtpZihvdChuLmRvYyxpKSlyZXR1cm4gZSYmZShuLnRyLnNwbGl0KGkpLnNjcm9sbEludG9WaWV3KCkpLCEwfWxldCByPXQuYmxvY2tSYW5nZSgpLHM9ciYmbW4ocik7cmV0dXJuIHM9PW51bGw/ITE6KGUmJmUobi50ci5saWZ0KHIscykuc2Nyb2xsSW50b1ZpZXcoKSksITApfTtmdW5jdGlvbiBKZihuKXtyZXR1cm4oZSx0KT0+e2xldHskZnJvbTpyLCR0bzpzfT1lLnNlbGVjdGlvbjtpZihlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIE4mJmUuc2VsZWN0aW9uLm5vZGUuaXNCbG9jaylyZXR1cm4hci5wYXJlbnRPZmZzZXR8fCFvdChlLmRvYyxyLnBvcyk/ITE6KHQmJnQoZS50ci5zcGxpdChyLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksITApO2lmKCFyLmRlcHRoKXJldHVybiExO2xldCBpPVtdLG8sbCxhPSExLGM9ITE7Zm9yKGxldCBmPXIuZGVwdGg7O2YtLSlpZihyLm5vZGUoZikuaXNCbG9jayl7YT1yLmVuZChmKT09ci5wb3MrKHIuZGVwdGgtZiksYz1yLnN0YXJ0KGYpPT1yLnBvcy0oci5kZXB0aC1mKSxsPWJvKHIubm9kZShmLTEpLmNvbnRlbnRNYXRjaEF0KHIuaW5kZXhBZnRlcihmLTEpKSksaS51bnNoaWZ0KGEmJmw/e3R5cGU6bH06bnVsbCksbz1mO2JyZWFrfWVsc2V7aWYoZj09MSlyZXR1cm4hMTtpLnVuc2hpZnQobnVsbCl9bGV0IHU9ZS50cjsoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBEfHxlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEFlKSYmdS5kZWxldGVTZWxlY3Rpb24oKTtsZXQgZD11Lm1hcHBpbmcubWFwKHIucG9zKSxoPW90KHUuZG9jLGQsaS5sZW5ndGgsaSk7aWYoaHx8KGlbMF09bD97dHlwZTpsfTpudWxsLGg9b3QodS5kb2MsZCxpLmxlbmd0aCxpKSksIWgpcmV0dXJuITE7aWYodS5zcGxpdChkLGkubGVuZ3RoLGkpLCFhJiZjJiZyLm5vZGUobykudHlwZSE9bCl7bGV0IGY9dS5tYXBwaW5nLm1hcChyLmJlZm9yZShvKSkscD11LmRvYy5yZXNvbHZlKGYpO2wmJnIubm9kZShvLTEpLmNhblJlcGxhY2VXaXRoKHAuaW5kZXgoKSxwLmluZGV4KCkrMSxsKSYmdS5zZXROb2RlTWFya3VwKHUubWFwcGluZy5tYXAoci5iZWZvcmUobykpLGwpfXJldHVybiB0JiZ0KHUuc2Nyb2xsSW50b1ZpZXcoKSksITB9fWNvbnN0IEdmPUpmKCksUWY9KG4sZSk9PntsZXR7JGZyb206dCx0bzpyfT1uLnNlbGVjdGlvbixzLGk9dC5zaGFyZWREZXB0aChyKTtyZXR1cm4gaT09MD8hMToocz10LmJlZm9yZShpKSxlJiZlKG4udHIuc2V0U2VsZWN0aW9uKE4uY3JlYXRlKG4uZG9jLHMpKSksITApfTtmdW5jdGlvbiBYZihuLGUsdCl7bGV0IHI9ZS5ub2RlQmVmb3JlLHM9ZS5ub2RlQWZ0ZXIsaT1lLmluZGV4KCk7cmV0dXJuIXJ8fCFzfHwhci50eXBlLmNvbXBhdGlibGVDb250ZW50KHMudHlwZSk/ITE6IXIuY29udGVudC5zaXplJiZlLnBhcmVudC5jYW5SZXBsYWNlKGktMSxpKT8odCYmdChuLnRyLmRlbGV0ZShlLnBvcy1yLm5vZGVTaXplLGUucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCk6IWUucGFyZW50LmNhblJlcGxhY2UoaSxpKzEpfHwhKHMuaXNUZXh0YmxvY2t8fEF0KG4uZG9jLGUucG9zKSk/ITE6KHQmJnQobi50ci5qb2luKGUucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9ZnVuY3Rpb24gdXUobixlLHQscil7bGV0IHM9ZS5ub2RlQmVmb3JlLGk9ZS5ub2RlQWZ0ZXIsbyxsLGE9cy50eXBlLnNwZWMuaXNvbGF0aW5nfHxpLnR5cGUuc3BlYy5pc29sYXRpbmc7aWYoIWEmJlhmKG4sZSx0KSlyZXR1cm4hMDtsZXQgYz0hYSYmZS5wYXJlbnQuY2FuUmVwbGFjZShlLmluZGV4KCksZS5pbmRleCgpKzEpO2lmKGMmJihvPShsPXMuY29udGVudE1hdGNoQXQocy5jaGlsZENvdW50KSkuZmluZFdyYXBwaW5nKGkudHlwZSkpJiZsLm1hdGNoVHlwZShvWzBdfHxpLnR5cGUpLnZhbGlkRW5kKXtpZih0KXtsZXQgZj1lLnBvcytpLm5vZGVTaXplLHA9Uy5lbXB0eTtmb3IobGV0IHk9by5sZW5ndGgtMTt5Pj0wO3ktLSlwPVMuZnJvbShvW3ldLmNyZWF0ZShudWxsLHApKTtwPVMuZnJvbShzLmNvcHkocCkpO2xldCBtPW4udHIuc3RlcChuZXcgYWUoZS5wb3MtMSxmLGUucG9zLGYsbmV3IEUocCwxLDApLG8ubGVuZ3RoLCEwKSksZz1tLmRvYy5yZXNvbHZlKGYrMipvLmxlbmd0aCk7Zy5ub2RlQWZ0ZXImJmcubm9kZUFmdGVyLnR5cGU9PXMudHlwZSYmQXQobS5kb2MsZy5wb3MpJiZtLmpvaW4oZy5wb3MpLHQobS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH1sZXQgdT1pLnR5cGUuc3BlYy5pc29sYXRpbmd8fHI+MCYmYT9udWxsOkkuZmluZEZyb20oZSwxKSxkPXUmJnUuJGZyb20uYmxvY2tSYW5nZSh1LiR0byksaD1kJiZtbihkKTtpZihoIT1udWxsJiZoPj1lLmRlcHRoKXJldHVybiB0JiZ0KG4udHIubGlmdChkLGgpLnNjcm9sbEludG9WaWV3KCkpLCEwO2lmKGMmJmNuKGksInN0YXJ0IiwhMCkmJmNuKHMsImVuZCIpKXtsZXQgZj1zLHA9W107Zm9yKDtwLnB1c2goZiksIWYuaXNUZXh0YmxvY2s7KWY9Zi5sYXN0Q2hpbGQ7bGV0IG09aSxnPTE7Zm9yKDshbS5pc1RleHRibG9jazttPW0uZmlyc3RDaGlsZClnKys7aWYoZi5jYW5SZXBsYWNlKGYuY2hpbGRDb3VudCxmLmNoaWxkQ291bnQsbS5jb250ZW50KSl7aWYodCl7bGV0IHk9Uy5lbXB0eTtmb3IobGV0IGI9cC5sZW5ndGgtMTtiPj0wO2ItLSl5PVMuZnJvbShwW2JdLmNvcHkoeSkpO2xldCBrPW4udHIuc3RlcChuZXcgYWUoZS5wb3MtcC5sZW5ndGgsZS5wb3MraS5ub2RlU2l6ZSxlLnBvcytnLGUucG9zK2kubm9kZVNpemUtZyxuZXcgRSh5LHAubGVuZ3RoLDApLDAsITApKTt0KGsuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIGR1KG4pe3JldHVybiBmdW5jdGlvbihlLHQpe2xldCByPWUuc2VsZWN0aW9uLHM9bjwwP3IuJGZyb206ci4kdG8saT1zLmRlcHRoO2Zvcig7cy5ub2RlKGkpLmlzSW5saW5lOyl7aWYoIWkpcmV0dXJuITE7aS0tfXJldHVybiBzLm5vZGUoaSkuaXNUZXh0YmxvY2s/KHQmJnQoZS50ci5zZXRTZWxlY3Rpb24oRC5jcmVhdGUoZS5kb2MsbjwwP3Muc3RhcnQoaSk6cy5lbmQoaSkpKSksITApOiExfX1jb25zdCBZZj1kdSgtMSksWmY9ZHUoMSk7ZnVuY3Rpb24gZXAobixlPW51bGwpe3JldHVybiBmdW5jdGlvbih0LHIpe2xldHskZnJvbTpzLCR0bzppfT10LnNlbGVjdGlvbixvPXMuYmxvY2tSYW5nZShpKSxsPW8mJnBvKG8sbixlKTtyZXR1cm4gbD8ociYmcih0LnRyLndyYXAobyxsKS5zY3JvbGxJbnRvVmlldygpKSwhMCk6ITF9fWZ1bmN0aW9uIFBsKG4sZT1udWxsKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtsZXQgcz0hMTtmb3IobGV0IGk9MDtpPHQuc2VsZWN0aW9uLnJhbmdlcy5sZW5ndGgmJiFzO2krKyl7bGV0eyRmcm9tOntwb3M6b30sJHRvOntwb3M6bH19PXQuc2VsZWN0aW9uLnJhbmdlc1tpXTt0LmRvYy5ub2Rlc0JldHdlZW4obyxsLChhLGMpPT57aWYocylyZXR1cm4hMTtpZighKCFhLmlzVGV4dGJsb2NrfHxhLmhhc01hcmt1cChuLGUpKSlpZihhLnR5cGU9PW4pcz0hMDtlbHNle2xldCB1PXQuZG9jLnJlc29sdmUoYyksZD11LmluZGV4KCk7cz11LnBhcmVudC5jYW5SZXBsYWNlV2l0aChkLGQrMSxuKX19KX1pZighcylyZXR1cm4hMTtpZihyKXtsZXQgaT10LnRyO2ZvcihsZXQgbz0wO288dC5zZWxlY3Rpb24ucmFuZ2VzLmxlbmd0aDtvKyspe2xldHskZnJvbTp7cG9zOmx9LCR0bzp7cG9zOmF9fT10LnNlbGVjdGlvbi5yYW5nZXNbb107aS5zZXRCbG9ja1R5cGUobCxhLG4sZSl9cihpLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1mdW5jdGlvbiB4byguLi5uKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe2ZvcihsZXQgcz0wO3M8bi5sZW5ndGg7cysrKWlmKG5bc10oZSx0LHIpKXJldHVybiEwO3JldHVybiExfX14byhnbyx0dSxydSk7eG8oZ28saXUsb3UpO3hvKGx1LGF1LGN1LEdmKTt0eXBlb2YgbmF2aWdhdG9yPCJ1Ij8vTWFjfGlQKGhvbmV8W29hXWQpLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk6dHlwZW9mIG9zPCJ1IiYmb3MucGxhdGZvcm0mJm9zLnBsYXRmb3JtKCk9PSJkYXJ3aW4iO2Z1bmN0aW9uIHRwKG4sZT1udWxsKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtsZXR7JGZyb206cywkdG86aX09dC5zZWxlY3Rpb24sbz1zLmJsb2NrUmFuZ2UoaSk7aWYoIW8pcmV0dXJuITE7bGV0IGw9cj90LnRyOm51bGw7cmV0dXJuIG5wKGwsbyxuLGUpPyhyJiZyKGwuc2Nyb2xsSW50b1ZpZXcoKSksITApOiExfX1mdW5jdGlvbiBucChuLGUsdCxyPW51bGwpe2xldCBzPSExLGk9ZSxvPWUuJGZyb20uZG9jO2lmKGUuZGVwdGg+PTImJmUuJGZyb20ubm9kZShlLmRlcHRoLTEpLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQodCkmJmUuc3RhcnRJbmRleD09MCl7aWYoZS4kZnJvbS5pbmRleChlLmRlcHRoLTEpPT0wKXJldHVybiExO2xldCBhPW8ucmVzb2x2ZShlLnN0YXJ0LTIpO2k9bmV3IEhyKGEsYSxlLmRlcHRoKSxlLmVuZEluZGV4PGUucGFyZW50LmNoaWxkQ291bnQmJihlPW5ldyBIcihlLiRmcm9tLG8ucmVzb2x2ZShlLiR0by5lbmQoZS5kZXB0aCkpLGUuZGVwdGgpKSxzPSEwfWxldCBsPXBvKGksdCxyLGUpO3JldHVybiBsPyhuJiZycChuLGUsbCxzLHQpLCEwKTohMX1mdW5jdGlvbiBycChuLGUsdCxyLHMpe2xldCBpPVMuZW1wdHk7Zm9yKGxldCB1PXQubGVuZ3RoLTE7dT49MDt1LS0paT1TLmZyb20odFt1XS50eXBlLmNyZWF0ZSh0W3VdLmF0dHJzLGkpKTtuLnN0ZXAobmV3IGFlKGUuc3RhcnQtKHI/MjowKSxlLmVuZCxlLnN0YXJ0LGUuZW5kLG5ldyBFKGksMCwwKSx0Lmxlbmd0aCwhMCkpO2xldCBvPTA7Zm9yKGxldCB1PTA7dTx0Lmxlbmd0aDt1KyspdFt1XS50eXBlPT1zJiYobz11KzEpO2xldCBsPXQubGVuZ3RoLW8sYT1lLnN0YXJ0K3QubGVuZ3RoLShyPzI6MCksYz1lLnBhcmVudDtmb3IobGV0IHU9ZS5zdGFydEluZGV4LGQ9ZS5lbmRJbmRleCxoPSEwO3U8ZDt1KyssaD0hMSkhaCYmb3Qobi5kb2MsYSxsKSYmKG4uc3BsaXQoYSxsKSxhKz0yKmwpLGErPWMuY2hpbGQodSkubm9kZVNpemU7cmV0dXJuIG59ZnVuY3Rpb24gc3Aobil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0eyRmcm9tOnIsJHRvOnN9PWUuc2VsZWN0aW9uLGk9ci5ibG9ja1JhbmdlKHMsbz0+by5jaGlsZENvdW50PjAmJm8uZmlyc3RDaGlsZC50eXBlPT1uKTtyZXR1cm4gaT90P3Iubm9kZShpLmRlcHRoLTEpLnR5cGU9PW4/aXAoZSx0LG4saSk6b3AoZSx0LGkpOiEwOiExfX1mdW5jdGlvbiBpcChuLGUsdCxyKXtsZXQgcz1uLnRyLGk9ci5lbmQsbz1yLiR0by5lbmQoci5kZXB0aCk7aTxvJiYocy5zdGVwKG5ldyBhZShpLTEsbyxpLG8sbmV3IEUoUy5mcm9tKHQuY3JlYXRlKG51bGwsci5wYXJlbnQuY29weSgpKSksMSwwKSwxLCEwKSkscj1uZXcgSHIocy5kb2MucmVzb2x2ZShyLiRmcm9tLnBvcykscy5kb2MucmVzb2x2ZShvKSxyLmRlcHRoKSk7Y29uc3QgbD1tbihyKTtpZihsPT1udWxsKXJldHVybiExO3MubGlmdChyLGwpO2xldCBhPXMuZG9jLnJlc29sdmUocy5tYXBwaW5nLm1hcChpLC0xKS0xKTtyZXR1cm4gQXQocy5kb2MsYS5wb3MpJiZhLm5vZGVCZWZvcmUudHlwZT09YS5ub2RlQWZ0ZXIudHlwZSYmcy5qb2luKGEucG9zKSxlKHMuc2Nyb2xsSW50b1ZpZXcoKSksITB9ZnVuY3Rpb24gb3AobixlLHQpe2xldCByPW4udHIscz10LnBhcmVudDtmb3IobGV0IGY9dC5lbmQscD10LmVuZEluZGV4LTEsbT10LnN0YXJ0SW5kZXg7cD5tO3AtLSlmLT1zLmNoaWxkKHApLm5vZGVTaXplLHIuZGVsZXRlKGYtMSxmKzEpO2xldCBpPXIuZG9jLnJlc29sdmUodC5zdGFydCksbz1pLm5vZGVBZnRlcjtpZihyLm1hcHBpbmcubWFwKHQuZW5kKSE9dC5zdGFydCtpLm5vZGVBZnRlci5ub2RlU2l6ZSlyZXR1cm4hMTtsZXQgbD10LnN0YXJ0SW5kZXg9PTAsYT10LmVuZEluZGV4PT1zLmNoaWxkQ291bnQsYz1pLm5vZGUoLTEpLHU9aS5pbmRleCgtMSk7aWYoIWMuY2FuUmVwbGFjZSh1KyhsPzA6MSksdSsxLG8uY29udGVudC5hcHBlbmQoYT9TLmVtcHR5OlMuZnJvbShzKSkpKXJldHVybiExO2xldCBkPWkucG9zLGg9ZCtvLm5vZGVTaXplO3JldHVybiByLnN0ZXAobmV3IGFlKGQtKGw/MTowKSxoKyhhPzE6MCksZCsxLGgtMSxuZXcgRSgobD9TLmVtcHR5OlMuZnJvbShzLmNvcHkoUy5lbXB0eSkpKS5hcHBlbmQoYT9TLmVtcHR5OlMuZnJvbShzLmNvcHkoUy5lbXB0eSkpKSxsPzA6MSxhPzA6MSksbD8wOjEpKSxlKHIuc2Nyb2xsSW50b1ZpZXcoKSksITB9ZnVuY3Rpb24gbHAobil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0eyRmcm9tOnIsJHRvOnN9PWUuc2VsZWN0aW9uLGk9ci5ibG9ja1JhbmdlKHMsYz0+Yy5jaGlsZENvdW50PjAmJmMuZmlyc3RDaGlsZC50eXBlPT1uKTtpZighaSlyZXR1cm4hMTtsZXQgbz1pLnN0YXJ0SW5kZXg7aWYobz09MClyZXR1cm4hMTtsZXQgbD1pLnBhcmVudCxhPWwuY2hpbGQoby0xKTtpZihhLnR5cGUhPW4pcmV0dXJuITE7aWYodCl7bGV0IGM9YS5sYXN0Q2hpbGQmJmEubGFzdENoaWxkLnR5cGU9PWwudHlwZSx1PVMuZnJvbShjP24uY3JlYXRlKCk6bnVsbCksZD1uZXcgRShTLmZyb20obi5jcmVhdGUobnVsbCxTLmZyb20obC50eXBlLmNyZWF0ZShudWxsLHUpKSkpLGM/MzoxLDApLGg9aS5zdGFydCxmPWkuZW5kO3QoZS50ci5zdGVwKG5ldyBhZShoLShjPzM6MSksZixoLGYsZCwxLCEwKSkuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9fWNvbnN0IGZlPWZ1bmN0aW9uKG4pe2Zvcih2YXIgZT0wOztlKyspaWYobj1uLnByZXZpb3VzU2libGluZywhbilyZXR1cm4gZX0sdW49ZnVuY3Rpb24obil7bGV0IGU9bi5hc3NpZ25lZFNsb3R8fG4ucGFyZW50Tm9kZTtyZXR1cm4gZSYmZS5ub2RlVHlwZT09MTE/ZS5ob3N0OmV9O2xldCBMaT1udWxsO2NvbnN0IHR0PWZ1bmN0aW9uKG4sZSx0KXtsZXQgcj1MaXx8KExpPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCkpO3JldHVybiByLnNldEVuZChuLHQ/P24ubm9kZVZhbHVlLmxlbmd0aCksci5zZXRTdGFydChuLGV8fDApLHJ9LGFwPWZ1bmN0aW9uKCl7TGk9bnVsbH0sVXQ9ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHQmJih6bChuLGUsdCxyLC0xKXx8emwobixlLHQsciwxKSl9LGNwPS9eKGltZ3xicnxpbnB1dHx0ZXh0YXJlYXxocikkL2k7ZnVuY3Rpb24gemwobixlLHQscixzKXtmb3IodmFyIGk7Oyl7aWYobj09dCYmZT09cilyZXR1cm4hMDtpZihlPT0oczwwPzA6RGUobikpKXtsZXQgbz1uLnBhcmVudE5vZGU7aWYoIW98fG8ubm9kZVR5cGUhPTF8fHNyKG4pfHxjcC50ZXN0KG4ubm9kZU5hbWUpfHxuLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilyZXR1cm4hMTtlPWZlKG4pKyhzPDA/MDoxKSxuPW99ZWxzZSBpZihuLm5vZGVUeXBlPT0xKXtsZXQgbz1uLmNoaWxkTm9kZXNbZSsoczwwPy0xOjApXTtpZihvLm5vZGVUeXBlPT0xJiZvLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilpZighKChpPW8ucG1WaWV3RGVzYyk9PT1udWxsfHxpPT09dm9pZCAwKSYmaS5pZ25vcmVGb3JTZWxlY3Rpb24pZSs9cztlbHNlIHJldHVybiExO2Vsc2Ugbj1vLGU9czwwP0RlKG4pOjB9ZWxzZSByZXR1cm4hMX19ZnVuY3Rpb24gRGUobil7cmV0dXJuIG4ubm9kZVR5cGU9PTM/bi5ub2RlVmFsdWUubGVuZ3RoOm4uY2hpbGROb2Rlcy5sZW5ndGh9ZnVuY3Rpb24gdXAobixlKXtmb3IoOzspe2lmKG4ubm9kZVR5cGU9PTMmJmUpcmV0dXJuIG47aWYobi5ub2RlVHlwZT09MSYmZT4wKXtpZihuLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilyZXR1cm4gbnVsbDtuPW4uY2hpbGROb2Rlc1tlLTFdLGU9RGUobil9ZWxzZSBpZihuLnBhcmVudE5vZGUmJiFzcihuKSllPWZlKG4pLG49bi5wYXJlbnROb2RlO2Vsc2UgcmV0dXJuIG51bGx9fWZ1bmN0aW9uIGRwKG4sZSl7Zm9yKDs7KXtpZihuLm5vZGVUeXBlPT0zJiZlPG4ubm9kZVZhbHVlLmxlbmd0aClyZXR1cm4gbjtpZihuLm5vZGVUeXBlPT0xJiZlPG4uY2hpbGROb2Rlcy5sZW5ndGgpe2lmKG4uY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKXJldHVybiBudWxsO249bi5jaGlsZE5vZGVzW2VdLGU9MH1lbHNlIGlmKG4ucGFyZW50Tm9kZSYmIXNyKG4pKWU9ZmUobikrMSxuPW4ucGFyZW50Tm9kZTtlbHNlIHJldHVybiBudWxsfX1mdW5jdGlvbiBocChuLGUsdCl7Zm9yKGxldCByPWU9PTAscz1lPT1EZShuKTtyfHxzOyl7aWYobj09dClyZXR1cm4hMDtsZXQgaT1mZShuKTtpZihuPW4ucGFyZW50Tm9kZSwhbilyZXR1cm4hMTtyPXImJmk9PTAscz1zJiZpPT1EZShuKX19ZnVuY3Rpb24gc3Iobil7bGV0IGU7Zm9yKGxldCB0PW47dCYmIShlPXQucG1WaWV3RGVzYyk7dD10LnBhcmVudE5vZGUpO3JldHVybiBlJiZlLm5vZGUmJmUubm9kZS5pc0Jsb2NrJiYoZS5kb209PW58fGUuY29udGVudERPTT09bil9Y29uc3QgTHM9ZnVuY3Rpb24obil7cmV0dXJuIG4uZm9jdXNOb2RlJiZVdChuLmZvY3VzTm9kZSxuLmZvY3VzT2Zmc2V0LG4uYW5jaG9yTm9kZSxuLmFuY2hvck9mZnNldCl9O2Z1bmN0aW9uIFJ0KG4sZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIHQuaW5pdEV2ZW50KCJrZXlkb3duIiwhMCwhMCksdC5rZXlDb2RlPW4sdC5rZXk9dC5jb2RlPWUsdH1mdW5jdGlvbiBmcChuKXtsZXQgZT1uLmFjdGl2ZUVsZW1lbnQ7Zm9yKDtlJiZlLnNoYWRvd1Jvb3Q7KWU9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGV9ZnVuY3Rpb24gcHAobixlLHQpe2lmKG4uY2FyZXRQb3NpdGlvbkZyb21Qb2ludCl0cnl7bGV0IHI9bi5jYXJldFBvc2l0aW9uRnJvbVBvaW50KGUsdCk7aWYocilyZXR1cm57bm9kZTpyLm9mZnNldE5vZGUsb2Zmc2V0Ok1hdGgubWluKERlKHIub2Zmc2V0Tm9kZSksci5vZmZzZXQpfX1jYXRjaHt9aWYobi5jYXJldFJhbmdlRnJvbVBvaW50KXtsZXQgcj1uLmNhcmV0UmFuZ2VGcm9tUG9pbnQoZSx0KTtpZihyKXJldHVybntub2RlOnIuc3RhcnRDb250YWluZXIsb2Zmc2V0Ok1hdGgubWluKERlKHIuc3RhcnRDb250YWluZXIpLHIuc3RhcnRPZmZzZXQpfX19Y29uc3QgSmU9dHlwZW9mIG5hdmlnYXRvcjwidSI/bmF2aWdhdG9yOm51bGwsJGw9dHlwZW9mIGRvY3VtZW50PCJ1Ij9kb2N1bWVudDpudWxsLE90PUplJiZKZS51c2VyQWdlbnR8fCIiLFBpPS9FZGdlXC8oXGQrKS8uZXhlYyhPdCksaHU9L01TSUUgXGQvLmV4ZWMoT3QpLHppPS9UcmlkZW50XC8oPzpbNy05XXxcZHsyLH0pXC4uKnJ2OihcZCspLy5leGVjKE90KSxNZT0hIShodXx8eml8fFBpKSxTdD1odT9kb2N1bWVudC5kb2N1bWVudE1vZGU6emk/K3ppWzFdOlBpPytQaVsxXTowLFBlPSFNZSYmL2dlY2tvXC8oXGQrKS9pLnRlc3QoT3QpO1BlJiYrKC9GaXJlZm94XC8oXGQrKS8uZXhlYyhPdCl8fFswLDBdKVsxXTtjb25zdCAkaT0hTWUmJi9DaHJvbWVcLyhcZCspLy5leGVjKE90KSxtZT0hISRpLGZ1PSRpPyskaVsxXTowLGtlPSFNZSYmISFKZSYmL0FwcGxlIENvbXB1dGVyLy50ZXN0KEplLnZlbmRvciksZG49a2UmJigvTW9iaWxlXC9cdysvLnRlc3QoT3QpfHwhIUplJiZKZS5tYXhUb3VjaFBvaW50cz4yKSxJZT1kbnx8KEplPy9NYWMvLnRlc3QoSmUucGxhdGZvcm0pOiExKSxwdT1KZT8vV2luLy50ZXN0KEplLnBsYXRmb3JtKTohMSxydD0vQW5kcm9pZCBcZC8udGVzdChPdCksaXI9ISEkbCYmIndlYmtpdEZvbnRTbW9vdGhpbmciaW4gJGwuZG9jdW1lbnRFbGVtZW50LnN0eWxlLG1wPWlyPysoL1xiQXBwbGVXZWJLaXRcLyhcZCspLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpfHxbMCwwXSlbMV06MDtmdW5jdGlvbiBncChuKXtsZXQgZT1uLmRlZmF1bHRWaWV3JiZuLmRlZmF1bHRWaWV3LnZpc3VhbFZpZXdwb3J0O3JldHVybiBlP3tsZWZ0OjAscmlnaHQ6ZS53aWR0aCx0b3A6MCxib3R0b206ZS5oZWlnaHR9OntsZWZ0OjAscmlnaHQ6bi5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsdG9wOjAsYm90dG9tOm4uZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodH19ZnVuY3Rpb24gUWUobixlKXtyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIiP246bltlXX1mdW5jdGlvbiB5cChuKXtsZXQgZT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9ZS53aWR0aC9uLm9mZnNldFdpZHRofHwxLHI9ZS5oZWlnaHQvbi5vZmZzZXRIZWlnaHR8fDE7cmV0dXJue2xlZnQ6ZS5sZWZ0LHJpZ2h0OmUubGVmdCtuLmNsaWVudFdpZHRoKnQsdG9wOmUudG9wLGJvdHRvbTplLnRvcCtuLmNsaWVudEhlaWdodCpyfX1mdW5jdGlvbiBCbChuLGUsdCl7bGV0IHI9bi5zb21lUHJvcCgic2Nyb2xsVGhyZXNob2xkIil8fDAscz1uLnNvbWVQcm9wKCJzY3JvbGxNYXJnaW4iKXx8NSxpPW4uZG9tLm93bmVyRG9jdW1lbnQ7Zm9yKGxldCBvPXR8fG4uZG9tO287KXtpZihvLm5vZGVUeXBlIT0xKXtvPXVuKG8pO2NvbnRpbnVlfWxldCBsPW8sYT1sPT1pLmJvZHksYz1hP2dwKGkpOnlwKGwpLHU9MCxkPTA7aWYoZS50b3A8Yy50b3ArUWUociwidG9wIik/ZD0tKGMudG9wLWUudG9wK1FlKHMsInRvcCIpKTplLmJvdHRvbT5jLmJvdHRvbS1RZShyLCJib3R0b20iKSYmKGQ9ZS5ib3R0b20tZS50b3A+Yy5ib3R0b20tYy50b3A/ZS50b3ArUWUocywidG9wIiktYy50b3A6ZS5ib3R0b20tYy5ib3R0b20rUWUocywiYm90dG9tIikpLGUubGVmdDxjLmxlZnQrUWUociwibGVmdCIpP3U9LShjLmxlZnQtZS5sZWZ0K1FlKHMsImxlZnQiKSk6ZS5yaWdodD5jLnJpZ2h0LVFlKHIsInJpZ2h0IikmJih1PWUucmlnaHQtYy5yaWdodCtRZShzLCJyaWdodCIpKSx1fHxkKWlmKGEpaS5kZWZhdWx0Vmlldy5zY3JvbGxCeSh1LGQpO2Vsc2V7bGV0IGY9bC5zY3JvbGxMZWZ0LHA9bC5zY3JvbGxUb3A7ZCYmKGwuc2Nyb2xsVG9wKz1kKSx1JiYobC5zY3JvbGxMZWZ0Kz11KTtsZXQgbT1sLnNjcm9sbExlZnQtZixnPWwuc2Nyb2xsVG9wLXA7ZT17bGVmdDplLmxlZnQtbSx0b3A6ZS50b3AtZyxyaWdodDplLnJpZ2h0LW0sYm90dG9tOmUuYm90dG9tLWd9fWxldCBoPWE/ImZpeGVkIjpnZXRDb21wdXRlZFN0eWxlKG8pLnBvc2l0aW9uO2lmKC9eKGZpeGVkfHN0aWNreSkkLy50ZXN0KGgpKWJyZWFrO289aD09ImFic29sdXRlIj9vLm9mZnNldFBhcmVudDp1bihvKX19ZnVuY3Rpb24ga3Aobil7bGV0IGU9bi5kb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdD1NYXRoLm1heCgwLGUudG9wKSxyLHM7Zm9yKGxldCBpPShlLmxlZnQrZS5yaWdodCkvMixvPXQrMTtvPE1hdGgubWluKGlubmVySGVpZ2h0LGUuYm90dG9tKTtvKz01KXtsZXQgbD1uLnJvb3QuZWxlbWVudEZyb21Qb2ludChpLG8pO2lmKCFsfHxsPT1uLmRvbXx8IW4uZG9tLmNvbnRhaW5zKGwpKWNvbnRpbnVlO2xldCBhPWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoYS50b3A+PXQtMjApe3I9bCxzPWEudG9wO2JyZWFrfX1yZXR1cm57cmVmRE9NOnIscmVmVG9wOnMsc3RhY2s6bXUobi5kb20pfX1mdW5jdGlvbiBtdShuKXtsZXQgZT1bXSx0PW4ub3duZXJEb2N1bWVudDtmb3IobGV0IHI9bjtyJiYoZS5wdXNoKHtkb206cix0b3A6ci5zY3JvbGxUb3AsbGVmdDpyLnNjcm9sbExlZnR9KSxuIT10KTtyPXVuKHIpKTtyZXR1cm4gZX1mdW5jdGlvbiBicCh7cmVmRE9NOm4scmVmVG9wOmUsc3RhY2s6dH0pe2xldCByPW4/bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A6MDtndSh0LHI9PTA/MDpyLWUpfWZ1bmN0aW9uIGd1KG4sZSl7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2xldHtkb206cix0b3A6cyxsZWZ0Oml9PW5bdF07ci5zY3JvbGxUb3AhPXMrZSYmKHIuc2Nyb2xsVG9wPXMrZSksci5zY3JvbGxMZWZ0IT1pJiYoci5zY3JvbGxMZWZ0PWkpfX1sZXQgWXQ9bnVsbDtmdW5jdGlvbiB4cChuKXtpZihuLnNldEFjdGl2ZSlyZXR1cm4gbi5zZXRBY3RpdmUoKTtpZihZdClyZXR1cm4gbi5mb2N1cyhZdCk7bGV0IGU9bXUobik7bi5mb2N1cyhZdD09bnVsbD97Z2V0IHByZXZlbnRTY3JvbGwoKXtyZXR1cm4gWXQ9e3ByZXZlbnRTY3JvbGw6ITB9LCEwfX06dm9pZCAwKSxZdHx8KFl0PSExLGd1KGUsMCkpfWZ1bmN0aW9uIHl1KG4sZSl7bGV0IHQscj0yZTgscyxpPTAsbz1lLnRvcCxsPWUudG9wLGEsYztmb3IobGV0IHU9bi5maXJzdENoaWxkLGQ9MDt1O3U9dS5uZXh0U2libGluZyxkKyspe2xldCBoO2lmKHUubm9kZVR5cGU9PTEpaD11LmdldENsaWVudFJlY3RzKCk7ZWxzZSBpZih1Lm5vZGVUeXBlPT0zKWg9dHQodSkuZ2V0Q2xpZW50UmVjdHMoKTtlbHNlIGNvbnRpbnVlO2ZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7ZisrKXtsZXQgcD1oW2ZdO2lmKHAudG9wPD1vJiZwLmJvdHRvbT49bCl7bz1NYXRoLm1heChwLmJvdHRvbSxvKSxsPU1hdGgubWluKHAudG9wLGwpO2xldCBtPXAubGVmdD5lLmxlZnQ/cC5sZWZ0LWUubGVmdDpwLnJpZ2h0PGUubGVmdD9lLmxlZnQtcC5yaWdodDowO2lmKG08cil7dD11LHI9bSxzPW0mJnQubm9kZVR5cGU9PTM/e2xlZnQ6cC5yaWdodDxlLmxlZnQ/cC5yaWdodDpwLmxlZnQsdG9wOmUudG9wfTplLHUubm9kZVR5cGU9PTEmJm0mJihpPWQrKGUubGVmdD49KHAubGVmdCtwLnJpZ2h0KS8yPzE6MCkpO2NvbnRpbnVlfX1lbHNlIHAudG9wPmUudG9wJiYhYSYmcC5sZWZ0PD1lLmxlZnQmJnAucmlnaHQ+PWUubGVmdCYmKGE9dSxjPXtsZWZ0Ok1hdGgubWF4KHAubGVmdCxNYXRoLm1pbihwLnJpZ2h0LGUubGVmdCkpLHRvcDpwLnRvcH0pOyF0JiYoZS5sZWZ0Pj1wLnJpZ2h0JiZlLnRvcD49cC50b3B8fGUubGVmdD49cC5sZWZ0JiZlLnRvcD49cC5ib3R0b20pJiYoaT1kKzEpfX1yZXR1cm4hdCYmYSYmKHQ9YSxzPWMscj0wKSx0JiZ0Lm5vZGVUeXBlPT0zP3dwKHQscyk6IXR8fHImJnQubm9kZVR5cGU9PTE/e25vZGU6bixvZmZzZXQ6aX06eXUodCxzKX1mdW5jdGlvbiB3cChuLGUpe2xldCB0PW4ubm9kZVZhbHVlLmxlbmd0aCxyPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCkscztmb3IobGV0IGk9MDtpPHQ7aSsrKXtyLnNldEVuZChuLGkrMSksci5zZXRTdGFydChuLGkpO2xldCBvPWh0KHIsMSk7aWYoby50b3AhPW8uYm90dG9tJiZ3byhlLG8pKXtzPXtub2RlOm4sb2Zmc2V0OmkrKGUubGVmdD49KG8ubGVmdCtvLnJpZ2h0KS8yPzE6MCl9O2JyZWFrfX1yZXR1cm4gci5kZXRhY2goKSxzfHx7bm9kZTpuLG9mZnNldDowfX1mdW5jdGlvbiB3byhuLGUpe3JldHVybiBuLmxlZnQ+PWUubGVmdC0xJiZuLmxlZnQ8PWUucmlnaHQrMSYmbi50b3A+PWUudG9wLTEmJm4udG9wPD1lLmJvdHRvbSsxfWZ1bmN0aW9uIHZwKG4sZSl7bGV0IHQ9bi5wYXJlbnROb2RlO3JldHVybiB0JiYvXmxpJC9pLnRlc3QodC5ub2RlTmFtZSkmJmUubGVmdDxuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ/dDpufWZ1bmN0aW9uIFNwKG4sZSx0KXtsZXR7bm9kZTpyLG9mZnNldDpzfT15dShlLHQpLGk9LTE7aWYoci5ub2RlVHlwZT09MSYmIXIuZmlyc3RDaGlsZCl7bGV0IG89ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpPW8ubGVmdCE9by5yaWdodCYmdC5sZWZ0PihvLmxlZnQrby5yaWdodCkvMj8xOi0xfXJldHVybiBuLmRvY1ZpZXcucG9zRnJvbURPTShyLHMsaSl9ZnVuY3Rpb24gQ3AobixlLHQscil7bGV0IHM9LTE7Zm9yKGxldCBpPWUsbz0hMTtpIT1uLmRvbTspe2xldCBsPW4uZG9jVmlldy5uZWFyZXN0RGVzYyhpLCEwKSxhO2lmKCFsKXJldHVybiBudWxsO2lmKGwuZG9tLm5vZGVUeXBlPT0xJiYobC5ub2RlLmlzQmxvY2smJmwucGFyZW50fHwhbC5jb250ZW50RE9NKSYmKChhPWwuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS53aWR0aHx8YS5oZWlnaHQpJiYobC5ub2RlLmlzQmxvY2smJmwucGFyZW50JiYhL15UKFJ8Qk9EWXxIRUFEfEZPT1QpJC8udGVzdChsLmRvbS5ub2RlTmFtZSkmJighbyYmYS5sZWZ0PnIubGVmdHx8YS50b3A+ci50b3A/cz1sLnBvc0JlZm9yZTooIW8mJmEucmlnaHQ8ci5sZWZ0fHxhLmJvdHRvbTxyLnRvcCkmJihzPWwucG9zQWZ0ZXIpLG89ITApLCFsLmNvbnRlbnRET00mJnM8MCYmIWwubm9kZS5pc1RleHQpKXJldHVybihsLm5vZGUuaXNCbG9jaz9yLnRvcDwoYS50b3ArYS5ib3R0b20pLzI6ci5sZWZ0PChhLmxlZnQrYS5yaWdodCkvMik/bC5wb3NCZWZvcmU6bC5wb3NBZnRlcjtpPWwuZG9tLnBhcmVudE5vZGV9cmV0dXJuIHM+LTE/czpuLmRvY1ZpZXcucG9zRnJvbURPTShlLHQsLTEpfWZ1bmN0aW9uIGt1KG4sZSx0KXtsZXQgcj1uLmNoaWxkTm9kZXMubGVuZ3RoO2lmKHImJnQudG9wPHQuYm90dG9tKWZvcihsZXQgcz1NYXRoLm1heCgwLE1hdGgubWluKHItMSxNYXRoLmZsb29yKHIqKGUudG9wLXQudG9wKS8odC5ib3R0b20tdC50b3ApKS0yKSksaT1zOzspe2xldCBvPW4uY2hpbGROb2Rlc1tpXTtpZihvLm5vZGVUeXBlPT0xKXtsZXQgbD1vLmdldENsaWVudFJlY3RzKCk7Zm9yKGxldCBhPTA7YTxsLmxlbmd0aDthKyspe2xldCBjPWxbYV07aWYod28oZSxjKSlyZXR1cm4ga3UobyxlLGMpfX1pZigoaT0oaSsxKSVyKT09cylicmVha31yZXR1cm4gbn1mdW5jdGlvbiBUcChuLGUpe2xldCB0PW4uZG9tLm93bmVyRG9jdW1lbnQscixzPTAsaT1wcCh0LGUubGVmdCxlLnRvcCk7aSYmKHtub2RlOnIsb2Zmc2V0OnN9PWkpO2xldCBvPShuLnJvb3QuZWxlbWVudEZyb21Qb2ludD9uLnJvb3Q6dCkuZWxlbWVudEZyb21Qb2ludChlLmxlZnQsZS50b3ApLGw7aWYoIW98fCFuLmRvbS5jb250YWlucyhvLm5vZGVUeXBlIT0xP28ucGFyZW50Tm9kZTpvKSl7bGV0IGM9bi5kb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIXdvKGUsYyl8fChvPWt1KG4uZG9tLGUsYyksIW8pKXJldHVybiBudWxsfWlmKGtlKWZvcihsZXQgYz1vO3ImJmM7Yz11bihjKSljLmRyYWdnYWJsZSYmKHI9dm9pZCAwKTtpZihvPXZwKG8sZSkscil7aWYoUGUmJnIubm9kZVR5cGU9PTEmJihzPU1hdGgubWluKHMsci5jaGlsZE5vZGVzLmxlbmd0aCksczxyLmNoaWxkTm9kZXMubGVuZ3RoKSl7bGV0IHU9ci5jaGlsZE5vZGVzW3NdLGQ7dS5ub2RlTmFtZT09IklNRyImJihkPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLnJpZ2h0PD1lLmxlZnQmJmQuYm90dG9tPmUudG9wJiZzKyt9bGV0IGM7aXImJnMmJnIubm9kZVR5cGU9PTEmJihjPXIuY2hpbGROb2Rlc1tzLTFdKS5ub2RlVHlwZT09MSYmYy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSImJmMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wPj1lLnRvcCYmcy0tLHI9PW4uZG9tJiZzPT1yLmNoaWxkTm9kZXMubGVuZ3RoLTEmJnIubGFzdENoaWxkLm5vZGVUeXBlPT0xJiZlLnRvcD5yLmxhc3RDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20/bD1uLnN0YXRlLmRvYy5jb250ZW50LnNpemU6KHM9PTB8fHIubm9kZVR5cGUhPTF8fHIuY2hpbGROb2Rlc1tzLTFdLm5vZGVOYW1lIT0iQlIiKSYmKGw9Q3AobixyLHMsZSkpfWw9PW51bGwmJihsPVNwKG4sbyxlKSk7bGV0IGE9bi5kb2NWaWV3Lm5lYXJlc3REZXNjKG8sITApO3JldHVybntwb3M6bCxpbnNpZGU6YT9hLnBvc0F0U3RhcnQtYS5ib3JkZXI6LTF9fWZ1bmN0aW9uIF9sKG4pe3JldHVybiBuLnRvcDxuLmJvdHRvbXx8bi5sZWZ0PG4ucmlnaHR9ZnVuY3Rpb24gaHQobixlKXtsZXQgdD1uLmdldENsaWVudFJlY3RzKCk7aWYodC5sZW5ndGgpe2xldCByPXRbZTwwPzA6dC5sZW5ndGgtMV07aWYoX2wocikpcmV0dXJuIHJ9cmV0dXJuIEFycmF5LnByb3RvdHlwZS5maW5kLmNhbGwodCxfbCl8fG4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y29uc3QgTXA9L1tcdTA1OTAtXHUwNWY0XHUwNjAwLVx1MDZmZlx1MDcwMC1cdTA4YWNdLztmdW5jdGlvbiBidShuLGUsdCl7bGV0e25vZGU6cixvZmZzZXQ6cyxhdG9tOml9PW4uZG9jVmlldy5kb21Gcm9tUG9zKGUsdDwwPy0xOjEpLG89aXJ8fFBlO2lmKHIubm9kZVR5cGU9PTMpaWYobyYmKE1wLnRlc3Qoci5ub2RlVmFsdWUpfHwodDwwPyFzOnM9PXIubm9kZVZhbHVlLmxlbmd0aCkpKXtsZXQgYT1odCh0dChyLHMscyksdCk7aWYoUGUmJnMmJi9ccy8udGVzdChyLm5vZGVWYWx1ZVtzLTFdKSYmczxyLm5vZGVWYWx1ZS5sZW5ndGgpe2xldCBjPWh0KHR0KHIscy0xLHMtMSksLTEpO2lmKGMudG9wPT1hLnRvcCl7bGV0IHU9aHQodHQocixzLHMrMSksLTEpO2lmKHUudG9wIT1hLnRvcClyZXR1cm4ga24odSx1LmxlZnQ8Yy5sZWZ0KX19cmV0dXJuIGF9ZWxzZXtsZXQgYT1zLGM9cyx1PXQ8MD8xOi0xO3JldHVybiB0PDAmJiFzPyhjKyssdT0tMSk6dD49MCYmcz09ci5ub2RlVmFsdWUubGVuZ3RoPyhhLS0sdT0xKTp0PDA/YS0tOmMrKyxrbihodCh0dChyLGEsYyksdSksdTwwKX1pZighbi5zdGF0ZS5kb2MucmVzb2x2ZShlLShpfHwwKSkucGFyZW50LmlubGluZUNvbnRlbnQpe2lmKGk9PW51bGwmJnMmJih0PDB8fHM9PURlKHIpKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3MtMV07aWYoYS5ub2RlVHlwZT09MSlyZXR1cm4gb2koYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwhMSl9aWYoaT09bnVsbCYmczxEZShyKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3NdO2lmKGEubm9kZVR5cGU9PTEpcmV0dXJuIG9pKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksITApfXJldHVybiBvaShyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ+PTApfWlmKGk9PW51bGwmJnMmJih0PDB8fHM9PURlKHIpKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3MtMV0sYz1hLm5vZGVUeXBlPT0zP3R0KGEsRGUoYSktKG8/MDoxKSk6YS5ub2RlVHlwZT09MSYmKGEubm9kZU5hbWUhPSJCUiJ8fCFhLm5leHRTaWJsaW5nKT9hOm51bGw7aWYoYylyZXR1cm4ga24oaHQoYywxKSwhMSl9aWYoaT09bnVsbCYmczxEZShyKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3NdO2Zvcig7YS5wbVZpZXdEZXNjJiZhLnBtVmlld0Rlc2MuaWdub3JlRm9yQ29vcmRzOylhPWEubmV4dFNpYmxpbmc7bGV0IGM9YT9hLm5vZGVUeXBlPT0zP3R0KGEsMCxvPzA6MSk6YS5ub2RlVHlwZT09MT9hOm51bGw6bnVsbDtpZihjKXJldHVybiBrbihodChjLC0xKSwhMCl9cmV0dXJuIGtuKGh0KHIubm9kZVR5cGU9PTM/dHQocik6ciwtdCksdD49MCl9ZnVuY3Rpb24ga24obixlKXtpZihuLndpZHRoPT0wKXJldHVybiBuO2xldCB0PWU/bi5sZWZ0Om4ucmlnaHQ7cmV0dXJue3RvcDpuLnRvcCxib3R0b206bi5ib3R0b20sbGVmdDp0LHJpZ2h0OnR9fWZ1bmN0aW9uIG9pKG4sZSl7aWYobi5oZWlnaHQ9PTApcmV0dXJuIG47bGV0IHQ9ZT9uLnRvcDpuLmJvdHRvbTtyZXR1cm57dG9wOnQsYm90dG9tOnQsbGVmdDpuLmxlZnQscmlnaHQ6bi5yaWdodH19ZnVuY3Rpb24geHUobixlLHQpe2xldCByPW4uc3RhdGUscz1uLnJvb3QuYWN0aXZlRWxlbWVudDtyIT1lJiZuLnVwZGF0ZVN0YXRlKGUpLHMhPW4uZG9tJiZuLmZvY3VzKCk7dHJ5e3JldHVybiB0KCl9ZmluYWxseXtyIT1lJiZuLnVwZGF0ZVN0YXRlKHIpLHMhPW4uZG9tJiZzJiZzLmZvY3VzKCl9fWZ1bmN0aW9uIEVwKG4sZSx0KXtsZXQgcj1lLnNlbGVjdGlvbixzPXQ9PSJ1cCI/ci4kZnJvbTpyLiR0bztyZXR1cm4geHUobixlLCgpPT57bGV0e25vZGU6aX09bi5kb2NWaWV3LmRvbUZyb21Qb3Mocy5wb3MsdD09InVwIj8tMToxKTtmb3IoOzspe2xldCBsPW4uZG9jVmlldy5uZWFyZXN0RGVzYyhpLCEwKTtpZighbClicmVhaztpZihsLm5vZGUuaXNCbG9jayl7aT1sLmNvbnRlbnRET018fGwuZG9tO2JyZWFrfWk9bC5kb20ucGFyZW50Tm9kZX1sZXQgbz1idShuLHMucG9zLDEpO2ZvcihsZXQgbD1pLmZpcnN0Q2hpbGQ7bDtsPWwubmV4dFNpYmxpbmcpe2xldCBhO2lmKGwubm9kZVR5cGU9PTEpYT1sLmdldENsaWVudFJlY3RzKCk7ZWxzZSBpZihsLm5vZGVUeXBlPT0zKWE9dHQobCwwLGwubm9kZVZhbHVlLmxlbmd0aCkuZ2V0Q2xpZW50UmVjdHMoKTtlbHNlIGNvbnRpbnVlO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtsZXQgdT1hW2NdO2lmKHUuYm90dG9tPnUudG9wKzEmJih0PT0idXAiP28udG9wLXUudG9wPih1LmJvdHRvbS1vLnRvcCkqMjp1LmJvdHRvbS1vLmJvdHRvbT4oby5ib3R0b20tdS50b3ApKjIpKXJldHVybiExfX1yZXR1cm4hMH0pfWNvbnN0IEFwPS9bXHUwNTkwLVx1MDhhY10vO2Z1bmN0aW9uIE9wKG4sZSx0KXtsZXR7JGhlYWQ6cn09ZS5zZWxlY3Rpb247aWYoIXIucGFyZW50LmlzVGV4dGJsb2NrKXJldHVybiExO2xldCBzPXIucGFyZW50T2Zmc2V0LGk9IXMsbz1zPT1yLnBhcmVudC5jb250ZW50LnNpemUsbD1uLmRvbVNlbGVjdGlvbigpO3JldHVybiBsPyFBcC50ZXN0KHIucGFyZW50LnRleHRDb250ZW50KXx8IWwubW9kaWZ5P3Q9PSJsZWZ0Inx8dD09ImJhY2t3YXJkIj9pOm86eHUobixlLCgpPT57bGV0e2ZvY3VzTm9kZTphLGZvY3VzT2Zmc2V0OmMsYW5jaG9yTm9kZTp1LGFuY2hvck9mZnNldDpkfT1uLmRvbVNlbGVjdGlvblJhbmdlKCksaD1sLmNhcmV0QmlkaUxldmVsO2wubW9kaWZ5KCJtb3ZlIix0LCJjaGFyYWN0ZXIiKTtsZXQgZj1yLmRlcHRoP24uZG9jVmlldy5kb21BZnRlclBvcyhyLmJlZm9yZSgpKTpuLmRvbSx7Zm9jdXNOb2RlOnAsZm9jdXNPZmZzZXQ6bX09bi5kb21TZWxlY3Rpb25SYW5nZSgpLGc9cCYmIWYuY29udGFpbnMocC5ub2RlVHlwZT09MT9wOnAucGFyZW50Tm9kZSl8fGE9PXAmJmM9PW07dHJ5e2wuY29sbGFwc2UodSxkKSxhJiYoYSE9dXx8YyE9ZCkmJmwuZXh0ZW5kJiZsLmV4dGVuZChhLGMpfWNhdGNoe31yZXR1cm4gaCE9bnVsbCYmKGwuY2FyZXRCaWRpTGV2ZWw9aCksZ30pOnIucG9zPT1yLnN0YXJ0KCl8fHIucG9zPT1yLmVuZCgpfWxldCBIbD1udWxsLEZsPW51bGwsVmw9ITE7ZnVuY3Rpb24gTnAobixlLHQpe3JldHVybiBIbD09ZSYmRmw9PXQ/Vmw6KEhsPWUsRmw9dCxWbD10PT0idXAifHx0PT0iZG93biI/RXAobixlLHQpOk9wKG4sZSx0KSl9Y29uc3QgemU9MCxVbD0xLER0PTIsR2U9MztjbGFzcyBvcntjb25zdHJ1Y3RvcihlLHQscixzKXt0aGlzLnBhcmVudD1lLHRoaXMuY2hpbGRyZW49dCx0aGlzLmRvbT1yLHRoaXMuY29udGVudERPTT1zLHRoaXMuZGlydHk9emUsci5wbVZpZXdEZXNjPXRoaXN9bWF0Y2hlc1dpZGdldChlKXtyZXR1cm4hMX1tYXRjaGVzTWFyayhlKXtyZXR1cm4hMX1tYXRjaGVzTm9kZShlLHQscil7cmV0dXJuITF9bWF0Y2hlc0hhY2soZSl7cmV0dXJuITF9cGFyc2VSdWxlKCl7cmV0dXJuIG51bGx9c3RvcEV2ZW50KGUpe3JldHVybiExfWdldCBzaXplKCl7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrKyllKz10aGlzLmNoaWxkcmVuW3RdLnNpemU7cmV0dXJuIGV9Z2V0IGJvcmRlcigpe3JldHVybiAwfWRlc3Ryb3koKXt0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5kb20ucG1WaWV3RGVzYz09dGhpcyYmKHRoaXMuZG9tLnBtVmlld0Rlc2M9dm9pZCAwKTtmb3IobGV0IGU9MDtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKyl0aGlzLmNoaWxkcmVuW2VdLmRlc3Ryb3koKX1wb3NCZWZvcmVDaGlsZChlKXtmb3IobGV0IHQ9MCxyPXRoaXMucG9zQXRTdGFydDs7dCsrKXtsZXQgcz10aGlzLmNoaWxkcmVuW3RdO2lmKHM9PWUpcmV0dXJuIHI7cis9cy5zaXplfX1nZXQgcG9zQmVmb3JlKCl7cmV0dXJuIHRoaXMucGFyZW50LnBvc0JlZm9yZUNoaWxkKHRoaXMpfWdldCBwb3NBdFN0YXJ0KCl7cmV0dXJuIHRoaXMucGFyZW50P3RoaXMucGFyZW50LnBvc0JlZm9yZUNoaWxkKHRoaXMpK3RoaXMuYm9yZGVyOjB9Z2V0IHBvc0FmdGVyKCl7cmV0dXJuIHRoaXMucG9zQmVmb3JlK3RoaXMuc2l6ZX1nZXQgcG9zQXRFbmQoKXtyZXR1cm4gdGhpcy5wb3NBdFN0YXJ0K3RoaXMuc2l6ZS0yKnRoaXMuYm9yZGVyfWxvY2FsUG9zRnJvbURPTShlLHQscil7aWYodGhpcy5jb250ZW50RE9NJiZ0aGlzLmNvbnRlbnRET00uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSkpaWYocjwwKXtsZXQgaSxvO2lmKGU9PXRoaXMuY29udGVudERPTSlpPWUuY2hpbGROb2Rlc1t0LTFdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7aT1lLnByZXZpb3VzU2libGluZ31mb3IoO2kmJiEoKG89aS5wbVZpZXdEZXNjKSYmby5wYXJlbnQ9PXRoaXMpOylpPWkucHJldmlvdXNTaWJsaW5nO3JldHVybiBpP3RoaXMucG9zQmVmb3JlQ2hpbGQobykrby5zaXplOnRoaXMucG9zQXRTdGFydH1lbHNle2xldCBpLG87aWYoZT09dGhpcy5jb250ZW50RE9NKWk9ZS5jaGlsZE5vZGVzW3RdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7aT1lLm5leHRTaWJsaW5nfWZvcig7aSYmISgobz1pLnBtVmlld0Rlc2MpJiZvLnBhcmVudD09dGhpcyk7KWk9aS5uZXh0U2libGluZztyZXR1cm4gaT90aGlzLnBvc0JlZm9yZUNoaWxkKG8pOnRoaXMucG9zQXRFbmR9bGV0IHM7aWYoZT09dGhpcy5kb20mJnRoaXMuY29udGVudERPTSlzPXQ+ZmUodGhpcy5jb250ZW50RE9NKTtlbHNlIGlmKHRoaXMuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NIT10aGlzLmRvbSYmdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKSlzPWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcy5jb250ZW50RE9NKSYyO2Vsc2UgaWYodGhpcy5kb20uZmlyc3RDaGlsZCl7aWYodD09MClmb3IobGV0IGk9ZTs7aT1pLnBhcmVudE5vZGUpe2lmKGk9PXRoaXMuZG9tKXtzPSExO2JyZWFrfWlmKGkucHJldmlvdXNTaWJsaW5nKWJyZWFrfWlmKHM9PW51bGwmJnQ9PWUuY2hpbGROb2Rlcy5sZW5ndGgpZm9yKGxldCBpPWU7O2k9aS5wYXJlbnROb2RlKXtpZihpPT10aGlzLmRvbSl7cz0hMDticmVha31pZihpLm5leHRTaWJsaW5nKWJyZWFrfX1yZXR1cm4gcz8/cj4wP3RoaXMucG9zQXRFbmQ6dGhpcy5wb3NBdFN0YXJ0fW5lYXJlc3REZXNjKGUsdD0hMSl7Zm9yKGxldCByPSEwLHM9ZTtzO3M9cy5wYXJlbnROb2RlKXtsZXQgaT10aGlzLmdldERlc2MocyksbztpZihpJiYoIXR8fGkubm9kZSkpaWYociYmKG89aS5ub2RlRE9NKSYmIShvLm5vZGVUeXBlPT0xP28uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSk6bz09ZSkpcj0hMTtlbHNlIHJldHVybiBpfX1nZXREZXNjKGUpe2xldCB0PWUucG1WaWV3RGVzYztmb3IobGV0IHI9dDtyO3I9ci5wYXJlbnQpaWYocj09dGhpcylyZXR1cm4gdH1wb3NGcm9tRE9NKGUsdCxyKXtmb3IobGV0IHM9ZTtzO3M9cy5wYXJlbnROb2RlKXtsZXQgaT10aGlzLmdldERlc2Mocyk7aWYoaSlyZXR1cm4gaS5sb2NhbFBvc0Zyb21ET00oZSx0LHIpfXJldHVybi0xfWRlc2NBdChlKXtmb3IobGV0IHQ9MCxyPTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2xldCBzPXRoaXMuY2hpbGRyZW5bdF0saT1yK3Muc2l6ZTtpZihyPT1lJiZpIT1yKXtmb3IoOyFzLmJvcmRlciYmcy5jaGlsZHJlbi5sZW5ndGg7KWZvcihsZXQgbz0wO288cy5jaGlsZHJlbi5sZW5ndGg7bysrKXtsZXQgbD1zLmNoaWxkcmVuW29dO2lmKGwuc2l6ZSl7cz1sO2JyZWFrfX1yZXR1cm4gc31pZihlPGkpcmV0dXJuIHMuZGVzY0F0KGUtci1zLmJvcmRlcik7cj1pfX1kb21Gcm9tUG9zKGUsdCl7aWYoIXRoaXMuY29udGVudERPTSlyZXR1cm57bm9kZTp0aGlzLmRvbSxvZmZzZXQ6MCxhdG9tOmUrMX07bGV0IHI9MCxzPTA7Zm9yKGxldCBpPTA7cjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtyKyspe2xldCBvPXRoaXMuY2hpbGRyZW5bcl0sbD1pK28uc2l6ZTtpZihsPmV8fG8gaW5zdGFuY2VvZiB2dSl7cz1lLWk7YnJlYWt9aT1sfWlmKHMpcmV0dXJuIHRoaXMuY2hpbGRyZW5bcl0uZG9tRnJvbVBvcyhzLXRoaXMuY2hpbGRyZW5bcl0uYm9yZGVyLHQpO2ZvcihsZXQgaTtyJiYhKGk9dGhpcy5jaGlsZHJlbltyLTFdKS5zaXplJiZpIGluc3RhbmNlb2Ygd3UmJmkuc2lkZT49MDtyLS0pO2lmKHQ8PTApe2xldCBpLG89ITA7Zm9yKDtpPXI/dGhpcy5jaGlsZHJlbltyLTFdOm51bGwsISghaXx8aS5kb20ucGFyZW50Tm9kZT09dGhpcy5jb250ZW50RE9NKTtyLS0sbz0hMSk7cmV0dXJuIGkmJnQmJm8mJiFpLmJvcmRlciYmIWkuZG9tQXRvbT9pLmRvbUZyb21Qb3MoaS5zaXplLHQpOntub2RlOnRoaXMuY29udGVudERPTSxvZmZzZXQ6aT9mZShpLmRvbSkrMTowfX1lbHNle2xldCBpLG89ITA7Zm9yKDtpPXI8dGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlbltyXTpudWxsLCEoIWl8fGkuZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSk7cisrLG89ITEpO3JldHVybiBpJiZvJiYhaS5ib3JkZXImJiFpLmRvbUF0b20/aS5kb21Gcm9tUG9zKDAsdCk6e25vZGU6dGhpcy5jb250ZW50RE9NLG9mZnNldDppP2ZlKGkuZG9tKTp0aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGh9fX1wYXJzZVJhbmdlKGUsdCxyPTApe2lmKHRoaXMuY2hpbGRyZW4ubGVuZ3RoPT0wKXJldHVybntub2RlOnRoaXMuY29udGVudERPTSxmcm9tOmUsdG86dCxmcm9tT2Zmc2V0OjAsdG9PZmZzZXQ6dGhpcy5jb250ZW50RE9NLmNoaWxkTm9kZXMubGVuZ3RofTtsZXQgcz0tMSxpPS0xO2ZvcihsZXQgbz1yLGw9MDs7bCsrKXtsZXQgYT10aGlzLmNoaWxkcmVuW2xdLGM9bythLnNpemU7aWYocz09LTEmJmU8PWMpe2xldCB1PW8rYS5ib3JkZXI7aWYoZT49dSYmdDw9Yy1hLmJvcmRlciYmYS5ub2RlJiZhLmNvbnRlbnRET00mJnRoaXMuY29udGVudERPTS5jb250YWlucyhhLmNvbnRlbnRET00pKXJldHVybiBhLnBhcnNlUmFuZ2UoZSx0LHUpO2U9bztmb3IobGV0IGQ9bDtkPjA7ZC0tKXtsZXQgaD10aGlzLmNoaWxkcmVuW2QtMV07aWYoaC5zaXplJiZoLmRvbS5wYXJlbnROb2RlPT10aGlzLmNvbnRlbnRET00mJiFoLmVtcHR5Q2hpbGRBdCgxKSl7cz1mZShoLmRvbSkrMTticmVha31lLT1oLnNpemV9cz09LTEmJihzPTApfWlmKHM+LTEmJihjPnR8fGw9PXRoaXMuY2hpbGRyZW4ubGVuZ3RoLTEpKXt0PWM7Zm9yKGxldCB1PWwrMTt1PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3UrKyl7bGV0IGQ9dGhpcy5jaGlsZHJlblt1XTtpZihkLnNpemUmJmQuZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIWQuZW1wdHlDaGlsZEF0KC0xKSl7aT1mZShkLmRvbSk7YnJlYWt9dCs9ZC5zaXplfWk9PS0xJiYoaT10aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGgpO2JyZWFrfW89Y31yZXR1cm57bm9kZTp0aGlzLmNvbnRlbnRET00sZnJvbTplLHRvOnQsZnJvbU9mZnNldDpzLHRvT2Zmc2V0Oml9fWVtcHR5Q2hpbGRBdChlKXtpZih0aGlzLmJvcmRlcnx8IXRoaXMuY29udGVudERPTXx8IXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiExO2xldCB0PXRoaXMuY2hpbGRyZW5bZTwwPzA6dGhpcy5jaGlsZHJlbi5sZW5ndGgtMV07cmV0dXJuIHQuc2l6ZT09MHx8dC5lbXB0eUNoaWxkQXQoZSl9ZG9tQWZ0ZXJQb3MoZSl7bGV0e25vZGU6dCxvZmZzZXQ6cn09dGhpcy5kb21Gcm9tUG9zKGUsMCk7aWYodC5ub2RlVHlwZSE9MXx8cj09dC5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gbm9kZSBhZnRlciBwb3MgIitlKTtyZXR1cm4gdC5jaGlsZE5vZGVzW3JdfXNldFNlbGVjdGlvbihlLHQscixzPSExKXtsZXQgaT1NYXRoLm1pbihlLHQpLG89TWF0aC5tYXgoZSx0KTtmb3IobGV0IGY9MCxwPTA7Zjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtmKyspe2xldCBtPXRoaXMuY2hpbGRyZW5bZl0sZz1wK20uc2l6ZTtpZihpPnAmJm88ZylyZXR1cm4gbS5zZXRTZWxlY3Rpb24oZS1wLW0uYm9yZGVyLHQtcC1tLmJvcmRlcixyLHMpO3A9Z31sZXQgbD10aGlzLmRvbUZyb21Qb3MoZSxlPy0xOjEpLGE9dD09ZT9sOnRoaXMuZG9tRnJvbVBvcyh0LHQ/LTE6MSksYz1yLnJvb3QuZ2V0U2VsZWN0aW9uKCksdT1yLmRvbVNlbGVjdGlvblJhbmdlKCksZD0hMTtpZigoUGV8fGtlKSYmZT09dCl7bGV0e25vZGU6ZixvZmZzZXQ6cH09bDtpZihmLm5vZGVUeXBlPT0zKXtpZihkPSEhKHAmJmYubm9kZVZhbHVlW3AtMV09PWAKYCksZCYmcD09Zi5ub2RlVmFsdWUubGVuZ3RoKWZvcihsZXQgbT1mLGc7bTttPW0ucGFyZW50Tm9kZSl7aWYoZz1tLm5leHRTaWJsaW5nKXtnLm5vZGVOYW1lPT0iQlIiJiYobD1hPXtub2RlOmcucGFyZW50Tm9kZSxvZmZzZXQ6ZmUoZykrMX0pO2JyZWFrfWxldCB5PW0ucG1WaWV3RGVzYztpZih5JiZ5Lm5vZGUmJnkubm9kZS5pc0Jsb2NrKWJyZWFrfX1lbHNle2xldCBtPWYuY2hpbGROb2Rlc1twLTFdO2Q9bSYmKG0ubm9kZU5hbWU9PSJCUiJ8fG0uY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKX19aWYoUGUmJnUuZm9jdXNOb2RlJiZ1LmZvY3VzTm9kZSE9YS5ub2RlJiZ1LmZvY3VzTm9kZS5ub2RlVHlwZT09MSl7bGV0IGY9dS5mb2N1c05vZGUuY2hpbGROb2Rlc1t1LmZvY3VzT2Zmc2V0XTtmJiZmLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIiYmKHM9ITApfWlmKCEoc3x8ZCYma2UpJiZVdChsLm5vZGUsbC5vZmZzZXQsdS5hbmNob3JOb2RlLHUuYW5jaG9yT2Zmc2V0KSYmVXQoYS5ub2RlLGEub2Zmc2V0LHUuZm9jdXNOb2RlLHUuZm9jdXNPZmZzZXQpKXJldHVybjtsZXQgaD0hMTtpZigoYy5leHRlbmR8fGU9PXQpJiYhKGQmJlBlKSl7Yy5jb2xsYXBzZShsLm5vZGUsbC5vZmZzZXQpO3RyeXtlIT10JiZjLmV4dGVuZChhLm5vZGUsYS5vZmZzZXQpLGg9ITB9Y2F0Y2h7fX1pZighaCl7aWYoZT50KXtsZXQgcD1sO2w9YSxhPXB9bGV0IGY9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtmLnNldEVuZChhLm5vZGUsYS5vZmZzZXQpLGYuc2V0U3RhcnQobC5ub2RlLGwub2Zmc2V0KSxjLnJlbW92ZUFsbFJhbmdlcygpLGMuYWRkUmFuZ2UoZil9fWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiF0aGlzLmNvbnRlbnRET00mJmUudHlwZSE9InNlbGVjdGlvbiJ9Z2V0IGNvbnRlbnRMb3N0KCl7cmV0dXJuIHRoaXMuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NIT10aGlzLmRvbSYmIXRoaXMuZG9tLmNvbnRhaW5zKHRoaXMuY29udGVudERPTSl9bWFya0RpcnR5KGUsdCl7Zm9yKGxldCByPTAscz0wO3M8dGhpcy5jaGlsZHJlbi5sZW5ndGg7cysrKXtsZXQgaT10aGlzLmNoaWxkcmVuW3NdLG89citpLnNpemU7aWYocj09bz9lPD1vJiZ0Pj1yOmU8byYmdD5yKXtsZXQgbD1yK2kuYm9yZGVyLGE9by1pLmJvcmRlcjtpZihlPj1sJiZ0PD1hKXt0aGlzLmRpcnR5PWU9PXJ8fHQ9PW8/RHQ6VWwsZT09bCYmdD09YSYmKGkuY29udGVudExvc3R8fGkuZG9tLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTSk/aS5kaXJ0eT1HZTppLm1hcmtEaXJ0eShlLWwsdC1sKTtyZXR1cm59ZWxzZSBpLmRpcnR5PWkuZG9tPT1pLmNvbnRlbnRET00mJmkuZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIWkuY2hpbGRyZW4ubGVuZ3RoP0R0OkdlfXI9b310aGlzLmRpcnR5PUR0fW1hcmtQYXJlbnRzRGlydHkoKXtsZXQgZT0xO2ZvcihsZXQgdD10aGlzLnBhcmVudDt0O3Q9dC5wYXJlbnQsZSsrKXtsZXQgcj1lPT0xP0R0OlVsO3QuZGlydHk8ciYmKHQuZGlydHk9cil9fWdldCBkb21BdG9tKCl7cmV0dXJuITF9Z2V0IGlnbm9yZUZvckNvb3Jkcygpe3JldHVybiExfWdldCBpZ25vcmVGb3JTZWxlY3Rpb24oKXtyZXR1cm4hMX1pc1RleHQoZSl7cmV0dXJuITF9fWNsYXNzIHd1IGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoZSx0LHIscyl7bGV0IGksbz10LnR5cGUudG9ET007aWYodHlwZW9mIG89PSJmdW5jdGlvbiImJihvPW8ociwoKT0+e2lmKCFpKXJldHVybiBzO2lmKGkucGFyZW50KXJldHVybiBpLnBhcmVudC5wb3NCZWZvcmVDaGlsZChpKX0pKSwhdC50eXBlLnNwZWMucmF3KXtpZihvLm5vZGVUeXBlIT0xKXtsZXQgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bC5hcHBlbmRDaGlsZChvKSxvPWx9by5jb250ZW50RWRpdGFibGU9ImZhbHNlIixvLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLXdpZGdldCIpfXN1cGVyKGUsW10sbyxudWxsKSx0aGlzLndpZGdldD10LHRoaXMud2lkZ2V0PXQsaT10aGlzfW1hdGNoZXNXaWRnZXQoZSl7cmV0dXJuIHRoaXMuZGlydHk9PXplJiZlLnR5cGUuZXEodGhpcy53aWRnZXQudHlwZSl9cGFyc2VSdWxlKCl7cmV0dXJue2lnbm9yZTohMH19c3RvcEV2ZW50KGUpe2xldCB0PXRoaXMud2lkZ2V0LnNwZWMuc3RvcEV2ZW50O3JldHVybiB0P3QoZSk6ITF9aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIGUudHlwZSE9InNlbGVjdGlvbiJ8fHRoaXMud2lkZ2V0LnNwZWMuaWdub3JlU2VsZWN0aW9ufWRlc3Ryb3koKXt0aGlzLndpZGdldC50eXBlLmRlc3Ryb3kodGhpcy5kb20pLHN1cGVyLmRlc3Ryb3koKX1nZXQgZG9tQXRvbSgpe3JldHVybiEwfWdldCBpZ25vcmVGb3JTZWxlY3Rpb24oKXtyZXR1cm4hIXRoaXMud2lkZ2V0LnR5cGUuc3BlYy5yZWxheGVkU2lkZX1nZXQgc2lkZSgpe3JldHVybiB0aGlzLndpZGdldC50eXBlLnNpZGV9fWNsYXNzIFJwIGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoZSx0LHIscyl7c3VwZXIoZSxbXSx0LG51bGwpLHRoaXMudGV4dERPTT1yLHRoaXMudGV4dD1zfWdldCBzaXplKCl7cmV0dXJuIHRoaXMudGV4dC5sZW5ndGh9bG9jYWxQb3NGcm9tRE9NKGUsdCl7cmV0dXJuIGUhPXRoaXMudGV4dERPTT90aGlzLnBvc0F0U3RhcnQrKHQ/dGhpcy5zaXplOjApOnRoaXMucG9zQXRTdGFydCt0fWRvbUZyb21Qb3MoZSl7cmV0dXJue25vZGU6dGhpcy50ZXh0RE9NLG9mZnNldDplfX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gZS50eXBlPT09ImNoYXJhY3RlckRhdGEiJiZlLnRhcmdldC5ub2RlVmFsdWU9PWUub2xkVmFsdWV9fWNsYXNzIGp0IGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoZSx0LHIscyxpKXtzdXBlcihlLFtdLHIscyksdGhpcy5tYXJrPXQsdGhpcy5zcGVjPWl9c3RhdGljIGNyZWF0ZShlLHQscixzKXtsZXQgaT1zLm5vZGVWaWV3c1t0LnR5cGUubmFtZV0sbz1pJiZpKHQscyxyKTtyZXR1cm4oIW98fCFvLmRvbSkmJihvPUt0LnJlbmRlclNwZWMoZG9jdW1lbnQsdC50eXBlLnNwZWMudG9ET00odCxyKSxudWxsLHQuYXR0cnMpKSxuZXcganQoZSx0LG8uZG9tLG8uY29udGVudERPTXx8by5kb20sbyl9cGFyc2VSdWxlKCl7cmV0dXJuIHRoaXMuZGlydHkmR2V8fHRoaXMubWFyay50eXBlLnNwZWMucmVwYXJzZUluVmlldz9udWxsOnttYXJrOnRoaXMubWFyay50eXBlLm5hbWUsYXR0cnM6dGhpcy5tYXJrLmF0dHJzLGNvbnRlbnRFbGVtZW50OnRoaXMuY29udGVudERPTX19bWF0Y2hlc01hcmsoZSl7cmV0dXJuIHRoaXMuZGlydHkhPUdlJiZ0aGlzLm1hcmsuZXEoZSl9bWFya0RpcnR5KGUsdCl7aWYoc3VwZXIubWFya0RpcnR5KGUsdCksdGhpcy5kaXJ0eSE9emUpe2xldCByPXRoaXMucGFyZW50O2Zvcig7IXIubm9kZTspcj1yLnBhcmVudDtyLmRpcnR5PHRoaXMuZGlydHkmJihyLmRpcnR5PXRoaXMuZGlydHkpLHRoaXMuZGlydHk9emV9fXNsaWNlKGUsdCxyKXtsZXQgcz1qdC5jcmVhdGUodGhpcy5wYXJlbnQsdGhpcy5tYXJrLCEwLHIpLGk9dGhpcy5jaGlsZHJlbixvPXRoaXMuc2l6ZTt0PG8mJihpPV9pKGksdCxvLHIpKSxlPjAmJihpPV9pKGksMCxlLHIpKTtmb3IobGV0IGw9MDtsPGkubGVuZ3RoO2wrKylpW2xdLnBhcmVudD1zO3JldHVybiBzLmNoaWxkcmVuPWksc31pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gdGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uP3RoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihlKTpzdXBlci5pZ25vcmVNdXRhdGlvbihlKX1kZXN0cm95KCl7dGhpcy5zcGVjLmRlc3Ryb3kmJnRoaXMuc3BlYy5kZXN0cm95KCksc3VwZXIuZGVzdHJveSgpfX1jbGFzcyBDdCBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKGUsdCxyLHMsaSxvLGwsYSxjKXtzdXBlcihlLFtdLGksbyksdGhpcy5ub2RlPXQsdGhpcy5vdXRlckRlY289cix0aGlzLmlubmVyRGVjbz1zLHRoaXMubm9kZURPTT1sfXN0YXRpYyBjcmVhdGUoZSx0LHIscyxpLG8pe2xldCBsPWkubm9kZVZpZXdzW3QudHlwZS5uYW1lXSxhLGM9bCYmbCh0LGksKCk9PntpZighYSlyZXR1cm4gbztpZihhLnBhcmVudClyZXR1cm4gYS5wYXJlbnQucG9zQmVmb3JlQ2hpbGQoYSl9LHIscyksdT1jJiZjLmRvbSxkPWMmJmMuY29udGVudERPTTtpZih0LmlzVGV4dCl7aWYoIXUpdT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpO2Vsc2UgaWYodS5ub2RlVHlwZSE9Myl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGV4dCBtdXN0IGJlIHJlbmRlcmVkIGFzIGEgRE9NIHRleHQgbm9kZSIpfWVsc2UgdXx8KHtkb206dSxjb250ZW50RE9NOmR9PUt0LnJlbmRlclNwZWMoZG9jdW1lbnQsdC50eXBlLnNwZWMudG9ET00odCksbnVsbCx0LmF0dHJzKSk7IWQmJiF0LmlzVGV4dCYmdS5ub2RlTmFtZSE9IkJSIiYmKHUuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8KHUuY29udGVudEVkaXRhYmxlPSJmYWxzZSIpLHQudHlwZS5zcGVjLmRyYWdnYWJsZSYmKHUuZHJhZ2dhYmxlPSEwKSk7bGV0IGg9dTtyZXR1cm4gdT1UdSh1LHIsdCksYz9hPW5ldyBJcChlLHQscixzLHUsZHx8bnVsbCxoLGMsaSxvKzEpOnQuaXNUZXh0P25ldyBQcyhlLHQscixzLHUsaCxpKTpuZXcgQ3QoZSx0LHIscyx1LGR8fG51bGwsaCxpLG8rMSl9cGFyc2VSdWxlKCl7aWYodGhpcy5ub2RlLnR5cGUuc3BlYy5yZXBhcnNlSW5WaWV3KXJldHVybiBudWxsO2xldCBlPXtub2RlOnRoaXMubm9kZS50eXBlLm5hbWUsYXR0cnM6dGhpcy5ub2RlLmF0dHJzfTtpZih0aGlzLm5vZGUudHlwZS53aGl0ZXNwYWNlPT0icHJlIiYmKGUucHJlc2VydmVXaGl0ZXNwYWNlPSJmdWxsIiksIXRoaXMuY29udGVudERPTSllLmdldENvbnRlbnQ9KCk9PnRoaXMubm9kZS5jb250ZW50O2Vsc2UgaWYoIXRoaXMuY29udGVudExvc3QpZS5jb250ZW50RWxlbWVudD10aGlzLmNvbnRlbnRET007ZWxzZXtmb3IobGV0IHQ9dGhpcy5jaGlsZHJlbi5sZW5ndGgtMTt0Pj0wO3QtLSl7bGV0IHI9dGhpcy5jaGlsZHJlblt0XTtpZih0aGlzLmRvbS5jb250YWlucyhyLmRvbS5wYXJlbnROb2RlKSl7ZS5jb250ZW50RWxlbWVudD1yLmRvbS5wYXJlbnROb2RlO2JyZWFrfX1lLmNvbnRlbnRFbGVtZW50fHwoZS5nZXRDb250ZW50PSgpPT5TLmVtcHR5KX1yZXR1cm4gZX1tYXRjaGVzTm9kZShlLHQscil7cmV0dXJuIHRoaXMuZGlydHk9PXplJiZlLmVxKHRoaXMubm9kZSkmJlZyKHQsdGhpcy5vdXRlckRlY28pJiZyLmVxKHRoaXMuaW5uZXJEZWNvKX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLm5vZGUubm9kZVNpemV9Z2V0IGJvcmRlcigpe3JldHVybiB0aGlzLm5vZGUuaXNMZWFmPzA6MX11cGRhdGVDaGlsZHJlbihlLHQpe2xldCByPXRoaXMubm9kZS5pbmxpbmVDb250ZW50LHM9dCxpPWUuY29tcG9zaW5nP3RoaXMubG9jYWxDb21wb3NpdGlvbkluZm8oZSx0KTpudWxsLG89aSYmaS5wb3M+LTE/aTpudWxsLGw9aSYmaS5wb3M8MCxhPW5ldyBMcCh0aGlzLG8mJm8ubm9kZSxlKTskcCh0aGlzLm5vZGUsdGhpcy5pbm5lckRlY28sKGMsdSxkKT0+e2Muc3BlYy5tYXJrcz9hLnN5bmNUb01hcmtzKGMuc3BlYy5tYXJrcyxyLGUsdSk6Yy50eXBlLnNpZGU+PTAmJiFkJiZhLnN5bmNUb01hcmtzKHU9PXRoaXMubm9kZS5jaGlsZENvdW50P1cubm9uZTp0aGlzLm5vZGUuY2hpbGQodSkubWFya3MscixlLHUpLGEucGxhY2VXaWRnZXQoYyxlLHMpfSwoYyx1LGQsaCk9PnthLnN5bmNUb01hcmtzKGMubWFya3MscixlLGgpO2xldCBmO2EuZmluZE5vZGVNYXRjaChjLHUsZCxoKXx8bCYmZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbT5zJiZlLnN0YXRlLnNlbGVjdGlvbi50bzxzK2Mubm9kZVNpemUmJihmPWEuZmluZEluZGV4V2l0aENoaWxkKGkubm9kZSkpPi0xJiZhLnVwZGF0ZU5vZGVBdChjLHUsZCxmLGUpfHxhLnVwZGF0ZU5leHROb2RlKGMsdSxkLGUsaCxzKXx8YS5hZGROb2RlKGMsdSxkLGUscykscys9Yy5ub2RlU2l6ZX0pLGEuc3luY1RvTWFya3MoW10scixlLDApLHRoaXMubm9kZS5pc1RleHRibG9jayYmYS5hZGRUZXh0YmxvY2tIYWNrcygpLGEuZGVzdHJveVJlc3QoKSwoYS5jaGFuZ2VkfHx0aGlzLmRpcnR5PT1EdCkmJihvJiZ0aGlzLnByb3RlY3RMb2NhbENvbXBvc2l0aW9uKGUsbyksU3UodGhpcy5jb250ZW50RE9NLHRoaXMuY2hpbGRyZW4sZSksZG4mJkJwKHRoaXMuZG9tKSl9bG9jYWxDb21wb3NpdGlvbkluZm8oZSx0KXtsZXR7ZnJvbTpyLHRvOnN9PWUuc3RhdGUuc2VsZWN0aW9uO2lmKCEoZS5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBEKXx8cjx0fHxzPnQrdGhpcy5ub2RlLmNvbnRlbnQuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgaT1lLmlucHV0LmNvbXBvc2l0aW9uTm9kZTtpZighaXx8IXRoaXMuZG9tLmNvbnRhaW5zKGkucGFyZW50Tm9kZSkpcmV0dXJuIG51bGw7aWYodGhpcy5ub2RlLmlubGluZUNvbnRlbnQpe2xldCBvPWkubm9kZVZhbHVlLGw9X3AodGhpcy5ub2RlLmNvbnRlbnQsbyxyLXQscy10KTtyZXR1cm4gbDwwP251bGw6e25vZGU6aSxwb3M6bCx0ZXh0Om99fWVsc2UgcmV0dXJue25vZGU6aSxwb3M6LTEsdGV4dDoiIn19cHJvdGVjdExvY2FsQ29tcG9zaXRpb24oZSx7bm9kZTp0LHBvczpyLHRleHQ6c30pe2lmKHRoaXMuZ2V0RGVzYyh0KSlyZXR1cm47bGV0IGk9dDtmb3IoO2kucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NO2k9aS5wYXJlbnROb2RlKXtmb3IoO2kucHJldmlvdXNTaWJsaW5nOylpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaS5wcmV2aW91c1NpYmxpbmcpO2Zvcig7aS5uZXh0U2libGluZzspaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkubmV4dFNpYmxpbmcpO2kucG1WaWV3RGVzYyYmKGkucG1WaWV3RGVzYz12b2lkIDApfWxldCBvPW5ldyBScCh0aGlzLGksdCxzKTtlLmlucHV0LmNvbXBvc2l0aW9uTm9kZXMucHVzaChvKSx0aGlzLmNoaWxkcmVuPV9pKHRoaXMuY2hpbGRyZW4scixyK3MubGVuZ3RoLGUsbyl9dXBkYXRlKGUsdCxyLHMpe3JldHVybiB0aGlzLmRpcnR5PT1HZXx8IWUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpPyExOih0aGlzLnVwZGF0ZUlubmVyKGUsdCxyLHMpLCEwKX11cGRhdGVJbm5lcihlLHQscixzKXt0aGlzLnVwZGF0ZU91dGVyRGVjbyh0KSx0aGlzLm5vZGU9ZSx0aGlzLmlubmVyRGVjbz1yLHRoaXMuY29udGVudERPTSYmdGhpcy51cGRhdGVDaGlsZHJlbihzLHRoaXMucG9zQXRTdGFydCksdGhpcy5kaXJ0eT16ZX11cGRhdGVPdXRlckRlY28oZSl7aWYoVnIoZSx0aGlzLm91dGVyRGVjbykpcmV0dXJuO2xldCB0PXRoaXMubm9kZURPTS5ub2RlVHlwZSE9MSxyPXRoaXMuZG9tO3RoaXMuZG9tPUN1KHRoaXMuZG9tLHRoaXMubm9kZURPTSxCaSh0aGlzLm91dGVyRGVjbyx0aGlzLm5vZGUsdCksQmkoZSx0aGlzLm5vZGUsdCkpLHRoaXMuZG9tIT1yJiYoci5wbVZpZXdEZXNjPXZvaWQgMCx0aGlzLmRvbS5wbVZpZXdEZXNjPXRoaXMpLHRoaXMub3V0ZXJEZWNvPWV9c2VsZWN0Tm9kZSgpe3RoaXMubm9kZURPTS5ub2RlVHlwZT09MSYmKHRoaXMubm9kZURPTS5jbGFzc0xpc3QuYWRkKCJQcm9zZU1pcnJvci1zZWxlY3RlZG5vZGUiKSwodGhpcy5jb250ZW50RE9NfHwhdGhpcy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGUpJiYodGhpcy5ub2RlRE9NLmRyYWdnYWJsZT0hMCkpfWRlc2VsZWN0Tm9kZSgpe3RoaXMubm9kZURPTS5ub2RlVHlwZT09MSYmKHRoaXMubm9kZURPTS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1zZWxlY3RlZG5vZGUiKSwodGhpcy5jb250ZW50RE9NfHwhdGhpcy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGUpJiZ0aGlzLm5vZGVET00ucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKSl9Z2V0IGRvbUF0b20oKXtyZXR1cm4gdGhpcy5ub2RlLmlzQXRvbX19ZnVuY3Rpb24gamwobixlLHQscixzKXtUdShyLGUsbik7bGV0IGk9bmV3IEN0KHZvaWQgMCxuLGUsdCxyLHIscixzLDApO3JldHVybiBpLmNvbnRlbnRET00mJmkudXBkYXRlQ2hpbGRyZW4ocywwKSxpfWNsYXNzIFBzIGV4dGVuZHMgQ3R7Y29uc3RydWN0b3IoZSx0LHIscyxpLG8sbCl7c3VwZXIoZSx0LHIscyxpLG51bGwsbyxsLDApfXBhcnNlUnVsZSgpe2xldCBlPXRoaXMubm9kZURPTS5wYXJlbnROb2RlO2Zvcig7ZSYmZSE9dGhpcy5kb20mJiFlLnBtSXNEZWNvOyllPWUucGFyZW50Tm9kZTtyZXR1cm57c2tpcDplfHwhMH19dXBkYXRlKGUsdCxyLHMpe3JldHVybiB0aGlzLmRpcnR5PT1HZXx8dGhpcy5kaXJ0eSE9emUmJiF0aGlzLmluUGFyZW50KCl8fCFlLnNhbWVNYXJrdXAodGhpcy5ub2RlKT8hMToodGhpcy51cGRhdGVPdXRlckRlY28odCksKHRoaXMuZGlydHkhPXplfHxlLnRleHQhPXRoaXMubm9kZS50ZXh0KSYmZS50ZXh0IT10aGlzLm5vZGVET00ubm9kZVZhbHVlJiYodGhpcy5ub2RlRE9NLm5vZGVWYWx1ZT1lLnRleHQscy50cmFja1dyaXRlcz09dGhpcy5ub2RlRE9NJiYocy50cmFja1dyaXRlcz1udWxsKSksdGhpcy5ub2RlPWUsdGhpcy5kaXJ0eT16ZSwhMCl9aW5QYXJlbnQoKXtsZXQgZT10aGlzLnBhcmVudC5jb250ZW50RE9NO2ZvcihsZXQgdD10aGlzLm5vZGVET007dDt0PXQucGFyZW50Tm9kZSlpZih0PT1lKXJldHVybiEwO3JldHVybiExfWRvbUZyb21Qb3MoZSl7cmV0dXJue25vZGU6dGhpcy5ub2RlRE9NLG9mZnNldDplfX1sb2NhbFBvc0Zyb21ET00oZSx0LHIpe3JldHVybiBlPT10aGlzLm5vZGVET00/dGhpcy5wb3NBdFN0YXJ0K01hdGgubWluKHQsdGhpcy5ub2RlLnRleHQubGVuZ3RoKTpzdXBlci5sb2NhbFBvc0Zyb21ET00oZSx0LHIpfWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiBlLnR5cGUhPSJjaGFyYWN0ZXJEYXRhIiYmZS50eXBlIT0ic2VsZWN0aW9uIn1zbGljZShlLHQscil7bGV0IHM9dGhpcy5ub2RlLmN1dChlLHQpLGk9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocy50ZXh0KTtyZXR1cm4gbmV3IFBzKHRoaXMucGFyZW50LHMsdGhpcy5vdXRlckRlY28sdGhpcy5pbm5lckRlY28saSxpLHIpfW1hcmtEaXJ0eShlLHQpe3N1cGVyLm1hcmtEaXJ0eShlLHQpLHRoaXMuZG9tIT10aGlzLm5vZGVET00mJihlPT0wfHx0PT10aGlzLm5vZGVET00ubm9kZVZhbHVlLmxlbmd0aCkmJih0aGlzLmRpcnR5PUdlKX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWlzVGV4dChlKXtyZXR1cm4gdGhpcy5ub2RlLnRleHQ9PWV9fWNsYXNzIHZ1IGV4dGVuZHMgb3J7cGFyc2VSdWxlKCl7cmV0dXJue2lnbm9yZTohMH19bWF0Y2hlc0hhY2soZSl7cmV0dXJuIHRoaXMuZGlydHk9PXplJiZ0aGlzLmRvbS5ub2RlTmFtZT09ZX1nZXQgZG9tQXRvbSgpe3JldHVybiEwfWdldCBpZ25vcmVGb3JDb29yZHMoKXtyZXR1cm4gdGhpcy5kb20ubm9kZU5hbWU9PSJJTUcifX1jbGFzcyBJcCBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKGUsdCxyLHMsaSxvLGwsYSxjLHUpe3N1cGVyKGUsdCxyLHMsaSxvLGwsYyx1KSx0aGlzLnNwZWM9YX11cGRhdGUoZSx0LHIscyl7aWYodGhpcy5kaXJ0eT09R2UpcmV0dXJuITE7aWYodGhpcy5zcGVjLnVwZGF0ZSYmKHRoaXMubm9kZS50eXBlPT1lLnR5cGV8fHRoaXMuc3BlYy5tdWx0aVR5cGUpKXtsZXQgaT10aGlzLnNwZWMudXBkYXRlKGUsdCxyKTtyZXR1cm4gaSYmdGhpcy51cGRhdGVJbm5lcihlLHQscixzKSxpfWVsc2UgcmV0dXJuIXRoaXMuY29udGVudERPTSYmIWUuaXNMZWFmPyExOnN1cGVyLnVwZGF0ZShlLHQscixzKX1zZWxlY3ROb2RlKCl7dGhpcy5zcGVjLnNlbGVjdE5vZGU/dGhpcy5zcGVjLnNlbGVjdE5vZGUoKTpzdXBlci5zZWxlY3ROb2RlKCl9ZGVzZWxlY3ROb2RlKCl7dGhpcy5zcGVjLmRlc2VsZWN0Tm9kZT90aGlzLnNwZWMuZGVzZWxlY3ROb2RlKCk6c3VwZXIuZGVzZWxlY3ROb2RlKCl9c2V0U2VsZWN0aW9uKGUsdCxyLHMpe3RoaXMuc3BlYy5zZXRTZWxlY3Rpb24/dGhpcy5zcGVjLnNldFNlbGVjdGlvbihlLHQsci5yb290KTpzdXBlci5zZXRTZWxlY3Rpb24oZSx0LHIscyl9ZGVzdHJveSgpe3RoaXMuc3BlYy5kZXN0cm95JiZ0aGlzLnNwZWMuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX1zdG9wRXZlbnQoZSl7cmV0dXJuIHRoaXMuc3BlYy5zdG9wRXZlbnQ/dGhpcy5zcGVjLnN0b3BFdmVudChlKTohMX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gdGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uP3RoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihlKTpzdXBlci5pZ25vcmVNdXRhdGlvbihlKX19ZnVuY3Rpb24gU3UobixlLHQpe2xldCByPW4uZmlyc3RDaGlsZCxzPSExO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtsZXQgbz1lW2ldLGw9by5kb207aWYobC5wYXJlbnROb2RlPT1uKXtmb3IoO2whPXI7KXI9cWwocikscz0hMDtyPXIubmV4dFNpYmxpbmd9ZWxzZSBzPSEwLG4uaW5zZXJ0QmVmb3JlKGwscik7aWYobyBpbnN0YW5jZW9mIGp0KXtsZXQgYT1yP3IucHJldmlvdXNTaWJsaW5nOm4ubGFzdENoaWxkO1N1KG8uY29udGVudERPTSxvLmNoaWxkcmVuLHQpLHI9YT9hLm5leHRTaWJsaW5nOm4uZmlyc3RDaGlsZH19Zm9yKDtyOylyPXFsKHIpLHM9ITA7cyYmdC50cmFja1dyaXRlcz09biYmKHQudHJhY2tXcml0ZXM9bnVsbCl9Y29uc3QgJG49ZnVuY3Rpb24obil7biYmKHRoaXMubm9kZU5hbWU9bil9OyRuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpO2NvbnN0IEx0PVtuZXcgJG5dO2Z1bmN0aW9uIEJpKG4sZSx0KXtpZihuLmxlbmd0aD09MClyZXR1cm4gTHQ7bGV0IHI9dD9MdFswXTpuZXcgJG4scz1bcl07Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspe2xldCBvPW5baV0udHlwZS5hdHRycztpZihvKXtvLm5vZGVOYW1lJiZzLnB1c2gocj1uZXcgJG4oby5ub2RlTmFtZSkpO2ZvcihsZXQgbCBpbiBvKXtsZXQgYT1vW2xdO2EhPW51bGwmJih0JiZzLmxlbmd0aD09MSYmcy5wdXNoKHI9bmV3ICRuKGUuaXNJbmxpbmU/InNwYW4iOiJkaXYiKSksbD09ImNsYXNzIj9yLmNsYXNzPShyLmNsYXNzP3IuY2xhc3MrIiAiOiIiKSthOmw9PSJzdHlsZSI/ci5zdHlsZT0oci5zdHlsZT9yLnN0eWxlKyI7IjoiIikrYTpsIT0ibm9kZU5hbWUiJiYocltsXT1hKSl9fX1yZXR1cm4gc31mdW5jdGlvbiBDdShuLGUsdCxyKXtpZih0PT1MdCYmcj09THQpcmV0dXJuIGU7bGV0IHM9ZTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IG89cltpXSxsPXRbaV07aWYoaSl7bGV0IGE7bCYmbC5ub2RlTmFtZT09by5ub2RlTmFtZSYmcyE9biYmKGE9cy5wYXJlbnROb2RlKSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT1vLm5vZGVOYW1lfHwoYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KG8ubm9kZU5hbWUpLGEucG1Jc0RlY289ITAsYS5hcHBlbmRDaGlsZChzKSxsPUx0WzBdKSxzPWF9RHAocyxsfHxMdFswXSxvKX1yZXR1cm4gc31mdW5jdGlvbiBEcChuLGUsdCl7Zm9yKGxldCByIGluIGUpciE9ImNsYXNzIiYmciE9InN0eWxlIiYmciE9Im5vZGVOYW1lIiYmIShyIGluIHQpJiZuLnJlbW92ZUF0dHJpYnV0ZShyKTtmb3IobGV0IHIgaW4gdClyIT0iY2xhc3MiJiZyIT0ic3R5bGUiJiZyIT0ibm9kZU5hbWUiJiZ0W3JdIT1lW3JdJiZuLnNldEF0dHJpYnV0ZShyLHRbcl0pO2lmKGUuY2xhc3MhPXQuY2xhc3Mpe2xldCByPWUuY2xhc3M/ZS5jbGFzcy5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKTpbXSxzPXQuY2xhc3M/dC5jbGFzcy5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKTpbXTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKylzLmluZGV4T2YocltpXSk9PS0xJiZuLmNsYXNzTGlzdC5yZW1vdmUocltpXSk7Zm9yKGxldCBpPTA7aTxzLmxlbmd0aDtpKyspci5pbmRleE9mKHNbaV0pPT0tMSYmbi5jbGFzc0xpc3QuYWRkKHNbaV0pO24uY2xhc3NMaXN0Lmxlbmd0aD09MCYmbi5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIil9aWYoZS5zdHlsZSE9dC5zdHlsZSl7aWYoZS5zdHlsZSl7bGV0IHI9L1xzKihbXHdcLVx4YTEtXHVmZmZmXSspXHMqOig/OiIoPzpcXC58W14iXSkqInwnKD86XFwufFteJ10pKid8XCguKj9cKXxbXjtdKSovZyxzO2Zvcig7cz1yLmV4ZWMoZS5zdHlsZSk7KW4uc3R5bGUucmVtb3ZlUHJvcGVydHkoc1sxXSl9dC5zdHlsZSYmKG4uc3R5bGUuY3NzVGV4dCs9dC5zdHlsZSl9fWZ1bmN0aW9uIFR1KG4sZSx0KXtyZXR1cm4gQ3UobixuLEx0LEJpKGUsdCxuLm5vZGVUeXBlIT0xKSl9ZnVuY3Rpb24gVnIobixlKXtpZihuLmxlbmd0aCE9ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoIW5bdF0udHlwZS5lcShlW3RdLnR5cGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHFsKG4pe2xldCBlPW4ubmV4dFNpYmxpbmc7cmV0dXJuIG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxlfWNsYXNzIExwe2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmxvY2s9dCx0aGlzLnZpZXc9cix0aGlzLmluZGV4PTAsdGhpcy5zdGFjaz1bXSx0aGlzLmNoYW5nZWQ9ITEsdGhpcy50b3A9ZSx0aGlzLnByZU1hdGNoPVBwKGUubm9kZS5jb250ZW50LGUpfWRlc3Ryb3lCZXR3ZWVuKGUsdCl7aWYoZSE9dCl7Zm9yKGxldCByPWU7cjx0O3IrKyl0aGlzLnRvcC5jaGlsZHJlbltyXS5kZXN0cm95KCk7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKGUsdC1lKSx0aGlzLmNoYW5nZWQ9ITB9fWRlc3Ryb3lSZXN0KCl7dGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aCl9c3luY1RvTWFya3MoZSx0LHIscyl7bGV0IGk9MCxvPXRoaXMuc3RhY2subGVuZ3RoPj4xLGw9TWF0aC5taW4obyxlLmxlbmd0aCk7Zm9yKDtpPGwmJihpPT1vLTE/dGhpcy50b3A6dGhpcy5zdGFja1tpKzE8PDFdKS5tYXRjaGVzTWFyayhlW2ldKSYmZVtpXS50eXBlLnNwZWMuc3Bhbm5pbmchPT0hMTspaSsrO2Zvcig7aTxvOyl0aGlzLmRlc3Ryb3lSZXN0KCksdGhpcy50b3AuZGlydHk9emUsdGhpcy5pbmRleD10aGlzLnN0YWNrLnBvcCgpLHRoaXMudG9wPXRoaXMuc3RhY2sucG9wKCksby0tO2Zvcig7bzxlLmxlbmd0aDspe3RoaXMuc3RhY2sucHVzaCh0aGlzLnRvcCx0aGlzLmluZGV4KzEpO2xldCBhPS0xLGM9dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoO3M8dGhpcy5wcmVNYXRjaC5pbmRleCYmKGM9TWF0aC5taW4odGhpcy5pbmRleCszLGMpKTtmb3IobGV0IHU9dGhpcy5pbmRleDt1PGM7dSsrKXtsZXQgZD10aGlzLnRvcC5jaGlsZHJlblt1XTtpZihkLm1hdGNoZXNNYXJrKGVbb10pJiYhdGhpcy5pc0xvY2tlZChkLmRvbSkpe2E9dTticmVha319aWYoYT4tMSlhPnRoaXMuaW5kZXgmJih0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGEpKSx0aGlzLnRvcD10aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XTtlbHNle2xldCB1PWp0LmNyZWF0ZSh0aGlzLnRvcCxlW29dLHQscik7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgsMCx1KSx0aGlzLnRvcD11LHRoaXMuY2hhbmdlZD0hMH10aGlzLmluZGV4PTAsbysrfX1maW5kTm9kZU1hdGNoKGUsdCxyLHMpe2xldCBpPS0xLG87aWYocz49dGhpcy5wcmVNYXRjaC5pbmRleCYmKG89dGhpcy5wcmVNYXRjaC5tYXRjaGVzW3MtdGhpcy5wcmVNYXRjaC5pbmRleF0pLnBhcmVudD09dGhpcy50b3AmJm8ubWF0Y2hlc05vZGUoZSx0LHIpKWk9dGhpcy50b3AuY2hpbGRyZW4uaW5kZXhPZihvLHRoaXMuaW5kZXgpO2Vsc2UgZm9yKGxldCBsPXRoaXMuaW5kZXgsYT1NYXRoLm1pbih0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGgsbCs1KTtsPGE7bCsrKXtsZXQgYz10aGlzLnRvcC5jaGlsZHJlbltsXTtpZihjLm1hdGNoZXNOb2RlKGUsdCxyKSYmIXRoaXMucHJlTWF0Y2gubWF0Y2hlZC5oYXMoYykpe2k9bDticmVha319cmV0dXJuIGk8MD8hMToodGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGkpLHRoaXMuaW5kZXgrKywhMCl9dXBkYXRlTm9kZUF0KGUsdCxyLHMsaSl7bGV0IG89dGhpcy50b3AuY2hpbGRyZW5bc107cmV0dXJuIG8uZGlydHk9PUdlJiZvLmRvbT09by5jb250ZW50RE9NJiYoby5kaXJ0eT1EdCksby51cGRhdGUoZSx0LHIsaSk/KHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCxzKSx0aGlzLmluZGV4KyssITApOiExfWZpbmRJbmRleFdpdGhDaGlsZChlKXtmb3IoOzspe2xldCB0PWUucGFyZW50Tm9kZTtpZighdClyZXR1cm4tMTtpZih0PT10aGlzLnRvcC5jb250ZW50RE9NKXtsZXQgcj1lLnBtVmlld0Rlc2M7aWYocil7Zm9yKGxldCBzPXRoaXMuaW5kZXg7czx0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGg7cysrKWlmKHRoaXMudG9wLmNoaWxkcmVuW3NdPT1yKXJldHVybiBzfXJldHVybi0xfWU9dH19dXBkYXRlTmV4dE5vZGUoZSx0LHIscyxpLG8pe2ZvcihsZXQgbD10aGlzLmluZGV4O2w8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoO2wrKyl7bGV0IGE9dGhpcy50b3AuY2hpbGRyZW5bbF07aWYoYSBpbnN0YW5jZW9mIEN0KXtsZXQgYz10aGlzLnByZU1hdGNoLm1hdGNoZWQuZ2V0KGEpO2lmKGMhPW51bGwmJmMhPWkpcmV0dXJuITE7bGV0IHU9YS5kb20sZCxoPXRoaXMuaXNMb2NrZWQodSkmJiEoZS5pc1RleHQmJmEubm9kZSYmYS5ub2RlLmlzVGV4dCYmYS5ub2RlRE9NLm5vZGVWYWx1ZT09ZS50ZXh0JiZhLmRpcnR5IT1HZSYmVnIodCxhLm91dGVyRGVjbykpO2lmKCFoJiZhLnVwZGF0ZShlLHQscixzKSlyZXR1cm4gdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGwpLGEuZG9tIT11JiYodGhpcy5jaGFuZ2VkPSEwKSx0aGlzLmluZGV4KyssITA7aWYoIWgmJihkPXRoaXMucmVjcmVhdGVXcmFwcGVyKGEsZSx0LHIscyxvKSkpcmV0dXJuIHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCxsKSx0aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XT1kLGQuY29udGVudERPTSYmKGQuZGlydHk9RHQsZC51cGRhdGVDaGlsZHJlbihzLG8rMSksZC5kaXJ0eT16ZSksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuaW5kZXgrKywhMDticmVha319cmV0dXJuITF9cmVjcmVhdGVXcmFwcGVyKGUsdCxyLHMsaSxvKXtpZihlLmRpcnR5fHx0LmlzQXRvbXx8IWUuY2hpbGRyZW4ubGVuZ3RofHwhZS5ub2RlLmNvbnRlbnQuZXEodC5jb250ZW50KXx8IVZyKHIsZS5vdXRlckRlY28pfHwhcy5lcShlLmlubmVyRGVjbykpcmV0dXJuIG51bGw7bGV0IGw9Q3QuY3JlYXRlKHRoaXMudG9wLHQscixzLGksbyk7aWYobC5jb250ZW50RE9NKXtsLmNoaWxkcmVuPWUuY2hpbGRyZW4sZS5jaGlsZHJlbj1bXTtmb3IobGV0IGEgb2YgbC5jaGlsZHJlbilhLnBhcmVudD1sfXJldHVybiBlLmRlc3Ryb3koKSxsfWFkZE5vZGUoZSx0LHIscyxpKXtsZXQgbz1DdC5jcmVhdGUodGhpcy50b3AsZSx0LHIscyxpKTtvLmNvbnRlbnRET00mJm8udXBkYXRlQ2hpbGRyZW4ocyxpKzEpLHRoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxvKSx0aGlzLmNoYW5nZWQ9ITB9cGxhY2VXaWRnZXQoZSx0LHIpe2xldCBzPXRoaXMuaW5kZXg8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoP3RoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdOm51bGw7aWYocyYmcy5tYXRjaGVzV2lkZ2V0KGUpJiYoZT09cy53aWRnZXR8fCFzLndpZGdldC50eXBlLnRvRE9NLnBhcmVudE5vZGUpKXRoaXMuaW5kZXgrKztlbHNle2xldCBpPW5ldyB3dSh0aGlzLnRvcCxlLHQscik7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgrKywwLGkpLHRoaXMuY2hhbmdlZD0hMH19YWRkVGV4dGJsb2NrSGFja3MoKXtsZXQgZT10aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4LTFdLHQ9dGhpcy50b3A7Zm9yKDtlIGluc3RhbmNlb2YganQ7KXQ9ZSxlPXQuY2hpbGRyZW5bdC5jaGlsZHJlbi5sZW5ndGgtMV07KCFlfHwhKGUgaW5zdGFuY2VvZiBQcyl8fC9cbiQvLnRlc3QoZS5ub2RlLnRleHQpfHx0aGlzLnZpZXcucmVxdWlyZXNHZWNrb0hhY2tOb2RlJiYvXHMkLy50ZXN0KGUubm9kZS50ZXh0KSkmJigoa2V8fG1lKSYmZSYmZS5kb20uY29udGVudEVkaXRhYmxlPT0iZmFsc2UiJiZ0aGlzLmFkZEhhY2tOb2RlKCJJTUciLHQpLHRoaXMuYWRkSGFja05vZGUoIkJSIix0aGlzLnRvcCkpfWFkZEhhY2tOb2RlKGUsdCl7aWYodD09dGhpcy50b3AmJnRoaXMuaW5kZXg8dC5jaGlsZHJlbi5sZW5ndGgmJnQuY2hpbGRyZW5bdGhpcy5pbmRleF0ubWF0Y2hlc0hhY2soZSkpdGhpcy5pbmRleCsrO2Vsc2V7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtlPT0iSU1HIiYmKHIuY2xhc3NOYW1lPSJQcm9zZU1pcnJvci1zZXBhcmF0b3IiLHIuYWx0PSIiKSxlPT0iQlIiJiYoci5jbGFzc05hbWU9IlByb3NlTWlycm9yLXRyYWlsaW5nQnJlYWsiKTtsZXQgcz1uZXcgdnUodGhpcy50b3AsW10scixudWxsKTt0IT10aGlzLnRvcD90LmNoaWxkcmVuLnB1c2gocyk6dC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCsrLDAscyksdGhpcy5jaGFuZ2VkPSEwfX1pc0xvY2tlZChlKXtyZXR1cm4gdGhpcy5sb2NrJiYoZT09dGhpcy5sb2NrfHxlLm5vZGVUeXBlPT0xJiZlLmNvbnRhaW5zKHRoaXMubG9jay5wYXJlbnROb2RlKSl9fWZ1bmN0aW9uIFBwKG4sZSl7bGV0IHQ9ZSxyPXQuY2hpbGRyZW4ubGVuZ3RoLHM9bi5jaGlsZENvdW50LGk9bmV3IE1hcCxvPVtdO2U6Zm9yKDtzPjA7KXtsZXQgbDtmb3IoOzspaWYocil7bGV0IGM9dC5jaGlsZHJlbltyLTFdO2lmKGMgaW5zdGFuY2VvZiBqdCl0PWMscj1jLmNoaWxkcmVuLmxlbmd0aDtlbHNle2w9YyxyLS07YnJlYWt9fWVsc2V7aWYodD09ZSlicmVhayBlO3I9dC5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0KSx0PXQucGFyZW50fWxldCBhPWwubm9kZTtpZihhKXtpZihhIT1uLmNoaWxkKHMtMSkpYnJlYWs7LS1zLGkuc2V0KGwscyksby5wdXNoKGwpfX1yZXR1cm57aW5kZXg6cyxtYXRjaGVkOmksbWF0Y2hlczpvLnJldmVyc2UoKX19ZnVuY3Rpb24genAobixlKXtyZXR1cm4gbi50eXBlLnNpZGUtZS50eXBlLnNpZGV9ZnVuY3Rpb24gJHAobixlLHQscil7bGV0IHM9ZS5sb2NhbHMobiksaT0wO2lmKHMubGVuZ3RoPT0wKXtmb3IobGV0IGM9MDtjPG4uY2hpbGRDb3VudDtjKyspe2xldCB1PW4uY2hpbGQoYyk7cih1LHMsZS5mb3JDaGlsZChpLHUpLGMpLGkrPXUubm9kZVNpemV9cmV0dXJufWxldCBvPTAsbD1bXSxhPW51bGw7Zm9yKGxldCBjPTA7Oyl7bGV0IHUsZDtmb3IoO288cy5sZW5ndGgmJnNbb10udG89PWk7KXtsZXQgZz1zW28rK107Zy53aWRnZXQmJih1PyhkfHwoZD1bdV0pKS5wdXNoKGcpOnU9Zyl9aWYodSlpZihkKXtkLnNvcnQoenApO2ZvcihsZXQgZz0wO2c8ZC5sZW5ndGg7ZysrKXQoZFtnXSxjLCEhYSl9ZWxzZSB0KHUsYywhIWEpO2xldCBoLGY7aWYoYSlmPS0xLGg9YSxhPW51bGw7ZWxzZSBpZihjPG4uY2hpbGRDb3VudClmPWMsaD1uLmNoaWxkKGMrKyk7ZWxzZSBicmVhaztmb3IobGV0IGc9MDtnPGwubGVuZ3RoO2crKylsW2ddLnRvPD1pJiZsLnNwbGljZShnLS0sMSk7Zm9yKDtvPHMubGVuZ3RoJiZzW29dLmZyb208PWkmJnNbb10udG8+aTspbC5wdXNoKHNbbysrXSk7bGV0IHA9aStoLm5vZGVTaXplO2lmKGguaXNUZXh0KXtsZXQgZz1wO288cy5sZW5ndGgmJnNbb10uZnJvbTxnJiYoZz1zW29dLmZyb20pO2ZvcihsZXQgeT0wO3k8bC5sZW5ndGg7eSsrKWxbeV0udG88ZyYmKGc9bFt5XS50byk7ZzxwJiYoYT1oLmN1dChnLWkpLGg9aC5jdXQoMCxnLWkpLHA9ZyxmPS0xKX1lbHNlIGZvcig7bzxzLmxlbmd0aCYmc1tvXS50bzxwOylvKys7bGV0IG09aC5pc0lubGluZSYmIWguaXNMZWFmP2wuZmlsdGVyKGc9PiFnLmlubGluZSk6bC5zbGljZSgpO3IoaCxtLGUuZm9yQ2hpbGQoaSxoKSxmKSxpPXB9fWZ1bmN0aW9uIEJwKG4pe2lmKG4ubm9kZU5hbWU9PSJVTCJ8fG4ubm9kZU5hbWU9PSJPTCIpe2xldCBlPW4uc3R5bGUuY3NzVGV4dDtuLnN0eWxlLmNzc1RleHQ9ZSsiOyBsaXN0LXN0eWxlOiBzcXVhcmUgIWltcG9ydGFudCIsd2luZG93LmdldENvbXB1dGVkU3R5bGUobikubGlzdFN0eWxlLG4uc3R5bGUuY3NzVGV4dD1lfX1mdW5jdGlvbiBfcChuLGUsdCxyKXtmb3IobGV0IHM9MCxpPTA7czxuLmNoaWxkQ291bnQmJmk8PXI7KXtsZXQgbz1uLmNoaWxkKHMrKyksbD1pO2lmKGkrPW8ubm9kZVNpemUsIW8uaXNUZXh0KWNvbnRpbnVlO2xldCBhPW8udGV4dDtmb3IoO3M8bi5jaGlsZENvdW50Oyl7bGV0IGM9bi5jaGlsZChzKyspO2lmKGkrPWMubm9kZVNpemUsIWMuaXNUZXh0KWJyZWFrO2ErPWMudGV4dH1pZihpPj10KXtpZihpPj1yJiZhLnNsaWNlKHItZS5sZW5ndGgtbCxyLWwpPT1lKXJldHVybiByLWUubGVuZ3RoO2xldCBjPWw8cj9hLmxhc3RJbmRleE9mKGUsci1sLTEpOi0xO2lmKGM+PTAmJmMrZS5sZW5ndGgrbD49dClyZXR1cm4gbCtjO2lmKHQ9PXImJmEubGVuZ3RoPj1yK2UubGVuZ3RoLWwmJmEuc2xpY2Uoci1sLHItbCtlLmxlbmd0aCk9PWUpcmV0dXJuIHJ9fXJldHVybi0xfWZ1bmN0aW9uIF9pKG4sZSx0LHIscyl7bGV0IGk9W107Zm9yKGxldCBvPTAsbD0wO288bi5sZW5ndGg7bysrKXtsZXQgYT1uW29dLGM9bCx1PWwrPWEuc2l6ZTtjPj10fHx1PD1lP2kucHVzaChhKTooYzxlJiZpLnB1c2goYS5zbGljZSgwLGUtYyxyKSkscyYmKGkucHVzaChzKSxzPXZvaWQgMCksdT50JiZpLnB1c2goYS5zbGljZSh0LWMsYS5zaXplLHIpKSl9cmV0dXJuIGl9ZnVuY3Rpb24gdm8obixlPW51bGwpe2xldCB0PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKSxyPW4uc3RhdGUuZG9jO2lmKCF0LmZvY3VzTm9kZSlyZXR1cm4gbnVsbDtsZXQgcz1uLmRvY1ZpZXcubmVhcmVzdERlc2ModC5mb2N1c05vZGUpLGk9cyYmcy5zaXplPT0wLG89bi5kb2NWaWV3LnBvc0Zyb21ET00odC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCwxKTtpZihvPDApcmV0dXJuIG51bGw7bGV0IGw9ci5yZXNvbHZlKG8pLGEsYztpZihMcyh0KSl7Zm9yKGE9bztzJiYhcy5ub2RlOylzPXMucGFyZW50O2xldCBkPXMubm9kZTtpZihzJiZkLmlzQXRvbSYmTi5pc1NlbGVjdGFibGUoZCkmJnMucGFyZW50JiYhKGQuaXNJbmxpbmUmJmhwKHQuZm9jdXNOb2RlLHQuZm9jdXNPZmZzZXQscy5kb20pKSl7bGV0IGg9cy5wb3NCZWZvcmU7Yz1uZXcgTihvPT1oP2w6ci5yZXNvbHZlKGgpKX19ZWxzZXtpZih0IGluc3RhbmNlb2Ygbi5kb20ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TZWxlY3Rpb24mJnQucmFuZ2VDb3VudD4xKXtsZXQgZD1vLGg9bztmb3IobGV0IGY9MDtmPHQucmFuZ2VDb3VudDtmKyspe2xldCBwPXQuZ2V0UmFuZ2VBdChmKTtkPU1hdGgubWluKGQsbi5kb2NWaWV3LnBvc0Zyb21ET00ocC5zdGFydENvbnRhaW5lcixwLnN0YXJ0T2Zmc2V0LDEpKSxoPU1hdGgubWF4KGgsbi5kb2NWaWV3LnBvc0Zyb21ET00ocC5lbmRDb250YWluZXIscC5lbmRPZmZzZXQsLTEpKX1pZihkPDApcmV0dXJuIG51bGw7W2Esb109aD09bi5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yP1toLGRdOltkLGhdLGw9ci5yZXNvbHZlKG8pfWVsc2UgYT1uLmRvY1ZpZXcucG9zRnJvbURPTSh0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsMSk7aWYoYTwwKXJldHVybiBudWxsfWxldCB1PXIucmVzb2x2ZShhKTtpZighYyl7bGV0IGQ9ZT09InBvaW50ZXIifHxuLnN0YXRlLnNlbGVjdGlvbi5oZWFkPGwucG9zJiYhaT8xOi0xO2M9U28obix1LGwsZCl9cmV0dXJuIGN9ZnVuY3Rpb24gTXUobil7cmV0dXJuIG4uZWRpdGFibGU/bi5oYXNGb2N1cygpOkF1KG4pJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNvbnRhaW5zKG4uZG9tKX1mdW5jdGlvbiBsdChuLGU9ITEpe2xldCB0PW4uc3RhdGUuc2VsZWN0aW9uO2lmKEV1KG4sdCksISFNdShuKSl7aWYoIWUmJm4uaW5wdXQubW91c2VEb3duJiZuLmlucHV0Lm1vdXNlRG93bi5hbGxvd0RlZmF1bHQmJm1lKXtsZXQgcj1uLmRvbVNlbGVjdGlvblJhbmdlKCkscz1uLmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb247aWYoci5hbmNob3JOb2RlJiZzLmFuY2hvck5vZGUmJlV0KHIuYW5jaG9yTm9kZSxyLmFuY2hvck9mZnNldCxzLmFuY2hvck5vZGUscy5hbmNob3JPZmZzZXQpKXtuLmlucHV0Lm1vdXNlRG93bi5kZWxheWVkU2VsZWN0aW9uU3luYz0hMCxuLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpO3JldHVybn19aWYobi5kb21PYnNlcnZlci5kaXNjb25uZWN0U2VsZWN0aW9uKCksbi5jdXJzb3JXcmFwcGVyKUZwKG4pO2Vsc2V7bGV0e2FuY2hvcjpyLGhlYWQ6c309dCxpLG87V2wmJiEodCBpbnN0YW5jZW9mIEQpJiYodC4kZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudHx8KGk9S2wobix0LmZyb20pKSwhdC5lbXB0eSYmIXQuJGZyb20ucGFyZW50LmlubGluZUNvbnRlbnQmJihvPUtsKG4sdC50bykpKSxuLmRvY1ZpZXcuc2V0U2VsZWN0aW9uKHIscyxuLGUpLFdsJiYoaSYmSmwoaSksbyYmSmwobykpLHQudmlzaWJsZT9uLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uIik6KG4uZG9tLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24iKSwib25zZWxlY3Rpb25jaGFuZ2UiaW4gZG9jdW1lbnQmJkhwKG4pKX1uLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpLG4uZG9tT2JzZXJ2ZXIuY29ubmVjdFNlbGVjdGlvbigpfX1jb25zdCBXbD1rZXx8bWUmJmZ1PDYzO2Z1bmN0aW9uIEtsKG4sZSl7bGV0e25vZGU6dCxvZmZzZXQ6cn09bi5kb2NWaWV3LmRvbUZyb21Qb3MoZSwwKSxzPXI8dC5jaGlsZE5vZGVzLmxlbmd0aD90LmNoaWxkTm9kZXNbcl06bnVsbCxpPXI/dC5jaGlsZE5vZGVzW3ItMV06bnVsbDtpZihrZSYmcyYmcy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpcmV0dXJuIGxpKHMpO2lmKCghc3x8cy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpJiYoIWl8fGkuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKSl7aWYocylyZXR1cm4gbGkocyk7aWYoaSlyZXR1cm4gbGkoaSl9fWZ1bmN0aW9uIGxpKG4pe3JldHVybiBuLmNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIsa2UmJm4uZHJhZ2dhYmxlJiYobi5kcmFnZ2FibGU9ITEsbi53YXNEcmFnZ2FibGU9ITApLG59ZnVuY3Rpb24gSmwobil7bi5jb250ZW50RWRpdGFibGU9ImZhbHNlIixuLndhc0RyYWdnYWJsZSYmKG4uZHJhZ2dhYmxlPSEwLG4ud2FzRHJhZ2dhYmxlPW51bGwpfWZ1bmN0aW9uIEhwKG4pe2xldCBlPW4uZG9tLm93bmVyRG9jdW1lbnQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLG4uaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkKTtsZXQgdD1uLmRvbVNlbGVjdGlvblJhbmdlKCkscj10LmFuY2hvck5vZGUscz10LmFuY2hvck9mZnNldDtlLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbi5pbnB1dC5oaWRlU2VsZWN0aW9uR3VhcmQ9KCk9PnsodC5hbmNob3JOb2RlIT1yfHx0LmFuY2hvck9mZnNldCE9cykmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbi5pbnB1dC5oaWRlU2VsZWN0aW9uR3VhcmQpLHNldFRpbWVvdXQoKCk9PnsoIU11KG4pfHxuLnN0YXRlLnNlbGVjdGlvbi52aXNpYmxlKSYmbi5kb20uY2xhc3NMaXN0LnJlbW92ZSgiUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvbiIpfSwyMCkpfSl9ZnVuY3Rpb24gRnAobil7bGV0IGU9bi5kb21TZWxlY3Rpb24oKTtpZighZSlyZXR1cm47bGV0IHQ9bi5jdXJzb3JXcmFwcGVyLmRvbSxyPXQubm9kZU5hbWU9PSJJTUciO3I/ZS5jb2xsYXBzZSh0LnBhcmVudE5vZGUsZmUodCkrMSk6ZS5jb2xsYXBzZSh0LDApLCFyJiYhbi5zdGF0ZS5zZWxlY3Rpb24udmlzaWJsZSYmTWUmJlN0PD0xMSYmKHQuZGlzYWJsZWQ9ITAsdC5kaXNhYmxlZD0hMSl9ZnVuY3Rpb24gRXUobixlKXtpZihlIGluc3RhbmNlb2YgTil7bGV0IHQ9bi5kb2NWaWV3LmRlc2NBdChlLmZyb20pO3QhPW4ubGFzdFNlbGVjdGVkVmlld0Rlc2MmJihHbChuKSx0JiZ0LnNlbGVjdE5vZGUoKSxuLmxhc3RTZWxlY3RlZFZpZXdEZXNjPXQpfWVsc2UgR2wobil9ZnVuY3Rpb24gR2wobil7bi5sYXN0U2VsZWN0ZWRWaWV3RGVzYyYmKG4ubGFzdFNlbGVjdGVkVmlld0Rlc2MucGFyZW50JiZuLmxhc3RTZWxlY3RlZFZpZXdEZXNjLmRlc2VsZWN0Tm9kZSgpLG4ubGFzdFNlbGVjdGVkVmlld0Rlc2M9dm9pZCAwKX1mdW5jdGlvbiBTbyhuLGUsdCxyKXtyZXR1cm4gbi5zb21lUHJvcCgiY3JlYXRlU2VsZWN0aW9uQmV0d2VlbiIscz0+cyhuLGUsdCkpfHxELmJldHdlZW4oZSx0LHIpfWZ1bmN0aW9uIFFsKG4pe3JldHVybiBuLmVkaXRhYmxlJiYhbi5oYXNGb2N1cygpPyExOkF1KG4pfWZ1bmN0aW9uIEF1KG4pe2xldCBlPW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZighZS5hbmNob3JOb2RlKXJldHVybiExO3RyeXtyZXR1cm4gbi5kb20uY29udGFpbnMoZS5hbmNob3JOb2RlLm5vZGVUeXBlPT0zP2UuYW5jaG9yTm9kZS5wYXJlbnROb2RlOmUuYW5jaG9yTm9kZSkmJihuLmVkaXRhYmxlfHxuLmRvbS5jb250YWlucyhlLmZvY3VzTm9kZS5ub2RlVHlwZT09Mz9lLmZvY3VzTm9kZS5wYXJlbnROb2RlOmUuZm9jdXNOb2RlKSl9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIFZwKG4pe2xldCBlPW4uZG9jVmlldy5kb21Gcm9tUG9zKG4uc3RhdGUuc2VsZWN0aW9uLmFuY2hvciwwKSx0PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtyZXR1cm4gVXQoZS5ub2RlLGUub2Zmc2V0LHQuYW5jaG9yTm9kZSx0LmFuY2hvck9mZnNldCl9ZnVuY3Rpb24gSGkobixlKXtsZXR7JGFuY2hvcjp0LCRoZWFkOnJ9PW4uc2VsZWN0aW9uLHM9ZT4wP3QubWF4KHIpOnQubWluKHIpLGk9cy5wYXJlbnQuaW5saW5lQ29udGVudD9zLmRlcHRoP24uZG9jLnJlc29sdmUoZT4wP3MuYWZ0ZXIoKTpzLmJlZm9yZSgpKTpudWxsOnM7cmV0dXJuIGkmJkkuZmluZEZyb20oaSxlKX1mdW5jdGlvbiBmdChuLGUpe3JldHVybiBuLmRpc3BhdGNoKG4uc3RhdGUudHIuc2V0U2VsZWN0aW9uKGUpLnNjcm9sbEludG9WaWV3KCkpLCEwfWZ1bmN0aW9uIFhsKG4sZSx0KXtsZXQgcj1uLnN0YXRlLnNlbGVjdGlvbjtpZihyIGluc3RhbmNlb2YgRClpZih0LmluZGV4T2YoInMiKT4tMSl7bGV0eyRoZWFkOnN9PXIsaT1zLnRleHRPZmZzZXQ/bnVsbDplPDA/cy5ub2RlQmVmb3JlOnMubm9kZUFmdGVyO2lmKCFpfHxpLmlzVGV4dHx8IWkuaXNMZWFmKXJldHVybiExO2xldCBvPW4uc3RhdGUuZG9jLnJlc29sdmUocy5wb3MraS5ub2RlU2l6ZSooZTwwPy0xOjEpKTtyZXR1cm4gZnQobixuZXcgRChyLiRhbmNob3IsbykpfWVsc2UgaWYoci5lbXB0eSl7aWYobi5lbmRPZlRleHRibG9jayhlPjA/ImZvcndhcmQiOiJiYWNrd2FyZCIpKXtsZXQgcz1IaShuLnN0YXRlLGUpO3JldHVybiBzJiZzIGluc3RhbmNlb2YgTj9mdChuLHMpOiExfWVsc2UgaWYoIShJZSYmdC5pbmRleE9mKCJtIik+LTEpKXtsZXQgcz1yLiRoZWFkLGk9cy50ZXh0T2Zmc2V0P251bGw6ZTwwP3Mubm9kZUJlZm9yZTpzLm5vZGVBZnRlcixvO2lmKCFpfHxpLmlzVGV4dClyZXR1cm4hMTtsZXQgbD1lPDA/cy5wb3MtaS5ub2RlU2l6ZTpzLnBvcztyZXR1cm4gaS5pc0F0b218fChvPW4uZG9jVmlldy5kZXNjQXQobCkpJiYhby5jb250ZW50RE9NP04uaXNTZWxlY3RhYmxlKGkpP2Z0KG4sbmV3IE4oZTwwP24uc3RhdGUuZG9jLnJlc29sdmUocy5wb3MtaS5ub2RlU2l6ZSk6cykpOmlyP2Z0KG4sbmV3IEQobi5zdGF0ZS5kb2MucmVzb2x2ZShlPDA/bDpsK2kubm9kZVNpemUpKSk6ITE6ITF9fWVsc2UgcmV0dXJuITE7ZWxzZXtpZihyIGluc3RhbmNlb2YgTiYmci5ub2RlLmlzSW5saW5lKXJldHVybiBmdChuLG5ldyBEKGU+MD9yLiR0bzpyLiRmcm9tKSk7e2xldCBzPUhpKG4uc3RhdGUsZSk7cmV0dXJuIHM/ZnQobixzKTohMX19fWZ1bmN0aW9uIFVyKG4pe3JldHVybiBuLm5vZGVUeXBlPT0zP24ubm9kZVZhbHVlLmxlbmd0aDpuLmNoaWxkTm9kZXMubGVuZ3RofWZ1bmN0aW9uIEJuKG4sZSl7bGV0IHQ9bi5wbVZpZXdEZXNjO3JldHVybiB0JiZ0LnNpemU9PTAmJihlPDB8fG4ubmV4dFNpYmxpbmd8fG4ubm9kZU5hbWUhPSJCUiIpfWZ1bmN0aW9uIFp0KG4sZSl7cmV0dXJuIGU8MD9VcChuKTpqcChuKX1mdW5jdGlvbiBVcChuKXtsZXQgZT1uLmRvbVNlbGVjdGlvblJhbmdlKCksdD1lLmZvY3VzTm9kZSxyPWUuZm9jdXNPZmZzZXQ7aWYoIXQpcmV0dXJuO2xldCBzLGksbz0hMTtmb3IoUGUmJnQubm9kZVR5cGU9PTEmJnI8VXIodCkmJkJuKHQuY2hpbGROb2Rlc1tyXSwtMSkmJihvPSEwKTs7KWlmKHI+MCl7aWYodC5ub2RlVHlwZSE9MSlicmVhazt7bGV0IGw9dC5jaGlsZE5vZGVzW3ItMV07aWYoQm4obCwtMSkpcz10LGk9LS1yO2Vsc2UgaWYobC5ub2RlVHlwZT09Myl0PWwscj10Lm5vZGVWYWx1ZS5sZW5ndGg7ZWxzZSBicmVha319ZWxzZXtpZihPdSh0KSlicmVhazt7bGV0IGw9dC5wcmV2aW91c1NpYmxpbmc7Zm9yKDtsJiZCbihsLC0xKTspcz10LnBhcmVudE5vZGUsaT1mZShsKSxsPWwucHJldmlvdXNTaWJsaW5nO2lmKGwpdD1sLHI9VXIodCk7ZWxzZXtpZih0PXQucGFyZW50Tm9kZSx0PT1uLmRvbSlicmVhaztyPTB9fX1vP0ZpKG4sdCxyKTpzJiZGaShuLHMsaSl9ZnVuY3Rpb24ganAobil7bGV0IGU9bi5kb21TZWxlY3Rpb25SYW5nZSgpLHQ9ZS5mb2N1c05vZGUscj1lLmZvY3VzT2Zmc2V0O2lmKCF0KXJldHVybjtsZXQgcz1Vcih0KSxpLG87Zm9yKDs7KWlmKHI8cyl7aWYodC5ub2RlVHlwZSE9MSlicmVhaztsZXQgbD10LmNoaWxkTm9kZXNbcl07aWYoQm4obCwxKSlpPXQsbz0rK3I7ZWxzZSBicmVha31lbHNle2lmKE91KHQpKWJyZWFrO3tsZXQgbD10Lm5leHRTaWJsaW5nO2Zvcig7bCYmQm4obCwxKTspaT1sLnBhcmVudE5vZGUsbz1mZShsKSsxLGw9bC5uZXh0U2libGluZztpZihsKXQ9bCxyPTAscz1Vcih0KTtlbHNle2lmKHQ9dC5wYXJlbnROb2RlLHQ9PW4uZG9tKWJyZWFrO3I9cz0wfX19aSYmRmkobixpLG8pfWZ1bmN0aW9uIE91KG4pe2xldCBlPW4ucG1WaWV3RGVzYztyZXR1cm4gZSYmZS5ub2RlJiZlLm5vZGUuaXNCbG9ja31mdW5jdGlvbiBxcChuLGUpe2Zvcig7biYmZT09bi5jaGlsZE5vZGVzLmxlbmd0aCYmIXNyKG4pOyllPWZlKG4pKzEsbj1uLnBhcmVudE5vZGU7Zm9yKDtuJiZlPG4uY2hpbGROb2Rlcy5sZW5ndGg7KXtsZXQgdD1uLmNoaWxkTm9kZXNbZV07aWYodC5ub2RlVHlwZT09MylyZXR1cm4gdDtpZih0Lm5vZGVUeXBlPT0xJiZ0LmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilicmVhaztuPXQsZT0wfX1mdW5jdGlvbiBXcChuLGUpe2Zvcig7biYmIWUmJiFzcihuKTspZT1mZShuKSxuPW4ucGFyZW50Tm9kZTtmb3IoO24mJmU7KXtsZXQgdD1uLmNoaWxkTm9kZXNbZS0xXTtpZih0Lm5vZGVUeXBlPT0zKXJldHVybiB0O2lmKHQubm9kZVR5cGU9PTEmJnQuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKWJyZWFrO249dCxlPW4uY2hpbGROb2Rlcy5sZW5ndGh9fWZ1bmN0aW9uIEZpKG4sZSx0KXtpZihlLm5vZGVUeXBlIT0zKXtsZXQgaSxvOyhvPXFwKGUsdCkpPyhlPW8sdD0wKTooaT1XcChlLHQpKSYmKGU9aSx0PWkubm9kZVZhbHVlLmxlbmd0aCl9bGV0IHI9bi5kb21TZWxlY3Rpb24oKTtpZighcilyZXR1cm47aWYoTHMocikpe2xldCBpPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aS5zZXRFbmQoZSx0KSxpLnNldFN0YXJ0KGUsdCksci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKGkpfWVsc2Ugci5leHRlbmQmJnIuZXh0ZW5kKGUsdCk7bi5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKTtsZXR7c3RhdGU6c309bjtzZXRUaW1lb3V0KCgpPT57bi5zdGF0ZT09cyYmbHQobil9LDUwKX1mdW5jdGlvbiBZbChuLGUpe2xldCB0PW4uc3RhdGUuZG9jLnJlc29sdmUoZSk7aWYoIShtZXx8cHUpJiZ0LnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgcz1uLmNvb3Jkc0F0UG9zKGUpO2lmKGU+dC5zdGFydCgpKXtsZXQgaT1uLmNvb3Jkc0F0UG9zKGUtMSksbz0oaS50b3AraS5ib3R0b20pLzI7aWYobz5zLnRvcCYmbzxzLmJvdHRvbSYmTWF0aC5hYnMoaS5sZWZ0LXMubGVmdCk+MSlyZXR1cm4gaS5sZWZ0PHMubGVmdD8ibHRyIjoicnRsIn1pZihlPHQuZW5kKCkpe2xldCBpPW4uY29vcmRzQXRQb3MoZSsxKSxvPShpLnRvcCtpLmJvdHRvbSkvMjtpZihvPnMudG9wJiZvPHMuYm90dG9tJiZNYXRoLmFicyhpLmxlZnQtcy5sZWZ0KT4xKXJldHVybiBpLmxlZnQ+cy5sZWZ0PyJsdHIiOiJydGwifX1yZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShuLmRvbSkuZGlyZWN0aW9uPT0icnRsIj8icnRsIjoibHRyIn1mdW5jdGlvbiBabChuLGUsdCl7bGV0IHI9bi5zdGF0ZS5zZWxlY3Rpb247aWYociBpbnN0YW5jZW9mIEQmJiFyLmVtcHR5fHx0LmluZGV4T2YoInMiKT4tMXx8SWUmJnQuaW5kZXhPZigibSIpPi0xKXJldHVybiExO2xldHskZnJvbTpzLCR0bzppfT1yO2lmKCFzLnBhcmVudC5pbmxpbmVDb250ZW50fHxuLmVuZE9mVGV4dGJsb2NrKGU8MD8idXAiOiJkb3duIikpe2xldCBvPUhpKG4uc3RhdGUsZSk7aWYobyYmbyBpbnN0YW5jZW9mIE4pcmV0dXJuIGZ0KG4sbyl9aWYoIXMucGFyZW50LmlubGluZUNvbnRlbnQpe2xldCBvPWU8MD9zOmksbD1yIGluc3RhbmNlb2YgQWU/SS5uZWFyKG8sZSk6SS5maW5kRnJvbShvLGUpO3JldHVybiBsP2Z0KG4sbCk6ITF9cmV0dXJuITF9ZnVuY3Rpb24gZWEobixlKXtpZighKG4uc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgRCkpcmV0dXJuITA7bGV0eyRoZWFkOnQsJGFuY2hvcjpyLGVtcHR5OnN9PW4uc3RhdGUuc2VsZWN0aW9uO2lmKCF0LnNhbWVQYXJlbnQocikpcmV0dXJuITA7aWYoIXMpcmV0dXJuITE7aWYobi5lbmRPZlRleHRibG9jayhlPjA/ImZvcndhcmQiOiJiYWNrd2FyZCIpKXJldHVybiEwO2xldCBpPSF0LnRleHRPZmZzZXQmJihlPDA/dC5ub2RlQmVmb3JlOnQubm9kZUFmdGVyKTtpZihpJiYhaS5pc1RleHQpe2xldCBvPW4uc3RhdGUudHI7cmV0dXJuIGU8MD9vLmRlbGV0ZSh0LnBvcy1pLm5vZGVTaXplLHQucG9zKTpvLmRlbGV0ZSh0LnBvcyx0LnBvcytpLm5vZGVTaXplKSxuLmRpc3BhdGNoKG8pLCEwfXJldHVybiExfWZ1bmN0aW9uIHRhKG4sZSx0KXtuLmRvbU9ic2VydmVyLnN0b3AoKSxlLmNvbnRlbnRFZGl0YWJsZT10LG4uZG9tT2JzZXJ2ZXIuc3RhcnQoKX1mdW5jdGlvbiBLcChuKXtpZigha2V8fG4uc3RhdGUuc2VsZWN0aW9uLiRoZWFkLnBhcmVudE9mZnNldD4wKXJldHVybiExO2xldHtmb2N1c05vZGU6ZSxmb2N1c09mZnNldDp0fT1uLmRvbVNlbGVjdGlvblJhbmdlKCk7aWYoZSYmZS5ub2RlVHlwZT09MSYmdD09MCYmZS5maXJzdENoaWxkJiZlLmZpcnN0Q2hpbGQuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKXtsZXQgcj1lLmZpcnN0Q2hpbGQ7dGEobixyLCJ0cnVlIiksc2V0VGltZW91dCgoKT0+dGEobixyLCJmYWxzZSIpLDIwKX1yZXR1cm4hMX1mdW5jdGlvbiBKcChuKXtsZXQgZT0iIjtyZXR1cm4gbi5jdHJsS2V5JiYoZSs9ImMiKSxuLm1ldGFLZXkmJihlKz0ibSIpLG4uYWx0S2V5JiYoZSs9ImEiKSxuLnNoaWZ0S2V5JiYoZSs9InMiKSxlfWZ1bmN0aW9uIEdwKG4sZSl7bGV0IHQ9ZS5rZXlDb2RlLHI9SnAoZSk7aWYodD09OHx8SWUmJnQ9PTcyJiZyPT0iYyIpcmV0dXJuIGVhKG4sLTEpfHxadChuLC0xKTtpZih0PT00NiYmIWUuc2hpZnRLZXl8fEllJiZ0PT02OCYmcj09ImMiKXJldHVybiBlYShuLDEpfHxadChuLDEpO2lmKHQ9PTEzfHx0PT0yNylyZXR1cm4hMDtpZih0PT0zN3x8SWUmJnQ9PTY2JiZyPT0iYyIpe2xldCBzPXQ9PTM3P1lsKG4sbi5zdGF0ZS5zZWxlY3Rpb24uZnJvbSk9PSJsdHIiPy0xOjE6LTE7cmV0dXJuIFhsKG4scyxyKXx8WnQobixzKX1lbHNlIGlmKHQ9PTM5fHxJZSYmdD09NzAmJnI9PSJjIil7bGV0IHM9dD09Mzk/WWwobixuLnN0YXRlLnNlbGVjdGlvbi5mcm9tKT09Imx0ciI/MTotMToxO3JldHVybiBYbChuLHMscil8fFp0KG4scyl9ZWxzZXtpZih0PT0zOHx8SWUmJnQ9PTgwJiZyPT0iYyIpcmV0dXJuIFpsKG4sLTEscil8fFp0KG4sLTEpO2lmKHQ9PTQwfHxJZSYmdD09NzgmJnI9PSJjIilyZXR1cm4gS3Aobil8fFpsKG4sMSxyKXx8WnQobiwxKTtpZihyPT0oSWU/Im0iOiJjIikmJih0PT02Nnx8dD09NzN8fHQ9PTg5fHx0PT05MCkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gQ28obixlKXtuLnNvbWVQcm9wKCJ0cmFuc2Zvcm1Db3BpZWQiLGY9PntlPWYoZSxuKX0pO2xldCB0PVtdLHtjb250ZW50OnIsb3BlblN0YXJ0OnMsb3BlbkVuZDppfT1lO2Zvcig7cz4xJiZpPjEmJnIuY2hpbGRDb3VudD09MSYmci5maXJzdENoaWxkLmNoaWxkQ291bnQ9PTE7KXtzLS0saS0tO2xldCBmPXIuZmlyc3RDaGlsZDt0LnB1c2goZi50eXBlLm5hbWUsZi5hdHRycyE9Zi50eXBlLmRlZmF1bHRBdHRycz9mLmF0dHJzOm51bGwpLHI9Zi5jb250ZW50fWxldCBvPW4uc29tZVByb3AoImNsaXBib2FyZFNlcmlhbGl6ZXIiKXx8S3QuZnJvbVNjaGVtYShuLnN0YXRlLnNjaGVtYSksbD1QdSgpLGE9bC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKG8uc2VyaWFsaXplRnJhZ21lbnQocix7ZG9jdW1lbnQ6bH0pKTtsZXQgYz1hLmZpcnN0Q2hpbGQsdSxkPTA7Zm9yKDtjJiZjLm5vZGVUeXBlPT0xJiYodT1MdVtjLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKTspe2ZvcihsZXQgZj11Lmxlbmd0aC0xO2Y+PTA7Zi0tKXtsZXQgcD1sLmNyZWF0ZUVsZW1lbnQodVtmXSk7Zm9yKDthLmZpcnN0Q2hpbGQ7KXAuYXBwZW5kQ2hpbGQoYS5maXJzdENoaWxkKTthLmFwcGVuZENoaWxkKHApLGQrK31jPWEuZmlyc3RDaGlsZH1jJiZjLm5vZGVUeXBlPT0xJiZjLnNldEF0dHJpYnV0ZSgiZGF0YS1wbS1zbGljZSIsYCR7c30gJHtpfSR7ZD9gIC0ke2R9YDoiIn0gJHtKU09OLnN0cmluZ2lmeSh0KX1gKTtsZXQgaD1uLnNvbWVQcm9wKCJjbGlwYm9hcmRUZXh0U2VyaWFsaXplciIsZj0+ZihlLG4pKXx8ZS5jb250ZW50LnRleHRCZXR3ZWVuKDAsZS5jb250ZW50LnNpemUsYAoKYCk7cmV0dXJue2RvbTphLHRleHQ6aCxzbGljZTplfX1mdW5jdGlvbiBOdShuLGUsdCxyLHMpe2xldCBpPXMucGFyZW50LnR5cGUuc3BlYy5jb2RlLG8sbDtpZighdCYmIWUpcmV0dXJuIG51bGw7bGV0IGE9ISFlJiYocnx8aXx8IXQpO2lmKGEpe2lmKG4uc29tZVByb3AoInRyYW5zZm9ybVBhc3RlZFRleHQiLGg9PntlPWgoZSxpfHxyLG4pfSksaSlyZXR1cm4gbD1uZXcgRShTLmZyb20obi5zdGF0ZS5zY2hlbWEudGV4dChlLnJlcGxhY2UoL1xyXG4/L2csYApgKSkpLDAsMCksbi5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkIixoPT57bD1oKGwsbiwhMCl9KSxsO2xldCBkPW4uc29tZVByb3AoImNsaXBib2FyZFRleHRQYXJzZXIiLGg9PmgoZSxzLHIsbikpO2lmKGQpbD1kO2Vsc2V7bGV0IGg9cy5tYXJrcygpLHtzY2hlbWE6Zn09bi5zdGF0ZSxwPUt0LmZyb21TY2hlbWEoZik7bz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLnNwbGl0KC8oPzpcclxuP3xcbikrLykuZm9yRWFjaChtPT57bGV0IGc9by5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikpO20mJmcuYXBwZW5kQ2hpbGQocC5zZXJpYWxpemVOb2RlKGYudGV4dChtLGgpKSl9KX19ZWxzZSBuLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWRIVE1MIixkPT57dD1kKHQsbil9KSxvPVpwKHQpLGlyJiZlbShvKTtsZXQgYz1vJiZvLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXBtLXNsaWNlXSIpLHU9YyYmL14oXGQrKSAoXGQrKSg/OiAtKFxkKykpPyAoLiopLy5leGVjKGMuZ2V0QXR0cmlidXRlKCJkYXRhLXBtLXNsaWNlIil8fCIiKTtpZih1JiZ1WzNdKWZvcihsZXQgZD0rdVszXTtkPjA7ZC0tKXtsZXQgaD1vLmZpcnN0Q2hpbGQ7Zm9yKDtoJiZoLm5vZGVUeXBlIT0xOyloPWgubmV4dFNpYmxpbmc7aWYoIWgpYnJlYWs7bz1ofWlmKGx8fChsPShuLnNvbWVQcm9wKCJjbGlwYm9hcmRQYXJzZXIiKXx8bi5zb21lUHJvcCgiZG9tUGFyc2VyIil8fGl0LmZyb21TY2hlbWEobi5zdGF0ZS5zY2hlbWEpKS5wYXJzZVNsaWNlKG8se3ByZXNlcnZlV2hpdGVzcGFjZTohIShhfHx1KSxjb250ZXh0OnMscnVsZUZyb21Ob2RlKGgpe3JldHVybiBoLm5vZGVOYW1lPT0iQlIiJiYhaC5uZXh0U2libGluZyYmaC5wYXJlbnROb2RlJiYhUXAudGVzdChoLnBhcmVudE5vZGUubm9kZU5hbWUpP3tpZ25vcmU6ITB9Om51bGx9fSkpLHUpbD10bShuYShsLCt1WzFdLCt1WzJdKSx1WzRdKTtlbHNlIGlmKGw9RS5tYXhPcGVuKFhwKGwuY29udGVudCxzKSwhMCksbC5vcGVuU3RhcnR8fGwub3BlbkVuZCl7bGV0IGQ9MCxoPTA7Zm9yKGxldCBmPWwuY29udGVudC5maXJzdENoaWxkO2Q8bC5vcGVuU3RhcnQmJiFmLnR5cGUuc3BlYy5pc29sYXRpbmc7ZCsrLGY9Zi5maXJzdENoaWxkKTtmb3IobGV0IGY9bC5jb250ZW50Lmxhc3RDaGlsZDtoPGwub3BlbkVuZCYmIWYudHlwZS5zcGVjLmlzb2xhdGluZztoKyssZj1mLmxhc3RDaGlsZCk7bD1uYShsLGQsaCl9cmV0dXJuIG4uc29tZVByb3AoInRyYW5zZm9ybVBhc3RlZCIsZD0+e2w9ZChsLG4sYSl9KSxsfWNvbnN0IFFwPS9eKGF8YWJicnxhY3JvbnltfGJ8Y2l0ZXxjb2RlfGRlbHxlbXxpfGluc3xrYmR8bGFiZWx8b3V0cHV0fHF8cnVieXxzfHNhbXB8c3BhbnxzdHJvbmd8c3VifHN1cHx0aW1lfHV8dHR8dmFyKSQvaTtmdW5jdGlvbiBYcChuLGUpe2lmKG4uY2hpbGRDb3VudDwyKXJldHVybiBuO2ZvcihsZXQgdD1lLmRlcHRoO3Q+PTA7dC0tKXtsZXQgcz1lLm5vZGUodCkuY29udGVudE1hdGNoQXQoZS5pbmRleCh0KSksaSxvPVtdO2lmKG4uZm9yRWFjaChsPT57aWYoIW8pcmV0dXJuO2xldCBhPXMuZmluZFdyYXBwaW5nKGwudHlwZSksYztpZighYSlyZXR1cm4gbz1udWxsO2lmKGM9by5sZW5ndGgmJmkubGVuZ3RoJiZJdShhLGksbCxvW28ubGVuZ3RoLTFdLDApKW9bby5sZW5ndGgtMV09YztlbHNle28ubGVuZ3RoJiYob1tvLmxlbmd0aC0xXT1EdShvW28ubGVuZ3RoLTFdLGkubGVuZ3RoKSk7bGV0IHU9UnUobCxhKTtvLnB1c2godSkscz1zLm1hdGNoVHlwZSh1LnR5cGUpLGk9YX19KSxvKXJldHVybiBTLmZyb20obyl9cmV0dXJuIG59ZnVuY3Rpb24gUnUobixlLHQ9MCl7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49dDtyLS0pbj1lW3JdLmNyZWF0ZShudWxsLFMuZnJvbShuKSk7cmV0dXJuIG59ZnVuY3Rpb24gSXUobixlLHQscixzKXtpZihzPG4ubGVuZ3RoJiZzPGUubGVuZ3RoJiZuW3NdPT1lW3NdKXtsZXQgaT1JdShuLGUsdCxyLmxhc3RDaGlsZCxzKzEpO2lmKGkpcmV0dXJuIHIuY29weShyLmNvbnRlbnQucmVwbGFjZUNoaWxkKHIuY2hpbGRDb3VudC0xLGkpKTtpZihyLmNvbnRlbnRNYXRjaEF0KHIuY2hpbGRDb3VudCkubWF0Y2hUeXBlKHM9PW4ubGVuZ3RoLTE/dC50eXBlOm5bcysxXSkpcmV0dXJuIHIuY29weShyLmNvbnRlbnQuYXBwZW5kKFMuZnJvbShSdSh0LG4scysxKSkpKX19ZnVuY3Rpb24gRHUobixlKXtpZihlPT0wKXJldHVybiBuO2xldCB0PW4uY29udGVudC5yZXBsYWNlQ2hpbGQobi5jaGlsZENvdW50LTEsRHUobi5sYXN0Q2hpbGQsZS0xKSkscj1uLmNvbnRlbnRNYXRjaEF0KG4uY2hpbGRDb3VudCkuZmlsbEJlZm9yZShTLmVtcHR5LCEwKTtyZXR1cm4gbi5jb3B5KHQuYXBwZW5kKHIpKX1mdW5jdGlvbiBWaShuLGUsdCxyLHMsaSl7bGV0IG89ZTwwP24uZmlyc3RDaGlsZDpuLmxhc3RDaGlsZCxsPW8uY29udGVudDtyZXR1cm4gbi5jaGlsZENvdW50PjEmJihpPTApLHM8ci0xJiYobD1WaShsLGUsdCxyLHMrMSxpKSkscz49dCYmKGw9ZTwwP28uY29udGVudE1hdGNoQXQoMCkuZmlsbEJlZm9yZShsLGk8PXMpLmFwcGVuZChsKTpsLmFwcGVuZChvLmNvbnRlbnRNYXRjaEF0KG8uY2hpbGRDb3VudCkuZmlsbEJlZm9yZShTLmVtcHR5LCEwKSkpLG4ucmVwbGFjZUNoaWxkKGU8MD8wOm4uY2hpbGRDb3VudC0xLG8uY29weShsKSl9ZnVuY3Rpb24gbmEobixlLHQpe3JldHVybiBlPG4ub3BlblN0YXJ0JiYobj1uZXcgRShWaShuLmNvbnRlbnQsLTEsZSxuLm9wZW5TdGFydCwwLG4ub3BlbkVuZCksZSxuLm9wZW5FbmQpKSx0PG4ub3BlbkVuZCYmKG49bmV3IEUoVmkobi5jb250ZW50LDEsdCxuLm9wZW5FbmQsMCwwKSxuLm9wZW5TdGFydCx0KSksbn1jb25zdCBMdT17dGhlYWQ6WyJ0YWJsZSJdLHRib2R5OlsidGFibGUiXSx0Zm9vdDpbInRhYmxlIl0sY2FwdGlvbjpbInRhYmxlIl0sY29sZ3JvdXA6WyJ0YWJsZSJdLGNvbDpbInRhYmxlIiwiY29sZ3JvdXAiXSx0cjpbInRhYmxlIiwidGJvZHkiXSx0ZDpbInRhYmxlIiwidGJvZHkiLCJ0ciJdLHRoOlsidGFibGUiLCJ0Ym9keSIsInRyIl19O2xldCByYT1udWxsO2Z1bmN0aW9uIFB1KCl7cmV0dXJuIHJhfHwocmE9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJ0aXRsZSIpKX1sZXQgYWk9bnVsbDtmdW5jdGlvbiBZcChuKXtsZXQgZT13aW5kb3cudHJ1c3RlZFR5cGVzO3JldHVybiBlPyhhaXx8KGFpPWUuZGVmYXVsdFBvbGljeXx8ZS5jcmVhdGVQb2xpY3koIlByb3NlTWlycm9yQ2xpcGJvYXJkIix7Y3JlYXRlSFRNTDp0PT50fSkpLGFpLmNyZWF0ZUhUTUwobikpOm59ZnVuY3Rpb24gWnAobil7bGV0IGU9L14oXHMqPG1ldGEgW14+XSo+KSovLmV4ZWMobik7ZSYmKG49bi5zbGljZShlWzBdLmxlbmd0aCkpO2xldCB0PVB1KCkuY3JlYXRlRWxlbWVudCgiZGl2Iikscj0vPChbYS16XVtePlxzXSspL2kuZXhlYyhuKSxzO2lmKChzPXImJkx1W3JbMV0udG9Mb3dlckNhc2UoKV0pJiYobj1zLm1hcChpPT4iPCIraSsiPiIpLmpvaW4oIiIpK24rcy5tYXAoaT0+IjwvIitpKyI+IikucmV2ZXJzZSgpLmpvaW4oIiIpKSx0LmlubmVySFRNTD1ZcChuKSxzKWZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKXQ9dC5xdWVyeVNlbGVjdG9yKHNbaV0pfHx0O3JldHVybiB0fWZ1bmN0aW9uIGVtKG4pe2xldCBlPW4ucXVlcnlTZWxlY3RvckFsbChtZT8ic3Bhbjpub3QoW2NsYXNzXSk6bm90KFtzdHlsZV0pIjoic3Bhbi5BcHBsZS1jb252ZXJ0ZWQtc3BhY2UiKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IHI9ZVt0XTtyLmNoaWxkTm9kZXMubGVuZ3RoPT0xJiZyLnRleHRDb250ZW50PT0iwqAiJiZyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobi5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikscil9fWZ1bmN0aW9uIHRtKG4sZSl7aWYoIW4uc2l6ZSlyZXR1cm4gbjtsZXQgdD1uLmNvbnRlbnQuZmlyc3RDaGlsZC50eXBlLnNjaGVtYSxyO3RyeXtyPUpTT04ucGFyc2UoZSl9Y2F0Y2h7cmV0dXJuIG59bGV0e2NvbnRlbnQ6cyxvcGVuU3RhcnQ6aSxvcGVuRW5kOm99PW47Zm9yKGxldCBsPXIubGVuZ3RoLTI7bD49MDtsLT0yKXtsZXQgYT10Lm5vZGVzW3JbbF1dO2lmKCFhfHxhLmhhc1JlcXVpcmVkQXR0cnMoKSlicmVhaztzPVMuZnJvbShhLmNyZWF0ZShyW2wrMV0scykpLGkrKyxvKyt9cmV0dXJuIG5ldyBFKHMsaSxvKX1jb25zdCB3ZT17fSx2ZT17fSxubT17dG91Y2hzdGFydDohMCx0b3VjaG1vdmU6ITB9O2NsYXNzIHJte2NvbnN0cnVjdG9yKCl7dGhpcy5zaGlmdEtleT0hMSx0aGlzLm1vdXNlRG93bj1udWxsLHRoaXMubGFzdEtleUNvZGU9bnVsbCx0aGlzLmxhc3RLZXlDb2RlVGltZT0wLHRoaXMubGFzdENsaWNrPXt0aW1lOjAseDowLHk6MCx0eXBlOiIiLGJ1dHRvbjowfSx0aGlzLmxhc3RTZWxlY3Rpb25PcmlnaW49bnVsbCx0aGlzLmxhc3RTZWxlY3Rpb25UaW1lPTAsdGhpcy5sYXN0SU9TRW50ZXI9MCx0aGlzLmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dD0tMSx0aGlzLmxhc3RGb2N1cz0wLHRoaXMubGFzdFRvdWNoPTAsdGhpcy5sYXN0Q2hyb21lRGVsZXRlPTAsdGhpcy5jb21wb3Npbmc9ITEsdGhpcy5jb21wb3NpdGlvbk5vZGU9bnVsbCx0aGlzLmNvbXBvc2luZ1RpbWVvdXQ9LTEsdGhpcy5jb21wb3NpdGlvbk5vZGVzPVtdLHRoaXMuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsdGhpcy5jb21wb3NpdGlvbklEPTEsdGhpcy5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMSx0aGlzLmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCx0aGlzLmRvbUNoYW5nZUNvdW50PTAsdGhpcy5ldmVudEhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5oaWRlU2VsZWN0aW9uR3VhcmQ9bnVsbH19ZnVuY3Rpb24gc20obil7Zm9yKGxldCBlIGluIHdlKXtsZXQgdD13ZVtlXTtuLmRvbS5hZGRFdmVudExpc3RlbmVyKGUsbi5pbnB1dC5ldmVudEhhbmRsZXJzW2VdPXI9PntvbShuLHIpJiYhVG8obixyKSYmKG4uZWRpdGFibGV8fCEoci50eXBlIGluIHZlKSkmJnQobixyKX0sbm1bZV0/e3Bhc3NpdmU6ITB9OnZvaWQgMCl9a2UmJm4uZG9tLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoKT0+bnVsbCksVWkobil9ZnVuY3Rpb24gdnQobixlKXtuLmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW49ZSxuLmlucHV0Lmxhc3RTZWxlY3Rpb25UaW1lPURhdGUubm93KCl9ZnVuY3Rpb24gaW0obil7bi5kb21PYnNlcnZlci5zdG9wKCk7Zm9yKGxldCBlIGluIG4uaW5wdXQuZXZlbnRIYW5kbGVycyluLmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKGUsbi5pbnB1dC5ldmVudEhhbmRsZXJzW2VdKTtjbGVhclRpbWVvdXQobi5pbnB1dC5jb21wb3NpbmdUaW1lb3V0KSxjbGVhclRpbWVvdXQobi5pbnB1dC5sYXN0SU9TRW50ZXJGYWxsYmFja1RpbWVvdXQpfWZ1bmN0aW9uIFVpKG4pe24uc29tZVByb3AoImhhbmRsZURPTUV2ZW50cyIsZT0+e2ZvcihsZXQgdCBpbiBlKW4uaW5wdXQuZXZlbnRIYW5kbGVyc1t0XXx8bi5kb20uYWRkRXZlbnRMaXN0ZW5lcih0LG4uaW5wdXQuZXZlbnRIYW5kbGVyc1t0XT1yPT5UbyhuLHIpKX0pfWZ1bmN0aW9uIFRvKG4sZSl7cmV0dXJuIG4uc29tZVByb3AoImhhbmRsZURPTUV2ZW50cyIsdD0+e2xldCByPXRbZS50eXBlXTtyZXR1cm4gcj9yKG4sZSl8fGUuZGVmYXVsdFByZXZlbnRlZDohMX0pfWZ1bmN0aW9uIG9tKG4sZSl7aWYoIWUuYnViYmxlcylyZXR1cm4hMDtpZihlLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuITE7Zm9yKGxldCB0PWUudGFyZ2V0O3QhPW4uZG9tO3Q9dC5wYXJlbnROb2RlKWlmKCF0fHx0Lm5vZGVUeXBlPT0xMXx8dC5wbVZpZXdEZXNjJiZ0LnBtVmlld0Rlc2Muc3RvcEV2ZW50KGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGxtKG4sZSl7IVRvKG4sZSkmJndlW2UudHlwZV0mJihuLmVkaXRhYmxlfHwhKGUudHlwZSBpbiB2ZSkpJiZ3ZVtlLnR5cGVdKG4sZSl9dmUua2V5ZG93bj0obixlKT0+e2xldCB0PWU7aWYobi5pbnB1dC5zaGlmdEtleT10LmtleUNvZGU9PTE2fHx0LnNoaWZ0S2V5LCEkdShuLHQpJiYobi5pbnB1dC5sYXN0S2V5Q29kZT10LmtleUNvZGUsbi5pbnB1dC5sYXN0S2V5Q29kZVRpbWU9RGF0ZS5ub3coKSwhKHJ0JiZtZSYmdC5rZXlDb2RlPT0xMykpKWlmKHQua2V5Q29kZSE9MjI5JiZuLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKSxkbiYmdC5rZXlDb2RlPT0xMyYmIXQuY3RybEtleSYmIXQuYWx0S2V5JiYhdC5tZXRhS2V5KXtsZXQgcj1EYXRlLm5vdygpO24uaW5wdXQubGFzdElPU0VudGVyPXIsbi5pbnB1dC5sYXN0SU9TRW50ZXJGYWxsYmFja1RpbWVvdXQ9c2V0VGltZW91dCgoKT0+e24uaW5wdXQubGFzdElPU0VudGVyPT1yJiYobi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIscz0+cyhuLFJ0KDEzLCJFbnRlciIpKSksbi5pbnB1dC5sYXN0SU9TRW50ZXI9MCl9LDIwMCl9ZWxzZSBuLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixyPT5yKG4sdCkpfHxHcChuLHQpP3QucHJldmVudERlZmF1bHQoKTp2dChuLCJrZXkiKX07dmUua2V5dXA9KG4sZSk9PntlLmtleUNvZGU9PTE2JiYobi5pbnB1dC5zaGlmdEtleT0hMSl9O3ZlLmtleXByZXNzPShuLGUpPT57bGV0IHQ9ZTtpZigkdShuLHQpfHwhdC5jaGFyQ29kZXx8dC5jdHJsS2V5JiYhdC5hbHRLZXl8fEllJiZ0Lm1ldGFLZXkpcmV0dXJuO2lmKG4uc29tZVByb3AoImhhbmRsZUtleVByZXNzIixzPT5zKG4sdCkpKXt0LnByZXZlbnREZWZhdWx0KCk7cmV0dXJufWxldCByPW4uc3RhdGUuc2VsZWN0aW9uO2lmKCEociBpbnN0YW5jZW9mIEQpfHwhci4kZnJvbS5zYW1lUGFyZW50KHIuJHRvKSl7bGV0IHM9U3RyaW5nLmZyb21DaGFyQ29kZSh0LmNoYXJDb2RlKSxpPSgpPT5uLnN0YXRlLnRyLmluc2VydFRleHQocykuc2Nyb2xsSW50b1ZpZXcoKTshL1tcclxuXS8udGVzdChzKSYmIW4uc29tZVByb3AoImhhbmRsZVRleHRJbnB1dCIsbz0+byhuLHIuJGZyb20ucG9zLHIuJHRvLnBvcyxzLGkpKSYmbi5kaXNwYXRjaChpKCkpLHQucHJldmVudERlZmF1bHQoKX19O2Z1bmN0aW9uIHpzKG4pe3JldHVybntsZWZ0Om4uY2xpZW50WCx0b3A6bi5jbGllbnRZfX1mdW5jdGlvbiBhbShuLGUpe2xldCB0PWUueC1uLmNsaWVudFgscj1lLnktbi5jbGllbnRZO3JldHVybiB0KnQrcipyPDEwMH1mdW5jdGlvbiBNbyhuLGUsdCxyLHMpe2lmKHI9PS0xKXJldHVybiExO2xldCBpPW4uc3RhdGUuZG9jLnJlc29sdmUocik7Zm9yKGxldCBvPWkuZGVwdGgrMTtvPjA7by0tKWlmKG4uc29tZVByb3AoZSxsPT5vPmkuZGVwdGg/bChuLHQsaS5ub2RlQWZ0ZXIsaS5iZWZvcmUobykscywhMCk6bChuLHQsaS5ub2RlKG8pLGkuYmVmb3JlKG8pLHMsITEpKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBsbihuLGUsdCl7aWYobi5mb2N1c2VkfHxuLmZvY3VzKCksbi5zdGF0ZS5zZWxlY3Rpb24uZXEoZSkpcmV0dXJuO2xldCByPW4uc3RhdGUudHIuc2V0U2VsZWN0aW9uKGUpO3Iuc2V0TWV0YSgicG9pbnRlciIsITApLG4uZGlzcGF0Y2gocil9ZnVuY3Rpb24gY20obixlKXtpZihlPT0tMSlyZXR1cm4hMTtsZXQgdD1uLnN0YXRlLmRvYy5yZXNvbHZlKGUpLHI9dC5ub2RlQWZ0ZXI7cmV0dXJuIHImJnIuaXNBdG9tJiZOLmlzU2VsZWN0YWJsZShyKT8obG4obixuZXcgTih0KSksITApOiExfWZ1bmN0aW9uIHVtKG4sZSl7aWYoZT09LTEpcmV0dXJuITE7bGV0IHQ9bi5zdGF0ZS5zZWxlY3Rpb24scixzO3QgaW5zdGFuY2VvZiBOJiYocj10Lm5vZGUpO2xldCBpPW4uc3RhdGUuZG9jLnJlc29sdmUoZSk7Zm9yKGxldCBvPWkuZGVwdGgrMTtvPjA7by0tKXtsZXQgbD1vPmkuZGVwdGg/aS5ub2RlQWZ0ZXI6aS5ub2RlKG8pO2lmKE4uaXNTZWxlY3RhYmxlKGwpKXtyJiZ0LiRmcm9tLmRlcHRoPjAmJm8+PXQuJGZyb20uZGVwdGgmJmkuYmVmb3JlKHQuJGZyb20uZGVwdGgrMSk9PXQuJGZyb20ucG9zP3M9aS5iZWZvcmUodC4kZnJvbS5kZXB0aCk6cz1pLmJlZm9yZShvKTticmVha319cmV0dXJuIHMhPW51bGw/KGxuKG4sTi5jcmVhdGUobi5zdGF0ZS5kb2MscykpLCEwKTohMX1mdW5jdGlvbiBkbShuLGUsdCxyLHMpe3JldHVybiBNbyhuLCJoYW5kbGVDbGlja09uIixlLHQscil8fG4uc29tZVByb3AoImhhbmRsZUNsaWNrIixpPT5pKG4sZSxyKSl8fChzP3VtKG4sdCk6Y20obix0KSl9ZnVuY3Rpb24gaG0obixlLHQscil7cmV0dXJuIE1vKG4sImhhbmRsZURvdWJsZUNsaWNrT24iLGUsdCxyKXx8bi5zb21lUHJvcCgiaGFuZGxlRG91YmxlQ2xpY2siLHM9PnMobixlLHIpKX1mdW5jdGlvbiBmbShuLGUsdCxyKXtyZXR1cm4gTW8obiwiaGFuZGxlVHJpcGxlQ2xpY2tPbiIsZSx0LHIpfHxuLnNvbWVQcm9wKCJoYW5kbGVUcmlwbGVDbGljayIscz0+cyhuLGUscikpfHxwbShuLHQscil9ZnVuY3Rpb24gcG0obixlLHQpe2lmKHQuYnV0dG9uIT0wKXJldHVybiExO2xldCByPW4uc3RhdGUuZG9jO2lmKGU9PS0xKXJldHVybiByLmlubGluZUNvbnRlbnQ/KGxuKG4sRC5jcmVhdGUociwwLHIuY29udGVudC5zaXplKSksITApOiExO2xldCBzPXIucmVzb2x2ZShlKTtmb3IobGV0IGk9cy5kZXB0aCsxO2k+MDtpLS0pe2xldCBvPWk+cy5kZXB0aD9zLm5vZGVBZnRlcjpzLm5vZGUoaSksbD1zLmJlZm9yZShpKTtpZihvLmlubGluZUNvbnRlbnQpbG4obixELmNyZWF0ZShyLGwrMSxsKzErby5jb250ZW50LnNpemUpKTtlbHNlIGlmKE4uaXNTZWxlY3RhYmxlKG8pKWxuKG4sTi5jcmVhdGUocixsKSk7ZWxzZSBjb250aW51ZTtyZXR1cm4hMH19ZnVuY3Rpb24gRW8obil7cmV0dXJuIGpyKG4pfWNvbnN0IHp1PUllPyJtZXRhS2V5IjoiY3RybEtleSI7d2UubW91c2Vkb3duPShuLGUpPT57bGV0IHQ9ZTtuLmlucHV0LnNoaWZ0S2V5PXQuc2hpZnRLZXk7bGV0IHI9RW8obikscz1EYXRlLm5vdygpLGk9InNpbmdsZUNsaWNrIjtzLW4uaW5wdXQubGFzdENsaWNrLnRpbWU8NTAwJiZhbSh0LG4uaW5wdXQubGFzdENsaWNrKSYmIXRbenVdJiZuLmlucHV0Lmxhc3RDbGljay5idXR0b249PXQuYnV0dG9uJiYobi5pbnB1dC5sYXN0Q2xpY2sudHlwZT09InNpbmdsZUNsaWNrIj9pPSJkb3VibGVDbGljayI6bi5pbnB1dC5sYXN0Q2xpY2sudHlwZT09ImRvdWJsZUNsaWNrIiYmKGk9InRyaXBsZUNsaWNrIikpLG4uaW5wdXQubGFzdENsaWNrPXt0aW1lOnMseDp0LmNsaWVudFgseTp0LmNsaWVudFksdHlwZTppLGJ1dHRvbjp0LmJ1dHRvbn07bGV0IG89bi5wb3NBdENvb3Jkcyh6cyh0KSk7byYmKGk9PSJzaW5nbGVDbGljayI/KG4uaW5wdXQubW91c2VEb3duJiZuLmlucHV0Lm1vdXNlRG93bi5kb25lKCksbi5pbnB1dC5tb3VzZURvd249bmV3IG1tKG4sbyx0LCEhcikpOihpPT0iZG91YmxlQ2xpY2siP2htOmZtKShuLG8ucG9zLG8uaW5zaWRlLHQpP3QucHJldmVudERlZmF1bHQoKTp2dChuLCJwb2ludGVyIikpfTtjbGFzcyBtbXtjb25zdHJ1Y3RvcihlLHQscixzKXt0aGlzLnZpZXc9ZSx0aGlzLnBvcz10LHRoaXMuZXZlbnQ9cix0aGlzLmZsdXNoZWQ9cyx0aGlzLmRlbGF5ZWRTZWxlY3Rpb25TeW5jPSExLHRoaXMubWlnaHREcmFnPW51bGwsdGhpcy5zdGFydERvYz1lLnN0YXRlLmRvYyx0aGlzLnNlbGVjdE5vZGU9ISFyW3p1XSx0aGlzLmFsbG93RGVmYXVsdD1yLnNoaWZ0S2V5O2xldCBpLG87aWYodC5pbnNpZGU+LTEpaT1lLnN0YXRlLmRvYy5ub2RlQXQodC5pbnNpZGUpLG89dC5pbnNpZGU7ZWxzZXtsZXQgdT1lLnN0YXRlLmRvYy5yZXNvbHZlKHQucG9zKTtpPXUucGFyZW50LG89dS5kZXB0aD91LmJlZm9yZSgpOjB9Y29uc3QgbD1zP251bGw6ci50YXJnZXQsYT1sP2UuZG9jVmlldy5uZWFyZXN0RGVzYyhsLCEwKTpudWxsO3RoaXMudGFyZ2V0PWEmJmEubm9kZURPTS5ub2RlVHlwZT09MT9hLm5vZGVET006bnVsbDtsZXR7c2VsZWN0aW9uOmN9PWUuc3RhdGU7ci5idXR0b249PTAmJihpLnR5cGUuc3BlYy5kcmFnZ2FibGUmJmkudHlwZS5zcGVjLnNlbGVjdGFibGUhPT0hMXx8YyBpbnN0YW5jZW9mIE4mJmMuZnJvbTw9byYmYy50bz5vKSYmKHRoaXMubWlnaHREcmFnPXtub2RlOmkscG9zOm8sYWRkQXR0cjohISh0aGlzLnRhcmdldCYmIXRoaXMudGFyZ2V0LmRyYWdnYWJsZSksc2V0VW5lZGl0YWJsZTohISh0aGlzLnRhcmdldCYmUGUmJiF0aGlzLnRhcmdldC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRFZGl0YWJsZSIpKX0pLHRoaXMudGFyZ2V0JiZ0aGlzLm1pZ2h0RHJhZyYmKHRoaXMubWlnaHREcmFnLmFkZEF0dHJ8fHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUpJiYodGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKSx0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyJiYodGhpcy50YXJnZXQuZHJhZ2dhYmxlPSEwKSx0aGlzLm1pZ2h0RHJhZy5zZXRVbmVkaXRhYmxlJiZzZXRUaW1lb3V0KCgpPT57dGhpcy52aWV3LmlucHV0Lm1vdXNlRG93bj09dGhpcyYmdGhpcy50YXJnZXQuc2V0QXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiLCJmYWxzZSIpfSwyMCksdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCkpLGUucm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnVwPXRoaXMudXAuYmluZCh0aGlzKSksZS5yb290LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3ZlPXRoaXMubW92ZS5iaW5kKHRoaXMpKSx2dChlLCJwb2ludGVyIil9ZG9uZSgpe3RoaXMudmlldy5yb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMudXApLHRoaXMudmlldy5yb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3ZlKSx0aGlzLm1pZ2h0RHJhZyYmdGhpcy50YXJnZXQmJih0aGlzLnZpZXcuZG9tT2JzZXJ2ZXIuc3RvcCgpLHRoaXMubWlnaHREcmFnLmFkZEF0dHImJnRoaXMudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgiZHJhZ2dhYmxlIiksdGhpcy5taWdodERyYWcuc2V0VW5lZGl0YWJsZSYmdGhpcy50YXJnZXQucmVtb3ZlQXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiKSx0aGlzLnZpZXcuZG9tT2JzZXJ2ZXIuc3RhcnQoKSksdGhpcy5kZWxheWVkU2VsZWN0aW9uU3luYyYmc2V0VGltZW91dCgoKT0+bHQodGhpcy52aWV3KSksdGhpcy52aWV3LmlucHV0Lm1vdXNlRG93bj1udWxsfXVwKGUpe2lmKHRoaXMuZG9uZSgpLCF0aGlzLnZpZXcuZG9tLmNvbnRhaW5zKGUudGFyZ2V0KSlyZXR1cm47bGV0IHQ9dGhpcy5wb3M7dGhpcy52aWV3LnN0YXRlLmRvYyE9dGhpcy5zdGFydERvYyYmKHQ9dGhpcy52aWV3LnBvc0F0Q29vcmRzKHpzKGUpKSksdGhpcy51cGRhdGVBbGxvd0RlZmF1bHQoZSksdGhpcy5hbGxvd0RlZmF1bHR8fCF0P3Z0KHRoaXMudmlldywicG9pbnRlciIpOmRtKHRoaXMudmlldyx0LnBvcyx0Lmluc2lkZSxlLHRoaXMuc2VsZWN0Tm9kZSk/ZS5wcmV2ZW50RGVmYXVsdCgpOmUuYnV0dG9uPT0wJiYodGhpcy5mbHVzaGVkfHxrZSYmdGhpcy5taWdodERyYWcmJiF0aGlzLm1pZ2h0RHJhZy5ub2RlLmlzQXRvbXx8bWUmJiF0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLnZpc2libGUmJk1hdGgubWluKE1hdGguYWJzKHQucG9zLXRoaXMudmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSksTWF0aC5hYnModC5wb3MtdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi50bykpPD0yKT8obG4odGhpcy52aWV3LEkubmVhcih0aGlzLnZpZXcuc3RhdGUuZG9jLnJlc29sdmUodC5wb3MpKSksZS5wcmV2ZW50RGVmYXVsdCgpKTp2dCh0aGlzLnZpZXcsInBvaW50ZXIiKX1tb3ZlKGUpe3RoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGUpLHZ0KHRoaXMudmlldywicG9pbnRlciIpLGUuYnV0dG9ucz09MCYmdGhpcy5kb25lKCl9dXBkYXRlQWxsb3dEZWZhdWx0KGUpeyF0aGlzLmFsbG93RGVmYXVsdCYmKE1hdGguYWJzKHRoaXMuZXZlbnQueC1lLmNsaWVudFgpPjR8fE1hdGguYWJzKHRoaXMuZXZlbnQueS1lLmNsaWVudFkpPjQpJiYodGhpcy5hbGxvd0RlZmF1bHQ9ITApfX13ZS50b3VjaHN0YXJ0PW49PntuLmlucHV0Lmxhc3RUb3VjaD1EYXRlLm5vdygpLEVvKG4pLHZ0KG4sInBvaW50ZXIiKX07d2UudG91Y2htb3ZlPW49PntuLmlucHV0Lmxhc3RUb3VjaD1EYXRlLm5vdygpLHZ0KG4sInBvaW50ZXIiKX07d2UuY29udGV4dG1lbnU9bj0+RW8obik7ZnVuY3Rpb24gJHUobixlKXtyZXR1cm4gbi5jb21wb3Npbmc/ITA6a2UmJk1hdGguYWJzKGUudGltZVN0YW1wLW4uaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0KTw1MDA/KG4uaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsITApOiExfWNvbnN0IGdtPXJ0PzVlMzotMTt2ZS5jb21wb3NpdGlvbnN0YXJ0PXZlLmNvbXBvc2l0aW9udXBkYXRlPW49PntpZighbi5jb21wb3Npbmcpe24uZG9tT2JzZXJ2ZXIuZmx1c2goKTtsZXR7c3RhdGU6ZX09bix0PWUuc2VsZWN0aW9uLiR0bztpZihlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEQmJihlLnN0b3JlZE1hcmtzfHwhdC50ZXh0T2Zmc2V0JiZ0LnBhcmVudE9mZnNldCYmdC5ub2RlQmVmb3JlLm1hcmtzLnNvbWUocj0+ci50eXBlLnNwZWMuaW5jbHVzaXZlPT09ITEpfHxtZSYmcHUmJnltKG4pKSluLm1hcmtDdXJzb3I9bi5zdGF0ZS5zdG9yZWRNYXJrc3x8dC5tYXJrcygpLGpyKG4sITApLG4ubWFya0N1cnNvcj1udWxsO2Vsc2UgaWYoanIobiwhZS5zZWxlY3Rpb24uZW1wdHkpLFBlJiZlLnNlbGVjdGlvbi5lbXB0eSYmdC5wYXJlbnRPZmZzZXQmJiF0LnRleHRPZmZzZXQmJnQubm9kZUJlZm9yZS5tYXJrcy5sZW5ndGgpe2xldCByPW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtmb3IobGV0IHM9ci5mb2N1c05vZGUsaT1yLmZvY3VzT2Zmc2V0O3MmJnMubm9kZVR5cGU9PTEmJmkhPTA7KXtsZXQgbz1pPDA/cy5sYXN0Q2hpbGQ6cy5jaGlsZE5vZGVzW2ktMV07aWYoIW8pYnJlYWs7aWYoby5ub2RlVHlwZT09Myl7bGV0IGw9bi5kb21TZWxlY3Rpb24oKTtsJiZsLmNvbGxhcHNlKG8sby5ub2RlVmFsdWUubGVuZ3RoKTticmVha31lbHNlIHM9byxpPS0xfX1uLmlucHV0LmNvbXBvc2luZz0hMH1CdShuLGdtKX07ZnVuY3Rpb24geW0obil7bGV0e2ZvY3VzTm9kZTplLGZvY3VzT2Zmc2V0OnR9PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZighZXx8ZS5ub2RlVHlwZSE9MXx8dD49ZS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm4hMTtsZXQgcj1lLmNoaWxkTm9kZXNbdF07cmV0dXJuIHIubm9kZVR5cGU9PTEmJnIuY29udGVudEVkaXRhYmxlPT0iZmFsc2UifXZlLmNvbXBvc2l0aW9uZW5kPShuLGUpPT57bi5jb21wb3NpbmcmJihuLmlucHV0LmNvbXBvc2luZz0hMSxuLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD1lLnRpbWVTdGFtcCxuLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9bi5kb21PYnNlcnZlci5wZW5kaW5nUmVjb3JkcygpLmxlbmd0aD9uLmlucHV0LmNvbXBvc2l0aW9uSUQ6MCxuLmlucHV0LmNvbXBvc2l0aW9uTm9kZT1udWxsLG4uaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb24/bi5kb21PYnNlcnZlci5mb3JjZUZsdXNoKCk6bi5pbnB1dC5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5uLmRvbU9ic2VydmVyLmZsdXNoKCkpLG4uaW5wdXQuY29tcG9zaXRpb25JRCsrLEJ1KG4sMjApKX07ZnVuY3Rpb24gQnUobixlKXtjbGVhclRpbWVvdXQobi5pbnB1dC5jb21wb3NpbmdUaW1lb3V0KSxlPi0xJiYobi5pbnB1dC5jb21wb3NpbmdUaW1lb3V0PXNldFRpbWVvdXQoKCk9PmpyKG4pLGUpKX1mdW5jdGlvbiBfdShuKXtmb3Iobi5jb21wb3NpbmcmJihuLmlucHV0LmNvbXBvc2luZz0hMSxuLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD1ibSgpKTtuLmlucHV0LmNvbXBvc2l0aW9uTm9kZXMubGVuZ3RoPjA7KW4uaW5wdXQuY29tcG9zaXRpb25Ob2Rlcy5wb3AoKS5tYXJrUGFyZW50c0RpcnR5KCl9ZnVuY3Rpb24ga20obil7bGV0IGU9bi5kb21TZWxlY3Rpb25SYW5nZSgpO2lmKCFlLmZvY3VzTm9kZSlyZXR1cm4gbnVsbDtsZXQgdD11cChlLmZvY3VzTm9kZSxlLmZvY3VzT2Zmc2V0KSxyPWRwKGUuZm9jdXNOb2RlLGUuZm9jdXNPZmZzZXQpO2lmKHQmJnImJnQhPXIpe2xldCBzPXIucG1WaWV3RGVzYyxpPW4uZG9tT2JzZXJ2ZXIubGFzdENoYW5nZWRUZXh0Tm9kZTtpZih0PT1pfHxyPT1pKXJldHVybiBpO2lmKCFzfHwhcy5pc1RleHQoci5ub2RlVmFsdWUpKXJldHVybiByO2lmKG4uaW5wdXQuY29tcG9zaXRpb25Ob2RlPT1yKXtsZXQgbz10LnBtVmlld0Rlc2M7aWYoISghb3x8IW8uaXNUZXh0KHQubm9kZVZhbHVlKSkpcmV0dXJuIHJ9fXJldHVybiB0fHxyfWZ1bmN0aW9uIGJtKCl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIG4uaW5pdEV2ZW50KCJldmVudCIsITAsITApLG4udGltZVN0YW1wfWZ1bmN0aW9uIGpyKG4sZT0hMSl7aWYoIShydCYmbi5kb21PYnNlcnZlci5mbHVzaGluZ1Nvb24+PTApKXtpZihuLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKSxfdShuKSxlfHxuLmRvY1ZpZXcmJm4uZG9jVmlldy5kaXJ0eSl7bGV0IHQ9dm8obikscj1uLnN0YXRlLnNlbGVjdGlvbjtyZXR1cm4gdCYmIXQuZXEocik/bi5kaXNwYXRjaChuLnN0YXRlLnRyLnNldFNlbGVjdGlvbih0KSk6KG4ubWFya0N1cnNvcnx8ZSkmJiFyLiRmcm9tLm5vZGUoci4kZnJvbS5zaGFyZWREZXB0aChyLnRvKSkuaW5saW5lQ29udGVudD9uLmRpc3BhdGNoKG4uc3RhdGUudHIuZGVsZXRlU2VsZWN0aW9uKCkpOm4udXBkYXRlU3RhdGUobi5zdGF0ZSksITB9cmV0dXJuITF9fWZ1bmN0aW9uIHhtKG4sZSl7aWYoIW4uZG9tLnBhcmVudE5vZGUpcmV0dXJuO2xldCB0PW4uZG9tLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO3QuYXBwZW5kQ2hpbGQoZSksdC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IC0xMDAwMHB4OyB0b3A6IDEwcHgiO2xldCByPWdldFNlbGVjdGlvbigpLHM9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtzLnNlbGVjdE5vZGVDb250ZW50cyhlKSxuLmRvbS5ibHVyKCksci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKHMpLHNldFRpbWVvdXQoKCk9Pnt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSxuLmZvY3VzKCl9LDUwKX1jb25zdCBRbj1NZSYmU3Q8MTV8fGRuJiZtcDw2MDQ7d2UuY29weT12ZS5jdXQ9KG4sZSk9PntsZXQgdD1lLHI9bi5zdGF0ZS5zZWxlY3Rpb24scz10LnR5cGU9PSJjdXQiO2lmKHIuZW1wdHkpcmV0dXJuO2xldCBpPVFuP251bGw6dC5jbGlwYm9hcmREYXRhLG89ci5jb250ZW50KCkse2RvbTpsLHRleHQ6YX09Q28obixvKTtpPyh0LnByZXZlbnREZWZhdWx0KCksaS5jbGVhckRhdGEoKSxpLnNldERhdGEoInRleHQvaHRtbCIsbC5pbm5lckhUTUwpLGkuc2V0RGF0YSgidGV4dC9wbGFpbiIsYSkpOnhtKG4sbCkscyYmbi5kaXNwYXRjaChuLnN0YXRlLnRyLmRlbGV0ZVNlbGVjdGlvbigpLnNjcm9sbEludG9WaWV3KCkuc2V0TWV0YSgidWlFdmVudCIsImN1dCIpKX07ZnVuY3Rpb24gd20obil7cmV0dXJuIG4ub3BlblN0YXJ0PT0wJiZuLm9wZW5FbmQ9PTAmJm4uY29udGVudC5jaGlsZENvdW50PT0xP24uY29udGVudC5maXJzdENoaWxkOm51bGx9ZnVuY3Rpb24gdm0obixlKXtpZighbi5kb20ucGFyZW50Tm9kZSlyZXR1cm47bGV0IHQ9bi5pbnB1dC5zaGlmdEtleXx8bi5zdGF0ZS5zZWxlY3Rpb24uJGZyb20ucGFyZW50LnR5cGUuc3BlYy5jb2RlLHI9bi5kb20ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQ/InRleHRhcmVhIjoiZGl2IikpO3R8fChyLmNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIpLHIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGZpeGVkOyBsZWZ0OiAtMTAwMDBweDsgdG9wOiAxMHB4IixyLmZvY3VzKCk7bGV0IHM9bi5pbnB1dC5zaGlmdEtleSYmbi5pbnB1dC5sYXN0S2V5Q29kZSE9NDU7c2V0VGltZW91dCgoKT0+e24uZm9jdXMoKSxyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSx0P1huKG4sci52YWx1ZSxudWxsLHMsZSk6WG4obixyLnRleHRDb250ZW50LHIuaW5uZXJIVE1MLHMsZSl9LDUwKX1mdW5jdGlvbiBYbihuLGUsdCxyLHMpe2xldCBpPU51KG4sZSx0LHIsbi5zdGF0ZS5zZWxlY3Rpb24uJGZyb20pO2lmKG4uc29tZVByb3AoImhhbmRsZVBhc3RlIixhPT5hKG4scyxpfHxFLmVtcHR5KSkpcmV0dXJuITA7aWYoIWkpcmV0dXJuITE7bGV0IG89d20oaSksbD1vP24uc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgobyxyKTpuLnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb24oaSk7cmV0dXJuIG4uZGlzcGF0Y2gobC5zY3JvbGxJbnRvVmlldygpLnNldE1ldGEoInBhc3RlIiwhMCkuc2V0TWV0YSgidWlFdmVudCIsInBhc3RlIikpLCEwfWZ1bmN0aW9uIEh1KG4pe2xldCBlPW4uZ2V0RGF0YSgidGV4dC9wbGFpbiIpfHxuLmdldERhdGEoIlRleHQiKTtpZihlKXJldHVybiBlO2xldCB0PW4uZ2V0RGF0YSgidGV4dC91cmktbGlzdCIpO3JldHVybiB0P3QucmVwbGFjZSgvXHI/XG4vZywiICIpOiIifXZlLnBhc3RlPShuLGUpPT57bGV0IHQ9ZTtpZihuLmNvbXBvc2luZyYmIXJ0KXJldHVybjtsZXQgcj1Rbj9udWxsOnQuY2xpcGJvYXJkRGF0YSxzPW4uaW5wdXQuc2hpZnRLZXkmJm4uaW5wdXQubGFzdEtleUNvZGUhPTQ1O3ImJlhuKG4sSHUociksci5nZXREYXRhKCJ0ZXh0L2h0bWwiKSxzLHQpP3QucHJldmVudERlZmF1bHQoKTp2bShuLHQpfTtjbGFzcyBGdXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5zbGljZT1lLHRoaXMubW92ZT10LHRoaXMubm9kZT1yfX1jb25zdCBTbT1JZT8iYWx0S2V5IjoiY3RybEtleSI7ZnVuY3Rpb24gVnUobixlKXtsZXQgdDtyZXR1cm4gbi5zb21lUHJvcCgiZHJhZ0NvcGllcyIscj0+e3Q9dHx8cihlKX0pLHQhPW51bGw/IXQ6IWVbU21dfXdlLmRyYWdzdGFydD0obixlKT0+e2xldCB0PWUscj1uLmlucHV0Lm1vdXNlRG93bjtpZihyJiZyLmRvbmUoKSwhdC5kYXRhVHJhbnNmZXIpcmV0dXJuO2xldCBzPW4uc3RhdGUuc2VsZWN0aW9uLGk9cy5lbXB0eT9udWxsOm4ucG9zQXRDb29yZHMoenModCkpLG87aWYoIShpJiZpLnBvcz49cy5mcm9tJiZpLnBvczw9KHMgaW5zdGFuY2VvZiBOP3MudG8tMTpzLnRvKSkpe2lmKHImJnIubWlnaHREcmFnKW89Ti5jcmVhdGUobi5zdGF0ZS5kb2Msci5taWdodERyYWcucG9zKTtlbHNlIGlmKHQudGFyZ2V0JiZ0LnRhcmdldC5ub2RlVHlwZT09MSl7bGV0IGQ9bi5kb2NWaWV3Lm5lYXJlc3REZXNjKHQudGFyZ2V0LCEwKTtkJiZkLm5vZGUudHlwZS5zcGVjLmRyYWdnYWJsZSYmZCE9bi5kb2NWaWV3JiYobz1OLmNyZWF0ZShuLnN0YXRlLmRvYyxkLnBvc0JlZm9yZSkpfX1sZXQgbD0ob3x8bi5zdGF0ZS5zZWxlY3Rpb24pLmNvbnRlbnQoKSx7ZG9tOmEsdGV4dDpjLHNsaWNlOnV9PUNvKG4sbCk7KCF0LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGh8fCFtZXx8ZnU+MTIwKSYmdC5kYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCksdC5kYXRhVHJhbnNmZXIuc2V0RGF0YShRbj8iVGV4dCI6InRleHQvaHRtbCIsYS5pbm5lckhUTUwpLHQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9ImNvcHlNb3ZlIixRbnx8dC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsYyksbi5kcmFnZ2luZz1uZXcgRnUodSxWdShuLHQpLG8pfTt3ZS5kcmFnZW5kPW49PntsZXQgZT1uLmRyYWdnaW5nO3dpbmRvdy5zZXRUaW1lb3V0KCgpPT57bi5kcmFnZ2luZz09ZSYmKG4uZHJhZ2dpbmc9bnVsbCl9LDUwKX07dmUuZHJhZ292ZXI9dmUuZHJhZ2VudGVyPShuLGUpPT5lLnByZXZlbnREZWZhdWx0KCk7dmUuZHJvcD0obixlKT0+e3RyeXtDbShuLGUsbi5kcmFnZ2luZyl9ZmluYWxseXtuLmRyYWdnaW5nPW51bGx9fTtmdW5jdGlvbiBDbShuLGUsdCl7aWYoIWUuZGF0YVRyYW5zZmVyKXJldHVybjtsZXQgcj1uLnBvc0F0Q29vcmRzKHpzKGUpKTtpZighcilyZXR1cm47bGV0IHM9bi5zdGF0ZS5kb2MucmVzb2x2ZShyLnBvcyksaT10JiZ0LnNsaWNlO2k/bi5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkIixmPT57aT1mKGksbiwhMSl9KTppPU51KG4sSHUoZS5kYXRhVHJhbnNmZXIpLFFuP251bGw6ZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dC9odG1sIiksITEscyk7bGV0IG89ISEodCYmVnUobixlKSk7aWYobi5zb21lUHJvcCgiaGFuZGxlRHJvcCIsZj0+ZihuLGUsaXx8RS5lbXB0eSxvKSkpe2UucHJldmVudERlZmF1bHQoKTtyZXR1cm59aWYoIWkpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKTtsZXQgbD1pP3FjKG4uc3RhdGUuZG9jLHMucG9zLGkpOnMucG9zO2w9PW51bGwmJihsPXMucG9zKTtsZXQgYT1uLnN0YXRlLnRyO2lmKG8pe2xldHtub2RlOmZ9PXQ7Zj9mLnJlcGxhY2UoYSk6YS5kZWxldGVTZWxlY3Rpb24oKX1sZXQgYz1hLm1hcHBpbmcubWFwKGwpLHU9aS5vcGVuU3RhcnQ9PTAmJmkub3BlbkVuZD09MCYmaS5jb250ZW50LmNoaWxkQ291bnQ9PTEsZD1hLmRvYztpZih1P2EucmVwbGFjZVJhbmdlV2l0aChjLGMsaS5jb250ZW50LmZpcnN0Q2hpbGQpOmEucmVwbGFjZVJhbmdlKGMsYyxpKSxhLmRvYy5lcShkKSlyZXR1cm47bGV0IGg9YS5kb2MucmVzb2x2ZShjKTtpZih1JiZOLmlzU2VsZWN0YWJsZShpLmNvbnRlbnQuZmlyc3RDaGlsZCkmJmgubm9kZUFmdGVyJiZoLm5vZGVBZnRlci5zYW1lTWFya3VwKGkuY29udGVudC5maXJzdENoaWxkKSlhLnNldFNlbGVjdGlvbihuZXcgTihoKSk7ZWxzZXtsZXQgZj1hLm1hcHBpbmcubWFwKGwpO2EubWFwcGluZy5tYXBzW2EubWFwcGluZy5tYXBzLmxlbmd0aC0xXS5mb3JFYWNoKChwLG0sZyx5KT0+Zj15KSxhLnNldFNlbGVjdGlvbihTbyhuLGgsYS5kb2MucmVzb2x2ZShmKSkpfW4uZm9jdXMoKSxuLmRpc3BhdGNoKGEuc2V0TWV0YSgidWlFdmVudCIsImRyb3AiKSl9d2UuZm9jdXM9bj0+e24uaW5wdXQubGFzdEZvY3VzPURhdGUubm93KCksbi5mb2N1c2VkfHwobi5kb21PYnNlcnZlci5zdG9wKCksbi5kb20uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3ItZm9jdXNlZCIpLG4uZG9tT2JzZXJ2ZXIuc3RhcnQoKSxuLmZvY3VzZWQ9ITAsc2V0VGltZW91dCgoKT0+e24uZG9jVmlldyYmbi5oYXNGb2N1cygpJiYhbi5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmVxKG4uZG9tU2VsZWN0aW9uUmFuZ2UoKSkmJmx0KG4pfSwyMCkpfTt3ZS5ibHVyPShuLGUpPT57bGV0IHQ9ZTtuLmZvY3VzZWQmJihuLmRvbU9ic2VydmVyLnN0b3AoKSxuLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1mb2N1c2VkIiksbi5kb21PYnNlcnZlci5zdGFydCgpLHQucmVsYXRlZFRhcmdldCYmbi5kb20uY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KSYmbi5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmNsZWFyKCksbi5mb2N1c2VkPSExKX07d2UuYmVmb3JlaW5wdXQ9KG4sZSk9PntpZihtZSYmcnQmJmUuaW5wdXRUeXBlPT0iZGVsZXRlQ29udGVudEJhY2t3YXJkIil7bi5kb21PYnNlcnZlci5mbHVzaFNvb24oKTtsZXR7ZG9tQ2hhbmdlQ291bnQ6cn09bi5pbnB1dDtzZXRUaW1lb3V0KCgpPT57aWYobi5pbnB1dC5kb21DaGFuZ2VDb3VudCE9cnx8KG4uZG9tLmJsdXIoKSxuLmZvY3VzKCksbi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsaT0+aShuLFJ0KDgsIkJhY2tzcGFjZSIpKSkpKXJldHVybjtsZXR7JGN1cnNvcjpzfT1uLnN0YXRlLnNlbGVjdGlvbjtzJiZzLnBvcz4wJiZuLmRpc3BhdGNoKG4uc3RhdGUudHIuZGVsZXRlKHMucG9zLTEscy5wb3MpLnNjcm9sbEludG9WaWV3KCkpfSw1MCl9fTtmb3IobGV0IG4gaW4gdmUpd2Vbbl09dmVbbl07ZnVuY3Rpb24gWW4obixlKXtpZihuPT1lKXJldHVybiEwO2ZvcihsZXQgdCBpbiBuKWlmKG5bdF0hPT1lW3RdKXJldHVybiExO2ZvcihsZXQgdCBpbiBlKWlmKCEodCBpbiBuKSlyZXR1cm4hMTtyZXR1cm4hMH1jbGFzcyBxcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMudG9ET009ZSx0aGlzLnNwZWM9dHx8QnQsdGhpcy5zaWRlPXRoaXMuc3BlYy5zaWRlfHwwfW1hcChlLHQscixzKXtsZXR7cG9zOmksZGVsZXRlZDpvfT1lLm1hcFJlc3VsdCh0LmZyb20rcyx0aGlzLnNpZGU8MD8tMToxKTtyZXR1cm4gbz9udWxsOm5ldyB5ZShpLXIsaS1yLHRoaXMpfXZhbGlkKCl7cmV0dXJuITB9ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fGUgaW5zdGFuY2VvZiBxciYmKHRoaXMuc3BlYy5rZXkmJnRoaXMuc3BlYy5rZXk9PWUuc3BlYy5rZXl8fHRoaXMudG9ET009PWUudG9ET00mJlluKHRoaXMuc3BlYyxlLnNwZWMpKX1kZXN0cm95KGUpe3RoaXMuc3BlYy5kZXN0cm95JiZ0aGlzLnNwZWMuZGVzdHJveShlKX19Y2xhc3MgVHR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fEJ0fW1hcChlLHQscixzKXtsZXQgaT1lLm1hcCh0LmZyb20rcyx0aGlzLnNwZWMuaW5jbHVzaXZlU3RhcnQ/LTE6MSktcixvPWUubWFwKHQudG8rcyx0aGlzLnNwZWMuaW5jbHVzaXZlRW5kPzE6LTEpLXI7cmV0dXJuIGk+PW8/bnVsbDpuZXcgeWUoaSxvLHRoaXMpfXZhbGlkKGUsdCl7cmV0dXJuIHQuZnJvbTx0LnRvfWVxKGUpe3JldHVybiB0aGlzPT1lfHxlIGluc3RhbmNlb2YgVHQmJlluKHRoaXMuYXR0cnMsZS5hdHRycykmJlluKHRoaXMuc3BlYyxlLnNwZWMpfXN0YXRpYyBpcyhlKXtyZXR1cm4gZS50eXBlIGluc3RhbmNlb2YgVHR9ZGVzdHJveSgpe319Y2xhc3MgQW97Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fEJ0fW1hcChlLHQscixzKXtsZXQgaT1lLm1hcFJlc3VsdCh0LmZyb20rcywxKTtpZihpLmRlbGV0ZWQpcmV0dXJuIG51bGw7bGV0IG89ZS5tYXBSZXN1bHQodC50bytzLC0xKTtyZXR1cm4gby5kZWxldGVkfHxvLnBvczw9aS5wb3M/bnVsbDpuZXcgeWUoaS5wb3MtcixvLnBvcy1yLHRoaXMpfXZhbGlkKGUsdCl7bGV0e2luZGV4OnIsb2Zmc2V0OnN9PWUuY29udGVudC5maW5kSW5kZXgodC5mcm9tKSxpO3JldHVybiBzPT10LmZyb20mJiEoaT1lLmNoaWxkKHIpKS5pc1RleHQmJnMraS5ub2RlU2l6ZT09dC50b31lcShlKXtyZXR1cm4gdGhpcz09ZXx8ZSBpbnN0YW5jZW9mIEFvJiZZbih0aGlzLmF0dHJzLGUuYXR0cnMpJiZZbih0aGlzLnNwZWMsZS5zcGVjKX1kZXN0cm95KCl7fX1jbGFzcyB5ZXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5mcm9tPWUsdGhpcy50bz10LHRoaXMudHlwZT1yfWNvcHkoZSx0KXtyZXR1cm4gbmV3IHllKGUsdCx0aGlzLnR5cGUpfWVxKGUsdD0wKXtyZXR1cm4gdGhpcy50eXBlLmVxKGUudHlwZSkmJnRoaXMuZnJvbSt0PT1lLmZyb20mJnRoaXMudG8rdD09ZS50b31tYXAoZSx0LHIpe3JldHVybiB0aGlzLnR5cGUubWFwKGUsdGhpcyx0LHIpfXN0YXRpYyB3aWRnZXQoZSx0LHIpe3JldHVybiBuZXcgeWUoZSxlLG5ldyBxcih0LHIpKX1zdGF0aWMgaW5saW5lKGUsdCxyLHMpe3JldHVybiBuZXcgeWUoZSx0LG5ldyBUdChyLHMpKX1zdGF0aWMgbm9kZShlLHQscixzKXtyZXR1cm4gbmV3IHllKGUsdCxuZXcgQW8ocixzKSl9Z2V0IHNwZWMoKXtyZXR1cm4gdGhpcy50eXBlLnNwZWN9Z2V0IGlubGluZSgpe3JldHVybiB0aGlzLnR5cGUgaW5zdGFuY2VvZiBUdH1nZXQgd2lkZ2V0KCl7cmV0dXJuIHRoaXMudHlwZSBpbnN0YW5jZW9mIHFyfX1jb25zdCB0bj1bXSxCdD17fTtjbGFzcyBZe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sb2NhbD1lLmxlbmd0aD9lOnRuLHRoaXMuY2hpbGRyZW49dC5sZW5ndGg/dDp0bn1zdGF0aWMgY3JlYXRlKGUsdCl7cmV0dXJuIHQubGVuZ3RoP1dyKHQsZSwwLEJ0KTpnZX1maW5kKGUsdCxyKXtsZXQgcz1bXTtyZXR1cm4gdGhpcy5maW5kSW5uZXIoZT8/MCx0Pz8xZTkscywwLHIpLHN9ZmluZElubmVyKGUsdCxyLHMsaSl7Zm9yKGxldCBvPTA7bzx0aGlzLmxvY2FsLmxlbmd0aDtvKyspe2xldCBsPXRoaXMubG9jYWxbb107bC5mcm9tPD10JiZsLnRvPj1lJiYoIWl8fGkobC5zcGVjKSkmJnIucHVzaChsLmNvcHkobC5mcm9tK3MsbC50bytzKSl9Zm9yKGxldCBvPTA7bzx0aGlzLmNoaWxkcmVuLmxlbmd0aDtvKz0zKWlmKHRoaXMuY2hpbGRyZW5bb108dCYmdGhpcy5jaGlsZHJlbltvKzFdPmUpe2xldCBsPXRoaXMuY2hpbGRyZW5bb10rMTt0aGlzLmNoaWxkcmVuW28rMl0uZmluZElubmVyKGUtbCx0LWwscixzK2wsaSl9fW1hcChlLHQscil7cmV0dXJuIHRoaXM9PWdlfHxlLm1hcHMubGVuZ3RoPT0wP3RoaXM6dGhpcy5tYXBJbm5lcihlLHQsMCwwLHJ8fEJ0KX1tYXBJbm5lcihlLHQscixzLGkpe2xldCBvO2ZvcihsZXQgbD0wO2w8dGhpcy5sb2NhbC5sZW5ndGg7bCsrKXtsZXQgYT10aGlzLmxvY2FsW2xdLm1hcChlLHIscyk7YSYmYS50eXBlLnZhbGlkKHQsYSk/KG98fChvPVtdKSkucHVzaChhKTppLm9uUmVtb3ZlJiZpLm9uUmVtb3ZlKHRoaXMubG9jYWxbbF0uc3BlYyl9cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP1RtKHRoaXMuY2hpbGRyZW4sb3x8W10sZSx0LHIscyxpKTpvP25ldyBZKG8uc29ydChfdCksdG4pOmdlfWFkZChlLHQpe3JldHVybiB0Lmxlbmd0aD90aGlzPT1nZT9ZLmNyZWF0ZShlLHQpOnRoaXMuYWRkSW5uZXIoZSx0LDApOnRoaXN9YWRkSW5uZXIoZSx0LHIpe2xldCBzLGk9MDtlLmZvckVhY2goKGwsYSk9PntsZXQgYz1hK3IsdTtpZih1PWp1KHQsbCxjKSl7Zm9yKHN8fChzPXRoaXMuY2hpbGRyZW4uc2xpY2UoKSk7aTxzLmxlbmd0aCYmc1tpXTxhOylpKz0zO3NbaV09PWE/c1tpKzJdPXNbaSsyXS5hZGRJbm5lcihsLHUsYysxKTpzLnNwbGljZShpLDAsYSxhK2wubm9kZVNpemUsV3IodSxsLGMrMSxCdCkpLGkrPTN9fSk7bGV0IG89VXUoaT9xdSh0KTp0LC1yKTtmb3IobGV0IGw9MDtsPG8ubGVuZ3RoO2wrKylvW2xdLnR5cGUudmFsaWQoZSxvW2xdKXx8by5zcGxpY2UobC0tLDEpO3JldHVybiBuZXcgWShvLmxlbmd0aD90aGlzLmxvY2FsLmNvbmNhdChvKS5zb3J0KF90KTp0aGlzLmxvY2FsLHN8fHRoaXMuY2hpbGRyZW4pfXJlbW92ZShlKXtyZXR1cm4gZS5sZW5ndGg9PTB8fHRoaXM9PWdlP3RoaXM6dGhpcy5yZW1vdmVJbm5lcihlLDApfXJlbW92ZUlubmVyKGUsdCl7bGV0IHI9dGhpcy5jaGlsZHJlbixzPXRoaXMubG9jYWw7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKz0zKXtsZXQgbyxsPXJbaV0rdCxhPXJbaSsxXSt0O2ZvcihsZXQgdT0wLGQ7dTxlLmxlbmd0aDt1KyspKGQ9ZVt1XSkmJmQuZnJvbT5sJiZkLnRvPGEmJihlW3VdPW51bGwsKG98fChvPVtdKSkucHVzaChkKSk7aWYoIW8pY29udGludWU7cj09dGhpcy5jaGlsZHJlbiYmKHI9dGhpcy5jaGlsZHJlbi5zbGljZSgpKTtsZXQgYz1yW2krMl0ucmVtb3ZlSW5uZXIobyxsKzEpO2MhPWdlP3JbaSsyXT1jOihyLnNwbGljZShpLDMpLGktPTMpfWlmKHMubGVuZ3RoKXtmb3IobGV0IGk9MCxvO2k8ZS5sZW5ndGg7aSsrKWlmKG89ZVtpXSlmb3IobGV0IGw9MDtsPHMubGVuZ3RoO2wrKylzW2xdLmVxKG8sdCkmJihzPT10aGlzLmxvY2FsJiYocz10aGlzLmxvY2FsLnNsaWNlKCkpLHMuc3BsaWNlKGwtLSwxKSl9cmV0dXJuIHI9PXRoaXMuY2hpbGRyZW4mJnM9PXRoaXMubG9jYWw/dGhpczpzLmxlbmd0aHx8ci5sZW5ndGg/bmV3IFkocyxyKTpnZX1mb3JDaGlsZChlLHQpe2lmKHRoaXM9PWdlKXJldHVybiB0aGlzO2lmKHQuaXNMZWFmKXJldHVybiBZLmVtcHR5O2xldCByLHM7Zm9yKGxldCBsPTA7bDx0aGlzLmNoaWxkcmVuLmxlbmd0aDtsKz0zKWlmKHRoaXMuY2hpbGRyZW5bbF0+PWUpe3RoaXMuY2hpbGRyZW5bbF09PWUmJihyPXRoaXMuY2hpbGRyZW5bbCsyXSk7YnJlYWt9bGV0IGk9ZSsxLG89aSt0LmNvbnRlbnQuc2l6ZTtmb3IobGV0IGw9MDtsPHRoaXMubG9jYWwubGVuZ3RoO2wrKyl7bGV0IGE9dGhpcy5sb2NhbFtsXTtpZihhLmZyb208byYmYS50bz5pJiZhLnR5cGUgaW5zdGFuY2VvZiBUdCl7bGV0IGM9TWF0aC5tYXgoaSxhLmZyb20pLWksdT1NYXRoLm1pbihvLGEudG8pLWk7Yzx1JiYoc3x8KHM9W10pKS5wdXNoKGEuY29weShjLHUpKX19aWYocyl7bGV0IGw9bmV3IFkocy5zb3J0KF90KSx0bik7cmV0dXJuIHI/bmV3IHl0KFtsLHJdKTpsfXJldHVybiByfHxnZX1lcShlKXtpZih0aGlzPT1lKXJldHVybiEwO2lmKCEoZSBpbnN0YW5jZW9mIFkpfHx0aGlzLmxvY2FsLmxlbmd0aCE9ZS5sb2NhbC5sZW5ndGh8fHRoaXMuY2hpbGRyZW4ubGVuZ3RoIT1lLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMubG9jYWwubGVuZ3RoO3QrKylpZighdGhpcy5sb2NhbFt0XS5lcShlLmxvY2FsW3RdKSlyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrPTMpaWYodGhpcy5jaGlsZHJlblt0XSE9ZS5jaGlsZHJlblt0XXx8dGhpcy5jaGlsZHJlblt0KzFdIT1lLmNoaWxkcmVuW3QrMV18fCF0aGlzLmNoaWxkcmVuW3QrMl0uZXEoZS5jaGlsZHJlblt0KzJdKSlyZXR1cm4hMTtyZXR1cm4hMH1sb2NhbHMoZSl7cmV0dXJuIE9vKHRoaXMubG9jYWxzSW5uZXIoZSkpfWxvY2Fsc0lubmVyKGUpe2lmKHRoaXM9PWdlKXJldHVybiB0bjtpZihlLmlubGluZUNvbnRlbnR8fCF0aGlzLmxvY2FsLnNvbWUoVHQuaXMpKXJldHVybiB0aGlzLmxvY2FsO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8dGhpcy5sb2NhbC5sZW5ndGg7cisrKXRoaXMubG9jYWxbcl0udHlwZSBpbnN0YW5jZW9mIFR0fHx0LnB1c2godGhpcy5sb2NhbFtyXSk7cmV0dXJuIHR9Zm9yRWFjaFNldChlKXtlKHRoaXMpfX1ZLmVtcHR5PW5ldyBZKFtdLFtdKTtZLnJlbW92ZU92ZXJsYXA9T287Y29uc3QgZ2U9WS5lbXB0eTtjbGFzcyB5dHtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lbWJlcnM9ZX1tYXAoZSx0KXtjb25zdCByPXRoaXMubWVtYmVycy5tYXAocz0+cy5tYXAoZSx0LEJ0KSk7cmV0dXJuIHl0LmZyb20ocil9Zm9yQ2hpbGQoZSx0KXtpZih0LmlzTGVhZilyZXR1cm4gWS5lbXB0eTtsZXQgcj1bXTtmb3IobGV0IHM9MDtzPHRoaXMubWVtYmVycy5sZW5ndGg7cysrKXtsZXQgaT10aGlzLm1lbWJlcnNbc10uZm9yQ2hpbGQoZSx0KTtpIT1nZSYmKGkgaW5zdGFuY2VvZiB5dD9yPXIuY29uY2F0KGkubWVtYmVycyk6ci5wdXNoKGkpKX1yZXR1cm4geXQuZnJvbShyKX1lcShlKXtpZighKGUgaW5zdGFuY2VvZiB5dCl8fGUubWVtYmVycy5sZW5ndGghPXRoaXMubWVtYmVycy5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLm1lbWJlcnMubGVuZ3RoO3QrKylpZighdGhpcy5tZW1iZXJzW3RdLmVxKGUubWVtYmVyc1t0XSkpcmV0dXJuITE7cmV0dXJuITB9bG9jYWxzKGUpe2xldCB0LHI9ITA7Zm9yKGxldCBzPTA7czx0aGlzLm1lbWJlcnMubGVuZ3RoO3MrKyl7bGV0IGk9dGhpcy5tZW1iZXJzW3NdLmxvY2Fsc0lubmVyKGUpO2lmKGkubGVuZ3RoKWlmKCF0KXQ9aTtlbHNle3ImJih0PXQuc2xpY2UoKSxyPSExKTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKyl0LnB1c2goaVtvXSl9fXJldHVybiB0P09vKHI/dDp0LnNvcnQoX3QpKTp0bn1zdGF0aWMgZnJvbShlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZ2U7Y2FzZSAxOnJldHVybiBlWzBdO2RlZmF1bHQ6cmV0dXJuIG5ldyB5dChlLmV2ZXJ5KHQ9PnQgaW5zdGFuY2VvZiBZKT9lOmUucmVkdWNlKCh0LHIpPT50LmNvbmNhdChyIGluc3RhbmNlb2YgWT9yOnIubWVtYmVycyksW10pKX19Zm9yRWFjaFNldChlKXtmb3IobGV0IHQ9MDt0PHRoaXMubWVtYmVycy5sZW5ndGg7dCsrKXRoaXMubWVtYmVyc1t0XS5mb3JFYWNoU2V0KGUpfX1mdW5jdGlvbiBUbShuLGUsdCxyLHMsaSxvKXtsZXQgbD1uLnNsaWNlKCk7Zm9yKGxldCBjPTAsdT1pO2M8dC5tYXBzLmxlbmd0aDtjKyspe2xldCBkPTA7dC5tYXBzW2NdLmZvckVhY2goKGgsZixwLG0pPT57bGV0IGc9bS1wLShmLWgpO2ZvcihsZXQgeT0wO3k8bC5sZW5ndGg7eSs9Myl7bGV0IGs9bFt5KzFdO2lmKGs8MHx8aD5rK3UtZCljb250aW51ZTtsZXQgYj1sW3ldK3UtZDtmPj1iP2xbeSsxXT1oPD1iPy0yOi0xOmg+PXUmJmcmJihsW3ldKz1nLGxbeSsxXSs9Zyl9ZCs9Z30pLHU9dC5tYXBzW2NdLm1hcCh1LC0xKX1sZXQgYT0hMTtmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrPTMpaWYobFtjKzFdPDApe2lmKGxbYysxXT09LTIpe2E9ITAsbFtjKzFdPS0xO2NvbnRpbnVlfWxldCB1PXQubWFwKG5bY10raSksZD11LXM7aWYoZDwwfHxkPj1yLmNvbnRlbnQuc2l6ZSl7YT0hMDtjb250aW51ZX1sZXQgaD10Lm1hcChuW2MrMV0raSwtMSksZj1oLXMse2luZGV4OnAsb2Zmc2V0Om19PXIuY29udGVudC5maW5kSW5kZXgoZCksZz1yLm1heWJlQ2hpbGQocCk7aWYoZyYmbT09ZCYmbStnLm5vZGVTaXplPT1mKXtsZXQgeT1sW2MrMl0ubWFwSW5uZXIodCxnLHUrMSxuW2NdK2krMSxvKTt5IT1nZT8obFtjXT1kLGxbYysxXT1mLGxbYysyXT15KToobFtjKzFdPS0yLGE9ITApfWVsc2UgYT0hMH1pZihhKXtsZXQgYz1NbShsLG4sZSx0LHMsaSxvKSx1PVdyKGMsciwwLG8pO2U9dS5sb2NhbDtmb3IobGV0IGQ9MDtkPGwubGVuZ3RoO2QrPTMpbFtkKzFdPDAmJihsLnNwbGljZShkLDMpLGQtPTMpO2ZvcihsZXQgZD0wLGg9MDtkPHUuY2hpbGRyZW4ubGVuZ3RoO2QrPTMpe2xldCBmPXUuY2hpbGRyZW5bZF07Zm9yKDtoPGwubGVuZ3RoJiZsW2hdPGY7KWgrPTM7bC5zcGxpY2UoaCwwLHUuY2hpbGRyZW5bZF0sdS5jaGlsZHJlbltkKzFdLHUuY2hpbGRyZW5bZCsyXSl9fXJldHVybiBuZXcgWShlLnNvcnQoX3QpLGwpfWZ1bmN0aW9uIFV1KG4sZSl7aWYoIWV8fCFuLmxlbmd0aClyZXR1cm4gbjtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7bGV0IHM9bltyXTt0LnB1c2gobmV3IHllKHMuZnJvbStlLHMudG8rZSxzLnR5cGUpKX1yZXR1cm4gdH1mdW5jdGlvbiBNbShuLGUsdCxyLHMsaSxvKXtmdW5jdGlvbiBsKGEsYyl7Zm9yKGxldCB1PTA7dTxhLmxvY2FsLmxlbmd0aDt1Kyspe2xldCBkPWEubG9jYWxbdV0ubWFwKHIscyxjKTtkP3QucHVzaChkKTpvLm9uUmVtb3ZlJiZvLm9uUmVtb3ZlKGEubG9jYWxbdV0uc3BlYyl9Zm9yKGxldCB1PTA7dTxhLmNoaWxkcmVuLmxlbmd0aDt1Kz0zKWwoYS5jaGlsZHJlblt1KzJdLGEuY2hpbGRyZW5bdV0rYysxKX1mb3IobGV0IGE9MDthPG4ubGVuZ3RoO2ErPTMpblthKzFdPT0tMSYmbChuW2ErMl0sZVthXStpKzEpO3JldHVybiB0fWZ1bmN0aW9uIGp1KG4sZSx0KXtpZihlLmlzTGVhZilyZXR1cm4gbnVsbDtsZXQgcj10K2Uubm9kZVNpemUscz1udWxsO2ZvcihsZXQgaT0wLG87aTxuLmxlbmd0aDtpKyspKG89bltpXSkmJm8uZnJvbT50JiZvLnRvPHImJigoc3x8KHM9W10pKS5wdXNoKG8pLG5baV09bnVsbCk7cmV0dXJuIHN9ZnVuY3Rpb24gcXUobil7bGV0IGU9W107Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XSE9bnVsbCYmZS5wdXNoKG5bdF0pO3JldHVybiBlfWZ1bmN0aW9uIFdyKG4sZSx0LHIpe2xldCBzPVtdLGk9ITE7ZS5mb3JFYWNoKChsLGEpPT57bGV0IGM9anUobixsLGErdCk7aWYoYyl7aT0hMDtsZXQgdT1XcihjLGwsdCthKzEscik7dSE9Z2UmJnMucHVzaChhLGErbC5ub2RlU2l6ZSx1KX19KTtsZXQgbz1VdShpP3F1KG4pOm4sLXQpLnNvcnQoX3QpO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKW9bbF0udHlwZS52YWxpZChlLG9bbF0pfHwoci5vblJlbW92ZSYmci5vblJlbW92ZShvW2xdLnNwZWMpLG8uc3BsaWNlKGwtLSwxKSk7cmV0dXJuIG8ubGVuZ3RofHxzLmxlbmd0aD9uZXcgWShvLHMpOmdlfWZ1bmN0aW9uIF90KG4sZSl7cmV0dXJuIG4uZnJvbS1lLmZyb218fG4udG8tZS50b31mdW5jdGlvbiBPbyhuKXtsZXQgZT1uO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGgtMTt0Kyspe2xldCByPWVbdF07aWYoci5mcm9tIT1yLnRvKWZvcihsZXQgcz10KzE7czxlLmxlbmd0aDtzKyspe2xldCBpPWVbc107aWYoaS5mcm9tPT1yLmZyb20pe2kudG8hPXIudG8mJihlPT1uJiYoZT1uLnNsaWNlKCkpLGVbc109aS5jb3B5KGkuZnJvbSxyLnRvKSxzYShlLHMrMSxpLmNvcHkoci50byxpLnRvKSkpO2NvbnRpbnVlfWVsc2V7aS5mcm9tPHIudG8mJihlPT1uJiYoZT1uLnNsaWNlKCkpLGVbdF09ci5jb3B5KHIuZnJvbSxpLmZyb20pLHNhKGUscyxyLmNvcHkoaS5mcm9tLHIudG8pKSk7YnJlYWt9fX1yZXR1cm4gZX1mdW5jdGlvbiBzYShuLGUsdCl7Zm9yKDtlPG4ubGVuZ3RoJiZfdCh0LG5bZV0pPjA7KWUrKztuLnNwbGljZShlLDAsdCl9ZnVuY3Rpb24gY2kobil7bGV0IGU9W107cmV0dXJuIG4uc29tZVByb3AoImRlY29yYXRpb25zIix0PT57bGV0IHI9dChuLnN0YXRlKTtyJiZyIT1nZSYmZS5wdXNoKHIpfSksbi5jdXJzb3JXcmFwcGVyJiZlLnB1c2goWS5jcmVhdGUobi5zdGF0ZS5kb2MsW24uY3Vyc29yV3JhcHBlci5kZWNvXSkpLHl0LmZyb20oZSl9Y29uc3QgRW09e2NoaWxkTGlzdDohMCxjaGFyYWN0ZXJEYXRhOiEwLGNoYXJhY3RlckRhdGFPbGRWYWx1ZTohMCxhdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZU9sZFZhbHVlOiEwLHN1YnRyZWU6ITB9LEFtPU1lJiZTdDw9MTE7Y2xhc3MgT217Y29uc3RydWN0b3IoKXt0aGlzLmFuY2hvck5vZGU9bnVsbCx0aGlzLmFuY2hvck9mZnNldD0wLHRoaXMuZm9jdXNOb2RlPW51bGwsdGhpcy5mb2N1c09mZnNldD0wfXNldChlKXt0aGlzLmFuY2hvck5vZGU9ZS5hbmNob3JOb2RlLHRoaXMuYW5jaG9yT2Zmc2V0PWUuYW5jaG9yT2Zmc2V0LHRoaXMuZm9jdXNOb2RlPWUuZm9jdXNOb2RlLHRoaXMuZm9jdXNPZmZzZXQ9ZS5mb2N1c09mZnNldH1jbGVhcigpe3RoaXMuYW5jaG9yTm9kZT10aGlzLmZvY3VzTm9kZT1udWxsfWVxKGUpe3JldHVybiBlLmFuY2hvck5vZGU9PXRoaXMuYW5jaG9yTm9kZSYmZS5hbmNob3JPZmZzZXQ9PXRoaXMuYW5jaG9yT2Zmc2V0JiZlLmZvY3VzTm9kZT09dGhpcy5mb2N1c05vZGUmJmUuZm9jdXNPZmZzZXQ9PXRoaXMuZm9jdXNPZmZzZXR9fWNsYXNzIE5te2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52aWV3PWUsdGhpcy5oYW5kbGVET01DaGFuZ2U9dCx0aGlzLnF1ZXVlPVtdLHRoaXMuZmx1c2hpbmdTb29uPS0xLHRoaXMub2JzZXJ2ZXI9bnVsbCx0aGlzLmN1cnJlbnRTZWxlY3Rpb249bmV3IE9tLHRoaXMub25DaGFyRGF0YT1udWxsLHRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzPSExLHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1udWxsLHRoaXMub2JzZXJ2ZXI9d2luZG93Lk11dGF0aW9uT2JzZXJ2ZXImJm5ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcihyPT57Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspdGhpcy5xdWV1ZS5wdXNoKHJbc10pO01lJiZTdDw9MTEmJnIuc29tZShzPT5zLnR5cGU9PSJjaGlsZExpc3QiJiZzLnJlbW92ZWROb2Rlcy5sZW5ndGh8fHMudHlwZT09ImNoYXJhY3RlckRhdGEiJiZzLm9sZFZhbHVlLmxlbmd0aD5zLnRhcmdldC5ub2RlVmFsdWUubGVuZ3RoKT90aGlzLmZsdXNoU29vbigpOmtlJiZlLmNvbXBvc2luZyYmci5zb21lKHM9PnMudHlwZT09ImNoaWxkTGlzdCImJnMudGFyZ2V0Lm5vZGVOYW1lPT0iVFIiKT8oZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMCx0aGlzLmZsdXNoU29vbigpKTp0aGlzLmZsdXNoKCl9KSxBbSYmKHRoaXMub25DaGFyRGF0YT1yPT57dGhpcy5xdWV1ZS5wdXNoKHt0YXJnZXQ6ci50YXJnZXQsdHlwZToiY2hhcmFjdGVyRGF0YSIsb2xkVmFsdWU6ci5wcmV2VmFsdWV9KSx0aGlzLmZsdXNoU29vbigpfSksdGhpcy5vblNlbGVjdGlvbkNoYW5nZT10aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyl9Zmx1c2hTb29uKCl7dGhpcy5mbHVzaGluZ1Nvb248MCYmKHRoaXMuZmx1c2hpbmdTb29uPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy5mbHVzaGluZ1Nvb249LTEsdGhpcy5mbHVzaCgpfSwyMCkpfWZvcmNlRmx1c2goKXt0aGlzLmZsdXNoaW5nU29vbj4tMSYmKHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5mbHVzaGluZ1Nvb24pLHRoaXMuZmx1c2hpbmdTb29uPS0xLHRoaXMuZmx1c2goKSl9c3RhcnQoKXt0aGlzLm9ic2VydmVyJiYodGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpZXcuZG9tLEVtKSksdGhpcy5vbkNoYXJEYXRhJiZ0aGlzLnZpZXcuZG9tLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsdGhpcy5vbkNoYXJEYXRhKSx0aGlzLmNvbm5lY3RTZWxlY3Rpb24oKX1zdG9wKCl7aWYodGhpcy5vYnNlcnZlcil7bGV0IGU9dGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpO2lmKGUubGVuZ3RoKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnF1ZXVlLnB1c2goZVt0XSk7d2luZG93LnNldFRpbWVvdXQoKCk9PnRoaXMuZmx1c2goKSwyMCl9dGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCl9dGhpcy5vbkNoYXJEYXRhJiZ0aGlzLnZpZXcuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsdGhpcy5vbkNoYXJEYXRhKSx0aGlzLmRpc2Nvbm5lY3RTZWxlY3Rpb24oKX1jb25uZWN0U2VsZWN0aW9uKCl7dGhpcy52aWV3LmRvbS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsdGhpcy5vblNlbGVjdGlvbkNoYW5nZSl9ZGlzY29ubmVjdFNlbGVjdGlvbigpe3RoaXMudmlldy5kb20ub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHRoaXMub25TZWxlY3Rpb25DaGFuZ2UpfXN1cHByZXNzU2VsZWN0aW9uVXBkYXRlcygpe3RoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzPSEwLHNldFRpbWVvdXQoKCk9PnRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzPSExLDUwKX1vblNlbGVjdGlvbkNoYW5nZSgpe2lmKFFsKHRoaXMudmlldykpe2lmKHRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzKXJldHVybiBsdCh0aGlzLnZpZXcpO2lmKE1lJiZTdDw9MTEmJiF0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLmVtcHR5KXtsZXQgZT10aGlzLnZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZihlLmZvY3VzTm9kZSYmVXQoZS5mb2N1c05vZGUsZS5mb2N1c09mZnNldCxlLmFuY2hvck5vZGUsZS5hbmNob3JPZmZzZXQpKXJldHVybiB0aGlzLmZsdXNoU29vbigpfXRoaXMuZmx1c2goKX19c2V0Q3VyU2VsZWN0aW9uKCl7dGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldCh0aGlzLnZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKSl9aWdub3JlU2VsZWN0aW9uQ2hhbmdlKGUpe2lmKCFlLmZvY3VzTm9kZSlyZXR1cm4hMDtsZXQgdD1uZXcgU2V0LHI7Zm9yKGxldCBpPWUuZm9jdXNOb2RlO2k7aT11bihpKSl0LmFkZChpKTtmb3IobGV0IGk9ZS5hbmNob3JOb2RlO2k7aT11bihpKSlpZih0LmhhcyhpKSl7cj1pO2JyZWFrfWxldCBzPXImJnRoaXMudmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKHIpO2lmKHMmJnMuaWdub3JlTXV0YXRpb24oe3R5cGU6InNlbGVjdGlvbiIsdGFyZ2V0OnIubm9kZVR5cGU9PTM/ci5wYXJlbnROb2RlOnJ9KSlyZXR1cm4gdGhpcy5zZXRDdXJTZWxlY3Rpb24oKSwhMH1wZW5kaW5nUmVjb3Jkcygpe2lmKHRoaXMub2JzZXJ2ZXIpZm9yKGxldCBlIG9mIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSl0aGlzLnF1ZXVlLnB1c2goZSk7cmV0dXJuIHRoaXMucXVldWV9Zmx1c2goKXtsZXR7dmlldzplfT10aGlzO2lmKCFlLmRvY1ZpZXd8fHRoaXMuZmx1c2hpbmdTb29uPi0xKXJldHVybjtsZXQgdD10aGlzLnBlbmRpbmdSZWNvcmRzKCk7dC5sZW5ndGgmJih0aGlzLnF1ZXVlPVtdKTtsZXQgcj1lLmRvbVNlbGVjdGlvblJhbmdlKCkscz0hdGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXMmJiF0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZXEocikmJlFsKGUpJiYhdGhpcy5pZ25vcmVTZWxlY3Rpb25DaGFuZ2UociksaT0tMSxvPS0xLGw9ITEsYT1bXTtpZihlLmVkaXRhYmxlKWZvcihsZXQgdT0wO3U8dC5sZW5ndGg7dSsrKXtsZXQgZD10aGlzLnJlZ2lzdGVyTXV0YXRpb24odFt1XSxhKTtkJiYoaT1pPDA/ZC5mcm9tOk1hdGgubWluKGQuZnJvbSxpKSxvPW88MD9kLnRvOk1hdGgubWF4KGQudG8sbyksZC50eXBlT3ZlciYmKGw9ITApKX1pZihhLnNvbWUodT0+dS5ub2RlTmFtZT09IkJSIikmJihlLmlucHV0Lmxhc3RLZXlDb2RlPT04fHxlLmlucHV0Lmxhc3RLZXlDb2RlPT00Nikpe2ZvcihsZXQgdSBvZiBhKWlmKHUubm9kZU5hbWU9PSJCUiImJnUucGFyZW50Tm9kZSl7bGV0IGQ9dS5uZXh0U2libGluZztmb3IoO2QmJmQubm9kZVR5cGU9PTE7KXtpZihkLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIil7dS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHUpO2JyZWFrfWQ9ZC5maXJzdENoaWxkfX19ZWxzZSBpZihQZSYmYS5sZW5ndGgpe2xldCB1PWEuZmlsdGVyKGQ9PmQubm9kZU5hbWU9PSJCUiIpO2lmKHUubGVuZ3RoPT0yKXtsZXRbZCxoXT11O2QucGFyZW50Tm9kZSYmZC5wYXJlbnROb2RlLnBhcmVudE5vZGU9PWgucGFyZW50Tm9kZT9oLnJlbW92ZSgpOmQucmVtb3ZlKCl9ZWxzZXtsZXR7Zm9jdXNOb2RlOmR9PXRoaXMuY3VycmVudFNlbGVjdGlvbjtmb3IobGV0IGggb2YgdSl7bGV0IGY9aC5wYXJlbnROb2RlO2YmJmYubm9kZU5hbWU9PSJMSSImJighZHx8RG0oZSxkKSE9ZikmJmgucmVtb3ZlKCl9fX1sZXQgYz1udWxsO2k8MCYmcyYmZS5pbnB1dC5sYXN0Rm9jdXM+RGF0ZS5ub3coKS0yMDAmJk1hdGgubWF4KGUuaW5wdXQubGFzdFRvdWNoLGUuaW5wdXQubGFzdENsaWNrLnRpbWUpPERhdGUubm93KCktMzAwJiZMcyhyKSYmKGM9dm8oZSkpJiZjLmVxKEkubmVhcihlLnN0YXRlLmRvYy5yZXNvbHZlKDApLDEpKT8oZS5pbnB1dC5sYXN0Rm9jdXM9MCxsdChlKSx0aGlzLmN1cnJlbnRTZWxlY3Rpb24uc2V0KHIpLGUuc2Nyb2xsVG9TZWxlY3Rpb24oKSk6KGk+LTF8fHMpJiYoaT4tMSYmKGUuZG9jVmlldy5tYXJrRGlydHkoaSxvKSxSbShlKSksZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbiYmKGUuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb249ITEsTG0oZSxhKSksdGhpcy5oYW5kbGVET01DaGFuZ2UoaSxvLGwsYSksZS5kb2NWaWV3JiZlLmRvY1ZpZXcuZGlydHk/ZS51cGRhdGVTdGF0ZShlLnN0YXRlKTp0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZXEocil8fGx0KGUpLHRoaXMuY3VycmVudFNlbGVjdGlvbi5zZXQocikpfXJlZ2lzdGVyTXV0YXRpb24oZSx0KXtpZih0LmluZGV4T2YoZS50YXJnZXQpPi0xKXJldHVybiBudWxsO2xldCByPXRoaXMudmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKGUudGFyZ2V0KTtpZihlLnR5cGU9PSJhdHRyaWJ1dGVzIiYmKHI9PXRoaXMudmlldy5kb2NWaWV3fHxlLmF0dHJpYnV0ZU5hbWU9PSJjb250ZW50ZWRpdGFibGUifHxlLmF0dHJpYnV0ZU5hbWU9PSJzdHlsZSImJiFlLm9sZFZhbHVlJiYhZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKXx8IXJ8fHIuaWdub3JlTXV0YXRpb24oZSkpcmV0dXJuIG51bGw7aWYoZS50eXBlPT0iY2hpbGRMaXN0Iil7Zm9yKGxldCB1PTA7dTxlLmFkZGVkTm9kZXMubGVuZ3RoO3UrKyl7bGV0IGQ9ZS5hZGRlZE5vZGVzW3VdO3QucHVzaChkKSxkLm5vZGVUeXBlPT0zJiYodGhpcy5sYXN0Q2hhbmdlZFRleHROb2RlPWQpfWlmKHIuY29udGVudERPTSYmci5jb250ZW50RE9NIT1yLmRvbSYmIXIuY29udGVudERPTS5jb250YWlucyhlLnRhcmdldCkpcmV0dXJue2Zyb206ci5wb3NCZWZvcmUsdG86ci5wb3NBZnRlcn07bGV0IHM9ZS5wcmV2aW91c1NpYmxpbmcsaT1lLm5leHRTaWJsaW5nO2lmKE1lJiZTdDw9MTEmJmUuYWRkZWROb2Rlcy5sZW5ndGgpZm9yKGxldCB1PTA7dTxlLmFkZGVkTm9kZXMubGVuZ3RoO3UrKyl7bGV0e3ByZXZpb3VzU2libGluZzpkLG5leHRTaWJsaW5nOmh9PWUuYWRkZWROb2Rlc1t1XTsoIWR8fEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS5hZGRlZE5vZGVzLGQpPDApJiYocz1kKSwoIWh8fEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS5hZGRlZE5vZGVzLGgpPDApJiYoaT1oKX1sZXQgbz1zJiZzLnBhcmVudE5vZGU9PWUudGFyZ2V0P2ZlKHMpKzE6MCxsPXIubG9jYWxQb3NGcm9tRE9NKGUudGFyZ2V0LG8sLTEpLGE9aSYmaS5wYXJlbnROb2RlPT1lLnRhcmdldD9mZShpKTplLnRhcmdldC5jaGlsZE5vZGVzLmxlbmd0aCxjPXIubG9jYWxQb3NGcm9tRE9NKGUudGFyZ2V0LGEsMSk7cmV0dXJue2Zyb206bCx0bzpjfX1lbHNlIHJldHVybiBlLnR5cGU9PSJhdHRyaWJ1dGVzIj97ZnJvbTpyLnBvc0F0U3RhcnQtci5ib3JkZXIsdG86ci5wb3NBdEVuZCtyLmJvcmRlcn06KHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1lLnRhcmdldCx7ZnJvbTpyLnBvc0F0U3RhcnQsdG86ci5wb3NBdEVuZCx0eXBlT3ZlcjplLnRhcmdldC5ub2RlVmFsdWU9PWUub2xkVmFsdWV9KX19bGV0IGlhPW5ldyBXZWFrTWFwLG9hPSExO2Z1bmN0aW9uIFJtKG4pe2lmKCFpYS5oYXMobikmJihpYS5zZXQobixudWxsKSxbIm5vcm1hbCIsIm5vd3JhcCIsInByZS1saW5lIl0uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKG4uZG9tKS53aGl0ZVNwYWNlKSE9PS0xKSl7aWYobi5yZXF1aXJlc0dlY2tvSGFja05vZGU9UGUsb2EpcmV0dXJuO29hPSEwfX1mdW5jdGlvbiBsYShuLGUpe2xldCB0PWUuc3RhcnRDb250YWluZXIscj1lLnN0YXJ0T2Zmc2V0LHM9ZS5lbmRDb250YWluZXIsaT1lLmVuZE9mZnNldCxvPW4uZG9tQXRQb3Mobi5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yKTtyZXR1cm4gVXQoby5ub2RlLG8ub2Zmc2V0LHMsaSkmJihbdCxyLHMsaV09W3MsaSx0LHJdKSx7YW5jaG9yTm9kZTp0LGFuY2hvck9mZnNldDpyLGZvY3VzTm9kZTpzLGZvY3VzT2Zmc2V0Oml9fWZ1bmN0aW9uIEltKG4sZSl7aWYoZS5nZXRDb21wb3NlZFJhbmdlcyl7bGV0IHM9ZS5nZXRDb21wb3NlZFJhbmdlcyhuLnJvb3QpWzBdO2lmKHMpcmV0dXJuIGxhKG4scyl9bGV0IHQ7ZnVuY3Rpb24gcihzKXtzLnByZXZlbnREZWZhdWx0KCkscy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0PXMuZ2V0VGFyZ2V0UmFuZ2VzKClbMF19cmV0dXJuIG4uZG9tLmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IixyLCEwKSxkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5kZW50Iiksbi5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLHIsITApLHQ/bGEobix0KTpudWxsfWZ1bmN0aW9uIERtKG4sZSl7Zm9yKGxldCB0PWUucGFyZW50Tm9kZTt0JiZ0IT1uLmRvbTt0PXQucGFyZW50Tm9kZSl7bGV0IHI9bi5kb2NWaWV3Lm5lYXJlc3REZXNjKHQsITApO2lmKHImJnIubm9kZS5pc0Jsb2NrKXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIExtKG4sZSl7dmFyIHQ7bGV0e2ZvY3VzTm9kZTpyLGZvY3VzT2Zmc2V0OnN9PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtmb3IobGV0IGkgb2YgZSlpZigoKHQ9aS5wYXJlbnROb2RlKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQubm9kZU5hbWUpPT0iVFIiKXtsZXQgbz1pLm5leHRTaWJsaW5nO2Zvcig7byYmby5ub2RlTmFtZSE9IlREIiYmby5ub2RlTmFtZSE9IlRIIjspbz1vLm5leHRTaWJsaW5nO2lmKG8pe2xldCBsPW87Zm9yKDs7KXtsZXQgYT1sLmZpcnN0Q2hpbGQ7aWYoIWF8fGEubm9kZVR5cGUhPTF8fGEuY29udGVudEVkaXRhYmxlPT0iZmFsc2UifHwvXihCUnxJTUcpJC8udGVzdChhLm5vZGVOYW1lKSlicmVhaztsPWF9bC5pbnNlcnRCZWZvcmUoaSxsLmZpcnN0Q2hpbGQpLHI9PWkmJm4uZG9tU2VsZWN0aW9uKCkuY29sbGFwc2UoaSxzKX1lbHNlIGkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKX19ZnVuY3Rpb24gUG0obixlLHQpe2xldHtub2RlOnIsZnJvbU9mZnNldDpzLHRvT2Zmc2V0OmksZnJvbTpvLHRvOmx9PW4uZG9jVmlldy5wYXJzZVJhbmdlKGUsdCksYT1uLmRvbVNlbGVjdGlvblJhbmdlKCksYyx1PWEuYW5jaG9yTm9kZTtpZih1JiZuLmRvbS5jb250YWlucyh1Lm5vZGVUeXBlPT0xP3U6dS5wYXJlbnROb2RlKSYmKGM9W3tub2RlOnUsb2Zmc2V0OmEuYW5jaG9yT2Zmc2V0fV0sTHMoYSl8fGMucHVzaCh7bm9kZTphLmZvY3VzTm9kZSxvZmZzZXQ6YS5mb2N1c09mZnNldH0pKSxtZSYmbi5pbnB1dC5sYXN0S2V5Q29kZT09PTgpZm9yKGxldCBnPWk7Zz5zO2ctLSl7bGV0IHk9ci5jaGlsZE5vZGVzW2ctMV0saz15LnBtVmlld0Rlc2M7aWYoeS5ub2RlTmFtZT09IkJSIiYmIWspe2k9ZzticmVha31pZigha3x8ay5zaXplKWJyZWFrfWxldCBkPW4uc3RhdGUuZG9jLGg9bi5zb21lUHJvcCgiZG9tUGFyc2VyIil8fGl0LmZyb21TY2hlbWEobi5zdGF0ZS5zY2hlbWEpLGY9ZC5yZXNvbHZlKG8pLHA9bnVsbCxtPWgucGFyc2Uocix7dG9wTm9kZTpmLnBhcmVudCx0b3BNYXRjaDpmLnBhcmVudC5jb250ZW50TWF0Y2hBdChmLmluZGV4KCkpLHRvcE9wZW46ITAsZnJvbTpzLHRvOmkscHJlc2VydmVXaGl0ZXNwYWNlOmYucGFyZW50LnR5cGUud2hpdGVzcGFjZT09InByZSI/ImZ1bGwiOiEwLGZpbmRQb3NpdGlvbnM6YyxydWxlRnJvbU5vZGU6em0sY29udGV4dDpmfSk7aWYoYyYmY1swXS5wb3MhPW51bGwpe2xldCBnPWNbMF0ucG9zLHk9Y1sxXSYmY1sxXS5wb3M7eT09bnVsbCYmKHk9ZykscD17YW5jaG9yOmcrbyxoZWFkOnkrb319cmV0dXJue2RvYzptLHNlbDpwLGZyb206byx0bzpsfX1mdW5jdGlvbiB6bShuKXtsZXQgZT1uLnBtVmlld0Rlc2M7aWYoZSlyZXR1cm4gZS5wYXJzZVJ1bGUoKTtpZihuLm5vZGVOYW1lPT0iQlIiJiZuLnBhcmVudE5vZGUpe2lmKGtlJiYvXih1bHxvbCkkL2kudGVzdChuLnBhcmVudE5vZGUubm9kZU5hbWUpKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpKSx7c2tpcDp0fX1lbHNlIGlmKG4ucGFyZW50Tm9kZS5sYXN0Q2hpbGQ9PW58fGtlJiYvXih0cnx0YWJsZSkkL2kudGVzdChuLnBhcmVudE5vZGUubm9kZU5hbWUpKXJldHVybntpZ25vcmU6ITB9fWVsc2UgaWYobi5ub2RlTmFtZT09IklNRyImJm4uZ2V0QXR0cmlidXRlKCJtYXJrLXBsYWNlaG9sZGVyIikpcmV0dXJue2lnbm9yZTohMH07cmV0dXJuIG51bGx9Y29uc3QgJG09L14oYXxhYmJyfGFjcm9ueW18YnxiZFtpb118YmlnfGJyfGJ1dHRvbnxjaXRlfGNvZGV8ZGF0YShsaXN0KT98ZGVsfGRmbnxlbXxpfGltZ3xpbnN8a2JkfGxhYmVsfG1hcHxtYXJrfG1ldGVyfG91dHB1dHxxfHJ1Ynl8c3xzYW1wfHNtYWxsfHNwYW58c3Ryb25nfHN1W2JwXXx0aW1lfHV8dHR8dmFyKSQvaTtmdW5jdGlvbiBCbShuLGUsdCxyLHMpe2xldCBpPW4uaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlc3x8KG4uY29tcG9zaW5nP24uaW5wdXQuY29tcG9zaXRpb25JRDowKTtpZihuLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCxlPDApe2xldCBDPW4uaW5wdXQubGFzdFNlbGVjdGlvblRpbWU+RGF0ZS5ub3coKS01MD9uLmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW46bnVsbCxNPXZvKG4sQyk7aWYoTSYmIW4uc3RhdGUuc2VsZWN0aW9uLmVxKE0pKXtpZihtZSYmcnQmJm4uaW5wdXQubGFzdEtleUNvZGU9PT0xMyYmRGF0ZS5ub3coKS0xMDA8bi5pbnB1dC5sYXN0S2V5Q29kZVRpbWUmJm4uc29tZVByb3AoImhhbmRsZUtleURvd24iLE89Pk8obixSdCgxMywiRW50ZXIiKSkpKXJldHVybjtsZXQgUj1uLnN0YXRlLnRyLnNldFNlbGVjdGlvbihNKTtDPT0icG9pbnRlciI/Ui5zZXRNZXRhKCJwb2ludGVyIiwhMCk6Qz09ImtleSImJlIuc2Nyb2xsSW50b1ZpZXcoKSxpJiZSLnNldE1ldGEoImNvbXBvc2l0aW9uIixpKSxuLmRpc3BhdGNoKFIpfXJldHVybn1sZXQgbz1uLnN0YXRlLmRvYy5yZXNvbHZlKGUpLGw9by5zaGFyZWREZXB0aCh0KTtlPW8uYmVmb3JlKGwrMSksdD1uLnN0YXRlLmRvYy5yZXNvbHZlKHQpLmFmdGVyKGwrMSk7bGV0IGE9bi5zdGF0ZS5zZWxlY3Rpb24sYz1QbShuLGUsdCksdT1uLnN0YXRlLmRvYyxkPXUuc2xpY2UoYy5mcm9tLGMudG8pLGgsZjtuLmlucHV0Lmxhc3RLZXlDb2RlPT09OCYmRGF0ZS5ub3coKS0xMDA8bi5pbnB1dC5sYXN0S2V5Q29kZVRpbWU/KGg9bi5zdGF0ZS5zZWxlY3Rpb24udG8sZj0iZW5kIik6KGg9bi5zdGF0ZS5zZWxlY3Rpb24uZnJvbSxmPSJzdGFydCIpLG4uaW5wdXQubGFzdEtleUNvZGU9bnVsbDtsZXQgcD1GbShkLmNvbnRlbnQsYy5kb2MuY29udGVudCxjLmZyb20saCxmKTtpZihwJiZuLmlucHV0LmRvbUNoYW5nZUNvdW50KyssKGRuJiZuLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNXx8cnQpJiZzLnNvbWUoQz0+Qy5ub2RlVHlwZT09MSYmISRtLnRlc3QoQy5ub2RlTmFtZSkpJiYoIXB8fHAuZW5kQT49cC5lbmRCKSYmbi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsQz0+QyhuLFJ0KDEzLCJFbnRlciIpKSkpe24uaW5wdXQubGFzdElPU0VudGVyPTA7cmV0dXJufWlmKCFwKWlmKHImJmEgaW5zdGFuY2VvZiBEJiYhYS5lbXB0eSYmYS4kaGVhZC5zYW1lUGFyZW50KGEuJGFuY2hvcikmJiFuLmNvbXBvc2luZyYmIShjLnNlbCYmYy5zZWwuYW5jaG9yIT1jLnNlbC5oZWFkKSlwPXtzdGFydDphLmZyb20sZW5kQTphLnRvLGVuZEI6YS50b307ZWxzZXtpZihjLnNlbCl7bGV0IEM9YWEobixuLnN0YXRlLmRvYyxjLnNlbCk7aWYoQyYmIUMuZXEobi5zdGF0ZS5zZWxlY3Rpb24pKXtsZXQgTT1uLnN0YXRlLnRyLnNldFNlbGVjdGlvbihDKTtpJiZNLnNldE1ldGEoImNvbXBvc2l0aW9uIixpKSxuLmRpc3BhdGNoKE0pfX1yZXR1cm59bi5zdGF0ZS5zZWxlY3Rpb24uZnJvbTxuLnN0YXRlLnNlbGVjdGlvbi50byYmcC5zdGFydD09cC5lbmRCJiZuLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEQmJihwLnN0YXJ0Pm4uc3RhdGUuc2VsZWN0aW9uLmZyb20mJnAuc3RhcnQ8PW4uc3RhdGUuc2VsZWN0aW9uLmZyb20rMiYmbi5zdGF0ZS5zZWxlY3Rpb24uZnJvbT49Yy5mcm9tP3Auc3RhcnQ9bi5zdGF0ZS5zZWxlY3Rpb24uZnJvbTpwLmVuZEE8bi5zdGF0ZS5zZWxlY3Rpb24udG8mJnAuZW5kQT49bi5zdGF0ZS5zZWxlY3Rpb24udG8tMiYmbi5zdGF0ZS5zZWxlY3Rpb24udG88PWMudG8mJihwLmVuZEIrPW4uc3RhdGUuc2VsZWN0aW9uLnRvLXAuZW5kQSxwLmVuZEE9bi5zdGF0ZS5zZWxlY3Rpb24udG8pKSxNZSYmU3Q8PTExJiZwLmVuZEI9PXAuc3RhcnQrMSYmcC5lbmRBPT1wLnN0YXJ0JiZwLnN0YXJ0PmMuZnJvbSYmYy5kb2MudGV4dEJldHdlZW4ocC5zdGFydC1jLmZyb20tMSxwLnN0YXJ0LWMuZnJvbSsxKT09IiDCoCImJihwLnN0YXJ0LS0scC5lbmRBLS0scC5lbmRCLS0pO2xldCBtPWMuZG9jLnJlc29sdmVOb0NhY2hlKHAuc3RhcnQtYy5mcm9tKSxnPWMuZG9jLnJlc29sdmVOb0NhY2hlKHAuZW5kQi1jLmZyb20pLHk9dS5yZXNvbHZlKHAuc3RhcnQpLGs9bS5zYW1lUGFyZW50KGcpJiZtLnBhcmVudC5pbmxpbmVDb250ZW50JiZ5LmVuZCgpPj1wLmVuZEE7aWYoKGRuJiZuLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNSYmKCFrfHxzLnNvbWUoQz0+Qy5ub2RlTmFtZT09IkRJViJ8fEMubm9kZU5hbWU9PSJQIikpfHwhayYmbS5wb3M8Yy5kb2MuY29udGVudC5zaXplJiYoIW0uc2FtZVBhcmVudChnKXx8IW0ucGFyZW50LmlubGluZUNvbnRlbnQpJiZtLnBvczxnLnBvcyYmIS9cUy8udGVzdChjLmRvYy50ZXh0QmV0d2VlbihtLnBvcyxnLnBvcywiIiwiIikpKSYmbi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsQz0+QyhuLFJ0KDEzLCJFbnRlciIpKSkpe24uaW5wdXQubGFzdElPU0VudGVyPTA7cmV0dXJufWlmKG4uc3RhdGUuc2VsZWN0aW9uLmFuY2hvcj5wLnN0YXJ0JiZIbSh1LHAuc3RhcnQscC5lbmRBLG0sZykmJm4uc29tZVByb3AoImhhbmRsZUtleURvd24iLEM9PkMobixSdCg4LCJCYWNrc3BhY2UiKSkpKXtydCYmbWUmJm4uZG9tT2JzZXJ2ZXIuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCk7cmV0dXJufW1lJiZwLmVuZEI9PXAuc3RhcnQmJihuLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU9RGF0ZS5ub3coKSkscnQmJiFrJiZtLnN0YXJ0KCkhPWcuc3RhcnQoKSYmZy5wYXJlbnRPZmZzZXQ9PTAmJm0uZGVwdGg9PWcuZGVwdGgmJmMuc2VsJiZjLnNlbC5hbmNob3I9PWMuc2VsLmhlYWQmJmMuc2VsLmhlYWQ9PXAuZW5kQSYmKHAuZW5kQi09MixnPWMuZG9jLnJlc29sdmVOb0NhY2hlKHAuZW5kQi1jLmZyb20pLHNldFRpbWVvdXQoKCk9PntuLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixmdW5jdGlvbihDKXtyZXR1cm4gQyhuLFJ0KDEzLCJFbnRlciIpKX0pfSwyMCkpO2xldCBiPXAuc3RhcnQsdz1wLmVuZEEseD1DPT57bGV0IE09Q3x8bi5zdGF0ZS50ci5yZXBsYWNlKGIsdyxjLmRvYy5zbGljZShwLnN0YXJ0LWMuZnJvbSxwLmVuZEItYy5mcm9tKSk7aWYoYy5zZWwpe2xldCBSPWFhKG4sTS5kb2MsYy5zZWwpO1ImJiEobWUmJm4uY29tcG9zaW5nJiZSLmVtcHR5JiYocC5zdGFydCE9cC5lbmRCfHxuLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU8RGF0ZS5ub3coKS0xMDApJiYoUi5oZWFkPT1ifHxSLmhlYWQ9PU0ubWFwcGluZy5tYXAodyktMSl8fE1lJiZSLmVtcHR5JiZSLmhlYWQ9PWIpJiZNLnNldFNlbGVjdGlvbihSKX1yZXR1cm4gaSYmTS5zZXRNZXRhKCJjb21wb3NpdGlvbiIsaSksTS5zY3JvbGxJbnRvVmlldygpfSx2O2lmKGspaWYobS5wb3M9PWcucG9zKXtNZSYmU3Q8PTExJiZtLnBhcmVudE9mZnNldD09MCYmKG4uZG9tT2JzZXJ2ZXIuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCksc2V0VGltZW91dCgoKT0+bHQobiksMjApKTtsZXQgQz14KG4uc3RhdGUudHIuZGVsZXRlKGIsdykpLE09dS5yZXNvbHZlKHAuc3RhcnQpLm1hcmtzQWNyb3NzKHUucmVzb2x2ZShwLmVuZEEpKTtNJiZDLmVuc3VyZU1hcmtzKE0pLG4uZGlzcGF0Y2goQyl9ZWxzZSBpZihwLmVuZEE9PXAuZW5kQiYmKHY9X20obS5wYXJlbnQuY29udGVudC5jdXQobS5wYXJlbnRPZmZzZXQsZy5wYXJlbnRPZmZzZXQpLHkucGFyZW50LmNvbnRlbnQuY3V0KHkucGFyZW50T2Zmc2V0LHAuZW5kQS15LnN0YXJ0KCkpKSkpe2xldCBDPXgobi5zdGF0ZS50cik7di50eXBlPT0iYWRkIj9DLmFkZE1hcmsoYix3LHYubWFyayk6Qy5yZW1vdmVNYXJrKGIsdyx2Lm1hcmspLG4uZGlzcGF0Y2goQyl9ZWxzZSBpZihtLnBhcmVudC5jaGlsZChtLmluZGV4KCkpLmlzVGV4dCYmbS5pbmRleCgpPT1nLmluZGV4KCktKGcudGV4dE9mZnNldD8wOjEpKXtsZXQgQz1tLnBhcmVudC50ZXh0QmV0d2VlbihtLnBhcmVudE9mZnNldCxnLnBhcmVudE9mZnNldCksTT0oKT0+eChuLnN0YXRlLnRyLmluc2VydFRleHQoQyxiLHcpKTtuLnNvbWVQcm9wKCJoYW5kbGVUZXh0SW5wdXQiLFI9PlIobixiLHcsQyxNKSl8fG4uZGlzcGF0Y2goTSgpKX1lbHNlIG4uZGlzcGF0Y2goeCgpKTtlbHNlIG4uZGlzcGF0Y2goeCgpKX1mdW5jdGlvbiBhYShuLGUsdCl7cmV0dXJuIE1hdGgubWF4KHQuYW5jaG9yLHQuaGVhZCk+ZS5jb250ZW50LnNpemU/bnVsbDpTbyhuLGUucmVzb2x2ZSh0LmFuY2hvciksZS5yZXNvbHZlKHQuaGVhZCkpfWZ1bmN0aW9uIF9tKG4sZSl7bGV0IHQ9bi5maXJzdENoaWxkLm1hcmtzLHI9ZS5maXJzdENoaWxkLm1hcmtzLHM9dCxpPXIsbyxsLGE7Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspcz1yW3VdLnJlbW92ZUZyb21TZXQocyk7Zm9yKGxldCB1PTA7dTx0Lmxlbmd0aDt1KyspaT10W3VdLnJlbW92ZUZyb21TZXQoaSk7aWYocy5sZW5ndGg9PTEmJmkubGVuZ3RoPT0wKWw9c1swXSxvPSJhZGQiLGE9dT0+dS5tYXJrKGwuYWRkVG9TZXQodS5tYXJrcykpO2Vsc2UgaWYocy5sZW5ndGg9PTAmJmkubGVuZ3RoPT0xKWw9aVswXSxvPSJyZW1vdmUiLGE9dT0+dS5tYXJrKGwucmVtb3ZlRnJvbVNldCh1Lm1hcmtzKSk7ZWxzZSByZXR1cm4gbnVsbDtsZXQgYz1bXTtmb3IobGV0IHU9MDt1PGUuY2hpbGRDb3VudDt1KyspYy5wdXNoKGEoZS5jaGlsZCh1KSkpO2lmKFMuZnJvbShjKS5lcShuKSlyZXR1cm57bWFyazpsLHR5cGU6b319ZnVuY3Rpb24gSG0obixlLHQscixzKXtpZih0LWU8PXMucG9zLXIucG9zfHx1aShyLCEwLCExKTxzLnBvcylyZXR1cm4hMTtsZXQgaT1uLnJlc29sdmUoZSk7aWYoIXIucGFyZW50LmlzVGV4dGJsb2NrKXtsZXQgbD1pLm5vZGVBZnRlcjtyZXR1cm4gbCE9bnVsbCYmdD09ZStsLm5vZGVTaXplfWlmKGkucGFyZW50T2Zmc2V0PGkucGFyZW50LmNvbnRlbnQuc2l6ZXx8IWkucGFyZW50LmlzVGV4dGJsb2NrKXJldHVybiExO2xldCBvPW4ucmVzb2x2ZSh1aShpLCEwLCEwKSk7cmV0dXJuIW8ucGFyZW50LmlzVGV4dGJsb2NrfHxvLnBvcz50fHx1aShvLCEwLCExKTx0PyExOnIucGFyZW50LmNvbnRlbnQuY3V0KHIucGFyZW50T2Zmc2V0KS5lcShvLnBhcmVudC5jb250ZW50KX1mdW5jdGlvbiB1aShuLGUsdCl7bGV0IHI9bi5kZXB0aCxzPWU/bi5lbmQoKTpuLnBvcztmb3IoO3I+MCYmKGV8fG4uaW5kZXhBZnRlcihyKT09bi5ub2RlKHIpLmNoaWxkQ291bnQpOylyLS0scysrLGU9ITE7aWYodCl7bGV0IGk9bi5ub2RlKHIpLm1heWJlQ2hpbGQobi5pbmRleEFmdGVyKHIpKTtmb3IoO2kmJiFpLmlzTGVhZjspaT1pLmZpcnN0Q2hpbGQscysrfXJldHVybiBzfWZ1bmN0aW9uIEZtKG4sZSx0LHIscyl7bGV0IGk9bi5maW5kRGlmZlN0YXJ0KGUsdCk7aWYoaT09bnVsbClyZXR1cm4gbnVsbDtsZXR7YTpvLGI6bH09bi5maW5kRGlmZkVuZChlLHQrbi5zaXplLHQrZS5zaXplKTtpZihzPT0iZW5kIil7bGV0IGE9TWF0aC5tYXgoMCxpLU1hdGgubWluKG8sbCkpO3ItPW8rYS1pfWlmKG88aSYmbi5zaXplPGUuc2l6ZSl7bGV0IGE9cjw9aSYmcj49bz9pLXI6MDtpLT1hLGkmJmk8ZS5zaXplJiZjYShlLnRleHRCZXR3ZWVuKGktMSxpKzEpKSYmKGkrPWE/MTotMSksbD1pKyhsLW8pLG89aX1lbHNlIGlmKGw8aSl7bGV0IGE9cjw9aSYmcj49bD9pLXI6MDtpLT1hLGkmJmk8bi5zaXplJiZjYShuLnRleHRCZXR3ZWVuKGktMSxpKzEpKSYmKGkrPWE/MTotMSksbz1pKyhvLWwpLGw9aX1yZXR1cm57c3RhcnQ6aSxlbmRBOm8sZW5kQjpsfX1mdW5jdGlvbiBjYShuKXtpZihuLmxlbmd0aCE9MilyZXR1cm4hMTtsZXQgZT1uLmNoYXJDb2RlQXQoMCksdD1uLmNoYXJDb2RlQXQoMSk7cmV0dXJuIGU+PTU2MzIwJiZlPD01NzM0MyYmdD49NTUyOTYmJnQ8PTU2MzE5fWNsYXNzIFd1e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnRyYWNrV3JpdGVzPW51bGwsdGhpcy5tb3VudGVkPSExLHRoaXMubWFya0N1cnNvcj1udWxsLHRoaXMuY3Vyc29yV3JhcHBlcj1udWxsLHRoaXMubGFzdFNlbGVjdGVkVmlld0Rlc2M9dm9pZCAwLHRoaXMuaW5wdXQ9bmV3IHJtLHRoaXMucHJldkRpcmVjdFBsdWdpbnM9W10sdGhpcy5wbHVnaW5WaWV3cz1bXSx0aGlzLnJlcXVpcmVzR2Vja29IYWNrTm9kZT0hMSx0aGlzLmRyYWdnaW5nPW51bGwsdGhpcy5fcHJvcHM9dCx0aGlzLnN0YXRlPXQuc3RhdGUsdGhpcy5kaXJlY3RQbHVnaW5zPXQucGx1Z2luc3x8W10sdGhpcy5kaXJlY3RQbHVnaW5zLmZvckVhY2gocGEpLHRoaXMuZGlzcGF0Y2g9dGhpcy5kaXNwYXRjaC5iaW5kKHRoaXMpLHRoaXMuZG9tPWUmJmUubW91bnR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUmJihlLmFwcGVuZENoaWxkP2UuYXBwZW5kQ2hpbGQodGhpcy5kb20pOnR5cGVvZiBlPT0iZnVuY3Rpb24iP2UodGhpcy5kb20pOmUubW91bnQmJih0aGlzLm1vdW50ZWQ9ITApKSx0aGlzLmVkaXRhYmxlPWhhKHRoaXMpLGRhKHRoaXMpLHRoaXMubm9kZVZpZXdzPWZhKHRoaXMpLHRoaXMuZG9jVmlldz1qbCh0aGlzLnN0YXRlLmRvYyx1YSh0aGlzKSxjaSh0aGlzKSx0aGlzLmRvbSx0aGlzKSx0aGlzLmRvbU9ic2VydmVyPW5ldyBObSh0aGlzLChyLHMsaSxvKT0+Qm0odGhpcyxyLHMsaSxvKSksdGhpcy5kb21PYnNlcnZlci5zdGFydCgpLHNtKHRoaXMpLHRoaXMudXBkYXRlUGx1Z2luVmlld3MoKX1nZXQgY29tcG9zaW5nKCl7cmV0dXJuIHRoaXMuaW5wdXQuY29tcG9zaW5nfWdldCBwcm9wcygpe2lmKHRoaXMuX3Byb3BzLnN0YXRlIT10aGlzLnN0YXRlKXtsZXQgZT10aGlzLl9wcm9wczt0aGlzLl9wcm9wcz17fTtmb3IobGV0IHQgaW4gZSl0aGlzLl9wcm9wc1t0XT1lW3RdO3RoaXMuX3Byb3BzLnN0YXRlPXRoaXMuc3RhdGV9cmV0dXJuIHRoaXMuX3Byb3BzfXVwZGF0ZShlKXtlLmhhbmRsZURPTUV2ZW50cyE9dGhpcy5fcHJvcHMuaGFuZGxlRE9NRXZlbnRzJiZVaSh0aGlzKTtsZXQgdD10aGlzLl9wcm9wczt0aGlzLl9wcm9wcz1lLGUucGx1Z2lucyYmKGUucGx1Z2lucy5mb3JFYWNoKHBhKSx0aGlzLmRpcmVjdFBsdWdpbnM9ZS5wbHVnaW5zKSx0aGlzLnVwZGF0ZVN0YXRlSW5uZXIoZS5zdGF0ZSx0KX1zZXRQcm9wcyhlKXtsZXQgdD17fTtmb3IobGV0IHIgaW4gdGhpcy5fcHJvcHMpdFtyXT10aGlzLl9wcm9wc1tyXTt0LnN0YXRlPXRoaXMuc3RhdGU7Zm9yKGxldCByIGluIGUpdFtyXT1lW3JdO3RoaXMudXBkYXRlKHQpfXVwZGF0ZVN0YXRlKGUpe3RoaXMudXBkYXRlU3RhdGVJbm5lcihlLHRoaXMuX3Byb3BzKX11cGRhdGVTdGF0ZUlubmVyKGUsdCl7dmFyIHI7bGV0IHM9dGhpcy5zdGF0ZSxpPSExLG89ITE7ZS5zdG9yZWRNYXJrcyYmdGhpcy5jb21wb3NpbmcmJihfdSh0aGlzKSxvPSEwKSx0aGlzLnN0YXRlPWU7bGV0IGw9cy5wbHVnaW5zIT1lLnBsdWdpbnN8fHRoaXMuX3Byb3BzLnBsdWdpbnMhPXQucGx1Z2lucztpZihsfHx0aGlzLl9wcm9wcy5wbHVnaW5zIT10LnBsdWdpbnN8fHRoaXMuX3Byb3BzLm5vZGVWaWV3cyE9dC5ub2RlVmlld3Mpe2xldCBmPWZhKHRoaXMpO1VtKGYsdGhpcy5ub2RlVmlld3MpJiYodGhpcy5ub2RlVmlld3M9ZixpPSEwKX0obHx8dC5oYW5kbGVET01FdmVudHMhPXRoaXMuX3Byb3BzLmhhbmRsZURPTUV2ZW50cykmJlVpKHRoaXMpLHRoaXMuZWRpdGFibGU9aGEodGhpcyksZGEodGhpcyk7bGV0IGE9Y2kodGhpcyksYz11YSh0aGlzKSx1PXMucGx1Z2lucyE9ZS5wbHVnaW5zJiYhcy5kb2MuZXEoZS5kb2MpPyJyZXNldCI6ZS5zY3JvbGxUb1NlbGVjdGlvbj5zLnNjcm9sbFRvU2VsZWN0aW9uPyJ0byBzZWxlY3Rpb24iOiJwcmVzZXJ2ZSIsZD1pfHwhdGhpcy5kb2NWaWV3Lm1hdGNoZXNOb2RlKGUuZG9jLGMsYSk7KGR8fCFlLnNlbGVjdGlvbi5lcShzLnNlbGVjdGlvbikpJiYobz0hMCk7bGV0IGg9dT09InByZXNlcnZlIiYmbyYmdGhpcy5kb20uc3R5bGUub3ZlcmZsb3dBbmNob3I9PW51bGwmJmtwKHRoaXMpO2lmKG8pe3RoaXMuZG9tT2JzZXJ2ZXIuc3RvcCgpO2xldCBmPWQmJihNZXx8bWUpJiYhdGhpcy5jb21wb3NpbmcmJiFzLnNlbGVjdGlvbi5lbXB0eSYmIWUuc2VsZWN0aW9uLmVtcHR5JiZWbShzLnNlbGVjdGlvbixlLnNlbGVjdGlvbik7aWYoZCl7bGV0IHA9bWU/dGhpcy50cmFja1dyaXRlcz10aGlzLmRvbVNlbGVjdGlvblJhbmdlKCkuZm9jdXNOb2RlOm51bGw7dGhpcy5jb21wb3NpbmcmJih0aGlzLmlucHV0LmNvbXBvc2l0aW9uTm9kZT1rbSh0aGlzKSksKGl8fCF0aGlzLmRvY1ZpZXcudXBkYXRlKGUuZG9jLGMsYSx0aGlzKSkmJih0aGlzLmRvY1ZpZXcudXBkYXRlT3V0ZXJEZWNvKGMpLHRoaXMuZG9jVmlldy5kZXN0cm95KCksdGhpcy5kb2NWaWV3PWpsKGUuZG9jLGMsYSx0aGlzLmRvbSx0aGlzKSkscCYmKCF0aGlzLnRyYWNrV3JpdGVzfHwhdGhpcy5kb20uY29udGFpbnModGhpcy50cmFja1dyaXRlcykpJiYoZj0hMCl9Znx8ISh0aGlzLmlucHV0Lm1vdXNlRG93biYmdGhpcy5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmVxKHRoaXMuZG9tU2VsZWN0aW9uUmFuZ2UoKSkmJlZwKHRoaXMpKT9sdCh0aGlzLGYpOihFdSh0aGlzLGUuc2VsZWN0aW9uKSx0aGlzLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpKSx0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCl9dGhpcy51cGRhdGVQbHVnaW5WaWV3cyhzKSwhKChyPXRoaXMuZHJhZ2dpbmcpPT09bnVsbHx8cj09PXZvaWQgMCkmJnIubm9kZSYmIXMuZG9jLmVxKGUuZG9jKSYmdGhpcy51cGRhdGVEcmFnZ2VkTm9kZSh0aGlzLmRyYWdnaW5nLHMpLHU9PSJyZXNldCI/dGhpcy5kb20uc2Nyb2xsVG9wPTA6dT09InRvIHNlbGVjdGlvbiI/dGhpcy5zY3JvbGxUb1NlbGVjdGlvbigpOmgmJmJwKGgpfXNjcm9sbFRvU2VsZWN0aW9uKCl7bGV0IGU9dGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpLmZvY3VzTm9kZTtpZighKCFlfHwhdGhpcy5kb20uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSkpKXtpZighdGhpcy5zb21lUHJvcCgiaGFuZGxlU2Nyb2xsVG9TZWxlY3Rpb24iLHQ9PnQodGhpcykpKWlmKHRoaXMuc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTil7bGV0IHQ9dGhpcy5kb2NWaWV3LmRvbUFmdGVyUG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZyb20pO3Qubm9kZVR5cGU9PTEmJkJsKHRoaXMsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlKX1lbHNlIEJsKHRoaXMsdGhpcy5jb29yZHNBdFBvcyh0aGlzLnN0YXRlLnNlbGVjdGlvbi5oZWFkLDEpLGUpfX1kZXN0cm95UGx1Z2luVmlld3MoKXtsZXQgZTtmb3IoO2U9dGhpcy5wbHVnaW5WaWV3cy5wb3AoKTspZS5kZXN0cm95JiZlLmRlc3Ryb3koKX11cGRhdGVQbHVnaW5WaWV3cyhlKXtpZighZXx8ZS5wbHVnaW5zIT10aGlzLnN0YXRlLnBsdWdpbnN8fHRoaXMuZGlyZWN0UGx1Z2lucyE9dGhpcy5wcmV2RGlyZWN0UGx1Z2lucyl7dGhpcy5wcmV2RGlyZWN0UGx1Z2lucz10aGlzLmRpcmVjdFBsdWdpbnMsdGhpcy5kZXN0cm95UGx1Z2luVmlld3MoKTtmb3IobGV0IHQ9MDt0PHRoaXMuZGlyZWN0UGx1Z2lucy5sZW5ndGg7dCsrKXtsZXQgcj10aGlzLmRpcmVjdFBsdWdpbnNbdF07ci5zcGVjLnZpZXcmJnRoaXMucGx1Z2luVmlld3MucHVzaChyLnNwZWMudmlldyh0aGlzKSl9Zm9yKGxldCB0PTA7dDx0aGlzLnN0YXRlLnBsdWdpbnMubGVuZ3RoO3QrKyl7bGV0IHI9dGhpcy5zdGF0ZS5wbHVnaW5zW3RdO3Iuc3BlYy52aWV3JiZ0aGlzLnBsdWdpblZpZXdzLnB1c2goci5zcGVjLnZpZXcodGhpcykpfX1lbHNlIGZvcihsZXQgdD0wO3Q8dGhpcy5wbHVnaW5WaWV3cy5sZW5ndGg7dCsrKXtsZXQgcj10aGlzLnBsdWdpblZpZXdzW3RdO3IudXBkYXRlJiZyLnVwZGF0ZSh0aGlzLGUpfX11cGRhdGVEcmFnZ2VkTm9kZShlLHQpe2xldCByPWUubm9kZSxzPS0xO2lmKHIuZnJvbTx0aGlzLnN0YXRlLmRvYy5jb250ZW50LnNpemUmJnRoaXMuc3RhdGUuZG9jLm5vZGVBdChyLmZyb20pPT1yLm5vZGUpcz1yLmZyb207ZWxzZXtsZXQgaT1yLmZyb20rKHRoaXMuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZS10LmRvYy5jb250ZW50LnNpemUpOyhpPjAmJmk8dGhpcy5zdGF0ZS5kb2MuY29udGVudC5zaXplJiZ0aGlzLnN0YXRlLmRvYy5ub2RlQXQoaSkpPT1yLm5vZGUmJihzPWkpfXRoaXMuZHJhZ2dpbmc9bmV3IEZ1KGUuc2xpY2UsZS5tb3ZlLHM8MD92b2lkIDA6Ti5jcmVhdGUodGhpcy5zdGF0ZS5kb2MscykpfXNvbWVQcm9wKGUsdCl7bGV0IHI9dGhpcy5fcHJvcHMmJnRoaXMuX3Byb3BzW2VdLHM7aWYociE9bnVsbCYmKHM9dD90KHIpOnIpKXJldHVybiBzO2ZvcihsZXQgbz0wO288dGhpcy5kaXJlY3RQbHVnaW5zLmxlbmd0aDtvKyspe2xldCBsPXRoaXMuZGlyZWN0UGx1Z2luc1tvXS5wcm9wc1tlXTtpZihsIT1udWxsJiYocz10P3QobCk6bCkpcmV0dXJuIHN9bGV0IGk9dGhpcy5zdGF0ZS5wbHVnaW5zO2lmKGkpZm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2xldCBsPWlbb10ucHJvcHNbZV07aWYobCE9bnVsbCYmKHM9dD90KGwpOmwpKXJldHVybiBzfX1oYXNGb2N1cygpe2lmKE1lKXtsZXQgZT10aGlzLnJvb3QuYWN0aXZlRWxlbWVudDtpZihlPT10aGlzLmRvbSlyZXR1cm4hMDtpZighZXx8IXRoaXMuZG9tLmNvbnRhaW5zKGUpKXJldHVybiExO2Zvcig7ZSYmdGhpcy5kb20hPWUmJnRoaXMuZG9tLmNvbnRhaW5zKGUpOyl7aWYoZS5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpcmV0dXJuITE7ZT1lLnBhcmVudEVsZW1lbnR9cmV0dXJuITB9cmV0dXJuIHRoaXMucm9vdC5hY3RpdmVFbGVtZW50PT10aGlzLmRvbX1mb2N1cygpe3RoaXMuZG9tT2JzZXJ2ZXIuc3RvcCgpLHRoaXMuZWRpdGFibGUmJnhwKHRoaXMuZG9tKSxsdCh0aGlzKSx0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCl9Z2V0IHJvb3QoKXtsZXQgZT10aGlzLl9yb290O2lmKGU9PW51bGwpe2ZvcihsZXQgdD10aGlzLmRvbS5wYXJlbnROb2RlO3Q7dD10LnBhcmVudE5vZGUpaWYodC5ub2RlVHlwZT09OXx8dC5ub2RlVHlwZT09MTEmJnQuaG9zdClyZXR1cm4gdC5nZXRTZWxlY3Rpb258fChPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkuZ2V0U2VsZWN0aW9uPSgpPT50Lm93bmVyRG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkpLHRoaXMuX3Jvb3Q9dH1yZXR1cm4gZXx8ZG9jdW1lbnR9dXBkYXRlUm9vdCgpe3RoaXMuX3Jvb3Q9bnVsbH1wb3NBdENvb3JkcyhlKXtyZXR1cm4gVHAodGhpcyxlKX1jb29yZHNBdFBvcyhlLHQ9MSl7cmV0dXJuIGJ1KHRoaXMsZSx0KX1kb21BdFBvcyhlLHQ9MCl7cmV0dXJuIHRoaXMuZG9jVmlldy5kb21Gcm9tUG9zKGUsdCl9bm9kZURPTShlKXtsZXQgdD10aGlzLmRvY1ZpZXcuZGVzY0F0KGUpO3JldHVybiB0P3Qubm9kZURPTTpudWxsfXBvc0F0RE9NKGUsdCxyPS0xKXtsZXQgcz10aGlzLmRvY1ZpZXcucG9zRnJvbURPTShlLHQscik7aWYocz09bnVsbCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRE9NIHBvc2l0aW9uIG5vdCBpbnNpZGUgdGhlIGVkaXRvciIpO3JldHVybiBzfWVuZE9mVGV4dGJsb2NrKGUsdCl7cmV0dXJuIE5wKHRoaXMsdHx8dGhpcy5zdGF0ZSxlKX1wYXN0ZUhUTUwoZSx0KXtyZXR1cm4gWG4odGhpcywiIixlLCExLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9cGFzdGVUZXh0KGUsdCl7cmV0dXJuIFhuKHRoaXMsZSxudWxsLCEwLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUpe3JldHVybiBDbyh0aGlzLGUpfWRlc3Ryb3koKXt0aGlzLmRvY1ZpZXcmJihpbSh0aGlzKSx0aGlzLmRlc3Ryb3lQbHVnaW5WaWV3cygpLHRoaXMubW91bnRlZD8odGhpcy5kb2NWaWV3LnVwZGF0ZSh0aGlzLnN0YXRlLmRvYyxbXSxjaSh0aGlzKSx0aGlzKSx0aGlzLmRvbS50ZXh0Q29udGVudD0iIik6dGhpcy5kb20ucGFyZW50Tm9kZSYmdGhpcy5kb20ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbSksdGhpcy5kb2NWaWV3LmRlc3Ryb3koKSx0aGlzLmRvY1ZpZXc9bnVsbCxhcCgpKX1nZXQgaXNEZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5kb2NWaWV3PT1udWxsfWRpc3BhdGNoRXZlbnQoZSl7cmV0dXJuIGxtKHRoaXMsZSl9ZG9tU2VsZWN0aW9uUmFuZ2UoKXtsZXQgZT10aGlzLmRvbVNlbGVjdGlvbigpO3JldHVybiBlP2tlJiZ0aGlzLnJvb3Qubm9kZVR5cGU9PT0xMSYmZnAodGhpcy5kb20ub3duZXJEb2N1bWVudCk9PXRoaXMuZG9tJiZJbSh0aGlzLGUpfHxlOntmb2N1c05vZGU6bnVsbCxmb2N1c09mZnNldDowLGFuY2hvck5vZGU6bnVsbCxhbmNob3JPZmZzZXQ6MH19ZG9tU2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdC5nZXRTZWxlY3Rpb24oKX19V3UucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKG4pe2xldCBlPXRoaXMuX3Byb3BzLmRpc3BhdGNoVHJhbnNhY3Rpb247ZT9lLmNhbGwodGhpcyxuKTp0aGlzLnVwZGF0ZVN0YXRlKHRoaXMuc3RhdGUuYXBwbHkobikpfTtmdW5jdGlvbiB1YShuKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlLmNsYXNzPSJQcm9zZU1pcnJvciIsZS5jb250ZW50ZWRpdGFibGU9U3RyaW5nKG4uZWRpdGFibGUpLG4uc29tZVByb3AoImF0dHJpYnV0ZXMiLHQ9PntpZih0eXBlb2YgdD09ImZ1bmN0aW9uIiYmKHQ9dChuLnN0YXRlKSksdClmb3IobGV0IHIgaW4gdClyPT0iY2xhc3MiP2UuY2xhc3MrPSIgIit0W3JdOnI9PSJzdHlsZSI/ZS5zdHlsZT0oZS5zdHlsZT9lLnN0eWxlKyI7IjoiIikrdFtyXTohZVtyXSYmciE9ImNvbnRlbnRlZGl0YWJsZSImJnIhPSJub2RlTmFtZSImJihlW3JdPVN0cmluZyh0W3JdKSl9KSxlLnRyYW5zbGF0ZXx8KGUudHJhbnNsYXRlPSJubyIpLFt5ZS5ub2RlKDAsbi5zdGF0ZS5kb2MuY29udGVudC5zaXplLGUpXX1mdW5jdGlvbiBkYShuKXtpZihuLm1hcmtDdXJzb3Ipe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO2UuY2xhc3NOYW1lPSJQcm9zZU1pcnJvci1zZXBhcmF0b3IiLGUuc2V0QXR0cmlidXRlKCJtYXJrLXBsYWNlaG9sZGVyIiwidHJ1ZSIpLGUuc2V0QXR0cmlidXRlKCJhbHQiLCIiKSxuLmN1cnNvcldyYXBwZXI9e2RvbTplLGRlY286eWUud2lkZ2V0KG4uc3RhdGUuc2VsZWN0aW9uLmZyb20sZSx7cmF3OiEwLG1hcmtzOm4ubWFya0N1cnNvcn0pfX1lbHNlIG4uY3Vyc29yV3JhcHBlcj1udWxsfWZ1bmN0aW9uIGhhKG4pe3JldHVybiFuLnNvbWVQcm9wKCJlZGl0YWJsZSIsZT0+ZShuLnN0YXRlKT09PSExKX1mdW5jdGlvbiBWbShuLGUpe2xldCB0PU1hdGgubWluKG4uJGFuY2hvci5zaGFyZWREZXB0aChuLmhlYWQpLGUuJGFuY2hvci5zaGFyZWREZXB0aChlLmhlYWQpKTtyZXR1cm4gbi4kYW5jaG9yLnN0YXJ0KHQpIT1lLiRhbmNob3Iuc3RhcnQodCl9ZnVuY3Rpb24gZmEobil7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiB0KHIpe2ZvcihsZXQgcyBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHMpfHwoZVtzXT1yW3NdKX1yZXR1cm4gbi5zb21lUHJvcCgibm9kZVZpZXdzIix0KSxuLnNvbWVQcm9wKCJtYXJrVmlld3MiLHQpLGV9ZnVuY3Rpb24gVW0obixlKXtsZXQgdD0wLHI9MDtmb3IobGV0IHMgaW4gbil7aWYobltzXSE9ZVtzXSlyZXR1cm4hMDt0Kyt9Zm9yKGxldCBzIGluIGUpcisrO3JldHVybiB0IT1yfWZ1bmN0aW9uIHBhKG4pe2lmKG4uc3BlYy5zdGF0ZXx8bi5zcGVjLmZpbHRlclRyYW5zYWN0aW9ufHxuLnNwZWMuYXBwZW5kVHJhbnNhY3Rpb24pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlBsdWdpbnMgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSB2aWV3IG11c3Qgbm90IGhhdmUgYSBzdGF0ZSBjb21wb25lbnQiKX12YXIgTXQ9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMDoiRW50ZXIiLDEyOiJOdW1Mb2NrIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDQ6IlByaW50U2NyZWVuIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiw1OToiOyIsNjE6Ij0iLDkxOiJNZXRhIiw5MjoiTWV0YSIsMTA2OiIqIiwxMDc6IisiLDEwODoiLCIsMTA5OiItIiwxMTA6Ii4iLDExMToiLyIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDE2MDoiU2hpZnQiLDE2MToiU2hpZnQiLDE2MjoiQ29udHJvbCIsMTYzOiJDb250cm9sIiwxNjQ6IkFsdCIsMTY1OiJBbHQiLDE3MzoiLSIsMTg2OiI7IiwxODc6Ij0iLDE4ODoiLCIsMTg5OiItIiwxOTA6Ii4iLDE5MToiLyIsMTkyOiJgIiwyMTk6IlsiLDIyMDoiXFwiLDIyMToiXSIsMjIyOiInIn0sS3I9ezQ4OiIpIiw0OToiISIsNTA6IkAiLDUxOiIjIiw1MjoiJCIsNTM6IiUiLDU0OiJeIiw1NToiJiIsNTY6IioiLDU3OiIoIiw1OToiOiIsNjE6IisiLDE3MzoiXyIsMTg2OiI6IiwxODc6IisiLDE4ODoiPCIsMTg5OiJfIiwxOTA6Ij4iLDE5MToiPyIsMTkyOiJ+IiwyMTk6InsiLDIyMDoifCIsMjIxOiJ9IiwyMjI6JyInfSxqbT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pLHFtPXR5cGVvZiBuYXZpZ2F0b3I8InUiJiYvTVNJRSBcZHxUcmlkZW50XC8oPzpbNy05XXxcZHsyLH0pXC4uKnJ2OihcZCspLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpO2Zvcih2YXIgcGU9MDtwZTwxMDtwZSsrKU10WzQ4K3BlXT1NdFs5NitwZV09U3RyaW5nKHBlKTtmb3IodmFyIHBlPTE7cGU8PTI0O3BlKyspTXRbcGUrMTExXT0iRiIrcGU7Zm9yKHZhciBwZT02NTtwZTw9OTA7cGUrKylNdFtwZV09U3RyaW5nLmZyb21DaGFyQ29kZShwZSszMiksS3JbcGVdPVN0cmluZy5mcm9tQ2hhckNvZGUocGUpO2Zvcih2YXIgZGkgaW4gTXQpS3IuaGFzT3duUHJvcGVydHkoZGkpfHwoS3JbZGldPU10W2RpXSk7ZnVuY3Rpb24gV20obil7dmFyIGU9am0mJm4ubWV0YUtleSYmbi5zaGlmdEtleSYmIW4uY3RybEtleSYmIW4uYWx0S2V5fHxxbSYmbi5zaGlmdEtleSYmbi5rZXkmJm4ua2V5Lmxlbmd0aD09MXx8bi5rZXk9PSJVbmlkZW50aWZpZWQiLHQ9IWUmJm4ua2V5fHwobi5zaGlmdEtleT9LcjpNdClbbi5rZXlDb2RlXXx8bi5rZXl8fCJVbmlkZW50aWZpZWQiO3JldHVybiB0PT0iRXNjIiYmKHQ9IkVzY2FwZSIpLHQ9PSJEZWwiJiYodD0iRGVsZXRlIiksdD09IkxlZnQiJiYodD0iQXJyb3dMZWZ0IiksdD09IlVwIiYmKHQ9IkFycm93VXAiKSx0PT0iUmlnaHQiJiYodD0iQXJyb3dSaWdodCIpLHQ9PSJEb3duIiYmKHQ9IkFycm93RG93biIpLHR9Y29uc3QgS209dHlwZW9mIG5hdmlnYXRvcjwidSImJi9NYWN8aVAoaG9uZXxbb2FdZCkvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSxKbT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL1dpbi8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO2Z1bmN0aW9uIEdtKG4pe2xldCBlPW4uc3BsaXQoLy0oPyEkKS8pLHQ9ZVtlLmxlbmd0aC0xXTt0PT0iU3BhY2UiJiYodD0iICIpO2xldCByLHMsaSxvO2ZvcihsZXQgbD0wO2w8ZS5sZW5ndGgtMTtsKyspe2xldCBhPWVbbF07aWYoL14oY21kfG1ldGF8bSkkL2kudGVzdChhKSlvPSEwO2Vsc2UgaWYoL15hKGx0KT8kL2kudGVzdChhKSlyPSEwO2Vsc2UgaWYoL14oY3xjdHJsfGNvbnRyb2wpJC9pLnRlc3QoYSkpcz0hMDtlbHNlIGlmKC9ecyhoaWZ0KT8kL2kudGVzdChhKSlpPSEwO2Vsc2UgaWYoL15tb2QkL2kudGVzdChhKSlLbT9vPSEwOnM9ITA7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAiK2EpfXJldHVybiByJiYodD0iQWx0LSIrdCkscyYmKHQ9IkN0cmwtIit0KSxvJiYodD0iTWV0YS0iK3QpLGkmJih0PSJTaGlmdC0iK3QpLHR9ZnVuY3Rpb24gUW0obil7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gbillW0dtKHQpXT1uW3RdO3JldHVybiBlfWZ1bmN0aW9uIGhpKG4sZSx0PSEwKXtyZXR1cm4gZS5hbHRLZXkmJihuPSJBbHQtIituKSxlLmN0cmxLZXkmJihuPSJDdHJsLSIrbiksZS5tZXRhS2V5JiYobj0iTWV0YS0iK24pLHQmJmUuc2hpZnRLZXkmJihuPSJTaGlmdC0iK24pLG59ZnVuY3Rpb24gWG0obil7cmV0dXJuIG5ldyBHKHtwcm9wczp7aGFuZGxlS2V5RG93bjpObyhuKX19KX1mdW5jdGlvbiBObyhuKXtsZXQgZT1RbShuKTtyZXR1cm4gZnVuY3Rpb24odCxyKXtsZXQgcz1XbShyKSxpLG89ZVtoaShzLHIpXTtpZihvJiZvKHQuc3RhdGUsdC5kaXNwYXRjaCx0KSlyZXR1cm4hMDtpZihzLmxlbmd0aD09MSYmcyE9IiAiKXtpZihyLnNoaWZ0S2V5KXtsZXQgbD1lW2hpKHMsciwhMSldO2lmKGwmJmwodC5zdGF0ZSx0LmRpc3BhdGNoLHQpKXJldHVybiEwfWlmKChyLmFsdEtleXx8ci5tZXRhS2V5fHxyLmN0cmxLZXkpJiYhKEptJiZyLmN0cmxLZXkmJnIuYWx0S2V5KSYmKGk9TXRbci5rZXlDb2RlXSkmJmkhPXMpe2xldCBsPWVbaGkoaSxyKV07aWYobCYmbCh0LnN0YXRlLHQuZGlzcGF0Y2gsdCkpcmV0dXJuITB9fXJldHVybiExfX12YXIgWW09T2JqZWN0LmRlZmluZVByb3BlcnR5LFJvPShuLGUpPT57Zm9yKHZhciB0IGluIGUpWW0obix0LHtnZXQ6ZVt0XSxlbnVtZXJhYmxlOiEwfSl9O2Z1bmN0aW9uICRzKG4pe2NvbnN0e3N0YXRlOmUsdHJhbnNhY3Rpb246dH09bjtsZXR7c2VsZWN0aW9uOnJ9PXQse2RvYzpzfT10LHtzdG9yZWRNYXJrczppfT10O3JldHVybnsuLi5lLGFwcGx5OmUuYXBwbHkuYmluZChlKSxhcHBseVRyYW5zYWN0aW9uOmUuYXBwbHlUcmFuc2FjdGlvbi5iaW5kKGUpLHBsdWdpbnM6ZS5wbHVnaW5zLHNjaGVtYTplLnNjaGVtYSxyZWNvbmZpZ3VyZTplLnJlY29uZmlndXJlLmJpbmQoZSksdG9KU09OOmUudG9KU09OLmJpbmQoZSksZ2V0IHN0b3JlZE1hcmtzKCl7cmV0dXJuIGl9LGdldCBzZWxlY3Rpb24oKXtyZXR1cm4gcn0sZ2V0IGRvYygpe3JldHVybiBzfSxnZXQgdHIoKXtyZXR1cm4gcj10LnNlbGVjdGlvbixzPXQuZG9jLGk9dC5zdG9yZWRNYXJrcyx0fX19dmFyIEJzPWNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuZWRpdG9yPW4uZWRpdG9yLHRoaXMucmF3Q29tbWFuZHM9dGhpcy5lZGl0b3IuZXh0ZW5zaW9uTWFuYWdlci5jb21tYW5kcyx0aGlzLmN1c3RvbVN0YXRlPW4uc3RhdGV9Z2V0IGhhc0N1c3RvbVN0YXRlKCl7cmV0dXJuISF0aGlzLmN1c3RvbVN0YXRlfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmN1c3RvbVN0YXRlfHx0aGlzLmVkaXRvci5zdGF0ZX1nZXQgY29tbWFuZHMoKXtjb25zdHtyYXdDb21tYW5kczpuLGVkaXRvcjplLHN0YXRlOnR9PXRoaXMse3ZpZXc6cn09ZSx7dHI6c309dCxpPXRoaXMuYnVpbGRQcm9wcyhzKTtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLm1hcCgoW28sbF0pPT5bbywoLi4uYyk9Pntjb25zdCB1PWwoLi4uYykoaSk7cmV0dXJuIXMuZ2V0TWV0YSgicHJldmVudERpc3BhdGNoIikmJiF0aGlzLmhhc0N1c3RvbVN0YXRlJiZyLmRpc3BhdGNoKHMpLHV9XSkpfWdldCBjaGFpbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNoYWluKCl9Z2V0IGNhbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNhbigpfWNyZWF0ZUNoYWluKG4sZT0hMCl7Y29uc3R7cmF3Q29tbWFuZHM6dCxlZGl0b3I6cixzdGF0ZTpzfT10aGlzLHt2aWV3Oml9PXIsbz1bXSxsPSEhbixhPW58fHMudHIsYz0oKT0+KCFsJiZlJiYhYS5nZXRNZXRhKCJwcmV2ZW50RGlzcGF0Y2giKSYmIXRoaXMuaGFzQ3VzdG9tU3RhdGUmJmkuZGlzcGF0Y2goYSksby5ldmVyeShkPT5kPT09ITApKSx1PXsuLi5PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKChbZCxoXSk9PltkLCguLi5wKT0+e2NvbnN0IG09dGhpcy5idWlsZFByb3BzKGEsZSksZz1oKC4uLnApKG0pO3JldHVybiBvLnB1c2goZyksdX1dKSkscnVuOmN9O3JldHVybiB1fWNyZWF0ZUNhbihuKXtjb25zdHtyYXdDb21tYW5kczplLHN0YXRlOnR9PXRoaXMscj0hMSxzPW58fHQudHIsaT10aGlzLmJ1aWxkUHJvcHMocyxyKTtyZXR1cm57Li4uT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLm1hcCgoW2wsYV0pPT5bbCwoLi4uYyk9PmEoLi4uYykoey4uLmksZGlzcGF0Y2g6dm9pZCAwfSldKSksY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4ocyxyKX19YnVpbGRQcm9wcyhuLGU9ITApe2NvbnN0e3Jhd0NvbW1hbmRzOnQsZWRpdG9yOnIsc3RhdGU6c309dGhpcyx7dmlldzppfT1yLG89e3RyOm4sZWRpdG9yOnIsdmlldzppLHN0YXRlOiRzKHtzdGF0ZTpzLHRyYW5zYWN0aW9uOm59KSxkaXNwYXRjaDplPygpPT57fTp2b2lkIDAsY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4obixlKSxjYW46KCk9PnRoaXMuY3JlYXRlQ2FuKG4pLGdldCBjb21tYW5kcygpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKChbbCxhXSk9PltsLCguLi5jKT0+YSguLi5jKShvKV0pKX19O3JldHVybiBvfX0sJGU9e307Um8oJGUse2JsdXI6KCk9PlptLGNsZWFyQ29udGVudDooKT0+ZWcsY2xlYXJOb2RlczooKT0+dGcsY29tbWFuZDooKT0+bmcsY3JlYXRlUGFyYWdyYXBoTmVhcjooKT0+cmcsY3V0OigpPT5zZyxkZWxldGVDdXJyZW50Tm9kZTooKT0+aWcsZGVsZXRlTm9kZTooKT0+b2csZGVsZXRlUmFuZ2U6KCk9PmxnLGRlbGV0ZVNlbGVjdGlvbjooKT0+YWcsZW50ZXI6KCk9PmNnLGV4aXRDb2RlOigpPT51ZyxleHRlbmRNYXJrUmFuZ2U6KCk9PmRnLGZpcnN0OigpPT5oZyxmb2N1czooKT0+cGcsZm9yRWFjaDooKT0+bWcsaW5zZXJ0Q29udGVudDooKT0+Z2csaW5zZXJ0Q29udGVudEF0OigpPT5iZyxqb2luQmFja3dhcmQ6KCk9PnZnLGpvaW5Eb3duOigpPT53Zyxqb2luRm9yd2FyZDooKT0+U2csam9pbkl0ZW1CYWNrd2FyZDooKT0+Q2csam9pbkl0ZW1Gb3J3YXJkOigpPT5UZyxqb2luVGV4dGJsb2NrQmFja3dhcmQ6KCk9Pk1nLGpvaW5UZXh0YmxvY2tGb3J3YXJkOigpPT5FZyxqb2luVXA6KCk9PnhnLGtleWJvYXJkU2hvcnRjdXQ6KCk9Pk9nLGxpZnQ6KCk9Pk5nLGxpZnRFbXB0eUJsb2NrOigpPT5SZyxsaWZ0TGlzdEl0ZW06KCk9PklnLG5ld2xpbmVJbkNvZGU6KCk9PkRnLHJlc2V0QXR0cmlidXRlczooKT0+TGcsc2Nyb2xsSW50b1ZpZXc6KCk9PlBnLHNlbGVjdEFsbDooKT0+emcsc2VsZWN0Tm9kZUJhY2t3YXJkOigpPT4kZyxzZWxlY3ROb2RlRm9yd2FyZDooKT0+Qmcsc2VsZWN0UGFyZW50Tm9kZTooKT0+X2csc2VsZWN0VGV4dGJsb2NrRW5kOigpPT5IZyxzZWxlY3RUZXh0YmxvY2tTdGFydDooKT0+Rmcsc2V0Q29udGVudDooKT0+Vmcsc2V0TWFyazooKT0+Y3ksc2V0TWV0YTooKT0+dXksc2V0Tm9kZTooKT0+ZHksc2V0Tm9kZVNlbGVjdGlvbjooKT0+aHksc2V0VGV4dERpcmVjdGlvbjooKT0+Znksc2V0VGV4dFNlbGVjdGlvbjooKT0+cHksc2lua0xpc3RJdGVtOigpPT5teSxzcGxpdEJsb2NrOigpPT5neSxzcGxpdExpc3RJdGVtOigpPT55eSx0b2dnbGVMaXN0OigpPT5ieSx0b2dnbGVNYXJrOigpPT54eSx0b2dnbGVOb2RlOigpPT53eSx0b2dnbGVXcmFwOigpPT52eSx1bmRvSW5wdXRSdWxlOigpPT5TeSx1bnNldEFsbE1hcmtzOigpPT5DeSx1bnNldE1hcms6KCk9PlR5LHVuc2V0VGV4dERpcmVjdGlvbjooKT0+TXksdXBkYXRlQXR0cmlidXRlczooKT0+RXksd3JhcEluOigpPT5BeSx3cmFwSW5MaXN0OigpPT5PeX0pO3ZhciBabT0oKT0+KHtlZGl0b3I6bix2aWV3OmV9KT0+KHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciB0O24uaXNEZXN0cm95ZWR8fChlLmRvbS5ibHVyKCksKHQ9d2luZG93Py5nZXRTZWxlY3Rpb24oKSk9PW51bGx8fHQucmVtb3ZlQWxsUmFuZ2VzKCkpfSksITApLGVnPShuPSEwKT0+KHtjb21tYW5kczplfSk9PmUuc2V0Q29udGVudCgiIix7ZW1pdFVwZGF0ZTpufSksdGc9KCk9Pih7c3RhdGU6bix0cjplLGRpc3BhdGNoOnR9KT0+e2NvbnN0e3NlbGVjdGlvbjpyfT1lLHtyYW5nZXM6c309cjtyZXR1cm4gdCYmcy5mb3JFYWNoKCh7JGZyb206aSwkdG86b30pPT57bi5kb2Mubm9kZXNCZXR3ZWVuKGkucG9zLG8ucG9zLChsLGEpPT57aWYobC50eXBlLmlzVGV4dClyZXR1cm47Y29uc3R7ZG9jOmMsbWFwcGluZzp1fT1lLGQ9Yy5yZXNvbHZlKHUubWFwKGEpKSxoPWMucmVzb2x2ZSh1Lm1hcChhK2wubm9kZVNpemUpKSxmPWQuYmxvY2tSYW5nZShoKTtpZighZilyZXR1cm47Y29uc3QgcD1tbihmKTtpZihsLnR5cGUuaXNUZXh0YmxvY2spe2NvbnN0e2RlZmF1bHRUeXBlOm19PWQucGFyZW50LmNvbnRlbnRNYXRjaEF0KGQuaW5kZXgoKSk7ZS5zZXROb2RlTWFya3VwKGYuc3RhcnQsbSl9KHB8fHA9PT0wKSYmZS5saWZ0KGYscCl9KX0pLCEwfSxuZz1uPT5lPT5uKGUpLHJnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5hdShuLGUpLHNnPShuLGUpPT4oe2VkaXRvcjp0LHRyOnJ9KT0+e2NvbnN0e3N0YXRlOnN9PXQsaT1zLmRvYy5zbGljZShuLmZyb20sbi50byk7ci5kZWxldGVSYW5nZShuLmZyb20sbi50byk7Y29uc3Qgbz1yLm1hcHBpbmcubWFwKGUpO3JldHVybiByLmluc2VydChvLGkuY29udGVudCksci5zZXRTZWxlY3Rpb24obmV3IEQoci5kb2MucmVzb2x2ZShNYXRoLm1heChvLTEsMCkpKSksITB9LGlnPSgpPT4oe3RyOm4sZGlzcGF0Y2g6ZX0pPT57Y29uc3R7c2VsZWN0aW9uOnR9PW4scj10LiRhbmNob3Iubm9kZSgpO2lmKHIuY29udGVudC5zaXplPjApcmV0dXJuITE7Y29uc3Qgcz1uLnNlbGVjdGlvbi4kYW5jaG9yO2ZvcihsZXQgaT1zLmRlcHRoO2k+MDtpLT0xKWlmKHMubm9kZShpKS50eXBlPT09ci50eXBlKXtpZihlKXtjb25zdCBsPXMuYmVmb3JlKGkpLGE9cy5hZnRlcihpKTtuLmRlbGV0ZShsLGEpLnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9cmV0dXJuITF9O2Z1bmN0aW9uIGllKG4sZSl7aWYodHlwZW9mIG49PSJzdHJpbmciKXtpZighZS5ub2Rlc1tuXSl0aHJvdyBFcnJvcihgVGhlcmUgaXMgbm8gbm9kZSB0eXBlIG5hbWVkICcke259Jy4gTWF5YmUgeW91IGZvcmdvdCB0byBhZGQgdGhlIGV4dGVuc2lvbj9gKTtyZXR1cm4gZS5ub2Rlc1tuXX1yZXR1cm4gbn12YXIgb2c9bj0+KHt0cjplLHN0YXRlOnQsZGlzcGF0Y2g6cn0pPT57Y29uc3Qgcz1pZShuLHQuc2NoZW1hKSxpPWUuc2VsZWN0aW9uLiRhbmNob3I7Zm9yKGxldCBvPWkuZGVwdGg7bz4wO28tPTEpaWYoaS5ub2RlKG8pLnR5cGU9PT1zKXtpZihyKXtjb25zdCBhPWkuYmVmb3JlKG8pLGM9aS5hZnRlcihvKTtlLmRlbGV0ZShhLGMpLnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9cmV0dXJuITF9LGxnPW49Pih7dHI6ZSxkaXNwYXRjaDp0fSk9Pntjb25zdHtmcm9tOnIsdG86c309bjtyZXR1cm4gdCYmZS5kZWxldGUocixzKSwhMH0sYWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PmdvKG4sZSksY2c9KCk9Pih7Y29tbWFuZHM6bn0pPT5uLmtleWJvYXJkU2hvcnRjdXQoIkVudGVyIiksdWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PktmKG4sZSk7ZnVuY3Rpb24gSW8obil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKT09PSJbb2JqZWN0IFJlZ0V4cF0ifWZ1bmN0aW9uIEpyKG4sZSx0PXtzdHJpY3Q6ITB9KXtjb25zdCByPU9iamVjdC5rZXlzKGUpO3JldHVybiByLmxlbmd0aD9yLmV2ZXJ5KHM9PnQuc3RyaWN0P2Vbc109PT1uW3NdOklvKGVbc10pP2Vbc10udGVzdChuW3NdKTplW3NdPT09bltzXSk6ITB9ZnVuY3Rpb24gS3UobixlLHQ9e30pe3JldHVybiBuLmZpbmQocj0+ci50eXBlPT09ZSYmSnIoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKHQpLm1hcChzPT5bcyxyLmF0dHJzW3NdXSkpLHQpKX1mdW5jdGlvbiBtYShuLGUsdD17fSl7cmV0dXJuISFLdShuLGUsdCl9ZnVuY3Rpb24gRG8obixlLHQpe2lmKCFufHwhZSlyZXR1cm47bGV0IHI9bi5wYXJlbnQuY2hpbGRBZnRlcihuLnBhcmVudE9mZnNldCk7aWYoKCFyLm5vZGV8fCFyLm5vZGUubWFya3Muc29tZShjPT5jLnR5cGU9PT1lKSkmJihyPW4ucGFyZW50LmNoaWxkQmVmb3JlKG4ucGFyZW50T2Zmc2V0KSksIXIubm9kZXx8IXIubm9kZS5tYXJrcy5zb21lKGM9PmMudHlwZT09PWUpKXJldHVybjtpZighdCl7Y29uc3QgYz1yLm5vZGUubWFya3MuZmluZCh1PT51LnR5cGU9PT1lKTtjJiYodD1jLmF0dHJzKX1pZighS3UoWy4uLnIubm9kZS5tYXJrc10sZSx0KSlyZXR1cm47bGV0IGk9ci5pbmRleCxvPW4uc3RhcnQoKStyLm9mZnNldCxsPWkrMSxhPW8rci5ub2RlLm5vZGVTaXplO2Zvcig7aT4wJiZtYShbLi4ubi5wYXJlbnQuY2hpbGQoaS0xKS5tYXJrc10sZSx0KTspaS09MSxvLT1uLnBhcmVudC5jaGlsZChpKS5ub2RlU2l6ZTtmb3IoO2w8bi5wYXJlbnQuY2hpbGRDb3VudCYmbWEoWy4uLm4ucGFyZW50LmNoaWxkKGwpLm1hcmtzXSxlLHQpOylhKz1uLnBhcmVudC5jaGlsZChsKS5ub2RlU2l6ZSxsKz0xO3JldHVybntmcm9tOm8sdG86YX19ZnVuY3Rpb24gYXQobixlKXtpZih0eXBlb2Ygbj09InN0cmluZyIpe2lmKCFlLm1hcmtzW25dKXRocm93IEVycm9yKGBUaGVyZSBpcyBubyBtYXJrIHR5cGUgbmFtZWQgJyR7bn0nLiBNYXliZSB5b3UgZm9yZ290IHRvIGFkZCB0aGUgZXh0ZW5zaW9uP2ApO3JldHVybiBlLm1hcmtzW25dfXJldHVybiBufXZhciBkZz0obixlKT0+KHt0cjp0LHN0YXRlOnIsZGlzcGF0Y2g6c30pPT57Y29uc3QgaT1hdChuLHIuc2NoZW1hKSx7ZG9jOm8sc2VsZWN0aW9uOmx9PXQseyRmcm9tOmEsZnJvbTpjLHRvOnV9PWw7aWYocyl7Y29uc3QgZD1EbyhhLGksZSk7aWYoZCYmZC5mcm9tPD1jJiZkLnRvPj11KXtjb25zdCBoPUQuY3JlYXRlKG8sZC5mcm9tLGQudG8pO3Quc2V0U2VsZWN0aW9uKGgpfX1yZXR1cm4hMH0saGc9bj0+ZT0+e2NvbnN0IHQ9dHlwZW9mIG49PSJmdW5jdGlvbiI/bihlKTpuO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cis9MSlpZih0W3JdKGUpKXJldHVybiEwO3JldHVybiExfTtmdW5jdGlvbiBMbyhuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIER9ZnVuY3Rpb24gc3Qobj0wLGU9MCx0PTApe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChuLGUpLHQpfWZ1bmN0aW9uIEp1KG4sZT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PUkuYXRTdGFydChuKSxyPUkuYXRFbmQobik7aWYoZT09PSJzdGFydCJ8fGU9PT0hMClyZXR1cm4gdDtpZihlPT09ImVuZCIpcmV0dXJuIHI7Y29uc3Qgcz10LmZyb20saT1yLnRvO3JldHVybiBlPT09ImFsbCI/RC5jcmVhdGUobixzdCgwLHMsaSksc3Qobi5jb250ZW50LnNpemUscyxpKSk6RC5jcmVhdGUobixzdChlLHMsaSksc3QoZSxzLGkpKX1mdW5jdGlvbiBnYSgpe3JldHVybiBuYXZpZ2F0b3IucGxhdGZvcm09PT0iQW5kcm9pZCJ8fC9hbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX1mdW5jdGlvbiBHcigpe3JldHVyblsiaVBhZCBTaW11bGF0b3IiLCJpUGhvbmUgU2ltdWxhdG9yIiwiaVBvZCBTaW11bGF0b3IiLCJpUGFkIiwiaVBob25lIiwiaVBvZCJdLmluY2x1ZGVzKG5hdmlnYXRvci5wbGF0Zm9ybSl8fG5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoIk1hYyIpJiYib250b3VjaGVuZCJpbiBkb2N1bWVudH1mdW5jdGlvbiBmZygpe3JldHVybiB0eXBlb2YgbmF2aWdhdG9yPCJ1Ij8vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOiExfXZhciBwZz0obj1udWxsLGU9e30pPT4oe2VkaXRvcjp0LHZpZXc6cix0cjpzLGRpc3BhdGNoOml9KT0+e2U9e3Njcm9sbEludG9WaWV3OiEwLC4uLmV9O2NvbnN0IG89KCk9PnsoR3IoKXx8Z2EoKSkmJnIuZG9tLmZvY3VzKCksZmcoKSYmIUdyKCkmJiFnYSgpJiZyLmRvbS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3QuaXNEZXN0cm95ZWR8fChyLmZvY3VzKCksZT8uc2Nyb2xsSW50b1ZpZXcmJnQuY29tbWFuZHMuc2Nyb2xsSW50b1ZpZXcoKSl9KX07dHJ5e2lmKHIuaGFzRm9jdXMoKSYmbj09PW51bGx8fG49PT0hMSlyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX1pZihpJiZuPT09bnVsbCYmIUxvKHQuc3RhdGUuc2VsZWN0aW9uKSlyZXR1cm4gbygpLCEwO2NvbnN0IGw9SnUocy5kb2Msbil8fHQuc3RhdGUuc2VsZWN0aW9uLGE9dC5zdGF0ZS5zZWxlY3Rpb24uZXEobCk7cmV0dXJuIGkmJihhfHxzLnNldFNlbGVjdGlvbihsKSxhJiZzLnN0b3JlZE1hcmtzJiZzLnNldFN0b3JlZE1hcmtzKHMuc3RvcmVkTWFya3MpLG8oKSksITB9LG1nPShuLGUpPT50PT5uLmV2ZXJ5KChyLHMpPT5lKHIsey4uLnQsaW5kZXg6c30pKSxnZz0obixlKT0+KHt0cjp0LGNvbW1hbmRzOnJ9KT0+ci5pbnNlcnRDb250ZW50QXQoe2Zyb206dC5zZWxlY3Rpb24uZnJvbSx0bzp0LnNlbGVjdGlvbi50b30sbixlKSxHdT1uPT57Y29uc3QgZT1uLmNoaWxkTm9kZXM7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LT0xKXtjb25zdCByPWVbdF07ci5ub2RlVHlwZT09PTMmJnIubm9kZVZhbHVlJiYvXihcblxzXHN8XG4pJC8udGVzdChyLm5vZGVWYWx1ZSk/bi5yZW1vdmVDaGlsZChyKTpyLm5vZGVUeXBlPT09MSYmR3Uocil9cmV0dXJuIG59O2Z1bmN0aW9uIEVuKG4pe2lmKHR5cGVvZiB3aW5kb3c+InUiKXRocm93IG5ldyBFcnJvcigiW3RpcHRhcCBlcnJvcl06IHRoZXJlIGlzIG5vIHdpbmRvdyBvYmplY3QgYXZhaWxhYmxlLCBzbyB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIik7Y29uc3QgZT1gPGJvZHk+JHtufTwvYm9keT5gLHQ9bmV3IHdpbmRvdy5ET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoZSwidGV4dC9odG1sIikuYm9keTtyZXR1cm4gR3UodCl9ZnVuY3Rpb24gWm4obixlLHQpe2lmKG4gaW5zdGFuY2VvZiBMZXx8biBpbnN0YW5jZW9mIFMpcmV0dXJuIG47dD17c2xpY2U6ITAscGFyc2VPcHRpb25zOnt9LC4uLnR9O2NvbnN0IHI9dHlwZW9mIG49PSJvYmplY3QiJiZuIT09bnVsbCxzPXR5cGVvZiBuPT0ic3RyaW5nIjtpZihyKXRyeXtpZihBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aD4wKXJldHVybiBTLmZyb21BcnJheShuLm1hcChsPT5lLm5vZGVGcm9tSlNPTihsKSkpO2NvbnN0IG89ZS5ub2RlRnJvbUpTT04obik7cmV0dXJuIHQuZXJyb3JPbkludmFsaWRDb250ZW50JiZvLmNoZWNrKCksb31jYXRjaChpKXtpZih0LmVycm9yT25JbnZhbGlkQ29udGVudCl0aHJvdyBuZXcgRXJyb3IoIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudCIse2NhdXNlOml9KTtyZXR1cm4gWm4oIiIsZSx0KX1pZihzKXtpZih0LmVycm9yT25JbnZhbGlkQ29udGVudCl7bGV0IG89ITEsbD0iIjtjb25zdCBhPW5ldyBMYyh7dG9wTm9kZTplLnNwZWMudG9wTm9kZSxtYXJrczplLnNwZWMubWFya3Msbm9kZXM6ZS5zcGVjLm5vZGVzLmFwcGVuZCh7X190aXB0YXBfX3ByaXZhdGVfX3Vua25vd25fX2NhdGNoX19hbGxfX25vZGU6e2NvbnRlbnQ6ImlubGluZSoiLGdyb3VwOiJibG9jayIscGFyc2VET006W3t0YWc6IioiLGdldEF0dHJzOmM9PihvPSEwLGw9dHlwZW9mIGM9PSJzdHJpbmciP2M6Yy5vdXRlckhUTUwsbnVsbCl9XX19KX0pO2lmKHQuc2xpY2U/aXQuZnJvbVNjaGVtYShhKS5wYXJzZVNsaWNlKEVuKG4pLHQucGFyc2VPcHRpb25zKTppdC5mcm9tU2NoZW1hKGEpLnBhcnNlKEVuKG4pLHQucGFyc2VPcHRpb25zKSx0LmVycm9yT25JbnZhbGlkQ29udGVudCYmbyl0aHJvdyBuZXcgRXJyb3IoIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudCIse2NhdXNlOm5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGZvdW5kOiAke2x9YCl9KX1jb25zdCBpPWl0LmZyb21TY2hlbWEoZSk7cmV0dXJuIHQuc2xpY2U/aS5wYXJzZVNsaWNlKEVuKG4pLHQucGFyc2VPcHRpb25zKS5jb250ZW50OmkucGFyc2UoRW4obiksdC5wYXJzZU9wdGlvbnMpfXJldHVybiBabigiIixlLHQpfWZ1bmN0aW9uIHlnKG4sZSx0KXtjb25zdCByPW4uc3RlcHMubGVuZ3RoLTE7aWYocjxlKXJldHVybjtjb25zdCBzPW4uc3RlcHNbcl07aWYoIShzIGluc3RhbmNlb2YgcmV8fHMgaW5zdGFuY2VvZiBhZSkpcmV0dXJuO2NvbnN0IGk9bi5tYXBwaW5nLm1hcHNbcl07bGV0IG89MDtpLmZvckVhY2goKGwsYSxjLHUpPT57bz09PTAmJihvPXUpfSksbi5zZXRTZWxlY3Rpb24oSS5uZWFyKG4uZG9jLnJlc29sdmUobyksdCkpfXZhciBrZz1uPT4hKCJ0eXBlImluIG4pLGJnPShuLGUsdCk9Pih7dHI6cixkaXNwYXRjaDpzLGVkaXRvcjppfSk9Pnt2YXIgbztpZihzKXt0PXtwYXJzZU9wdGlvbnM6aS5vcHRpb25zLnBhcnNlT3B0aW9ucyx1cGRhdGVTZWxlY3Rpb246ITAsYXBwbHlJbnB1dFJ1bGVzOiExLGFwcGx5UGFzdGVSdWxlczohMSwuLi50fTtsZXQgbDtjb25zdCBhPWc9PntpLmVtaXQoImNvbnRlbnRFcnJvciIse2VkaXRvcjppLGVycm9yOmcsZGlzYWJsZUNvbGxhYm9yYXRpb246KCk9PnsiY29sbGFib3JhdGlvbiJpbiBpLnN0b3JhZ2UmJnR5cGVvZiBpLnN0b3JhZ2UuY29sbGFib3JhdGlvbj09Im9iamVjdCImJmkuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiYoaS5zdG9yYWdlLmNvbGxhYm9yYXRpb24uaXNEaXNhYmxlZD0hMCl9fSl9LGM9e3ByZXNlcnZlV2hpdGVzcGFjZToiZnVsbCIsLi4udC5wYXJzZU9wdGlvbnN9O2lmKCF0LmVycm9yT25JbnZhbGlkQ29udGVudCYmIWkub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2smJmkub3B0aW9ucy5lbWl0Q29udGVudEVycm9yKXRyeXtabihlLGkuc2NoZW1hLHtwYXJzZU9wdGlvbnM6YyxlcnJvck9uSW52YWxpZENvbnRlbnQ6ITB9KX1jYXRjaChnKXthKGcpfXRyeXtsPVpuKGUsaS5zY2hlbWEse3BhcnNlT3B0aW9uczpjLGVycm9yT25JbnZhbGlkQ29udGVudDoobz10LmVycm9yT25JbnZhbGlkQ29udGVudCkhPW51bGw/bzppLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrfSl9Y2F0Y2goZyl7cmV0dXJuIGEoZyksITF9bGV0e2Zyb206dSx0bzpkfT10eXBlb2Ygbj09Im51bWJlciI/e2Zyb206bix0bzpufTp7ZnJvbTpuLmZyb20sdG86bi50b30saD0hMCxmPSEwO2lmKChrZyhsKT9sOltsXSkuZm9yRWFjaChnPT57Zy5jaGVjaygpLGg9aD9nLmlzVGV4dCYmZy5tYXJrcy5sZW5ndGg9PT0wOiExLGY9Zj9nLmlzQmxvY2s6ITF9KSx1PT09ZCYmZil7Y29uc3R7cGFyZW50Omd9PXIuZG9jLnJlc29sdmUodSk7Zy5pc1RleHRibG9jayYmIWcudHlwZS5zcGVjLmNvZGUmJiFnLmNoaWxkQ291bnQmJih1LT0xLGQrPTEpfWxldCBtO2lmKGgpe2lmKEFycmF5LmlzQXJyYXkoZSkpbT1lLm1hcChnPT5nLnRleHR8fCIiKS5qb2luKCIiKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBTKXtsZXQgZz0iIjtlLmZvckVhY2goeT0+e3kudGV4dCYmKGcrPXkudGV4dCl9KSxtPWd9ZWxzZSB0eXBlb2YgZT09Im9iamVjdCImJmUmJmUudGV4dD9tPWUudGV4dDptPWU7ci5pbnNlcnRUZXh0KG0sdSxkKX1lbHNle209bDtjb25zdCBnPXIuZG9jLnJlc29sdmUodSkseT1nLm5vZGUoKSxrPWcucGFyZW50T2Zmc2V0PT09MCxiPXkuaXNUZXh0fHx5LmlzVGV4dGJsb2NrLHc9eS5jb250ZW50LnNpemU+MDtrJiZiJiZ3JiZmJiYodT1NYXRoLm1heCgwLHUtMSkpLHIucmVwbGFjZVdpdGgodSxkLG0pfXQudXBkYXRlU2VsZWN0aW9uJiZ5ZyhyLHIuc3RlcHMubGVuZ3RoLTEsLTEpLHQuYXBwbHlJbnB1dFJ1bGVzJiZyLnNldE1ldGEoImFwcGx5SW5wdXRSdWxlcyIse2Zyb206dSx0ZXh0Om19KSx0LmFwcGx5UGFzdGVSdWxlcyYmci5zZXRNZXRhKCJhcHBseVBhc3RlUnVsZXMiLHtmcm9tOnUsdGV4dDptfSl9cmV0dXJuITB9LHhnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5qZihuLGUpLHdnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5xZihuLGUpLHZnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT50dShuLGUpLFNnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5pdShuLGUpLENnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZSx0cjp0fSk9Pnt0cnl7Y29uc3Qgcj1ScyhuLmRvYyxuLnNlbGVjdGlvbi4kZnJvbS5wb3MsLTEpO3JldHVybiByPT1udWxsPyExOih0LmpvaW4ociwyKSxlJiZlKHQpLCEwKX1jYXRjaHtyZXR1cm4hMX19LFRnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZSx0cjp0fSk9Pnt0cnl7Y29uc3Qgcj1ScyhuLmRvYyxuLnNlbGVjdGlvbi4kZnJvbS5wb3MsMSk7cmV0dXJuIHI9PW51bGw/ITE6KHQuam9pbihyLDIpLGUmJmUodCksITApfWNhdGNoe3JldHVybiExfX0sTWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlZmKG4sZSksRWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlVmKG4sZSk7ZnVuY3Rpb24gUXUoKXtyZXR1cm4gdHlwZW9mIG5hdmlnYXRvcjwidSI/L01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOiExfWZ1bmN0aW9uIEFnKG4pe2NvbnN0IGU9bi5zcGxpdCgvLSg/ISQpLyk7bGV0IHQ9ZVtlLmxlbmd0aC0xXTt0PT09IlNwYWNlIiYmKHQ9IiAiKTtsZXQgcixzLGksbztmb3IobGV0IGw9MDtsPGUubGVuZ3RoLTE7bCs9MSl7Y29uc3QgYT1lW2xdO2lmKC9eKGNtZHxtZXRhfG0pJC9pLnRlc3QoYSkpbz0hMDtlbHNlIGlmKC9eYShsdCk/JC9pLnRlc3QoYSkpcj0hMDtlbHNlIGlmKC9eKGN8Y3RybHxjb250cm9sKSQvaS50ZXN0KGEpKXM9ITA7ZWxzZSBpZigvXnMoaGlmdCk/JC9pLnRlc3QoYSkpaT0hMDtlbHNlIGlmKC9ebW9kJC9pLnRlc3QoYSkpR3IoKXx8UXUoKT9vPSEwOnM9ITA7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAke2F9YCl9cmV0dXJuIHImJih0PWBBbHQtJHt0fWApLHMmJih0PWBDdHJsLSR7dH1gKSxvJiYodD1gTWV0YS0ke3R9YCksaSYmKHQ9YFNoaWZ0LSR7dH1gKSx0fXZhciBPZz1uPT4oe2VkaXRvcjplLHZpZXc6dCx0cjpyLGRpc3BhdGNoOnN9KT0+e2NvbnN0IGk9QWcobikuc3BsaXQoLy0oPyEkKS8pLG89aS5maW5kKGM9PiFbIkFsdCIsIkN0cmwiLCJNZXRhIiwiU2hpZnQiXS5pbmNsdWRlcyhjKSksbD1uZXcgS2V5Ym9hcmRFdmVudCgia2V5ZG93biIse2tleTpvPT09IlNwYWNlIj8iICI6byxhbHRLZXk6aS5pbmNsdWRlcygiQWx0IiksY3RybEtleTppLmluY2x1ZGVzKCJDdHJsIiksbWV0YUtleTppLmluY2x1ZGVzKCJNZXRhIiksc2hpZnRLZXk6aS5pbmNsdWRlcygiU2hpZnQiKSxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KSxhPWUuY2FwdHVyZVRyYW5zYWN0aW9uKCgpPT57dC5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsYz0+Yyh0LGwpKX0pO3JldHVybiBhPy5zdGVwcy5mb3JFYWNoKGM9Pntjb25zdCB1PWMubWFwKHIubWFwcGluZyk7dSYmcyYmci5tYXliZVN0ZXAodSl9KSwhMH07ZnVuY3Rpb24gRXQobixlLHQ9e30pe2NvbnN0e2Zyb206cix0bzpzLGVtcHR5Oml9PW4uc2VsZWN0aW9uLG89ZT9pZShlLG4uc2NoZW1hKTpudWxsLGw9W107bi5kb2Mubm9kZXNCZXR3ZWVuKHIscywoZCxoKT0+e2lmKGQuaXNUZXh0KXJldHVybjtjb25zdCBmPU1hdGgubWF4KHIsaCkscD1NYXRoLm1pbihzLGgrZC5ub2RlU2l6ZSk7bC5wdXNoKHtub2RlOmQsZnJvbTpmLHRvOnB9KX0pO2NvbnN0IGE9cy1yLGM9bC5maWx0ZXIoZD0+bz9vLm5hbWU9PT1kLm5vZGUudHlwZS5uYW1lOiEwKS5maWx0ZXIoZD0+SnIoZC5ub2RlLmF0dHJzLHQse3N0cmljdDohMX0pKTtyZXR1cm4gaT8hIWMubGVuZ3RoOmMucmVkdWNlKChkLGgpPT5kK2gudG8taC5mcm9tLDApPj1hfXZhciBOZz0obixlPXt9KT0+KHtzdGF0ZTp0LGRpc3BhdGNoOnJ9KT0+e2NvbnN0IHM9aWUobix0LnNjaGVtYSk7cmV0dXJuIEV0KHQscyxlKT9XZih0LHIpOiExfSxSZz0oKT0+KHtzdGF0ZTpuLGRpc3BhdGNoOmV9KT0+Y3UobixlKSxJZz1uPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT57Y29uc3Qgcj1pZShuLGUuc2NoZW1hKTtyZXR1cm4gc3AocikoZSx0KX0sRGc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9Pmx1KG4sZSk7ZnVuY3Rpb24gX3MobixlKXtyZXR1cm4gZS5ub2Rlc1tuXT8ibm9kZSI6ZS5tYXJrc1tuXT8ibWFyayI6bnVsbH1mdW5jdGlvbiB5YShuLGUpe2NvbnN0IHQ9dHlwZW9mIGU9PSJzdHJpbmciP1tlXTplO3JldHVybiBPYmplY3Qua2V5cyhuKS5yZWR1Y2UoKHIscyk9Pih0LmluY2x1ZGVzKHMpfHwocltzXT1uW3NdKSxyKSx7fSl9dmFyIExnPShuLGUpPT4oe3RyOnQsc3RhdGU6cixkaXNwYXRjaDpzfSk9PntsZXQgaT1udWxsLG89bnVsbDtjb25zdCBsPV9zKHR5cGVvZiBuPT0ic3RyaW5nIj9uOm4ubmFtZSxyLnNjaGVtYSk7aWYoIWwpcmV0dXJuITE7bD09PSJub2RlIiYmKGk9aWUobixyLnNjaGVtYSkpLGw9PT0ibWFyayImJihvPWF0KG4sci5zY2hlbWEpKTtsZXQgYT0hMTtyZXR1cm4gdC5zZWxlY3Rpb24ucmFuZ2VzLmZvckVhY2goYz0+e3IuZG9jLm5vZGVzQmV0d2VlbihjLiRmcm9tLnBvcyxjLiR0by5wb3MsKHUsZCk9PntpJiZpPT09dS50eXBlJiYoYT0hMCxzJiZ0LnNldE5vZGVNYXJrdXAoZCx2b2lkIDAseWEodS5hdHRycyxlKSkpLG8mJnUubWFya3MubGVuZ3RoJiZ1Lm1hcmtzLmZvckVhY2goaD0+e289PT1oLnR5cGUmJihhPSEwLHMmJnQuYWRkTWFyayhkLGQrdS5ub2RlU2l6ZSxvLmNyZWF0ZSh5YShoLmF0dHJzLGUpKSkpfSl9KX0pLGF9LFBnPSgpPT4oe3RyOm4sZGlzcGF0Y2g6ZX0pPT4oZSYmbi5zY3JvbGxJbnRvVmlldygpLCEwKSx6Zz0oKT0+KHt0cjpuLGRpc3BhdGNoOmV9KT0+e2lmKGUpe2NvbnN0IHQ9bmV3IEFlKG4uZG9jKTtuLnNldFNlbGVjdGlvbih0KX1yZXR1cm4hMH0sJGc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PnJ1KG4sZSksQmc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9Pm91KG4sZSksX2c9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlFmKG4sZSksSGc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlpmKG4sZSksRmc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PllmKG4sZSk7ZnVuY3Rpb24gamkobixlLHQ9e30scj17fSl7cmV0dXJuIFpuKG4sZSx7c2xpY2U6ITEscGFyc2VPcHRpb25zOnQsZXJyb3JPbkludmFsaWRDb250ZW50OnIuZXJyb3JPbkludmFsaWRDb250ZW50fSl9dmFyIFZnPShuLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6ZSxlbWl0VXBkYXRlOnQ9ITAscGFyc2VPcHRpb25zOnI9e319PXt9KT0+KHtlZGl0b3I6cyx0cjppLGRpc3BhdGNoOm8sY29tbWFuZHM6bH0pPT57Y29uc3R7ZG9jOmF9PWk7aWYoci5wcmVzZXJ2ZVdoaXRlc3BhY2UhPT0iZnVsbCIpe2NvbnN0IGM9amkobixzLnNjaGVtYSxyLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6ZT8/cy5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pO3JldHVybiBvJiZpLnJlcGxhY2VXaXRoKDAsYS5jb250ZW50LnNpemUsYykuc2V0TWV0YSgicHJldmVudFVwZGF0ZSIsIXQpLCEwfXJldHVybiBvJiZpLnNldE1ldGEoInByZXZlbnRVcGRhdGUiLCF0KSxsLmluc2VydENvbnRlbnRBdCh7ZnJvbTowLHRvOmEuY29udGVudC5zaXplfSxuLHtwYXJzZU9wdGlvbnM6cixlcnJvck9uSW52YWxpZENvbnRlbnQ6ZT8/cy5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pfTtmdW5jdGlvbiBYdShuLGUpe2NvbnN0IHQ9YXQoZSxuLnNjaGVtYSkse2Zyb206cix0bzpzLGVtcHR5Oml9PW4uc2VsZWN0aW9uLG89W107aT8obi5zdG9yZWRNYXJrcyYmby5wdXNoKC4uLm4uc3RvcmVkTWFya3MpLG8ucHVzaCguLi5uLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSk6bi5kb2Mubm9kZXNCZXR3ZWVuKHIscyxhPT57by5wdXNoKC4uLmEubWFya3MpfSk7Y29uc3QgbD1vLmZpbmQoYT0+YS50eXBlLm5hbWU9PT10Lm5hbWUpO3JldHVybiBsP3suLi5sLmF0dHJzfTp7fX1mdW5jdGlvbiBZdShuLGUpe2NvbnN0IHQ9bmV3IFFjKG4pO3JldHVybiBlLmZvckVhY2gocj0+e3Iuc3RlcHMuZm9yRWFjaChzPT57dC5zdGVwKHMpfSl9KSx0fWZ1bmN0aW9uIFVnKG4pe2ZvcihsZXQgZT0wO2U8bi5lZGdlQ291bnQ7ZSs9MSl7Y29uc3R7dHlwZTp0fT1uLmVkZ2UoZSk7aWYodC5pc1RleHRibG9jayYmIXQuaGFzUmVxdWlyZWRBdHRycygpKXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIGpnKG4sZSx0KXtjb25zdCByPVtdO3JldHVybiBuLm5vZGVzQmV0d2VlbihlLmZyb20sZS50bywocyxpKT0+e3QocykmJnIucHVzaCh7bm9kZTpzLHBvczppfSl9KSxyfWZ1bmN0aW9uIHFnKG4sZSl7Zm9yKGxldCB0PW4uZGVwdGg7dD4wO3QtPTEpe2NvbnN0IHI9bi5ub2RlKHQpO2lmKGUocikpcmV0dXJue3Bvczp0PjA/bi5iZWZvcmUodCk6MCxzdGFydDpuLnN0YXJ0KHQpLGRlcHRoOnQsbm9kZTpyfX19ZnVuY3Rpb24gSHMobil7cmV0dXJuIGU9PnFnKGUuJGZyb20sbil9ZnVuY3Rpb24gQShuLGUsdCl7cmV0dXJuIG4uY29uZmlnW2VdPT09dm9pZCAwJiZuLnBhcmVudD9BKG4ucGFyZW50LGUsdCk6dHlwZW9mIG4uY29uZmlnW2VdPT0iZnVuY3Rpb24iP24uY29uZmlnW2VdLmJpbmQoey4uLnQscGFyZW50Om4ucGFyZW50P0Eobi5wYXJlbnQsZSx0KTpudWxsfSk6bi5jb25maWdbZV19ZnVuY3Rpb24gRnMobil7cmV0dXJuIG4ubWFwKGU9Pntjb25zdCB0PXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOmUuc3RvcmFnZX0scj1BKGUsImFkZEV4dGVuc2lvbnMiLHQpO3JldHVybiByP1tlLC4uLkZzKHIoKSldOmV9KS5mbGF0KDEwKX1mdW5jdGlvbiBQbyhuLGUpe2NvbnN0IHQ9S3QuZnJvbVNjaGVtYShlKS5zZXJpYWxpemVGcmFnbWVudChuKSxzPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBzLmFwcGVuZENoaWxkKHQpLHMuaW5uZXJIVE1MfWZ1bmN0aW9uIFp1KG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIn1mdW5jdGlvbiBVKG4sZT12b2lkIDAsLi4udCl7cmV0dXJuIFp1KG4pP2U/bi5iaW5kKGUpKC4uLnQpOm4oLi4udCk6bn1mdW5jdGlvbiBXZyhuPXt9KXtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPT09MCYmbi5jb25zdHJ1Y3Rvcj09PU9iamVjdH1mdW5jdGlvbiBobihuKXtjb25zdCBlPW4uZmlsdGVyKHM9PnMudHlwZT09PSJleHRlbnNpb24iKSx0PW4uZmlsdGVyKHM9PnMudHlwZT09PSJub2RlIikscj1uLmZpbHRlcihzPT5zLnR5cGU9PT0ibWFyayIpO3JldHVybntiYXNlRXh0ZW5zaW9uczplLG5vZGVFeHRlbnNpb25zOnQsbWFya0V4dGVuc2lvbnM6cn19ZnVuY3Rpb24gZWQobil7Y29uc3QgZT1bXSx7bm9kZUV4dGVuc2lvbnM6dCxtYXJrRXh0ZW5zaW9uczpyfT1obihuKSxzPVsuLi50LC4uLnJdLGk9e2RlZmF1bHQ6bnVsbCx2YWxpZGF0ZTp2b2lkIDAscmVuZGVyZWQ6ITAscmVuZGVySFRNTDpudWxsLHBhcnNlSFRNTDpudWxsLGtlZXBPblNwbGl0OiEwLGlzUmVxdWlyZWQ6ITF9LG89dC5maWx0ZXIoYz0+Yy5uYW1lIT09InRleHQiKS5tYXAoYz0+Yy5uYW1lKSxsPXIubWFwKGM9PmMubmFtZSksYT1bLi4ubywuLi5sXTtyZXR1cm4gbi5mb3JFYWNoKGM9Pntjb25zdCB1PXtuYW1lOmMubmFtZSxvcHRpb25zOmMub3B0aW9ucyxzdG9yYWdlOmMuc3RvcmFnZSxleHRlbnNpb25zOnN9LGQ9QShjLCJhZGRHbG9iYWxBdHRyaWJ1dGVzIix1KTtpZighZClyZXR1cm47ZCgpLmZvckVhY2goZj0+e2xldCBwO0FycmF5LmlzQXJyYXkoZi50eXBlcyk/cD1mLnR5cGVzOmYudHlwZXM9PT0iKiI/cD1hOmYudHlwZXM9PT0ibm9kZXMiP3A9bzpmLnR5cGVzPT09Im1hcmtzIj9wPWw6cD1bXSxwLmZvckVhY2gobT0+e09iamVjdC5lbnRyaWVzKGYuYXR0cmlidXRlcykuZm9yRWFjaCgoW2cseV0pPT57ZS5wdXNoKHt0eXBlOm0sbmFtZTpnLGF0dHJpYnV0ZTp7Li4uaSwuLi55fX0pfSl9KX0pfSkscy5mb3JFYWNoKGM9Pntjb25zdCB1PXtuYW1lOmMubmFtZSxvcHRpb25zOmMub3B0aW9ucyxzdG9yYWdlOmMuc3RvcmFnZX0sZD1BKGMsImFkZEF0dHJpYnV0ZXMiLHUpO2lmKCFkKXJldHVybjtjb25zdCBoPWQoKTtPYmplY3QuZW50cmllcyhoKS5mb3JFYWNoKChbZixwXSk9Pntjb25zdCBtPXsuLi5pLC4uLnB9O3R5cGVvZiBtPy5kZWZhdWx0PT0iZnVuY3Rpb24iJiYobS5kZWZhdWx0PW0uZGVmYXVsdCgpKSxtPy5pc1JlcXVpcmVkJiZtPy5kZWZhdWx0PT09dm9pZCAwJiZkZWxldGUgbS5kZWZhdWx0LGUucHVzaCh7dHlwZTpjLm5hbWUsbmFtZTpmLGF0dHJpYnV0ZTptfSl9KX0pLGV9ZnVuY3Rpb24gS2cobil7Y29uc3QgZT1bXTtsZXQgdD0iIixyPSExLHM9ITEsaT0wO2NvbnN0IG89bi5sZW5ndGg7Zm9yKGxldCBsPTA7bDxvO2wrPTEpe2NvbnN0IGE9bltsXTtpZihhPT09IiciJiYhcyl7cj0hcix0Kz1hO2NvbnRpbnVlfWlmKGE9PT0nIicmJiFyKXtzPSFzLHQrPWE7Y29udGludWV9aWYoIXImJiFzKXtpZihhPT09IigiKXtpKz0xLHQrPWE7Y29udGludWV9aWYoYT09PSIpIiYmaT4wKXtpLT0xLHQrPWE7Y29udGludWV9aWYoYT09PSI7IiYmaT09PTApe2UucHVzaCh0KSx0PSIiO2NvbnRpbnVlfX10Kz1hfXJldHVybiB0JiZlLnB1c2godCksZX1mdW5jdGlvbiBrYShuKXtjb25zdCBlPVtdLHQ9S2cobnx8IiIpLHI9dC5sZW5ndGg7Zm9yKGxldCBzPTA7czxyO3MrPTEpe2NvbnN0IGk9dFtzXSxvPWkuaW5kZXhPZigiOiIpO2lmKG89PT0tMSljb250aW51ZTtjb25zdCBsPWkuc2xpY2UoMCxvKS50cmltKCksYT1pLnNsaWNlKG8rMSkudHJpbSgpO2wmJmEmJmUucHVzaChbbCxhXSl9cmV0dXJuIGV9ZnVuY3Rpb24gSyguLi5uKXtyZXR1cm4gbi5maWx0ZXIoZT0+ISFlKS5yZWR1Y2UoKGUsdCk9Pntjb25zdCByPXsuLi5lfTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW3MsaV0pPT57aWYoIXJbc10pe3Jbc109aTtyZXR1cm59aWYocz09PSJjbGFzcyIpe2NvbnN0IGw9aT9TdHJpbmcoaSkuc3BsaXQoIiAiKTpbXSxhPXJbc10/cltzXS5zcGxpdCgiICIpOltdLGM9bC5maWx0ZXIodT0+IWEuaW5jbHVkZXModSkpO3Jbc109Wy4uLmEsLi4uY10uam9pbigiICIpfWVsc2UgaWYocz09PSJzdHlsZSIpe2NvbnN0IGw9bmV3IE1hcChbLi4ua2EocltzXSksLi4ua2EoaSldKTtyW3NdPUFycmF5LmZyb20obC5lbnRyaWVzKCkpLm1hcCgoW2EsY10pPT5gJHthfTogJHtjfWApLmpvaW4oIjsgIil9ZWxzZSByW3NdPWl9KSxyfSx7fSl9ZnVuY3Rpb24gZXIobixlKXtyZXR1cm4gZS5maWx0ZXIodD0+dC50eXBlPT09bi50eXBlLm5hbWUpLmZpbHRlcih0PT50LmF0dHJpYnV0ZS5yZW5kZXJlZCkubWFwKHQ9PnQuYXR0cmlidXRlLnJlbmRlckhUTUw/dC5hdHRyaWJ1dGUucmVuZGVySFRNTChuLmF0dHJzKXx8e306e1t0Lm5hbWVdOm4uYXR0cnNbdC5uYW1lXX0pLnJlZHVjZSgodCxyKT0+Syh0LHIpLHt9KX1mdW5jdGlvbiBKZyhuKXtyZXR1cm4gdHlwZW9mIG4hPSJzdHJpbmciP246bi5tYXRjaCgvXlsrLV0/KD86XGQqXC4pP1xkKyQvKT9OdW1iZXIobik6bj09PSJ0cnVlIj8hMDpuPT09ImZhbHNlIj8hMTpufWZ1bmN0aW9uIGJhKG4sZSl7cmV0dXJuInN0eWxlImluIG4/bjp7Li4ubixnZXRBdHRyczp0PT57Y29uc3Qgcj1uLmdldEF0dHJzP24uZ2V0QXR0cnModCk6bi5hdHRycztpZihyPT09ITEpcmV0dXJuITE7Y29uc3Qgcz1lLnJlZHVjZSgoaSxvKT0+e2NvbnN0IGw9by5hdHRyaWJ1dGUucGFyc2VIVE1MP28uYXR0cmlidXRlLnBhcnNlSFRNTCh0KTpKZyh0LmdldEF0dHJpYnV0ZShvLm5hbWUpKTtyZXR1cm4gbD09bnVsbD9pOnsuLi5pLFtvLm5hbWVdOmx9fSx7fSk7cmV0dXJuey4uLnIsLi4uc319fX1mdW5jdGlvbiB4YShuKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLmZpbHRlcigoW2UsdF0pPT5lPT09ImF0dHJzIiYmV2codCk/ITE6dCE9bnVsbCkpfWZ1bmN0aW9uIHdhKG4pe3ZhciBlLHQ7Y29uc3Qgcj17fTtyZXR1cm4hKChlPW4/LmF0dHJpYnV0ZSkhPW51bGwmJmUuaXNSZXF1aXJlZCkmJiJkZWZhdWx0ImluKG4/LmF0dHJpYnV0ZXx8e30pJiYoci5kZWZhdWx0PW4uYXR0cmlidXRlLmRlZmF1bHQpLCgodD1uPy5hdHRyaWJ1dGUpPT1udWxsP3ZvaWQgMDp0LnZhbGlkYXRlKSE9PXZvaWQgMCYmKHIudmFsaWRhdGU9bi5hdHRyaWJ1dGUudmFsaWRhdGUpLFtuLm5hbWUscl19ZnVuY3Rpb24gdGQobixlKXt2YXIgdDtjb25zdCByPWVkKG4pLHtub2RlRXh0ZW5zaW9uczpzLG1hcmtFeHRlbnNpb25zOml9PWhuKG4pLG89KHQ9cy5maW5kKGM9PkEoYywidG9wTm9kZSIpKSk9PW51bGw/dm9pZCAwOnQubmFtZSxsPU9iamVjdC5mcm9tRW50cmllcyhzLm1hcChjPT57Y29uc3QgdT1yLmZpbHRlcih5PT55LnR5cGU9PT1jLm5hbWUpLGQ9e25hbWU6Yy5uYW1lLG9wdGlvbnM6Yy5vcHRpb25zLHN0b3JhZ2U6Yy5zdG9yYWdlLGVkaXRvcjplfSxoPW4ucmVkdWNlKCh5LGspPT57Y29uc3QgYj1BKGssImV4dGVuZE5vZGVTY2hlbWEiLGQpO3JldHVybnsuLi55LC4uLmI/YihjKTp7fX19LHt9KSxmPXhhKHsuLi5oLGNvbnRlbnQ6VShBKGMsImNvbnRlbnQiLGQpKSxtYXJrczpVKEEoYywibWFya3MiLGQpKSxncm91cDpVKEEoYywiZ3JvdXAiLGQpKSxpbmxpbmU6VShBKGMsImlubGluZSIsZCkpLGF0b206VShBKGMsImF0b20iLGQpKSxzZWxlY3RhYmxlOlUoQShjLCJzZWxlY3RhYmxlIixkKSksZHJhZ2dhYmxlOlUoQShjLCJkcmFnZ2FibGUiLGQpKSxjb2RlOlUoQShjLCJjb2RlIixkKSksd2hpdGVzcGFjZTpVKEEoYywid2hpdGVzcGFjZSIsZCkpLGxpbmVicmVha1JlcGxhY2VtZW50OlUoQShjLCJsaW5lYnJlYWtSZXBsYWNlbWVudCIsZCkpLGRlZmluaW5nOlUoQShjLCJkZWZpbmluZyIsZCkpLGlzb2xhdGluZzpVKEEoYywiaXNvbGF0aW5nIixkKSksYXR0cnM6T2JqZWN0LmZyb21FbnRyaWVzKHUubWFwKHdhKSl9KSxwPVUoQShjLCJwYXJzZUhUTUwiLGQpKTtwJiYoZi5wYXJzZURPTT1wLm1hcCh5PT5iYSh5LHUpKSk7Y29uc3QgbT1BKGMsInJlbmRlckhUTUwiLGQpO20mJihmLnRvRE9NPXk9Pm0oe25vZGU6eSxIVE1MQXR0cmlidXRlczplcih5LHUpfSkpO2NvbnN0IGc9QShjLCJyZW5kZXJUZXh0IixkKTtyZXR1cm4gZyYmKGYudG9UZXh0PWcpLFtjLm5hbWUsZl19KSksYT1PYmplY3QuZnJvbUVudHJpZXMoaS5tYXAoYz0+e2NvbnN0IHU9ci5maWx0ZXIoZz0+Zy50eXBlPT09Yy5uYW1lKSxkPXtuYW1lOmMubmFtZSxvcHRpb25zOmMub3B0aW9ucyxzdG9yYWdlOmMuc3RvcmFnZSxlZGl0b3I6ZX0saD1uLnJlZHVjZSgoZyx5KT0+e2NvbnN0IGs9QSh5LCJleHRlbmRNYXJrU2NoZW1hIixkKTtyZXR1cm57Li4uZywuLi5rP2soYyk6e319fSx7fSksZj14YSh7Li4uaCxpbmNsdXNpdmU6VShBKGMsImluY2x1c2l2ZSIsZCkpLGV4Y2x1ZGVzOlUoQShjLCJleGNsdWRlcyIsZCkpLGdyb3VwOlUoQShjLCJncm91cCIsZCkpLHNwYW5uaW5nOlUoQShjLCJzcGFubmluZyIsZCkpLGNvZGU6VShBKGMsImNvZGUiLGQpKSxhdHRyczpPYmplY3QuZnJvbUVudHJpZXModS5tYXAod2EpKX0pLHA9VShBKGMsInBhcnNlSFRNTCIsZCkpO3AmJihmLnBhcnNlRE9NPXAubWFwKGc9PmJhKGcsdSkpKTtjb25zdCBtPUEoYywicmVuZGVySFRNTCIsZCk7cmV0dXJuIG0mJihmLnRvRE9NPWc9Pm0oe21hcms6ZyxIVE1MQXR0cmlidXRlczplcihnLHUpfSkpLFtjLm5hbWUsZl19KSk7cmV0dXJuIG5ldyBMYyh7dG9wTm9kZTpvLG5vZGVzOmwsbWFya3M6YX0pfWZ1bmN0aW9uIEdnKG4pe2NvbnN0IGU9bi5maWx0ZXIoKHQscik9Pm4uaW5kZXhPZih0KSE9PXIpO3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoZSkpfWZ1bmN0aW9uIF9uKG4pe3JldHVybiBuLnNvcnQoKHQscik9Pntjb25zdCBzPUEodCwicHJpb3JpdHkiKXx8MTAwLGk9QShyLCJwcmlvcml0eSIpfHwxMDA7cmV0dXJuIHM+aT8tMTpzPGk/MTowfSl9ZnVuY3Rpb24gem8obil7Y29uc3QgZT1fbihGcyhuKSk7cmV0dXJuIEdnKGUubWFwKHI9PnIubmFtZSkpLmxlbmd0aCxlfWZ1bmN0aW9uIFFnKG4sZSl7Y29uc3QgdD16byhuKTtyZXR1cm4gdGQodCxlKX1mdW5jdGlvbiBYZyhuLGUpe2NvbnN0IHQ9UWcoZSkscj1FbihuKTtyZXR1cm4gaXQuZnJvbVNjaGVtYSh0KS5wYXJzZShyKS50b0pTT04oKX1mdW5jdGlvbiBuZChuLGUsdCl7Y29uc3R7ZnJvbTpyLHRvOnN9PWUse2Jsb2NrU2VwYXJhdG9yOmk9YAoKYCx0ZXh0U2VyaWFsaXplcnM6bz17fX09dHx8e307bGV0IGw9IiI7cmV0dXJuIG4ubm9kZXNCZXR3ZWVuKHIscywoYSxjLHUsZCk9Pnt2YXIgaDthLmlzQmxvY2smJmM+ciYmKGwrPWkpO2NvbnN0IGY9bz8uW2EudHlwZS5uYW1lXTtpZihmKXJldHVybiB1JiYobCs9Zih7bm9kZTphLHBvczpjLHBhcmVudDp1LGluZGV4OmQscmFuZ2U6ZX0pKSwhMTthLmlzVGV4dCYmKGwrPShoPWE/LnRleHQpPT1udWxsP3ZvaWQgMDpoLnNsaWNlKE1hdGgubWF4KHIsYyktYyxzLWMpKX0pLGx9ZnVuY3Rpb24gcmQobixlKXtjb25zdCB0PXtmcm9tOjAsdG86bi5jb250ZW50LnNpemV9O3JldHVybiBuZChuLHQsZSl9ZnVuY3Rpb24gJG8obil7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhuLm5vZGVzKS5maWx0ZXIoKFssZV0pPT5lLnNwZWMudG9UZXh0KS5tYXAoKFtlLHRdKT0+W2UsdC5zcGVjLnRvVGV4dF0pKX1mdW5jdGlvbiBZZyhuLGUpe2NvbnN0IHQ9aWUoZSxuLnNjaGVtYSkse2Zyb206cix0bzpzfT1uLnNlbGVjdGlvbixpPVtdO24uZG9jLm5vZGVzQmV0d2VlbihyLHMsbD0+e2kucHVzaChsKX0pO2NvbnN0IG89aS5yZXZlcnNlKCkuZmluZChsPT5sLnR5cGUubmFtZT09PXQubmFtZSk7cmV0dXJuIG8/ey4uLm8uYXR0cnN9Ont9fWZ1bmN0aW9uIHNkKG4sZSl7Y29uc3QgdD1fcyh0eXBlb2YgZT09InN0cmluZyI/ZTplLm5hbWUsbi5zY2hlbWEpO3JldHVybiB0PT09Im5vZGUiP1lnKG4sZSk6dD09PSJtYXJrIj9YdShuLGUpOnt9fWZ1bmN0aW9uIFpnKG4sZT1KU09OLnN0cmluZ2lmeSl7Y29uc3QgdD17fTtyZXR1cm4gbi5maWx0ZXIocj0+e2NvbnN0IHM9ZShyKTtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscyk/ITE6dFtzXT0hMH0pfWZ1bmN0aW9uIGV5KG4pe2NvbnN0IGU9Wmcobik7cmV0dXJuIGUubGVuZ3RoPT09MT9lOmUuZmlsdGVyKCh0LHIpPT4hZS5maWx0ZXIoKGksbyk9Pm8hPT1yKS5zb21lKGk9PnQub2xkUmFuZ2UuZnJvbT49aS5vbGRSYW5nZS5mcm9tJiZ0Lm9sZFJhbmdlLnRvPD1pLm9sZFJhbmdlLnRvJiZ0Lm5ld1JhbmdlLmZyb20+PWkubmV3UmFuZ2UuZnJvbSYmdC5uZXdSYW5nZS50bzw9aS5uZXdSYW5nZS50bykpfWZ1bmN0aW9uIGlkKG4pe2NvbnN0e21hcHBpbmc6ZSxzdGVwczp0fT1uLHI9W107cmV0dXJuIGUubWFwcy5mb3JFYWNoKChzLGkpPT57Y29uc3Qgbz1bXTtpZihzLnJhbmdlcy5sZW5ndGgpcy5mb3JFYWNoKChsLGEpPT57by5wdXNoKHtmcm9tOmwsdG86YX0pfSk7ZWxzZXtjb25zdHtmcm9tOmwsdG86YX09dFtpXTtpZihsPT09dm9pZCAwfHxhPT09dm9pZCAwKXJldHVybjtvLnB1c2goe2Zyb206bCx0bzphfSl9by5mb3JFYWNoKCh7ZnJvbTpsLHRvOmF9KT0+e2NvbnN0IGM9ZS5zbGljZShpKS5tYXAobCwtMSksdT1lLnNsaWNlKGkpLm1hcChhKSxkPWUuaW52ZXJ0KCkubWFwKGMsLTEpLGg9ZS5pbnZlcnQoKS5tYXAodSk7ci5wdXNoKHtvbGRSYW5nZTp7ZnJvbTpkLHRvOmh9LG5ld1JhbmdlOntmcm9tOmMsdG86dX19KX0pfSksZXkocil9ZnVuY3Rpb24gQm8obixlLHQpe2NvbnN0IHI9W107cmV0dXJuIG49PT1lP3QucmVzb2x2ZShuKS5tYXJrcygpLmZvckVhY2gocz0+e2NvbnN0IGk9dC5yZXNvbHZlKG4pLG89RG8oaSxzLnR5cGUpO28mJnIucHVzaCh7bWFyazpzLC4uLm99KX0pOnQubm9kZXNCZXR3ZWVuKG4sZSwocyxpKT0+eyFzfHxzPy5ub2RlU2l6ZT09PXZvaWQgMHx8ci5wdXNoKC4uLnMubWFya3MubWFwKG89Pih7ZnJvbTppLHRvOmkrcy5ub2RlU2l6ZSxtYXJrOm99KSkpfSkscn12YXIgdHk9KG4sZSx0LHI9MjApPT57Y29uc3Qgcz1uLmRvYy5yZXNvbHZlKHQpO2xldCBpPXIsbz1udWxsO2Zvcig7aT4wJiZvPT09bnVsbDspe2NvbnN0IGw9cy5ub2RlKGkpO2w/LnR5cGUubmFtZT09PWU/bz1sOmktPTF9cmV0dXJuW28saV19O2Z1bmN0aW9uIGJuKG4sZSl7cmV0dXJuIGUubm9kZXNbbl18fGUubWFya3Nbbl18fG51bGx9ZnVuY3Rpb24gSXIobixlLHQpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbcl0pPT57Y29uc3Qgcz1uLmZpbmQoaT0+aS50eXBlPT09ZSYmaS5uYW1lPT09cik7cmV0dXJuIHM/cy5hdHRyaWJ1dGUua2VlcE9uU3BsaXQ6ITF9KSl9dmFyIG55PShuLGU9NTAwKT0+e2xldCB0PSIiO2NvbnN0IHI9bi5wYXJlbnRPZmZzZXQ7cmV0dXJuIG4ucGFyZW50Lm5vZGVzQmV0d2VlbihNYXRoLm1heCgwLHItZSksciwocyxpLG8sbCk9Pnt2YXIgYSxjO2NvbnN0IHU9KChjPShhPXMudHlwZS5zcGVjKS50b1RleHQpPT1udWxsP3ZvaWQgMDpjLmNhbGwoYSx7bm9kZTpzLHBvczppLHBhcmVudDpvLGluZGV4Omx9KSl8fHMudGV4dENvbnRlbnR8fCIlbGVhZiUiO3QrPXMuaXNBdG9tJiYhcy5pc1RleHQ/dTp1LnNsaWNlKDAsTWF0aC5tYXgoMCxyLWkpKX0pLHR9O2Z1bmN0aW9uIHFpKG4sZSx0PXt9KXtjb25zdHtlbXB0eTpyLHJhbmdlczpzfT1uLnNlbGVjdGlvbixpPWU/YXQoZSxuLnNjaGVtYSk6bnVsbDtpZihyKXJldHVybiEhKG4uc3RvcmVkTWFya3N8fG4uc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCkpLmZpbHRlcihkPT5pP2kubmFtZT09PWQudHlwZS5uYW1lOiEwKS5maW5kKGQ9PkpyKGQuYXR0cnMsdCx7c3RyaWN0OiExfSkpO2xldCBvPTA7Y29uc3QgbD1bXTtpZihzLmZvckVhY2goKHskZnJvbTpkLCR0bzpofSk9Pntjb25zdCBmPWQucG9zLHA9aC5wb3M7bi5kb2Mubm9kZXNCZXR3ZWVuKGYscCwobSxnKT0+e2lmKGkmJm0uaW5saW5lQ29udGVudCYmIW0udHlwZS5hbGxvd3NNYXJrVHlwZShpKSlyZXR1cm4hMTtpZighbS5pc1RleHQmJiFtLm1hcmtzLmxlbmd0aClyZXR1cm47Y29uc3QgeT1NYXRoLm1heChmLGcpLGs9TWF0aC5taW4ocCxnK20ubm9kZVNpemUpLGI9ay15O28rPWIsbC5wdXNoKC4uLm0ubWFya3MubWFwKHc9Pih7bWFyazp3LGZyb206eSx0bzprfSkpKX0pfSksbz09PTApcmV0dXJuITE7Y29uc3QgYT1sLmZpbHRlcihkPT5pP2kubmFtZT09PWQubWFyay50eXBlLm5hbWU6ITApLmZpbHRlcihkPT5KcihkLm1hcmsuYXR0cnMsdCx7c3RyaWN0OiExfSkpLnJlZHVjZSgoZCxoKT0+ZCtoLnRvLWguZnJvbSwwKSxjPWwuZmlsdGVyKGQ9Pmk/ZC5tYXJrLnR5cGUhPT1pJiZkLm1hcmsudHlwZS5leGNsdWRlcyhpKTohMCkucmVkdWNlKChkLGgpPT5kK2gudG8taC5mcm9tLDApO3JldHVybihhPjA/YStjOmEpPj1vfWZ1bmN0aW9uIHJ5KG4sZSx0PXt9KXtpZighZSlyZXR1cm4gRXQobixudWxsLHQpfHxxaShuLG51bGwsdCk7Y29uc3Qgcj1fcyhlLG4uc2NoZW1hKTtyZXR1cm4gcj09PSJub2RlIj9FdChuLGUsdCk6cj09PSJtYXJrIj9xaShuLGUsdCk6ITF9dmFyIHN5PShuLGUpPT57Y29uc3R7JGZyb206dCwkdG86ciwkYW5jaG9yOnN9PW4uc2VsZWN0aW9uO2lmKGUpe2NvbnN0IGk9SHMobD0+bC50eXBlLm5hbWU9PT1lKShuLnNlbGVjdGlvbik7aWYoIWkpcmV0dXJuITE7Y29uc3Qgbz1uLmRvYy5yZXNvbHZlKGkucG9zKzEpO3JldHVybiBzLnBvcysxPT09by5lbmQoKX1yZXR1cm4hKHIucGFyZW50T2Zmc2V0PHIucGFyZW50Lm5vZGVTaXplLTJ8fHQucG9zIT09ci5wb3MpfSxpeT1uPT57Y29uc3R7JGZyb206ZSwkdG86dH09bi5zZWxlY3Rpb247cmV0dXJuIShlLnBhcmVudE9mZnNldD4wfHxlLnBvcyE9PXQucG9zKX07ZnVuY3Rpb24gdmEobixlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLnNvbWUodD0+KHR5cGVvZiB0PT0ic3RyaW5nIj90OnQubmFtZSk9PT1uLm5hbWUpOmV9ZnVuY3Rpb24gZmkobixlKXtjb25zdHtub2RlRXh0ZW5zaW9uczp0fT1obihlKSxyPXQuZmluZChvPT5vLm5hbWU9PT1uKTtpZighcilyZXR1cm4hMTtjb25zdCBzPXtuYW1lOnIubmFtZSxvcHRpb25zOnIub3B0aW9ucyxzdG9yYWdlOnIuc3RvcmFnZX0saT1VKEEociwiZ3JvdXAiLHMpKTtyZXR1cm4gdHlwZW9mIGkhPSJzdHJpbmciPyExOmkuc3BsaXQoIiAiKS5pbmNsdWRlcygibGlzdCIpfWZ1bmN0aW9uIFZzKG4se2NoZWNrQ2hpbGRyZW46ZT0hMCxpZ25vcmVXaGl0ZXNwYWNlOnQ9ITF9PXt9KXt2YXIgcjtpZih0KXtpZihuLnR5cGUubmFtZT09PSJoYXJkQnJlYWsiKXJldHVybiEwO2lmKG4uaXNUZXh0KXJldHVybiEvXFMvLnRlc3QoKHI9bi50ZXh0KSE9bnVsbD9yOiIiKX1pZihuLmlzVGV4dClyZXR1cm4hbi50ZXh0O2lmKG4uaXNBdG9tfHxuLmlzTGVhZilyZXR1cm4hMTtpZihuLmNvbnRlbnQuY2hpbGRDb3VudD09PTApcmV0dXJuITA7aWYoZSl7bGV0IHM9ITA7cmV0dXJuIG4uY29udGVudC5mb3JFYWNoKGk9PntzIT09ITEmJihWcyhpLHtpZ25vcmVXaGl0ZXNwYWNlOnQsY2hlY2tDaGlsZHJlbjplfSl8fChzPSExKSl9KSxzfXJldHVybiExfWZ1bmN0aW9uIG9kKG4pe3JldHVybiBuIGluc3RhbmNlb2YgTn12YXIgbGQ9Y2xhc3MgYWR7Y29uc3RydWN0b3IoZSl7dGhpcy5wb3NpdGlvbj1lfXN0YXRpYyBmcm9tSlNPTihlKXtyZXR1cm4gbmV3IGFkKGUucG9zaXRpb24pfXRvSlNPTigpe3JldHVybntwb3NpdGlvbjp0aGlzLnBvc2l0aW9ufX19O2Z1bmN0aW9uIG95KG4sZSl7Y29uc3QgdD1lLm1hcHBpbmcubWFwUmVzdWx0KG4ucG9zaXRpb24pO3JldHVybntwb3NpdGlvbjpuZXcgbGQodC5wb3MpLG1hcFJlc3VsdDp0fX1mdW5jdGlvbiBseShuKXtyZXR1cm4gbmV3IGxkKG4pfWZ1bmN0aW9uIGNkKG4sZSx0KXtjb25zdCBzPW4uc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSxpPXN0KGUsMCxzKSxvPXN0KHQsMCxzKSxsPW4uY29vcmRzQXRQb3MoaSksYT1uLmNvb3Jkc0F0UG9zKG8sLTEpLGM9TWF0aC5taW4obC50b3AsYS50b3ApLHU9TWF0aC5tYXgobC5ib3R0b20sYS5ib3R0b20pLGQ9TWF0aC5taW4obC5sZWZ0LGEubGVmdCksaD1NYXRoLm1heChsLnJpZ2h0LGEucmlnaHQpLGY9aC1kLHA9dS1jLHk9e3RvcDpjLGJvdHRvbTp1LGxlZnQ6ZCxyaWdodDpoLHdpZHRoOmYsaGVpZ2h0OnAseDpkLHk6Y307cmV0dXJuey4uLnksdG9KU09OOigpPT55fX1mdW5jdGlvbiBheShuLGUsdCl7dmFyIHI7Y29uc3R7c2VsZWN0aW9uOnN9PWU7bGV0IGk9bnVsbDtpZihMbyhzKSYmKGk9cy4kY3Vyc29yKSxpKXtjb25zdCBsPShyPW4uc3RvcmVkTWFya3MpIT1udWxsP3I6aS5tYXJrcygpO3JldHVybiBpLnBhcmVudC50eXBlLmFsbG93c01hcmtUeXBlKHQpJiYoISF0LmlzSW5TZXQobCl8fCFsLnNvbWUoYz0+Yy50eXBlLmV4Y2x1ZGVzKHQpKSl9Y29uc3R7cmFuZ2VzOm99PXM7cmV0dXJuIG8uc29tZSgoeyRmcm9tOmwsJHRvOmF9KT0+e2xldCBjPWwuZGVwdGg9PT0wP24uZG9jLmlubGluZUNvbnRlbnQmJm4uZG9jLnR5cGUuYWxsb3dzTWFya1R5cGUodCk6ITE7cmV0dXJuIG4uZG9jLm5vZGVzQmV0d2VlbihsLnBvcyxhLnBvcywodSxkLGgpPT57aWYoYylyZXR1cm4hMTtpZih1LmlzSW5saW5lKXtjb25zdCBmPSFofHxoLnR5cGUuYWxsb3dzTWFya1R5cGUodCkscD0hIXQuaXNJblNldCh1Lm1hcmtzKXx8IXUubWFya3Muc29tZShtPT5tLnR5cGUuZXhjbHVkZXModCkpO2M9ZiYmcH1yZXR1cm4hY30pLGN9KX12YXIgY3k9KG4sZT17fSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnN9KT0+e2NvbnN0e3NlbGVjdGlvbjppfT10LHtlbXB0eTpvLHJhbmdlczpsfT1pLGE9YXQobixyLnNjaGVtYSk7aWYocylpZihvKXtjb25zdCBjPVh1KHIsYSk7dC5hZGRTdG9yZWRNYXJrKGEuY3JlYXRlKHsuLi5jLC4uLmV9KSl9ZWxzZSBsLmZvckVhY2goYz0+e2NvbnN0IHU9Yy4kZnJvbS5wb3MsZD1jLiR0by5wb3M7ci5kb2Mubm9kZXNCZXR3ZWVuKHUsZCwoaCxmKT0+e2NvbnN0IHA9TWF0aC5tYXgoZix1KSxtPU1hdGgubWluKGYraC5ub2RlU2l6ZSxkKTtoLm1hcmtzLmZpbmQoeT0+eS50eXBlPT09YSk/aC5tYXJrcy5mb3JFYWNoKHk9PnthPT09eS50eXBlJiZ0LmFkZE1hcmsocCxtLGEuY3JlYXRlKHsuLi55LmF0dHJzLC4uLmV9KSl9KTp0LmFkZE1hcmsocCxtLGEuY3JlYXRlKGUpKX0pfSk7cmV0dXJuIGF5KHIsdCxhKX0sdXk9KG4sZSk9Pih7dHI6dH0pPT4odC5zZXRNZXRhKG4sZSksITApLGR5PShuLGU9e30pPT4oe3N0YXRlOnQsZGlzcGF0Y2g6cixjaGFpbjpzfSk9Pntjb25zdCBpPWllKG4sdC5zY2hlbWEpO2xldCBvO3JldHVybiB0LnNlbGVjdGlvbi4kYW5jaG9yLnNhbWVQYXJlbnQodC5zZWxlY3Rpb24uJGhlYWQpJiYobz10LnNlbGVjdGlvbi4kYW5jaG9yLnBhcmVudC5hdHRycyksaS5pc1RleHRibG9jaz9zKCkuY29tbWFuZCgoe2NvbW1hbmRzOmx9KT0+UGwoaSx7Li4ubywuLi5lfSkodCk/ITA6bC5jbGVhck5vZGVzKCkpLmNvbW1hbmQoKHtzdGF0ZTpsfSk9PlBsKGksey4uLm8sLi4uZX0pKGwscikpLnJ1bigpOiExfSxoeT1uPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT57aWYodCl7Y29uc3R7ZG9jOnJ9PWUscz1zdChuLDAsci5jb250ZW50LnNpemUpLGk9Ti5jcmVhdGUocixzKTtlLnNldFNlbGVjdGlvbihpKX1yZXR1cm4hMH0sZnk9KG4sZSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnN9KT0+e2NvbnN0e3NlbGVjdGlvbjppfT1yO2xldCBvLGw7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIj8obz1lLGw9ZSk6ZSYmImZyb20iaW4gZSYmInRvImluIGU/KG89ZS5mcm9tLGw9ZS50byk6KG89aS5mcm9tLGw9aS50bykscyYmdC5kb2Mubm9kZXNCZXR3ZWVuKG8sbCwoYSxjKT0+e2EuaXNUZXh0fHx0LnNldE5vZGVNYXJrdXAoYyx2b2lkIDAsey4uLmEuYXR0cnMsZGlyOm59KX0pLCEwfSxweT1uPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT57aWYodCl7Y29uc3R7ZG9jOnJ9PWUse2Zyb206cyx0bzppfT10eXBlb2Ygbj09Im51bWJlciI/e2Zyb206bix0bzpufTpuLG89RC5hdFN0YXJ0KHIpLmZyb20sbD1ELmF0RW5kKHIpLnRvLGE9c3QocyxvLGwpLGM9c3QoaSxvLGwpLHU9RC5jcmVhdGUocixhLGMpO2Uuc2V0U2VsZWN0aW9uKHUpfXJldHVybiEwfSxteT1uPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT57Y29uc3Qgcj1pZShuLGUuc2NoZW1hKTtyZXR1cm4gbHAocikoZSx0KX07ZnVuY3Rpb24gU2EobixlKXtjb25zdCB0PW4uc3RvcmVkTWFya3N8fG4uc2VsZWN0aW9uLiR0by5wYXJlbnRPZmZzZXQmJm4uc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCk7aWYodCl7Y29uc3Qgcj10LmZpbHRlcihzPT5lPy5pbmNsdWRlcyhzLnR5cGUubmFtZSkpO24udHIuZW5zdXJlTWFya3Mocil9fXZhciBneT0oe2tlZXBNYXJrczpuPSEwfT17fSk9Pih7dHI6ZSxzdGF0ZTp0LGRpc3BhdGNoOnIsZWRpdG9yOnN9KT0+e2NvbnN0e3NlbGVjdGlvbjppLGRvYzpvfT1lLHskZnJvbTpsLCR0bzphfT1pLGM9cy5leHRlbnNpb25NYW5hZ2VyLmF0dHJpYnV0ZXMsdT1JcihjLGwubm9kZSgpLnR5cGUubmFtZSxsLm5vZGUoKS5hdHRycyk7aWYoaSBpbnN0YW5jZW9mIE4mJmkubm9kZS5pc0Jsb2NrKXJldHVybiFsLnBhcmVudE9mZnNldHx8IW90KG8sbC5wb3MpPyExOihyJiYobiYmU2EodCxzLmV4dGVuc2lvbk1hbmFnZXIuc3BsaXR0YWJsZU1hcmtzKSxlLnNwbGl0KGwucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCk7aWYoIWwucGFyZW50LmlzQmxvY2spcmV0dXJuITE7Y29uc3QgZD1hLnBhcmVudE9mZnNldD09PWEucGFyZW50LmNvbnRlbnQuc2l6ZSxoPWwuZGVwdGg9PT0wP3ZvaWQgMDpVZyhsLm5vZGUoLTEpLmNvbnRlbnRNYXRjaEF0KGwuaW5kZXhBZnRlcigtMSkpKTtsZXQgZj1kJiZoP1t7dHlwZTpoLGF0dHJzOnV9XTp2b2lkIDAscD1vdChlLmRvYyxlLm1hcHBpbmcubWFwKGwucG9zKSwxLGYpO2lmKCFmJiYhcCYmb3QoZS5kb2MsZS5tYXBwaW5nLm1hcChsLnBvcyksMSxoP1t7dHlwZTpofV06dm9pZCAwKSYmKHA9ITAsZj1oP1t7dHlwZTpoLGF0dHJzOnV9XTp2b2lkIDApLHIpe2lmKHAmJihpIGluc3RhbmNlb2YgRCYmZS5kZWxldGVTZWxlY3Rpb24oKSxlLnNwbGl0KGUubWFwcGluZy5tYXAobC5wb3MpLDEsZiksaCYmIWQmJiFsLnBhcmVudE9mZnNldCYmbC5wYXJlbnQudHlwZSE9PWgpKXtjb25zdCBtPWUubWFwcGluZy5tYXAobC5iZWZvcmUoKSksZz1lLmRvYy5yZXNvbHZlKG0pO2wubm9kZSgtMSkuY2FuUmVwbGFjZVdpdGgoZy5pbmRleCgpLGcuaW5kZXgoKSsxLGgpJiZlLnNldE5vZGVNYXJrdXAoZS5tYXBwaW5nLm1hcChsLmJlZm9yZSgpKSxoKX1uJiZTYSh0LHMuZXh0ZW5zaW9uTWFuYWdlci5zcGxpdHRhYmxlTWFya3MpLGUuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4gcH0seXk9KG4sZT17fSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnMsZWRpdG9yOml9KT0+e3ZhciBvO2NvbnN0IGw9aWUobixyLnNjaGVtYSkseyRmcm9tOmEsJHRvOmN9PXIuc2VsZWN0aW9uLHU9ci5zZWxlY3Rpb24ubm9kZTtpZih1JiZ1LmlzQmxvY2t8fGEuZGVwdGg8Mnx8IWEuc2FtZVBhcmVudChjKSlyZXR1cm4hMTtjb25zdCBkPWEubm9kZSgtMSk7aWYoZC50eXBlIT09bClyZXR1cm4hMTtjb25zdCBoPWkuZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzO2lmKGEucGFyZW50LmNvbnRlbnQuc2l6ZT09PTAmJmEubm9kZSgtMSkuY2hpbGRDb3VudD09PWEuaW5kZXhBZnRlcigtMSkpe2lmKGEuZGVwdGg9PT0yfHxhLm5vZGUoLTMpLnR5cGUhPT1sfHxhLmluZGV4KC0yKSE9PWEubm9kZSgtMikuY2hpbGRDb3VudC0xKXJldHVybiExO2lmKHMpe2xldCB5PVMuZW1wdHk7Y29uc3Qgaz1hLmluZGV4KC0xKT8xOmEuaW5kZXgoLTIpPzI6Mztmb3IobGV0IE09YS5kZXB0aC1rO00+PWEuZGVwdGgtMztNLT0xKXk9Uy5mcm9tKGEubm9kZShNKS5jb3B5KHkpKTtjb25zdCBiPWEuaW5kZXhBZnRlcigtMSk8YS5ub2RlKC0yKS5jaGlsZENvdW50PzE6YS5pbmRleEFmdGVyKC0yKTxhLm5vZGUoLTMpLmNoaWxkQ291bnQ/MjozLHc9ey4uLklyKGgsYS5ub2RlKCkudHlwZS5uYW1lLGEubm9kZSgpLmF0dHJzKSwuLi5lfSx4PSgobz1sLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSk9PW51bGw/dm9pZCAwOm8uY3JlYXRlQW5kRmlsbCh3KSl8fHZvaWQgMDt5PXkuYXBwZW5kKFMuZnJvbShsLmNyZWF0ZUFuZEZpbGwobnVsbCx4KXx8dm9pZCAwKSk7Y29uc3Qgdj1hLmJlZm9yZShhLmRlcHRoLShrLTEpKTt0LnJlcGxhY2UodixhLmFmdGVyKC1iKSxuZXcgRSh5LDQtaywwKSk7bGV0IEM9LTE7dC5kb2Mubm9kZXNCZXR3ZWVuKHYsdC5kb2MuY29udGVudC5zaXplLChNLFIpPT57aWYoQz4tMSlyZXR1cm4hMTtNLmlzVGV4dGJsb2NrJiZNLmNvbnRlbnQuc2l6ZT09PTAmJihDPVIrMSl9KSxDPi0xJiZ0LnNldFNlbGVjdGlvbihELm5lYXIodC5kb2MucmVzb2x2ZShDKSkpLHQuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4hMH1jb25zdCBmPWMucG9zPT09YS5lbmQoKT9kLmNvbnRlbnRNYXRjaEF0KDApLmRlZmF1bHRUeXBlOm51bGwscD17Li4uSXIoaCxkLnR5cGUubmFtZSxkLmF0dHJzKSwuLi5lfSxtPXsuLi5JcihoLGEubm9kZSgpLnR5cGUubmFtZSxhLm5vZGUoKS5hdHRycyksLi4uZX07dC5kZWxldGUoYS5wb3MsYy5wb3MpO2NvbnN0IGc9Zj9be3R5cGU6bCxhdHRyczpwfSx7dHlwZTpmLGF0dHJzOm19XTpbe3R5cGU6bCxhdHRyczpwfV07aWYoIW90KHQuZG9jLGEucG9zLDIpKXJldHVybiExO2lmKHMpe2NvbnN0e3NlbGVjdGlvbjp5LHN0b3JlZE1hcmtzOmt9PXIse3NwbGl0dGFibGVNYXJrczpifT1pLmV4dGVuc2lvbk1hbmFnZXIsdz1rfHx5LiR0by5wYXJlbnRPZmZzZXQmJnkuJGZyb20ubWFya3MoKTtpZih0LnNwbGl0KGEucG9zLDIsZykuc2Nyb2xsSW50b1ZpZXcoKSwhd3x8IXMpcmV0dXJuITA7Y29uc3QgeD13LmZpbHRlcih2PT5iLmluY2x1ZGVzKHYudHlwZS5uYW1lKSk7dC5lbnN1cmVNYXJrcyh4KX1yZXR1cm4hMH0scGk9KG4sZSk9Pntjb25zdCB0PUhzKG89Pm8udHlwZT09PWUpKG4uc2VsZWN0aW9uKTtpZighdClyZXR1cm4hMDtjb25zdCByPW4uZG9jLnJlc29sdmUoTWF0aC5tYXgoMCx0LnBvcy0xKSkuYmVmb3JlKHQuZGVwdGgpO2lmKHI9PT12b2lkIDApcmV0dXJuITA7Y29uc3Qgcz1uLmRvYy5ub2RlQXQocik7cmV0dXJuIHQubm9kZS50eXBlPT09cz8udHlwZSYmQXQobi5kb2MsdC5wb3MpJiZuLmpvaW4odC5wb3MpLCEwfSxtaT0obixlKT0+e2NvbnN0IHQ9SHMobz0+by50eXBlPT09ZSkobi5zZWxlY3Rpb24pO2lmKCF0KXJldHVybiEwO2NvbnN0IHI9bi5kb2MucmVzb2x2ZSh0LnN0YXJ0KS5hZnRlcih0LmRlcHRoKTtpZihyPT09dm9pZCAwKXJldHVybiEwO2NvbnN0IHM9bi5kb2Mubm9kZUF0KHIpO3JldHVybiB0Lm5vZGUudHlwZT09PXM/LnR5cGUmJkF0KG4uZG9jLHIpJiZuLmpvaW4ociksITB9O2Z1bmN0aW9uIGt5KG4pe2NvbnN0IGU9bi5kb2MsdD1lLmZpcnN0Q2hpbGQ7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgcj1lLnJlc29sdmUoMSkscz1lLnJlc29sdmUodC5ub2RlU2l6ZS0xKTtyZXR1cm4gRC5iZXR3ZWVuKHIscyl9dmFyIGJ5PShuLGUsdCxyPXt9KT0+KHtlZGl0b3I6cyx0cjppLHN0YXRlOm8sZGlzcGF0Y2g6bCxjaGFpbjphLGNvbW1hbmRzOmMsY2FuOnV9KT0+e2NvbnN0e2V4dGVuc2lvbnM6ZCxzcGxpdHRhYmxlTWFya3M6aH09cy5leHRlbnNpb25NYW5hZ2VyLGY9aWUobixvLnNjaGVtYSkscD1pZShlLG8uc2NoZW1hKSx7c2VsZWN0aW9uOm0sc3RvcmVkTWFya3M6Z309byx7JGZyb206eSwkdG86a309bSxiPXkuYmxvY2tSYW5nZShrKSx3PWd8fG0uJHRvLnBhcmVudE9mZnNldCYmbS4kZnJvbS5tYXJrcygpO2lmKCFiKXJldHVybiExO2NvbnN0IHg9SHMoXz0+ZmkoXy50eXBlLm5hbWUsZCkpKG0pLHY9bS5mcm9tPT09MCYmbS50bz09PW8uZG9jLmNvbnRlbnQuc2l6ZSxDPW8uZG9jLmNvbnRlbnQuY29udGVudCxNPUMubGVuZ3RoPT09MT9DWzBdOm51bGwsUj12JiZNJiZmaShNLnR5cGUubmFtZSxkKT97bm9kZTpNLHBvczowfTpudWxsLE89eD8/UixQPSEheCYmYi5kZXB0aD49MSYmYi5kZXB0aC14LmRlcHRoPD0xLEY9ISFSO2lmKChQfHxGKSYmTyl7aWYoTy5ub2RlLnR5cGU9PT1mKXJldHVybiB2JiZGP2EoKS5jb21tYW5kKCh7dHI6XyxkaXNwYXRjaDpMfSk9Pntjb25zdCBIPWt5KF8pO3JldHVybiBIPyhfLnNldFNlbGVjdGlvbihIKSxMJiZMKF8pLCEwKTohMX0pLmxpZnRMaXN0SXRlbShwKS5ydW4oKTpjLmxpZnRMaXN0SXRlbShwKTtpZihmaShPLm5vZGUudHlwZS5uYW1lLGQpJiZmLnZhbGlkQ29udGVudChPLm5vZGUuY29udGVudCkpcmV0dXJuIGEoKS5jb21tYW5kKCgpPT4oaS5zZXROb2RlTWFya3VwKE8ucG9zLGYpLCEwKSkuY29tbWFuZCgoKT0+cGkoaSxmKSkuY29tbWFuZCgoKT0+bWkoaSxmKSkucnVuKCl9cmV0dXJuIXR8fCF3fHwhbD9hKCkuY29tbWFuZCgoKT0+dSgpLndyYXBJbkxpc3QoZixyKT8hMDpjLmNsZWFyTm9kZXMoKSkud3JhcEluTGlzdChmLHIpLmNvbW1hbmQoKCk9PnBpKGksZikpLmNvbW1hbmQoKCk9Pm1pKGksZikpLnJ1bigpOmEoKS5jb21tYW5kKCgpPT57Y29uc3QgXz11KCkud3JhcEluTGlzdChmLHIpLEw9dy5maWx0ZXIoSD0+aC5pbmNsdWRlcyhILnR5cGUubmFtZSkpO3JldHVybiBpLmVuc3VyZU1hcmtzKEwpLF8/ITA6Yy5jbGVhck5vZGVzKCl9KS53cmFwSW5MaXN0KGYscikuY29tbWFuZCgoKT0+cGkoaSxmKSkuY29tbWFuZCgoKT0+bWkoaSxmKSkucnVuKCl9LHh5PShuLGU9e30sdD17fSk9Pih7c3RhdGU6cixjb21tYW5kczpzfSk9Pntjb25zdHtleHRlbmRFbXB0eU1hcmtSYW5nZTppPSExfT10LG89YXQobixyLnNjaGVtYSk7cmV0dXJuIHFpKHIsbyxlKT9zLnVuc2V0TWFyayhvLHtleHRlbmRFbXB0eU1hcmtSYW5nZTppfSk6cy5zZXRNYXJrKG8sZSl9LHd5PShuLGUsdD17fSk9Pih7c3RhdGU6cixjb21tYW5kczpzfSk9Pntjb25zdCBpPWllKG4sci5zY2hlbWEpLG89aWUoZSxyLnNjaGVtYSksbD1FdChyLGksdCk7bGV0IGE7cmV0dXJuIHIuc2VsZWN0aW9uLiRhbmNob3Iuc2FtZVBhcmVudChyLnNlbGVjdGlvbi4kaGVhZCkmJihhPXIuc2VsZWN0aW9uLiRhbmNob3IucGFyZW50LmF0dHJzKSxsP3Muc2V0Tm9kZShvLGEpOnMuc2V0Tm9kZShpLHsuLi5hLC4uLnR9KX0sdnk9KG4sZT17fSk9Pih7c3RhdGU6dCxjb21tYW5kczpyfSk9Pntjb25zdCBzPWllKG4sdC5zY2hlbWEpO3JldHVybiBFdCh0LHMsZSk/ci5saWZ0KHMpOnIud3JhcEluKHMsZSl9LFN5PSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT57Y29uc3QgdD1uLnBsdWdpbnM7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKz0xKXtjb25zdCBzPXRbcl07bGV0IGk7aWYocy5zcGVjLmlzSW5wdXRSdWxlcyYmKGk9cy5nZXRTdGF0ZShuKSkpe2lmKGUpe2NvbnN0IG89bi50cixsPWkudHJhbnNmb3JtO2ZvcihsZXQgYT1sLnN0ZXBzLmxlbmd0aC0xO2E+PTA7YS09MSlvLnN0ZXAobC5zdGVwc1thXS5pbnZlcnQobC5kb2NzW2FdKSk7aWYoaS50ZXh0KXtjb25zdCBhPW8uZG9jLnJlc29sdmUoaS5mcm9tKS5tYXJrcygpO28ucmVwbGFjZVdpdGgoaS5mcm9tLGkudG8sbi5zY2hlbWEudGV4dChpLnRleHQsYSkpfWVsc2Ugby5kZWxldGUoaS5mcm9tLGkudG8pfXJldHVybiEwfX1yZXR1cm4hMX0sQ3k9KCk9Pih7dHI6bixkaXNwYXRjaDplfSk9Pntjb25zdHtzZWxlY3Rpb246dH09bix7ZW1wdHk6cixyYW5nZXM6c309dDtyZXR1cm4gcnx8ZSYmcy5mb3JFYWNoKGk9PntuLnJlbW92ZU1hcmsoaS4kZnJvbS5wb3MsaS4kdG8ucG9zKX0pLCEwfSxUeT0obixlPXt9KT0+KHt0cjp0LHN0YXRlOnIsZGlzcGF0Y2g6c30pPT57dmFyIGk7Y29uc3R7ZXh0ZW5kRW1wdHlNYXJrUmFuZ2U6bz0hMX09ZSx7c2VsZWN0aW9uOmx9PXQsYT1hdChuLHIuc2NoZW1hKSx7JGZyb206YyxlbXB0eTp1LHJhbmdlczpkfT1sO2lmKCFzKXJldHVybiEwO2lmKHUmJm8pe2xldHtmcm9tOmgsdG86Zn09bDtjb25zdCBwPShpPWMubWFya3MoKS5maW5kKGc9PmcudHlwZT09PWEpKT09bnVsbD92b2lkIDA6aS5hdHRycyxtPURvKGMsYSxwKTttJiYoaD1tLmZyb20sZj1tLnRvKSx0LnJlbW92ZU1hcmsoaCxmLGEpfWVsc2UgZC5mb3JFYWNoKGg9Pnt0LnJlbW92ZU1hcmsoaC4kZnJvbS5wb3MsaC4kdG8ucG9zLGEpfSk7cmV0dXJuIHQucmVtb3ZlU3RvcmVkTWFyayhhKSwhMH0sTXk9bj0+KHt0cjplLHN0YXRlOnQsZGlzcGF0Y2g6cn0pPT57Y29uc3R7c2VsZWN0aW9uOnN9PXQ7bGV0IGksbztyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIiPyhpPW4sbz1uKTpuJiYiZnJvbSJpbiBuJiYidG8iaW4gbj8oaT1uLmZyb20sbz1uLnRvKTooaT1zLmZyb20sbz1zLnRvKSxyJiZlLmRvYy5ub2Rlc0JldHdlZW4oaSxvLChsLGEpPT57aWYobC5pc1RleHQpcmV0dXJuO2NvbnN0IGM9ey4uLmwuYXR0cnN9O2RlbGV0ZSBjLmRpcixlLnNldE5vZGVNYXJrdXAoYSx2b2lkIDAsYyl9KSwhMH0sRXk9KG4sZT17fSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnN9KT0+e2xldCBpPW51bGwsbz1udWxsO2NvbnN0IGw9X3ModHlwZW9mIG49PSJzdHJpbmciP246bi5uYW1lLHIuc2NoZW1hKTtpZighbClyZXR1cm4hMTtsPT09Im5vZGUiJiYoaT1pZShuLHIuc2NoZW1hKSksbD09PSJtYXJrIiYmKG89YXQobixyLnNjaGVtYSkpO2xldCBhPSExO3JldHVybiB0LnNlbGVjdGlvbi5yYW5nZXMuZm9yRWFjaChjPT57Y29uc3QgdT1jLiRmcm9tLnBvcyxkPWMuJHRvLnBvcztsZXQgaCxmLHAsbTt0LnNlbGVjdGlvbi5lbXB0eT9yLmRvYy5ub2Rlc0JldHdlZW4odSxkLChnLHkpPT57aSYmaT09PWcudHlwZSYmKGE9ITAscD1NYXRoLm1heCh5LHUpLG09TWF0aC5taW4oeStnLm5vZGVTaXplLGQpLGg9eSxmPWcpfSk6ci5kb2Mubm9kZXNCZXR3ZWVuKHUsZCwoZyx5KT0+e3k8dSYmaSYmaT09PWcudHlwZSYmKGE9ITAscD1NYXRoLm1heCh5LHUpLG09TWF0aC5taW4oeStnLm5vZGVTaXplLGQpLGg9eSxmPWcpLHk+PXUmJnk8PWQmJihpJiZpPT09Zy50eXBlJiYoYT0hMCxzJiZ0LnNldE5vZGVNYXJrdXAoeSx2b2lkIDAsey4uLmcuYXR0cnMsLi4uZX0pKSxvJiZnLm1hcmtzLmxlbmd0aCYmZy5tYXJrcy5mb3JFYWNoKGs9PntpZihvPT09ay50eXBlJiYoYT0hMCxzKSl7Y29uc3QgYj1NYXRoLm1heCh5LHUpLHc9TWF0aC5taW4oeStnLm5vZGVTaXplLGQpO3QuYWRkTWFyayhiLHcsby5jcmVhdGUoey4uLmsuYXR0cnMsLi4uZX0pKX19KSl9KSxmJiYoaCE9PXZvaWQgMCYmcyYmdC5zZXROb2RlTWFya3VwKGgsdm9pZCAwLHsuLi5mLmF0dHJzLC4uLmV9KSxvJiZmLm1hcmtzLmxlbmd0aCYmZi5tYXJrcy5mb3JFYWNoKGc9PntvPT09Zy50eXBlJiZzJiZ0LmFkZE1hcmsocCxtLG8uY3JlYXRlKHsuLi5nLmF0dHJzLC4uLmV9KSl9KSl9KSxhfSxBeT0obixlPXt9KT0+KHtzdGF0ZTp0LGRpc3BhdGNoOnJ9KT0+e2NvbnN0IHM9aWUobix0LnNjaGVtYSk7cmV0dXJuIGVwKHMsZSkodCxyKX0sT3k9KG4sZT17fSk9Pih7c3RhdGU6dCxkaXNwYXRjaDpyfSk9Pntjb25zdCBzPWllKG4sdC5zY2hlbWEpO3JldHVybiB0cChzLGUpKHQscil9LE55PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jYWxsYmFja3M9e319b24obixlKXtyZXR1cm4gdGhpcy5jYWxsYmFja3Nbbl18fCh0aGlzLmNhbGxiYWNrc1tuXT1bXSksdGhpcy5jYWxsYmFja3Nbbl0ucHVzaChlKSx0aGlzfWVtaXQobiwuLi5lKXtjb25zdCB0PXRoaXMuY2FsbGJhY2tzW25dO3JldHVybiB0JiZ0LmZvckVhY2gocj0+ci5hcHBseSh0aGlzLGUpKSx0aGlzfW9mZihuLGUpe2NvbnN0IHQ9dGhpcy5jYWxsYmFja3Nbbl07cmV0dXJuIHQmJihlP3RoaXMuY2FsbGJhY2tzW25dPXQuZmlsdGVyKHI9PnIhPT1lKTpkZWxldGUgdGhpcy5jYWxsYmFja3Nbbl0pLHRoaXN9b25jZShuLGUpe2NvbnN0IHQ9KC4uLnIpPT57dGhpcy5vZmYobix0KSxlLmFwcGx5KHRoaXMscil9O3JldHVybiB0aGlzLm9uKG4sdCl9cmVtb3ZlQWxsTGlzdGVuZXJzKCl7dGhpcy5jYWxsYmFja3M9e319fSxVcz1jbGFzc3tjb25zdHJ1Y3RvcihuKXt2YXIgZTt0aGlzLmZpbmQ9bi5maW5kLHRoaXMuaGFuZGxlcj1uLmhhbmRsZXIsdGhpcy51bmRvYWJsZT0oZT1uLnVuZG9hYmxlKSE9bnVsbD9lOiEwfX0sUnk9KG4sZSk9PntpZihJbyhlKSlyZXR1cm4gZS5leGVjKG4pO2NvbnN0IHQ9ZShuKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCByPVt0LnRleHRdO3JldHVybiByLmluZGV4PXQuaW5kZXgsci5pbnB1dD1uLHIuZGF0YT10LmRhdGEsdC5yZXBsYWNlV2l0aCYmKHQudGV4dC5pbmNsdWRlcyh0LnJlcGxhY2VXaXRoKSxyLnB1c2godC5yZXBsYWNlV2l0aCkpLHJ9O2Z1bmN0aW9uIGdyKG4pe3ZhciBlO2NvbnN0e2VkaXRvcjp0LGZyb206cix0bzpzLHRleHQ6aSxydWxlczpvLHBsdWdpbjpsfT1uLHt2aWV3OmF9PXQ7aWYoYS5jb21wb3NpbmcpcmV0dXJuITE7Y29uc3QgYz1hLnN0YXRlLmRvYy5yZXNvbHZlKHIpO2lmKGMucGFyZW50LnR5cGUuc3BlYy5jb2RlfHwoZT1jLm5vZGVCZWZvcmV8fGMubm9kZUFmdGVyKSE9bnVsbCYmZS5tYXJrcy5maW5kKGg9PmgudHlwZS5zcGVjLmNvZGUpKXJldHVybiExO2xldCB1PSExO2NvbnN0IGQ9bnkoYykraTtyZXR1cm4gby5mb3JFYWNoKGg9PntpZih1KXJldHVybjtjb25zdCBmPVJ5KGQsaC5maW5kKTtpZighZilyZXR1cm47Y29uc3QgcD1hLnN0YXRlLnRyLG09JHMoe3N0YXRlOmEuc3RhdGUsdHJhbnNhY3Rpb246cH0pLGc9e2Zyb206ci0oZlswXS5sZW5ndGgtaS5sZW5ndGgpLHRvOnN9LHtjb21tYW5kczp5LGNoYWluOmssY2FuOmJ9PW5ldyBCcyh7ZWRpdG9yOnQsc3RhdGU6bX0pO2guaGFuZGxlcih7c3RhdGU6bSxyYW5nZTpnLG1hdGNoOmYsY29tbWFuZHM6eSxjaGFpbjprLGNhbjpifSk9PT1udWxsfHwhcC5zdGVwcy5sZW5ndGh8fChoLnVuZG9hYmxlJiZwLnNldE1ldGEobCx7dHJhbnNmb3JtOnAsZnJvbTpyLHRvOnMsdGV4dDppfSksYS5kaXNwYXRjaChwKSx1PSEwKX0pLHV9ZnVuY3Rpb24gSXkobil7Y29uc3R7ZWRpdG9yOmUscnVsZXM6dH09bixyPW5ldyBHKHtzdGF0ZTp7aW5pdCgpe3JldHVybiBudWxsfSxhcHBseShzLGksbyl7Y29uc3QgbD1zLmdldE1ldGEocik7aWYobClyZXR1cm4gbDtjb25zdCBhPXMuZ2V0TWV0YSgiYXBwbHlJbnB1dFJ1bGVzIik7cmV0dXJuIGEmJnNldFRpbWVvdXQoKCk9PntsZXR7dGV4dDp1fT1hO3R5cGVvZiB1PT0ic3RyaW5nIj91PXU6dT1QbyhTLmZyb20odSksby5zY2hlbWEpO2NvbnN0e2Zyb206ZH09YSxoPWQrdS5sZW5ndGg7Z3Ioe2VkaXRvcjplLGZyb206ZCx0bzpoLHRleHQ6dSxydWxlczp0LHBsdWdpbjpyfSl9KSxzLnNlbGVjdGlvblNldHx8cy5kb2NDaGFuZ2VkP251bGw6aX19LHByb3BzOntoYW5kbGVUZXh0SW5wdXQocyxpLG8sbCl7cmV0dXJuIGdyKHtlZGl0b3I6ZSxmcm9tOmksdG86byx0ZXh0OmwscnVsZXM6dCxwbHVnaW46cn0pfSxoYW5kbGVET01FdmVudHM6e2NvbXBvc2l0aW9uZW5kOnM9PihzZXRUaW1lb3V0KCgpPT57Y29uc3R7JGN1cnNvcjppfT1zLnN0YXRlLnNlbGVjdGlvbjtpJiZncih7ZWRpdG9yOmUsZnJvbTppLnBvcyx0bzppLnBvcyx0ZXh0OiIiLHJ1bGVzOnQscGx1Z2luOnJ9KX0pLCExKX0saGFuZGxlS2V5RG93bihzLGkpe2lmKGkua2V5IT09IkVudGVyIilyZXR1cm4hMTtjb25zdHskY3Vyc29yOm99PXMuc3RhdGUuc2VsZWN0aW9uO3JldHVybiBvP2dyKHtlZGl0b3I6ZSxmcm9tOm8ucG9zLHRvOm8ucG9zLHRleHQ6YApgLHJ1bGVzOnQscGx1Z2luOnJ9KTohMX19LGlzSW5wdXRSdWxlczohMH0pO3JldHVybiByfWZ1bmN0aW9uIER5KG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobikuc2xpY2UoOCwtMSl9ZnVuY3Rpb24geXIobil7cmV0dXJuIER5KG4pIT09Ik9iamVjdCI/ITE6bi5jb25zdHJ1Y3Rvcj09PU9iamVjdCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pPT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiB1ZChuLGUpe2NvbnN0IHQ9ey4uLm59O3JldHVybiB5cihuKSYmeXIoZSkmJk9iamVjdC5rZXlzKGUpLmZvckVhY2gocj0+e3lyKGVbcl0pJiZ5cihuW3JdKT90W3JdPXVkKG5bcl0sZVtyXSk6dFtyXT1lW3JdfSksdH12YXIgX289Y2xhc3N7Y29uc3RydWN0b3Iobj17fSl7dGhpcy50eXBlPSJleHRlbmRhYmxlIix0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGQ9bnVsbCx0aGlzLm5hbWU9IiIsdGhpcy5jb25maWc9e25hbWU6dGhpcy5uYW1lfSx0aGlzLmNvbmZpZz17Li4udGhpcy5jb25maWcsLi4ubn0sdGhpcy5uYW1lPXRoaXMuY29uZmlnLm5hbWV9Z2V0IG9wdGlvbnMoKXtyZXR1cm57Li4uVShBKHRoaXMsImFkZE9wdGlvbnMiLHtuYW1lOnRoaXMubmFtZX0pKXx8e319fWdldCBzdG9yYWdlKCl7cmV0dXJuey4uLlUoQSh0aGlzLCJhZGRTdG9yYWdlIix7bmFtZTp0aGlzLm5hbWUsb3B0aW9uczp0aGlzLm9wdGlvbnN9KSl8fHt9fX1jb25maWd1cmUobj17fSl7Y29uc3QgZT10aGlzLmV4dGVuZCh7Li4udGhpcy5jb25maWcsYWRkT3B0aW9uczooKT0+dWQodGhpcy5vcHRpb25zLG4pfSk7cmV0dXJuIGUubmFtZT10aGlzLm5hbWUsZS5wYXJlbnQ9dGhpcy5wYXJlbnQsZX1leHRlbmQobj17fSl7Y29uc3QgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7Li4udGhpcy5jb25maWcsLi4ubn0pO3JldHVybiBlLnBhcmVudD10aGlzLHRoaXMuY2hpbGQ9ZSxlLm5hbWU9Im5hbWUiaW4gbj9uLm5hbWU6ZS5wYXJlbnQubmFtZSxlfX0sSnQ9Y2xhc3MgZGQgZXh0ZW5kcyBfb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy50eXBlPSJtYXJrIn1zdGF0aWMgY3JlYXRlKGU9e30pe2NvbnN0IHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSgpOmU7cmV0dXJuIG5ldyBkZCh0KX1zdGF0aWMgaGFuZGxlRXhpdCh7ZWRpdG9yOmUsbWFyazp0fSl7Y29uc3R7dHI6cn09ZS5zdGF0ZSxzPWUuc3RhdGUuc2VsZWN0aW9uLiRmcm9tO2lmKHMucG9zPT09cy5lbmQoKSl7Y29uc3Qgbz1zLm1hcmtzKCk7aWYoISEhby5maW5kKGM9PmM/LnR5cGUubmFtZT09PXQubmFtZSkpcmV0dXJuITE7Y29uc3QgYT1vLmZpbmQoYz0+Yz8udHlwZS5uYW1lPT09dC5uYW1lKTtyZXR1cm4gYSYmci5yZW1vdmVTdG9yZWRNYXJrKGEpLHIuaW5zZXJ0VGV4dCgiICIscy5wb3MpLGUudmlldy5kaXNwYXRjaChyKSwhMH1yZXR1cm4hMX1jb25maWd1cmUoZSl7cmV0dXJuIHN1cGVyLmNvbmZpZ3VyZShlKX1leHRlbmQoZSl7Y29uc3QgdD10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKCk6ZTtyZXR1cm4gc3VwZXIuZXh0ZW5kKHQpfX07ZnVuY3Rpb24gTHkobil7cmV0dXJuIHR5cGVvZiBuPT0ibnVtYmVyIn12YXIgUHk9Y2xhc3N7Y29uc3RydWN0b3Iobil7dGhpcy5maW5kPW4uZmluZCx0aGlzLmhhbmRsZXI9bi5oYW5kbGVyfX0senk9KG4sZSx0KT0+e2lmKElvKGUpKXJldHVyblsuLi5uLm1hdGNoQWxsKGUpXTtjb25zdCByPWUobix0KTtyZXR1cm4gcj9yLm1hcChzPT57Y29uc3QgaT1bcy50ZXh0XTtyZXR1cm4gaS5pbmRleD1zLmluZGV4LGkuaW5wdXQ9bixpLmRhdGE9cy5kYXRhLHMucmVwbGFjZVdpdGgmJihzLnRleHQuaW5jbHVkZXMocy5yZXBsYWNlV2l0aCksaS5wdXNoKHMucmVwbGFjZVdpdGgpKSxpfSk6W119O2Z1bmN0aW9uICR5KG4pe2NvbnN0e2VkaXRvcjplLHN0YXRlOnQsZnJvbTpyLHRvOnMscnVsZTppLHBhc3RlRXZlbnQ6byxkcm9wRXZlbnQ6bH09bix7Y29tbWFuZHM6YSxjaGFpbjpjLGNhbjp1fT1uZXcgQnMoe2VkaXRvcjplLHN0YXRlOnR9KSxkPVtdO3JldHVybiB0LmRvYy5ub2Rlc0JldHdlZW4ocixzLChmLHApPT57dmFyIG0sZyx5LGssYjtpZigoZz0obT1mLnR5cGUpPT1udWxsP3ZvaWQgMDptLnNwZWMpIT1udWxsJiZnLmNvZGV8fCEoZi5pc1RleHR8fGYuaXNUZXh0YmxvY2t8fGYuaXNJbmxpbmUpKXJldHVybjtjb25zdCB3PShiPShrPSh5PWYuY29udGVudCk9PW51bGw/dm9pZCAwOnkuc2l6ZSkhPW51bGw/azpmLm5vZGVTaXplKSE9bnVsbD9iOjAseD1NYXRoLm1heChyLHApLHY9TWF0aC5taW4ocyxwK3cpO2lmKHg+PXYpcmV0dXJuO2NvbnN0IEM9Zi5pc1RleHQ/Zi50ZXh0fHwiIjpmLnRleHRCZXR3ZWVuKHgtcCx2LXAsdm9pZCAwLCLvv7wiKTt6eShDLGkuZmluZCxvKS5mb3JFYWNoKFI9PntpZihSLmluZGV4PT09dm9pZCAwKXJldHVybjtjb25zdCBPPXgrUi5pbmRleCsxLFA9TytSWzBdLmxlbmd0aCxGPXtmcm9tOnQudHIubWFwcGluZy5tYXAoTyksdG86dC50ci5tYXBwaW5nLm1hcChQKX0sXz1pLmhhbmRsZXIoe3N0YXRlOnQscmFuZ2U6RixtYXRjaDpSLGNvbW1hbmRzOmEsY2hhaW46YyxjYW46dSxwYXN0ZUV2ZW50Om8sZHJvcEV2ZW50Omx9KTtkLnB1c2goXyl9KX0pLGQuZXZlcnkoZj0+ZiE9PW51bGwpfXZhciBrcj1udWxsLEJ5PW49Pnt2YXIgZTtjb25zdCB0PW5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiLHtjbGlwYm9hcmREYXRhOm5ldyBEYXRhVHJhbnNmZXJ9KTtyZXR1cm4oZT10LmNsaXBib2FyZERhdGEpPT1udWxsfHxlLnNldERhdGEoInRleHQvaHRtbCIsbiksdH07ZnVuY3Rpb24gX3kobil7Y29uc3R7ZWRpdG9yOmUscnVsZXM6dH09bjtsZXQgcj1udWxsLHM9ITEsaT0hMSxvPXR5cGVvZiBDbGlwYm9hcmRFdmVudDwidSI/bmV3IENsaXBib2FyZEV2ZW50KCJwYXN0ZSIpOm51bGwsbDt0cnl7bD10eXBlb2YgRHJhZ0V2ZW50PCJ1Ij9uZXcgRHJhZ0V2ZW50KCJkcm9wIik6bnVsbH1jYXRjaHtsPW51bGx9Y29uc3QgYT0oe3N0YXRlOnUsZnJvbTpkLHRvOmgscnVsZTpmLHBhc3RlRXZ0OnB9KT0+e2NvbnN0IG09dS50cixnPSRzKHtzdGF0ZTp1LHRyYW5zYWN0aW9uOm19KTtpZighKCEkeSh7ZWRpdG9yOmUsc3RhdGU6Zyxmcm9tOk1hdGgubWF4KGQtMSwwKSx0bzpoLmItMSxydWxlOmYscGFzdGVFdmVudDpwLGRyb3BFdmVudDpsfSl8fCFtLnN0ZXBzLmxlbmd0aCkpe3RyeXtsPXR5cGVvZiBEcmFnRXZlbnQ8InUiP25ldyBEcmFnRXZlbnQoImRyb3AiKTpudWxsfWNhdGNoe2w9bnVsbH1yZXR1cm4gbz10eXBlb2YgQ2xpcGJvYXJkRXZlbnQ8InUiP25ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKTpudWxsLG19fTtyZXR1cm4gdC5tYXAodT0+bmV3IEcoe3ZpZXcoZCl7Y29uc3QgaD1wPT57dmFyIG07cj0obT1kLmRvbS5wYXJlbnRFbGVtZW50KSE9bnVsbCYmbS5jb250YWlucyhwLnRhcmdldCk/ZC5kb20ucGFyZW50RWxlbWVudDpudWxsLHImJihrcj1lKX0sZj0oKT0+e2tyJiYoa3I9bnVsbCl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsZikse2Rlc3Ryb3koKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixoKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsZil9fX0scHJvcHM6e2hhbmRsZURPTUV2ZW50czp7ZHJvcDooZCxoKT0+e2lmKGk9cj09PWQuZG9tLnBhcmVudEVsZW1lbnQsbD1oLCFpKXtjb25zdCBmPWtyO2Y/LmlzRWRpdGFibGUmJnNldFRpbWVvdXQoKCk9Pntjb25zdCBwPWYuc3RhdGUuc2VsZWN0aW9uO3AmJmYuY29tbWFuZHMuZGVsZXRlUmFuZ2Uoe2Zyb206cC5mcm9tLHRvOnAudG99KX0sMTApfXJldHVybiExfSxwYXN0ZTooZCxoKT0+e3ZhciBmO2NvbnN0IHA9KGY9aC5jbGlwYm9hcmREYXRhKT09bnVsbD92b2lkIDA6Zi5nZXREYXRhKCJ0ZXh0L2h0bWwiKTtyZXR1cm4gbz1oLHM9ISFwPy5pbmNsdWRlcygiZGF0YS1wbS1zbGljZSIpLCExfX19LGFwcGVuZFRyYW5zYWN0aW9uOihkLGgsZik9Pntjb25zdCBwPWRbMF0sbT1wLmdldE1ldGEoInVpRXZlbnQiKT09PSJwYXN0ZSImJiFzLGc9cC5nZXRNZXRhKCJ1aUV2ZW50Iik9PT0iZHJvcCImJiFpLHk9cC5nZXRNZXRhKCJhcHBseVBhc3RlUnVsZXMiKSxrPSEheTtpZighbSYmIWcmJiFrKXJldHVybjtpZihrKXtsZXR7dGV4dDp4fT15O3R5cGVvZiB4PT0ic3RyaW5nIj94PXg6eD1QbyhTLmZyb20oeCksZi5zY2hlbWEpO2NvbnN0e2Zyb206dn09eSxDPXYreC5sZW5ndGgsTT1CeSh4KTtyZXR1cm4gYSh7cnVsZTp1LHN0YXRlOmYsZnJvbTp2LHRvOntiOkN9LHBhc3RlRXZ0Ok19KX1jb25zdCBiPWguZG9jLmNvbnRlbnQuZmluZERpZmZTdGFydChmLmRvYy5jb250ZW50KSx3PWguZG9jLmNvbnRlbnQuZmluZERpZmZFbmQoZi5kb2MuY29udGVudCk7aWYoISghTHkoYil8fCF3fHxiPT09dy5iKSlyZXR1cm4gYSh7cnVsZTp1LHN0YXRlOmYsZnJvbTpiLHRvOncscGFzdGVFdnQ6b30pfX0pKX12YXIganM9Y2xhc3N7Y29uc3RydWN0b3IobixlKXt0aGlzLnNwbGl0dGFibGVNYXJrcz1bXSx0aGlzLmVkaXRvcj1lLHRoaXMuYmFzZUV4dGVuc2lvbnM9bix0aGlzLmV4dGVuc2lvbnM9em8obiksdGhpcy5zY2hlbWE9dGQodGhpcy5leHRlbnNpb25zLGUpLHRoaXMuc2V0dXBFeHRlbnNpb25zKCl9Z2V0IGNvbW1hbmRzKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5yZWR1Y2UoKG4sZSk9Pntjb25zdCB0PXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbZS5uYW1lXSxlZGl0b3I6dGhpcy5lZGl0b3IsdHlwZTpibihlLm5hbWUsdGhpcy5zY2hlbWEpfSxyPUEoZSwiYWRkQ29tbWFuZHMiLHQpO3JldHVybiByP3suLi5uLC4uLnIoKX06bn0se30pfWdldCBwbHVnaW5zKCl7Y29uc3R7ZWRpdG9yOm59PXRoaXM7cmV0dXJuIF9uKFsuLi50aGlzLmV4dGVuc2lvbnNdLnJldmVyc2UoKSkuZmxhdE1hcChyPT57Y29uc3Qgcz17bmFtZTpyLm5hbWUsb3B0aW9uczpyLm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3IubmFtZV0sZWRpdG9yOm4sdHlwZTpibihyLm5hbWUsdGhpcy5zY2hlbWEpfSxpPVtdLG89QShyLCJhZGRLZXlib2FyZFNob3J0Y3V0cyIscyk7bGV0IGw9e307aWYoci50eXBlPT09Im1hcmsiJiZBKHIsImV4aXRhYmxlIixzKSYmKGwuQXJyb3dSaWdodD0oKT0+SnQuaGFuZGxlRXhpdCh7ZWRpdG9yOm4sbWFyazpyfSkpLG8pe2NvbnN0IGg9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG8oKSkubWFwKChbZixwXSk9PltmLCgpPT5wKHtlZGl0b3I6bn0pXSkpO2w9ey4uLmwsLi4uaH19Y29uc3QgYT1YbShsKTtpLnB1c2goYSk7Y29uc3QgYz1BKHIsImFkZElucHV0UnVsZXMiLHMpO2lmKHZhKHIsbi5vcHRpb25zLmVuYWJsZUlucHV0UnVsZXMpJiZjKXtjb25zdCBoPWMoKTtpZihoJiZoLmxlbmd0aCl7Y29uc3QgZj1JeSh7ZWRpdG9yOm4scnVsZXM6aH0pLHA9QXJyYXkuaXNBcnJheShmKT9mOltmXTtpLnB1c2goLi4ucCl9fWNvbnN0IHU9QShyLCJhZGRQYXN0ZVJ1bGVzIixzKTtpZih2YShyLG4ub3B0aW9ucy5lbmFibGVQYXN0ZVJ1bGVzKSYmdSl7Y29uc3QgaD11KCk7aWYoaCYmaC5sZW5ndGgpe2NvbnN0IGY9X3koe2VkaXRvcjpuLHJ1bGVzOmh9KTtpLnB1c2goLi4uZil9fWNvbnN0IGQ9QShyLCJhZGRQcm9zZU1pcnJvclBsdWdpbnMiLHMpO2lmKGQpe2NvbnN0IGg9ZCgpO2kucHVzaCguLi5oKX1yZXR1cm4gaX0pfWdldCBhdHRyaWJ1dGVzKCl7cmV0dXJuIGVkKHRoaXMuZXh0ZW5zaW9ucyl9Z2V0IG5vZGVWaWV3cygpe2NvbnN0e2VkaXRvcjpufT10aGlzLHtub2RlRXh0ZW5zaW9uczplfT1obih0aGlzLmV4dGVuc2lvbnMpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZS5maWx0ZXIodD0+ISFBKHQsImFkZE5vZGVWaWV3IikpLm1hcCh0PT57Y29uc3Qgcj10aGlzLmF0dHJpYnV0ZXMuZmlsdGVyKGE9PmEudHlwZT09PXQubmFtZSkscz17bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOm4sdHlwZTppZSh0Lm5hbWUsdGhpcy5zY2hlbWEpfSxpPUEodCwiYWRkTm9kZVZpZXciLHMpO2lmKCFpKXJldHVybltdO2NvbnN0IG89aSgpO2lmKCFvKXJldHVybltdO2NvbnN0IGw9KGEsYyx1LGQsaCk9Pntjb25zdCBmPWVyKGEscik7cmV0dXJuIG8oe25vZGU6YSx2aWV3OmMsZ2V0UG9zOnUsZGVjb3JhdGlvbnM6ZCxpbm5lckRlY29yYXRpb25zOmgsZWRpdG9yOm4sZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6Zn0pfTtyZXR1cm5bdC5uYW1lLGxdfSkpfWRpc3BhdGNoVHJhbnNhY3Rpb24obil7Y29uc3R7ZWRpdG9yOmV9PXRoaXM7cmV0dXJuIF9uKFsuLi50aGlzLmV4dGVuc2lvbnNdLnJldmVyc2UoKSkucmVkdWNlUmlnaHQoKHIscyk9Pntjb25zdCBpPXtuYW1lOnMubmFtZSxvcHRpb25zOnMub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2Vbcy5uYW1lXSxlZGl0b3I6ZSx0eXBlOmJuKHMubmFtZSx0aGlzLnNjaGVtYSl9LG89QShzLCJkaXNwYXRjaFRyYW5zYWN0aW9uIixpKTtyZXR1cm4gbz9sPT57by5jYWxsKGkse3RyYW5zYWN0aW9uOmwsbmV4dDpyfSl9OnJ9LG4pfXRyYW5zZm9ybVBhc3RlZEhUTUwobil7Y29uc3R7ZWRpdG9yOmV9PXRoaXM7cmV0dXJuIF9uKFsuLi50aGlzLmV4dGVuc2lvbnNdKS5yZWR1Y2UoKHIscyk9Pntjb25zdCBpPXtuYW1lOnMubmFtZSxvcHRpb25zOnMub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2Vbcy5uYW1lXSxlZGl0b3I6ZSx0eXBlOmJuKHMubmFtZSx0aGlzLnNjaGVtYSl9LG89QShzLCJ0cmFuc2Zvcm1QYXN0ZWRIVE1MIixpKTtyZXR1cm4gbz8obCxhKT0+e2NvbnN0IGM9cihsLGEpO3JldHVybiBvLmNhbGwoaSxjKX06cn0sbnx8KHI9PnIpKX1nZXQgbWFya1ZpZXdzKCl7Y29uc3R7ZWRpdG9yOm59PXRoaXMse21hcmtFeHRlbnNpb25zOmV9PWhuKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlLmZpbHRlcih0PT4hIUEodCwiYWRkTWFya1ZpZXciKSkubWFwKHQ9Pntjb25zdCByPXRoaXMuYXR0cmlidXRlcy5maWx0ZXIobD0+bC50eXBlPT09dC5uYW1lKSxzPXtuYW1lOnQubmFtZSxvcHRpb25zOnQub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbdC5uYW1lXSxlZGl0b3I6bix0eXBlOmF0KHQubmFtZSx0aGlzLnNjaGVtYSl9LGk9QSh0LCJhZGRNYXJrVmlldyIscyk7aWYoIWkpcmV0dXJuW107Y29uc3Qgbz0obCxhLGMpPT57Y29uc3QgdT1lcihsLHIpO3JldHVybiBpKCkoe21hcms6bCx2aWV3OmEsaW5saW5lOmMsZWRpdG9yOm4sZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6dSx1cGRhdGVBdHRyaWJ1dGVzOmQ9Pnt0ayhsLG4sZCl9fSl9O3JldHVyblt0Lm5hbWUsb119KSl9c2V0dXBFeHRlbnNpb25zKCl7Y29uc3Qgbj10aGlzLmV4dGVuc2lvbnM7dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZT1PYmplY3QuZnJvbUVudHJpZXMobi5tYXAoZT0+W2UubmFtZSxlLnN0b3JhZ2VdKSksbi5mb3JFYWNoKGU9Pnt2YXIgdDtjb25zdCByPXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbZS5uYW1lXSxlZGl0b3I6dGhpcy5lZGl0b3IsdHlwZTpibihlLm5hbWUsdGhpcy5zY2hlbWEpfTtlLnR5cGU9PT0ibWFyayImJigodD1VKEEoZSwia2VlcE9uU3BsaXQiLHIpKSk9PW51bGx8fHQpJiZ0aGlzLnNwbGl0dGFibGVNYXJrcy5wdXNoKGUubmFtZSk7Y29uc3Qgcz1BKGUsIm9uQmVmb3JlQ3JlYXRlIixyKSxpPUEoZSwib25DcmVhdGUiLHIpLG89QShlLCJvblVwZGF0ZSIsciksbD1BKGUsIm9uU2VsZWN0aW9uVXBkYXRlIixyKSxhPUEoZSwib25UcmFuc2FjdGlvbiIsciksYz1BKGUsIm9uRm9jdXMiLHIpLHU9QShlLCJvbkJsdXIiLHIpLGQ9QShlLCJvbkRlc3Ryb3kiLHIpO3MmJnRoaXMuZWRpdG9yLm9uKCJiZWZvcmVDcmVhdGUiLHMpLGkmJnRoaXMuZWRpdG9yLm9uKCJjcmVhdGUiLGkpLG8mJnRoaXMuZWRpdG9yLm9uKCJ1cGRhdGUiLG8pLGwmJnRoaXMuZWRpdG9yLm9uKCJzZWxlY3Rpb25VcGRhdGUiLGwpLGEmJnRoaXMuZWRpdG9yLm9uKCJ0cmFuc2FjdGlvbiIsYSksYyYmdGhpcy5lZGl0b3Iub24oImZvY3VzIixjKSx1JiZ0aGlzLmVkaXRvci5vbigiYmx1ciIsdSksZCYmdGhpcy5lZGl0b3Iub24oImRlc3Ryb3kiLGQpfSl9fTtqcy5yZXNvbHZlPXpvO2pzLnNvcnQ9X247anMuZmxhdHRlbj1Gczt2YXIgSHk9e307Um8oSHkse0NsaXBib2FyZFRleHRTZXJpYWxpemVyOigpPT5mZCxDb21tYW5kczooKT0+cGQsRGVsZXRlOigpPT5tZCxEcm9wOigpPT5nZCxFZGl0YWJsZTooKT0+eWQsRm9jdXNFdmVudHM6KCk9PmJkLEtleW1hcDooKT0+eGQsUGFzdGU6KCk9PndkLFRhYmluZGV4OigpPT52ZCxUZXh0RGlyZWN0aW9uOigpPT5TZCxmb2N1c0V2ZW50c1BsdWdpbktleTooKT0+a2R9KTt2YXIgdGU9Y2xhc3MgaGQgZXh0ZW5kcyBfb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy50eXBlPSJleHRlbnNpb24ifXN0YXRpYyBjcmVhdGUoZT17fSl7Y29uc3QgdD10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKCk6ZTtyZXR1cm4gbmV3IGhkKHQpfWNvbmZpZ3VyZShlKXtyZXR1cm4gc3VwZXIuY29uZmlndXJlKGUpfWV4dGVuZChlKXtjb25zdCB0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTplO3JldHVybiBzdXBlci5leHRlbmQodCl9fSxmZD10ZS5jcmVhdGUoe25hbWU6ImNsaXBib2FyZFRleHRTZXJpYWxpemVyIixhZGRPcHRpb25zKCl7cmV0dXJue2Jsb2NrU2VwYXJhdG9yOnZvaWQgMH19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjbGlwYm9hcmRUZXh0U2VyaWFsaXplciIpLHByb3BzOntjbGlwYm9hcmRUZXh0U2VyaWFsaXplcjooKT0+e2NvbnN0e2VkaXRvcjpufT10aGlzLHtzdGF0ZTplLHNjaGVtYTp0fT1uLHtkb2M6cixzZWxlY3Rpb246c309ZSx7cmFuZ2VzOml9PXMsbz1NYXRoLm1pbiguLi5pLm1hcCh1PT51LiRmcm9tLnBvcykpLGw9TWF0aC5tYXgoLi4uaS5tYXAodT0+dS4kdG8ucG9zKSksYT0kbyh0KTtyZXR1cm4gbmQocix7ZnJvbTpvLHRvOmx9LHsuLi50aGlzLm9wdGlvbnMuYmxvY2tTZXBhcmF0b3IhPT12b2lkIDA/e2Jsb2NrU2VwYXJhdG9yOnRoaXMub3B0aW9ucy5ibG9ja1NlcGFyYXRvcn06e30sdGV4dFNlcmlhbGl6ZXJzOmF9KX19fSldfX0pLHBkPXRlLmNyZWF0ZSh7bmFtZToiY29tbWFuZHMiLGFkZENvbW1hbmRzKCl7cmV0dXJuey4uLiRlfX19KSxtZD10ZS5jcmVhdGUoe25hbWU6ImRlbGV0ZSIsb25VcGRhdGUoe3RyYW5zYWN0aW9uOm4sYXBwZW5kZWRUcmFuc2FjdGlvbnM6ZX0pe3ZhciB0LHIscztjb25zdCBpPSgpPT57dmFyIG8sbCxhLGM7aWYoKGM9KGE9KGw9KG89dGhpcy5lZGl0b3Iub3B0aW9ucy5jb3JlRXh0ZW5zaW9uT3B0aW9ucyk9PW51bGw/dm9pZCAwOm8uZGVsZXRlKT09bnVsbD92b2lkIDA6bC5maWx0ZXJUcmFuc2FjdGlvbik9PW51bGw/dm9pZCAwOmEuY2FsbChsLG4pKSE9bnVsbD9jOm4uZ2V0TWV0YSgieS1zeW5jJCIpKXJldHVybjtjb25zdCB1PVl1KG4uYmVmb3JlLFtuLC4uLmVdKTtpZCh1KS5mb3JFYWNoKGY9Pnt1Lm1hcHBpbmcubWFwUmVzdWx0KGYub2xkUmFuZ2UuZnJvbSkuZGVsZXRlZEFmdGVyJiZ1Lm1hcHBpbmcubWFwUmVzdWx0KGYub2xkUmFuZ2UudG8pLmRlbGV0ZWRCZWZvcmUmJnUuYmVmb3JlLm5vZGVzQmV0d2VlbihmLm9sZFJhbmdlLmZyb20sZi5vbGRSYW5nZS50bywocCxtKT0+e2NvbnN0IGc9bStwLm5vZGVTaXplLTIseT1mLm9sZFJhbmdlLmZyb208PW0mJmc8PWYub2xkUmFuZ2UudG87dGhpcy5lZGl0b3IuZW1pdCgiZGVsZXRlIix7dHlwZToibm9kZSIsbm9kZTpwLGZyb206bSx0bzpnLG5ld0Zyb206dS5tYXBwaW5nLm1hcChtKSxuZXdUbzp1Lm1hcHBpbmcubWFwKGcpLGRlbGV0ZWRSYW5nZTpmLm9sZFJhbmdlLG5ld1JhbmdlOmYubmV3UmFuZ2UscGFydGlhbDoheSxlZGl0b3I6dGhpcy5lZGl0b3IsdHJhbnNhY3Rpb246bixjb21iaW5lZFRyYW5zZm9ybTp1fSl9KX0pO2NvbnN0IGg9dS5tYXBwaW5nO3Uuc3RlcHMuZm9yRWFjaCgoZixwKT0+e3ZhciBtLGc7aWYoZiBpbnN0YW5jZW9mIFZlKXtjb25zdCB5PWguc2xpY2UocCkubWFwKGYuZnJvbSwtMSksaz1oLnNsaWNlKHApLm1hcChmLnRvKSxiPWguaW52ZXJ0KCkubWFwKHksLTEpLHc9aC5pbnZlcnQoKS5tYXAoaykseD15PjA/KG09dS5kb2Mubm9kZUF0KHktMSkpPT1udWxsP3ZvaWQgMDptLm1hcmtzLnNvbWUoQz0+Qy5lcShmLm1hcmspKTohMSx2PShnPXUuZG9jLm5vZGVBdChrKSk9PW51bGw/dm9pZCAwOmcubWFya3Muc29tZShDPT5DLmVxKGYubWFyaykpO3RoaXMuZWRpdG9yLmVtaXQoImRlbGV0ZSIse3R5cGU6Im1hcmsiLG1hcms6Zi5tYXJrLGZyb206Zi5mcm9tLHRvOmYudG8sZGVsZXRlZFJhbmdlOntmcm9tOmIsdG86d30sbmV3UmFuZ2U6e2Zyb206eSx0bzprfSxwYXJ0aWFsOiEhKHZ8fHgpLGVkaXRvcjp0aGlzLmVkaXRvcix0cmFuc2FjdGlvbjpuLGNvbWJpbmVkVHJhbnNmb3JtOnV9KX19KX07KHM9KHI9KHQ9dGhpcy5lZGl0b3Iub3B0aW9ucy5jb3JlRXh0ZW5zaW9uT3B0aW9ucyk9PW51bGw/dm9pZCAwOnQuZGVsZXRlKT09bnVsbD92b2lkIDA6ci5hc3luYyk9PW51bGx8fHM/c2V0VGltZW91dChpLDApOmkoKX19KSxnZD10ZS5jcmVhdGUoe25hbWU6ImRyb3AiLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJ0aXB0YXBEcm9wIikscHJvcHM6e2hhbmRsZURyb3A6KG4sZSx0LHIpPT57dGhpcy5lZGl0b3IuZW1pdCgiZHJvcCIse2VkaXRvcjp0aGlzLmVkaXRvcixldmVudDplLHNsaWNlOnQsbW92ZWQ6cn0pfX19KV19fSkseWQ9dGUuY3JlYXRlKHtuYW1lOiJlZGl0YWJsZSIsYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBHKHtrZXk6bmV3IHEoImVkaXRhYmxlIikscHJvcHM6e2VkaXRhYmxlOigpPT50aGlzLmVkaXRvci5vcHRpb25zLmVkaXRhYmxlfX0pXX19KSxrZD1uZXcgcSgiZm9jdXNFdmVudHMiKSxiZD10ZS5jcmVhdGUoe25hbWU6ImZvY3VzRXZlbnRzIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdHtlZGl0b3I6bn09dGhpcztyZXR1cm5bbmV3IEcoe2tleTprZCxwcm9wczp7aGFuZGxlRE9NRXZlbnRzOntmb2N1czooZSx0KT0+e24uaXNGb2N1c2VkPSEwO2NvbnN0IHI9bi5zdGF0ZS50ci5zZXRNZXRhKCJmb2N1cyIse2V2ZW50OnR9KS5zZXRNZXRhKCJhZGRUb0hpc3RvcnkiLCExKTtyZXR1cm4gZS5kaXNwYXRjaChyKSwhMX0sYmx1cjooZSx0KT0+e24uaXNGb2N1c2VkPSExO2NvbnN0IHI9bi5zdGF0ZS50ci5zZXRNZXRhKCJibHVyIix7ZXZlbnQ6dH0pLnNldE1ldGEoImFkZFRvSGlzdG9yeSIsITEpO3JldHVybiBlLmRpc3BhdGNoKHIpLCExfX19fSldfX0pLHhkPXRlLmNyZWF0ZSh7bmFtZToia2V5bWFwIixhZGRLZXlib2FyZFNob3J0Y3V0cygpe2NvbnN0IG49KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7Y29tbWFuZHM6b30pPT5bKCk9Pm8udW5kb0lucHV0UnVsZSgpLCgpPT5vLmNvbW1hbmQoKHt0cjpsfSk9Pntjb25zdHtzZWxlY3Rpb246YSxkb2M6Y309bCx7ZW1wdHk6dSwkYW5jaG9yOmR9PWEse3BvczpoLHBhcmVudDpmfT1kLHA9ZC5wYXJlbnQuaXNUZXh0YmxvY2smJmg+MD9sLmRvYy5yZXNvbHZlKGgtMSk6ZCxtPXAucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcsZz1kLnBvcy1kLnBhcmVudE9mZnNldCx5PW0mJnAucGFyZW50LmNoaWxkQ291bnQ9PT0xP2c9PT1kLnBvczpJLmF0U3RhcnQoYykuZnJvbT09PWg7cmV0dXJuIXV8fCFmLnR5cGUuaXNUZXh0YmxvY2t8fGYudGV4dENvbnRlbnQubGVuZ3RofHwheXx8eSYmZC5wYXJlbnQudHlwZS5uYW1lPT09InBhcmFncmFwaCI/ITE6by5jbGVhck5vZGVzKCl9KSwoKT0+by5kZWxldGVTZWxlY3Rpb24oKSwoKT0+by5qb2luQmFja3dhcmQoKSwoKT0+by5zZWxlY3ROb2RlQmFja3dhcmQoKV0pLGU9KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7Y29tbWFuZHM6b30pPT5bKCk9Pm8uZGVsZXRlU2VsZWN0aW9uKCksKCk9Pm8uZGVsZXRlQ3VycmVudE5vZGUoKSwoKT0+by5qb2luRm9yd2FyZCgpLCgpPT5vLnNlbGVjdE5vZGVGb3J3YXJkKCldKSxyPXtFbnRlcjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuZmlyc3QoKHtjb21tYW5kczpvfSk9PlsoKT0+by5uZXdsaW5lSW5Db2RlKCksKCk9Pm8uY3JlYXRlUGFyYWdyYXBoTmVhcigpLCgpPT5vLmxpZnRFbXB0eUJsb2NrKCksKCk9Pm8uc3BsaXRCbG9jaygpXSksIk1vZC1FbnRlciI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmV4aXRDb2RlKCksQmFja3NwYWNlOm4sIk1vZC1CYWNrc3BhY2UiOm4sIlNoaWZ0LUJhY2tzcGFjZSI6bixEZWxldGU6ZSwiTW9kLURlbGV0ZSI6ZSwiTW9kLWEiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZWxlY3RBbGwoKX0scz17Li4ucn0saT17Li4uciwiQ3RybC1oIjpuLCJBbHQtQmFja3NwYWNlIjpuLCJDdHJsLWQiOmUsIkN0cmwtQWx0LUJhY2tzcGFjZSI6ZSwiQWx0LURlbGV0ZSI6ZSwiQWx0LWQiOmUsIkN0cmwtYSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja1N0YXJ0KCksIkN0cmwtZSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja0VuZCgpfTtyZXR1cm4gR3IoKXx8UXUoKT9pOnN9LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjbGVhckRvY3VtZW50IiksYXBwZW5kVHJhbnNhY3Rpb246KG4sZSx0KT0+e2lmKG4uc29tZShtPT5tLmdldE1ldGEoImNvbXBvc2l0aW9uIikpKXJldHVybjtjb25zdCByPW4uc29tZShtPT5tLmRvY0NoYW5nZWQpJiYhZS5kb2MuZXEodC5kb2MpLHM9bi5zb21lKG09Pm0uZ2V0TWV0YSgicHJldmVudENsZWFyRG9jdW1lbnQiKSk7aWYoIXJ8fHMpcmV0dXJuO2NvbnN0e2VtcHR5OmksZnJvbTpvLHRvOmx9PWUuc2VsZWN0aW9uLGE9SS5hdFN0YXJ0KGUuZG9jKS5mcm9tLGM9SS5hdEVuZChlLmRvYykudG87aWYoaXx8IShvPT09YSYmbD09PWMpfHwhVnModC5kb2MpKXJldHVybjtjb25zdCBoPXQudHIsZj0kcyh7c3RhdGU6dCx0cmFuc2FjdGlvbjpofSkse2NvbW1hbmRzOnB9PW5ldyBCcyh7ZWRpdG9yOnRoaXMuZWRpdG9yLHN0YXRlOmZ9KTtpZihwLmNsZWFyTm9kZXMoKSwhIWguc3RlcHMubGVuZ3RoKXJldHVybiBofX0pXX19KSx3ZD10ZS5jcmVhdGUoe25hbWU6InBhc3RlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IEcoe2tleTpuZXcgcSgidGlwdGFwUGFzdGUiKSxwcm9wczp7aGFuZGxlUGFzdGU6KG4sZSx0KT0+e3RoaXMuZWRpdG9yLmVtaXQoInBhc3RlIix7ZWRpdG9yOnRoaXMuZWRpdG9yLGV2ZW50OmUsc2xpY2U6dH0pfX19KV19fSksdmQ9dGUuY3JlYXRlKHtuYW1lOiJ0YWJpbmRleCIsYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBHKHtrZXk6bmV3IHEoInRhYmluZGV4IikscHJvcHM6e2F0dHJpYnV0ZXM6KCk9PnRoaXMuZWRpdG9yLmlzRWRpdGFibGU/e3RhYmluZGV4OiIwIn06e319fSldfX0pLFNkPXRlLmNyZWF0ZSh7bmFtZToidGV4dERpcmVjdGlvbiIsYWRkT3B0aW9ucygpe3JldHVybntkaXJlY3Rpb246dm9pZCAwfX0sYWRkR2xvYmFsQXR0cmlidXRlcygpe2lmKCF0aGlzLm9wdGlvbnMuZGlyZWN0aW9uKXJldHVybltdO2NvbnN0e25vZGVFeHRlbnNpb25zOm59PWhuKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuW3t0eXBlczpuLmZpbHRlcihlPT5lLm5hbWUhPT0idGV4dCIpLm1hcChlPT5lLm5hbWUpLGF0dHJpYnV0ZXM6e2Rpcjp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHBhcnNlSFRNTDplPT57Y29uc3QgdD1lLmdldEF0dHJpYnV0ZSgiZGlyIik7cmV0dXJuIHQmJih0PT09Imx0ciJ8fHQ9PT0icnRsInx8dD09PSJhdXRvIik/dDp0aGlzLm9wdGlvbnMuZGlyZWN0aW9ufSxyZW5kZXJIVE1MOmU9PmUuZGlyP3tkaXI6ZS5kaXJ9Ont9fX19XX0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBHKHtrZXk6bmV3IHEoInRleHREaXJlY3Rpb24iKSxwcm9wczp7YXR0cmlidXRlczooKT0+e2NvbnN0IG49dGhpcy5vcHRpb25zLmRpcmVjdGlvbjtyZXR1cm4gbj97ZGlyOm59Ont9fX19KV19fSksRnk9Y2xhc3MgQW57Y29uc3RydWN0b3IoZSx0LHI9ITEscz1udWxsKXt0aGlzLmN1cnJlbnROb2RlPW51bGwsdGhpcy5hY3R1YWxEZXB0aD1udWxsLHRoaXMuaXNCbG9jaz1yLHRoaXMucmVzb2x2ZWRQb3M9ZSx0aGlzLmVkaXRvcj10LHRoaXMuY3VycmVudE5vZGU9c31nZXQgbmFtZSgpe3JldHVybiB0aGlzLm5vZGUudHlwZS5uYW1lfWdldCBub2RlKCl7cmV0dXJuIHRoaXMuY3VycmVudE5vZGV8fHRoaXMucmVzb2x2ZWRQb3Mubm9kZSgpfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuZWRpdG9yLnZpZXcuZG9tQXRQb3ModGhpcy5wb3MpLm5vZGV9Z2V0IGRlcHRoKCl7dmFyIGU7cmV0dXJuKGU9dGhpcy5hY3R1YWxEZXB0aCkhPW51bGw/ZTp0aGlzLnJlc29sdmVkUG9zLmRlcHRofWdldCBwb3MoKXtyZXR1cm4gdGhpcy5yZXNvbHZlZFBvcy5wb3N9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5ub2RlLmNvbnRlbnR9c2V0IGNvbnRlbnQoZSl7bGV0IHQ9dGhpcy5mcm9tLHI9dGhpcy50bztpZih0aGlzLmlzQmxvY2spe2lmKHRoaXMuY29udGVudC5zaXplPT09MClyZXR1cm47dD10aGlzLmZyb20rMSxyPXRoaXMudG8tMX10aGlzLmVkaXRvci5jb21tYW5kcy5pbnNlcnRDb250ZW50QXQoe2Zyb206dCx0bzpyfSxlKX1nZXQgYXR0cmlidXRlcygpe3JldHVybiB0aGlzLm5vZGUuYXR0cnN9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMubm9kZS50ZXh0Q29udGVudH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLm5vZGUubm9kZVNpemV9Z2V0IGZyb20oKXtyZXR1cm4gdGhpcy5pc0Jsb2NrP3RoaXMucG9zOnRoaXMucmVzb2x2ZWRQb3Muc3RhcnQodGhpcy5yZXNvbHZlZFBvcy5kZXB0aCl9Z2V0IHJhbmdlKCl7cmV0dXJue2Zyb206dGhpcy5mcm9tLHRvOnRoaXMudG99fWdldCB0bygpe3JldHVybiB0aGlzLmlzQmxvY2s/dGhpcy5wb3MrdGhpcy5zaXplOnRoaXMucmVzb2x2ZWRQb3MuZW5kKHRoaXMucmVzb2x2ZWRQb3MuZGVwdGgpKyh0aGlzLm5vZGUuaXNUZXh0PzA6MSl9Z2V0IHBhcmVudCgpe2lmKHRoaXMuZGVwdGg9PT0wKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5yZXNvbHZlZFBvcy5zdGFydCh0aGlzLnJlc29sdmVkUG9zLmRlcHRoLTEpLHQ9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZShlKTtyZXR1cm4gbmV3IEFuKHQsdGhpcy5lZGl0b3IpfWdldCBiZWZvcmUoKXtsZXQgZT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRoaXMuZnJvbS0odGhpcy5pc0Jsb2NrPzE6MikpO3JldHVybiBlLmRlcHRoIT09dGhpcy5kZXB0aCYmKGU9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLmZyb20tMykpLG5ldyBBbihlLHRoaXMuZWRpdG9yKX1nZXQgYWZ0ZXIoKXtsZXQgZT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRoaXMudG8rKHRoaXMuaXNCbG9jaz8yOjEpKTtyZXR1cm4gZS5kZXB0aCE9PXRoaXMuZGVwdGgmJihlPXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy50byszKSksbmV3IEFuKGUsdGhpcy5lZGl0b3IpfWdldCBjaGlsZHJlbigpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMubm9kZS5jb250ZW50LmZvckVhY2goKHQscik9Pntjb25zdCBzPXQuaXNCbG9jayYmIXQuaXNUZXh0YmxvY2ssaT10LmlzQXRvbSYmIXQuaXNUZXh0LG89dC5pc0lubGluZSxsPXRoaXMucG9zK3IrKGk/MDoxKTtpZihsPDB8fGw+dGhpcy5yZXNvbHZlZFBvcy5kb2Mubm9kZVNpemUtMilyZXR1cm47Y29uc3QgYT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKGwpO2lmKCFzJiYhbyYmYS5kZXB0aDw9dGhpcy5kZXB0aClyZXR1cm47Y29uc3QgYz1uZXcgQW4oYSx0aGlzLmVkaXRvcixzLHN8fG8/dDpudWxsKTtzJiYoYy5hY3R1YWxEZXB0aD10aGlzLmRlcHRoKzEpLGUucHVzaChjKX0pLGV9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZHJlblswXXx8bnVsbH1nZXQgbGFzdENoaWxkKCl7Y29uc3QgZT10aGlzLmNoaWxkcmVuO3JldHVybiBlW2UubGVuZ3RoLTFdfHxudWxsfWNsb3Nlc3QoZSx0PXt9KXtsZXQgcj1udWxsLHM9dGhpcy5wYXJlbnQ7Zm9yKDtzJiYhcjspe2lmKHMubm9kZS50eXBlLm5hbWU9PT1lKWlmKE9iamVjdC5rZXlzKHQpLmxlbmd0aD4wKXtjb25zdCBpPXMubm9kZS5hdHRycyxvPU9iamVjdC5rZXlzKHQpO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCs9MSl7Y29uc3QgYT1vW2xdO2lmKGlbYV0hPT10W2FdKWJyZWFrfX1lbHNlIHI9cztzPXMucGFyZW50fXJldHVybiByfXF1ZXJ5U2VsZWN0b3IoZSx0PXt9KXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGUsdCwhMClbMF18fG51bGx9cXVlcnlTZWxlY3RvckFsbChlLHQ9e30scj0hMSl7bGV0IHM9W107aWYoIXRoaXMuY2hpbGRyZW58fHRoaXMuY2hpbGRyZW4ubGVuZ3RoPT09MClyZXR1cm4gcztjb25zdCBpPU9iamVjdC5rZXlzKHQpO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2gobz0+e3ImJnMubGVuZ3RoPjB8fChvLm5vZGUudHlwZS5uYW1lPT09ZSYmaS5ldmVyeShhPT50W2FdPT09by5ub2RlLmF0dHJzW2FdKSYmcy5wdXNoKG8pLCEociYmcy5sZW5ndGg+MCkmJihzPXMuY29uY2F0KG8ucXVlcnlTZWxlY3RvckFsbChlLHQscikpKSl9KSxzfXNldEF0dHJpYnV0ZShlKXtjb25zdHt0cjp0fT10aGlzLmVkaXRvci5zdGF0ZTt0LnNldE5vZGVNYXJrdXAodGhpcy5mcm9tLHZvaWQgMCx7Li4udGhpcy5ub2RlLmF0dHJzLC4uLmV9KSx0aGlzLmVkaXRvci52aWV3LmRpc3BhdGNoKHQpfX0sVnk9YC5Qcm9zZU1pcnJvciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouUHJvc2VNaXJyb3IgewogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlczsKICAtd2Via2l0LWZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7CiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9uZTsKICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICJsaWdhIiAwOyAvKiB0aGUgYWJvdmUgZG9lc24ndCBzZWVtIHRvIHdvcmsgaW4gRWRnZSAqLwp9CgouUHJvc2VNaXJyb3IgW2NvbnRlbnRlZGl0YWJsZT0iZmFsc2UiXSB7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKLlByb3NlTWlycm9yIFtjb250ZW50ZWRpdGFibGU9ImZhbHNlIl0gW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdIHsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Cn0KCi5Qcm9zZU1pcnJvciBwcmUgewogIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKfQoKaW1nLlByb3NlTWlycm9yLXNlcGFyYXRvciB7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDAgIWltcG9ydGFudDsKICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLlByb3NlTWlycm9yLWdhcGN1cnNvciB7CiAgZGlzcGxheTogbm9uZTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbWFyZ2luOiAwOwp9CgouUHJvc2VNaXJyb3ItZ2FwY3Vyc29yOmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAtMnB4OwogIHdpZHRoOiAyMHB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKICBhbmltYXRpb246IFByb3NlTWlycm9yLWN1cnNvci1ibGluayAxLjFzIHN0ZXBzKDIsIHN0YXJ0KSBpbmZpbml0ZTsKfQoKQGtleWZyYW1lcyBQcm9zZU1pcnJvci1jdXJzb3ItYmxpbmsgewogIHRvIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICB9Cn0KCi5Qcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uICo6OnNlbGVjdGlvbiB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5Qcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uICo6Oi1tb3otc2VsZWN0aW9uIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24gKiB7CiAgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouUHJvc2VNaXJyb3ItZm9jdXNlZCAuUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIHsKICBkaXNwbGF5OiBibG9jazsKfWA7ZnVuY3Rpb24gVXkobixlLHQpe2NvbnN0IHI9ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3R5bGVbZGF0YS10aXB0YXAtc3R5bGVdIik7aWYociE9PW51bGwpcmV0dXJuIHI7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBlJiZzLnNldEF0dHJpYnV0ZSgibm9uY2UiLGUpLHMuc2V0QXR0cmlidXRlKCJkYXRhLXRpcHRhcC1zdHlsZSIsIiIpLHMuaW5uZXJIVE1MPW4sZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChzKSxzfXZhciBqeT1jbGFzcyBleHRlbmRzIE55e2NvbnN0cnVjdG9yKGU9e30pe3N1cGVyKCksdGhpcy5jc3M9bnVsbCx0aGlzLmNsYXNzTmFtZT0idGlwdGFwIix0aGlzLmVkaXRvclZpZXc9bnVsbCx0aGlzLmlzRm9jdXNlZD0hMSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5leHRlbnNpb25TdG9yYWdlPXt9LHRoaXMuaW5zdGFuY2VJZD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLDkpLHRoaXMub3B0aW9ucz17ZWxlbWVudDp0eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsY29udGVudDoiIixpbmplY3RDU1M6ITAsaW5qZWN0Tm9uY2U6dm9pZCAwLGV4dGVuc2lvbnM6W10sYXV0b2ZvY3VzOiExLGVkaXRhYmxlOiEwLHRleHREaXJlY3Rpb246dm9pZCAwLGVkaXRvclByb3BzOnt9LHBhcnNlT3B0aW9uczp7fSxjb3JlRXh0ZW5zaW9uT3B0aW9uczp7fSxlbmFibGVJbnB1dFJ1bGVzOiEwLGVuYWJsZVBhc3RlUnVsZXM6ITAsZW5hYmxlQ29yZUV4dGVuc2lvbnM6ITAsZW5hYmxlQ29udGVudENoZWNrOiExLGVtaXRDb250ZW50RXJyb3I6ITEsb25CZWZvcmVDcmVhdGU6KCk9Pm51bGwsb25DcmVhdGU6KCk9Pm51bGwsb25Nb3VudDooKT0+bnVsbCxvblVubW91bnQ6KCk9Pm51bGwsb25VcGRhdGU6KCk9Pm51bGwsb25TZWxlY3Rpb25VcGRhdGU6KCk9Pm51bGwsb25UcmFuc2FjdGlvbjooKT0+bnVsbCxvbkZvY3VzOigpPT5udWxsLG9uQmx1cjooKT0+bnVsbCxvbkRlc3Ryb3k6KCk9Pm51bGwsb25Db250ZW50RXJyb3I6KHtlcnJvcjpzfSk9Pnt0aHJvdyBzfSxvblBhc3RlOigpPT5udWxsLG9uRHJvcDooKT0+bnVsbCxvbkRlbGV0ZTooKT0+bnVsbCxlbmFibGVFeHRlbnNpb25EaXNwYXRjaFRyYW5zYWN0aW9uOiEwfSx0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb249ITEsdGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uPW51bGwsdGhpcy51dGlscz17Z2V0VXBkYXRlZFBvc2l0aW9uOm95LGNyZWF0ZU1hcHBhYmxlUG9zaXRpb246bHl9LHRoaXMuc2V0T3B0aW9ucyhlKSx0aGlzLmNyZWF0ZUV4dGVuc2lvbk1hbmFnZXIoKSx0aGlzLmNyZWF0ZUNvbW1hbmRNYW5hZ2VyKCksdGhpcy5jcmVhdGVTY2hlbWEoKSx0aGlzLm9uKCJiZWZvcmVDcmVhdGUiLHRoaXMub3B0aW9ucy5vbkJlZm9yZUNyZWF0ZSksdGhpcy5lbWl0KCJiZWZvcmVDcmVhdGUiLHtlZGl0b3I6dGhpc30pLHRoaXMub24oIm1vdW50Iix0aGlzLm9wdGlvbnMub25Nb3VudCksdGhpcy5vbigidW5tb3VudCIsdGhpcy5vcHRpb25zLm9uVW5tb3VudCksdGhpcy5vbigiY29udGVudEVycm9yIix0aGlzLm9wdGlvbnMub25Db250ZW50RXJyb3IpLHRoaXMub24oImNyZWF0ZSIsdGhpcy5vcHRpb25zLm9uQ3JlYXRlKSx0aGlzLm9uKCJ1cGRhdGUiLHRoaXMub3B0aW9ucy5vblVwZGF0ZSksdGhpcy5vbigic2VsZWN0aW9uVXBkYXRlIix0aGlzLm9wdGlvbnMub25TZWxlY3Rpb25VcGRhdGUpLHRoaXMub24oInRyYW5zYWN0aW9uIix0aGlzLm9wdGlvbnMub25UcmFuc2FjdGlvbiksdGhpcy5vbigiZm9jdXMiLHRoaXMub3B0aW9ucy5vbkZvY3VzKSx0aGlzLm9uKCJibHVyIix0aGlzLm9wdGlvbnMub25CbHVyKSx0aGlzLm9uKCJkZXN0cm95Iix0aGlzLm9wdGlvbnMub25EZXN0cm95KSx0aGlzLm9uKCJkcm9wIiwoe2V2ZW50OnMsc2xpY2U6aSxtb3ZlZDpvfSk9PnRoaXMub3B0aW9ucy5vbkRyb3AocyxpLG8pKSx0aGlzLm9uKCJwYXN0ZSIsKHtldmVudDpzLHNsaWNlOml9KT0+dGhpcy5vcHRpb25zLm9uUGFzdGUocyxpKSksdGhpcy5vbigiZGVsZXRlIix0aGlzLm9wdGlvbnMub25EZWxldGUpO2NvbnN0IHQ9dGhpcy5jcmVhdGVEb2MoKSxyPUp1KHQsdGhpcy5vcHRpb25zLmF1dG9mb2N1cyk7dGhpcy5lZGl0b3JTdGF0ZT1ybi5jcmVhdGUoe2RvYzp0LHNjaGVtYTp0aGlzLnNjaGVtYSxzZWxlY3Rpb246cnx8dm9pZCAwfSksdGhpcy5vcHRpb25zLmVsZW1lbnQmJnRoaXMubW91bnQodGhpcy5vcHRpb25zLmVsZW1lbnQpfW1vdW50KGUpe2lmKHR5cGVvZiBkb2N1bWVudD4idSIpdGhyb3cgbmV3IEVycm9yKCJbdGlwdGFwIGVycm9yXTogVGhlIGVkaXRvciBjYW5ub3QgYmUgbW91bnRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vICdkb2N1bWVudCcgZGVmaW5lZCBpbiB0aGlzIGVudmlyb25tZW50LiIpO3RoaXMuY3JlYXRlVmlldyhlKSx0aGlzLmVtaXQoIm1vdW50Iix7ZWRpdG9yOnRoaXN9KSx0aGlzLmNzcyYmIWRvY3VtZW50LmhlYWQuY29udGFpbnModGhpcy5jc3MpJiZkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuY3NzKSx3aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMuaXNEZXN0cm95ZWR8fCh0aGlzLm9wdGlvbnMuYXV0b2ZvY3VzIT09ITEmJnRoaXMub3B0aW9ucy5hdXRvZm9jdXMhPT1udWxsJiZ0aGlzLmNvbW1hbmRzLmZvY3VzKHRoaXMub3B0aW9ucy5hdXRvZm9jdXMpLHRoaXMuZW1pdCgiY3JlYXRlIix7ZWRpdG9yOnRoaXN9KSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITApfSwwKX11bm1vdW50KCl7aWYodGhpcy5lZGl0b3JWaWV3KXtjb25zdCBlPXRoaXMuZWRpdG9yVmlldy5kb207ZT8uZWRpdG9yJiZkZWxldGUgZS5lZGl0b3IsdGhpcy5lZGl0b3JWaWV3LmRlc3Ryb3koKX1pZih0aGlzLmVkaXRvclZpZXc9bnVsbCx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5jc3MmJiFkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAuJHt0aGlzLmNsYXNzTmFtZX1gKS5sZW5ndGgpdHJ5e3R5cGVvZiB0aGlzLmNzcy5yZW1vdmU9PSJmdW5jdGlvbiI/dGhpcy5jc3MucmVtb3ZlKCk6dGhpcy5jc3MucGFyZW50Tm9kZSYmdGhpcy5jc3MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNzcyl9Y2F0Y2h7fXRoaXMuY3NzPW51bGwsdGhpcy5lbWl0KCJ1bm1vdW50Iix7ZWRpdG9yOnRoaXN9KX1nZXQgc3RvcmFnZSgpe3JldHVybiB0aGlzLmV4dGVuc2lvblN0b3JhZ2V9Z2V0IGNvbW1hbmRzKCl7cmV0dXJuIHRoaXMuY29tbWFuZE1hbmFnZXIuY29tbWFuZHN9Y2hhaW4oKXtyZXR1cm4gdGhpcy5jb21tYW5kTWFuYWdlci5jaGFpbigpfWNhbigpe3JldHVybiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNhbigpfWluamVjdENTUygpe3RoaXMub3B0aW9ucy5pbmplY3RDU1MmJnR5cGVvZiBkb2N1bWVudDwidSImJih0aGlzLmNzcz1VeShWeSx0aGlzLm9wdGlvbnMuaW5qZWN0Tm9uY2UpKX1zZXRPcHRpb25zKGU9e30pe3RoaXMub3B0aW9ucz17Li4udGhpcy5vcHRpb25zLC4uLmV9LCEoIXRoaXMuZWRpdG9yVmlld3x8IXRoaXMuc3RhdGV8fHRoaXMuaXNEZXN0cm95ZWQpJiYodGhpcy5vcHRpb25zLmVkaXRvclByb3BzJiZ0aGlzLnZpZXcuc2V0UHJvcHModGhpcy5vcHRpb25zLmVkaXRvclByb3BzKSx0aGlzLnZpZXcudXBkYXRlU3RhdGUodGhpcy5zdGF0ZSkpfXNldEVkaXRhYmxlKGUsdD0hMCl7dGhpcy5zZXRPcHRpb25zKHtlZGl0YWJsZTplfSksdCYmdGhpcy5lbWl0KCJ1cGRhdGUiLHtlZGl0b3I6dGhpcyx0cmFuc2FjdGlvbjp0aGlzLnN0YXRlLnRyLGFwcGVuZGVkVHJhbnNhY3Rpb25zOltdfSl9Z2V0IGlzRWRpdGFibGUoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmVkaXRhYmxlJiZ0aGlzLnZpZXcmJnRoaXMudmlldy5lZGl0YWJsZX1nZXQgdmlldygpe3JldHVybiB0aGlzLmVkaXRvclZpZXc/dGhpcy5lZGl0b3JWaWV3Om5ldyBQcm94eSh7c3RhdGU6dGhpcy5lZGl0b3JTdGF0ZSx1cGRhdGVTdGF0ZTplPT57dGhpcy5lZGl0b3JTdGF0ZT1lfSxkaXNwYXRjaDplPT57dGhpcy5kaXNwYXRjaFRyYW5zYWN0aW9uKGUpfSxjb21wb3Npbmc6ITEsZHJhZ2dpbmc6bnVsbCxlZGl0YWJsZTohMCxpc0Rlc3Ryb3llZDohMX0se2dldDooZSx0KT0+e2lmKHRoaXMuZWRpdG9yVmlldylyZXR1cm4gdGhpcy5lZGl0b3JWaWV3W3RdO2lmKHQ9PT0ic3RhdGUiKXJldHVybiB0aGlzLmVkaXRvclN0YXRlO2lmKHQgaW4gZSlyZXR1cm4gUmVmbGVjdC5nZXQoZSx0KTt0aHJvdyBuZXcgRXJyb3IoYFt0aXB0YXAgZXJyb3JdOiBUaGUgZWRpdG9yIHZpZXcgaXMgbm90IGF2YWlsYWJsZS4gQ2Fubm90IGFjY2VzcyB2aWV3Wycke3R9J10uIFRoZSBlZGl0b3IgbWF5IG5vdCBiZSBtb3VudGVkIHlldC5gKX19KX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5lZGl0b3JWaWV3JiYodGhpcy5lZGl0b3JTdGF0ZT10aGlzLnZpZXcuc3RhdGUpLHRoaXMuZWRpdG9yU3RhdGV9cmVnaXN0ZXJQbHVnaW4oZSx0KXtjb25zdCByPVp1KHQpP3QoZSxbLi4udGhpcy5zdGF0ZS5wbHVnaW5zXSk6Wy4uLnRoaXMuc3RhdGUucGx1Z2lucyxlXSxzPXRoaXMuc3RhdGUucmVjb25maWd1cmUoe3BsdWdpbnM6cn0pO3JldHVybiB0aGlzLnZpZXcudXBkYXRlU3RhdGUocyksc311bnJlZ2lzdGVyUGx1Z2luKGUpe2lmKHRoaXMuaXNEZXN0cm95ZWQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5zdGF0ZS5wbHVnaW5zO2xldCByPXQ7aWYoW10uY29uY2F0KGUpLmZvckVhY2goaT0+e2NvbnN0IG89dHlwZW9mIGk9PSJzdHJpbmciP2Ake2l9JGA6aS5rZXk7cj1yLmZpbHRlcihsPT4hbC5rZXkuc3RhcnRzV2l0aChvKSl9KSx0Lmxlbmd0aD09PXIubGVuZ3RoKXJldHVybjtjb25zdCBzPXRoaXMuc3RhdGUucmVjb25maWd1cmUoe3BsdWdpbnM6cn0pO3JldHVybiB0aGlzLnZpZXcudXBkYXRlU3RhdGUocyksc31jcmVhdGVFeHRlbnNpb25NYW5hZ2VyKCl7dmFyIGUsdDtjb25zdCBzPVsuLi50aGlzLm9wdGlvbnMuZW5hYmxlQ29yZUV4dGVuc2lvbnM/W3lkLGZkLmNvbmZpZ3VyZSh7YmxvY2tTZXBhcmF0b3I6KHQ9KGU9dGhpcy5vcHRpb25zLmNvcmVFeHRlbnNpb25PcHRpb25zKT09bnVsbD92b2lkIDA6ZS5jbGlwYm9hcmRUZXh0U2VyaWFsaXplcik9PW51bGw/dm9pZCAwOnQuYmxvY2tTZXBhcmF0b3J9KSxwZCxiZCx4ZCx2ZCxnZCx3ZCxtZCxTZC5jb25maWd1cmUoe2RpcmVjdGlvbjp0aGlzLm9wdGlvbnMudGV4dERpcmVjdGlvbn0pXS5maWx0ZXIoaT0+dHlwZW9mIHRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9ucz09Im9iamVjdCI/dGhpcy5vcHRpb25zLmVuYWJsZUNvcmVFeHRlbnNpb25zW2kubmFtZV0hPT0hMTohMCk6W10sLi4udGhpcy5vcHRpb25zLmV4dGVuc2lvbnNdLmZpbHRlcihpPT5bImV4dGVuc2lvbiIsIm5vZGUiLCJtYXJrIl0uaW5jbHVkZXMoaT8udHlwZSkpO3RoaXMuZXh0ZW5zaW9uTWFuYWdlcj1uZXcganMocyx0aGlzKX1jcmVhdGVDb21tYW5kTWFuYWdlcigpe3RoaXMuY29tbWFuZE1hbmFnZXI9bmV3IEJzKHtlZGl0b3I6dGhpc30pfWNyZWF0ZVNjaGVtYSgpe3RoaXMuc2NoZW1hPXRoaXMuZXh0ZW5zaW9uTWFuYWdlci5zY2hlbWF9Y3JlYXRlRG9jKCl7bGV0IGU7dHJ5e2U9amkodGhpcy5vcHRpb25zLmNvbnRlbnQsdGhpcy5zY2hlbWEsdGhpcy5vcHRpb25zLnBhcnNlT3B0aW9ucyx7ZXJyb3JPbkludmFsaWRDb250ZW50OnRoaXMub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2t9KX1jYXRjaCh0KXtpZighKHQgaW5zdGFuY2VvZiBFcnJvcil8fCFbIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudCIsIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudCJdLmluY2x1ZGVzKHQubWVzc2FnZSkpdGhyb3cgdDt0aGlzLmVtaXQoImNvbnRlbnRFcnJvciIse2VkaXRvcjp0aGlzLGVycm9yOnQsZGlzYWJsZUNvbGxhYm9yYXRpb246KCk9PnsiY29sbGFib3JhdGlvbiJpbiB0aGlzLnN0b3JhZ2UmJnR5cGVvZiB0aGlzLnN0b3JhZ2UuY29sbGFib3JhdGlvbj09Im9iamVjdCImJnRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiYodGhpcy5zdG9yYWdlLmNvbGxhYm9yYXRpb24uaXNEaXNhYmxlZD0hMCksdGhpcy5vcHRpb25zLmV4dGVuc2lvbnM9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuZmlsdGVyKHI9PnIubmFtZSE9PSJjb2xsYWJvcmF0aW9uIiksdGhpcy5jcmVhdGVFeHRlbnNpb25NYW5hZ2VyKCl9fSksZT1qaSh0aGlzLm9wdGlvbnMuY29udGVudCx0aGlzLnNjaGVtYSx0aGlzLm9wdGlvbnMucGFyc2VPcHRpb25zLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6ITF9KX1yZXR1cm4gZX1jcmVhdGVWaWV3KGUpe2NvbnN0e2VkaXRvclByb3BzOnQsZW5hYmxlRXh0ZW5zaW9uRGlzcGF0Y2hUcmFuc2FjdGlvbjpyfT10aGlzLm9wdGlvbnMscz10LmRpc3BhdGNoVHJhbnNhY3Rpb258fHRoaXMuZGlzcGF0Y2hUcmFuc2FjdGlvbi5iaW5kKHRoaXMpLGk9cj90aGlzLmV4dGVuc2lvbk1hbmFnZXIuZGlzcGF0Y2hUcmFuc2FjdGlvbihzKTpzLG89dC50cmFuc2Zvcm1QYXN0ZWRIVE1MLGw9dGhpcy5leHRlbnNpb25NYW5hZ2VyLnRyYW5zZm9ybVBhc3RlZEhUTUwobyk7dGhpcy5lZGl0b3JWaWV3PW5ldyBXdShlLHsuLi50LGF0dHJpYnV0ZXM6e3JvbGU6InRleHRib3giLC4uLnQ/LmF0dHJpYnV0ZXN9LGRpc3BhdGNoVHJhbnNhY3Rpb246aSx0cmFuc2Zvcm1QYXN0ZWRIVE1MOmwsc3RhdGU6dGhpcy5lZGl0b3JTdGF0ZSxtYXJrVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm1hcmtWaWV3cyxub2RlVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm5vZGVWaWV3c30pO2NvbnN0IGE9dGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7cGx1Z2luczp0aGlzLmV4dGVuc2lvbk1hbmFnZXIucGx1Z2luc30pO3RoaXMudmlldy51cGRhdGVTdGF0ZShhKSx0aGlzLnByZXBlbmRDbGFzcygpLHRoaXMuaW5qZWN0Q1NTKCk7Y29uc3QgYz10aGlzLnZpZXcuZG9tO2MuZWRpdG9yPXRoaXN9Y3JlYXRlTm9kZVZpZXdzKCl7dGhpcy52aWV3LmlzRGVzdHJveWVkfHx0aGlzLnZpZXcuc2V0UHJvcHMoe21hcmtWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubWFya1ZpZXdzLG5vZGVWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubm9kZVZpZXdzfSl9cHJlcGVuZENsYXNzKCl7dGhpcy52aWV3LmRvbS5jbGFzc05hbWU9YCR7dGhpcy5jbGFzc05hbWV9ICR7dGhpcy52aWV3LmRvbS5jbGFzc05hbWV9YH1jYXB0dXJlVHJhbnNhY3Rpb24oZSl7dGhpcy5pc0NhcHR1cmluZ1RyYW5zYWN0aW9uPSEwLGUoKSx0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb249ITE7Y29uc3QgdD10aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb247cmV0dXJuIHRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbj1udWxsLHR9ZGlzcGF0Y2hUcmFuc2FjdGlvbihlKXtpZih0aGlzLnZpZXcuaXNEZXN0cm95ZWQpcmV0dXJuO2lmKHRoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbil7aWYoIXRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbil7dGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uPWU7cmV0dXJufWUuc3RlcHMuZm9yRWFjaCh1PT57dmFyIGQ7cmV0dXJuKGQ9dGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uKT09bnVsbD92b2lkIDA6ZC5zdGVwKHUpfSk7cmV0dXJufWNvbnN0e3N0YXRlOnQsdHJhbnNhY3Rpb25zOnJ9PXRoaXMuc3RhdGUuYXBwbHlUcmFuc2FjdGlvbihlKSxzPSF0aGlzLnN0YXRlLnNlbGVjdGlvbi5lcSh0LnNlbGVjdGlvbiksaT1yLmluY2x1ZGVzKGUpLG89dGhpcy5zdGF0ZTtpZih0aGlzLmVtaXQoImJlZm9yZVRyYW5zYWN0aW9uIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZSxuZXh0U3RhdGU6dH0pLCFpKXJldHVybjt0aGlzLnZpZXcudXBkYXRlU3RhdGUodCksdGhpcy5lbWl0KCJ0cmFuc2FjdGlvbiIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOmUsYXBwZW5kZWRUcmFuc2FjdGlvbnM6ci5zbGljZSgxKX0pLHMmJnRoaXMuZW1pdCgic2VsZWN0aW9uVXBkYXRlIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZX0pO2NvbnN0IGw9ci5maW5kTGFzdCh1PT51LmdldE1ldGEoImZvY3VzIil8fHUuZ2V0TWV0YSgiYmx1ciIpKSxhPWw/LmdldE1ldGEoImZvY3VzIiksYz1sPy5nZXRNZXRhKCJibHVyIik7YSYmdGhpcy5lbWl0KCJmb2N1cyIse2VkaXRvcjp0aGlzLGV2ZW50OmEuZXZlbnQsdHJhbnNhY3Rpb246bH0pLGMmJnRoaXMuZW1pdCgiYmx1ciIse2VkaXRvcjp0aGlzLGV2ZW50OmMuZXZlbnQsdHJhbnNhY3Rpb246bH0pLCEoZS5nZXRNZXRhKCJwcmV2ZW50VXBkYXRlIil8fCFyLnNvbWUodT0+dS5kb2NDaGFuZ2VkKXx8by5kb2MuZXEodC5kb2MpKSYmdGhpcy5lbWl0KCJ1cGRhdGUiLHtlZGl0b3I6dGhpcyx0cmFuc2FjdGlvbjplLGFwcGVuZGVkVHJhbnNhY3Rpb25zOnIuc2xpY2UoMSl9KX1nZXRBdHRyaWJ1dGVzKGUpe3JldHVybiBzZCh0aGlzLnN0YXRlLGUpfWlzQWN0aXZlKGUsdCl7Y29uc3Qgcj10eXBlb2YgZT09InN0cmluZyI/ZTpudWxsLHM9dHlwZW9mIGU9PSJzdHJpbmciP3Q6ZTtyZXR1cm4gcnkodGhpcy5zdGF0ZSxyLHMpfWdldEpTT04oKXtyZXR1cm4gdGhpcy5zdGF0ZS5kb2MudG9KU09OKCl9Z2V0SFRNTCgpe3JldHVybiBQbyh0aGlzLnN0YXRlLmRvYy5jb250ZW50LHRoaXMuc2NoZW1hKX1nZXRUZXh0KGUpe2NvbnN0e2Jsb2NrU2VwYXJhdG9yOnQ9YAoKYCx0ZXh0U2VyaWFsaXplcnM6cj17fX09ZXx8e307cmV0dXJuIHJkKHRoaXMuc3RhdGUuZG9jLHtibG9ja1NlcGFyYXRvcjp0LHRleHRTZXJpYWxpemVyczp7Li4uJG8odGhpcy5zY2hlbWEpLC4uLnJ9fSl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gVnModGhpcy5zdGF0ZS5kb2MpfWRlc3Ryb3koKXt0aGlzLmVtaXQoImRlc3Ryb3kiKSx0aGlzLnVubW91bnQoKSx0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpfWdldCBpc0Rlc3Ryb3llZCgpe3ZhciBlLHQ7cmV0dXJuKHQ9KGU9dGhpcy5lZGl0b3JWaWV3KT09bnVsbD92b2lkIDA6ZS5pc0Rlc3Ryb3llZCkhPW51bGw/dDohMH0kbm9kZShlLHQpe3ZhciByO3JldHVybigocj10aGlzLiRkb2MpPT1udWxsP3ZvaWQgMDpyLnF1ZXJ5U2VsZWN0b3IoZSx0KSl8fG51bGx9JG5vZGVzKGUsdCl7dmFyIHI7cmV0dXJuKChyPXRoaXMuJGRvYyk9PW51bGw/dm9pZCAwOnIucXVlcnlTZWxlY3RvckFsbChlLHQpKXx8bnVsbH0kcG9zKGUpe2NvbnN0IHQ9dGhpcy5zdGF0ZS5kb2MucmVzb2x2ZShlKTtyZXR1cm4gbmV3IEZ5KHQsdGhpcyl9Z2V0ICRkb2MoKXtyZXR1cm4gdGhpcy4kcG9zKDApfX07ZnVuY3Rpb24gZm4obil7cmV0dXJuIG5ldyBVcyh7ZmluZDpuLmZpbmQsaGFuZGxlcjooe3N0YXRlOmUscmFuZ2U6dCxtYXRjaDpyfSk9Pntjb25zdCBzPVUobi5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKTtpZihzPT09ITF8fHM9PT1udWxsKXJldHVybiBudWxsO2NvbnN0e3RyOml9PWUsbz1yW3IubGVuZ3RoLTFdLGw9clswXTtpZihvKXtjb25zdCBhPWwuc2VhcmNoKC9cUy8pLGM9dC5mcm9tK2wuaW5kZXhPZihvKSx1PWMrby5sZW5ndGg7aWYoQm8odC5mcm9tLHQudG8sZS5kb2MpLmZpbHRlcihmPT5mLm1hcmsudHlwZS5leGNsdWRlZC5maW5kKG09Pm09PT1uLnR5cGUmJm0hPT1mLm1hcmsudHlwZSkpLmZpbHRlcihmPT5mLnRvPmMpLmxlbmd0aClyZXR1cm4gbnVsbDt1PHQudG8mJmkuZGVsZXRlKHUsdC50byksYz50LmZyb20mJmkuZGVsZXRlKHQuZnJvbSthLGMpO2NvbnN0IGg9dC5mcm9tK2Erby5sZW5ndGg7aS5hZGRNYXJrKHQuZnJvbSthLGgsbi50eXBlLmNyZWF0ZShzfHx7fSkpLGkucmVtb3ZlU3RvcmVkTWFyayhuLnR5cGUpfX0sdW5kb2FibGU6bi51bmRvYWJsZX0pfWZ1bmN0aW9uIENkKG4pe3JldHVybiBuZXcgVXMoe2ZpbmQ6bi5maW5kLGhhbmRsZXI6KHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6cn0pPT57Y29uc3Qgcz1VKG4uZ2V0QXR0cmlidXRlcyx2b2lkIDAscil8fHt9LHt0cjppfT1lLG89dC5mcm9tO2xldCBsPXQudG87Y29uc3QgYT1uLnR5cGUuY3JlYXRlKHMpO2lmKHJbMV0pe2NvbnN0IGM9clswXS5sYXN0SW5kZXhPZihyWzFdKTtsZXQgdT1vK2M7dT5sP3U9bDpsPXUrclsxXS5sZW5ndGg7Y29uc3QgZD1yWzBdW3JbMF0ubGVuZ3RoLTFdO2kuaW5zZXJ0VGV4dChkLG8rclswXS5sZW5ndGgtMSksaS5yZXBsYWNlV2l0aCh1LGwsYSl9ZWxzZSBpZihyWzBdKXtjb25zdCBjPW4udHlwZS5pc0lubGluZT9vOm8tMTtpLmluc2VydChjLG4udHlwZS5jcmVhdGUocykpLmRlbGV0ZShpLm1hcHBpbmcubWFwKG8pLGkubWFwcGluZy5tYXAobCkpfWkuc2Nyb2xsSW50b1ZpZXcoKX0sdW5kb2FibGU6bi51bmRvYWJsZX0pfWZ1bmN0aW9uIFdpKG4pe3JldHVybiBuZXcgVXMoe2ZpbmQ6bi5maW5kLGhhbmRsZXI6KHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6cn0pPT57Y29uc3Qgcz1lLmRvYy5yZXNvbHZlKHQuZnJvbSksaT1VKG4uZ2V0QXR0cmlidXRlcyx2b2lkIDAscil8fHt9O2lmKCFzLm5vZGUoLTEpLmNhblJlcGxhY2VXaXRoKHMuaW5kZXgoLTEpLHMuaW5kZXhBZnRlcigtMSksbi50eXBlKSlyZXR1cm4gbnVsbDtlLnRyLmRlbGV0ZSh0LmZyb20sdC50bykuc2V0QmxvY2tUeXBlKHQuZnJvbSx0LmZyb20sbi50eXBlLGkpfSx1bmRvYWJsZTpuLnVuZG9hYmxlfSl9ZnVuY3Rpb24gcG4obil7cmV0dXJuIG5ldyBVcyh7ZmluZDpuLmZpbmQsaGFuZGxlcjooe3N0YXRlOmUscmFuZ2U6dCxtYXRjaDpyLGNoYWluOnN9KT0+e2NvbnN0IGk9VShuLmdldEF0dHJpYnV0ZXMsdm9pZCAwLHIpfHx7fSxvPWUudHIuZGVsZXRlKHQuZnJvbSx0LnRvKSxhPW8uZG9jLnJlc29sdmUodC5mcm9tKS5ibG9ja1JhbmdlKCksYz1hJiZwbyhhLG4udHlwZSxpKTtpZighYylyZXR1cm4gbnVsbDtpZihvLndyYXAoYSxjKSxuLmtlZXBNYXJrcyYmbi5lZGl0b3Ipe2NvbnN0e3NlbGVjdGlvbjpkLHN0b3JlZE1hcmtzOmh9PWUse3NwbGl0dGFibGVNYXJrczpmfT1uLmVkaXRvci5leHRlbnNpb25NYW5hZ2VyLHA9aHx8ZC4kdG8ucGFyZW50T2Zmc2V0JiZkLiRmcm9tLm1hcmtzKCk7aWYocCl7Y29uc3QgbT1wLmZpbHRlcihnPT5mLmluY2x1ZGVzKGcudHlwZS5uYW1lKSk7by5lbnN1cmVNYXJrcyhtKX19aWYobi5rZWVwQXR0cmlidXRlcyl7Y29uc3QgZD1uLnR5cGUubmFtZT09PSJidWxsZXRMaXN0Inx8bi50eXBlLm5hbWU9PT0ib3JkZXJlZExpc3QiPyJsaXN0SXRlbSI6InRhc2tMaXN0IjtzKCkudXBkYXRlQXR0cmlidXRlcyhkLGkpLnJ1bigpfWNvbnN0IHU9by5kb2MucmVzb2x2ZSh0LmZyb20tMSkubm9kZUJlZm9yZTt1JiZ1LnR5cGU9PT1uLnR5cGUmJkF0KG8uZG9jLHQuZnJvbS0xKSYmKCFuLmpvaW5QcmVkaWNhdGV8fG4uam9pblByZWRpY2F0ZShyLHUpKSYmby5qb2luKHQuZnJvbS0xKX0sdW5kb2FibGU6bi51bmRvYWJsZX0pfXZhciBxeT1uPT4idG91Y2hlcyJpbiBuLFd5PWNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuZGlyZWN0aW9ucz1bImJvdHRvbS1sZWZ0IiwiYm90dG9tLXJpZ2h0IiwidG9wLWxlZnQiLCJ0b3AtcmlnaHQiXSx0aGlzLm1pblNpemU9e2hlaWdodDo4LHdpZHRoOjh9LHRoaXMucHJlc2VydmVBc3BlY3RSYXRpbz0hMSx0aGlzLmNsYXNzTmFtZXM9e2NvbnRhaW5lcjoiIix3cmFwcGVyOiIiLGhhbmRsZToiIixyZXNpemluZzoiIn0sdGhpcy5pbml0aWFsV2lkdGg9MCx0aGlzLmluaXRpYWxIZWlnaHQ9MCx0aGlzLmFzcGVjdFJhdGlvPTEsdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5zdGFydFg9MCx0aGlzLnN0YXJ0WT0wLHRoaXMuc3RhcnRXaWR0aD0wLHRoaXMuc3RhcnRIZWlnaHQ9MCx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkPSExLHRoaXMubGFzdEVkaXRhYmxlU3RhdGU9dm9pZCAwLHRoaXMuaGFuZGxlTWFwPW5ldyBNYXAsdGhpcy5oYW5kbGVNb3VzZU1vdmU9bD0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgYT1sLmNsaWVudFgtdGhpcy5zdGFydFgsYz1sLmNsaWVudFktdGhpcy5zdGFydFk7dGhpcy5oYW5kbGVSZXNpemUoYSxjKX0sdGhpcy5oYW5kbGVUb3VjaE1vdmU9bD0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgYT1sLnRvdWNoZXNbMF07aWYoIWEpcmV0dXJuO2NvbnN0IGM9YS5jbGllbnRYLXRoaXMuc3RhcnRYLHU9YS5jbGllbnRZLXRoaXMuc3RhcnRZO3RoaXMuaGFuZGxlUmVzaXplKGMsdSl9LHRoaXMuaGFuZGxlTW91c2VVcD0oKT0+e2lmKCF0aGlzLmlzUmVzaXppbmcpcmV0dXJuO2NvbnN0IGw9dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoLGE9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDt0aGlzLm9uQ29tbWl0KGwsYSksdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5jb250YWluZXIuZGF0YXNldC5yZXNpemVTdGF0ZT0iZmFsc2UiLHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyYmdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlTW91c2VVcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlEb3duKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsdGhpcy5oYW5kbGVLZXlVcCl9LHRoaXMuaGFuZGxlS2V5RG93bj1sPT57bC5rZXk9PT0iU2hpZnQiJiYodGhpcy5pc1NoaWZ0S2V5UHJlc3NlZD0hMCl9LHRoaXMuaGFuZGxlS2V5VXA9bD0+e2wua2V5PT09IlNoaWZ0IiYmKHRoaXMuaXNTaGlmdEtleVByZXNzZWQ9ITEpfTt2YXIgZSx0LHIscyxpLG87dGhpcy5ub2RlPW4ubm9kZSx0aGlzLmVkaXRvcj1uLmVkaXRvcix0aGlzLmVsZW1lbnQ9bi5lbGVtZW50LHRoaXMuY29udGVudEVsZW1lbnQ9bi5jb250ZW50RWxlbWVudCx0aGlzLmdldFBvcz1uLmdldFBvcyx0aGlzLm9uUmVzaXplPW4ub25SZXNpemUsdGhpcy5vbkNvbW1pdD1uLm9uQ29tbWl0LHRoaXMub25VcGRhdGU9bi5vblVwZGF0ZSwoZT1uLm9wdGlvbnMpIT1udWxsJiZlLm1pbiYmKHRoaXMubWluU2l6ZT17Li4udGhpcy5taW5TaXplLC4uLm4ub3B0aW9ucy5taW59KSwodD1uLm9wdGlvbnMpIT1udWxsJiZ0Lm1heCYmKHRoaXMubWF4U2l6ZT1uLm9wdGlvbnMubWF4KSwocj1uPy5vcHRpb25zKSE9bnVsbCYmci5kaXJlY3Rpb25zJiYodGhpcy5kaXJlY3Rpb25zPW4ub3B0aW9ucy5kaXJlY3Rpb25zKSwocz1uLm9wdGlvbnMpIT1udWxsJiZzLnByZXNlcnZlQXNwZWN0UmF0aW8mJih0aGlzLnByZXNlcnZlQXNwZWN0UmF0aW89bi5vcHRpb25zLnByZXNlcnZlQXNwZWN0UmF0aW8pLChpPW4ub3B0aW9ucykhPW51bGwmJmkuY2xhc3NOYW1lJiYodGhpcy5jbGFzc05hbWVzPXtjb250YWluZXI6bi5vcHRpb25zLmNsYXNzTmFtZS5jb250YWluZXJ8fCIiLHdyYXBwZXI6bi5vcHRpb25zLmNsYXNzTmFtZS53cmFwcGVyfHwiIixoYW5kbGU6bi5vcHRpb25zLmNsYXNzTmFtZS5oYW5kbGV8fCIiLHJlc2l6aW5nOm4ub3B0aW9ucy5jbGFzc05hbWUucmVzaXppbmd8fCIifSksKG89bi5vcHRpb25zKSE9bnVsbCYmby5jcmVhdGVDdXN0b21IYW5kbGUmJih0aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZT1uLm9wdGlvbnMuY3JlYXRlQ3VzdG9tSGFuZGxlKSx0aGlzLndyYXBwZXI9dGhpcy5jcmVhdGVXcmFwcGVyKCksdGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIoKSx0aGlzLmFwcGx5SW5pdGlhbFNpemUoKSx0aGlzLmF0dGFjaEhhbmRsZXMoKSx0aGlzLmVkaXRvci5vbigidXBkYXRlIix0aGlzLmhhbmRsZUVkaXRvclVwZGF0ZS5iaW5kKHRoaXMpKX1nZXQgZG9tKCl7cmV0dXJuIHRoaXMuY29udGFpbmVyfWdldCBjb250ZW50RE9NKCl7dmFyIG47cmV0dXJuKG49dGhpcy5jb250ZW50RWxlbWVudCkhPW51bGw/bjpudWxsfWhhbmRsZUVkaXRvclVwZGF0ZSgpe2NvbnN0IG49dGhpcy5lZGl0b3IuaXNFZGl0YWJsZTtuIT09dGhpcy5sYXN0RWRpdGFibGVTdGF0ZSYmKHRoaXMubGFzdEVkaXRhYmxlU3RhdGU9bixuP24mJnRoaXMuaGFuZGxlTWFwLnNpemU9PT0wJiZ0aGlzLmF0dGFjaEhhbmRsZXMoKTp0aGlzLnJlbW92ZUhhbmRsZXMoKSl9dXBkYXRlKG4sZSx0KXtyZXR1cm4gbi50eXBlIT09dGhpcy5ub2RlLnR5cGU/ITE6KHRoaXMubm9kZT1uLHRoaXMub25VcGRhdGU/dGhpcy5vblVwZGF0ZShuLGUsdCk6ITApfWRlc3Ryb3koKXt0aGlzLmlzUmVzaXppbmcmJih0aGlzLmNvbnRhaW5lci5kYXRhc2V0LnJlc2l6ZVN0YXRlPSJmYWxzZSIsdGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nJiZ0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZU1vdXNlTW92ZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5oYW5kbGVNb3VzZVVwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleURvd24pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIix0aGlzLmhhbmRsZUtleVVwKSx0aGlzLmlzUmVzaXppbmc9ITEsdGhpcy5hY3RpdmVIYW5kbGU9bnVsbCksdGhpcy5lZGl0b3Iub2ZmKCJ1cGRhdGUiLHRoaXMuaGFuZGxlRWRpdG9yVXBkYXRlLmJpbmQodGhpcykpLHRoaXMuY29udGFpbmVyLnJlbW92ZSgpfWNyZWF0ZUNvbnRhaW5lcigpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIG4uZGF0YXNldC5yZXNpemVDb250YWluZXI9IiIsbi5kYXRhc2V0Lm5vZGU9dGhpcy5ub2RlLnR5cGUubmFtZSxuLnN0eWxlLmRpc3BsYXk9dGhpcy5ub2RlLnR5cGUuaXNJbmxpbmU/ImlubGluZS1mbGV4IjoiZmxleCIsdGhpcy5jbGFzc05hbWVzLmNvbnRhaW5lciYmKG4uY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lcy5jb250YWluZXIpLG4uYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyKSxufWNyZWF0ZVdyYXBwZXIoKXtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIsbi5kYXRhc2V0LnJlc2l6ZVdyYXBwZXI9IiIsdGhpcy5jbGFzc05hbWVzLndyYXBwZXImJihuLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXMud3JhcHBlciksbi5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLG59Y3JlYXRlSGFuZGxlKG4pe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuZGF0YXNldC5yZXNpemVIYW5kbGU9bixlLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5jbGFzc05hbWVzLmhhbmRsZSYmKGUuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lcy5oYW5kbGUpLGV9cG9zaXRpb25IYW5kbGUobixlKXtjb25zdCB0PWUuaW5jbHVkZXMoInRvcCIpLHI9ZS5pbmNsdWRlcygiYm90dG9tIikscz1lLmluY2x1ZGVzKCJsZWZ0IiksaT1lLmluY2x1ZGVzKCJyaWdodCIpO3QmJihuLnN0eWxlLnRvcD0iMCIpLHImJihuLnN0eWxlLmJvdHRvbT0iMCIpLHMmJihuLnN0eWxlLmxlZnQ9IjAiKSxpJiYobi5zdHlsZS5yaWdodD0iMCIpLChlPT09InRvcCJ8fGU9PT0iYm90dG9tIikmJihuLnN0eWxlLmxlZnQ9IjAiLG4uc3R5bGUucmlnaHQ9IjAiKSwoZT09PSJsZWZ0Inx8ZT09PSJyaWdodCIpJiYobi5zdHlsZS50b3A9IjAiLG4uc3R5bGUuYm90dG9tPSIwIil9YXR0YWNoSGFuZGxlcygpe3RoaXMuZGlyZWN0aW9ucy5mb3JFYWNoKG49PntsZXQgZTt0aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZT9lPXRoaXMuY3JlYXRlQ3VzdG9tSGFuZGxlKG4pOmU9dGhpcy5jcmVhdGVIYW5kbGUobiksZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHwoZT10aGlzLmNyZWF0ZUhhbmRsZShuKSksdGhpcy5jcmVhdGVDdXN0b21IYW5kbGV8fHRoaXMucG9zaXRpb25IYW5kbGUoZSxuKSxlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdD0+dGhpcy5oYW5kbGVSZXNpemVTdGFydCh0LG4pKSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHQ9PnRoaXMuaGFuZGxlUmVzaXplU3RhcnQodCxuKSksdGhpcy5oYW5kbGVNYXAuc2V0KG4sZSksdGhpcy53cmFwcGVyLmFwcGVuZENoaWxkKGUpfSl9cmVtb3ZlSGFuZGxlcygpe3RoaXMuaGFuZGxlTWFwLmZvckVhY2gobj0+bi5yZW1vdmUoKSksdGhpcy5oYW5kbGVNYXAuY2xlYXIoKX1hcHBseUluaXRpYWxTaXplKCl7Y29uc3Qgbj10aGlzLm5vZGUuYXR0cnMud2lkdGgsZT10aGlzLm5vZGUuYXR0cnMuaGVpZ2h0O24/KHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aD1gJHtufXB4YCx0aGlzLmluaXRpYWxXaWR0aD1uKTp0aGlzLmluaXRpYWxXaWR0aD10aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgsZT8odGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD1gJHtlfXB4YCx0aGlzLmluaXRpYWxIZWlnaHQ9ZSk6dGhpcy5pbml0aWFsSGVpZ2h0PXRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQsdGhpcy5pbml0aWFsV2lkdGg+MCYmdGhpcy5pbml0aWFsSGVpZ2h0PjAmJih0aGlzLmFzcGVjdFJhdGlvPXRoaXMuaW5pdGlhbFdpZHRoL3RoaXMuaW5pdGlhbEhlaWdodCl9aGFuZGxlUmVzaXplU3RhcnQobixlKXtuLnByZXZlbnREZWZhdWx0KCksbi5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmlzUmVzaXppbmc9ITAsdGhpcy5hY3RpdmVIYW5kbGU9ZSxxeShuKT8odGhpcy5zdGFydFg9bi50b3VjaGVzWzBdLmNsaWVudFgsdGhpcy5zdGFydFk9bi50b3VjaGVzWzBdLmNsaWVudFkpOih0aGlzLnN0YXJ0WD1uLmNsaWVudFgsdGhpcy5zdGFydFk9bi5jbGllbnRZKSx0aGlzLnN0YXJ0V2lkdGg9dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoLHRoaXMuc3RhcnRIZWlnaHQ9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCx0aGlzLnN0YXJ0V2lkdGg+MCYmdGhpcy5zdGFydEhlaWdodD4wJiYodGhpcy5hc3BlY3RSYXRpbz10aGlzLnN0YXJ0V2lkdGgvdGhpcy5zdGFydEhlaWdodCksdGhpcy5nZXRQb3MoKSx0aGlzLmNvbnRhaW5lci5kYXRhc2V0LnJlc2l6ZVN0YXRlPSJ0cnVlIix0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcmJnRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMuaGFuZGxlVG91Y2hNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuaGFuZGxlS2V5RG93biksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuaGFuZGxlS2V5VXApfWhhbmRsZVJlc2l6ZShuLGUpe2lmKCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgdD10aGlzLnByZXNlcnZlQXNwZWN0UmF0aW98fHRoaXMuaXNTaGlmdEtleVByZXNzZWQse3dpZHRoOnIsaGVpZ2h0OnN9PXRoaXMuY2FsY3VsYXRlTmV3RGltZW5zaW9ucyh0aGlzLmFjdGl2ZUhhbmRsZSxuLGUpLGk9dGhpcy5hcHBseUNvbnN0cmFpbnRzKHIscyx0KTt0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9YCR7aS53aWR0aH1weGAsdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD1gJHtpLmhlaWdodH1weGAsdGhpcy5vblJlc2l6ZSYmdGhpcy5vblJlc2l6ZShpLndpZHRoLGkuaGVpZ2h0KX1jYWxjdWxhdGVOZXdEaW1lbnNpb25zKG4sZSx0KXtsZXQgcj10aGlzLnN0YXJ0V2lkdGgscz10aGlzLnN0YXJ0SGVpZ2h0O2NvbnN0IGk9bi5pbmNsdWRlcygicmlnaHQiKSxvPW4uaW5jbHVkZXMoImxlZnQiKSxsPW4uaW5jbHVkZXMoImJvdHRvbSIpLGE9bi5pbmNsdWRlcygidG9wIik7cmV0dXJuIGk/cj10aGlzLnN0YXJ0V2lkdGgrZTpvJiYocj10aGlzLnN0YXJ0V2lkdGgtZSksbD9zPXRoaXMuc3RhcnRIZWlnaHQrdDphJiYocz10aGlzLnN0YXJ0SGVpZ2h0LXQpLChuPT09InJpZ2h0Inx8bj09PSJsZWZ0IikmJihyPXRoaXMuc3RhcnRXaWR0aCsoaT9lOi1lKSksKG49PT0idG9wInx8bj09PSJib3R0b20iKSYmKHM9dGhpcy5zdGFydEhlaWdodCsobD90Oi10KSksdGhpcy5wcmVzZXJ2ZUFzcGVjdFJhdGlvfHx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkP3RoaXMuYXBwbHlBc3BlY3RSYXRpbyhyLHMsbik6e3dpZHRoOnIsaGVpZ2h0OnN9fWFwcGx5Q29uc3RyYWludHMobixlLHQpe3ZhciByLHMsaSxvO2lmKCF0KXtsZXQgYz1NYXRoLm1heCh0aGlzLm1pblNpemUud2lkdGgsbiksdT1NYXRoLm1heCh0aGlzLm1pblNpemUuaGVpZ2h0LGUpO3JldHVybihyPXRoaXMubWF4U2l6ZSkhPW51bGwmJnIud2lkdGgmJihjPU1hdGgubWluKHRoaXMubWF4U2l6ZS53aWR0aCxjKSksKHM9dGhpcy5tYXhTaXplKSE9bnVsbCYmcy5oZWlnaHQmJih1PU1hdGgubWluKHRoaXMubWF4U2l6ZS5oZWlnaHQsdSkpLHt3aWR0aDpjLGhlaWdodDp1fX1sZXQgbD1uLGE9ZTtyZXR1cm4gbDx0aGlzLm1pblNpemUud2lkdGgmJihsPXRoaXMubWluU2l6ZS53aWR0aCxhPWwvdGhpcy5hc3BlY3RSYXRpbyksYTx0aGlzLm1pblNpemUuaGVpZ2h0JiYoYT10aGlzLm1pblNpemUuaGVpZ2h0LGw9YSp0aGlzLmFzcGVjdFJhdGlvKSwoaT10aGlzLm1heFNpemUpIT1udWxsJiZpLndpZHRoJiZsPnRoaXMubWF4U2l6ZS53aWR0aCYmKGw9dGhpcy5tYXhTaXplLndpZHRoLGE9bC90aGlzLmFzcGVjdFJhdGlvKSwobz10aGlzLm1heFNpemUpIT1udWxsJiZvLmhlaWdodCYmYT50aGlzLm1heFNpemUuaGVpZ2h0JiYoYT10aGlzLm1heFNpemUuaGVpZ2h0LGw9YSp0aGlzLmFzcGVjdFJhdGlvKSx7d2lkdGg6bCxoZWlnaHQ6YX19YXBwbHlBc3BlY3RSYXRpbyhuLGUsdCl7Y29uc3Qgcj10PT09ImxlZnQifHx0PT09InJpZ2h0IixzPXQ9PT0idG9wInx8dD09PSJib3R0b20iO3JldHVybiByP3t3aWR0aDpuLGhlaWdodDpuL3RoaXMuYXNwZWN0UmF0aW99OnM/e3dpZHRoOmUqdGhpcy5hc3BlY3RSYXRpbyxoZWlnaHQ6ZX06e3dpZHRoOm4saGVpZ2h0Om4vdGhpcy5hc3BlY3RSYXRpb319fTtmdW5jdGlvbiBLeShuLGUpe2NvbnN0e3NlbGVjdGlvbjp0fT1uLHskZnJvbTpyfT10O2lmKHQgaW5zdGFuY2VvZiBOKXtjb25zdCBpPXIuaW5kZXgoKTtyZXR1cm4gci5wYXJlbnQuY2FuUmVwbGFjZVdpdGgoaSxpKzEsZSl9bGV0IHM9ci5kZXB0aDtmb3IoO3M+PTA7KXtjb25zdCBpPXIuaW5kZXgocyk7aWYoci5ub2RlKHMpLmNvbnRlbnRNYXRjaEF0KGkpLm1hdGNoVHlwZShlKSlyZXR1cm4hMDtzLT0xfXJldHVybiExfWZ1bmN0aW9uIEp5KG4pe3JldHVybiBuLnJlcGxhY2UoL1stL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKX1mdW5jdGlvbiBDYShuKXtyZXR1cm4gbi5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mcXVvdDsvZywnIicpLnJlcGxhY2UoLyZhbXA7L2csIiYiKX1mdW5jdGlvbiBHeShuKXtyZXR1cm4gbi5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9dmFyIFF5PXt9O1JvKFF5LHtjcmVhdGVBdG9tQmxvY2tNYXJrZG93blNwZWM6KCk9Plh5LGNyZWF0ZUJsb2NrTWFya2Rvd25TcGVjOigpPT5ZeSxjcmVhdGVJbmxpbmVNYXJrZG93blNwZWM6KCk9PlRkLHBhcnNlQXR0cmlidXRlczooKT0+SG8scGFyc2VJbmRlbnRlZEJsb2NrczooKT0+S2kscmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50OigpPT5WbyxzZXJpYWxpemVBdHRyaWJ1dGVzOigpPT5Gb30pO2Z1bmN0aW9uIEhvKG4pe2lmKCFuPy50cmltKCkpcmV0dXJue307Y29uc3QgZT17fSx0PVtdLHI9bi5yZXBsYWNlKC9bIiddKFteIiddKilbIiddL2csYz0+KHQucHVzaChjKSxgX19RVU9URURfJHt0Lmxlbmd0aC0xfV9fYCkpLHM9ci5tYXRjaCgvKD86XnxccylcLihbYS16QS1aXVtcdy1dKikvZyk7aWYocyl7Y29uc3QgYz1zLm1hcCh1PT51LnRyaW0oKS5zbGljZSgxKSk7ZS5jbGFzcz1jLmpvaW4oIiAiKX1jb25zdCBpPXIubWF0Y2goLyg/Ol58XHMpIyhbYS16QS1aXVtcdy1dKikvKTtpJiYoZS5pZD1pWzFdKTtjb25zdCBvPS8oW2EtekEtWl1bXHctXSopXHMqPVxzKihfX1FVT1RFRF9cZCtfXykvZztBcnJheS5mcm9tKHIubWF0Y2hBbGwobykpLmZvckVhY2goKFssYyx1XSk9Pnt2YXIgZDtjb25zdCBoPXBhcnNlSW50KCgoZD11Lm1hdGNoKC9fX1FVT1RFRF8oXGQrKV9fLykpPT1udWxsP3ZvaWQgMDpkWzFdKXx8IjAiLDEwKSxmPXRbaF07ZiYmKGVbY109Zi5zbGljZSgxLC0xKSl9KTtjb25zdCBhPXIucmVwbGFjZSgvKD86XnxccylcLihbYS16QS1aXVtcdy1dKikvZywiIikucmVwbGFjZSgvKD86XnxccykjKFthLXpBLVpdW1x3LV0qKS9nLCIiKS5yZXBsYWNlKC8oW2EtekEtWl1bXHctXSopXHMqPVxzKl9fUVVPVEVEX1xkK19fL2csIiIpLnRyaW0oKTtyZXR1cm4gYSYmYS5zcGxpdCgvXHMrLykuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2godT0+e3UubWF0Y2goL15bYS16QS1aXVtcdy1dKiQvKSYmKGVbdV09ITApfSksZX1mdW5jdGlvbiBGbyhuKXtpZighbnx8T2JqZWN0LmtleXMobikubGVuZ3RoPT09MClyZXR1cm4iIjtjb25zdCBlPVtdO3JldHVybiBuLmNsYXNzJiZTdHJpbmcobi5jbGFzcykuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKHI9PmUucHVzaChgLiR7cn1gKSksbi5pZCYmZS5wdXNoKGAjJHtuLmlkfWApLE9iamVjdC5lbnRyaWVzKG4pLmZvckVhY2goKFt0LHJdKT0+e3Q9PT0iY2xhc3MifHx0PT09ImlkInx8KHI9PT0hMD9lLnB1c2godCk6ciE9PSExJiZyIT1udWxsJiZlLnB1c2goYCR7dH09IiR7U3RyaW5nKHIpfSJgKSl9KSxlLmpvaW4oIiAiKX1mdW5jdGlvbiBYeShuKXtjb25zdHtub2RlTmFtZTplLG5hbWU6dCxwYXJzZUF0dHJpYnV0ZXM6cj1IbyxzZXJpYWxpemVBdHRyaWJ1dGVzOnM9Rm8sZGVmYXVsdEF0dHJpYnV0ZXM6aT17fSxyZXF1aXJlZEF0dHJpYnV0ZXM6bz1bXSxhbGxvd2VkQXR0cmlidXRlczpsfT1uLGE9dHx8ZSxjPXU9PntpZighbClyZXR1cm4gdTtjb25zdCBkPXt9O3JldHVybiBsLmZvckVhY2goaD0+e2ggaW4gdSYmKGRbaF09dVtoXSl9KSxkfTtyZXR1cm57cGFyc2VNYXJrZG93bjoodSxkKT0+e2NvbnN0IGg9ey4uLmksLi4udS5hdHRyaWJ1dGVzfTtyZXR1cm4gZC5jcmVhdGVOb2RlKGUsaCxbXSl9LG1hcmtkb3duVG9rZW5pemVyOntuYW1lOmUsbGV2ZWw6ImJsb2NrIixzdGFydCh1KXt2YXIgZDtjb25zdCBoPW5ldyBSZWdFeHAoYF46Ojoke2F9KD86XFxzfCQpYCwibSIpLGY9KGQ9dS5tYXRjaChoKSk9PW51bGw/dm9pZCAwOmQuaW5kZXg7cmV0dXJuIGYhPT12b2lkIDA/ZjotMX0sdG9rZW5pemUodSxkLGgpe2NvbnN0IGY9bmV3IFJlZ0V4cChgXjo6OiR7YX0oPzpcXHMrXFx7KFtefV0qKVxcfSk/XFxzKjo6Oig/OlxcbnwkKWApLHA9dS5tYXRjaChmKTtpZighcClyZXR1cm47Y29uc3QgbT1wWzFdfHwiIixnPXIobSk7aWYoIW8uZmluZChrPT4hKGsgaW4gZykpKXJldHVybnt0eXBlOmUscmF3OnBbMF0sYXR0cmlidXRlczpnfX19LHJlbmRlck1hcmtkb3duOnU9Pntjb25zdCBkPWModS5hdHRyc3x8e30pLGg9cyhkKSxmPWg/YCB7JHtofX1gOiIiO3JldHVybmA6Ojoke2F9JHtmfSA6OjpgfX19ZnVuY3Rpb24gWXkobil7Y29uc3R7bm9kZU5hbWU6ZSxuYW1lOnQsZ2V0Q29udGVudDpyLHBhcnNlQXR0cmlidXRlczpzPUhvLHNlcmlhbGl6ZUF0dHJpYnV0ZXM6aT1GbyxkZWZhdWx0QXR0cmlidXRlczpvPXt9LGNvbnRlbnQ6bD0iYmxvY2siLGFsbG93ZWRBdHRyaWJ1dGVzOmF9PW4sYz10fHxlLHU9ZD0+e2lmKCFhKXJldHVybiBkO2NvbnN0IGg9e307cmV0dXJuIGEuZm9yRWFjaChmPT57ZiBpbiBkJiYoaFtmXT1kW2ZdKX0pLGh9O3JldHVybntwYXJzZU1hcmtkb3duOihkLGgpPT57bGV0IGY7aWYocil7Y29uc3QgbT1yKGQpO2Y9dHlwZW9mIG09PSJzdHJpbmciP1t7dHlwZToidGV4dCIsdGV4dDptfV06bX1lbHNlIGw9PT0iYmxvY2siP2Y9aC5wYXJzZUNoaWxkcmVuKGQudG9rZW5zfHxbXSk6Zj1oLnBhcnNlSW5saW5lKGQudG9rZW5zfHxbXSk7Y29uc3QgcD17Li4ubywuLi5kLmF0dHJpYnV0ZXN9O3JldHVybiBoLmNyZWF0ZU5vZGUoZSxwLGYpfSxtYXJrZG93blRva2VuaXplcjp7bmFtZTplLGxldmVsOiJibG9jayIsc3RhcnQoZCl7dmFyIGg7Y29uc3QgZj1uZXcgUmVnRXhwKGBeOjo6JHtjfWAsIm0iKSxwPShoPWQubWF0Y2goZikpPT1udWxsP3ZvaWQgMDpoLmluZGV4O3JldHVybiBwIT09dm9pZCAwP3A6LTF9LHRva2VuaXplKGQsaCxmKXt2YXIgcDtjb25zdCBtPW5ldyBSZWdFeHAoYF46Ojoke2N9KD86XFxzK1xceyhbXn1dKilcXH0pP1xccypcXG5gKSxnPWQubWF0Y2gobSk7aWYoIWcpcmV0dXJuO2NvbnN0W3ksaz0iIl09ZyxiPXMoayk7bGV0IHc9MTtjb25zdCB4PXkubGVuZ3RoO2xldCB2PSIiO2NvbnN0IEM9L146OjooW1x3LV0qKShccy4qKT8vZ20sTT1kLnNsaWNlKHgpO2ZvcihDLmxhc3RJbmRleD0wOzspe2NvbnN0IFI9Qy5leGVjKE0pO2lmKFI9PT1udWxsKWJyZWFrO2NvbnN0IE89Ui5pbmRleCxQPVJbMV07aWYoISgocD1SWzJdKSE9bnVsbCYmcC5lbmRzV2l0aCgiOjo6IikpKXtpZihQKXcrPTE7ZWxzZSBpZih3LT0xLHc9PT0wKXtjb25zdCBGPU0uc2xpY2UoMCxPKTt2PUYudHJpbSgpO2NvbnN0IF89ZC5zbGljZSgwLHgrTytSWzBdLmxlbmd0aCk7bGV0IEw9W107aWYodilpZihsPT09ImJsb2NrIilmb3IoTD1mLmJsb2NrVG9rZW5zKEYpLEwuZm9yRWFjaChIPT57SC50ZXh0JiYoIUgudG9rZW5zfHxILnRva2Vucy5sZW5ndGg9PT0wKSYmKEgudG9rZW5zPWYuaW5saW5lVG9rZW5zKEgudGV4dCkpfSk7TC5sZW5ndGg+MDspe2NvbnN0IEg9TFtMLmxlbmd0aC0xXTtpZihILnR5cGU9PT0icGFyYWdyYXBoIiYmKCFILnRleHR8fEgudGV4dC50cmltKCk9PT0iIikpTC5wb3AoKTtlbHNlIGJyZWFrfWVsc2UgTD1mLmlubGluZVRva2Vucyh2KTtyZXR1cm57dHlwZTplLHJhdzpfLGF0dHJpYnV0ZXM6Yixjb250ZW50OnYsdG9rZW5zOkx9fX19fX0scmVuZGVyTWFya2Rvd246KGQsaCk9Pntjb25zdCBmPXUoZC5hdHRyc3x8e30pLHA9aShmKSxtPXA/YCB7JHtwfX1gOiIiLGc9aC5yZW5kZXJDaGlsZHJlbihkLmNvbnRlbnR8fFtdLGAKCmApO3JldHVybmA6Ojoke2N9JHttfQoKJHtnfQoKOjo6YH19fWZ1bmN0aW9uIFp5KG4pe2lmKCFuLnRyaW0oKSlyZXR1cm57fTtjb25zdCBlPXt9LHQ9LyhcdyspPSg/OiIoW14iXSopInwnKFteJ10qKScpL2c7bGV0IHI9dC5leGVjKG4pO2Zvcig7ciE9PW51bGw7KXtjb25zdFsscyxpLG9dPXI7ZVtzXT1pfHxvLHI9dC5leGVjKG4pfXJldHVybiBlfWZ1bmN0aW9uIGVrKG4pe3JldHVybiBPYmplY3QuZW50cmllcyhuKS5maWx0ZXIoKFssZV0pPT5lIT1udWxsKS5tYXAoKFtlLHRdKT0+YCR7ZX09IiR7dH0iYCkuam9pbigiICIpfWZ1bmN0aW9uIFRkKG4pe2NvbnN0e25vZGVOYW1lOmUsbmFtZTp0LGdldENvbnRlbnQ6cixwYXJzZUF0dHJpYnV0ZXM6cz1aeSxzZXJpYWxpemVBdHRyaWJ1dGVzOmk9ZWssZGVmYXVsdEF0dHJpYnV0ZXM6bz17fSxzZWxmQ2xvc2luZzpsPSExLGFsbG93ZWRBdHRyaWJ1dGVzOmF9PW4sYz10fHxlLHU9aD0+e2lmKCFhKXJldHVybiBoO2NvbnN0IGY9e307cmV0dXJuIGEuZm9yRWFjaChwPT57Y29uc3QgbT10eXBlb2YgcD09InN0cmluZyI/cDpwLm5hbWUsZz10eXBlb2YgcD09InN0cmluZyI/dm9pZCAwOnAuc2tpcElmRGVmYXVsdDtpZihtIGluIGgpe2NvbnN0IHk9aFttXTtpZihnIT09dm9pZCAwJiZ5PT09ZylyZXR1cm47ZlttXT15fX0pLGZ9LGQ9Yy5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpO3JldHVybntwYXJzZU1hcmtkb3duOihoLGYpPT57Y29uc3QgcD17Li4ubywuLi5oLmF0dHJpYnV0ZXN9O2lmKGwpcmV0dXJuIGYuY3JlYXRlTm9kZShlLHApO2NvbnN0IG09cj9yKGgpOmguY29udGVudHx8IiI7cmV0dXJuIG0/Zi5jcmVhdGVOb2RlKGUscCxbZi5jcmVhdGVUZXh0Tm9kZShtKV0pOmYuY3JlYXRlTm9kZShlLHAsW10pfSxtYXJrZG93blRva2VuaXplcjp7bmFtZTplLGxldmVsOiJpbmxpbmUiLHN0YXJ0KGgpe2NvbnN0IGY9bD9uZXcgUmVnRXhwKGBcXFske2R9XFxzKlteXFxdXSpcXF1gKTpuZXcgUmVnRXhwKGBcXFske2R9XFxzKlteXFxdXSpcXF1bXFxzXFxTXSo/XFxbXFwvJHtkfVxcXWApLHA9aC5tYXRjaChmKSxtPXA/LmluZGV4O3JldHVybiBtIT09dm9pZCAwP206LTF9LHRva2VuaXplKGgsZixwKXtjb25zdCBtPWw/bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdYCk6bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdKFtcXHNcXFNdKj8pXFxbXFwvJHtkfVxcXWApLGc9aC5tYXRjaChtKTtpZighZylyZXR1cm47bGV0IHk9IiIsaz0iIjtpZihsKXtjb25zdFssd109ZztrPXd9ZWxzZXtjb25zdFssdyx4XT1nO2s9dyx5PXh8fCIifWNvbnN0IGI9cyhrLnRyaW0oKSk7cmV0dXJue3R5cGU6ZSxyYXc6Z1swXSxjb250ZW50OnkudHJpbSgpLGF0dHJpYnV0ZXM6Yn19fSxyZW5kZXJNYXJrZG93bjpoPT57bGV0IGY9IiI7cj9mPXIoaCk6aC5jb250ZW50JiZoLmNvbnRlbnQubGVuZ3RoPjAmJihmPWguY29udGVudC5maWx0ZXIoeT0+eS50eXBlPT09InRleHQiKS5tYXAoeT0+eS50ZXh0KS5qb2luKCIiKSk7Y29uc3QgcD11KGguYXR0cnN8fHt9KSxtPWkocCksZz1tP2AgJHttfWA6IiI7cmV0dXJuIGw/YFske2N9JHtnfV1gOmBbJHtjfSR7Z31dJHtmfVsvJHtjfV1gfX19ZnVuY3Rpb24gS2kobixlLHQpe3ZhciByLHMsaSxvO2NvbnN0IGw9bi5zcGxpdChgCmApLGE9W107bGV0IGM9IiIsdT0wO2NvbnN0IGQ9ZS5iYXNlSW5kZW50U2l6ZXx8Mjtmb3IoO3U8bC5sZW5ndGg7KXtjb25zdCBoPWxbdV0sZj1oLm1hdGNoKGUuaXRlbVBhdHRlcm4pO2lmKCFmKXtpZihhLmxlbmd0aD4wKWJyZWFrO2lmKGgudHJpbSgpPT09IiIpe3UrPTEsYz1gJHtjfSR7aH0KYDtjb250aW51ZX1lbHNlIHJldHVybn1jb25zdCBwPWUuZXh0cmFjdEl0ZW1EYXRhKGYpLHtpbmRlbnRMZXZlbDptLG1haW5Db250ZW50Omd9PXA7Yz1gJHtjfSR7aH0KYDtjb25zdCB5PVtnXTtmb3IodSs9MTt1PGwubGVuZ3RoOyl7Y29uc3QgeD1sW3VdO2lmKHgudHJpbSgpPT09IiIpe2NvbnN0IEM9bC5zbGljZSh1KzEpLmZpbmRJbmRleChPPT5PLnRyaW0oKSE9PSIiKTtpZihDPT09LTEpYnJlYWs7aWYoKCgocz0ocj1sW3UrMStDXS5tYXRjaCgvXihccyopLykpPT1udWxsP3ZvaWQgMDpyWzFdKT09bnVsbD92b2lkIDA6cy5sZW5ndGgpfHwwKT5tKXt5LnB1c2goeCksYz1gJHtjfSR7eH0KYCx1Kz0xO2NvbnRpbnVlfWVsc2UgYnJlYWt9aWYoKCgobz0oaT14Lm1hdGNoKC9eKFxzKikvKSk9PW51bGw/dm9pZCAwOmlbMV0pPT1udWxsP3ZvaWQgMDpvLmxlbmd0aCl8fDApPm0peS5wdXNoKHgpLGM9YCR7Y30ke3h9CmAsdSs9MTtlbHNlIGJyZWFrfWxldCBrO2NvbnN0IGI9eS5zbGljZSgxKTtpZihiLmxlbmd0aD4wKXtjb25zdCB4PWIubWFwKHY9PnYuc2xpY2UobStkKSkuam9pbihgCmApO3gudHJpbSgpJiYoZS5jdXN0b21OZXN0ZWRQYXJzZXI/az1lLmN1c3RvbU5lc3RlZFBhcnNlcih4KTprPXQuYmxvY2tUb2tlbnMoeCkpfWNvbnN0IHc9ZS5jcmVhdGVUb2tlbihwLGspO2EucHVzaCh3KX1pZihhLmxlbmd0aCE9PTApcmV0dXJue2l0ZW1zOmEscmF3OmN9fWZ1bmN0aW9uIFZvKG4sZSx0LHIpe2lmKCFufHwhQXJyYXkuaXNBcnJheShuLmNvbnRlbnQpKXJldHVybiIiO2NvbnN0IHM9dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChyKTp0LFtpLC4uLm9dPW4uY29udGVudCxsPWUucmVuZGVyQ2hpbGRyZW4oW2ldKTtsZXQgYT1gJHtzfSR7bH1gO3JldHVybiBvJiZvLmxlbmd0aD4wJiZvLmZvckVhY2goKGMsdSk9Pnt2YXIgZCxoO2NvbnN0IGY9KGg9KGQ9ZS5yZW5kZXJDaGlsZCk9PW51bGw/dm9pZCAwOmQuY2FsbChlLGMsdSsxKSkhPW51bGw/aDplLnJlbmRlckNoaWxkcmVuKFtjXSk7aWYoZiE9bnVsbCl7Y29uc3QgcD1mLnNwbGl0KGAKYCkubWFwKG09Pm0/ZS5pbmRlbnQobSk6ZS5pbmRlbnQoIiIpKS5qb2luKGAKYCk7YSs9Yy50eXBlPT09InBhcmFncmFwaCI/YAoKJHtwfWA6YAoke3B9YH19KSxhfWZ1bmN0aW9uIHRrKG4sZSx0PXt9KXtjb25zdHtzdGF0ZTpyfT1lLHtkb2M6cyx0cjppfT1yLG89bjtzLmRlc2NlbmRhbnRzKChsLGEpPT57Y29uc3QgYz1pLm1hcHBpbmcubWFwKGEpLHU9aS5tYXBwaW5nLm1hcChhKStsLm5vZGVTaXplO2xldCBkPW51bGw7aWYobC5tYXJrcy5mb3JFYWNoKGY9PntpZihmIT09bylyZXR1cm4hMTtkPWZ9KSwhZClyZXR1cm47bGV0IGg9ITE7aWYoT2JqZWN0LmtleXModCkuZm9yRWFjaChmPT57dFtmXSE9PWQuYXR0cnNbZl0mJihoPSEwKX0pLGgpe2NvbnN0IGY9bi50eXBlLmNyZWF0ZSh7Li4ubi5hdHRycywuLi50fSk7aS5yZW1vdmVNYXJrKGMsdSxuLnR5cGUpLGkuYWRkTWFyayhjLHUsZil9fSksaS5kb2NDaGFuZ2VkJiZlLnZpZXcuZGlzcGF0Y2goaSl9dmFyIFNlPWNsYXNzIE1kIGV4dGVuZHMgX297Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0ibm9kZSJ9c3RhdGljIGNyZWF0ZShlPXt9KXtjb25zdCB0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTplO3JldHVybiBuZXcgTWQodCl9Y29uZmlndXJlKGUpe3JldHVybiBzdXBlci5jb25maWd1cmUoZSl9ZXh0ZW5kKGUpe2NvbnN0IHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSgpOmU7cmV0dXJuIHN1cGVyLmV4dGVuZCh0KX19O2Z1bmN0aW9uIHF0KG4pe3JldHVybiBuZXcgUHkoe2ZpbmQ6bi5maW5kLGhhbmRsZXI6KHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6cixwYXN0ZUV2ZW50OnN9KT0+e2NvbnN0IGk9VShuLmdldEF0dHJpYnV0ZXMsdm9pZCAwLHIscyk7aWYoaT09PSExfHxpPT09bnVsbClyZXR1cm4gbnVsbDtjb25zdHt0cjpvfT1lLGw9cltyLmxlbmd0aC0xXSxhPXJbMF07bGV0IGM9dC50bztpZihsKXtjb25zdCB1PWEuc2VhcmNoKC9cUy8pLGQ9dC5mcm9tK2EuaW5kZXhPZihsKSxoPWQrbC5sZW5ndGg7aWYoQm8odC5mcm9tLHQudG8sZS5kb2MpLmZpbHRlcihtPT5tLm1hcmsudHlwZS5leGNsdWRlZC5maW5kKHk9Pnk9PT1uLnR5cGUmJnkhPT1tLm1hcmsudHlwZSkpLmZpbHRlcihtPT5tLnRvPmQpLmxlbmd0aClyZXR1cm4gbnVsbDtoPHQudG8mJm8uZGVsZXRlKGgsdC50byksZD50LmZyb20mJm8uZGVsZXRlKHQuZnJvbSt1LGQpLGM9dC5mcm9tK3UrbC5sZW5ndGgsby5hZGRNYXJrKHQuZnJvbSt1LGMsbi50eXBlLmNyZWF0ZShpfHx7fSkpLHIuaW5kZXghPT12b2lkIDAmJnIuaW5wdXQhPT12b2lkIDAmJnIuaW5kZXgrclswXS5sZW5ndGg+PXIuaW5wdXQubGVuZ3RofHxvLnJlbW92ZVN0b3JlZE1hcmsobi50eXBlKX19fSl9bGV0IEppLEdpO2lmKHR5cGVvZiBXZWFrTWFwPCJ1Iil7bGV0IG49bmV3IFdlYWtNYXA7Smk9ZT0+bi5nZXQoZSksR2k9KGUsdCk9PihuLnNldChlLHQpLHQpfWVsc2V7Y29uc3Qgbj1bXTtsZXQgdD0wO0ppPXI9Pntmb3IobGV0IHM9MDtzPG4ubGVuZ3RoO3MrPTIpaWYobltzXT09cilyZXR1cm4gbltzKzFdfSxHaT0ocixzKT0+KHQ9PTEwJiYodD0wKSxuW3QrK109cixuW3QrK109cyl9dmFyIG50PWNsYXNze2NvbnN0cnVjdG9yKG4sZSx0LHIpe3RoaXMud2lkdGg9bix0aGlzLmhlaWdodD1lLHRoaXMubWFwPXQsdGhpcy5wcm9ibGVtcz1yfWZpbmRDZWxsKG4pe2ZvcihsZXQgZT0wO2U8dGhpcy5tYXAubGVuZ3RoO2UrKyl7Y29uc3QgdD10aGlzLm1hcFtlXTtpZih0IT1uKWNvbnRpbnVlO2NvbnN0IHI9ZSV0aGlzLndpZHRoLHM9ZS90aGlzLndpZHRofDA7bGV0IGk9cisxLG89cysxO2ZvcihsZXQgbD0xO2k8dGhpcy53aWR0aCYmdGhpcy5tYXBbZStsXT09dDtsKyspaSsrO2ZvcihsZXQgbD0xO288dGhpcy5oZWlnaHQmJnRoaXMubWFwW2UrdGhpcy53aWR0aCpsXT09dDtsKyspbysrO3JldHVybntsZWZ0OnIsdG9wOnMscmlnaHQ6aSxib3R0b206b319dGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIGNlbGwgd2l0aCBvZmZzZXQgJHtufSBmb3VuZGApfWNvbENvdW50KG4pe2ZvcihsZXQgZT0wO2U8dGhpcy5tYXAubGVuZ3RoO2UrKylpZih0aGlzLm1hcFtlXT09bilyZXR1cm4gZSV0aGlzLndpZHRoO3Rocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7bn0gZm91bmRgKX1uZXh0Q2VsbChuLGUsdCl7Y29uc3R7bGVmdDpyLHJpZ2h0OnMsdG9wOmksYm90dG9tOm99PXRoaXMuZmluZENlbGwobik7cmV0dXJuIGU9PSJob3JpeiI/KHQ8MD9yPT0wOnM9PXRoaXMud2lkdGgpP251bGw6dGhpcy5tYXBbaSp0aGlzLndpZHRoKyh0PDA/ci0xOnMpXToodDwwP2k9PTA6bz09dGhpcy5oZWlnaHQpP251bGw6dGhpcy5tYXBbcit0aGlzLndpZHRoKih0PDA/aS0xOm8pXX1yZWN0QmV0d2VlbihuLGUpe2NvbnN0e2xlZnQ6dCxyaWdodDpyLHRvcDpzLGJvdHRvbTppfT10aGlzLmZpbmRDZWxsKG4pLHtsZWZ0Om8scmlnaHQ6bCx0b3A6YSxib3R0b206Y309dGhpcy5maW5kQ2VsbChlKTtyZXR1cm57bGVmdDpNYXRoLm1pbih0LG8pLHRvcDpNYXRoLm1pbihzLGEpLHJpZ2h0Ok1hdGgubWF4KHIsbCksYm90dG9tOk1hdGgubWF4KGksYyl9fWNlbGxzSW5SZWN0KG4pe2NvbnN0IGU9W10sdD17fTtmb3IobGV0IHI9bi50b3A7cjxuLmJvdHRvbTtyKyspZm9yKGxldCBzPW4ubGVmdDtzPG4ucmlnaHQ7cysrKXtjb25zdCBpPXIqdGhpcy53aWR0aCtzLG89dGhpcy5tYXBbaV07dFtvXXx8KHRbb109ITAsIShzPT1uLmxlZnQmJnMmJnRoaXMubWFwW2ktMV09PW98fHI9PW4udG9wJiZyJiZ0aGlzLm1hcFtpLXRoaXMud2lkdGhdPT1vKSYmZS5wdXNoKG8pKX1yZXR1cm4gZX1wb3NpdGlvbkF0KG4sZSx0KXtmb3IobGV0IHI9MCxzPTA7O3IrKyl7Y29uc3QgaT1zK3QuY2hpbGQocikubm9kZVNpemU7aWYocj09bil7bGV0IG89ZStuKnRoaXMud2lkdGg7Y29uc3QgbD0obisxKSp0aGlzLndpZHRoO2Zvcig7bzxsJiZ0aGlzLm1hcFtvXTxzOylvKys7cmV0dXJuIG89PWw/aS0xOnRoaXMubWFwW29dfXM9aX19c3RhdGljIGdldChuKXtyZXR1cm4gSmkobil8fEdpKG4sbmsobikpfX07ZnVuY3Rpb24gbmsobil7aWYobi50eXBlLnNwZWMudGFibGVSb2xlIT0idGFibGUiKXRocm93IG5ldyBSYW5nZUVycm9yKCJOb3QgYSB0YWJsZSBub2RlOiAiK24udHlwZS5uYW1lKTtjb25zdCBlPXJrKG4pLHQ9bi5jaGlsZENvdW50LHI9W107bGV0IHM9MCxpPW51bGw7Y29uc3Qgbz1bXTtmb3IobGV0IGM9MCx1PWUqdDtjPHU7YysrKXJbY109MDtmb3IobGV0IGM9MCx1PTA7Yzx0O2MrKyl7Y29uc3QgZD1uLmNoaWxkKGMpO3UrKztmb3IobGV0IHA9MDs7cCsrKXtmb3IoO3M8ci5sZW5ndGgmJnJbc10hPTA7KXMrKztpZihwPT1kLmNoaWxkQ291bnQpYnJlYWs7Y29uc3QgbT1kLmNoaWxkKHApLHtjb2xzcGFuOmcscm93c3Bhbjp5LGNvbHdpZHRoOmt9PW0uYXR0cnM7Zm9yKGxldCBiPTA7Yjx5O2IrKyl7aWYoYitjPj10KXsoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJvdmVybG9uZ19yb3dzcGFuIixwb3M6dSxuOnktYn0pO2JyZWFrfWNvbnN0IHc9cytiKmU7Zm9yKGxldCB4PTA7eDxnO3grKyl7clt3K3hdPT0wP3Jbdyt4XT11OihpfHwoaT1bXSkpLnB1c2goe3R5cGU6ImNvbGxpc2lvbiIscm93OmMscG9zOnUsbjpnLXh9KTtjb25zdCB2PWsmJmtbeF07aWYodil7Y29uc3QgQz0odyt4KSVlKjIsTT1vW0NdO009PW51bGx8fE0hPXYmJm9bQysxXT09MT8ob1tDXT12LG9bQysxXT0xKTpNPT12JiZvW0MrMV0rK319fXMrPWcsdSs9bS5ub2RlU2l6ZX1jb25zdCBoPShjKzEpKmU7bGV0IGY9MDtmb3IoO3M8aDspcltzKytdPT0wJiZmKys7ZiYmKGl8fChpPVtdKSkucHVzaCh7dHlwZToibWlzc2luZyIscm93OmMsbjpmfSksdSsrfShlPT09MHx8dD09PTApJiYoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJ6ZXJvX3NpemVkIn0pO2NvbnN0IGw9bmV3IG50KGUsdCxyLGkpO2xldCBhPSExO2ZvcihsZXQgYz0wOyFhJiZjPG8ubGVuZ3RoO2MrPTIpb1tjXSE9bnVsbCYmb1tjKzFdPHQmJihhPSEwKTtyZXR1cm4gYSYmc2sobCxvLG4pLGx9ZnVuY3Rpb24gcmsobil7bGV0IGU9LTEsdD0hMTtmb3IobGV0IHI9MDtyPG4uY2hpbGRDb3VudDtyKyspe2NvbnN0IHM9bi5jaGlsZChyKTtsZXQgaT0wO2lmKHQpZm9yKGxldCBvPTA7bzxyO28rKyl7Y29uc3QgbD1uLmNoaWxkKG8pO2ZvcihsZXQgYT0wO2E8bC5jaGlsZENvdW50O2ErKyl7Y29uc3QgYz1sLmNoaWxkKGEpO28rYy5hdHRycy5yb3dzcGFuPnImJihpKz1jLmF0dHJzLmNvbHNwYW4pfX1mb3IobGV0IG89MDtvPHMuY2hpbGRDb3VudDtvKyspe2NvbnN0IGw9cy5jaGlsZChvKTtpKz1sLmF0dHJzLmNvbHNwYW4sbC5hdHRycy5yb3dzcGFuPjEmJih0PSEwKX1lPT0tMT9lPWk6ZSE9aSYmKGU9TWF0aC5tYXgoZSxpKSl9cmV0dXJuIGV9ZnVuY3Rpb24gc2sobixlLHQpe24ucHJvYmxlbXN8fChuLnByb2JsZW1zPVtdKTtjb25zdCByPXt9O2ZvcihsZXQgcz0wO3M8bi5tYXAubGVuZ3RoO3MrKyl7Y29uc3QgaT1uLm1hcFtzXTtpZihyW2ldKWNvbnRpbnVlO3JbaV09ITA7Y29uc3Qgbz10Lm5vZGVBdChpKTtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCB3aXRoIG9mZnNldCAke2l9IGZvdW5kYCk7bGV0IGw9bnVsbDtjb25zdCBhPW8uYXR0cnM7Zm9yKGxldCBjPTA7YzxhLmNvbHNwYW47YysrKXtjb25zdCB1PWVbKHMrYyklbi53aWR0aCoyXTt1IT1udWxsJiYoIWEuY29sd2lkdGh8fGEuY29sd2lkdGhbY10hPXUpJiYoKGx8fChsPWlrKGEpKSlbY109dSl9bCYmbi5wcm9ibGVtcy51bnNoaWZ0KHt0eXBlOiJjb2x3aWR0aCBtaXNtYXRjaCIscG9zOmksY29sd2lkdGg6bH0pfX1mdW5jdGlvbiBpayhuKXtpZihuLmNvbHdpZHRoKXJldHVybiBuLmNvbHdpZHRoLnNsaWNlKCk7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MDt0PG4uY29sc3Bhbjt0KyspZS5wdXNoKDApO3JldHVybiBlfWZ1bmN0aW9uIFVvKG4pe2xldCBlPW4uY2FjaGVkLnRhYmxlTm9kZVR5cGVzO2lmKCFlKXtlPW4uY2FjaGVkLnRhYmxlTm9kZVR5cGVzPXt9O2Zvcihjb25zdCB0IGluIG4ubm9kZXMpe2NvbnN0IHI9bi5ub2Rlc1t0XSxzPXIuc3BlYy50YWJsZVJvbGU7cyYmKGVbc109cil9fXJldHVybiBlfW5ldyBxKCJzZWxlY3RpbmdDZWxscyIpO2Z1bmN0aW9uIG9rKG4pe2ZvcihsZXQgZT1uLmRlcHRoLTE7ZT4wO2UtLSlpZihuLm5vZGUoZSkudHlwZS5zcGVjLnRhYmxlUm9sZT09InJvdyIpcmV0dXJuIG4ubm9kZSgwKS5yZXNvbHZlKG4uYmVmb3JlKGUrMSkpO3JldHVybiBudWxsfWZ1bmN0aW9uIEVkKG4pe2NvbnN0IGU9bi5zZWxlY3Rpb24uJGhlYWQ7Zm9yKGxldCB0PWUuZGVwdGg7dD4wO3QtLSlpZihlLm5vZGUodCkudHlwZS5zcGVjLnRhYmxlUm9sZT09InJvdyIpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbGsobil7Y29uc3QgZT1uLnNlbGVjdGlvbjtpZigiJGFuY2hvckNlbGwiaW4gZSYmZS4kYW5jaG9yQ2VsbClyZXR1cm4gZS4kYW5jaG9yQ2VsbC5wb3M+ZS4kaGVhZENlbGwucG9zP2UuJGFuY2hvckNlbGw6ZS4kaGVhZENlbGw7aWYoIm5vZGUiaW4gZSYmZS5ub2RlJiZlLm5vZGUudHlwZS5zcGVjLnRhYmxlUm9sZT09ImNlbGwiKXJldHVybiBlLiRhbmNob3I7Y29uc3QgdD1vayhlLiRoZWFkKXx8YWsoZS4kaGVhZCk7aWYodClyZXR1cm4gdDt0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCBmb3VuZCBhcm91bmQgcG9zaXRpb24gJHtlLmhlYWR9YCl9ZnVuY3Rpb24gYWsobil7Zm9yKGxldCBlPW4ubm9kZUFmdGVyLHQ9bi5wb3M7ZTtlPWUuZmlyc3RDaGlsZCx0Kyspe2NvbnN0IHI9ZS50eXBlLnNwZWMudGFibGVSb2xlO2lmKHI9PSJjZWxsInx8cj09ImhlYWRlcl9jZWxsIilyZXR1cm4gbi5kb2MucmVzb2x2ZSh0KX1mb3IobGV0IGU9bi5ub2RlQmVmb3JlLHQ9bi5wb3M7ZTtlPWUubGFzdENoaWxkLHQtLSl7Y29uc3Qgcj1lLnR5cGUuc3BlYy50YWJsZVJvbGU7aWYocj09ImNlbGwifHxyPT0iaGVhZGVyX2NlbGwiKXJldHVybiBuLmRvYy5yZXNvbHZlKHQtZS5ub2RlU2l6ZSl9fWZ1bmN0aW9uIFRhKG4pe3JldHVybiBuLnBhcmVudC50eXBlLnNwZWMudGFibGVSb2xlPT0icm93IiYmISFuLm5vZGVBZnRlcn1mdW5jdGlvbiBBZChuLGUpe3JldHVybiBuLmRlcHRoPT1lLmRlcHRoJiZuLnBvcz49ZS5zdGFydCgtMSkmJm4ucG9zPD1lLmVuZCgtMSl9ZnVuY3Rpb24gT2QobixlLHQpe2NvbnN0IHI9bi5ub2RlKC0xKSxzPW50LmdldChyKSxpPW4uc3RhcnQoLTEpLG89cy5uZXh0Q2VsbChuLnBvcy1pLGUsdCk7cmV0dXJuIG89PW51bGw/bnVsbDpuLm5vZGUoMCkucmVzb2x2ZShpK28pfWZ1bmN0aW9uIE1hKG4sZSx0PTEpe2NvbnN0IHI9ey4uLm4sY29sc3BhbjpuLmNvbHNwYW4tdH07cmV0dXJuIHIuY29sd2lkdGgmJihyLmNvbHdpZHRoPXIuY29sd2lkdGguc2xpY2UoKSxyLmNvbHdpZHRoLnNwbGljZShlLHQpLHIuY29sd2lkdGguc29tZShzPT5zPjApfHwoci5jb2x3aWR0aD1udWxsKSkscn12YXIgS2U9Y2xhc3MgWmUgZXh0ZW5kcyBJe2NvbnN0cnVjdG9yKGUsdD1lKXtjb25zdCByPWUubm9kZSgtMSkscz1udC5nZXQociksaT1lLnN0YXJ0KC0xKSxvPXMucmVjdEJldHdlZW4oZS5wb3MtaSx0LnBvcy1pKSxsPWUubm9kZSgwKSxhPXMuY2VsbHNJblJlY3QobykuZmlsdGVyKHU9PnUhPXQucG9zLWkpO2EudW5zaGlmdCh0LnBvcy1pKTtjb25zdCBjPWEubWFwKHU9Pntjb25zdCBkPXIubm9kZUF0KHUpO2lmKCFkKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7dX0gZm91bmRgKTtjb25zdCBoPWkrdSsxO3JldHVybiBuZXcgWGMobC5yZXNvbHZlKGgpLGwucmVzb2x2ZShoK2QuY29udGVudC5zaXplKSl9KTtzdXBlcihjWzBdLiRmcm9tLGNbMF0uJHRvLGMpLHRoaXMuJGFuY2hvckNlbGw9ZSx0aGlzLiRoZWFkQ2VsbD10fW1hcChlLHQpe2NvbnN0IHI9ZS5yZXNvbHZlKHQubWFwKHRoaXMuJGFuY2hvckNlbGwucG9zKSkscz1lLnJlc29sdmUodC5tYXAodGhpcy4kaGVhZENlbGwucG9zKSk7aWYoVGEocikmJlRhKHMpJiZBZChyLHMpKXtjb25zdCBpPXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSkhPXIubm9kZSgtMSk7cmV0dXJuIGkmJnRoaXMuaXNSb3dTZWxlY3Rpb24oKT9aZS5yb3dTZWxlY3Rpb24ocixzKTppJiZ0aGlzLmlzQ29sU2VsZWN0aW9uKCk/WmUuY29sU2VsZWN0aW9uKHIscyk6bmV3IFplKHIscyl9cmV0dXJuIEQuYmV0d2VlbihyLHMpfWNvbnRlbnQoKXtjb25zdCBlPXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSksdD1udC5nZXQoZSkscj10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxzPXQucmVjdEJldHdlZW4odGhpcy4kYW5jaG9yQ2VsbC5wb3Mtcix0aGlzLiRoZWFkQ2VsbC5wb3MtciksaT17fSxvPVtdO2ZvcihsZXQgYT1zLnRvcDthPHMuYm90dG9tO2ErKyl7Y29uc3QgYz1bXTtmb3IobGV0IHU9YSp0LndpZHRoK3MubGVmdCxkPXMubGVmdDtkPHMucmlnaHQ7ZCsrLHUrKyl7Y29uc3QgaD10Lm1hcFt1XTtpZihpW2hdKWNvbnRpbnVlO2lbaF09ITA7Y29uc3QgZj10LmZpbmRDZWxsKGgpO2xldCBwPWUubm9kZUF0KGgpO2lmKCFwKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7aH0gZm91bmRgKTtjb25zdCBtPXMubGVmdC1mLmxlZnQsZz1mLnJpZ2h0LXMucmlnaHQ7aWYobT4wfHxnPjApe2xldCB5PXAuYXR0cnM7aWYobT4wJiYoeT1NYSh5LDAsbSkpLGc+MCYmKHk9TWEoeSx5LmNvbHNwYW4tZyxnKSksZi5sZWZ0PHMubGVmdCl7aWYocD1wLnR5cGUuY3JlYXRlQW5kRmlsbCh5KSwhcCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ291bGQgbm90IGNyZWF0ZSBjZWxsIHdpdGggYXR0cnMgJHtKU09OLnN0cmluZ2lmeSh5KX1gKX1lbHNlIHA9cC50eXBlLmNyZWF0ZSh5LHAuY29udGVudCl9aWYoZi50b3A8cy50b3B8fGYuYm90dG9tPnMuYm90dG9tKXtjb25zdCB5PXsuLi5wLmF0dHJzLHJvd3NwYW46TWF0aC5taW4oZi5ib3R0b20scy5ib3R0b20pLU1hdGgubWF4KGYudG9wLHMudG9wKX07Zi50b3A8cy50b3A/cD1wLnR5cGUuY3JlYXRlQW5kRmlsbCh5KTpwPXAudHlwZS5jcmVhdGUoeSxwLmNvbnRlbnQpfWMucHVzaChwKX1vLnB1c2goZS5jaGlsZChhKS5jb3B5KFMuZnJvbShjKSkpfWNvbnN0IGw9dGhpcy5pc0NvbFNlbGVjdGlvbigpJiZ0aGlzLmlzUm93U2VsZWN0aW9uKCk/ZTpvO3JldHVybiBuZXcgRShTLmZyb20obCksMSwxKX1yZXBsYWNlKGUsdD1FLmVtcHR5KXtjb25zdCByPWUuc3RlcHMubGVuZ3RoLHM9dGhpcy5yYW5nZXM7Zm9yKGxldCBvPTA7bzxzLmxlbmd0aDtvKyspe2NvbnN0eyRmcm9tOmwsJHRvOmF9PXNbb10sYz1lLm1hcHBpbmcuc2xpY2Uocik7ZS5yZXBsYWNlKGMubWFwKGwucG9zKSxjLm1hcChhLnBvcyksbz9FLmVtcHR5OnQpfWNvbnN0IGk9SS5maW5kRnJvbShlLmRvYy5yZXNvbHZlKGUubWFwcGluZy5zbGljZShyKS5tYXAodGhpcy50bykpLC0xKTtpJiZlLnNldFNlbGVjdGlvbihpKX1yZXBsYWNlV2l0aChlLHQpe3RoaXMucmVwbGFjZShlLG5ldyBFKFMuZnJvbSh0KSwwLDApKX1mb3JFYWNoQ2VsbChlKXtjb25zdCB0PXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSkscj1udC5nZXQodCkscz10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxpPXIuY2VsbHNJblJlY3Qoci5yZWN0QmV0d2Vlbih0aGlzLiRhbmNob3JDZWxsLnBvcy1zLHRoaXMuJGhlYWRDZWxsLnBvcy1zKSk7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspZSh0Lm5vZGVBdChpW29dKSxzK2lbb10pfWlzQ29sU2VsZWN0aW9uKCl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLmluZGV4KC0xKSx0PXRoaXMuJGhlYWRDZWxsLmluZGV4KC0xKTtpZihNYXRoLm1pbihlLHQpPjApcmV0dXJuITE7Y29uc3Qgcj1lK3RoaXMuJGFuY2hvckNlbGwubm9kZUFmdGVyLmF0dHJzLnJvd3NwYW4scz10K3RoaXMuJGhlYWRDZWxsLm5vZGVBZnRlci5hdHRycy5yb3dzcGFuO3JldHVybiBNYXRoLm1heChyLHMpPT10aGlzLiRoZWFkQ2VsbC5ub2RlKC0xKS5jaGlsZENvdW50fXN0YXRpYyBjb2xTZWxlY3Rpb24oZSx0PWUpe2NvbnN0IHI9ZS5ub2RlKC0xKSxzPW50LmdldChyKSxpPWUuc3RhcnQoLTEpLG89cy5maW5kQ2VsbChlLnBvcy1pKSxsPXMuZmluZENlbGwodC5wb3MtaSksYT1lLm5vZGUoMCk7cmV0dXJuIG8udG9wPD1sLnRvcD8oby50b3A+MCYmKGU9YS5yZXNvbHZlKGkrcy5tYXBbby5sZWZ0XSkpLGwuYm90dG9tPHMuaGVpZ2h0JiYodD1hLnJlc29sdmUoaStzLm1hcFtzLndpZHRoKihzLmhlaWdodC0xKStsLnJpZ2h0LTFdKSkpOihsLnRvcD4wJiYodD1hLnJlc29sdmUoaStzLm1hcFtsLmxlZnRdKSksby5ib3R0b208cy5oZWlnaHQmJihlPWEucmVzb2x2ZShpK3MubWFwW3Mud2lkdGgqKHMuaGVpZ2h0LTEpK28ucmlnaHQtMV0pKSksbmV3IFplKGUsdCl9aXNSb3dTZWxlY3Rpb24oKXtjb25zdCBlPXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSksdD1udC5nZXQoZSkscj10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxzPXQuY29sQ291bnQodGhpcy4kYW5jaG9yQ2VsbC5wb3MtciksaT10LmNvbENvdW50KHRoaXMuJGhlYWRDZWxsLnBvcy1yKTtpZihNYXRoLm1pbihzLGkpPjApcmV0dXJuITE7Y29uc3Qgbz1zK3RoaXMuJGFuY2hvckNlbGwubm9kZUFmdGVyLmF0dHJzLmNvbHNwYW4sbD1pK3RoaXMuJGhlYWRDZWxsLm5vZGVBZnRlci5hdHRycy5jb2xzcGFuO3JldHVybiBNYXRoLm1heChvLGwpPT10LndpZHRofWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgWmUmJmUuJGFuY2hvckNlbGwucG9zPT10aGlzLiRhbmNob3JDZWxsLnBvcyYmZS4kaGVhZENlbGwucG9zPT10aGlzLiRoZWFkQ2VsbC5wb3N9c3RhdGljIHJvd1NlbGVjdGlvbihlLHQ9ZSl7Y29uc3Qgcj1lLm5vZGUoLTEpLHM9bnQuZ2V0KHIpLGk9ZS5zdGFydCgtMSksbz1zLmZpbmRDZWxsKGUucG9zLWkpLGw9cy5maW5kQ2VsbCh0LnBvcy1pKSxhPWUubm9kZSgwKTtyZXR1cm4gby5sZWZ0PD1sLmxlZnQ/KG8ubGVmdD4wJiYoZT1hLnJlc29sdmUoaStzLm1hcFtvLnRvcCpzLndpZHRoXSkpLGwucmlnaHQ8cy53aWR0aCYmKHQ9YS5yZXNvbHZlKGkrcy5tYXBbcy53aWR0aCoobC50b3ArMSktMV0pKSk6KGwubGVmdD4wJiYodD1hLnJlc29sdmUoaStzLm1hcFtsLnRvcCpzLndpZHRoXSkpLG8ucmlnaHQ8cy53aWR0aCYmKGU9YS5yZXNvbHZlKGkrcy5tYXBbcy53aWR0aCooby50b3ArMSktMV0pKSksbmV3IFplKGUsdCl9dG9KU09OKCl7cmV0dXJue3R5cGU6ImNlbGwiLGFuY2hvcjp0aGlzLiRhbmNob3JDZWxsLnBvcyxoZWFkOnRoaXMuJGhlYWRDZWxsLnBvc319c3RhdGljIGZyb21KU09OKGUsdCl7cmV0dXJuIG5ldyBaZShlLnJlc29sdmUodC5hbmNob3IpLGUucmVzb2x2ZSh0LmhlYWQpKX1zdGF0aWMgY3JlYXRlKGUsdCxyPXQpe3JldHVybiBuZXcgWmUoZS5yZXNvbHZlKHQpLGUucmVzb2x2ZShyKSl9Z2V0Qm9va21hcmsoKXtyZXR1cm4gbmV3IGNrKHRoaXMuJGFuY2hvckNlbGwucG9zLHRoaXMuJGhlYWRDZWxsLnBvcyl9fTtLZS5wcm90b3R5cGUudmlzaWJsZT0hMTtJLmpzb25JRCgiY2VsbCIsS2UpO3ZhciBjaz1jbGFzcyBOZHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuYW5jaG9yPWUsdGhpcy5oZWFkPXR9bWFwKGUpe3JldHVybiBuZXcgTmQoZS5tYXAodGhpcy5hbmNob3IpLGUubWFwKHRoaXMuaGVhZCkpfXJlc29sdmUoZSl7Y29uc3QgdD1lLnJlc29sdmUodGhpcy5hbmNob3IpLHI9ZS5yZXNvbHZlKHRoaXMuaGVhZCk7cmV0dXJuIHQucGFyZW50LnR5cGUuc3BlYy50YWJsZVJvbGU9PSJyb3ciJiZyLnBhcmVudC50eXBlLnNwZWMudGFibGVSb2xlPT0icm93IiYmdC5pbmRleCgpPHQucGFyZW50LmNoaWxkQ291bnQmJnIuaW5kZXgoKTxyLnBhcmVudC5jaGlsZENvdW50JiZBZCh0LHIpP25ldyBLZSh0LHIpOkkubmVhcihyLDEpfX07bmV3IHEoImZpeC10YWJsZXMiKTtmdW5jdGlvbiBSZChuKXtjb25zdCBlPW4uc2VsZWN0aW9uLHQ9bGsobikscj10Lm5vZGUoLTEpLHM9dC5zdGFydCgtMSksaT1udC5nZXQocik7cmV0dXJuey4uLmUgaW5zdGFuY2VvZiBLZT9pLnJlY3RCZXR3ZWVuKGUuJGFuY2hvckNlbGwucG9zLXMsZS4kaGVhZENlbGwucG9zLXMpOmkuZmluZENlbGwodC5wb3MtcyksdGFibGVTdGFydDpzLG1hcDppLHRhYmxlOnJ9fWZ1bmN0aW9uIHVrKG4pe3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCFFZChlKSlyZXR1cm4hMTtpZih0KXtjb25zdCByPVVvKGUuc2NoZW1hKSxzPVJkKGUpLGk9ZS50cixvPXMubWFwLmNlbGxzSW5SZWN0KG49PSJjb2x1bW4iP3tsZWZ0OnMubGVmdCx0b3A6MCxyaWdodDpzLnJpZ2h0LGJvdHRvbTpzLm1hcC5oZWlnaHR9Om49PSJyb3ciP3tsZWZ0OjAsdG9wOnMudG9wLHJpZ2h0OnMubWFwLndpZHRoLGJvdHRvbTpzLmJvdHRvbX06cyksbD1vLm1hcChhPT5zLnRhYmxlLm5vZGVBdChhKSk7Zm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKyspbFthXS50eXBlPT1yLmhlYWRlcl9jZWxsJiZpLnNldE5vZGVNYXJrdXAocy50YWJsZVN0YXJ0K29bYV0sci5jZWxsLGxbYV0uYXR0cnMpO2lmKGkuc3RlcHMubGVuZ3RoPT09MClmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErKylpLnNldE5vZGVNYXJrdXAocy50YWJsZVN0YXJ0K29bYV0sci5oZWFkZXJfY2VsbCxsW2FdLmF0dHJzKTt0KGkpfXJldHVybiEwfX1mdW5jdGlvbiBFYShuLGUsdCl7Y29uc3Qgcj1lLm1hcC5jZWxsc0luUmVjdCh7bGVmdDowLHRvcDowLHJpZ2h0Om49PSJyb3ciP2UubWFwLndpZHRoOjEsYm90dG9tOm49PSJjb2x1bW4iP2UubWFwLmhlaWdodDoxfSk7Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspe2NvbnN0IGk9ZS50YWJsZS5ub2RlQXQocltzXSk7aWYoaSYmaS50eXBlIT09dC5oZWFkZXJfY2VsbClyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBqbyhuLGUpe3JldHVybiBlPWV8fHt1c2VEZXByZWNhdGVkTG9naWM6ITF9LGUudXNlRGVwcmVjYXRlZExvZ2ljP3VrKG4pOmZ1bmN0aW9uKHQscil7aWYoIUVkKHQpKXJldHVybiExO2lmKHIpe2NvbnN0IHM9VW8odC5zY2hlbWEpLGk9UmQodCksbz10LnRyLGw9RWEoInJvdyIsaSxzKSxhPUVhKCJjb2x1bW4iLGkscyksYz0obj09PSJjb2x1bW4iP2w6bj09PSJyb3ciJiZhKT8xOjAsdT1uPT0iY29sdW1uIj97bGVmdDowLHRvcDpjLHJpZ2h0OjEsYm90dG9tOmkubWFwLmhlaWdodH06bj09InJvdyI/e2xlZnQ6Yyx0b3A6MCxyaWdodDppLm1hcC53aWR0aCxib3R0b206MX06aSxkPW49PSJjb2x1bW4iP2E/cy5jZWxsOnMuaGVhZGVyX2NlbGw6bj09InJvdyI/bD9zLmNlbGw6cy5oZWFkZXJfY2VsbDpzLmNlbGw7aS5tYXAuY2VsbHNJblJlY3QodSkuZm9yRWFjaChoPT57Y29uc3QgZj1oK2kudGFibGVTdGFydCxwPW8uZG9jLm5vZGVBdChmKTtwJiZvLnNldE5vZGVNYXJrdXAoZixkLHAuYXR0cnMpfSkscihvKX1yZXR1cm4hMH19am8oInJvdyIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pO2pvKCJjb2x1bW4iLHt1c2VEZXByZWNhdGVkTG9naWM6ITB9KTtqbygiY2VsbCIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pO2Z1bmN0aW9uIGJyKG4sZSl7Y29uc3QgdD1uLnNlbGVjdGlvbjtpZighKHQgaW5zdGFuY2VvZiBLZSkpcmV0dXJuITE7aWYoZSl7Y29uc3Qgcj1uLnRyLHM9VW8obi5zY2hlbWEpLmNlbGwuY3JlYXRlQW5kRmlsbCgpLmNvbnRlbnQ7dC5mb3JFYWNoQ2VsbCgoaSxvKT0+e2kuY29udGVudC5lcShzKXx8ci5yZXBsYWNlKHIubWFwcGluZy5tYXAobysxKSxyLm1hcHBpbmcubWFwKG8raS5ub2RlU2l6ZS0xKSxuZXcgRShzLDAsMCkpfSksci5kb2NDaGFuZ2VkJiZlKHIpfXJldHVybiEwfU5vKHtBcnJvd0xlZnQ6eHIoImhvcml6IiwtMSksQXJyb3dSaWdodDp4cigiaG9yaXoiLDEpLEFycm93VXA6eHIoInZlcnQiLC0xKSxBcnJvd0Rvd246eHIoInZlcnQiLDEpLCJTaGlmdC1BcnJvd0xlZnQiOndyKCJob3JpeiIsLTEpLCJTaGlmdC1BcnJvd1JpZ2h0Ijp3cigiaG9yaXoiLDEpLCJTaGlmdC1BcnJvd1VwIjp3cigidmVydCIsLTEpLCJTaGlmdC1BcnJvd0Rvd24iOndyKCJ2ZXJ0IiwxKSxCYWNrc3BhY2U6YnIsIk1vZC1CYWNrc3BhY2UiOmJyLERlbGV0ZTpiciwiTW9kLURlbGV0ZSI6YnJ9KTtmdW5jdGlvbiBEcihuLGUsdCl7cmV0dXJuIHQuZXEobi5zZWxlY3Rpb24pPyExOihlJiZlKG4udHIuc2V0U2VsZWN0aW9uKHQpLnNjcm9sbEludG9WaWV3KCkpLCEwKX1mdW5jdGlvbiB4cihuLGUpe3JldHVybih0LHIscyk9PntpZighcylyZXR1cm4hMTtjb25zdCBpPXQuc2VsZWN0aW9uO2lmKGkgaW5zdGFuY2VvZiBLZSlyZXR1cm4gRHIodCxyLEkubmVhcihpLiRoZWFkQ2VsbCxlKSk7aWYobiE9Imhvcml6IiYmIWkuZW1wdHkpcmV0dXJuITE7Y29uc3Qgbz1JZChzLG4sZSk7aWYobz09bnVsbClyZXR1cm4hMTtpZihuPT0iaG9yaXoiKXJldHVybiBEcih0LHIsSS5uZWFyKHQuZG9jLnJlc29sdmUoaS5oZWFkK2UpLGUpKTt7Y29uc3QgbD10LmRvYy5yZXNvbHZlKG8pLGE9T2QobCxuLGUpO2xldCBjO3JldHVybiBhP2M9SS5uZWFyKGEsMSk6ZTwwP2M9SS5uZWFyKHQuZG9jLnJlc29sdmUobC5iZWZvcmUoLTEpKSwtMSk6Yz1JLm5lYXIodC5kb2MucmVzb2x2ZShsLmFmdGVyKC0xKSksMSksRHIodCxyLGMpfX19ZnVuY3Rpb24gd3IobixlKXtyZXR1cm4odCxyLHMpPT57aWYoIXMpcmV0dXJuITE7Y29uc3QgaT10LnNlbGVjdGlvbjtsZXQgbztpZihpIGluc3RhbmNlb2YgS2Upbz1pO2Vsc2V7Y29uc3QgYT1JZChzLG4sZSk7aWYoYT09bnVsbClyZXR1cm4hMTtvPW5ldyBLZSh0LmRvYy5yZXNvbHZlKGEpKX1jb25zdCBsPU9kKG8uJGhlYWRDZWxsLG4sZSk7cmV0dXJuIGw/RHIodCxyLG5ldyBLZShvLiRhbmNob3JDZWxsLGwpKTohMX19ZnVuY3Rpb24gSWQobixlLHQpe2lmKCEobi5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBEKSlyZXR1cm4gbnVsbDtjb25zdHskaGVhZDpyfT1uLnN0YXRlLnNlbGVjdGlvbjtmb3IobGV0IHM9ci5kZXB0aC0xO3M+PTA7cy0tKXtjb25zdCBpPXIubm9kZShzKTtpZigodDwwP3IuaW5kZXgocyk6ci5pbmRleEFmdGVyKHMpKSE9KHQ8MD8wOmkuY2hpbGRDb3VudCkpcmV0dXJuIG51bGw7aWYoaS50eXBlLnNwZWMudGFibGVSb2xlPT0iY2VsbCJ8fGkudHlwZS5zcGVjLnRhYmxlUm9sZT09ImhlYWRlcl9jZWxsIil7Y29uc3Qgbz1yLmJlZm9yZShzKSxsPWU9PSJ2ZXJ0Ij90PjA/ImRvd24iOiJ1cCI6dD4wPyJyaWdodCI6ImxlZnQiO3JldHVybiBuLmVuZE9mVGV4dGJsb2NrKGwpP286bnVsbH19cmV0dXJuIG51bGx9bmV3IHEoInRhYmxlQ29sdW1uUmVzaXppbmciKTtmdW5jdGlvbiBkayhuLGUpe2NvbnN0IHQ9TWF0aC5taW4obi50b3AsZS50b3ApLHI9TWF0aC5tYXgobi5ib3R0b20sZS5ib3R0b20pLHM9TWF0aC5taW4obi5sZWZ0LGUubGVmdCksbz1NYXRoLm1heChuLnJpZ2h0LGUucmlnaHQpLXMsbD1yLXQsYT1zLGM9dDtyZXR1cm4gbmV3IERPTVJlY3QoYSxjLG8sbCl9dmFyIGhrPWNsYXNze2NvbnN0cnVjdG9yKHtlZGl0b3I6bixlbGVtZW50OmUsdmlldzp0LHBsdWdpbktleTpyPSJidWJibGVNZW51Iix1cGRhdGVEZWxheTpzPTI1MCxyZXNpemVEZWxheTppPTYwLHNob3VsZFNob3c6byxhcHBlbmRUbzpsLGdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudDphLG9wdGlvbnM6Y30pe3RoaXMucHJldmVudEhpZGU9ITEsdGhpcy5pc1Zpc2libGU9ITEsdGhpcy5zY3JvbGxUYXJnZXQ9d2luZG93LHRoaXMuZmxvYXRpbmdVSU9wdGlvbnM9e3N0cmF0ZWd5OiJhYnNvbHV0ZSIscGxhY2VtZW50OiJ0b3AiLG9mZnNldDo4LGZsaXA6e30sc2hpZnQ6e30sYXJyb3c6ITEsc2l6ZTohMSxhdXRvUGxhY2VtZW50OiExLGhpZGU6ITEsaW5saW5lOiExLG9uU2hvdzp2b2lkIDAsb25IaWRlOnZvaWQgMCxvblVwZGF0ZTp2b2lkIDAsb25EZXN0cm95OnZvaWQgMH0sdGhpcy5zaG91bGRTaG93PSh7dmlldzpkLHN0YXRlOmgsZnJvbTpmLHRvOnB9KT0+e2NvbnN0e2RvYzptLHNlbGVjdGlvbjpnfT1oLHtlbXB0eTp5fT1nLGs9IW0udGV4dEJldHdlZW4oZixwKS5sZW5ndGgmJkxvKGguc2VsZWN0aW9uKSxiPXRoaXMuZWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtyZXR1cm4hKCEoZC5oYXNGb2N1cygpfHxiKXx8eXx8a3x8IXRoaXMuZWRpdG9yLmlzRWRpdGFibGUpfSx0aGlzLm1vdXNlZG93bkhhbmRsZXI9KCk9Pnt0aGlzLnByZXZlbnRIaWRlPSEwfSx0aGlzLmRyYWdzdGFydEhhbmRsZXI9KCk9Pnt0aGlzLmhpZGUoKX0sdGhpcy5yZXNpemVIYW5kbGVyPSgpPT57dGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyKSx0aGlzLnJlc2l6ZURlYm91bmNlVGltZXI9d2luZG93LnNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9LHRoaXMucmVzaXplRGVsYXkpfSx0aGlzLmZvY3VzSGFuZGxlcj0oKT0+e3NldFRpbWVvdXQoKCk9PnRoaXMudXBkYXRlKHRoaXMuZWRpdG9yLnZpZXcpKX0sdGhpcy5ibHVySGFuZGxlcj0oe2V2ZW50OmR9KT0+e3ZhciBoO2lmKHRoaXMuZWRpdG9yLmlzRGVzdHJveWVkKXt0aGlzLmRlc3Ryb3koKTtyZXR1cm59aWYodGhpcy5wcmV2ZW50SGlkZSl7dGhpcy5wcmV2ZW50SGlkZT0hMTtyZXR1cm59ZD8ucmVsYXRlZFRhcmdldCYmKChoPXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKSE9bnVsbCYmaC5jb250YWlucyhkLnJlbGF0ZWRUYXJnZXQpKXx8ZD8ucmVsYXRlZFRhcmdldCE9PXRoaXMuZWRpdG9yLnZpZXcuZG9tJiZ0aGlzLmhpZGUoKX0sdGhpcy5oYW5kbGVEZWJvdW5jZWRVcGRhdGU9KGQsaCk9Pntjb25zdCBmPSFoPy5zZWxlY3Rpb24uZXEoZC5zdGF0ZS5zZWxlY3Rpb24pLHA9IWg/LmRvYy5lcShkLnN0YXRlLmRvYyk7IWYmJiFwfHwodGhpcy51cGRhdGVEZWJvdW5jZVRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy51cGRhdGVEZWJvdW5jZVRpbWVyKSx0aGlzLnVwZGF0ZURlYm91bmNlVGltZXI9d2luZG93LnNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZUhhbmRsZXIoZCxmLHAsaCl9LHRoaXMudXBkYXRlRGVsYXkpKX0sdGhpcy51cGRhdGVIYW5kbGVyPShkLGgsZixwKT0+e2NvbnN0e2NvbXBvc2luZzptfT1kO2lmKG18fCFoJiYhZilyZXR1cm47aWYoIXRoaXMuZ2V0U2hvdWxkU2hvdyhwKSl7dGhpcy5oaWRlKCk7cmV0dXJufXRoaXMuc2hvdygpLHRoaXMudXBkYXRlUG9zaXRpb24oKX0sdGhpcy50cmFuc2FjdGlvbkhhbmRsZXI9KHt0cmFuc2FjdGlvbjpkfSk9Pntjb25zdCBoPWQuZ2V0TWV0YSh0aGlzLnBsdWdpbktleSk7aD09PSJ1cGRhdGVQb3NpdGlvbiI/dGhpcy51cGRhdGVQb3NpdGlvbigpOmgmJnR5cGVvZiBoPT0ib2JqZWN0IiYmaC50eXBlPT09InVwZGF0ZU9wdGlvbnMiP3RoaXMudXBkYXRlT3B0aW9ucyhoLm9wdGlvbnMpOmg9PT0iaGlkZSI/dGhpcy5oaWRlKCk6aD09PSJzaG93IiYmKHRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLnNob3coKSl9O3ZhciB1O3RoaXMuZWRpdG9yPW4sdGhpcy5lbGVtZW50PWUsdGhpcy52aWV3PXQsdGhpcy5wbHVnaW5LZXk9cix0aGlzLnVwZGF0ZURlbGF5PXMsdGhpcy5yZXNpemVEZWxheT1pLHRoaXMuYXBwZW5kVG89bCx0aGlzLnNjcm9sbFRhcmdldD0odT1jPy5zY3JvbGxUYXJnZXQpIT1udWxsP3U6d2luZG93LHRoaXMuZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50PWEsdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5jfSx0aGlzLmVsZW1lbnQudGFiSW5kZXg9MCxvJiYodGhpcy5zaG91bGRTaG93PW8pLHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMubW91c2Vkb3duSGFuZGxlcix7Y2FwdHVyZTohMH0pLHRoaXMudmlldy5kb20uYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iix0aGlzLmRyYWdzdGFydEhhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJmb2N1cyIsdGhpcy5mb2N1c0hhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vbigidHJhbnNhY3Rpb24iLHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnVwZGF0ZSh0LHQuc3RhdGUpLHRoaXMuZ2V0U2hvdWxkU2hvdygpJiYodGhpcy5zaG93KCksdGhpcy51cGRhdGVQb3NpdGlvbigpKX1nZXQgbWlkZGxld2FyZXMoKXtjb25zdCBuPVtdO3JldHVybiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXAmJm4ucHVzaChzYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwIT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQmJm4ucHVzaChpYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdCE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQmJm4ucHVzaChvYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9mZnNldDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmFycm93JiZuLnB1c2gobGModGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hcnJvdykpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZSYmbi5wdXNoKGFjKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemUhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemU6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50JiZuLnB1c2goY2ModHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXV0b1BsYWNlbWVudCE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXV0b1BsYWNlbWVudDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGUmJm4ucHVzaCh1Yyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlIT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lJiZuLnB1c2goZGModHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lIT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5pbmxpbmU6dm9pZCAwKSksbn1nZXQgdmlydHVhbEVsZW1lbnQoKXt2YXIgbixlLHQ7Y29uc3R7c2VsZWN0aW9uOnJ9PXRoaXMuZWRpdG9yLnN0YXRlLHM9KG49dGhpcy5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpuLmNhbGwodGhpcyk7aWYocylyZXR1cm4gcztpZighKCh0PShlPXRoaXMudmlldyk9PW51bGw/dm9pZCAwOmUuZG9tKSE9bnVsbCYmdC5wYXJlbnROb2RlKSlyZXR1cm47Y29uc3QgaT1jZCh0aGlzLnZpZXcsci5mcm9tLHIudG8pO2xldCBvPXtnZXRCb3VuZGluZ0NsaWVudFJlY3Q6KCk9PmksZ2V0Q2xpZW50UmVjdHM6KCk9PltpXX07aWYociBpbnN0YW5jZW9mIE4pe2xldCBsPXRoaXMudmlldy5ub2RlRE9NKHIuZnJvbSk7Y29uc3QgYT1sLmRhdGFzZXQubm9kZVZpZXdXcmFwcGVyP2w6bC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1ub2RlLXZpZXctd3JhcHBlcl0iKTthJiYobD1hKSxsJiYobz17Z2V0Qm91bmRpbmdDbGllbnRSZWN0OigpPT5sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGdldENsaWVudFJlY3RzOigpPT5bbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKV19KX1pZihyIGluc3RhbmNlb2YgS2Upe2NvbnN0eyRhbmNob3JDZWxsOmwsJGhlYWRDZWxsOmF9PXIsYz1sP2wucG9zOmEucG9zLHU9YT9hLnBvczpsLnBvcyxkPXRoaXMudmlldy5ub2RlRE9NKGMpLGg9dGhpcy52aWV3Lm5vZGVET00odSk7aWYoIWR8fCFoKXJldHVybjtjb25zdCBmPWQ9PT1oP2QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6ZGsoZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtvPXtnZXRCb3VuZGluZ0NsaWVudFJlY3Q6KCk9PmYsZ2V0Q2xpZW50UmVjdHM6KCk9PltmXX19cmV0dXJuIG99dXBkYXRlUG9zaXRpb24oKXtpZighdGhpcy5pc1Zpc2libGUpcmV0dXJuO2NvbnN0IG49dGhpcy52aXJ0dWFsRWxlbWVudDtuJiZoYyhuLHRoaXMuZWxlbWVudCx7cGxhY2VtZW50OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMucGxhY2VtZW50LHN0cmF0ZWd5OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc3RyYXRlZ3ksbWlkZGxld2FyZTp0aGlzLm1pZGRsZXdhcmVzfSkudGhlbigoe3g6ZSx5OnQsc3RyYXRlZ3k6cixtaWRkbGV3YXJlRGF0YTpzfSk9Pnt2YXIgaSxvO2lmKCEoIXRoaXMuaXNWaXNpYmxlfHx0aGlzLmVkaXRvci5pc0Rlc3Ryb3llZHx8IXRoaXMuZWxlbWVudC5pc0Nvbm5lY3RlZCkpe2lmKChpPXMuaGlkZSkhPW51bGwmJmkucmVmZXJlbmNlSGlkZGVufHwobz1zLmhpZGUpIT1udWxsJiZvLmVzY2FwZWQpe3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO3JldHVybn10aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPSJtYXgtY29udGVudCIsdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uPXIsdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQ9YCR7ZX1weGAsdGhpcy5lbGVtZW50LnN0eWxlLnRvcD1gJHt0fXB4YCx0aGlzLmlzVmlzaWJsZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSgpfX0pfXVwZGF0ZShuLGUpe2NvbnN0e3N0YXRlOnR9PW4scj10LnNlbGVjdGlvbi5mcm9tIT09dC5zZWxlY3Rpb24udG87aWYodGhpcy51cGRhdGVEZWxheT4wJiZyKXt0aGlzLmhhbmRsZURlYm91bmNlZFVwZGF0ZShuLGUpO3JldHVybn1jb25zdCBzPSFlPy5zZWxlY3Rpb24uZXEobi5zdGF0ZS5zZWxlY3Rpb24pLGk9IWU/LmRvYy5lcShuLnN0YXRlLmRvYyk7dGhpcy51cGRhdGVIYW5kbGVyKG4scyxpLGUpfWdldFNob3VsZFNob3cobil7dmFyIGU7Y29uc3R7c3RhdGU6dH09dGhpcy52aWV3LHtzZWxlY3Rpb246cn09dCx7cmFuZ2VzOnN9PXIsaT1NYXRoLm1pbiguLi5zLm1hcChhPT5hLiRmcm9tLnBvcykpLG89TWF0aC5tYXgoLi4ucy5tYXAoYT0+YS4kdG8ucG9zKSk7cmV0dXJuKChlPXRoaXMuc2hvdWxkU2hvdyk9PW51bGw/dm9pZCAwOmUuY2FsbCh0aGlzLHtlZGl0b3I6dGhpcy5lZGl0b3IsZWxlbWVudDp0aGlzLmVsZW1lbnQsdmlldzp0aGlzLnZpZXcsc3RhdGU6dCxvbGRTdGF0ZTpuLGZyb206aSx0bzpvfSkpfHwhMX1zaG93KCl7dmFyIG47aWYodGhpcy5pc1Zpc2libGUpcmV0dXJuO3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLmVsZW1lbnQuc3R5bGUub3BhY2l0eT0iMSI7Y29uc3QgZT10eXBlb2YgdGhpcy5hcHBlbmRUbz09ImZ1bmN0aW9uIj90aGlzLmFwcGVuZFRvKCk6dGhpcy5hcHBlbmRUbzsobj1lPz90aGlzLnZpZXcuZG9tLnBhcmVudEVsZW1lbnQpPT1udWxsfHxuLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblNob3cmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25TaG93KCksdGhpcy5pc1Zpc2libGU9ITB9aGlkZSgpe3RoaXMuaXNWaXNpYmxlJiYodGhpcy5lbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5lbGVtZW50LnN0eWxlLm9wYWNpdHk9IjAiLHRoaXMuZWxlbWVudC5yZW1vdmUoKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uSGlkZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkhpZGUoKSx0aGlzLmlzVmlzaWJsZT0hMSl9dXBkYXRlT3B0aW9ucyhuKXt2YXIgZTtpZihuLnVwZGF0ZURlbGF5IT09dm9pZCAwJiYodGhpcy51cGRhdGVEZWxheT1uLnVwZGF0ZURlbGF5KSxuLnJlc2l6ZURlbGF5IT09dm9pZCAwJiYodGhpcy5yZXNpemVEZWxheT1uLnJlc2l6ZURlbGF5KSxuLmFwcGVuZFRvIT09dm9pZCAwJiYodGhpcy5hcHBlbmRUbz1uLmFwcGVuZFRvKSxuLmdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudCE9PXZvaWQgMCYmKHRoaXMuZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50PW4uZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50KSxuLnNob3VsZFNob3chPT12b2lkIDAmJm4uc2hvdWxkU2hvdyYmKHRoaXMuc2hvdWxkU2hvdz1uLnNob3VsZFNob3cpLG4ub3B0aW9ucyE9PXZvaWQgMCl7Y29uc3QgdD0oZT1uLm9wdGlvbnMuc2Nyb2xsVGFyZ2V0KSE9bnVsbD9lOndpbmRvdzt0IT09dGhpcy5zY3JvbGxUYXJnZXQmJih0aGlzLnNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQ9dCx0aGlzLnNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMucmVzaXplSGFuZGxlcikpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnM9ey4uLnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMsLi4ubi5vcHRpb25zfX19ZGVzdHJveSgpe3RoaXMuaGlkZSgpLHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMubW91c2Vkb3duSGFuZGxlcix7Y2FwdHVyZTohMH0pLHRoaXMudmlldy5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iix0aGlzLmRyYWdzdGFydEhhbmRsZXIpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuZWRpdG9yLm9mZigiZm9jdXMiLHRoaXMuZm9jdXNIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoImJsdXIiLHRoaXMuYmx1ckhhbmRsZXIpLHRoaXMuZWRpdG9yLm9mZigidHJhbnNhY3Rpb24iLHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uRGVzdHJveSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkRlc3Ryb3koKX19LGZrPW49Pm5ldyBHKHtrZXk6dHlwZW9mIG4ucGx1Z2luS2V5PT0ic3RyaW5nIj9uZXcgcShuLnBsdWdpbktleSk6bi5wbHVnaW5LZXksdmlldzplPT5uZXcgaGsoe3ZpZXc6ZSwuLi5ufSl9KSxwaz1ycih7bmFtZToiQnViYmxlTWVudSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntwbHVnaW5LZXk6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxlZGl0b3I6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSx1cGRhdGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDp2b2lkIDB9LHJlc2l6ZURlbGF5Ont0eXBlOk51bWJlcixkZWZhdWx0OnZvaWQgMH0sb3B0aW9uczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYXBwZW5kVG86e3R5cGU6W09iamVjdCxGdW5jdGlvbl0sZGVmYXVsdDp2b2lkIDB9LHNob3VsZFNob3c6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDp2b2lkIDB9fSxzZXR1cChuLHtzbG90czplLGF0dHJzOnR9KXt2YXIgcjtjb25zdCBzPVJlKG51bGwpLGk9KHI9bi5wbHVnaW5LZXkpIT1udWxsP3I6bmV3IHEoImJ1YmJsZU1lbnUiKTtyZXR1cm4gY28oKCk9Pntjb25zdHtlZGl0b3I6byxvcHRpb25zOmwscmVzaXplRGVsYXk6YSxhcHBlbmRUbzpjLHNob3VsZFNob3c6dSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6ZCx1cGRhdGVEZWxheTpofT1uLGY9cy52YWx1ZTtmJiYoZi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGYuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixmLnJlbW92ZSgpLHJjKCgpPT57by5yZWdpc3RlclBsdWdpbihmayh7ZWRpdG9yOm8sZWxlbWVudDpmLG9wdGlvbnM6bCxwbHVnaW5LZXk6aSxyZXNpemVEZWxheTphLGFwcGVuZFRvOmMsc2hvdWxkU2hvdzp1LGdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudDpkLHVwZGF0ZURlbGF5Omh9KSl9KSl9KSxPcygoKT0+e2NvbnN0e2VkaXRvcjpvfT1uO28udW5yZWdpc3RlclBsdWdpbihpKX0pLCgpPT57dmFyIG87cmV0dXJuIHVvKCJkaXYiLHtyZWY6cywuLi50fSwobz1lLmRlZmF1bHQpPT1udWxsP3ZvaWQgMDpvLmNhbGwoZSkpfX19KSxtaz1jbGFzc3tjb25zdHJ1Y3Rvcih7ZWRpdG9yOm4sZWxlbWVudDplLHZpZXc6dCxwbHVnaW5LZXk6cj0iZmxvYXRpbmdNZW51Iix1cGRhdGVEZWxheTpzPTI1MCxyZXNpemVEZWxheTppPTYwLG9wdGlvbnM6byxhcHBlbmRUbzpsLHNob3VsZFNob3c6YX0pe3RoaXMucHJldmVudEhpZGU9ITEsdGhpcy5pc1Zpc2libGU9ITEsdGhpcy5zY3JvbGxUYXJnZXQ9d2luZG93LHRoaXMuc2hvdWxkU2hvdz0oe3ZpZXc6dSxzdGF0ZTpkfSk9Pntjb25zdHtzZWxlY3Rpb246aH09ZCx7JGFuY2hvcjpmLGVtcHR5OnB9PWgsbT1mLmRlcHRoPT09MSxnPWYucGFyZW50LmlzVGV4dGJsb2NrJiYhZi5wYXJlbnQudHlwZS5zcGVjLmNvZGUmJiFmLnBhcmVudC50ZXh0Q29udGVudCYmZi5wYXJlbnQuY2hpbGRDb3VudD09PTAmJiF0aGlzLmdldFRleHRDb250ZW50KGYucGFyZW50KTtyZXR1cm4hKCF1Lmhhc0ZvY3VzKCl8fCFwfHwhbXx8IWd8fCF0aGlzLmVkaXRvci5pc0VkaXRhYmxlKX0sdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17c3RyYXRlZ3k6ImFic29sdXRlIixwbGFjZW1lbnQ6InJpZ2h0IixvZmZzZXQ6OCxmbGlwOnt9LHNoaWZ0Ont9LGFycm93OiExLHNpemU6ITEsYXV0b1BsYWNlbWVudDohMSxoaWRlOiExLGlubGluZTohMX0sdGhpcy51cGRhdGVIYW5kbGVyPSh1LGQsaCxmKT0+e2NvbnN0e2NvbXBvc2luZzpwfT11O2lmKHB8fCFkJiYhaClyZXR1cm47aWYoIXRoaXMuZ2V0U2hvdWxkU2hvdyhmKSl7dGhpcy5oaWRlKCk7cmV0dXJufXRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLnNob3coKX0sdGhpcy5tb3VzZWRvd25IYW5kbGVyPSgpPT57dGhpcy5wcmV2ZW50SGlkZT0hMH0sdGhpcy5mb2N1c0hhbmRsZXI9KCk9PntzZXRUaW1lb3V0KCgpPT50aGlzLnVwZGF0ZSh0aGlzLmVkaXRvci52aWV3KSl9LHRoaXMuYmx1ckhhbmRsZXI9KHtldmVudDp1fSk9Pnt2YXIgZDtpZih0aGlzLnByZXZlbnRIaWRlKXt0aGlzLnByZXZlbnRIaWRlPSExO3JldHVybn11Py5yZWxhdGVkVGFyZ2V0JiYoKGQ9dGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIT1udWxsJiZkLmNvbnRhaW5zKHUucmVsYXRlZFRhcmdldCkpfHx1Py5yZWxhdGVkVGFyZ2V0IT09dGhpcy5lZGl0b3Iudmlldy5kb20mJnRoaXMuaGlkZSgpfSx0aGlzLnRyYW5zYWN0aW9uSGFuZGxlcj0oe3RyYW5zYWN0aW9uOnV9KT0+e2NvbnN0IGQ9dS5nZXRNZXRhKHRoaXMucGx1Z2luS2V5KTtkPT09InVwZGF0ZVBvc2l0aW9uIj90aGlzLnVwZGF0ZVBvc2l0aW9uKCk6ZCYmdHlwZW9mIGQ9PSJvYmplY3QiJiZkLnR5cGU9PT0idXBkYXRlT3B0aW9ucyI/dGhpcy51cGRhdGVPcHRpb25zKGQub3B0aW9ucyk6ZD09PSJoaWRlIj90aGlzLmhpZGUoKTpkPT09InNob3ciJiYodGhpcy51cGRhdGVQb3NpdGlvbigpLHRoaXMuc2hvdygpKX0sdGhpcy5yZXNpemVIYW5kbGVyPSgpPT57dGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyKSx0aGlzLnJlc2l6ZURlYm91bmNlVGltZXI9d2luZG93LnNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9LHRoaXMucmVzaXplRGVsYXkpfTt2YXIgYzt0aGlzLmVkaXRvcj1uLHRoaXMuZWxlbWVudD1lLHRoaXMudmlldz10LHRoaXMucGx1Z2luS2V5PXIsdGhpcy51cGRhdGVEZWxheT1zLHRoaXMucmVzaXplRGVsYXk9aSx0aGlzLmFwcGVuZFRvPWwsdGhpcy5zY3JvbGxUYXJnZXQ9KGM9bz8uc2Nyb2xsVGFyZ2V0KSE9bnVsbD9jOndpbmRvdyx0aGlzLmZsb2F0aW5nVUlPcHRpb25zPXsuLi50aGlzLmZsb2F0aW5nVUlPcHRpb25zLC4uLm99LHRoaXMuZWxlbWVudC50YWJJbmRleD0wLGEmJih0aGlzLnNob3VsZFNob3c9YSksdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5tb3VzZWRvd25IYW5kbGVyLHtjYXB0dXJlOiEwfSksdGhpcy5lZGl0b3Iub24oImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub24oImJsdXIiLHRoaXMuYmx1ckhhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJ0cmFuc2FjdGlvbiIsdGhpcy50cmFuc2FjdGlvbkhhbmRsZXIpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMudXBkYXRlKHQsdC5zdGF0ZSksdGhpcy5nZXRTaG91bGRTaG93KCkmJih0aGlzLnNob3coKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpfWdldFRleHRDb250ZW50KG4pe3JldHVybiByZChuLHt0ZXh0U2VyaWFsaXplcnM6JG8odGhpcy5lZGl0b3Iuc2NoZW1hKX0pfWdldCBtaWRkbGV3YXJlcygpe2NvbnN0IG49W107cmV0dXJuIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuZmxpcCYmbi5wdXNoKHNjKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXAhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXA6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdCYmbi5wdXNoKGljKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0IT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9mZnNldCYmbi5wdXNoKG9jKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9mZnNldCE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXJyb3cmJm4ucHVzaChsYyh0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmFycm93KSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaXplJiZuLnB1c2goYWModHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZSE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZTp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQmJm4ucHVzaChjYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50IT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaGlkZSYmbi5wdXNoKHVjKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGUhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGU6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5pbmxpbmUmJm4ucHVzaChkYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5pbmxpbmUhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZTp2b2lkIDApKSxufWdldFNob3VsZFNob3cobil7dmFyIGU7Y29uc3R7c3RhdGU6dH09dGhpcy52aWV3LHtzZWxlY3Rpb246cn09dCx7cmFuZ2VzOnN9PXIsaT1NYXRoLm1pbiguLi5zLm1hcChhPT5hLiRmcm9tLnBvcykpLG89TWF0aC5tYXgoLi4ucy5tYXAoYT0+YS4kdG8ucG9zKSk7cmV0dXJuKGU9dGhpcy5zaG91bGRTaG93KT09bnVsbD92b2lkIDA6ZS5jYWxsKHRoaXMse2VkaXRvcjp0aGlzLmVkaXRvcix2aWV3OnRoaXMudmlldyxzdGF0ZTp0LG9sZFN0YXRlOm4sZnJvbTppLHRvOm99KX11cGRhdGVPcHRpb25zKG4pe3ZhciBlO2lmKG4udXBkYXRlRGVsYXkhPT12b2lkIDAmJih0aGlzLnVwZGF0ZURlbGF5PW4udXBkYXRlRGVsYXkpLG4ucmVzaXplRGVsYXkhPT12b2lkIDAmJih0aGlzLnJlc2l6ZURlbGF5PW4ucmVzaXplRGVsYXkpLG4uYXBwZW5kVG8hPT12b2lkIDAmJih0aGlzLmFwcGVuZFRvPW4uYXBwZW5kVG8pLG4uc2hvdWxkU2hvdyE9PXZvaWQgMCYmbi5zaG91bGRTaG93JiYodGhpcy5zaG91bGRTaG93PW4uc2hvdWxkU2hvdyksbi5vcHRpb25zIT09dm9pZCAwKXtjb25zdCB0PShlPW4ub3B0aW9ucy5zY3JvbGxUYXJnZXQpIT1udWxsP2U6d2luZG93O3QhPT10aGlzLnNjcm9sbFRhcmdldCYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldD10LHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5uLm9wdGlvbnN9fX11cGRhdGVQb3NpdGlvbigpe2NvbnN0e3NlbGVjdGlvbjpufT10aGlzLmVkaXRvci5zdGF0ZSxlPWNkKHRoaXMudmlldyxuLmZyb20sbi50byk7aGMoe2dldEJvdW5kaW5nQ2xpZW50UmVjdDooKT0+ZSxnZXRDbGllbnRSZWN0czooKT0+W2VdfSx0aGlzLmVsZW1lbnQse3BsYWNlbWVudDp0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnBsYWNlbWVudCxzdHJhdGVneTp0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnN0cmF0ZWd5LG1pZGRsZXdhcmU6dGhpcy5taWRkbGV3YXJlc30pLnRoZW4oKHt4OnIseTpzLHN0cmF0ZWd5OmksbWlkZGxld2FyZURhdGE6b30pPT57dmFyIGwsYTtpZigobD1vLmhpZGUpIT1udWxsJiZsLnJlZmVyZW5jZUhpZGRlbnx8KGE9by5oaWRlKSE9bnVsbCYmYS5lc2NhcGVkKXt0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtyZXR1cm59dGhpcy5lbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiLHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aD0ibWF4LWNvbnRlbnQiLHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbj1pLHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0PWAke3J9cHhgLHRoaXMuZWxlbWVudC5zdHlsZS50b3A9YCR7c31weGAsdGhpcy5pc1Zpc2libGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25VcGRhdGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25VcGRhdGUoKX0pfXVwZGF0ZShuLGUpe2NvbnN0IHQ9IWU/LnNlbGVjdGlvbi5lcShuLnN0YXRlLnNlbGVjdGlvbikscj0hZT8uZG9jLmVxKG4uc3RhdGUuZG9jKTt0aGlzLnVwZGF0ZUhhbmRsZXIobix0LHIsZSl9c2hvdygpe3ZhciBuO2lmKHRoaXMuaXNWaXNpYmxlKXJldHVybjt0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLm9wYWNpdHk9IjEiO2NvbnN0IGU9dHlwZW9mIHRoaXMuYXBwZW5kVG89PSJmdW5jdGlvbiI/dGhpcy5hcHBlbmRUbygpOnRoaXMuYXBwZW5kVG87KG49ZT8/dGhpcy52aWV3LmRvbS5wYXJlbnRFbGVtZW50KT09bnVsbHx8bi5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25TaG93JiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uU2hvdygpLHRoaXMuaXNWaXNpYmxlPSEwfWhpZGUoKXt0aGlzLmlzVmlzaWJsZSYmKHRoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuZWxlbWVudC5zdHlsZS5vcGFjaXR5PSIwIix0aGlzLmVsZW1lbnQucmVtb3ZlKCksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkhpZGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25IaWRlKCksdGhpcy5pc1Zpc2libGU9ITEpfWRlc3Ryb3koKXt0aGlzLmhpZGUoKSx0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm1vdXNlZG93bkhhbmRsZXIse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoInRyYW5zYWN0aW9uIix0aGlzLnRyYW5zYWN0aW9uSGFuZGxlciksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkRlc3Ryb3kmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25EZXN0cm95KCl9fSxnaz1uPT5uZXcgRyh7a2V5OnR5cGVvZiBuLnBsdWdpbktleT09InN0cmluZyI/bmV3IHEobi5wbHVnaW5LZXkpOm4ucGx1Z2luS2V5LHZpZXc6ZT0+bmV3IG1rKHt2aWV3OmUsLi4ubn0pfSkseWs9cnIoe25hbWU6IkZsb2F0aW5nTWVudSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntwbHVnaW5LZXk6e3R5cGU6bnVsbCxkZWZhdWx0OnZvaWQgMH0sZWRpdG9yOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sdXBkYXRlRGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6dm9pZCAwfSxyZXNpemVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDp2b2lkIDB9LG9wdGlvbnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LGFwcGVuZFRvOnt0eXBlOltPYmplY3QsRnVuY3Rpb25dLGRlZmF1bHQ6dm9pZCAwfSxzaG91bGRTaG93Ont0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6bnVsbH19LHNldHVwKG4se3Nsb3RzOmUsYXR0cnM6dH0pe3ZhciByO2NvbnN0IHM9UmUobnVsbCksaT0ocj1uLnBsdWdpbktleSkhPW51bGw/cjpuZXcgcSgiZmxvYXRpbmdNZW51Iik7cmV0dXJuIGNvKCgpPT57Y29uc3R7ZWRpdG9yOm8sdXBkYXRlRGVsYXk6bCxyZXNpemVEZWxheTphLG9wdGlvbnM6YyxhcHBlbmRUbzp1LHNob3VsZFNob3c6ZH09bixoPXMudmFsdWU7aCYmKGguc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixoLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaC5yZW1vdmUoKSxvLnJlZ2lzdGVyUGx1Z2luKGdrKHtwbHVnaW5LZXk6aSxlZGl0b3I6byxlbGVtZW50OmgsdXBkYXRlRGVsYXk6bCxyZXNpemVEZWxheTphLG9wdGlvbnM6YyxhcHBlbmRUbzp1LHNob3VsZFNob3c6ZH0pKSl9KSxPcygoKT0+e2NvbnN0e2VkaXRvcjpvfT1uO28udW5yZWdpc3RlclBsdWdpbihpKX0pLCgpPT57dmFyIG87cmV0dXJuIHVvKCJkaXYiLHtyZWY6cywuLi50fSwobz1lLmRlZmF1bHQpPT1udWxsP3ZvaWQgMDpvLmNhbGwoZSkpfX19KTtmdW5jdGlvbiBrayhuLGUpe2lmKCFlPy5zY2hlbWEpcmV0dXJuITE7Y29uc3QgdD10eXBlb2Ygbj09InN0cmluZyI/bjpuLm5hbWU7cmV0dXJuIGUuc2NoZW1hLnNwZWMubWFya3MuZ2V0KHQpIT09dm9pZCAwfWZ1bmN0aW9uIEd0KG4sZSl7aWYoIW4pcmV0dXJuITE7Y29uc3R7c2VsZWN0aW9uOnR9PW4uc3RhdGUseyRmcm9tOnIsdG86c309dDtyZXR1cm4gZS5zb21lKGk9Pm4uc3RhdGUuZG9jLm5vZGVzQmV0d2VlbihyLnBvcyxzLG89Pm8udHlwZS5uYW1lPT09aSkpfWZ1bmN0aW9uIGt0KG4sZSl7cmV0dXJuIG4/bi5leHRlbnNpb25NYW5hZ2VyLmV4dGVuc2lvbnMuc29tZSh0PT50Lm5hbWU9PT1lKTohMX1mdW5jdGlvbiBBYShuKXtjb25zdCBlPWB0b2dnbGUke24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtuLnNsaWNlKDEpfWA7cmV0dXJue2NhbkV4ZWN1dGU6dD0+dC5jYW4oKVtlXSgpLGV4ZWN1dGU6dD0+dC5jaGFpbigpLmZvY3VzKClbZV0oKSxpc0FjdGl2ZTp0PT50LmlzQWN0aXZlKG4pLGlzRGlzYWJsZWQ6dD0+R3QodCxbImltYWdlIl0pfHx0LmlzQWN0aXZlKCJjb2RlIil9fWZ1bmN0aW9uIE9hKG4pe2NvbnN0IGU9YHNldCR7bi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke24uc2xpY2UoMSl9YDtyZXR1cm57Y2FuRXhlY3V0ZTp0PT50LmNhbigpW2VdKCksZXhlY3V0ZTp0PT50LmNoYWluKCkuZm9jdXMoKVtlXSgpLGlzQWN0aXZlOnQ9PnQuaXNBY3RpdmUobiksaXNEaXNhYmxlZDp0PT5HdCh0LFsiaW1hZ2UiXSl8fHQuaXNBY3RpdmUoImNvZGUiKX19ZnVuY3Rpb24gTmEobil7cmV0dXJue2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKVtuXSgpLGV4ZWN1dGU6ZT0+ZS5jaGFpbigpW25dKCksaXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBiaygpe3JldHVybntjYW5FeGVjdXRlOihuLGUpPT5uLmNhbigpLnRvZ2dsZU1hcmsoZS5tYXJrKSxleGVjdXRlOihuLGUpPT5uLmNoYWluKCkuZm9jdXMoKS50b2dnbGVNYXJrKGUubWFyayksaXNBY3RpdmU6KG4sZSk9Pm4uaXNBY3RpdmUoZS5tYXJrKSxpc0Rpc2FibGVkOihuLGUpPT4ha2soZS5tYXJrLG4pfHxHdChuLFsiaW1hZ2UiXSl9fWZ1bmN0aW9uIHhrKCl7cmV0dXJue2NhbkV4ZWN1dGU6KG4sZSk9Pm4uY2FuKCkuc2V0VGV4dEFsaWduKGUuYWxpZ24pLGV4ZWN1dGU6KG4sZSk9Pm4uY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbihlLmFsaWduKSxpc0FjdGl2ZToobixlKT0+bi5pc0FjdGl2ZSh7dGV4dEFsaWduOmUuYWxpZ259KSxpc0Rpc2FibGVkOm49PiFrdChuLCJ0ZXh0QWxpZ24iKXx8R3QobixbImltYWdlIiwiaG9yaXpvbnRhbFJ1bGUiXSl9fWZ1bmN0aW9uIHdrKCl7cmV0dXJue2NhbkV4ZWN1dGU6KG4sZSk9Pm4uY2FuKCkudG9nZ2xlSGVhZGluZyh7bGV2ZWw6ZS5sZXZlbH0pLGV4ZWN1dGU6KG4sZSk9Pm4uY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRpbmcoe2xldmVsOmUubGV2ZWx9KSxpc0FjdGl2ZToobixlKT0+bi5pc0FjdGl2ZSgiaGVhZGluZyIse2xldmVsOmUubGV2ZWx9KSxpc0Rpc2FibGVkOm49Pkd0KG4sWyJpbWFnZSJdKXx8bi5pc0FjdGl2ZSgiY29kZSIpfX1mdW5jdGlvbiB2aygpe3JldHVybntjYW5FeGVjdXRlOm49Pm4uY2FuKCkuc2V0TGluayh7aHJlZjoiIn0pfHxuLmNhbigpLnVuc2V0TGluaygpLGV4ZWN1dGU6KG4sZSk9Pntjb25zdCB0PW4uY2hhaW4oKSxyPW4uZ2V0QXR0cmlidXRlcygibGluayIpLmhyZWYscz1uLmlzQWN0aXZlKCJjb2RlIik7aWYocilyZXR1cm4gdC5mb2N1cygpLnVuc2V0TGluaygpO2NvbnN0IGk9ZT8uaHJlZnx8cHJvbXB0KCJFbnRlciB0aGUgVVJMOiIpO3JldHVybiBpP3M/dC5mb2N1cygpLmV4dGVuZE1hcmtSYW5nZSgiY29kZSIpLnNldExpbmsoe2hyZWY6aX0pOnQuZm9jdXMoKS5zZXRMaW5rKHtocmVmOml9KTp0fSxpc0FjdGl2ZTpuPT5uLmlzQWN0aXZlKCJsaW5rIiksaXNEaXNhYmxlZDpuPT57aWYoIWt0KG4sImxpbmsiKXx8R3QobixbImltYWdlIl0pKXJldHVybiEwO2NvbnN0e3NlbGVjdGlvbjplfT1uLnN0YXRlO3JldHVybiBlLmVtcHR5JiYhbi5pc0FjdGl2ZSgibGluayIpfX19ZnVuY3Rpb24gU2soKXtyZXR1cm57Y2FuRXhlY3V0ZTpuPT5uLmNhbigpLnNldEltYWdlKHtzcmM6IiJ9KSxleGVjdXRlOihuLGUpPT57Y29uc3QgdD1uLmNoYWluKCkuZm9jdXMoKTtpZihlPy5zcmMpcmV0dXJuIHQuc2V0SW1hZ2Uoe3NyYzplLnNyY30pO2NvbnN0IHI9cHJvbXB0KCJFbnRlciB0aGUgaW1hZ2UgVVJMOiIpO3JldHVybiByP3Quc2V0SW1hZ2Uoe3NyYzpyfSk6dH0saXNBY3RpdmU6bj0+bi5pc0FjdGl2ZSgiaW1hZ2UiKSxpc0Rpc2FibGVkOm49PiFrdChuLCJpbWFnZSIpfX1mdW5jdGlvbiBnaShuKXtjb25zdCB0PXtidWxsZXRMaXN0OiJ0b2dnbGVCdWxsZXRMaXN0IixvcmRlcmVkTGlzdDoidG9nZ2xlT3JkZXJlZExpc3QiLHRhc2tMaXN0OiJ0b2dnbGVUYXNrTGlzdCJ9W25dLHI9bj09PSJ0YXNrTGlzdCI/InRhc2tJdGVtIjoibGlzdEl0ZW0iLHM9WyJidWxsZXRMaXN0Iiwib3JkZXJlZExpc3QiLCJ0YXNrTGlzdCJdO3JldHVybntjYW5FeGVjdXRlOmk9PmkuY2FuKClbdF0oKXx8aS5pc0FjdGl2ZSgibGlzdEl0ZW0iKXx8cy5zb21lKG89Pmt0KGksbykmJmkuaXNBY3RpdmUobykpLGV4ZWN1dGU6aT0+e2NvbnN0e3N0YXRlOm99PWkse3NlbGVjdGlvbjpsfT1vO2xldCBhPWkuY2hhaW4oKS5mb2N1cygpO2lmKGwubm9kZSl7Y29uc3QgYz1sLm5vZGUsdT1jLmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQsZD1jLmxhc3RDaGlsZD8ubGFzdENoaWxkLGg9dT9sLmZyb20rdS5ub2RlU2l6ZTpsLmZyb20rMSxmPWQ/bC50by1kLm5vZGVTaXplOmwudG8tMTthPWEuc2V0VGV4dFNlbGVjdGlvbih7ZnJvbTpoLHRvOmZ9KS5jbGVhck5vZGVzKCl9aWYoaS5pc0FjdGl2ZShuKSl7bGV0IGM9YS5saWZ0TGlzdEl0ZW0ocik7Zm9yKGNvbnN0IHUgb2YgcylrdChpLHUpJiYoYz1jLmxpZnQodSkpO3JldHVybiBjLnNlbGVjdFRleHRibG9ja0VuZCgpfWlmKHMuc29tZShjPT5rdChpLGMpJiZpLmlzQWN0aXZlKGMpKSl7Y29uc3QgYz1pLmlzQWN0aXZlKCJ0YXNrTGlzdCIpPyJ0YXNrSXRlbSI6Imxpc3RJdGVtIjtsZXQgdT1hLmxpZnRMaXN0SXRlbShjKTtmb3IoY29uc3QgZCBvZiBzKWt0KGksZCkmJih1PXUubGlmdChkKSk7cmV0dXJuIHVbdF0oKS5zZWxlY3RUZXh0YmxvY2tFbmQoKX1yZXR1cm4gYVt0XSgpLnNlbGVjdFRleHRibG9ja0VuZCgpfSxpc0FjdGl2ZTppPT5pLmlzQWN0aXZlKG4pLGlzRGlzYWJsZWQ6aT0+a3QoaSxuKT9HdChpLFsiaW1hZ2UiXSl8fGkuaXNBY3RpdmUoImNvZGUiKTohMH19ZnVuY3Rpb24gUmEobil7cmV0dXJue2NhbkV4ZWN1dGU6KGUsdCk9PntpZih0Py5wb3M9PW51bGx8fCFlLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpKXJldHVybiExO2NvbnN0IHM9ZS5zdGF0ZS5kb2MucmVzb2x2ZSh0LnBvcyksaT1zLnBhcmVudCxvPXMuaW5kZXgoKTtyZXR1cm4gbj09PSJ1cCI/bz4wOm88aS5jaGlsZENvdW50LTF9LGV4ZWN1dGU6KGUsdCk9PntpZih0Py5wb3M9PW51bGwpcmV0dXJuIGUuY2hhaW4oKTtjb25zdCByPWUuc3RhdGUuZG9jLm5vZGVBdCh0LnBvcyk7aWYoIXIpcmV0dXJuIGUuY2hhaW4oKTtjb25zdCBzPWUuc3RhdGUuZG9jLnJlc29sdmUodC5wb3MpLGk9cy5wYXJlbnQsbz1zLmluZGV4KCk7aWYobj09PSJ1cCImJm8+MCl7Y29uc3QgbD1pLmNoaWxkKG8tMSksYT10LnBvcy1sLm5vZGVTaXplO3JldHVybiBlLmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTp0LnBvcyx0bzp0LnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KGEsci50b0pTT04oKSl9aWYobj09PSJkb3duIiYmbzxpLmNoaWxkQ291bnQtMSl7Y29uc3QgbD1pLmNoaWxkKG8rMSksYT10LnBvcytsLm5vZGVTaXplO3JldHVybiBlLmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTp0LnBvcyx0bzp0LnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KGEsci50b0pTT04oKSl9cmV0dXJuIGUuY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBEZCgpe3JldHVybnttYXJrOmJrKCksdGV4dEFsaWduOnhrKCksaGVhZGluZzp3aygpLGxpbms6dmsoKSxpbWFnZTpTaygpLGJsb2NrcXVvdGU6QWEoImJsb2NrcXVvdGUiKSxidWxsZXRMaXN0OmdpKCJidWxsZXRMaXN0Iiksb3JkZXJlZExpc3Q6Z2koIm9yZGVyZWRMaXN0IiksdGFza0xpc3Q6Z2koInRhc2tMaXN0IiksY29kZUJsb2NrOkFhKCJjb2RlQmxvY2siKSxob3Jpem9udGFsUnVsZTpPYSgiaG9yaXpvbnRhbFJ1bGUiKSxwYXJhZ3JhcGg6T2EoInBhcmFncmFwaCIpLHVuZG86TmEoInVuZG8iKSxyZWRvOk5hKCJyZWRvIiksY2xlYXJGb3JtYXR0aW5nOntjYW5FeGVjdXRlOihuLGUpPT5lPy5wb3MhPW51bGw/ISFuLnN0YXRlLmRvYy5ub2RlQXQoZS5wb3MpOm4uY2FuKCkuY2xlYXJOb2RlcygpfHxuLmNhbigpLnVuc2V0QWxsTWFya3MoKSxleGVjdXRlOihuLGUpPT57aWYoZT8ucG9zIT1udWxsKXtjb25zdCB0PW4uc3RhdGUuZG9jLm5vZGVBdChlLnBvcyk7aWYoIXQpcmV0dXJuIG4uY2hhaW4oKTtjb25zdCByPWUucG9zKzEscz1lLnBvcyt0Lm5vZGVTaXplLTE7cmV0dXJuIG4uY2hhaW4oKS5mb2N1cygpLnNldFRleHRTZWxlY3Rpb24oe2Zyb206cix0bzpzfSkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX1yZXR1cm4gbi5jaGFpbigpLmZvY3VzKCkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxkdXBsaWNhdGU6e2NhbkV4ZWN1dGU6KG4sZSk9PmU/LnBvcz09bnVsbD8hMTohIW4uc3RhdGUuZG9jLm5vZGVBdChlLnBvcyksZXhlY3V0ZToobixlKT0+e2lmKGU/LnBvcz09bnVsbClyZXR1cm4gbi5jaGFpbigpO2NvbnN0IHQ9bi5zdGF0ZS5kb2Mubm9kZUF0KGUucG9zKTtyZXR1cm4gdD9uLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQoZS5wb3MrdC5ub2RlU2l6ZSx0LnRvSlNPTigpKTpuLmNoYWluKCl9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sZGVsZXRlOntjYW5FeGVjdXRlOihuLGUpPT5lPy5wb3M9PW51bGw/ITE6ISFuLnN0YXRlLmRvYy5ub2RlQXQoZS5wb3MpLGV4ZWN1dGU6KG4sZSk9PntpZihlPy5wb3M9PW51bGwpcmV0dXJuIG4uY2hhaW4oKTtjb25zdCB0PW4uc3RhdGUuZG9jLm5vZGVBdChlLnBvcyk7cmV0dXJuIHQ/bi5jaGFpbigpLmZvY3VzKCkuZGVsZXRlUmFuZ2Uoe2Zyb206ZS5wb3MsdG86ZS5wb3MrdC5ub2RlU2l6ZX0pOm4uY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxtb3ZlVXA6UmEoInVwIiksbW92ZURvd246UmEoImRvd24iKSxzdWdnZXN0aW9uOntjYW5FeGVjdXRlOigpPT4hMCxleGVjdXRlOihuLGUpPT57Y29uc3R7c3RhdGU6dH09bix7c2VsZWN0aW9uOnJ9PXQseyRmcm9tOnN9PXI7aWYoZT8ucG9zIT09dm9pZCAwKXtjb25zdCBhPXQuZG9jLm5vZGVBdChlLnBvcyk7aWYoYSl7Y29uc3QgYz1lLnBvcythLm5vZGVTaXplO3JldHVybiBuLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQoYyx7dHlwZToicGFyYWdyYXBoIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDoiLyJ9XX0pfX1jb25zdCBpPXMubm9kZShzLmRlcHRoKSxsPXMuYmVmb3JlKHMuZGVwdGgpK2kubm9kZVNpemU7cmV0dXJuIG4uY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnRBdChsLHt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OiIvIn1dfSl9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sbWVudGlvbjp7Y2FuRXhlY3V0ZTooKT0+ITAsZXhlY3V0ZTpuPT57Y29uc3R7c3RhdGU6ZX09bix7c2VsZWN0aW9uOnR9PWUseyRmcm9tOnJ9PXQscz1yLnBhcmVudC50ZXh0QmV0d2VlbihNYXRoLm1heCgwLHIucGFyZW50T2Zmc2V0LTEpLHIucGFyZW50T2Zmc2V0LHZvaWQgMCwiICIpLGk9cyYmcyE9PSIgIjtyZXR1cm4gbi5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0Q29udGVudChpPyIgQCI6IkAiKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxlbW9qaTp7Y2FuRXhlY3V0ZTooKT0+ITAsZXhlY3V0ZTpuPT57Y29uc3R7c3RhdGU6ZX09bix7c2VsZWN0aW9uOnR9PWUseyRmcm9tOnJ9PXQscz1yLnBhcmVudC50ZXh0QmV0d2VlbihNYXRoLm1heCgwLHIucGFyZW50T2Zmc2V0LTEpLHIucGFyZW50T2Zmc2V0LHZvaWQgMCwiICIpLGk9cyYmcyE9PSIgIjtyZXR1cm4gbi5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0Q29udGVudChpPyIgOiI6IjoiKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX19Y29uc3QgQ2s9e3Nsb3RzOntyb290OiJmb2N1czpvdXRsaW5lLW5vbmUiLGJhc2U6ImZsZXggaXRlbXMtc3RyZXRjaCBnYXAtMS41Iixncm91cDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNSIsc2VwYXJhdG9yOiJ3LXB4IHNlbGYtc3RyZXRjaCBiZy1ib3JkZXIifSx2YXJpYW50czp7bGF5b3V0OntidWJibGU6e2Jhc2U6ImJnLWRlZmF1bHQgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgcC0xIn0sZmxvYXRpbmc6e2Jhc2U6ImJnLWRlZmF1bHQgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgcC0xIn0sZml4ZWQ6e2Jhc2U6IiJ9fX19LFRrPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUVkaXRvclRvb2xiYXIiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZ2hvc3QifSxhY3RpdmVDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InByaW1hcnkifSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic29mdCJ9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzbSJ9LGl0ZW1zOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGVkaXRvcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGF5b3V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJmaXhlZCJ9LHBsdWdpbktleTp7dHlwZTpbT2JqZWN0LFN0cmluZ10scmVxdWlyZWQ6ITF9LHVwZGF0ZURlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0scmVzaXplRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaG91bGRTaG93Ont0eXBlOltGdW5jdGlvbixudWxsXSxyZXF1aXJlZDohMX0sYXBwZW5kVG86e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZT1uLHQ9ZmMoKSxyPXBjKCJlZGl0b3JUb29sYmFyIixlKSxzPXdoKCJlZGl0b3JIYW5kbGVycyIsbGUoKCk9PkRkKCkpKSxpPWxlKCgpPT4oe2J1YmJsZTpwayxmbG9hdGluZzp5ayxmaXhlZDoidGVtcGxhdGUifSlbZS5sYXlvdXRdKSxvPW1jKGdjKGUsImFzIiwiY29sb3IiLCJ2YXJpYW50IiwiYWN0aXZlQ29sb3IiLCJhY3RpdmVWYXJpYW50Iiwic2l6ZSIsIml0ZW1zIiwibGF5b3V0IiwiZWRpdG9yIiwiY2xhc3MiLCJ1aSIpKSxsPWxlKCgpPT5ndChlLm9wdGlvbnMse29mZnNldDo4LHNoaWZ0OntwYWRkaW5nOjh9fSkpLGE9bGUoKCk9PnpyKHtleHRlbmQ6enIoQ2spLC4uLnQudWk/LmVkaXRvclRvb2xiYXJ8fHt9fSkoe2xheW91dDplLmxheW91dH0pKSxjPWxlKCgpPT5lLml0ZW1zPy5sZW5ndGg/ZHIoZS5pdGVtcyk/ZS5pdGVtczpbZS5pdGVtc106W10pO2Z1bmN0aW9uIHUoayl7cmV0dXJuIGUuZWRpdG9yPy5pc0VkaXRhYmxlPyJpdGVtcyJpbiBrJiZrLml0ZW1zPy5sZW5ndGg/ay5pdGVtcz8uc29tZSh3PT51KHcpKXx8ITE6ImtpbmQiaW4gaz9zPy52YWx1ZT8uW2sua2luZF0/LmlzQWN0aXZlKGUuZWRpdG9yLGspfHwhMTprLmFjdGl2ZT8/ITE6ITF9ZnVuY3Rpb24gZChrKXtpZighZS5lZGl0b3I/LmlzRWRpdGFibGUpcmV0dXJuITA7aWYoIml0ZW1zImluIGsmJmsuaXRlbXM/Lmxlbmd0aCl7Y29uc3QgeD0oZHIoay5pdGVtcyk/ay5pdGVtcy5mbGF0KCk6ay5pdGVtcykuZmlsdGVyKHY9PnYudHlwZSE9PSJzZXBhcmF0b3IiJiZ2LnR5cGUhPT0ibGFiZWwiKTtyZXR1cm4geC5sZW5ndGg9PT0wPyEwOnguZXZlcnkodj0+ZCh2KSl9aWYoISgia2luZCJpbiBrKSlyZXR1cm4gay5kaXNhYmxlZD8/ITE7Y29uc3QgYj1zPy52YWx1ZT8uW2sua2luZF07cmV0dXJuIGI/Yi5pc0Rpc2FibGVkPy4oZS5lZGl0b3Isayk/ITA6IWIuY2FuRXhlY3V0ZShlLmVkaXRvcixrKTohMX1mdW5jdGlvbiBoKGssYil7aWYoIWUuZWRpdG9yPy5pc0VkaXRhYmxlfHxkKGIpKXJldHVybjtpZigiaXRlbXMiaW4gYnx8ISgia2luZCJpbiBiKSl7aWYoIm9uQ2xpY2siaW4gYilmb3IoY29uc3QgeCBvZiBBcnJheS5pc0FycmF5KGIub25DbGljayk/Yi5vbkNsaWNrOltiLm9uQ2xpY2tdKXg/LihrKTtyZXR1cm59Y29uc3Qgdz1zPy52YWx1ZT8uW2Iua2luZF07dyYmdy5leGVjdXRlKGUuZWRpdG9yLGIpLnJ1bigpfWZ1bmN0aW9uIGYoayl7cmV0dXJuIGsuaXRlbXM/KGRyKGsuaXRlbXMpP2suaXRlbXMuZmxhdCgpOmsuaXRlbXMpLmZpbmQodz0+ImtpbmQiaW4gdz91KHcpOiExKTp2b2lkIDB9ZnVuY3Rpb24gcChrKXtjb25zdCBiPVNoKGssWyJraW5kIiwibWFyayIsImFsaWduIiwibGV2ZWwiLCJocmVmIiwic3JjIiwicG9zIiwiaXRlbXMiLCJzbG90IiwiY2hlY2tlZEljb24iLCJsb2FkaW5nSWNvbiIsImV4dGVybmFsSWNvbiIsImNvbnRlbnQiLCJhcnJvdyIsInBvcnRhbCIsIm1vZGFsIiwidG9vbHRpcCIsIm9uQ2xpY2siXSk7aWYoIml0ZW1zImluIGsmJmsuaXRlbXM/Lmxlbmd0aCl7Y29uc3Qgdz1mKGspO3c/Lmljb24mJihiLmljb249dy5pY29uKSx3Py5sYWJlbCYmYi5sYWJlbCE9PXZvaWQgMCYmKGIubGFiZWw9dy5sYWJlbCl9cmV0dXJuIGd0KGIse2NvbG9yOmUuY29sb3IsYWN0aXZlQ29sb3I6ZS5hY3RpdmVDb2xvcixhY3RpdmVWYXJpYW50OmUuYWN0aXZlVmFyaWFudCx2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZX0pfWZ1bmN0aW9uIG0oayl7Y29uc3QgYj12aChrLFsic2l6ZSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJjb250ZW50IiwiYXJyb3ciLCJwb3J0YWwiLCJtb2RhbCIsInVpIl0pO3JldHVybiBndChiLHttb2RhbDohMSxzaXplOmUuc2l6ZX0pfWZ1bmN0aW9uIGcoayl7Y29uc3QgYj0iY2hpbGRyZW4iaW4gayYmQXJyYXkuaXNBcnJheShrLmNoaWxkcmVuKT9rLmNoaWxkcmVuLm1hcChnKTp2b2lkIDA7aWYoISgia2luZCJpbiBrKSlyZXR1cm4gYj97Li4uayxjaGlsZHJlbjpifTprO2NvbnN0IHc9aztyZXR1cm57Li4udywuLi5iJiZ7Y2hpbGRyZW46Yn0sYWN0aXZlOnUodyksZGlzYWJsZWQ6ZCh3KSxvblNlbGVjdDp4PT5oKHgsdyl9fWZ1bmN0aW9uIHkoayl7cmV0dXJuIGsuaXRlbXM/ZHIoay5pdGVtcyk/ay5pdGVtcy5tYXAoYj0+Yi5tYXAoZykpOltrLml0ZW1zLm1hcChnKV06W119cmV0dXJuKGssYik9PihoZSgpLEJlKHooQWkpLHV0KHthczppLnZhbHVlfSxpLnZhbHVlIT09InRlbXBsYXRlIj97ZWRpdG9yOm4uZWRpdG9yLHRhYmluZGV4Oi0xLGNsYXNzOmEudmFsdWUucm9vdCh7Y2xhc3M6eihyKT8ucm9vdH0pLC4uLnoobyksb3B0aW9uczpsLnZhbHVlLC4uLmsuJGF0dHJzfTp7Li4uay4kYXR0cnN9KSx7ZGVmYXVsdDpkZSgoKT0+W1EoeihBaSkse2FzOm4uYXMscm9sZToidG9vbGJhciIsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOlJuKGEudmFsdWUuYmFzZSh7Y2xhc3M6W3oocik/LmJhc2UsZS5jbGFzc119KSl9LHtkZWZhdWx0OmRlKCgpPT5bKGhlKCEwKSxzbihJbixudWxsLGZsKGMudmFsdWUsKHcseCk9PihoZSgpLHNuKEluLHtrZXk6YGdyb3VwLSR7eH1gfSxbT3IoImRpdiIse3JvbGU6Imdyb3VwIiwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlJuKGEudmFsdWUuZ3JvdXAoe2NsYXNzOnoocik/Lmdyb3VwfSkpfSxbKGhlKCEwKSxzbihJbixudWxsLGZsKHcsKHYsQyk9PnljKGsuJHNsb3RzLHYuc2xvdHx8Iml0ZW0iLHtrZXk6YGdyb3VwLSR7eH0tJHtDfWAsaXRlbTp2LGluZGV4OkMsaXNBY3RpdmU6dSxpc0Rpc2FibGVkOmQsb25DbGljazpofSwoKT0+WyJpdGVtcyJpbiB2JiZ2Lml0ZW1zPy5sZW5ndGg/KGhlKCksQmUoamgsdXQoe2tleTowLHJlZl9mb3I6ITB9LG0odikse2l0ZW1zOnkodil9KSx7ZGVmYXVsdDpkZSgoKT0+W3YudG9vbHRpcD8oaGUoKSxCZShtbCx1dCh7a2V5OjAsZGlzYWJsZWQ6ZCh2KX0se3JlZl9mb3I6ITB9LHsuLi52LnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6ZGUoKCk9PltRKFNuLHV0KHthY3RpdmU6dSh2KSxkaXNhYmxlZDpkKHYpfSx7cmVmX2ZvcjohMH0scCh2KSx7b25DbGljazpNPT5oKE0sdil9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pXSksXzoyfSwxMDQwLFsiZGlzYWJsZWQiXSkpOihoZSgpLEJlKFNuLHV0KHtrZXk6MSxhY3RpdmU6dSh2KSxkaXNhYmxlZDpkKHYpfSx7cmVmX2ZvcjohMH0scCh2KSx7b25DbGljazpNPT5oKE0sdil9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pKV0pLF86Mn0sMTA0MCxbIml0ZW1zIl0pKTp2LnRvb2x0aXA/KGhlKCksQmUobWwsdXQoe2tleToxLGRpc2FibGVkOmQodil9LHtyZWZfZm9yOiEwfSx7Li4udi50b29sdGlwfHx7fX0pLHtkZWZhdWx0OmRlKCgpPT5bUShTbix1dCh7YWN0aXZlOnUodiksZGlzYWJsZWQ6ZCh2KX0se3JlZl9mb3I6ITB9LHAodikse3VpOnYudWksb25DbGljazpNPT5oKE0sdil9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJ1aSIsIm9uQ2xpY2siXSldKSxfOjJ9LDEwNDAsWyJkaXNhYmxlZCJdKSk6KGhlKCksQmUoU24sdXQoe2tleToyLGFjdGl2ZTp1KHYpLGRpc2FibGVkOmQodil9LHtyZWZfZm9yOiEwfSxwKHYpLHt1aTp2LnVpLG9uQ2xpY2s6TT0+aChNLHYpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwidWkiLCJvbkNsaWNrIl0pKV0pKSwxMjgpKV0sMikseDxjLnZhbHVlLmxlbmd0aC0xPyhoZSgpLEJlKHooVWgpLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpSbihhLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6eihyKT8uc2VwYXJhdG9yfSkpLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCJ9LG51bGwsOCxbImNsYXNzIl0pKTpEbigiIiwhMCldLDY0KSkpLDEyOCkpXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKV0pLF86M30sMTYsWyJhcyJdKSl9fSk7dmFyIE1rPS8oXnxbXmBdKWAoW15gXSspYCg/IWApJC8sRWs9LyhefFteYF0pYChbXmBdKylgKD8hYCkvZyxMZD1KdC5jcmVhdGUoe25hbWU6ImNvZGUiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxleGNsdWRlczoiXyIsY29kZTohMCxleGl0YWJsZTohMCxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoiY29kZSJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsiY29kZSIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsbiksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJjb2Rlc3BhbiIscGFyc2VNYXJrZG93bjoobixlKT0+ZS5hcHBseU1hcmsoImNvZGUiLFt7dHlwZToidGV4dCIsdGV4dDpuLnRleHR8fCIifV0pLHJlbmRlck1hcmtkb3duOihuLGUpPT5uLmNvbnRlbnQ/YFxgJHtlLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCl9XGBgOiIiLGFkZENvbW1hbmRzKCl7cmV0dXJue3NldENvZGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVDb2RlOigpPT4oe2NvbW1hbmRzOm59KT0+bi50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRDb2RlOigpPT4oe2NvbW1hbmRzOm59KT0+bi51bnNldE1hcmsodGhpcy5uYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtZSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUNvZGUoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6TWssdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bcXQoe2ZpbmQ6RWssdHlwZTp0aGlzLnR5cGV9KV19fSksQWs9TGQsUGQ9U2UuY3JlYXRlKHtuYW1lOiJob3Jpem9udGFsUnVsZSIsYWRkT3B0aW9ucygpe3JldHVybntIVE1MQXR0cmlidXRlczp7fSxuZXh0Tm9kZVR5cGU6InBhcmFncmFwaCJ9fSxncm91cDoiYmxvY2siLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJociJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsiaHIiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImhyIixwYXJzZU1hcmtkb3duOihuLGUpPT5lLmNyZWF0ZU5vZGUoImhvcml6b250YWxSdWxlIikscmVuZGVyTWFya2Rvd246KCk9PiItLS0iLGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEhvcml6b250YWxSdWxlOigpPT4oe2NoYWluOm4sc3RhdGU6ZX0pPT57aWYoIUt5KGUsZS5zY2hlbWEubm9kZXNbdGhpcy5uYW1lXSkpcmV0dXJuITE7Y29uc3R7c2VsZWN0aW9uOnR9PWUseyR0bzpyfT10LHM9bigpO3JldHVybiBvZCh0KT9zLmluc2VydENvbnRlbnRBdChyLnBvcyx7dHlwZTp0aGlzLm5hbWV9KTpzLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSkscy5jb21tYW5kKCh7c3RhdGU6aSx0cjpvLGRpc3BhdGNoOmx9KT0+e2lmKGwpe2NvbnN0eyR0bzphfT1vLnNlbGVjdGlvbixjPWEuZW5kKCk7aWYoYS5ub2RlQWZ0ZXIpYS5ub2RlQWZ0ZXIuaXNUZXh0YmxvY2s/by5zZXRTZWxlY3Rpb24oRC5jcmVhdGUoby5kb2MsYS5wb3MrMSkpOmEubm9kZUFmdGVyLmlzQmxvY2s/by5zZXRTZWxlY3Rpb24oTi5jcmVhdGUoby5kb2MsYS5wb3MpKTpvLnNldFNlbGVjdGlvbihELmNyZWF0ZShvLmRvYyxhLnBvcykpO2Vsc2V7Y29uc3QgdT1pLnNjaGVtYS5ub2Rlc1t0aGlzLm9wdGlvbnMubmV4dE5vZGVUeXBlXXx8YS5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2guZGVmYXVsdFR5cGUsZD11Py5jcmVhdGUoKTtkJiYoby5pbnNlcnQoYyxkKSxvLnNldFNlbGVjdGlvbihELmNyZWF0ZShvLmRvYyxjKzEpKSl9by5zY3JvbGxJbnRvVmlldygpfXJldHVybiEwfSkucnVuKCl9fX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltDZCh7ZmluZDovXig/Oi0tLXzigJQtfF9fX1xzfFwqXCpcKlxzKSQvLHR5cGU6dGhpcy50eXBlfSldfX0pLE9rPVBkLE5rPS8oPzpefFxzKSghXFsoLit8Oj8pXVwoKFxTKykoPzooPzpccyspWyInXShcUyspWyInXSk/XCkpJC8sUms9U2UuY3JlYXRlKHtuYW1lOiJpbWFnZSIsYWRkT3B0aW9ucygpe3JldHVybntpbmxpbmU6ITEsYWxsb3dCYXNlNjQ6ITEsSFRNTEF0dHJpYnV0ZXM6e30scmVzaXplOiExfX0saW5saW5lKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pbmxpbmV9LGdyb3VwKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pbmxpbmU/ImlubGluZSI6ImJsb2NrIn0sZHJhZ2dhYmxlOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57c3JjOntkZWZhdWx0Om51bGx9LGFsdDp7ZGVmYXVsdDpudWxsfSx0aXRsZTp7ZGVmYXVsdDpudWxsfSx3aWR0aDp7ZGVmYXVsdDpudWxsfSxoZWlnaHQ6e2RlZmF1bHQ6bnVsbH19fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzp0aGlzLm9wdGlvbnMuYWxsb3dCYXNlNjQ/ImltZ1tzcmNdIjonaW1nW3NyY106bm90KFtzcmNePSJkYXRhOiJdKSd9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsiaW1nIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKV19LHBhcnNlTWFya2Rvd246KG4sZSk9PmUuY3JlYXRlTm9kZSgiaW1hZ2UiLHtzcmM6bi5ocmVmLHRpdGxlOm4udGl0bGUsYWx0Om4udGV4dH0pLHJlbmRlck1hcmtkb3duOm49Pnt2YXIgZSx0LHIscyxpLG87Y29uc3QgbD0odD0oZT1uLmF0dHJzKT09bnVsbD92b2lkIDA6ZS5zcmMpIT1udWxsP3Q6IiIsYT0ocz0ocj1uLmF0dHJzKT09bnVsbD92b2lkIDA6ci5hbHQpIT1udWxsP3M6IiIsYz0obz0oaT1uLmF0dHJzKT09bnVsbD92b2lkIDA6aS50aXRsZSkhPW51bGw/bzoiIjtyZXR1cm4gYz9gIVske2F9XSgke2x9ICIke2N9IilgOmAhWyR7YX1dKCR7bH0pYH0sYWRkTm9kZVZpZXcoKXtpZighdGhpcy5vcHRpb25zLnJlc2l6ZXx8IXRoaXMub3B0aW9ucy5yZXNpemUuZW5hYmxlZHx8dHlwZW9mIGRvY3VtZW50PiJ1IilyZXR1cm4gbnVsbDtjb25zdHtkaXJlY3Rpb25zOm4sbWluV2lkdGg6ZSxtaW5IZWlnaHQ6dCxhbHdheXNQcmVzZXJ2ZUFzcGVjdFJhdGlvOnJ9PXRoaXMub3B0aW9ucy5yZXNpemU7cmV0dXJuKHtub2RlOnMsZ2V0UG9zOmksSFRNTEF0dHJpYnV0ZXM6byxlZGl0b3I6bH0pPT57Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtPYmplY3QuZW50cmllcyhvKS5mb3JFYWNoKChbZCxoXSk9PntpZihoIT1udWxsKXN3aXRjaChkKXtjYXNlIndpZHRoIjpjYXNlImhlaWdodCI6YnJlYWs7ZGVmYXVsdDphLnNldEF0dHJpYnV0ZShkLGgpO2JyZWFrfX0pLGEuc3JjPW8uc3JjO2NvbnN0IGM9bmV3IFd5KHtlbGVtZW50OmEsZWRpdG9yOmwsbm9kZTpzLGdldFBvczppLG9uUmVzaXplOihkLGgpPT57YS5zdHlsZS53aWR0aD1gJHtkfXB4YCxhLnN0eWxlLmhlaWdodD1gJHtofXB4YH0sb25Db21taXQ6KGQsaCk9Pntjb25zdCBmPWkoKTtmIT09dm9pZCAwJiZ0aGlzLmVkaXRvci5jaGFpbigpLnNldE5vZGVTZWxlY3Rpb24oZikudXBkYXRlQXR0cmlidXRlcyh0aGlzLm5hbWUse3dpZHRoOmQsaGVpZ2h0Omh9KS5ydW4oKX0sb25VcGRhdGU6KGQsaCxmKT0+ZC50eXBlPT09cy50eXBlLG9wdGlvbnM6e2RpcmVjdGlvbnM6bixtaW46e3dpZHRoOmUsaGVpZ2h0OnR9LHByZXNlcnZlQXNwZWN0UmF0aW86cj09PSEwfX0pLHU9Yy5kb207cmV0dXJuIHUuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix1LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLGEub25sb2FkPSgpPT57dS5zdHlsZS52aXNpYmlsaXR5PSIiLHUuc3R5bGUucG9pbnRlckV2ZW50cz0iIn0sY319LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEltYWdlOm49Pih7Y29tbWFuZHM6ZX0pPT5lLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lLGF0dHJzOm59KX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bQ2Qoe2ZpbmQ6TmssdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczpuPT57Y29uc3RbLCxlLHQscl09bjtyZXR1cm57c3JjOnQsYWx0OmUsdGl0bGU6cn19fSldfX0pLElrPVJrO2Z1bmN0aW9uIERrKG4pe3ZhciBlO2NvbnN0e2NoYXI6dCxhbGxvd1NwYWNlczpyLGFsbG93VG9JbmNsdWRlQ2hhcjpzLGFsbG93ZWRQcmVmaXhlczppLHN0YXJ0T2ZMaW5lOm8sJHBvc2l0aW9uOmx9PW4sYT1yJiYhcyxjPUp5KHQpLHU9bmV3IFJlZ0V4cChgXFxzJHtjfSRgKSxkPW8/Il4iOiIiLGg9cz8iIjpjLGY9YT9uZXcgUmVnRXhwKGAke2R9JHtjfS4qPyg/PVxccyR7aH18JClgLCJnbSIpOm5ldyBSZWdFeHAoYCR7ZH0oPzpeKT8ke2N9W15cXHMke2h9XSpgLCJnbSIpLHA9KChlPWwubm9kZUJlZm9yZSk9PW51bGw/dm9pZCAwOmUuaXNUZXh0KSYmbC5ub2RlQmVmb3JlLnRleHQ7aWYoIXApcmV0dXJuIG51bGw7Y29uc3QgbT1sLnBvcy1wLmxlbmd0aCxnPUFycmF5LmZyb20ocC5tYXRjaEFsbChmKSkucG9wKCk7aWYoIWd8fGcuaW5wdXQ9PT12b2lkIDB8fGcuaW5kZXg9PT12b2lkIDApcmV0dXJuIG51bGw7Y29uc3QgeT1nLmlucHV0LnNsaWNlKE1hdGgubWF4KDAsZy5pbmRleC0xKSxnLmluZGV4KSxrPW5ldyBSZWdFeHAoYF5bJHtpPy5qb2luKCIiKX1cMF0/JGApLnRlc3QoeSk7aWYoaSE9PW51bGwmJiFrKXJldHVybiBudWxsO2NvbnN0IGI9bStnLmluZGV4O2xldCB3PWIrZ1swXS5sZW5ndGg7cmV0dXJuIGEmJnUudGVzdChwLnNsaWNlKHctMSx3KzEpKSYmKGdbMF0rPSIgIix3Kz0xKSxiPGwucG9zJiZ3Pj1sLnBvcz97cmFuZ2U6e2Zyb206Yix0bzp3fSxxdWVyeTpnWzBdLnNsaWNlKHQubGVuZ3RoKSx0ZXh0OmdbMF19Om51bGx9ZnVuY3Rpb24gTGsobil7cmV0dXJuIG4uZG9jQ2hhbmdlZD9uLnN0ZXBzLnNvbWUoZT0+e2NvbnN0IHQ9ZS5zbGljZTtpZighdD8uY29udGVudClyZXR1cm4hMTtjb25zdCByPXQuY29udGVudC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLGAKYCk7cmV0dXJuL1xzLy50ZXN0KHIpfSk6ITF9dmFyIFBrPW5ldyBxKCJzdWdnZXN0aW9uIik7ZnVuY3Rpb24gemsoe3BsdWdpbktleTpuPVBrLGVkaXRvcjplLGNoYXI6dD0iQCIsYWxsb3dTcGFjZXM6cj0hMSxhbGxvd1RvSW5jbHVkZUNoYXI6cz0hMSxhbGxvd2VkUHJlZml4ZXM6aT1bIiAiXSxzdGFydE9mTGluZTpvPSExLGRlY29yYXRpb25UYWc6bD0ic3BhbiIsZGVjb3JhdGlvbkNsYXNzOmE9InN1Z2dlc3Rpb24iLGRlY29yYXRpb25Db250ZW50OmM9IiIsZGVjb3JhdGlvbkVtcHR5Q2xhc3M6dT0iaXMtZW1wdHkiLGNvbW1hbmQ6ZD0oKT0+bnVsbCxpdGVtczpoPSgpPT5bXSxyZW5kZXI6Zj0oKT0+KHt9KSxhbGxvdzpwPSgpPT4hMCxmaW5kU3VnZ2VzdGlvbk1hdGNoOm09RGssc2hvdWxkU2hvdzpnLHNob3VsZFJlc2V0RGlzbWlzc2VkOnl9KXtsZXQgaztjb25zdCBiPWY/LigpLHc9ciYmIXMseD0oKT0+e2NvbnN0IE89ZS5zdGF0ZS5zZWxlY3Rpb24uJGFuY2hvci5wb3MsUD1lLnZpZXcuY29vcmRzQXRQb3MoTykse3RvcDpGLHJpZ2h0Ol8sYm90dG9tOkwsbGVmdDpIfT1QO3RyeXtyZXR1cm4gbmV3IERPTVJlY3QoSCxGLF8tSCxMLUYpfWNhdGNoe3JldHVybiBudWxsfX0sdj0oTyxQKT0+UD8oKT0+e2NvbnN0IEY9bi5nZXRTdGF0ZShlLnN0YXRlKSxfPUY/LmRlY29yYXRpb25JZCxMPU8uZG9tLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWRlY29yYXRpb24taWQ9IiR7X30iXWApO3JldHVybiBMPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKXx8bnVsbH06eCxDPSh7bWF0Y2g6TyxkaXNtaXNzZWRSYW5nZTpQLHN0YXRlOkYsdHJhbnNhY3Rpb246X30pPT55Py4oe2VkaXRvcjplLHN0YXRlOkYscmFuZ2U6UCxtYXRjaDpPLHRyYW5zYWN0aW9uOl8sYWxsb3dTcGFjZXM6d30pPyExOnc/Ty5yYW5nZS5mcm9tPT09UC5mcm9tOk8ucmFuZ2UuZnJvbT09PVAuZnJvbSYmIUxrKF8pO2Z1bmN0aW9uIE0oTyxQKXt2YXIgRjt0cnl7Y29uc3QgTD1uLmdldFN0YXRlKE8uc3RhdGUpLEg9TD8uZGVjb3JhdGlvbklkP08uZG9tLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWRlY29yYXRpb24taWQ9IiR7TC5kZWNvcmF0aW9uSWR9Il1gKTpudWxsLG5lPXtlZGl0b3I6ZSxyYW5nZTpMPy5yYW5nZXx8e2Zyb206MCx0bzowfSxxdWVyeTpMPy5xdWVyeXx8bnVsbCx0ZXh0Okw/LnRleHR8fG51bGwsaXRlbXM6W10sY29tbWFuZDpvZT0+ZCh7ZWRpdG9yOmUscmFuZ2U6TD8ucmFuZ2V8fHtmcm9tOjAsdG86MH0scHJvcHM6b2V9KSxkZWNvcmF0aW9uTm9kZTpILGNsaWVudFJlY3Q6dihPLEgpfTsoRj1iPy5vbkV4aXQpPT1udWxsfHxGLmNhbGwoYixuZSl9Y2F0Y2h7fWNvbnN0IF89Ty5zdGF0ZS50ci5zZXRNZXRhKFAse2V4aXQ6ITB9KTtPLmRpc3BhdGNoKF8pfWNvbnN0IFI9bmV3IEcoe2tleTpuLHZpZXcoKXtyZXR1cm57dXBkYXRlOmFzeW5jKE8sUCk9Pnt2YXIgRixfLEwsSCxuZSxvZSxjdDtjb25zdCAkPShGPXRoaXMua2V5KT09bnVsbD92b2lkIDA6Ri5nZXRTdGF0ZShQKSxKPShfPXRoaXMua2V5KT09bnVsbD92b2lkIDA6Xy5nZXRTdGF0ZShPLnN0YXRlKSxDZT0kLmFjdGl2ZSYmSi5hY3RpdmUmJiQucmFuZ2UuZnJvbSE9PUoucmFuZ2UuZnJvbSxjcj0hJC5hY3RpdmUmJkouYWN0aXZlLGRsPSQuYWN0aXZlJiYhSi5hY3RpdmUsSnM9IWNyJiYhZGwmJiQucXVlcnkhPT1KLnF1ZXJ5LHluPWNyfHxDZSYmSnMsdXI9SnN8fENlLEdzPWRsfHxDZSYmSnM7aWYoIXluJiYhdXImJiFHcylyZXR1cm47Y29uc3QgWHQ9R3MmJiF5bj8kOkosaGw9Ty5kb20ucXVlcnlTZWxlY3RvcihgW2RhdGEtZGVjb3JhdGlvbi1pZD0iJHtYdC5kZWNvcmF0aW9uSWR9Il1gKTtrPXtlZGl0b3I6ZSxyYW5nZTpYdC5yYW5nZSxxdWVyeTpYdC5xdWVyeSx0ZXh0Olh0LnRleHQsaXRlbXM6W10sY29tbWFuZDpraD0+ZCh7ZWRpdG9yOmUscmFuZ2U6WHQucmFuZ2UscHJvcHM6a2h9KSxkZWNvcmF0aW9uTm9kZTpobCxjbGllbnRSZWN0OnYoTyxobCl9LHluJiYoKEw9Yj8ub25CZWZvcmVTdGFydCk9PW51bGx8fEwuY2FsbChiLGspKSx1ciYmKChIPWI/Lm9uQmVmb3JlVXBkYXRlKT09bnVsbHx8SC5jYWxsKGIsaykpLCh1cnx8eW4pJiYoay5pdGVtcz1hd2FpdCBoKHtlZGl0b3I6ZSxxdWVyeTpYdC5xdWVyeX0pKSxHcyYmKChuZT1iPy5vbkV4aXQpPT1udWxsfHxuZS5jYWxsKGIsaykpLHVyJiYoKG9lPWI/Lm9uVXBkYXRlKT09bnVsbHx8b2UuY2FsbChiLGspKSx5biYmKChjdD1iPy5vblN0YXJ0KT09bnVsbHx8Y3QuY2FsbChiLGspKX0sZGVzdHJveTooKT0+e3ZhciBPO2smJigoTz1iPy5vbkV4aXQpPT1udWxsfHxPLmNhbGwoYixrKSl9fX0sc3RhdGU6e2luaXQoKXtyZXR1cm57YWN0aXZlOiExLHJhbmdlOntmcm9tOjAsdG86MH0scXVlcnk6bnVsbCx0ZXh0Om51bGwsY29tcG9zaW5nOiExLGRpc21pc3NlZFJhbmdlOm51bGx9fSxhcHBseShPLFAsRixfKXtjb25zdHtpc0VkaXRhYmxlOkx9PWUse2NvbXBvc2luZzpIfT1lLnZpZXcse3NlbGVjdGlvbjpuZX09Tyx7ZW1wdHk6b2UsZnJvbTpjdH09bmUsJD17Li4uUH0sSj1PLmdldE1ldGEobik7aWYoSiYmSi5leGl0KXJldHVybiAkLmFjdGl2ZT0hMSwkLmRlY29yYXRpb25JZD1udWxsLCQucmFuZ2U9e2Zyb206MCx0bzowfSwkLnF1ZXJ5PW51bGwsJC50ZXh0PW51bGwsJC5kaXNtaXNzZWRSYW5nZT1QLmFjdGl2ZT97Li4uUC5yYW5nZX06UC5kaXNtaXNzZWRSYW5nZSwkO2lmKCQuY29tcG9zaW5nPUgsTy5kb2NDaGFuZ2VkJiYkLmRpc21pc3NlZFJhbmdlIT09bnVsbCYmKCQuZGlzbWlzc2VkUmFuZ2U9e2Zyb206Ty5tYXBwaW5nLm1hcCgkLmRpc21pc3NlZFJhbmdlLmZyb20pLHRvOk8ubWFwcGluZy5tYXAoJC5kaXNtaXNzZWRSYW5nZS50byl9KSxMJiYob2V8fGUudmlldy5jb21wb3NpbmcpKXsoY3Q8UC5yYW5nZS5mcm9tfHxjdD5QLnJhbmdlLnRvKSYmIUgmJiFQLmNvbXBvc2luZyYmKCQuYWN0aXZlPSExKTtjb25zdCBDZT1tKHtjaGFyOnQsYWxsb3dTcGFjZXM6cixhbGxvd1RvSW5jbHVkZUNoYXI6cyxhbGxvd2VkUHJlZml4ZXM6aSxzdGFydE9mTGluZTpvLCRwb3NpdGlvbjpuZS4kZnJvbX0pLGNyPWBpZF8ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1KX1gO0NlJiZwKHtlZGl0b3I6ZSxzdGF0ZTpfLHJhbmdlOkNlLnJhbmdlLGlzQWN0aXZlOlAuYWN0aXZlfSkmJighZ3x8Zyh7ZWRpdG9yOmUscmFuZ2U6Q2UucmFuZ2UscXVlcnk6Q2UucXVlcnksdGV4dDpDZS50ZXh0LHRyYW5zYWN0aW9uOk99KSk/KCQuZGlzbWlzc2VkUmFuZ2UhPT1udWxsJiYhQyh7bWF0Y2g6Q2UsZGlzbWlzc2VkUmFuZ2U6JC5kaXNtaXNzZWRSYW5nZSxzdGF0ZTpfLHRyYW5zYWN0aW9uOk99KSYmKCQuZGlzbWlzc2VkUmFuZ2U9bnVsbCksJC5kaXNtaXNzZWRSYW5nZT09PW51bGw/KCQuYWN0aXZlPSEwLCQuZGVjb3JhdGlvbklkPVAuZGVjb3JhdGlvbklkP1AuZGVjb3JhdGlvbklkOmNyLCQucmFuZ2U9Q2UucmFuZ2UsJC5xdWVyeT1DZS5xdWVyeSwkLnRleHQ9Q2UudGV4dCk6JC5hY3RpdmU9ITEpOihDZXx8KCQuZGlzbWlzc2VkUmFuZ2U9bnVsbCksJC5hY3RpdmU9ITEpfWVsc2UgJC5hY3RpdmU9ITE7cmV0dXJuICQuYWN0aXZlfHwoJC5kZWNvcmF0aW9uSWQ9bnVsbCwkLnJhbmdlPXtmcm9tOjAsdG86MH0sJC5xdWVyeT1udWxsLCQudGV4dD1udWxsKSwkfX0scHJvcHM6e2hhbmRsZUtleURvd24oTyxQKXt2YXIgRixfO2NvbnN0e2FjdGl2ZTpMLHJhbmdlOkh9PVIuZ2V0U3RhdGUoTy5zdGF0ZSk7aWYoIUwpcmV0dXJuITE7aWYoUC5rZXk9PT0iRXNjYXBlInx8UC5rZXk9PT0iRXNjIil7Y29uc3Qgb2U9Ui5nZXRTdGF0ZShPLnN0YXRlKTtyZXR1cm4oRj1iPy5vbktleURvd24pPT1udWxsfHxGLmNhbGwoYix7dmlldzpPLGV2ZW50OlAscmFuZ2U6b2UucmFuZ2V9KSxNKE8sbiksITB9cmV0dXJuKChfPWI/Lm9uS2V5RG93bik9PW51bGw/dm9pZCAwOl8uY2FsbChiLHt2aWV3Ok8sZXZlbnQ6UCxyYW5nZTpIfSkpfHwhMX0sZGVjb3JhdGlvbnMoTyl7Y29uc3R7YWN0aXZlOlAscmFuZ2U6RixkZWNvcmF0aW9uSWQ6XyxxdWVyeTpMfT1SLmdldFN0YXRlKE8pO2lmKCFQKXJldHVybiBudWxsO2NvbnN0IEg9IUw/Lmxlbmd0aCxuZT1bYV07cmV0dXJuIEgmJm5lLnB1c2godSksWS5jcmVhdGUoTy5kb2MsW3llLmlubGluZShGLmZyb20sRi50byx7bm9kZU5hbWU6bCxjbGFzczpuZS5qb2luKCIgIiksImRhdGEtZGVjb3JhdGlvbi1pZCI6XywiZGF0YS1kZWNvcmF0aW9uLWNvbnRlbnQiOmN9KV0pfX19KTtyZXR1cm4gUn1mdW5jdGlvbiAkayh7ZWRpdG9yOm4sb3ZlcnJpZGVTdWdnZXN0aW9uT3B0aW9uczplLGV4dGVuc2lvbk5hbWU6dCxjaGFyOnI9IkAifSl7Y29uc3Qgcz1uZXcgcTtyZXR1cm57ZWRpdG9yOm4sY2hhcjpyLHBsdWdpbktleTpzLGNvbW1hbmQ6KHtlZGl0b3I6aSxyYW5nZTpvLHByb3BzOmx9KT0+e3ZhciBhLGMsdTtjb25zdCBkPWkudmlldy5zdGF0ZS5zZWxlY3Rpb24uJHRvLm5vZGVBZnRlcjsoYT1kPy50ZXh0KSE9bnVsbCYmYS5zdGFydHNXaXRoKCIgIikmJihvLnRvKz0xKSxpLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQobyxbe3R5cGU6dCxhdHRyczp7Li4ubCxtZW50aW9uU3VnZ2VzdGlvbkNoYXI6cn19LHt0eXBlOiJ0ZXh0Iix0ZXh0OiIgIn1dKS5ydW4oKSwodT0oYz1pLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpPT1udWxsP3ZvaWQgMDpjLmdldFNlbGVjdGlvbigpKT09bnVsbHx8dS5jb2xsYXBzZVRvRW5kKCl9LGFsbG93Oih7c3RhdGU6aSxyYW5nZTpvfSk9Pntjb25zdCBsPWkuZG9jLnJlc29sdmUoby5mcm9tKSxhPWkuc2NoZW1hLm5vZGVzW3RdO3JldHVybiEhbC5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKGEpfSwuLi5lfX1mdW5jdGlvbiB6ZChuKXtyZXR1cm4obi5vcHRpb25zLnN1Z2dlc3Rpb25zLmxlbmd0aD9uLm9wdGlvbnMuc3VnZ2VzdGlvbnM6W24ub3B0aW9ucy5zdWdnZXN0aW9uXSkubWFwKGU9PiRrKHtlZGl0b3I6bi5lZGl0b3Isb3ZlcnJpZGVTdWdnZXN0aW9uT3B0aW9uczplLGV4dGVuc2lvbk5hbWU6bi5uYW1lLGNoYXI6ZS5jaGFyfSkpfWZ1bmN0aW9uIElhKG4sZSl7Y29uc3QgdD16ZChuKSxyPXQuZmluZChzPT5zLmNoYXI9PT1lKTtyZXR1cm4gcnx8KHQubGVuZ3RoP3RbMF06bnVsbCl9dmFyIEJrPVNlLmNyZWF0ZSh7bmFtZToibWVudGlvbiIscHJpb3JpdHk6MTAxLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e30scmVuZGVyVGV4dCh7bm9kZTpuLHN1Z2dlc3Rpb246ZX0pe3ZhciB0LHI7cmV0dXJuYCR7KHQ9ZT8uY2hhcikhPW51bGw/dDoiQCJ9JHsocj1uLmF0dHJzLmxhYmVsKSE9bnVsbD9yOm4uYXR0cnMuaWR9YH0sZGVsZXRlVHJpZ2dlcldpdGhCYWNrc3BhY2U6ITEscmVuZGVySFRNTCh7b3B0aW9uczpuLG5vZGU6ZSxzdWdnZXN0aW9uOnR9KXt2YXIgcixzO3JldHVyblsic3BhbiIsSyh0aGlzLkhUTUxBdHRyaWJ1dGVzLG4uSFRNTEF0dHJpYnV0ZXMpLGAkeyhyPXQ/LmNoYXIpIT1udWxsP3I6IkAifSR7KHM9ZS5hdHRycy5sYWJlbCkhPW51bGw/czplLmF0dHJzLmlkfWBdfSxzdWdnZXN0aW9uczpbXSxzdWdnZXN0aW9uOnt9fX0sZ3JvdXA6ImlubGluZSIsaW5saW5lOiEwLHNlbGVjdGFibGU6ITEsYXRvbTohMCxhZGRBdHRyaWJ1dGVzKCl7cmV0dXJue2lkOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOm49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLWlkIikscmVuZGVySFRNTDpuPT5uLmlkP3siZGF0YS1pZCI6bi5pZH06e319LGxhYmVsOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOm49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLWxhYmVsIikscmVuZGVySFRNTDpuPT5uLmxhYmVsP3siZGF0YS1sYWJlbCI6bi5sYWJlbH06e319LG1lbnRpb25TdWdnZXN0aW9uQ2hhcjp7ZGVmYXVsdDoiQCIscGFyc2VIVE1MOm49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIikscmVuZGVySFRNTDpuPT4oeyJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIjpuLm1lbnRpb25TdWdnZXN0aW9uQ2hhcn0pfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOmBzcGFuW2RhdGEtdHlwZT0iJHt0aGlzLm5hbWV9Il1gfV19LHJlbmRlckhUTUwoe25vZGU6bixIVE1MQXR0cmlidXRlczplfSl7Y29uc3QgdD1JYSh0aGlzLG4uYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyKTtpZih0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwhPT12b2lkIDApcmV0dXJuWyJzcGFuIixLKHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9LHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKSx0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwoe29wdGlvbnM6dGhpcy5vcHRpb25zLG5vZGU6bixzdWdnZXN0aW9uOnR9KV07Y29uc3Qgcj17Li4udGhpcy5vcHRpb25zfTtyLkhUTUxBdHRyaWJ1dGVzPUsoeyJkYXRhLXR5cGUiOnRoaXMubmFtZX0sdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpO2NvbnN0IHM9dGhpcy5vcHRpb25zLnJlbmRlckhUTUwoe29wdGlvbnM6cixub2RlOm4sc3VnZ2VzdGlvbjp0fSk7cmV0dXJuIHR5cGVvZiBzPT0ic3RyaW5nIj9bInNwYW4iLEsoeyJkYXRhLXR5cGUiOnRoaXMubmFtZX0sdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLHNdOnN9LC4uLlRkKHtub2RlTmFtZToibWVudGlvbiIsbmFtZToiQCIsc2VsZkNsb3Npbmc6ITAsYWxsb3dlZEF0dHJpYnV0ZXM6WyJpZCIsImxhYmVsIix7bmFtZToibWVudGlvblN1Z2dlc3Rpb25DaGFyIixza2lwSWZEZWZhdWx0OiJAIn1dLHBhcnNlQXR0cmlidXRlczpuPT57Y29uc3QgZT17fSx0PS8oXHcrKT0oPzoiKFteIl0qKSJ8JyhbXiddKiknKS9nO2xldCByPXQuZXhlYyhuKTtmb3IoO3IhPT1udWxsOyl7Y29uc3RbLHMsaSxvXT1yLGw9aT8/bztlW3M9PT0iY2hhciI/Im1lbnRpb25TdWdnZXN0aW9uQ2hhciI6c109bCxyPXQuZXhlYyhuKX1yZXR1cm4gZX0sc2VyaWFsaXplQXR0cmlidXRlczpuPT5PYmplY3QuZW50cmllcyhuKS5maWx0ZXIoKFssZV0pPT5lIT1udWxsKS5tYXAoKFtlLHRdKT0+YCR7ZT09PSJtZW50aW9uU3VnZ2VzdGlvbkNoYXIiPyJjaGFyIjplfT0iJHt0fSJgKS5qb2luKCIgIil9KSxyZW5kZXJUZXh0KHtub2RlOm59KXtjb25zdCBlPXtvcHRpb25zOnRoaXMub3B0aW9ucyxub2RlOm4sc3VnZ2VzdGlvbjpJYSh0aGlzLG4uYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyKX07cmV0dXJuIHRoaXMub3B0aW9ucy5yZW5kZXJMYWJlbCE9PXZvaWQgMD90aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwoZSk6dGhpcy5vcHRpb25zLnJlbmRlclRleHQoZSl9LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJue0JhY2tzcGFjZTooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuY29tbWFuZCgoe3RyOm4sc3RhdGU6ZX0pPT57bGV0IHQ9ITE7Y29uc3R7c2VsZWN0aW9uOnJ9PWUse2VtcHR5OnMsYW5jaG9yOml9PXI7aWYoIXMpcmV0dXJuITE7bGV0IG89bmV3IExlLGw9MDtyZXR1cm4gZS5kb2Mubm9kZXNCZXR3ZWVuKGktMSxpLChhLGMpPT57aWYoYS50eXBlLm5hbWU9PT10aGlzLm5hbWUpcmV0dXJuIHQ9ITAsbz1hLGw9YywhMX0pLHQmJm4uaW5zZXJ0VGV4dCh0aGlzLm9wdGlvbnMuZGVsZXRlVHJpZ2dlcldpdGhCYWNrc3BhY2U/IiI6by5hdHRycy5tZW50aW9uU3VnZ2VzdGlvbkNoYXIsbCxsK28ubm9kZVNpemUpLHR9KX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybiB6ZCh0aGlzKS5tYXAoemspfX0pLF9rPUJrO2Z1bmN0aW9uIEhrKG49e30pe3JldHVybiBuZXcgRyh7dmlldyhlKXtyZXR1cm4gbmV3IEZrKGUsbil9fSl9Y2xhc3MgRmt7Y29uc3RydWN0b3IoZSx0KXt2YXIgcjt0aGlzLmVkaXRvclZpZXc9ZSx0aGlzLmN1cnNvclBvcz1udWxsLHRoaXMuZWxlbWVudD1udWxsLHRoaXMudGltZW91dD0tMSx0aGlzLndpZHRoPShyPXQud2lkdGgpIT09bnVsbCYmciE9PXZvaWQgMD9yOjEsdGhpcy5jb2xvcj10LmNvbG9yPT09ITE/dm9pZCAwOnQuY29sb3J8fCJibGFjayIsdGhpcy5jbGFzcz10LmNsYXNzLHRoaXMuaGFuZGxlcnM9WyJkcmFnb3ZlciIsImRyYWdlbmQiLCJkcm9wIiwiZHJhZ2xlYXZlIl0ubWFwKHM9PntsZXQgaT1vPT57dGhpc1tzXShvKX07cmV0dXJuIGUuZG9tLmFkZEV2ZW50TGlzdGVuZXIocyxpKSx7bmFtZTpzLGhhbmRsZXI6aX19KX1kZXN0cm95KCl7dGhpcy5oYW5kbGVycy5mb3JFYWNoKCh7bmFtZTplLGhhbmRsZXI6dH0pPT50aGlzLmVkaXRvclZpZXcuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0KSl9dXBkYXRlKGUsdCl7dGhpcy5jdXJzb3JQb3MhPW51bGwmJnQuZG9jIT1lLnN0YXRlLmRvYyYmKHRoaXMuY3Vyc29yUG9zPmUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZT90aGlzLnNldEN1cnNvcihudWxsKTp0aGlzLnVwZGF0ZU92ZXJsYXkoKSl9c2V0Q3Vyc29yKGUpe2UhPXRoaXMuY3Vyc29yUG9zJiYodGhpcy5jdXJzb3JQb3M9ZSxlPT1udWxsPyh0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZWxlbWVudD1udWxsKTp0aGlzLnVwZGF0ZU92ZXJsYXkoKSl9dXBkYXRlT3ZlcmxheSgpe2xldCBlPXRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MucmVzb2x2ZSh0aGlzLmN1cnNvclBvcyksdD0hZS5wYXJlbnQuaW5saW5lQ29udGVudCxyLHM9dGhpcy5lZGl0b3JWaWV3LmRvbSxpPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1pLndpZHRoL3Mub2Zmc2V0V2lkdGgsbD1pLmhlaWdodC9zLm9mZnNldEhlaWdodDtpZih0KXtsZXQgZD1lLm5vZGVCZWZvcmUsaD1lLm5vZGVBZnRlcjtpZihkfHxoKXtsZXQgZj10aGlzLmVkaXRvclZpZXcubm9kZURPTSh0aGlzLmN1cnNvclBvcy0oZD9kLm5vZGVTaXplOjApKTtpZihmKXtsZXQgcD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG09ZD9wLmJvdHRvbTpwLnRvcDtkJiZoJiYobT0obSt0aGlzLmVkaXRvclZpZXcubm9kZURPTSh0aGlzLmN1cnNvclBvcykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKS8yKTtsZXQgZz10aGlzLndpZHRoLzIqbDtyPXtsZWZ0OnAubGVmdCxyaWdodDpwLnJpZ2h0LHRvcDptLWcsYm90dG9tOm0rZ319fX1pZighcil7bGV0IGQ9dGhpcy5lZGl0b3JWaWV3LmNvb3Jkc0F0UG9zKHRoaXMuY3Vyc29yUG9zKSxoPXRoaXMud2lkdGgvMipvO3I9e2xlZnQ6ZC5sZWZ0LWgscmlnaHQ6ZC5sZWZ0K2gsdG9wOmQudG9wLGJvdHRvbTpkLmJvdHRvbX19bGV0IGE9dGhpcy5lZGl0b3JWaWV3LmRvbS5vZmZzZXRQYXJlbnQ7dGhpcy5lbGVtZW50fHwodGhpcy5lbGVtZW50PWEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHRoaXMuY2xhc3MmJih0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPXRoaXMuY2xhc3MpLHRoaXMuZWxlbWVudC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDUwOyBwb2ludGVyLWV2ZW50czogbm9uZTsiLHRoaXMuY29sb3ImJih0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yPXRoaXMuY29sb3IpKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicHJvc2VtaXJyb3ItZHJvcGN1cnNvci1ibG9jayIsdCksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInByb3NlbWlycm9yLWRyb3BjdXJzb3ItaW5saW5lIiwhdCk7bGV0IGMsdTtpZighYXx8YT09ZG9jdW1lbnQuYm9keSYmZ2V0Q29tcHV0ZWRTdHlsZShhKS5wb3NpdGlvbj09InN0YXRpYyIpYz0tcGFnZVhPZmZzZXQsdT0tcGFnZVlPZmZzZXQ7ZWxzZXtsZXQgZD1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9ZC53aWR0aC9hLm9mZnNldFdpZHRoLGY9ZC5oZWlnaHQvYS5vZmZzZXRIZWlnaHQ7Yz1kLmxlZnQtYS5zY3JvbGxMZWZ0KmgsdT1kLnRvcC1hLnNjcm9sbFRvcCpmfXRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0PShyLmxlZnQtYykvbysicHgiLHRoaXMuZWxlbWVudC5zdHlsZS50b3A9KHIudG9wLXUpL2wrInB4Iix0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9KHIucmlnaHQtci5sZWZ0KS9vKyJweCIsdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD0oci5ib3R0b20tci50b3ApL2wrInB4In1zY2hlZHVsZVJlbW92YWwoZSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksdGhpcy50aW1lb3V0PXNldFRpbWVvdXQoKCk9PnRoaXMuc2V0Q3Vyc29yKG51bGwpLGUpfWRyYWdvdmVyKGUpe2lmKCF0aGlzLmVkaXRvclZpZXcuZWRpdGFibGUpcmV0dXJuO2xldCB0PXRoaXMuZWRpdG9yVmlldy5wb3NBdENvb3Jkcyh7bGVmdDplLmNsaWVudFgsdG9wOmUuY2xpZW50WX0pLHI9dCYmdC5pbnNpZGU+PTAmJnRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2Mubm9kZUF0KHQuaW5zaWRlKSxzPXImJnIudHlwZS5zcGVjLmRpc2FibGVEcm9wQ3Vyc29yLGk9dHlwZW9mIHM9PSJmdW5jdGlvbiI/cyh0aGlzLmVkaXRvclZpZXcsdCxlKTpzO2lmKHQmJiFpKXtsZXQgbz10LnBvcztpZih0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcmJnRoaXMuZWRpdG9yVmlldy5kcmFnZ2luZy5zbGljZSl7bGV0IGw9cWModGhpcy5lZGl0b3JWaWV3LnN0YXRlLmRvYyxvLHRoaXMuZWRpdG9yVmlldy5kcmFnZ2luZy5zbGljZSk7bCE9bnVsbCYmKG89bCl9dGhpcy5zZXRDdXJzb3IobyksdGhpcy5zY2hlZHVsZVJlbW92YWwoNWUzKX19ZHJhZ2VuZCgpe3RoaXMuc2NoZWR1bGVSZW1vdmFsKDIwKX1kcm9wKCl7dGhpcy5zY2hlZHVsZVJlbW92YWwoMjApfWRyYWdsZWF2ZShlKXt0aGlzLmVkaXRvclZpZXcuZG9tLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCl8fHRoaXMuc2V0Q3Vyc29yKG51bGwpfX1jbGFzcyBlZSBleHRlbmRzIEl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSxlKX1tYXAoZSx0KXtsZXQgcj1lLnJlc29sdmUodC5tYXAodGhpcy5oZWFkKSk7cmV0dXJuIGVlLnZhbGlkKHIpP25ldyBlZShyKTpJLm5lYXIocil9Y29udGVudCgpe3JldHVybiBFLmVtcHR5fWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZWUmJmUuaGVhZD09dGhpcy5oZWFkfXRvSlNPTigpe3JldHVybnt0eXBlOiJnYXBjdXJzb3IiLHBvczp0aGlzLmhlYWR9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LnBvcyE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEdhcEN1cnNvci5mcm9tSlNPTiIpO3JldHVybiBuZXcgZWUoZS5yZXNvbHZlKHQucG9zKSl9Z2V0Qm9va21hcmsoKXtyZXR1cm4gbmV3IHFvKHRoaXMuYW5jaG9yKX1zdGF0aWMgdmFsaWQoZSl7bGV0IHQ9ZS5wYXJlbnQ7aWYodC5pbmxpbmVDb250ZW50fHwhVmsoZSl8fCFVayhlKSlyZXR1cm4hMTtsZXQgcj10LnR5cGUuc3BlYy5hbGxvd0dhcEN1cnNvcjtpZihyIT1udWxsKXJldHVybiByO2xldCBzPXQuY29udGVudE1hdGNoQXQoZS5pbmRleCgpKS5kZWZhdWx0VHlwZTtyZXR1cm4gcyYmcy5pc1RleHRibG9ja31zdGF0aWMgZmluZEdhcEN1cnNvckZyb20oZSx0LHI9ITEpe2U6Zm9yKDs7KXtpZighciYmZWUudmFsaWQoZSkpcmV0dXJuIGU7bGV0IHM9ZS5wb3MsaT1udWxsO2ZvcihsZXQgbz1lLmRlcHRoOztvLS0pe2xldCBsPWUubm9kZShvKTtpZih0PjA/ZS5pbmRleEFmdGVyKG8pPGwuY2hpbGRDb3VudDplLmluZGV4KG8pPjApe2k9bC5jaGlsZCh0PjA/ZS5pbmRleEFmdGVyKG8pOmUuaW5kZXgobyktMSk7YnJlYWt9ZWxzZSBpZihvPT0wKXJldHVybiBudWxsO3MrPXQ7bGV0IGE9ZS5kb2MucmVzb2x2ZShzKTtpZihlZS52YWxpZChhKSlyZXR1cm4gYX1mb3IoOzspe2xldCBvPXQ+MD9pLmZpcnN0Q2hpbGQ6aS5sYXN0Q2hpbGQ7aWYoIW8pe2lmKGkuaXNBdG9tJiYhaS5pc1RleHQmJiFOLmlzU2VsZWN0YWJsZShpKSl7ZT1lLmRvYy5yZXNvbHZlKHMraS5ub2RlU2l6ZSp0KSxyPSExO2NvbnRpbnVlIGV9YnJlYWt9aT1vLHMrPXQ7bGV0IGw9ZS5kb2MucmVzb2x2ZShzKTtpZihlZS52YWxpZChsKSlyZXR1cm4gbH1yZXR1cm4gbnVsbH19fWVlLnByb3RvdHlwZS52aXNpYmxlPSExO2VlLmZpbmRGcm9tPWVlLmZpbmRHYXBDdXJzb3JGcm9tO0kuanNvbklEKCJnYXBjdXJzb3IiLGVlKTtjbGFzcyBxb3tjb25zdHJ1Y3RvcihlKXt0aGlzLnBvcz1lfW1hcChlKXtyZXR1cm4gbmV3IHFvKGUubWFwKHRoaXMucG9zKSl9cmVzb2x2ZShlKXtsZXQgdD1lLnJlc29sdmUodGhpcy5wb3MpO3JldHVybiBlZS52YWxpZCh0KT9uZXcgZWUodCk6SS5uZWFyKHQpfX1mdW5jdGlvbiAkZChuKXtyZXR1cm4gbi5pc0F0b218fG4uc3BlYy5pc29sYXRpbmd8fG4uc3BlYy5jcmVhdGVHYXBDdXJzb3J9ZnVuY3Rpb24gVmsobil7Zm9yKGxldCBlPW4uZGVwdGg7ZT49MDtlLS0pe2xldCB0PW4uaW5kZXgoZSkscj1uLm5vZGUoZSk7aWYodD09MCl7aWYoci50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiEwO2NvbnRpbnVlfWZvcihsZXQgcz1yLmNoaWxkKHQtMSk7O3M9cy5sYXN0Q2hpbGQpe2lmKHMuY2hpbGRDb3VudD09MCYmIXMuaW5saW5lQ29udGVudHx8JGQocy50eXBlKSlyZXR1cm4hMDtpZihzLmlubGluZUNvbnRlbnQpcmV0dXJuITF9fXJldHVybiEwfWZ1bmN0aW9uIFVrKG4pe2ZvcihsZXQgZT1uLmRlcHRoO2U+PTA7ZS0tKXtsZXQgdD1uLmluZGV4QWZ0ZXIoZSkscj1uLm5vZGUoZSk7aWYodD09ci5jaGlsZENvdW50KXtpZihyLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITA7Y29udGludWV9Zm9yKGxldCBzPXIuY2hpbGQodCk7O3M9cy5maXJzdENoaWxkKXtpZihzLmNoaWxkQ291bnQ9PTAmJiFzLmlubGluZUNvbnRlbnR8fCRkKHMudHlwZSkpcmV0dXJuITA7aWYocy5pbmxpbmVDb250ZW50KXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBqaygpe3JldHVybiBuZXcgRyh7cHJvcHM6e2RlY29yYXRpb25zOkprLGNyZWF0ZVNlbGVjdGlvbkJldHdlZW4obixlLHQpe3JldHVybiBlLnBvcz09dC5wb3MmJmVlLnZhbGlkKHQpP25ldyBlZSh0KTpudWxsfSxoYW5kbGVDbGljazpXayxoYW5kbGVLZXlEb3duOnFrLGhhbmRsZURPTUV2ZW50czp7YmVmb3JlaW5wdXQ6S2t9fX0pfWNvbnN0IHFrPU5vKHtBcnJvd0xlZnQ6dnIoImhvcml6IiwtMSksQXJyb3dSaWdodDp2cigiaG9yaXoiLDEpLEFycm93VXA6dnIoInZlcnQiLC0xKSxBcnJvd0Rvd246dnIoInZlcnQiLDEpfSk7ZnVuY3Rpb24gdnIobixlKXtjb25zdCB0PW49PSJ2ZXJ0Ij9lPjA/ImRvd24iOiJ1cCI6ZT4wPyJyaWdodCI6ImxlZnQiO3JldHVybiBmdW5jdGlvbihyLHMsaSl7bGV0IG89ci5zZWxlY3Rpb24sbD1lPjA/by4kdG86by4kZnJvbSxhPW8uZW1wdHk7aWYobyBpbnN0YW5jZW9mIEQpe2lmKCFpLmVuZE9mVGV4dGJsb2NrKHQpfHxsLmRlcHRoPT0wKXJldHVybiExO2E9ITEsbD1yLmRvYy5yZXNvbHZlKGU+MD9sLmFmdGVyKCk6bC5iZWZvcmUoKSl9bGV0IGM9ZWUuZmluZEdhcEN1cnNvckZyb20obCxlLGEpO3JldHVybiBjPyhzJiZzKHIudHIuc2V0U2VsZWN0aW9uKG5ldyBlZShjKSkpLCEwKTohMX19ZnVuY3Rpb24gV2sobixlLHQpe2lmKCFufHwhbi5lZGl0YWJsZSlyZXR1cm4hMTtsZXQgcj1uLnN0YXRlLmRvYy5yZXNvbHZlKGUpO2lmKCFlZS52YWxpZChyKSlyZXR1cm4hMTtsZXQgcz1uLnBvc0F0Q29vcmRzKHtsZWZ0OnQuY2xpZW50WCx0b3A6dC5jbGllbnRZfSk7cmV0dXJuIHMmJnMuaW5zaWRlPi0xJiZOLmlzU2VsZWN0YWJsZShuLnN0YXRlLmRvYy5ub2RlQXQocy5pbnNpZGUpKT8hMToobi5kaXNwYXRjaChuLnN0YXRlLnRyLnNldFNlbGVjdGlvbihuZXcgZWUocikpKSwhMCl9ZnVuY3Rpb24gS2sobixlKXtpZihlLmlucHV0VHlwZSE9Imluc2VydENvbXBvc2l0aW9uVGV4dCJ8fCEobi5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBlZSkpcmV0dXJuITE7bGV0eyRmcm9tOnR9PW4uc3RhdGUuc2VsZWN0aW9uLHI9dC5wYXJlbnQuY29udGVudE1hdGNoQXQodC5pbmRleCgpKS5maW5kV3JhcHBpbmcobi5zdGF0ZS5zY2hlbWEubm9kZXMudGV4dCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9Uy5lbXB0eTtmb3IobGV0IG89ci5sZW5ndGgtMTtvPj0wO28tLSlzPVMuZnJvbShyW29dLmNyZWF0ZUFuZEZpbGwobnVsbCxzKSk7bGV0IGk9bi5zdGF0ZS50ci5yZXBsYWNlKHQucG9zLHQucG9zLG5ldyBFKHMsMCwwKSk7cmV0dXJuIGkuc2V0U2VsZWN0aW9uKEQubmVhcihpLmRvYy5yZXNvbHZlKHQucG9zKzEpKSksbi5kaXNwYXRjaChpKSwhMX1mdW5jdGlvbiBKayhuKXtpZighKG4uc2VsZWN0aW9uIGluc3RhbmNlb2YgZWUpKXJldHVybiBudWxsO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmNsYXNzTmFtZT0iUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIixZLmNyZWF0ZShuLmRvYyxbeWUud2lkZ2V0KG4uc2VsZWN0aW9uLmhlYWQsZSx7a2V5OiJnYXBjdXJzb3IifSldKX12YXIgUXI9MjAwLGNlPWZ1bmN0aW9uKCl7fTtjZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD8oZT1jZS5mcm9tKGUpLCF0aGlzLmxlbmd0aCYmZXx8ZS5sZW5ndGg8UXImJnRoaXMubGVhZkFwcGVuZChlKXx8dGhpcy5sZW5ndGg8UXImJmUubGVhZlByZXBlbmQodGhpcyl8fHRoaXMuYXBwZW5kSW5uZXIoZSkpOnRoaXN9O2NlLnByb3RvdHlwZS5wcmVwZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD9jZS5mcm9tKGUpLmFwcGVuZCh0aGlzKTp0aGlzfTtjZS5wcm90b3R5cGUuYXBwZW5kSW5uZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBHayh0aGlzLGUpfTtjZS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9MCksdD09PXZvaWQgMCYmKHQ9dGhpcy5sZW5ndGgpLGU+PXQ/Y2UuZW1wdHk6dGhpcy5zbGljZUlubmVyKE1hdGgubWF4KDAsZSksTWF0aC5taW4odGhpcy5sZW5ndGgsdCkpfTtjZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe2lmKCEoZTwwfHxlPj10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXMuZ2V0SW5uZXIoZSl9O2NlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCxyKXt0PT09dm9pZCAwJiYodD0wKSxyPT09dm9pZCAwJiYocj10aGlzLmxlbmd0aCksdDw9cj90aGlzLmZvckVhY2hJbm5lcihlLHQsciwwKTp0aGlzLmZvckVhY2hJbnZlcnRlZElubmVyKGUsdCxyLDApfTtjZS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGUsdCxyKXt0PT09dm9pZCAwJiYodD0wKSxyPT09dm9pZCAwJiYocj10aGlzLmxlbmd0aCk7dmFyIHM9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihpLG8pe3JldHVybiBzLnB1c2goZShpLG8pKX0sdCxyKSxzfTtjZS5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgY2U/ZTplJiZlLmxlbmd0aD9uZXcgQmQoZSk6Y2UuZW1wdHl9O3ZhciBCZD0oZnVuY3Rpb24obil7ZnVuY3Rpb24gZShyKXtuLmNhbGwodGhpcyksdGhpcy52YWx1ZXM9cn1uJiYoZS5fX3Byb3RvX189biksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuJiZuLnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZTt2YXIgdD17bGVuZ3RoOntjb25maWd1cmFibGU6ITB9LGRlcHRoOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gZS5wcm90b3R5cGUuZmxhdHRlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlc30sZS5wcm90b3R5cGUuc2xpY2VJbm5lcj1mdW5jdGlvbihzLGkpe3JldHVybiBzPT0wJiZpPT10aGlzLmxlbmd0aD90aGlzOm5ldyBlKHRoaXMudmFsdWVzLnNsaWNlKHMsaSkpfSxlLnByb3RvdHlwZS5nZXRJbm5lcj1mdW5jdGlvbihzKXtyZXR1cm4gdGhpcy52YWx1ZXNbc119LGUucHJvdG90eXBlLmZvckVhY2hJbm5lcj1mdW5jdGlvbihzLGksbyxsKXtmb3IodmFyIGE9aTthPG87YSsrKWlmKHModGhpcy52YWx1ZXNbYV0sbCthKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lcj1mdW5jdGlvbihzLGksbyxsKXtmb3IodmFyIGE9aS0xO2E+PW87YS0tKWlmKHModGhpcy52YWx1ZXNbYV0sbCthKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5sZWFmQXBwZW5kPWZ1bmN0aW9uKHMpe2lmKHRoaXMubGVuZ3RoK3MubGVuZ3RoPD1RcilyZXR1cm4gbmV3IGUodGhpcy52YWx1ZXMuY29uY2F0KHMuZmxhdHRlbigpKSl9LGUucHJvdG90eXBlLmxlYWZQcmVwZW5kPWZ1bmN0aW9uKHMpe2lmKHRoaXMubGVuZ3RoK3MubGVuZ3RoPD1RcilyZXR1cm4gbmV3IGUocy5mbGF0dGVuKCkuY29uY2F0KHRoaXMudmFsdWVzKSl9LHQubGVuZ3RoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGh9LHQuZGVwdGguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpLGV9KShjZSk7Y2UuZW1wdHk9bmV3IEJkKFtdKTt2YXIgR2s9KGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGUodCxyKXtuLmNhbGwodGhpcyksdGhpcy5sZWZ0PXQsdGhpcy5yaWdodD1yLHRoaXMubGVuZ3RoPXQubGVuZ3RoK3IubGVuZ3RoLHRoaXMuZGVwdGg9TWF0aC5tYXgodC5kZXB0aCxyLmRlcHRoKSsxfXJldHVybiBuJiYoZS5fX3Byb3RvX189biksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuJiZuLnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5mbGF0dGVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVmdC5mbGF0dGVuKCkuY29uY2F0KHRoaXMucmlnaHQuZmxhdHRlbigpKX0sZS5wcm90b3R5cGUuZ2V0SW5uZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHI8dGhpcy5sZWZ0Lmxlbmd0aD90aGlzLmxlZnQuZ2V0KHIpOnRoaXMucmlnaHQuZ2V0KHItdGhpcy5sZWZ0Lmxlbmd0aCl9LGUucHJvdG90eXBlLmZvckVhY2hJbm5lcj1mdW5jdGlvbihyLHMsaSxvKXt2YXIgbD10aGlzLmxlZnQubGVuZ3RoO2lmKHM8bCYmdGhpcy5sZWZ0LmZvckVhY2hJbm5lcihyLHMsTWF0aC5taW4oaSxsKSxvKT09PSExfHxpPmwmJnRoaXMucmlnaHQuZm9yRWFjaElubmVyKHIsTWF0aC5tYXgocy1sLDApLE1hdGgubWluKHRoaXMubGVuZ3RoLGkpLWwsbytsKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lcj1mdW5jdGlvbihyLHMsaSxvKXt2YXIgbD10aGlzLmxlZnQubGVuZ3RoO2lmKHM+bCYmdGhpcy5yaWdodC5mb3JFYWNoSW52ZXJ0ZWRJbm5lcihyLHMtbCxNYXRoLm1heChpLGwpLWwsbytsKT09PSExfHxpPGwmJnRoaXMubGVmdC5mb3JFYWNoSW52ZXJ0ZWRJbm5lcihyLE1hdGgubWluKHMsbCksaSxvKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5zbGljZUlubmVyPWZ1bmN0aW9uKHIscyl7aWYocj09MCYmcz09dGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIGk9dGhpcy5sZWZ0Lmxlbmd0aDtyZXR1cm4gczw9aT90aGlzLmxlZnQuc2xpY2UocixzKTpyPj1pP3RoaXMucmlnaHQuc2xpY2Uoci1pLHMtaSk6dGhpcy5sZWZ0LnNsaWNlKHIsaSkuYXBwZW5kKHRoaXMucmlnaHQuc2xpY2UoMCxzLWkpKX0sZS5wcm90b3R5cGUubGVhZkFwcGVuZD1mdW5jdGlvbihyKXt2YXIgcz10aGlzLnJpZ2h0LmxlYWZBcHBlbmQocik7aWYocylyZXR1cm4gbmV3IGUodGhpcy5sZWZ0LHMpfSxlLnByb3RvdHlwZS5sZWFmUHJlcGVuZD1mdW5jdGlvbihyKXt2YXIgcz10aGlzLmxlZnQubGVhZlByZXBlbmQocik7aWYocylyZXR1cm4gbmV3IGUocyx0aGlzLnJpZ2h0KX0sZS5wcm90b3R5cGUuYXBwZW5kSW5uZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMubGVmdC5kZXB0aD49TWF0aC5tYXgodGhpcy5yaWdodC5kZXB0aCxyLmRlcHRoKSsxP25ldyBlKHRoaXMubGVmdCxuZXcgZSh0aGlzLnJpZ2h0LHIpKTpuZXcgZSh0aGlzLHIpfSxlfSkoY2UpO2NvbnN0IFFrPTUwMDtjbGFzcyBGZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaXRlbXM9ZSx0aGlzLmV2ZW50Q291bnQ9dH1wb3BFdmVudChlLHQpe2lmKHRoaXMuZXZlbnRDb3VudD09MClyZXR1cm4gbnVsbDtsZXQgcj10aGlzLml0ZW1zLmxlbmd0aDtmb3IoOztyLS0paWYodGhpcy5pdGVtcy5nZXQoci0xKS5zZWxlY3Rpb24pey0tcjticmVha31sZXQgcyxpO3QmJihzPXRoaXMucmVtYXBwaW5nKHIsdGhpcy5pdGVtcy5sZW5ndGgpLGk9cy5tYXBzLmxlbmd0aCk7bGV0IG89ZS50cixsLGEsYz1bXSx1PVtdO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2goKGQsaCk9PntpZighZC5zdGVwKXtzfHwocz10aGlzLnJlbWFwcGluZyhyLGgrMSksaT1zLm1hcHMubGVuZ3RoKSxpLS0sdS5wdXNoKGQpO3JldHVybn1pZihzKXt1LnB1c2gobmV3IGplKGQubWFwKSk7bGV0IGY9ZC5zdGVwLm1hcChzLnNsaWNlKGkpKSxwO2YmJm8ubWF5YmVTdGVwKGYpLmRvYyYmKHA9by5tYXBwaW5nLm1hcHNbby5tYXBwaW5nLm1hcHMubGVuZ3RoLTFdLGMucHVzaChuZXcgamUocCx2b2lkIDAsdm9pZCAwLGMubGVuZ3RoK3UubGVuZ3RoKSkpLGktLSxwJiZzLmFwcGVuZE1hcChwLGkpfWVsc2Ugby5tYXliZVN0ZXAoZC5zdGVwKTtpZihkLnNlbGVjdGlvbilyZXR1cm4gbD1zP2Quc2VsZWN0aW9uLm1hcChzLnNsaWNlKGkpKTpkLnNlbGVjdGlvbixhPW5ldyBGZSh0aGlzLml0ZW1zLnNsaWNlKDAscikuYXBwZW5kKHUucmV2ZXJzZSgpLmNvbmNhdChjKSksdGhpcy5ldmVudENvdW50LTEpLCExfSx0aGlzLml0ZW1zLmxlbmd0aCwwKSx7cmVtYWluaW5nOmEsdHJhbnNmb3JtOm8sc2VsZWN0aW9uOmx9fWFkZFRyYW5zZm9ybShlLHQscixzKXtsZXQgaT1bXSxvPXRoaXMuZXZlbnRDb3VudCxsPXRoaXMuaXRlbXMsYT0hcyYmbC5sZW5ndGg/bC5nZXQobC5sZW5ndGgtMSk6bnVsbDtmb3IobGV0IHU9MDt1PGUuc3RlcHMubGVuZ3RoO3UrKyl7bGV0IGQ9ZS5zdGVwc1t1XS5pbnZlcnQoZS5kb2NzW3VdKSxoPW5ldyBqZShlLm1hcHBpbmcubWFwc1t1XSxkLHQpLGY7KGY9YSYmYS5tZXJnZShoKSkmJihoPWYsdT9pLnBvcCgpOmw9bC5zbGljZSgwLGwubGVuZ3RoLTEpKSxpLnB1c2goaCksdCYmKG8rKyx0PXZvaWQgMCksc3x8KGE9aCl9bGV0IGM9by1yLmRlcHRoO3JldHVybiBjPllrJiYobD1YayhsLGMpLG8tPWMpLG5ldyBGZShsLmFwcGVuZChpKSxvKX1yZW1hcHBpbmcoZSx0KXtsZXQgcj1uZXcgSm47cmV0dXJuIHRoaXMuaXRlbXMuZm9yRWFjaCgocyxpKT0+e2xldCBvPXMubWlycm9yT2Zmc2V0IT1udWxsJiZpLXMubWlycm9yT2Zmc2V0Pj1lP3IubWFwcy5sZW5ndGgtcy5taXJyb3JPZmZzZXQ6dm9pZCAwO3IuYXBwZW5kTWFwKHMubWFwLG8pfSxlLHQpLHJ9YWRkTWFwcyhlKXtyZXR1cm4gdGhpcy5ldmVudENvdW50PT0wP3RoaXM6bmV3IEZlKHRoaXMuaXRlbXMuYXBwZW5kKGUubWFwKHQ9Pm5ldyBqZSh0KSkpLHRoaXMuZXZlbnRDb3VudCl9cmViYXNlZChlLHQpe2lmKCF0aGlzLmV2ZW50Q291bnQpcmV0dXJuIHRoaXM7bGV0IHI9W10scz1NYXRoLm1heCgwLHRoaXMuaXRlbXMubGVuZ3RoLXQpLGk9ZS5tYXBwaW5nLG89ZS5zdGVwcy5sZW5ndGgsbD10aGlzLmV2ZW50Q291bnQ7dGhpcy5pdGVtcy5mb3JFYWNoKGg9PntoLnNlbGVjdGlvbiYmbC0tfSxzKTtsZXQgYT10O3RoaXMuaXRlbXMuZm9yRWFjaChoPT57bGV0IGY9aS5nZXRNaXJyb3IoLS1hKTtpZihmPT1udWxsKXJldHVybjtvPU1hdGgubWluKG8sZik7bGV0IHA9aS5tYXBzW2ZdO2lmKGguc3RlcCl7bGV0IG09ZS5zdGVwc1tmXS5pbnZlcnQoZS5kb2NzW2ZdKSxnPWguc2VsZWN0aW9uJiZoLnNlbGVjdGlvbi5tYXAoaS5zbGljZShhKzEsZikpO2cmJmwrKyxyLnB1c2gobmV3IGplKHAsbSxnKSl9ZWxzZSByLnB1c2gobmV3IGplKHApKX0scyk7bGV0IGM9W107Zm9yKGxldCBoPXQ7aDxvO2grKyljLnB1c2gobmV3IGplKGkubWFwc1toXSkpO2xldCB1PXRoaXMuaXRlbXMuc2xpY2UoMCxzKS5hcHBlbmQoYykuYXBwZW5kKHIpLGQ9bmV3IEZlKHUsbCk7cmV0dXJuIGQuZW1wdHlJdGVtQ291bnQoKT5RayYmKGQ9ZC5jb21wcmVzcyh0aGlzLml0ZW1zLmxlbmd0aC1yLmxlbmd0aCkpLGR9ZW1wdHlJdGVtQ291bnQoKXtsZXQgZT0wO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2godD0+e3Quc3RlcHx8ZSsrfSksZX1jb21wcmVzcyhlPXRoaXMuaXRlbXMubGVuZ3RoKXtsZXQgdD10aGlzLnJlbWFwcGluZygwLGUpLHI9dC5tYXBzLmxlbmd0aCxzPVtdLGk9MDtyZXR1cm4gdGhpcy5pdGVtcy5mb3JFYWNoKChvLGwpPT57aWYobD49ZSlzLnB1c2gobyksby5zZWxlY3Rpb24mJmkrKztlbHNlIGlmKG8uc3RlcCl7bGV0IGE9by5zdGVwLm1hcCh0LnNsaWNlKHIpKSxjPWEmJmEuZ2V0TWFwKCk7aWYoci0tLGMmJnQuYXBwZW5kTWFwKGMsciksYSl7bGV0IHU9by5zZWxlY3Rpb24mJm8uc2VsZWN0aW9uLm1hcCh0LnNsaWNlKHIpKTt1JiZpKys7bGV0IGQ9bmV3IGplKGMuaW52ZXJ0KCksYSx1KSxoLGY9cy5sZW5ndGgtMTsoaD1zLmxlbmd0aCYmc1tmXS5tZXJnZShkKSk/c1tmXT1oOnMucHVzaChkKX19ZWxzZSBvLm1hcCYmci0tfSx0aGlzLml0ZW1zLmxlbmd0aCwwKSxuZXcgRmUoY2UuZnJvbShzLnJldmVyc2UoKSksaSl9fUZlLmVtcHR5PW5ldyBGZShjZS5lbXB0eSwwKTtmdW5jdGlvbiBYayhuLGUpe2xldCB0O3JldHVybiBuLmZvckVhY2goKHIscyk9PntpZihyLnNlbGVjdGlvbiYmZS0tPT0wKXJldHVybiB0PXMsITF9KSxuLnNsaWNlKHQpfWNsYXNzIGple2NvbnN0cnVjdG9yKGUsdCxyLHMpe3RoaXMubWFwPWUsdGhpcy5zdGVwPXQsdGhpcy5zZWxlY3Rpb249cix0aGlzLm1pcnJvck9mZnNldD1zfW1lcmdlKGUpe2lmKHRoaXMuc3RlcCYmZS5zdGVwJiYhZS5zZWxlY3Rpb24pe2xldCB0PWUuc3RlcC5tZXJnZSh0aGlzLnN0ZXApO2lmKHQpcmV0dXJuIG5ldyBqZSh0LmdldE1hcCgpLmludmVydCgpLHQsdGhpcy5zZWxlY3Rpb24pfX19Y2xhc3MgcHR7Y29uc3RydWN0b3IoZSx0LHIscyxpKXt0aGlzLmRvbmU9ZSx0aGlzLnVuZG9uZT10LHRoaXMucHJldlJhbmdlcz1yLHRoaXMucHJldlRpbWU9cyx0aGlzLnByZXZDb21wb3NpdGlvbj1pfX1jb25zdCBZaz0yMDtmdW5jdGlvbiBaayhuLGUsdCxyKXtsZXQgcz10LmdldE1ldGEoSHQpLGk7aWYocylyZXR1cm4gcy5oaXN0b3J5U3RhdGU7dC5nZXRNZXRhKG5iKSYmKG49bmV3IHB0KG4uZG9uZSxuLnVuZG9uZSxudWxsLDAsLTEpKTtsZXQgbz10LmdldE1ldGEoImFwcGVuZGVkVHJhbnNhY3Rpb24iKTtpZih0LnN0ZXBzLmxlbmd0aD09MClyZXR1cm4gbjtpZihvJiZvLmdldE1ldGEoSHQpKXJldHVybiBvLmdldE1ldGEoSHQpLnJlZG8/bmV3IHB0KG4uZG9uZS5hZGRUcmFuc2Zvcm0odCx2b2lkIDAscixMcihlKSksbi51bmRvbmUsRGEodC5tYXBwaW5nLm1hcHMpLG4ucHJldlRpbWUsbi5wcmV2Q29tcG9zaXRpb24pOm5ldyBwdChuLmRvbmUsbi51bmRvbmUuYWRkVHJhbnNmb3JtKHQsdm9pZCAwLHIsTHIoZSkpLG51bGwsbi5wcmV2VGltZSxuLnByZXZDb21wb3NpdGlvbik7aWYodC5nZXRNZXRhKCJhZGRUb0hpc3RvcnkiKSE9PSExJiYhKG8mJm8uZ2V0TWV0YSgiYWRkVG9IaXN0b3J5Iik9PT0hMSkpe2xldCBsPXQuZ2V0TWV0YSgiY29tcG9zaXRpb24iKSxhPW4ucHJldlRpbWU9PTB8fCFvJiZuLnByZXZDb21wb3NpdGlvbiE9bCYmKG4ucHJldlRpbWU8KHQudGltZXx8MCktci5uZXdHcm91cERlbGF5fHwhZWIodCxuLnByZXZSYW5nZXMpKSxjPW8/eWkobi5wcmV2UmFuZ2VzLHQubWFwcGluZyk6RGEodC5tYXBwaW5nLm1hcHMpO3JldHVybiBuZXcgcHQobi5kb25lLmFkZFRyYW5zZm9ybSh0LGE/ZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKTp2b2lkIDAscixMcihlKSksRmUuZW1wdHksYyx0LnRpbWUsbD8/bi5wcmV2Q29tcG9zaXRpb24pfWVsc2UgcmV0dXJuKGk9dC5nZXRNZXRhKCJyZWJhc2VkIikpP25ldyBwdChuLmRvbmUucmViYXNlZCh0LGkpLG4udW5kb25lLnJlYmFzZWQodCxpKSx5aShuLnByZXZSYW5nZXMsdC5tYXBwaW5nKSxuLnByZXZUaW1lLG4ucHJldkNvbXBvc2l0aW9uKTpuZXcgcHQobi5kb25lLmFkZE1hcHModC5tYXBwaW5nLm1hcHMpLG4udW5kb25lLmFkZE1hcHModC5tYXBwaW5nLm1hcHMpLHlpKG4ucHJldlJhbmdlcyx0Lm1hcHBpbmcpLG4ucHJldlRpbWUsbi5wcmV2Q29tcG9zaXRpb24pfWZ1bmN0aW9uIGViKG4sZSl7aWYoIWUpcmV0dXJuITE7aWYoIW4uZG9jQ2hhbmdlZClyZXR1cm4hMDtsZXQgdD0hMTtyZXR1cm4gbi5tYXBwaW5nLm1hcHNbMF0uZm9yRWFjaCgocixzKT0+e2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSs9MilyPD1lW2krMV0mJnM+PWVbaV0mJih0PSEwKX0pLHR9ZnVuY3Rpb24gRGEobil7bGV0IGU9W107Zm9yKGxldCB0PW4ubGVuZ3RoLTE7dD49MCYmZS5sZW5ndGg9PTA7dC0tKW5bdF0uZm9yRWFjaCgocixzLGksbyk9PmUucHVzaChpLG8pKTtyZXR1cm4gZX1mdW5jdGlvbiB5aShuLGUpe2lmKCFuKXJldHVybiBudWxsO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cis9Mil7bGV0IHM9ZS5tYXAobltyXSwxKSxpPWUubWFwKG5bcisxXSwtMSk7czw9aSYmdC5wdXNoKHMsaSl9cmV0dXJuIHR9ZnVuY3Rpb24gdGIobixlLHQpe2xldCByPUxyKGUpLHM9SHQuZ2V0KGUpLnNwZWMuY29uZmlnLGk9KHQ/bi51bmRvbmU6bi5kb25lKS5wb3BFdmVudChlLHIpO2lmKCFpKXJldHVybiBudWxsO2xldCBvPWkuc2VsZWN0aW9uLnJlc29sdmUoaS50cmFuc2Zvcm0uZG9jKSxsPSh0P24uZG9uZTpuLnVuZG9uZSkuYWRkVHJhbnNmb3JtKGkudHJhbnNmb3JtLGUuc2VsZWN0aW9uLmdldEJvb2ttYXJrKCkscyxyKSxhPW5ldyBwdCh0P2w6aS5yZW1haW5pbmcsdD9pLnJlbWFpbmluZzpsLG51bGwsMCwtMSk7cmV0dXJuIGkudHJhbnNmb3JtLnNldFNlbGVjdGlvbihvKS5zZXRNZXRhKEh0LHtyZWRvOnQsaGlzdG9yeVN0YXRlOmF9KX1sZXQga2k9ITEsTGE9bnVsbDtmdW5jdGlvbiBMcihuKXtsZXQgZT1uLnBsdWdpbnM7aWYoTGEhPWUpe2tpPSExLExhPWU7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS5zcGVjLmhpc3RvcnlQcmVzZXJ2ZUl0ZW1zKXtraT0hMDticmVha319cmV0dXJuIGtpfWNvbnN0IEh0PW5ldyBxKCJoaXN0b3J5IiksbmI9bmV3IHEoImNsb3NlSGlzdG9yeSIpO2Z1bmN0aW9uIHJiKG49e30pe3JldHVybiBuPXtkZXB0aDpuLmRlcHRofHwxMDAsbmV3R3JvdXBEZWxheTpuLm5ld0dyb3VwRGVsYXl8fDUwMH0sbmV3IEcoe2tleTpIdCxzdGF0ZTp7aW5pdCgpe3JldHVybiBuZXcgcHQoRmUuZW1wdHksRmUuZW1wdHksbnVsbCwwLC0xKX0sYXBwbHkoZSx0LHIpe3JldHVybiBaayh0LHIsZSxuKX19LGNvbmZpZzpuLHByb3BzOntoYW5kbGVET01FdmVudHM6e2JlZm9yZWlucHV0KGUsdCl7bGV0IHI9dC5pbnB1dFR5cGUscz1yPT0iaGlzdG9yeVVuZG8iP0hkOnI9PSJoaXN0b3J5UmVkbyI/RmQ6bnVsbDtyZXR1cm4hc3x8IWUuZWRpdGFibGU/ITE6KHQucHJldmVudERlZmF1bHQoKSxzKGUuc3RhdGUsZS5kaXNwYXRjaCkpfX19fSl9ZnVuY3Rpb24gX2QobixlKXtyZXR1cm4odCxyKT0+e2xldCBzPUh0LmdldFN0YXRlKHQpO2lmKCFzfHwobj9zLnVuZG9uZTpzLmRvbmUpLmV2ZW50Q291bnQ9PTApcmV0dXJuITE7aWYocil7bGV0IGk9dGIocyx0LG4pO2kmJnIoZT9pLnNjcm9sbEludG9WaWV3KCk6aSl9cmV0dXJuITB9fWNvbnN0IEhkPV9kKCExLCEwKSxGZD1fZCghMCwhMCk7dGUuY3JlYXRlKHtuYW1lOiJjaGFyYWN0ZXJDb3VudCIsYWRkT3B0aW9ucygpe3JldHVybntsaW1pdDpudWxsLG1vZGU6InRleHRTaXplIix0ZXh0Q291bnRlcjpuPT5uLmxlbmd0aCx3b3JkQ291bnRlcjpuPT5uLnNwbGl0KCIgIikuZmlsdGVyKGU9PmUhPT0iIikubGVuZ3RofX0sYWRkU3RvcmFnZSgpe3JldHVybntjaGFyYWN0ZXJzOigpPT4wLHdvcmRzOigpPT4wfX0sb25CZWZvcmVDcmVhdGUoKXt0aGlzLnN0b3JhZ2UuY2hhcmFjdGVycz1uPT57Y29uc3QgZT1uPy5ub2RlfHx0aGlzLmVkaXRvci5zdGF0ZS5kb2M7aWYoKG4/Lm1vZGV8fHRoaXMub3B0aW9ucy5tb2RlKT09PSJ0ZXh0U2l6ZSIpe2NvbnN0IHI9ZS50ZXh0QmV0d2VlbigwLGUuY29udGVudC5zaXplLHZvaWQgMCwiICIpO3JldHVybiB0aGlzLm9wdGlvbnMudGV4dENvdW50ZXIocil9cmV0dXJuIGUubm9kZVNpemV9LHRoaXMuc3RvcmFnZS53b3Jkcz1uPT57Y29uc3QgZT1uPy5ub2RlfHx0aGlzLmVkaXRvci5zdGF0ZS5kb2MsdD1lLnRleHRCZXR3ZWVuKDAsZS5jb250ZW50LnNpemUsIiAiLCIgIik7cmV0dXJuIHRoaXMub3B0aW9ucy53b3JkQ291bnRlcih0KX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe2xldCBuPSExO3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjaGFyYWN0ZXJDb3VudCIpLGFwcGVuZFRyYW5zYWN0aW9uOihlLHQscik9PntpZihuKXJldHVybjtjb25zdCBzPXRoaXMub3B0aW9ucy5saW1pdDtpZihzPT1udWxsfHxzPT09MCl7bj0hMDtyZXR1cm59Y29uc3QgaT10aGlzLnN0b3JhZ2UuY2hhcmFjdGVycyh7bm9kZTpyLmRvY30pO2lmKGk+cyl7Y29uc3Qgbz1pLXMsbD0wLGE9byxjPXIudHIuZGVsZXRlUmFuZ2UobCxhKTtyZXR1cm4gbj0hMCxjfW49ITB9LGZpbHRlclRyYW5zYWN0aW9uOihlLHQpPT57Y29uc3Qgcj10aGlzLm9wdGlvbnMubGltaXQ7aWYoIWUuZG9jQ2hhbmdlZHx8cj09PTB8fHI9PT1udWxsfHxyPT09dm9pZCAwKXJldHVybiEwO2NvbnN0IHM9dGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoe25vZGU6dC5kb2N9KSxpPXRoaXMuc3RvcmFnZS5jaGFyYWN0ZXJzKHtub2RlOmUuZG9jfSk7aWYoaTw9cnx8cz5yJiZpPnImJmk8PXMpcmV0dXJuITA7aWYocz5yJiZpPnImJmk+c3x8IWUuZ2V0TWV0YSgicGFzdGUiKSlyZXR1cm4hMTtjb25zdCBsPWUuc2VsZWN0aW9uLiRoZWFkLnBvcyxhPWktcixjPWwtYSx1PWw7cmV0dXJuIGUuZGVsZXRlUmFuZ2UoYyx1KSwhKHRoaXMuc3RvcmFnZS5jaGFyYWN0ZXJzKHtub2RlOmUuZG9jfSk+cil9fSldfX0pO3ZhciBzYj10ZS5jcmVhdGUoe25hbWU6ImRyb3BDdXJzb3IiLGFkZE9wdGlvbnMoKXtyZXR1cm57Y29sb3I6ImN1cnJlbnRDb2xvciIsd2lkdGg6MSxjbGFzczp2b2lkIDB9fSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bSGsodGhpcy5vcHRpb25zKV19fSk7dGUuY3JlYXRlKHtuYW1lOiJmb2N1cyIsYWRkT3B0aW9ucygpe3JldHVybntjbGFzc05hbWU6Imhhcy1mb2N1cyIsbW9kZToiYWxsIn19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJmb2N1cyIpLHByb3BzOntkZWNvcmF0aW9uczooe2RvYzpuLHNlbGVjdGlvbjplfSk9Pntjb25zdHtpc0VkaXRhYmxlOnQsaXNGb2N1c2VkOnJ9PXRoaXMuZWRpdG9yLHthbmNob3I6c309ZSxpPVtdO2lmKCF0fHwhcilyZXR1cm4gWS5jcmVhdGUobixbXSk7bGV0IG89MDt0aGlzLm9wdGlvbnMubW9kZT09PSJkZWVwZXN0IiYmbi5kZXNjZW5kYW50cygoYSxjKT0+e2lmKGEuaXNUZXh0KXJldHVybjtpZighKHM+PWMmJnM8PWMrYS5ub2RlU2l6ZS0xKSlyZXR1cm4hMTtvKz0xfSk7bGV0IGw9MDtyZXR1cm4gbi5kZXNjZW5kYW50cygoYSxjKT0+e2lmKGEuaXNUZXh0fHwhKHM+PWMmJnM8PWMrYS5ub2RlU2l6ZS0xKSlyZXR1cm4hMTtpZihsKz0xLHRoaXMub3B0aW9ucy5tb2RlPT09ImRlZXBlc3QiJiZvLWw+MHx8dGhpcy5vcHRpb25zLm1vZGU9PT0ic2hhbGxvd2VzdCImJmw+MSlyZXR1cm4gdGhpcy5vcHRpb25zLm1vZGU9PT0iZGVlcGVzdCI7aS5wdXNoKHllLm5vZGUoYyxjK2Eubm9kZVNpemUse2NsYXNzOnRoaXMub3B0aW9ucy5jbGFzc05hbWV9KSl9KSxZLmNyZWF0ZShuLGkpfX19KV19fSk7dmFyIGliPXRlLmNyZWF0ZSh7bmFtZToiZ2FwQ3Vyc29yIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bamsoKV19LGV4dGVuZE5vZGVTY2hlbWEobil7dmFyIGU7Y29uc3QgdD17bmFtZTpuLm5hbWUsb3B0aW9uczpuLm9wdGlvbnMsc3RvcmFnZTpuLnN0b3JhZ2V9O3JldHVybnthbGxvd0dhcEN1cnNvcjooZT1VKEEobiwiYWxsb3dHYXBDdXJzb3IiLHQpKSkhPW51bGw/ZTpudWxsfX19KSxQYT0icGxhY2Vob2xkZXIiO2Z1bmN0aW9uIG9iKG4pe3JldHVybiBuLnJlcGxhY2UoL1xzKy9nLCItIikucmVwbGFjZSgvW15hLXpBLVowLTktXS9nLCIiKS5yZXBsYWNlKC9eWzAtOS1dKy8sIiIpLnJlcGxhY2UoL14tKy8sIiIpLnRvTG93ZXJDYXNlKCl9dmFyIGxiPXRlLmNyZWF0ZSh7bmFtZToicGxhY2Vob2xkZXIiLGFkZE9wdGlvbnMoKXtyZXR1cm57ZW1wdHlFZGl0b3JDbGFzczoiaXMtZWRpdG9yLWVtcHR5IixlbXB0eU5vZGVDbGFzczoiaXMtZW1wdHkiLGRhdGFBdHRyaWJ1dGU6UGEscGxhY2Vob2xkZXI6IldyaXRlIHNvbWV0aGluZyDigKYiLHNob3dPbmx5V2hlbkVkaXRhYmxlOiEwLHNob3dPbmx5Q3VycmVudDohMCxpbmNsdWRlQ2hpbGRyZW46ITF9fSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBuPXRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlP2BkYXRhLSR7b2IodGhpcy5vcHRpb25zLmRhdGFBdHRyaWJ1dGUpfWA6YGRhdGEtJHtQYX1gO3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJwbGFjZWhvbGRlciIpLHByb3BzOntkZWNvcmF0aW9uczooe2RvYzplLHNlbGVjdGlvbjp0fSk9Pntjb25zdCByPXRoaXMuZWRpdG9yLmlzRWRpdGFibGV8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlXaGVuRWRpdGFibGUse2FuY2hvcjpzfT10LGk9W107aWYoIXIpcmV0dXJuIG51bGw7Y29uc3Qgbz10aGlzLmVkaXRvci5pc0VtcHR5O3JldHVybiBlLmRlc2NlbmRhbnRzKChsLGEpPT57Y29uc3QgYz1zPj1hJiZzPD1hK2wubm9kZVNpemUsdT0hbC5pc0xlYWYmJlZzKGwpO2lmKCFsLnR5cGUuaXNUZXh0YmxvY2spcmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlQ2hpbGRyZW47aWYoKGN8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlDdXJyZW50KSYmdSl7Y29uc3QgZD1bdGhpcy5vcHRpb25zLmVtcHR5Tm9kZUNsYXNzXTtvJiZkLnB1c2godGhpcy5vcHRpb25zLmVtcHR5RWRpdG9yQ2xhc3MpO2NvbnN0IGg9eWUubm9kZShhLGErbC5ub2RlU2l6ZSx7Y2xhc3M6ZC5qb2luKCIgIiksW25dOnR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXI9PSJmdW5jdGlvbiI/dGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKHtlZGl0b3I6dGhpcy5lZGl0b3Isbm9kZTpsLHBvczphLGhhc0FuY2hvcjpjfSk6dGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyfSk7aS5wdXNoKGgpfXJldHVybiB0aGlzLm9wdGlvbnMuaW5jbHVkZUNoaWxkcmVufSksWS5jcmVhdGUoZSxpKX19fSldfX0pO3RlLmNyZWF0ZSh7bmFtZToic2VsZWN0aW9uIixhZGRPcHRpb25zKCl7cmV0dXJue2NsYXNzTmFtZToic2VsZWN0aW9uIn19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe2NvbnN0e2VkaXRvcjpuLG9wdGlvbnM6ZX09dGhpcztyZXR1cm5bbmV3IEcoe2tleTpuZXcgcSgic2VsZWN0aW9uIikscHJvcHM6e2RlY29yYXRpb25zKHQpe3JldHVybiB0LnNlbGVjdGlvbi5lbXB0eXx8bi5pc0ZvY3VzZWR8fCFuLmlzRWRpdGFibGV8fG9kKHQuc2VsZWN0aW9uKXx8bi52aWV3LmRyYWdnaW5nP251bGw6WS5jcmVhdGUodC5kb2MsW3llLmlubGluZSh0LnNlbGVjdGlvbi5mcm9tLHQuc2VsZWN0aW9uLnRvLHtjbGFzczplLmNsYXNzTmFtZX0pXSl9fX0pXX19KTt2YXIgYWI9InNraXBUcmFpbGluZ05vZGUiO2Z1bmN0aW9uIHphKHt0eXBlczpuLG5vZGU6ZX0pe3JldHVybiBlJiZBcnJheS5pc0FycmF5KG4pJiZuLmluY2x1ZGVzKGUudHlwZSl8fGU/LnR5cGU9PT1ufXZhciBjYj10ZS5jcmVhdGUoe25hbWU6InRyYWlsaW5nTm9kZSIsYWRkT3B0aW9ucygpe3JldHVybntub2RlOnZvaWQgMCxub3RBZnRlcjpbXX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3ZhciBuO2NvbnN0IGU9bmV3IHEodGhpcy5uYW1lKSx0PXRoaXMub3B0aW9ucy5ub2RlfHwoKG49dGhpcy5lZGl0b3Iuc2NoZW1hLnRvcE5vZGVUeXBlLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSk9PW51bGw/dm9pZCAwOm4ubmFtZSl8fCJwYXJhZ3JhcGgiLHI9T2JqZWN0LmVudHJpZXModGhpcy5lZGl0b3Iuc2NoZW1hLm5vZGVzKS5tYXAoKFssc10pPT5zKS5maWx0ZXIocz0+KHRoaXMub3B0aW9ucy5ub3RBZnRlcnx8W10pLmNvbmNhdCh0KS5pbmNsdWRlcyhzLm5hbWUpKTtyZXR1cm5bbmV3IEcoe2tleTplLGFwcGVuZFRyYW5zYWN0aW9uOihzLGksbyk9Pntjb25zdHtkb2M6bCx0cjphLHNjaGVtYTpjfT1vLHU9ZS5nZXRTdGF0ZShvKSxkPWwuY29udGVudC5zaXplLGg9Yy5ub2Rlc1t0XTtpZighcy5zb21lKGY9PmYuZ2V0TWV0YShhYikpJiZ1KXJldHVybiBhLmluc2VydChkLGguY3JlYXRlKCkpfSxzdGF0ZTp7aW5pdDoocyxpKT0+e2NvbnN0IG89aS50ci5kb2MubGFzdENoaWxkO3JldHVybiF6YSh7bm9kZTpvLHR5cGVzOnJ9KX0sYXBwbHk6KHMsaSk9PntpZighcy5kb2NDaGFuZ2VkfHxzLmdldE1ldGEoIl9fdW5pcXVlSURUcmFuc2FjdGlvbiIpKXJldHVybiBpO2NvbnN0IG89cy5kb2MubGFzdENoaWxkO3JldHVybiF6YSh7bm9kZTpvLHR5cGVzOnJ9KX19fSldfX0pLHViPXRlLmNyZWF0ZSh7bmFtZToidW5kb1JlZG8iLGFkZE9wdGlvbnMoKXtyZXR1cm57ZGVwdGg6MTAwLG5ld0dyb3VwRGVsYXk6NTAwfX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57dW5kbzooKT0+KHtzdGF0ZTpuLGRpc3BhdGNoOmV9KT0+SGQobixlKSxyZWRvOigpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5GZChuLGUpfX0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW3JiKHRoaXMub3B0aW9ucyldfSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLXoiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy51bmRvKCksIlNoaWZ0LU1vZC16IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMucmVkbygpLCJNb2QteSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnJlZG8oKSwiTW9kLdGPIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudW5kbygpLCJTaGlmdC1Nb2Qt0Y8iOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCl9fX0pLGRiPWxiO2Z1bmN0aW9uIFdvKCl7cmV0dXJue2FzeW5jOiExLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhvb2tzOm51bGwscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzaWxlbnQ6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsfX12YXIgUXQ9V28oKTtmdW5jdGlvbiBWZChuKXtRdD1ufXZhciBJdD17ZXhlYzooKT0+bnVsbH07ZnVuY3Rpb24gVihuLGU9IiIpe2xldCB0PXR5cGVvZiBuPT0ic3RyaW5nIj9uOm4uc291cmNlLHI9e3JlcGxhY2U6KHMsaSk9PntsZXQgbz10eXBlb2YgaT09InN0cmluZyI/aTppLnNvdXJjZTtyZXR1cm4gbz1vLnJlcGxhY2UoeGUuY2FyZXQsIiQxIiksdD10LnJlcGxhY2UocyxvKSxyfSxnZXRSZWdleDooKT0+bmV3IFJlZ0V4cCh0LGUpfTtyZXR1cm4gcn12YXIgaGI9KCgpPT57dHJ5e3JldHVybiEhbmV3IFJlZ0V4cCgiKD88PTEpKD88ITEpIil9Y2F0Y2h7cmV0dXJuITF9fSkoKSx4ZT17Y29kZVJlbW92ZUluZGVudDovXig/OiB7MSw0fXwgezAsM31cdCkvZ20sb3V0cHV0TGlua1JlcGxhY2U6L1xcKFtcW1xdXSkvZyxpbmRlbnRDb2RlQ29tcGVuc2F0aW9uOi9eKFxzKykoPzpgYGApLyxiZWdpbm5pbmdTcGFjZTovXlxzKy8sZW5kaW5nSGFzaDovIyQvLHN0YXJ0aW5nU3BhY2VDaGFyOi9eIC8sZW5kaW5nU3BhY2VDaGFyOi8gJC8sbm9uU3BhY2VDaGFyOi9bXiBdLyxuZXdMaW5lQ2hhckdsb2JhbDovXG4vZyx0YWJDaGFyR2xvYmFsOi9cdC9nLG11bHRpcGxlU3BhY2VHbG9iYWw6L1xzKy9nLGJsYW5rTGluZTovXlsgXHRdKiQvLGRvdWJsZUJsYW5rTGluZTovXG5bIFx0XSpcblsgXHRdKiQvLGJsb2NrcXVvdGVTdGFydDovXiB7MCwzfT4vLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlOi9cbiB7MCwzfSgoPzo9K3wtKykgKikoPz1cbnwkKS9nLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlMjovXiB7MCwzfT5bIFx0XT8vZ20sbGlzdFJlcGxhY2VOZXN0aW5nOi9eIHsxLDR9KD89KCB7NH0pKlteIF0pL2csbGlzdElzVGFzazovXlxbWyB4WF1cXSArXFMvLGxpc3RSZXBsYWNlVGFzazovXlxbWyB4WF1cXSArLyxsaXN0VGFza0NoZWNrYm94Oi9cW1sgeFhdXF0vLGFueUxpbmU6L1xuLipcbi8saHJlZkJyYWNrZXRzOi9ePCguKik+JC8sdGFibGVEZWxpbWl0ZXI6L1s6fF0vLHRhYmxlQWxpZ25DaGFyczovXlx8fFx8ICokL2csdGFibGVSb3dCbGFua0xpbmU6L1xuWyBcdF0qJC8sdGFibGVBbGlnblJpZ2h0Oi9eICotKzogKiQvLHRhYmxlQWxpZ25DZW50ZXI6L14gKjotKzogKiQvLHRhYmxlQWxpZ25MZWZ0Oi9eICo6LSsgKiQvLHN0YXJ0QVRhZzovXjxhIC9pLGVuZEFUYWc6L148XC9hPi9pLHN0YXJ0UHJlU2NyaXB0VGFnOi9ePChwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLGVuZFByZVNjcmlwdFRhZzovXjxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLHN0YXJ0QW5nbGVCcmFja2V0Oi9ePC8sZW5kQW5nbGVCcmFja2V0Oi8+JC8scGVkYW50aWNIcmVmVGl0bGU6L14oW14nIl0qW15cc10pXHMrKFsnIl0pKC4qKVwyLyx1bmljb2RlQWxwaGFOdW1lcmljOi9bXHB7TH1ccHtOfV0vdSxlc2NhcGVUZXN0Oi9bJjw+IiddLyxlc2NhcGVSZXBsYWNlOi9bJjw+IiddL2csZXNjYXBlVGVzdE5vRW5jb2RlOi9bPD4iJ118Jig/ISgjXGR7MSw3fXwjW1h4XVthLWZBLUYwLTldezEsNn18XHcrKTspLyxlc2NhcGVSZXBsYWNlTm9FbmNvZGU6L1s8PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykvZyxjYXJldDovKF58W15cW10pXF4vZyxwZXJjZW50RGVjb2RlOi8lMjUvZyxmaW5kUGlwZTovXHwvZyxzcGxpdFBpcGU6LyBcfC8sc2xhc2hQaXBlOi9cXFx8L2csY2FycmlhZ2VSZXR1cm46L1xyXG58XHIvZyxzcGFjZUxpbmU6L14gKyQvZ20sbm90U3BhY2VTdGFydDovXlxTKi8sZW5kaW5nTmV3bGluZTovXG4kLyxsaXN0SXRlbVJlZ2V4Om49Pm5ldyBSZWdFeHAoYF4oIHswLDN9JHtufSkoKD86WwkgXVteXFxuXSopPyg/OlxcbnwkKSlgKSxuZXh0QnVsbGV0UmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19KD86WyorLV18XFxkezEsOX1bLildKSgoPzpbIAldW15cXG5dKik/KD86XFxufCQpKWApLGhyUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19KCg/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wkKWApLGZlbmNlc0JlZ2luUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19KD86XGBcYFxgfH5+filgKSxoZWFkaW5nQmVnaW5SZWdleDpuPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxuLTEpfX0jYCksaHRtbEJlZ2luUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19PCg/OlthLXpdLio+fCEtLSlgLCJpIiksYmxvY2txdW90ZUJlZ2luUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19PmApfSxmYj0vXig/OlsgXHRdKig/OlxufCQpKSsvLHBiPS9eKCg/OiB7NH18IHswLDN9XHQpW15cbl0rKD86XG4oPzpbIFx0XSooPzpcbnwkKSkqKT8pKy8sbWI9L14gezAsM30oYHszLH0oPz1bXmBcbl0qKD86XG58JCkpfH57Myx9KShbXlxuXSopKD86XG58JCkoPzp8KFtcc1xTXSo/KSg/OlxufCQpKSg/OiB7MCwzfVwxW35gXSogKig/PVxufCQpfCQpLyxscj0vXiB7MCwzfSgoPzotW1x0IF0qKXszLH18KD86X1sgXHRdKil7Myx9fCg/OlwqWyBcdF0qKXszLH0pKD86XG4rfCQpLyxnYj0vXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxLbz0vIHswLDN9KD86WyorLV18XGR7MSw5fVsuKV0pLyxVZD0vXig/IWJ1bGwgfGJsb2NrQ29kZXxmZW5jZXN8YmxvY2txdW90ZXxoZWFkaW5nfGh0bWx8dGFibGUpKCg/Oi58XG4oPyFccyo/XG58YnVsbCB8YmxvY2tDb2RlfGZlbmNlc3xibG9ja3F1b3RlfGhlYWRpbmd8aHRtbHx0YWJsZSkpKz8pXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLGpkPVYoVWQpLnJlcGxhY2UoL2J1bGwvZyxLbykucmVwbGFjZSgvYmxvY2tDb2RlL2csLyg/OiB7NH18IHswLDN9XHQpLykucmVwbGFjZSgvZmVuY2VzL2csLyB7MCwzfSg/OmB7Myx9fH57Myx9KS8pLnJlcGxhY2UoL2Jsb2NrcXVvdGUvZywvIHswLDN9Pi8pLnJlcGxhY2UoL2hlYWRpbmcvZywvIHswLDN9I3sxLDZ9LykucmVwbGFjZSgvaHRtbC9nLC8gezAsM308W15cbj5dKz5cbi8pLnJlcGxhY2UoL1x8dGFibGUvZywiIikuZ2V0UmVnZXgoKSx5Yj1WKFVkKS5yZXBsYWNlKC9idWxsL2csS28pLnJlcGxhY2UoL2Jsb2NrQ29kZS9nLC8oPzogezR9fCB7MCwzfVx0KS8pLnJlcGxhY2UoL2ZlbmNlcy9nLC8gezAsM30oPzpgezMsfXx+ezMsfSkvKS5yZXBsYWNlKC9ibG9ja3F1b3RlL2csLyB7MCwzfT4vKS5yZXBsYWNlKC9oZWFkaW5nL2csLyB7MCwzfSN7MSw2fS8pLnJlcGxhY2UoL2h0bWwvZywvIHswLDN9PFteXG4+XSs+XG4vKS5yZXBsYWNlKC90YWJsZS9nLC8gezAsM31cfD8oPzpbOlwtIF0qXHwpK1tcOlwtIF0qXG4vKS5nZXRSZWdleCgpLEpvPS9eKFteXG5dKyg/OlxuKD8haHJ8aGVhZGluZ3xsaGVhZGluZ3xibG9ja3F1b3RlfGZlbmNlc3xsaXN0fGh0bWx8dGFibGV8ICtcbilbXlxuXSspKikvLGtiPS9eW15cbl0rLyxHbz0vKD8hXHMqXF0pKD86XFxbXHNcU118W15cW1xdXFxdKSsvLGJiPVYoL14gezAsM31cWyhsYWJlbClcXTogKig/OlxuWyBcdF0qKT8oW148XHNdW15cc10qfDwuKj8+KSg/Oig/OiArKD86XG5bIFx0XSopP3wgKlxuWyBcdF0qKSh0aXRsZSkpPyAqKD86XG4rfCQpLykucmVwbGFjZSgibGFiZWwiLEdvKS5yZXBsYWNlKCJ0aXRsZSIsLyg/OiIoPzpcXCI/fFteIlxcXSkqInwnW14nXG5dKig/OlxuW14nXG5dKykqXG4/J3xcKFteKCldKlwpKS8pLmdldFJlZ2V4KCkseGI9VigvXihidWxsKShbIFx0XVteXG5dKz8pPyg/OlxufCQpLykucmVwbGFjZSgvYnVsbC9nLEtvKS5nZXRSZWdleCgpLHFzPSJhZGRyZXNzfGFydGljbGV8YXNpZGV8YmFzZXxiYXNlZm9udHxibG9ja3F1b3RlfGJvZHl8Y2FwdGlvbnxjZW50ZXJ8Y29sfGNvbGdyb3VwfGRkfGRldGFpbHN8ZGlhbG9nfGRpcnxkaXZ8ZGx8ZHR8ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGZvcm18ZnJhbWV8ZnJhbWVzZXR8aFsxLTZdfGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxtZXRhfG5hdnxub2ZyYW1lc3xvbHxvcHRncm91cHxvcHRpb258cHxwYXJhbXxzZWFyY2h8c2VjdGlvbnxzdW1tYXJ5fHRhYmxlfHRib2R5fHRkfHRmb290fHRofHRoZWFkfHRpdGxlfHRyfHRyYWNrfHVsIixRbz0vPCEtLSg/Oi0/PnxbXHNcU10qPyg/Oi0tPnwkKSkvLHdiPVYoIl4gezAsM30oPzo8KHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpW1xccz5dW1xcc1xcU10qPyg/OjwvXFwxPlteXFxuXSpcXG4rfCQpfGNvbW1lbnRbXlxcbl0qKFxcbit8JCl8PFxcP1tcXHNcXFNdKj8oPzpcXD8+XFxuKnwkKXw8IVtBLVpdW1xcc1xcU10qPyg/Oj5cXG4qfCQpfDwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/KD86XFxdXFxdPlxcbip8JCl8PC8/KHRhZykoPzogK3xcXG58Lz8+KVtcXHNcXFNdKj8oPzooPzpcXG5bIAldKikrXFxufCQpfDwoPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKShbYS16XVtcXHctXSopKD86YXR0cmlidXRlKSo/ICovPz4oPz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8oPzooPzpcXG5bIAldKikrXFxufCQpfDwvKD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbYS16XVtcXHctXSpcXHMqPig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcblsgCV0qKStcXG58JCkpIiwiaSIpLnJlcGxhY2UoImNvbW1lbnQiLFFvKS5yZXBsYWNlKCJ0YWciLHFzKS5yZXBsYWNlKCJhdHRyaWJ1dGUiLC8gK1thLXpBLVo6X11bXHcuOi1dKig/OiAqPSAqIlteIlxuXSoifCAqPSAqJ1teJ1xuXSonfCAqPSAqW15ccyInPTw+YF0rKT8vKS5nZXRSZWdleCgpLHFkPVYoSm8pLnJlcGxhY2UoImhyIixscikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSg/Olxcc3wkKSIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInx0YWJsZSIsIiIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSlbIFxcdF0iKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLHFzKS5nZXRSZWdleCgpLHZiPVYoL14oIHswLDN9PiA/KHBhcmFncmFwaHxbXlxuXSopKD86XG58JCkpKy8pLnJlcGxhY2UoInBhcmFncmFwaCIscWQpLmdldFJlZ2V4KCksWG89e2Jsb2NrcXVvdGU6dmIsY29kZTpwYixkZWY6YmIsZmVuY2VzOm1iLGhlYWRpbmc6Z2IsaHI6bHIsaHRtbDp3YixsaGVhZGluZzpqZCxsaXN0OnhiLG5ld2xpbmU6ZmIscGFyYWdyYXBoOnFkLHRhYmxlOkl0LHRleHQ6a2J9LCRhPVYoIl4gKihbXlxcbiBdLiopXFxuIHswLDN9KCg/OlxcfCAqKT86Py0rOj8gKig/OlxcfCAqOj8tKzo/ICopKig/OlxcfCAqKT8pKD86XFxuKCg/Oig/ISAqXFxufGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLiooPzpcXG58JCkpKilcXG4qfCQpIikucmVwbGFjZSgiaHIiLGxyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9KD86XFxzfCQpIikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJjb2RlIiwiKD86IHs0fXwgezAsM30JKVteXFxuXSIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pWyBcXHRdIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixxcykuZ2V0UmVnZXgoKSxTYj17Li4uWG8sbGhlYWRpbmc6eWIsdGFibGU6JGEscGFyYWdyYXBoOlYoSm8pLnJlcGxhY2UoImhyIixscikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSg/Olxcc3wkKSIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInRhYmxlIiwkYSkucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKVsgXFx0XSIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIscXMpLmdldFJlZ2V4KCl9LENiPXsuLi5YbyxodG1sOlYoYF4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OiJbXiJdKiJ8J1teJ10qJ3xcXHNbXiciLz5cXHNdKikqPy8/PiAqKD86XFxuezIsfXxcXHMqJCkpYCkucmVwbGFjZSgiY29tbWVudCIsUW8pLnJlcGxhY2UoL3RhZy9nLCIoPyEoPzphfGVtfHN0cm9uZ3xzbWFsbHxzfGNpdGV8cXxkZm58YWJicnxkYXRhfHRpbWV8Y29kZXx2YXJ8c2FtcHxrYmR8c3VifHN1cHxpfGJ8dXxtYXJrfHJ1Ynl8cnR8cnB8YmRpfGJkb3xzcGFufGJyfHdicnxpbnN8ZGVsfGltZylcXGIpXFx3Kyg/ITp8W15cXHdcXHNAXSpAKVxcYiIpLmdldFJlZ2V4KCksZGVmOi9eICpcWyhbXlxdXSspXF06ICo8PyhbXlxzPl0rKT4/KD86ICsoWyIoXVteXG5dK1siKV0pKT8gKig/OlxuK3wkKS8saGVhZGluZzovXigjezEsNn0pKC4qKSg/OlxuK3wkKS8sZmVuY2VzOkl0LGxoZWFkaW5nOi9eKC4rPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8scGFyYWdyYXBoOlYoSm8pLnJlcGxhY2UoImhyIixscikucmVwbGFjZSgiaGVhZGluZyIsYCAqI3sxLDZ9ICpbXgpdYCkucmVwbGFjZSgibGhlYWRpbmciLGpkKS5yZXBsYWNlKCJ8dGFibGUiLCIiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMiLCIiKS5yZXBsYWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikucmVwbGFjZSgifHRhZyIsIiIpLmdldFJlZ2V4KCl9LFRiPS9eXFwoWyEiIyQlJicoKSorLFwtLi86Ozw9Pj9AXFtcXVxcXl9ge3x9fl0pLyxNYj0vXihgKykoW15gXXxbXmBdW1xzXFNdKj9bXmBdKVwxKD8hYCkvLFdkPS9eKCB7Mix9fFxcKVxuKD8hXHMqJCkvLEViPS9eKGArfFteYF0pKD86KD89IHsyLH1cbil8W1xzXFNdKj8oPzooPz1bXFw8IVxbYCpfXXxcYl98JCl8W14gXSg/PSB7Mix9XG4pKSkvLGduPS9bXHB7UH1ccHtTfV0vdSxXcz0vW1xzXHB7UH1ccHtTfV0vdSxZbz0vW15cc1xwe1B9XHB7U31dL3UsQWI9VigvXigoPyFbKl9dKXB1bmN0U3BhY2UpLywidSIpLnJlcGxhY2UoL3B1bmN0U3BhY2UvZyxXcykuZ2V0UmVnZXgoKSxLZD0vKD8hfilbXHB7UH1ccHtTfV0vdSxPYj0vKD8hfilbXHNccHtQfVxwe1N9XS91LE5iPS8oPzpbXlxzXHB7UH1ccHtTfV18fikvdSxSYj1WKC9saW5rfHByZWNvZGUtY29kZXxodG1sLywiZyIpLnJlcGxhY2UoImxpbmsiLC9cWyg/OlteXFtcXWBdfCg/PGE+YCspW15gXStcazxhPig/IWApKSo/XF1cKCg/OlxcW1xzXFNdfFteXFxcKFwpXXxcKCg/OlxcW1xzXFNdfFteXFxcKFwpXSkqXCkpKlwpLykucmVwbGFjZSgicHJlY29kZS0iLGhiPyIoPzwhYCkoKSI6IiheXnxbXmBdKSIpLnJlcGxhY2UoImNvZGUiLC8oPzxiPmArKVteYF0rXGs8Yj4oPyFgKS8pLnJlcGxhY2UoImh0bWwiLC88KD8hIClbXjw+XSo/Pi8pLmdldFJlZ2V4KCksSmQ9L14oPzpcKisoPzooKD8hXCopcHVuY3QpfChbXlxzKl0pKT8pfF5fKyg/OigoPyFfKXB1bmN0KXwoW15cc19dKSk/LyxJYj1WKEpkLCJ1IikucmVwbGFjZSgvcHVuY3QvZyxnbikuZ2V0UmVnZXgoKSxEYj1WKEpkLCJ1IikucmVwbGFjZSgvcHVuY3QvZyxLZCkuZ2V0UmVnZXgoKSxHZD0iXlteXypdKj9fX1teXypdKj9cXCpbXl8qXSo/KD89X18pfFteKl0rKD89W14qXSl8KD8hXFwqKXB1bmN0KFxcKispKD89W1xcc118JCl8bm90UHVuY3RTcGFjZShcXCorKSg/IVxcKikoPz1wdW5jdFNwYWNlfCQpfCg/IVxcKilwdW5jdFNwYWNlKFxcKispKD89bm90UHVuY3RTcGFjZSl8W1xcc10oXFwqKykoPyFcXCopKD89cHVuY3QpfCg/IVxcKilwdW5jdChcXCorKSg/IVxcKikoPz1wdW5jdCl8bm90UHVuY3RTcGFjZShcXCorKSg/PW5vdFB1bmN0U3BhY2UpIixMYj1WKEdkLCJndSIpLnJlcGxhY2UoL25vdFB1bmN0U3BhY2UvZyxZbykucmVwbGFjZSgvcHVuY3RTcGFjZS9nLFdzKS5yZXBsYWNlKC9wdW5jdC9nLGduKS5nZXRSZWdleCgpLFBiPVYoR2QsImd1IikucmVwbGFjZSgvbm90UHVuY3RTcGFjZS9nLE5iKS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csT2IpLnJlcGxhY2UoL3B1bmN0L2csS2QpLmdldFJlZ2V4KCksemI9VigiXlteXypdKj9cXCpcXCpbXl8qXSo/X1teXypdKj8oPz1cXCpcXCopfFteX10rKD89W15fXSl8KD8hXylwdW5jdChfKykoPz1bXFxzXXwkKXxub3RQdW5jdFNwYWNlKF8rKSg/IV8pKD89cHVuY3RTcGFjZXwkKXwoPyFfKXB1bmN0U3BhY2UoXyspKD89bm90UHVuY3RTcGFjZSl8W1xcc10oXyspKD8hXykoPz1wdW5jdCl8KD8hXylwdW5jdChfKykoPyFfKSg/PXB1bmN0KSIsImd1IikucmVwbGFjZSgvbm90UHVuY3RTcGFjZS9nLFlvKS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csV3MpLnJlcGxhY2UoL3B1bmN0L2csZ24pLmdldFJlZ2V4KCksJGI9VigvXn5+Pyg/OigoPyF+KXB1bmN0KXxbXlxzfl0pLywidSIpLnJlcGxhY2UoL3B1bmN0L2csZ24pLmdldFJlZ2V4KCksQmI9Il5bXn5dKyg/PVtefl0pfCg/IX4pcHVuY3Qofn4/KSg/PVtcXHNdfCQpfG5vdFB1bmN0U3BhY2Uofn4/KSg/IX4pKD89cHVuY3RTcGFjZXwkKXwoPyF+KXB1bmN0U3BhY2Uofn4/KSg/PW5vdFB1bmN0U3BhY2UpfFtcXHNdKH5+PykoPyF+KSg/PXB1bmN0KXwoPyF+KXB1bmN0KH5+PykoPyF+KSg/PXB1bmN0KXxub3RQdW5jdFNwYWNlKH5+PykoPz1ub3RQdW5jdFNwYWNlKSIsX2I9VihCYiwiZ3UiKS5yZXBsYWNlKC9ub3RQdW5jdFNwYWNlL2csWW8pLnJlcGxhY2UoL3B1bmN0U3BhY2UvZyxXcykucmVwbGFjZSgvcHVuY3QvZyxnbikuZ2V0UmVnZXgoKSxIYj1WKC9cXChwdW5jdCkvLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csZ24pLmdldFJlZ2V4KCksRmI9VigvXjwoc2NoZW1lOlteXHNceDAwLVx4MWY8Pl0qfGVtYWlsKT4vKS5yZXBsYWNlKCJzY2hlbWUiLC9bYS16QS1aXVthLXpBLVowLTkrLi1dezEsMzF9LykucmVwbGFjZSgiZW1haWwiLC9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dKyhAKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSsoPyFbLV9dKS8pLmdldFJlZ2V4KCksVmI9VihRbykucmVwbGFjZSgiKD86LS0+fCQpIiwiLS0+IikuZ2V0UmVnZXgoKSxVYj1WKCJeY29tbWVudHxePC9bYS16QS1aXVtcXHc6LV0qXFxzKj58XjxbYS16QS1aXVtcXHctXSooPzphdHRyaWJ1dGUpKj9cXHMqLz8+fF48XFw/W1xcc1xcU10qP1xcPz58XjwhW2EtekEtWl0rXFxzW1xcc1xcU10qPz58XjwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/XFxdXFxdPiIpLnJlcGxhY2UoImNvbW1lbnQiLFZiKS5yZXBsYWNlKCJhdHRyaWJ1dGUiLC9ccytbYS16QS1aOl9dW1x3LjotXSooPzpccyo9XHMqIlteIl0qInxccyo9XHMqJ1teJ10qJ3xccyo9XHMqW15ccyInPTw+YF0rKT8vKS5nZXRSZWdleCgpLFhyPS8oPzpcWyg/OlxcW1xzXFNdfFteXFtcXVxcXSkqXF18XFxbXHNcU118YCsoPyFgKVteYF0qP2ArKD8hYCl8YGArKD89XF0pfFteXFtcXVxcYF0pKj8vLGpiPVYoL14hP1xbKGxhYmVsKVxdXChccyooaHJlZikoPzooPzpbIFx0XSsoPzpcblsgXHRdKik/fFxuWyBcdF0qKSh0aXRsZSkpP1xzKlwpLykucmVwbGFjZSgibGFiZWwiLFhyKS5yZXBsYWNlKCJocmVmIiwvPCg/OlxcLnxbXlxuPD5cXF0pKz58W14gXHRcblx4MDAtXHgxZl0qLykucmVwbGFjZSgidGl0bGUiLC8iKD86XFwiP3xbXiJcXF0pKiJ8Jyg/OlxcJz98W14nXFxdKSonfFwoKD86XFxcKT98W14pXFxdKSpcKS8pLmdldFJlZ2V4KCksUWQ9VigvXiE/XFsobGFiZWwpXF1cWyhyZWYpXF0vKS5yZXBsYWNlKCJsYWJlbCIsWHIpLnJlcGxhY2UoInJlZiIsR28pLmdldFJlZ2V4KCksWGQ9VigvXiE/XFsocmVmKVxdKD86XFtcXSk/LykucmVwbGFjZSgicmVmIixHbykuZ2V0UmVnZXgoKSxxYj1WKCJyZWZsaW5rfG5vbGluayg/IVxcKCkiLCJnIikucmVwbGFjZSgicmVmbGluayIsUWQpLnJlcGxhY2UoIm5vbGluayIsWGQpLmdldFJlZ2V4KCksQmE9L1toSF1bdFRdW3RUXVtwUF1bc1NdP3xbZkZdW3RUXVtwUF0vLFpvPXtfYmFja3BlZGFsOkl0LGFueVB1bmN0dWF0aW9uOkhiLGF1dG9saW5rOkZiLGJsb2NrU2tpcDpSYixicjpXZCxjb2RlOk1iLGRlbDpJdCxkZWxMRGVsaW06SXQsZGVsUkRlbGltOkl0LGVtU3Ryb25nTERlbGltOkliLGVtU3Ryb25nUkRlbGltQXN0OkxiLGVtU3Ryb25nUkRlbGltVW5kOnpiLGVzY2FwZTpUYixsaW5rOmpiLG5vbGluazpYZCxwdW5jdHVhdGlvbjpBYixyZWZsaW5rOlFkLHJlZmxpbmtTZWFyY2g6cWIsdGFnOlViLHRleHQ6RWIsdXJsOkl0fSxXYj17Li4uWm8sbGluazpWKC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIixYcikuZ2V0UmVnZXgoKSxyZWZsaW5rOlYoL14hP1xbKGxhYmVsKVxdXHMqXFsoW15cXV0qKVxdLykucmVwbGFjZSgibGFiZWwiLFhyKS5nZXRSZWdleCgpfSxRaT17Li4uWm8sZW1TdHJvbmdSRGVsaW1Bc3Q6UGIsZW1TdHJvbmdMRGVsaW06RGIsZGVsTERlbGltOiRiLGRlbFJEZWxpbTpfYix1cmw6VigvXigoPzpwcm90b2NvbCk6XC9cL3x3d3dcLikoPzpbYS16QS1aMC05XC1dK1wuPykrW15cczxdKnxeZW1haWwvKS5yZXBsYWNlKCJwcm90b2NvbCIsQmEpLnJlcGxhY2UoImVtYWlsIiwvW0EtWmEtejAtOS5fKy1dKyhAKVthLXpBLVowLTktX10rKD86XC5bYS16QS1aMC05LV9dKlthLXpBLVowLTldKSsoPyFbLV9dKS8pLmdldFJlZ2V4KCksX2JhY2twZWRhbDovKD86W14/IS4sOjsqXycifigpJl0rfFwoW14pXSpcKXwmKD8hW2EtekEtWjAtOV0rOyQpfFs/IS4sOjsqXycifildKyg/ISQpKSsvLGRlbDovXih+fj8pKD89W15cc35dKSgoPzpcXFtcc1xTXXxbXlxcXSkqPyg/OlxcW1xzXFNdfFteXHN+XFxdKSlcMSg/PVtefl18JCkvLHRleHQ6VigvXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxuKXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKn5fXXxcYl98cHJvdG9jb2w6XC9cL3x3d3dcLnwkKXxbXiBdKD89IHsyLH1cbil8W15hLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dKD89W2EtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0rQCkpKS8pLnJlcGxhY2UoInByb3RvY29sIixCYSkuZ2V0UmVnZXgoKX0sS2I9ey4uLlFpLGJyOlYoV2QpLnJlcGxhY2UoInsyLH0iLCIqIikuZ2V0UmVnZXgoKSx0ZXh0OlYoUWkudGV4dCkucmVwbGFjZSgiXFxiXyIsIlxcYl98IHsyLH1cXG4iKS5yZXBsYWNlKC9cezIsXH0vZywiKiIpLmdldFJlZ2V4KCl9LFNyPXtub3JtYWw6WG8sZ2ZtOlNiLHBlZGFudGljOkNifSx4bj17bm9ybWFsOlpvLGdmbTpRaSxicmVha3M6S2IscGVkYW50aWM6V2J9LEpiPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifSxfYT1uPT5KYltuXTtmdW5jdGlvbiBVZShuLGUpe2lmKGUpe2lmKHhlLmVzY2FwZVRlc3QudGVzdChuKSlyZXR1cm4gbi5yZXBsYWNlKHhlLmVzY2FwZVJlcGxhY2UsX2EpfWVsc2UgaWYoeGUuZXNjYXBlVGVzdE5vRW5jb2RlLnRlc3QobikpcmV0dXJuIG4ucmVwbGFjZSh4ZS5lc2NhcGVSZXBsYWNlTm9FbmNvZGUsX2EpO3JldHVybiBufWZ1bmN0aW9uIEhhKG4pe3RyeXtuPWVuY29kZVVSSShuKS5yZXBsYWNlKHhlLnBlcmNlbnREZWNvZGUsIiUiKX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gbn1mdW5jdGlvbiBGYShuLGUpe2xldCB0PW4ucmVwbGFjZSh4ZS5maW5kUGlwZSwoaSxvLGwpPT57bGV0IGE9ITEsYz1vO2Zvcig7LS1jPj0wJiZsW2NdPT09IlxcIjspYT0hYTtyZXR1cm4gYT8ifCI6IiB8In0pLHI9dC5zcGxpdCh4ZS5zcGxpdFBpcGUpLHM9MDtpZihyWzBdLnRyaW0oKXx8ci5zaGlmdCgpLHIubGVuZ3RoPjAmJiFyLmF0KC0xKT8udHJpbSgpJiZyLnBvcCgpLGUpaWYoci5sZW5ndGg+ZSlyLnNwbGljZShlKTtlbHNlIGZvcig7ci5sZW5ndGg8ZTspci5wdXNoKCIiKTtmb3IoO3M8ci5sZW5ndGg7cysrKXJbc109cltzXS50cmltKCkucmVwbGFjZSh4ZS5zbGFzaFBpcGUsInwiKTtyZXR1cm4gcn1mdW5jdGlvbiB3bihuLGUsdCl7bGV0IHI9bi5sZW5ndGg7aWYocj09PTApcmV0dXJuIiI7bGV0IHM9MDtmb3IoO3M8ciYmbi5jaGFyQXQoci1zLTEpPT09ZTspcysrO3JldHVybiBuLnNsaWNlKDAsci1zKX1mdW5jdGlvbiBHYihuLGUpe2lmKG4uaW5kZXhPZihlWzFdKT09PS0xKXJldHVybi0xO2xldCB0PTA7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspaWYobltyXT09PSJcXCIpcisrO2Vsc2UgaWYobltyXT09PWVbMF0pdCsrO2Vsc2UgaWYobltyXT09PWVbMV0mJih0LS0sdDwwKSlyZXR1cm4gcjtyZXR1cm4gdD4wPy0yOi0xfWZ1bmN0aW9uIFFiKG4sZT0wKXtsZXQgdD1lLHI9IiI7Zm9yKGxldCBzIG9mIG4paWYocz09PSIJIil7bGV0IGk9NC10JTQ7cis9IiAiLnJlcGVhdChpKSx0Kz1pfWVsc2Ugcis9cyx0Kys7cmV0dXJuIHJ9ZnVuY3Rpb24gVmEobixlLHQscixzKXtsZXQgaT1lLmhyZWYsbz1lLnRpdGxlfHxudWxsLGw9blsxXS5yZXBsYWNlKHMub3RoZXIub3V0cHV0TGlua1JlcGxhY2UsIiQxIik7ci5zdGF0ZS5pbkxpbms9ITA7bGV0IGE9e3R5cGU6blswXS5jaGFyQXQoMCk9PT0iISI/ImltYWdlIjoibGluayIscmF3OnQsaHJlZjppLHRpdGxlOm8sdGV4dDpsLHRva2VuczpyLmlubGluZVRva2VucyhsKX07cmV0dXJuIHIuc3RhdGUuaW5MaW5rPSExLGF9ZnVuY3Rpb24gWGIobixlLHQpe2xldCByPW4ubWF0Y2godC5vdGhlci5pbmRlbnRDb2RlQ29tcGVuc2F0aW9uKTtpZihyPT09bnVsbClyZXR1cm4gZTtsZXQgcz1yWzFdO3JldHVybiBlLnNwbGl0KGAKYCkubWFwKGk9PntsZXQgbz1pLm1hdGNoKHQub3RoZXIuYmVnaW5uaW5nU3BhY2UpO2lmKG89PT1udWxsKXJldHVybiBpO2xldFtsXT1vO3JldHVybiBsLmxlbmd0aD49cy5sZW5ndGg/aS5zbGljZShzLmxlbmd0aCk6aX0pLmpvaW4oYApgKX12YXIgWXI9Y2xhc3N7b3B0aW9ucztydWxlcztsZXhlcjtjb25zdHJ1Y3RvcihuKXt0aGlzLm9wdGlvbnM9bnx8UXR9c3BhY2Uobil7bGV0IGU9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMobik7aWYoZSYmZVswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzplWzBdfX1jb2RlKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2suY29kZS5leGVjKG4pO2lmKGUpe2xldCB0PWVbMF0ucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLmNvZGVSZW1vdmVJbmRlbnQsIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6ZVswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP3Q6d24odCxgCmApfX19ZmVuY2VzKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVswXSxyPVhiKHQsZVszXXx8IiIsdGhpcy5ydWxlcyk7cmV0dXJue3R5cGU6ImNvZGUiLHJhdzp0LGxhbmc6ZVsyXT9lWzJdLnRyaW0oKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpOmVbMl0sdGV4dDpyfX19aGVhZGluZyhuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLmhlYWRpbmcuZXhlYyhuKTtpZihlKXtsZXQgdD1lWzJdLnRyaW0oKTtpZih0aGlzLnJ1bGVzLm90aGVyLmVuZGluZ0hhc2gudGVzdCh0KSl7bGV0IHI9d24odCwiIyIpOyh0aGlzLm9wdGlvbnMucGVkYW50aWN8fCFyfHx0aGlzLnJ1bGVzLm90aGVyLmVuZGluZ1NwYWNlQ2hhci50ZXN0KHIpKSYmKHQ9ci50cmltKCkpfXJldHVybnt0eXBlOiJoZWFkaW5nIixyYXc6ZVswXSxkZXB0aDplWzFdLmxlbmd0aCx0ZXh0OnQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHQpfX19aHIobil7bGV0IGU9dGhpcy5ydWxlcy5ibG9jay5oci5leGVjKG4pO2lmKGUpcmV0dXJue3R5cGU6ImhyIixyYXc6d24oZVswXSxgCmApfX1ibG9ja3F1b3RlKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2suYmxvY2txdW90ZS5leGVjKG4pO2lmKGUpe2xldCB0PXduKGVbMF0sYApgKS5zcGxpdChgCmApLHI9IiIscz0iIixpPVtdO2Zvcig7dC5sZW5ndGg+MDspe2xldCBvPSExLGw9W10sYTtmb3IoYT0wO2E8dC5sZW5ndGg7YSsrKWlmKHRoaXMucnVsZXMub3RoZXIuYmxvY2txdW90ZVN0YXJ0LnRlc3QodFthXSkpbC5wdXNoKHRbYV0pLG89ITA7ZWxzZSBpZighbylsLnB1c2godFthXSk7ZWxzZSBicmVhazt0PXQuc2xpY2UoYSk7bGV0IGM9bC5qb2luKGAKYCksdT1jLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU2V0ZXh0UmVwbGFjZSxgCiAgICAkMWApLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU2V0ZXh0UmVwbGFjZTIsIiIpO3I9cj9gJHtyfQoke2N9YDpjLHM9cz9gJHtzfQoke3V9YDp1O2xldCBkPXRoaXMubGV4ZXIuc3RhdGUudG9wO2lmKHRoaXMubGV4ZXIuc3RhdGUudG9wPSEwLHRoaXMubGV4ZXIuYmxvY2tUb2tlbnModSxpLCEwKSx0aGlzLmxleGVyLnN0YXRlLnRvcD1kLHQubGVuZ3RoPT09MClicmVhaztsZXQgaD1pLmF0KC0xKTtpZihoPy50eXBlPT09ImNvZGUiKWJyZWFrO2lmKGg/LnR5cGU9PT0iYmxvY2txdW90ZSIpe2xldCBmPWgscD1mLnJhdytgCmArdC5qb2luKGAKYCksbT10aGlzLmJsb2NrcXVvdGUocCk7aVtpLmxlbmd0aC0xXT1tLHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC1mLnJhdy5sZW5ndGgpK20ucmF3LHM9cy5zdWJzdHJpbmcoMCxzLmxlbmd0aC1mLnRleHQubGVuZ3RoKSttLnRleHQ7YnJlYWt9ZWxzZSBpZihoPy50eXBlPT09Imxpc3QiKXtsZXQgZj1oLHA9Zi5yYXcrYApgK3Quam9pbihgCmApLG09dGhpcy5saXN0KHApO2lbaS5sZW5ndGgtMV09bSxyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtaC5yYXcubGVuZ3RoKSttLnJhdyxzPXMuc3Vic3RyaW5nKDAscy5sZW5ndGgtZi5yYXcubGVuZ3RoKSttLnJhdyx0PXAuc3Vic3RyaW5nKGkuYXQoLTEpLnJhdy5sZW5ndGgpLnNwbGl0KGAKYCk7Y29udGludWV9fXJldHVybnt0eXBlOiJibG9ja3F1b3RlIixyYXc6cix0b2tlbnM6aSx0ZXh0OnN9fX1saXN0KG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKG4pO2lmKGUpe2xldCB0PWVbMV0udHJpbSgpLHI9dC5sZW5ndGg+MSxzPXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpyLHN0YXJ0OnI/K3Quc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119O3Q9cj9gXFxkezEsOX1cXCR7dC5zbGljZSgtMSl9YDpgXFwke3R9YCx0aGlzLm9wdGlvbnMucGVkYW50aWMmJih0PXI/dDoiWyorLV0iKTtsZXQgaT10aGlzLnJ1bGVzLm90aGVyLmxpc3RJdGVtUmVnZXgodCksbz0hMTtmb3IoO247KXtsZXQgYT0hMSxjPSIiLHU9IiI7aWYoIShlPWkuZXhlYyhuKSl8fHRoaXMucnVsZXMuYmxvY2suaHIudGVzdChuKSlicmVhaztjPWVbMF0sbj1uLnN1YnN0cmluZyhjLmxlbmd0aCk7bGV0IGQ9UWIoZVsyXS5zcGxpdChgCmAsMSlbMF0sZVsxXS5sZW5ndGgpLGg9bi5zcGxpdChgCmAsMSlbMF0sZj0hZC50cmltKCkscD0wO2lmKHRoaXMub3B0aW9ucy5wZWRhbnRpYz8ocD0yLHU9ZC50cmltU3RhcnQoKSk6Zj9wPWVbMV0ubGVuZ3RoKzE6KHA9ZC5zZWFyY2godGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIpLHA9cD40PzE6cCx1PWQuc2xpY2UocCkscCs9ZVsxXS5sZW5ndGgpLGYmJnRoaXMucnVsZXMub3RoZXIuYmxhbmtMaW5lLnRlc3QoaCkmJihjKz1oK2AKYCxuPW4uc3Vic3RyaW5nKGgubGVuZ3RoKzEpLGE9ITApLCFhKXtsZXQgbT10aGlzLnJ1bGVzLm90aGVyLm5leHRCdWxsZXRSZWdleChwKSxnPXRoaXMucnVsZXMub3RoZXIuaHJSZWdleChwKSx5PXRoaXMucnVsZXMub3RoZXIuZmVuY2VzQmVnaW5SZWdleChwKSxrPXRoaXMucnVsZXMub3RoZXIuaGVhZGluZ0JlZ2luUmVnZXgocCksYj10aGlzLnJ1bGVzLm90aGVyLmh0bWxCZWdpblJlZ2V4KHApLHc9dGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlQmVnaW5SZWdleChwKTtmb3IoO247KXtsZXQgeD1uLnNwbGl0KGAKYCwxKVswXSx2O2lmKGg9eCx0aGlzLm9wdGlvbnMucGVkYW50aWM/KGg9aC5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubGlzdFJlcGxhY2VOZXN0aW5nLCIgICIpLHY9aCk6dj1oLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci50YWJDaGFyR2xvYmFsLCIgICAgIikseS50ZXN0KGgpfHxrLnRlc3QoaCl8fGIudGVzdChoKXx8dy50ZXN0KGgpfHxtLnRlc3QoaCl8fGcudGVzdChoKSlicmVhaztpZih2LnNlYXJjaCh0aGlzLnJ1bGVzLm90aGVyLm5vblNwYWNlQ2hhcik+PXB8fCFoLnRyaW0oKSl1Kz1gCmArdi5zbGljZShwKTtlbHNle2lmKGZ8fGQucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLnRhYkNoYXJHbG9iYWwsIiAgICAiKS5zZWFyY2godGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIpPj00fHx5LnRlc3QoZCl8fGsudGVzdChkKXx8Zy50ZXN0KGQpKWJyZWFrO3UrPWAKYCtofWY9IWgudHJpbSgpLGMrPXgrYApgLG49bi5zdWJzdHJpbmcoeC5sZW5ndGgrMSksZD12LnNsaWNlKHApfX1zLmxvb3NlfHwobz9zLmxvb3NlPSEwOnRoaXMucnVsZXMub3RoZXIuZG91YmxlQmxhbmtMaW5lLnRlc3QoYykmJihvPSEwKSkscy5pdGVtcy5wdXNoKHt0eXBlOiJsaXN0X2l0ZW0iLHJhdzpjLHRhc2s6ISF0aGlzLm9wdGlvbnMuZ2ZtJiZ0aGlzLnJ1bGVzLm90aGVyLmxpc3RJc1Rhc2sudGVzdCh1KSxsb29zZTohMSx0ZXh0OnUsdG9rZW5zOltdfSkscy5yYXcrPWN9bGV0IGw9cy5pdGVtcy5hdCgtMSk7aWYobClsLnJhdz1sLnJhdy50cmltRW5kKCksbC50ZXh0PWwudGV4dC50cmltRW5kKCk7ZWxzZSByZXR1cm47cy5yYXc9cy5yYXcudHJpbUVuZCgpO2ZvcihsZXQgYSBvZiBzLml0ZW1zKXtpZih0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxhLnRva2Vucz10aGlzLmxleGVyLmJsb2NrVG9rZW5zKGEudGV4dCxbXSksYS50YXNrKXtpZihhLnRleHQ9YS50ZXh0LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLGEudG9rZW5zWzBdPy50eXBlPT09InRleHQifHxhLnRva2Vuc1swXT8udHlwZT09PSJwYXJhZ3JhcGgiKXthLnRva2Vuc1swXS5yYXc9YS50b2tlbnNbMF0ucmF3LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLGEudG9rZW5zWzBdLnRleHQ9YS50b2tlbnNbMF0udGV4dC5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubGlzdFJlcGxhY2VUYXNrLCIiKTtmb3IobGV0IHU9dGhpcy5sZXhlci5pbmxpbmVRdWV1ZS5sZW5ndGgtMTt1Pj0wO3UtLSlpZih0aGlzLnJ1bGVzLm90aGVyLmxpc3RJc1Rhc2sudGVzdCh0aGlzLmxleGVyLmlubGluZVF1ZXVlW3VdLnNyYykpe3RoaXMubGV4ZXIuaW5saW5lUXVldWVbdV0uc3JjPXRoaXMubGV4ZXIuaW5saW5lUXVldWVbdV0uc3JjLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpO2JyZWFrfX1sZXQgYz10aGlzLnJ1bGVzLm90aGVyLmxpc3RUYXNrQ2hlY2tib3guZXhlYyhhLnJhdyk7aWYoYyl7bGV0IHU9e3R5cGU6ImNoZWNrYm94IixyYXc6Y1swXSsiICIsY2hlY2tlZDpjWzBdIT09IlsgXSJ9O2EuY2hlY2tlZD11LmNoZWNrZWQscy5sb29zZT9hLnRva2Vuc1swXSYmWyJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoYS50b2tlbnNbMF0udHlwZSkmJiJ0b2tlbnMiaW4gYS50b2tlbnNbMF0mJmEudG9rZW5zWzBdLnRva2Vucz8oYS50b2tlbnNbMF0ucmF3PXUucmF3K2EudG9rZW5zWzBdLnJhdyxhLnRva2Vuc1swXS50ZXh0PXUucmF3K2EudG9rZW5zWzBdLnRleHQsYS50b2tlbnNbMF0udG9rZW5zLnVuc2hpZnQodSkpOmEudG9rZW5zLnVuc2hpZnQoe3R5cGU6InBhcmFncmFwaCIscmF3OnUucmF3LHRleHQ6dS5yYXcsdG9rZW5zOlt1XX0pOmEudG9rZW5zLnVuc2hpZnQodSl9fWlmKCFzLmxvb3NlKXtsZXQgYz1hLnRva2Vucy5maWx0ZXIoZD0+ZC50eXBlPT09InNwYWNlIiksdT1jLmxlbmd0aD4wJiZjLnNvbWUoZD0+dGhpcy5ydWxlcy5vdGhlci5hbnlMaW5lLnRlc3QoZC5yYXcpKTtzLmxvb3NlPXV9fWlmKHMubG9vc2UpZm9yKGxldCBhIG9mIHMuaXRlbXMpe2EubG9vc2U9ITA7Zm9yKGxldCBjIG9mIGEudG9rZW5zKWMudHlwZT09PSJ0ZXh0IiYmKGMudHlwZT0icGFyYWdyYXBoIil9cmV0dXJuIHN9fWh0bWwobil7bGV0IGU9dGhpcy5ydWxlcy5ibG9jay5odG1sLmV4ZWMobik7aWYoZSlyZXR1cm57dHlwZToiaHRtbCIsYmxvY2s6ITAscmF3OmVbMF0scHJlOmVbMV09PT0icHJlInx8ZVsxXT09PSJzY3JpcHQifHxlWzFdPT09InN0eWxlIix0ZXh0OmVbMF19fWRlZihuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKG4pO2lmKGUpe2xldCB0PWVbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubXVsdGlwbGVTcGFjZUdsb2JhbCwiICIpLHI9ZVsyXT9lWzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ocmVmQnJhY2tldHMsIiQxIikucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbiwiJDEiKToiIixzPWVbM10/ZVszXS5zdWJzdHJpbmcoMSxlWzNdLmxlbmd0aC0xKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpOmVbM107cmV0dXJue3R5cGU6ImRlZiIsdGFnOnQscmF3OmVbMF0saHJlZjpyLHRpdGxlOnN9fX10YWJsZShuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLnRhYmxlLmV4ZWMobik7aWYoIWV8fCF0aGlzLnJ1bGVzLm90aGVyLnRhYmxlRGVsaW1pdGVyLnRlc3QoZVsyXSkpcmV0dXJuO2xldCB0PUZhKGVbMV0pLHI9ZVsyXS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFibGVBbGlnbkNoYXJzLCIiKS5zcGxpdCgifCIpLHM9ZVszXT8udHJpbSgpP2VbM10ucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLnRhYmxlUm93QmxhbmtMaW5lLCIiKS5zcGxpdChgCmApOltdLGk9e3R5cGU6InRhYmxlIixyYXc6ZVswXSxoZWFkZXI6W10sYWxpZ246W10scm93czpbXX07aWYodC5sZW5ndGg9PT1yLmxlbmd0aCl7Zm9yKGxldCBvIG9mIHIpdGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduUmlnaHQudGVzdChvKT9pLmFsaWduLnB1c2goInJpZ2h0Iik6dGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduQ2VudGVyLnRlc3Qobyk/aS5hbGlnbi5wdXNoKCJjZW50ZXIiKTp0aGlzLnJ1bGVzLm90aGVyLnRhYmxlQWxpZ25MZWZ0LnRlc3Qobyk/aS5hbGlnbi5wdXNoKCJsZWZ0Iik6aS5hbGlnbi5wdXNoKG51bGwpO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKWkuaGVhZGVyLnB1c2goe3RleHQ6dFtvXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodFtvXSksaGVhZGVyOiEwLGFsaWduOmkuYWxpZ25bb119KTtmb3IobGV0IG8gb2YgcylpLnJvd3MucHVzaChGYShvLGkuaGVhZGVyLmxlbmd0aCkubWFwKChsLGEpPT4oe3RleHQ6bCx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUobCksaGVhZGVyOiExLGFsaWduOmkuYWxpZ25bYV19KSkpO3JldHVybiBpfX1saGVhZGluZyhuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLmxoZWFkaW5nLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVsxXS50cmltKCk7cmV0dXJue3R5cGU6ImhlYWRpbmciLHJhdzplWzBdLGRlcHRoOmVbMl0uY2hhckF0KDApPT09Ij0iPzE6Mix0ZXh0OnQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHQpfX19cGFyYWdyYXBoKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2sucGFyYWdyYXBoLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVsxXS5jaGFyQXQoZVsxXS5sZW5ndGgtMSk9PT1gCmA/ZVsxXS5zbGljZSgwLC0xKTplWzFdO3JldHVybnt0eXBlOiJwYXJhZ3JhcGgiLHJhdzplWzBdLHRleHQ6dCx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodCl9fX10ZXh0KG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKG4pO2lmKGUpcmV0dXJue3R5cGU6InRleHQiLHJhdzplWzBdLHRleHQ6ZVswXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZVswXSl9fWVzY2FwZShuKXtsZXQgZT10aGlzLnJ1bGVzLmlubGluZS5lc2NhcGUuZXhlYyhuKTtpZihlKXJldHVybnt0eXBlOiJlc2NhcGUiLHJhdzplWzBdLHRleHQ6ZVsxXX19dGFnKG4pe2xldCBlPXRoaXMucnVsZXMuaW5saW5lLnRhZy5leGVjKG4pO2lmKGUpcmV0dXJuIXRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0QVRhZy50ZXN0KGVbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLmVuZEFUYWcudGVzdChlWzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0UHJlU2NyaXB0VGFnLnRlc3QoZVswXSk/dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmdGhpcy5ydWxlcy5vdGhlci5lbmRQcmVTY3JpcHRUYWcudGVzdChlWzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMSkse3R5cGU6Imh0bWwiLHJhdzplWzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2NrOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayxibG9jazohMSx0ZXh0OmVbMF19fWxpbmsobil7bGV0IGU9dGhpcy5ydWxlcy5pbmxpbmUubGluay5leGVjKG4pO2lmKGUpe2xldCB0PWVbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJnRoaXMucnVsZXMub3RoZXIuc3RhcnRBbmdsZUJyYWNrZXQudGVzdCh0KSl7aWYoIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QodCkpcmV0dXJuO2xldCBpPXduKHQuc2xpY2UoMCwtMSksIlxcIik7aWYoKHQubGVuZ3RoLWkubGVuZ3RoKSUyPT09MClyZXR1cm59ZWxzZXtsZXQgaT1HYihlWzJdLCIoKSIpO2lmKGk9PT0tMilyZXR1cm47aWYoaT4tMSl7bGV0IG89KGVbMF0uaW5kZXhPZigiISIpPT09MD81OjQpK2VbMV0ubGVuZ3RoK2k7ZVsyXT1lWzJdLnN1YnN0cmluZygwLGkpLGVbMF09ZVswXS5zdWJzdHJpbmcoMCxvKS50cmltKCksZVszXT0iIn19bGV0IHI9ZVsyXSxzPSIiO2lmKHRoaXMub3B0aW9ucy5wZWRhbnRpYyl7bGV0IGk9dGhpcy5ydWxlcy5vdGhlci5wZWRhbnRpY0hyZWZUaXRsZS5leGVjKHIpO2kmJihyPWlbMV0scz1pWzNdKX1lbHNlIHM9ZVszXT9lWzNdLnNsaWNlKDEsLTEpOiIiO3JldHVybiByPXIudHJpbSgpLHRoaXMucnVsZXMub3RoZXIuc3RhcnRBbmdsZUJyYWNrZXQudGVzdChyKSYmKHRoaXMub3B0aW9ucy5wZWRhbnRpYyYmIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QodCk/cj1yLnNsaWNlKDEpOnI9ci5zbGljZSgxLC0xKSksVmEoZSx7aHJlZjpyJiZyLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24sIiQxIiksdGl0bGU6cyYmcy5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpfSxlWzBdLHRoaXMubGV4ZXIsdGhpcy5ydWxlcyl9fXJlZmxpbmsobixlKXtsZXQgdDtpZigodD10aGlzLnJ1bGVzLmlubGluZS5yZWZsaW5rLmV4ZWMobikpfHwodD10aGlzLnJ1bGVzLmlubGluZS5ub2xpbmsuZXhlYyhuKSkpe2xldCByPSh0WzJdfHx0WzFdKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubXVsdGlwbGVTcGFjZUdsb2JhbCwiICIpLHM9ZVtyLnRvTG93ZXJDYXNlKCldO2lmKCFzKXtsZXQgaT10WzBdLmNoYXJBdCgwKTtyZXR1cm57dHlwZToidGV4dCIscmF3OmksdGV4dDppfX1yZXR1cm4gVmEodCxzLHRbMF0sdGhpcy5sZXhlcix0aGlzLnJ1bGVzKX19ZW1TdHJvbmcobixlLHQ9IiIpe2xldCByPXRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nTERlbGltLmV4ZWMobik7aWYoISghcnx8IXJbMV0mJiFyWzJdJiYhclszXSYmIXJbNF18fHJbNF0mJnQubWF0Y2godGhpcy5ydWxlcy5vdGhlci51bmljb2RlQWxwaGFOdW1lcmljKSkmJighKHJbMV18fHJbM10pfHwhdHx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyh0KSkpe2xldCBzPVsuLi5yWzBdXS5sZW5ndGgtMSxpLG8sbD1zLGE9MCxjPXJbMF1bMF09PT0iKiI/dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmdSRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmdSRGVsaW1VbmQ7Zm9yKGMubGFzdEluZGV4PTAsZT1lLnNsaWNlKC0xKm4ubGVuZ3RoK3MpOyhyPWMuZXhlYyhlKSkhPT1udWxsOyl7aWYoaT1yWzFdfHxyWzJdfHxyWzNdfHxyWzRdfHxyWzVdfHxyWzZdLCFpKWNvbnRpbnVlO2lmKG89Wy4uLmldLmxlbmd0aCxyWzNdfHxyWzRdKXtsKz1vO2NvbnRpbnVlfWVsc2UgaWYoKHJbNV18fHJbNl0pJiZzJTMmJiEoKHMrbyklMykpe2ErPW87Y29udGludWV9aWYobC09byxsPjApY29udGludWU7bz1NYXRoLm1pbihvLG8rbCthKTtsZXQgdT1bLi4uclswXV1bMF0ubGVuZ3RoLGQ9bi5zbGljZSgwLHMrci5pbmRleCt1K28pO2lmKE1hdGgubWluKHMsbyklMil7bGV0IGY9ZC5zbGljZSgxLC0xKTtyZXR1cm57dHlwZToiZW0iLHJhdzpkLHRleHQ6Zix0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoZil9fWxldCBoPWQuc2xpY2UoMiwtMik7cmV0dXJue3R5cGU6InN0cm9uZyIscmF3OmQsdGV4dDpoLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhoKX19fX1jb2Rlc3BhbihuKXtsZXQgZT10aGlzLnJ1bGVzLmlubGluZS5jb2RlLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVsyXS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubmV3TGluZUNoYXJHbG9iYWwsIiAiKSxyPXRoaXMucnVsZXMub3RoZXIubm9uU3BhY2VDaGFyLnRlc3QodCkscz10aGlzLnJ1bGVzLm90aGVyLnN0YXJ0aW5nU3BhY2VDaGFyLnRlc3QodCkmJnRoaXMucnVsZXMub3RoZXIuZW5kaW5nU3BhY2VDaGFyLnRlc3QodCk7cmV0dXJuIHImJnMmJih0PXQuc3Vic3RyaW5nKDEsdC5sZW5ndGgtMSkpLHt0eXBlOiJjb2Rlc3BhbiIscmF3OmVbMF0sdGV4dDp0fX19YnIobil7bGV0IGU9dGhpcy5ydWxlcy5pbmxpbmUuYnIuZXhlYyhuKTtpZihlKXJldHVybnt0eXBlOiJiciIscmF3OmVbMF19fWRlbChuLGUsdD0iIil7bGV0IHI9dGhpcy5ydWxlcy5pbmxpbmUuZGVsTERlbGltLmV4ZWMobik7aWYociYmKCFyWzFdfHwhdHx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyh0KSkpe2xldCBzPVsuLi5yWzBdXS5sZW5ndGgtMSxpLG8sbD1zLGE9dGhpcy5ydWxlcy5pbmxpbmUuZGVsUkRlbGltO2ZvcihhLmxhc3RJbmRleD0wLGU9ZS5zbGljZSgtMSpuLmxlbmd0aCtzKTsocj1hLmV4ZWMoZSkpIT09bnVsbDspe2lmKGk9clsxXXx8clsyXXx8clszXXx8cls0XXx8cls1XXx8cls2XSwhaXx8KG89Wy4uLmldLmxlbmd0aCxvIT09cykpY29udGludWU7aWYoclszXXx8cls0XSl7bCs9bztjb250aW51ZX1pZihsLT1vLGw+MCljb250aW51ZTtvPU1hdGgubWluKG8sbytsKTtsZXQgYz1bLi4uclswXV1bMF0ubGVuZ3RoLHU9bi5zbGljZSgwLHMrci5pbmRleCtjK28pLGQ9dS5zbGljZShzLC1zKTtyZXR1cm57dHlwZToiZGVsIixyYXc6dSx0ZXh0OmQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGQpfX19fWF1dG9saW5rKG4pe2xldCBlPXRoaXMucnVsZXMuaW5saW5lLmF1dG9saW5rLmV4ZWMobik7aWYoZSl7bGV0IHQscjtyZXR1cm4gZVsyXT09PSJAIj8odD1lWzFdLHI9Im1haWx0bzoiK3QpOih0PWVbMV0scj10KSx7dHlwZToibGluayIscmF3OmVbMF0sdGV4dDp0LGhyZWY6cix0b2tlbnM6W3t0eXBlOiJ0ZXh0IixyYXc6dCx0ZXh0OnR9XX19fXVybChuKXtsZXQgZTtpZihlPXRoaXMucnVsZXMuaW5saW5lLnVybC5leGVjKG4pKXtsZXQgdCxyO2lmKGVbMl09PT0iQCIpdD1lWzBdLHI9Im1haWx0bzoiK3Q7ZWxzZXtsZXQgcztkbyBzPWVbMF0sZVswXT10aGlzLnJ1bGVzLmlubGluZS5fYmFja3BlZGFsLmV4ZWMoZVswXSk/LlswXT8/IiI7d2hpbGUocyE9PWVbMF0pO3Q9ZVswXSxlWzFdPT09Ind3dy4iP3I9Imh0dHA6Ly8iK2VbMF06cj1lWzBdfXJldHVybnt0eXBlOiJsaW5rIixyYXc6ZVswXSx0ZXh0OnQsaHJlZjpyLHRva2Vuczpbe3R5cGU6InRleHQiLHJhdzp0LHRleHQ6dH1dfX19aW5saW5lVGV4dChuKXtsZXQgZT10aGlzLnJ1bGVzLmlubGluZS50ZXh0LmV4ZWMobik7aWYoZSl7bGV0IHQ9dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrO3JldHVybnt0eXBlOiJ0ZXh0IixyYXc6ZVswXSx0ZXh0OmVbMF0sZXNjYXBlZDp0fX19fSxfZT1jbGFzcyBYaXt0b2tlbnM7b3B0aW9ucztzdGF0ZTtpbmxpbmVRdWV1ZTt0b2tlbml6ZXI7Y29uc3RydWN0b3IoZSl7dGhpcy50b2tlbnM9W10sdGhpcy50b2tlbnMubGlua3M9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnM9ZXx8UXQsdGhpcy5vcHRpb25zLnRva2VuaXplcj10aGlzLm9wdGlvbnMudG9rZW5pemVyfHxuZXcgWXIsdGhpcy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcix0aGlzLnRva2VuaXplci5vcHRpb25zPXRoaXMub3B0aW9ucyx0aGlzLnRva2VuaXplci5sZXhlcj10aGlzLHRoaXMuaW5saW5lUXVldWU9W10sdGhpcy5zdGF0ZT17aW5MaW5rOiExLGluUmF3QmxvY2s6ITEsdG9wOiEwfTtsZXQgdD17b3RoZXI6eGUsYmxvY2s6U3Iubm9ybWFsLGlubGluZTp4bi5ub3JtYWx9O3RoaXMub3B0aW9ucy5wZWRhbnRpYz8odC5ibG9jaz1Tci5wZWRhbnRpYyx0LmlubGluZT14bi5wZWRhbnRpYyk6dGhpcy5vcHRpb25zLmdmbSYmKHQuYmxvY2s9U3IuZ2ZtLHRoaXMub3B0aW9ucy5icmVha3M/dC5pbmxpbmU9eG4uYnJlYWtzOnQuaW5saW5lPXhuLmdmbSksdGhpcy50b2tlbml6ZXIucnVsZXM9dH1zdGF0aWMgZ2V0IHJ1bGVzKCl7cmV0dXJue2Jsb2NrOlNyLGlubGluZTp4bn19c3RhdGljIGxleChlLHQpe3JldHVybiBuZXcgWGkodCkubGV4KGUpfXN0YXRpYyBsZXhJbmxpbmUoZSx0KXtyZXR1cm4gbmV3IFhpKHQpLmlubGluZVRva2VucyhlKX1sZXgoZSl7ZT1lLnJlcGxhY2UoeGUuY2FycmlhZ2VSZXR1cm4sYApgKSx0aGlzLmJsb2NrVG9rZW5zKGUsdGhpcy50b2tlbnMpO2ZvcihsZXQgdD0wO3Q8dGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGg7dCsrKXtsZXQgcj10aGlzLmlubGluZVF1ZXVlW3RdO3RoaXMuaW5saW5lVG9rZW5zKHIuc3JjLHIudG9rZW5zKX1yZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnRva2Vuc31ibG9ja1Rva2VucyhlLHQ9W10scj0hMSl7Zm9yKHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5vcHRpb25zLnBlZGFudGljJiYoZT1lLnJlcGxhY2UoeGUudGFiQ2hhckdsb2JhbCwiICAgICIpLnJlcGxhY2UoeGUuc3BhY2VMaW5lLCIiKSk7ZTspe2xldCBzO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5ibG9jaz8uc29tZShvPT4ocz1vLmNhbGwoe2xleGVyOnRoaXN9LGUsdCkpPyhlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpLCEwKTohMSkpY29udGludWU7aWYocz10aGlzLnRva2VuaXplci5zcGFjZShlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpO2xldCBvPXQuYXQoLTEpO3MucmF3Lmxlbmd0aD09PTEmJm8hPT12b2lkIDA/by5yYXcrPWAKYDp0LnB1c2gocyk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci5jb2RlKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7bGV0IG89dC5hdCgtMSk7bz8udHlwZT09PSJwYXJhZ3JhcGgifHxvPy50eXBlPT09InRleHQiPyhvLnJhdys9KG8ucmF3LmVuZHNXaXRoKGAKYCk/IiI6YApgKStzLnJhdyxvLnRleHQrPWAKYCtzLnRleHQsdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW8udGV4dCk6dC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuZmVuY2VzKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuaGVhZGluZyhlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLHQucHVzaChzKTtjb250aW51ZX1pZihzPXRoaXMudG9rZW5pemVyLmhyKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuYmxvY2txdW90ZShlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLHQucHVzaChzKTtjb250aW51ZX1pZihzPXRoaXMudG9rZW5pemVyLmxpc3QoZSkpe2U9ZS5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSx0LnB1c2gocyk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci5odG1sKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuZGVmKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7bGV0IG89dC5hdCgtMSk7bz8udHlwZT09PSJwYXJhZ3JhcGgifHxvPy50eXBlPT09InRleHQiPyhvLnJhdys9KG8ucmF3LmVuZHNXaXRoKGAKYCk/IiI6YApgKStzLnJhdyxvLnRleHQrPWAKYCtzLnJhdyx0aGlzLmlubGluZVF1ZXVlLmF0KC0xKS5zcmM9by50ZXh0KTp0aGlzLnRva2Vucy5saW5rc1tzLnRhZ118fCh0aGlzLnRva2Vucy5saW5rc1tzLnRhZ109e2hyZWY6cy5ocmVmLHRpdGxlOnMudGl0bGV9LHQucHVzaChzKSk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci50YWJsZShlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLHQucHVzaChzKTtjb250aW51ZX1pZihzPXRoaXMudG9rZW5pemVyLmxoZWFkaW5nKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWxldCBpPWU7aWYodGhpcy5vcHRpb25zLmV4dGVuc2lvbnM/LnN0YXJ0QmxvY2spe2xldCBvPTEvMCxsPWUuc2xpY2UoMSksYTt0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrLmZvckVhY2goYz0+e2E9Yy5jYWxsKHtsZXhlcjp0aGlzfSxsKSx0eXBlb2YgYT09Im51bWJlciImJmE+PTAmJihvPU1hdGgubWluKG8sYSkpfSksbzwxLzAmJm8+PTAmJihpPWUuc3Vic3RyaW5nKDAsbysxKSl9aWYodGhpcy5zdGF0ZS50b3AmJihzPXRoaXMudG9rZW5pemVyLnBhcmFncmFwaChpKSkpe2xldCBvPXQuYXQoLTEpO3ImJm8/LnR5cGU9PT0icGFyYWdyYXBoIj8oby5yYXcrPShvLnJhdy5lbmRzV2l0aChgCmApPyIiOmAKYCkrcy5yYXcsby50ZXh0Kz1gCmArcy50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW8udGV4dCk6dC5wdXNoKHMpLHI9aS5sZW5ndGghPT1lLmxlbmd0aCxlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci50ZXh0KGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7bGV0IG89dC5hdCgtMSk7bz8udHlwZT09PSJ0ZXh0Ij8oby5yYXcrPShvLnJhdy5lbmRzV2l0aChgCmApPyIiOmAKYCkrcy5yYXcsby50ZXh0Kz1gCmArcy50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW8udGV4dCk6dC5wdXNoKHMpO2NvbnRpbnVlfWlmKGUpe2xldCBvPSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpYnJlYWs7dGhyb3cgbmV3IEVycm9yKG8pfX1yZXR1cm4gdGhpcy5zdGF0ZS50b3A9ITAsdH1pbmxpbmUoZSx0PVtdKXtyZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZS5wdXNoKHtzcmM6ZSx0b2tlbnM6dH0pLHR9aW5saW5lVG9rZW5zKGUsdD1bXSl7dGhpcy50b2tlbml6ZXIubGV4ZXI9dGhpcztsZXQgcj1lLHM9bnVsbDtpZih0aGlzLnRva2Vucy5saW5rcyl7bGV0IGE9T2JqZWN0LmtleXModGhpcy50b2tlbnMubGlua3MpO2lmKGEubGVuZ3RoPjApZm9yKDsocz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5leGVjKHIpKSE9PW51bGw7KWEuaW5jbHVkZXMoc1swXS5zbGljZShzWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYocj1yLnNsaWNlKDAscy5pbmRleCkrIlsiKyJhIi5yZXBlYXQoc1swXS5sZW5ndGgtMikrIl0iK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDsocz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24uZXhlYyhyKSkhPT1udWxsOylyPXIuc2xpY2UoMCxzLmluZGV4KSsiKysiK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmxhc3RJbmRleCk7bGV0IGk7Zm9yKDsocz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmV4ZWMocikpIT09bnVsbDspaT1zWzJdP3NbMl0ubGVuZ3RoOjAscj1yLnNsaWNlKDAscy5pbmRleCtpKSsiWyIrImEiLnJlcGVhdChzWzBdLmxlbmd0aC1pLTIpKyJdIityLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAubGFzdEluZGV4KTtyPXRoaXMub3B0aW9ucy5ob29rcz8uZW1TdHJvbmdNYXNrPy5jYWxsKHtsZXhlcjp0aGlzfSxyKT8/cjtsZXQgbz0hMSxsPSIiO2Zvcig7ZTspe298fChsPSIiKSxvPSExO2xldCBhO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5pbmxpbmU/LnNvbWUodT0+KGE9dS5jYWxsKHtsZXhlcjp0aGlzfSxlLHQpKT8oZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKSwhMCk6ITEpKWNvbnRpbnVlO2lmKGE9dGhpcy50b2tlbml6ZXIuZXNjYXBlKGUpKXtlPWUuc3Vic3RyaW5nKGEucmF3Lmxlbmd0aCksdC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIudGFnKGUpKXtlPWUuc3Vic3RyaW5nKGEucmF3Lmxlbmd0aCksdC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIubGluayhlKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKTtjb250aW51ZX1pZihhPXRoaXMudG9rZW5pemVyLnJlZmxpbmsoZSx0aGlzLnRva2Vucy5saW5rcykpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKTtsZXQgdT10LmF0KC0xKTthLnR5cGU9PT0idGV4dCImJnU/LnR5cGU9PT0idGV4dCI/KHUucmF3Kz1hLnJhdyx1LnRleHQrPWEudGV4dCk6dC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIuZW1TdHJvbmcoZSxyLGwpKXtlPWUuc3Vic3RyaW5nKGEucmF3Lmxlbmd0aCksdC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIuY29kZXNwYW4oZSkpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKSx0LnB1c2goYSk7Y29udGludWV9aWYoYT10aGlzLnRva2VuaXplci5icihlKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKTtjb250aW51ZX1pZihhPXRoaXMudG9rZW5pemVyLmRlbChlLHIsbCkpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKSx0LnB1c2goYSk7Y29udGludWV9aWYoYT10aGlzLnRva2VuaXplci5hdXRvbGluayhlKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKTtjb250aW51ZX1pZighdGhpcy5zdGF0ZS5pbkxpbmsmJihhPXRoaXMudG9rZW5pemVyLnVybChlKSkpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKSx0LnB1c2goYSk7Y29udGludWV9bGV0IGM9ZTtpZih0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucz8uc3RhcnRJbmxpbmUpe2xldCB1PTEvMCxkPWUuc2xpY2UoMSksaDt0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZS5mb3JFYWNoKGY9PntoPWYuY2FsbCh7bGV4ZXI6dGhpc30sZCksdHlwZW9mIGg9PSJudW1iZXIiJiZoPj0wJiYodT1NYXRoLm1pbih1LGgpKX0pLHU8MS8wJiZ1Pj0wJiYoYz1lLnN1YnN0cmluZygwLHUrMSkpfWlmKGE9dGhpcy50b2tlbml6ZXIuaW5saW5lVGV4dChjKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLGEucmF3LnNsaWNlKC0xKSE9PSJfIiYmKGw9YS5yYXcuc2xpY2UoLTEpKSxvPSEwO2xldCB1PXQuYXQoLTEpO3U/LnR5cGU9PT0idGV4dCI/KHUucmF3Kz1hLnJhdyx1LnRleHQrPWEudGV4dCk6dC5wdXNoKGEpO2NvbnRpbnVlfWlmKGUpe2xldCB1PSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpYnJlYWs7dGhyb3cgbmV3IEVycm9yKHUpfX1yZXR1cm4gdH19LFpyPWNsYXNze29wdGlvbnM7cGFyc2VyO2NvbnN0cnVjdG9yKG4pe3RoaXMub3B0aW9ucz1ufHxRdH1zcGFjZShuKXtyZXR1cm4iIn1jb2RlKHt0ZXh0Om4sbGFuZzplLGVzY2FwZWQ6dH0pe2xldCByPShlfHwiIikubWF0Y2goeGUubm90U3BhY2VTdGFydCk/LlswXSxzPW4ucmVwbGFjZSh4ZS5lbmRpbmdOZXdsaW5lLCIiKStgCmA7cmV0dXJuIHI/JzxwcmU+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLScrVWUocikrJyI+JysodD9zOlVlKHMsITApKStgPC9jb2RlPjwvcHJlPgpgOiI8cHJlPjxjb2RlPiIrKHQ/czpVZShzLCEwKSkrYDwvY29kZT48L3ByZT4KYH1ibG9ja3F1b3RlKHt0b2tlbnM6bn0pe3JldHVybmA8YmxvY2txdW90ZT4KJHt0aGlzLnBhcnNlci5wYXJzZShuKX08L2Jsb2NrcXVvdGU+CmB9aHRtbCh7dGV4dDpufSl7cmV0dXJuIG59ZGVmKG4pe3JldHVybiIifWhlYWRpbmcoe3Rva2VuczpuLGRlcHRoOmV9KXtyZXR1cm5gPGgke2V9PiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUobil9PC9oJHtlfT4KYH1ocihuKXtyZXR1cm5gPGhyPgpgfWxpc3Qobil7bGV0IGU9bi5vcmRlcmVkLHQ9bi5zdGFydCxyPSIiO2ZvcihsZXQgbz0wO288bi5pdGVtcy5sZW5ndGg7bysrKXtsZXQgbD1uLml0ZW1zW29dO3IrPXRoaXMubGlzdGl0ZW0obCl9bGV0IHM9ZT8ib2wiOiJ1bCIsaT1lJiZ0IT09MT8nIHN0YXJ0PSInK3QrJyInOiIiO3JldHVybiI8IitzK2krYD4KYCtyKyI8LyIrcytgPgpgfWxpc3RpdGVtKG4pe3JldHVybmA8bGk+JHt0aGlzLnBhcnNlci5wYXJzZShuLnRva2Vucyl9PC9saT4KYH1jaGVja2JveCh7Y2hlY2tlZDpufSl7cmV0dXJuIjxpbnB1dCAiKyhuPydjaGVja2VkPSIiICc6IiIpKydkaXNhYmxlZD0iIiB0eXBlPSJjaGVja2JveCI+ICd9cGFyYWdyYXBoKHt0b2tlbnM6bn0pe3JldHVybmA8cD4ke3RoaXMucGFyc2VyLnBhcnNlSW5saW5lKG4pfTwvcD4KYH10YWJsZShuKXtsZXQgZT0iIix0PSIiO2ZvcihsZXQgcz0wO3M8bi5oZWFkZXIubGVuZ3RoO3MrKyl0Kz10aGlzLnRhYmxlY2VsbChuLmhlYWRlcltzXSk7ZSs9dGhpcy50YWJsZXJvdyh7dGV4dDp0fSk7bGV0IHI9IiI7Zm9yKGxldCBzPTA7czxuLnJvd3MubGVuZ3RoO3MrKyl7bGV0IGk9bi5yb3dzW3NdO3Q9IiI7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspdCs9dGhpcy50YWJsZWNlbGwoaVtvXSk7cis9dGhpcy50YWJsZXJvdyh7dGV4dDp0fSl9cmV0dXJuIHImJihyPWA8dGJvZHk+JHtyfTwvdGJvZHk+YCksYDx0YWJsZT4KPHRoZWFkPgpgK2UrYDwvdGhlYWQ+CmArcitgPC90YWJsZT4KYH10YWJsZXJvdyh7dGV4dDpufSl7cmV0dXJuYDx0cj4KJHtufTwvdHI+CmB9dGFibGVjZWxsKG4pe2xldCBlPXRoaXMucGFyc2VyLnBhcnNlSW5saW5lKG4udG9rZW5zKSx0PW4uaGVhZGVyPyJ0aCI6InRkIjtyZXR1cm4obi5hbGlnbj9gPCR7dH0gYWxpZ249IiR7bi5hbGlnbn0iPmA6YDwke3R9PmApK2UrYDwvJHt0fT4KYH1zdHJvbmcoe3Rva2VuczpufSl7cmV0dXJuYDxzdHJvbmc+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShuKX08L3N0cm9uZz5gfWVtKHt0b2tlbnM6bn0pe3JldHVybmA8ZW0+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShuKX08L2VtPmB9Y29kZXNwYW4oe3RleHQ6bn0pe3JldHVybmA8Y29kZT4ke1VlKG4sITApfTwvY29kZT5gfWJyKG4pe3JldHVybiI8YnI+In1kZWwoe3Rva2VuczpufSl7cmV0dXJuYDxkZWw+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShuKX08L2RlbD5gfWxpbmsoe2hyZWY6bix0aXRsZTplLHRva2Vuczp0fSl7bGV0IHI9dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUodCkscz1IYShuKTtpZihzPT09bnVsbClyZXR1cm4gcjtuPXM7bGV0IGk9JzxhIGhyZWY9IicrbisnIic7cmV0dXJuIGUmJihpKz0nIHRpdGxlPSInK1VlKGUpKyciJyksaSs9Ij4iK3IrIjwvYT4iLGl9aW1hZ2Uoe2hyZWY6bix0aXRsZTplLHRleHQ6dCx0b2tlbnM6cn0pe3ImJih0PXRoaXMucGFyc2VyLnBhcnNlSW5saW5lKHIsdGhpcy5wYXJzZXIudGV4dFJlbmRlcmVyKSk7bGV0IHM9SGEobik7aWYocz09PW51bGwpcmV0dXJuIFVlKHQpO249cztsZXQgaT1gPGltZyBzcmM9IiR7bn0iIGFsdD0iJHtVZSh0KX0iYDtyZXR1cm4gZSYmKGkrPWAgdGl0bGU9IiR7VWUoZSl9ImApLGkrPSI+IixpfXRleHQobil7cmV0dXJuInRva2VucyJpbiBuJiZuLnRva2Vucz90aGlzLnBhcnNlci5wYXJzZUlubGluZShuLnRva2Vucyk6ImVzY2FwZWQiaW4gbiYmbi5lc2NhcGVkP24udGV4dDpVZShuLnRleHQpfX0sZWw9Y2xhc3N7c3Ryb25nKHt0ZXh0Om59KXtyZXR1cm4gbn1lbSh7dGV4dDpufSl7cmV0dXJuIG59Y29kZXNwYW4oe3RleHQ6bn0pe3JldHVybiBufWRlbCh7dGV4dDpufSl7cmV0dXJuIG59aHRtbCh7dGV4dDpufSl7cmV0dXJuIG59dGV4dCh7dGV4dDpufSl7cmV0dXJuIG59bGluayh7dGV4dDpufSl7cmV0dXJuIiIrbn1pbWFnZSh7dGV4dDpufSl7cmV0dXJuIiIrbn1icigpe3JldHVybiIifWNoZWNrYm94KHtyYXc6bn0pe3JldHVybiBufX0sSGU9Y2xhc3MgWWl7b3B0aW9ucztyZW5kZXJlcjt0ZXh0UmVuZGVyZXI7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWV8fFF0LHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBacix0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMucmVuZGVyZXIucGFyc2VyPXRoaXMsdGhpcy50ZXh0UmVuZGVyZXI9bmV3IGVsfXN0YXRpYyBwYXJzZShlLHQpe3JldHVybiBuZXcgWWkodCkucGFyc2UoZSl9c3RhdGljIHBhcnNlSW5saW5lKGUsdCl7cmV0dXJuIG5ldyBZaSh0KS5wYXJzZUlubGluZShlKX1wYXJzZShlKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCB0PSIiO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgcz1lW3JdO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltzLnR5cGVdKXtsZXQgbz1zLGw9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW28udHlwZV0uY2FsbCh7cGFyc2VyOnRoaXN9LG8pO2lmKGwhPT0hMXx8IVsic3BhY2UiLCJociIsImhlYWRpbmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJkZWYiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoby50eXBlKSl7dCs9bHx8IiI7Y29udGludWV9fWxldCBpPXM7c3dpdGNoKGkudHlwZSl7Y2FzZSJzcGFjZSI6e3QrPXRoaXMucmVuZGVyZXIuc3BhY2UoaSk7YnJlYWt9Y2FzZSJociI6e3QrPXRoaXMucmVuZGVyZXIuaHIoaSk7YnJlYWt9Y2FzZSJoZWFkaW5nIjp7dCs9dGhpcy5yZW5kZXJlci5oZWFkaW5nKGkpO2JyZWFrfWNhc2UiY29kZSI6e3QrPXRoaXMucmVuZGVyZXIuY29kZShpKTticmVha31jYXNlInRhYmxlIjp7dCs9dGhpcy5yZW5kZXJlci50YWJsZShpKTticmVha31jYXNlImJsb2NrcXVvdGUiOnt0Kz10aGlzLnJlbmRlcmVyLmJsb2NrcXVvdGUoaSk7YnJlYWt9Y2FzZSJsaXN0Ijp7dCs9dGhpcy5yZW5kZXJlci5saXN0KGkpO2JyZWFrfWNhc2UiY2hlY2tib3giOnt0Kz10aGlzLnJlbmRlcmVyLmNoZWNrYm94KGkpO2JyZWFrfWNhc2UiaHRtbCI6e3QrPXRoaXMucmVuZGVyZXIuaHRtbChpKTticmVha31jYXNlImRlZiI6e3QrPXRoaXMucmVuZGVyZXIuZGVmKGkpO2JyZWFrfWNhc2UicGFyYWdyYXBoIjp7dCs9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgoaSk7YnJlYWt9Y2FzZSJ0ZXh0Ijp7dCs9dGhpcy5yZW5kZXJlci50ZXh0KGkpO2JyZWFrfWRlZmF1bHQ6e2xldCBvPSdUb2tlbiB3aXRoICInK2kudHlwZSsnIiB0eXBlIHdhcyBub3QgZm91bmQuJztpZih0aGlzLm9wdGlvbnMuc2lsZW50KXJldHVybiIiO3Rocm93IG5ldyBFcnJvcihvKX19fXJldHVybiB0fXBhcnNlSW5saW5lKGUsdD10aGlzLnJlbmRlcmVyKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCByPSIiO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKXtsZXQgaT1lW3NdO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltpLnR5cGVdKXtsZXQgbD10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbaS50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30saSk7aWYobCE9PSExfHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKGkudHlwZSkpe3IrPWx8fCIiO2NvbnRpbnVlfX1sZXQgbz1pO3N3aXRjaChvLnR5cGUpe2Nhc2UiZXNjYXBlIjp7cis9dC50ZXh0KG8pO2JyZWFrfWNhc2UiaHRtbCI6e3IrPXQuaHRtbChvKTticmVha31jYXNlImxpbmsiOntyKz10Lmxpbmsobyk7YnJlYWt9Y2FzZSJpbWFnZSI6e3IrPXQuaW1hZ2Uobyk7YnJlYWt9Y2FzZSJjaGVja2JveCI6e3IrPXQuY2hlY2tib3gobyk7YnJlYWt9Y2FzZSJzdHJvbmciOntyKz10LnN0cm9uZyhvKTticmVha31jYXNlImVtIjp7cis9dC5lbShvKTticmVha31jYXNlImNvZGVzcGFuIjp7cis9dC5jb2Rlc3BhbihvKTticmVha31jYXNlImJyIjp7cis9dC5icihvKTticmVha31jYXNlImRlbCI6e3IrPXQuZGVsKG8pO2JyZWFrfWNhc2UidGV4dCI6e3IrPXQudGV4dChvKTticmVha31kZWZhdWx0OntsZXQgbD0nVG9rZW4gd2l0aCAiJytvLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4iIjt0aHJvdyBuZXcgRXJyb3IobCl9fX1yZXR1cm4gcn19LE9uPWNsYXNze29wdGlvbnM7YmxvY2s7Y29uc3RydWN0b3Iobil7dGhpcy5vcHRpb25zPW58fFF0fXN0YXRpYyBwYXNzVGhyb3VnaEhvb2tzPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIiwiZW1TdHJvbmdNYXNrIl0pO3N0YXRpYyBwYXNzVGhyb3VnaEhvb2tzUmVzcGVjdEFzeW5jPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIl0pO3ByZXByb2Nlc3Mobil7cmV0dXJuIG59cG9zdHByb2Nlc3Mobil7cmV0dXJuIG59cHJvY2Vzc0FsbFRva2VucyhuKXtyZXR1cm4gbn1lbVN0cm9uZ01hc2sobil7cmV0dXJuIG59cHJvdmlkZUxleGVyKG49dGhpcy5ibG9jayl7cmV0dXJuIG4/X2UubGV4Ol9lLmxleElubGluZX1wcm92aWRlUGFyc2VyKG49dGhpcy5ibG9jayl7cmV0dXJuIG4/SGUucGFyc2U6SGUucGFyc2VJbmxpbmV9fSxZYj1jbGFzc3tkZWZhdWx0cz1XbygpO29wdGlvbnM9dGhpcy5zZXRPcHRpb25zO3BhcnNlPXRoaXMucGFyc2VNYXJrZG93bighMCk7cGFyc2VJbmxpbmU9dGhpcy5wYXJzZU1hcmtkb3duKCExKTtQYXJzZXI9SGU7UmVuZGVyZXI9WnI7VGV4dFJlbmRlcmVyPWVsO0xleGVyPV9lO1Rva2VuaXplcj1ZcjtIb29rcz1Pbjtjb25zdHJ1Y3RvciguLi5uKXt0aGlzLnVzZSguLi5uKX13YWxrVG9rZW5zKG4sZSl7bGV0IHQ9W107Zm9yKGxldCByIG9mIG4pc3dpdGNoKHQ9dC5jb25jYXQoZS5jYWxsKHRoaXMscikpLHIudHlwZSl7Y2FzZSJ0YWJsZSI6e2xldCBzPXI7Zm9yKGxldCBpIG9mIHMuaGVhZGVyKXQ9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKGkudG9rZW5zLGUpKTtmb3IobGV0IGkgb2Ygcy5yb3dzKWZvcihsZXQgbyBvZiBpKXQ9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKG8udG9rZW5zLGUpKTticmVha31jYXNlImxpc3QiOntsZXQgcz1yO3Q9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKHMuaXRlbXMsZSkpO2JyZWFrfWRlZmF1bHQ6e2xldCBzPXI7dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zPy5jaGlsZFRva2Vucz8uW3MudHlwZV0/dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW3MudHlwZV0uZm9yRWFjaChpPT57bGV0IG89c1tpXS5mbGF0KDEvMCk7dD10LmNvbmNhdCh0aGlzLndhbGtUb2tlbnMobyxlKSl9KTpzLnRva2VucyYmKHQ9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKHMudG9rZW5zLGUpKSl9fXJldHVybiB0fXVzZSguLi5uKXtsZXQgZT10aGlzLmRlZmF1bHRzLmV4dGVuc2lvbnN8fHtyZW5kZXJlcnM6e30sY2hpbGRUb2tlbnM6e319O3JldHVybiBuLmZvckVhY2godD0+e2xldCByPXsuLi50fTtpZihyLmFzeW5jPXRoaXMuZGVmYXVsdHMuYXN5bmN8fHIuYXN5bmN8fCExLHQuZXh0ZW5zaW9ucyYmKHQuZXh0ZW5zaW9ucy5mb3JFYWNoKHM9PntpZighcy5uYW1lKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIG5hbWUgcmVxdWlyZWQiKTtpZigicmVuZGVyZXIiaW4gcyl7bGV0IGk9ZS5yZW5kZXJlcnNbcy5uYW1lXTtpP2UucmVuZGVyZXJzW3MubmFtZV09ZnVuY3Rpb24oLi4ubyl7bGV0IGw9cy5yZW5kZXJlci5hcHBseSh0aGlzLG8pO3JldHVybiBsPT09ITEmJihsPWkuYXBwbHkodGhpcyxvKSksbH06ZS5yZW5kZXJlcnNbcy5uYW1lXT1zLnJlbmRlcmVyfWlmKCJ0b2tlbml6ZXIiaW4gcyl7aWYoIXMubGV2ZWx8fHMubGV2ZWwhPT0iYmxvY2siJiZzLmxldmVsIT09ImlubGluZSIpdGhyb3cgbmV3IEVycm9yKCJleHRlbnNpb24gbGV2ZWwgbXVzdCBiZSAnYmxvY2snIG9yICdpbmxpbmUnIik7bGV0IGk9ZVtzLmxldmVsXTtpP2kudW5zaGlmdChzLnRva2VuaXplcik6ZVtzLmxldmVsXT1bcy50b2tlbml6ZXJdLHMuc3RhcnQmJihzLmxldmVsPT09ImJsb2NrIj9lLnN0YXJ0QmxvY2s/ZS5zdGFydEJsb2NrLnB1c2gocy5zdGFydCk6ZS5zdGFydEJsb2NrPVtzLnN0YXJ0XTpzLmxldmVsPT09ImlubGluZSImJihlLnN0YXJ0SW5saW5lP2Uuc3RhcnRJbmxpbmUucHVzaChzLnN0YXJ0KTplLnN0YXJ0SW5saW5lPVtzLnN0YXJ0XSkpfSJjaGlsZFRva2VucyJpbiBzJiZzLmNoaWxkVG9rZW5zJiYoZS5jaGlsZFRva2Vuc1tzLm5hbWVdPXMuY2hpbGRUb2tlbnMpfSksci5leHRlbnNpb25zPWUpLHQucmVuZGVyZXIpe2xldCBzPXRoaXMuZGVmYXVsdHMucmVuZGVyZXJ8fG5ldyBacih0aGlzLmRlZmF1bHRzKTtmb3IobGV0IGkgaW4gdC5yZW5kZXJlcil7aWYoIShpIGluIHMpKXRocm93IG5ldyBFcnJvcihgcmVuZGVyZXIgJyR7aX0nIGRvZXMgbm90IGV4aXN0YCk7aWYoWyJvcHRpb25zIiwicGFyc2VyIl0uaW5jbHVkZXMoaSkpY29udGludWU7bGV0IG89aSxsPXQucmVuZGVyZXJbb10sYT1zW29dO3Nbb109KC4uLmMpPT57bGV0IHU9bC5hcHBseShzLGMpO3JldHVybiB1PT09ITEmJih1PWEuYXBwbHkocyxjKSksdXx8IiJ9fXIucmVuZGVyZXI9c31pZih0LnRva2VuaXplcil7bGV0IHM9dGhpcy5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBZcih0aGlzLmRlZmF1bHRzKTtmb3IobGV0IGkgaW4gdC50b2tlbml6ZXIpe2lmKCEoaSBpbiBzKSl0aHJvdyBuZXcgRXJyb3IoYHRva2VuaXplciAnJHtpfScgZG9lcyBub3QgZXhpc3RgKTtpZihbIm9wdGlvbnMiLCJydWxlcyIsImxleGVyIl0uaW5jbHVkZXMoaSkpY29udGludWU7bGV0IG89aSxsPXQudG9rZW5pemVyW29dLGE9c1tvXTtzW29dPSguLi5jKT0+e2xldCB1PWwuYXBwbHkocyxjKTtyZXR1cm4gdT09PSExJiYodT1hLmFwcGx5KHMsYykpLHV9fXIudG9rZW5pemVyPXN9aWYodC5ob29rcyl7bGV0IHM9dGhpcy5kZWZhdWx0cy5ob29rc3x8bmV3IE9uO2ZvcihsZXQgaSBpbiB0Lmhvb2tzKXtpZighKGkgaW4gcykpdGhyb3cgbmV3IEVycm9yKGBob29rICcke2l9JyBkb2VzIG5vdCBleGlzdGApO2lmKFsib3B0aW9ucyIsImJsb2NrIl0uaW5jbHVkZXMoaSkpY29udGludWU7bGV0IG89aSxsPXQuaG9va3Nbb10sYT1zW29dO09uLnBhc3NUaHJvdWdoSG9va3MuaGFzKGkpP3Nbb109Yz0+e2lmKHRoaXMuZGVmYXVsdHMuYXN5bmMmJk9uLnBhc3NUaHJvdWdoSG9va3NSZXNwZWN0QXN5bmMuaGFzKGkpKXJldHVybihhc3luYygpPT57bGV0IGQ9YXdhaXQgbC5jYWxsKHMsYyk7cmV0dXJuIGEuY2FsbChzLGQpfSkoKTtsZXQgdT1sLmNhbGwocyxjKTtyZXR1cm4gYS5jYWxsKHMsdSl9OnNbb109KC4uLmMpPT57aWYodGhpcy5kZWZhdWx0cy5hc3luYylyZXR1cm4oYXN5bmMoKT0+e2xldCBkPWF3YWl0IGwuYXBwbHkocyxjKTtyZXR1cm4gZD09PSExJiYoZD1hd2FpdCBhLmFwcGx5KHMsYykpLGR9KSgpO2xldCB1PWwuYXBwbHkocyxjKTtyZXR1cm4gdT09PSExJiYodT1hLmFwcGx5KHMsYykpLHV9fXIuaG9va3M9c31pZih0LndhbGtUb2tlbnMpe2xldCBzPXRoaXMuZGVmYXVsdHMud2Fsa1Rva2VucyxpPXQud2Fsa1Rva2VucztyLndhbGtUb2tlbnM9ZnVuY3Rpb24obyl7bGV0IGw9W107cmV0dXJuIGwucHVzaChpLmNhbGwodGhpcyxvKSkscyYmKGw9bC5jb25jYXQocy5jYWxsKHRoaXMsbykpKSxsfX10aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLnJ9fSksdGhpc31zZXRPcHRpb25zKG4pe3JldHVybiB0aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLm59LHRoaXN9bGV4ZXIobixlKXtyZXR1cm4gX2UubGV4KG4sZT8/dGhpcy5kZWZhdWx0cyl9cGFyc2VyKG4sZSl7cmV0dXJuIEhlLnBhcnNlKG4sZT8/dGhpcy5kZWZhdWx0cyl9cGFyc2VNYXJrZG93bihuKXtyZXR1cm4oZSx0KT0+e2xldCByPXsuLi50fSxzPXsuLi50aGlzLmRlZmF1bHRzLC4uLnJ9LGk9dGhpcy5vbkVycm9yKCEhcy5zaWxlbnQsISFzLmFzeW5jKTtpZih0aGlzLmRlZmF1bHRzLmFzeW5jPT09ITAmJnIuYXN5bmM9PT0hMSlyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBUaGUgYXN5bmMgb3B0aW9uIHdhcyBzZXQgdG8gdHJ1ZSBieSBhbiBleHRlbnNpb24uIFJlbW92ZSBhc3luYzogZmFsc2UgZnJvbSB0aGUgcGFyc2Ugb3B0aW9ucyBvYmplY3QgdG8gcmV0dXJuIGEgUHJvbWlzZS4iKSk7aWYodHlwZW9mIGU+InUifHxlPT09bnVsbClyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7aWYodHlwZW9mIGUhPSJzdHJpbmciKXJldHVybiBpKG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKyIsIHN0cmluZyBleHBlY3RlZCIpKTtpZihzLmhvb2tzJiYocy5ob29rcy5vcHRpb25zPXMscy5ob29rcy5ibG9jaz1uKSxzLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IG89cy5ob29rcz9hd2FpdCBzLmhvb2tzLnByZXByb2Nlc3MoZSk6ZSxsPWF3YWl0KHMuaG9va3M/YXdhaXQgcy5ob29rcy5wcm92aWRlTGV4ZXIobik6bj9fZS5sZXg6X2UubGV4SW5saW5lKShvLHMpLGE9cy5ob29rcz9hd2FpdCBzLmhvb2tzLnByb2Nlc3NBbGxUb2tlbnMobCk6bDtzLndhbGtUb2tlbnMmJmF3YWl0IFByb21pc2UuYWxsKHRoaXMud2Fsa1Rva2VucyhhLHMud2Fsa1Rva2VucykpO2xldCBjPWF3YWl0KHMuaG9va3M/YXdhaXQgcy5ob29rcy5wcm92aWRlUGFyc2VyKG4pOm4/SGUucGFyc2U6SGUucGFyc2VJbmxpbmUpKGEscyk7cmV0dXJuIHMuaG9va3M/YXdhaXQgcy5ob29rcy5wb3N0cHJvY2VzcyhjKTpjfSkoKS5jYXRjaChpKTt0cnl7cy5ob29rcyYmKGU9cy5ob29rcy5wcmVwcm9jZXNzKGUpKTtsZXQgbz0ocy5ob29rcz9zLmhvb2tzLnByb3ZpZGVMZXhlcihuKTpuP19lLmxleDpfZS5sZXhJbmxpbmUpKGUscyk7cy5ob29rcyYmKG89cy5ob29rcy5wcm9jZXNzQWxsVG9rZW5zKG8pKSxzLndhbGtUb2tlbnMmJnRoaXMud2Fsa1Rva2VucyhvLHMud2Fsa1Rva2Vucyk7bGV0IGw9KHMuaG9va3M/cy5ob29rcy5wcm92aWRlUGFyc2VyKG4pOm4/SGUucGFyc2U6SGUucGFyc2VJbmxpbmUpKG8scyk7cmV0dXJuIHMuaG9va3MmJihsPXMuaG9va3MucG9zdHByb2Nlc3MobCkpLGx9Y2F0Y2gobyl7cmV0dXJuIGkobyl9fX1vbkVycm9yKG4sZSl7cmV0dXJuIHQ9PntpZih0Lm1lc3NhZ2UrPWAKUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuYCxuKXtsZXQgcj0iPHA+QW4gZXJyb3Igb2NjdXJyZWQ6PC9wPjxwcmU+IitVZSh0Lm1lc3NhZ2UrIiIsITApKyI8L3ByZT4iO3JldHVybiBlP1Byb21pc2UucmVzb2x2ZShyKTpyfWlmKGUpcmV0dXJuIFByb21pc2UucmVqZWN0KHQpO3Rocm93IHR9fX0sV3Q9bmV3IFliO2Z1bmN0aW9uIGoobixlKXtyZXR1cm4gV3QucGFyc2UobixlKX1qLm9wdGlvbnM9ai5zZXRPcHRpb25zPWZ1bmN0aW9uKG4pe3JldHVybiBXdC5zZXRPcHRpb25zKG4pLGouZGVmYXVsdHM9V3QuZGVmYXVsdHMsVmQoai5kZWZhdWx0cyksan07ai5nZXREZWZhdWx0cz1XbztqLmRlZmF1bHRzPVF0O2oudXNlPWZ1bmN0aW9uKC4uLm4pe3JldHVybiBXdC51c2UoLi4ubiksai5kZWZhdWx0cz1XdC5kZWZhdWx0cyxWZChqLmRlZmF1bHRzKSxqfTtqLndhbGtUb2tlbnM9ZnVuY3Rpb24obixlKXtyZXR1cm4gV3Qud2Fsa1Rva2VucyhuLGUpfTtqLnBhcnNlSW5saW5lPVd0LnBhcnNlSW5saW5lO2ouUGFyc2VyPUhlO2oucGFyc2VyPUhlLnBhcnNlO2ouUmVuZGVyZXI9WnI7ai5UZXh0UmVuZGVyZXI9ZWw7ai5MZXhlcj1fZTtqLmxleGVyPV9lLmxleDtqLlRva2VuaXplcj1ZcjtqLkhvb2tzPU9uO2oucGFyc2U9ajtqLm9wdGlvbnM7ai5zZXRPcHRpb25zO2oudXNlO2oud2Fsa1Rva2VucztqLnBhcnNlSW5saW5lO0hlLnBhcnNlO19lLmxleDtmdW5jdGlvbiBaYihuLGUpe2NvbnN0IHI9ZS5zcGxpdChgCmApLmZsYXRNYXAocz0+W3MsIiJdKS5tYXAocz0+YCR7bn0ke3N9YCkuam9pbihgCmApO3JldHVybiByLnNsaWNlKDAsci5sZW5ndGgtMSl9ZnVuY3Rpb24gZTAobixlKXtjb25zdCB0PVtdO3JldHVybiBBcnJheS5mcm9tKG4ua2V5cygpKS5mb3JFYWNoKHI9PnsoIWV8fCFlLm1hcmtzfHwhZS5tYXJrcy5tYXAocz0+cy50eXBlKS5pbmNsdWRlcyhyKSkmJnQucHVzaChyKX0pLHR9ZnVuY3Rpb24gdDAobixlKXtjb25zdCB0PVtdO3JldHVybiBBcnJheS5mcm9tKGUuZW50cmllcygpKS5mb3JFYWNoKChbcixzXSk9PntuLmhhcyhyKXx8dC5wdXNoKHt0eXBlOnIsbWFyazpzfSl9KSx0fWZ1bmN0aW9uIG4wKG4sZSx0LHIpe2NvbnN0IHM9IXQsaT10JiZ0LnR5cGU9PT0idGV4dCImJighdC5tYXJrc3x8dC5tYXJrcy5sZW5ndGg9PT0wKSxvPXQmJnQudHlwZT09PSJ0ZXh0IiYmdC5tYXJrcyYmIXIoZSxuZXcgTWFwKHQubWFya3MubWFwKGE9PlthLnR5cGUsYV0pKSksbD1bXTtpZihzfHxpfHxvKWlmKHQmJnQudHlwZT09PSJ0ZXh0IiYmdC5tYXJrcyl7Y29uc3QgYT1uZXcgTWFwKHQubWFya3MubWFwKGM9PltjLnR5cGUsY10pKTtBcnJheS5mcm9tKG4ua2V5cygpKS5yZXZlcnNlKCkuZm9yRWFjaChjPT57YS5oYXMoYyl8fGwucHVzaChjKX0pfWVsc2Uoc3x8aSkmJmwucHVzaCguLi5BcnJheS5mcm9tKG4ua2V5cygpKS5yZXZlcnNlKCkpO3JldHVybiBsfWZ1bmN0aW9uIHIwKG4sZSl7bGV0IHQ9IiI7cmV0dXJuIEFycmF5LmZyb20obi5rZXlzKCkpLnJldmVyc2UoKS5mb3JFYWNoKHI9Pntjb25zdCBzPW4uZ2V0KHIpLGk9ZShyLHMpO2kmJih0PWkrdCl9KSxuLmNsZWFyKCksdH1mdW5jdGlvbiBzMChuLGUsdCl7bGV0IHI9IiI7cmV0dXJuIEFycmF5LmZyb20obi5lbnRyaWVzKCkpLmZvckVhY2goKFtzLGldKT0+e2NvbnN0IG89dChzLGkpO28mJihyKz1vKSxlLnNldChzLGkpfSkscn1mdW5jdGlvbiBiaShuKXtjb25zdCB0PShuLnJhd3x8bi50ZXh0fHwiIikubWF0Y2goL14oXHMqKVstKypdXHMrXFsoWyB4WF0pXF1ccysvKTtyZXR1cm4gdD97aXNUYXNrOiEwLGNoZWNrZWQ6dFsyXS50b0xvd2VyQ2FzZSgpPT09IngiLGluZGVudExldmVsOnRbMV0ubGVuZ3RofTp7aXNUYXNrOiExLGluZGVudExldmVsOjB9fWZ1bmN0aW9uIENyKG4sZSl7cmV0dXJuIHR5cGVvZiBuIT0ic3RyaW5nIj8ianNvbiI6ZX12YXIgaTA9Y2xhc3N7Y29uc3RydWN0b3Iobil7dGhpcy5hY3RpdmVQYXJzZUxleGVyPW51bGwsdGhpcy5iYXNlRXh0ZW5zaW9ucz1bXSx0aGlzLmV4dGVuc2lvbnM9W10sdGhpcy5jb2RlVHlwZXM9bmV3IFNldCx0aGlzLmxhc3RQYXJzZVJlc3VsdD1udWxsO3ZhciBlLHQscixzLGk7dGhpcy5tYXJrZWRJbnN0YW5jZT0oZT1uPy5tYXJrZWQpIT1udWxsP2U6aix0aGlzLmluZGVudFN0eWxlPShyPSh0PW4/LmluZGVudGF0aW9uKT09bnVsbD92b2lkIDA6dC5zdHlsZSkhPW51bGw/cjoic3BhY2UiLHRoaXMuaW5kZW50U2l6ZT0oaT0ocz1uPy5pbmRlbnRhdGlvbik9PW51bGw/dm9pZCAwOnMuc2l6ZSkhPW51bGw/aToyLHRoaXMuYmFzZUV4dGVuc2lvbnM9bj8uZXh0ZW5zaW9uc3x8W10sbj8ubWFya2VkT3B0aW9ucyYmdHlwZW9mIHRoaXMubWFya2VkSW5zdGFuY2Uuc2V0T3B0aW9ucz09ImZ1bmN0aW9uIiYmdGhpcy5tYXJrZWRJbnN0YW5jZS5zZXRPcHRpb25zKG4ubWFya2VkT3B0aW9ucyksdGhpcy5yZWdpc3RyeT1uZXcgTWFwLHRoaXMubm9kZVR5cGVSZWdpc3RyeT1uZXcgTWFwLG4/LmV4dGVuc2lvbnMmJih0aGlzLmJhc2VFeHRlbnNpb25zPW4uZXh0ZW5zaW9ucyxGcyhuLmV4dGVuc2lvbnMpLmZvckVhY2gobD0+dGhpcy5yZWdpc3RlckV4dGVuc2lvbihsKSkpfWdldCBpbnN0YW5jZSgpe3JldHVybiB0aGlzLm1hcmtlZEluc3RhbmNlfWdldCBpbmRlbnRDaGFyYWN0ZXIoKXtyZXR1cm4gdGhpcy5pbmRlbnRTdHlsZT09PSJzcGFjZSI/IiAiOiIJIn1nZXQgaW5kZW50U3RyaW5nKCl7cmV0dXJuIHRoaXMuaW5kZW50Q2hhcmFjdGVyLnJlcGVhdCh0aGlzLmluZGVudFNpemUpfWhhc01hcmtlZCgpe3JldHVybiEhdGhpcy5tYXJrZWRJbnN0YW5jZX1yZWdpc3RlckV4dGVuc2lvbihuKXt2YXIgZSx0O3RoaXMuZXh0ZW5zaW9ucy5wdXNoKG4pO2NvbnN0IHI9VShBKG4sImNvZGUiKSkscz1uLm5hbWU7ciYmdGhpcy5jb2RlVHlwZXMuYWRkKHMpO2NvbnN0IGk9QShuLCJtYXJrZG93blRva2VuTmFtZSIpfHxzLG89QShuLCJwYXJzZU1hcmtkb3duIiksbD1BKG4sInJlbmRlck1hcmtkb3duIiksYT1BKG4sIm1hcmtkb3duVG9rZW5pemVyIiksYz0oZT1BKG4sIm1hcmtkb3duT3B0aW9ucyIpKSE9bnVsbD9lOm51bGwsdT0odD1jPy5pbmRlbnRzQ29udGVudCkhPW51bGw/dDohMSxkPWM/Lmh0bWxSZW9wZW4saD17dG9rZW5OYW1lOmksbm9kZU5hbWU6cyxwYXJzZU1hcmtkb3duOm8scmVuZGVyTWFya2Rvd246bCxpc0luZGVudGluZzp1LGh0bWxSZW9wZW46ZCx0b2tlbml6ZXI6YX07aWYoaSYmbyl7Y29uc3QgZj10aGlzLnJlZ2lzdHJ5LmdldChpKXx8W107Zi5wdXNoKGgpLHRoaXMucmVnaXN0cnkuc2V0KGksZil9aWYobCl7Y29uc3QgZj10aGlzLm5vZGVUeXBlUmVnaXN0cnkuZ2V0KHMpfHxbXTtmLnB1c2goaCksdGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LnNldChzLGYpfWEmJnRoaXMuaGFzTWFya2VkKCkmJnRoaXMucmVnaXN0ZXJUb2tlbml6ZXIoYSl9Y3JlYXRlTGV4ZXIoKXtyZXR1cm4gbmV3IHRoaXMubWFya2VkSW5zdGFuY2UuTGV4ZXJ9Y3JlYXRlVG9rZW5pemVySGVscGVycyhuKXtyZXR1cm57aW5saW5lVG9rZW5zOmU9Pm4uaW5saW5lVG9rZW5zKGUpLGJsb2NrVG9rZW5zOmU9Pm4uYmxvY2tUb2tlbnMoZSl9fXRva2VuaXplSW5saW5lKG4pe3ZhciBlO3JldHVybigoZT10aGlzLmFjdGl2ZVBhcnNlTGV4ZXIpIT1udWxsP2U6dGhpcy5jcmVhdGVMZXhlcigpKS5pbmxpbmVUb2tlbnMobil9cmVnaXN0ZXJUb2tlbml6ZXIobil7aWYoIXRoaXMuaGFzTWFya2VkKCkpcmV0dXJuO2NvbnN0e25hbWU6ZSxzdGFydDp0LGxldmVsOnI9ImlubGluZSIsdG9rZW5pemU6c309bixpPXRoaXMuY3JlYXRlVG9rZW5pemVySGVscGVycy5iaW5kKHRoaXMpLG89dGhpcy5jcmVhdGVMZXhlci5iaW5kKHRoaXMpO2xldCBsO3Q/bD10eXBlb2YgdD09ImZ1bmN0aW9uIj90OmM9PmMuaW5kZXhPZih0KTpsPWM9Pntjb25zdCB1PXMoYyxbXSx0aGlzLmNyZWF0ZVRva2VuaXplckhlbHBlcnModGhpcy5jcmVhdGVMZXhlcigpKSk7cmV0dXJuIHUmJnUucmF3P2MuaW5kZXhPZih1LnJhdyk6LTF9O2NvbnN0IGE9e25hbWU6ZSxsZXZlbDpyLHN0YXJ0OmwsdG9rZW5pemVyKGMsdSl7Y29uc3QgZD10aGlzLmxleGVyP2kodGhpcy5sZXhlcik6aShvKCkpLGg9cyhjLHUsZCk7aWYoaCYmaC50eXBlKXJldHVybnsuLi5oLHR5cGU6aC50eXBlfHxlLHJhdzpoLnJhd3x8IiIsdG9rZW5zOmgudG9rZW5zfHxbXX19LGNoaWxkVG9rZW5zOltdfTt0aGlzLm1hcmtlZEluc3RhbmNlLnVzZSh7ZXh0ZW5zaW9uczpbYV19KX1nZXRIYW5kbGVyc0ZvclRva2VuKG4pe3RyeXtyZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQobil8fFtdfWNhdGNoe3JldHVybltdfX1nZXRIYW5kbGVyRm9yVG9rZW4obil7Y29uc3QgZT10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4obik7aWYoZS5sZW5ndGg+MClyZXR1cm4gZVswXTtjb25zdCB0PXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShuKTtyZXR1cm4gdC5sZW5ndGg+MD90WzBdOnZvaWQgMH1nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKG4pe3RyeXtyZXR1cm4gdGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LmdldChuKXx8W119Y2F0Y2h7cmV0dXJuW119fXNlcmlhbGl6ZShuKXtpZighbilyZXR1cm4iIjtjb25zdCBlPXRoaXMucmVuZGVyTm9kZXMobixuKTtyZXR1cm4gdGhpcy5pc0VtcHR5T3V0cHV0KGUpPyIiOmV9aXNFbXB0eU91dHB1dChuKXtyZXR1cm4hbnx8bi50cmltKCk9PT0iIj8hMDpuLnJlcGxhY2UoLyZuYnNwOy9nLCIiKS5yZXBsYWNlKC9cdTAwQTAvZywiIikudHJpbSgpPT09IiJ9cGFyc2Uobil7aWYoIXRoaXMuaGFzTWFya2VkKCkpdGhyb3cgbmV3IEVycm9yKCJObyBtYXJrZWQgaW5zdGFuY2UgYXZhaWxhYmxlIGZvciBwYXJzaW5nIik7Y29uc3QgZT10aGlzLmFjdGl2ZVBhcnNlTGV4ZXIsdD10aGlzLmNyZWF0ZUxleGVyKCk7dGhpcy5hY3RpdmVQYXJzZUxleGVyPXQ7dHJ5e2NvbnN0IHI9dC5sZXgobik7cmV0dXJue3R5cGU6ImRvYyIsY29udGVudDp0aGlzLnBhcnNlVG9rZW5zKHIsITApfX1maW5hbGx5e3RoaXMuYWN0aXZlUGFyc2VMZXhlcj1lfX1wYXJzZVRva2VucyhuLGU9ITEpe2NvbnN0IHQ9bi5yZWR1Y2UoKGksbyxsKT0+KG8udHlwZSE9PSJzcGFjZSImJmkucHVzaChsKSxpKSxbXSk7bGV0IHI9LTEscz0wO3JldHVybiBuLmZsYXRNYXAoKGksbyk9Pntmb3IodmFyIGw7czx0Lmxlbmd0aCYmdFtzXTxvOylyPXRbc10scys9MTtpZihlJiZpLnR5cGU9PT0ic3BhY2UiKXtjb25zdCBjPShsPXRbc10pIT1udWxsP2w6LTE7cmV0dXJuIHRoaXMuY3JlYXRlSW1wbGljaXRFbXB0eVBhcmFncmFwaHNGcm9tU3BhY2UoaSxyLGMpfWNvbnN0IGE9dGhpcy5wYXJzZVRva2VuKGksZSk7cmV0dXJuIGE9PT1udWxsP1tdOkFycmF5LmlzQXJyYXkoYSk/YTpbYV19KX1jcmVhdGVJbXBsaWNpdEVtcHR5UGFyYWdyYXBoc0Zyb21TcGFjZShuLGUsdCl7Y29uc3Qgcj10aGlzLmNvdW50UGFyYWdyYXBoU2VwYXJhdG9ycyhuLnJhd3x8IiIpO2lmKHI9PT0wKXJldHVybltdO2NvbnN0IGk9TWF0aC5tYXgoci0oZT09PS0xfHx0PT09LTE/MDoxKSwwKTtyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOml9LCgpPT4oe3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbXX0pKX1jb3VudFBhcmFncmFwaFNlcGFyYXRvcnMobil7cmV0dXJuKG4ucmVwbGFjZSgvXHJcbi9nLGAKYCkubWF0Y2goL1xuXG4vZyl8fFtdKS5sZW5ndGh9cGFyc2VUb2tlbihuLGU9ITEpe2lmKCFuLnR5cGUpcmV0dXJuIG51bGw7aWYobi50eXBlPT09Imxpc3QiKXJldHVybiB0aGlzLnBhcnNlTGlzdFRva2VuKG4pO2NvbnN0IHQ9dGhpcy5nZXRIYW5kbGVyc0ZvclRva2VuKG4udHlwZSkscj10aGlzLmNyZWF0ZVBhcnNlSGVscGVycygpO2lmKHQuZmluZChpPT57aWYoIWkucGFyc2VNYXJrZG93bilyZXR1cm4hMTtjb25zdCBvPWkucGFyc2VNYXJrZG93bihuLHIpLGw9dGhpcy5ub3JtYWxpemVQYXJzZVJlc3VsdChvKTtyZXR1cm4gbCYmKCFBcnJheS5pc0FycmF5KGwpfHxsLmxlbmd0aD4wKT8odGhpcy5sYXN0UGFyc2VSZXN1bHQ9bCwhMCk6ITF9KSYmdGhpcy5sYXN0UGFyc2VSZXN1bHQpe2NvbnN0IGk9dGhpcy5sYXN0UGFyc2VSZXN1bHQ7cmV0dXJuIHRoaXMubGFzdFBhcnNlUmVzdWx0PW51bGwsaX1yZXR1cm4gdGhpcy5wYXJzZUZhbGxiYWNrVG9rZW4obixlKX1wYXJzZUxpc3RUb2tlbihuKXtpZighbi5pdGVtc3x8bi5pdGVtcy5sZW5ndGg9PT0wKXJldHVybiB0aGlzLnBhcnNlVG9rZW5XaXRoSGFuZGxlcnMobik7Y29uc3QgZT1uLml0ZW1zLnNvbWUobD0+YmkobCkuaXNUYXNrKSx0PW4uaXRlbXMuc29tZShsPT4hYmkobCkuaXNUYXNrKTtpZighZXx8IXR8fHRoaXMuZ2V0SGFuZGxlcnNGb3JUb2tlbigidGFza0xpc3QiKS5sZW5ndGg9PT0wKXJldHVybiB0aGlzLnBhcnNlVG9rZW5XaXRoSGFuZGxlcnMobik7Y29uc3Qgcj1bXTtsZXQgcz1bXSxpPW51bGw7Zm9yKGxldCBsPTA7bDxuLml0ZW1zLmxlbmd0aDtsKz0xKXtjb25zdCBhPW4uaXRlbXNbbF0se2lzVGFzazpjLGNoZWNrZWQ6dSxpbmRlbnRMZXZlbDpkfT1iaShhKTtsZXQgaD1hO2lmKGMpe2NvbnN0IG09KGEucmF3fHxhLnRleHR8fCIiKS5zcGxpdChgCmApLGc9bVswXS5tYXRjaCgvXlxzKlstKypdXHMrXFsoWyB4WF0pXF1ccysoLiopJC8pLHk9Zz9nWzJdOiIiO2xldCBrPVtdO2lmKG0ubGVuZ3RoPjEmJm0uc2xpY2UoMSkuam9pbihgCmApLnRyaW0oKSl7Y29uc3Qgdz1tLnNsaWNlKDEpLHg9dy5maWx0ZXIodj0+di50cmltKCkpO2lmKHgubGVuZ3RoPjApe2NvbnN0IHY9TWF0aC5taW4oLi4ueC5tYXAoUj0+Ui5sZW5ndGgtUi50cmltU3RhcnQoKS5sZW5ndGgpKSxNPXcubWFwKFI9PlIudHJpbSgpP1Iuc2xpY2Uodik6IiIpLmpvaW4oYApgKS50cmltKCk7TSYmKGs9dGhpcy5tYXJrZWRJbnN0YW5jZS5sZXhlcihgJHtNfQpgKSl9fWg9e3R5cGU6InRhc2tJdGVtIixyYXc6IiIsbWFpbkNvbnRlbnQ6eSxpbmRlbnRMZXZlbDpkLGNoZWNrZWQ6dT8/ITEsdGV4dDp5LHRva2Vuczp0aGlzLnRva2VuaXplSW5saW5lKHkpLG5lc3RlZFRva2VuczprfX1jb25zdCBmPWM/InRhc2tMaXN0IjoibGlzdCI7aSE9PWY/KHMubGVuZ3RoPjAmJnIucHVzaCh7dHlwZTppLGl0ZW1zOnN9KSxzPVtoXSxpPWYpOnMucHVzaChoKX1zLmxlbmd0aD4wJiZyLnB1c2goe3R5cGU6aSxpdGVtczpzfSk7Y29uc3Qgbz1bXTtmb3IobGV0IGw9MDtsPHIubGVuZ3RoO2wrPTEpe2NvbnN0IGE9cltsXSxjPXsuLi5uLHR5cGU6YS50eXBlLGl0ZW1zOmEuaXRlbXN9LHU9dGhpcy5wYXJzZVRva2VuKGMpO3UmJihBcnJheS5pc0FycmF5KHUpP28ucHVzaCguLi51KTpvLnB1c2godSkpfXJldHVybiBvLmxlbmd0aD4wP286bnVsbH1wYXJzZVRva2VuV2l0aEhhbmRsZXJzKG4pe2lmKCFuLnR5cGUpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4obi50eXBlKSx0PXRoaXMuY3JlYXRlUGFyc2VIZWxwZXJzKCk7aWYoZS5maW5kKHM9PntpZighcy5wYXJzZU1hcmtkb3duKXJldHVybiExO2NvbnN0IGk9cy5wYXJzZU1hcmtkb3duKG4sdCksbz10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KGkpO3JldHVybiBvJiYoIUFycmF5LmlzQXJyYXkobyl8fG8ubGVuZ3RoPjApPyh0aGlzLmxhc3RQYXJzZVJlc3VsdD1vLCEwKTohMX0pJiZ0aGlzLmxhc3RQYXJzZVJlc3VsdCl7Y29uc3Qgcz10aGlzLmxhc3RQYXJzZVJlc3VsdDtyZXR1cm4gdGhpcy5sYXN0UGFyc2VSZXN1bHQ9bnVsbCxzfXJldHVybiB0aGlzLnBhcnNlRmFsbGJhY2tUb2tlbihuKX1jcmVhdGVQYXJzZUhlbHBlcnMoKXtyZXR1cm57cGFyc2VJbmxpbmU6bj0+dGhpcy5wYXJzZUlubGluZVRva2VucyhuKSxwYXJzZUNoaWxkcmVuOm49PnRoaXMucGFyc2VUb2tlbnMobikscGFyc2VCbG9ja0NoaWxkcmVuOm49PnRoaXMucGFyc2VUb2tlbnMobiwhMCksY3JlYXRlVGV4dE5vZGU6KG4sZSk9Pih7dHlwZToidGV4dCIsdGV4dDpuLG1hcmtzOmV8fHZvaWQgMH0pLGNyZWF0ZU5vZGU6KG4sZSx0KT0+e2NvbnN0IHI9e3R5cGU6bixhdHRyczplfHx2b2lkIDAsY29udGVudDp0fHx2b2lkIDB9O3JldHVybighZXx8T2JqZWN0LmtleXMoZSkubGVuZ3RoPT09MCkmJmRlbGV0ZSByLmF0dHJzLHJ9LGFwcGx5TWFyazoobixlLHQpPT4oe21hcms6bixjb250ZW50OmUsYXR0cnM6dCYmT2JqZWN0LmtleXModCkubGVuZ3RoPjA/dDp2b2lkIDB9KX19ZXNjYXBlUmVnZXgobil7cmV0dXJuIG4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1wYXJzZUlubGluZVRva2VucyhuKXt2YXIgZSx0LHIscztjb25zdCBpPVtdO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bys9MSl7Y29uc3QgbD1uW29dO2lmKGwudHlwZT09PSJ0ZXh0IilpLnB1c2goe3R5cGU6InRleHQiLHRleHQ6Q2EobC50ZXh0fHwiIil9KTtlbHNlIGlmKGwudHlwZT09PSJodG1sIil7Y29uc3QgYT0oKHQ9KGU9bC5yYXcpIT1udWxsP2U6bC50ZXh0KSE9bnVsbD90OiIiKS50b1N0cmluZygpLGM9L148XC9bXHNdKltcdy1dKy9pLnRlc3QoYSksdT1hLm1hdGNoKC9ePFtcc10qKFtcdy1dKykoXHN8PnxcL3wkKS9pKTtpZighYyYmdSYmIS9cLz4kLy50ZXN0KGEpKXtjb25zdCBoPXVbMV0sZj10aGlzLmVzY2FwZVJlZ2V4KGgpLHA9bmV3IFJlZ0V4cChgXjxcXC9cXHMqJHtmfVxcYmAsImkiKTtsZXQgbT0tMTtjb25zdCBnPVthXTtmb3IobGV0IHk9bysxO3k8bi5sZW5ndGg7eSs9MSl7Y29uc3Qgaz1uW3ldLGI9KChzPShyPWsucmF3KSE9bnVsbD9yOmsudGV4dCkhPW51bGw/czoiIikudG9TdHJpbmcoKTtpZihnLnB1c2goYiksay50eXBlPT09Imh0bWwiJiZwLnRlc3QoYikpe209eTticmVha319aWYobSE9PS0xKXtjb25zdCB5PWcuam9pbigiIiksaz17dHlwZToiaHRtbCIscmF3OnksdGV4dDp5LGJsb2NrOiExfSxiPXRoaXMucGFyc2VIVE1MVG9rZW4oayk7aWYoYil7Y29uc3Qgdz10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KGIpO0FycmF5LmlzQXJyYXkodyk/aS5wdXNoKC4uLncpOncmJmkucHVzaCh3KX1vPW07Y29udGludWV9fWNvbnN0IGQ9dGhpcy5wYXJzZUhUTUxUb2tlbihsKTtpZihkKXtjb25zdCBoPXRoaXMubm9ybWFsaXplUGFyc2VSZXN1bHQoZCk7QXJyYXkuaXNBcnJheShoKT9pLnB1c2goLi4uaCk6aCYmaS5wdXNoKGgpfX1lbHNlIGlmKGwudHlwZSl7Y29uc3QgYT10aGlzLmdldEhhbmRsZXJGb3JUb2tlbihsLnR5cGUpO2lmKGEmJmEucGFyc2VNYXJrZG93bil7Y29uc3QgYz10aGlzLmNyZWF0ZVBhcnNlSGVscGVycygpLHU9YS5wYXJzZU1hcmtkb3duKGwsYyk7aWYodGhpcy5pc01hcmtSZXN1bHQodSkpe2NvbnN0IGQ9dGhpcy5hcHBseU1hcmtUb0NvbnRlbnQodS5tYXJrLHUuY29udGVudCx1LmF0dHJzKTtpLnB1c2goLi4uZCl9ZWxzZXtjb25zdCBkPXRoaXMubm9ybWFsaXplUGFyc2VSZXN1bHQodSk7QXJyYXkuaXNBcnJheShkKT9pLnB1c2goLi4uZCk6ZCYmaS5wdXNoKGQpfX1lbHNlIGwudG9rZW5zJiZpLnB1c2goLi4udGhpcy5wYXJzZUlubGluZVRva2VucyhsLnRva2VucykpfX1yZXR1cm4gaX1hcHBseU1hcmtUb0NvbnRlbnQobixlLHQpe3JldHVybiBlLm1hcChyPT57aWYoci50eXBlPT09InRleHQiKXtjb25zdCBzPXIubWFya3N8fFtdLGk9dD97dHlwZTpuLGF0dHJzOnR9Ont0eXBlOm59O3JldHVybnsuLi5yLG1hcmtzOlsuLi5zLGldfX1yZXR1cm57Li4ucixjb250ZW50OnIuY29udGVudD90aGlzLmFwcGx5TWFya1RvQ29udGVudChuLHIuY29udGVudCx0KTp2b2lkIDB9fSl9aXNNYXJrUmVzdWx0KG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJtYXJrImluIG59bm9ybWFsaXplUGFyc2VSZXN1bHQobil7cmV0dXJuIG4/dGhpcy5pc01hcmtSZXN1bHQobik/bi5jb250ZW50Om46bnVsbH1wYXJzZUZhbGxiYWNrVG9rZW4obixlPSExKXtzd2l0Y2gobi50eXBlKXtjYXNlInBhcmFncmFwaCI6cmV0dXJue3R5cGU6InBhcmFncmFwaCIsY29udGVudDpuLnRva2Vucz90aGlzLnBhcnNlSW5saW5lVG9rZW5zKG4udG9rZW5zKTpbXX07Y2FzZSJoZWFkaW5nIjpyZXR1cm57dHlwZToiaGVhZGluZyIsYXR0cnM6e2xldmVsOm4uZGVwdGh8fDF9LGNvbnRlbnQ6bi50b2tlbnM/dGhpcy5wYXJzZUlubGluZVRva2VucyhuLnRva2Vucyk6W119O2Nhc2UidGV4dCI6cmV0dXJue3R5cGU6InRleHQiLHRleHQ6Q2Eobi50ZXh0fHwiIil9O2Nhc2UiaHRtbCI6cmV0dXJuIHRoaXMucGFyc2VIVE1MVG9rZW4obik7Y2FzZSJzcGFjZSI6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbi50b2tlbnM/dGhpcy5wYXJzZVRva2VucyhuLnRva2VucyxlKTpudWxsfX1wYXJzZUhUTUxUb2tlbihuKXtjb25zdCBlPW4udGV4dHx8bi5yYXd8fCIiO2lmKCFlLnRyaW0oKSlyZXR1cm4gbnVsbDtpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4gbi5ibG9jaz97dHlwZToicGFyYWdyYXBoIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDplfV19Ont0eXBlOiJ0ZXh0Iix0ZXh0OmV9O3RyeXtjb25zdCB0PVhnKGUsdGhpcy5iYXNlRXh0ZW5zaW9ucyk7cmV0dXJuIHQudHlwZT09PSJkb2MiJiZ0LmNvbnRlbnQ/bi5ibG9jaz90LmNvbnRlbnQ6dC5jb250ZW50Lmxlbmd0aD09PTEmJnQuY29udGVudFswXS50eXBlPT09InBhcmFncmFwaCImJnQuY29udGVudFswXS5jb250ZW50P3QuY29udGVudFswXS5jb250ZW50OnQuY29udGVudDp0fWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIEhUTUwgaW4gbWFya2Rvd246ICR7dH1gKX19ZW5jb2RlVGV4dEZvck1hcmtkb3duKG4sZSx0KXtyZXR1cm4gdD8udHlwZSE9bnVsbCYmdGhpcy5jb2RlVHlwZXMuaGFzKHQudHlwZSl8fChlLm1hcmtzfHxbXSkuc29tZShzPT50aGlzLmNvZGVUeXBlcy5oYXModHlwZW9mIHM9PSJzdHJpbmciP3M6cy50eXBlKSk/bjpHeShuKX1yZW5kZXJOb2RlVG9NYXJrZG93bihuLGUsdD0wLHI9MCxzPXt9KXt2YXIgaTtpZihuLnR5cGU9PT0idGV4dCIpcmV0dXJuIHRoaXMuZW5jb2RlVGV4dEZvck1hcmtkb3duKG4udGV4dHx8IiIsbixlKTtpZighbi50eXBlKXJldHVybiIiO2NvbnN0IG89dGhpcy5nZXRIYW5kbGVyRm9yVG9rZW4obi50eXBlKTtpZighbylyZXR1cm4iIjtjb25zdCBsPUFycmF5LmlzQXJyYXkoZT8uY29udGVudCkmJnQ+MD9lLmNvbnRlbnRbdC0xXTp2b2lkIDAsYT17cmVuZGVyQ2hpbGRyZW46KGQsaCk9Pntjb25zdCBmPW8uaXNJbmRlbnRpbmc/cisxOnI7cmV0dXJuIUFycmF5LmlzQXJyYXkoZCkmJmQuY29udGVudD90aGlzLnJlbmRlck5vZGVzKGQuY29udGVudCxuLGh8fCIiLHQsZik6dGhpcy5yZW5kZXJOb2RlcyhkLG4saHx8IiIsdCxmKX0scmVuZGVyQ2hpbGQ6KGQsaCk9Pntjb25zdCBmPW8uaXNJbmRlbnRpbmc/cisxOnI7cmV0dXJuIHRoaXMucmVuZGVyTm9kZVRvTWFya2Rvd24oZCxuLGgsZil9LGluZGVudDpkPT50aGlzLmluZGVudFN0cmluZytkLHdyYXBJbkJsb2NrOlpifSxjPXtpbmRleDp0LGxldmVsOnIscGFyZW50VHlwZTplPy50eXBlLHByZXZpb3VzTm9kZTpsLG1ldGE6e3BhcmVudEF0dHJzOmU/LmF0dHJzLC4uLnN9fTtyZXR1cm4oKGk9by5yZW5kZXJNYXJrZG93bik9PW51bGw/dm9pZCAwOmkuY2FsbChvLG4sYSxjKSl8fCIifXJlbmRlck5vZGVzKG4sZSx0PSIiLHI9MCxzPTApe3JldHVybiBBcnJheS5pc0FycmF5KG4pP3RoaXMucmVuZGVyTm9kZXNXaXRoTWFya0JvdW5kYXJpZXMobixlLHQscyk6bi50eXBlP3RoaXMucmVuZGVyTm9kZVRvTWFya2Rvd24obixlLHIscyk6IiJ9cmVuZGVyTm9kZXNXaXRoTWFya0JvdW5kYXJpZXMobixlLHQ9IiIscj0wKXtjb25zdCBzPVtdLGk9bmV3IE1hcCxvPW5ldyBTZXQsbD1uZXcgTWFwO3JldHVybiBuLmZvckVhY2goKGEsYyk9Pntjb25zdCB1PWM8bi5sZW5ndGgtMT9uW2MrMV06bnVsbDtpZihhLnR5cGUpaWYoYS50eXBlPT09InRleHQiKXtsZXQgZD10aGlzLmVuY29kZVRleHRGb3JNYXJrZG93bihhLnRleHR8fCIiLGEsZSk7Y29uc3QgaD1uZXcgTWFwKChhLm1hcmtzfHxbXSkubWFwKHg9Plt4LnR5cGUseF0pKSxmPXQwKGksaCkscD1lMChoLHUpLG09cC5maWx0ZXIoeD0+aS5oYXMoeCkpLGc9bS5sZW5ndGg+MCYmZi5sZW5ndGg+MDtsZXQgeT0iIjtpZihwLmxlbmd0aD4wJiYhZyl7Y29uc3QgeD1kLm1hdGNoKC8oXHMrKSQvKTt4JiYoeT14WzFdLGQ9ZC5zbGljZSgwLC15Lmxlbmd0aCkpfWd8fHAuZm9yRWFjaCh4PT57aWYoIWkuaGFzKHgpKXJldHVybjtjb25zdCB2PWguZ2V0KHgpLEM9dGhpcy5nZXRNYXJrQ2xvc2luZyh4LHYsbC5nZXQoeCkpO0MmJihkKz1DKSxpLmhhcyh4KSYmKGkuZGVsZXRlKHgpLGwuZGVsZXRlKHgpKX0pO2xldCBrPSIiO2lmKGYubGVuZ3RoPjApe2NvbnN0IHg9ZC5tYXRjaCgvXihccyspLyk7eCYmKGs9eFsxXSxkPWQuc2xpY2Uoay5sZW5ndGgpKX1mLmZvckVhY2goKHt0eXBlOngsbWFyazp2fSk9Pntjb25zdCBDPW8uaGFzKHgpPyJodG1sIjoibWFya2Rvd24iLE09dGhpcy5nZXRNYXJrT3BlbmluZyh4LHYsQyk7TSYmKGQ9TStkKSxsLnNldCh4LEMpLG8uZGVsZXRlKHgpfSksZ3x8Zi5zbGljZSgpLnJldmVyc2UoKS5mb3JFYWNoKCh7dHlwZTp4LG1hcms6dn0pPT57aS5zZXQoeCx2KX0pLGQ9aytkO2xldCBiO2lmKGcpe2NvbnN0IHg9bmV3IFNldCgodT8ubWFya3N8fFtdKS5tYXAodj0+di50eXBlKSk7Zi5mb3JFYWNoKCh7dHlwZTp2fSk9Pnt4Lmhhcyh2KSYmdGhpcy5nZXRIdG1sUmVvcGVuVGFncyh2KSYmby5hZGQodil9KSxiPVsuLi5mLm1hcCh2PT52LnR5cGUpLC4uLm1dfWVsc2UgYj1uMChpLGgsdSx0aGlzLm1hcmtTZXRzRXF1YWwuYmluZCh0aGlzKSk7bGV0IHc9IiI7aWYoYi5sZW5ndGg+MCl7Y29uc3QgeD1kLm1hdGNoKC8oXHMrKSQvKTt4JiYodz14WzFdLGQ9ZC5zbGljZSgwLC13Lmxlbmd0aCkpfWIuZm9yRWFjaCh4PT57dmFyIHY7Y29uc3QgQz0odj1pLmdldCh4KSkhPW51bGw/djpoLmdldCh4KSxNPXRoaXMuZ2V0TWFya0Nsb3NpbmcoeCxDLGwuZ2V0KHgpKTtNJiYoZCs9TSksaS5kZWxldGUoeCksbC5kZWxldGUoeCl9KSxkKz13LGQrPXkscy5wdXNoKGQpfWVsc2V7Y29uc3QgZD1uZXcgTWFwKGkpLGg9bmV3IE1hcChsKSxmPXIwKGksKGcseSk9PnRoaXMuZ2V0TWFya0Nsb3NpbmcoZyx5LGwuZ2V0KGcpKSk7bC5jbGVhcigpO2NvbnN0IHA9dGhpcy5yZW5kZXJOb2RlVG9NYXJrZG93bihhLGUsYyxyKSxtPWEudHlwZT09PSJoYXJkQnJlYWsiPyIiOnMwKGQsaSwoZyx5KT0+e3ZhciBrO2NvbnN0IGI9KGs9aC5nZXQoZykpIT1udWxsP2s6Im1hcmtkb3duIjtyZXR1cm4gbC5zZXQoZyxiKSx0aGlzLmdldE1hcmtPcGVuaW5nKGcseSxiKX0pO3MucHVzaChmK3ArbSl9fSkscy5qb2luKHQpfWdldE1hcmtPcGVuaW5nKG4sZSx0PSJtYXJrZG93biIpe3ZhciByO2lmKHQ9PT0iaHRtbCIpcmV0dXJuKChyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MobikpPT1udWxsP3ZvaWQgMDpyLm9wZW4pfHwiIjtjb25zdCBzPXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShuKSxpPXMubGVuZ3RoPjA/c1swXTp2b2lkIDA7aWYoIWl8fCFpLnJlbmRlck1hcmtkb3duKXJldHVybiIiO2NvbnN0IG89Iu6AgF9fVElQVEFQX01BUktET1dOX1BMQUNFSE9MREVSX1/ugIEiLGw9e3R5cGU6bixhdHRyczplLmF0dHJzfHx7fSxjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDpvfV19O3RyeXtjb25zdCBhPWkucmVuZGVyTWFya2Rvd24obCx7cmVuZGVyQ2hpbGRyZW46KCk9Pm8scmVuZGVyQ2hpbGQ6KCk9Pm8saW5kZW50OnU9PnUsd3JhcEluQmxvY2s6KHUsZCk9PnUrZH0se2luZGV4OjAsbGV2ZWw6MCxwYXJlbnRUeXBlOiJ0ZXh0IixtZXRhOnt9fSksYz1hLmluZGV4T2Yobyk7cmV0dXJuIGM+PTA/YS5zdWJzdHJpbmcoMCxjKToiIn1jYXRjaChhKXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBvcGVuaW5nIGZvciAke259OiAke2F9YCl9fWdldE1hcmtDbG9zaW5nKG4sZSx0PSJtYXJrZG93biIpe3ZhciByO2lmKHQ9PT0iaHRtbCIpcmV0dXJuKChyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MobikpPT1udWxsP3ZvaWQgMDpyLmNsb3NlKXx8IiI7Y29uc3Qgcz10aGlzLmdldEhhbmRsZXJzRm9yTm9kZVR5cGUobiksaT1zLmxlbmd0aD4wP3NbMF06dm9pZCAwO2lmKCFpfHwhaS5yZW5kZXJNYXJrZG93bilyZXR1cm4iIjtjb25zdCBvPSLugIBfX1RJUFRBUF9NQVJLRE9XTl9QTEFDRUhPTERFUl9f7oCBIixsPXt0eXBlOm4sYXR0cnM6ZS5hdHRyc3x8e30sY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6b31dfTt0cnl7Y29uc3QgYT1pLnJlbmRlck1hcmtkb3duKGwse3JlbmRlckNoaWxkcmVuOigpPT5vLHJlbmRlckNoaWxkOigpPT5vLGluZGVudDpkPT5kLHdyYXBJbkJsb2NrOihkLGgpPT5kK2h9LHtpbmRleDowLGxldmVsOjAscGFyZW50VHlwZToidGV4dCIsbWV0YTp7fX0pLGM9YS5pbmRleE9mKG8pLHU9YytvLmxlbmd0aDtyZXR1cm4gYz49MD9hLnN1YnN0cmluZyh1KToiIn1jYXRjaChhKXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBjbG9zaW5nIGZvciAke259OiAke2F9YCl9fWdldEh0bWxSZW9wZW5UYWdzKG4pe2NvbnN0IGU9dGhpcy5nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKG4pLHQ9ZS5sZW5ndGg+MD9lWzBdOnZvaWQgMDtyZXR1cm4gdD8uaHRtbFJlb3Blbn1tYXJrU2V0c0VxdWFsKG4sZSl7cmV0dXJuIG4uc2l6ZSE9PWUuc2l6ZT8hMTpBcnJheS5mcm9tKG4ua2V5cygpKS5ldmVyeSh0PT5lLmhhcyh0KSl9fSxVYT1pMCxvMD10ZS5jcmVhdGUoe25hbWU6Im1hcmtkb3duIixhZGRPcHRpb25zKCl7cmV0dXJue2luZGVudGF0aW9uOntzdHlsZToic3BhY2UiLHNpemU6Mn0sbWFya2VkOnZvaWQgMCxtYXJrZWRPcHRpb25zOnt9fX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0Q29udGVudDoobixlKT0+e2lmKCFlPy5jb250ZW50VHlwZXx8Q3IobixlPy5jb250ZW50VHlwZSkhPT0ibWFya2Rvd24ifHwhdGhpcy5lZGl0b3IubWFya2Rvd24pcmV0dXJuICRlLnNldENvbnRlbnQobixlKTtjb25zdCByPXRoaXMuZWRpdG9yLm1hcmtkb3duLnBhcnNlKG4pO3JldHVybiAkZS5zZXRDb250ZW50KHIsZSl9LGluc2VydENvbnRlbnQ6KG4sZSk9PntpZighZT8uY29udGVudFR5cGV8fENyKG4sZT8uY29udGVudFR5cGUpIT09Im1hcmtkb3duInx8IXRoaXMuZWRpdG9yLm1hcmtkb3duKXJldHVybiAkZS5pbnNlcnRDb250ZW50KG4sZSk7Y29uc3Qgcj10aGlzLmVkaXRvci5tYXJrZG93bi5wYXJzZShuKTtyZXR1cm4gJGUuaW5zZXJ0Q29udGVudChyLGUpfSxpbnNlcnRDb250ZW50QXQ6KG4sZSx0KT0+e2lmKCF0Py5jb250ZW50VHlwZXx8Q3IoZSx0Py5jb250ZW50VHlwZSkhPT0ibWFya2Rvd24ifHwhdGhpcy5lZGl0b3IubWFya2Rvd24pcmV0dXJuICRlLmluc2VydENvbnRlbnRBdChuLGUsdCk7Y29uc3Qgcz10aGlzLmVkaXRvci5tYXJrZG93bi5wYXJzZShlKTtyZXR1cm4gJGUuaW5zZXJ0Q29udGVudEF0KG4scyx0KX19fSxhZGRTdG9yYWdlKCl7cmV0dXJue21hbmFnZXI6bmV3IFVhKHtpbmRlbnRhdGlvbjp0aGlzLm9wdGlvbnMuaW5kZW50YXRpb24sbWFya2VkOnRoaXMub3B0aW9ucy5tYXJrZWQsbWFya2VkT3B0aW9uczp0aGlzLm9wdGlvbnMubWFya2VkT3B0aW9ucyxleHRlbnNpb25zOltdfSl9fSxvbkJlZm9yZUNyZWF0ZSgpe2lmKHRoaXMuZWRpdG9yLm1hcmtkb3dufHwodGhpcy5zdG9yYWdlLm1hbmFnZXI9bmV3IFVhKHtpbmRlbnRhdGlvbjp0aGlzLm9wdGlvbnMuaW5kZW50YXRpb24sbWFya2VkOnRoaXMub3B0aW9ucy5tYXJrZWQsbWFya2VkT3B0aW9uczp0aGlzLm9wdGlvbnMubWFya2VkT3B0aW9ucyxleHRlbnNpb25zOnRoaXMuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuYmFzZUV4dGVuc2lvbnN9KSx0aGlzLmVkaXRvci5tYXJrZG93bj10aGlzLnN0b3JhZ2UubWFuYWdlcix0aGlzLmVkaXRvci5nZXRNYXJrZG93bj0oKT0+dGhpcy5zdG9yYWdlLm1hbmFnZXIuc2VyaWFsaXplKHRoaXMuZWRpdG9yLmdldEpTT04oKSksIXRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudFR5cGUpfHxDcih0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQsdGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50VHlwZSkhPT0ibWFya2Rvd24iKXJldHVybjtpZighdGhpcy5lZGl0b3IubWFya2Rvd24pdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBNYXJrZG93biBleHRlbnNpb24gaXMgbm90IGFkZGVkIHRvIHRoZSBlZGl0b3IuIFBsZWFzZSBhZGQgdGhlIE1hcmtkb3duIGV4dGVuc2lvbiB0byB1c2UgdGhpcyBmZWF0dXJlLicpO2lmKHRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudD09PXZvaWQgMHx8dHlwZW9mIHRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBpbml0aWFsIGNvbnRlbnQgaXMgbm90IGEgc3RyaW5nLiBQbGVhc2UgcHJvdmlkZSB0aGUgaW5pdGlhbCBjb250ZW50IGFzIGEgbWFya2Rvd24gc3RyaW5nLicpO2NvbnN0IGU9dGhpcy5lZGl0b3IubWFya2Rvd24ucGFyc2UodGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50KTt0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQ9ZX19KSxlcz0obixlKT0+e2lmKG49PT0ic2xvdCIpcmV0dXJuIDA7aWYobiBpbnN0YW5jZW9mIEZ1bmN0aW9uKXJldHVybiBuKGUpO2NvbnN0e2NoaWxkcmVuOnQsLi4ucn09ZT8/e307aWYobj09PSJzdmciKXRocm93IG5ldyBFcnJvcigiU1ZHIGVsZW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBKU1ggc3ludGF4LCB1c2UgdGhlIGFycmF5IHN5bnRheCBpbnN0ZWFkIik7cmV0dXJuW24scix0XX0sbDA9L15ccyo+XHMkLyxhMD1TZS5jcmVhdGUoe25hbWU6ImJsb2NrcXVvdGUiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxjb250ZW50OiJibG9jaysiLGdyb3VwOiJibG9jayIsZGVmaW5pbmc6ITAscGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6ImJsb2NrcXVvdGUifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm4gZXMoImJsb2NrcXVvdGUiLHsuLi5LKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSxjaGlsZHJlbjplcygic2xvdCIse30pfSl9LHBhcnNlTWFya2Rvd246KG4sZSk9Pnt2YXIgdDtjb25zdCByPSh0PWUucGFyc2VCbG9ja0NoaWxkcmVuKSE9bnVsbD90OmUucGFyc2VDaGlsZHJlbjtyZXR1cm4gZS5jcmVhdGVOb2RlKCJibG9ja3F1b3RlIix2b2lkIDAscihuLnRva2Vuc3x8W10pKX0scmVuZGVyTWFya2Rvd246KG4sZSk9PntpZighbi5jb250ZW50KXJldHVybiIiO2NvbnN0IHQ9Ij4iLHI9W107cmV0dXJuIG4uY29udGVudC5mb3JFYWNoKChzLGkpPT57dmFyIG8sbDtjb25zdCB1PSgobD0obz1lLnJlbmRlckNoaWxkKT09bnVsbD92b2lkIDA6by5jYWxsKGUscyxpKSkhPW51bGw/bDplLnJlbmRlckNoaWxkcmVuKFtzXSkpLnNwbGl0KGAKYCkubWFwKGQ9PmQudHJpbSgpPT09IiI/dDpgJHt0fSAke2R9YCk7ci5wdXNoKHUuam9pbihgCmApKX0pLHIuam9pbihgCiR7dH0KYCl9LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEJsb2NrcXVvdGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLndyYXBJbih0aGlzLm5hbWUpLHRvZ2dsZUJsb2NrcXVvdGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZVdyYXAodGhpcy5uYW1lKSx1bnNldEJsb2NrcXVvdGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLmxpZnQodGhpcy5uYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtYiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJsb2NrcXVvdGUoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bcG4oe2ZpbmQ6bDAsdHlwZTp0aGlzLnR5cGV9KV19fSksYzA9Lyg/Ol58XHMpKFwqXCooPyFccytcKlwqKSgoPzpbXipdKykpXCpcKig/IVxzK1wqXCopKSQvLHUwPS8oPzpefFxzKShcKlwqKD8hXHMrXCpcKikoKD86W14qXSspKVwqXCooPyFccytcKlwqKSkvZyxkMD0vKD86XnxccykoX18oPyFccytfXykoKD86W15fXSspKV9fKD8hXHMrX18pKSQvLGgwPS8oPzpefFxzKShfXyg/IVxzK19fKSgoPzpbXl9dKykpX18oPyFccytfXykpL2csZjA9SnQuY3JlYXRlKHtuYW1lOiJib2xkIixhZGRPcHRpb25zKCl7cmV0dXJue0hUTUxBdHRyaWJ1dGVzOnt9fX0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6InN0cm9uZyJ9LHt0YWc6ImIiLGdldEF0dHJzOm49Pm4uc3R5bGUuZm9udFdlaWdodCE9PSJub3JtYWwiJiZudWxsfSx7c3R5bGU6ImZvbnQtd2VpZ2h0PTQwMCIsY2xlYXJNYXJrOm49Pm4udHlwZS5uYW1lPT09dGhpcy5uYW1lfSx7c3R5bGU6ImZvbnQtd2VpZ2h0IixnZXRBdHRyczpuPT4vXihib2xkKGVyKT98WzUtOV1cZHsyLH0pJC8udGVzdChuKSYmbnVsbH1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuIGVzKCJzdHJvbmciLHsuLi5LKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSxjaGlsZHJlbjplcygic2xvdCIse30pfSl9LG1hcmtkb3duVG9rZW5OYW1lOiJzdHJvbmciLHBhcnNlTWFya2Rvd246KG4sZSk9PmUuYXBwbHlNYXJrKCJib2xkIixlLnBhcnNlSW5saW5lKG4udG9rZW5zfHxbXSkpLG1hcmtkb3duT3B0aW9uczp7aHRtbFJlb3Blbjp7b3BlbjoiPHN0cm9uZz4iLGNsb3NlOiI8L3N0cm9uZz4ifX0scmVuZGVyTWFya2Rvd246KG4sZSk9PmAqKiR7ZS5yZW5kZXJDaGlsZHJlbihuKX0qKmAsYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0Qm9sZDooKT0+KHtjb21tYW5kczpufSk9Pm4uc2V0TWFyayh0aGlzLm5hbWUpLHRvZ2dsZUJvbGQ6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSx1bnNldEJvbGQ6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1iIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQm9sZCgpLCJNb2QtQiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJvbGQoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6YzAsdHlwZTp0aGlzLnR5cGV9KSxmbih7ZmluZDpkMCx0eXBlOnRoaXMudHlwZX0pXX0sYWRkUGFzdGVSdWxlcygpe3JldHVybltxdCh7ZmluZDp1MCx0eXBlOnRoaXMudHlwZX0pLHF0KHtmaW5kOmgwLHR5cGU6dGhpcy50eXBlfSldfX0pLHhpPTQscDA9L15gYGAoW2Etel0rKT9bXHNcbl0kLyxtMD0vXn5+fihbYS16XSspP1tcc1xuXSQvLGcwPVNlLmNyZWF0ZSh7bmFtZToiY29kZUJsb2NrIixhZGRPcHRpb25zKCl7cmV0dXJue2xhbmd1YWdlQ2xhc3NQcmVmaXg6Imxhbmd1YWdlLSIsZXhpdE9uVHJpcGxlRW50ZXI6ITAsZXhpdE9uQXJyb3dEb3duOiEwLGRlZmF1bHRMYW5ndWFnZTpudWxsLGVuYWJsZVRhYkluZGVudGF0aW9uOiExLHRhYlNpemU6eGksSFRNTEF0dHJpYnV0ZXM6e319fSxjb250ZW50OiJ0ZXh0KiIsbWFya3M6IiIsZ3JvdXA6ImJsb2NrIixjb2RlOiEwLGRlZmluaW5nOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57bGFuZ3VhZ2U6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLmRlZmF1bHRMYW5ndWFnZSxwYXJzZUhUTUw6bj0+e3ZhciBlO2NvbnN0e2xhbmd1YWdlQ2xhc3NQcmVmaXg6dH09dGhpcy5vcHRpb25zO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGk9Wy4uLigoZT1uLmZpcnN0RWxlbWVudENoaWxkKT09bnVsbD92b2lkIDA6ZS5jbGFzc0xpc3QpfHxbXV0uZmlsdGVyKG89Pm8uc3RhcnRzV2l0aCh0KSkubWFwKG89Pm8ucmVwbGFjZSh0LCIiKSlbMF07cmV0dXJuIGl8fG51bGx9LHJlbmRlcmVkOiExfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJwcmUiLHByZXNlcnZlV2hpdGVzcGFjZToiZnVsbCJ9XX0scmVuZGVySFRNTCh7bm9kZTpuLEhUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bInByZSIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksWyJjb2RlIix7Y2xhc3M6bi5hdHRycy5sYW5ndWFnZT90aGlzLm9wdGlvbnMubGFuZ3VhZ2VDbGFzc1ByZWZpeCtuLmF0dHJzLmxhbmd1YWdlOm51bGx9LDBdXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImNvZGUiLHBhcnNlTWFya2Rvd246KG4sZSk9Pnt2YXIgdCxyO3JldHVybigodD1uLnJhdyk9PW51bGw/dm9pZCAwOnQuc3RhcnRzV2l0aCgiYGBgIikpPT09ITEmJigocj1uLnJhdyk9PW51bGw/dm9pZCAwOnIuc3RhcnRzV2l0aCgifn5+IikpPT09ITEmJm4uY29kZUJsb2NrU3R5bGUhPT0iaW5kZW50ZWQiP1tdOmUuY3JlYXRlTm9kZSgiY29kZUJsb2NrIix7bGFuZ3VhZ2U6bi5sYW5nfHxudWxsfSxuLnRleHQ/W2UuY3JlYXRlVGV4dE5vZGUobi50ZXh0KV06W10pfSxyZW5kZXJNYXJrZG93bjoobixlKT0+e3ZhciB0O2xldCByPSIiO2NvbnN0IHM9KCh0PW4uYXR0cnMpPT1udWxsP3ZvaWQgMDp0Lmxhbmd1YWdlKXx8IiI7cmV0dXJuIG4uY29udGVudD9yPVtgXGBcYFxgJHtzfWAsZS5yZW5kZXJDaGlsZHJlbihuLmNvbnRlbnQpLCJgYGAiXS5qb2luKGAKYCk6cj1gXGBcYFxgJHtzfQoKXGBcYFxgYCxyfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlQmxvY2s6bj0+KHtjb21tYW5kczplfSk9PmUuc2V0Tm9kZSh0aGlzLm5hbWUsbiksdG9nZ2xlQ29kZUJsb2NrOm49Pih7Y29tbWFuZHM6ZX0pPT5lLnRvZ2dsZU5vZGUodGhpcy5uYW1lLCJwYXJhZ3JhcGgiLG4pfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1BbHQtYyI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUNvZGVCbG9jaygpLEJhY2tzcGFjZTooKT0+e2NvbnN0e2VtcHR5Om4sJGFuY2hvcjplfT10aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb24sdD1lLnBvcz09PTE7cmV0dXJuIW58fGUucGFyZW50LnR5cGUubmFtZSE9PXRoaXMubmFtZT8hMTp0fHwhZS5wYXJlbnQudGV4dENvbnRlbnQubGVuZ3RoP3RoaXMuZWRpdG9yLmNvbW1hbmRzLmNsZWFyTm9kZXMoKTohMX0sVGFiOih7ZWRpdG9yOm59KT0+e3ZhciBlO2lmKCF0aGlzLm9wdGlvbnMuZW5hYmxlVGFiSW5kZW50YXRpb24pcmV0dXJuITE7Y29uc3QgdD0oZT10aGlzLm9wdGlvbnMudGFiU2l6ZSkhPW51bGw/ZTp4aSx7c3RhdGU6cn09bix7c2VsZWN0aW9uOnN9PXIseyRmcm9tOmksZW1wdHk6b309cztpZihpLnBhcmVudC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO2NvbnN0IGw9IiAiLnJlcGVhdCh0KTtyZXR1cm4gbz9uLmNvbW1hbmRzLmluc2VydENvbnRlbnQobCk6bi5jb21tYW5kcy5jb21tYW5kKCh7dHI6YX0pPT57Y29uc3R7ZnJvbTpjLHRvOnV9PXMsZj1yLmRvYy50ZXh0QmV0d2VlbihjLHUsYApgLGAKYCkuc3BsaXQoYApgKS5tYXAocD0+bCtwKS5qb2luKGAKYCk7cmV0dXJuIGEucmVwbGFjZVdpdGgoYyx1LHIuc2NoZW1hLnRleHQoZikpLCEwfSl9LCJTaGlmdC1UYWIiOih7ZWRpdG9yOm59KT0+e3ZhciBlO2lmKCF0aGlzLm9wdGlvbnMuZW5hYmxlVGFiSW5kZW50YXRpb24pcmV0dXJuITE7Y29uc3QgdD0oZT10aGlzLm9wdGlvbnMudGFiU2l6ZSkhPW51bGw/ZTp4aSx7c3RhdGU6cn09bix7c2VsZWN0aW9uOnN9PXIseyRmcm9tOmksZW1wdHk6b309cztyZXR1cm4gaS5wYXJlbnQudHlwZSE9PXRoaXMudHlwZT8hMTpvP24uY29tbWFuZHMuY29tbWFuZCgoe3RyOmx9KT0+e3ZhciBhO2NvbnN0e3BvczpjfT1pLHU9aS5zdGFydCgpLGQ9aS5lbmQoKSxmPXIuZG9jLnRleHRCZXR3ZWVuKHUsZCxgCmAsYApgKS5zcGxpdChgCmApO2xldCBwPTAsbT0wO2NvbnN0IGc9Yy11O2ZvcihsZXQgdj0wO3Y8Zi5sZW5ndGg7dis9MSl7aWYobStmW3ZdLmxlbmd0aD49Zyl7cD12O2JyZWFrfW0rPWZbdl0ubGVuZ3RoKzF9Y29uc3Qgaz0oKGE9ZltwXS5tYXRjaCgvXiAqLykpPT1udWxsP3ZvaWQgMDphWzBdKXx8IiIsYj1NYXRoLm1pbihrLmxlbmd0aCx0KTtpZihiPT09MClyZXR1cm4hMDtsZXQgdz11O2ZvcihsZXQgdj0wO3Y8cDt2Kz0xKXcrPWZbdl0ubGVuZ3RoKzE7cmV0dXJuIGwuZGVsZXRlKHcsdytiKSxjLXc8PWImJmwuc2V0U2VsZWN0aW9uKEQuY3JlYXRlKGwuZG9jLHcpKSwhMH0pOm4uY29tbWFuZHMuY29tbWFuZCgoe3RyOmx9KT0+e2NvbnN0e2Zyb206YSx0bzpjfT1zLGg9ci5kb2MudGV4dEJldHdlZW4oYSxjLGAKYCxgCmApLnNwbGl0KGAKYCkubWFwKGY9Pnt2YXIgcDtjb25zdCBtPSgocD1mLm1hdGNoKC9eICovKSk9PW51bGw/dm9pZCAwOnBbMF0pfHwiIixnPU1hdGgubWluKG0ubGVuZ3RoLHQpO3JldHVybiBmLnNsaWNlKGcpfSkuam9pbihgCmApO3JldHVybiBsLnJlcGxhY2VXaXRoKGEsYyxyLnNjaGVtYS50ZXh0KGgpKSwhMH0pfSxFbnRlcjooe2VkaXRvcjpufSk9PntpZighdGhpcy5vcHRpb25zLmV4aXRPblRyaXBsZUVudGVyKXJldHVybiExO2NvbnN0e3N0YXRlOmV9PW4se3NlbGVjdGlvbjp0fT1lLHskZnJvbTpyLGVtcHR5OnN9PXQ7aWYoIXN8fHIucGFyZW50LnR5cGUhPT10aGlzLnR5cGUpcmV0dXJuITE7Y29uc3QgaT1yLnBhcmVudE9mZnNldD09PXIucGFyZW50Lm5vZGVTaXplLTIsbz1yLnBhcmVudC50ZXh0Q29udGVudC5lbmRzV2l0aChgCgpgKTtyZXR1cm4haXx8IW8/ITE6bi5jaGFpbigpLmNvbW1hbmQoKHt0cjpsfSk9PihsLmRlbGV0ZShyLnBvcy0yLHIucG9zKSwhMCkpLmV4aXRDb2RlKCkucnVuKCl9LEFycm93RG93bjooe2VkaXRvcjpufSk9PntpZighdGhpcy5vcHRpb25zLmV4aXRPbkFycm93RG93bilyZXR1cm4hMTtjb25zdHtzdGF0ZTplfT1uLHtzZWxlY3Rpb246dCxkb2M6cn09ZSx7JGZyb206cyxlbXB0eTppfT10O2lmKCFpfHxzLnBhcmVudC50eXBlIT09dGhpcy50eXBlfHwhKHMucGFyZW50T2Zmc2V0PT09cy5wYXJlbnQubm9kZVNpemUtMikpcmV0dXJuITE7Y29uc3QgbD1zLmFmdGVyKCk7cmV0dXJuIGw9PT12b2lkIDA/ITE6ci5ub2RlQXQobCk/bi5jb21tYW5kcy5jb21tYW5kKCh7dHI6Y30pPT4oYy5zZXRTZWxlY3Rpb24oSS5uZWFyKHIucmVzb2x2ZShsKSkpLCEwKSk6bi5jb21tYW5kcy5leGl0Q29kZSgpfX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bV2koe2ZpbmQ6cDAsdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczpuPT4oe2xhbmd1YWdlOm5bMV19KX0pLFdpKHtmaW5kOm0wLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6bj0+KHtsYW5ndWFnZTpuWzFdfSl9KV19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjb2RlQmxvY2tWU0NvZGVIYW5kbGVyIikscHJvcHM6e2hhbmRsZVBhc3RlOihuLGUpPT57aWYoIWUuY2xpcGJvYXJkRGF0YXx8dGhpcy5lZGl0b3IuaXNBY3RpdmUodGhpcy50eXBlLm5hbWUpKXJldHVybiExO2NvbnN0IHQ9ZS5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSxyPWUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ2c2NvZGUtZWRpdG9yLWRhdGEiKSxzPXI/SlNPTi5wYXJzZShyKTp2b2lkIDAsaT1zPy5tb2RlO2lmKCF0fHwhaSlyZXR1cm4hMTtjb25zdHt0cjpvLHNjaGVtYTpsfT1uLnN0YXRlLGE9bC50ZXh0KHQucmVwbGFjZSgvXHJcbj8vZyxgCmApKTtyZXR1cm4gby5yZXBsYWNlU2VsZWN0aW9uV2l0aCh0aGlzLnR5cGUuY3JlYXRlKHtsYW5ndWFnZTppfSxhKSksby5zZWxlY3Rpb24uJGZyb20ucGFyZW50LnR5cGUhPT10aGlzLnR5cGUmJm8uc2V0U2VsZWN0aW9uKEQubmVhcihvLmRvYy5yZXNvbHZlKE1hdGgubWF4KDAsby5zZWxlY3Rpb24uZnJvbS0yKSkpKSxvLnNldE1ldGEoInBhc3RlIiwhMCksbi5kaXNwYXRjaChvKSwhMH19fSldfX0pLHkwPVNlLmNyZWF0ZSh7bmFtZToiZG9jIix0b3BOb2RlOiEwLGNvbnRlbnQ6ImJsb2NrKyIscmVuZGVyTWFya2Rvd246KG4sZSk9Pm4uY29udGVudD9lLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCxgCgpgKToiIn0pLGswPVNlLmNyZWF0ZSh7bmFtZToiaGFyZEJyZWFrIixtYXJrZG93blRva2VuTmFtZToiYnIiLGFkZE9wdGlvbnMoKXtyZXR1cm57a2VlcE1hcmtzOiEwLEhUTUxBdHRyaWJ1dGVzOnt9fX0saW5saW5lOiEwLGdyb3VwOiJpbmxpbmUiLHNlbGVjdGFibGU6ITEsbGluZWJyZWFrUmVwbGFjZW1lbnQ6ITAscGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6ImJyIn1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuWyJiciIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsbildfSxyZW5kZXJUZXh0KCl7cmV0dXJuYApgfSxyZW5kZXJNYXJrZG93bjooKT0+YCAgCmAscGFyc2VNYXJrZG93bjooKT0+KHt0eXBlOiJoYXJkQnJlYWsifSksYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SGFyZEJyZWFrOigpPT4oe2NvbW1hbmRzOm4sY2hhaW46ZSxzdGF0ZTp0LGVkaXRvcjpyfSk9Pm4uZmlyc3QoWygpPT5uLmV4aXRDb2RlKCksKCk9Pm4uY29tbWFuZCgoKT0+e2NvbnN0e3NlbGVjdGlvbjpzLHN0b3JlZE1hcmtzOml9PXQ7aWYocy4kZnJvbS5wYXJlbnQudHlwZS5zcGVjLmlzb2xhdGluZylyZXR1cm4hMTtjb25zdHtrZWVwTWFya3M6b309dGhpcy5vcHRpb25zLHtzcGxpdHRhYmxlTWFya3M6bH09ci5leHRlbnNpb25NYW5hZ2VyLGE9aXx8cy4kdG8ucGFyZW50T2Zmc2V0JiZzLiRmcm9tLm1hcmtzKCk7cmV0dXJuIGUoKS5pbnNlcnRDb250ZW50KHt0eXBlOnRoaXMubmFtZX0pLmNvbW1hbmQoKHt0cjpjLGRpc3BhdGNoOnV9KT0+e2lmKHUmJmEmJm8pe2NvbnN0IGQ9YS5maWx0ZXIoaD0+bC5pbmNsdWRlcyhoLnR5cGUubmFtZSkpO2MuZW5zdXJlTWFya3MoZCl9cmV0dXJuITB9KS5ydW4oKX0pXSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLUVudGVyIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0SGFyZEJyZWFrKCksIlNoaWZ0LUVudGVyIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0SGFyZEJyZWFrKCl9fX0pLGIwPVNlLmNyZWF0ZSh7bmFtZToiaGVhZGluZyIsYWRkT3B0aW9ucygpe3JldHVybntsZXZlbHM6WzEsMiwzLDQsNSw2XSxIVE1MQXR0cmlidXRlczp7fX19LGNvbnRlbnQ6ImlubGluZSoiLGdyb3VwOiJibG9jayIsZGVmaW5pbmc6ITAsYWRkQXR0cmlidXRlcygpe3JldHVybntsZXZlbDp7ZGVmYXVsdDoxLHJlbmRlcmVkOiExfX19LHBhcnNlSFRNTCgpe3JldHVybiB0aGlzLm9wdGlvbnMubGV2ZWxzLm1hcChuPT4oe3RhZzpgaCR7bn1gLGF0dHJzOntsZXZlbDpufX0pKX0scmVuZGVySFRNTCh7bm9kZTpuLEhUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bYGgke3RoaXMub3B0aW9ucy5sZXZlbHMuaW5jbHVkZXMobi5hdHRycy5sZXZlbCk/bi5hdHRycy5sZXZlbDp0aGlzLm9wdGlvbnMubGV2ZWxzWzBdfWAsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LHBhcnNlTWFya2Rvd246KG4sZSk9PmUuY3JlYXRlTm9kZSgiaGVhZGluZyIse2xldmVsOm4uZGVwdGh8fDF9LGUucGFyc2VJbmxpbmUobi50b2tlbnN8fFtdKSkscmVuZGVyTWFya2Rvd246KG4sZSk9Pnt2YXIgdDtjb25zdCByPSh0PW4uYXR0cnMpIT1udWxsJiZ0LmxldmVsP3BhcnNlSW50KG4uYXR0cnMubGV2ZWwsMTApOjEscz0iIyIucmVwZWF0KHIpO3JldHVybiBuLmNvbnRlbnQ/YCR7c30gJHtlLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCl9YDoiIn0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SGVhZGluZzpuPT4oe2NvbW1hbmRzOmV9KT0+dGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhuLmxldmVsKT9lLnNldE5vZGUodGhpcy5uYW1lLG4pOiExLHRvZ2dsZUhlYWRpbmc6bj0+KHtjb21tYW5kczplfSk9PnRoaXMub3B0aW9ucy5sZXZlbHMuaW5jbHVkZXMobi5sZXZlbCk/ZS50b2dnbGVOb2RlKHRoaXMubmFtZSwicGFyYWdyYXBoIixuKTohMX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMucmVkdWNlKChuLGUpPT4oey4uLm4sW2BNb2QtQWx0LSR7ZX1gXTooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSGVhZGluZyh7bGV2ZWw6ZX0pfSkse30pfSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMubWFwKG49PldpKHtmaW5kOm5ldyBSZWdFeHAoYF4oI3ske01hdGgubWluKC4uLnRoaXMub3B0aW9ucy5sZXZlbHMpfSwke259fSlcXHMkYCksdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczp7bGV2ZWw6bn19KSl9fSkseDA9Lyg/Ol58XHMpKFwqKD8hXHMrXCopKCg/OlteKl0rKSlcKig/IVxzK1wqKSkkLyx3MD0vKD86XnxccykoXCooPyFccytcKikoKD86W14qXSspKVwqKD8hXHMrXCopKS9nLHYwPS8oPzpefFxzKShfKD8hXHMrXykoKD86W15fXSspKV8oPyFccytfKSkkLyxTMD0vKD86XnxccykoXyg/IVxzK18pKCg/OlteX10rKSlfKD8hXHMrXykpL2csQzA9SnQuY3JlYXRlKHtuYW1lOiJpdGFsaWMiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoiZW0ifSx7dGFnOiJpIixnZXRBdHRyczpuPT5uLnN0eWxlLmZvbnRTdHlsZSE9PSJub3JtYWwiJiZudWxsfSx7c3R5bGU6ImZvbnQtc3R5bGU9bm9ybWFsIixjbGVhck1hcms6bj0+bi50eXBlLm5hbWU9PT10aGlzLm5hbWV9LHtzdHlsZToiZm9udC1zdHlsZT1pdGFsaWMifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bImVtIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SXRhbGljOigpPT4oe2NvbW1hbmRzOm59KT0+bi5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlSXRhbGljOigpPT4oe2NvbW1hbmRzOm59KT0+bi50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRJdGFsaWM6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sbWFya2Rvd25Ub2tlbk5hbWU6ImVtIixwYXJzZU1hcmtkb3duOihuLGUpPT5lLmFwcGx5TWFyaygiaXRhbGljIixlLnBhcnNlSW5saW5lKG4udG9rZW5zfHxbXSkpLG1hcmtkb3duT3B0aW9uczp7aHRtbFJlb3Blbjp7b3BlbjoiPGVtPiIsY2xvc2U6IjwvZW0+In19LHJlbmRlck1hcmtkb3duOihuLGUpPT5gKiR7ZS5yZW5kZXJDaGlsZHJlbihuKX0qYCxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLWkiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVJdGFsaWMoKSwiTW9kLUkiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVJdGFsaWMoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6eDAsdHlwZTp0aGlzLnR5cGV9KSxmbih7ZmluZDp2MCx0eXBlOnRoaXMudHlwZX0pXX0sYWRkUGFzdGVSdWxlcygpe3JldHVybltxdCh7ZmluZDp3MCx0eXBlOnRoaXMudHlwZX0pLHF0KHtmaW5kOlMwLHR5cGU6dGhpcy50eXBlfSldfX0pO2NvbnN0IFQwPSJhYWExcnAzYmIwb3R0M3ZpZTRjMWxlMm9nYWRvNXVkaGFiaTdjMGFkZW15NWNlbnR1cmU2b3VudGFudDBzOW8xdG9yNGQwczF1bHQ0ZTBnMXJvMnRuYTRmMGwxcmljYTVnMGFraGFuNWVuY3k1aTBnMXJidXMzZm9yY2U1dGVsNWtkbjNsMGliYWJhNHBheTRsZmluYW56NnN0YXRlNXkyc2FjZTN0b201bTBhem9uNGVyaWNhbmV4cHJlc3M3ZmFtaWx5MTF4MmZhbTNpY2Ezc3RlcmRhbThuYWx5dGljczdkcm9pZDVxdWFuNHoybzBsMnBhcnRtZW50czhwMGxlNHEwdWFyZWxsZThyMGFiMW1jbzRjaGkzbXkycGEydDBlM3MwZGEyaWEyc29jaWF0ZXM5dDBobGV0YTV0b3JuZXk3dTBjdGlvbjVkaTBibGUzbzNzcG9zdDV0aG9yM28wczR3MHMyeDBhMnowdXJlNWJhMGJ5MmlkdTNuYW1leDRkMWsycjBjZWxvbmE1bGF5Y2FyZDRzNWVmb290NWdhaW5zNnNlYmFsbDVrZXRiYWxsOHVoYXVzNXllcm41YjBjMXQxdmEzY2cxbjJkMWUwYXRzMnV0eTRlcjJybGluNHN0MGJ1eTV0MmYxZzFoMGFydGk1aTBibGUzZDFrZTJuZzBvM28xejJqMWxhY2swZnJpZGF5OW9ja2J1c3RlcjhnMW9tYmVyZzd1ZTNtMHMxdzJuMHBwYXJpYmFzOW8wYXRzM2VocmluZ2VyOGZhMm0xbmQybzBrMGluZzVzY2gydGlrMm9uNHQxdXRpcXVlNngycjBhZGVzY282aWRnZXN0b25lOW9hZHdheTVrZXIzdGhlcjV1c3NlbHM3czF0MXVpbGQwZXJzNnNpbmVzczZ5MXp6M3YxdzF5MXowaDNjYTBiMWZlMmwwbDF2aW5rbGVpbjltMGVyYTNwMm5vbjNwZXRvd241aXRhbDBvbmU4cjBhdmFuNGRzMmUwZXIwczRzMnNhMWUxaDFpbm80dDBlcmluZzVob2xpYzdiYTFuMXJlM2MxZDFlbnRlcjRvMXJuM2YwYTFkMmcxaDBhbmVsMm5lbDRyaXR5NHNlMnQyZWFwM2ludGFpNXJpc3RtYXM2b21lNHVyY2g1aTBwcmlhbmk2cmNsZTRzY28zdGFkZWw0aTBjMnkzazFsMGFpbXM0ZWFuaW5nNmljazJuaWMxcXVlNm90aGluZzV1ZDN1YjBtZWQ2bTFuMW8wYWNoM2RlczNmZmVlNGxsZWdlNG9nbmU1bTBtYmFuazR1bml0eTZwYW55MnJlM3V0ZXI1c2VjNG5kb3Mzc3RydWN0aW9uOHVsdGluZzd0YWN0M3JhY3RvcnM5b2tpbmc0bDFwMnJzaWNhNXVudHJ5NHBvbjBzNHJzZXM2cGEycjBlZGl0MGNhcmQ0dW5pb245aWNrZXQ1b3duM3MxdWlzZTBzNnUwaXNpbmVsbGE5djF3MXgxeTBtcnUzb3UzejJkYWQxbmNlM3RhMWUxaW5nM3N1bjR5MmNsazNkczJlMGFsMGVyMnMzZ3JlZTRsaXZlcnk1bDFvaXR0ZTV0YTNtb2NyYXQ2bnRhbDJpc3Q1c2kwZ240djJobDJpYW1vbmRzNmV0MmdpdGFsNXJlY3Qwb3J5N3Njb3VudDN2ZXI1aDJ5MmoxazFtMW5wMm8wY3MxdG9yNGcxbWFpbnM1dDF3bmxvYWQ3cml2ZTR0djJ1YmFpM25sb3A0cG9udDRyYmFuNXZhZzJyMnoyZWFydGgzdDJjMG8yZGVrYTN1MGNhdGlvbjhlMWcxbWFpbDNlcmNrNW5lcmd5NGdpbmVlcjBpbmc5dGVycHJpc2VzMTBwc29uNHF1aXBtZW50OHIwaWNzc29uNm5pM3MwcTF0YXRlNXQxdTByb3Zpc2lvbjhzMnZlbnRzNXhjaGFuZ2U2cGVydDNvc2VkNHJlc3M1dHJhc3BhY2UxMGZhZ2UyaWwxcndpbmRzNnRoM21pbHk0bjBzMnJtMGVyczVzaGlvbjR0M2VkZXgzZWRiYWNrNnJyYXJpM2VybzZpMGRlbGl0eTVvMmxtMm5hbDFuY2UxaWFsN3JlMHN0b25lNm1kYWxlNnNoMGluZzV0MG5lc3M2ajFrMWxpY2tyM2dodHM0cjJvcmlzdDR3ZXJzNXkybTFvMG8wZDF0YmFsbDZyZDFleDJzYWxlNHVtM3VuZGF0aW9uOHgycjBlZTFzZW5pdXM3bDFvZ2FuczRudGllcjd0cjJ1aml0c3U1bjBkMnJuaXR1cmU3dGJvbDV5aTNnYTBsMGxlcnkzbzF1cDRtZTBzM3AxcmRlbjR5MmIwaXozZDBuMmUwYTFudDBpbmc1b3JnZTVmMWcwZWUzaDFpMGZ0MHMzdmVzMmluZzVsMGFzczNlMW9iYWwybzRtMGFpbDNiaDJvMXgybjFvZGFkZHk1bGQwcG9pbnQ2ZjJvMGR5ZWFyNWcwbGU0cDF0MXYycDFxMXIwYWluZ2VyNXBoaWNzNXRpczRlZW4zaXBlM29jZXJ5NHVwNHMxdDF1MGNjaTNnZTJpZGUydGFyczVydTN3MXkyaGFpcjJtYnVyZzVuZ291dDV1czNibzJkZmMwYmFuazdlYWx0aDBjYXJlOGxwMXNpbmtpNnJlMW1lczVpcGhvcDRzYW1pdHN1N3RhY2hpNXYyazB0Mm0xbjFvY2tleTRsZGluZ3M1aWRheTVtZWRlcG90NWdvb2RzNXMwZW5zZTduZGEzcnNlM3NwaXRhbDV0MGluZzV0MGVsczNtYWlsNXVzZTN3MnIxc2JjM3QxdTBnaGVzNXlhdHQzdW5kYWk3aWJtMmNiYzJlMXUyZDFlMGVlM2ZtMmthbm80bDFtMGFtYXQ0ZGIybW8wYmlsaWVuOW4wYzFkdXN0cmllczhmaW5pdGk1bzJnMWsxc3RpdHV0ZTZ1cmFuY2U0ZTR0MGVybmF0aW9uYWwxMHVpdDR2ZXN0bWVudHMxMG8xcGlyYW5nYTdxMXIwaXNoNHMwbWFpbGk1dDBhbmJ1bDd0MGF1MnYzamFndWFyNHZhM2NiMmUwZXAydHp0M3dlbHJ5NmlvMmxsMm0wcDJuajJvMGJzMXVyZzR0MXkycDBtb3JnYW42cnMzdWVnb3M0bmlwZXI3a2F1ZmVuNWRkaTNlMHJyeWhvdGVsczZwcm9wZXJ0aWVzMTRmaDJnMWgxaTBhMWRzMm0xbmRsZTR0Y2hlbjV3aTNtMW4xb2VsbjNtYXRzdTVzaGVyNXAwbWcybjJyMGQxZWQzdW9rZ3JvdXA4dzF5MG90bzR6MmxhMGNhaXhhNW1ib3JnaGluaThlcjNuZDByb3ZlcjZ4ZXNzNXNhbGxlNXQwaW5vM3JvYmU1dzB5ZXI1YjFjMWRzMmVhc2UzY2xlcmM1ZnJhazRnYWwybzJ4dXM0Z2J0M2kwZGwyZmUwaW5zdXJhbmNlOXN0eWxlN2dodGluZzZrZTJsbHkzbWl0ZWQ0bzJuY29sbjRrMnZlMWluZzVrMWxjMXAyb2FuMHMzY2tlcjN1czNsMW5kb240dHRlMW8zdmUzcGwwZmluYW5jaWFsMTFyMXMxdDBkMGEzdTBuZGJlY2s2eGUxdXJ5NXYxeTJtYTBkcmlkNGlmMXNvbjRrZXVwNG4wYWdlbWVudDdnbzNwMXJrZXQwaW5nM3M0cmlvdHQ1c2hhbGxzN3R0ZWw1YmEyYzBraW5zZXk3ZDFlMGQwaWEzZXQybGJvdXJuZTdtZTFvcmlhbDZuMHUycmNrbXNkN2cxaDFpYW1pM2Nyb3NvZnQ3bDFuaTF0MnQwc3ViaXNoaTlrMWwwYjFzMm0wYTJuMW8wYmkwbGU0ZGEyZTFpMW0xbmFzaDNleTJzdGVyNXJtb24zdGdhZ2U2c2NvdzR0bzByY3ljbGVzOXYwaWU0cDFxMXIxczBkMnQwbjFyMnUwc2V1bTNpYzR2MXcxeDF5MXoybmEwYjFnb3lhNG1lMnZ5M2JhMmMxZTBjMXQwYmFuazRmbGl4NHdvcms1dXN0YXI1dzBzMnh0MGRpcmVjdDd1czRmMGwyZzBvMmhrMmkwY28ya2Uxb24zbmphM3NzYW4xeTVsMW8wa2lhM3J0b240dzBydXozdHY0cDFyMGExdzJ0dDJ1MXljMnoyb2JpMXNlcnZlcjdmZmljZTVraW5hd2E2bGF5YW4wZ3JvdXA5bG8zbTBlZ2E0bmUxZzFsMGluZTVvbzJwZW4zcmFjbGUzbmdlNGcwYW5pYzVpZ2luczZzYWthNHRzdWthNHQydmgzcGEwZ2UybmFzb25pYzdyaXMyczF0bmVyczRzMXkzeTJjY3czZTB0MmYwaXplcjVnMWgwYXJtYWN5NmQxaWxpcHM1b25lMnRvMGdyYXBoeTZzNHlzaW81aWNzMXRldDJ1cmVzNmQxbjBnMWsyb25lZXI1enphNGsxbDBhY2UyeTBzdGF0aW9uOXVtYmluZzVzM20xbjBjMm9obDJrZXIzbGl0aWU1cm4yc3QzcjBheGkzZXNzM2ltZTNvMGQwdWN0aW9uczhmMWdyZXNzaXZlOG1vMnBlcnRpZXMzeTV0ZWN0aW9uOHUwZGVudGlhbDlzMXQxdWIydzBjMnkycWExcG9uM3VlYmVjM3N0NXJhY2luZzRkaW80ZTBhZDFsZXN0YXRlNnRvcjJ5NGNpcGVzNWQwc3RvbmU1dW1icmVsbGE5aGFiM2lzZTBuM3QybGlhbmNlNm4wdDBhbHM1cGFpcjNvcnQzdWJsaWNhbjhzdDBhdXJhbnQ4dmlldzBzNXhyb3RoNmljaDBhcmRsaTZvaDNsMW8xcDJvMGNrczNkZW8zZ2VyczRvbTNzMHZwM3UwZ2J5M2hyMm4ydzBlMnl1a3l1NnNhMGFybGFuZDZmZTB0eTRrdXJhNGxlMW9uM21zY2x1YjR1bmc1bmR2aWswY29yb21hbnQxMm9maTRwMXJsMnMxdmUyeG8zYjBpMXMyYzBiMWhhZWZmbGVyN21pZHQ0b2xhcnNoaXBzOG9sM3VsZTN3YXJ6NWllbmNlNW90M2QxZTBhcmNoM3QyY3VyZTFpdHk2ZWsybGVjdDRuZXIzcnZpY2VzNnZlbjN3MXgweTNmcjJnMWgwYW5ncmlsYTZycDNlbGwzaWExa3NoYTVvZXMycDBwaW5nNXVqaTN3M2kwbGsybmExZ2xlczV0ZTNqMWswaTBuMnkwcGU0bDBpbmc0bTBhcnQzaWxlNG4wY2YzbzBjY2VyM2lhbDRmdGJhbms0d2FyZTZodTJsYXIydXRpb25zN25nMXkyeTJwYTBjZTNvcnQydDNyMGwyczF0MGFkYTJwbGVzNHIxdGViYW5rNGZhcm03YzBncm91cDZvY2tob2xtNnJhZ2UzZTNyZWFtNHVkaW8yeTN5bGU0dTBja3MzcHBsaWVzM3kyb3J0NXJmMWdlcnk1enVraTV2MXdhdGNoNGlzczR4MXkwZG5leTRzdGVtczZ6MnRhYjFpcGVpNGxrMm9iYW80cmdldDR0YW1vdG9yczZyMnRvbzR4MGkzYzBpMmQwazJlYW0yY2gwbm9sb2d5OGwxbWFzZWs1bm5pczR2YTNmMWcxaDBkMWVhdGVyMnJlNmlhYTJja2V0czVlbmRhNHBzMnJlczJvbDRqMG1heHg0eDJrMG1heHg1bDFtMGFsbDRuMW8wZGF5M2t5bzNvbHMzcDFyYXkzc2hpYmE1dGFsM3VyczN3bjJ5b3RhM3MzcjBhZGUxaW5nNGluaW5nNXZlbDBlcnMwaW5zdXJhbmNlMTZ1c3QzdjJ0MXViZTJpMW5lczNzaHU0djBzMncxejJ1YTFiYW5rM3MyZzFrMW5pY29tM3ZlcnNpdHk4bzJvbDJwczJzMXkxejJ2YTBjYXRpb25zN25hMWd1YXJkN2MxZTBnYXMzbnR1cmVzNnJpc2lnbjVtw7ZnZW5zYmVyYXRlcjJ1bmcxNHNpY2hlcnVuZzEwdDJnMWkwYWplczRkZW8zZzFraW5nNGxsYXM0bjFwMXJnaW40c2ExaW9uNHZhMW8zbGFhbmRlcmVuOW4xb2RrYTNsdm8zdGUxaW5nM28yeWFnZTV1MndhbGVzMm1hcnQ0dGVyNG5nMGdvdTV0Y2gwZXM2ZWF0aGVyMGNoYW5uZWwxMmJjYW0zZXIyc2l0ZTVkMGRpbmc1aWJvMnIzZjFob3N3aG82aWVuMmtpMmxsaWFtaGlsbDluMGRvd3M0ZTFuZXJzNm1lMm9sdGVyc2tsdXdlcjExb2RzaWRlNnJrMHMybGQzdzJzMXRjMWYzeGJveDNlcm94NGlodWFuNG4yeHgyeXozeWFjaHRzNGhvbzNtYXh1bjVuZGV4NWUxb2RvYmFzaGk3Z2Eya29oYW1hNnUwdHViZTZ0MXVuM3phMHBwb3M0cmEzZXJvM2lwMm0xb25lM3VlcmljaDZ3MiIsTTA9Is61zrsxz4Uy0LHQszHQtdC7M9C00LXRgtC4NNC10Y4y0LrQsNGC0L7Qu9C40Lo20L7QvDPQvNC60LQy0L7QvTHRgdC60LLQsDbQvtC90LvQsNC50L010YDQszPRgNGD0YEy0YQy0YHQsNC50YIz0YDQsTPRg9C60YAz0pvQsNC3M9Ww1aHVtTPXmdep16jXkNecNden15XXnTPYp9io2YjYuNio2Yo12LHYp9mF2YPZiDXZhNin2LHYr9mGNNio2K3YsdmK2YY12KzYstin2KbYsTXYs9i52YjYr9mK2Kk22LnZhNmK2KfZhjXZhdi62LHYqDXZhdin2LHYp9iqNduM2LHYp9mGNdio2KfYsdiqMtiy2KfYsTTZitiq2YMz2r7Yp9ix2Ko12KrZiNmG2LM02LPZiNiv2KfZhjPYsdmK2Kk12LTYqNmD2Kk02LnYsdin2YIy2Kgy2YXYp9mGNNmB2YTYs9i32YrZhjbZgti32LEz2YPYp9ir2YjZhNmK2YM22YjZhTPZhdi12LEy2YTZitiz2YrYpzXZiNix2YrYqtin2YbZitinN9mC2Lk02YfZhdix2KfZhzXZvtin2qnYs9iq2KfZhjfagNin2LHYqjTgpJXgpYngpK4z4KSo4KWH4KSfM+CkreCkvuCksOCkpDDgpK7gpY0z4KWL4KSkNeCkuOCkguCkl+CkoOCkqDXgpqzgpr7gpoLgprLgpr414Kat4Ka+4Kaw4KakMuCnsOCmpDTgqK3gqL7gqLDgqKQ04Kqt4Kq+4Kqw4KqkNOCsreCsvuCssOCspDTgrofgrqjgr43grqTgrr/grq/grr424K6y4K6Z4K+N4K6V4K+INuCumuCuv+CumeCvjeCuleCuquCvjeCuquCvguCusOCvjTEx4LCt4LC+4LCw4LCk4LGNNeCyreCyvuCysOCypDTgtK3gtL7gtLDgtKTgtII14La94LaC4Laa4LePNOC4hOC4reC4oTPguYTguJfguKIz4Lql4Lqy4LqnM+GDkuGDlDLjgb/jgpPjgaoz44Ki44Oe44K+44OzNOOCr+ODqeOCpuODiTTjgrDjg7zjgrDjg6s044Kz44OgMuOCueODiOOCojPjgrvjg7zjg6sz44OV44Kh44OD44K344On44OzNuODneOCpOODs+ODiDTkuJbnlYwy5Lit5L+hMeWbvTHlnIsx5paH572RM+S6mumprOmAijPkvIHkuJoy5L2b5bGxMuS/oeaBrzLlgaXlurcy5YWr5Y2mMuWFrOWPuDHnm4oy5Y+w5rm+MeeBozLllYbln44x5bqXMeaghzLlmInph4ww5aSn6YWS5bqXNeWcqOe6vzLlpKfmi78y5aSp5Li75pWZM+WoseS5kDLlrrbpm7sy5bm/5LicMuW+ruWNmjLmhYjlloQy5oiR54ix5L2gM+aJi+acujLmi5vogZgy5pS/5YqhMeW6nDLmlrDliqDlnaEy6Ze7MuaXtuWwmjLmm7jnsY0y5py65p6EMua3oemprOmUoTPmuLjmiI8y5r6z6ZaAMueCueecizLnp7vliqgy57uE57uH5py65p6ENOe9keWdgDHlupcx56uZMee7nDLogZTpgJoy6LC35q2MMui0reeJqTLpgJrosqky6ZuG5ZuiMumbu+ioiuebiOenkTTpo57liKnmtaYz6aOf5ZOBMumkkOWOhTLpppnmoLzph4zmi4kz5rivMuuLt+uEtzHsu7Qy7IK87ISxMu2VnOq1rTIiLFppPSJudW1lcmljIixlbz0iYXNjaWkiLHRvPSJhbHBoYSIsSG49ImFzY2lpbnVtZXJpYyIsTm49ImFscGhhbnVtZXJpYyIsbm89ImRvbWFpbiIsWWQ9ImVtb2ppIixFMD0ic2NoZW1lIixBMD0ic2xhc2hzY2hlbWUiLHdpPSJ3aGl0ZXNwYWNlIjtmdW5jdGlvbiBPMChuLGUpe3JldHVybiBuIGluIGV8fChlW25dPVtdKSxlW25dfWZ1bmN0aW9uIFB0KG4sZSx0KXtlW1ppXSYmKGVbSG5dPSEwLGVbTm5dPSEwKSxlW2VvXSYmKGVbSG5dPSEwLGVbdG9dPSEwKSxlW0huXSYmKGVbTm5dPSEwKSxlW3RvXSYmKGVbTm5dPSEwKSxlW05uXSYmKGVbbm9dPSEwKSxlW1lkXSYmKGVbbm9dPSEwKTtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBzPU8wKHIsdCk7cy5pbmRleE9mKG4pPDAmJnMucHVzaChuKX19ZnVuY3Rpb24gTjAobixlKXtjb25zdCB0PXt9O2Zvcihjb25zdCByIGluIGUpZVtyXS5pbmRleE9mKG4pPj0wJiYodFtyXT0hMCk7cmV0dXJuIHR9ZnVuY3Rpb24gVGUobj1udWxsKXt0aGlzLmo9e30sdGhpcy5qcj1bXSx0aGlzLmpkPW51bGwsdGhpcy50PW59VGUuZ3JvdXBzPXt9O1RlLnByb3RvdHlwZT17YWNjZXB0cygpe3JldHVybiEhdGhpcy50fSxnbyhuKXtjb25zdCBlPXRoaXMsdD1lLmpbbl07aWYodClyZXR1cm4gdDtmb3IobGV0IHI9MDtyPGUuanIubGVuZ3RoO3IrKyl7Y29uc3Qgcz1lLmpyW3JdWzBdLGk9ZS5qcltyXVsxXTtpZihpJiZzLnRlc3QobikpcmV0dXJuIGl9cmV0dXJuIGUuamR9LGhhcyhuLGU9ITEpe3JldHVybiBlP24gaW4gdGhpcy5qOiEhdGhpcy5nbyhuKX0sdGEobixlLHQscil7Zm9yKGxldCBzPTA7czxuLmxlbmd0aDtzKyspdGhpcy50dChuW3NdLGUsdCxyKX0sdHIobixlLHQscil7cj1yfHxUZS5ncm91cHM7bGV0IHM7cmV0dXJuIGUmJmUuaj9zPWU6KHM9bmV3IFRlKGUpLHQmJnImJlB0KGUsdCxyKSksdGhpcy5qci5wdXNoKFtuLHNdKSxzfSx0cyhuLGUsdCxyKXtsZXQgcz10aGlzO2NvbnN0IGk9bi5sZW5ndGg7aWYoIWkpcmV0dXJuIHM7Zm9yKGxldCBvPTA7bzxpLTE7bysrKXM9cy50dChuW29dKTtyZXR1cm4gcy50dChuW2ktMV0sZSx0LHIpfSx0dChuLGUsdCxyKXtyPXJ8fFRlLmdyb3Vwcztjb25zdCBzPXRoaXM7aWYoZSYmZS5qKXJldHVybiBzLmpbbl09ZSxlO2NvbnN0IGk9ZTtsZXQgbyxsPXMuZ28obik7aWYobD8obz1uZXcgVGUsT2JqZWN0LmFzc2lnbihvLmosbC5qKSxvLmpyLnB1c2guYXBwbHkoby5qcixsLmpyKSxvLmpkPWwuamQsby50PWwudCk6bz1uZXcgVGUsaSl7aWYocilpZihvLnQmJnR5cGVvZiBvLnQ9PSJzdHJpbmciKXtjb25zdCBhPU9iamVjdC5hc3NpZ24oTjAoby50LHIpLHQpO1B0KGksYSxyKX1lbHNlIHQmJlB0KGksdCxyKTtvLnQ9aX1yZXR1cm4gcy5qW25dPW8sb319O2NvbnN0IEI9KG4sZSx0LHIscyk9Pm4udGEoZSx0LHIscyksWj0obixlLHQscixzKT0+bi50cihlLHQscixzKSxqYT0obixlLHQscixzKT0+bi50cyhlLHQscixzKSxUPShuLGUsdCxyLHMpPT5uLnR0KGUsdCxyLHMpLGV0PSJXT1JEIixybz0iVVdPUkQiLFpkPSJBU0NJSU5VTUVSSUNBTCIsZWg9IkFMUEhBTlVNRVJJQ0FMIix0cj0iTE9DQUxIT1NUIixzbz0iVExEIixpbz0iVVRMRCIsUHI9IlNDSEVNRSIsbm49IlNMQVNIX1NDSEVNRSIsdGw9Ik5VTSIsb289IldTIixubD0iTkwiLEZuPSJPUEVOQlJBQ0UiLFZuPSJDTE9TRUJSQUNFIix0cz0iT1BFTkJSQUNLRVQiLG5zPSJDTE9TRUJSQUNLRVQiLHJzPSJPUEVOUEFSRU4iLHNzPSJDTE9TRVBBUkVOIixpcz0iT1BFTkFOR0xFQlJBQ0tFVCIsbHM9IkNMT1NFQU5HTEVCUkFDS0VUIixhcz0iRlVMTFdJRFRITEVGVFBBUkVOIixjcz0iRlVMTFdJRFRIUklHSFRQQVJFTiIsdXM9IkxFRlRDT1JORVJCUkFDS0VUIixkcz0iUklHSFRDT1JORVJCUkFDS0VUIixocz0iTEVGVFdISVRFQ09STkVSQlJBQ0tFVCIsZnM9IlJJR0hUV0hJVEVDT1JORVJCUkFDS0VUIixwcz0iRlVMTFdJRFRITEVTU1RIQU4iLG1zPSJGVUxMV0lEVEhHUkVBVEVSVEhBTiIsZ3M9IkFNUEVSU0FORCIseXM9IkFQT1NUUk9QSEUiLGtzPSJBU1RFUklTSyIsbXQ9IkFUIixicz0iQkFDS1NMQVNIIix4cz0iQkFDS1RJQ0siLHdzPSJDQVJFVCIsYnQ9IkNPTE9OIixybD0iQ09NTUEiLHZzPSJET0xMQVIiLHFlPSJET1QiLFNzPSJFUVVBTFMiLHNsPSJFWENMQU1BVElPTiIsTmU9IkhZUEhFTiIsVW49IlBFUkNFTlQiLENzPSJQSVBFIixUcz0iUExVUyIsTXM9IlBPVU5EIixqbj0iUVVFUlkiLGlsPSJRVU9URSIsdGg9IkZVTExXSURUSE1JRERMRURPVCIsb2w9IlNFTUkiLFdlPSJTTEFTSCIscW49IlRJTERFIixFcz0iVU5ERVJTQ09SRSIsbmg9IkVNT0pJIixBcz0iU1lNIjt2YXIgcmg9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQUxQSEFOVU1FUklDQUw6ZWgsQU1QRVJTQU5EOmdzLEFQT1NUUk9QSEU6eXMsQVNDSUlOVU1FUklDQUw6WmQsQVNURVJJU0s6a3MsQVQ6bXQsQkFDS1NMQVNIOmJzLEJBQ0tUSUNLOnhzLENBUkVUOndzLENMT1NFQU5HTEVCUkFDS0VUOmxzLENMT1NFQlJBQ0U6Vm4sQ0xPU0VCUkFDS0VUOm5zLENMT1NFUEFSRU46c3MsQ09MT046YnQsQ09NTUE6cmwsRE9MTEFSOnZzLERPVDpxZSxFTU9KSTpuaCxFUVVBTFM6U3MsRVhDTEFNQVRJT046c2wsRlVMTFdJRFRIR1JFQVRFUlRIQU46bXMsRlVMTFdJRFRITEVGVFBBUkVOOmFzLEZVTExXSURUSExFU1NUSEFOOnBzLEZVTExXSURUSE1JRERMRURPVDp0aCxGVUxMV0lEVEhSSUdIVFBBUkVOOmNzLEhZUEhFTjpOZSxMRUZUQ09STkVSQlJBQ0tFVDp1cyxMRUZUV0hJVEVDT1JORVJCUkFDS0VUOmhzLExPQ0FMSE9TVDp0cixOTDpubCxOVU06dGwsT1BFTkFOR0xFQlJBQ0tFVDppcyxPUEVOQlJBQ0U6Rm4sT1BFTkJSQUNLRVQ6dHMsT1BFTlBBUkVOOnJzLFBFUkNFTlQ6VW4sUElQRTpDcyxQTFVTOlRzLFBPVU5EOk1zLFFVRVJZOmpuLFFVT1RFOmlsLFJJR0hUQ09STkVSQlJBQ0tFVDpkcyxSSUdIVFdISVRFQ09STkVSQlJBQ0tFVDpmcyxTQ0hFTUU6UHIsU0VNSTpvbCxTTEFTSDpXZSxTTEFTSF9TQ0hFTUU6bm4sU1lNOkFzLFRJTERFOnFuLFRMRDpzbyxVTkRFUlNDT1JFOkVzLFVUTEQ6aW8sVVdPUkQ6cm8sV09SRDpldCxXUzpvb30pO2NvbnN0IFhlPS9bYS16XS8sdm49bmV3IFJlZ0V4cCgiXFxwe0x9IiwidSIpLHZpPW5ldyBSZWdFeHAoIlxccHtFbW9qaX0iLCJ1IiksWWU9L1xkLyxTaT0vXHMvLHFhPSJcciIsQ2k9YApgLFIwPSLvuI8iLEkwPSLigI0iLFRpPSLvv7wiO2xldCBUcj1udWxsLE1yPW51bGw7ZnVuY3Rpb24gRDAobj1bXSl7Y29uc3QgZT17fTtUZS5ncm91cHM9ZTtjb25zdCB0PW5ldyBUZTtUcj09bnVsbCYmKFRyPVdhKFQwKSksTXI9PW51bGwmJihNcj1XYShNMCkpLFQodCwiJyIseXMpLFQodCwieyIsRm4pLFQodCwifSIsVm4pLFQodCwiWyIsdHMpLFQodCwiXSIsbnMpLFQodCwiKCIscnMpLFQodCwiKSIsc3MpLFQodCwiPCIsaXMpLFQodCwiPiIsbHMpLFQodCwi77yIIixhcyksVCh0LCLvvIkiLGNzKSxUKHQsIuOAjCIsdXMpLFQodCwi44CNIixkcyksVCh0LCLjgI4iLGhzKSxUKHQsIuOAjyIsZnMpLFQodCwi77ycIixwcyksVCh0LCLvvJ4iLG1zKSxUKHQsIiYiLGdzKSxUKHQsIioiLGtzKSxUKHQsIkAiLG10KSxUKHQsImAiLHhzKSxUKHQsIl4iLHdzKSxUKHQsIjoiLGJ0KSxUKHQsIiwiLHJsKSxUKHQsIiQiLHZzKSxUKHQsIi4iLHFlKSxUKHQsIj0iLFNzKSxUKHQsIiEiLHNsKSxUKHQsIi0iLE5lKSxUKHQsIiUiLFVuKSxUKHQsInwiLENzKSxUKHQsIisiLFRzKSxUKHQsIiMiLE1zKSxUKHQsIj8iLGpuKSxUKHQsJyInLGlsKSxUKHQsIi8iLFdlKSxUKHQsIjsiLG9sKSxUKHQsIn4iLHFuKSxUKHQsIl8iLEVzKSxUKHQsIlxcIixicyksVCh0LCLjg7siLHRoKTtjb25zdCByPVoodCxZZSx0bCx7W1ppXTohMH0pO1oocixZZSxyKTtjb25zdCBzPVoocixYZSxaZCx7W0huXTohMH0pLGk9WihyLHZuLGVoLHtbTm5dOiEwfSksbz1aKHQsWGUsZXQse1tlb106ITB9KTtaKG8sWWUscyksWihvLFhlLG8pLFoocyxZZSxzKSxaKHMsWGUscyk7Y29uc3QgbD1aKHQsdm4scm8se1t0b106ITB9KTtaKGwsWGUpLFoobCxZZSxpKSxaKGwsdm4sbCksWihpLFllLGkpLFooaSxYZSksWihpLHZuLGkpO2NvbnN0IGE9VCh0LENpLG5sLHtbd2ldOiEwfSksYz1UKHQscWEsb28se1t3aV06ITB9KSx1PVoodCxTaSxvbyx7W3dpXTohMH0pO1QodCxUaSx1KSxUKGMsQ2ksYSksVChjLFRpLHUpLFooYyxTaSx1KSxUKHUscWEpLFQodSxDaSksWih1LFNpLHUpLFQodSxUaSx1KTtjb25zdCBkPVoodCx2aSxuaCx7W1lkXTohMH0pO1QoZCwiIyIpLFooZCx2aSxkKSxUKGQsUjAsZCk7Y29uc3QgaD1UKGQsSTApO1QoaCwiIyIpLFooaCx2aSxkKTtjb25zdCBmPVtbWGUsb10sW1llLHNdXSxwPVtbWGUsbnVsbF0sW3ZuLGxdLFtZZSxpXV07Zm9yKGxldCBtPTA7bTxUci5sZW5ndGg7bSsrKWR0KHQsVHJbbV0sc28sZXQsZik7Zm9yKGxldCBtPTA7bTxNci5sZW5ndGg7bSsrKWR0KHQsTXJbbV0saW8scm8scCk7UHQoc28se3RsZDohMCxhc2NpaTohMH0sZSksUHQoaW8se3V0bGQ6ITAsYWxwaGE6ITB9LGUpLGR0KHQsImZpbGUiLFByLGV0LGYpLGR0KHQsIm1haWx0byIsUHIsZXQsZiksZHQodCwiaHR0cCIsbm4sZXQsZiksZHQodCwiaHR0cHMiLG5uLGV0LGYpLGR0KHQsImZ0cCIsbm4sZXQsZiksZHQodCwiZnRwcyIsbm4sZXQsZiksUHQoUHIse3NjaGVtZTohMCxhc2NpaTohMH0sZSksUHQobm4se3NsYXNoc2NoZW1lOiEwLGFzY2lpOiEwfSxlKSxuPW4uc29ydCgobSxnKT0+bVswXT5nWzBdPzE6LTEpO2ZvcihsZXQgbT0wO208bi5sZW5ndGg7bSsrKXtjb25zdCBnPW5bbV1bMF0saz1uW21dWzFdP3tbRTBdOiEwfTp7W0EwXTohMH07Zy5pbmRleE9mKCItIik+PTA/a1tub109ITA6WGUudGVzdChnKT9ZZS50ZXN0KGcpP2tbSG5dPSEwOmtbZW9dPSEwOmtbWmldPSEwLGphKHQsZyxnLGspfXJldHVybiBqYSh0LCJsb2NhbGhvc3QiLHRyLHthc2NpaTohMH0pLHQuamQ9bmV3IFRlKEFzKSx7c3RhcnQ6dCx0b2tlbnM6T2JqZWN0LmFzc2lnbih7Z3JvdXBzOmV9LHJoKX19ZnVuY3Rpb24gc2gobixlKXtjb25zdCB0PUwwKGUucmVwbGFjZSgvW0EtWl0vZyxsPT5sLnRvTG93ZXJDYXNlKCkpKSxyPXQubGVuZ3RoLHM9W107bGV0IGk9MCxvPTA7Zm9yKDtvPHI7KXtsZXQgbD1uLGE9bnVsbCxjPTAsdT1udWxsLGQ9LTEsaD0tMTtmb3IoO288ciYmKGE9bC5nbyh0W29dKSk7KWw9YSxsLmFjY2VwdHMoKT8oZD0wLGg9MCx1PWwpOmQ+PTAmJihkKz10W29dLmxlbmd0aCxoKyspLGMrPXRbb10ubGVuZ3RoLGkrPXRbb10ubGVuZ3RoLG8rKztpLT1kLG8tPWgsYy09ZCxzLnB1c2goe3Q6dS50LHY6ZS5zbGljZShpLWMsaSksczppLWMsZTppfSl9cmV0dXJuIHN9ZnVuY3Rpb24gTDAobil7Y29uc3QgZT1bXSx0PW4ubGVuZ3RoO2xldCByPTA7Zm9yKDtyPHQ7KXtsZXQgcz1uLmNoYXJDb2RlQXQociksaSxvPXM8NTUyOTZ8fHM+NTYzMTl8fHIrMT09PXR8fChpPW4uY2hhckNvZGVBdChyKzEpKTw1NjMyMHx8aT41NzM0Mz9uW3JdOm4uc2xpY2UocixyKzIpO2UucHVzaChvKSxyKz1vLmxlbmd0aH1yZXR1cm4gZX1mdW5jdGlvbiBkdChuLGUsdCxyLHMpe2xldCBpO2NvbnN0IG89ZS5sZW5ndGg7Zm9yKGxldCBsPTA7bDxvLTE7bCsrKXtjb25zdCBhPWVbbF07bi5qW2FdP2k9bi5qW2FdOihpPW5ldyBUZShyKSxpLmpyPXMuc2xpY2UoKSxuLmpbYV09aSksbj1pfXJldHVybiBpPW5ldyBUZSh0KSxpLmpyPXMuc2xpY2UoKSxuLmpbZVtvLTFdXT1pLGl9ZnVuY3Rpb24gV2Eobil7Y29uc3QgZT1bXSx0PVtdO2xldCByPTAscz0iMDEyMzQ1Njc4OSI7Zm9yKDtyPG4ubGVuZ3RoOyl7bGV0IGk9MDtmb3IoO3MuaW5kZXhPZihuW3IraV0pPj0wOylpKys7aWYoaT4wKXtlLnB1c2godC5qb2luKCIiKSk7Zm9yKGxldCBvPXBhcnNlSW50KG4uc3Vic3RyaW5nKHIscitpKSwxMCk7bz4wO28tLSl0LnBvcCgpO3IrPWl9ZWxzZSB0LnB1c2gobltyXSkscisrfXJldHVybiBlfWNvbnN0IG5yPXtkZWZhdWx0UHJvdG9jb2w6Imh0dHAiLGV2ZW50czpudWxsLGZvcm1hdDpLYSxmb3JtYXRIcmVmOkthLG5sMmJyOiExLHRhZ05hbWU6ImEiLHRhcmdldDpudWxsLHJlbDpudWxsLHZhbGlkYXRlOiEwLHRydW5jYXRlOjEvMCxjbGFzc05hbWU6bnVsbCxhdHRyaWJ1dGVzOm51bGwsaWdub3JlVGFnczpbXSxyZW5kZXI6bnVsbH07ZnVuY3Rpb24gbGwobixlPW51bGwpe2xldCB0PU9iamVjdC5hc3NpZ24oe30sbnIpO24mJih0PU9iamVjdC5hc3NpZ24odCxuIGluc3RhbmNlb2YgbGw/bi5vOm4pKTtjb25zdCByPXQuaWdub3JlVGFncyxzPVtdO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXMucHVzaChyW2ldLnRvVXBwZXJDYXNlKCkpO3RoaXMubz10LGUmJih0aGlzLmRlZmF1bHRSZW5kZXI9ZSksdGhpcy5pZ25vcmVUYWdzPXN9bGwucHJvdG90eXBlPXtvOm5yLGlnbm9yZVRhZ3M6W10sZGVmYXVsdFJlbmRlcihuKXtyZXR1cm4gbn0sY2hlY2sobil7cmV0dXJuIHRoaXMuZ2V0KCJ2YWxpZGF0ZSIsbi50b1N0cmluZygpLG4pfSxnZXQobixlLHQpe2NvbnN0IHI9ZSE9bnVsbDtsZXQgcz10aGlzLm9bbl07cmV0dXJuIHMmJih0eXBlb2Ygcz09Im9iamVjdCI/KHM9dC50IGluIHM/c1t0LnRdOm5yW25dLHR5cGVvZiBzPT0iZnVuY3Rpb24iJiZyJiYocz1zKGUsdCkpKTp0eXBlb2Ygcz09ImZ1bmN0aW9uIiYmciYmKHM9cyhlLHQudCx0KSkscyl9LGdldE9iaihuLGUsdCl7bGV0IHI9dGhpcy5vW25dO3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmZSE9bnVsbCYmKHI9cihlLHQudCx0KSkscn0scmVuZGVyKG4pe2NvbnN0IGU9bi5yZW5kZXIodGhpcyk7cmV0dXJuKHRoaXMuZ2V0KCJyZW5kZXIiLG51bGwsbil8fHRoaXMuZGVmYXVsdFJlbmRlcikoZSxuLnQsbil9fTtmdW5jdGlvbiBLYShuKXtyZXR1cm4gbn1mdW5jdGlvbiBpaChuLGUpe3RoaXMudD0idG9rZW4iLHRoaXMudj1uLHRoaXMudGs9ZX1paC5wcm90b3R5cGU9e2lzTGluazohMSx0b1N0cmluZygpe3JldHVybiB0aGlzLnZ9LHRvSHJlZihuKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx0b0Zvcm1hdHRlZFN0cmluZyhuKXtjb25zdCBlPXRoaXMudG9TdHJpbmcoKSx0PW4uZ2V0KCJ0cnVuY2F0ZSIsZSx0aGlzKSxyPW4uZ2V0KCJmb3JtYXQiLGUsdGhpcyk7cmV0dXJuIHQmJnIubGVuZ3RoPnQ/ci5zdWJzdHJpbmcoMCx0KSsi4oCmIjpyfSx0b0Zvcm1hdHRlZEhyZWYobil7cmV0dXJuIG4uZ2V0KCJmb3JtYXRIcmVmIix0aGlzLnRvSHJlZihuLmdldCgiZGVmYXVsdFByb3RvY29sIikpLHRoaXMpfSxzdGFydEluZGV4KCl7cmV0dXJuIHRoaXMudGtbMF0uc30sZW5kSW5kZXgoKXtyZXR1cm4gdGhpcy50a1t0aGlzLnRrLmxlbmd0aC0xXS5lfSx0b09iamVjdChuPW5yLmRlZmF1bHRQcm90b2NvbCl7cmV0dXJue3R5cGU6dGhpcy50LHZhbHVlOnRoaXMudG9TdHJpbmcoKSxpc0xpbms6dGhpcy5pc0xpbmssaHJlZjp0aGlzLnRvSHJlZihuKSxzdGFydDp0aGlzLnN0YXJ0SW5kZXgoKSxlbmQ6dGhpcy5lbmRJbmRleCgpfX0sdG9Gb3JtYXR0ZWRPYmplY3Qobil7cmV0dXJue3R5cGU6dGhpcy50LHZhbHVlOnRoaXMudG9Gb3JtYXR0ZWRTdHJpbmcobiksaXNMaW5rOnRoaXMuaXNMaW5rLGhyZWY6dGhpcy50b0Zvcm1hdHRlZEhyZWYobiksc3RhcnQ6dGhpcy5zdGFydEluZGV4KCksZW5kOnRoaXMuZW5kSW5kZXgoKX19LHZhbGlkYXRlKG4pe3JldHVybiBuLmdldCgidmFsaWRhdGUiLHRoaXMudG9TdHJpbmcoKSx0aGlzKX0scmVuZGVyKG4pe2NvbnN0IGU9dGhpcyx0PXRoaXMudG9IcmVmKG4uZ2V0KCJkZWZhdWx0UHJvdG9jb2wiKSkscj1uLmdldCgiZm9ybWF0SHJlZiIsdCx0aGlzKSxzPW4uZ2V0KCJ0YWdOYW1lIix0LGUpLGk9dGhpcy50b0Zvcm1hdHRlZFN0cmluZyhuKSxvPXt9LGw9bi5nZXQoImNsYXNzTmFtZSIsdCxlKSxhPW4uZ2V0KCJ0YXJnZXQiLHQsZSksYz1uLmdldCgicmVsIix0LGUpLHU9bi5nZXRPYmooImF0dHJpYnV0ZXMiLHQsZSksZD1uLmdldE9iaigiZXZlbnRzIix0LGUpO3JldHVybiBvLmhyZWY9cixsJiYoby5jbGFzcz1sKSxhJiYoby50YXJnZXQ9YSksYyYmKG8ucmVsPWMpLHUmJk9iamVjdC5hc3NpZ24obyx1KSx7dGFnTmFtZTpzLGF0dHJpYnV0ZXM6byxjb250ZW50OmksZXZlbnRMaXN0ZW5lcnM6ZH19fTtmdW5jdGlvbiBLcyhuLGUpe2NsYXNzIHQgZXh0ZW5kcyBpaHtjb25zdHJ1Y3RvcihzLGkpe3N1cGVyKHMsaSksdGhpcy50PW59fWZvcihjb25zdCByIGluIGUpdC5wcm90b3R5cGVbcl09ZVtyXTtyZXR1cm4gdC50PW4sdH1jb25zdCBKYT1LcygiZW1haWwiLHtpc0xpbms6ITAsdG9IcmVmKCl7cmV0dXJuIm1haWx0bzoiK3RoaXMudG9TdHJpbmcoKX19KSxHYT1LcygidGV4dCIpLFAwPUtzKCJubCIpLEVyPUtzKCJ1cmwiLHtpc0xpbms6ITAsdG9IcmVmKG49bnIuZGVmYXVsdFByb3RvY29sKXtyZXR1cm4gdGhpcy5oYXNQcm90b2NvbCgpP3RoaXMudjpgJHtufTovLyR7dGhpcy52fWB9LGhhc1Byb3RvY29sKCl7Y29uc3Qgbj10aGlzLnRrO3JldHVybiBuLmxlbmd0aD49MiYmblswXS50IT09dHImJm5bMV0udD09PWJ0fX0pLE9lPW49Pm5ldyBUZShuKTtmdW5jdGlvbiB6MCh7Z3JvdXBzOm59KXtjb25zdCBlPW4uZG9tYWluLmNvbmNhdChbZ3Msa3MsbXQsYnMseHMsd3MsdnMsU3MsTmUsdGwsVW4sQ3MsVHMsTXMsV2UsQXMscW4sRXNdKSx0PVt5cyxidCxybCxxZSxzbCxVbixqbixpbCxvbCxpcyxscyxGbixWbixucyx0cyxycyxzcyxhcyxjcyx1cyxkcyxocyxmcyxwcyxtc10scj1bZ3MseXMsa3MsYnMseHMsd3MsdnMsU3MsTmUsRm4sVm4sVW4sQ3MsVHMsTXMsam4sV2UsQXMscW4sRXNdLHM9T2UoKSxpPVQocyxxbik7QihpLHIsaSksQihpLG4uZG9tYWluLGkpO2NvbnN0IG89T2UoKSxsPU9lKCksYT1PZSgpO0IocyxuLmRvbWFpbixvKSxCKHMsbi5zY2hlbWUsbCksQihzLG4uc2xhc2hzY2hlbWUsYSksQihvLHIsaSksQihvLG4uZG9tYWluLG8pO2NvbnN0IGM9VChvLG10KTtUKGksbXQsYyksVChsLG10LGMpLFQoYSxtdCxjKTtjb25zdCB1PVQoaSxxZSk7Qih1LHIsaSksQih1LG4uZG9tYWluLGkpO2NvbnN0IGQ9T2UoKTtCKGMsbi5kb21haW4sZCksQihkLG4uZG9tYWluLGQpO2NvbnN0IGg9VChkLHFlKTtCKGgsbi5kb21haW4sZCk7Y29uc3QgZj1PZShKYSk7QihoLG4udGxkLGYpLEIoaCxuLnV0bGQsZiksVChjLHRyLGYpO2NvbnN0IHA9VChkLE5lKTtUKHAsTmUscCksQihwLG4uZG9tYWluLGQpLEIoZixuLmRvbWFpbixkKSxUKGYscWUsaCksVChmLE5lLHApO2NvbnN0IG09VChmLGJ0KTtCKG0sbi5udW1lcmljLEphKTtjb25zdCBnPVQobyxOZSkseT1UKG8scWUpO1QoZyxOZSxnKSxCKGcsbi5kb21haW4sbyksQih5LHIsaSksQih5LG4uZG9tYWluLG8pO2NvbnN0IGs9T2UoRXIpO0IoeSxuLnRsZCxrKSxCKHksbi51dGxkLGspLEIoayxuLmRvbWFpbixvKSxCKGsscixpKSxUKGsscWUseSksVChrLE5lLGcpLFQoayxtdCxjKTtjb25zdCBiPVQoayxidCksdz1PZShFcik7QihiLG4ubnVtZXJpYyx3KTtjb25zdCB4PU9lKEVyKSx2PU9lKCk7Qih4LGUseCksQih4LHQsdiksQih2LGUseCksQih2LHQsdiksVChrLFdlLHgpLFQodyxXZSx4KTtjb25zdCBDPVQobCxidCksTT1UKGEsYnQpLFI9VChNLFdlKSxPPVQoUixXZSk7QihsLG4uZG9tYWluLG8pLFQobCxxZSx5KSxUKGwsTmUsZyksQihhLG4uZG9tYWluLG8pLFQoYSxxZSx5KSxUKGEsTmUsZyksQihDLG4uZG9tYWluLHgpLFQoQyxXZSx4KSxUKEMsam4seCksQihPLG4uZG9tYWluLHgpLEIoTyxlLHgpLFQoTyxXZSx4KTtjb25zdCBQPVtbRm4sVm5dLFt0cyxuc10sW3JzLHNzXSxbaXMsbHNdLFthcyxjc10sW3VzLGRzXSxbaHMsZnNdLFtwcyxtc11dO2ZvcihsZXQgRj0wO0Y8UC5sZW5ndGg7RisrKXtjb25zdFtfLExdPVBbRl0sSD1UKHgsXyk7VCh2LF8sSCksVChILEwseCk7Y29uc3QgbmU9T2UoRXIpO0IoSCxlLG5lKTtjb25zdCBvZT1PZSgpO0IoSCx0KSxCKG5lLGUsbmUpLEIobmUsdCxvZSksQihvZSxlLG5lKSxCKG9lLHQsb2UpLFQobmUsTCx4KSxUKG9lLEwseCl9cmV0dXJuIFQocyx0cixrKSxUKHMsbmwsUDApLHtzdGFydDpzLHRva2VuczpyaH19ZnVuY3Rpb24gJDAobixlLHQpe2xldCByPXQubGVuZ3RoLHM9MCxpPVtdLG89W107Zm9yKDtzPHI7KXtsZXQgbD1uLGE9bnVsbCxjPW51bGwsdT0wLGQ9bnVsbCxoPS0xO2Zvcig7czxyJiYhKGE9bC5nbyh0W3NdLnQpKTspby5wdXNoKHRbcysrXSk7Zm9yKDtzPHImJihjPWF8fGwuZ28odFtzXS50KSk7KWE9bnVsbCxsPWMsbC5hY2NlcHRzKCk/KGg9MCxkPWwpOmg+PTAmJmgrKyxzKyssdSsrO2lmKGg8MClzLT11LHM8ciYmKG8ucHVzaCh0W3NdKSxzKyspO2Vsc2V7by5sZW5ndGg+MCYmKGkucHVzaChNaShHYSxlLG8pKSxvPVtdKSxzLT1oLHUtPWg7Y29uc3QgZj1kLnQscD10LnNsaWNlKHMtdSxzKTtpLnB1c2goTWkoZixlLHApKX19cmV0dXJuIG8ubGVuZ3RoPjAmJmkucHVzaChNaShHYSxlLG8pKSxpfWZ1bmN0aW9uIE1pKG4sZSx0KXtjb25zdCByPXRbMF0ucyxzPXRbdC5sZW5ndGgtMV0uZSxpPWUuc2xpY2UocixzKTtyZXR1cm4gbmV3IG4oaSx0KX1jb25zdCBCMD10eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUmJmNvbnNvbGUud2Fybnx8KCgpPT57fSksXzA9InVudGlsIG1hbnVhbCBjYWxsIG9mIGxpbmtpZnkuaW5pdCgpLiBSZWdpc3RlciBhbGwgc2NoZW1lcyBhbmQgcGx1Z2lucyBiZWZvcmUgaW52b2tpbmcgbGlua2lmeSB0aGUgZmlyc3QgdGltZS4iLFg9e3NjYW5uZXI6bnVsbCxwYXJzZXI6bnVsbCx0b2tlblF1ZXVlOltdLHBsdWdpblF1ZXVlOltdLGN1c3RvbVNjaGVtZXM6W10saW5pdGlhbGl6ZWQ6ITF9O2Z1bmN0aW9uIEgwKCl7cmV0dXJuIFRlLmdyb3Vwcz17fSxYLnNjYW5uZXI9bnVsbCxYLnBhcnNlcj1udWxsLFgudG9rZW5RdWV1ZT1bXSxYLnBsdWdpblF1ZXVlPVtdLFguY3VzdG9tU2NoZW1lcz1bXSxYLmluaXRpYWxpemVkPSExLFh9ZnVuY3Rpb24gUWEobixlPSExKXtpZihYLmluaXRpYWxpemVkJiZCMChgbGlua2lmeWpzOiBhbHJlYWR5IGluaXRpYWxpemVkIC0gd2lsbCBub3QgcmVnaXN0ZXIgY3VzdG9tIHNjaGVtZSAiJHtufSIgJHtfMH1gKSwhL15bMC05YS16XSsoLVswLTlhLXpdKykqJC8udGVzdChuKSl0aHJvdyBuZXcgRXJyb3IoYGxpbmtpZnlqczogaW5jb3JyZWN0IHNjaGVtZSBmb3JtYXQuCjEuIE11c3Qgb25seSBjb250YWluIGRpZ2l0cywgbG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMgb3IgIi0iCjIuIENhbm5vdCBzdGFydCBvciBlbmQgd2l0aCAiLSIKMy4gIi0iIGNhbm5vdCByZXBlYXRgKTtYLmN1c3RvbVNjaGVtZXMucHVzaChbbixlXSl9ZnVuY3Rpb24gRjAoKXtYLnNjYW5uZXI9RDAoWC5jdXN0b21TY2hlbWVzKTtmb3IobGV0IG49MDtuPFgudG9rZW5RdWV1ZS5sZW5ndGg7bisrKVgudG9rZW5RdWV1ZVtuXVsxXSh7c2Nhbm5lcjpYLnNjYW5uZXJ9KTtYLnBhcnNlcj16MChYLnNjYW5uZXIudG9rZW5zKTtmb3IobGV0IG49MDtuPFgucGx1Z2luUXVldWUubGVuZ3RoO24rKylYLnBsdWdpblF1ZXVlW25dWzFdKHtzY2FubmVyOlguc2Nhbm5lcixwYXJzZXI6WC5wYXJzZXJ9KTtyZXR1cm4gWC5pbml0aWFsaXplZD0hMCxYfWZ1bmN0aW9uIGFsKG4pe3JldHVybiBYLmluaXRpYWxpemVkfHxGMCgpLCQwKFgucGFyc2VyLnN0YXJ0LG4sc2goWC5zY2FubmVyLnN0YXJ0LG4pKX1hbC5zY2FuPXNoO2Z1bmN0aW9uIG9oKG4sZT1udWxsLHQ9bnVsbCl7aWYoZSYmdHlwZW9mIGU9PSJvYmplY3QiKXtpZih0KXRocm93IEVycm9yKGBsaW5raWZ5anM6IEludmFsaWQgbGluayB0eXBlICR7ZX07IG11c3QgYmUgYSBzdHJpbmdgKTt0PWUsZT1udWxsfWNvbnN0IHI9bmV3IGxsKHQpLHM9YWwobiksaT1bXTtmb3IobGV0IG89MDtvPHMubGVuZ3RoO28rKyl7Y29uc3QgbD1zW29dO2wuaXNMaW5rJiYoIWV8fGwudD09PWUpJiZyLmNoZWNrKGwpJiZpLnB1c2gobC50b0Zvcm1hdHRlZE9iamVjdChyKSl9cmV0dXJuIGl9dmFyIGNsPSJbXDAtIMKg4ZqA4aCO4oCALVx1MjAyOeKBn+OAgF0iLFYwPW5ldyBSZWdFeHAoY2wpLFUwPW5ldyBSZWdFeHAoYCR7Y2x9JGApLGowPW5ldyBSZWdFeHAoY2wsImciKTtmdW5jdGlvbiBxMChuKXtyZXR1cm4gbi5sZW5ndGg9PT0xP25bMF0uaXNMaW5rOm4ubGVuZ3RoPT09MyYmblsxXS5pc0xpbms/WyIoKSIsIltdIl0uaW5jbHVkZXMoblswXS52YWx1ZStuWzJdLnZhbHVlKTohMX1mdW5jdGlvbiBXMChuKXtyZXR1cm4gbmV3IEcoe2tleTpuZXcgcSgiYXV0b2xpbmsiKSxhcHBlbmRUcmFuc2FjdGlvbjooZSx0LHIpPT57Y29uc3Qgcz1lLnNvbWUoYz0+Yy5kb2NDaGFuZ2VkKSYmIXQuZG9jLmVxKHIuZG9jKSxpPWUuc29tZShjPT5jLmdldE1ldGEoInByZXZlbnRBdXRvbGluayIpKTtpZighc3x8aSlyZXR1cm47Y29uc3R7dHI6b309cixsPVl1KHQuZG9jLFsuLi5lXSk7aWYoaWQobCkuZm9yRWFjaCgoe25ld1JhbmdlOmN9KT0+e2NvbnN0IHU9amcoci5kb2MsYyxmPT5mLmlzVGV4dGJsb2NrKTtsZXQgZCxoO2lmKHUubGVuZ3RoPjEpZD11WzBdLGg9ci5kb2MudGV4dEJldHdlZW4oZC5wb3MsZC5wb3MrZC5ub2RlLm5vZGVTaXplLHZvaWQgMCwiICIpO2Vsc2UgaWYodS5sZW5ndGgpe2NvbnN0IGY9ci5kb2MudGV4dEJldHdlZW4oYy5mcm9tLGMudG8sIiAiLCIgIik7aWYoIVUwLnRlc3QoZikpcmV0dXJuO2Q9dVswXSxoPXIuZG9jLnRleHRCZXR3ZWVuKGQucG9zLGMudG8sdm9pZCAwLCIgIil9aWYoZCYmaCl7Y29uc3QgZj1oLnNwbGl0KFYwKS5maWx0ZXIoQm9vbGVhbik7aWYoZi5sZW5ndGg8PTApcmV0dXJuITE7Y29uc3QgcD1mW2YubGVuZ3RoLTFdLG09ZC5wb3MraC5sYXN0SW5kZXhPZihwKTtpZighcClyZXR1cm4hMTtjb25zdCBnPWFsKHApLm1hcCh5PT55LnRvT2JqZWN0KG4uZGVmYXVsdFByb3RvY29sKSk7aWYoIXEwKGcpKXJldHVybiExO2cuZmlsdGVyKHk9PnkuaXNMaW5rKS5tYXAoeT0+KHsuLi55LGZyb206bSt5LnN0YXJ0KzEsdG86bSt5LmVuZCsxfSkpLmZpbHRlcih5PT5yLnNjaGVtYS5tYXJrcy5jb2RlPyFyLmRvYy5yYW5nZUhhc01hcmsoeS5mcm9tLHkudG8sci5zY2hlbWEubWFya3MuY29kZSk6ITApLmZpbHRlcih5PT5uLnZhbGlkYXRlKHkudmFsdWUpKS5maWx0ZXIoeT0+bi5zaG91bGRBdXRvTGluayh5LnZhbHVlKSkuZm9yRWFjaCh5PT57Qm8oeS5mcm9tLHkudG8sci5kb2MpLnNvbWUoaz0+ay5tYXJrLnR5cGU9PT1uLnR5cGUpfHxvLmFkZE1hcmsoeS5mcm9tLHkudG8sbi50eXBlLmNyZWF0ZSh7aHJlZjp5LmhyZWZ9KSl9KX19KSwhIW8uc3RlcHMubGVuZ3RoKXJldHVybiBvfX0pfWZ1bmN0aW9uIEswKG4pe3JldHVybiBuZXcgRyh7a2V5Om5ldyBxKCJoYW5kbGVDbGlja0xpbmsiKSxwcm9wczp7aGFuZGxlQ2xpY2s6KGUsdCxyKT0+e3ZhciBzLGk7aWYoci5idXR0b24hPT0wfHwhZS5lZGl0YWJsZSlyZXR1cm4hMTtsZXQgbz1udWxsO2lmKHIudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpbz1yLnRhcmdldDtlbHNle2NvbnN0IGE9ci50YXJnZXQ7aWYoIWEpcmV0dXJuITE7Y29uc3QgYz1uLmVkaXRvci52aWV3LmRvbTtvPWEuY2xvc2VzdCgiYSIpLG8mJiFjLmNvbnRhaW5zKG8pJiYobz1udWxsKX1pZighbylyZXR1cm4hMTtsZXQgbD0hMTtpZihuLmVuYWJsZUNsaWNrU2VsZWN0aW9uJiYobD1uLmVkaXRvci5jb21tYW5kcy5leHRlbmRNYXJrUmFuZ2Uobi50eXBlLm5hbWUpKSxuLm9wZW5PbkNsaWNrKXtjb25zdCBhPXNkKGUuc3RhdGUsbi50eXBlLm5hbWUpLGM9KHM9by5ocmVmKSE9bnVsbD9zOmEuaHJlZix1PShpPW8udGFyZ2V0KSE9bnVsbD9pOmEudGFyZ2V0O2MmJih3aW5kb3cub3BlbihjLHUpLGw9ITApfXJldHVybiBsfX19KX1mdW5jdGlvbiBKMChuKXtyZXR1cm4gbmV3IEcoe2tleTpuZXcgcSgiaGFuZGxlUGFzdGVMaW5rIikscHJvcHM6e2hhbmRsZVBhc3RlOihlLHQscik9Pntjb25zdHtzaG91bGRBdXRvTGluazpzfT1uLHtzdGF0ZTppfT1lLHtzZWxlY3Rpb246b309aSx7ZW1wdHk6bH09bztpZihsKXJldHVybiExO2xldCBhPSIiO3IuY29udGVudC5mb3JFYWNoKHU9PnthKz11LnRleHRDb250ZW50fSk7Y29uc3QgYz1vaChhLHtkZWZhdWx0UHJvdG9jb2w6bi5kZWZhdWx0UHJvdG9jb2x9KS5maW5kKHU9PnUuaXNMaW5rJiZ1LnZhbHVlPT09YSk7cmV0dXJuIWF8fCFjfHxzIT09dm9pZCAwJiYhcyhjLnZhbHVlKT8hMTpuLmVkaXRvci5jb21tYW5kcy5zZXRNYXJrKG4udHlwZSx7aHJlZjpjLmhyZWZ9KX19fSl9ZnVuY3Rpb24gTnQobixlKXtjb25zdCB0PVsiaHR0cCIsImh0dHBzIiwiZnRwIiwiZnRwcyIsIm1haWx0byIsInRlbCIsImNhbGx0byIsInNtcyIsImNpZCIsInhtcHAiXTtyZXR1cm4gZSYmZS5mb3JFYWNoKHI9Pntjb25zdCBzPXR5cGVvZiByPT0ic3RyaW5nIj9yOnIuc2NoZW1lO3MmJnQucHVzaChzKX0pLCFufHxuLnJlcGxhY2UoajAsIiIpLm1hdGNoKG5ldyBSZWdFeHAoYF4oPzooPzoke3Quam9pbigifCIpfSk6fFteYS16XXxbYS16MC05Ky4tXSsoPzpbXmEteisuLTpdfCQpKWAsImkiKSl9dmFyIEcwPUp0LmNyZWF0ZSh7bmFtZToibGluayIscHJpb3JpdHk6MWUzLGtlZXBPblNwbGl0OiExLGV4aXRhYmxlOiEwLG9uQ3JlYXRlKCl7dGhpcy5vcHRpb25zLnZhbGlkYXRlJiYhdGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rJiYodGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rPXRoaXMub3B0aW9ucy52YWxpZGF0ZSksdGhpcy5vcHRpb25zLnByb3RvY29scy5mb3JFYWNoKG49PntpZih0eXBlb2Ygbj09InN0cmluZyIpe1FhKG4pO3JldHVybn1RYShuLnNjaGVtZSxuLm9wdGlvbmFsU2xhc2hlcyl9KX0sb25EZXN0cm95KCl7SDAoKX0saW5jbHVzaXZlKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdXRvbGlua30sYWRkT3B0aW9ucygpe3JldHVybntvcGVuT25DbGljazohMCxlbmFibGVDbGlja1NlbGVjdGlvbjohMSxsaW5rT25QYXN0ZTohMCxhdXRvbGluazohMCxwcm90b2NvbHM6W10sZGVmYXVsdFByb3RvY29sOiJodHRwIixIVE1MQXR0cmlidXRlczp7dGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciBub2ZvbGxvdyIsY2xhc3M6bnVsbH0saXNBbGxvd2VkVXJpOihuLGUpPT4hIU50KG4sZS5wcm90b2NvbHMpLHZhbGlkYXRlOm49PiEhbixzaG91bGRBdXRvTGluazpuPT57Y29uc3QgZT0vXlthLXpdW2EtejAtOSsuLV0qOlwvXC8vaS50ZXN0KG4pLHQ9L15bYS16XVthLXowLTkrLi1dKjovaS50ZXN0KG4pO2lmKGV8fHQmJiFuLmluY2x1ZGVzKCJAIikpcmV0dXJuITA7Y29uc3Qgcz0obi5pbmNsdWRlcygiQCIpP24uc3BsaXQoIkAiKS5wb3AoKTpuKS5zcGxpdCgvWy8/IzpdLylbMF07cmV0dXJuISgvXlxkezEsM30oXC5cZHsxLDN9KXszfSQvLnRlc3Qocyl8fCEvXC4vLnRlc3QocykpfX19LGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57aHJlZjp7ZGVmYXVsdDpudWxsLHBhcnNlSFRNTChuKXtyZXR1cm4gbi5nZXRBdHRyaWJ1dGUoImhyZWYiKX19LHRhcmdldDp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMudGFyZ2V0fSxyZWw6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLnJlbH0sY2xhc3M6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLmNsYXNzfSx0aXRsZTp7ZGVmYXVsdDpudWxsfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJhW2hyZWZdIixnZXRBdHRyczpuPT57Y29uc3QgZT1uLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3JldHVybiFlfHwhdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShlLHtkZWZhdWx0VmFsaWRhdGU6dD0+ISFOdCh0LHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSk/ITE6bnVsbH19XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVybiB0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKG4uaHJlZix7ZGVmYXVsdFZhbGlkYXRlOmU9PiEhTnQoZSx0aGlzLm9wdGlvbnMucHJvdG9jb2xzKSxwcm90b2NvbHM6dGhpcy5vcHRpb25zLnByb3RvY29scyxkZWZhdWx0UHJvdG9jb2w6dGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbH0pP1siYSIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsbiksMF06WyJhIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyx7Li4ubixocmVmOiIifSksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJsaW5rIixwYXJzZU1hcmtkb3duOihuLGUpPT5lLmFwcGx5TWFyaygibGluayIsZS5wYXJzZUlubGluZShuLnRva2Vuc3x8W10pLHtocmVmOm4uaHJlZix0aXRsZTpuLnRpdGxlfHxudWxsfSkscmVuZGVyTWFya2Rvd246KG4sZSk9Pnt2YXIgdCxyLHMsaTtjb25zdCBvPShyPSh0PW4uYXR0cnMpPT1udWxsP3ZvaWQgMDp0LmhyZWYpIT1udWxsP3I6IiIsbD0oaT0ocz1uLmF0dHJzKT09bnVsbD92b2lkIDA6cy50aXRsZSkhPW51bGw/aToiIixhPWUucmVuZGVyQ2hpbGRyZW4obik7cmV0dXJuIGw/YFske2F9XSgke299ICIke2x9IilgOmBbJHthfV0oJHtvfSlgfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRMaW5rOm49Pih7Y2hhaW46ZX0pPT57Y29uc3R7aHJlZjp0fT1uO3JldHVybiB0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKHQse2RlZmF1bHRWYWxpZGF0ZTpyPT4hIU50KHIsdGhpcy5vcHRpb25zLnByb3RvY29scykscHJvdG9jb2xzOnRoaXMub3B0aW9ucy5wcm90b2NvbHMsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2x9KT9lKCkuc2V0TWFyayh0aGlzLm5hbWUsbikuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCk6ITF9LHRvZ2dsZUxpbms6bj0+KHtjaGFpbjplfSk9Pntjb25zdHtocmVmOnR9PW58fHt9O3JldHVybiB0JiYhdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaSh0LHtkZWZhdWx0VmFsaWRhdGU6cj0+ISFOdChyLHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSk/ITE6ZSgpLnRvZ2dsZU1hcmsodGhpcy5uYW1lLG4se2V4dGVuZEVtcHR5TWFya1JhbmdlOiEwfSkuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCl9LHVuc2V0TGluazooKT0+KHtjaGFpbjpufSk9Pm4oKS51bnNldE1hcmsodGhpcy5uYW1lLHtleHRlbmRFbXB0eU1hcmtSYW5nZTohMH0pLnNldE1ldGEoInByZXZlbnRBdXRvbGluayIsITApLnJ1bigpfX0sYWRkUGFzdGVSdWxlcygpe3JldHVybltxdCh7ZmluZDpuPT57Y29uc3QgZT1bXTtpZihuKXtjb25zdHtwcm90b2NvbHM6dCxkZWZhdWx0UHJvdG9jb2w6cn09dGhpcy5vcHRpb25zLHM9b2gobikuZmlsdGVyKGk9PmkuaXNMaW5rJiZ0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKGkudmFsdWUse2RlZmF1bHRWYWxpZGF0ZTpvPT4hIU50KG8sdCkscHJvdG9jb2xzOnQsZGVmYXVsdFByb3RvY29sOnJ9KSk7cy5sZW5ndGgmJnMuZm9yRWFjaChpPT57dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rKGkudmFsdWUpJiZlLnB1c2goe3RleHQ6aS52YWx1ZSxkYXRhOntocmVmOmkuaHJlZn0saW5kZXg6aS5zdGFydH0pfSl9cmV0dXJuIGV9LHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6bj0+e3ZhciBlO3JldHVybntocmVmOihlPW4uZGF0YSk9PW51bGw/dm9pZCAwOmUuaHJlZn19fSldfSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBuPVtdLHtwcm90b2NvbHM6ZSxkZWZhdWx0UHJvdG9jb2w6dH09dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLm9wdGlvbnMuYXV0b2xpbmsmJm4ucHVzaChXMCh7dHlwZTp0aGlzLnR5cGUsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsdmFsaWRhdGU6cj0+dGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShyLHtkZWZhdWx0VmFsaWRhdGU6cz0+ISFOdChzLGUpLHByb3RvY29sczplLGRlZmF1bHRQcm90b2NvbDp0fSksc2hvdWxkQXV0b0xpbms6dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rfSkpLG4ucHVzaChLMCh7dHlwZTp0aGlzLnR5cGUsZWRpdG9yOnRoaXMuZWRpdG9yLG9wZW5PbkNsaWNrOnRoaXMub3B0aW9ucy5vcGVuT25DbGljaz09PSJ3aGVuTm90RWRpdGFibGUiPyEwOnRoaXMub3B0aW9ucy5vcGVuT25DbGljayxlbmFibGVDbGlja1NlbGVjdGlvbjp0aGlzLm9wdGlvbnMuZW5hYmxlQ2xpY2tTZWxlY3Rpb259KSksdGhpcy5vcHRpb25zLmxpbmtPblBhc3RlJiZuLnB1c2goSjAoe2VkaXRvcjp0aGlzLmVkaXRvcixkZWZhdWx0UHJvdG9jb2w6dGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbCx0eXBlOnRoaXMudHlwZSxzaG91bGRBdXRvTGluazp0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbmt9KSksbn19KSxRMD1PYmplY3QuZGVmaW5lUHJvcGVydHksWDA9KG4sZSk9Pntmb3IodmFyIHQgaW4gZSlRMChuLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX0sWTA9Imxpc3RJdGVtIixYYT0idGV4dFN0eWxlIixZYT0vXlxzKihbLSsqXSlccyQvLGxoPVNlLmNyZWF0ZSh7bmFtZToiYnVsbGV0TGlzdCIsYWRkT3B0aW9ucygpe3JldHVybntpdGVtVHlwZU5hbWU6Imxpc3RJdGVtIixIVE1MQXR0cmlidXRlczp7fSxrZWVwTWFya3M6ITEsa2VlcEF0dHJpYnV0ZXM6ITF9fSxncm91cDoiYmxvY2sgbGlzdCIsY29udGVudCgpe3JldHVybmAke3RoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWV9K2B9LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJ1bCJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsidWwiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdCIscGFyc2VNYXJrZG93bjoobixlKT0+bi50eXBlIT09Imxpc3QifHxuLm9yZGVyZWQ/W106e3R5cGU6ImJ1bGxldExpc3QiLGNvbnRlbnQ6bi5pdGVtcz9lLnBhcnNlQ2hpbGRyZW4obi5pdGVtcyk6W119LHJlbmRlck1hcmtkb3duOihuLGUpPT5uLmNvbnRlbnQ/ZS5yZW5kZXJDaGlsZHJlbihuLmNvbnRlbnQsYApgKToiIixtYXJrZG93bk9wdGlvbnM6e2luZGVudHNDb250ZW50OiEwfSxhZGRDb21tYW5kcygpe3JldHVybnt0b2dnbGVCdWxsZXRMaXN0OigpPT4oe2NvbW1hbmRzOm4sY2hhaW46ZX0pPT50aGlzLm9wdGlvbnMua2VlcEF0dHJpYnV0ZXM/ZSgpLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcykudXBkYXRlQXR0cmlidXRlcyhZMCx0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFhhKSkucnVuKCk6bi50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lLHRoaXMub3B0aW9ucy5rZWVwTWFya3MpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC04IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQnVsbGV0TGlzdCgpfX0sYWRkSW5wdXRSdWxlcygpe2xldCBuPXBuKHtmaW5kOllhLHR5cGU6dGhpcy50eXBlfSk7cmV0dXJuKHRoaXMub3B0aW9ucy5rZWVwTWFya3N8fHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcykmJihuPXBuKHtmaW5kOllhLHR5cGU6dGhpcy50eXBlLGtlZXBNYXJrczp0aGlzLm9wdGlvbnMua2VlcE1hcmtzLGtlZXBBdHRyaWJ1dGVzOnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcyxnZXRBdHRyaWJ1dGVzOigpPT50aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFhhKSxlZGl0b3I6dGhpcy5lZGl0b3J9KSksW25dfX0pLGFoPVNlLmNyZWF0ZSh7bmFtZToibGlzdEl0ZW0iLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e30sYnVsbGV0TGlzdFR5cGVOYW1lOiJidWxsZXRMaXN0IixvcmRlcmVkTGlzdFR5cGVOYW1lOiJvcmRlcmVkTGlzdCJ9fSxjb250ZW50OiJwYXJhZ3JhcGggYmxvY2sqIixkZWZpbmluZzohMCxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoibGkifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bImxpIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0sbWFya2Rvd25Ub2tlbk5hbWU6Imxpc3RfaXRlbSIscGFyc2VNYXJrZG93bjoobixlKT0+e3ZhciB0O2lmKG4udHlwZSE9PSJsaXN0X2l0ZW0iKXJldHVybltdO2NvbnN0IHI9KHQ9ZS5wYXJzZUJsb2NrQ2hpbGRyZW4pIT1udWxsP3Q6ZS5wYXJzZUNoaWxkcmVuO2xldCBzPVtdO2lmKG4udG9rZW5zJiZuLnRva2Vucy5sZW5ndGg+MClpZihuLnRva2Vucy5zb21lKG89Pm8udHlwZT09PSJwYXJhZ3JhcGgiKSlzPXIobi50b2tlbnMpO2Vsc2V7Y29uc3Qgbz1uLnRva2Vuc1swXTtpZihvJiZvLnR5cGU9PT0idGV4dCImJm8udG9rZW5zJiZvLnRva2Vucy5sZW5ndGg+MCl7aWYocz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDplLnBhcnNlSW5saW5lKG8udG9rZW5zKX1dLG4udG9rZW5zLmxlbmd0aD4xKXtjb25zdCBhPW4udG9rZW5zLnNsaWNlKDEpLGM9cihhKTtzLnB1c2goLi4uYyl9fWVsc2Ugcz1yKG4udG9rZW5zKX1yZXR1cm4gcy5sZW5ndGg9PT0wJiYocz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbXX1dKSx7dHlwZToibGlzdEl0ZW0iLGNvbnRlbnQ6c319LHJlbmRlck1hcmtkb3duOihuLGUsdCk9PlZvKG4sZSxyPT57dmFyIHMsaTtyZXR1cm4gci5wYXJlbnRUeXBlPT09ImJ1bGxldExpc3QiPyItICI6ci5wYXJlbnRUeXBlPT09Im9yZGVyZWRMaXN0Ij9gJHsoKChpPShzPXIubWV0YSk9PW51bGw/dm9pZCAwOnMucGFyZW50QXR0cnMpPT1udWxsP3ZvaWQgMDppLnN0YXJ0KXx8MSkrci5pbmRleH0uIGA6Ii0gIn0sdCksYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57RW50ZXI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNwbGl0TGlzdEl0ZW0odGhpcy5uYW1lKSxUYWI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNpbmtMaXN0SXRlbSh0aGlzLm5hbWUpLCJTaGlmdC1UYWIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5saWZ0TGlzdEl0ZW0odGhpcy5uYW1lKX19fSksWjA9e307WDAoWjAse2ZpbmRMaXN0SXRlbVBvczooKT0+YXIsZ2V0TmV4dExpc3REZXB0aDooKT0+dWwsaGFuZGxlQmFja3NwYWNlOigpPT5sbyxoYW5kbGVEZWxldGU6KCk9PmFvLGhhc0xpc3RCZWZvcmU6KCk9PmNoLGhhc0xpc3RJdGVtQWZ0ZXI6KCk9PmV4LGhhc0xpc3RJdGVtQmVmb3JlOigpPT51aCxsaXN0SXRlbUhhc1N1Ykxpc3Q6KCk9PmRoLG5leHRMaXN0SXNEZWVwZXI6KCk9PmhoLG5leHRMaXN0SXNIaWdoZXI6KCk9PmZofSk7dmFyIGFyPShuLGUpPT57Y29uc3R7JGZyb206dH09ZS5zZWxlY3Rpb24scj1pZShuLGUuc2NoZW1hKTtsZXQgcz1udWxsLGk9dC5kZXB0aCxvPXQucG9zLGw9bnVsbDtmb3IoO2k+MCYmbD09PW51bGw7KXM9dC5ub2RlKGkpLHMudHlwZT09PXI/bD1pOihpLT0xLG8tPTEpO3JldHVybiBsPT09bnVsbD9udWxsOnskcG9zOmUuZG9jLnJlc29sdmUobyksZGVwdGg6bH19LHVsPShuLGUpPT57Y29uc3QgdD1hcihuLGUpO2lmKCF0KXJldHVybiExO2NvbnN0WyxyXT10eShlLG4sdC4kcG9zLnBvcys0KTtyZXR1cm4gcn0sY2g9KG4sZSx0KT0+e2NvbnN0eyRhbmNob3I6cn09bi5zZWxlY3Rpb24scz1NYXRoLm1heCgwLHIucG9zLTIpLGk9bi5kb2MucmVzb2x2ZShzKS5ub2RlKCk7cmV0dXJuISghaXx8IXQuaW5jbHVkZXMoaS50eXBlLm5hbWUpKX0sdWg9KG4sZSk9Pnt2YXIgdDtjb25zdHskYW5jaG9yOnJ9PWUuc2VsZWN0aW9uLHM9ZS5kb2MucmVzb2x2ZShyLnBvcy0yKTtyZXR1cm4hKHMuaW5kZXgoKT09PTB8fCgodD1zLm5vZGVCZWZvcmUpPT1udWxsP3ZvaWQgMDp0LnR5cGUubmFtZSkhPT1uKX0sZGg9KG4sZSx0KT0+e2lmKCF0KXJldHVybiExO2NvbnN0IHI9aWUobixlLnNjaGVtYSk7bGV0IHM9ITE7cmV0dXJuIHQuZGVzY2VuZGFudHMoaT0+e2kudHlwZT09PXImJihzPSEwKX0pLHN9LGxvPShuLGUsdCk9PntpZihuLmNvbW1hbmRzLnVuZG9JbnB1dFJ1bGUoKSlyZXR1cm4hMDtpZihuLnN0YXRlLnNlbGVjdGlvbi5mcm9tIT09bi5zdGF0ZS5zZWxlY3Rpb24udG8pcmV0dXJuITE7aWYoIUV0KG4uc3RhdGUsZSkmJmNoKG4uc3RhdGUsZSx0KSl7Y29uc3R7JGFuY2hvcjpsfT1uLnN0YXRlLnNlbGVjdGlvbixhPW4uc3RhdGUuZG9jLnJlc29sdmUobC5iZWZvcmUoKS0xKSxjPVtdO2Eubm9kZSgpLmRlc2NlbmRhbnRzKChoLGYpPT57aC50eXBlLm5hbWU9PT1lJiZjLnB1c2goe25vZGU6aCxwb3M6Zn0pfSk7Y29uc3QgdT1jLmF0KC0xKTtpZighdSlyZXR1cm4hMTtjb25zdCBkPW4uc3RhdGUuZG9jLnJlc29sdmUoYS5zdGFydCgpK3UucG9zKzEpO3JldHVybiBuLmNoYWluKCkuY3V0KHtmcm9tOmwuc3RhcnQoKS0xLHRvOmwuZW5kKCkrMX0sZC5lbmQoKSkuam9pbkZvcndhcmQoKS5ydW4oKX1pZighRXQobi5zdGF0ZSxlKXx8IWl5KG4uc3RhdGUpKXJldHVybiExO2NvbnN0IHI9YXIoZSxuLnN0YXRlKTtpZighcilyZXR1cm4hMTtjb25zdCBpPW4uc3RhdGUuZG9jLnJlc29sdmUoci4kcG9zLnBvcy0yKS5ub2RlKHIuZGVwdGgpLG89ZGgoZSxuLnN0YXRlLGkpO3JldHVybiB1aChlLG4uc3RhdGUpJiYhbz9uLmNvbW1hbmRzLmpvaW5JdGVtQmFja3dhcmQoKTpuLmNoYWluKCkubGlmdExpc3RJdGVtKGUpLnJ1bigpfSxoaD0obixlKT0+e2NvbnN0IHQ9dWwobixlKSxyPWFyKG4sZSk7cmV0dXJuIXJ8fCF0PyExOnQ+ci5kZXB0aH0sZmg9KG4sZSk9Pntjb25zdCB0PXVsKG4sZSkscj1hcihuLGUpO3JldHVybiFyfHwhdD8hMTp0PHIuZGVwdGh9LGFvPShuLGUpPT57aWYoIUV0KG4uc3RhdGUsZSl8fCFzeShuLnN0YXRlLGUpKXJldHVybiExO2NvbnN0e3NlbGVjdGlvbjp0fT1uLnN0YXRlLHskZnJvbTpyLCR0bzpzfT10O3JldHVybiF0LmVtcHR5JiZyLnNhbWVQYXJlbnQocyk/ITE6aGgoZSxuLnN0YXRlKT9uLmNoYWluKCkuZm9jdXMobi5zdGF0ZS5zZWxlY3Rpb24uZnJvbSs0KS5saWZ0KGUpLmpvaW5CYWNrd2FyZCgpLnJ1bigpOmZoKGUsbi5zdGF0ZSk/bi5jaGFpbigpLmpvaW5Gb3J3YXJkKCkuam9pbkJhY2t3YXJkKCkucnVuKCk6bi5jb21tYW5kcy5qb2luSXRlbUZvcndhcmQoKX0sZXg9KG4sZSk9Pnt2YXIgdDtjb25zdHskYW5jaG9yOnJ9PWUuc2VsZWN0aW9uLHM9ZS5kb2MucmVzb2x2ZShyLnBvcy1yLnBhcmVudE9mZnNldC0yKTtyZXR1cm4hKHMuaW5kZXgoKT09PXMucGFyZW50LmNoaWxkQ291bnQtMXx8KCh0PXMubm9kZUFmdGVyKT09bnVsbD92b2lkIDA6dC50eXBlLm5hbWUpIT09bil9LHBoPXRlLmNyZWF0ZSh7bmFtZToibGlzdEtleW1hcCIsYWRkT3B0aW9ucygpe3JldHVybntsaXN0VHlwZXM6W3tpdGVtTmFtZToibGlzdEl0ZW0iLHdyYXBwZXJOYW1lczpbImJ1bGxldExpc3QiLCJvcmRlcmVkTGlzdCJdfSx7aXRlbU5hbWU6InRhc2tJdGVtIix3cmFwcGVyTmFtZXM6WyJ0YXNrTGlzdCJdfV19fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybntEZWxldGU6KHtlZGl0b3I6bn0pPT57bGV0IGU9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOnR9KT0+e24uc3RhdGUuc2NoZW1hLm5vZGVzW3RdIT09dm9pZCAwJiZhbyhuLHQpJiYoZT0hMCl9KSxlfSwiTW9kLURlbGV0ZSI6KHtlZGl0b3I6bn0pPT57bGV0IGU9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOnR9KT0+e24uc3RhdGUuc2NoZW1hLm5vZGVzW3RdIT09dm9pZCAwJiZhbyhuLHQpJiYoZT0hMCl9KSxlfSxCYWNrc3BhY2U6KHtlZGl0b3I6bn0pPT57bGV0IGU9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOnQsd3JhcHBlck5hbWVzOnJ9KT0+e24uc3RhdGUuc2NoZW1hLm5vZGVzW3RdIT09dm9pZCAwJiZsbyhuLHQscikmJihlPSEwKX0pLGV9LCJNb2QtQmFja3NwYWNlIjooe2VkaXRvcjpufSk9PntsZXQgZT0hMTtyZXR1cm4gdGhpcy5vcHRpb25zLmxpc3RUeXBlcy5mb3JFYWNoKCh7aXRlbU5hbWU6dCx3cmFwcGVyTmFtZXM6cn0pPT57bi5zdGF0ZS5zY2hlbWEubm9kZXNbdF0hPT12b2lkIDAmJmxvKG4sdCxyKSYmKGU9ITApfSksZX19fX0pLFphPS9eKFxzKikoXGQrKVwuXHMrKC4qKSQvLHR4PS9eXHMvO2Z1bmN0aW9uIG54KG4pe2NvbnN0IGU9bi50cmltU3RhcnQoKTtyZXR1cm4vXlstKypdXHMrLy50ZXN0KGUpfHwvXlxkK1wuXHMrLy50ZXN0KGUpfHwvXj5ccz8vLnRlc3QoZSl8fC9eYGBgLy50ZXN0KGUpfHwvXn5+fi8udGVzdChlKX1mdW5jdGlvbiByeChuKXtjb25zdCBlPVtdLHQ9W107bGV0IHI9ITE7cmV0dXJuIG4uZm9yRWFjaChzPT57aWYocil7dC5wdXNoKHMpO3JldHVybn1pZihzLnRyaW0oKT09PSIiKXtyPSEwLHQucHVzaChzKTtyZXR1cm59aWYoZS5sZW5ndGg+MCYmbngocykpe3I9ITAsdC5wdXNoKHMpO3JldHVybn1lLnB1c2gocyl9KSx7cGFyYWdyYXBoTGluZXM6ZSxibG9ja0xpbmVzOnR9fWZ1bmN0aW9uIHN4KG4pe2NvbnN0IGU9W107bGV0IHQ9MCxyPTA7Zm9yKDt0PG4ubGVuZ3RoOyl7Y29uc3Qgcz1uW3RdLGk9cy5tYXRjaChaYSk7aWYoIWkpYnJlYWs7Y29uc3RbLG8sbCxhXT1pLGM9by5sZW5ndGgsdT1bYV07bGV0IGQ9dCsxO2NvbnN0IGg9W3NdO2xldCBmPSExO2Zvcig7ZDxuLmxlbmd0aDspe2NvbnN0IHA9bltkXTtpZihwLm1hdGNoKFphKSlicmVhaztpZihwLnRyaW0oKT09PSIiKWgucHVzaChwKSx1LnB1c2goIiIpLGY9ITAsZCs9MTtlbHNlIGlmKHAubWF0Y2godHgpKWgucHVzaChwKSx1LnB1c2gocC5zbGljZShjKzIpKSxkKz0xO2Vsc2V7aWYoZilicmVhaztoLnB1c2gocCksdS5wdXNoKHApLGQrPTF9fWUucHVzaCh7aW5kZW50OmMsbnVtYmVyOnBhcnNlSW50KGwsMTApLGNvbnRlbnQ6dS5qb2luKGAKYCkudHJpbSgpLGNvbnRlbnRMaW5lczp1LHJhdzpoLmpvaW4oYApgKX0pLHI9ZCx0PWR9cmV0dXJuW2Uscl19ZnVuY3Rpb24gbWgobixlLHQpe2NvbnN0IHI9W107bGV0IHM9MDtmb3IoO3M8bi5sZW5ndGg7KXtjb25zdCBpPW5bc107aWYoaS5pbmRlbnQ9PT1lKXtjb25zdHtwYXJhZ3JhcGhMaW5lczpvLGJsb2NrTGluZXM6bH09cngoaS5jb250ZW50TGluZXMpLGE9by5qb2luKGAKYCkudHJpbSgpLGM9W107YSYmYy5wdXNoKHt0eXBlOiJwYXJhZ3JhcGgiLHJhdzphLHRva2Vuczp0LmlubGluZVRva2VucyhhKX0pO2NvbnN0IHU9bC5qb2luKGAKYCkudHJpbSgpO2lmKHUpe2NvbnN0IGY9dC5ibG9ja1Rva2Vucyh1KTtjLnB1c2goLi4uZil9bGV0IGQ9cysxO2NvbnN0IGg9W107Zm9yKDtkPG4ubGVuZ3RoJiZuW2RdLmluZGVudD5lOyloLnB1c2gobltkXSksZCs9MTtpZihoLmxlbmd0aD4wKXtjb25zdCBmPU1hdGgubWluKC4uLmgubWFwKG09Pm0uaW5kZW50KSkscD1taChoLGYsdCk7Yy5wdXNoKHt0eXBlOiJsaXN0IixvcmRlcmVkOiEwLHN0YXJ0OmhbMF0ubnVtYmVyLGl0ZW1zOnAscmF3OmgubWFwKG09Pm0ucmF3KS5qb2luKGAKYCl9KX1yLnB1c2goe3R5cGU6Imxpc3RfaXRlbSIscmF3OmkucmF3LHRva2VuczpjfSkscz1kfWVsc2Ugcys9MX1yZXR1cm4gcn1mdW5jdGlvbiBpeChuLGUpe3JldHVybiBuLm1hcCh0PT57aWYodC50eXBlIT09Imxpc3RfaXRlbSIpcmV0dXJuIGUucGFyc2VDaGlsZHJlbihbdF0pWzBdO2NvbnN0IHI9W107cmV0dXJuIHQudG9rZW5zJiZ0LnRva2Vucy5sZW5ndGg+MCYmdC50b2tlbnMuZm9yRWFjaChzPT57aWYocy50eXBlPT09InBhcmFncmFwaCJ8fHMudHlwZT09PSJsaXN0Inx8cy50eXBlPT09ImJsb2NrcXVvdGUifHxzLnR5cGU9PT0iY29kZSIpci5wdXNoKC4uLmUucGFyc2VDaGlsZHJlbihbc10pKTtlbHNlIGlmKHMudHlwZT09PSJ0ZXh0IiYmcy50b2tlbnMpe2NvbnN0IGk9ZS5wYXJzZUNoaWxkcmVuKFtzXSk7ci5wdXNoKHt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6aX0pfWVsc2V7Y29uc3QgaT1lLnBhcnNlQ2hpbGRyZW4oW3NdKTtpLmxlbmd0aD4wJiZyLnB1c2goLi4uaSl9fSkse3R5cGU6Imxpc3RJdGVtIixjb250ZW50OnJ9fSl9dmFyIG94PSJsaXN0SXRlbSIsZWM9InRleHRTdHlsZSIsdGM9L14oXGQrKVwuXHMkLyxnaD1TZS5jcmVhdGUoe25hbWU6Im9yZGVyZWRMaXN0IixhZGRPcHRpb25zKCl7cmV0dXJue2l0ZW1UeXBlTmFtZToibGlzdEl0ZW0iLEhUTUxBdHRyaWJ1dGVzOnt9LGtlZXBNYXJrczohMSxrZWVwQXR0cmlidXRlczohMX19LGdyb3VwOiJibG9jayBsaXN0Iixjb250ZW50KCl7cmV0dXJuYCR7dGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZX0rYH0sYWRkQXR0cmlidXRlcygpe3JldHVybntzdGFydDp7ZGVmYXVsdDoxLHBhcnNlSFRNTDpuPT5uLmhhc0F0dHJpYnV0ZSgic3RhcnQiKT9wYXJzZUludChuLmdldEF0dHJpYnV0ZSgic3RhcnQiKXx8IiIsMTApOjF9LHR5cGU6e2RlZmF1bHQ6bnVsbCxwYXJzZUhUTUw6bj0+bi5nZXRBdHRyaWJ1dGUoInR5cGUiKX19fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoib2wifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtjb25zdHtzdGFydDplLC4uLnR9PW47cmV0dXJuIGU9PT0xP1sib2wiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQpLDBdOlsib2wiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdCIscGFyc2VNYXJrZG93bjoobixlKT0+e2lmKG4udHlwZSE9PSJsaXN0Inx8IW4ub3JkZXJlZClyZXR1cm5bXTtjb25zdCB0PW4uc3RhcnR8fDEscj1uLml0ZW1zP2l4KG4uaXRlbXMsZSk6W107cmV0dXJuIHQhPT0xP3t0eXBlOiJvcmRlcmVkTGlzdCIsYXR0cnM6e3N0YXJ0OnR9LGNvbnRlbnQ6cn06e3R5cGU6Im9yZGVyZWRMaXN0Iixjb250ZW50OnJ9fSxyZW5kZXJNYXJrZG93bjoobixlKT0+bi5jb250ZW50P2UucmVuZGVyQ2hpbGRyZW4obi5jb250ZW50LGAKYCk6IiIsbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6Im9yZGVyZWRMaXN0IixsZXZlbDoiYmxvY2siLHN0YXJ0Om49Pntjb25zdCBlPW4ubWF0Y2goL14oXHMqKShcZCspXC5ccysvKSx0PWU/LmluZGV4O3JldHVybiB0IT09dm9pZCAwP3Q6LTF9LHRva2VuaXplOihuLGUsdCk9Pnt2YXIgcjtjb25zdCBzPW4uc3BsaXQoYApgKSxbaSxvXT1zeChzKTtpZihpLmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IGw9bWgoaSwwLHQpO3JldHVybiBsLmxlbmd0aD09PTA/dm9pZCAwOnt0eXBlOiJsaXN0IixvcmRlcmVkOiEwLHN0YXJ0Oigocj1pWzBdKT09bnVsbD92b2lkIDA6ci5udW1iZXIpfHwxLGl0ZW1zOmwscmF3OnMuc2xpY2UoMCxvKS5qb2luKGAKYCl9fX0sbWFya2Rvd25PcHRpb25zOntpbmRlbnRzQ29udGVudDohMH0sYWRkQ29tbWFuZHMoKXtyZXR1cm57dG9nZ2xlT3JkZXJlZExpc3Q6KCk9Pih7Y29tbWFuZHM6bixjaGFpbjplfSk9PnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcz9lKCkudG9nZ2xlTGlzdCh0aGlzLm5hbWUsdGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZSx0aGlzLm9wdGlvbnMua2VlcE1hcmtzKS51cGRhdGVBdHRyaWJ1dGVzKG94LHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoZWMpKS5ydW4oKTpuLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcyl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LTciOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVPcmRlcmVkTGlzdCgpfX0sYWRkSW5wdXRSdWxlcygpe2xldCBuPXBuKHtmaW5kOnRjLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtzdGFydDorZVsxXX0pLGpvaW5QcmVkaWNhdGU6KGUsdCk9PnQuY2hpbGRDb3VudCt0LmF0dHJzLnN0YXJ0PT09K2VbMV19KTtyZXR1cm4odGhpcy5vcHRpb25zLmtlZXBNYXJrc3x8dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzKSYmKG49cG4oe2ZpbmQ6dGMsdHlwZTp0aGlzLnR5cGUsa2VlcE1hcmtzOnRoaXMub3B0aW9ucy5rZWVwTWFya3Msa2VlcEF0dHJpYnV0ZXM6dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzLGdldEF0dHJpYnV0ZXM6ZT0+KHtzdGFydDorZVsxXSwuLi50aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKGVjKX0pLGpvaW5QcmVkaWNhdGU6KGUsdCk9PnQuY2hpbGRDb3VudCt0LmF0dHJzLnN0YXJ0PT09K2VbMV0sZWRpdG9yOnRoaXMuZWRpdG9yfSkpLFtuXX19KSxseD0vXlxzKihcWyhbKCB8eF0pP1xdKVxzJC8sYXg9U2UuY3JlYXRlKHtuYW1lOiJ0YXNrSXRlbSIsYWRkT3B0aW9ucygpe3JldHVybntuZXN0ZWQ6ITEsSFRNTEF0dHJpYnV0ZXM6e30sdGFza0xpc3RUeXBlTmFtZToidGFza0xpc3QiLGExMXk6dm9pZCAwfX0sY29udGVudCgpe3JldHVybiB0aGlzLm9wdGlvbnMubmVzdGVkPyJwYXJhZ3JhcGggYmxvY2sqIjoicGFyYWdyYXBoKyJ9LGRlZmluaW5nOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57Y2hlY2tlZDp7ZGVmYXVsdDohMSxrZWVwT25TcGxpdDohMSxwYXJzZUhUTUw6bj0+e2NvbnN0IGU9bi5nZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIpO3JldHVybiBlPT09IiJ8fGU9PT0idHJ1ZSJ9LHJlbmRlckhUTUw6bj0+KHsiZGF0YS1jaGVja2VkIjpuLmNoZWNrZWR9KX19fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzpgbGlbZGF0YS10eXBlPSIke3RoaXMubmFtZX0iXWAscHJpb3JpdHk6NTF9XX0scmVuZGVySFRNTCh7bm9kZTpuLEhUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bImxpIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlLHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9KSxbImxhYmVsIixbImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNoZWNrZWQ6bi5hdHRycy5jaGVja2VkPyJjaGVja2VkIjpudWxsfV0sWyJzcGFuIl1dLFsiZGl2IiwwXV19LHBhcnNlTWFya2Rvd246KG4sZSk9Pntjb25zdCB0PVtdO2lmKG4udG9rZW5zJiZuLnRva2Vucy5sZW5ndGg+MD90LnB1c2goZS5jcmVhdGVOb2RlKCJwYXJhZ3JhcGgiLHt9LGUucGFyc2VJbmxpbmUobi50b2tlbnMpKSk6bi50ZXh0P3QucHVzaChlLmNyZWF0ZU5vZGUoInBhcmFncmFwaCIse30sW2UuY3JlYXRlTm9kZSgidGV4dCIse3RleHQ6bi50ZXh0fSldKSk6dC5wdXNoKGUuY3JlYXRlTm9kZSgicGFyYWdyYXBoIix7fSxbXSkpLG4ubmVzdGVkVG9rZW5zJiZuLm5lc3RlZFRva2Vucy5sZW5ndGg+MCl7Y29uc3Qgcj1lLnBhcnNlQ2hpbGRyZW4obi5uZXN0ZWRUb2tlbnMpO3QucHVzaCguLi5yKX1yZXR1cm4gZS5jcmVhdGVOb2RlKCJ0YXNrSXRlbSIse2NoZWNrZWQ6bi5jaGVja2VkfHwhMX0sdCl9LHJlbmRlck1hcmtkb3duOihuLGUpPT57dmFyIHQ7Y29uc3Qgcz1gLSBbJHsodD1uLmF0dHJzKSE9bnVsbCYmdC5jaGVja2VkPyJ4IjoiICJ9XSBgO3JldHVybiBWbyhuLGUscyl9LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7Y29uc3Qgbj17RW50ZXI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNwbGl0TGlzdEl0ZW0odGhpcy5uYW1lKSwiU2hpZnQtVGFiIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMubGlmdExpc3RJdGVtKHRoaXMubmFtZSl9O3JldHVybiB0aGlzLm9wdGlvbnMubmVzdGVkP3suLi5uLFRhYjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2lua0xpc3RJdGVtKHRoaXMubmFtZSl9Om59LGFkZE5vZGVWaWV3KCl7cmV0dXJuKHtub2RlOm4sSFRNTEF0dHJpYnV0ZXM6ZSxnZXRQb3M6dCxlZGl0b3I6cn0pPT57Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWQ9Pnt2YXIgaCxmO2wuYXJpYUxhYmVsPSgoZj0oaD10aGlzLm9wdGlvbnMuYTExeSk9PW51bGw/dm9pZCAwOmguY2hlY2tib3hMYWJlbCk9PW51bGw/dm9pZCAwOmYuY2FsbChoLGQsbC5jaGVja2VkKSl8fGBUYXNrIGl0ZW0gY2hlY2tib3ggZm9yICR7ZC50ZXh0Q29udGVudHx8ImVtcHR5IHRhc2sgaXRlbSJ9YH07YyhuKSxpLmNvbnRlbnRFZGl0YWJsZT0iZmFsc2UiLGwudHlwZT0iY2hlY2tib3giLGwuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixkPT5kLnByZXZlbnREZWZhdWx0KCkpLGwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixkPT57aWYoIXIuaXNFZGl0YWJsZSYmIXRoaXMub3B0aW9ucy5vblJlYWRPbmx5Q2hlY2tlZCl7bC5jaGVja2VkPSFsLmNoZWNrZWQ7cmV0dXJufWNvbnN0e2NoZWNrZWQ6aH09ZC50YXJnZXQ7ci5pc0VkaXRhYmxlJiZ0eXBlb2YgdD09ImZ1bmN0aW9uIiYmci5jaGFpbigpLmZvY3VzKHZvaWQgMCx7c2Nyb2xsSW50b1ZpZXc6ITF9KS5jb21tYW5kKCh7dHI6Zn0pPT57Y29uc3QgcD10KCk7aWYodHlwZW9mIHAhPSJudW1iZXIiKXJldHVybiExO2NvbnN0IG09Zi5kb2Mubm9kZUF0KHApO3JldHVybiBmLnNldE5vZGVNYXJrdXAocCx2b2lkIDAsey4uLm0/LmF0dHJzLGNoZWNrZWQ6aH0pLCEwfSkucnVuKCksIXIuaXNFZGl0YWJsZSYmdGhpcy5vcHRpb25zLm9uUmVhZE9ubHlDaGVja2VkJiYodGhpcy5vcHRpb25zLm9uUmVhZE9ubHlDaGVja2VkKG4saCl8fChsLmNoZWNrZWQ9IWwuY2hlY2tlZCkpfSksT2JqZWN0LmVudHJpZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzKS5mb3JFYWNoKChbZCxoXSk9PntzLnNldEF0dHJpYnV0ZShkLGgpfSkscy5kYXRhc2V0LmNoZWNrZWQ9bi5hdHRycy5jaGVja2VkLGwuY2hlY2tlZD1uLmF0dHJzLmNoZWNrZWQsaS5hcHBlbmQobCxvKSxzLmFwcGVuZChpLGEpLE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtkLGhdKT0+e3Muc2V0QXR0cmlidXRlKGQsaCl9KTtsZXQgdT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKTtyZXR1cm57ZG9tOnMsY29udGVudERPTTphLHVwZGF0ZTpkPT57aWYoZC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO3MuZGF0YXNldC5jaGVja2VkPWQuYXR0cnMuY2hlY2tlZCxsLmNoZWNrZWQ9ZC5hdHRycy5jaGVja2VkLGMoZCk7Y29uc3QgaD1yLmV4dGVuc2lvbk1hbmFnZXIuYXR0cmlidXRlcyxmPWVyKGQsaCkscD1uZXcgU2V0KE9iamVjdC5rZXlzKGYpKSxtPXRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcztyZXR1cm4gdS5mb3JFYWNoKGc9PntwLmhhcyhnKXx8KGcgaW4gbT9zLnNldEF0dHJpYnV0ZShnLG1bZ10pOnMucmVtb3ZlQXR0cmlidXRlKGcpKX0pLE9iamVjdC5lbnRyaWVzKGYpLmZvckVhY2goKFtnLHldKT0+e3k9PW51bGw/ZyBpbiBtP3Muc2V0QXR0cmlidXRlKGcsbVtnXSk6cy5yZW1vdmVBdHRyaWJ1dGUoZyk6cy5zZXRBdHRyaWJ1dGUoZyx5KX0pLHU9cCwhMH19fX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltwbih7ZmluZDpseCx0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOm49Pih7Y2hlY2tlZDpuW24ubGVuZ3RoLTFdPT09IngifSl9KV19fSksY3g9U2UuY3JlYXRlKHtuYW1lOiJ0YXNrTGlzdCIsYWRkT3B0aW9ucygpe3JldHVybntpdGVtVHlwZU5hbWU6InRhc2tJdGVtIixIVE1MQXR0cmlidXRlczp7fX19LGdyb3VwOiJibG9jayBsaXN0Iixjb250ZW50KCl7cmV0dXJuYCR7dGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZX0rYH0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6YHVsW2RhdGEtdHlwZT0iJHt0aGlzLm5hbWV9Il1gLHByaW9yaXR5OjUxfV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bInVsIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuLHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9KSwwXX0scGFyc2VNYXJrZG93bjoobixlKT0+ZS5jcmVhdGVOb2RlKCJ0YXNrTGlzdCIse30sZS5wYXJzZUNoaWxkcmVuKG4uaXRlbXN8fFtdKSkscmVuZGVyTWFya2Rvd246KG4sZSk9Pm4uY29udGVudD9lLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCxgCmApOiIiLG1hcmtkb3duVG9rZW5pemVyOntuYW1lOiJ0YXNrTGlzdCIsbGV2ZWw6ImJsb2NrIixzdGFydChuKXt2YXIgZTtjb25zdCB0PShlPW4ubWF0Y2goL15ccypbLSsqXVxzK1xbKFsgeFhdKVxdXHMrLykpPT1udWxsP3ZvaWQgMDplLmluZGV4O3JldHVybiB0IT09dm9pZCAwP3Q6LTF9LHRva2VuaXplKG4sZSx0KXtjb25zdCByPWk9Pntjb25zdCBvPUtpKGkse2l0ZW1QYXR0ZXJuOi9eKFxzKikoWy0rKl0pXHMrXFsoWyB4WF0pXF1ccysoLiopJC8sZXh0cmFjdEl0ZW1EYXRhOmw9Pih7aW5kZW50TGV2ZWw6bFsxXS5sZW5ndGgsbWFpbkNvbnRlbnQ6bFs0XSxjaGVja2VkOmxbM10udG9Mb3dlckNhc2UoKT09PSJ4In0pLGNyZWF0ZVRva2VuOihsLGEpPT4oe3R5cGU6InRhc2tJdGVtIixyYXc6IiIsbWFpbkNvbnRlbnQ6bC5tYWluQ29udGVudCxpbmRlbnRMZXZlbDpsLmluZGVudExldmVsLGNoZWNrZWQ6bC5jaGVja2VkLHRleHQ6bC5tYWluQ29udGVudCx0b2tlbnM6dC5pbmxpbmVUb2tlbnMobC5tYWluQ29udGVudCksbmVzdGVkVG9rZW5zOmF9KSxjdXN0b21OZXN0ZWRQYXJzZXI6cn0sdCk7cmV0dXJuIG8/W3t0eXBlOiJ0YXNrTGlzdCIscmF3Om8ucmF3LGl0ZW1zOm8uaXRlbXN9XTp0LmJsb2NrVG9rZW5zKGkpfSxzPUtpKG4se2l0ZW1QYXR0ZXJuOi9eKFxzKikoWy0rKl0pXHMrXFsoWyB4WF0pXF1ccysoLiopJC8sZXh0cmFjdEl0ZW1EYXRhOmk9Pih7aW5kZW50TGV2ZWw6aVsxXS5sZW5ndGgsbWFpbkNvbnRlbnQ6aVs0XSxjaGVja2VkOmlbM10udG9Mb3dlckNhc2UoKT09PSJ4In0pLGNyZWF0ZVRva2VuOihpLG8pPT4oe3R5cGU6InRhc2tJdGVtIixyYXc6IiIsbWFpbkNvbnRlbnQ6aS5tYWluQ29udGVudCxpbmRlbnRMZXZlbDppLmluZGVudExldmVsLGNoZWNrZWQ6aS5jaGVja2VkLHRleHQ6aS5tYWluQ29udGVudCx0b2tlbnM6dC5pbmxpbmVUb2tlbnMoaS5tYWluQ29udGVudCksbmVzdGVkVG9rZW5zOm99KSxjdXN0b21OZXN0ZWRQYXJzZXI6cn0sdCk7aWYocylyZXR1cm57dHlwZToidGFza0xpc3QiLHJhdzpzLnJhdyxpdGVtczpzLml0ZW1zfX19LG1hcmtkb3duT3B0aW9uczp7aW5kZW50c0NvbnRlbnQ6ITB9LGFkZENvbW1hbmRzKCl7cmV0dXJue3RvZ2dsZVRhc2tMaXN0OigpPT4oe2NvbW1hbmRzOm59KT0+bi50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtOSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZVRhc2tMaXN0KCl9fX0pO3RlLmNyZWF0ZSh7bmFtZToibGlzdEtpdCIsYWRkRXh0ZW5zaW9ucygpe2NvbnN0IG49W107cmV0dXJuIHRoaXMub3B0aW9ucy5idWxsZXRMaXN0IT09ITEmJm4ucHVzaChsaC5jb25maWd1cmUodGhpcy5vcHRpb25zLmJ1bGxldExpc3QpKSx0aGlzLm9wdGlvbnMubGlzdEl0ZW0hPT0hMSYmbi5wdXNoKGFoLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKSx0aGlzLm9wdGlvbnMubGlzdEtleW1hcCE9PSExJiZuLnB1c2gocGguY29uZmlndXJlKHRoaXMub3B0aW9ucy5saXN0S2V5bWFwKSksdGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0IT09ITEmJm4ucHVzaChnaC5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSksdGhpcy5vcHRpb25zLnRhc2tJdGVtIT09ITEmJm4ucHVzaChheC5jb25maWd1cmUodGhpcy5vcHRpb25zLnRhc2tJdGVtKSksdGhpcy5vcHRpb25zLnRhc2tMaXN0IT09ITEmJm4ucHVzaChjeC5jb25maWd1cmUodGhpcy5vcHRpb25zLnRhc2tMaXN0KSksbn19KTt2YXIgQXI9IiZuYnNwOyIsRWk9IsKgIix1eD1TZS5jcmVhdGUoe25hbWU6InBhcmFncmFwaCIscHJpb3JpdHk6MWUzLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxncm91cDoiYmxvY2siLGNvbnRlbnQ6ImlubGluZSoiLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJwIn1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuWyJwIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0scGFyc2VNYXJrZG93bjoobixlKT0+e2NvbnN0IHQ9bi50b2tlbnN8fFtdO2lmKHQubGVuZ3RoPT09MSYmdFswXS50eXBlPT09ImltYWdlIilyZXR1cm4gZS5wYXJzZUNoaWxkcmVuKFt0WzBdXSk7Y29uc3Qgcj1lLnBhcnNlSW5saW5lKHQpO3JldHVybiB0Lmxlbmd0aD09PTEmJnRbMF0udHlwZT09PSJ0ZXh0IiYmKHRbMF0ucmF3PT09QXJ8fHRbMF0udGV4dD09PUFyfHx0WzBdLnJhdz09PUVpfHx0WzBdLnRleHQ9PT1FaSkmJnIubGVuZ3RoPT09MSYmclswXS50eXBlPT09InRleHQiJiYoclswXS50ZXh0PT09QXJ8fHJbMF0udGV4dD09PUVpKT9lLmNyZWF0ZU5vZGUoInBhcmFncmFwaCIsdm9pZCAwLFtdKTplLmNyZWF0ZU5vZGUoInBhcmFncmFwaCIsdm9pZCAwLHIpfSxyZW5kZXJNYXJrZG93bjoobixlLHQpPT57dmFyIHIscztpZighbilyZXR1cm4iIjtjb25zdCBpPUFycmF5LmlzQXJyYXkobi5jb250ZW50KT9uLmNvbnRlbnQ6W107aWYoaS5sZW5ndGg9PT0wKXtjb25zdCBvPUFycmF5LmlzQXJyYXkoKHI9dD8ucHJldmlvdXNOb2RlKT09bnVsbD92b2lkIDA6ci5jb250ZW50KT90LnByZXZpb3VzTm9kZS5jb250ZW50OltdO3JldHVybigocz10Py5wcmV2aW91c05vZGUpPT1udWxsP3ZvaWQgMDpzLnR5cGUpPT09InBhcmFncmFwaCImJm8ubGVuZ3RoPT09MD9BcjoiIn1yZXR1cm4gZS5yZW5kZXJDaGlsZHJlbihpKX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0UGFyYWdyYXBoOigpPT4oe2NvbW1hbmRzOm59KT0+bi5zZXROb2RlKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLUFsdC0wIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0UGFyYWdyYXBoKCl9fX0pLGR4PS8oPzpefFxzKSh+fig/IVxzK35+KSgoPzpbXn5dKykpfn4oPyFccyt+fikpJC8saHg9Lyg/Ol58XHMpKH5+KD8hXHMrfn4pKCg/Oltefl0rKSl+fig/IVxzK35+KSkvZyxmeD1KdC5jcmVhdGUoe25hbWU6InN0cmlrZSIsYWRkT3B0aW9ucygpe3JldHVybntIVE1MQXR0cmlidXRlczp7fX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJzIn0se3RhZzoiZGVsIn0se3RhZzoic3RyaWtlIn0se3N0eWxlOiJ0ZXh0LWRlY29yYXRpb24iLGNvbnN1bWluZzohMSxnZXRBdHRyczpuPT5uLmluY2x1ZGVzKCJsaW5lLXRocm91Z2giKT97fTohMX1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuWyJzIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImRlbCIscGFyc2VNYXJrZG93bjoobixlKT0+ZS5hcHBseU1hcmsoInN0cmlrZSIsZS5wYXJzZUlubGluZShuLnRva2Vuc3x8W10pKSxyZW5kZXJNYXJrZG93bjoobixlKT0+YH5+JHtlLnJlbmRlckNoaWxkcmVuKG4pfX5+YCxhZGRDb21tYW5kcygpe3JldHVybntzZXRTdHJpa2U6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVTdHJpa2U6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSx1bnNldFN0cmlrZTooKT0+KHtjb21tYW5kczpufSk9Pm4udW5zZXRNYXJrKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LXMiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVTdHJpa2UoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6ZHgsdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bcXQoe2ZpbmQ6aHgsdHlwZTp0aGlzLnR5cGV9KV19fSkscHg9U2UuY3JlYXRlKHtuYW1lOiJ0ZXh0Iixncm91cDoiaW5saW5lIixwYXJzZU1hcmtkb3duOm49Pih7dHlwZToidGV4dCIsdGV4dDpuLnRleHR8fCIifSkscmVuZGVyTWFya2Rvd246bj0+bi50ZXh0fHwiIn0pLG14PUp0LmNyZWF0ZSh7bmFtZToidW5kZXJsaW5lIixhZGRPcHRpb25zKCl7cmV0dXJue0hUTUxBdHRyaWJ1dGVzOnt9fX0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6InUifSx7c3R5bGU6InRleHQtZGVjb3JhdGlvbiIsY29uc3VtaW5nOiExLGdldEF0dHJzOm49Pm4uaW5jbHVkZXMoInVuZGVybGluZSIpP3t9OiExfV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bInUiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pLDBdfSxwYXJzZU1hcmtkb3duKG4sZSl7cmV0dXJuIGUuYXBwbHlNYXJrKHRoaXMubmFtZXx8InVuZGVybGluZSIsZS5wYXJzZUlubGluZShuLnRva2Vuc3x8W10pKX0scmVuZGVyTWFya2Rvd24obixlKXtyZXR1cm5gKyske2UucmVuZGVyQ2hpbGRyZW4obil9KytgfSxtYXJrZG93blRva2VuaXplcjp7bmFtZToidW5kZXJsaW5lIixsZXZlbDoiaW5saW5lIixzdGFydChuKXtyZXR1cm4gbi5pbmRleE9mKCIrKyIpfSx0b2tlbml6ZShuLGUsdCl7Y29uc3Qgcz0vXihcK1wrKShbXHNcU10rPykoXCtcKykvLmV4ZWMobik7aWYoIXMpcmV0dXJuO2NvbnN0IGk9c1syXS50cmltKCk7cmV0dXJue3R5cGU6InVuZGVybGluZSIscmF3OnNbMF0sdGV4dDppLHRva2Vuczp0LmlubGluZVRva2VucyhpKX19fSxhZGRDb21tYW5kcygpe3JldHVybntzZXRVbmRlcmxpbmU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVVbmRlcmxpbmU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSx1bnNldFVuZGVybGluZTooKT0+KHtjb21tYW5kczpufSk9Pm4udW5zZXRNYXJrKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLXUiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVVbmRlcmxpbmUoKSwiTW9kLVUiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVVbmRlcmxpbmUoKX19fSksZ3g9dGUuY3JlYXRlKHtuYW1lOiJzdGFydGVyS2l0IixhZGRFeHRlbnNpb25zKCl7dmFyIG4sZSx0LHI7Y29uc3Qgcz1bXTtyZXR1cm4gdGhpcy5vcHRpb25zLmJvbGQhPT0hMSYmcy5wdXNoKGYwLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYm9sZCkpLHRoaXMub3B0aW9ucy5ibG9ja3F1b3RlIT09ITEmJnMucHVzaChhMC5jb25maWd1cmUodGhpcy5vcHRpb25zLmJsb2NrcXVvdGUpKSx0aGlzLm9wdGlvbnMuYnVsbGV0TGlzdCE9PSExJiZzLnB1c2gobGguY29uZmlndXJlKHRoaXMub3B0aW9ucy5idWxsZXRMaXN0KSksdGhpcy5vcHRpb25zLmNvZGUhPT0hMSYmcy5wdXNoKExkLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZSkpLHRoaXMub3B0aW9ucy5jb2RlQmxvY2shPT0hMSYmcy5wdXNoKGcwLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZUJsb2NrKSksdGhpcy5vcHRpb25zLmRvY3VtZW50IT09ITEmJnMucHVzaCh5MC5jb25maWd1cmUodGhpcy5vcHRpb25zLmRvY3VtZW50KSksdGhpcy5vcHRpb25zLmRyb3BjdXJzb3IhPT0hMSYmcy5wdXNoKHNiLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZHJvcGN1cnNvcikpLHRoaXMub3B0aW9ucy5nYXBjdXJzb3IhPT0hMSYmcy5wdXNoKGliLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZ2FwY3Vyc29yKSksdGhpcy5vcHRpb25zLmhhcmRCcmVhayE9PSExJiZzLnB1c2goazAuY29uZmlndXJlKHRoaXMub3B0aW9ucy5oYXJkQnJlYWspKSx0aGlzLm9wdGlvbnMuaGVhZGluZyE9PSExJiZzLnB1c2goYjAuY29uZmlndXJlKHRoaXMub3B0aW9ucy5oZWFkaW5nKSksdGhpcy5vcHRpb25zLnVuZG9SZWRvIT09ITEmJnMucHVzaCh1Yi5jb25maWd1cmUodGhpcy5vcHRpb25zLnVuZG9SZWRvKSksdGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlIT09ITEmJnMucHVzaChQZC5jb25maWd1cmUodGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlKSksdGhpcy5vcHRpb25zLml0YWxpYyE9PSExJiZzLnB1c2goQzAuY29uZmlndXJlKHRoaXMub3B0aW9ucy5pdGFsaWMpKSx0aGlzLm9wdGlvbnMubGlzdEl0ZW0hPT0hMSYmcy5wdXNoKGFoLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKSx0aGlzLm9wdGlvbnMubGlzdEtleW1hcCE9PSExJiZzLnB1c2gocGguY29uZmlndXJlKChuPXRoaXMub3B0aW9ucyk9PW51bGw/dm9pZCAwOm4ubGlzdEtleW1hcCkpLHRoaXMub3B0aW9ucy5saW5rIT09ITEmJnMucHVzaChHMC5jb25maWd1cmUoKGU9dGhpcy5vcHRpb25zKT09bnVsbD92b2lkIDA6ZS5saW5rKSksdGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0IT09ITEmJnMucHVzaChnaC5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSksdGhpcy5vcHRpb25zLnBhcmFncmFwaCE9PSExJiZzLnB1c2godXguY29uZmlndXJlKHRoaXMub3B0aW9ucy5wYXJhZ3JhcGgpKSx0aGlzLm9wdGlvbnMuc3RyaWtlIT09ITEmJnMucHVzaChmeC5jb25maWd1cmUodGhpcy5vcHRpb25zLnN0cmlrZSkpLHRoaXMub3B0aW9ucy50ZXh0IT09ITEmJnMucHVzaChweC5jb25maWd1cmUodGhpcy5vcHRpb25zLnRleHQpKSx0aGlzLm9wdGlvbnMudW5kZXJsaW5lIT09ITEmJnMucHVzaChteC5jb25maWd1cmUoKHQ9dGhpcy5vcHRpb25zKT09bnVsbD92b2lkIDA6dC51bmRlcmxpbmUpKSx0aGlzLm9wdGlvbnMudHJhaWxpbmdOb2RlIT09ITEmJnMucHVzaChjYi5jb25maWd1cmUoKHI9dGhpcy5vcHRpb25zKT09bnVsbD92b2lkIDA6ci50cmFpbGluZ05vZGUpKSxzfX0pLHl4PWd4O2Z1bmN0aW9uIG5jKG4pe3JldHVybiBBaCgoZSx0KT0+KHtnZXQoKXtyZXR1cm4gZSgpLG59LHNldChyKXtuPXIscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dCgpfSl9KX19KSl9dmFyIGt4PWNsYXNzIGV4dGVuZHMganl7Y29uc3RydWN0b3Iobj17fSl7cmV0dXJuIHN1cGVyKG4pLHRoaXMuY29udGVudENvbXBvbmVudD1udWxsLHRoaXMuYXBwQ29udGV4dD1udWxsLHRoaXMucmVhY3RpdmVTdGF0ZT1uYyh0aGlzLnZpZXcuc3RhdGUpLHRoaXMucmVhY3RpdmVFeHRlbnNpb25TdG9yYWdlPW5jKHRoaXMuZXh0ZW5zaW9uU3RvcmFnZSksdGhpcy5vbigiYmVmb3JlVHJhbnNhY3Rpb24iLCh7bmV4dFN0YXRlOmV9KT0+e3RoaXMucmVhY3RpdmVTdGF0ZS52YWx1ZT1lLHRoaXMucmVhY3RpdmVFeHRlbnNpb25TdG9yYWdlLnZhbHVlPXRoaXMuZXh0ZW5zaW9uU3RvcmFnZX0pLE1oKHRoaXMpfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGU/dGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlOnRoaXMudmlldy5zdGF0ZX1nZXQgc3RvcmFnZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZT90aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZS52YWx1ZTpzdXBlci5zdG9yYWdlfXJlZ2lzdGVyUGx1Z2luKG4sZSl7Y29uc3QgdD1zdXBlci5yZWdpc3RlclBsdWdpbihuLGUpO3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGUmJih0aGlzLnJlYWN0aXZlU3RhdGUudmFsdWU9dCksdH11bnJlZ2lzdGVyUGx1Z2luKG4pe2NvbnN0IGU9c3VwZXIudW5yZWdpc3RlclBsdWdpbihuKTtyZXR1cm4gdGhpcy5yZWFjdGl2ZVN0YXRlJiZlJiYodGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlPWUpLGV9fSxieD1ycih7bmFtZToiRWRpdG9yQ29udGVudCIscHJvcHM6e2VkaXRvcjp7ZGVmYXVsdDpudWxsLHR5cGU6T2JqZWN0fX0sc2V0dXAobil7Y29uc3QgZT1SZSgpLHQ9VGgoKTtyZXR1cm4gQ2goKCk9Pntjb25zdCByPW4uZWRpdG9yO3ImJnIub3B0aW9ucy5lbGVtZW50JiZlLnZhbHVlJiZyYygoKT0+e3ZhciBzO2lmKCFlLnZhbHVlfHwhKChzPXIudmlldy5kb20pIT1udWxsJiZzLnBhcmVudE5vZGUpKXJldHVybjtjb25zdCBpPXooZS52YWx1ZSk7ZS52YWx1ZS5hcHBlbmQoLi4uci52aWV3LmRvbS5wYXJlbnROb2RlLmNoaWxkTm9kZXMpLHIuY29udGVudENvbXBvbmVudD10LmN0eC5fLHQmJihyLmFwcENvbnRleHQ9ey4uLnQuYXBwQ29udGV4dCxwcm92aWRlczp0LnByb3ZpZGVzfSksci5zZXRPcHRpb25zKHtlbGVtZW50Oml9KSxyLmNyZWF0ZU5vZGVWaWV3cygpfSl9KSxPcygoKT0+e2NvbnN0IHI9bi5lZGl0b3I7ciYmKHIuY29udGVudENvbXBvbmVudD1udWxsLHIuYXBwQ29udGV4dD1udWxsKX0pLHtyb290RWw6ZX19LHJlbmRlcigpe3JldHVybiB1bygiZGl2Iix7cmVmOm49Pnt0aGlzLnJvb3RFbD1ufX0pfX0pLHh4PShuPXt9KT0+e2NvbnN0IGU9RWgoKTtyZXR1cm4gY28oKCk9PntlLnZhbHVlPW5ldyBreChuKX0pLE9zKCgpPT57dmFyIHQscixzLGk7Y29uc3Qgbz0ocj0odD1lLnZhbHVlKT09bnVsbD92b2lkIDA6dC52aWV3LmRvbSk9PW51bGw/dm9pZCAwOnIucGFyZW50Tm9kZSxsPW8/LmNsb25lTm9kZSghMCk7KHM9bz8ucGFyZW50Tm9kZSk9PW51bGx8fHMucmVwbGFjZUNoaWxkKGwsbyksKGk9ZS52YWx1ZSk9PW51bGx8fGkuZGVzdHJveSgpfSksZX07Y29uc3Qgd3g9e3Nsb3RzOntyb290OiIiLGNvbnRlbnQ6InJlbGF0aXZlIHNpemUtZnVsbCBmbGV4LTEiLGJhc2U6WyJ3LWZ1bGwgb3V0bGluZS1ub25lICo6bXktNSAqOmZpcnN0Om10LTAgKjpsYXN0Om1iLTAgc206cHgtOCBzZWxlY3Rpb246YmctcHJpbWFyeS8yMCIsIlsmX3BdOmxlYWRpbmctNyIsIlsmX2FdOnRleHQtcHJpbWFyeSBbJl9hXTpib3JkZXItYiBbJl9hXTpib3JkZXItdHJhbnNwYXJlbnQgWyZfYV06aG92ZXI6Ym9yZGVyLXByaW1hcnkgWyZfYV06Zm9udC1tZWRpdW0iLCJbJl9hXTp0cmFuc2l0aW9uLWNvbG9ycyIsIlsmX2E+Y29kZV06Ym9yZGVyLWRhc2hlZCBbJl9hOmhvdmVyPmNvZGVdOmJvcmRlci1wcmltYXJ5IFsmX2E6aG92ZXI+Y29kZV06dGV4dC1wcmltYXJ5IiwiWyZfYT5jb2RlXTp0cmFuc2l0aW9uLWNvbG9ycyIsIlsmXy5tZW50aW9uXTp0ZXh0LXByaW1hcnkgWyZfLm1lbnRpb25dOmZvbnQtbWVkaXVtIiwiWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KV06dGV4dC1oaWdobGlnaHRlZCBbJl86aXMoaDEsaDIsaDMsaDQsaDUsaDYpXTpmb250LWJvbGQiLCJbJl9oMV06dGV4dC0zeGwiLCJbJl9oMl06dGV4dC0yeGwiLCJbJl9oM106dGV4dC14bCIsIlsmX2g0XTp0ZXh0LWxnIiwiWyZfaDVdOnRleHQtYmFzZSIsIlsmX2g2XTp0ZXh0LWJhc2UiLCJbJl86aXMoaDEsaDIsaDMsaDQsaDUsaDYpPmNvZGVdOmJvcmRlci1kYXNoZWQgWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KT5jb2RlXTpmb250LWJvbGQiLCJbJl9oMj5jb2RlXTp0ZXh0LXhsLzYiLCJbJl9oMz5jb2RlXTp0ZXh0LWxnLzUiLCJbJl9ibG9ja3F1b3RlXTpib3JkZXItcy00IFsmX2Jsb2NrcXVvdGVdOmJvcmRlci1hY2NlbnRlZCBbJl9ibG9ja3F1b3RlXTpwcy00IFsmX2Jsb2NrcXVvdGVdOml0YWxpYyIsIlsmX1tkYXRhLXR5cGU9aG9yaXpvbnRhbFJ1bGVdXTpteS04IFsmX1tkYXRhLXR5cGU9aG9yaXpvbnRhbFJ1bGVdXTpweS0yIiwiWyZfaHJdOmJvcmRlci10IFsmX2hyXTpib3JkZXItZGVmYXVsdCIsIlsmX3ByZV06dGV4dC1zbS82IFsmX3ByZV06Ym9yZGVyIFsmX3ByZV06Ym9yZGVyLW11dGVkIFsmX3ByZV06YmctbXV0ZWQgWyZfcHJlXTpyb3VuZGVkLW1kIFsmX3ByZV06cHgtNCBbJl9wcmVdOnB5LTMgWyZfcHJlXTp3aGl0ZXNwYWNlLXByZS13cmFwIFsmX3ByZV06YnJlYWstd29yZHMgWyZfcHJlXTpvdmVyZmxvdy14LWF1dG8iLCJbJl9wcmVfY29kZV06cC0wIFsmX3ByZV9jb2RlXTp0ZXh0LWluaGVyaXQgWyZfcHJlX2NvZGVdOmZvbnQtaW5oZXJpdCBbJl9wcmVfY29kZV06cm91bmRlZC1ub25lIFsmX3ByZV9jb2RlXTppbmxpbmUgWyZfcHJlX2NvZGVdOmJvcmRlci0wIFsmX3ByZV9jb2RlXTpiZy10cmFuc3BhcmVudCIsIlsmX2NvZGVdOnB4LTEuNSBbJl9jb2RlXTpweS0wLjUgWyZfY29kZV06dGV4dC1zbSBbJl9jb2RlXTpmb250LW1vbm8gWyZfY29kZV06Zm9udC1tZWRpdW0gWyZfY29kZV06cm91bmRlZC1tZCBbJl9jb2RlXTppbmxpbmUtYmxvY2sgWyZfY29kZV06Ym9yZGVyIFsmX2NvZGVdOmJvcmRlci1tdXRlZCBbJl9jb2RlXTp0ZXh0LWhpZ2hsaWdodGVkIFsmX2NvZGVdOmJnLW11dGVkIiwiWyZfOmlzKHVsLG9sKV06cHMtNiIsIlsmX3VsXTpsaXN0LWRpc2MgWyZfdWxdOm1hcmtlcjp0ZXh0LSgtLXVpLWJvcmRlci1hY2NlbnRlZCkiLCJbJl9vbF06bGlzdC1kZWNpbWFsIFsmX29sXTptYXJrZXI6dGV4dC1tdXRlZCIsIlsmX2xpXTpteS0xLjUgWyZfbGldOnBzLTEuNSIsIlsmX2ltZ106cm91bmRlZC1tZCBbJl9pbWddOmJsb2NrIFsmX2ltZ106bWF4LXctZnVsbCBbJl9pbWcuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXTpvdXRsaW5lLTIgWyZfaW1nLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZV06b3V0bGluZS1wcmltYXJ5IiwiWyZfLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZTpub3QoaW1nKTpub3QocHJlKTpub3QoW2RhdGEtbm9kZS12aWV3LXdyYXBwZXJdKV06YmctcHJpbWFyeS8yMCJdfSx2YXJpYW50czp7cGxhY2Vob2xkZXJNb2RlOntmaXJzdExpbmU6e2Jhc2U6IlsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpjb250ZW50LVthdHRyKGRhdGEtcGxhY2Vob2xkZXIpXSBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkXTpiZWZvcmU6dGV4dC1kaW1tZWQgWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZF06YmVmb3JlOmZsb2F0LXN0YXJ0IFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpoLTAgWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZF06YmVmb3JlOnBvaW50ZXItZXZlbnRzLW5vbmUifSxldmVyeUxpbmU6e2Jhc2U6IlsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOmNvbnRlbnQtW2F0dHIoZGF0YS1wbGFjZWhvbGRlcildIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOnRleHQtZGltbWVkIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOmZsb2F0LXN0YXJ0IFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOmgtMCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpwb2ludGVyLWV2ZW50cy1ub25lIn19fSxkZWZhdWx0VmFyaWFudHM6e3BsYWNlaG9sZGVyTW9kZToiZXZlcnlMaW5lIn19LHZ4PU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUVkaXRvciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29udGVudFR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzdGFydGVyS2l0Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXI6e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxtYXJrZG93bjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGltYWdlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sbWVudGlvbjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGhhbmRsZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZXh0ZW5zaW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saW5qZWN0Q1NTOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGluamVjdE5vbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpbU3RyaW5nLE51bWJlcixCb29sZWFuLG51bGxdLHJlcXVpcmVkOiExfSxlZGl0YWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0RGlyZWN0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZWRpdG9yUHJvcHM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxwYXJzZU9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb3JlRXh0ZW5zaW9uT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGVuYWJsZUlucHV0UnVsZXM6e3R5cGU6W0FycmF5LEJvb2xlYW5dLHJlcXVpcmVkOiExfSxlbmFibGVQYXN0ZVJ1bGVzOnt0eXBlOltBcnJheSxCb29sZWFuXSxyZXF1aXJlZDohMX0sZW5hYmxlQ29yZUV4dGVuc2lvbnM6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sZW5hYmxlQ29udGVudENoZWNrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGVtaXRDb250ZW50RXJyb3I6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25CZWZvcmVDcmVhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQ3JlYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbk1vdW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblVubW91bnQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQ29udGVudEVycm9yOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblVwZGF0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25TZWxlY3Rpb25VcGRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uVHJhbnNhY3Rpb246e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uRm9jdXM6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQmx1cjp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25EZXN0cm95Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblBhc3RlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkRyb3A6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uRGVsZXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxlbmFibGVFeHRlbnNpb25EaXNwYXRjaFRyYW5zYWN0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAobix7ZXhwb3NlOmUsZW1pdDp0fSl7Y29uc3Qgcj1uLHM9dCxpPU9oKCksbz1mYygpLGw9cGMoImVkaXRvciIsciksYT1sZSgoKT0+enIoe2V4dGVuZDp6cih3eCksLi4uby51aT8uZWRpdG9yfHx7fX0pKHtwbGFjZWhvbGRlck1vZGU6dHlwZW9mIHIucGxhY2Vob2xkZXI9PSJvYmplY3QiP3IucGxhY2Vob2xkZXIubW9kZTp2b2lkIDB9KSksYz1tYyhnYyhyLCJzdGFydGVyS2l0IiwiZXh0ZW5zaW9ucyIsImVkaXRvclByb3BzIiwiY29udGVudFR5cGUiLCJjbGFzcyIsInBsYWNlaG9sZGVyIiwibWFya2Rvd24iLCJpbWFnZSIsIm1lbnRpb24iLCJoYW5kbGVycyIpKSx1PWxlKCgpPT5ndChyLmVkaXRvclByb3BzLHthdHRyaWJ1dGVzOnthdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsLi4uaSxjbGFzczphLnZhbHVlLmJhc2Uoe2NsYXNzOmwudmFsdWU/LmJhc2V9KX19KSksZD1sZSgoKT0+ci5jb250ZW50VHlwZXx8KHR5cGVvZiByLm1vZGVsVmFsdWU9PSJzdHJpbmciPyJodG1sIjoianNvbiIpKSxoPWxlKCgpPT5ndChyLnN0YXJ0ZXJLaXQse2NvZGU6ITEsaG9yaXpvbnRhbFJ1bGU6ITEsZHJvcGN1cnNvcjp7Y29sb3I6InZhcigtLXVpLXByaW1hcnkpIix3aWR0aDoyfSxsaW5rOntvcGVuT25DbGljazohMX19KSksZj1sZSgoKT0+e2NvbnN0IHc9dHlwZW9mIHIucGxhY2Vob2xkZXI9PSJzdHJpbmciP3twbGFjZWhvbGRlcjpyLnBsYWNlaG9sZGVyfTpyLnBsYWNlaG9sZGVyLHttb2RlOngsLi4udn09d3x8e307cmV0dXJuIGd0KHYse3Nob3dPbmx5V2hlbkVkaXRhYmxlOiExLHNob3dPbmx5Q3VycmVudDohMH0pfSkscD1sZSgoKT0+Z3Qoci5tYXJrZG93bix7bWFya2VkT3B0aW9uczp7Z2ZtOiEwfX0pKSxtPWxlKCgpPT50eXBlb2Ygci5pbWFnZT09ImJvb2xlYW4iP3t9OnIuaW1hZ2UpLGc9bGUoKCk9Pmd0KHR5cGVvZiByLm1lbnRpb249PSJib29sZWFuIj97fTpyLm1lbnRpb24se0hUTUxBdHRyaWJ1dGVzOntjbGFzczoibWVudGlvbiJ9LHJlbmRlclRleHQoe25vZGU6d30pe3JldHVybmAke3cuYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyPz8iQCJ9JHt3LmF0dHJzLmxhYmVsPz93LmF0dHJzLmlkfWB9LHJlbmRlckhUTUwoe29wdGlvbnM6dyxub2RlOnh9KXtyZXR1cm5bInNwYW4iLEsoeyJkYXRhLXR5cGUiOiJtZW50aW9uIn0sdy5IVE1MQXR0cmlidXRlcyksYCR7eC5hdHRycy5tZW50aW9uU3VnZ2VzdGlvbkNoYXI/PyJAIn0ke3guYXR0cnMubGFiZWw/P3guYXR0cnMuaWR9YF19fSkpLHk9bGUoKCk9PltkLnZhbHVlPT09Im1hcmtkb3duIiYmbzAuY29uZmlndXJlKHAudmFsdWUpLHl4LmNvbmZpZ3VyZShoLnZhbHVlKSxBay5leHRlbmQoe2V4Y2x1ZGVzOiJjb2RlIn0pLE9rLmV4dGVuZCh7cmVuZGVySFRNTCgpe3JldHVyblsiZGl2IixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyx7ImRhdGEtdHlwZSI6dGhpcy5uYW1lfSksWyJociJdXX19KSxyLmltYWdlIT09ITEmJklrLmNvbmZpZ3VyZShtLnZhbHVlKSxyLm1lbnRpb24hPT0hMSYmX2suY29uZmlndXJlKGcudmFsdWUpLHIucGxhY2Vob2xkZXImJmRiLmNvbmZpZ3VyZShmLnZhbHVlKSwuLi5yLmV4dGVuc2lvbnN8fFtdXS5maWx0ZXIodz0+ISF3KSksaz14eCh7Li4uYy52YWx1ZSxjb250ZW50OnIubW9kZWxWYWx1ZSxjb250ZW50VHlwZTpkLnZhbHVlLGV4dGVuc2lvbnM6eS52YWx1ZSxlZGl0b3JQcm9wczp1LnZhbHVlLG9uQ3JlYXRlOih7ZWRpdG9yOnd9KT0+e3IucGxhY2Vob2xkZXImJncudmlldy5kaXNwYXRjaCh3LnN0YXRlLnRyKX0sb25VcGRhdGU6KHtlZGl0b3I6d30pPT57bGV0IHg7dHJ5e2QudmFsdWU9PT0iaHRtbCI/eD13LmdldEhUTUwoKTpkLnZhbHVlPT09Impzb24iP3g9dy5nZXRKU09OKCk6ZC52YWx1ZT09PSJtYXJrZG93biImJih4PXcuZ2V0TWFya2Rvd24oKSl9Y2F0Y2h7eD13LmdldFRleHQoKX1zKCJ1cGRhdGU6bW9kZWxWYWx1ZSIseCl9fSk7TmgoKCk9PnIubW9kZWxWYWx1ZSx3PT57aWYoIWsudmFsdWV8fHc9PW51bGwpcmV0dXJuO2NvbnN0IHg9ZC52YWx1ZT09PSJodG1sIj9rLnZhbHVlLmdldEhUTUwoKTpkLnZhbHVlPT09Impzb24iP0pTT04uc3RyaW5naWZ5KGsudmFsdWUuZ2V0SlNPTigpKTpkLnZhbHVlPT09Im1hcmtkb3duIj9rLnZhbHVlLmdldE1hcmtkb3duKCk6ay52YWx1ZS5nZXRUZXh0KCksdj1kLnZhbHVlPT09Impzb24iJiZ0eXBlb2Ygdz09Im9iamVjdCI/SlNPTi5zdHJpbmdpZnkodyk6U3RyaW5nKHcpO2lmKHghPT12KXtjb25zdCBNPWsudmFsdWUuc3RhdGUuc2VsZWN0aW9uLmZyb207ay52YWx1ZS5jb21tYW5kcy5zZXRDb250ZW50KHcse2NvbnRlbnRUeXBlOmQudmFsdWV9KTtjb25zdCBSPWsudmFsdWUuc3RhdGUuZG9jO008PVIuY29udGVudC5zaXplJiZrLnZhbHVlLmNvbW1hbmRzLnNldFRleHRTZWxlY3Rpb24oTSl9fSk7Y29uc3QgYj1sZSgoKT0+KHsuLi5EZCgpLC4uLnIuaGFuZGxlcnN9KSk7cmV0dXJuIFJoKCJlZGl0b3JIYW5kbGVycyIsYiksZSh7ZWRpdG9yOmt9KSwodyx4KT0+KGhlKCksQmUoeihBaSkse2FzOm4uYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOlJuKGEudmFsdWUucm9vdCh7Y2xhc3M6W3oobCk/LnJvb3Qsci5jbGFzc119KSl9LHtkZWZhdWx0OmRlKCgpPT5beihrKT8oaGUoKSxzbihJbix7a2V5OjB9LFt5Yyh3LiRzbG90cywiZGVmYXVsdCIse2VkaXRvcjp6KGspLGhhbmRsZXJzOmIudmFsdWV9KSxRKHooYngpLHtyb2xlOiJwcmVzZW50YXRpb24iLGVkaXRvcjp6KGspLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpSbihhLnZhbHVlLmNvbnRlbnQoe2NsYXNzOnoobCk/LmNvbnRlbnR9KSl9LG51bGwsOCxbImVkaXRvciIsImNsYXNzIl0pXSw2NCkpOkRuKCIiLCEwKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX0pO2Z1bmN0aW9uIFN4KCl7ZnVuY3Rpb24gbigpe3JldHVybiBRcygiL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvb3B0aW9ucyIpfWZ1bmN0aW9uIGUocil7cmV0dXJuIFFzKCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9wcmV2aWV3Iix7bWV0aG9kOiJQT1NUIixib2R5OnJ9KX1mdW5jdGlvbiB0KHIpe3JldHVybiBRcygiL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvc2VuZCIse21ldGhvZDoiUE9TVCIsYm9keTpyfSl9cmV0dXJue2ZldGNoRGlzcGF0Y2hPcHRpb25zOm4scHJldmlld0Rpc3BhdGNoOmUsc2VuZERpc3BhdGNoOnR9fWNvbnN0IEN4PWtjKHthbGxVc2VyczpXaCgpLmRlZmF1bHQoITEpLG9yZ2FuaXphdGlvbklkczpYcyhMbigpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSkscm9sZUlkczpYcyhMbigpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSksZW1haWxzOlhzKExuKCkudHJpbSgpLnRvTG93ZXJDYXNlKCkuZW1haWwoKSkubWF4KDIwMCkuZGVmYXVsdChbXSl9KS5yZWZpbmUobj0+bi5hbGxVc2Vyc3x8bi5vcmdhbml6YXRpb25JZHMubGVuZ3RoPjB8fG4ucm9sZUlkcy5sZW5ndGg+MHx8bi5lbWFpbHMubGVuZ3RoPjAse21lc3NhZ2U6IlNlbGVjdCBhdCBsZWFzdCBvbmUgcmVjaXBpZW50IGNyaXRlcmlvbiJ9KSxUeD0vXlteXHJcbl0qJC8sTXg9LzxbXj5dKj4vZyxFeD0vJm5ic3A7L2dpLEF4PS88aW1nXGIvaTtmdW5jdGlvbiB5aChuKXtyZXR1cm4gbi5yZXBsYWNlKE14LCIiKS5yZXBsYWNlKEV4LCIgIikudHJpbSgpLmxlbmd0aD4wfHxBeC50ZXN0KG4pfWtjKHtmaWx0ZXI6Q3gsc3ViamVjdDpMbigpLnRyaW0oKS5taW4oMSkubWF4KDIwMCkucmVnZXgoVHgsIlN1YmplY3QgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MiKSxib2R5OkxuKCkudHJpbSgpLm1pbigxKS5tYXgoNWU0KS5yZWZpbmUoeWgsIkJvZHkgY2Fubm90IGJlIGVtcHR5Iil9KTtjb25zdCBPeD17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTYifSxOeD17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIn0sUng9e2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSxJeD1ycih7X19uYW1lOiJTeXN0ZW1FbWFpbERpc3BhdGNoIixzZXR1cChuKXtjb25zdCBlPS9bXHMsO10rLyx0PVN4KCkscj1JaCgpLHtkYXRhOnN9PURoKCJzeXN0ZW0tZGlzcGF0Y2gtb3B0aW9ucyIsKCk9PnQuZmV0Y2hEaXNwYXRjaE9wdGlvbnMoKSx7ZGVmYXVsdDooKT0+KHtvcmdhbml6YXRpb25zOltdLHJvbGVzOltdfSl9KSxpPWxlKCgpPT4ocy52YWx1ZT8ub3JnYW5pemF0aW9ucz8/W10pLm1hcChDPT4oe2xhYmVsOkMubGFiZWwsdmFsdWU6Qy5pZH0pKSksbz1sZSgoKT0+KHMudmFsdWU/LnJvbGVzPz9bXSkubWFwKEM9Pih7bGFiZWw6Qy5sYWJlbCx2YWx1ZTpDLmlkfSkpKSxsPVJlKHthbGxVc2VyczohMSxvcmdhbml6YXRpb25JZHM6W10scm9sZUlkczpbXSxlbWFpbHM6W119KSxhPVJlKCIiKTtMaChhLFBoKGwudmFsdWUsImVtYWlscyIpLHtkaXJlY3Rpb246Imx0ciIsdHJhbnNmb3JtOntsdHI6Qz0+Qy5zcGxpdChlKS5tYXAoTT0+TS50cmltKCkudG9Mb3dlckNhc2UoKSkuZmlsdGVyKEJvb2xlYW4pfX0pO2NvbnN0IGM9UmUoIiIpLHU9UmUoIiIpLGQ9W1t7a2luZDoibWFyayIsbWFyazoiYm9sZCIsaWNvbjoiaS1sdWNpZGUtYm9sZCIsdG9vbHRpcDp7dGV4dDoiQm9sZCJ9fSx7a2luZDoibWFyayIsbWFyazoiaXRhbGljIixpY29uOiJpLWx1Y2lkZS1pdGFsaWMiLHRvb2x0aXA6e3RleHQ6Ikl0YWxpYyJ9fSx7a2luZDoibWFyayIsbWFyazoic3RyaWtlIixpY29uOiJpLWx1Y2lkZS1zdHJpa2V0aHJvdWdoIix0b29sdGlwOnt0ZXh0OiJTdHJpa2V0aHJvdWdoIn19XSxbe2tpbmQ6ImhlYWRpbmciLGxldmVsOjIsaWNvbjoiaS1sdWNpZGUtaGVhZGluZy0yIix0b29sdGlwOnt0ZXh0OiJIZWFkaW5nIn19LHtraW5kOiJidWxsZXRMaXN0IixpY29uOiJpLWx1Y2lkZS1saXN0Iix0b29sdGlwOnt0ZXh0OiJCdWxsZXQgbGlzdCJ9fSx7a2luZDoib3JkZXJlZExpc3QiLGljb246ImktbHVjaWRlLWxpc3Qtb3JkZXJlZCIsdG9vbHRpcDp7dGV4dDoiTnVtYmVyZWQgbGlzdCJ9fSx7a2luZDoiYmxvY2txdW90ZSIsaWNvbjoiaS1sdWNpZGUtcXVvdGUiLHRvb2x0aXA6e3RleHQ6IlF1b3RlIn19XSxbe2tpbmQ6ImxpbmsiLGljb246ImktbHVjaWRlLWxpbmsiLHRvb2x0aXA6e3RleHQ6IkxpbmsifX0se2tpbmQ6InVuZG8iLGljb246ImktbHVjaWRlLXVuZG8tMiIsdG9vbHRpcDp7dGV4dDoiVW5kbyJ9fSx7a2luZDoicmVkbyIsaWNvbjoiaS1sdWNpZGUtcmVkby0yIix0b29sdGlwOnt0ZXh0OiJSZWRvIn19XV0saD1SZShudWxsKSxmPVJlKG51bGwpLHA9UmUoITEpLG09UmUoITEpLGc9UmUoITEpLHk9bGUoKCk9PmwudmFsdWUuYWxsVXNlcnN8fGwudmFsdWUub3JnYW5pemF0aW9uSWRzLmxlbmd0aD4wfHxsLnZhbHVlLnJvbGVJZHMubGVuZ3RoPjB8fGwudmFsdWUuZW1haWxzLmxlbmd0aD4wKSxrPWxlKCgpPT55LnZhbHVlJiZjLnZhbHVlLnRyaW0oKS5sZW5ndGg+MCYmeWgodS52YWx1ZSkpO2Z1bmN0aW9uIGIoKXtoLnZhbHVlPW51bGwsZi52YWx1ZT1udWxsfWFzeW5jIGZ1bmN0aW9uIHcoKXtpZih5LnZhbHVlKXtwLnZhbHVlPSEwLGYudmFsdWU9bnVsbDt0cnl7aC52YWx1ZT1hd2FpdCB0LnByZXZpZXdEaXNwYXRjaCh7Li4ubC52YWx1ZX0pfWNhdGNoKEMpe2NvbnN0IE09QztyLmFkZCh7dGl0bGU6IlByZXZpZXcgZmFpbGVkIixkZXNjcmlwdGlvbjpNPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7cC52YWx1ZT0hMX19fWZ1bmN0aW9uIHgoKXtrLnZhbHVlJiYoZy52YWx1ZT0hMCl9YXN5bmMgZnVuY3Rpb24gdigpe20udmFsdWU9ITA7dHJ5e2YudmFsdWU9YXdhaXQgdC5zZW5kRGlzcGF0Y2goe2ZpbHRlcjp7Li4ubC52YWx1ZX0sc3ViamVjdDpjLnZhbHVlLnRyaW0oKSxib2R5OnUudmFsdWV9KSxnLnZhbHVlPSExLGgudmFsdWU9bnVsbCxyLmFkZCh7dGl0bGU6YFNlbnQgJHtmLnZhbHVlLnNlbnR9IGVtYWlsKHMpYCxjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChDKXtjb25zdCBNPUM7ci5hZGQoe3RpdGxlOiJEaXNwYXRjaCBmYWlsZWQiLGRlc2NyaXB0aW9uOk0/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXttLnZhbHVlPSExfX1yZXR1cm4oQyxNKT0+e2NvbnN0IFI9YmgsTz14aCxQPXpoLEY9VmgsXz0kaCxMPUJoLEg9VGssbmU9dngsb2U9U24sY3Q9cWgsJD1IaDtyZXR1cm4gaGUoKSxzbigiZGl2IixPeCxbUShSLHt0aXRsZToiU2VuZCBlbWFpbCIsZGVzY3JpcHRpb246IkNvbXBvc2UgYSBtZXNzYWdlIGFuZCBkaXNwYXRjaCBpdCB0byBhIGZpbHRlcmVkIHNldCBvZiB1c2Vycy4gUmVjaXBpZW50cyB3aG8gdHVybmVkIG9mZiBlbWFpbCBhcmUgc2tpcHBlZC4iLHZhcmlhbnQ6Im5ha2VkIn0pLFEoUix7dmFyaWFudDoic3VidGxlIix1aTp7Y29udGFpbmVyOiJmbGV4IGZsZXgtY29sIGdhcC00In19LHtkZWZhdWx0OmRlKCgpPT5bUShQLHtsYWJlbDoiQWxsIHVzZXJzIixkZXNjcmlwdGlvbjoiU2VuZCB0byBldmVyeSB1c2VyIChtaW51cyBvcHQtb3V0cykuIixjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIn0se2RlZmF1bHQ6ZGUoKCk9PltRKE8se21vZGVsVmFsdWU6eihsKS5hbGxVc2Vycywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W01bMF18fChNWzBdPUo9PnoobCkuYWxsVXNlcnM9SiksYl19LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSx6KGwpLmFsbFVzZXJzP0RuKCIiLCEwKTooaGUoKSxzbihJbix7a2V5OjB9LFtRKFAse2xhYmVsOiJPcmdhbml6YXRpb25zIixkZXNjcmlwdGlvbjoiTWVtYmVycyBvZiB0aGUgc2VsZWN0ZWQgb3JnYW5pemF0aW9ucy4ifSx7ZGVmYXVsdDpkZSgoKT0+W1EoRix7bW9kZWxWYWx1ZTp6KGwpLm9yZ2FuaXphdGlvbklkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W01bMV18fChNWzFdPUo9PnoobCkub3JnYW5pemF0aW9uSWRzPUopLGJdLGl0ZW1zOnooaSksInZhbHVlLWtleSI6InZhbHVlIixtdWx0aXBsZToiIixzZWFyY2hhYmxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgb3JnYW5pemF0aW9ucyIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLFEoUCx7bGFiZWw6IlJvbGVzIixkZXNjcmlwdGlvbjoiVXNlcnMgYXNzaWduZWQgdGhlIHNlbGVjdGVkIHJvbGVzLiJ9LHtkZWZhdWx0OmRlKCgpPT5bUShGLHttb2RlbFZhbHVlOnoobCkucm9sZUlkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W01bMl18fChNWzJdPUo9PnoobCkucm9sZUlkcz1KKSxiXSxpdGVtczp6KG8pLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IHJvbGVzIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksUShQLHtsYWJlbDoiRW1haWxzIixkZXNjcmlwdGlvbjoiU3BlY2lmaWMgYWRkcmVzc2VzIChvbmUgcGVyIGxpbmUgLyBjb21tYS1zZXBhcmF0ZWQpLiBPbmx5IG1hdGNoaW5nIHVzZXJzIGFyZSBlbWFpbGVkLiJ9LHtkZWZhdWx0OmRlKCgpPT5bUShfLHttb2RlbFZhbHVlOnooYSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltNWzNdfHwoTVszXT1KPT5ocihhKT9hLnZhbHVlPUo6bnVsbCksYl0scm93czozLHBsYWNlaG9sZGVyOiJhQGV4YW1wbGUuY29tLCBiQGV4YW1wbGUuY29tIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pXSw2NCkpXSksXzoxfSksUShSLHt2YXJpYW50OiJzdWJ0bGUiLHVpOntjb250YWluZXI6ImZsZXggZmxleC1jb2wgZ2FwLTQifX0se2RlZmF1bHQ6ZGUoKCk9PltRKFAse2xhYmVsOiJTdWJqZWN0IixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6ZGUoKCk9PltRKEwse21vZGVsVmFsdWU6eihjKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6TVs0XXx8KE1bNF09Sj0+aHIoYyk/Yy52YWx1ZT1KOm51bGwpLG1heGxlbmd0aDoiMjAwIixwbGFjZWhvbGRlcjoiU3ViamVjdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxRKFAse2xhYmVsOiJCb2R5IixyZXF1aXJlZDoiIixkZXNjcmlwdGlvbjoiUmljaCB0ZXh0IOKAlCBmb3JtYXR0aW5nIGlzIHByZXNlcnZlZCBpbiB0aGUgZW1haWwuIn0se2RlZmF1bHQ6ZGUoKCk9PltRKG5lLHttb2RlbFZhbHVlOnoodSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOk1bNV18fChNWzVdPUo9PmhyKHUpP3UudmFsdWU9SjpudWxsKSwiY29udGVudC10eXBlIjoiaHRtbCIscGxhY2Vob2xkZXI6IldyaXRlIHlvdXIgbWVzc2FnZeKApiIsY2xhc3M6InctZnVsbCBtaW4taC00OCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZGVmYXVsdCBbJl8uUHJvc2VNaXJyb3JdOnB4LTQifSx7ZGVmYXVsdDpkZSgoe2VkaXRvcjpKfSk9PltRKEgse2VkaXRvcjpKLGl0ZW1zOmQsY2xhc3M6Im1iLTIgYm9yZGVyLWIgYm9yZGVyLW11dGVkIHAtMiJ9LG51bGwsOCxbImVkaXRvciJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KV0pLF86MX0pLE9yKCJkaXYiLE54LFtRKG9lLHtsYWJlbDoiUHJldmlldyByZWNpcGllbnRzIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOnoocCksZGlzYWJsZWQ6IXooeSksb25DbGljazp3fSxudWxsLDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSksUShvZSx7bGFiZWw6IlNlbmQgZW1haWwiLGljb246ImktbHVjaWRlLXNlbmQiLGRpc2FibGVkOiF6KGspLG9uQ2xpY2s6eH0sbnVsbCw4LFsiZGlzYWJsZWQiXSldKSx6KGgpPyhoZSgpLEJlKGN0LHtrZXk6MCxjb2xvcjoiaW5mbyIsdmFyaWFudDoic3VidGxlIixpY29uOiJpLWx1Y2lkZS11c2VycyIsdGl0bGU6YCR7eihoKS5lbmFibGVkfSB3aWxsIHJlY2VpdmUgwrcgJHt6KGgpLnNraXBwZWR9IHNraXBwZWQgKGVtYWlsIG9mZikgwrcgJHt6KGgpLnRvdGFsfSBtYXRjaGVkYH0sbnVsbCw4LFsidGl0bGUiXSkpOkRuKCIiLCEwKSx6KGYpPyhoZSgpLEJlKGN0LHtrZXk6MSxjb2xvcjp6KGYpLmZhaWxlZD8id2FybmluZyI6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsaWNvbjoiaS1sdWNpZGUtbWFpbC1jaGVjayIsdGl0bGU6YFNlbnQgJHt6KGYpLnNlbnR9LCBmYWlsZWQgJHt6KGYpLmZhaWxlZH0sIHNraXBwZWQgJHt6KGYpLnNraXBwZWR9IG9mICR7eihmKS50b3RhbH0gbWF0Y2hlZGB9LG51bGwsOCxbImNvbG9yIiwidGl0bGUiXSkpOkRuKCIiLCEwKSxRKCQse29wZW46eihnKSwib25VcGRhdGU6b3BlbiI6TVs3XXx8KE1bN109Sj0+aHIoZyk/Zy52YWx1ZT1KOm51bGwpLHRpdGxlOiJTZW5kIHRoaXMgZW1haWw/Iix1aTp7Zm9vdGVyOiJqdXN0aWZ5LWVuZCJ9fSx7Ym9keTpkZSgoKT0+W09yKCJwIixSeCxbTVs4XXx8KE1bOF09cGwoIiBUaGlzIHdpbGwgZW1haWwgIiwtMSkpLE9yKCJzdHJvbmciLG51bGwsX2goeihoKT96KGgpLmVuYWJsZWQ6InRoZSBtYXRjaGluZyIpLDEpLE1bOV18fChNWzldPXBsKCIgdXNlcihzKS4gUmVjaXBpZW50cyB3aG8gZGlzYWJsZWQgZW1haWwgbm90aWZpY2F0aW9ucyBhcmUgc2tpcHBlZCBhdXRvbWF0aWNhbGx5LiAiLC0xKSldKV0pLGZvb3RlcjpkZSgoKT0+W1Eob2Use2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazpNWzZdfHwoTVs2XT1KPT5nLnZhbHVlPSExKX0pLFEob2Use2NvbG9yOiJwcmltYXJ5IixsYWJlbDoiU2VuZCIsbG9hZGluZzp6KG0pLG9uQ2xpY2s6dn0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0sOCxbIm9wZW4iXSldKX19fSksRHg9T2JqZWN0LmFzc2lnbihJeCx7X19uYW1lOiJTeXN0ZW1FbWFpbERpc3BhdGNoIn0pLFh4PXJyKHtfX25hbWU6Im5vdGlmaWNhdGlvbnMiLHNldHVwKG4pe3JldHVybiBGaCh7dGl0bGU6IlN5c3RlbSDCtyBOb3RpZmljYXRpb25zIn0pLChlLHQpPT4oaGUoKSxCZShEeCkpfX0pO2V4cG9ydHtYeCBhcyBkZWZhdWx0fTsK", "/_nuxt/Dc46QwDJ.js": "aW1wb3J0e2FzIGFzIHR9ZnJvbSIuL284dGRfRzBKLmpzIjtmdW5jdGlvbiBnKCl7ZnVuY3Rpb24gaSgpe3JldHVybiB0KCIvYXBpL3BheW1lbnRzL2JpbGxpbmcvYmFsYW5jZSIpfWZ1bmN0aW9uIGUobj0xLHA9MjApe3JldHVybiB0KGAvYXBpL3BheW1lbnRzL2JpbGxpbmcvdHJhbnNhY3Rpb25zP3BhZ2U9JHtufSZsaW1pdD0ke3B9YCl9ZnVuY3Rpb24gYShuKXtyZXR1cm4gdCgiL2FwaS9wYXltZW50cy9zZXBheS9jaGVja291dCIse21ldGhvZDoiUE9TVCIsYm9keTp7YW1vdW50Om59fSl9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gdChgL2FwaS9wYXltZW50cy9zZXBheS9zdGF0dXM/aWQ9JHtufWApfWZ1bmN0aW9uIGMoKXtyZXR1cm4gdCgiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZS9zZXR0aW5ncyIpfWZ1bmN0aW9uIHIobil7cmV0dXJuIHQoIi9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2Uvc2V0dGluZ3MiLHttZXRob2Q6IlBBVENIIixib2R5Om59KX1mdW5jdGlvbiBzKCl7cmV0dXJuIHQoIi9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2UiKX1mdW5jdGlvbiB1KG4pe3JldHVybiB0KCIvYXBpL29yZ2FuaXphdGlvbi9pbnZvaWNlIix7bWV0aG9kOiJQT1NUIixib2R5Om59KX1yZXR1cm57ZmV0Y2hCYWxhbmNlOmksZmV0Y2hUcmFuc2FjdGlvbnM6ZSxjaGVja291dDphLGZldGNoVHJhbnNhY3Rpb25TdGF0dXM6byxmZXRjaEJpbGxpbmdTZXR0aW5nczpjLHVwZGF0ZUJpbGxpbmdTZXR0aW5nczpyLGZldGNoSW52b2ljZXM6cyxjcmVhdGVJbnZvaWNlOnV9fWV4cG9ydHtnIGFzIHV9Owo=", "/_nuxt/Dl-Dzm7z.js": "aW1wb3J0e18gYXMgdCxvIGFzIHMsYyxMIGFzIG59ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCByPXt9LG89e2NsYXNzOiJtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBweS0xNiBiZy1kZWZhdWx0In07ZnVuY3Rpb24gYShlLGYpe3JldHVybiBzKCksYygiZGl2IixvLFtuKGUuJHNsb3RzLCJkZWZhdWx0IildKX1jb25zdCBfPXQocixbWyJyZW5kZXIiLGFdXSk7ZXhwb3J0e18gYXMgZGVmYXVsdH07Cg==", "/_nuxt/Dm794qxI.js": "aW1wb3J0Ii4vbzh0ZF9HMEouanMiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBVUkwoZ2xvYmFsVGhpcy5sb2NhdGlvbi5ocmVmKX1leHBvcnR7dCBhcyB1fTsK", "/_nuxt/DpAvtN8g.js": "aW1wb3J0e2YgYXMgUyxTIGFzIFksUiBhcyBKLG8gYXMgZCxoIGFzIE8sdyBhcyBjLGIgYXMgYSxEIGFzIEssSCBhcyBRLGkgYXMgbixhciBhcyBXLGEgYXMgXyxFIGFzIFgsdiBhcyBBLGosYyBhcyB5LHQgYXMgJCxkIGFzIFIsbCBhcyBGLEYgYXMgSSxxIGFzIE0sayBhcyBaLHUgYXMgZWUsZyBhcyB0ZSxwIGFzIG5lLHogYXMgYWUsRyBhcyBvZSxWIGFzIGxlLHIgYXMgTixhMSBhcyBpZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIHNlfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e3UgYXMgcmV9ZnJvbSIuL0RZWmxnMC01LmpzIjtpbXBvcnR7XyBhcyBjZX1mcm9tIi4vRE9DRkRUY1kuanMiO2ltcG9ydHtvIGFzIEwsXyBhcyBQLG4gYXMgVCxzIGFzIER9ZnJvbSIuL0J1TFN1QThNLmpzIjtpbXBvcnR7XyBhcyB1ZX1mcm9tIi4vQ0dYZ1NNWmguanMiO2ltcG9ydHtfIGFzIGRlfWZyb20iLi9fMmxTZHIxMy5qcyI7aW1wb3J0e18gYXMgbWV9ZnJvbSIuLzRsSG15SGJILmpzIjtpbXBvcnR7XyBhcyBwZX1mcm9tIi4vQmQ0LU9jMzYuanMiO2ltcG9ydCIuL0N0YTE1c0ctLmpzIjtpbXBvcnQiLi9DWWFtekxtNS5qcyI7aW1wb3J0Ii4vRHZkaHlwRGkuanMiO2ltcG9ydCIuL0J0OFMwZG1sLmpzIjtpbXBvcnQiLi9CN3M1cGpqUi5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgcT1bIlVTRCIsIkVVUiIsIkdCUCIsIlZORCIsIkpQWSIsIkFVRCIsIkNBRCJdLHo9TCh7bmFtZTpEKCkubWluKDEpLm1heCgyMDApLGRlc2NyaXB0aW9uOkQoKS5tYXgoMmUzKS5vcHRpb25hbCgpLHR5cGU6UChbIm9uZV90aW1lIiwicmVjdXJyaW5nIl0pLmRlZmF1bHQoIm9uZV90aW1lIikscHJpY2U6VCgpLmludCgpLm1pbigwKSxwcmljZV9jdXJyZW5jeTpQKHEpLmRlZmF1bHQoIlVTRCIpLGJpbGxpbmdfaW50ZXJ2YWw6UChbIm1vbnRoIiwieWVhciJdKS5vcHRpb25hbCgpLHN0YXR1czpQKFsiYWN0aXZlIiwiaW5hY3RpdmUiXSkuZGVmYXVsdCgiYWN0aXZlIil9KTt6LnJlZmluZShzPT5zLnR5cGUhPT0icmVjdXJyaW5nInx8ISFzLmJpbGxpbmdfaW50ZXJ2YWwse21lc3NhZ2U6ImJpbGxpbmdfaW50ZXJ2YWwgaXMgcmVxdWlyZWQgZm9yIHJlY3VycmluZyBwcm9kdWN0cyIscGF0aDpbImJpbGxpbmdfaW50ZXJ2YWwiXX0pO3oucGFydGlhbCgpO2NvbnN0IF9lPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCJ9LGZlPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCJ9LHZlPXtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LHllPVMoe19fbmFtZToiUHJvZHVjdEZvcm0iLHByb3BzOntpbml0aWFsVmFsdWVzOnt9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic3VibWl0IiwiY2FuY2VsIl0sc2V0dXAocyx7ZW1pdDp1fSl7Y29uc3Qgbz1zLHA9dSxsPUwoe25hbWU6RCgpLm1pbigxLCJOYW1lIGlzIHJlcXVpcmVkIikubWF4KDIwMCksZGVzY3JpcHRpb246RCgpLm1heCgyZTMpLm9wdGlvbmFsKCksdHlwZTpQKFsib25lX3RpbWUiLCJyZWN1cnJpbmciXSkscHJpY2U6VCgpLmludCgpLm1pbigwLCJQcmljZSBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpLHByaWNlX2N1cnJlbmN5OlAocSksYmlsbGluZ19pbnRlcnZhbDpQKFsibW9udGgiLCJ5ZWFyIl0pLm9wdGlvbmFsKCksc3RhdHVzOlAoWyJhY3RpdmUiLCJpbmFjdGl2ZSJdKX0pLGU9WSh7bmFtZTpvLmluaXRpYWxWYWx1ZXM/Lm5hbWU/PyIiLGRlc2NyaXB0aW9uOm8uaW5pdGlhbFZhbHVlcz8uZGVzY3JpcHRpb24/PyIiLHR5cGU6by5pbml0aWFsVmFsdWVzPy50eXBlPz8ib25lX3RpbWUiLHByaWNlOm8uaW5pdGlhbFZhbHVlcz8ucHJpY2U/PzAscHJpY2VfY3VycmVuY3k6by5pbml0aWFsVmFsdWVzPy5wcmljZV9jdXJyZW5jeT8/IlVTRCIsYmlsbGluZ19pbnRlcnZhbDpvLmluaXRpYWxWYWx1ZXM/LmJpbGxpbmdfaW50ZXJ2YWw/P3ZvaWQgMCxzdGF0dXM6by5pbml0aWFsVmFsdWVzPy5zdGF0dXM/PyJhY3RpdmUifSksYj1be2xhYmVsOiJPbmUtdGltZSIsdmFsdWU6Im9uZV90aW1lIn0se2xhYmVsOiJSZWN1cnJpbmciLHZhbHVlOiJyZWN1cnJpbmcifV0sZj1be2xhYmVsOiJNb250aGx5Iix2YWx1ZToibW9udGgifSx7bGFiZWw6IlllYXJseSIsdmFsdWU6InllYXIifV0sZz1be2xhYmVsOiJBY3RpdmUiLHZhbHVlOiJhY3RpdmUifSx7bGFiZWw6IkluYWN0aXZlIix2YWx1ZToiaW5hY3RpdmUifV0sVj1xLm1hcChtPT4oe2xhYmVsOm0sdmFsdWU6bX0pKTtKKCgpPT5lLnR5cGUsbT0+e209PT0ib25lX3RpbWUiJiYoZS5iaWxsaW5nX2ludGVydmFsPXZvaWQgMCl9KTtmdW5jdGlvbiBoKG0pe3AoInN1Ym1pdCIsbS5kYXRhKX1yZXR1cm4obSxpKT0+e2NvbnN0IGs9USx2PUssRT1XLFU9WCx4PWosQj1jZTtyZXR1cm4gZCgpLE8oQix7c2NoZW1hOm4obCksc3RhdGU6bihlKSxjbGFzczoic3BhY2UteS00IixvblN1Ym1pdDpofSx7ZGVmYXVsdDpjKCgpPT5bYSh2LHtsYWJlbDoiTmFtZSIsbmFtZToibmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKGsse21vZGVsVmFsdWU6bihlKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzBdfHwoaVswXT10PT5uKGUpLm5hbWU9dCkscGxhY2Vob2xkZXI6IlByb2R1Y3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhKHYse2xhYmVsOiJEZXNjcmlwdGlvbiIsbmFtZToiZGVzY3JpcHRpb24ifSx7ZGVmYXVsdDpjKCgpPT5bYShFLHttb2RlbFZhbHVlOm4oZSkuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMV18fChpWzFdPXQ9Pm4oZSkuZGVzY3JpcHRpb249dCkscGxhY2Vob2xkZXI6Ik9wdGlvbmFsIGRlc2NyaXB0aW9uIixyb3dzOjMsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxfKCJkaXYiLF9lLFthKHYse2xhYmVsOiJUeXBlIixuYW1lOiJ0eXBlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6YygoKT0+W2EoVSx7bW9kZWxWYWx1ZTpuKGUpLnR5cGUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMl18fChpWzJdPXQ9Pm4oZSkudHlwZT10KSxpdGVtczpiLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLG4oZSkudHlwZT09PSJyZWN1cnJpbmciPyhkKCksTyh2LHtrZXk6MCxsYWJlbDoiQmlsbGluZyBJbnRlcnZhbCIsbmFtZToiYmlsbGluZ19pbnRlcnZhbCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKFUse21vZGVsVmFsdWU6bihlKS5iaWxsaW5nX2ludGVydmFsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzNdfHwoaVszXT10PT5uKGUpLmJpbGxpbmdfaW50ZXJ2YWw9dCksaXRlbXM6ZiwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSk6QSgiIiwhMCldKSxfKCJkaXYiLGZlLFthKHYse2xhYmVsOiJQcmljZSIsbmFtZToicHJpY2UiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpjKCgpPT5bYShrLHttb2RlbFZhbHVlOm4oZSkucHJpY2UsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbNF18fChpWzRdPXQ9Pm4oZSkucHJpY2U9dCksbW9kZWxNb2RpZmllcnM6e251bWJlcjohMH0sdHlwZToibnVtYmVyIixtaW46IjAiLHBsYWNlaG9sZGVyOiIwIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGEodix7bGFiZWw6IkN1cnJlbmN5IixuYW1lOiJwcmljZV9jdXJyZW5jeSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKFUse21vZGVsVmFsdWU6bihlKS5wcmljZV9jdXJyZW5jeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVs1XXx8KGlbNV09dD0+bihlKS5wcmljZV9jdXJyZW5jeT10KSxpdGVtczpuKFYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSldKSxhKHYse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKFUse21vZGVsVmFsdWU6bihlKS5zdGF0dXMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbNl18fChpWzZdPXQ9Pm4oZSkuc3RhdHVzPXQpLGl0ZW1zOmcsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSksXygiZGl2Iix2ZSxbYSh4LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6aVs3XXx8KGlbN109dD0+cCgiY2FuY2VsIikpfSksYSh4LHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIixsb2FkaW5nOnMubG9hZGluZ30sbnVsbCw4LFsibG9hZGluZyJdKV0pXSksXzoxfSw4LFsic2NoZW1hIiwic3RhdGUiXSl9fX0pLGJlPU9iamVjdC5hc3NpZ24oeWUse19fbmFtZToiUHJvZHVjdEZvcm0ifSksZ2U9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJnLWVsZXZhdGVkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1kZWZhdWx0In0sUGU9e2NsYXNzOiJmbGV4LTEgbWluLXctMCJ9LFZlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxVZT17Y2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQgdHJ1bmNhdGUifSxoZT17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCBtdC0wLjUgdHJ1bmNhdGUifSx4ZT17Y2xhc3M6InRleHQtc20gdGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIG10LTEifSx3ZT17Y2xhc3M6InRleHQtbXV0ZWQgZm9udC1ub3JtYWwifSwkZT1TKHtfX25hbWU6IlByb2R1Y3RJdGVtIixwcm9wczp7cHJvZHVjdDp7fX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAocyx7ZW1pdDp1fSl7Y29uc3Qgbz1zLHA9dSxsPUYoKCk9Pm5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5Om8ucHJvZHVjdC5wcmljZV9jdXJyZW5jeSxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6MH0pLmZvcm1hdChvLnByb2R1Y3QucHJpY2UpKSxlPUYoKCk9Pm8ucHJvZHVjdC50eXBlPT09Im9uZV90aW1lIj8iT25lLXRpbWUiOm8ucHJvZHVjdC5iaWxsaW5nX2ludGVydmFsPT09Im1vbnRoIj8iL21vbnRoIjoiL3llYXIiKSxiPVtbe2xhYmVsOiJFZGl0IixpY29uOiJpLWx1Y2lkZS1wZW5jaWwiLG9uU2VsZWN0OigpPT5wKCJlZGl0IixvLnByb2R1Y3QpfSx7bGFiZWw6IkRlbGV0ZSIsaWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsY29sb3I6ImVycm9yIixvblNlbGVjdDooKT0+cCgiZGVsZXRlIixvLnByb2R1Y3QpfV1dO3JldHVybihmLGcpPT57Y29uc3QgVj1kZSxoPWosbT1tZTtyZXR1cm4gZCgpLHkoImRpdiIsZ2UsW18oImRpdiIsUGUsW18oImRpdiIsVmUsW18oInNwYW4iLFVlLCQocy5wcm9kdWN0Lm5hbWUpLDEpLGEoVix7Y29sb3I6cy5wcm9kdWN0LnN0YXR1cz09PSJhY3RpdmUiPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0OmMoKCk9PltSKCQocy5wcm9kdWN0LnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKV0pLHMucHJvZHVjdC5kZXNjcmlwdGlvbj8oZCgpLHkoInAiLGhlLCQocy5wcm9kdWN0LmRlc2NyaXB0aW9uKSwxKSk6QSgiIiwhMCksXygicCIseGUsW1IoJChuKGwpKSsiICIsMSksXygic3BhbiIsd2UsJChuKGUpKSwxKV0pXSksYShtLHtpdGVtczpifSx7ZGVmYXVsdDpjKCgpPT5bYShoLHtpY29uOiJpLWx1Y2lkZS1lbGxpcHNpcy12ZXJ0aWNhbCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJzbSJ9KV0pLF86MX0pXSl9fX0pLGtlPU9iamVjdC5hc3NpZ24oJGUse19fbmFtZToiUHJvZHVjdEl0ZW0ifSksRGU9e2tleTowLGNsYXNzOiJzcGFjZS15LTMifSxTZT17a2V5OjEsY2xhc3M6InRleHQtY2VudGVyIHB5LTEyIHRleHQtbXV0ZWQifSxFZT17a2V5OjIsY2xhc3M6InNwYWNlLXktMyJ9LEJlPVMoe19fbmFtZToiUHJvZHVjdExpc3QiLHByb3BzOntwcm9kdWN0czp7fSxsb2FkaW5nOnt0eXBlOkJvb2xlYW59fSxlbWl0czpbImVkaXQiLCJkZWxldGUiXSxzZXR1cChzLHtlbWl0OnV9KXtjb25zdCBvPXU7cmV0dXJuKHAsbCk9Pntjb25zdCBlPXVlLGI9WjtyZXR1cm4gZCgpLHkoImRpdiIsbnVsbCxbcy5sb2FkaW5nPyhkKCkseSgiZGl2IixEZSxbKGQoKSx5KEksbnVsbCxNKDMsZj0+YShlLHtrZXk6ZixjbGFzczoiaC0yMCByb3VuZGVkLWxnIn0pKSw2NCkpXSkpOnMucHJvZHVjdHMubGVuZ3RoPT09MD8oZCgpLHkoImRpdiIsU2UsW2EoYix7bmFtZToiaS1sdWNpZGUtcGFja2FnZSIsY2xhc3M6InNpemUtMTAgbXgtYXV0byBtYi0zIG9wYWNpdHktNDAifSksbFsyXXx8KGxbMl09XygicCIsbnVsbCwiTm8gcHJvZHVjdHMgeWV0IiwtMSkpXSkpOihkKCkseSgiZGl2IixFZSxbKGQoITApLHkoSSxudWxsLE0ocy5wcm9kdWN0cyxmPT4oZCgpLE8oa2Use2tleTpmLmlkLHByb2R1Y3Q6ZixvbkVkaXQ6bFswXXx8KGxbMF09Zz0+bygiZWRpdCIsZykpLG9uRGVsZXRlOmxbMV18fChsWzFdPWc9Pm8oImRlbGV0ZSIsZykpfSxudWxsLDgsWyJwcm9kdWN0Il0pKSksMTI4KSldKSldKX19fSksQ2U9T2JqZWN0LmFzc2lnbihCZSx7X19uYW1lOiJQcm9kdWN0TGlzdCJ9KSxOZT1TeW1ib2woInByb2R1Y3RzIiksT2U9e2NsYXNzOiJtYXgtdy0zeGwgbXgtYXV0byBwLTQifSxYZT1TKHtfX25hbWU6InByb2R1Y3RzIixzZXR1cChzKXtlZSh7dGl0bGU6IlByb2R1Y3RzIn0pO2NvbnN0IHU9cmUoKSxvPXRlKCkscD1OKCExKSxsPU4oITEpLGU9TihudWxsKSx7ZGF0YTpiLHN0YXR1czpmLGVycm9yOmcscmVmcmVzaDpWfT1uZSgicHJvZHVjdHMiLCgpPT51LmZldGNoUHJvZHVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTthZShnKTtjb25zdCBoPUYoKCk9PmYudmFsdWU9PT0icGVuZGluZyIpO2llKE5lLHtwcm9kdWN0czpiLGZldGNoUHJvZHVjdHM6bSxjcmVhdGVQcm9kdWN0OkUsdXBkYXRlUHJvZHVjdDpVLGRlbGV0ZVByb2R1Y3Q6eH0pO2FzeW5jIGZ1bmN0aW9uIG0oKXthd2FpdCBWKCl9ZnVuY3Rpb24gaSgpe2UudmFsdWU9bnVsbCxsLnZhbHVlPSEwfWZ1bmN0aW9uIGsodCl7ZS52YWx1ZT10LGwudmFsdWU9ITB9YXN5bmMgZnVuY3Rpb24gdih0KXtwLnZhbHVlPSEwO3RyeXtjb25zdCByPSEhZS52YWx1ZTtlLnZhbHVlP2F3YWl0IHUudXBkYXRlUHJvZHVjdChlLnZhbHVlLmlkLHQpOmF3YWl0IHUuY3JlYXRlUHJvZHVjdCh0KSxhd2FpdCBWKCksbC52YWx1ZT0hMSxvLmFkZCh7dGl0bGU6cj8iUHJvZHVjdCB1cGRhdGVkIjoiUHJvZHVjdCBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChyKXtjb25zdCB3PXI7by5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dz8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3AudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIEUodCl7cmV0dXJuIHUuY3JlYXRlUHJvZHVjdCh0KX1hc3luYyBmdW5jdGlvbiBVKHQscil7cmV0dXJuIHUudXBkYXRlUHJvZHVjdCh0LHIpfWFzeW5jIGZ1bmN0aW9uIHgodCl7YXdhaXQgdS5kZWxldGVQcm9kdWN0KHQpLGF3YWl0IFYoKX1hc3luYyBmdW5jdGlvbiBCKHQpe3RyeXthd2FpdCB4KHQuaWQpLG8uYWRkKHt0aXRsZToiUHJvZHVjdCBkZWxldGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChyKXtjb25zdCB3PXI7by5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dz8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19cmV0dXJuKHQscik9Pntjb25zdCB3PWosRz1zZSxIPWxlO3JldHVybiBkKCkseShJLG51bGwsW2EoRyx7aWQ6InByb2R1Y3RzIn0se2hlYWRlcjpjKCgpPT5bYShwZSx7dGl0bGU6IlByb2R1Y3RzIn0se3JpZ2h0OmMoKCk9PlthKHcse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvZHVjdCIsb25DbGljazpyWzBdfHwoclswXT1DPT5pKCkpfSldKSxfOjF9KV0pLGJvZHk6YygoKT0+W18oImRpdiIsT2UsW2EoQ2Use3Byb2R1Y3RzOm4oYiksbG9hZGluZzpuKGgpLG9uRWRpdDprLG9uRGVsZXRlOkJ9LG51bGwsOCxbInByb2R1Y3RzIiwibG9hZGluZyJdKV0pXSksXzoxfSksYShILHtvcGVuOm4obCksIm9uVXBkYXRlOm9wZW4iOnJbMl18fChyWzJdPUM9Pm9lKGwpP2wudmFsdWU9QzpudWxsKSx0aXRsZTpuKGUpPyJFZGl0IHByb2R1Y3QiOiJOZXcgcHJvZHVjdCIsdWk6e2JvZHk6Im92ZXJmbG93LXktYXV0byBtYXgtaC1bODB2aF0ifX0se2JvZHk6YygoKT0+W2EoYmUseyJpbml0aWFsLXZhbHVlcyI6bihlKT97Li4ubihlKSxkZXNjcmlwdGlvbjpuKGUpLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOm4ocCksb25TdWJtaXQ6dixvbkNhbmNlbDpyWzFdfHwoclsxXT1DPT5sLnZhbHVlPSExKX0sbnVsbCw4LFsiaW5pdGlhbC12YWx1ZXMiLCJsb2FkaW5nIl0pXSksXzoxfSw4LFsib3BlbiIsInRpdGxlIl0pXSw2NCl9fX0pO2V4cG9ydHtYZSBhcyBkZWZhdWx0fTsK", "/_nuxt/DtStfVmT.js": "aW1wb3J0e2FzIGFzIEMsZiBhcyBXLGcgYXMgRixwIGFzIEgsbyBhcyBpLGggYXMgeCx3IGFzIGEsYSBhcyBvLGMgYXMgdyxxIGFzIE8sYUkgYXMgWCxhSiBhcyBlZSx0IGFzIF8saSBhcyB0LGIgYXMgdixqIGFzIEssdiBhcyB5LEYgYXMgTixkIGFzIGMsWiBhcyB0ZSxIIGFzIGosUyBhcyBvZSxyIGFzIEEsbCBhcyBFLHUgYXMgc2UsRCBhcyBsZSxHIGFzIEwsRSBhcyBuZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIEd9ZnJvbSIuL1pKVmswb2xOLmpzIjtpbXBvcnR7XyBhcyBxfWZyb20iLi9fMmxTZHIxMy5qcyI7aW1wb3J0e18gYXMgSn1mcm9tIi4vQlNSS3FHclAuanMiO2ltcG9ydHtfIGFzIGFlfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0Ii4vQ3RhMTVzRy0uanMiO2Z1bmN0aW9uIFkoKXtmdW5jdGlvbiBJKCl7cmV0dXJuIEMoIi9hcGkvc2VsZmhvc3Qvc3RhdHVzIil9ZnVuY3Rpb24gcChyKXtyZXR1cm4gQygiL2FwaS9zZWxmaG9zdC9jZi1hY2NvdW50cyIse21ldGhvZDoiUE9TVCIsYm9keTp7dG9rZW46cn19KX1mdW5jdGlvbiBoKHIpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L2RlcGxveSIse21ldGhvZDoiUE9TVCIsYm9keTpyfSl9ZnVuY3Rpb24gZygpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L2Rpc2Nvbm5lY3QiLHttZXRob2Q6IlBPU1QifSl9ZnVuY3Rpb24gUygpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L2F1ZGl0Iil9ZnVuY3Rpb24gJCgpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L3NlY3JldHMiKX1mdW5jdGlvbiBrKHIpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L3NlY3JldHMiLHttZXRob2Q6IlBBVENIIixib2R5Ont1cGRhdGVzOnJ9fSl9ZnVuY3Rpb24gdShyKXtyZXR1cm4gQygiL2FwaS9zZWxmaG9zdC90ZXN0LWVtYWlsIix7bWV0aG9kOiJQT1NUIixib2R5Ont0bzpyfX0pfXJldHVybntmZXRjaFNlbGZob3N0U3RhdHVzOkksbGlzdENsb3VkZmxhcmVBY2NvdW50czpwLGRlcGxveVNlbGZob3N0OmgsZGlzY29ubmVjdFNlbGZob3N0OmcsZmV0Y2hTZWxmaG9zdEF1ZGl0OlMsZmV0Y2hTZWxmaG9zdFNlY3JldHM6JCxwYXRjaFNlbGZob3N0U2VjcmV0czprLHRlc3RTZWxmaG9zdEVtYWlsOnV9fWNvbnN0IHJlPXtjbGFzczoic3BhY2UteS02In0saWU9e2NsYXNzOiJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbWItMiJ9LGRlPXtjbGFzczoibXQtMiBzcGFjZS15LTEifSx1ZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sY2U9e2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxwZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sZmU9e2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxtZT17Y2xhc3M6InNwYWNlLXktMyJ9LHllPXtjbGFzczoiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMifSx2ZT17Y2xhc3M6ImZsZXgtMSBtaW4tdy0wIn0sX2U9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LGhlPXtjbGFzczoidGV4dC14cyBmb250LW1vbm8ifSxnZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sa2U9e2tleTowLGNsYXNzOiJtdC0zIGZsZXggZ2FwLTIifSx4ZT1XKHtfX25hbWU6IlNlbGZob3N0U2VjcmV0c0NhcmQiLHByb3BzOnt3b3JrZXJzRGV2VXJsOnt9fSxzZXR1cChJKXtjb25zdCBwPUksaD1GKCksZz1ZKCkse2RhdGE6UyxyZWZyZXNoOiR9PUgoInNlbGZob3N0LXNlY3JldHMiLCgpPT5nLmZldGNoU2VsZmhvc3RTZWNyZXRzKCkse2RlZmF1bHQ6KCk9Pm51bGx9KSxrPW9lKHt9KSx1PUEobnVsbCkscj1FKCgpPT57Y29uc3QgZj1TLnZhbHVlPy5pdGVtcz8/W10scz17c3lzdGVtOltdLG9hdXRoOltdLHNtdHA6W10scGF5bWVudHM6W10sc3VwcG9ydDpbXSxhdXRoOltdfTtmb3IoY29uc3QgbSBvZiBmKXNbbS5jYXRlZ29yeV0ucHVzaChtKTtyZXR1cm4gc30pLGw9e3N5c3RlbToiU3lzdGVtIChhdXRvLWdlbmVyYXRlZCkiLG9hdXRoOiJPQXV0aCBwcm92aWRlcnMiLHNtdHA6IkVtYWlsIChTTVRQKSIscGF5bWVudHM6IlBheW1lbnRzIixzdXBwb3J0OiJTdXBwb3J0IixhdXRoOiJBdXRoZW50aWNhdGlvbiJ9LGI9RSgoKT0+cC53b3JrZXJzRGV2VXJsP3tnb29nbGU6YCR7cC53b3JrZXJzRGV2VXJsfS9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2tgLGdpdGh1YjpgJHtwLndvcmtlcnNEZXZVcmx9L2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFja2B9Ontnb29nbGU6IiIsZ2l0aHViOiIifSk7YXN5bmMgZnVuY3Rpb24gQihmKXtjb25zdCBzPWtbZl0/LnRyaW0oKTtpZighcyl7aC5hZGQoe3RpdGxlOiJWYWx1ZSBpcyBlbXB0eSIsY29sb3I6Indhcm5pbmcifSk7cmV0dXJufXUudmFsdWU9Zjt0cnl7Y29uc3QgbT1hd2FpdCBnLnBhdGNoU2VsZmhvc3RTZWNyZXRzKFt7a2V5OmYsdmFsdWU6c31dKTtoLmFkZCh7dGl0bGU6YCR7Zn0gc2F2ZWRgLGRlc2NyaXB0aW9uOm0ucHVzaGVkVG9DbG91ZGZsYXJlPyJQdXNoZWQgdG8gZGVwbG95ZWQgd29ya2VyLiI6IlN0b3JlZC4gV2lsbCBhcHBseSBvbiBuZXh0IGRlcGxveS4iLGNvbG9yOiJzdWNjZXNzIn0pLGtbZl09IiIsYXdhaXQgJCgpfWNhdGNoKG0pe2NvbnN0IFQ9bTtoLmFkZCh7dGl0bGU6IlNhdmUgZmFpbGVkIixkZXNjcmlwdGlvbjpUPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7dS52YWx1ZT1udWxsfX1hc3luYyBmdW5jdGlvbiBEKGYpe2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGYpLGguYWRkKHt0aXRsZToiQ2FsbGJhY2sgVVJMIGNvcGllZCIsY29sb3I6InN1Y2Nlc3MifSl9cmV0dXJuKGYscyk9Pntjb25zdCBtPUssVD1HLG49cSxlPWosVT1KO3JldHVybiBpKCkseChVLG51bGwse2hlYWRlcjphKCgpPT5bLi4uc1syXXx8KHNbMl09W28oInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgQ29uZmlndXJhdGlvbiAiLC0xKSxvKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sIiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHNlY3JldHMgb24geW91ciBkZXBsb3llZCBXb3JrZXIuIEF1dG8tZ2VuZXJhdGVkIHZhbHVlcyBhcmUgc3RhYmxlIGFjcm9zcyByZWRlcGxveXMuICIsLTEpXSldKSxkZWZhdWx0OmEoKCk9PltvKCJkaXYiLHJlLFsoaSghMCksdyhOLG51bGwsTyh0KHIpLChQLFYpPT5YKChpKCksdygiZGl2Iix7a2V5OlZ9LFtvKCJoMyIsaWUsXyhsW1ZdKSwxKSxWPT09Im9hdXRoIiYmKHQoYikuZ29vZ2xlfHx0KGIpLmdpdGh1Yik/KGkoKSx4KFQse2tleTowLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLWluZm8iLGNsYXNzOiJtYi0zIn0se2Rlc2NyaXB0aW9uOmEoKCk9PltzWzVdfHwoc1s1XT1vKCJwIix7Y2xhc3M6InRleHQteHMifSwiIFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6ICIsLTEpKSxvKCJkaXYiLGRlLFtvKCJkaXYiLHVlLFtzWzNdfHwoc1szXT1vKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiR29vZ2xlOiIsLTEpKSxvKCJjb2RlIixjZSxfKHQoYikuZ29vZ2xlKSwxKSx2KG0se3NpemU6InhzIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtY29weSIsb25DbGljazpzWzBdfHwoc1swXT1kPT5EKHQoYikuZ29vZ2xlKSl9KV0pLG8oImRpdiIscGUsW3NbNF18fChzWzRdPW8oInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJHaXRIdWI6IiwtMSkpLG8oImNvZGUiLGZlLF8odChiKS5naXRodWIpLDEpLHYobSx7c2l6ZToieHMiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS1jb3B5IixvbkNsaWNrOnNbMV18fChzWzFdPWQ9PkQodChiKS5naXRodWIpKX0pXSldKV0pLF86MX0pKTp5KCIiLCEwKSxvKCJkaXYiLG1lLFsoaSghMCksdyhOLG51bGwsTyhQLGQ9PihpKCksdygiZGl2Iix7a2V5OmQua2V5LGNsYXNzOiJib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZCBwLTMifSxbbygiZGl2Iix5ZSxbbygiZGl2Iix2ZSxbbygiZGl2IixfZSxbbygiY29kZSIsaGUsXyhkLmtleSksMSksZC5pc1NldD8oaSgpLHgobix7a2V5OjAsY29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToieHMifSx7ZGVmYXVsdDphKCgpPT5bLi4uc1s2XXx8KHNbNl09W2MoIiBTZXQgIiwtMSldKV0pLF86MX0pKTooaSgpLHgobix7a2V5OjEsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToieHMifSx7ZGVmYXVsdDphKCgpPT5bLi4uc1s3XXx8KHNbN109W2MoIiBOb3Qgc2V0ICIsLTEpXSldKSxfOjF9KSksZC5pc0F1dG8/KGkoKSx4KG4se2tleToyLGNvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6YSgoKT0+Wy4uLnNbOF18fChzWzhdPVtjKCIgQXV0byAiLC0xKV0pXSksXzoxfSkpOnkoIiIsITApXSksbygicCIsZ2UsXyhkLmRlc2NyaXB0aW9uKSwxKV0pXSksZC5pc0F1dG8/eSgiIiwhMCk6KGkoKSx3KCJkaXYiLGtlLFt2KGUse21vZGVsVmFsdWU6dChrKVtkLmtleV0sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOlI9PnQoaylbZC5rZXldPVIsdHlwZTpkLnR5cGU9PT0ic2VjcmV0X3RleHQiPyJwYXNzd29yZCI6InRleHQiLHBsYWNlaG9sZGVyOmQuaXNTZXQ/IlBhc3RlIG5ldyB2YWx1ZSB0byBvdmVyd3JpdGUiOiJFbnRlciB2YWx1ZSIsY2xhc3M6ImZsZXgtMSBmb250LW1vbm8iLGF1dG9jb21wbGV0ZToib2ZmIixvbktleXVwOnRlKFI9PkIoZC5rZXkpLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwidHlwZSIsInBsYWNlaG9sZGVyIiwib25LZXl1cCJdKSx2KG0se2xvYWRpbmc6dCh1KT09PWQua2V5LGRpc2FibGVkOiF0KGspW2Qua2V5XT8udHJpbSgpLHNpemU6InNtIixvbkNsaWNrOlI9PkIoZC5rZXkpfSx7ZGVmYXVsdDphKCgpPT5bLi4uc1s5XXx8KHNbOV09W2MoIiBTYXZlICIsLTEpXSldKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pXSkpXSkpKSwxMjgpKV0pXSkpLFtbZWUsUC5sZW5ndGhdXSkpLDEyOCkpXSldKSxfOjF9KX19fSksYmU9T2JqZWN0LmFzc2lnbih4ZSx7X19uYW1lOiJTZWxmaG9zdFNlY3JldHNDYXJkIn0pLHdlPXtjbGFzczoibWF4LXctMnhsIG14LWF1dG8gcC02IHNwYWNlLXktNiJ9LFNlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIn0sQ2U9e2NsYXNzOiJzcGFjZS15LTIgdGV4dC1zbSJ9LCRlPXtrZXk6MH0sVWU9WyJocmVmIl0sQWU9e2tleToxfSxEZT17a2V5OjJ9LFRlPXtjbGFzczoidGV4dC14cyJ9LFBlPXtrZXk6MyxjbGFzczoidGV4dC1lcnJvciJ9LFZlPXtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LFJlPXtjbGFzczoic3BhY2UteS00In0sRWU9Imh0dHBzOi8vZGFzaC5jbG91ZGZsYXJlLmNvbS9wcm9maWxlL2FwaS10b2tlbnMvY3JlYXRlIixMZT1XKHtfX25hbWU6InNlbGYtaG9zdCIsc2V0dXAoSSl7c2Uoe3RpdGxlOiJTZWxmLWhvc3RpbmcifSk7Y29uc3QgcD1GKCksaD1ZKCksZz1BKCIiKSxTPUEoITEpLCQ9QSghMSksaz1BKCExKSx1PUEoW10pLHI9QSh2b2lkIDApLHtkYXRhOmwscmVmcmVzaDpifT1IKCJzZWxmaG9zdC1zdGF0dXMiLCgpPT5oLmZldGNoU2VsZmhvc3RTdGF0dXMoKSx7ZGVmYXVsdDooKT0+bnVsbH0pLEI9RSgoKT0+e2NvbnN0IG49bC52YWx1ZT8uc3RhdHVzO3JldHVybiBuPT09ImRlcGxveWVkIj8ic3VjY2VzcyI6bj09PSJmYWlsZWQiPyJlcnJvciI6Indhcm5pbmcifSksRD1FKCgpPT57Y29uc3Qgbj1sLnZhbHVlPy5jZl90b2tlbl9leHBpcmVzX2F0O3JldHVybiBuP01hdGguZmxvb3IoKG5ldyBEYXRlKG4pLmdldFRpbWUoKS1EYXRlLm5vdygpKS8oMWUzKjYwKjYwKjI0KSk6bnVsbH0pO2FzeW5jIGZ1bmN0aW9uIGYoKXtjb25zdCBuPWcudmFsdWUudHJpbSgpO2lmKG4pe2sudmFsdWU9ITA7dHJ5e2NvbnN0IGU9YXdhaXQgaC5saXN0Q2xvdWRmbGFyZUFjY291bnRzKG4pO3UudmFsdWU9ZS5hY2NvdW50cyxyLnZhbHVlPXUudmFsdWUubGVuZ3RoPT09MT91LnZhbHVlWzBdLmlkOnZvaWQgMH1jYXRjaChlKXtjb25zdCBVPWU7cC5hZGQoe3RpdGxlOiJDb3VsZCBub3QgcmVhZCBhY2NvdW50cyBmcm9tIHRoaXMgdG9rZW4iLGRlc2NyaXB0aW9uOlU/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJWZXJpZnkgdGhlIHRva2VuIGhhcyBBY2NvdW50IFNldHRpbmdzOiBSZWFkLiIsY29sb3I6ImVycm9yIn0pLHUudmFsdWU9W10sci52YWx1ZT12b2lkIDB9ZmluYWxseXtrLnZhbHVlPSExfX19YXN5bmMgZnVuY3Rpb24gcygpe1MudmFsdWU9ITA7dHJ5e2NvbnN0IG49Zy52YWx1ZS50cmltKCl8fHZvaWQgMDtpZihuJiZ1LnZhbHVlLmxlbmd0aD4xJiYhci52YWx1ZSl7cC5hZGQoe3RpdGxlOiJQaWNrIGEgQ2xvdWRmbGFyZSBhY2NvdW50Iixjb2xvcjoid2FybmluZyJ9KTtyZXR1cm59Y29uc3QgZT1hd2FpdCBoLmRlcGxveVNlbGZob3N0KHt0b2tlbjpuLGFjY291bnRfaWQ6ci52YWx1ZX0pO3AuYWRkKHt0aXRsZTpgRGVwbG95ZWQgJHtlLnZlcnNpb259YCxkZXNjcmlwdGlvbjplLnVybCxjb2xvcjoic3VjY2VzcyIsaWNvbjoiaS1sdWNpZGUtY2hlY2stY2lyY2xlIn0pLGcudmFsdWU9IiIsdS52YWx1ZT1bXSxyLnZhbHVlPXZvaWQgMCxhd2FpdCBiKCl9Y2F0Y2gobil7Y29uc3QgZT1uO2lmKGU/LmRhdGE/LmRhdGE/LmNvZGU9PT0ibXVsdGlwbGVfYWNjb3VudHMiJiZlLmRhdGEuZGF0YS5hY2NvdW50cyl7dS52YWx1ZT1lLmRhdGEuZGF0YS5hY2NvdW50cyxyLnZhbHVlPXZvaWQgMCxwLmFkZCh7dGl0bGU6Ik11bHRpcGxlIENsb3VkZmxhcmUgYWNjb3VudHMiLGRlc2NyaXB0aW9uOiJQaWNrIHdoaWNoIGFjY291bnQgdG8gZGVwbG95IGludG8gYmVsb3csIHRoZW4gY2xpY2sgRGVwbG95IGFnYWluLiIsY29sb3I6Indhcm5pbmcifSk7cmV0dXJufXAuYWRkKHt0aXRsZToiRGVwbG95IGZhaWxlZCIsZGVzY3JpcHRpb246ZT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/ZT8ubWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciIsaWNvbjoiaS1sdWNpZGUtYWxlcnQtdHJpYW5nbGUifSl9ZmluYWxseXtTLnZhbHVlPSExfX1hc3luYyBmdW5jdGlvbiBtKCl7JC52YWx1ZT0hMDt0cnl7YXdhaXQgaC5kaXNjb25uZWN0U2VsZmhvc3QoKSxwLmFkZCh7dGl0bGU6IkRpc2Nvbm5lY3RlZCIsY29sb3I6InN1Y2Nlc3MifSksdS52YWx1ZT1bXSxyLnZhbHVlPXZvaWQgMCxhd2FpdCBiKCl9Y2F0Y2gobil7Y29uc3QgZT1uO3AuYWRkKHt0aXRsZToiRGlzY29ubmVjdCBmYWlsZWQiLGRlc2NyaXB0aW9uOmU/LmRhdGE/LnN0YXR1c01lc3NhZ2UsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7JC52YWx1ZT0hMX19Y29uc3QgVD1FKCgpPT51LnZhbHVlLm1hcChuPT4oe2xhYmVsOmAke24ubmFtZX0g4oCUICR7bi5pZC5zbGljZSgwLDgpfeKApmAsdmFsdWU6bi5pZH0pKSk7cmV0dXJuKG4sZSk9Pntjb25zdCBVPUssUD1HLFY9cSxkPUosUj1qLE09bGUsWj1uZSxRPWFlO3JldHVybiBpKCkseChRLHtpZDoic2VsZi1ob3N0In0se2hlYWRlcjphKCgpPT5bLi4uZVsyXXx8KGVbMl09W28oImRpdiIse2NsYXNzOiJweC00IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQifSxbbygiaDEiLHtjbGFzczoidGV4dC1sZyBmb250LXNlbWlib2xkIn0sIiBTZWxmLWhvc3RpbmcgIiksbygicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIERlcGxveSB0aGlzIGFwcGxpY2F0aW9uIHRvIHlvdXIgb3duIENsb3VkZmxhcmUgYWNjb3VudC4gIildLC0xKV0pXSksYm9keTphKCgpPT5bbygiZGl2Iix3ZSxbdChsKT8udXBkYXRlX2F2YWlsYWJsZT8oaSgpLHgoUCx7a2V5OjAsY29sb3I6Indhcm5pbmciLGljb246ImktbHVjaWRlLXJlZnJlc2gtY3ciLHRpdGxlOiJVcGRhdGUgYXZhaWxhYmxlIixkZXNjcmlwdGlvbjpgTmV3IHZlcnNpb24gJHt0KGwpLmxhdGVzdF92ZXJzaW9ufSBpcyBhdmFpbGFibGUgKGRlcGxveWVkOiAke3QobCkuZGVwbG95ZWRfdmVyc2lvbn0pYH0se2FjdGlvbnM6YSgoKT0+W3YoVSx7bG9hZGluZzp0KFMpLGNvbG9yOiJ3YXJuaW5nIixzaXplOiJzbSIsb25DbGljazpzfSx7ZGVmYXVsdDphKCgpPT5bLi4uZVszXXx8KGVbM109W2MoIiBVcGRhdGUgIiwtMSldKV0pLF86MX0sOCxbImxvYWRpbmciXSldKSxfOjF9LDgsWyJkZXNjcmlwdGlvbiJdKSk6eSgiIiwhMCksdChEKSE9PW51bGwmJnQoRCk8PTE0PyhpKCkseChQLHtrZXk6MSxjb2xvcjoid2FybmluZyIsaWNvbjoiaS1sdWNpZGUtY2xvY2siLHRpdGxlOiJDbG91ZGZsYXJlIHRva2VuIGV4cGlyaW5nIHNvb24iLGRlc2NyaXB0aW9uOmBZb3VyIHN0b3JlZCB0b2tlbiBleHBpcmVzIGluICR7dChEKX0gZGF5KHMpLiBQYXN0ZSBhIG5ldyB0b2tlbiBhbmQgcmVkZXBsb3kgdG8gcmVmcmVzaCBpdC5gfSxudWxsLDgsWyJkZXNjcmlwdGlvbiJdKSk6eSgiIiwhMCksdChsKT8uc3RhdHVzJiZ0KGwpLnN0YXR1cyE9PSJpZGxlIj8oaSgpLHgoZCx7a2V5OjJ9LHtoZWFkZXI6YSgoKT0+W28oImRpdiIsU2UsW2VbNF18fChlWzRdPW8oInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgRGVwbG95bWVudCAiLC0xKSksdihWLHtjb2xvcjp0KEIpLHZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0OmEoKCk9PltjKF8odChsKS5zdGF0dXMpLDEpXSksXzoxfSw4LFsiY29sb3IiXSldKV0pLGZvb3RlcjphKCgpPT5bdihVLHtsb2FkaW5nOnQoJCksY29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixzaXplOiJzbSIsb25DbGljazptfSx7ZGVmYXVsdDphKCgpPT5bLi4uZVs5XXx8KGVbOV09W2MoIiBEaXNjb25uZWN0ICIsLTEpXSldKSxfOjF9LDgsWyJsb2FkaW5nIl0pXSksZGVmYXVsdDphKCgpPT5bbygiZGl2IixDZSxbdChsKS53b3JrZXJzX2Rldl91cmw/KGkoKSx3KCJwIiwkZSxbZVs1XXx8KGVbNV09bygic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIlVSTDoiLC0xKSksbygiYSIse2hyZWY6dChsKS53b3JrZXJzX2Rldl91cmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIG1sLTEifSxfKHQobCkud29ya2Vyc19kZXZfdXJsKSw5LFVlKV0pKTp5KCIiLCEwKSx0KGwpLmRlcGxveWVkX3ZlcnNpb24/KGkoKSx3KCJwIixBZSxbZVs2XXx8KGVbNl09bygic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIlZlcnNpb246IiwtMSkpLGMoIiAiK18odChsKS5kZXBsb3llZF92ZXJzaW9uKSwxKV0pKTp5KCIiLCEwKSx0KGwpLmNmX2FjY291bnRfaWQ/KGkoKSx3KCJwIixEZSxbZVs3XXx8KGVbN109bygic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkNsb3VkZmxhcmUgYWNjb3VudDoiLC0xKSksZVs4XXx8KGVbOF09YygpKSxvKCJjb2RlIixUZSxfKHQobCkuY2ZfYWNjb3VudF9pZCksMSldKSk6eSgiIiwhMCksdChsKS5sYXN0X2Vycm9yPyhpKCksdygicCIsUGUsXyh0KGwpLmxhc3RfZXJyb3IpLDEpKTp5KCIiLCEwKV0pXSksXzoxfSkpOnkoIiIsITApLHQobCk/LnN0YXR1cz09PSJkZXBsb3llZCI/KGkoKSx4KGJlLHtrZXk6Mywid29ya2Vycy1kZXYtdXJsIjp0KGwpLndvcmtlcnNfZGV2X3VybH0sbnVsbCw4LFsid29ya2Vycy1kZXYtdXJsIl0pKTp5KCIiLCEwKSx2KGQsbnVsbCx7aGVhZGVyOmEoKCk9PltvKCJwIixWZSxfKHQobCk/LnN0YXR1cz09PSJkZXBsb3llZCI/IlJlZGVwbG95IjoiRGVwbG95IHRvIHlvdXIgQ2xvdWRmbGFyZSBhY2NvdW50IiksMSldKSxkZWZhdWx0OmEoKCk9PltvKCJkaXYiLFJlLFtvKCJkZXRhaWxzIix7Y2xhc3M6InRleHQtc20ifSxbZVsxNV18fChlWzE1XT1vKCJzdW1tYXJ5Iix7Y2xhc3M6ImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUifSwiIEhvdyBkbyBJIGdldCBhIENsb3VkZmxhcmUgQVBJIHRva2VuPyAiLC0xKSksbygib2wiLHtjbGFzczoibXQtMiBsaXN0LWRlY2ltYWwgcGwtNiBzcGFjZS15LTEgdGV4dC1tdXRlZCJ9LFtvKCJsaSIsbnVsbCxbZVsxMF18fChlWzEwXT1jKCIgR28gdG8gIiwtMSkpLG8oImEiLHtocmVmOkVlLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSJ9LCIgQ2xvdWRmbGFyZSDihpIgTXkgUHJvZmlsZSDihpIgQVBJIFRva2VucyDihpIgQ3JlYXRlIFRva2VuICIpXSksZVsxMV18fChlWzExXT1vKCJsaSIsbnVsbCxbYygiQ2hvb3NlICIpLG8oInN0cm9uZyIsbnVsbCwiQ3JlYXRlIEN1c3RvbSBUb2tlbiIpXSwtMSkpLGVbMTJdfHwoZVsxMl09bygibGkiLG51bGwsW2MoIiBBZGQgdGhlc2UgcGVybWlzc2lvbnMgKGFsbCAiKSxvKCJzdHJvbmciLG51bGwsIkVkaXQiKSxjKCIgdW5sZXNzIG5vdGVkKTogV29ya2VycyBTY3JpcHRzLCBXb3JrZXJzIEtWIFN0b3JhZ2UsIFdvcmtlcnMgUjIgU3RvcmFnZSwgRDEsIEFjY291bnQgU2V0dGluZ3MgKFJlYWQpLCBVc2VyIERldGFpbHMgKFJlYWQpICIpXSwtMSkpLGVbMTNdfHwoZVsxM109bygibGkiLG51bGwsIkFjY291bnQgUmVzb3VyY2VzOiBpbmNsdWRlIGFsbCBhY2NvdW50cyAob3IgcGljayBvbmUpIiwtMSkpLGVbMTRdfHwoZVsxNF09bygibGkiLG51bGwsIkNvbnRpbnVlIOKGkiBDcmVhdGUgVG9rZW4g4oaSIGNvcHkgdGhlIHRva2VuIChzaG93biBvbmNlKSIsLTEpKV0pXSksdihNLHtsYWJlbDoiQ2xvdWRmbGFyZSBBUEkgVG9rZW4iLGhlbHA6IkxlYXZlIGJsYW5rIHRvIHJlZGVwbG95IHVzaW5nIHRoZSBzdG9yZWQgdG9rZW4uIn0se2RlZmF1bHQ6YSgoKT0+W3YoUix7bW9kZWxWYWx1ZTp0KGcpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplWzBdfHwoZVswXT16PT5MKGcpP2cudmFsdWU9ejpudWxsKSx0eXBlOiJwYXNzd29yZCIscGxhY2Vob2xkZXI6IuKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAoiIsY2xhc3M6InctZnVsbCBmb250LW1vbm8iLGF1dG9jb21wbGV0ZToib2ZmIixvbkJsdXI6Zn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLHQodSkubGVuZ3RoPjA/KGkoKSx4KE0se2tleTowLGxhYmVsOiJDbG91ZGZsYXJlIGFjY291bnQiLGhlbHA6dCh1KS5sZW5ndGg9PT0xPyJBdXRvLXNlbGVjdGVkICh0aGlzIHRva2VuIGhhcyBhY2Nlc3MgdG8gb25lIGFjY291bnQpLiI6IlBpY2sgd2hpY2ggYWNjb3VudCB0byBkZXBsb3kgaW50by4ifSx7ZGVmYXVsdDphKCgpPT5bdihaLHttb2RlbFZhbHVlOnQociksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMV18fChlWzFdPXo9Pkwocik/ci52YWx1ZT16Om51bGwpLGl0ZW1zOnQoVCksbG9hZGluZzp0KGspLGRpc2FibGVkOnQodSkubGVuZ3RoPT09MSxwbGFjZWhvbGRlcjoiU2VsZWN0IGFuIGFjY291bnQiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiLCJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKSxfOjF9LDgsWyJoZWxwIl0pKTp5KCIiLCEwKSx2KFUse2xvYWRpbmc6dChTKSxkaXNhYmxlZDp0KGwpPy5zdGF0dXM9PT0iZGVwbG95aW5nIixvbkNsaWNrOnN9LHtkZWZhdWx0OmEoKCk9PltjKF8odChsKT8uc3RhdHVzPT09ImRlcGxveWVkIj8iUmVkZXBsb3kiOiJEZXBsb3kiKSwxKV0pLF86MX0sOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pXSksXzoxfSldKV0pLF86MX0pfX19KTtleHBvcnR7TGUgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DuEAfnhq.js": "aW1wb3J0e2YgYXMgRCx1IGFzIGgsZyBhcyBJLHAseiBhcyBfLFIgYXMgQixvIGFzIGYsYyBhcyB2LGIgYXMgbCx3IGFzIHMsYSBhcyBjLEQgYXMgTixIIGFzICQsaSBhcyBuLGogYXMgayx2IGFzIEUsUyBhcyBGLHIgYXMgQX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIEt9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBUfWZyb20iLi9DVzhmS25GRS5qcyI7aW1wb3J0e3UgYXMgan1mcm9tIi4vRGM0NlF3REouanMiO2ltcG9ydCIuL0M3WXk2dFIzLmpzIjtjb25zdCB6PXtjbGFzczoic3BhY2UteS02In0sSD17Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgZ2FwLTQgbXQtNCJ9LE09e2NsYXNzOiJtdC00IGZsZXgganVzdGlmeS1lbmQifSxMPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIHRleHQtY2VudGVyIHB5LTYifSxRPUQoe19fbmFtZToiaW52b2ljZSIsc2V0dXAoUCl7aCh7dGl0bGU6Ikludm9pY2UifSk7Y29uc3QgZD1qKCksbT1JKCkse2RhdGE6ZyxlcnJvcjpWfT1wKCJiaWxsaW5nLXNldHRpbmdzIiwoKT0+ZC5mZXRjaEJpbGxpbmdTZXR0aW5ncygpLHtkZWZhdWx0OigpPT4oe29yZ2FuaXphdGlvbl9pZDoiIixjdXJyZW5jeToiVVNEIn0pfSk7XyhWKTtjb25zdHtkYXRhOnksZXJyb3I6VX09cCgiaW52b2ljZXMiLCgpPT5kLmZldGNoSW52b2ljZXMoKSx7ZGVmYXVsdDooKT0+W119KTtfKFUpO2NvbnN0IGU9Rih7Y29tcGFueV9uYW1lOiIiLHRheF9pZDoiIixhZGRyZXNzOiIiLGNpdHk6IiIsY291bnRyeToiVVMiLGN1cnJlbmN5OiJVU0QifSk7QihnLHQ9Pnt0JiYoZS5jb21wYW55X25hbWU9dC5jb21wYW55X25hbWU/PyIiLGUudGF4X2lkPXQudGF4X2lkPz8iIixlLmFkZHJlc3M9dC5hZGRyZXNzPz8iIixlLmNpdHk9dC5jaXR5Pz8iIixlLmNvdW50cnk9dC5jb3VudHJ5Pz8iVVMiLGUuY3VycmVuY3k9dC5jdXJyZW5jeT8/IlVTRCIpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgdT1BKCExKTthc3luYyBmdW5jdGlvbiBTKCl7dS52YWx1ZT0hMDt0cnl7YXdhaXQgZC51cGRhdGVCaWxsaW5nU2V0dGluZ3Moe2NvbXBhbnlfbmFtZTplLmNvbXBhbnlfbmFtZXx8dm9pZCAwLHRheF9pZDplLnRheF9pZHx8dm9pZCAwLGFkZHJlc3M6ZS5hZGRyZXNzfHx2b2lkIDAsY2l0eTplLmNpdHl8fHZvaWQgMCxjb3VudHJ5OmUuY291bnRyeXx8dm9pZCAwLGN1cnJlbmN5OmUuY3VycmVuY3l8fHZvaWQgMH0pLG0uYWRkKHt0aXRsZToiU2V0dGluZ3Mgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKHQpe2NvbnN0IGE9dDttLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7dS52YWx1ZT0hMX19Y29uc3QgeD1be2FjY2Vzc29yS2V5OiJudW1iZXIiLGhlYWRlcjoiTnVtYmVyIn0se2FjY2Vzc29yS2V5OiJzdGF0dXMiLGhlYWRlcjoiU3RhdHVzIn0se2FjY2Vzc29yS2V5OiJ0b3RhbCIsaGVhZGVyOiJUb3RhbCIsY2VsbDooe3Jvdzp0fSk9Pm5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5OnQub3JpZ2luYWwuY3VycmVuY3l9KS5mb3JtYXQodC5vcmlnaW5hbC50b3RhbC8xMDApfSx7YWNjZXNzb3JLZXk6ImNyZWF0ZWRfYXQiLGhlYWRlcjoiRGF0ZSIsY2VsbDooe3Jvdzp0fSk9Pm5ldyBEYXRlKHQub3JpZ2luYWwuY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9XTtyZXR1cm4odCxhKT0+e2NvbnN0IHI9JCxpPU4sYj1rLHc9SyxDPVQ7cmV0dXJuIGYoKSx2KCJkaXYiLHosW2wodyx7dGl0bGU6Ikludm9pY2UgSW5mb3JtYXRpb24iLGRlc2NyaXB0aW9uOiJDb21wYW55IGRldGFpbHMgdGhhdCBhcHBlYXIgb24gaW52b2ljZXMuIix2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpzKCgpPT5bYygiZGl2IixILFtsKGkse2xhYmVsOiJDb21wYW55IG5hbWUifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY29tcGFueV9uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzBdfHwoYVswXT1vPT5uKGUpLmNvbXBhbnlfbmFtZT1vKSxwbGFjZWhvbGRlcjoiQWNtZSBJbmMuIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IlRheCBJRCJ9LHtkZWZhdWx0OnMoKCk9PltsKHIse21vZGVsVmFsdWU6bihlKS50YXhfaWQsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMV18fChhWzFdPW89Pm4oZSkudGF4X2lkPW8pLHBsYWNlaG9sZGVyOiIxMjMtNDU2LTc4OSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsKGkse2xhYmVsOiJBZGRyZXNzIixjbGFzczoic206Y29sLXNwYW4tMiJ9LHtkZWZhdWx0OnMoKCk9PltsKHIse21vZGVsVmFsdWU6bihlKS5hZGRyZXNzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzJdfHwoYVsyXT1vPT5uKGUpLmFkZHJlc3M9bykscGxhY2Vob2xkZXI6IjEyMyBNYWluIFN0IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IkNpdHkifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY2l0eSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVszXXx8KGFbM109bz0+bihlKS5jaXR5PW8pLHBsYWNlaG9sZGVyOiJTYW4gRnJhbmNpc2NvIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IkNvdW50cnkifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY291bnRyeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVs0XXx8KGFbNF09bz0+bihlKS5jb3VudHJ5PW8pLHBsYWNlaG9sZGVyOiJVUyIsY2xhc3M6InctZnVsbCIsbWF4bGVuZ3RoOiIyIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IkRlZmF1bHQgQ3VycmVuY3kifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY3VycmVuY3ksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbNV18fChhWzVdPW89Pm4oZSkuY3VycmVuY3k9bykscGxhY2Vob2xkZXI6IlVTRCIsY2xhc3M6InctZnVsbCIsbWF4bGVuZ3RoOiIzIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pXSksYygiZGl2IixNLFtsKGIse2xhYmVsOiJTYXZlIixsb2FkaW5nOm4odSksb25DbGljazphWzZdfHwoYVs2XT1vPT5TKCkpfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9KSxjKCJkaXYiLG51bGwsW2FbN118fChhWzddPWMoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMyJ9LFtjKCJoMyIse2NsYXNzOiJmb250LXNlbWlib2xkIn0sIiBJbnZvaWNlcyAiKV0sLTEpKSxsKEMse2RhdGE6bih5KSxjb2x1bW5zOnh9LG51bGwsOCxbImRhdGEiXSksbih5KS5sZW5ndGg9PT0wPyhmKCksdigicCIsTCwiIE5vIGludm9pY2VzIHlldC4gIikpOkUoIiIsITApXSldKX19fSk7ZXhwb3J0e1EgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DvdhypDi.js": "aW1wb3J0e2E3IGFzIEIsZiBhcyB4LGF1IGFzIEcsYmMgYXMgTyxhOSBhcyBQLGEzIGFzIGssbyBhcyB3LGggYXMgTSx3IGFzIGcsYiBhcyBOLGksUCBhcyBWLEwgYXMgQSxyIGFzIGN9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7ZiBhcyAkLEUgYXMgRCxhIGFzIFV9ZnJvbSIuL0J0OFMwZG1sLmpzIjtjb25zdFt6LGpdPUIoIlJvdmluZ0ZvY3VzR3JvdXAiKTt2YXIgSz14KHtfX25hbWU6IlJvdmluZ0ZvY3VzR3JvdXAiLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjdXJyZW50VGFiU3RvcElkOnt0eXBlOltTdHJpbmcsbnVsbF0scmVxdWlyZWQ6ITF9LGRlZmF1bHRDdXJyZW50VGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJldmVudFNjcm9sbE9uRW50cnlGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZW50cnlGb2N1cyIsInVwZGF0ZTpjdXJyZW50VGFiU3RvcElkIl0sc2V0dXAoYix7ZXhwb3NlOkYsZW1pdDpJfSl7Y29uc3QgYT1iLGY9SSx7bG9vcDpTLG9yaWVudGF0aW9uOnAsZGlyOnl9PUcoYSksdj1PKHkpLGw9UChhLCJjdXJyZW50VGFiU3RvcElkIixmLHtkZWZhdWx0VmFsdWU6YS5kZWZhdWx0Q3VycmVudFRhYlN0b3BJZCxwYXNzaXZlOmEuY3VycmVudFRhYlN0b3BJZD09PXZvaWQgMH0pLHI9YyghMSksbj1jKCExKSxkPWMoMCkse2dldEl0ZW1zOm0sQ29sbGVjdGlvblNsb3Q6VH09ayh7aXNQcm92aWRlcjohMH0pO2Z1bmN0aW9uIEMoZSl7Y29uc3Qgbz0hbi52YWx1ZTtpZihlLmN1cnJlbnRUYXJnZXQmJmUudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0JiZvJiYhci52YWx1ZSl7Y29uc3Qgcz1uZXcgQ3VzdG9tRXZlbnQoRCxVKTtpZihlLmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChzKSxmKCJlbnRyeUZvY3VzIixzKSwhcy5kZWZhdWx0UHJldmVudGVkKXtjb25zdCB1PW0oKS5tYXAodD0+dC5yZWYpLmZpbHRlcih0PT50LmRhdGFzZXQuZGlzYWJsZWQhPT0iIiksUj11LmZpbmQodD0+dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWN0aXZlIik9PT0iIiksXz11LmZpbmQodD0+dC5nZXRBdHRyaWJ1dGUoImRhdGEtaGlnaGxpZ2h0ZWQiKT09PSIiKSxFPXUuZmluZCh0PT50LmlkPT09bC52YWx1ZSkscT1bUixfLEUsLi4udV0uZmlsdGVyKEJvb2xlYW4pOyQocSxhLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpfX1uLnZhbHVlPSExfWZ1bmN0aW9uIGgoKXtzZXRUaW1lb3V0KCgpPT57bi52YWx1ZT0hMX0sMSl9cmV0dXJuIEYoe2dldEl0ZW1zOm19KSxqKHtsb29wOlMsZGlyOnYsb3JpZW50YXRpb246cCxjdXJyZW50VGFiU3RvcElkOmwsb25JdGVtRm9jdXM6ZT0+e2wudmFsdWU9ZX0sb25JdGVtU2hpZnRUYWI6KCk9PntyLnZhbHVlPSEwfSxvbkZvY3VzYWJsZUl0ZW1BZGQ6KCk9PntkLnZhbHVlKyt9LG9uRm9jdXNhYmxlSXRlbVJlbW92ZTooKT0+e2QudmFsdWUtLX19KSwoZSxvKT0+KHcoKSxNKGkoVCksbnVsbCx7ZGVmYXVsdDpnKCgpPT5bTihpKFYpLHt0YWJpbmRleDpyLnZhbHVlfHxkLnZhbHVlPT09MD8tMTowLCJkYXRhLW9yaWVudGF0aW9uIjppKHApLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsZGlyOmkodiksc3R5bGU6e291dGxpbmU6Im5vbmUifSxvbk1vdXNlZG93bjpvWzBdfHwob1swXT1zPT5uLnZhbHVlPSEwKSxvbk1vdXNldXA6aCxvbkZvY3VzOkMsb25CbHVyOm9bMV18fChvWzFdPXM9PnIudmFsdWU9ITEpfSx7ZGVmYXVsdDpnKCgpPT5bQShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidGFiaW5kZXgiLCJkYXRhLW9yaWVudGF0aW9uIiwiYXMiLCJhcy1jaGlsZCIsImRpciJdKV0pLF86M30pKX19KSxIPUs7ZXhwb3J0e0ggYXMgUix6IGFzIGl9Owo=", "/_nuxt/DxCWQsnl.js": "aW1wb3J0e2FkIGFzIGwsYWUgYXMgc31mcm9tIi4vbzh0ZF9HMEouanMiO2Z1bmN0aW9uIGUocixpKXtyZXR1cm4gbChyKT8hMTpBcnJheS5pc0FycmF5KHIpP3Iuc29tZShhPT5zKGEsaSkpOnMocixpKX1leHBvcnR7ZSBhcyBpfTsK", "/_nuxt/N6K0rqtc.js": "aW1wb3J0e2FzIGFzIF8sZiBhcyAkLGcgYXMgSSxwIGFzIE0seiBhcyBOLG8gYXMgaSxjIGFzIHIsYSBhcyBsLGIgYXMgbSxHIGFzIHksaSBhcyBzLEUgYXMgTyx2IGFzIFMsRiBhcyBWLHEgYXMgRSxNIGFzIEQsdCBhcyBwLHcgYXMgSCxkIGFzIEMsaiBhcyBQLHIgYXMgZix1IGFzIEcsaCBhcyBMfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgUn1mcm9tIi4vQ0FVQVg1VnIuanMiO2ltcG9ydHtfIGFzIEp9ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnR7UyBhcyBLfWZyb20iLi9CWmxOTmZrNC5qcyI7aW1wb3J0Ii4vbTIwa2RHeFUuanMiO2Z1bmN0aW9uIFEoKXtmdW5jdGlvbiBrKGE9e30pe3JldHVybiBfKCIvYXBpL3N5c3RlbS90aWNrZXRzIix7cXVlcnk6ey4uLmF9fSl9ZnVuY3Rpb24gYyhhKXtyZXR1cm4gXygiL2FwaS9zeXN0ZW0vdGlja2V0cy86aWQiLHtxdWVyeTp7aWQ6YX19KX1mdW5jdGlvbiB2KGEsbil7cmV0dXJuIF8oIi9hcGkvc3lzdGVtL3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6YX0sYm9keTp7Ym9keTpufX0pfWZ1bmN0aW9uIGQoYSxuKXtyZXR1cm4gXygiL2FwaS9zeXN0ZW0vdGlja2V0cy86aWQiLHttZXRob2Q6IlBBVENIIixxdWVyeTp7aWQ6YX0sYm9keTpufSl9cmV0dXJue2ZldGNoVGlja2V0czprLGZldGNoVGlja2V0OmMscG9zdE1lc3NhZ2U6dix1cGRhdGVUaWNrZXQ6ZH19Y29uc3QgVz17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTMifSxYPXtjbGFzczoiZmxleCBmbGV4LXdyYXAgZ2FwLTIifSxZPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMyBnYXAtNCBoLVtjYWxjKDEwMHZoLTE0cmVtKV0ifSxaPXtjbGFzczoibGc6Y29sLXNwYW4tMSBib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZC1sZyBvdmVyZmxvdy15LWF1dG8gZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxlZT17a2V5OjAsY2xhc3M6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQifSx0ZT1bIm9uQ2xpY2siXSxzZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LGFlPXtjbGFzczoiZm9udC1tZWRpdW0gdHJ1bmNhdGUifSxsZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sb2U9e2tleTowfSxuZT17Y2xhc3M6ImxnOmNvbC1zcGFuLTIgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuIGZsZXggZmxleC1jb2wifSxpZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCBwLTMifSxjZT17Y2xhc3M6Im1pbi13LTAifSxkZT17Y2xhc3M6ImZvbnQtbWVkaXVtIHRydW5jYXRlIn0sdWU9e2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgdHJ1bmNhdGUifSxyZT17Y2xhc3M6ImZsZXggZ2FwLTIifSxtZT17a2V5OjEsY2xhc3M6ImgtZnVsbCBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQifSxwZT0kKHtfX25hbWU6IlN5c3RlbVRpY2tldEluYm94IixzZXR1cChrKXtjb25zdCBjPVEoKSx2PUkoKSxkPWYoKSxhPWYoKSxuPWYoITEpLEE9W3tsYWJlbDoiQWxsIHN0YXR1c2VzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiT3BlbiIsdmFsdWU6Im9wZW4ifSx7bGFiZWw6IkFjdGl2ZSIsdmFsdWU6ImFjdGl2ZSJ9LHtsYWJlbDoiQ2xvc2VkIix2YWx1ZToiY2xvc2VkIn1dLHE9W3tsYWJlbDoiQWxsIGtpbmRzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiRmVlZGJhY2siLHZhbHVlOiJmZWVkYmFjayJ9LHtsYWJlbDoiU3VwcG9ydCIsdmFsdWU6InN1cHBvcnQifV0se2RhdGE6ZyxlcnJvcjpVLHJlZnJlc2g6eH09TSgic3lzdGVtLXRpY2tldHMiLCgpPT5jLmZldGNoVGlja2V0cyh7c3RhdHVzOmQudmFsdWUsa2luZDphLnZhbHVlLG1pbmVPbmx5Om4udmFsdWUsbGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSksd2F0Y2g6W2QsYSxuXSxzZXJ2ZXI6ITF9KTtOKFUpO2NvbnN0IHQ9ZihudWxsKSxiPWYoITEpO2FzeW5jIGZ1bmN0aW9uIGoodSl7dC52YWx1ZT1hd2FpdCBjLmZldGNoVGlja2V0KHUpfWFzeW5jIGZ1bmN0aW9uIEIodSl7aWYodC52YWx1ZSl7Yi52YWx1ZT0hMDt0cnl7dC52YWx1ZT1hd2FpdCBjLnBvc3RNZXNzYWdlKHQudmFsdWUuaWQsdSksYXdhaXQgeCgpfWZpbmFsbHl7Yi52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIGgodSl7dC52YWx1ZSYmKHQudmFsdWU9YXdhaXQgYy51cGRhdGVUaWNrZXQodC52YWx1ZS5pZCx7c3RhdHVzOnV9KSxhd2FpdCB4KCksdi5hZGQoe3RpdGxlOmBNYXJrZWQgJHt1fWAsY29sb3I6InN1Y2Nlc3MifSkpfXJldHVybih1LG8pPT57Y29uc3Qgdz1PLEY9Uix6PUosVD1QO3JldHVybiBpKCkscigiZGl2IixXLFtsKCJkaXYiLFgsW20odyx7bW9kZWxWYWx1ZTpzKGQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzBdfHwob1swXT1lPT55KGQpP2QudmFsdWU9ZTpudWxsKSxpdGVtczpBLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsY2xhc3M6InctNDAifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pLG0odyx7bW9kZWxWYWx1ZTpzKGEpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzFdfHwob1sxXT1lPT55KGEpP2EudmFsdWU9ZTpudWxsKSxpdGVtczpxLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsY2xhc3M6InctNDAifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pLG0oRix7bW9kZWxWYWx1ZTpzKG4pLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzJdfHwob1syXT1lPT55KG4pP24udmFsdWU9ZTpudWxsKSxsYWJlbDoiQXNzaWduZWQgdG8gbWUifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksbCgiZGl2IixZLFtsKCJkaXYiLFosW3MoZykuaXRlbXMubGVuZ3RoPT09MD8oaSgpLHIoInAiLGVlLCIgTm8gdGlja2V0cy4gIikpOlMoIiIsITApLChpKCEwKSxyKFYsbnVsbCxFKHMoZykuaXRlbXMsZT0+KGkoKSxyKCJidXR0b24iLHtrZXk6ZS5pZCx0eXBlOiJidXR0b24iLGNsYXNzOkQoWyJ3LWZ1bGwgdGV4dC1sZWZ0IHAtMyBob3ZlcjpiZy1lbGV2YXRlZC81MCIscyh0KT8uaWQ9PT1lLmlkPyJiZy1lbGV2YXRlZCI6IiJdKSxvbkNsaWNrOnZlPT5qKGUuaWQpfSxbbCgiZGl2IixzZSxbbCgic3BhbiIsYWUscChlLnN1YmplY3QpLDEpLG0oeix7c2l6ZToieHMiLHZhcmlhbnQ6InN1YnRsZSIsY29sb3I6ZS5zdGF0dXM9PT0iY2xvc2VkIj8ibmV1dHJhbCI6ZS5zdGF0dXM9PT0iYWN0aXZlIj8ic3VjY2VzcyI6Indhcm5pbmcifSx7ZGVmYXVsdDpIKCgpPT5bQyhwKGUuc3RhdHVzKSwxKV0pLF86Mn0sMTAzMixbImNvbG9yIl0pXSksbCgicCIsbGUsW0MocChlLmtpbmQ9PT0iZmVlZGJhY2siPyJGZWVkYmFjayI6ZS5jYXRlZ29yeSkrIiAiLDEpLGUuYXNzaWduZWRUbz8oaSgpLHIoInNwYW4iLG9lLCIgwrcgY2xhaW1lZCIpKTpTKCIiLCEwKV0pXSwxMCx0ZSkpKSwxMjgpKV0pLGwoImRpdiIsbmUsW3ModCk/KGkoKSxyKFYse2tleTowfSxbbCgiZGl2IixpZSxbbCgiZGl2IixjZSxbbCgicCIsZGUscChzKHQpLnN1YmplY3QpLDEpLGwoInAiLHVlLHAocyh0KS5yZXF1ZXN0ZXI/Lm5hbWU/P3ModCkucmVxdWVzdGVyPy5lbWFpbCksMSldKSxsKCJkaXYiLHJlLFttKFQse3NpemU6InhzIix2YXJpYW50OiJzb2Z0IixsYWJlbDoiQWN0aXZlIixkaXNhYmxlZDpzKHQpLnN0YXR1cz09PSJhY3RpdmUiLG9uQ2xpY2s6b1szXXx8KG9bM109ZT0+aCgiYWN0aXZlIikpfSxudWxsLDgsWyJkaXNhYmxlZCJdKSxtKFQse3NpemU6InhzIix2YXJpYW50OiJzb2Z0Iixjb2xvcjoibmV1dHJhbCIsbGFiZWw6IkNsb3NlIixkaXNhYmxlZDpzKHQpLnN0YXR1cz09PSJjbG9zZWQiLG9uQ2xpY2s6b1s0XXx8KG9bNF09ZT0+aCgiY2xvc2VkIikpfSxudWxsLDgsWyJkaXNhYmxlZCJdKV0pXSksbShLLHtjbGFzczoiZmxleC0xIixtZXNzYWdlczpzKHQpLm1lc3NhZ2VzLCJ2aWV3ZXItcm9sZSI6ImFnZW50IiwiY2FuLXJlcGx5IjpzKHQpLnN0YXR1cyE9PSJjbG9zZWQiLHNlbmRpbmc6cyhiKSxvblNlbmQ6Qn0sbnVsbCw4LFsibWVzc2FnZXMiLCJjYW4tcmVwbHkiLCJzZW5kaW5nIl0pXSw2NCkpOihpKCkscigiZGl2IixtZSwiIFNlbGVjdCBhIHRpY2tldCB0byByZXNwb25kLiAiKSldKV0pXSl9fX0pLGZlPU9iamVjdC5hc3NpZ24ocGUse19fbmFtZToiU3lzdGVtVGlja2V0SW5ib3gifSkseGU9JCh7X19uYW1lOiJ0aWNrZXRzIixzZXR1cChrKXtyZXR1cm4gRyh7dGl0bGU6IlN5c3RlbSDCtyBUaWNrZXRzIn0pLChjLHYpPT4oaSgpLEwoZmUpKX19KTtleHBvcnR7eGUgYXMgZGVmYXVsdH07Cg==", "/_nuxt/WmDXHYKk.js": "aW1wb3J0e2YgYXMgTCxhdSBhcyBXZSxiYyBhcyBzdCxhOSBhcyBrZSxhNCBhcyBRLG8gYXMgcyxoIGFzIGMsdyBhcyBkLGIgYXMgaCxpIGFzIGUsYWEgYXMgcSxHIGFzIEhlLEwgYXMgdixiZCBhcyBudCxiZSBhcyBPZSxhNiBhcyBMZSxiZiBhcyB1dCxyIGFzIEcsbCBhcyB3LGI5IGFzIGR0LGE3IGFzIFRlLGE4IGFzIFcsUCBhcyBYLGJnIGFzIHB0LGJoIGFzIGN0LGJpIGFzIGZ0LGJqIGFzIG10LGFEIGFzIGd0LGE1IGFzIEFlLGJrIGFzIHZ0LGJsIGFzIFllLGFiIGFzIGRlLGJtIGFzIGJ0LGFjIGFzIHl0LGJuIGFzIGh0LGF2IGFzIFosYm8gYXMgeHQsdiBhcyBPLGFpIGFzIEplLGEyIGFzIENlLGFnIGFzIF90LGQgYXMgSixSIGFzIE1lLFogYXMgQ3QsdCBhcyBVLGF3IGFzIHBlLGJwIGFzIHF0LGFoIGFzIEl0LFUgYXMgU3QsYXggYXMgenQsSiBhcyB3dCxLIGFzIEJ0LGFqIGFzIGt0LGJxIGFzIEx0LGFGIGFzIGosYWsgYXMgT3QsYnIgYXMgVHQsYnMgYXMgQXQsYUcgYXMgbmUsYUIgYXMgRGUsYUMgYXMgUmUsYyBhcyBFLE0gYXMgeSxhIGFzIHVlLGJ0IGFzIGFlLGsgYXMgX2UsSSBhcyBLZSxidSBhcyBFdCxGIGFzIFkscSBhcyB3ZSxqIGFzIEZ0LGJ2IGFzIFZ0LEggYXMgJHQsVyBhcyBOZSxOIGFzIGplLGJ3IGFzIEdlLGJ4IGFzIFB0LGJ5IGFzIE10LGJ6IGFzIER0LGI2IGFzIFJ0fWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e3UgYXMgS3QsYSBhcyBOdH1mcm9tIi4vQjdzNXBqalIuanMiO2ltcG9ydHtMIGFzIGp0LGEgYXMgR3QsYiBhcyBVdCxpIGFzIFd0LGMgYXMgSHQsZCBhcyBZdCxlIGFzIEp0LGYgYXMgWnQsZyBhcyBRdH1mcm9tIi4vREhDd0VMV3AuanMiO2NvbnN0W0QsWHRdPVRlKCJDb21ib2JveFJvb3QiKTt2YXIgZWE9TCh7X19uYW1lOiJDb21ib2JveFJvb3QiLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlc2V0U2VhcmNoVGVybU9uQmx1cjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHJlc2V0U2VhcmNoVGVybU9uU2VsZWN0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sb3Blbk9uRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuT25DbGljazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGlnbm9yZUZpbHRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0T25Ib3Zlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAobix7ZXhwb3NlOmYsZW1pdDpyfSl7Y29uc3QgdD1uLGE9cix7cHJpbWl0aXZlRWxlbWVudDppLGN1cnJlbnRFbGVtZW50Om19PU9lKCkse211bHRpcGxlOngsZGlzYWJsZWQ6YixpZ25vcmVGaWx0ZXI6dSxyZXNldFNlYXJjaFRlcm1PblNlbGVjdDpJLG9wZW5PbkZvY3VzOlYsb3Blbk9uQ2xpY2s6VCxkaXI6QSxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOkMsaGlnaGxpZ2h0T25Ib3ZlcjpnfT1XZSh0KSxCPXN0KEEpLEY9a2UodCwibW9kZWxWYWx1ZSIsYSx7ZGVmYXVsdFZhbHVlOnQuZGVmYXVsdFZhbHVlPz8oeC52YWx1ZT9bXTp2b2lkIDApLHBhc3NpdmU6dC5tb2RlbFZhbHVlPT09dm9pZCAwLGRlZXA6ITB9KSxSPWtlKHQsIm9wZW4iLGEse2RlZmF1bHRWYWx1ZTp0LmRlZmF1bHRPcGVuLHBhc3NpdmU6dC5vcGVuPT09dm9pZCAwfSk7YXN5bmMgZnVuY3Rpb24gcWUoUyl7Ui52YWx1ZT1TLGVlLnZhbHVlPSIiLFM/KGF3YWl0IExlKCksaS52YWx1ZT8uaGlnaGxpZ2h0U2VsZWN0ZWQoKSxsZS52YWx1ZT0hMCxpZS52YWx1ZT8uZm9jdXMoKSk6KGxlLnZhbHVlPSExLHNldFRpbWVvdXQoKCk9PnshUyYmdC5yZXNldFNlYXJjaFRlcm1PbkJsdXImJmNlLnRyaWdnZXIoKX0sMSkpfWNvbnN0IGNlPXV0KCksbGU9RyghMSksZmU9RyghMSksaWU9RygpLG1lPUcoKSxnZT13KCgpPT5pLnZhbHVlPy5oaWdobGlnaHRlZEVsZW1lbnQ/P3ZvaWQgMCkscmU9RyhuZXcgTWFwKSxvZT1HKG5ldyBNYXApLHtjb250YWluczpJZX09S3Qoe3NlbnNpdGl2aXR5OiJiYXNlIn0pLGVlPUcoIiIpLHZlPXcoUz0+e2lmKCFlZS52YWx1ZXx8dC5pZ25vcmVGaWx0ZXJ8fGZlLnZhbHVlKXJldHVybntjb3VudDpyZS52YWx1ZS5zaXplLGl0ZW1zOlM/Lml0ZW1zPz9uZXcgTWFwLGdyb3VwczpTPy5ncm91cHM/P25ldyBTZXQob2UudmFsdWUua2V5cygpKX07bGV0ICQ9MDtjb25zdCBQPW5ldyBNYXAsSD1uZXcgU2V0O2Zvcihjb25zdFtzZSxOXW9mIHJlLnZhbHVlKXtjb25zdCB0ZT1JZShOLGVlLnZhbHVlKTtQLnNldChzZSx0ZT8xOjApLHRlJiYkKyt9Zm9yKGNvbnN0W3NlLE5db2Ygb2UudmFsdWUpZm9yKGNvbnN0IHRlIG9mIE4paWYoUC5nZXQodGUpPjApe0guYWRkKHNlKTticmVha31yZXR1cm57Y291bnQ6JCxpdGVtczpQLGdyb3VwczpIfX0pLEs9ZHQoKTtyZXR1cm4gUSgoKT0+e0s/LmV4cG9zZWQmJihLLmV4cG9zZWQuaGlnaGxpZ2h0SXRlbT1pLnZhbHVlPy5oaWdobGlnaHRJdGVtLEsuZXhwb3NlZC5oaWdobGlnaHRGaXJzdEl0ZW09aS52YWx1ZT8uaGlnaGxpZ2h0Rmlyc3RJdGVtLEsuZXhwb3NlZC5oaWdobGlnaHRTZWxlY3RlZD1pLnZhbHVlPy5oaWdobGlnaHRTZWxlY3RlZCl9KSxmKHtmaWx0ZXJlZDp2ZSxoaWdobGlnaHRlZEVsZW1lbnQ6Z2UsaGlnaGxpZ2h0SXRlbTppLnZhbHVlPy5oaWdobGlnaHRJdGVtLGhpZ2hsaWdodEZpcnN0SXRlbTppLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0saGlnaGxpZ2h0U2VsZWN0ZWQ6aS52YWx1ZT8uaGlnaGxpZ2h0U2VsZWN0ZWR9KSxYdCh7bW9kZWxWYWx1ZTpGLG11bHRpcGxlOngsZGlzYWJsZWQ6YixvcGVuOlIsb25PcGVuQ2hhbmdlOnFlLGNvbnRlbnRJZDoiIixpc1VzZXJJbnB1dHRlZDpsZSxpc1ZpcnR1YWw6ZmUsaW5wdXRFbGVtZW50OmllLGhpZ2hsaWdodGVkRWxlbWVudDpnZSxvbklucHV0RWxlbWVudENoYW5nZTpTPT5pZS52YWx1ZT1TLHRyaWdnZXJFbGVtZW50Om1lLG9uVHJpZ2dlckVsZW1lbnRDaGFuZ2U6Uz0+bWUudmFsdWU9UyxwYXJlbnRFbGVtZW50Om0scmVzZXRTZWFyY2hUZXJtT25TZWxlY3Q6SSxvblJlc2V0U2VhcmNoVGVybTpjZS5vbixhbGxJdGVtczpyZSxhbGxHcm91cHM6b2UsZmlsdGVyU2VhcmNoOmVlLGZpbHRlclN0YXRlOnZlLGlnbm9yZUZpbHRlcjp1LG9wZW5PbkZvY3VzOlYsb3Blbk9uQ2xpY2s6VCxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOkN9KSwoUywkKT0+KHMoKSxjKGUobnQpLG51bGwse2RlZmF1bHQ6ZCgoKT0+W2goZShqdCkscSh7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOml9LFMuJGF0dHJzLHttb2RlbFZhbHVlOmUoRiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOiRbMF18fCgkWzBdPVA9PkhlKEYpP0YudmFsdWU9UDpudWxsKSxzdHlsZTp7cG9pbnRlckV2ZW50czplKFIpPyJhdXRvIjp2b2lkIDB9LGFzOlMuYXMsImFzLWNoaWxkIjpTLmFzQ2hpbGQsZGlyOmUoQiksbXVsdGlwbGU6ZSh4KSxuYW1lOlMubmFtZSxyZXF1aXJlZDpTLnJlcXVpcmVkLGRpc2FibGVkOmUoYiksImhpZ2hsaWdodC1vbi1ob3ZlciI6ZShnKSxieTp0LmJ5LG9uSGlnaGxpZ2h0OiRbMV18fCgkWzFdPVA9PmEoImhpZ2hsaWdodCIsUCkpfSkse2RlZmF1bHQ6ZCgoKT0+W3YoUy4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmUoUiksbW9kZWxWYWx1ZTplKEYpfSldKSxfOjN9LDE2LFsibW9kZWxWYWx1ZSIsInN0eWxlIiwiYXMiLCJhcy1jaGlsZCIsImRpciIsIm11bHRpcGxlIiwibmFtZSIsInJlcXVpcmVkIiwiZGlzYWJsZWQiLCJoaWdobGlnaHQtb24taG92ZXIiLCJieSJdKV0pLF86M30pKX19KSx0YT1lYSxhYT1MKHtfX25hbWU6IkNvbWJvYm94QW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0e2ZvcndhcmRSZWY6Zn09VygpO3JldHVybihyLHQpPT4ocygpLGMoZShwdCkseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOnIucmVmZXJlbmNlfSx7ZGVmYXVsdDpkKCgpPT5baChlKFgpLHEoe3JlZjplKGYpLCJhcy1jaGlsZCI6ci5hc0NoaWxkLGFzOnIuYXN9LHIuJGF0dHJzKSx7ZGVmYXVsdDpkKCgpPT5bdihyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzLWNoaWxkIiwiYXMiXSldKSxfOjN9LDgsWyJyZWZlcmVuY2UiXSkpfX0pLGxhPWFhO2NvbnN0W2lhLHJhXT1UZSgiQ29tYm9ib3hDb250ZW50Iik7dmFyIG9hPUwoe19fbmFtZToiQ29tYm9ib3hDb250ZW50SW1wbCIscHJvcHM6e3Bvc2l0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbmxpbmUifSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWRlV2hlbkVtcHR5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIl0sc2V0dXAobix7ZW1pdDpmfSl7Y29uc3Qgcj1uLHQ9Zix7cG9zaXRpb246YX09V2UociksaT1EKCksbT13KCgpPT5pLmlnbm9yZUZpbHRlci52YWx1ZT9pLmFsbEl0ZW1zLnZhbHVlLnNpemU9PT0wOmkuZmlsdGVyU3RhdGUudmFsdWUuY291bnQ9PT0wKSx7Zm9yd2FyZFJlZjp4LGN1cnJlbnRFbGVtZW50OmJ9PVcoKTtjdChyLmJvZHlMb2NrKSxmdCgpLG10KGkucGFyZW50RWxlbWVudCk7Y29uc3QgdT13KCgpPT5yLnBvc2l0aW9uPT09InBvcHBlciI/cjp7fSksST1ndCh1LnZhbHVlKSxWPXtib3hTaXppbmc6ImJvcmRlci1ib3giLCItLXJla2EtY29tYm9ib3gtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtY29tYm9ib3gtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifTtyYSh7cG9zaXRpb246YX0pO2NvbnN0IFQ9RyghMSk7cmV0dXJuIFEoKCk9PntpLmlucHV0RWxlbWVudC52YWx1ZSYmKFQudmFsdWU9Yi52YWx1ZS5jb250YWlucyhpLmlucHV0RWxlbWVudC52YWx1ZSksVC52YWx1ZSYmaS5pbnB1dEVsZW1lbnQudmFsdWUuZm9jdXMoKSl9KSxBZSgoKT0+e2NvbnN0IEE9dnQoKTtULnZhbHVlJiYoIUF8fEE9PT1kb2N1bWVudC5ib2R5KSYmaS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoKX0pLChBLEMpPT4ocygpLGMoZShHdCkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmQoKCk9PltoKGUoWWUpLHsiYXMtY2hpbGQiOiIiLG9uTW91bnRBdXRvRm9jdXM6Q1s1XXx8KENbNV09ZGUoKCk9Pnt9LFsicHJldmVudCJdKSksb25Vbm1vdW50QXV0b0ZvY3VzOkNbNl18fChDWzZdPWRlKCgpPT57fSxbInByZXZlbnQiXSkpfSx7ZGVmYXVsdDpkKCgpPT5baChlKGJ0KSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjpBLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkRpc21pc3M6Q1swXXx8KENbMF09Zz0+ZShpKS5vbk9wZW5DaGFuZ2UoITEpKSxvbkZvY3VzT3V0c2lkZTpDWzFdfHwoQ1sxXT1nPT57ZShpKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyhnLnRhcmdldCkmJmcucHJldmVudERlZmF1bHQoKSx0KCJmb2N1c091dHNpZGUiLGcpfSksb25JbnRlcmFjdE91dHNpZGU6Q1syXXx8KENbMl09Zz0+dCgiaW50ZXJhY3RPdXRzaWRlIixnKSksb25Fc2NhcGVLZXlEb3duOkNbM118fChDWzNdPWc9PnQoImVzY2FwZUtleURvd24iLGcpKSxvblBvaW50ZXJEb3duT3V0c2lkZTpDWzRdfHwoQ1s0XT1nPT57ZShpKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyhnLnRhcmdldCkmJmcucHJldmVudERlZmF1bHQoKSx0KCJwb2ludGVyRG93bk91dHNpZGUiLGcpfSl9LHtkZWZhdWx0OmQoKCk9PlsocygpLGMoeXQoZShhKT09PSJwb3BwZXIiP2UoaHQpOmUoWCkpLHEoey4uLkEuJGF0dHJzLC4uLmUoSSl9LHtpZDplKGkpLmNvbnRlbnRJZCxyZWY6ZSh4KSwiZGF0YS1zdGF0ZSI6ZShpKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1lbXB0eSI6bS52YWx1ZT8iIjp2b2lkIDAsc3R5bGU6e2Rpc3BsYXk6ci5oaWRlV2hlbkVtcHR5JiZtLnZhbHVlPyJub25lIjoiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdXRsaW5lOiJub25lIiwuLi5lKGEpPT09InBvcHBlciI/Vjp7fX19KSx7ZGVmYXVsdDpkKCgpPT5bdihBLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwiZGF0YS1zdGF0ZSIsImRhdGEtZW1wdHkiLCJzdHlsZSJdKSldKSxfOjN9LDgsWyJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSldKSxfOjN9KV0pLF86M30pKX19KSxzYT1vYSxuYT1MKHtfX25hbWU6IkNvbWJvYm94QXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChuKXtjb25zdCBmPW4scj1EKCksdD1pYSgpO3JldHVybiBXKCksKGEsaSk9PmUocikub3Blbi52YWx1ZSYmZSh0KS5wb3NpdGlvbi52YWx1ZT09PSJwb3BwZXIiPyhzKCksYyhlKHh0KSxaKHEoe2tleTowfSxmKSkse2RlZmF1bHQ6ZCgoKT0+W3YoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTpPKCJ2LWlmIiwhMCl9fSksdWE9bmEsZGE9TCh7X19uYW1lOiJDb21ib2JveENhbmNlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAobil7Y29uc3QgZj1uO1coKTtjb25zdCByPUQoKTtmdW5jdGlvbiB0KCl7ci5maWx0ZXJTZWFyY2gudmFsdWU9IiIsci5pbnB1dEVsZW1lbnQudmFsdWUmJihyLmlucHV0RWxlbWVudC52YWx1ZS52YWx1ZT0iIixyLmlucHV0RWxlbWVudC52YWx1ZS5mb2N1cygpKSxyLnJlc2V0TW9kZWxWYWx1ZU9uQ2xlYXI/LnZhbHVlJiYoci5tb2RlbFZhbHVlLnZhbHVlPXIubXVsdGlwbGUudmFsdWU/W106bnVsbCl9cmV0dXJuKGEsaSk9PihzKCksYyhlKFgpLHEoe3R5cGU6YS5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMH0sZix7dGFiaW5kZXg6Ii0xIixvbkNsaWNrOnR9KSx7ZGVmYXVsdDpkKCgpPT5bdihhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInR5cGUiXSkpfX0pLHBhPWRhLGNhPUwoe19fbmFtZToiQ29tYm9ib3hDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZGVXaGVuRW1wdHk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cChuLHtlbWl0OmZ9KXtjb25zdCBhPUplKG4sZikse2ZvcndhcmRSZWY6aX09VygpLG09RCgpO3JldHVybiBtLmNvbnRlbnRJZHx8PUNlKHZvaWQgMCwicmVrYS1jb21ib2JveC1jb250ZW50IiksKHgsYik9PihzKCksYyhlKF90KSx7cHJlc2VudDp4LmZvcmNlTW91bnR8fGUobSkub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZCgoKT0+W2goc2EscSh7Li4uZShhKSwuLi54LiRhdHRyc30se3JlZjplKGkpfSkse2RlZmF1bHQ6ZCgoKT0+W3YoeC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksZmE9Y2EsbWE9TCh7X19uYW1lOiJDb21ib2JveEVtcHR5Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZj1uLHI9RCgpLHQ9dygoKT0+ci5pZ25vcmVGaWx0ZXIudmFsdWU/ci5hbGxJdGVtcy52YWx1ZS5zaXplPT09MDpyLmZpbHRlclN0YXRlLnZhbHVlLmNvdW50PT09MCk7cmV0dXJuKGEsaSk9PnQudmFsdWU/KHMoKSxjKGUoWCksWihxKHtrZXk6MH0sZikpLHtkZWZhdWx0OmQoKCk9Plt2KGEuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2lbMF18fChpWzBdPUooIk5vIG9wdGlvbnMiKSldKV0pLF86M30sMTYpKTpPKCJ2LWlmIiwhMCl9fSksZ2E9bWE7Y29uc3RbWmUsdmFdPVRlKCJDb21ib2JveEdyb3VwIik7dmFyIGJhPUwoe19fbmFtZToiQ29tYm9ib3hHcm91cCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IGY9bixyPUNlKHZvaWQgMCwicmVrYS1jb21ib2JveC1ncm91cCIpLHQ9RCgpLGE9dygoKT0+dC5pZ25vcmVGaWx0ZXIudmFsdWU/ITA6dC5maWx0ZXJTZWFyY2gudmFsdWU/dC5maWx0ZXJTdGF0ZS52YWx1ZS5ncm91cHMuaGFzKHIpOiEwKSxpPXZhKHtpZDpyLGxhYmVsSWQ6IiJ9KTtyZXR1cm4gUSgoKT0+e3QuYWxsR3JvdXBzLnZhbHVlLmhhcyhyKXx8dC5hbGxHcm91cHMudmFsdWUuc2V0KHIsbmV3IFNldCl9KSxBZSgoKT0+e3QuYWxsR3JvdXBzLnZhbHVlLmRlbGV0ZShyKX0pLChtLHgpPT4ocygpLGMoZShVdCkscSh7aWQ6ZShyKSwiYXJpYS1sYWJlbGxlZGJ5IjplKGkpLmxhYmVsSWR9LGYse2hpZGRlbjphLnZhbHVlP3ZvaWQgMDohMH0pLHtkZWZhdWx0OmQoKCk9Plt2KG0uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJhcmlhLWxhYmVsbGVkYnkiLCJoaWRkZW4iXSkpfX0pLEJlPWJhLHlhPUwoe19fbmFtZToiQ29tYm9ib3hJbnB1dCIscHJvcHM6e2Rpc3BsYXlWYWx1ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaW5wdXQifX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKG4se2VtaXQ6Zn0pe2NvbnN0IHI9bix0PWYsYT1EKCksaT1XdCgpLHtwcmltaXRpdmVFbGVtZW50Om0sY3VycmVudEVsZW1lbnQ6eH09T2UoKSxiPWtlKHIsIm1vZGVsVmFsdWUiLHQse3Bhc3NpdmU6ci5tb2RlbFZhbHVlPT09dm9pZCAwfSk7USgoKT0+e3gudmFsdWUmJmEub25JbnB1dEVsZW1lbnRDaGFuZ2UoeC52YWx1ZSl9KTtmdW5jdGlvbiB1KGcpe2Eub3Blbi52YWx1ZXx8YS5vbk9wZW5DaGFuZ2UoITApfWZ1bmN0aW9uIEkoZyl7Y29uc3QgQj1nLnRhcmdldDthLm9wZW4udmFsdWU/YS5maWx0ZXJTZWFyY2gudmFsdWU9Qi52YWx1ZTooYS5vbk9wZW5DaGFuZ2UoITApLExlKCgpPT57Qi52YWx1ZSYmKGEuZmlsdGVyU2VhcmNoLnZhbHVlPUIudmFsdWUsaS5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9KSl9ZnVuY3Rpb24gVigpe2Eub3Blbk9uRm9jdXMudmFsdWUmJiFhLm9wZW4udmFsdWUmJmEub25PcGVuQ2hhbmdlKCEwKX1mdW5jdGlvbiBUKGcpe2lmKCFhLm9wZW4udmFsdWUpcmV0dXJuO2NvbnN0IEI9Zy5yZWxhdGVkVGFyZ2V0O2lmKCFCKXJldHVybjtjb25zdCBGPWEucGFyZW50RWxlbWVudC52YWx1ZT8uY29udGFpbnMoQiksUj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhLmNvbnRlbnRJZCk/LmNvbnRhaW5zKEIpOyFGJiYhUiYmYS5vbk9wZW5DaGFuZ2UoITEpfWZ1bmN0aW9uIEEoKXthLm9wZW5PbkNsaWNrLnZhbHVlJiYhYS5vcGVuLnZhbHVlJiZhLm9uT3BlbkNoYW5nZSghMCl9ZnVuY3Rpb24gQygpe2NvbnN0IGc9YS5tb2RlbFZhbHVlLnZhbHVlO3IuZGlzcGxheVZhbHVlP2IudmFsdWU9ci5kaXNwbGF5VmFsdWUoZyk6IWEubXVsdGlwbGUudmFsdWUmJmcmJiFBcnJheS5pc0FycmF5KGcpJiZ0eXBlb2YgZyE9Im9iamVjdCI/Yi52YWx1ZT1nLnRvU3RyaW5nKCk6Yi52YWx1ZT0iIixMZSgoKT0+e2IudmFsdWU9Yi52YWx1ZX0pfXJldHVybiBhLm9uUmVzZXRTZWFyY2hUZXJtKCgpPT57QygpfSksTWUoYS5tb2RlbFZhbHVlLGFzeW5jKCk9PnshYS5pc1VzZXJJbnB1dHRlZC52YWx1ZSYmYS5yZXNldFNlYXJjaFRlcm1PblNlbGVjdC52YWx1ZSYmQygpfSx7aW1tZWRpYXRlOiEwLGRlZXA6ITB9KSxNZShhLmZpbHRlclN0YXRlLChnLEIpPT57IWEuaXNWaXJ0dWFsLnZhbHVlJiZCLmNvdW50PT09MCYmaS5oaWdobGlnaHRGaXJzdEl0ZW0oKX0pLChnLEIpPT4ocygpLGMoZShIdCkse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjptLG1vZGVsVmFsdWU6ZShiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6QlswXXx8KEJbMF09Rj0+SGUoYik/Yi52YWx1ZT1GOm51bGwpLGFzOmcuYXMsImFzLWNoaWxkIjpnLmFzQ2hpbGQsImF1dG8tZm9jdXMiOmcuYXV0b0ZvY3VzLGRpc2FibGVkOmcuZGlzYWJsZWQsImFyaWEtZXhwYW5kZWQiOmUoYSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6ZShhKS5jb250ZW50SWQsImFyaWEtYXV0b2NvbXBsZXRlIjoibGlzdCIscm9sZToiY29tYm9ib3giLGF1dG9jb21wbGV0ZToib2ZmIixvbkNsaWNrOkEsb25JbnB1dDpJLG9uS2V5ZG93bjpDdChkZSh1LFsicHJldmVudCJdKSxbImRvd24iLCJ1cCJdKSxvbkZvY3VzOlYsb25CbHVyOlR9LHtkZWZhdWx0OmQoKCk9Plt2KGcuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJtb2RlbFZhbHVlIiwiYXMiLCJhcy1jaGlsZCIsImF1dG8tZm9jdXMiLCJkaXNhYmxlZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwib25LZXlkb3duIl0pKX19KSxoYT15YSx4YT1MKHtfX25hbWU6IkNvbWJvYm94SXRlbSIscHJvcHM6e3RleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAobix7ZW1pdDpmfSl7Y29uc3Qgcj1uLHQ9ZixhPUNlKHZvaWQgMCwicmVrYS1jb21ib2JveC1pdGVtIiksaT1EKCksbT1aZShudWxsKSx7cHJpbWl0aXZlRWxlbWVudDp4LGN1cnJlbnRFbGVtZW50OmJ9PU9lKCk7aWYoci52YWx1ZT09PSIiKXRocm93IG5ldyBFcnJvcigiQSA8Q29tYm9ib3hJdGVtIC8+IG11c3QgaGF2ZSBhIHZhbHVlIHByb3AgdGhhdCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nLiBUaGlzIGlzIGJlY2F1c2UgdGhlIENvbWJvYm94IHZhbHVlIGNhbiBiZSBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBzZWxlY3Rpb24gYW5kIHNob3cgdGhlIHBsYWNlaG9sZGVyLiIpO2NvbnN0IHU9dygoKT0+e2lmKGkuaXNWaXJ0dWFsLnZhbHVlfHxpLmlnbm9yZUZpbHRlci52YWx1ZXx8IWkuZmlsdGVyU2VhcmNoLnZhbHVlKXJldHVybiEwO3tjb25zdCBJPWkuZmlsdGVyU3RhdGUudmFsdWUuaXRlbXMuZ2V0KGEpO3JldHVybiBJPT09dm9pZCAwPyEwOkk+MH19KTtyZXR1cm4gUSgoKT0+e2kuYWxsSXRlbXMudmFsdWUuc2V0KGEsci50ZXh0VmFsdWV8fGIudmFsdWUudGV4dENvbnRlbnR8fGIudmFsdWUuaW5uZXJUZXh0KTtjb25zdCBJPW0/LmlkO0kmJihpLmFsbEdyb3Vwcy52YWx1ZS5oYXMoSSk/aS5hbGxHcm91cHMudmFsdWUuZ2V0KEkpPy5hZGQoYSk6aS5hbGxHcm91cHMudmFsdWUuc2V0KEksbmV3IFNldChbYV0pKSl9KSxBZSgoKT0+e2kuYWxsSXRlbXMudmFsdWUuZGVsZXRlKGEpfSksKEksVik9PnUudmFsdWU/KHMoKSxjKGUoWXQpLHEoe2tleTowfSxyLHtpZDplKGEpLHJlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjp4LGRpc2FibGVkOmUoaSkuZGlzYWJsZWQudmFsdWV8fEkuZGlzYWJsZWQsb25TZWxlY3Q6VlswXXx8KFZbMF09VD0+e3QoInNlbGVjdCIsVCksIVQuZGVmYXVsdFByZXZlbnRlZCYmKCFlKGkpLm11bHRpcGxlLnZhbHVlJiYhSS5kaXNhYmxlZCYmIWUoaSkuZGlzYWJsZWQudmFsdWU/KFQucHJldmVudERlZmF1bHQoKSxlKGkpLm9uT3BlbkNoYW5nZSghMSksZShpKS5tb2RlbFZhbHVlLnZhbHVlPXIudmFsdWUpOmUoaSkubXVsdGlwbGUudmFsdWUmJmUoaSkuaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpKX0pfSkse2RlZmF1bHQ6ZCgoKT0+W3YoSS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bSihVKEkudmFsdWUpLDEpXSldKSxfOjN9LDE2LFsiaWQiLCJkaXNhYmxlZCJdKSk6Tygidi1pZiIsITApfX0pLFVlPXhhLF9hPUwoe19fbmFtZToiQ29tYm9ib3hJdGVtSW5kaWNhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAobil7Y29uc3QgZj1uO3JldHVybihyLHQpPT4ocygpLGMoZShKdCksWihwZShmKSkse2RlZmF1bHQ6ZCgoKT0+W3Yoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxDYT1fYSxxYT1MKHtfX25hbWU6IkNvbWJvYm94TGFiZWwiLHByb3BzOntmb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LHNldHVwKG4pe2NvbnN0IGY9bjtXKCk7Y29uc3Qgcj1aZSh7aWQ6IiIsbGFiZWxJZDoiIn0pO3JldHVybiByLmxhYmVsSWR8fD1DZSh2b2lkIDAsInJla2EtY29tYm9ib3gtZ3JvdXAtbGFiZWwiKSwodCxhKT0+KHMoKSxjKGUoWCkscShmLHtpZDplKHIpLmxhYmVsSWR9KSx7ZGVmYXVsdDpkKCgpPT5bdih0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxJYT1xYSxTYT1MKHtfX25hbWU6IkNvbWJvYm94UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZj1uO3JldHVybihyLHQpPT4ocygpLGMoZShxdCksWihwZShmKSkse2RlZmF1bHQ6ZCgoKT0+W3Yoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx6YT1TYSx3YT1MKHtfX25hbWU6IkNvbWJvYm94U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZj1uO3JldHVybiBXKCksKHIsdCk9PihzKCksYyhlKFgpLHEoZix7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx7ZGVmYXVsdDpkKCgpPT5bdihyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEJhPXdhLGthPUwoe19fbmFtZToiQ29tYm9ib3hUcmlnZ2VyIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChuKXtjb25zdCBmPW4se2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDp0fT1XKCksYT1EKCksaT13KCgpPT5mLmRpc2FibGVkfHxhLmRpc2FibGVkLnZhbHVlfHwhMSk7cmV0dXJuIFEoKCk9Pnt0LnZhbHVlJiZhLm9uVHJpZ2dlckVsZW1lbnRDaGFuZ2UodC52YWx1ZSl9KSwobSx4KT0+KHMoKSxjKGUoWCkscShmLHtyZWY6ZShyKSx0eXBlOm0uYXM9PT0iYnV0dG9uIj8iYnV0dG9uIjp2b2lkIDAsdGFiaW5kZXg6Ii0xIiwiYXJpYS1sYWJlbCI6IlNob3cgcG9wdXAiLCJhcmlhLWhhc3BvcHVwIjoibGlzdGJveCIsImFyaWEtZXhwYW5kZWQiOmUoYSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6ZShhKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOmUoYSkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsZGlzYWJsZWQ6aS52YWx1ZSwiZGF0YS1kaXNhYmxlZCI6aS52YWx1ZT8iIjp2b2lkIDAsImFyaWEtZGlzYWJsZWQiOmkudmFsdWU/P3ZvaWQgMCxvbkNsaWNrOnhbMF18fCh4WzBdPWI9PmUoYSkub25PcGVuQ2hhbmdlKCFlKGEpLm9wZW4udmFsdWUpKX0pLHtkZWZhdWx0OmQoKCk9Plt2KG0uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsidHlwZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiXSkpfX0pLExhPWthLE9hPUwoe19fbmFtZToiQ29tYm9ib3hWaXJ0dWFsaXplciIscHJvcHM6e29wdGlvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITB9LG92ZXJzY2FuOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZXN0aW1hdGVTaXplOnt0eXBlOltOdW1iZXIsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSx0ZXh0Q29udGVudDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IGY9bixyPUQoKTtyZXR1cm4gci5pc1ZpcnR1YWwudmFsdWU9ITAsKHQsYSk9PihzKCksYyhadCxaKHBlKGYpKSx7ZGVmYXVsdDpkKGk9Plt2KHQuJHNsb3RzLCJkZWZhdWx0IixaKHBlKGkpKSldKSxfOjN9LDE2KSl9fSksVGE9T2E7Y29uc3QgQWE9e3Nsb3RzOntiYXNlOlsicmVsYXRpdmUgZ3JvdXAgcm91bmRlZC1tZCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsZWFkaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgc3RhcnQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsbGVhZGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmc6ImFic29sdXRlIGluc2V0LXktMCBlbmQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsdHJhaWxpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsdmFsdWU6InRydW5jYXRlIHBvaW50ZXItZXZlbnRzLW5vbmUiLHBsYWNlaG9sZGVyOiJ0cnVuY2F0ZSB0ZXh0LWRpbW1lZCIsYXJyb3c6ImZpbGwtYmcgc3Ryb2tlLWRlZmF1bHQiLGNvbnRlbnQ6WyJtYXgtaC02MCB3LSgtLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgpIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgb3ZlcmZsb3ctaGlkZGVuIG9yaWdpbi0oLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIHBvaW50ZXItZXZlbnRzLWF1dG8gZmxleCBmbGV4LWNvbCIsIm9yaWdpbi0oLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgdy0oLS1yZWthLWNvbWJvYm94LXRyaWdnZXItd2lkdGgpIl0sdmlld3BvcnQ6InJlbGF0aXZlIHNjcm9sbC1weS0xIG92ZXJmbG93LXktYXV0byBmbGV4LTEiLGdyb3VwOiJwLTEgaXNvbGF0ZSIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLGxhYmVsOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLHNlcGFyYXRvcjoiLW14LTEgbXktMSBoLXB4IGJnLWJvcmRlciIsaXRlbTpbImdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IHRleHQtZGVmYXVsdCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOnRleHQtaGlnaGxpZ2h0ZWQgZGF0YS1oaWdobGlnaHRlZDpub3QtZGF0YS1kaXNhYmxlZDpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0ljb246WyJzaHJpbmstMCB0ZXh0LWRpbW1lZCBncm91cC1kYXRhLWhpZ2hsaWdodGVkOm5vdC1ncm91cC1kYXRhLWRpc2FibGVkOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdBdmF0YXI6InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhclNpemU6IiIsaXRlbUxlYWRpbmdDaGlwOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToiIixpdGVtVHJhaWxpbmc6Im1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgbWluLXctMCIsaXRlbUxhYmVsOiJ0cnVuY2F0ZSIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIixpbnB1dDoiYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQiLGZvY3VzU2NvcGU6ImZsZXggZmxleC1jb2wgbWluLWgtMCIsdHJhaWxpbmdDbGVhcjoicC0wIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQteHMgZ2FwLTEiLGxlYWRpbmc6InBzLTIiLHRyYWlsaW5nOiJwZS0yIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCIsbGFiZWw6InAtMSB0ZXh0LVsxMHB4XS8zIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMiB0ZXh0LXhzIn0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC14cyBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xLjUgdGV4dC1bMTBweF0vMyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTQiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6InNtIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGVtcHR5OiJwLTIuNSB0ZXh0LXhzIn0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbSBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01IixsYWJlbDoicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTIuNSB0ZXh0LXNtIn0sbGc6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LXNtIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTIgdGV4dC14cyBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTMgdGV4dC1zbSJ9LHhsOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6InhzIix0cmFpbGluZ0ljb246InNpemUtNiIsbGFiZWw6InAtMiB0ZXh0LXNtIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixpdGVtTGVhZGluZ0ljb246InNpemUtNiIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTYiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6ImxnIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTYiLGVtcHR5OiJwLTMgdGV4dC1iYXNlIn19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1kZWZhdWx0Iixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgZGlzYWJsZWQ6YmctZWxldmF0ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9LHBvc2l0aW9uOntwb3BwZXI6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSJ9LCJpdGVtLWFsaWduZWQiOntjb250ZW50OiIifX0sdmlydHVhbGl6ZTp7dHJ1ZTp7dmlld3BvcnQ6InAtMSBpc29sYXRlIn0sZmFsc2U6e3ZpZXdwb3J0OiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixwb3NpdGlvbjoicG9wcGVyIn19LCRhPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVNlbGVjdE1lbnUiLHByb3BzOk5lKHtpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sc2VhcmNoSW5wdXQ6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNlbGVjdGVkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGVhcjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxjbGVhckljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSx2aXJ0dWFsaXplOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdmFsdWVLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9LGRlc2NyaXB0aW9uS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGVzY3JpcHRpb24ifSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY3JlYXRlSXRlbTp7dHlwZTpbQm9vbGVhbixTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sZmlsdGVyRmllbGRzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxpZ25vcmVGaWx0ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1c0RlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVzZXRTZWFyY2hUZXJtT25CbHVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0scmVzZXRTZWFyY2hUZXJtT25TZWxlY3Q6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0saGlnaGxpZ2h0T25Ib3Zlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHtzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxzZWFyY2hUZXJtTW9kaWZpZXJzOnt9fSksZW1pdHM6TmUoWyJjaGFuZ2UiLCJibHVyIiwiZm9jdXMiLCJjcmVhdGUiLCJjbGVhciIsImhpZ2hsaWdodCIsInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm9wZW4iXSxbInVwZGF0ZTpzZWFyY2hUZXJtIl0pLHNldHVwKG4se2V4cG9zZTpmLGVtaXQ6cn0pe2NvbnN0IHQ9bixhPXIsaT1JdCgpLG09U3Qobiwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KSx7dDp4fT16dCgpLGI9d3QoKSx1PUJ0KCJzZWxlY3RNZW51Iix0KSx7ZmlsdGVyR3JvdXBzOkl9PU50KCksVj1KZShrdCh0LCJtb2RlbFZhbHVlIiwiZGVmYXVsdFZhbHVlIiwib3BlbiIsImRlZmF1bHRPcGVuIiwicmVxdWlyZWQiLCJtdWx0aXBsZSIsInJlc2V0U2VhcmNoVGVybU9uQmx1ciIsInJlc2V0U2VhcmNoVGVybU9uU2VsZWN0IiwicmVzZXRNb2RlbFZhbHVlT25DbGVhciIsImhpZ2hsaWdodE9uSG92ZXIiLCJieSIpLGEpLFQ9THQoaigoKT0+dC5wb3J0YWwpKSxBPWooKCk9Pm5lKHQuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4LHBvc2l0aW9uOiJwb3BwZXIifSkpLEM9aigoKT0+bmUodC5hcnJvdyx7cm91bmRlZDohMH0pKSxnPXcoKCk9PnR5cGVvZiB0LmNsZWFyPT0ib2JqZWN0Ij90LmNsZWFyOnt9KSxCPWooKCk9PnQudmlydHVhbGl6ZT9uZSh0eXBlb2YgdC52aXJ0dWFsaXplPT0iYm9vbGVhbiI/e306dC52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6UXQoYmUudmFsdWUsSC52YWx1ZXx8Im1kIix0LmRlc2NyaXB0aW9uS2V5LCEhaVsiaXRlbS1kZXNjcmlwdGlvbiJdKX0pOiExKSxGPWooKCk9Pm5lKHQuc2VhcmNoSW5wdXQse3BsYWNlaG9sZGVyOngoInNlbGVjdE1lbnUuc2VhcmNoIiksdmFyaWFudDoibm9uZSJ9KSkse2VtaXRGb3JtQmx1cjpSLGVtaXRGb3JtRm9jdXM6cWUsZW1pdEZvcm1JbnB1dDpjZSxlbWl0Rm9ybUNoYW5nZTpsZSxzaXplOmZlLGNvbG9yOmllLGlkOm1lLG5hbWU6Z2UsaGlnaGxpZ2h0OnJlLGRpc2FibGVkOm9lLGFyaWFBdHRyczpJZX09T3QodCkse29yaWVudGF0aW9uOmVlLHNpemU6dmV9PVR0KHQpLHtpc0xlYWRpbmc6Syxpc1RyYWlsaW5nOlMsbGVhZGluZ0ljb25OYW1lOiQsdHJhaWxpbmdJY29uTmFtZTpQfT1BdChqKCgpPT5uZSh0LHt0cmFpbGluZ0ljb246Yi51aS5pY29ucy5jaGV2cm9uRG93bn0pKSksSD13KCgpPT52ZS52YWx1ZXx8ZmUudmFsdWUpLFtzZSxOXT1EZSgpLFt0ZSxFZV09RGUoe3Byb3BzOntpdGVtOnt0eXBlOltPYmplY3QsU3RyaW5nLE51bWJlcixCb29sZWFuXSxyZXF1aXJlZDohMH0saW5kZXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfX19KSxwPXcoKCk9PmplKHtleHRlbmQ6amUoQWEpLC4uLmIudWk/LnNlbGVjdE1lbnV8fHt9fSkoe2NvbG9yOmllLnZhbHVlLHZhcmlhbnQ6dC52YXJpYW50LHNpemU6SD8udmFsdWUsbG9hZGluZzp0LmxvYWRpbmcsaGlnaGxpZ2h0OnJlLnZhbHVlLGxlYWRpbmc6Sy52YWx1ZXx8ISF0LmF2YXRhcnx8ISFpLmxlYWRpbmcsdHJhaWxpbmc6Uy52YWx1ZXx8ISFpLnRyYWlsaW5nLGZpZWxkR3JvdXA6ZWUudmFsdWUsdmlydHVhbGl6ZTohIXQudmlydHVhbGl6ZX0pKTtmdW5jdGlvbiBRZShvKXtpZih0Lm11bHRpcGxlJiZBcnJheS5pc0FycmF5KG8pKXtjb25zdCBfPW8ubWFwKGw9PkdlKEZlLnZhbHVlLGwse2xhYmVsS2V5OnQubGFiZWxLZXksdmFsdWVLZXk6dC52YWx1ZUtleSxieTp0LmJ5fSkpLmZpbHRlcihsPT5sIT1udWxsJiZsIT09IiIpO3JldHVybiBfLmxlbmd0aD4wP18uam9pbigiLCAiKTp2b2lkIDB9cmV0dXJuIEdlKEZlLnZhbHVlLG8se2xhYmVsS2V5OnQubGFiZWxLZXksdmFsdWVLZXk6dC52YWx1ZUtleSxieTp0LmJ5fSl9Y29uc3QgU2U9dygoKT0+dC5pdGVtcz8ubGVuZ3RoP1J0KHQuaXRlbXMpP3QuaXRlbXM6W3QuaXRlbXNdOltdKSxGZT13KCgpPT5TZS52YWx1ZS5mbGF0TWFwKG89Pm8pKSxWZT13KCgpPT57aWYodC5pZ25vcmVGaWx0ZXJ8fCFtLnZhbHVlKXJldHVybiBTZS52YWx1ZTtjb25zdCBvPUFycmF5LmlzQXJyYXkodC5maWx0ZXJGaWVsZHMpP3QuZmlsdGVyRmllbGRzOlt0LmxhYmVsS2V5XTtyZXR1cm4gSShTZS52YWx1ZSxtLnZhbHVlLHtmaWVsZHM6byxpc1N0cnVjdHVyYWw6Xz0+eihfKSYmISFfLnR5cGUmJlsibGFiZWwiLCJzZXBhcmF0b3IiXS5pbmNsdWRlcyhfLnR5cGUpfSl9KSxiZT13KCgpPT5WZS52YWx1ZS5mbGF0TWFwKG89Pm8pKSx5ZT13KCgpPT57aWYoIXQuY3JlYXRlSXRlbXx8IW0udmFsdWUpcmV0dXJuITE7Y29uc3Qgbz10LnZhbHVlS2V5P3tbdC52YWx1ZUtleV06bS52YWx1ZX06bS52YWx1ZTtyZXR1cm4gdHlwZW9mIHQuY3JlYXRlSXRlbT09Im9iamVjdCImJnQuY3JlYXRlSXRlbS53aGVuPT09ImFsd2F5cyJ8fHQuY3JlYXRlSXRlbT09PSJhbHdheXMiPyFiZS52YWx1ZS5maW5kKF89PlB0KF8sbyx0LmJ5Pz90LnZhbHVlS2V5KSk6IWJlLnZhbHVlLmxlbmd0aH0pLGhlPXcoKCk9PnR5cGVvZiB0LmNyZWF0ZUl0ZW09PSJvYmplY3QiP3QuY3JlYXRlSXRlbS5wb3NpdGlvbjoiYm90dG9tIiksemU9UmUoInRyaWdnZXJSZWYiKTtmdW5jdGlvbiBYZSgpe3QuYXV0b2ZvY3VzJiZ6ZS52YWx1ZT8uJGVsPy5mb2N1cyh7Zm9jdXNWaXNpYmxlOiEwfSl9USgoKT0+e3NldFRpbWVvdXQoKCk9PntYZSgpfSx0LmF1dG9mb2N1c0RlbGF5KX0pO2Z1bmN0aW9uIGV0KG8pe2lmKE10KHQubW9kZWxWYWx1ZSk9PT1vKXJldHVybjt0Lm1vZGVsTW9kaWZpZXJzPy50cmltJiYodHlwZW9mIG89PSJzdHJpbmcifHxvPT09bnVsbHx8bz09PXZvaWQgMCkmJihvPW8/LnRyaW0oKT8/bnVsbCksdC5tb2RlbE1vZGlmaWVycz8ubnVtYmVyJiYobz1EdChvKSksdC5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJihvPz89bnVsbCksdC5tb2RlbE1vZGlmaWVycz8ub3B0aW9uYWwmJiF0Lm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmbyE9PW51bGwmJihvPz89dm9pZCAwKTtjb25zdCBfPW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTpvfX0pO2EoImNoYW5nZSIsXyksbGUoKSxjZSgpLHQucmVzZXRTZWFyY2hUZXJtT25TZWxlY3QmJihtLnZhbHVlPSIiKX1mdW5jdGlvbiB0dChvKXtsZXQgXztpZihvKXtjb25zdCBsPW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO2EoImZvY3VzIixsKSxxZSgpLGNsZWFyVGltZW91dChfKX1lbHNle2NvbnN0IGw9bmV3IEZvY3VzRXZlbnQoImJsdXIiKTthKCJibHVyIixsKSxSKCksdC5yZXNldFNlYXJjaFRlcm1PbkJsdXImJihfPXNldFRpbWVvdXQoKCk9PnttLnZhbHVlPSIifSwxMDApKX19ZnVuY3Rpb24gYXQobyl7by5wcmV2ZW50RGVmYXVsdCgpLG8uc3RvcFByb3BhZ2F0aW9uKCksYSgiY3JlYXRlIixtLnZhbHVlKX1mdW5jdGlvbiBsdChvLF8pe2lmKHooXykpe2lmKF8uZGlzYWJsZWQpe28ucHJldmVudERlZmF1bHQoKTtyZXR1cm59Xy5vblNlbGVjdD8uKG8pfX1mdW5jdGlvbiB6KG8pe3JldHVybiB0eXBlb2Ygbz09Im9iamVjdCImJm8hPT1udWxsfWZ1bmN0aW9uIGl0KG8pe3JldHVybiB0Lm11bHRpcGxlJiZBcnJheS5pc0FycmF5KG8pP28ubGVuZ3RoPT09MDpvPT1udWxsfHxvPT09IiJ9ZnVuY3Rpb24gcnQoKXthKCJjbGVhciIpfWNvbnN0ICRlPVJlKCJ2aWV3cG9ydFJlZiIpO3JldHVybiBmKHt0cmlnZ2VyUmVmOmooKCk9PnplLnZhbHVlPy4kZWwpLHZpZXdwb3J0UmVmOmooKCk9PiRlLnZhbHVlKX0pLChvLF8pPT4ocygpLEUoWSxudWxsLFtoKGUoc2UpLG51bGwse2RlZmF1bHQ6ZCgoKT0+W2goZShVZSkseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczp5KHAudmFsdWUuaXRlbSh7Y2xhc3M6ZSh1KT8uaXRlbX0pKSx2YWx1ZTptLnZhbHVlLG9uU2VsZWN0OmF0fSx7ZGVmYXVsdDpkKCgpPT5bdWUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczp5KHAudmFsdWUuaXRlbUxhYmVsKHtjbGFzczplKHUpPy5pdGVtTGFiZWx9KSl9LFt2KG8uJHNsb3RzLCJjcmVhdGUtaXRlbS1sYWJlbCIse2l0ZW06bS52YWx1ZX0sKCk9PltKKFUoZSh4KSgic2VsZWN0TWVudS5jcmVhdGUiLHtsYWJlbDptLnZhbHVlfSkpLDEpXSldLDIpXSksXzozfSw4LFsiY2xhc3MiLCJ2YWx1ZSJdKV0pLF86M30pLGgoZSh0ZSksbnVsbCx7ZGVmYXVsdDpkKCh7aXRlbTpsLGluZGV4Ok19KT0+W3oobCkmJmwudHlwZT09PSJsYWJlbCI/KHMoKSxjKGUoSWEpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOnkocC52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UodSk/LmxhYmVsLGwudWk/LmxhYmVsLGwuY2xhc3NdfSkpfSx7ZGVmYXVsdDpkKCgpPT5bSihVKGUoYWUpKGwsdC5sYWJlbEtleSkpLDEpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOnoobCkmJmwudHlwZT09PSJzZXBhcmF0b3IiPyhzKCksYyhlKEJhKSx7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6eShwLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UodSk/LnNlcGFyYXRvcixsLnVpPy5zZXBhcmF0b3IsbC5jbGFzc119KSl9LG51bGwsOCxbImNsYXNzIl0pKToocygpLGMoZShVZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczp5KHAudmFsdWUuaXRlbSh7Y2xhc3M6W2UodSk/Lml0ZW0seihsKSYmbC51aT8uaXRlbSx6KGwpJiZsLmNsYXNzXX0pKSxkaXNhYmxlZDp6KGwpJiZsLmRpc2FibGVkLHZhbHVlOnQudmFsdWVLZXkmJnoobCk/ZShhZSkobCx0LnZhbHVlS2V5KTpsLG9uU2VsZWN0Oms9Pmx0KGssbCl9LHtkZWZhdWx0OmQoKCk9Plt2KG8uJHNsb3RzLCJpdGVtIix7aXRlbTpsLGluZGV4Ok0sdWk6cC52YWx1ZX0sKCk9Plt2KG8uJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmwsaW5kZXg6TSx1aTpwLnZhbHVlfSwoKT0+W3oobCkmJmwuaWNvbj8ocygpLGMoX2Use2tleTowLG5hbWU6bC5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnkocC52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlKHUpPy5pdGVtTGVhZGluZ0ljb24sbC51aT8uaXRlbUxlYWRpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTp6KGwpJiZsLmF2YXRhcj8ocygpLGMoS2UscSh7a2V5OjEsc2l6ZTpsLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUodSk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sbC5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UodSk/Lml0ZW1MZWFkaW5nQXZhdGFyLGwudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6eihsKSYmbC5jaGlwPyhzKCksYyhFdCxxKHtrZXk6MixzaXplOmwudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUodSk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fHAudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGwuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6cC52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlKHUpPy5pdGVtTGVhZGluZ0NoaXAsbC51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6TygiIiwhMCldKSx1ZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6eShwLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZSh1KT8uaXRlbVdyYXBwZXIseihsKSYmbC51aT8uaXRlbVdyYXBwZXJdfSkpfSxbdWUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczp5KHAudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZSh1KT8uaXRlbUxhYmVsLHoobCkmJmwudWk/Lml0ZW1MYWJlbF19KSl9LFt2KG8uJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTpsLGluZGV4Ok19LCgpPT5bSihVKHoobCk/ZShhZSkobCx0LmxhYmVsS2V5KTpsKSwxKV0pXSwyKSx6KGwpJiYoZShhZSkobCx0LmRlc2NyaXB0aW9uS2V5KXx8aVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8ocygpLEUoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczp5KHAudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZSh1KT8uaXRlbURlc2NyaXB0aW9uLHoobCkmJmwudWk/Lml0ZW1EZXNjcmlwdGlvbl19KSl9LFt2KG8uJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTpsLGluZGV4Ok19LCgpPT5bSihVKGUoYWUpKGwsdC5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTpPKCIiLCEwKV0sMiksdWUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczp5KHAudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZSh1KT8uaXRlbVRyYWlsaW5nLHoobCkmJmwudWk/Lml0ZW1UcmFpbGluZ119KSl9LFt2KG8uJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTpsLGluZGV4Ok0sdWk6cC52YWx1ZX0pLGgoZShDYSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmQoKCk9PltoKF9lLHtuYW1lOm4uc2VsZWN0ZWRJY29ufHxlKGIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp5KHAudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UodSk/Lml0ZW1UcmFpbGluZ0ljb24seihsKSYmbC51aT8uaXRlbVRyYWlsaW5nSWNvbl19KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyIsImRpc2FibGVkIiwidmFsdWUiLCJvblNlbGVjdCJdKSldKSxfOjN9KSxoKGUodGEpLHEoe2lkOmUobWUpfSx7Li4uZShWKSwuLi5vLiRhdHRycywuLi5lKEllKX0seyJpZ25vcmUtZmlsdGVyIjoiIiwiYXMtY2hpbGQiOiIiLG5hbWU6ZShnZSksZGlzYWJsZWQ6ZShvZSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmV0LCJvblVwZGF0ZTpvcGVuIjp0dH0pLHtkZWZhdWx0OmQoKHttb2RlbFZhbHVlOmwsb3BlbjpNfSk9PltoKGUobGEpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpkKCgpPT5baChlKExhKSx7cmVmX2tleToidHJpZ2dlclJlZiIscmVmOnplLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczp5KHAudmFsdWUuYmFzZSh7Y2xhc3M6W2UodSk/LmJhc2UsdC5jbGFzc119KSksdGFiaW5kZXg6IjAifSx7ZGVmYXVsdDpkKCgpPT5bZShLKXx8bi5hdmF0YXJ8fGkubGVhZGluZz8ocygpLEUoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6eShwLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUodSk/LmxlYWRpbmd9KSl9LFt2KG8uJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTpsLG9wZW46TSx1aTpwLnZhbHVlfSwoKT0+W2UoSykmJmUoJCk/KHMoKSxjKF9lLHtrZXk6MCxuYW1lOmUoJCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp5KHAudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUodSk/LmxlYWRpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOm4uYXZhdGFyPyhzKCksYyhLZSxxKHtrZXk6MSxzaXplOmUodSk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sbi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZSh1KT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOk8oIiIsITApXSldLDIpKTpPKCIiLCEwKSx2KG8uJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTpsLG9wZW46TSx1aTpwLnZhbHVlfSwoKT0+WyhzKCEwKSxFKFksbnVsbCx3ZShbUWUobCldLGs9PihzKCksRShZLHtrZXk6a30sW2shPW51bGw/KHMoKSxFKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6InZhbHVlIixjbGFzczp5KHAudmFsdWUudmFsdWUoe2NsYXNzOmUodSk/LnZhbHVlfSkpfSxVKGspLDMpKToocygpLEUoInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoicGxhY2Vob2xkZXIiLGNsYXNzOnkocC52YWx1ZS5wbGFjZWhvbGRlcih7Y2xhc3M6ZSh1KT8ucGxhY2Vob2xkZXJ9KSl9LFUobi5wbGFjZWhvbGRlcj8/IsKgIiksMykpXSw2NCkpKSwxMjgpKV0pLGUoUyl8fGkudHJhaWxpbmd8fG4uY2xlYXI/KHMoKSxFKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczp5KHAudmFsdWUudHJhaWxpbmcoe2NsYXNzOmUodSk/LnRyYWlsaW5nfSkpfSxbdihvLiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOmwsb3BlbjpNLHVpOnAudmFsdWV9LCgpPT5bbi5jbGVhciYmIWl0KGwpPyhzKCksYyhlKHBhKSx7a2V5OjAsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZCgoKT0+W2goRnQscSh7YXM6InNwYW4iLGljb246bi5jbGVhckljb258fGUoYikudWkuaWNvbnMuY2xvc2Usc2l6ZTpILnZhbHVlLHZhcmlhbnQ6ImxpbmsiLGNvbG9yOiJuZXV0cmFsIix0YWJpbmRleDoiLTEifSxnLnZhbHVlLHsiZGF0YS1zbG90IjoidHJhaWxpbmdDbGVhciIsY2xhc3M6cC52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplKHUpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazpkZShydCxbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsInNpemUiLCJjbGFzcyJdKV0pLF86MX0pKTplKFApPyhzKCksYyhfZSx7a2V5OjEsbmFtZTplKFApLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOnkocC52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOmUodSk/LnRyYWlsaW5nSWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpPKCIiLCEwKV0pXSwyKSk6TygiIiwhMCldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV0pLF86Mn0sMTAyNCksaChlKHphKSxaKHBlKGUoVCkpKSx7ZGVmYXVsdDpkKCgpPT5baChlKFZ0KSxudWxsLHtkZWZhdWx0OmQoKCk9PltoKGUoZmEpLHEoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpwLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUodSk/LmNvbnRlbnR9KX0sQS52YWx1ZSkse2RlZmF1bHQ6ZCgoKT0+W2goZShZZSkse3RyYXBwZWQ6IiIsImRhdGEtc2xvdCI6ImZvY3VzU2NvcGUiLGNsYXNzOnkocC52YWx1ZS5mb2N1c1Njb3BlKHtjbGFzczplKHUpPy5mb2N1c1Njb3BlfSkpfSx7ZGVmYXVsdDpkKCgpPT5bdihvLiRzbG90cywiY29udGVudC10b3AiKSxuLnNlYXJjaElucHV0PyhzKCksYyhlKGhhKSx7a2V5OjAsbW9kZWxWYWx1ZTptLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpfWzFdfHwoX1sxXT1rPT5tLnZhbHVlPWspLCJkaXNwbGF5LXZhbHVlIjooKT0+bS52YWx1ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpkKCgpPT5baCgkdCxxKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6SC52YWx1ZX0sRi52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06bi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpwLnZhbHVlLmlucHV0KHtjbGFzczplKHUpPy5pbnB1dH0pLG9uQ2hhbmdlOl9bMF18fChfWzBdPWRlKCgpPT57fSxbInN0b3AiXSkpfSksbnVsbCwxNixbInNpemUiLCJtb2RlbC1tb2RpZmllcnMiLCJjbGFzcyJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJkaXNwbGF5LXZhbHVlIl0pKTpPKCIiLCEwKSxoKGUoZ2EpLHsiZGF0YS1zbG90IjoiZW1wdHkiLGNsYXNzOnkocC52YWx1ZS5lbXB0eSh7Y2xhc3M6ZSh1KT8uZW1wdHl9KSl9LHtkZWZhdWx0OmQoKCk9Plt2KG8uJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06bS52YWx1ZX0sKCk9PltKKFUobS52YWx1ZT9lKHgpKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOm0udmFsdWV9KTplKHgpKCJzZWxlY3RNZW51Lm5vRGF0YSIpKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSksdWUoImRpdiIse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6JGUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnkocC52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZSh1KT8udmlld3BvcnR9KSl9LFtuLnZpcnR1YWxpemU/KHMoKSxFKFkse2tleTowfSxbeWUudmFsdWUmJmhlLnZhbHVlPT09InRvcCI/KHMoKSxjKGUoTikse2tleTowfSkpOk8oIiIsITApLGgoZShUYSkscSh7b3B0aW9uczpiZS52YWx1ZSwidGV4dC1jb250ZW50IjprPT56KGspP2UoYWUpKGssdC5sYWJlbEtleSk6U3RyaW5nKGspfSxCLnZhbHVlKSx7ZGVmYXVsdDpkKCh7b3B0aW9uOmssdmlydHVhbEl0ZW06eGV9KT0+W2goZShFZSkse2l0ZW06ayxpbmRleDp4ZS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSkseWUudmFsdWUmJmhlLnZhbHVlPT09ImJvdHRvbSI/KHMoKSxjKGUoTikse2tleToxfSkpOk8oIiIsITApXSw2NCkpOihzKCksRShZLHtrZXk6MX0sW3llLnZhbHVlJiZoZS52YWx1ZT09PSJ0b3AiPyhzKCksYyhlKEJlKSx7a2V5OjAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczp5KHAudmFsdWUuZ3JvdXAoe2NsYXNzOmUodSk/Lmdyb3VwfSkpfSx7ZGVmYXVsdDpkKCgpPT5baChlKE4pKV0pLF86MX0sOCxbImNsYXNzIl0pKTpPKCIiLCEwKSwocyghMCksRShZLG51bGwsd2UoVmUudmFsdWUsKGsseGUpPT4ocygpLGMoZShCZSkse2tleTpgZ3JvdXAtJHt4ZX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6eShwLnZhbHVlLmdyb3VwKHtjbGFzczplKHUpPy5ncm91cH0pKX0se2RlZmF1bHQ6ZCgoKT0+WyhzKCEwKSxFKFksbnVsbCx3ZShrLChvdCxQZSk9PihzKCksYyhlKEVlKSx7a2V5OmBncm91cC0ke3hlfS0ke1BlfWAsaXRlbTpvdCxpbmRleDpQZX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpLHllLnZhbHVlJiZoZS52YWx1ZT09PSJib3R0b20iPyhzKCksYyhlKEJlKSx7a2V5OjEsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczp5KHAudmFsdWUuZ3JvdXAoe2NsYXNzOmUodSk/Lmdyb3VwfSkpfSx7ZGVmYXVsdDpkKCgpPT5baChlKE4pKV0pLF86MX0sOCxbImNsYXNzIl0pKTpPKCIiLCEwKV0sNjQpKV0sMiksdihvLiRzbG90cywiY29udGVudC1ib3R0b20iKV0pLF86M30sOCxbImNsYXNzIl0pLG4uYXJyb3c/KHMoKSxjKGUodWEpLHEoe2tleTowfSxDLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOnAudmFsdWUuYXJyb3coe2NsYXNzOmUodSk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOk8oIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldKSxfOjN9LDE2KV0pLF86M30sMTYsWyJpZCIsIm5hbWUiLCJkaXNhYmxlZCJdKV0sNjQpKX19KTtleHBvcnR7JGEgYXMgX307Cg==", "/_nuxt/ZJVk0olN.js": "aW1wb3J0e2FoIGFzIEMsYXggYXMgaixKIGFzIEIsSyBhcyBWLG8gYXMgcixoIGFzIHUsdyBhcyBJLEwgYXMgZCxJIGFzIE4sYWEgYXMgZixpIGFzIGUsayBhcyBQLE0gYXMgbyx2IGFzIGksYSBhcyBBLGMgYXMgZyxkIGFzIHAsdCBhcyBoLEYgYXMgdyxxIGFzIGssaiBhcyBtLFAgYXMgTCxsIGFzIE8sTiBhcyBxfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgRj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiB3LWZ1bGwgcm91bmRlZC1sZyBwLTQgZmxleCBnYXAtMi41Iix3cmFwcGVyOiJtaW4tdy0wIGZsZXgtMSBmbGV4IGZsZXgtY29sIix0aXRsZToidGV4dC1zbSBmb250LW1lZGl1bSIsZGVzY3JpcHRpb246InRleHQtc20gb3BhY2l0eS05MCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IixhdmF0YXI6InNocmluay0wIixhdmF0YXJTaXplOiIyeGwiLGFjdGlvbnM6ImZsZXggZmxleC13cmFwIGdhcC0xLjUgc2hyaW5rLTAiLGNsb3NlOiJwLTAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LHZhcmlhbnQ6e3NvbGlkOiIiLG91dGxpbmU6IiIsc29mdDoiIixzdWJ0bGU6IiJ9LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJpdGVtcy1jZW50ZXIiLGFjdGlvbnM6Iml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntyb290OiJpdGVtcy1zdGFydCIsYWN0aW9uczoiaXRlbXMtc3RhcnQgbXQtMi41In19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLXByaW1hcnkgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1zZWNvbmRhcnkgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvbGlkIixjbGFzczp7cm9vdDoiYmctc3VjY2VzcyB0ZXh0LWludmVydGVkIn19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1pbmZvIHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLXdhcm5pbmcgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLWVycm9yIHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvMjUifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOntyb290OiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1zdWNjZXNzIHJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvMjUifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vMjUifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC13YXJuaW5nIHJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvMjUifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtZXJyb3IgcmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvMjUifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOntyb290OiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctc3VjY2Vzcy8xMCB0ZXh0LXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctaW5mby8xMCB0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctd2FybmluZy8xMCB0ZXh0LXdhcm5pbmcifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLWVycm9yLzEwIHRleHQtZXJyb3IifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctc3VjY2Vzcy8xMCB0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6ImJnLWluZm8vMTAgdGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vMjUifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy13YXJuaW5nLzEwIHRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1In19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6ImJnLWVycm9yLzEwIHRleHQtZXJyb3IgcmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvMjUifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6InRleHQtaW52ZXJ0ZWQgYmctaW52ZXJ0ZWQifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWRlZmF1bHQifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZC81MCJ9fSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQifX1dLGRlZmF1bHRWYXJpYW50czp7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InNvbGlkIn19LEQ9e19fbmFtZToiVUFsZXJ0Iixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0sYWN0aW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cCh0LHtlbWl0Onp9KXtjb25zdCBuPXQsJD16LGw9QygpLHt0OlN9PWooKSx4PUIoKSxzPVYoImFsZXJ0IixuKSxhPU8oKCk9PnEoe2V4dGVuZDpxKEYpLC4uLngudWk/LmFsZXJ0fHx7fX0pKHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LG9yaWVudGF0aW9uOm4ub3JpZW50YXRpb24sdGl0bGU6ISFuLnRpdGxlfHwhIWwudGl0bGV9KSk7cmV0dXJuKGMsYik9PihyKCksdShlKEwpLHthczp0LmFzLCJkYXRhLW9yaWVudGF0aW9uIjp0Lm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpvKGEudmFsdWUucm9vdCh7Y2xhc3M6W2Uocyk/LnJvb3Qsbi5jbGFzc119KSl9LHtkZWZhdWx0OkkoKCk9PltkKGMuJHNsb3RzLCJsZWFkaW5nIix7dWk6YS52YWx1ZX0sKCk9Plt0LmF2YXRhcj8ocigpLHUoTixmKHtrZXk6MCxzaXplOmUocyk/LmF2YXRhclNpemV8fGEudmFsdWUuYXZhdGFyU2l6ZSgpfSx0LmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6YS52YWx1ZS5hdmF0YXIoe2NsYXNzOmUocyk/LmF2YXRhcn0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6dC5pY29uPyhyKCksdShQLHtrZXk6MSxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6byhhLnZhbHVlLmljb24oe2NsYXNzOmUocyk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aSgiIiwhMCldKSxBKCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6byhhLnZhbHVlLndyYXBwZXIoe2NsYXNzOmUocyk/LndyYXBwZXJ9KSl9LFt0LnRpdGxlfHxsLnRpdGxlPyhyKCksZygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpvKGEudmFsdWUudGl0bGUoe2NsYXNzOmUocyk/LnRpdGxlfSkpfSxbZChjLiRzbG90cywidGl0bGUiLHt9LCgpPT5bcChoKHQudGl0bGUpLDEpXSldLDIpKTppKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxsLmRlc2NyaXB0aW9uPyhyKCksZygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpvKGEudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUocyk/LmRlc2NyaXB0aW9ufSkpfSxbZChjLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bcChoKHQuZGVzY3JpcHRpb24pLDEpXSldLDIpKTppKCIiLCEwKSx0Lm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmKHQuYWN0aW9ucz8ubGVuZ3RofHxsLmFjdGlvbnMpPyhyKCksZygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImFjdGlvbnMiLGNsYXNzOm8oYS52YWx1ZS5hY3Rpb25zKHtjbGFzczplKHMpPy5hY3Rpb25zfSkpfSxbZChjLiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsocighMCksZyh3LG51bGwsayh0LmFjdGlvbnMsKHYseSk9PihyKCksdShtLGYoe2tleTp5LHNpemU6InhzIn0se3JlZl9mb3I6ITB9LHYpLG51bGwsMTYpKSksMTI4KSldKV0sMikpOmkoIiIsITApXSwyKSx0Lm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiJiYodC5hY3Rpb25zPy5sZW5ndGh8fGwuYWN0aW9ucyl8fHQuY2xvc2U/KHIoKSxnKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6byhhLnZhbHVlLmFjdGlvbnMoe2NsYXNzOmUocyk/LmFjdGlvbnMsb3JpZW50YXRpb246Imhvcml6b250YWwifSkpfSxbdC5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIiYmKHQuYWN0aW9ucz8ubGVuZ3RofHxsLmFjdGlvbnMpP2QoYy4kc2xvdHMsImFjdGlvbnMiLHtrZXk6MH0sKCk9PlsocighMCksZyh3LG51bGwsayh0LmFjdGlvbnMsKHYseSk9PihyKCksdShtLGYoe2tleTp5LHNpemU6InhzIn0se3JlZl9mb3I6ITB9LHYpLG51bGwsMTYpKSksMTI4KSldKTppKCIiLCEwKSxkKGMuJHNsb3RzLCJjbG9zZSIse3VpOmEudmFsdWV9LCgpPT5bdC5jbG9zZT8ocigpLHUobSxmKHtrZXk6MCxpY29uOnQuY2xvc2VJY29ufHxlKHgpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6ZShTKSgiYWxlcnQuY2xvc2UiKX0sdHlwZW9mIHQuY2xvc2U9PSJvYmplY3QiP3QuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6YS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZShzKT8uY2xvc2V9KSxvbkNsaWNrOmJbMF18fChiWzBdPXY9PiQoInVwZGF0ZTpvcGVuIiwhMSkpfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiXSkpOmkoIiIsITApXSldLDIpKTppKCIiLCEwKV0pLF86M30sOCxbImFzIiwiZGF0YS1vcmllbnRhdGlvbiIsImNsYXNzIl0pKX19O2V4cG9ydHtEIGFzIF99Owo=", "/_nuxt/ZZsfP9KZ.js": "aW1wb3J0e18gYXMgbyx1IGFzIHMsbyBhcyBhLGMgYXMgaSxhIGFzIHQsdCBhcyByfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgdT17Y2xhc3M6ImFudGlhbGlhc2VkIGJnLXdoaXRlIGRhcms6YmctWyMwMjA0MjBdIGRhcms6dGV4dC13aGl0ZSBmb250LXNhbnMgZ3JpZCBtaW4taC1zY3JlZW4gb3ZlcmZsb3ctaGlkZGVuIHBsYWNlLWNvbnRlbnQtY2VudGVyIHRleHQtWyMwMjA0MjBdIHRyYWNraW5nLXdpZGUifSxsPXtjbGFzczoibWF4LXctNTIwcHggdGV4dC1jZW50ZXIifSxjPVsidGV4dENvbnRlbnQiXSxkPVsidGV4dENvbnRlbnQiXSxwPVsidGV4dENvbnRlbnQiXSxmPXtfX25hbWU6ImVycm9yLTUwMCIscHJvcHM6e2FwcE5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Ik51eHQifSxzdGF0dXM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NTAwfSxzdGF0dXNUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OiJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IifSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiVGhpcyBwYWdlIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlLiJ9LHJlZnJlc2g6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlJlZnJlc2ggdGhpcyBwYWdlIn19LHNldHVwKGUpe2NvbnN0IG49ZTtyZXR1cm4gcyh7dGl0bGU6YCR7bi5zdGF0dXN9IC0gJHtuLnN0YXR1c1RleHR9IHwgJHtuLmFwcE5hbWV9YCxzY3JpcHQ6W3tpbm5lckhUTUw6YCFmdW5jdGlvbigpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYoIShlJiZlLnN1cHBvcnRzJiZlLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpKXtmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpcihlKTtuZXcgTXV0YXRpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IG8gb2YgZSlpZigiY2hpbGRMaXN0Ij09PW8udHlwZSlmb3IoY29uc3QgZSBvZiBvLmFkZGVkTm9kZXMpIkxJTksiPT09ZS50YWdOYW1lJiYibW9kdWxlcHJlbG9hZCI9PT1lLnJlbCYmcihlKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSl9ZnVuY3Rpb24gcihlKXtpZihlLmVwKXJldHVybjtlLmVwPSEwO2NvbnN0IHI9ZnVuY3Rpb24oZSl7Y29uc3Qgcj17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJihyLmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKHIucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksInVzZS1jcmVkZW50aWFscyI9PT1lLmNyb3NzT3JpZ2luP3IuY3JlZGVudGlhbHM9ImluY2x1ZGUiOiJhbm9ueW1vdXMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJvbWl0IjpyLmNyZWRlbnRpYWxzPSJzYW1lLW9yaWdpbiIscn0oZSk7ZmV0Y2goZS5ocmVmLHIpfX0oKTtgfV0sc3R5bGU6W3tpbm5lckhUTUw6JyosOmFmdGVyLDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLXVuLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCNlNWU3ZWIpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MDtib3gtc2l6aW5nOmJvcmRlci1ib3h9OmFmdGVyLDpiZWZvcmV7LS11bi1jb250ZW50OiIifWh0bWx7bGluZS1oZWlnaHQ6MS41Oy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sLE5vdG8gQ29sb3IgRW1vamk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7LW1vei10YWItc2l6ZTo0O3RhYi1zaXplOjQ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWJvZHl7bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46MH1oMSxoMntmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0fWgxLGgyLHB7bWFyZ2luOjB9Kiw6YWZ0ZXIsOmJlZm9yZXstLXVuLXJvdGF0ZTowOy0tdW4tcm90YXRlLXg6MDstLXVuLXJvdGF0ZS15OjA7LS11bi1yb3RhdGUtejowOy0tdW4tc2NhbGUteDoxOy0tdW4tc2NhbGUteToxOy0tdW4tc2NhbGUtejoxOy0tdW4tc2tldy14OjA7LS11bi1za2V3LXk6MDstLXVuLXRyYW5zbGF0ZS14OjA7LS11bi10cmFuc2xhdGUteTowOy0tdW4tdHJhbnNsYXRlLXo6MDstLXVuLXBhbi14OiA7LS11bi1wYW4teTogOy0tdW4tcGluY2gtem9vbTogOy0tdW4tc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczpwcm94aW1pdHk7LS11bi1vcmRpbmFsOiA7LS11bi1zbGFzaGVkLXplcm86IDstLXVuLW51bWVyaWMtZmlndXJlOiA7LS11bi1udW1lcmljLXNwYWNpbmc6IDstLXVuLW51bWVyaWMtZnJhY3Rpb246IDstLXVuLWJvcmRlci1zcGFjaW5nLXg6MDstLXVuLWJvcmRlci1zcGFjaW5nLXk6MDstLXVuLXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1zaGFkb3ctaW5zZXQ6IDstLXVuLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLWluc2V0OiA7LS11bi1yaW5nLW9mZnNldC13aWR0aDowcHg7LS11bi1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdW4tcmluZy13aWR0aDowcHg7LS11bi1yaW5nLWNvbG9yOnJnYmEoMTQ3LDE5NywyNTMsLjUpOy0tdW4tYmx1cjogOy0tdW4tYnJpZ2h0bmVzczogOy0tdW4tY29udHJhc3Q6IDstLXVuLWRyb3Atc2hhZG93OiA7LS11bi1ncmF5c2NhbGU6IDstLXVuLWh1ZS1yb3RhdGU6IDstLXVuLWludmVydDogOy0tdW4tc2F0dXJhdGU6IDstLXVuLXNlcGlhOiA7LS11bi1iYWNrZHJvcC1ibHVyOiA7LS11bi1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS11bi1iYWNrZHJvcC1jb250cmFzdDogOy0tdW4tYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS11bi1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS11bi1iYWNrZHJvcC1pbnZlcnQ6IDstLXVuLWJhY2tkcm9wLW9wYWNpdHk6IDstLXVuLWJhY2tkcm9wLXNhdHVyYXRlOiA7LS11bi1iYWNrZHJvcC1zZXBpYTogfSd9XX0pLChoLG0pPT4oYSgpLGkoImRpdiIsdSxbdCgiZGl2IixsLFt0KCJoMSIse2NsYXNzOiJmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSBtYi00IHNtOnRleHQtWzExMHB4XSB0YWJ1bGFyLW51bXMgdGV4dC1bODBweF0iLHRleHRDb250ZW50OnIoZS5zdGF0dXMpfSxudWxsLDgsYyksdCgiaDIiLHtjbGFzczoiZm9udC1zZW1pYm9sZCBtYi0yIHNtOnRleHQtM3hsIHRleHQtMnhsIix0ZXh0Q29udGVudDpyKGUuc3RhdHVzVGV4dCl9LG51bGwsOCxkKSx0KCJwIix7Y2xhc3M6Im1iLTQgcHgtMiB0ZXh0LVsjNjQ3NDhCXSB0ZXh0LW1kIix0ZXh0Q29udGVudDpyKGUuZGVzY3JpcHRpb24pfSxudWxsLDgscCldKV0pKX19LGI9byhmLFtbIl9fc2NvcGVJZCIsImRhdGEtdi0yNDg0MzFkMiJdXSk7ZXhwb3J0e2IgYXMgZGVmYXVsdH07Cg==", "/_nuxt/_2lSdr13.js": "aW1wb3J0e2FoIGFzIEksSiBhcyBxLEsgYXMgdyxiciBhcyBBLGJzIGFzIFMsbyBhcyBpLGggYXMgdCx3IGFzIGssTCBhcyBjLGkgYXMgZSxrIGFzIHYsTSBhcyBsLEkgYXMgaCxhYSBhcyBCLHYgYXMgdSxjIGFzIEMsdCBhcyBOLFAgYXMgJCxsIGFzIEcsTiBhcyBwfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgUD17c2xvdHM6e2Jhc2U6ImZvbnQtbWVkaXVtIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsbGFiZWw6InRydW5jYXRlIixsZWFkaW5nSWNvbjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZ0ljb246InNocmluay0wIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sdmFyaWFudDp7c29saWQ6IiIsb3V0bGluZToiIixzb2Z0OiIiLHN1YnRsZToiIn0sc2l6ZTp7eHM6e2Jhc2U6InRleHQtWzhweF0vMyBweC0xIHB5LTAuNSBnYXAtMSByb3VuZGVkLXNtIixsZWFkaW5nSWNvbjoic2l6ZS0zIixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtMyJ9LHNtOntiYXNlOiJ0ZXh0LVsxMHB4XS8zIHB4LTEuNSBweS0xIGdhcC0xIHJvdW5kZWQtc20iLGxlYWRpbmdJY29uOiJzaXplLTMiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS0zIn0sbWQ6e2Jhc2U6InRleHQteHMgcHgtMiBweS0xIGdhcC0xIHJvdW5kZWQtbWQiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sbGc6e2Jhc2U6InRleHQtc20gcHgtMiBweS0xIGdhcC0xLjUgcm91bmRlZC1tZCIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSx4bDp7YmFzZToidGV4dC1iYXNlIHB4LTIuNSBweS0xIGdhcC0xLjUgcm91bmRlZC1tZCIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sc3F1YXJlOnt0cnVlOiIifX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXByaW1hcnkgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXNlY29uZGFyeSB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXN1Y2Nlc3MgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1pbmZvIHRleHQtaW52ZXJ0ZWQifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixjbGFzczoiYmctd2FybmluZyB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1lcnJvciB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvNTAifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeS81MCJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vNTAifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzUwIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLXNlY29uZGFyeS8xMCB0ZXh0LXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctaW5mby8xMCB0ZXh0LWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy13YXJuaW5nLzEwIHRleHQtd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLXNlY29uZGFyeS8xMCB0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIHJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvMjUifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLWluZm8vMTAgdGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vMjUifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLXdhcm5pbmcvMTAgdGV4dC13YXJuaW5nIHJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvMjUifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1In0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCB0ZXh0LWRlZmF1bHQgYmctZGVmYXVsdCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWVsZXZhdGVkIn0se3NpemU6InhzIixzcXVhcmU6ITAsY2xhc3M6InAtMC41In0se3NpemU6InNtIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9LHtzaXplOiJtZCIsc3F1YXJlOiEwLGNsYXNzOiJwLTEifSx7c2l6ZToibGciLHNxdWFyZTohMCxjbGFzczoicC0xIn0se3NpemU6InhsIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsc2l6ZToibWQifX0sTD17X19uYW1lOiJVQmFkZ2UiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifSxsYWJlbDp7dHlwZTpbU3RyaW5nLE51bWJlcl0scmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBhPXIsZj1JKCksYj1xKCksbj13KCJiYWRnZSIsYSkse29yaWVudGF0aW9uOnksc2l6ZTptfT1BKGEpLHtpc0xlYWRpbmc6eCxpc1RyYWlsaW5nOnosbGVhZGluZ0ljb25OYW1lOmcsdHJhaWxpbmdJY29uTmFtZTpkfT1TKGEpLHM9RygoKT0+cCh7ZXh0ZW5kOnAoUCksLi4uYi51aT8uYmFkZ2V8fHt9fSkoe2NvbG9yOmEuY29sb3IsdmFyaWFudDphLnZhcmlhbnQsc2l6ZTptLnZhbHVlfHxhLnNpemUsc3F1YXJlOmEuc3F1YXJlfHwhZi5kZWZhdWx0JiYhYS5sYWJlbCxmaWVsZEdyb3VwOnkudmFsdWV9KSk7cmV0dXJuKG8sVik9PihpKCksdChlKCQpLHthczpyLmFzLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpsKHMudmFsdWUuYmFzZSh7Y2xhc3M6W2Uobik/LmJhc2UsYS5jbGFzc119KSl9LHtkZWZhdWx0OmsoKCk9PltjKG8uJHNsb3RzLCJsZWFkaW5nIix7dWk6cy52YWx1ZX0sKCk9PltlKHgpJiZlKGcpPyhpKCksdCh2LHtrZXk6MCxuYW1lOmUoZyksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpsKHMudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUobik/LmxlYWRpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnIuYXZhdGFyPyhpKCksdChoLEIoe2tleToxLHNpemU6ZShuKT8ubGVhZGluZ0F2YXRhclNpemV8fHMudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sci5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpzLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmUobik/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOnUoIiIsITApXSksYyhvLiRzbG90cywiZGVmYXVsdCIse3VpOnMudmFsdWV9LCgpPT5bci5sYWJlbCE9PXZvaWQgMCYmci5sYWJlbCE9PW51bGw/KGkoKSxDKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpsKHMudmFsdWUubGFiZWwoe2NsYXNzOmUobik/LmxhYmVsfSkpfSxOKHIubGFiZWwpLDMpKTp1KCIiLCEwKV0pLGMoby4kc2xvdHMsInRyYWlsaW5nIix7dWk6cy52YWx1ZX0sKCk9PltlKHopJiZlKGQpPyhpKCksdCh2LHtrZXk6MCxuYW1lOmUoZCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6bChzLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZShuKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnUoIiIsITApXSldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19O2V4cG9ydHtMIGFzIF99Owo=", "/_nuxt/builds/latest.json": "eyJpZCI6ImUyMzk3NGFhLWY4OGQtNGE0Mi05NzU5LTFmMWFlNzg4NGVmOCIsInRpbWVzdGFtcCI6MTc4MDMwNjY1MDYyNX0=", "/_nuxt/builds/meta/e23974aa-f88d-4a42-9759-1f1ae7884ef8.json": "eyJpZCI6ImUyMzk3NGFhLWY4OGQtNGE0Mi05NzU5LTFmMWFlNzg4NGVmOCIsInRpbWVzdGFtcCI6MTc4MDMwNjY1MDYyNSwicHJlcmVuZGVyZWQiOltdfQ==", "/_nuxt/cdK_A6Nm.js": "aW1wb3J0e2YgYXMgWSx4IGFzIFosZyBhcyBlZSxwIGFzIEMseiBhcyB0ZSx1IGFzIHNlLEMgYXMgYWUsbyBhcyByLGggYXMgeix3IGFzIGwsaSBhcyBzLGMgYXMgZCx0IGFzIG0sdiBhcyB3LGEgYXMgYyxGIGFzIEkscSBhcyBOLGIgYXMgYSxqIGFzIG9lLEQgYXMgcmUsRSBhcyBsZSxHIGFzIGssSCBhcyBkZSxkIGFzIE0sSSBhcyBuZSxCIGFzIGllLHIgYXMgdixsIGFzIHF9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBjZX1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIHVlfWZyb20iLi9DR1hnU01aaC5qcyI7aW1wb3J0e18gYXMgbWV9ZnJvbSIuL0MxT1FpeVVELmpzIjtpbXBvcnR7dSBhcyBfZX1mcm9tIi4vRFlabGcwLTUuanMiO2ltcG9ydHt1IGFzIHBlfWZyb20iLi9DZl9mdzFFOS5qcyI7aW1wb3J0e18gYXMgZmV9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgdmU9e2tleTowLGNsYXNzOiJtYXgtdy0zeGwgbXgtYXV0byBwLTQgc3BhY2UteS02In0sYmU9e2tleTowLGNsYXNzOiJ0ZXh0LW11dGVkIn0seWU9e2NsYXNzOiJmb250LXNlbWlib2xkIG1iLTMifSxnZT17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCBtYi0zIn0saGU9e2tleToxLGNsYXNzOiJzcGFjZS15LTIgbWItMyJ9LHhlPXtjbGFzczoidGV4dC1zbSBmb250LW1lZGl1bSJ9LHdlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxrZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LE1lPXtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1lbmQgZ2FwLTIifSxQZT17Y2xhc3M6ImZvbnQtc2VtaWJvbGQgbWItMyJ9LFVlPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIG1iLTMifSxWZT17a2V5OjEsY2xhc3M6InNwYWNlLXktMiBtYi0zIn0samU9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LENlPXtjbGFzczoidGV4dC1zbSJ9LCRlPXtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1lbmQgZ2FwLTIifSxBZT17a2V5OjEsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGgtNDggdGV4dC1tdXRlZCJ9LFFlPVkoe19fbmFtZToiW2lkXSIsc2V0dXAoQmUpe2NvbnN0IEQ9WigpLGI9cGUoKSxGPWllKCksUj1fZSgpLHU9ZWUoKSxmPUQucGFyYW1zLmlkLHtkYXRhOm8sZXJyb3I6SCxyZWZyZXNoOmh9PUMoYHByb2plY3QtJHtmfWAsKCk9PmIuZmV0Y2hQcm9qZWN0KGYpKTt0ZShIKSxzZSgoKT0+KHt0aXRsZTpvLnZhbHVlPy5uYW1lPz8iUHJvamVjdCJ9KSk7Y29uc3R7ZGF0YTpPfT1DKCJvcmctbWVtYmVycy1mb3ItcHJvamVjdCIsKCk9PkYuZmV0Y2hNZW1iZXJzKHtsaW1pdDoxMDB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSl9KSx7ZGF0YTokfT1DKCJwcm9kdWN0cy1mb3ItcHJvamVjdCIsKCk9PlIuZmV0Y2hQcm9kdWN0cygiYWN0aXZlIikse2RlZmF1bHQ6KCk9PltdfSksXz12KCIiKSx5PXYoMSksUD12KCExKSxwPXYoIiIpLGc9digibWVtYmVyIiksVT12KCExKSxBPXEoKCk9Pntjb25zdCBuPW5ldyBTZXQoby52YWx1ZT8ucHJvZHVjdHMubWFwKHQ9PnQucHJvZHVjdF9pZCk/P1tdKTtyZXR1cm4oJC52YWx1ZT8/W10pLmZpbHRlcih0PT4hbi5oYXModC5pZCkpfSksQj1xKCgpPT57Y29uc3Qgbj1uZXcgU2V0KG8udmFsdWU/Lm1lbWJlcnMubWFwKHQ9PnQudXNlcl9pZCk/P1tdKTtyZXR1cm4oTy52YWx1ZT8uaXRlbXM/P1tdKS5maWx0ZXIodD0+IW4uaGFzKHQuaWQpKX0pO2FzeW5jIGZ1bmN0aW9uIFEoKXtpZihfLnZhbHVlKXtQLnZhbHVlPSEwO3RyeXthd2FpdCBiLmFkZFByb2R1Y3QoZix7cHJvZHVjdF9pZDpfLnZhbHVlLHF1YW50aXR5OnkudmFsdWV9KSxhd2FpdCBoKCksXy52YWx1ZT0iIix5LnZhbHVlPTEsdS5hZGQoe3RpdGxlOiJQcm9kdWN0IGFkZGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChuKXtjb25zdCB0PW47dS5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1AudmFsdWU9ITF9fX1hc3luYyBmdW5jdGlvbiBUKG4pe3RyeXthd2FpdCBiLnJlbW92ZVByb2R1Y3QoZixuKSxhd2FpdCBoKCksdS5hZGQoe3RpdGxlOiJQcm9kdWN0IHJlbW92ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKHQpe2NvbnN0IGk9dDt1LmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjppPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1hc3luYyBmdW5jdGlvbiBHKCl7aWYocC52YWx1ZSl7VS52YWx1ZT0hMDt0cnl7YXdhaXQgYi5hZGRNZW1iZXIoZix7dXNlcl9pZDpwLnZhbHVlLHJvbGU6Zy52YWx1ZX0pLGF3YWl0IGgoKSxwLnZhbHVlPSIiLGcudmFsdWU9Im1lbWJlciIsdS5hZGQoe3RpdGxlOiJNZW1iZXIgYWRkZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKG4pe2NvbnN0IHQ9bjt1LmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7VS52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIEwobil7dHJ5e2F3YWl0IGIucmVtb3ZlTWVtYmVyKGYsbiksYXdhaXQgaCgpLHUuYWRkKHt0aXRsZToiTWVtYmVyIHJlbW92ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKHQpe2NvbnN0IGk9dDt1LmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjppPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1yZXR1cm4obix0KT0+e2NvbnN0IGk9b2UsRT1jZSxWPWxlLHg9cmUsSj1kZSxTPWFlKCJDYW4iKSxLPW5lLFc9dWUsWD1tZTtyZXR1cm4gcigpLHooWCx7aWQ6InByb2plY3QtZGV0YWlsIn0se2hlYWRlcjpsKCgpPT5bYShmZSx7dGl0bGU6cyhvKT8ubmFtZT8/IlByb2plY3QifSx7bGVhZGluZzpsKCgpPT5bYShpLHtpY29uOiJpLWx1Y2lkZS1hcnJvdy1sZWZ0Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHRvOiIvcHJvamVjdHMifSldKSxyaWdodDpsKCgpPT5bcyhvKT8ocigpLHooRSx7a2V5OjAsY29sb3I6cyhvKS5zdGF0dXM9PT0iYWN0aXZlIj8ic3VjY2VzcyI6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0OmwoKCk9PltNKG0ocyhvKS5zdGF0dXMpLDEpXSksXzoxfSw4LFsiY29sb3IiXSkpOncoIiIsITApXSksXzoxfSw4LFsidGl0bGUiXSldKSxib2R5OmwoKCk9PltzKG8pPyhyKCksZCgiZGl2Iix2ZSxbcyhvKS5kZXNjcmlwdGlvbj8ocigpLGQoInAiLGJlLG0ocyhvKS5kZXNjcmlwdGlvbiksMSkpOncoIiIsITApLGMoImRpdiIsbnVsbCxbYygiaDIiLHllLCIgUHJvZHVjdHMgKCIrbShzKG8pLnByb2R1Y3RzLmxlbmd0aCkrIikgIiwxKSxzKG8pLnByb2R1Y3RzLmxlbmd0aD09PTA/KHIoKSxkKCJkaXYiLGdlLCIgTm8gcHJvZHVjdHMgbGlua2VkLiAiKSk6KHIoKSxkKCJkaXYiLGhlLFsocighMCksZChJLG51bGwsTihzKG8pLnByb2R1Y3RzLGU9PihyKCksZCgiZGl2Iix7a2V5OmUucHJvZHVjdF9pZCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBiZy1lbGV2YXRlZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGVmYXVsdCJ9LFtjKCJzcGFuIix4ZSxtKHMoJCk/LmZpbmQoaj0+ai5pZD09PWUucHJvZHVjdF9pZCk/Lm5hbWU/P2UucHJvZHVjdF9pZCksMSksYygiZGl2Iix3ZSxbYygic3BhbiIsa2UsInF0eTogIittKGUucXVhbnRpdHkpLDEpLGEoaSx7aWNvbjoiaS1sdWNpZGUteCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsb25DbGljazpqPT5UKGUucHJvZHVjdF9pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSldKV0pKSksMTI4KSldKSksYShTLHtJOiJ3cml0ZSIsYToicHJvamVjdCJ9LHtkZWZhdWx0OmwoKCk9PltzKEEpLmxlbmd0aD4wPyhyKCksZCgiZGl2IixNZSxbYSh4LHtsYWJlbDoiQWRkIHByb2R1Y3QiLGNsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpsKCgpPT5bYShWLHttb2RlbFZhbHVlOnMoXyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMF18fCh0WzBdPWU9PmsoXyk/Xy52YWx1ZT1lOm51bGwpLGl0ZW1zOnMoQSkubWFwKGU9Pih7bGFiZWw6ZS5uYW1lLHZhbHVlOmUuaWR9KSkscGxhY2Vob2xkZXI6IlNlbGVjdCBhIHByb2R1Y3QiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSxhKHgse2xhYmVsOiJRdHkiLGNsYXNzOiJ3LTIwIn0se2RlZmF1bHQ6bCgoKT0+W2EoSix7bW9kZWxWYWx1ZTpzKHkpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzFdfHwodFsxXT1lPT5rKHkpP3kudmFsdWU9ZTpudWxsKSxtb2RlbE1vZGlmaWVyczp7bnVtYmVyOiEwfSx0eXBlOiJudW1iZXIiLG1pbjoiMSJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhKGkse2xvYWRpbmc6cyhQKSxkaXNhYmxlZDohcyhfKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOlF9LHtkZWZhdWx0OmwoKCk9PlsuLi50WzRdfHwodFs0XT1bTSgiIEFkZCAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSkpOncoIiIsITApXSksXzoxfSldKSxjKCJkaXYiLG51bGwsW2MoImgyIixQZSwiIE1lbWJlcnMgKCIrbShzKG8pLm1lbWJlcnMubGVuZ3RoKSsiKSAiLDEpLHMobykubWVtYmVycy5sZW5ndGg9PT0wPyhyKCksZCgiZGl2IixVZSwiIE5vIG1lbWJlcnMuICIpKToocigpLGQoImRpdiIsVmUsWyhyKCEwKSxkKEksbnVsbCxOKHMobykubWVtYmVycyxlPT4ocigpLGQoImRpdiIse2tleTplLnVzZXJfaWQsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTMgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxbYygiZGl2IixqZSxbYShLLHtzcmM6ZS5hdmF0YXI/P3ZvaWQgMCxhbHQ6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQsc2l6ZToieHMifSxudWxsLDgsWyJzcmMiLCJhbHQiXSksYygic3BhbiIsQ2UsbShlLm5hbWU/P2UudXNlcm5hbWU/P2UudXNlcl9pZCksMSksYShFLHt2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6bCgoKT0+W00obShlLnJvbGUpLDEpXSksXzoyfSwxMDI0KV0pLGEoaSx7aWNvbjoiaS1sdWNpZGUteCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsb25DbGljazpqPT5MKGUudXNlcl9pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSldKSkpLDEyOCkpXSkpLGEoUyx7SToid3JpdGUiLGE6InByb2plY3QifSx7ZGVmYXVsdDpsKCgpPT5bcyhCKS5sZW5ndGg+MD8ocigpLGQoImRpdiIsJGUsW2EoeCx7bGFiZWw6IkFkZCBtZW1iZXIiLGNsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpsKCgpPT5bYShWLHttb2RlbFZhbHVlOnMocCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMl18fCh0WzJdPWU9PmsocCk/cC52YWx1ZT1lOm51bGwpLGl0ZW1zOnMoQikubWFwKGU9Pih7bGFiZWw6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnByaW1hcnlfZW1haWwsdmFsdWU6ZS5pZH0pKSxwbGFjZWhvbGRlcjoiU2VsZWN0IGEgbWVtYmVyIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksYSh4LHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0OmwoKCk9PlthKFYse21vZGVsVmFsdWU6cyhnKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFszXXx8KHRbM109ZT0+ayhnKT9nLnZhbHVlPWU6bnVsbCksaXRlbXM6W3tsYWJlbDoiT3duZXIiLHZhbHVlOiJvd25lciJ9LHtsYWJlbDoiTWVtYmVyIix2YWx1ZToibWVtYmVyIn0se2xhYmVsOiJWaWV3ZXIiLHZhbHVlOiJ2aWV3ZXIifV19LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhKGkse2xvYWRpbmc6cyhVKSxkaXNhYmxlZDohcyhwKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOkd9LHtkZWZhdWx0OmwoKCk9PlsuLi50WzVdfHwodFs1XT1bTSgiIEFkZCAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSkpOncoIiIsITApXSksXzoxfSldKV0pKToocigpLGQoImRpdiIsQWUsW2EoVyx7Y2xhc3M6ImgtNDggdy1mdWxsIG1heC13LTN4bCJ9KV0pKV0pLF86MX0pfX19KTtleHBvcnR7UWUgYXMgZGVmYXVsdH07Cg==", "/_nuxt/d_0NwQLU.js": "aW1wb3J0e2YgYXMgcyxvIGFzIGwsaCBhcyB1LHcgYXMgcCxMIGFzIGQsYWEgYXMgZixpIGFzIHYsUCBhcyBoLGwgYXMgbyxhdiBhcyBtLGF3IGFzIFN9ZnJvbSIuL284dGRfRzBKLmpzIjt2YXIgeT1zKHtfX25hbWU6IkJhc2VTZXBhcmF0b3IiLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGRlY29yYXRpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgZT10LHI9WyJob3Jpem9udGFsIiwidmVydGljYWwiXTtmdW5jdGlvbiBpKGEpe3JldHVybiByLmluY2x1ZGVzKGEpfWNvbnN0IG49bygoKT0+aShlLm9yaWVudGF0aW9uKT9lLm9yaWVudGF0aW9uOiJob3Jpem9udGFsIiksYz1vKCgpPT5uLnZhbHVlPT09InZlcnRpY2FsIj9lLm9yaWVudGF0aW9uOnZvaWQgMCksXz1vKCgpPT5lLmRlY29yYXRpdmU/e3JvbGU6Im5vbmUifTp7ImFyaWEtb3JpZW50YXRpb24iOmMudmFsdWUscm9sZToic2VwYXJhdG9yIn0pO3JldHVybihhLGcpPT4obCgpLHUodihoKSxmKHthczphLmFzLCJhcy1jaGlsZCI6YS5hc0NoaWxkLCJkYXRhLW9yaWVudGF0aW9uIjpuLnZhbHVlfSxfLnZhbHVlKSx7ZGVmYXVsdDpwKCgpPT5bZChhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiLCJkYXRhLW9yaWVudGF0aW9uIl0pKX19KSxCPXkscT1zKHtfX25hbWU6IlNlcGFyYXRvciIscHJvcHM6e29yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJob3Jpem9udGFsIn0sZGVjb3JhdGl2ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBlPXQ7cmV0dXJuKHIsaSk9PihsKCksdShCLG0oUyhlKSkse2RlZmF1bHQ6cCgoKT0+W2Qoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx6PXE7ZXhwb3J0e3ogYXMgU307Cg==", "/_nuxt/entry.zdT31EY5.css": "QGxheWVyIHByb3BlcnRpZXN7QHN1cHBvcnRzICgoLXdlYmtpdC1oeXBoZW5zOm5vbmUpIGFuZCAobm90IChtYXJnaW4tdHJpbTppbmxpbmUpKSkgb3IgKCgtbW96LW9yaWVudDppbmxpbmUpIGFuZCAobm90IChjb2xvcjpyZ2IoZnJvbSByZWQgciBnIGIpKSkpeyosOjpiYWNrZHJvcCw6YWZ0ZXIsOmJlZm9yZXstLXR3LWJvcmRlci1zcGFjaW5nLXg6MDstLXR3LWJvcmRlci1zcGFjaW5nLXk6MDstLXR3LXRyYW5zbGF0ZS14OjA7LS10dy10cmFuc2xhdGUteTowOy0tdHctdHJhbnNsYXRlLXo6MDstLXR3LXNjYWxlLXg6MTstLXR3LXNjYWxlLXk6MTstLXR3LXNjYWxlLXo6MTstLXR3LXJvdGF0ZS14OmluaXRpYWw7LS10dy1yb3RhdGUteTppbml0aWFsOy0tdHctcm90YXRlLXo6aW5pdGlhbDstLXR3LXNrZXcteDppbml0aWFsOy0tdHctc2tldy15OmluaXRpYWw7LS10dy1zcGFjZS15LXJldmVyc2U6MDstLXR3LXNwYWNlLXgtcmV2ZXJzZTowOy0tdHctZGl2aWRlLXktcmV2ZXJzZTowOy0tdHctYm9yZGVyLXN0eWxlOnNvbGlkOy0tdHctZ3JhZGllbnQtcG9zaXRpb246aW5pdGlhbDstLXR3LWdyYWRpZW50LWZyb206IzAwMDA7LS10dy1ncmFkaWVudC12aWE6IzAwMDA7LS10dy1ncmFkaWVudC10bzojMDAwMDstLXR3LWdyYWRpZW50LXN0b3BzOmluaXRpYWw7LS10dy1ncmFkaWVudC12aWEtc3RvcHM6aW5pdGlhbDstLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb246MCU7LS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246NTAlOy0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb246MTAwJTstLXR3LWZvbnQtd2VpZ2h0OmluaXRpYWw7LS10dy10cmFja2luZzppbml0aWFsOy0tdHctb3JkaW5hbDppbml0aWFsOy0tdHctc2xhc2hlZC16ZXJvOmluaXRpYWw7LS10dy1udW1lcmljLWZpZ3VyZTppbml0aWFsOy0tdHctbnVtZXJpYy1zcGFjaW5nOmluaXRpYWw7LS10dy1udW1lcmljLWZyYWN0aW9uOmluaXRpYWw7LS10dy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1zaGFkb3ctYWxwaGE6MTAwJTstLXR3LWluc2V0LXNoYWRvdzowIDAgIzAwMDA7LS10dy1pbnNldC1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LWluc2V0LXNoYWRvdy1hbHBoYToxMDAlOy0tdHctcmluZy1jb2xvcjppbml0aWFsOy0tdHctcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctaW5zZXQtcmluZy1jb2xvcjppbml0aWFsOy0tdHctaW5zZXQtcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctcmluZy1pbnNldDppbml0aWFsOy0tdHctcmluZy1vZmZzZXQtd2lkdGg6MHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6I2ZmZjstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgIzAwMDA7LS10dy1vdXRsaW5lLXN0eWxlOnNvbGlkOy0tdHctYmx1cjppbml0aWFsOy0tdHctYnJpZ2h0bmVzczppbml0aWFsOy0tdHctY29udHJhc3Q6aW5pdGlhbDstLXR3LWdyYXlzY2FsZTppbml0aWFsOy0tdHctaHVlLXJvdGF0ZTppbml0aWFsOy0tdHctaW52ZXJ0OmluaXRpYWw7LS10dy1vcGFjaXR5OmluaXRpYWw7LS10dy1zYXR1cmF0ZTppbml0aWFsOy0tdHctc2VwaWE6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93OmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctZHJvcC1zaGFkb3ctYWxwaGE6MTAwJTstLXR3LWRyb3Atc2hhZG93LXNpemU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWJsdXI6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWJyaWdodG5lc3M6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWNvbnRyYXN0OmluaXRpYWw7LS10dy1iYWNrZHJvcC1ncmF5c2NhbGU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWludmVydDppbml0aWFsOy0tdHctYmFja2Ryb3Atb3BhY2l0eTppbml0aWFsOy0tdHctYmFja2Ryb3Atc2F0dXJhdGU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLXNlcGlhOmluaXRpYWw7LS10dy1kdXJhdGlvbjppbml0aWFsOy0tdHctZWFzZTppbml0aWFsOy0tdHctY29udGVudDoiIjstLXR3LWRpdmlkZS14LXJldmVyc2U6MDstLXR3LWxlYWRpbmc6aW5pdGlhbH19fUBsYXllciB0aGVtZXs6aG9zdCw6cm9vdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7LS1mb250LW1vbm86dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcywiTGliZXJhdGlvbiBNb25vIiwiQ291cmllciBOZXciLG1vbm9zcGFjZTstLWNvbG9yLXdoaXRlOiNmZmY7LS1zcGFjaW5nOi4yNXJlbTstLWNvbnRhaW5lci14czoyMHJlbTstLWNvbnRhaW5lci1zbToyNHJlbTstLWNvbnRhaW5lci1tZDoyOHJlbTstLWNvbnRhaW5lci1sZzozMnJlbTstLWNvbnRhaW5lci0yeGw6NDJyZW07LS1jb250YWluZXItM3hsOjQ4cmVtOy0tY29udGFpbmVyLTR4bDo1NnJlbTstLXRleHQteHM6Ljc1cmVtOy0tdGV4dC14cy0tbGluZS1oZWlnaHQ6MS4zMzMzMzstLXRleHQtc206Ljg3NXJlbTstLXRleHQtc20tLWxpbmUtaGVpZ2h0OjEuNDI4NTc7LS10ZXh0LWJhc2U6MXJlbTstLXRleHQtYmFzZS0tbGluZS1oZWlnaHQ6MS41Oy0tdGV4dC1sZzoxLjEyNXJlbTstLXRleHQtbGctLWxpbmUtaGVpZ2h0OjEuNTU1NTY7LS10ZXh0LXhsOjEuMjVyZW07LS10ZXh0LXhsLS1saW5lLWhlaWdodDoxLjQ7LS10ZXh0LTJ4bDoxLjVyZW07LS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQ6MS4zMzMzMzstLXRleHQtM3hsOjEuODc1cmVtOy0tdGV4dC0zeGwtLWxpbmUtaGVpZ2h0OjEuMjstLXRleHQtNHhsOjIuMjVyZW07LS10ZXh0LTR4bC0tbGluZS1oZWlnaHQ6MS4xMTExMTstLXRleHQtNXhsOjNyZW07LS10ZXh0LTV4bC0tbGluZS1oZWlnaHQ6MTstLXRleHQtN3hsOjQuNXJlbTstLXRleHQtN3hsLS1saW5lLWhlaWdodDoxOy0tZm9udC13ZWlnaHQtbm9ybWFsOjQwMDstLWZvbnQtd2VpZ2h0LW1lZGl1bTo1MDA7LS1mb250LXdlaWdodC1zZW1pYm9sZDo2MDA7LS1mb250LXdlaWdodC1ib2xkOjcwMDstLXRyYWNraW5nLXRpZ2h0Oi0uMDI1ZW07LS10cmFja2luZy13aWRlOi4wMjVlbTstLWVhc2Utb3V0OmN1YmljLWJlemllcigwLDAsLjIsMSk7LS1hbmltYXRlLXNwaW46c3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7LS1hbmltYXRlLXB1bHNlOnB1bHNlIDJzIGN1YmljLWJlemllciguNCwwLC42LDEpIGluZmluaXRlOy0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7LS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpOy0tZGVmYXVsdC1mb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpOy0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyk7LS1jb2xvci1vbGQtbmV1dHJhbC01MDpva2xjaCg5OC41JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtMTAwOm9rbGNoKDk3JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtMjAwOm9rbGNoKDkyLjIlIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC0zMDA6b2tsY2goODclIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC00MDA6b2tsY2goNzAuOCUgMCAwKTstLWNvbG9yLW9sZC1uZXV0cmFsLTUwMDpva2xjaCg1NS42JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtNjAwOm9rbGNoKDQzLjklIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC03MDA6b2tsY2goMzcuMSUgMCAwKTstLWNvbG9yLW9sZC1uZXV0cmFsLTgwMDpva2xjaCgyNi45JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtOTAwOm9rbGNoKDIwLjUlIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC05NTA6b2tsY2goMTQuNSUgMCAwKX06aG9zdCw6cm9vdHstLXVpLWhlYWRlci1oZWlnaHQ6NHJlbTstLXVpLXJhZGl1czouMjVyZW07LS11aS1jb250YWluZXI6ODByZW19LmxpZ2h0LDpob3N0LDpyb290ey0tdWktdGV4dC1kaW1tZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC00MDApOy0tdWktdGV4dC1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTUwMCk7LS11aS10ZXh0LXRvbmVkOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtNjAwKTstLXVpLXRleHQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC03MDApOy0tdWktdGV4dC1oaWdobGlnaHRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS10ZXh0LWludmVydGVkOiNmZmY7LS11aS1iZzojZmZmOy0tdWktYmctbXV0ZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC01MCk7LS11aS1iZy1lbGV2YXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTEwMCk7LS11aS1iZy1hY2NlbnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTIwMCk7LS11aS1iZy1pbnZlcnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS1ib3JkZXI6dmFyKC0tdWktY29sb3ItbmV1dHJhbC0yMDApOy0tdWktYm9yZGVyLW11dGVkOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtMjAwKTstLXVpLWJvcmRlci1hY2NlbnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTMwMCk7LS11aS1ib3JkZXItaW52ZXJ0ZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC05MDApfS5kYXJrey0tdWktdGV4dC1kaW1tZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC01MDApOy0tdWktdGV4dC1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTQwMCk7LS11aS10ZXh0LXRvbmVkOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtMzAwKTstLXVpLXRleHQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC0yMDApOy0tdWktdGV4dC1oaWdobGlnaHRlZDojZmZmOy0tdWktdGV4dC1pbnZlcnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS1iZzp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS1iZy1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTgwMCk7LS11aS1iZy1lbGV2YXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTgwMCk7LS11aS1iZy1hY2NlbnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTcwMCk7LS11aS1iZy1pbnZlcnRlZDojZmZmOy0tdWktYm9yZGVyOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtODAwKTstLXVpLWJvcmRlci1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTcwMCk7LS11aS1ib3JkZXItYWNjZW50ZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC03MDApOy0tdWktYm9yZGVyLWludmVydGVkOiNmZmZ9fUBsYXllciBiYXNleyosOjpiYWNrZHJvcCw6YWZ0ZXIsOmJlZm9yZXtib3JkZXI6MCBzb2xpZDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Ym9yZGVyOjAgc29saWQ7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH06aG9zdCxodG1sey13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtZm9udC1mYW1pbHksdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1mb250LWZlYXR1cmUtc2V0dGluZ3Msbm9ybWFsKTtmb250LXZhcmlhdGlvbi1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCk7bGluZS1oZWlnaHQ6MS41Oy1tb3otdGFiLXNpemU6NDstby10YWItc2l6ZTo0O3RhYi1zaXplOjQ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWhye2JvcmRlci10b3Atd2lkdGg6MXB4O2NvbG9yOmluaGVyaXQ7aGVpZ2h0OjB9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseSx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLCJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW07Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCl9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItY29sb3I6aW5oZXJpdDt0ZXh0LWluZGVudDowfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1tZW51LG9sLHVse2xpc3Qtc3R5bGU6bm9uZX1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3toZWlnaHQ6YXV0bzttYXgtd2lkdGg6MTAwJX1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2JhY2tncm91bmQtY29sb3I6IzAwMDA7Ym9yZGVyLXJhZGl1czowO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtvcGFjaXR5OjF9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7b3BhY2l0eToxfTp3aGVyZShzZWxlY3Q6aXMoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cHtmb250LXdlaWdodDpib2xkZXJ9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3VwIG9wdGlvbntwYWRkaW5nLWlubGluZS1zdGFydDoyMHB4fTo6ZmlsZS1zZWxlY3Rvci1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6NHB4fTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjF9OjpwbGFjZWhvbGRlcntvcGFjaXR5OjF9QHN1cHBvcnRzIChub3QgKC13ZWJraXQtYXBwZWFyYW5jZTotYXBwbGUtcGF5LWJ1dHRvbikpIG9yIChjb250YWluLWludHJpbnNpYy1zaXplOjFweCl7OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn06OnBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpezo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsY3VycmVudGNvbG9yIDUwJSx0cmFuc3BhcmVudCl9OjpwbGFjZWhvbGRlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsY3VycmVudGNvbG9yIDUwJSx0cmFuc3BhcmVudCl9fX10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVle21pbi1oZWlnaHQ6MWxoO3RleHQtYWxpZ246aW5oZXJpdH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdHtkaXNwbGF5OmlubGluZS1mbGV4fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVye3BhZGRpbmc6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWludXRlLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcntsaW5lLWhlaWdodDoxfTotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfWJ1dHRvbixpbnB1dDp3aGVyZShbdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uOy1tb3otYXBwZWFyYW5jZTpidXR0b247YXBwZWFyYW5jZTpidXR0b259OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uOy1tb3otYXBwZWFyYW5jZTpidXR0b247YXBwZWFyYW5jZTpidXR0b259Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49dW50aWwtZm91bmRdKSl7ZGlzcGxheTpub25lIWltcG9ydGFudH1ib2R5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpO2NvbG9yOnZhcigtLXVpLXRleHQpOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlO2NvbG9yLXNjaGVtZTpsaWdodH1ib2R5OndoZXJlKC5kYXJrLC5kYXJrICope2NvbG9yLXNjaGVtZTpkYXJrfX1AbGF5ZXIgY29tcG9uZW50cztAbGF5ZXIgdXRpbGl0aWVzey5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0uY29sbGFwc2V7dmlzaWJpbGl0eTpjb2xsYXBzZX0udmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9LnNyLW9ubHl7Ym9yZGVyLXdpZHRoOjA7Y2xpcC1wYXRoOmluc2V0KDUwJSk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxcHh9LmFic29sdXRlLC5zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LnN0aWNreXtwb3NpdGlvbjpzdGlja3l9Lmluc2V0LTB7aW5zZXQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uaW5zZXQteC0we2luc2V0LWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5pbnNldC14LTF7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMSl9Lmluc2V0LXgtNHtpbnNldC1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uaW5zZXQteS0we2luc2V0LWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMCl9Lmluc2V0LXktMXtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5pbnNldC15LTFcLjV7aW5zZXQtYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5pbnNldC15LTJ7aW5zZXQtYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0uaW5zZXQteS0ze2luc2V0LWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMyl9Lmluc2V0LXktNHtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS4tc3RhcnQtcHh7aW5zZXQtaW5saW5lLXN0YXJ0Oi0xcHh9LnN0YXJ0e2luc2V0LWlubGluZS1zdGFydDp2YXIoLS1zcGFjaW5nKX0uc3RhcnQtMHtpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uc3RhcnQtNHtpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uc3RhcnQtMzJ7aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMzIpfS5zdGFydC1cW2NhbGNcKC0tc3BhY2luZ1woNFwpLTFweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCAtIDFweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMTZweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMTZweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMjBweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMjBweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMjhweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMjhweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMzJweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMzJweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMzZweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMzZweCl9LnN0YXJ0LVxbY2FsY1woNTBcJS0xcHhcKVxde2luc2V0LWlubGluZS1zdGFydDpjYWxjKDUwJSAtIDFweCl9Li1lbmQtMVwuNXtpbnNldC1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmVuZHtpbnNldC1pbmxpbmUtZW5kOnZhcigtLXNwYWNpbmcpfS5lbmQtMHtpbnNldC1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmVuZC00e2luc2V0LWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uZW5kLVxbY2FsY1woLTUwXCVcKzE2cHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygxNnB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzIwcHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygyMHB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzI4cHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygyOHB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzMycHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygzMnB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzM2cHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygzNnB4IC0gNTAlKX0uLXRvcC0xXC41e3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpKi0xLjUpfS4tdG9wLTh7dG9wOmNhbGModmFyKC0tc3BhY2luZykqLTgpfS50b3AtMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTR7dG9wOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnRvcC1cWzMwcHhcXXt0b3A6MzBweH0udG9wLVxbMzhweFxde3RvcDozOHB4fS50b3AtXFs0NnB4XF17dG9wOjQ2cHh9LnRvcC1cWzUwXCVcXXt0b3A6NTAlfS50b3AtXFs1NHB4XF17dG9wOjU0cHh9LnRvcC1cWzYycHhcXXt0b3A6NjJweH0udG9wLVxbODZcJVxde3RvcDo4NiV9LnRvcC1cW2NhbGNcKDUwXCUtMnB4XClcXXt0b3A6Y2FsYyg1MCUgLSAycHgpfS50b3AtZnVsbHt0b3A6MTAwJX0ucmlnaHQtMHtyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5yaWdodC0xXC8ye3JpZ2h0OjUwJX0ucmlnaHQtNHtyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS4tYm90dG9tLTd7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLTcpfS4tYm90dG9tLVxbMTBweFxde2JvdHRvbTotMTBweH0uLWJvdHRvbS1weHtib3R0b206LTFweH0uYm90dG9tLTB7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmJvdHRvbS00e2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5sZWZ0LVwoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0XCl7bGVmdDp2YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0KX0ubGVmdC0we2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGVmdC0xXC8ye2xlZnQ6NTAlfS5sZWZ0LTR7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5sZWZ0LTZcLjV7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjYuNSl9LmxlZnQtMTF7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0uaXNvbGF0ZXtpc29sYXRpb246aXNvbGF0ZX0uei1cKC0taW5kZXhcKXt6LWluZGV4OnZhcigtLWluZGV4KX0uei0xe3otaW5kZXg6MX0uei0ye3otaW5kZXg6Mn0uei0xMHt6LWluZGV4OjEwfS56LTIwe3otaW5kZXg6MjB9LnotNTB7ei1pbmRleDo1MH0uei1cWzFcXXt6LWluZGV4OjF9LnotXFsxMDBcXXt6LWluZGV4OjEwMH0ub3JkZXItZmlyc3R7b3JkZXI6LTk5OTl9Lm9yZGVyLWxhc3R7b3JkZXI6OTk5OX0uY29sLXN0YXJ0LTF7Z3JpZC1jb2x1bW4tc3RhcnQ6MX0ucm93LXN0YXJ0LTF7Z3JpZC1yb3ctc3RhcnQ6MX0uY29udGFpbmVye3dpZHRoOjEwMCV9QG1lZGlhKG1pbi13aWR0aDo0MHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NDByZW19fUBtZWRpYShtaW4td2lkdGg6NDhyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjQ4cmVtfX1AbWVkaWEobWluLXdpZHRoOjY0cmVtKXsuY29udGFpbmVye21heC13aWR0aDo2NHJlbX19QG1lZGlhKG1pbi13aWR0aDo4MHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6ODByZW19fUBtZWRpYShtaW4td2lkdGg6OTZyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjk2cmVtfX0ubS0wXC41e21hcmdpbjpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uLW14LTF7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi0xKX0uLW14LTJ7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi0yKX0uLW14LTR7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi00KX0ubXgtM3ttYXJnaW4taW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMyl9Lm14LWF1dG97bWFyZ2luLWlubGluZTphdXRvfS5teS0xe21hcmdpbi1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5teS0ye21hcmdpbi1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS4tbXMtMVwuNXttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9Li1tcy00e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNCl9Li1tcy1cWzhcLjVweFxde21hcmdpbi1pbmxpbmUtc3RhcnQ6LTguNXB4fS4tbXMtcHh7bWFyZ2luLWlubGluZS1zdGFydDotMXB4fS5tcy0xe21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ubXMtMnttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMil9Lm1zLTR7bWFyZ2luLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5tcy00XC41e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpfS5tcy01e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0ubXMtNVwuNXttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNS41KX0ubXMtNnttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNil9Lm1zLWF1dG97bWFyZ2luLWlubGluZS1zdGFydDphdXRvfS4tbWUtMFwuNXttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKi0uNSl9Li1tZS0xe21hcmdpbi1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLTEpfS4tbWUtMVwuNXttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKi0xLjUpfS4tbWUtMnttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKi0yKX0ubWUtMVwuNXttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9Lm1lLTJ7bWFyZ2luLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0uLW10LTBcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKi0uNSl9Li1tdC00e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNCl9Li1tdC04e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSotOCl9Lm10LTBcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ubXQtMXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqMSl9Lm10LTFcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9Lm10LTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5tdC0yXC41e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5tdC0ze21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ubXQtM1wuNXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqMy41KX0ubXQtNHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqNCl9Lm10LTV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpfS5tdC02e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubXQtOHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqOCl9Lm10LTEwe21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9Lm10LTE2e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxNil9Lm10LTI0e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyNCl9Lm10LWF1dG97bWFyZ2luLXRvcDphdXRvfS5cIW1yLTR7bWFyZ2luLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCkhaW1wb3J0YW50fS4tbWItcHh7bWFyZ2luLWJvdHRvbTotMXB4fS5tYi0xe21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ubWItMVwuNXttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ubWItMnttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMil9Lm1iLTJcLjV7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9Lm1iLTN7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5tYi00e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ubWItNnttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNil9Lm1iLTEwe21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9Lm1iLTI0e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoyNCl9Lm1iLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvfS5cIW1sLTR7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KSFpbXBvcnRhbnR9Lm1sLTF7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uYmxvY2t7ZGlzcGxheTpibG9ja30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0udGFibGV7ZGlzcGxheTp0YWJsZX0uYXNwZWN0LVxbMTZcLzlcXXthc3BlY3QtcmF0aW86MTYvOX0uYXNwZWN0LXNxdWFyZXthc3BlY3QtcmF0aW86MX0uc2l6ZS0ye2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMil9LnNpemUtMlwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0uc2l6ZS0ze2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMyl9LnNpemUtM1wuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMy41KX0uc2l6ZS00e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnNpemUtNFwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNC41KX0uc2l6ZS01e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnNpemUtNntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5zaXplLTd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNyk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo3KX0uc2l6ZS04e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnNpemUtOXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjkpfS5zaXplLTEwe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKX0uc2l6ZS0xMFwvMTJ7aGVpZ2h0OjgzLjMzMzMlO3dpZHRoOjgzLjMzMzMlfS5zaXplLTExe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0uc2l6ZS0xMntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMik7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LnNpemUtMTR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTQpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTQpfS5zaXplLWZ1bGx7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uXCFoLTFcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMS41KSFpbXBvcnRhbnR9LlwhaC0xMntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMikhaW1wb3J0YW50fS5oLVwoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1oZWlnaHRcKXtoZWlnaHQ6dmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtaGVpZ2h0KX0uaC1cKC0tcmVrYS10YWJzLWluZGljYXRvci1zaXplXCl7aGVpZ2h0OnZhcigtLXJla2EtdGFicy1pbmRpY2F0b3Itc2l6ZSl9LmgtXCgtLXVpLWhlYWRlci1oZWlnaHRcKXtoZWlnaHQ6dmFyKC0tdWktaGVhZGVyLWhlaWdodCl9LmgtMFwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LmgtMXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uaC0ye2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5oLTJcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMi41KX0uaC0ze2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5oLTR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LmgtNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0uaC02e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5oLTh7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqOCl9LmgtMTJ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTIpfS5oLTE2e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjE2KX0uaC0yMHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyMCl9LmgtMzh7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMzgpfS5oLTQwe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQwKX0uaC00MntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0Mil9LmgtNDR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNDQpfS5oLTQ2e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQ2KX0uaC00OHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0OCl9LmgtXFs0cHhcXXtoZWlnaHQ6NHB4fS5oLVxbNXB4XF17aGVpZ2h0OjVweH0uaC1cWzZweFxde2hlaWdodDo2cHh9LmgtXFs3cHhcXXtoZWlnaHQ6N3B4fS5oLVxbOHB4XF17aGVpZ2h0OjhweH0uaC1cWzlweFxde2hlaWdodDo5cHh9LmgtXFsxMHB4XF17aGVpZ2h0OjEwcHh9LmgtXFsxMXB4XF17aGVpZ2h0OjExcHh9LmgtXFsxMnB4XF17aGVpZ2h0OjEycHh9LmgtXFtjYWxjXCgxMDB2aC04cmVtXClcXXtoZWlnaHQ6Y2FsYygxMDB2aCAtIDhyZW0pfS5oLVxbY2FsY1woMTAwdmgtMTRyZW1cKVxde2hlaWdodDpjYWxjKDEwMHZoIC0gMTRyZW0pfS5oLVxbZml0LWNvbnRlbnRcXXtoZWlnaHQ6LW1vei1maXQtY29udGVudDtoZWlnaHQ6Zml0LWNvbnRlbnR9LmgtYXV0b3toZWlnaHQ6YXV0b30uaC1maXR7aGVpZ2h0Oi1tb3otZml0LWNvbnRlbnQ7aGVpZ2h0OmZpdC1jb250ZW50fS5oLWZ1bGx7aGVpZ2h0OjEwMCV9LmgtcHh7aGVpZ2h0OjFweH0uaC1zdmh7aGVpZ2h0OjEwMHN2aH0ubWF4LWgtNjB7bWF4LWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjYwKX0ubWF4LWgtOTZ7bWF4LWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjk2KX0ubWF4LWgtXFs3MHZoXF17bWF4LWhlaWdodDo3MHZofS5tYXgtaC1cWzgwdmhcXXttYXgtaGVpZ2h0Ojgwdmh9Lm1heC1oLVxbOTZcJVxde21heC1oZWlnaHQ6OTYlfS5tYXgtaC1cWzIwMHB4XF17bWF4LWhlaWdodDoyMDBweH0ubWF4LWgtXFtjYWxjXCgxMDBcJS0ycmVtXClcXXttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDJyZW0pfS5tYXgtaC1cW2NhbGNcKDEwMGR2aC0ycmVtXClcXXttYXgtaGVpZ2h0OmNhbGMoMTAwZHZoIC0gMnJlbSl9Lm1heC1oLWZ1bGx7bWF4LWhlaWdodDoxMDAlfS5taW4taC1cKC0tdWktaGVhZGVyLWhlaWdodFwpe21pbi1oZWlnaHQ6dmFyKC0tdWktaGVhZGVyLWhlaWdodCl9Lm1pbi1oLTB7bWluLWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5taW4taC02e21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubWluLWgtOHttaW4taGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqOCl9Lm1pbi1oLTEye21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9Lm1pbi1oLTQ4e21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0OCl9Lm1pbi1oLVxbNDlweFxde21pbi1oZWlnaHQ6NDlweH0ubWluLWgtXFtjYWxjXCgxMDB2aC12YXJcKC0tdWktaGVhZGVyLWhlaWdodFwpXClcXXttaW4taGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS11aS1oZWFkZXItaGVpZ2h0KSl9Lm1pbi1oLWZpdHttaW4taGVpZ2h0Oi1tb3otZml0LWNvbnRlbnQ7bWluLWhlaWdodDpmaXQtY29udGVudH0ubWluLWgtc2NyZWVue21pbi1oZWlnaHQ6MTAwdmh9Lm1pbi1oLXN2aHttaW4taGVpZ2h0OjEwMHN2aH0uXCF3LTFcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpIWltcG9ydGFudH0uXCF3LTEye3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTIpIWltcG9ydGFudH0udy1cKC0tcmVrYS1jb21ib2JveC10cmlnZ2VyLXdpZHRoXCl7d2lkdGg6dmFyKC0tcmVrYS1jb21ib2JveC10cmlnZ2VyLXdpZHRoKX0udy1cKC0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGhcKXt3aWR0aDp2YXIoLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci13aWR0aCl9LnctXCgtLXJla2EtbmF2aWdhdGlvbi1tZW51LWluZGljYXRvci1zaXplXCl7d2lkdGg6dmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUpfS53LVwoLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoXCl7d2lkdGg6dmFyKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aCl9LnctXCgtLXJla2EtdGFicy1pbmRpY2F0b3Itc2l6ZVwpe3dpZHRoOnZhcigtLXJla2EtdGFicy1pbmRpY2F0b3Itc2l6ZSl9LnctXCgtLXNpZGViYXItd2lkdGhcKXt3aWR0aDp2YXIoLS1zaWRlYmFyLXdpZHRoKX0udy1cKC0td2lkdGhcKXt3aWR0aDp2YXIoLS13aWR0aCl9LnctMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS53LTBcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LnctMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS53LTJ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0udy0ze3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMyl9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS53LTV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0udy03e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNyl9LnctOHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS53LTl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KX0udy0xMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKX0udy0xMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0udy0yMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjIwKX0udy0zMnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjMyKX0udy0zOHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjM4KX0udy00MHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQwKX0udy00Mnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQyKX0udy00NHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQ0KX0udy00Nnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQ2KX0udy01Nnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjU2KX0udy02MHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjYwKX0udy1cWzZweFxde3dpZHRoOjZweH0udy1cWzdweFxde3dpZHRoOjdweH0udy1cWzhweFxde3dpZHRoOjhweH0udy1cWzlweFxde3dpZHRoOjlweH0udy1cWzEwcHhcXXt3aWR0aDoxMHB4fS53LVxbY2FsY1woMTAwXCUtMnJlbVwpXF17d2lkdGg6Y2FsYygxMDAlIC0gMnJlbSl9LnctXFtjYWxjXCgxMDB2dy0ycmVtXClcXXt3aWR0aDpjYWxjKDEwMHZ3IC0gMnJlbSl9LnctYXV0b3t3aWR0aDphdXRvfS53LWZpdHt3aWR0aDotbW96LWZpdC1jb250ZW50O3dpZHRoOmZpdC1jb250ZW50fS53LWZ1bGx7d2lkdGg6MTAwJX0udy1weHt3aWR0aDoxcHh9Lm1heC13LVwoLS11aS1jb250YWluZXJcKXttYXgtd2lkdGg6dmFyKC0tdWktY29udGFpbmVyKX0ubWF4LXctMnhse21heC13aWR0aDp2YXIoLS1jb250YWluZXItMnhsKX0ubWF4LXctM3hse21heC13aWR0aDp2YXIoLS1jb250YWluZXItM3hsKX0ubWF4LXctNjB7bWF4LXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNjApfS5tYXgtdy1cWzc1XCVcXXttYXgtd2lkdGg6NzUlfS5tYXgtdy1cWzgwXCVcXXttYXgtd2lkdGg6ODAlfS5tYXgtdy1cWzIwMHB4XF17bWF4LXdpZHRoOjIwMHB4fS5tYXgtdy1cW2NhbGNcKDEwMFwlLTJyZW1cKVxde21heC13aWR0aDpjYWxjKDEwMCUgLSAycmVtKX0ubWF4LXctbGd7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci1sZyl9Lm1heC13LW1ke21heC13aWR0aDp2YXIoLS1jb250YWluZXItbWQpfS5tYXgtdy1zbXttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLXNtKX0ubWluLXctMHttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubWluLXctNXttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0ubWluLXctMTZ7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTYpfS5taW4tdy0zMnttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSozMil9Lm1pbi13LTQwe21pbi13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQwKX0ubWluLXctNDh7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNDgpfS5taW4tdy1cWzRweFxde21pbi13aWR0aDo0cHh9Lm1pbi13LVxbNXB4XF17bWluLXdpZHRoOjVweH0ubWluLXctXFs2cHhcXXttaW4td2lkdGg6NnB4fS5taW4tdy1cWzdweFxde21pbi13aWR0aDo3cHh9Lm1pbi13LVxbOHB4XF17bWluLXdpZHRoOjhweH0ubWluLXctXFs5cHhcXXttaW4td2lkdGg6OXB4fS5taW4tdy1cWzEwcHhcXXttaW4td2lkdGg6MTBweH0ubWluLXctXFsxMXB4XF17bWluLXdpZHRoOjExcHh9Lm1pbi13LVxbMTJweFxde21pbi13aWR0aDoxMnB4fS5taW4tdy1cWzE2cHhcXXttaW4td2lkdGg6MTZweH0ubWluLXctXFsyMHB4XF17bWluLXdpZHRoOjIwcHh9Lm1pbi13LVxbMjRweFxde21pbi13aWR0aDoyNHB4fS5taW4tdy1maXR7bWluLXdpZHRoOi1tb3otZml0LWNvbnRlbnQ7bWluLXdpZHRoOmZpdC1jb250ZW50fS5taW4tdy1mdWxse21pbi13aWR0aDoxMDAlfS5taW4tdy1tYXh7bWluLXdpZHRoOi1tb3otbWF4LWNvbnRlbnQ7bWluLXdpZHRoOm1heC1jb250ZW50fS5mbGV4LTF7ZmxleDoxfS5zaHJpbmstMHtmbGV4LXNocmluazowfS5ncm93e2ZsZXgtZ3JvdzoxfS5ncm93LTB7ZmxleC1ncm93OjB9LmJhc2lzLWZ1bGx7ZmxleC1iYXNpczoxMDAlfS50YWJsZS1maXhlZHt0YWJsZS1sYXlvdXQ6Zml4ZWR9LmJvcmRlci1jb2xsYXBzZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LmJvcmRlci1zZXBhcmF0ZXtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmJvcmRlci1zcGFjaW5nLXgtMHstLXR3LWJvcmRlci1zcGFjaW5nLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKTtib3JkZXItc3BhY2luZzp2YXIoLS10dy1ib3JkZXItc3BhY2luZy14KSB2YXIoLS10dy1ib3JkZXItc3BhY2luZy15KX0ub3JpZ2luLVwoLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwpe3RyYW5zZm9ybS1vcmlnaW46dmFyKC0tcmVrYS1jb21ib2JveC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pfS5vcmlnaW4tXCgtLXJla2EtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwpe3RyYW5zZm9ybS1vcmlnaW46dmFyKC0tcmVrYS1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKX0ub3JpZ2luLVwoLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCl7dHJhbnNmb3JtLW9yaWdpbjp2YXIoLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKX0ub3JpZ2luLVwoLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCl7dHJhbnNmb3JtLW9yaWdpbjp2YXIoLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKX0ub3JpZ2luLVwoLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5cKXt0cmFuc2Zvcm0tb3JpZ2luOnZhcigtLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbil9Lm9yaWdpbi1cKC0tcmVrYS10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwpe3RyYW5zZm9ybS1vcmlnaW46dmFyKC0tcmVrYS10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbil9Lm9yaWdpbi1cW3RvcF9jZW50ZXJcXXt0cmFuc2Zvcm0tb3JpZ2luOnRvcH0uLXRyYW5zbGF0ZS14LTFcLzJ7LS10dy10cmFuc2xhdGUteDotNTAlfS4tdHJhbnNsYXRlLXgtMVwvMiwuLXRyYW5zbGF0ZS14LVxbNHB4XF17dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9Li10cmFuc2xhdGUteC1cWzRweFxdey0tdHctdHJhbnNsYXRlLXg6LTRweH0udHJhbnNsYXRlLXgtXCgtLXJla2EtbmF2aWdhdGlvbi1tZW51LWluZGljYXRvci1wb3NpdGlvblwpey0tdHctdHJhbnNsYXRlLXg6dmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0udHJhbnNsYXRlLXgtXCgtLXJla2EtdGFicy1pbmRpY2F0b3ItcG9zaXRpb25cKXstLXR3LXRyYW5zbGF0ZS14OnZhcigtLXJla2EtdGFicy1pbmRpY2F0b3ItcG9zaXRpb24pO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS50cmFuc2xhdGUteC0xXC8yey0tdHctdHJhbnNsYXRlLXg6NTAlfS4tdHJhbnNsYXRlLXktMVwvMiwudHJhbnNsYXRlLXgtMVwvMnt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uLXRyYW5zbGF0ZS15LTFcLzJ7LS10dy10cmFuc2xhdGUteTotNTAlfS50cmFuc2xhdGUteS1cKC0tcmVrYS10YWJzLWluZGljYXRvci1wb3NpdGlvblwpey0tdHctdHJhbnNsYXRlLXk6dmFyKC0tcmVrYS10YWJzLWluZGljYXRvci1wb3NpdGlvbik7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LnRyYW5zbGF0ZS15LTFcLzJ7LS10dy10cmFuc2xhdGUteTo1MCU7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LnNjYWxlLTgwey0tdHctc2NhbGUteDo4MCU7LS10dy1zY2FsZS15OjgwJTstLXR3LXNjYWxlLXo6ODAlO3NjYWxlOnZhcigtLXR3LXNjYWxlLXgpIHZhcigtLXR3LXNjYWxlLXkpfS5yb3RhdGUtNDV7cm90YXRlOjQ1ZGVnfS5yb3RhdGUtOTB7cm90YXRlOjkwZGVnfS50cmFuc2Zvcm17dHJhbnNmb3JtOnZhcigtLXR3LXJvdGF0ZS14LCkgdmFyKC0tdHctcm90YXRlLXksKSB2YXIoLS10dy1yb3RhdGUteiwpIHZhcigtLXR3LXNrZXcteCwpIHZhcigtLXR3LXNrZXcteSwpfS50cmFuc2Zvcm0tXCgtLXRyYW5zZm9ybVwpe3RyYW5zZm9ybTp2YXIoLS10cmFuc2Zvcm0pfS5hbmltYXRlLVxbbWFycXVlZS12ZXJ0aWNhbF92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246bWFycXVlZS12ZXJ0aWNhbCB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5hbmltYXRlLVxbbWFycXVlZV92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246bWFycXVlZSB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5hbmltYXRlLVxbc2hpbW1lcl92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246c2hpbW1lciB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5hbmltYXRlLXB1bHNle2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXB1bHNlKX0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNwaW4pfS5jdXJzb3ItZS1yZXNpemV7Y3Vyc29yOmUtcmVzaXplfS5jdXJzb3ItZXctcmVzaXple2N1cnNvcjpldy1yZXNpemV9LmN1cnNvci1ncmFie2N1cnNvcjpncmFifS5jdXJzb3Itbm90LWFsbG93ZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uY3Vyc29yLXctcmVzaXple2N1cnNvcjp3LXJlc2l6ZX0udG91Y2gtbm9uZXt0b3VjaC1hY3Rpb246bm9uZX0ucmVzaXple3Jlc2l6ZTpib3RofS5yZXNpemUtbm9uZXtyZXNpemU6bm9uZX0uc2Nyb2xsLW10LTN7c2Nyb2xsLW1hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uc2Nyb2xsLW10LTR7c2Nyb2xsLW1hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uc2Nyb2xsLXB5LTF7c2Nyb2xsLXBhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ubGlzdC1kZWNpbWFse2xpc3Qtc3R5bGUtdHlwZTpkZWNpbWFsfS5hcHBlYXJhbmNlLW5vbmV7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfS5hdXRvLWNvbHMtZnJ7Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0uZ3JpZC1mbG93LWNvbHtncmlkLWF1dG8tZmxvdzpjb2x1bW59LmdyaWQtY29scy0xe2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMSxtaW5tYXgoMCwxZnIpKX0uZ3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5ncmlkLWNvbHMtN3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDcsbWlubWF4KDAsMWZyKSl9LmdyaWQtY29scy04e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoOCxtaW5tYXgoMCwxZnIpKX0uZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5mbGV4LWNvbC1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmZsZXgtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LmZsZXgtd3JhcHtmbGV4LXdyYXA6d3JhcH0ucGxhY2UtaXRlbXMtYmFzZWxpbmV7cGxhY2UtaXRlbXM6YmFzZWxpbmV9LnBsYWNlLWl0ZW1zLWNlbnRlcntwbGFjZS1pdGVtczpjZW50ZXJ9LmNvbnRlbnQtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaH0uanVzdGlmeS1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uanVzdGlmeS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmdhcC1cKC0tZ2FwXCl7Z2FwOnZhcigtLWdhcCl9LmdhcC0we2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5nYXAtMFwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LmdhcC0wXC4yNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSouMjUpfS5nYXAtMFwuNzV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqLjc1KX0uZ2FwLTF7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMSl9LmdhcC0xXC41e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LmdhcC0ye2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5nYXAtMlwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5nYXAtM3tnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uZ2FwLTNcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMy41KX0uZ2FwLTR7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqNCl9LmdhcC02e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5nYXAtOHtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uZ2FwLTE2e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjE2KX06d2hlcmUoLi1zcGFjZS15LXB4Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1lbmQ6Y2FsYygtMXB4KigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKC0xcHgqdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9OndoZXJlKC5zcGFjZS15LTE+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEqKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMSp2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXktMj46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tYmxvY2stZW5kOmNhbGModmFyKC0tc3BhY2luZykqMiooMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYmxvY2stc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfTp3aGVyZSguc3BhY2UteS0zPjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjMqdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9OndoZXJlKC5zcGFjZS15LTQ+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjQqKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCp2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXktNT46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tYmxvY2stZW5kOmNhbGModmFyKC0tc3BhY2luZykqNSooMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYmxvY2stc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfTp3aGVyZSguc3BhY2UteS02Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjYqdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9OndoZXJlKC5zcGFjZS15LTg+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjgqKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqOCp2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXktMTI+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfS5nYXAteC0xXC41ey1tb3otY29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSk7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LmdhcC14LTJ7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMik7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5nYXAteC0zey1tb3otY29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpO2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uZ2FwLXgtNHstbW96LWNvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KTtjb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqNCl9LmdhcC14LTZ7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqNik7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5nYXAteC04ey1tb3otY29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpO2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX06d2hlcmUoLi1zcGFjZS14LXB4Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTowO21hcmdpbi1pbmxpbmUtZW5kOmNhbGMoLTFweCooMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGMoLTFweCp2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXgtMT46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS14LXJldmVyc2U6MDttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEqKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7bWFyZ2luLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjEqdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSl9LmdhcC15LTBcLjV7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uZ2FwLXktMXtyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMSl9LmdhcC15LTFcLjV7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LmdhcC15LTN7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5nYXAteS00e3Jvdy1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uZ2FwLXktNntyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqNil9LmdhcC15LTh7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfTp3aGVyZSguZGl2aWRlLXk+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctZGl2aWRlLXktcmV2ZXJzZTowO2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOmNhbGMoMXB4KigxIC0gdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpKTtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDpjYWxjKDFweCp2YXIoLS10dy1kaXZpZGUteS1yZXZlcnNlKSl9OndoZXJlKC5kaXZpZGUtYWNjZW50ZWQ+Om5vdCg6bGFzdC1jaGlsZCkpe2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfTp3aGVyZSguZGl2aWRlLWRlZmF1bHQ+Om5vdCg6bGFzdC1jaGlsZCkpe2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXIpfTp3aGVyZSguZGl2aWRlLXRyYW5zcGFyZW50Pjpub3QoOmxhc3QtY2hpbGQpKXtib3JkZXItY29sb3I6IzAwMDB9LnNlbGYtY2VudGVye2FsaWduLXNlbGY6Y2VudGVyfS5zZWxmLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kfS5zZWxmLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNofS50cnVuY2F0ZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctY2xpcHtvdmVyZmxvdzpjbGlwfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy14LWF1dG97b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ub3ZlcmZsb3cteS1oaWRkZW57b3ZlcmZsb3cteTpoaWRkZW59LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtXFtpbmhlcml0XF17Ym9yZGVyLXJhZGl1czppbmhlcml0fS5yb3VuZGVkLWZ1bGx7Ym9yZGVyLXJhZGl1czozLjQwMjgyZSszOHB4fS5yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjEuNSl9LnJvdW5kZWQtc217Ym9yZGVyLXJhZGl1czp2YXIoLS11aS1yYWRpdXMpfS5yb3VuZGVkLXhse2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjMpfS5yb3VuZGVkLXhze2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKi41KX0ucm91bmRlZC10LWxne2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ucm91bmRlZC10LW5vbmV7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LnJvdW5kZWQtbC1sZ3tib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ucm91bmRlZC1yLWxne2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ucm91bmRlZC1iLWxnLC5yb3VuZGVkLXItbGd7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfS5yb3VuZGVkLWItbGd7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMil9LmJvcmRlcntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uYm9yZGVyLTJ7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjJweH0uYm9yZGVyLXh7Ym9yZGVyLWlubGluZS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtd2lkdGg6MXB4fS5ib3JkZXItc3tib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHh9LmJvcmRlci1zLVxbMnB4XF17Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6MnB4fS5ib3JkZXItcy1cWzNweFxde2JvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOjNweH0uYm9yZGVyLXMtXFs0cHhcXXtib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDo0cHh9LmJvcmRlci1zLVxbNXB4XF17Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6NXB4fS5ib3JkZXItZXtib3JkZXItaW5saW5lLWVuZC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtZW5kLXdpZHRoOjFweH0uYm9yZGVyLXR7Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6MXB4fS5ib3JkZXItdC1cWzJweFxde2JvcmRlci10b3Atc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItdG9wLXdpZHRoOjJweH0uYm9yZGVyLXQtXFszcHhcXXtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDozcHh9LmJvcmRlci10LVxbNHB4XF17Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6NHB4fS5ib3JkZXItdC1cWzVweFxde2JvcmRlci10b3Atc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItdG9wLXdpZHRoOjVweH0uYm9yZGVyLWJ7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ib3JkZXItZGFzaGVkey0tdHctYm9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItc3R5bGU6ZGFzaGVkfS5ib3JkZXItZG90dGVkey0tdHctYm9yZGVyLXN0eWxlOmRvdHRlZDtib3JkZXItc3R5bGU6ZG90dGVkfS5ib3JkZXItc29saWR7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS5ib3JkZXItYmd7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJnKX0uYm9yZGVyLWRlZmF1bHR7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9LmJvcmRlci1lcnJvcntib3JkZXItY29sb3I6dmFyKC0tdWktZXJyb3IpfS5ib3JkZXItaW5mb3tib3JkZXItY29sb3I6dmFyKC0tdWktaW5mbyl9LmJvcmRlci1pbnZlcnRlZHtib3JkZXItY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0uYm9yZGVyLW11dGVke2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItbXV0ZWQpfS5ib3JkZXItcHJpbWFyeXtib3JkZXItY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmJvcmRlci1zZWNvbmRhcnl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmJvcmRlci1zdWNjZXNze2JvcmRlci1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uYm9yZGVyLXRyYW5zcGFyZW50e2JvcmRlci1jb2xvcjojMDAwMH0uYm9yZGVyLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5cIWJnLWFjY2VudGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpIWltcG9ydGFudH0uYmctXCgtLXVpLWJvcmRlci1hY2NlbnRlZFwpe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uYmctYWNjZW50ZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1hY2NlbnRlZCl9LmJnLWJvcmRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9LmJnLWRlZmF1bHQsLmJnLWRlZmF1bHRcLzc1e2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWRlZmF1bHRcLzc1e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnKSA3NSUsdHJhbnNwYXJlbnQpfX0uYmctZGVmYXVsdFwvOTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctZGVmYXVsdFwvOTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmcpIDkwJSx0cmFuc3BhcmVudCl9fS5iZy1lbGV2YXRlZCwuYmctZWxldmF0ZWRcLzI1e2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWVsZXZhdGVkXC8yNXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgMjUlLHRyYW5zcGFyZW50KX19LmJnLWVsZXZhdGVkXC81MHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1lbGV2YXRlZFwvNTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5iZy1lbGV2YXRlZFwvNzV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctZWxldmF0ZWRcLzc1e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA3NSUsdHJhbnNwYXJlbnQpfX0uYmctZXJyb3IsLmJnLWVycm9yXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1lcnJvclwvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5iZy1pbmZvLC5iZy1pbmZvXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWluZm9cLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5iZy1pbnZlcnRlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX0uYmctcHJpbWFyeSwuYmctcHJpbWFyeVwvMTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1wcmltYXJ5XC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uYmctc2Vjb25kYXJ5LC5iZy1zZWNvbmRhcnlcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1zZWNvbmRhcnlcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmJnLXN1Y2Nlc3MsLmJnLXN1Y2Nlc3NcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctc3VjY2Vzc1wvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmJnLXdhcm5pbmcsLmJnLXdhcm5pbmdcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctd2FybmluZ1wvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmJnLWdyYWRpZW50LXRvLWJ7LS10dy1ncmFkaWVudC1wb3NpdGlvbjp0byBib3R0b20gaW4gb2tsYWI7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodmFyKC0tdHctZ3JhZGllbnQtc3RvcHMpKX0uYmctXFtpbWFnZVw6bGluZWFyLWdyYWRpZW50XCg5MGRlZ1wsXCMwMDAwX2NhbGNcKDUwXCUtdmFyXCgtLXNwcmVhZFwpXClcLHZhclwoLS11aS10ZXh0LWhpZ2hsaWdodGVkXClcLFwjMDAwMF9jYWxjXCg1MFwlXCt2YXJcKC0tc3ByZWFkXClcKVwpXCxsaW5lYXItZ3JhZGllbnRcKHZhclwoLS11aS10ZXh0LW11dGVkXClcLHZhclwoLS11aS10ZXh0LW11dGVkXClcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAwIGNhbGMoNTAlIC0gdmFyKC0tc3ByZWFkKSksdmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCksIzAwMDAgY2FsYyg1MCUgKyB2YXIoLS1zcHJlYWQpKSksbGluZWFyLWdyYWRpZW50KHZhcigtLXVpLXRleHQtbXV0ZWQpLHZhcigtLXVpLXRleHQtbXV0ZWQpKX0uZnJvbS1kZWZhdWx0ey0tdHctZ3JhZGllbnQtZnJvbTp2YXIoLS11aS1iZyk7LS10dy1ncmFkaWVudC1zdG9wczp2YXIoLS10dy1ncmFkaWVudC12aWEtc3RvcHMsdmFyKC0tdHctZ3JhZGllbnQtcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LXRvKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikpfS5iZy1zaXplLVxbY2FsY1woMjAwXCVcK3ZhclwoLS1zcHJlYWRcKVwqMlwrMnB4XClfMTAwXCVcLGF1dG9cXXtiYWNrZ3JvdW5kLXNpemU6Y2FsYygyMDAlICsgdmFyKC0tc3ByZWFkKSoyICsgMnB4KSAxMDAlLGF1dG99LmJnLWNsaXAtdGV4dHstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0O2JhY2tncm91bmQtY2xpcDp0ZXh0fS5iZy1uby1yZXBlYXR7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5maWxsLWJne2ZpbGw6dmFyKC0tdWktYmcpfS5zdHJva2UtZGVmYXVsdHtzdHJva2U6dmFyKC0tdWktYm9yZGVyKX0ub2JqZWN0LWNvdmVyey1vLW9iamVjdC1maXQ6Y292ZXI7b2JqZWN0LWZpdDpjb3Zlcn0ub2JqZWN0LXRvcHstby1vYmplY3QtcG9zaXRpb246dG9wO29iamVjdC1wb3NpdGlvbjp0b3B9LnAtMHtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMCl9LnAtMFwuNXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5wLTF7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5wLTFcLjV7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LnAtMntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMil9LnAtMlwuNXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucC0ze3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ucC0zXC41e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5wLTR7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5wLTRcLjV7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjQuNSl9LnAtNntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqNil9LnB4LTB7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ucHgtMXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5weC0xXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ucHgtMntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5weC0yXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucHgtM3twYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5weC00e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnB4LTZ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ucHktMFwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5weS0xe3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ucHktMVwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ucHktMntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMil9LnB5LTJcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnB5LTN7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5weS0zXC41e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5weS00e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ucHktNntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqNil9LnB5LTd7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5weS04e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0ucHktMTJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0ucHktMTZ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjE2KX0ucHktMjR7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjI0KX0ucHMtMXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5wcy0xXC41e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ucHMtMntwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5wcy0yXC41e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucHMtM3twYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5wcy00e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LnBzLTd7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo3KX0ucHMtOHtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5wcy05e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqOSl9LnBzLTEwe3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMTApfS5wcy0xMXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0ucGUtMXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ucGUtMntwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ucGUtMlwuNXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5wZS0ze3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5wZS00XC41e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjQuNSl9LnBlLTV7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnBlLTVcLjV7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqNS41KX0ucGUtNntwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ucGUtNlwuNXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2LjUpfS5wZS03e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5wZS03XC41e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjcuNSl9LnBlLTh7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnBlLThcLjV7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqOC41KX0ucGUtOXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KX0ucGUtMTB7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqMTApfS5wZS0xMXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMSl9LnB0LTJ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ucHQtNHtwYWRkaW5nLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5wdC01e3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnBiLTN7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ucGItM1wuNXtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSl9LnBiLTRcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpfS5wYi01e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnBiLTVcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo1LjUpfS5wYi02e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNil9LnBiLTZcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo2LjUpfS5wYi03e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNyl9LnBiLTdcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo3LjUpfS5wYi04e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnBiLThcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo4LjUpfS5wYi0yNHtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjI0KX0ucGwtNntwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtZW5ke3RleHQtYWxpZ246ZW5kfS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnRleHQtc3RhcnR7dGV4dC1hbGlnbjpzdGFydH0uYWxpZ24tbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uYWxpZ24tdG9we3ZlcnRpY2FsLWFsaWduOnRvcH0uZm9udC1tb25ve2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyl9LmZvbnQtc2Fuc3tmb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpfS50ZXh0LTJ4bHtmb250LXNpemU6dmFyKC0tdGV4dC0yeGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC0yeGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQtM3hse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTN4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTN4bC0tbGluZS1oZWlnaHQpKX0udGV4dC00eGx7Zm9udC1zaXplOnZhcigtLXRleHQtNHhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtNHhsLS1saW5lLWhlaWdodCkpfS50ZXh0LTV4bHtmb250LXNpemU6dmFyKC0tdGV4dC01eGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC01eGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQtXFs4cHhcXVwvM3tmb250LXNpemU6OHB4O2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnRleHQtXFsxMHB4XF1cLzN7Zm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0udGV4dC1iYXNle2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1iYXNlLS1saW5lLWhlaWdodCkpfS50ZXh0LWJhc2UsLnRleHQtYmFzZVwvNXtmb250LXNpemU6dmFyKC0tdGV4dC1iYXNlKX0udGV4dC1iYXNlXC81e2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNSl9LnRleHQtbGd7Zm9udC1zaXplOnZhcigtLXRleHQtbGcpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1sZy0tbGluZS1oZWlnaHQpKX0udGV4dC1zbXtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9LnRleHQtc20sLnRleHQtc21cLzR7Zm9udC1zaXplOnZhcigtLXRleHQtc20pfS50ZXh0LXNtXC80e2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LnRleHQtc21cLzZ7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNil9LnRleHQteGx7Zm9udC1zaXplOnZhcigtLXRleHQteGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14bC0tbGluZS1oZWlnaHQpKX0udGV4dC14c3tsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQteHMtLWxpbmUtaGVpZ2h0KSl9LnRleHQteHMsLnRleHQteHNcLzV7Zm9udC1zaXplOnZhcigtLXRleHQteHMpfS50ZXh0LXhzXC81e2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNSl9LnRleHQtXFs0cHhcXXtmb250LXNpemU6NHB4fS50ZXh0LVxbNXB4XF17Zm9udC1zaXplOjVweH0udGV4dC1cWzZweFxde2ZvbnQtc2l6ZTo2cHh9LnRleHQtXFs3cHhcXXtmb250LXNpemU6N3B4fS50ZXh0LVxbOHB4XF17Zm9udC1zaXplOjhweH0udGV4dC1cWzlweFxde2ZvbnQtc2l6ZTo5cHh9LnRleHQtXFsxMHB4XF17Zm9udC1zaXplOjEwcHh9LnRleHQtXFsxMXB4XF17Zm9udC1zaXplOjExcHh9LnRleHQtXFsxMnB4XF17Zm9udC1zaXplOjEycHh9LnRleHQtXFsxNXB4XF17Zm9udC1zaXplOjE1cHh9LnRleHQtXFsyMnB4XF17Zm9udC1zaXplOjIycHh9LmZvbnQtYm9sZHstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpfS5mb250LW1lZGl1bXstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKX0uZm9udC1ub3JtYWx7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCl9LmZvbnQtc2VtaWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpfS50cmFja2luZy10aWdodHstLXR3LXRyYWNraW5nOnZhcigtLXRyYWNraW5nLXRpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS10cmFja2luZy10aWdodCl9LnRyYWNraW5nLXdpZGV7LS10dy10cmFja2luZzp2YXIoLS10cmFja2luZy13aWRlKTtsZXR0ZXItc3BhY2luZzp2YXIoLS10cmFja2luZy13aWRlKX0udGV4dC1iYWxhbmNle3RleHQtd3JhcDpiYWxhbmNlfS50ZXh0LXByZXR0eXt0ZXh0LXdyYXA6cHJldHR5fS50ZXh0LXdyYXB7dGV4dC13cmFwOndyYXB9LmJyZWFrLXdvcmRze292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0ud3JhcC1hbnl3aGVyZXtvdmVyZmxvdy13cmFwOmFueXdoZXJlfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2UtcHJlLXdyYXB7d2hpdGUtc3BhY2U6cHJlLXdyYXB9LnRleHQtZGVmYXVsdHtjb2xvcjp2YXIoLS11aS10ZXh0KX0udGV4dC1kaW1tZWR7Y29sb3I6dmFyKC0tdWktdGV4dC1kaW1tZWQpfS50ZXh0LWVycm9yLC50ZXh0LWVycm9yXC83NXtjb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsudGV4dC1lcnJvclwvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA3NSUsdHJhbnNwYXJlbnQpfX0udGV4dC1oaWdobGlnaHRlZHtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0udGV4dC1pbmZvLC50ZXh0LWluZm9cLzc1e2NvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnRleHQtaW5mb1wvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LWluaGVyaXR7Y29sb3I6aW5oZXJpdH0udGV4dC1pbnZlcnRlZHtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0udGV4dC1tdXRlZHtjb2xvcjp2YXIoLS11aS10ZXh0LW11dGVkKX0udGV4dC1wcmltYXJ5LC50ZXh0LXByaW1hcnlcLzc1e2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnRleHQtcHJpbWFyeVwvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXNlY29uZGFyeSwudGV4dC1zZWNvbmRhcnlcLzc1e2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsudGV4dC1zZWNvbmRhcnlcLzc1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXN1Y2Nlc3MsLnRleHQtc3VjY2Vzc1wvNzV7Y29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsudGV4dC1zdWNjZXNzXC83NXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNzUlLHRyYW5zcGFyZW50KX19LnRleHQtdG9uZWR7Y29sb3I6dmFyKC0tdWktdGV4dC10b25lZCl9LnRleHQtdHJhbnNwYXJlbnR7Y29sb3I6IzAwMDB9LnRleHQtd2FybmluZywudGV4dC13YXJuaW5nXC83NXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey50ZXh0LXdhcm5pbmdcLzc1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA3NSUsdHJhbnNwYXJlbnQpfX0udXBwZXJjYXNle3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uaXRhbGlje2ZvbnQtc3R5bGU6aXRhbGljfS50YWJ1bGFyLW51bXN7LS10dy1udW1lcmljLXNwYWNpbmc6dGFidWxhci1udW1zO2ZvbnQtdmFyaWFudC1udW1lcmljOnZhcigtLXR3LW9yZGluYWwsKSB2YXIoLS10dy1zbGFzaGVkLXplcm8sKSB2YXIoLS10dy1udW1lcmljLWZpZ3VyZSwpIHZhcigtLXR3LW51bWVyaWMtc3BhY2luZywpIHZhcigtLXR3LW51bWVyaWMtZnJhY3Rpb24sKX0ubGluZS10aHJvdWdoe3RleHQtZGVjb3JhdGlvbi1saW5lOmxpbmUtdGhyb3VnaH0ub3BhY2l0eS0we29wYWNpdHk6MH0ub3BhY2l0eS00MHtvcGFjaXR5Oi40fS5vcGFjaXR5LTcwe29wYWNpdHk6Ljd9Lm9wYWNpdHktNzV7b3BhY2l0eTouNzV9Lm9wYWNpdHktOTB7b3BhY2l0eTouOX0ub3BhY2l0eS0xMDB7b3BhY2l0eToxfS5zaGFkb3ctbGd7LS10dy1zaGFkb3c6MCAxMHB4IDE1cHggLTNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwwIDRweCA2cHggLTRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKX0uc2hhZG93LWxnLC5zaGFkb3ctc217Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctc217LS10dy1zaGFkb3c6MCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSl9LnNoYWRvdy14c3stLXR3LXNoYWRvdzowIDFweCAycHggMCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDBkKX0ucmluZywuc2hhZG93LXhze2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0ucmluZ3stLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDFweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpfS5yaW5nLTB7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYyh2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKX0ucmluZy0wLC5yaW5nLTJ7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5yaW5nLTJ7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKX0ucmluZy0zey0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoM3B4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5yaW5nLWFjY2VudGVkey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfS5yaW5nLWJney0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1iZyl9LnJpbmctZGVmYXVsdHstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyKX0ucmluZy1lcnJvciwucmluZy1lcnJvclwvMjV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLWVycm9yXC8yNXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAyNSUsdHJhbnNwYXJlbnQpfX0ucmluZy1lcnJvclwvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLWVycm9yXC81MHstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1pbmZvLC5yaW5nLWluZm9cLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLWluZm9cLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctaW5mb1wvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctaW5mb1wvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1pbnZlcnRlZHstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0ucmluZy1wcmltYXJ5LC5yaW5nLXByaW1hcnlcLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXByaW1hcnlcLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctcHJpbWFyeVwvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctcHJpbWFyeVwvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1zZWNvbmRhcnksLnJpbmctc2Vjb25kYXJ5XC8yNXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXNlY29uZGFyeVwvMjV7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDI1JSx0cmFuc3BhcmVudCl9fS5yaW5nLXNlY29uZGFyeVwvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsucmluZy1zZWNvbmRhcnlcLzUwey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1zdWNjZXNzLC5yaW5nLXN1Y2Nlc3NcLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXN1Y2Nlc3NcLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctc3VjY2Vzc1wvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctc3VjY2Vzc1wvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy13YXJuaW5nLC5yaW5nLXdhcm5pbmdcLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXdhcm5pbmdcLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctd2FybmluZ1wvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctd2FybmluZ1wvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy13aGl0ZXstLXR3LXJpbmctY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5vdXRsaW5lLWhpZGRlbnstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9QG1lZGlhKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsub3V0bGluZS1oaWRkZW57b3V0bGluZToycHggc29saWQgIzAwMDA7b3V0bGluZS1vZmZzZXQ6MnB4fX0ub3V0bGluZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MXB4fS5ibHVyey0tdHctYmx1cjpibHVyKDhweCl9LmJsdXIsLmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1ciwpIHZhcigtLXR3LWJyaWdodG5lc3MsKSB2YXIoLS10dy1jb250cmFzdCwpIHZhcigtLXR3LWdyYXlzY2FsZSwpIHZhcigtLXR3LWh1ZS1yb3RhdGUsKSB2YXIoLS10dy1pbnZlcnQsKSB2YXIoLS10dy1zYXR1cmF0ZSwpIHZhcigtLXR3LXNlcGlhLCkgdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uYmFja2Ryb3AtYmx1cnstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cig4cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKSB2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCkgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKSB2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpIHZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKSB2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10byxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLHRyYW5zbGF0ZSxzY2FsZSxyb3RhdGUsZmlsdGVyLGJhY2tkcm9wLWZpbHRlcixkaXNwbGF5LGNvbnRlbnQtdmlzaWJpbGl0eSxvdmVybGF5LHBvaW50ZXItZXZlbnRzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbYmFja2dyb3VuZFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpiYWNrZ3JvdW5kO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbY29sb3JcLG9wYWNpdHlcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3Isb3BhY2l0eTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1cW2xlZnRcLHJpZ2h0XCx3aWR0aFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0LHJpZ2h0LHdpZHRoO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbcm90YXRlXCxvcGFjaXR5XF17dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OnJvdGF0ZSxvcGFjaXR5O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbdHJhbnNmb3JtXCx0cmFuc2xhdGVcLGhlaWdodFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sdHJhbnNsYXRlLGhlaWdodDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1cW3RyYW5zbGF0ZVwsd2lkdGhcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNsYXRlLHdpZHRoO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbd2lkdGhcLGhlaWdodFwsbGVmdFwscmlnaHRcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6d2lkdGgsaGVpZ2h0LGxlZnQscmlnaHQ7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSl9LnRyYW5zaXRpb24tXFt3aWR0aFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTp3aWR0aDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1hbGx7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1jb2xvcnN7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLW9wYWNpdHl7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSl9LnRyYW5zaXRpb24tdHJhbnNmb3Jte3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sdHJhbnNsYXRlLHNjYWxlLHJvdGF0ZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0uZHVyYXRpb24tMjAwey0tdHctZHVyYXRpb246LjJzO3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5lYXNlLWxpbmVhcnstLXR3LWVhc2U6bGluZWFyO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn0uZWFzZS1vdXR7LS10dy1lYXNlOnZhcigtLWVhc2Utb3V0KTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1lYXNlLW91dCl9LndpbGwtY2hhbmdlLVxbYmFja2dyb3VuZC1wb3NpdGlvblxde3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259LndpbGwtY2hhbmdlLVxbaGVpZ2h0XF17d2lsbC1jaGFuZ2U6aGVpZ2h0fS5vdXRsaW5lLW5vbmV7LS10dy1vdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1zdHlsZTpub25lfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LlwhXFthbmltYXRpb24tZGlyZWN0aW9uXDpyZXZlcnNlXF17YW5pbWF0aW9uLWRpcmVjdGlvbjpyZXZlcnNlIWltcG9ydGFudH0uXFstLWR1cmF0aW9uXDoyMHNcXXstLWR1cmF0aW9uOjIwc30uXFstLWdhcFw6LS1zcGFjaW5nXCgxNlwpXF17LS1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxNil9LlxbLS1pbml0aWFsLXRyYW5zZm9ybVw6Y2FsY1woMTAwXCVcKzFcLjVyZW1cKVxdey0taW5pdGlhbC10cmFuc2Zvcm06IGNhbGMoMTAwJSArIDEuNXJlbSkgfS5cWy0tc2lkZWJhci13aWR0aC1pY29uXDo0cmVtXF17LS1zaWRlYmFyLXdpZHRoLWljb246NHJlbX0uXFstLXNpZGViYXItd2lkdGhcOjE2cmVtXF17LS1zaWRlYmFyLXdpZHRoOjE2cmVtfS5cWy0tc3BvdGxpZ2h0LWNvbG9yXDp2YXJcKC0tdWktYmctaW52ZXJ0ZWRcKVxdey0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX0uXFstLXNwb3RsaWdodC1jb2xvclw6dmFyXCgtLXVpLWVycm9yXClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1lcnJvcil9LlxbLS1zcG90bGlnaHQtY29sb3JcOnZhclwoLS11aS1pbmZvXClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1pbmZvKX0uXFstLXNwb3RsaWdodC1jb2xvclw6dmFyXCgtLXVpLXByaW1hcnlcKVxdey0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5cWy0tc3BvdGxpZ2h0LWNvbG9yXDp2YXJcKC0tdWktc2Vjb25kYXJ5XClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfS5cWy0tc3BvdGxpZ2h0LWNvbG9yXDp2YXJcKC0tdWktc3VjY2Vzc1wpXF17LS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LlxbLS1zcG90bGlnaHQtY29sb3JcOnZhclwoLS11aS13YXJuaW5nXClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uXFstLXNwb3RsaWdodC1zaXplXDo0MDBweFxdey0tc3BvdGxpZ2h0LXNpemU6NDAwcHh9LmJhY2tmYWNlLWhpZGRlbntiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn0ucmluZy1pbnNldHstLXR3LXJpbmctaW5zZXQ6aW5zZXR9OmlzKC5cKlw6bXktNT4qKXttYXJnaW4tYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX06aXMoLlwqXDpzaXplLTI+Kil7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMik7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX06aXMoLlwqXDpicmVhay1pbnNpZGUtYXZvaWQtY29sdW1uPiopey1tb3otY29sdW1uLWJyZWFrLWluc2lkZTphdm9pZDticmVhay1pbnNpZGU6YXZvaWQtY29sdW1ufTppcyguXCpcOnJvdW5kZWQtZnVsbD4qKXtib3JkZXItcmFkaXVzOjMuNDAyODJlKzM4cHh9OmlzKC5cKlw6YmctZWxldmF0ZWQ+Kil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9OmlzKC5cKlw6cHQtOD4qKXtwYWRkaW5nLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfTppcyguXCpcOndpbGwtY2hhbmdlLXRyYW5zZm9ybT4qKXt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19Lm5vdC1sYXN0XDpwYi00Om5vdCg6bGFzdC1jaGlsZCl7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ubm90LWxhc3RcOm5vdC1maXJzdFw6cm91bmRlZC1ub25lOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czowfS5ub3QtZGF0YS1cW3NlZ21lbnRcPWxpdGVyYWxcXVw6dy04Om5vdChbZGF0YS1zZWdtZW50PWxpdGVyYWxdKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5ub3QtZGF0YS1cW3NlZ21lbnRcPWxpdGVyYWxcXVw6dy05Om5vdChbZGF0YS1zZWdtZW50PWxpdGVyYWxdKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjkpfS5ub3QtZGF0YS1cW3NlZ21lbnRcPWxpdGVyYWxcXVw6dy0xMDpub3QoW2RhdGEtc2VnbWVudD1saXRlcmFsXSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9Lmdyb3VwLW5vdC1sYXN0XDpncm91cC1ub3QtZmlyc3RcOnJvdW5kZWQtbm9uZTppcyg6d2hlcmUoLmdyb3VwKTpub3QoOmxhc3QtY2hpbGQpICopOmlzKDp3aGVyZSguZ3JvdXApOm5vdCg6Zmlyc3QtY2hpbGQpICope2JvcmRlci1yYWRpdXM6MH0uZ3JvdXAtbm90LW9ubHlcOmdyb3VwLWZpcnN0XDpyb3VuZGVkLWUtbm9uZTppcyg6d2hlcmUoLmdyb3VwKTpub3QoOm9ubHktY2hpbGQpICopOmlzKDp3aGVyZSguZ3JvdXApOmZpcnN0LWNoaWxkICope2JvcmRlci1lbmQtZW5kLXJhZGl1czowO2JvcmRlci1zdGFydC1lbmQtcmFkaXVzOjB9Lmdyb3VwLW5vdC1vbmx5XDpncm91cC1maXJzdFw6cm91bmRlZC1iLW5vbmU6aXMoOndoZXJlKC5ncm91cCk6bm90KDpvbmx5LWNoaWxkKSAqKTppcyg6d2hlcmUoLmdyb3VwKTpmaXJzdC1jaGlsZCAqKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZ3JvdXAtbm90LW9ubHlcOmdyb3VwLWxhc3RcOnJvdW5kZWQtcy1ub25lOmlzKDp3aGVyZSguZ3JvdXApOm5vdCg6b25seS1jaGlsZCkgKik6aXMoOndoZXJlKC5ncm91cCk6bGFzdC1jaGlsZCAqKXtib3JkZXItZW5kLXN0YXJ0LXJhZGl1czowO2JvcmRlci1zdGFydC1zdGFydC1yYWRpdXM6MH0uZ3JvdXAtbm90LW9ubHlcOmdyb3VwLWxhc3RcOnJvdW5kZWQtdC1ub25lOmlzKDp3aGVyZSguZ3JvdXApOm5vdCg6b25seS1jaGlsZCkgKik6aXMoOndoZXJlKC5ncm91cCk6bGFzdC1jaGlsZCAqKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH1AbWVkaWEoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6YmctcHJpbWFyeTppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5ncm91cC1ob3Zlclw6dGV4dC1kZWZhdWx0OmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICope2NvbG9yOnZhcigtLXVpLXRleHQpfS5ncm91cC1ob3Zlclw6dGV4dC1pbnZlcnRlZDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0uZ3JvdXAtaG92ZXJcOm9wYWNpdHktMDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtvcGFjaXR5OjB9Lmdyb3VwLWhvdmVyXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtvcGFjaXR5OjF9Lmdyb3VwLWhvdmVyXDpyaW5nLXByaW1hcnk6aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKil7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5ncm91cC1ob3Zlclw6XFthbmltYXRpb24tcGxheS1zdGF0ZVw6cGF1c2VkXF06aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKil7YW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkfS5ncm91cC1ob3ZlclwvYmxvZy1wb3N0XDpzY2FsZS0xMTA6aXMoOndoZXJlKC5ncm91cFwvYmxvZy1wb3N0KTpob3ZlciAqKXstLXR3LXNjYWxlLXg6MTEwJTstLXR3LXNjYWxlLXk6MTEwJTstLXR3LXNjYWxlLXo6MTEwJTtzY2FsZTp2YXIoLS10dy1zY2FsZS14KSB2YXIoLS10dy1zY2FsZS15KX0uZ3JvdXAtaG92ZXJcL2Jsb2ctcG9zdFw6cm91bmRlZC1yLW5vbmU6aXMoOndoZXJlKC5ncm91cFwvYmxvZy1wb3N0KTpob3ZlciAqKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmdyb3VwLWhvdmVyXC9ibG9nLXBvc3RcOnJvdW5kZWQtYi1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL2Jsb2ctcG9zdCk6aG92ZXIgKil7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9Lmdyb3VwLWhvdmVyXC9ibG9nLXBvc3RcOnNoYWRvdy1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL2Jsb2ctcG9zdCk6aG92ZXIgKil7LS10dy1zaGFkb3c6MCAwICMwMDAwO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uZ3JvdXAtaG92ZXJcL2NoYW5nZWxvZy12ZXJzaW9uLWltYWdlXDpzY2FsZS0xMDU6aXMoOndoZXJlKC5ncm91cFwvY2hhbmdlbG9nLXZlcnNpb24taW1hZ2UpOmhvdmVyICopey0tdHctc2NhbGUteDoxMDUlOy0tdHctc2NhbGUteToxMDUlOy0tdHctc2NhbGUtejoxMDUlO3NjYWxlOnZhcigtLXR3LXNjYWxlLXgpIHZhcigtLXR3LXNjYWxlLXkpfS5ncm91cC1ob3ZlclwvbWVzc2FnZVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cFwvbWVzc2FnZSk6aG92ZXIgKil7b3BhY2l0eToxfS5ncm91cC1ob3ZlclwvdXNlclw6c2NhbGUtMTE1OmlzKDp3aGVyZSguZ3JvdXBcL3VzZXIpOmhvdmVyICopey0tdHctc2NhbGUteDoxMTUlOy0tdHctc2NhbGUteToxMTUlOy0tdHctc2NhbGUtejoxMTUlO3NjYWxlOnZhcigtLXR3LXNjYWxlLXgpIHZhcigtLXR3LXNjYWxlLXkpfX0uZ3JvdXAtaGFzLWZvY3VzLXZpc2libGVcL2NoYW5nZWxvZy12ZXJzaW9uLWltYWdlXDpzY2FsZS0xMDU6aXMoOndoZXJlKC5ncm91cFwvY2hhbmdlbG9nLXZlcnNpb24taW1hZ2UpOmhhcyg6Zm9jdXMtdmlzaWJsZSkgKil7LS10dy1zY2FsZS14OjEwNSU7LS10dy1zY2FsZS15OjEwNSU7LS10dy1zY2FsZS16OjEwNSU7c2NhbGU6dmFyKC0tdHctc2NhbGUteCkgdmFyKC0tdHctc2NhbGUteSl9Lmdyb3VwLWhhcy1mb2N1cy12aXNpYmxlXC91c2VyXDpzY2FsZS0xMTU6aXMoOndoZXJlKC5ncm91cFwvdXNlcik6aGFzKDpmb2N1cy12aXNpYmxlKSAqKXstLXR3LXNjYWxlLXg6MTE1JTstLXR3LXNjYWxlLXk6MTE1JTstLXR3LXNjYWxlLXo6MTE1JTtzY2FsZTp2YXIoLS10dy1zY2FsZS14KSB2YXIoLS10dy1zY2FsZS15KX0uZ3JvdXAtZGF0YS1leHBhbmRlZFw6cm90YXRlLTE4MDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWV4cGFuZGVkXSAqKXtyb3RhdGU6MTgwZGVnfS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDppbmxpbmUtZmxleDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWhpZ2hsaWdodGVkXSAqKXtkaXNwbGF5OmlubGluZS1mbGV4fS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LWRlZmF1bHQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktdGV4dCl9Lmdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtZXJyb3I6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LWluZm86aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktaW5mbyl9Lmdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtcHJpbWFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWhpZ2hsaWdodGVkXSAqKXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZ3JvdXAtZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1zZWNvbmRhcnk6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZ3JvdXAtZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1zdWNjZXNzOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtaGlnaGxpZ2h0ZWRdICope2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LXdhcm5pbmc6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9Lmdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWRcOm5vdC1ncm91cC1kYXRhLWRpc2FibGVkXDp0ZXh0LWRlZmF1bHQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKik6bm90KDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWRpc2FibGVkXSAqKSl7Y29sb3I6dmFyKC0tdWktdGV4dCl9Lmdyb3VwLWRhdGEtXFtkaXNhYmxlZFxdXDpvcGFjaXR5LTc1OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtZGlzYWJsZWRdICope29wYWNpdHk6Ljc1fS5ncm91cC1kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDpiZy1lcnJvcjppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWFjdGl2ZV0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLWluZm86aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLWludmVydGVkOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9YWN0aXZlXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6YmctcHJpbWFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWFjdGl2ZV0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6Ymctc2Vjb25kYXJ5OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9YWN0aXZlXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLXN1Y2Nlc3M6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLXdhcm5pbmc6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtaW52ZXJ0ZWQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2NvbG9yOnZhcigtLXVpLXRleHQtaW52ZXJ0ZWQpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dGV4dC1lcnJvcjppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLWVycm9yKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRleHQtaGlnaGxpZ2h0ZWQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jaGVja2VkXSAqKXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRleHQtaW5mbzppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLWluZm8pfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dGV4dC1wcmltYXJ5OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y2hlY2tlZF0gKil7Y29sb3I6dmFyKC0tdWktcHJpbWFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0ZXh0LXNlY29uZGFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0ZXh0LXN1Y2Nlc3M6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jaGVja2VkXSAqKXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRleHQtd2FybmluZzppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jaGVja2VkXSAqKXtvcGFjaXR5OjF9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cL3NpZGViYXJcOmhpZGRlbjppcyg6d2hlcmUoLmdyb3VwXC9zaWRlYmFyKVtkYXRhLXN0YXRlPWNvbGxhcHNlZF0gKil7ZGlzcGxheTpub25lfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbGxhcHNlZFxdXC9zaWRlYmFyXDpvdmVyZmxvdy1oaWRkZW46aXMoOndoZXJlKC5ncm91cFwvc2lkZWJhcilbZGF0YS1zdGF0ZT1jb2xsYXBzZWRdICope292ZXJmbG93OmhpZGRlbn0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jb21wbGV0ZWRcXVw6YmctZXJyb3I6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jb21wbGV0ZWRdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy1pbmZvOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy1pbnZlcnRlZDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNvbXBsZXRlZF0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y29tcGxldGVkXF1cOmJnLXByaW1hcnk6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jb21wbGV0ZWRdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y29tcGxldGVkXF1cOmJnLXNlY29uZGFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNvbXBsZXRlZF0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy1zdWNjZXNzOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy13YXJuaW5nOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDp0ZXh0LWludmVydGVkOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnJvdGF0ZS0xODA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1vcGVuXSAqKXtyb3RhdGU6MTgwZGVnfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1kZWZhdWx0OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktdGV4dCl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDp0ZXh0LWVycm9yOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1oaWdobGlnaHRlZDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPW9wZW5dICope2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1pbmZvOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktaW5mbyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDp0ZXh0LXByaW1hcnk6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1vcGVuXSAqKXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnRleHQtc2Vjb25kYXJ5OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnRleHQtc3VjY2Vzczppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPW9wZW5dICope2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC13YXJuaW5nOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDpvcGFjaXR5LTA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1vcGVuXSAqKXtvcGFjaXR5OjB9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPW9wZW5dICope29wYWNpdHk6MX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6dGV4dC1kaW1tZWQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT11bmNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT11bmNoZWNrZWRdICope29wYWNpdHk6MX1AbWVkaWEoaG92ZXI6aG92ZXIpey5wZWVyLWhvdmVyXDp0ZXh0LWhpZ2hsaWdodGVkOmlzKDp3aGVyZSgucGVlcik6aG92ZXJ+Kil7Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LnBlZXItaG92ZXJcOnRleHQtdG9uZWQ6aXMoOndoZXJlKC5wZWVyKTpob3Zlcn4qKXtjb2xvcjp2YXIoLS11aS10ZXh0LXRvbmVkKX19LnBlZXItZm9jdXMtdmlzaWJsZVw6dGV4dC1oaWdobGlnaHRlZDppcyg6d2hlcmUoLnBlZXIpOmZvY3VzLXZpc2libGV+Kil7Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LnBlZXItZm9jdXMtdmlzaWJsZVw6dGV4dC10b25lZDppcyg6d2hlcmUoLnBlZXIpOmZvY3VzLXZpc2libGV+Kil7Y29sb3I6dmFyKC0tdWktdGV4dC10b25lZCl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjAgOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5zZWxlY3Rpb25cOmJnLXByaW1hcnlcLzIwIDo6c2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuc2VsZWN0aW9uXDpiZy1wcmltYXJ5XC8yMCA6Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDIwJSx0cmFuc3BhcmVudCl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjAgOjpzZWxlY3Rpb257YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjAlLHRyYW5zcGFyZW50KX19LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6OnNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDIwJSx0cmFuc3BhcmVudCl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6OnNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAyMCUsdHJhbnNwYXJlbnQpfX0uZmlsZVw6bWUtMVwuNTo6ZmlsZS1zZWxlY3Rvci1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5maWxlXDpmb250LW1lZGl1bTo6ZmlsZS1zZWxlY3Rvci1idXR0b257LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmZpbGVcOnRleHQtbXV0ZWQ6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5maWxlXDpvdXRsaW5lLW5vbmU6OmZpbGUtc2VsZWN0b3ItYnV0dG9uey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0ucGxhY2Vob2xkZXJcOnRleHQtZGltbWVkOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKX0ucGxhY2Vob2xkZXJcOnRleHQtZGltbWVkOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS11aS10ZXh0LWRpbW1lZCl9LmJlZm9yZVw6cG9pbnRlci1ldmVudHMtbm9uZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5iZWZvcmVcOmFic29sdXRlOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3Bvc2l0aW9uOmFic29sdXRlfS5iZWZvcmVcOi1pbnNldC1weDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldDotMXB4fS5iZWZvcmVcOmluc2V0LXB4OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0OjFweH0uYmVmb3JlXDppbnNldC14LTA6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmJlZm9yZVw6aW5zZXQteC1weDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmU6MXB4fS5iZWZvcmVcOmluc2V0LXktMDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5iZWZvcmVcOmluc2V0LXktcHg6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtYmxvY2s6MXB4fS5iZWZvcmVcOnRvcC0wOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5iZWZvcmVcOi1yaWdodC0xXC41OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmJlZm9yZVw6LWxlZnQtMVwuNTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtsZWZ0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmJlZm9yZVw6bGVmdC0wOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uYmVmb3JlXDp6LTE6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ei1pbmRleDoxfS5iZWZvcmVcOnotMjpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt6LWluZGV4OjJ9LmJlZm9yZVw6ei1cWy0xXF06YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ei1pbmRleDotMX0uYmVmb3JlXDpoLTFcLzM6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OjMzLjMzMzMlfS5iZWZvcmVcOmgtZnVsbDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtoZWlnaHQ6MTAwJX0uYmVmb3JlXDp3LTFcLzM6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7d2lkdGg6MzMuMzMzMyV9LmJlZm9yZVw6dy1mdWxsOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjEwMCV9LmJlZm9yZVw6cm91bmRlZC1cW2luaGVyaXRcXTpiZWZvcmV7Ym9yZGVyLXJhZGl1czppbmhlcml0O2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmJlZm9yZVw6cm91bmRlZC1tZDpiZWZvcmV7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMS41KTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5iZWZvcmVcOmJnLWVsZXZhdGVkOmJlZm9yZSwuYmVmb3JlXDpiZy1lbGV2YXRlZFwvNzU6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1lbGV2YXRlZFwvNzU6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA3NSUsdHJhbnNwYXJlbnQpfX0uYmVmb3JlXDpiZy1lcnJvclwvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1lcnJvclwvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uYmVmb3JlXDpiZy1pbmZvXC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJlZm9yZVw6YmctaW5mb1wvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5iZWZvcmVcOmJnLXByaW1hcnlcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1wcmltYXJ5XC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmJlZm9yZVw6Ymctc2Vjb25kYXJ5XC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1zZWNvbmRhcnlcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5iZWZvcmVcOmJnLXN1Y2Nlc3NcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1zdWNjZXNzXC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmJlZm9yZVw6Ymctd2FybmluZ1wvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZWZvcmVcOmJnLXdhcm5pbmdcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uYmVmb3JlXDpiZy1ncmFkaWVudC10by1iOmJlZm9yZXstLXR3LWdyYWRpZW50LXBvc2l0aW9uOnRvIGJvdHRvbSBpbiBva2xhYn0uYmVmb3JlXDpiZy1ncmFkaWVudC10by1iOmJlZm9yZSwuYmVmb3JlXDpiZy1ncmFkaWVudC10by1yOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh2YXIoLS10dy1ncmFkaWVudC1zdG9wcykpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmJlZm9yZVw6YmctZ3JhZGllbnQtdG8tcjpiZWZvcmV7LS10dy1ncmFkaWVudC1wb3NpdGlvbjp0byByaWdodCBpbiBva2xhYn0uYmVmb3JlXDpiZy1cW3JhZGlhbC1ncmFkaWVudFwodmFyXCgtLXNwb3RsaWdodC1zaXplXClfdmFyXCgtLXNwb3RsaWdodC1zaXplXClfYXRfY2FsY1wodmFyXCgtLXNwb3RsaWdodC14XCwwcHhcKVwpX2NhbGNcKHZhclwoLS1zcG90bGlnaHQteVwsMHB4XClcKVwsdmFyXCgtLXNwb3RsaWdodC1jb2xvclwpXCx0cmFuc3BhcmVudF83MFwlXClcXTpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQodmFyKC0tc3BvdGxpZ2h0LXNpemUpIHZhcigtLXNwb3RsaWdodC1zaXplKSBhdCBjYWxjKHZhcigtLXNwb3RsaWdodC14LDBweCkpIGNhbGModmFyKC0tc3BvdGxpZ2h0LXksMHB4KSksdmFyKC0tc3BvdGxpZ2h0LWNvbG9yKSx0cmFuc3BhcmVudCA3MCUpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmJlZm9yZVw6ZnJvbS1kZWZhdWx0OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctZ3JhZGllbnQtZnJvbTp2YXIoLS11aS1iZyk7LS10dy1ncmFkaWVudC1zdG9wczp2YXIoLS10dy1ncmFkaWVudC12aWEtc3RvcHMsdmFyKC0tdHctZ3JhZGllbnQtcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LXRvKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikpfS5iZWZvcmVcOnRvLXRyYW5zcGFyZW50OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctZ3JhZGllbnQtdG86dHJhbnNwYXJlbnQ7LS10dy1ncmFkaWVudC1zdG9wczp2YXIoLS10dy1ncmFkaWVudC12aWEtc3RvcHMsdmFyKC0tdHctZ3JhZGllbnQtcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LXRvKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikpfS5iZWZvcmVcOnRyYW5zaXRpb24tY29sb3JzOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10bzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0uYmVmb3JlXDpjb250ZW50LVxbXFxcIlxcXCJcXTpiZWZvcmV7LS10dy1jb250ZW50OlwiXCI7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0ubm90LWZpcnN0LW9mLXR5cGVcOmJlZm9yZVw6bWUtMFwuNTpub3QoOmZpcnN0LW9mLXR5cGUpOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO21hcmdpbi1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5ub3QtZmlyc3Qtb2YtdHlwZVw6YmVmb3JlXDpjb250ZW50LVxbXCfCt1wnXF06bm90KDpmaXJzdC1vZi10eXBlKTpiZWZvcmV7LS10dy1jb250ZW50OiLCtyI7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOnBvaW50ZXItZXZlbnRzLW5vbmU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5hZnRlclw6YWJzb2x1dGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX0uYWZ0ZXJcOmluc2V0LXgtMDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0LWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5hZnRlclw6aW5zZXQteC0yXC41OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0uYWZ0ZXJcOmluc2V0LXktMDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0LWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmFmdGVyXDppbnNldC15LTBcLjU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uYWZ0ZXJcOi1zdGFydC0xXC41OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmFmdGVyXDpyaWdodC0wOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uYWZ0ZXJcOi1ib3R0b20tMjphZnRlcntib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSotMik7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJvdHRvbS0wOmFmdGVye2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjApO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpsZWZ0LTFcLzI6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtsZWZ0OjUwJX0uYWZ0ZXJcOnotMTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3otaW5kZXg6MX0uYWZ0ZXJcOnotMjphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3otaW5kZXg6Mn0uYWZ0ZXJcOm1zLTBcLjU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5hZnRlclw6YmxvY2s6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtkaXNwbGF5OmJsb2NrfS5hZnRlclw6aGlkZGVuOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ZGlzcGxheTpub25lfS5hZnRlclw6c2l6ZS0xOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMSk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uYWZ0ZXJcOnNpemUtMVwuNTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5hZnRlclw6c2l6ZS0yOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMik7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0uYWZ0ZXJcOmgtMVwvMzphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDozMy4zMzMzJX0uYWZ0ZXJcOmgtZnVsbDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxMDAlfS5hZnRlclw6aC1weDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxcHh9LmFmdGVyXDp3LTFcLzM6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt3aWR0aDozMy4zMzMzJX0uYWZ0ZXJcOnctZnVsbDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjEwMCV9LmFmdGVyXDp3LXB4OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7d2lkdGg6MXB4fS5hZnRlclw6YW5pbWF0ZS1cW2Nhcm91c2VsLWludmVyc2VfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXTphZnRlcnthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6YW5pbWF0ZS1cW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF06YWZ0ZXJ7YW5pbWF0aW9uOmNhcm91c2VsIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDphbmltYXRlLVxbZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdOmFmdGVye2FuaW1hdGlvbjplbGFzdGljIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDphbmltYXRlLVxbc3dpbmdfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXTphZnRlcnthbmltYXRpb246c3dpbmcgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOnJvdW5kZWQtZnVsbDphZnRlcntib3JkZXItcmFkaXVzOjMuNDAyODJlKzM4cHg7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWRlZmF1bHQ6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWVycm9yOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpiZy1pbmZvOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWludmVydGVkOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpiZy1wcmltYXJ5OmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLXNlY29uZGFyeTphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLXN1Y2Nlc3M6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6Ymctd2FybmluZzphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpiZy1ncmFkaWVudC10by1sOmFmdGVyey0tdHctZ3JhZGllbnQtcG9zaXRpb246dG8gbGVmdCBpbiBva2xhYn0uYWZ0ZXJcOmJnLWdyYWRpZW50LXRvLWw6YWZ0ZXIsLmFmdGVyXDpiZy1ncmFkaWVudC10by10OmFmdGVye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWdyYWRpZW50LXRvLXQ6YWZ0ZXJ7LS10dy1ncmFkaWVudC1wb3NpdGlvbjp0byB0b3AgaW4gb2tsYWJ9LmFmdGVyXDpmcm9tLWRlZmF1bHQ6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LWdyYWRpZW50LWZyb206dmFyKC0tdWktYmcpOy0tdHctZ3JhZGllbnQtc3RvcHM6dmFyKC0tdHctZ3JhZGllbnQtdmlhLXN0b3BzLHZhcigtLXR3LWdyYWRpZW50LXBvc2l0aW9uKSx2YXIoLS10dy1ncmFkaWVudC1mcm9tKSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKSx2YXIoLS10dy1ncmFkaWVudC10bykgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pKX0uYWZ0ZXJcOnRvLXRyYW5zcGFyZW50OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1ncmFkaWVudC10bzp0cmFuc3BhcmVudDstLXR3LWdyYWRpZW50LXN0b3BzOnZhcigtLXR3LWdyYWRpZW50LXZpYS1zdG9wcyx2YXIoLS10dy1ncmFkaWVudC1wb3NpdGlvbiksdmFyKC0tdHctZ3JhZGllbnQtZnJvbSkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbiksdmFyKC0tdHctZ3JhZGllbnQtdG8pIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKSl9LmFmdGVyXDp0ZXh0LWVycm9yOmFmdGVye2NvbG9yOnZhcigtLXVpLWVycm9yKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6dHJhbnNpdGlvbi1jb2xvcnM6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG87dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSl9LmFmdGVyXDpjb250ZW50LVxbXCdcKlwnXF06YWZ0ZXJ7LS10dy1jb250ZW50OiIqIjtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6Y29udGVudC1cW1xcXCJcXFwiXF06YWZ0ZXJ7LS10dy1jb250ZW50OlwiXCI7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX06aXMoLlwqXDpub3QtbGFzdFw6YWZ0ZXJcOmFic29sdXRlPiopOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX06aXMoLlwqXDpub3QtbGFzdFw6YWZ0ZXJcOmluc2V0LXgtMT4qKTpub3QoOmxhc3QtY2hpbGQpOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMSl9OmlzKC5cKlw6bm90LWxhc3RcOmFmdGVyXDpib3R0b20tMD4qKTpub3QoOmxhc3QtY2hpbGQpOmFmdGVye2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjApO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9OmlzKC5cKlw6bm90LWxhc3RcOmFmdGVyXDpoLXB4PiopOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtoZWlnaHQ6MXB4fTppcyguXCpcOm5vdC1sYXN0XDphZnRlclw6YmctYm9yZGVyPiopOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1ib3JkZXIpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmZpcnN0XDptZS0wOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqMCl9OmlzKC5cKlw6Zmlyc3RcOm10LTA+Kik6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5ub3Qtb25seVw6Zmlyc3RcOnJvdW5kZWQtZS1ub25lOm5vdCg6b25seS1jaGlsZCk6Zmlyc3QtY2hpbGR7Ym9yZGVyLWVuZC1lbmQtcmFkaXVzOjA7Ym9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6MH0ubm90LW9ubHlcOmZpcnN0XDpyb3VuZGVkLWItbm9uZTpub3QoOm9ubHktY2hpbGQpOmZpcnN0LWNoaWxke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5sYXN0XDpib3JkZXItYi0wOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MH06aXMoLlwqXDpsYXN0XDptYi0wPiopOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5ub3Qtb25seVw6bGFzdFw6cm91bmRlZC1zLW5vbmU6bm90KDpvbmx5LWNoaWxkKTpsYXN0LWNoaWxke2JvcmRlci1lbmQtc3RhcnQtcmFkaXVzOjA7Ym9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czowfS5ub3Qtb25seVw6bGFzdFw6cm91bmRlZC10LW5vbmU6bm90KDpvbmx5LWNoaWxkKTpsYXN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5maXJzdC1vZi10eXBlXDpyb3VuZGVkLXMtbGc6Zmlyc3Qtb2YtdHlwZXtib3JkZXItZW5kLXN0YXJ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMik7Ym9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMil9LmZpcnN0LW9mLXR5cGVcOnJvdW5kZWQtdC1sZzpmaXJzdC1vZi10eXBle2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ubGFzdC1vZi10eXBlXDpyb3VuZGVkLWUtbGc6bGFzdC1vZi10eXBle2JvcmRlci1lbmQtZW5kLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMik7Ym9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfS5sYXN0LW9mLXR5cGVcOnJvdW5kZWQtYi1sZzpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMik7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDpzY2FsZS0xMTU6aG92ZXJ7LS10dy1zY2FsZS14OjExNSU7LS10dy1zY2FsZS15OjExNSU7LS10dy1zY2FsZS16OjExNSU7c2NhbGU6dmFyKC0tdHctc2NhbGUteCkgdmFyKC0tdHctc2NhbGUteSl9LmhvdmVyXDpiZy1hY2NlbnRlZFwvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1hY2NlbnRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWFjY2VudGVkXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1hY2NlbnRlZCkgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1kZWZhdWx0XC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctZGVmYXVsdFwvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmcpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmctZWxldmF0ZWQ6aG92ZXIsLmhvdmVyXDpiZy1lbGV2YXRlZFwvMjU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVsZXZhdGVkXC8yNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgMjUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lbGV2YXRlZFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVsZXZhdGVkXC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgNTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC8xNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgOTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1pbmZvXC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1pbmZvXC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLWluZm9cLzE1OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWluZm9cLzE1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDE1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmctaW5mb1wvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctaW5mb1wvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1pbmZvXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1pbmZvXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA5MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLWludmVydGVkXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctaW52ZXJ0ZWRcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWludmVydGVkKSA5MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXByaW1hcnlcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXByaW1hcnlcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmctcHJpbWFyeVwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctcHJpbWFyeVwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1wcmltYXJ5XC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1wcmltYXJ5XC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXByaW1hcnlcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXByaW1hcnlcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDkwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc2Vjb25kYXJ5XC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXNlY29uZGFyeVwvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXNlY29uZGFyeVwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzE1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzc1OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctc2Vjb25kYXJ5XC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDc1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc2Vjb25kYXJ5XC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXNlY29uZGFyeVwvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA5MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXN1Y2Nlc3NcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXN1Y2Nlc3NcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc3VjY2Vzc1wvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctc3VjY2Vzc1wvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1zdWNjZXNzXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1zdWNjZXNzXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXN1Y2Nlc3NcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXN1Y2Nlc3NcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDkwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctd2FybmluZ1wvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctd2FybmluZ1wvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy13YXJuaW5nXC8xNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy13YXJuaW5nXC8xNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxNSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXdhcm5pbmdcLzc1OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXdhcm5pbmdcLzc1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDc1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctd2FybmluZ1wvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctd2FybmluZ1wvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgOTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LWRlZmF1bHQ6aG92ZXJ7Y29sb3I6dmFyKC0tdWktdGV4dCl9LmhvdmVyXDp0ZXh0LWVycm9yXC83NTpob3Zlcntjb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOnRleHQtZXJyb3JcLzc1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LWhpZ2hsaWdodGVkOmhvdmVye2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5ob3Zlclw6dGV4dC1pbmZvXC83NTpob3Zlcntjb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6dGV4dC1pbmZvXC83NTpob3Zlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LXByaW1hcnlcLzc1OmhvdmVye2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDp0ZXh0LXByaW1hcnlcLzc1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOnRleHQtc2Vjb25kYXJ5XC83NTpob3Zlcntjb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDp0ZXh0LXNlY29uZGFyeVwvNzU6aG92ZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LXN1Y2Nlc3NcLzc1OmhvdmVye2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDp0ZXh0LXN1Y2Nlc3NcLzc1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOnRleHQtd2FybmluZ1wvNzU6aG92ZXJ7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOnRleHQtd2FybmluZ1wvNzU6aG92ZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDc1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6dW5kZXJsaW5lOmhvdmVye3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX0uaG92ZXJcOnJpbmctYWNjZW50ZWQ6aG92ZXJ7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWJvcmRlci1hY2NlbnRlZCl9LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWVycm9yXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1lcnJvclwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1lcnJvclwvMjA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctZXJyb3JcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAyMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctaW5mb1wvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctaW5mb1wvMjA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAyMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctaW52ZXJ0ZWRcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWludmVydGVkXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1pbnZlcnRlZCkgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctcHJpbWFyeVwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctcHJpbWFyeVwvMjA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXNlY29uZGFyeVwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXNlY29uZGFyeVwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDIwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXN1Y2Nlc3NcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXN1Y2Nlc3NcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDIwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXdhcm5pbmdcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXdhcm5pbmdcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDIwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTA6aG92ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJlZm9yZVw6YmctZWxldmF0ZWRcLzUwOmhvdmVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgNTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDphZnRlclw6YmctXCgtLXVpLWJvcmRlci1hY2NlbnRlZFwpOmhvdmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfX0uZm9jdXNcOmJnLWFjY2VudGVkOmZvY3VzLC5mb2N1c1w6YmctYWNjZW50ZWRcLzUwOmZvY3Vze2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzXDpiZy1hY2NlbnRlZFwvNTA6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctYWNjZW50ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1c1w6YmctZWxldmF0ZWQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9LmZvY3VzXDpyaW5nLTI6Zm9jdXN7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LmZvY3VzXDpyaW5nLWVycm9yOmZvY3Vzey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1lcnJvcil9LmZvY3VzXDpyaW5nLWluZm86Zm9jdXN7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5mb2N1c1w6cmluZy1pbnZlcnRlZDpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0uZm9jdXNcOnJpbmctcHJpbWFyeTpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmZvY3VzXDpyaW5nLXNlY29uZGFyeTpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZm9jdXNcOnJpbmctc3VjY2Vzczpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmZvY3VzXDpyaW5nLXdhcm5pbmc6Zm9jdXN7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5mb2N1c1w6b3V0bGluZS1ub25lOmZvY3Vzey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uZm9jdXNcOnJpbmctaW5zZXQ6Zm9jdXN7LS10dy1yaW5nLWluc2V0Omluc2V0fUBtZWRpYShob3Zlcjpob3Zlcil7Lmdyb3VwLWhvdmVyXDpmb2N1c1w6YmctYWNjZW50ZWQ6aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKik6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1hY2NlbnRlZCl9fS5mb2N1cy12aXNpYmxlXDp6LVxbMVxdOmZvY3VzLXZpc2libGV7ei1pbmRleDoxfS5mb2N1cy12aXNpYmxlXDpiZy1hY2NlbnRlZFwvNzU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWFjY2VudGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1hY2NlbnRlZFwvNzU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1hY2NlbnRlZCkgNzUlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLWRlZmF1bHRcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctZGVmYXVsdFwvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZykgMTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLWVsZXZhdGVkOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9LmZvY3VzLXZpc2libGVcOmJnLWVycm9yXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLWVycm9yXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6YmctZXJyb3JcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctZXJyb3JcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDE1JSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpiZy1pbmZvXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctaW5mb1wvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6YmctaW5mb1wvMTU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLWluZm9cLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTUlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLXByaW1hcnlcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1wcmltYXJ5XC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpiZy1wcmltYXJ5XC8xNTpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctcHJpbWFyeVwvMTU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAxNSUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctc2Vjb25kYXJ5XC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1zZWNvbmRhcnlcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctc2Vjb25kYXJ5XC8xNTpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1zZWNvbmRhcnlcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxNSUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctc3VjY2Vzc1wvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLXN1Y2Nlc3NcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLXN1Y2Nlc3NcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1zdWNjZXNzXC8xNTpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDE1JSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpiZy13YXJuaW5nXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6Ymctd2FybmluZ1wvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctd2FybmluZ1wvMTU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLXdhcm5pbmdcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTUlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOnJpbmctMjpmb2N1cy12aXNpYmxley0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5mb2N1cy12aXNpYmxlXDpyaW5nLWVycm9yOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX0uZm9jdXMtdmlzaWJsZVw6cmluZy1pbmZvOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5mb2N1cy12aXNpYmxlXDpyaW5nLWludmVydGVkOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWJvcmRlci1pbnZlcnRlZCl9LmZvY3VzLXZpc2libGVcOnJpbmctcHJpbWFyeTpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZm9jdXMtdmlzaWJsZVw6cmluZy1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZm9jdXMtdmlzaWJsZVw6cmluZy1zdWNjZXNzOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5mb2N1cy12aXNpYmxlXDpyaW5nLXdhcm5pbmc6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktd2FybmluZyl9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtMjpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtb2Zmc2V0LTI6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtZXJyb3I6Zm9jdXMtdmlzaWJsZSwuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1lcnJvclwvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLWVycm9yXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA1MCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1pbmZvOmZvY3VzLXZpc2libGUsLmZvY3VzLXZpc2libGVcOm91dGxpbmUtaW5mb1wvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOm91dGxpbmUtaW5mb1wvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA1MCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1pbnZlcnRlZDpmb2N1cy12aXNpYmxlLC5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLWludmVydGVkXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLWludmVydGVkXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJvcmRlci1pbnZlcnRlZCkgNTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOm91dGxpbmUtcHJpbWFyeTpmb2N1cy12aXNpYmxlLC5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXByaW1hcnlcLzUwOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXByaW1hcnlcLzUwOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOm91dGxpbmUtc2Vjb25kYXJ5OmZvY3VzLXZpc2libGUsLmZvY3VzLXZpc2libGVcOm91dGxpbmUtc2Vjb25kYXJ5XC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXNlY29uZGFyeVwvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXN1Y2Nlc3M6Zm9jdXMtdmlzaWJsZSwuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1zdWNjZXNzXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1zdWNjZXNzXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXdhcm5pbmc6Zm9jdXMtdmlzaWJsZSwuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS13YXJuaW5nXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS13YXJuaW5nXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLW5vbmU6Zm9jdXMtdmlzaWJsZXstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LmZvY3VzLXZpc2libGVcOnJpbmctaW5zZXQ6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctaW5zZXQ6aW5zZXR9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy0yOmZvY3VzLXZpc2libGU6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy1lcnJvcjpmb2N1cy12aXNpYmxlOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1lcnJvcil9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy1pbmZvOmZvY3VzLXZpc2libGU6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5mb2N1cy12aXNpYmxlXDpiZWZvcmVcOnJpbmctaW52ZXJ0ZWQ6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0uZm9jdXMtdmlzaWJsZVw6YmVmb3JlXDpyaW5nLXByaW1hcnk6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZm9jdXMtdmlzaWJsZVw6YmVmb3JlXDpyaW5nLXN1Y2Nlc3M6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy13YXJuaW5nOmZvY3VzLXZpc2libGU6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5mb2N1cy12aXNpYmxlXDpiZWZvcmVcOnJpbmctaW5zZXQ6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctaW5zZXQ6aW5zZXR9LmFjdGl2ZVw6YmctYWNjZW50ZWRcLzc1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWFjY2VudGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWFjY2VudGVkXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctYWNjZW50ZWQpIDc1JSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOmJnLWVsZXZhdGVkOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX0uYWN0aXZlXDpiZy1lcnJvclwvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6YmctZXJyb3JcLzEwOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctZXJyb3JcLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWVycm9yXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDE1JSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOmJnLWVycm9yXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1lcnJvclwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbmZvXC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWluZm9cLzEwOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbmZvXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWluZm9cLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxNSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbmZvXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWluZm9cLzc1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbnZlcnRlZFwvOTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6YmctaW52ZXJ0ZWRcLzkwOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1pbnZlcnRlZCkgOTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctcHJpbWFyeVwvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1wcmltYXJ5XC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctcHJpbWFyeVwvMTU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1wcmltYXJ5XC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctcHJpbWFyeVwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1wcmltYXJ5XC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc2Vjb25kYXJ5XC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6Ymctc2Vjb25kYXJ5XC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1zZWNvbmRhcnlcLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zZWNvbmRhcnlcLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDE1JSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOmJnLXNlY29uZGFyeVwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLXNlY29uZGFyeVwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc3VjY2Vzc1wvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zdWNjZXNzXC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc3VjY2Vzc1wvMTU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zdWNjZXNzXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc3VjY2Vzc1wvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zdWNjZXNzXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctd2FybmluZ1wvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy13YXJuaW5nXC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctd2FybmluZ1wvMTU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy13YXJuaW5nXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctd2FybmluZ1wvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy13YXJuaW5nXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1kZWZhdWx0OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS10ZXh0KX0uYWN0aXZlXDp0ZXh0LWVycm9yXC83NTphY3RpdmV7Y29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6dGV4dC1lcnJvclwvNzU6YWN0aXZle2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1pbmZvXC83NTphY3RpdmV7Y29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDp0ZXh0LWluZm9cLzc1OmFjdGl2ZXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1wcmltYXJ5XC83NTphY3RpdmV7Y29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDp0ZXh0LXByaW1hcnlcLzc1OmFjdGl2ZXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1zZWNvbmRhcnlcLzc1OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6dGV4dC1zZWNvbmRhcnlcLzc1OmFjdGl2ZXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDp0ZXh0LXN1Y2Nlc3NcLzc1OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOnRleHQtc3VjY2Vzc1wvNzU6YWN0aXZle2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDp0ZXh0LXdhcm5pbmdcLzc1OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOnRleHQtd2FybmluZ1wvNzU6YWN0aXZle2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA3NSUsdHJhbnNwYXJlbnQpfX0uZGlzYWJsZWRcOnBvaW50ZXItZXZlbnRzLW5vbmU6ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX0uZGlzYWJsZWRcOmN1cnNvci1kZWZhdWx0OmRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOmJnLWRlZmF1bHQ6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyl9LmRpc2FibGVkXDpiZy1lbGV2YXRlZDpkaXNhYmxlZCwuZGlzYWJsZWRcOmJnLWVsZXZhdGVkXC81MDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kaXNhYmxlZFw6YmctZWxldmF0ZWRcLzUwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGlzYWJsZWRcOmJnLWVycm9yOmRpc2FibGVkLC5kaXNhYmxlZFw6YmctZXJyb3JcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRpc2FibGVkXDpiZy1lcnJvclwvMTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6YmctaW5mbzpkaXNhYmxlZCwuZGlzYWJsZWRcOmJnLWluZm9cLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGlzYWJsZWRcOmJnLWluZm9cLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6YmctaW52ZXJ0ZWQ6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmRpc2FibGVkXDpiZy1wcmltYXJ5OmRpc2FibGVkLC5kaXNhYmxlZFw6YmctcHJpbWFyeVwvMTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kaXNhYmxlZFw6YmctcHJpbWFyeVwvMTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmRpc2FibGVkXDpiZy1zZWNvbmRhcnk6ZGlzYWJsZWQsLmRpc2FibGVkXDpiZy1zZWNvbmRhcnlcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kaXNhYmxlZFw6Ymctc2Vjb25kYXJ5XC8xMDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6Ymctc3VjY2VzczpkaXNhYmxlZCwuZGlzYWJsZWRcOmJnLXN1Y2Nlc3NcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGlzYWJsZWRcOmJnLXN1Y2Nlc3NcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6YmctdHJhbnNwYXJlbnQ6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZGlzYWJsZWRcOmJnLXdhcm5pbmc6ZGlzYWJsZWQsLmRpc2FibGVkXDpiZy13YXJuaW5nXC8xMDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRpc2FibGVkXDpiZy13YXJuaW5nXC8xMDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGlzYWJsZWRcOnRleHQtZXJyb3I6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5kaXNhYmxlZFw6dGV4dC1pbmZvOmRpc2FibGVke2NvbG9yOnZhcigtLXVpLWluZm8pfS5kaXNhYmxlZFw6dGV4dC1tdXRlZDpkaXNhYmxlZHtjb2xvcjp2YXIoLS11aS10ZXh0LW11dGVkKX0uZGlzYWJsZWRcOnRleHQtcHJpbWFyeTpkaXNhYmxlZHtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZGlzYWJsZWRcOnRleHQtc2Vjb25kYXJ5OmRpc2FibGVke2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRpc2FibGVkXDp0ZXh0LXN1Y2Nlc3M6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmRpc2FibGVkXDp0ZXh0LXdhcm5pbmc6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9LmRpc2FibGVkXDpvcGFjaXR5LTc1OmRpc2FibGVke29wYWNpdHk6Ljc1fUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDpkaXNhYmxlZFw6YmctdHJhbnNwYXJlbnQ6aG92ZXI6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZGlzYWJsZWRcOmhvdmVyXDp0ZXh0LW11dGVkOmRpc2FibGVkOmhvdmVye2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfX0uaGFzLWZvY3VzXDpiZy1lbGV2YXRlZDpoYXMoOmZvY3VzKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX0uaGFzLWZvY3VzLXZpc2libGVcOnotXFsxXF06aGFzKDpmb2N1cy12aXNpYmxlKXt6LWluZGV4OjF9Lmhhcy1mb2N1cy12aXNpYmxlXDpyaW5nLTI6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDJweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctZXJyb3I6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktZXJyb3IpfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1pbmZvOmhhcyg6Zm9jdXMtdmlzaWJsZSl7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1pbnZlcnRlZDpoYXMoOmZvY3VzLXZpc2libGUpey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1ib3JkZXItaW52ZXJ0ZWQpfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1wcmltYXJ5Omhhcyg6Zm9jdXMtdmlzaWJsZSl7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1zZWNvbmRhcnk6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctc3VjY2VzczpoYXMoOmZvY3VzLXZpc2libGUpey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctd2FybmluZzpoYXMoOmZvY3VzLXZpc2libGUpey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctaW5zZXQ6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctaW5zZXQ6aW5zZXR9Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6ei1cWzFcXTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe3otaW5kZXg6MX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItZXJyb3I6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKSwuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItZXJyb3JcLzUwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1lcnJvclwvNTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA1MCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItaW5mbzpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1pbmZvXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1pbmZvXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLWludmVydGVkOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSksLmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLWludmVydGVkXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItaW52ZXJ0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLWludmVydGVkXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYm9yZGVyLWludmVydGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItcHJpbWFyeTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1wcmltYXJ5XC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1wcmltYXJ5XC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLXNlY29uZGFyeTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1zZWNvbmRhcnlcLzUwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItc2Vjb25kYXJ5XC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA1MCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItc3VjY2VzczpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1zdWNjZXNzXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1zdWNjZXNzXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLXdhcm5pbmc6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKSwuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItd2FybmluZ1wvNTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtib3JkZXItY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItd2FybmluZ1wvNTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDUwJSx0cmFuc3BhcmVudCl9fS5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLWVsZXZhdGVkOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6YmctZXJyb3JcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1lcnJvclwvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6YmctaW5mb1wvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6YmctaW5mb1wvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5XC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5XC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXNlY29uZGFyeVwvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1zZWNvbmRhcnlcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1zdWNjZXNzXC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1zdWNjZXNzXC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXdhcm5pbmdcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXdhcm5pbmdcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmN1cnNvci1ub3QtYWxsb3dlZFthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpub3QtYWxsb3dlZH0uYXJpYS1kaXNhYmxlZFw6YmctZGVmYXVsdFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpfS5hcmlhLWRpc2FibGVkXDpiZy1lbGV2YXRlZFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpfS5hcmlhLWRpc2FibGVkXDpiZy1lcnJvclthcmlhLWRpc2FibGVkPXRydWVdLC5hcmlhLWRpc2FibGVkXDpiZy1lcnJvclwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hcmlhLWRpc2FibGVkXDpiZy1lcnJvclwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmJnLWluZm9bYXJpYS1kaXNhYmxlZD10cnVlXSwuYXJpYS1kaXNhYmxlZFw6YmctaW5mb1wvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLWluZm9cLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmJnLWludmVydGVkW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmFyaWEtZGlzYWJsZWRcOmJnLXByaW1hcnlbYXJpYS1kaXNhYmxlZD10cnVlXSwuYXJpYS1kaXNhYmxlZFw6YmctcHJpbWFyeVwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLXByaW1hcnlcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmJnLXNlY29uZGFyeVthcmlhLWRpc2FibGVkPXRydWVdLC5hcmlhLWRpc2FibGVkXDpiZy1zZWNvbmRhcnlcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLXNlY29uZGFyeVwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5hcmlhLWRpc2FibGVkXDpiZy1zdWNjZXNzW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0sLmFyaWEtZGlzYWJsZWRcOmJnLXN1Y2Nlc3NcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hcmlhLWRpc2FibGVkXDpiZy1zdWNjZXNzXC8xMFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5hcmlhLWRpc2FibGVkXDpiZy10cmFuc3BhcmVudFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmFyaWEtZGlzYWJsZWRcOmJnLXdhcm5pbmdbYXJpYS1kaXNhYmxlZD10cnVlXSwuYXJpYS1kaXNhYmxlZFw6Ymctd2FybmluZ1wvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLXdhcm5pbmdcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOnRleHQtZXJyb3JbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjp2YXIoLS11aS1lcnJvcil9LmFyaWEtZGlzYWJsZWRcOnRleHQtaW5mb1thcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLWluZm8pfS5hcmlhLWRpc2FibGVkXDp0ZXh0LW11dGVkW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LmFyaWEtZGlzYWJsZWRcOnRleHQtcHJpbWFyeVthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5hcmlhLWRpc2FibGVkXDp0ZXh0LXNlY29uZGFyeVthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmFyaWEtZGlzYWJsZWRcOnRleHQtc3VjY2Vzc1thcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5hcmlhLWRpc2FibGVkXDp0ZXh0LXdhcm5pbmdbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uYXJpYS1kaXNhYmxlZFw6b3BhY2l0eS03NVthcmlhLWRpc2FibGVkPXRydWVde29wYWNpdHk6Ljc1fUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDphcmlhLWRpc2FibGVkXDpiZy10cmFuc3BhcmVudDpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6IzAwMDB9fS5kYXRhLWRpc2FibGVkXDpjdXJzb3Itbm90LWFsbG93ZWRbZGF0YS1kaXNhYmxlZF17Y3Vyc29yOm5vdC1hbGxvd2VkfS5kYXRhLWRpc2FibGVkXDp0ZXh0LW11dGVkW2RhdGEtZGlzYWJsZWRde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLWRpc2FibGVkXDpvcGFjaXR5LTc1W2RhdGEtZGlzYWJsZWRde29wYWNpdHk6Ljc1fS5kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LWVycm9yW2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLWVycm9yKX0uZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLWhpZ2hsaWdodGVkXXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1pbmZvW2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLWluZm8pfS5kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LXByaW1hcnlbZGF0YS1oaWdobGlnaHRlZF17Y29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtc2Vjb25kYXJ5W2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtc3VjY2Vzc1tkYXRhLWhpZ2hsaWdodGVkXXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uZGF0YS1oaWdobGlnaHRlZFw6dGV4dC13YXJuaW5nW2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5kYXRhLWhpZ2hsaWdodGVkXDpub3QtZGF0YS1kaXNhYmxlZFw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLWhpZ2hsaWdodGVkXTpub3QoW2RhdGEtZGlzYWJsZWRdKXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1pbmZvXC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtaGlnaGxpZ2h0ZWRcOmJlZm9yZVw6YmctaW5mb1wvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLWhpZ2hsaWdodGVkXDpiZWZvcmVcOmJnLXByaW1hcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1wcmltYXJ5XC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtaGlnaGxpZ2h0ZWRcOmJlZm9yZVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1zZWNvbmRhcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLWhpZ2hsaWdodGVkXDpiZWZvcmVcOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1zdWNjZXNzXC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtaGlnaGxpZ2h0ZWRcOmJlZm9yZVw6Ymctd2FybmluZ1wvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLWhpZ2hsaWdodGVkXDpiZWZvcmVcOmJnLXdhcm5pbmdcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1oaWdobGlnaHRlZFw6bm90LWRhdGEtZGlzYWJsZWRcOmJlZm9yZVw6YmctZWxldmF0ZWRcLzUwW2RhdGEtaGlnaGxpZ2h0ZWRdOm5vdChbZGF0YS1kaXNhYmxlZF0pOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtaGlnaGxpZ2h0ZWRcOm5vdC1kYXRhLWRpc2FibGVkXDpiZWZvcmVcOmJnLWVsZXZhdGVkXC81MFtkYXRhLWhpZ2hsaWdodGVkXTpub3QoW2RhdGEtZGlzYWJsZWRdKTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLWludmFsaWRcOnRleHQtZXJyb3JbZGF0YS1pbnZhbGlkXXtjb2xvcjp2YXIoLS11aS1lcnJvcil9LmRhdGEtcGxhY2Vob2xkZXJcOnRleHQtZGltbWVkW2RhdGEtcGxhY2Vob2xkZXJde2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKX0uZGF0YS10b2RheVw6Zm9udC1zZW1pYm9sZFtkYXRhLXRvZGF5XXstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCl9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1lcnJvcltkYXRhLXRvZGF5XTpub3QoW2RhdGEtc2VsZWN0ZWRdKXtjb2xvcjp2YXIoLS11aS1lcnJvcil9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLXRvZGF5XTpub3QoW2RhdGEtc2VsZWN0ZWRdKXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZGF0YS10b2RheVw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDp0ZXh0LWluZm9bZGF0YS10b2RheV06bm90KFtkYXRhLXNlbGVjdGVkXSl7Y29sb3I6dmFyKC0tdWktaW5mbyl9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1wcmltYXJ5W2RhdGEtdG9kYXldOm5vdChbZGF0YS1zZWxlY3RlZF0pe2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5kYXRhLXRvZGF5XDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtc2Vjb25kYXJ5W2RhdGEtdG9kYXldOm5vdChbZGF0YS1zZWxlY3RlZF0pe2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1zdWNjZXNzW2RhdGEtdG9kYXldOm5vdChbZGF0YS1zZWxlY3RlZF0pe2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5kYXRhLXRvZGF5XDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtd2FybmluZ1tkYXRhLXRvZGF5XTpub3QoW2RhdGEtc2VsZWN0ZWRdKXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uZGF0YS11bmF2YWlsYWJsZVw6cG9pbnRlci1ldmVudHMtbm9uZVtkYXRhLXVuYXZhaWxhYmxlXXtwb2ludGVyLWV2ZW50czpub25lfS5kYXRhLXVuYXZhaWxhYmxlXDp0ZXh0LW11dGVkW2RhdGEtdW5hdmFpbGFibGVde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLXVuYXZhaWxhYmxlXDpsaW5lLXRocm91Z2hbZGF0YS11bmF2YWlsYWJsZV17dGV4dC1kZWNvcmF0aW9uLWxpbmU6bGluZS10aHJvdWdofS5kYXRhLVxbZGlzYWJsZWRcXVw6Y3Vyc29yLW5vdC1hbGxvd2VkW2RhdGEtZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH0uZGF0YS1cW2Rpc2FibGVkXF1cOm9wYWNpdHktNzVbZGF0YS1kaXNhYmxlZF17b3BhY2l0eTouNzV9LmRhdGEtXFtkcmFnZ2luZ1w9dHJ1ZVxdXDpiZy1lbGV2YXRlZFwvMjVbZGF0YS1kcmFnZ2luZz10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbZHJhZ2dpbmdcPXRydWVcXVw6YmctZWxldmF0ZWRcLzI1W2RhdGEtZHJhZ2dpbmc9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbZXhwYW5kZWRcPXRydWVcXVw6aC1cKC0taGVpZ2h0XClbZGF0YS1leHBhbmRlZD10cnVlXXtoZWlnaHQ6dmFyKC0taGVpZ2h0KX06aXMoLmRhdGEtXFtmcm9udFw9ZmFsc2VcXVw6XCpcOnRyYW5zaXRpb24tb3BhY2l0eVtkYXRhLWZyb250PWZhbHNlXT4qKXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX06aXMoLmRhdGEtXFtmcm9udFw9ZmFsc2VcXVw6XCpcOmR1cmF0aW9uLTEwMFtkYXRhLWZyb250PWZhbHNlXT4qKXstLXR3LWR1cmF0aW9uOi4xczt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZGF0YS1cW2V4cGFuZGVkXD1mYWxzZVxdXDpkYXRhLVxbZnJvbnRcPWZhbHNlXF1cOmgtXCgtLWZyb250LWhlaWdodFwpW2RhdGEtZXhwYW5kZWQ9ZmFsc2VdW2RhdGEtZnJvbnQ9ZmFsc2Vde2hlaWdodDp2YXIoLS1mcm9udC1oZWlnaHQpfTppcyguZGF0YS1cW2V4cGFuZGVkXD1mYWxzZVxdXDpkYXRhLVxbZnJvbnRcPWZhbHNlXF1cOlwqXDpvcGFjaXR5LTBbZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV0+Kil7b3BhY2l0eTowfS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctZXJyb3JcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1lcnJvclwvMTBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctZXJyb3JcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1lcnJvclwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDIwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW5mb1wvMTBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW5mb1wvMTBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1pbmZvXC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1pbmZvXC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAyMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLWludmVydGVkXC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW52ZXJ0ZWRcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWludmVydGVkKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLWludmVydGVkXC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW52ZXJ0ZWRcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWludmVydGVkKSAyMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctcHJpbWFyeVwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctcHJpbWFyeVwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1zZWNvbmRhcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXNlY29uZGFyeVwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAyMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc3VjY2Vzc1wvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc3VjY2Vzc1wvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMjAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXdhcm5pbmdcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXdhcm5pbmdcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDIwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbbW90aW9uXD1mcm9tLWVuZFxdXDphbmltYXRlLVxbZW50ZXItZnJvbS1yaWdodF8yMDBtc19lYXNlXF1bZGF0YS1tb3Rpb249ZnJvbS1lbmRde2FuaW1hdGlvbjplbnRlci1mcm9tLXJpZ2h0IC4yc30uZGF0YS1cW21vdGlvblw9ZnJvbS1zdGFydFxdXDphbmltYXRlLVxbZW50ZXItZnJvbS1sZWZ0XzIwMG1zX2Vhc2VcXVtkYXRhLW1vdGlvbj1mcm9tLXN0YXJ0XXthbmltYXRpb246ZW50ZXItZnJvbS1sZWZ0IC4yc30uZGF0YS1cW21vdGlvblw9dG8tZW5kXF1cOmFuaW1hdGUtXFtleGl0LXRvLXJpZ2h0XzIwMG1zX2Vhc2VcXVtkYXRhLW1vdGlvbj10by1lbmRde2FuaW1hdGlvbjpleGl0LXRvLXJpZ2h0IC4yc30uZGF0YS1cW21vdGlvblw9dG8tc3RhcnRcXVw6YW5pbWF0ZS1cW2V4aXQtdG8tbGVmdF8yMDBtc19lYXNlXF1bZGF0YS1tb3Rpb249dG8tc3RhcnRde2FuaW1hdGlvbjpleGl0LXRvLWxlZnQgLjJzfS5kYXRhLVxbb3V0c2lkZS12aWV3XF1cOnRleHQtbXV0ZWRbZGF0YS1vdXRzaWRlLXZpZXdde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLVxbc2VnbWVudFw9ZGF5XF1cOnctOFtkYXRhLXNlZ21lbnQ9ZGF5XXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5kYXRhLVxbc2VnbWVudFw9ZGF5XF1cOnctOVtkYXRhLXNlZ21lbnQ9ZGF5XXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjkpfS5kYXRhLVxbc2VnbWVudFw9ZGF5XF1cOnctMTBbZGF0YS1zZWdtZW50PWRheV17d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9LmRhdGEtXFtzZWdtZW50XD1saXRlcmFsXF1cOnRleHQtbXV0ZWRbZGF0YS1zZWdtZW50PWxpdGVyYWxde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLVxbc2VnbWVudFw9bW9udGhcXVw6dy04W2RhdGEtc2VnbWVudD1tb250aF17d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uZGF0YS1cW3NlZ21lbnRcPW1vbnRoXF1cOnctOVtkYXRhLXNlZ21lbnQ9bW9udGhde3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOSl9LmRhdGEtXFtzZWdtZW50XD1tb250aFxdXDp3LTEwW2RhdGEtc2VnbWVudD1tb250aF0sLmRhdGEtXFtzZWdtZW50XD15ZWFyXF1cOnctMTBbZGF0YS1zZWdtZW50PXllYXJde3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTApfS5kYXRhLVxbc2VnbWVudFw9eWVhclxdXDp3LTExW2RhdGEtc2VnbWVudD15ZWFyXXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0uZGF0YS1cW3NlZ21lbnRcPXllYXJcXVw6dy0xMltkYXRhLXNlZ21lbnQ9eWVhcl17d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1kZWZhdWx0W2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6YmctZWxldmF0ZWRbZGF0YS1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1lcnJvcltkYXRhLXNlbGVjdGVkXSwuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWVycm9yXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6YmctZXJyb3JcLzEwW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWluZm9bZGF0YS1zZWxlY3RlZF0sLmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWludmVydGVkW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6YmctcHJpbWFyeVtkYXRhLXNlbGVjdGVkXSwuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5W2RhdGEtc2VsZWN0ZWRdLC5kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXNlY29uZGFyeVwvMTBbZGF0YS1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXN1Y2Nlc3NbZGF0YS1zZWxlY3RlZF0sLmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXdhcm5pbmdbZGF0YS1zZWxlY3RlZF0sLmRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtZGVmYXVsdFtkYXRhLXNlbGVjdGVkXXtjb2xvcjp2YXIoLS11aS10ZXh0KX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtZXJyb3JbZGF0YS1zZWxlY3RlZF17Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1pbmZvW2RhdGEtc2VsZWN0ZWRde2NvbG9yOnZhcigtLXVpLWluZm8pfS5kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1pbnZlcnRlZFtkYXRhLXNlbGVjdGVkXXtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtcHJpbWFyeVtkYXRhLXNlbGVjdGVkXXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtc2Vjb25kYXJ5W2RhdGEtc2VsZWN0ZWRde2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRhdGEtXFtzZWxlY3RlZFxdXDp0ZXh0LXN1Y2Nlc3NbZGF0YS1zZWxlY3RlZF17Y29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmRhdGEtXFtzZWxlY3RlZFxdXDp0ZXh0LXdhcm5pbmdbZGF0YS1zZWxlY3RlZF17Y29sb3I6dmFyKC0tdWktd2FybmluZyl9LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1hY2NlbnRlZFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctZXJyb3JcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctZXJyb3JcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1lcnJvclwvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1lcnJvclwvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLWluZm9cLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1pbmZvXC8yNVtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1pbmZvXC81MFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctaW5mb1wvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctcHJpbWFyeVwvMjVbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXByaW1hcnlcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjUlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXByaW1hcnlcLzUwW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1wcmltYXJ5XC81MFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1zZWNvbmRhcnlcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXNlY29uZGFyeVwvMjVbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1zZWNvbmRhcnlcLzUwW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXNlY29uZGFyeVwvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1zdWNjZXNzXC8yNVtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctc3VjY2Vzc1wvMjVbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSAyNSUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctc3VjY2Vzc1wvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXN1Y2Nlc3NcLzUwW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXdhcm5pbmdcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy13YXJuaW5nXC8yNVtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy13YXJuaW5nXC81MFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctd2FybmluZ1wvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctaW5zZXRbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWluc2V0Omluc2V0fS5kYXRhLVxbc2VsZWN0ZWRcPXRydWVcXVw6YmctZWxldmF0ZWRcLzUwW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXD10cnVlXF1cOmJnLWVsZXZhdGVkXC81MFtkYXRhLXNlbGVjdGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3N0YXRlXD1cXFwiYWN0aXZlXFxcIlxdXDpiZy1hY2NlbnRlZFtkYXRhLXN0YXRlPSciYWN0aXZlIidde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpfS5kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDpiZy1pbnZlcnRlZFtkYXRhLXN0YXRlPWFjdGl2ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtZXJyb3JbZGF0YS1zdGF0ZT1hY3RpdmVde2NvbG9yOnZhcigtLXVpLWVycm9yKX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLXN0YXRlPWFjdGl2ZV17Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtaW5mb1tkYXRhLXN0YXRlPWFjdGl2ZV17Y29sb3I6dmFyKC0tdWktaW5mbyl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtaW52ZXJ0ZWRbZGF0YS1zdGF0ZT1hY3RpdmVde2NvbG9yOnZhcigtLXVpLXRleHQtaW52ZXJ0ZWQpfS5kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDp0ZXh0LXByaW1hcnlbZGF0YS1zdGF0ZT1hY3RpdmVde2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDp0ZXh0LXNlY29uZGFyeVtkYXRhLXN0YXRlPWFjdGl2ZV17Y29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6dGV4dC1zdWNjZXNzW2RhdGEtc3RhdGU9YWN0aXZlXXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6dGV4dC13YXJuaW5nW2RhdGEtc3RhdGU9YWN0aXZlXXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRyYW5zbGF0ZS14LTNbZGF0YS1zdGF0ZT1jaGVja2VkXXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqMyk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0cmFuc2xhdGUteC0zXC41W2RhdGEtc3RhdGU9Y2hlY2tlZF17LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0cmFuc2xhdGUteC00W2RhdGEtc3RhdGU9Y2hlY2tlZF17LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dHJhbnNsYXRlLXgtNFwuNVtkYXRhLXN0YXRlPWNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dHJhbnNsYXRlLXgtNVtkYXRhLXN0YXRlPWNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLWVycm9yW2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1pbmZvW2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLWludmVydGVkW2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5W2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXNlY29uZGFyeVtkYXRhLXN0YXRlPWNoZWNrZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXN1Y2Nlc3NbZGF0YS1zdGF0ZT1jaGVja2VkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ymctd2FybmluZ1tkYXRhLXN0YXRlPWNoZWNrZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmFuaW1hdGUtXFthY2NvcmRpb24tdXBfMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOmFjY29yZGlvbi11cCAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmFuaW1hdGUtXFtjb2xsYXBzaWJsZS11cF8yMDBtc19lYXNlLW91dFxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246Y29sbGFwc2libGUtdXAgLjJzIGVhc2Utb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbZmFkZS1vdXRfMjAwbXNfZWFzZS1pblxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246ZmFkZS1vdXQgLjJzIGVhc2UtaW59LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmFuaW1hdGUtXFtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pblxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246c2NhbGUtb3V0IC4xcyBlYXNlLWlufS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbc2NhbGUtb3V0XzIwMG1zX2Vhc2UtaW5cXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNjYWxlLW91dCAuMnMgZWFzZS1pbn0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1cW3NsaWRlLW91dC10by1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNsaWRlLW91dC10by1ib3R0b20gLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbc2xpZGUtb3V0LXRvLWxlZnRfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNsaWRlLW91dC10by1sZWZ0IC4ycyBlYXNlLWluLW91dH0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1cW3NsaWRlLW91dC10by1yaWdodF8yMDBtc19lYXNlLWluLW91dFxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246c2xpZGUtb3V0LXRvLXJpZ2h0IC4ycyBlYXNlLWluLW91dH0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1cW3NsaWRlLW91dC10by10b3BfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNsaWRlLW91dC10by10b3AgLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbdG9hc3QtY2xvc2VkXzIwMG1zX2Vhc2UtaW4tb3V0XF1bZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbjp0b2FzdC1jbG9zZWQgLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDpkYXRhLVxbZXhwYW5kZWRcPWZhbHNlXF1cOmRhdGEtXFtmcm9udFw9ZmFsc2VcXVw6YW5pbWF0ZS1cW3RvYXN0LWNvbGxhcHNlZC1jbG9zZWRfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF1bZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV17YW5pbWF0aW9uOnRvYXN0LWNvbGxhcHNlZC1jbG9zZWQgLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNvbGxhcHNlZFxdXDotcmlnaHQtXCgtLXNpZGViYXItd2lkdGhcKVtkYXRhLXN0YXRlPWNvbGxhcHNlZF17cmlnaHQ6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoKSotMSl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOi1sZWZ0LVwoLS1zaWRlYmFyLXdpZHRoXClbZGF0YS1zdGF0ZT1jb2xsYXBzZWRde2xlZnQ6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoKSotMSl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOnctXCgtLXNpZGViYXItd2lkdGgtaWNvblwpW2RhdGEtc3RhdGU9Y29sbGFwc2VkXXt3aWR0aDp2YXIoLS1zaWRlYmFyLXdpZHRoLWljb24pfS5kYXRhLVxbc3RhdGVcPWNvbGxhcHNlZFxdXDp3LTBbZGF0YS1zdGF0ZT1jb2xsYXBzZWRde3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOnctXFtjYWxjXCh2YXJcKC0tc2lkZWJhci13aWR0aC1pY29uXClcKy0tc3BhY2luZ1woOFwpXClcXVtkYXRhLXN0YXRlPWNvbGxhcHNlZF17d2lkdGg6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoLWljb24pICsgdmFyKC0tc3BhY2luZykqOCl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOnctXFtjYWxjXCh2YXJcKC0tc2lkZWJhci13aWR0aC1pY29uXClcKy0tc3BhY2luZ1woOFwpXCsycHhcKVxdW2RhdGEtc3RhdGU9Y29sbGFwc2VkXXt3aWR0aDpjYWxjKHZhcigtLXNpZGViYXItd2lkdGgtaWNvbikgKyB2YXIoLS1zcGFjaW5nKSo4ICsgMnB4KX0uZGF0YS1cW3N0YXRlXD1jb2xsYXBzZWRcXVw6Y3Vyc29yLWUtcmVzaXplW2RhdGEtc3RhdGU9Y29sbGFwc2VkXXtjdXJzb3I6ZS1yZXNpemV9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOmN1cnNvci13LXJlc2l6ZVtkYXRhLXN0YXRlPWNvbGxhcHNlZF17Y3Vyc29yOnctcmVzaXplfS5kYXRhLVxbc3RhdGVcPWRlbGF5ZWQtb3BlblxdXDphbmltYXRlLVxbc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPWRlbGF5ZWQtb3Blbl17YW5pbWF0aW9uOnNjYWxlLWluIC4xcyBlYXNlLW91dH0uZGF0YS1cW3N0YXRlXD1oaWRkZW5cXVw6YW5pbWF0ZS1cW2ZhZGUtb3V0XzEwMG1zX2Vhc2UtaW5cXVtkYXRhLXN0YXRlPWhpZGRlbl17YW5pbWF0aW9uOmZhZGUtb3V0IC4xcyBlYXNlLWlufS5kYXRhLVxbc3RhdGVcPWhpZGRlblxdXDpvcGFjaXR5LTBbZGF0YS1zdGF0ZT1oaWRkZW5de29wYWNpdHk6MH0uZGF0YS1cW3N0YXRlXD1pbmFjdGl2ZVxdXDp0ZXh0LW11dGVkW2RhdGEtc3RhdGU9aW5hY3RpdmVde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDpkYXRhLVxbc3RhdGVcPWluYWN0aXZlXF1cOm5vdC1kaXNhYmxlZFw6dGV4dC1kZWZhdWx0OmhvdmVyW2RhdGEtc3RhdGU9aW5hY3RpdmVdOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLXVpLXRleHQpfX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtjYXJvdXNlbC1pbnZlcnNlLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF1bZGF0YS1zdGF0ZT1pbmRldGVybWluYXRlXXthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZS12ZXJ0aWNhbCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtjYXJvdXNlbC1pbnZlcnNlXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF1bZGF0YS1zdGF0ZT1pbmRldGVybWluYXRlXXthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtjYXJvdXNlbC12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOmNhcm91c2VsLXZlcnRpY2FsIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlfS5kYXRhLVxbc3RhdGVcPWluZGV0ZXJtaW5hdGVcXVw6YW5pbWF0ZS1cW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF1bZGF0YS1zdGF0ZT1pbmRldGVybWluYXRlXXthbmltYXRpb246Y2Fyb3VzZWwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmRhdGEtXFtzdGF0ZVw9aW5kZXRlcm1pbmF0ZVxdXDphbmltYXRlLVxbZWxhc3RpYy12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOmVsYXN0aWMtdmVydGljYWwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmRhdGEtXFtzdGF0ZVw9aW5kZXRlcm1pbmF0ZVxdXDphbmltYXRlLVxbZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOmVsYXN0aWMgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmRhdGEtXFtzdGF0ZVw9aW5kZXRlcm1pbmF0ZVxdXDphbmltYXRlLVxbc3dpbmctdmVydGljYWxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXVtkYXRhLXN0YXRlPWluZGV0ZXJtaW5hdGVde2FuaW1hdGlvbjpzd2luZy12ZXJ0aWNhbCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtzd2luZ18yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOnN3aW5nIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YW5pbWF0ZS1cW2FjY29yZGlvbi1kb3duXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246YWNjb3JkaW9uLWRvd24gLjJzIGVhc2Utb3V0fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YW5pbWF0ZS1cW2NvbGxhcHNpYmxlLWRvd25fMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpjb2xsYXBzaWJsZS1kb3duIC4ycyBlYXNlLW91dH0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmFuaW1hdGUtXFtmYWRlLWluXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246ZmFkZS1pbiAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzY2FsZS1pbiAuMXMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2NhbGUtaW5fMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzY2FsZS1pbiAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2xpZGUtaW4tZnJvbS1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzbGlkZS1pbi1mcm9tLWJvdHRvbSAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2xpZGUtaW4tZnJvbS1sZWZ0XzIwMG1zX2Vhc2UtaW4tb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246c2xpZGUtaW4tZnJvbS1sZWZ0IC4ycyBlYXNlLWluLW91dH0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmFuaW1hdGUtXFtzbGlkZS1pbi1mcm9tLXJpZ2h0XzIwMG1zX2Vhc2UtaW4tb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246c2xpZGUtaW4tZnJvbS1yaWdodCAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2xpZGUtaW4tZnJvbS10b3BfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzbGlkZS1pbi1mcm9tLXRvcCAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbdG9hc3Qtc2xpZGUtaW4tZnJvbS1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjp0b2FzdC1zbGlkZS1pbi1mcm9tLWJvdHRvbSAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbdG9hc3Qtc2xpZGUtaW4tZnJvbS10b3BfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjp0b2FzdC1zbGlkZS1pbi1mcm9tLXRvcCAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZy1lbGV2YXRlZFtkYXRhLXN0YXRlPW9wZW5de2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLXN0YXRlPW9wZW5de2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcik7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1pbmZvXC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJlZm9yZVw6YmctaW5mb1wvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZWZvcmVcOmJnLXByaW1hcnlcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1wcmltYXJ5XC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJlZm9yZVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1zZWNvbmRhcnlcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZWZvcmVcOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1zdWNjZXNzXC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJlZm9yZVw6Ymctd2FybmluZ1wvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZWZvcmVcOmJnLXdhcm5pbmdcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6ZGF0YS1cW3B1bHNpbmdcPWV2ZW5cXVw6YW5pbWF0ZS1cW3RvYXN0LXB1bHNlLWJfMzAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5dW2RhdGEtcHVsc2luZz1ldmVuXXthbmltYXRpb246dG9hc3QtcHVsc2UtYiAuM3MgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpkYXRhLVxbcHVsc2luZ1w9b2RkXF1cOmFuaW1hdGUtXFt0b2FzdC1wdWxzZS1hXzMwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXVtkYXRhLXB1bHNpbmc9b2RkXXthbmltYXRpb246dG9hc3QtcHVsc2UtYSAuM3MgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9dW5jaGVja2VkXF1cOnRyYW5zbGF0ZS14LTBbZGF0YS1zdGF0ZT11bmNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6YmctYWNjZW50ZWRbZGF0YS1zdGF0ZT11bmNoZWNrZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpfS5kYXRhLVxbc3RhdGVcPXZpc2libGVcXVw6YW5pbWF0ZS1cW2ZhZGUtaW5fMTAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPXZpc2libGVde2FuaW1hdGlvbjpmYWRlLWluIC4xcyBlYXNlLW91dH0uZGF0YS1cW3N3aXBlXD1jYW5jZWxcXVw6dHJhbnNsYXRlLXgtMFtkYXRhLXN3aXBlPWNhbmNlbF17LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjApO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3dpcGVcPWNhbmNlbFxdXDp0cmFuc2xhdGUteS0wW2RhdGEtc3dpcGU9Y2FuY2VsXXstLXR3LXRyYW5zbGF0ZS15OmNhbGModmFyKC0tc3BhY2luZykqMCk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzd2lwZVw9ZW5kXF1cOnRyYW5zbGF0ZS14LVwoLS1yZWthLXRvYXN0LXN3aXBlLWVuZC14XClbZGF0YS1zd2lwZT1lbmRdey0tdHctdHJhbnNsYXRlLXg6dmFyKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteCk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzd2lwZVw9ZW5kXF1cOnRyYW5zbGF0ZS15LVwoLS1yZWthLXRvYXN0LXN3aXBlLWVuZC15XClbZGF0YS1zd2lwZT1lbmRdey0tdHctdHJhbnNsYXRlLXk6dmFyKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzd2lwZVw9ZW5kXF1cOmFuaW1hdGUtXFt0b2FzdC1zbGlkZS1kb3duXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zd2lwZT1lbmRde2FuaW1hdGlvbjp0b2FzdC1zbGlkZS1kb3duIC4ycyBlYXNlLW91dH0uZGF0YS1cW3N3aXBlXD1lbmRcXVw6YW5pbWF0ZS1cW3RvYXN0LXNsaWRlLWxlZnRfMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN3aXBlPWVuZF17YW5pbWF0aW9uOnRvYXN0LXNsaWRlLWxlZnQgLjJzIGVhc2Utb3V0fS5kYXRhLVxbc3dpcGVcPWVuZFxdXDphbmltYXRlLVxbdG9hc3Qtc2xpZGUtcmlnaHRfMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN3aXBlPWVuZF17YW5pbWF0aW9uOnRvYXN0LXNsaWRlLXJpZ2h0IC4ycyBlYXNlLW91dH0uZGF0YS1cW3N3aXBlXD1lbmRcXVw6YW5pbWF0ZS1cW3RvYXN0LXNsaWRlLXVwXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zd2lwZT1lbmRde2FuaW1hdGlvbjp0b2FzdC1zbGlkZS11cCAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzd2lwZVw9bW92ZVxdXDp0cmFuc2xhdGUteC1cKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXhcKVtkYXRhLXN3aXBlPW1vdmVdey0tdHctdHJhbnNsYXRlLXg6dmFyKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3dpcGVcPW1vdmVcXVw6dHJhbnNsYXRlLXktXCgtLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15XClbZGF0YS1zd2lwZT1tb3ZlXXstLXR3LXRyYW5zbGF0ZS15OnZhcigtLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N3aXBlXD1tb3ZlXF1cOnRyYW5zaXRpb24tbm9uZVtkYXRhLXN3aXBlPW1vdmVde3RyYW5zaXRpb24tcHJvcGVydHk6bm9uZX1AbWVkaWEgbm90IGFsbCBhbmQgKG1pbi13aWR0aDo0MHJlbSl7Lm1heC1zbVw6ZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX1AbWVkaWEobWluLXdpZHRoOjQwcmVtKXsuc21cOi1zdGFydC0xMntpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSotMTIpfS5zbVw6LWVuZC0xMntpbnNldC1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLTEyKX0uc21cOi10b3AtMTJ7dG9wOmNhbGModmFyKC0tc3BhY2luZykqLTEyKX0uc21cOi1ib3R0b20tMTJ7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLTEyKX0uc21cOmNvbC1zcGFuLTJ7Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMn0uc21cOmJsb2Nre2Rpc3BsYXk6YmxvY2t9LnNtXDpmbGV4e2Rpc3BsYXk6ZmxleH0uc21cOmdyaWR7ZGlzcGxheTpncmlkfS5zbVw6aC1cWzI4cmVtXF17aGVpZ2h0OjI4cmVtfS5zbVw6bWF4LWgtXFtjYWxjXCgxMDBkdmgtNHJlbVwpXF17bWF4LWhlaWdodDpjYWxjKDEwMGR2aCAtIDRyZW0pfS5zbVw6dy1cKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGhcKXt3aWR0aDp2YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCl9LnNtXDp3LTk2e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOTYpfS5zbVw6bWF4LXctM3hse21heC13aWR0aDp2YXIoLS1jb250YWluZXItM3hsKX0uc21cOnNjcm9sbC1tdC02e3Njcm9sbC1tYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqNil9LnNtXDpncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LnNtXDpmbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LnNtXDppdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5zbVw6aXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5zbVw6Z2FwLTZ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqNil9LnNtXDpnYXAtMTZ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMTYpfTp3aGVyZSguc21cOnNwYWNlLXktMD46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tYmxvY2stZW5kOmNhbGModmFyKC0tc3BhY2luZykqMCooMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYmxvY2stc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfTp3aGVyZSguc21cOnNwYWNlLXgtND46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS14LXJldmVyc2U6MDttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjQqKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7bWFyZ2luLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjQqdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSl9LnNtXDpnYXAteS0xMntyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMTIpfS5zbVw6Z2FwLXktMjR7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjI0KX0uc21cOnAtMHtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMCl9LnNtXDpwLTZ7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5zbVw6cHgtNntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5zbVw6cHgtOHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5zbVw6cHgtMTJ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LnNtXDpweS04e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uc21cOnB5LTI0e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyNCl9LnNtXDpweS0zMntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMzIpfS5zbVw6dGV4dC0yeGx7Zm9udC1zaXplOnZhcigtLXRleHQtMnhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtMnhsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC0zeGx7Zm9udC1zaXplOnZhcigtLXRleHQtM3hsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtM3hsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC00eGx7Zm9udC1zaXplOnZhcigtLXRleHQtNHhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtNHhsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC01eGx7Zm9udC1zaXplOnZhcigtLXRleHQtNXhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtNXhsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC03eGx7Zm9udC1zaXplOnZhcigtLXRleHQtN3hsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtN3hsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC1sZ3tmb250LXNpemU6dmFyKC0tdGV4dC1sZyk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LWxnLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC14bFwvOHtmb250LXNpemU6dmFyKC0tdGV4dC14bCk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uc21cOnNoYWRvdy1sZ3stLXR3LXNoYWRvdzowIDEwcHggMTVweCAtM3B4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLDAgNHB4IDZweCAtNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpfS5zbVw6cmluZywuc21cOnNoYWRvdy1sZ3tib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNtXDpyaW5ney0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcil9fUBtZWRpYShtaW4td2lkdGg6NDhyZW0pey5tZFw6bXQtYXV0b3ttYXJnaW4tdG9wOmF1dG99Lm1kXDpoaWRkZW57ZGlzcGxheTpub25lfS5tZFw6dGFibGV7ZGlzcGxheTp0YWJsZX0ubWRcOmgtZnVsbHtoZWlnaHQ6MTAwJX0ubWRcOmNvbHVtbnMtMnstbW96LWNvbHVtbnM6Mjtjb2x1bW4tY291bnQ6Mn0ubWRcOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0ubWRcOnB0LTZ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubWRcOnRleHQtc217Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0ubWRcOnRleHQteHN7Zm9udC1zaXplOnZhcigtLXRleHQteHMpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14cy0tbGluZS1oZWlnaHQpKX19QG1lZGlhKG1pbi13aWR0aDo2NHJlbSl7LmxnXDpzdGlja3l7cG9zaXRpb246c3RpY2t5fS5sZ1w6dG9wLVwoLS11aS1oZWFkZXItaGVpZ2h0XCl7dG9wOnZhcigtLXVpLWhlYWRlci1oZWlnaHQpfS5sZ1w6ei1cWzFcXXt6LWluZGV4OjF9LmxnXDpvcmRlci0xe29yZGVyOjF9LmxnXDpvcmRlci0ye29yZGVyOjJ9LmxnXDpvcmRlci0ze29yZGVyOjN9LmxnXDpvcmRlci1sYXN0e29yZGVyOjk5OTl9LmxnXDpjb2wtc3Bhbi0xe2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDF9LmxnXDpjb2wtc3Bhbi0ye2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDJ9LmxnXDpjb2wtc3Bhbi02e2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDZ9LmxnXDpjb2wtc3Bhbi04e2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDh9LmxnXDpjb2wtc3Bhbi0xMHtncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTB9LmxnXDpteC1hdXRve21hcmdpbi1pbmxpbmU6YXV0b30ubGdcOi1tcy00e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNCl9LmxnXDptcy1hdXRve21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0b30ubGdcOm1lLTB7bWFyZ2luLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGdcOm10LTB7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5sZ1w6bXQtMTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0ubGdcOmJsb2Nre2Rpc3BsYXk6YmxvY2t9LmxnXDpmbGV4e2Rpc3BsYXk6ZmxleH0ubGdcOmdyaWR7ZGlzcGxheTpncmlkfS5sZ1w6aGlkZGVue2Rpc3BsYXk6bm9uZX0ubGdcOmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LmxnXDptYXgtaC1cW2NhbGNcKDEwMHZoLXZhclwoLS11aS1oZWFkZXItaGVpZ2h0XClcKVxde21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIHZhcigtLXVpLWhlYWRlci1oZWlnaHQpKX0ubGdcOnctXCgtLXdpZHRoXCl7d2lkdGg6dmFyKC0td2lkdGgpfS5sZ1w6dy1mdWxse3dpZHRoOjEwMCV9LmxnXDptYXgtdy0yeGx7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci0yeGwpfS5sZ1w6bWF4LXctNHhse21heC13aWR0aDp2YXIoLS1jb250YWluZXItNHhsKX0ubGdcOm1heC13LXhze21heC13aWR0aDp2YXIoLS1jb250YWluZXIteHMpfS5sZ1w6ZmxleC0xe2ZsZXg6MX0ubGdcOnNjYWxlLVxbMVwuMVxde3NjYWxlOjEuMX0ubGdcOmNvbHVtbnMtM3stbW96LWNvbHVtbnM6Mztjb2x1bW4tY291bnQ6M30ubGdcOmdyaWQtY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0ubGdcOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0ubGdcOmdyaWQtY29scy0xMHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDEwLG1pbm1heCgwLDFmcikpfS5sZ1w6Z3JpZC1jb2xzLVxbcmVwZWF0XCh2YXJcKC0tY291bnRcKVwsbWlubWF4XCgwXCwxZnJcKVwpXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCh2YXIoLS1jb3VudCksbWlubWF4KDAsMWZyKSl9LmxnXDpmbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmxnXDppdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5sZ1w6anVzdGlmeS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5sZ1w6anVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubGdcOmp1c3RpZnktZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ubGdcOmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmxnXDpnYXAtMTB7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMTApfS5sZ1w6Z2FwLTEye2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0ubGdcOmdhcC14LTN7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMyk7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5sZ1w6Z2FwLXgtMTN7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMTMpO2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMyl9LmxnXDpnYXAteS0xNntyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMTYpfTp3aGVyZSgubGdcOmRpdmlkZS14Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LWRpdmlkZS14LXJldmVyc2U6MDtib3JkZXItaW5saW5lLWVuZC13aWR0aDpjYWxjKDFweCooMSAtIHZhcigtLXR3LWRpdmlkZS14LXJldmVyc2UpKSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDpjYWxjKDFweCp2YXIoLS10dy1kaXZpZGUteC1yZXZlcnNlKSk7Ym9yZGVyLWlubGluZS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpfTp3aGVyZSgubGdcOmRpdmlkZS15LTA+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctZGl2aWRlLXktcmV2ZXJzZTowO2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOmNhbGMoMHB4KigxIC0gdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpKTtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDpjYWxjKDBweCp2YXIoLS10dy1kaXZpZGUteS1yZXZlcnNlKSl9LmxnXDpib3JkZXItdHtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LmxnXDpib3JkZXItYntib3JkZXItYm90dG9tLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LmxnXDpib3JkZXItZGVmYXVsdHtib3JkZXItY29sb3I6dmFyKC0tdWktYm9yZGVyKX0ubGdcOnAtNntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqNil9LmxnXDpwLTh7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5sZ1w6cHgtMHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5sZ1w6cHgtOHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5sZ1w6cHgtMTZ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxNil9LmxnXDpweS00e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ubGdcOnB5LTEye3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LmxnXDpweS0yNHtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMjQpfS5sZ1w6cHktMzJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjMyKX0ubGdcOnB5LTQwe3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0MCl9LmxnXDpwcy00e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LmxnXDpwZS02XC41e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjYuNSl9LmxnXDpwci02e3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubGdcOnBiLTB7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGdcOnRleHQtNXhse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTV4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTV4bC0tbGluZS1oZWlnaHQpKX0ubGdcOm5vdC1sYXN0XDpib3JkZXItZTpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1pbmxpbmUtZW5kLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MXB4fS5sZ1w6bm90LWxhc3RcOmJvcmRlci1kZWZhdWx0Om5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9fUBtZWRpYShtaW4td2lkdGg6ODByZW0pey54bFw6Y29sLXNwYW4tMntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfS54bFw6bXQtMHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqMCl9LnhsXDptYi0we21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ueGxcOmdyaWR7ZGlzcGxheTpncmlkfS54bFw6Z3JpZC1jb2xzLTN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpfS54bFw6Z2FwLTh7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnhsXDpwLTEwe3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9fS5ydGxcOnJpZ2h0LVxbY2FsY1woMTAwXCUtdmFyXCgtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWxlZnRcKS12YXJcKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGhcKVwpXF06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7cmlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtbGVmdCkgLSB2YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCkpfS5ydGxcOmxlZnQtYXV0bzp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXtsZWZ0OmF1dG99LnJ0bFw6dHJhbnNsYXRlLXgtXFs0cHhcXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OjRweDt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0ucnRsXDotcm90YXRlLTkwOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICope3JvdGF0ZTotOTBkZWd9LnJ0bFw6YW5pbWF0ZS1cW21hcnF1ZWUtcnRsX3ZhclwoLS1kdXJhdGlvblwpX2xpbmVhcl9pbmZpbml0ZVxdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICope2FuaW1hdGlvbjptYXJxdWVlLXJ0bCB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5ydGxcOmFuaW1hdGUtXFttYXJxdWVlLXZlcnRpY2FsLXJ0bF92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXthbmltYXRpb246bWFycXVlZS12ZXJ0aWNhbC1ydGwgdmFyKC0tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZX0ucnRsXDphbmltYXRlLVxbc2hpbW1lci1ydGxfdmFyXCgtLWR1cmF0aW9uXClfbGluZWFyX2luZmluaXRlXF06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7YW5pbWF0aW9uOnNoaW1tZXItcnRsIHZhcigtLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGV9LnJ0bFw6dGV4dC1yaWdodDp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXt0ZXh0LWFsaWduOnJpZ2h0fS5ydGxcOmFmdGVyXDphbmltYXRlLVxbY2Fyb3VzZWwtaW52ZXJzZS1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKTphZnRlcnthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZS1ydGwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0ucnRsXDphZnRlclw6YW5pbWF0ZS1cW2Nhcm91c2VsLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICopOmFmdGVye2FuaW1hdGlvbjpjYXJvdXNlbC1ydGwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnJ0bFw6LXRyYW5zbGF0ZS14LTNbZGF0YS1zdGF0ZT1jaGVja2VkXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqLTMpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6cnRsXDotdHJhbnNsYXRlLXgtM1wuNVtkYXRhLXN0YXRlPWNoZWNrZWRdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICopey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSotMy41KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnJ0bFw6LXRyYW5zbGF0ZS14LTRbZGF0YS1zdGF0ZT1jaGVja2VkXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqLTQpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6cnRsXDotdHJhbnNsYXRlLXgtNFwuNVtkYXRhLXN0YXRlPWNoZWNrZWRdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICopey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNC41KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnJ0bFw6LXRyYW5zbGF0ZS14LTVbZGF0YS1zdGF0ZT1jaGVja2VkXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqLTUpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWluZGV0ZXJtaW5hdGVcXVw6cnRsXDphbmltYXRlLVxbY2Fyb3VzZWwtaW52ZXJzZS1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXVtkYXRhLXN0YXRlPWluZGV0ZXJtaW5hdGVdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICope2FuaW1hdGlvbjpjYXJvdXNlbC1pbnZlcnNlLXJ0bCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOnJ0bFw6YW5pbWF0ZS1cW2Nhcm91c2VsLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7YW5pbWF0aW9uOmNhcm91c2VsLXJ0bCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6cnRsXDotdHJhbnNsYXRlLXgtMFtkYXRhLXN0YXRlPXVuY2hlY2tlZF06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjApO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXJrXDpibG9jazp3aGVyZSguZGFyaywuZGFyayAqKXtkaXNwbGF5OmJsb2NrfS5kYXJrXDpoaWRkZW46d2hlcmUoLmRhcmssLmRhcmsgKil7ZGlzcGxheTpub25lfS5kYXJrXDppbmxpbmUtYmxvY2s6d2hlcmUoLmRhcmssLmRhcmsgKil7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmRhcmtcOmZvY3VzLXZpc2libGVcOm91dGxpbmUtbm9uZTp3aGVyZSguZGFyaywuZGFyayAqKTpmb2N1cy12aXNpYmxley0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uZGFya1w6ZGlzYWJsZWRcOmJnLXRyYW5zcGFyZW50OndoZXJlKC5kYXJrLC5kYXJrICopOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6IzAwMDB9QG1lZGlhKGhvdmVyOmhvdmVyKXsuZGFya1w6aG92ZXJcOmRpc2FibGVkXDpiZy10cmFuc3BhcmVudDp3aGVyZSguZGFyaywuZGFyayAqKTpob3ZlcjpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfX0uZGFya1w6YXJpYS1kaXNhYmxlZFw6YmctdHJhbnNwYXJlbnQ6d2hlcmUoLmRhcmssLmRhcmsgKilbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfUBtZWRpYShob3Zlcjpob3Zlcil7LmRhcmtcOmhvdmVyXDphcmlhLWRpc2FibGVkXDpiZy10cmFuc3BhcmVudDp3aGVyZSguZGFyaywuZGFyayAqKTpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6IzAwMDB9fS5cW1wmX1wuUHJvc2VNaXJyb3JcXVw6cHgtNCAuUHJvc2VNaXJyb3J7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uXFtcJl9cLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZVw6bm90XChpbWdcKVw6bm90XChwcmVcKVw6bm90XChcW2RhdGEtbm9kZS12aWV3LXdyYXBwZXJcXVwpXF1cOmJnLXByaW1hcnlcLzIwIC5Qcm9zZU1pcnJvci1zZWxlY3RlZG5vZGU6bm90KGltZyk6bm90KHByZSk6bm90KFtkYXRhLW5vZGUtdmlldy13cmFwcGVyXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5cW1wmX1wuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXDpub3RcKGltZ1wpXDpub3RcKHByZVwpXDpub3RcKFxbZGF0YS1ub2RlLXZpZXctd3JhcHBlclxdXClcXVw6YmctcHJpbWFyeVwvMjAgLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZTpub3QoaW1nKTpub3QocHJlKTpub3QoW2RhdGEtbm9kZS12aWV3LXdyYXBwZXJdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAyMCUsdHJhbnNwYXJlbnQpfX0uXFtcJl9cLm1lbnRpb25cXVw6Zm9udC1tZWRpdW0gLm1lbnRpb257LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LlxbXCZfXC5tZW50aW9uXF1cOnRleHQtcHJpbWFyeSAubWVudGlvbntjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uXFtcJl9cOmlzXChoMVwsaDJcLGgzXCxoNFwsaDVcLGg2XClcXVw6Zm9udC1ib2xkIDppcyhoMSxoMixoMyxoNCxoNSxoNil7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKX0uXFtcJl9cOmlzXChoMVwsaDJcLGgzXCxoNFwsaDVcLGg2XClcXVw6dGV4dC1oaWdobGlnaHRlZCA6aXMoaDEsaDIsaDMsaDQsaDUsaDYpe2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5cW1wmX1w6aXNcKGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVw+Y29kZVxdXDpib3JkZXItZGFzaGVkIDppcyhoMSxoMixoMyxoNCxoNSxoNik+Y29kZXstLXR3LWJvcmRlci1zdHlsZTpkYXNoZWQ7Ym9yZGVyLXN0eWxlOmRhc2hlZH0uXFtcJl9cOmlzXChoMVwsaDJcLGgzXCxoNFwsaDVcLGg2XClcPmNvZGVcXVw6Zm9udC1ib2xkIDppcyhoMSxoMixoMyxoNCxoNSxoNik+Y29kZXstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOnBvaW50ZXItZXZlbnRzLW5vbmUgOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOmZsb2F0LXN0YXJ0IDppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGQ6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ZmxvYXQ6aW5saW5lLXN0YXJ0fS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOmgtMCA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOnRleHQtZGltbWVkIDppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGQ6YmVmb3Jle2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOmNvbnRlbnQtXFthdHRyXChkYXRhLXBsYWNlaG9sZGVyXClcXSA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkOmJlZm9yZXstLXR3LWNvbnRlbnQ6YXR0cihkYXRhLXBsYWNlaG9sZGVyKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpwb2ludGVyLWV2ZW50cy1ub25lIDppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpmbG9hdC1zdGFydCA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHk6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ZmxvYXQ6aW5saW5lLXN0YXJ0fS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpoLTAgOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVtcHR5OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDp0ZXh0LWRpbW1lZCA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHk6YmVmb3Jle2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpjb250ZW50LVxbYXR0clwoZGF0YS1wbGFjZWhvbGRlclwpXF0gOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVtcHR5OmJlZm9yZXstLXR3LWNvbnRlbnQ6YXR0cihkYXRhLXBsYWNlaG9sZGVyKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHVsXCxvbFwpXF1cOnBzLTYgOmlzKHVsLG9sKXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5cW1wmX1xbZGF0YS10eXBlXD1ob3Jpem9udGFsUnVsZVxdXF1cOm15LTggW2RhdGEtdHlwZT1ob3Jpem9udGFsUnVsZV17bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqOCl9LlxbXCZfXFtkYXRhLXR5cGVcPWhvcml6b250YWxSdWxlXF1cXVw6cHktMiBbZGF0YS10eXBlPWhvcml6b250YWxSdWxlXXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMil9LlxbXCZfYVxdXDpib3JkZXItYiBhe2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uXFtcJl9hXF1cOmJvcmRlci10cmFuc3BhcmVudCBhe2JvcmRlci1jb2xvcjojMDAwMH0uXFtcJl9hXF1cOmZvbnQtbWVkaXVtIGF7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LlxbXCZfYVxdXDp0ZXh0LXByaW1hcnkgYXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uXFtcJl9hXF1cOnRyYW5zaXRpb24tY29sb3JzIGF7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfUBtZWRpYShob3Zlcjpob3Zlcil7LlxbXCZfYVxdXDpob3Zlclw6Ym9yZGVyLXByaW1hcnkgYTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9fS5cW1wmX2FcOmhvdmVyXD5jb2RlXF1cOmJvcmRlci1wcmltYXJ5IGE6aG92ZXI+Y29kZXtib3JkZXItY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LlxbXCZfYVw6aG92ZXJcPmNvZGVcXVw6dGV4dC1wcmltYXJ5IGE6aG92ZXI+Y29kZXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uXFtcJl9hXD5jb2RlXF1cOmJvcmRlci1kYXNoZWQgYT5jb2Rley0tdHctYm9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItc3R5bGU6ZGFzaGVkfS5cW1wmX2FcPmNvZGVcXVw6dHJhbnNpdGlvbi1jb2xvcnMgYT5jb2Rle3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10bzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0uXFtcJl9ibG9ja3F1b3RlXF1cOmJvcmRlci1zLTQgYmxvY2txdW90ZXtib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDo0cHh9LlxbXCZfYmxvY2txdW90ZVxdXDpib3JkZXItYWNjZW50ZWQgYmxvY2txdW90ZXtib3JkZXItY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uXFtcJl9ibG9ja3F1b3RlXF1cOnBzLTQgYmxvY2txdW90ZXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5cW1wmX2Jsb2NrcXVvdGVcXVw6aXRhbGljIGJsb2NrcXVvdGV7Zm9udC1zdHlsZTppdGFsaWN9LlxbXCZfY29kZVxdXDppbmxpbmUtYmxvY2sgY29kZXtkaXNwbGF5OmlubGluZS1ibG9ja30uXFtcJl9jb2RlXF1cOnJvdW5kZWQtbWQgY29kZXtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoxLjUpfS5cW1wmX2NvZGVcXVw6Ym9yZGVyIGNvZGV7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjFweH0uXFtcJl9jb2RlXF1cOmJvcmRlci1tdXRlZCBjb2Rle2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItbXV0ZWQpfS5cW1wmX2NvZGVcXVw6YmctbXV0ZWQgY29kZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLW11dGVkKX0uXFtcJl9jb2RlXF1cOnB4LTFcLjUgY29kZXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LlxbXCZfY29kZVxdXDpweS0wXC41IGNvZGV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uXFtcJl9jb2RlXF1cOmZvbnQtbW9ubyBjb2Rle2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyl9LlxbXCZfY29kZVxdXDp0ZXh0LXNtIGNvZGV7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0uXFtcJl9jb2RlXF1cOmZvbnQtbWVkaXVtIGNvZGV7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LlxbXCZfY29kZVxdXDp0ZXh0LWhpZ2hsaWdodGVkIGNvZGV7Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LlxbXCZfaDFcXVw6dGV4dC0zeGwgaDF7Zm9udC1zaXplOnZhcigtLXRleHQtM3hsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtM3hsLS1saW5lLWhlaWdodCkpfS5cW1wmX2gyXF1cOnRleHQtMnhsIGgye2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTJ4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQpKX0uXFtcJl9oMlw+Y29kZVxdXDp0ZXh0LXhsXC82IGgyPmNvZGV7Zm9udC1zaXplOnZhcigtLXRleHQteGwpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNil9LlxbXCZfaDNcXVw6dGV4dC14bCBoM3tmb250LXNpemU6dmFyKC0tdGV4dC14bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXhsLS1saW5lLWhlaWdodCkpfS5cW1wmX2gzXD5jb2RlXF1cOnRleHQtbGdcLzUgaDM+Y29kZXtmb250LXNpemU6dmFyKC0tdGV4dC1sZyk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0uXFtcJl9oNFxdXDp0ZXh0LWxnIGg0e2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LWxnKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtbGctLWxpbmUtaGVpZ2h0KSl9LlxbXCZfaDVcXVw6dGV4dC1iYXNlIGg1LC5cW1wmX2g2XF1cOnRleHQtYmFzZSBoNntmb250LXNpemU6dmFyKC0tdGV4dC1iYXNlKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtYmFzZS0tbGluZS1oZWlnaHQpKX0uXFtcJl9oclxdXDpib3JkZXItdCBocntib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LlxbXCZfaHJcXVw6Ym9yZGVyLWRlZmF1bHQgaHJ7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9LlxbXCZfaW1nXF1cOmJsb2NrIGltZ3tkaXNwbGF5OmJsb2NrfS5cW1wmX2ltZ1xdXDptYXgtdy1mdWxsIGltZ3ttYXgtd2lkdGg6MTAwJX0uXFtcJl9pbWdcXVw6cm91bmRlZC1tZCBpbWd7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMS41KX0uXFtcJl9pbWdcLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZVxdXDpvdXRsaW5lLTIgaW1nLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MnB4fS5cW1wmX2ltZ1wuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXF1cOm91dGxpbmUtcHJpbWFyeSBpbWcuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2Rle291dGxpbmUtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LlxbXCZfbGlcXVw6bXktMVwuNSBsaXttYXJnaW4tYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5cW1wmX2xpXF1cOnBzLTFcLjUgbGl7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5cW1wmX29sXF1cOmxpc3QtZGVjaW1hbCBvbHtsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbH0uXFtcJl9vbFxdXDptYXJrZXJcOnRleHQtbXV0ZWQgb2wgOjptYXJrZXJ7Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LlxbXCZfb2xcXVw6bWFya2VyXDp0ZXh0LW11dGVkIG9sOjptYXJrZXJ7Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LlxbXCZfb2xcXVw6bWFya2VyXDp0ZXh0LW11dGVkIG9sIDo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciwuXFtcJl9vbFxdXDptYXJrZXJcOnRleHQtbXV0ZWQgb2w6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LlxbXCZfcFxdXDpsZWFkaW5nLTcgcHstLXR3LWxlYWRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSo3KTtsaW5lLWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5cW1wmX3ByZVxdXDpvdmVyZmxvdy14LWF1dG8gcHJle292ZXJmbG93LXg6YXV0b30uXFtcJl9wcmVcXVw6cm91bmRlZC1tZCBwcmV7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMS41KX0uXFtcJl9wcmVcXVw6Ym9yZGVyIHByZXtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5cW1wmX3ByZVxdXDpib3JkZXItbXV0ZWQgcHJle2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItbXV0ZWQpfS5cW1wmX3ByZVxdXDpiZy1tdXRlZCBwcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1tdXRlZCl9LlxbXCZfcHJlXF1cOnB4LTQgcHJle3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqNCl9LlxbXCZfcHJlXF1cOnB5LTMgcHJle3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uXFtcJl9wcmVcXVw6dGV4dC1zbVwvNiBwcmV7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNil9LlxbXCZfcHJlXF1cOmJyZWFrLXdvcmRzIHByZXtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LlxbXCZfcHJlXF1cOndoaXRlc3BhY2UtcHJlLXdyYXAgcHJle3doaXRlLXNwYWNlOnByZS13cmFwfS5cW1wmX3ByZV9jb2RlXF1cOmlubGluZSBwcmUgY29kZXtkaXNwbGF5OmlubGluZX0uXFtcJl9wcmVfY29kZVxdXDpyb3VuZGVkLW5vbmUgcHJlIGNvZGV7Ym9yZGVyLXJhZGl1czowfS5cW1wmX3ByZV9jb2RlXF1cOmJvcmRlci0wIHByZSBjb2Rle2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDowfS5cW1wmX3ByZV9jb2RlXF1cOmJnLXRyYW5zcGFyZW50IHByZSBjb2Rle2JhY2tncm91bmQtY29sb3I6IzAwMDB9LlxbXCZfcHJlX2NvZGVcXVw6cC0wIHByZSBjb2Rle3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uXFtcJl9wcmVfY29kZVxdXDp0ZXh0LWluaGVyaXQgcHJlIGNvZGV7Y29sb3I6aW5oZXJpdH0uXFtcJl91bFxdXDpsaXN0LWRpc2MgdWx7bGlzdC1zdHlsZS10eXBlOmRpc2N9LlxbXCZfdWxcXVw6bWFya2VyXDp0ZXh0LVwoLS11aS1ib3JkZXItYWNjZW50ZWRcKSB1bCA6Om1hcmtlcntjb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfS5cW1wmX3VsXF1cOm1hcmtlclw6dGV4dC1cKC0tdWktYm9yZGVyLWFjY2VudGVkXCkgdWw6Om1hcmtlcntjb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfS5cW1wmX3VsXF1cOm1hcmtlclw6dGV4dC1cKC0tdWktYm9yZGVyLWFjY2VudGVkXCkgdWwgOjotd2Via2l0LWRldGFpbHMtbWFya2VyLC5cW1wmX3VsXF1cOm1hcmtlclw6dGV4dC1cKC0tdWktYm9yZGVyLWFjY2VudGVkXCkgdWw6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7Y29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uXFtcJlw6aGFzXChcW3JvbGVcPWNoZWNrYm94XF1cKVxdXDpwZS0wOmhhcyhbcm9sZT1jaGVja2JveF0pe3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5cW1wmXD5cKlw6Zmlyc3QtY2hpbGRcXVw6Y29sLXN0YXJ0LTI+OmZpcnN0LWNoaWxke2dyaWQtY29sdW1uLXN0YXJ0OjJ9LlxbXCZcPlwqXDpudGgtY2hpbGRcKDFcKVxdXDphbmltYXRlLVxbYm91bmNlXzFzX2luZmluaXRlXF0+OmZpcnN0LWNoaWxke2FuaW1hdGlvbjpib3VuY2UgMXMgaW5maW5pdGV9LlxbXCZcPlwqXDpudGgtY2hpbGRcKDJcKVxdXDphbmltYXRlLVxbYm91bmNlXzFzXzBcLjE1c19pbmZpbml0ZVxdPjpudGgtY2hpbGQoMil7YW5pbWF0aW9uOmJvdW5jZSAxcyAuMTVzIGluZmluaXRlfS5cW1wmXD5cKlw6bnRoLWNoaWxkXCgzXClcXVw6YW5pbWF0ZS1cW2JvdW5jZV8xc18wXC4zc19pbmZpbml0ZVxdPjpudGgtY2hpbGQoMyl7YW5pbWF0aW9uOmJvdW5jZSAxcyAuM3MgaW5maW5pdGV9LlxbXCZcPmFydGljbGVcXVw6bGFzdC1vZi10eXBlXDptaW4taC1cKC0tbGFzdC1tZXNzYWdlLWhlaWdodFwpPmFydGljbGU6bGFzdC1vZi10eXBle21pbi1oZWlnaHQ6dmFyKC0tbGFzdC1tZXNzYWdlLWhlaWdodCl9LlxbXCZcPmJ1dHRvblxdXDpweS0wPmJ1dHRvbntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMCl9LlxbXCZcPmRpdlxdXDptaW4tdy0wPmRpdnttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uXFtcJlw+aW5wdXRcXVw6aC0xMD5pbnB1dHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9LlxbXCZcPmlucHV0XF1cOmgtMTE+aW5wdXR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTEpfS5cW1wmXD5pbnB1dFxdXDpoLTEyPmlucHV0e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0uXFtcJlw+aW5wdXRcXVw6aC0xMz5pbnB1dHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMyl9LlxbXCZcPmlucHV0XF1cOmgtMTQ+aW5wdXR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTQpfS5cW1wmXD5tYXJrXF1cOmJnLXByaW1hcnk+bWFya3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5cW1wmXD5tYXJrXF1cOnRleHQtaW52ZXJ0ZWQ+bWFya3tjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX1AbWVkaWEoaG92ZXI6aG92ZXIpey5cW1wmXD50clxdXDpkYXRhLVxbc2VsZWN0YWJsZVw9dHJ1ZVxdXDpob3Zlclw6YmctZWxldmF0ZWRcLzUwPnRyW2RhdGEtc2VsZWN0YWJsZT10cnVlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5cW1wmXD50clxdXDpkYXRhLVxbc2VsZWN0YWJsZVw9dHJ1ZVxdXDpob3Zlclw6YmctZWxldmF0ZWRcLzUwPnRyW2RhdGEtc2VsZWN0YWJsZT10cnVlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgNTAlLHRyYW5zcGFyZW50KX19fS5cW1wmXD50clxdXDpkYXRhLVxbc2VsZWN0YWJsZVw9dHJ1ZVxdXDpmb2N1cy12aXNpYmxlXDpvdXRsaW5lLXByaW1hcnk+dHJbZGF0YS1zZWxlY3RhYmxlPXRydWVdOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX19QGtleWZyYW1lcyBhY2NvcmRpb24tdXB7MCV7aGVpZ2h0OnZhcigtLXJla2EtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0KX10b3toZWlnaHQ6MH19QGtleWZyYW1lcyBhY2NvcmRpb24tZG93bnswJXtoZWlnaHQ6MH10b3toZWlnaHQ6dmFyKC0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQpfX1Aa2V5ZnJhbWVzIGNvbGxhcHNpYmxlLXVwezAle2hlaWdodDp2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KX10b3toZWlnaHQ6MH19QGtleWZyYW1lcyBjb2xsYXBzaWJsZS1kb3duezAle2hlaWdodDowfXRve2hlaWdodDp2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KX19QGtleWZyYW1lcyB0b2FzdC1zbGlkZS1pbi1mcm9tLXRvcHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9dG97dHJhbnNmb3JtOnZhcigtLXRyYW5zZm9ybSl9fUBrZXlmcmFtZXMgdG9hc3Qtc2xpZGUtaW4tZnJvbS1ib3R0b217MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9dG97dHJhbnNmb3JtOnZhcigtLXRyYW5zZm9ybSl9fUBrZXlmcmFtZXMgdG9hc3Qtc2xpZGUtdXB7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSB0cmFuc2xhdGVZKHZhcigtLXRyYW5zbGF0ZSkpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMCkgdHJhbnNsYXRlWShjYWxjKHZhcigtLXRyYW5zbGF0ZSkgLSAxMDAlKSl9fUBrZXlmcmFtZXMgdG9hc3Qtc2xpZGUtZG93bnswJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApIHRyYW5zbGF0ZVkodmFyKC0tdHJhbnNsYXRlKSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSB0cmFuc2xhdGVZKGNhbGModmFyKC0tdHJhbnNsYXRlKSArIDEwMCUpKX19QGtleWZyYW1lcyB0b2FzdC1wdWxzZS1hezAlLHRve3NjYWxlOjF9NTAle3NjYWxlOjEuMDR9fUBrZXlmcmFtZXMgdG9hc3QtcHVsc2UtYnswJSx0b3tzY2FsZToxfTUwJXtzY2FsZToxLjA0fX1Aa2V5ZnJhbWVzIHRvYXN0LWNvbGxhcHNlZC1jbG9zZWR7MCV7dHJhbnNmb3JtOnZhcigtLXRyYW5zZm9ybSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYygodmFyKC0tYmVmb3JlKSAtIHZhcigtLWhlaWdodCkpKnZhcigtLWdhcCkpKSBzY2FsZSh2YXIoLS1zY2FsZSkpfX1Aa2V5ZnJhbWVzIHRvYXN0LWNsb3NlZHswJXt0cmFuc2Zvcm06dmFyKC0tdHJhbnNmb3JtKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKCh2YXIoLS1vZmZzZXQpIC0gdmFyKC0taGVpZ2h0KSkqdmFyKC0tdHJhbnNsYXRlLWZhY3RvcikpKX19QGtleWZyYW1lcyB0b2FzdC1zbGlkZS1sZWZ0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCkgdHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKSB0cmFuc2xhdGVZKHZhcigtLXRyYW5zbGF0ZSkpfX1Aa2V5ZnJhbWVzIHRvYXN0LXNsaWRlLXJpZ2h0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCkgdHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpIHRyYW5zbGF0ZVkodmFyKC0tdHJhbnNsYXRlKSl9fUBrZXlmcmFtZXMgZmFkZS1pbnswJXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGUtb3V0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc2NhbGUtaW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOTUpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9fUBrZXlmcmFtZXMgc2NhbGUtb3V0ezAle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOTUpfX1Aa2V5ZnJhbWVzIHNsaWRlLWluLWZyb20tdG9wezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBzbGlkZS1vdXQtdG8tdG9wezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX19QGtleWZyYW1lcyBzbGlkZS1pbi1mcm9tLXJpZ2h0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBzbGlkZS1vdXQtdG8tcmlnaHR7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpfX1Aa2V5ZnJhbWVzIHNsaWRlLWluLWZyb20tYm90dG9tezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHNsaWRlLW91dC10by1ib3R0b217MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9fUBrZXlmcmFtZXMgc2xpZGUtaW4tZnJvbS1sZWZ0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9fUBrZXlmcmFtZXMgc2xpZGUtb3V0LXRvLWxlZnR7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX19QGtleWZyYW1lcyBzbGlkZS1pbi1mcm9tLXRvcC1hbmQtZmFkZXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTRweCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHNsaWRlLW91dC10by10b3AtYW5kLWZhZGV7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNHB4KX19QGtleWZyYW1lcyBzbGlkZS1pbi1mcm9tLXJpZ2h0LWFuZC1mYWRlezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDRweCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9fUBrZXlmcmFtZXMgc2xpZGUtb3V0LXRvLXJpZ2h0LWFuZC1mYWRlezAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDRweCl9fUBrZXlmcmFtZXMgc2xpZGUtaW4tZnJvbS1ib3R0b20tYW5kLWZhZGV7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDRweCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHNsaWRlLW91dC10by1ib3R0b20tYW5kLWZhZGV7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg0cHgpfX1Aa2V5ZnJhbWVzIHNsaWRlLWluLWZyb20tbGVmdC1hbmQtZmFkZXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNHB4KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBzbGlkZS1vdXQtdG8tbGVmdC1hbmQtZmFkZXswJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNHB4KX19QGtleWZyYW1lcyBlbnRlci1mcm9tLXJpZ2h0ezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDIwMHB4KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBlbnRlci1mcm9tLWxlZnR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTIwMHB4KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBleGl0LXRvLXJpZ2h0ezAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDIwMHB4KX19QGtleWZyYW1lcyBleGl0LXRvLWxlZnR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTIwMHB4KX19QGtleWZyYW1lcyBjYXJvdXNlbHswJSx0b3t3aWR0aDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgyMDAlKX19QGtleWZyYW1lcyBjYXJvdXNlbC1ydGx7MCUsdG97d2lkdGg6NTAlfTAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMjAwJSl9fUBrZXlmcmFtZXMgY2Fyb3VzZWwtdmVydGljYWx7MCUsdG97aGVpZ2h0OjUwJX0wJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjAwJSl9fUBrZXlmcmFtZXMgY2Fyb3VzZWwtaW52ZXJzZXswJSx0b3t3aWR0aDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgyMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX19QGtleWZyYW1lcyBjYXJvdXNlbC1pbnZlcnNlLXJ0bHswJSx0b3t3aWR0aDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMjAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlKX19QGtleWZyYW1lcyBjYXJvdXNlbC1pbnZlcnNlLXZlcnRpY2FsezAlLHRve2hlaWdodDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfX1Aa2V5ZnJhbWVzIHN3aW5nezAlLHRve3dpZHRoOjUwJX0wJSx0b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0yNSUpfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDEyNSUpfX1Aa2V5ZnJhbWVzIHN3aW5nLXZlcnRpY2FsezAlLHRve2hlaWdodDo1MCV9MCUsdG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9NTAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEyNSUpfX1Aa2V5ZnJhbWVzIGVsYXN0aWN7MCUsdG97bWFyZ2luLWxlZnQ6MjUlO3dpZHRoOjUwJX01MCV7bWFyZ2luLWxlZnQ6NSU7d2lkdGg6OTAlfX1Aa2V5ZnJhbWVzIGVsYXN0aWMtdmVydGljYWx7MCUsdG97aGVpZ2h0OjUwJTttYXJnaW4tdG9wOjI1JX01MCV7aGVpZ2h0OjkwJTttYXJnaW4tdG9wOjUlfX1Aa2V5ZnJhbWVzIG1hcnF1ZWV7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKGNhbGMoLTEwMCUgLSB2YXIoLS1nYXApKSwwLDApfX1Aa2V5ZnJhbWVzIG1hcnF1ZWUtcnRsezAle3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUzZChjYWxjKDEwMCUgKyB2YXIoLS1nYXApKSwwLDApfX1Aa2V5ZnJhbWVzIG1hcnF1ZWUtdmVydGljYWx7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsY2FsYygtMTAwJSAtIHZhcigtLWdhcCkpLDApfX1Aa2V5ZnJhbWVzIG1hcnF1ZWUtdmVydGljYWwtcnRsezAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLGNhbGMoLTEwMCUgLSB2YXIoLS1nYXApKSwwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCxjYWxjKC0xMDAlKnZhcigtLWdhcCkpLDApfX1Aa2V5ZnJhbWVzIHNoaW1tZXJ7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMDAlfXRve2JhY2tncm91bmQtcG9zaXRpb246MH19QGtleWZyYW1lcyBzaGltbWVyLXJ0bHswJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjoxMDAlfX06cm9vdHstLXVpLXJhZGl1czowcmVtfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zcGFjaW5nLXh7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zcGFjaW5nLXl7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXNjYWxlLXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctc2NhbGUteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1zY2FsZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNwYWNlLXktcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1zcGFjZS14LXJldmVyc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZGl2aWRlLXktcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1ib3JkZXItc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWdyYWRpZW50LXBvc2l0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtZnJvbXtzeW50YXg6Ijxjb2xvcj4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IzAwMDB9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtdmlhe3N5bnRheDoiPGNvbG9yPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojMDAwMH1AcHJvcGVydHkgLS10dy1ncmFkaWVudC10b3tzeW50YXg6Ijxjb2xvcj4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IzAwMDB9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtc3RvcHN7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC12aWEtc3RvcHN7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9ue3N5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowJX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb257c3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjUwJX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC10by1wb3NpdGlvbntzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1mb250LXdlaWdodHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXRyYWNraW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctb3JkaW5hbHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNsYXNoZWQtemVyb3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtZmlndXJle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1zcGFjaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1mcmFjdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LXJpbmctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yaW5nLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXJpbmctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LXJpbmctaW5zZXR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yaW5nLW9mZnNldC13aWR0aHtzeW50YXg6IjxsZW5ndGg+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOiNmZmZ9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctb3V0bGluZS1zdHlsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6c29saWR9QHByb3BlcnR5IC0tdHctYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJyaWdodG5lc3N7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1jb250cmFzdHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWdyYXlzY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWh1ZS1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnZlcnR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1vcGFjaXR5e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2F0dXJhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zZXBpYXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LXNpemV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzc3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWNvbnRyYXN0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtZ3JheXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWludmVydHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1zYXR1cmF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLXNlcGlhe3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHVyYXRpb257c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1lYXNle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udGVudHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IiJ9QHByb3BlcnR5IC0tdHctZGl2aWRlLXgtcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1sZWFkaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QGtleWZyYW1lcyBzcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIHB1bHNlezUwJXtvcGFjaXR5Oi41fX1Aa2V5ZnJhbWVzIGJvdW5jZXswJSx0b3thbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguOCwwLDEsMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9NTAle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsMCwuMiwxKTt0cmFuc2Zvcm06bm9uZX19Cg==", "/_nuxt/error-404.CFU5ogNm.css": "LmdyaWRbZGF0YS12LTZkN2JhY2ZmXXtkaXNwbGF5OmdyaWR9Lm1iLTJbZGF0YS12LTZkN2JhY2ZmXXttYXJnaW4tYm90dG9tOi41cmVtfS5tYi00W2RhdGEtdi02ZDdiYWNmZl17bWFyZ2luLWJvdHRvbToxcmVtfS5tYXgtdy01MjBweFtkYXRhLXYtNmQ3YmFjZmZde21heC13aWR0aDo1MjBweH0ubWluLWgtc2NyZWVuW2RhdGEtdi02ZDdiYWNmZl17bWluLWhlaWdodDoxMDB2aH0udy1mdWxsW2RhdGEtdi02ZDdiYWNmZl17d2lkdGg6MTAwJX0uZmxleFtkYXRhLXYtNmQ3YmFjZmZde2Rpc3BsYXk6ZmxleH0ucGxhY2UtY29udGVudC1jZW50ZXJbZGF0YS12LTZkN2JhY2ZmXXtwbGFjZS1jb250ZW50OmNlbnRlcn0uaXRlbXMtY2VudGVyW2RhdGEtdi02ZDdiYWNmZl17YWxpZ24taXRlbXM6Y2VudGVyfS5qdXN0aWZ5LWNlbnRlcltkYXRhLXYtNmQ3YmFjZmZde2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm92ZXJmbG93LWhpZGRlbltkYXRhLXYtNmQ3YmFjZmZde292ZXJmbG93OmhpZGRlbn0uYmctd2hpdGVbZGF0YS12LTZkN2JhY2ZmXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSl9LnB4LTJbZGF0YS12LTZkN2JhY2ZmXXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0udGV4dC1jZW50ZXJbZGF0YS12LTZkN2JhY2ZmXXt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1cWzgwcHhcXVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTo4MHB4fS50ZXh0LTJ4bFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1zbVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LnRleHQtXFtcIzAyMDQyMFxdW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS50ZXh0LVxbXCM2NDc0OEJcXVtkYXRhLXYtNmQ3YmFjZmZdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDEwMCAxMTYgMTM5L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS5ob3Zlclw6dGV4dC1cW1wjMDBEQzgyXF1bZGF0YS12LTZkN2JhY2ZmXTpob3ZlcnstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigwIDIyMCAxMzAvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9LmZvbnQtbWVkaXVtW2RhdGEtdi02ZDdiYWNmZl17Zm9udC13ZWlnaHQ6NTAwfS5mb250LXNlbWlib2xkW2RhdGEtdi02ZDdiYWNmZl17Zm9udC13ZWlnaHQ6NjAwfS5sZWFkaW5nLW5vbmVbZGF0YS12LTZkN2JhY2ZmXXtsaW5lLWhlaWdodDoxfS50cmFja2luZy13aWRlW2RhdGEtdi02ZDdiYWNmZl17bGV0dGVyLXNwYWNpbmc6LjAyNWVtfS5mb250LXNhbnNbZGF0YS12LTZkN2JhY2ZmXXtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxSb2JvdG8sSGVsdmV0aWNhIE5ldWUsQXJpYWwsTm90byBTYW5zLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sLE5vdG8gQ29sb3IgRW1vaml9LnRhYnVsYXItbnVtc1tkYXRhLXYtNmQ3YmFjZmZdey0tdW4tbnVtZXJpYy1zcGFjaW5nOnRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS11bi1vcmRpbmFsKSB2YXIoLS11bi1zbGFzaGVkLXplcm8pIHZhcigtLXVuLW51bWVyaWMtZmlndXJlKSB2YXIoLS11bi1udW1lcmljLXNwYWNpbmcpIHZhcigtLXVuLW51bWVyaWMtZnJhY3Rpb24pfS51bmRlcmxpbmVbZGF0YS12LTZkN2JhY2ZmXXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LnVuZGVybGluZS1vZmZzZXQtM1tkYXRhLXYtNmQ3YmFjZmZde3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHh9LmFudGlhbGlhc2VkW2RhdGEtdi02ZDdiYWNmZl17LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9QG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspey5kYXJrXDpiZy1cW1wjMDIwNDIwXF1bZGF0YS12LTZkN2JhY2ZmXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyIDQgMzIvdmFyKC0tdW4tYmctb3BhY2l0eSkpfS5kYXJrXDp0ZXh0LXdoaXRlW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9fUBtZWRpYShtaW4td2lkdGg6NjQwcHgpey5zbVw6dGV4dC1cWzExMHB4XF1bZGF0YS12LTZkN2JhY2ZmXXtmb250LXNpemU6MTEwcHh9LnNtXDp0ZXh0LTN4bFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZToxLjg3NXJlbTtsaW5lLWhlaWdodDoyLjI1cmVtfX0K", "/_nuxt/error-500.B5aT4P7Z.css": "LmdyaWRbZGF0YS12LTI0ODQzMWQyXXtkaXNwbGF5OmdyaWR9Lm1iLTJbZGF0YS12LTI0ODQzMWQyXXttYXJnaW4tYm90dG9tOi41cmVtfS5tYi00W2RhdGEtdi0yNDg0MzFkMl17bWFyZ2luLWJvdHRvbToxcmVtfS5tYXgtdy01MjBweFtkYXRhLXYtMjQ4NDMxZDJde21heC13aWR0aDo1MjBweH0ubWluLWgtc2NyZWVuW2RhdGEtdi0yNDg0MzFkMl17bWluLWhlaWdodDoxMDB2aH0ucGxhY2UtY29udGVudC1jZW50ZXJbZGF0YS12LTI0ODQzMWQyXXtwbGFjZS1jb250ZW50OmNlbnRlcn0ub3ZlcmZsb3ctaGlkZGVuW2RhdGEtdi0yNDg0MzFkMl17b3ZlcmZsb3c6aGlkZGVufS5iZy13aGl0ZVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXVuLWJnLW9wYWNpdHkpKX0ucHgtMltkYXRhLXYtMjQ4NDMxZDJde3BhZGRpbmctbGVmdDouNXJlbTtwYWRkaW5nLXJpZ2h0Oi41cmVtfS50ZXh0LWNlbnRlcltkYXRhLXYtMjQ4NDMxZDJde3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LVxbODBweFxdW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjgwcHh9LnRleHQtMnhsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDoycmVtfS50ZXh0LVxbXCMwMjA0MjBcXVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0udGV4dC1cW1wjNjQ3NDhCXF1bZGF0YS12LTI0ODQzMWQyXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0uZm9udC1zZW1pYm9sZFtkYXRhLXYtMjQ4NDMxZDJde2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1ub25lW2RhdGEtdi0yNDg0MzFkMl17bGluZS1oZWlnaHQ6MX0udHJhY2tpbmctd2lkZVtkYXRhLXYtMjQ4NDMxZDJde2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5zW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppfS50YWJ1bGFyLW51bXNbZGF0YS12LTI0ODQzMWQyXXstLXVuLW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdW4tb3JkaW5hbCkgdmFyKC0tdW4tc2xhc2hlZC16ZXJvKSB2YXIoLS11bi1udW1lcmljLWZpZ3VyZSkgdmFyKC0tdW4tbnVtZXJpYy1zcGFjaW5nKSB2YXIoLS11bi1udW1lcmljLWZyYWN0aW9uKX0uYW50aWFsaWFzZWRbZGF0YS12LTI0ODQzMWQyXXstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcOmJnLVxbXCMwMjA0MjBcXVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi1iZy1vcGFjaXR5KSl9LmRhcmtcOnRleHQtd2hpdGVbZGF0YS12LTI0ODQzMWQyXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX19QG1lZGlhKG1pbi13aWR0aDo2NDBweCl7LnNtXDp0ZXh0LVxbMTEwcHhcXVtkYXRhLXYtMjQ4NDMxZDJde2ZvbnQtc2l6ZToxMTBweH0uc21cOnRleHQtM3hsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuODc1cmVtO2xpbmUtaGVpZ2h0OjIuMjVyZW19fQo=", "/_nuxt/ghqYbIST.js": "aW1wb3J0e2FoIGFzIHEsSiBhcyBDLEsgYXMgeCxhQiBhcyBCLG8gYXMgcixjIGFzIHYsYix3IGFzIHAsTCBhcyBvLGF2IGFzIG4sYXcgYXMgZyxpIGFzIGUsaCBhcyBkLGFhIGFzIHksdiBhcyBjLGEgYXMgZixNIGFzIHUsayBhcyBQLGQgYXMgVCx0IGFzIGosUCBhcyB3LEYgYXMgRCxsIGFzIFYsTiBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e3UgYXMgen1mcm9tIi4vQ3RhMTVzRy0uanMiO2ltcG9ydHtfIGFzIE99ZnJvbSIuL0JoV1MxOGk3LmpzIjtjb25zdCBSPXtzbG90czp7cm9vdDoiaC0oLS11aS1oZWFkZXItaGVpZ2h0KSBzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUiLGxlZnQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgbWluLXctMCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IHNlbGYtY2VudGVyIG1lLTEuNSIsdGl0bGU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIHRydW5jYXRlIixjZW50ZXI6ImhpZGRlbiBsZzpmbGV4IixyaWdodDoiZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTEuNSIsdG9nZ2xlOiIifSx2YXJpYW50czp7dG9nZ2xlU2lkZTp7bGVmdDp7dG9nZ2xlOiIifSxyaWdodDp7dG9nZ2xlOiIifX19fSxJPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZE5hdmJhciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0b2dnbGU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0b2dnbGVTaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgbT10LFM9cSgpLCQ9QygpLGw9eCgiZGFzaGJvYXJkTmF2YmFyIixtKSxpPXooe30pLFtOLGhdPUIoKSxhPVYoKCk9Pmsoe2V4dGVuZDprKFIpLC4uLiQudWk/LmRhc2hib2FyZE5hdmJhcnx8e319KSgpKTtyZXR1cm4ocyxBKT0+KHIoKSx2KEQsbnVsbCxbYihlKE4pLG51bGwse2RlZmF1bHQ6cCgoKT0+W28ocy4kc2xvdHMsInRvZ2dsZSIsbihnKHsuLi5lKGkpLHVpOmEudmFsdWV9KSksKCk9Plt0LnRvZ2dsZT8ocigpLGQoTyx5KHtrZXk6MH0sdHlwZW9mIHQudG9nZ2xlPT0ib2JqZWN0Ij90LnRvZ2dsZTp7fSx7c2lkZTp0LnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6YS52YWx1ZS50b2dnbGUoe2NsYXNzOmUobCk/LnRvZ2dsZSx0b2dnbGVTaWRlOnQudG9nZ2xlU2lkZX0pfSksbnVsbCwxNixbInNpZGUiLCJjbGFzcyJdKSk6YygiIiwhMCldKV0pLF86M30pLGIoZSh3KSx5KHthczp0LmFzfSxzLiRhdHRycyx7ImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmEudmFsdWUucm9vdCh7Y2xhc3M6W2UobCk/LnJvb3QsbS5jbGFzc119KX0pLHtkZWZhdWx0OnAoKCk9PltmKCJkaXYiLHsiZGF0YS1zbG90IjoibGVmdCIsY2xhc3M6dShhLnZhbHVlLmxlZnQoe2NsYXNzOmUobCk/LmxlZnR9KSl9LFt0LnRvZ2dsZVNpZGU9PT0ibGVmdCI/KHIoKSxkKGUoaCkse2tleTowfSkpOmMoIiIsITApLG8ocy4kc2xvdHMsImxlZnQiLG4oZyhlKGkpKSksKCk9PltvKHMuJHNsb3RzLCJsZWFkaW5nIixuKGcoey4uLmUoaSksdWk6YS52YWx1ZX0pKSwoKT0+W3QuaWNvbj8ocigpLGQoUCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOnUoYS52YWx1ZS5pY29uKHtjbGFzczplKGwpPy5pY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmMoIiIsITApXSksZigiaDEiLHsiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOnUoYS52YWx1ZS50aXRsZSh7Y2xhc3M6ZShsKT8udGl0bGV9KSl9LFtvKHMuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltUKGoodC50aXRsZSksMSldKV0sMiksbyhzLiRzbG90cywidHJhaWxpbmciLG4oZyh7Li4uZShpKSx1aTphLnZhbHVlfSkpKV0pXSwyKSxTLmRlZmF1bHQ/KHIoKSx2KCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2VudGVyIixjbGFzczp1KGEudmFsdWUuY2VudGVyKHtjbGFzczplKGwpPy5jZW50ZXJ9KSl9LFtvKHMuJHNsb3RzLCJkZWZhdWx0IixuKGcoZShpKSkpKV0sMikpOmMoIiIsITApLGYoImRpdiIseyJkYXRhLXNsb3QiOiJyaWdodCIsY2xhc3M6dShhLnZhbHVlLnJpZ2h0KHtjbGFzczplKGwpPy5yaWdodH0pKX0sW28ocy4kc2xvdHMsInJpZ2h0IixuKGcoZShpKSkpKSx0LnRvZ2dsZVNpZGU9PT0icmlnaHQiPyhyKCksZChlKGgpLHtrZXk6MH0pKTpjKCIiLCEwKV0sMildKSxfOjN9LDE2LFsiYXMiLCJjbGFzcyJdKV0sNjQpKX19KTtleHBvcnR7SSBhcyBffTsK", "/_nuxt/m20kdGxU.js": "aW1wb3J0e2YgYXMgbSxSIGFzIGgsbyBhcyBsLGggYXMgbyxhYSBhcyBwLGJOIGFzIGcsYmUgYXMgRSxsIGFzIGQsYyBhcyBmLHYgYXMgQixGIGFzIGMscSBhcyBWfWZyb20iLi9vOHRkX0cwSi5qcyI7dmFyIGs9bSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiVmlzdWFsbHlIaWRkZW5JbnB1dEJ1YmJsZSIscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxjaGVja2VkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZlYXR1cmU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImZ1bGx5LWhpZGRlbiJ9fSxzZXR1cChpKXtjb25zdCBlPWkse3ByaW1pdGl2ZUVsZW1lbnQ6cyxjdXJyZW50RWxlbWVudDpufT1FKCksdD1kKCgpPT5lLmNoZWNrZWQ/P2UudmFsdWUpO3JldHVybiBoKHQsKGEscik9PntpZighbi52YWx1ZSlyZXR1cm47Y29uc3QgdT1uLnZhbHVlLGI9d2luZG93LkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLHY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiLCJ2YWx1ZSIpLnNldDtpZih2JiZhIT09cil7Y29uc3QgXz1uZXcgRXZlbnQoImlucHV0Iix7YnViYmxlczohMH0pLHE9bmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSk7di5jYWxsKHUsYSksdS5kaXNwYXRjaEV2ZW50KF8pLHUuZGlzcGF0Y2hFdmVudChxKX19KSwoYSxyKT0+KGwoKSxvKGcscCh7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOnN9LHsuLi5lLC4uLmEuJGF0dHJzfSx7YXM6ImlucHV0In0pLG51bGwsMTYpKX19KSx5PWssQT1tKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJWaXN1YWxseUhpZGRlbklucHV0Iixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGNoZWNrZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZmVhdHVyZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZnVsbHktaGlkZGVuIn19LHNldHVwKGkpe2NvbnN0IGU9aSxzPWQoKCk9PnR5cGVvZiBlLnZhbHVlPT0ib2JqZWN0IiYmQXJyYXkuaXNBcnJheShlLnZhbHVlKSYmZS52YWx1ZS5sZW5ndGg9PT0wJiZlLnJlcXVpcmVkKSxuPWQoKCk9PnR5cGVvZiBlLnZhbHVlPT0ic3RyaW5nInx8dHlwZW9mIGUudmFsdWU9PSJudW1iZXIifHx0eXBlb2YgZS52YWx1ZT09ImJvb2xlYW4ifHxlLnZhbHVlPT09bnVsbHx8ZS52YWx1ZT09PXZvaWQgMD9be25hbWU6ZS5uYW1lLHZhbHVlOmUudmFsdWV9XTp0eXBlb2YgZS52YWx1ZT09Im9iamVjdCImJkFycmF5LmlzQXJyYXkoZS52YWx1ZSk/ZS52YWx1ZS5mbGF0TWFwKCh0LGEpPT50eXBlb2YgdD09Im9iamVjdCI/T2JqZWN0LmVudHJpZXModCkubWFwKChbcix1XSk9Pih7bmFtZTpgJHtlLm5hbWV9WyR7YX1dWyR7cn1dYCx2YWx1ZTp1fSkpOntuYW1lOmAke2UubmFtZX1bJHthfV1gLHZhbHVlOnR9KTplLnZhbHVlIT09bnVsbCYmdHlwZW9mIGUudmFsdWU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlLnZhbHVlKT9PYmplY3QuZW50cmllcyhlLnZhbHVlKS5tYXAoKFt0LGFdKT0+KHtuYW1lOmAke2UubmFtZX1bJHt0fV1gLHZhbHVlOmF9KSk6W10pO3JldHVybih0LGEpPT4obCgpLGYoYyxudWxsLFtCKCIgV2UgcmVuZGVyIHNpbmdsZSBpbnB1dCBpZiBpdCdzIHJlcXVpcmVkICIpLHMudmFsdWU/KGwoKSxvKHkscCh7a2V5OnQubmFtZX0sey4uLmUsLi4udC4kYXR0cnN9LHtuYW1lOnQubmFtZSx2YWx1ZTp0LnZhbHVlfSksbnVsbCwxNixbIm5hbWUiLCJ2YWx1ZSJdKSk6KGwoITApLGYoYyx7a2V5OjF9LFYobi52YWx1ZSxyPT4obCgpLG8oeSxwKHtrZXk6ci5uYW1lfSx7cmVmX2ZvcjohMH0sey4uLmUsLi4udC4kYXR0cnN9LHtuYW1lOnIubmFtZSx2YWx1ZTpyLnZhbHVlfSksbnVsbCwxNixbIm5hbWUiLCJ2YWx1ZSJdKSkpLDEyOCkpXSwyMTEyKSl9fSksST1BO2V4cG9ydHtJIGFzIFZ9Owo=", "/_nuxt/o8td_G0J.js": "Y29uc3QgX192aXRlX19tYXBEZXBzPShpLG09X192aXRlX19tYXBEZXBzLGQ9KG0uZnx8KG0uZj1bIi4vRF9jdS1xTVIuanMiLCIuL1pKVmswb2xOLmpzIiwiLi9CU1JLcUdyUC5qcyIsIi4vRFRUTHI1SHIuanMiLCIuL0NjNnppaC1SLmpzIiwiLi9DdGExNXNHLS5qcyIsIi4vZ2hxWWJJU1QuanMiLCIuL0JoV1MxOGk3LmpzIiwiLi9DMU9RaXlVRC5qcyIsIi4vQ2w0aTRyU00uanMiLCIuL18ybFNkcjEzLmpzIiwiLi9DeGNaclkzVy5qcyIsIi4vY2RLX0E2Tm0uanMiLCIuL0NHWGdTTVpoLmpzIiwiLi9EWVpsZzAtNS5qcyIsIi4vQ2ZfZncxRTkuanMiLCIuL0JkNC1PYzM2LmpzIiwiLi9zM3AwYzAzTS5qcyIsIi4vQ3NLNTFxdGQuanMiLCIuL0RUdlhULW5SLmpzIiwiLi9EeENXUXNubC5qcyIsIi4vQ1lhbXpMbTUuanMiLCIuL0R2ZGh5cERpLmpzIiwiLi9CdDhTMGRtbC5qcyIsIi4vQ1hvYzRVRVIuanMiLCIuL0NjTU1GMWc5LmpzIiwiLi9EdUVBZm5ocS5qcyIsIi4vQjFNZUxyaTMuanMiLCIuL0NXOGZLbkZFLmpzIiwiLi9DN1l5NnRSMy5qcyIsIi4vRGM0NlF3REouanMiLCIuL0NmaFlGWU9ZLmpzIiwiLi9XbURYSFlLay5qcyIsIi4vQjdzNXBqalIuanMiLCIuL0RIQ3dFTFdwLmpzIiwiLi9tMjBrZEd4VS5qcyIsIi4vQ0FVQVg1VnIuanMiLCIuL0JBdW5pLXFkLmpzIiwiLi9EbTc5NHF4SS5qcyIsIi4vQld2cWx3NWYuanMiLCIuL0NJQzd2c1o1LmpzIiwiLi83Y1ZTT0NjdS5qcyIsIi4vZF8wTndRTFUuanMiLCIuL0RwQXZ0TjhnLmpzIiwiLi9ET0NGRFRjWS5qcyIsIi4vQnVMU3VBOE0uanMiLCIuLzRsSG15SGJILmpzIiwiLi9Db0lkejRrYS5qcyIsIi4vQlN5MGkyQWYuanMiLCIuL0JkWlg1eGdmLmpzIiwiLi9DcXlXck5OeC5qcyIsIi4vQmVFTUN5dVouanMiLCIuL0NZbWxNSVh6LmpzIiwiLi9Cck5SVklCQS5qcyIsIi4vRHRTdGZWbVQuanMiLCIuL0JNeWJHNE9rLmpzIiwiLi9CRk9ObzYzWC5qcyIsIi4vQlpsTk5mazQuanMiLCIuL0JTR3QzeFJXLmpzIiwiLi9EYkM0cDNRQS5qcyIsIi4vTjZLMHJxdGMuanMiLCIuL0NGQnRjQjdvLmpzIiwiLi9EUGZaa2wyZS5qcyIsIi4vZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyIsIi4vWlpzZlA5S1ouanMiLCIuL2Vycm9yLTUwMC5CNWFUNFA3Wi5jc3MiXSkpKT0+aS5tYXAoaT0+ZFtpXSk7CihmdW5jdGlvbigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYodCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKXJldHVybjtmb3IoY29uc3QgbyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpcihvKTtuZXcgTXV0YXRpb25PYnNlcnZlcihvPT57Zm9yKGNvbnN0IHMgb2YgbylpZihzLnR5cGU9PT0iY2hpbGRMaXN0Iilmb3IoY29uc3QgaSBvZiBzLmFkZGVkTm9kZXMpaS50YWdOYW1lPT09IkxJTksiJiZpLnJlbD09PSJtb2R1bGVwcmVsb2FkIiYmcihpKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gbihvKXtjb25zdCBzPXt9O3JldHVybiBvLmludGVncml0eSYmKHMuaW50ZWdyaXR5PW8uaW50ZWdyaXR5KSxvLnJlZmVycmVyUG9saWN5JiYocy5yZWZlcnJlclBvbGljeT1vLnJlZmVycmVyUG9saWN5KSxvLmNyb3NzT3JpZ2luPT09InVzZS1jcmVkZW50aWFscyI/cy5jcmVkZW50aWFscz0iaW5jbHVkZSI6by5jcm9zc09yaWdpbj09PSJhbm9ueW1vdXMiP3MuY3JlZGVudGlhbHM9Im9taXQiOnMuY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixzfWZ1bmN0aW9uIHIobyl7aWYoby5lcClyZXR1cm47by5lcD0hMDtjb25zdCBzPW4obyk7ZmV0Y2goby5ocmVmLHMpfX0pKCk7ZnVuY3Rpb24gdWYoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBuIG9mIGUuc3BsaXQoIiwiKSl0W25dPTE7cmV0dXJuIG49Pm4gaW4gdH1jb25zdCBZZT17fSx1cz1bXSxscj0oKT0+e30sUWg9KCk9PiExLFJpPWU9PmUuY2hhckNvZGVBdCgwKT09PTExMSYmZS5jaGFyQ29kZUF0KDEpPT09MTEwJiYoZS5jaGFyQ29kZUF0KDIpPjEyMnx8ZS5jaGFyQ29kZUF0KDIpPDk3KSxjbD1lPT5lLnN0YXJ0c1dpdGgoIm9uVXBkYXRlOiIpLHZ0PU9iamVjdC5hc3NpZ24sZmY9KGUsdCk9Pntjb25zdCBuPWUuaW5kZXhPZih0KTtuPi0xJiZlLnNwbGljZShuLDEpfSxqdz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG50PShlLHQpPT5qdy5jYWxsKGUsdCksU2U9QXJyYXkuaXNBcnJheSxmcz1lPT5JcyhlKT09PSJbb2JqZWN0IE1hcF0iLFloPWU9PklzKGUpPT09IltvYmplY3QgU2V0XSIscWQ9ZT0+SXMoZSk9PT0iW29iamVjdCBEYXRlXSIsVnc9ZT0+SXMoZSk9PT0iW29iamVjdCBSZWdFeHBdIixDZT1lPT50eXBlb2YgZT09ImZ1bmN0aW9uIixmdD1lPT50eXBlb2YgZT09InN0cmluZyIsa249ZT0+dHlwZW9mIGU9PSJzeW1ib2wiLFplPWU9PmUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCIsdWw9ZT0+KFplKGUpfHxDZShlKSkmJkNlKGUudGhlbikmJkNlKGUuY2F0Y2gpLEpoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsSXM9ZT0+SmguY2FsbChlKSxVdz1lPT5JcyhlKS5zbGljZSg4LC0xKSxkZj1lPT5JcyhlKT09PSJbb2JqZWN0IE9iamVjdF0iLGZsPWU9PmZ0KGUpJiZlIT09Ik5hTiImJmVbMF0hPT0iLSImJiIiK3BhcnNlSW50KGUsMTApPT09ZSxJbz11ZigiLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LG9uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCxvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLG9uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWQiKSxkbD1lPT57Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybihuPT50W25dfHwodFtuXT1lKG4pKSl9LEh3PS8tXHcvZywkdD1kbChlPT5lLnJlcGxhY2UoSHcsdD0+dC5zbGljZSgxKS50b1VwcGVyQ2FzZSgpKSksV3c9L1xCKFtBLVpdKS9nLEJyPWRsKGU9PmUucmVwbGFjZShXdywiLSQxIikudG9Mb3dlckNhc2UoKSkscGw9ZGwoZT0+ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKSxuaT1kbChlPT5lP2BvbiR7cGwoZSl9YDoiIiksRnQ9KGUsdCk9PiFPYmplY3QuaXMoZSx0KSxyaT0oZSwuLi50KT0+e2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWVbbl0oLi4udCl9LFhoPShlLHQsbixyPSExKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOnIsdmFsdWU6bn0pfSxHdz1lPT57Y29uc3QgdD1wYXJzZUZsb2F0KGUpO3JldHVybiBpc05hTih0KT9lOnR9LFpoPWU9Pntjb25zdCB0PWZ0KGUpP051bWJlcihlKTpOYU47cmV0dXJuIGlzTmFOKHQpP2U6dH07bGV0IEZkO2NvbnN0IG1sPSgpPT5GZHx8KEZkPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6e30pO2Z1bmN0aW9uIFJuKGUpe2lmKFNlKGUpKXtjb25zdCB0PXt9O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWVbbl0sbz1mdChyKT9KdyhyKTpSbihyKTtpZihvKWZvcihjb25zdCBzIGluIG8pdFtzXT1vW3NdfXJldHVybiB0fWVsc2UgaWYoZnQoZSl8fFplKGUpKXJldHVybiBlfWNvbnN0IEt3PS87KD8hW14oXSpcKSkvZyxRdz0vOihbXl0rKS8sWXc9L1wvXCpbXl0qP1wqXC8vZztmdW5jdGlvbiBKdyhlKXtjb25zdCB0PXt9O3JldHVybiBlLnJlcGxhY2UoWXcsIiIpLnNwbGl0KEt3KS5mb3JFYWNoKG49PntpZihuKXtjb25zdCByPW4uc3BsaXQoUXcpO3IubGVuZ3RoPjEmJih0W3JbMF0udHJpbSgpXT1yWzFdLnRyaW0oKSl9fSksdH1mdW5jdGlvbiB1ZShlKXtsZXQgdD0iIjtpZihmdChlKSl0PWU7ZWxzZSBpZihTZShlKSlmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj11ZShlW25dKTtyJiYodCs9cisiICIpfWVsc2UgaWYoWmUoZSkpZm9yKGNvbnN0IG4gaW4gZSllW25dJiYodCs9bisiICIpO3JldHVybiB0LnRyaW0oKX1mdW5jdGlvbiB4dChlKXtpZighZSlyZXR1cm4gbnVsbDtsZXR7Y2xhc3M6dCxzdHlsZTpufT1lO3JldHVybiB0JiYhZnQodCkmJihlLmNsYXNzPXVlKHQpKSxuJiYoZS5zdHlsZT1SbihuKSksZX1jb25zdCBYdz0iaXRlbXNjb3BlLGFsbG93ZnVsbHNjcmVlbixmb3Jtbm92YWxpZGF0ZSxpc21hcCxub21vZHVsZSxub3ZhbGlkYXRlLHJlYWRvbmx5Iixadz11ZihYdyk7ZnVuY3Rpb24gZWcoZSl7cmV0dXJuISFlfHxlPT09IiJ9ZnVuY3Rpb24gZV8oZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2xldCBuPSEwO2ZvcihsZXQgcj0wO24mJnI8ZS5sZW5ndGg7cisrKW49cGYoZVtyXSx0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBwZihlLHQpe2lmKGU9PT10KXJldHVybiEwO2xldCBuPXFkKGUpLHI9cWQodCk7aWYobnx8cilyZXR1cm4gbiYmcj9lLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpOiExO2lmKG49a24oZSkscj1rbih0KSxufHxyKXJldHVybiBlPT09dDtpZihuPVNlKGUpLHI9U2UodCksbnx8cilyZXR1cm4gbiYmcj9lXyhlLHQpOiExO2lmKG49WmUoZSkscj1aZSh0KSxufHxyKXtpZighbnx8IXIpcmV0dXJuITE7Y29uc3Qgbz1PYmplY3Qua2V5cyhlKS5sZW5ndGgscz1PYmplY3Qua2V5cyh0KS5sZW5ndGg7aWYobyE9PXMpcmV0dXJuITE7Zm9yKGNvbnN0IGkgaW4gZSl7Y29uc3QgYT1lLmhhc093blByb3BlcnR5KGkpLGw9dC5oYXNPd25Qcm9wZXJ0eShpKTtpZihhJiYhbHx8IWEmJmx8fCFwZihlW2ldLHRbaV0pKXJldHVybiExfX1yZXR1cm4gU3RyaW5nKGUpPT09U3RyaW5nKHQpfWNvbnN0IHRnPWU9PiEhKGUmJmUuX192X2lzUmVmPT09ITApLHJ0PWU9PmZ0KGUpP2U6ZT09bnVsbD8iIjpTZShlKXx8WmUoZSkmJihlLnRvU3RyaW5nPT09Smh8fCFDZShlLnRvU3RyaW5nKSk/dGcoZSk/cnQoZS52YWx1ZSk6SlNPTi5zdHJpbmdpZnkoZSxuZywyKTpTdHJpbmcoZSksbmc9KGUsdCk9PnRnKHQpP25nKGUsdC52YWx1ZSk6ZnModCk/e1tgTWFwKCR7dC5zaXplfSlgXTpbLi4udC5lbnRyaWVzKCldLnJlZHVjZSgobixbcixvXSxzKT0+KG5bYWMocixzKSsiID0+Il09byxuKSx7fSl9OlloKHQpP3tbYFNldCgke3Quc2l6ZX0pYF06Wy4uLnQudmFsdWVzKCldLm1hcChuPT5hYyhuKSl9OmtuKHQpP2FjKHQpOlplKHQpJiYhU2UodCkmJiFkZih0KT9TdHJpbmcodCk6dCxhYz0oZSx0PSIiKT0+e3ZhciBuO3JldHVybiBrbihlKT9gU3ltYm9sKCR7KG49ZS5kZXNjcmlwdGlvbikhPW51bGw/bjp0fSlgOmV9O2xldCBHdDtjbGFzcyByZ3tjb25zdHJ1Y3Rvcih0PSExKXt0aGlzLmRldGFjaGVkPXQsdGhpcy5fYWN0aXZlPSEwLHRoaXMuX29uPTAsdGhpcy5lZmZlY3RzPVtdLHRoaXMuY2xlYW51cHM9W10sdGhpcy5faXNQYXVzZWQ9ITEsdGhpcy5fX3Zfc2tpcD0hMCx0aGlzLnBhcmVudD1HdCwhdCYmR3QmJih0aGlzLmluZGV4PShHdC5zY29wZXN8fChHdC5zY29wZXM9W10pKS5wdXNoKHRoaXMpLTEpfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfXBhdXNlKCl7aWYodGhpcy5fYWN0aXZlKXt0aGlzLl9pc1BhdXNlZD0hMDtsZXQgdCxuO2lmKHRoaXMuc2NvcGVzKWZvcih0PTAsbj10aGlzLnNjb3Blcy5sZW5ndGg7dDxuO3QrKyl0aGlzLnNjb3Blc1t0XS5wYXVzZSgpO2Zvcih0PTAsbj10aGlzLmVmZmVjdHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5lZmZlY3RzW3RdLnBhdXNlKCl9fXJlc3VtZSgpe2lmKHRoaXMuX2FjdGl2ZSYmdGhpcy5faXNQYXVzZWQpe3RoaXMuX2lzUGF1c2VkPSExO2xldCB0LG47aWYodGhpcy5zY29wZXMpZm9yKHQ9MCxuPXRoaXMuc2NvcGVzLmxlbmd0aDt0PG47dCsrKXRoaXMuc2NvcGVzW3RdLnJlc3VtZSgpO2Zvcih0PTAsbj10aGlzLmVmZmVjdHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5lZmZlY3RzW3RdLnJlc3VtZSgpfX1ydW4odCl7aWYodGhpcy5fYWN0aXZlKXtjb25zdCBuPUd0O3RyeXtyZXR1cm4gR3Q9dGhpcyx0KCl9ZmluYWxseXtHdD1ufX19b24oKXsrK3RoaXMuX29uPT09MSYmKHRoaXMucHJldlNjb3BlPUd0LEd0PXRoaXMpfW9mZigpe3RoaXMuX29uPjAmJi0tdGhpcy5fb249PT0wJiYoR3Q9dGhpcy5wcmV2U2NvcGUsdGhpcy5wcmV2U2NvcGU9dm9pZCAwKX1zdG9wKHQpe2lmKHRoaXMuX2FjdGl2ZSl7dGhpcy5fYWN0aXZlPSExO2xldCBuLHI7Zm9yKG49MCxyPXRoaXMuZWZmZWN0cy5sZW5ndGg7bjxyO24rKyl0aGlzLmVmZmVjdHNbbl0uc3RvcCgpO2Zvcih0aGlzLmVmZmVjdHMubGVuZ3RoPTAsbj0wLHI9dGhpcy5jbGVhbnVwcy5sZW5ndGg7bjxyO24rKyl0aGlzLmNsZWFudXBzW25dKCk7aWYodGhpcy5jbGVhbnVwcy5sZW5ndGg9MCx0aGlzLnNjb3Blcyl7Zm9yKG49MCxyPXRoaXMuc2NvcGVzLmxlbmd0aDtuPHI7bisrKXRoaXMuc2NvcGVzW25dLnN0b3AoITApO3RoaXMuc2NvcGVzLmxlbmd0aD0wfWlmKCF0aGlzLmRldGFjaGVkJiZ0aGlzLnBhcmVudCYmIXQpe2NvbnN0IG89dGhpcy5wYXJlbnQuc2NvcGVzLnBvcCgpO28mJm8hPT10aGlzJiYodGhpcy5wYXJlbnQuc2NvcGVzW3RoaXMuaW5kZXhdPW8sby5pbmRleD10aGlzLmluZGV4KX10aGlzLnBhcmVudD12b2lkIDB9fX1mdW5jdGlvbiBOaShlKXtyZXR1cm4gbmV3IHJnKGUpfWZ1bmN0aW9uIHFyKCl7cmV0dXJuIEd0fWZ1bmN0aW9uIFJzKGUsdD0hMSl7R3QmJkd0LmNsZWFudXBzLnB1c2goZSl9bGV0IGN0O2NvbnN0IGxjPW5ldyBXZWFrU2V0O2NsYXNzIG9ne2NvbnN0cnVjdG9yKHQpe3RoaXMuZm49dCx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9NSx0aGlzLm5leHQ9dm9pZCAwLHRoaXMuY2xlYW51cD12b2lkIDAsdGhpcy5zY2hlZHVsZXI9dm9pZCAwLEd0JiZHdC5hY3RpdmUmJkd0LmVmZmVjdHMucHVzaCh0aGlzKX1wYXVzZSgpe3RoaXMuZmxhZ3N8PTY0fXJlc3VtZSgpe3RoaXMuZmxhZ3MmNjQmJih0aGlzLmZsYWdzJj0tNjUsbGMuaGFzKHRoaXMpJiYobGMuZGVsZXRlKHRoaXMpLHRoaXMudHJpZ2dlcigpKSl9bm90aWZ5KCl7dGhpcy5mbGFncyYyJiYhKHRoaXMuZmxhZ3MmMzIpfHx0aGlzLmZsYWdzJjh8fGlnKHRoaXMpfXJ1bigpe2lmKCEodGhpcy5mbGFncyYxKSlyZXR1cm4gdGhpcy5mbigpO3RoaXMuZmxhZ3N8PTIsemQodGhpcyksYWcodGhpcyk7Y29uc3QgdD1jdCxuPWpuO2N0PXRoaXMsam49ITA7dHJ5e3JldHVybiB0aGlzLmZuKCl9ZmluYWxseXtsZyh0aGlzKSxjdD10LGpuPW4sdGhpcy5mbGFncyY9LTN9fXN0b3AoKXtpZih0aGlzLmZsYWdzJjEpe2ZvcihsZXQgdD10aGlzLmRlcHM7dDt0PXQubmV4dERlcClnZih0KTt0aGlzLmRlcHM9dGhpcy5kZXBzVGFpbD12b2lkIDAsemQodGhpcyksdGhpcy5vblN0b3AmJnRoaXMub25TdG9wKCksdGhpcy5mbGFncyY9LTJ9fXRyaWdnZXIoKXt0aGlzLmZsYWdzJjY0P2xjLmFkZCh0aGlzKTp0aGlzLnNjaGVkdWxlcj90aGlzLnNjaGVkdWxlcigpOnRoaXMucnVuSWZEaXJ0eSgpfXJ1bklmRGlydHkoKXtKYyh0aGlzKSYmdGhpcy5ydW4oKX1nZXQgZGlydHkoKXtyZXR1cm4gSmModGhpcyl9fWxldCBzZz0wLG9pLHNpO2Z1bmN0aW9uIGlnKGUsdD0hMSl7aWYoZS5mbGFnc3w9OCx0KXtlLm5leHQ9c2ksc2k9ZTtyZXR1cm59ZS5uZXh0PW9pLG9pPWV9ZnVuY3Rpb24gbWYoKXtzZysrfWZ1bmN0aW9uIGhmKCl7aWYoLS1zZz4wKXJldHVybjtpZihzaSl7bGV0IHQ9c2k7Zm9yKHNpPXZvaWQgMDt0Oyl7Y29uc3Qgbj10Lm5leHQ7dC5uZXh0PXZvaWQgMCx0LmZsYWdzJj0tOSx0PW59fWxldCBlO2Zvcig7b2k7KXtsZXQgdD1vaTtmb3Iob2k9dm9pZCAwO3Q7KXtjb25zdCBuPXQubmV4dDtpZih0Lm5leHQ9dm9pZCAwLHQuZmxhZ3MmPS05LHQuZmxhZ3MmMSl0cnl7dC50cmlnZ2VyKCl9Y2F0Y2gocil7ZXx8KGU9cil9dD1ufX1pZihlKXRocm93IGV9ZnVuY3Rpb24gYWcoZSl7Zm9yKGxldCB0PWUuZGVwczt0O3Q9dC5uZXh0RGVwKXQudmVyc2lvbj0tMSx0LnByZXZBY3RpdmVMaW5rPXQuZGVwLmFjdGl2ZUxpbmssdC5kZXAuYWN0aXZlTGluaz10fWZ1bmN0aW9uIGxnKGUpe2xldCB0LG49ZS5kZXBzVGFpbCxyPW47Zm9yKDtyOyl7Y29uc3Qgbz1yLnByZXZEZXA7ci52ZXJzaW9uPT09LTE/KHI9PT1uJiYobj1vKSxnZihyKSx0XyhyKSk6dD1yLHIuZGVwLmFjdGl2ZUxpbms9ci5wcmV2QWN0aXZlTGluayxyLnByZXZBY3RpdmVMaW5rPXZvaWQgMCxyPW99ZS5kZXBzPXQsZS5kZXBzVGFpbD1ufWZ1bmN0aW9uIEpjKGUpe2ZvcihsZXQgdD1lLmRlcHM7dDt0PXQubmV4dERlcClpZih0LmRlcC52ZXJzaW9uIT09dC52ZXJzaW9ufHx0LmRlcC5jb21wdXRlZCYmKGNnKHQuZGVwLmNvbXB1dGVkKXx8dC5kZXAudmVyc2lvbiE9PXQudmVyc2lvbikpcmV0dXJuITA7cmV0dXJuISFlLl9kaXJ0eX1mdW5jdGlvbiBjZyhlKXtpZihlLmZsYWdzJjQmJiEoZS5mbGFncyYxNil8fChlLmZsYWdzJj0tMTcsZS5nbG9iYWxWZXJzaW9uPT09bWkpfHwoZS5nbG9iYWxWZXJzaW9uPW1pLCFlLmlzU1NSJiZlLmZsYWdzJjEyOCYmKCFlLmRlcHMmJiFlLl9kaXJ0eXx8IUpjKGUpKSkpcmV0dXJuO2UuZmxhZ3N8PTI7Y29uc3QgdD1lLmRlcCxuPWN0LHI9am47Y3Q9ZSxqbj0hMDt0cnl7YWcoZSk7Y29uc3Qgbz1lLmZuKGUuX3ZhbHVlKTsodC52ZXJzaW9uPT09MHx8RnQobyxlLl92YWx1ZSkpJiYoZS5mbGFnc3w9MTI4LGUuX3ZhbHVlPW8sdC52ZXJzaW9uKyspfWNhdGNoKG8pe3Rocm93IHQudmVyc2lvbisrLG99ZmluYWxseXtjdD1uLGpuPXIsbGcoZSksZS5mbGFncyY9LTN9fWZ1bmN0aW9uIGdmKGUsdD0hMSl7Y29uc3R7ZGVwOm4scHJldlN1YjpyLG5leHRTdWI6b309ZTtpZihyJiYoci5uZXh0U3ViPW8sZS5wcmV2U3ViPXZvaWQgMCksbyYmKG8ucHJldlN1Yj1yLGUubmV4dFN1Yj12b2lkIDApLG4uc3Vicz09PWUmJihuLnN1YnM9ciwhciYmbi5jb21wdXRlZCkpe24uY29tcHV0ZWQuZmxhZ3MmPS01O2ZvcihsZXQgcz1uLmNvbXB1dGVkLmRlcHM7cztzPXMubmV4dERlcClnZihzLCEwKX0hdCYmIS0tbi5zYyYmbi5tYXAmJm4ubWFwLmRlbGV0ZShuLmtleSl9ZnVuY3Rpb24gdF8oZSl7Y29uc3R7cHJldkRlcDp0LG5leHREZXA6bn09ZTt0JiYodC5uZXh0RGVwPW4sZS5wcmV2RGVwPXZvaWQgMCksbiYmKG4ucHJldkRlcD10LGUubmV4dERlcD12b2lkIDApfWxldCBqbj0hMDtjb25zdCB1Zz1bXTtmdW5jdGlvbiBEcigpe3VnLnB1c2goam4pLGpuPSExfWZ1bmN0aW9uIExyKCl7Y29uc3QgZT11Zy5wb3AoKTtqbj1lPT09dm9pZCAwPyEwOmV9ZnVuY3Rpb24gemQoZSl7Y29uc3R7Y2xlYW51cDp0fT1lO2lmKGUuY2xlYW51cD12b2lkIDAsdCl7Y29uc3Qgbj1jdDtjdD12b2lkIDA7dHJ5e3QoKX1maW5hbGx5e2N0PW59fX1sZXQgbWk9MDtjbGFzcyBuX3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuc3ViPXQsdGhpcy5kZXA9bix0aGlzLnZlcnNpb249bi52ZXJzaW9uLHRoaXMubmV4dERlcD10aGlzLnByZXZEZXA9dGhpcy5uZXh0U3ViPXRoaXMucHJldlN1Yj10aGlzLnByZXZBY3RpdmVMaW5rPXZvaWQgMH19Y2xhc3MgaGx7Y29uc3RydWN0b3IodCl7dGhpcy5jb21wdXRlZD10LHRoaXMudmVyc2lvbj0wLHRoaXMuYWN0aXZlTGluaz12b2lkIDAsdGhpcy5zdWJzPXZvaWQgMCx0aGlzLm1hcD12b2lkIDAsdGhpcy5rZXk9dm9pZCAwLHRoaXMuc2M9MCx0aGlzLl9fdl9za2lwPSEwfXRyYWNrKHQpe2lmKCFjdHx8IWpufHxjdD09PXRoaXMuY29tcHV0ZWQpcmV0dXJuO2xldCBuPXRoaXMuYWN0aXZlTGluaztpZihuPT09dm9pZCAwfHxuLnN1YiE9PWN0KW49dGhpcy5hY3RpdmVMaW5rPW5ldyBuXyhjdCx0aGlzKSxjdC5kZXBzPyhuLnByZXZEZXA9Y3QuZGVwc1RhaWwsY3QuZGVwc1RhaWwubmV4dERlcD1uLGN0LmRlcHNUYWlsPW4pOmN0LmRlcHM9Y3QuZGVwc1RhaWw9bixmZyhuKTtlbHNlIGlmKG4udmVyc2lvbj09PS0xJiYobi52ZXJzaW9uPXRoaXMudmVyc2lvbixuLm5leHREZXApKXtjb25zdCByPW4ubmV4dERlcDtyLnByZXZEZXA9bi5wcmV2RGVwLG4ucHJldkRlcCYmKG4ucHJldkRlcC5uZXh0RGVwPXIpLG4ucHJldkRlcD1jdC5kZXBzVGFpbCxuLm5leHREZXA9dm9pZCAwLGN0LmRlcHNUYWlsLm5leHREZXA9bixjdC5kZXBzVGFpbD1uLGN0LmRlcHM9PT1uJiYoY3QuZGVwcz1yKX1yZXR1cm4gbn10cmlnZ2VyKHQpe3RoaXMudmVyc2lvbisrLG1pKyssdGhpcy5ub3RpZnkodCl9bm90aWZ5KHQpe21mKCk7dHJ5e2ZvcihsZXQgbj10aGlzLnN1YnM7bjtuPW4ucHJldlN1YiluLnN1Yi5ub3RpZnkoKSYmbi5zdWIuZGVwLm5vdGlmeSgpfWZpbmFsbHl7aGYoKX19fWZ1bmN0aW9uIGZnKGUpe2lmKGUuZGVwLnNjKyssZS5zdWIuZmxhZ3MmNCl7Y29uc3QgdD1lLmRlcC5jb21wdXRlZDtpZih0JiYhZS5kZXAuc3Vicyl7dC5mbGFnc3w9MjA7Zm9yKGxldCByPXQuZGVwcztyO3I9ci5uZXh0RGVwKWZnKHIpfWNvbnN0IG49ZS5kZXAuc3VicztuIT09ZSYmKGUucHJldlN1Yj1uLG4mJihuLm5leHRTdWI9ZSkpLGUuZGVwLnN1YnM9ZX19Y29uc3QgTGE9bmV3IFdlYWtNYXAsUm89U3ltYm9sKCIiKSxYYz1TeW1ib2woIiIpLGhpPVN5bWJvbCgiIik7ZnVuY3Rpb24gS3QoZSx0LG4pe2lmKGpuJiZjdCl7bGV0IHI9TGEuZ2V0KGUpO3J8fExhLnNldChlLHI9bmV3IE1hcCk7bGV0IG89ci5nZXQobik7b3x8KHIuc2V0KG4sbz1uZXcgaGwpLG8ubWFwPXIsby5rZXk9biksby50cmFjaygpfX1mdW5jdGlvbiBPcihlLHQsbixyLG8scyl7Y29uc3QgaT1MYS5nZXQoZSk7aWYoIWkpe21pKys7cmV0dXJufWNvbnN0IGE9bD0+e2wmJmwudHJpZ2dlcigpfTtpZihtZigpLHQ9PT0iY2xlYXIiKWkuZm9yRWFjaChhKTtlbHNle2NvbnN0IGw9U2UoZSksdT1sJiZmbChuKTtpZihsJiZuPT09Imxlbmd0aCIpe2NvbnN0IGM9TnVtYmVyKHIpO2kuZm9yRWFjaCgoZixkKT0+eyhkPT09Imxlbmd0aCJ8fGQ9PT1oaXx8IWtuKGQpJiZkPj1jKSYmYShmKX0pfWVsc2Ugc3dpdGNoKChuIT09dm9pZCAwfHxpLmhhcyh2b2lkIDApKSYmYShpLmdldChuKSksdSYmYShpLmdldChoaSkpLHQpe2Nhc2UiYWRkIjpsP3UmJmEoaS5nZXQoImxlbmd0aCIpKTooYShpLmdldChSbykpLGZzKGUpJiZhKGkuZ2V0KFhjKSkpO2JyZWFrO2Nhc2UiZGVsZXRlIjpsfHwoYShpLmdldChSbykpLGZzKGUpJiZhKGkuZ2V0KFhjKSkpO2JyZWFrO2Nhc2Uic2V0IjpmcyhlKSYmYShpLmdldChSbykpO2JyZWFrfX1oZigpfWZ1bmN0aW9uIHJfKGUsdCl7Y29uc3Qgbj1MYS5nZXQoZSk7cmV0dXJuIG4mJm4uZ2V0KHQpfWZ1bmN0aW9uIFlvKGUpe2NvbnN0IHQ9amUoZSk7cmV0dXJuIHQ9PT1lP3Q6KEt0KHQsIml0ZXJhdGUiLGhpKSx4bihlKT90OnQubWFwKFVuKSl9ZnVuY3Rpb24gZ2woZSl7cmV0dXJuIEt0KGU9amUoZSksIml0ZXJhdGUiLGhpKSxlfWZ1bmN0aW9uIGlyKGUsdCl7cmV0dXJuIGRyKGUpP19zKGNyKGUpP1VuKHQpOnQpOlVuKHQpfWNvbnN0IG9fPXtfX3Byb3RvX186bnVsbCxbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBjYyh0aGlzLFN5bWJvbC5pdGVyYXRvcixlPT5pcih0aGlzLGUpKX0sY29uY2F0KC4uLmUpe3JldHVybiBZbyh0aGlzKS5jb25jYXQoLi4uZS5tYXAodD0+U2UodCk/WW8odCk6dCkpfSxlbnRyaWVzKCl7cmV0dXJuIGNjKHRoaXMsImVudHJpZXMiLGU9PihlWzFdPWlyKHRoaXMsZVsxXSksZSkpfSxldmVyeShlLHQpe3JldHVybiB3cih0aGlzLCJldmVyeSIsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxmaWx0ZXIoZSx0KXtyZXR1cm4gd3IodGhpcywiZmlsdGVyIixlLHQsbj0+bi5tYXAocj0+aXIodGhpcyxyKSksYXJndW1lbnRzKX0sZmluZChlLHQpe3JldHVybiB3cih0aGlzLCJmaW5kIixlLHQsbj0+aXIodGhpcyxuKSxhcmd1bWVudHMpfSxmaW5kSW5kZXgoZSx0KXtyZXR1cm4gd3IodGhpcywiZmluZEluZGV4IixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGZpbmRMYXN0KGUsdCl7cmV0dXJuIHdyKHRoaXMsImZpbmRMYXN0IixlLHQsbj0+aXIodGhpcyxuKSxhcmd1bWVudHMpfSxmaW5kTGFzdEluZGV4KGUsdCl7cmV0dXJuIHdyKHRoaXMsImZpbmRMYXN0SW5kZXgiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZm9yRWFjaChlLHQpe3JldHVybiB3cih0aGlzLCJmb3JFYWNoIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGluY2x1ZGVzKC4uLmUpe3JldHVybiB1Yyh0aGlzLCJpbmNsdWRlcyIsZSl9LGluZGV4T2YoLi4uZSl7cmV0dXJuIHVjKHRoaXMsImluZGV4T2YiLGUpfSxqb2luKGUpe3JldHVybiBZbyh0aGlzKS5qb2luKGUpfSxsYXN0SW5kZXhPZiguLi5lKXtyZXR1cm4gdWModGhpcywibGFzdEluZGV4T2YiLGUpfSxtYXAoZSx0KXtyZXR1cm4gd3IodGhpcywibWFwIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LHBvcCgpe3JldHVybiBxcyh0aGlzLCJwb3AiKX0scHVzaCguLi5lKXtyZXR1cm4gcXModGhpcywicHVzaCIsZSl9LHJlZHVjZShlLC4uLnQpe3JldHVybiBqZCh0aGlzLCJyZWR1Y2UiLGUsdCl9LHJlZHVjZVJpZ2h0KGUsLi4udCl7cmV0dXJuIGpkKHRoaXMsInJlZHVjZVJpZ2h0IixlLHQpfSxzaGlmdCgpe3JldHVybiBxcyh0aGlzLCJzaGlmdCIpfSxzb21lKGUsdCl7cmV0dXJuIHdyKHRoaXMsInNvbWUiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sc3BsaWNlKC4uLmUpe3JldHVybiBxcyh0aGlzLCJzcGxpY2UiLGUpfSx0b1JldmVyc2VkKCl7cmV0dXJuIFlvKHRoaXMpLnRvUmV2ZXJzZWQoKX0sdG9Tb3J0ZWQoZSl7cmV0dXJuIFlvKHRoaXMpLnRvU29ydGVkKGUpfSx0b1NwbGljZWQoLi4uZSl7cmV0dXJuIFlvKHRoaXMpLnRvU3BsaWNlZCguLi5lKX0sdW5zaGlmdCguLi5lKXtyZXR1cm4gcXModGhpcywidW5zaGlmdCIsZSl9LHZhbHVlcygpe3JldHVybiBjYyh0aGlzLCJ2YWx1ZXMiLGU9PmlyKHRoaXMsZSkpfX07ZnVuY3Rpb24gY2MoZSx0LG4pe2NvbnN0IHI9Z2woZSksbz1yW3RdKCk7cmV0dXJuIHIhPT1lJiYheG4oZSkmJihvLl9uZXh0PW8ubmV4dCxvLm5leHQ9KCk9Pntjb25zdCBzPW8uX25leHQoKTtyZXR1cm4gcy5kb25lfHwocy52YWx1ZT1uKHMudmFsdWUpKSxzfSksb31jb25zdCBzXz1BcnJheS5wcm90b3R5cGU7ZnVuY3Rpb24gd3IoZSx0LG4scixvLHMpe2NvbnN0IGk9Z2woZSksYT1pIT09ZSYmIXhuKGUpLGw9aVt0XTtpZihsIT09c19bdF0pe2NvbnN0IGY9bC5hcHBseShlLHMpO3JldHVybiBhP1VuKGYpOmZ9bGV0IHU9bjtpIT09ZSYmKGE/dT1mdW5jdGlvbihmLGQpe3JldHVybiBuLmNhbGwodGhpcyxpcihlLGYpLGQsZSl9Om4ubGVuZ3RoPjImJih1PWZ1bmN0aW9uKGYsZCl7cmV0dXJuIG4uY2FsbCh0aGlzLGYsZCxlKX0pKTtjb25zdCBjPWwuY2FsbChpLHUscik7cmV0dXJuIGEmJm8/byhjKTpjfWZ1bmN0aW9uIGpkKGUsdCxuLHIpe2NvbnN0IG89Z2woZSkscz1vIT09ZSYmIXhuKGUpO2xldCBpPW4sYT0hMTtvIT09ZSYmKHM/KGE9ci5sZW5ndGg9PT0wLGk9ZnVuY3Rpb24odSxjLGYpe3JldHVybiBhJiYoYT0hMSx1PWlyKGUsdSkpLG4uY2FsbCh0aGlzLHUsaXIoZSxjKSxmLGUpfSk6bi5sZW5ndGg+MyYmKGk9ZnVuY3Rpb24odSxjLGYpe3JldHVybiBuLmNhbGwodGhpcyx1LGMsZixlKX0pKTtjb25zdCBsPW9bdF0oaSwuLi5yKTtyZXR1cm4gYT9pcihlLGwpOmx9ZnVuY3Rpb24gdWMoZSx0LG4pe2NvbnN0IHI9amUoZSk7S3QociwiaXRlcmF0ZSIsaGkpO2NvbnN0IG89clt0XSguLi5uKTtyZXR1cm4obz09PS0xfHxvPT09ITEpJiZibChuWzBdKT8oblswXT1qZShuWzBdKSxyW3RdKC4uLm4pKTpvfWZ1bmN0aW9uIHFzKGUsdCxuPVtdKXtEcigpLG1mKCk7Y29uc3Qgcj1qZShlKVt0XS5hcHBseShlLG4pO3JldHVybiBoZigpLExyKCkscn1jb25zdCBpXz11ZigiX19wcm90b19fLF9fdl9pc1JlZixfX2lzVnVlIiksZGc9bmV3IFNldChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpLmZpbHRlcihlPT5lIT09ImFyZ3VtZW50cyImJmUhPT0iY2FsbGVyIikubWFwKGU9PlN5bWJvbFtlXSkuZmlsdGVyKGtuKSk7ZnVuY3Rpb24gYV8oZSl7a24oZSl8fChlPVN0cmluZyhlKSk7Y29uc3QgdD1qZSh0aGlzKTtyZXR1cm4gS3QodCwiaGFzIixlKSx0Lmhhc093blByb3BlcnR5KGUpfWNsYXNzIHBne2NvbnN0cnVjdG9yKHQ9ITEsbj0hMSl7dGhpcy5faXNSZWFkb25seT10LHRoaXMuX2lzU2hhbGxvdz1ufWdldCh0LG4scil7aWYobj09PSJfX3Zfc2tpcCIpcmV0dXJuIHQuX192X3NraXA7Y29uc3Qgbz10aGlzLl9pc1JlYWRvbmx5LHM9dGhpcy5faXNTaGFsbG93O2lmKG49PT0iX192X2lzUmVhY3RpdmUiKXJldHVybiFvO2lmKG49PT0iX192X2lzUmVhZG9ubHkiKXJldHVybiBvO2lmKG49PT0iX192X2lzU2hhbGxvdyIpcmV0dXJuIHM7aWYobj09PSJfX3ZfcmF3IilyZXR1cm4gcj09PShvP3M/Ymc6dmc6cz95ZzpnZykuZ2V0KHQpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yocik/dDp2b2lkIDA7Y29uc3QgaT1TZSh0KTtpZighbyl7bGV0IGw7aWYoaSYmKGw9b19bbl0pKXJldHVybiBsO2lmKG49PT0iaGFzT3duUHJvcGVydHkiKXJldHVybiBhX31jb25zdCBhPVJlZmxlY3QuZ2V0KHQsbiwkZSh0KT90OnIpO2lmKChrbihuKT9kZy5oYXMobik6aV8obikpfHwob3x8S3QodCwiZ2V0IixuKSxzKSlyZXR1cm4gYTtpZigkZShhKSl7Y29uc3QgbD1pJiZmbChuKT9hOmEudmFsdWU7cmV0dXJuIG8mJlplKGwpPyRyKGwpOmx9cmV0dXJuIFplKGEpP28/JHIoYSk6YnQoYSk6YX19Y2xhc3MgbWcgZXh0ZW5kcyBwZ3tjb25zdHJ1Y3Rvcih0PSExKXtzdXBlcighMSx0KX1zZXQodCxuLHIsbyl7bGV0IHM9dFtuXTtjb25zdCBpPVNlKHQpJiZmbChuKTtpZighdGhpcy5faXNTaGFsbG93KXtjb25zdCB1PWRyKHMpO2lmKCF4bihyKSYmIWRyKHIpJiYocz1qZShzKSxyPWplKHIpKSwhaSYmJGUocykmJiEkZShyKSlyZXR1cm4gdXx8KHMudmFsdWU9ciksITB9Y29uc3QgYT1pP051bWJlcihuKTx0Lmxlbmd0aDpudCh0LG4pLGw9UmVmbGVjdC5zZXQodCxuLHIsJGUodCk/dDpvKTtyZXR1cm4gdD09PWplKG8pJiYoYT9GdChyLHMpJiZPcih0LCJzZXQiLG4scik6T3IodCwiYWRkIixuLHIpKSxsfWRlbGV0ZVByb3BlcnR5KHQsbil7Y29uc3Qgcj1udCh0LG4pO3Rbbl07Y29uc3Qgbz1SZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbik7cmV0dXJuIG8mJnImJk9yKHQsImRlbGV0ZSIsbix2b2lkIDApLG99aGFzKHQsbil7Y29uc3Qgcj1SZWZsZWN0Lmhhcyh0LG4pO3JldHVybigha24obil8fCFkZy5oYXMobikpJiZLdCh0LCJoYXMiLG4pLHJ9b3duS2V5cyh0KXtyZXR1cm4gS3QodCwiaXRlcmF0ZSIsU2UodCk/Imxlbmd0aCI6Um8pLFJlZmxlY3Qub3duS2V5cyh0KX19Y2xhc3MgaGcgZXh0ZW5kcyBwZ3tjb25zdHJ1Y3Rvcih0PSExKXtzdXBlcighMCx0KX1zZXQodCxuKXtyZXR1cm4hMH1kZWxldGVQcm9wZXJ0eSh0LG4pe3JldHVybiEwfX1jb25zdCBsXz1uZXcgbWcsY189bmV3IGhnLHVfPW5ldyBtZyghMCksZl89bmV3IGhnKCEwKSxaYz1lPT5lLFFpPWU9PlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZnVuY3Rpb24gZF8oZSx0LG4pe3JldHVybiBmdW5jdGlvbiguLi5yKXtjb25zdCBvPXRoaXMuX192X3JhdyxzPWplKG8pLGk9ZnMocyksYT1lPT09ImVudHJpZXMifHxlPT09U3ltYm9sLml0ZXJhdG9yJiZpLGw9ZT09PSJrZXlzIiYmaSx1PW9bZV0oLi4uciksYz1uP1pjOnQ/X3M6VW47cmV0dXJuIXQmJkt0KHMsIml0ZXJhdGUiLGw/WGM6Um8pLHZ0KE9iamVjdC5jcmVhdGUodSkse25leHQoKXtjb25zdHt2YWx1ZTpmLGRvbmU6ZH09dS5uZXh0KCk7cmV0dXJuIGQ/e3ZhbHVlOmYsZG9uZTpkfTp7dmFsdWU6YT9bYyhmWzBdKSxjKGZbMV0pXTpjKGYpLGRvbmU6ZH19fSl9fWZ1bmN0aW9uIFlpKGUpe3JldHVybiBmdW5jdGlvbiguLi50KXtyZXR1cm4gZT09PSJkZWxldGUiPyExOmU9PT0iY2xlYXIiP3ZvaWQgMDp0aGlzfX1mdW5jdGlvbiBwXyhlLHQpe2NvbnN0IG49e2dldChvKXtjb25zdCBzPXRoaXMuX192X3JhdyxpPWplKHMpLGE9amUobyk7ZXx8KEZ0KG8sYSkmJkt0KGksImdldCIsbyksS3QoaSwiZ2V0IixhKSk7Y29uc3R7aGFzOmx9PVFpKGkpLHU9dD9aYzplP19zOlVuO2lmKGwuY2FsbChpLG8pKXJldHVybiB1KHMuZ2V0KG8pKTtpZihsLmNhbGwoaSxhKSlyZXR1cm4gdShzLmdldChhKSk7cyE9PWkmJnMuZ2V0KG8pfSxnZXQgc2l6ZSgpe2NvbnN0IG89dGhpcy5fX3ZfcmF3O3JldHVybiFlJiZLdChqZShvKSwiaXRlcmF0ZSIsUm8pLG8uc2l6ZX0saGFzKG8pe2NvbnN0IHM9dGhpcy5fX3ZfcmF3LGk9amUocyksYT1qZShvKTtyZXR1cm4gZXx8KEZ0KG8sYSkmJkt0KGksImhhcyIsbyksS3QoaSwiaGFzIixhKSksbz09PWE/cy5oYXMobyk6cy5oYXMobyl8fHMuaGFzKGEpfSxmb3JFYWNoKG8scyl7Y29uc3QgaT10aGlzLGE9aS5fX3ZfcmF3LGw9amUoYSksdT10P1pjOmU/X3M6VW47cmV0dXJuIWUmJkt0KGwsIml0ZXJhdGUiLFJvKSxhLmZvckVhY2goKGMsZik9Pm8uY2FsbChzLHUoYyksdShmKSxpKSl9fTtyZXR1cm4gdnQobixlP3thZGQ6WWkoImFkZCIpLHNldDpZaSgic2V0IiksZGVsZXRlOllpKCJkZWxldGUiKSxjbGVhcjpZaSgiY2xlYXIiKX06e2FkZChvKXtjb25zdCBzPWplKHRoaXMpLGk9UWkocyksYT1qZShvKSxsPSF0JiYheG4obykmJiFkcihvKT9hOm87cmV0dXJuIGkuaGFzLmNhbGwocyxsKXx8RnQobyxsKSYmaS5oYXMuY2FsbChzLG8pfHxGdChhLGwpJiZpLmhhcy5jYWxsKHMsYSl8fChzLmFkZChsKSxPcihzLCJhZGQiLGwsbCkpLHRoaXN9LHNldChvLHMpeyF0JiYheG4ocykmJiFkcihzKSYmKHM9amUocykpO2NvbnN0IGk9amUodGhpcykse2hhczphLGdldDpsfT1RaShpKTtsZXQgdT1hLmNhbGwoaSxvKTt1fHwobz1qZShvKSx1PWEuY2FsbChpLG8pKTtjb25zdCBjPWwuY2FsbChpLG8pO3JldHVybiBpLnNldChvLHMpLHU/RnQocyxjKSYmT3IoaSwic2V0IixvLHMpOk9yKGksImFkZCIsbyxzKSx0aGlzfSxkZWxldGUobyl7Y29uc3Qgcz1qZSh0aGlzKSx7aGFzOmksZ2V0OmF9PVFpKHMpO2xldCBsPWkuY2FsbChzLG8pO2x8fChvPWplKG8pLGw9aS5jYWxsKHMsbykpLGEmJmEuY2FsbChzLG8pO2NvbnN0IHU9cy5kZWxldGUobyk7cmV0dXJuIGwmJk9yKHMsImRlbGV0ZSIsbyx2b2lkIDApLHV9LGNsZWFyKCl7Y29uc3Qgbz1qZSh0aGlzKSxzPW8uc2l6ZSE9PTAsaT1vLmNsZWFyKCk7cmV0dXJuIHMmJk9yKG8sImNsZWFyIix2b2lkIDAsdm9pZCAwKSxpfX0pLFsia2V5cyIsInZhbHVlcyIsImVudHJpZXMiLFN5bWJvbC5pdGVyYXRvcl0uZm9yRWFjaChvPT57bltvXT1kXyhvLGUsdCl9KSxufWZ1bmN0aW9uIHlsKGUsdCl7Y29uc3Qgbj1wXyhlLHQpO3JldHVybihyLG8scyk9Pm89PT0iX192X2lzUmVhY3RpdmUiPyFlOm89PT0iX192X2lzUmVhZG9ubHkiP2U6bz09PSJfX3ZfcmF3Ij9yOlJlZmxlY3QuZ2V0KG50KG4sbykmJm8gaW4gcj9uOnIsbyxzKX1jb25zdCBtXz17Z2V0OnlsKCExLCExKX0saF89e2dldDp5bCghMSwhMCl9LGdfPXtnZXQ6eWwoITAsITEpfSx5Xz17Z2V0OnlsKCEwLCEwKX0sZ2c9bmV3IFdlYWtNYXAseWc9bmV3IFdlYWtNYXAsdmc9bmV3IFdlYWtNYXAsYmc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdl8oZSl7c3dpdGNoKGUpe2Nhc2UiT2JqZWN0IjpjYXNlIkFycmF5IjpyZXR1cm4gMTtjYXNlIk1hcCI6Y2FzZSJTZXQiOmNhc2UiV2Vha01hcCI6Y2FzZSJXZWFrU2V0IjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBiXyhlKXtyZXR1cm4gZS5fX3Zfc2tpcHx8IU9iamVjdC5pc0V4dGVuc2libGUoZSk/MDp2XyhVdyhlKSl9ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIGRyKGUpP2U6dmwoZSwhMSxsXyxtXyxnZyl9ZnVuY3Rpb24gUG4oZSl7cmV0dXJuIHZsKGUsITEsdV8saF8seWcpfWZ1bmN0aW9uICRyKGUpe3JldHVybiB2bChlLCEwLGNfLGdfLHZnKX1mdW5jdGlvbiBUcihlKXtyZXR1cm4gdmwoZSwhMCxmXyx5XyxiZyl9ZnVuY3Rpb24gdmwoZSx0LG4scixvKXtpZighWmUoZSl8fGUuX192X3JhdyYmISh0JiZlLl9fdl9pc1JlYWN0aXZlKSlyZXR1cm4gZTtjb25zdCBzPWJfKGUpO2lmKHM9PT0wKXJldHVybiBlO2NvbnN0IGk9by5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPW5ldyBQcm94eShlLHM9PT0yP3I6bik7cmV0dXJuIG8uc2V0KGUsYSksYX1mdW5jdGlvbiBjcihlKXtyZXR1cm4gZHIoZSk/Y3IoZS5fX3ZfcmF3KTohIShlJiZlLl9fdl9pc1JlYWN0aXZlKX1mdW5jdGlvbiBkcihlKXtyZXR1cm4hIShlJiZlLl9fdl9pc1JlYWRvbmx5KX1mdW5jdGlvbiB4bihlKXtyZXR1cm4hIShlJiZlLl9fdl9pc1NoYWxsb3cpfWZ1bmN0aW9uIGJsKGUpe3JldHVybiBlPyEhZS5fX3ZfcmF3OiExfWZ1bmN0aW9uIGplKGUpe2NvbnN0IHQ9ZSYmZS5fX3ZfcmF3O3JldHVybiB0P2plKHQpOmV9ZnVuY3Rpb24gTG8oZSl7cmV0dXJuIW50KGUsIl9fdl9za2lwIikmJk9iamVjdC5pc0V4dGVuc2libGUoZSkmJlhoKGUsIl9fdl9za2lwIiwhMCksZX1jb25zdCBVbj1lPT5aZShlKT9idChlKTplLF9zPWU9PlplKGUpPyRyKGUpOmU7ZnVuY3Rpb24gJGUoZSl7cmV0dXJuIGU/ZS5fX3ZfaXNSZWY9PT0hMDohMX1mdW5jdGlvbiBHKGUpe3JldHVybiB3ZyhlLCExKX1mdW5jdGlvbiBPZShlKXtyZXR1cm4gd2coZSwhMCl9ZnVuY3Rpb24gd2coZSx0KXtyZXR1cm4gJGUoZSk/ZTpuZXcgd18oZSx0KX1jbGFzcyB3X3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuZGVwPW5ldyBobCx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLl9fdl9pc1NoYWxsb3c9ITEsdGhpcy5fcmF3VmFsdWU9bj90OmplKHQpLHRoaXMuX3ZhbHVlPW4/dDpVbih0KSx0aGlzLl9fdl9pc1NoYWxsb3c9bn1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5kZXAudHJhY2soKSx0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7Y29uc3Qgbj10aGlzLl9yYXdWYWx1ZSxyPXRoaXMuX192X2lzU2hhbGxvd3x8eG4odCl8fGRyKHQpO3Q9cj90OmplKHQpLEZ0KHQsbikmJih0aGlzLl9yYXdWYWx1ZT10LHRoaXMuX3ZhbHVlPXI/dDpVbih0KSx0aGlzLmRlcC50cmlnZ2VyKCkpfX1mdW5jdGlvbiBfXyhlKXtlLmRlcCYmZS5kZXAudHJpZ2dlcigpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuICRlKGUpP2UudmFsdWU6ZX1mdW5jdGlvbiBFZShlKXtyZXR1cm4gQ2UoZSk/ZSgpOmcoZSl9Y29uc3QgeF89e2dldDooZSx0LG4pPT50PT09Il9fdl9yYXciP2U6ZyhSZWZsZWN0LmdldChlLHQsbikpLHNldDooZSx0LG4scik9Pntjb25zdCBvPWVbdF07cmV0dXJuICRlKG8pJiYhJGUobik/KG8udmFsdWU9biwhMCk6UmVmbGVjdC5zZXQoZSx0LG4scil9fTtmdW5jdGlvbiBfZyhlKXtyZXR1cm4gY3IoZSk/ZTpuZXcgUHJveHkoZSx4Xyl9Y2xhc3MgU197Y29uc3RydWN0b3IodCl7dGhpcy5fX3ZfaXNSZWY9ITAsdGhpcy5fdmFsdWU9dm9pZCAwO2NvbnN0IG49dGhpcy5kZXA9bmV3IGhsLHtnZXQ6cixzZXQ6b309dChuLnRyYWNrLmJpbmQobiksbi50cmlnZ2VyLmJpbmQobikpO3RoaXMuX2dldD1yLHRoaXMuX3NldD1vfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXQoKX1zZXQgdmFsdWUodCl7dGhpcy5fc2V0KHQpfX1mdW5jdGlvbiB3bChlKXtyZXR1cm4gbmV3IFNfKGUpfWZ1bmN0aW9uIEVuKGUpe2NvbnN0IHQ9U2UoZSk/bmV3IEFycmF5KGUubGVuZ3RoKTp7fTtmb3IoY29uc3QgbiBpbiBlKXRbbl09eGcoZSxuKTtyZXR1cm4gdH1jbGFzcyBrX3tjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5fb2JqZWN0PXQsdGhpcy5fZGVmYXVsdFZhbHVlPXIsdGhpcy5fX3ZfaXNSZWY9ITAsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuX2tleT1rbihuKT9uOlN0cmluZyhuKSx0aGlzLl9yYXc9amUodCk7bGV0IG89ITAscz10O2lmKCFTZSh0KXx8a24odGhpcy5fa2V5KXx8IWZsKHRoaXMuX2tleSkpZG8gbz0hYmwocyl8fHhuKHMpO3doaWxlKG8mJihzPXMuX192X3JhdykpO3RoaXMuX3NoYWxsb3c9b31nZXQgdmFsdWUoKXtsZXQgdD10aGlzLl9vYmplY3RbdGhpcy5fa2V5XTtyZXR1cm4gdGhpcy5fc2hhbGxvdyYmKHQ9Zyh0KSksdGhpcy5fdmFsdWU9dD09PXZvaWQgMD90aGlzLl9kZWZhdWx0VmFsdWU6dH1zZXQgdmFsdWUodCl7aWYodGhpcy5fc2hhbGxvdyYmJGUodGhpcy5fcmF3W3RoaXMuX2tleV0pKXtjb25zdCBuPXRoaXMuX29iamVjdFt0aGlzLl9rZXldO2lmKCRlKG4pKXtuLnZhbHVlPXQ7cmV0dXJufX10aGlzLl9vYmplY3RbdGhpcy5fa2V5XT10fWdldCBkZXAoKXtyZXR1cm4gcl8odGhpcy5fcmF3LHRoaXMuX2tleSl9fWNsYXNzIEVfe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzUmVhZG9ubHk9ITAsdGhpcy5fdmFsdWU9dm9pZCAwfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXR0ZXIoKX19ZnVuY3Rpb24geXQoZSx0LG4pe3JldHVybiAkZShlKT9lOkNlKGUpP25ldyBFXyhlKTpaZShlKSYmYXJndW1lbnRzLmxlbmd0aD4xP3hnKGUsdCxuKTpHKGUpfWZ1bmN0aW9uIHhnKGUsdCxuKXtyZXR1cm4gbmV3IGtfKGUsdCxuKX1jbGFzcyBUX3tjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5mbj10LHRoaXMuc2V0dGVyPW4sdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuZGVwPW5ldyBobCh0aGlzKSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9MTYsdGhpcy5nbG9iYWxWZXJzaW9uPW1pLTEsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmVmZmVjdD10aGlzLHRoaXMuX192X2lzUmVhZG9ubHk9IW4sdGhpcy5pc1NTUj1yfW5vdGlmeSgpe2lmKHRoaXMuZmxhZ3N8PTE2LCEodGhpcy5mbGFncyY4KSYmY3QhPT10aGlzKXJldHVybiBpZyh0aGlzLCEwKSwhMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuZGVwLnRyYWNrKCk7cmV0dXJuIGNnKHRoaXMpLHQmJih0LnZlcnNpb249dGhpcy5kZXAudmVyc2lvbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe3RoaXMuc2V0dGVyJiZ0aGlzLnNldHRlcih0KX19ZnVuY3Rpb24gQ18oZSx0LG49ITEpe2xldCByLG87cmV0dXJuIENlKGUpP3I9ZToocj1lLmdldCxvPWUuc2V0KSxuZXcgVF8ocixvLG4pfWNvbnN0IEppPXt9LCRhPW5ldyBXZWFrTWFwO2xldCBUbztmdW5jdGlvbiBBXyhlLHQ9ITEsbj1Ubyl7aWYobil7bGV0IHI9JGEuZ2V0KG4pO3J8fCRhLnNldChuLHI9W10pLHIucHVzaChlKX19ZnVuY3Rpb24gT18oZSx0LG49WWUpe2NvbnN0e2ltbWVkaWF0ZTpyLGRlZXA6byxvbmNlOnMsc2NoZWR1bGVyOmksYXVnbWVudEpvYjphLGNhbGw6bH09bix1PWI9Pm8/Yjp4bihiKXx8bz09PSExfHxvPT09MD9QcihiLDEpOlByKGIpO2xldCBjLGYsZCxwLG09ITEseT0hMTtpZigkZShlKT8oZj0oKT0+ZS52YWx1ZSxtPXhuKGUpKTpjcihlKT8oZj0oKT0+dShlKSxtPSEwKTpTZShlKT8oeT0hMCxtPWUuc29tZShiPT5jcihiKXx8eG4oYikpLGY9KCk9PmUubWFwKGI9PntpZigkZShiKSlyZXR1cm4gYi52YWx1ZTtpZihjcihiKSlyZXR1cm4gdShiKTtpZihDZShiKSlyZXR1cm4gbD9sKGIsMik6YigpfSkpOkNlKGUpP3Q/Zj1sPygpPT5sKGUsMik6ZTpmPSgpPT57aWYoZCl7RHIoKTt0cnl7ZCgpfWZpbmFsbHl7THIoKX19Y29uc3QgYj1UbztUbz1jO3RyeXtyZXR1cm4gbD9sKGUsMyxbcF0pOmUocCl9ZmluYWxseXtUbz1ifX06Zj1scix0JiZvKXtjb25zdCBiPWYseD1vPT09ITA/MS8wOm87Zj0oKT0+UHIoYigpLHgpfWNvbnN0IF89cXIoKSx3PSgpPT57Yy5zdG9wKCksXyYmXy5hY3RpdmUmJmZmKF8uZWZmZWN0cyxjKX07aWYocyYmdCl7Y29uc3QgYj10O3Q9KC4uLngpPT57YiguLi54KSx3KCl9fWxldCB2PXk/bmV3IEFycmF5KGUubGVuZ3RoKS5maWxsKEppKTpKaTtjb25zdCBoPWI9PntpZighKCEoYy5mbGFncyYxKXx8IWMuZGlydHkmJiFiKSlpZih0KXtjb25zdCB4PWMucnVuKCk7aWYob3x8bXx8KHk/eC5zb21lKChTLGspPT5GdChTLHZba10pKTpGdCh4LHYpKSl7ZCYmZCgpO2NvbnN0IFM9VG87VG89Yzt0cnl7Y29uc3Qgaz1beCx2PT09Smk/dm9pZCAwOnkmJnZbMF09PT1KaT9bXTp2LHBdO3Y9eCxsP2wodCwzLGspOnQoLi4uayl9ZmluYWxseXtUbz1TfX19ZWxzZSBjLnJ1bigpfTtyZXR1cm4gYSYmYShoKSxjPW5ldyBvZyhmKSxjLnNjaGVkdWxlcj1pPygpPT5pKGgsITEpOmgscD1iPT5BXyhiLCExLGMpLGQ9Yy5vblN0b3A9KCk9Pntjb25zdCBiPSRhLmdldChjKTtpZihiKXtpZihsKWwoYiw0KTtlbHNlIGZvcihjb25zdCB4IG9mIGIpeCgpOyRhLmRlbGV0ZShjKX19LHQ/cj9oKCEwKTp2PWMucnVuKCk6aT9pKGguYmluZChudWxsLCEwKSwhMCk6Yy5ydW4oKSx3LnBhdXNlPWMucGF1c2UuYmluZChjKSx3LnJlc3VtZT1jLnJlc3VtZS5iaW5kKGMpLHcuc3RvcD13LHd9ZnVuY3Rpb24gUHIoZSx0PTEvMCxuKXtpZih0PD0wfHwhWmUoZSl8fGUuX192X3NraXB8fChuPW58fG5ldyBNYXAsKG4uZ2V0KGUpfHwwKT49dCkpcmV0dXJuIGU7aWYobi5zZXQoZSx0KSx0LS0sJGUoZSkpUHIoZS52YWx1ZSx0LG4pO2Vsc2UgaWYoU2UoZSkpZm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspUHIoZVtyXSx0LG4pO2Vsc2UgaWYoWWgoZSl8fGZzKGUpKWUuZm9yRWFjaChyPT57UHIocix0LG4pfSk7ZWxzZSBpZihkZihlKSl7Zm9yKGNvbnN0IHIgaW4gZSlQcihlW3JdLHQsbik7Zm9yKGNvbnN0IHIgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSlPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmUHIoZVtyXSx0LG4pfXJldHVybiBlfWZ1bmN0aW9uIERpKGUsdCxuLHIpe3RyeXtyZXR1cm4gcj9lKC4uLnIpOmUoKX1jYXRjaChvKXtOcyhvLHQsbil9fWZ1bmN0aW9uIEhuKGUsdCxuLHIpe2lmKENlKGUpKXtjb25zdCBvPURpKGUsdCxuLHIpO3JldHVybiBvJiZ1bChvKSYmby5jYXRjaChzPT57TnMocyx0LG4pfSksb31pZihTZShlKSl7Y29uc3Qgbz1bXTtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKylvLnB1c2goSG4oZVtzXSx0LG4scikpO3JldHVybiBvfX1mdW5jdGlvbiBOcyhlLHQsbixyPSEwKXtjb25zdCBvPXQ/dC52bm9kZTpudWxsLHtlcnJvckhhbmRsZXI6cyx0aHJvd1VuaGFuZGxlZEVycm9ySW5Qcm9kdWN0aW9uOml9PXQmJnQuYXBwQ29udGV4dC5jb25maWd8fFllO2lmKHQpe2xldCBhPXQucGFyZW50O2NvbnN0IGw9dC5wcm94eSx1PWBodHRwczovL3Z1ZWpzLm9yZy9lcnJvci1yZWZlcmVuY2UvI3J1bnRpbWUtJHtufWA7Zm9yKDthOyl7Y29uc3QgYz1hLmVjO2lmKGMpe2ZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7ZisrKWlmKGNbZl0oZSxsLHUpPT09ITEpcmV0dXJufWE9YS5wYXJlbnR9aWYocyl7RHIoKSxEaShzLG51bGwsMTAsW2UsbCx1XSksTHIoKTtyZXR1cm59fVBfKGUsbixvLHIsaSl9ZnVuY3Rpb24gUF8oZSx0LG4scj0hMCxvPSExKXtpZihvKXRocm93IGV9Y29uc3Qgbm49W107bGV0IHJyPS0xO2NvbnN0IGRzPVtdO2xldCBubz1udWxsLG9zPTA7Y29uc3QgU2c9UHJvbWlzZS5yZXNvbHZlKCk7bGV0IE1hPW51bGw7ZnVuY3Rpb24gaXQoZSl7Y29uc3QgdD1NYXx8U2c7cmV0dXJuIGU/dC50aGVuKHRoaXM/ZS5iaW5kKHRoaXMpOmUpOnR9ZnVuY3Rpb24gSV8oZSl7bGV0IHQ9cnIrMSxuPW5uLmxlbmd0aDtmb3IoO3Q8bjspe2NvbnN0IHI9dCtuPj4+MSxvPW5uW3JdLHM9eWkobyk7czxlfHxzPT09ZSYmby5mbGFncyYyP3Q9cisxOm49cn1yZXR1cm4gdH1mdW5jdGlvbiB5ZihlKXtpZighKGUuZmxhZ3MmMSkpe2NvbnN0IHQ9eWkoZSksbj1ubltubi5sZW5ndGgtMV07IW58fCEoZS5mbGFncyYyKSYmdD49eWkobik/bm4ucHVzaChlKTpubi5zcGxpY2UoSV8odCksMCxlKSxlLmZsYWdzfD0xLGtnKCl9fWZ1bmN0aW9uIGtnKCl7TWF8fChNYT1TZy50aGVuKEVnKSl9ZnVuY3Rpb24gZ2koZSl7U2UoZSk/ZHMucHVzaCguLi5lKTpubyYmZS5pZD09PS0xP25vLnNwbGljZShvcysxLDAsZSk6ZS5mbGFncyYxfHwoZHMucHVzaChlKSxlLmZsYWdzfD0xKSxrZygpfWZ1bmN0aW9uIFZkKGUsdCxuPXJyKzEpe2Zvcig7bjxubi5sZW5ndGg7bisrKXtjb25zdCByPW5uW25dO2lmKHImJnIuZmxhZ3MmMil7aWYoZSYmci5pZCE9PWUudWlkKWNvbnRpbnVlO25uLnNwbGljZShuLDEpLG4tLSxyLmZsYWdzJjQmJihyLmZsYWdzJj0tMikscigpLHIuZmxhZ3MmNHx8KHIuZmxhZ3MmPS0yKX19fWZ1bmN0aW9uIEJhKGUpe2lmKGRzLmxlbmd0aCl7Y29uc3QgdD1bLi4ubmV3IFNldChkcyldLnNvcnQoKG4scik9PnlpKG4pLXlpKHIpKTtpZihkcy5sZW5ndGg9MCxubyl7bm8ucHVzaCguLi50KTtyZXR1cm59Zm9yKG5vPXQsb3M9MDtvczxuby5sZW5ndGg7b3MrKyl7Y29uc3Qgbj1ub1tvc107bi5mbGFncyY0JiYobi5mbGFncyY9LTIpLG4uZmxhZ3MmOHx8bigpLG4uZmxhZ3MmPS0yfW5vPW51bGwsb3M9MH19Y29uc3QgeWk9ZT0+ZS5pZD09bnVsbD9lLmZsYWdzJjI/LTE6MS8wOmUuaWQ7ZnVuY3Rpb24gRWcoZSl7dHJ5e2Zvcihycj0wO3JyPG5uLmxlbmd0aDtycisrKXtjb25zdCB0PW5uW3JyXTt0JiYhKHQuZmxhZ3MmOCkmJih0LmZsYWdzJjQmJih0LmZsYWdzJj0tMiksRGkodCx0LmksdC5pPzE1OjE0KSx0LmZsYWdzJjR8fCh0LmZsYWdzJj0tMikpfX1maW5hbGx5e2Zvcig7cnI8bm4ubGVuZ3RoO3JyKyspe2NvbnN0IHQ9bm5bcnJdO3QmJih0LmZsYWdzJj0tMil9cnI9LTEsbm4ubGVuZ3RoPTAsQmEoKSxNYT1udWxsLChubi5sZW5ndGh8fGRzLmxlbmd0aCkmJkVnKCl9fWxldCBqdD1udWxsLFRnPW51bGw7ZnVuY3Rpb24gcWEoZSl7Y29uc3QgdD1qdDtyZXR1cm4ganQ9ZSxUZz1lJiZlLnR5cGUuX19zY29wZUlkfHxudWxsLHR9ZnVuY3Rpb24gTShlLHQ9anQsbil7aWYoIXR8fGUuX24pcmV0dXJuIGU7Y29uc3Qgcj0oLi4ubyk9PntyLl9kJiZVYSgtMSk7Y29uc3Qgcz1xYSh0KTtsZXQgaTt0cnl7aT1lKC4uLm8pfWZpbmFsbHl7cWEocyksci5fZCYmVWEoMSl9cmV0dXJuIGl9O3JldHVybiByLl9uPSEwLHIuX2M9ITAsci5fZD0hMCxyfWZ1bmN0aW9uIFJfKGUsdCl7aWYoanQ9PT1udWxsKXJldHVybiBlO2NvbnN0IG49RWwoanQpLHI9ZS5kaXJzfHwoZS5kaXJzPVtdKTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7bGV0W3MsaSxhLGw9WWVdPXRbb107cyYmKENlKHMpJiYocz17bW91bnRlZDpzLHVwZGF0ZWQ6c30pLHMuZGVlcCYmUHIoaSksci5wdXNoKHtkaXI6cyxpbnN0YW5jZTpuLHZhbHVlOmksb2xkVmFsdWU6dm9pZCAwLGFyZzphLG1vZGlmaWVyczpsfSkpfXJldHVybiBlfWZ1bmN0aW9uIG9yKGUsdCxuLHIpe2NvbnN0IG89ZS5kaXJzLHM9dCYmdC5kaXJzO2ZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKXtjb25zdCBhPW9baV07cyYmKGEub2xkVmFsdWU9c1tpXS52YWx1ZSk7bGV0IGw9YS5kaXJbcl07bCYmKERyKCksSG4obCxuLDgsW2UuZWwsYSxlLHRdKSxMcigpKX19ZnVuY3Rpb24gTnQoZSx0KXtpZih6dCl7bGV0IG49enQucHJvdmlkZXM7Y29uc3Qgcj16dC5wYXJlbnQmJnp0LnBhcmVudC5wcm92aWRlcztyPT09biYmKG49enQucHJvdmlkZXM9T2JqZWN0LmNyZWF0ZShyKSksbltlXT10fX1mdW5jdGlvbiBLZShlLHQsbj0hMSl7Y29uc3Qgcj1tdCgpO2lmKHJ8fE5vKXtsZXQgbz1Obz9Oby5fY29udGV4dC5wcm92aWRlczpyP3IucGFyZW50PT1udWxsfHxyLmNlP3Iudm5vZGUuYXBwQ29udGV4dCYmci52bm9kZS5hcHBDb250ZXh0LnByb3ZpZGVzOnIucGFyZW50LnByb3ZpZGVzOnZvaWQgMDtpZihvJiZlIGluIG8pcmV0dXJuIG9bZV07aWYoYXJndW1lbnRzLmxlbmd0aD4xKXJldHVybiBuJiZDZSh0KT90LmNhbGwociYmci5wcm94eSk6dH19ZnVuY3Rpb24gTGkoKXtyZXR1cm4hIShtdCgpfHxObyl9Y29uc3QgTl89U3ltYm9sLmZvcigidi1zY3giKSxEXz0oKT0+S2UoTl8pO2Z1bmN0aW9uIG9uKGUsdCl7cmV0dXJuICRpKGUsbnVsbCx0KX1mdW5jdGlvbiBDZyhlLHQpe3JldHVybiAkaShlLG51bGwse2ZsdXNoOiJwb3N0In0pfWZ1bmN0aW9uIExfKGUsdCl7cmV0dXJuICRpKGUsbnVsbCx7Zmx1c2g6InN5bmMifSl9ZnVuY3Rpb24gUGUoZSx0LG4pe3JldHVybiAkaShlLHQsbil9ZnVuY3Rpb24gJGkoZSx0LG49WWUpe2NvbnN0e2ltbWVkaWF0ZTpyLGRlZXA6byxmbHVzaDpzLG9uY2U6aX09bixhPXZ0KHt9LG4pLGw9dCYmcnx8IXQmJnMhPT0icG9zdCI7bGV0IHU7aWYoQm8pe2lmKHM9PT0ic3luYyIpe2NvbnN0IHA9RF8oKTt1PXAuX193YXRjaGVySGFuZGxlc3x8KHAuX193YXRjaGVySGFuZGxlcz1bXSl9ZWxzZSBpZighbCl7Y29uc3QgcD0oKT0+e307cmV0dXJuIHAuc3RvcD1scixwLnJlc3VtZT1scixwLnBhdXNlPWxyLHB9fWNvbnN0IGM9enQ7YS5jYWxsPShwLG0seSk9PkhuKHAsYyxtLHkpO2xldCBmPSExO3M9PT0icG9zdCI/YS5zY2hlZHVsZXI9cD0+e1R0KHAsYyYmYy5zdXNwZW5zZSl9OnMhPT0ic3luYyImJihmPSEwLGEuc2NoZWR1bGVyPShwLG0pPT57bT9wKCk6eWYocCl9KSxhLmF1Z21lbnRKb2I9cD0+e3QmJihwLmZsYWdzfD00KSxmJiYocC5mbGFnc3w9MixjJiYocC5pZD1jLnVpZCxwLmk9YykpfTtjb25zdCBkPU9fKGUsdCxhKTtyZXR1cm4gQm8mJih1P3UucHVzaChkKTpsJiZkKCkpLGR9ZnVuY3Rpb24gJF8oZSx0LG4pe2NvbnN0IHI9dGhpcy5wcm94eSxvPWZ0KGUpP2UuaW5jbHVkZXMoIi4iKT9BZyhyLGUpOigpPT5yW2VdOmUuYmluZChyLHIpO2xldCBzO0NlKHQpP3M9dDoocz10LmhhbmRsZXIsbj10KTtjb25zdCBpPURzKHRoaXMpLGE9JGkobyxzLmJpbmQociksbik7cmV0dXJuIGkoKSxhfWZ1bmN0aW9uIEFnKGUsdCl7Y29uc3Qgbj10LnNwbGl0KCIuIik7cmV0dXJuKCk9PntsZXQgcj1lO2ZvcihsZXQgbz0wO288bi5sZW5ndGgmJnI7bysrKXI9cltuW29dXTtyZXR1cm4gcn19Y29uc3Qgdm89bmV3IFdlYWtNYXAsT2c9U3ltYm9sKCJfdnRlIiksUGc9ZT0+ZS5fX2lzVGVsZXBvcnQsT289ZT0+ZSYmKGUuZGlzYWJsZWR8fGUuZGlzYWJsZWQ9PT0iIiksTV89ZT0+ZSYmKGUuZGVmZXJ8fGUuZGVmZXI9PT0iIiksVWQ9ZT0+dHlwZW9mIFNWR0VsZW1lbnQ8InUiJiZlIGluc3RhbmNlb2YgU1ZHRWxlbWVudCxIZD1lPT50eXBlb2YgTWF0aE1MRWxlbWVudD09ImZ1bmN0aW9uIiYmZSBpbnN0YW5jZW9mIE1hdGhNTEVsZW1lbnQsZXU9KGUsdCk9Pntjb25zdCBuPWUmJmUudG87cmV0dXJuIGZ0KG4pP3Q/dChuKTpudWxsOm59LEJfPXtuYW1lOiJUZWxlcG9ydCIsX19pc1RlbGVwb3J0OiEwLHByb2Nlc3MoZSx0LG4scixvLHMsaSxhLGwsdSl7Y29uc3R7bWM6YyxwYzpmLHBiYzpkLG86e2luc2VydDpwLHF1ZXJ5U2VsZWN0b3I6bSxjcmVhdGVUZXh0OnksY3JlYXRlQ29tbWVudDpffX09dSx3PU9vKHQucHJvcHMpO2xldHtkeW5hbWljQ2hpbGRyZW46dn09dDtjb25zdCBoPShTLGssVCk9PntTLnNoYXBlRmxhZyYxNiYmYyhTLmNoaWxkcmVuLGssVCxvLHMsaSxhLGwpfSxiPShTPXQpPT57Y29uc3Qgaz1PbyhTLnByb3BzKSxUPVMudGFyZ2V0PWV1KFMucHJvcHMsbSksQz10dShULFMseSxwKTtUJiYoaSE9PSJzdmciJiZVZChUKT9pPSJzdmciOmkhPT0ibWF0aG1sIiYmSGQoVCkmJihpPSJtYXRobWwiKSxvJiZvLmlzQ0UmJihvLmNlLl90ZWxlcG9ydFRhcmdldHN8fChvLmNlLl90ZWxlcG9ydFRhcmdldHM9bmV3IFNldCkpLmFkZChUKSxrfHwoaChTLFQsQyksSnMoUywhMSkpKX0seD1TPT57Y29uc3Qgaz0oKT0+e3ZvLmdldChTKT09PWsmJih2by5kZWxldGUoUyksT28oUy5wcm9wcykmJihoKFMsbixTLmFuY2hvciksSnMoUywhMCkpLGIoUykpfTt2by5zZXQoUyxrKSxUdChrLHMpfTtpZihlPT1udWxsKXtjb25zdCBTPXQuZWw9eSgiIiksaz10LmFuY2hvcj15KCIiKTtpZihwKFMsbixyKSxwKGssbixyKSxNXyh0LnByb3BzKXx8cyYmcy5wZW5kaW5nQnJhbmNoKXt4KHQpO3JldHVybn13JiYoaCh0LG4sayksSnModCwhMCkpLGIoKX1lbHNle3QuZWw9ZS5lbDtjb25zdCBTPXQuYW5jaG9yPWUuYW5jaG9yLGs9dm8uZ2V0KGUpO2lmKGspe2suZmxhZ3N8PTgsdm8uZGVsZXRlKGUpLHgodCk7cmV0dXJufXQudGFyZ2V0U3RhcnQ9ZS50YXJnZXRTdGFydDtjb25zdCBUPXQudGFyZ2V0PWUudGFyZ2V0LEM9dC50YXJnZXRBbmNob3I9ZS50YXJnZXRBbmNob3IsUD1PbyhlLnByb3BzKSxGPVA/bjpULEQ9UD9TOkM7aWYoaT09PSJzdmcifHxVZChUKT9pPSJzdmciOihpPT09Im1hdGhtbCJ8fEhkKFQpKSYmKGk9Im1hdGhtbCIpLHY/KGQoZS5keW5hbWljQ2hpbGRyZW4sdixGLG8scyxpLGEpLFRmKGUsdCwhMCkpOmx8fGYoZSx0LEYsRCxvLHMsaSxhLCExKSx3KVA/dC5wcm9wcyYmZS5wcm9wcyYmdC5wcm9wcy50byE9PWUucHJvcHMudG8mJih0LnByb3BzLnRvPWUucHJvcHMudG8pOlhpKHQsbixTLHUsMSk7ZWxzZSBpZigodC5wcm9wcyYmdC5wcm9wcy50bykhPT0oZS5wcm9wcyYmZS5wcm9wcy50bykpe2NvbnN0IFc9dC50YXJnZXQ9ZXUodC5wcm9wcyxtKTtXJiZYaSh0LFcsbnVsbCx1LDApfWVsc2UgUCYmWGkodCxULEMsdSwxKTtKcyh0LHcpfX0scmVtb3ZlKGUsdCxuLHt1bTpyLG86e3JlbW92ZTpvfX0scyl7Y29uc3R7c2hhcGVGbGFnOmksY2hpbGRyZW46YSxhbmNob3I6bCx0YXJnZXRTdGFydDp1LHRhcmdldEFuY2hvcjpjLHRhcmdldDpmLHByb3BzOmR9PWU7bGV0IHA9c3x8IU9vKGQpO2NvbnN0IG09dm8uZ2V0KGUpO2lmKG0mJihtLmZsYWdzfD04LHZvLmRlbGV0ZShlKSxwPSExKSxmJiYobyh1KSxvKGMpKSxzJiZvKGwpLGkmMTYpZm9yKGxldCB5PTA7eTxhLmxlbmd0aDt5Kyspe2NvbnN0IF89YVt5XTtyKF8sdCxuLHAsISFfLmR5bmFtaWNDaGlsZHJlbil9fSxtb3ZlOlhpLGh5ZHJhdGU6cV99O2Z1bmN0aW9uIFhpKGUsdCxuLHtvOntpbnNlcnQ6cn0sbTpvfSxzPTIpe3M9PT0wJiZyKGUudGFyZ2V0QW5jaG9yLHQsbik7Y29uc3R7ZWw6aSxhbmNob3I6YSxzaGFwZUZsYWc6bCxjaGlsZHJlbjp1LHByb3BzOmN9PWUsZj1zPT09MjtpZihmJiZyKGksdCxuKSwoIWZ8fE9vKGMpKSYmbCYxNilmb3IobGV0IGQ9MDtkPHUubGVuZ3RoO2QrKylvKHVbZF0sdCxuLDIpO2YmJnIoYSx0LG4pfWZ1bmN0aW9uIHFfKGUsdCxuLHIsbyxzLHtvOntuZXh0U2libGluZzppLHBhcmVudE5vZGU6YSxxdWVyeVNlbGVjdG9yOmwsaW5zZXJ0OnUsY3JlYXRlVGV4dDpjfX0sZil7ZnVuY3Rpb24gZChfLHcpe2xldCB2PXc7Zm9yKDt2Oyl7aWYodiYmdi5ub2RlVHlwZT09PTgpe2lmKHYuZGF0YT09PSJ0ZWxlcG9ydCBzdGFydCBhbmNob3IiKXQudGFyZ2V0U3RhcnQ9djtlbHNlIGlmKHYuZGF0YT09PSJ0ZWxlcG9ydCBhbmNob3IiKXt0LnRhcmdldEFuY2hvcj12LF8uX2xwYT10LnRhcmdldEFuY2hvciYmaSh0LnRhcmdldEFuY2hvcik7YnJlYWt9fXY9aSh2KX19ZnVuY3Rpb24gcChfLHcpe3cuYW5jaG9yPWYoaShfKSx3LGEoXyksbixyLG8scyl9Y29uc3QgbT10LnRhcmdldD1ldSh0LnByb3BzLGwpLHk9T28odC5wcm9wcyk7aWYobSl7Y29uc3QgXz1tLl9scGF8fG0uZmlyc3RDaGlsZDt0LnNoYXBlRmxhZyYxNiYmKHk/KHAoZSx0KSxkKG0sXyksdC50YXJnZXRBbmNob3J8fHR1KG0sdCxjLHUsYShlKT09PW0/ZTpudWxsKSk6KHQuYW5jaG9yPWkoZSksZChtLF8pLHQudGFyZ2V0QW5jaG9yfHx0dShtLHQsYyx1KSxmKF8mJmkoXyksdCxtLG4scixvLHMpKSksSnModCx5KX1lbHNlIHkmJnQuc2hhcGVGbGFnJjE2JiYocChlLHQpLHQudGFyZ2V0U3RhcnQ9ZSx0LnRhcmdldEFuY2hvcj1pKGUpKTtyZXR1cm4gdC5hbmNob3ImJmkodC5hbmNob3IpfWNvbnN0IHZmPUJfO2Z1bmN0aW9uIEpzKGUsdCl7Y29uc3Qgbj1lLmN0eDtpZihuJiZuLnV0KXtsZXQgcixvO2Zvcih0PyhyPWUuZWwsbz1lLmFuY2hvcik6KHI9ZS50YXJnZXRTdGFydCxvPWUudGFyZ2V0QW5jaG9yKTtyJiZyIT09bzspci5ub2RlVHlwZT09PTEmJnIuc2V0QXR0cmlidXRlKCJkYXRhLXYtb3duZXIiLG4udWlkKSxyPXIubmV4dFNpYmxpbmc7bi51dCgpfX1mdW5jdGlvbiB0dShlLHQsbixyLG89bnVsbCl7Y29uc3Qgcz10LnRhcmdldFN0YXJ0PW4oIiIpLGk9dC50YXJnZXRBbmNob3I9bigiIik7cmV0dXJuIHNbT2ddPWksZSYmKHIocyxlLG8pLHIoaSxlLG8pKSxpfWNvbnN0IHNyPVN5bWJvbCgiX2xlYXZlQ2IiKSxGcz1TeW1ib2woIl9lbnRlckNiIik7ZnVuY3Rpb24gRl8oKXtjb25zdCBlPXtpc01vdW50ZWQ6ITEsaXNMZWF2aW5nOiExLGlzVW5tb3VudGluZzohMSxsZWF2aW5nVk5vZGVzOm5ldyBNYXB9O3JldHVybiBvdCgoKT0+e2UuaXNNb3VudGVkPSEwfSksSG8oKCk9PntlLmlzVW5tb3VudGluZz0hMH0pLGV9Y29uc3QgQW49W0Z1bmN0aW9uLEFycmF5XSxJZz17bW9kZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4scGVyc2lzdGVkOkJvb2xlYW4sb25CZWZvcmVFbnRlcjpBbixvbkVudGVyOkFuLG9uQWZ0ZXJFbnRlcjpBbixvbkVudGVyQ2FuY2VsbGVkOkFuLG9uQmVmb3JlTGVhdmU6QW4sb25MZWF2ZTpBbixvbkFmdGVyTGVhdmU6QW4sb25MZWF2ZUNhbmNlbGxlZDpBbixvbkJlZm9yZUFwcGVhcjpBbixvbkFwcGVhcjpBbixvbkFmdGVyQXBwZWFyOkFuLG9uQXBwZWFyQ2FuY2VsbGVkOkFufSxSZz1lPT57Y29uc3QgdD1lLnN1YlRyZWU7cmV0dXJuIHQuY29tcG9uZW50P1JnKHQuY29tcG9uZW50KTp0fSx6Xz17bmFtZToiQmFzZVRyYW5zaXRpb24iLHByb3BzOklnLHNldHVwKGUse3Nsb3RzOnR9KXtjb25zdCBuPW10KCkscj1GXygpO3JldHVybigpPT57Y29uc3Qgbz10LmRlZmF1bHQmJkxnKHQuZGVmYXVsdCgpLCEwKTtpZighb3x8IW8ubGVuZ3RoKXJldHVybjtjb25zdCBzPU5nKG8pLGk9amUoZSkse21vZGU6YX09aTtpZihyLmlzTGVhdmluZylyZXR1cm4gZmMocyk7Y29uc3QgbD1XZChzKTtpZighbClyZXR1cm4gZmMocyk7bGV0IHU9bnUobCxpLHIsbixmPT51PWYpO2wudHlwZSE9PV90JiZ4cyhsLHUpO2xldCBjPW4uc3ViVHJlZSYmV2Qobi5zdWJUcmVlKTtpZihjJiZjLnR5cGUhPT1fdCYmIXFuKGMsbCkmJlJnKG4pLnR5cGUhPT1fdCl7bGV0IGY9bnUoYyxpLHIsbik7aWYoeHMoYyxmKSxhPT09Im91dC1pbiImJmwudHlwZSE9PV90KXJldHVybiByLmlzTGVhdmluZz0hMCxmLmFmdGVyTGVhdmU9KCk9PntyLmlzTGVhdmluZz0hMSxuLmpvYi5mbGFncyY4fHxuLnVwZGF0ZSgpLGRlbGV0ZSBmLmFmdGVyTGVhdmUsYz12b2lkIDB9LGZjKHMpO2E9PT0iaW4tb3V0IiYmbC50eXBlIT09X3Q/Zi5kZWxheUxlYXZlPShkLHAsbSk9Pntjb25zdCB5PURnKHIsYyk7eVtTdHJpbmcoYy5rZXkpXT1jLGRbc3JdPSgpPT57cCgpLGRbc3JdPXZvaWQgMCxkZWxldGUgdS5kZWxheWVkTGVhdmUsYz12b2lkIDB9LHUuZGVsYXllZExlYXZlPSgpPT57bSgpLGRlbGV0ZSB1LmRlbGF5ZWRMZWF2ZSxjPXZvaWQgMH19OmM9dm9pZCAwfWVsc2UgYyYmKGM9dm9pZCAwKTtyZXR1cm4gc319fTtmdW5jdGlvbiBOZyhlKXtsZXQgdD1lWzBdO2lmKGUubGVuZ3RoPjEpe2Zvcihjb25zdCBuIG9mIGUpaWYobi50eXBlIT09X3Qpe3Q9bjticmVha319cmV0dXJuIHR9Y29uc3Qgal89el87ZnVuY3Rpb24gRGcoZSx0KXtjb25zdHtsZWF2aW5nVk5vZGVzOm59PWU7bGV0IHI9bi5nZXQodC50eXBlKTtyZXR1cm4gcnx8KHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuLnNldCh0LnR5cGUscikpLHJ9ZnVuY3Rpb24gbnUoZSx0LG4scixvKXtjb25zdHthcHBlYXI6cyxtb2RlOmkscGVyc2lzdGVkOmE9ITEsb25CZWZvcmVFbnRlcjpsLG9uRW50ZXI6dSxvbkFmdGVyRW50ZXI6YyxvbkVudGVyQ2FuY2VsbGVkOmYsb25CZWZvcmVMZWF2ZTpkLG9uTGVhdmU6cCxvbkFmdGVyTGVhdmU6bSxvbkxlYXZlQ2FuY2VsbGVkOnksb25CZWZvcmVBcHBlYXI6XyxvbkFwcGVhcjp3LG9uQWZ0ZXJBcHBlYXI6dixvbkFwcGVhckNhbmNlbGxlZDpofT10LGI9U3RyaW5nKGUua2V5KSx4PURnKG4sZSksUz0oQyxQKT0+e0MmJkhuKEMsciw5LFApfSxrPShDLFApPT57Y29uc3QgRj1QWzFdO1MoQyxQKSxTZShDKT9DLmV2ZXJ5KEQ9PkQubGVuZ3RoPD0xKSYmRigpOkMubGVuZ3RoPD0xJiZGKCl9LFQ9e21vZGU6aSxwZXJzaXN0ZWQ6YSxiZWZvcmVFbnRlcihDKXtsZXQgUD1sO2lmKCFuLmlzTW91bnRlZClpZihzKVA9X3x8bDtlbHNlIHJldHVybjtDW3NyXSYmQ1tzcl0oITApO2NvbnN0IEY9eFtiXTtGJiZxbihlLEYpJiZGLmVsW3NyXSYmRi5lbFtzcl0oKSxTKFAsW0NdKX0sZW50ZXIoQyl7aWYoeFtiXT09PWUpcmV0dXJuO2xldCBQPXUsRj1jLEQ9ZjtpZighbi5pc01vdW50ZWQpaWYocylQPXd8fHUsRj12fHxjLEQ9aHx8ZjtlbHNlIHJldHVybjtsZXQgVz0hMTtDW0ZzXT1qPT57V3x8KFc9ITAsaj9TKEQsW0NdKTpTKEYsW0NdKSxULmRlbGF5ZWRMZWF2ZSYmVC5kZWxheWVkTGVhdmUoKSxDW0ZzXT12b2lkIDApfTtjb25zdCBMPUNbRnNdLmJpbmQobnVsbCwhMSk7UD9rKFAsW0MsTF0pOkwoKX0sbGVhdmUoQyxQKXtjb25zdCBGPVN0cmluZyhlLmtleSk7aWYoQ1tGc10mJkNbRnNdKCEwKSxuLmlzVW5tb3VudGluZylyZXR1cm4gUCgpO1MoZCxbQ10pO2xldCBEPSExO0Nbc3JdPUw9PntEfHwoRD0hMCxQKCksTD9TKHksW0NdKTpTKG0sW0NdKSxDW3NyXT12b2lkIDAseFtGXT09PWUmJmRlbGV0ZSB4W0ZdKX07Y29uc3QgVz1DW3NyXS5iaW5kKG51bGwsITEpO3hbRl09ZSxwP2socCxbQyxXXSk6VygpfSxjbG9uZShDKXtjb25zdCBQPW51KEMsdCxuLHIsbyk7cmV0dXJuIG8mJm8oUCksUH19O3JldHVybiBUfWZ1bmN0aW9uIGZjKGUpe2lmKE1pKGUpKXJldHVybiBlPXBuKGUpLGUuY2hpbGRyZW49bnVsbCxlfWZ1bmN0aW9uIFdkKGUpe2lmKCFNaShlKSlyZXR1cm4gUGcoZS50eXBlKSYmZS5jaGlsZHJlbj9OZyhlLmNoaWxkcmVuKTplO2lmKGUuY29tcG9uZW50KXJldHVybiBlLmNvbXBvbmVudC5zdWJUcmVlO2NvbnN0e3NoYXBlRmxhZzp0LGNoaWxkcmVuOm59PWU7aWYobil7aWYodCYxNilyZXR1cm4gblswXTtpZih0JjMyJiZDZShuLmRlZmF1bHQpKXJldHVybiBuLmRlZmF1bHQoKX19ZnVuY3Rpb24geHMoZSx0KXtlLnNoYXBlRmxhZyY2JiZlLmNvbXBvbmVudD8oZS50cmFuc2l0aW9uPXQseHMoZS5jb21wb25lbnQuc3ViVHJlZSx0KSk6ZS5zaGFwZUZsYWcmMTI4PyhlLnNzQ29udGVudC50cmFuc2l0aW9uPXQuY2xvbmUoZS5zc0NvbnRlbnQpLGUuc3NGYWxsYmFjay50cmFuc2l0aW9uPXQuY2xvbmUoZS5zc0ZhbGxiYWNrKSk6ZS50cmFuc2l0aW9uPXR9ZnVuY3Rpb24gTGcoZSx0PSExLG4pe2xldCByPVtdLG89MDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtjb25zdCBhPW49PW51bGw/aS5rZXk6U3RyaW5nKG4pK1N0cmluZyhpLmtleSE9bnVsbD9pLmtleTpzKTtpLnR5cGU9PT1HZT8oaS5wYXRjaEZsYWcmMTI4JiZvKysscj1yLmNvbmNhdChMZyhpLmNoaWxkcmVuLHQsYSkpKToodHx8aS50eXBlIT09X3QpJiZyLnB1c2goYSE9bnVsbD9wbihpLHtrZXk6YX0pOmkpfWlmKG8+MSlmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKylyW3NdLnBhdGNoRmxhZz0tMjtyZXR1cm4gcn1mdW5jdGlvbiBzZShlLHQpe3JldHVybiBDZShlKT92dCh7bmFtZTplLm5hbWV9LHQse3NldHVwOmV9KTplfWZ1bmN0aW9uIGJmKCl7Y29uc3QgZT1tdCgpO3JldHVybiBlPyhlLmFwcENvbnRleHQuY29uZmlnLmlkUHJlZml4fHwidiIpKyItIitlLmlkc1swXStlLmlkc1sxXSsrOiIifWZ1bmN0aW9uIHdmKGUpe2UuaWRzPVtlLmlkc1swXStlLmlkc1syXSsrKyItIiwwLDBdfWZ1bmN0aW9uIFNzKGUpe2NvbnN0IHQ9bXQoKSxuPU9lKG51bGwpO2lmKHQpe2NvbnN0IG89dC5yZWZzPT09WWU/dC5yZWZzPXt9OnQucmVmcztPYmplY3QuZGVmaW5lUHJvcGVydHkobyxlLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+bi52YWx1ZSxzZXQ6cz0+bi52YWx1ZT1zfSl9cmV0dXJuIG59ZnVuY3Rpb24gR2QoZSx0KXtsZXQgbjtyZXR1cm4hISgobj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkpJiYhbi5jb25maWd1cmFibGUpfWNvbnN0IEZhPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHBzKGUsdCxuLHIsbz0hMSl7aWYoU2UoZSkpe2UuZm9yRWFjaCgoeSxfKT0+cHMoeSx0JiYoU2UodCk/dFtfXTp0KSxuLHIsbykpO3JldHVybn1pZihJcihyKSYmIW8pe3Iuc2hhcGVGbGFnJjUxMiYmci50eXBlLl9fYXN5bmNSZXNvbHZlZCYmci5jb21wb25lbnQuc3ViVHJlZS5jb21wb25lbnQmJnBzKGUsdCxuLHIuY29tcG9uZW50LnN1YlRyZWUpO3JldHVybn1jb25zdCBzPXIuc2hhcGVGbGFnJjQ/RWwoci5jb21wb25lbnQpOnIuZWwsaT1vP251bGw6cyx7aTphLHI6bH09ZSx1PXQmJnQucixjPWEucmVmcz09PVllP2EucmVmcz17fTphLnJlZnMsZj1hLnNldHVwU3RhdGUsZD1qZShmKSxwPWY9PT1ZZT9RaDp5PT5HZChjLHkpPyExOm50KGQseSksbT0oeSxfKT0+IShfJiZHZChjLF8pKTtpZih1IT1udWxsJiZ1IT09bCl7aWYoS2QodCksZnQodSkpY1t1XT1udWxsLHAodSkmJihmW3VdPW51bGwpO2Vsc2UgaWYoJGUodSkpe2NvbnN0IHk9dDttKHUseS5rKSYmKHUudmFsdWU9bnVsbCkseS5rJiYoY1t5LmtdPW51bGwpfX1pZihDZShsKSlEaShsLGEsMTIsW2ksY10pO2Vsc2V7Y29uc3QgeT1mdChsKSxfPSRlKGwpO2lmKHl8fF8pe2NvbnN0IHc9KCk9PntpZihlLmYpe2NvbnN0IHY9eT9wKGwpP2ZbbF06Y1tsXTptKCl8fCFlLms/bC52YWx1ZTpjW2Uua107aWYobylTZSh2KSYmZmYodixzKTtlbHNlIGlmKFNlKHYpKXYuaW5jbHVkZXMocyl8fHYucHVzaChzKTtlbHNlIGlmKHkpY1tsXT1bc10scChsKSYmKGZbbF09Y1tsXSk7ZWxzZXtjb25zdCBoPVtzXTttKGwsZS5rKSYmKGwudmFsdWU9aCksZS5rJiYoY1tlLmtdPWgpfX1lbHNlIHk/KGNbbF09aSxwKGwpJiYoZltsXT1pKSk6XyYmKG0obCxlLmspJiYobC52YWx1ZT1pKSxlLmsmJihjW2Uua109aSkpfTtpZihpKXtjb25zdCB2PSgpPT57dygpLEZhLmRlbGV0ZShlKX07di5pZD0tMSxGYS5zZXQoZSx2KSxUdCh2LG4pfWVsc2UgS2QoZSksdygpfX19ZnVuY3Rpb24gS2QoZSl7Y29uc3QgdD1GYS5nZXQoZSk7dCYmKHQuZmxhZ3N8PTgsRmEuZGVsZXRlKGUpKX1sZXQgUWQ9ITE7Y29uc3QgSm89KCk9PntRZHx8KFFkPSEwKX0sVl89ZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoInN2ZyIpJiZlLnRhZ05hbWUhPT0iZm9yZWlnbk9iamVjdCIsVV89ZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoIk1hdGhNTCIpLFppPWU9PntpZihlLm5vZGVUeXBlPT09MSl7aWYoVl8oZSkpcmV0dXJuInN2ZyI7aWYoVV8oZSkpcmV0dXJuIm1hdGhtbCJ9fSxjcz1lPT5lLm5vZGVUeXBlPT09ODtmdW5jdGlvbiBIXyhlKXtjb25zdHttdDp0LHA6bixvOntwYXRjaFByb3A6cixjcmVhdGVUZXh0Om8sbmV4dFNpYmxpbmc6cyxwYXJlbnROb2RlOmkscmVtb3ZlOmEsaW5zZXJ0OmwsY3JlYXRlQ29tbWVudDp1fX09ZSxjPShoLGIpPT57aWYoIWIuaGFzQ2hpbGROb2RlcygpKXtuKG51bGwsaCxiKSxCYSgpLGIuX3Zub2RlPWg7cmV0dXJufWYoYi5maXJzdENoaWxkLGgsbnVsbCxudWxsLG51bGwpLEJhKCksYi5fdm5vZGU9aH0sZj0oaCxiLHgsUyxrLFQ9ITEpPT57VD1UfHwhIWIuZHluYW1pY0NoaWxkcmVuO2NvbnN0IEM9Y3MoaCkmJmguZGF0YT09PSJbIixQPSgpPT55KGgsYix4LFMsayxDKSx7dHlwZTpGLHJlZjpELHNoYXBlRmxhZzpXLHBhdGNoRmxhZzpMfT1iO2xldCBqPWgubm9kZVR5cGU7Yi5lbD1oLEw9PT0tMiYmKFQ9ITEsYi5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0IEk9bnVsbDtzd2l0Y2goRil7Y2FzZSBEbzpqIT09Mz9iLmNoaWxkcmVuPT09IiI/KGwoYi5lbD1vKCIiKSxpKGgpLGgpLEk9aCk6ST1QKCk6KGguZGF0YSE9PWIuY2hpbGRyZW4mJihKbygpLGguZGF0YT1iLmNoaWxkcmVuKSxJPXMoaCkpO2JyZWFrO2Nhc2UgX3Q6dihoKT8oST1zKGgpLHcoYi5lbD1oLmNvbnRlbnQuZmlyc3RDaGlsZCxoLHgpKTpqIT09OHx8Qz9JPVAoKTpJPXMoaCk7YnJlYWs7Y2FzZSBhaTppZihDJiYoaD1zKGgpLGo9aC5ub2RlVHlwZSksaj09PTF8fGo9PT0zKXtJPWg7Y29uc3QgVj0hYi5jaGlsZHJlbi5sZW5ndGg7Zm9yKGxldCBCPTA7QjxiLnN0YXRpY0NvdW50O0IrKylWJiYoYi5jaGlsZHJlbis9SS5ub2RlVHlwZT09PTE/SS5vdXRlckhUTUw6SS5kYXRhKSxCPT09Yi5zdGF0aWNDb3VudC0xJiYoYi5hbmNob3I9SSksST1zKEkpO3JldHVybiBDP3MoSSk6SX1lbHNlIFAoKTticmVhaztjYXNlIEdlOkM/ST1tKGgsYix4LFMsayxUKTpJPVAoKTticmVhaztkZWZhdWx0OmlmKFcmMSkoaiE9PTF8fGIudHlwZS50b0xvd2VyQ2FzZSgpIT09aC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpJiYhdihoKT9JPVAoKTpJPWQoaCxiLHgsUyxrLFQpO2Vsc2UgaWYoVyY2KXtiLnNsb3RTY29wZUlkcz1rO2NvbnN0IFY9aShoKTtpZihDP0k9XyhoKTpjcyhoKSYmaC5kYXRhPT09InRlbGVwb3J0IHN0YXJ0Ij9JPV8oaCxoLmRhdGEsInRlbGVwb3J0IGVuZCIpOkk9cyhoKSx0KGIsVixudWxsLHgsUyxaaShWKSxUKSxJcihiKSYmIWIudHlwZS5fX2FzeW5jUmVzb2x2ZWQpe2xldCBCO0M/KEI9cmUoR2UpLEIuYW5jaG9yPUk/SS5wcmV2aW91c1NpYmxpbmc6Vi5sYXN0Q2hpbGQpOkI9aC5ub2RlVHlwZT09PTM/c3QoIiIpOnJlKCJkaXYiKSxCLmVsPWgsYi5jb21wb25lbnQuc3ViVHJlZT1CfX1lbHNlIFcmNjQ/aiE9PTg/ST1QKCk6ST1iLnR5cGUuaHlkcmF0ZShoLGIseCxTLGssVCxlLHApOlcmMTI4JiYoST1iLnR5cGUuaHlkcmF0ZShoLGIseCxTLFppKGkoaCkpLGssVCxlLGYpKX1yZXR1cm4gRCE9bnVsbCYmcHMoRCxudWxsLFMsYiksSX0sZD0oaCxiLHgsUyxrLFQpPT57VD1UfHwhIWIuZHluYW1pY0NoaWxkcmVuO2NvbnN0e3R5cGU6Qyxwcm9wczpQLHBhdGNoRmxhZzpGLHNoYXBlRmxhZzpELGRpcnM6Vyx0cmFuc2l0aW9uOkx9PWIsaj1DPT09ImlucHV0Inx8Qz09PSJvcHRpb24iO2lmKGp8fEYhPT0tMSl7VyYmb3IoYixudWxsLHgsImNyZWF0ZWQiKTtsZXQgST0hMTtpZih2KGgpKXtJPXN5KG51bGwsTCkmJngmJngudm5vZGUucHJvcHMmJngudm5vZGUucHJvcHMuYXBwZWFyO2NvbnN0IEI9aC5jb250ZW50LmZpcnN0Q2hpbGQ7aWYoSSl7Y29uc3QgaWU9Qi5nZXRBdHRyaWJ1dGUoImNsYXNzIik7aWUmJihCLiRjbHM9aWUpLEwuYmVmb3JlRW50ZXIoQil9dyhCLGgseCksYi5lbD1oPUJ9aWYoRCYxNiYmIShQJiYoUC5pbm5lckhUTUx8fFAudGV4dENvbnRlbnQpKSl7bGV0IEI9cChoLmZpcnN0Q2hpbGQsYixoLHgsUyxrLFQpO2Zvcig7Qjspe2VhKGgsMSl8fEpvKCk7Y29uc3QgaWU9QjtCPUIubmV4dFNpYmxpbmcsYShpZSl9fWVsc2UgaWYoRCY4KXtsZXQgQj1iLmNoaWxkcmVuO0JbMF09PT1gCmAmJihoLnRhZ05hbWU9PT0iUFJFInx8aC50YWdOYW1lPT09IlRFWFRBUkVBIikmJihCPUIuc2xpY2UoMSkpO2NvbnN0e3RleHRDb250ZW50OmllfT1oO2llIT09QiYmaWUhPT1CLnJlcGxhY2UoL1xyXG58XHIvZyxgCmApJiYoZWEoaCwwKXx8Sm8oKSxoLnRleHRDb250ZW50PWIuY2hpbGRyZW4pfWlmKFApe2lmKGp8fCFUfHxGJjQ4KXtjb25zdCBCPWgudGFnTmFtZS5pbmNsdWRlcygiLSIpO2Zvcihjb25zdCBpZSBpbiBQKShqJiYoaWUuZW5kc1dpdGgoInZhbHVlIil8fGllPT09ImluZGV0ZXJtaW5hdGUiKXx8UmkoaWUpJiYhSW8oaWUpfHxpZVswXT09PSIuInx8QiYmIUlvKGllKSkmJnIoaCxpZSxudWxsLFBbaWVdLHZvaWQgMCx4KX1lbHNlIGlmKFAub25DbGljaylyKGgsIm9uQ2xpY2siLG51bGwsUC5vbkNsaWNrLHZvaWQgMCx4KTtlbHNlIGlmKEYmNCYmY3IoUC5zdHlsZSkpZm9yKGNvbnN0IEIgaW4gUC5zdHlsZSlQLnN0eWxlW0JdfWxldCBWOyhWPVAmJlAub25Wbm9kZUJlZm9yZU1vdW50KSYmZG4oVix4LGIpLFcmJm9yKGIsbnVsbCx4LCJiZWZvcmVNb3VudCIpLCgoVj1QJiZQLm9uVm5vZGVNb3VudGVkKXx8V3x8SSkmJmN5KCgpPT57ViYmZG4oVix4LGIpLEkmJkwuZW50ZXIoaCksVyYmb3IoYixudWxsLHgsIm1vdW50ZWQiKX0sUyl9cmV0dXJuIGgubmV4dFNpYmxpbmd9LHA9KGgsYix4LFMsayxULEMpPT57Qz1DfHwhIWIuZHluYW1pY0NoaWxkcmVuO2NvbnN0IFA9Yi5jaGlsZHJlbixGPVAubGVuZ3RoO2ZvcihsZXQgRD0wO0Q8RjtEKyspe2NvbnN0IFc9Qz9QW0RdOlBbRF09Ym4oUFtEXSksTD1XLnR5cGU9PT1EbztoPyhMJiYhQyYmRCsxPEYmJmJuKFBbRCsxXSkudHlwZT09PURvJiYobChvKGguZGF0YS5zbGljZShXLmNoaWxkcmVuLmxlbmd0aCkpLHgscyhoKSksaC5kYXRhPVcuY2hpbGRyZW4pLGg9ZihoLFcsUyxrLFQsQykpOkwmJiFXLmNoaWxkcmVuP2woVy5lbD1vKCIiKSx4KTooZWEoeCwxKXx8Sm8oKSxuKG51bGwsVyx4LG51bGwsUyxrLFppKHgpLFQpKX1yZXR1cm4gaH0sbT0oaCxiLHgsUyxrLFQpPT57Y29uc3R7c2xvdFNjb3BlSWRzOkN9PWI7QyYmKGs9az9rLmNvbmNhdChDKTpDKTtjb25zdCBQPWkoaCksRj1wKHMoaCksYixQLHgsUyxrLFQpO3JldHVybiBGJiZjcyhGKSYmRi5kYXRhPT09Il0iP3MoYi5hbmNob3I9Rik6KEpvKCksbChiLmFuY2hvcj11KCJdIiksUCxGKSxGKX0seT0oaCxiLHgsUyxrLFQpPT57aWYoZWEoaC5wYXJlbnRFbGVtZW50LDEpfHxKbygpLGIuZWw9bnVsbCxUKXtjb25zdCBGPV8oaCk7Zm9yKDs7KXtjb25zdCBEPXMoaCk7aWYoRCYmRCE9PUYpYShEKTtlbHNlIGJyZWFrfX1jb25zdCBDPXMoaCksUD1pKGgpO3JldHVybiBhKGgpLG4obnVsbCxiLFAsQyx4LFMsWmkoUCksaykseCYmKHgudm5vZGUuZWw9Yi5lbCxrbCh4LGIuZWwpKSxDfSxfPShoLGI9IlsiLHg9Il0iKT0+e2xldCBTPTA7Zm9yKDtoOylpZihoPXMoaCksaCYmY3MoaCkmJihoLmRhdGE9PT1iJiZTKyssaC5kYXRhPT09eCkpe2lmKFM9PT0wKXJldHVybiBzKGgpO1MtLX1yZXR1cm4gaH0sdz0oaCxiLHgpPT57Y29uc3QgUz1iLnBhcmVudE5vZGU7UyYmUy5yZXBsYWNlQ2hpbGQoaCxiKTtsZXQgaz14O2Zvcig7azspay52bm9kZS5lbD09PWImJihrLnZub2RlLmVsPWsuc3ViVHJlZS5lbD1oKSxrPWsucGFyZW50fSx2PWg9Pmgubm9kZVR5cGU9PT0xJiZoLnRhZ05hbWU9PT0iVEVNUExBVEUiO3JldHVybltjLGZdfWNvbnN0IFlkPSJkYXRhLWFsbG93LW1pc21hdGNoIixXXz17MDoidGV4dCIsMToiY2hpbGRyZW4iLDI6ImNsYXNzIiwzOiJzdHlsZSIsNDoiYXR0cmlidXRlIn07ZnVuY3Rpb24gZWEoZSx0KXtpZih0PT09MHx8dD09PTEpZm9yKDtlJiYhZS5oYXNBdHRyaWJ1dGUoWWQpOyllPWUucGFyZW50RWxlbWVudDtjb25zdCBuPWUmJmUuZ2V0QXR0cmlidXRlKFlkKTtpZihuPT1udWxsKXJldHVybiExO2lmKG49PT0iIilyZXR1cm4hMDt7Y29uc3Qgcj1uLnNwbGl0KCIsIik7cmV0dXJuIHQ9PT0wJiZyLmluY2x1ZGVzKCJjaGlsZHJlbiIpPyEwOnIuaW5jbHVkZXMoV19bdF0pfX1tbCgpLnJlcXVlc3RJZGxlQ2FsbGJhY2s7bWwoKS5jYW5jZWxJZGxlQ2FsbGJhY2s7ZnVuY3Rpb24gR18oZSx0KXtpZihjcyhlKSYmZS5kYXRhPT09IlsiKXtsZXQgbj0xLHI9ZS5uZXh0U2libGluZztmb3IoO3I7KXtpZihyLm5vZGVUeXBlPT09MSl7aWYodChyKT09PSExKWJyZWFrfWVsc2UgaWYoY3MocikpaWYoci5kYXRhPT09Il0iKXtpZigtLW49PT0wKWJyZWFrfWVsc2Ugci5kYXRhPT09IlsiJiZuKys7cj1yLm5leHRTaWJsaW5nfX1lbHNlIHQoZSl9Y29uc3QgSXI9ZT0+ISFlLnR5cGUuX19hc3luY0xvYWRlcjtmdW5jdGlvbiB2aShlKXtDZShlKSYmKGU9e2xvYWRlcjplfSk7Y29uc3R7bG9hZGVyOnQsbG9hZGluZ0NvbXBvbmVudDpuLGVycm9yQ29tcG9uZW50OnIsZGVsYXk6bz0yMDAsaHlkcmF0ZTpzLHRpbWVvdXQ6aSxzdXNwZW5zaWJsZTphPSEwLG9uRXJyb3I6bH09ZTtsZXQgdT1udWxsLGMsZj0wO2NvbnN0IGQ9KCk9PihmKyssdT1udWxsLHAoKSkscD0oKT0+e2xldCBtO3JldHVybiB1fHwobT11PXQoKS5jYXRjaCh5PT57aWYoeT15IGluc3RhbmNlb2YgRXJyb3I/eTpuZXcgRXJyb3IoU3RyaW5nKHkpKSxsKXJldHVybiBuZXcgUHJvbWlzZSgoXyx3KT0+e2woeSwoKT0+XyhkKCkpLCgpPT53KHkpLGYrMSl9KTt0aHJvdyB5fSkudGhlbih5PT5tIT09dSYmdT91Oih5JiYoeS5fX2VzTW9kdWxlfHx5W1N5bWJvbC50b1N0cmluZ1RhZ109PT0iTW9kdWxlIikmJih5PXkuZGVmYXVsdCksYz15LHkpKSl9O3JldHVybiBzZSh7bmFtZToiQXN5bmNDb21wb25lbnRXcmFwcGVyIixfX2FzeW5jTG9hZGVyOnAsX19hc3luY0h5ZHJhdGUobSx5LF8pe2xldCB3PSExOyh5LmJ1fHwoeS5idT1bXSkpLnB1c2goKCk9Pnc9ITApO2NvbnN0IHY9KCk9Pnt3fHxfKCl9LGg9cz8oKT0+e2NvbnN0IGI9cyh2LHg9PkdfKG0seCkpO2ImJih5LmJ1bXx8KHkuYnVtPVtdKSkucHVzaChiKX06djtjP2goKTpwKCkudGhlbigoKT0+IXkuaXNVbm1vdW50ZWQmJmgoKSl9LGdldCBfX2FzeW5jUmVzb2x2ZWQoKXtyZXR1cm4gY30sc2V0dXAoKXtjb25zdCBtPXp0O2lmKHdmKG0pLGMpcmV0dXJuKCk9PnRhKGMsbSk7Y29uc3QgeT1oPT57dT1udWxsLE5zKGgsbSwxMywhcil9O2lmKGEmJm0uc3VzcGVuc2V8fEJvKXJldHVybiBwKCkudGhlbihoPT4oKT0+dGEoaCxtKSkuY2F0Y2goaD0+KHkoaCksKCk9PnI/cmUocix7ZXJyb3I6aH0pOm51bGwpKTtjb25zdCBfPUcoITEpLHc9RygpLHY9RyghIW8pO3JldHVybiBvJiZzZXRUaW1lb3V0KCgpPT57di52YWx1ZT0hMX0sbyksaSE9bnVsbCYmc2V0VGltZW91dCgoKT0+e2lmKCFfLnZhbHVlJiYhdy52YWx1ZSl7Y29uc3QgaD1uZXcgRXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHtpfW1zLmApO3koaCksdy52YWx1ZT1ofX0saSkscCgpLnRoZW4oKCk9PntfLnZhbHVlPSEwLG0ucGFyZW50JiZNaShtLnBhcmVudC52bm9kZSkmJm0ucGFyZW50LnVwZGF0ZSgpfSkuY2F0Y2goaD0+e3koaCksdy52YWx1ZT1ofSksKCk9PntpZihfLnZhbHVlJiZjKXJldHVybiB0YShjLG0pO2lmKHcudmFsdWUmJnIpcmV0dXJuIHJlKHIse2Vycm9yOncudmFsdWV9KTtpZihuJiYhdi52YWx1ZSlyZXR1cm4gdGEobixtKX19fSl9ZnVuY3Rpb24gdGEoZSx0KXtjb25zdHtyZWY6bixwcm9wczpyLGNoaWxkcmVuOm8sY2U6c309dC52bm9kZSxpPXJlKGUscixvKTtyZXR1cm4gaS5yZWY9bixpLmNlPXMsZGVsZXRlIHQudm5vZGUuY2UsaX1jb25zdCBNaT1lPT5lLnR5cGUuX19pc0tlZXBBbGl2ZSxLXz17bmFtZToiS2VlcEFsaXZlIixfX2lzS2VlcEFsaXZlOiEwLHByb3BzOntpbmNsdWRlOltTdHJpbmcsUmVnRXhwLEFycmF5XSxleGNsdWRlOltTdHJpbmcsUmVnRXhwLEFycmF5XSxtYXg6W1N0cmluZyxOdW1iZXJdfSxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1tdCgpLHI9bi5jdHg7aWYoIXIucmVuZGVyZXIpcmV0dXJuKCk9Pntjb25zdCB2PXQuZGVmYXVsdCYmdC5kZWZhdWx0KCk7cmV0dXJuIHYmJnYubGVuZ3RoPT09MT92WzBdOnZ9O2NvbnN0IG89bmV3IE1hcCxzPW5ldyBTZXQ7bGV0IGk9bnVsbDtjb25zdCBhPW4uc3VzcGVuc2Use3JlbmRlcmVyOntwOmwsbTp1LHVtOmMsbzp7Y3JlYXRlRWxlbWVudDpmfX19PXIsZD1mKCJkaXYiKTtyLmFjdGl2YXRlPSh2LGgsYix4LFMpPT57Y29uc3Qgaz12LmNvbXBvbmVudDt1KHYsaCxiLDAsYSksbChrLnZub2RlLHYsaCxiLGssYSx4LHYuc2xvdFNjb3BlSWRzLFMpLFR0KCgpPT57ay5pc0RlYWN0aXZhdGVkPSExLGsuYSYmcmkoay5hKTtjb25zdCBUPXYucHJvcHMmJnYucHJvcHMub25Wbm9kZU1vdW50ZWQ7VCYmZG4oVCxrLnBhcmVudCx2KX0sYSl9LHIuZGVhY3RpdmF0ZT12PT57Y29uc3QgaD12LmNvbXBvbmVudDtqYShoLm0pLGphKGguYSksdSh2LGQsbnVsbCwxLGEpLFR0KCgpPT57aC5kYSYmcmkoaC5kYSk7Y29uc3QgYj12LnByb3BzJiZ2LnByb3BzLm9uVm5vZGVVbm1vdW50ZWQ7YiYmZG4oYixoLnBhcmVudCx2KSxoLmlzRGVhY3RpdmF0ZWQ9ITB9LGEpfTtmdW5jdGlvbiBwKHYpe2RjKHYpLGModixuLGEsITApfWZ1bmN0aW9uIG0odil7by5mb3JFYWNoKChoLGIpPT57Y29uc3QgeD1jdShJcihoKT9oLnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTpoLnR5cGUpO3gmJiF2KHgpJiZ5KGIpfSl9ZnVuY3Rpb24geSh2KXtjb25zdCBoPW8uZ2V0KHYpO2gmJighaXx8IXFuKGgsaSkpP3AoaCk6aSYmZGMoaSksby5kZWxldGUodikscy5kZWxldGUodil9UGUoKCk9PltlLmluY2x1ZGUsZS5leGNsdWRlXSwoW3YsaF0pPT57diYmbShiPT5Ycyh2LGIpKSxoJiZtKGI9PiFYcyhoLGIpKX0se2ZsdXNoOiJwb3N0IixkZWVwOiEwfSk7bGV0IF89bnVsbDtjb25zdCB3PSgpPT57XyE9bnVsbCYmKFZhKG4uc3ViVHJlZS50eXBlKT9UdCgoKT0+e28uc2V0KF8sbmEobi5zdWJUcmVlKSl9LG4uc3ViVHJlZS5zdXNwZW5zZSk6by5zZXQoXyxuYShuLnN1YlRyZWUpKSl9O3JldHVybiBvdCh3KSx4bCh3KSxIbygoKT0+e28uZm9yRWFjaCh2PT57Y29uc3R7c3ViVHJlZTpoLHN1c3BlbnNlOmJ9PW4seD1uYShoKTtpZih2LnR5cGU9PT14LnR5cGUmJnYua2V5PT09eC5rZXkpe2RjKHgpO2NvbnN0IFM9eC5jb21wb25lbnQuZGE7UyYmVHQoUyxiKTtyZXR1cm59cCh2KX0pfSksKCk9PntpZihfPW51bGwsIXQuZGVmYXVsdClyZXR1cm4gaT1udWxsO2NvbnN0IHY9dC5kZWZhdWx0KCksaD12WzBdO2lmKHYubGVuZ3RoPjEpcmV0dXJuIGk9bnVsbCx2O2lmKCFNbyhoKXx8IShoLnNoYXBlRmxhZyY0KSYmIShoLnNoYXBlRmxhZyYxMjgpKXJldHVybiBpPW51bGwsaDtsZXQgYj1uYShoKTtpZihiLnR5cGU9PT1fdClyZXR1cm4gaT1udWxsLGI7Y29uc3QgeD1iLnR5cGUsUz1jdShJcihiKT9iLnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTp4KSx7aW5jbHVkZTprLGV4Y2x1ZGU6VCxtYXg6Q309ZTtpZihrJiYoIVN8fCFYcyhrLFMpKXx8VCYmUyYmWHMoVCxTKSlyZXR1cm4gYi5zaGFwZUZsYWcmPS0yNTcsaT1iLGg7Y29uc3QgUD1iLmtleT09bnVsbD94OmIua2V5LEY9by5nZXQoUCk7cmV0dXJuIGIuZWwmJihiPXBuKGIpLGguc2hhcGVGbGFnJjEyOCYmKGguc3NDb250ZW50PWIpKSxfPVAsRj8oYi5lbD1GLmVsLGIuY29tcG9uZW50PUYuY29tcG9uZW50LGIudHJhbnNpdGlvbiYmeHMoYixiLnRyYW5zaXRpb24pLGIuc2hhcGVGbGFnfD01MTIscy5kZWxldGUoUCkscy5hZGQoUCkpOihzLmFkZChQKSxDJiZzLnNpemU+cGFyc2VJbnQoQywxMCkmJnkocy52YWx1ZXMoKS5uZXh0KCkudmFsdWUpKSxiLnNoYXBlRmxhZ3w9MjU2LGk9YixWYShoLnR5cGUpP2g6Yn19fSxRXz1LXztmdW5jdGlvbiBYcyhlLHQpe3JldHVybiBTZShlKT9lLnNvbWUobj0+WHMobix0KSk6ZnQoZSk/ZS5zcGxpdCgiLCIpLmluY2x1ZGVzKHQpOlZ3KGUpPyhlLmxhc3RJbmRleD0wLGUudGVzdCh0KSk6ITF9ZnVuY3Rpb24gJGcoZSx0KXtCZyhlLCJhIix0KX1mdW5jdGlvbiBNZyhlLHQpe0JnKGUsImRhIix0KX1mdW5jdGlvbiBCZyhlLHQsbj16dCl7Y29uc3Qgcj1lLl9fd2RjfHwoZS5fX3dkYz0oKT0+e2xldCBvPW47Zm9yKDtvOyl7aWYoby5pc0RlYWN0aXZhdGVkKXJldHVybjtvPW8ucGFyZW50fXJldHVybiBlKCl9KTtpZihfbCh0LHIsbiksbil7bGV0IG89bi5wYXJlbnQ7Zm9yKDtvJiZvLnBhcmVudDspTWkoby5wYXJlbnQudm5vZGUpJiZZXyhyLHQsbixvKSxvPW8ucGFyZW50fX1mdW5jdGlvbiBZXyhlLHQsbixyKXtjb25zdCBvPV9sKHQsZSxyLCEwKTtwcigoKT0+e2ZmKHJbdF0sbyl9LG4pfWZ1bmN0aW9uIGRjKGUpe2Uuc2hhcGVGbGFnJj0tMjU3LGUuc2hhcGVGbGFnJj0tNTEzfWZ1bmN0aW9uIG5hKGUpe3JldHVybiBlLnNoYXBlRmxhZyYxMjg/ZS5zc0NvbnRlbnQ6ZX1mdW5jdGlvbiBfbChlLHQsbj16dCxyPSExKXtpZihuKXtjb25zdCBvPW5bZV18fChuW2VdPVtdKSxzPXQuX193ZWh8fCh0Ll9fd2VoPSguLi5pKT0+e0RyKCk7Y29uc3QgYT1EcyhuKSxsPUhuKHQsbixlLGkpO3JldHVybiBhKCksTHIoKSxsfSk7cmV0dXJuIHI/by51bnNoaWZ0KHMpOm8ucHVzaChzKSxzfX1jb25zdCBGcj1lPT4odCxuPXp0KT0+eyghQm98fGU9PT0ic3AiKSYmX2woZSwoLi4ucik9PnQoLi4uciksbil9LHFnPUZyKCJibSIpLG90PUZyKCJtIiksSl89RnIoImJ1IikseGw9RnIoInUiKSxIbz1GcigiYnVtIikscHI9RnIoInVtIiksWF89RnIoInNwIiksWl89RnIoInJ0ZyIpLGV4PUZyKCJydGMiKTtmdW5jdGlvbiBGZyhlLHQ9enQpe19sKCJlYyIsZSx0KX1jb25zdCBfZj0iY29tcG9uZW50cyIsdHg9ImRpcmVjdGl2ZXMiO2Z1bmN0aW9uIEpkKGUsdCl7cmV0dXJuIHhmKF9mLGUsITAsdCl8fGV9Y29uc3Qgemc9U3ltYm9sLmZvcigidi1uZGMiKTtmdW5jdGlvbiBGbihlKXtyZXR1cm4gZnQoZSk/eGYoX2YsZSwhMSl8fGU6ZXx8emd9ZnVuY3Rpb24gbngoZSl7cmV0dXJuIHhmKHR4LGUpfWZ1bmN0aW9uIHhmKGUsdCxuPSEwLHI9ITEpe2NvbnN0IG89anR8fHp0O2lmKG8pe2NvbnN0IHM9by50eXBlO2lmKGU9PT1fZil7Y29uc3QgYT1jdShzLCExKTtpZihhJiYoYT09PXR8fGE9PT0kdCh0KXx8YT09PXBsKCR0KHQpKSkpcmV0dXJuIHN9Y29uc3QgaT1YZChvW2VdfHxzW2VdLHQpfHxYZChvLmFwcENvbnRleHRbZV0sdCk7cmV0dXJuIWkmJnI/czppfX1mdW5jdGlvbiBYZChlLHQpe3JldHVybiBlJiYoZVt0XXx8ZVskdCh0KV18fGVbcGwoJHQodCkpXSl9ZnVuY3Rpb24gdXIoZSx0LG4scil7bGV0IG87Y29uc3Qgcz1uLGk9U2UoZSk7aWYoaXx8ZnQoZSkpe2NvbnN0IGE9aSYmY3IoZSk7bGV0IGw9ITEsdT0hMTthJiYobD0heG4oZSksdT1kcihlKSxlPWdsKGUpKSxvPW5ldyBBcnJheShlLmxlbmd0aCk7Zm9yKGxldCBjPTAsZj1lLmxlbmd0aDtjPGY7YysrKW9bY109dChsP3U/X3MoVW4oZVtjXSkpOlVuKGVbY10pOmVbY10sYyx2b2lkIDAscyl9ZWxzZSBpZih0eXBlb2YgZT09Im51bWJlciIpe289bmV3IEFycmF5KGUpO2ZvcihsZXQgYT0wO2E8ZTthKyspb1thXT10KGErMSxhLHZvaWQgMCxzKX1lbHNlIGlmKFplKGUpKWlmKGVbU3ltYm9sLml0ZXJhdG9yXSlvPUFycmF5LmZyb20oZSwoYSxsKT0+dChhLGwsdm9pZCAwLHMpKTtlbHNle2NvbnN0IGE9T2JqZWN0LmtleXMoZSk7bz1uZXcgQXJyYXkoYS5sZW5ndGgpO2ZvcihsZXQgbD0wLHU9YS5sZW5ndGg7bDx1O2wrKyl7Y29uc3QgYz1hW2xdO29bbF09dChlW2NdLGMsbCxzKX19ZWxzZSBvPVtdO3JldHVybiBvfWZ1bmN0aW9uIG5xKGUsdCl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9dFtuXTtpZihTZShyKSlmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyllW3Jbb10ubmFtZV09cltvXS5mbjtlbHNlIHImJihlW3IubmFtZV09ci5rZXk/KC4uLm8pPT57Y29uc3Qgcz1yLmZuKC4uLm8pO3JldHVybiBzJiYocy5rZXk9ci5rZXkpLHN9OnIuZm4pfXJldHVybiBlfWZ1bmN0aW9uIFUoZSx0LG49e30scixvKXtpZihqdC5jZXx8anQucGFyZW50JiZJcihqdC5wYXJlbnQpJiZqdC5wYXJlbnQuY2Upe2NvbnN0IHU9T2JqZWN0LmtleXMobikubGVuZ3RoPjA7cmV0dXJuIHQhPT0iZGVmYXVsdCImJihuLm5hbWU9dCksUigpLCQoR2UsbnVsbCxbcmUoInNsb3QiLG4sciYmcigpKV0sdT8tMjo2NCl9bGV0IHM9ZVt0XTtzJiZzLl9jJiYocy5fZD0hMSksUigpO2NvbnN0IGk9cyYmamcocyhuKSksYT1uLmtleXx8aSYmaS5rZXksbD0kKEdlLHtrZXk6KGEmJiFrbihhKT9hOmBfJHt0fWApKyghaSYmcj8iX2ZiIjoiIil9LGl8fChyP3IoKTpbXSksaSYmZS5fPT09MT82NDotMik7cmV0dXJuIGwuc2NvcGVJZCYmKGwuc2xvdFNjb3BlSWRzPVtsLnNjb3BlSWQrIi1zIl0pLHMmJnMuX2MmJihzLl9kPSEwKSxsfWZ1bmN0aW9uIGpnKGUpe3JldHVybiBlLnNvbWUodD0+TW8odCk/ISh0LnR5cGU9PT1fdHx8dC50eXBlPT09R2UmJiFqZyh0LmNoaWxkcmVuKSk6ITApP2U6bnVsbH1mdW5jdGlvbiBWZyhlLHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSluW25pKHIpXT1lW3JdO3JldHVybiBufWNvbnN0IHJ1PWU9PmU/cHkoZSk/RWwoZSk6cnUoZS5wYXJlbnQpOm51bGwsaWk9dnQoT2JqZWN0LmNyZWF0ZShudWxsKSx7JDplPT5lLCRlbDplPT5lLnZub2RlLmVsLCRkYXRhOmU9PmUuZGF0YSwkcHJvcHM6ZT0+ZS5wcm9wcywkYXR0cnM6ZT0+ZS5hdHRycywkc2xvdHM6ZT0+ZS5zbG90cywkcmVmczplPT5lLnJlZnMsJHBhcmVudDplPT5ydShlLnBhcmVudCksJHJvb3Q6ZT0+cnUoZS5yb290KSwkaG9zdDplPT5lLmNlLCRlbWl0OmU9PmUuZW1pdCwkb3B0aW9uczplPT5TZihlKSwkZm9yY2VVcGRhdGU6ZT0+ZS5mfHwoZS5mPSgpPT57eWYoZS51cGRhdGUpfSksJG5leHRUaWNrOmU9PmUubnx8KGUubj1pdC5iaW5kKGUucHJveHkpKSwkd2F0Y2g6ZT0+JF8uYmluZChlKX0pLHBjPShlLHQpPT5lIT09WWUmJiFlLl9faXNTY3JpcHRTZXR1cCYmbnQoZSx0KSxyeD17Z2V0KHtfOmV9LHQpe2lmKHQ9PT0iX192X3NraXAiKXJldHVybiEwO2NvbnN0e2N0eDpuLHNldHVwU3RhdGU6cixkYXRhOm8scHJvcHM6cyxhY2Nlc3NDYWNoZTppLHR5cGU6YSxhcHBDb250ZXh0Omx9PWU7aWYodFswXSE9PSIkIil7Y29uc3QgZD1pW3RdO2lmKGQhPT12b2lkIDApc3dpdGNoKGQpe2Nhc2UgMTpyZXR1cm4gclt0XTtjYXNlIDI6cmV0dXJuIG9bdF07Y2FzZSA0OnJldHVybiBuW3RdO2Nhc2UgMzpyZXR1cm4gc1t0XX1lbHNle2lmKHBjKHIsdCkpcmV0dXJuIGlbdF09MSxyW3RdO2lmKG8hPT1ZZSYmbnQobyx0KSlyZXR1cm4gaVt0XT0yLG9bdF07aWYobnQocyx0KSlyZXR1cm4gaVt0XT0zLHNbdF07aWYobiE9PVllJiZudChuLHQpKXJldHVybiBpW3RdPTQsblt0XTtvdSYmKGlbdF09MCl9fWNvbnN0IHU9aWlbdF07bGV0IGMsZjtpZih1KXJldHVybiB0PT09IiRhdHRycyImJkt0KGUuYXR0cnMsImdldCIsIiIpLHUoZSk7aWYoKGM9YS5fX2Nzc01vZHVsZXMpJiYoYz1jW3RdKSlyZXR1cm4gYztpZihuIT09WWUmJm50KG4sdCkpcmV0dXJuIGlbdF09NCxuW3RdO2lmKGY9bC5jb25maWcuZ2xvYmFsUHJvcGVydGllcyxudChmLHQpKXJldHVybiBmW3RdfSxzZXQoe186ZX0sdCxuKXtjb25zdHtkYXRhOnIsc2V0dXBTdGF0ZTpvLGN0eDpzfT1lO3JldHVybiBwYyhvLHQpPyhvW3RdPW4sITApOnIhPT1ZZSYmbnQocix0KT8oclt0XT1uLCEwKTpudChlLnByb3BzLHQpfHx0WzBdPT09IiQiJiZ0LnNsaWNlKDEpaW4gZT8hMTooc1t0XT1uLCEwKX0saGFzKHtfOntkYXRhOmUsc2V0dXBTdGF0ZTp0LGFjY2Vzc0NhY2hlOm4sY3R4OnIsYXBwQ29udGV4dDpvLHByb3BzOnMsdHlwZTppfX0sYSl7bGV0IGw7cmV0dXJuISEoblthXXx8ZSE9PVllJiZhWzBdIT09IiQiJiZudChlLGEpfHxwYyh0LGEpfHxudChzLGEpfHxudChyLGEpfHxudChpaSxhKXx8bnQoby5jb25maWcuZ2xvYmFsUHJvcGVydGllcyxhKXx8KGw9aS5fX2Nzc01vZHVsZXMpJiZsW2FdKX0sZGVmaW5lUHJvcGVydHkoZSx0LG4pe3JldHVybiBuLmdldCE9bnVsbD9lLl8uYWNjZXNzQ2FjaGVbdF09MDpudChuLCJ2YWx1ZSIpJiZ0aGlzLnNldChlLHQsbi52YWx1ZSxudWxsKSxSZWZsZWN0LmRlZmluZVByb3BlcnR5KGUsdCxuKX19O2Z1bmN0aW9uIHpyKCl7cmV0dXJuIFVnKCkuc2xvdHN9ZnVuY3Rpb24gb3goKXtyZXR1cm4gVWcoKS5hdHRyc31mdW5jdGlvbiBVZyhlKXtjb25zdCB0PW10KCk7cmV0dXJuIHQuc2V0dXBDb250ZXh0fHwodC5zZXR1cENvbnRleHQ9aHkodCkpfWZ1bmN0aW9uIGJpKGUpe3JldHVybiBTZShlKT9lLnJlZHVjZSgodCxuKT0+KHRbbl09bnVsbCx0KSx7fSk6ZX1mdW5jdGlvbiBzeChlLHQpe2NvbnN0IG49YmkoZSk7Zm9yKGNvbnN0IHIgaW4gdCl7aWYoci5zdGFydHNXaXRoKCJfX3NraXAiKSljb250aW51ZTtsZXQgbz1uW3JdO28/U2Uobyl8fENlKG8pP289bltyXT17dHlwZTpvLGRlZmF1bHQ6dFtyXX06by5kZWZhdWx0PXRbcl06bz09PW51bGwmJihvPW5bcl09e2RlZmF1bHQ6dFtyXX0pLG8mJnRbYF9fc2tpcF8ke3J9YF0mJihvLnNraXBGYWN0b3J5PSEwKX1yZXR1cm4gbn1mdW5jdGlvbiBpeChlLHQpe3JldHVybiFlfHwhdD9lfHx0OlNlKGUpJiZTZSh0KT9lLmNvbmNhdCh0KTp2dCh7fSxiaShlKSxiaSh0KSl9ZnVuY3Rpb24gcnEoZSl7Y29uc3QgdD1tdCgpLG49Qm87bGV0IHI9ZSgpO19pKCksbiYmaHMoITEpO2NvbnN0IG89KCk9PntEcyh0KSxuJiZocyghMCl9LHM9KCk9PnttdCgpIT09dCYmdC5zY29wZS5vZmYoKSxfaSgpLG4mJmhzKCExKX07cmV0dXJuIHVsKHIpJiYocj1yLmNhdGNoKGk9Pnt0aHJvdyBvKCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbihzKSksaX0pKSxbciwoKT0+e28oKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKHMpfV19bGV0IG91PSEwO2Z1bmN0aW9uIGF4KGUpe2NvbnN0IHQ9U2YoZSksbj1lLnByb3h5LHI9ZS5jdHg7b3U9ITEsdC5iZWZvcmVDcmVhdGUmJlpkKHQuYmVmb3JlQ3JlYXRlLGUsImJjIik7Y29uc3R7ZGF0YTpvLGNvbXB1dGVkOnMsbWV0aG9kczppLHdhdGNoOmEscHJvdmlkZTpsLGluamVjdDp1LGNyZWF0ZWQ6YyxiZWZvcmVNb3VudDpmLG1vdW50ZWQ6ZCxiZWZvcmVVcGRhdGU6cCx1cGRhdGVkOm0sYWN0aXZhdGVkOnksZGVhY3RpdmF0ZWQ6XyxiZWZvcmVEZXN0cm95OncsYmVmb3JlVW5tb3VudDp2LGRlc3Ryb3llZDpoLHVubW91bnRlZDpiLHJlbmRlcjp4LHJlbmRlclRyYWNrZWQ6UyxyZW5kZXJUcmlnZ2VyZWQ6ayxlcnJvckNhcHR1cmVkOlQsc2VydmVyUHJlZmV0Y2g6QyxleHBvc2U6UCxpbmhlcml0QXR0cnM6Rixjb21wb25lbnRzOkQsZGlyZWN0aXZlczpXLGZpbHRlcnM6TH09dDtpZih1JiZseCh1LHIsbnVsbCksaSlmb3IoY29uc3QgViBpbiBpKXtjb25zdCBCPWlbVl07Q2UoQikmJihyW1ZdPUIuYmluZChuKSl9aWYobyl7Y29uc3QgVj1vLmNhbGwobixuKTtaZShWKSYmKGUuZGF0YT1idChWKSl9aWYob3U9ITAscylmb3IoY29uc3QgViBpbiBzKXtjb25zdCBCPXNbVl0saWU9Q2UoQik/Qi5iaW5kKG4sbik6Q2UoQi5nZXQpP0IuZ2V0LmJpbmQobixuKTpscixuZT0hQ2UoQikmJkNlKEIuc2V0KT9CLnNldC5iaW5kKG4pOmxyLFZlPU4oe2dldDppZSxzZXQ6bmV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkocixWLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PlZlLnZhbHVlLHNldDpOZT0+VmUudmFsdWU9TmV9KX1pZihhKWZvcihjb25zdCBWIGluIGEpSGcoYVtWXSxyLG4sVik7aWYobCl7Y29uc3QgVj1DZShsKT9sLmNhbGwobik6bDtSZWZsZWN0Lm93bktleXMoVikuZm9yRWFjaChCPT57TnQoQixWW0JdKX0pfWMmJlpkKGMsZSwiYyIpO2Z1bmN0aW9uIEkoVixCKXtTZShCKT9CLmZvckVhY2goaWU9PlYoaWUuYmluZChuKSkpOkImJlYoQi5iaW5kKG4pKX1pZihJKHFnLGYpLEkob3QsZCksSShKXyxwKSxJKHhsLG0pLEkoJGcseSksSShNZyxfKSxJKEZnLFQpLEkoZXgsUyksSShaXyxrKSxJKEhvLHYpLEkocHIsYiksSShYXyxDKSxTZShQKSlpZihQLmxlbmd0aCl7Y29uc3QgVj1lLmV4cG9zZWR8fChlLmV4cG9zZWQ9e30pO1AuZm9yRWFjaChCPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFYsQix7Z2V0OigpPT5uW0JdLHNldDppZT0+bltCXT1pZSxlbnVtZXJhYmxlOiEwfSl9KX1lbHNlIGUuZXhwb3NlZHx8KGUuZXhwb3NlZD17fSk7eCYmZS5yZW5kZXI9PT1sciYmKGUucmVuZGVyPXgpLEYhPW51bGwmJihlLmluaGVyaXRBdHRycz1GKSxEJiYoZS5jb21wb25lbnRzPUQpLFcmJihlLmRpcmVjdGl2ZXM9VyksQyYmd2YoZSl9ZnVuY3Rpb24gbHgoZSx0LG49bHIpe1NlKGUpJiYoZT1zdShlKSk7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdO2xldCBzO1plKG8pPyJkZWZhdWx0ImluIG8/cz1LZShvLmZyb218fHIsby5kZWZhdWx0LCEwKTpzPUtlKG8uZnJvbXx8cik6cz1LZShvKSwkZShzKT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PnMudmFsdWUsc2V0Omk9PnMudmFsdWU9aX0pOnRbcl09c319ZnVuY3Rpb24gWmQoZSx0LG4pe0huKFNlKGUpP2UubWFwKHI9PnIuYmluZCh0LnByb3h5KSk6ZS5iaW5kKHQucHJveHkpLHQsbil9ZnVuY3Rpb24gSGcoZSx0LG4scil7bGV0IG89ci5pbmNsdWRlcygiLiIpP0FnKG4scik6KCk9Pm5bcl07aWYoZnQoZSkpe2NvbnN0IHM9dFtlXTtDZShzKSYmUGUobyxzKX1lbHNlIGlmKENlKGUpKVBlKG8sZS5iaW5kKG4pKTtlbHNlIGlmKFplKGUpKWlmKFNlKGUpKWUuZm9yRWFjaChzPT5IZyhzLHQsbixyKSk7ZWxzZXtjb25zdCBzPUNlKGUuaGFuZGxlcik/ZS5oYW5kbGVyLmJpbmQobik6dFtlLmhhbmRsZXJdO0NlKHMpJiZQZShvLHMsZSl9fWZ1bmN0aW9uIFNmKGUpe2NvbnN0IHQ9ZS50eXBlLHttaXhpbnM6bixleHRlbmRzOnJ9PXQse21peGluczpvLG9wdGlvbnNDYWNoZTpzLGNvbmZpZzp7b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOml9fT1lLmFwcENvbnRleHQsYT1zLmdldCh0KTtsZXQgbDtyZXR1cm4gYT9sPWE6IW8ubGVuZ3RoJiYhbiYmIXI/bD10OihsPXt9LG8ubGVuZ3RoJiZvLmZvckVhY2godT0+emEobCx1LGksITApKSx6YShsLHQsaSkpLFplKHQpJiZzLnNldCh0LGwpLGx9ZnVuY3Rpb24gemEoZSx0LG4scj0hMSl7Y29uc3R7bWl4aW5zOm8sZXh0ZW5kczpzfT10O3MmJnphKGUscyxuLCEwKSxvJiZvLmZvckVhY2goaT0+emEoZSxpLG4sITApKTtmb3IoY29uc3QgaSBpbiB0KWlmKCEociYmaT09PSJleHBvc2UiKSl7Y29uc3QgYT1jeFtpXXx8biYmbltpXTtlW2ldPWE/YShlW2ldLHRbaV0pOnRbaV19cmV0dXJuIGV9Y29uc3QgY3g9e2RhdGE6ZXAscHJvcHM6dHAsZW1pdHM6dHAsbWV0aG9kczpacyxjb21wdXRlZDpacyxiZWZvcmVDcmVhdGU6WnQsY3JlYXRlZDpadCxiZWZvcmVNb3VudDpadCxtb3VudGVkOlp0LGJlZm9yZVVwZGF0ZTpadCx1cGRhdGVkOlp0LGJlZm9yZURlc3Ryb3k6WnQsYmVmb3JlVW5tb3VudDpadCxkZXN0cm95ZWQ6WnQsdW5tb3VudGVkOlp0LGFjdGl2YXRlZDpadCxkZWFjdGl2YXRlZDpadCxlcnJvckNhcHR1cmVkOlp0LHNlcnZlclByZWZldGNoOlp0LGNvbXBvbmVudHM6WnMsZGlyZWN0aXZlczpacyx3YXRjaDpmeCxwcm92aWRlOmVwLGluamVjdDp1eH07ZnVuY3Rpb24gZXAoZSx0KXtyZXR1cm4gdD9lP2Z1bmN0aW9uKCl7cmV0dXJuIHZ0KENlKGUpP2UuY2FsbCh0aGlzLHRoaXMpOmUsQ2UodCk/dC5jYWxsKHRoaXMsdGhpcyk6dCl9OnQ6ZX1mdW5jdGlvbiB1eChlLHQpe3JldHVybiBacyhzdShlKSxzdSh0KSl9ZnVuY3Rpb24gc3UoZSl7aWYoU2UoZSkpe2NvbnN0IHQ9e307Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdFtlW25dXT1lW25dO3JldHVybiB0fXJldHVybiBlfWZ1bmN0aW9uIFp0KGUsdCl7cmV0dXJuIGU/Wy4uLm5ldyBTZXQoW10uY29uY2F0KGUsdCkpXTp0fWZ1bmN0aW9uIFpzKGUsdCl7cmV0dXJuIGU/dnQoT2JqZWN0LmNyZWF0ZShudWxsKSxlLHQpOnR9ZnVuY3Rpb24gdHAoZSx0KXtyZXR1cm4gZT9TZShlKSYmU2UodCk/Wy4uLm5ldyBTZXQoWy4uLmUsLi4udF0pXTp2dChPYmplY3QuY3JlYXRlKG51bGwpLGJpKGUpLGJpKHQ/P3t9KSk6dH1mdW5jdGlvbiBmeChlLHQpe2lmKCFlKXJldHVybiB0O2lmKCF0KXJldHVybiBlO2NvbnN0IG49dnQoT2JqZWN0LmNyZWF0ZShudWxsKSxlKTtmb3IoY29uc3QgciBpbiB0KW5bcl09WnQoZVtyXSx0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBXZygpe3JldHVybnthcHA6bnVsbCxjb25maWc6e2lzTmF0aXZlVGFnOlFoLHBlcmZvcm1hbmNlOiExLGdsb2JhbFByb3BlcnRpZXM6e30sb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOnt9LGVycm9ySGFuZGxlcjp2b2lkIDAsd2FybkhhbmRsZXI6dm9pZCAwLGNvbXBpbGVyT3B0aW9uczp7fX0sbWl4aW5zOltdLGNvbXBvbmVudHM6e30sZGlyZWN0aXZlczp7fSxwcm92aWRlczpPYmplY3QuY3JlYXRlKG51bGwpLG9wdGlvbnNDYWNoZTpuZXcgV2Vha01hcCxwcm9wc0NhY2hlOm5ldyBXZWFrTWFwLGVtaXRzQ2FjaGU6bmV3IFdlYWtNYXB9fWxldCBkeD0wO2Z1bmN0aW9uIHB4KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsbz1udWxsKXtDZShyKXx8KHI9dnQoe30scikpLG8hPW51bGwmJiFaZShvKSYmKG89bnVsbCk7Y29uc3Qgcz1XZygpLGk9bmV3IFdlYWtTZXQsYT1bXTtsZXQgbD0hMTtjb25zdCB1PXMuYXBwPXtfdWlkOmR4KyssX2NvbXBvbmVudDpyLF9wcm9wczpvLF9jb250YWluZXI6bnVsbCxfY29udGV4dDpzLF9pbnN0YW5jZTpudWxsLHZlcnNpb246V3gsZ2V0IGNvbmZpZygpe3JldHVybiBzLmNvbmZpZ30sc2V0IGNvbmZpZyhjKXt9LHVzZShjLC4uLmYpe3JldHVybiBpLmhhcyhjKXx8KGMmJkNlKGMuaW5zdGFsbCk/KGkuYWRkKGMpLGMuaW5zdGFsbCh1LC4uLmYpKTpDZShjKSYmKGkuYWRkKGMpLGModSwuLi5mKSkpLHV9LG1peGluKGMpe3JldHVybiBzLm1peGlucy5pbmNsdWRlcyhjKXx8cy5taXhpbnMucHVzaChjKSx1fSxjb21wb25lbnQoYyxmKXtyZXR1cm4gZj8ocy5jb21wb25lbnRzW2NdPWYsdSk6cy5jb21wb25lbnRzW2NdfSxkaXJlY3RpdmUoYyxmKXtyZXR1cm4gZj8ocy5kaXJlY3RpdmVzW2NdPWYsdSk6cy5kaXJlY3RpdmVzW2NdfSxtb3VudChjLGYsZCl7aWYoIWwpe2NvbnN0IHA9dS5fY2VWTm9kZXx8cmUocixvKTtyZXR1cm4gcC5hcHBDb250ZXh0PXMsZD09PSEwP2Q9InN2ZyI6ZD09PSExJiYoZD12b2lkIDApLGYmJnQ/dChwLGMpOmUocCxjLGQpLGw9ITAsdS5fY29udGFpbmVyPWMsYy5fX3Z1ZV9hcHBfXz11LEVsKHAuY29tcG9uZW50KX19LG9uVW5tb3VudChjKXthLnB1c2goYyl9LHVubW91bnQoKXtsJiYoSG4oYSx1Ll9pbnN0YW5jZSwxNiksZShudWxsLHUuX2NvbnRhaW5lciksZGVsZXRlIHUuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXyl9LHByb3ZpZGUoYyxmKXtyZXR1cm4gcy5wcm92aWRlc1tjXT1mLHV9LHJ1bldpdGhDb250ZXh0KGMpe2NvbnN0IGY9Tm87Tm89dTt0cnl7cmV0dXJuIGMoKX1maW5hbGx5e05vPWZ9fX07cmV0dXJuIHV9fWxldCBObz1udWxsO2Z1bmN0aW9uIG14KGUsdCxuPVllKXtjb25zdCByPW10KCksbz0kdCh0KSxzPUJyKHQpLGk9R2coZSxvKSxhPXdsKChsLHUpPT57bGV0IGMsZj1ZZSxkO3JldHVybiBMXygoKT0+e2NvbnN0IHA9ZVtvXTtGdChjLHApJiYoYz1wLHUoKSl9KSx7Z2V0KCl7cmV0dXJuIGwoKSxuLmdldD9uLmdldChjKTpjfSxzZXQocCl7Y29uc3QgbT1uLnNldD9uLnNldChwKTpwO2lmKCFGdChtLGMpJiYhKGYhPT1ZZSYmRnQocCxmKSkpcmV0dXJuO2NvbnN0IHk9ci52bm9kZS5wcm9wczt5JiYodCBpbiB5fHxvIGluIHl8fHMgaW4geSkmJihgb25VcGRhdGU6JHt0fWBpbiB5fHxgb25VcGRhdGU6JHtvfWBpbiB5fHxgb25VcGRhdGU6JHtzfWBpbiB5KXx8KGM9cCx1KCkpLHIuZW1pdChgdXBkYXRlOiR7dH1gLG0pLEZ0KHAsbSkmJkZ0KHAsZikmJiFGdChtLGQpJiZ1KCksZj1wLGQ9bX19fSk7cmV0dXJuIGFbU3ltYm9sLml0ZXJhdG9yXT0oKT0+e2xldCBsPTA7cmV0dXJue25leHQoKXtyZXR1cm4gbDwyP3t2YWx1ZTpsKys/aXx8WWU6YSxkb25lOiExfTp7ZG9uZTohMH19fX0sYX1jb25zdCBHZz0oZSx0KT0+dD09PSJtb2RlbFZhbHVlInx8dD09PSJtb2RlbC12YWx1ZSI/ZS5tb2RlbE1vZGlmaWVyczplW2Ake3R9TW9kaWZpZXJzYF18fGVbYCR7JHQodCl9TW9kaWZpZXJzYF18fGVbYCR7QnIodCl9TW9kaWZpZXJzYF07ZnVuY3Rpb24gaHgoZSx0LC4uLm4pe2lmKGUuaXNVbm1vdW50ZWQpcmV0dXJuO2NvbnN0IHI9ZS52bm9kZS5wcm9wc3x8WWU7bGV0IG89bjtjb25zdCBzPXQuc3RhcnRzV2l0aCgidXBkYXRlOiIpLGk9cyYmR2cocix0LnNsaWNlKDcpKTtpJiYoaS50cmltJiYobz1uLm1hcChjPT5mdChjKT9jLnRyaW0oKTpjKSksaS5udW1iZXImJihvPW4ubWFwKEd3KSkpO2xldCBhLGw9clthPW5pKHQpXXx8clthPW5pKCR0KHQpKV07IWwmJnMmJihsPXJbYT1uaShCcih0KSldKSxsJiZIbihsLGUsNixvKTtjb25zdCB1PXJbYSsiT25jZSJdO2lmKHUpe2lmKCFlLmVtaXR0ZWQpZS5lbWl0dGVkPXt9O2Vsc2UgaWYoZS5lbWl0dGVkW2FdKXJldHVybjtlLmVtaXR0ZWRbYV09ITAsSG4odSxlLDYsbyl9fWNvbnN0IGd4PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEtnKGUsdCxuPSExKXtjb25zdCByPW4/Z3g6dC5lbWl0c0NhY2hlLG89ci5nZXQoZSk7aWYobyE9PXZvaWQgMClyZXR1cm4gbztjb25zdCBzPWUuZW1pdHM7bGV0IGk9e30sYT0hMTtpZighQ2UoZSkpe2NvbnN0IGw9dT0+e2NvbnN0IGM9S2codSx0LCEwKTtjJiYoYT0hMCx2dChpLGMpKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChsKSxlLmV4dGVuZHMmJmwoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChsKX1yZXR1cm4hcyYmIWE/KFplKGUpJiZyLnNldChlLG51bGwpLG51bGwpOihTZShzKT9zLmZvckVhY2gobD0+aVtsXT1udWxsKTp2dChpLHMpLFplKGUpJiZyLnNldChlLGkpLGkpfWZ1bmN0aW9uIFNsKGUsdCl7cmV0dXJuIWV8fCFSaSh0KT8hMToodD10LnNsaWNlKDIpLnJlcGxhY2UoL09uY2UkLywiIiksbnQoZSx0WzBdLnRvTG93ZXJDYXNlKCkrdC5zbGljZSgxKSl8fG50KGUsQnIodCkpfHxudChlLHQpKX1mdW5jdGlvbiBtYyhlKXtjb25zdHt0eXBlOnQsdm5vZGU6bixwcm94eTpyLHdpdGhQcm94eTpvLHByb3BzT3B0aW9uczpbc10sc2xvdHM6aSxhdHRyczphLGVtaXQ6bCxyZW5kZXI6dSxyZW5kZXJDYWNoZTpjLHByb3BzOmYsZGF0YTpkLHNldHVwU3RhdGU6cCxjdHg6bSxpbmhlcml0QXR0cnM6eX09ZSxfPXFhKGUpO2xldCB3LHY7dHJ5e2lmKG4uc2hhcGVGbGFnJjQpe2NvbnN0IGI9b3x8cix4PWI7dz1ibih1LmNhbGwoeCxiLGMsZixwLGQsbSkpLHY9YX1lbHNle2NvbnN0IGI9dDt3PWJuKGIubGVuZ3RoPjE/YihmLHthdHRyczphLHNsb3RzOmksZW1pdDpsfSk6YihmLG51bGwpKSx2PXQucHJvcHM/YTp2eChhKX19Y2F0Y2goYil7bGkubGVuZ3RoPTAsTnMoYixlLDEpLHc9cmUoX3QpfWxldCBoPXc7aWYodiYmeSE9PSExKXtjb25zdCBiPU9iamVjdC5rZXlzKHYpLHtzaGFwZUZsYWc6eH09aDtiLmxlbmd0aCYmeCY3JiYocyYmYi5zb21lKGNsKSYmKHY9YngodixzKSksaD1wbihoLHYsITEsITApKX1yZXR1cm4gbi5kaXJzJiYoaD1wbihoLG51bGwsITEsITApLGguZGlycz1oLmRpcnM/aC5kaXJzLmNvbmNhdChuLmRpcnMpOm4uZGlycyksbi50cmFuc2l0aW9uJiZ4cyhoLG4udHJhbnNpdGlvbiksdz1oLHFhKF8pLHd9ZnVuY3Rpb24geXgoZSx0PSEwKXtsZXQgbjtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7Y29uc3Qgbz1lW3JdO2lmKE1vKG8pKXtpZihvLnR5cGUhPT1fdHx8by5jaGlsZHJlbj09PSJ2LWlmIil7aWYobilyZXR1cm47bj1vfX1lbHNlIHJldHVybn1yZXR1cm4gbn1jb25zdCB2eD1lPT57bGV0IHQ7Zm9yKGNvbnN0IG4gaW4gZSkobj09PSJjbGFzcyJ8fG49PT0ic3R5bGUifHxSaShuKSkmJigodHx8KHQ9e30pKVtuXT1lW25dKTtyZXR1cm4gdH0sYng9KGUsdCk9Pntjb25zdCBuPXt9O2Zvcihjb25zdCByIGluIGUpKCFjbChyKXx8IShyLnNsaWNlKDkpaW4gdCkpJiYobltyXT1lW3JdKTtyZXR1cm4gbn07ZnVuY3Rpb24gd3goZSx0LG4pe2NvbnN0e3Byb3BzOnIsY2hpbGRyZW46byxjb21wb25lbnQ6c309ZSx7cHJvcHM6aSxjaGlsZHJlbjphLHBhdGNoRmxhZzpsfT10LHU9cy5lbWl0c09wdGlvbnM7aWYodC5kaXJzfHx0LnRyYW5zaXRpb24pcmV0dXJuITA7aWYobiYmbD49MCl7aWYobCYxMDI0KXJldHVybiEwO2lmKGwmMTYpcmV0dXJuIHI/bnAocixpLHUpOiEhaTtpZihsJjgpe2NvbnN0IGM9dC5keW5hbWljUHJvcHM7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKyspe2NvbnN0IGQ9Y1tmXTtpZihRZyhpLHIsZCkmJiFTbCh1LGQpKXJldHVybiEwfX19ZWxzZSByZXR1cm4ob3x8YSkmJighYXx8IWEuJHN0YWJsZSk/ITA6cj09PWk/ITE6cj9pP25wKHIsaSx1KTohMDohIWk7cmV0dXJuITF9ZnVuY3Rpb24gbnAoZSx0LG4pe2NvbnN0IHI9T2JqZWN0LmtleXModCk7aWYoci5sZW5ndGghPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITA7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspe2NvbnN0IHM9cltvXTtpZihRZyh0LGUscykmJiFTbChuLHMpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFFnKGUsdCxuKXtjb25zdCByPWVbbl0sbz10W25dO3JldHVybiBuPT09InN0eWxlIiYmWmUocikmJlplKG8pPyFwZihyLG8pOnIhPT1vfWZ1bmN0aW9uIGtsKHt2bm9kZTplLHBhcmVudDp0LHN1c3BlbnNlOm59LHIpe2Zvcig7dDspe2NvbnN0IG89dC5zdWJUcmVlO2lmKG8uc3VzcGVuc2UmJm8uc3VzcGVuc2UuYWN0aXZlQnJhbmNoPT09ZSYmKG8uc3VzcGVuc2Uudm5vZGUuZWw9by5lbD1yLGU9byksbz09PWUpKGU9dC52bm9kZSkuZWw9cix0PXQucGFyZW50O2Vsc2UgYnJlYWt9biYmbi5hY3RpdmVCcmFuY2g9PT1lJiYobi52bm9kZS5lbD1yKX1jb25zdCBZZz17fSxKZz0oKT0+T2JqZWN0LmNyZWF0ZShZZyksWGc9ZT0+T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09WWc7ZnVuY3Rpb24gX3goZSx0LG4scj0hMSl7Y29uc3Qgbz17fSxzPUpnKCk7ZS5wcm9wc0RlZmF1bHRzPU9iamVjdC5jcmVhdGUobnVsbCksWmcoZSx0LG8scyk7Zm9yKGNvbnN0IGkgaW4gZS5wcm9wc09wdGlvbnNbMF0paSBpbiBvfHwob1tpXT12b2lkIDApO24/ZS5wcm9wcz1yP286UG4obyk6ZS50eXBlLnByb3BzP2UucHJvcHM9bzplLnByb3BzPXMsZS5hdHRycz1zfWZ1bmN0aW9uIHh4KGUsdCxuLHIpe2NvbnN0e3Byb3BzOm8sYXR0cnM6cyx2bm9kZTp7cGF0Y2hGbGFnOml9fT1lLGE9amUobyksW2xdPWUucHJvcHNPcHRpb25zO2xldCB1PSExO2lmKChyfHxpPjApJiYhKGkmMTYpKXtpZihpJjgpe2NvbnN0IGM9ZS52bm9kZS5keW5hbWljUHJvcHM7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKyspe2xldCBkPWNbZl07aWYoU2woZS5lbWl0c09wdGlvbnMsZCkpY29udGludWU7Y29uc3QgcD10W2RdO2lmKGwpaWYobnQocyxkKSlwIT09c1tkXSYmKHNbZF09cCx1PSEwKTtlbHNle2NvbnN0IG09JHQoZCk7b1ttXT1pdShsLGEsbSxwLGUsITEpfWVsc2UgcCE9PXNbZF0mJihzW2RdPXAsdT0hMCl9fX1lbHNle1pnKGUsdCxvLHMpJiYodT0hMCk7bGV0IGM7Zm9yKGNvbnN0IGYgaW4gYSkoIXR8fCFudCh0LGYpJiYoKGM9QnIoZikpPT09Znx8IW50KHQsYykpKSYmKGw/biYmKG5bZl0hPT12b2lkIDB8fG5bY10hPT12b2lkIDApJiYob1tmXT1pdShsLGEsZix2b2lkIDAsZSwhMCkpOmRlbGV0ZSBvW2ZdKTtpZihzIT09YSlmb3IoY29uc3QgZiBpbiBzKSghdHx8IW50KHQsZikpJiYoZGVsZXRlIHNbZl0sdT0hMCl9dSYmT3IoZS5hdHRycywic2V0IiwiIil9ZnVuY3Rpb24gWmcoZSx0LG4scil7Y29uc3RbbyxzXT1lLnByb3BzT3B0aW9ucztsZXQgaT0hMSxhO2lmKHQpZm9yKGxldCBsIGluIHQpe2lmKElvKGwpKWNvbnRpbnVlO2NvbnN0IHU9dFtsXTtsZXQgYztvJiZudChvLGM9JHQobCkpPyFzfHwhcy5pbmNsdWRlcyhjKT9uW2NdPXU6KGF8fChhPXt9KSlbY109dTpTbChlLmVtaXRzT3B0aW9ucyxsKXx8KCEobCBpbiByKXx8dSE9PXJbbF0pJiYocltsXT11LGk9ITApfWlmKHMpe2NvbnN0IGw9amUobiksdT1hfHxZZTtmb3IobGV0IGM9MDtjPHMubGVuZ3RoO2MrKyl7Y29uc3QgZj1zW2NdO25bZl09aXUobyxsLGYsdVtmXSxlLCFudCh1LGYpKX19cmV0dXJuIGl9ZnVuY3Rpb24gaXUoZSx0LG4scixvLHMpe2NvbnN0IGk9ZVtuXTtpZihpIT1udWxsKXtjb25zdCBhPW50KGksImRlZmF1bHQiKTtpZihhJiZyPT09dm9pZCAwKXtjb25zdCBsPWkuZGVmYXVsdDtpZihpLnR5cGUhPT1GdW5jdGlvbiYmIWkuc2tpcEZhY3RvcnkmJkNlKGwpKXtjb25zdHtwcm9wc0RlZmF1bHRzOnV9PW87aWYobiBpbiB1KXI9dVtuXTtlbHNle2NvbnN0IGM9RHMobyk7cj11W25dPWwuY2FsbChudWxsLHQpLGMoKX19ZWxzZSByPWw7by5jZSYmby5jZS5fc2V0UHJvcChuLHIpfWlbMF0mJihzJiYhYT9yPSExOmlbMV0mJihyPT09IiJ8fHI9PT1CcihuKSkmJihyPSEwKSl9cmV0dXJuIHJ9Y29uc3QgU3g9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gZXkoZSx0LG49ITEpe2NvbnN0IHI9bj9TeDp0LnByb3BzQ2FjaGUsbz1yLmdldChlKTtpZihvKXJldHVybiBvO2NvbnN0IHM9ZS5wcm9wcyxpPXt9LGE9W107bGV0IGw9ITE7aWYoIUNlKGUpKXtjb25zdCBjPWY9PntsPSEwO2NvbnN0W2QscF09ZXkoZix0LCEwKTt2dChpLGQpLHAmJmEucHVzaCguLi5wKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChjKSxlLmV4dGVuZHMmJmMoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChjKX1pZighcyYmIWwpcmV0dXJuIFplKGUpJiZyLnNldChlLHVzKSx1cztpZihTZShzKSlmb3IobGV0IGM9MDtjPHMubGVuZ3RoO2MrKyl7Y29uc3QgZj0kdChzW2NdKTtycChmKSYmKGlbZl09WWUpfWVsc2UgaWYocylmb3IoY29uc3QgYyBpbiBzKXtjb25zdCBmPSR0KGMpO2lmKHJwKGYpKXtjb25zdCBkPXNbY10scD1pW2ZdPVNlKGQpfHxDZShkKT97dHlwZTpkfTp2dCh7fSxkKSxtPXAudHlwZTtsZXQgeT0hMSxfPSEwO2lmKFNlKG0pKWZvcihsZXQgdz0wO3c8bS5sZW5ndGg7Kyt3KXtjb25zdCB2PW1bd10saD1DZSh2KSYmdi5uYW1lO2lmKGg9PT0iQm9vbGVhbiIpe3k9ITA7YnJlYWt9ZWxzZSBoPT09IlN0cmluZyImJihfPSExKX1lbHNlIHk9Q2UobSkmJm0ubmFtZT09PSJCb29sZWFuIjtwWzBdPXkscFsxXT1fLCh5fHxudChwLCJkZWZhdWx0IikpJiZhLnB1c2goZil9fWNvbnN0IHU9W2ksYV07cmV0dXJuIFplKGUpJiZyLnNldChlLHUpLHV9ZnVuY3Rpb24gcnAoZSl7cmV0dXJuIGVbMF0hPT0iJCImJiFJbyhlKX1jb25zdCBrZj1lPT5lPT09Il8ifHxlPT09Il9jdHgifHxlPT09IiRzdGFibGUiLEVmPWU9PlNlKGUpP2UubWFwKGJuKTpbYm4oZSldLGt4PShlLHQsbik9PntpZih0Ll9uKXJldHVybiB0O2NvbnN0IHI9TSgoLi4ubyk9PkVmKHQoLi4ubykpLG4pO3JldHVybiByLl9jPSExLHJ9LHR5PShlLHQsbik9Pntjb25zdCByPWUuX2N0eDtmb3IoY29uc3QgbyBpbiBlKXtpZihrZihvKSljb250aW51ZTtjb25zdCBzPWVbb107aWYoQ2UocykpdFtvXT1reChvLHMscik7ZWxzZSBpZihzIT1udWxsKXtjb25zdCBpPUVmKHMpO3Rbb109KCk9Pml9fX0sbnk9KGUsdCk9Pntjb25zdCBuPUVmKHQpO2Uuc2xvdHMuZGVmYXVsdD0oKT0+bn0scnk9KGUsdCxuKT0+e2Zvcihjb25zdCByIGluIHQpKG58fCFrZihyKSkmJihlW3JdPXRbcl0pfSxFeD0oZSx0LG4pPT57Y29uc3Qgcj1lLnNsb3RzPUpnKCk7aWYoZS52bm9kZS5zaGFwZUZsYWcmMzIpe2NvbnN0IG89dC5fO28/KHJ5KHIsdCxuKSxuJiZYaChyLCJfIixvLCEwKSk6dHkodCxyKX1lbHNlIHQmJm55KGUsdCl9LFR4PShlLHQsbik9Pntjb25zdHt2bm9kZTpyLHNsb3RzOm99PWU7bGV0IHM9ITAsaT1ZZTtpZihyLnNoYXBlRmxhZyYzMil7Y29uc3QgYT10Ll87YT9uJiZhPT09MT9zPSExOnJ5KG8sdCxuKToocz0hdC4kc3RhYmxlLHR5KHQsbykpLGk9dH1lbHNlIHQmJihueShlLHQpLGk9e2RlZmF1bHQ6MX0pO2lmKHMpZm9yKGNvbnN0IGEgaW4gbykha2YoYSkmJmlbYV09PW51bGwmJmRlbGV0ZSBvW2FdfSxUdD1jeTtmdW5jdGlvbiBDeChlKXtyZXR1cm4gb3koZSl9ZnVuY3Rpb24gQXgoZSl7cmV0dXJuIG95KGUsSF8pfWZ1bmN0aW9uIG95KGUsdCl7Y29uc3Qgbj1tbCgpO24uX19WVUVfXz0hMDtjb25zdHtpbnNlcnQ6cixyZW1vdmU6byxwYXRjaFByb3A6cyxjcmVhdGVFbGVtZW50OmksY3JlYXRlVGV4dDphLGNyZWF0ZUNvbW1lbnQ6bCxzZXRUZXh0OnUsc2V0RWxlbWVudFRleHQ6YyxwYXJlbnROb2RlOmYsbmV4dFNpYmxpbmc6ZCxzZXRTY29wZUlkOnA9bHIsaW5zZXJ0U3RhdGljQ29udGVudDptfT1lLHk9KEUsTyxxLEs9bnVsbCxIPW51bGwsWD1udWxsLGNlPXZvaWQgMCxhZT1udWxsLG9lPSEhTy5keW5hbWljQ2hpbGRyZW4pPT57aWYoRT09PU8pcmV0dXJuO0UmJiFxbihFLE8pJiYoSz16KEUpLE5lKEUsSCxYLCEwKSxFPW51bGwpLE8ucGF0Y2hGbGFnPT09LTImJihvZT0hMSxPLmR5bmFtaWNDaGlsZHJlbj1udWxsKTtjb25zdHt0eXBlOloscmVmOmtlLHNoYXBlRmxhZzpwZX09Tztzd2l0Y2goWil7Y2FzZSBEbzpfKEUsTyxxLEspO2JyZWFrO2Nhc2UgX3Q6dyhFLE8scSxLKTticmVhaztjYXNlIGFpOkU9PW51bGwmJnYoTyxxLEssY2UpO2JyZWFrO2Nhc2UgR2U6RChFLE8scSxLLEgsWCxjZSxhZSxvZSk7YnJlYWs7ZGVmYXVsdDpwZSYxP3goRSxPLHEsSyxILFgsY2UsYWUsb2UpOnBlJjY/VyhFLE8scSxLLEgsWCxjZSxhZSxvZSk6KHBlJjY0fHxwZSYxMjgpJiZaLnByb2Nlc3MoRSxPLHEsSyxILFgsY2UsYWUsb2UsbGUpfWtlIT1udWxsJiZIP3BzKGtlLEUmJkUucmVmLFgsT3x8RSwhTyk6a2U9PW51bGwmJkUmJkUucmVmIT1udWxsJiZwcyhFLnJlZixudWxsLFgsRSwhMCl9LF89KEUsTyxxLEspPT57aWYoRT09bnVsbClyKE8uZWw9YShPLmNoaWxkcmVuKSxxLEspO2Vsc2V7Y29uc3QgSD1PLmVsPUUuZWw7Ty5jaGlsZHJlbiE9PUUuY2hpbGRyZW4mJnUoSCxPLmNoaWxkcmVuKX19LHc9KEUsTyxxLEspPT57RT09bnVsbD9yKE8uZWw9bChPLmNoaWxkcmVufHwiIikscSxLKTpPLmVsPUUuZWx9LHY9KEUsTyxxLEspPT57W0UuZWwsRS5hbmNob3JdPW0oRS5jaGlsZHJlbixPLHEsSyxFLmVsLEUuYW5jaG9yKX0saD0oe2VsOkUsYW5jaG9yOk99LHEsSyk9PntsZXQgSDtmb3IoO0UmJkUhPT1POylIPWQoRSkscihFLHEsSyksRT1IO3IoTyxxLEspfSxiPSh7ZWw6RSxhbmNob3I6T30pPT57bGV0IHE7Zm9yKDtFJiZFIT09TzspcT1kKEUpLG8oRSksRT1xO28oTyl9LHg9KEUsTyxxLEssSCxYLGNlLGFlLG9lKT0+e2lmKE8udHlwZT09PSJzdmciP2NlPSJzdmciOk8udHlwZT09PSJtYXRoIiYmKGNlPSJtYXRobWwiKSxFPT1udWxsKVMoTyxxLEssSCxYLGNlLGFlLG9lKTtlbHNle2NvbnN0IFo9RS5lbCYmRS5lbC5faXNWdWVDRT9FLmVsOm51bGw7dHJ5e1omJlouX2JlZ2luUGF0Y2goKSxDKEUsTyxILFgsY2UsYWUsb2UpfWZpbmFsbHl7WiYmWi5fZW5kUGF0Y2goKX19fSxTPShFLE8scSxLLEgsWCxjZSxhZSk9PntsZXQgb2UsWjtjb25zdHtwcm9wczprZSxzaGFwZUZsYWc6cGUsdHJhbnNpdGlvbjpiZSxkaXJzOkFlfT1FO2lmKG9lPUUuZWw9aShFLnR5cGUsWCxrZSYma2UuaXMsa2UpLHBlJjg/YyhvZSxFLmNoaWxkcmVuKTpwZSYxNiYmVChFLmNoaWxkcmVuLG9lLG51bGwsSyxILGhjKEUsWCksY2UsYWUpLEFlJiZvcihFLG51bGwsSywiY3JlYXRlZCIpLGsob2UsRSxFLnNjb3BlSWQsY2UsSyksa2Upe2Zvcihjb25zdCBIZSBpbiBrZSlIZSE9PSJ2YWx1ZSImJiFJbyhIZSkmJnMob2UsSGUsbnVsbCxrZVtIZV0sWCxLKTsidmFsdWUiaW4ga2UmJnMob2UsInZhbHVlIixudWxsLGtlLnZhbHVlLFgpLChaPWtlLm9uVm5vZGVCZWZvcmVNb3VudCkmJmRuKFosSyxFKX1BZSYmb3IoRSxudWxsLEssImJlZm9yZU1vdW50Iik7Y29uc3QgemU9c3koSCxiZSk7emUmJmJlLmJlZm9yZUVudGVyKG9lKSxyKG9lLE8scSksKChaPWtlJiZrZS5vblZub2RlTW91bnRlZCl8fHplfHxBZSkmJlR0KCgpPT57WiYmZG4oWixLLEUpLHplJiZiZS5lbnRlcihvZSksQWUmJm9yKEUsbnVsbCxLLCJtb3VudGVkIil9LEgpfSxrPShFLE8scSxLLEgpPT57aWYocSYmcChFLHEpLEspZm9yKGxldCBYPTA7WDxLLmxlbmd0aDtYKyspcChFLEtbWF0pO2lmKEgpe2xldCBYPUguc3ViVHJlZTtpZihPPT09WHx8VmEoWC50eXBlKSYmKFguc3NDb250ZW50PT09T3x8WC5zc0ZhbGxiYWNrPT09Tykpe2NvbnN0IGNlPUgudm5vZGU7ayhFLGNlLGNlLnNjb3BlSWQsY2Uuc2xvdFNjb3BlSWRzLEgucGFyZW50KX19fSxUPShFLE8scSxLLEgsWCxjZSxhZSxvZT0wKT0+e2ZvcihsZXQgWj1vZTtaPEUubGVuZ3RoO1orKyl7Y29uc3Qga2U9RVtaXT1hZT9DcihFW1pdKTpibihFW1pdKTt5KG51bGwsa2UsTyxxLEssSCxYLGNlLGFlKX19LEM9KEUsTyxxLEssSCxYLGNlKT0+e2NvbnN0IGFlPU8uZWw9RS5lbDtsZXR7cGF0Y2hGbGFnOm9lLGR5bmFtaWNDaGlsZHJlbjpaLGRpcnM6a2V9PU87b2V8PUUucGF0Y2hGbGFnJjE2O2NvbnN0IHBlPUUucHJvcHN8fFllLGJlPU8ucHJvcHN8fFllO2xldCBBZTtpZihxJiZibyhxLCExKSwoQWU9YmUub25Wbm9kZUJlZm9yZVVwZGF0ZSkmJmRuKEFlLHEsTyxFKSxrZSYmb3IoTyxFLHEsImJlZm9yZVVwZGF0ZSIpLHEmJmJvKHEsITApLChwZS5pbm5lckhUTUwmJmJlLmlubmVySFRNTD09bnVsbHx8cGUudGV4dENvbnRlbnQmJmJlLnRleHRDb250ZW50PT1udWxsKSYmYyhhZSwiIiksWj9QKEUuZHluYW1pY0NoaWxkcmVuLFosYWUscSxLLGhjKE8sSCksWCk6Y2V8fEIoRSxPLGFlLG51bGwscSxLLGhjKE8sSCksWCwhMSksb2U+MCl7aWYob2UmMTYpRihhZSxwZSxiZSxxLEgpO2Vsc2UgaWYob2UmMiYmcGUuY2xhc3MhPT1iZS5jbGFzcyYmcyhhZSwiY2xhc3MiLG51bGwsYmUuY2xhc3MsSCksb2UmNCYmcyhhZSwic3R5bGUiLHBlLnN0eWxlLGJlLnN0eWxlLEgpLG9lJjgpe2NvbnN0IHplPU8uZHluYW1pY1Byb3BzO2ZvcihsZXQgSGU9MDtIZTx6ZS5sZW5ndGg7SGUrKyl7Y29uc3QgV2U9emVbSGVdLEplPXBlW1dlXSxwdD1iZVtXZV07KHB0IT09SmV8fFdlPT09InZhbHVlIikmJnMoYWUsV2UsSmUscHQsSCxxKX19b2UmMSYmRS5jaGlsZHJlbiE9PU8uY2hpbGRyZW4mJmMoYWUsTy5jaGlsZHJlbil9ZWxzZSFjZSYmWj09bnVsbCYmRihhZSxwZSxiZSxxLEgpOygoQWU9YmUub25Wbm9kZVVwZGF0ZWQpfHxrZSkmJlR0KCgpPT57QWUmJmRuKEFlLHEsTyxFKSxrZSYmb3IoTyxFLHEsInVwZGF0ZWQiKX0sSyl9LFA9KEUsTyxxLEssSCxYLGNlKT0+e2ZvcihsZXQgYWU9MDthZTxPLmxlbmd0aDthZSsrKXtjb25zdCBvZT1FW2FlXSxaPU9bYWVdLGtlPW9lLmVsJiYob2UudHlwZT09PUdlfHwhcW4ob2UsWil8fG9lLnNoYXBlRmxhZyYxOTgpP2Yob2UuZWwpOnE7eShvZSxaLGtlLG51bGwsSyxILFgsY2UsITApfX0sRj0oRSxPLHEsSyxIKT0+e2lmKE8hPT1xKXtpZihPIT09WWUpZm9yKGNvbnN0IFggaW4gTykhSW8oWCkmJiEoWCBpbiBxKSYmcyhFLFgsT1tYXSxudWxsLEgsSyk7Zm9yKGNvbnN0IFggaW4gcSl7aWYoSW8oWCkpY29udGludWU7Y29uc3QgY2U9cVtYXSxhZT1PW1hdO2NlIT09YWUmJlghPT0idmFsdWUiJiZzKEUsWCxhZSxjZSxILEspfSJ2YWx1ZSJpbiBxJiZzKEUsInZhbHVlIixPLnZhbHVlLHEudmFsdWUsSCl9fSxEPShFLE8scSxLLEgsWCxjZSxhZSxvZSk9Pntjb25zdCBaPU8uZWw9RT9FLmVsOmEoIiIpLGtlPU8uYW5jaG9yPUU/RS5hbmNob3I6YSgiIik7bGV0e3BhdGNoRmxhZzpwZSxkeW5hbWljQ2hpbGRyZW46YmUsc2xvdFNjb3BlSWRzOkFlfT1PO0FlJiYoYWU9YWU/YWUuY29uY2F0KEFlKTpBZSksRT09bnVsbD8ocihaLHEsSykscihrZSxxLEspLFQoTy5jaGlsZHJlbnx8W10scSxrZSxILFgsY2UsYWUsb2UpKTpwZT4wJiZwZSY2NCYmYmUmJkUuZHluYW1pY0NoaWxkcmVuJiZFLmR5bmFtaWNDaGlsZHJlbi5sZW5ndGg9PT1iZS5sZW5ndGg/KFAoRS5keW5hbWljQ2hpbGRyZW4sYmUscSxILFgsY2UsYWUpLChPLmtleSE9bnVsbHx8SCYmTz09PUguc3ViVHJlZSkmJlRmKEUsTywhMCkpOkIoRSxPLHEsa2UsSCxYLGNlLGFlLG9lKX0sVz0oRSxPLHEsSyxILFgsY2UsYWUsb2UpPT57Ty5zbG90U2NvcGVJZHM9YWUsRT09bnVsbD9PLnNoYXBlRmxhZyY1MTI/SC5jdHguYWN0aXZhdGUoTyxxLEssY2Usb2UpOkwoTyxxLEssSCxYLGNlLG9lKTpqKEUsTyxvZSl9LEw9KEUsTyxxLEssSCxYLGNlKT0+e2NvbnN0IGFlPUUuY29tcG9uZW50PUZ4KEUsSyxIKTtpZihNaShFKSYmKGFlLmN0eC5yZW5kZXJlcj1sZSksengoYWUsITEsY2UpLGFlLmFzeW5jRGVwKXtpZihIJiZILnJlZ2lzdGVyRGVwKGFlLEksY2UpLCFFLmVsKXtjb25zdCBvZT1hZS5zdWJUcmVlPXJlKF90KTt3KG51bGwsb2UsTyxxKSxFLnBsYWNlaG9sZGVyPW9lLmVsfX1lbHNlIEkoYWUsRSxPLHEsSCxYLGNlKX0saj0oRSxPLHEpPT57Y29uc3QgSz1PLmNvbXBvbmVudD1FLmNvbXBvbmVudDtpZih3eChFLE8scSkpaWYoSy5hc3luY0RlcCYmIUsuYXN5bmNSZXNvbHZlZCl7VihLLE8scSk7cmV0dXJufWVsc2UgSy5uZXh0PU8sSy51cGRhdGUoKTtlbHNlIE8uZWw9RS5lbCxLLnZub2RlPU99LEk9KEUsTyxxLEssSCxYLGNlKT0+e2NvbnN0IGFlPSgpPT57aWYoRS5pc01vdW50ZWQpe2xldHtuZXh0OnBlLGJ1OmJlLHU6QWUscGFyZW50OnplLHZub2RlOkhlfT1FO3tjb25zdCBXdD1peShFKTtpZihXdCl7cGUmJihwZS5lbD1IZS5lbCxWKEUscGUsY2UpKSxXdC5hc3luY0RlcC50aGVuKCgpPT57VHQoKCk9PntFLmlzVW5tb3VudGVkfHxaKCl9LEgpfSk7cmV0dXJufX1sZXQgV2U9cGUsSmU7Ym8oRSwhMSkscGU/KHBlLmVsPUhlLmVsLFYoRSxwZSxjZSkpOnBlPUhlLGJlJiZyaShiZSksKEplPXBlLnByb3BzJiZwZS5wcm9wcy5vblZub2RlQmVmb3JlVXBkYXRlKSYmZG4oSmUsemUscGUsSGUpLGJvKEUsITApO2NvbnN0IHB0PW1jKEUpLGFuPUUuc3ViVHJlZTtFLnN1YlRyZWU9cHQseShhbixwdCxmKGFuLmVsKSx6KGFuKSxFLEgsWCkscGUuZWw9cHQuZWwsV2U9PT1udWxsJiZrbChFLHB0LmVsKSxBZSYmVHQoQWUsSCksKEplPXBlLnByb3BzJiZwZS5wcm9wcy5vblZub2RlVXBkYXRlZCkmJlR0KCgpPT5kbihKZSx6ZSxwZSxIZSksSCl9ZWxzZXtsZXQgcGU7Y29uc3R7ZWw6YmUscHJvcHM6QWV9PU8se2JtOnplLG06SGUscGFyZW50OldlLHJvb3Q6SmUsdHlwZTpwdH09RSxhbj1JcihPKTtpZihibyhFLCExKSx6ZSYmcmkoemUpLCFhbiYmKHBlPUFlJiZBZS5vblZub2RlQmVmb3JlTW91bnQpJiZkbihwZSxXZSxPKSxibyhFLCEwKSxiZSYmdGUpe2NvbnN0IFd0PSgpPT57RS5zdWJUcmVlPW1jKEUpLHRlKGJlLEUuc3ViVHJlZSxFLEgsbnVsbCl9O2FuJiZwdC5fX2FzeW5jSHlkcmF0ZT9wdC5fX2FzeW5jSHlkcmF0ZShiZSxFLFd0KTpXdCgpfWVsc2V7SmUuY2UmJkplLmNlLl9oYXNTaGFkb3dSb290KCkmJkplLmNlLl9pbmplY3RDaGlsZFN0eWxlKHB0LEUucGFyZW50P0UucGFyZW50LnR5cGU6dm9pZCAwKTtjb25zdCBXdD1FLnN1YlRyZWU9bWMoRSk7eShudWxsLFd0LHEsSyxFLEgsWCksTy5lbD1XdC5lbH1pZihIZSYmVHQoSGUsSCksIWFuJiYocGU9QWUmJkFlLm9uVm5vZGVNb3VudGVkKSl7Y29uc3QgV3Q9TztUdCgoKT0+ZG4ocGUsV2UsV3QpLEgpfShPLnNoYXBlRmxhZyYyNTZ8fFdlJiZJcihXZS52bm9kZSkmJldlLnZub2RlLnNoYXBlRmxhZyYyNTYpJiZFLmEmJlR0KEUuYSxIKSxFLmlzTW91bnRlZD0hMCxPPXE9Sz1udWxsfX07RS5zY29wZS5vbigpO2NvbnN0IG9lPUUuZWZmZWN0PW5ldyBvZyhhZSk7RS5zY29wZS5vZmYoKTtjb25zdCBaPUUudXBkYXRlPW9lLnJ1bi5iaW5kKG9lKSxrZT1FLmpvYj1vZS5ydW5JZkRpcnR5LmJpbmQob2UpO2tlLmk9RSxrZS5pZD1FLnVpZCxvZS5zY2hlZHVsZXI9KCk9PnlmKGtlKSxibyhFLCEwKSxaKCl9LFY9KEUsTyxxKT0+e08uY29tcG9uZW50PUU7Y29uc3QgSz1FLnZub2RlLnByb3BzO0Uudm5vZGU9TyxFLm5leHQ9bnVsbCx4eChFLE8ucHJvcHMsSyxxKSxUeChFLE8uY2hpbGRyZW4scSksRHIoKSxWZChFKSxMcigpfSxCPShFLE8scSxLLEgsWCxjZSxhZSxvZT0hMSk9Pntjb25zdCBaPUUmJkUuY2hpbGRyZW4sa2U9RT9FLnNoYXBlRmxhZzowLHBlPU8uY2hpbGRyZW4se3BhdGNoRmxhZzpiZSxzaGFwZUZsYWc6QWV9PU87aWYoYmU+MCl7aWYoYmUmMTI4KXtuZShaLHBlLHEsSyxILFgsY2UsYWUsb2UpO3JldHVybn1lbHNlIGlmKGJlJjI1Nil7aWUoWixwZSxxLEssSCxYLGNlLGFlLG9lKTtyZXR1cm59fUFlJjg/KGtlJjE2JiZlZShaLEgsWCkscGUhPT1aJiZjKHEscGUpKTprZSYxNj9BZSYxNj9uZShaLHBlLHEsSyxILFgsY2UsYWUsb2UpOmVlKFosSCxYLCEwKTooa2UmOCYmYyhxLCIiKSxBZSYxNiYmVChwZSxxLEssSCxYLGNlLGFlLG9lKSl9LGllPShFLE8scSxLLEgsWCxjZSxhZSxvZSk9PntFPUV8fHVzLE89T3x8dXM7Y29uc3QgWj1FLmxlbmd0aCxrZT1PLmxlbmd0aCxwZT1NYXRoLm1pbihaLGtlKTtsZXQgYmU7Zm9yKGJlPTA7YmU8cGU7YmUrKyl7Y29uc3QgQWU9T1tiZV09b2U/Q3IoT1tiZV0pOmJuKE9bYmVdKTt5KEVbYmVdLEFlLHEsbnVsbCxILFgsY2UsYWUsb2UpfVo+a2U/ZWUoRSxILFgsITAsITEscGUpOlQoTyxxLEssSCxYLGNlLGFlLG9lLHBlKX0sbmU9KEUsTyxxLEssSCxYLGNlLGFlLG9lKT0+e2xldCBaPTA7Y29uc3Qga2U9Ty5sZW5ndGg7bGV0IHBlPUUubGVuZ3RoLTEsYmU9a2UtMTtmb3IoO1o8PXBlJiZaPD1iZTspe2NvbnN0IEFlPUVbWl0semU9T1taXT1vZT9DcihPW1pdKTpibihPW1pdKTtpZihxbihBZSx6ZSkpeShBZSx6ZSxxLG51bGwsSCxYLGNlLGFlLG9lKTtlbHNlIGJyZWFrO1orK31mb3IoO1o8PXBlJiZaPD1iZTspe2NvbnN0IEFlPUVbcGVdLHplPU9bYmVdPW9lP0NyKE9bYmVdKTpibihPW2JlXSk7aWYocW4oQWUsemUpKXkoQWUsemUscSxudWxsLEgsWCxjZSxhZSxvZSk7ZWxzZSBicmVhaztwZS0tLGJlLS19aWYoWj5wZSl7aWYoWjw9YmUpe2NvbnN0IEFlPWJlKzEsemU9QWU8a2U/T1tBZV0uZWw6Sztmb3IoO1o8PWJlOyl5KG51bGwsT1taXT1vZT9DcihPW1pdKTpibihPW1pdKSxxLHplLEgsWCxjZSxhZSxvZSksWisrfX1lbHNlIGlmKFo+YmUpZm9yKDtaPD1wZTspTmUoRVtaXSxILFgsITApLForKztlbHNle2NvbnN0IEFlPVosemU9WixIZT1uZXcgTWFwO2ZvcihaPXplO1o8PWJlO1orKyl7Y29uc3QgRHQ9T1taXT1vZT9DcihPW1pdKTpibihPW1pdKTtEdC5rZXkhPW51bGwmJkhlLnNldChEdC5rZXksWil9bGV0IFdlLEplPTA7Y29uc3QgcHQ9YmUtemUrMTtsZXQgYW49ITEsV3Q9MDtjb25zdCBncj1uZXcgQXJyYXkocHQpO2ZvcihaPTA7WjxwdDtaKyspZ3JbWl09MDtmb3IoWj1BZTtaPD1wZTtaKyspe2NvbnN0IER0PUVbWl07aWYoSmU+PXB0KXtOZShEdCxILFgsITApO2NvbnRpbnVlfWxldCBYdDtpZihEdC5rZXkhPW51bGwpWHQ9SGUuZ2V0KER0LmtleSk7ZWxzZSBmb3IoV2U9emU7V2U8PWJlO1dlKyspaWYoZ3JbV2UtemVdPT09MCYmcW4oRHQsT1tXZV0pKXtYdD1XZTticmVha31YdD09PXZvaWQgMD9OZShEdCxILFgsITApOihncltYdC16ZV09WisxLFh0Pj1XdD9XdD1YdDphbj0hMCx5KER0LE9bWHRdLHEsbnVsbCxILFgsY2UsYWUsb2UpLEplKyspfWNvbnN0IE1zPWFuP094KGdyKTp1cztmb3IoV2U9TXMubGVuZ3RoLTEsWj1wdC0xO1o+PTA7Wi0tKXtjb25zdCBEdD16ZStaLFh0PU9bRHRdLHluPU9bRHQrMV0seXI9RHQrMTxrZT95bi5lbHx8YXkoeW4pOks7Z3JbWl09PT0wP3kobnVsbCxYdCxxLHlyLEgsWCxjZSxhZSxvZSk6YW4mJihXZTwwfHxaIT09TXNbV2VdP1ZlKFh0LHEseXIsMik6V2UtLSl9fX0sVmU9KEUsTyxxLEssSD1udWxsKT0+e2NvbnN0e2VsOlgsdHlwZTpjZSx0cmFuc2l0aW9uOmFlLGNoaWxkcmVuOm9lLHNoYXBlRmxhZzpafT1FO2lmKFomNil7VmUoRS5jb21wb25lbnQuc3ViVHJlZSxPLHEsSyk7cmV0dXJufWlmKFomMTI4KXtFLnN1c3BlbnNlLm1vdmUoTyxxLEspO3JldHVybn1pZihaJjY0KXtjZS5tb3ZlKEUsTyxxLGxlKTtyZXR1cm59aWYoY2U9PT1HZSl7cihYLE8scSk7Zm9yKGxldCBwZT0wO3BlPG9lLmxlbmd0aDtwZSsrKVZlKG9lW3BlXSxPLHEsSyk7cihFLmFuY2hvcixPLHEpO3JldHVybn1pZihjZT09PWFpKXtoKEUsTyxxKTtyZXR1cm59aWYoSyE9PTImJlomMSYmYWUpaWYoSz09PTApYWUuYmVmb3JlRW50ZXIoWCkscihYLE8scSksVHQoKCk9PmFlLmVudGVyKFgpLEgpO2Vsc2V7Y29uc3R7bGVhdmU6cGUsZGVsYXlMZWF2ZTpiZSxhZnRlckxlYXZlOkFlfT1hZSx6ZT0oKT0+e0UuY3R4LmlzVW5tb3VudGVkP28oWCk6cihYLE8scSl9LEhlPSgpPT57WC5faXNMZWF2aW5nJiZYW3NyXSghMCkscGUoWCwoKT0+e3plKCksQWUmJkFlKCl9KX07YmU/YmUoWCx6ZSxIZSk6SGUoKX1lbHNlIHIoWCxPLHEpfSxOZT0oRSxPLHEsSz0hMSxIPSExKT0+e2NvbnN0e3R5cGU6WCxwcm9wczpjZSxyZWY6YWUsY2hpbGRyZW46b2UsZHluYW1pY0NoaWxkcmVuOlosc2hhcGVGbGFnOmtlLHBhdGNoRmxhZzpwZSxkaXJzOmJlLGNhY2hlSW5kZXg6QWUsbWVtbzp6ZX09RTtpZihwZT09PS0yJiYoSD0hMSksYWUhPW51bGwmJihEcigpLHBzKGFlLG51bGwscSxFLCEwKSxMcigpKSxBZSE9bnVsbCYmKE8ucmVuZGVyQ2FjaGVbQWVdPXZvaWQgMCksa2UmMjU2KXtPLmN0eC5kZWFjdGl2YXRlKEUpO3JldHVybn1jb25zdCBIZT1rZSYxJiZiZSxXZT0hSXIoRSk7bGV0IEplO2lmKFdlJiYoSmU9Y2UmJmNlLm9uVm5vZGVCZWZvcmVVbm1vdW50KSYmZG4oSmUsTyxFKSxrZSY2KUllKEUuY29tcG9uZW50LHEsSyk7ZWxzZXtpZihrZSYxMjgpe0Uuc3VzcGVuc2UudW5tb3VudChxLEspO3JldHVybn1IZSYmb3IoRSxudWxsLE8sImJlZm9yZVVubW91bnQiKSxrZSY2ND9FLnR5cGUucmVtb3ZlKEUsTyxxLGxlLEspOlomJiFaLmhhc09uY2UmJihYIT09R2V8fHBlPjAmJnBlJjY0KT9lZShaLE8scSwhMSwhMCk6KFg9PT1HZSYmcGUmMzg0fHwhSCYma2UmMTYpJiZlZShvZSxPLHEpLEsmJmV0KEUpfWNvbnN0IHB0PXplIT1udWxsJiZBZT09bnVsbDsoV2UmJihKZT1jZSYmY2Uub25Wbm9kZVVubW91bnRlZCl8fEhlfHxwdCkmJlR0KCgpPT57SmUmJmRuKEplLE8sRSksSGUmJm9yKEUsbnVsbCxPLCJ1bm1vdW50ZWQiKSxwdCYmKEUuZWw9bnVsbCl9LHEpfSxldD1FPT57Y29uc3R7dHlwZTpPLGVsOnEsYW5jaG9yOkssdHJhbnNpdGlvbjpIfT1FO2lmKE89PT1HZSl7dmUocSxLKTtyZXR1cm59aWYoTz09PWFpKXtiKEUpO3JldHVybn1jb25zdCBYPSgpPT57byhxKSxIJiYhSC5wZXJzaXN0ZWQmJkguYWZ0ZXJMZWF2ZSYmSC5hZnRlckxlYXZlKCl9O2lmKEUuc2hhcGVGbGFnJjEmJkgmJiFILnBlcnNpc3RlZCl7Y29uc3R7bGVhdmU6Y2UsZGVsYXlMZWF2ZTphZX09SCxvZT0oKT0+Y2UocSxYKTthZT9hZShFLmVsLFgsb2UpOm9lKCl9ZWxzZSBYKCl9LHZlPShFLE8pPT57bGV0IHE7Zm9yKDtFIT09TzspcT1kKEUpLG8oRSksRT1xO28oTyl9LEllPShFLE8scSk9Pntjb25zdHtidW06SyxzY29wZTpILGpvYjpYLHN1YlRyZWU6Y2UsdW06YWUsbTpvZSxhOlp9PUU7amEob2UpLGphKFopLEsmJnJpKEspLEguc3RvcCgpLFgmJihYLmZsYWdzfD04LE5lKGNlLEUsTyxxKSksYWUmJlR0KGFlLE8pLFR0KCgpPT57RS5pc1VubW91bnRlZD0hMH0sTyl9LGVlPShFLE8scSxLPSExLEg9ITEsWD0wKT0+e2ZvcihsZXQgY2U9WDtjZTxFLmxlbmd0aDtjZSsrKU5lKEVbY2VdLE8scSxLLEgpfSx6PUU9PntpZihFLnNoYXBlRmxhZyY2KXJldHVybiB6KEUuY29tcG9uZW50LnN1YlRyZWUpO2lmKEUuc2hhcGVGbGFnJjEyOClyZXR1cm4gRS5zdXNwZW5zZS5uZXh0KCk7Y29uc3QgTz1kKEUuYW5jaG9yfHxFLmVsKSxxPU8mJk9bT2ddO3JldHVybiBxP2QocSk6T307bGV0IFk9ITE7Y29uc3QgSj0oRSxPLHEpPT57bGV0IEs7RT09bnVsbD9PLl92bm9kZSYmKE5lKE8uX3Zub2RlLG51bGwsbnVsbCwhMCksSz1PLl92bm9kZS5jb21wb25lbnQpOnkoTy5fdm5vZGV8fG51bGwsRSxPLG51bGwsbnVsbCxudWxsLHEpLE8uX3Zub2RlPUUsWXx8KFk9ITAsVmQoSyksQmEoKSxZPSExKX0sbGU9e3A6eSx1bTpOZSxtOlZlLHI6ZXQsbXQ6TCxtYzpULHBjOkIscGJjOlAsbjp6LG86ZX07bGV0IHdlLHRlO3JldHVybiB0JiYoW3dlLHRlXT10KGxlKSkse3JlbmRlcjpKLGh5ZHJhdGU6d2UsY3JlYXRlQXBwOnB4KEosd2UpfX1mdW5jdGlvbiBoYyh7dHlwZTplLHByb3BzOnR9LG4pe3JldHVybiBuPT09InN2ZyImJmU9PT0iZm9yZWlnbk9iamVjdCJ8fG49PT0ibWF0aG1sIiYmZT09PSJhbm5vdGF0aW9uLXhtbCImJnQmJnQuZW5jb2RpbmcmJnQuZW5jb2RpbmcuaW5jbHVkZXMoImh0bWwiKT92b2lkIDA6bn1mdW5jdGlvbiBibyh7ZWZmZWN0OmUsam9iOnR9LG4pe24/KGUuZmxhZ3N8PTMyLHQuZmxhZ3N8PTQpOihlLmZsYWdzJj0tMzMsdC5mbGFncyY9LTUpfWZ1bmN0aW9uIHN5KGUsdCl7cmV0dXJuKCFlfHxlJiYhZS5wZW5kaW5nQnJhbmNoKSYmdCYmIXQucGVyc2lzdGVkfWZ1bmN0aW9uIFRmKGUsdCxuPSExKXtjb25zdCByPWUuY2hpbGRyZW4sbz10LmNoaWxkcmVuO2lmKFNlKHIpJiZTZShvKSlmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKyl7Y29uc3QgaT1yW3NdO2xldCBhPW9bc107YS5zaGFwZUZsYWcmMSYmIWEuZHluYW1pY0NoaWxkcmVuJiYoKGEucGF0Y2hGbGFnPD0wfHxhLnBhdGNoRmxhZz09PTMyKSYmKGE9b1tzXT1DcihvW3NdKSxhLmVsPWkuZWwpLCFuJiZhLnBhdGNoRmxhZyE9PS0yJiZUZihpLGEpKSxhLnR5cGU9PT1EbyYmKGEucGF0Y2hGbGFnPT09LTEmJihhPW9bc109Q3IoYSkpLGEuZWw9aS5lbCksYS50eXBlPT09X3QmJiFhLmVsJiYoYS5lbD1pLmVsKX19ZnVuY3Rpb24gT3goZSl7Y29uc3QgdD1lLnNsaWNlKCksbj1bMF07bGV0IHIsbyxzLGksYTtjb25zdCBsPWUubGVuZ3RoO2ZvcihyPTA7cjxsO3IrKyl7Y29uc3QgdT1lW3JdO2lmKHUhPT0wKXtpZihvPW5bbi5sZW5ndGgtMV0sZVtvXTx1KXt0W3JdPW8sbi5wdXNoKHIpO2NvbnRpbnVlfWZvcihzPTAsaT1uLmxlbmd0aC0xO3M8aTspYT1zK2k+PjEsZVtuW2FdXTx1P3M9YSsxOmk9YTt1PGVbbltzXV0mJihzPjAmJih0W3JdPW5bcy0xXSksbltzXT1yKX19Zm9yKHM9bi5sZW5ndGgsaT1uW3MtMV07cy0tID4wOyluW3NdPWksaT10W2ldO3JldHVybiBufWZ1bmN0aW9uIGl5KGUpe2NvbnN0IHQ9ZS5zdWJUcmVlLmNvbXBvbmVudDtpZih0KXJldHVybiB0LmFzeW5jRGVwJiYhdC5hc3luY1Jlc29sdmVkP3Q6aXkodCl9ZnVuY3Rpb24gamEoZSl7aWYoZSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLmZsYWdzfD04fWZ1bmN0aW9uIGF5KGUpe2lmKGUucGxhY2Vob2xkZXIpcmV0dXJuIGUucGxhY2Vob2xkZXI7Y29uc3QgdD1lLmNvbXBvbmVudDtyZXR1cm4gdD9heSh0LnN1YlRyZWUpOm51bGx9Y29uc3QgVmE9ZT0+ZS5fX2lzU3VzcGVuc2U7bGV0IGF1PTA7Y29uc3QgUHg9e25hbWU6IlN1c3BlbnNlIixfX2lzU3VzcGVuc2U6ITAscHJvY2VzcyhlLHQsbixyLG8scyxpLGEsbCx1KXtpZihlPT1udWxsKUl4KHQsbixyLG8scyxpLGEsbCx1KTtlbHNle2lmKHMmJnMuZGVwcz4wJiYhZS5zdXNwZW5zZS5pc0luRmFsbGJhY2spe3Quc3VzcGVuc2U9ZS5zdXNwZW5zZSx0LnN1c3BlbnNlLnZub2RlPXQsdC5lbD1lLmVsO3JldHVybn1SeChlLHQsbixyLG8saSxhLGwsdSl9fSxoeWRyYXRlOk54LG5vcm1hbGl6ZTpEeH0sQ2Y9UHg7ZnVuY3Rpb24gd2koZSx0KXtjb25zdCBuPWUucHJvcHMmJmUucHJvcHNbdF07Q2UobikmJm4oKX1mdW5jdGlvbiBJeChlLHQsbixyLG8scyxpLGEsbCl7Y29uc3R7cDp1LG86e2NyZWF0ZUVsZW1lbnQ6Y319PWwsZj1jKCJkaXYiKSxkPWUuc3VzcGVuc2U9bHkoZSxvLHIsdCxmLG4scyxpLGEsbCk7dShudWxsLGQucGVuZGluZ0JyYW5jaD1lLnNzQ29udGVudCxmLG51bGwscixkLHMsaSksZC5kZXBzPjA/KHdpKGUsIm9uUGVuZGluZyIpLHdpKGUsIm9uRmFsbGJhY2siKSx1KG51bGwsZS5zc0ZhbGxiYWNrLHQsbixyLG51bGwscyxpKSxtcyhkLGUuc3NGYWxsYmFjaykpOmQucmVzb2x2ZSghMSwhMCl9ZnVuY3Rpb24gUngoZSx0LG4scixvLHMsaSxhLHtwOmwsdW06dSxvOntjcmVhdGVFbGVtZW50OmN9fSl7Y29uc3QgZj10LnN1c3BlbnNlPWUuc3VzcGVuc2U7Zi52bm9kZT10LHQuZWw9ZS5lbDtjb25zdCBkPXQuc3NDb250ZW50LHA9dC5zc0ZhbGxiYWNrLHthY3RpdmVCcmFuY2g6bSxwZW5kaW5nQnJhbmNoOnksaXNJbkZhbGxiYWNrOl8saXNIeWRyYXRpbmc6d309ZjtpZih5KWYucGVuZGluZ0JyYW5jaD1kLHFuKHksZCk/KGwoeSxkLGYuaGlkZGVuQ29udGFpbmVyLG51bGwsbyxmLHMsaSxhKSxmLmRlcHM8PTA/Zi5yZXNvbHZlKCk6XyYmKHd8fChsKG0scCxuLHIsbyxudWxsLHMsaSxhKSxtcyhmLHApKSkpOihmLnBlbmRpbmdJZD1hdSsrLHc/KGYuaXNIeWRyYXRpbmc9ITEsZi5hY3RpdmVCcmFuY2g9eSk6dSh5LG8sZiksZi5kZXBzPTAsZi5lZmZlY3RzLmxlbmd0aD0wLGYuaGlkZGVuQ29udGFpbmVyPWMoImRpdiIpLF8/KGwobnVsbCxkLGYuaGlkZGVuQ29udGFpbmVyLG51bGwsbyxmLHMsaSxhKSxmLmRlcHM8PTA/Zi5yZXNvbHZlKCk6KGwobSxwLG4scixvLG51bGwscyxpLGEpLG1zKGYscCkpKTptJiZxbihtLGQpPyhsKG0sZCxuLHIsbyxmLHMsaSxhKSxmLnJlc29sdmUoITApKToobChudWxsLGQsZi5oaWRkZW5Db250YWluZXIsbnVsbCxvLGYscyxpLGEpLGYuZGVwczw9MCYmZi5yZXNvbHZlKCkpKTtlbHNlIGlmKG0mJnFuKG0sZCkpbChtLGQsbixyLG8sZixzLGksYSksbXMoZixkKTtlbHNlIGlmKHdpKHQsIm9uUGVuZGluZyIpLGYucGVuZGluZ0JyYW5jaD1kLGQuc2hhcGVGbGFnJjUxMj9mLnBlbmRpbmdJZD1kLmNvbXBvbmVudC5zdXNwZW5zZUlkOmYucGVuZGluZ0lkPWF1KyssbChudWxsLGQsZi5oaWRkZW5Db250YWluZXIsbnVsbCxvLGYscyxpLGEpLGYuZGVwczw9MClmLnJlc29sdmUoKTtlbHNle2NvbnN0e3RpbWVvdXQ6dixwZW5kaW5nSWQ6aH09Zjt2PjA/c2V0VGltZW91dCgoKT0+e2YucGVuZGluZ0lkPT09aCYmZi5mYWxsYmFjayhwKX0sdik6dj09PTAmJmYuZmFsbGJhY2socCl9fWZ1bmN0aW9uIGx5KGUsdCxuLHIsbyxzLGksYSxsLHUsYz0hMSl7Y29uc3R7cDpmLG06ZCx1bTpwLG46bSxvOntwYXJlbnROb2RlOnkscmVtb3ZlOl99fT11O2xldCB3O2NvbnN0IHY9THgoZSk7diYmdCYmdC5wZW5kaW5nQnJhbmNoJiYodz10LnBlbmRpbmdJZCx0LmRlcHMrKyk7Y29uc3QgaD1lLnByb3BzP1poKGUucHJvcHMudGltZW91dCk6dm9pZCAwLGI9cyx4PXt2bm9kZTplLHBhcmVudDp0LHBhcmVudENvbXBvbmVudDpuLG5hbWVzcGFjZTppLGNvbnRhaW5lcjpyLGhpZGRlbkNvbnRhaW5lcjpvLGRlcHM6MCxwZW5kaW5nSWQ6YXUrKyx0aW1lb3V0OnR5cGVvZiBoPT0ibnVtYmVyIj9oOi0xLGFjdGl2ZUJyYW5jaDpudWxsLGlzRmFsbGJhY2tNb3VudFBlbmRpbmc6ITEscGVuZGluZ0JyYW5jaDpudWxsLGlzSW5GYWxsYmFjazohYyxpc0h5ZHJhdGluZzpjLGlzVW5tb3VudGVkOiExLGVmZmVjdHM6W10scmVzb2x2ZShTPSExLGs9ITEpe2NvbnN0e3Zub2RlOlQsYWN0aXZlQnJhbmNoOkMscGVuZGluZ0JyYW5jaDpQLHBlbmRpbmdJZDpGLGVmZmVjdHM6RCxwYXJlbnRDb21wb25lbnQ6Vyxjb250YWluZXI6TCxpc0luRmFsbGJhY2s6an09eDtsZXQgST0hMTt4LmlzSHlkcmF0aW5nP3guaXNIeWRyYXRpbmc9ITE6U3x8KEk9QyYmUC50cmFuc2l0aW9uJiZQLnRyYW5zaXRpb24ubW9kZT09PSJvdXQtaW4iLEkmJihDLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZT0oKT0+e0Y9PT14LnBlbmRpbmdJZCYmKGQoUCxMLHM9PT1iP20oQyk6cywwKSxnaShEKSxqJiZULnNzRmFsbGJhY2smJihULnNzRmFsbGJhY2suZWw9bnVsbCkpfSksQyYmIXguaXNGYWxsYmFja01vdW50UGVuZGluZyYmKHkoQy5lbCk9PT1MJiYocz1tKEMpKSxwKEMsVyx4LCEwKSwhSSYmaiYmVC5zc0ZhbGxiYWNrJiZUdCgoKT0+VC5zc0ZhbGxiYWNrLmVsPW51bGwseCkpLEl8fGQoUCxMLHMsMCkpLHguaXNGYWxsYmFja01vdW50UGVuZGluZz0hMSxtcyh4LFApLHgucGVuZGluZ0JyYW5jaD1udWxsLHguaXNJbkZhbGxiYWNrPSExO2xldCBWPXgucGFyZW50LEI9ITE7Zm9yKDtWOyl7aWYoVi5wZW5kaW5nQnJhbmNoKXtWLmVmZmVjdHMucHVzaCguLi5EKSxCPSEwO2JyZWFrfVY9Vi5wYXJlbnR9IUImJiFJJiZnaShEKSx4LmVmZmVjdHM9W10sdiYmdCYmdC5wZW5kaW5nQnJhbmNoJiZ3PT09dC5wZW5kaW5nSWQmJih0LmRlcHMtLSx0LmRlcHM9PT0wJiYhayYmdC5yZXNvbHZlKCkpLHdpKFQsIm9uUmVzb2x2ZSIpfSxmYWxsYmFjayhTKXtpZigheC5wZW5kaW5nQnJhbmNoKXJldHVybjtjb25zdHt2bm9kZTprLGFjdGl2ZUJyYW5jaDpULHBhcmVudENvbXBvbmVudDpDLGNvbnRhaW5lcjpQLG5hbWVzcGFjZTpGfT14O3dpKGssIm9uRmFsbGJhY2siKTtjb25zdCBEPW0oVCksVz0oKT0+e3guaXNGYWxsYmFja01vdW50UGVuZGluZz0hMSx4LmlzSW5GYWxsYmFjayYmKGYobnVsbCxTLFAsRCxDLG51bGwsRixhLGwpLG1zKHgsUykpfSxMPVMudHJhbnNpdGlvbiYmUy50cmFuc2l0aW9uLm1vZGU9PT0ib3V0LWluIjtMJiYoeC5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nPSEwLFQudHJhbnNpdGlvbi5hZnRlckxlYXZlPVcpLHguaXNJbkZhbGxiYWNrPSEwLHAoVCxDLG51bGwsITApLEx8fFcoKX0sbW92ZShTLGssVCl7eC5hY3RpdmVCcmFuY2gmJmQoeC5hY3RpdmVCcmFuY2gsUyxrLFQpLHguY29udGFpbmVyPVN9LG5leHQoKXtyZXR1cm4geC5hY3RpdmVCcmFuY2gmJm0oeC5hY3RpdmVCcmFuY2gpfSxyZWdpc3RlckRlcChTLGssVCl7Y29uc3QgQz0hIXgucGVuZGluZ0JyYW5jaDtDJiZ4LmRlcHMrKztjb25zdCBQPVMudm5vZGUuZWw7Uy5hc3luY0RlcC5jYXRjaChGPT57TnMoRixTLDApfSkudGhlbihGPT57aWYoUy5pc1VubW91bnRlZHx8eC5pc1VubW91bnRlZHx8eC5wZW5kaW5nSWQhPT1TLnN1c3BlbnNlSWQpcmV0dXJuO19pKCksUy5hc3luY1Jlc29sdmVkPSEwO2NvbnN0e3Zub2RlOkR9PVM7bHUoUyxGLCExKSxQJiYoRC5lbD1QKTtjb25zdCBXPSFQJiZTLnN1YlRyZWUuZWw7ayhTLEQseShQfHxTLnN1YlRyZWUuZWwpLFA/bnVsbDptKFMuc3ViVHJlZSkseCxpLFQpLFcmJihELnBsYWNlaG9sZGVyPW51bGwsXyhXKSksa2woUyxELmVsKSxDJiYtLXguZGVwcz09PTAmJngucmVzb2x2ZSgpfSl9LHVubW91bnQoUyxrKXt4LmlzVW5tb3VudGVkPSEwLHguYWN0aXZlQnJhbmNoJiZwKHguYWN0aXZlQnJhbmNoLG4sUyxrKSx4LnBlbmRpbmdCcmFuY2gmJnAoeC5wZW5kaW5nQnJhbmNoLG4sUyxrKX19O3JldHVybiB4fWZ1bmN0aW9uIE54KGUsdCxuLHIsbyxzLGksYSxsKXtjb25zdCB1PXQuc3VzcGVuc2U9bHkodCxyLG4sZS5wYXJlbnROb2RlLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG51bGwsbyxzLGksYSwhMCksYz1sKGUsdS5wZW5kaW5nQnJhbmNoPXQuc3NDb250ZW50LG4sdSxzLGkpO3JldHVybiB1LmRlcHM9PT0wJiZ1LnJlc29sdmUoITEsITApLGN9ZnVuY3Rpb24gRHgoZSl7Y29uc3R7c2hhcGVGbGFnOnQsY2hpbGRyZW46bn09ZSxyPXQmMzI7ZS5zc0NvbnRlbnQ9b3Aocj9uLmRlZmF1bHQ6biksZS5zc0ZhbGxiYWNrPXI/b3Aobi5mYWxsYmFjayk6cmUoX3QpfWZ1bmN0aW9uIG9wKGUpe2xldCB0O2lmKENlKGUpKXtjb25zdCBuPSRvJiZlLl9jO24mJihlLl9kPSExLFIoKSksZT1lKCksbiYmKGUuX2Q9ITAsdD1ZdCx1eSgpKX1yZXR1cm4gU2UoZSkmJihlPXl4KGUpKSxlPWJuKGUpLHQmJiFlLmR5bmFtaWNDaGlsZHJlbiYmKGUuZHluYW1pY0NoaWxkcmVuPXQuZmlsdGVyKG49Pm4hPT1lKSksZX1mdW5jdGlvbiBjeShlLHQpe3QmJnQucGVuZGluZ0JyYW5jaD9TZShlKT90LmVmZmVjdHMucHVzaCguLi5lKTp0LmVmZmVjdHMucHVzaChlKTpnaShlKX1mdW5jdGlvbiBtcyhlLHQpe2UuYWN0aXZlQnJhbmNoPXQ7Y29uc3R7dm5vZGU6bixwYXJlbnRDb21wb25lbnQ6cn09ZTtsZXQgbz10LmVsO2Zvcig7IW8mJnQuY29tcG9uZW50Oyl0PXQuY29tcG9uZW50LnN1YlRyZWUsbz10LmVsO24uZWw9byxyJiZyLnN1YlRyZWU9PT1uJiYoci52bm9kZS5lbD1vLGtsKHIsbykpfWZ1bmN0aW9uIEx4KGUpe2NvbnN0IHQ9ZS5wcm9wcyYmZS5wcm9wcy5zdXNwZW5zaWJsZTtyZXR1cm4gdCE9bnVsbCYmdCE9PSExfWNvbnN0IEdlPVN5bWJvbC5mb3IoInYtZmd0IiksRG89U3ltYm9sLmZvcigidi10eHQiKSxfdD1TeW1ib2wuZm9yKCJ2LWNtdCIpLGFpPVN5bWJvbC5mb3IoInYtc3RjIiksbGk9W107bGV0IFl0PW51bGw7ZnVuY3Rpb24gUihlPSExKXtsaS5wdXNoKFl0PWU/bnVsbDpbXSl9ZnVuY3Rpb24gdXkoKXtsaS5wb3AoKSxZdD1saVtsaS5sZW5ndGgtMV18fG51bGx9bGV0ICRvPTE7ZnVuY3Rpb24gVWEoZSx0PSExKXskbys9ZSxlPDAmJll0JiZ0JiYoWXQuaGFzT25jZT0hMCl9ZnVuY3Rpb24gZnkoZSl7cmV0dXJuIGUuZHluYW1pY0NoaWxkcmVuPSRvPjA/WXR8fHVzOm51bGwsdXkoKSwkbz4wJiZZdCYmWXQucHVzaChlKSxlfWZ1bmN0aW9uIF9lKGUsdCxuLHIsbyxzKXtyZXR1cm4gZnkod3QoZSx0LG4scixvLHMsITApKX1mdW5jdGlvbiAkKGUsdCxuLHIsbyl7cmV0dXJuIGZ5KHJlKGUsdCxuLHIsbywhMCkpfWZ1bmN0aW9uIE1vKGUpe3JldHVybiBlP2UuX192X2lzVk5vZGU9PT0hMDohMX1mdW5jdGlvbiBxbihlLHQpe3JldHVybiBlLnR5cGU9PT10LnR5cGUmJmUua2V5PT09dC5rZXl9Y29uc3QgZHk9KHtrZXk6ZX0pPT5lPz9udWxsLEVhPSh7cmVmOmUscmVmX2tleTp0LHJlZl9mb3I6bn0pPT4odHlwZW9mIGU9PSJudW1iZXIiJiYoZT0iIitlKSxlIT1udWxsP2Z0KGUpfHwkZShlKXx8Q2UoZSk/e2k6anQscjplLGs6dCxmOiEhbn06ZTpudWxsKTtmdW5jdGlvbiB3dChlLHQ9bnVsbCxuPW51bGwscj0wLG89bnVsbCxzPWU9PT1HZT8wOjEsaT0hMSxhPSExKXtjb25zdCBsPXtfX3ZfaXNWTm9kZTohMCxfX3Zfc2tpcDohMCx0eXBlOmUscHJvcHM6dCxrZXk6dCYmZHkodCkscmVmOnQmJkVhKHQpLHNjb3BlSWQ6VGcsc2xvdFNjb3BlSWRzOm51bGwsY2hpbGRyZW46bixjb21wb25lbnQ6bnVsbCxzdXNwZW5zZTpudWxsLHNzQ29udGVudDpudWxsLHNzRmFsbGJhY2s6bnVsbCxkaXJzOm51bGwsdHJhbnNpdGlvbjpudWxsLGVsOm51bGwsYW5jaG9yOm51bGwsdGFyZ2V0Om51bGwsdGFyZ2V0U3RhcnQ6bnVsbCx0YXJnZXRBbmNob3I6bnVsbCxzdGF0aWNDb3VudDowLHNoYXBlRmxhZzpzLHBhdGNoRmxhZzpyLGR5bmFtaWNQcm9wczpvLGR5bmFtaWNDaGlsZHJlbjpudWxsLGFwcENvbnRleHQ6bnVsbCxjdHg6anR9O3JldHVybiBhPyhBZihsLG4pLHMmMTI4JiZlLm5vcm1hbGl6ZShsKSk6biYmKGwuc2hhcGVGbGFnfD1mdChuKT84OjE2KSwkbz4wJiYhaSYmWXQmJihsLnBhdGNoRmxhZz4wfHxzJjYpJiZsLnBhdGNoRmxhZyE9PTMyJiZZdC5wdXNoKGwpLGx9Y29uc3QgcmU9JHg7ZnVuY3Rpb24gJHgoZSx0PW51bGwsbj1udWxsLHI9MCxvPW51bGwscz0hMSl7aWYoKCFlfHxlPT09emcpJiYoZT1fdCksTW8oZSkpe2NvbnN0IGE9cG4oZSx0LCEwKTtyZXR1cm4gbiYmQWYoYSxuKSwkbz4wJiYhcyYmWXQmJihhLnNoYXBlRmxhZyY2P1l0W1l0LmluZGV4T2YoZSldPWE6WXQucHVzaChhKSksYS5wYXRjaEZsYWc9LTIsYX1pZihVeChlKSYmKGU9ZS5fX3ZjY09wdHMpLHQpe3Q9TXQodCk7bGV0e2NsYXNzOmEsc3R5bGU6bH09dDthJiYhZnQoYSkmJih0LmNsYXNzPXVlKGEpKSxaZShsKSYmKGJsKGwpJiYhU2UobCkmJihsPXZ0KHt9LGwpKSx0LnN0eWxlPVJuKGwpKX1jb25zdCBpPWZ0KGUpPzE6VmEoZSk/MTI4OlBnKGUpPzY0OlplKGUpPzQ6Q2UoZSk/MjowO3JldHVybiB3dChlLHQsbixyLG8saSxzLCEwKX1mdW5jdGlvbiBNdChlKXtyZXR1cm4gZT9ibChlKXx8WGcoZSk/dnQoe30sZSk6ZTpudWxsfWZ1bmN0aW9uIHBuKGUsdCxuPSExLHI9ITEpe2NvbnN0e3Byb3BzOm8scmVmOnMscGF0Y2hGbGFnOmksY2hpbGRyZW46YSx0cmFuc2l0aW9uOmx9PWUsdT10P2ZlKG98fHt9LHQpOm8sYz17X192X2lzVk5vZGU6ITAsX192X3NraXA6ITAsdHlwZTplLnR5cGUscHJvcHM6dSxrZXk6dSYmZHkodSkscmVmOnQmJnQucmVmP24mJnM/U2Uocyk/cy5jb25jYXQoRWEodCkpOltzLEVhKHQpXTpFYSh0KTpzLHNjb3BlSWQ6ZS5zY29wZUlkLHNsb3RTY29wZUlkczplLnNsb3RTY29wZUlkcyxjaGlsZHJlbjphLHRhcmdldDplLnRhcmdldCx0YXJnZXRTdGFydDplLnRhcmdldFN0YXJ0LHRhcmdldEFuY2hvcjplLnRhcmdldEFuY2hvcixzdGF0aWNDb3VudDplLnN0YXRpY0NvdW50LHNoYXBlRmxhZzplLnNoYXBlRmxhZyxwYXRjaEZsYWc6dCYmZS50eXBlIT09R2U/aT09PS0xPzE2Oml8MTY6aSxkeW5hbWljUHJvcHM6ZS5keW5hbWljUHJvcHMsZHluYW1pY0NoaWxkcmVuOmUuZHluYW1pY0NoaWxkcmVuLGFwcENvbnRleHQ6ZS5hcHBDb250ZXh0LGRpcnM6ZS5kaXJzLHRyYW5zaXRpb246bCxjb21wb25lbnQ6ZS5jb21wb25lbnQsc3VzcGVuc2U6ZS5zdXNwZW5zZSxzc0NvbnRlbnQ6ZS5zc0NvbnRlbnQmJnBuKGUuc3NDb250ZW50KSxzc0ZhbGxiYWNrOmUuc3NGYWxsYmFjayYmcG4oZS5zc0ZhbGxiYWNrKSxwbGFjZWhvbGRlcjplLnBsYWNlaG9sZGVyLGVsOmUuZWwsYW5jaG9yOmUuYW5jaG9yLGN0eDplLmN0eCxjZTplLmNlfTtyZXR1cm4gbCYmciYmeHMoYyxsLmNsb25lKGMpKSxjfWZ1bmN0aW9uIHN0KGU9IiAiLHQ9MCl7cmV0dXJuIHJlKERvLG51bGwsZSx0KX1mdW5jdGlvbiBNeChlLHQpe2NvbnN0IG49cmUoYWksbnVsbCxlKTtyZXR1cm4gbi5zdGF0aWNDb3VudD10LG59ZnVuY3Rpb24gZGUoZT0iIix0PSExKXtyZXR1cm4gdD8oUigpLCQoX3QsbnVsbCxlKSk6cmUoX3QsbnVsbCxlKX1mdW5jdGlvbiBibihlKXtyZXR1cm4gZT09bnVsbHx8dHlwZW9mIGU9PSJib29sZWFuIj9yZShfdCk6U2UoZSk/cmUoR2UsbnVsbCxlLnNsaWNlKCkpOk1vKGUpP0NyKGUpOnJlKERvLG51bGwsU3RyaW5nKGUpKX1mdW5jdGlvbiBDcihlKXtyZXR1cm4gZS5lbD09PW51bGwmJmUucGF0Y2hGbGFnIT09LTF8fGUubWVtbz9lOnBuKGUpfWZ1bmN0aW9uIEFmKGUsdCl7bGV0IG49MDtjb25zdHtzaGFwZUZsYWc6cn09ZTtpZih0PT1udWxsKXQ9bnVsbDtlbHNlIGlmKFNlKHQpKW49MTY7ZWxzZSBpZih0eXBlb2YgdD09Im9iamVjdCIpaWYociY2NSl7Y29uc3Qgbz10LmRlZmF1bHQ7byYmKG8uX2MmJihvLl9kPSExKSxBZihlLG8oKSksby5fYyYmKG8uX2Q9ITApKTtyZXR1cm59ZWxzZXtuPTMyO2NvbnN0IG89dC5fOyFvJiYhWGcodCk/dC5fY3R4PWp0Om89PT0zJiZqdCYmKGp0LnNsb3RzLl89PT0xP3QuXz0xOih0Ll89MixlLnBhdGNoRmxhZ3w9MTAyNCkpfWVsc2UgQ2UodCk/KHQ9e2RlZmF1bHQ6dCxfY3R4Omp0fSxuPTMyKToodD1TdHJpbmcodCksciY2ND8obj0xNix0PVtzdCh0KV0pOm49OCk7ZS5jaGlsZHJlbj10LGUuc2hhcGVGbGFnfD1ufWZ1bmN0aW9uIGZlKC4uLmUpe2NvbnN0IHQ9e307Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZVtuXTtmb3IoY29uc3QgbyBpbiByKWlmKG89PT0iY2xhc3MiKXQuY2xhc3MhPT1yLmNsYXNzJiYodC5jbGFzcz11ZShbdC5jbGFzcyxyLmNsYXNzXSkpO2Vsc2UgaWYobz09PSJzdHlsZSIpdC5zdHlsZT1SbihbdC5zdHlsZSxyLnN0eWxlXSk7ZWxzZSBpZihSaShvKSl7Y29uc3Qgcz10W29dLGk9cltvXTtpJiZzIT09aSYmIShTZShzKSYmcy5pbmNsdWRlcyhpKSk/dFtvXT1zP1tdLmNvbmNhdChzLGkpOmk6aT09bnVsbCYmcz09bnVsbCYmIWNsKG8pJiYodFtvXT1pKX1lbHNlIG8hPT0iIiYmKHRbb109cltvXSl9cmV0dXJuIHR9ZnVuY3Rpb24gZG4oZSx0LG4scj1udWxsKXtIbihlLHQsNyxbbixyXSl9Y29uc3QgQng9V2coKTtsZXQgcXg9MDtmdW5jdGlvbiBGeChlLHQsbil7Y29uc3Qgcj1lLnR5cGUsbz0odD90LmFwcENvbnRleHQ6ZS5hcHBDb250ZXh0KXx8Qngscz17dWlkOnF4Kyssdm5vZGU6ZSx0eXBlOnIscGFyZW50OnQsYXBwQ29udGV4dDpvLHJvb3Q6bnVsbCxuZXh0Om51bGwsc3ViVHJlZTpudWxsLGVmZmVjdDpudWxsLHVwZGF0ZTpudWxsLGpvYjpudWxsLHNjb3BlOm5ldyByZyghMCkscmVuZGVyOm51bGwscHJveHk6bnVsbCxleHBvc2VkOm51bGwsZXhwb3NlUHJveHk6bnVsbCx3aXRoUHJveHk6bnVsbCxwcm92aWRlczp0P3QucHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShvLnByb3ZpZGVzKSxpZHM6dD90LmlkczpbIiIsMCwwXSxhY2Nlc3NDYWNoZTpudWxsLHJlbmRlckNhY2hlOltdLGNvbXBvbmVudHM6bnVsbCxkaXJlY3RpdmVzOm51bGwscHJvcHNPcHRpb25zOmV5KHIsbyksZW1pdHNPcHRpb25zOktnKHIsbyksZW1pdDpudWxsLGVtaXR0ZWQ6bnVsbCxwcm9wc0RlZmF1bHRzOlllLGluaGVyaXRBdHRyczpyLmluaGVyaXRBdHRycyxjdHg6WWUsZGF0YTpZZSxwcm9wczpZZSxhdHRyczpZZSxzbG90czpZZSxyZWZzOlllLHNldHVwU3RhdGU6WWUsc2V0dXBDb250ZXh0Om51bGwsc3VzcGVuc2U6bixzdXNwZW5zZUlkOm4/bi5wZW5kaW5nSWQ6MCxhc3luY0RlcDpudWxsLGFzeW5jUmVzb2x2ZWQ6ITEsaXNNb3VudGVkOiExLGlzVW5tb3VudGVkOiExLGlzRGVhY3RpdmF0ZWQ6ITEsYmM6bnVsbCxjOm51bGwsYm06bnVsbCxtOm51bGwsYnU6bnVsbCx1Om51bGwsdW06bnVsbCxidW06bnVsbCxkYTpudWxsLGE6bnVsbCxydGc6bnVsbCxydGM6bnVsbCxlYzpudWxsLHNwOm51bGx9O3JldHVybiBzLmN0eD17XzpzfSxzLnJvb3Q9dD90LnJvb3Q6cyxzLmVtaXQ9aHguYmluZChudWxsLHMpLGUuY2UmJmUuY2Uocyksc31sZXQgenQ9bnVsbDtjb25zdCBtdD0oKT0+enR8fGp0O2xldCBIYSxoczt7Y29uc3QgZT1tbCgpLHQ9KG4scik9PntsZXQgbztyZXR1cm4obz1lW25dKXx8KG89ZVtuXT1bXSksby5wdXNoKHIpLHM9PntvLmxlbmd0aD4xP28uZm9yRWFjaChpPT5pKHMpKTpvWzBdKHMpfX07SGE9dCgiX19WVUVfSU5TVEFOQ0VfU0VUVEVSU19fIixuPT56dD1uKSxocz10KCJfX1ZVRV9TU1JfU0VUVEVSU19fIixuPT5Cbz1uKX1jb25zdCBEcz1lPT57Y29uc3QgdD16dDtyZXR1cm4gSGEoZSksZS5zY29wZS5vbigpLCgpPT57ZS5zY29wZS5vZmYoKSxIYSh0KX19LF9pPSgpPT57enQmJnp0LnNjb3BlLm9mZigpLEhhKG51bGwpfTtmdW5jdGlvbiBweShlKXtyZXR1cm4gZS52bm9kZS5zaGFwZUZsYWcmNH1sZXQgQm89ITE7ZnVuY3Rpb24gengoZSx0PSExLG49ITEpe3QmJmhzKHQpO2NvbnN0e3Byb3BzOnIsY2hpbGRyZW46b309ZS52bm9kZSxzPXB5KGUpO194KGUscixzLHQpLEV4KGUsbyxufHx0KTtjb25zdCBpPXM/angoZSx0KTp2b2lkIDA7cmV0dXJuIHQmJmhzKCExKSxpfWZ1bmN0aW9uIGp4KGUsdCl7Y29uc3Qgbj1lLnR5cGU7ZS5hY2Nlc3NDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLGUucHJveHk9bmV3IFByb3h5KGUuY3R4LHJ4KTtjb25zdHtzZXR1cDpyfT1uO2lmKHIpe0RyKCk7Y29uc3Qgbz1lLnNldHVwQ29udGV4dD1yLmxlbmd0aD4xP2h5KGUpOm51bGwscz1EcyhlKSxpPURpKHIsZSwwLFtlLnByb3BzLG9dKSxhPXVsKGkpO2lmKExyKCkscygpLChhfHxlLnNwKSYmIUlyKGUpJiZ3ZihlKSxhKXtpZihpLnRoZW4oX2ksX2kpLHQpcmV0dXJuIGkudGhlbihsPT57bHUoZSxsLHQpfSkuY2F0Y2gobD0+e05zKGwsZSwwKX0pO2UuYXN5bmNEZXA9aX1lbHNlIGx1KGUsaSx0KX1lbHNlIG15KGUsdCl9ZnVuY3Rpb24gbHUoZSx0LG4pe0NlKHQpP2UudHlwZS5fX3NzcklubGluZVJlbmRlcj9lLnNzclJlbmRlcj10OmUucmVuZGVyPXQ6WmUodCkmJihlLnNldHVwU3RhdGU9X2codCkpLG15KGUsbil9bGV0IHNwO2Z1bmN0aW9uIG15KGUsdCxuKXtjb25zdCByPWUudHlwZTtpZighZS5yZW5kZXIpe2lmKCF0JiZzcCYmIXIucmVuZGVyKXtjb25zdCBvPXIudGVtcGxhdGV8fFNmKGUpLnRlbXBsYXRlO2lmKG8pe2NvbnN0e2lzQ3VzdG9tRWxlbWVudDpzLGNvbXBpbGVyT3B0aW9uczppfT1lLmFwcENvbnRleHQuY29uZmlnLHtkZWxpbWl0ZXJzOmEsY29tcGlsZXJPcHRpb25zOmx9PXIsdT12dCh2dCh7aXNDdXN0b21FbGVtZW50OnMsZGVsaW1pdGVyczphfSxpKSxsKTtyLnJlbmRlcj1zcChvLHUpfX1lLnJlbmRlcj1yLnJlbmRlcnx8bHJ9e2NvbnN0IG89RHMoZSk7RHIoKTt0cnl7YXgoZSl9ZmluYWxseXtMcigpLG8oKX19fWNvbnN0IFZ4PXtnZXQoZSx0KXtyZXR1cm4gS3QoZSwiZ2V0IiwiIiksZVt0XX19O2Z1bmN0aW9uIGh5KGUpe2NvbnN0IHQ9bj0+e2UuZXhwb3NlZD1ufHx7fX07cmV0dXJue2F0dHJzOm5ldyBQcm94eShlLmF0dHJzLFZ4KSxzbG90czplLnNsb3RzLGVtaXQ6ZS5lbWl0LGV4cG9zZTp0fX1mdW5jdGlvbiBFbChlKXtyZXR1cm4gZS5leHBvc2VkP2UuZXhwb3NlUHJveHl8fChlLmV4cG9zZVByb3h5PW5ldyBQcm94eShfZyhMbyhlLmV4cG9zZWQpKSx7Z2V0KHQsbil7aWYobiBpbiB0KXJldHVybiB0W25dO2lmKG4gaW4gaWkpcmV0dXJuIGlpW25dKGUpfSxoYXModCxuKXtyZXR1cm4gbiBpbiB0fHxuIGluIGlpfX0pKTplLnByb3h5fWZ1bmN0aW9uIGN1KGUsdD0hMCl7cmV0dXJuIENlKGUpP2UuZGlzcGxheU5hbWV8fGUubmFtZTplLm5hbWV8fHQmJmUuX19uYW1lfWZ1bmN0aW9uIFV4KGUpe3JldHVybiBDZShlKSYmIl9fdmNjT3B0cyJpbiBlfWNvbnN0IE49KGUsdCk9PkNfKGUsdCxCbyk7ZnVuY3Rpb24gRmUoZSx0LG4pe3RyeXtVYSgtMSk7Y29uc3Qgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByPT09Mj9aZSh0KSYmIVNlKHQpP01vKHQpP3JlKGUsbnVsbCxbdF0pOnJlKGUsdCk6cmUoZSxudWxsLHQpOihyPjM/bj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik6cj09PTMmJk1vKG4pJiYobj1bbl0pLHJlKGUsdCxuKSl9ZmluYWxseXtVYSgxKX19ZnVuY3Rpb24gb3EoZSx0LG4scil7Y29uc3Qgbz1uW3JdO2lmKG8mJkh4KG8sZSkpcmV0dXJuIG87Y29uc3Qgcz10KCk7cmV0dXJuIHMubWVtbz1lLnNsaWNlKCkscy5jYWNoZUluZGV4PXIsbltyXT1zfWZ1bmN0aW9uIEh4KGUsdCl7Y29uc3Qgbj1lLm1lbW87aWYobi5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKWlmKEZ0KG5bcl0sdFtyXSkpcmV0dXJuITE7cmV0dXJuICRvPjAmJll0JiZZdC5wdXNoKGUpLCEwfWNvbnN0IFd4PSIzLjUuMzIiO2xldCB1dTtjb25zdCBpcD10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LnRydXN0ZWRUeXBlcztpZihpcCl0cnl7dXU9aXAuY3JlYXRlUG9saWN5KCJ2dWUiLHtjcmVhdGVIVE1MOmU9PmV9KX1jYXRjaHt9Y29uc3QgZ3k9dXU/ZT0+dXUuY3JlYXRlSFRNTChlKTplPT5lLEd4PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsS3g9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLEVyPXR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQ6bnVsbCxhcD1FciYmRXIuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKSxReD17aW5zZXJ0OihlLHQsbik9Pnt0Lmluc2VydEJlZm9yZShlLG58fG51bGwpfSxyZW1vdmU6ZT0+e2NvbnN0IHQ9ZS5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQoZSl9LGNyZWF0ZUVsZW1lbnQ6KGUsdCxuLHIpPT57Y29uc3Qgbz10PT09InN2ZyI/RXIuY3JlYXRlRWxlbWVudE5TKEd4LGUpOnQ9PT0ibWF0aG1sIj9Fci5jcmVhdGVFbGVtZW50TlMoS3gsZSk6bj9Fci5jcmVhdGVFbGVtZW50KGUse2lzOm59KTpFci5jcmVhdGVFbGVtZW50KGUpO3JldHVybiBlPT09InNlbGVjdCImJnImJnIubXVsdGlwbGUhPW51bGwmJm8uc2V0QXR0cmlidXRlKCJtdWx0aXBsZSIsci5tdWx0aXBsZSksb30sY3JlYXRlVGV4dDplPT5Fci5jcmVhdGVUZXh0Tm9kZShlKSxjcmVhdGVDb21tZW50OmU9PkVyLmNyZWF0ZUNvbW1lbnQoZSksc2V0VGV4dDooZSx0KT0+e2Uubm9kZVZhbHVlPXR9LHNldEVsZW1lbnRUZXh0OihlLHQpPT57ZS50ZXh0Q29udGVudD10fSxwYXJlbnROb2RlOmU9PmUucGFyZW50Tm9kZSxuZXh0U2libGluZzplPT5lLm5leHRTaWJsaW5nLHF1ZXJ5U2VsZWN0b3I6ZT0+RXIucXVlcnlTZWxlY3RvcihlKSxzZXRTY29wZUlkKGUsdCl7ZS5zZXRBdHRyaWJ1dGUodCwiIil9LGluc2VydFN0YXRpY0NvbnRlbnQoZSx0LG4scixvLHMpe2NvbnN0IGk9bj9uLnByZXZpb3VzU2libGluZzp0Lmxhc3RDaGlsZDtpZihvJiYobz09PXN8fG8ubmV4dFNpYmxpbmcpKWZvcig7dC5pbnNlcnRCZWZvcmUoby5jbG9uZU5vZGUoITApLG4pLCEobz09PXN8fCEobz1vLm5leHRTaWJsaW5nKSk7KTtlbHNle2FwLmlubmVySFRNTD1neShyPT09InN2ZyI/YDxzdmc+JHtlfTwvc3ZnPmA6cj09PSJtYXRobWwiP2A8bWF0aD4ke2V9PC9tYXRoPmA6ZSk7Y29uc3QgYT1hcC5jb250ZW50O2lmKHI9PT0ic3ZnInx8cj09PSJtYXRobWwiKXtjb25zdCBsPWEuZmlyc3RDaGlsZDtmb3IoO2wuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChsLmZpcnN0Q2hpbGQpO2EucmVtb3ZlQ2hpbGQobCl9dC5pbnNlcnRCZWZvcmUoYSxuKX1yZXR1cm5baT9pLm5leHRTaWJsaW5nOnQuZmlyc3RDaGlsZCxuP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkXX19LFdyPSJ0cmFuc2l0aW9uIix6cz0iYW5pbWF0aW9uIix4aT1TeW1ib2woIl92dGMiKSx5eT17bmFtZTpTdHJpbmcsdHlwZTpTdHJpbmcsY3NzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sZHVyYXRpb246W1N0cmluZyxOdW1iZXIsT2JqZWN0XSxlbnRlckZyb21DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxhcHBlYXJGcm9tQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxsZWF2ZUZyb21DbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZ30sWXg9dnQoe30sSWcseXkpLEp4PWU9PihlLmRpc3BsYXlOYW1lPSJUcmFuc2l0aW9uIixlLnByb3BzPVl4LGUpLFh4PUp4KChlLHtzbG90czp0fSk9PkZlKGpfLFp4KGUpLHQpKSx3bz0oZSx0PVtdKT0+e1NlKGUpP2UuZm9yRWFjaChuPT5uKC4uLnQpKTplJiZlKC4uLnQpfSxscD1lPT5lP1NlKGUpP2Uuc29tZSh0PT50Lmxlbmd0aD4xKTplLmxlbmd0aD4xOiExO2Z1bmN0aW9uIFp4KGUpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IEQgaW4gZSlEIGluIHl5fHwodFtEXT1lW0RdKTtpZihlLmNzcz09PSExKXJldHVybiB0O2NvbnN0e25hbWU6bj0idiIsdHlwZTpyLGR1cmF0aW9uOm8sZW50ZXJGcm9tQ2xhc3M6cz1gJHtufS1lbnRlci1mcm9tYCxlbnRlckFjdGl2ZUNsYXNzOmk9YCR7bn0tZW50ZXItYWN0aXZlYCxlbnRlclRvQ2xhc3M6YT1gJHtufS1lbnRlci10b2AsYXBwZWFyRnJvbUNsYXNzOmw9cyxhcHBlYXJBY3RpdmVDbGFzczp1PWksYXBwZWFyVG9DbGFzczpjPWEsbGVhdmVGcm9tQ2xhc3M6Zj1gJHtufS1sZWF2ZS1mcm9tYCxsZWF2ZUFjdGl2ZUNsYXNzOmQ9YCR7bn0tbGVhdmUtYWN0aXZlYCxsZWF2ZVRvQ2xhc3M6cD1gJHtufS1sZWF2ZS10b2B9PWUsbT1lUyhvKSx5PW0mJm1bMF0sXz1tJiZtWzFdLHtvbkJlZm9yZUVudGVyOncsb25FbnRlcjp2LG9uRW50ZXJDYW5jZWxsZWQ6aCxvbkxlYXZlOmIsb25MZWF2ZUNhbmNlbGxlZDp4LG9uQmVmb3JlQXBwZWFyOlM9dyxvbkFwcGVhcjprPXYsb25BcHBlYXJDYW5jZWxsZWQ6VD1ofT10LEM9KEQsVyxMLGopPT57RC5fZW50ZXJDYW5jZWxsZWQ9aixfbyhELFc/YzphKSxfbyhELFc/dTppKSxMJiZMKCl9LFA9KEQsVyk9PntELl9pc0xlYXZpbmc9ITEsX28oRCxmKSxfbyhELHApLF9vKEQsZCksVyYmVygpfSxGPUQ9PihXLEwpPT57Y29uc3Qgaj1EP2s6dixJPSgpPT5DKFcsRCxMKTt3byhqLFtXLEldKSxjcCgoKT0+e19vKFcsRD9sOnMpLF9yKFcsRD9jOmEpLGxwKGopfHx1cChXLHIseSxJKX0pfTtyZXR1cm4gdnQodCx7b25CZWZvcmVFbnRlcihEKXt3byh3LFtEXSksX3IoRCxzKSxfcihELGkpfSxvbkJlZm9yZUFwcGVhcihEKXt3byhTLFtEXSksX3IoRCxsKSxfcihELHUpfSxvbkVudGVyOkYoITEpLG9uQXBwZWFyOkYoITApLG9uTGVhdmUoRCxXKXtELl9pc0xlYXZpbmc9ITA7Y29uc3QgTD0oKT0+UChELFcpO19yKEQsZiksRC5fZW50ZXJDYW5jZWxsZWQ/KF9yKEQsZCkscHAoRCkpOihwcChEKSxfcihELGQpKSxjcCgoKT0+e0QuX2lzTGVhdmluZyYmKF9vKEQsZiksX3IoRCxwKSxscChiKXx8dXAoRCxyLF8sTCkpfSksd28oYixbRCxMXSl9LG9uRW50ZXJDYW5jZWxsZWQoRCl7QyhELCExLHZvaWQgMCwhMCksd28oaCxbRF0pfSxvbkFwcGVhckNhbmNlbGxlZChEKXtDKEQsITAsdm9pZCAwLCEwKSx3byhULFtEXSl9LG9uTGVhdmVDYW5jZWxsZWQoRCl7UChEKSx3byh4LFtEXSl9fSl9ZnVuY3Rpb24gZVMoZSl7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtpZihaZShlKSlyZXR1cm5bZ2MoZS5lbnRlciksZ2MoZS5sZWF2ZSldO3tjb25zdCB0PWdjKGUpO3JldHVyblt0LHRdfX1mdW5jdGlvbiBnYyhlKXtyZXR1cm4gWmgoZSl9ZnVuY3Rpb24gX3IoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKG49Pm4mJmUuY2xhc3NMaXN0LmFkZChuKSksKGVbeGldfHwoZVt4aV09bmV3IFNldCkpLmFkZCh0KX1mdW5jdGlvbiBfbyhlLHQpe3Quc3BsaXQoL1xzKy8pLmZvckVhY2gocj0+ciYmZS5jbGFzc0xpc3QucmVtb3ZlKHIpKTtjb25zdCBuPWVbeGldO24mJihuLmRlbGV0ZSh0KSxuLnNpemV8fChlW3hpXT12b2lkIDApKX1mdW5jdGlvbiBjcChlKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSl9KX1sZXQgdFM9MDtmdW5jdGlvbiB1cChlLHQsbixyKXtjb25zdCBvPWUuX2VuZElkPSsrdFMscz0oKT0+e289PT1lLl9lbmRJZCYmcigpfTtpZihuIT1udWxsKXJldHVybiBzZXRUaW1lb3V0KHMsbik7Y29uc3R7dHlwZTppLHRpbWVvdXQ6YSxwcm9wQ291bnQ6bH09blMoZSx0KTtpZighaSlyZXR1cm4gcigpO2NvbnN0IHU9aSsiZW5kIjtsZXQgYz0wO2NvbnN0IGY9KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIodSxkKSxzKCl9LGQ9cD0+e3AudGFyZ2V0PT09ZSYmKytjPj1sJiZmKCl9O3NldFRpbWVvdXQoKCk9PntjPGwmJmYoKX0sYSsxKSxlLmFkZEV2ZW50TGlzdGVuZXIodSxkKX1mdW5jdGlvbiBuUyhlLHQpe2NvbnN0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkscj1tPT4oblttXXx8IiIpLnNwbGl0KCIsICIpLG89cihgJHtXcn1EZWxheWApLHM9cihgJHtXcn1EdXJhdGlvbmApLGk9ZnAobyxzKSxhPXIoYCR7enN9RGVsYXlgKSxsPXIoYCR7enN9RHVyYXRpb25gKSx1PWZwKGEsbCk7bGV0IGM9bnVsbCxmPTAsZD0wO3Q9PT1Xcj9pPjAmJihjPVdyLGY9aSxkPXMubGVuZ3RoKTp0PT09enM/dT4wJiYoYz16cyxmPXUsZD1sLmxlbmd0aCk6KGY9TWF0aC5tYXgoaSx1KSxjPWY+MD9pPnU/V3I6enM6bnVsbCxkPWM/Yz09PVdyP3MubGVuZ3RoOmwubGVuZ3RoOjApO2NvbnN0IHA9Yz09PVdyJiYvXGIoPzp0cmFuc2Zvcm18YWxsKSg/Oix8JCkvLnRlc3QocihgJHtXcn1Qcm9wZXJ0eWApLnRvU3RyaW5nKCkpO3JldHVybnt0eXBlOmMsdGltZW91dDpmLHByb3BDb3VudDpkLGhhc1RyYW5zZm9ybTpwfX1mdW5jdGlvbiBmcChlLHQpe2Zvcig7ZS5sZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4KC4uLnQubWFwKChuLHIpPT5kcChuKStkcChlW3JdKSkpfWZ1bmN0aW9uIGRwKGUpe3JldHVybiBlPT09ImF1dG8iPzA6TnVtYmVyKGUuc2xpY2UoMCwtMSkucmVwbGFjZSgiLCIsIi4iKSkqMWUzfWZ1bmN0aW9uIHBwKGUpe3JldHVybihlP2Uub3duZXJEb2N1bWVudDpkb2N1bWVudCkuYm9keS5vZmZzZXRIZWlnaHR9ZnVuY3Rpb24gclMoZSx0LG4pe2NvbnN0IHI9ZVt4aV07ciYmKHQ9KHQ/W3QsLi4ucl06Wy4uLnJdKS5qb2luKCIgIikpLHQ9PW51bGw/ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik6bj9lLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHQpOmUuY2xhc3NOYW1lPXR9Y29uc3QgV2E9U3ltYm9sKCJfdm9kIiksdnk9U3ltYm9sKCJfdnNoIiksc3E9e25hbWU6InNob3ciLGJlZm9yZU1vdW50KGUse3ZhbHVlOnR9LHt0cmFuc2l0aW9uOm59KXtlW1dhXT1lLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSI/IiI6ZS5zdHlsZS5kaXNwbGF5LG4mJnQ/bi5iZWZvcmVFbnRlcihlKTpqcyhlLHQpfSxtb3VudGVkKGUse3ZhbHVlOnR9LHt0cmFuc2l0aW9uOm59KXtuJiZ0JiZuLmVudGVyKGUpfSx1cGRhdGVkKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0se3RyYW5zaXRpb246cn0peyF0IT0hbiYmKHI/dD8oci5iZWZvcmVFbnRlcihlKSxqcyhlLCEwKSxyLmVudGVyKGUpKTpyLmxlYXZlKGUsKCk9PntqcyhlLCExKX0pOmpzKGUsdCkpfSxiZWZvcmVVbm1vdW50KGUse3ZhbHVlOnR9KXtqcyhlLHQpfX07ZnVuY3Rpb24ganMoZSx0KXtlLnN0eWxlLmRpc3BsYXk9dD9lW1dhXToibm9uZSIsZVt2eV09IXR9Y29uc3Qgb1M9U3ltYm9sKCIiKSxzUz0vKD86Xnw7KVxzKmRpc3BsYXlccyo6LztmdW5jdGlvbiBpUyhlLHQsbil7Y29uc3Qgcj1lLnN0eWxlLG89ZnQobik7bGV0IHM9ITE7aWYobiYmIW8pe2lmKHQpaWYoZnQodCkpZm9yKGNvbnN0IGkgb2YgdC5zcGxpdCgiOyIpKXtjb25zdCBhPWkuc2xpY2UoMCxpLmluZGV4T2YoIjoiKSkudHJpbSgpO25bYV09PW51bGwmJlRhKHIsYSwiIil9ZWxzZSBmb3IoY29uc3QgaSBpbiB0KW5baV09PW51bGwmJlRhKHIsaSwiIik7Zm9yKGNvbnN0IGkgaW4gbilpPT09ImRpc3BsYXkiJiYocz0hMCksVGEocixpLG5baV0pfWVsc2UgaWYobyl7aWYodCE9PW4pe2NvbnN0IGk9cltvU107aSYmKG4rPSI7IitpKSxyLmNzc1RleHQ9bixzPXNTLnRlc3Qobil9fWVsc2UgdCYmZS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIik7V2EgaW4gZSYmKGVbV2FdPXM/ci5kaXNwbGF5OiIiLGVbdnldJiYoci5kaXNwbGF5PSJub25lIikpfWNvbnN0IG1wPS9ccyohaW1wb3J0YW50JC87ZnVuY3Rpb24gVGEoZSx0LG4pe2lmKFNlKG4pKW4uZm9yRWFjaChyPT5UYShlLHQscikpO2Vsc2UgaWYobj09bnVsbCYmKG49IiIpLHQuc3RhcnRzV2l0aCgiLS0iKSllLnNldFByb3BlcnR5KHQsbik7ZWxzZXtjb25zdCByPWFTKGUsdCk7bXAudGVzdChuKT9lLnNldFByb3BlcnR5KEJyKHIpLG4ucmVwbGFjZShtcCwiIiksImltcG9ydGFudCIpOmVbcl09bn19Y29uc3QgaHA9WyJXZWJraXQiLCJNb3oiLCJtcyJdLHljPXt9O2Z1bmN0aW9uIGFTKGUsdCl7Y29uc3Qgbj15Y1t0XTtpZihuKXJldHVybiBuO2xldCByPSR0KHQpO2lmKHIhPT0iZmlsdGVyIiYmciBpbiBlKXJldHVybiB5Y1t0XT1yO3I9cGwocik7Zm9yKGxldCBvPTA7bzxocC5sZW5ndGg7bysrKXtjb25zdCBzPWhwW29dK3I7aWYocyBpbiBlKXJldHVybiB5Y1t0XT1zfXJldHVybiB0fWNvbnN0IGdwPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjtmdW5jdGlvbiB5cChlLHQsbixyLG8scz1adyh0KSl7ciYmdC5zdGFydHNXaXRoKCJ4bGluazoiKT9uPT1udWxsP2UucmVtb3ZlQXR0cmlidXRlTlMoZ3AsdC5zbGljZSg2LHQubGVuZ3RoKSk6ZS5zZXRBdHRyaWJ1dGVOUyhncCx0LG4pOm49PW51bGx8fHMmJiFlZyhuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LHM/IiI6a24obik/U3RyaW5nKG4pOm4pfWZ1bmN0aW9uIHZwKGUsdCxuLHIsbyl7aWYodD09PSJpbm5lckhUTUwifHx0PT09InRleHRDb250ZW50Iil7biE9bnVsbCYmKGVbdF09dD09PSJpbm5lckhUTUwiP2d5KG4pOm4pO3JldHVybn1jb25zdCBzPWUudGFnTmFtZTtpZih0PT09InZhbHVlIiYmcyE9PSJQUk9HUkVTUyImJiFzLmluY2x1ZGVzKCItIikpe2NvbnN0IGE9cz09PSJPUFRJT04iP2UuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfHwiIjplLnZhbHVlLGw9bj09bnVsbD9lLnR5cGU9PT0iY2hlY2tib3giPyJvbiI6IiI6U3RyaW5nKG4pOyhhIT09bHx8ISgiX3ZhbHVlImluIGUpKSYmKGUudmFsdWU9bCksbj09bnVsbCYmZS5yZW1vdmVBdHRyaWJ1dGUodCksZS5fdmFsdWU9bjtyZXR1cm59bGV0IGk9ITE7aWYobj09PSIifHxuPT1udWxsKXtjb25zdCBhPXR5cGVvZiBlW3RdO2E9PT0iYm9vbGVhbiI/bj1lZyhuKTpuPT1udWxsJiZhPT09InN0cmluZyI/KG49IiIsaT0hMCk6YT09PSJudW1iZXIiJiYobj0wLGk9ITApfXRyeXtlW3RdPW59Y2F0Y2h7fWkmJmUucmVtb3ZlQXR0cmlidXRlKG98fHQpfWZ1bmN0aW9uIGxTKGUsdCxuLHIpe2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4scil9ZnVuY3Rpb24gY1MoZSx0LG4scil7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKX1jb25zdCBicD1TeW1ib2woIl92ZWkiKTtmdW5jdGlvbiB1UyhlLHQsbixyLG89bnVsbCl7Y29uc3Qgcz1lW2JwXXx8KGVbYnBdPXt9KSxpPXNbdF07aWYociYmaSlpLnZhbHVlPXI7ZWxzZXtjb25zdFthLGxdPWZTKHQpO2lmKHIpe2NvbnN0IHU9c1t0XT1tUyhyLG8pO2xTKGUsYSx1LGwpfWVsc2UgaSYmKGNTKGUsYSxpLGwpLHNbdF09dm9pZCAwKX19Y29uc3Qgd3A9Lyg/Ok9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvO2Z1bmN0aW9uIGZTKGUpe2xldCB0O2lmKHdwLnRlc3QoZSkpe3Q9e307bGV0IHI7Zm9yKDtyPWUubWF0Y2god3ApOyllPWUuc2xpY2UoMCxlLmxlbmd0aC1yWzBdLmxlbmd0aCksdFtyWzBdLnRvTG93ZXJDYXNlKCldPSEwfXJldHVybltlWzJdPT09IjoiP2Uuc2xpY2UoMyk6QnIoZS5zbGljZSgyKSksdF19bGV0IHZjPTA7Y29uc3QgZFM9UHJvbWlzZS5yZXNvbHZlKCkscFM9KCk9PnZjfHwoZFMudGhlbigoKT0+dmM9MCksdmM9RGF0ZS5ub3coKSk7ZnVuY3Rpb24gbVMoZSx0KXtjb25zdCBuPXI9PntpZighci5fdnRzKXIuX3Z0cz1EYXRlLm5vdygpO2Vsc2UgaWYoci5fdnRzPD1uLmF0dGFjaGVkKXJldHVybjtIbihoUyhyLG4udmFsdWUpLHQsNSxbcl0pfTtyZXR1cm4gbi52YWx1ZT1lLG4uYXR0YWNoZWQ9cFMoKSxufWZ1bmN0aW9uIGhTKGUsdCl7aWYoU2UodCkpe2NvbnN0IG49ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247cmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPSgpPT57bi5jYWxsKGUpLGUuX3N0b3BwZWQ9ITB9LHQubWFwKHI9Pm89PiFvLl9zdG9wcGVkJiZyJiZyKG8pKX1lbHNlIHJldHVybiB0fWNvbnN0IF9wPWU9PmUuY2hhckNvZGVBdCgwKT09PTExMSYmZS5jaGFyQ29kZUF0KDEpPT09MTEwJiZlLmNoYXJDb2RlQXQoMik+OTYmJmUuY2hhckNvZGVBdCgyKTwxMjMsZ1M9KGUsdCxuLHIsbyxzKT0+e2NvbnN0IGk9bz09PSJzdmciO3Q9PT0iY2xhc3MiP3JTKGUscixpKTp0PT09InN0eWxlIj9pUyhlLG4scik6UmkodCk/Y2wodCl8fHVTKGUsdCxuLHIscyk6KHRbMF09PT0iLiI/KHQ9dC5zbGljZSgxKSwhMCk6dFswXT09PSJeIj8odD10LnNsaWNlKDEpLCExKTp5UyhlLHQscixpKSk/KHZwKGUsdCxyKSwhZS50YWdOYW1lLmluY2x1ZGVzKCItIikmJih0PT09InZhbHVlInx8dD09PSJjaGVja2VkInx8dD09PSJzZWxlY3RlZCIpJiZ5cChlLHQscixpLHMsdCE9PSJ2YWx1ZSIpKTplLl9pc1Z1ZUNFJiYodlMoZSx0KXx8ZS5fZGVmLl9fYXN5bmNMb2FkZXImJigvW0EtWl0vLnRlc3QodCl8fCFmdChyKSkpP3ZwKGUsJHQodCkscixzLHQpOih0PT09InRydWUtdmFsdWUiP2UuX3RydWVWYWx1ZT1yOnQ9PT0iZmFsc2UtdmFsdWUiJiYoZS5fZmFsc2VWYWx1ZT1yKSx5cChlLHQscixpKSl9O2Z1bmN0aW9uIHlTKGUsdCxuLHIpe2lmKHIpcmV0dXJuISEodD09PSJpbm5lckhUTUwifHx0PT09InRleHRDb250ZW50Inx8dCBpbiBlJiZfcCh0KSYmQ2UobikpO2lmKHQ9PT0ic3BlbGxjaGVjayJ8fHQ9PT0iZHJhZ2dhYmxlInx8dD09PSJ0cmFuc2xhdGUifHx0PT09ImF1dG9jb3JyZWN0Inx8dD09PSJzYW5kYm94IiYmZS50YWdOYW1lPT09IklGUkFNRSJ8fHQ9PT0iZm9ybSJ8fHQ9PT0ibGlzdCImJmUudGFnTmFtZT09PSJJTlBVVCJ8fHQ9PT0idHlwZSImJmUudGFnTmFtZT09PSJURVhUQVJFQSIpcmV0dXJuITE7aWYodD09PSJ3aWR0aCJ8fHQ9PT0iaGVpZ2h0Iil7Y29uc3Qgbz1lLnRhZ05hbWU7aWYobz09PSJJTUcifHxvPT09IlZJREVPInx8bz09PSJDQU5WQVMifHxvPT09IlNPVVJDRSIpcmV0dXJuITF9cmV0dXJuIF9wKHQpJiZmdChuKT8hMTp0IGluIGV9ZnVuY3Rpb24gdlMoZSx0KXtjb25zdCBuPWUuX2RlZi5wcm9wcztpZighbilyZXR1cm4hMTtjb25zdCByPSR0KHQpO3JldHVybiBBcnJheS5pc0FycmF5KG4pP24uc29tZShvPT4kdChvKT09PXIpOk9iamVjdC5rZXlzKG4pLnNvbWUobz0+JHQobyk9PT1yKX1jb25zdCBiUz1bImN0cmwiLCJzaGlmdCIsImFsdCIsIm1ldGEiXSx3Uz17c3RvcDplPT5lLnN0b3BQcm9wYWdhdGlvbigpLHByZXZlbnQ6ZT0+ZS5wcmV2ZW50RGVmYXVsdCgpLHNlbGY6ZT0+ZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQsY3RybDplPT4hZS5jdHJsS2V5LHNoaWZ0OmU9PiFlLnNoaWZ0S2V5LGFsdDplPT4hZS5hbHRLZXksbWV0YTplPT4hZS5tZXRhS2V5LGxlZnQ6ZT0+ImJ1dHRvbiJpbiBlJiZlLmJ1dHRvbiE9PTAsbWlkZGxlOmU9PiJidXR0b24iaW4gZSYmZS5idXR0b24hPT0xLHJpZ2h0OmU9PiJidXR0b24iaW4gZSYmZS5idXR0b24hPT0yLGV4YWN0OihlLHQpPT5iUy5zb21lKG49PmVbYCR7bn1LZXlgXSYmIXQuaW5jbHVkZXMobikpfSxScj0oZSx0KT0+e2lmKCFlKXJldHVybiBlO2NvbnN0IG49ZS5fd2l0aE1vZHN8fChlLl93aXRoTW9kcz17fSkscj10LmpvaW4oIi4iKTtyZXR1cm4gbltyXXx8KG5bcl09KChvLC4uLnMpPT57Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IGE9d1NbdFtpXV07aWYoYSYmYShvLHQpKXJldHVybn1yZXR1cm4gZShvLC4uLnMpfSkpfSxfUz17ZXNjOiJlc2NhcGUiLHNwYWNlOiIgIix1cDoiYXJyb3ctdXAiLGxlZnQ6ImFycm93LWxlZnQiLHJpZ2h0OiJhcnJvdy1yaWdodCIsZG93bjoiYXJyb3ctZG93biIsZGVsZXRlOiJiYWNrc3BhY2UifSxpcT0oZSx0KT0+e2NvbnN0IG49ZS5fd2l0aEtleXN8fChlLl93aXRoS2V5cz17fSkscj10LmpvaW4oIi4iKTtyZXR1cm4gbltyXXx8KG5bcl09KG89PntpZighKCJrZXkiaW4gbykpcmV0dXJuO2NvbnN0IHM9QnIoby5rZXkpO2lmKHQuc29tZShpPT5pPT09c3x8X1NbaV09PT1zKSlyZXR1cm4gZShvKX0pKX0sYnk9dnQoe3BhdGNoUHJvcDpnU30sUXgpO2xldCBjaSx4cD0hMTtmdW5jdGlvbiB4Uygpe3JldHVybiBjaXx8KGNpPUN4KGJ5KSl9ZnVuY3Rpb24gU1MoKXtyZXR1cm4gY2k9eHA/Y2k6QXgoYnkpLHhwPSEwLGNpfWNvbnN0IGtTPSgoLi4uZSk9Pntjb25zdCB0PXhTKCkuY3JlYXRlQXBwKC4uLmUpLHttb3VudDpufT10O3JldHVybiB0Lm1vdW50PXI9Pntjb25zdCBvPV95KHIpO2lmKCFvKXJldHVybjtjb25zdCBzPXQuX2NvbXBvbmVudDshQ2UocykmJiFzLnJlbmRlciYmIXMudGVtcGxhdGUmJihzLnRlbXBsYXRlPW8uaW5uZXJIVE1MKSxvLm5vZGVUeXBlPT09MSYmKG8udGV4dENvbnRlbnQ9IiIpO2NvbnN0IGk9bihvLCExLHd5KG8pKTtyZXR1cm4gbyBpbnN0YW5jZW9mIEVsZW1lbnQmJihvLnJlbW92ZUF0dHJpYnV0ZSgidi1jbG9hayIpLG8uc2V0QXR0cmlidXRlKCJkYXRhLXYtYXBwIiwiIikpLGl9LHR9KSxFUz0oKC4uLmUpPT57Y29uc3QgdD1TUygpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1yPT57Y29uc3Qgbz1feShyKTtpZihvKXJldHVybiBuKG8sITAsd3kobykpfSx0fSk7ZnVuY3Rpb24gd3koZSl7aWYoZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpcmV0dXJuInN2ZyI7aWYodHlwZW9mIE1hdGhNTEVsZW1lbnQ9PSJmdW5jdGlvbiImJmUgaW5zdGFuY2VvZiBNYXRoTUxFbGVtZW50KXJldHVybiJtYXRobWwifWZ1bmN0aW9uIF95KGUpe3JldHVybiBmdChlKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpOmV9Y29uc3QgVFM9LyIoPzpffFxcdTB7Mn01W0ZmXSl7Mn0oPzpwfFxcdTB7Mn03MCkoPzpyfFxcdTB7Mn03MikoPzpvfFxcdTB7Mn02W0ZmXSkoPzp0fFxcdTB7Mn03NCkoPzpvfFxcdTB7Mn02W0ZmXSkoPzpffFxcdTB7Mn01W0ZmXSl7Mn0iXHMqOi8sQ1M9LyIoPzpjfFxcdTAwNjMpKD86b3xcXHUwMDZbRmZdKSg/Om58XFx1MDA2W0VlXSkoPzpzfFxcdTAwNzMpKD86dHxcXHUwMDc0KSg/OnJ8XFx1MDA3MikoPzp1fFxcdTAwNzUpKD86Y3xcXHUwMDYzKSg/OnR8XFx1MDA3NCkoPzpvfFxcdTAwNltGZl0pKD86cnxcXHUwMDcyKSJccyo6LyxBUz0vXlxzKlsiW3tdfF5ccyotP1xkezEsMTZ9KFwuXGR7MSwxN30pPyhbRWVdWystXT9cZCspP1xzKiQvO2Z1bmN0aW9uIE9TKGUsdCl7aWYoZT09PSJfX3Byb3RvX18ifHxlPT09ImNvbnN0cnVjdG9yIiYmdCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYicHJvdG90eXBlImluIHQpe3JldHVybn1yZXR1cm4gdH1mdW5jdGlvbiBQUyhlLHQ9e30pe2lmKHR5cGVvZiBlIT0ic3RyaW5nIilyZXR1cm4gZTtpZihlWzBdPT09JyInJiZlW2UubGVuZ3RoLTFdPT09JyInJiZlLmluZGV4T2YoIlxcIik9PT0tMSlyZXR1cm4gZS5zbGljZSgxLC0xKTtjb25zdCBuPWUudHJpbSgpO2lmKG4ubGVuZ3RoPD05KXN3aXRjaChuLnRvTG93ZXJDYXNlKCkpe2Nhc2UidHJ1ZSI6cmV0dXJuITA7Y2FzZSJmYWxzZSI6cmV0dXJuITE7Y2FzZSJ1bmRlZmluZWQiOnJldHVybjtjYXNlIm51bGwiOnJldHVybiBudWxsO2Nhc2UibmFuIjpyZXR1cm4gTnVtYmVyLk5hTjtjYXNlImluZmluaXR5IjpyZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2Nhc2UiLWluZmluaXR5IjpyZXR1cm4gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZfWlmKCFBUy50ZXN0KGUpKXtpZih0LnN0cmljdCl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIltkZXN0cl0gSW52YWxpZCBKU09OIik7cmV0dXJuIGV9dHJ5e2lmKFRTLnRlc3QoZSl8fENTLnRlc3QoZSkpe2lmKHQuc3RyaWN0KXRocm93IG5ldyBFcnJvcigiW2Rlc3RyXSBQb3NzaWJsZSBwcm90b3R5cGUgcG9sbHV0aW9uIik7cmV0dXJuIEpTT04ucGFyc2UoZSxPUyl9cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2gocil7aWYodC5zdHJpY3QpdGhyb3cgcjtyZXR1cm4gZX19Y29uc3QgeHk9LyMvZyxTeT0vJi9nLElTPS9cLy9nLFJTPS89L2csTlM9L1w/L2csVGw9L1wrL2csRFM9LyU1ZS9naSxMUz0vJTYwL2dpLCRTPS8lN2MvZ2ksTVM9LyUyMC9naSxCUz0vJTJmL2dpLHFTPS8lMjUyZi9naTtmdW5jdGlvbiBreShlKXtyZXR1cm4gZW5jb2RlVVJJKCIiK2UpLnJlcGxhY2UoJFMsInwiKX1mdW5jdGlvbiBmdShlKXtyZXR1cm4ga3kodHlwZW9mIGU9PSJzdHJpbmciP2U6SlNPTi5zdHJpbmdpZnkoZSkpLnJlcGxhY2UoVGwsIiUyQiIpLnJlcGxhY2UoTVMsIisiKS5yZXBsYWNlKHh5LCIlMjMiKS5yZXBsYWNlKFN5LCIlMjYiKS5yZXBsYWNlKExTLCJgIikucmVwbGFjZShEUywiXiIpLnJlcGxhY2UoSVMsIiUyRiIpfWZ1bmN0aW9uIGJjKGUpe3JldHVybiBmdShlKS5yZXBsYWNlKFJTLCIlM0QiKX1mdW5jdGlvbiBGUyhlKXtyZXR1cm4ga3koZSkucmVwbGFjZSh4eSwiJTIzIikucmVwbGFjZShOUywiJTNGIikucmVwbGFjZShxUywiJTJGIikucmVwbGFjZShTeSwiJTI2IikucmVwbGFjZShUbCwiJTJCIil9ZnVuY3Rpb24gU2koZT0iIil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoIiIrZSl9Y2F0Y2h7cmV0dXJuIiIrZX19ZnVuY3Rpb24gelMoZSl7cmV0dXJuIFNpKGUucmVwbGFjZShCUywiJTI1MkYiKSl9ZnVuY3Rpb24galMoZSl7cmV0dXJuIFNpKGUucmVwbGFjZShUbCwiICIpKX1mdW5jdGlvbiBWUyhlKXtyZXR1cm4gU2koZS5yZXBsYWNlKFRsLCIgIikpfWZ1bmN0aW9uIE9mKGU9IiIpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlWzBdPT09Ij8iJiYoZT1lLnNsaWNlKDEpKTtmb3IoY29uc3QgbiBvZiBlLnNwbGl0KCImIikpe2NvbnN0IHI9bi5tYXRjaCgvKFtePV0rKT0/KC4qKS8pfHxbXTtpZihyLmxlbmd0aDwyKWNvbnRpbnVlO2NvbnN0IG89alMoclsxXSk7aWYobz09PSJfX3Byb3RvX18ifHxvPT09ImNvbnN0cnVjdG9yIiljb250aW51ZTtjb25zdCBzPVZTKHJbMl18fCIiKTt0W29dPT09dm9pZCAwP3Rbb109czpBcnJheS5pc0FycmF5KHRbb10pP3Rbb10ucHVzaChzKTp0W29dPVt0W29dLHNdfXJldHVybiB0fWZ1bmN0aW9uIEV5KGUsdCl7cmV0dXJuKHR5cGVvZiB0PT0ibnVtYmVyInx8dHlwZW9mIHQ9PSJib29sZWFuIikmJih0PVN0cmluZyh0KSksdD9BcnJheS5pc0FycmF5KHQpP3QubWFwKG49PmAke2JjKGUpfT0ke2Z1KG4pfWApLmpvaW4oIiYiKTpgJHtiYyhlKX09JHtmdSh0KX1gOmJjKGUpfWZ1bmN0aW9uIFVTKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5maWx0ZXIodD0+ZVt0XSE9PXZvaWQgMCkubWFwKHQ9PkV5KHQsZVt0XSkpLmZpbHRlcihCb29sZWFuKS5qb2luKCImIil9Y29uc3QgSFM9L15bXHNcd1wwKy4tXXsyLH06KFsvXFxdezEsMn0pLyxXUz0vXltcc1x3XDArLi1dezIsfTooWy9cXF17Mn0pPy8sR1M9L14oWy9cXF1ccyopezIsfVteL1xcXS8sS1M9L15bXHNcMF0qKGJsb2J8ZGF0YXxqYXZhc2NyaXB0fHZic2NyaXB0KTokL2ksUVM9L1wvJHxcL1w/fFwvIy8sWVM9L15cLj9cLy87ZnVuY3Rpb24gTm4oZSx0PXt9KXtyZXR1cm4gdHlwZW9mIHQ9PSJib29sZWFuIiYmKHQ9e2FjY2VwdFJlbGF0aXZlOnR9KSx0LnN0cmljdD9IUy50ZXN0KGUpOldTLnRlc3QoZSl8fCh0LmFjY2VwdFJlbGF0aXZlP0dTLnRlc3QoZSk6ITEpfWZ1bmN0aW9uIEpTKGUpe3JldHVybiEhZSYmS1MudGVzdChlKX1mdW5jdGlvbiBkdShlPSIiLHQpe3JldHVybiB0P1FTLnRlc3QoZSk6ZS5lbmRzV2l0aCgiLyIpfWZ1bmN0aW9uIGtpKGU9IiIsdCl7aWYoIXQpcmV0dXJuKGR1KGUpP2Uuc2xpY2UoMCwtMSk6ZSl8fCIvIjtpZighZHUoZSwhMCkpcmV0dXJuIGV8fCIvIjtsZXQgbj1lLHI9IiI7Y29uc3Qgbz1lLmluZGV4T2YoIiMiKTtvIT09LTEmJihuPWUuc2xpY2UoMCxvKSxyPWUuc2xpY2UobykpO2NvbnN0W3MsLi4uaV09bi5zcGxpdCgiPyIpO3JldHVybigocy5lbmRzV2l0aCgiLyIpP3Muc2xpY2UoMCwtMSk6cyl8fCIvIikrKGkubGVuZ3RoPjA/YD8ke2kuam9pbigiPyIpfWA6IiIpK3J9ZnVuY3Rpb24gVHkoZT0iIix0KXtpZighdClyZXR1cm4gZS5lbmRzV2l0aCgiLyIpP2U6ZSsiLyI7aWYoZHUoZSwhMCkpcmV0dXJuIGV8fCIvIjtsZXQgbj1lLHI9IiI7Y29uc3Qgbz1lLmluZGV4T2YoIiMiKTtpZihvIT09LTEmJihuPWUuc2xpY2UoMCxvKSxyPWUuc2xpY2UobyksIW4pKXJldHVybiByO2NvbnN0W3MsLi4uaV09bi5zcGxpdCgiPyIpO3JldHVybiBzKyIvIisoaS5sZW5ndGg+MD9gPyR7aS5qb2luKCI/Iil9YDoiIikrcn1mdW5jdGlvbiBYUyhlPSIiKXtyZXR1cm4gZS5zdGFydHNXaXRoKCIvIil9ZnVuY3Rpb24gWlMoZT0iIil7cmV0dXJuIFhTKGUpP2U6Ii8iK2V9ZnVuY3Rpb24gZTEoZSx0KXtpZihBeSh0KXx8Tm4oZSkpcmV0dXJuIGU7Y29uc3Qgbj1raSh0KTtpZihlLnN0YXJ0c1dpdGgobikpe2NvbnN0IHI9ZVtuLmxlbmd0aF07aWYoIXJ8fHI9PT0iLyJ8fHI9PT0iPyIpcmV0dXJuIGV9cmV0dXJuIEJpKG4sZSl9ZnVuY3Rpb24gU3AoZSx0KXtpZihBeSh0KSlyZXR1cm4gZTtjb25zdCBuPWtpKHQpO2lmKCFlLnN0YXJ0c1dpdGgobikpcmV0dXJuIGU7Y29uc3Qgcj1lW24ubGVuZ3RoXTtpZihyJiZyIT09Ii8iJiZyIT09Ij8iKXJldHVybiBlO2NvbnN0IG89ZS5zbGljZShuLmxlbmd0aCk7cmV0dXJuIG9bMF09PT0iLyI/bzoiLyIrb31mdW5jdGlvbiBDeShlLHQpe2NvbnN0IG49Q2woZSkscj17Li4uT2Yobi5zZWFyY2gpLC4uLnR9O3JldHVybiBuLnNlYXJjaD1VUyhyKSxuMShuKX1mdW5jdGlvbiBBeShlKXtyZXR1cm4hZXx8ZT09PSIvIn1mdW5jdGlvbiB0MShlKXtyZXR1cm4gZSYmZSE9PSIvIn1mdW5jdGlvbiBCaShlLC4uLnQpe2xldCBuPWV8fCIiO2Zvcihjb25zdCByIG9mIHQuZmlsdGVyKG89PnQxKG8pKSlpZihuKXtjb25zdCBvPXIucmVwbGFjZShZUywiIik7bj1UeShuKStvfWVsc2Ugbj1yO3JldHVybiBufWZ1bmN0aW9uIE95KC4uLmUpe2NvbnN0IHQ9L1wvKD8hXC8pLyxuPWUuZmlsdGVyKEJvb2xlYW4pLHI9W107bGV0IG89MDtmb3IoY29uc3QgaSBvZiBuKWlmKCEoIWl8fGk9PT0iLyIpKXtmb3IoY29uc3RbYSxsXW9mIGkuc3BsaXQodCkuZW50cmllcygpKWlmKCEoIWx8fGw9PT0iLiIpKXtpZihsPT09Ii4uIil7aWYoci5sZW5ndGg9PT0xJiZObihyWzBdKSljb250aW51ZTtyLnBvcCgpLG8tLTtjb250aW51ZX1pZihhPT09MSYmcltyLmxlbmd0aC0xXT8uZW5kc1dpdGgoIjovIikpe3Jbci5sZW5ndGgtMV0rPSIvIitsO2NvbnRpbnVlfXIucHVzaChsKSxvKyt9fWxldCBzPXIuam9pbigiLyIpO3JldHVybiBvPj0wP25bMF0/LnN0YXJ0c1dpdGgoIi8iKSYmIXMuc3RhcnRzV2l0aCgiLyIpP3M9Ii8iK3M6blswXT8uc3RhcnRzV2l0aCgiLi8iKSYmIXMuc3RhcnRzV2l0aCgiLi8iKSYmKHM9Ii4vIitzKTpzPSIuLi8iLnJlcGVhdCgtMSpvKStzLG5bbi5sZW5ndGgtMV0/LmVuZHNXaXRoKCIvIikmJiFzLmVuZHNXaXRoKCIvIikmJihzKz0iLyIpLHN9ZnVuY3Rpb24gUHkoZSx0KXtyZXR1cm4gU2koa2koZSkpPT09U2koa2kodCkpfWNvbnN0IEl5PVN5bWJvbC5mb3IoInVmbzpwcm90b2NvbFJlbGF0aXZlIik7ZnVuY3Rpb24gQ2woZT0iIix0KXtjb25zdCBuPWUubWF0Y2goL15bXHNcMF0qKGJsb2I6fGRhdGE6fGphdmFzY3JpcHQ6fHZic2NyaXB0OikoLiopL2kpO2lmKG4pe2NvbnN0WyxmLGQ9IiJdPW47cmV0dXJue3Byb3RvY29sOmYudG9Mb3dlckNhc2UoKSxwYXRobmFtZTpkLGhyZWY6ZitkLGF1dGg6IiIsaG9zdDoiIixzZWFyY2g6IiIsaGFzaDoiIn19aWYoIU5uKGUse2FjY2VwdFJlbGF0aXZlOiEwfSkpcmV0dXJuIGtwKGUpO2NvbnN0WyxyPSIiLG8scz0iIl09ZS5yZXBsYWNlKC9cXC9nLCIvIikubWF0Y2goL15bXHNcMF0qKFtcdysuLV17Mix9Oik/XC9cLyhbXi9AXStAKT8oLiopLyl8fFtdO2xldFssaT0iIixhPSIiXT1zLm1hdGNoKC8oW14jLz9dKikoLiopPy8pfHxbXTtyPT09ImZpbGU6IiYmKGE9YS5yZXBsYWNlKC9cLyg/PVtBLVphLXpdOikvLCIiKSk7Y29uc3R7cGF0aG5hbWU6bCxzZWFyY2g6dSxoYXNoOmN9PWtwKGEpO3JldHVybntwcm90b2NvbDpyLnRvTG93ZXJDYXNlKCksYXV0aDpvP28uc2xpY2UoMCxNYXRoLm1heCgwLG8ubGVuZ3RoLTEpKToiIixob3N0OmkscGF0aG5hbWU6bCxzZWFyY2g6dSxoYXNoOmMsW0l5XTohcn19ZnVuY3Rpb24ga3AoZT0iIil7Y29uc3RbdD0iIixuPSIiLHI9IiJdPShlLm1hdGNoKC8oW14jP10qKShcP1teI10qKT8oIy4qKT8vKXx8W10pLnNwbGljZSgxKTtyZXR1cm57cGF0aG5hbWU6dCxzZWFyY2g6bixoYXNoOnJ9fWZ1bmN0aW9uIG4xKGUpe2NvbnN0IHQ9ZS5wYXRobmFtZXx8IiIsbj1lLnNlYXJjaD8oZS5zZWFyY2guc3RhcnRzV2l0aCgiPyIpPyIiOiI/IikrZS5zZWFyY2g6IiIscj1lLmhhc2h8fCIiLG89ZS5hdXRoP2UuYXV0aCsiQCI6IiIscz1lLmhvc3R8fCIiO3JldHVybihlLnByb3RvY29sfHxlW0l5XT8oZS5wcm90b2NvbHx8IiIpKyIvLyI6IiIpK28rcyt0K24rcn1jbGFzcyByMSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKSx0aGlzLm5hbWU9IkZldGNoRXJyb3IiLG4/LmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9bi5jYXVzZSl9fWZ1bmN0aW9uIG8xKGUpe2NvbnN0IHQ9ZS5lcnJvcj8ubWVzc2FnZXx8ZS5lcnJvcj8udG9TdHJpbmcoKXx8IiIsbj1lLnJlcXVlc3Q/Lm1ldGhvZHx8ZS5vcHRpb25zPy5tZXRob2R8fCJHRVQiLHI9ZS5yZXF1ZXN0Py51cmx8fFN0cmluZyhlLnJlcXVlc3QpfHwiLyIsbz1gWyR7bn1dICR7SlNPTi5zdHJpbmdpZnkocil9YCxzPWUucmVzcG9uc2U/YCR7ZS5yZXNwb25zZS5zdGF0dXN9ICR7ZS5yZXNwb25zZS5zdGF0dXNUZXh0fWA6IjxubyByZXNwb25zZT4iLGk9YCR7b306ICR7c30ke3Q/YCAke3R9YDoiIn1gLGE9bmV3IHIxKGksZS5lcnJvcj97Y2F1c2U6ZS5lcnJvcn06dm9pZCAwKTtmb3IoY29uc3QgbCBvZlsicmVxdWVzdCIsIm9wdGlvbnMiLCJyZXNwb25zZSJdKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGwse2dldCgpe3JldHVybiBlW2xdfX0pO2Zvcihjb25zdFtsLHVdb2ZbWyJkYXRhIiwiX2RhdGEiXSxbInN0YXR1cyIsInN0YXR1cyJdLFsic3RhdHVzQ29kZSIsInN0YXR1cyJdLFsic3RhdHVzVGV4dCIsInN0YXR1c1RleHQiXSxbInN0YXR1c01lc3NhZ2UiLCJzdGF0dXNUZXh0Il1dKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGwse2dldCgpe3JldHVybiBlLnJlc3BvbnNlJiZlLnJlc3BvbnNlW3VdfX0pO3JldHVybiBhfWNvbnN0IHMxPW5ldyBTZXQoT2JqZWN0LmZyZWV6ZShbIlBBVENIIiwiUE9TVCIsIlBVVCIsIkRFTEVURSJdKSk7ZnVuY3Rpb24gRXAoZT0iR0VUIil7cmV0dXJuIHMxLmhhcyhlLnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIGkxKGUpe2lmKGU9PT12b2lkIDApcmV0dXJuITE7Y29uc3QgdD10eXBlb2YgZTtyZXR1cm4gdD09PSJzdHJpbmcifHx0PT09Im51bWJlciJ8fHQ9PT0iYm9vbGVhbiJ8fHQ9PT1udWxsPyEwOnQhPT0ib2JqZWN0Ij8hMTpBcnJheS5pc0FycmF5KGUpPyEwOmUuYnVmZmVyfHxlIGluc3RhbmNlb2YgRm9ybURhdGF8fGUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXM/ITE6ZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik9iamVjdCJ8fHR5cGVvZiBlLnRvSlNPTj09ImZ1bmN0aW9uIn1jb25zdCBhMT1uZXcgU2V0KFsiaW1hZ2Uvc3ZnIiwiYXBwbGljYXRpb24veG1sIiwiYXBwbGljYXRpb24veGh0bWwiLCJhcHBsaWNhdGlvbi9odG1sIl0pLGwxPS9eYXBwbGljYXRpb25cLyg/OltcdyEjJCUmKi5eYH4tXSpcKyk/anNvbig7LispPyQvaTtmdW5jdGlvbiBjMShlPSIiKXtpZighZSlyZXR1cm4ianNvbiI7Y29uc3QgdD1lLnNwbGl0KCI7Iikuc2hpZnQoKXx8IiI7cmV0dXJuIGwxLnRlc3QodCk/Impzb24iOnQ9PT0idGV4dC9ldmVudC1zdHJlYW0iPyJzdHJlYW0iOmExLmhhcyh0KXx8dC5zdGFydHNXaXRoKCJ0ZXh0LyIpPyJ0ZXh0IjoiYmxvYiJ9ZnVuY3Rpb24gdTEoZSx0LG4scil7Y29uc3Qgbz1mMSh0Py5oZWFkZXJzPz9lPy5oZWFkZXJzLG4/LmhlYWRlcnMscik7bGV0IHM7cmV0dXJuKG4/LnF1ZXJ5fHxuPy5wYXJhbXN8fHQ/LnBhcmFtc3x8dD8ucXVlcnkpJiYocz17Li4ubj8ucGFyYW1zLC4uLm4/LnF1ZXJ5LC4uLnQ/LnBhcmFtcywuLi50Py5xdWVyeX0pLHsuLi5uLC4uLnQscXVlcnk6cyxwYXJhbXM6cyxoZWFkZXJzOm99fWZ1bmN0aW9uIGYxKGUsdCxuKXtpZighdClyZXR1cm4gbmV3IG4oZSk7Y29uc3Qgcj1uZXcgbih0KTtpZihlKWZvcihjb25zdFtvLHNdb2YgU3ltYm9sLml0ZXJhdG9yIGluIGV8fEFycmF5LmlzQXJyYXkoZSk/ZTpuZXcgbihlKSlyLnNldChvLHMpO3JldHVybiByfWFzeW5jIGZ1bmN0aW9uIHJhKGUsdCl7aWYodClpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBuIG9mIHQpYXdhaXQgbihlKTtlbHNlIGF3YWl0IHQoZSl9Y29uc3QgZDE9bmV3IFNldChbNDA4LDQwOSw0MjUsNDI5LDUwMCw1MDIsNTAzLDUwNF0pLHAxPW5ldyBTZXQoWzEwMSwyMDQsMjA1LDMwNF0pO2Z1bmN0aW9uIFJ5KGU9e30pe2NvbnN0e2ZldGNoOnQ9Z2xvYmFsVGhpcy5mZXRjaCxIZWFkZXJzOm49Z2xvYmFsVGhpcy5IZWFkZXJzLEFib3J0Q29udHJvbGxlcjpyPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyfT1lO2FzeW5jIGZ1bmN0aW9uIG8oYSl7Y29uc3QgbD1hLmVycm9yJiZhLmVycm9yLm5hbWU9PT0iQWJvcnRFcnJvciImJiFhLm9wdGlvbnMudGltZW91dHx8ITE7aWYoYS5vcHRpb25zLnJldHJ5IT09ITEmJiFsKXtsZXQgYzt0eXBlb2YgYS5vcHRpb25zLnJldHJ5PT0ibnVtYmVyIj9jPWEub3B0aW9ucy5yZXRyeTpjPUVwKGEub3B0aW9ucy5tZXRob2QpPzA6MTtjb25zdCBmPWEucmVzcG9uc2UmJmEucmVzcG9uc2Uuc3RhdHVzfHw1MDA7aWYoYz4wJiYoQXJyYXkuaXNBcnJheShhLm9wdGlvbnMucmV0cnlTdGF0dXNDb2Rlcyk/YS5vcHRpb25zLnJldHJ5U3RhdHVzQ29kZXMuaW5jbHVkZXMoZik6ZDEuaGFzKGYpKSl7Y29uc3QgZD10eXBlb2YgYS5vcHRpb25zLnJldHJ5RGVsYXk9PSJmdW5jdGlvbiI/YS5vcHRpb25zLnJldHJ5RGVsYXkoYSk6YS5vcHRpb25zLnJldHJ5RGVsYXl8fDA7cmV0dXJuIGQ+MCYmYXdhaXQgbmV3IFByb21pc2UocD0+c2V0VGltZW91dChwLGQpKSxzKGEucmVxdWVzdCx7Li4uYS5vcHRpb25zLHJldHJ5OmMtMX0pfX1jb25zdCB1PW8xKGEpO3Rocm93IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh1LHMpLHV9Y29uc3Qgcz1hc3luYyBmdW5jdGlvbihsLHU9e30pe2NvbnN0IGM9e3JlcXVlc3Q6bCxvcHRpb25zOnUxKGwsdSxlLmRlZmF1bHRzLG4pLHJlc3BvbnNlOnZvaWQgMCxlcnJvcjp2b2lkIDB9O2lmKGMub3B0aW9ucy5tZXRob2QmJihjLm9wdGlvbnMubWV0aG9kPWMub3B0aW9ucy5tZXRob2QudG9VcHBlckNhc2UoKSksYy5vcHRpb25zLm9uUmVxdWVzdCYmKGF3YWl0IHJhKGMsYy5vcHRpb25zLm9uUmVxdWVzdCksYy5vcHRpb25zLmhlYWRlcnMgaW5zdGFuY2VvZiBufHwoYy5vcHRpb25zLmhlYWRlcnM9bmV3IG4oYy5vcHRpb25zLmhlYWRlcnN8fHt9KSkpLHR5cGVvZiBjLnJlcXVlc3Q9PSJzdHJpbmciJiYoYy5vcHRpb25zLmJhc2VVUkwmJihjLnJlcXVlc3Q9ZTEoYy5yZXF1ZXN0LGMub3B0aW9ucy5iYXNlVVJMKSksYy5vcHRpb25zLnF1ZXJ5JiYoYy5yZXF1ZXN0PUN5KGMucmVxdWVzdCxjLm9wdGlvbnMucXVlcnkpLGRlbGV0ZSBjLm9wdGlvbnMucXVlcnkpLCJxdWVyeSJpbiBjLm9wdGlvbnMmJmRlbGV0ZSBjLm9wdGlvbnMucXVlcnksInBhcmFtcyJpbiBjLm9wdGlvbnMmJmRlbGV0ZSBjLm9wdGlvbnMucGFyYW1zKSxjLm9wdGlvbnMuYm9keSYmRXAoYy5vcHRpb25zLm1ldGhvZCkpaWYoaTEoYy5vcHRpb25zLmJvZHkpKXtjb25zdCBwPWMub3B0aW9ucy5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIik7dHlwZW9mIGMub3B0aW9ucy5ib2R5IT0ic3RyaW5nIiYmKGMub3B0aW9ucy5ib2R5PXA9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIj9uZXcgVVJMU2VhcmNoUGFyYW1zKGMub3B0aW9ucy5ib2R5KS50b1N0cmluZygpOkpTT04uc3RyaW5naWZ5KGMub3B0aW9ucy5ib2R5KSkscHx8Yy5vcHRpb25zLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIiksYy5vcHRpb25zLmhlYWRlcnMuaGFzKCJhY2NlcHQiKXx8Yy5vcHRpb25zLmhlYWRlcnMuc2V0KCJhY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIil9ZWxzZSgicGlwZVRvImluIGMub3B0aW9ucy5ib2R5JiZ0eXBlb2YgYy5vcHRpb25zLmJvZHkucGlwZVRvPT0iZnVuY3Rpb24ifHx0eXBlb2YgYy5vcHRpb25zLmJvZHkucGlwZT09ImZ1bmN0aW9uIikmJigiZHVwbGV4ImluIGMub3B0aW9uc3x8KGMub3B0aW9ucy5kdXBsZXg9ImhhbGYiKSk7bGV0IGY7aWYoIWMub3B0aW9ucy5zaWduYWwmJmMub3B0aW9ucy50aW1lb3V0KXtjb25zdCBwPW5ldyByO2Y9c2V0VGltZW91dCgoKT0+e2NvbnN0IG09bmV3IEVycm9yKCJbVGltZW91dEVycm9yXTogVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZCBkdWUgdG8gdGltZW91dCIpO20ubmFtZT0iVGltZW91dEVycm9yIixtLmNvZGU9MjMscC5hYm9ydChtKX0sYy5vcHRpb25zLnRpbWVvdXQpLGMub3B0aW9ucy5zaWduYWw9cC5zaWduYWx9dHJ5e2MucmVzcG9uc2U9YXdhaXQgdChjLnJlcXVlc3QsYy5vcHRpb25zKX1jYXRjaChwKXtyZXR1cm4gYy5lcnJvcj1wLGMub3B0aW9ucy5vblJlcXVlc3RFcnJvciYmYXdhaXQgcmEoYyxjLm9wdGlvbnMub25SZXF1ZXN0RXJyb3IpLGF3YWl0IG8oYyl9ZmluYWxseXtmJiZjbGVhclRpbWVvdXQoZil9aWYoKGMucmVzcG9uc2UuYm9keXx8Yy5yZXNwb25zZS5fYm9keUluaXQpJiYhcDEuaGFzKGMucmVzcG9uc2Uuc3RhdHVzKSYmYy5vcHRpb25zLm1ldGhvZCE9PSJIRUFEIil7Y29uc3QgcD0oYy5vcHRpb25zLnBhcnNlUmVzcG9uc2U/Impzb24iOmMub3B0aW9ucy5yZXNwb25zZVR5cGUpfHxjMShjLnJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKXx8IiIpO3N3aXRjaChwKXtjYXNlImpzb24iOntjb25zdCBtPWF3YWl0IGMucmVzcG9uc2UudGV4dCgpLHk9Yy5vcHRpb25zLnBhcnNlUmVzcG9uc2V8fFBTO2MucmVzcG9uc2UuX2RhdGE9eShtKTticmVha31jYXNlInN0cmVhbSI6e2MucmVzcG9uc2UuX2RhdGE9Yy5yZXNwb25zZS5ib2R5fHxjLnJlc3BvbnNlLl9ib2R5SW5pdDticmVha31kZWZhdWx0OmMucmVzcG9uc2UuX2RhdGE9YXdhaXQgYy5yZXNwb25zZVtwXSgpfX1yZXR1cm4gYy5vcHRpb25zLm9uUmVzcG9uc2UmJmF3YWl0IHJhKGMsYy5vcHRpb25zLm9uUmVzcG9uc2UpLCFjLm9wdGlvbnMuaWdub3JlUmVzcG9uc2VFcnJvciYmYy5yZXNwb25zZS5zdGF0dXM+PTQwMCYmYy5yZXNwb25zZS5zdGF0dXM8NjAwPyhjLm9wdGlvbnMub25SZXNwb25zZUVycm9yJiZhd2FpdCByYShjLGMub3B0aW9ucy5vblJlc3BvbnNlRXJyb3IpLGF3YWl0IG8oYykpOmMucmVzcG9uc2V9LGk9YXN5bmMgZnVuY3Rpb24obCx1KXtyZXR1cm4oYXdhaXQgcyhsLHUpKS5fZGF0YX07cmV0dXJuIGkucmF3PXMsaS5uYXRpdmU9KC4uLmEpPT50KC4uLmEpLGkuY3JlYXRlPShhPXt9LGw9e30pPT5SeSh7Li4uZSwuLi5sLGRlZmF1bHRzOnsuLi5lLmRlZmF1bHRzLC4uLmwuZGVmYXVsdHMsLi4uYX19KSxpfWNvbnN0IEdhPShmdW5jdGlvbigpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPCJ1IilyZXR1cm4gZ2xvYmFsVGhpcztpZih0eXBlb2Ygc2VsZjwidSIpcmV0dXJuIHNlbGY7aWYodHlwZW9mIHdpbmRvdzwidSIpcmV0dXJuIHdpbmRvdztpZih0eXBlb2YgZ2xvYmFsPCJ1IilyZXR1cm4gZ2xvYmFsO3Rocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGxvY2F0ZSBnbG9iYWwgb2JqZWN0Iil9KSgpLG0xPUdhLmZldGNoPyguLi5lKT0+R2EuZmV0Y2goLi4uZSk6KCk9PlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiW29mZXRjaF0gZ2xvYmFsLmZldGNoIGlzIG5vdCBzdXBwb3J0ZWQhIikpLGgxPUdhLkhlYWRlcnMsZzE9R2EuQWJvcnRDb250cm9sbGVyLHkxPVJ5KHtmZXRjaDptMSxIZWFkZXJzOmgxLEFib3J0Q29udHJvbGxlcjpnMX0pLE55PXkxLHYxPSgpPT53aW5kb3c/Ll9fTlVYVF9fPy5jb25maWd8fHdpbmRvdz8udXNlTnV4dEFwcD8uKCkucGF5bG9hZD8uY29uZmlnLFBmPSgpPT52MSgpLmFwcCxiMT0oKT0+UGYoKS5iYXNlVVJMLHcxPSgpPT5QZigpLmJ1aWxkQXNzZXRzRGlyLElmPSguLi5lKT0+T3koRHkoKSx3MSgpLC4uLmUpLER5PSguLi5lKT0+e2NvbnN0IHQ9UGYoKSxuPXQuY2RuVVJMfHx0LmJhc2VVUkw7cmV0dXJuIGUubGVuZ3RoP095KG4sLi4uZSk6bn07Z2xvYmFsVGhpcy5fX2J1aWxkQXNzZXRzVVJMPUlmLGdsb2JhbFRoaXMuX19wdWJsaWNBc3NldHNVUkw9RHk7Z2xvYmFsVGhpcy4kZmV0Y2h8fChnbG9iYWxUaGlzLiRmZXRjaD1OeS5jcmVhdGUoe2Jhc2VVUkw6YjEoKX0pKTsiZ2xvYmFsImluIGdsb2JhbFRoaXN8fChnbG9iYWxUaGlzLmdsb2JhbD1nbG9iYWxUaGlzKTtmdW5jdGlvbiBwdShlLHQ9e30sbil7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdLHM9bj9gJHtufToke3J9YDpyO3R5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGw/cHUobyx0LHMpOnR5cGVvZiBvPT0iZnVuY3Rpb24iJiYodFtzXT1vKX1yZXR1cm4gdH1jb25zdCBMeT0oKCk9PntpZihjb25zb2xlLmNyZWF0ZVRhc2spcmV0dXJuIGNvbnNvbGUuY3JlYXRlVGFzaztjb25zdCBlPXtydW46dD0+dCgpfTtyZXR1cm4oKT0+ZX0pKCk7ZnVuY3Rpb24gJHkoZSx0LG4scil7Zm9yKGxldCBvPW47bzxlLmxlbmd0aDtvKz0xKXRyeXtjb25zdCBzPXI/ci5ydW4oKCk9PmVbb10oLi4udCkpOmVbb10oLi4udCk7aWYocyYmdHlwZW9mIHMudGhlbj09ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4oKCk9PiR5KGUsdCxvKzEscikpfWNhdGNoKHMpe3JldHVybiBQcm9taXNlLnJlamVjdChzKX19ZnVuY3Rpb24gXzEoZSx0LG4pe2lmKGUubGVuZ3RoPjApcmV0dXJuICR5KGUsdCwwLEx5KG4pKX1mdW5jdGlvbiB4MShlLHQsbil7aWYoZS5sZW5ndGg+MCl7Y29uc3Qgcj1MeShuKTtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAobz0+ci5ydW4oKCk9Pm8oLi4udCkpKSl9fWZ1bmN0aW9uIHdjKGUsdCl7Zm9yKGNvbnN0IG4gb2ZbLi4uZV0pbih0KX12YXIgUzE9Y2xhc3N7X2hvb2tzO19iZWZvcmU7X2FmdGVyO19kZXByZWNhdGVkSG9va3M7X2RlcHJlY2F0ZWRNZXNzYWdlcztjb25zdHJ1Y3Rvcigpe3RoaXMuX2hvb2tzPXt9LHRoaXMuX2JlZm9yZT12b2lkIDAsdGhpcy5fYWZ0ZXI9dm9pZCAwLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcz12b2lkIDAsdGhpcy5fZGVwcmVjYXRlZEhvb2tzPXt9LHRoaXMuaG9vaz10aGlzLmhvb2suYmluZCh0aGlzKSx0aGlzLmNhbGxIb29rPXRoaXMuY2FsbEhvb2suYmluZCh0aGlzKSx0aGlzLmNhbGxIb29rV2l0aD10aGlzLmNhbGxIb29rV2l0aC5iaW5kKHRoaXMpfWhvb2soZSx0LG49e30pe2lmKCFlfHx0eXBlb2YgdCE9ImZ1bmN0aW9uIilyZXR1cm4oKT0+e307Y29uc3Qgcj1lO2xldCBvO2Zvcig7dGhpcy5fZGVwcmVjYXRlZEhvb2tzW2VdOylvPXRoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXSxlPW8udG87aWYobyYmIW4uYWxsb3dEZXByZWNhdGVkKXtsZXQgcz1vLm1lc3NhZ2U7c3x8KHM9YCR7cn0gaG9vayBoYXMgYmVlbiBkZXByZWNhdGVkYCsoby50bz9gLCBwbGVhc2UgdXNlICR7by50b31gOiIiKSksdGhpcy5fZGVwcmVjYXRlZE1lc3NhZ2VzfHwodGhpcy5fZGVwcmVjYXRlZE1lc3NhZ2VzPW5ldyBTZXQpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5oYXMocyl8fHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5hZGQocyl9aWYoIXQubmFtZSl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIm5hbWUiLHtnZXQ6KCk9PiJfIitlLnJlcGxhY2UoL1xXKy9nLCJfIikrIl9ob29rX2NiIixjb25maWd1cmFibGU6ITB9KX1jYXRjaHt9cmV0dXJuIHRoaXMuX2hvb2tzW2VdPXRoaXMuX2hvb2tzW2VdfHxbXSx0aGlzLl9ob29rc1tlXS5wdXNoKHQpLCgpPT57dCYmKHRoaXMucmVtb3ZlSG9vayhlLHQpLHQ9dm9pZCAwKX19aG9va09uY2UoZSx0KXtsZXQgbixyPSguLi5vKT0+KHR5cGVvZiBuPT0iZnVuY3Rpb24iJiZuKCksbj12b2lkIDAscj12b2lkIDAsdCguLi5vKSk7cmV0dXJuIG49dGhpcy5ob29rKGUsciksbn1yZW1vdmVIb29rKGUsdCl7Y29uc3Qgbj10aGlzLl9ob29rc1tlXTtpZihuKXtjb25zdCByPW4uaW5kZXhPZih0KTtyIT09LTEmJm4uc3BsaWNlKHIsMSksbi5sZW5ndGg9PT0wJiYodGhpcy5faG9va3NbZV09dm9pZCAwKX19Y2xlYXJIb29rKGUpe3RoaXMuX2hvb2tzW2VdPXZvaWQgMH1kZXByZWNhdGVIb29rKGUsdCl7dGhpcy5fZGVwcmVjYXRlZEhvb2tzW2VdPXR5cGVvZiB0PT0ic3RyaW5nIj97dG86dH06dDtjb25zdCBuPXRoaXMuX2hvb2tzW2VdfHxbXTt0aGlzLl9ob29rc1tlXT12b2lkIDA7Zm9yKGNvbnN0IHIgb2Ygbil0aGlzLmhvb2soZSxyKX1kZXByZWNhdGVIb29rcyhlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuZGVwcmVjYXRlSG9vayh0LGVbdF0pfWFkZEhvb2tzKGUpe2NvbnN0IHQ9cHUoZSksbj1PYmplY3Qua2V5cyh0KS5tYXAocj0+dGhpcy5ob29rKHIsdFtyXSkpO3JldHVybigpPT57Zm9yKGNvbnN0IHIgb2YgbilyKCk7bi5sZW5ndGg9MH19cmVtb3ZlSG9va3MoZSl7Y29uc3QgdD1wdShlKTtmb3IoY29uc3QgbiBpbiB0KXRoaXMucmVtb3ZlSG9vayhuLHRbbl0pfXJlbW92ZUFsbEhvb2tzKCl7dGhpcy5faG9va3M9e319Y2FsbEhvb2soZSwuLi50KXtyZXR1cm4gdGhpcy5jYWxsSG9va1dpdGgoXzEsZSx0KX1jYWxsSG9va1BhcmFsbGVsKGUsLi4udCl7cmV0dXJuIHRoaXMuY2FsbEhvb2tXaXRoKHgxLGUsdCl9Y2FsbEhvb2tXaXRoKGUsdCxuKXtjb25zdCByPXRoaXMuX2JlZm9yZXx8dGhpcy5fYWZ0ZXI/e25hbWU6dCxhcmdzOm4sY29udGV4dDp7fX06dm9pZCAwO3RoaXMuX2JlZm9yZSYmd2ModGhpcy5fYmVmb3JlLHIpO2NvbnN0IG89ZSh0aGlzLl9ob29rc1t0XT9bLi4udGhpcy5faG9va3NbdF1dOltdLG4sdCk7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28uZmluYWxseSgoKT0+e3RoaXMuX2FmdGVyJiZyJiZ3Yyh0aGlzLl9hZnRlcixyKX0pOih0aGlzLl9hZnRlciYmciYmd2ModGhpcy5fYWZ0ZXIsciksbyl9YmVmb3JlRWFjaChlKXtyZXR1cm4gdGhpcy5fYmVmb3JlPXRoaXMuX2JlZm9yZXx8W10sdGhpcy5fYmVmb3JlLnB1c2goZSksKCk9PntpZih0aGlzLl9iZWZvcmUhPT12b2lkIDApe2NvbnN0IHQ9dGhpcy5fYmVmb3JlLmluZGV4T2YoZSk7dCE9PS0xJiZ0aGlzLl9iZWZvcmUuc3BsaWNlKHQsMSl9fX1hZnRlckVhY2goZSl7cmV0dXJuIHRoaXMuX2FmdGVyPXRoaXMuX2FmdGVyfHxbXSx0aGlzLl9hZnRlci5wdXNoKGUpLCgpPT57aWYodGhpcy5fYWZ0ZXIhPT12b2lkIDApe2NvbnN0IHQ9dGhpcy5fYWZ0ZXIuaW5kZXhPZihlKTt0IT09LTEmJnRoaXMuX2FmdGVyLnNwbGljZSh0LDEpfX19fTtmdW5jdGlvbiBNeSgpe3JldHVybiBuZXcgUzF9ZnVuY3Rpb24gazEoZT17fSl7bGV0IHQsbj0hMTtjb25zdCByPWk9PntpZih0JiZ0IT09aSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgY29uZmxpY3QiKX07bGV0IG87aWYoZS5hc3luY0NvbnRleHQpe2NvbnN0IGk9ZS5Bc3luY0xvY2FsU3RvcmFnZXx8Z2xvYmFsVGhpcy5Bc3luY0xvY2FsU3RvcmFnZTtpJiYobz1uZXcgaSl9Y29uc3Qgcz0oKT0+e2lmKG8pe2NvbnN0IGk9by5nZXRTdG9yZSgpO2lmKGkhPT12b2lkIDApcmV0dXJuIGl9cmV0dXJuIHR9O3JldHVybnt1c2U6KCk9Pntjb25zdCBpPXMoKTtpZihpPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBpcyBub3QgYXZhaWxhYmxlIik7cmV0dXJuIGl9LHRyeVVzZTooKT0+cygpLHNldDooaSxhKT0+e2F8fHIoaSksdD1pLG49ITB9LHVuc2V0OigpPT57dD12b2lkIDAsbj0hMX0sY2FsbDooaSxhKT0+e3IoaSksdD1pO3RyeXtyZXR1cm4gbz9vLnJ1bihpLGEpOmEoKX1maW5hbGx5e258fCh0PXZvaWQgMCl9fSxhc3luYyBjYWxsQXN5bmMoaSxhKXt0PWk7Y29uc3QgbD0oKT0+e3Q9aX0sdT0oKT0+dD09PWk/bDp2b2lkIDA7bXUuYWRkKHUpO3RyeXtjb25zdCBjPW8/by5ydW4oaSxhKTphKCk7cmV0dXJuIG58fCh0PXZvaWQgMCksYXdhaXQgY31maW5hbGx5e211LmRlbGV0ZSh1KX19fX1mdW5jdGlvbiBFMShlPXt9KXtjb25zdCB0PXt9O3JldHVybntnZXQobixyPXt9KXtyZXR1cm4gdFtuXXx8KHRbbl09azEoey4uLmUsLi4ucn0pKSx0W25dfX19Y29uc3QgS2E9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSxUcD0iX191bmN0eF9fIixUMT1LYVtUcF18fChLYVtUcF09RTEoKSksQzE9KGUsdD17fSk9PlQxLmdldChlLHQpLENwPSJfX3VuY3R4X2FzeW5jX2hhbmRsZXJzX18iLG11PUthW0NwXXx8KEthW0NwXT1uZXcgU2V0KTtmdW5jdGlvbiBncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBvIG9mIG11KXtjb25zdCBzPW8oKTtzJiZ0LnB1c2gocyl9Y29uc3Qgbj0oKT0+e2Zvcihjb25zdCBvIG9mIHQpbygpfTtsZXQgcj1lKCk7cmV0dXJuIHImJnR5cGVvZiByPT0ib2JqZWN0IiYmImNhdGNoImluIHImJihyPXIuY2F0Y2gobz0+e3Rocm93IG4oKSxvfSkpLFtyLG5dfWNvbnN0IEFwPSExLE9wPSExLEExPSExLFBwPXtpZDoiX19udXh0LWxvYWRlciJ9LE8xPXtjb21wb25lbnROYW1lOiJOdXh0TGluayIscHJlZmV0Y2g6ITAscHJlZmV0Y2hPbjp7dmlzaWJpbGl0eTohMH19LFAxPXtkZWVwOiExfSxJMT17fSxSMT0iI19fbnV4dCIsQnk9Im51eHQtYXBwIixJcD0zNmU1LE4xPSJ2aXRlOnByZWxvYWRFcnJvciI7ZnVuY3Rpb24gcXkoZT1CeSl7cmV0dXJuIEMxKGUse2FzeW5jQ29udGV4dDohMX0pfWNvbnN0IEQxPSJfX251eHRfcGx1Z2luIjtmdW5jdGlvbiBMMShlKXtsZXQgdD0wO2NvbnN0IG49e19pZDplLmlkfHxCeXx8Im51eHQtYXBwIixfc2NvcGU6TmkoKSxwcm92aWRlOnZvaWQgMCx2ZXJzaW9uczp7Z2V0IG51eHQoKXtyZXR1cm4iNC40LjIifSxnZXQgdnVlKCl7cmV0dXJuIG4udnVlQXBwLnZlcnNpb259fSxwYXlsb2FkOlBuKHsuLi5lLnNzckNvbnRleHQ/LnBheWxvYWR8fHt9LGRhdGE6UG4oe30pLHN0YXRlOmJ0KHt9KSxvbmNlOm5ldyBTZXQsX2Vycm9yczpQbih7fSl9KSxzdGF0aWM6e2RhdGE6e319LHJ1bldpdGhDb250ZXh0KG8pe3JldHVybiBuLl9zY29wZS5hY3RpdmUmJiFxcigpP24uX3Njb3BlLnJ1bigoKT0+UnAobixvKSk6UnAobixvKX0saXNIeWRyYXRpbmc6ITAsZGVmZXJIeWRyYXRpb24oKXtpZighbi5pc0h5ZHJhdGluZylyZXR1cm4oKT0+e307dCsrO2xldCBvPSExO3JldHVybigpPT57aWYoIW8mJihvPSEwLHQtLSx0PT09MCkpcmV0dXJuIG4uaXNIeWRyYXRpbmc9ITEsbi5jYWxsSG9vaygiYXBwOnN1c3BlbnNlOnJlc29sdmUiKX19LF9hc3luY0RhdGFQcm9taXNlczp7fSxfYXN5bmNEYXRhOlBuKHt9KSxfc3RhdGU6UG4oe30pLF9wYXlsb2FkUmV2aXZlcnM6e30sLi4uZX07e2NvbnN0IG89d2luZG93Ll9fTlVYVF9fO2lmKG8pZm9yKGNvbnN0IHMgaW4gbylzd2l0Y2gocyl7Y2FzZSJkYXRhIjpjYXNlInN0YXRlIjpjYXNlIl9lcnJvcnMiOk9iamVjdC5hc3NpZ24obi5wYXlsb2FkW3NdLG9bc10pO2JyZWFrO2RlZmF1bHQ6bi5wYXlsb2FkW3NdPW9bc119fW4uaG9va3M9TXkoKSxuLmhvb2s9bi5ob29rcy5ob29rO3tjb25zdCBvPW4uaG9va3MuY2FsbEhvb2s7bi5ob29rcy5jYWxsSG9vaz0ocywuLi5pKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+byhzLC4uLmkpKX1uLmNhbGxIb29rPW4uaG9va3MuY2FsbEhvb2ssbi5wcm92aWRlPShvLHMpPT57Y29uc3QgaT0iJCIrbztvYShuLGkscyksb2Eobi52dWVBcHAuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsaSxzKX0sb2Eobi52dWVBcHAsIiRudXh0IixuKSxvYShuLnZ1ZUFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywiJG51eHQiLG4pO3t3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihOMSxzPT57bi5jYWxsSG9vaygiYXBwOmNodW5rRXJyb3IiLHtlcnJvcjpzLnBheWxvYWR9KSxzLnBheWxvYWQubWVzc2FnZS5pbmNsdWRlcygiVW5hYmxlIHRvIHByZWxvYWQgQ1NTIikmJnMucHJldmVudERlZmF1bHQoKX0pLHdpbmRvdy51c2VOdXh0QXBwfHw9QmU7Y29uc3Qgbz1uLmhvb2soImFwcDplcnJvciIsKC4uLnMpPT57fSk7bi5ob29rKCJhcHA6bW91bnRlZCIsbyl9Y29uc3Qgcj1uLnBheWxvYWQuY29uZmlnO3JldHVybiBuLnByb3ZpZGUoImNvbmZpZyIsciksbn1mdW5jdGlvbiAkMShlLHQpe3QuaG9va3MmJmUuaG9va3MuYWRkSG9va3ModC5ob29rcyl9YXN5bmMgZnVuY3Rpb24gTTEoZSx0KXtpZih0eXBlb2YgdD09ImZ1bmN0aW9uIil7Y29uc3R7cHJvdmlkZTpufT1hd2FpdCBlLnJ1bldpdGhDb250ZXh0KCgpPT50KGUpKXx8e307aWYobiYmdHlwZW9mIG49PSJvYmplY3QiKWZvcihjb25zdCByIGluIG4pZS5wcm92aWRlKHIsbltyXSl9fWFzeW5jIGZ1bmN0aW9uIEIxKGUsdCl7Y29uc3Qgbj1uZXcgU2V0LHI9W10sbz1bXTtsZXQgcyxpPTA7YXN5bmMgZnVuY3Rpb24gYShsKXtjb25zdCB1PWwuZGVwZW5kc09uPy5maWx0ZXIoYz0+dC5zb21lKGY9PmYuX25hbWU9PT1jKSYmIW4uaGFzKGMpKT8/W107aWYodS5sZW5ndGg+MClyLnB1c2goW25ldyBTZXQodSksbF0pO2Vsc2V7Y29uc3QgYz1NMShlLGwpLnRoZW4oYXN5bmMoKT0+e2wuX25hbWUmJihuLmFkZChsLl9uYW1lKSxhd2FpdCBQcm9taXNlLmFsbChyLm1hcChhc3luYyhbZixkXSk9PntmLmhhcyhsLl9uYW1lKSYmKGYuZGVsZXRlKGwuX25hbWUpLGYuc2l6ZT09PTAmJihpKyssYXdhaXQgYShkKSkpfSkpKX0pLmNhdGNoKGY9PntpZighbC5wYXJhbGxlbCYmIWUucGF5bG9hZC5lcnJvcil0aHJvdyBmO3N8fD1mfSk7bC5wYXJhbGxlbD9vLnB1c2goYyk6YXdhaXQgY319Zm9yKGNvbnN0IGwgb2YgdCkkMShlLGwpO2Zvcihjb25zdCBsIG9mIHQpYXdhaXQgYShsKTtpZihhd2FpdCBQcm9taXNlLmFsbChvKSxpKWZvcihsZXQgbD0wO2w8aTtsKyspYXdhaXQgUHJvbWlzZS5hbGwobyk7aWYocyl0aHJvdyBlLnBheWxvYWQuZXJyb3J8fHN9ZnVuY3Rpb24gbHQoZSl7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIGU7Y29uc3QgdD1lLl9uYW1lfHxlLm5hbWU7cmV0dXJuIGRlbGV0ZSBlLm5hbWUsT2JqZWN0LmFzc2lnbihlLnNldHVwfHwoKCk9Pnt9KSxlLHtbRDFdOiEwLF9uYW1lOnR9KX1jb25zdCBxMT1sdDtmdW5jdGlvbiBScChlLHQsbil7Y29uc3Qgcj0oKT0+dCgpO3JldHVybiBxeShlLl9pZCkuc2V0KGUpLGUudnVlQXBwLnJ1bldpdGhDb250ZXh0KHIpfWZ1bmN0aW9uIEYxKGUpe2xldCB0O3JldHVybiBMaSgpJiYodD1tdCgpPy5hcHBDb250ZXh0LmFwcC4kbnV4dCksdHx8PXF5KGUpLnRyeVVzZSgpLHR8fG51bGx9ZnVuY3Rpb24gQmUoZSl7Y29uc3QgdD1GMShlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIltudXh0XSBpbnN0YW5jZSB1bmF2YWlsYWJsZSIpO3JldHVybiB0fWZ1bmN0aW9uIGZvKGUpe3JldHVybiBCZSgpLiRjb25maWd9ZnVuY3Rpb24gb2EoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldDooKT0+bn0pfWZ1bmN0aW9uIF9jKGUpe2lmKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuITE7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQhPT1udWxsJiZ0IT09T2JqZWN0LnByb3RvdHlwZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpIT09bnVsbHx8U3ltYm9sLml0ZXJhdG9yIGluIGU/ITE6U3ltYm9sLnRvU3RyaW5nVGFnIGluIGU/T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09IltvYmplY3QgTW9kdWxlXSI6ITB9ZnVuY3Rpb24gaHUoZSx0LG49Ii4iLHIpe2lmKCFfYyh0KSlyZXR1cm4gaHUoZSx7fSxuLHIpO2NvbnN0IG89ey4uLnR9O2Zvcihjb25zdCBzIG9mIE9iamVjdC5rZXlzKGUpKXtpZihzPT09Il9fcHJvdG9fXyJ8fHM9PT0iY29uc3RydWN0b3IiKWNvbnRpbnVlO2NvbnN0IGk9ZVtzXTtpIT1udWxsJiYociYmcihvLHMsaSxuKXx8KEFycmF5LmlzQXJyYXkoaSkmJkFycmF5LmlzQXJyYXkob1tzXSk/b1tzXT1bLi4uaSwuLi5vW3NdXTpfYyhpKSYmX2Mob1tzXSk/b1tzXT1odShpLG9bc10sKG4/YCR7bn0uYDoiIikrcy50b1N0cmluZygpLHIpOm9bc109aSkpfXJldHVybiBvfWZ1bmN0aW9uIEZ5KGUpe3JldHVybiguLi50KT0+dC5yZWR1Y2UoKG4scik9Pmh1KG4sciwiIixlKSx7fSl9Y29uc3QgbW49RnkoKSx6MT1GeSgoZSx0LG4pPT57aWYoZVt0XSE9PXZvaWQgMCYmdHlwZW9mIG49PSJmdW5jdGlvbiIpcmV0dXJuIGVbdF09bihlW3RdKSwhMH0pO2Z1bmN0aW9uIGoxKGUsdCl7dHJ5e3JldHVybiB0IGluIGV9Y2F0Y2h7cmV0dXJuITF9fWNsYXNzIE5wIGV4dGVuZHMgRXJyb3J7c3RhdGljIF9faDNfZXJyb3JfXz0hMDtzdGF0dXNDb2RlPTUwMDtmYXRhbD0hMTt1bmhhbmRsZWQ9ITE7c3RhdHVzTWVzc2FnZTtkYXRhO2NhdXNlO2NvbnN0cnVjdG9yKHQsbj17fSl7c3VwZXIodCxuKSxuLmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9bi5jYXVzZSl9dG9KU09OKCl7Y29uc3QgdD17bWVzc2FnZTp0aGlzLm1lc3NhZ2Usc3RhdHVzQ29kZTpndSh0aGlzLnN0YXR1c0NvZGUsNTAwKX07cmV0dXJuIHRoaXMuc3RhdHVzTWVzc2FnZSYmKHQuc3RhdHVzTWVzc2FnZT16eSh0aGlzLnN0YXR1c01lc3NhZ2UpKSx0aGlzLmRhdGEhPT12b2lkIDAmJih0LmRhdGE9dGhpcy5kYXRhKSx0fX1mdW5jdGlvbiBWMShlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIG5ldyBOcChlKTtpZihVMShlKSlyZXR1cm4gZTtjb25zdCB0PW5ldyBOcChlLm1lc3NhZ2U/P2Uuc3RhdHVzTWVzc2FnZT8/IiIse2NhdXNlOmUuY2F1c2V8fGV9KTtpZihqMShlLCJzdGFjayIpKXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic3RhY2siLHtnZXQoKXtyZXR1cm4gZS5zdGFja319KX1jYXRjaHt0cnl7dC5zdGFjaz1lLnN0YWNrfWNhdGNoe319aWYoZS5kYXRhJiYodC5kYXRhPWUuZGF0YSksZS5zdGF0dXNDb2RlP3Quc3RhdHVzQ29kZT1ndShlLnN0YXR1c0NvZGUsdC5zdGF0dXNDb2RlKTplLnN0YXR1cyYmKHQuc3RhdHVzQ29kZT1ndShlLnN0YXR1cyx0LnN0YXR1c0NvZGUpKSxlLnN0YXR1c01lc3NhZ2U/dC5zdGF0dXNNZXNzYWdlPWUuc3RhdHVzTWVzc2FnZTplLnN0YXR1c1RleHQmJih0LnN0YXR1c01lc3NhZ2U9ZS5zdGF0dXNUZXh0KSx0LnN0YXR1c01lc3NhZ2Upe2NvbnN0IG49dC5zdGF0dXNNZXNzYWdlLHI9enkodC5zdGF0dXNNZXNzYWdlKX1yZXR1cm4gZS5mYXRhbCE9PXZvaWQgMCYmKHQuZmF0YWw9ZS5mYXRhbCksZS51bmhhbmRsZWQhPT12b2lkIDAmJih0LnVuaGFuZGxlZD1lLnVuaGFuZGxlZCksdH1mdW5jdGlvbiBVMShlKXtyZXR1cm4gZT8uY29uc3RydWN0b3I/Ll9faDNfZXJyb3JfXz09PSEwfWNvbnN0IEgxPS9bXlx1MDAwOVx1MDAyMC1cdTAwN0VdL2c7ZnVuY3Rpb24genkoZT0iIil7cmV0dXJuIGUucmVwbGFjZShIMSwiIil9ZnVuY3Rpb24gZ3UoZSx0PTIwMCl7cmV0dXJuIWV8fCh0eXBlb2YgZT09InN0cmluZyImJihlPU51bWJlci5wYXJzZUludChlLDEwKSksZTwxMDB8fGU+OTk5KT90OmV9Y29uc3Qgank9U3ltYm9sKCJsYXlvdXQtbWV0YSIpLHFvPVN5bWJvbCgicm91dGUiKTtmdW5jdGlvbiBXMShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOltlXX1pbXBvcnQubWV0YS51cmwucmVwbGFjZSgvXC9hcHBcLy4qJC8sIi8iKTtjb25zdCBKdD0oKT0+QmUoKT8uJHJvdXRlcixBbD0oKT0+TGkoKT9LZShxbyxCZSgpLl9yb3V0ZSk6QmUoKS5fcm91dGU7Y29uc3QgRzE9KCk9Pnt0cnl7aWYoQmUoKS5fcHJvY2Vzc2luZ01pZGRsZXdhcmUpcmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITF9LEZvPShlLHQpPT57ZXx8PSIvIjtjb25zdCBuPXR5cGVvZiBlPT0ic3RyaW5nIj9lOiJwYXRoImluIGU/eXUoZSk6SnQoKS5yZXNvbHZlKGUpLmhyZWY7aWYodD8ub3Blbil7Y29uc3R7dGFyZ2V0OnU9Il9ibGFuayIsd2luZG93RmVhdHVyZXM6Yz17fX09dC5vcGVuLGY9W107Zm9yKGNvbnN0W2QscF1vZiBPYmplY3QuZW50cmllcyhjKSlwIT09dm9pZCAwJiZmLnB1c2goYCR7ZC50b0xvd2VyQ2FzZSgpfT0ke3B9YCk7cmV0dXJuIG9wZW4obix1LGYuam9pbigiLCAiKSksUHJvbWlzZS5yZXNvbHZlKCl9Y29uc3Qgcj1ObihuLHthY2NlcHRSZWxhdGl2ZTohMH0pLG89dD8uZXh0ZXJuYWx8fHI7aWYobyl7aWYoIXQ/LmV4dGVybmFsKXRocm93IG5ldyBFcnJvcigiTmF2aWdhdGluZyB0byBhbiBleHRlcm5hbCBVUkwgaXMgbm90IGFsbG93ZWQgYnkgZGVmYXVsdC4gVXNlIGBuYXZpZ2F0ZVRvKHVybCwgeyBleHRlcm5hbDogdHJ1ZSB9KWAuIik7Y29uc3R7cHJvdG9jb2w6dX09bmV3IFVSTChuLHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtpZih1JiZKUyh1KSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBuYXZpZ2F0ZSB0byBhIFVSTCB3aXRoICcke3V9JyBwcm90b2NvbC5gKX1jb25zdCBzPUcxKCk7aWYoIW8mJnMpe2lmKHQ/LnJlcGxhY2Upe2lmKHR5cGVvZiBlPT0ic3RyaW5nIil7Y29uc3R7cGF0aG5hbWU6dSxzZWFyY2g6YyxoYXNoOmZ9PUNsKGUpO3JldHVybntwYXRoOnUsLi4uYyYme3F1ZXJ5Ok9mKGMpfSwuLi5mJiZ7aGFzaDpmfSxyZXBsYWNlOiEwfX1yZXR1cm57Li4uZSxyZXBsYWNlOiEwfX1yZXR1cm4gZX1jb25zdCBpPUp0KCksYT1CZSgpO2lmKG8pcmV0dXJuIGEuX3Njb3BlLnN0b3AoKSx0Py5yZXBsYWNlP2xvY2F0aW9uLnJlcGxhY2Uobik6bG9jYXRpb24uaHJlZj1uLHM/YS5pc0h5ZHJhdGluZz9uZXcgUHJvbWlzZSgoKT0+e30pOiExOlByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGw9dHlwZW9mIGU9PSJzdHJpbmciP1Z5KGUpOmU7cmV0dXJuIHQ/LnJlcGxhY2U/aS5yZXBsYWNlKGwpOmkucHVzaChsKX07ZnVuY3Rpb24geXUoZSl7cmV0dXJuIEN5KGUucGF0aHx8IiIsZS5xdWVyeXx8e30pKyhlLmhhc2h8fCIiKX1mdW5jdGlvbiBWeShlKXtjb25zdCB0PUNsKGUpO3JldHVybiBGUyh6Uyh0LnBhdGhuYW1lKSkrdC5zZWFyY2grdC5oYXNofWNvbnN0IFV5PSJfX251eHRfZXJyb3IiLE9sPSgpPT55dChCZSgpLnBheWxvYWQsImVycm9yIiksQ289ZT0+e2NvbnN0IHQ9c28oZSk7dHJ5e2NvbnN0IG49T2woKTtCZSgpLmhvb2tzLmNhbGxIb29rKCJhcHA6ZXJyb3IiLHQpLG4udmFsdWV8fD10fWNhdGNoe3Rocm93IHR9cmV0dXJuIHR9LEsxPWFzeW5jKGU9e30pPT57Y29uc3QgdD1CZSgpLG49T2woKTt0LmNhbGxIb29rKCJhcHA6ZXJyb3I6Y2xlYXJlZCIsZSksZS5yZWRpcmVjdCYmYXdhaXQgSnQoKS5yZXBsYWNlKGUucmVkaXJlY3QpLG4udmFsdWU9dm9pZCAwfSxIeT1lPT4hIWUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmVXkgaW4gZSxzbz1lPT57dHlwZW9mIGUhPSJzdHJpbmciJiZlLnN0YXR1c1RleHQmJihlLm1lc3NhZ2U/Pz1lLnN0YXR1c1RleHQpO2NvbnN0IHQ9VjEoZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFV5LHt2YWx1ZTohMCxjb25maWd1cmFibGU6ITEsd3JpdGFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic3RhdHVzIix7Z2V0OigpPT50LnN0YXR1c0NvZGUsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInN0YXR1c1RleHQiLHtnZXQ6KCk9PnQuc3RhdHVzTWVzc2FnZSxjb25maWd1cmFibGU6ITB9KSx0fTtsZXQgV3k7Y29uc3Qga3M9ZT0+V3k9ZSxHeT1TeW1ib2woKTtmdW5jdGlvbiB2dShlKXtyZXR1cm4gZSYmdHlwZW9mIGU9PSJvYmplY3QiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT0iW29iamVjdCBPYmplY3RdIiYmdHlwZW9mIGUudG9KU09OIT0iZnVuY3Rpb24ifXZhciB1aTsoZnVuY3Rpb24oZSl7ZS5kaXJlY3Q9ImRpcmVjdCIsZS5wYXRjaE9iamVjdD0icGF0Y2ggb2JqZWN0IixlLnBhdGNoRnVuY3Rpb249InBhdGNoIGZ1bmN0aW9uIn0pKHVpfHwodWk9e30pKTtmdW5jdGlvbiBRMSgpe2NvbnN0IGU9TmkoITApLHQ9ZS5ydW4oKCk9Pkcoe30pKTtsZXQgbj1bXSxyPVtdO2NvbnN0IG89TG8oe2luc3RhbGwocyl7a3Mobyksby5fYT1zLHMucHJvdmlkZShHeSxvKSxzLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRwaW5pYT1vLHIuZm9yRWFjaChpPT5uLnB1c2goaSkpLHI9W119LHVzZShzKXtyZXR1cm4gdGhpcy5fYT9uLnB1c2gocyk6ci5wdXNoKHMpLHRoaXN9LF9wOm4sX2E6bnVsbCxfZTplLF9zOm5ldyBNYXAsc3RhdGU6dH0pO3JldHVybiBvfWNvbnN0IEt5PSgpPT57fTtmdW5jdGlvbiBEcChlLHQsbixyPUt5KXtlLmFkZCh0KTtjb25zdCBvPSgpPT57ZS5kZWxldGUodCkmJnIoKX07cmV0dXJuIW4mJnFyKCkmJlJzKG8pLG99ZnVuY3Rpb24gWG8oZSwuLi50KXtlLmZvckVhY2gobj0+e24oLi4udCl9KX1jb25zdCBZMT1lPT5lKCksTHA9U3ltYm9sKCkseGM9U3ltYm9sKCk7ZnVuY3Rpb24gYnUoZSx0KXtlIGluc3RhbmNlb2YgTWFwJiZ0IGluc3RhbmNlb2YgTWFwP3QuZm9yRWFjaCgobixyKT0+ZS5zZXQocixuKSk6ZSBpbnN0YW5jZW9mIFNldCYmdCBpbnN0YW5jZW9mIFNldCYmdC5mb3JFYWNoKGUuYWRkLGUpO2Zvcihjb25zdCBuIGluIHQpe2lmKCF0Lmhhc093blByb3BlcnR5KG4pKWNvbnRpbnVlO2NvbnN0IHI9dFtuXSxvPWVbbl07dnUobykmJnZ1KHIpJiZlLmhhc093blByb3BlcnR5KG4pJiYhJGUocikmJiFjcihyKT9lW25dPWJ1KG8scik6ZVtuXT1yfXJldHVybiBlfWNvbnN0IEoxPVN5bWJvbCgpO2Z1bmN0aW9uIFgxKGUpe3JldHVybiF2dShlKXx8IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLEoxKX1jb25zdHthc3NpZ246WXJ9PU9iamVjdDtmdW5jdGlvbiBaMShlKXtyZXR1cm4hISgkZShlKSYmZS5lZmZlY3QpfWZ1bmN0aW9uIGVrKGUsdCxuLHIpe2NvbnN0e3N0YXRlOm8sYWN0aW9uczpzLGdldHRlcnM6aX09dCxhPW4uc3RhdGUudmFsdWVbZV07bGV0IGw7ZnVuY3Rpb24gdSgpe2F8fChuLnN0YXRlLnZhbHVlW2VdPW8/bygpOnt9KTtjb25zdCBjPUVuKG4uc3RhdGUudmFsdWVbZV0pO3JldHVybiBZcihjLHMsT2JqZWN0LmtleXMoaXx8e30pLnJlZHVjZSgoZixkKT0+KGZbZF09TG8oTigoKT0+e2tzKG4pO2NvbnN0IHA9bi5fcy5nZXQoZSk7cmV0dXJuIGlbZF0uY2FsbChwLHApfSkpLGYpLHt9KSl9cmV0dXJuIGw9UXkoZSx1LHQsbixyLCEwKSxsfWZ1bmN0aW9uIFF5KGUsdCxuPXt9LHIsbyxzKXtsZXQgaTtjb25zdCBhPVlyKHthY3Rpb25zOnt9fSxuKSxsPXtkZWVwOiEwfTtsZXQgdSxjLGY9bmV3IFNldCxkPW5ldyBTZXQscDtjb25zdCBtPXIuc3RhdGUudmFsdWVbZV07IXMmJiFtJiYoci5zdGF0ZS52YWx1ZVtlXT17fSk7bGV0IHk7ZnVuY3Rpb24gXyhUKXtsZXQgQzt1PWM9ITEsdHlwZW9mIFQ9PSJmdW5jdGlvbiI/KFQoci5zdGF0ZS52YWx1ZVtlXSksQz17dHlwZTp1aS5wYXRjaEZ1bmN0aW9uLHN0b3JlSWQ6ZSxldmVudHM6cH0pOihidShyLnN0YXRlLnZhbHVlW2VdLFQpLEM9e3R5cGU6dWkucGF0Y2hPYmplY3QscGF5bG9hZDpULHN0b3JlSWQ6ZSxldmVudHM6cH0pO2NvbnN0IFA9eT1TeW1ib2woKTtpdCgpLnRoZW4oKCk9Pnt5PT09UCYmKHU9ITApfSksYz0hMCxYbyhmLEMsci5zdGF0ZS52YWx1ZVtlXSl9Y29uc3Qgdz1zP2Z1bmN0aW9uKCl7Y29uc3R7c3RhdGU6Q309bixQPUM/QygpOnt9O3RoaXMuJHBhdGNoKEY9PntZcihGLFApfSl9Okt5O2Z1bmN0aW9uIHYoKXtpLnN0b3AoKSxmLmNsZWFyKCksZC5jbGVhcigpLHIuX3MuZGVsZXRlKGUpfWNvbnN0IGg9KFQsQz0iIik9PntpZihMcCBpbiBUKXJldHVybiBUW3hjXT1DLFQ7Y29uc3QgUD1mdW5jdGlvbigpe2tzKHIpO2NvbnN0IEY9QXJyYXkuZnJvbShhcmd1bWVudHMpLEQ9bmV3IFNldCxXPW5ldyBTZXQ7ZnVuY3Rpb24gTChWKXtELmFkZChWKX1mdW5jdGlvbiBqKFYpe1cuYWRkKFYpfVhvKGQse2FyZ3M6RixuYW1lOlBbeGNdLHN0b3JlOngsYWZ0ZXI6TCxvbkVycm9yOmp9KTtsZXQgSTt0cnl7ST1ULmFwcGx5KHRoaXMmJnRoaXMuJGlkPT09ZT90aGlzOngsRil9Y2F0Y2goVil7dGhyb3cgWG8oVyxWKSxWfXJldHVybiBJIGluc3RhbmNlb2YgUHJvbWlzZT9JLnRoZW4oVj0+KFhvKEQsViksVikpLmNhdGNoKFY9PihYbyhXLFYpLFByb21pc2UucmVqZWN0KFYpKSk6KFhvKEQsSSksSSl9O3JldHVybiBQW0xwXT0hMCxQW3hjXT1DLFB9LGI9e19wOnIsJGlkOmUsJG9uQWN0aW9uOkRwLmJpbmQobnVsbCxkKSwkcGF0Y2g6XywkcmVzZXQ6dywkc3Vic2NyaWJlKFQsQz17fSl7Y29uc3QgUD1EcChmLFQsQy5kZXRhY2hlZCwoKT0+RigpKSxGPWkucnVuKCgpPT5QZSgoKT0+ci5zdGF0ZS52YWx1ZVtlXSxEPT57KEMuZmx1c2g9PT0ic3luYyI/Yzp1KSYmVCh7c3RvcmVJZDplLHR5cGU6dWkuZGlyZWN0LGV2ZW50czpwfSxEKX0sWXIoe30sbCxDKSkpO3JldHVybiBQfSwkZGlzcG9zZTp2fSx4PWJ0KGIpO3IuX3Muc2V0KGUseCk7Y29uc3Qgaz0oci5fYSYmci5fYS5ydW5XaXRoQ29udGV4dHx8WTEpKCgpPT5yLl9lLnJ1bigoKT0+KGk9TmkoKSkucnVuKCgpPT50KHthY3Rpb246aH0pKSkpO2Zvcihjb25zdCBUIGluIGspe2NvbnN0IEM9a1tUXTtpZigkZShDKSYmIVoxKEMpfHxjcihDKSlzfHwobSYmWDEoQykmJigkZShDKT9DLnZhbHVlPW1bVF06YnUoQyxtW1RdKSksci5zdGF0ZS52YWx1ZVtlXVtUXT1DKTtlbHNlIGlmKHR5cGVvZiBDPT0iZnVuY3Rpb24iKXtjb25zdCBQPWgoQyxUKTtrW1RdPVAsYS5hY3Rpb25zW1RdPUN9fXJldHVybiBZcih4LGspLFlyKGplKHgpLGspLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCIkc3RhdGUiLHtnZXQ6KCk9PnIuc3RhdGUudmFsdWVbZV0sc2V0OlQ9PntfKEM9PntZcihDLFQpfSl9fSksci5fcC5mb3JFYWNoKFQ9PntZcih4LGkucnVuKCgpPT5UKHtzdG9yZTp4LGFwcDpyLl9hLHBpbmlhOnIsb3B0aW9uczphfSkpKX0pLG0mJnMmJm4uaHlkcmF0ZSYmbi5oeWRyYXRlKHguJHN0YXRlLG0pLHU9ITAsYz0hMCx4fWZ1bmN0aW9uIFl5KGUsdCxuKXtsZXQgcjtjb25zdCBvPXR5cGVvZiB0PT0iZnVuY3Rpb24iO3I9bz9uOnQ7ZnVuY3Rpb24gcyhpLGEpe2NvbnN0IGw9TGkoKTtyZXR1cm4gaT1pfHwobD9LZShHeSxudWxsKTpudWxsKSxpJiZrcyhpKSxpPVd5LGkuX3MuaGFzKGUpfHwobz9ReShlLHQscixpKTplayhlLHIsaSkpLGkuX3MuZ2V0KGUpfXJldHVybiBzLiRpZD1lLHN9ZnVuY3Rpb24gdGsoZSl7Y29uc3QgdD1yayhlKSxuPW5ldyBBcnJheUJ1ZmZlcih0Lmxlbmd0aCkscj1uZXcgRGF0YVZpZXcobik7Zm9yKGxldCBvPTA7bzxuLmJ5dGVMZW5ndGg7bysrKXIuc2V0VWludDgobyx0LmNoYXJDb2RlQXQobykpO3JldHVybiBufWNvbnN0IG5rPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjtmdW5jdGlvbiByayhlKXtlLmxlbmd0aCU0PT09MCYmKGU9ZS5yZXBsYWNlKC89PT8kLywiIikpO2xldCB0PSIiLG49MCxyPTA7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspbjw8PTYsbnw9bmsuaW5kZXhPZihlW29dKSxyKz02LHI9PT0yNCYmKHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKG4mMTY3MTE2ODApPj4xNiksdCs9U3RyaW5nLmZyb21DaGFyQ29kZSgobiY2NTI4MCk+PjgpLHQrPVN0cmluZy5mcm9tQ2hhckNvZGUobiYyNTUpLG49cj0wKTtyZXR1cm4gcj09PTEyPyhuPj49NCx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTpyPT09MTgmJihuPj49Mix0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKChuJjY1MjgwKT4+OCksdCs9U3RyaW5nLmZyb21DaGFyQ29kZShuJjI1NSkpLHR9Y29uc3Qgb2s9LTEsc2s9LTIsaWs9LTMsYWs9LTQsbGs9LTUsY2s9LTYsdWs9LTc7ZnVuY3Rpb24gZmsoZSx0KXtyZXR1cm4gZGsoSlNPTi5wYXJzZShlKSx0KX1mdW5jdGlvbiBkayhlLHQpe2lmKHR5cGVvZiBlPT0ibnVtYmVyIilyZXR1cm4gcyhlLCEwKTtpZighQXJyYXkuaXNBcnJheShlKXx8ZS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCIpO2NvbnN0IG49ZSxyPUFycmF5KG4ubGVuZ3RoKTtsZXQgbz1udWxsO2Z1bmN0aW9uIHMoaSxhPSExKXtpZihpPT09b2spcmV0dXJuO2lmKGk9PT1paylyZXR1cm4gTmFOO2lmKGk9PT1haylyZXR1cm4gMS8wO2lmKGk9PT1saylyZXR1cm4tMS8wO2lmKGk9PT1jaylyZXR1cm4tMDtpZihhfHx0eXBlb2YgaSE9Im51bWJlciIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0Iik7aWYoaSBpbiByKXJldHVybiByW2ldO2NvbnN0IGw9bltpXTtpZighbHx8dHlwZW9mIGwhPSJvYmplY3QiKXJbaV09bDtlbHNlIGlmKEFycmF5LmlzQXJyYXkobCkpaWYodHlwZW9mIGxbMF09PSJzdHJpbmciKXtjb25zdCB1PWxbMF0sYz10JiZPYmplY3QuaGFzT3duKHQsdSk/dFt1XTp2b2lkIDA7aWYoYyl7bGV0IGY9bFsxXTtpZih0eXBlb2YgZiE9Im51bWJlciImJihmPW4ucHVzaChsWzFdKS0xKSxvPz89bmV3IFNldCxvLmhhcyhmKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY2lyY3VsYXIgcmVmZXJlbmNlIik7cmV0dXJuIG8uYWRkKGYpLHJbaV09YyhzKGYpKSxvLmRlbGV0ZShmKSxyW2ldfXN3aXRjaCh1KXtjYXNlIkRhdGUiOnJbaV09bmV3IERhdGUobFsxXSk7YnJlYWs7Y2FzZSJTZXQiOmNvbnN0IGY9bmV3IFNldDtyW2ldPWY7Zm9yKGxldCB5PTE7eTxsLmxlbmd0aDt5Kz0xKWYuYWRkKHMobFt5XSkpO2JyZWFrO2Nhc2UiTWFwIjpjb25zdCBkPW5ldyBNYXA7cltpXT1kO2ZvcihsZXQgeT0xO3k8bC5sZW5ndGg7eSs9MilkLnNldChzKGxbeV0pLHMobFt5KzFdKSk7YnJlYWs7Y2FzZSJSZWdFeHAiOnJbaV09bmV3IFJlZ0V4cChsWzFdLGxbMl0pO2JyZWFrO2Nhc2UiT2JqZWN0Ijpjb25zdCBwPU9iamVjdChsWzFdKTtpZihPYmplY3QuaGFzT3duKHAsIl9fcHJvdG9fXyIpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBhcnNlIGFuIG9iamVjdCB3aXRoIGEgYF9fcHJvdG9fX2AgcHJvcGVydHkiKTtyW2ldPXA7YnJlYWs7Y2FzZSJCaWdJbnQiOnJbaV09QmlnSW50KGxbMV0pO2JyZWFrO2Nhc2UibnVsbCI6Y29uc3QgbT1PYmplY3QuY3JlYXRlKG51bGwpO3JbaV09bTtmb3IobGV0IHk9MTt5PGwubGVuZ3RoO3krPTIpe2lmKGxbeV09PT0iX19wcm90b19fIil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwYXJzZSBhbiBvYmplY3Qgd2l0aCBhIGBfX3Byb3RvX19gIHByb3BlcnR5Iik7bVtsW3ldXT1zKGxbeSsxXSl9YnJlYWs7Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIkludDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQzMkFycmF5IjpjYXNlIkZsb2F0NjRBcnJheSI6Y2FzZSJCaWdJbnQ2NEFycmF5IjpjYXNlIkJpZ1VpbnQ2NEFycmF5Ijp7aWYobltsWzFdXVswXSE9PSJBcnJheUJ1ZmZlciIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEiKTtjb25zdCB5PWdsb2JhbFRoaXNbdV0sXz1zKGxbMV0pLHc9bmV3IHkoXyk7cltpXT1sWzJdIT09dm9pZCAwP3cuc3ViYXJyYXkobFsyXSxsWzNdKTp3O2JyZWFrfWNhc2UiQXJyYXlCdWZmZXIiOntjb25zdCB5PWxbMV07aWYodHlwZW9mIHkhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBBcnJheUJ1ZmZlciBlbmNvZGluZyIpO2NvbnN0IF89dGsoeSk7cltpXT1fO2JyZWFrfWNhc2UiVGVtcG9yYWwuRHVyYXRpb24iOmNhc2UiVGVtcG9yYWwuSW5zdGFudCI6Y2FzZSJUZW1wb3JhbC5QbGFpbkRhdGUiOmNhc2UiVGVtcG9yYWwuUGxhaW5UaW1lIjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZVRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5Nb250aERheSI6Y2FzZSJUZW1wb3JhbC5QbGFpblllYXJNb250aCI6Y2FzZSJUZW1wb3JhbC5ab25lZERhdGVUaW1lIjp7Y29uc3QgeT11LnNsaWNlKDkpO3JbaV09VGVtcG9yYWxbeV0uZnJvbShsWzFdKTticmVha31jYXNlIlVSTCI6e2NvbnN0IHk9bmV3IFVSTChsWzFdKTtyW2ldPXk7YnJlYWt9Y2FzZSJVUkxTZWFyY2hQYXJhbXMiOntjb25zdCB5PW5ldyBVUkxTZWFyY2hQYXJhbXMobFsxXSk7cltpXT15O2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgJHt1fWApfX1lbHNlIGlmKGxbMF09PT11ayl7Y29uc3QgdT1sWzFdO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpfHx1PDApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0Iik7Y29uc3QgYz1uZXcgQXJyYXkodSk7cltpXT1jO2ZvcihsZXQgZj0yO2Y8bC5sZW5ndGg7Zis9Mil7Y29uc3QgZD1sW2ZdO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGQpfHxkPDB8fGQ+PXUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0Iik7Y1tkXT1zKGxbZisxXSl9fWVsc2V7Y29uc3QgdT1uZXcgQXJyYXkobC5sZW5ndGgpO3JbaV09dTtmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrPTEpe2NvbnN0IGY9bFtjXTtmIT09c2smJih1W2NdPXMoZikpfX1lbHNle2NvbnN0IHU9e307cltpXT11O2Zvcihjb25zdCBjIG9mIE9iamVjdC5rZXlzKGwpKXtpZihjPT09Il9fcHJvdG9fXyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcGFyc2UgYW4gb2JqZWN0IHdpdGggYSBgX19wcm90b19fYCBwcm9wZXJ0eSIpO2NvbnN0IGY9bFtjXTt1W2NdPXMoZil9fXJldHVybiByW2ldfXJldHVybiBzKDApfWNvbnN0IHBrPW5ldyBTZXQoWyJsaW5rIiwic3R5bGUiLCJzY3JpcHQiLCJub3NjcmlwdCJdKSxtaz1uZXcgU2V0KFsidGl0bGUiLCJ0aXRsZVRlbXBsYXRlIiwic2NyaXB0Iiwic3R5bGUiLCJub3NjcmlwdCJdKSx3dT1uZXcgU2V0KFsiYmFzZSIsIm1ldGEiLCJsaW5rIiwic3R5bGUiLCJzY3JpcHQiLCJub3NjcmlwdCJdKSxoaz1uZXcgU2V0KFsidGl0bGUiLCJiYXNlIiwiaHRtbEF0dHJzIiwiYm9keUF0dHJzIiwibWV0YSIsImxpbmsiLCJzdHlsZSIsInNjcmlwdCIsIm5vc2NyaXB0Il0pLGdrPW5ldyBTZXQoWyJiYXNlIiwidGl0bGUiLCJ0aXRsZVRlbXBsYXRlIiwiYm9keUF0dHJzIiwiaHRtbEF0dHJzIiwidGVtcGxhdGVQYXJhbXMiXSkseWs9bmV3IFNldChbImtleSIsInRhZ1Bvc2l0aW9uIiwidGFnUHJpb3JpdHkiLCJ0YWdEdXBsaWNhdGVTdHJhdGVneSIsImlubmVySFRNTCIsInRleHRDb250ZW50IiwicHJvY2Vzc1RlbXBsYXRlUGFyYW1zIl0pLHZrPW5ldyBTZXQoWyJ0ZW1wbGF0ZVBhcmFtcyIsImh0bWxBdHRycyIsImJvZHlBdHRycyJdKSxiaz1uZXcgU2V0KFsidGhlbWUtY29sb3IiLCJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iLCJvZyIsImFydGljbGUiLCJib29rIiwicHJvZmlsZSIsInR3aXR0ZXIiLCJhdXRob3IiXSksd2s9WyJuYW1lIiwicHJvcGVydHkiLCJodHRwLWVxdWl2Il0sX2s9bmV3IFNldChbInZpZXdwb3J0IiwiZGVzY3JpcHRpb24iLCJrZXl3b3JkcyIsInJvYm90cyJdKTtmdW5jdGlvbiBKeShlKXtjb25zdCB0PWUuc3BsaXQoIjoiKTtyZXR1cm4gdC5sZW5ndGg/YmsuaGFzKHRbMV0pOiExfWZ1bmN0aW9uIF91KGUpe2NvbnN0e3Byb3BzOnQsdGFnOm59PWU7aWYoZ2suaGFzKG4pKXJldHVybiBuO2lmKG49PT0ibGluayImJnQucmVsPT09ImNhbm9uaWNhbCIpcmV0dXJuImNhbm9uaWNhbCI7aWYobj09PSJsaW5rIiYmdC5yZWw9PT0iYWx0ZXJuYXRlIil7Y29uc3Qgcj10LmhyZWZsYW5nfHx0LnR5cGU7aWYocilyZXR1cm5gYWx0ZXJuYXRlOiR7cn1gfWlmKHQuY2hhcnNldClyZXR1cm4iY2hhcnNldCI7aWYoZS50YWc9PT0ibWV0YSIpe2Zvcihjb25zdCByIG9mIHdrKWlmKHRbcl0hPT12b2lkIDApe2NvbnN0IG89dFtyXSxzPW8mJnR5cGVvZiBvPT0ic3RyaW5nIiYmby5pbmNsdWRlcygiOiIpLGk9byYmX2suaGFzKG8pLGw9IShzfHxpKSYmZS5rZXk/YDprZXk6JHtlLmtleX1gOiIiO3JldHVybmAke259OiR7b30ke2x9YH19aWYoZS5rZXkpcmV0dXJuYCR7bn06a2V5OiR7ZS5rZXl9YDtpZih0LmlkKXJldHVybmAke259OmlkOiR7dC5pZH1gO2lmKG49PT0ibGluayImJnQucmVsPT09ImFsdGVybmF0ZSIpcmV0dXJuYGFsdGVybmF0ZToke3QuaHJlZnx8IiJ9YDtpZihtay5oYXMobikpe2NvbnN0IHI9ZS50ZXh0Q29udGVudHx8ZS5pbm5lckhUTUw7aWYocilyZXR1cm5gJHtufTpjb250ZW50OiR7cn1gfX1mdW5jdGlvbiBYeShlKXtjb25zdCB0PWUuX2h8fGUuX2Q7aWYodClyZXR1cm4gdDtjb25zdCBuPWUudGV4dENvbnRlbnR8fGUuaW5uZXJIVE1MO3JldHVybiBufHxgJHtlLnRhZ306JHtPYmplY3QuZW50cmllcyhlLnByb3BzKS5tYXAoKFtyLG9dKT0+YCR7cn06JHtTdHJpbmcobyl9YCkuam9pbigiLCIpfWB9ZnVuY3Rpb24gUWEoZSx0LG4pe3R5cGVvZiBlPT09ImZ1bmN0aW9uIiYmKCFufHxuIT09InRpdGxlVGVtcGxhdGUiJiYhKG5bMF09PT0ibyImJm5bMV09PT0ibiIpKSYmKGU9ZSgpKTtjb25zdCBvPXQ/dChuLGUpOmU7aWYoQXJyYXkuaXNBcnJheShvKSlyZXR1cm4gby5tYXAocz0+UWEocyx0KSk7aWYobz8uY29uc3RydWN0b3I9PT1PYmplY3Qpe2NvbnN0IHM9e307Zm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMobykpc1tpXT1RYShvW2ldLHQsaSk7cmV0dXJuIHN9cmV0dXJuIG99ZnVuY3Rpb24geGsoZSx0KXtjb25zdCBuPWU9PT0ic3R5bGUiP25ldyBNYXA6bmV3IFNldDtmdW5jdGlvbiByKG8pe2lmKG89PW51bGx8fG89PT12b2lkIDApcmV0dXJuO2NvbnN0IHM9U3RyaW5nKG8pLnRyaW0oKTtpZihzKWlmKGU9PT0ic3R5bGUiKXtjb25zdFtpLC4uLmFdPXMuc3BsaXQoIjoiKS5tYXAobD0+bD9sLnRyaW0oKToiIik7aSYmYS5sZW5ndGgmJm4uc2V0KGksYS5qb2luKCI6IikpfWVsc2Ugcy5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKGk9Pm4uYWRkKGkpKX1yZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP2U9PT0ic3R5bGUiP3Quc3BsaXQoIjsiKS5mb3JFYWNoKHIpOnIodCk6QXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2gobz0+cihvKSk6dCYmdHlwZW9mIHQ9PSJvYmplY3QiJiZPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbbyxzXSk9PntzJiZzIT09ImZhbHNlIiYmKGU9PT0ic3R5bGUiP24uc2V0KFN0cmluZyhvKS50cmltKCksU3RyaW5nKHMpKTpyKG8pKX0pLG59ZnVuY3Rpb24gWnkoZSx0KXtpZihlLnByb3BzPWUucHJvcHN8fHt9LCF0KXJldHVybiBlO2lmKGUudGFnPT09InRlbXBsYXRlUGFyYW1zIilyZXR1cm4gZS5wcm9wcz10LGU7Y29uc3Qgbj13dS5oYXMoZS50YWcpfHxlLnRhZz09PSJodG1sQXR0cnMifHxlLnRhZz09PSJib2R5QXR0cnMiO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbcixvXSk9PntpZihyPT09Il9fcHJvdG9fXyJ8fHI9PT0iY29uc3RydWN0b3IifHxyPT09InByb3RvdHlwZSIpcmV0dXJuO2lmKG89PT1udWxsKXtlLnByb3BzW3JdPW51bGw7cmV0dXJufWlmKHI9PT0iY2xhc3MifHxyPT09InN0eWxlIil7ZS5wcm9wc1tyXT14ayhyLG8pO3JldHVybn1pZih5ay5oYXMocikpe2lmKChyPT09InRleHRDb250ZW50Inx8cj09PSJpbm5lckhUTUwiKSYmdHlwZW9mIG89PSJvYmplY3QiKXtsZXQgdT10LnR5cGU7aWYodC50eXBlfHwodT0iYXBwbGljYXRpb24vanNvbiIpLCF1Py5lbmRzV2l0aCgianNvbiIpJiZ1IT09InNwZWN1bGF0aW9ucnVsZXMiKXJldHVybjt0LnR5cGU9dSxlLnByb3BzLnR5cGU9dSxlW3JdPUpTT04uc3RyaW5naWZ5KG8pfWVsc2UgZVtyXT1vO3JldHVybn1jb25zdCBzPXIuc3RhcnRzV2l0aCgiZGF0YS0iKSxpPW4mJiFzP3IudG9Mb3dlckNhc2UoKTpyLGE9U3RyaW5nKG8pLGw9ZS50YWc9PT0ibWV0YSImJmk9PT0iY29udGVudCI7YT09PSJ0cnVlInx8YT09PSIiP2UucHJvcHNbaV09c3x8bD9hOiEwOiFvJiZzJiZhPT09ImZhbHNlIj9lLnByb3BzW2ldPSJmYWxzZSI6byE9PXZvaWQgMCYmKGUucHJvcHNbaV09byl9KSxlfWZ1bmN0aW9uIFNrKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24iP3Q6e1tlPT09InNjcmlwdCJ8fGU9PT0ibm9zY3JpcHQifHxlPT09InN0eWxlIj8iaW5uZXJIVE1MIjoidGV4dENvbnRlbnQiXTp0fSxyPVp5KHt0YWc6ZSxwcm9wczp7fX0sbik7cmV0dXJuIHIua2V5JiZway5oYXMoci50YWcpJiYoci5wcm9wc1siZGF0YS1oaWQiXT1yLl9oPXIua2V5KSxyLnRhZz09PSJzY3JpcHQiJiZ0eXBlb2Ygci5pbm5lckhUTUw9PSJvYmplY3QiJiYoci5pbm5lckhUTUw9SlNPTi5zdHJpbmdpZnkoci5pbm5lckhUTUwpLHIucHJvcHMudHlwZT1yLnByb3BzLnR5cGV8fCJhcHBsaWNhdGlvbi9qc29uIiksQXJyYXkuaXNBcnJheShyLnByb3BzLmNvbnRlbnQpP3IucHJvcHMuY29udGVudC5tYXAobz0+KHsuLi5yLHByb3BzOnsuLi5yLnByb3BzLGNvbnRlbnQ6b319KSk6cn1mdW5jdGlvbiBrayhlLHQpe2lmKCFlKXJldHVybltdO3R5cGVvZiBlPT0iZnVuY3Rpb24iJiYoZT1lKCkpO2NvbnN0IG49KG8scyk9Pntmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKylzPXRbaV0obyxzKTtyZXR1cm4gc307ZT1uKHZvaWQgMCxlKTtjb25zdCByPVtdO3JldHVybiBlPVFhKGUsbiksT2JqZWN0LmVudHJpZXMoZXx8e30pLmZvckVhY2goKFtvLHNdKT0+e2lmKHMhPT12b2lkIDApZm9yKGNvbnN0IGkgb2YgQXJyYXkuaXNBcnJheShzKT9zOltzXSlyLnB1c2goU2sobyxpKSl9KSxyLmZsYXQoKX1jb25zdCAkcD0oZSx0KT0+ZS5fdz09PXQuX3c/ZS5fcC10Ll9wOmUuX3ctdC5fdyxNcD17YmFzZTotMTAsdGl0bGU6MTB9LEVrPXtjcml0aWNhbDotOCxoaWdoOi0xLGxvdzoyfSxCcD17bWV0YTp7ImNvbnRlbnQtc2VjdXJpdHktcG9saWN5IjotMzAsY2hhcnNldDotMjAsdmlld3BvcnQ6LTE1fSxsaW5rOntwcmVjb25uZWN0OjIwLHN0eWxlc2hlZXQ6NjAscHJlbG9hZDo3MCxtb2R1bGVwcmVsb2FkOjcwLHByZWZldGNoOjkwLCJkbnMtcHJlZmV0Y2giOjkwLHByZXJlbmRlcjo5MH0sc2NyaXB0Onthc3luYzozMCxkZWZlcjo4MCxzeW5jOjUwfSxzdHlsZTp7aW1wb3J0ZWQ6NDAsc3luYzo2MH19LFRrPS9AaW1wb3J0LyxWcz1lPT5lPT09IiJ8fGU9PT0hMDtmdW5jdGlvbiBDayhlLHQpe2lmKHR5cGVvZiB0LnRhZ1ByaW9yaXR5PT0ibnVtYmVyIilyZXR1cm4gdC50YWdQcmlvcml0eTtsZXQgbj0xMDA7Y29uc3Qgcj1Fa1t0LnRhZ1ByaW9yaXR5XXx8MCxvPWUucmVzb2x2ZWRPcHRpb25zLmRpc2FibGVDYXBvU29ydGluZz97bGluazp7fSxzY3JpcHQ6e30sc3R5bGU6e319OkJwO2lmKHQudGFnIGluIE1wKW49TXBbdC50YWddO2Vsc2UgaWYodC50YWc9PT0ibWV0YSIpe2NvbnN0IHM9dC5wcm9wc1siaHR0cC1lcXVpdiJdPT09ImNvbnRlbnQtc2VjdXJpdHktcG9saWN5Ij8iY29udGVudC1zZWN1cml0eS1wb2xpY3kiOnQucHJvcHMuY2hhcnNldD8iY2hhcnNldCI6dC5wcm9wcy5uYW1lPT09InZpZXdwb3J0Ij8idmlld3BvcnQiOm51bGw7cyYmKG49QnAubWV0YVtzXSl9ZWxzZSBpZih0LnRhZz09PSJsaW5rIiYmdC5wcm9wcy5yZWwpbj1vLmxpbmtbdC5wcm9wcy5yZWxdO2Vsc2UgaWYodC50YWc9PT0ic2NyaXB0Iil7Y29uc3Qgcz1TdHJpbmcodC5wcm9wcy50eXBlKTtWcyh0LnByb3BzLmFzeW5jKT9uPW8uc2NyaXB0LmFzeW5jOnQucHJvcHMuc3JjJiYhVnModC5wcm9wcy5kZWZlcikmJiFWcyh0LnByb3BzLmFzeW5jKSYmcyE9PSJtb2R1bGUiJiYhcy5lbmRzV2l0aCgianNvbiIpfHx0LmlubmVySFRNTCYmIXMuZW5kc1dpdGgoImpzb24iKT9uPW8uc2NyaXB0LnN5bmM6KFZzKHQucHJvcHMuZGVmZXIpJiZ0LnByb3BzLnNyYyYmIVZzKHQucHJvcHMuYXN5bmMpfHxzPT09Im1vZHVsZSIpJiYobj1vLnNjcmlwdC5kZWZlcil9ZWxzZSB0LnRhZz09PSJzdHlsZSImJihuPXQuaW5uZXJIVE1MJiZUay50ZXN0KHQuaW5uZXJIVE1MKT9vLnN0eWxlLmltcG9ydGVkOm8uc3R5bGUuc3luYyk7cmV0dXJuKG58fDEwMCkrcn1mdW5jdGlvbiBxcChlLHQpe2NvbnN0IG49dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChlKTp0LHI9bi5rZXl8fFN0cmluZyhlLnBsdWdpbnMuc2l6ZSsxKTtlLnBsdWdpbnMuZ2V0KHIpfHwoZS5wbHVnaW5zLnNldChyLG4pLGUuaG9va3MuYWRkSG9va3Mobi5ob29rc3x8e30pKX1mdW5jdGlvbiBBayhlPXt9KXtjb25zdCB0PU15KCk7dC5hZGRIb29rcyhlLmhvb2tzfHx7fSk7Y29uc3Qgbj0hZS5kb2N1bWVudCxyPW5ldyBNYXAsbz1uZXcgTWFwLHM9bmV3IFNldCxpPXtfZW50cnlDb3VudDoxLHBsdWdpbnM6byxkaXJ0eTohMSxyZXNvbHZlZE9wdGlvbnM6ZSxob29rczp0LHNzcjpuLGVudHJpZXM6cixoZWFkRW50cmllcygpe3JldHVyblsuLi5yLnZhbHVlcygpXX0sdXNlOmE9PnFwKGksYSkscHVzaChhLGwpe2NvbnN0IHU9ey4uLmx8fHt9fTtkZWxldGUgdS5oZWFkO2NvbnN0IGM9dS5faW5kZXg/P2kuX2VudHJ5Q291bnQrKyxmPXtfaTpjLGlucHV0OmEsb3B0aW9uczp1fSxkPXtfcG9sbChwPSExKXtpLmRpcnR5PSEwLCFwJiZzLmFkZChjKSx0LmNhbGxIb29rKCJlbnRyaWVzOnVwZGF0ZWQiLGkpfSxkaXNwb3NlKCl7ci5kZWxldGUoYykmJmkuaW52YWxpZGF0ZSgpfSxwYXRjaChwKXsoIXUubW9kZXx8dS5tb2RlPT09InNlcnZlciImJm58fHUubW9kZT09PSJjbGllbnQiJiYhbikmJihmLmlucHV0PXAsci5zZXQoYyxmKSxkLl9wb2xsKCkpfX07cmV0dXJuIGQucGF0Y2goYSksZH0sYXN5bmMgcmVzb2x2ZVRhZ3MoKXtjb25zdCBhPXt0YWdNYXA6bmV3IE1hcCx0YWdzOltdLGVudHJpZXM6Wy4uLmkuZW50cmllcy52YWx1ZXMoKV19O2Zvcihhd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOnJlc29sdmUiLGEpO3Muc2l6ZTspe2NvbnN0IGQ9cy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7cy5kZWxldGUoZCk7Y29uc3QgcD1yLmdldChkKTtpZihwKXtjb25zdCBtPXt0YWdzOmtrKHAuaW5wdXQsZS5wcm9wUmVzb2x2ZXJzfHxbXSkubWFwKHk9Pk9iamVjdC5hc3NpZ24oeSxwLm9wdGlvbnMpKSxlbnRyeTpwfTthd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOm5vcm1hbGl6ZSIsbSkscC5fdGFncz1tLnRhZ3MubWFwKCh5LF8pPT4oeS5fdz1DayhpLHkpLHkuX3A9KHAuX2k8PDEwKStfLHkuX2Q9X3UoeSkseS5fZHx8KHkuX2g9WHkoeSkpLHkpKX19bGV0IGw9ITE7YS5lbnRyaWVzLmZsYXRNYXAoZD0+KGQuX3RhZ3N8fFtdKS5tYXAocD0+KHsuLi5wLHByb3BzOnsuLi5wLnByb3BzfX0pKSkuc29ydCgkcCkucmVkdWNlKChkLHApPT57Y29uc3QgbT1wLl9kfHxwLl9oO2lmKCFkLmhhcyhtKSlyZXR1cm4gZC5zZXQobSxwKTtjb25zdCB5PWQuZ2V0KG0pO2lmKChwPy50YWdEdXBsaWNhdGVTdHJhdGVneXx8KHZrLmhhcyhwLnRhZyk/Im1lcmdlIjpudWxsKXx8KHAua2V5JiZwLmtleT09PXkua2V5PyJtZXJnZSI6bnVsbCkpPT09Im1lcmdlIil7Y29uc3Qgdz17Li4ueS5wcm9wc307T2JqZWN0LmVudHJpZXMocC5wcm9wcykuZm9yRWFjaCgoW3YsaF0pPT53W3ZdPXY9PT0ic3R5bGUiP25ldyBNYXAoWy4uLnkucHJvcHMuc3R5bGV8fG5ldyBNYXAsLi4uaF0pOnY9PT0iY2xhc3MiP25ldyBTZXQoWy4uLnkucHJvcHMuY2xhc3N8fG5ldyBTZXQsLi4uaF0pOmgpLGQuc2V0KG0sey4uLnAscHJvcHM6d30pfWVsc2UgcC5fcD4+MTA9PT15Ll9wPj4xMCYmcC50YWc9PT0ibWV0YSImJkp5KG0pPyhkLnNldChtLE9iamVjdC5hc3NpZ24oWy4uLkFycmF5LmlzQXJyYXkoeSk/eTpbeV0scF0scCkpLGw9ITApOihwLl93PT09eS5fdz9wLl9wPnkuX3A6cD8uX3c8eT8uX3cpJiZkLnNldChtLHApO3JldHVybiBkfSxhLnRhZ01hcCk7Y29uc3QgdT1hLnRhZ01hcC5nZXQoInRpdGxlIiksYz1hLnRhZ01hcC5nZXQoInRpdGxlVGVtcGxhdGUiKTtpZihpLl90aXRsZT11Py50ZXh0Q29udGVudCxjKXtjb25zdCBkPWM/LnRleHRDb250ZW50O2lmKGkuX3RpdGxlVGVtcGxhdGU9ZCxkKXtsZXQgcD10eXBlb2YgZD09ImZ1bmN0aW9uIj9kKHU/LnRleHRDb250ZW50KTpkO3R5cGVvZiBwPT0ic3RyaW5nIiYmIWkucGx1Z2lucy5oYXMoInRlbXBsYXRlLXBhcmFtcyIpJiYocD1wLnJlcGxhY2UoIiVzIix1Py50ZXh0Q29udGVudHx8IiIpKSx1P3A9PT1udWxsP2EudGFnTWFwLmRlbGV0ZSgidGl0bGUiKTphLnRhZ01hcC5zZXQoInRpdGxlIix7Li4udSx0ZXh0Q29udGVudDpwfSk6KGMudGFnPSJ0aXRsZSIsYy50ZXh0Q29udGVudD1wKX19YS50YWdzPUFycmF5LmZyb20oYS50YWdNYXAudmFsdWVzKCkpLGwmJihhLnRhZ3M9YS50YWdzLmZsYXQoKS5zb3J0KCRwKSksYXdhaXQgdC5jYWxsSG9vaygidGFnczpiZWZvcmVSZXNvbHZlIixhKSxhd2FpdCB0LmNhbGxIb29rKCJ0YWdzOnJlc29sdmUiLGEpLGF3YWl0IHQuY2FsbEhvb2soInRhZ3M6YWZ0ZXJSZXNvbHZlIixhKTtjb25zdCBmPVtdO2Zvcihjb25zdCBkIG9mIGEudGFncyl7Y29uc3R7aW5uZXJIVE1MOnAsdGFnOm0scHJvcHM6eX09ZDtpZihoay5oYXMobSkmJiEoT2JqZWN0LmtleXMoeSkubGVuZ3RoPT09MCYmIWQuaW5uZXJIVE1MJiYhZC50ZXh0Q29udGVudCkmJiEobT09PSJtZXRhIiYmIXkuY29udGVudCYmIXlbImh0dHAtZXF1aXYiXSYmIXkuY2hhcnNldCkpe2lmKG09PT0ic2NyaXB0IiYmcCl7aWYoU3RyaW5nKHkudHlwZSkuZW5kc1dpdGgoImpzb24iKSl7Y29uc3QgXz10eXBlb2YgcD09InN0cmluZyI/cDpKU09OLnN0cmluZ2lmeShwKTtkLmlubmVySFRNTD1fLnJlcGxhY2UoLzwvZywiXFx1MDAzQyIpfWVsc2UgdHlwZW9mIHA9PSJzdHJpbmciJiYoZC5pbm5lckhUTUw9cC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHttfWAsImciKSxgPFxcLyR7bX1gKSk7ZC5fZD1fdShkKX1mLnB1c2goZCl9fXJldHVybiBmfSxpbnZhbGlkYXRlKCl7Zm9yKGNvbnN0IGEgb2Ygci52YWx1ZXMoKSlzLmFkZChhLl9pKTtpLmRpcnR5PSEwLHQuY2FsbEhvb2soImVudHJpZXM6dXBkYXRlZCIsaSl9fTtyZXR1cm4oZT8ucGx1Z2luc3x8W10pLmZvckVhY2goYT0+cXAoaSxhKSksaS5ob29rcy5jYWxsSG9vaygiaW5pdCIsaSksZS5pbml0Py5mb3JFYWNoKGE9PmEmJmkucHVzaChhKSksaX1jb25zdCBPaz0oZSx0KT0+JGUodCk/RWUodCk6dCxSZj0idXNlaGVhZCI7ZnVuY3Rpb24gUGsoZSl7cmV0dXJue2luc3RhbGwobil7bi5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kdW5oZWFkPWUsbi5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kaGVhZD1lLG4ucHJvdmlkZShSZixlKX19Lmluc3RhbGx9ZnVuY3Rpb24gSWsoKXtpZihMaSgpKXtjb25zdCBlPUtlKFJmKTtpZihlKXJldHVybiBlfXRocm93IG5ldyBFcnJvcigidXNlSGVhZCgpIHdhcyBjYWxsZWQgd2l0aG91dCBwcm92aWRlIGNvbnRleHQsIGVuc3VyZSB5b3UgY2FsbCBpdCB0aHJvdWdoIHRoZSBzZXR1cCgpIGZ1bmN0aW9uLiIpfWZ1bmN0aW9uIFJrKGUsdD17fSl7Y29uc3Qgbj10LmhlYWR8fElrKCk7cmV0dXJuIG4uc3NyP24ucHVzaChlfHx7fSx0KTpOayhuLGUsdCl9ZnVuY3Rpb24gTmsoZSx0LG49e30pe2NvbnN0IHI9RyghMSk7bGV0IG87cmV0dXJuIG9uKCgpPT57Y29uc3QgaT1yLnZhbHVlP3t9OlFhKHQsT2spO28/by5wYXRjaChpKTpvPWUucHVzaChpLG4pfSksbXQoKSYmKEhvKCgpPT57by5kaXNwb3NlKCl9KSxNZygoKT0+e3IudmFsdWU9ITB9KSwkZygoKT0+e3IudmFsdWU9ITF9KSksb31mdW5jdGlvbiBldihlKXtjb25zdCB0PWV8fEJlKCk7cmV0dXJuIHQuc3NyQ29udGV4dD8uaGVhZHx8dC5ydW5XaXRoQ29udGV4dCgoKT0+e2lmKExpKCkpe2NvbnN0IG49S2UoUmYpO2lmKCFuKXRocm93IG5ldyBFcnJvcigiW251eHRdIFt1bmhlYWRdIE1pc3NpbmcgVW5oZWFkIGluc3RhbmNlLiIpO3JldHVybiBufX0pfWZ1bmN0aW9uIERrKGUsdD17fSl7Y29uc3Qgbj10LmhlYWR8fGV2KHQubnV4dCk7cmV0dXJuIFJrKGUse2hlYWQ6biwuLi50fSl9Y29uc3QgTGs9KCgpPT57Y29uc3QgZT17cmVkaXJlY3Q6Ii9vcmdhbml6YXRpb24vbWVtYmVycyJ9LHQ9e307cmV0dXJuKG4scik9PntsZXQgbz1bXTtyLmNoYXJDb2RlQXQoci5sZW5ndGgtMSk9PT00NyYmKHI9ci5zbGljZSgwLC0xKXx8Ii8iKSxyPT09Ii91c2VycyI/by51bnNoaWZ0KHtkYXRhOmV9KTpyPT09Ii9hcGkvcGF5bWVudHMvc2VwYXkvd2ViaG9vayI/by51bnNoaWZ0KHtkYXRhOnR9KTpyPT09Ii9hcGkvc3lzdGVtL2Rpc3BhdGNoL3NlbmQiP28udW5zaGlmdCh7ZGF0YTp0fSk6cj09PSIvYXBpL3N1cHBvcnQvdGlja2V0cyI/by51bnNoaWZ0KHtkYXRhOnR9KTpyPT09Ii9hcGkvc3lzdGVtL3RpY2tldHMiJiZvLnVuc2hpZnQoe2RhdGE6dH0pO2xldCBzPXIuc3BsaXQoIi8iKSxpPXMubGVuZ3RoO3JldHVybiBpPjEmJihzWzFdPT09ImFwaSI/KGk+MiYmKHNbMl09PT0ic3lzdGVtIj9pPjMmJnNbM109PT0idGlja2V0cyImJm8udW5zaGlmdCh7ZGF0YTp0LHBhcmFtczp7XzpzLnNsaWNlKDQpLmpvaW4oIi8iKX19KTpzWzJdPT09InN1cHBvcnQiP2k+MyYmc1szXT09PSJ0aWNrZXRzIiYmby51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoNCkuam9pbigiLyIpfX0pOnNbMl09PT0iYXV0aCI/by51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoMykuam9pbigiLyIpfX0pOnNbMl09PT0iY3JvbiImJm8udW5zaGlmdCh7ZGF0YTp0LHBhcmFtczp7XzpzLnNsaWNlKDMpLmpvaW4oIi8iKX19KSksby51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoMikuam9pbigiLyIpfX0pKTpzWzFdPT09Il9fbnV4dF9oaW50cyImJm8udW5zaGlmdCh7ZGF0YTp0LHBhcmFtczp7XzpzLnNsaWNlKDIpLmpvaW4oIi8iKX19KSksby51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoMSkuam9pbigiLyIpfX0pLG99fSkoKSx0dj1lPT5tbih7fSwuLi5MaygiIixlKS5tYXAodD0+dC5kYXRhKS5yZXZlcnNlKCkpLCRrPXR2O2xldCBDYTtmdW5jdGlvbiBNaygpe3JldHVybiBDYT0kZmV0Y2goSWYoYGJ1aWxkcy9tZXRhLyR7Zm8oKS5hcHAuYnVpbGRJZH0uanNvbmApLHtyZXNwb25zZVR5cGU6Impzb24ifSksQ2EuY2F0Y2goZT0+e30pLENhfWZ1bmN0aW9uIG52KCl7cmV0dXJuIENhfHxNaygpfWZ1bmN0aW9uIHJ2KGUpe2NvbnN0IHQ9dHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5wYXRoO3RyeXtyZXR1cm4gJGsodCl9Y2F0Y2h7cmV0dXJue319fWFzeW5jIGZ1bmN0aW9uIEZwKGUsdD17fSl7cmV0dXJuIG51bGx9YXN5bmMgZnVuY3Rpb24gQmsoZSl7cmV0dXJuIG51bGx9bGV0IHhvPW51bGw7YXN5bmMgZnVuY3Rpb24gcWsoKXtpZih4bylyZXR1cm4geG87Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19OVVhUX0RBVEFfXyIpO2lmKCFlKXJldHVybnt9O2NvbnN0IHQ9YXdhaXQgRmsoZS50ZXh0Q29udGVudHx8IiIpLG49ZS5kYXRhc2V0LnNyYz9hd2FpdCBCayhlLmRhdGFzZXQuc3JjKTp2b2lkIDA7cmV0dXJuIHhvPXsuLi50LC4uLm4sLi4ud2luZG93Ll9fTlVYVF9ffSx4by5jb25maWc/LnB1YmxpYyYmKHhvLmNvbmZpZy5wdWJsaWM9YnQoeG8uY29uZmlnLnB1YmxpYykpLHhvfWFzeW5jIGZ1bmN0aW9uIEZrKGUpe3JldHVybiBhd2FpdCBmayhlLEJlKCkuX3BheWxvYWRSZXZpdmVycyl9ZnVuY3Rpb24gb3YoZSx0KXtCZSgpLl9wYXlsb2FkUmV2aXZlcnNbZV09dH1jb25zdCB6az1xMSgoKT0+e292KCJza2lwSHlkcmF0ZSIsZT0+e30pfSk7ZnVuY3Rpb24genAoZSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoe3JldHVybiBlfX1jb25zdCBqaz1bWyJOdXh0RXJyb3IiLGU9PnNvKGUpXSxbIkVtcHR5U2hhbGxvd1JlZiIsZT0+T2UoZT09PSJfIj92b2lkIDA6ZT09PSIwbiI/QmlnSW50KDApOnpwKGUpKV0sWyJFbXB0eVJlZiIsZT0+RyhlPT09Il8iP3ZvaWQgMDplPT09IjBuIj9CaWdJbnQoMCk6enAoZSkpXSxbIlNoYWxsb3dSZWYiLGU9Pk9lKGUpXSxbIlNoYWxsb3dSZWFjdGl2ZSIsZT0+UG4oZSldLFsiUmVmIixlPT5HKGUpXSxbIlJlYWN0aXZlIixlPT5idChlKV1dLFZrPWx0KHtuYW1lOiJudXh0OnJldml2ZS1wYXlsb2FkOmNsaWVudCIsb3JkZXI6LTMwLGFzeW5jIHNldHVwKGUpe2xldCB0LG47Zm9yKGNvbnN0W3Isb11vZiBqaylvdihyLG8pO09iamVjdC5hc3NpZ24oZS5wYXlsb2FkLChbdCxuXT1ncygoKT0+ZS5ydW5XaXRoQ29udGV4dChxaykpLHQ9YXdhaXQgdCxuKCksdCkpLGRlbGV0ZSB3aW5kb3cuX19OVVhUX199fSk7YXN5bmMgZnVuY3Rpb24gTmYoZSx0PXt9KXtjb25zdCBuPXQuZG9jdW1lbnR8fGUucmVzb2x2ZWRPcHRpb25zLmRvY3VtZW50O2lmKCFufHwhZS5kaXJ0eSlyZXR1cm47Y29uc3Qgcj17c2hvdWxkUmVuZGVyOiEwLHRhZ3M6W119O2lmKGF3YWl0IGUuaG9va3MuY2FsbEhvb2soImRvbTpiZWZvcmVSZW5kZXIiLHIpLCEhci5zaG91bGRSZW5kZXIpcmV0dXJuIGUuX2RvbVVwZGF0ZVByb21pc2V8fChlLl9kb21VcGRhdGVQcm9taXNlPW5ldyBQcm9taXNlKGFzeW5jIG89Pntjb25zdCBzPW5ldyBNYXAsaT1uZXcgUHJvbWlzZShwPT57ZS5yZXNvbHZlVGFncygpLnRoZW4obT0+e3AobS5tYXAoeT0+e2NvbnN0IF89cy5nZXQoeS5fZCl8fDAsdz17dGFnOnksaWQ6KF8/YCR7eS5fZH06JHtffWA6eS5fZCl8fHkuX2gsc2hvdWxkUmVuZGVyOiEwfTtyZXR1cm4geS5fZCYmSnkoeS5fZCkmJnMuc2V0KHkuX2QsXysxKSx3fSkpfSl9KTtsZXQgYT1lLl9kb207aWYoIWEpe2E9e3RpdGxlOm4udGl0bGUsZWxNYXA6bmV3IE1hcCgpLnNldCgiaHRtbEF0dHJzIixuLmRvY3VtZW50RWxlbWVudCkuc2V0KCJib2R5QXR0cnMiLG4uYm9keSl9O2Zvcihjb25zdCBwIG9mWyJib2R5IiwiaGVhZCJdKXtjb25zdCBtPW5bcF0/LmNoaWxkcmVuO2Zvcihjb25zdCB5IG9mIG0pe2NvbnN0IF89eS50YWdOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIXd1LmhhcyhfKSljb250aW51ZTtjb25zdCB3PVp5KHt0YWc6Xyxwcm9wczp7fX0se2lubmVySFRNTDp5LmlubmVySFRNTCwuLi55LmdldEF0dHJpYnV0ZU5hbWVzKCkucmVkdWNlKCh2LGgpPT4odltoXT15LmdldEF0dHJpYnV0ZShoKSx2KSx7fSl8fHt9fSk7aWYody5rZXk9eS5nZXRBdHRyaWJ1dGUoImRhdGEtaGlkIil8fHZvaWQgMCx3Ll9kPV91KHcpfHxYeSh3KSxhLmVsTWFwLmhhcyh3Ll9kKSl7bGV0IHY9MSxoPXcuX2Q7Zm9yKDthLmVsTWFwLmhhcyhoKTspaD1gJHt3Ll9kfToke3YrK31gO2EuZWxNYXAuc2V0KGgseSl9ZWxzZSBhLmVsTWFwLnNldCh3Ll9kLHkpfX19YS5wZW5kaW5nU2lkZUVmZmVjdHM9ey4uLmEuc2lkZUVmZmVjdHN9LGEuc2lkZUVmZmVjdHM9e307ZnVuY3Rpb24gbChwLG0seSl7Y29uc3QgXz1gJHtwfToke219YDthLnNpZGVFZmZlY3RzW19dPXksZGVsZXRlIGEucGVuZGluZ1NpZGVFZmZlY3RzW19dfWZ1bmN0aW9uIHUoe2lkOnAsJGVsOm0sdGFnOnl9KXtjb25zdCBfPXkudGFnLmVuZHNXaXRoKCJBdHRycyIpO2EuZWxNYXAuc2V0KHAsbSksX3x8KHkudGV4dENvbnRlbnQmJnkudGV4dENvbnRlbnQhPT1tLnRleHRDb250ZW50JiYobS50ZXh0Q29udGVudD15LnRleHRDb250ZW50KSx5LmlubmVySFRNTCYmeS5pbm5lckhUTUwhPT1tLmlubmVySFRNTCYmKG0uaW5uZXJIVE1MPXkuaW5uZXJIVE1MKSxsKHAsImVsIiwoKT0+e20/LnJlbW92ZSgpLGEuZWxNYXAuZGVsZXRlKHApfSkpO2Zvcihjb25zdCB3IGluIHkucHJvcHMpe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeS5wcm9wcyx3KSljb250aW51ZTtjb25zdCB2PXkucHJvcHNbd107aWYody5zdGFydHNXaXRoKCJvbiIpJiZ0eXBlb2Ygdj09ImZ1bmN0aW9uIil7Y29uc3QgYj1tPy5kYXRhc2V0O2lmKGImJmJbYCR7d31maXJlZGBdKXtjb25zdCB4PXcuc2xpY2UoMCwtNSk7di5jYWxsKG0sbmV3IEV2ZW50KHguc3Vic3RyaW5nKDIpKSl9bS5nZXRBdHRyaWJ1dGUoYGRhdGEtJHt3fWApIT09IiImJigoeS50YWc9PT0iYm9keUF0dHJzIj9uLmRlZmF1bHRWaWV3Om0pLmFkZEV2ZW50TGlzdGVuZXIody5zdWJzdHJpbmcoMiksdi5iaW5kKG0pKSxtLnNldEF0dHJpYnV0ZShgZGF0YS0ke3d9YCwiIikpO2NvbnRpbnVlfWNvbnN0IGg9YGF0dHI6JHt3fWA7aWYodz09PSJjbGFzcyIpe2lmKCF2KWNvbnRpbnVlO2Zvcihjb25zdCBiIG9mIHYpXyYmbChwLGAke2h9OiR7Yn1gLCgpPT5tLmNsYXNzTGlzdC5yZW1vdmUoYikpLCFtLmNsYXNzTGlzdC5jb250YWlucyhiKSYmbS5jbGFzc0xpc3QuYWRkKGIpfWVsc2UgaWYodz09PSJzdHlsZSIpe2lmKCF2KWNvbnRpbnVlO2Zvcihjb25zdFtiLHhdb2YgdilsKHAsYCR7aH06JHtifWAsKCk9PnttLnN0eWxlLnJlbW92ZVByb3BlcnR5KGIpfSksbS5zdHlsZS5zZXRQcm9wZXJ0eShiLHgpfWVsc2UgdiE9PSExJiZ2IT09bnVsbCYmKG0uZ2V0QXR0cmlidXRlKHcpIT09diYmbS5zZXRBdHRyaWJ1dGUodyx2PT09ITA/IiI6U3RyaW5nKHYpKSxfJiZsKHAsaCwoKT0+bS5yZW1vdmVBdHRyaWJ1dGUodykpKX19Y29uc3QgYz1bXSxmPXtib2R5Q2xvc2U6dm9pZCAwLGJvZHlPcGVuOnZvaWQgMCxoZWFkOnZvaWQgMH0sZD1hd2FpdCBpO2Zvcihjb25zdCBwIG9mIGQpe2NvbnN0e3RhZzptLHNob3VsZFJlbmRlcjp5LGlkOl99PXA7aWYoeSl7aWYobS50YWc9PT0idGl0bGUiKXtuLnRpdGxlPW0udGV4dENvbnRlbnQsbCgidGl0bGUiLCIiLCgpPT5uLnRpdGxlPWEudGl0bGUpO2NvbnRpbnVlfXAuJGVsPXAuJGVsfHxhLmVsTWFwLmdldChfKSxwLiRlbD91KHApOnd1LmhhcyhtLnRhZykmJmMucHVzaChwKX19Zm9yKGNvbnN0IHAgb2YgYyl7Y29uc3QgbT1wLnRhZy50YWdQb3NpdGlvbnx8ImhlYWQiO3AuJGVsPW4uY3JlYXRlRWxlbWVudChwLnRhZy50YWcpLHUocCksZlttXT1mW21dfHxuLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmW21dLmFwcGVuZENoaWxkKHAuJGVsKX1mb3IoY29uc3QgcCBvZiBkKWF3YWl0IGUuaG9va3MuY2FsbEhvb2soImRvbTpyZW5kZXJUYWciLHAsbixsKTtmLmhlYWQmJm4uaGVhZC5hcHBlbmRDaGlsZChmLmhlYWQpLGYuYm9keU9wZW4mJm4uYm9keS5pbnNlcnRCZWZvcmUoZi5ib2R5T3BlbixuLmJvZHkuZmlyc3RDaGlsZCksZi5ib2R5Q2xvc2UmJm4uYm9keS5hcHBlbmRDaGlsZChmLmJvZHlDbG9zZSk7Zm9yKGNvbnN0IHAgaW4gYS5wZW5kaW5nU2lkZUVmZmVjdHMpYS5wZW5kaW5nU2lkZUVmZmVjdHNbcF0oKTtlLl9kb209YSxhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJkb206cmVuZGVyZWQiLHtyZW5kZXJzOmR9KSxvKCl9KS5maW5hbGx5KCgpPT57ZS5fZG9tVXBkYXRlUHJvbWlzZT12b2lkIDAsZS5kaXJ0eT0hMX0pKSxlLl9kb21VcGRhdGVQcm9taXNlfWZ1bmN0aW9uIFVrKGU9e30pe2NvbnN0IHQ9ZS5kb21PcHRpb25zPy5yZW5kZXJ8fE5mO2UuZG9jdW1lbnQ9ZS5kb2N1bWVudHx8KHR5cGVvZiB3aW5kb3c8InUiP2RvY3VtZW50OnZvaWQgMCk7Y29uc3Qgbj1lLmRvY3VtZW50Py5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtpZD0idW5oZWFkOnBheWxvYWQiXScpPy5pbm5lckhUTUx8fCExO3JldHVybiBBayh7Li4uZSxwbHVnaW5zOlsuLi5lLnBsdWdpbnN8fFtdLHtrZXk6ImNsaWVudCIsaG9va3M6eyJlbnRyaWVzOnVwZGF0ZWQiOnR9fV0saW5pdDpbbj9KU09OLnBhcnNlKG4pOiExLC4uLmUuaW5pdHx8W11dfSl9ZnVuY3Rpb24gSGsoZSx0KXtsZXQgbj0wO3JldHVybigpPT57Y29uc3Qgcj0rK247dCgoKT0+e249PT1yJiZlKCl9KX19ZnVuY3Rpb24gV2soZT17fSl7Y29uc3QgdD1Vayh7ZG9tT3B0aW9uczp7cmVuZGVyOkhrKCgpPT5OZih0KSxuPT5zZXRUaW1lb3V0KG4sMCkpfSwuLi5lfSk7cmV0dXJuIHQuaW5zdGFsbD1Qayh0KSx0fWNvbnN0IEdrPXtkaXNhYmxlRGVmYXVsdHM6ITB9LEtrPWx0KHtuYW1lOiJudXh0OmhlYWQiLGVuZm9yY2U6InByZSIsc2V0dXAoZSl7Y29uc3QgdD1XayhHayk7ZS52dWVBcHAudXNlKHQpO3tsZXQgbj0hMDtjb25zdCByPWFzeW5jKCk9PntuPSExLGF3YWl0IE5mKHQpfTt0Lmhvb2tzLmhvb2soImRvbTpiZWZvcmVSZW5kZXIiLG89PntvLnNob3VsZFJlbmRlcj0hbn0pLGUuaG9va3MuaG9vaygicGFnZTpzdGFydCIsKCk9PntuPSEwfSksZS5ob29rcy5ob29rKCJwYWdlOmZpbmlzaCIsKCk9PntlLmlzSHlkcmF0aW5nfHxyKCl9KSxlLmhvb2tzLmhvb2soImFwcDplcnJvciIsciksZS5ob29rcy5ob29rKCJhcHA6c3VzcGVuc2U6cmVzb2x2ZSIscil9fX0pO2NvbnN0IHNzPXR5cGVvZiBkb2N1bWVudDwidSI7ZnVuY3Rpb24gc3YoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0Inx8ImRpc3BsYXlOYW1lImluIGV8fCJwcm9wcyJpbiBlfHwiX192Y2NPcHRzImluIGV9ZnVuY3Rpb24gUWsoZSl7cmV0dXJuIGUuX19lc01vZHVsZXx8ZVtTeW1ib2wudG9TdHJpbmdUYWddPT09Ik1vZHVsZSJ8fGUuZGVmYXVsdCYmc3YoZS5kZWZhdWx0KX1jb25zdCB0dD1PYmplY3QuYXNzaWduO2Z1bmN0aW9uIFNjKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiB0KXtjb25zdCBvPXRbcl07bltyXT1XbihvKT9vLm1hcChlKTplKG8pfXJldHVybiBufWNvbnN0IGZpPSgpPT57fSxXbj1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIGpwKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiBlKW5bcl09ciBpbiB0P3Rbcl06ZVtyXTtyZXR1cm4gbn1sZXQgZ3Q9KGZ1bmN0aW9uKGUpe3JldHVybiBlW2UuTUFUQ0hFUl9OT1RfRk9VTkQ9MV09Ik1BVENIRVJfTk9UX0ZPVU5EIixlW2UuTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVD0yXT0iTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCIsZVtlLk5BVklHQVRJT05fQUJPUlRFRD00XT0iTkFWSUdBVElPTl9BQk9SVEVEIixlW2UuTkFWSUdBVElPTl9DQU5DRUxMRUQ9OF09Ik5BVklHQVRJT05fQ0FOQ0VMTEVEIixlW2UuTkFWSUdBVElPTl9EVVBMSUNBVEVEPTE2XT0iTkFWSUdBVElPTl9EVVBMSUNBVEVEIixlfSkoe30pO2NvbnN0IGl2PVN5bWJvbCgiIik7Z3QuTUFUQ0hFUl9OT1RfRk9VTkQrIiIsZ3QuTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCsiIixndC5OQVZJR0FUSU9OX0FCT1JURUQrIiIsZ3QuTkFWSUdBVElPTl9DQU5DRUxMRUQrIiIsZ3QuTkFWSUdBVElPTl9EVVBMSUNBVEVEKyIiO2Z1bmN0aW9uIEVzKGUsdCl7cmV0dXJuIHR0KG5ldyBFcnJvcix7dHlwZTplLFtpdl06ITB9LHQpfWZ1bmN0aW9uIHhyKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmaXYgaW4gZSYmKHQ9PW51bGx8fCEhKGUudHlwZSZ0KSl9Y29uc3QgWWs9WyJwYXJhbXMiLCJxdWVyeSIsImhhc2giXTtmdW5jdGlvbiBKayhlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7aWYoZS5wYXRoIT1udWxsKXJldHVybiBlLnBhdGg7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBvZiBZayluIGluIGUmJih0W25dPWVbbl0pO3JldHVybiBKU09OLnN0cmluZ2lmeSh0LG51bGwsMil9Y29uc3QgWGs9U3ltYm9sKCIiKSxWcD1TeW1ib2woIiIpLERmPVN5bWJvbCgiIiksTGY9U3ltYm9sKCIiKSx4dT1TeW1ib2woIiIpO2Z1bmN0aW9uIGF2KGUpe3JldHVybiBLZShMZil9Y29uc3QgWms9e3RyYWlsaW5nOiEwfTtmdW5jdGlvbiBlRShlLHQ9MjUsbj17fSl7aWYobj17Li4uWmssLi4ubn0sIU51bWJlci5pc0Zpbml0ZSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBgd2FpdGAgdG8gYmUgYSBmaW5pdGUgbnVtYmVyIik7bGV0IHIsbyxzPVtdLGksYTtjb25zdCBsPShmLGQpPT4oaT10RShlLGYsZCksaS5maW5hbGx5KCgpPT57aWYoaT1udWxsLG4udHJhaWxpbmcmJmEmJiFvKXtjb25zdCBwPWwoZixhKTtyZXR1cm4gYT1udWxsLHB9fSksaSksdT1mdW5jdGlvbiguLi5mKXtyZXR1cm4gbi50cmFpbGluZyYmKGE9ZiksaXx8bmV3IFByb21pc2UoZD0+e2NvbnN0IHA9IW8mJm4ubGVhZGluZztjbGVhclRpbWVvdXQobyksbz1zZXRUaW1lb3V0KCgpPT57bz1udWxsO2NvbnN0IG09bi5sZWFkaW5nP3I6bCh0aGlzLGYpO2E9bnVsbDtmb3IoY29uc3QgeSBvZiBzKXkobSk7cz1bXX0sdCkscD8ocj1sKHRoaXMsZiksZChyKSk6cy5wdXNoKGQpfSl9LGM9Zj0+e2YmJihjbGVhclRpbWVvdXQoZiksbz1udWxsKX07cmV0dXJuIHUuaXNQZW5kaW5nPSgpPT4hIW8sdS5jYW5jZWw9KCk9PntjKG8pLHM9W10sYT1udWxsfSx1LmZsdXNoPSgpPT57aWYoYyhvKSwhYXx8aSlyZXR1cm47Y29uc3QgZj1hO3JldHVybiBhPW51bGwsbCh0aGlzLGYpfSx1fWFzeW5jIGZ1bmN0aW9uIHRFKGUsdCxuKXtyZXR1cm4gYXdhaXQgZS5hcHBseSh0LG4pfWNvbnN0IGx2PS8jL2csbkU9LyYvZyxyRT0vXC8vZyxvRT0vPS9nLHNFPS9cPy9nLGN2PS9cKy9nLGlFPS8lNUIvZyxhRT0vJTVEL2csdXY9LyU1RS9nLGxFPS8lNjAvZyxmdj0vJTdCL2csY0U9LyU3Qy9nLGR2PS8lN0QvZyx1RT0vJTIwL2c7ZnVuY3Rpb24gJGYoZSl7cmV0dXJuIGU9PW51bGw/IiI6ZW5jb2RlVVJJKCIiK2UpLnJlcGxhY2UoY0UsInwiKS5yZXBsYWNlKGlFLCJbIikucmVwbGFjZShhRSwiXSIpfWZ1bmN0aW9uIGZFKGUpe3JldHVybiAkZihlKS5yZXBsYWNlKGZ2LCJ7IikucmVwbGFjZShkdiwifSIpLnJlcGxhY2UodXYsIl4iKX1mdW5jdGlvbiBTdShlKXtyZXR1cm4gJGYoZSkucmVwbGFjZShjdiwiJTJCIikucmVwbGFjZSh1RSwiKyIpLnJlcGxhY2UobHYsIiUyMyIpLnJlcGxhY2UobkUsIiUyNiIpLnJlcGxhY2UobEUsImAiKS5yZXBsYWNlKGZ2LCJ7IikucmVwbGFjZShkdiwifSIpLnJlcGxhY2UodXYsIl4iKX1mdW5jdGlvbiBkRShlKXtyZXR1cm4gU3UoZSkucmVwbGFjZShvRSwiJTNEIil9ZnVuY3Rpb24gcEUoZSl7cmV0dXJuICRmKGUpLnJlcGxhY2UobHYsIiUyMyIpLnJlcGxhY2Uoc0UsIiUzRiIpfWZ1bmN0aW9uIG1FKGUpe3JldHVybiBwRShlKS5yZXBsYWNlKHJFLCIlMkYiKX1mdW5jdGlvbiBFaShlKXtpZihlPT1udWxsKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCIiK2UpfWNhdGNoe31yZXR1cm4iIitlfWNvbnN0IGhFPS9cLyQvLGdFPWU9PmUucmVwbGFjZShoRSwiIik7ZnVuY3Rpb24ga2MoZSx0LG49Ii8iKXtsZXQgcixvPXt9LHM9IiIsaT0iIjtjb25zdCBhPXQuaW5kZXhPZigiIyIpO2xldCBsPXQuaW5kZXhPZigiPyIpO3JldHVybiBsPWE+PTAmJmw+YT8tMTpsLGw+PTAmJihyPXQuc2xpY2UoMCxsKSxzPXQuc2xpY2UobCxhPjA/YTp0Lmxlbmd0aCksbz1lKHMuc2xpY2UoMSkpKSxhPj0wJiYocj1yfHx0LnNsaWNlKDAsYSksaT10LnNsaWNlKGEsdC5sZW5ndGgpKSxyPXdFKHI/P3Qsbikse2Z1bGxQYXRoOnIrcytpLHBhdGg6cixxdWVyeTpvLGhhc2g6RWkoaSl9fWZ1bmN0aW9uIHlFKGUsdCl7Y29uc3Qgbj10LnF1ZXJ5P2UodC5xdWVyeSk6IiI7cmV0dXJuIHQucGF0aCsobiYmIj8iKStuKyh0Lmhhc2h8fCIiKX1mdW5jdGlvbiBVcChlLHQpe3JldHVybiF0fHwhZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodC50b0xvd2VyQ2FzZSgpKT9lOmUuc2xpY2UodC5sZW5ndGgpfHwiLyJ9ZnVuY3Rpb24gdkUoZSx0LG4pe2NvbnN0IHI9dC5tYXRjaGVkLmxlbmd0aC0xLG89bi5tYXRjaGVkLmxlbmd0aC0xO3JldHVybiByPi0xJiZyPT09byYmVHModC5tYXRjaGVkW3JdLG4ubWF0Y2hlZFtvXSkmJnB2KHQucGFyYW1zLG4ucGFyYW1zKSYmZSh0LnF1ZXJ5KT09PWUobi5xdWVyeSkmJnQuaGFzaD09PW4uaGFzaH1mdW5jdGlvbiBUcyhlLHQpe3JldHVybihlLmFsaWFzT2Z8fGUpPT09KHQuYWxpYXNPZnx8dCl9ZnVuY3Rpb24gcHYoZSx0KXtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGghPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuIGluIGUpaWYoIWJFKGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYkUoZSx0KXtyZXR1cm4gV24oZSk/SHAoZSx0KTpXbih0KT9IcCh0LGUpOihlJiZlLnZhbHVlT2YoKSk9PT0odCYmdC52YWx1ZU9mKCkpfWZ1bmN0aW9uIEhwKGUsdCl7cmV0dXJuIFduKHQpP2UubGVuZ3RoPT09dC5sZW5ndGgmJmUuZXZlcnkoKG4scik9Pm49PT10W3JdKTplLmxlbmd0aD09PTEmJmVbMF09PT10fWZ1bmN0aW9uIHdFKGUsdCl7aWYoZS5zdGFydHNXaXRoKCIvIikpcmV0dXJuIGU7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj10LnNwbGl0KCIvIikscj1lLnNwbGl0KCIvIiksbz1yW3IubGVuZ3RoLTFdOyhvPT09Ii4uInx8bz09PSIuIikmJnIucHVzaCgiIik7bGV0IHM9bi5sZW5ndGgtMSxpLGE7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKylpZihhPXJbaV0sYSE9PSIuIilpZihhPT09Ii4uIilzPjEmJnMtLTtlbHNlIGJyZWFrO3JldHVybiBuLnNsaWNlKDAscykuam9pbigiLyIpKyIvIityLnNsaWNlKGkpLmpvaW4oIi8iKX1jb25zdCBPbj17cGF0aDoiLyIsbmFtZTp2b2lkIDAscGFyYW1zOnt9LHF1ZXJ5Ont9LGhhc2g6IiIsZnVsbFBhdGg6Ii8iLG1hdGNoZWQ6W10sbWV0YTp7fSxyZWRpcmVjdGVkRnJvbTp2b2lkIDB9O2xldCBrdT0oZnVuY3Rpb24oZSl7cmV0dXJuIGUucG9wPSJwb3AiLGUucHVzaD0icHVzaCIsZX0pKHt9KSxFYz0oZnVuY3Rpb24oZSl7cmV0dXJuIGUuYmFjaz0iYmFjayIsZS5mb3J3YXJkPSJmb3J3YXJkIixlLnVua25vd249IiIsZX0pKHt9KTtmdW5jdGlvbiBfRShlKXtpZighZSlpZihzcyl7Y29uc3QgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIik7ZT10JiZ0LmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiLyIsZT1lLnJlcGxhY2UoL15cdys6XC9cL1teXC9dKy8sIiIpfWVsc2UgZT0iLyI7cmV0dXJuIGVbMF0hPT0iLyImJmVbMF0hPT0iIyImJihlPSIvIitlKSxnRShlKX1jb25zdCB4RT0vXlteI10rIy87ZnVuY3Rpb24gU0UoZSx0KXtyZXR1cm4gZS5yZXBsYWNlKHhFLCIjIikrdH1mdW5jdGlvbiBrRShlLHQpe2NvbnN0IG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57YmVoYXZpb3I6dC5iZWhhdmlvcixsZWZ0OnIubGVmdC1uLmxlZnQtKHQubGVmdHx8MCksdG9wOnIudG9wLW4udG9wLSh0LnRvcHx8MCl9fWNvbnN0IFBsPSgpPT4oe2xlZnQ6d2luZG93LnNjcm9sbFgsdG9wOndpbmRvdy5zY3JvbGxZfSk7ZnVuY3Rpb24gRUUoZSl7bGV0IHQ7aWYoImVsImluIGUpe2NvbnN0IG49ZS5lbCxyPXR5cGVvZiBuPT0ic3RyaW5nIiYmbi5zdGFydHNXaXRoKCIjIiksbz10eXBlb2Ygbj09InN0cmluZyI/cj9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChuLnNsaWNlKDEpKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4pOm47aWYoIW8pcmV0dXJuO3Q9a0UobyxlKX1lbHNlIHQ9ZTsic2Nyb2xsQmVoYXZpb3IiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlP3dpbmRvdy5zY3JvbGxUbyh0KTp3aW5kb3cuc2Nyb2xsVG8odC5sZWZ0IT1udWxsP3QubGVmdDp3aW5kb3cuc2Nyb2xsWCx0LnRvcCE9bnVsbD90LnRvcDp3aW5kb3cuc2Nyb2xsWSl9ZnVuY3Rpb24gV3AoZSx0KXtyZXR1cm4oaGlzdG9yeS5zdGF0ZT9oaXN0b3J5LnN0YXRlLnBvc2l0aW9uLXQ6LTEpK2V9Y29uc3QgRXU9bmV3IE1hcDtmdW5jdGlvbiBURShlLHQpe0V1LnNldChlLHQpfWZ1bmN0aW9uIENFKGUpe2NvbnN0IHQ9RXUuZ2V0KGUpO3JldHVybiBFdS5kZWxldGUoZSksdH1mdW5jdGlvbiBBRShlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifHxlJiZ0eXBlb2YgZT09Im9iamVjdCJ9ZnVuY3Rpb24gbXYoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJzeW1ib2wifWZ1bmN0aW9uIE9FKGUpe2NvbnN0IHQ9e307aWYoZT09PSIifHxlPT09Ij8iKXJldHVybiB0O2NvbnN0IG49KGVbMF09PT0iPyI/ZS5zbGljZSgxKTplKS5zcGxpdCgiJiIpO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7KytyKXtjb25zdCBvPW5bcl0ucmVwbGFjZShjdiwiICIpLHM9by5pbmRleE9mKCI9IiksaT1FaShzPDA/bzpvLnNsaWNlKDAscykpLGE9czwwP251bGw6RWkoby5zbGljZShzKzEpKTtpZihpIGluIHQpe2xldCBsPXRbaV07V24obCl8fChsPXRbaV09W2xdKSxsLnB1c2goYSl9ZWxzZSB0W2ldPWF9cmV0dXJuIHR9ZnVuY3Rpb24gR3AoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuIGluIGUpe2NvbnN0IHI9ZVtuXTtpZihuPWRFKG4pLHI9PW51bGwpe3IhPT12b2lkIDAmJih0Kz0odC5sZW5ndGg/IiYiOiIiKStuKTtjb250aW51ZX0oV24ocik/ci5tYXAobz0+byYmU3UobykpOltyJiZTdShyKV0pLmZvckVhY2gobz0+e28hPT12b2lkIDAmJih0Kz0odC5sZW5ndGg/IiYiOiIiKStuLG8hPW51bGwmJih0Kz0iPSIrbykpfSl9cmV0dXJuIHR9ZnVuY3Rpb24gUEUoZSl7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBpbiBlKXtjb25zdCByPWVbbl07ciE9PXZvaWQgMCYmKHRbbl09V24ocik/ci5tYXAobz0+bz09bnVsbD9udWxsOiIiK28pOnI9PW51bGw/cjoiIityKX1yZXR1cm4gdH1mdW5jdGlvbiBVcygpe2xldCBlPVtdO2Z1bmN0aW9uIHQocil7cmV0dXJuIGUucHVzaChyKSwoKT0+e2NvbnN0IG89ZS5pbmRleE9mKHIpO28+LTEmJmUuc3BsaWNlKG8sMSl9fWZ1bmN0aW9uIG4oKXtlPVtdfXJldHVybnthZGQ6dCxsaXN0OigpPT5lLnNsaWNlKCkscmVzZXQ6bn19ZnVuY3Rpb24gcm8oZSx0LG4scixvLHM9aT0+aSgpKXtjb25zdCBpPXImJihyLmVudGVyQ2FsbGJhY2tzW29dPXIuZW50ZXJDYWxsYmFja3Nbb118fFtdKTtyZXR1cm4oKT0+bmV3IFByb21pc2UoKGEsbCk9Pntjb25zdCB1PWQ9PntkPT09ITE/bChFcyhndC5OQVZJR0FUSU9OX0FCT1JURUQse2Zyb206bix0bzp0fSkpOmQgaW5zdGFuY2VvZiBFcnJvcj9sKGQpOkFFKGQpP2woRXMoZ3QuTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCx7ZnJvbTp0LHRvOmR9KSk6KGkmJnIuZW50ZXJDYWxsYmFja3Nbb109PT1pJiZ0eXBlb2YgZD09ImZ1bmN0aW9uIiYmaS5wdXNoKGQpLGEoKSl9LGM9cygoKT0+ZS5jYWxsKHImJnIuaW5zdGFuY2VzW29dLHQsbix1KSk7bGV0IGY9UHJvbWlzZS5yZXNvbHZlKGMpO2UubGVuZ3RoPDMmJihmPWYudGhlbih1KSksZi5jYXRjaChkPT5sKGQpKX0pfWZ1bmN0aW9uIFRjKGUsdCxuLHIsbz1zPT5zKCkpe2NvbnN0IHM9W107Zm9yKGNvbnN0IGkgb2YgZSlmb3IoY29uc3QgYSBpbiBpLmNvbXBvbmVudHMpe2xldCBsPWkuY29tcG9uZW50c1thXTtpZighKHQhPT0iYmVmb3JlUm91dGVFbnRlciImJiFpLmluc3RhbmNlc1thXSkpaWYoc3YobCkpe2NvbnN0IHU9KGwuX192Y2NPcHRzfHxsKVt0XTt1JiZzLnB1c2gocm8odSxuLHIsaSxhLG8pKX1lbHNle2xldCB1PWwoKTtzLnB1c2goKCk9PnUudGhlbihjPT57aWYoIWMpdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIGNvbXBvbmVudCAiJHthfSIgYXQgIiR7aS5wYXRofSJgKTtjb25zdCBmPVFrKGMpP2MuZGVmYXVsdDpjO2kubW9kc1thXT1jLGkuY29tcG9uZW50c1thXT1mO2NvbnN0IGQ9KGYuX192Y2NPcHRzfHxmKVt0XTtyZXR1cm4gZCYmcm8oZCxuLHIsaSxhLG8pKCl9KSl9fXJldHVybiBzfWZ1bmN0aW9uIElFKGUsdCl7Y29uc3Qgbj1bXSxyPVtdLG89W10scz1NYXRoLm1heCh0Lm1hdGNoZWQubGVuZ3RoLGUubWF0Y2hlZC5sZW5ndGgpO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IGE9dC5tYXRjaGVkW2ldO2EmJihlLm1hdGNoZWQuZmluZCh1PT5Ucyh1LGEpKT9yLnB1c2goYSk6bi5wdXNoKGEpKTtjb25zdCBsPWUubWF0Y2hlZFtpXTtsJiYodC5tYXRjaGVkLmZpbmQodT0+VHModSxsKSl8fG8ucHVzaChsKSl9cmV0dXJuW24scixvXX1sZXQgUkU9KCk9PmxvY2F0aW9uLnByb3RvY29sKyIvLyIrbG9jYXRpb24uaG9zdDtmdW5jdGlvbiBodihlLHQpe2NvbnN0e3BhdGhuYW1lOm4sc2VhcmNoOnIsaGFzaDpvfT10LHM9ZS5pbmRleE9mKCIjIik7aWYocz4tMSl7bGV0IGk9by5pbmNsdWRlcyhlLnNsaWNlKHMpKT9lLnNsaWNlKHMpLmxlbmd0aDoxLGE9by5zbGljZShpKTtyZXR1cm4gYVswXSE9PSIvIiYmKGE9Ii8iK2EpLFVwKGEsIiIpfXJldHVybiBVcChuLGUpK3Irb31mdW5jdGlvbiBORShlLHQsbixyKXtsZXQgbz1bXSxzPVtdLGk9bnVsbDtjb25zdCBhPSh7c3RhdGU6ZH0pPT57Y29uc3QgcD1odihlLGxvY2F0aW9uKSxtPW4udmFsdWUseT10LnZhbHVlO2xldCBfPTA7aWYoZCl7aWYobi52YWx1ZT1wLHQudmFsdWU9ZCxpJiZpPT09bSl7aT1udWxsO3JldHVybn1fPXk/ZC5wb3NpdGlvbi15LnBvc2l0aW9uOjB9ZWxzZSByKHApO28uZm9yRWFjaCh3PT57dyhuLnZhbHVlLG0se2RlbHRhOl8sdHlwZTprdS5wb3AsZGlyZWN0aW9uOl8/Xz4wP0VjLmZvcndhcmQ6RWMuYmFjazpFYy51bmtub3dufSl9KX07ZnVuY3Rpb24gbCgpe2k9bi52YWx1ZX1mdW5jdGlvbiB1KGQpe28ucHVzaChkKTtjb25zdCBwPSgpPT57Y29uc3QgbT1vLmluZGV4T2YoZCk7bT4tMSYmby5zcGxpY2UobSwxKX07cmV0dXJuIHMucHVzaChwKSxwfWZ1bmN0aW9uIGMoKXtpZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIil7Y29uc3R7aGlzdG9yeTpkfT13aW5kb3c7aWYoIWQuc3RhdGUpcmV0dXJuO2QucmVwbGFjZVN0YXRlKHR0KHt9LGQuc3RhdGUse3Njcm9sbDpQbCgpfSksIiIpfX1mdW5jdGlvbiBmKCl7Zm9yKGNvbnN0IGQgb2YgcylkKCk7cz1bXSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLGEpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsYyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsYyl9cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsYSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIixjKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixjKSx7cGF1c2VMaXN0ZW5lcnM6bCxsaXN0ZW46dSxkZXN0cm95OmZ9fWZ1bmN0aW9uIEtwKGUsdCxuLHI9ITEsbz0hMSl7cmV0dXJue2JhY2s6ZSxjdXJyZW50OnQsZm9yd2FyZDpuLHJlcGxhY2VkOnIscG9zaXRpb246d2luZG93Lmhpc3RvcnkubGVuZ3RoLHNjcm9sbDpvP1BsKCk6bnVsbH19ZnVuY3Rpb24gREUoZSl7Y29uc3R7aGlzdG9yeTp0LGxvY2F0aW9uOm59PXdpbmRvdyxyPXt2YWx1ZTpodihlLG4pfSxvPXt2YWx1ZTp0LnN0YXRlfTtvLnZhbHVlfHxzKHIudmFsdWUse2JhY2s6bnVsbCxjdXJyZW50OnIudmFsdWUsZm9yd2FyZDpudWxsLHBvc2l0aW9uOnQubGVuZ3RoLTEscmVwbGFjZWQ6ITAsc2Nyb2xsOm51bGx9LCEwKTtmdW5jdGlvbiBzKGwsdSxjKXtjb25zdCBmPWUuaW5kZXhPZigiIyIpLGQ9Zj4tMT8obi5ob3N0JiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIik/ZTplLnNsaWNlKGYpKStsOlJFKCkrZStsO3RyeXt0W2M/InJlcGxhY2VTdGF0ZSI6InB1c2hTdGF0ZSJdKHUsIiIsZCksby52YWx1ZT11fWNhdGNoe25bYz8icmVwbGFjZSI6ImFzc2lnbiJdKGQpfX1mdW5jdGlvbiBpKGwsdSl7cyhsLHR0KHt9LHQuc3RhdGUsS3Aoby52YWx1ZS5iYWNrLGwsby52YWx1ZS5mb3J3YXJkLCEwKSx1LHtwb3NpdGlvbjpvLnZhbHVlLnBvc2l0aW9ufSksITApLHIudmFsdWU9bH1mdW5jdGlvbiBhKGwsdSl7Y29uc3QgYz10dCh7fSxvLnZhbHVlLHQuc3RhdGUse2ZvcndhcmQ6bCxzY3JvbGw6UGwoKX0pO3MoYy5jdXJyZW50LGMsITApLHMobCx0dCh7fSxLcChyLnZhbHVlLGwsbnVsbCkse3Bvc2l0aW9uOmMucG9zaXRpb24rMX0sdSksITEpLHIudmFsdWU9bH1yZXR1cm57bG9jYXRpb246cixzdGF0ZTpvLHB1c2g6YSxyZXBsYWNlOml9fWZ1bmN0aW9uIExFKGUpe2U9X0UoZSk7Y29uc3QgdD1ERShlKSxuPU5FKGUsdC5zdGF0ZSx0LmxvY2F0aW9uLHQucmVwbGFjZSk7ZnVuY3Rpb24gcihzLGk9ITApe2l8fG4ucGF1c2VMaXN0ZW5lcnMoKSxoaXN0b3J5LmdvKHMpfWNvbnN0IG89dHQoe2xvY2F0aW9uOiIiLGJhc2U6ZSxnbzpyLGNyZWF0ZUhyZWY6U0UuYmluZChudWxsLGUpfSx0LG4pO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobywibG9jYXRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+dC5sb2NhdGlvbi52YWx1ZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJzdGF0ZSIse2VudW1lcmFibGU6ITAsZ2V0OigpPT50LnN0YXRlLnZhbHVlfSksb31sZXQgUG89KGZ1bmN0aW9uKGUpe3JldHVybiBlW2UuU3RhdGljPTBdPSJTdGF0aWMiLGVbZS5QYXJhbT0xXT0iUGFyYW0iLGVbZS5Hcm91cD0yXT0iR3JvdXAiLGV9KSh7fSk7dmFyIFJ0PShmdW5jdGlvbihlKXtyZXR1cm4gZVtlLlN0YXRpYz0wXT0iU3RhdGljIixlW2UuUGFyYW09MV09IlBhcmFtIixlW2UuUGFyYW1SZWdFeHA9Ml09IlBhcmFtUmVnRXhwIixlW2UuUGFyYW1SZWdFeHBFbmQ9M109IlBhcmFtUmVnRXhwRW5kIixlW2UuRXNjYXBlTmV4dD00XT0iRXNjYXBlTmV4dCIsZX0pKFJ0fHx7fSk7Y29uc3QgJEU9e3R5cGU6UG8uU3RhdGljLHZhbHVlOiIifSxNRT0vW2EtekEtWjAtOV9dLztmdW5jdGlvbiBCRShlKXtpZighZSlyZXR1cm5bW11dO2lmKGU9PT0iLyIpcmV0dXJuW1skRV1dO2lmKCFlLnN0YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aCAiJHtlfSJgKTtmdW5jdGlvbiB0KHApe3Rocm93IG5ldyBFcnJvcihgRVJSICgke259KS8iJHt1fSI6ICR7cH1gKX1sZXQgbj1SdC5TdGF0aWMscj1uO2NvbnN0IG89W107bGV0IHM7ZnVuY3Rpb24gaSgpe3MmJm8ucHVzaChzKSxzPVtdfWxldCBhPTAsbCx1PSIiLGM9IiI7ZnVuY3Rpb24gZigpe3UmJihuPT09UnQuU3RhdGljP3MucHVzaCh7dHlwZTpQby5TdGF0aWMsdmFsdWU6dX0pOm49PT1SdC5QYXJhbXx8bj09PVJ0LlBhcmFtUmVnRXhwfHxuPT09UnQuUGFyYW1SZWdFeHBFbmQ/KHMubGVuZ3RoPjEmJihsPT09IioifHxsPT09IisiKSYmdChgQSByZXBlYXRhYmxlIHBhcmFtICgke3V9KSBtdXN0IGJlIGFsb25lIGluIGl0cyBzZWdtZW50LiBlZzogJy86aWRzKy5gKSxzLnB1c2goe3R5cGU6UG8uUGFyYW0sdmFsdWU6dSxyZWdleHA6YyxyZXBlYXRhYmxlOmw9PT0iKiJ8fGw9PT0iKyIsb3B0aW9uYWw6bD09PSIqInx8bD09PSI/In0pKTp0KCJJbnZhbGlkIHN0YXRlIHRvIGNvbnN1bWUgYnVmZmVyIiksdT0iIil9ZnVuY3Rpb24gZCgpe3UrPWx9Zm9yKDthPGUubGVuZ3RoOyl7aWYobD1lW2ErK10sbD09PSJcXCImJm4hPT1SdC5QYXJhbVJlZ0V4cCl7cj1uLG49UnQuRXNjYXBlTmV4dDtjb250aW51ZX1zd2l0Y2gobil7Y2FzZSBSdC5TdGF0aWM6bD09PSIvIj8odSYmZigpLGkoKSk6bD09PSI6Ij8oZigpLG49UnQuUGFyYW0pOmQoKTticmVhaztjYXNlIFJ0LkVzY2FwZU5leHQ6ZCgpLG49cjticmVhaztjYXNlIFJ0LlBhcmFtOmw9PT0iKCI/bj1SdC5QYXJhbVJlZ0V4cDpNRS50ZXN0KGwpP2QoKTooZigpLG49UnQuU3RhdGljLGwhPT0iKiImJmwhPT0iPyImJmwhPT0iKyImJmEtLSk7YnJlYWs7Y2FzZSBSdC5QYXJhbVJlZ0V4cDpsPT09IikiP2NbYy5sZW5ndGgtMV09PSJcXCI/Yz1jLnNsaWNlKDAsLTEpK2w6bj1SdC5QYXJhbVJlZ0V4cEVuZDpjKz1sO2JyZWFrO2Nhc2UgUnQuUGFyYW1SZWdFeHBFbmQ6ZigpLG49UnQuU3RhdGljLGwhPT0iKiImJmwhPT0iPyImJmwhPT0iKyImJmEtLSxjPSIiO2JyZWFrO2RlZmF1bHQ6dCgiVW5rbm93biBzdGF0ZSIpO2JyZWFrfX1yZXR1cm4gbj09PVJ0LlBhcmFtUmVnRXhwJiZ0KGBVbmZpbmlzaGVkIGN1c3RvbSBSZWdFeHAgZm9yIHBhcmFtICIke3V9ImApLGYoKSxpKCksb31jb25zdCBRcD0iW14vXSs/IixxRT17c2Vuc2l0aXZlOiExLHN0cmljdDohMSxzdGFydDohMCxlbmQ6ITB9O3ZhciB0bj0oZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5fbXVsdGlwbGllcj0xMF09Il9tdWx0aXBsaWVyIixlW2UuUm9vdD05MF09IlJvb3QiLGVbZS5TZWdtZW50PTQwXT0iU2VnbWVudCIsZVtlLlN1YlNlZ21lbnQ9MzBdPSJTdWJTZWdtZW50IixlW2UuU3RhdGljPTQwXT0iU3RhdGljIixlW2UuRHluYW1pYz0yMF09IkR5bmFtaWMiLGVbZS5Cb251c0N1c3RvbVJlZ0V4cD0xMF09IkJvbnVzQ3VzdG9tUmVnRXhwIixlW2UuQm9udXNXaWxkY2FyZD0tNTBdPSJCb251c1dpbGRjYXJkIixlW2UuQm9udXNSZXBlYXRhYmxlPS0yMF09IkJvbnVzUmVwZWF0YWJsZSIsZVtlLkJvbnVzT3B0aW9uYWw9LThdPSJCb251c09wdGlvbmFsIixlW2UuQm9udXNTdHJpY3Q9LjcwMDAwMDAwMDAwMDAwMDFdPSJCb251c1N0cmljdCIsZVtlLkJvbnVzQ2FzZVNlbnNpdGl2ZT0uMjVdPSJCb251c0Nhc2VTZW5zaXRpdmUiLGV9KSh0bnx8e30pO2NvbnN0IEZFPS9bLisqP14ke30oKVtcXS9cXF0vZztmdW5jdGlvbiB6RShlLHQpe2NvbnN0IG49dHQoe30scUUsdCkscj1bXTtsZXQgbz1uLnN0YXJ0PyJeIjoiIjtjb25zdCBzPVtdO2Zvcihjb25zdCB1IG9mIGUpe2NvbnN0IGM9dS5sZW5ndGg/W106W3RuLlJvb3RdO24uc3RyaWN0JiYhdS5sZW5ndGgmJihvKz0iLyIpO2ZvcihsZXQgZj0wO2Y8dS5sZW5ndGg7ZisrKXtjb25zdCBkPXVbZl07bGV0IHA9dG4uU2VnbWVudCsobi5zZW5zaXRpdmU/dG4uQm9udXNDYXNlU2Vuc2l0aXZlOjApO2lmKGQudHlwZT09PVBvLlN0YXRpYylmfHwobys9Ii8iKSxvKz1kLnZhbHVlLnJlcGxhY2UoRkUsIlxcJCYiKSxwKz10bi5TdGF0aWM7ZWxzZSBpZihkLnR5cGU9PT1Qby5QYXJhbSl7Y29uc3R7dmFsdWU6bSxyZXBlYXRhYmxlOnksb3B0aW9uYWw6XyxyZWdleHA6d309ZDtzLnB1c2goe25hbWU6bSxyZXBlYXRhYmxlOnksb3B0aW9uYWw6X30pO2NvbnN0IHY9d3x8UXA7aWYodiE9PVFwKXtwKz10bi5Cb251c0N1c3RvbVJlZ0V4cDt0cnl7bmV3IFJlZ0V4cChgKCR7dn0pYCl9Y2F0Y2goYil7dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGN1c3RvbSBSZWdFeHAgZm9yIHBhcmFtICIke219IiAoJHt2fSk6IGArYi5tZXNzYWdlKX19bGV0IGg9eT9gKCg/OiR7dn0pKD86Lyg/OiR7dn0pKSopYDpgKCR7dn0pYDtmfHwoaD1fJiZ1Lmxlbmd0aDwyP2AoPzovJHtofSlgOiIvIitoKSxfJiYoaCs9Ij8iKSxvKz1oLHArPXRuLkR5bmFtaWMsXyYmKHArPXRuLkJvbnVzT3B0aW9uYWwpLHkmJihwKz10bi5Cb251c1JlcGVhdGFibGUpLHY9PT0iLioiJiYocCs9dG4uQm9udXNXaWxkY2FyZCl9Yy5wdXNoKHApfXIucHVzaChjKX1pZihuLnN0cmljdCYmbi5lbmQpe2NvbnN0IHU9ci5sZW5ndGgtMTtyW3VdW3JbdV0ubGVuZ3RoLTFdKz10bi5Cb251c1N0cmljdH1uLnN0cmljdHx8KG8rPSIvPyIpLG4uZW5kP28rPSIkIjpuLnN0cmljdCYmIW8uZW5kc1dpdGgoIi8iKSYmKG8rPSIoPzovfCQpIik7Y29uc3QgaT1uZXcgUmVnRXhwKG8sbi5zZW5zaXRpdmU/IiI6ImkiKTtmdW5jdGlvbiBhKHUpe2NvbnN0IGM9dS5tYXRjaChpKSxmPXt9O2lmKCFjKXJldHVybiBudWxsO2ZvcihsZXQgZD0xO2Q8Yy5sZW5ndGg7ZCsrKXtjb25zdCBwPWNbZF18fCIiLG09c1tkLTFdO2ZbbS5uYW1lXT1wJiZtLnJlcGVhdGFibGU/cC5zcGxpdCgiLyIpOnB9cmV0dXJuIGZ9ZnVuY3Rpb24gbCh1KXtsZXQgYz0iIixmPSExO2Zvcihjb25zdCBkIG9mIGUpeyghZnx8IWMuZW5kc1dpdGgoIi8iKSkmJihjKz0iLyIpLGY9ITE7Zm9yKGNvbnN0IHAgb2YgZClpZihwLnR5cGU9PT1Qby5TdGF0aWMpYys9cC52YWx1ZTtlbHNlIGlmKHAudHlwZT09PVBvLlBhcmFtKXtjb25zdHt2YWx1ZTptLHJlcGVhdGFibGU6eSxvcHRpb25hbDpffT1wLHc9bSBpbiB1P3VbbV06IiI7aWYoV24odykmJiF5KXRocm93IG5ldyBFcnJvcihgUHJvdmlkZWQgcGFyYW0gIiR7bX0iIGlzIGFuIGFycmF5IGJ1dCBpdCBpcyBub3QgcmVwZWF0YWJsZSAoKiBvciArIG1vZGlmaWVycylgKTtjb25zdCB2PVduKHcpP3cuam9pbigiLyIpOnc7aWYoIXYpaWYoXylkLmxlbmd0aDwyJiYoYy5lbmRzV2l0aCgiLyIpP2M9Yy5zbGljZSgwLC0xKTpmPSEwKTtlbHNlIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyByZXF1aXJlZCBwYXJhbSAiJHttfSJgKTtjKz12fX1yZXR1cm4gY3x8Ii8ifXJldHVybntyZTppLHNjb3JlOnIsa2V5czpzLHBhcnNlOmEsc3RyaW5naWZ5Omx9fWZ1bmN0aW9uIGpFKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgmJm48dC5sZW5ndGg7KXtjb25zdCByPXRbbl0tZVtuXTtpZihyKXJldHVybiByO24rK31yZXR1cm4gZS5sZW5ndGg8dC5sZW5ndGg/ZS5sZW5ndGg9PT0xJiZlWzBdPT09dG4uU3RhdGljK3RuLlNlZ21lbnQ/LTE6MTplLmxlbmd0aD50Lmxlbmd0aD90Lmxlbmd0aD09PTEmJnRbMF09PT10bi5TdGF0aWMrdG4uU2VnbWVudD8xOi0xOjB9ZnVuY3Rpb24gZ3YoZSx0KXtsZXQgbj0wO2NvbnN0IHI9ZS5zY29yZSxvPXQuc2NvcmU7Zm9yKDtuPHIubGVuZ3RoJiZuPG8ubGVuZ3RoOyl7Y29uc3Qgcz1qRShyW25dLG9bbl0pO2lmKHMpcmV0dXJuIHM7bisrfWlmKE1hdGguYWJzKG8ubGVuZ3RoLXIubGVuZ3RoKT09PTEpe2lmKFlwKHIpKXJldHVybiAxO2lmKFlwKG8pKXJldHVybi0xfXJldHVybiBvLmxlbmd0aC1yLmxlbmd0aH1mdW5jdGlvbiBZcChlKXtjb25zdCB0PWVbZS5sZW5ndGgtMV07cmV0dXJuIGUubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV08MH1jb25zdCBWRT17c3RyaWN0OiExLGVuZDohMCxzZW5zaXRpdmU6ITF9O2Z1bmN0aW9uIFVFKGUsdCxuKXtjb25zdCByPXpFKEJFKGUucGF0aCksbiksbz10dChyLHtyZWNvcmQ6ZSxwYXJlbnQ6dCxjaGlsZHJlbjpbXSxhbGlhczpbXX0pO3JldHVybiB0JiYhby5yZWNvcmQuYWxpYXNPZj09IXQucmVjb3JkLmFsaWFzT2YmJnQuY2hpbGRyZW4ucHVzaChvKSxvfWZ1bmN0aW9uIEhFKGUsdCl7Y29uc3Qgbj1bXSxyPW5ldyBNYXA7dD1qcChWRSx0KTtmdW5jdGlvbiBvKGYpe3JldHVybiByLmdldChmKX1mdW5jdGlvbiBzKGYsZCxwKXtjb25zdCBtPSFwLHk9WHAoZik7eS5hbGlhc09mPXAmJnAucmVjb3JkO2NvbnN0IF89anAodCxmKSx3PVt5XTtpZigiYWxpYXMiaW4gZil7Y29uc3QgYj10eXBlb2YgZi5hbGlhcz09InN0cmluZyI/W2YuYWxpYXNdOmYuYWxpYXM7Zm9yKGNvbnN0IHggb2YgYil3LnB1c2goWHAodHQoe30seSx7Y29tcG9uZW50czpwP3AucmVjb3JkLmNvbXBvbmVudHM6eS5jb21wb25lbnRzLHBhdGg6eCxhbGlhc09mOnA/cC5yZWNvcmQ6eX0pKSl9bGV0IHYsaDtmb3IoY29uc3QgYiBvZiB3KXtjb25zdHtwYXRoOnh9PWI7aWYoZCYmeFswXSE9PSIvIil7Y29uc3QgUz1kLnJlY29yZC5wYXRoLGs9U1tTLmxlbmd0aC0xXT09PSIvIj8iIjoiLyI7Yi5wYXRoPWQucmVjb3JkLnBhdGgrKHgmJmsreCl9aWYodj1VRShiLGQsXykscD9wLmFsaWFzLnB1c2godik6KGg9aHx8dixoIT09diYmaC5hbGlhcy5wdXNoKHYpLG0mJmYubmFtZSYmIVpwKHYpJiZpKGYubmFtZSkpLHl2KHYpJiZsKHYpLHkuY2hpbGRyZW4pe2NvbnN0IFM9eS5jaGlsZHJlbjtmb3IobGV0IGs9MDtrPFMubGVuZ3RoO2srKylzKFNba10sdixwJiZwLmNoaWxkcmVuW2tdKX1wPXB8fHZ9cmV0dXJuIGg/KCk9PntpKGgpfTpmaX1mdW5jdGlvbiBpKGYpe2lmKG12KGYpKXtjb25zdCBkPXIuZ2V0KGYpO2QmJihyLmRlbGV0ZShmKSxuLnNwbGljZShuLmluZGV4T2YoZCksMSksZC5jaGlsZHJlbi5mb3JFYWNoKGkpLGQuYWxpYXMuZm9yRWFjaChpKSl9ZWxzZXtjb25zdCBkPW4uaW5kZXhPZihmKTtkPi0xJiYobi5zcGxpY2UoZCwxKSxmLnJlY29yZC5uYW1lJiZyLmRlbGV0ZShmLnJlY29yZC5uYW1lKSxmLmNoaWxkcmVuLmZvckVhY2goaSksZi5hbGlhcy5mb3JFYWNoKGkpKX19ZnVuY3Rpb24gYSgpe3JldHVybiBufWZ1bmN0aW9uIGwoZil7Y29uc3QgZD1LRShmLG4pO24uc3BsaWNlKGQsMCxmKSxmLnJlY29yZC5uYW1lJiYhWnAoZikmJnIuc2V0KGYucmVjb3JkLm5hbWUsZil9ZnVuY3Rpb24gdShmLGQpe2xldCBwLG09e30seSxfO2lmKCJuYW1lImluIGYmJmYubmFtZSl7aWYocD1yLmdldChmLm5hbWUpLCFwKXRocm93IEVzKGd0Lk1BVENIRVJfTk9UX0ZPVU5ELHtsb2NhdGlvbjpmfSk7Xz1wLnJlY29yZC5uYW1lLG09dHQoSnAoZC5wYXJhbXMscC5rZXlzLmZpbHRlcihoPT4haC5vcHRpb25hbCkuY29uY2F0KHAucGFyZW50P3AucGFyZW50LmtleXMuZmlsdGVyKGg9Pmgub3B0aW9uYWwpOltdKS5tYXAoaD0+aC5uYW1lKSksZi5wYXJhbXMmJkpwKGYucGFyYW1zLHAua2V5cy5tYXAoaD0+aC5uYW1lKSkpLHk9cC5zdHJpbmdpZnkobSl9ZWxzZSBpZihmLnBhdGghPW51bGwpeT1mLnBhdGgscD1uLmZpbmQoaD0+aC5yZS50ZXN0KHkpKSxwJiYobT1wLnBhcnNlKHkpLF89cC5yZWNvcmQubmFtZSk7ZWxzZXtpZihwPWQubmFtZT9yLmdldChkLm5hbWUpOm4uZmluZChoPT5oLnJlLnRlc3QoZC5wYXRoKSksIXApdGhyb3cgRXMoZ3QuTUFUQ0hFUl9OT1RfRk9VTkQse2xvY2F0aW9uOmYsY3VycmVudExvY2F0aW9uOmR9KTtfPXAucmVjb3JkLm5hbWUsbT10dCh7fSxkLnBhcmFtcyxmLnBhcmFtcykseT1wLnN0cmluZ2lmeShtKX1jb25zdCB3PVtdO2xldCB2PXA7Zm9yKDt2Oyl3LnVuc2hpZnQodi5yZWNvcmQpLHY9di5wYXJlbnQ7cmV0dXJue25hbWU6XyxwYXRoOnkscGFyYW1zOm0sbWF0Y2hlZDp3LG1ldGE6R0Uodyl9fWUuZm9yRWFjaChmPT5zKGYpKTtmdW5jdGlvbiBjKCl7bi5sZW5ndGg9MCxyLmNsZWFyKCl9cmV0dXJue2FkZFJvdXRlOnMscmVzb2x2ZTp1LHJlbW92ZVJvdXRlOmksY2xlYXJSb3V0ZXM6YyxnZXRSb3V0ZXM6YSxnZXRSZWNvcmRNYXRjaGVyOm99fWZ1bmN0aW9uIEpwKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBvZiB0KXIgaW4gZSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gWHAoZSl7Y29uc3QgdD17cGF0aDplLnBhdGgscmVkaXJlY3Q6ZS5yZWRpcmVjdCxuYW1lOmUubmFtZSxtZXRhOmUubWV0YXx8e30sYWxpYXNPZjplLmFsaWFzT2YsYmVmb3JlRW50ZXI6ZS5iZWZvcmVFbnRlcixwcm9wczpXRShlKSxjaGlsZHJlbjplLmNoaWxkcmVufHxbXSxpbnN0YW5jZXM6e30sbGVhdmVHdWFyZHM6bmV3IFNldCx1cGRhdGVHdWFyZHM6bmV3IFNldCxlbnRlckNhbGxiYWNrczp7fSxjb21wb25lbnRzOiJjb21wb25lbnRzImluIGU/ZS5jb21wb25lbnRzfHxudWxsOmUuY29tcG9uZW50JiZ7ZGVmYXVsdDplLmNvbXBvbmVudH19O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibW9kcyIse3ZhbHVlOnt9fSksdH1mdW5jdGlvbiBXRShlKXtjb25zdCB0PXt9LG49ZS5wcm9wc3x8ITE7aWYoImNvbXBvbmVudCJpbiBlKXQuZGVmYXVsdD1uO2Vsc2UgZm9yKGNvbnN0IHIgaW4gZS5jb21wb25lbnRzKXRbcl09dHlwZW9mIG49PSJvYmplY3QiP25bcl06bjtyZXR1cm4gdH1mdW5jdGlvbiBacChlKXtmb3IoO2U7KXtpZihlLnJlY29yZC5hbGlhc09mKXJldHVybiEwO2U9ZS5wYXJlbnR9cmV0dXJuITF9ZnVuY3Rpb24gR0UoZSl7cmV0dXJuIGUucmVkdWNlKCh0LG4pPT50dCh0LG4ubWV0YSkse30pfWZ1bmN0aW9uIEtFKGUsdCl7bGV0IG49MCxyPXQubGVuZ3RoO2Zvcig7biE9PXI7KXtjb25zdCBzPW4rcj4+MTtndihlLHRbc10pPDA/cj1zOm49cysxfWNvbnN0IG89UUUoZSk7cmV0dXJuIG8mJihyPXQubGFzdEluZGV4T2YobyxyLTEpKSxyfWZ1bmN0aW9uIFFFKGUpe2xldCB0PWU7Zm9yKDt0PXQucGFyZW50OylpZih5dih0KSYmZ3YoZSx0KT09PTApcmV0dXJuIHR9ZnVuY3Rpb24geXYoe3JlY29yZDplfSl7cmV0dXJuISEoZS5uYW1lfHxlLmNvbXBvbmVudHMmJk9iamVjdC5rZXlzKGUuY29tcG9uZW50cykubGVuZ3RofHxlLnJlZGlyZWN0KX1mdW5jdGlvbiBlbShlKXtjb25zdCB0PUtlKERmKSxuPUtlKExmKSxyPU4oKCk9Pntjb25zdCBsPWcoZS50byk7cmV0dXJuIHQucmVzb2x2ZShsKX0pLG89TigoKT0+e2NvbnN0e21hdGNoZWQ6bH09ci52YWx1ZSx7bGVuZ3RoOnV9PWwsYz1sW3UtMV0sZj1uLm1hdGNoZWQ7aWYoIWN8fCFmLmxlbmd0aClyZXR1cm4tMTtjb25zdCBkPWYuZmluZEluZGV4KFRzLmJpbmQobnVsbCxjKSk7aWYoZD4tMSlyZXR1cm4gZDtjb25zdCBwPXRtKGxbdS0yXSk7cmV0dXJuIHU+MSYmdG0oYyk9PT1wJiZmW2YubGVuZ3RoLTFdLnBhdGghPT1wP2YuZmluZEluZGV4KFRzLmJpbmQobnVsbCxsW3UtMl0pKTpkfSkscz1OKCgpPT5vLnZhbHVlPi0xJiZlVChuLnBhcmFtcyxyLnZhbHVlLnBhcmFtcykpLGk9TigoKT0+by52YWx1ZT4tMSYmby52YWx1ZT09PW4ubWF0Y2hlZC5sZW5ndGgtMSYmcHYobi5wYXJhbXMsci52YWx1ZS5wYXJhbXMpKTtmdW5jdGlvbiBhKGw9e30pe2lmKFpFKGwpKXtjb25zdCB1PXRbZyhlLnJlcGxhY2UpPyJyZXBsYWNlIjoicHVzaCJdKGcoZS50bykpLmNhdGNoKGZpKTtyZXR1cm4gZS52aWV3VHJhbnNpdGlvbiYmdHlwZW9mIGRvY3VtZW50PCJ1IiYmInN0YXJ0Vmlld1RyYW5zaXRpb24iaW4gZG9jdW1lbnQmJmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCk9PnUpLHV9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfXJldHVybntyb3V0ZTpyLGhyZWY6TigoKT0+ci52YWx1ZS5ocmVmKSxpc0FjdGl2ZTpzLGlzRXhhY3RBY3RpdmU6aSxuYXZpZ2F0ZTphfX1mdW5jdGlvbiBZRShlKXtyZXR1cm4gZS5sZW5ndGg9PT0xP2VbMF06ZX1jb25zdCBKRT1zZSh7bmFtZToiUm91dGVyTGluayIsY29tcGF0Q29uZmlnOntNT0RFOjN9LHByb3BzOnt0bzp7dHlwZTpbU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITB9LHJlcGxhY2U6Qm9vbGVhbixhY3RpdmVDbGFzczpTdHJpbmcsZXhhY3RBY3RpdmVDbGFzczpTdHJpbmcsY3VzdG9tOkJvb2xlYW4sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoicGFnZSJ9LHZpZXdUcmFuc2l0aW9uOkJvb2xlYW59LHVzZUxpbms6ZW0sc2V0dXAoZSx7c2xvdHM6dH0pe2NvbnN0IG49YnQoZW0oZSkpLHtvcHRpb25zOnJ9PUtlKERmKSxvPU4oKCk9Pih7W25tKGUuYWN0aXZlQ2xhc3Msci5saW5rQWN0aXZlQ2xhc3MsInJvdXRlci1saW5rLWFjdGl2ZSIpXTpuLmlzQWN0aXZlLFtubShlLmV4YWN0QWN0aXZlQ2xhc3Msci5saW5rRXhhY3RBY3RpdmVDbGFzcywicm91dGVyLWxpbmstZXhhY3QtYWN0aXZlIildOm4uaXNFeGFjdEFjdGl2ZX0pKTtyZXR1cm4oKT0+e2NvbnN0IHM9dC5kZWZhdWx0JiZZRSh0LmRlZmF1bHQobikpO3JldHVybiBlLmN1c3RvbT9zOkZlKCJhIix7ImFyaWEtY3VycmVudCI6bi5pc0V4YWN0QWN0aXZlP2UuYXJpYUN1cnJlbnRWYWx1ZTpudWxsLGhyZWY6bi5ocmVmLG9uQ2xpY2s6bi5uYXZpZ2F0ZSxjbGFzczpvLnZhbHVlfSxzKX19fSksWEU9SkU7ZnVuY3Rpb24gWkUoZSl7aWYoIShlLm1ldGFLZXl8fGUuYWx0S2V5fHxlLmN0cmxLZXl8fGUuc2hpZnRLZXkpJiYhZS5kZWZhdWx0UHJldmVudGVkJiYhKGUuYnV0dG9uIT09dm9pZCAwJiZlLmJ1dHRvbiE9PTApKXtpZihlLmN1cnJlbnRUYXJnZXQmJmUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUpe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgidGFyZ2V0Iik7aWYoL1xiX2JsYW5rXGIvaS50ZXN0KHQpKXJldHVybn1yZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCYmZS5wcmV2ZW50RGVmYXVsdCgpLCEwfX1mdW5jdGlvbiBlVChlLHQpe2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IHI9dFtuXSxvPWVbbl07aWYodHlwZW9mIHI9PSJzdHJpbmciKXtpZihyIT09bylyZXR1cm4hMX1lbHNlIGlmKCFXbihvKXx8by5sZW5ndGghPT1yLmxlbmd0aHx8ci5zb21lKChzLGkpPT5zLnZhbHVlT2YoKSE9PW9baV0udmFsdWVPZigpKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiB0bShlKXtyZXR1cm4gZT9lLmFsaWFzT2Y/ZS5hbGlhc09mLnBhdGg6ZS5wYXRoOiIifWNvbnN0IG5tPShlLHQsbik9PmU/P3Q/P24sdFQ9c2Uoe25hbWU6IlJvdXRlclZpZXciLGluaGVyaXRBdHRyczohMSxwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiZGVmYXVsdCJ9LHJvdXRlOk9iamVjdH0sY29tcGF0Q29uZmlnOntNT0RFOjN9LHNldHVwKGUse2F0dHJzOnQsc2xvdHM6bn0pe2NvbnN0IHI9S2UoeHUpLG89TigoKT0+ZS5yb3V0ZXx8ci52YWx1ZSkscz1LZShWcCwwKSxpPU4oKCk9PntsZXQgdT1nKHMpO2NvbnN0e21hdGNoZWQ6Y309by52YWx1ZTtsZXQgZjtmb3IoOyhmPWNbdV0pJiYhZi5jb21wb25lbnRzOyl1Kys7cmV0dXJuIHV9KSxhPU4oKCk9Pm8udmFsdWUubWF0Y2hlZFtpLnZhbHVlXSk7TnQoVnAsTigoKT0+aS52YWx1ZSsxKSksTnQoWGssYSksTnQoeHUsbyk7Y29uc3QgbD1HKCk7cmV0dXJuIFBlKCgpPT5bbC52YWx1ZSxhLnZhbHVlLGUubmFtZV0sKFt1LGMsZl0sW2QscCxtXSk9PntjJiYoYy5pbnN0YW5jZXNbZl09dSxwJiZwIT09YyYmdSYmdT09PWQmJihjLmxlYXZlR3VhcmRzLnNpemV8fChjLmxlYXZlR3VhcmRzPXAubGVhdmVHdWFyZHMpLGMudXBkYXRlR3VhcmRzLnNpemV8fChjLnVwZGF0ZUd1YXJkcz1wLnVwZGF0ZUd1YXJkcykpKSx1JiZjJiYoIXB8fCFUcyhjLHApfHwhZCkmJihjLmVudGVyQ2FsbGJhY2tzW2ZdfHxbXSkuZm9yRWFjaCh5PT55KHUpKX0se2ZsdXNoOiJwb3N0In0pLCgpPT57Y29uc3QgdT1vLnZhbHVlLGM9ZS5uYW1lLGY9YS52YWx1ZSxkPWYmJmYuY29tcG9uZW50c1tjXTtpZighZClyZXR1cm4gcm0obi5kZWZhdWx0LHtDb21wb25lbnQ6ZCxyb3V0ZTp1fSk7Y29uc3QgcD1mLnByb3BzW2NdLG09cD9wPT09ITA/dS5wYXJhbXM6dHlwZW9mIHA9PSJmdW5jdGlvbiI/cCh1KTpwOm51bGwsXz1GZShkLHR0KHt9LG0sdCx7b25Wbm9kZVVubW91bnRlZDp3PT57dy5jb21wb25lbnQuaXNVbm1vdW50ZWQmJihmLmluc3RhbmNlc1tjXT1udWxsKX0scmVmOmx9KSk7cmV0dXJuIHJtKG4uZGVmYXVsdCx7Q29tcG9uZW50Ol8scm91dGU6dX0pfHxffX19KTtmdW5jdGlvbiBybShlLHQpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG49ZSh0KTtyZXR1cm4gbi5sZW5ndGg9PT0xP25bMF06bn1jb25zdCB2dj10VDtmdW5jdGlvbiBuVChlKXtjb25zdCB0PUhFKGUucm91dGVzLGUpLG49ZS5wYXJzZVF1ZXJ5fHxPRSxyPWUuc3RyaW5naWZ5UXVlcnl8fEdwLG89ZS5oaXN0b3J5LHM9VXMoKSxpPVVzKCksYT1VcygpLGw9T2UoT24pO2xldCB1PU9uO3NzJiZlLnNjcm9sbEJlaGF2aW9yJiYic2Nyb2xsUmVzdG9yYXRpb24iaW4gaGlzdG9yeSYmKGhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb249Im1hbnVhbCIpO2NvbnN0IGM9U2MuYmluZChudWxsLHo9PiIiK3opLGY9U2MuYmluZChudWxsLG1FKSxkPVNjLmJpbmQobnVsbCxFaSk7ZnVuY3Rpb24gcCh6LFkpe2xldCBKLGxlO3JldHVybiBtdih6KT8oSj10LmdldFJlY29yZE1hdGNoZXIoeiksbGU9WSk6bGU9eix0LmFkZFJvdXRlKGxlLEopfWZ1bmN0aW9uIG0oeil7Y29uc3QgWT10LmdldFJlY29yZE1hdGNoZXIoeik7WSYmdC5yZW1vdmVSb3V0ZShZKX1mdW5jdGlvbiB5KCl7cmV0dXJuIHQuZ2V0Um91dGVzKCkubWFwKHo9PnoucmVjb3JkKX1mdW5jdGlvbiBfKHope3JldHVybiEhdC5nZXRSZWNvcmRNYXRjaGVyKHopfWZ1bmN0aW9uIHcoeixZKXtpZihZPXR0KHt9LFl8fGwudmFsdWUpLHR5cGVvZiB6PT0ic3RyaW5nIil7Y29uc3QgTz1rYyhuLHosWS5wYXRoKSxxPXQucmVzb2x2ZSh7cGF0aDpPLnBhdGh9LFkpLEs9by5jcmVhdGVIcmVmKE8uZnVsbFBhdGgpO3JldHVybiB0dChPLHEse3BhcmFtczpkKHEucGFyYW1zKSxoYXNoOkVpKE8uaGFzaCkscmVkaXJlY3RlZEZyb206dm9pZCAwLGhyZWY6S30pfWxldCBKO2lmKHoucGF0aCE9bnVsbClKPXR0KHt9LHose3BhdGg6a2Mobix6LnBhdGgsWS5wYXRoKS5wYXRofSk7ZWxzZXtjb25zdCBPPXR0KHt9LHoucGFyYW1zKTtmb3IoY29uc3QgcSBpbiBPKU9bcV09PW51bGwmJmRlbGV0ZSBPW3FdO0o9dHQoe30seix7cGFyYW1zOmYoTyl9KSxZLnBhcmFtcz1mKFkucGFyYW1zKX1jb25zdCBsZT10LnJlc29sdmUoSixZKSx3ZT16Lmhhc2h8fCIiO2xlLnBhcmFtcz1jKGQobGUucGFyYW1zKSk7Y29uc3QgdGU9eUUocix0dCh7fSx6LHtoYXNoOmZFKHdlKSxwYXRoOmxlLnBhdGh9KSksRT1vLmNyZWF0ZUhyZWYodGUpO3JldHVybiB0dCh7ZnVsbFBhdGg6dGUsaGFzaDp3ZSxxdWVyeTpyPT09R3A/UEUoei5xdWVyeSk6ei5xdWVyeXx8e319LGxlLHtyZWRpcmVjdGVkRnJvbTp2b2lkIDAsaHJlZjpFfSl9ZnVuY3Rpb24gdih6KXtyZXR1cm4gdHlwZW9mIHo9PSJzdHJpbmciP2tjKG4seixsLnZhbHVlLnBhdGgpOnR0KHt9LHopfWZ1bmN0aW9uIGgoeixZKXtpZih1IT09eilyZXR1cm4gRXMoZ3QuTkFWSUdBVElPTl9DQU5DRUxMRUQse2Zyb206WSx0bzp6fSl9ZnVuY3Rpb24gYih6KXtyZXR1cm4gayh6KX1mdW5jdGlvbiB4KHope3JldHVybiBiKHR0KHYoeikse3JlcGxhY2U6ITB9KSl9ZnVuY3Rpb24gUyh6LFkpe2NvbnN0IEo9ei5tYXRjaGVkW3oubWF0Y2hlZC5sZW5ndGgtMV07aWYoSiYmSi5yZWRpcmVjdCl7Y29uc3R7cmVkaXJlY3Q6bGV9PUo7bGV0IHdlPXR5cGVvZiBsZT09ImZ1bmN0aW9uIj9sZSh6LFkpOmxlO3JldHVybiB0eXBlb2Ygd2U9PSJzdHJpbmciJiYod2U9d2UuaW5jbHVkZXMoIj8iKXx8d2UuaW5jbHVkZXMoIiMiKT93ZT12KHdlKTp7cGF0aDp3ZX0sd2UucGFyYW1zPXt9KSx0dCh7cXVlcnk6ei5xdWVyeSxoYXNoOnouaGFzaCxwYXJhbXM6d2UucGF0aCE9bnVsbD97fTp6LnBhcmFtc30sd2UpfX1mdW5jdGlvbiBrKHosWSl7Y29uc3QgSj11PXcoeiksbGU9bC52YWx1ZSx3ZT16LnN0YXRlLHRlPXouZm9yY2UsRT16LnJlcGxhY2U9PT0hMCxPPVMoSixsZSk7aWYoTylyZXR1cm4gayh0dCh2KE8pLHtzdGF0ZTp0eXBlb2YgTz09Im9iamVjdCI/dHQoe30sd2UsTy5zdGF0ZSk6d2UsZm9yY2U6dGUscmVwbGFjZTpFfSksWXx8Sik7Y29uc3QgcT1KO3EucmVkaXJlY3RlZEZyb209WTtsZXQgSztyZXR1cm4hdGUmJnZFKHIsbGUsSikmJihLPUVzKGd0Lk5BVklHQVRJT05fRFVQTElDQVRFRCx7dG86cSxmcm9tOmxlfSksVmUobGUsbGUsITAsITEpKSwoSz9Qcm9taXNlLnJlc29sdmUoSyk6UChxLGxlKSkuY2F0Y2goSD0+eHIoSCk/eHIoSCxndC5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKT9IOm5lKEgpOkIoSCxxLGxlKSkudGhlbihIPT57aWYoSCl7aWYoeHIoSCxndC5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKSlyZXR1cm4gayh0dCh7cmVwbGFjZTpFfSx2KEgudG8pLHtzdGF0ZTp0eXBlb2YgSC50bz09Im9iamVjdCI/dHQoe30sd2UsSC50by5zdGF0ZSk6d2UsZm9yY2U6dGV9KSxZfHxxKX1lbHNlIEg9RChxLGxlLCEwLEUsd2UpO3JldHVybiBGKHEsbGUsSCksSH0pfWZ1bmN0aW9uIFQoeixZKXtjb25zdCBKPWgoeixZKTtyZXR1cm4gSj9Qcm9taXNlLnJlamVjdChKKTpQcm9taXNlLnJlc29sdmUoKX1mdW5jdGlvbiBDKHope2NvbnN0IFk9dmUudmFsdWVzKCkubmV4dCgpLnZhbHVlO3JldHVybiBZJiZ0eXBlb2YgWS5ydW5XaXRoQ29udGV4dD09ImZ1bmN0aW9uIj9ZLnJ1bldpdGhDb250ZXh0KHopOnooKX1mdW5jdGlvbiBQKHosWSl7bGV0IEo7Y29uc3RbbGUsd2UsdGVdPUlFKHosWSk7Sj1UYyhsZS5yZXZlcnNlKCksImJlZm9yZVJvdXRlTGVhdmUiLHosWSk7Zm9yKGNvbnN0IE8gb2YgbGUpTy5sZWF2ZUd1YXJkcy5mb3JFYWNoKHE9PntKLnB1c2gocm8ocSx6LFkpKX0pO2NvbnN0IEU9VC5iaW5kKG51bGwseixZKTtyZXR1cm4gSi5wdXNoKEUpLGVlKEopLnRoZW4oKCk9PntKPVtdO2Zvcihjb25zdCBPIG9mIHMubGlzdCgpKUoucHVzaChybyhPLHosWSkpO3JldHVybiBKLnB1c2goRSksZWUoSil9KS50aGVuKCgpPT57Sj1UYyh3ZSwiYmVmb3JlUm91dGVVcGRhdGUiLHosWSk7Zm9yKGNvbnN0IE8gb2Ygd2UpTy51cGRhdGVHdWFyZHMuZm9yRWFjaChxPT57Si5wdXNoKHJvKHEseixZKSl9KTtyZXR1cm4gSi5wdXNoKEUpLGVlKEopfSkudGhlbigoKT0+e0o9W107Zm9yKGNvbnN0IE8gb2YgdGUpaWYoTy5iZWZvcmVFbnRlcilpZihXbihPLmJlZm9yZUVudGVyKSlmb3IoY29uc3QgcSBvZiBPLmJlZm9yZUVudGVyKUoucHVzaChybyhxLHosWSkpO2Vsc2UgSi5wdXNoKHJvKE8uYmVmb3JlRW50ZXIseixZKSk7cmV0dXJuIEoucHVzaChFKSxlZShKKX0pLnRoZW4oKCk9Pih6Lm1hdGNoZWQuZm9yRWFjaChPPT5PLmVudGVyQ2FsbGJhY2tzPXt9KSxKPVRjKHRlLCJiZWZvcmVSb3V0ZUVudGVyIix6LFksQyksSi5wdXNoKEUpLGVlKEopKSkudGhlbigoKT0+e0o9W107Zm9yKGNvbnN0IE8gb2YgaS5saXN0KCkpSi5wdXNoKHJvKE8seixZKSk7cmV0dXJuIEoucHVzaChFKSxlZShKKX0pLmNhdGNoKE89PnhyKE8sZ3QuTkFWSUdBVElPTl9DQU5DRUxMRUQpP086UHJvbWlzZS5yZWplY3QoTykpfWZ1bmN0aW9uIEYoeixZLEope2EubGlzdCgpLmZvckVhY2gobGU9PkMoKCk9PmxlKHosWSxKKSkpfWZ1bmN0aW9uIEQoeixZLEosbGUsd2Upe2NvbnN0IHRlPWgoeixZKTtpZih0ZSlyZXR1cm4gdGU7Y29uc3QgRT1ZPT09T24sTz1zcz9oaXN0b3J5LnN0YXRlOnt9O0omJihsZXx8RT9vLnJlcGxhY2Uoei5mdWxsUGF0aCx0dCh7c2Nyb2xsOkUmJk8mJk8uc2Nyb2xsfSx3ZSkpOm8ucHVzaCh6LmZ1bGxQYXRoLHdlKSksbC52YWx1ZT16LFZlKHosWSxKLEUpLG5lKCl9bGV0IFc7ZnVuY3Rpb24gTCgpe1d8fChXPW8ubGlzdGVuKCh6LFksSik9PntpZighSWUubGlzdGVuaW5nKXJldHVybjtjb25zdCBsZT13KHopLHdlPVMobGUsSWUuY3VycmVudFJvdXRlLnZhbHVlKTtpZih3ZSl7ayh0dCh3ZSx7cmVwbGFjZTohMCxmb3JjZTohMH0pLGxlKS5jYXRjaChmaSk7cmV0dXJufXU9bGU7Y29uc3QgdGU9bC52YWx1ZTtzcyYmVEUoV3AodGUuZnVsbFBhdGgsSi5kZWx0YSksUGwoKSksUChsZSx0ZSkuY2F0Y2goRT0+eHIoRSxndC5OQVZJR0FUSU9OX0FCT1JURUR8Z3QuTkFWSUdBVElPTl9DQU5DRUxMRUQpP0U6eHIoRSxndC5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKT8oayh0dCh2KEUudG8pLHtmb3JjZTohMH0pLGxlKS50aGVuKE89Pnt4cihPLGd0Lk5BVklHQVRJT05fQUJPUlRFRHxndC5OQVZJR0FUSU9OX0RVUExJQ0FURUQpJiYhSi5kZWx0YSYmSi50eXBlPT09a3UucG9wJiZvLmdvKC0xLCExKX0pLmNhdGNoKGZpKSxQcm9taXNlLnJlamVjdCgpKTooSi5kZWx0YSYmby5nbygtSi5kZWx0YSwhMSksQihFLGxlLHRlKSkpLnRoZW4oRT0+e0U9RXx8RChsZSx0ZSwhMSksRSYmKEouZGVsdGEmJiF4cihFLGd0Lk5BVklHQVRJT05fQ0FOQ0VMTEVEKT9vLmdvKC1KLmRlbHRhLCExKTpKLnR5cGU9PT1rdS5wb3AmJnhyKEUsZ3QuTkFWSUdBVElPTl9BQk9SVEVEfGd0Lk5BVklHQVRJT05fRFVQTElDQVRFRCkmJm8uZ28oLTEsITEpKSxGKGxlLHRlLEUpfSkuY2F0Y2goZmkpfSkpfWxldCBqPVVzKCksST1VcygpLFY7ZnVuY3Rpb24gQih6LFksSil7bmUoeik7Y29uc3QgbGU9SS5saXN0KCk7cmV0dXJuIGxlLmxlbmd0aCYmbGUuZm9yRWFjaCh3ZT0+d2UoeixZLEopKSxQcm9taXNlLnJlamVjdCh6KX1mdW5jdGlvbiBpZSgpe3JldHVybiBWJiZsLnZhbHVlIT09T24/UHJvbWlzZS5yZXNvbHZlKCk6bmV3IFByb21pc2UoKHosWSk9PntqLmFkZChbeixZXSl9KX1mdW5jdGlvbiBuZSh6KXtyZXR1cm4gVnx8KFY9IXosTCgpLGoubGlzdCgpLmZvckVhY2goKFtZLEpdKT0+ej9KKHopOlkoKSksai5yZXNldCgpKSx6fWZ1bmN0aW9uIFZlKHosWSxKLGxlKXtjb25zdHtzY3JvbGxCZWhhdmlvcjp3ZX09ZTtpZighc3N8fCF3ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgdGU9IUomJkNFKFdwKHouZnVsbFBhdGgsMCkpfHwobGV8fCFKKSYmaGlzdG9yeS5zdGF0ZSYmaGlzdG9yeS5zdGF0ZS5zY3JvbGx8fG51bGw7cmV0dXJuIGl0KCkudGhlbigoKT0+d2UoeixZLHRlKSkudGhlbihFPT5FJiZFRShFKSkuY2F0Y2goRT0+QihFLHosWSkpfWNvbnN0IE5lPXo9Pm8uZ28oeik7bGV0IGV0O2NvbnN0IHZlPW5ldyBTZXQsSWU9e2N1cnJlbnRSb3V0ZTpsLGxpc3RlbmluZzohMCxhZGRSb3V0ZTpwLHJlbW92ZVJvdXRlOm0sY2xlYXJSb3V0ZXM6dC5jbGVhclJvdXRlcyxoYXNSb3V0ZTpfLGdldFJvdXRlczp5LHJlc29sdmU6dyxvcHRpb25zOmUscHVzaDpiLHJlcGxhY2U6eCxnbzpOZSxiYWNrOigpPT5OZSgtMSksZm9yd2FyZDooKT0+TmUoMSksYmVmb3JlRWFjaDpzLmFkZCxiZWZvcmVSZXNvbHZlOmkuYWRkLGFmdGVyRWFjaDphLmFkZCxvbkVycm9yOkkuYWRkLGlzUmVhZHk6aWUsaW5zdGFsbCh6KXt6LmNvbXBvbmVudCgiUm91dGVyTGluayIsWEUpLHouY29tcG9uZW50KCJSb3V0ZXJWaWV3Iix2diksei5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kcm91dGVyPUllLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCIkcm91dGUiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZyhsKX0pLHNzJiYhZXQmJmwudmFsdWU9PT1PbiYmKGV0PSEwLGIoby5sb2NhdGlvbikuY2F0Y2gobGU9Pnt9KSk7Y29uc3QgWT17fTtmb3IoY29uc3QgbGUgaW4gT24pT2JqZWN0LmRlZmluZVByb3BlcnR5KFksbGUse2dldDooKT0+bC52YWx1ZVtsZV0sZW51bWVyYWJsZTohMH0pO3oucHJvdmlkZShEZixJZSksei5wcm92aWRlKExmLFBuKFkpKSx6LnByb3ZpZGUoeHUsbCk7Y29uc3QgSj16LnVubW91bnQ7dmUuYWRkKHopLHoudW5tb3VudD1mdW5jdGlvbigpe3ZlLmRlbGV0ZSh6KSx2ZS5zaXplPDEmJih1PU9uLFcmJlcoKSxXPW51bGwsbC52YWx1ZT1PbixldD0hMSxWPSExKSxKKCl9fX07ZnVuY3Rpb24gZWUoeil7cmV0dXJuIHoucmVkdWNlKChZLEopPT5ZLnRoZW4oKCk9PkMoSikpLFByb21pc2UucmVzb2x2ZSgpKX1yZXR1cm4gSWV9Y29uc3QgclQ9Lyg6XHcrKVwoW14pXStcKS9nLG9UPS8oOlx3KylbPysqXS9nLHNUPS86XHcrL2csaVQ9KGUsdCk9PnQucGF0aC5yZXBsYWNlKHJULCIkMSIpLnJlcGxhY2Uob1QsIiQxIikucmVwbGFjZShzVCxuPT5lLnBhcmFtc1tuLnNsaWNlKDEpXT8udG9TdHJpbmcoKXx8IiIpLFR1PShlLHQpPT57Y29uc3Qgbj1lLnJvdXRlLm1hdGNoZWQuZmluZChvPT5vLmNvbXBvbmVudHM/LmRlZmF1bHQ9PT1lLkNvbXBvbmVudC50eXBlKSxyPXQ/P24/Lm1ldGEua2V5Pz8obiYmaVQoZS5yb3V0ZSxuKSk7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoZS5yb3V0ZSk6cn0sYVQ9KGUsdCk9Pih7ZGVmYXVsdDooKT0+ZT9GZShRXyxlPT09ITA/e306ZSx0KTp0fSk7ZnVuY3Rpb24gYnYoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Y29uc3QgbFQ9Im1vZHVsZXByZWxvYWQiLGNUPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSxvbT17fSxYZT1mdW5jdGlvbih0LG4scil7bGV0IG89UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IHU9ZnVuY3Rpb24oYyl7cmV0dXJuIFByb21pc2UuYWxsKGMubWFwKGY9PlByb21pc2UucmVzb2x2ZShmKS50aGVuKGQ9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmR9KSxkPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpkfSkpKSl9O2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLGw9YT8ubm9uY2V8fGE/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtvPXUobi5tYXAoYz0+e2lmKGM9Y1QoYyxyKSxjIGluIG9tKXJldHVybjtvbVtjXT0hMDtjb25zdCBmPWMuZW5kc1dpdGgoIi5jc3MiKSxkPWY/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYocilmb3IobGV0IG09aS5sZW5ndGgtMTttPj0wO20tLSl7Y29uc3QgeT1pW21dO2lmKHkuaHJlZj09PWMmJighZnx8eS5yZWw9PT0ic3R5bGVzaGVldCIpKXJldHVybn1lbHNlIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj0iJHtjfSJdJHtkfWApKXJldHVybjtjb25zdCBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtpZihwLnJlbD1mPyJzdHlsZXNoZWV0IjpsVCxmfHwocC5hcz0ic2NyaXB0IikscC5jcm9zc09yaWdpbj0iIixwLmhyZWY9YyxsJiZwLnNldEF0dHJpYnV0ZSgibm9uY2UiLGwpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocCksZilyZXR1cm4gbmV3IFByb21pc2UoKG0seSk9PntwLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLG0pLHAuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT55KG5ldyBFcnJvcihgVW5hYmxlIHRvIHByZWxvYWQgQ1NTIGZvciAke2N9YCkpKX0pfSkpfWZ1bmN0aW9uIHMoaSl7Y29uc3QgYT1uZXcgRXZlbnQoInZpdGU6cHJlbG9hZEVycm9yIix7Y2FuY2VsYWJsZTohMH0pO2lmKGEucGF5bG9hZD1pLHdpbmRvdy5kaXNwYXRjaEV2ZW50KGEpLCFhLmRlZmF1bHRQcmV2ZW50ZWQpdGhyb3cgaX1yZXR1cm4gby50aGVuKGk9Pntmb3IoY29uc3QgYSBvZiBpfHxbXSlhLnN0YXR1cz09PSJyZWplY3RlZCImJnMoYS5yZWFzb24pO3JldHVybiB0KCkuY2F0Y2gocyl9KX0sdVQ9e3VuYXV0aGVudGljYXRlZE9ubHk6ITAsbGF5b3V0OiJhdXRoIn0sZlQ9e2NhbjpbInVzZXI6aW1wZXJzb25hdGUiXX0sZFQ9e3B1YmxpYzohMH0scFQ9e2NhbjpbInByb2plY3Q6cmVhZCIsInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdfSxtVD17cHVibGljOiEwfSxoVD17Y2FuOlsiYmlsbGluZzpyZWFkIiwiYmlsbGluZzptYW5hZ2UiXX0sZ1Q9e2NhbjpbInVzZXI6cmVhZCJdfSx5VD17Y2FuOlsidXNlcjpyZWFkIl19LHNtPXtjYW46WyJ1c2VyOnJlYWQiXX0sdlQ9e2NhbjpbInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0Om1hbmFnZSJdfSxiVD17Y2FuOlsicHJvamVjdDpyZWFkIiwicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl19LHdUPXtjYW46WyJiaWxsaW5nOnJlYWQiXX0sX1Q9e2NhbjpbInNlbGZob3N0OnJlYWQiLCJzZWxmaG9zdDptYW5hZ2UiXX0seFQ9bnVsbCxTVD17Y2FuOlsic3lzdGVtOm1hbmFnZSJdfSxrVD17Y2FuOlsic3VwcG9ydDptYW5hZ2UiXX0sRVQ9e2NhbjpbInN5c3RlbTptYW5hZ2UiXSxtaWRkbGV3YXJlOigpPT5GbygiL3N5c3RlbS9ub3RpZmljYXRpb25zIix7cmVwbGFjZTohMH0pfSxpbT17Y2FuOlsic3lzdGVtOm1hbmFnZSJdfSxUVD17bWlkZGxld2FyZTooKT0+Rm8oIi9kYXNoYm9hcmQiLHtyZXBsYWNlOiEwfSl9LENUPW51bGwsQVQ9e30sQ2M9W3tuYW1lOiJhdXRoLWxvZ2luIixwYXRoOiIvYXV0aC9sb2dpbiIsbWV0YTp1VHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0RfY3UtcU1SLmpzIiksX192aXRlX19tYXBEZXBzKFswLDEsMl0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzYW5kYm94LWltcGVyc29uYXRlIixwYXRoOiIvc2FuZGJveC9pbXBlcnNvbmF0ZSIsbWV0YTpmVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0RUVExyNUhyLmpzIiksX192aXRlX19tYXBEZXBzKFszLDQsNSw2LDcsOCwyLDksMTBdKSxpbXBvcnQubWV0YS51cmwpfSx7bmFtZToiam9pbi10b2tlbiIscGF0aDoiL2pvaW4vOnRva2VuKCkiLG1ldGE6ZFR8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9DeGNaclkzVy5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbMTEsMl0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJwcm9qZWN0cy1pZCIscGF0aDoiL3Byb2plY3RzLzppZCgpIixtZXRhOnBUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vY2RLX0E2Tm0uanMiKSxfX3ZpdGVfX21hcERlcHMoWzEyLDEwLDEzLDgsNSwxNCwxNSwxNiw0LDYsN10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJkYXNoYm9hcmQiLHBhdGg6Ii9kYXNoYm9hcmQiLGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9zM3AwYzAzTS5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbMTcsOCw1LDIsMTYsNCw2LDcsOSwxMF0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJmb3JiaWRkZW4iLHBhdGg6Ii9mb3JiaWRkZW4iLG1ldGE6bVR8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9EV2ZXcU1KcS5qcyIpLFtdLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOnNtPy5uYW1lLHBhdGg6Ii9vcmdhbml6YXRpb24iLG1ldGE6c218fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9Dc0s1MXF0ZC5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbMTgsMTksMjAsMjEsMjIsMjMsMTAsMjQsMjUsOCw1LDE2LDQsNiw3XSksaW1wb3J0Lm1ldGEudXJsKSxjaGlsZHJlbjpbe25hbWU6Im9yZ2FuaXphdGlvbi1pbnZvaWNlIixwYXRoOiJpbnZvaWNlIixtZXRhOmhUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vRHVFQWZuaHEuanMiKSxfX3ZpdGVfX21hcERlcHMoWzI2LDI3LDI4LDI5LDMwXSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6Im9yZ2FuaXphdGlvbi1tZW1iZXJzIixwYXRoOiJtZW1iZXJzIixtZXRhOmdUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQ2ZoWUZZT1kuanMiKSxfX3ZpdGVfX21hcERlcHMoWzMxLDEsMTAsMzIsMzMsMzQsMjMsMzUsMjksMiwyOCwzNiwxNSwzNywzOF0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJvcmdhbml6YXRpb24tcm9sZXMiLHBhdGg6InJvbGVzIixtZXRhOnlUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQld2cWx3NWYuanMiKSxfX3ZpdGVfX21hcERlcHMoWzM5LDI3LDIwLDM1LDIzLDIyXSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6Im9yZ2FuaXphdGlvbiIscGF0aDoiIixjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQ0lDN3ZzWjUuanMiKSxfX3ZpdGVfX21hcERlcHMoWzQwLDI3LDQxLDQyLDEwXSksaW1wb3J0Lm1ldGEudXJsKX1dfSx7bmFtZToicHJvZHVjdHMiLHBhdGg6Ii9wcm9kdWN0cyIsbWV0YTp2VHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0RwQXZ0TjhnLmpzIiksX192aXRlX19tYXBEZXBzKFs0Myw4LDUsMTQsNDQsNDUsMTMsMTAsNDYsMjEsMjIsMjMsMzMsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpfSx7bmFtZToicHJvamVjdHMiLHBhdGg6Ii9wcm9qZWN0cyIsbWV0YTpiVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0NvSWR6NGthLmpzIiksX192aXRlX19tYXBEZXBzKFs0Nyw4LDUsMTUsNDQsNDUsMTMsMTAsNDYsMjEsMjIsMjMsMzMsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpfSx7bmFtZToicmVmZXJyYWwiLHBhdGg6Ii9yZWZlcnJhbCIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JTeTBpMkFmLmpzIiksX192aXRlX19tYXBEZXBzKFs0OCwxMCwyNywyLDI4LDI5LDQ5LDgsNSwzOCwxNiw0LDYsN10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOnhUPy5uYW1lLHBhdGg6Ii9zZXR0aW5ncyIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0NxeVdyTk54LmpzIiksX192aXRlX19tYXBEZXBzKFs1MCwxOSwyMCwyMSwyMiwyMywxMCwyNCwyNSw4LDUsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpLGNoaWxkcmVuOlt7bmFtZToic2V0dGluZ3MtYmlsbGluZyIscGF0aDoiYmlsbGluZyIsbWV0YTp3VHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JlRU1DeXVaLmpzIiksX192aXRlX19tYXBEZXBzKFs1MSwyNywxMCwyOCwyOSw0OSwzMF0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzZXR0aW5ncy1ub3RpZmljYXRpb25zIixwYXRoOiJub3RpZmljYXRpb25zIixjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQ1ltbE1JWHouanMiKSxfX3ZpdGVfX21hcERlcHMoWzUyLDI3LDM2LDM1XSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6InNldHRpbmdzLXNlY3VyaXR5IixwYXRoOiJzZWN1cml0eSIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JyTlJWSUJBLmpzIiksX192aXRlX19tYXBEZXBzKFs1MywyN10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzZXR0aW5ncy1zZWxmLWhvc3QiLHBhdGg6InNlbGYtaG9zdCIsbWV0YTpfVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0R0U3RmVm1ULmpzIiksX192aXRlX19tYXBEZXBzKFs1NCwxLDEwLDIsOCw1XSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6InNldHRpbmdzIixwYXRoOiIiLGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9CTXliRzRPay5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbNTUsMjcsNDEsNDIsNDQsNDVdKSxpbXBvcnQubWV0YS51cmwpfV19LHtuYW1lOiJzdXBwb3J0IixwYXRoOiIvc3VwcG9ydCIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JGT05vNjNYLmpzIiksX192aXRlX19tYXBEZXBzKFs1Niw2LDUsNywxMCw4LDU3XSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6aW0/Lm5hbWUscGF0aDoiL3N5c3RlbSIsbWV0YTppbXx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JTR3QzeFJXLmpzIiksX192aXRlX19tYXBEZXBzKFs1OCwxOSwyMCwyMSwyMiwyMywxMCwyNCwyNSw4LDUsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpLGNoaWxkcmVuOlt7bmFtZToic3lzdGVtLW5vdGlmaWNhdGlvbnMiLHBhdGg6Im5vdGlmaWNhdGlvbnMiLG1ldGE6U1R8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9EYkM0cDNRQS5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbNTksMjcsMzYsMzUsMzIsMzMsMzQsMjMsMjksNDIsNDYsMjEsMjIsMjQsMSw0NV0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzeXN0ZW0tdGlja2V0cyIscGF0aDoidGlja2V0cyIsbWV0YTprVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL042SzBycXRjLmpzIiksX192aXRlX19tYXBEZXBzKFs2MCwzNiwzNSwxMCw1N10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzeXN0ZW0iLHBhdGg6IiIsbWV0YTpFVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuLzFESWtCeU1kLmpzIiksW10saW1wb3J0Lm1ldGEudXJsKX1dfSx7bmFtZToiaW5kZXgiLHBhdGg6Ii8iLG1ldGE6VFR8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9CaGFHb2F6by5qcyIpLFtdLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOkNUPy5uYW1lLHBhdGg6Ii91c2VycyIsY29tcG9uZW50OkFUfV0sd3Y9KGUsdCk9Pih7ZGVmYXVsdDooKT0+ZT9GZShYeCxlPT09ITA/e306ZSx0KTp0LmRlZmF1bHQ/LigpfSksT1Q9Lyg6XHcrKVwoW14pXStcKS9nLFBUPS8oOlx3KylbPysqXS9nLElUPS86XHcrL2c7ZnVuY3Rpb24gYW0oZSl7Y29uc3QgdD1lPy5tZXRhLmtleT8/ZS5wYXRoLnJlcGxhY2UoT1QsIiQxIikucmVwbGFjZShQVCwiJDEiKS5yZXBsYWNlKElULG49PmUucGFyYW1zW24uc2xpY2UoMSldPy50b1N0cmluZygpfHwiIik7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoZSk6dH1mdW5jdGlvbiBSVChlLHQpe3JldHVybiBlPT09dHx8dD09PU9uPyExOmFtKGUpIT09YW0odCk/ITA6IWUubWF0Y2hlZC5ldmVyeSgocixvKT0+ci5jb21wb25lbnRzJiZyLmNvbXBvbmVudHMuZGVmYXVsdD09PXQubWF0Y2hlZFtvXT8uY29tcG9uZW50cz8uZGVmYXVsdCl9ZnVuY3Rpb24gTlQoZSx0PSExKXtpZihlKXtpZihlLm5vZGVOYW1lPT09IiNjb21tZW50IiYmZS5ub2RlVmFsdWU9PT0iWyIpcmV0dXJuIF92KGUsW10sdCk7aWYodCl7Y29uc3Qgbj1lLmNsb25lTm9kZSghMCk7cmV0dXJuIG4ucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtaXNsYW5kLXNsb3RdIikuZm9yRWFjaChyPT57ci5pbm5lckhUTUw9IiJ9KSxbbi5vdXRlckhUTUxdfXJldHVybltlLm91dGVySFRNTF19fWZ1bmN0aW9uIF92KGUsdD1bXSxuPSExKXtpZihlJiZlLm5vZGVOYW1lKXtpZihMVChlKSlyZXR1cm4gdDtpZighRFQoZSkpe2NvbnN0IHI9ZS5jbG9uZU5vZGUoITApO24mJnIucXVlcnlTZWxlY3RvckFsbD8uKCJbZGF0YS1pc2xhbmQtc2xvdF0iKS5mb3JFYWNoKG89PntvLmlubmVySFRNTD0iIn0pLHQucHVzaChyLm91dGVySFRNTCl9X3YoZS5uZXh0U2libGluZyx0LG4pfXJldHVybiB0fWZ1bmN0aW9uIEFjKGUsdCl7Y29uc3Qgbj1lP05UKGUpOlt0XTtyZXR1cm4gbj9NeChuLmpvaW4oIiIpLG4ubGVuZ3RoKTpGZSgiZGl2Iil9ZnVuY3Rpb24gRFQoZSl7cmV0dXJuIGUubm9kZU5hbWU9PT0iI2NvbW1lbnQiJiZlLm5vZGVWYWx1ZT09PSJbIn1mdW5jdGlvbiBMVChlKXtyZXR1cm4gZS5ub2RlTmFtZT09PSIjY29tbWVudCImJmUubm9kZVZhbHVlPT09Il0ifWZ1bmN0aW9uIGxtKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWZ1bmN0aW9uIHh2KGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSluJiZ0LnB1c2goey4uLm4sb25BZnRlckxlYXZlOm4ub25BZnRlckxlYXZlP2xtKG4ub25BZnRlckxlYXZlKTp2b2lkIDAsb25CZWZvcmVMZWF2ZTpuLm9uQmVmb3JlTGVhdmU/bG0obi5vbkJlZm9yZUxlYXZlKTp2b2lkIDB9KTtyZXR1cm4gbW4oLi4udCl9Y29uc3QgJFQ9e3Njcm9sbEJlaGF2aW9yKGUsdCxuKXtjb25zdCByPUJlKCksbz1KdCgpLm9wdGlvbnM/LnNjcm9sbEJlaGF2aW9yVHlwZT8/ImF1dG8iO3JldHVybiBlLnBhdGgucmVwbGFjZSgvXC8kLywiIik9PT10LnBhdGgucmVwbGFjZSgvXC8kLywiIik/dC5oYXNoJiYhZS5oYXNoP3tsZWZ0OjAsdG9wOjB9OmUuaGFzaD97ZWw6ZS5oYXNoLHRvcDpTdihlLmhhc2gpLGJlaGF2aW9yOm99OiExOih0eXBlb2YgZS5tZXRhLnNjcm9sbFRvVG9wPT0iZnVuY3Rpb24iP2UubWV0YS5zY3JvbGxUb1RvcChlLHQpOmUubWV0YS5zY3JvbGxUb1RvcCk9PT0hMT8hMTp0PT09T24/Y20oZSx0LG4sbyk6bmV3IFByb21pc2UoaT0+e2NvbnN0IGE9KCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PmkoY20oZSx0LG4sbykpKX07ci5ob29rcy5ob29rT25jZSgicGFnZTpsb2FkaW5nOmVuZCIsKCk9Pntjb25zdCBsPXJbIn50cmFuc2l0aW9uUHJvbWlzZSJdO2w/bC50aGVuKGEpOmEoKX0pfSl9fTtmdW5jdGlvbiBTdihlKXt0cnl7Y29uc3QgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO2lmKHQpcmV0dXJuKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodCkuc2Nyb2xsTWFyZ2luVG9wKXx8MCkrKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxQYWRkaW5nVG9wKXx8MCl9Y2F0Y2h7fXJldHVybiAwfWZ1bmN0aW9uIGNtKGUsdCxuLHIpe2lmKG4pcmV0dXJuIG47Y29uc3Qgbz1SVChlLHQpO3JldHVybiBlLmhhc2g/e2VsOmUuaGFzaCx0b3A6U3YoZS5oYXNoKSxiZWhhdmlvcjpvP3I6Imluc3RhbnQifTp7bGVmdDowLHRvcDowfX1jb25zdCBNVD17aGFzaE1vZGU6ITEsc2Nyb2xsQmVoYXZpb3JUeXBlOiJhdXRvIn0sR3I9ey4uLk1ULC4uLiRUfSxCVD1hc3luYyhlLHQpPT57bGV0IG4scjtpZighZS5tZXRhPy52YWxpZGF0ZSlyZXR1cm47Y29uc3Qgbz0oW24scl09Z3MoKCk9PlByb21pc2UucmVzb2x2ZShlLm1ldGEudmFsaWRhdGUoZSkpKSxuPWF3YWl0IG4scigpLG4pO2lmKG89PT0hMClyZXR1cm47Y29uc3Qgcz1zbyh7ZmF0YWw6ITAsc3RhdHVzOm8mJihvLnN0YXR1c3x8by5zdGF0dXNDb2RlKXx8NDA0LHN0YXR1c1RleHQ6byYmKG8uc3RhdHVzVGV4dHx8by5zdGF0dXNNZXNzYWdlKXx8YFBhZ2UgTm90IEZvdW5kOiAke2UuZnVsbFBhdGh9YCxkYXRhOntwYXRoOmUuZnVsbFBhdGh9fSk7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIiIsdC5mdWxsUGF0aCksc307ZnVuY3Rpb24gcVQoZSx0KXtjb25zdCBuPXQvZSoxMDA7cmV0dXJuIDIvTWF0aC5QSSoxMDAqTWF0aC5hdGFuKG4vNTApfWZ1bmN0aW9uIEZUKGU9e30pe2NvbnN0e2R1cmF0aW9uOnQ9MmUzLHRocm90dGxlOm49MjAwLGhpZGVEZWxheTpyPTUwMCxyZXNldERlbGF5Om89NDAwfT1lLHM9ZS5lc3RpbWF0ZWRQcm9ncmVzc3x8cVQsaT1CZSgpLGE9T2UoMCksbD1PZSghMSksdT1PZSghMSk7bGV0IGM9ITEsZixkLHAsbTtjb25zdCB5PShrPXt9KT0+e2goKSx1LnZhbHVlPSExLF8oMCxrKX07ZnVuY3Rpb24gXyhrPTAsVD17fSl7aWYoaS5pc0h5ZHJhdGluZylyZXR1cm47aWYoaz49MTAwKXJldHVybiB2KHtmb3JjZTpULmZvcmNlfSk7YigpLGEudmFsdWU9azwwPzA6aztjb25zdCBDPVQuZm9yY2U/MDpuO0M/ZD1zZXRUaW1lb3V0KCgpPT57bC52YWx1ZT0hMCx4KCl9LEMpOihsLnZhbHVlPSEwLHgoKSl9ZnVuY3Rpb24gdygpe3A9c2V0VGltZW91dCgoKT0+e2wudmFsdWU9ITEsbT1zZXRUaW1lb3V0KCgpPT57YS52YWx1ZT0wfSxvKX0scil9ZnVuY3Rpb24gdihrPXt9KXthLnZhbHVlPTEwMCxjPSEwLGIoKSxoKCksay5lcnJvciYmKHUudmFsdWU9ITApLGsuZm9yY2U/KGEudmFsdWU9MCxsLnZhbHVlPSExKTp3KCl9ZnVuY3Rpb24gaCgpe2NsZWFyVGltZW91dChwKSxjbGVhclRpbWVvdXQobSl9ZnVuY3Rpb24gYigpe2NsZWFyVGltZW91dChkKSxjYW5jZWxBbmltYXRpb25GcmFtZShmKX1mdW5jdGlvbiB4KCl7Yz0hMTtsZXQgaztmdW5jdGlvbiBUKEMpe2lmKGMpcmV0dXJuO2s/Pz1DO2NvbnN0IFA9Qy1rO2EudmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAscyh0LFApKSksZj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoVCl9Zj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoVCl9bGV0IFM9KCk9Pnt9O3tjb25zdCBrPWkuaG9vaygicGFnZTpsb2FkaW5nOnN0YXJ0IiwoKT0+e3koKX0pLFQ9aS5ob29rKCJwYWdlOmxvYWRpbmc6ZW5kIiwoKT0+e3YoKX0pLEM9aS5ob29rKCJ2dWU6ZXJyb3IiLCgpPT52KCkpO1M9KCk9PntDKCksaygpLFQoKSxiKCl9fXJldHVybntfY2xlYW51cDpTLHByb2dyZXNzOk4oKCk9PmEudmFsdWUpLGlzTG9hZGluZzpOKCgpPT5sLnZhbHVlKSxlcnJvcjpOKCgpPT51LnZhbHVlKSxzdGFydDp5LHNldDpfLGZpbmlzaDp2LGNsZWFyOmJ9fWZ1bmN0aW9uIEFhKGU9e30pe2NvbnN0IHQ9QmUoKSxuPXQuX2xvYWRpbmdJbmRpY2F0b3J8fD1GVChlKTtyZXR1cm4gcXIoKSYmKHQuX2xvYWRpbmdJbmRpY2F0b3JEZXBzfHw9MCx0Ll9sb2FkaW5nSW5kaWNhdG9yRGVwcysrLFJzKCgpPT57dC5fbG9hZGluZ0luZGljYXRvckRlcHMtLSx0Ll9sb2FkaW5nSW5kaWNhdG9yRGVwcz09PTAmJihuLl9jbGVhbnVwKCksZGVsZXRlIHQuX2xvYWRpbmdJbmRpY2F0b3IpfSkpLG59ZnVuY3Rpb24gWWEoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9gJyR7ZX0nYDpuZXcgelQoKS5zZXJpYWxpemUoZSl9Y29uc3QgelQ9KGZ1bmN0aW9uKCl7Y2xhc3MgZXsjZT1uZXcgTWFwO2NvbXBhcmUobixyKXtjb25zdCBvPXR5cGVvZiBuLHM9dHlwZW9mIHI7cmV0dXJuIG89PT0ic3RyaW5nIiYmcz09PSJzdHJpbmciP24ubG9jYWxlQ29tcGFyZShyKTpvPT09Im51bWJlciImJnM9PT0ibnVtYmVyIj9uLXI6U3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlLmNhbGwodGhpcy5zZXJpYWxpemUobiwhMCksdGhpcy5zZXJpYWxpemUociwhMCkpfXNlcmlhbGl6ZShuLHIpe2lmKG49PT1udWxsKXJldHVybiJudWxsIjtzd2l0Y2godHlwZW9mIG4pe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcj9uOmAnJHtufSdgO2Nhc2UiYmlnaW50IjpyZXR1cm5gJHtufW5gO2Nhc2Uib2JqZWN0IjpyZXR1cm4gdGhpcy4kb2JqZWN0KG4pO2Nhc2UiZnVuY3Rpb24iOnJldHVybiB0aGlzLiRmdW5jdGlvbihuKX1yZXR1cm4gU3RyaW5nKG4pfXNlcmlhbGl6ZU9iamVjdChuKXtjb25zdCByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKTtpZihyIT09IltvYmplY3QgT2JqZWN0XSIpcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUoci5sZW5ndGg8MTA/YHVua25vd246JHtyfWA6ci5zbGljZSg4LC0xKSxuKTtjb25zdCBvPW4uY29uc3RydWN0b3Iscz1vPT09T2JqZWN0fHxvPT09dm9pZCAwPyIiOm8ubmFtZTtpZihzIT09IiImJmdsb2JhbFRoaXNbc109PT1vKXJldHVybiB0aGlzLnNlcmlhbGl6ZUJ1aWx0SW5UeXBlKHMsbik7aWYodHlwZW9mIG4udG9KU09OPT0iZnVuY3Rpb24iKXtjb25zdCBpPW4udG9KU09OKCk7cmV0dXJuIHMrKGkhPT1udWxsJiZ0eXBlb2YgaT09Im9iamVjdCI/dGhpcy4kb2JqZWN0KGkpOmAoJHt0aGlzLnNlcmlhbGl6ZShpKX0pYCl9cmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhzLE9iamVjdC5lbnRyaWVzKG4pKX1zZXJpYWxpemVCdWlsdEluVHlwZShuLHIpe2NvbnN0IG89dGhpc1siJCIrbl07aWYobylyZXR1cm4gby5jYWxsKHRoaXMscik7aWYodHlwZW9mIHI/LmVudHJpZXM9PSJmdW5jdGlvbiIpcmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhuLHIuZW50cmllcygpKTt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgJHtufWApfXNlcmlhbGl6ZU9iamVjdEVudHJpZXMobixyKXtjb25zdCBvPUFycmF5LmZyb20ocikuc29ydCgoaSxhKT0+dGhpcy5jb21wYXJlKGlbMF0sYVswXSkpO2xldCBzPWAke259e2A7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspe2NvbnN0W2EsbF09b1tpXTtzKz1gJHt0aGlzLnNlcmlhbGl6ZShhLCEwKX06JHt0aGlzLnNlcmlhbGl6ZShsKX1gLGk8by5sZW5ndGgtMSYmKHMrPSIsIil9cmV0dXJuIHMrIn0ifSRvYmplY3Qobil7bGV0IHI9dGhpcy4jZS5nZXQobik7cmV0dXJuIHI9PT12b2lkIDAmJih0aGlzLiNlLnNldChuLGAjJHt0aGlzLiNlLnNpemV9YCkscj10aGlzLnNlcmlhbGl6ZU9iamVjdChuKSx0aGlzLiNlLnNldChuLHIpKSxyfSRmdW5jdGlvbihuKXtjb25zdCByPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pO3JldHVybiByLnNsaWNlKC0xNSk9PT0iW25hdGl2ZSBjb2RlXSB9Ij9gJHtuLm5hbWV8fCIifSgpW25hdGl2ZV1gOmAke24ubmFtZX0oJHtuLmxlbmd0aH0pJHtyLnJlcGxhY2UoL1xzKlxuXHMqL2csIiIpfWB9JEFycmF5KG4pe2xldCByPSJbIjtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKylyKz10aGlzLnNlcmlhbGl6ZShuW29dKSxvPG4ubGVuZ3RoLTEmJihyKz0iLCIpO3JldHVybiByKyJdIn0kRGF0ZShuKXt0cnl7cmV0dXJuYERhdGUoJHtuLnRvSVNPU3RyaW5nKCl9KWB9Y2F0Y2h7cmV0dXJuIkRhdGUobnVsbCkifX0kQXJyYXlCdWZmZXIobil7cmV0dXJuYEFycmF5QnVmZmVyWyR7bmV3IFVpbnQ4QXJyYXkobikuam9pbigiLCIpfV1gfSRTZXQobil7cmV0dXJuYFNldCR7dGhpcy4kQXJyYXkoQXJyYXkuZnJvbShuKS5zb3J0KChyLG8pPT50aGlzLmNvbXBhcmUocixvKSkpfWB9JE1hcChuKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKCJNYXAiLG4uZW50cmllcygpKX19Zm9yKGNvbnN0IHQgb2ZbIkVycm9yIiwiUmVnRXhwIiwiVVJMIl0pZS5wcm90b3R5cGVbIiQiK3RdPWZ1bmN0aW9uKG4pe3JldHVybmAke3R9KCR7bn0pYH07Zm9yKGNvbnN0IHQgb2ZbIkludDhBcnJheSIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJVaW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSJdKWUucHJvdG90eXBlWyIkIit0XT1mdW5jdGlvbihuKXtyZXR1cm5gJHt0fVske24uam9pbigiLCIpfV1gfTtmb3IoY29uc3QgdCBvZlsiQmlnSW50NjRBcnJheSIsIkJpZ1VpbnQ2NEFycmF5Il0pZS5wcm90b3R5cGVbIiQiK3RdPWZ1bmN0aW9uKG4pe3JldHVybmAke3R9WyR7bi5qb2luKCJuLCIpfSR7bi5sZW5ndGg+MD8ibiI6IiJ9XWB9O3JldHVybiBlfSkoKTtmdW5jdGlvbiBJbChlLHQpe3JldHVybiBlPT09dHx8WWEoZSk9PT1ZYSh0KX1jb25zdCBqVD1bMTc3OTAzMzcwMywtMTE1MDgzMzAxOSwxMDEzOTA0MjQyLC0xNTIxNDg2NTM0LDEzNTk4OTMxMTksLTE2OTQxNDQzNzIsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLFZUPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsLTEyNDU2NDM4MjUsLTM3Mzk1NzcyMyw5NjE5ODcxNjMsMTUwODk3MDk5MywtMTg0MTMzMTU0OCwtMTQyNDIwNDA3NSwtNjcwNTg2MjE2LDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LC0yMTMyODg5MDkwLC0xNjgwMDc5MTkzLC0xMDQ2NzQ0NzE2LC00NTk1NzY4OTUsLTI3Mjc0MjUyMiwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwtMTc0MDc0NjQxNCwtMTQ3MzEzMjk0NywtMTM0MTk3MDQ4OCwtMTA4NDY1MzYyNSwtOTU4Mzk1NDA1LC03MTA0Mzg1ODUsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsLTIxMTc5NDA5NDYsLTE4MzgwMTEyNTksLTE1NjQ0ODEzNzUsLTE0NzQ2NjQ4ODUsLTEwMzUyMzY0OTYsLTk0OTIwMjUyNSwtNzc4OTAxNDc5LC02OTQ2MTQ0OTIsLTIwMDM5NTM4NywyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsLTIwNjcyMzY4NDQsLTE5MzMxMTQ4NzIsLTE4NjY1MzA4MjIsLTE1MzgyMzMxMDksLTEwOTA5MzU4MTcsLTk2NTY0MTk5OF0sVVQ9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLFNvPVtdO2xldCBIVD1jbGFzc3tfZGF0YT1uZXcgc2E7X2hhc2g9bmV3IHNhKFsuLi5qVF0pO19uRGF0YUJ5dGVzPTA7X21pbkJ1ZmZlclNpemU9MDtmaW5hbGl6ZSh0KXt0JiZ0aGlzLl9hcHBlbmQodCk7Y29uc3Qgbj10aGlzLl9uRGF0YUJ5dGVzKjgscj10aGlzLl9kYXRhLnNpZ0J5dGVzKjg7cmV0dXJuIHRoaXMuX2RhdGEud29yZHNbcj4+PjVdfD0xMjg8PDI0LXIlMzIsdGhpcy5fZGF0YS53b3Jkc1socis2ND4+Pjk8PDQpKzE0XT1NYXRoLmZsb29yKG4vNDI5NDk2NzI5NiksdGhpcy5fZGF0YS53b3Jkc1socis2ND4+Pjk8PDQpKzE1XT1uLHRoaXMuX2RhdGEuc2lnQnl0ZXM9dGhpcy5fZGF0YS53b3Jkcy5sZW5ndGgqNCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH1fZG9Qcm9jZXNzQmxvY2sodCxuKXtjb25zdCByPXRoaXMuX2hhc2gud29yZHM7bGV0IG89clswXSxzPXJbMV0saT1yWzJdLGE9clszXSxsPXJbNF0sdT1yWzVdLGM9cls2XSxmPXJbN107Zm9yKGxldCBkPTA7ZDw2NDtkKyspe2lmKGQ8MTYpU29bZF09dFtuK2RdfDA7ZWxzZXtjb25zdCBoPVNvW2QtMTVdLGI9KGg8PDI1fGg+Pj43KV4oaDw8MTR8aD4+PjE4KV5oPj4+Myx4PVNvW2QtMl0sUz0oeDw8MTV8eD4+PjE3KV4oeDw8MTN8eD4+PjE5KV54Pj4+MTA7U29bZF09YitTb1tkLTddK1MrU29bZC0xNl19Y29uc3QgcD1sJnVefmwmYyxtPW8mc15vJmlecyZpLHk9KG88PDMwfG8+Pj4yKV4obzw8MTl8bz4+PjEzKV4obzw8MTB8bz4+PjIyKSxfPShsPDwyNnxsPj4+NileKGw8PDIxfGw+Pj4xMSleKGw8PDd8bD4+PjI1KSx3PWYrXytwK1ZUW2RdK1NvW2RdLHY9eSttO2Y9YyxjPXUsdT1sLGw9YSt3fDAsYT1pLGk9cyxzPW8sbz13K3Z8MH1yWzBdPXJbMF0rb3wwLHJbMV09clsxXStzfDAsclsyXT1yWzJdK2l8MCxyWzNdPXJbM10rYXwwLHJbNF09cls0XStsfDAscls1XT1yWzVdK3V8MCxyWzZdPXJbNl0rY3wwLHJbN109cls3XStmfDB9X2FwcGVuZCh0KXt0eXBlb2YgdD09InN0cmluZyImJih0PXNhLmZyb21VdGY4KHQpKSx0aGlzLl9kYXRhLmNvbmNhdCh0KSx0aGlzLl9uRGF0YUJ5dGVzKz10LnNpZ0J5dGVzfV9wcm9jZXNzKHQpe2xldCBuLHI9dGhpcy5fZGF0YS5zaWdCeXRlcy82NDt0P3I9TWF0aC5jZWlsKHIpOnI9TWF0aC5tYXgoKHJ8MCktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTtjb25zdCBvPXIqMTYscz1NYXRoLm1pbihvKjQsdGhpcy5fZGF0YS5zaWdCeXRlcyk7aWYobyl7Zm9yKGxldCBpPTA7aTxvO2krPTE2KXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKHRoaXMuX2RhdGEud29yZHMsaSk7bj10aGlzLl9kYXRhLndvcmRzLnNwbGljZSgwLG8pLHRoaXMuX2RhdGEuc2lnQnl0ZXMtPXN9cmV0dXJuIG5ldyBzYShuLHMpfX0sc2E9Y2xhc3Mga3Z7d29yZHM7c2lnQnl0ZXM7Y29uc3RydWN0b3IodCxuKXt0PXRoaXMud29yZHM9dHx8W10sdGhpcy5zaWdCeXRlcz1uPT09dm9pZCAwP3QubGVuZ3RoKjQ6bn1zdGF0aWMgZnJvbVV0ZjgodCl7Y29uc3Qgbj11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpLHI9bi5sZW5ndGgsbz1bXTtmb3IobGV0IHM9MDtzPHI7cysrKW9bcz4+PjJdfD0obi5jaGFyQ29kZUF0KHMpJjI1NSk8PDI0LXMlNCo4O3JldHVybiBuZXcga3YobyxyKX10b0Jhc2U2NCgpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTA7bjx0aGlzLnNpZ0J5dGVzO24rPTMpe2NvbnN0IHI9dGhpcy53b3Jkc1tuPj4+Ml0+Pj4yNC1uJTQqOCYyNTUsbz10aGlzLndvcmRzW24rMT4+PjJdPj4+MjQtKG4rMSklNCo4JjI1NSxzPXRoaXMud29yZHNbbisyPj4+Ml0+Pj4yNC0obisyKSU0KjgmMjU1LGk9cjw8MTZ8bzw8OHxzO2ZvcihsZXQgYT0wO2E8NCYmbio4K2EqNjx0aGlzLnNpZ0J5dGVzKjg7YSsrKXQucHVzaChVVC5jaGFyQXQoaT4+PjYqKDMtYSkmNjMpKX1yZXR1cm4gdC5qb2luKCIiKX1jb25jYXQodCl7aWYodGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLXRoaXMuc2lnQnl0ZXMlNCo4LHRoaXMud29yZHMubGVuZ3RoPU1hdGguY2VpbCh0aGlzLnNpZ0J5dGVzLzQpLHRoaXMuc2lnQnl0ZXMlNClmb3IobGV0IG49MDtuPHQuc2lnQnl0ZXM7bisrKXtjb25zdCByPXQud29yZHNbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O3RoaXMud29yZHNbdGhpcy5zaWdCeXRlcytuPj4+Ml18PXI8PDI0LSh0aGlzLnNpZ0J5dGVzK24pJTQqOH1lbHNlIGZvcihsZXQgbj0wO248dC5zaWdCeXRlcztuKz00KXRoaXMud29yZHNbdGhpcy5zaWdCeXRlcytuPj4+Ml09dC53b3Jkc1tuPj4+Ml07dGhpcy5zaWdCeXRlcys9dC5zaWdCeXRlc319O2Z1bmN0aW9uIFdUKGUpe3JldHVybiBuZXcgSFQoKS5maW5hbGl6ZShlKS50b0Jhc2U2NCgpfWZ1bmN0aW9uIGlzKGUpe3JldHVybiBXVChZYShlKSl9Y29uc3QgRXY9U3ltYm9sLmZvcigibnV4dDpjbGllbnQtb25seSIpLGlhPSI8ZGl2PjwvZGl2PiIsbHE9c2Uoe25hbWU6IkNsaWVudE9ubHkiLGluaGVyaXRBdHRyczohMSxwcm9wczpbImZhbGxiYWNrIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclRhZyIsImZhbGxiYWNrVGFnIl0sc2V0dXAoZSx7c2xvdHM6dCxhdHRyczpufSl7Y29uc3Qgcj1PZSghMSk7b3QoKCk9PntyLnZhbHVlPSEwfSk7Y29uc3Qgbz1tdCgpO3JldHVybiBvJiYoby5fbnV4dENsaWVudE9ubHk9ITApLE50KEV2LCEwKSwoKT0+e2lmKHIudmFsdWUpe2NvbnN0IGw9dC5kZWZhdWx0Py4oKTtyZXR1cm4gbCYmbC5sZW5ndGg9PT0xP1twbihsWzBdLG4pXTpsfWNvbnN0IHM9dC5mYWxsYmFja3x8dC5wbGFjZWhvbGRlcjtpZihzKXJldHVybiBGZShzKTtjb25zdCBpPWUuZmFsbGJhY2t8fGUucGxhY2Vob2xkZXJ8fCIiLGE9ZS5mYWxsYmFja1RhZ3x8ZS5wbGFjZWhvbGRlclRhZ3x8InNwYW4iO3JldHVybiBfZShhLG4saSl9fX0pLE9jPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEdUKGUpe2lmKE9jLmhhcyhlKSlyZXR1cm4gT2MuZ2V0KGUpO2NvbnN0IHQ9ey4uLmV9O3JldHVybiB0LnJlbmRlcj90LnJlbmRlcj0obixyLG8scyxpLGEpPT57aWYocy5tb3VudGVkJD8/bi5tb3VudGVkJCl7Y29uc3QgbD1lLnJlbmRlcj8uYmluZChuKShuLHIsbyxzLGksYSk7cmV0dXJuIGwuY2hpbGRyZW49PT1udWxsfHx0eXBlb2YgbC5jaGlsZHJlbj09InN0cmluZyI/cG4obCk6RmUobCl9cmV0dXJuIEFjKG4uXy52bm9kZS5lbCxpYSl9OnQudGVtcGxhdGUmJj1gCiAgICAgIDx0ZW1wbGF0ZSB2LWlmPSJtb3VudGVkJCI+JHtlLnRlbXBsYXRlfTwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+JHtpYX08L3RlbXBsYXRlPgogICAgYCx0LnNldHVwPShuLHIpPT57Y29uc3Qgbz1CZSgpLHM9T2Uoby5pc0h5ZHJhdGluZz09PSExKSxpPW10KCk7aWYoby5pc0h5ZHJhdGluZyl7Y29uc3QgbD17Li4uaS5hdHRyc30sdT1LVChpKTtmb3IoY29uc3QgYyBpbiBsKWRlbGV0ZSBpLmF0dHJzW2NdO290KCgpPT57T2JqZWN0LmFzc2lnbihpLmF0dHJzLGwpLGkudm5vZGUuZGlycz11fSl9b3QoKCk9PntzLnZhbHVlPSEwfSk7Y29uc3QgYT1lLnNldHVwPy4obixyKXx8e307cmV0dXJuIHVsKGEpP1Byb21pc2UucmVzb2x2ZShhKS50aGVuKGw9PnR5cGVvZiBsIT0iZnVuY3Rpb24iPyhsfHw9e30sbC5tb3VudGVkJD1zLGwpOiguLi51KT0+e2lmKHMudmFsdWV8fCFvLmlzSHlkcmF0aW5nKXtjb25zdCBjPWwoLi4udSk7cmV0dXJuIGMuY2hpbGRyZW49PT1udWxsfHx0eXBlb2YgYy5jaGlsZHJlbj09InN0cmluZyI/cG4oYyk6RmUoYyl9cmV0dXJuIEFjKGk/LnZub2RlLmVsLGlhKX0pOnR5cGVvZiBhPT0iZnVuY3Rpb24iPyguLi5sKT0+e2lmKHMudmFsdWUpe2NvbnN0IHU9YSguLi5sKSxjPXQuaW5oZXJpdEF0dHJzIT09ITE/ci5hdHRyczp2b2lkIDA7cmV0dXJuIHUuY2hpbGRyZW49PT1udWxsfHx0eXBlb2YgdS5jaGlsZHJlbj09InN0cmluZyI/cG4odSxjKTpGZSh1LGMpfXJldHVybiBBYyhpPy52bm9kZS5lbCxpYSl9Ok9iamVjdC5hc3NpZ24oYSx7bW91bnRlZCQ6c30pfSxPYy5zZXQoZSx0KSx0fWZ1bmN0aW9uIEtUKGUpe2lmKCFlfHwhZS52bm9kZS5kaXJzKXJldHVybiBudWxsO2NvbnN0IHQ9ZS52bm9kZS5kaXJzO3JldHVybiBlLnZub2RlLmRpcnM9bnVsbCx0fWNvbnN0IEN1PWdsb2JhbFRoaXMucmVxdWVzdElkbGVDYWxsYmFja3x8KGU9Pntjb25zdCB0PURhdGUubm93KCksbj17ZGlkVGltZW91dDohMSx0aW1lUmVtYWluaW5nOigpPT5NYXRoLm1heCgwLDUwLShEYXRlLm5vdygpLXQpKX07cmV0dXJuIHNldFRpbWVvdXQoKCk9PntlKG4pfSwxKX0pLFFUPWdsb2JhbFRoaXMuY2FuY2VsSWRsZUNhbGxiYWNrfHwoZT0+e2NsZWFyVGltZW91dChlKX0pLHFpPWU9Pntjb25zdCB0PUJlKCk7dC5pc0h5ZHJhdGluZz90Lmhvb2tzLmhvb2tPbmNlKCJhcHA6c3VzcGVuc2U6cmVzb2x2ZSIsKCk9PntDdSgoKT0+ZSgpKX0pOkN1KCgpPT5lKCkpfTtmdW5jdGlvbiBUdihlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBbbnV4dF0gXGAke2UubmFtZX1cYCBpcyBhIGNvbXBpbGVyIG1hY3JvIGFuZCBjYW5ub3QgYmUgY2FsbGVkIGF0IHJ1bnRpbWUuYCl9LCJfX251eHRfZmFjdG9yeSIse2VudW1lcmFibGU6ITEsZ2V0OigpPT5lLmZhY3Rvcnl9KX1jb25zdCBDdj1Udih7bmFtZToiY3JlYXRlVXNlQXN5bmNEYXRhIixmYWN0b3J5KGU9e30pe2Z1bmN0aW9uIHQoLi4ubil7Y29uc3Qgcj10eXBlb2YgbltuLmxlbmd0aC0xXT09InN0cmluZyI/bi5wb3AoKTp2b2lkIDA7SlQoblswXSxuWzFdKSYmbi51bnNoaWZ0KHIpO2xldFtvLHMsaT17fV09bixhPSExO2NvbnN0IGw9TigoKT0+RWUobykpO2lmKHR5cGVvZiBsLnZhbHVlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJbbnV4dF0gW3VzZUFzeW5jRGF0YV0ga2V5IG11c3QgYmUgYSBzdHJpbmcuIik7aWYodHlwZW9mIHMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiW251eHRdIFt1c2VBc3luY0RhdGFdIGhhbmRsZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2NvbnN0IHU9dHlwZW9mIGU9PSJmdW5jdGlvbiIsYz1CZSgpLGY9dT9lKGkpOmU7aWYoIXUpZm9yKGNvbnN0IHYgaW4gZilmW3ZdIT09dm9pZCAwJiZpW3ZdPT09dm9pZCAwJiYoaVt2XT1mW3ZdKTtpZihpLnNlcnZlcj8/PSEwLGkuZGVmYXVsdD8/PVpULGkuZ2V0Q2FjaGVkRGF0YT8/PVB2LGkubGF6eT8/PSExLGkuaW1tZWRpYXRlPz89ITAsaS5kZWVwPz89UDEuZGVlcCxpLmRlZHVwZT8/PSJjYW5jZWwiLHUpZm9yKGNvbnN0IHYgaW4gZilmW3ZdIT09dm9pZCAwJiYoaVt2XT1mW3ZdKTtjLl9hc3luY0RhdGFbbC52YWx1ZV07ZnVuY3Rpb24gZCgpe2NvbnN0IHY9e2NhdXNlOiJpbml0aWFsIixkZWR1cGU6aS5kZWR1cGV9O3JldHVybiBjLl9hc3luY0RhdGFbbC52YWx1ZV0/Ll9pbml0fHwodi5jYWNoZWREYXRhPWkuZ2V0Q2FjaGVkRGF0YShsLnZhbHVlLGMse2NhdXNlOiJpbml0aWFsIn0pLGMuX2FzeW5jRGF0YVtsLnZhbHVlXT11bShjLGwudmFsdWUscyxpLHYuY2FjaGVkRGF0YSkpLCgpPT5jLl9hc3luY0RhdGFbbC52YWx1ZV0uZXhlY3V0ZSh2KX1jb25zdCBwPWQoKSxtPWMuX2FzeW5jRGF0YVtsLnZhbHVlXTttLl9kZXBzKys7Y29uc3QgeT1pLnNlcnZlciE9PSExJiZjLnBheWxvYWQuc2VydmVyUmVuZGVyZWQ7e2xldCB2PWZ1bmN0aW9uKFQpe2NvbnN0IEM9Yy5fYXN5bmNEYXRhW1RdO0M/Ll9kZXBzJiYoQy5fZGVwcy0tLEMuX2RlcHM9PT0wJiZDPy5fb2ZmKCkpfTtjb25zdCBoPW10KCk7aWYoaCYmeSYmaS5pbW1lZGlhdGUmJiFoLnNwJiYoaC5zcD1bXSksaCYmIWguX251eHRPbkJlZm9yZU1vdW50Q2JzKXtoLl9udXh0T25CZWZvcmVNb3VudENicz1bXTtjb25zdCBUPWguX251eHRPbkJlZm9yZU1vdW50Q2JzO3FnKCgpPT57VC5mb3JFYWNoKEM9PntDKCl9KSxULnNwbGljZSgwLFQubGVuZ3RoKX0pLHByKCgpPT5ULnNwbGljZSgwLFQubGVuZ3RoKSl9Y29uc3QgYj1oJiYoaC5fbnV4dENsaWVudE9ubHl8fEtlKEV2LCExKSk7eSYmYy5pc0h5ZHJhdGluZyYmKG0uZXJyb3IudmFsdWV8fG0uZGF0YS52YWx1ZSE9PXZvaWQgMCk/bS5zdGF0dXMudmFsdWU9bS5lcnJvci52YWx1ZT8iZXJyb3IiOiJzdWNjZXNzIjpoJiYoIWImJmMucGF5bG9hZC5zZXJ2ZXJSZW5kZXJlZCYmYy5pc0h5ZHJhdGluZ3x8aS5sYXp5KSYmaS5pbW1lZGlhdGU/aC5fbnV4dE9uQmVmb3JlTW91bnRDYnMucHVzaChwKTppLmltbWVkaWF0ZSYmbS5zdGF0dXMudmFsdWUhPT0ic3VjY2VzcyImJnAoKTtjb25zdCB4PXFyKCksUz1QZShsLChULEMpPT57aWYoKFR8fEMpJiZUIT09Qyl7YT0hMDtjb25zdCBQPWMuX2FzeW5jRGF0YVtDXT8uZGF0YS52YWx1ZSE9PXZvaWQgMCxGPWMuX2FzeW5jRGF0YVByb21pc2VzW0NdIT09dm9pZCAwLEQ9e2NhdXNlOiJpbml0aWFsIixkZWR1cGU6aS5kZWR1cGV9O2lmKCFjLl9hc3luY0RhdGFbVF0/Ll9pbml0KXtsZXQgVztDJiZQP1c9Yy5fYXN5bmNEYXRhW0NdLmRhdGEudmFsdWU6KFc9aS5nZXRDYWNoZWREYXRhKFQsYyx7Y2F1c2U6ImluaXRpYWwifSksRC5jYWNoZWREYXRhPVcpLGMuX2FzeW5jRGF0YVtUXT11bShjLFQscyxpLFcpfWMuX2FzeW5jRGF0YVtUXS5fZGVwcysrLEMmJnYoQyksKGkuaW1tZWRpYXRlfHxQfHxGKSYmYy5fYXN5bmNEYXRhW1RdLmV4ZWN1dGUoRCksZ2koKCk9PnthPSExfSl9fSx7Zmx1c2g6InN5bmMifSksaz1pLndhdGNoP1BlKGkud2F0Y2gsKCk9PnthfHwoYy5fYXN5bmNEYXRhW2wudmFsdWVdPy5fZXhlY3V0ZS5pc1BlbmRpbmcoKSYmZ2koKCk9PntjLl9hc3luY0RhdGFbbC52YWx1ZV0/Ll9leGVjdXRlLmZsdXNoKCl9KSxjLl9hc3luY0RhdGFbbC52YWx1ZV0/Ll9leGVjdXRlKHtjYXVzZToid2F0Y2giLGRlZHVwZTppLmRlZHVwZX0pKX0pOigpPT57fTt4JiZScygoKT0+e1MoKSxrKCksdihsLnZhbHVlKX0pfWNvbnN0IF89e2RhdGE6YWEoKCk9PmMuX2FzeW5jRGF0YVtsLnZhbHVlXT8uZGF0YSkscGVuZGluZzphYSgoKT0+Yy5fYXN5bmNEYXRhW2wudmFsdWVdPy5wZW5kaW5nKSxzdGF0dXM6YWEoKCk9PmMuX2FzeW5jRGF0YVtsLnZhbHVlXT8uc3RhdHVzKSxlcnJvcjphYSgoKT0+Yy5fYXN5bmNEYXRhW2wudmFsdWVdPy5lcnJvcikscmVmcmVzaDooLi4udik9PmMuX2FzeW5jRGF0YVtsLnZhbHVlXT8uX2luaXQ/Yy5fYXN5bmNEYXRhW2wudmFsdWVdLmV4ZWN1dGUoLi4udik6ZCgpKCksZXhlY3V0ZTooLi4udik9Pl8ucmVmcmVzaCguLi52KSxjbGVhcjooKT0+e2NvbnN0IHY9Yy5fYXN5bmNEYXRhW2wudmFsdWVdO2lmKHY/Ll9hYm9ydENvbnRyb2xsZXIpdHJ5e3YuX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRE9NRXhjZXB0aW9uKCJBc3luY0RhdGEgYWJvcnRlZCBieSB1c2VyLiIsIkFib3J0RXJyb3IiKSl9ZmluYWxseXt2Ll9hYm9ydENvbnRyb2xsZXI9dm9pZCAwfU92KGMsbC52YWx1ZSl9fSx3PVByb21pc2UucmVzb2x2ZShjLl9hc3luY0RhdGFQcm9taXNlc1tsLnZhbHVlXSkudGhlbigoKT0+Xyk7cmV0dXJuIE9iamVjdC5hc3NpZ24odyxfKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3LHt0aGVuOntlbnVtZXJhYmxlOiEwLHZhbHVlOncudGhlbi5iaW5kKHcpfSxjYXRjaDp7ZW51bWVyYWJsZTohMCx2YWx1ZTp3LmNhdGNoLmJpbmQodyl9LGZpbmFsbHk6e2VudW1lcmFibGU6ITAsdmFsdWU6dy5maW5hbGx5LmJpbmQodyl9fSksd31yZXR1cm4gdH19KSxZVD1Ddi5fX251eHRfZmFjdG9yeSgpO0N2Ll9fbnV4dF9mYWN0b3J5KHtsYXp5OiEwLF9mdW5jdGlvbk5hbWU6InVzZUxhenlBc3luY0RhdGEifSk7ZnVuY3Rpb24gYWEoZSl7cmV0dXJuIE4oe2dldCgpe3JldHVybiBlKCk/LnZhbHVlfSxzZXQodCl7Y29uc3Qgbj1lKCk7biYmKG4udmFsdWU9dCl9fSl9ZnVuY3Rpb24gSlQoZSx0KXtyZXR1cm4hKHR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbHx8dHlwZW9mIGU9PSJmdW5jdGlvbiImJnR5cGVvZiB0PT0iZnVuY3Rpb24iKX1hc3luYyBmdW5jdGlvbiBBdihlKXthd2FpdCBuZXcgUHJvbWlzZShuPT5xaShuKSk7Y29uc3QgdD1XMShlKTthd2FpdCBCZSgpLmhvb2tzLmNhbGxIb29rUGFyYWxsZWwoImFwcDpkYXRhOnJlZnJlc2giLHQpfWZ1bmN0aW9uIE92KGUsdCl7dCBpbiBlLnBheWxvYWQuZGF0YSYmKGUucGF5bG9hZC5kYXRhW3RdPXZvaWQgMCksdCBpbiBlLnBheWxvYWQuX2Vycm9ycyYmKGUucGF5bG9hZC5fZXJyb3JzW3RdPXZvaWQgMCksZS5fYXN5bmNEYXRhW3RdJiYoZS5fYXN5bmNEYXRhW3RdLmRhdGEudmFsdWU9ZyhlLl9hc3luY0RhdGFbdF0uX2RlZmF1bHQoKSksZS5fYXN5bmNEYXRhW3RdLmVycm9yLnZhbHVlPXZvaWQgMCxlLl9hc3luY0RhdGFbdF0uc3RhdHVzLnZhbHVlPSJpZGxlIiksdCBpbiBlLl9hc3luY0RhdGFQcm9taXNlcyYmKGUuX2FzeW5jRGF0YVByb21pc2VzW3RdPXZvaWQgMCl9ZnVuY3Rpb24gWFQoZSx0KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIHQpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHVtKGUsdCxuLHIsbyl7ZS5wYXlsb2FkLl9lcnJvcnNbdF0/Pz12b2lkIDA7Y29uc3Qgcz1yLmdldENhY2hlZERhdGEhPT1QdixpPW4sYT1yLmRlZXA/RzpPZSxsPW8hPT12b2lkIDAsdT1lLmhvb2soImFwcDpkYXRhOnJlZnJlc2giLGFzeW5jIGY9PnsoIWZ8fGYuaW5jbHVkZXModCkpJiZhd2FpdCBjLmV4ZWN1dGUoe2NhdXNlOiJyZWZyZXNoOmhvb2sifSl9KSxjPXtkYXRhOmEobD9vOnIuZGVmYXVsdCgpKSxwZW5kaW5nOk4oKCk9PmMuc3RhdHVzLnZhbHVlPT09InBlbmRpbmciKSxlcnJvcjp5dChlLnBheWxvYWQuX2Vycm9ycyx0KSxzdGF0dXM6T2UoImlkbGUiKSxleGVjdXRlOiguLi5mKT0+e2NvbnN0W2QscD12b2lkIDBdPWYsbT1kJiZwPT09dm9pZCAwJiZ0eXBlb2YgZD09Im9iamVjdCI/ZDp7fTtpZihlLl9hc3luY0RhdGFQcm9taXNlc1t0XSYmKG0uZGVkdXBlPz9yLmRlZHVwZSk9PT0iZGVmZXIiKXJldHVybiBlLl9hc3luY0RhdGFQcm9taXNlc1t0XTt7Y29uc3Qgdz0iY2FjaGVkRGF0YSJpbiBtP20uY2FjaGVkRGF0YTpyLmdldENhY2hlZERhdGEodCxlLHtjYXVzZTptLmNhdXNlPz8icmVmcmVzaDptYW51YWwifSk7aWYodyE9PXZvaWQgMClyZXR1cm4gZS5wYXlsb2FkLmRhdGFbdF09Yy5kYXRhLnZhbHVlPXcsYy5lcnJvci52YWx1ZT12b2lkIDAsYy5zdGF0dXMudmFsdWU9InN1Y2Nlc3MiLFByb21pc2UucmVzb2x2ZSh3KX1jLl9hYm9ydENvbnRyb2xsZXImJmMuX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRE9NRXhjZXB0aW9uKCJBc3luY0RhdGEgcmVxdWVzdCBjYW5jZWxsZWQgYnkgZGVkdXBsaWNhdGlvbiIsIkFib3J0RXJyb3IiKSksYy5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIsYy5zdGF0dXMudmFsdWU9InBlbmRpbmciO2NvbnN0IHk9bmV3IEFib3J0Q29udHJvbGxlcixfPW5ldyBQcm9taXNlKCh3LHYpPT57dHJ5e2NvbnN0IGg9bS50aW1lb3V0Pz9yLnRpbWVvdXQsYj1lQyhbYy5fYWJvcnRDb250cm9sbGVyPy5zaWduYWwsbT8uc2lnbmFsXSx5LnNpZ25hbCxoKTtpZihiLmFib3J0ZWQpe2NvbnN0IHg9Yi5yZWFzb247dih4IGluc3RhbmNlb2YgRXJyb3I/eDpuZXcgRE9NRXhjZXB0aW9uKFN0cmluZyh4Pz8iQWJvcnRlZCIpLCJBYm9ydEVycm9yIikpO3JldHVybn1yZXR1cm4gYi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9Pntjb25zdCB4PWIucmVhc29uO3YoeCBpbnN0YW5jZW9mIEVycm9yP3g6bmV3IERPTUV4Y2VwdGlvbihTdHJpbmcoeD8/IkFib3J0ZWQiKSwiQWJvcnRFcnJvciIpKX0se29uY2U6ITAsc2lnbmFsOnkuc2lnbmFsfSksUHJvbWlzZS5yZXNvbHZlKGkoZSx7c2lnbmFsOmJ9KSkudGhlbih3LHYpfWNhdGNoKGgpe3YoaCl9fSkudGhlbihhc3luYyB3PT57bGV0IHY9dztyLnRyYW5zZm9ybSYmKHY9YXdhaXQgci50cmFuc2Zvcm0odykpLHIucGljayYmKHY9WFQodixyLnBpY2spKSxlLnBheWxvYWQuZGF0YVt0XT12LGMuZGF0YS52YWx1ZT12LGMuZXJyb3IudmFsdWU9dm9pZCAwLGMuc3RhdHVzLnZhbHVlPSJzdWNjZXNzIn0pLmNhdGNoKHc9PntpZihlLl9hc3luY0RhdGFQcm9taXNlc1t0XSYmZS5fYXN5bmNEYXRhUHJvbWlzZXNbdF0hPT1ffHxjLl9hYm9ydENvbnRyb2xsZXI/LnNpZ25hbC5hYm9ydGVkKXJldHVybiBlLl9hc3luY0RhdGFQcm9taXNlc1t0XTtpZih0eXBlb2YgRE9NRXhjZXB0aW9uPCJ1IiYmdyBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiYmdy5uYW1lPT09IkFib3J0RXJyb3IiKXJldHVybiBjLnN0YXR1cy52YWx1ZT0iaWRsZSIsZS5fYXN5bmNEYXRhUHJvbWlzZXNbdF07Yy5lcnJvci52YWx1ZT1zbyh3KSxjLmRhdGEudmFsdWU9ZyhyLmRlZmF1bHQoKSksYy5zdGF0dXMudmFsdWU9ImVycm9yIn0pLmZpbmFsbHkoKCk9Pnt5LmFib3J0KCksZGVsZXRlIGUuX2FzeW5jRGF0YVByb21pc2VzW3RdfSk7cmV0dXJuIGUuX2FzeW5jRGF0YVByb21pc2VzW3RdPV8sZS5fYXN5bmNEYXRhUHJvbWlzZXNbdF19LF9leGVjdXRlOmVFKCguLi5mKT0+Yy5leGVjdXRlKC4uLmYpLDAse2xlYWRpbmc6ITB9KSxfZGVmYXVsdDpyLmRlZmF1bHQsX2RlcHM6MCxfaW5pdDohMCxfaGFzaDp2b2lkIDAsX29mZjooKT0+e3UoKSxlLl9hc3luY0RhdGFbdF0/Ll9pbml0JiYoZS5fYXN5bmNEYXRhW3RdLl9pbml0PSExKSxzfHxpdCgoKT0+e2UuX2FzeW5jRGF0YVt0XT8uX2luaXR8fChPdihlLHQpLGMuZXhlY3V0ZT0oKT0+UHJvbWlzZS5yZXNvbHZlKCkpfSl9fTtyZXR1cm4gY31jb25zdCBaVD0oKT0+e30sUHY9KGUsdCxuKT0+e2lmKHQuaXNIeWRyYXRpbmcpcmV0dXJuIHQucGF5bG9hZC5kYXRhW2VdO2lmKG4uY2F1c2UhPT0icmVmcmVzaDptYW51YWwiJiZuLmNhdXNlIT09InJlZnJlc2g6aG9vayIpcmV0dXJuIHQuc3RhdGljLmRhdGFbZV19O2Z1bmN0aW9uIGVDKGUsdCxuKXtjb25zdCByPWUuZmlsdGVyKGk9PiEhaSk7aWYodHlwZW9mIG49PSJudW1iZXIiJiZuPj0wKXtjb25zdCBpPUFib3J0U2lnbmFsLnRpbWVvdXQ/LihuKTtpJiZyLnB1c2goaSl9aWYoQWJvcnRTaWduYWwuYW55KXJldHVybiBBYm9ydFNpZ25hbC5hbnkocik7Y29uc3Qgbz1uZXcgQWJvcnRDb250cm9sbGVyO2Zvcihjb25zdCBpIG9mIHIpaWYoaS5hYm9ydGVkKXtjb25zdCBhPWkucmVhc29uPz9uZXcgRE9NRXhjZXB0aW9uKCJBYm9ydGVkIiwiQWJvcnRFcnJvciIpO3RyeXtvLmFib3J0KGEpfWNhdGNoe28uYWJvcnQoKX1yZXR1cm4gby5zaWduYWx9Y29uc3Qgcz0oKT0+e2NvbnN0IGE9ci5maW5kKGw9PmwuYWJvcnRlZCk/LnJlYXNvbj8/bmV3IERPTUV4Y2VwdGlvbigiQWJvcnRlZCIsIkFib3J0RXJyb3IiKTt0cnl7by5hYm9ydChhKX1jYXRjaHtvLmFib3J0KCl9fTtmb3IoY29uc3QgaSBvZiByKWkuYWRkRXZlbnRMaXN0ZW5lcj8uKCJhYm9ydCIscyx7b25jZTohMCxzaWduYWw6dH0pO3JldHVybiBvLnNpZ25hbH1jb25zdCB0Qz0iJHMiO2Z1bmN0aW9uIGlvKC4uLmUpe2NvbnN0IHQ9dHlwZW9mIGVbZS5sZW5ndGgtMV09PSJzdHJpbmciP2UucG9wKCk6dm9pZCAwO3R5cGVvZiBlWzBdIT0ic3RyaW5nIiYmZS51bnNoaWZ0KHQpO2NvbnN0W24scl09ZTtpZighbnx8dHlwZW9mIG4hPSJzdHJpbmciKXRocm93IG5ldyBUeXBlRXJyb3IoIltudXh0XSBbdXNlU3RhdGVdIGtleSBtdXN0IGJlIGEgc3RyaW5nOiAiK24pO2lmKHIhPT12b2lkIDAmJnR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiW251eHRdIFt1c2VTdGF0ZV0gaW5pdCBtdXN0IGJlIGEgZnVuY3Rpb246ICIrcik7Y29uc3Qgbz10QytuLHM9QmUoKSxpPXl0KHMucGF5bG9hZC5zdGF0ZSxvKTtpZihyJiYocy5fc3RhdGVbb10/Pz17X2RlZmF1bHQ6cn0pLGkudmFsdWU9PT12b2lkIDAmJnIpe2NvbnN0IGE9cigpO2lmKCRlKGEpKXJldHVybiBzLnBheWxvYWQuc3RhdGVbb109YSxhO2kudmFsdWU9YX1yZXR1cm4gaX1mdW5jdGlvbiBuQyhlKXtjb25zdCB0PVtFZShlLm1ldGhvZCk/LnRvVXBwZXJDYXNlKCl8fCJHRVQiLEVlKGUuYmFzZVVSTCldO2Zvcihjb25zdCBuIG9mW2UucXVlcnl8fGUucGFyYW1zXSl7Y29uc3Qgcj1FZShuKTtpZighciljb250aW51ZTtjb25zdCBvPXt9O2Zvcihjb25zdFtzLGldb2YgT2JqZWN0LmVudHJpZXMocikpb1tFZShzKV09RWUoaSk7dC5wdXNoKG8pfWlmKGUuYm9keSl7Y29uc3Qgbj1FZShlLmJvZHkpO2lmKCFuKXQucHVzaChpcyhuKSk7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpdC5wdXNoKGlzKE9iamVjdC5mcm9tRW50cmllcyhbLi4ubmV3IFVpbnQ4QXJyYXkobikuZW50cmllcygpXS5tYXAoKFtyLG9dKT0+W3Isby50b1N0cmluZygpXSkpKSk7ZWxzZSBpZihuIGluc3RhbmNlb2YgRm9ybURhdGEpe2NvbnN0IHI9e307Zm9yKGNvbnN0IG8gb2Ygbi5lbnRyaWVzKCkpe2NvbnN0W3MsaV09bztyW3NdPWkgaW5zdGFuY2VvZiBGaWxlP2kubmFtZTppfXQucHVzaChpcyhyKSl9ZWxzZSBpZihkZihuKSl0LnB1c2goaXMoYnQobikpKTtlbHNlIHRyeXt0LnB1c2goaXMobikpfWNhdGNoe319cmV0dXJuIHR9Y29uc3QgSXY9VHYoe25hbWU6ImNyZWF0ZVVzZUZldGNoIixmYWN0b3J5KGU9e30pe2Z1bmN0aW9uIHQobixyLG8pe2NvbnN0W3M9e30saV09dHlwZW9mIHI9PSJzdHJpbmciP1t7fSxyXTpbcixvXSxhPU4oKCk9PkVlKG4pKSxsPU4oKCk9PkVlKHMua2V5KXx8IiRmIitpcyhbaSx0eXBlb2YgYS52YWx1ZT09InN0cmluZyI/YS52YWx1ZToiIiwuLi5uQyhzKV0pKTtpZighcy5iYXNlVVJMJiZ0eXBlb2YgYS52YWx1ZT09InN0cmluZyImJmEudmFsdWVbMF09PT0iLyImJmEudmFsdWVbMV09PT0iLyIpdGhyb3cgbmV3IEVycm9yKCdbbnV4dF0gW3VzZUZldGNoXSB0aGUgcmVxdWVzdCBVUkwgbXVzdCBub3Qgc3RhcnQgd2l0aCAiLy8iLicpO2NvbnN0IHU9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShzKTplLHtzZXJ2ZXI6YyxsYXp5OmYsZGVmYXVsdDpkLHRyYW5zZm9ybTpwLHBpY2s6bSx3YXRjaDp5LGltbWVkaWF0ZTpfLGdldENhY2hlZERhdGE6dyxkZWVwOnYsZGVkdXBlOmgsdGltZW91dDpiLC4uLnh9PXsuLi50eXBlb2YgZT09ImZ1bmN0aW9uIj97fTp1LC4uLnMsLi4udHlwZW9mIGU9PSJmdW5jdGlvbiI/dTp7fX0sUz1idCh7Li4uSTEsLi4ueCxjYWNoZTp0eXBlb2YgeC5jYWNoZT09ImJvb2xlYW4iP3ZvaWQgMDp4LmNhY2hlfSksaz17c2VydmVyOmMsbGF6eTpmLGRlZmF1bHQ6ZCx0cmFuc2Zvcm06cCxwaWNrOm0saW1tZWRpYXRlOl8sZ2V0Q2FjaGVkRGF0YTp3LGRlZXA6dixkZWR1cGU6aCx0aW1lb3V0OmIsd2F0Y2g6eT09PSExP1tdOlsuLi55fHxbXSxTXX07cmV0dXJuIFlUKHk9PT0hMT9sLnZhbHVlOmwsKEMse3NpZ25hbDpQfSk9PihzLiRmZXRjaHx8Z2xvYmFsVGhpcy4kZmV0Y2gpKGEudmFsdWUse3NpZ25hbDpQLC4uLlN9KSxrKX1yZXR1cm4gdH19KTtJdi5fX251eHRfZmFjdG9yeSgpO0l2Ll9fbnV4dF9mYWN0b3J5KHtsYXp5OiEwLF9mdW5jdGlvbk5hbWU6InVzZUxhenlGZXRjaCJ9KTtmdW5jdGlvbiByQyhlKXtpZihlPy5fX2FzeW5jTG9hZGVyJiYhZS5fX2FzeW5jUmVzb2x2ZWQpcmV0dXJuIGUuX19hc3luY0xvYWRlcigpfWFzeW5jIGZ1bmN0aW9uIFJ2KGUsdD1KdCgpKXtjb25zdHtwYXRoOm4sbWF0Y2hlZDpyfT10LnJlc29sdmUoZSk7aWYoIXIubGVuZ3RofHwodC5fcm91dGVQcmVsb2FkZWR8fD1uZXcgU2V0LHQuX3JvdXRlUHJlbG9hZGVkLmhhcyhuKSkpcmV0dXJuO2NvbnN0IG89dC5fcHJlbG9hZFByb21pc2VzfHw9W107aWYoby5sZW5ndGg+NClyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoKT0+UnYoZSx0KSk7dC5fcm91dGVQcmVsb2FkZWQuYWRkKG4pO2Zvcihjb25zdCBzIG9mIHIpe2NvbnN0IGk9cy5jb21wb25lbnRzPy5kZWZhdWx0O2lmKHR5cGVvZiBpIT0iZnVuY3Rpb24iKWNvbnRpbnVlO2NvbnN0IGE9UHJvbWlzZS5yZXNvbHZlKGkoKSkuY2F0Y2goKCk9Pnt9KS5maW5hbGx5KCgpPT5vLnNwbGljZShvLmluZGV4T2YoYSksMSkpO28ucHVzaChhKX1hd2FpdCBQcm9taXNlLmFsbChvKX1mdW5jdGlvbiBvQyhlPXt9KXtjb25zdCB0PWUucGF0aHx8d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2xldCBuPXt9O3RyeXtuPUpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgibnV4dDpyZWxvYWQiKXx8Int9Iil9Y2F0Y2h7fWlmKGUuZm9yY2V8fG4/LnBhdGghPT10fHxuPy5leHBpcmVzPERhdGUubm93KCkpe3RyeXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJudXh0OnJlbG9hZCIsSlNPTi5zdHJpbmdpZnkoe3BhdGg6dCxleHBpcmVzOkRhdGUubm93KCkrKGUudHRsPz8xZTQpfSkpfWNhdGNoe31pZihlLnBlcnNpc3RTdGF0ZSl0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgibnV4dDpyZWxvYWQ6c3RhdGUiLEpTT04uc3RyaW5naWZ5KHtzdGF0ZTpCZSgpLnBheWxvYWQuc3RhdGV9KSl9Y2F0Y2h7fXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSE9PXQ/d2luZG93LmxvY2F0aW9uLmhyZWY9dDp3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9fWZ1bmN0aW9uIHNDKGU9e30pe2NvbnN0IHQ9T2UoIiIpLG49T2UoZS5wb2xpdGVuZXNzfHwicG9saXRlIikscj1ldigpO2Z1bmN0aW9uIG8odT0iIixjPSJwb2xpdGUiKXt0LnZhbHVlPXUsbi52YWx1ZT1jfWZ1bmN0aW9uIHModSl7byh1LCJwb2xpdGUiKX1mdW5jdGlvbiBpKHUpe28odSwiYXNzZXJ0aXZlIil9ZnVuY3Rpb24gYSgpe28oZG9jdW1lbnQ/LnRpdGxlPy50cmltKCksbi52YWx1ZSl9ZnVuY3Rpb24gbCgpe3I/Lmhvb2tzPy5yZW1vdmVIb29rKCJkb206cmVuZGVyZWQiLGEpfXJldHVybiBhKCkscj8uaG9va3M/Lmhvb2soImRvbTpyZW5kZXJlZCIsKCk9PnthKCl9KSx7X2NsZWFudXA6bCxtZXNzYWdlOnQscG9saXRlbmVzczpuLHNldDpvLHBvbGl0ZTpzLGFzc2VydGl2ZTppfX1mdW5jdGlvbiBpQyhlPXt9KXtjb25zdCB0PUJlKCksbj10Ll9yb3V0ZUFubm91bmNlcnx8PXNDKGUpO3JldHVybiBlLnBvbGl0ZW5lc3MmJmUucG9saXRlbmVzcyE9PW4ucG9saXRlbmVzcy52YWx1ZSYmKG4ucG9saXRlbmVzcy52YWx1ZT1lLnBvbGl0ZW5lc3MpLHFyKCkmJih0Ll9yb3V0ZUFubm91bmNlckRlcHN8fD0wLHQuX3JvdXRlQW5ub3VuY2VyRGVwcysrLFJzKCgpPT57dC5fcm91dGVBbm5vdW5jZXJEZXBzLS0sdC5fcm91dGVBbm5vdW5jZXJEZXBzPT09MCYmKG4uX2NsZWFudXAoKSxkZWxldGUgdC5fcm91dGVBbm5vdW5jZXIpfSkpLG59Y29uc3QgYUM9KC4uLmUpPT5lLmZpbmQodD0+dCE9PXZvaWQgMCk7ZnVuY3Rpb24gbEMoZSl7Y29uc3QgdD1lLmNvbXBvbmVudE5hbWV8fCJOdXh0TGluayI7ZnVuY3Rpb24gbihzKXtyZXR1cm4gdHlwZW9mIHM9PSJzdHJpbmciJiZzLnN0YXJ0c1dpdGgoIiMiKX1mdW5jdGlvbiByKHMsaSxhKXtjb25zdCBsPWE/P2UudHJhaWxpbmdTbGFzaDtpZighc3x8bCE9PSJhcHBlbmQiJiZsIT09InJlbW92ZSIpcmV0dXJuIHM7aWYodHlwZW9mIHM9PSJzdHJpbmciKXJldHVybiBsYShzLGwpO2NvbnN0IHU9InBhdGgiaW4gcyYmcy5wYXRoIT09dm9pZCAwP3MucGF0aDppKHMpLnBhdGg7cmV0dXJuey4uLnMsbmFtZTp2b2lkIDAscGF0aDpsYSh1LGwpfX1mdW5jdGlvbiBvKHMpe2NvbnN0IGk9SnQoKSxhPWZvKCksbD1OKCgpPT4hIWcocy50YXJnZXQpJiZnKHMudGFyZ2V0KSE9PSJfc2VsZiIpLHU9TigoKT0+e2NvbnN0IF89ZyhzLnRvKXx8ZyhzLmhyZWYpfHwiIjtyZXR1cm4gdHlwZW9mIF89PSJzdHJpbmciJiZObihfLHthY2NlcHRSZWxhdGl2ZTohMH0pfSksYz1KZCgiUm91dGVyTGluayIpLGY9YyYmdHlwZW9mIGMhPSJzdHJpbmciP2MudXNlTGluazp2b2lkIDAsZD1OKCgpPT57aWYoZyhzLmV4dGVybmFsKSlyZXR1cm4hMDtjb25zdCBfPWcocy50byl8fGcocy5ocmVmKXx8IiI7cmV0dXJuIHR5cGVvZiBfPT0ib2JqZWN0Ij8hMTpfPT09IiJ8fHUudmFsdWV9KSxwPU4oKCk9Pntjb25zdCBfPWcocy50byl8fGcocy5ocmVmKXx8IiI7cmV0dXJuIGQudmFsdWU/XzpyKF8saS5yZXNvbHZlLGcocy50cmFpbGluZ1NsYXNoKSl9KSxtPWQudmFsdWU/dm9pZCAwOmY/Lih7Li4ucyx0bzpwLHZpZXdUcmFuc2l0aW9uOmcocy52aWV3VHJhbnNpdGlvbil9KSx5PU4oKCk9Pntjb25zdCBfPWcocy50cmFpbGluZ1NsYXNoKT8/ZS50cmFpbGluZ1NsYXNoO2lmKCFwLnZhbHVlfHx1LnZhbHVlfHxuKHAudmFsdWUpKXJldHVybiBwLnZhbHVlO2lmKGQudmFsdWUpe2NvbnN0IHc9dHlwZW9mIHAudmFsdWU9PSJvYmplY3QiJiYicGF0aCJpbiBwLnZhbHVlP3l1KHAudmFsdWUpOnAudmFsdWUsdj10eXBlb2Ygdz09Im9iamVjdCI/aS5yZXNvbHZlKHcpLmhyZWY6dztyZXR1cm4gbGEodixfKX1yZXR1cm4gdHlwZW9mIHAudmFsdWU9PSJvYmplY3QiP2kucmVzb2x2ZShwLnZhbHVlKT8uaHJlZj8/bnVsbDpsYShCaShhLmFwcC5iYXNlVVJMLHAudmFsdWUpLF8pfSk7cmV0dXJue3RvOnAsaGFzVGFyZ2V0OmwsaXNBYnNvbHV0ZVVybDp1LGlzRXh0ZXJuYWw6ZCxocmVmOnksaXNBY3RpdmU6bT8uaXNBY3RpdmU/P04oKCk9PnAudmFsdWU9PT1pLmN1cnJlbnRSb3V0ZS52YWx1ZS5wYXRoKSxpc0V4YWN0QWN0aXZlOm0/LmlzRXhhY3RBY3RpdmU/P04oKCk9PnAudmFsdWU9PT1pLmN1cnJlbnRSb3V0ZS52YWx1ZS5wYXRoKSxyb3V0ZTptPy5yb3V0ZT8/TigoKT0+aS5yZXNvbHZlKHAudmFsdWUpKSxhc3luYyBuYXZpZ2F0ZShfKXthd2FpdCBGbyh5LnZhbHVlLHtyZXBsYWNlOmcocy5yZXBsYWNlKSxleHRlcm5hbDpkLnZhbHVlfHxsLnZhbHVlfSl9fX1yZXR1cm4gc2Uoe25hbWU6dCxwcm9wczp7dG86e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxocmVmOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scmVsOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sbm9SZWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scHJlZmV0Y2hPbjp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LG5vUHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scHJlZmV0Y2hlZENsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scmVwbGFjZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxhcmlhQ3VycmVudFZhbHVlOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sZXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sY3VzdG9tOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHRyYWlsaW5nU2xhc2g6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfX0sdXNlTGluazpvLHNldHVwKHMse3Nsb3RzOml9KXtjb25zdCBhPUp0KCkse3RvOmwsaHJlZjp1LG5hdmlnYXRlOmMsaXNFeHRlcm5hbDpmLGhhc1RhcmdldDpkLGlzQWJzb2x1dGVVcmw6cH09byhzKSxtPU9lKCExKSx5PUcobnVsbCksXz1oPT57eS52YWx1ZT1zLmN1c3RvbT9oPy4kZWw/Lm5leHRFbGVtZW50U2libGluZzpoPy4kZWx9O2Z1bmN0aW9uIHcoaCl7cmV0dXJuIW0udmFsdWUmJih0eXBlb2Ygcy5wcmVmZXRjaE9uPT0ic3RyaW5nIj9zLnByZWZldGNoT249PT1oOnMucHJlZmV0Y2hPbj8uW2hdPz9lLnByZWZldGNoT24/LltoXSkmJihzLnByZWZldGNoPz9lLnByZWZldGNoKSE9PSExJiZzLm5vUHJlZmV0Y2ghPT0hMCYmcy50YXJnZXQhPT0iX2JsYW5rIiYmIWRDKCl9YXN5bmMgZnVuY3Rpb24gdihoPUJlKCkpe2lmKG0udmFsdWUpcmV0dXJuO20udmFsdWU9ITA7Y29uc3QgYj10eXBlb2YgbC52YWx1ZT09InN0cmluZyI/bC52YWx1ZTpmLnZhbHVlP3l1KGwudmFsdWUpOmEucmVzb2x2ZShsLnZhbHVlKS5mdWxsUGF0aCx4PWYudmFsdWU/bmV3IFVSTChiLHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5ocmVmOmI7YXdhaXQgUHJvbWlzZS5hbGwoW2guaG9va3MuY2FsbEhvb2soImxpbms6cHJlZmV0Y2giLHgpPy5jYXRjaCgoKT0+e30pLCFmLnZhbHVlJiYhZC52YWx1ZSYmUnYobC52YWx1ZSxhKS5jYXRjaCgoKT0+e30pXSl9aWYodygidmlzaWJpbGl0eSIpKXtjb25zdCBoPUJlKCk7bGV0IGIseD1udWxsO290KCgpPT57Y29uc3QgUz11QygpO3FpKCgpPT57Yj1DdSgoKT0+e3k/LnZhbHVlPy50YWdOYW1lJiYoeD1TLm9ic2VydmUoeS52YWx1ZSxhc3luYygpPT57eD8uKCkseD1udWxsLGF3YWl0IHYoaCl9KSl9KX0pfSksSG8oKCk9PntiJiZRVChiKSx4Py4oKSx4PW51bGx9KX1yZXR1cm4oKT0+e2lmKCFmLnZhbHVlJiYhZC52YWx1ZSYmIW4obC52YWx1ZSkpe2NvbnN0IHg9e3JlZjpfLHRvOmwudmFsdWUsYWN0aXZlQ2xhc3M6cy5hY3RpdmVDbGFzc3x8ZS5hY3RpdmVDbGFzcyxleGFjdEFjdGl2ZUNsYXNzOnMuZXhhY3RBY3RpdmVDbGFzc3x8ZS5leGFjdEFjdGl2ZUNsYXNzLHJlcGxhY2U6cy5yZXBsYWNlLGFyaWFDdXJyZW50VmFsdWU6cy5hcmlhQ3VycmVudFZhbHVlLGN1c3RvbTpzLmN1c3RvbX07cmV0dXJuIHMuY3VzdG9tfHwodygiaW50ZXJhY3Rpb24iKSYmKHgub25Qb2ludGVyZW50ZXI9di5iaW5kKG51bGwsdm9pZCAwKSx4Lm9uRm9jdXM9di5iaW5kKG51bGwsdm9pZCAwKSksbS52YWx1ZSYmKHguY2xhc3M9cy5wcmVmZXRjaGVkQ2xhc3N8fGUucHJlZmV0Y2hlZENsYXNzKSx4LnJlbD1zLnJlbHx8dm9pZCAwKSxGZShKZCgiUm91dGVyTGluayIpLHgsaS5kZWZhdWx0KX1jb25zdCBoPXMudGFyZ2V0fHxudWxsLGI9YUMocy5ub1JlbD8iIjpzLnJlbCxlLmV4dGVybmFsUmVsQXR0cmlidXRlLHAudmFsdWV8fGQudmFsdWU/Im5vb3BlbmVyIG5vcmVmZXJyZXIiOiIiKXx8bnVsbDtyZXR1cm4gcy5jdXN0b20/aS5kZWZhdWx0P2kuZGVmYXVsdCh7aHJlZjp1LnZhbHVlLG5hdmlnYXRlOmMscHJlZmV0Y2g6dixnZXQgcm91dGUoKXtpZighdS52YWx1ZSlyZXR1cm47Y29uc3QgeD1uZXcgVVJMKHUudmFsdWUsd2luZG93LmxvY2F0aW9uLmhyZWYpO3JldHVybntwYXRoOngucGF0aG5hbWUsZnVsbFBhdGg6eC5wYXRobmFtZSxnZXQgcXVlcnkoKXtyZXR1cm4gT2YoeC5zZWFyY2gpfSxoYXNoOnguaGFzaCxwYXJhbXM6e30sbmFtZTp2b2lkIDAsbWF0Y2hlZDpbXSxyZWRpcmVjdGVkRnJvbTp2b2lkIDAsbWV0YTp7fSxocmVmOnUudmFsdWV9fSxyZWw6Yix0YXJnZXQ6aCxpc0V4dGVybmFsOmYudmFsdWV8fGQudmFsdWUsaXNBY3RpdmU6ITEsaXNFeGFjdEFjdGl2ZTohMX0pOm51bGw6RmUoImEiLHtyZWY6eSxocmVmOnUudmFsdWV8fG51bGwscmVsOmIsdGFyZ2V0Omgsb25DbGljazphc3luYyB4PT57aWYoIShmLnZhbHVlfHxkLnZhbHVlKSl7eC5wcmV2ZW50RGVmYXVsdCgpO3RyeXtjb25zdCBTPVZ5KHUudmFsdWUpO3JldHVybiBhd2FpdChzLnJlcGxhY2U/YS5yZXBsYWNlKFMpOmEucHVzaChTKSl9ZmluYWxseXtpZihuKGwudmFsdWUpKXtjb25zdCBTPWwudmFsdWUuc2xpY2UoMSk7bGV0IGs9Uzt0cnl7az1kZWNvZGVVUklDb21wb25lbnQoUyl9Y2F0Y2h7fWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGspPy5mb2N1cygpfX19fX0saS5kZWZhdWx0Py4oKSl9fX0pfWNvbnN0IGNDPWxDKE8xKTtmdW5jdGlvbiBsYShlLHQpe2NvbnN0IG49dD09PSJhcHBlbmQiP1R5OmtpO3JldHVybiBObihlKSYmIWUuc3RhcnRzV2l0aCgiaHR0cCIpP2U6bihlLCEwKX1mdW5jdGlvbiB1Qygpe2NvbnN0IGU9QmUoKTtpZihlLl9vYnNlcnZlcilyZXR1cm4gZS5fb2JzZXJ2ZXI7bGV0IHQ9bnVsbDtjb25zdCBuPW5ldyBNYXAscj0ocyxpKT0+KHR8fD1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYT0+e2Zvcihjb25zdCBsIG9mIGEpe2NvbnN0IHU9bi5nZXQobC50YXJnZXQpOyhsLmlzSW50ZXJzZWN0aW5nfHxsLmludGVyc2VjdGlvblJhdGlvPjApJiZ1JiZ1KCl9fSksbi5zZXQocyxpKSx0Lm9ic2VydmUocyksKCk9PntuLmRlbGV0ZShzKSx0Py51bm9ic2VydmUocyksbi5zaXplPT09MCYmKHQ/LmRpc2Nvbm5lY3QoKSx0PW51bGwpfSk7cmV0dXJuIGUuX29ic2VydmVyPXtvYnNlcnZlOnJ9fWNvbnN0IGZDPS8yZy87ZnVuY3Rpb24gZEMoKXtjb25zdCBlPW5hdmlnYXRvci5jb25uZWN0aW9uO3JldHVybiEhKGUmJihlLnNhdmVEYXRhfHxmQy50ZXN0KGUuZWZmZWN0aXZlVHlwZSkpKX1jb25zdCBwQz17dWk6e2NvbG9yczp7cHJpbWFyeToiYmx1ZSIsbmV1dHJhbDoiZ3JheSJ9fX0sbUM9e251eHQ6e30saWNvbjp7cHJvdmlkZXI6InNlcnZlciIsY2xhc3M6IiIsYWxpYXNlczp7fSxpY29uaWZ5QXBpRW5kcG9pbnQ6Imh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIixsb2NhbEFwaUVuZHBvaW50OiIvYXBpL19udXh0X2ljb24iLGZhbGxiYWNrVG9BcGk6ITAsY3NzU2VsZWN0b3JQcmVmaXg6ImktIixjc3NXaGVyZVBzZXVkbzohMCxjc3NMYXllcjoiYmFzZSIsbW9kZToiY3NzIixhdHRyczp7ImFyaWEtaGlkZGVuIjohMH0sY29sbGVjdGlvbnM6WyJhY2FkZW1pY29ucyIsImFrYXItaWNvbnMiLCJhbnQtZGVzaWduIiwiYXJjdGljb25zIiwiYmFzaWwiLCJiaSIsImJpdGNvaW4taWNvbnMiLCJicG1uIiwiYnJhbmRpY28iLCJieCIsImJ4bCIsImJ4cyIsImJ5dGVzaXplIiwiY2FyYm9uIiwiY2F0cHB1Y2NpbiIsImNiaSIsImNoYXJtIiwiY2kiLCJjaWIiLCJjaWYiLCJjaWwiLCJjaXJjbGUtZmxhZ3MiLCJjaXJjdW0iLCJjbGFyaXR5IiwiY29kZXgiLCJjb2RpY29uIiwiY292aWQiLCJjcnlwdG9jdXJyZW5jeSIsImNyeXB0b2N1cnJlbmN5LWNvbG9yIiwiY3VpZGEiLCJkYXNoaWNvbnMiLCJkZXZpY29uIiwiZGV2aWNvbi1wbGFpbiIsImRpbmtpZS1pY29ucyIsImR1by1pY29ucyIsImVpIiwiZWwiLCJlbW9qaW9uZSIsImVtb2ppb25lLW1vbm90b25lIiwiZW1vamlvbmUtdjEiLCJlbnR5cG8iLCJlbnR5cG8tc29jaWFsIiwiZW9zLWljb25zIiwiZXAiLCJldCIsImV2YSIsImY3IiwiZmEiLCJmYS1icmFuZHMiLCJmYS1yZWd1bGFyIiwiZmEtc29saWQiLCJmYTYtYnJhbmRzIiwiZmE2LXJlZ3VsYXIiLCJmYTYtc29saWQiLCJmYTctYnJhbmRzIiwiZmE3LXJlZ3VsYXIiLCJmYTctc29saWQiLCJmYWQiLCJmYW1pY29ucyIsImZlIiwiZmVhdGhlciIsImZpbGUtaWNvbnMiLCJmbGFnIiwiZmxhZ3BhY2siLCJmbGF0LWNvbG9yLWljb25zIiwiZmxhdC11aSIsImZsb3diaXRlIiwiZmx1ZW50IiwiZmx1ZW50LWNvbG9yIiwiZmx1ZW50LWVtb2ppIiwiZmx1ZW50LWVtb2ppLWZsYXQiLCJmbHVlbnQtZW1vamktaGlnaC1jb250cmFzdCIsImZsdWVudC1tZGwyIiwiZm9udGVsaWNvIiwiZm9udGlzdG8iLCJmb3Jta2l0IiwiZm91bmRhdGlvbiIsImZ4ZW1vamkiLCJnYWxhIiwiZ2FtZS1pY29ucyIsImdhcmRlbiIsImdlbyIsImdnIiwiZ2lzIiwiZ3Jhdml0eS11aSIsImdyaWRpY29ucyIsImdyb21tZXQtaWNvbnMiLCJndWlkYW5jZSIsImhlYWx0aGljb25zIiwiaGVyb2ljb25zIiwiaGVyb2ljb25zLW91dGxpbmUiLCJoZXJvaWNvbnMtc29saWQiLCJodWdlaWNvbnMiLCJodW1ibGVpY29ucyIsImljIiwiaWNvbW9vbi1mcmVlIiwiaWNvbi1wYXJrIiwiaWNvbi1wYXJrLW91dGxpbmUiLCJpY29uLXBhcmstc29saWQiLCJpY29uLXBhcmstdHdvdG9uZSIsImljb25hbW9vbiIsImljb25vaXIiLCJpY29uczgiLCJpbCIsImlvbiIsIml3d2EiLCJpeCIsImphbSIsImxhIiwibGV0cy1pY29ucyIsImxpbmUtbWQiLCJsaW5laWNvbnMiLCJsb2dvcyIsImxzIiwibHNpY29uIiwibHVjaWRlIiwibHVjaWRlLWxhYiIsIm1hZ2UiLCJtYWplc3RpY29ucyIsIm1ha2kiLCJtYXAiLCJtYXJrZXRlcSIsIm1hdGVyaWFsLWljb24tdGhlbWUiLCJtYXRlcmlhbC1zeW1ib2xzIiwibWF0ZXJpYWwtc3ltYm9scy1saWdodCIsIm1kaSIsIm1kaS1saWdodCIsIm1lZGljYWwtaWNvbiIsIm1lbW9yeSIsIm1ldGVvY29ucyIsIm1ldGVvci1pY29ucyIsIm1pIiwibWluZ2N1dGUiLCJtb25vLWljb25zIiwibXluYXVpIiwibmltYnVzIiwibm9uaWNvbnMiLCJub3RvIiwibm90by12MSIsIm5yayIsIm9jdGljb24iLCJvaSIsIm9vdWkiLCJvcGVubW9qaSIsIm91aSIsInBhamFtYXMiLCJwZXBpY29ucyIsInBlcGljb25zLXBlbmNpbCIsInBlcGljb25zLXBvcCIsInBlcGljb25zLXByaW50IiwicGgiLCJwaWNvbiIsInBpeGVsIiwicGl4ZWxhcnRpY29ucyIsInByaW1lIiwicHJvaWNvbnMiLCJwcyIsInFsZW1lbnRpbmUtaWNvbnMiLCJxdWlsbCIsInJhZGl4LWljb25zIiwicmFwaGFlbCIsInJpIiwicml2ZXQtaWNvbnMiLCJyb2VudGdlbiIsInNpIiwic2ktZ2x5cGgiLCJzaWRla2lja2ljb25zIiwic2ltcGxlLWljb25zIiwic2ltcGxlLWxpbmUtaWNvbnMiLCJza2lsbC1pY29ucyIsInNvbGFyIiwic3Rhc2giLCJzdHJlYW1saW5lIiwic3RyZWFtbGluZS1ibG9jayIsInN0cmVhbWxpbmUtY29sb3IiLCJzdHJlYW1saW5lLWN5YmVyIiwic3RyZWFtbGluZS1jeWJlci1jb2xvciIsInN0cmVhbWxpbmUtZW1vamlzIiwic3RyZWFtbGluZS1mbGV4Iiwic3RyZWFtbGluZS1mbGV4LWNvbG9yIiwic3RyZWFtbGluZS1mcmVlaGFuZCIsInN0cmVhbWxpbmUtZnJlZWhhbmQtY29sb3IiLCJzdHJlYW1saW5lLWthbWVsZW9uLWNvbG9yIiwic3RyZWFtbGluZS1sb2dvcyIsInN0cmVhbWxpbmUtcGl4ZWwiLCJzdHJlYW1saW5lLXBsdW1wIiwic3RyZWFtbGluZS1wbHVtcC1jb2xvciIsInN0cmVhbWxpbmUtc2hhcnAiLCJzdHJlYW1saW5lLXNoYXJwLWNvbG9yIiwic3RyZWFtbGluZS1zdGlja2llcy1jb2xvciIsInN0cmVhbWxpbmUtdWx0aW1hdGUiLCJzdHJlYW1saW5lLXVsdGltYXRlLWNvbG9yIiwic3Vid2F5Iiwic3ZnLXNwaW5uZXJzIiwic3lzdGVtLXVpY29ucyIsInRhYmxlciIsInRkZXNpZ24iLCJ0ZWVueWljb25zIiwidGVtYWtpIiwidG9rZW4iLCJ0b2tlbi1icmFuZGVkIiwidG9wY29hdCIsInR3ZW1vamkiLCJ0eXBjbiIsInVpbCIsInVpbSIsInVpcyIsInVpdCIsInVpdyIsInVuanMiLCJ2YWFkaW4iLCJ2cyIsInZzY29kZS1pY29ucyIsIndlYnN5bWJvbCIsIndldWkiLCJ3aGgiLCJ3aSIsIndwZiIsInptZGkiLCJ6b25kaWNvbnMiXSxmZXRjaFRpbWVvdXQ6MTUwMH0sdWk6e2NvbG9yczp7cHJpbWFyeToiZ3JlZW4iLHNlY29uZGFyeToiYmx1ZSIsc3VjY2VzczoiZ3JlZW4iLGluZm86ImJsdWUiLHdhcm5pbmc6InllbGxvdyIsZXJyb3I6InJlZCIsbmV1dHJhbDoic2xhdGUifSxpY29uczp7YXJyb3dEb3duOiJpLWx1Y2lkZS1hcnJvdy1kb3duIixhcnJvd0xlZnQ6ImktbHVjaWRlLWFycm93LWxlZnQiLGFycm93UmlnaHQ6ImktbHVjaWRlLWFycm93LXJpZ2h0IixhcnJvd1VwOiJpLWx1Y2lkZS1hcnJvdy11cCIsY2F1dGlvbjoiaS1sdWNpZGUtY2lyY2xlLWFsZXJ0IixjaGVjazoiaS1sdWNpZGUtY2hlY2siLGNoZXZyb25Eb3VibGVMZWZ0OiJpLWx1Y2lkZS1jaGV2cm9ucy1sZWZ0IixjaGV2cm9uRG91YmxlUmlnaHQ6ImktbHVjaWRlLWNoZXZyb25zLXJpZ2h0IixjaGV2cm9uRG93bjoiaS1sdWNpZGUtY2hldnJvbi1kb3duIixjaGV2cm9uTGVmdDoiaS1sdWNpZGUtY2hldnJvbi1sZWZ0IixjaGV2cm9uUmlnaHQ6ImktbHVjaWRlLWNoZXZyb24tcmlnaHQiLGNoZXZyb25VcDoiaS1sdWNpZGUtY2hldnJvbi11cCIsY2xvc2U6ImktbHVjaWRlLXgiLGNvcHk6ImktbHVjaWRlLWNvcHkiLGNvcHlDaGVjazoiaS1sdWNpZGUtY29weS1jaGVjayIsZGFyazoiaS1sdWNpZGUtbW9vbiIsZHJhZzoiaS1sdWNpZGUtZ3JpcC12ZXJ0aWNhbCIsZWxsaXBzaXM6ImktbHVjaWRlLWVsbGlwc2lzIixlcnJvcjoiaS1sdWNpZGUtY2lyY2xlLXgiLGV4dGVybmFsOiJpLWx1Y2lkZS1hcnJvdy11cC1yaWdodCIsZXllOiJpLWx1Y2lkZS1leWUiLGV5ZU9mZjoiaS1sdWNpZGUtZXllLW9mZiIsZmlsZToiaS1sdWNpZGUtZmlsZSIsZm9sZGVyOiJpLWx1Y2lkZS1mb2xkZXIiLGZvbGRlck9wZW46ImktbHVjaWRlLWZvbGRlci1vcGVuIixoYXNoOiJpLWx1Y2lkZS1oYXNoIixpbmZvOiJpLWx1Y2lkZS1pbmZvIixsaWdodDoiaS1sdWNpZGUtc3VuIixsb2FkaW5nOiJpLWx1Y2lkZS1sb2FkZXItY2lyY2xlIixtZW51OiJpLWx1Y2lkZS1tZW51IixtaW51czoiaS1sdWNpZGUtbWludXMiLHBhbmVsQ2xvc2U6ImktbHVjaWRlLXBhbmVsLWxlZnQtY2xvc2UiLHBhbmVsT3BlbjoiaS1sdWNpZGUtcGFuZWwtbGVmdC1vcGVuIixwbHVzOiJpLWx1Y2lkZS1wbHVzIixyZWxvYWQ6ImktbHVjaWRlLXJvdGF0ZS1jY3ciLHNlYXJjaDoiaS1sdWNpZGUtc2VhcmNoIixzdG9wOiJpLWx1Y2lkZS1zcXVhcmUiLHN1Y2Nlc3M6ImktbHVjaWRlLWNpcmNsZS1jaGVjayIsc3lzdGVtOiJpLWx1Y2lkZS1tb25pdG9yIix0aXA6ImktbHVjaWRlLWxpZ2h0YnVsYiIsdXBsb2FkOiJpLWx1Y2lkZS11cGxvYWQiLHdhcm5pbmc6ImktbHVjaWRlLXRyaWFuZ2xlLWFsZXJ0In0sdHY6e3R3TWVyZ2VDb25maWc6e319fX0sTnY9ejEocEMsbUMpO2Z1bmN0aW9uIFN0KCl7Y29uc3QgZT1CZSgpO3JldHVybiBlLl9hcHBDb25maWd8fD1idChOdiksZS5fYXBwQ29uZmlnfWZ1bmN0aW9uIER2KCl7Y29uc3QgZT1mbygpLnB1YmxpYy5jc3VyZi5oZWFkZXJOYW1lPz8iIjtyZXR1cm57Y3NyZjp3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJjc3JmLXRva2VuIl0nKT8uZ2V0QXR0cmlidXRlKCJjb250ZW50IiksaGVhZGVyTmFtZTplfX1mdW5jdGlvbiBoQyhlLHQpe3JldHVybiBlLnJlcGxhY2UoLzooXHcrKS9nLChuLHIpPT57aWYociBpbiB0KXtjb25zdCBvPXRbcl07cmV0dXJuIGRlbGV0ZSB0W3JdLFN0cmluZyhvKX1yZXR1cm4gbn0pfWNvbnN0IExlPSRmZXRjaC5jcmVhdGUoe29uUmVxdWVzdChlKXtjb25zdHtvcHRpb25zOnR9PWU7dC5zaWxlbnR8fEFhKCkuc3RhcnQoKSx0eXBlb2YgZS5yZXF1ZXN0PT0ic3RyaW5nIiYmdC5xdWVyeSYmKGUucmVxdWVzdD1oQyhlLnJlcXVlc3QsdC5xdWVyeSkpO3RyeXtjb25zdCBuPUR2KCk7bj8uaGVhZGVyTmFtZSYmKHQuaGVhZGVycz17Li4udC5oZWFkZXJzLFtuLmhlYWRlck5hbWVdOm4uY3NyZn0pfWNhdGNoe319LG9uUmVzcG9uc2UoZSl7ZS5vcHRpb25zLnNpbGVudHx8QWEoKS5maW5pc2goKX0sYXN5bmMgb25SZXNwb25zZUVycm9yKGUpe2Uub3B0aW9ucy5zaWxlbnR8fEFhKCkuZmluaXNoKHtlcnJvcjohMH0pO2NvbnN0IHQ9THYoKSxuPWU/LnJlc3BvbnNlPy5zdGF0dXM7bGV0IHI9ITE7dHJ5e3I9IVN0cmluZyhlLnJlc3BvbnNlLnVybCkuc3RhcnRzV2l0aChnZXRCYXNlVXJsKCkpfWNhdGNoe31zd2l0Y2gobil7Y2FzZSA0MDE6e2lmKGUucmVxdWVzdC50b1N0cmluZygpLmluY2x1ZGVzKCJhdXRoIil8fHIpcmV0dXJuO3RyeXthd2FpdCB0LmxvZ291dCgpfWNhdGNoe31maW5hbGx5e0ZvKCIvYXV0aC9sb2dpbiIpfWJyZWFrfX19fSk7ZnVuY3Rpb24gTHYoKXtmdW5jdGlvbiBlKCl7cmV0dXJuIExlKCIvYXBpL2F1dGgvbWUiKX1mdW5jdGlvbiB0KGMpe3JldHVybiBMZSgiL2FwaS91c2VyIix7bWV0aG9kOiJQQVRDSCIsYm9keTpjfSl9ZnVuY3Rpb24gbigpe3JldHVybiBMZSgiL2FwaS91c2VyL25vdGlmaWNhdGlvbiIpfWZ1bmN0aW9uIHIoYyl7cmV0dXJuIExlKCIvYXBpL3VzZXIvbm90aWZpY2F0aW9uIix7bWV0aG9kOiJQQVRDSCIsYm9keTpjfSl9ZnVuY3Rpb24gbyhjKXtyZXR1cm4gTGUoIi9hcGkvYXV0aC9waG9uZSIse21ldGhvZDoiUEFUQ0giLGJvZHk6e3Bob25lOmN9fSl9ZnVuY3Rpb24gcyhjKXtyZXR1cm4gTGUoIi9hcGkvYXV0aC9pbXBlcnNvbmF0ZS91c2VycyIse3F1ZXJ5OmN9KX1mdW5jdGlvbiBpKGMpe3JldHVybiBMZSgiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3N0YXJ0Iix7bWV0aG9kOiJQT1NUIixib2R5Ont1c2VyX2lkOmN9fSl9ZnVuY3Rpb24gYSgpe3JldHVybiBMZSgiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3N0b3AiLHttZXRob2Q6IlBPU1QifSl9ZnVuY3Rpb24gbChjKXtjb25zdCBmPW5ldyBGb3JtRGF0YTtyZXR1cm4gZi5hcHBlbmQoImZpbGUiLGMpLExlKCIvYXBpL3VzZXIvYXZhdGFyIix7bWV0aG9kOiJQT1NUIixib2R5OmZ9KX1mdW5jdGlvbiB1KCl7cmV0dXJuIExlKCIvYXBpL2F1dGgvbG9nb3V0Iil9cmV0dXJue2ZldGNoQ3VycmVudFVzZXI6ZSx1cGRhdGVDdXJyZW50VXNlcjp0LGZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOm4sdXBkYXRlVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOnIsdXBkYXRlUGhvbmVOdW1iZXI6byx1cGxvYWRBdmF0YXI6bCxmZXRjaEltcGVyc29uYXRpb25DYW5kaWRhdGVzOnMsc3RhcnRJbXBlcnNvbmF0aW9uOmksc3RvcEltcGVyc29uYXRpb246YSxsb2dvdXQ6dX19ZnVuY3Rpb24gZ0MoKXtmdW5jdGlvbiBlKFMpe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb25zIix7cXVlcnk6U30pfWZ1bmN0aW9uIHQoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbnMiLHttZXRob2Q6IlBPU1QiLGJvZHk6U30pfWZ1bmN0aW9uIG4oKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9uIil9ZnVuY3Rpb24gcihTKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9uIix7bWV0aG9kOiJQQVRDSCIsYm9keTpTfSl9ZnVuY3Rpb24gbyhTKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9ucy9zd2l0Y2giLHttZXRob2Q6IlBPU1QiLGJvZHk6U30pfWZ1bmN0aW9uIHMoKXtyZXR1cm4gTGUoIi9hcGkvc2Vzc2lvbi9yZWZyZXNoIix7bWV0aG9kOiJQT1NUIn0pfWZ1bmN0aW9uIGkoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7cXVlcnk6U30pfWZ1bmN0aW9uIGEoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7bWV0aG9kOiJQT1NUIixib2R5OlN9KX1mdW5jdGlvbiBsKCl7cmV0dXJuIExlKCIvYXBpL3Blcm1pc3Npb25zIil9ZnVuY3Rpb24gdShTLGspe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy86dXNlcklkL2FiaWxpdGllcyIse21ldGhvZDoiUEFUQ0giLGJvZHk6ayxxdWVyeTp7dXNlcklkOlN9fSl9ZnVuY3Rpb24gYyhTKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvOnVzZXJJZCIse21ldGhvZDoiREVMRVRFIixxdWVyeTp7dXNlcklkOlN9fSl9ZnVuY3Rpb24gZigpe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiKX1mdW5jdGlvbiBkKFMpe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiLHttZXRob2Q6IlBPU1QiLGJvZHk6U30pfWZ1bmN0aW9uIHAoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbi9pbnZpdGF0aW9ucy86aWQiLHttZXRob2Q6IkRFTEVURSIscXVlcnk6e2lkOlN9fSl9ZnVuY3Rpb24gbShTKXtyZXR1cm4gTGUoIi9hcGkvaW52aXRhdGlvbnMvOnRva2VuIix7cXVlcnk6e3Rva2VuOlN9fSl9ZnVuY3Rpb24geShTKXtyZXR1cm4gTGUoIi9hcGkvaW52aXRhdGlvbnMvOnRva2VuL2FjY2VwdCIse21ldGhvZDoiUE9TVCIscXVlcnk6e3Rva2VuOlN9fSl9ZnVuY3Rpb24gXygpe3JldHVybiBMZSgiL2FwaS9yb2xlcyIpfWZ1bmN0aW9uIHcoUyl7cmV0dXJuIExlKCIvYXBpL3JvbGVzIix7bWV0aG9kOiJQT1NUIixib2R5OlN9KX1mdW5jdGlvbiB2KFMsayl7cmV0dXJuIExlKGAvYXBpL3JvbGVzLyR7U31gLHttZXRob2Q6IlBBVENIIixib2R5Omt9KX1mdW5jdGlvbiBoKFMpe3JldHVybiBMZShgL2FwaS9yb2xlcy8ke1N9YCx7bWV0aG9kOiJERUxFVEUifSl9ZnVuY3Rpb24gYihTLGspe3JldHVybiBMZShgL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy8ke1N9L3JvbGVzYCx7bWV0aG9kOiJQQVRDSCIsYm9keTp7cm9sZV9pZHM6a319KX1mdW5jdGlvbiB4KCl7cmV0dXJuIExlKCIvYXBpL2FjY291bnQiLHttZXRob2Q6IkRFTEVURSJ9KX1yZXR1cm57ZmV0Y2hPcmdhbml6YXRpb25zOmUsY3JlYXRlT3JnYW5pemF0aW9uOnQsZmV0Y2hPcmdhbml6YXRpb246bix1cGRhdGVPcmdhbml6YXRpb246cixzd2l0Y2hPcmdhbml6YXRpb246byxyZWZyZXNoU2Vzc2lvbjpzLGZldGNoTWVtYmVyczppLGFkZE1lbWJlcjphLGZldGNoUGVybWlzc2lvbnM6bCx1cGRhdGVNZW1iZXJBYmlsaXRpZXM6dSxyZW1vdmVNZW1iZXI6YyxmZXRjaEludml0YXRpb25zOmYsY3JlYXRlSW52aXRhdGlvbjpkLHJldm9rZUludml0YXRpb246cCxmZXRjaEludml0YXRpb246bSxhY2NlcHRJbnZpdGF0aW9uOnksZmV0Y2hSb2xlczpfLGNyZWF0ZVJvbGU6dyx1cGRhdGVSb2xlOnYsZGVsZXRlUm9sZTpoLGFzc2lnbk1lbWJlclJvbGVzOmIsZGVsZXRlQWNjb3VudDp4fX1jb25zdCBNZj1ZeSgiYXV0aCIsKCk9Pntjb25zdCBlPWlvKCJ1c2VyIiwoKT0+bnVsbCksdD1MdigpLG49Z0MoKSxyPU4oKCk9PmUudmFsdWU/LmltcGVyc29uYXRvcj8/bnVsbCksbz1OKCgpPT4hIXIudmFsdWUpLHM9TigoKT0+ZS52YWx1ZT8uYWN0aXZlT3JnYW5pemF0aW9uSWQ/P251bGwpO2FzeW5jIGZ1bmN0aW9uIGkoKXtjb25zdCB3PWF3YWl0IHQuZmV0Y2hDdXJyZW50VXNlcigpO2UudmFsdWU9d31hc3luYyBmdW5jdGlvbiBhKHcpe2F3YWl0IHQudXBkYXRlQ3VycmVudFVzZXIodyksYXdhaXQgaSgpfWFzeW5jIGZ1bmN0aW9uIGwodyl7Y29uc3R7YXZhdGFyOnZ9PWF3YWl0IHQudXBsb2FkQXZhdGFyKHcpO2UudmFsdWUmJihlLnZhbHVlPXsuLi5lLnZhbHVlLGF2YXRhcjp2fSl9ZnVuY3Rpb24gdSgpe3JldHVybiB0LmZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzKCl9ZnVuY3Rpb24gYyh3KXtyZXR1cm4gdC51cGRhdGVVc2VyTm90aWZpY2F0aW9uU2V0dGluZ3Modyl9ZnVuY3Rpb24gZih3KXtyZXR1cm4gdC51cGRhdGVQaG9uZU51bWJlcih3KX1hc3luYyBmdW5jdGlvbiBkKHcpe2NvbnN0IHY9YXdhaXQgdC5zdGFydEltcGVyc29uYXRpb24odyk7cmV0dXJuIGUudmFsdWU9dix2fWFzeW5jIGZ1bmN0aW9uIHAoKXtjb25zdCB3PWF3YWl0IHQuc3RvcEltcGVyc29uYXRpb24oKTtyZXR1cm4gZS52YWx1ZT13LHd9YXN5bmMgZnVuY3Rpb24gbSh3KXtjb25zdCB2PWF3YWl0IG4uc3dpdGNoT3JnYW5pemF0aW9uKHtvcmdhbml6YXRpb25faWQ6d30pO3JldHVybiBlLnZhbHVlPXYsdn1hc3luYyBmdW5jdGlvbiB5KCl7Y29uc3Qgdz1hd2FpdCBuLnJlZnJlc2hTZXNzaW9uKCk7cmV0dXJuIGUudmFsdWU9dyx3fWFzeW5jIGZ1bmN0aW9uIF8oKXthd2FpdCB0LmxvZ291dCgpLGUudmFsdWU9bnVsbH1yZXR1cm57Y3VycmVudFVzZXI6ZSxpbXBlcnNvbmF0b3I6cixpc0ltcGVyc29uYXRpbmc6byxhY3RpdmVPcmdhbml6YXRpb25JZDpzLGZldGNoQ3VycmVudFVzZXI6aSx1cGRhdGVDdXJyZW50VXNlcjphLHVwZGF0ZUF2YXRhcjpsLGZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOnUsdXBkYXRlVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOmMsdXBkYXRlUGhvbmVOdW1iZXI6Zixzd2l0Y2hPcmdhbml6YXRpb246bSxyZWZyZXNoU2Vzc2lvbjp5LHN0YXJ0SW1wZXJzb25hdGlvbjpkLHN0b3BJbXBlcnNvbmF0aW9uOnAsbG9nb3V0Ol99fSkseUM9YXN5bmMgZT0+e2xldCB0LG47Y29uc3Qgcj1NZigpO2lmKCFyLmN1cnJlbnRVc2VyKXRyeXtbdCxuXT1ncygoKT0+ci5mZXRjaEN1cnJlbnRVc2VyKCkpLGF3YWl0IHQsbigpfWNhdGNoe31jb25zdCBvPSEhci5jdXJyZW50VXNlcixzPWUubWV0YS5wdWJsaWM9PT0hMHx8ZS5tZXRhLnVuYXV0aGVudGljYXRlZE9ubHk9PT0hMDtpZihvJiZlLm1ldGEudW5hdXRoZW50aWNhdGVkT25seSlyZXR1cm4gRm8oIi9kYXNoYm9hcmQiKTtpZighbyYmIXMpcmV0dXJuIEZvKCIvYXV0aC9sb2dpbiIpfTtmdW5jdGlvbiBUaShlKXtjb25zdFt0PSIiLG49IiIscl09ZS5zcGxpdCgiOiIpO3JldHVybntzdWJqZWN0OnQsYWN0aW9uOm4sc2NvcGU6cn19Y29uc3QgJHY9bmV3IFNldChbInJlYWQiLCJ3cml0ZSIsImRlbGV0ZSJdKTtmdW5jdGlvbiBjcShlLHQpe2NvbnN0e3N1YmplY3Q6bixhY3Rpb246cixzY29wZTpvfT1UaSh0KTtyZXR1cm4gZS5zb21lKHM9Pntjb25zdHtzdWJqZWN0OmksYWN0aW9uOmEsc2NvcGU6bH09VGkocyk7cmV0dXJuIGkhPT1uPyExOmE9PT0ibWFuYWdlIiYmbD09PW8mJiR2LmhhcyhyKT8hMDphPT09ciYmbD09PW99KX1mdW5jdGlvbiB2QyhlLHQpe2NvbnN0e3N1YmplY3Q6bixhY3Rpb246cn09VGkodCk7cmV0dXJuIGUuc29tZShvPT57Y29uc3R7c3ViamVjdDpzLGFjdGlvbjppfT1UaShvKTtyZXR1cm4gcyE9PW4/ITE6aT09PSJtYW5hZ2UiJiYkdi5oYXMocik/ITA6aT09PXJ9KX1mdW5jdGlvbiBiQyhlLHQpe3JldHVybiBlLm1hcChuPT57Y29uc3R7c3ViamVjdDpyLGFjdGlvbjpvLHNjb3BlOnN9PVRpKG4pLGk9e2FjdGlvbjpvLHN1YmplY3Q6cn07cmV0dXJuIHM9PT0ic2VsZiImJnQmJihpLmNvbmRpdGlvbnM9e3VzZXJfaWQ6dH0pLGl9KX1mdW5jdGlvbiB3QyhlLHQpe3JldHVybiB0Lmxlbmd0aD09PTA/ITA6dC5zb21lKG49PnZDKGUsbikpfWNvbnN0IF9DPWU9Pntjb25zdCB0PWUubWV0YS5jYW4/P1tdO2lmKHQubGVuZ3RoPT09MClyZXR1cm47Y29uc3Qgcj1NZigpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdO2lmKCF3QyhyLHQpKXJldHVybiBGbygiL2ZvcmJpZGRlbiIpfSx4Qz1lPT57Y29uc3QgdD1ydih7cGF0aDplLnBhdGh9KTtpZih0LnJlZGlyZWN0KXtjb25zdCBuPXQucmVkaXJlY3QuaW5jbHVkZXMoIiMiKT90LnJlZGlyZWN0OnQucmVkaXJlY3QrZS5oYXNoO3JldHVybiBObihuLHthY2NlcHRSZWxhdGl2ZTohMH0pPyh3aW5kb3cubG9jYXRpb24uaHJlZj1uLCExKTpufX0sU0M9W0JULHlDLF9DLHhDXSxBdT17fTtmdW5jdGlvbiBrQyhlLHQsbil7Y29uc3R7cGF0aG5hbWU6cixzZWFyY2g6byxoYXNoOnN9PXQsaT1lLmluZGV4T2YoIiMiKTtpZihpPi0xKXtjb25zdCB1PXMuaW5jbHVkZXMoZS5zbGljZShpKSk/ZS5zbGljZShpKS5sZW5ndGg6MTtsZXQgYz1zLnNsaWNlKHUpO3JldHVybiBjWzBdIT09Ii8iJiYoYz0iLyIrYyksU3AoYywiIil9Y29uc3QgYT1TcChyLGUpLGw9IW58fFB5KGEsbik/YTpuO3JldHVybiBsKyhsLmluY2x1ZGVzKCI/Iik/IiI6bykrc31jb25zdCBFQz1sdCh7bmFtZToibnV4dDpyb3V0ZXIiLGVuZm9yY2U6InByZSIsYXN5bmMgc2V0dXAoZSl7bGV0IHQsbixyPWZvKCkuYXBwLmJhc2VVUkw7Y29uc3Qgbz1Hci5oaXN0b3J5Py4ocik/P0xFKHIpLHM9R3Iucm91dGVzPyhbdCxuXT1ncygoKT0+R3Iucm91dGVzKENjKSksdD1hd2FpdCB0LG4oKSx0Pz9DYyk6Q2M7bGV0IGk7Y29uc3QgYT1uVCh7Li4uR3Isc2Nyb2xsQmVoYXZpb3I6KHcsdixoKT0+e2lmKHY9PT1Pbil7aT1oO3JldHVybn1pZihHci5zY3JvbGxCZWhhdmlvcil7aWYoYS5vcHRpb25zLnNjcm9sbEJlaGF2aW9yPUdyLnNjcm9sbEJlaGF2aW9yLCJzY3JvbGxSZXN0b3JhdGlvbiJpbiB3aW5kb3cuaGlzdG9yeSl7Y29uc3QgYj1hLmJlZm9yZUVhY2goKCk9PntiKCksd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb249Im1hbnVhbCJ9KX1yZXR1cm4gR3Iuc2Nyb2xsQmVoYXZpb3IodyxPbixpfHxoKX19LGhpc3Rvcnk6byxyb3V0ZXM6c30pOyJzY3JvbGxSZXN0b3JhdGlvbiJpbiB3aW5kb3cuaGlzdG9yeSYmKHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uPSJhdXRvIiksZS52dWVBcHAudXNlKGEpO2NvbnN0IGw9T2UoYS5jdXJyZW50Um91dGUudmFsdWUpO2EuYWZ0ZXJFYWNoKCh3LHYpPT57bC52YWx1ZT12fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUudnVlQXBwLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCJwcmV2aW91c1JvdXRlIix7Z2V0OigpPT5sLnZhbHVlfSk7Y29uc3QgdT1rQyhyLHdpbmRvdy5sb2NhdGlvbixlLnBheWxvYWQucGF0aCksYz1PZShhLmN1cnJlbnRSb3V0ZS52YWx1ZSksZj0oKT0+e2MudmFsdWU9YS5jdXJyZW50Um91dGUudmFsdWV9O2EuYWZ0ZXJFYWNoKCh3LHYpPT57dy5tYXRjaGVkLmF0KC0xKT8uY29tcG9uZW50cz8uZGVmYXVsdD09PXYubWF0Y2hlZC5hdCgtMSk/LmNvbXBvbmVudHM/LmRlZmF1bHQmJmYoKX0pO2NvbnN0IGQ9e3N5bmM6Zn07Zm9yKGNvbnN0IHcgaW4gYy52YWx1ZSlPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx3LHtnZXQ6KCk9PmMudmFsdWVbd10sZW51bWVyYWJsZTohMH0pO2UuX3JvdXRlPVBuKGQpLGUuX21pZGRsZXdhcmV8fD17Z2xvYmFsOltdLG5hbWVkOnt9fTtjb25zdCBwPU9sKCk7YS5hZnRlckVhY2goYXN5bmModyx2LGgpPT57ZGVsZXRlIGUuX3Byb2Nlc3NpbmdNaWRkbGV3YXJlLCFlLmlzSHlkcmF0aW5nJiZwLnZhbHVlJiZhd2FpdCBlLnJ1bldpdGhDb250ZXh0KEsxKSxoJiZhd2FpdCBlLmNhbGxIb29rKCJwYWdlOmxvYWRpbmc6ZW5kIil9KTt0cnl7W3Qsbl09Z3MoKCk9PmEuaXNSZWFkeSgpKSxhd2FpdCB0LG4oKX1jYXRjaCh3KXtbdCxuXT1ncygoKT0+ZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28odykpKSxhd2FpdCB0LG4oKX1jb25zdCBtPXUhPT1hLmN1cnJlbnRSb3V0ZS52YWx1ZS5mdWxsUGF0aD9hLnJlc29sdmUodSk6YS5jdXJyZW50Um91dGUudmFsdWUseT1lLmlzSHlkcmF0aW5nJiZlLnBheWxvYWQucHJlcmVuZGVyZWRBdCYmZS5wYXlsb2FkLnBhdGgmJnUhPT1lLnBheWxvYWQucGF0aCYmUHkoYS5jdXJyZW50Um91dGUudmFsdWUucGF0aCxlLnBheWxvYWQucGF0aCk7ZigpO2NvbnN0IF89ZS5wYXlsb2FkLnN0YXRlLl9sYXlvdXQ7cmV0dXJuIGEuYmVmb3JlRWFjaChhc3luYyh3LHYpPT57YXdhaXQgZS5jYWxsSG9vaygicGFnZTpsb2FkaW5nOnN0YXJ0Iiksdy5tZXRhPWJ0KHcubWV0YSksZS5pc0h5ZHJhdGluZyYmXyYmIWRyKHcubWV0YS5sYXlvdXQpJiYody5tZXRhLmxheW91dD1fKSxlLl9wcm9jZXNzaW5nTWlkZGxld2FyZT0hMDt7Y29uc3QgaD1uZXcgU2V0KFsuLi5TQywuLi5lLl9taWRkbGV3YXJlLmdsb2JhbF0pO2Zvcihjb25zdCB4IG9mIHcubWF0Y2hlZCl7Y29uc3QgUz14Lm1ldGEubWlkZGxld2FyZTtpZihTKWZvcihjb25zdCBrIG9mIGJ2KFMpKWguYWRkKGspfWNvbnN0IGI9cnYoe3BhdGg6dy5wYXRofSk7aWYoYi5hcHBNaWRkbGV3YXJlKWZvcihjb25zdCB4IGluIGIuYXBwTWlkZGxld2FyZSliLmFwcE1pZGRsZXdhcmVbeF0/aC5hZGQoeCk6aC5kZWxldGUoeCk7Zm9yKGNvbnN0IHggb2YgaCl7Y29uc3QgUz10eXBlb2YgeD09InN0cmluZyI/ZS5fbWlkZGxld2FyZS5uYW1lZFt4XXx8YXdhaXQgQXVbeF0/LigpLnRoZW4oaz0+ay5kZWZhdWx0fHxrKTp4O2lmKCFTKXRocm93IG5ldyBFcnJvcihgVW5rbm93biByb3V0ZSBtaWRkbGV3YXJlOiAnJHt4fScuYCk7dHJ5e2NvbnN0IGs9YXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Uyh3LHYpKTtpZighZS5wYXlsb2FkLnNlcnZlclJlbmRlcmVkJiZlLmlzSHlkcmF0aW5nJiYoaz09PSExfHxrIGluc3RhbmNlb2YgRXJyb3IpKXtjb25zdCBUPWt8fHNvKHtzdGF0dXM6NDA0LHN0YXR1c1RleHQ6YFBhZ2UgTm90IEZvdW5kOiAke3V9YH0pO3JldHVybiBhd2FpdCBlLnJ1bldpdGhDb250ZXh0KCgpPT5DbyhUKSksITF9aWYoaz09PSEwKWNvbnRpbnVlO2lmKGs9PT0hMSlyZXR1cm4gaztpZihrKXJldHVybiBIeShrKSYmay5mYXRhbCYmYXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28oaykpLGt9Y2F0Y2goayl7Y29uc3QgVD1zbyhrKTtyZXR1cm4gVC5mYXRhbCYmYXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28oVCkpLFR9fX19KSxhLm9uRXJyb3IoYXN5bmMoKT0+e2RlbGV0ZSBlLl9wcm9jZXNzaW5nTWlkZGxld2FyZSxhd2FpdCBlLmNhbGxIb29rKCJwYWdlOmxvYWRpbmc6ZW5kIil9KSxhLmFmdGVyRWFjaCh3PT57aWYody5tYXRjaGVkLmxlbmd0aD09PTAmJiFwLnZhbHVlKXJldHVybiBlLnJ1bldpdGhDb250ZXh0KCgpPT5Dbyhzbyh7c3RhdHVzOjQwNCxmYXRhbDohMSxzdGF0dXNUZXh0OmBQYWdlIG5vdCBmb3VuZDogJHt3LmZ1bGxQYXRofWAsZGF0YTp7cGF0aDp3LmZ1bGxQYXRofX0pKSl9KSxlLmhvb2tzLmhvb2tPbmNlKCJhcHA6Y3JlYXRlZCIsYXN5bmMoKT0+e3RyeXtpZigibmFtZSJpbiBtJiYobS5uYW1lPXZvaWQgMCkseSl7Y29uc3Qgdz1hLnJlc29sdmUoZS5wYXlsb2FkLnBhdGgpOyJuYW1lImluIHcmJih3Lm5hbWU9dm9pZCAwKSxhd2FpdCBhLnJlcGxhY2Uoey4uLncsZm9yY2U6ITB9KSxlLmhvb2tzLmhvb2tPbmNlKCJhcHA6c3VzcGVuc2U6cmVzb2x2ZSIsYXN5bmMoKT0+e2F3YWl0IGEucmVwbGFjZSh7Li4ubSxmb3JjZTohMH0pfSl9ZWxzZSBhd2FpdCBhLnJlcGxhY2Uoey4uLm0sZm9yY2U6ITB9KTthLm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3I9R3Iuc2Nyb2xsQmVoYXZpb3J9Y2F0Y2godyl7YXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28odykpfX0pLHtwcm92aWRlOntyb3V0ZXI6YX19fX0pLFRDPWx0KHtuYW1lOiJudXh0OnBheWxvYWQiLHNldHVwKGUpe2NvbnN0IHQ9bmV3IFNldDtKdCgpLmJlZm9yZVJlc29sdmUoYXN5bmMobixyKT0+e2lmKG4ucGF0aD09PXIucGF0aClyZXR1cm47Y29uc3Qgbz1hd2FpdCBGcChuLnBhdGgpO2lmKG8pe2Zvcihjb25zdCBzIG9mIHQpZGVsZXRlIGUuc3RhdGljLmRhdGFbc107Zm9yKGNvbnN0IHMgaW4gby5kYXRhKXMgaW4gZS5zdGF0aWMuZGF0YXx8dC5hZGQocyksZS5zdGF0aWMuZGF0YVtzXT1vLmRhdGFbc119fSkscWkoKCk9PntlLmhvb2tzLmhvb2soImxpbms6cHJlZmV0Y2giLGFzeW5jIG49Pntjb25zdHtob3N0bmFtZTpyfT1uZXcgVVJMKG4sd2luZG93LmxvY2F0aW9uLmhyZWYpO3I9PT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUmJmF3YWl0IEZwKCkuY2F0Y2goKCk9Pnt9KX0pLG5hdmlnYXRvci5jb25uZWN0aW9uPy5lZmZlY3RpdmVUeXBlIT09InNsb3ctMmciJiZzZXRUaW1lb3V0KG52LDFlMyl9KX19KSxDQz1sdCgoKT0+e2NvbnN0IGU9SnQoKTtxaSgoKT0+e2UuYmVmb3JlUmVzb2x2ZShhc3luYygpPT57YXdhaXQgbmV3IFByb21pc2UodD0+e3NldFRpbWVvdXQodCwxMDApLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3NldFRpbWVvdXQodCwwKX0pfSl9KX0pfSksQUM9bHQoZT0+e2xldCB0O2FzeW5jIGZ1bmN0aW9uIG4oKXtsZXQgcjt0cnl7cj1hd2FpdCBudigpfWNhdGNoKG8pe2NvbnN0IHM9bztpZighKCJzdGF0dXMiaW4gcyYmKHMuc3RhdHVzPT09NDA0fHxzLnN0YXR1cz09PTQwMykpKXRocm93IHN9dCYmY2xlYXJUaW1lb3V0KHQpLHQ9c2V0VGltZW91dChuLElwKTt0cnl7Y29uc3Qgbz1hd2FpdCAkZmV0Y2goSWYoImJ1aWxkcy9sYXRlc3QuanNvbiIpK2A/JHtEYXRlLm5vdygpfWApO28uaWQhPT1yPy5pZCYmKGUuaG9va3MuY2FsbEhvb2soImFwcDptYW5pZmVzdDp1cGRhdGUiLG8pLHQmJmNsZWFyVGltZW91dCh0KSl9Y2F0Y2h7fX1xaSgoKT0+e3Q9c2V0VGltZW91dChuLElwKX0pfSksT0M9bHQoe25hbWU6Im51eHQ6Y2h1bmstcmVsb2FkIixzZXR1cChlKXtjb25zdCB0PUp0KCksbj1mbygpLHI9bmV3IFNldDt0LmJlZm9yZUVhY2goKCk9PntyLmNsZWFyKCl9KSxlLmhvb2soImFwcDpjaHVua0Vycm9yIiwoe2Vycm9yOnN9KT0+e3IuYWRkKHMpfSk7ZnVuY3Rpb24gbyhzKXtjb25zdCBpPUJpKG4uYXBwLmJhc2VVUkwscy5mdWxsUGF0aCk7b0Moe3BhdGg6aSxwZXJzaXN0U3RhdGU6ITB9KX1lLmhvb2soImFwcDptYW5pZmVzdDp1cGRhdGUiLCgpPT57dC5iZWZvcmVSZXNvbHZlKG8pfSksdC5vbkVycm9yKChzLGkpPT57ci5oYXMocykmJm8oaSl9KX19KSxQQz1sdCh7bmFtZToicGluaWEiLHNldHVwKGUpe2NvbnN0IHQ9UTEoKTtyZXR1cm4gZS52dWVBcHAudXNlKHQpLGtzKHQpLGUucGF5bG9hZCYmZS5wYXlsb2FkLnBpbmlhJiYodC5zdGF0ZS52YWx1ZT1lLnBheWxvYWQucGluaWEpLHtwcm92aWRlOntwaW5pYTp0fX19LGhvb2tzOnsiYXBwOnJlbmRlcmVkIigpe2NvbnN0IGU9QmUoKTtlLnBheWxvYWQucGluaWE9amUoZS4kcGluaWEpLnN0YXRlLnZhbHVlLGtzKHZvaWQgMCl9fX0pLElDPSJfX05VWFRfQ09MT1JfTU9ERV9fIixQYz0ibnV4dC1jb2xvci1tb2RlIixSQz0ibG9jYWxTdG9yYWdlIixTcj13aW5kb3dbSUNdfHx7fSxOQz1sdChlPT57Y29uc3QgdD1pbygiY29sb3ItbW9kZSIsKCk9PmJ0KHtwcmVmZXJlbmNlOlNyLnByZWZlcmVuY2UsdmFsdWU6U3IudmFsdWUsdW5rbm93bjohMSxmb3JjZWQ6ITF9KSkudmFsdWU7SnQoKS5hZnRlckVhY2gocz0+e2NvbnN0IGk9cy5tZXRhLmNvbG9yTW9kZTtpJiZpIT09InN5c3RlbSI/KHQudmFsdWU9aSx0LmZvcmNlZD0hMCk6KHQuZm9yY2VkPSExLHQudmFsdWU9dC5wcmVmZXJlbmNlPT09InN5c3RlbSI/U3IuZ2V0Q29sb3JTY2hlbWUoKTp0LnByZWZlcmVuY2UpfSk7bGV0IG47ZnVuY3Rpb24gcigpe258fCF3aW5kb3cubWF0Y2hNZWRpYXx8KG49d2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKSxuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKCk9PnshdC5mb3JjZWQmJnQucHJlZmVyZW5jZT09PSJzeXN0ZW0iJiYodC52YWx1ZT1Tci5nZXRDb2xvclNjaGVtZSgpKX0pKX1mdW5jdGlvbiBvKHMsaSl7c3dpdGNoKHMpe2Nhc2UiY29va2llIjp3aW5kb3cuZG9jdW1lbnQuY29va2llPVBjKyI9IitpO2JyZWFrO2Nhc2Uic2Vzc2lvblN0b3JhZ2UiOndpbmRvdy5zZXNzaW9uU3RvcmFnZT8uc2V0SXRlbShQYyxpKTticmVhaztkZWZhdWx0OndpbmRvdy5sb2NhbFN0b3JhZ2U/LnNldEl0ZW0oUGMsaSl9fVBlKCgpPT50LnByZWZlcmVuY2Uscz0+e3QuZm9yY2VkfHwocz09PSJzeXN0ZW0iPyh0LnZhbHVlPVNyLmdldENvbG9yU2NoZW1lKCkscigpKTp0LnZhbHVlPXMsbyhSQyxzKSl9LHtpbW1lZGlhdGU6ITB9KSxQZSgoKT0+dC52YWx1ZSwocyxpKT0+e2xldCBhO2E9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksYS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiKnstd2Via2l0LXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7LW1vei10cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50Oy1vLXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7LW1zLXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0iKSksd2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYSksU3IucmVtb3ZlQ29sb3JTY2hlbWUoaSksU3IuYWRkQ29sb3JTY2hlbWUocyksd2luZG93LmdldENvbXB1dGVkU3R5bGUoYSkub3BhY2l0eSxkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGEpfSksdC5wcmVmZXJlbmNlPT09InN5c3RlbSImJnIoKSxlLmhvb2soImFwcDptb3VudGVkIiwoKT0+e3QudW5rbm93biYmKHQucHJlZmVyZW5jZT1Tci5wcmVmZXJlbmNlLHQudmFsdWU9U3IudmFsdWUsdC51bmtub3duPSExKX0pLGUucHJvdmlkZSgiY29sb3JNb2RlIix0KX0pLERDPXZpKCgpPT5YZSgoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+RVApLHZvaWQgMCxpbXBvcnQubWV0YS51cmwpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlLmRlZmF1bHR8fGUpKSxMQz1bWyJJY29uIixEQ11dLCRDPWx0KHtuYW1lOiJudXh0Omdsb2JhbC1jb21wb25lbnRzIixzZXR1cChlKXtmb3IoY29uc3RbdCxuXW9mIExDKWUudnVlQXBwLmNvbXBvbmVudCh0LG4pLGUudnVlQXBwLmNvbXBvbmVudCgiTGF6eSIrdCxuKX19KSxvbz17ZGVmYXVsdDp2aSgoKT0+WGUoKCk9PmltcG9ydCgiLi9DRkJ0Y0I3by5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbNjEsNSwyMSwyMiwyMywyNCwxOSwyMCwxMCw3LDM0LDM1LDI5LDQ2LDMzLDM3XSksaW1wb3J0Lm1ldGEudXJsKS50aGVuKGU9PmUuZGVmYXVsdHx8ZSkpLGF1dGg6dmkoKCk9PlhlKCgpPT5pbXBvcnQoIi4vRGwtRHptN3ouanMiKSxbXSxpbXBvcnQubWV0YS51cmwpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlKSl9LE1DPWx0KHtuYW1lOiJudXh0OnByZWZldGNoIixzZXR1cChlKXtjb25zdCB0PUp0KCk7ZS5ob29rcy5ob29rKCJhcHA6bW91bnRlZCIsKCk9Pnt0LmJlZm9yZUVhY2goYXN5bmMgbj0+e2NvbnN0IHI9bj8ubWV0YT8ubGF5b3V0O3ImJnR5cGVvZiBvb1tyXT09ImZ1bmN0aW9uIiYmYXdhaXQgb29bcl0oKX0pfSksZS5ob29rcy5ob29rKCJsaW5rOnByZWZldGNoIixuPT57aWYoTm4obikpcmV0dXJuO2NvbnN0IHI9dC5yZXNvbHZlKG4pO2lmKCFyKXJldHVybjtjb25zdCBvPXIubWV0YS5sYXlvdXQ7bGV0IHM9YnYoci5tZXRhLm1pZGRsZXdhcmUpO3M9cy5maWx0ZXIoaT0+dHlwZW9mIGk9PSJzdHJpbmciKTtmb3IoY29uc3QgaSBvZiBzKXR5cGVvZiBBdVtpXT09ImZ1bmN0aW9uIiYmQXVbaV0oKTt0eXBlb2Ygbz09InN0cmluZyImJm8gaW4gb28mJnJDKG9vW29dKX0pfX0pLEJDPWx0KCgpPT4oe3Byb3ZpZGU6e2NzcmZGZXRjaDpOeS5jcmVhdGUoe29uUmVxdWVzdCh7b3B0aW9uczp0fSl7Y29uc3R7Y3NyZjpuLGhlYWRlck5hbWU6cn09RHYoKTt0LmhlYWRlcnM9bmV3IEhlYWRlcnModC5oZWFkZXJzfHx7fSksdC5oZWFkZXJzLmFwcGVuZChyLG4pfX0pfX0pKSxxQz1uZXcgUmVnRXhwKC9Hb29nbGVib3RcL3xHb29nbGVib3QtTW9iaWxlfEdvb2dsZWJvdC1JbWFnZXxHb29nbGVib3QtTmV3c3xHb29nbGVib3QtVmlkZW98QWRzQm90LUdvb2dsZShbXi1dfCQpfEFkc0JvdC1Hb29nbGUtTW9iaWxlfEZlZWRmZXRjaGVyLUdvb2dsZXxNZWRpYXBhcnRuZXJzLUdvb2dsZXxNZWRpYXBhcnRuZXJzIFwoR29vZ2xlYm90XCl8QVBJcy1Hb29nbGV8R29vZ2xlLUluc3BlY3Rpb25Ub29sfFN0b3JlYm90LUdvb2dsZXxHb29nbGVPdGhlcnxiaW5nYm90fFNsdXJwfFt3V11nZXR8TGlua2VkSW5Cb3R8UHl0aG9uLXVybGxpYnxweXRob24tcmVxdWVzdHN8YWlvaHR0cHxodHRweHxsaWJ3d3ctcGVybHxodHRwdW5pdHxOdXRjaHxHby1odHRwLWNsaWVudHxwaHBjcmF3bHxtc25ib3R8anl4b2JvdHxGQVNULVdlYkNyYXdsZXJ8RkFTVCBFbnRlcnByaXNlIENyYXdsZXJ8QklHTE9UUk9OfFRlb21hfGNvbnZlcmF8c2Vla2JvdHxHaWdhYm90fEdpZ2FibGFzdHxleGFib3R8aWFfYXJjaGl2ZXJ8R2luZ2VyQ3Jhd2xlcnx3ZWJtb24gfEhUVHJhY2t8Z3J1Ylwub3JnfFVzaW5lTm91dmVsbGVDcmF3bGVyfGFudGlib3R8bmV0cmVzZWFyY2hzZXJ2ZXJ8c3BlZWR5fGZsdWZmeXxmaW5kbGlua3xtc3Jib3R8cGFuc2NpZW50fHlhY3lib3R8QUlTZWFyY2hCb3R8aXBzLWFnZW50fHRhZ29vYm90fE1KMTJib3R8d29yaW9ib3R8eWFuZ2F8YnV6emJvdHxtbGJvdHx5YW5kZXhcLmNvbVwvYm90c3xwdXJlYm90fExpbmd1ZWUgQm90fEN5YmVyUGF0cm9sfHZvaWxhYm90fEJhaWR1c3BpZGVyfGNpdGVzZWVyeGJvdHxzcGJvdHx0d2VuZ2Fib3R8cG9zdHJhbmt8VHVybml0aW58c2NyaWJkYm90fHBhZ2UycnNzfHNpdGVib3R8bGlua2RleHxBZGlkeGJvdHxlem9vbXN8ZG90Ym90fE1haWxcLlJVX0JvdHxkaXNjb2JvdHxoZXJpdHJpeHxmaW5kdGhhdGZpbGV8ZXVyb3BhcmNoaXZlXC5vcmd8TmVyZEJ5TmF0dXJlXC5Cb3R8KHNpc3RyaXh8U0lTVFJJWCkgW2NDXXJhd2xlcnxBaHJlZnMoQm90fFNpdGVBdWRpdCl8ZnVlbGJvdHxDcnVuY2hCb3R8SW5kZWVkQm90fG1hcHB5ZGF0YXx3b29ib3R8Wm9vbWluZm9Cb3R8UHJpdmFjeUF3YXJlQm90fE11bHRpdmlld2JvdHxTV0lNR0JvdHxHcm9iYm90fGVyaWdodHxBcGVyY2l0ZXxzZW1hbnRpY2JvdHxBYm91bmRleHxkb21haW5jcmF3bGVyfHdic2VhcmNoYm90fHN1bW1pZnl8Q0NCb3R8ZWRpc3RlcmJvdHxTZXpuYW1Cb3R8ZWMybGlua2ZpbmRlcnxnc2xmYm90fGFpSGl0Qm90fGludGVsaXVtX2JvdHxmYWNlYm9va2V4dGVybmFsaGl0fFlldGl8UmV0cmV2b1BhZ2VBbmFseXplcnxsYi1zcGlkZXJ8U29nb3V8bHNzYm90fGNhcmVlcmJvdHx3b3Rib3h8d29jYm90fGljaGlyb3xEdWNrRHVja0JvdHxsc3Nyb2NrZXRjcmF3bGVyfGRydXBhY3R8d2ViY29tcGFueWNyYXdsZXJ8YWNvb25ib3R8b3BlbmluZGV4c3BpZGVyfGduYW0gZ25hbSBzcGlkZXJ8d2ViLWFyY2hpdmUtbmV0XC5jb21cLmJvdHxiYWNrbGlua2NyYXdsZXJ8Y29jY29jfGludGVncm9tZWRifGNvbnRlbnQgY3Jhd2xlciBzcGlkZXJ8dG9wbGlzdGJvdHxpdDJtZWRpYS1kb21haW4tY3Jhd2xlcnxpcC13ZWItY3Jhd2xlclwuY29tfHNpdGVleHBsb3JlclwuaW5mb3xlbGlzYWJvdHxwcm94aW1pY3xjaGFuZ2VkZXRlY3Rpb258YXJhYm90fFdlU0VFOlNlYXJjaHxuaWtpLWJvdHxDcnlzdGFsU2VtYW50aWNzQm90fHJvZ2VyYm90fDM2MFNwaWRlcnxwc2JvdHxJbnRlcmZheFNjYW5Cb3R8Q0MgTWV0YWRhdGEgU2NhcGVyfGcwMGcxZVwubmV0fEdyYXBlc2hvdENyYXdsZXJ8dXJsYXBwZW5kYm90fGJyYWlub2JvdHxmci1jcmF3bGVyfGJpbmxhcnxTaW1wbGVDcmF3bGVyfFR3aXR0ZXJib3R8Y1hlbnNlYm90fHNtdGJvdHxibmZcLmZyX2JvdHxBNi1JbmRleGVyfEFEbWFudFh8RmFjZWJvdHxPcmFuZ2VCb3RcL3xtZW1vcnlib3R8QWR2Qm90fE1lZ2FJbmRleHxTZW1hbnRpY1NjaG9sYXJCb3R8bHR4NzF8bmVyZHlib3R8eG92aWJvdHxCVWJpTkd8UXdhbnRpZnl8YXJjaGl2ZVwub3JnX2JvdHxBcHBsZWJvdHxUd2VldG1lbWVCb3R8Y3Jhd2xlcjRqfGZpbmR4Ym90fFNbZUVdW21NXXJ1c2hCb3R8eW9vekJvdHxsaXBwZXJoZXl8WSFKfERvbWFpbiBSZS1BbmltYXRvciBCb3R8QWRkVGhpc3xTY3JlYW1pbmcgRnJvZyBTRU8gU3BpZGVyfE1ldGFVUkl8U2NyYXB5fExpdmVsYXBbYkJdb3R8T3Blbkhvc2VCb3R8Q2Fwc3VsZUNoZWNrZXJ8Y29sbGVjdGlvbkBpbmZlZ3lcLmNvbXxJc3RlbGxhQm90fERldVN1XC98YmV0YUJvdHxDbGlxemJvdFwvfE1vamVla0JvdFwvfG5ldEVzdGF0ZSBORSBDcmF3bGVyfFNhZmVTZWFyY2ggbWljcm9kYXRhIGNyYXdsZXJ8R2x1dGVuIEZyZWUgQ3Jhd2xlclwvfFNvbmljfFN5c29tb3N8VHJvdmV8ZGVhZGxpbmtjaGVja2VyfFNsYWNrLUltZ1Byb3h5fEVtYmVkbHl8UmFua0FjdGl2ZUxpbmtCb3R8aXNrYW5pZXxTYWZlRE5TQm90fFNreXBlVXJpUHJldmlld3xWZW9vemJvdHxTbGFja2JvdHxyZWRkaXRib3R8ZGF0YWduaW9uYm90fEdvb2dsZS1BZHdvcmRzLUluc3RhbnR8YWRiZWF0X2JvdHxXaGF0c0FwcHxjb250eGJvdHxwaW50ZXJlc3RcLmNvbVwvYm90fGVsZWN0cmljbW9ua3xHYXJsaWtDcmF3bGVyfEJpbmdQcmV2aWV3XC98dmViaWRvb2JvdHxGZW10b3NlYXJjaEJvdHxZYWhvbyBMaW5rIFByZXZpZXd8TWV0YUpvYkJvdHxEb21haW5TdGF0c0JvdHxtaW5kVXBCb3R8RGF1bVwvfEp1Z2VuZHNjaHV0enByb2dyYW1tLUNyYXdsZXJ8WGVudSBMaW5rIFNsZXV0aHxQY29yZS1IVFRQfG1vYXRib3R8S29zbWlvQm90fFtwUF1pbmdkb218QXBwSW5zaWdodHN8UGhhbnRvbUpTfEdvd2lraWJvdHxQaXBsQm90fERpc2NvcmRib3R8VGVsZWdyYW1Cb3R8SmV0c2xpZGV8bmV3c2hhcmVjb3VudHN8SmFtZXMgQk9UfEJhcmtbclJdb3dsZXJ8VGluRXllfFNvY2lhbFJhbmtJT0JvdHx0cmVuZGljdGlvbmJvdHxPY2FyaW5hYm90fGVwaWNib3R8UHJpbWFsYm90fER1Y2tEdWNrR28tRmF2aWNvbnMtQm90fEdub3dpdE5ld3Nib3R8TGVpa2lib3R8TGlua0FyY2hpdmVyfFlhS1wvfFBhcGVyTGlCb3R8RGlnZyBEZWVwZXJ8ZGNyYXdsfFNuYWNrdG9yeXxBbmRlcnNQaW5rQm90fEZ5cmVib3R8RXZlcnlvbmVTb2NpYWxCb3R8TWVkaWF0b29sa2l0Ym90fEx1bWluYXRvci1yb2JvdHN8RXh0TGlua3NCb3R8U3VydmV5Qm90fE5JTkdcL3xva2h0dHB8TnV6emVsfG9tZ2lsaXxQb2NrZXRQYXJzZXJ8WWlzb3VTcGlkZXJ8dW0tTE58VG91dGlhb1NwaWRlcnxNdWNrUmFja3xKYW1pZSdzIFNwaWRlcnxBSENcL3xOZXRjcmFmdFN1cnZleUFnZW50fExhc2VybGlrZWJvdHxeQXBhY2hlLUh0dHBDbGllbnR8QXBwRW5naW5lLUdvb2dsZXxKZXR0eXxVcGZsb3d8VGhpbmtsYWJ8VHJhYWNrclwuY29tfFR3dXJseXxNYXN0b2RvbnxodHRwX2dldHxEbnl6Qm90fGJvdGlmeXwwMDdhYzkgQ3Jhd2xlcnxCZWhsb29sQm90fEJyYW5kVmVyaXR5fGNoZWNrX2h0dHB8QkRDYm90fFp1bUJvdHxFWklEfElDQy1DcmF3bGVyfEFyY2hpdmVCb3R8XkxDQyB8ZmlsdGVyZGJcLmlzc1wubmV0XC9jcmF3bGVyfEJMUF9iYm90fEJvbWJvcmFCb3R8QnVja1wvfENvbXBhbnlib29rLUNyYXdsZXJ8R2VuaWVvfG1hZ3BpZS1jcmF3bGVyfE1lbHR3YXRlck5ld3N8TW9yZW92ZXJ8bmV3c3BhcGVyXC98U2NvdXRKZXR8KF58IClzZW50cnlcL3xTdG9yeWdpemVCb3R8VXB0aW1lUm9ib3R8T3V0Y2xpY2tzQm90fHNlb3NjYW5uZXJzfEhhdGVuYXxHb29nbGUgV2ViIFByZXZpZXd8TWF1aUJvdHxBbHBoYUJvdHxTQkwtQk9UfElBUyBjcmF3bGVyfGFkc2Nhbm5lcnxOZXR2aWJlc3xhY2FwYm90fEJhaWR1LVl1bkd1YW5DZXxiaXRseWJvdHxibG9nbXVyYUJvdHxCb3RcLkFyYVR1cmthXC5jb218Ym90LXBnZVwuY2hsb29lXC5jb218Qm94Y2FyQm90fEJUV2ViQ2xpZW50fENvbnRleHRBZCBCb3R8RGlnaW5jb3JlIGJvdHxEaXNxdXN8RmVlZGx5fEZldGNoXC98RmV2ZXJ8RmxhbWluZ29fU2VhcmNoRW5naW5lfEZsaXBib2FyZFByb3h5fGcycmVhZGVyLWJvdHxHMiBXZWIgU2VydmljZXN8aW1yYm90fEs3TUxXQ0JvdHxLZW12aWJvdHxMYW5kYXUtTWVkaWEtU3BpZGVyfGxpbmthcGVkaWFib3R8dmtTaGFyZXxTaXRlaW1wcm92ZVwuY29tfEJMRVhCb3RcL3xEYXJlQm9vc3R8WnVwZXJsaXN0Qm90XC98TWluaWZsdXhcL3xGZWVkc3BvdHxEaWZmYm90XC98U0VPa2lja3N8dHJhY2VteWZpbGV8TmltYm9zdHJhdHVzLUJvdHx6Z3JhYnxQUi1DWVwuUlV8QWRzVHh0Q3Jhd2xlcnxEYXRhZmVlZHdhdGNofFphYmJpeHxUYW5naWJsZWVCb3R8Z29vZ2xlLXhyYXdsZXJ8YXhpb3N8QW1hem9uIENsb3VkRnJvbnR8UHVsc2Vwb2ludHxDbG91ZEZsYXJlLUFsd2F5c09ubGluZXxDbG91ZGZsYXJlLUhlYWx0aGNoZWNrc3xDbG91ZGZsYXJlLVRyYWZmaWMtTWFuYWdlcnxDbG91ZEZsYXJlLVByZWZldGNofENsb3VkZmxhcmUtU1NMRGV0ZWN0b3J8aHR0cHM6XC9cL2RldmVsb3BlcnNcLmNsb3VkZmxhcmVcLmNvbVwvc2VjdXJpdHktY2VudGVyXC98R29vZ2xlLVN0cnVjdHVyZWQtRGF0YS1UZXN0aW5nLVRvb2x8V29yZHVwSW5mb1NlYXJjaHxXZWJEYXRhU3RhdHN8SHR0cFVybENvbm5lY3Rpb258Wm9vbUJvdHxWZWxlblB1YmxpY1dlYkNyYXdsZXJ8TW9vZGxlQm90fGpwZy1uZXdzYm90fG91dGJyYWlufFczQ19WYWxpZGF0b3J8VmFsaWRhdG9yXC5udXxXM0MtY2hlY2tsaW5rfFczQy1tb2JpbGVPS3xXM0NfSTE4bi1DaGVja2VyfEZlZWRWYWxpZGF0b3J8VzNDX0NTU19WYWxpZGF0b3J8VzNDX1VuaWNvcm58R29vZ2xlLVBoeXNpY2FsV2VifEJsYWNrYm9hcmR8SUNCb3RcL3xCYXpRdXh8VHdpbmdseXxSaXZ2YXxFeHBlcmlib3R8YXdlc29tZWNyYXdsZXJ8RGF0YXByb3ZpZGVyXC5jb218R3JvdXBIaWdoXC98dGhlb2xkcmVhZGVyXC5jb218QW55RXZlbnR8VXB0aW1lYm90XC5vcmd8Tm1hcCBTY3JpcHRpbmcgRW5naW5lfDJpcFwucnV8Q2xpY2thZ3l8Q2FsaXBlcmJvdHxNQkNyYXdsZXJ8b25saW5lLXdlYmNlby1ib3R8QjJCIEJvdHxBZGRTZWFyY2hCb3R8R29vZ2xlIEZhdmljb258SHViU3BvdHxDaHJvbWUtTGlnaHRob3VzZXxIZWFkbGVzc0Nocm9tZXxDaGVja01hcmtOZXR3b3JrXC98d3d3XC51cHRpbWVcLmNvbXxTdHJlYW1saW5lM0JvdFwvfHNlcnBzdGF0Ym90XC98TWl4bm9kZUNhY2hlXC98XmN1cmx8U2ltcGxlU2NyYXBlcnxSU1NpbmdCb3R8Sm9vYmxlYm90fGZlZG9yYXBsYW5ldHxGcmllbmRpY2F8TmV4dENsb3VkfFRpbnkgVGlueSBSU1N8UmVnaW9uU3R1dHRnYXJ0Qm90fEJ5dGVzcGlkZXJ8RGF0YW55emV8R29vZ2xlLVNpdGUtVmVyaWZpY2F0aW9ufFRyZW5kc21hcFJlc29sdmVyfHR3ZWV0ZWR0aW1lc3xOVEVOVGJvdHxHd2VuZXxTaW1wbGVQaWV8U2VhcmNoQXRsYXN8U3VwZXJmZWVkcnxmZWVkYm90fFVULURvcmtib3R8QW1hem9uYm90fFNlcmVuZGVwdXR5Qm90fEV5ZW90YWJvdHxvZmZpY2VzdG9yZWJvdHxOZXRpY2xlIENyYXdsZXJ8U3VyZG90bHlCb3R8TGlua2lzQm90fEF3YXJpb1NtYXJ0Qm90fEF3YXJpb1Jzc0JvdHxSeXRlQm90fEZyZWVXZWJNb25pdG9yaW5nIFNpdGVDaGVja2VyfEFzcGllZ2VsQm90fE5BVkVSIEJsb2cgUnNzYm90fHplbmJhY2sgYm90fFNlbnRpQm90fERvbWFpbnMgUHJvamVjdFwvfFBhbmRhbHl0aWNzfFZLUm9ib3R8Ymlkc3dpdGNoYm90fHRpZ2VyYm90fE5JWFN0YXRzYm90fEF0b20gRmVlZCBSb2JvdHxbQ2NddXJlYm90fFBhZ2VQZWVrZXJcL3xWaWdpbFwvfHJzc2JvdFwvfHN0YXJ0bWVib3RcL3xKb2Jib2Vyc2VCb3R8c2Vld2l0aGtpZHN8TklOSkEgYm90fEN1dGJvdHxCdWJsdXBCb3R8QnJhbmRPTmJvdHxSaWRkZXJCb3R8VGFib29sYWJvdHxEdWJib3Rib3R8RmluZElUQW5zd2Vyc2JvdHxpbmZvb2JvdHxSZWZpbmRib3R8QmxvZ1RyYWZmaWNcL1xkXC5cZCsgRmVlZC1GZXRjaGVyfFNlb2JpbGl0eUJvdHxDaW5jcmF3fERyYWdvbmJvdHxWb2x1dW1EU1AtY29udGVudC1ib3R8RnJlc2hSU1N8Qml0Qm90fF5QSFAtQ3VybC1DbGFzc3xHb29nbGUtQ2VydGlmaWNhdGVzLUJyaWRnZXxjZW50dXJ5Ym90fFZpYmVyfGVcLnZlbnR1cmVzIEludmVzdG1lbnQgQ3Jhd2xlcnxldmMtYmF0Y2h8UGV0YWxCb3R8dmlydXN0b3RhbHwoXnwgKVBUU1RcL3xtaW5pY3Jhd2xlcnxDb29raWVib3R8dHJvdml0Qm90fHNlb3N0YXJcLmNvfElvbkNyYXdsfFVwdGltZS1LdW1hfFNlZWtwb3J0fEZyZXNocGluZ0JvdHxGZWVkYmlufENyaXRlb0JvdHxTbmFwIFVSTCBQcmV2aWV3IFNlcnZpY2V8QmV0dGVyIFVwdGltZSBCb3R8UnV4aXRTeW50aGV0aWN8R29vZ2xlLVJlYWQtQWxvdWR8VmFsdmVcL1N0ZWFtfE9ka2xCb3RcL3xHUFRCb3R8Q2hhdEdQVC1Vc2VyfE9BSS1TZWFyY2hCb3R8WWFuZGV4UmVuZGVyUmVzb3VyY2VzQm90XC98TGlnaHRzcGVlZFN5c3RlbXNDcmF3bGVyfGV2LWNyYXdsZXJcL3xCaXRTaWdodEJvdFwvfHdvb3JhbmtyZXZpZXdcL3xHb29nbGUtU2FmZXR5fEF3YXJpb0JvdHxEYXRhRm9yU2VvQm90fExpbmVzcGlkZXJ8V2VsbEtub3duQm90fEEgUGF0ZW50IENyYXdsZXJ8U3RyYWN0Qm90fHNlYXJjaFwubWFyZ2luYWxpYVwubnV8WW91Qm90fE5pY2VjcmF3bGVyfE5lZXZhYm90fEJyaWdodEVkZ2UgQ3Jhd2xlcnxTaXRlQ2hlY2tlckJvdENyYXdsZXJ8VG9tYmFQdWJsaWNXZWJDcmF3bGVyfENyYXdseVByb2plY3RDcmF3bGVyfEtvbW9kaWFCb3R8S1N0YW5kQm90fENJU1BBIFdlYmNyYXdsZXJ8TVRSb2JvdHxoeXNjb3JlXC5pb3xBbGV4YW5kcmlhT3JnQm90fDJpcCBib3R8WWVsbG93YnJhbmRwcm90ZWN0aW9uYm90fFNFT2xpemVyfHZ1aHV2Qm90fElORVRERVgtQk9UfFN5bmFwc2V8dDN2ZXJzaW9uc0JvdHxkZWVwbm9jfENvY29seXplYm90fGh5cGVzdGF0fFJldmVyc2VFbmdpbmVlcmluZ0JvdHxzZW1waVwudGVjaHxJZnJhbWVseXxNZXRhSW5zcGVjdG9yfG5vZGUtZmV0Y2h8bDlleHBsb3JlfHB5dGhvbi1vcGVuZ3JhcGh8T3BlbkdyYXBoQ2hlY2t8ZGV2ZWxvcGVyc1wuZ29vZ2xlXC5jb21cL1wrXC93ZWJcL3NuaXBwZXR8U2VudXRvQm90fE1hQ29DdXxOZXdzQmx1cnxpbm9yZWFkZXJ8TmV0U3lzdGVtc1Jlc2VhcmNofFBhZ2VUaGluZ3xXb3JkUHJlc3NcL3xQaHhCb3R8SW1hZ2VzaWZ0Qm90fEV4cGFuc2V8SW50ZXJuZXRNZWFzdXJlbWVudHxeQldcL3xHZWVkb0JvdHxBdWRpc3RvIENyYXdsZXJ8UGVycGxleGl0eUJvdFwvfFtjQ11sYXVkZVtiQl1vdHxNb25zaWRvYm90fEdyb3VwTWVCb3R8VmVyY2VsYm90fHZlcmNlbC1zY3JlZW5zaG90fGZhY2Vib29rY2F0YWxvZ1wvfG1ldGEtZXh0ZXJuYWxhZHNcL3xtZXRhLWV4dGVybmFsYWdlbnRcL3xtZXRhLWV4dGVybmFsZmV0Y2hlclwvfEFjYWRlbWljQm90UlRVfEtleWJhc2VCb3R8TGVtbXl8Q29va2llSHViU2NhbnxIeWRyb3plblwuaW98SFRUUCBCYW5uZXIgRGV0ZWN0aW9ufFN1bW1hbHlCb3R8TWljcm9zb2Z0UHJldmlld1wvfEdlZWRvUHJvZHVjdFNlYXJjaHxUaWtUb2tTcGlkZXJ8T25DcmF3bFwvfHNpbmRyZXNvcmh1c1wvZ290fENlbnN5c0luc3BlY3RcL3xTQkludHVpdGlvbnNCb3RcL3xzaXRlYnVsYnxZZXh0Qm90XC98RGF0YWRvZ1N5bnRoZXRpY3N8R29vZ2xlLUFkcy1Db252ZXJzaW9ucy8pLEZDPS8oYW5kcm9pZHxiYlxkK3xtZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfEZCQU58RkJBVnxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfEluc3RhZ3JhbXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzKDR8NikwfHN5bWJpYW58dHJlb3x1cFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8d2FwfHdpbmRvd3MgY2V8eGRhfHhpaW5vL2ksekM9LzEyMDd8NjMxMHw2NTkwfDNnc298NHRocHw1MFsxLTZdaXw3NzBzfDgwMnN8YSB3YXxhYmFjfGFjKGVyfG9vfHNcLSl8YWkoa298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXxcLW18ciB8cyApfGF2YW58YmUoY2t8bGx8bnEpfGJpKGxifHJkKXxibChhY3xheil8YnIoZXx2KXd8YnVtYnxid1wtKG58dSl8YzU1XC98Y2FwaXxjY3dhfGNkbVwtfGNlbGx8Y2h0bXxjbGRjfGNtZFwtfGNvKG1wfG5kKXxjcmF3fGRhKGl0fGxsfG5nKXxkYnRlfGRjXC1zfGRldml8ZGljYXxkbW9ifGRvKGN8cClvfGRzKDEyfFwtZCl8ZWwoNDl8YWkpfGVtKGwyfHVsKXxlcihpY3xrMCl8ZXNsOHxleihbNC03XTB8b3N8d2F8emUpfGZldGN8Zmx5KFwtfF8pfGcxIHV8ZzU2MHxnZW5lfGdmXC01fGdcLW1vfGdvKFwud3xvZCl8Z3IoYWR8dW4pfGhhaWV8aGNpdHxoZFwtKG18cHx0KXxoZWlcLXxoaShwdHx0YSl8aHAoIGl8aXApfGhzXC1jfGh0KGMoXC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpXC0oMjB8Z298bWEpfGkyMzB8aWFjKCB8XC18XC8pfGlicm98aWRlYXxpZzAxfGlrb218aW0xa3xpbm5vfGlwYXF8aXJpc3xqYSh0fHYpYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KCB8XC8pfGtsb258a3B0IHxrd2NcLXxreW8oY3xrKXxsZShub3x4aSl8bGcoIGd8XC8oa3xsfHUpfDUwfDU0fFwtW2Etd10pfGxpYnd8bHlueHxtMVwtd3xtM2dhfG01MFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bVwtY3J8bWUocmN8cmkpfG1pKG84fG9hfHRzKXxtbWVmfG1vKDAxfDAyfGJpfGRlfGRvfHQoXC18IHxvfHYpfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMCgwfDIpfG41MCgwfDJ8NSl8bjcoMCgwfDEpfDEwKXxuZSgoY3xtKVwtfG9ufHRmfHdmfHdnfHd0KXxub2soNnxpKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihhfGR8dCl8cGR4Z3xwZygxM3xcLShbMS04XXxjKSl8cGhpbHxwaXJlfHBsKGF5fHVjKXxwblwtMnxwbyhja3xydHxzZSl8cHJveHxwc2lvfHB0XC1nfHFhXC1hfHFjKDA3fDEyfDIxfDMyfDYwfFwtWzItN118aVwtKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVwvfHNhKGdlfG1hfG1tfG1zfG55fHZhKXxzYygwMXxoXC18b298cFwtKXxzZGtcL3xzZShjKFwtfDB8MSl8NDd8bWN8bmR8cmkpfHNnaFwtfHNoYXJ8c2llKFwtfG0pfHNrXC0wfHNsKDQ1fGlkKXxzbShhbHxhcnxiM3xpdHx0NSl8c28oZnR8bnkpfHNwKDAxfGhcLXx2XC18diApfHN5KDAxfG1iKXx0MigxOHw1MCl8dDYoMDB8MTB8MTgpfHRhKGd0fGxrKXx0Y2xcLXx0ZGdcLXx0ZWwoaXxtKXx0aW1cLXx0XC1tb3x0byhwbHxzaCl8dHMoNzB8bVwtfG0zfG01KXx0eFwtOXx1cChcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXxcLXYpfHZtNDB8dm9kYXx2dWxjfHZ4KDUyfDUzfDYwfDYxfDcwfDgwfDgxfDgzfDg1fDk4KXx3M2MoXC18ICl8d2ViY3x3aGl0fHdpKGcgfG5jfG53KXx3bWxifHdvbnV8eDcwMHx5YXNcLXx5b3VyfHpldG98enRlXC0vaSxqQz0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxGQkFOfEZCQVZ8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxJbnN0YWdyYW18aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWlub3xhbmRyb2lkfGlwYWR8cGxheWJvb2t8c2lsay9pLFZDPS8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzXC0pfGFpKGtvfHJuKXxhbChhdnxjYXxjbyl8YW1vaXxhbihleHxueXx5dyl8YXB0dXxhcihjaHxnbyl8YXModGV8dXMpfGF0dHd8YXUoZGl8XC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcLShufHUpfGM1NVwvfGNhcGl8Y2N3YXxjZG1cLXxjZWxsfGNodG18Y2xkY3xjbWRcLXxjbyhtcHxuZCl8Y3Jhd3xkYShpdHxsbHxuZyl8ZGJ0ZXxkY1wtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcLXxfKXxnMSB1fGc1NjB8Z2VuZXxnZlwtNXxnXC1tb3xnbyhcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGRcLShtfHB8dCl8aGVpXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1wtY3xodChjKFwtfCB8X3xhfGd8cHxzfHQpfHRwKXxodShhd3x0Yyl8aVwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFwtfFwvKXxpYnJvfGlkZWF8aWcwMXxpa29tfGltMWt8aW5ub3xpcGFxfGlyaXN8amEodHx2KWF8amJyb3xqZW11fGppZ3N8a2RkaXxrZWppfGtndCggfFwvKXxrbG9ufGtwdCB8a3djXC18a3lvKGN8ayl8bGUobm98eGkpfGxnKCBnfFwvKGt8bHx1KXw1MHw1NHxcLVthLXddKXxsaWJ3fGx5bnh8bTFcLXd8bTNnYXxtNTBcL3xtYSh0ZXx1aXx4byl8bWMoMDF8MjF8Y2EpfG1cLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFwtfCB8b3x2KXx6eil8bXQoNTB8cDF8diApfG13YnB8bXl3YXxuMTBbMC0yXXxuMjBbMi0zXXxuMzAoMHwyKXxuNTAoMHwyfDUpfG43KDAoMHwxKXwxMCl8bmUoKGN8bSlcLXxvbnx0Znx3Znx3Z3x3dCl8bm9rKDZ8aSl8bnpwaHxvMmltfG9wKHRpfHd2KXxvcmFufG93ZzF8cDgwMHxwYW4oYXxkfHQpfHBkeGd8cGcoMTN8XC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdFwtZ3xxYVwtYXxxYygwN3wxMnwyMXwzMnw2MHxcLVsyLTddfGlcLSl8cXRla3xyMzgwfHI2MDB8cmFrc3xyaW05fHJvKHZlfHpvKXxzNTVcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFwtfG9vfHBcLSl8c2RrXC98c2UoYyhcLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2hcLXxzaGFyfHNpZShcLXxtKXxza1wtMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoXC18dlwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXC18dGRnXC18dGVsKGl8bSl8dGltXC18dFwtbW98dG8ocGx8c2gpfHRzKDcwfG1cLXxtM3xtNSl8dHhcLTl8dXAoXC5ifGcxfHNpKXx1dHN0fHY0MDB8djc1MHx2ZXJpfHZpKHJnfHRlKXx2ayg0MHw1WzAtM118XC12KXx2bTQwfHZvZGF8dnVsY3x2eCg1Mnw1M3w2MHw2MXw3MHw4MHw4MXw4M3w4NXw5OCl8dzNjKFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXC18eW91cnx6ZXRvfHp0ZVwtL2k7ZnVuY3Rpb24gVUMoZSl7cmV0dXJuIEZDLnRlc3QoZSl8fHpDLnRlc3QoZS5zbGljZSgwLDQpKX1mdW5jdGlvbiBIQyhlKXtyZXR1cm4gakMudGVzdChlKXx8VkMudGVzdChlLnNsaWNlKDAsNCkpfWZ1bmN0aW9uIFdDKGUpe3JldHVybi9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KGUpfWZ1bmN0aW9uIE12KGUpe3JldHVybi9hbmRyb2lkL2kudGVzdChlKX1mdW5jdGlvbiBHQyhlKXtyZXR1cm4vV2luZG93cy8udGVzdChlKX1mdW5jdGlvbiBLQyhlKXtyZXR1cm4vTWFjIE9TIFgvLnRlc3QoZSl9ZnVuY3Rpb24gUUMoZSl7cmV0dXJuL0xpbnV4L2kudGVzdChlKSYmIU12KGUpfWNvbnN0IFlDPVt7bmFtZToiU2Ftc3VuZyIscmVnZXg6L1NhbXN1bmdCcm93c2VyL2l9LHtuYW1lOiJFZGdlIixyZWdleDovZWRnKD86W2VhXXxpb3MpP1wvL2l9LHtuYW1lOiJGaXJlZm94IixyZWdleDovZmlyZWZveHxpY2V3ZWFzZWx8Znhpb3MvaX0se25hbWU6IkNocm9tZSIscmVnZXg6L2Nocm9tZXxjcmlvc3xjcm1vL2l9LHtuYW1lOiJTYWZhcmkiLHJlZ2V4Oi9zYWZhcml8YXBwbGV3ZWJraXQvaX1dO2Z1bmN0aW9uIEpDKGUpe2Zvcihjb25zdCB0IG9mIFlDKWlmKHQucmVnZXgudGVzdChlKSlyZXR1cm4gdC5uYW1lO3JldHVybiIifWZ1bmN0aW9uIFhDKGUsdD17fSl7bGV0IG49ITEscj0hMSxvPSExLHM9ITE7aWYoZT09PSJBbWF6b24gQ2xvdWRGcm9udCIpdFsiY2xvdWRmcm9udC1pcy1tb2JpbGUtdmlld2VyIl09PT0idHJ1ZSImJihuPSEwLHI9ITApLHRbImNsb3VkZnJvbnQtaXMtdGFibGV0LXZpZXdlciJdPT09InRydWUiJiYobj0hMSxyPSEwKSx0WyJjbG91ZGZyb250LWlzLWRlc2t0b3Atdmlld2VyIl09PT0idHJ1ZSImJihuPSExLHI9ITEpLHRbImNsb3VkZnJvbnQtaXMtaW9zLXZpZXdlciJdPT09InRydWUiJiYobz0hMCksdFsiY2xvdWRmcm9udC1pcy1hbmRyb2lkLXZpZXdlciJdPT09InRydWUiJiYocz0hMCk7ZWxzZSBpZih0JiZ0WyJjZi1kZXZpY2UtdHlwZSJdKXN3aXRjaCh0WyJjZi1kZXZpY2UtdHlwZSJdKXtjYXNlIm1vYmlsZSI6bj0hMCxyPSEwO2JyZWFrO2Nhc2UidGFibGV0IjpuPSExLHI9ITA7YnJlYWs7Y2FzZSJkZXNrdG9wIjpuPSExLHI9ITE7YnJlYWt9ZWxzZSBuPVVDKGUpLHI9SEMoZSksbz1XQyhlKSxzPU12KGUpO2NvbnN0IGk9R0MoZSksYT1LQyhlKSxsPVFDKGUpLHU9SkMoZSksYz11PT09IlNhZmFyaSIsZj11PT09IkZpcmVmb3giLGQ9dT09PSJFZGdlIixwPXU9PT0iQ2hyb21lIixtPXU9PT0iU2Ftc3VuZyIseT1xQy50ZXN0KGUpO3JldHVybnt1c2VyQWdlbnQ6ZSxpc01vYmlsZTpuLGlzTW9iaWxlT3JUYWJsZXQ6cixpc1RhYmxldDohbiYmcixpc0Rlc2t0b3A6IXIsaXNJb3M6byxpc0FuZHJvaWQ6cyxpc1dpbmRvd3M6aSxpc0xpbnV4OmwsaXNNYWNPUzphLGlzQXBwbGU6YXx8byxpc0Rlc2t0b3BPclRhYmxldDohbixpc1NhZmFyaTpjLGlzRmlyZWZveDpmLGlzRWRnZTpkLGlzQ2hyb21lOnAsaXNTYW1zdW5nOm0saXNDcmF3bGVyOnl9fWNvbnN0IFpDPWx0KCgpPT57Y29uc3QgdD1mbygpLnB1YmxpYy5kZXZpY2UuZGVmYXVsdFVzZXJBZ2VudDtsZXQgbjt7Y29uc3Qgcj1uYXZpZ2F0b3IudXNlckFnZW50fHx0O249YnQoWEMocikpfXJldHVybntwcm92aWRlOntkZXZpY2U6bn19fSk7dmFyIGNhPXtpbmhlcml0OiJpbmhlcml0IixjdXJyZW50OiJjdXJyZW50Y29sb3IiLHRyYW5zcGFyZW50OiJ0cmFuc3BhcmVudCIsYmxhY2s6IiMwMDAiLHdoaXRlOiIjZmZmIixzbGF0ZTp7NTA6Im9rbGNoKDk4LjQlIDAuMDAzIDI0Ny44NTgpIiwxMDA6Im9rbGNoKDk2LjglIDAuMDA3IDI0Ny44OTYpIiwyMDA6Im9rbGNoKDkyLjklIDAuMDEzIDI1NS41MDgpIiwzMDA6Im9rbGNoKDg2LjklIDAuMDIyIDI1Mi44OTQpIiw0MDA6Im9rbGNoKDcwLjQlIDAuMDQgMjU2Ljc4OCkiLDUwMDoib2tsY2goNTUuNCUgMC4wNDYgMjU3LjQxNykiLDYwMDoib2tsY2goNDQuNiUgMC4wNDMgMjU3LjI4MSkiLDcwMDoib2tsY2goMzcuMiUgMC4wNDQgMjU3LjI4NykiLDgwMDoib2tsY2goMjcuOSUgMC4wNDEgMjYwLjAzMSkiLDkwMDoib2tsY2goMjAuOCUgMC4wNDIgMjY1Ljc1NSkiLDk1MDoib2tsY2goMTIuOSUgMC4wNDIgMjY0LjY5NSkifSxncmF5Ons1MDoib2tsY2goOTguNSUgMC4wMDIgMjQ3LjgzOSkiLDEwMDoib2tsY2goOTYuNyUgMC4wMDMgMjY0LjU0MikiLDIwMDoib2tsY2goOTIuOCUgMC4wMDYgMjY0LjUzMSkiLDMwMDoib2tsY2goODcuMiUgMC4wMSAyNTguMzM4KSIsNDAwOiJva2xjaCg3MC43JSAwLjAyMiAyNjEuMzI1KSIsNTAwOiJva2xjaCg1NS4xJSAwLjAyNyAyNjQuMzY0KSIsNjAwOiJva2xjaCg0NC42JSAwLjAzIDI1Ni44MDIpIiw3MDA6Im9rbGNoKDM3LjMlIDAuMDM0IDI1OS43MzMpIiw4MDA6Im9rbGNoKDI3LjglIDAuMDMzIDI1Ni44NDgpIiw5MDA6Im9rbGNoKDIxJSAwLjAzNCAyNjQuNjY1KSIsOTUwOiJva2xjaCgxMyUgMC4wMjggMjYxLjY5MikifSx6aW5jOns1MDoib2tsY2goOTguNSUgMCAwKSIsMTAwOiJva2xjaCg5Ni43JSAwLjAwMSAyODYuMzc1KSIsMjAwOiJva2xjaCg5MiUgMC4wMDQgMjg2LjMyKSIsMzAwOiJva2xjaCg4Ny4xJSAwLjAwNiAyODYuMjg2KSIsNDAwOiJva2xjaCg3MC41JSAwLjAxNSAyODYuMDY3KSIsNTAwOiJva2xjaCg1NS4yJSAwLjAxNiAyODUuOTM4KSIsNjAwOiJva2xjaCg0NC4yJSAwLjAxNyAyODUuNzg2KSIsNzAwOiJva2xjaCgzNyUgMC4wMTMgMjg1LjgwNSkiLDgwMDoib2tsY2goMjcuNCUgMC4wMDYgMjg2LjAzMykiLDkwMDoib2tsY2goMjElIDAuMDA2IDI4NS44ODUpIiw5NTA6Im9rbGNoKDE0LjElIDAuMDA1IDI4NS44MjMpIn0sbmV1dHJhbDp7NTA6Im9rbGNoKDk4LjUlIDAgMCkiLDEwMDoib2tsY2goOTclIDAgMCkiLDIwMDoib2tsY2goOTIuMiUgMCAwKSIsMzAwOiJva2xjaCg4NyUgMCAwKSIsNDAwOiJva2xjaCg3MC44JSAwIDApIiw1MDA6Im9rbGNoKDU1LjYlIDAgMCkiLDYwMDoib2tsY2goNDMuOSUgMCAwKSIsNzAwOiJva2xjaCgzNy4xJSAwIDApIiw4MDA6Im9rbGNoKDI2LjklIDAgMCkiLDkwMDoib2tsY2goMjAuNSUgMCAwKSIsOTUwOiJva2xjaCgxNC41JSAwIDApIn0sc3RvbmU6ezUwOiJva2xjaCg5OC41JSAwLjAwMSAxMDYuNDIzKSIsMTAwOiJva2xjaCg5NyUgMC4wMDEgMTA2LjQyNCkiLDIwMDoib2tsY2goOTIuMyUgMC4wMDMgNDguNzE3KSIsMzAwOiJva2xjaCg4Ni45JSAwLjAwNSA1Ni4zNjYpIiw0MDA6Im9rbGNoKDcwLjklIDAuMDEgNTYuMjU5KSIsNTAwOiJva2xjaCg1NS4zJSAwLjAxMyA1OC4wNzEpIiw2MDA6Im9rbGNoKDQ0LjQlIDAuMDExIDczLjYzOSkiLDcwMDoib2tsY2goMzcuNCUgMC4wMSA2Ny41NTgpIiw4MDA6Im9rbGNoKDI2LjglIDAuMDA3IDM0LjI5OCkiLDkwMDoib2tsY2goMjEuNiUgMC4wMDYgNTYuMDQzKSIsOTUwOiJva2xjaCgxNC43JSAwLjAwNCA0OS4yNSkifSxtYXV2ZTp7NTA6Im9rbGNoKDk4LjUlIDAgMCkiLDEwMDoib2tsY2goOTYlIDAuMDAzIDMyNS42KSIsMjAwOiJva2xjaCg5Mi4yJSAwLjAwNSAzMjUuNjIpIiwzMDA6Im9rbGNoKDg2LjUlIDAuMDEyIDMyNS42OCkiLDQwMDoib2tsY2goNzEuMSUgMC4wMTkgMzIzLjAyKSIsNTAwOiJva2xjaCg1NC4yJSAwLjAzNCAzMjIuNSkiLDYwMDoib2tsY2goNDMuNSUgMC4wMjkgMzIxLjc4KSIsNzAwOiJva2xjaCgzNi40JSAwLjAyOSAzMjMuODkpIiw4MDA6Im9rbGNoKDI2LjMlIDAuMDI0IDMyMC4xMikiLDkwMDoib2tsY2goMjEuMiUgMC4wMTkgMzIyLjEyKSIsOTUwOiJva2xjaCgxNC41JSAwLjAwOCAzMjYpIn0sb2xpdmU6ezUwOiJva2xjaCg5OC44JSAwLjAwMyAxMDYuNSkiLDEwMDoib2tsY2goOTYuNiUgMC4wMDUgMTA2LjUpIiwyMDA6Im9rbGNoKDkzJSAwLjAwNyAxMDYuNSkiLDMwMDoib2tsY2goODglIDAuMDExIDEwNi42KSIsNDAwOiJva2xjaCg3My43JSAwLjAyMSAxMDYuOSkiLDUwMDoib2tsY2goNTglIDAuMDMxIDEwNy4zKSIsNjAwOiJva2xjaCg0Ni42JSAwLjAyNSAxMDcuMykiLDcwMDoib2tsY2goMzkuNCUgMC4wMjMgMTA3LjQpIiw4MDA6Im9rbGNoKDI4LjYlIDAuMDE2IDEwNy40KSIsOTAwOiJva2xjaCgyMi44JSAwLjAxMyAxMDcuNCkiLDk1MDoib2tsY2goMTUuMyUgMC4wMDYgMTA3LjEpIn0sbWlzdDp7NTA6Im9rbGNoKDk4LjclIDAuMDAyIDE5Ny4xKSIsMTAwOiJva2xjaCg5Ni4zJSAwLjAwMiAxOTcuMSkiLDIwMDoib2tsY2goOTIuNSUgMC4wMDUgMjE0LjMpIiwzMDA6Im9rbGNoKDg3LjIlIDAuMDA3IDIxOS42KSIsNDAwOiJva2xjaCg3Mi4zJSAwLjAxNCAyMTQuNCkiLDUwMDoib2tsY2goNTYlIDAuMDIxIDIxMy41KSIsNjAwOiJva2xjaCg0NSUgMC4wMTcgMjEzLjIpIiw3MDA6Im9rbGNoKDM3LjglIDAuMDE1IDIxNikiLDgwMDoib2tsY2goMjcuNSUgMC4wMTEgMjE2LjkpIiw5MDA6Im9rbGNoKDIxLjglIDAuMDA4IDIyMy45KSIsOTUwOiJva2xjaCgxNC44JSAwLjAwNCAyMjguOCkifSx0YXVwZTp7NTA6Im9rbGNoKDk4LjYlIDAuMDAyIDY3LjgpIiwxMDA6Im9rbGNoKDk2JSAwLjAwMiAxNy4yKSIsMjAwOiJva2xjaCg5Mi4yJSAwLjAwNSAzNC4zKSIsMzAwOiJva2xjaCg4Ni44JSAwLjAwNyAzOS41KSIsNDAwOiJva2xjaCg3MS40JSAwLjAxNCA0MS4yKSIsNTAwOiJva2xjaCg1NC43JSAwLjAyMSA0My4xKSIsNjAwOiJva2xjaCg0My44JSAwLjAxNyAzOS4zKSIsNzAwOiJva2xjaCgzNi43JSAwLjAxNiAzNS43KSIsODAwOiJva2xjaCgyNi44JSAwLjAxMSAzNi41KSIsOTAwOiJva2xjaCgyMS40JSAwLjAwOSA0My4xKSIsOTUwOiJva2xjaCgxNC43JSAwLjAwNCA0OS4zKSJ9LHJlZDp7NTA6Im9rbGNoKDk3LjElIDAuMDEzIDE3LjM4KSIsMTAwOiJva2xjaCg5My42JSAwLjAzMiAxNy43MTcpIiwyMDA6Im9rbGNoKDg4LjUlIDAuMDYyIDE4LjMzNCkiLDMwMDoib2tsY2goODAuOCUgMC4xMTQgMTkuNTcxKSIsNDAwOiJva2xjaCg3MC40JSAwLjE5MSAyMi4yMTYpIiw1MDA6Im9rbGNoKDYzLjclIDAuMjM3IDI1LjMzMSkiLDYwMDoib2tsY2goNTcuNyUgMC4yNDUgMjcuMzI1KSIsNzAwOiJva2xjaCg1MC41JSAwLjIxMyAyNy41MTgpIiw4MDA6Im9rbGNoKDQ0LjQlIDAuMTc3IDI2Ljg5OSkiLDkwMDoib2tsY2goMzkuNiUgMC4xNDEgMjUuNzIzKSIsOTUwOiJva2xjaCgyNS44JSAwLjA5MiAyNi4wNDIpIn0sb3JhbmdlOns1MDoib2tsY2goOTglIDAuMDE2IDczLjY4NCkiLDEwMDoib2tsY2goOTUuNCUgMC4wMzggNzUuMTY0KSIsMjAwOiJva2xjaCg5MC4xJSAwLjA3NiA3MC42OTcpIiwzMDA6Im9rbGNoKDgzLjclIDAuMTI4IDY2LjI5KSIsNDAwOiJva2xjaCg3NSUgMC4xODMgNTUuOTM0KSIsNTAwOiJva2xjaCg3MC41JSAwLjIxMyA0Ny42MDQpIiw2MDA6Im9rbGNoKDY0LjYlIDAuMjIyIDQxLjExNikiLDcwMDoib2tsY2goNTUuMyUgMC4xOTUgMzguNDAyKSIsODAwOiJva2xjaCg0NyUgMC4xNTcgMzcuMzA0KSIsOTAwOiJva2xjaCg0MC44JSAwLjEyMyAzOC4xNzIpIiw5NTA6Im9rbGNoKDI2LjYlIDAuMDc5IDM2LjI1OSkifSxhbWJlcjp7NTA6Im9rbGNoKDk4LjclIDAuMDIyIDk1LjI3NykiLDEwMDoib2tsY2goOTYuMiUgMC4wNTkgOTUuNjE3KSIsMjAwOiJva2xjaCg5Mi40JSAwLjEyIDk1Ljc0NikiLDMwMDoib2tsY2goODcuOSUgMC4xNjkgOTEuNjA1KSIsNDAwOiJva2xjaCg4Mi44JSAwLjE4OSA4NC40MjkpIiw1MDA6Im9rbGNoKDc2LjklIDAuMTg4IDcwLjA4KSIsNjAwOiJva2xjaCg2Ni42JSAwLjE3OSA1OC4zMTgpIiw3MDA6Im9rbGNoKDU1LjUlIDAuMTYzIDQ4Ljk5OCkiLDgwMDoib2tsY2goNDcuMyUgMC4xMzcgNDYuMjAxKSIsOTAwOiJva2xjaCg0MS40JSAwLjExMiA0NS45MDQpIiw5NTA6Im9rbGNoKDI3LjklIDAuMDc3IDQ1LjYzNSkifSx5ZWxsb3c6ezUwOiJva2xjaCg5OC43JSAwLjAyNiAxMDIuMjEyKSIsMTAwOiJva2xjaCg5Ny4zJSAwLjA3MSAxMDMuMTkzKSIsMjAwOiJva2xjaCg5NC41JSAwLjEyOSAxMDEuNTQpIiwzMDA6Im9rbGNoKDkwLjUlIDAuMTgyIDk4LjExMSkiLDQwMDoib2tsY2goODUuMiUgMC4xOTkgOTEuOTM2KSIsNTAwOiJva2xjaCg3OS41JSAwLjE4NCA4Ni4wNDcpIiw2MDA6Im9rbGNoKDY4LjElIDAuMTYyIDc1LjgzNCkiLDcwMDoib2tsY2goNTUuNCUgMC4xMzUgNjYuNDQyKSIsODAwOiJva2xjaCg0Ny42JSAwLjExNCA2MS45MDcpIiw5MDA6Im9rbGNoKDQyLjElIDAuMDk1IDU3LjcwOCkiLDk1MDoib2tsY2goMjguNiUgMC4wNjYgNTMuODEzKSJ9LGxpbWU6ezUwOiJva2xjaCg5OC42JSAwLjAzMSAxMjAuNzU3KSIsMTAwOiJva2xjaCg5Ni43JSAwLjA2NyAxMjIuMzI4KSIsMjAwOiJva2xjaCg5My44JSAwLjEyNyAxMjQuMzIxKSIsMzAwOiJva2xjaCg4OS43JSAwLjE5NiAxMjYuNjY1KSIsNDAwOiJva2xjaCg4NC4xJSAwLjIzOCAxMjguODUpIiw1MDA6Im9rbGNoKDc2LjglIDAuMjMzIDEzMC44NSkiLDYwMDoib2tsY2goNjQuOCUgMC4yIDEzMS42ODQpIiw3MDA6Im9rbGNoKDUzLjIlIDAuMTU3IDEzMS41ODkpIiw4MDA6Im9rbGNoKDQ1LjMlIDAuMTI0IDEzMC45MzMpIiw5MDA6Im9rbGNoKDQwLjUlIDAuMTAxIDEzMS4wNjMpIiw5NTA6Im9rbGNoKDI3LjQlIDAuMDcyIDEzMi4xMDkpIn0sZ3JlZW46ezUwOiJva2xjaCg5OC4yJSAwLjAxOCAxNTUuODI2KSIsMTAwOiJva2xjaCg5Ni4yJSAwLjA0NCAxNTYuNzQzKSIsMjAwOiJva2xjaCg5Mi41JSAwLjA4NCAxNTUuOTk1KSIsMzAwOiJva2xjaCg4Ny4xJSAwLjE1IDE1NC40NDkpIiw0MDA6Im9rbGNoKDc5LjIlIDAuMjA5IDE1MS43MTEpIiw1MDA6Im9rbGNoKDcyLjMlIDAuMjE5IDE0OS41NzkpIiw2MDA6Im9rbGNoKDYyLjclIDAuMTk0IDE0OS4yMTQpIiw3MDA6Im9rbGNoKDUyLjclIDAuMTU0IDE1MC4wNjkpIiw4MDA6Im9rbGNoKDQ0LjglIDAuMTE5IDE1MS4zMjgpIiw5MDA6Im9rbGNoKDM5LjMlIDAuMDk1IDE1Mi41MzUpIiw5NTA6Im9rbGNoKDI2LjYlIDAuMDY1IDE1Mi45MzQpIn0sZW1lcmFsZDp7NTA6Im9rbGNoKDk3LjklIDAuMDIxIDE2Ni4xMTMpIiwxMDA6Im9rbGNoKDk1JSAwLjA1MiAxNjMuMDUxKSIsMjAwOiJva2xjaCg5MC41JSAwLjA5MyAxNjQuMTUpIiwzMDA6Im9rbGNoKDg0LjUlIDAuMTQzIDE2NC45NzgpIiw0MDA6Im9rbGNoKDc2LjUlIDAuMTc3IDE2My4yMjMpIiw1MDA6Im9rbGNoKDY5LjYlIDAuMTcgMTYyLjQ4KSIsNjAwOiJva2xjaCg1OS42JSAwLjE0NSAxNjMuMjI1KSIsNzAwOiJva2xjaCg1MC44JSAwLjExOCAxNjUuNjEyKSIsODAwOiJva2xjaCg0My4yJSAwLjA5NSAxNjYuOTEzKSIsOTAwOiJva2xjaCgzNy44JSAwLjA3NyAxNjguOTQpIiw5NTA6Im9rbGNoKDI2LjIlIDAuMDUxIDE3Mi41NTIpIn0sdGVhbDp7NTA6Im9rbGNoKDk4LjQlIDAuMDE0IDE4MC43MikiLDEwMDoib2tsY2goOTUuMyUgMC4wNTEgMTgwLjgwMSkiLDIwMDoib2tsY2goOTElIDAuMDk2IDE4MC40MjYpIiwzMDA6Im9rbGNoKDg1LjUlIDAuMTM4IDE4MS4wNzEpIiw0MDA6Im9rbGNoKDc3LjclIDAuMTUyIDE4MS45MTIpIiw1MDA6Im9rbGNoKDcwLjQlIDAuMTQgMTgyLjUwMykiLDYwMDoib2tsY2goNjAlIDAuMTE4IDE4NC43MDQpIiw3MDA6Im9rbGNoKDUxLjElIDAuMDk2IDE4Ni4zOTEpIiw4MDA6Im9rbGNoKDQzLjclIDAuMDc4IDE4OC4yMTYpIiw5MDA6Im9rbGNoKDM4LjYlIDAuMDYzIDE4OC40MTYpIiw5NTA6Im9rbGNoKDI3LjclIDAuMDQ2IDE5Mi41MjQpIn0sY3lhbjp7NTA6Im9rbGNoKDk4LjQlIDAuMDE5IDIwMC44NzMpIiwxMDA6Im9rbGNoKDk1LjYlIDAuMDQ1IDIwMy4zODgpIiwyMDA6Im9rbGNoKDkxLjclIDAuMDggMjA1LjA0MSkiLDMwMDoib2tsY2goODYuNSUgMC4xMjcgMjA3LjA3OCkiLDQwMDoib2tsY2goNzguOSUgMC4xNTQgMjExLjUzKSIsNTAwOiJva2xjaCg3MS41JSAwLjE0MyAyMTUuMjIxKSIsNjAwOiJva2xjaCg2MC45JSAwLjEyNiAyMjEuNzIzKSIsNzAwOiJva2xjaCg1MiUgMC4xMDUgMjIzLjEyOCkiLDgwMDoib2tsY2goNDUlIDAuMDg1IDIyNC4yODMpIiw5MDA6Im9rbGNoKDM5LjglIDAuMDcgMjI3LjM5MikiLDk1MDoib2tsY2goMzAuMiUgMC4wNTYgMjI5LjY5NSkifSxza3k6ezUwOiJva2xjaCg5Ny43JSAwLjAxMyAyMzYuNjIpIiwxMDA6Im9rbGNoKDk1LjElIDAuMDI2IDIzNi44MjQpIiwyMDA6Im9rbGNoKDkwLjElIDAuMDU4IDIzMC45MDIpIiwzMDA6Im9rbGNoKDgyLjglIDAuMTExIDIzMC4zMTgpIiw0MDA6Im9rbGNoKDc0LjYlIDAuMTYgMjMyLjY2MSkiLDUwMDoib2tsY2goNjguNSUgMC4xNjkgMjM3LjMyMykiLDYwMDoib2tsY2goNTguOCUgMC4xNTggMjQxLjk2NikiLDcwMDoib2tsY2goNTAlIDAuMTM0IDI0Mi43NDkpIiw4MDA6Im9rbGNoKDQ0LjMlIDAuMTEgMjQwLjc5KSIsOTAwOiJva2xjaCgzOS4xJSAwLjA5IDI0MC44NzYpIiw5NTA6Im9rbGNoKDI5LjMlIDAuMDY2IDI0My4xNTcpIn0sYmx1ZTp7NTA6Im9rbGNoKDk3JSAwLjAxNCAyNTQuNjA0KSIsMTAwOiJva2xjaCg5My4yJSAwLjAzMiAyNTUuNTg1KSIsMjAwOiJva2xjaCg4OC4yJSAwLjA1OSAyNTQuMTI4KSIsMzAwOiJva2xjaCg4MC45JSAwLjEwNSAyNTEuODEzKSIsNDAwOiJva2xjaCg3MC43JSAwLjE2NSAyNTQuNjI0KSIsNTAwOiJva2xjaCg2Mi4zJSAwLjIxNCAyNTkuODE1KSIsNjAwOiJva2xjaCg1NC42JSAwLjI0NSAyNjIuODgxKSIsNzAwOiJva2xjaCg0OC44JSAwLjI0MyAyNjQuMzc2KSIsODAwOiJva2xjaCg0Mi40JSAwLjE5OSAyNjUuNjM4KSIsOTAwOiJva2xjaCgzNy45JSAwLjE0NiAyNjUuNTIyKSIsOTUwOiJva2xjaCgyOC4yJSAwLjA5MSAyNjcuOTM1KSJ9LGluZGlnbzp7NTA6Im9rbGNoKDk2LjIlIDAuMDE4IDI3Mi4zMTQpIiwxMDA6Im9rbGNoKDkzJSAwLjAzNCAyNzIuNzg4KSIsMjAwOiJva2xjaCg4NyUgMC4wNjUgMjc0LjAzOSkiLDMwMDoib2tsY2goNzguNSUgMC4xMTUgMjc0LjcxMykiLDQwMDoib2tsY2goNjcuMyUgMC4xODIgMjc2LjkzNSkiLDUwMDoib2tsY2goNTguNSUgMC4yMzMgMjc3LjExNykiLDYwMDoib2tsY2goNTEuMSUgMC4yNjIgMjc2Ljk2NikiLDcwMDoib2tsY2goNDUuNyUgMC4yNCAyNzcuMDIzKSIsODAwOiJva2xjaCgzOS44JSAwLjE5NSAyNzcuMzY2KSIsOTAwOiJva2xjaCgzNS45JSAwLjE0NCAyNzguNjk3KSIsOTUwOiJva2xjaCgyNS43JSAwLjA5IDI4MS4yODgpIn0sdmlvbGV0Ons1MDoib2tsY2goOTYuOSUgMC4wMTYgMjkzLjc1NikiLDEwMDoib2tsY2goOTQuMyUgMC4wMjkgMjk0LjU4OCkiLDIwMDoib2tsY2goODkuNCUgMC4wNTcgMjkzLjI4MykiLDMwMDoib2tsY2goODEuMSUgMC4xMTEgMjkzLjU3MSkiLDQwMDoib2tsY2goNzAuMiUgMC4xODMgMjkzLjU0MSkiLDUwMDoib2tsY2goNjAuNiUgMC4yNSAyOTIuNzE3KSIsNjAwOiJva2xjaCg1NC4xJSAwLjI4MSAyOTMuMDA5KSIsNzAwOiJva2xjaCg0OS4xJSAwLjI3IDI5Mi41ODEpIiw4MDA6Im9rbGNoKDQzLjIlIDAuMjMyIDI5Mi43NTkpIiw5MDA6Im9rbGNoKDM4JSAwLjE4OSAyOTMuNzQ1KSIsOTUwOiJva2xjaCgyOC4zJSAwLjE0MSAyOTEuMDg5KSJ9LHB1cnBsZTp7NTA6Im9rbGNoKDk3LjclIDAuMDE0IDMwOC4yOTkpIiwxMDA6Im9rbGNoKDk0LjYlIDAuMDMzIDMwNy4xNzQpIiwyMDA6Im9rbGNoKDkwLjIlIDAuMDYzIDMwNi43MDMpIiwzMDA6Im9rbGNoKDgyLjclIDAuMTE5IDMwNi4zODMpIiw0MDA6Im9rbGNoKDcxLjQlIDAuMjAzIDMwNS41MDQpIiw1MDA6Im9rbGNoKDYyLjclIDAuMjY1IDMwMy45KSIsNjAwOiJva2xjaCg1NS44JSAwLjI4OCAzMDIuMzIxKSIsNzAwOiJva2xjaCg0OS42JSAwLjI2NSAzMDEuOTI0KSIsODAwOiJva2xjaCg0My44JSAwLjIxOCAzMDMuNzI0KSIsOTAwOiJva2xjaCgzOC4xJSAwLjE3NiAzMDQuOTg3KSIsOTUwOiJva2xjaCgyOS4xJSAwLjE0OSAzMDIuNzE3KSJ9LGZ1Y2hzaWE6ezUwOiJva2xjaCg5Ny43JSAwLjAxNyAzMjAuMDU4KSIsMTAwOiJva2xjaCg5NS4yJSAwLjAzNyAzMTguODUyKSIsMjAwOiJva2xjaCg5MC4zJSAwLjA3NiAzMTkuNjIpIiwzMDA6Im9rbGNoKDgzLjMlIDAuMTQ1IDMyMS40MzQpIiw0MDA6Im9rbGNoKDc0JSAwLjIzOCAzMjIuMTYpIiw1MDA6Im9rbGNoKDY2LjclIDAuMjk1IDMyMi4xNSkiLDYwMDoib2tsY2goNTkuMSUgMC4yOTMgMzIyLjg5NikiLDcwMDoib2tsY2goNTEuOCUgMC4yNTMgMzIzLjk0OSkiLDgwMDoib2tsY2goNDUuMiUgMC4yMTEgMzI0LjU5MSkiLDkwMDoib2tsY2goNDAuMSUgMC4xNyAzMjUuNjEyKSIsOTUwOiJva2xjaCgyOS4zJSAwLjEzNiAzMjUuNjYxKSJ9LHBpbms6ezUwOiJva2xjaCg5Ny4xJSAwLjAxNCAzNDMuMTk4KSIsMTAwOiJva2xjaCg5NC44JSAwLjAyOCAzNDIuMjU4KSIsMjAwOiJva2xjaCg4OS45JSAwLjA2MSAzNDMuMjMxKSIsMzAwOiJva2xjaCg4Mi4zJSAwLjEyIDM0Ni4wMTgpIiw0MDA6Im9rbGNoKDcxLjglIDAuMjAyIDM0OS43NjEpIiw1MDA6Im9rbGNoKDY1LjYlIDAuMjQxIDM1NC4zMDgpIiw2MDA6Im9rbGNoKDU5LjIlIDAuMjQ5IDAuNTg0KSIsNzAwOiJva2xjaCg1Mi41JSAwLjIyMyAzLjk1OCkiLDgwMDoib2tsY2goNDUuOSUgMC4xODcgMy44MTUpIiw5MDA6Im9rbGNoKDQwLjglIDAuMTUzIDIuNDMyKSIsOTUwOiJva2xjaCgyOC40JSAwLjEwOSAzLjkwNykifSxyb3NlOns1MDoib2tsY2goOTYuOSUgMC4wMTUgMTIuNDIyKSIsMTAwOiJva2xjaCg5NC4xJSAwLjAzIDEyLjU4KSIsMjAwOiJva2xjaCg4OS4yJSAwLjA1OCAxMC4wMDEpIiwzMDA6Im9rbGNoKDgxJSAwLjExNyAxMS42MzgpIiw0MDA6Im9rbGNoKDcxLjIlIDAuMTk0IDEzLjQyOCkiLDUwMDoib2tsY2goNjQuNSUgMC4yNDYgMTYuNDM5KSIsNjAwOiJva2xjaCg1OC42JSAwLjI1MyAxNy41ODUpIiw3MDA6Im9rbGNoKDUxLjQlIDAuMjIyIDE2LjkzNSkiLDgwMDoib2tsY2goNDUuNSUgMC4xODggMTMuNjk3KSIsOTAwOiJva2xjaCg0MSUgMC4xNTkgMTAuMjcyKSIsOTUwOiJva2xjaCgyNy4xJSAwLjEwNSAxMi4wOTQpIn19O2NvbnN0IGVBPVs1MCwxMDAsMjAwLDMwMCw0MDAsNTAwLDYwMCw3MDAsODAwLDkwMCw5NTBdO2Z1bmN0aW9uIHRBKGUsdCl7cmV0dXJuIGUgaW4gY2EmJnR5cGVvZiBjYVtlXT09Im9iamVjdCImJnQgaW4gY2FbZV0/Y2FbZV1bdF06IiJ9ZnVuY3Rpb24gbkEoZSx0LG4pe2NvbnN0IHI9bj9gJHtufS1gOiIiO3JldHVybmAke2VBLm1hcChvPT5gLS11aS1jb2xvci0ke2V9LSR7b306IHZhcigtLSR7cn1jb2xvci0ke3Q9PT0ibmV1dHJhbCI/Im9sZC1uZXV0cmFsIjp0fS0ke299LCAke3RBKHQsbyl9KTtgKS5qb2luKGAKICBgKX1gfWZ1bmN0aW9uIGZtKGUsdCl7cmV0dXJuYC0tdWktJHtlfTogdmFyKC0tdWktY29sb3ItJHtlfS0ke3R9KTtgfWNvbnN0IHJBPWx0KCgpPT57Y29uc3QgZT1TdCgpLHQ9QmUoKSxuPU4oKCk9Pntjb25zdHtuZXV0cmFsOm8sLi4uc309ZS51aS5jb2xvcnMsaT1lLnVpLnByZWZpeDtyZXR1cm5gQGxheWVyIHRoZW1lIHsKICA6cm9vdCwgOmhvc3QgewogICR7T2JqZWN0LmVudHJpZXMoZS51aS5jb2xvcnMpLm1hcCgoW2EsbF0pPT5uQShhLGwsaSkpLmpvaW4oYAogIGApfQogIH0KICA6cm9vdCwgOmhvc3QsIC5saWdodCB7CiAgJHtPYmplY3Qua2V5cyhzKS5tYXAoYT0+Zm0oYSw1MDApKS5qb2luKGAKICBgKX0KICB9CiAgLmRhcmsgewogICR7T2JqZWN0LmtleXMocykubWFwKGE9PmZtKGEsNDAwKSkuam9pbihgCiAgYCl9CiAgfQp9YH0pLHI9e3N0eWxlOlt7aW5uZXJIVE1MOigpPT5uLnZhbHVlLHRhZ1ByaW9yaXR5OiJjcml0aWNhbCIsaWQ6Im51eHQtdWktY29sb3JzIn1dfTtpZih0LmlzSHlkcmF0aW5nJiYhdC5wYXlsb2FkLnNlcnZlclJlbmRlcmVkKXtjb25zdCBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7by5pbm5lckhUTUw9bi52YWx1ZSxvLnNldEF0dHJpYnV0ZSgiZGF0YS1udXh0LXVpLWNvbG9ycyIsIiIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobyksci5zY3JpcHQ9W3tpbm5lckhUTUw6ImRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtbnV4dC11aS1jb2xvcnNdJykpIn1dfURrKHIpfSksQnY9L15bYS16MC05XSsoLVthLXowLTldKykqJC8sRmk9KGUsdCxuLHI9IiIpPT57Y29uc3Qgbz1lLnNwbGl0KCI6Iik7aWYoZS5zbGljZSgwLDEpPT09IkAiKXtpZihvLmxlbmd0aDwyfHxvLmxlbmd0aD4zKXJldHVybiBudWxsO3I9by5zaGlmdCgpLnNsaWNlKDEpfWlmKG8ubGVuZ3RoPjN8fCFvLmxlbmd0aClyZXR1cm4gbnVsbDtpZihvLmxlbmd0aD4xKXtjb25zdCBhPW8ucG9wKCksbD1vLnBvcCgpLHU9e3Byb3ZpZGVyOm8ubGVuZ3RoPjA/b1swXTpyLHByZWZpeDpsLG5hbWU6YX07cmV0dXJuIHQmJiFPYSh1KT9udWxsOnV9Y29uc3Qgcz1vWzBdLGk9cy5zcGxpdCgiLSIpO2lmKGkubGVuZ3RoPjEpe2NvbnN0IGE9e3Byb3ZpZGVyOnIscHJlZml4Omkuc2hpZnQoKSxuYW1lOmkuam9pbigiLSIpfTtyZXR1cm4gdCYmIU9hKGEpP251bGw6YX1pZihuJiZyPT09IiIpe2NvbnN0IGE9e3Byb3ZpZGVyOnIscHJlZml4OiIiLG5hbWU6c307cmV0dXJuIHQmJiFPYShhLG4pP251bGw6YX1yZXR1cm4gbnVsbH0sT2E9KGUsdCk9PmU/ISEoKHQmJmUucHJlZml4PT09IiJ8fGUucHJlZml4KSYmZS5uYW1lKTohMSxxdj1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksSmE9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxMcz1PYmplY3QuZnJlZXplKHsuLi5xdiwuLi5KYX0pLE91PU9iamVjdC5mcmVlemUoey4uLkxzLGJvZHk6IiIsaGlkZGVuOiExfSk7ZnVuY3Rpb24gb0EoZSx0KXtjb25zdCBuPXt9OyFlLmhGbGlwIT0hdC5oRmxpcCYmKG4uaEZsaXA9ITApLCFlLnZGbGlwIT0hdC52RmxpcCYmKG4udkZsaXA9ITApO2NvbnN0IHI9KChlLnJvdGF0ZXx8MCkrKHQucm90YXRlfHwwKSklNDtyZXR1cm4gciYmKG4ucm90YXRlPXIpLG59ZnVuY3Rpb24gZG0oZSx0KXtjb25zdCBuPW9BKGUsdCk7Zm9yKGNvbnN0IHIgaW4gT3UpciBpbiBKYT9yIGluIGUmJiEociBpbiBuKSYmKG5bcl09SmFbcl0pOnIgaW4gdD9uW3JdPXRbcl06ciBpbiBlJiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBzQShlLHQpe2NvbnN0IG49ZS5pY29ucyxyPWUuYWxpYXNlc3x8T2JqZWN0LmNyZWF0ZShudWxsKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gcyhpKXtpZihuW2ldKXJldHVybiBvW2ldPVtdO2lmKCEoaSBpbiBvKSl7b1tpXT1udWxsO2NvbnN0IGE9cltpXSYmcltpXS5wYXJlbnQsbD1hJiZzKGEpO2wmJihvW2ldPVthXS5jb25jYXQobCkpfXJldHVybiBvW2ldfXJldHVybiBPYmplY3Qua2V5cyhuKS5jb25jYXQoT2JqZWN0LmtleXMocikpLmZvckVhY2gocyksb31mdW5jdGlvbiBpQShlLHQsbil7Y29uc3Qgcj1lLmljb25zLG89ZS5hbGlhc2VzfHxPYmplY3QuY3JlYXRlKG51bGwpO2xldCBzPXt9O2Z1bmN0aW9uIGkoYSl7cz1kbShyW2FdfHxvW2FdLHMpfXJldHVybiBpKHQpLG4uZm9yRWFjaChpKSxkbShlLHMpfWZ1bmN0aW9uIEZ2KGUsdCl7Y29uc3Qgbj1bXTtpZih0eXBlb2YgZSE9Im9iamVjdCJ8fHR5cGVvZiBlLmljb25zIT0ib2JqZWN0IilyZXR1cm4gbjtlLm5vdF9mb3VuZCBpbnN0YW5jZW9mIEFycmF5JiZlLm5vdF9mb3VuZC5mb3JFYWNoKG89Pnt0KG8sbnVsbCksbi5wdXNoKG8pfSk7Y29uc3Qgcj1zQShlKTtmb3IoY29uc3QgbyBpbiByKXtjb25zdCBzPXJbb107cyYmKHQobyxpQShlLG8scykpLG4ucHVzaChvKSl9cmV0dXJuIG59Y29uc3QgYUE9e3Byb3ZpZGVyOiIiLGFsaWFzZXM6e30sbm90X2ZvdW5kOnt9LC4uLnF2fTtmdW5jdGlvbiBJYyhlLHQpe2Zvcihjb25zdCBuIGluIHQpaWYobiBpbiBlJiZ0eXBlb2YgZVtuXSE9dHlwZW9mIHRbbl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24genYoZSl7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbClyZXR1cm4gbnVsbDtjb25zdCB0PWU7aWYodHlwZW9mIHQucHJlZml4IT0ic3RyaW5nInx8IWUuaWNvbnN8fHR5cGVvZiBlLmljb25zIT0ib2JqZWN0Inx8IUljKGUsYUEpKXJldHVybiBudWxsO2NvbnN0IG49dC5pY29ucztmb3IoY29uc3QgbyBpbiBuKXtjb25zdCBzPW5bb107aWYoIW98fHR5cGVvZiBzLmJvZHkhPSJzdHJpbmcifHwhSWMocyxPdSkpcmV0dXJuIG51bGx9Y29uc3Qgcj10LmFsaWFzZXN8fE9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IG8gaW4gcil7Y29uc3Qgcz1yW29dLGk9cy5wYXJlbnQ7aWYoIW98fHR5cGVvZiBpIT0ic3RyaW5nInx8IW5baV0mJiFyW2ldfHwhSWMocyxPdSkpcmV0dXJuIG51bGx9cmV0dXJuIHR9Y29uc3QgcG09T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBsQShlLHQpe3JldHVybntwcm92aWRlcjplLHByZWZpeDp0LGljb25zOk9iamVjdC5jcmVhdGUobnVsbCksbWlzc2luZzpuZXcgU2V0fX1mdW5jdGlvbiB6byhlLHQpe2NvbnN0IG49cG1bZV18fChwbVtlXT1PYmplY3QuY3JlYXRlKG51bGwpKTtyZXR1cm4gblt0XXx8KG5bdF09bEEoZSx0KSl9ZnVuY3Rpb24ganYoZSx0KXtyZXR1cm4genYodCk/RnYodCwobixyKT0+e3I/ZS5pY29uc1tuXT1yOmUubWlzc2luZy5hZGQobil9KTpbXX1mdW5jdGlvbiBjQShlLHQsbil7dHJ5e2lmKHR5cGVvZiBuLmJvZHk9PSJzdHJpbmciKXJldHVybiBlLmljb25zW3RdPXsuLi5ufSwhMH1jYXRjaHt9cmV0dXJuITF9bGV0IENpPSExO2Z1bmN0aW9uIFZ2KGUpe3JldHVybiB0eXBlb2YgZT09ImJvb2xlYW4iJiYoQ2k9ZSksQ2l9ZnVuY3Rpb24gQmYoZSl7Y29uc3QgdD10eXBlb2YgZT09InN0cmluZyI/RmkoZSwhMCxDaSk6ZTtpZih0KXtjb25zdCBuPXpvKHQucHJvdmlkZXIsdC5wcmVmaXgpLHI9dC5uYW1lO3JldHVybiBuLmljb25zW3JdfHwobi5taXNzaW5nLmhhcyhyKT9udWxsOnZvaWQgMCl9fWZ1bmN0aW9uIHFmKGUsdCl7Y29uc3Qgbj1GaShlLCEwLENpKTtpZighbilyZXR1cm4hMTtjb25zdCByPXpvKG4ucHJvdmlkZXIsbi5wcmVmaXgpO3JldHVybiB0P2NBKHIsbi5uYW1lLHQpOihyLm1pc3NpbmcuYWRkKG4ubmFtZSksITApfWZ1bmN0aW9uIHVBKGUsdCl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiExO2lmKHR5cGVvZiB0IT0ic3RyaW5nIiYmKHQ9ZS5wcm92aWRlcnx8IiIpLENpJiYhdCYmIWUucHJlZml4KXtsZXQgbz0hMTtyZXR1cm4genYoZSkmJihlLnByZWZpeD0iIixGdihlLChzLGkpPT57cWYocyxpKSYmKG89ITApfSkpLG99Y29uc3Qgbj1lLnByZWZpeDtpZighT2Eoe3ByZWZpeDpuLG5hbWU6ImEifSkpcmV0dXJuITE7Y29uc3Qgcj16byh0LG4pO3JldHVybiEhanYocixlKX1mdW5jdGlvbiBQdShlKXtjb25zdCB0PUJmKGUpO3JldHVybiB0JiZ7Li4uTHMsLi4udH19Y29uc3QgVXY9T2JqZWN0LmZyZWV6ZSh7d2lkdGg6bnVsbCxoZWlnaHQ6bnVsbH0pLEh2PU9iamVjdC5mcmVlemUoey4uLlV2LC4uLkphfSksZkE9LygtP1swLTkuXSpbMC05XStbMC05Ll0qKS9nLGRBPS9eLT9bMC05Ll0qWzAtOV0rWzAtOS5dKiQvZztmdW5jdGlvbiBtbShlLHQsbil7aWYodD09PTEpcmV0dXJuIGU7aWYobj1ufHwxMDAsdHlwZW9mIGU9PSJudW1iZXIiKXJldHVybiBNYXRoLmNlaWwoZSp0Km4pL247aWYodHlwZW9mIGUhPSJzdHJpbmciKXJldHVybiBlO2NvbnN0IHI9ZS5zcGxpdChmQSk7aWYocj09PW51bGx8fCFyLmxlbmd0aClyZXR1cm4gZTtjb25zdCBvPVtdO2xldCBzPXIuc2hpZnQoKSxpPWRBLnRlc3Qocyk7Zm9yKDs7KXtpZihpKXtjb25zdCBhPXBhcnNlRmxvYXQocyk7aXNOYU4oYSk/by5wdXNoKHMpOm8ucHVzaChNYXRoLmNlaWwoYSp0Km4pL24pfWVsc2Ugby5wdXNoKHMpO2lmKHM9ci5zaGlmdCgpLHM9PT12b2lkIDApcmV0dXJuIG8uam9pbigiIik7aT0haX19ZnVuY3Rpb24gcEEoZSx0PSJkZWZzIil7bGV0IG49IiI7Y29uc3Qgcj1lLmluZGV4T2YoIjwiK3QpO2Zvcig7cj49MDspe2NvbnN0IG89ZS5pbmRleE9mKCI+IixyKSxzPWUuaW5kZXhPZigiPC8iK3QpO2lmKG89PT0tMXx8cz09PS0xKWJyZWFrO2NvbnN0IGk9ZS5pbmRleE9mKCI+IixzKTtpZihpPT09LTEpYnJlYWs7bis9ZS5zbGljZShvKzEscykudHJpbSgpLGU9ZS5zbGljZSgwLHIpLnRyaW0oKStlLnNsaWNlKGkrMSl9cmV0dXJue2RlZnM6bixjb250ZW50OmV9fWZ1bmN0aW9uIG1BKGUsdCl7cmV0dXJuIGU/IjxkZWZzPiIrZSsiPC9kZWZzPiIrdDp0fWZ1bmN0aW9uIGhBKGUsdCxuKXtjb25zdCByPXBBKGUpO3JldHVybiBtQShyLmRlZnMsdCtyLmNvbnRlbnQrbil9Y29uc3QgZ0E9ZT0+ZT09PSJ1bnNldCJ8fGU9PT0idW5kZWZpbmVkInx8ZT09PSJub25lIjtmdW5jdGlvbiB5QShlLHQpe2NvbnN0IG49ey4uLkxzLC4uLmV9LHI9ey4uLkh2LC4uLnR9LG89e2xlZnQ6bi5sZWZ0LHRvcDpuLnRvcCx3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodH07bGV0IHM9bi5ib2R5O1tuLHJdLmZvckVhY2goeT0+e2NvbnN0IF89W10sdz15LmhGbGlwLHY9eS52RmxpcDtsZXQgaD15LnJvdGF0ZTt3P3Y/aCs9MjooXy5wdXNoKCJ0cmFuc2xhdGUoIisoby53aWR0aCtvLmxlZnQpLnRvU3RyaW5nKCkrIiAiKygwLW8udG9wKS50b1N0cmluZygpKyIpIiksXy5wdXNoKCJzY2FsZSgtMSAxKSIpLG8udG9wPW8ubGVmdD0wKTp2JiYoXy5wdXNoKCJ0cmFuc2xhdGUoIisoMC1vLmxlZnQpLnRvU3RyaW5nKCkrIiAiKyhvLmhlaWdodCtvLnRvcCkudG9TdHJpbmcoKSsiKSIpLF8ucHVzaCgic2NhbGUoMSAtMSkiKSxvLnRvcD1vLmxlZnQ9MCk7bGV0IGI7c3dpdGNoKGg8MCYmKGgtPU1hdGguZmxvb3IoaC80KSo0KSxoPWglNCxoKXtjYXNlIDE6Yj1vLmhlaWdodC8yK28udG9wLF8udW5zaGlmdCgicm90YXRlKDkwICIrYi50b1N0cmluZygpKyIgIitiLnRvU3RyaW5nKCkrIikiKTticmVhaztjYXNlIDI6Xy51bnNoaWZ0KCJyb3RhdGUoMTgwICIrKG8ud2lkdGgvMitvLmxlZnQpLnRvU3RyaW5nKCkrIiAiKyhvLmhlaWdodC8yK28udG9wKS50b1N0cmluZygpKyIpIik7YnJlYWs7Y2FzZSAzOmI9by53aWR0aC8yK28ubGVmdCxfLnVuc2hpZnQoInJvdGF0ZSgtOTAgIitiLnRvU3RyaW5nKCkrIiAiK2IudG9TdHJpbmcoKSsiKSIpO2JyZWFrfWglMj09PTEmJihvLmxlZnQhPT1vLnRvcCYmKGI9by5sZWZ0LG8ubGVmdD1vLnRvcCxvLnRvcD1iKSxvLndpZHRoIT09by5oZWlnaHQmJihiPW8ud2lkdGgsby53aWR0aD1vLmhlaWdodCxvLmhlaWdodD1iKSksXy5sZW5ndGgmJihzPWhBKHMsJzxnIHRyYW5zZm9ybT0iJytfLmpvaW4oIiAiKSsnIj4nLCI8L2c+IikpfSk7Y29uc3QgaT1yLndpZHRoLGE9ci5oZWlnaHQsbD1vLndpZHRoLHU9by5oZWlnaHQ7bGV0IGMsZjtpPT09bnVsbD8oZj1hPT09bnVsbD8iMWVtIjphPT09ImF1dG8iP3U6YSxjPW1tKGYsbC91KSk6KGM9aT09PSJhdXRvIj9sOmksZj1hPT09bnVsbD9tbShjLHUvbCk6YT09PSJhdXRvIj91OmEpO2NvbnN0IGQ9e30scD0oeSxfKT0+e2dBKF8pfHwoZFt5XT1fLnRvU3RyaW5nKCkpfTtwKCJ3aWR0aCIsYykscCgiaGVpZ2h0IixmKTtjb25zdCBtPVtvLmxlZnQsby50b3AsbCx1XTtyZXR1cm4gZC52aWV3Qm94PW0uam9pbigiICIpLHthdHRyaWJ1dGVzOmQsdmlld0JveDptLGJvZHk6c319Y29uc3QgdkE9L1xzaWQ9IihcUyspIi9nLGJBPSJJY29uaWZ5SWQiK0RhdGUubm93KCkudG9TdHJpbmcoMTYpKyhNYXRoLnJhbmRvbSgpKjE2Nzc3MjE2fDApLnRvU3RyaW5nKDE2KTtsZXQgd0E9MDtmdW5jdGlvbiBfQShlLHQ9YkEpe2NvbnN0IG49W107bGV0IHI7Zm9yKDtyPXZBLmV4ZWMoZSk7KW4ucHVzaChyWzFdKTtpZighbi5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbz0ic3VmZml4IisoTWF0aC5yYW5kb20oKSoxNjc3NzIxNnxEYXRlLm5vdygpKS50b1N0cmluZygxNik7cmV0dXJuIG4uZm9yRWFjaChzPT57Y29uc3QgaT10eXBlb2YgdD09ImZ1bmN0aW9uIj90KHMpOnQrKHdBKyspLnRvU3RyaW5nKCksYT1zLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIik7ZT1lLnJlcGxhY2UobmV3IFJlZ0V4cCgnKFsjOyJdKSgnK2ErJykoWyIpXXxcXC5bYS16XSknLCJnIiksIiQxIitpK28rIiQzIil9KSxlPWUucmVwbGFjZShuZXcgUmVnRXhwKG8sImciKSwiIiksZX1jb25zdCBJdT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIFd2KGUsdCl7SXVbZV09dH1mdW5jdGlvbiBSdShlKXtyZXR1cm4gSXVbZV18fEl1WyIiXX1mdW5jdGlvbiBGZihlKXtsZXQgdDtpZih0eXBlb2YgZS5yZXNvdXJjZXM9PSJzdHJpbmciKXQ9W2UucmVzb3VyY2VzXTtlbHNlIGlmKHQ9ZS5yZXNvdXJjZXMsISh0IGluc3RhbmNlb2YgQXJyYXkpfHwhdC5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJue3Jlc291cmNlczp0LHBhdGg6ZS5wYXRofHwiLyIsbWF4VVJMOmUubWF4VVJMfHw1MDAscm90YXRlOmUucm90YXRlfHw3NTAsdGltZW91dDplLnRpbWVvdXR8fDVlMyxyYW5kb206ZS5yYW5kb209PT0hMCxpbmRleDplLmluZGV4fHwwLGRhdGFBZnRlclRpbWVvdXQ6ZS5kYXRhQWZ0ZXJUaW1lb3V0IT09ITF9fWNvbnN0IFJsPU9iamVjdC5jcmVhdGUobnVsbCksSHM9WyJodHRwczovL2FwaS5zaW1wbGVzdmcuY29tIiwiaHR0cHM6Ly9hcGkudW5pc3ZnLmNvbSJdLFBhPVtdO2Zvcig7SHMubGVuZ3RoPjA7KUhzLmxlbmd0aD09PTF8fE1hdGgucmFuZG9tKCk+LjU/UGEucHVzaChIcy5zaGlmdCgpKTpQYS5wdXNoKEhzLnBvcCgpKTtSbFsiIl09RmYoe3Jlc291cmNlczpbImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIl0uY29uY2F0KFBhKX0pO2Z1bmN0aW9uIEd2KGUsdCl7Y29uc3Qgbj1GZih0KTtyZXR1cm4gbj09PW51bGw/ITE6KFJsW2VdPW4sITApfWZ1bmN0aW9uIE5sKGUpe3JldHVybiBSbFtlXX1mdW5jdGlvbiB4QSgpe3JldHVybiBPYmplY3Qua2V5cyhSbCl9Y29uc3QgU0E9KCk9PntsZXQgZTt0cnl7aWYoZT1mZXRjaCx0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gZX1jYXRjaHt9fTtsZXQgWGE9U0EoKTtmdW5jdGlvbiBrQShlKXtYYT1lfWZ1bmN0aW9uIEVBKCl7cmV0dXJuIFhhfWZ1bmN0aW9uIFRBKGUsdCl7Y29uc3Qgbj1ObChlKTtpZighbilyZXR1cm4gMDtsZXQgcjtpZighbi5tYXhVUkwpcj0wO2Vsc2V7bGV0IG89MDtuLnJlc291cmNlcy5mb3JFYWNoKGk9PntvPU1hdGgubWF4KG8saS5sZW5ndGgpfSk7Y29uc3Qgcz10KyIuanNvbj9pY29ucz0iO3I9bi5tYXhVUkwtby1uLnBhdGgubGVuZ3RoLXMubGVuZ3RofXJldHVybiByfWZ1bmN0aW9uIENBKGUpe3JldHVybiBlPT09NDA0fWNvbnN0IEFBPShlLHQsbik9Pntjb25zdCByPVtdLG89VEEoZSx0KSxzPSJpY29ucyI7bGV0IGk9e3R5cGU6cyxwcm92aWRlcjplLHByZWZpeDp0LGljb25zOltdfSxhPTA7cmV0dXJuIG4uZm9yRWFjaCgobCx1KT0+e2ErPWwubGVuZ3RoKzEsYT49byYmdT4wJiYoci5wdXNoKGkpLGk9e3R5cGU6cyxwcm92aWRlcjplLHByZWZpeDp0LGljb25zOltdfSxhPWwubGVuZ3RoKSxpLmljb25zLnB1c2gobCl9KSxyLnB1c2goaSkscn07ZnVuY3Rpb24gT0EoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXtjb25zdCB0PU5sKGUpO2lmKHQpcmV0dXJuIHQucGF0aH1yZXR1cm4iLyJ9Y29uc3QgUEE9KGUsdCxuKT0+e2lmKCFYYSl7bigiYWJvcnQiLDQyNCk7cmV0dXJufWxldCByPU9BKHQucHJvdmlkZXIpO3N3aXRjaCh0LnR5cGUpe2Nhc2UiaWNvbnMiOntjb25zdCBzPXQucHJlZml4LGE9dC5pY29ucy5qb2luKCIsIiksbD1uZXcgVVJMU2VhcmNoUGFyYW1zKHtpY29uczphfSk7cis9cysiLmpzb24/IitsLnRvU3RyaW5nKCk7YnJlYWt9Y2FzZSJjdXN0b20iOntjb25zdCBzPXQudXJpO3IrPXMuc2xpY2UoMCwxKT09PSIvIj9zLnNsaWNlKDEpOnM7YnJlYWt9ZGVmYXVsdDpuKCJhYm9ydCIsNDAwKTtyZXR1cm59bGV0IG89NTAzO1hhKGUrcikudGhlbihzPT57Y29uc3QgaT1zLnN0YXR1cztpZihpIT09MjAwKXtzZXRUaW1lb3V0KCgpPT57bihDQShpKT8iYWJvcnQiOiJuZXh0IixpKX0pO3JldHVybn1yZXR1cm4gbz01MDEscy5qc29uKCl9KS50aGVuKHM9PntpZih0eXBlb2YgcyE9Im9iamVjdCJ8fHM9PT1udWxsKXtzZXRUaW1lb3V0KCgpPT57cz09PTQwND9uKCJhYm9ydCIscyk6bigibmV4dCIsbyl9KTtyZXR1cm59c2V0VGltZW91dCgoKT0+e24oInN1Y2Nlc3MiLHMpfSl9KS5jYXRjaCgoKT0+e24oIm5leHQiLG8pfSl9LElBPXtwcmVwYXJlOkFBLHNlbmQ6UEF9O2Z1bmN0aW9uIFJBKGUpe2NvbnN0IHQ9e2xvYWRlZDpbXSxtaXNzaW5nOltdLHBlbmRpbmc6W119LG49T2JqZWN0LmNyZWF0ZShudWxsKTtlLnNvcnQoKG8scyk9Pm8ucHJvdmlkZXIhPT1zLnByb3ZpZGVyP28ucHJvdmlkZXIubG9jYWxlQ29tcGFyZShzLnByb3ZpZGVyKTpvLnByZWZpeCE9PXMucHJlZml4P28ucHJlZml4LmxvY2FsZUNvbXBhcmUocy5wcmVmaXgpOm8ubmFtZS5sb2NhbGVDb21wYXJlKHMubmFtZSkpO2xldCByPXtwcm92aWRlcjoiIixwcmVmaXg6IiIsbmFtZToiIn07cmV0dXJuIGUuZm9yRWFjaChvPT57aWYoci5uYW1lPT09by5uYW1lJiZyLnByZWZpeD09PW8ucHJlZml4JiZyLnByb3ZpZGVyPT09by5wcm92aWRlcilyZXR1cm47cj1vO2NvbnN0IHM9by5wcm92aWRlcixpPW8ucHJlZml4LGE9by5uYW1lLGw9bltzXXx8KG5bc109T2JqZWN0LmNyZWF0ZShudWxsKSksdT1sW2ldfHwobFtpXT16byhzLGkpKTtsZXQgYzthIGluIHUuaWNvbnM/Yz10LmxvYWRlZDppPT09IiJ8fHUubWlzc2luZy5oYXMoYSk/Yz10Lm1pc3Npbmc6Yz10LnBlbmRpbmc7Y29uc3QgZj17cHJvdmlkZXI6cyxwcmVmaXg6aSxuYW1lOmF9O2MucHVzaChmKX0pLHR9ZnVuY3Rpb24gS3YoZSx0KXtlLmZvckVhY2gobj0+e2NvbnN0IHI9bi5sb2FkZXJDYWxsYmFja3M7ciYmKG4ubG9hZGVyQ2FsbGJhY2tzPXIuZmlsdGVyKG89Pm8uaWQhPT10KSl9KX1mdW5jdGlvbiBOQShlKXtlLnBlbmRpbmdDYWxsYmFja3NGbGFnfHwoZS5wZW5kaW5nQ2FsbGJhY2tzRmxhZz0hMCxzZXRUaW1lb3V0KCgpPT57ZS5wZW5kaW5nQ2FsbGJhY2tzRmxhZz0hMTtjb25zdCB0PWUubG9hZGVyQ2FsbGJhY2tzP2UubG9hZGVyQ2FsbGJhY2tzLnNsaWNlKDApOltdO2lmKCF0Lmxlbmd0aClyZXR1cm47bGV0IG49ITE7Y29uc3Qgcj1lLnByb3ZpZGVyLG89ZS5wcmVmaXg7dC5mb3JFYWNoKHM9Pntjb25zdCBpPXMuaWNvbnMsYT1pLnBlbmRpbmcubGVuZ3RoO2kucGVuZGluZz1pLnBlbmRpbmcuZmlsdGVyKGw9PntpZihsLnByZWZpeCE9PW8pcmV0dXJuITA7Y29uc3QgdT1sLm5hbWU7aWYoZS5pY29uc1t1XSlpLmxvYWRlZC5wdXNoKHtwcm92aWRlcjpyLHByZWZpeDpvLG5hbWU6dX0pO2Vsc2UgaWYoZS5taXNzaW5nLmhhcyh1KSlpLm1pc3NpbmcucHVzaCh7cHJvdmlkZXI6cixwcmVmaXg6byxuYW1lOnV9KTtlbHNlIHJldHVybiBuPSEwLCEwO3JldHVybiExfSksaS5wZW5kaW5nLmxlbmd0aCE9PWEmJihufHxLdihbZV0scy5pZCkscy5jYWxsYmFjayhpLmxvYWRlZC5zbGljZSgwKSxpLm1pc3Npbmcuc2xpY2UoMCksaS5wZW5kaW5nLnNsaWNlKDApLHMuYWJvcnQpKX0pfSkpfWxldCBEQT0wO2Z1bmN0aW9uIExBKGUsdCxuKXtjb25zdCByPURBKyssbz1Ldi5iaW5kKG51bGwsbixyKTtpZighdC5wZW5kaW5nLmxlbmd0aClyZXR1cm4gbztjb25zdCBzPXtpZDpyLGljb25zOnQsY2FsbGJhY2s6ZSxhYm9ydDpvfTtyZXR1cm4gbi5mb3JFYWNoKGk9PnsoaS5sb2FkZXJDYWxsYmFja3N8fChpLmxvYWRlckNhbGxiYWNrcz1bXSkpLnB1c2gocyl9KSxvfWZ1bmN0aW9uICRBKGUsdD0hMCxuPSExKXtjb25zdCByPVtdO3JldHVybiBlLmZvckVhY2gobz0+e2NvbnN0IHM9dHlwZW9mIG89PSJzdHJpbmciP0ZpKG8sdCxuKTpvO3MmJnIucHVzaChzKX0pLHJ9dmFyIE1BPXtyZXNvdXJjZXM6W10saW5kZXg6MCx0aW1lb3V0OjJlMyxyb3RhdGU6NzUwLHJhbmRvbTohMSxkYXRhQWZ0ZXJUaW1lb3V0OiExfTtmdW5jdGlvbiBCQShlLHQsbixyKXtjb25zdCBvPWUucmVzb3VyY2VzLmxlbmd0aCxzPWUucmFuZG9tP01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvKTplLmluZGV4O2xldCBpO2lmKGUucmFuZG9tKXtsZXQgUz1lLnJlc291cmNlcy5zbGljZSgwKTtmb3IoaT1bXTtTLmxlbmd0aD4xOyl7Y29uc3Qgaz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqUy5sZW5ndGgpO2kucHVzaChTW2tdKSxTPVMuc2xpY2UoMCxrKS5jb25jYXQoUy5zbGljZShrKzEpKX1pPWkuY29uY2F0KFMpfWVsc2UgaT1lLnJlc291cmNlcy5zbGljZShzKS5jb25jYXQoZS5yZXNvdXJjZXMuc2xpY2UoMCxzKSk7Y29uc3QgYT1EYXRlLm5vdygpO2xldCBsPSJwZW5kaW5nIix1PTAsYyxmPW51bGwsZD1bXSxwPVtdO3R5cGVvZiByPT0iZnVuY3Rpb24iJiZwLnB1c2gocik7ZnVuY3Rpb24gbSgpe2YmJihjbGVhclRpbWVvdXQoZiksZj1udWxsKX1mdW5jdGlvbiB5KCl7bD09PSJwZW5kaW5nIiYmKGw9ImFib3J0ZWQiKSxtKCksZC5mb3JFYWNoKFM9PntTLnN0YXR1cz09PSJwZW5kaW5nIiYmKFMuc3RhdHVzPSJhYm9ydGVkIil9KSxkPVtdfWZ1bmN0aW9uIF8oUyxrKXtrJiYocD1bXSksdHlwZW9mIFM9PSJmdW5jdGlvbiImJnAucHVzaChTKX1mdW5jdGlvbiB3KCl7cmV0dXJue3N0YXJ0VGltZTphLHBheWxvYWQ6dCxzdGF0dXM6bCxxdWVyaWVzU2VudDp1LHF1ZXJpZXNQZW5kaW5nOmQubGVuZ3RoLHN1YnNjcmliZTpfLGFib3J0Onl9fWZ1bmN0aW9uIHYoKXtsPSJmYWlsZWQiLHAuZm9yRWFjaChTPT57Uyh2b2lkIDAsYyl9KX1mdW5jdGlvbiBoKCl7ZC5mb3JFYWNoKFM9PntTLnN0YXR1cz09PSJwZW5kaW5nIiYmKFMuc3RhdHVzPSJhYm9ydGVkIil9KSxkPVtdfWZ1bmN0aW9uIGIoUyxrLFQpe2NvbnN0IEM9ayE9PSJzdWNjZXNzIjtzd2l0Y2goZD1kLmZpbHRlcihQPT5QIT09UyksbCl7Y2FzZSJwZW5kaW5nIjpicmVhaztjYXNlImZhaWxlZCI6aWYoQ3x8IWUuZGF0YUFmdGVyVGltZW91dClyZXR1cm47YnJlYWs7ZGVmYXVsdDpyZXR1cm59aWYoaz09PSJhYm9ydCIpe2M9VCx2KCk7cmV0dXJufWlmKEMpe2M9VCxkLmxlbmd0aHx8KGkubGVuZ3RoP3goKTp2KCkpO3JldHVybn1pZihtKCksaCgpLCFlLnJhbmRvbSl7Y29uc3QgUD1lLnJlc291cmNlcy5pbmRleE9mKFMucmVzb3VyY2UpO1AhPT0tMSYmUCE9PWUuaW5kZXgmJihlLmluZGV4PVApfWw9ImNvbXBsZXRlZCIscC5mb3JFYWNoKFA9PntQKFQpfSl9ZnVuY3Rpb24geCgpe2lmKGwhPT0icGVuZGluZyIpcmV0dXJuO20oKTtjb25zdCBTPWkuc2hpZnQoKTtpZihTPT09dm9pZCAwKXtpZihkLmxlbmd0aCl7Zj1zZXRUaW1lb3V0KCgpPT57bSgpLGw9PT0icGVuZGluZyImJihoKCksdigpKX0sZS50aW1lb3V0KTtyZXR1cm59digpO3JldHVybn1jb25zdCBrPXtzdGF0dXM6InBlbmRpbmciLHJlc291cmNlOlMsY2FsbGJhY2s6KFQsQyk9PntiKGssVCxDKX19O2QucHVzaChrKSx1KyssZj1zZXRUaW1lb3V0KHgsZS5yb3RhdGUpLG4oUyx0LGsuY2FsbGJhY2spfXJldHVybiBzZXRUaW1lb3V0KHgpLHd9ZnVuY3Rpb24gUXYoZSl7Y29uc3QgdD17Li4uTUEsLi4uZX07bGV0IG49W107ZnVuY3Rpb24gcigpe249bi5maWx0ZXIoYT0+YSgpLnN0YXR1cz09PSJwZW5kaW5nIil9ZnVuY3Rpb24gbyhhLGwsdSl7Y29uc3QgYz1CQSh0LGEsbCwoZixkKT0+e3IoKSx1JiZ1KGYsZCl9KTtyZXR1cm4gbi5wdXNoKGMpLGN9ZnVuY3Rpb24gcyhhKXtyZXR1cm4gbi5maW5kKGw9PmEobCkpfHxudWxsfXJldHVybntxdWVyeTpvLGZpbmQ6cyxzZXRJbmRleDphPT57dC5pbmRleD1hfSxnZXRJbmRleDooKT0+dC5pbmRleCxjbGVhbnVwOnJ9fWZ1bmN0aW9uIGhtKCl7fWNvbnN0IFJjPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gcUEoZSl7aWYoIVJjW2VdKXtjb25zdCB0PU5sKGUpO2lmKCF0KXJldHVybjtjb25zdCBuPVF2KHQpLHI9e2NvbmZpZzp0LHJlZHVuZGFuY3k6bn07UmNbZV09cn1yZXR1cm4gUmNbZV19ZnVuY3Rpb24gWXYoZSx0LG4pe2xldCByLG87aWYodHlwZW9mIGU9PSJzdHJpbmciKXtjb25zdCBzPVJ1KGUpO2lmKCFzKXJldHVybiBuKHZvaWQgMCw0MjQpLGhtO289cy5zZW5kO2NvbnN0IGk9cUEoZSk7aSYmKHI9aS5yZWR1bmRhbmN5KX1lbHNle2NvbnN0IHM9RmYoZSk7aWYocyl7cj1RdihzKTtjb25zdCBpPWUucmVzb3VyY2VzP2UucmVzb3VyY2VzWzBdOiIiLGE9UnUoaSk7YSYmKG89YS5zZW5kKX19cmV0dXJuIXJ8fCFvPyhuKHZvaWQgMCw0MjQpLGhtKTpyLnF1ZXJ5KHQsbyxuKSgpLmFib3J0fWZ1bmN0aW9uIGdtKCl7fWZ1bmN0aW9uIEZBKGUpe2UuaWNvbnNMb2FkZXJGbGFnfHwoZS5pY29uc0xvYWRlckZsYWc9ITAsc2V0VGltZW91dCgoKT0+e2UuaWNvbnNMb2FkZXJGbGFnPSExLE5BKGUpfSkpfWZ1bmN0aW9uIHpBKGUpe2NvbnN0IHQ9W10sbj1bXTtyZXR1cm4gZS5mb3JFYWNoKHI9Pnsoci5tYXRjaChCdik/dDpuKS5wdXNoKHIpfSkse3ZhbGlkOnQsaW52YWxpZDpufX1mdW5jdGlvbiBXcyhlLHQsbil7ZnVuY3Rpb24gcigpe2NvbnN0IG89ZS5wZW5kaW5nSWNvbnM7dC5mb3JFYWNoKHM9PntvJiZvLmRlbGV0ZShzKSxlLmljb25zW3NdfHxlLm1pc3NpbmcuYWRkKHMpfSl9aWYobiYmdHlwZW9mIG49PSJvYmplY3QiKXRyeXtpZighanYoZSxuKS5sZW5ndGgpe3IoKTtyZXR1cm59fWNhdGNoe31yKCksRkEoZSl9ZnVuY3Rpb24geW0oZSx0KXtlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4obj0+e3Qobil9KS5jYXRjaCgoKT0+e3QobnVsbCl9KTp0KGUpfWZ1bmN0aW9uIGpBKGUsdCl7ZS5pY29uc1RvTG9hZD9lLmljb25zVG9Mb2FkPWUuaWNvbnNUb0xvYWQuY29uY2F0KHQpLnNvcnQoKTplLmljb25zVG9Mb2FkPXQsZS5pY29uc1F1ZXVlRmxhZ3x8KGUuaWNvbnNRdWV1ZUZsYWc9ITAsc2V0VGltZW91dCgoKT0+e2UuaWNvbnNRdWV1ZUZsYWc9ITE7Y29uc3R7cHJvdmlkZXI6bixwcmVmaXg6cn09ZSxvPWUuaWNvbnNUb0xvYWQ7aWYoZGVsZXRlIGUuaWNvbnNUb0xvYWQsIW98fCFvLmxlbmd0aClyZXR1cm47Y29uc3Qgcz1lLmxvYWRJY29uO2lmKGUubG9hZEljb25zJiYoby5sZW5ndGg+MXx8IXMpKXt5bShlLmxvYWRJY29ucyhvLHIsbiksYz0+e1dzKGUsbyxjKX0pO3JldHVybn1pZihzKXtvLmZvckVhY2goYz0+e2NvbnN0IGY9cyhjLHIsbik7eW0oZixkPT57Y29uc3QgcD1kP3twcmVmaXg6cixpY29uczp7W2NdOmR9fTpudWxsO1dzKGUsW2NdLHApfSl9KTtyZXR1cm59Y29uc3R7dmFsaWQ6aSxpbnZhbGlkOmF9PXpBKG8pO2lmKGEubGVuZ3RoJiZXcyhlLGEsbnVsbCksIWkubGVuZ3RoKXJldHVybjtjb25zdCBsPXIubWF0Y2goQnYpP1J1KG4pOm51bGw7aWYoIWwpe1dzKGUsaSxudWxsKTtyZXR1cm59bC5wcmVwYXJlKG4scixpKS5mb3JFYWNoKGM9PntZdihuLGMsZj0+e1dzKGUsYy5pY29ucyxmKX0pfSl9KSl9Y29uc3QgSnY9KGUsdCk9Pntjb25zdCBuPSRBKGUsITAsVnYoKSkscj1SQShuKTtpZighci5wZW5kaW5nLmxlbmd0aCl7bGV0IGw9ITA7cmV0dXJuIHQmJnNldFRpbWVvdXQoKCk9PntsJiZ0KHIubG9hZGVkLHIubWlzc2luZyxyLnBlbmRpbmcsZ20pfSksKCk9PntsPSExfX1jb25zdCBvPU9iamVjdC5jcmVhdGUobnVsbCkscz1bXTtsZXQgaSxhO3JldHVybiByLnBlbmRpbmcuZm9yRWFjaChsPT57Y29uc3R7cHJvdmlkZXI6dSxwcmVmaXg6Y309bDtpZihjPT09YSYmdT09PWkpcmV0dXJuO2k9dSxhPWMscy5wdXNoKHpvKHUsYykpO2NvbnN0IGY9b1t1XXx8KG9bdV09T2JqZWN0LmNyZWF0ZShudWxsKSk7ZltjXXx8KGZbY109W10pfSksci5wZW5kaW5nLmZvckVhY2gobD0+e2NvbnN0e3Byb3ZpZGVyOnUscHJlZml4OmMsbmFtZTpmfT1sLGQ9em8odSxjKSxwPWQucGVuZGluZ0ljb25zfHwoZC5wZW5kaW5nSWNvbnM9bmV3IFNldCk7cC5oYXMoZil8fChwLmFkZChmKSxvW3VdW2NdLnB1c2goZikpfSkscy5mb3JFYWNoKGw9Pntjb25zdCB1PW9bbC5wcm92aWRlcl1bbC5wcmVmaXhdO3UubGVuZ3RoJiZqQShsLHUpfSksdD9MQSh0LHIscyk6Z219LFZBPWU9Pm5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3Qgcj10eXBlb2YgZT09InN0cmluZyI/RmkoZSwhMCk6ZTtpZighcil7bihlKTtyZXR1cm59SnYoW3J8fGVdLG89PntpZihvLmxlbmd0aCYmcil7Y29uc3Qgcz1CZihyKTtpZihzKXt0KHsuLi5McywuLi5zfSk7cmV0dXJufX1uKGUpfSl9KTtmdW5jdGlvbiBVQShlLHQsbil7em8oIiIsdCkubG9hZEljb25zPWV9ZnVuY3Rpb24gSEEoZSx0KXtjb25zdCBuPXsuLi5lfTtmb3IoY29uc3QgciBpbiB0KXtjb25zdCBvPXRbcl0scz10eXBlb2YgbztyIGluIFV2PyhvPT09bnVsbHx8byYmKHM9PT0ic3RyaW5nInx8cz09PSJudW1iZXIiKSkmJihuW3JdPW8pOnM9PT10eXBlb2YgbltyXSYmKG5bcl09cj09PSJyb3RhdGUiP28lNDpvKX1yZXR1cm4gbn1jb25zdCBXQT0vW1xzLF0rLztmdW5jdGlvbiBHQShlLHQpe3Quc3BsaXQoV0EpLmZvckVhY2gobj0+e3N3aXRjaChuLnRyaW0oKSl7Y2FzZSJob3Jpem9udGFsIjplLmhGbGlwPSEwO2JyZWFrO2Nhc2UidmVydGljYWwiOmUudkZsaXA9ITA7YnJlYWt9fSl9ZnVuY3Rpb24gS0EoZSx0PTApe2NvbnN0IG49ZS5yZXBsYWNlKC9eLT9bMC05Ll0qLywiIik7ZnVuY3Rpb24gcihvKXtmb3IoO288MDspbys9NDtyZXR1cm4gbyU0fWlmKG49PT0iIil7Y29uc3Qgbz1wYXJzZUludChlKTtyZXR1cm4gaXNOYU4obyk/MDpyKG8pfWVsc2UgaWYobiE9PWUpe2xldCBvPTA7c3dpdGNoKG4pe2Nhc2UiJSI6bz0yNTticmVhaztjYXNlImRlZyI6bz05MH1pZihvKXtsZXQgcz1wYXJzZUZsb2F0KGUuc2xpY2UoMCxlLmxlbmd0aC1uLmxlbmd0aCkpO3JldHVybiBpc05hTihzKT8wOihzPXMvbyxzJTE9PT0wP3Iocyk6MCl9fXJldHVybiB0fWZ1bmN0aW9uIFFBKGUsdCl7bGV0IG49ZS5pbmRleE9mKCJ4bGluazoiKT09PS0xPyIiOicgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiJztmb3IoY29uc3QgciBpbiB0KW4rPSIgIityKyc9IicrdFtyXSsnIic7cmV0dXJuJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIicrbisiPiIrZSsiPC9zdmc+In1mdW5jdGlvbiBZQShlKXtyZXR1cm4gZS5yZXBsYWNlKC8iL2csIiciKS5yZXBsYWNlKC8lL2csIiUyNSIpLnJlcGxhY2UoLyMvZywiJTIzIikucmVwbGFjZSgvPC9nLCIlM0MiKS5yZXBsYWNlKC8+L2csIiUzRSIpLnJlcGxhY2UoL1xzKy9nLCIgIil9ZnVuY3Rpb24gSkEoZSl7cmV0dXJuImRhdGE6aW1hZ2Uvc3ZnK3htbCwiK1lBKGUpfWZ1bmN0aW9uIFhBKGUpe3JldHVybid1cmwoIicrSkEoZSkrJyIpJ31jb25zdCB2bT17Li4uSHYsaW5saW5lOiExfSxaQT17eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwieG1sbnM6eGxpbmsiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiYXJpYS1oaWRkZW4iOiEwLHJvbGU6ImltZyJ9LGVPPXtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxOdT17YmFja2dyb3VuZENvbG9yOiJjdXJyZW50Q29sb3IifSxYdj17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCJ9LGJtPXtJbWFnZToidmFyKC0tc3ZnKSIsUmVwZWF0OiJuby1yZXBlYXQiLFNpemU6IjEwMCUgMTAwJSJ9LHdtPXt3ZWJraXRNYXNrOk51LG1hc2s6TnUsYmFja2dyb3VuZDpYdn07Zm9yKGNvbnN0IGUgaW4gd20pe2NvbnN0IHQ9d21bZV07Zm9yKGNvbnN0IG4gaW4gYm0pdFtlK25dPWJtW25dfWNvbnN0IElhPXt9O1siaG9yaXpvbnRhbCIsInZlcnRpY2FsIl0uZm9yRWFjaChlPT57Y29uc3QgdD1lLnNsaWNlKDAsMSkrIkZsaXAiO0lhW2UrIi1mbGlwIl09dCxJYVtlLnNsaWNlKDAsMSkrIi1mbGlwIl09dCxJYVtlKyJGbGlwIl09dH0pO2Z1bmN0aW9uIF9tKGUpe3JldHVybiBlKyhlLm1hdGNoKC9eWy0wLTkuXSskLyk/InB4IjoiIil9Y29uc3QgeG09KGUsdCk9Pntjb25zdCBuPUhBKHZtLHQpLHI9ey4uLlpBfSxvPXQubW9kZXx8InN2ZyIscz17fSxpPXQuc3R5bGUsYT10eXBlb2YgaT09Im9iamVjdCImJiEoaSBpbnN0YW5jZW9mIEFycmF5KT9pOnt9O2ZvcihsZXQgeSBpbiB0KXtjb25zdCBfPXRbeV07aWYoXyE9PXZvaWQgMClzd2l0Y2goeSl7Y2FzZSJpY29uIjpjYXNlInN0eWxlIjpjYXNlIm9uTG9hZCI6Y2FzZSJtb2RlIjpjYXNlInNzciI6YnJlYWs7Y2FzZSJpbmxpbmUiOmNhc2UiaEZsaXAiOmNhc2UidkZsaXAiOm5beV09Xz09PSEwfHxfPT09InRydWUifHxfPT09MTticmVhaztjYXNlImZsaXAiOnR5cGVvZiBfPT0ic3RyaW5nIiYmR0EobixfKTticmVhaztjYXNlImNvbG9yIjpzLmNvbG9yPV87YnJlYWs7Y2FzZSJyb3RhdGUiOnR5cGVvZiBfPT0ic3RyaW5nIj9uW3ldPUtBKF8pOnR5cGVvZiBfPT0ibnVtYmVyIiYmKG5beV09Xyk7YnJlYWs7Y2FzZSJhcmlhSGlkZGVuIjpjYXNlImFyaWEtaGlkZGVuIjpfIT09ITAmJl8hPT0idHJ1ZSImJmRlbGV0ZSByWyJhcmlhLWhpZGRlbiJdO2JyZWFrO2RlZmF1bHQ6e2NvbnN0IHc9SWFbeV07dz8oXz09PSEwfHxfPT09InRydWUifHxfPT09MSkmJihuW3ddPSEwKTp2bVt5XT09PXZvaWQgMCYmKHJbeV09Xyl9fX1jb25zdCBsPXlBKGUsbiksdT1sLmF0dHJpYnV0ZXM7aWYobi5pbmxpbmUmJihzLnZlcnRpY2FsQWxpZ249Ii0wLjEyNWVtIiksbz09PSJzdmciKXtyLnN0eWxlPXsuLi5zLC4uLmF9LE9iamVjdC5hc3NpZ24ocix1KTtsZXQgeT0wLF89dC5pZDtyZXR1cm4gdHlwZW9mIF89PSJzdHJpbmciJiYoXz1fLnJlcGxhY2UoLy0vZywiXyIpKSxyLmlubmVySFRNTD1fQShsLmJvZHksXz8oKT0+XysiSUQiK3krKzoiaWNvbmlmeVZ1ZSIpLEZlKCJzdmciLHIpfWNvbnN0e2JvZHk6Yyx3aWR0aDpmLGhlaWdodDpkfT1lLHA9bz09PSJtYXNrInx8KG89PT0iYmciPyExOmMuaW5kZXhPZigiY3VycmVudENvbG9yIikhPT0tMSksbT1RQShjLHsuLi51LHdpZHRoOmYrIiIsaGVpZ2h0OmQrIiJ9KTtyZXR1cm4gci5zdHlsZT17Li4ucywiLS1zdmciOlhBKG0pLHdpZHRoOl9tKHUud2lkdGgpLGhlaWdodDpfbSh1LmhlaWdodCksLi4uZU8sLi4ucD9OdTpYdiwuLi5hfSxGZSgic3BhbiIscil9O1Z2KCEwKTtXdigiIixJQSk7aWYodHlwZW9mIGRvY3VtZW50PCJ1IiYmdHlwZW9mIHdpbmRvdzwidSIpe2NvbnN0IGU9d2luZG93O2lmKGUuSWNvbmlmeVByZWxvYWQhPT12b2lkIDApe2NvbnN0IHQ9ZS5JY29uaWZ5UHJlbG9hZCxuPSJJbnZhbGlkIEljb25pZnlQcmVsb2FkIHN5bnRheC4iO3R5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwmJih0IGluc3RhbmNlb2YgQXJyYXk/dDpbdF0pLmZvckVhY2gocj0+e3RyeXt0eXBlb2YgciE9Im9iamVjdCJ8fHI9PT1udWxsfHxyIGluc3RhbmNlb2YgQXJyYXl8fHR5cGVvZiByLmljb25zIT0ib2JqZWN0Inx8dHlwZW9mIHIucHJlZml4IT0ic3RyaW5nInx8dUEocil9Y2F0Y2h7fX0pfWlmKGUuSWNvbmlmeVByb3ZpZGVycyE9PXZvaWQgMCl7Y29uc3QgdD1lLkljb25pZnlQcm92aWRlcnM7aWYodHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbClmb3IobGV0IG4gaW4gdCl7Y29uc3Qgcj0iSWNvbmlmeVByb3ZpZGVyc1siK24rIl0gaXMgaW52YWxpZC4iO3RyeXtjb25zdCBvPXRbbl07aWYodHlwZW9mIG8hPSJvYmplY3QifHwhb3x8by5yZXNvdXJjZXM9PT12b2lkIDApY29udGludWU7R3YobixvKX1jYXRjaHt9fX19Y29uc3QgdE89ey4uLkxzLGJvZHk6IiJ9LG5PPXNlKChlLHtlbWl0OnR9KT0+e2NvbnN0IG49RyhudWxsKTtmdW5jdGlvbiByKCl7bi52YWx1ZSYmKG4udmFsdWUuYWJvcnQ/LigpLG4udmFsdWU9bnVsbCl9Y29uc3Qgbz1HKCEhZS5zc3IpLHM9RygiIiksaT1PZShudWxsKTtmdW5jdGlvbiBhKCl7Y29uc3QgdT1lLmljb247aWYodHlwZW9mIHU9PSJvYmplY3QiJiZ1IT09bnVsbCYmdHlwZW9mIHUuYm9keT09InN0cmluZyIpcmV0dXJuIHMudmFsdWU9IiIse2RhdGE6dX07bGV0IGM7aWYodHlwZW9mIHUhPSJzdHJpbmcifHwoYz1GaSh1LCExLCEwKSk9PT1udWxsKXJldHVybiBudWxsO2xldCBmPUJmKGMpO2lmKCFmKXtjb25zdCBtPW4udmFsdWU7cmV0dXJuKCFtfHxtLm5hbWUhPT11KSYmKGY9PT1udWxsP24udmFsdWU9e25hbWU6dX06bi52YWx1ZT17bmFtZTp1LGFib3J0Okp2KFtjXSxsKX0pLG51bGx9cigpLHMudmFsdWUhPT11JiYocy52YWx1ZT11LGl0KCgpPT57dCgibG9hZCIsdSl9KSk7Y29uc3QgZD1lLmN1c3RvbWlzZTtpZihkKXtmPU9iamVjdC5hc3NpZ24oe30sZik7Y29uc3QgbT1kKGYuYm9keSxjLm5hbWUsYy5wcmVmaXgsYy5wcm92aWRlcik7dHlwZW9mIG09PSJzdHJpbmciJiYoZi5ib2R5PW0pfWNvbnN0IHA9WyJpY29uaWZ5Il07cmV0dXJuIGMucHJlZml4IT09IiImJnAucHVzaCgiaWNvbmlmeS0tIitjLnByZWZpeCksYy5wcm92aWRlciE9PSIiJiZwLnB1c2goImljb25pZnktLSIrYy5wcm92aWRlcikse2RhdGE6ZixjbGFzc2VzOnB9fWZ1bmN0aW9uIGwoKXtjb25zdCB1PWEoKTt1P3UuZGF0YSE9PWkudmFsdWU/LmRhdGEmJihpLnZhbHVlPXUpOmkudmFsdWU9bnVsbH1yZXR1cm4gby52YWx1ZT9sKCk6b3QoKCk9PntvLnZhbHVlPSEwLGwoKX0pLFBlKCgpPT5lLmljb24sbCkscHIociksKCk9Pntjb25zdCB1PWkudmFsdWU7aWYoIXUpcmV0dXJuIHhtKHRPLGUpO2xldCBjPWU7cmV0dXJuIHUuY2xhc3NlcyYmKGM9ey4uLmUsY2xhc3M6dS5jbGFzc2VzLmpvaW4oIiAiKX0pLHhtKHsuLi5McywuLi51LmRhdGF9LGMpfX0se3Byb3BzOlsiaWNvbiIsIm1vZGUiLCJzc3IiLCJ3aWR0aCIsImhlaWdodCIsInN0eWxlIiwiY29sb3IiLCJpbmxpbmUiLCJyb3RhdGUiLCJoRmxpcCIsImhvcml6b250YWxGbGlwIiwidkZsaXAiLCJ2ZXJ0aWNhbEZsaXAiLCJmbGlwIiwiaWQiLCJhcmlhSGlkZGVuIiwiY3VzdG9taXNlIiwidGl0bGUiXSxlbWl0czpbImxvYWQiXX0pLFNtPXtnZXRBUElDb25maWc6Tmwsc2V0QVBJTW9kdWxlOld2LHNlbmRBUElRdWVyeTpZdixzZXRGZXRjaDprQSxnZXRGZXRjaDpFQSxsaXN0QVBJUHJvdmlkZXJzOnhBfSxyTz1sdCh7bmFtZToiQG51eHQvaWNvbiIsc2V0dXAoKXtjb25zdCBlPWZvKCksdD1TdCgpLmljb247U20uc2V0RmV0Y2goJGZldGNoLm5hdGl2ZSk7Y29uc3Qgbj1bXTtpZih0LnByb3ZpZGVyPT09InNlcnZlciIpe2NvbnN0IG89ZS5hcHA/LmJhc2VVUkw/LnJlcGxhY2UoL1wvJC8sIiIpPz8iIjtuLnB1c2gobysodC5sb2NhbEFwaUVuZHBvaW50fHwiL2FwaS9fbnV4dF9pY29uIikpLCh0LmZhbGxiYWNrVG9BcGk9PT0hMHx8dC5mYWxsYmFja1RvQXBpPT09ImNsaWVudC1vbmx5IikmJm4ucHVzaCh0Lmljb25pZnlBcGlFbmRwb2ludCl9ZWxzZSB0LnByb3ZpZGVyPT09Im5vbmUiP1NtLnNldEZldGNoKCgpPT5Qcm9taXNlLnJlc29sdmUobmV3IFJlc3BvbnNlKSk6bi5wdXNoKHQuaWNvbmlmeUFwaUVuZHBvaW50KTthc3luYyBmdW5jdGlvbiByKG8scyl7dHJ5e2NvbnN0IGk9YXdhaXQgJGZldGNoKG5bMF0rIi8iK3MrIi5qc29uIix7cXVlcnk6e2ljb25zOm8uam9pbigiLCIpfX0pO2lmKCFpfHxpLnByZWZpeCE9PXN8fCFpLmljb25zKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIitKU09OLnN0cmluZ2lmeShpKSk7cmV0dXJuIGl9Y2F0Y2h7cmV0dXJuIG51bGx9fUd2KCIiLHtyZXNvdXJjZXM6bn0pO2Zvcihjb25zdCBvIG9mIHQuY3VzdG9tQ29sbGVjdGlvbnN8fFtdKW8mJlVBKHIsbyl9fSk7ZnVuY3Rpb24ganIoKXtjb25zdCBlPWlvKCJsYXllclJlZ2lzdHJ5Lm5hdiIsKCk9PltdKSx0PWlvKCJsYXllclJlZ2lzdHJ5Lm92ZXJsYXlzIiwoKT0+W10pLG49aW8oImxheWVyUmVnaXN0cnkubmF2YmFyIiwoKT0+W10pO2Z1bmN0aW9uIHIobyl7aWYoby5uYXZJdGVtcz8ubGVuZ3RoKXtjb25zdCBzPW5ldyBTZXQoZS52YWx1ZS5tYXAoaT0+aS5pZCkpO2UudmFsdWU9Wy4uLmUudmFsdWUsLi4uby5uYXZJdGVtcy5maWx0ZXIoaT0+IXMuaGFzKGkuaWQpKV19aWYoby5vdmVybGF5cz8ubGVuZ3RoKXtjb25zdCBzPW5ldyBTZXQodC52YWx1ZS5tYXAoaT0+aS5pZCkpO3QudmFsdWU9Wy4uLnQudmFsdWUsLi4uby5vdmVybGF5cy5maWx0ZXIoaT0+IXMuaGFzKGkuaWQpKS5tYXAoaT0+KHsuLi5pLGNvbXBvbmVudDpMbyhpLmNvbXBvbmVudCl9KSldfWlmKG8ubmF2YmFySXRlbXM/Lmxlbmd0aCl7Y29uc3Qgcz1uZXcgU2V0KG4udmFsdWUubWFwKGk9PmkuaWQpKTtuLnZhbHVlPVsuLi5uLnZhbHVlLC4uLm8ubmF2YmFySXRlbXMuZmlsdGVyKGk9PiFzLmhhcyhpLmlkKSkubWFwKGk9Pih7Li4uaSxjb21wb25lbnQ6TG8oaS5jb21wb25lbnQpfSkpXX19cmV0dXJue25hdkl0ZW1zOmUsb3ZlcmxheXM6dCxuYXZiYXJJdGVtczpuLGNvbnRyaWJ1dGU6cn19Y29uc3Qgb089bHQoKCk9Pntjb25zdHtjb250cmlidXRlOmV9PWpyKCk7ZSh7bmF2SXRlbXM6W3tpZDoiaG9tZSIsbGFiZWw6IkhvbWUiLGljb246ImktbHVjaWRlLWhvdXNlIix0bzoiL2Rhc2hib2FyZCIsc2VjdGlvbjoibWFpbiIscHJpb3JpdHk6MH0se2lkOiJzZXR0aW5ncy1nZW5lcmFsIixsYWJlbDoiR2VuZXJhbCIsdG86Ii9zZXR0aW5ncyIsc2VjdGlvbjoic2V0dGluZ3MiLHByaW9yaXR5OjB9LHtpZDoic2V0dGluZ3Mtbm90aWZpY2F0aW9ucyIsbGFiZWw6Ik5vdGlmaWNhdGlvbnMiLHRvOiIvc2V0dGluZ3Mvbm90aWZpY2F0aW9ucyIsc2VjdGlvbjoic2V0dGluZ3MiLHByaW9yaXR5OjV9LHtpZDoic2V0dGluZ3Mtc2VjdXJpdHkiLGxhYmVsOiJTZWN1cml0eSIsdG86Ii9zZXR0aW5ncy9zZWN1cml0eSIsc2VjdGlvbjoic2V0dGluZ3MiLHByaW9yaXR5OjQwfV19KX0pO2xldCBadj1jbGFzc3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMub3BlcmF0b3I9dCx0aGlzLnZhbHVlPW4sT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInQiLHt3cml0YWJsZTohMH0pfWdldCBub3Rlcygpe3JldHVybiB0aGlzLnR9YWRkTm90ZSh0KXt0aGlzLnQ9dGhpcy50fHxbXSx0aGlzLnQucHVzaCh0KX19LHpmPWNsYXNzIGV4dGVuZHMgWnZ7fSxEbD1jbGFzcyBleHRlbmRzIHpme2NvbnN0cnVjdG9yKHQsbil7aWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IEVycm9yKGAiJHt0fSIgb3BlcmF0b3IgZXhwZWN0cyB0byByZWNlaXZlIGFuIGFycmF5IG9mIGNvbmRpdGlvbnNgKTtzdXBlcih0LG4pfX07Y29uc3Qgemk9Il9faXRzZWxmX18iO2xldCBMbD1jbGFzcyBleHRlbmRzIFp2e2NvbnN0cnVjdG9yKHQsbixyKXtzdXBlcih0LHIpLHRoaXMuZmllbGQ9bn19O2NvbnN0IGViPW5ldyB6ZigiX19udWxsX18iLG51bGwpLER1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO2Z1bmN0aW9uIHNPKGUsdCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEbCYmdC5vcGVyYXRvcj09PWV9ZnVuY3Rpb24gdGIoZSx0KXtyZXR1cm4gdC5sZW5ndGg9PT0xP3RbMF06bmV3IERsKGUsKGZ1bmN0aW9uIG4ocixvLHMpe2NvbnN0IGk9c3x8W107Zm9yKGxldCBhPTAsbD1vLmxlbmd0aDthPGw7YSsrKXtjb25zdCB1PW9bYV07c08ocix1KT9uKHIsdS52YWx1ZSxpKTppLnB1c2godSl9cmV0dXJuIGl9KShlLHQpKX1jb25zdCBpTz1lPT5lLG5iPSgpPT5PYmplY3QuY3JlYXRlKG51bGwpLHJiPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuYigpLCJfX0B0eXBlQF9fIix7dmFsdWU6Imlnbm9yZSB2YWx1ZSJ9KTtmdW5jdGlvbiBhTyhlLHQsbj0hMSl7aWYoIWV8fGUmJmUuY29uc3RydWN0b3IhPT1PYmplY3QpcmV0dXJuITE7Zm9yKGNvbnN0IHIgaW4gZSlpZihEdShlLHIpJiZEdSh0LHIpJiYoIW58fGVbcl0hPT1yYikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbE8oZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBpbiBlKUR1KGUsbikmJmVbbl0hPT1yYiYmdC5wdXNoKG4pO3JldHVybiB0fWZ1bmN0aW9uIE5jKGUsdCl7dCE9PWViJiZlLnB1c2godCl9Y29uc3Qgb2I9ZT0+dGIoImFuZCIsZSksc2I9e2NvbXBvdW5kKGUsdCxuKXtjb25zdCByPShBcnJheS5pc0FycmF5KHQpP3Q6W3RdKS5tYXAobz0+bi5wYXJzZShvKSk7cmV0dXJuIG5ldyBEbChlLm5hbWUscil9LGZpZWxkOihlLHQsbik9Pm5ldyBMbChlLm5hbWUsbi5maWVsZCx0KSxkb2N1bWVudDooZSx0KT0+bmV3IHpmKGUubmFtZSx0KX07bGV0IGNPPWNsYXNze2NvbnN0cnVjdG9yKHQsbj1uYigpKXt0aGlzLm89dm9pZCAwLHRoaXMucz12b2lkIDAsdGhpcy5pPXZvaWQgMCx0aGlzLnU9dm9pZCAwLHRoaXMuaD12b2lkIDAsdGhpcy5wYXJzZT10aGlzLnBhcnNlLmJpbmQodGhpcyksdGhpcy51PXtvcGVyYXRvclRvQ29uZGl0aW9uTmFtZTpuLm9wZXJhdG9yVG9Db25kaXRpb25OYW1lfHxpTyxkZWZhdWx0T3BlcmF0b3JOYW1lOm4uZGVmYXVsdE9wZXJhdG9yTmFtZXx8ImVxIixtZXJnZUZpbmFsQ29uZGl0aW9uczpuLm1lcmdlRmluYWxDb25kaXRpb25zfHxvYn0sdGhpcy5vPU9iamVjdC5rZXlzKHQpLnJlZHVjZSgocixvKT0+KHJbb109T2JqZWN0LmFzc2lnbih7bmFtZTp0aGlzLnUub3BlcmF0b3JUb0NvbmRpdGlvbk5hbWUobyl9LHRbb10pLHIpLHt9KSx0aGlzLnM9T2JqZWN0LmFzc2lnbih7fSxuLmZpZWxkQ29udGV4dCx7ZmllbGQ6IiIscXVlcnk6e30scGFyc2U6dGhpcy5wYXJzZSxoYXNPcGVyYXRvcnM6cj0+YU8ocix0aGlzLm8sbi51c2VJZ25vcmVWYWx1ZSl9KSx0aGlzLmk9T2JqZWN0LmFzc2lnbih7fSxuLmRvY3VtZW50Q29udGV4dCx7cGFyc2U6dGhpcy5wYXJzZSxxdWVyeTp7fX0pLHRoaXMuaD1uLnVzZUlnbm9yZVZhbHVlP2xPOk9iamVjdC5rZXlzfXNldFBhcnNlKHQpe3RoaXMucGFyc2U9dCx0aGlzLnMucGFyc2U9dCx0aGlzLmkucGFyc2U9dH1wYXJzZUZpZWxkKHQsbixyLG8pe2NvbnN0IHM9dGhpcy5vW25dO2lmKCFzKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgb3BlcmF0b3IgIiR7bn0iYCk7aWYocy50eXBlIT09ImZpZWxkIil0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgJHtzLnR5cGV9IG9wZXJhdG9yICIke259IiBhdCBmaWVsZCBsZXZlbGApO3JldHVybiB0aGlzLnMuZmllbGQ9dCx0aGlzLnMucXVlcnk9byx0aGlzLnBhcnNlSW5zdHJ1Y3Rpb24ocyxyLHRoaXMucyl9cGFyc2VJbnN0cnVjdGlvbih0LG4scil7cmV0dXJuIHR5cGVvZiB0LnZhbGlkYXRlPT0iZnVuY3Rpb24iJiZ0LnZhbGlkYXRlKHQsbiksKHQucGFyc2V8fHNiW3QudHlwZV0pKHQsbixyKX1wYXJzZUZpZWxkT3BlcmF0b3JzKHQsbil7Y29uc3Qgcj1bXSxvPXRoaXMuaChuKTtmb3IobGV0IHM9MCxpPW8ubGVuZ3RoO3M8aTtzKyspe2NvbnN0IGE9b1tzXTtpZighdGhpcy5vW2FdKXRocm93IG5ldyBFcnJvcihgRmllbGQgcXVlcnkgZm9yICIke3R9IiBtYXkgY29udGFpbiBvbmx5IG9wZXJhdG9ycyBvciBhIHBsYWluIG9iamVjdCBhcyBhIHZhbHVlYCk7TmMocix0aGlzLnBhcnNlRmllbGQodCxhLG5bYV0sbikpfXJldHVybiByfXBhcnNlKHQpe2NvbnN0IG49W10scj10aGlzLmgodCk7dGhpcy5pLnF1ZXJ5PXQ7Zm9yKGxldCBvPTAscz1yLmxlbmd0aDtvPHM7bysrKXtjb25zdCBpPXJbb10sYT10W2ldLGw9dGhpcy5vW2ldO2lmKGwpe2lmKGwudHlwZSE9PSJkb2N1bWVudCImJmwudHlwZSE9PSJjb21wb3VuZCIpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdXNlIHBhcnNpbmcgaW5zdHJ1Y3Rpb24gZm9yIG9wZXJhdG9yICIke2l9IiBpbiAiZG9jdW1lbnQiIGNvbnRleHQgYXMgaXQgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiAgIiR7bC50eXBlfSIgY29udGV4dGApO05jKG4sdGhpcy5wYXJzZUluc3RydWN0aW9uKGwsYSx0aGlzLmkpKX1lbHNlIHRoaXMucy5oYXNPcGVyYXRvcnMoYSk/bi5wdXNoKC4uLnRoaXMucGFyc2VGaWVsZE9wZXJhdG9ycyhpLGEpKTpOYyhuLHRoaXMucGFyc2VGaWVsZChpLHRoaXMudS5kZWZhdWx0T3BlcmF0b3JOYW1lLGEsdCkpfXJldHVybiB0aGlzLnUubWVyZ2VGaW5hbENvbmRpdGlvbnMobil9fTtmdW5jdGlvbiBEYyhlLHQpe2NvbnN0IG49ZVt0XTtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBpbnRlcnByZXQgIiR7dH0iIGNvbmRpdGlvbi4gRGlkIHlvdSBmb3JnZXQgdG8gcmVnaXN0ZXIgaW50ZXJwcmV0ZXIgZm9yIGl0P2ApO3JldHVybiBufWZ1bmN0aW9uIHVPKGUpe3JldHVybiBlLm9wZXJhdG9yfWZ1bmN0aW9uIGZPKGUsdCl7Y29uc3Qgbj10LHI9biYmbi5nZXRJbnRlcnByZXRlck5hbWV8fHVPO2xldCBvO3N3aXRjaChuP24ubnVtYmVyT2ZBcmd1bWVudHM6MCl7Y2FzZSAxOm89aT0+e2NvbnN0IGE9cihpLG4pO3JldHVybiBEYyhlLGEpKGkscyl9O2JyZWFrO2Nhc2UgMzpvPShpLGEsbCk9Pntjb25zdCB1PXIoaSxuKTtyZXR1cm4gRGMoZSx1KShpLGEsbCxzKX07YnJlYWs7ZGVmYXVsdDpvPShpLGEpPT57Y29uc3QgbD1yKGksbik7cmV0dXJuIERjKGUsbCkoaSxhLHMpfX1jb25zdCBzPU9iamVjdC5hc3NpZ24oe30sbix7aW50ZXJwcmV0Om99KTtyZXR1cm4gcy5pbnRlcnByZXR9ZnVuY3Rpb24gZE8oZSx0KXtyZXR1cm4obiwuLi5yKT0+e2NvbnN0IG89ZShuLC4uLnIpLHM9dC5iaW5kKG51bGwsbyk7cmV0dXJuIHMuYXN0PW8sc319ZnVuY3Rpb24gaWIoZSx0KXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdmFsdWUgdG8gYmUgYW4gYXJyYXlgKX1mdW5jdGlvbiBhYihlLHQpe2lmKGliKGUsdCksIXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB0byBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIGFycmF5YCl9Y29uc3QgamY9ZT0+KHQsbik9PntpZih0eXBlb2YgbiE9PWUpdGhyb3cgbmV3IEVycm9yKGAiJHt0Lm5hbWV9IiBleHBlY3RzIHZhbHVlIHRvIGJlIGEgIiR7ZX0iYCl9LGxiPXt0eXBlOiJjb21wb3VuZCIsdmFsaWRhdGU6YWIscGFyc2UoZSx0LHtwYXJzZTpufSl7Y29uc3Qgcj10Lm1hcChvPT5uKG8pKTtyZXR1cm4gdGIoZS5uYW1lLHIpfX0scE89bGIsbU89e3R5cGU6ImNvbXBvdW5kIix2YWxpZGF0ZTphYn0saE89e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLHQpe2lmKCEodCYmKHQgaW5zdGFuY2VvZiBSZWdFeHB8fHQuY29uc3RydWN0b3I9PT1PYmplY3QpKSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdG8gcmVjZWl2ZSBlaXRoZXIgcmVndWxhciBleHByZXNzaW9uIG9yIG9iamVjdCBvZiBmaWVsZCBvcGVyYXRvcnNgKX0scGFyc2UoZSx0LG4pe2NvbnN0IHI9dCBpbnN0YW5jZW9mIFJlZ0V4cD9uZXcgTGwoInJlZ2V4IixuLmZpZWxkLHQpOm4ucGFyc2UodCxuKTtyZXR1cm4gbmV3IERsKGUubmFtZSxbcl0pfX0sY2I9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLHQpe2lmKCF0fHx0LmNvbnN0cnVjdG9yIT09T2JqZWN0KXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB0byByZWNlaXZlIGFuIG9iamVjdCB3aXRoIG5lc3RlZCBxdWVyeSBvciBmaWVsZCBsZXZlbCBvcGVyYXRvcnNgKX0scGFyc2UoZSx0LHtwYXJzZTpuLGZpZWxkOnIsaGFzT3BlcmF0b3JzOm99KXtjb25zdCBzPW8odCk/bih0LHtmaWVsZDp6aX0pOm4odCk7cmV0dXJuIG5ldyBMbChlLm5hbWUscixzKX19LHViPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGU6amYoIm51bWJlciIpfSwkbD17dHlwZToiZmllbGQiLHZhbGlkYXRlOmlifSxmYj0kbCxkYj0kbCxnTz17dHlwZToiZmllbGQiLHZhbGlkYXRlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCl8fHQubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgYW4gYXJyYXkgd2l0aCAyIG51bWVyaWMgZWxlbWVudHNgKX19LHBiPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGU6amYoImJvb2xlYW4iKX0sVmY9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZTpmdW5jdGlvbihlLHQpe2lmKCEodHlwZW9mIHQ9PSJzdHJpbmcifHx0eXBlb2YgdD09Im51bWJlciJ8fHQgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdmFsdWUgdG8gYmUgY29tcGFyYWJsZSAoaS5lLiwgc3RyaW5nLCBudW1iZXIgb3IgZGF0ZSlgKX19LE1sPVZmLG1iPU1sLGhiPU1sLFVmPXt0eXBlOiJmaWVsZCJ9LGdiPVVmLHliPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGUoZSx0KXtpZighKHQgaW5zdGFuY2VvZiBSZWdFeHApJiZ0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIHZhbHVlIHRvIGJlIGEgcmVndWxhciBleHByZXNzaW9uIG9yIGEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyByZWd1bGFyIGV4cHJlc3Npb25gKX0scGFyc2UoZSx0LG4pe2NvbnN0IHI9dHlwZW9mIHQ9PSJzdHJpbmciP25ldyBSZWdFeHAodCxuLnF1ZXJ5LiRvcHRpb25zfHwiIik6dDtyZXR1cm4gbmV3IExsKGUubmFtZSxuLmZpZWxkLHIpfX0sdmI9e3R5cGU6ImZpZWxkIixwYXJzZTooKT0+ZWJ9LHlPPXt0eXBlOiJkb2N1bWVudCIsdmFsaWRhdGU6amYoImZ1bmN0aW9uIil9O3ZhciB2Tz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCwkYW5kOmxiLCRvcjpwTywkbm9yOm1PLCRub3Q6aE8sJGVsZW1NYXRjaDpjYiwkc2l6ZTp1YiwkaW46JGwsJG5pbjpmYiwkYWxsOmRiLCRtb2Q6Z08sJGV4aXN0czpwYiwkZ3RlOlZmLCRndDpNbCwkbHQ6bWIsJGx0ZTpoYiwkZXE6VWYsJG5lOmdiLCRyZWdleDp5Yiwkb3B0aW9uczp2Yiwkd2hlcmU6eU99KTtjbGFzcyBiTyBleHRlbmRzIGNPe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2RlZmF1bHRPcGVyYXRvck5hbWU6IiRlcSIsb3BlcmF0b3JUb0NvbmRpdGlvbk5hbWU6bj0+bi5zbGljZSgxKX0pfXBhcnNlKHQsbil7cmV0dXJuIG4mJm4uZmllbGQ/b2IodGhpcy5wYXJzZUZpZWxkT3BlcmF0b3JzKG4uZmllbGQsdCkpOnN1cGVyLnBhcnNlKHQpfX1jb25zdCBMdT12TztmdW5jdGlvbiBIZihlLHQsbil7Zm9yKGxldCByPTAsbz1lLmxlbmd0aDtyPG87cisrKWlmKG4oZVtyXSx0KT09PTApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gV2YoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmTnVtYmVyLmlzTmFOKE51bWJlcih0KSl9ZnVuY3Rpb24ga20oZSx0LG4pe2lmKCFXZihlLHQpKXJldHVybiBuKGUsdCk7bGV0IHI9W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9bihlW29dLHQpO3MhPT12b2lkIDAmJihyPXIuY29uY2F0KHMpKX1yZXR1cm4gcn1mdW5jdGlvbiBXbyhlKXtyZXR1cm4odCxuLHIpPT57Y29uc3Qgbz1yLmdldChuLHQuZmllbGQpO3JldHVybiBBcnJheS5pc0FycmF5KG8pP28uc29tZShzPT5lKHQscyxyKSk6ZSh0LG8scil9fWNvbnN0IHdPPU9iamVjdC5oYXNPd258fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLF9PPShlLHQpPT5lW3RdO2Z1bmN0aW9uIGJiKGUsdCxuKXtjb25zdCByPXQubGFzdEluZGV4T2YoIi4iKTtyZXR1cm4gcj09PS0xP1tlLHRdOltuKGUsdC5zbGljZSgwLHIpKSx0LnNsaWNlKHIrMSldfWZ1bmN0aW9uIHhPKGUsdCxuPV9PKXtpZih0PT09emkpcmV0dXJuIGU7aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZ2V0IGZpZWxkICIke3R9IiBvdXQgb2YgJHtTdHJpbmcoZSl9LmApO3JldHVybihmdW5jdGlvbihyLG8scyl7aWYoby5pbmRleE9mKCIuIik9PT0tMSlyZXR1cm4ga20ocixvLHMpO2NvbnN0IGk9by5zcGxpdCgiLiIpO2xldCBhPXI7Zm9yKGxldCBsPTAsdT1pLmxlbmd0aDtsPHU7bCsrKWlmKGE9a20oYSxpW2xdLHMpLCFhfHx0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGw8dS0xP3ZvaWQgMDphO3JldHVybiBhfSkoZSx0LG4pfWZ1bmN0aW9uIHdiKGUsdCl7cmV0dXJuIGU9PT10PzA6ZT50PzE6LTF9ZnVuY3Rpb24gX2IoZSx0PXt9KXtyZXR1cm4gZk8oZSxPYmplY3QuYXNzaWduKHtnZXQ6eE8sY29tcGFyZTp3Yn0sdCkpfWNvbnN0IHhiPShlLHQse2ludGVycHJldDpufSk9PmUudmFsdWUuc29tZShyPT5uKHIsdCkpLFNPPShlLHQsbik9PiF4YihlLHQsbiksU2I9KGUsdCx7aW50ZXJwcmV0Om59KT0+ZS52YWx1ZS5ldmVyeShyPT5uKHIsdCkpLGtPPShlLHQse2ludGVycHJldDpufSk9PiFuKGUudmFsdWVbMF0sdCksR2Y9KGUsdCx7Y29tcGFyZTpuLGdldDpyfSk9Pntjb25zdCBvPXIodCxlLmZpZWxkKTtyZXR1cm4gQXJyYXkuaXNBcnJheShvKSYmIUFycmF5LmlzQXJyYXkoZS52YWx1ZSk/SGYobyxlLnZhbHVlLG4pOm4obyxlLnZhbHVlKT09PTB9LGtiPShlLHQsbik9PiFHZihlLHQsbiksRWI9V28oKGUsdCxuKT0+e2NvbnN0IHI9bi5jb21wYXJlKHQsZS52YWx1ZSk7cmV0dXJuIHI9PT0wfHxyPT09LTF9KSxUYj1XbygoZSx0LG4pPT5uLmNvbXBhcmUodCxlLnZhbHVlKT09PS0xKSxDYj1XbygoZSx0LG4pPT5uLmNvbXBhcmUodCxlLnZhbHVlKT09PTEpLEFiPVdvKChlLHQsbik9Pntjb25zdCByPW4uY29tcGFyZSh0LGUudmFsdWUpO3JldHVybiByPT09MHx8cj09PTF9KSxPYj0oZSx0LHtnZXQ6bn0pPT57aWYoZS5maWVsZD09PXppKXJldHVybiB0IT09dm9pZCAwO2NvbnN0W3Isb109YmIodCxlLmZpZWxkLG4pLHM9aT0+aT09bnVsbD8hIWk9PT1lLnZhbHVlOndPKGksbyk9PT1lLnZhbHVlO3JldHVybiBXZihyLG8pP3Iuc29tZShzKTpzKHIpfSxFTz1XbygoZSx0KT0+dHlwZW9mIHQ9PSJudW1iZXIiJiZ0JWUudmFsdWVbMF09PT1lLnZhbHVlWzFdKSxQYj0oZSx0LHtnZXQ6bn0pPT57Y29uc3RbcixvXT1iYih0LGUuZmllbGQsbikscz1pPT57Y29uc3QgYT1uKGksbyk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoPT09ZS52YWx1ZX07cmV0dXJuIGUuZmllbGQhPT16aSYmV2YocixvKT9yLnNvbWUocyk6cyhyKX0sSWI9V28oKGUsdCk9PnR5cGVvZiB0PT0ic3RyaW5nIiYmZS52YWx1ZS50ZXN0KHQpKSxCbD1XbygoZSx0LHtjb21wYXJlOm59KT0+SGYoZS52YWx1ZSx0LG4pKSxSYj0oZSx0LG4pPT4hQmwoZSx0LG4pLE5iPShlLHQse2NvbXBhcmU6bixnZXQ6cn0pPT57Y29uc3Qgbz1yKHQsZS5maWVsZCk7cmV0dXJuIEFycmF5LmlzQXJyYXkobykmJmUudmFsdWUuZXZlcnkocz0+SGYobyxzLG4pKX0sRGI9KGUsdCx7aW50ZXJwcmV0Om4sZ2V0OnJ9KT0+e2NvbnN0IG89cih0LGUuZmllbGQpO3JldHVybiBBcnJheS5pc0FycmF5KG8pJiZvLnNvbWUocz0+bihlLnZhbHVlLHMpKX0sVE89KGUsdCk9PmUudmFsdWUuY2FsbCh0KTt2YXIgQ089T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsb3I6eGIsbm9yOlNPLGFuZDpTYixub3Q6a08sZXE6R2YsbmU6a2IsbHRlOkViLGx0OlRiLGd0OkNiLGd0ZTpBYixleGlzdHM6T2IsbW9kOkVPLHNpemU6UGIscmVnZXg6SWIsd2l0aGluOkJsLG5pbjpSYixhbGw6TmIsZWxlbU1hdGNoOkRiLHdoZXJlOlRPfSk7Y29uc3QgS2Y9T2JqZWN0LmFzc2lnbih7fSxDTyx7aW46Qmx9KTtfYihLZik7ZnVuY3Rpb24gRW0oZSl7cmV0dXJuIGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCI/ZTplIGluc3RhbmNlb2YgRGF0ZT9lLmdldFRpbWUoKTplJiZ0eXBlb2YgZS50b0pTT049PSJmdW5jdGlvbiI/ZS50b0pTT04oKTplfWNvbnN0IEFPPShlLHQpPT53YihFbShlKSxFbSh0KSk7ZnVuY3Rpb24gUWYoZSx0LG4pe2NvbnN0IHI9bmV3IGJPKGUpLG89X2IodCxPYmplY3QuYXNzaWduKHtjb21wYXJlOkFPfSxuKSk7aWYobiYmbi5mb3JQcmltaXRpdmVzKXtjb25zdCBzPXtmaWVsZDp6aX0saT1yLnBhcnNlO3Iuc2V0UGFyc2UoYT0+aShhLHMpKX1yZXR1cm4gZE8oci5wYXJzZSxvKX1RZihMdSxLZik7UWYoWyIkYW5kIiwiJG9yIl0ucmVkdWNlKChlLHQpPT4oZVt0XT1PYmplY3QuYXNzaWduKHt9LGVbdF0se3R5cGU6ImZpZWxkIn0pLGUpLE9iamVjdC5hc3NpZ24oe30sTHUseyRub3I6T2JqZWN0LmFzc2lnbih7fSxMdS4kbm9yLHt0eXBlOiJmaWVsZCIscGFyc2U6c2IuY29tcG91bmR9KX0pKSxLZix7Zm9yUHJpbWl0aXZlczohMH0pO2NvbnN0IE9PPU9iamVjdC5oYXNPd258fCgoZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkpO2Z1bmN0aW9uICR1KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWNvbnN0IFRtPSJfX2Nhc2xTdWJqZWN0VHlwZV9fIixSYT1lPT57Y29uc3QgdD10eXBlb2YgZTtyZXR1cm4gdD09PSJzdHJpbmcifHx0PT09ImZ1bmN0aW9uIn0sUE89ZT0+ZS5tb2RlbE5hbWV8fGUubmFtZTtmdW5jdGlvbiBMYihlKXtyZXR1cm4gT08oZSxUbSk/ZVtUbV06UE8oZS5jb25zdHJ1Y3Rvcil9Y29uc3QgQ209e2Z1bmN0aW9uOmU9PmUuY29uc3RydWN0b3Isc3RyaW5nOkxifTtmdW5jdGlvbiBBbShlLHQsbil7Zm9yKGxldCByPW47cjx0Lmxlbmd0aDtyKyspZS5wdXNoKHRbcl0pfWZ1bmN0aW9uIE9tKGUsdCl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm4gdHx8W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gZXx8W107bGV0IG49MCxyPTA7Y29uc3Qgbz1bXTtmb3IoO248ZS5sZW5ndGgmJnI8dC5sZW5ndGg7KWVbbl0ucHJpb3JpdHk8dFtyXS5wcmlvcml0eT8oby5wdXNoKGVbbl0pLG4rKyk6ZVtuXS5wcmlvcml0eT50W3JdLnByaW9yaXR5PyhvLnB1c2godFtyXSkscisrKTooby5wdXNoKGVbbl0pLG4rKyxyKyspO3JldHVybiBBbShvLGUsbiksQW0obyx0LHIpLG99ZnVuY3Rpb24gdWEoZSx0LG4pe2xldCByPWUuZ2V0KHQpO3JldHVybiByfHwocj1uKCksZS5zZXQodCxyKSkscn1jb25zdCBJTz1lPT5lO2Z1bmN0aW9uIFJPKGUsdCl7bGV0IG47Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG89dChlW3JdKTtuJiZvJiZuLnB1c2goZVtyXSksb3x8KG4/Pz1lLnNsaWNlKDAscikpfXJldHVybiBufHxlfWZ1bmN0aW9uIE5PKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlLmZpZWxkcykmJiFlLmZpZWxkcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJgcmF3UnVsZS5maWVsZHNgIGNhbm5vdCBiZSBhbiBlbXB0eSBhcnJheS4gaHR0cHM6Ly9iaXQubHkvMzkwbWlMYSIpO2lmKGUuZmllbGRzJiYhdC5maWVsZE1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBwYXNzICJmaWVsZE1hdGNoZXIiIG9wdGlvbiBpbiBvcmRlciB0byByZXN0cmljdCBhY2Nlc3MgYnkgZmllbGRzJyk7aWYoZS5jb25kaXRpb25zJiYhdC5jb25kaXRpb25zTWF0Y2hlcil0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRvIHBhc3MgImNvbmRpdGlvbnNNYXRjaGVyIiBvcHRpb24gaW4gb3JkZXIgdG8gcmVzdHJpY3QgYWNjZXNzIGJ5IGNvbmRpdGlvbnMnKX1jbGFzcyBET3tjb25zdHJ1Y3Rvcih0LG4scj0wKXtOTyh0LG4pLHRoaXMuYWN0aW9uPW4ucmVzb2x2ZUFjdGlvbih0LmFjdGlvbiksdGhpcy5zdWJqZWN0PXQuc3ViamVjdCx0aGlzLmludmVydGVkPSEhdC5pbnZlcnRlZCx0aGlzLmNvbmRpdGlvbnM9dC5jb25kaXRpb25zLHRoaXMucmVhc29uPXQucmVhc29uLHRoaXMub3JpZ2luPXQsdGhpcy5maWVsZHM9dC5maWVsZHM/JHUodC5maWVsZHMpOnZvaWQgMCx0aGlzLnByaW9yaXR5PXIsdGhpcy50PW59aSgpe3JldHVybiB0aGlzLmNvbmRpdGlvbnMmJiF0aGlzLm8mJih0aGlzLm89dGhpcy50LmNvbmRpdGlvbnNNYXRjaGVyKHRoaXMuY29uZGl0aW9ucykpLHRoaXMub31nZXQgYXN0KCl7Y29uc3QgdD10aGlzLmkoKTtyZXR1cm4gdD90LmFzdDp2b2lkIDB9bWF0Y2hlc0NvbmRpdGlvbnModCl7cmV0dXJuIHRoaXMuY29uZGl0aW9ucz8hdHx8UmEodCk/IXRoaXMuaW52ZXJ0ZWQ6dGhpcy5pKCkodCk6ITB9bWF0Y2hlc0ZpZWxkKHQpe3JldHVybiB0aGlzLmZpZWxkcz90Pyh0aGlzLnV8fCh0aGlzLnU9dGhpcy50LmZpZWxkTWF0Y2hlcih0aGlzLmZpZWxkcykpLHRoaXMudSh0KSk6IXRoaXMuaW52ZXJ0ZWQ6ITB9fWZ1bmN0aW9uIExPKGUsdCl7Y29uc3Qgbj17dmFsdWU6ZSxwcmV2OnQsbmV4dDpudWxsfTtyZXR1cm4gdCYmKHQubmV4dD1uKSxufWZ1bmN0aW9uICRPKGUpe2UubmV4dCYmKGUubmV4dC5wcmV2PWUucHJldiksZS5wcmV2JiYoZS5wcmV2Lm5leHQ9ZS5uZXh0KSxlLm5leHQ9ZS5wcmV2PW51bGx9Y29uc3QgUG09KCk9Pih7cnVsZXM6W10sbWVyZ2VkOiExfSksSW09KCk9Pm5ldyBNYXA7Y2xhc3MgTU97Y29uc3RydWN0b3IodD1bXSxuPXt9KXt0aGlzLmg9ITEsdGhpcy5sPW5ldyBNYXAsdGhpcy5wPXtjb25kaXRpb25zTWF0Y2hlcjpuLmNvbmRpdGlvbnNNYXRjaGVyLGZpZWxkTWF0Y2hlcjpuLmZpZWxkTWF0Y2hlcixyZXNvbHZlQWN0aW9uOm4ucmVzb2x2ZUFjdGlvbnx8SU99LHRoaXMuJD1uLmFueUFjdGlvbnx8Im1hbmFnZSIsdGhpcy5BPW4uYW55U3ViamVjdFR5cGV8fCJhbGwiLHRoaXMubT10LHRoaXMuTT0hIW4uZGV0ZWN0U3ViamVjdFR5cGUsdGhpcy5qPW4uZGV0ZWN0U3ViamVjdFR5cGV8fExiLHRoaXMudih0KX1nZXQgcnVsZXMoKXtyZXR1cm4gdGhpcy5tfWRldGVjdFN1YmplY3RUeXBlKHQpe3JldHVybiBSYSh0KT90OnQ/dGhpcy5qKHQpOnRoaXMuQX11cGRhdGUodCl7Y29uc3Qgbj17cnVsZXM6dCxhYmlsaXR5OnRoaXMsdGFyZ2V0OnRoaXN9O3JldHVybiB0aGlzLl8oInVwZGF0ZSIsbiksdGhpcy5tPXQsdGhpcy52KHQpLHRoaXMuXygidXBkYXRlZCIsbiksdGhpc312KHQpe2NvbnN0IG49bmV3IE1hcDtsZXQgcjtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj0wO28tLSl7Y29uc3Qgcz10Lmxlbmd0aC1vLTEsaT1uZXcgRE8odFtvXSx0aGlzLnAscyksYT0kdShpLmFjdGlvbiksbD0kdShpLnN1YmplY3R8fHRoaXMuQSk7IXRoaXMuaCYmaS5maWVsZHMmJih0aGlzLmg9ITApO2ZvcihsZXQgdT0wO3U8bC5sZW5ndGg7dSsrKXtjb25zdCBjPXVhKG4sbFt1XSxJbSk7cj09PXZvaWQgMCYmKHI9dHlwZW9mIGxbdV0pLHR5cGVvZiBsW3VdIT09ciYmciE9PSJtaXhlZCImJihyPSJtaXhlZCIpO2ZvcihsZXQgZj0wO2Y8YS5sZW5ndGg7ZisrKXVhKGMsYVtmXSxQbSkucnVsZXMucHVzaChpKX19aWYodGhpcy5sPW4sciE9PSJtaXhlZCImJiF0aGlzLk0pe2NvbnN0IG89Q21bcl18fENtLnN0cmluZzt0aGlzLmo9b319cG9zc2libGVSdWxlc0Zvcih0LG49dGhpcy5BKXtpZighUmEobikpdGhyb3cgbmV3IEVycm9yKCcicG9zc2libGVSdWxlc0ZvciIgYWNjZXB0cyBvbmx5IHN1YmplY3QgdHlwZXMgKGkuZS4sIHN0cmluZyBvciBjbGFzcykgYXMgdGhlIDJuZCBwYXJhbWV0ZXInKTtjb25zdCByPXVhKHRoaXMubCxuLEltKSxvPXVhKHIsdCxQbSk7aWYoby5tZXJnZWQpcmV0dXJuIG8ucnVsZXM7Y29uc3Qgcz10IT09dGhpcy4kJiZyLmhhcyh0aGlzLiQpP3IuZ2V0KHRoaXMuJCkucnVsZXM6dm9pZCAwO2xldCBpPU9tKG8ucnVsZXMscyk7cmV0dXJuIG4hPT10aGlzLkEmJihpPU9tKGksdGhpcy5wb3NzaWJsZVJ1bGVzRm9yKHQsdGhpcy5BKSkpLG8ucnVsZXM9aSxvLm1lcmdlZD0hMCxpfXJ1bGVzRm9yKHQsbixyKXtjb25zdCBvPXRoaXMucG9zc2libGVSdWxlc0Zvcih0LG4pO2lmKHImJnR5cGVvZiByIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIlRoZSAzcmQsIGBmaWVsZGAgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIGEgc3RyaW5nLiBTZWUgaHR0cHM6Ly9zdGFsbml5LmdpdGh1Yi5pby9jYXNsL2VuL2FwaS9jYXNsLWFiaWxpdHkjY2FuLW9mLXB1cmUtYWJpbGl0eSBmb3IgZGV0YWlscyIpO3JldHVybiB0aGlzLmg/Uk8obyxzPT5zLm1hdGNoZXNGaWVsZChyKSk6b31hY3Rpb25zRm9yKHQpe2lmKCFSYSh0KSl0aHJvdyBuZXcgRXJyb3IoJyJhY3Rpb25zRm9yIiBhY2NlcHRzIG9ubHkgc3ViamVjdCB0eXBlcyAoaS5lLiwgc3RyaW5nIG9yIGNsYXNzKSBhcyBhIHBhcmFtZXRlcicpO2NvbnN0IG49bmV3IFNldCxyPXRoaXMubC5nZXQodCk7ciYmQXJyYXkuZnJvbShyLmtleXMoKSkuZm9yRWFjaChzPT5uLmFkZChzKSk7Y29uc3Qgbz10IT09dGhpcy5BP3RoaXMubC5nZXQodGhpcy5BKTp2b2lkIDA7cmV0dXJuIG8mJkFycmF5LmZyb20oby5rZXlzKCkpLmZvckVhY2gocz0+bi5hZGQocykpLEFycmF5LmZyb20obil9b24odCxuKXt0aGlzLkY9dGhpcy5GfHxuZXcgTWFwO2NvbnN0IHI9dGhpcy5GLG89ci5nZXQodCl8fG51bGwscz1MTyhuLG8pO3JldHVybiByLnNldCh0LHMpLCgpPT57Y29uc3QgaT1yLmdldCh0KTshcy5uZXh0JiYhcy5wcmV2JiZpPT09cz9yLmRlbGV0ZSh0KTpzPT09aSYmci5zZXQodCxzLnByZXYpLCRPKHMpfX1fKHQsbil7aWYoIXRoaXMuRilyZXR1cm47bGV0IHI9dGhpcy5GLmdldCh0KXx8bnVsbDtjb25zdCBvPVtdO2Zvcig7ciE9PW51bGw7KW8ucHVzaChyLnZhbHVlKSxyPXIucHJldjtmb3IobGV0IHM9MDtzPG8ubGVuZ3RoO3MrKylvW3NdKG4pfX1jbGFzcyAkYiBleHRlbmRzIE1Pe2Nhbih0LG4scil7Y29uc3Qgbz10aGlzLnJlbGV2YW50UnVsZUZvcih0LG4scik7cmV0dXJuISFvJiYhby5pbnZlcnRlZH1yZWxldmFudFJ1bGVGb3IodCxuLHIpe2NvbnN0IG89dGhpcy5kZXRlY3RTdWJqZWN0VHlwZShuKSxzPXRoaXMucnVsZXNGb3IodCxvLHIpO2ZvcihsZXQgaT0wLGE9cy5sZW5ndGg7aTxhO2krKylpZihzW2ldLm1hdGNoZXNDb25kaXRpb25zKG4pKXJldHVybiBzW2ldO3JldHVybiBudWxsfWNhbm5vdCh0LG4scil7cmV0dXJuIXRoaXMuY2FuKHQsbixyKX19Y29uc3QgQk89eyRlcTpVZiwkbmU6Z2IsJGx0Om1iLCRsdGU6aGIsJGd0Ok1sLCRndGU6VmYsJGluOiRsLCRuaW46ZmIsJGFsbDpkYiwkc2l6ZTp1YiwkcmVnZXg6eWIsJG9wdGlvbnM6dmIsJGVsZW1NYXRjaDpjYiwkZXhpc3RzOnBifSxxTz17ZXE6R2YsbmU6a2IsbHQ6VGIsbHRlOkViLGd0OkNiLGd0ZTpBYixpbjpCbCxuaW46UmIsYWxsOk5iLHNpemU6UGIscmVnZXg6SWIsZWxlbU1hdGNoOkRiLGV4aXN0czpPYixhbmQ6U2J9LEZPPVFmKEJPLHFPKSx6Tz0vWy0vXFxeJCs/LigpfFtcXXt9XS9nLGpPPS9cLj9cKitcLj8vZyxWTz0vXCorLyxVTz0vXC4vZztmdW5jdGlvbiBITyhlLHQsbil7Y29uc3Qgcj1uWzBdPT09IioifHxlWzBdPT09Ii4iJiZlW2UubGVuZ3RoLTFdPT09Ii4iPyIrIjoiKiIsbz1lLmluZGV4T2YoIioqIik9PT0tMT8iW14uXSI6Ii4iLHM9ZS5yZXBsYWNlKFVPLCJcXCQmIikucmVwbGFjZShWTyxvK3IpO3JldHVybiB0K2UubGVuZ3RoPT09bi5sZW5ndGg/YCg/OiR7c30pP2A6c31mdW5jdGlvbiBXTyhlLHQsbil7cmV0dXJuIGU9PT0iLiImJihuW3QtMV09PT0iKiJ8fG5bdCsxXT09PSIqIik/ZTpgXFwke2V9YH1mdW5jdGlvbiBHTyhlKXtjb25zdCB0PWUubWFwKHI9PnIucmVwbGFjZSh6TyxXTykucmVwbGFjZShqTyxITykpLG49dC5sZW5ndGg+MT9gKD86JHt0LmpvaW4oInwiKX0pYDp0WzBdO3JldHVybiBuZXcgUmVnRXhwKGBeJHtufSRgKX1jb25zdCBLTz1lPT57bGV0IHQ7cmV0dXJuIG49Pih0eXBlb2YgdD4idSImJih0PWUuZXZlcnkocj0+ci5pbmRleE9mKCIqIik9PT0tMSk/bnVsbDpHTyhlKSksdD09PW51bGw/ZS5pbmRleE9mKG4pIT09LTE6dC50ZXN0KG4pKX07ZnVuY3Rpb24gUU8oZT1bXSx0PXt9KXtyZXR1cm4gbmV3ICRiKGUsT2JqZWN0LmFzc2lnbih7Y29uZGl0aW9uc01hdGNoZXI6Rk8sZmllbGRNYXRjaGVyOktPfSx0KSl9ZnVuY3Rpb24gWU8oZSl7aWYoT2JqZWN0Lmhhc093bihlLCJwb3NzaWJsZVJ1bGVzRm9yIikpcmV0dXJuIGU7Y29uc3QgdD1HKCEwKTtlLm9uKCJ1cGRhdGVkIiwoKT0+e3QudmFsdWU9IXQudmFsdWV9KTtjb25zdCBuPWUucG9zc2libGVSdWxlc0Zvci5iaW5kKGUpO3JldHVybiBlLnBvc3NpYmxlUnVsZXNGb3I9KHIsbyk9Pih0LnZhbHVlPXQudmFsdWUsbihyLG8pKSxlLmNhbj1lLmNhbi5iaW5kKGUpLGUuY2Fubm90PWUuY2Fubm90LmJpbmQoZSksZX1jb25zdCBKTz1TeW1ib2woImFiaWxpdHkiKTtmdW5jdGlvbiBYTyhlLHQsbil7aWYoIXR8fCEodCBpbnN0YW5jZW9mICRiKSl0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSBwcm92aWRlIGFuIEFiaWxpdHkgaW5zdGFuY2UgdG8gYWJpbGl0aWVzUGx1Z2luIHBsdWdpbiIpO2UucHJvdmlkZShKTyxZTyh0KSksbiYmbi51c2VHbG9iYWxQcm9wZXJ0aWVzJiYoZS5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kYWJpbGl0eT10LGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJGNhbj10LmNhbi5iaW5kKHQpKX1jb25zdCBaTz1sdChlPT57Y29uc3QgdD1RTyhbXSk7ZS52dWVBcHAudXNlKFhPLHQse3VzZUdsb2JhbFByb3BlcnRpZXM6ITB9KTtjb25zdCBuPU1mKCk7cmV0dXJuIFBlKCgpPT5bbi5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSxuLmN1cnJlbnRVc2VyPy5pZF0sKFtyLG9dKT0+e2NvbnN0IHM9YkMocixvKTt0LnVwZGF0ZShzKX0se2ltbWVkaWF0ZTohMH0pLHtwcm92aWRlOnthYmlsaXR5OnR9fX0pLGVQPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InNldHRpbmdzLWJpbGxpbmciLGxhYmVsOiJCaWxsaW5nIix0bzoiL3NldHRpbmdzL2JpbGxpbmciLHNlY3Rpb246InNldHRpbmdzIixwcmlvcml0eToxMCxhYmlsaXR5OiJiaWxsaW5nOnJlYWQifV19KX0pLHRQPU9iamVjdC5mcmVlemUoe2xlZnQ6MCx0b3A6MCx3aWR0aDoxNixoZWlnaHQ6MTZ9KSxNYj1PYmplY3QuZnJlZXplKHtyb3RhdGU6MCx2RmxpcDohMSxoRmxpcDohMX0pLFlmPU9iamVjdC5mcmVlemUoey4uLnRQLC4uLk1ifSk7T2JqZWN0LmZyZWV6ZSh7Li4uWWYsYm9keToiIixoaWRkZW46ITF9KTtmdW5jdGlvbiBuUChlKXtjb25zdFt0LG4scixvXT1lO2lmKHIhPT1vKXtjb25zdCBzPU1hdGgubWF4KHIsbyk7cmV0dXJuW3QtKHMtcikvMixuLShzLW8pLzIscyxzXX1yZXR1cm4gZX1jb25zdCByUD0vKC0/WzAtOS5dKlswLTldK1swLTkuXSopL2csb1A9L14tP1swLTkuXSpbMC05XStbMC05Ll0qJC9nO2Z1bmN0aW9uIE11KGUsdCxuKXtpZih0PT09MSlyZXR1cm4gZTtpZihuPW58fDEwMCx0eXBlb2YgZT09Im51bWJlciIpcmV0dXJuIE1hdGguY2VpbChlKnQqbikvbjtpZih0eXBlb2YgZSE9InN0cmluZyIpcmV0dXJuIGU7Y29uc3Qgcj1lLnNwbGl0KHJQKTtpZihyPT09bnVsbHx8IXIubGVuZ3RoKXJldHVybiBlO2NvbnN0IG89W107bGV0IHM9ci5zaGlmdCgpLGk9b1AudGVzdChzKTtmb3IoOzspe2lmKGkpe2NvbnN0IGE9cGFyc2VGbG9hdChzKTtpc05hTihhKT9vLnB1c2gocyk6by5wdXNoKE1hdGguY2VpbChhKnQqbikvbil9ZWxzZSBvLnB1c2gocyk7aWYocz1yLnNoaWZ0KCkscz09PXZvaWQgMClyZXR1cm4gby5qb2luKCIiKTtpPSFpfX1jb25zdCBzUD1PYmplY3QuZnJlZXplKHt3aWR0aDpudWxsLGhlaWdodDpudWxsfSksaVA9T2JqZWN0LmZyZWV6ZSh7Li4uc1AsLi4uTWJ9KTtmdW5jdGlvbiBhUChlLHQ9ImRlZnMiKXtsZXQgbj0iIjtjb25zdCByPWUuaW5kZXhPZigiPCIrdCk7Zm9yKDtyPj0wOyl7Y29uc3Qgbz1lLmluZGV4T2YoIj4iLHIpLHM9ZS5pbmRleE9mKCI8LyIrdCk7aWYobz09PS0xfHxzPT09LTEpYnJlYWs7Y29uc3QgaT1lLmluZGV4T2YoIj4iLHMpO2lmKGk9PT0tMSlicmVhaztuKz1lLnNsaWNlKG8rMSxzKS50cmltKCksZT1lLnNsaWNlKDAscikudHJpbSgpK2Uuc2xpY2UoaSsxKX1yZXR1cm57ZGVmczpuLGNvbnRlbnQ6ZX19ZnVuY3Rpb24gbFAoZSx0KXtyZXR1cm4gZT8iPGRlZnM+IitlKyI8L2RlZnM+Iit0OnR9ZnVuY3Rpb24gY1AoZSx0LG4pe2NvbnN0IHI9YVAoZSk7cmV0dXJuIGxQKHIuZGVmcyx0K3IuY29udGVudCtuKX1jb25zdCB1UD1lPT5lPT09InVuc2V0Inx8ZT09PSJ1bmRlZmluZWQifHxlPT09Im5vbmUiO2Z1bmN0aW9uIGZQKGUsdCl7Y29uc3Qgbj17Li4uWWYsLi4uZX0scj17Li4uaVAsLi4udH0sbz17bGVmdDpuLmxlZnQsdG9wOm4udG9wLHdpZHRoOm4ud2lkdGgsaGVpZ2h0Om4uaGVpZ2h0fTtsZXQgcz1uLmJvZHk7W24scl0uZm9yRWFjaCh5PT57Y29uc3QgXz1bXSx3PXkuaEZsaXAsdj15LnZGbGlwO2xldCBoPXkucm90YXRlO3c/dj9oKz0yOihfLnB1c2goInRyYW5zbGF0ZSgiKyhvLndpZHRoK28ubGVmdCkudG9TdHJpbmcoKSsiICIrKDAtby50b3ApLnRvU3RyaW5nKCkrIikiKSxfLnB1c2goInNjYWxlKC0xIDEpIiksby50b3A9by5sZWZ0PTApOnYmJihfLnB1c2goInRyYW5zbGF0ZSgiKygwLW8ubGVmdCkudG9TdHJpbmcoKSsiICIrKG8uaGVpZ2h0K28udG9wKS50b1N0cmluZygpKyIpIiksXy5wdXNoKCJzY2FsZSgxIC0xKSIpLG8udG9wPW8ubGVmdD0wKTtsZXQgYjtzd2l0Y2goaDwwJiYoaC09TWF0aC5mbG9vcihoLzQpKjQpLGg9aCU0LGgpe2Nhc2UgMTpiPW8uaGVpZ2h0LzIrby50b3AsXy51bnNoaWZ0KCJyb3RhdGUoOTAgIitiLnRvU3RyaW5nKCkrIiAiK2IudG9TdHJpbmcoKSsiKSIpO2JyZWFrO2Nhc2UgMjpfLnVuc2hpZnQoInJvdGF0ZSgxODAgIisoby53aWR0aC8yK28ubGVmdCkudG9TdHJpbmcoKSsiICIrKG8uaGVpZ2h0LzIrby50b3ApLnRvU3RyaW5nKCkrIikiKTticmVhaztjYXNlIDM6Yj1vLndpZHRoLzIrby5sZWZ0LF8udW5zaGlmdCgicm90YXRlKC05MCAiK2IudG9TdHJpbmcoKSsiICIrYi50b1N0cmluZygpKyIpIik7YnJlYWt9aCUyPT09MSYmKG8ubGVmdCE9PW8udG9wJiYoYj1vLmxlZnQsby5sZWZ0PW8udG9wLG8udG9wPWIpLG8ud2lkdGghPT1vLmhlaWdodCYmKGI9by53aWR0aCxvLndpZHRoPW8uaGVpZ2h0LG8uaGVpZ2h0PWIpKSxfLmxlbmd0aCYmKHM9Y1AocywnPGcgdHJhbnNmb3JtPSInK18uam9pbigiICIpKyciPicsIjwvZz4iKSl9KTtjb25zdCBpPXIud2lkdGgsYT1yLmhlaWdodCxsPW8ud2lkdGgsdT1vLmhlaWdodDtsZXQgYyxmO2k9PT1udWxsPyhmPWE9PT1udWxsPyIxZW0iOmE9PT0iYXV0byI/dTphLGM9TXUoZixsL3UpKTooYz1pPT09ImF1dG8iP2w6aSxmPWE9PT1udWxsP011KGMsdS9sKTphPT09ImF1dG8iP3U6YSk7Y29uc3QgZD17fSxwPSh5LF8pPT57dVAoXyl8fChkW3ldPV8udG9TdHJpbmcoKSl9O3AoIndpZHRoIixjKSxwKCJoZWlnaHQiLGYpO2NvbnN0IG09W28ubGVmdCxvLnRvcCxsLHVdO3JldHVybiBkLnZpZXdCb3g9bS5qb2luKCIgIikse2F0dHJpYnV0ZXM6ZCx2aWV3Qm94Om0sYm9keTpzfX1mdW5jdGlvbiBkUChlKXtyZXR1cm4gZS5yZXBsYWNlKC8iL2csIiciKS5yZXBsYWNlKC8lL2csIiUyNSIpLnJlcGxhY2UoLyMvZywiJTIzIikucmVwbGFjZSgvPC9nLCIlM0MiKS5yZXBsYWNlKC8+L2csIiUzRSIpLnJlcGxhY2UoL1xzKy9nLCIgIil9ZnVuY3Rpb24gcFAoZSl7cmV0dXJuImRhdGE6aW1hZ2Uvc3ZnK3htbCwiK2RQKGUpfWZ1bmN0aW9uIG1QKGUpe3JldHVybid1cmwoIicrcFAoZSkrJyIpJ31mdW5jdGlvbiBoUChlLHQpe2xldCBuPWUuaW5kZXhPZigieGxpbms6Iik9PT0tMT8iIjonIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIic7Zm9yKGNvbnN0IHIgaW4gdCluKz0iICIrcisnPSInK3Rbcl0rJyInO3JldHVybic8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyInK24rIj4iK2UrIjwvc3ZnPiJ9ZnVuY3Rpb24gZ1AoZSl7Y29uc3QgdD17ZGlzcGxheToiaW5saW5lLWJsb2NrIix3aWR0aDoiMWVtIixoZWlnaHQ6IjFlbSJ9LG49ZS52YXJOYW1lO3N3aXRjaChlLnBzZXVkb1NlbGVjdG9yJiYodC5jb250ZW50PSInJyIpLGUubW9kZSl7Y2FzZSJiYWNrZ3JvdW5kIjpuJiYodFsiYmFja2dyb3VuZC1pbWFnZSJdPSJ2YXIoLS0iK24rIikiKSx0WyJiYWNrZ3JvdW5kLXJlcGVhdCJdPSJuby1yZXBlYXQiLHRbImJhY2tncm91bmQtc2l6ZSJdPSIxMDAlIDEwMCUiO2JyZWFrO2Nhc2UibWFzayI6dFsiYmFja2dyb3VuZC1jb2xvciJdPSJjdXJyZW50Q29sb3IiLG4mJih0WyJtYXNrLWltYWdlIl09dFsiLXdlYmtpdC1tYXNrLWltYWdlIl09InZhcigtLSIrbisiKSIpLHRbIm1hc2stcmVwZWF0Il09dFsiLXdlYmtpdC1tYXNrLXJlcGVhdCJdPSJuby1yZXBlYXQiLHRbIm1hc2stc2l6ZSJdPXRbIi13ZWJraXQtbWFzay1zaXplIl09IjEwMCUgMTAwJSI7YnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24geVAoZSx0KXtjb25zdCBuPXt9LHI9dC52YXJOYW1lLG89ZlAoZSk7bGV0IHM9by52aWV3Qm94O3NbMl0hPT1zWzNdJiYodC5mb3JjZVNxdWFyZT9zPW5QKHMpOm4ud2lkdGg9TXUoIjFlbSIsc1syXS9zWzNdKSk7Y29uc3QgaT1tUChoUChvLmJvZHkucmVwbGFjZSgvY3VycmVudENvbG9yL2csdC5jb2xvcnx8ImJsYWNrIikse3ZpZXdCb3g6YCR7c1swXX0gJHtzWzFdfSAke3NbMl19ICR7c1szXX1gLHdpZHRoOmAke3NbMl19YCxoZWlnaHQ6YCR7c1szXX1gfSkpO2lmKHIpblsiLS0iK3JdPWk7ZWxzZSBzd2l0Y2godC5tb2RlKXtjYXNlImJhY2tncm91bmQiOm5bImJhY2tncm91bmQtaW1hZ2UiXT1pO2JyZWFrO2Nhc2UibWFzayI6blsibWFzay1pbWFnZSJdPW5bIi13ZWJraXQtbWFzay1pbWFnZSJdPWk7YnJlYWt9cmV0dXJuIG59Y29uc3QgTGM9e3NlbGVjdG9yU3RhcnQ6e2NvbXByZXNzZWQ6InsiLGNvbXBhY3Q6IiB7IixleHBhbmRlZDoiIHsifSxzZWxlY3RvckVuZDp7Y29tcHJlc3NlZDoifSIsY29tcGFjdDpgOyB9CmAsZXhwYW5kZWQ6YDsKfQpgfSxydWxlOntjb21wcmVzc2VkOiJ7a2V5fToiLGNvbXBhY3Q6IiB7a2V5fTogIixleHBhbmRlZDpgCiAge2tleX06IGB9fTtmdW5jdGlvbiB2UChlLHQ9ImV4cGFuZGVkIil7Y29uc3Qgbj1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7Y29uc3R7c2VsZWN0b3I6byxydWxlczpzfT1lW3JdO2xldCBpPShvIGluc3RhbmNlb2YgQXJyYXk/by5qb2luKHQ9PT0iY29tcHJlc3NlZCI/IiwiOiIsICIpOm8pK0xjLnNlbGVjdG9yU3RhcnRbdF0sYT0hMDtmb3IoY29uc3QgbCBpbiBzKWF8fChpKz0iOyIpLGkrPUxjLnJ1bGVbdF0ucmVwbGFjZSgie2tleX0iLGwpK3NbbF0sYT0hMTtpKz1MYy5zZWxlY3RvckVuZFt0XSxuLnB1c2goaSl9cmV0dXJuIG4uam9pbih0PT09ImNvbXByZXNzZWQiPyIiOmAKYCl9ZnVuY3Rpb24gYlAoZSx0PXt9KXtjb25zdCBuPXQuY3VzdG9taXNlP3QuY3VzdG9taXNlKGUuYm9keSk6ZS5ib2R5LHI9dC5tb2RlfHwodC5jb2xvcnx8IW4uaW5jbHVkZXMoImN1cnJlbnRDb2xvciIpPyJiYWNrZ3JvdW5kIjoibWFzayIpO2xldCBvPXQudmFyTmFtZTtvPT09dm9pZCAwJiZyPT09Im1hc2siJiYobz0ic3ZnIik7Y29uc3Qgcz17Li4udCxtb2RlOnIsdmFyTmFtZTpvfTtyPT09ImJhY2tncm91bmQiJiZkZWxldGUgcy52YXJOYW1lO2NvbnN0IGk9ey4uLnQucnVsZXMsLi4uZ1AocyksLi4ueVAoey4uLllmLC4uLmUsYm9keTpufSxzKX07cmV0dXJuIHZQKFt7c2VsZWN0b3I6dC5pY29uU2VsZWN0b3J8fCIuaWNvbiIscnVsZXM6aX1dLHMuZm9ybWF0KX1hc3luYyBmdW5jdGlvbiB3UChlLHQpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG49UHUoZSk7cmV0dXJuIG58fChhd2FpdCBWQShlKS5jYXRjaCgoKT0+bnVsbCksUHUoZSkpfWZ1bmN0aW9uIEJiKGUpe2NvbnN0IHQ9U3QoKS5pY29uLG49KHQuY29sbGVjdGlvbnN8fFtdKS5zb3J0KChyLG8pPT5vLmxlbmd0aC1yLmxlbmd0aCk7cmV0dXJuIE4oKCk9Pntjb25zdCByPWUoKSxvPXIuc3RhcnRzV2l0aCh0LmNzc1NlbGVjdG9yUHJlZml4KT9yLnNsaWNlKHQuY3NzU2VsZWN0b3JQcmVmaXgubGVuZ3RoKTpyLHM9dC5hbGlhc2VzPy5bb118fG87aWYoIXMuaW5jbHVkZXMoIjoiKSl7Y29uc3QgaT1uLmZpbmQoYT0+cy5zdGFydHNXaXRoKGErIi0iKSk7cmV0dXJuIGk/aSsiOiIrcy5zbGljZShpLmxlbmd0aCsxKTpzfXJldHVybiBzfSl9ZnVuY3Rpb24gcWIoZSx0KXtpZihlIT09ITEpcmV0dXJuIGU9PT0hMHx8ZT09PW51bGw/dDplfWxldCBHcztmdW5jdGlvbiBfUChlKXtyZXR1cm4gZS5yZXBsYWNlKC8oW15cdy1dKS9nLCJcXCQxIil9ZnVuY3Rpb24geFAoKXtpZihHcylyZXR1cm4gR3M7R3M9bmV3IFNldDtjb25zdCBlPW49PntpZihuPW4ucmVwbGFjZSgvXjp3aGVyZVwoKC4qKVwpJC8sIiQxIikudHJpbSgpLG4uc3RhcnRzV2l0aCgiLiIpKXJldHVybiBufSx0PW49PntpZihuPy5sZW5ndGgpZm9yKGNvbnN0IHIgb2Ygbil7cj8uY3NzUnVsZXMmJnQoci5jc3NSdWxlcyk7Y29uc3Qgbz1yPy5zZWxlY3RvclRleHQ7aWYodHlwZW9mIG89PSJzdHJpbmciKXtjb25zdCBzPWUobyk7cyYmR3MuYWRkKHMpfX19O2lmKHR5cGVvZiBkb2N1bWVudDwidSIpZm9yKGNvbnN0IG4gb2YgZG9jdW1lbnQuc3R5bGVTaGVldHMpdHJ5e2NvbnN0IHI9bi5jc3NSdWxlc3x8bi5ydWxlczt0KHIpfWNhdGNoe31yZXR1cm4gR3N9Y29uc3QgU1A9c2Uoe25hbWU6Ik51eHRJY29uQ3NzIixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGN1c3RvbWl6ZTp7dHlwZTpbRnVuY3Rpb24sQm9vbGVhbixudWxsXSxkZWZhdWx0Om51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PUJlKCksbj1TdCgpLmljb24scj1OKCgpPT5lLm5hbWU/bi5jc3NTZWxlY3RvclByZWZpeCtlLm5hbWU6IiIpO2Z1bmN0aW9uIG8oYSl7aWYoIWEpcmV0dXJuO2NvbnN0IGw9UHUoYSk7aWYobClyZXR1cm4gbDtjb25zdCB1PXQucGF5bG9hZD8uZGF0YT8uW2FdO2lmKHUpcmV0dXJuIHFmKGEsdSksdX1jb25zdCBzPU4oKCk9PiIuIitfUChyLnZhbHVlKSk7ZnVuY3Rpb24gaShhLGw9ITApe2xldCB1PXMudmFsdWU7bi5jc3NXaGVyZVBzZXVkbyYmKHU9YDp3aGVyZSgke3V9KWApO2NvbnN0IGM9YlAoYSx7aWNvblNlbGVjdG9yOnUsZm9ybWF0OiJjb21wcmVzc2VkIixjdXN0b21pc2U6cWIoZS5jdXN0b21pemUsbi5jdXN0b21pemUpfSk7cmV0dXJuIG4uY3NzTGF5ZXImJmw/YEBsYXllciAke24uY3NzTGF5ZXJ9IHsgJHtjfSB9YDpjfXtjb25zdCBhPXhQKCk7YXN5bmMgZnVuY3Rpb24gbCh1KXtpZihhLmhhcyhzLnZhbHVlKXx8dHlwZW9mIGRvY3VtZW50PiJ1IilyZXR1cm47Y29uc3QgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2MudGV4dENvbnRlbnQ9aSh1KTtjb25zdCBmPWRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3Rvcignc3R5bGUsIGxpbmtbcmVsPSJzdHlsZXNoZWV0Il0nKTtmP2RvY3VtZW50LmhlYWQuaW5zZXJ0QmVmb3JlKGMsZik6ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChjKSxhLmFkZChzLnZhbHVlKX1QZSgoKT0+ZS5uYW1lLCgpPT57aWYoYS5oYXMocy52YWx1ZSkpcmV0dXJuO2NvbnN0IHU9byhlLm5hbWUpO3U/bCh1KTp3UChlLm5hbWUpLnRoZW4oYz0+e2MmJmwoYyl9KS5jYXRjaCgoKT0+bnVsbCl9LHtpbW1lZGlhdGU6ITB9KX1yZXR1cm4oKT0+RmUoInNwYW4iLHtjbGFzczpbImljb25pZnkiLHIudmFsdWVdfSl9fSksa1A9c2Uoe25hbWU6Ik51eHRJY29uU3ZnIixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGN1c3RvbWl6ZTp7dHlwZTpbRnVuY3Rpb24sQm9vbGVhbixudWxsXSxkZWZhdWx0Om51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1CZSgpLHI9U3QoKS5pY29uLG89QmIoKCk9PmUubmFtZSkscz0iaS0iK28udmFsdWU7aWYoby52YWx1ZSl7Y29uc3QgaT1uLnBheWxvYWQuZGF0YVtzXTtpJiZxZihvLnZhbHVlLGkpfXJldHVybigpPT5GZShuTyx7aWNvbjpvLnZhbHVlLHNzcjohMCxjdXN0b21pc2U6cWIoZS5jdXN0b21pemUsci5jdXN0b21pemUpfSx0KX19KSxGYj1zZSh7bmFtZToiTnV4dEljb24iLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sbW9kZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpudWxsfSxzaXplOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0Om51bGx9LGN1c3RvbWl6ZTp7dHlwZTpbRnVuY3Rpb24sQm9vbGVhbixudWxsXSxkZWZhdWx0Om51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1CZSgpLHI9U3QoKS5pY29uLG89QmIoKCk9PmUubmFtZSkscz1OKCgpPT5uLnZ1ZUFwcD8uY29tcG9uZW50KG8udmFsdWUpfHwoKGUubW9kZXx8ci5tb2RlKT09PSJzdmciP2tQOlNQKSksaT1OKCgpPT57Y29uc3QgYT1lLnNpemV8fHIuc2l6ZTtyZXR1cm4gYT97Zm9udFNpemU6TnVtYmVyLmlzTmFOKCthKT9hOmErInB4In06bnVsbH0pO3JldHVybigpPT5GZShzLnZhbHVlLHsuLi5yLmF0dHJzLG5hbWU6by52YWx1ZSxjbGFzczpyLmNsYXNzLHN0eWxlOmkudmFsdWUsY3VzdG9taXplOmUuY3VzdG9taXplfSx0KX19KSxFUD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZGVmYXVsdDpGYn0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtmdW5jdGlvbiBSbShlLHQ9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heCh0LGUpKX1mdW5jdGlvbiBnbihlLHQpe2NvbnN0IG49dHlwZW9mIGU9PSJzdHJpbmciJiYhdD9gJHtlfUNvbnRleHRgOnQscj1TeW1ib2wobik7cmV0dXJuW2k9Pntjb25zdCBhPUtlKHIsaSk7aWYoYXx8YT09PW51bGwpcmV0dXJuIGE7dGhyb3cgbmV3IEVycm9yKGBJbmplY3Rpb24gXGAke3IudG9TdHJpbmcoKX1cYCBub3QgZm91bmQuIENvbXBvbmVudCBtdXN0IGJlIHVzZWQgd2l0aGluICR7QXJyYXkuaXNBcnJheShlKT9gb25lIG9mIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50czogJHtlLmpvaW4oIiwgIil9YDpgXGAke2V9XGBgfWApfSxpPT4oTnQocixpKSxpKV19ZnVuY3Rpb24gcm4oKXtsZXQgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKGU9PW51bGwpcmV0dXJuIG51bGw7Zm9yKDtlIT1udWxsJiZlLnNoYWRvd1Jvb3QhPW51bGwmJmUuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50IT1udWxsOyllPWUuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O3JldHVybiBlfWZ1bmN0aW9uIEpmKGUsdCxuKXtjb25zdCByPW4ub3JpZ2luYWxFdmVudC50YXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmci5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHIuZGlzcGF0Y2hFdmVudChvKX1mdW5jdGlvbiBBaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBUUChlLHQpe3ZhciBuO2NvbnN0IHI9T2UoKTtyZXR1cm4gb24oKCk9PntyLnZhbHVlPWUoKX0sey4uLnQsZmx1c2g6KG49dD8uZmx1c2gpIT09bnVsbCYmbiE9PXZvaWQgMD9uOiJzeW5jIn0pLCRyKHIpfWZ1bmN0aW9uIENQKGUsdCxuPXt9KXtsZXQgcixvLHMsaT0hMDtjb25zdCBhPSgpPT57aT0hMCxzKCl9O1BlKGUsYSx7Zmx1c2g6InN5bmMiLC4uLm59KTtjb25zdCBsPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6dC5nZXQsdT10eXBlb2YgdD09ImZ1bmN0aW9uIj92b2lkIDA6dC5zZXQsYz13bCgoZixkKT0+KG89ZixzPWQse2dldCgpe3JldHVybiBpJiYocj1sKHIpLGk9ITEpLG8oKSxyfSxzZXQocCl7dT8uKHApfX0pKTtyZXR1cm4gYy50cmlnZ2VyPWEsY31mdW5jdGlvbiBHbihlLHQpe3JldHVybiBxcigpPyhScyhlLHQpLCEwKTohMX1mdW5jdGlvbiBocSgpe2NvbnN0IGU9bmV3IFNldCx0PXM9PntlLmRlbGV0ZShzKX07cmV0dXJue29uOnM9PntlLmFkZChzKTtjb25zdCBpPSgpPT50KHMpO3JldHVybiBHbihpKSx7b2ZmOml9fSxvZmY6dCx0cmlnZ2VyOiguLi5zKT0+UHJvbWlzZS5hbGwoQXJyYXkuZnJvbShlKS5tYXAoaT0+aSguLi5zKSkpLGNsZWFyOigpPT57ZS5jbGVhcigpfX19ZnVuY3Rpb24gQVAoZSl7bGV0IHQ9ITEsbjtjb25zdCByPU5pKCEwKTtyZXR1cm4oKC4uLm8pPT4odHx8KG49ci5ydW4oKCk9PmUoLi4ubykpLHQ9ITApLG4pKX1mdW5jdGlvbiBncShlLHQpe3JldHVybiB0PT09ITA/RyhlKTpPZShlKX1jb25zdCBobj10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1Ijt0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZnbG9iYWxUaGlzIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7Y29uc3QgT1A9ZT0+dHlwZW9mIGU8InUiLHpiPWU9PmUhPW51bGwsUFA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxJUD1lPT5QUC5jYWxsKGUpPT09IltvYmplY3QgT2JqZWN0XSIsSW49KCk9Pnt9LE5tPVJQKCk7ZnVuY3Rpb24gUlAoKXt2YXIgZSx0LG47cmV0dXJuIGhuJiYhISghKChlPXdpbmRvdyk9PT1udWxsfHxlPT09dm9pZCAwfHwoZT1lLm5hdmlnYXRvcik9PT1udWxsfHxlPT09dm9pZCAwKSYmZS51c2VyQWdlbnQpJiYoL2lQKD86YWR8aG9uZXxvZCkvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpfHwoKHQ9d2luZG93KT09PW51bGx8fHQ9PT12b2lkIDB8fCh0PXQubmF2aWdhdG9yKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQubWF4VG91Y2hQb2ludHMpPjImJi9pUGFkfE1hY2ludG9zaC8udGVzdCgobj13aW5kb3cpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5uYXZpZ2F0b3IudXNlckFnZW50KSl9ZnVuY3Rpb24gamIoLi4uZSl7aWYoZS5sZW5ndGghPT0xKXJldHVybiB5dCguLi5lKTtjb25zdCB0PWVbMF07cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iPyRyKHdsKCgpPT4oe2dldDp0LHNldDpJbn0pKSk6Ryh0KX1mdW5jdGlvbiBYZihlLHQpe2Z1bmN0aW9uIG4oLi4ucil7cmV0dXJuIG5ldyBQcm9taXNlKChvLHMpPT57UHJvbWlzZS5yZXNvbHZlKGUoKCk9PnQuYXBwbHkodGhpcyxyKSx7Zm46dCx0aGlzQXJnOnRoaXMsYXJnczpyfSkpLnRoZW4obykuY2F0Y2gocyl9KX1yZXR1cm4gbn1jb25zdCBWYj1lPT5lKCk7ZnVuY3Rpb24gVWIoZSx0PXt9KXtsZXQgbixyLG89SW47Y29uc3Qgcz1sPT57Y2xlYXJUaW1lb3V0KGwpLG8oKSxvPUlufTtsZXQgaTtyZXR1cm4gbD0+e2NvbnN0IHU9RWUoZSksYz1FZSh0Lm1heFdhaXQpO3JldHVybiBuJiZzKG4pLHU8PTB8fGMhPT12b2lkIDAmJmM8PTA/KHImJihzKHIpLHI9dm9pZCAwKSxQcm9taXNlLnJlc29sdmUobCgpKSk6bmV3IFByb21pc2UoKGYsZCk9PntvPXQucmVqZWN0T25DYW5jZWw/ZDpmLGk9bCxjJiYhciYmKHI9c2V0VGltZW91dCgoKT0+e24mJnMobikscj12b2lkIDAsZihpKCkpfSxjKSksbj1zZXRUaW1lb3V0KCgpPT57ciYmcyhyKSxyPXZvaWQgMCxmKGwoKSl9LHUpfSl9fWZ1bmN0aW9uIE5QKC4uLmUpe2xldCB0PTAsbixyPSEwLG89SW4scyxpLGEsbCx1OyEkZShlWzBdKSYmdHlwZW9mIGVbMF09PSJvYmplY3QiP3tkZWxheTppLHRyYWlsaW5nOmE9ITAsbGVhZGluZzpsPSEwLHJlamVjdE9uQ2FuY2VsOnU9ITF9PWVbMF06W2ksYT0hMCxsPSEwLHU9ITFdPWU7Y29uc3QgYz0oKT0+e24mJihjbGVhclRpbWVvdXQobiksbj12b2lkIDAsbygpLG89SW4pfTtyZXR1cm4gZD0+e2NvbnN0IHA9RWUoaSksbT1EYXRlLm5vdygpLXQseT0oKT0+cz1kKCk7cmV0dXJuIGMoKSxwPD0wPyh0PURhdGUubm93KCkseSgpKToobT5wPyh0PURhdGUubm93KCksKGx8fCFyKSYmeSgpKTphJiYocz1uZXcgUHJvbWlzZSgoXyx3KT0+e289dT93Ol8sbj1zZXRUaW1lb3V0KCgpPT57dD1EYXRlLm5vdygpLHI9ITAsXyh5KCkpLGMoKX0sTWF0aC5tYXgoMCxwLW0pKX0pKSwhbCYmIW4mJihuPXNldFRpbWVvdXQoKCk9PnI9ITAscCkpLHI9ITEscyl9fWZ1bmN0aW9uIERQKGU9VmIsdD17fSl7Y29uc3R7aW5pdGlhbFN0YXRlOm49ImFjdGl2ZSJ9PXQscj1qYihuPT09ImFjdGl2ZSIpO2Z1bmN0aW9uIG8oKXtyLnZhbHVlPSExfWZ1bmN0aW9uIHMoKXtyLnZhbHVlPSEwfXJldHVybntpc0FjdGl2ZTokcihyKSxwYXVzZTpvLHJlc3VtZTpzLGV2ZW50RmlsdGVyOiguLi5hKT0+e3IudmFsdWUmJmUoLi4uYSl9fX1mdW5jdGlvbiBMUChlKXtsZXQgdDtmdW5jdGlvbiBuKCl7cmV0dXJuIHR8fCh0PWUoKSksdH1yZXR1cm4gbi5yZXNldD1hc3luYygpPT57Y29uc3Qgcj10O3Q9dm9pZCAwLHImJmF3YWl0IHJ9LG59ZnVuY3Rpb24gZGkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19ZnVuY3Rpb24gJFAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybihuPT50W25dfHwodFtuXT1lKG4pKSl9Y29uc3QgTVA9Ly0oXHcpL2csQlA9JFAoZT0+ZS5yZXBsYWNlKE1QLCh0LG4pPT5uP24udG9VcHBlckNhc2UoKToiIikpO2Z1bmN0aW9uIFpmKGUpe3JldHVybiBtdCgpfWZ1bmN0aW9uIGVkKGUpe2lmKCFobilyZXR1cm4gZTtsZXQgdD0wLG4scjtjb25zdCBvPSgpPT57dC09MSxyJiZ0PD0wJiYoci5zdG9wKCksbj12b2lkIDAscj12b2lkIDApfTtyZXR1cm4oKC4uLnMpPT4odCs9MSxyfHwocj1OaSghMCksbj1yLnJ1bigoKT0+ZSguLi5zKSkpLEduKG8pLG4pKX1mdW5jdGlvbiBxUChlLHQpe2lmKHR5cGVvZiBTeW1ib2w8InUiKXtjb25zdCBuPXsuLi5lfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sU3ltYm9sLml0ZXJhdG9yLHtlbnVtZXJhYmxlOiExLHZhbHVlKCl7bGV0IHI9MDtyZXR1cm57bmV4dDooKT0+KHt2YWx1ZTp0W3IrK10sZG9uZTpyPnQubGVuZ3RofSl9fX0pLG59ZWxzZSByZXR1cm4gT2JqZWN0LmFzc2lnbihbLi4udF0sZSl9ZnVuY3Rpb24gRlAoZSl7cmV0dXJuIGJ0KCRlKGUpP25ldyBQcm94eSh7fSx7Z2V0KHQsbixyKXtyZXR1cm4gZyhSZWZsZWN0LmdldChlLnZhbHVlLG4scikpfSxzZXQodCxuLHIpe3JldHVybiAkZShlLnZhbHVlW25dKSYmISRlKHIpP2UudmFsdWVbbl0udmFsdWU9cjplLnZhbHVlW25dPXIsITB9LGRlbGV0ZVByb3BlcnR5KHQsbil7cmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkoZS52YWx1ZSxuKX0saGFzKHQsbil7cmV0dXJuIFJlZmxlY3QuaGFzKGUudmFsdWUsbil9LG93bktleXMoKXtyZXR1cm4gT2JqZWN0LmtleXMoZS52YWx1ZSl9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpe3JldHVybntlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19fSk6ZSl9ZnVuY3Rpb24gSGIoZSl7cmV0dXJuIEZQKE4oZSkpfWZ1bmN0aW9uIHpQKGUsLi4udCl7Y29uc3Qgbj10LmZsYXQoKSxyPW5bMF07cmV0dXJuIEhiKCgpPT5PYmplY3QuZnJvbUVudHJpZXModHlwZW9mIHI9PSJmdW5jdGlvbiI/T2JqZWN0LmVudHJpZXMoRW4oZSkpLmZpbHRlcigoW28sc10pPT4hcihFZShzKSxvKSk6T2JqZWN0LmVudHJpZXMoRW4oZSkpLmZpbHRlcihvPT4hbi5pbmNsdWRlcyhvWzBdKSkpKX1mdW5jdGlvbiBWcihlLC4uLnQpe2NvbnN0IG49dC5mbGF0KCkscj1uWzBdO3JldHVybiBIYigoKT0+T2JqZWN0LmZyb21FbnRyaWVzKHR5cGVvZiByPT0iZnVuY3Rpb24iP09iamVjdC5lbnRyaWVzKEVuKGUpKS5maWx0ZXIoKFtvLHNdKT0+cihFZShzKSxvKSk6bi5tYXAobz0+W28samIoZSxvKV0pKSl9ZnVuY3Rpb24galAoZSx0PTFlNCl7cmV0dXJuIHdsKChuLHIpPT57bGV0IG89RWUoZSkscztjb25zdCBpPSgpPT5zZXRUaW1lb3V0KCgpPT57bz1FZShlKSxyKCl9LEVlKHQpKTtyZXR1cm4gR24oKCk9PntjbGVhclRpbWVvdXQocyl9KSx7Z2V0KCl7cmV0dXJuIG4oKSxvfSxzZXQoYSl7bz1hLHIoKSxjbGVhclRpbWVvdXQocykscz1pKCl9fX0pfWZ1bmN0aW9uIHRkKGUsdD0yMDAsbj17fSl7cmV0dXJuIFhmKFViKHQsbiksZSl9ZnVuY3Rpb24geXEoZSx0PTIwMCxuPXt9KXtjb25zdCByPUcoRWUoZSkpLG89dGQoKCk9PntyLnZhbHVlPWUudmFsdWV9LHQsbik7cmV0dXJuIFBlKGUsKCk9Pm8oKSksVHIocil9ZnVuY3Rpb24gV2IoZSx0PTIwMCxuPSExLHI9ITAsbz0hMSl7cmV0dXJuIFhmKE5QKHQsbixyLG8pLGUpfWZ1bmN0aW9uIHZxKGUsdD0yMDAsbj0hMCxyPSEwKXtpZih0PD0wKXJldHVybiBlO2NvbnN0IG89RyhFZShlKSkscz1XYigoKT0+e28udmFsdWU9ZS52YWx1ZX0sdCxuLHIpO3JldHVybiBQZShlLCgpPT5zKCkpLG99ZnVuY3Rpb24gR2IoZSx0LG49e30pe2NvbnN0e2V2ZW50RmlsdGVyOnI9VmIsLi4ub309bjtyZXR1cm4gUGUoZSxYZihyLHQpLG8pfWZ1bmN0aW9uIEJ1KGUsdCxuPXt9KXtjb25zdHtldmVudEZpbHRlcjpyLGluaXRpYWxTdGF0ZTpvPSJhY3RpdmUiLC4uLnN9PW4se2V2ZW50RmlsdGVyOmkscGF1c2U6YSxyZXN1bWU6bCxpc0FjdGl2ZTp1fT1EUChyLHtpbml0aWFsU3RhdGU6b30pO3JldHVybntzdG9wOkdiKGUsdCx7Li4ucyxldmVudEZpbHRlcjppfSkscGF1c2U6YSxyZXN1bWU6bCxpc0FjdGl2ZTp1fX1mdW5jdGlvbiBicShlLHQsLi4uW25dKXtjb25zdHtmbHVzaDpyPSJzeW5jIixkZWVwOm89ITEsaW1tZWRpYXRlOnM9ITAsZGlyZWN0aW9uOmk9ImJvdGgiLHRyYW5zZm9ybTphPXt9fT1ufHx7fSxsPVtdLHU9Imx0ciJpbiBhJiZhLmx0cnx8KGQ9PmQpLGM9InJ0bCJpbiBhJiZhLnJ0bHx8KGQ9PmQpO3JldHVybihpPT09ImJvdGgifHxpPT09Imx0ciIpJiZsLnB1c2goQnUoZSxkPT57bC5mb3JFYWNoKHA9PnAucGF1c2UoKSksdC52YWx1ZT11KGQpLGwuZm9yRWFjaChwPT5wLnJlc3VtZSgpKX0se2ZsdXNoOnIsZGVlcDpvLGltbWVkaWF0ZTpzfSkpLChpPT09ImJvdGgifHxpPT09InJ0bCIpJiZsLnB1c2goQnUodCxkPT57bC5mb3JFYWNoKHA9PnAucGF1c2UoKSksZS52YWx1ZT1jKGQpLGwuZm9yRWFjaChwPT5wLnJlc3VtZSgpKX0se2ZsdXNoOnIsZGVlcDpvLGltbWVkaWF0ZTpzfSkpLCgpPT57bC5mb3JFYWNoKGQ9PmQuc3RvcCgpKX19ZnVuY3Rpb24gVlAoZSx0KXtaZigpJiZIbyhlLHQpfWZ1bmN0aW9uIHFsKGUsdD0hMCxuKXtaZigpP290KGUsbik6dD9lKCk6aXQoZSl9ZnVuY3Rpb24gVVAoZSx0KXtaZigpJiZwcihlLHQpfWZ1bmN0aW9uIHdxKGUsdD0xZTMsbj17fSl7Y29uc3R7aW1tZWRpYXRlOnI9ITAsaW1tZWRpYXRlQ2FsbGJhY2s6bz0hMX09bjtsZXQgcz1udWxsO2NvbnN0IGk9T2UoITEpO2Z1bmN0aW9uIGEoKXtzJiYoY2xlYXJJbnRlcnZhbChzKSxzPW51bGwpfWZ1bmN0aW9uIGwoKXtpLnZhbHVlPSExLGEoKX1mdW5jdGlvbiB1KCl7Y29uc3QgYz1FZSh0KTtjPD0wfHwoaS52YWx1ZT0hMCxvJiZlKCksYSgpLGkudmFsdWUmJihzPXNldEludGVydmFsKGUsYykpKX1yZXR1cm4gciYmaG4mJnUoKSwoJGUodCl8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKSYmR24oUGUodCwoKT0+e2kudmFsdWUmJmhuJiZ1KCl9KSksR24obCkse2lzQWN0aXZlOlRyKGkpLHBhdXNlOmwscmVzdW1lOnV9fWZ1bmN0aW9uIG5kKGUsdCxuPXt9KXtjb25zdHtpbW1lZGlhdGU6cj0hMCxpbW1lZGlhdGVDYWxsYmFjazpvPSExfT1uLHM9T2UoITEpO2xldCBpO2Z1bmN0aW9uIGEoKXtpJiYoY2xlYXJUaW1lb3V0KGkpLGk9dm9pZCAwKX1mdW5jdGlvbiBsKCl7cy52YWx1ZT0hMSxhKCl9ZnVuY3Rpb24gdSguLi5jKXtvJiZlKCksYSgpLHMudmFsdWU9ITAsaT1zZXRUaW1lb3V0KCgpPT57cy52YWx1ZT0hMSxpPXZvaWQgMCxlKC4uLmMpfSxFZSh0KSl9cmV0dXJuIHImJihzLnZhbHVlPSEwLGhuJiZ1KCkpLEduKGwpLHtpc1BlbmRpbmc6VHIocyksc3RhcnQ6dSxzdG9wOmx9fWZ1bmN0aW9uIEhQKGU9MWUzLHQ9e30pe2NvbnN0e2NvbnRyb2xzOm49ITEsY2FsbGJhY2s6cn09dCxvPW5kKHI/P0luLGUsdCkscz1OKCgpPT4hby5pc1BlbmRpbmcudmFsdWUpO3JldHVybiBuP3tyZWFkeTpzLC4uLm99OnN9ZnVuY3Rpb24gX3EoZSx0LG49e30pe2NvbnN0e2RlYm91bmNlOnI9MCxtYXhXYWl0Om89dm9pZCAwLC4uLnN9PW47cmV0dXJuIEdiKGUsdCx7Li4ucyxldmVudEZpbHRlcjpVYihyLHttYXhXYWl0Om99KX0pfWZ1bmN0aW9uIFdQKGUsdCxuKXtyZXR1cm4gUGUoZSx0LHsuLi5uLGltbWVkaWF0ZTohMH0pfWZ1bmN0aW9uIEdQKGUsdCxuKXtyZXR1cm4gUGUoZSx0LHsuLi5uLG9uY2U6ITB9KX1mdW5jdGlvbiBLUChlLHQsbil7cmV0dXJuIFBlKGUsKG8scyxpKT0+e30sey4uLm4sb25jZTohMX0pfWZ1bmN0aW9uIFFQKGU9e30pe2NvbnN0e2luaGVyaXRBdHRyczp0PSEwfT1lLG49T2UoKSxyPXNlKHtzZXR1cChzLHtzbG90czppfSl7cmV0dXJuKCk9PntuLnZhbHVlPWkuZGVmYXVsdH19fSksbz1zZSh7aW5oZXJpdEF0dHJzOnQscHJvcHM6ZS5wcm9wcyxzZXR1cChzLHthdHRyczppLHNsb3RzOmF9KXtyZXR1cm4oKT0+e3ZhciBsO2lmKCFuLnZhbHVlKXRocm93IG5ldyBFcnJvcigiW1Z1ZVVzZV0gRmFpbGVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgcmV1c2FibGUgdGVtcGxhdGUiKTtjb25zdCB1PShsPW4udmFsdWUpPT09bnVsbHx8bD09PXZvaWQgMD92b2lkIDA6bC5jYWxsKG4sey4uLmUucHJvcHM9PW51bGw/WVAoaSk6cywkc2xvdHM6YX0pO3JldHVybiB0JiZ1Py5sZW5ndGg9PT0xP3VbMF06dX19fSk7cmV0dXJuIHFQKHtkZWZpbmU6cixyZXVzZTpvfSxbcixvXSl9ZnVuY3Rpb24gWVAoZSl7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBpbiBlKXRbQlAobildPWVbbl07cmV0dXJuIHR9Y29uc3QgVnQ9aG4/d2luZG93OnZvaWQgMCxLYj1obj93aW5kb3cubmF2aWdhdG9yOnZvaWQgMDtmdW5jdGlvbiBBdChlKXt2YXIgdDtjb25zdCBuPUVlKGUpO3JldHVybih0PW4/LiRlbCkhPT1udWxsJiZ0IT09dm9pZCAwP3Q6bn1mdW5jdGlvbiBVdCguLi5lKXtjb25zdCB0PShyLG8scyxpKT0+KHIuYWRkRXZlbnRMaXN0ZW5lcihvLHMsaSksKCk9PnIucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLHMsaSkpLG49TigoKT0+e2NvbnN0IHI9ZGkoRWUoZVswXSkpLmZpbHRlcihvPT5vIT1udWxsKTtyZXR1cm4gci5ldmVyeShvPT50eXBlb2YgbyE9InN0cmluZyIpP3I6dm9pZCAwfSk7cmV0dXJuIFdQKCgpPT57dmFyIHIsbztyZXR1cm5bKHI9KG89bi52YWx1ZSk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLm1hcChzPT5BdChzKSkpIT09bnVsbCYmciE9PXZvaWQgMD9yOltWdF0uZmlsdGVyKHM9PnMhPW51bGwpLGRpKEVlKG4udmFsdWU/ZVsxXTplWzBdKSksZGkoZyhuLnZhbHVlP2VbMl06ZVsxXSkpLEVlKG4udmFsdWU/ZVszXTplWzJdKV19LChbcixvLHMsaV0sYSxsKT0+e2lmKCFyPy5sZW5ndGh8fCFvPy5sZW5ndGh8fCFzPy5sZW5ndGgpcmV0dXJuO2NvbnN0IHU9SVAoaSk/ey4uLml9OmksYz1yLmZsYXRNYXAoZj0+by5mbGF0TWFwKGQ9PnMubWFwKHA9PnQoZixkLHAsdSkpKSk7bCgoKT0+e2MuZm9yRWFjaChmPT5mKCkpfSl9LHtmbHVzaDoicG9zdCJ9KX1mdW5jdGlvbiBRYigpe2NvbnN0IGU9T2UoITEpLHQ9bXQoKTtyZXR1cm4gdCYmb3QoKCk9PntlLnZhbHVlPSEwfSx0KSxlfWZ1bmN0aW9uIGppKGUpe2NvbnN0IHQ9UWIoKTtyZXR1cm4gTigoKT0+KHQudmFsdWUsISFlKCkpKX1mdW5jdGlvbiByZChlLHQsbj17fSl7Y29uc3R7d2luZG93OnI9VnQsLi4ub309bjtsZXQgcztjb25zdCBpPWppKCgpPT5yJiYiTXV0YXRpb25PYnNlcnZlciJpbiByKSxhPSgpPT57cyYmKHMuZGlzY29ubmVjdCgpLHM9dm9pZCAwKX0sbD1QZShOKCgpPT57Y29uc3QgZj1kaShFZShlKSkubWFwKEF0KS5maWx0ZXIoemIpO3JldHVybiBuZXcgU2V0KGYpfSksZj0+e2EoKSxpLnZhbHVlJiZmLnNpemUmJihzPW5ldyBNdXRhdGlvbk9ic2VydmVyKHQpLGYuZm9yRWFjaChkPT5zLm9ic2VydmUoZCxvKSkpfSx7aW1tZWRpYXRlOiEwLGZsdXNoOiJwb3N0In0pLHU9KCk9PnM/LnRha2VSZWNvcmRzKCksYz0oKT0+e2woKSxhKCl9O3JldHVybiBHbihjKSx7aXNTdXBwb3J0ZWQ6aSxzdG9wOmMsdGFrZVJlY29yZHM6dX19ZnVuY3Rpb24gSlAoZSx0LG49e30pe2NvbnN0e3dpbmRvdzpyPVZ0LGRvY3VtZW50Om89cj8uZG9jdW1lbnQsZmx1c2g6cz0ic3luYyJ9PW47aWYoIXJ8fCFvKXJldHVybiBJbjtsZXQgaTtjb25zdCBhPWM9PntpPy4oKSxpPWN9LGw9b24oKCk9Pntjb25zdCBjPUF0KGUpO2lmKGMpe2NvbnN0e3N0b3A6Zn09cmQobyxkPT57ZC5tYXAocD0+Wy4uLnAucmVtb3ZlZE5vZGVzXSkuZmxhdCgpLnNvbWUocD0+cD09PWN8fHAuY29udGFpbnMoYykpJiZ0KGQpfSx7d2luZG93OnIsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTthKGYpfX0se2ZsdXNoOnN9KSx1PSgpPT57bCgpLGEoKX07cmV0dXJuIEduKHUpLHV9ZnVuY3Rpb24gWFAoZSl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6dHlwZW9mIGU9PSJzdHJpbmciP3Q9PnQua2V5PT09ZTpBcnJheS5pc0FycmF5KGUpP3Q9PmUuaW5jbHVkZXModC5rZXkpOigpPT4hMH1mdW5jdGlvbiBvZCguLi5lKXtsZXQgdCxuLHI9e307ZS5sZW5ndGg9PT0zPyh0PWVbMF0sbj1lWzFdLHI9ZVsyXSk6ZS5sZW5ndGg9PT0yP3R5cGVvZiBlWzFdPT0ib2JqZWN0Ij8odD0hMCxuPWVbMF0scj1lWzFdKToodD1lWzBdLG49ZVsxXSk6KHQ9ITAsbj1lWzBdKTtjb25zdHt0YXJnZXQ6bz1WdCxldmVudE5hbWU6cz0ia2V5ZG93biIscGFzc2l2ZTppPSExLGRlZHVwZTphPSExfT1yLGw9WFAodCk7cmV0dXJuIFV0KG8scyxjPT57Yy5yZXBlYXQmJkVlKGEpfHxsKGMpJiZuKGMpfSxpKX1mdW5jdGlvbiB4cShlPXt9KXt2YXIgdDtjb25zdHt3aW5kb3c6bj1WdCxkZWVwOnI9ITAsdHJpZ2dlck9uUmVtb3ZhbDpvPSExfT1lLHM9KHQ9ZS5kb2N1bWVudCkhPT1udWxsJiZ0IT09dm9pZCAwP3Q6bj8uZG9jdW1lbnQsaT0oKT0+e2xldCB1PXM/LmFjdGl2ZUVsZW1lbnQ7aWYocilmb3IodmFyIGM7dT8uc2hhZG93Um9vdDspdT11PT1udWxsfHwoYz11LnNoYWRvd1Jvb3QpPT09bnVsbHx8Yz09PXZvaWQgMD92b2lkIDA6Yy5hY3RpdmVFbGVtZW50O3JldHVybiB1fSxhPU9lKCksbD0oKT0+e2EudmFsdWU9aSgpfTtpZihuKXtjb25zdCB1PXtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9O1V0KG4sImJsdXIiLGM9PntjLnJlbGF0ZWRUYXJnZXQ9PT1udWxsJiZsKCl9LHUpLFV0KG4sImZvY3VzIixsLHUpfXJldHVybiBvJiZKUChhLGwse2RvY3VtZW50OnN9KSxsKCksYX1mdW5jdGlvbiBZYihlLHQ9e30pe2NvbnN0e2ltbWVkaWF0ZTpuPSEwLGZwc0xpbWl0OnI9bnVsbCx3aW5kb3c6bz1WdCxvbmNlOnM9ITF9PXQsaT1PZSghMSksYT1OKCgpPT57Y29uc3QgcD1FZShyKTtyZXR1cm4gcD8xZTMvcDpudWxsfSk7bGV0IGw9MCx1PW51bGw7ZnVuY3Rpb24gYyhwKXtpZighaS52YWx1ZXx8IW8pcmV0dXJuO2x8fChsPXApO2NvbnN0IG09cC1sO2lmKGEudmFsdWUmJm08YS52YWx1ZSl7dT1vLnJlcXVlc3RBbmltYXRpb25GcmFtZShjKTtyZXR1cm59aWYobD1wLGUoe2RlbHRhOm0sdGltZXN0YW1wOnB9KSxzKXtpLnZhbHVlPSExLHU9bnVsbDtyZXR1cm59dT1vLnJlcXVlc3RBbmltYXRpb25GcmFtZShjKX1mdW5jdGlvbiBmKCl7IWkudmFsdWUmJm8mJihpLnZhbHVlPSEwLGw9MCx1PW8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGMpKX1mdW5jdGlvbiBkKCl7aS52YWx1ZT0hMSx1IT1udWxsJiZvJiYoby5jYW5jZWxBbmltYXRpb25GcmFtZSh1KSx1PW51bGwpfXJldHVybiBuJiZmKCksR24oZCkse2lzQWN0aXZlOiRyKGkpLHBhdXNlOmQscmVzdW1lOmZ9fWZ1bmN0aW9uIERtKGUsdD17fSl7Y29uc3R7Y29udHJvbHM6bj0hMSxuYXZpZ2F0b3I6cj1LYn09dCxvPWppKCgpPT5yJiYicGVybWlzc2lvbnMiaW4gcikscz1PZSgpLGk9dHlwZW9mIGU9PSJzdHJpbmciP3tuYW1lOmV9OmUsYT1PZSgpLGw9KCk9Pnt2YXIgYyxmO2EudmFsdWU9KGM9KGY9cy52YWx1ZSk9PT1udWxsfHxmPT09dm9pZCAwP3ZvaWQgMDpmLnN0YXRlKSE9PW51bGwmJmMhPT12b2lkIDA/YzoicHJvbXB0In07VXQocywiY2hhbmdlIixsLHtwYXNzaXZlOiEwfSk7Y29uc3QgdT1MUChhc3luYygpPT57aWYoby52YWx1ZSl7aWYoIXMudmFsdWUpdHJ5e3MudmFsdWU9YXdhaXQgci5wZXJtaXNzaW9ucy5xdWVyeShpKX1jYXRjaHtzLnZhbHVlPXZvaWQgMH1maW5hbGx5e2woKX1pZihuKXJldHVybiBqZShzLnZhbHVlKX19KTtyZXR1cm4gdSgpLG4/e3N0YXRlOmEsaXNTdXBwb3J0ZWQ6byxxdWVyeTp1fTphfWZ1bmN0aW9uIFNxKGU9e30pe2NvbnN0e25hdmlnYXRvcjp0PUtiLHJlYWQ6bj0hMSxzb3VyY2U6cixjb3BpZWREdXJpbmc6bz0xNTAwLGxlZ2FjeTpzPSExfT1lLGk9amkoKCk9PnQmJiJjbGlwYm9hcmQiaW4gdCksYT1EbSgiY2xpcGJvYXJkLXJlYWQiKSxsPURtKCJjbGlwYm9hcmQtd3JpdGUiKSx1PU4oKCk9PmkudmFsdWV8fHMpLGM9T2UoIiIpLGY9T2UoITEpLGQ9bmQoKCk9PmYudmFsdWU9ITEsbyx7aW1tZWRpYXRlOiExfSk7YXN5bmMgZnVuY3Rpb24gcCgpe2xldCB2PSEoaS52YWx1ZSYmdyhhLnZhbHVlKSk7aWYoIXYpdHJ5e2MudmFsdWU9YXdhaXQgdC5jbGlwYm9hcmQucmVhZFRleHQoKX1jYXRjaHt2PSEwfXYmJihjLnZhbHVlPV8oKSl9dS52YWx1ZSYmbiYmVXQoWyJjb3B5IiwiY3V0Il0scCx7cGFzc2l2ZTohMH0pO2FzeW5jIGZ1bmN0aW9uIG0odj1FZShyKSl7aWYodS52YWx1ZSYmdiE9bnVsbCl7bGV0IGg9IShpLnZhbHVlJiZ3KGwudmFsdWUpKTtpZighaCl0cnl7YXdhaXQgdC5jbGlwYm9hcmQud3JpdGVUZXh0KHYpfWNhdGNoe2g9ITB9aCYmeSh2KSxjLnZhbHVlPXYsZi52YWx1ZT0hMCxkLnN0YXJ0KCl9fWZ1bmN0aW9uIHkodil7Y29uc3QgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2gudmFsdWU9dixoLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaC5zdHlsZS5vcGFjaXR5PSIwIixoLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGgpLGguc2VsZWN0KCksZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKSxoLnJlbW92ZSgpfWZ1bmN0aW9uIF8oKXt2YXIgdixoLGI7cmV0dXJuKHY9KGg9ZG9jdW1lbnQpPT09bnVsbHx8aD09PXZvaWQgMHx8KGI9aC5nZXRTZWxlY3Rpb24pPT09bnVsbHx8Yj09PXZvaWQgMHx8KGI9Yi5jYWxsKGgpKT09PW51bGx8fGI9PT12b2lkIDA/dm9pZCAwOmIudG9TdHJpbmcoKSkhPT1udWxsJiZ2IT09dm9pZCAwP3Y6IiJ9ZnVuY3Rpb24gdyh2KXtyZXR1cm4gdj09PSJncmFudGVkInx8dj09PSJwcm9tcHQifXJldHVybntpc1N1cHBvcnRlZDp1LHRleHQ6JHIoYyksY29waWVkOiRyKGYpLGNvcHk6bX19ZnVuY3Rpb24gWlAoZSl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWNvbnN0IGZhPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30sZGE9Il9fdnVldXNlX3Nzcl9oYW5kbGVyc19fIixlST10SSgpO2Z1bmN0aW9uIHRJKCl7cmV0dXJuIGRhIGluIGZhfHwoZmFbZGFdPWZhW2RhXXx8e30pLGZhW2RhXX1mdW5jdGlvbiBuSShlLHQpe3JldHVybiBlSVtlXXx8dH1mdW5jdGlvbiBySShlKXtyZXR1cm4gZT09bnVsbD8iYW55IjplIGluc3RhbmNlb2YgU2V0PyJzZXQiOmUgaW5zdGFuY2VvZiBNYXA/Im1hcCI6ZSBpbnN0YW5jZW9mIERhdGU/ImRhdGUiOnR5cGVvZiBlPT0iYm9vbGVhbiI/ImJvb2xlYW4iOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjp0eXBlb2YgZT09Im9iamVjdCI/Im9iamVjdCI6TnVtYmVyLmlzTmFOKGUpPyJhbnkiOiJudW1iZXIifWNvbnN0IG9JPXtib29sZWFuOntyZWFkOmU9PmU9PT0idHJ1ZSIsd3JpdGU6ZT0+U3RyaW5nKGUpfSxvYmplY3Q6e3JlYWQ6ZT0+SlNPTi5wYXJzZShlKSx3cml0ZTplPT5KU09OLnN0cmluZ2lmeShlKX0sbnVtYmVyOntyZWFkOmU9Pk51bWJlci5wYXJzZUZsb2F0KGUpLHdyaXRlOmU9PlN0cmluZyhlKX0sYW55OntyZWFkOmU9PmUsd3JpdGU6ZT0+U3RyaW5nKGUpfSxzdHJpbmc6e3JlYWQ6ZT0+ZSx3cml0ZTplPT5TdHJpbmcoZSl9LG1hcDp7cmVhZDplPT5uZXcgTWFwKEpTT04ucGFyc2UoZSkpLHdyaXRlOmU9PkpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oZS5lbnRyaWVzKCkpKX0sc2V0OntyZWFkOmU9Pm5ldyBTZXQoSlNPTi5wYXJzZShlKSksd3JpdGU6ZT0+SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShlKSl9LGRhdGU6e3JlYWQ6ZT0+bmV3IERhdGUoZSksd3JpdGU6ZT0+ZS50b0lTT1N0cmluZygpfX0sTG09InZ1ZXVzZS1zdG9yYWdlIjtmdW5jdGlvbiBrcShlLHQsbixyPXt9KXt2YXIgbztjb25zdHtmbHVzaDpzPSJwcmUiLGRlZXA6aT0hMCxsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzOmE9ITAsd3JpdGVEZWZhdWx0czpsPSEwLG1lcmdlRGVmYXVsdHM6dT0hMSxzaGFsbG93OmMsd2luZG93OmY9VnQsZXZlbnRGaWx0ZXI6ZCxvbkVycm9yOnA9TD0+e30saW5pdE9uTW91bnRlZDptfT1yLHk9KGM/T2U6RykodHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOnQpLF89TigoKT0+RWUoZSkpO2lmKCFuKXRyeXtuPW5JKCJnZXREZWZhdWx0U3RvcmFnZSIsKCk9PlZ0Py5sb2NhbFN0b3JhZ2UpKCl9Y2F0Y2goTCl7cChMKX1pZighbilyZXR1cm4geTtjb25zdCB3PUVlKHQpLHY9ckkodyksaD0obz1yLnNlcmlhbGl6ZXIpIT09bnVsbCYmbyE9PXZvaWQgMD9vOm9JW3ZdLHtwYXVzZTpiLHJlc3VtZTp4fT1CdSh5LEw9PlAoTCkse2ZsdXNoOnMsZGVlcDppLGV2ZW50RmlsdGVyOmR9KTtQZShfLCgpPT5EKCkse2ZsdXNoOnN9KTtsZXQgUz0hMTtjb25zdCBrPUw9PnttJiYhU3x8RChMKX0sVD1MPT57bSYmIVN8fFcoTCl9O2YmJmEmJihuIGluc3RhbmNlb2YgU3RvcmFnZT9VdChmLCJzdG9yYWdlIixrLHtwYXNzaXZlOiEwfSk6VXQoZixMbSxUKSksbT9xbCgoKT0+e1M9ITAsRCgpfSk6RCgpO2Z1bmN0aW9uIEMoTCxqKXtpZihmKXtjb25zdCBJPXtrZXk6Xy52YWx1ZSxvbGRWYWx1ZTpMLG5ld1ZhbHVlOmosc3RvcmFnZUFyZWE6bn07Zi5kaXNwYXRjaEV2ZW50KG4gaW5zdGFuY2VvZiBTdG9yYWdlP25ldyBTdG9yYWdlRXZlbnQoInN0b3JhZ2UiLEkpOm5ldyBDdXN0b21FdmVudChMbSx7ZGV0YWlsOkl9KSl9fWZ1bmN0aW9uIFAoTCl7dHJ5e2NvbnN0IGo9bi5nZXRJdGVtKF8udmFsdWUpO2lmKEw9PW51bGwpQyhqLG51bGwpLG4ucmVtb3ZlSXRlbShfLnZhbHVlKTtlbHNle2NvbnN0IEk9aC53cml0ZShMKTtqIT09SSYmKG4uc2V0SXRlbShfLnZhbHVlLEkpLEMoaixJKSl9fWNhdGNoKGope3Aoail9fWZ1bmN0aW9uIEYoTCl7Y29uc3Qgaj1MP0wubmV3VmFsdWU6bi5nZXRJdGVtKF8udmFsdWUpO2lmKGo9PW51bGwpcmV0dXJuIGwmJnchPW51bGwmJm4uc2V0SXRlbShfLnZhbHVlLGgud3JpdGUodykpLHc7aWYoIUwmJnUpe2NvbnN0IEk9aC5yZWFkKGopO3JldHVybiB0eXBlb2YgdT09ImZ1bmN0aW9uIj91KEksdyk6dj09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShJKT97Li4udywuLi5JfTpJfWVsc2UgcmV0dXJuIHR5cGVvZiBqIT0ic3RyaW5nIj9qOmgucmVhZChqKX1mdW5jdGlvbiBEKEwpe2lmKCEoTCYmTC5zdG9yYWdlQXJlYSE9PW4pKXtpZihMJiZMLmtleT09bnVsbCl7eS52YWx1ZT13O3JldHVybn1pZighKEwmJkwua2V5IT09Xy52YWx1ZSkpe2IoKTt0cnl7Y29uc3Qgaj1oLndyaXRlKHkudmFsdWUpOyhMPT09dm9pZCAwfHxMPy5uZXdWYWx1ZSE9PWopJiYoeS52YWx1ZT1GKEwpKX1jYXRjaChqKXtwKGopfWZpbmFsbHl7TD9pdCh4KTp4KCl9fX19ZnVuY3Rpb24gVyhMKXtEKEwuZGV0YWlsKX1yZXR1cm4geX1mdW5jdGlvbiBzSShlKXtjb25zdCB0PW10KCksbj1DUCgoKT0+bnVsbCwoKT0+dC5wcm94eS4kZWwpO3JldHVybiB4bChuLnRyaWdnZXIpLG90KG4udHJpZ2dlciksbn1mdW5jdGlvbiBKYihlLHQsbj17fSl7Y29uc3R7d2luZG93OnI9VnQsLi4ub309bjtsZXQgcztjb25zdCBpPWppKCgpPT5yJiYiUmVzaXplT2JzZXJ2ZXIiaW4gciksYT0oKT0+e3MmJihzLmRpc2Nvbm5lY3QoKSxzPXZvaWQgMCl9LGw9UGUoTigoKT0+e2NvbnN0IGM9RWUoZSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYyk/Yy5tYXAoZj0+QXQoZikpOltBdChjKV19KSxjPT57aWYoYSgpLGkudmFsdWUmJnIpe3M9bmV3IFJlc2l6ZU9ic2VydmVyKHQpO2Zvcihjb25zdCBmIG9mIGMpZiYmcy5vYnNlcnZlKGYsbyl9fSx7aW1tZWRpYXRlOiEwLGZsdXNoOiJwb3N0In0pLHU9KCk9PnthKCksbCgpfTtyZXR1cm4gR24odSkse2lzU3VwcG9ydGVkOmksc3RvcDp1fX1mdW5jdGlvbiBpSShlLHQsbj17fSl7Y29uc3R7cm9vdDpyLHJvb3RNYXJnaW46byx0aHJlc2hvbGQ6cz0wLHdpbmRvdzppPVZ0LGltbWVkaWF0ZTphPSEwfT1uLGw9amkoKCk9PmkmJiJJbnRlcnNlY3Rpb25PYnNlcnZlciJpbiBpKSx1PU4oKCk9PmRpKEVlKGUpKS5tYXAoQXQpLmZpbHRlcih6YikpO2xldCBjPUluO2NvbnN0IGY9T2UoYSksZD1sLnZhbHVlP1BlKCgpPT5bdS52YWx1ZSxBdChyKSxFZShvKSxmLnZhbHVlXSwoW20seSxfXSk9PntpZihjKCksIWYudmFsdWV8fCFtLmxlbmd0aClyZXR1cm47Y29uc3Qgdz1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodCx7cm9vdDpBdCh5KSxyb290TWFyZ2luOl8sdGhyZXNob2xkOnN9KTttLmZvckVhY2godj0+diYmdy5vYnNlcnZlKHYpKSxjPSgpPT57dy5kaXNjb25uZWN0KCksYz1Jbn19LHtpbW1lZGlhdGU6YSxmbHVzaDoicG9zdCJ9KTpJbixwPSgpPT57YygpLGQoKSxmLnZhbHVlPSExfTtyZXR1cm4gR24ocCkse2lzU3VwcG9ydGVkOmwsaXNBY3RpdmU6ZixwYXVzZSgpe2MoKSxmLnZhbHVlPSExfSxyZXN1bWUoKXtmLnZhbHVlPSEwfSxzdG9wOnB9fWZ1bmN0aW9uIGFJKGUsdD17fSl7Y29uc3R7d2luZG93Om49VnQsc2Nyb2xsVGFyZ2V0OnIsdGhyZXNob2xkOm89MCxyb290TWFyZ2luOnMsb25jZTppPSExLGluaXRpYWxWYWx1ZTphPSExfT10LGw9T2UoYSkse3N0b3A6dX09aUkoZSxjPT57bGV0IGY9bC52YWx1ZSxkPTA7Zm9yKGNvbnN0IHAgb2YgYylwLnRpbWU+PWQmJihkPXAudGltZSxmPXAuaXNJbnRlcnNlY3RpbmcpO2wudmFsdWU9ZixpJiZHUChsLCgpPT57dSgpfSl9LHtyb290OnIsd2luZG93Om4sdGhyZXNob2xkOm8scm9vdE1hcmdpbjpzfSk7cmV0dXJuIGx9Y29uc3QgS3M9bmV3IE1hcDtmdW5jdGlvbiBFcShlKXtjb25zdCB0PXFyKCk7ZnVuY3Rpb24gbihhKXt2YXIgbDtjb25zdCB1PUtzLmdldChlKXx8bmV3IFNldDt1LmFkZChhKSxLcy5zZXQoZSx1KTtjb25zdCBjPSgpPT5vKGEpO3JldHVybiB0PT1udWxsfHwobD10LmNsZWFudXBzKT09PW51bGx8fGw9PT12b2lkIDB8fGwucHVzaChjKSxjfWZ1bmN0aW9uIHIoYSl7ZnVuY3Rpb24gbCguLi51KXtvKGwpLGEoLi4udSl9cmV0dXJuIG4obCl9ZnVuY3Rpb24gbyhhKXtjb25zdCBsPUtzLmdldChlKTtsJiYobC5kZWxldGUoYSksbC5zaXplfHxzKCkpfWZ1bmN0aW9uIHMoKXtLcy5kZWxldGUoZSl9ZnVuY3Rpb24gaShhLGwpe3ZhciB1Oyh1PUtzLmdldChlKSk9PT1udWxsfHx1PT09dm9pZCAwfHx1LmZvckVhY2goYz0+YyhhLGwpKX1yZXR1cm57b246bixvbmNlOnIsb2ZmOm8sZW1pdDppLHJlc2V0OnN9fWZ1bmN0aW9uIGxJKGUpe3JldHVybiB0eXBlb2YgV2luZG93PCJ1IiYmZSBpbnN0YW5jZW9mIFdpbmRvdz9lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDp0eXBlb2YgRG9jdW1lbnQ8InUiJiZlIGluc3RhbmNlb2YgRG9jdW1lbnQ/ZS5kb2N1bWVudEVsZW1lbnQ6ZX1jb25zdCAkbT0xO2Z1bmN0aW9uIGNJKGUsdD17fSl7Y29uc3R7dGhyb3R0bGU6bj0wLGlkbGU6cj0yMDAsb25TdG9wOm89SW4sb25TY3JvbGw6cz1JbixvZmZzZXQ6aT17bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjB9LG9ic2VydmU6YT17bXV0YXRpb246ITF9LGV2ZW50TGlzdGVuZXJPcHRpb25zOmw9e2NhcHR1cmU6ITEscGFzc2l2ZTohMH0sYmVoYXZpb3I6dT0iYXV0byIsd2luZG93OmM9VnQsb25FcnJvcjpmPUM9Pnt9fT10LGQ9dHlwZW9mIGE9PSJib29sZWFuIj97bXV0YXRpb246YX06YSxwPU9lKDApLG09T2UoMCkseT1OKHtnZXQoKXtyZXR1cm4gcC52YWx1ZX0sc2V0KEMpe3coQyx2b2lkIDApfX0pLF89Tih7Z2V0KCl7cmV0dXJuIG0udmFsdWV9LHNldChDKXt3KHZvaWQgMCxDKX19KTtmdW5jdGlvbiB3KEMsUCl7dmFyIEYsRCxXLEw7aWYoIWMpcmV0dXJuO2NvbnN0IGo9RWUoZSk7aWYoIWopcmV0dXJuOyhGPWogaW5zdGFuY2VvZiBEb2N1bWVudD9jLmRvY3VtZW50LmJvZHk6aik9PT1udWxsfHxGPT09dm9pZCAwfHxGLnNjcm9sbFRvKHt0b3A6KEQ9RWUoUCkpIT09bnVsbCYmRCE9PXZvaWQgMD9EOl8udmFsdWUsbGVmdDooVz1FZShDKSkhPT1udWxsJiZXIT09dm9pZCAwP1c6eS52YWx1ZSxiZWhhdmlvcjpFZSh1KX0pO2NvbnN0IEk9KGo9PW51bGx8fChMPWouZG9jdW1lbnQpPT09bnVsbHx8TD09PXZvaWQgMD92b2lkIDA6TC5kb2N1bWVudEVsZW1lbnQpfHxqPy5kb2N1bWVudEVsZW1lbnR8fGo7eSE9bnVsbCYmKHAudmFsdWU9SS5zY3JvbGxMZWZ0KSxfIT1udWxsJiYobS52YWx1ZT1JLnNjcm9sbFRvcCl9Y29uc3Qgdj1PZSghMSksaD1idCh7bGVmdDohMCxyaWdodDohMSx0b3A6ITAsYm90dG9tOiExfSksYj1idCh7bGVmdDohMSxyaWdodDohMSx0b3A6ITEsYm90dG9tOiExfSkseD1DPT57di52YWx1ZSYmKHYudmFsdWU9ITEsYi5sZWZ0PSExLGIucmlnaHQ9ITEsYi50b3A9ITEsYi5ib3R0b209ITEsbyhDKSl9LFM9dGQoeCxuK3IpLGs9Qz0+e3ZhciBQO2lmKCFjKXJldHVybjtjb25zdCBGPShDPT1udWxsfHwoUD1DLmRvY3VtZW50KT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAuZG9jdW1lbnRFbGVtZW50KXx8Qz8uZG9jdW1lbnRFbGVtZW50fHxBdChDKSx7ZGlzcGxheTpELGZsZXhEaXJlY3Rpb246VyxkaXJlY3Rpb246TH09Yy5nZXRDb21wdXRlZFN0eWxlKEYpLGo9TD09PSJydGwiPy0xOjEsST1GLnNjcm9sbExlZnQ7Yi5sZWZ0PUk8cC52YWx1ZSxiLnJpZ2h0PUk+cC52YWx1ZTtjb25zdCBWPU1hdGguYWJzKEkqaik8PShpLmxlZnR8fDApLEI9TWF0aC5hYnMoSSpqKStGLmNsaWVudFdpZHRoPj1GLnNjcm9sbFdpZHRoLShpLnJpZ2h0fHwwKS0kbTtEPT09ImZsZXgiJiZXPT09InJvdy1yZXZlcnNlIj8oaC5sZWZ0PUIsaC5yaWdodD1WKTooaC5sZWZ0PVYsaC5yaWdodD1CKSxwLnZhbHVlPUk7bGV0IGllPUYuc2Nyb2xsVG9wO0M9PT1jLmRvY3VtZW50JiYhaWUmJihpZT1jLmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSxiLnRvcD1pZTxtLnZhbHVlLGIuYm90dG9tPWllPm0udmFsdWU7Y29uc3QgbmU9TWF0aC5hYnMoaWUpPD0oaS50b3B8fDApLFZlPU1hdGguYWJzKGllKStGLmNsaWVudEhlaWdodD49Ri5zY3JvbGxIZWlnaHQtKGkuYm90dG9tfHwwKS0kbTtEPT09ImZsZXgiJiZXPT09ImNvbHVtbi1yZXZlcnNlIj8oaC50b3A9VmUsaC5ib3R0b209bmUpOihoLnRvcD1uZSxoLmJvdHRvbT1WZSksbS52YWx1ZT1pZX0sVD1DPT57dmFyIFA7YyYmKGsoKFA9Qy50YXJnZXQuZG9jdW1lbnRFbGVtZW50KSE9PW51bGwmJlAhPT12b2lkIDA/UDpDLnRhcmdldCksdi52YWx1ZT0hMCxTKEMpLHMoQykpfTtyZXR1cm4gVXQoZSwic2Nyb2xsIixuP1diKFQsbiwhMCwhMSk6VCxsKSxxbCgoKT0+e3RyeXtjb25zdCBDPUVlKGUpO2lmKCFDKXJldHVybjtrKEMpfWNhdGNoKEMpe2YoQyl9fSksZD8ubXV0YXRpb24mJmUhPW51bGwmJmUhPT1jJiZlIT09ZG9jdW1lbnQmJnJkKGUsKCk9Pntjb25zdCBDPUVlKGUpO0MmJmsoQyl9LHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksVXQoZSwic2Nyb2xsZW5kIix4LGwpLHt4OnkseTpfLGlzU2Nyb2xsaW5nOnYsYXJyaXZlZFN0YXRlOmgsZGlyZWN0aW9uczpiLG1lYXN1cmUoKXtjb25zdCBDPUVlKGUpO2MmJkMmJmsoQyl9fX1mdW5jdGlvbiBUcShlLHQsbj17fSl7dmFyIHI7Y29uc3R7ZGlyZWN0aW9uOm89ImJvdHRvbSIsaW50ZXJ2YWw6cz0xMDAsY2FuTG9hZE1vcmU6aT0oKT0+ITB9PW4sYT1idChjSShlLHsuLi5uLG9mZnNldDp7W29dOihyPW4uZGlzdGFuY2UpIT09bnVsbCYmciE9PXZvaWQgMD9yOjAsLi4ubi5vZmZzZXR9fSkpLGw9RygpLHU9TigoKT0+ISFsLnZhbHVlKSxjPU4oKCk9PmxJKEVlKGUpKSksZj1hSShjKSxkPU4oKCk9PmMudmFsdWU/aShjLnZhbHVlKTohMSk7ZnVuY3Rpb24gcCgpe2lmKGEubWVhc3VyZSgpLCFjLnZhbHVlfHwhZi52YWx1ZXx8IWQudmFsdWV8fGwudmFsdWUpcmV0dXJuO2NvbnN0e3Njcm9sbEhlaWdodDptLGNsaWVudEhlaWdodDp5LHNjcm9sbFdpZHRoOl8sY2xpZW50V2lkdGg6d309Yy52YWx1ZSx2PW89PT0iYm90dG9tInx8bz09PSJ0b3AiP208PXk6Xzw9dzsoYS5hcnJpdmVkU3RhdGVbb118fHYpJiYobC52YWx1ZT1Qcm9taXNlLmFsbChbdChhKSxuZXcgUHJvbWlzZShoPT5zZXRUaW1lb3V0KGgscykpXSkuZmluYWxseSgoKT0+e2wudmFsdWU9bnVsbCxpdCgoKT0+cCgpKX0pKX1yZXR1cm4gVVAoUGUoKCk9PlthLmFycml2ZWRTdGF0ZVtvXSxmLnZhbHVlLGQudmFsdWVdLHAse2ltbWVkaWF0ZTohMCxmbHVzaDoicG9zdCJ9KSkse2lzTG9hZGluZzp1LHJlc2V0KCl7aXQoKCk9PnAoKSl9fX1jb25zdCB1ST17cGFnZTplPT5bZS5wYWdlWCxlLnBhZ2VZXSxjbGllbnQ6ZT0+W2UuY2xpZW50WCxlLmNsaWVudFldLHNjcmVlbjplPT5bZS5zY3JlZW5YLGUuc2NyZWVuWV0sbW92ZW1lbnQ6ZT0+ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQ/W2UubW92ZW1lbnRYLGUubW92ZW1lbnRZXTpudWxsfTtmdW5jdGlvbiBmSShlPXt9KXtjb25zdHt0eXBlOnQ9InBhZ2UiLHRvdWNoOm49ITAscmVzZXRPblRvdWNoRW5kczpyPSExLGluaXRpYWxWYWx1ZTpvPXt4OjAseTowfSx3aW5kb3c6cz1WdCx0YXJnZXQ6aT1zLHNjcm9sbDphPSEwLGV2ZW50RmlsdGVyOmx9PWU7bGV0IHU9bnVsbCxjPTAsZj0wO2NvbnN0IGQ9T2Uoby54KSxwPU9lKG8ueSksbT1PZShudWxsKSx5PXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6dUlbdF0sXz1rPT57Y29uc3QgVD15KGspO3U9ayxUJiYoW2QudmFsdWUscC52YWx1ZV09VCxtLnZhbHVlPSJtb3VzZSIpLHMmJihjPXMuc2Nyb2xsWCxmPXMuc2Nyb2xsWSl9LHc9az0+e2lmKGsudG91Y2hlcy5sZW5ndGg+MCl7Y29uc3QgVD15KGsudG91Y2hlc1swXSk7VCYmKFtkLnZhbHVlLHAudmFsdWVdPVQsbS52YWx1ZT0idG91Y2giKX19LHY9KCk9PntpZighdXx8IXMpcmV0dXJuO2NvbnN0IGs9eSh1KTt1IGluc3RhbmNlb2YgTW91c2VFdmVudCYmayYmKGQudmFsdWU9a1swXStzLnNjcm9sbFgtYyxwLnZhbHVlPWtbMV0rcy5zY3JvbGxZLWYpfSxoPSgpPT57ZC52YWx1ZT1vLngscC52YWx1ZT1vLnl9LGI9bD9rPT5sKCgpPT5fKGspLHt9KTprPT5fKGspLHg9bD9rPT5sKCgpPT53KGspLHt9KTprPT53KGspLFM9bD8oKT0+bCgoKT0+digpLHt9KTooKT0+digpO2lmKGkpe2NvbnN0IGs9e3Bhc3NpdmU6ITB9O1V0KGksWyJtb3VzZW1vdmUiLCJkcmFnb3ZlciJdLGIsayksbiYmdCE9PSJtb3ZlbWVudCImJihVdChpLFsidG91Y2hzdGFydCIsInRvdWNobW92ZSJdLHgsayksciYmVXQoaSwidG91Y2hlbmQiLGgsaykpLGEmJnQ9PT0icGFnZSImJlV0KHMsInNjcm9sbCIsUyxrKX1yZXR1cm57eDpkLHk6cCxzb3VyY2VUeXBlOm19fWZ1bmN0aW9uIENxKGUsdD17fSl7Y29uc3R7d2luZG93UmVzaXplOm49ITAsd2luZG93U2Nyb2xsOnI9ITAsaGFuZGxlT3V0c2lkZTpvPSEwLHdpbmRvdzpzPVZ0fT10LGk9dC50eXBlfHwicGFnZSIse3g6YSx5Omwsc291cmNlVHlwZTp1fT1mSSh0KSxjPU9lKGU/P3M/LmRvY3VtZW50LmJvZHkpLGY9T2UoMCksZD1PZSgwKSxwPU9lKDApLG09T2UoMCkseT1PZSgwKSxfPU9lKDApLHc9T2UoITApO2Z1bmN0aW9uIHYoKXtpZighcylyZXR1cm47Y29uc3QgeD1BdChjKTtpZighKCF4fHwhKHggaW5zdGFuY2VvZiBFbGVtZW50KSkpZm9yKGNvbnN0IFMgb2YgeC5nZXRDbGllbnRSZWN0cygpKXtjb25zdHtsZWZ0OmssdG9wOlQsd2lkdGg6QyxoZWlnaHQ6UH09UztwLnZhbHVlPWsrKGk9PT0icGFnZSI/cy5wYWdlWE9mZnNldDowKSxtLnZhbHVlPVQrKGk9PT0icGFnZSI/cy5wYWdlWU9mZnNldDowKSx5LnZhbHVlPVAsXy52YWx1ZT1DO2NvbnN0IEY9YS52YWx1ZS1wLnZhbHVlLEQ9bC52YWx1ZS1tLnZhbHVlO2lmKHcudmFsdWU9Qz09PTB8fFA9PT0wfHxGPDB8fEQ8MHx8Rj5DfHxEPlAsKG98fCF3LnZhbHVlKSYmKGYudmFsdWU9RixkLnZhbHVlPUQpLCF3LnZhbHVlKWJyZWFrfX1jb25zdCBoPVtdO2Z1bmN0aW9uIGIoKXtoLmZvckVhY2goeD0+eCgpKSxoLmxlbmd0aD0wfWlmKHFsKCgpPT57digpfSkscyl7Y29uc3R7c3RvcDp4fT1KYihjLHYpLHtzdG9wOlN9PXJkKGMsdix7YXR0cmlidXRlRmlsdGVyOlsic3R5bGUiLCJjbGFzcyJdfSksaz1QZShbYyxhLGxdLHYpO2gucHVzaCh4LFMsayksVXQoZG9jdW1lbnQsIm1vdXNlbGVhdmUiLCgpPT53LnZhbHVlPSEwLHtwYXNzaXZlOiEwfSksciYmaC5wdXNoKFV0KCJzY3JvbGwiLHYse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pKSxuJiZoLnB1c2goVXQoInJlc2l6ZSIsdix7cGFzc2l2ZTohMH0pKX1yZXR1cm57eDphLHk6bCxzb3VyY2VUeXBlOnUsZWxlbWVudFg6ZixlbGVtZW50WTpkLGVsZW1lbnRQb3NpdGlvblg6cCxlbGVtZW50UG9zaXRpb25ZOm0sZWxlbWVudEhlaWdodDp5LGVsZW1lbnRXaWR0aDpfLGlzT3V0c2lkZTp3LHN0b3A6Yn19ZnVuY3Rpb24gQXEoZT1zSSgpKXtjb25zdCB0PU9lKCksbj0oKT0+e2NvbnN0IHI9QXQoZSk7ciYmKHQudmFsdWU9ci5wYXJlbnRFbGVtZW50KX07cmV0dXJuIHFsKG4pLFBlKCgpPT5FZShlKSxuKSx0fWZ1bmN0aW9uIGFvKGUsdCxuLHI9e30pe3ZhciBvLHM7Y29uc3R7Y2xvbmU6aT0hMSxwYXNzaXZlOmE9ITEsZXZlbnROYW1lOmwsZGVlcDp1PSExLGRlZmF1bHRWYWx1ZTpjLHNob3VsZEVtaXQ6Zn09cixkPW10KCkscD1ufHxkPy5lbWl0fHwoZD09bnVsbHx8KG89ZC4kZW1pdCk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmJpbmQoZCkpfHwoZD09bnVsbHx8KHM9ZC5wcm94eSk9PT1udWxsfHxzPT09dm9pZCAwfHwocz1zLiRlbWl0KT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMuYmluZChkPy5wcm94eSkpO2xldCBtPWw7dHx8KHQ9Im1vZGVsVmFsdWUiKSxtPW18fGB1cGRhdGU6JHt0LnRvU3RyaW5nKCl9YDtjb25zdCB5PXY9Pmk/dHlwZW9mIGk9PSJmdW5jdGlvbiI/aSh2KTpaUCh2KTp2LF89KCk9Pk9QKGVbdF0pP3koZVt0XSk6Yyx3PXY9PntmP2YodikmJnAobSx2KTpwKG0sdil9O2lmKGEpe2NvbnN0IHY9RyhfKCkpO2xldCBoPSExO3JldHVybiBQZSgoKT0+ZVt0XSxiPT57aHx8KGg9ITAsdi52YWx1ZT15KGIpLGl0KCgpPT5oPSExKSl9KSxQZSh2LGI9PnshaCYmKGIhPT1lW3RdfHx1KSYmdyhiKX0se2RlZXA6dX0pLHZ9ZWxzZSByZXR1cm4gTih7Z2V0KCl7cmV0dXJuIF8oKX0sc2V0KHYpe3codil9fSl9ZnVuY3Rpb24gc2QoZSl7cmV0dXJuIGU/ZS5mbGF0TWFwKHQ9PnQudHlwZT09PUdlP3NkKHQuY2hpbGRyZW4pOlt0XSk6W119Y29uc3RbaWQsZEldPWduKCJDb25maWdQcm92aWRlciIpO3ZhciBwST1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiQ29uZmlnUHJvdmlkZXIiLHByb3BzOntkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imx0ciJ9LGxvY2FsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZW4ifSxzY3JvbGxCb2R5Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSx1c2VJZDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH19LHNldHVwKGUpe2NvbnN0IHQ9ZSx7ZGlyOm4sbG9jYWxlOnIsc2Nyb2xsQm9keTpvLG5vbmNlOnN9PUVuKHQpO3JldHVybiBkSSh7ZGlyOm4sbG9jYWxlOnIsc2Nyb2xsQm9keTpvLG5vbmNlOnMsdXNlSWQ6dC51c2VJZH0pLChpLGEpPT5VKGkuJHNsb3RzLCJkZWZhdWx0Iil9fSksbUk9cEk7Y29uc3QgaEk9ZWQoKCk9Pntjb25zdCBlPUcobmV3IE1hcCksdD1HKCksbj1OKCgpPT57Zm9yKGNvbnN0IGkgb2YgZS52YWx1ZS52YWx1ZXMoKSlpZihpKXJldHVybiEwO3JldHVybiExfSkscj1pZCh7c2Nyb2xsQm9keTpHKCEwKX0pO2xldCBvPW51bGw7Y29uc3Qgcz0oKT0+e2RvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PSIiLGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luUmlnaHQ9IiIsZG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPSIiLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1zY3JvbGxiYXItd2lkdGgiKSxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PXQudmFsdWU/PyIiLE5tJiZvPy4oKSx0LnZhbHVlPXZvaWQgMH07cmV0dXJuIFBlKG4sKGksYSk9PntpZighaG4pcmV0dXJuO2lmKCFpKXthJiZzKCk7cmV0dXJufXQudmFsdWU9PT12b2lkIDAmJih0LnZhbHVlPWRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cpO2NvbnN0IGw9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHU9e3BhZGRpbmc6bCxtYXJnaW46MH0sYz1yLnNjcm9sbEJvZHk/LnZhbHVlP3R5cGVvZiByLnNjcm9sbEJvZHkudmFsdWU9PSJvYmplY3QiP21uKHtwYWRkaW5nOnIuc2Nyb2xsQm9keS52YWx1ZS5wYWRkaW5nPT09ITA/bDpyLnNjcm9sbEJvZHkudmFsdWUucGFkZGluZyxtYXJnaW46ci5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbj09PSEwP2w6ci5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbn0sdSk6dTp7cGFkZGluZzowLG1hcmdpbjowfTtsPjAmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD10eXBlb2YgYy5wYWRkaW5nPT0ibnVtYmVyIj9gJHtjLnBhZGRpbmd9cHhgOlN0cmluZyhjLnBhZGRpbmcpLGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luUmlnaHQ9dHlwZW9mIGMubWFyZ2luPT0ibnVtYmVyIj9gJHtjLm1hcmdpbn1weGA6U3RyaW5nKGMubWFyZ2luKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tc2Nyb2xsYmFyLXdpZHRoIixgJHtsfXB4YCksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIiksTm0mJihvPVV0KGRvY3VtZW50LCJ0b3VjaG1vdmUiLGY9PmdJKGYpLHtwYXNzaXZlOiExfSkpLGl0KCgpPT57bi52YWx1ZSYmKGRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIil9KX0se2ltbWVkaWF0ZTohMCxmbHVzaDoic3luYyJ9KSxlfSk7ZnVuY3Rpb24gWGIoZSl7Y29uc3QgdD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw3KSxuPWhJKCk7bi52YWx1ZS5zZXQodCxlPz8hMSk7Y29uc3Qgcj1OKHtnZXQ6KCk9Pm4udmFsdWUuZ2V0KHQpPz8hMSxzZXQ6bz0+bi52YWx1ZS5zZXQodCxvKX0pO3JldHVybiBWUCgoKT0+e24udmFsdWUuZGVsZXRlKHQpfSkscn1mdW5jdGlvbiBaYihlKXtjb25zdCB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpO2lmKHQub3ZlcmZsb3dYPT09InNjcm9sbCJ8fHQub3ZlcmZsb3dZPT09InNjcm9sbCJ8fHQub3ZlcmZsb3dYPT09ImF1dG8iJiZlLmNsaWVudFdpZHRoPGUuc2Nyb2xsV2lkdGh8fHQub3ZlcmZsb3dZPT09ImF1dG8iJiZlLmNsaWVudEhlaWdodDxlLnNjcm9sbEhlaWdodClyZXR1cm4hMDt7Y29uc3Qgbj1lLnBhcmVudE5vZGU7cmV0dXJuIShuIGluc3RhbmNlb2YgRWxlbWVudCl8fG4udGFnTmFtZT09PSJCT0RZIj8hMTpaYihuKX19ZnVuY3Rpb24gZ0koZSl7Y29uc3QgdD1lfHx3aW5kb3cuZXZlbnQsbj10LnRhcmdldDtyZXR1cm4gbiBpbnN0YW5jZW9mIEVsZW1lbnQmJlpiKG4pPyExOnQudG91Y2hlcy5sZW5ndGg+MT8hMDoodC5wcmV2ZW50RGVmYXVsdCYmdC5jYW5jZWxhYmxlJiZ0LnByZXZlbnREZWZhdWx0KCksITEpfWZ1bmN0aW9uIHlJKGUpe2NvbnN0IHQ9aWQoe2RpcjpHKCJsdHIiKX0pO3JldHVybiBOKCgpPT5lPy52YWx1ZXx8dC5kaXI/LnZhbHVlfHwibHRyIil9ZnVuY3Rpb24gRmwoZSl7Y29uc3Qgbj1tdCgpPy50eXBlLmVtaXRzLHI9e307cmV0dXJuIG4/Lmxlbmd0aCxuPy5mb3JFYWNoKG89PntyW25pKCR0KG8pKV09KC4uLnMpPT5lKG8sLi4ucyl9KSxyfWxldCAkYz0wO2Z1bmN0aW9uIHZJKCl7b24oZT0+e2lmKCFobilyZXR1cm47Y29uc3QgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yZWthLWZvY3VzLWd1YXJkXSIpO2RvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCJhZnRlcmJlZ2luIix0WzBdPz9NbSgpKSxkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgiYmVmb3JlZW5kIix0WzFdPz9NbSgpKSwkYysrLGUoKCk9PnskYz09PTEmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJla2EtZm9jdXMtZ3VhcmRdIikuZm9yRWFjaChuPT5uLnJlbW92ZSgpKSwkYy0tfSl9KX1mdW5jdGlvbiBNbSgpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiBlLnNldEF0dHJpYnV0ZSgiZGF0YS1yZWthLWZvY3VzLWd1YXJkIiwiIiksZS50YWJJbmRleD0wLGUuc3R5bGUub3V0bGluZT0ibm9uZSIsZS5zdHlsZS5vcGFjaXR5PSIwIixlLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIixlfWZ1bmN0aW9uIGJJKGUpe3JldHVybiBOKCgpPT5FZShlKT8hIUF0KGUpPy5jbG9zZXN0KCJmb3JtIik6ITApfWZ1bmN0aW9uIFVlKCl7Y29uc3QgZT1tdCgpLHQ9RygpLG49TigoKT0+cigpKTt4bCgoKT0+e24udmFsdWUhPT1yKCkmJl9fKHQpfSk7ZnVuY3Rpb24gcigpe3JldHVybiB0LnZhbHVlJiYiJGVsImluIHQudmFsdWUmJlsiI3RleHQiLCIjY29tbWVudCJdLmluY2x1ZGVzKHQudmFsdWUuJGVsLm5vZGVOYW1lKT90LnZhbHVlLiRlbC5uZXh0RWxlbWVudFNpYmxpbmc6QXQodCl9Y29uc3Qgbz1PYmplY3QuYXNzaWduKHt9LGUuZXhwb3NlZCkscz17fTtmb3IoY29uc3QgYSBpbiBlLnByb3BzKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS5wcm9wc1thXX0pO2lmKE9iamVjdC5rZXlzKG8pLmxlbmd0aD4wKWZvcihjb25zdCBhIGluIG8pT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsYSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5vW2FdfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS52bm9kZS5lbH0pLGUuZXhwb3NlZD1zO2Z1bmN0aW9uIGkoYSl7aWYodC52YWx1ZT1hLCEhYSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCIkZWwiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmEgaW5zdGFuY2VvZiBFbGVtZW50P2E6YS4kZWx9KSwhKGEgaW5zdGFuY2VvZiBFbGVtZW50KSYmIU9iamVjdC5oYXNPd24oYSwiJGVsIikpKXtjb25zdCBsPWEuJC5leHBvc2VkLHU9T2JqZWN0LmFzc2lnbih7fSxzKTtmb3IoY29uc3QgYyBpbiBsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LGMse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+bFtjXX0pO2UuZXhwb3NlZD11fX1yZXR1cm57Zm9yd2FyZFJlZjppLGN1cnJlbnRSZWY6dCxjdXJyZW50RWxlbWVudDpufX1mdW5jdGlvbiBwbyhlKXtjb25zdCB0PW10KCksbj1PYmplY3Qua2V5cyh0Py50eXBlLnByb3BzPz97fSkucmVkdWNlKChvLHMpPT57Y29uc3QgaT0odD8udHlwZS5wcm9wc1tzXSkuZGVmYXVsdDtyZXR1cm4gaSE9PXZvaWQgMCYmKG9bc109aSksb30se30pLHI9eXQoZSk7cmV0dXJuIE4oKCk9Pntjb25zdCBvPXt9LHM9dD8udm5vZGUucHJvcHM/P3t9O3JldHVybiBPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGk9PntvWyR0KGkpXT1zW2ldfSksT2JqZWN0LmtleXMoey4uLm4sLi4ub30pLnJlZHVjZSgoaSxhKT0+KHIudmFsdWVbYV0hPT12b2lkIDAmJihpW2FdPXIudmFsdWVbYV0pLGkpLHt9KX0pfWZ1bmN0aW9uICRzKGUsdCl7Y29uc3Qgbj1wbyhlKSxyPXQ/RmwodCk6e307cmV0dXJuIE4oKCk9Pih7Li4ubi52YWx1ZSwuLi5yfSkpfXZhciB3ST1mdW5jdGlvbihlKXtpZih0eXBlb2YgZG9jdW1lbnQ+InUiKXJldHVybiBudWxsO3ZhciB0PUFycmF5LmlzQXJyYXkoZSk/ZVswXTplO3JldHVybiB0Lm93bmVyRG9jdW1lbnQuYm9keX0sWm89bmV3IFdlYWtNYXAscGE9bmV3IFdlYWtNYXAsbWE9e30sTWM9MCxlMD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmKGUuaG9zdHx8ZTAoZS5wYXJlbnROb2RlKSl9LF9JPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKG4pe2lmKGUuY29udGFpbnMobikpcmV0dXJuIG47dmFyIHI9ZTAobik7cmV0dXJuIHImJmUuY29udGFpbnMocik/cjpudWxsfSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiEhbn0pfSx4ST1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1fSSh0LEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pO21hW25dfHwobWFbbl09bmV3IFdlYWtNYXApO3ZhciBzPW1hW25dLGk9W10sYT1uZXcgU2V0LGw9bmV3IFNldChvKSx1PWZ1bmN0aW9uKGYpeyFmfHxhLmhhcyhmKXx8KGEuYWRkKGYpLHUoZi5wYXJlbnROb2RlKSl9O28uZm9yRWFjaCh1KTt2YXIgYz1mdW5jdGlvbihmKXshZnx8bC5oYXMoZil8fEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZi5jaGlsZHJlbixmdW5jdGlvbihkKXtpZihhLmhhcyhkKSljKGQpO2Vsc2UgdHJ5e3ZhciBwPWQuZ2V0QXR0cmlidXRlKHIpLG09cCE9PW51bGwmJnAhPT0iZmFsc2UiLHk9KFpvLmdldChkKXx8MCkrMSxfPShzLmdldChkKXx8MCkrMTtaby5zZXQoZCx5KSxzLnNldChkLF8pLGkucHVzaChkKSx5PT09MSYmbSYmcGEuc2V0KGQsITApLF89PT0xJiZkLnNldEF0dHJpYnV0ZShuLCJ0cnVlIiksbXx8ZC5zZXRBdHRyaWJ1dGUociwidHJ1ZSIpfWNhdGNoe319KX07cmV0dXJuIGModCksYS5jbGVhcigpLE1jKyssZnVuY3Rpb24oKXtpLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIGQ9Wm8uZ2V0KGYpLTEscD1zLmdldChmKS0xO1pvLnNldChmLGQpLHMuc2V0KGYscCksZHx8KHBhLmhhcyhmKXx8Zi5yZW1vdmVBdHRyaWJ1dGUocikscGEuZGVsZXRlKGYpKSxwfHxmLnJlbW92ZUF0dHJpYnV0ZShuKX0pLE1jLS0sTWN8fChabz1uZXcgV2Vha01hcCxabz1uZXcgV2Vha01hcCxwYT1uZXcgV2Vha01hcCxtYT17fSl9fSxTST1mdW5jdGlvbihlLHQsbil7bj09PXZvaWQgMCYmKG49ImRhdGEtYXJpYS1oaWRkZW4iKTt2YXIgcj1BcnJheS5mcm9tKEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLG89d0koZSk7cmV0dXJuIG8/KHIucHVzaC5hcHBseShyLEFycmF5LmZyb20oby5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1saXZlXSwgc2NyaXB0IikpKSx4SShyLG8sbiwiYXJpYS1oaWRkZW4iKSk6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19O2Z1bmN0aW9uIHQwKGUpe2xldCB0O1BlKCgpPT5BdChlKSxuPT57bGV0IHI9ITE7dHJ5e3I9ISFuPy5jbG9zZXN0KCJbcG9wb3Zlcl06bm90KDpwb3BvdmVyLW9wZW4pIil9Y2F0Y2h7fW4mJiFyP3Q9U0kobik6dCYmdCgpfSkscHIoKCk9Pnt0JiZ0KCl9KX1mdW5jdGlvbiBDcyhlLHQ9InJla2EiKXtpZihlKXJldHVybiBlO2xldCBuO3JldHVybiBuPWJmPy4oKSx0P2Ake3R9LSR7bn1gOm59ZnVuY3Rpb24ga0koZSl7Y29uc3QgdD1HKCksbj1OKCgpPT50LnZhbHVlPy53aWR0aD8/MCkscj1OKCgpPT50LnZhbHVlPy5oZWlnaHQ/PzApO3JldHVybiBvdCgoKT0+e2NvbnN0IG89QXQoZSk7aWYobyl7dC52YWx1ZT17d2lkdGg6by5vZmZzZXRXaWR0aCxoZWlnaHQ6by5vZmZzZXRIZWlnaHR9O2NvbnN0IHM9bmV3IFJlc2l6ZU9ic2VydmVyKGk9PntpZighQXJyYXkuaXNBcnJheShpKXx8IWkubGVuZ3RoKXJldHVybjtjb25zdCBhPWlbMF07bGV0IGwsdTtpZigiYm9yZGVyQm94U2l6ZSJpbiBhKXtjb25zdCBjPWEuYm9yZGVyQm94U2l6ZSxmPUFycmF5LmlzQXJyYXkoYyk/Y1swXTpjO2w9Zi5pbmxpbmVTaXplLHU9Zi5ibG9ja1NpemV9ZWxzZSBsPW8ub2Zmc2V0V2lkdGgsdT1vLm9mZnNldEhlaWdodDt0LnZhbHVlPXt3aWR0aDpsLGhlaWdodDp1fX0pO3JldHVybiBzLm9ic2VydmUobyx7Ym94OiJib3JkZXItYm94In0pLCgpPT5zLnVub2JzZXJ2ZShvKX1lbHNlIHQudmFsdWU9dm9pZCAwfSkse3dpZHRoOm4saGVpZ2h0OnJ9fWZ1bmN0aW9uIEVJKGUsdCl7Y29uc3Qgbj1HKGUpO2Z1bmN0aW9uIHIocyl7cmV0dXJuIHRbbi52YWx1ZV1bc10/P24udmFsdWV9cmV0dXJue3N0YXRlOm4sZGlzcGF0Y2g6cz0+e24udmFsdWU9cihzKX19fWZ1bmN0aW9uIG4wKGUpe2NvbnN0IHQ9alAoIiIsMWUzKTtyZXR1cm57c2VhcmNoOnQsaGFuZGxlVHlwZWFoZWFkU2VhcmNoOihvLHMpPT57dC52YWx1ZT10LnZhbHVlK287e2NvbnN0IGk9cm4oKSxhPXMubWFwKGQ9Pih7Li4uZCx0ZXh0VmFsdWU6ZC52YWx1ZT8udGV4dFZhbHVlPz9kLnJlZi50ZXh0Q29udGVudD8udHJpbSgpPz8iIn0pKSxsPWEuZmluZChkPT5kLnJlZj09PWkpLHU9YS5tYXAoZD0+ZC50ZXh0VmFsdWUpLGM9Q0kodSx0LnZhbHVlLGw/LnRleHRWYWx1ZSksZj1hLmZpbmQoZD0+ZC50ZXh0VmFsdWU9PT1jKTtyZXR1cm4gZiYmZi5yZWYuZm9jdXMoKSxmPy5yZWZ9fSxyZXNldFR5cGVhaGVhZDooKT0+e3QudmFsdWU9IiJ9fX1mdW5jdGlvbiBUSShlLHQpe3JldHVybiBlLm1hcCgobixyKT0+ZVsodCtyKSVlLmxlbmd0aF0pfWZ1bmN0aW9uIENJKGUsdCxuKXtjb25zdCBvPXQubGVuZ3RoPjEmJkFycmF5LmZyb20odCkuZXZlcnkodT0+dT09PXRbMF0pP3RbMF06dCxzPW4/ZS5pbmRleE9mKG4pOi0xO2xldCBpPVRJKGUsTWF0aC5tYXgocywwKSk7by5sZW5ndGg9PT0xJiYoaT1pLmZpbHRlcih1PT51IT09bikpO2NvbnN0IGw9aS5maW5kKHU9PnUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKG8udG9Mb3dlckNhc2UoKSkpO3JldHVybiBsIT09bj9sOnZvaWQgMH1mdW5jdGlvbiBBSShlLHQpe2NvbnN0IG49Ryh7fSkscj1HKCJub25lIiksbz1HKGUpLHM9ZS52YWx1ZT8ibW91bnRlZCI6InVubW91bnRlZCI7bGV0IGk7Y29uc3QgYT10LnZhbHVlPy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Pz9WdCx7c3RhdGU6bCxkaXNwYXRjaDp1fT1FSShzLHttb3VudGVkOntVTk1PVU5UOiJ1bm1vdW50ZWQiLEFOSU1BVElPTl9PVVQ6InVubW91bnRTdXNwZW5kZWQifSx1bm1vdW50U3VzcGVuZGVkOntNT1VOVDoibW91bnRlZCIsQU5JTUFUSU9OX0VORDoidW5tb3VudGVkIn0sdW5tb3VudGVkOntNT1VOVDoibW91bnRlZCJ9fSksYz1fPT57aWYoaG4pe2NvbnN0IHc9bmV3IEN1c3RvbUV2ZW50KF8se2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMX0pO3QudmFsdWU/LmRpc3BhdGNoRXZlbnQodyl9fTtQZShlLGFzeW5jKF8sdyk9Pntjb25zdCB2PXchPT1fO2lmKGF3YWl0IGl0KCksdil7Y29uc3QgaD1yLnZhbHVlLGI9aGEodC52YWx1ZSk7Xz8odSgiTU9VTlQiKSxjKCJlbnRlciIpLGI9PT0ibm9uZSImJmMoImFmdGVyLWVudGVyIikpOmI9PT0ibm9uZSJ8fGI9PT0idW5kZWZpbmVkInx8bi52YWx1ZT8uZGlzcGxheT09PSJub25lIj8odSgiVU5NT1VOVCIpLGMoImxlYXZlIiksYygiYWZ0ZXItbGVhdmUiKSk6dyYmaCE9PWI/KHUoIkFOSU1BVElPTl9PVVQiKSxjKCJsZWF2ZSIpKToodSgiVU5NT1VOVCIpLGMoImFmdGVyLWxlYXZlIikpfX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IGY9Xz0+e2NvbnN0IHc9aGEodC52YWx1ZSksdj13LmluY2x1ZGVzKENTUy5lc2NhcGUoXy5hbmltYXRpb25OYW1lKSksaD1sLnZhbHVlPT09Im1vdW50ZWQiPyJlbnRlciI6ImxlYXZlIjtpZihfLnRhcmdldD09PXQudmFsdWUmJnYmJihjKGBhZnRlci0ke2h9YCksdSgiQU5JTUFUSU9OX0VORCIpLCFvLnZhbHVlKSl7Y29uc3QgYj10LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlO3QudmFsdWUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9ImZvcndhcmRzIixpPWE/LnNldFRpbWVvdXQoKCk9Pnt0LnZhbHVlPy5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT09PSJmb3J3YXJkcyImJih0LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPWIpfSl9Xy50YXJnZXQ9PT10LnZhbHVlJiZ3PT09Im5vbmUiJiZ1KCJBTklNQVRJT05fRU5EIil9LGQ9Xz0+e18udGFyZ2V0PT09dC52YWx1ZSYmKHIudmFsdWU9aGEodC52YWx1ZSkpfSxwPVBlKHQsKF8sdyk9PntfPyhuLnZhbHVlPWdldENvbXB1dGVkU3R5bGUoXyksXy5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsZCksXy5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25jYW5jZWwiLGYpLF8uYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixmKSk6KHUoIkFOSU1BVElPTl9FTkQiKSxpIT09dm9pZCAwJiZhPy5jbGVhclRpbWVvdXQoaSksdz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uc3RhcnQiLGQpLHc/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmNhbmNlbCIsZiksdz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixmKSl9LHtpbW1lZGlhdGU6ITB9KSxtPVBlKGwsKCk9Pntjb25zdCBfPWhhKHQudmFsdWUpO3IudmFsdWU9bC52YWx1ZT09PSJtb3VudGVkIj9fOiJub25lIn0pO3JldHVybiBwcigoKT0+e3AoKSxtKCl9KSx7aXNQcmVzZW50Ok4oKCk9PlsibW91bnRlZCIsInVubW91bnRTdXNwZW5kZWQiXS5pbmNsdWRlcyhsLnZhbHVlKSl9fWZ1bmN0aW9uIGhhKGUpe3JldHVybiBlJiZnZXRDb21wdXRlZFN0eWxlKGUpLmFuaW1hdGlvbk5hbWV8fCJub25lIn12YXIgemw9c2Uoe25hbWU6IlByZXNlbmNlIixwcm9wczp7cHJlc2VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiEwfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW59fSxzbG90czp7fSxzZXR1cChlLHtzbG90czp0LGV4cG9zZTpufSl7Y29uc3R7cHJlc2VudDpyLGZvcmNlTW91bnQ6b309RW4oZSkscz1HKCkse2lzUHJlc2VudDppfT1BSShyLHMpO24oe3ByZXNlbnQ6aX0pO2xldCBhPXQuZGVmYXVsdCh7cHJlc2VudDppLnZhbHVlfSk7YT1zZChhfHxbXSk7Y29uc3QgbD1tdCgpO2lmKGEmJmE/Lmxlbmd0aD4xKXtjb25zdCB1PWw/LnBhcmVudD8udHlwZS5uYW1lP2A8JHtsLnBhcmVudC50eXBlLm5hbWV9IC8+YDoiY29tcG9uZW50Ijt0aHJvdyBuZXcgRXJyb3IoW2BEZXRlY3RlZCBhbiBpbnZhbGlkIGNoaWxkcmVuIGZvciBcYCR7dX1cYCBmb3IgIFxgUHJlc2VuY2VcYCBjb21wb25lbnQuYCwiIiwiTm90ZTogUHJlc2VuY2Ugd29ya3Mgc2ltaWxhcmx5IHRvIGB2LWlmYCBkaXJlY3RseSwgYnV0IGl0IHdhaXRzIGZvciBhbmltYXRpb24vdHJhbnNpdGlvbiB0byBmaW5pc2hlZCBiZWZvcmUgdW5tb3VudGluZy4gU28gaXQgZXhwZWN0IG9ubHkgb25lIGRpcmVjdCBjaGlsZCBvZiB2YWxpZCBWTm9kZSB0eXBlLiIsIllvdSBjYW4gYXBwbHkgYSBmZXcgc29sdXRpb25zOiIsWyJQcm92aWRlIGEgc2luZ2xlIGNoaWxkIGVsZW1lbnQgc28gdGhhdCBgcHJlc2VuY2VgIGRpcmVjdGl2ZSBhdHRhY2ggY29ycmVjdGx5LiIsIkVuc3VyZSB0aGUgZmlyc3QgY2hpbGQgaXMgYW4gYWN0dWFsIGVsZW1lbnQgaW5zdGVhZCBvZiBhIHJhdyB0ZXh0IG5vZGUgb3IgY29tbWVudCBub2RlLiJdLm1hcChjPT5gICAtICR7Y31gKS5qb2luKGAKYCldLmpvaW4oYApgKSl9cmV0dXJuKCk9Pm8udmFsdWV8fHIudmFsdWV8fGkudmFsdWU/RmUodC5kZWZhdWx0KHtwcmVzZW50OmkudmFsdWV9KVswXSx7cmVmOnU9Pntjb25zdCBjPUF0KHUpO3JldHVybiB0eXBlb2YgYz8uaGFzQXR0cmlidXRlPiJ1Inx8KGM/Lmhhc0F0dHJpYnV0ZSgiZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXIiKT9zLnZhbHVlPWMuZmlyc3RFbGVtZW50Q2hpbGQ6cy52YWx1ZT1jKSxjfX0pOm51bGx9fSk7Y29uc3Qgam89c2Uoe25hbWU6IlByaW1pdGl2ZVNsb3QiLGluaGVyaXRBdHRyczohMSxzZXR1cChlLHthdHRyczp0LHNsb3RzOm59KXtyZXR1cm4oKT0+e2lmKCFuLmRlZmF1bHQpcmV0dXJuIG51bGw7Y29uc3Qgcj1zZChuLmRlZmF1bHQoKSksbz1yLmZpbmRJbmRleChsPT5sLnR5cGUhPT1fdCk7aWYobz09PS0xKXJldHVybiByO2NvbnN0IHM9cltvXTtkZWxldGUgcy5wcm9wcz8ucmVmO2NvbnN0IGk9cy5wcm9wcz9mZSh0LHMucHJvcHMpOnQsYT1wbih7Li4ucyxwcm9wczp7fX0saSk7cmV0dXJuIHIubGVuZ3RoPT09MT9hOihyW29dPWEscil9fX0pLE9JPVsiYXJlYSIsImltZyIsImlucHV0Il0sTWU9c2Uoe25hbWU6IlByaW1pdGl2ZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6ImRpdiJ9fSxzZXR1cChlLHthdHRyczp0LHNsb3RzOm59KXtjb25zdCByPWUuYXNDaGlsZD8idGVtcGxhdGUiOmUuYXM7cmV0dXJuIHR5cGVvZiByPT0ic3RyaW5nIiYmT0kuaW5jbHVkZXMocik/KCk9PkZlKHIsdCk6ciE9PSJ0ZW1wbGF0ZSI/KCk9PkZlKGUuYXMsdCx7ZGVmYXVsdDpuLmRlZmF1bHR9KTooKT0+RmUoam8sdCx7ZGVmYXVsdDpuLmRlZmF1bHR9KX19KTtmdW5jdGlvbiBCbSgpe2NvbnN0IGU9RygpLHQ9TigoKT0+WyIjdGV4dCIsIiNjb21tZW50Il0uaW5jbHVkZXMoZS52YWx1ZT8uJGVsLm5vZGVOYW1lKT9lLnZhbHVlPy4kZWwubmV4dEVsZW1lbnRTaWJsaW5nOkF0KGUpKTtyZXR1cm57cHJpbWl0aXZlRWxlbWVudDplLGN1cnJlbnRFbGVtZW50OnR9fWNvbnN0W21yLFBJXT1nbigiRGlhbG9nUm9vdCIpO3ZhciBJST1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiRGlhbG9nUm9vdCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLG89YW8obiwib3BlbiIsdCx7ZGVmYXVsdFZhbHVlOm4uZGVmYXVsdE9wZW4scGFzc2l2ZTpuLm9wZW49PT12b2lkIDB9KSxzPUcoKSxpPUcoKSx7bW9kYWw6YX09RW4obik7cmV0dXJuIFBJKHtvcGVuOm8sbW9kYWw6YSxvcGVuTW9kYWw6KCk9PntvLnZhbHVlPSEwfSxvbk9wZW5DaGFuZ2U6bD0+e28udmFsdWU9bH0sb25PcGVuVG9nZ2xlOigpPT57by52YWx1ZT0hby52YWx1ZX0sY29udGVudElkOiIiLHRpdGxlSWQ6IiIsZGVzY3JpcHRpb25JZDoiIix0cmlnZ2VyRWxlbWVudDpzLGNvbnRlbnRFbGVtZW50Oml9KSwobCx1KT0+VShsLiRzbG90cywiZGVmYXVsdCIse29wZW46ZyhvKSxjbG9zZTooKT0+by52YWx1ZT0hMX0pfX0pLHIwPUlJLFJJPXNlKHtfX25hbWU6IkRpYWxvZ0Nsb3NlIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChlKXtjb25zdCB0PWU7VWUoKTtjb25zdCBuPW1yKCk7cmV0dXJuKHIsbyk9PihSKCksJChnKE1lKSxmZSh0LHt0eXBlOnIuYXM9PT0iYnV0dG9uIj8iYnV0dG9uIjp2b2lkIDAsb25DbGljazpvWzBdfHwob1swXT1zPT5nKG4pLm9uT3BlbkNoYW5nZSghMSkpfSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIl0pKX19KSxvMD1SSTtjb25zdCBOST0iZGlzbWlzc2FibGVMYXllci5wb2ludGVyRG93bk91dHNpZGUiLERJPSJkaXNtaXNzYWJsZUxheWVyLmZvY3VzT3V0c2lkZSI7ZnVuY3Rpb24gczAoZSx0KXtpZighKHQgaW5zdGFuY2VvZiBFbGVtZW50KSlyZXR1cm4hMTtjb25zdCBuPXQuY2xvc2VzdCgiW2RhdGEtZGlzbWlzc2FibGUtbGF5ZXJdIikscj1lLmRhdGFzZXQuZGlzbWlzc2FibGVMYXllcj09PSIiP2U6ZS5xdWVyeVNlbGVjdG9yKCJbZGF0YS1kaXNtaXNzYWJsZS1sYXllcl0iKSxvPUFycmF5LmZyb20oZS5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWRpc21pc3NhYmxlLWxheWVyXSIpKTtyZXR1cm4hIShuJiYocj09PW58fG8uaW5kZXhPZihyKTxvLmluZGV4T2YobikpKX1mdW5jdGlvbiBMSShlLHQsbj0hMCl7Y29uc3Qgcj10Py52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcz8uZG9jdW1lbnQsbz1HKCExKSxzPUcoKCk9Pnt9KTtyZXR1cm4gb24oaT0+e2lmKCFobnx8IUVlKG4pKXJldHVybjtjb25zdCBhPWFzeW5jIHU9Pntjb25zdCBjPXUudGFyZ2V0O2lmKCEoIXQ/LnZhbHVlfHwhYykpe2lmKHMwKHQudmFsdWUsYykpe28udmFsdWU9ITE7cmV0dXJufWlmKHUudGFyZ2V0JiYhby52YWx1ZSl7bGV0IGQ9ZnVuY3Rpb24oKXtKZihOSSxlLGYpfTtjb25zdCBmPXtvcmlnaW5hbEV2ZW50OnV9O3UucG9pbnRlclR5cGU9PT0idG91Y2giPyhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixzLnZhbHVlKSxzLnZhbHVlPWQsci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIscy52YWx1ZSx7b25jZTohMH0pKTpkKCl9ZWxzZSByLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixzLnZhbHVlKTtvLnZhbHVlPSExfX0sbD13aW5kb3cuc2V0VGltZW91dCgoKT0+e3IuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLGEpfSwwKTtpKCgpPT57d2luZG93LmNsZWFyVGltZW91dChsKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixhKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixzLnZhbHVlKX0pfSkse29uUG9pbnRlckRvd25DYXB0dXJlOigpPT57RWUobikmJihvLnZhbHVlPSEwKX19fWZ1bmN0aW9uICRJKGUsdCxuPSEwKXtjb25zdCByPXQ/LnZhbHVlPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzPy5kb2N1bWVudCxvPUcoITEpO3JldHVybiBvbihzPT57aWYoIWhufHwhRWUobikpcmV0dXJuO2NvbnN0IGk9YXN5bmMgYT0+e2lmKCF0Py52YWx1ZSlyZXR1cm47YXdhaXQgaXQoKSxhd2FpdCBpdCgpO2NvbnN0IGw9YS50YXJnZXQ7IXQudmFsdWV8fCFsfHxzMCh0LnZhbHVlLGwpfHxhLnRhcmdldCYmIW8udmFsdWUmJkpmKERJLGUse29yaWdpbmFsRXZlbnQ6YX0pfTtyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGkpLHMoKCk9PnIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsaSkpfSkse29uRm9jdXNDYXB0dXJlOigpPT57RWUobikmJihvLnZhbHVlPSEwKX0sb25CbHVyQ2FwdHVyZTooKT0+e0VlKG4pJiYoby52YWx1ZT0hMSl9fX1jb25zdCBmbj1idCh7bGF5ZXJzUm9vdDpuZXcgU2V0LGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOm5ldyBTZXQsb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50czp2b2lkIDAsYnJhbmNoZXM6bmV3IFNldH0pO3ZhciBNST1zZSh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyIixwcm9wczp7ZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZGlzbWlzcyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpzfT1VZSgpLGk9TigoKT0+cy52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcy5kb2N1bWVudCksYT1OKCgpPT5mbi5sYXllcnNSb290KSxsPU4oKCk9PnMudmFsdWU/QXJyYXkuZnJvbShhLnZhbHVlKS5pbmRleE9mKHMudmFsdWUpOi0xKSx1PU4oKCk9PmZuLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU+MCksYz1OKCgpPT57Y29uc3QgcD1BcnJheS5mcm9tKGEudmFsdWUpLFttXT1bLi4uZm4ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdLnNsaWNlKC0xKSx5PXAuaW5kZXhPZihtKTtyZXR1cm4gbC52YWx1ZT49eX0pLGY9TEkoYXN5bmMgcD0+e2NvbnN0IG09Wy4uLmZuLmJyYW5jaGVzXS5zb21lKHk9Pnk/LmNvbnRhaW5zKHAudGFyZ2V0KSk7IWMudmFsdWV8fG18fChyKCJwb2ludGVyRG93bk91dHNpZGUiLHApLHIoImludGVyYWN0T3V0c2lkZSIscCksYXdhaXQgaXQoKSxwLmRlZmF1bHRQcmV2ZW50ZWR8fHIoImRpc21pc3MiKSl9LHMpLGQ9JEkocD0+e1suLi5mbi5icmFuY2hlc10uc29tZSh5PT55Py5jb250YWlucyhwLnRhcmdldCkpfHwocigiZm9jdXNPdXRzaWRlIixwKSxyKCJpbnRlcmFjdE91dHNpZGUiLHApLHAuZGVmYXVsdFByZXZlbnRlZHx8cigiZGlzbWlzcyIpKX0scyk7cmV0dXJuIG9kKCJFc2NhcGUiLHA9PntsLnZhbHVlPT09YS52YWx1ZS5zaXplLTEmJihyKCJlc2NhcGVLZXlEb3duIixwKSxwLmRlZmF1bHRQcmV2ZW50ZWR8fHIoImRpc21pc3MiKSl9KSxvbihwPT57cy52YWx1ZSYmKG4uZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzJiYoZm4ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZT09PTAmJihmbi5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzPWkudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzLGkudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIiksZm4ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuYWRkKHMudmFsdWUpKSxhLnZhbHVlLmFkZChzLnZhbHVlKSxwKCgpPT57bi5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMmJmZuLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU9PT0xJiYhQWkoZm4ub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cykmJihpLnZhbHVlLmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz1mbi5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzKX0pKX0pLG9uKHA9PntwKCgpPT57cy52YWx1ZSYmKGEudmFsdWUuZGVsZXRlKHMudmFsdWUpLGZuLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShzLnZhbHVlKSl9KX0pLChwLG0pPT4oUigpLCQoZyhNZSkse3JlZjpnKG8pLCJhcy1jaGlsZCI6cC5hc0NoaWxkLGFzOnAuYXMsImRhdGEtZGlzbWlzc2FibGUtbGF5ZXIiOiIiLHN0eWxlOlJuKHtwb2ludGVyRXZlbnRzOnUudmFsdWU/Yy52YWx1ZT8iYXV0byI6Im5vbmUiOnZvaWQgMH0pLG9uRm9jdXNDYXB0dXJlOmcoZCkub25Gb2N1c0NhcHR1cmUsb25CbHVyQ2FwdHVyZTpnKGQpLm9uQmx1ckNhcHR1cmUsb25Qb2ludGVyZG93bkNhcHR1cmU6ZyhmKS5vblBvaW50ZXJEb3duQ2FwdHVyZX0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiLCJzdHlsZSIsIm9uRm9jdXNDYXB0dXJlIiwib25CbHVyQ2FwdHVyZSIsIm9uUG9pbnRlcmRvd25DYXB0dXJlIl0pKX19KSxpMD1NSSxCST1zZSh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyQnJhbmNoIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLHtmb3J3YXJkUmVmOm4sY3VycmVudEVsZW1lbnQ6cn09VWUoKTtyZXR1cm4gb3QoKCk9Pntmbi5icmFuY2hlcy5hZGQoci52YWx1ZSl9KSxwcigoKT0+e2ZuLmJyYW5jaGVzLmRlbGV0ZShyLnZhbHVlKX0pLChvLHMpPT4oUigpLCQoZyhNZSksZmUoe3JlZjpnKG4pfSx0KSx7ZGVmYXVsdDpNKCgpPT5bVShvLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHFJPUJJO2NvbnN0IEZJPUFQKCgpPT5HKFtdKSk7ZnVuY3Rpb24gekkoKXtjb25zdCBlPUZJKCk7cmV0dXJue2FkZCh0KXtjb25zdCBuPWUudmFsdWVbMF07dCE9PW4mJm4/LnBhdXNlKCksZS52YWx1ZT1xbShlLnZhbHVlLHQpLGUudmFsdWUudW5zaGlmdCh0KX0scmVtb3ZlKHQpe2UudmFsdWU9cW0oZS52YWx1ZSx0KSxlLnZhbHVlWzBdPy5yZXN1bWUoKX19fWZ1bmN0aW9uIHFtKGUsdCl7Y29uc3Qgbj1bLi4uZV0scj1uLmluZGV4T2YodCk7cmV0dXJuIHIhPT0tMSYmbi5zcGxpY2UociwxKSxufWNvbnN0IEJjPSJmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnQiLHFjPSJmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudCIsRm09e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMH07ZnVuY3Rpb24gTmEoZSx7c2VsZWN0OnQ9ITF9PXt9KXtjb25zdCBuPXJuKCk7Zm9yKGNvbnN0IHIgb2YgZSlpZihKcihyLHtzZWxlY3Q6dH0pLHJuKCkhPT1uKXJldHVybiEwfWZ1bmN0aW9uIGpJKGUpe2NvbnN0IHQ9YWQoZSksbj16bSh0LGUpLHI9em0odC5yZXZlcnNlKCksZSk7cmV0dXJuW24scl19ZnVuY3Rpb24gYWQoZSl7Y29uc3QgdD1bXSxuPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTpyPT57Y29uc3Qgbz1yLnRhZ05hbWU9PT0iSU5QVVQiJiZyLnR5cGU9PT0iaGlkZGVuIjtyZXR1cm4gci5kaXNhYmxlZHx8ci5oaWRkZW58fG8/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDpyLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7bi5uZXh0Tm9kZSgpOyl0LnB1c2gobi5jdXJyZW50Tm9kZSk7cmV0dXJuIHR9ZnVuY3Rpb24gem0oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKCFWSShuLHt1cFRvOnR9KSlyZXR1cm4gbn1mdW5jdGlvbiBWSShlLHt1cFRvOnR9KXtpZihnZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHk9PT0iaGlkZGVuIilyZXR1cm4hMDtmb3IoO2U7KXtpZih0IT09dm9pZCAwJiZlPT09dClyZXR1cm4hMTtpZihnZXRDb21wdXRlZFN0eWxlKGUpLmRpc3BsYXk9PT0ibm9uZSIpcmV0dXJuITA7ZT1lLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9ZnVuY3Rpb24gVUkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50JiYic2VsZWN0ImluIGV9ZnVuY3Rpb24gSnIoZSx7c2VsZWN0OnQ9ITF9PXt9KXtpZihlJiZlLmZvY3VzKXtjb25zdCBuPXJuKCk7ZS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLGUhPT1uJiZVSShlKSYmdCYmZS5zZWxlY3QoKX19dmFyIEhJPXNlKHtfX25hbWU6IkZvY3VzU2NvcGUiLHByb3BzOntsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdHJhcHBlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsibW91bnRBdXRvRm9jdXMiLCJ1bm1vdW50QXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCx7Y3VycmVudFJlZjpvLGN1cnJlbnRFbGVtZW50OnN9PVVlKCksaT1HKG51bGwpLGE9ekkoKSxsPWJ0KHtwYXVzZWQ6ITEscGF1c2UoKXt0aGlzLnBhdXNlZD0hMH0scmVzdW1lKCl7dGhpcy5wYXVzZWQ9ITF9fSk7b24oYz0+e2lmKCFobilyZXR1cm47Y29uc3QgZj1zLnZhbHVlO2lmKCFuLnRyYXBwZWQpcmV0dXJuO2Z1bmN0aW9uIGQoXyl7aWYobC5wYXVzZWR8fCFmKXJldHVybjtjb25zdCB3PV8udGFyZ2V0O2YuY29udGFpbnModyk/aS52YWx1ZT13OkpyKGkudmFsdWUse3NlbGVjdDohMH0pfWZ1bmN0aW9uIHAoXyl7aWYobC5wYXVzZWR8fCFmKXJldHVybjtjb25zdCB3PV8ucmVsYXRlZFRhcmdldDt3IT09bnVsbCYmKGYuY29udGFpbnModyl8fEpyKGkudmFsdWUse3NlbGVjdDohMH0pKX1mdW5jdGlvbiBtKF8pe2NvbnN0IHc9aS52YWx1ZTtpZih3PT09bnVsbHx8IV8uc29tZShiPT5iLnJlbW92ZWROb2Rlcy5sZW5ndGg+MCkpcmV0dXJuO2YuY29udGFpbnModyl8fEpyKGYpfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGQpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixwKTtjb25zdCB5PW5ldyBNdXRhdGlvbk9ic2VydmVyKG0pO2YmJnkub2JzZXJ2ZShmLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGMoKCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c2luIixkKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIscCkseS5kaXNjb25uZWN0KCl9KX0pLG9uKGFzeW5jIGM9Pntjb25zdCBmPXMudmFsdWU7aWYoYXdhaXQgaXQoKSwhZilyZXR1cm47YS5hZGQobCk7Y29uc3QgZD1ybigpO2lmKCFmLmNvbnRhaW5zKGQpKXtjb25zdCBtPW5ldyBDdXN0b21FdmVudChCYyxGbSk7Zi5hZGRFdmVudExpc3RlbmVyKEJjLHk9PnIoIm1vdW50QXV0b0ZvY3VzIix5KSksZi5kaXNwYXRjaEV2ZW50KG0pLG0uZGVmYXVsdFByZXZlbnRlZHx8KE5hKGFkKGYpLHtzZWxlY3Q6ITB9KSxybigpPT09ZCYmSnIoZikpfWMoKCk9PntmLnJlbW92ZUV2ZW50TGlzdGVuZXIoQmMsXz0+cigibW91bnRBdXRvRm9jdXMiLF8pKTtjb25zdCBtPW5ldyBDdXN0b21FdmVudChxYyxGbSkseT1fPT57cigidW5tb3VudEF1dG9Gb2N1cyIsXyl9O2YuYWRkRXZlbnRMaXN0ZW5lcihxYyx5KSxmLmRpc3BhdGNoRXZlbnQobSksc2V0VGltZW91dCgoKT0+e20uZGVmYXVsdFByZXZlbnRlZHx8SnIoZD8/ZG9jdW1lbnQuYm9keSx7c2VsZWN0OiEwfSksZi5yZW1vdmVFdmVudExpc3RlbmVyKHFjLHkpLGEucmVtb3ZlKGwpfSwwKX0pfSk7ZnVuY3Rpb24gdShjKXtpZighbi5sb29wJiYhbi50cmFwcGVkfHxsLnBhdXNlZClyZXR1cm47Y29uc3QgZj1jLmtleT09PSJUYWIiJiYhYy5hbHRLZXkmJiFjLmN0cmxLZXkmJiFjLm1ldGFLZXksZD1ybigpO2lmKGYmJmQpe2NvbnN0IHA9Yy5jdXJyZW50VGFyZ2V0LFttLHldPWpJKHApO20mJnk/IWMuc2hpZnRLZXkmJmQ9PT15PyhjLnByZXZlbnREZWZhdWx0KCksbi5sb29wJiZKcihtLHtzZWxlY3Q6ITB9KSk6Yy5zaGlmdEtleSYmZD09PW0mJihjLnByZXZlbnREZWZhdWx0KCksbi5sb29wJiZKcih5LHtzZWxlY3Q6ITB9KSk6ZD09PXAmJmMucHJldmVudERlZmF1bHQoKX19cmV0dXJuKGMsZik9PihSKCksJChnKE1lKSx7cmVmX2tleToiY3VycmVudFJlZiIscmVmOm8sdGFiaW5kZXg6Ii0xIiwiYXMtY2hpbGQiOmMuYXNDaGlsZCxhczpjLmFzLG9uS2V5ZG93bjp1fSx7ZGVmYXVsdDpNKCgpPT5bVShjLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyJdKSl9fSksYTA9SEk7Y29uc3QgT3E9Im1lbnUuaXRlbVNlbGVjdCIsam09WyJFbnRlciIsIiAiXSxXST1bIkFycm93RG93biIsIlBhZ2VVcCIsIkhvbWUiXSxHST1bIkFycm93VXAiLCJQYWdlRG93biIsIkVuZCJdLFBxPVsuLi5XSSwuLi5HSV0sSXE9e2x0cjpbLi4uam0sIkFycm93UmlnaHQiXSxydGw6Wy4uLmptLCJBcnJvd0xlZnQiXX0sUnE9e2x0cjpbIkFycm93TGVmdCJdLHJ0bDpbIkFycm93UmlnaHQiXX07ZnVuY3Rpb24gS0koZSl7cmV0dXJuIGU/Im9wZW4iOiJjbG9zZWQifWZ1bmN0aW9uIFFJKGUpe3JldHVybiBlPT09ImluZGV0ZXJtaW5hdGUifWZ1bmN0aW9uIE5xKGUpe3JldHVybiBRSShlKT8iaW5kZXRlcm1pbmF0ZSI6ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCJ9ZnVuY3Rpb24gVm0oZSl7Y29uc3QgdD1ybigpO2Zvcihjb25zdCBuIG9mIGUpaWYobj09PXR8fChuLmZvY3VzKCkscm4oKSE9PXQpKXJldHVybn1mdW5jdGlvbiBZSShlLHQpe2NvbnN0e3g6bix5OnJ9PWU7bGV0IG89ITE7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aC0xO3M8dC5sZW5ndGg7aT1zKyspe2NvbnN0IGE9dFtzXS54LGw9dFtzXS55LHU9dFtpXS54LGM9dFtpXS55O2w+ciE9Yz5yJiZuPCh1LWEpKihyLWwpLyhjLWwpK2EmJihvPSFvKX1yZXR1cm4gb31mdW5jdGlvbiBEcShlLHQpe2lmKCF0KXJldHVybiExO2NvbnN0IG49e3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZfTtyZXR1cm4gWUkobix0KX1mdW5jdGlvbiBMcShlKXtyZXR1cm4gZS5wb2ludGVyVHlwZT09PSJtb3VzZSJ9dmFyIEpJPXNlKHtfX25hbWU6IkRpYWxvZ0NvbnRlbnRJbXBsIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFwRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1tcigpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6aX09VWUoKTtyZXR1cm4gby50aXRsZUlkfHw9Q3Modm9pZCAwLCJyZWthLWRpYWxvZy10aXRsZSIpLG8uZGVzY3JpcHRpb25JZHx8PUNzKHZvaWQgMCwicmVrYS1kaWFsb2ctZGVzY3JpcHRpb24iKSxvdCgoKT0+e28uY29udGVudEVsZW1lbnQ9aSxybigpIT09ZG9jdW1lbnQuYm9keSYmKG8udHJpZ2dlckVsZW1lbnQudmFsdWU9cm4oKSl9KSwoYSxsKT0+KFIoKSwkKGcoYTApLHsiYXMtY2hpbGQiOiIiLGxvb3A6IiIsdHJhcHBlZDpuLnRyYXBGb2N1cyxvbk1vdW50QXV0b0ZvY3VzOmxbNV18fChsWzVdPXU9PnIoIm9wZW5BdXRvRm9jdXMiLHUpKSxvblVubW91bnRBdXRvRm9jdXM6bFs2XXx8KGxbNl09dT0+cigiY2xvc2VBdXRvRm9jdXMiLHUpKX0se2RlZmF1bHQ6TSgoKT0+W3JlKGcoaTApLGZlKHtpZDpnKG8pLmNvbnRlbnRJZCxyZWY6ZyhzKSxhczphLmFzLCJhcy1jaGlsZCI6YS5hc0NoaWxkLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOmEuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLHJvbGU6ImRpYWxvZyIsImFyaWEtZGVzY3JpYmVkYnkiOmcobykuZGVzY3JpcHRpb25JZCwiYXJpYS1sYWJlbGxlZGJ5IjpnKG8pLnRpdGxlSWQsImRhdGEtc3RhdGUiOmcoS0kpKGcobykub3Blbi52YWx1ZSl9LGEuJGF0dHJzLHtvbkRpc21pc3M6bFswXXx8KGxbMF09dT0+ZyhvKS5vbk9wZW5DaGFuZ2UoITEpKSxvbkVzY2FwZUtleURvd246bFsxXXx8KGxbMV09dT0+cigiZXNjYXBlS2V5RG93biIsdSkpLG9uRm9jdXNPdXRzaWRlOmxbMl18fChsWzJdPXU9PnIoImZvY3VzT3V0c2lkZSIsdSkpLG9uSW50ZXJhY3RPdXRzaWRlOmxbM118fChsWzNdPXU9PnIoImludGVyYWN0T3V0c2lkZSIsdSkpLG9uUG9pbnRlckRvd25PdXRzaWRlOmxbNF18fChsWzRdPXU9PnIoInBvaW50ZXJEb3duT3V0c2lkZSIsdSkpfSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFzIiwiYXMtY2hpbGQiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYS1sYWJlbGxlZGJ5IiwiZGF0YS1zdGF0ZSJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLGwwPUpJLFhJPXNlKHtfX25hbWU6IkRpYWxvZ0NvbnRlbnRNb2RhbCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBuPWUscj10LG89bXIoKSxzPUZsKHIpLHtmb3J3YXJkUmVmOmksY3VycmVudEVsZW1lbnQ6YX09VWUoKTtyZXR1cm4gdDAoYSksKGwsdSk9PihSKCksJChsMCxmZSh7Li4ubiwuLi5nKHMpfSx7cmVmOmcoaSksInRyYXAtZm9jdXMiOmcobykub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMCxvbkNsb3NlQXV0b0ZvY3VzOnVbMF18fCh1WzBdPWM9PntjLmRlZmF1bHRQcmV2ZW50ZWR8fChjLnByZXZlbnREZWZhdWx0KCksZyhvKS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoKSl9KSxvblBvaW50ZXJEb3duT3V0c2lkZTp1WzFdfHwodVsxXT1jPT57Y29uc3QgZj1jLmRldGFpbC5vcmlnaW5hbEV2ZW50LGQ9Zi5idXR0b249PT0wJiZmLmN0cmxLZXk9PT0hMDsoZi5idXR0b249PT0yfHxkKSYmYy5wcmV2ZW50RGVmYXVsdCgpfSksb25Gb2N1c091dHNpZGU6dVsyXXx8KHVbMl09Yz0+e2MucHJldmVudERlZmF1bHQoKX0pfSkse2RlZmF1bHQ6TSgoKT0+W1UobC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxaST1YSSxlUj1zZSh7X19uYW1lOiJEaWFsb2dDb250ZW50Tm9uTW9kYWwiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYXBGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLG89RmwodCk7VWUoKTtjb25zdCBzPW1yKCksaT1HKCExKSxhPUcoITEpO3JldHVybihsLHUpPT4oUigpLCQobDAsZmUoey4uLm4sLi4uZyhvKX0seyJ0cmFwLWZvY3VzIjohMSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMSxvbkNsb3NlQXV0b0ZvY3VzOnVbMF18fCh1WzBdPWM9PntjLmRlZmF1bHRQcmV2ZW50ZWR8fChpLnZhbHVlfHxnKHMpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cygpLGMucHJldmVudERlZmF1bHQoKSksaS52YWx1ZT0hMSxhLnZhbHVlPSExfSksb25JbnRlcmFjdE91dHNpZGU6dVsxXXx8KHVbMV09Yz0+e2MuZGVmYXVsdFByZXZlbnRlZHx8KGkudmFsdWU9ITAsYy5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlPT09InBvaW50ZXJkb3duIiYmKGEudmFsdWU9ITApKTtjb25zdCBmPWMudGFyZ2V0O2cocykudHJpZ2dlckVsZW1lbnQudmFsdWU/LmNvbnRhaW5zKGYpJiZjLnByZXZlbnREZWZhdWx0KCksYy5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlPT09ImZvY3VzaW4iJiZhLnZhbHVlJiZjLnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0Ok0oKCk9PltVKGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksdFI9ZVIsblI9c2Uoe19fbmFtZToiRGlhbG9nQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1tcigpLHM9Rmwocikse2ZvcndhcmRSZWY6aX09VWUoKTtyZXR1cm4oYSxsKT0+KFIoKSwkKGcoemwpLHtwcmVzZW50OmEuZm9yY2VNb3VudHx8ZyhvKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpNKCgpPT5bZyhvKS5tb2RhbC52YWx1ZT8oUigpLCQoWkksZmUoe2tleTowLHJlZjpnKGkpfSx7Li4ubiwuLi5nKHMpLC4uLmEuJGF0dHJzfSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooUigpLCQodFIsZmUoe2tleToxLHJlZjpnKGkpfSx7Li4ubiwuLi5nKHMpLC4uLmEuJGF0dHJzfSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLGMwPW5SLHJSPXNlKHtfX25hbWU6IkRpYWxvZ0Rlc2NyaXB0aW9uIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InAifX0sc2V0dXAoZSl7Y29uc3QgdD1lO1VlKCk7Y29uc3Qgbj1tcigpO3JldHVybihyLG8pPT4oUigpLCQoZyhNZSksZmUodCx7aWQ6ZyhuKS5kZXNjcmlwdGlvbklkfSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCJdKSl9fSkseXM9clIsb1I9c2Uoe19fbmFtZToiRGlhbG9nT3ZlcmxheUltcGwiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PW1yKCk7cmV0dXJuIFhiKCEwKSxVZSgpLChuLHIpPT4oUigpLCQoZyhNZSkse2FzOm4uYXMsImFzLWNoaWxkIjpuLmFzQ2hpbGQsImRhdGEtc3RhdGUiOmcodCkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsc3R5bGU6eyJwb2ludGVyLWV2ZW50cyI6ImF1dG8ifX0se2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXN0YXRlIl0pKX19KSxzUj1vUixpUj1zZSh7X19uYW1lOiJEaWFsb2dPdmVybGF5Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PW1yKCkse2ZvcndhcmRSZWY6bn09VWUoKTtyZXR1cm4ocixvKT0+Zyh0KT8ubW9kYWwudmFsdWU/KFIoKSwkKGcoemwpLHtrZXk6MCxwcmVzZW50OnIuZm9yY2VNb3VudHx8Zyh0KS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpNKCgpPT5bcmUoc1IsZmUoci4kYXR0cnMse3JlZjpnKG4pLGFzOnIuYXMsImFzLWNoaWxkIjpyLmFzQ2hpbGR9KSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKTpkZSgidi1pZiIsITApfX0pLHF1PWlSLGFSPXNlKHtfX25hbWU6IlRlbGVwb3J0Iixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJib2R5In0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1RYigpO3JldHVybihuLHIpPT5nKHQpfHxuLmZvcmNlTW91bnQ/KFIoKSwkKHZmLHtrZXk6MCx0bzpuLnRvLGRpc2FibGVkOm4uZGlzYWJsZWQsZGVmZXI6bi5kZWZlcn0sW1Uobi4kc2xvdHMsImRlZmF1bHQiKV0sOCxbInRvIiwiZGlzYWJsZWQiLCJkZWZlciJdKSk6ZGUoInYtaWYiLCEwKX19KSxsZD1hUixsUj1zZSh7X19uYW1lOiJEaWFsb2dQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuKG4scik9PihSKCksJChnKGxkKSx4dChNdCh0KSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx1MD1sUixjUj1zZSh7X19uYW1lOiJEaWFsb2dUaXRsZSIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJoMiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1tcigpO3JldHVybiBVZSgpLChyLG8pPT4oUigpLCQoZyhNZSksZmUodCx7aWQ6ZyhuKS50aXRsZUlkfSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCJdKSl9fSksdnM9Y1IsdVI9c2Uoe19fbmFtZToiRGlhbG9nVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49bXIoKSx7Zm9yd2FyZFJlZjpyLGN1cnJlbnRFbGVtZW50Om99PVVlKCk7cmV0dXJuIG4uY29udGVudElkfHw9Q3Modm9pZCAwLCJyZWthLWRpYWxvZy1jb250ZW50Iiksb3QoKCk9PntuLnRyaWdnZXJFbGVtZW50LnZhbHVlPW8udmFsdWV9KSwocyxpKT0+KFIoKSwkKGcoTWUpLGZlKHQse3JlZjpnKHIpLHR5cGU6cy5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXJpYS1oYXNwb3B1cCI6ImRpYWxvZyIsImFyaWEtZXhwYW5kZWQiOmcobikub3Blbi52YWx1ZXx8ITEsImFyaWEtY29udHJvbHMiOmcobikub3Blbi52YWx1ZT9nKG4pLmNvbnRlbnRJZDp2b2lkIDAsImRhdGEtc3RhdGUiOmcobikub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsb25DbGljazpnKG4pLm9uT3BlblRvZ2dsZX0pLHtkZWZhdWx0Ok0oKCk9PltVKHMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsidHlwZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSIsIm9uQ2xpY2siXSkpfX0pLGYwPXVSO2NvbnN0IFVtPSJkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtIjtmdW5jdGlvbiBtbyhlPXt9KXtjb25zdHtrZXk6dD0iIixpc1Byb3ZpZGVyOm49ITF9PWUscj1gJHt0fUNvbGxlY3Rpb25Qcm92aWRlcmA7bGV0IG87bj8obz17Y29sbGVjdGlvblJlZjpHKCksaXRlbU1hcDpHKG5ldyBNYXApfSxOdChyLG8pKTpvPUtlKHIpO2NvbnN0IHM9KGM9ITEpPT57Y29uc3QgZj1vLmNvbGxlY3Rpb25SZWYudmFsdWU7aWYoIWYpcmV0dXJuW107Y29uc3QgZD1BcnJheS5mcm9tKGYucXVlcnlTZWxlY3RvckFsbChgWyR7VW19XWApKSxtPUFycmF5LmZyb20oby5pdGVtTWFwLnZhbHVlLnZhbHVlcygpKS5zb3J0KCh5LF8pPT5kLmluZGV4T2YoeS5yZWYpLWQuaW5kZXhPZihfLnJlZikpO3JldHVybiBjP206bS5maWx0ZXIoeT0+eS5yZWYuZGF0YXNldC5kaXNhYmxlZCE9PSIiKX0saT1zZSh7bmFtZToiQ29sbGVjdGlvblNsb3QiLGluaGVyaXRBdHRyczohMSxzZXR1cChjLHtzbG90czpmLGF0dHJzOmR9KXtjb25zdHtwcmltaXRpdmVFbGVtZW50OnAsY3VycmVudEVsZW1lbnQ6bX09Qm0oKTtyZXR1cm4gUGUobSwoKT0+e28uY29sbGVjdGlvblJlZi52YWx1ZT1tLnZhbHVlfSksKCk9PkZlKGpvLHtyZWY6cCwuLi5kfSxmKX19KSxhPXNlKHtuYW1lOiJDb2xsZWN0aW9uSXRlbSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOnt2YWx1ZTp7dmFsaWRhdG9yOigpPT4hMH19LHNldHVwKGMse3Nsb3RzOmYsYXR0cnM6ZH0pe2NvbnN0e3ByaW1pdGl2ZUVsZW1lbnQ6cCxjdXJyZW50RWxlbWVudDptfT1CbSgpO3JldHVybiBvbih5PT57aWYobS52YWx1ZSl7Y29uc3QgXz1MbyhtLnZhbHVlKTtvLml0ZW1NYXAudmFsdWUuc2V0KF8se3JlZjptLnZhbHVlLHZhbHVlOmMudmFsdWV9KSx5KCgpPT5vLml0ZW1NYXAudmFsdWUuZGVsZXRlKF8pKX19KSwoKT0+RmUoam8sey4uLmQsW1VtXToiIixyZWY6cH0sZil9fSksbD1OKCgpPT5BcnJheS5mcm9tKG8uaXRlbU1hcC52YWx1ZS52YWx1ZXMoKSkpLHU9TigoKT0+by5pdGVtTWFwLnZhbHVlLnNpemUpO3JldHVybntnZXRJdGVtczpzLHJlYWN0aXZlSXRlbXM6bCxpdGVtTWFwU2l6ZTp1LENvbGxlY3Rpb25TbG90OmksQ29sbGVjdGlvbkl0ZW06YX19dmFyIGZSPXNlKHtfX25hbWU6IlZpc3VhbGx5SGlkZGVuIixwcm9wczp7ZmVhdHVyZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZm9jdXNhYmxlIn0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAoZSl7cmV0dXJuKHQsbik9PihSKCksJChnKE1lKSx7YXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiYXJpYS1oaWRkZW4iOnQuZmVhdHVyZT09PSJmb2N1c2FibGUiPyJ0cnVlIjp2b2lkIDAsImRhdGEtaGlkZGVuIjp0LmZlYXR1cmU9PT0iZnVsbHktaGlkZGVuIj8iIjp2b2lkIDAsdGFiaW5kZXg6dC5mZWF0dXJlPT09ImZ1bGx5LWhpZGRlbiI/Ii0xIjp2b2lkIDAsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHBhZGRpbmc6MCxtYXJnaW46Ii0xcHgiLG92ZXJmbG93OiJoaWRkZW4iLGNsaXA6InJlY3QoMCwgMCwgMCwgMCkiLGNsaXBQYXRoOiJpbnNldCg1MCUpIix3aGl0ZVNwYWNlOiJub3dyYXAiLHdvcmRXcmFwOiJub3JtYWwiLHRvcDoiLTFweCIsbGVmdDoiLTFweCJ9fSx7ZGVmYXVsdDpNKCgpPT5bVSh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImFyaWEtaGlkZGVuIiwiZGF0YS1oaWRkZW4iLCJ0YWJpbmRleCJdKSl9fSksVmk9ZlI7Y29uc3RbZDAsZFJdPWduKCJQb3BwZXJSb290Iik7dmFyIHBSPXNlKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJQb3BwZXJSb290IixzZXR1cChlKXtjb25zdCB0PUcoKTtyZXR1cm4gZFIoe2FuY2hvcjp0LG9uQW5jaG9yQ2hhbmdlOm49PnQudmFsdWU9bn0pLChuLHIpPT5VKG4uJHNsb3RzLCJkZWZhdWx0Iil9fSksbVI9cFIsaFI9c2Uoe19fbmFtZToiUG9wcGVyQW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSx7Zm9yd2FyZFJlZjpuLGN1cnJlbnRFbGVtZW50OnJ9PVVlKCksbz1kMCgpO3JldHVybiBDZygoKT0+e28ub25BbmNob3JDaGFuZ2UodC5yZWZlcmVuY2U/P3IudmFsdWUpfSksKHMsaSk9PihSKCksJChnKE1lKSx7cmVmOmcobiksYXM6cy5hcywiYXMtY2hpbGQiOnMuYXNDaGlsZH0se2RlZmF1bHQ6TSgoKT0+W1Uocy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiXSkpfX0pLGdSPWhSO2NvbnN0IHlSPXtrZXk6MCxkOiJNMCAwTDYgNkwxMiAwIn0sdlI9e2tleToxLGQ6Ik0wIDBMNC41ODU3OSA0LjU4NTc5QzUuMzY2ODMgNS4zNjY4MyA2LjYzMzE2IDUuMzY2ODQgNy40MTQyMSA0LjU4NTc5TDEyIDAifTt2YXIgYlI9c2Uoe19fbmFtZToiQXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIFVlKCksKG4scik9PihSKCksJChnKE1lKSxmZSh0LHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCx2aWV3Qm94Om4uYXNDaGlsZD92b2lkIDA6IjAgMCAxMiA2IixwcmVzZXJ2ZUFzcGVjdFJhdGlvOm4uYXNDaGlsZD92b2lkIDA6Im5vbmUifSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bbi5yb3VuZGVkPyhSKCksX2UoInBhdGgiLHZSKSk6KFIoKSxfZSgicGF0aCIseVIpKV0pXSksXzozfSwxNixbIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iXSkpfX0pLHdSPWJSO2Z1bmN0aW9uIF9SKGUpe3JldHVybiBlIT09bnVsbH1mdW5jdGlvbiB4UihlKXtyZXR1cm57bmFtZToidHJhbnNmb3JtT3JpZ2luIixvcHRpb25zOmUsZm4odCl7Y29uc3R7cGxhY2VtZW50Om4scmVjdHM6cixtaWRkbGV3YXJlRGF0YTpvfT10LGk9by5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MCxhPWk/MDplLmFycm93V2lkdGgsbD1pPzA6ZS5hcnJvd0hlaWdodCxbdSxjXT1GdShuKSxmPXtzdGFydDoiMCUiLGNlbnRlcjoiNTAlIixlbmQ6IjEwMCUifVtjXSxkPShvLmFycm93Py54Pz8wKSthLzIscD0oby5hcnJvdz8ueT8/MCkrbC8yO2xldCBtPSIiLHk9IiI7cmV0dXJuIHU9PT0iYm90dG9tIj8obT1pP2Y6YCR7ZH1weGAseT1gJHstbH1weGApOnU9PT0idG9wIj8obT1pP2Y6YCR7ZH1weGAseT1gJHtyLmZsb2F0aW5nLmhlaWdodCtsfXB4YCk6dT09PSJyaWdodCI/KG09YCR7LWx9cHhgLHk9aT9mOmAke3B9cHhgKTp1PT09ImxlZnQiJiYobT1gJHtyLmZsb2F0aW5nLndpZHRoK2x9cHhgLHk9aT9mOmAke3B9cHhgKSx7ZGF0YTp7eDptLHl9fX19fWZ1bmN0aW9uIEZ1KGUpe2NvbnN0W3Qsbj0iY2VudGVyIl09ZS5zcGxpdCgiLSIpO3JldHVyblt0LG5dfWNvbnN0IHAwPVsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0sSG09WyJzdGFydCIsImVuZCJdLFdtPXAwLnJlZHVjZSgoZSx0KT0+ZS5jb25jYXQodCx0KyItIitIbVswXSx0KyItIitIbVsxXSksW10pLEtuPU1hdGgubWluLFF0PU1hdGgubWF4LFphPU1hdGgucm91bmQsZ2E9TWF0aC5mbG9vcixmcj1lPT4oe3g6ZSx5OmV9KSxTUj17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtmdW5jdGlvbiB6dShlLHQsbil7cmV0dXJuIFF0KGUsS24odCxuKSl9ZnVuY3Rpb24gUW4oZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSh0KTplfWZ1bmN0aW9uIFRuKGUpe3JldHVybiBlLnNwbGl0KCItIilbMF19ZnVuY3Rpb24gVm4oZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVsxXX1mdW5jdGlvbiBjZChlKXtyZXR1cm4gZT09PSJ4Ij8ieSI6IngifWZ1bmN0aW9uIHVkKGUpe3JldHVybiBlPT09InkiPyJoZWlnaHQiOiJ3aWR0aCJ9ZnVuY3Rpb24gem4oZSl7Y29uc3QgdD1lWzBdO3JldHVybiB0PT09InQifHx0PT09ImIiPyJ5IjoieCJ9ZnVuY3Rpb24gZmQoZSl7cmV0dXJuIGNkKHpuKGUpKX1mdW5jdGlvbiBtMChlLHQsbil7bj09PXZvaWQgMCYmKG49ITEpO2NvbnN0IHI9Vm4oZSksbz1mZChlKSxzPXVkKG8pO2xldCBpPW89PT0ieCI/cj09PShuPyJlbmQiOiJzdGFydCIpPyJyaWdodCI6ImxlZnQiOnI9PT0ic3RhcnQiPyJib3R0b20iOiJ0b3AiO3JldHVybiB0LnJlZmVyZW5jZVtzXT50LmZsb2F0aW5nW3NdJiYoaT10bChpKSksW2ksdGwoaSldfWZ1bmN0aW9uIGtSKGUpe2NvbnN0IHQ9dGwoZSk7cmV0dXJuW2VsKGUpLHQsZWwodCldfWZ1bmN0aW9uIGVsKGUpe3JldHVybiBlLmluY2x1ZGVzKCJzdGFydCIpP2UucmVwbGFjZSgic3RhcnQiLCJlbmQiKTplLnJlcGxhY2UoImVuZCIsInN0YXJ0Iil9Y29uc3QgR209WyJsZWZ0IiwicmlnaHQiXSxLbT1bInJpZ2h0IiwibGVmdCJdLEVSPVsidG9wIiwiYm90dG9tIl0sVFI9WyJib3R0b20iLCJ0b3AiXTtmdW5jdGlvbiBDUihlLHQsbil7c3dpdGNoKGUpe2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6cmV0dXJuIG4/dD9LbTpHbTp0P0dtOkttO2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6cmV0dXJuIHQ/RVI6VFI7ZGVmYXVsdDpyZXR1cm5bXX19ZnVuY3Rpb24gQVIoZSx0LG4scil7Y29uc3Qgbz1WbihlKTtsZXQgcz1DUihUbihlKSxuPT09InN0YXJ0IixyKTtyZXR1cm4gbyYmKHM9cy5tYXAoaT0+aSsiLSIrbyksdCYmKHM9cy5jb25jYXQocy5tYXAoZWwpKSkpLHN9ZnVuY3Rpb24gdGwoZSl7Y29uc3QgdD1UbihlKTtyZXR1cm4gU1JbdF0rZS5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gT1IoZSl7cmV0dXJue3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLmV9fWZ1bmN0aW9uIGRkKGUpe3JldHVybiB0eXBlb2YgZSE9Im51bWJlciI/T1IoZSk6e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfX1mdW5jdGlvbiBBcyhlKXtjb25zdHt4OnQseTpuLHdpZHRoOnIsaGVpZ2h0Om99PWU7cmV0dXJue3dpZHRoOnIsaGVpZ2h0Om8sdG9wOm4sbGVmdDp0LHJpZ2h0OnQrcixib3R0b206bitvLHg6dCx5Om59fWZ1bmN0aW9uIFFtKGUsdCxuKXtsZXR7cmVmZXJlbmNlOnIsZmxvYXRpbmc6b309ZTtjb25zdCBzPXpuKHQpLGk9ZmQodCksYT11ZChpKSxsPVRuKHQpLHU9cz09PSJ5IixjPXIueCtyLndpZHRoLzItby53aWR0aC8yLGY9ci55K3IuaGVpZ2h0LzItby5oZWlnaHQvMixkPXJbYV0vMi1vW2FdLzI7bGV0IHA7c3dpdGNoKGwpe2Nhc2UidG9wIjpwPXt4OmMseTpyLnktby5oZWlnaHR9O2JyZWFrO2Nhc2UiYm90dG9tIjpwPXt4OmMseTpyLnkrci5oZWlnaHR9O2JyZWFrO2Nhc2UicmlnaHQiOnA9e3g6ci54K3Iud2lkdGgseTpmfTticmVhaztjYXNlImxlZnQiOnA9e3g6ci54LW8ud2lkdGgseTpmfTticmVhaztkZWZhdWx0OnA9e3g6ci54LHk6ci55fX1zd2l0Y2goVm4odCkpe2Nhc2Uic3RhcnQiOnBbaV0tPWQqKG4mJnU/LTE6MSk7YnJlYWs7Y2FzZSJlbmQiOnBbaV0rPWQqKG4mJnU/LTE6MSk7YnJlYWt9cmV0dXJuIHB9YXN5bmMgZnVuY3Rpb24gUFIoZSx0KXt2YXIgbjt0PT09dm9pZCAwJiYodD17fSk7Y29uc3R7eDpyLHk6byxwbGF0Zm9ybTpzLHJlY3RzOmksZWxlbWVudHM6YSxzdHJhdGVneTpsfT1lLHtib3VuZGFyeTp1PSJjbGlwcGluZ0FuY2VzdG9ycyIscm9vdEJvdW5kYXJ5OmM9InZpZXdwb3J0IixlbGVtZW50Q29udGV4dDpmPSJmbG9hdGluZyIsYWx0Qm91bmRhcnk6ZD0hMSxwYWRkaW5nOnA9MH09UW4odCxlKSxtPWRkKHApLF89YVtkP2Y9PT0iZmxvYXRpbmciPyJyZWZlcmVuY2UiOiJmbG9hdGluZyI6Zl0sdz1Bcyhhd2FpdCBzLmdldENsaXBwaW5nUmVjdCh7ZWxlbWVudDoobj1hd2FpdChzLmlzRWxlbWVudD09bnVsbD92b2lkIDA6cy5pc0VsZW1lbnQoXykpKT09bnVsbHx8bj9fOl8uY29udGV4dEVsZW1lbnR8fGF3YWl0KHMuZ2V0RG9jdW1lbnRFbGVtZW50PT1udWxsP3ZvaWQgMDpzLmdldERvY3VtZW50RWxlbWVudChhLmZsb2F0aW5nKSksYm91bmRhcnk6dSxyb290Qm91bmRhcnk6YyxzdHJhdGVneTpsfSkpLHY9Zj09PSJmbG9hdGluZyI/e3g6cix5Om8sd2lkdGg6aS5mbG9hdGluZy53aWR0aCxoZWlnaHQ6aS5mbG9hdGluZy5oZWlnaHR9OmkucmVmZXJlbmNlLGg9YXdhaXQocy5nZXRPZmZzZXRQYXJlbnQ9PW51bGw/dm9pZCAwOnMuZ2V0T2Zmc2V0UGFyZW50KGEuZmxvYXRpbmcpKSxiPWF3YWl0KHMuaXNFbGVtZW50PT1udWxsP3ZvaWQgMDpzLmlzRWxlbWVudChoKSk/YXdhaXQocy5nZXRTY2FsZT09bnVsbD92b2lkIDA6cy5nZXRTY2FsZShoKSl8fHt4OjEseToxfTp7eDoxLHk6MX0seD1BcyhzLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IHMuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOmEscmVjdDp2LG9mZnNldFBhcmVudDpoLHN0cmF0ZWd5Omx9KTp2KTtyZXR1cm57dG9wOih3LnRvcC14LnRvcCttLnRvcCkvYi55LGJvdHRvbTooeC5ib3R0b20tdy5ib3R0b20rbS5ib3R0b20pL2IueSxsZWZ0Oih3LmxlZnQteC5sZWZ0K20ubGVmdCkvYi54LHJpZ2h0Oih4LnJpZ2h0LXcucmlnaHQrbS5yaWdodCkvYi54fX1jb25zdCBJUj01MCxSUj1hc3luYyhlLHQsbik9Pntjb25zdHtwbGFjZW1lbnQ6cj0iYm90dG9tIixzdHJhdGVneTpvPSJhYnNvbHV0ZSIsbWlkZGxld2FyZTpzPVtdLHBsYXRmb3JtOml9PW4sYT1pLmRldGVjdE92ZXJmbG93P2k6ey4uLmksZGV0ZWN0T3ZlcmZsb3c6UFJ9LGw9YXdhaXQoaS5pc1JUTD09bnVsbD92b2lkIDA6aS5pc1JUTCh0KSk7bGV0IHU9YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pLHt4OmMseTpmfT1RbSh1LHIsbCksZD1yLHA9MDtjb25zdCBtPXt9O2ZvcihsZXQgeT0wO3k8cy5sZW5ndGg7eSsrKXtjb25zdCBfPXNbeV07aWYoIV8pY29udGludWU7Y29uc3R7bmFtZTp3LGZuOnZ9PV8se3g6aCx5OmIsZGF0YTp4LHJlc2V0OlN9PWF3YWl0IHYoe3g6Yyx5OmYsaW5pdGlhbFBsYWNlbWVudDpyLHBsYWNlbWVudDpkLHN0cmF0ZWd5Om8sbWlkZGxld2FyZURhdGE6bSxyZWN0czp1LHBsYXRmb3JtOmEsZWxlbWVudHM6e3JlZmVyZW5jZTplLGZsb2F0aW5nOnR9fSk7Yz1oPz9jLGY9Yj8/ZixtW3ddPXsuLi5tW3ddLC4uLnh9LFMmJnA8SVImJihwKyssdHlwZW9mIFM9PSJvYmplY3QiJiYoUy5wbGFjZW1lbnQmJihkPVMucGxhY2VtZW50KSxTLnJlY3RzJiYodT1TLnJlY3RzPT09ITA/YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pOlMucmVjdHMpLHt4OmMseTpmfT1RbSh1LGQsbCkpLHk9LTEpfXJldHVybnt4OmMseTpmLHBsYWNlbWVudDpkLHN0cmF0ZWd5Om8sbWlkZGxld2FyZURhdGE6bX19LE5SPWU9Pih7bmFtZToiYXJyb3ciLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpyLHBsYWNlbWVudDpvLHJlY3RzOnMscGxhdGZvcm06aSxlbGVtZW50czphLG1pZGRsZXdhcmVEYXRhOmx9PXQse2VsZW1lbnQ6dSxwYWRkaW5nOmM9MH09UW4oZSx0KXx8e307aWYodT09bnVsbClyZXR1cm57fTtjb25zdCBmPWRkKGMpLGQ9e3g6bix5OnJ9LHA9ZmQobyksbT11ZChwKSx5PWF3YWl0IGkuZ2V0RGltZW5zaW9ucyh1KSxfPXA9PT0ieSIsdz1fPyJ0b3AiOiJsZWZ0Iix2PV8/ImJvdHRvbSI6InJpZ2h0IixoPV8/ImNsaWVudEhlaWdodCI6ImNsaWVudFdpZHRoIixiPXMucmVmZXJlbmNlW21dK3MucmVmZXJlbmNlW3BdLWRbcF0tcy5mbG9hdGluZ1ttXSx4PWRbcF0tcy5yZWZlcmVuY2VbcF0sUz1hd2FpdChpLmdldE9mZnNldFBhcmVudD09bnVsbD92b2lkIDA6aS5nZXRPZmZzZXRQYXJlbnQodSkpO2xldCBrPVM/U1toXTowOygha3x8IWF3YWl0KGkuaXNFbGVtZW50PT1udWxsP3ZvaWQgMDppLmlzRWxlbWVudChTKSkpJiYoaz1hLmZsb2F0aW5nW2hdfHxzLmZsb2F0aW5nW21dKTtjb25zdCBUPWIvMi14LzIsQz1rLzIteVttXS8yLTEsUD1LbihmW3ddLEMpLEY9S24oZlt2XSxDKSxEPVAsVz1rLXlbbV0tRixMPWsvMi15W21dLzIrVCxqPXp1KEQsTCxXKSxJPSFsLmFycm93JiZWbihvKSE9bnVsbCYmTCE9PWomJnMucmVmZXJlbmNlW21dLzItKEw8RD9QOkYpLXlbbV0vMjwwLFY9ST9MPEQ/TC1EOkwtVzowO3JldHVybntbcF06ZFtwXStWLGRhdGE6e1twXTpqLGNlbnRlck9mZnNldDpMLWotViwuLi5JJiZ7YWxpZ25tZW50T2Zmc2V0OlZ9fSxyZXNldDpJfX19KTtmdW5jdGlvbiBEUihlLHQsbil7cmV0dXJuKGU/Wy4uLm4uZmlsdGVyKG89PlZuKG8pPT09ZSksLi4ubi5maWx0ZXIobz0+Vm4obykhPT1lKV06bi5maWx0ZXIobz0+VG4obyk9PT1vKSkuZmlsdGVyKG89PmU/Vm4obyk9PT1lfHwodD9lbChvKSE9PW86ITEpOiEwKX1jb25zdCBMUj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJhdXRvUGxhY2VtZW50IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scixvO2NvbnN0e3JlY3RzOnMsbWlkZGxld2FyZURhdGE6aSxwbGFjZW1lbnQ6YSxwbGF0Zm9ybTpsLGVsZW1lbnRzOnV9PXQse2Nyb3NzQXhpczpjPSExLGFsaWdubWVudDpmLGFsbG93ZWRQbGFjZW1lbnRzOmQ9V20sYXV0b0FsaWdubWVudDpwPSEwLC4uLm19PVFuKGUsdCkseT1mIT09dm9pZCAwfHxkPT09V20/RFIoZnx8bnVsbCxwLGQpOmQsXz1hd2FpdCBsLmRldGVjdE92ZXJmbG93KHQsbSksdz0oKG49aS5hdXRvUGxhY2VtZW50KT09bnVsbD92b2lkIDA6bi5pbmRleCl8fDAsdj15W3ddO2lmKHY9PW51bGwpcmV0dXJue307Y29uc3QgaD1tMCh2LHMsYXdhaXQobC5pc1JUTD09bnVsbD92b2lkIDA6bC5pc1JUTCh1LmZsb2F0aW5nKSkpO2lmKGEhPT12KXJldHVybntyZXNldDp7cGxhY2VtZW50OnlbMF19fTtjb25zdCBiPVtfW1RuKHYpXSxfW2hbMF1dLF9baFsxXV1dLHg9Wy4uLigocj1pLmF1dG9QbGFjZW1lbnQpPT1udWxsP3ZvaWQgMDpyLm92ZXJmbG93cyl8fFtdLHtwbGFjZW1lbnQ6dixvdmVyZmxvd3M6Yn1dLFM9eVt3KzFdO2lmKFMpcmV0dXJue2RhdGE6e2luZGV4OncrMSxvdmVyZmxvd3M6eH0scmVzZXQ6e3BsYWNlbWVudDpTfX07Y29uc3Qgaz14Lm1hcChQPT57Y29uc3QgRj1WbihQLnBsYWNlbWVudCk7cmV0dXJuW1AucGxhY2VtZW50LEYmJmM/UC5vdmVyZmxvd3Muc2xpY2UoMCwyKS5yZWR1Y2UoKEQsVyk9PkQrVywwKTpQLm92ZXJmbG93c1swXSxQLm92ZXJmbG93c119KS5zb3J0KChQLEYpPT5QWzFdLUZbMV0pLEM9KChvPWsuZmlsdGVyKFA9PlBbMl0uc2xpY2UoMCxWbihQWzBdKT8yOjMpLmV2ZXJ5KEY9PkY8PTApKVswXSk9PW51bGw/dm9pZCAwOm9bMF0pfHxrWzBdWzBdO3JldHVybiBDIT09YT97ZGF0YTp7aW5kZXg6dysxLG92ZXJmbG93czp4fSxyZXNldDp7cGxhY2VtZW50OkN9fTp7fX19fSwkUj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJmbGlwIixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHtwbGFjZW1lbnQ6byxtaWRkbGV3YXJlRGF0YTpzLHJlY3RzOmksaW5pdGlhbFBsYWNlbWVudDphLHBsYXRmb3JtOmwsZWxlbWVudHM6dX09dCx7bWFpbkF4aXM6Yz0hMCxjcm9zc0F4aXM6Zj0hMCxmYWxsYmFja1BsYWNlbWVudHM6ZCxmYWxsYmFja1N0cmF0ZWd5OnA9ImJlc3RGaXQiLGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246bT0ibm9uZSIsZmxpcEFsaWdubWVudDp5PSEwLC4uLl99PVFuKGUsdCk7aWYoKG49cy5hcnJvdykhPW51bGwmJm4uYWxpZ25tZW50T2Zmc2V0KXJldHVybnt9O2NvbnN0IHc9VG4obyksdj16bihhKSxoPVRuKGEpPT09YSxiPWF3YWl0KGwuaXNSVEw9PW51bGw/dm9pZCAwOmwuaXNSVEwodS5mbG9hdGluZykpLHg9ZHx8KGh8fCF5P1t0bChhKV06a1IoYSkpLFM9bSE9PSJub25lIjshZCYmUyYmeC5wdXNoKC4uLkFSKGEseSxtLGIpKTtjb25zdCBrPVthLC4uLnhdLFQ9YXdhaXQgbC5kZXRlY3RPdmVyZmxvdyh0LF8pLEM9W107bGV0IFA9KChyPXMuZmxpcCk9PW51bGw/dm9pZCAwOnIub3ZlcmZsb3dzKXx8W107aWYoYyYmQy5wdXNoKFRbd10pLGYpe2NvbnN0IEw9bTAobyxpLGIpO0MucHVzaChUW0xbMF1dLFRbTFsxXV0pfWlmKFA9Wy4uLlAse3BsYWNlbWVudDpvLG92ZXJmbG93czpDfV0sIUMuZXZlcnkoTD0+TDw9MCkpe3ZhciBGLEQ7Y29uc3QgTD0oKChGPXMuZmxpcCk9PW51bGw/dm9pZCAwOkYuaW5kZXgpfHwwKSsxLGo9a1tMXTtpZihqJiYoIShmPT09ImFsaWdubWVudCI/diE9PXpuKGopOiExKXx8UC5ldmVyeShCPT56bihCLnBsYWNlbWVudCk9PT12P0Iub3ZlcmZsb3dzWzBdPjA6ITApKSlyZXR1cm57ZGF0YTp7aW5kZXg6TCxvdmVyZmxvd3M6UH0scmVzZXQ6e3BsYWNlbWVudDpqfX07bGV0IEk9KEQ9UC5maWx0ZXIoVj0+Vi5vdmVyZmxvd3NbMF08PTApLnNvcnQoKFYsQik9PlYub3ZlcmZsb3dzWzFdLUIub3ZlcmZsb3dzWzFdKVswXSk9PW51bGw/dm9pZCAwOkQucGxhY2VtZW50O2lmKCFJKXN3aXRjaChwKXtjYXNlImJlc3RGaXQiOnt2YXIgVztjb25zdCBWPShXPVAuZmlsdGVyKEI9PntpZihTKXtjb25zdCBpZT16bihCLnBsYWNlbWVudCk7cmV0dXJuIGllPT09dnx8aWU9PT0ieSJ9cmV0dXJuITB9KS5tYXAoQj0+W0IucGxhY2VtZW50LEIub3ZlcmZsb3dzLmZpbHRlcihpZT0+aWU+MCkucmVkdWNlKChpZSxuZSk9PmllK25lLDApXSkuc29ydCgoQixpZSk9PkJbMV0taWVbMV0pWzBdKT09bnVsbD92b2lkIDA6V1swXTtWJiYoST1WKTticmVha31jYXNlImluaXRpYWxQbGFjZW1lbnQiOkk9YTticmVha31pZihvIT09SSlyZXR1cm57cmVzZXQ6e3BsYWNlbWVudDpJfX19cmV0dXJue319fX07ZnVuY3Rpb24gWW0oZSx0KXtyZXR1cm57dG9wOmUudG9wLXQuaGVpZ2h0LHJpZ2h0OmUucmlnaHQtdC53aWR0aCxib3R0b206ZS5ib3R0b20tdC5oZWlnaHQsbGVmdDplLmxlZnQtdC53aWR0aH19ZnVuY3Rpb24gSm0oZSl7cmV0dXJuIHAwLnNvbWUodD0+ZVt0XT49MCl9Y29uc3QgTVI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToiaGlkZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3JlY3RzOm4scGxhdGZvcm06cn09dCx7c3RyYXRlZ3k6bz0icmVmZXJlbmNlSGlkZGVuIiwuLi5zfT1RbihlLHQpO3N3aXRjaChvKXtjYXNlInJlZmVyZW5jZUhpZGRlbiI6e2NvbnN0IGk9YXdhaXQgci5kZXRlY3RPdmVyZmxvdyh0LHsuLi5zLGVsZW1lbnRDb250ZXh0OiJyZWZlcmVuY2UifSksYT1ZbShpLG4ucmVmZXJlbmNlKTtyZXR1cm57ZGF0YTp7cmVmZXJlbmNlSGlkZGVuT2Zmc2V0czphLHJlZmVyZW5jZUhpZGRlbjpKbShhKX19fWNhc2UiZXNjYXBlZCI6e2NvbnN0IGk9YXdhaXQgci5kZXRlY3RPdmVyZmxvdyh0LHsuLi5zLGFsdEJvdW5kYXJ5OiEwfSksYT1ZbShpLG4uZmxvYXRpbmcpO3JldHVybntkYXRhOntlc2NhcGVkT2Zmc2V0czphLGVzY2FwZWQ6Sm0oYSl9fX1kZWZhdWx0OnJldHVybnt9fX19fTtmdW5jdGlvbiBoMChlKXtjb25zdCB0PUtuKC4uLmUubWFwKHM9PnMubGVmdCkpLG49S24oLi4uZS5tYXAocz0+cy50b3ApKSxyPVF0KC4uLmUubWFwKHM9PnMucmlnaHQpKSxvPVF0KC4uLmUubWFwKHM9PnMuYm90dG9tKSk7cmV0dXJue3g6dCx5Om4sd2lkdGg6ci10LGhlaWdodDpvLW59fWZ1bmN0aW9uIEJSKGUpe2NvbnN0IHQ9ZS5zbGljZSgpLnNvcnQoKG8scyk9Pm8ueS1zLnkpLG49W107bGV0IHI9bnVsbDtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3Qgcz10W29dOyFyfHxzLnktci55PnIuaGVpZ2h0LzI/bi5wdXNoKFtzXSk6bltuLmxlbmd0aC0xXS5wdXNoKHMpLHI9c31yZXR1cm4gbi5tYXAobz0+QXMoaDAobykpKX1jb25zdCBxUj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJpbmxpbmUiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixlbGVtZW50czpyLHJlY3RzOm8scGxhdGZvcm06cyxzdHJhdGVneTppfT10LHtwYWRkaW5nOmE9Mix4OmwseTp1fT1RbihlLHQpLGM9QXJyYXkuZnJvbShhd2FpdChzLmdldENsaWVudFJlY3RzPT1udWxsP3ZvaWQgMDpzLmdldENsaWVudFJlY3RzKHIucmVmZXJlbmNlKSl8fFtdKSxmPUJSKGMpLGQ9QXMoaDAoYykpLHA9ZGQoYSk7ZnVuY3Rpb24gbSgpe2lmKGYubGVuZ3RoPT09MiYmZlswXS5sZWZ0PmZbMV0ucmlnaHQmJmwhPW51bGwmJnUhPW51bGwpcmV0dXJuIGYuZmluZChfPT5sPl8ubGVmdC1wLmxlZnQmJmw8Xy5yaWdodCtwLnJpZ2h0JiZ1Pl8udG9wLXAudG9wJiZ1PF8uYm90dG9tK3AuYm90dG9tKXx8ZDtpZihmLmxlbmd0aD49Mil7aWYoem4obik9PT0ieSIpe2NvbnN0IFA9ZlswXSxGPWZbZi5sZW5ndGgtMV0sRD1UbihuKT09PSJ0b3AiLFc9UC50b3AsTD1GLmJvdHRvbSxqPUQ/UC5sZWZ0OkYubGVmdCxJPUQ/UC5yaWdodDpGLnJpZ2h0LFY9SS1qLEI9TC1XO3JldHVybnt0b3A6Vyxib3R0b206TCxsZWZ0OmoscmlnaHQ6SSx3aWR0aDpWLGhlaWdodDpCLHg6aix5Old9fWNvbnN0IF89VG4obik9PT0ibGVmdCIsdz1RdCguLi5mLm1hcChQPT5QLnJpZ2h0KSksdj1LbiguLi5mLm1hcChQPT5QLmxlZnQpKSxoPWYuZmlsdGVyKFA9Pl8/UC5sZWZ0PT09djpQLnJpZ2h0PT09dyksYj1oWzBdLnRvcCx4PWhbaC5sZW5ndGgtMV0uYm90dG9tLFM9dixrPXcsVD1rLVMsQz14LWI7cmV0dXJue3RvcDpiLGJvdHRvbTp4LGxlZnQ6UyxyaWdodDprLHdpZHRoOlQsaGVpZ2h0OkMseDpTLHk6Yn19cmV0dXJuIGR9Y29uc3QgeT1hd2FpdCBzLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOntnZXRCb3VuZGluZ0NsaWVudFJlY3Q6bX0sZmxvYXRpbmc6ci5mbG9hdGluZyxzdHJhdGVneTppfSk7cmV0dXJuIG8ucmVmZXJlbmNlLnghPT15LnJlZmVyZW5jZS54fHxvLnJlZmVyZW5jZS55IT09eS5yZWZlcmVuY2UueXx8by5yZWZlcmVuY2Uud2lkdGghPT15LnJlZmVyZW5jZS53aWR0aHx8by5yZWZlcmVuY2UuaGVpZ2h0IT09eS5yZWZlcmVuY2UuaGVpZ2h0P3tyZXNldDp7cmVjdHM6eX19Ont9fX19LGcwPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2FzeW5jIGZ1bmN0aW9uIEZSKGUsdCl7Y29uc3R7cGxhY2VtZW50Om4scGxhdGZvcm06cixlbGVtZW50czpvfT1lLHM9YXdhaXQoci5pc1JUTD09bnVsbD92b2lkIDA6ci5pc1JUTChvLmZsb2F0aW5nKSksaT1UbihuKSxhPVZuKG4pLGw9em4obik9PT0ieSIsdT1nMC5oYXMoaSk/LTE6MSxjPXMmJmw/LTE6MSxmPVFuKHQsZSk7bGV0e21haW5BeGlzOmQsY3Jvc3NBeGlzOnAsYWxpZ25tZW50QXhpczptfT10eXBlb2YgZj09Im51bWJlciI/e21haW5BeGlzOmYsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6Zi5tYWluQXhpc3x8MCxjcm9zc0F4aXM6Zi5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpmLmFsaWdubWVudEF4aXN9O3JldHVybiBhJiZ0eXBlb2YgbT09Im51bWJlciImJihwPWE9PT0iZW5kIj9tKi0xOm0pLGw/e3g6cCpjLHk6ZCp1fTp7eDpkKnUseTpwKmN9fWNvbnN0IHpSPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHt4Om8seTpzLHBsYWNlbWVudDppLG1pZGRsZXdhcmVEYXRhOmF9PXQsbD1hd2FpdCBGUih0LGUpO3JldHVybiBpPT09KChuPWEub2Zmc2V0KT09bnVsbD92b2lkIDA6bi5wbGFjZW1lbnQpJiYocj1hLmFycm93KSE9bnVsbCYmci5hbGlnbm1lbnRPZmZzZXQ/e306e3g6bytsLngseTpzK2wueSxkYXRhOnsuLi5sLHBsYWNlbWVudDppfX19fX0salI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToic2hpZnQiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpyLHBsYWNlbWVudDpvLHBsYXRmb3JtOnN9PXQse21haW5BeGlzOmk9ITAsY3Jvc3NBeGlzOmE9ITEsbGltaXRlcjpsPXtmbjp3PT57bGV0e3g6dix5Omh9PXc7cmV0dXJue3g6dix5Omh9fX0sLi4udX09UW4oZSx0KSxjPXt4Om4seTpyfSxmPWF3YWl0IHMuZGV0ZWN0T3ZlcmZsb3codCx1KSxkPXpuKFRuKG8pKSxwPWNkKGQpO2xldCBtPWNbcF0seT1jW2RdO2lmKGkpe2NvbnN0IHc9cD09PSJ5Ij8idG9wIjoibGVmdCIsdj1wPT09InkiPyJib3R0b20iOiJyaWdodCIsaD1tK2Zbd10sYj1tLWZbdl07bT16dShoLG0sYil9aWYoYSl7Y29uc3Qgdz1kPT09InkiPyJ0b3AiOiJsZWZ0Iix2PWQ9PT0ieSI/ImJvdHRvbSI6InJpZ2h0IixoPXkrZlt3XSxiPXktZlt2XTt5PXp1KGgseSxiKX1jb25zdCBfPWwuZm4oey4uLnQsW3BdOm0sW2RdOnl9KTtyZXR1cm57Li4uXyxkYXRhOnt4Ol8ueC1uLHk6Xy55LXIsZW5hYmxlZDp7W3BdOmksW2RdOmF9fX19fX0sVlI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7b3B0aW9uczplLGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50Om8scmVjdHM6cyxtaWRkbGV3YXJlRGF0YTppfT10LHtvZmZzZXQ6YT0wLG1haW5BeGlzOmw9ITAsY3Jvc3NBeGlzOnU9ITB9PVFuKGUsdCksYz17eDpuLHk6cn0sZj16bihvKSxkPWNkKGYpO2xldCBwPWNbZF0sbT1jW2ZdO2NvbnN0IHk9UW4oYSx0KSxfPXR5cGVvZiB5PT0ibnVtYmVyIj97bWFpbkF4aXM6eSxjcm9zc0F4aXM6MH06e21haW5BeGlzOjAsY3Jvc3NBeGlzOjAsLi4ueX07aWYobCl7Y29uc3QgaD1kPT09InkiPyJoZWlnaHQiOiJ3aWR0aCIsYj1zLnJlZmVyZW5jZVtkXS1zLmZsb2F0aW5nW2hdK18ubWFpbkF4aXMseD1zLnJlZmVyZW5jZVtkXStzLnJlZmVyZW5jZVtoXS1fLm1haW5BeGlzO3A8Yj9wPWI6cD54JiYocD14KX1pZih1KXt2YXIgdyx2O2NvbnN0IGg9ZD09PSJ5Ij8id2lkdGgiOiJoZWlnaHQiLGI9ZzAuaGFzKFRuKG8pKSx4PXMucmVmZXJlbmNlW2ZdLXMuZmxvYXRpbmdbaF0rKGImJigodz1pLm9mZnNldCk9PW51bGw/dm9pZCAwOndbZl0pfHwwKSsoYj8wOl8uY3Jvc3NBeGlzKSxTPXMucmVmZXJlbmNlW2ZdK3MucmVmZXJlbmNlW2hdKyhiPzA6KCh2PWkub2Zmc2V0KT09bnVsbD92b2lkIDA6dltmXSl8fDApLShiP18uY3Jvc3NBeGlzOjApO208eD9tPXg6bT5TJiYobT1TKX1yZXR1cm57W2RdOnAsW2ZdOm19fX19LFVSPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6InNpemUiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXt2YXIgbixyO2NvbnN0e3BsYWNlbWVudDpvLHJlY3RzOnMscGxhdGZvcm06aSxlbGVtZW50czphfT10LHthcHBseTpsPSgpPT57fSwuLi51fT1RbihlLHQpLGM9YXdhaXQgaS5kZXRlY3RPdmVyZmxvdyh0LHUpLGY9VG4obyksZD1WbihvKSxwPXpuKG8pPT09InkiLHt3aWR0aDptLGhlaWdodDp5fT1zLmZsb2F0aW5nO2xldCBfLHc7Zj09PSJ0b3AifHxmPT09ImJvdHRvbSI/KF89Zix3PWQ9PT0oYXdhaXQoaS5pc1JUTD09bnVsbD92b2lkIDA6aS5pc1JUTChhLmZsb2F0aW5nKSk/InN0YXJ0IjoiZW5kIik/ImxlZnQiOiJyaWdodCIpOih3PWYsXz1kPT09ImVuZCI/InRvcCI6ImJvdHRvbSIpO2NvbnN0IHY9eS1jLnRvcC1jLmJvdHRvbSxoPW0tYy5sZWZ0LWMucmlnaHQsYj1Lbih5LWNbX10sdikseD1LbihtLWNbd10saCksUz0hdC5taWRkbGV3YXJlRGF0YS5zaGlmdDtsZXQgaz1iLFQ9eDtpZigobj10Lm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSE9bnVsbCYmbi5lbmFibGVkLngmJihUPWgpLChyPXQubWlkZGxld2FyZURhdGEuc2hpZnQpIT1udWxsJiZyLmVuYWJsZWQueSYmKGs9diksUyYmIWQpe2NvbnN0IFA9UXQoYy5sZWZ0LDApLEY9UXQoYy5yaWdodCwwKSxEPVF0KGMudG9wLDApLFc9UXQoYy5ib3R0b20sMCk7cD9UPW0tMiooUCE9PTB8fEYhPT0wP1ArRjpRdChjLmxlZnQsYy5yaWdodCkpOms9eS0yKihEIT09MHx8VyE9PTA/RCtXOlF0KGMudG9wLGMuYm90dG9tKSl9YXdhaXQgbCh7Li4udCxhdmFpbGFibGVXaWR0aDpULGF2YWlsYWJsZUhlaWdodDprfSk7Y29uc3QgQz1hd2FpdCBpLmdldERpbWVuc2lvbnMoYS5mbG9hdGluZyk7cmV0dXJuIG0hPT1DLndpZHRofHx5IT09Qy5oZWlnaHQ/e3Jlc2V0OntyZWN0czohMH19Ont9fX19O2Z1bmN0aW9uIGpsKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUifWZ1bmN0aW9uIEdvKGUpe3JldHVybiBwZChlKT8oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6IiNkb2N1bWVudCJ9ZnVuY3Rpb24gU24oZSl7dmFyIHQ7cmV0dXJuKGU9PW51bGx8fCh0PWUub3duZXJEb2N1bWVudCk9PW51bGw/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9ZnVuY3Rpb24gaHIoZSl7dmFyIHQ7cmV0dXJuKHQ9KHBkKGUpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8d2luZG93LmRvY3VtZW50KT09bnVsbD92b2lkIDA6dC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gcGQoZSl7cmV0dXJuIGpsKCk/ZSBpbnN0YW5jZW9mIE5vZGV8fGUgaW5zdGFuY2VvZiBTbihlKS5Ob2RlOiExfWZ1bmN0aW9uIFluKGUpe3JldHVybiBqbCgpP2UgaW5zdGFuY2VvZiBFbGVtZW50fHxlIGluc3RhbmNlb2YgU24oZSkuRWxlbWVudDohMX1mdW5jdGlvbiBVcihlKXtyZXR1cm4gamwoKT9lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fGUgaW5zdGFuY2VvZiBTbihlKS5IVE1MRWxlbWVudDohMX1mdW5jdGlvbiBYbShlKXtyZXR1cm4hamwoKXx8dHlwZW9mIFNoYWRvd1Jvb3Q+InUiPyExOmUgaW5zdGFuY2VvZiBTaGFkb3dSb290fHxlIGluc3RhbmNlb2YgU24oZSkuU2hhZG93Um9vdH1mdW5jdGlvbiBVaShlKXtjb25zdHtvdmVyZmxvdzp0LG92ZXJmbG93WDpuLG92ZXJmbG93WTpyLGRpc3BsYXk6b309Sm4oZSk7cmV0dXJuL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3QodCtyK24pJiZvIT09ImlubGluZSImJm8hPT0iY29udGVudHMifWZ1bmN0aW9uIEhSKGUpe3JldHVybi9eKHRhYmxlfHRkfHRoKSQvLnRlc3QoR28oZSkpfWZ1bmN0aW9uIFZsKGUpe3RyeXtpZihlLm1hdGNoZXMoIjpwb3BvdmVyLW9wZW4iKSlyZXR1cm4hMH1jYXRjaHt9dHJ5e3JldHVybiBlLm1hdGNoZXMoIjptb2RhbCIpfWNhdGNoe3JldHVybiExfX1jb25zdCBXUj0vdHJhbnNmb3JtfHRyYW5zbGF0ZXxzY2FsZXxyb3RhdGV8cGVyc3BlY3RpdmV8ZmlsdGVyLyxHUj0vcGFpbnR8bGF5b3V0fHN0cmljdHxjb250ZW50Lyxrbz1lPT4hIWUmJmUhPT0ibm9uZSI7bGV0IEZjO2Z1bmN0aW9uIG1kKGUpe2NvbnN0IHQ9WW4oZSk/Sm4oZSk6ZTtyZXR1cm4ga28odC50cmFuc2Zvcm0pfHxrbyh0LnRyYW5zbGF0ZSl8fGtvKHQuc2NhbGUpfHxrbyh0LnJvdGF0ZSl8fGtvKHQucGVyc3BlY3RpdmUpfHwhaGQoKSYmKGtvKHQuYmFja2Ryb3BGaWx0ZXIpfHxrbyh0LmZpbHRlcikpfHxXUi50ZXN0KHQud2lsbENoYW5nZXx8IiIpfHxHUi50ZXN0KHQuY29udGFpbnx8IiIpfWZ1bmN0aW9uIEtSKGUpe2xldCB0PWxvKGUpO2Zvcig7VXIodCkmJiFPcyh0KTspe2lmKG1kKHQpKXJldHVybiB0O2lmKFZsKHQpKXJldHVybiBudWxsO3Q9bG8odCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaGQoKXtyZXR1cm4gRmM9PW51bGwmJihGYz10eXBlb2YgQ1NTPCJ1IiYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoIi13ZWJraXQtYmFja2Ryb3AtZmlsdGVyIiwibm9uZSIpKSxGY31mdW5jdGlvbiBPcyhlKXtyZXR1cm4vXihodG1sfGJvZHl8I2RvY3VtZW50KSQvLnRlc3QoR28oZSkpfWZ1bmN0aW9uIEpuKGUpe3JldHVybiBTbihlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIFVsKGUpe3JldHVybiBZbihlKT97c2Nyb2xsTGVmdDplLnNjcm9sbExlZnQsc2Nyb2xsVG9wOmUuc2Nyb2xsVG9wfTp7c2Nyb2xsTGVmdDplLnNjcm9sbFgsc2Nyb2xsVG9wOmUuc2Nyb2xsWX19ZnVuY3Rpb24gbG8oZSl7aWYoR28oZSk9PT0iaHRtbCIpcmV0dXJuIGU7Y29uc3QgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxYbShlKSYmZS5ob3N0fHxocihlKTtyZXR1cm4gWG0odCk/dC5ob3N0OnR9ZnVuY3Rpb24geTAoZSl7Y29uc3QgdD1sbyhlKTtyZXR1cm4gT3ModCk/ZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudC5ib2R5OmUuYm9keTpVcih0KSYmVWkodCk/dDp5MCh0KX1mdW5jdGlvbiBPaShlLHQsbil7dmFyIHI7dD09PXZvaWQgMCYmKHQ9W10pLG49PT12b2lkIDAmJihuPSEwKTtjb25zdCBvPXkwKGUpLHM9bz09PSgocj1lLm93bmVyRG9jdW1lbnQpPT1udWxsP3ZvaWQgMDpyLmJvZHkpLGk9U24obyk7aWYocyl7Y29uc3QgYT1qdShpKTtyZXR1cm4gdC5jb25jYXQoaSxpLnZpc3VhbFZpZXdwb3J0fHxbXSxVaShvKT9vOltdLGEmJm4/T2koYSk6W10pfWVsc2UgcmV0dXJuIHQuY29uY2F0KG8sT2kobyxbXSxuKSl9ZnVuY3Rpb24ganUoZSl7cmV0dXJuIGUucGFyZW50JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wYXJlbnQpP2UuZnJhbWVFbGVtZW50Om51bGx9ZnVuY3Rpb24gdjAoZSl7Y29uc3QgdD1KbihlKTtsZXQgbj1wYXJzZUZsb2F0KHQud2lkdGgpfHwwLHI9cGFyc2VGbG9hdCh0LmhlaWdodCl8fDA7Y29uc3Qgbz1VcihlKSxzPW8/ZS5vZmZzZXRXaWR0aDpuLGk9bz9lLm9mZnNldEhlaWdodDpyLGE9WmEobikhPT1zfHxaYShyKSE9PWk7cmV0dXJuIGEmJihuPXMscj1pKSx7d2lkdGg6bixoZWlnaHQ6ciwkOmF9fWZ1bmN0aW9uIGdkKGUpe3JldHVybiBZbihlKT9lOmUuY29udGV4dEVsZW1lbnR9ZnVuY3Rpb24gYnMoZSl7Y29uc3QgdD1nZChlKTtpZighVXIodCkpcmV0dXJuIGZyKDEpO2NvbnN0IG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6cixoZWlnaHQ6bywkOnN9PXYwKHQpO2xldCBpPShzP1phKG4ud2lkdGgpOm4ud2lkdGgpL3IsYT0ocz9aYShuLmhlaWdodCk6bi5oZWlnaHQpL287cmV0dXJuKCFpfHwhTnVtYmVyLmlzRmluaXRlKGkpKSYmKGk9MSksKCFhfHwhTnVtYmVyLmlzRmluaXRlKGEpKSYmKGE9MSkse3g6aSx5OmF9fWNvbnN0IFFSPWZyKDApO2Z1bmN0aW9uIGIwKGUpe2NvbnN0IHQ9U24oZSk7cmV0dXJuIWhkKCl8fCF0LnZpc3VhbFZpZXdwb3J0P1FSOnt4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfX1mdW5jdGlvbiBZUihlLHQsbil7cmV0dXJuIHQ9PT12b2lkIDAmJih0PSExKSwhbnx8dCYmbiE9PVNuKGUpPyExOnR9ZnVuY3Rpb24gVm8oZSx0LG4scil7dD09PXZvaWQgMCYmKHQ9ITEpLG49PT12b2lkIDAmJihuPSExKTtjb25zdCBvPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1nZChlKTtsZXQgaT1mcigxKTt0JiYocj9ZbihyKSYmKGk9YnMocikpOmk9YnMoZSkpO2NvbnN0IGE9WVIocyxuLHIpP2IwKHMpOmZyKDApO2xldCBsPShvLmxlZnQrYS54KS9pLngsdT0oby50b3ArYS55KS9pLnksYz1vLndpZHRoL2kueCxmPW8uaGVpZ2h0L2kueTtpZihzKXtjb25zdCBkPVNuKHMpLHA9ciYmWW4ocik/U24ocik6cjtsZXQgbT1kLHk9anUobSk7Zm9yKDt5JiZyJiZwIT09bTspe2NvbnN0IF89YnMoeSksdz15LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9Sm4oeSksaD13LmxlZnQrKHkuY2xpZW50TGVmdCtwYXJzZUZsb2F0KHYucGFkZGluZ0xlZnQpKSpfLngsYj13LnRvcCsoeS5jbGllbnRUb3ArcGFyc2VGbG9hdCh2LnBhZGRpbmdUb3ApKSpfLnk7bCo9Xy54LHUqPV8ueSxjKj1fLngsZio9Xy55LGwrPWgsdSs9YixtPVNuKHkpLHk9anUobSl9fXJldHVybiBBcyh7d2lkdGg6YyxoZWlnaHQ6Zix4OmwseTp1fSl9ZnVuY3Rpb24gSGwoZSx0KXtjb25zdCBuPVVsKGUpLnNjcm9sbExlZnQ7cmV0dXJuIHQ/dC5sZWZ0K246Vm8oaHIoZSkpLmxlZnQrbn1mdW5jdGlvbiB3MChlLHQpe2NvbnN0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPW4ubGVmdCt0LnNjcm9sbExlZnQtSGwoZSxuKSxvPW4udG9wK3Quc2Nyb2xsVG9wO3JldHVybnt4OnIseTpvfX1mdW5jdGlvbiBKUihlKXtsZXR7ZWxlbWVudHM6dCxyZWN0Om4sb2Zmc2V0UGFyZW50OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBzPW89PT0iZml4ZWQiLGk9aHIociksYT10P1ZsKHQuZmxvYXRpbmcpOiExO2lmKHI9PT1pfHxhJiZzKXJldHVybiBuO2xldCBsPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LHU9ZnIoMSk7Y29uc3QgYz1mcigwKSxmPVVyKHIpO2lmKChmfHwhZiYmIXMpJiYoKEdvKHIpIT09ImJvZHkifHxVaShpKSkmJihsPVVsKHIpKSxmKSl7Y29uc3QgcD1WbyhyKTt1PWJzKHIpLGMueD1wLngrci5jbGllbnRMZWZ0LGMueT1wLnkrci5jbGllbnRUb3B9Y29uc3QgZD1pJiYhZiYmIXM/dzAoaSxsKTpmcigwKTtyZXR1cm57d2lkdGg6bi53aWR0aCp1LngsaGVpZ2h0Om4uaGVpZ2h0KnUueSx4Om4ueCp1LngtbC5zY3JvbGxMZWZ0KnUueCtjLngrZC54LHk6bi55KnUueS1sLnNjcm9sbFRvcCp1LnkrYy55K2QueX19ZnVuY3Rpb24gWFIoZSl7cmV0dXJuIEFycmF5LmZyb20oZS5nZXRDbGllbnRSZWN0cygpKX1mdW5jdGlvbiBaUihlKXtjb25zdCB0PWhyKGUpLG49VWwoZSkscj1lLm93bmVyRG9jdW1lbnQuYm9keSxvPVF0KHQuc2Nyb2xsV2lkdGgsdC5jbGllbnRXaWR0aCxyLnNjcm9sbFdpZHRoLHIuY2xpZW50V2lkdGgpLHM9UXQodC5zY3JvbGxIZWlnaHQsdC5jbGllbnRIZWlnaHQsci5zY3JvbGxIZWlnaHQsci5jbGllbnRIZWlnaHQpO2xldCBpPS1uLnNjcm9sbExlZnQrSGwoZSk7Y29uc3QgYT0tbi5zY3JvbGxUb3A7cmV0dXJuIEpuKHIpLmRpcmVjdGlvbj09PSJydGwiJiYoaSs9UXQodC5jbGllbnRXaWR0aCxyLmNsaWVudFdpZHRoKS1vKSx7d2lkdGg6byxoZWlnaHQ6cyx4OmkseTphfX1jb25zdCBabT0yNTtmdW5jdGlvbiBlMihlLHQpe2NvbnN0IG49U24oZSkscj1ocihlKSxvPW4udmlzdWFsVmlld3BvcnQ7bGV0IHM9ci5jbGllbnRXaWR0aCxpPXIuY2xpZW50SGVpZ2h0LGE9MCxsPTA7aWYobyl7cz1vLndpZHRoLGk9by5oZWlnaHQ7Y29uc3QgYz1oZCgpOyghY3x8YyYmdD09PSJmaXhlZCIpJiYoYT1vLm9mZnNldExlZnQsbD1vLm9mZnNldFRvcCl9Y29uc3QgdT1IbChyKTtpZih1PD0wKXtjb25zdCBjPXIub3duZXJEb2N1bWVudCxmPWMuYm9keSxkPWdldENvbXB1dGVkU3R5bGUoZikscD1jLmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCImJnBhcnNlRmxvYXQoZC5tYXJnaW5MZWZ0KStwYXJzZUZsb2F0KGQubWFyZ2luUmlnaHQpfHwwLG09TWF0aC5hYnMoci5jbGllbnRXaWR0aC1mLmNsaWVudFdpZHRoLXApO208PVptJiYocy09bSl9ZWxzZSB1PD1abSYmKHMrPXUpO3JldHVybnt3aWR0aDpzLGhlaWdodDppLHg6YSx5Omx9fWZ1bmN0aW9uIHQyKGUsdCl7Y29uc3Qgbj1WbyhlLCEwLHQ9PT0iZml4ZWQiKSxyPW4udG9wK2UuY2xpZW50VG9wLG89bi5sZWZ0K2UuY2xpZW50TGVmdCxzPVVyKGUpP2JzKGUpOmZyKDEpLGk9ZS5jbGllbnRXaWR0aCpzLngsYT1lLmNsaWVudEhlaWdodCpzLnksbD1vKnMueCx1PXIqcy55O3JldHVybnt3aWR0aDppLGhlaWdodDphLHg6bCx5OnV9fWZ1bmN0aW9uIGVoKGUsdCxuKXtsZXQgcjtpZih0PT09InZpZXdwb3J0IilyPWUyKGUsbik7ZWxzZSBpZih0PT09ImRvY3VtZW50IilyPVpSKGhyKGUpKTtlbHNlIGlmKFluKHQpKXI9dDIodCxuKTtlbHNle2NvbnN0IG89YjAoZSk7cj17eDp0Lngtby54LHk6dC55LW8ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19cmV0dXJuIEFzKHIpfWZ1bmN0aW9uIF8wKGUsdCl7Y29uc3Qgbj1sbyhlKTtyZXR1cm4gbj09PXR8fCFZbihuKXx8T3Mobik/ITE6Sm4obikucG9zaXRpb249PT0iZml4ZWQifHxfMChuLHQpfWZ1bmN0aW9uIG4yKGUsdCl7Y29uc3Qgbj10LmdldChlKTtpZihuKXJldHVybiBuO2xldCByPU9pKGUsW10sITEpLmZpbHRlcihhPT5ZbihhKSYmR28oYSkhPT0iYm9keSIpLG89bnVsbDtjb25zdCBzPUpuKGUpLnBvc2l0aW9uPT09ImZpeGVkIjtsZXQgaT1zP2xvKGUpOmU7Zm9yKDtZbihpKSYmIU9zKGkpOyl7Y29uc3QgYT1KbihpKSxsPW1kKGkpOyFsJiZhLnBvc2l0aW9uPT09ImZpeGVkIiYmKG89bnVsbCksKHM/IWwmJiFvOiFsJiZhLnBvc2l0aW9uPT09InN0YXRpYyImJiEhbyYmKG8ucG9zaXRpb249PT0iYWJzb2x1dGUifHxvLnBvc2l0aW9uPT09ImZpeGVkIil8fFVpKGkpJiYhbCYmXzAoZSxpKSk/cj1yLmZpbHRlcihjPT5jIT09aSk6bz1hLGk9bG8oaSl9cmV0dXJuIHQuc2V0KGUscikscn1mdW5jdGlvbiByMihlKXtsZXR7ZWxlbWVudDp0LGJvdW5kYXJ5Om4scm9vdEJvdW5kYXJ5OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBpPVsuLi5uPT09ImNsaXBwaW5nQW5jZXN0b3JzIj9WbCh0KT9bXTpuMih0LHRoaXMuX2MpOltdLmNvbmNhdChuKSxyXSxhPWVoKHQsaVswXSxvKTtsZXQgbD1hLnRvcCx1PWEucmlnaHQsYz1hLmJvdHRvbSxmPWEubGVmdDtmb3IobGV0IGQ9MTtkPGkubGVuZ3RoO2QrKyl7Y29uc3QgcD1laCh0LGlbZF0sbyk7bD1RdChwLnRvcCxsKSx1PUtuKHAucmlnaHQsdSksYz1LbihwLmJvdHRvbSxjKSxmPVF0KHAubGVmdCxmKX1yZXR1cm57d2lkdGg6dS1mLGhlaWdodDpjLWwseDpmLHk6bH19ZnVuY3Rpb24gbzIoZSl7Y29uc3R7d2lkdGg6dCxoZWlnaHQ6bn09djAoZSk7cmV0dXJue3dpZHRoOnQsaGVpZ2h0Om59fWZ1bmN0aW9uIHMyKGUsdCxuKXtjb25zdCByPVVyKHQpLG89aHIodCkscz1uPT09ImZpeGVkIixpPVZvKGUsITAscyx0KTtsZXQgYT17c2Nyb2xsTGVmdDowLHNjcm9sbFRvcDowfTtjb25zdCBsPWZyKDApO2Z1bmN0aW9uIHUoKXtsLng9SGwobyl9aWYocnx8IXImJiFzKWlmKChHbyh0KSE9PSJib2R5Inx8VWkobykpJiYoYT1VbCh0KSkscil7Y29uc3QgcD1Wbyh0LCEwLHMsdCk7bC54PXAueCt0LmNsaWVudExlZnQsbC55PXAueSt0LmNsaWVudFRvcH1lbHNlIG8mJnUoKTtzJiYhciYmbyYmdSgpO2NvbnN0IGM9byYmIXImJiFzP3cwKG8sYSk6ZnIoMCksZj1pLmxlZnQrYS5zY3JvbGxMZWZ0LWwueC1jLngsZD1pLnRvcCthLnNjcm9sbFRvcC1sLnktYy55O3JldHVybnt4OmYseTpkLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX1mdW5jdGlvbiB6YyhlKXtyZXR1cm4gSm4oZSkucG9zaXRpb249PT0ic3RhdGljIn1mdW5jdGlvbiB0aChlLHQpe2lmKCFVcihlKXx8Sm4oZSkucG9zaXRpb249PT0iZml4ZWQiKXJldHVybiBudWxsO2lmKHQpcmV0dXJuIHQoZSk7bGV0IG49ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGhyKGUpPT09biYmKG49bi5vd25lckRvY3VtZW50LmJvZHkpLG59ZnVuY3Rpb24geDAoZSx0KXtjb25zdCBuPVNuKGUpO2lmKFZsKGUpKXJldHVybiBuO2lmKCFVcihlKSl7bGV0IG89bG8oZSk7Zm9yKDtvJiYhT3Mobyk7KXtpZihZbihvKSYmIXpjKG8pKXJldHVybiBvO289bG8obyl9cmV0dXJuIG59bGV0IHI9dGgoZSx0KTtmb3IoO3ImJkhSKHIpJiZ6YyhyKTspcj10aChyLHQpO3JldHVybiByJiZPcyhyKSYmemMocikmJiFtZChyKT9uOnJ8fEtSKGUpfHxufWNvbnN0IGkyPWFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fHgwLG49dGhpcy5nZXREaW1lbnNpb25zLHI9YXdhaXQgbihlLmZsb2F0aW5nKTtyZXR1cm57cmVmZXJlbmNlOnMyKGUucmVmZXJlbmNlLGF3YWl0IHQoZS5mbG9hdGluZyksZS5zdHJhdGVneSksZmxvYXRpbmc6e3g6MCx5OjAsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9fX07ZnVuY3Rpb24gYTIoZSl7cmV0dXJuIEpuKGUpLmRpcmVjdGlvbj09PSJydGwifWNvbnN0IGwyPXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpKUixnZXREb2N1bWVudEVsZW1lbnQ6aHIsZ2V0Q2xpcHBpbmdSZWN0OnIyLGdldE9mZnNldFBhcmVudDp4MCxnZXRFbGVtZW50UmVjdHM6aTIsZ2V0Q2xpZW50UmVjdHM6WFIsZ2V0RGltZW5zaW9uczpvMixnZXRTY2FsZTpicyxpc0VsZW1lbnQ6WW4saXNSVEw6YTJ9O2Z1bmN0aW9uIFMwKGUsdCl7cmV0dXJuIGUueD09PXQueCYmZS55PT09dC55JiZlLndpZHRoPT09dC53aWR0aCYmZS5oZWlnaHQ9PT10LmhlaWdodH1mdW5jdGlvbiBjMihlLHQpe2xldCBuPW51bGwscjtjb25zdCBvPWhyKGUpO2Z1bmN0aW9uIHMoKXt2YXIgYTtjbGVhclRpbWVvdXQociksKGE9bik9PW51bGx8fGEuZGlzY29ubmVjdCgpLG49bnVsbH1mdW5jdGlvbiBpKGEsbCl7YT09PXZvaWQgMCYmKGE9ITEpLGw9PT12b2lkIDAmJihsPTEpLHMoKTtjb25zdCB1PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse2xlZnQ6Yyx0b3A6Zix3aWR0aDpkLGhlaWdodDpwfT11O2lmKGF8fHQoKSwhZHx8IXApcmV0dXJuO2NvbnN0IG09Z2EoZikseT1nYShvLmNsaWVudFdpZHRoLShjK2QpKSxfPWdhKG8uY2xpZW50SGVpZ2h0LShmK3ApKSx3PWdhKGMpLGg9e3Jvb3RNYXJnaW46LW0rInB4ICIrLXkrInB4ICIrLV8rInB4ICIrLXcrInB4Iix0aHJlc2hvbGQ6UXQoMCxLbigxLGwpKXx8MX07bGV0IGI9ITA7ZnVuY3Rpb24geChTKXtjb25zdCBrPVNbMF0uaW50ZXJzZWN0aW9uUmF0aW87aWYoayE9PWwpe2lmKCFiKXJldHVybiBpKCk7az9pKCExLGspOnI9c2V0VGltZW91dCgoKT0+e2koITEsMWUtNyl9LDFlMyl9az09PTEmJiFTMCh1LGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpJiZpKCksYj0hMX10cnl7bj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoeCx7Li4uaCxyb290Om8ub3duZXJEb2N1bWVudH0pfWNhdGNoe249bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHgsaCl9bi5vYnNlcnZlKGUpfXJldHVybiBpKCEwKSxzfWZ1bmN0aW9uIHUyKGUsdCxuLHIpe3I9PT12b2lkIDAmJihyPXt9KTtjb25zdHthbmNlc3RvclNjcm9sbDpvPSEwLGFuY2VzdG9yUmVzaXplOnM9ITAsZWxlbWVudFJlc2l6ZTppPXR5cGVvZiBSZXNpemVPYnNlcnZlcj09ImZ1bmN0aW9uIixsYXlvdXRTaGlmdDphPXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcj09ImZ1bmN0aW9uIixhbmltYXRpb25GcmFtZTpsPSExfT1yLHU9Z2QoZSksYz1vfHxzP1suLi51P09pKHUpOltdLC4uLnQ/T2kodCk6W11dOltdO2MuZm9yRWFjaCh3PT57byYmdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLG4se3Bhc3NpdmU6ITB9KSxzJiZ3LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KTtjb25zdCBmPXUmJmE/YzIodSxuKTpudWxsO2xldCBkPS0xLHA9bnVsbDtpJiYocD1uZXcgUmVzaXplT2JzZXJ2ZXIodz0+e2xldFt2XT13O3YmJnYudGFyZ2V0PT09dSYmcCYmdCYmKHAudW5vYnNlcnZlKHQpLGNhbmNlbEFuaW1hdGlvbkZyYW1lKGQpLGQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIGg7KGg9cCk9PW51bGx8fGgub2JzZXJ2ZSh0KX0pKSxuKCl9KSx1JiYhbCYmcC5vYnNlcnZlKHUpLHQmJnAub2JzZXJ2ZSh0KSk7bGV0IG0seT1sP1ZvKGUpOm51bGw7bCYmXygpO2Z1bmN0aW9uIF8oKXtjb25zdCB3PVZvKGUpO3kmJiFTMCh5LHcpJiZuKCkseT13LG09cmVxdWVzdEFuaW1hdGlvbkZyYW1lKF8pfXJldHVybiBuKCksKCk9Pnt2YXIgdztjLmZvckVhY2godj0+e28mJnYucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixuKSxzJiZ2LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KSxmPy4oKSwodz1wKT09bnVsbHx8dy5kaXNjb25uZWN0KCkscD1udWxsLGwmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKG0pfX1jb25zdCBmMj16UiwkcT1MUixkMj1qUixuaD0kUixwMj1VUixtMj1NUixoMj1OUixNcT1xUixnMj1WUix5Mj0oZSx0LG4pPT57Y29uc3Qgcj1uZXcgTWFwLG89e3BsYXRmb3JtOmwyLC4uLm59LHM9ey4uLm8ucGxhdGZvcm0sX2M6cn07cmV0dXJuIFJSKGUsdCx7Li4ubyxwbGF0Zm9ybTpzfSl9O2Z1bmN0aW9uIHYyKGUpe3JldHVybiBlIT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCImJiIkZWwiaW4gZX1mdW5jdGlvbiBWdShlKXtpZih2MihlKSl7Y29uc3QgdD1lLiRlbDtyZXR1cm4gcGQodCkmJkdvKHQpPT09IiNjb21tZW50Ij9udWxsOnR9cmV0dXJuIGV9ZnVuY3Rpb24gYXMoZSl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTpnKGUpfWZ1bmN0aW9uIGIyKGUpe3JldHVybntuYW1lOiJhcnJvdyIsb3B0aW9uczplLGZuKHQpe2NvbnN0IG49VnUoYXMoZS5lbGVtZW50KSk7cmV0dXJuIG49PW51bGw/e306aDIoe2VsZW1lbnQ6bixwYWRkaW5nOmUucGFkZGluZ30pLmZuKHQpfX19ZnVuY3Rpb24gazAoZSl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+InUiPzE6KGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5kZXZpY2VQaXhlbFJhdGlvfHwxfWZ1bmN0aW9uIHJoKGUsdCl7Y29uc3Qgbj1rMChlKTtyZXR1cm4gTWF0aC5yb3VuZCh0Km4pL259ZnVuY3Rpb24gdzIoZSx0LG4pe249PT12b2lkIDAmJihuPXt9KTtjb25zdCByPW4ud2hpbGVFbGVtZW50c01vdW50ZWQsbz1OKCgpPT57dmFyIGs7cmV0dXJuKGs9YXMobi5vcGVuKSkhPW51bGw/azohMH0pLHM9TigoKT0+YXMobi5taWRkbGV3YXJlKSksaT1OKCgpPT57dmFyIGs7cmV0dXJuKGs9YXMobi5wbGFjZW1lbnQpKSE9bnVsbD9rOiJib3R0b20ifSksYT1OKCgpPT57dmFyIGs7cmV0dXJuKGs9YXMobi5zdHJhdGVneSkpIT1udWxsP2s6ImFic29sdXRlIn0pLGw9TigoKT0+e3ZhciBrO3JldHVybihrPWFzKG4udHJhbnNmb3JtKSkhPW51bGw/azohMH0pLHU9TigoKT0+VnUoZS52YWx1ZSkpLGM9TigoKT0+VnUodC52YWx1ZSkpLGY9RygwKSxkPUcoMCkscD1HKGEudmFsdWUpLG09RyhpLnZhbHVlKSx5PU9lKHt9KSxfPUcoITEpLHc9TigoKT0+e2NvbnN0IGs9e3Bvc2l0aW9uOnAudmFsdWUsbGVmdDoiMCIsdG9wOiIwIn07aWYoIWMudmFsdWUpcmV0dXJuIGs7Y29uc3QgVD1yaChjLnZhbHVlLGYudmFsdWUpLEM9cmgoYy52YWx1ZSxkLnZhbHVlKTtyZXR1cm4gbC52YWx1ZT97Li4uayx0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK1QrInB4LCAiK0MrInB4KSIsLi4uazAoYy52YWx1ZSk+PTEuNSYme3dpbGxDaGFuZ2U6InRyYW5zZm9ybSJ9fTp7cG9zaXRpb246cC52YWx1ZSxsZWZ0OlQrInB4Iix0b3A6QysicHgifX0pO2xldCB2O2Z1bmN0aW9uIGgoKXtpZih1LnZhbHVlPT1udWxsfHxjLnZhbHVlPT1udWxsKXJldHVybjtjb25zdCBrPW8udmFsdWU7eTIodS52YWx1ZSxjLnZhbHVlLHttaWRkbGV3YXJlOnMudmFsdWUscGxhY2VtZW50OmkudmFsdWUsc3RyYXRlZ3k6YS52YWx1ZX0pLnRoZW4oVD0+e2YudmFsdWU9VC54LGQudmFsdWU9VC55LHAudmFsdWU9VC5zdHJhdGVneSxtLnZhbHVlPVQucGxhY2VtZW50LHkudmFsdWU9VC5taWRkbGV3YXJlRGF0YSxfLnZhbHVlPWshPT0hMX0pfWZ1bmN0aW9uIGIoKXt0eXBlb2Ygdj09ImZ1bmN0aW9uIiYmKHYoKSx2PXZvaWQgMCl9ZnVuY3Rpb24geCgpe2lmKGIoKSxyPT09dm9pZCAwKXtoKCk7cmV0dXJufWlmKHUudmFsdWUhPW51bGwmJmMudmFsdWUhPW51bGwpe3Y9cih1LnZhbHVlLGMudmFsdWUsaCk7cmV0dXJufX1mdW5jdGlvbiBTKCl7by52YWx1ZXx8KF8udmFsdWU9ITEpfXJldHVybiBQZShbcyxpLGEsb10saCx7Zmx1c2g6InN5bmMifSksUGUoW3UsY10seCx7Zmx1c2g6InN5bmMifSksUGUobyxTLHtmbHVzaDoic3luYyJ9KSxxcigpJiZScyhiKSx7eDpUcihmKSx5OlRyKGQpLHN0cmF0ZWd5OlRyKHApLHBsYWNlbWVudDpUcihtKSxtaWRkbGV3YXJlRGF0YTpUcih5KSxpc1Bvc2l0aW9uZWQ6VHIoXyksZmxvYXRpbmdTdHlsZXM6dyx1cGRhdGU6aH19Y29uc3QgXzI9e3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDowLHNpZGVGbGlwOiEwLGFsaWduOiJjZW50ZXIiLGFsaWduT2Zmc2V0OjAsYWxpZ25GbGlwOiEwLGFycm93UGFkZGluZzowLGhpZGVTaGlmdGVkQXJyb3c6ITAsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OigpPT5bXSxjb2xsaXNpb25QYWRkaW5nOjAsc3RpY2t5OiJwYXJ0aWFsIixoaWRlV2hlbkRldGFjaGVkOiExLHBvc2l0aW9uU3RyYXRlZ3k6ImZpeGVkIix1cGRhdGVQb3NpdGlvblN0cmF0ZWd5OiJvcHRpbWl6ZWQiLHByaW9yaXRpemVQb3NpdGlvbjohMX0sW3gyLFMyXT1nbigiUG9wcGVyQ29udGVudCIpO3ZhciBrMj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiUG9wcGVyQ29udGVudCIscHJvcHM6c3goe3NpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uXzJ9KSxlbWl0czpbInBsYWNlZCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1kMCgpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6aX09VWUoKSxhPUcoKSxsPUcoKSx7d2lkdGg6dSxoZWlnaHQ6Y309a0kobCksZj1OKCgpPT5uLnNpZGUrKG4uYWxpZ24hPT0iY2VudGVyIj9gLSR7bi5hbGlnbn1gOiIiKSksZD1OKCgpPT50eXBlb2Ygbi5jb2xsaXNpb25QYWRkaW5nPT0ibnVtYmVyIj9uLmNvbGxpc2lvblBhZGRpbmc6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLm4uY29sbGlzaW9uUGFkZGluZ30pLHA9TigoKT0+QXJyYXkuaXNBcnJheShuLmNvbGxpc2lvbkJvdW5kYXJ5KT9uLmNvbGxpc2lvbkJvdW5kYXJ5OltuLmNvbGxpc2lvbkJvdW5kYXJ5XSksbT1OKCgpPT4oe3BhZGRpbmc6ZC52YWx1ZSxib3VuZGFyeTpwLnZhbHVlLmZpbHRlcihfUiksYWx0Qm91bmRhcnk6cC52YWx1ZS5sZW5ndGg+MH0pKSx5PU4oKCk9Pih7bWFpbkF4aXM6bi5zaWRlRmxpcCxjcm9zc0F4aXM6bi5hbGlnbkZsaXB9KSksXz1UUCgoKT0+W2YyKHttYWluQXhpczpuLnNpZGVPZmZzZXQrYy52YWx1ZSxhbGlnbm1lbnRBeGlzOm4uYWxpZ25PZmZzZXR9KSxuLnByaW9yaXRpemVQb3NpdGlvbiYmbi5hdm9pZENvbGxpc2lvbnMmJm5oKHsuLi5tLnZhbHVlLC4uLnkudmFsdWV9KSxuLmF2b2lkQ29sbGlzaW9ucyYmZDIoe21haW5BeGlzOiEwLGNyb3NzQXhpczohIW4ucHJpb3JpdGl6ZVBvc2l0aW9uLGxpbWl0ZXI6bi5zdGlja3k9PT0icGFydGlhbCI/ZzIoKTp2b2lkIDAsLi4ubS52YWx1ZX0pLCFuLnByaW9yaXRpemVQb3NpdGlvbiYmbi5hdm9pZENvbGxpc2lvbnMmJm5oKHsuLi5tLnZhbHVlLC4uLnkudmFsdWV9KSxwMih7Li4ubS52YWx1ZSxhcHBseTooe2VsZW1lbnRzOkQscmVjdHM6VyxhdmFpbGFibGVXaWR0aDpMLGF2YWlsYWJsZUhlaWdodDpqfSk9Pntjb25zdHt3aWR0aDpJLGhlaWdodDpWfT1XLnJlZmVyZW5jZSxCPUQuZmxvYXRpbmcuc3R5bGU7Qi5zZXRQcm9wZXJ0eSgiLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgiLGAke0x9cHhgKSxCLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQiLGAke2p9cHhgKSxCLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCIsYCR7SX1weGApLEIuc2V0UHJvcGVydHkoIi0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCIsYCR7Vn1weGApfX0pLGwudmFsdWUmJmIyKHtlbGVtZW50OmwudmFsdWUscGFkZGluZzpuLmFycm93UGFkZGluZ30pLHhSKHthcnJvd1dpZHRoOnUudmFsdWUsYXJyb3dIZWlnaHQ6Yy52YWx1ZX0pLG4uaGlkZVdoZW5EZXRhY2hlZCYmbTIoe3N0cmF0ZWd5OiJyZWZlcmVuY2VIaWRkZW4iLC4uLm0udmFsdWV9KV0pLHc9TigoKT0+bi5yZWZlcmVuY2U/P28uYW5jaG9yLnZhbHVlKSx7ZmxvYXRpbmdTdHlsZXM6dixwbGFjZW1lbnQ6aCxpc1Bvc2l0aW9uZWQ6YixtaWRkbGV3YXJlRGF0YTp4fT13Mih3LGEse3N0cmF0ZWd5Om4ucG9zaXRpb25TdHJhdGVneSxwbGFjZW1lbnQ6Zix3aGlsZUVsZW1lbnRzTW91bnRlZDooLi4uRCk9PnUyKC4uLkQse2xheW91dFNoaWZ0OiFuLmRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0LGFuaW1hdGlvbkZyYW1lOm4udXBkYXRlUG9zaXRpb25TdHJhdGVneT09PSJhbHdheXMifSksbWlkZGxld2FyZTpffSksUz1OKCgpPT5GdShoLnZhbHVlKVswXSksaz1OKCgpPT5GdShoLnZhbHVlKVsxXSk7Q2coKCk9PntiLnZhbHVlJiZyKCJwbGFjZWQiKX0pO2NvbnN0IFQ9TigoKT0+e2NvbnN0IEQ9eC52YWx1ZS5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MDtyZXR1cm4gbi5oaWRlU2hpZnRlZEFycm93JiZEfSksQz1HKCIiKTtvbigoKT0+e2kudmFsdWUmJihDLnZhbHVlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGkudmFsdWUpLnpJbmRleCl9KTtjb25zdCBQPU4oKCk9PngudmFsdWUuYXJyb3c/Lng/PzApLEY9TigoKT0+eC52YWx1ZS5hcnJvdz8ueT8/MCk7cmV0dXJuIFMyKHtwbGFjZWRTaWRlOlMsb25BcnJvd0NoYW5nZTpEPT5sLnZhbHVlPUQsYXJyb3dYOlAsYXJyb3dZOkYsc2hvdWxkSGlkZUFycm93OlR9KSwoRCxXKT0+KFIoKSxfZSgiZGl2Iix7cmVmX2tleToiZmxvYXRpbmdSZWYiLHJlZjphLCJkYXRhLXJla2EtcG9wcGVyLWNvbnRlbnQtd3JhcHBlciI6IiIsc3R5bGU6Um4oey4uLmcodiksdHJhbnNmb3JtOmcoYik/Zyh2KS50cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAtMjAwJSkiLG1pbldpZHRoOiJtYXgtY29udGVudCIsekluZGV4OkMudmFsdWUsIi0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiI6W2coeCkudHJhbnNmb3JtT3JpZ2luPy54LGcoeCkudHJhbnNmb3JtT3JpZ2luPy55XS5qb2luKCIgIiksLi4uZyh4KS5oaWRlPy5yZWZlcmVuY2VIaWRkZW4mJnt2aXNpYmlsaXR5OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUifX0pfSxbcmUoZyhNZSksZmUoe3JlZjpnKHMpfSxELiRhdHRycyx7ImFzLWNoaWxkIjpuLmFzQ2hpbGQsYXM6RC5hcywiZGF0YS1zaWRlIjpTLnZhbHVlLCJkYXRhLWFsaWduIjprLnZhbHVlLHN0eWxlOnthbmltYXRpb246ZyhiKT92b2lkIDA6Im5vbmUifX0pLHtkZWZhdWx0Ok0oKCk9PltVKEQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMtY2hpbGQiLCJhcyIsImRhdGEtc2lkZSIsImRhdGEtYWxpZ24iLCJzdHlsZSJdKV0sNCkpfX0pLEUyPWsyO2NvbnN0IFQyPXt0b3A6ImJvdHRvbSIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCJ9O3ZhciBDMj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiUG9wcGVyQXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdHtmb3J3YXJkUmVmOnR9PVVlKCksbj14MigpLHI9TigoKT0+VDJbbi5wbGFjZWRTaWRlLnZhbHVlXSk7cmV0dXJuKG8scyk9PihSKCksX2UoInNwYW4iLHtyZWY6aT0+e2cobikub25BcnJvd0NoYW5nZShpPz92b2lkIDApfSxzdHlsZTpSbih7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OmcobikuYXJyb3dYPy52YWx1ZT9gJHtnKG4pLmFycm93WD8udmFsdWV9cHhgOnZvaWQgMCx0b3A6ZyhuKS5hcnJvd1k/LnZhbHVlP2Ake2cobikuYXJyb3dZPy52YWx1ZX1weGA6dm9pZCAwLFtyLnZhbHVlXTowLHRyYW5zZm9ybU9yaWdpbjp7dG9wOiIiLHJpZ2h0OiIwIDAiLGJvdHRvbToiY2VudGVyIDAiLGxlZnQ6IjEwMCUgMCJ9W2cobikucGxhY2VkU2lkZS52YWx1ZV0sdHJhbnNmb3JtOnt0b3A6InRyYW5zbGF0ZVkoMTAwJSkiLHJpZ2h0OiJ0cmFuc2xhdGVZKDUwJSkgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVYKC01MCUpIixib3R0b206InJvdGF0ZSgxODBkZWcpIixsZWZ0OiJ0cmFuc2xhdGVZKDUwJSkgcm90YXRlKC05MGRlZykgdHJhbnNsYXRlWCg1MCUpIn1bZyhuKS5wbGFjZWRTaWRlLnZhbHVlXSx2aXNpYmlsaXR5Omcobikuc2hvdWxkSGlkZUFycm93LnZhbHVlPyJoaWRkZW4iOnZvaWQgMH0pfSxbcmUod1IsZmUoby4kYXR0cnMse3JlZjpnKHQpLHN0eWxlOntkaXNwbGF5OiJibG9jayJ9LGFzOm8uYXMsImFzLWNoaWxkIjpvLmFzQ2hpbGQscm91bmRlZDpvLnJvdW5kZWQsd2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9KSx7ZGVmYXVsdDpNKCgpPT5bVShvLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiLCJyb3VuZGVkIiwid2lkdGgiLCJoZWlnaHQiXSldLDQpKX19KSxBMj1DMjtmdW5jdGlvbiBPMihlKXtjb25zdCB0PWlkKHtub25jZTpHKCl9KTtyZXR1cm4gTigoKT0+ZT8udmFsdWV8fHQubm9uY2U/LnZhbHVlKX12YXIgUDI9c2Uoe19fbmFtZToiTGFiZWwiLHByb3BzOntmb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBVZSgpLChuLHIpPT4oUigpLCQoZyhNZSksZmUodCx7b25Nb3VzZWRvd246clswXXx8KHJbMF09bz0+eyFvLmRlZmF1bHRQcmV2ZW50ZWQmJm8uZGV0YWlsPjEmJm8ucHJldmVudERlZmF1bHQoKX0pfSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxJMj1QMjtjb25zdCBVdT0xMDAsW1IyLE4yXT1nbigiUHJvZ3Jlc3NSb290Iiksbmw9ZT0+dHlwZW9mIGU9PSJudW1iZXIiO2Z1bmN0aW9uIEQyKGUsdCl7cmV0dXJuIEFpKGUpfHxubChlKSYmIU51bWJlci5pc05hTihlKSYmZTw9dCYmZT49MD9lOm51bGx9ZnVuY3Rpb24gTDIoZSl7cmV0dXJuIG5sKGUpJiYhTnVtYmVyLmlzTmFOKGUpJiZlPjA/ZTpVdX12YXIgJDI9c2Uoe19fbmFtZToiUHJvZ3Jlc3NSb290Iixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpbTnVtYmVyLG51bGxdLHJlcXVpcmVkOiExfSxtYXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6VXV9LGdldFZhbHVlTGFiZWw6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITEsZGVmYXVsdDooZSx0KT0+bmwoZSk/YCR7TWF0aC5yb3VuZChlL3QqVXUpfSVgOnZvaWQgMH0sZ2V0VmFsdWVUZXh0Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm1heCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQ7VWUoKTtjb25zdCBvPWFvKG4sIm1vZGVsVmFsdWUiLHIse3Bhc3NpdmU6bi5tb2RlbFZhbHVlPT09dm9pZCAwfSkscz1hbyhuLCJtYXgiLHIse3Bhc3NpdmU6bi5tYXg9PT12b2lkIDB9KTtQZSgoKT0+by52YWx1ZSxhc3luYyBhPT57Y29uc3QgbD1EMihhLG4ubWF4KTtsIT09YSYmKGF3YWl0IGl0KCksby52YWx1ZT1sKX0se2ltbWVkaWF0ZTohMH0pLFBlKCgpPT5uLm1heCxhPT57Y29uc3QgbD1MMihuLm1heCk7bCE9PWEmJihzLnZhbHVlPWwpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgaT1OKCgpPT5BaShvLnZhbHVlKT8iaW5kZXRlcm1pbmF0ZSI6by52YWx1ZT09PXMudmFsdWU/ImNvbXBsZXRlIjoibG9hZGluZyIpO3JldHVybiBOMih7bW9kZWxWYWx1ZTpvLG1heDpzLHByb2dyZXNzU3RhdGU6aX0pLChhLGwpPT4oUigpLCQoZyhNZSkseyJhcy1jaGlsZCI6YS5hc0NoaWxkLGFzOmEuYXMsImFyaWEtdmFsdWVtYXgiOmcocyksImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFsdWVub3ciOm5sKGcobykpP2cobyk6dm9pZCAwLCJhcmlhLXZhbHVldGV4dCI6YS5nZXRWYWx1ZVRleHQ/LihnKG8pLGcocykpLCJhcmlhLWxhYmVsIjphLmdldFZhbHVlTGFiZWwoZyhvKSxnKHMpKSxyb2xlOiJwcm9ncmVzc2JhciIsImRhdGEtc3RhdGUiOmkudmFsdWUsImRhdGEtdmFsdWUiOmcobyk/P3ZvaWQgMCwiZGF0YS1tYXgiOmcocyl9LHtkZWZhdWx0Ok0oKCk9PltVKGEuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTpnKG8pfSldKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIiwiYXJpYS12YWx1ZW1heCIsImFyaWEtdmFsdWVub3ciLCJhcmlhLXZhbHVldGV4dCIsImFyaWEtbGFiZWwiLCJkYXRhLXN0YXRlIiwiZGF0YS12YWx1ZSIsImRhdGEtbWF4Il0pKX19KSxNMj0kMixCMj1zZSh7X19uYW1lOiJQcm9ncmVzc0luZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPVIyKCk7cmV0dXJuIFVlKCksKHIsbyk9PihSKCksJChnKE1lKSxmZSh0LHsiZGF0YS1zdGF0ZSI6ZyhuKS5wcm9ncmVzc1N0YXRlLnZhbHVlLCJkYXRhLXZhbHVlIjpnKG4pLm1vZGVsVmFsdWU/LnZhbHVlPz92b2lkIDAsImRhdGEtbWF4IjpnKG4pLm1heC52YWx1ZX0pLHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsImRhdGEtdmFsdWUiLCJkYXRhLW1heCJdKSl9fSkscTI9QjI7Y29uc3QgRjI9WyIgIiwiRW50ZXIiLCJBcnJvd1VwIiwiQXJyb3dEb3duIl0sejI9WyIgIiwiRW50ZXIiXSxNbj0xMDtmdW5jdGlvbiBQaShlLHQsbil7cmV0dXJuIGU9PT12b2lkIDA/ITE6QXJyYXkuaXNBcnJheShlKT9lLnNvbWUocj0+SHUocix0LG4pKTpIdShlLHQsbil9ZnVuY3Rpb24gSHUoZSx0LG4pe3JldHVybiBlPT09dm9pZCAwfHx0PT09dm9pZCAwPyExOnR5cGVvZiBlPT0ic3RyaW5nIj9lPT09dDp0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKGUsdCk6dHlwZW9mIG49PSJzdHJpbmciP2U/LltuXT09PXQ/LltuXTpJbChlLHQpfWZ1bmN0aW9uIGoyKGUpe3JldHVybiBlPT1udWxsfHxlPT09IiJ8fEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPT09MH1jb25zdCBWMj17a2V5OjAsdmFsdWU6IiJ9LFtobyxFMF09Z24oIlNlbGVjdFJvb3QiKTt2YXIgVTI9c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlNlbGVjdFJvb3QiLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQse3JlcXVpcmVkOm8sZGlzYWJsZWQ6cyxtdWx0aXBsZTppLGRpcjphfT1FbihuKSxsPWFvKG4sIm1vZGVsVmFsdWUiLHIse2RlZmF1bHRWYWx1ZTpuLmRlZmF1bHRWYWx1ZT8/KGkudmFsdWU/W106dm9pZCAwKSxwYXNzaXZlOm4ubW9kZWxWYWx1ZT09PXZvaWQgMCxkZWVwOiEwfSksdT1hbyhuLCJvcGVuIixyLHtkZWZhdWx0VmFsdWU6bi5kZWZhdWx0T3BlbixwYXNzaXZlOm4ub3Blbj09PXZvaWQgMH0pLGM9RygpLGY9RygpLGQ9Ryh7eDowLHk6MH0pLHA9TigoKT0+aS52YWx1ZSYmQXJyYXkuaXNBcnJheShsLnZhbHVlKT9sLnZhbHVlPy5sZW5ndGg9PT0wOkFpKGwudmFsdWUpKTttbyh7aXNQcm92aWRlcjohMH0pO2NvbnN0IG09eUkoYSkseT1iSShjKSxfPUcobmV3IFNldCksdz1OKCgpPT5BcnJheS5mcm9tKF8udmFsdWUpLm1hcChiPT5iLnZhbHVlKS5qb2luKCI7IikpO2Z1bmN0aW9uIHYoYil7aWYoaS52YWx1ZSl7Y29uc3QgeD1BcnJheS5pc0FycmF5KGwudmFsdWUpP1suLi5sLnZhbHVlXTpbXSxTPXguZmluZEluZGV4KGs9Pkh1KGssYixuLmJ5KSk7Uz09PS0xP3gucHVzaChiKTp4LnNwbGljZShTLDEpLGwudmFsdWU9Wy4uLnhdfWVsc2UgbC52YWx1ZT1ifWZ1bmN0aW9uIGgoYil7cmV0dXJuIEFycmF5LmZyb20oXy52YWx1ZSkuZmluZCh4PT5QaShiLHgudmFsdWUsbi5ieSkpfXJldHVybiBFMCh7dHJpZ2dlckVsZW1lbnQ6YyxvblRyaWdnZXJDaGFuZ2U6Yj0+e2MudmFsdWU9Yn0sdmFsdWVFbGVtZW50OmYsb25WYWx1ZUVsZW1lbnRDaGFuZ2U6Yj0+e2YudmFsdWU9Yn0sY29udGVudElkOiIiLG1vZGVsVmFsdWU6bCxvblZhbHVlQ2hhbmdlOnYsYnk6bi5ieSxvcGVuOnUsbXVsdGlwbGU6aSxyZXF1aXJlZDpvLG9uT3BlbkNoYW5nZTpiPT57dS52YWx1ZT1ifSxkaXI6bSx0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWY6ZCxkaXNhYmxlZDpzLGlzRW1wdHlNb2RlbFZhbHVlOnAsb3B0aW9uc1NldDpfLG9uT3B0aW9uQWRkOmI9Pntjb25zdCB4PWgoYi52YWx1ZSk7eCYmXy52YWx1ZS5kZWxldGUoeCksXy52YWx1ZS5hZGQoYil9LG9uT3B0aW9uUmVtb3ZlOmI9Pntjb25zdCB4PWgoYi52YWx1ZSk7eCYmXy52YWx1ZS5kZWxldGUoeCl9fSksKGIseCk9PihSKCksJChnKG1SKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltVKGIuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTpnKGwpLG9wZW46Zyh1KX0pLGcoeSkmJmIubmFtZT8oUigpLCQoRzIse2tleTp3LnZhbHVlLCJhcmlhLWhpZGRlbiI6InRydWUiLHRhYmluZGV4OiItMSIsbXVsdGlwbGU6ZyhpKSxyZXF1aXJlZDpnKG8pLG5hbWU6Yi5uYW1lLGF1dG9jb21wbGV0ZTpiLmF1dG9jb21wbGV0ZSxkaXNhYmxlZDpnKHMpLHZhbHVlOmcobCl9LHtkZWZhdWx0Ok0oKCk9PltnKEFpKShnKGwpKT8oUigpLF9lKCJvcHRpb24iLFYyKSk6ZGUoInYtaWYiLCEwKSwoUighMCksX2UoR2UsbnVsbCx1cihBcnJheS5mcm9tKF8udmFsdWUpLFM9PihSKCksX2UoIm9wdGlvbiIsZmUoe2tleTpTLnZhbHVlPz8iIn0se3JlZl9mb3I6ITB9LFMpLG51bGwsMTYpKSksMTI4KSldKSxfOjF9LDgsWyJtdWx0aXBsZSIsInJlcXVpcmVkIiwibmFtZSIsImF1dG9jb21wbGV0ZSIsImRpc2FibGVkIiwidmFsdWUiXSkpOmRlKCJ2LWlmIiwhMCldKSxfOjN9KSl9fSksSDI9VTIsVzI9c2Uoe19fbmFtZToiQnViYmxlU2VsZWN0Iixwcm9wczp7YXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcm06e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1HKCkscj1obygpO1BlKCgpPT50LnZhbHVlLChzLGkpPT57Y29uc3QgYT13aW5kb3cuSFRNTFNlbGVjdEVsZW1lbnQucHJvdG90eXBlLHU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLCJ2YWx1ZSIpLnNldDtpZihzIT09aSYmdSYmbi52YWx1ZSl7Y29uc3QgYz1uZXcgRXZlbnQoImNoYW5nZSIse2J1YmJsZXM6ITB9KTt1LmNhbGwobi52YWx1ZSxzKSxuLnZhbHVlLmRpc3BhdGNoRXZlbnQoYyl9fSk7ZnVuY3Rpb24gbyhzKXtyLm9uVmFsdWVDaGFuZ2Uocy50YXJnZXQudmFsdWUpfXJldHVybihzLGkpPT4oUigpLCQoZyhWaSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0Ok0oKCk9Plt3dCgic2VsZWN0IixmZSh7cmVmX2tleToic2VsZWN0RWxlbWVudCIscmVmOm59LHQse29uSW5wdXQ6b30pLFtVKHMuJHNsb3RzLCJkZWZhdWx0IildLDE2KV0pLF86M30pKX19KSxHMj1XMixLMj1zZSh7X19uYW1lOiJTZWxlY3RQb3BwZXJQb3NpdGlvbiIscHJvcHM6e3NpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3RhcnQifSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDpNbn0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBuPXBvKGUpO3JldHVybihyLG8pPT4oUigpLCQoZyhFMiksZmUoZyhuKSx7c3R5bGU6e2JveFNpemluZzoiYm9yZGVyLWJveCIsIi0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCkiLCItLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn19KSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFEyPUsyO2NvbnN0IFQwPXtvblZpZXdwb3J0Q2hhbmdlOigpPT57fSxpdGVtVGV4dFJlZkNhbGxiYWNrOigpPT57fSxpdGVtUmVmQ2FsbGJhY2s6KCk9Pnt9fSxbSGksQzBdPWduKCJTZWxlY3RDb250ZW50Iik7dmFyIFkyPXNlKHtfX25hbWU6IlNlbGVjdENvbnRlbnRJbXBsIixwcm9wczp7cG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Iml0ZW0tYWxpZ25lZCJ9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzdGFydCJ9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbImNsb3NlQXV0b0ZvY3VzIiwiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1obygpO3ZJKCksWGIobi5ib2R5TG9jayk7Y29uc3R7Q29sbGVjdGlvblNsb3Q6cyxnZXRJdGVtczppfT1tbygpLGE9RygpO3QwKGEpO2NvbnN0e3NlYXJjaDpsLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDp1fT1uMCgpLGM9RygpLGY9RygpLGQ9RygpLHA9RyghMSksbT1HKCExKSx5PUcoITEpO2Z1bmN0aW9uIF8oKXtmLnZhbHVlJiZhLnZhbHVlJiZWbShbZi52YWx1ZSxhLnZhbHVlXSl9UGUocCwoKT0+e18oKX0pO2NvbnN0e29uT3BlbkNoYW5nZTp3LHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjp2fT1vO29uKFM9PntpZighYS52YWx1ZSlyZXR1cm47bGV0IGs9e3g6MCx5OjB9O2NvbnN0IFQ9UD0+e2s9e3g6TWF0aC5hYnMoTWF0aC5yb3VuZChQLnBhZ2VYKS0odi52YWx1ZT8ueD8/MCkpLHk6TWF0aC5hYnMoTWF0aC5yb3VuZChQLnBhZ2VZKS0odi52YWx1ZT8ueT8/MCkpfX0sQz1QPT57UC5wb2ludGVyVHlwZSE9PSJ0b3VjaCImJihrLng8PTEwJiZrLnk8PTEwP1AucHJldmVudERlZmF1bHQoKTphLnZhbHVlPy5jb250YWlucyhQLnRhcmdldCl8fHcoITEpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixUKSx2LnZhbHVlPW51bGwpfTt2LnZhbHVlIT09bnVsbCYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixUKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEMse2NhcHR1cmU6ITAsb25jZTohMH0pKSxTKCgpPT57ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLFQpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsQyx7Y2FwdHVyZTohMH0pfSl9KTtmdW5jdGlvbiBoKFMpe2NvbnN0IGs9Uy5jdHJsS2V5fHxTLmFsdEtleXx8Uy5tZXRhS2V5O2lmKFMua2V5PT09IlRhYiImJlMucHJldmVudERlZmF1bHQoKSwhayYmUy5rZXkubGVuZ3RoPT09MSYmdShTLmtleSxpKCkpLFsiQXJyb3dVcCIsIkFycm93RG93biIsIkhvbWUiLCJFbmQiXS5pbmNsdWRlcyhTLmtleSkpe2xldCBDPVsuLi5pKCkubWFwKFA9PlAucmVmKV07aWYoWyJBcnJvd1VwIiwiRW5kIl0uaW5jbHVkZXMoUy5rZXkpJiYoQz1DLnNsaWNlKCkucmV2ZXJzZSgpKSxbIkFycm93VXAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyhTLmtleSkpe2NvbnN0IFA9Uy50YXJnZXQsRj1DLmluZGV4T2YoUCk7Qz1DLnNsaWNlKEYrMSl9c2V0VGltZW91dCgoKT0+Vm0oQykpLFMucHJldmVudERlZmF1bHQoKX19Y29uc3QgYj1OKCgpPT5uLnBvc2l0aW9uPT09InBvcHBlciI/bjp7fSkseD1wbyhiLnZhbHVlKTtyZXR1cm4gQzAoe2NvbnRlbnQ6YSx2aWV3cG9ydDpjLG9uVmlld3BvcnRDaGFuZ2U6Uz0+e2MudmFsdWU9U30saXRlbVJlZkNhbGxiYWNrOihTLGssVCk9Pntjb25zdCBDPSFtLnZhbHVlJiYhVCxQPVBpKG8ubW9kZWxWYWx1ZS52YWx1ZSxrLG8uYnkpO2lmKG8ubXVsdGlwbGUudmFsdWUpe2lmKHkudmFsdWUpcmV0dXJuOyhQfHxDKSYmKGYudmFsdWU9UyxQJiYoeS52YWx1ZT0hMCkpfWVsc2UoUHx8QykmJihmLnZhbHVlPVMpO0MmJihtLnZhbHVlPSEwKX0sc2VsZWN0ZWRJdGVtOmYsc2VsZWN0ZWRJdGVtVGV4dDpkLG9uSXRlbUxlYXZlOigpPT57YS52YWx1ZT8uZm9jdXMoKX0saXRlbVRleHRSZWZDYWxsYmFjazooUyxrLFQpPT57Y29uc3QgQz0hbS52YWx1ZSYmIVQ7KFBpKG8ubW9kZWxWYWx1ZS52YWx1ZSxrLG8uYnkpfHxDKSYmKGQudmFsdWU9Uyl9LGZvY3VzU2VsZWN0ZWRJdGVtOl8scG9zaXRpb246bi5wb3NpdGlvbixpc1Bvc2l0aW9uZWQ6cCxzZWFyY2hSZWY6bH0pLChTLGspPT4oUigpLCQoZyhzKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKGEwKSx7ImFzLWNoaWxkIjoiIixvbk1vdW50QXV0b0ZvY3VzOmtbNl18fChrWzZdPVJyKCgpPT57fSxbInByZXZlbnQiXSkpLG9uVW5tb3VudEF1dG9Gb2N1czprWzddfHwoa1s3XT1UPT57cigiY2xvc2VBdXRvRm9jdXMiLFQpLCFULmRlZmF1bHRQcmV2ZW50ZWQmJihnKG8pLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLFQucHJldmVudERlZmF1bHQoKSl9KX0se2RlZmF1bHQ6TSgoKT0+W3JlKGcoaTApLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOlMuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLG9uRm9jdXNPdXRzaWRlOmtbMl18fChrWzJdPVJyKCgpPT57fSxbInByZXZlbnQiXSkpLG9uRGlzbWlzczprWzNdfHwoa1szXT1UPT5nKG8pLm9uT3BlbkNoYW5nZSghMSkpLG9uRXNjYXBlS2V5RG93bjprWzRdfHwoa1s0XT1UPT5yKCJlc2NhcGVLZXlEb3duIixUKSksb25Qb2ludGVyRG93bk91dHNpZGU6a1s1XXx8KGtbNV09VD0+cigicG9pbnRlckRvd25PdXRzaWRlIixUKSl9LHtkZWZhdWx0Ok0oKCk9PlsoUigpLCQoRm4oUy5wb3NpdGlvbj09PSJwb3BwZXIiP1EyOnROKSxmZSh7Li4uUy4kYXR0cnMsLi4uZyh4KX0se2lkOmcobykuY29udGVudElkLHJlZjpUPT57aWYoIVQpcmV0dXJuO2NvbnN0IEM9ZyhBdCkoVCk7Qz8uaGFzQXR0cmlidXRlKCJkYXRhLXJla2EtcG9wcGVyLWNvbnRlbnQtd3JhcHBlciIpP2EudmFsdWU9Qy5maXJzdEVsZW1lbnRDaGlsZDphLnZhbHVlPUN9LHJvbGU6Imxpc3Rib3giLCJkYXRhLXN0YXRlIjpnKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLGRpcjpnKG8pLmRpci52YWx1ZSxzdHlsZTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdXRsaW5lOiJub25lIn0sb25Db250ZXh0bWVudTprWzBdfHwoa1swXT1ScigoKT0+e30sWyJwcmV2ZW50Il0pKSxvblBsYWNlZDprWzFdfHwoa1sxXT1UPT5wLnZhbHVlPSEwKSxvbktleWRvd246aH0pLHtkZWZhdWx0Ok0oKCk9PltVKFMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJkYXRhLXN0YXRlIiwiZGlyIiwib25LZXlkb3duIl0pKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30pXSksXzozfSkpfX0pLEoyPVkyO2NvbnN0W1gyLFoyXT1nbigiU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiIpO3ZhciBlTj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsicGxhY2VkIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCx7Z2V0SXRlbXM6b309bW8oKSxzPWhvKCksaT1IaSgpLGE9RyghMSksbD1HKCEwKSx1PUcoKSx7Zm9yd2FyZFJlZjpjLGN1cnJlbnRFbGVtZW50OmZ9PVVlKCkse3ZpZXdwb3J0OmQsc2VsZWN0ZWRJdGVtOnAsc2VsZWN0ZWRJdGVtVGV4dDptLGZvY3VzU2VsZWN0ZWRJdGVtOnl9PWk7ZnVuY3Rpb24gXygpe2lmKHMudHJpZ2dlckVsZW1lbnQudmFsdWUmJnMudmFsdWVFbGVtZW50LnZhbHVlJiZ1LnZhbHVlJiZmLnZhbHVlJiZkPy52YWx1ZSYmcD8udmFsdWUmJm0/LnZhbHVlKXtjb25zdCBoPXMudHJpZ2dlckVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYj1mLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHg9cy52YWx1ZUVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksUz1tLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHMuZGlyLnZhbHVlIT09InJ0bCIpe2NvbnN0IHo9Uy5sZWZ0LWIubGVmdCxZPXgubGVmdC16LEo9aC5sZWZ0LVksbGU9aC53aWR0aCtKLHdlPU1hdGgubWF4KGxlLGIud2lkdGgpLHRlPXdpbmRvdy5pbm5lcldpZHRoLU1uLEU9Um0oWSxNbixNYXRoLm1heChNbix0ZS13ZSkpO3UudmFsdWUuc3R5bGUubWluV2lkdGg9YCR7bGV9cHhgLHUudmFsdWUuc3R5bGUubGVmdD1gJHtFfXB4YH1lbHNle2NvbnN0IHo9Yi5yaWdodC1TLnJpZ2h0LFk9d2luZG93LmlubmVyV2lkdGgteC5yaWdodC16LEo9d2luZG93LmlubmVyV2lkdGgtaC5yaWdodC1ZLGxlPWgud2lkdGgrSix3ZT1NYXRoLm1heChsZSxiLndpZHRoKSx0ZT13aW5kb3cuaW5uZXJXaWR0aC1NbixFPVJtKFksTW4sTWF0aC5tYXgoTW4sdGUtd2UpKTt1LnZhbHVlLnN0eWxlLm1pbldpZHRoPWAke2xlfXB4YCx1LnZhbHVlLnN0eWxlLnJpZ2h0PWAke0V9cHhgfWNvbnN0IGs9bygpLm1hcCh6PT56LnJlZiksVD13aW5kb3cuaW5uZXJIZWlnaHQtTW4qMixDPWQudmFsdWUuc2Nyb2xsSGVpZ2h0LFA9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZi52YWx1ZSksRj1OdW1iZXIucGFyc2VJbnQoUC5ib3JkZXJUb3BXaWR0aCwxMCksRD1OdW1iZXIucGFyc2VJbnQoUC5wYWRkaW5nVG9wLDEwKSxXPU51bWJlci5wYXJzZUludChQLmJvcmRlckJvdHRvbVdpZHRoLDEwKSxMPU51bWJlci5wYXJzZUludChQLnBhZGRpbmdCb3R0b20sMTApLGo9RitEK0MrTCtXLEk9TWF0aC5taW4ocC52YWx1ZS5vZmZzZXRIZWlnaHQqNSxqKSxWPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGQudmFsdWUpLEI9TnVtYmVyLnBhcnNlSW50KFYucGFkZGluZ1RvcCwxMCksaWU9TnVtYmVyLnBhcnNlSW50KFYucGFkZGluZ0JvdHRvbSwxMCksbmU9aC50b3AraC5oZWlnaHQvMi1NbixWZT1ULW5lLE5lPXAudmFsdWUub2Zmc2V0SGVpZ2h0LzIsZXQ9cC52YWx1ZS5vZmZzZXRUb3ArTmUsdmU9RitEK2V0LEllPWotdmU7aWYodmU8PW5lKXtjb25zdCB6PXAudmFsdWU9PT1rLmF0KC0xKTt1LnZhbHVlLnN0eWxlLmJvdHRvbT0iMHB4Ijtjb25zdCBZPWYudmFsdWUuY2xpZW50SGVpZ2h0LWQudmFsdWUub2Zmc2V0VG9wLWQudmFsdWUub2Zmc2V0SGVpZ2h0LEo9TWF0aC5tYXgoVmUsTmUrKHo/aWU6MCkrWStXKSxsZT12ZStKO3UudmFsdWUuc3R5bGUuaGVpZ2h0PWAke2xlfXB4YH1lbHNle2NvbnN0IHo9cC52YWx1ZT09PWtbMF07dS52YWx1ZS5zdHlsZS50b3A9IjBweCI7Y29uc3QgSj1NYXRoLm1heChuZSxGK2QudmFsdWUub2Zmc2V0VG9wKyh6P0I6MCkrTmUpK0llO3UudmFsdWUuc3R5bGUuaGVpZ2h0PWAke0p9cHhgLGQudmFsdWUuc2Nyb2xsVG9wPXZlLW5lK2QudmFsdWUub2Zmc2V0VG9wfXUudmFsdWUuc3R5bGUubWFyZ2luPWAke01ufXB4IDBgLHUudmFsdWUuc3R5bGUubWluSGVpZ2h0PWAke0l9cHhgLHUudmFsdWUuc3R5bGUubWF4SGVpZ2h0PWAke1R9cHhgLHIoInBsYWNlZCIpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+YS52YWx1ZT0hMCl9fWNvbnN0IHc9RygiIik7b3QoYXN5bmMoKT0+e2F3YWl0IGl0KCksXygpLGYudmFsdWUmJih3LnZhbHVlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGYudmFsdWUpLnpJbmRleCl9KTtmdW5jdGlvbiB2KGgpe2gmJmwudmFsdWU9PT0hMCYmKF8oKSx5Py4oKSxsLnZhbHVlPSExKX1yZXR1cm4gSmIocy50cmlnZ2VyRWxlbWVudCwoKT0+e18oKX0pLFoyKHtjb250ZW50V3JhcHBlcjp1LHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOmEsb25TY3JvbGxCdXR0b25DaGFuZ2U6dn0pLChoLGIpPT4oUigpLF9lKCJkaXYiLHtyZWZfa2V5OiJjb250ZW50V3JhcHBlckVsZW1lbnQiLHJlZjp1LHN0eWxlOlJuKHtkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLHBvc2l0aW9uOiJmaXhlZCIsekluZGV4OncudmFsdWV9KX0sW3JlKGcoTWUpLGZlKHtyZWY6ZyhjKSxzdHlsZTp7Ym94U2l6aW5nOiJib3JkZXItYm94IixtYXhIZWlnaHQ6IjEwMCUifX0sey4uLmguJGF0dHJzLC4uLm59KSx7ZGVmYXVsdDpNKCgpPT5bVShoLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNildLDQpKX19KSx0Tj1lTixuTj1zZSh7X19uYW1lOiJTZWxlY3RBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPUhpKFQwKTtyZXR1cm4ocixvKT0+ZyhuKS5wb3NpdGlvbj09PSJwb3BwZXIiPyhSKCksJChnKEEyKSx4dChmZSh7a2V5OjB9LHQpKSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpOmRlKCJ2LWlmIiwhMCl9fSksck49bk4sb049c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlNlbGVjdFByb3ZpZGVyIixwcm9wczp7Y29udGV4dDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9fSxzZXR1cChlKXtyZXR1cm4gRTAoZS5jb250ZXh0KSxDMChUMCksKG4scik9PlUobi4kc2xvdHMsImRlZmF1bHQiKX19KSxzTj1vTjtjb25zdCBpTj17a2V5OjF9O3ZhciBhTj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0Q29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiY2xvc2VBdXRvRm9jdXMiLCJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLG89JHMobix0KSxzPWhvKCksaT1HKCk7b3QoKCk9PntpLnZhbHVlPW5ldyBEb2N1bWVudEZyYWdtZW50fSk7Y29uc3QgYT1HKCksbD1OKCgpPT5uLmZvcmNlTW91bnR8fHMub3Blbi52YWx1ZSksdT1HKGwudmFsdWUpO3JldHVybiBQZShsLCgpPT57c2V0VGltZW91dCgoKT0+dS52YWx1ZT1sLnZhbHVlKX0pLChjLGYpPT5sLnZhbHVlfHx1LnZhbHVlfHxhLnZhbHVlPy5wcmVzZW50PyhSKCksJChnKHpsKSx7a2V5OjAscmVmX2tleToicHJlc2VuY2VSZWYiLHJlZjphLHByZXNlbnQ6bC52YWx1ZX0se2RlZmF1bHQ6TSgoKT0+W3JlKEoyLHh0KE10KHsuLi5nKG8pLC4uLmMuJGF0dHJzfSkpLHtkZWZhdWx0Ok0oKCk9PltVKGMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KV0pLF86M30sOCxbInByZXNlbnQiXSkpOmkudmFsdWU/KFIoKSxfZSgiZGl2IixpTixbKFIoKSwkKHZmLHt0bzppLnZhbHVlfSxbcmUoc04se2NvbnRleHQ6ZyhzKX0se2RlZmF1bHQ6TSgoKT0+W1UoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImNvbnRleHQiXSldLDgsWyJ0byJdKSldKSk6ZGUoInYtaWYiLCEwKX19KSxsTj1hTjtjb25zdFtjTix1Tl09Z24oIlNlbGVjdEdyb3VwIik7dmFyIGZOPXNlKHtfX25hbWU6IlNlbGVjdEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49Q3Modm9pZCAwLCJyZWthLXNlbGVjdC1ncm91cCIpO3JldHVybiB1Tih7aWQ6bn0pLChyLG8pPT4oUigpLCQoZyhNZSksZmUoe3JvbGU6Imdyb3VwIn0sdCx7ImFyaWEtbGFiZWxsZWRieSI6ZyhuKX0pLHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxkTj1mTjtjb25zdFtBMCxwTl09Z24oIlNlbGVjdEl0ZW0iKTt2YXIgbU49c2Uoe19fbmFtZToiU2VsZWN0SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCx7ZGlzYWJsZWQ6b309RW4obikscz1obygpLGk9SGkoKSx7Zm9yd2FyZFJlZjphLGN1cnJlbnRFbGVtZW50Omx9PVVlKCkse0NvbGxlY3Rpb25JdGVtOnV9PW1vKCksYz1OKCgpPT5QaShzLm1vZGVsVmFsdWU/LnZhbHVlLG4udmFsdWUscy5ieSkpLGY9RyghMSksZD1HKG4udGV4dFZhbHVlPz8iIikscD1Dcyh2b2lkIDAsInJla2Etc2VsZWN0LWl0ZW0tdGV4dCIpLG09InNlbGVjdC5zZWxlY3QiO2FzeW5jIGZ1bmN0aW9uIHkoYil7aWYoYi5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB4PXtvcmlnaW5hbEV2ZW50OmIsdmFsdWU6bi52YWx1ZX07SmYobSxfLHgpfWFzeW5jIGZ1bmN0aW9uIF8oYil7YXdhaXQgaXQoKSxyKCJzZWxlY3QiLGIpLCFiLmRlZmF1bHRQcmV2ZW50ZWQmJihvLnZhbHVlfHwocy5vblZhbHVlQ2hhbmdlKG4udmFsdWUpLHMubXVsdGlwbGUudmFsdWV8fHMub25PcGVuQ2hhbmdlKCExKSkpfWFzeW5jIGZ1bmN0aW9uIHcoYil7YXdhaXQgaXQoKSwhYi5kZWZhdWx0UHJldmVudGVkJiYoby52YWx1ZT9pLm9uSXRlbUxlYXZlPy4oKTpiLmN1cnJlbnRUYXJnZXQ/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpfWFzeW5jIGZ1bmN0aW9uIHYoYil7YXdhaXQgaXQoKSwhYi5kZWZhdWx0UHJldmVudGVkJiZiLmN1cnJlbnRUYXJnZXQ9PT1ybigpJiZpLm9uSXRlbUxlYXZlPy4oKX1hc3luYyBmdW5jdGlvbiBoKGIpe2F3YWl0IGl0KCksIShiLmRlZmF1bHRQcmV2ZW50ZWR8fGkuc2VhcmNoUmVmPy52YWx1ZSE9PSIiJiZiLmtleT09PSIgIikmJih6Mi5pbmNsdWRlcyhiLmtleSkmJnkoYiksYi5rZXk9PT0iICImJmIucHJldmVudERlZmF1bHQoKSl9aWYobi52YWx1ZT09PSIiKXRocm93IG5ldyBFcnJvcigiQSA8U2VsZWN0SXRlbSAvPiBtdXN0IGhhdmUgYSB2YWx1ZSBwcm9wIHRoYXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBTZWxlY3QgdmFsdWUgY2FuIGJlIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbiBhbmQgc2hvdyB0aGUgcGxhY2Vob2xkZXIuIik7cmV0dXJuIG90KCgpPT57bC52YWx1ZSYmaS5pdGVtUmVmQ2FsbGJhY2sobC52YWx1ZSxuLnZhbHVlLG4uZGlzYWJsZWQpfSkscE4oe3ZhbHVlOm4udmFsdWUsZGlzYWJsZWQ6byx0ZXh0SWQ6cCxpc1NlbGVjdGVkOmMsb25JdGVtVGV4dENoYW5nZTpiPT57ZC52YWx1ZT0oKGQudmFsdWV8fGI/LnRleHRDb250ZW50KT8/IiIpLnRyaW0oKX19KSwoYix4KT0+KFIoKSwkKGcodSkse3ZhbHVlOnt0ZXh0VmFsdWU6ZC52YWx1ZX19LHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSx7cmVmOmcoYSkscm9sZToib3B0aW9uIiwiYXJpYS1sYWJlbGxlZGJ5IjpnKHApLCJkYXRhLWhpZ2hsaWdodGVkIjpmLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1zZWxlY3RlZCI6Yy52YWx1ZSwiZGF0YS1zdGF0ZSI6Yy52YWx1ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCIsImFyaWEtZGlzYWJsZWQiOmcobyl8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZyhvKT8iIjp2b2lkIDAsdGFiaW5kZXg6ZyhvKT92b2lkIDA6LTEsYXM6Yi5hcywiYXMtY2hpbGQiOmIuYXNDaGlsZCxvbkZvY3VzOnhbMF18fCh4WzBdPVM9PmYudmFsdWU9ITApLG9uQmx1cjp4WzFdfHwoeFsxXT1TPT5mLnZhbHVlPSExKSxvblBvaW50ZXJ1cDp5LG9uUG9pbnRlcmRvd246eFsyXXx8KHhbMl09Uz0+e1MuY3VycmVudFRhcmdldC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSksb25Ub3VjaGVuZDp4WzNdfHwoeFszXT1ScigoKT0+e30sWyJwcmV2ZW50Iiwic3RvcCJdKSksb25Qb2ludGVybW92ZTp3LG9uUG9pbnRlcmxlYXZlOnYsb25LZXlkb3duOmh9LHtkZWZhdWx0Ok0oKCk9PltVKGIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLWhpZ2hsaWdodGVkIiwiYXJpYS1zZWxlY3RlZCIsImRhdGEtc3RhdGUiLCJhcmlhLWRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsInRhYmluZGV4IiwiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxoTj1tTixnTj1zZSh7X19uYW1lOiJTZWxlY3RJdGVtSW5kaWNhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49QTAoKTtyZXR1cm4ocixvKT0+ZyhuKS5pc1NlbGVjdGVkLnZhbHVlPyhSKCksJChnKE1lKSxmZSh7a2V5OjAsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6ZGUoInYtaWYiLCEwKX19KSx5Tj1nTix2Tj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0SXRlbVRleHQiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1obygpLHI9SGkoKSxvPUEwKCkse2ZvcndhcmRSZWY6cyxjdXJyZW50RWxlbWVudDppfT1VZSgpLGE9TigoKT0+KHt2YWx1ZTpvLnZhbHVlLGRpc2FibGVkOm8uZGlzYWJsZWQudmFsdWUsdGV4dENvbnRlbnQ6aS52YWx1ZT8udGV4dENvbnRlbnQ/P28udmFsdWU/LnRvU3RyaW5nKCk/PyIifSkpO3JldHVybiBvdCgoKT0+e2kudmFsdWUmJihvLm9uSXRlbVRleHRDaGFuZ2UoaS52YWx1ZSksci5pdGVtVGV4dFJlZkNhbGxiYWNrKGkudmFsdWUsby52YWx1ZSxvLmRpc2FibGVkLnZhbHVlKSxuLm9uT3B0aW9uQWRkKGEudmFsdWUpKX0pLHByKCgpPT57bi5vbk9wdGlvblJlbW92ZShhLnZhbHVlKX0pLChsLHUpPT4oUigpLCQoZyhNZSksZmUoe2lkOmcobykudGV4dElkLHJlZjpnKHMpfSx7Li4udCwuLi5sLiRhdHRyc30pLHtkZWZhdWx0Ok0oKCk9PltVKGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiXSkpfX0pLGJOPXZOLHdOPXNlKHtfX25hbWU6IlNlbGVjdExhYmVsIixwcm9wczp7Zm9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRpdiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1jTih7aWQ6IiJ9KTtyZXR1cm4ocixvKT0+KFIoKSwkKGcoTWUpLGZlKHQse2lkOmcobikuaWR9KSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxfTj13Tix4Tj1zZSh7X19uYW1lOiJTZWxlY3RQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuKG4scik9PihSKCksJChnKGxkKSx4dChNdCh0KSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxTTj14TixrTj1zZSh7X19uYW1lOiJTZWxlY3RTZXBhcmF0b3IiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuKG4scik9PihSKCksJChnKE1lKSxmZSh7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHtkZWZhdWx0Ok0oKCk9PltVKG4uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksRU49a04sVE49c2Uoe19fbmFtZToiU2VsZWN0VHJpZ2dlciIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPWhvKCkse2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDpvfT1VZSgpLHM9TigoKT0+bi5kaXNhYmxlZD8udmFsdWV8fHQuZGlzYWJsZWQpO24uY29udGVudElkfHw9Q3Modm9pZCAwLCJyZWthLXNlbGVjdC1jb250ZW50Iiksb3QoKCk9PntuLm9uVHJpZ2dlckNoYW5nZShvLnZhbHVlKX0pO2NvbnN0e2dldEl0ZW1zOml9PW1vKCkse3NlYXJjaDphLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDpsLHJlc2V0VHlwZWFoZWFkOnV9PW4wKCk7ZnVuY3Rpb24gYygpe3MudmFsdWV8fChuLm9uT3BlbkNoYW5nZSghMCksdSgpKX1mdW5jdGlvbiBmKGQpe2MoKSxuLnRyaWdnZXJQb2ludGVyRG93blBvc1JlZi52YWx1ZT17eDpNYXRoLnJvdW5kKGQucGFnZVgpLHk6TWF0aC5yb3VuZChkLnBhZ2VZKX19cmV0dXJuKGQscCk9PihSKCksJChnKGdSKSx7ImFzLWNoaWxkIjoiIixyZWZlcmVuY2U6ZC5yZWZlcmVuY2V9LHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSx7cmVmOmcocikscm9sZToiY29tYm9ib3giLHR5cGU6ZC5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXJpYS1jb250cm9scyI6ZyhuKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOmcobikub3Blbi52YWx1ZXx8ITEsImFyaWEtcmVxdWlyZWQiOmcobikucmVxdWlyZWQ/LnZhbHVlLCJhcmlhLWF1dG9jb21wbGV0ZSI6Im5vbmUiLGRpc2FibGVkOnMudmFsdWUsZGlyOmcobik/LmRpci52YWx1ZSwiZGF0YS1zdGF0ZSI6ZyhuKT8ub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsImRhdGEtZGlzYWJsZWQiOnMudmFsdWU/IiI6dm9pZCAwLCJkYXRhLXBsYWNlaG9sZGVyIjpnKGoyKShnKG4pLm1vZGVsVmFsdWU/LnZhbHVlKT8iIjp2b2lkIDAsImFzLWNoaWxkIjpkLmFzQ2hpbGQsYXM6ZC5hcyxvbkNsaWNrOnBbMF18fChwWzBdPW09PnttPy5jdXJyZW50VGFyZ2V0Py5mb2N1cygpfSksb25Qb2ludGVyZG93bjpwWzFdfHwocFsxXT1tPT57aWYobS5wb2ludGVyVHlwZT09PSJ0b3VjaCIpcmV0dXJuIG0ucHJldmVudERlZmF1bHQoKTtjb25zdCB5PW0udGFyZ2V0O3kuaGFzUG9pbnRlckNhcHR1cmUobS5wb2ludGVySWQpJiZ5LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShtLnBvaW50ZXJJZCksbS5idXR0b249PT0wJiZtLmN0cmxLZXk9PT0hMSYmKGYobSksbS5wcmV2ZW50RGVmYXVsdCgpKX0pLG9uUG9pbnRlcnVwOnBbMl18fChwWzJdPVJyKG09PnttLnBvaW50ZXJUeXBlPT09InRvdWNoIiYmZihtKX0sWyJwcmV2ZW50Il0pKSxvbktleWRvd246cFszXXx8KHBbM109bT0+e2NvbnN0IHk9ZyhhKSE9PSIiOyEobS5jdHJsS2V5fHxtLmFsdEtleXx8bS5tZXRhS2V5KSYmbS5rZXkubGVuZ3RoPT09MSYmeSYmbS5rZXk9PT0iICJ8fChnKGwpKG0ua2V5LGcoaSkoKSksZyhGMikuaW5jbHVkZXMobS5rZXkpJiYoYygpLG0ucHJldmVudERlZmF1bHQoKSkpfSl9LHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0eXBlIiwiYXJpYS1jb250cm9scyIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLXJlcXVpcmVkIiwiZGlzYWJsZWQiLCJkaXIiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtcGxhY2Vob2xkZXIiLCJhcy1jaGlsZCIsImFzIl0pXSksXzozfSw4LFsicmVmZXJlbmNlIl0pKX19KSxDTj1UTixBTj1zZSh7X19uYW1lOiJTZWxlY3RWYWx1ZSIscHJvcHM6e3BsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiIifSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdCB0PWUse2ZvcndhcmRSZWY6bixjdXJyZW50RWxlbWVudDpyfT1VZSgpLG89aG8oKTtvdCgoKT0+e28udmFsdWVFbGVtZW50PXJ9KTtjb25zdCBzPU4oKCk9PntsZXQgYT1bXTtjb25zdCBsPUFycmF5LmZyb20oby5vcHRpb25zU2V0LnZhbHVlKSx1PWM9PmwuZmluZChmPT5QaShjLGYudmFsdWUsby5ieSkpO3JldHVybiBBcnJheS5pc0FycmF5KG8ubW9kZWxWYWx1ZS52YWx1ZSk/YT1vLm1vZGVsVmFsdWUudmFsdWUubWFwKGM9PnUoYyk/LnRleHRDb250ZW50Pz8iIik6YT1bdShvLm1vZGVsVmFsdWUudmFsdWUpPy50ZXh0Q29udGVudD8/IiJdLGEuZmlsdGVyKEJvb2xlYW4pfSksaT1OKCgpPT5zLnZhbHVlLmxlbmd0aD9zLnZhbHVlLmpvaW4oIiwgIik6dC5wbGFjZWhvbGRlcik7cmV0dXJuKGEsbCk9PihSKCksJChnKE1lKSx7cmVmOmcobiksYXM6YS5hcywiYXMtY2hpbGQiOmEuYXNDaGlsZCxzdHlsZTp7cG9pbnRlckV2ZW50czoibm9uZSJ9LCJkYXRhLXBsYWNlaG9sZGVyIjpzLnZhbHVlLmxlbmd0aD92b2lkIDA6dC5wbGFjZWhvbGRlcn0se2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiLHtzZWxlY3RlZExhYmVsOnMudmFsdWUsbW9kZWxWYWx1ZTpnKG8pLm1vZGVsVmFsdWUudmFsdWV9LCgpPT5bc3QocnQoaS52YWx1ZSksMSldKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXBsYWNlaG9sZGVyIl0pKX19KSxPTj1BTixQTj1zZSh7X19uYW1lOiJTZWxlY3RWaWV3cG9ydCIscHJvcHM6e25vbmNlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLHtub25jZTpufT1Fbih0KSxyPU8yKG4pLG89SGkoKSxzPW8ucG9zaXRpb249PT0iaXRlbS1hbGlnbmVkIj9YMigpOnZvaWQgMCx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50OmF9PVVlKCk7b3QoKCk9PntvPy5vblZpZXdwb3J0Q2hhbmdlKGEudmFsdWUpfSk7Y29uc3QgbD1HKDApO2Z1bmN0aW9uIHUoYyl7Y29uc3QgZj1jLmN1cnJlbnRUYXJnZXQse3Nob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOmQsY29udGVudFdyYXBwZXI6cH09cz8/e307aWYoZD8udmFsdWUmJnA/LnZhbHVlKXtjb25zdCBtPU1hdGguYWJzKGwudmFsdWUtZi5zY3JvbGxUb3ApO2lmKG0+MCl7Y29uc3QgeT13aW5kb3cuaW5uZXJIZWlnaHQtTW4qMixfPU51bWJlci5wYXJzZUZsb2F0KHAudmFsdWUuc3R5bGUubWluSGVpZ2h0KSx3PU51bWJlci5wYXJzZUZsb2F0KHAudmFsdWUuc3R5bGUuaGVpZ2h0KSx2PU1hdGgubWF4KF8sdyk7aWYodjx5KXtjb25zdCBoPXYrbSxiPU1hdGgubWluKHksaCkseD1oLWI7cC52YWx1ZS5zdHlsZS5oZWlnaHQ9YCR7Yn1weGAscC52YWx1ZS5zdHlsZS5ib3R0b209PT0iMHB4IiYmKGYuc2Nyb2xsVG9wPXg+MD94OjAscC52YWx1ZS5zdHlsZS5qdXN0aWZ5Q29udGVudD0iZmxleC1lbmQiKX19fWwudmFsdWU9Zi5zY3JvbGxUb3B9cmV0dXJuKGMsZik9PihSKCksX2UoR2UsbnVsbCxbcmUoZyhNZSksZmUoe3JlZjpnKGkpLCJkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0IjoiIixyb2xlOiJwcmVzZW50YXRpb24ifSx7Li4uYy4kYXR0cnMsLi4udH0se3N0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXg6MSxvdmVyZmxvdzoiaGlkZGVuIGF1dG8ifSxvblNjcm9sbDp1fSkse2RlZmF1bHQ6TSgoKT0+W1UoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpLHJlKGcoTWUpLHthczoic3R5bGUiLG5vbmNlOmcocil9LHtkZWZhdWx0Ok0oKCk9PmZbMF18fChmWzBdPVtzdCgiIC8qIEhpZGUgc2Nyb2xsYmFycyBjcm9zcy1icm93c2VyIGFuZCBlbmFibGUgbW9tZW50dW0gc2Nyb2xsIGZvciB0b3VjaCBkZXZpY2VzICovIFtkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0XSB7IHNjcm9sbGJhci13aWR0aDpub25lOyAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfSBbZGF0YS1yZWthLXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfSAiKV0pKSxfOjEsX186WzBdfSw4LFsibm9uY2UiXSldLDY0KSl9fSksSU49UE4sUk49c2Uoe19fbmFtZToiVG9hc3RBbm5vdW5jZUV4Y2x1ZGUiLHByb3BzOnthbHRUZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7cmV0dXJuKHQsbik9PihSKCksJChnKE1lKSx7YXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiZGF0YS1yZWthLXRvYXN0LWFubm91bmNlLWV4Y2x1ZGUiOiIiLCJkYXRhLXJla2EtdG9hc3QtYW5ub3VuY2UtYWx0Ijp0LmFsdFRleHR8fHZvaWQgMH0se2RlZmF1bHQ6TSgoKT0+W1UodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXJla2EtdG9hc3QtYW5ub3VuY2UtYWx0Il0pKX19KSxPMD1STjtjb25zdFtXbCxOTl09Z24oIlRvYXN0UHJvdmlkZXIiKTt2YXIgRE49c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvYXN0UHJvdmlkZXIiLHByb3BzOntsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiTm90aWZpY2F0aW9uIn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NWUzfSxkaXNhYmxlU3dpcGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3dpcGVEaXJlY3Rpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6InJpZ2h0In0sc3dpcGVUaHJlc2hvbGQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NTB9fSxzZXR1cChlKXtjb25zdCB0PWUse2xhYmVsOm4sZHVyYXRpb246cixkaXNhYmxlU3dpcGU6byxzd2lwZURpcmVjdGlvbjpzLHN3aXBlVGhyZXNob2xkOml9PUVuKHQpO21vKHtpc1Byb3ZpZGVyOiEwfSk7Y29uc3QgYT1HKCksbD1HKDApLHU9RyghMSksYz1HKCExKTtpZih0LmxhYmVsJiZ0eXBlb2YgdC5sYWJlbD09InN0cmluZyImJiF0LmxhYmVsLnRyaW0oKSl7Y29uc3QgZj0iSW52YWxpZCBwcm9wIGBsYWJlbGAgc3VwcGxpZWQgdG8gYFRvYXN0UHJvdmlkZXJgLiBFeHBlY3RlZCBub24tZW1wdHkgYHN0cmluZ2AuIjt0aHJvdyBuZXcgRXJyb3IoZil9cmV0dXJuIE5OKHtsYWJlbDpuLGR1cmF0aW9uOnIsZGlzYWJsZVN3aXBlOm8sc3dpcGVEaXJlY3Rpb246cyxzd2lwZVRocmVzaG9sZDppLHRvYXN0Q291bnQ6bCx2aWV3cG9ydDphLG9uVmlld3BvcnRDaGFuZ2UoZil7YS52YWx1ZT1mfSxvblRvYXN0QWRkKCl7bC52YWx1ZSsrfSxvblRvYXN0UmVtb3ZlKCl7bC52YWx1ZS0tfSxpc0ZvY3VzZWRUb2FzdEVzY2FwZUtleURvd25SZWY6dSxpc0Nsb3NlUGF1c2VkUmVmOmN9KSwoZixkKT0+VShmLiRzbG90cywiZGVmYXVsdCIpfX0pLExOPUROLCROPXNlKHtfX25hbWU6IlRvYXN0QW5ub3VuY2UiLHNldHVwKGUpe2NvbnN0IHQ9V2woKSxuPUhQKDFlMykscj1HKCExKTtyZXR1cm4gWWIoKCk9PntyLnZhbHVlPSEwfSksKG8scyk9Pmcobil8fHIudmFsdWU/KFIoKSwkKGcoVmkpLHtrZXk6MCxmZWF0dXJlOiJmdWxseS1oaWRkZW4ifSx7ZGVmYXVsdDpNKCgpPT5bc3QocnQoZyh0KS5sYWJlbC52YWx1ZSkrIiAiLDEpLFUoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30pKTpkZSgidi1pZiIsITApfX0pLE1OPSROO2NvbnN0IEJOPSJ0b2FzdC5zd2lwZVN0YXJ0IixxTj0idG9hc3Quc3dpcGVNb3ZlIixGTj0idG9hc3Quc3dpcGVDYW5jZWwiLHpOPSJ0b2FzdC5zd2lwZUVuZCIsV3U9InRvYXN0LnZpZXdwb3J0UGF1c2UiLEd1PSJ0b2FzdC52aWV3cG9ydFJlc3VtZSI7ZnVuY3Rpb24geWEoZSx0LG4pe2NvbnN0IHI9bi5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmci5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHIuZGlzcGF0Y2hFdmVudChvKX1mdW5jdGlvbiBvaChlLHQsbj0wKXtjb25zdCByPU1hdGguYWJzKGUueCksbz1NYXRoLmFicyhlLnkpLHM9cj5vO3JldHVybiB0PT09ImxlZnQifHx0PT09InJpZ2h0Ij9zJiZyPm46IXMmJm8+bn1mdW5jdGlvbiBqTihlKXtyZXR1cm4gZS5ub2RlVHlwZT09PWUuRUxFTUVOVF9OT0RFfWZ1bmN0aW9uIFAwKGUpe2NvbnN0IHQ9W107cmV0dXJuIEFycmF5LmZyb20oZS5jaGlsZE5vZGVzKS5mb3JFYWNoKHI9PntpZihyLm5vZGVUeXBlPT09ci5URVhUX05PREUmJnIudGV4dENvbnRlbnQmJnQucHVzaChyLnRleHRDb250ZW50KSxqTihyKSl7Y29uc3Qgbz1yLmFyaWFIaWRkZW58fHIuaGlkZGVufHxyLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSIscz1yLmRhdGFzZXQucmVrYVRvYXN0QW5ub3VuY2VFeGNsdWRlPT09IiI7aWYoIW8paWYocyl7Y29uc3QgaT1yLmRhdGFzZXQucmVrYVRvYXN0QW5ub3VuY2VBbHQ7aSYmdC5wdXNoKGkpfWVsc2UgdC5wdXNoKC4uLlAwKHIpKX19KSx0fWNvbnN0W1ZOLFVOXT1nbigiVG9hc3RSb290Iik7dmFyIEhOPXNlKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJUb2FzdFJvb3RJbXBsIixwcm9wczp7dHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsaSJ9fSxlbWl0czpbImNsb3NlIiwiZXNjYXBlS2V5RG93biIsInBhdXNlIiwicmVzdW1lIiwic3dpcGVTdGFydCIsInN3aXBlTW92ZSIsInN3aXBlQ2FuY2VsIiwic3dpcGVFbmQiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBuPWUscj10LHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6c309VWUoKSx7Q29sbGVjdGlvbkl0ZW06aX09bW8oKSxhPVdsKCksbD1HKG51bGwpLHU9RyhudWxsKSxjPU4oKCk9PnR5cGVvZiBuLmR1cmF0aW9uPT0ibnVtYmVyIj9uLmR1cmF0aW9uOmEuZHVyYXRpb24udmFsdWUpLGY9RygwKSxkPUcoYy52YWx1ZSkscD1HKDApLG09RyhjLnZhbHVlKSx5PVliKCgpPT57Y29uc3QgaD1EYXRlLm5vdygpLWYudmFsdWU7bS52YWx1ZT1NYXRoLm1heChkLnZhbHVlLWgsMCl9LHtmcHNMaW1pdDo2MH0pO2Z1bmN0aW9uIF8oaCl7aDw9MHx8aD09PU51bWJlci5QT1NJVElWRV9JTkZJTklUWXx8aG4mJih3aW5kb3cuY2xlYXJUaW1lb3V0KHAudmFsdWUpLGYudmFsdWU9RGF0ZS5ub3coKSxwLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KHcsaCkpfWZ1bmN0aW9uIHcoaCl7Y29uc3QgYj1oPy5wb2ludGVyVHlwZT09PSIiO3MudmFsdWU/LmNvbnRhaW5zKHJuKCkpJiZiJiZhLnZpZXdwb3J0LnZhbHVlPy5mb2N1cygpLGImJihhLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWU9ITEpLHIoImNsb3NlIil9Y29uc3Qgdj1OKCgpPT5zLnZhbHVlP1AwKHMudmFsdWUpOm51bGwpO2lmKG4udHlwZSYmIVsiZm9yZWdyb3VuZCIsImJhY2tncm91bmQiXS5pbmNsdWRlcyhuLnR5cGUpKXtjb25zdCBoPSJJbnZhbGlkIHByb3AgYHR5cGVgIHN1cHBsaWVkIHRvIGBUb2FzdGAuIEV4cGVjdGVkIGBmb3JlZ3JvdW5kIHwgYmFja2dyb3VuZGAuIjt0aHJvdyBuZXcgRXJyb3IoaCl9cmV0dXJuIG9uKGg9Pntjb25zdCBiPWEudmlld3BvcnQudmFsdWU7aWYoYil7Y29uc3QgeD0oKT0+e18oZC52YWx1ZSkseS5yZXN1bWUoKSxyKCJyZXN1bWUiKX0sUz0oKT0+e2NvbnN0IGs9RGF0ZS5ub3coKS1mLnZhbHVlO2QudmFsdWU9ZC52YWx1ZS1rLHdpbmRvdy5jbGVhclRpbWVvdXQocC52YWx1ZSkseS5wYXVzZSgpLHIoInBhdXNlIil9O3JldHVybiBiLmFkZEV2ZW50TGlzdGVuZXIoV3UsUyksYi5hZGRFdmVudExpc3RlbmVyKEd1LHgpLCgpPT57Yi5yZW1vdmVFdmVudExpc3RlbmVyKFd1LFMpLGIucmVtb3ZlRXZlbnRMaXN0ZW5lcihHdSx4KX19fSksUGUoKCk9PltuLm9wZW4sYy52YWx1ZV0sKCk9PntkLnZhbHVlPWMudmFsdWUsbi5vcGVuJiYhYS5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlJiZfKGMudmFsdWUpfSx7aW1tZWRpYXRlOiEwfSksb2QoIkVzY2FwZSIsaD0+e3IoImVzY2FwZUtleURvd24iLGgpLGguZGVmYXVsdFByZXZlbnRlZHx8KGEuaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmLnZhbHVlPSEwLHcoKSl9KSxvdCgoKT0+e2Eub25Ub2FzdEFkZCgpfSkscHIoKCk9PnthLm9uVG9hc3RSZW1vdmUoKX0pLFVOKHtvbkNsb3NlOnd9KSwoaCxiKT0+KFIoKSxfZShHZSxudWxsLFt2LnZhbHVlPyhSKCksJChNTix7a2V5OjAscm9sZToiYWxlcnQiLCJhcmlhLWxpdmUiOmgudHlwZT09PSJmb3JlZ3JvdW5kIj8iYXNzZXJ0aXZlIjoicG9saXRlIn0se2RlZmF1bHQ6TSgoKT0+W3N0KHJ0KHYudmFsdWUpLDEpXSksXzoxfSw4LFsiYXJpYS1saXZlIl0pKTpkZSgidi1pZiIsITApLGcoYSkudmlld3BvcnQudmFsdWU/KFIoKSwkKHZmLHtrZXk6MSx0bzpnKGEpLnZpZXdwb3J0LnZhbHVlfSxbcmUoZyhpKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSxmZSh7cmVmOmcobyksdGFiaW5kZXg6IjAifSxoLiRhdHRycyx7YXM6aC5hcywiYXMtY2hpbGQiOmguYXNDaGlsZCwiZGF0YS1zdGF0ZSI6aC5vcGVuPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1zd2lwZS1kaXJlY3Rpb24iOmcoYSkuc3dpcGVEaXJlY3Rpb24udmFsdWUsc3R5bGU6ZyhhKS5kaXNhYmxlU3dpcGUudmFsdWU/dm9pZCAwOnt1c2VyU2VsZWN0OiJub25lIix0b3VjaEFjdGlvbjoibm9uZSJ9LG9uUG9pbnRlcmRvd246YlswXXx8KGJbMF09UnIoeD0+e2coYSkuZGlzYWJsZVN3aXBlLnZhbHVlfHwobC52YWx1ZT17eDp4LmNsaWVudFgseTp4LmNsaWVudFl9KX0sWyJsZWZ0Il0pKSxvblBvaW50ZXJtb3ZlOmJbMV18fChiWzFdPXg9PntpZihnKGEpLmRpc2FibGVTd2lwZS52YWx1ZXx8IWwudmFsdWUpcmV0dXJuO2NvbnN0IFM9eC5jbGllbnRYLWwudmFsdWUueCxrPXguY2xpZW50WS1sLnZhbHVlLnksVD0hIXUudmFsdWUsQz1bImxlZnQiLCJyaWdodCJdLmluY2x1ZGVzKGcoYSkuc3dpcGVEaXJlY3Rpb24udmFsdWUpLFA9WyJsZWZ0IiwidXAiXS5pbmNsdWRlcyhnKGEpLnN3aXBlRGlyZWN0aW9uLnZhbHVlKT9NYXRoLm1pbjpNYXRoLm1heCxGPUM/UCgwLFMpOjAsRD1DPzA6UCgwLGspLFc9eC5wb2ludGVyVHlwZT09PSJ0b3VjaCI/MTA6MixMPXt4OkYseTpEfSxqPXtvcmlnaW5hbEV2ZW50OngsZGVsdGE6TH07VD8odS52YWx1ZT1MLGcoeWEpKGcocU4pLEk9PnIoInN3aXBlTW92ZSIsSSksaikpOmcob2gpKEwsZyhhKS5zd2lwZURpcmVjdGlvbi52YWx1ZSxXKT8odS52YWx1ZT1MLGcoeWEpKGcoQk4pLEk9PnIoInN3aXBlU3RhcnQiLEkpLGopLHgudGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKHgucG9pbnRlcklkKSk6KE1hdGguYWJzKFMpPld8fE1hdGguYWJzKGspPlcpJiYobC52YWx1ZT1udWxsKX0pLG9uUG9pbnRlcnVwOmJbMl18fChiWzJdPXg9PntpZihnKGEpLmRpc2FibGVTd2lwZS52YWx1ZSlyZXR1cm47Y29uc3QgUz11LnZhbHVlLGs9eC50YXJnZXQ7aWYoay5oYXNQb2ludGVyQ2FwdHVyZSh4LnBvaW50ZXJJZCkmJmsucmVsZWFzZVBvaW50ZXJDYXB0dXJlKHgucG9pbnRlcklkKSx1LnZhbHVlPW51bGwsbC52YWx1ZT1udWxsLFMpe2NvbnN0IFQ9eC5jdXJyZW50VGFyZ2V0LEM9e29yaWdpbmFsRXZlbnQ6eCxkZWx0YTpTfTtnKG9oKShTLGcoYSkuc3dpcGVEaXJlY3Rpb24udmFsdWUsZyhhKS5zd2lwZVRocmVzaG9sZC52YWx1ZSk/Zyh5YSkoZyh6TiksUD0+cigic3dpcGVFbmQiLFApLEMpOmcoeWEpKGcoRk4pLFA9PnIoInN3aXBlQ2FuY2VsIixQKSxDKSxUPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsUD0+UC5wcmV2ZW50RGVmYXVsdCgpLHtvbmNlOiEwfSl9fSl9KSx7ZGVmYXVsdDpNKCgpPT5bVShoLiRzbG90cywiZGVmYXVsdCIse3JlbWFpbmluZzptLnZhbHVlLGR1cmF0aW9uOmMudmFsdWV9KV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1zdGF0ZSIsImRhdGEtc3dpcGUtZGlyZWN0aW9uIiwic3R5bGUiXSldKSxfOjN9KV0sOCxbInRvIl0pKTpkZSgidi1pZiIsITApXSw2NCkpfX0pLFdOPUhOLEdOPXNlKHtfX25hbWU6IlRvYXN0Q2xvc2UiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPVZOKCkse2ZvcndhcmRSZWY6cn09VWUoKTtyZXR1cm4obyxzKT0+KFIoKSwkKE8wLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhNZSksZmUodCx7cmVmOmcociksdHlwZTpvLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLG9uQ2xpY2s6ZyhuKS5vbkNsb3NlfSkse2RlZmF1bHQ6TSgoKT0+W1Uoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIiwib25DbGljayJdKV0pLF86M30pKX19KSxJMD1HTixLTj1zZSh7X19uYW1lOiJUb2FzdEFjdGlvbiIscHJvcHM6e2FsdFRleHQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtpZighZS5hbHRUZXh0KXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBwcm9wIGBhbHRUZXh0YCBleHBlY3RlZCBvbiBgVG9hc3RBY3Rpb25gIik7Y29uc3R7Zm9yd2FyZFJlZjpufT1VZSgpO3JldHVybihyLG8pPT5yLmFsdFRleHQ/KFIoKSwkKE8wLHtrZXk6MCwiYWx0LXRleHQiOnIuYWx0VGV4dCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUoSTAse3JlZjpnKG4pLGFzOnIuYXMsImFzLWNoaWxkIjpyLmFzQ2hpbGR9LHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIl0pXSksXzozfSw4LFsiYWx0LXRleHQiXSkpOmRlKCJ2LWlmIiwhMCl9fSksc2g9S04sUU49c2Uoe19fbmFtZToiVG9hc3REZXNjcmlwdGlvbiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gVWUoKSwobixyKT0+KFIoKSwkKGcoTWUpLHh0KE10KHQpKSx7ZGVmYXVsdDpNKCgpPT5bVShuLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFlOPVFOLEpOPXNlKHtfX25hbWU6IlRvYXN0UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybihuLHIpPT4oUigpLCQoZyhsZCkseHQoTXQodCkpLHtkZWZhdWx0Ok0oKCk9PltVKG4uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksWE49Sk4sWk49c2Uoe19fbmFtZToiVG9hc3RSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImZvcmVncm91bmQifSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBhdXNlIiwicmVzdW1lIiwic3dpcGVTdGFydCIsInN3aXBlTW92ZSIsInN3aXBlQ2FuY2VsIiwic3dpcGVFbmQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQse2ZvcndhcmRSZWY6b309VWUoKSxzPWFvKG4sIm9wZW4iLHIse2RlZmF1bHRWYWx1ZTpuLmRlZmF1bHRPcGVuLHBhc3NpdmU6bi5vcGVuPT09dm9pZCAwfSk7cmV0dXJuKGksYSk9PihSKCksJChnKHpsKSx7cHJlc2VudDppLmZvcmNlTW91bnR8fGcocyl9LHtkZWZhdWx0Ok0oKCk9PltyZShXTixmZSh7cmVmOmcobyksb3BlbjpnKHMpLHR5cGU6aS50eXBlLGFzOmkuYXMsImFzLWNoaWxkIjppLmFzQ2hpbGQsZHVyYXRpb246aS5kdXJhdGlvbn0saS4kYXR0cnMse29uQ2xvc2U6YVswXXx8KGFbMF09bD0+cy52YWx1ZT0hMSksb25QYXVzZTphWzFdfHwoYVsxXT1sPT5yKCJwYXVzZSIpKSxvblJlc3VtZTphWzJdfHwoYVsyXT1sPT5yKCJyZXN1bWUiKSksb25Fc2NhcGVLZXlEb3duOmFbM118fChhWzNdPWw9PnIoImVzY2FwZUtleURvd24iLGwpKSxvblN3aXBlU3RhcnQ6YVs0XXx8KGFbNF09bD0+e3IoInN3aXBlU3RhcnQiLGwpLGwuZGVmYXVsdFByZXZlbnRlZHx8bC5jdXJyZW50VGFyZ2V0LnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZSIsInN0YXJ0Iil9KSxvblN3aXBlTW92ZTphWzVdfHwoYVs1XT1sPT57aWYocigic3dpcGVNb3ZlIixsKSwhbC5kZWZhdWx0UHJldmVudGVkKXtjb25zdHt4OnUseTpjfT1sLmRldGFpbC5kZWx0YSxmPWwuY3VycmVudFRhcmdldDtmLnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZSIsIm1vdmUiKSxmLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS14IixgJHt1fXB4YCksZi5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteSIsYCR7Y31weGApfX0pLG9uU3dpcGVDYW5jZWw6YVs2XXx8KGFbNl09bD0+e2lmKHIoInN3aXBlQ2FuY2VsIixsKSwhbC5kZWZhdWx0UHJldmVudGVkKXtjb25zdCB1PWwuY3VycmVudFRhcmdldDt1LnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZSIsImNhbmNlbCIpLHUuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgiKSx1LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15IiksdS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLWVuZC14IiksdS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLWVuZC15Iil9fSksb25Td2lwZUVuZDphWzddfHwoYVs3XT1sPT57aWYocigic3dpcGVFbmQiLGwpLCFsLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0e3g6dSx5OmN9PWwuZGV0YWlsLmRlbHRhLGY9bC5jdXJyZW50VGFyZ2V0O2Yuc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwiZW5kIiksZi5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteCIpLGYuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXkiKSxmLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXgiLGAke3V9cHhgKSxmLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXkiLGAke2N9cHhgKSxzLnZhbHVlPSExfX0pfSkse2RlZmF1bHQ6TSgoe3JlbWFpbmluZzpsLGR1cmF0aW9uOnV9KT0+W1UoaS4kc2xvdHMsImRlZmF1bHQiLHtyZW1haW5pbmc6bCxkdXJhdGlvbjp1LG9wZW46ZyhzKX0pXSksXzozfSwxNixbIm9wZW4iLCJ0eXBlIiwiYXMiLCJhcy1jaGlsZCIsImR1cmF0aW9uIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksZUQ9Wk4sdEQ9c2Uoe19fbmFtZToiVG9hc3RUaXRsZSIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gVWUoKSwobixyKT0+KFIoKSwkKGcoTWUpLHh0KE10KHQpKSx7ZGVmYXVsdDpNKCgpPT5bVShuLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLG5EPXRELHJEPXNlKHtfX25hbWU6IkZvY3VzUHJveHkiLGVtaXRzOlsiZm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj10LHI9V2woKTtyZXR1cm4obyxzKT0+KFIoKSwkKGcoVmkpLHt0YWJpbmRleDoiMCIsc3R5bGU6e3Bvc2l0aW9uOiJmaXhlZCJ9LG9uRm9jdXM6c1swXXx8KHNbMF09aT0+e2NvbnN0IGE9aS5yZWxhdGVkVGFyZ2V0OyFnKHIpLnZpZXdwb3J0LnZhbHVlPy5jb250YWlucyhhKSYmbigiZm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0Iil9KX0se2RlZmF1bHQ6TSgoKT0+W1Uoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30pKX19KSxpaD1yRCxvRD1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiVG9hc3RWaWV3cG9ydCIscHJvcHM6e2hvdGtleTp7dHlwZTpBcnJheSxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT5bIkY4Il19LGxhYmVsOnt0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExLGRlZmF1bHQ6Ik5vdGlmaWNhdGlvbnMgKHtob3RrZXl9KSJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJvbCJ9fSxzZXR1cChlKXtjb25zdCB0PWUse2hvdGtleTpuLGxhYmVsOnJ9PUVuKHQpLHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6c309VWUoKSx7Q29sbGVjdGlvblNsb3Q6aSxnZXRJdGVtczphfT1tbygpLGw9V2woKSx1PU4oKCk9PmwudG9hc3RDb3VudC52YWx1ZT4wKSxjPUcoKSxmPUcoKSxkPS9LZXkvZyxwPS9EaWdpdC9nLG09TigoKT0+bi52YWx1ZS5qb2luKCIrIikucmVwbGFjZShkLCIiKS5yZXBsYWNlKHAsIiIpKTtvZChuLnZhbHVlLCgpPT57cy52YWx1ZS5mb2N1cygpfSksb3QoKCk9PntsLm9uVmlld3BvcnRDaGFuZ2Uocy52YWx1ZSl9KSxvbihfPT57Y29uc3Qgdz1zLnZhbHVlO2lmKHUudmFsdWUmJncpe2NvbnN0IHY9KCk9PntpZighbC5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlKXtjb25zdCBrPW5ldyBDdXN0b21FdmVudChXdSk7dy5kaXNwYXRjaEV2ZW50KGspLGwuaXNDbG9zZVBhdXNlZFJlZi52YWx1ZT0hMH19LGg9KCk9PntpZihsLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWUpe2NvbnN0IGs9bmV3IEN1c3RvbUV2ZW50KEd1KTt3LmRpc3BhdGNoRXZlbnQoayksbC5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlPSExfX0sYj1rPT57IXcuY29udGFpbnMoay5yZWxhdGVkVGFyZ2V0KSYmaCgpfSx4PSgpPT57dy5jb250YWlucyhybigpKXx8aCgpfSxTPWs9Pntjb25zdCBUPWsuYWx0S2V5fHxrLmN0cmxLZXl8fGsubWV0YUtleTtpZihrLmtleT09PSJUYWIiJiYhVCl7Y29uc3QgUD1ybigpLEY9ay5zaGlmdEtleTtpZihrLnRhcmdldD09PXcmJkYpe2MudmFsdWU/LmZvY3VzKCk7cmV0dXJufWNvbnN0IEw9eSh7dGFiYmluZ0RpcmVjdGlvbjpGPyJiYWNrd2FyZHMiOiJmb3J3YXJkcyJ9KSxqPUwuZmluZEluZGV4KEk9Pkk9PT1QKTtOYShMLnNsaWNlKGorMSkpP2sucHJldmVudERlZmF1bHQoKTpGP2MudmFsdWU/LmZvY3VzKCk6Zi52YWx1ZT8uZm9jdXMoKX19O3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdiksdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsYiksdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdiksdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHgpLHcuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsUyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHYpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsaCksXygoKT0+e3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsYiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHgpLHcucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsUyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsaCl9KX19KTtmdW5jdGlvbiB5KHt0YWJiaW5nRGlyZWN0aW9uOl99KXtjb25zdCB2PWEoKS5tYXAoaD0+aC5yZWYpLm1hcChoPT57Y29uc3QgYj1baCwuLi5hZChoKV07cmV0dXJuIF89PT0iZm9yd2FyZHMiP2I6Yi5yZXZlcnNlKCl9KTtyZXR1cm4oXz09PSJmb3J3YXJkcyI/di5yZXZlcnNlKCk6dikuZmxhdCgpfXJldHVybihfLHcpPT4oUigpLCQoZyhxSSkse3JvbGU6InJlZ2lvbiIsImFyaWEtbGFiZWwiOnR5cGVvZiBnKHIpPT0ic3RyaW5nIj9nKHIpLnJlcGxhY2UoIntob3RrZXl9IixtLnZhbHVlKTpnKHIpKG0udmFsdWUpLHRhYmluZGV4OiItMSIsc3R5bGU6Um4oe3BvaW50ZXJFdmVudHM6dS52YWx1ZT92b2lkIDA6Im5vbmUifSl9LHtkZWZhdWx0Ok0oKCk9Plt1LnZhbHVlPyhSKCksJChpaCx7a2V5OjAscmVmOnY9Pnt2JiYoYy52YWx1ZT1nKEF0KSh2KSl9LG9uRm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0OndbMF18fCh3WzBdPSgpPT57Y29uc3Qgdj15KHt0YWJiaW5nRGlyZWN0aW9uOiJmb3J3YXJkcyJ9KTtnKE5hKSh2KX0pfSxudWxsLDUxMikpOmRlKCJ2LWlmIiwhMCkscmUoZyhpKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSxmZSh7cmVmOmcobyksdGFiaW5kZXg6Ii0xIixhczpfLmFzLCJhcy1jaGlsZCI6Xy5hc0NoaWxkfSxfLiRhdHRycykse2RlZmF1bHQ6TSgoKT0+W1UoXy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIl0pXSksXzozfSksdS52YWx1ZT8oUigpLCQoaWgse2tleToxLHJlZjp2PT57diYmKGYudmFsdWU9ZyhBdCkodikpfSxvbkZvY3VzRnJvbU91dHNpZGVWaWV3cG9ydDp3WzFdfHwod1sxXT0oKT0+e2NvbnN0IHY9eSh7dGFiYmluZ0RpcmVjdGlvbjoiYmFja3dhcmRzIn0pO2coTmEpKHYpfSl9LG51bGwsNTEyKSk6ZGUoInYtaWYiLCEwKV0pLF86M30sOCxbImFyaWEtbGFiZWwiLCJzdHlsZSJdKSl9fSksc0Q9b0Q7Y29uc3RbQnEsaURdPWduKCJUb29sdGlwUHJvdmlkZXIiKTt2YXIgYUQ9c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvb2x0aXBQcm92aWRlciIscHJvcHM6e2RlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NzAwfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LGRpc2FibGVIb3ZlcmFibGVDb250ZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSx7ZGVsYXlEdXJhdGlvbjpuLHNraXBEZWxheUR1cmF0aW9uOnIsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6byxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6cyxpZ25vcmVOb25LZXlib2FyZEZvY3VzOmksZGlzYWJsZWQ6YSxjb250ZW50Omx9PUVuKHQpO1VlKCk7Y29uc3QgdT1HKCEwKSxjPUcoITEpLHtzdGFydDpmLHN0b3A6ZH09bmQoKCk9Pnt1LnZhbHVlPSEwfSxyLHtpbW1lZGlhdGU6ITF9KTtyZXR1cm4gaUQoe2lzT3BlbkRlbGF5ZWQ6dSxkZWxheUR1cmF0aW9uOm4sb25PcGVuKCl7ZCgpLHUudmFsdWU9ITF9LG9uQ2xvc2UoKXtmKCl9LGlzUG9pbnRlckluVHJhbnNpdFJlZjpjLGRpc2FibGVIb3ZlcmFibGVDb250ZW50Om8sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnMsZGlzYWJsZWQ6YSxpZ25vcmVOb25LZXlib2FyZEZvY3VzOmksY29udGVudDpsfSksKHAsbSk9PlUocC4kc2xvdHMsImRlZmF1bHQiKX19KSxsRD1hRDtjb25zdCBfbj17X19uYW1lOiJVSWNvbiIscHJvcHM6e25hbWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sbW9kZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxjdXN0b21pemU6e3R5cGU6W0Z1bmN0aW9uLEJvb2xlYW4sbnVsbF0scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBuPXBvKFZyKGUsIm1vZGUiLCJzaXplIiwiY3VzdG9taXplIikpO3JldHVybihyLG8pPT57Y29uc3Qgcz1GYjtyZXR1cm4gdHlwZW9mIGUubmFtZT09InN0cmluZyI/KFIoKSwkKHMsZmUoe2tleTowLG5hbWU6ZS5uYW1lfSxnKG4pKSxudWxsLDE2LFsibmFtZSJdKSk6KFIoKSwkKEZuKGUubmFtZSkse2tleToxfSkpfX19O2Z1bmN0aW9uIGNEKGUsdCl7Y29uc3Qgbj1LdShlKSxyPUt1KHQpO3JldHVybiBSMChuLHIpfWZ1bmN0aW9uIFIwKGUsdCl7Y29uc3Qgbj1bXSxyPW5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGUucHJvcHN8fHt9KSwuLi5PYmplY3Qua2V5cyh0LnByb3BzfHx7fSldKTtpZihlLnByb3BzJiZ0LnByb3BzKWZvcihjb25zdCBvIG9mIHIpe2NvbnN0IHM9ZS5wcm9wc1tvXSxpPXQucHJvcHNbb107cyYmaT9uLnB1c2goLi4uUjAoZS5wcm9wcz8uW29dLHQucHJvcHM/LltvXSkpOihzfHxpKSYmbi5wdXNoKG5ldyBhaCgoaXx8cykua2V5LHM/InJlbW92ZWQiOiJhZGRlZCIsaSxzKSl9cmV0dXJuIHIuc2l6ZT09PTAmJmUuaGFzaCE9PXQuaGFzaCYmbi5wdXNoKG5ldyBhaCgodHx8ZSkua2V5LCJjaGFuZ2VkIix0LGUpKSxufWZ1bmN0aW9uIEt1KGUsdD0iIil7aWYoZSYmdHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiBuZXcgbGgodCxlLFlhKGUpKTtjb25zdCBuPXt9LHI9W107Zm9yKGNvbnN0IG8gaW4gZSluW29dPUt1KGVbb10sdD9gJHt0fS4ke299YDpvKSxyLnB1c2gobltvXS5oYXNoKTtyZXR1cm4gbmV3IGxoKHQsZSxgeyR7ci5qb2luKCI6Iil9fWAsbil9Y2xhc3MgYWh7Y29uc3RydWN0b3IodCxuLHIsbyl7dGhpcy5rZXk9dCx0aGlzLnR5cGU9bix0aGlzLm5ld1ZhbHVlPXIsdGhpcy5vbGRWYWx1ZT1vfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudG9KU09OKCl9dG9KU09OKCl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJhZGRlZCI6cmV0dXJuYEFkZGVkICAgXGAke3RoaXMua2V5fVxgYDtjYXNlInJlbW92ZWQiOnJldHVybmBSZW1vdmVkIFxgJHt0aGlzLmtleX1cYGA7Y2FzZSJjaGFuZ2VkIjpyZXR1cm5gQ2hhbmdlZCBcYCR7dGhpcy5rZXl9XGAgZnJvbSBcYCR7dGhpcy5vbGRWYWx1ZT8udG9TdHJpbmcoKXx8Ii0ifVxgIHRvIFxgJHt0aGlzLm5ld1ZhbHVlLnRvU3RyaW5nKCl9XGBgfX19Y2xhc3MgbGh7Y29uc3RydWN0b3IodCxuLHIsbyl7dGhpcy5rZXk9dCx0aGlzLnZhbHVlPW4sdGhpcy5oYXNoPXIsdGhpcy5wcm9wcz1vfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJvcHM/YHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oIiwiKX19YDpKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKX10b0pTT04oKXtjb25zdCB0PXRoaXMua2V5fHwiLiI7cmV0dXJuIHRoaXMucHJvcHM/YCR7dH0oeyR7T2JqZWN0LmtleXModGhpcy5wcm9wcykuam9pbigiLCIpfX0pYDpgJHt0fSgke3RoaXMudmFsdWV9KWB9fWZ1bmN0aW9uIHFxKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBvZiB0KW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBOMChlLHQpe2NvbnN0IG49ey4uLmV9O2Zvcihjb25zdCByIG9mIHQpZGVsZXRlIG5bcl07cmV0dXJuIG59ZnVuY3Rpb24gd24oZSx0LG4pe3R5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9dC5zcGxpdCgiLiIpLm1hcChvPT57Y29uc3Qgcz1OdW1iZXIobyk7cmV0dXJuIE51bWJlci5pc05hTihzKT9vOnN9KSk7bGV0IHI9ZTtmb3IoY29uc3QgbyBvZiB0KXtpZihyPT1udWxsKXJldHVybiBuO3I9cltvXX1yZXR1cm4gciE9PXZvaWQgMD9yOm59ZnVuY3Rpb24geWQoZSl7Y29uc3QgdD1OdW1iZXIucGFyc2VGbG9hdChlKTtyZXR1cm4gTnVtYmVyLmlzTmFOKHQpP2U6dH1mdW5jdGlvbiB1RChlLHQsbil7cmV0dXJuIGU9PT12b2lkIDB8fHQ9PT12b2lkIDA/ITE6dHlwZW9mIGU9PSJzdHJpbmciP2U9PT10OnR5cGVvZiBuPT0iZnVuY3Rpb24iP24oZSx0KTp0eXBlb2Ygbj09InN0cmluZyI/d24oZSxuKT09PXduKHQsbik6SWwoZSx0KX1mdW5jdGlvbiBjaChlKXtpZihlPT1udWxsKXJldHVybiEwO2lmKHR5cGVvZiBlPT0iYm9vbGVhbiJ8fHR5cGVvZiBlPT0ibnVtYmVyIilyZXR1cm4hMTtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGUudHJpbSgpLmxlbmd0aD09PTA7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5sZW5ndGg9PT0wO2lmKGUgaW5zdGFuY2VvZiBNYXB8fGUgaW5zdGFuY2VvZiBTZXQpcmV0dXJuIGUuc2l6ZT09PTA7aWYoZSBpbnN0YW5jZW9mIERhdGV8fGUgaW5zdGFuY2VvZiBSZWdFeHB8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKXJldHVybiExO2lmKHR5cGVvZiBlPT0ib2JqZWN0Iil7Zm9yKGNvbnN0IHQgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB1aChlLHQsbj17fSl7Y29uc3R7dmFsdWVLZXk6cixsYWJlbEtleTpvLGJ5OnN9PW4saT1lLmZpbmQobD0+e2NvbnN0IHU9dHlwZW9mIGw9PSJvYmplY3QiJiZsIT09bnVsbCYmcj93bihsLHIpOmw7cmV0dXJuIHVEKHUsdCxzKX0pO2lmKGNoKHQpJiZpKXJldHVybiBvP3duKGksbyk6dm9pZCAwO2lmKGNoKHQpKXJldHVybjtjb25zdCBhPWk/P3Q7aWYoYSE9bnVsbClyZXR1cm4gdHlwZW9mIGE9PSJvYmplY3QiP28/d24oYSxvKTp2b2lkIDA6U3RyaW5nKGEpfWZ1bmN0aW9uIGZEKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGVbMF0pfWZ1bmN0aW9uIHJsKGUsdCl7cmV0dXJuIWUmJiF0PyIiOlsuLi5BcnJheS5pc0FycmF5KGUpP2U6W2VdLHRdLmZpbHRlcihCb29sZWFuKX1mdW5jdGlvbiBmaChlKXtyZXR1cm4gZS5tYXAodD0+e2lmKCF0LmNoaWxkcmVufHx0eXBlb2YgdC5jaGlsZHJlbj09InN0cmluZyIpcmV0dXJuIHQuY2hpbGRyZW58fCIiO2lmKEFycmF5LmlzQXJyYXkodC5jaGlsZHJlbikpcmV0dXJuIGZoKHQuY2hpbGRyZW4pO2lmKHQuY2hpbGRyZW4uZGVmYXVsdClyZXR1cm4gZmgodC5jaGlsZHJlbi5kZWZhdWx0KCkpfSkuam9pbigiIil9ZnVuY3Rpb24gRnEoZSx0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkucmVkdWNlKChuLFtyLG9dKT0+KG5bcl09dHlwZW9mIG89PSJmdW5jdGlvbiI/byh7Y2xhc3M6dD8uW3JdfSk6byxuKSx7Li4udHx8e319KX1jb25zdFtkRF09Z24oIlVUaGVtZSIsIlJvb3RDb250ZXh0Iik7ZnVuY3Rpb24gTG4oZSx0KXtjb25zdHt1aTpufT1kRCh7dWk6TigoKT0+KHt9KSl9KTtyZXR1cm4gTigoKT0+e2NvbnN0IHI9d24obi52YWx1ZSxlKXx8e307cmV0dXJuIG1uKHQudWk/P3t9LHIpfSl9Y29uc3QgZGg9U3ltYm9sKCJudXh0LXVpLmF2YXRhci1ncm91cCIpO2Z1bmN0aW9uIEQwKGUpe2NvbnN0IHQ9S2UoZGgsdm9pZCAwKSxuPU4oKCk9PmUuc2l6ZT8/dD8udmFsdWUuc2l6ZSk7cmV0dXJuIE50KGRoLE4oKCk9Pih7c2l6ZTpuLnZhbHVlfSkpKSx7c2l6ZTpufX12YXIgcEQ9L1xzKy9nLG1EPWU9PnR5cGVvZiBlIT0ic3RyaW5nInx8IWU/ZTplLnJlcGxhY2UocEQsIiAiKS50cmltKCksb2w9KC4uLmUpPT57Y29uc3QgdD1bXSxuPXI9PntpZighciYmciE9PTAmJnIhPT0wbilyZXR1cm47aWYoQXJyYXkuaXNBcnJheShyKSl7Zm9yKGxldCBzPTAsaT1yLmxlbmd0aDtzPGk7cysrKW4ocltzXSk7cmV0dXJufWNvbnN0IG89dHlwZW9mIHI7aWYobz09PSJzdHJpbmcifHxvPT09Im51bWJlciJ8fG89PT0iYmlnaW50Iil7aWYobz09PSJudW1iZXIiJiZyIT09cilyZXR1cm47dC5wdXNoKFN0cmluZyhyKSl9ZWxzZSBpZihvPT09Im9iamVjdCIpe2NvbnN0IHM9T2JqZWN0LmtleXMocik7Zm9yKGxldCBpPTAsYT1zLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBsPXNbaV07cltsXSYmdC5wdXNoKGwpfX19O2ZvcihsZXQgcj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7Y29uc3Qgcz1lW3JdO3MhPW51bGwmJm4ocyl9cmV0dXJuIHQubGVuZ3RoPjA/bUQodC5qb2luKCIgIikpOnZvaWQgMH0scGg9ZT0+ZT09PSExPyJmYWxzZSI6ZT09PSEwPyJ0cnVlIjplPT09MD8iMCI6ZSxjbj1lPT57aWYoIWV8fHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm4hMDtmb3IoY29uc3QgdCBpbiBlKXJldHVybiExO3JldHVybiEwfSxoRD0oZSx0KT0+e2lmKGU9PT10KXJldHVybiEwO2lmKCFlfHwhdClyZXR1cm4hMTtjb25zdCBuPU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3Qgcz1uW29dO2lmKCFyLmluY2x1ZGVzKHMpfHxlW3NdIT09dFtzXSlyZXR1cm4hMX1yZXR1cm4hMH0sZ0Q9KGUsdCk9Pntmb3IoY29uc3QgbiBpbiB0KWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pKXtjb25zdCByPXRbbl07biBpbiBlP2Vbbl09b2woZVtuXSxyKTplW25dPXJ9cmV0dXJuIGV9LEwwPShlLHQpPT57Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZVtuXTtBcnJheS5pc0FycmF5KHIpP0wwKHIsdCk6ciYmdC5wdXNoKHIpfX0sJDA9KC4uLmUpPT57Y29uc3QgdD1bXTtMMChlLHQpO2NvbnN0IG49W107Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXSYmbi5wdXNoKHRbcl0pO3JldHVybiBufSxRdT0oZSx0KT0+e2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdO2lmKHIgaW4gdCl7Y29uc3Qgcz10W3JdO0FycmF5LmlzQXJyYXkobyl8fEFycmF5LmlzQXJyYXkocyk/bltyXT0kMChzLG8pOnR5cGVvZiBvPT0ib2JqZWN0IiYmdHlwZW9mIHM9PSJvYmplY3QiJiZvJiZzP25bcl09UXUobyxzKTpuW3JdPXMrIiAiK299ZWxzZSBuW3JdPW99Zm9yKGNvbnN0IHIgaW4gdClyIGluIGV8fChuW3JdPXRbcl0pO3JldHVybiBufSx5RD17dHdNZXJnZTohMCx0d01lcmdlQ29uZmlnOnt9fTtmdW5jdGlvbiB2RCgpe2xldCBlPW51bGwsdD17fSxuPSExO3JldHVybntnZXQgY2FjaGVkVHdNZXJnZSgpe3JldHVybiBlfSxzZXQgY2FjaGVkVHdNZXJnZShyKXtlPXJ9LGdldCBjYWNoZWRUd01lcmdlQ29uZmlnKCl7cmV0dXJuIHR9LHNldCBjYWNoZWRUd01lcmdlQ29uZmlnKHIpe3Q9cn0sZ2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2UoKXtyZXR1cm4gbn0sc2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2Uocil7bj1yfSxyZXNldCgpe2U9bnVsbCx0PXt9LG49ITF9fX12YXIgQXI9dkQoKSxiRD1lPT57Y29uc3QgdD0ocixvKT0+e2NvbnN0e2V4dGVuZDpzPW51bGwsc2xvdHM6aT17fSx2YXJpYW50czphPXt9LGNvbXBvdW5kVmFyaWFudHM6bD1bXSxjb21wb3VuZFNsb3RzOnU9W10sZGVmYXVsdFZhcmlhbnRzOmM9e319PXIsZj17Li4ueUQsLi4ub30sZD1zPy5iYXNlP29sKHMuYmFzZSxyPy5iYXNlKTpyPy5iYXNlLHA9cz8udmFyaWFudHMmJiFjbihzLnZhcmlhbnRzKT9RdShhLHMudmFyaWFudHMpOmEsbT1zPy5kZWZhdWx0VmFyaWFudHMmJiFjbihzLmRlZmF1bHRWYXJpYW50cyk/ey4uLnMuZGVmYXVsdFZhcmlhbnRzLC4uLmN9OmM7IWNuKGYudHdNZXJnZUNvbmZpZykmJiFoRChmLnR3TWVyZ2VDb25maWcsQXIuY2FjaGVkVHdNZXJnZUNvbmZpZykmJihBci5kaWRUd01lcmdlQ29uZmlnQ2hhbmdlPSEwLEFyLmNhY2hlZFR3TWVyZ2VDb25maWc9Zi50d01lcmdlQ29uZmlnKTtjb25zdCB5PWNuKHM/LnNsb3RzKSxfPWNuKGkpP3t9OntiYXNlOm9sKHI/LmJhc2UseSYmcz8uYmFzZSksLi4uaX0sdz15P186Z0Qoey4uLnM/LnNsb3RzfSxjbihfKT97YmFzZTpyPy5iYXNlfTpfKSx2PWNuKHM/LmNvbXBvdW5kVmFyaWFudHMpP2w6JDAocz8uY29tcG91bmRWYXJpYW50cyxsKSxoPXg9PntpZihjbihwKSYmY24oaSkmJnkpcmV0dXJuIGUoZCx4Py5jbGFzcyx4Py5jbGFzc05hbWUpKGYpO2lmKHYmJiFBcnJheS5pc0FycmF5KHYpKXRocm93IG5ldyBUeXBlRXJyb3IoYFRoZSAiY29tcG91bmRWYXJpYW50cyIgcHJvcCBtdXN0IGJlIGFuIGFycmF5LiBSZWNlaXZlZDogJHt0eXBlb2Ygdn1gKTtpZih1JiYhQXJyYXkuaXNBcnJheSh1KSl0aHJvdyBuZXcgVHlwZUVycm9yKGBUaGUgImNvbXBvdW5kU2xvdHMiIHByb3AgbXVzdCBiZSBhbiBhcnJheS4gUmVjZWl2ZWQ6ICR7dHlwZW9mIHV9YCk7Y29uc3QgUz0oTCxqPXAsST1udWxsLFY9bnVsbCk9Pntjb25zdCBCPWpbTF07aWYoIUJ8fGNuKEIpKXJldHVybiBudWxsO2NvbnN0IGllPVY/LltMXT8/eD8uW0xdO2lmKGllPT09bnVsbClyZXR1cm4gbnVsbDtjb25zdCBuZT1waChpZSk7aWYodHlwZW9mIG5lPT0ib2JqZWN0IilyZXR1cm4gbnVsbDtjb25zdCBWZT1tPy5bTF0sTmU9bmU/P3BoKFZlKTtyZXR1cm4gQltOZXx8ImZhbHNlIl19LGs9KCk9PntpZighcClyZXR1cm4gbnVsbDtjb25zdCBMPU9iamVjdC5rZXlzKHApLGo9W107Zm9yKGxldCBJPTA7STxMLmxlbmd0aDtJKyspe2NvbnN0IFY9UyhMW0ldLHApO1YmJmoucHVzaChWKX1yZXR1cm4gan0sVD0oTCxqKT0+e2lmKCFwfHx0eXBlb2YgcCE9Im9iamVjdCIpcmV0dXJuIG51bGw7Y29uc3QgST1bXTtmb3IoY29uc3QgViBpbiBwKXtjb25zdCBCPVMoVixwLEwsaiksaWU9TD09PSJiYXNlIiYmdHlwZW9mIEI9PSJzdHJpbmciP0I6QiYmQltMXTtpZSYmSS5wdXNoKGllKX1yZXR1cm4gSX0sQz17fTtmb3IoY29uc3QgTCBpbiB4KXtjb25zdCBqPXhbTF07aiE9PXZvaWQgMCYmKENbTF09ail9Y29uc3QgUD0oTCxqKT0+e2NvbnN0IEk9dHlwZW9mIHg/LltMXT09Im9iamVjdCI/e1tMXTp4W0xdPy5pbml0aWFsfTp7fTtyZXR1cm57Li4ubSwuLi5DLC4uLkksLi4uan19LEY9KEw9W10saik9Pntjb25zdCBJPVtdLFY9TC5sZW5ndGg7Zm9yKGxldCBCPTA7QjxWO0IrKyl7Y29uc3R7Y2xhc3M6aWUsY2xhc3NOYW1lOm5lLC4uLlZlfT1MW0JdO2xldCBOZT0hMDtjb25zdCBldD1QKG51bGwsaik7Zm9yKGNvbnN0IHZlIGluIFZlKXtjb25zdCBJZT1WZVt2ZV0sZWU9ZXRbdmVdO2lmKEFycmF5LmlzQXJyYXkoSWUpKXtpZighSWUuaW5jbHVkZXMoZWUpKXtOZT0hMTticmVha319ZWxzZXtpZigoSWU9PW51bGx8fEllPT09ITEpJiYoZWU9PW51bGx8fGVlPT09ITEpKWNvbnRpbnVlO2lmKGVlIT09SWUpe05lPSExO2JyZWFrfX19TmUmJihpZSYmSS5wdXNoKGllKSxuZSYmSS5wdXNoKG5lKSl9cmV0dXJuIEl9LEQ9TD0+e2NvbnN0IGo9Rih2LEwpO2lmKCFBcnJheS5pc0FycmF5KGopKXJldHVybiBqO2NvbnN0IEk9e30sVj1lO2ZvcihsZXQgQj0wO0I8ai5sZW5ndGg7QisrKXtjb25zdCBpZT1qW0JdO2lmKHR5cGVvZiBpZT09InN0cmluZyIpSS5iYXNlPVYoSS5iYXNlLGllKShmKTtlbHNlIGlmKHR5cGVvZiBpZT09Im9iamVjdCIpZm9yKGNvbnN0IG5lIGluIGllKUlbbmVdPVYoSVtuZV0saWVbbmVdKShmKX1yZXR1cm4gSX0sVz1MPT57aWYodS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtjb25zdCBqPXt9LEk9UChudWxsLEwpO2ZvcihsZXQgVj0wO1Y8dS5sZW5ndGg7VisrKXtjb25zdHtzbG90czpCPVtdLGNsYXNzOmllLGNsYXNzTmFtZTpuZSwuLi5WZX09dVtWXTtpZighY24oVmUpKXtsZXQgTmU9ITA7Zm9yKGNvbnN0IGV0IGluIFZlKXtjb25zdCB2ZT1JW2V0XSxJZT1WZVtldF07aWYodmU9PT12b2lkIDB8fChBcnJheS5pc0FycmF5KEllKT8hSWUuaW5jbHVkZXModmUpOkllIT09dmUpKXtOZT0hMTticmVha319aWYoIU5lKWNvbnRpbnVlfWZvcihsZXQgTmU9MDtOZTxCLmxlbmd0aDtOZSsrKXtjb25zdCBldD1CW05lXTtqW2V0XXx8KGpbZXRdPVtdKSxqW2V0XS5wdXNoKFtpZSxuZV0pfX1yZXR1cm4gan07aWYoIWNuKGkpfHwheSl7Y29uc3QgTD17fTtpZih0eXBlb2Ygdz09Im9iamVjdCImJiFjbih3KSl7Y29uc3Qgaj1lO2Zvcihjb25zdCBJIGluIHcpTFtJXT1WPT57Y29uc3QgQj1EKFYpLGllPVcoVik7cmV0dXJuIGood1tJXSxUKEksViksQj9CW0ldOnZvaWQgMCxpZT9pZVtJXTp2b2lkIDAsVj8uY2xhc3MsVj8uY2xhc3NOYW1lKShmKX19cmV0dXJuIEx9cmV0dXJuIGUoZCxrKCksRih2KSx4Py5jbGFzcyx4Py5jbGFzc05hbWUpKGYpfSxiPSgpPT57aWYoISghcHx8dHlwZW9mIHAhPSJvYmplY3QiKSlyZXR1cm4gT2JqZWN0LmtleXMocCl9O3JldHVybiBoLnZhcmlhbnRLZXlzPWIoKSxoLmV4dGVuZD1zLGguYmFzZT1kLGguc2xvdHM9dyxoLnZhcmlhbnRzPXAsaC5kZWZhdWx0VmFyaWFudHM9bSxoLmNvbXBvdW5kU2xvdHM9dSxoLmNvbXBvdW5kVmFyaWFudHM9dixofTtyZXR1cm57dHY6dCxjcmVhdGVUVjpyPT4obyxzKT0+dChvLHM/UXUocixzKTpyKX19O2NvbnN0IHdEPShlLHQpPT57Y29uc3Qgbj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKW5bcl09ZVtyXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyluW2UubGVuZ3RoK3JdPXRbcl07cmV0dXJuIG59LF9EPShlLHQpPT4oe2NsYXNzR3JvdXBJZDplLHZhbGlkYXRvcjp0fSksTTA9KGU9bmV3IE1hcCx0PW51bGwsbik9Pih7bmV4dFBhcnQ6ZSx2YWxpZGF0b3JzOnQsY2xhc3NHcm91cElkOm59KSxzbD0iLSIsbWg9W10seEQ9ImFyYml0cmFyeS4uIixTRD1lPT57Y29uc3QgdD1FRChlKSx7Y29uZmxpY3RpbmdDbGFzc0dyb3VwczpuLGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczpyfT1lO3JldHVybntnZXRDbGFzc0dyb3VwSWQ6aT0+e2lmKGkuc3RhcnRzV2l0aCgiWyIpJiZpLmVuZHNXaXRoKCJdIikpcmV0dXJuIGtEKGkpO2NvbnN0IGE9aS5zcGxpdChzbCksbD1hWzBdPT09IiImJmEubGVuZ3RoPjE/MTowO3JldHVybiBCMChhLGwsdCl9LGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkczooaSxhKT0+e2lmKGEpe2NvbnN0IGw9cltpXSx1PW5baV07cmV0dXJuIGw/dT93RCh1LGwpOmw6dXx8bWh9cmV0dXJuIG5baV18fG1ofX19LEIwPShlLHQsbik9PntpZihlLmxlbmd0aC10PT09MClyZXR1cm4gbi5jbGFzc0dyb3VwSWQ7Y29uc3Qgbz1lW3RdLHM9bi5uZXh0UGFydC5nZXQobyk7aWYocyl7Y29uc3QgdT1CMChlLHQrMSxzKTtpZih1KXJldHVybiB1fWNvbnN0IGk9bi52YWxpZGF0b3JzO2lmKGk9PT1udWxsKXJldHVybjtjb25zdCBhPXQ9PT0wP2Uuam9pbihzbCk6ZS5zbGljZSh0KS5qb2luKHNsKSxsPWkubGVuZ3RoO2ZvcihsZXQgdT0wO3U8bDt1Kyspe2NvbnN0IGM9aVt1XTtpZihjLnZhbGlkYXRvcihhKSlyZXR1cm4gYy5jbGFzc0dyb3VwSWR9fSxrRD1lPT5lLnNsaWNlKDEsLTEpLmluZGV4T2YoIjoiKT09PS0xP3ZvaWQgMDooKCk9Pntjb25zdCB0PWUuc2xpY2UoMSwtMSksbj10LmluZGV4T2YoIjoiKSxyPXQuc2xpY2UoMCxuKTtyZXR1cm4gcj94RCtyOnZvaWQgMH0pKCksRUQ9ZT0+e2NvbnN0e3RoZW1lOnQsY2xhc3NHcm91cHM6bn09ZTtyZXR1cm4gVEQobix0KX0sVEQ9KGUsdCk9Pntjb25zdCBuPU0wKCk7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdO3ZkKG8sbixyLHQpfXJldHVybiBufSx2ZD0oZSx0LG4scik9Pntjb25zdCBvPWUubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bztzKyspe2NvbnN0IGk9ZVtzXTtDRChpLHQsbixyKX19LENEPShlLHQsbixyKT0+e2lmKHR5cGVvZiBlPT0ic3RyaW5nIil7QUQoZSx0LG4pO3JldHVybn1pZih0eXBlb2YgZT09ImZ1bmN0aW9uIil7T0QoZSx0LG4scik7cmV0dXJufVBEKGUsdCxuLHIpfSxBRD0oZSx0LG4pPT57Y29uc3Qgcj1lPT09IiI/dDpxMCh0LGUpO3IuY2xhc3NHcm91cElkPW59LE9EPShlLHQsbixyKT0+e2lmKElEKGUpKXt2ZChlKHIpLHQsbixyKTtyZXR1cm59dC52YWxpZGF0b3JzPT09bnVsbCYmKHQudmFsaWRhdG9ycz1bXSksdC52YWxpZGF0b3JzLnB1c2goX0QobixlKSl9LFBEPShlLHQsbixyKT0+e2NvbnN0IG89T2JqZWN0LmVudHJpZXMoZSkscz1vLmxlbmd0aDtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdFthLGxdPW9baV07dmQobCxxMCh0LGEpLG4scil9fSxxMD0oZSx0KT0+e2xldCBuPWU7Y29uc3Qgcj10LnNwbGl0KHNsKSxvPXIubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bztzKyspe2NvbnN0IGk9cltzXTtsZXQgYT1uLm5leHRQYXJ0LmdldChpKTthfHwoYT1NMCgpLG4ubmV4dFBhcnQuc2V0KGksYSkpLG49YX1yZXR1cm4gbn0sSUQ9ZT0+ImlzVGhlbWVHZXR0ZXIiaW4gZSYmZS5pc1RoZW1lR2V0dGVyPT09ITAsUkQ9ZT0+e2lmKGU8MSlyZXR1cm57Z2V0OigpPT57fSxzZXQ6KCk9Pnt9fTtsZXQgdD0wLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPU9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3Qgbz0ocyxpKT0+e25bc109aSx0KyssdD5lJiYodD0wLHI9bixuPU9iamVjdC5jcmVhdGUobnVsbCkpfTtyZXR1cm57Z2V0KHMpe2xldCBpPW5bc107aWYoaSE9PXZvaWQgMClyZXR1cm4gaTtpZigoaT1yW3NdKSE9PXZvaWQgMClyZXR1cm4gbyhzLGkpLGl9LHNldChzLGkpe3MgaW4gbj9uW3NdPWk6byhzLGkpfX19LFl1PSIhIixoaD0iOiIsTkQ9W10sZ2g9KGUsdCxuLHIsbyk9Pih7bW9kaWZpZXJzOmUsaGFzSW1wb3J0YW50TW9kaWZpZXI6dCxiYXNlQ2xhc3NOYW1lOm4sbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjpyLGlzRXh0ZXJuYWw6b30pLEREPWU9Pntjb25zdHtwcmVmaXg6dCxleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZTpufT1lO2xldCByPW89Pntjb25zdCBzPVtdO2xldCBpPTAsYT0wLGw9MCx1O2NvbnN0IGM9by5sZW5ndGg7Zm9yKGxldCB5PTA7eTxjO3krKyl7Y29uc3QgXz1vW3ldO2lmKGk9PT0wJiZhPT09MCl7aWYoXz09PWhoKXtzLnB1c2goby5zbGljZShsLHkpKSxsPXkrMTtjb250aW51ZX1pZihfPT09Ii8iKXt1PXk7Y29udGludWV9fV89PT0iWyI/aSsrOl89PT0iXSI/aS0tOl89PT0iKCI/YSsrOl89PT0iKSImJmEtLX1jb25zdCBmPXMubGVuZ3RoPT09MD9vOm8uc2xpY2UobCk7bGV0IGQ9ZixwPSExO2YuZW5kc1dpdGgoWXUpPyhkPWYuc2xpY2UoMCwtMSkscD0hMCk6Zi5zdGFydHNXaXRoKFl1KSYmKGQ9Zi5zbGljZSgxKSxwPSEwKTtjb25zdCBtPXUmJnU+bD91LWw6dm9pZCAwO3JldHVybiBnaChzLHAsZCxtKX07aWYodCl7Y29uc3Qgbz10K2hoLHM9cjtyPWk9Pmkuc3RhcnRzV2l0aChvKT9zKGkuc2xpY2Uoby5sZW5ndGgpKTpnaChORCwhMSxpLHZvaWQgMCwhMCl9aWYobil7Y29uc3Qgbz1yO3I9cz0+bih7Y2xhc3NOYW1lOnMscGFyc2VDbGFzc05hbWU6b30pfXJldHVybiByfSxMRD1lPT57Y29uc3QgdD1uZXcgTWFwO3JldHVybiBlLm9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzLmZvckVhY2goKG4scik9Pnt0LnNldChuLDFlNityKX0pLG49Pntjb25zdCByPVtdO2xldCBvPVtdO2ZvcihsZXQgcz0wO3M8bi5sZW5ndGg7cysrKXtjb25zdCBpPW5bc10sYT1pWzBdPT09IlsiLGw9dC5oYXMoaSk7YXx8bD8oby5sZW5ndGg+MCYmKG8uc29ydCgpLHIucHVzaCguLi5vKSxvPVtdKSxyLnB1c2goaSkpOm8ucHVzaChpKX1yZXR1cm4gby5sZW5ndGg+MCYmKG8uc29ydCgpLHIucHVzaCguLi5vKSkscn19LCREPWU9Pih7Y2FjaGU6UkQoZS5jYWNoZVNpemUpLHBhcnNlQ2xhc3NOYW1lOkREKGUpLHNvcnRNb2RpZmllcnM6TEQoZSksLi4uU0QoZSl9KSxNRD0vXHMrLyxCRD0oZSx0KT0+e2NvbnN0e3BhcnNlQ2xhc3NOYW1lOm4sZ2V0Q2xhc3NHcm91cElkOnIsZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzOm8sc29ydE1vZGlmaWVyczpzfT10LGk9W10sYT1lLnRyaW0oKS5zcGxpdChNRCk7bGV0IGw9IiI7Zm9yKGxldCB1PWEubGVuZ3RoLTE7dT49MDt1LT0xKXtjb25zdCBjPWFbdV0se2lzRXh0ZXJuYWw6Zixtb2RpZmllcnM6ZCxoYXNJbXBvcnRhbnRNb2RpZmllcjpwLGJhc2VDbGFzc05hbWU6bSxtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uOnl9PW4oYyk7aWYoZil7bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpO2NvbnRpbnVlfWxldCBfPSEheSx3PXIoXz9tLnN1YnN0cmluZygwLHkpOm0pO2lmKCF3KXtpZighXyl7bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpO2NvbnRpbnVlfWlmKHc9cihtKSwhdyl7bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpO2NvbnRpbnVlfV89ITF9Y29uc3Qgdj1kLmxlbmd0aD09PTA/IiI6ZC5sZW5ndGg9PT0xP2RbMF06cyhkKS5qb2luKCI6IiksaD1wP3YrWXU6dixiPWgrdztpZihpLmluZGV4T2YoYik+LTEpY29udGludWU7aS5wdXNoKGIpO2NvbnN0IHg9byh3LF8pO2ZvcihsZXQgUz0wO1M8eC5sZW5ndGg7KytTKXtjb25zdCBrPXhbU107aS5wdXNoKGgrayl9bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpfXJldHVybiBsfSxxRD0oLi4uZSk9PntsZXQgdD0wLG4scixvPSIiO2Zvcig7dDxlLmxlbmd0aDspKG49ZVt0KytdKSYmKHI9RjAobikpJiYobyYmKG8rPSIgIiksbys9cik7cmV0dXJuIG99LEYwPWU9PntpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7bGV0IHQsbj0iIjtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYodD1GMChlW3JdKSkmJihuJiYobis9IiAiKSxuKz10KTtyZXR1cm4gbn0sSnU9KGUsLi4udCk9PntsZXQgbixyLG8scztjb25zdCBpPWw9Pntjb25zdCB1PXQucmVkdWNlKChjLGYpPT5mKGMpLGUoKSk7cmV0dXJuIG49JEQodSkscj1uLmNhY2hlLmdldCxvPW4uY2FjaGUuc2V0LHM9YSxhKGwpfSxhPWw9Pntjb25zdCB1PXIobCk7aWYodSlyZXR1cm4gdTtjb25zdCBjPUJEKGwsbik7cmV0dXJuIG8obCxjKSxjfTtyZXR1cm4gcz1pLCguLi5sKT0+cyhxRCguLi5sKSl9LEZEPVtdLEl0PWU9Pntjb25zdCB0PW49Pm5bZV18fEZEO3JldHVybiB0LmlzVGhlbWVHZXR0ZXI9ITAsdH0sejA9L15cWyg/Oihcd1tcdy1dKik6KT8oLispXF0kL2ksajA9L15cKCg/Oihcd1tcdy1dKik6KT8oLispXCkkL2ksekQ9L15cZCsoPzpcLlxkKyk/XC9cZCsoPzpcLlxkKyk/JC8sakQ9L14oXGQrKFwuXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLyxWRD0vXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXCguK1wpfF4wJC8sVUQ9L14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpfGNvbG9yLW1peClcKC4rXCkkLyxIRD0vXihpbnNldF8pPy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApXy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApLyxXRD0vXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVwoLitcKSQvLEtyPWU9PnpELnRlc3QoZSksRGU9ZT0+ISFlJiYhTnVtYmVyLmlzTmFOKE51bWJlcihlKSksUXI9ZT0+ISFlJiZOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihlKSksamM9ZT0+ZS5lbmRzV2l0aCgiJSIpJiZEZShlLnNsaWNlKDAsLTEpKSxrcj1lPT5qRC50ZXN0KGUpLFYwPSgpPT4hMCxHRD1lPT5WRC50ZXN0KGUpJiYhVUQudGVzdChlKSxiZD0oKT0+ITEsS0Q9ZT0+SEQudGVzdChlKSxRRD1lPT5XRC50ZXN0KGUpLFlEPWU9PiFnZShlKSYmIXllKGUpLEpEPWU9PmdvKGUsVzAsYmQpLGdlPWU9PnowLnRlc3QoZSksRW89ZT0+Z28oZSxHMCxHRCkseWg9ZT0+Z28oZSxzTCxEZSksWEQ9ZT0+Z28oZSxRMCxWMCksWkQ9ZT0+Z28oZSxLMCxiZCksdmg9ZT0+Z28oZSxVMCxiZCksZUw9ZT0+Z28oZSxIMCxRRCksdmE9ZT0+Z28oZSxZMCxLRCkseWU9ZT0+ajAudGVzdChlKSxRcz1lPT5LbyhlLEcwKSx0TD1lPT5LbyhlLEswKSxiaD1lPT5LbyhlLFUwKSxuTD1lPT5LbyhlLFcwKSxyTD1lPT5LbyhlLEgwKSxiYT1lPT5LbyhlLFkwLCEwKSxvTD1lPT5LbyhlLFEwLCEwKSxnbz0oZSx0LG4pPT57Y29uc3Qgcj16MC5leGVjKGUpO3JldHVybiByP3JbMV0/dChyWzFdKTpuKHJbMl0pOiExfSxLbz0oZSx0LG49ITEpPT57Y29uc3Qgcj1qMC5leGVjKGUpO3JldHVybiByP3JbMV0/dChyWzFdKTpuOiExfSxVMD1lPT5lPT09InBvc2l0aW9uInx8ZT09PSJwZXJjZW50YWdlIixIMD1lPT5lPT09ImltYWdlInx8ZT09PSJ1cmwiLFcwPWU9PmU9PT0ibGVuZ3RoInx8ZT09PSJzaXplInx8ZT09PSJiZy1zaXplIixHMD1lPT5lPT09Imxlbmd0aCIsc0w9ZT0+ZT09PSJudW1iZXIiLEswPWU9PmU9PT0iZmFtaWx5LW5hbWUiLFEwPWU9PmU9PT0ibnVtYmVyInx8ZT09PSJ3ZWlnaHQiLFkwPWU9PmU9PT0ic2hhZG93IixYdT0oKT0+e2NvbnN0IGU9SXQoImNvbG9yIiksdD1JdCgiZm9udCIpLG49SXQoInRleHQiKSxyPUl0KCJmb250LXdlaWdodCIpLG89SXQoInRyYWNraW5nIikscz1JdCgibGVhZGluZyIpLGk9SXQoImJyZWFrcG9pbnQiKSxhPUl0KCJjb250YWluZXIiKSxsPUl0KCJzcGFjaW5nIiksdT1JdCgicmFkaXVzIiksYz1JdCgic2hhZG93IiksZj1JdCgiaW5zZXQtc2hhZG93IiksZD1JdCgidGV4dC1zaGFkb3ciKSxwPUl0KCJkcm9wLXNoYWRvdyIpLG09SXQoImJsdXIiKSx5PUl0KCJwZXJzcGVjdGl2ZSIpLF89SXQoImFzcGVjdCIpLHc9SXQoImVhc2UiKSx2PUl0KCJhbmltYXRlIiksaD0oKT0+WyJhdXRvIiwiYXZvaWQiLCJhbGwiLCJhdm9pZC1wYWdlIiwicGFnZSIsImxlZnQiLCJyaWdodCIsImNvbHVtbiJdLGI9KCk9PlsiY2VudGVyIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwidG9wLWxlZnQiLCJsZWZ0LXRvcCIsInRvcC1yaWdodCIsInJpZ2h0LXRvcCIsImJvdHRvbS1yaWdodCIsInJpZ2h0LWJvdHRvbSIsImJvdHRvbS1sZWZ0IiwibGVmdC1ib3R0b20iXSx4PSgpPT5bLi4uYigpLHllLGdlXSxTPSgpPT5bImF1dG8iLCJoaWRkZW4iLCJjbGlwIiwidmlzaWJsZSIsInNjcm9sbCJdLGs9KCk9PlsiYXV0byIsImNvbnRhaW4iLCJub25lIl0sVD0oKT0+W3llLGdlLGxdLEM9KCk9PltLciwiZnVsbCIsImF1dG8iLC4uLlQoKV0sUD0oKT0+W1FyLCJub25lIiwic3ViZ3JpZCIseWUsZ2VdLEY9KCk9PlsiYXV0byIse3NwYW46WyJmdWxsIixRcix5ZSxnZV19LFFyLHllLGdlXSxEPSgpPT5bUXIsImF1dG8iLHllLGdlXSxXPSgpPT5bImF1dG8iLCJtaW4iLCJtYXgiLCJmciIseWUsZ2VdLEw9KCk9Plsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdLGo9KCk9Plsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJzdHJldGNoIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdLEk9KCk9PlsiYXV0byIsLi4uVCgpXSxWPSgpPT5bS3IsImF1dG8iLCJmdWxsIiwiZHZ3IiwiZHZoIiwibHZ3IiwibHZoIiwic3Z3Iiwic3ZoIiwibWluIiwibWF4IiwiZml0IiwuLi5UKCldLEI9KCk9PltLciwic2NyZWVuIiwiZnVsbCIsImR2dyIsImx2dyIsInN2dyIsIm1pbiIsIm1heCIsImZpdCIsLi4uVCgpXSxpZT0oKT0+W0tyLCJzY3JlZW4iLCJmdWxsIiwibGgiLCJkdmgiLCJsdmgiLCJzdmgiLCJtaW4iLCJtYXgiLCJmaXQiLC4uLlQoKV0sbmU9KCk9PltlLHllLGdlXSxWZT0oKT0+Wy4uLmIoKSxiaCx2aCx7cG9zaXRpb246W3llLGdlXX1dLE5lPSgpPT5bIm5vLXJlcGVhdCIse3JlcGVhdDpbIiIsIngiLCJ5Iiwic3BhY2UiLCJyb3VuZCJdfV0sZXQ9KCk9PlsiYXV0byIsImNvdmVyIiwiY29udGFpbiIsbkwsSkQse3NpemU6W3llLGdlXX1dLHZlPSgpPT5bamMsUXMsRW9dLEllPSgpPT5bIiIsIm5vbmUiLCJmdWxsIix1LHllLGdlXSxlZT0oKT0+WyIiLERlLFFzLEVvXSx6PSgpPT5bInNvbGlkIiwiZGFzaGVkIiwiZG90dGVkIiwiZG91YmxlIl0sWT0oKT0+WyJub3JtYWwiLCJtdWx0aXBseSIsInNjcmVlbiIsIm92ZXJsYXkiLCJkYXJrZW4iLCJsaWdodGVuIiwiY29sb3ItZG9kZ2UiLCJjb2xvci1idXJuIiwiaGFyZC1saWdodCIsInNvZnQtbGlnaHQiLCJkaWZmZXJlbmNlIiwiZXhjbHVzaW9uIiwiaHVlIiwic2F0dXJhdGlvbiIsImNvbG9yIiwibHVtaW5vc2l0eSJdLEo9KCk9PltEZSxqYyxiaCx2aF0sbGU9KCk9PlsiIiwibm9uZSIsbSx5ZSxnZV0sd2U9KCk9Plsibm9uZSIsRGUseWUsZ2VdLHRlPSgpPT5bIm5vbmUiLERlLHllLGdlXSxFPSgpPT5bRGUseWUsZ2VdLE89KCk9PltLciwiZnVsbCIsLi4uVCgpXTtyZXR1cm57Y2FjaGVTaXplOjUwMCx0aGVtZTp7YW5pbWF0ZTpbInNwaW4iLCJwaW5nIiwicHVsc2UiLCJib3VuY2UiXSxhc3BlY3Q6WyJ2aWRlbyJdLGJsdXI6W2tyXSxicmVha3BvaW50Oltrcl0sY29sb3I6W1YwXSxjb250YWluZXI6W2tyXSwiZHJvcC1zaGFkb3ciOltrcl0sZWFzZTpbImluIiwib3V0IiwiaW4tb3V0Il0sZm9udDpbWURdLCJmb250LXdlaWdodCI6WyJ0aGluIiwiZXh0cmFsaWdodCIsImxpZ2h0Iiwibm9ybWFsIiwibWVkaXVtIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwiYmxhY2siXSwiaW5zZXQtc2hhZG93Ijpba3JdLGxlYWRpbmc6WyJub25lIiwidGlnaHQiLCJzbnVnIiwibm9ybWFsIiwicmVsYXhlZCIsImxvb3NlIl0scGVyc3BlY3RpdmU6WyJkcmFtYXRpYyIsIm5lYXIiLCJub3JtYWwiLCJtaWRyYW5nZSIsImRpc3RhbnQiLCJub25lIl0scmFkaXVzOltrcl0sc2hhZG93Oltrcl0sc3BhY2luZzpbInB4IixEZV0sdGV4dDpba3JdLCJ0ZXh0LXNoYWRvdyI6W2tyXSx0cmFja2luZzpbInRpZ2h0ZXIiLCJ0aWdodCIsIm5vcm1hbCIsIndpZGUiLCJ3aWRlciIsIndpZGVzdCJdfSxjbGFzc0dyb3Vwczp7YXNwZWN0Olt7YXNwZWN0OlsiYXV0byIsInNxdWFyZSIsS3IsZ2UseWUsX119XSxjb250YWluZXI6WyJjb250YWluZXIiXSxjb2x1bW5zOlt7Y29sdW1uczpbRGUsZ2UseWUsYV19XSwiYnJlYWstYWZ0ZXIiOlt7ImJyZWFrLWFmdGVyIjpoKCl9XSwiYnJlYWstYmVmb3JlIjpbeyJicmVhay1iZWZvcmUiOmgoKX1dLCJicmVhay1pbnNpZGUiOlt7ImJyZWFrLWluc2lkZSI6WyJhdXRvIiwiYXZvaWQiLCJhdm9pZC1wYWdlIiwiYXZvaWQtY29sdW1uIl19XSwiYm94LWRlY29yYXRpb24iOlt7ImJveC1kZWNvcmF0aW9uIjpbInNsaWNlIiwiY2xvbmUiXX1dLGJveDpbe2JveDpbImJvcmRlciIsImNvbnRlbnQiXX1dLGRpc3BsYXk6WyJibG9jayIsImlubGluZS1ibG9jayIsImlubGluZSIsImZsZXgiLCJpbmxpbmUtZmxleCIsInRhYmxlIiwiaW5saW5lLXRhYmxlIiwidGFibGUtY2FwdGlvbiIsInRhYmxlLWNlbGwiLCJ0YWJsZS1jb2x1bW4iLCJ0YWJsZS1jb2x1bW4tZ3JvdXAiLCJ0YWJsZS1mb290ZXItZ3JvdXAiLCJ0YWJsZS1oZWFkZXItZ3JvdXAiLCJ0YWJsZS1yb3ctZ3JvdXAiLCJ0YWJsZS1yb3ciLCJmbG93LXJvb3QiLCJncmlkIiwiaW5saW5lLWdyaWQiLCJjb250ZW50cyIsImxpc3QtaXRlbSIsImhpZGRlbiJdLHNyOlsic3Itb25seSIsIm5vdC1zci1vbmx5Il0sZmxvYXQ6W3tmbG9hdDpbInJpZ2h0IiwibGVmdCIsIm5vbmUiLCJzdGFydCIsImVuZCJdfV0sY2xlYXI6W3tjbGVhcjpbImxlZnQiLCJyaWdodCIsImJvdGgiLCJub25lIiwic3RhcnQiLCJlbmQiXX1dLGlzb2xhdGlvbjpbImlzb2xhdGUiLCJpc29sYXRpb24tYXV0byJdLCJvYmplY3QtZml0Ijpbe29iamVjdDpbImNvbnRhaW4iLCJjb3ZlciIsImZpbGwiLCJub25lIiwic2NhbGUtZG93biJdfV0sIm9iamVjdC1wb3NpdGlvbiI6W3tvYmplY3Q6eCgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzpTKCl9XSwib3ZlcmZsb3cteCI6W3sib3ZlcmZsb3cteCI6UygpfV0sIm92ZXJmbG93LXkiOlt7Im92ZXJmbG93LXkiOlMoKX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOmsoKX1dLCJvdmVyc2Nyb2xsLXgiOlt7Im92ZXJzY3JvbGwteCI6aygpfV0sIm92ZXJzY3JvbGwteSI6W3sib3ZlcnNjcm9sbC15IjprKCl9XSxwb3NpdGlvbjpbInN0YXRpYyIsImZpeGVkIiwiYWJzb2x1dGUiLCJyZWxhdGl2ZSIsInN0aWNreSJdLGluc2V0Olt7aW5zZXQ6QygpfV0sImluc2V0LXgiOlt7Imluc2V0LXgiOkMoKX1dLCJpbnNldC15IjpbeyJpbnNldC15IjpDKCl9XSxzdGFydDpbeyJpbnNldC1zIjpDKCksc3RhcnQ6QygpfV0sZW5kOlt7Imluc2V0LWUiOkMoKSxlbmQ6QygpfV0sImluc2V0LWJzIjpbeyJpbnNldC1icyI6QygpfV0sImluc2V0LWJlIjpbeyJpbnNldC1iZSI6QygpfV0sdG9wOlt7dG9wOkMoKX1dLHJpZ2h0Olt7cmlnaHQ6QygpfV0sYm90dG9tOlt7Ym90dG9tOkMoKX1dLGxlZnQ6W3tsZWZ0OkMoKX1dLHZpc2liaWxpdHk6WyJ2aXNpYmxlIiwiaW52aXNpYmxlIiwiY29sbGFwc2UiXSx6Olt7ejpbUXIsImF1dG8iLHllLGdlXX1dLGJhc2lzOlt7YmFzaXM6W0tyLCJmdWxsIiwiYXV0byIsYSwuLi5UKCldfV0sImZsZXgtZGlyZWN0aW9uIjpbe2ZsZXg6WyJyb3ciLCJyb3ctcmV2ZXJzZSIsImNvbCIsImNvbC1yZXZlcnNlIl19XSwiZmxleC13cmFwIjpbe2ZsZXg6WyJub3dyYXAiLCJ3cmFwIiwid3JhcC1yZXZlcnNlIl19XSxmbGV4Olt7ZmxleDpbRGUsS3IsImF1dG8iLCJpbml0aWFsIiwibm9uZSIsZ2VdfV0sZ3Jvdzpbe2dyb3c6WyIiLERlLHllLGdlXX1dLHNocmluazpbe3NocmluazpbIiIsRGUseWUsZ2VdfV0sb3JkZXI6W3tvcmRlcjpbUXIsImZpcnN0IiwibGFzdCIsIm5vbmUiLHllLGdlXX1dLCJncmlkLWNvbHMiOlt7ImdyaWQtY29scyI6UCgpfV0sImNvbC1zdGFydC1lbmQiOlt7Y29sOkYoKX1dLCJjb2wtc3RhcnQiOlt7ImNvbC1zdGFydCI6RCgpfV0sImNvbC1lbmQiOlt7ImNvbC1lbmQiOkQoKX1dLCJncmlkLXJvd3MiOlt7ImdyaWQtcm93cyI6UCgpfV0sInJvdy1zdGFydC1lbmQiOlt7cm93OkYoKX1dLCJyb3ctc3RhcnQiOlt7InJvdy1zdGFydCI6RCgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOkQoKX1dLCJncmlkLWZsb3ciOlt7ImdyaWQtZmxvdyI6WyJyb3ciLCJjb2wiLCJkZW5zZSIsInJvdy1kZW5zZSIsImNvbC1kZW5zZSJdfV0sImF1dG8tY29scyI6W3siYXV0by1jb2xzIjpXKCl9XSwiYXV0by1yb3dzIjpbeyJhdXRvLXJvd3MiOlcoKX1dLGdhcDpbe2dhcDpUKCl9XSwiZ2FwLXgiOlt7ImdhcC14IjpUKCl9XSwiZ2FwLXkiOlt7ImdhcC15IjpUKCl9XSwianVzdGlmeS1jb250ZW50Ijpbe2p1c3RpZnk6Wy4uLkwoKSwibm9ybWFsIl19XSwianVzdGlmeS1pdGVtcyI6W3sianVzdGlmeS1pdGVtcyI6Wy4uLmooKSwibm9ybWFsIl19XSwianVzdGlmeS1zZWxmIjpbeyJqdXN0aWZ5LXNlbGYiOlsiYXV0byIsLi4uaigpXX1dLCJhbGlnbi1jb250ZW50Ijpbe2NvbnRlbnQ6WyJub3JtYWwiLC4uLkwoKV19XSwiYWxpZ24taXRlbXMiOlt7aXRlbXM6Wy4uLmooKSx7YmFzZWxpbmU6WyIiLCJsYXN0Il19XX1dLCJhbGlnbi1zZWxmIjpbe3NlbGY6WyJhdXRvIiwuLi5qKCkse2Jhc2VsaW5lOlsiIiwibGFzdCJdfV19XSwicGxhY2UtY29udGVudCI6W3sicGxhY2UtY29udGVudCI6TCgpfV0sInBsYWNlLWl0ZW1zIjpbeyJwbGFjZS1pdGVtcyI6Wy4uLmooKSwiYmFzZWxpbmUiXX1dLCJwbGFjZS1zZWxmIjpbeyJwbGFjZS1zZWxmIjpbImF1dG8iLC4uLmooKV19XSxwOlt7cDpUKCl9XSxweDpbe3B4OlQoKX1dLHB5Olt7cHk6VCgpfV0scHM6W3twczpUKCl9XSxwZTpbe3BlOlQoKX1dLHBiczpbe3BiczpUKCl9XSxwYmU6W3twYmU6VCgpfV0scHQ6W3twdDpUKCl9XSxwcjpbe3ByOlQoKX1dLHBiOlt7cGI6VCgpfV0scGw6W3twbDpUKCl9XSxtOlt7bTpJKCl9XSxteDpbe214OkkoKX1dLG15Olt7bXk6SSgpfV0sbXM6W3ttczpJKCl9XSxtZTpbe21lOkkoKX1dLG1iczpbe21iczpJKCl9XSxtYmU6W3ttYmU6SSgpfV0sbXQ6W3ttdDpJKCl9XSxtcjpbe21yOkkoKX1dLG1iOlt7bWI6SSgpfV0sbWw6W3ttbDpJKCl9XSwic3BhY2UteCI6W3sic3BhY2UteCI6VCgpfV0sInNwYWNlLXgtcmV2ZXJzZSI6WyJzcGFjZS14LXJldmVyc2UiXSwic3BhY2UteSI6W3sic3BhY2UteSI6VCgpfV0sInNwYWNlLXktcmV2ZXJzZSI6WyJzcGFjZS15LXJldmVyc2UiXSxzaXplOlt7c2l6ZTpWKCl9XSwiaW5saW5lLXNpemUiOlt7aW5saW5lOlsiYXV0byIsLi4uQigpXX1dLCJtaW4taW5saW5lLXNpemUiOlt7Im1pbi1pbmxpbmUiOlsiYXV0byIsLi4uQigpXX1dLCJtYXgtaW5saW5lLXNpemUiOlt7Im1heC1pbmxpbmUiOlsibm9uZSIsLi4uQigpXX1dLCJibG9jay1zaXplIjpbe2Jsb2NrOlsiYXV0byIsLi4uaWUoKV19XSwibWluLWJsb2NrLXNpemUiOlt7Im1pbi1ibG9jayI6WyJhdXRvIiwuLi5pZSgpXX1dLCJtYXgtYmxvY2stc2l6ZSI6W3sibWF4LWJsb2NrIjpbIm5vbmUiLC4uLmllKCldfV0sdzpbe3c6W2EsInNjcmVlbiIsLi4uVigpXX1dLCJtaW4tdyI6W3sibWluLXciOlthLCJzY3JlZW4iLCJub25lIiwuLi5WKCldfV0sIm1heC13IjpbeyJtYXgtdyI6W2EsInNjcmVlbiIsIm5vbmUiLCJwcm9zZSIse3NjcmVlbjpbaV19LC4uLlYoKV19XSxoOlt7aDpbInNjcmVlbiIsImxoIiwuLi5WKCldfV0sIm1pbi1oIjpbeyJtaW4taCI6WyJzY3JlZW4iLCJsaCIsIm5vbmUiLC4uLlYoKV19XSwibWF4LWgiOlt7Im1heC1oIjpbInNjcmVlbiIsImxoIiwuLi5WKCldfV0sImZvbnQtc2l6ZSI6W3t0ZXh0OlsiYmFzZSIsbixRcyxFb119XSwiZm9udC1zbW9vdGhpbmciOlsiYW50aWFsaWFzZWQiLCJzdWJwaXhlbC1hbnRpYWxpYXNlZCJdLCJmb250LXN0eWxlIjpbIml0YWxpYyIsIm5vdC1pdGFsaWMiXSwiZm9udC13ZWlnaHQiOlt7Zm9udDpbcixvTCxYRF19XSwiZm9udC1zdHJldGNoIjpbeyJmb250LXN0cmV0Y2giOlsidWx0cmEtY29uZGVuc2VkIiwiZXh0cmEtY29uZGVuc2VkIiwiY29uZGVuc2VkIiwic2VtaS1jb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pLWV4cGFuZGVkIiwiZXhwYW5kZWQiLCJleHRyYS1leHBhbmRlZCIsInVsdHJhLWV4cGFuZGVkIixqYyxnZV19XSwiZm9udC1mYW1pbHkiOlt7Zm9udDpbdEwsWkQsdF19XSwiZm9udC1mZWF0dXJlcyI6W3siZm9udC1mZWF0dXJlcyI6W2dlXX1dLCJmdm4tbm9ybWFsIjpbIm5vcm1hbC1udW1zIl0sImZ2bi1vcmRpbmFsIjpbIm9yZGluYWwiXSwiZnZuLXNsYXNoZWQtemVybyI6WyJzbGFzaGVkLXplcm8iXSwiZnZuLWZpZ3VyZSI6WyJsaW5pbmctbnVtcyIsIm9sZHN0eWxlLW51bXMiXSwiZnZuLXNwYWNpbmciOlsicHJvcG9ydGlvbmFsLW51bXMiLCJ0YWJ1bGFyLW51bXMiXSwiZnZuLWZyYWN0aW9uIjpbImRpYWdvbmFsLWZyYWN0aW9ucyIsInN0YWNrZWQtZnJhY3Rpb25zIl0sdHJhY2tpbmc6W3t0cmFja2luZzpbbyx5ZSxnZV19XSwibGluZS1jbGFtcCI6W3sibGluZS1jbGFtcCI6W0RlLCJub25lIix5ZSx5aF19XSxsZWFkaW5nOlt7bGVhZGluZzpbcywuLi5UKCldfV0sImxpc3QtaW1hZ2UiOlt7Imxpc3QtaW1hZ2UiOlsibm9uZSIseWUsZ2VdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbImluc2lkZSIsIm91dHNpZGUiXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbImRpc2MiLCJkZWNpbWFsIiwibm9uZSIseWUsZ2VdfV0sInRleHQtYWxpZ25tZW50Ijpbe3RleHQ6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiLCJqdXN0aWZ5Iiwic3RhcnQiLCJlbmQiXX1dLCJwbGFjZWhvbGRlci1jb2xvciI6W3twbGFjZWhvbGRlcjpuZSgpfV0sInRleHQtY29sb3IiOlt7dGV4dDpuZSgpfV0sInRleHQtZGVjb3JhdGlvbiI6WyJ1bmRlcmxpbmUiLCJvdmVybGluZSIsImxpbmUtdGhyb3VnaCIsIm5vLXVuZGVybGluZSJdLCJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiOlt7ZGVjb3JhdGlvbjpbLi4ueigpLCJ3YXZ5Il19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltEZSwiZnJvbS1mb250IiwiYXV0byIseWUsRW9dfV0sInRleHQtZGVjb3JhdGlvbi1jb2xvciI6W3tkZWNvcmF0aW9uOm5lKCl9XSwidW5kZXJsaW5lLW9mZnNldCI6W3sidW5kZXJsaW5lLW9mZnNldCI6W0RlLCJhdXRvIix5ZSxnZV19XSwidGV4dC10cmFuc2Zvcm0iOlsidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsIm5vcm1hbC1jYXNlIl0sInRleHQtb3ZlcmZsb3ciOlsidHJ1bmNhdGUiLCJ0ZXh0LWVsbGlwc2lzIiwidGV4dC1jbGlwIl0sInRleHQtd3JhcCI6W3t0ZXh0Olsid3JhcCIsIm5vd3JhcCIsImJhbGFuY2UiLCJwcmV0dHkiXX1dLGluZGVudDpbe2luZGVudDpUKCl9XSwidmVydGljYWwtYWxpZ24iOlt7YWxpZ246WyJiYXNlbGluZSIsInRvcCIsIm1pZGRsZSIsImJvdHRvbSIsInRleHQtdG9wIiwidGV4dC1ib3R0b20iLCJzdWIiLCJzdXBlciIseWUsZ2VdfV0sd2hpdGVzcGFjZTpbe3doaXRlc3BhY2U6WyJub3JtYWwiLCJub3dyYXAiLCJwcmUiLCJwcmUtbGluZSIsInByZS13cmFwIiwiYnJlYWstc3BhY2VzIl19XSxicmVhazpbe2JyZWFrOlsibm9ybWFsIiwid29yZHMiLCJhbGwiLCJrZWVwIl19XSx3cmFwOlt7d3JhcDpbImJyZWFrLXdvcmQiLCJhbnl3aGVyZSIsIm5vcm1hbCJdfV0saHlwaGVuczpbe2h5cGhlbnM6WyJub25lIiwibWFudWFsIiwiYXV0byJdfV0sY29udGVudDpbe2NvbnRlbnQ6WyJub25lIix5ZSxnZV19XSwiYmctYXR0YWNobWVudCI6W3tiZzpbImZpeGVkIiwibG9jYWwiLCJzY3JvbGwiXX1dLCJiZy1jbGlwIjpbeyJiZy1jbGlwIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwidGV4dCJdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50Il19XSwiYmctcG9zaXRpb24iOlt7Ymc6VmUoKX1dLCJiZy1yZXBlYXQiOlt7Ymc6TmUoKX1dLCJiZy1zaXplIjpbe2JnOmV0KCl9XSwiYmctaW1hZ2UiOlt7Ymc6WyJub25lIix7bGluZWFyOlt7dG86WyJ0IiwidHIiLCJyIiwiYnIiLCJiIiwiYmwiLCJsIiwidGwiXX0sUXIseWUsZ2VdLHJhZGlhbDpbIiIseWUsZ2VdLGNvbmljOltRcix5ZSxnZV19LHJMLGVMXX1dLCJiZy1jb2xvciI6W3tiZzpuZSgpfV0sImdyYWRpZW50LWZyb20tcG9zIjpbe2Zyb206dmUoKX1dLCJncmFkaWVudC12aWEtcG9zIjpbe3ZpYTp2ZSgpfV0sImdyYWRpZW50LXRvLXBvcyI6W3t0bzp2ZSgpfV0sImdyYWRpZW50LWZyb20iOlt7ZnJvbTpuZSgpfV0sImdyYWRpZW50LXZpYSI6W3t2aWE6bmUoKX1dLCJncmFkaWVudC10byI6W3t0bzpuZSgpfV0scm91bmRlZDpbe3JvdW5kZWQ6SWUoKX1dLCJyb3VuZGVkLXMiOlt7InJvdW5kZWQtcyI6SWUoKX1dLCJyb3VuZGVkLWUiOlt7InJvdW5kZWQtZSI6SWUoKX1dLCJyb3VuZGVkLXQiOlt7InJvdW5kZWQtdCI6SWUoKX1dLCJyb3VuZGVkLXIiOlt7InJvdW5kZWQtciI6SWUoKX1dLCJyb3VuZGVkLWIiOlt7InJvdW5kZWQtYiI6SWUoKX1dLCJyb3VuZGVkLWwiOlt7InJvdW5kZWQtbCI6SWUoKX1dLCJyb3VuZGVkLXNzIjpbeyJyb3VuZGVkLXNzIjpJZSgpfV0sInJvdW5kZWQtc2UiOlt7InJvdW5kZWQtc2UiOkllKCl9XSwicm91bmRlZC1lZSI6W3sicm91bmRlZC1lZSI6SWUoKX1dLCJyb3VuZGVkLWVzIjpbeyJyb3VuZGVkLWVzIjpJZSgpfV0sInJvdW5kZWQtdGwiOlt7InJvdW5kZWQtdGwiOkllKCl9XSwicm91bmRlZC10ciI6W3sicm91bmRlZC10ciI6SWUoKX1dLCJyb3VuZGVkLWJyIjpbeyJyb3VuZGVkLWJyIjpJZSgpfV0sInJvdW5kZWQtYmwiOlt7InJvdW5kZWQtYmwiOkllKCl9XSwiYm9yZGVyLXciOlt7Ym9yZGVyOmVlKCl9XSwiYm9yZGVyLXcteCI6W3siYm9yZGVyLXgiOmVlKCl9XSwiYm9yZGVyLXcteSI6W3siYm9yZGVyLXkiOmVlKCl9XSwiYm9yZGVyLXctcyI6W3siYm9yZGVyLXMiOmVlKCl9XSwiYm9yZGVyLXctZSI6W3siYm9yZGVyLWUiOmVlKCl9XSwiYm9yZGVyLXctYnMiOlt7ImJvcmRlci1icyI6ZWUoKX1dLCJib3JkZXItdy1iZSI6W3siYm9yZGVyLWJlIjplZSgpfV0sImJvcmRlci13LXQiOlt7ImJvcmRlci10IjplZSgpfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjplZSgpfV0sImJvcmRlci13LWIiOlt7ImJvcmRlci1iIjplZSgpfV0sImJvcmRlci13LWwiOlt7ImJvcmRlci1sIjplZSgpfV0sImRpdmlkZS14IjpbeyJkaXZpZGUteCI6ZWUoKX1dLCJkaXZpZGUteC1yZXZlcnNlIjpbImRpdmlkZS14LXJldmVyc2UiXSwiZGl2aWRlLXkiOlt7ImRpdmlkZS15IjplZSgpfV0sImRpdmlkZS15LXJldmVyc2UiOlsiZGl2aWRlLXktcmV2ZXJzZSJdLCJib3JkZXItc3R5bGUiOlt7Ym9yZGVyOlsuLi56KCksImhpZGRlbiIsIm5vbmUiXX1dLCJkaXZpZGUtc3R5bGUiOlt7ZGl2aWRlOlsuLi56KCksImhpZGRlbiIsIm5vbmUiXX1dLCJib3JkZXItY29sb3IiOlt7Ym9yZGVyOm5lKCl9XSwiYm9yZGVyLWNvbG9yLXgiOlt7ImJvcmRlci14IjpuZSgpfV0sImJvcmRlci1jb2xvci15IjpbeyJib3JkZXIteSI6bmUoKX1dLCJib3JkZXItY29sb3ItcyI6W3siYm9yZGVyLXMiOm5lKCl9XSwiYm9yZGVyLWNvbG9yLWUiOlt7ImJvcmRlci1lIjpuZSgpfV0sImJvcmRlci1jb2xvci1icyI6W3siYm9yZGVyLWJzIjpuZSgpfV0sImJvcmRlci1jb2xvci1iZSI6W3siYm9yZGVyLWJlIjpuZSgpfV0sImJvcmRlci1jb2xvci10IjpbeyJib3JkZXItdCI6bmUoKX1dLCJib3JkZXItY29sb3ItciI6W3siYm9yZGVyLXIiOm5lKCl9XSwiYm9yZGVyLWNvbG9yLWIiOlt7ImJvcmRlci1iIjpuZSgpfV0sImJvcmRlci1jb2xvci1sIjpbeyJib3JkZXItbCI6bmUoKX1dLCJkaXZpZGUtY29sb3IiOlt7ZGl2aWRlOm5lKCl9XSwib3V0bGluZS1zdHlsZSI6W3tvdXRsaW5lOlsuLi56KCksIm5vbmUiLCJoaWRkZW4iXX1dLCJvdXRsaW5lLW9mZnNldCI6W3sib3V0bGluZS1vZmZzZXQiOltEZSx5ZSxnZV19XSwib3V0bGluZS13Ijpbe291dGxpbmU6WyIiLERlLFFzLEVvXX1dLCJvdXRsaW5lLWNvbG9yIjpbe291dGxpbmU6bmUoKX1dLHNoYWRvdzpbe3NoYWRvdzpbIiIsIm5vbmUiLGMsYmEsdmFdfV0sInNoYWRvdy1jb2xvciI6W3tzaGFkb3c6bmUoKX1dLCJpbnNldC1zaGFkb3ciOlt7Imluc2V0LXNoYWRvdyI6WyJub25lIixmLGJhLHZhXX1dLCJpbnNldC1zaGFkb3ctY29sb3IiOlt7Imluc2V0LXNoYWRvdyI6bmUoKX1dLCJyaW5nLXciOlt7cmluZzplZSgpfV0sInJpbmctdy1pbnNldCI6WyJyaW5nLWluc2V0Il0sInJpbmctY29sb3IiOlt7cmluZzpuZSgpfV0sInJpbmctb2Zmc2V0LXciOlt7InJpbmctb2Zmc2V0IjpbRGUsRW9dfV0sInJpbmctb2Zmc2V0LWNvbG9yIjpbeyJyaW5nLW9mZnNldCI6bmUoKX1dLCJpbnNldC1yaW5nLXciOlt7Imluc2V0LXJpbmciOmVlKCl9XSwiaW5zZXQtcmluZy1jb2xvciI6W3siaW5zZXQtcmluZyI6bmUoKX1dLCJ0ZXh0LXNoYWRvdyI6W3sidGV4dC1zaGFkb3ciOlsibm9uZSIsZCxiYSx2YV19XSwidGV4dC1zaGFkb3ctY29sb3IiOlt7InRleHQtc2hhZG93IjpuZSgpfV0sb3BhY2l0eTpbe29wYWNpdHk6W0RlLHllLGdlXX1dLCJtaXgtYmxlbmQiOlt7Im1peC1ibGVuZCI6Wy4uLlkoKSwicGx1cy1kYXJrZXIiLCJwbHVzLWxpZ2h0ZXIiXX1dLCJiZy1ibGVuZCI6W3siYmctYmxlbmQiOlkoKX1dLCJtYXNrLWNsaXAiOlt7Im1hc2stY2xpcCI6WyJib3JkZXIiLCJwYWRkaW5nIiwiY29udGVudCIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Il19LCJtYXNrLW5vLWNsaXAiXSwibWFzay1jb21wb3NpdGUiOlt7bWFzazpbImFkZCIsInN1YnRyYWN0IiwiaW50ZXJzZWN0IiwiZXhjbHVkZSJdfV0sIm1hc2staW1hZ2UtbGluZWFyLXBvcyI6W3sibWFzay1saW5lYXIiOltEZV19XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1wb3MiOlt7Im1hc2stbGluZWFyLWZyb20iOkooKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpKKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6bmUoKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1jb2xvciI6W3sibWFzay1saW5lYXItdG8iOm5lKCl9XSwibWFzay1pbWFnZS10LWZyb20tcG9zIjpbeyJtYXNrLXQtZnJvbSI6SigpfV0sIm1hc2staW1hZ2UtdC10by1wb3MiOlt7Im1hc2stdC10byI6SigpfV0sIm1hc2staW1hZ2UtdC1mcm9tLWNvbG9yIjpbeyJtYXNrLXQtZnJvbSI6bmUoKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6bmUoKX1dLCJtYXNrLWltYWdlLXItZnJvbS1wb3MiOlt7Im1hc2stci1mcm9tIjpKKCl9XSwibWFzay1pbWFnZS1yLXRvLXBvcyI6W3sibWFzay1yLXRvIjpKKCl9XSwibWFzay1pbWFnZS1yLWZyb20tY29sb3IiOlt7Im1hc2stci1mcm9tIjpuZSgpfV0sIm1hc2staW1hZ2Utci10by1jb2xvciI6W3sibWFzay1yLXRvIjpuZSgpfV0sIm1hc2staW1hZ2UtYi1mcm9tLXBvcyI6W3sibWFzay1iLWZyb20iOkooKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOkooKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOm5lKCl9XSwibWFzay1pbWFnZS1iLXRvLWNvbG9yIjpbeyJtYXNrLWItdG8iOm5lKCl9XSwibWFzay1pbWFnZS1sLWZyb20tcG9zIjpbeyJtYXNrLWwtZnJvbSI6SigpfV0sIm1hc2staW1hZ2UtbC10by1wb3MiOlt7Im1hc2stbC10byI6SigpfV0sIm1hc2staW1hZ2UtbC1mcm9tLWNvbG9yIjpbeyJtYXNrLWwtZnJvbSI6bmUoKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6bmUoKX1dLCJtYXNrLWltYWdlLXgtZnJvbS1wb3MiOlt7Im1hc2steC1mcm9tIjpKKCl9XSwibWFzay1pbWFnZS14LXRvLXBvcyI6W3sibWFzay14LXRvIjpKKCl9XSwibWFzay1pbWFnZS14LWZyb20tY29sb3IiOlt7Im1hc2steC1mcm9tIjpuZSgpfV0sIm1hc2staW1hZ2UteC10by1jb2xvciI6W3sibWFzay14LXRvIjpuZSgpfV0sIm1hc2staW1hZ2UteS1mcm9tLXBvcyI6W3sibWFzay15LWZyb20iOkooKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOkooKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOm5lKCl9XSwibWFzay1pbWFnZS15LXRvLWNvbG9yIjpbeyJtYXNrLXktdG8iOm5lKCl9XSwibWFzay1pbWFnZS1yYWRpYWwiOlt7Im1hc2stcmFkaWFsIjpbeWUsZ2VdfV0sIm1hc2staW1hZ2UtcmFkaWFsLWZyb20tcG9zIjpbeyJtYXNrLXJhZGlhbC1mcm9tIjpKKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtdG8tcG9zIjpbeyJtYXNrLXJhZGlhbC10byI6SigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLWZyb20tY29sb3IiOlt7Im1hc2stcmFkaWFsLWZyb20iOm5lKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtdG8tY29sb3IiOlt7Im1hc2stcmFkaWFsLXRvIjpuZSgpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6WyJjaXJjbGUiLCJlbGxpcHNlIl19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbInNpZGUiLCJjb3JuZXIiXSxmYXJ0aGVzdDpbInNpZGUiLCJjb3JuZXIiXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOmIoKX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W0RlXX1dLCJtYXNrLWltYWdlLWNvbmljLWZyb20tcG9zIjpbeyJtYXNrLWNvbmljLWZyb20iOkooKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLXBvcyI6W3sibWFzay1jb25pYy10byI6SigpfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1jb2xvciI6W3sibWFzay1jb25pYy1mcm9tIjpuZSgpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tY29sb3IiOlt7Im1hc2stY29uaWMtdG8iOm5lKCl9XSwibWFzay1tb2RlIjpbe21hc2s6WyJhbHBoYSIsImx1bWluYW5jZSIsIm1hdGNoIl19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwiZmlsbCIsInN0cm9rZSIsInZpZXciXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6VmUoKX1dLCJtYXNrLXJlcGVhdCI6W3ttYXNrOk5lKCl9XSwibWFzay1zaXplIjpbe21hc2s6ZXQoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6WyJhbHBoYSIsImx1bWluYW5jZSJdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbIm5vbmUiLHllLGdlXX1dLGZpbHRlcjpbe2ZpbHRlcjpbIiIsIm5vbmUiLHllLGdlXX1dLGJsdXI6W3tibHVyOmxlKCl9XSxicmlnaHRuZXNzOlt7YnJpZ2h0bmVzczpbRGUseWUsZ2VdfV0sY29udHJhc3Q6W3tjb250cmFzdDpbRGUseWUsZ2VdfV0sImRyb3Atc2hhZG93IjpbeyJkcm9wLXNoYWRvdyI6WyIiLCJub25lIixwLGJhLHZhXX1dLCJkcm9wLXNoYWRvdy1jb2xvciI6W3siZHJvcC1zaGFkb3ciOm5lKCl9XSxncmF5c2NhbGU6W3tncmF5c2NhbGU6WyIiLERlLHllLGdlXX1dLCJodWUtcm90YXRlIjpbeyJodWUtcm90YXRlIjpbRGUseWUsZ2VdfV0saW52ZXJ0Olt7aW52ZXJ0OlsiIixEZSx5ZSxnZV19XSxzYXR1cmF0ZTpbe3NhdHVyYXRlOltEZSx5ZSxnZV19XSxzZXBpYTpbe3NlcGlhOlsiIixEZSx5ZSxnZV19XSwiYmFja2Ryb3AtZmlsdGVyIjpbeyJiYWNrZHJvcC1maWx0ZXIiOlsiIiwibm9uZSIseWUsZ2VdfV0sImJhY2tkcm9wLWJsdXIiOlt7ImJhY2tkcm9wLWJsdXIiOmxlKCl9XSwiYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W3siYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W0RlLHllLGdlXX1dLCJiYWNrZHJvcC1jb250cmFzdCI6W3siYmFja2Ryb3AtY29udHJhc3QiOltEZSx5ZSxnZV19XSwiYmFja2Ryb3AtZ3JheXNjYWxlIjpbeyJiYWNrZHJvcC1ncmF5c2NhbGUiOlsiIixEZSx5ZSxnZV19XSwiYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W3siYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W0RlLHllLGdlXX1dLCJiYWNrZHJvcC1pbnZlcnQiOlt7ImJhY2tkcm9wLWludmVydCI6WyIiLERlLHllLGdlXX1dLCJiYWNrZHJvcC1vcGFjaXR5IjpbeyJiYWNrZHJvcC1vcGFjaXR5IjpbRGUseWUsZ2VdfV0sImJhY2tkcm9wLXNhdHVyYXRlIjpbeyJiYWNrZHJvcC1zYXR1cmF0ZSI6W0RlLHllLGdlXX1dLCJiYWNrZHJvcC1zZXBpYSI6W3siYmFja2Ryb3Atc2VwaWEiOlsiIixEZSx5ZSxnZV19XSwiYm9yZGVyLWNvbGxhcHNlIjpbe2JvcmRlcjpbImNvbGxhcHNlIiwic2VwYXJhdGUiXX1dLCJib3JkZXItc3BhY2luZyI6W3siYm9yZGVyLXNwYWNpbmciOlQoKX1dLCJib3JkZXItc3BhY2luZy14IjpbeyJib3JkZXItc3BhY2luZy14IjpUKCl9XSwiYm9yZGVyLXNwYWNpbmcteSI6W3siYm9yZGVyLXNwYWNpbmcteSI6VCgpfV0sInRhYmxlLWxheW91dCI6W3t0YWJsZTpbImF1dG8iLCJmaXhlZCJdfV0sY2FwdGlvbjpbe2NhcHRpb246WyJ0b3AiLCJib3R0b20iXX1dLHRyYW5zaXRpb246W3t0cmFuc2l0aW9uOlsiIiwiYWxsIiwiY29sb3JzIiwib3BhY2l0eSIsInNoYWRvdyIsInRyYW5zZm9ybSIsIm5vbmUiLHllLGdlXX1dLCJ0cmFuc2l0aW9uLWJlaGF2aW9yIjpbe3RyYW5zaXRpb246WyJub3JtYWwiLCJkaXNjcmV0ZSJdfV0sZHVyYXRpb246W3tkdXJhdGlvbjpbRGUsImluaXRpYWwiLHllLGdlXX1dLGVhc2U6W3tlYXNlOlsibGluZWFyIiwiaW5pdGlhbCIsdyx5ZSxnZV19XSxkZWxheTpbe2RlbGF5OltEZSx5ZSxnZV19XSxhbmltYXRlOlt7YW5pbWF0ZTpbIm5vbmUiLHYseWUsZ2VdfV0sYmFja2ZhY2U6W3tiYWNrZmFjZTpbImhpZGRlbiIsInZpc2libGUiXX1dLHBlcnNwZWN0aXZlOlt7cGVyc3BlY3RpdmU6W3kseWUsZ2VdfV0sInBlcnNwZWN0aXZlLW9yaWdpbiI6W3sicGVyc3BlY3RpdmUtb3JpZ2luIjp4KCl9XSxyb3RhdGU6W3tyb3RhdGU6d2UoKX1dLCJyb3RhdGUteCI6W3sicm90YXRlLXgiOndlKCl9XSwicm90YXRlLXkiOlt7InJvdGF0ZS15Ijp3ZSgpfV0sInJvdGF0ZS16IjpbeyJyb3RhdGUteiI6d2UoKX1dLHNjYWxlOlt7c2NhbGU6dGUoKX1dLCJzY2FsZS14IjpbeyJzY2FsZS14Ijp0ZSgpfV0sInNjYWxlLXkiOlt7InNjYWxlLXkiOnRlKCl9XSwic2NhbGUteiI6W3sic2NhbGUteiI6dGUoKX1dLCJzY2FsZS0zZCI6WyJzY2FsZS0zZCJdLHNrZXc6W3tza2V3OkUoKX1dLCJza2V3LXgiOlt7InNrZXcteCI6RSgpfV0sInNrZXcteSI6W3sic2tldy15IjpFKCl9XSx0cmFuc2Zvcm06W3t0cmFuc2Zvcm06W3llLGdlLCIiLCJub25lIiwiZ3B1IiwiY3B1Il19XSwidHJhbnNmb3JtLW9yaWdpbiI6W3tvcmlnaW46eCgpfV0sInRyYW5zZm9ybS1zdHlsZSI6W3t0cmFuc2Zvcm06WyIzZCIsImZsYXQiXX1dLHRyYW5zbGF0ZTpbe3RyYW5zbGF0ZTpPKCl9XSwidHJhbnNsYXRlLXgiOlt7InRyYW5zbGF0ZS14IjpPKCl9XSwidHJhbnNsYXRlLXkiOlt7InRyYW5zbGF0ZS15IjpPKCl9XSwidHJhbnNsYXRlLXoiOlt7InRyYW5zbGF0ZS16IjpPKCl9XSwidHJhbnNsYXRlLW5vbmUiOlsidHJhbnNsYXRlLW5vbmUiXSxhY2NlbnQ6W3thY2NlbnQ6bmUoKX1dLGFwcGVhcmFuY2U6W3thcHBlYXJhbmNlOlsibm9uZSIsImF1dG8iXX1dLCJjYXJldC1jb2xvciI6W3tjYXJldDpuZSgpfV0sImNvbG9yLXNjaGVtZSI6W3tzY2hlbWU6WyJub3JtYWwiLCJkYXJrIiwibGlnaHQiLCJsaWdodC1kYXJrIiwib25seS1kYXJrIiwib25seS1saWdodCJdfV0sY3Vyc29yOlt7Y3Vyc29yOlsiYXV0byIsImRlZmF1bHQiLCJwb2ludGVyIiwid2FpdCIsInRleHQiLCJtb3ZlIiwiaGVscCIsIm5vdC1hbGxvd2VkIiwibm9uZSIsImNvbnRleHQtbWVudSIsInByb2dyZXNzIiwiY2VsbCIsImNyb3NzaGFpciIsInZlcnRpY2FsLXRleHQiLCJhbGlhcyIsImNvcHkiLCJuby1kcm9wIiwiZ3JhYiIsImdyYWJiaW5nIiwiYWxsLXNjcm9sbCIsImNvbC1yZXNpemUiLCJyb3ctcmVzaXplIiwibi1yZXNpemUiLCJlLXJlc2l6ZSIsInMtcmVzaXplIiwidy1yZXNpemUiLCJuZS1yZXNpemUiLCJudy1yZXNpemUiLCJzZS1yZXNpemUiLCJzdy1yZXNpemUiLCJldy1yZXNpemUiLCJucy1yZXNpemUiLCJuZXN3LXJlc2l6ZSIsIm53c2UtcmVzaXplIiwiem9vbS1pbiIsInpvb20tb3V0Iix5ZSxnZV19XSwiZmllbGQtc2l6aW5nIjpbeyJmaWVsZC1zaXppbmciOlsiZml4ZWQiLCJjb250ZW50Il19XSwicG9pbnRlci1ldmVudHMiOlt7InBvaW50ZXItZXZlbnRzIjpbImF1dG8iLCJub25lIl19XSxyZXNpemU6W3tyZXNpemU6WyJub25lIiwiIiwieSIsIngiXX1dLCJzY3JvbGwtYmVoYXZpb3IiOlt7c2Nyb2xsOlsiYXV0byIsInNtb290aCJdfV0sInNjcm9sbC1tIjpbeyJzY3JvbGwtbSI6VCgpfV0sInNjcm9sbC1teCI6W3sic2Nyb2xsLW14IjpUKCl9XSwic2Nyb2xsLW15IjpbeyJzY3JvbGwtbXkiOlQoKX1dLCJzY3JvbGwtbXMiOlt7InNjcm9sbC1tcyI6VCgpfV0sInNjcm9sbC1tZSI6W3sic2Nyb2xsLW1lIjpUKCl9XSwic2Nyb2xsLW1icyI6W3sic2Nyb2xsLW1icyI6VCgpfV0sInNjcm9sbC1tYmUiOlt7InNjcm9sbC1tYmUiOlQoKX1dLCJzY3JvbGwtbXQiOlt7InNjcm9sbC1tdCI6VCgpfV0sInNjcm9sbC1tciI6W3sic2Nyb2xsLW1yIjpUKCl9XSwic2Nyb2xsLW1iIjpbeyJzY3JvbGwtbWIiOlQoKX1dLCJzY3JvbGwtbWwiOlt7InNjcm9sbC1tbCI6VCgpfV0sInNjcm9sbC1wIjpbeyJzY3JvbGwtcCI6VCgpfV0sInNjcm9sbC1weCI6W3sic2Nyb2xsLXB4IjpUKCl9XSwic2Nyb2xsLXB5IjpbeyJzY3JvbGwtcHkiOlQoKX1dLCJzY3JvbGwtcHMiOlt7InNjcm9sbC1wcyI6VCgpfV0sInNjcm9sbC1wZSI6W3sic2Nyb2xsLXBlIjpUKCl9XSwic2Nyb2xsLXBicyI6W3sic2Nyb2xsLXBicyI6VCgpfV0sInNjcm9sbC1wYmUiOlt7InNjcm9sbC1wYmUiOlQoKX1dLCJzY3JvbGwtcHQiOlt7InNjcm9sbC1wdCI6VCgpfV0sInNjcm9sbC1wciI6W3sic2Nyb2xsLXByIjpUKCl9XSwic2Nyb2xsLXBiIjpbeyJzY3JvbGwtcGIiOlQoKX1dLCJzY3JvbGwtcGwiOlt7InNjcm9sbC1wbCI6VCgpfV0sInNuYXAtYWxpZ24iOlt7c25hcDpbInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwiYWxpZ24tbm9uZSJdfV0sInNuYXAtc3RvcCI6W3tzbmFwOlsibm9ybWFsIiwiYWx3YXlzIl19XSwic25hcC10eXBlIjpbe3NuYXA6WyJub25lIiwieCIsInkiLCJib3RoIl19XSwic25hcC1zdHJpY3RuZXNzIjpbe3NuYXA6WyJtYW5kYXRvcnkiLCJwcm94aW1pdHkiXX1dLHRvdWNoOlt7dG91Y2g6WyJhdXRvIiwibm9uZSIsIm1hbmlwdWxhdGlvbiJdfV0sInRvdWNoLXgiOlt7InRvdWNoLXBhbiI6WyJ4IiwibGVmdCIsInJpZ2h0Il19XSwidG91Y2gteSI6W3sidG91Y2gtcGFuIjpbInkiLCJ1cCIsImRvd24iXX1dLCJ0b3VjaC1weiI6WyJ0b3VjaC1waW5jaC16b29tIl0sc2VsZWN0Olt7c2VsZWN0Olsibm9uZSIsInRleHQiLCJhbGwiLCJhdXRvIl19XSwid2lsbC1jaGFuZ2UiOlt7IndpbGwtY2hhbmdlIjpbImF1dG8iLCJzY3JvbGwiLCJjb250ZW50cyIsInRyYW5zZm9ybSIseWUsZ2VdfV0sZmlsbDpbe2ZpbGw6WyJub25lIiwuLi5uZSgpXX1dLCJzdHJva2UtdyI6W3tzdHJva2U6W0RlLFFzLEVvLHloXX1dLHN0cm9rZTpbe3N0cm9rZTpbIm5vbmUiLC4uLm5lKCldfV0sImZvcmNlZC1jb2xvci1hZGp1c3QiOlt7ImZvcmNlZC1jb2xvci1hZGp1c3QiOlsiYXV0byIsIm5vbmUiXX1dfSxjb25mbGljdGluZ0NsYXNzR3JvdXBzOntvdmVyZmxvdzpbIm92ZXJmbG93LXgiLCJvdmVyZmxvdy15Il0sb3ZlcnNjcm9sbDpbIm92ZXJzY3JvbGwteCIsIm92ZXJzY3JvbGwteSJdLGluc2V0OlsiaW5zZXQteCIsImluc2V0LXkiLCJpbnNldC1icyIsImluc2V0LWJlIiwic3RhcnQiLCJlbmQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSwiaW5zZXQteCI6WyJyaWdodCIsImxlZnQiXSwiaW5zZXQteSI6WyJ0b3AiLCJib3R0b20iXSxmbGV4OlsiYmFzaXMiLCJncm93Iiwic2hyaW5rIl0sZ2FwOlsiZ2FwLXgiLCJnYXAteSJdLHA6WyJweCIsInB5IiwicHMiLCJwZSIsInBicyIsInBiZSIsInB0IiwicHIiLCJwYiIsInBsIl0scHg6WyJwciIsInBsIl0scHk6WyJwdCIsInBiIl0sbTpbIm14IiwibXkiLCJtcyIsIm1lIiwibWJzIiwibWJlIiwibXQiLCJtciIsIm1iIiwibWwiXSxteDpbIm1yIiwibWwiXSxteTpbIm10IiwibWIiXSxzaXplOlsidyIsImgiXSwiZm9udC1zaXplIjpbImxlYWRpbmciXSwiZnZuLW5vcm1hbCI6WyJmdm4tb3JkaW5hbCIsImZ2bi1zbGFzaGVkLXplcm8iLCJmdm4tZmlndXJlIiwiZnZuLXNwYWNpbmciLCJmdm4tZnJhY3Rpb24iXSwiZnZuLW9yZGluYWwiOlsiZnZuLW5vcm1hbCJdLCJmdm4tc2xhc2hlZC16ZXJvIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZpZ3VyZSI6WyJmdm4tbm9ybWFsIl0sImZ2bi1zcGFjaW5nIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZyYWN0aW9uIjpbImZ2bi1ub3JtYWwiXSwibGluZS1jbGFtcCI6WyJkaXNwbGF5Iiwib3ZlcmZsb3ciXSxyb3VuZGVkOlsicm91bmRlZC1zIiwicm91bmRlZC1lIiwicm91bmRlZC10Iiwicm91bmRlZC1yIiwicm91bmRlZC1iIiwicm91bmRlZC1sIiwicm91bmRlZC1zcyIsInJvdW5kZWQtc2UiLCJyb3VuZGVkLWVlIiwicm91bmRlZC1lcyIsInJvdW5kZWQtdGwiLCJyb3VuZGVkLXRyIiwicm91bmRlZC1iciIsInJvdW5kZWQtYmwiXSwicm91bmRlZC1zIjpbInJvdW5kZWQtc3MiLCJyb3VuZGVkLWVzIl0sInJvdW5kZWQtZSI6WyJyb3VuZGVkLXNlIiwicm91bmRlZC1lZSJdLCJyb3VuZGVkLXQiOlsicm91bmRlZC10bCIsInJvdW5kZWQtdHIiXSwicm91bmRlZC1yIjpbInJvdW5kZWQtdHIiLCJyb3VuZGVkLWJyIl0sInJvdW5kZWQtYiI6WyJyb3VuZGVkLWJyIiwicm91bmRlZC1ibCJdLCJyb3VuZGVkLWwiOlsicm91bmRlZC10bCIsInJvdW5kZWQtYmwiXSwiYm9yZGVyLXNwYWNpbmciOlsiYm9yZGVyLXNwYWNpbmcteCIsImJvcmRlci1zcGFjaW5nLXkiXSwiYm9yZGVyLXciOlsiYm9yZGVyLXcteCIsImJvcmRlci13LXkiLCJib3JkZXItdy1zIiwiYm9yZGVyLXctZSIsImJvcmRlci13LWJzIiwiYm9yZGVyLXctYmUiLCJib3JkZXItdy10IiwiYm9yZGVyLXctciIsImJvcmRlci13LWIiLCJib3JkZXItdy1sIl0sImJvcmRlci13LXgiOlsiYm9yZGVyLXctciIsImJvcmRlci13LWwiXSwiYm9yZGVyLXcteSI6WyJib3JkZXItdy10IiwiYm9yZGVyLXctYiJdLCJib3JkZXItY29sb3IiOlsiYm9yZGVyLWNvbG9yLXgiLCJib3JkZXItY29sb3IteSIsImJvcmRlci1jb2xvci1zIiwiYm9yZGVyLWNvbG9yLWUiLCJib3JkZXItY29sb3ItYnMiLCJib3JkZXItY29sb3ItYmUiLCJib3JkZXItY29sb3ItdCIsImJvcmRlci1jb2xvci1yIiwiYm9yZGVyLWNvbG9yLWIiLCJib3JkZXItY29sb3ItbCJdLCJib3JkZXItY29sb3IteCI6WyJib3JkZXItY29sb3ItciIsImJvcmRlci1jb2xvci1sIl0sImJvcmRlci1jb2xvci15IjpbImJvcmRlci1jb2xvci10IiwiYm9yZGVyLWNvbG9yLWIiXSx0cmFuc2xhdGU6WyJ0cmFuc2xhdGUteCIsInRyYW5zbGF0ZS15IiwidHJhbnNsYXRlLW5vbmUiXSwidHJhbnNsYXRlLW5vbmUiOlsidHJhbnNsYXRlIiwidHJhbnNsYXRlLXgiLCJ0cmFuc2xhdGUteSIsInRyYW5zbGF0ZS16Il0sInNjcm9sbC1tIjpbInNjcm9sbC1teCIsInNjcm9sbC1teSIsInNjcm9sbC1tcyIsInNjcm9sbC1tZSIsInNjcm9sbC1tYnMiLCJzY3JvbGwtbWJlIiwic2Nyb2xsLW10Iiwic2Nyb2xsLW1yIiwic2Nyb2xsLW1iIiwic2Nyb2xsLW1sIl0sInNjcm9sbC1teCI6WyJzY3JvbGwtbXIiLCJzY3JvbGwtbWwiXSwic2Nyb2xsLW15IjpbInNjcm9sbC1tdCIsInNjcm9sbC1tYiJdLCJzY3JvbGwtcCI6WyJzY3JvbGwtcHgiLCJzY3JvbGwtcHkiLCJzY3JvbGwtcHMiLCJzY3JvbGwtcGUiLCJzY3JvbGwtcGJzIiwic2Nyb2xsLXBiZSIsInNjcm9sbC1wdCIsInNjcm9sbC1wciIsInNjcm9sbC1wYiIsInNjcm9sbC1wbCJdLCJzY3JvbGwtcHgiOlsic2Nyb2xsLXByIiwic2Nyb2xsLXBsIl0sInNjcm9sbC1weSI6WyJzY3JvbGwtcHQiLCJzY3JvbGwtcGIiXSx0b3VjaDpbInRvdWNoLXgiLCJ0b3VjaC15IiwidG91Y2gtcHoiXSwidG91Y2gteCI6WyJ0b3VjaCJdLCJ0b3VjaC15IjpbInRvdWNoIl0sInRvdWNoLXB6IjpbInRvdWNoIl19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczp7ImZvbnQtc2l6ZSI6WyJsZWFkaW5nIl19LG9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzOlsiKiIsIioqIiwiYWZ0ZXIiLCJiYWNrZHJvcCIsImJlZm9yZSIsImRldGFpbHMtY29udGVudCIsImZpbGUiLCJmaXJzdC1sZXR0ZXIiLCJmaXJzdC1saW5lIiwibWFya2VyIiwicGxhY2Vob2xkZXIiLCJzZWxlY3Rpb24iXX19LGlMPShlLHtjYWNoZVNpemU6dCxwcmVmaXg6bixleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZTpyLGV4dGVuZDpvPXt9LG92ZXJyaWRlOnM9e319KT0+KGVpKGUsImNhY2hlU2l6ZSIsdCksZWkoZSwicHJlZml4IixuKSxlaShlLCJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsciksd2EoZS50aGVtZSxzLnRoZW1lKSx3YShlLmNsYXNzR3JvdXBzLHMuY2xhc3NHcm91cHMpLHdhKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwcyxzLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMpLHdhKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzLHMuY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzKSxlaShlLCJvcmRlclNlbnNpdGl2ZU1vZGlmaWVycyIscy5vcmRlclNlbnNpdGl2ZU1vZGlmaWVycyksX2EoZS50aGVtZSxvLnRoZW1lKSxfYShlLmNsYXNzR3JvdXBzLG8uY2xhc3NHcm91cHMpLF9hKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwcyxvLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMpLF9hKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzLG8uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzKSxKMChlLG8sIm9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzIiksZSksZWk9KGUsdCxuKT0+e24hPT12b2lkIDAmJihlW3RdPW4pfSx3YT0oZSx0KT0+e2lmKHQpZm9yKGNvbnN0IG4gaW4gdCllaShlLG4sdFtuXSl9LF9hPShlLHQpPT57aWYodClmb3IoY29uc3QgbiBpbiB0KUowKGUsdCxuKX0sSjA9KGUsdCxuKT0+e2NvbnN0IHI9dFtuXTtyIT09dm9pZCAwJiYoZVtuXT1lW25dP2Vbbl0uY29uY2F0KHIpOnIpfSxhTD0oZSwuLi50KT0+dHlwZW9mIGU9PSJmdW5jdGlvbiI/SnUoWHUsZSwuLi50KTpKdSgoKT0+aUwoWHUoKSxlKSwuLi50KSxsTD1KdShYdSk7dmFyIGNMPWU9PmNuKGUpP2xMOmFMKHsuLi5lLGV4dGVuZDp7dGhlbWU6ZS50aGVtZSxjbGFzc0dyb3VwczplLmNsYXNzR3JvdXBzLGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczplLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyxjb25mbGljdGluZ0NsYXNzR3JvdXBzOmUuY29uZmxpY3RpbmdDbGFzc0dyb3VwcywuLi5lLmV4dGVuZH19KSx1TD0oZSx0KT0+e2NvbnN0IG49b2woZSk7cmV0dXJuIW58fCEodD8udHdNZXJnZT8/ITApP246KCghQXIuY2FjaGVkVHdNZXJnZXx8QXIuZGlkVHdNZXJnZUNvbmZpZ0NoYW5nZSkmJihBci5kaWRUd01lcmdlQ29uZmlnQ2hhbmdlPSExLEFyLmNhY2hlZFR3TWVyZ2U9Y0woQXIuY2FjaGVkVHdNZXJnZUNvbmZpZykpLEFyLmNhY2hlZFR3TWVyZ2Uobil8fHZvaWQgMCl9LGZMPSguLi5lKT0+dD0+dUwoZSx0KSx7Y3JlYXRlVFY6ZEx9PWJEKGZMKTtjb25zdCBwTD1Odix1dD1kTChwTC51aT8udHYpLG1MPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wIixiYXNlOiJyb3VuZGVkLWZ1bGwgcmluZyByaW5nLWJnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtaW52ZXJ0ZWQgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6ImJnLXByaW1hcnkiLHNlY29uZGFyeToiYmctc2Vjb25kYXJ5IixzdWNjZXNzOiJiZy1zdWNjZXNzIixpbmZvOiJiZy1pbmZvIix3YXJuaW5nOiJiZy13YXJuaW5nIixlcnJvcjoiYmctZXJyb3IiLG5ldXRyYWw6ImJnLWludmVydGVkIn0sc2l6ZTp7IjN4cyI6ImgtWzRweF0gbWluLXctWzRweF0gdGV4dC1bNHB4XSIsIjJ4cyI6ImgtWzVweF0gbWluLXctWzVweF0gdGV4dC1bNXB4XSIseHM6ImgtWzZweF0gbWluLXctWzZweF0gdGV4dC1bNnB4XSIsc206ImgtWzdweF0gbWluLXctWzdweF0gdGV4dC1bN3B4XSIsbWQ6ImgtWzhweF0gbWluLXctWzhweF0gdGV4dC1bOHB4XSIsbGc6ImgtWzlweF0gbWluLXctWzlweF0gdGV4dC1bOXB4XSIseGw6ImgtWzEwcHhdIG1pbi13LVsxMHB4XSB0ZXh0LVsxMHB4XSIsIjJ4bCI6ImgtWzExcHhdIG1pbi13LVsxMXB4XSB0ZXh0LVsxMXB4XSIsIjN4bCI6ImgtWzEycHhdIG1pbi13LVsxMnB4XSB0ZXh0LVsxMnB4XSJ9LHBvc2l0aW9uOnsidG9wLXJpZ2h0IjoidG9wLTAgcmlnaHQtMCIsImJvdHRvbS1yaWdodCI6ImJvdHRvbS0wIHJpZ2h0LTAiLCJ0b3AtbGVmdCI6InRvcC0wIGxlZnQtMCIsImJvdHRvbS1sZWZ0IjoiYm90dG9tLTAgbGVmdC0wIn0saW5zZXQ6e2ZhbHNlOiIifSxzdGFuZGFsb25lOntmYWxzZToiYWJzb2x1dGUifX0sY29tcG91bmRWYXJpYW50czpbe3Bvc2l0aW9uOiJ0b3AtcmlnaHQiLGluc2V0OiExLGNsYXNzOiItdHJhbnNsYXRlLXktMS8yIHRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1yaWdodCIsaW5zZXQ6ITEsY2xhc3M6InRyYW5zbGF0ZS15LTEvMiB0cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn0se3Bvc2l0aW9uOiJ0b3AtbGVmdCIsaW5zZXQ6ITEsY2xhc3M6Ii10cmFuc2xhdGUteS0xLzIgLXRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1sZWZ0IixpbnNldDohMSxjbGFzczoidHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iixwb3NpdGlvbjoidG9wLXJpZ2h0In19LEdsPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNoaXAiLHByb3BzOml4KHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0ZXh0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwb3NpdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHN0YW5kYWxvbmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSx7c2hvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHNob3dNb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpzaG93Il0sc2V0dXAoZSl7Y29uc3QgdD1lLG49bXgoZSwic2hvdyIse3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSkse3NpemU6cn09RDAodCksbz1TdCgpLHM9TG4oImNoaXAiLHQpLGk9TigoKT0+dXQoe2V4dGVuZDp1dChtTCksLi4uby51aT8uY2hpcHx8e319KSh7Y29sb3I6dC5jb2xvcixzaXplOnIudmFsdWUscG9zaXRpb246dC5wb3NpdGlvbixpbnNldDp0Lmluc2V0LHN0YW5kYWxvbmU6dC5zdGFuZGFsb25lfSkpO3JldHVybihhLGwpPT4oUigpLCQoZyhNZSkse2FzOmUuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnVlKGkudmFsdWUucm9vdCh7Y2xhc3M6W2cocyk/LnJvb3QsdC5jbGFzc119KSl9LHtkZWZhdWx0Ok0oKCk9PltyZShnKGpvKSx4dChNdChhLiRhdHRycykpLHtkZWZhdWx0Ok0oKCk9PltVKGEuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSxuLnZhbHVlPyhSKCksX2UoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6dWUoaS52YWx1ZS5iYXNlKHtjbGFzczpnKHMpPy5iYXNlfSkpfSxbVShhLiRzbG90cywiY29udGVudCIse30sKCk9PltzdChydChlLnRleHQpLDEpXSldLDIpKTpkZSgiIiwhMCldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19KTtmdW5jdGlvbiBLbChlKXtjb25zdCB0PVN0KCksbj1OKCgpPT5FZShlKSkscj1OKCgpPT5uLnZhbHVlLmljb24mJm4udmFsdWUubGVhZGluZ3x8bi52YWx1ZS5pY29uJiYhbi52YWx1ZS50cmFpbGluZ3x8bi52YWx1ZS5sb2FkaW5nJiYhbi52YWx1ZS50cmFpbGluZ3x8ISFuLnZhbHVlLmxlYWRpbmdJY29uKSxvPU4oKCk9Pm4udmFsdWUuaWNvbiYmbi52YWx1ZS50cmFpbGluZ3x8bi52YWx1ZS5sb2FkaW5nJiZuLnZhbHVlLnRyYWlsaW5nfHwhIW4udmFsdWUudHJhaWxpbmdJY29uKSxzPU4oKCk9Pm4udmFsdWUubG9hZGluZz9uLnZhbHVlLmxvYWRpbmdJY29ufHx0LnVpLmljb25zLmxvYWRpbmc6bi52YWx1ZS5sZWFkaW5nSWNvbnx8bi52YWx1ZS5pY29uKSxpPU4oKCk9Pm4udmFsdWUubG9hZGluZyYmIXIudmFsdWU/bi52YWx1ZS5sb2FkaW5nSWNvbnx8dC51aS5pY29ucy5sb2FkaW5nOm4udmFsdWUudHJhaWxpbmdJY29ufHxuLnZhbHVlLmljb24pO3JldHVybntpc0xlYWRpbmc6cixpc1RyYWlsaW5nOm8sbGVhZGluZ0ljb25OYW1lOnMsdHJhaWxpbmdJY29uTmFtZTppfX1jb25zdCBYMD1TeW1ib2woIm51eHQtdWkuZmllbGQtZ3JvdXAiKTtmdW5jdGlvbiB3ZChlKXtjb25zdCB0PUtlKFgwLHZvaWQgMCk7cmV0dXJue29yaWVudGF0aW9uOk4oKCk9PnQ/LnZhbHVlLm9yaWVudGF0aW9uKSxzaXplOk4oKCk9PmU/LnNpemU/P3Q/LnZhbHVlLnNpemUpfX1jb25zdCBfZD1zZSh7bmFtZToiRmllbGRHcm91cFJlc2V0IixzZXR1cChlLHtzbG90czp0fSl7cmV0dXJuIE50KFgwLE4oKCk9Pih7c2l6ZTp2b2lkIDAsb3JpZW50YXRpb246dm9pZCAwfSkpKSwoKT0+dC5kZWZhdWx0Py4oKX19KSxoTD1TeW1ib2woIm51eHQtdWkuZm9ybS1vcHRpb25zIiksZ0w9U3ltYm9sKCJudXh0LXVpLmZvcm0tZXZlbnRzIiksenE9U3ltYm9sKCJudXh0LXVpLmZvcm0tc3RhdGUiKSxadT1TeW1ib2woIm51eHQtdWkuZm9ybS1maWVsZCIpLFowPVN5bWJvbCgibnV4dC11aS5pbnB1dC1pZCIpLHlMPVN5bWJvbCgibnV4dC11aS5mb3JtLWlucHV0cyIpLHZMPVN5bWJvbCgibnV4dC11aS5mb3JtLWxvYWRpbmciKSxiTD1TeW1ib2woIm51eHQtdWkuZm9ybS1lcnJvcnMiKTtmdW5jdGlvbiB4ZChlLHQpe2NvbnN0IG49S2UoaEwsdm9pZCAwKSxyPUtlKGdMLHZvaWQgMCksbz1LZShadSx2b2lkIDApLHM9S2UoWjAsdm9pZCAwKTtOdChadSx2b2lkIDApLG8mJnMmJih0Py5iaW5kPT09ITE/cy52YWx1ZT12b2lkIDA6ZT8uaWQmJihzLnZhbHVlPWU/LmlkKSk7ZnVuY3Rpb24gaShmLGQscCl7ciYmbyYmZCYmci5lbWl0KHt0eXBlOmYsbmFtZTpkLGVhZ2VyOnB9KX1mdW5jdGlvbiBhKCl7aSgiYmx1ciIsbz8udmFsdWUubmFtZSl9ZnVuY3Rpb24gbCgpe2koImZvY3VzIixvPy52YWx1ZS5uYW1lKX1mdW5jdGlvbiB1KCl7aSgiY2hhbmdlIixvPy52YWx1ZS5uYW1lKX1jb25zdCBjPXRkKCgpPT57aSgiaW5wdXQiLG8/LnZhbHVlLm5hbWUsIXQ/LmRlZmVySW5wdXRWYWxpZGF0aW9ufHxvPy52YWx1ZS5lYWdlclZhbGlkYXRpb24pfSxvPy52YWx1ZS52YWxpZGF0ZU9uSW5wdXREZWxheT8/bj8udmFsdWUudmFsaWRhdGVPbklucHV0RGVsYXk/PzApO3JldHVybntpZDpOKCgpPT5lPy5pZD8/cz8udmFsdWUpLG5hbWU6TigoKT0+ZT8ubmFtZT8/bz8udmFsdWUubmFtZSksc2l6ZTpOKCgpPT5lPy5zaXplPz9vPy52YWx1ZS5zaXplKSxjb2xvcjpOKCgpPT5vPy52YWx1ZS5lcnJvcj8iZXJyb3IiOmU/LmNvbG9yKSxoaWdobGlnaHQ6TigoKT0+bz8udmFsdWUuZXJyb3I/ITA6ZT8uaGlnaGxpZ2h0KSxkaXNhYmxlZDpOKCgpPT5uPy52YWx1ZS5kaXNhYmxlZHx8ZT8uZGlzYWJsZWQpLGVtaXRGb3JtQmx1cjphLGVtaXRGb3JtSW5wdXQ6YyxlbWl0Rm9ybUNoYW5nZTp1LGVtaXRGb3JtRm9jdXM6bCxhcmlhQXR0cnM6TigoKT0+e2lmKCFvPy52YWx1ZSlyZXR1cm47Y29uc3QgZj1bImVycm9yIiwiaGludCIsImRlc2NyaXB0aW9uIiwiaGVscCJdLmZpbHRlcihwPT5vPy52YWx1ZT8uW3BdKS5tYXAocD0+YCR7bz8udmFsdWUuYXJpYUlkfS0ke3B9YCl8fFtdLGQ9eyJhcmlhLWludmFsaWQiOiEhbz8udmFsdWUuZXJyb3J9O3JldHVybiBmLmxlbmd0aD4wJiYoZFsiYXJpYS1kZXNjcmliZWRieSJdPWYuam9pbigiICIpKSxkfSl9fWNvbnN0IHdMPVsiYWN0aXZlIiwiYWN0aXZlQ2xhc3MiLCJhcmlhQ3VycmVudFZhbHVlIiwiYXMiLCJkaXNhYmxlZCIsImRvd25sb2FkIiwiZXhhY3QiLCJleGFjdEFjdGl2ZUNsYXNzIiwiZXhhY3RIYXNoIiwiZXhhY3RRdWVyeSIsImV4dGVybmFsIiwiZm9ybSIsImZvcm1hY3Rpb24iLCJmb3JtZW5jdHlwZSIsImZvcm1tZXRob2QiLCJmb3Jtbm92YWxpZGF0ZSIsImZvcm10YXJnZXQiLCJocmVmIiwiaHJlZmxhbmciLCJpbmFjdGl2ZUNsYXNzIiwibWVkaWEiLCJub1ByZWZldGNoIiwibm9SZWwiLCJvbkNsaWNrIiwicGluZyIsInByZWZldGNoIiwicHJlZmV0Y2hPbiIsInByZWZldGNoZWRDbGFzcyIsInJlZmVycmVycG9saWN5IiwicmVsIiwicmVwbGFjZSIsInRhcmdldCIsInRpdGxlIiwidG8iLCJ0cmFpbGluZ1NsYXNoIiwidHlwZSIsInZpZXdUcmFuc2l0aW9uIl07ZnVuY3Rpb24gX0woZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQuZmlsdGVyKHM9PnMuc3RhcnRzV2l0aCgiYXJpYS0iKSkscj10LmZpbHRlcihzPT5zLnN0YXJ0c1dpdGgoImRhdGEtIikpLG89Wy4uLndMLC4uLm4sLi4ucl07cmV0dXJuIFZyKGUsLi4ubyl9ZnVuY3Rpb24geEwoZSx0KXtjb25zdCBuPWNEKGUsdCkucmVkdWNlKChzLGkpPT4oaS50eXBlPT09ImFkZGVkIiYmcy5hZGQoaS5rZXkpLHMpLG5ldyBTZXQpLHI9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW3NdKT0+IW4uaGFzKHMpKSksbz1PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbc10pPT4hbi5oYXMocykpKTtyZXR1cm4gSWwocixvKX1hc3luYyBmdW5jdGlvbiBTTChlLHQpe3JldHVybiBhd2FpdCBrTCh0KS5jYXRjaChyPT4oe3dpZHRoOjAsaGVpZ2h0OjAscmF0aW86MH0pKX1hc3luYyBmdW5jdGlvbiBrTChlKXtpZih0eXBlb2YgSW1hZ2U+InUiKXRocm93IG5ldyBUeXBlRXJyb3IoIkltYWdlIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4gbmV3IFByb21pc2UoKHQsbik9Pntjb25zdCByPW5ldyBJbWFnZTtyLm9ubG9hZD0oKT0+e2NvbnN0IG89e3dpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0LHJhdGlvOnIud2lkdGgvci5oZWlnaHR9O3Qobyl9LHIub25lcnJvcj1vPT5uKG8pLHIuc3JjPWV9KX1mdW5jdGlvbiB3aChlKXtyZXR1cm4odD0+dCE9PXZvaWQgMD9lW3RdfHx0OmUubWlzc2luZ1ZhbHVlKX1mdW5jdGlvbiBFTChlPXt9KXtjb25zdCB0PWUuZm9ybWF0dGVyLG49ZS5rZXlNYXAmJnR5cGVvZiBlLmtleU1hcCE9ImZ1bmN0aW9uIj93aChlLmtleU1hcCk6ZS5rZXlNYXAscj17fTtmb3IoY29uc3QgbyBpbiBlLnZhbHVlTWFwKXtjb25zdCBzPW8saT1lLnZhbHVlTWFwW3NdO3Jbc109dHlwZW9mIGk9PSJvYmplY3QiP3doKGkpOml9cmV0dXJuIG89Pntjb25zdCBzPVtdO2Zvcihjb25zdCBpIGluIG8pe2NvbnN0IGE9aTtpZih0eXBlb2Ygb1thXT4idSIpY29udGludWU7Y29uc3QgbD10eXBlb2YgclthXT09ImZ1bmN0aW9uIj9yW2FdKG9bYV0pOm9bYV07cy5wdXNoKFtuP24oYSk6YSxsXSl9cmV0dXJuIHQ/cy5tYXAoaT0+dCguLi5pKSkuam9pbihlLmpvaW5XaXRoPz8iJiIpOm5ldyBVUkxTZWFyY2hQYXJhbXMocykudG9TdHJpbmcoKX19ZnVuY3Rpb24gVEwoZT0iIil7aWYoZT09PXZvaWQgMHx8IWUubGVuZ3RoKXJldHVybltdO2NvbnN0IHQ9bmV3IFNldDtmb3IoY29uc3QgbiBvZiBlLnNwbGl0KCIgIikpe2NvbnN0IHI9TnVtYmVyLnBhcnNlSW50KG4ucmVwbGFjZSgieCIsIiIpKTtyJiZ0LmFkZChyKX1yZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBDTChlKXtpZihlLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJgZGVuc2l0aWVzYCBtdXN0IG5vdCBiZSBlbXB0eSwgY29uZmlndXJlIHRvIGAxYCB0byByZW5kZXIgcmVndWxhciBzaXplIG9ubHkgKERQUiAxLjApIil9ZnVuY3Rpb24gUHMoZT0iIil7aWYodHlwZW9mIGU9PSJudW1iZXIiKXJldHVybiBlO2lmKHR5cGVvZiBlPT0ic3RyaW5nIiYmZS5yZXBsYWNlKCJweCIsIiIpLm1hdGNoKC9eXGQrJC9nKSlyZXR1cm4gTnVtYmVyLnBhcnNlSW50KGUsMTApfWZ1bmN0aW9uIEFMKGUpe2NvbnN0IHQ9e307aWYodHlwZW9mIGU9PSJzdHJpbmciKWZvcihjb25zdCBuIG9mIGUuc3BsaXQoL1tccyxdKy8pLmZpbHRlcihyPT5yKSl7Y29uc3Qgcj1uLnNwbGl0KCI6Iik7ci5sZW5ndGghPT0yP3RbIjFweCJdPXJbMF0udHJpbSgpOnRbclswXS50cmltKCldPXJbMV0udHJpbSgpfWVsc2UgT2JqZWN0LmFzc2lnbih0LGUpO3JldHVybiB0fWZ1bmN0aW9uIE9MKGUpe2NvbnN0IHQ9e29wdGlvbnM6ZX0sbj0obyxzPXt9KT0+ZXcodCxvLHMpLHI9KChvLHMsaSk9Pm4obyxtbih7bW9kaWZpZXJzOnN9LGkpKS51cmwpO2Zvcihjb25zdCBvIGluIGUucHJlc2V0cylyW29dPSgocyxpLGEpPT5yKHMsaSx7Li4uZS5wcmVzZXRzW29dLC4uLmF9KSk7cmV0dXJuIHIub3B0aW9ucz1lLHIuZ2V0SW1hZ2U9bixyLmdldE1ldGE9KChvLHMpPT5QTCh0LG8scykpLHIuZ2V0U2l6ZXM9KChvLHMpPT5STCh0LG8scykpLHQuJGltZz1yLHJ9YXN5bmMgZnVuY3Rpb24gUEwoZSx0LG4pe2NvbnN0IHI9ZXcoZSx0LHsuLi5ufSk7cmV0dXJuIHR5cGVvZiByLmdldE1ldGE9PSJmdW5jdGlvbiI/YXdhaXQgci5nZXRNZXRhKCk6YXdhaXQgU0woZSxyLnVybCl9ZnVuY3Rpb24gZXcoZSx0LG4pe2lmKHQmJnR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnB1dCBtdXN0IGJlIGEgc3RyaW5nIChyZWNlaXZlZCAke3R5cGVvZiB0fTogJHtKU09OLnN0cmluZ2lmeSh0KX0pYCk7aWYoIXR8fHQuc3RhcnRzV2l0aCgiZGF0YToiKSlyZXR1cm57dXJsOnR9O2NvbnN0e3NldHVwOnIsZGVmYXVsdHM6b309SUwoZSxuLnByb3ZpZGVyfHxlLm9wdGlvbnMucHJvdmlkZXIpLHM9cigpLGk9dHcoZSxuLnByZXNldCk7aWYodD1Obih0KT90OlpTKHQpLCFzLnN1cHBvcnRzQWxpYXMpe2Zvcihjb25zdCBjIGluIGUub3B0aW9ucy5hbGlhcylpZih0LnN0YXJ0c1dpdGgoYykpe2NvbnN0IGY9ZS5vcHRpb25zLmFsaWFzW2NdO2YmJih0PUJpKGYsdC5zbGljZShjLmxlbmd0aCkpKX19aWYocy52YWxpZGF0ZURvbWFpbnMmJk5uKHQpKXtjb25zdCBjPUNsKHQpLmhvc3Q7aWYoIWUub3B0aW9ucy5kb21haW5zLmZpbmQoZj0+Zj09PWMpKXJldHVybnt1cmw6dH19Y29uc3QgYT1tbihuLGksbyksbD17Li4uYSxtb2RpZmllcnM6ey4uLmEubW9kaWZpZXJzLHdpZHRoOmEubW9kaWZpZXJzPy53aWR0aD9QcyhhLm1vZGlmaWVycy53aWR0aCk6dm9pZCAwLGhlaWdodDphLm1vZGlmaWVycz8uaGVpZ2h0P1BzKGEubW9kaWZpZXJzLmhlaWdodCk6dm9pZCAwfX0sdT1zLmdldEltYWdlKHQsbCxlKTtyZXR1cm4gdS5mb3JtYXR8fD1sLm1vZGlmaWVycy5mb3JtYXR8fCIiLHV9ZnVuY3Rpb24gSUwoZSx0KXtjb25zdCBuPWUub3B0aW9ucy5wcm92aWRlcnNbdF07aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByb3ZpZGVyOiAiK3QpO3JldHVybiBufWZ1bmN0aW9uIHR3KGUsdCl7aWYoIXQpcmV0dXJue307aWYoIWUub3B0aW9ucy5wcmVzZXRzW3RdKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmVzZXQ6ICIrdCk7cmV0dXJuIGUub3B0aW9ucy5wcmVzZXRzW3RdfWZ1bmN0aW9uIFJMKGUsdCxuKXtjb25zdCByPXR3KGUsbi5wcmVzZXQpLG89bW4obixyKSxzPVBzKG8ubW9kaWZpZXJzPy53aWR0aCksaT1QcyhvLm1vZGlmaWVycz8uaGVpZ2h0KSxhPW8uc2l6ZXM/QUwoby5zaXplcyk6e30sbD1vLmRlbnNpdGllcz8udHJpbSgpLHU9bD9UTChsKTplLm9wdGlvbnMuZGVuc2l0aWVzO0NMKHUpO2NvbnN0IGM9cyYmaT9pL3M6MCxmPVtdLGQ9W107aWYoT2JqZWN0LmtleXMoYSkubGVuZ3RoPj0xKXtmb3IoY29uc3QgdyBpbiBhKXtjb25zdCB2PV9oKHcsU3RyaW5nKGFbd10pLGksYyxlKTtpZih2IT09dm9pZCAwKXtmLnB1c2goe3NpemU6di5zaXplLHNjcmVlbk1heFdpZHRoOnYuc2NyZWVuTWF4V2lkdGgsbWVkaWE6YChtYXgtd2lkdGg6ICR7di5zY3JlZW5NYXhXaWR0aH1weClgfSk7Zm9yKGNvbnN0IGggb2YgdSlkLnB1c2goe3dpZHRoOnYuX2NXaWR0aCpoLHNyYzp4aChlLHQsbix2LGgpfSl9fU5MKGYpfWVsc2UgZm9yKGNvbnN0IHcgb2YgdSl7Y29uc3Qgdj1PYmplY3Qua2V5cyhhKVswXTtsZXQgaD12P19oKHYsU3RyaW5nKGFbdl0pLGksYyxlKTp2b2lkIDA7aD09PXZvaWQgMCYmKGg9e3NpemU6IiIsc2NyZWVuTWF4V2lkdGg6MCxfY1dpZHRoOm4ubW9kaWZpZXJzPy53aWR0aCxfY0hlaWdodDpuLm1vZGlmaWVycz8uaGVpZ2h0fSksZC5wdXNoKHt3aWR0aDp3LHNyYzp4aChlLHQsbixoLHcpfSl9REwoZCk7Y29uc3QgcD1kW2QubGVuZ3RoLTFdLG09Zi5sZW5ndGg/Zi5tYXAodz0+YCR7dy5tZWRpYT93Lm1lZGlhKyIgIjoiIn0ke3cuc2l6ZX1gKS5qb2luKCIsICIpOnZvaWQgMCx5PW0/InciOiJ4IixfPWQubWFwKHc9PmAke3cuc3JjfSAke3cud2lkdGh9JHt5fWApLmpvaW4oIiwgIik7cmV0dXJue3NpemVzOm0sc3Jjc2V0Ol8sc3JjOnA/LnNyY319ZnVuY3Rpb24gX2goZSx0LG4scixvKXtjb25zdCBzPW8ub3B0aW9ucy5zY3JlZW5zJiZvLm9wdGlvbnMuc2NyZWVuc1tlXXx8TnVtYmVyLnBhcnNlSW50KGUpLGk9dC5lbmRzV2l0aCgidnciKTtpZighaSYmL15cZCskLy50ZXN0KHQpJiYodD10KyJweCIpLCFpJiYhdC5lbmRzV2l0aCgicHgiKSlyZXR1cm47bGV0IGE9TnVtYmVyLnBhcnNlSW50KHQpO2lmKCFzfHwhYSlyZXR1cm47aSYmKGE9TWF0aC5yb3VuZChhLzEwMCpzKSk7Y29uc3QgbD1yP01hdGgucm91bmQoYSpyKTpuO3JldHVybntzaXplOnQsc2NyZWVuTWF4V2lkdGg6cyxfY1dpZHRoOmEsX2NIZWlnaHQ6bH19ZnVuY3Rpb24geGgoZSx0LG4scixvKXtyZXR1cm4gZS4kaW1nKHQsey4uLm4ubW9kaWZpZXJzLHdpZHRoOnIuX2NXaWR0aD9yLl9jV2lkdGgqbzp2b2lkIDAsaGVpZ2h0OnIuX2NIZWlnaHQ/ci5fY0hlaWdodCpvOnZvaWQgMH0sbil9ZnVuY3Rpb24gTkwoZSl7ZS5zb3J0KChuLHIpPT5uLnNjcmVlbk1heFdpZHRoLXIuc2NyZWVuTWF4V2lkdGgpO2xldCB0PW51bGw7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pe2NvbnN0IHI9ZVtuXTtyLm1lZGlhPT09dCYmZS5zcGxpY2UobiwxKSx0PXIubWVkaWF9Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXS5tZWRpYT1lW24rMV0/Lm1lZGlhfHwiIn1mdW5jdGlvbiBETChlKXtlLnNvcnQoKG4scik9Pm4ud2lkdGgtci53aWR0aCk7bGV0IHQ9bnVsbDtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgcj1lW25dO3Iud2lkdGg9PT10JiZlLnNwbGljZShuLDEpLHQ9ci53aWR0aH19ZnVuY3Rpb24gTEwoZSl7bGV0IHQ7cmV0dXJuKCk9PnR8fCh0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTplLHQpfWNvbnN0ICRMPUVMKHtrZXlNYXA6e3dpZHRoOiJ3IixoZWlnaHQ6ImgiLGRwcjoiZHByIixmaXQ6ImZpdCIsZ3Jhdml0eToiZyIscXVhbGl0eToicSIsZm9ybWF0OiJmIixzaGFycGVuOiJzaGFycGVuIn0sdmFsdWVNYXA6e2ZpdDp7Y292ZXI6ImNvdmVyIixjb250YWluOiJjb250YWluIixmaWxsOiJzY2FsZS1kb3duIixvdXRzaWRlOiJjcm9wIixpbnNpZGU6InBhZCJ9LGdyYXZpdHk6e2F1dG86ImF1dG8iLHNpZGU6InNpZGUifX0sam9pbldpdGg6IiwiLGZvcm1hdHRlcjooZSx0KT0+RXkoZSx0KX0pLE1MPXt9LEJMPUxMKHtnZXRJbWFnZTooZSx7bW9kaWZpZXJzOnQsYmFzZVVSTDpuPSIvIn0pPT57Y29uc3Qgcj17Li4uTUwsLi4udH0sbz0kTChyKTtyZXR1cm57dXJsOm8/QmkobiwiY2RuLWNnaS9pbWFnZSIsbyxlKTplfX19KSxxTD17c2NyZWVuczp7c206NjQwLG1kOjc2OCxsZzoxMDI0LHhsOjEyODAsIjJ4bCI6MTUzNn0scHJlc2V0czp7fSxwcm92aWRlcjoiY2xvdWRmbGFyZSIsZG9tYWluczpbXSxhbGlhczp7fSxkZW5zaXRpZXM6WzEsMl0sZm9ybWF0Olsid2VicCJdLHByb3ZpZGVyOiJjbG91ZGZsYXJlIixwcm92aWRlcnM6e2Nsb3VkZmxhcmU6e3NldHVwOkJMLGRlZmF1bHRzOnt9fX19LG53PWU9Pntjb25zdCB0PWZvKCksbj1CZSgpO3JldHVybiBuLiRpbWd8fG4uX2ltZ3x8KG4uX2ltZz1PTCh7Li4ucUwsZXZlbnQ6bi5zc3JDb250ZXh0Py5ldmVudCxudXh0OntiYXNlVVJMOnQuYXBwLmJhc2VVUkx9LHJ1bnRpbWVDb25maWc6dH0pKX07ZnVuY3Rpb24gRkwoZSl7cGVyZm9ybWFuY2U/Lm1hcms/LigibWFya19mZWF0dXJlX3VzYWdlIix7ZGV0YWlsOntmZWF0dXJlOmV9fSl9Y29uc3Qgekw9ZT0+e2NvbnN0IHQ9bncoKSxuPU4oKCk9Pih7cHJvdmlkZXI6ZS5wcm92aWRlcixwcmVzZXQ6ZS5wcmVzZXR9KSkscj1OKCgpPT4oe3dpZHRoOlBzKGUud2lkdGgpLGhlaWdodDpQcyhlLmhlaWdodCksY3Jvc3NvcmlnaW46ZS5jcm9zc29yaWdpbj09PSEwPyJhbm9ueW1vdXMiOmUuY3Jvc3NvcmlnaW58fHZvaWQgMCxub25jZTplLm5vbmNlfSkpLG89TigoKT0+KHsuLi5lLm1vZGlmaWVycyx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodCxmb3JtYXQ6ZS5mb3JtYXQscXVhbGl0eTplLnF1YWxpdHl8fHQub3B0aW9ucy5xdWFsaXR5LGJhY2tncm91bmQ6ZS5iYWNrZ3JvdW5kLGZpdDplLmZpdH0pKTtyZXR1cm57cHJvdmlkZXJPcHRpb25zOm4sbm9ybWFsaXplZEF0dHJzOnIsaW1hZ2VNb2RpZmllcnM6b319LGpMPVsic3JjIl0sVkw9e19fbmFtZToiTnV4dEltZyIscHJvcHM6e2N1c3RvbTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpbQm9vbGVhbixTdHJpbmcsTnVtYmVyLEFycmF5XSxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXJDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNyYzp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGZvcm1hdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHF1YWxpdHk6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxiYWNrZ3JvdW5kOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZml0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kaWZpZXJzOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scHJlc2V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJvdmlkZXI6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxkZW5zaXRpZXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVsb2FkOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHdpZHRoOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0saGVpZ2h0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY3Jvc3NvcmlnaW46e3R5cGU6W1N0cmluZyxCb29sZWFuXSxyZXF1aXJlZDohMX0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJsb2FkIiwiZXJyb3IiXSxzZXR1cChlLHtleHBvc2U6dCxlbWl0Om59KXtjb25zdCByPWUsbz1uLHM9bncoKSx7cHJvdmlkZXJPcHRpb25zOmksbm9ybWFsaXplZEF0dHJzOmEsaW1hZ2VNb2RpZmllcnM6bH09ekwociksdT1OKCgpPT5zLmdldFNpemVzKHIuc3JjLHsuLi5pLnZhbHVlLHNpemVzOnIuc2l6ZXMsZGVuc2l0aWVzOnIuZGVuc2l0aWVzLG1vZGlmaWVyczpsLnZhbHVlfSkpLGM9RyghMSksZj1veCgpLGQ9TigoKT0+KHsuLi5hLnZhbHVlLCJkYXRhLW51eHQtaW1nIjoiIiwuLi4hci5wbGFjZWhvbGRlcnx8Yy52YWx1ZT97c2l6ZXM6dS52YWx1ZS5zaXplcyxzcmNzZXQ6dS52YWx1ZS5zcmNzZXR9Ont9LC4uLmZ9KSkscD1OKCgpPT57aWYoYy52YWx1ZSlyZXR1cm4hMTtjb25zdCB2PXIucGxhY2Vob2xkZXI9PT0iIj9bMTAsMTBdOnIucGxhY2Vob2xkZXI7aWYoIXYpcmV0dXJuITE7aWYodHlwZW9mIHY9PSJzdHJpbmciKXJldHVybiB2O2NvbnN0W2g9MTAsYj1oLHg9NTAsUz0zXT1BcnJheS5pc0FycmF5KHYpP3Y6dHlwZW9mIHY9PSJudW1iZXIiP1t2XTpbXTtyZXR1cm4gcyhyLnNyYyx7Li4ubC52YWx1ZSx3aWR0aDpoLGhlaWdodDpiLHF1YWxpdHk6eCxibHVyOlN9LGkudmFsdWUpfSksbT1OKCgpPT5yLnNpemVzP3UudmFsdWUuc3JjOnMoci5zcmMsbC52YWx1ZSxpLnZhbHVlKSkseT1OKCgpPT5wLnZhbHVlfHxtLnZhbHVlKSxfPUJlKCkuaXNIeWRyYXRpbmcsdz1TcygiaW1nRWwiKTtyZXR1cm4gdCh7aW1nRWw6d30pLG90KCgpPT57aWYocC52YWx1ZXx8ci5jdXN0b20pe2NvbnN0IHY9bmV3IEltYWdlO20udmFsdWUmJih2LnNyYz1tLnZhbHVlKSxyLnNpemVzJiYodi5zaXplcz11LnZhbHVlLnNpemVzfHwiIix2LnNyY3NldD11LnZhbHVlLnNyY3NldCksdi5kZWNvZGU/di5kZWNvZGUoKS50aGVuKCgpPT57Yy52YWx1ZT0hMCxvKCJsb2FkIixuZXcgRXZlbnQoImxvYWQiKSl9KS5jYXRjaChoPT57bygiZXJyb3IiLGgpfSk6KHYub25sb2FkPWg9PntjLnZhbHVlPSEwLG8oImxvYWQiLGgpfSx2Lm9uZXJyb3I9aD0+e28oImVycm9yIixoKX0pLEZMKCJudXh0LWltYWdlIik7cmV0dXJufXcudmFsdWUmJih3LnZhbHVlLmNvbXBsZXRlJiZfJiYody52YWx1ZS5nZXRBdHRyaWJ1dGUoImRhdGEtZXJyb3IiKT9vKCJlcnJvciIsbmV3IEV2ZW50KCJlcnJvciIpKTpvKCJsb2FkIixuZXcgRXZlbnQoImxvYWQiKSkpLHcudmFsdWUub25sb2FkPXY9PntvKCJsb2FkIix2KX0sdy52YWx1ZS5vbmVycm9yPXY9PntvKCJlcnJvciIsdil9KX0pLCh2LGgpPT5lLmN1c3RvbT9VKHYuJHNsb3RzLCJkZWZhdWx0Iix4dChmZSh7a2V5OjF9LHtpbWdBdHRyczpkLnZhbHVlLGlzTG9hZGVkOmMudmFsdWUsc3JjOnkudmFsdWV9KSkpOihSKCksX2UoImltZyIsZmUoe2tleTowLHJlZl9rZXk6ImltZ0VsIixyZWY6dyxjbGFzczpwLnZhbHVlP2UucGxhY2Vob2xkZXJDbGFzczp2b2lkIDB9LGQudmFsdWUse3NyYzp5LnZhbHVlfSksbnVsbCwxNixqTCkpfX0sVUw9T2JqZWN0LmFzc2lnbihWTCx7X19uYW1lOiJOdXh0SW1nIn0pLEhMPXtzbG90czp7cm9vdDoiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wIHNlbGVjdC1ub25lIHJvdW5kZWQtZnVsbCBhbGlnbi1taWRkbGUgYmctZWxldmF0ZWQiLGltYWdlOiJoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtW2luaGVyaXRdIG9iamVjdC1jb3ZlciIsZmFsbGJhY2s6ImZvbnQtbWVkaXVtIHRleHQtbXV0ZWQgdHJ1bmNhdGUiLGljb246InRleHQtbXV0ZWQgc2hyaW5rLTAifSx2YXJpYW50czp7c2l6ZTp7IjN4cyI6e3Jvb3Q6InNpemUtNCB0ZXh0LVs4cHhdIn0sIjJ4cyI6e3Jvb3Q6InNpemUtNSB0ZXh0LVsxMHB4XSJ9LHhzOntyb290OiJzaXplLTYgdGV4dC14cyJ9LHNtOntyb290OiJzaXplLTcgdGV4dC1zbSJ9LG1kOntyb290OiJzaXplLTggdGV4dC1iYXNlIn0sbGc6e3Jvb3Q6InNpemUtOSB0ZXh0LWxnIn0seGw6e3Jvb3Q6InNpemUtMTAgdGV4dC14bCJ9LCIyeGwiOntyb290OiJzaXplLTExIHRleHQtWzIycHhdIn0sIjN4bCI6e3Jvb3Q6InNpemUtMTIgdGV4dC0yeGwifX19LGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQifX0sVW89T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVQXZhdGFyIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3JjOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWx0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0ZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjaGlwOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHN0eWxlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPU4oKCk9PnR5cGVvZiB0LmFzPT0ic3RyaW5nInx8dHlwZW9mIHQuYXM/LnJlbmRlcj09ImZ1bmN0aW9uIj97cm9vdDp0LmFzfTptbih0LmFzLHtyb290OiJzcGFuIn0pKSxyPU4oKCk9PnQudGV4dHx8KHQuYWx0fHwiIikuc3BsaXQoIiAiKS5tYXAoZD0+ZC5jaGFyQXQoMCkpLmpvaW4oIiIpLnN1YnN0cmluZygwLDIpKSxvPVN0KCkscz1MbigiYXZhdGFyIix0KSx7c2l6ZTppfT1EMCh0KSxhPU4oKCk9PnV0KHtleHRlbmQ6dXQoSEwpLC4uLm8udWk/LmF2YXRhcnx8e319KSh7c2l6ZTppLnZhbHVlfSkpLGw9TigoKT0+YS52YWx1ZS5yb290KHtjbGFzczpbcy52YWx1ZT8ucm9vdCx0LmNsYXNzXX0pKSx1PU4oKCk9Pntjb25zdCBkPWwudmFsdWUuc3BsaXQoIiAiKS5maW5kKHA9Pi9ec2l6ZS1cZCskLy50ZXN0KHApKTtpZihkKXtjb25zdCBwPU51bWJlci5wYXJzZUZsb2F0KGQuc3BsaXQoIi0iKVsxXT8/IiIpO2lmKCFOdW1iZXIuaXNOYU4ocCkpcmV0dXJuIHAqNH1yZXR1cm4gbnVsbH0pLGM9RyghMSk7UGUoKCk9PnQuc3JjLCgpPT57Yy52YWx1ZSYmKGMudmFsdWU9ITEpfSk7ZnVuY3Rpb24gZigpe2MudmFsdWU9ITB9cmV0dXJuKGQscCk9PihSKCksJChGbih0LmNoaXA/R2w6ZyhNZSkpLGZlKHthczpuLnZhbHVlLnJvb3R9LHQuY2hpcD90eXBlb2YgdC5jaGlwPT0ib2JqZWN0Ij97aW5zZXQ6ITAsLi4udC5jaGlwfTp7aW5zZXQ6ITB9Ont9LHsiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6bC52YWx1ZSxzdHlsZTp0LnN0eWxlfSkse2RlZmF1bHQ6TSgoKT0+W2Uuc3JjJiYhYy52YWx1ZT8oUigpLCQoRm4obi52YWx1ZS5pbWd8fGcoVUwpKSxmZSh7a2V5OjAsc3JjOmUuc3JjLGFsdDplLmFsdCx3aWR0aDp1LnZhbHVlLGhlaWdodDp1LnZhbHVlfSxkLiRhdHRycyx7ImRhdGEtc2xvdCI6ImltYWdlIixjbGFzczphLnZhbHVlLmltYWdlKHtjbGFzczpnKHMpPy5pbWFnZX0pLG9uRXJyb3I6Zn0pLG51bGwsMTYsWyJzcmMiLCJhbHQiLCJ3aWR0aCIsImhlaWdodCIsImNsYXNzIl0pKTooUigpLCQoZyhqbykseHQoZmUoe2tleToxfSxkLiRhdHRycykpLHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2UuaWNvbj8oUigpLCQoX24se2tleTowLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczp1ZShhLnZhbHVlLmljb24oe2NsYXNzOmcocyk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJmYWxsYmFjayIsY2xhc3M6dWUoYS52YWx1ZS5mYWxsYmFjayh7Y2xhc3M6ZyhzKT8uZmFsbGJhY2t9KSl9LHJ0KHIudmFsdWV8fCLCoCIpLDMpKV0pXSksXzozfSwxNikpXSksXzozfSwxNixbImFzIiwiY2xhc3MiLCJzdHlsZSJdKSl9fSksZWY9e19fbmFtZToiVUxpbmtCYXNlIixwcm9wczp7YXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hdmlnYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSx0YXJnZXQ6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlzRXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtmdW5jdGlvbiBuKHIpe2lmKHQuZGlzYWJsZWQpe3Iuc3RvcFByb3BhZ2F0aW9uKCksci5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1pZih0Lm9uQ2xpY2spZm9yKGNvbnN0IG8gb2YgQXJyYXkuaXNBcnJheSh0Lm9uQ2xpY2spP3Qub25DbGljazpbdC5vbkNsaWNrXSlvKHIpO3QuaHJlZiYmdC5uYXZpZ2F0ZSYmIXQuaXNFeHRlcm5hbCYmdC5uYXZpZ2F0ZShyKX1yZXR1cm4ocixvKT0+KFIoKSwkKGcoTWUpLGZlKGUuaHJlZj97YXM6ImEiLGhyZWY6ZS5kaXNhYmxlZD92b2lkIDA6ZS5ocmVmLCJhcmlhLWRpc2FibGVkIjplLmRpc2FibGVkPyJ0cnVlIjp2b2lkIDAscm9sZTplLmRpc2FibGVkPyJsaW5rIjp2b2lkIDAsdGFiaW5kZXg6ZS5kaXNhYmxlZD8tMTp2b2lkIDB9OmUuYXM9PT0iYnV0dG9uIj97YXM6ZS5hcyx0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkfTp7YXM6ZS5hc30se3JlbDplLnJlbCx0YXJnZXQ6ZS50YXJnZXQsb25DbGljazpufSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJyZWwiLCJ0YXJnZXQiXSkpfX0sV0w9e2Jhc2U6ImZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5Iix2YXJpYW50czp7YWN0aXZlOnt0cnVlOiJ0ZXh0LXByaW1hcnkiLGZhbHNlOiJ0ZXh0LW11dGVkIn0sZGlzYWJsZWQ6e3RydWU6ImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTc1In19LGNvbXBvdW5kVmFyaWFudHM6W3thY3RpdmU6ITEsZGlzYWJsZWQ6ITEsY2xhc3M6WyJob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfV19LEdMPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUxpbmsiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZXhhY3Q6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3RRdWVyeTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxleGFjdEhhc2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saW5hY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGN1c3RvbTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyYXc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0YXJnZXQ6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sbm9SZWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJlZmV0Y2hlZENsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJlZmV0Y2hPbjp7dHlwZTpbU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITF9LG5vUHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdTbGFzaDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXhhY3RBY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFyaWFDdXJyZW50VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6InBhZ2UifSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXBsYWNlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1BbCgpLHI9U3QoKSxvPUJlKCkscz1wbyh6UCh0LCJhcyIsInR5cGUiLCJkaXNhYmxlZCIsImFjdGl2ZSIsImV4YWN0IiwiZXhhY3RRdWVyeSIsImV4YWN0SGFzaCIsImFjdGl2ZUNsYXNzIiwiaW5hY3RpdmVDbGFzcyIsInRvIiwiaHJlZiIsInJhdyIsImN1c3RvbSIsImNsYXNzIikpLGk9TigoKT0+dXQoe2V4dGVuZDp1dChXTCksLi4ubW4oe3ZhcmlhbnRzOnthY3RpdmU6e3RydWU6cmwoci51aT8ubGluaz8udmFyaWFudHM/LmFjdGl2ZT8udHJ1ZSx0LmFjdGl2ZUNsYXNzKSxmYWxzZTpybChyLnVpPy5saW5rPy52YXJpYW50cz8uYWN0aXZlPy5mYWxzZSx0LmluYWN0aXZlQ2xhc3MpfX19LHIudWk/Lmxpbmt8fHt9KX0pKSxhPU4oKCk9Pntjb25zdCBkPXQudG8/P3QuaHJlZjtpZighZHx8dHlwZW9mIGQhPSJzdHJpbmcifHx0LmV4dGVybmFsfHxObihkLHthY2NlcHRSZWxhdGl2ZTohMH0pKXJldHVybiBkO2NvbnN0IHA9by4kbG9jYWxlUGF0aDtyZXR1cm4gcD9wKGQpOmR9KSxsPU4oKCk9PiFhLnZhbHVlfHx0LmV4dGVybmFsPyExOnR5cGVvZiBhLnZhbHVlIT0ic3RyaW5nIj8hMDohKE5uKGEudmFsdWUse2FjY2VwdFJlbGF0aXZlOiEwfSl8fHQudGFyZ2V0JiZ0LnRhcmdldCE9PSJfc2VsZiIpKSx1PU4oKCk9PnQubm9SZWw/bnVsbDp0LnJlbD90LnJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIpO2Z1bmN0aW9uIGMoe3JvdXRlOmQsaXNBY3RpdmU6cCxpc0V4YWN0QWN0aXZlOm19PXt9KXtpZih0LmFjdGl2ZSE9PXZvaWQgMClyZXR1cm4gdC5hY3RpdmU7aWYoIWEudmFsdWUpcmV0dXJuITE7aWYodC5leGFjdFF1ZXJ5PT09InBhcnRpYWwiKXtpZigheEwoZC5xdWVyeSxuLnF1ZXJ5KSlyZXR1cm4hMX1lbHNlIGlmKHQuZXhhY3RRdWVyeT09PSEwJiYhSWwoZC5xdWVyeSxuLnF1ZXJ5KSlyZXR1cm4hMTtyZXR1cm4gdC5leGFjdEhhc2gmJmQuaGFzaCE9PW4uaGFzaD8hMTohISh0LmV4YWN0JiZtfHwhdC5leGFjdCYmcCl9ZnVuY3Rpb24gZih7cm91dGU6ZCxpc0FjdGl2ZTpwLGlzRXhhY3RBY3RpdmU6bX09e30pe2NvbnN0IHk9Yyh7cm91dGU6ZCxpc0FjdGl2ZTpwLGlzRXhhY3RBY3RpdmU6bX0pO3JldHVybiB0LnJhdz9bdC5jbGFzcyx5P3QuYWN0aXZlQ2xhc3M6dC5pbmFjdGl2ZUNsYXNzXTppLnZhbHVlKHtjbGFzczp0LmNsYXNzLGFjdGl2ZTp5LGRpc2FibGVkOnQuZGlzYWJsZWR9KX1yZXR1cm4oZCxwKT0+e2NvbnN0IG09Y0M7cmV0dXJuIGwudmFsdWU/KFIoKSwkKG0sZmUoe2tleTowfSxnKHMpLHt0bzphLnZhbHVlLGN1c3RvbToiIn0pLHtkZWZhdWx0Ok0oKHtocmVmOnksbmF2aWdhdGU6Xyxyb3V0ZTp3LGlzQWN0aXZlOnYsaXNFeGFjdEFjdGl2ZTpoLC4uLmJ9KT0+W2UuY3VzdG9tPyhSKCksJChnKGpvKSx7a2V5OjB9LHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix4dChNdCh7Li4uZC4kYXR0cnMsLi4uZS5leGFjdCYmaD97ImFyaWEtY3VycmVudCI6dC5hcmlhQ3VycmVudFZhbHVlfTp7fSxhczplLmFzLHR5cGU6ZS50eXBlLGRpc2FibGVkOmUuZGlzYWJsZWQsaHJlZjp5LG5hdmlnYXRlOl8scmVsOmIucmVsLHRhcmdldDpiLnRhcmdldCxpc0V4dGVybmFsOmIuaXNFeHRlcm5hbCxhY3RpdmU6Yyh7cm91dGU6dyxpc0FjdGl2ZTp2LGlzRXhhY3RBY3RpdmU6aH0pfSkpKV0pLF86Mn0sMTAyNCkpOihSKCksJChlZixmZSh7a2V5OjF9LHsuLi5kLiRhdHRycywuLi5lLmV4YWN0JiZoP3siYXJpYS1jdXJyZW50Ijp0LmFyaWFDdXJyZW50VmFsdWV9Ont9LGFzOmUuYXMsdHlwZTplLnR5cGUsZGlzYWJsZWQ6ZS5kaXNhYmxlZCxocmVmOnksbmF2aWdhdGU6XyxyZWw6Yi5yZWwsdGFyZ2V0OmIudGFyZ2V0LGlzRXh0ZXJuYWw6Yi5pc0V4dGVybmFsfSx7Y2xhc3M6Zih7cm91dGU6dyxpc0FjdGl2ZTp2LGlzRXhhY3RBY3RpdmU6aH0pfSkse2RlZmF1bHQ6TSgoKT0+W1UoZC4kc2xvdHMsImRlZmF1bHQiLHthY3RpdmU6Yyh7cm91dGU6dyxpc0FjdGl2ZTp2LGlzRXhhY3RBY3RpdmU6aH0pfSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldKSxfOjN9LDE2LFsidG8iXSkpOmUuY3VzdG9tPyhSKCksJChnKGpvKSx7a2V5OjF9LHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix4dChNdCh7Li4uZC4kYXR0cnMsYXM6ZS5hcyx0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkLC4uLmEudmFsdWU/e2hyZWY6U3RyaW5nKGEudmFsdWUpLHRhcmdldDp0LnRhcmdldCxyZWw6dS52YWx1ZSxpc0V4dGVybmFsOiEwfTp7fSxhY3RpdmU6ZS5hY3RpdmU/PyExfSkpKV0pLF86M30pKTooUigpLCQoZWYsZmUoe2tleToyfSx7Li4uZC4kYXR0cnMsYXM6ZS5hcyx0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkLC4uLmEudmFsdWU/e2hyZWY6U3RyaW5nKGEudmFsdWUpLHRhcmdldDp0LnRhcmdldCxyZWw6dS52YWx1ZSxpc0V4dGVybmFsOiEwfTp7fX0se2NsYXNzOmYoKX0pLHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmUuYWN0aXZlPz8hMX0pXSksXzozfSwxNixbImNsYXNzIl0pKX19fSksS0w9e3Nsb3RzOntiYXNlOlsicm91bmRlZC1tZCBmb250LW1lZGl1bSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGFyaWEtZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUgYXJpYS1kaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsYWJlbDoidHJ1bmNhdGUiLGxlYWRpbmdJY29uOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1lLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXMtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0iLHZlcnRpY2FsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWItbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtdC1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSJ9LGNvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIiLGdob3N0OiIiLGxpbms6IiJ9LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC14cyBnYXAtMSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbSBnYXAtMS41IixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSJ9LGxnOntiYXNlOiJweC0zIHB5LTIgdGV4dC1zbSBnYXAtMiIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSx4bDp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZSBnYXAtMiIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6InhzIix0cmFpbGluZ0ljb246InNpemUtNiJ9fSxibG9jazp7dHJ1ZTp7YmFzZToidy1mdWxsIGp1c3RpZnktY2VudGVyIix0cmFpbGluZ0ljb246Im1zLWF1dG8ifX0sc3F1YXJlOnt0cnVlOiIifSxsZWFkaW5nOnt0cnVlOiIifSx0cmFpbGluZzp7dHJ1ZToiIn0sbG9hZGluZzp7dHJ1ZToiIn0sYWN0aXZlOnt0cnVlOntiYXNlOiIifSxmYWxzZTp7YmFzZToiIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1wcmltYXJ5IGhvdmVyOmJnLXByaW1hcnkvNzUgYWN0aXZlOmJnLXByaW1hcnkvNzUgZGlzYWJsZWQ6YmctcHJpbWFyeSBhcmlhLWRpc2FibGVkOmJnLXByaW1hcnkgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1zZWNvbmRhcnkgaG92ZXI6Ymctc2Vjb25kYXJ5Lzc1IGFjdGl2ZTpiZy1zZWNvbmRhcnkvNzUgZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5IGFyaWEtZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctc3VjY2VzcyBob3ZlcjpiZy1zdWNjZXNzLzc1IGFjdGl2ZTpiZy1zdWNjZXNzLzc1IGRpc2FibGVkOmJnLXN1Y2Nlc3MgYXJpYS1kaXNhYmxlZDpiZy1zdWNjZXNzIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWluZm8gaG92ZXI6YmctaW5mby83NSBhY3RpdmU6YmctaW5mby83NSBkaXNhYmxlZDpiZy1pbmZvIGFyaWEtZGlzYWJsZWQ6YmctaW5mbyBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy13YXJuaW5nIGhvdmVyOmJnLXdhcm5pbmcvNzUgYWN0aXZlOmJnLXdhcm5pbmcvNzUgZGlzYWJsZWQ6Ymctd2FybmluZyBhcmlhLWRpc2FibGVkOmJnLXdhcm5pbmcgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWVycm9yIGhvdmVyOmJnLWVycm9yLzc1IGFjdGl2ZTpiZy1lcnJvci83NSBkaXNhYmxlZDpiZy1lcnJvciBhcmlhLWRpc2FibGVkOmJnLWVycm9yIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzUwIHRleHQtcHJpbWFyeSBob3ZlcjpiZy1wcmltYXJ5LzEwIGFjdGl2ZTpiZy1wcmltYXJ5LzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAgdGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc2Vjb25kYXJ5LzEwIGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvNTAgdGV4dC1zdWNjZXNzIGhvdmVyOmJnLXN1Y2Nlc3MvMTAgYWN0aXZlOmJnLXN1Y2Nlc3MvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzUwIHRleHQtaW5mbyBob3ZlcjpiZy1pbmZvLzEwIGFjdGl2ZTpiZy1pbmZvLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCB0ZXh0LXdhcm5pbmcgaG92ZXI6Ymctd2FybmluZy8xMCBhY3RpdmU6Ymctd2FybmluZy8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci81MCB0ZXh0LWVycm9yIGhvdmVyOmJnLWVycm9yLzEwIGFjdGl2ZTpiZy1lcnJvci8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgYmctcHJpbWFyeS8xMCBob3ZlcjpiZy1wcmltYXJ5LzE1IGFjdGl2ZTpiZy1wcmltYXJ5LzE1IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXByaW1hcnkvMTUgZGlzYWJsZWQ6YmctcHJpbWFyeS8xMCBhcmlhLWRpc2FibGVkOmJnLXByaW1hcnkvMTAifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IGJnLXNlY29uZGFyeS8xMCBob3ZlcjpiZy1zZWNvbmRhcnkvMTUgYWN0aXZlOmJnLXNlY29uZGFyeS8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1zZWNvbmRhcnkvMTUgZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIGFyaWEtZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1zdWNjZXNzIGJnLXN1Y2Nlc3MvMTAgaG92ZXI6Ymctc3VjY2Vzcy8xNSBhY3RpdmU6Ymctc3VjY2Vzcy8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1zdWNjZXNzLzE1IGRpc2FibGVkOmJnLXN1Y2Nlc3MvMTAgYXJpYS1kaXNhYmxlZDpiZy1zdWNjZXNzLzEwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1pbmZvIGJnLWluZm8vMTAgaG92ZXI6YmctaW5mby8xNSBhY3RpdmU6YmctaW5mby8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1pbmZvLzE1IGRpc2FibGVkOmJnLWluZm8vMTAgYXJpYS1kaXNhYmxlZDpiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC13YXJuaW5nIGJnLXdhcm5pbmcvMTAgaG92ZXI6Ymctd2FybmluZy8xNSBhY3RpdmU6Ymctd2FybmluZy8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy13YXJuaW5nLzE1IGRpc2FibGVkOmJnLXdhcm5pbmcvMTAgYXJpYS1kaXNhYmxlZDpiZy13YXJuaW5nLzEwIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtZXJyb3IgYmctZXJyb3IvMTAgaG92ZXI6YmctZXJyb3IvMTUgYWN0aXZlOmJnLWVycm9yLzE1IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWVycm9yLzE1IGRpc2FibGVkOmJnLWVycm9yLzEwIGFyaWEtZGlzYWJsZWQ6YmctZXJyb3IvMTAifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1IGJnLXByaW1hcnkvMTAgaG92ZXI6YmctcHJpbWFyeS8xNSBhY3RpdmU6YmctcHJpbWFyeS8xNSBkaXNhYmxlZDpiZy1wcmltYXJ5LzEwIGFyaWEtZGlzYWJsZWQ6YmctcHJpbWFyeS8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1IGJnLXNlY29uZGFyeS8xMCBob3ZlcjpiZy1zZWNvbmRhcnkvMTUgYWN0aXZlOmJnLXNlY29uZGFyeS8xNSBkaXNhYmxlZDpiZy1zZWNvbmRhcnkvMTAgYXJpYS1kaXNhYmxlZDpiZy1zZWNvbmRhcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzI1IGJnLXN1Y2Nlc3MvMTAgaG92ZXI6Ymctc3VjY2Vzcy8xNSBhY3RpdmU6Ymctc3VjY2Vzcy8xNSBkaXNhYmxlZDpiZy1zdWNjZXNzLzEwIGFyaWEtZGlzYWJsZWQ6Ymctc3VjY2Vzcy8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1IGJnLWluZm8vMTAgaG92ZXI6YmctaW5mby8xNSBhY3RpdmU6YmctaW5mby8xNSBkaXNhYmxlZDpiZy1pbmZvLzEwIGFyaWEtZGlzYWJsZWQ6YmctaW5mby8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1IGJnLXdhcm5pbmcvMTAgaG92ZXI6Ymctd2FybmluZy8xNSBhY3RpdmU6Ymctd2FybmluZy8xNSBkaXNhYmxlZDpiZy13YXJuaW5nLzEwIGFyaWEtZGlzYWJsZWQ6Ymctd2FybmluZy8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1IGJnLWVycm9yLzEwIGhvdmVyOmJnLWVycm9yLzE1IGFjdGl2ZTpiZy1lcnJvci8xNSBkaXNhYmxlZDpiZy1lcnJvci8xMCBhcmlhLWRpc2FibGVkOmJnLWVycm9yLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOmJnLXByaW1hcnkvMTAgYWN0aXZlOmJnLXByaW1hcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmctcHJpbWFyeS8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc2Vjb25kYXJ5LzEwIGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc2Vjb25kYXJ5LzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC1zdWNjZXNzIGhvdmVyOmJnLXN1Y2Nlc3MvMTAgYWN0aXZlOmJnLXN1Y2Nlc3MvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc3VjY2Vzcy8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtaW5mbyBob3ZlcjpiZy1pbmZvLzEwIGFjdGl2ZTpiZy1pbmZvLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWluZm8vMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgaG92ZXI6Ymctd2FybmluZy8xMCBhY3RpdmU6Ymctd2FybmluZy8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy13YXJuaW5nLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtZXJyb3IgaG92ZXI6YmctZXJyb3IvMTAgYWN0aXZlOmJnLWVycm9yLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWVycm9yLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dGV4dC1wcmltYXJ5Lzc1IGFjdGl2ZTp0ZXh0LXByaW1hcnkvNzUgZGlzYWJsZWQ6dGV4dC1wcmltYXJ5IGFyaWEtZGlzYWJsZWQ6dGV4dC1wcmltYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IGhvdmVyOnRleHQtc2Vjb25kYXJ5Lzc1IGFjdGl2ZTp0ZXh0LXNlY29uZGFyeS83NSBkaXNhYmxlZDp0ZXh0LXNlY29uZGFyeSBhcmlhLWRpc2FibGVkOnRleHQtc2Vjb25kYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtc3VjY2VzcyBob3Zlcjp0ZXh0LXN1Y2Nlc3MvNzUgYWN0aXZlOnRleHQtc3VjY2Vzcy83NSBkaXNhYmxlZDp0ZXh0LXN1Y2Nlc3MgYXJpYS1kaXNhYmxlZDp0ZXh0LXN1Y2Nlc3MgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtaW5mbyBob3Zlcjp0ZXh0LWluZm8vNzUgYWN0aXZlOnRleHQtaW5mby83NSBkaXNhYmxlZDp0ZXh0LWluZm8gYXJpYS1kaXNhYmxlZDp0ZXh0LWluZm8gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtd2FybmluZyBob3Zlcjp0ZXh0LXdhcm5pbmcvNzUgYWN0aXZlOnRleHQtd2FybmluZy83NSBkaXNhYmxlZDp0ZXh0LXdhcm5pbmcgYXJpYS1kaXNhYmxlZDp0ZXh0LXdhcm5pbmcgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LWVycm9yIGhvdmVyOnRleHQtZXJyb3IvNzUgYWN0aXZlOnRleHQtZXJyb3IvNzUgZGlzYWJsZWQ6dGV4dC1lcnJvciBhcmlhLWRpc2FibGVkOnRleHQtZXJyb3IgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbnZlcnRlZCBob3ZlcjpiZy1pbnZlcnRlZC85MCBhY3RpdmU6YmctaW52ZXJ0ZWQvOTAgZGlzYWJsZWQ6YmctaW52ZXJ0ZWQgYXJpYS1kaXNhYmxlZDpiZy1pbnZlcnRlZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQgaG92ZXI6YmctZWxldmF0ZWQgYWN0aXZlOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWRlZmF1bHQgYXJpYS1kaXNhYmxlZDpiZy1kZWZhdWx0IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgYWN0aXZlOmJnLWFjY2VudGVkLzc1IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWFjY2VudGVkLzc1IGRpc2FibGVkOmJnLWVsZXZhdGVkIGFyaWEtZGlzYWJsZWQ6YmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCBob3ZlcjpiZy1hY2NlbnRlZC83NSBhY3RpdmU6YmctYWNjZW50ZWQvNzUgZGlzYWJsZWQ6YmctZWxldmF0ZWQgYXJpYS1kaXNhYmxlZDpiZy1lbGV2YXRlZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtZGVmYXVsdCBob3ZlcjpiZy1lbGV2YXRlZCBhY3RpdmU6YmctZWxldmF0ZWQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmctZWxldmF0ZWQgaG92ZXI6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpob3ZlcjpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBob3ZlcjphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6aG92ZXI6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtbXV0ZWQgaG92ZXI6dGV4dC1kZWZhdWx0IGFjdGl2ZTp0ZXh0LWRlZmF1bHQgZGlzYWJsZWQ6dGV4dC1tdXRlZCBhcmlhLWRpc2FibGVkOnRleHQtbXV0ZWQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7c2l6ZToieHMiLHNxdWFyZTohMCxjbGFzczoicC0xIn0se3NpemU6InNtIixzcXVhcmU6ITAsY2xhc3M6InAtMS41In0se3NpemU6Im1kIixzcXVhcmU6ITAsY2xhc3M6InAtMS41In0se3NpemU6ImxnIixzcXVhcmU6ITAsY2xhc3M6InAtMiJ9LHtzaXplOiJ4bCIsc3F1YXJlOiEwLGNsYXNzOiJwLTIifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsc2l6ZToibWQifX0sTnI9e19fbmFtZToiVUJ1dHRvbiIscHJvcHM6e2xhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3F1YXJlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJsb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdBdXRvOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3Q6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3RRdWVyeTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxleGFjdEhhc2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saW5hY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHRvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGhyZWY6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxyZWw6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LG5vUmVsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByZWZldGNoZWRDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHByZWZldGNoOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByZWZldGNoT246e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxub1ByZWZldGNoOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nU2xhc2g6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhcmlhQ3VycmVudFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmlld1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVwbGFjZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49enIoKSxyPVN0KCksbz1MbigiYnV0dG9uIix0KSx7b3JpZW50YXRpb246cyxzaXplOml9PXdkKHQpLGE9cG8oX0wodCkpLGw9RyghMSksdT1LZSh2TCx2b2lkIDApO2FzeW5jIGZ1bmN0aW9uIGModyl7bC52YWx1ZT0hMDtjb25zdCB2PUFycmF5LmlzQXJyYXkodC5vbkNsaWNrKT90Lm9uQ2xpY2s6W3Qub25DbGlja107dHJ5e2F3YWl0IFByb21pc2UuYWxsKHYubWFwKGg9Pmg/Lih3KSkpfWZpbmFsbHl7bC52YWx1ZT0hMX19Y29uc3QgZj1OKCgpPT50LmxvYWRpbmd8fHQubG9hZGluZ0F1dG8mJihsLnZhbHVlfHx1Py52YWx1ZSYmdC50eXBlPT09InN1Ym1pdCIpKSx7aXNMZWFkaW5nOmQsaXNUcmFpbGluZzpwLGxlYWRpbmdJY29uTmFtZTptLHRyYWlsaW5nSWNvbk5hbWU6eX09S2woTigoKT0+KHsuLi50LGxvYWRpbmc6Zi52YWx1ZX0pKSksXz1OKCgpPT51dCh7ZXh0ZW5kOnV0KEtMKSwuLi5tbih7dmFyaWFudHM6e2FjdGl2ZTp7dHJ1ZTp7YmFzZTpybChyLnVpPy5idXR0b24/LnZhcmlhbnRzPy5hY3RpdmU/LnRydWU/LmJhc2UsdC5hY3RpdmVDbGFzcyl9LGZhbHNlOntiYXNlOnJsKHIudWk/LmJ1dHRvbj8udmFyaWFudHM/LmFjdGl2ZT8uZmFsc2U/LmJhc2UsdC5pbmFjdGl2ZUNsYXNzKX19fX0sci51aT8uYnV0dG9ufHx7fSl9KSh7Y29sb3I6dC5jb2xvcix2YXJpYW50OnQudmFyaWFudCxzaXplOmkudmFsdWUsbG9hZGluZzpmLnZhbHVlLGJsb2NrOnQuYmxvY2ssc3F1YXJlOnQuc3F1YXJlfHwhbi5kZWZhdWx0JiYhdC5sYWJlbCxsZWFkaW5nOmQudmFsdWUsdHJhaWxpbmc6cC52YWx1ZSxmaWVsZEdyb3VwOnMudmFsdWV9KSk7cmV0dXJuKHcsdik9PihSKCksJChHTCxmZSh7dHlwZTplLnR5cGUsZGlzYWJsZWQ6ZS5kaXNhYmxlZHx8Zi52YWx1ZX0sZyhOMCkoZyhhKSxbInR5cGUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkse2N1c3RvbToiIn0pLHtkZWZhdWx0Ok0oKHthY3RpdmU6aCwuLi5ifSk9PltyZShlZixmZShiLHsiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Xy52YWx1ZS5iYXNlKHtjbGFzczpbZyhvKT8uYmFzZSx0LmNsYXNzXSxhY3RpdmU6aCwuLi5oJiZlLmFjdGl2ZVZhcmlhbnQ/e3ZhcmlhbnQ6ZS5hY3RpdmVWYXJpYW50fTp7fSwuLi5oJiZlLmFjdGl2ZUNvbG9yP3tjb2xvcjplLmFjdGl2ZUNvbG9yfTp7fX0pLG9uQ2xpY2s6Y30pLHtkZWZhdWx0Ok0oKCk9PltVKHcuJHNsb3RzLCJsZWFkaW5nIix7dWk6Xy52YWx1ZX0sKCk9PltnKGQpJiZnKG0pPyhSKCksJChfbix7a2V5OjAsbmFtZTpnKG0pLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6dWUoXy52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6ZyhvKT8ubGVhZGluZ0ljb24sYWN0aXZlOmh9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5hdmF0YXI/KFIoKSwkKFVvLGZlKHtrZXk6MSxzaXplOmcobyk/LmxlYWRpbmdBdmF0YXJTaXplfHxfLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LGUuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6Xy52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczpnKG8pPy5sZWFkaW5nQXZhdGFyLGFjdGl2ZTpofSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpkZSgiIiwhMCldKSxVKHcuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Xy52YWx1ZX0sKCk9PltlLmxhYmVsIT09dm9pZCAwJiZlLmxhYmVsIT09bnVsbD8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp1ZShfLnZhbHVlLmxhYmVsKHtjbGFzczpnKG8pPy5sYWJlbCxhY3RpdmU6aH0pKX0scnQoZS5sYWJlbCksMykpOmRlKCIiLCEwKV0pLFUody4kc2xvdHMsInRyYWlsaW5nIix7dWk6Xy52YWx1ZX0sKCk9PltnKHApJiZnKHkpPyhSKCksJChfbix7a2V5OjAsbmFtZTpnKHkpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOnVlKF8udmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczpnKG8pPy50cmFpbGluZ0ljb24sYWN0aXZlOmh9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86M30sMTYsWyJ0eXBlIiwiZGlzYWJsZWQiXSkpfX07ZnVuY3Rpb24gUUwoKXtmdW5jdGlvbiBlKHIpe3JldHVybiBMZSgiL2FwaS9ub3RpZmljYXRpb25zIix7cXVlcnk6ey4uLnJ9fSl9ZnVuY3Rpb24gdCgpe3JldHVybiBMZSgiL2FwaS9ub3RpZmljYXRpb25zL3VucmVhZC1jb3VudCIpfWZ1bmN0aW9uIG4ocil7cmV0dXJuIExlKCIvYXBpL25vdGlmaWNhdGlvbnMvOmlkL3JlYWQiLHttZXRob2Q6IlBBVENIIixxdWVyeTp7aWQ6cn19KX1yZXR1cm57ZmV0Y2hOb3RpZmljYXRpb25zOmUsZmV0Y2hVbnJlYWRDb3VudDp0LG1hcmtOb3RpZmljYXRpb25SZWFkOm59fWNvbnN0IFNoPTIwLHJ3PVl5KCJub3RpZmljYXRpb25zIiwoKT0+e2NvbnN0IGU9UUwoKSx0PUcoITEpLG49RyhbXSkscj1HKDApLG89RyghMSkscz1HKCExKSxpPUcoMCk7YXN5bmMgZnVuY3Rpb24gYSgpe3RyeXtjb25zdHtjb3VudDpkfT1hd2FpdCBlLmZldGNoVW5yZWFkQ291bnQoKTtyLnZhbHVlPWR9Y2F0Y2h7fX1hc3luYyBmdW5jdGlvbiBsKCl7cy52YWx1ZT0hMDt0cnl7Y29uc3R7aXRlbXM6ZCxoYXNNb3JlOnB9PWF3YWl0IGUuZmV0Y2hOb3RpZmljYXRpb25zKHtvZmZzZXQ6MCxsaW1pdDpTaH0pO24udmFsdWU9ZCxpLnZhbHVlPWQubGVuZ3RoLG8udmFsdWU9cH1maW5hbGx5e3MudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIHUoKXtpZighKCFvLnZhbHVlfHxzLnZhbHVlKSl7cy52YWx1ZT0hMDt0cnl7Y29uc3R7aXRlbXM6ZCxoYXNNb3JlOnB9PWF3YWl0IGUuZmV0Y2hOb3RpZmljYXRpb25zKHtvZmZzZXQ6aS52YWx1ZSxsaW1pdDpTaH0pO24udmFsdWU9Wy4uLm4udmFsdWUsLi4uZF0saS52YWx1ZSs9ZC5sZW5ndGgsby52YWx1ZT1wfWZpbmFsbHl7cy52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIGMoKXt0LnZhbHVlPSEwLG4udmFsdWUubGVuZ3RoPT09MCYmYXdhaXQgbCgpfWFzeW5jIGZ1bmN0aW9uIGYoZCl7Y29uc3QgcD1hd2FpdCBlLm1hcmtOb3RpZmljYXRpb25SZWFkKGQpO24udmFsdWU9bi52YWx1ZS5tYXAobT0+bS5pZD09PWQ/cDptKSxyLnZhbHVlPjAmJnIudmFsdWUtLX1yZXR1cm57aXNPcGVuOnQsaXRlbXM6bix1bnJlYWRDb3VudDpyLGhhc01vcmU6byxsb2FkaW5nOnMscmVmcmVzaFVucmVhZENvdW50OmEsbG9hZEluaXRpYWw6bCxsb2FkTW9yZTp1LG9wZW46YyxtYXJrUmVhZDpmfX0pLFlMPXNlKHtfX25hbWU6Ik5vdGlmaWNhdGlvbnNCZWxsIixzZXR1cChlKXtjb25zdCB0PXJ3KCk7cmV0dXJuIG90KCgpPT57dC5yZWZyZXNoVW5yZWFkQ291bnQoKX0pLChuLHIpPT57Y29uc3Qgbz1fbixzPUdsLGk9TnI7cmV0dXJuIFIoKSwkKGkse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc3F1YXJlOiIiLCJhcmlhLWxhYmVsIjoiTm90aWZpY2F0aW9ucyIsImRhdGEtdGVzdGlkIjoibm90aWZpY2F0aW9ucy1iZWxsIixvbkNsaWNrOnJbMF18fChyWzBdPWE9PmcodCkub3BlbigpKX0se2RlZmF1bHQ6TSgoKT0+W3JlKHMse2NvbG9yOiJlcnJvciIsc2hvdzpnKHQpLnVucmVhZENvdW50PjAsaW5zZXQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShvLHtuYW1lOiJpLWx1Y2lkZS1iZWxsIixjbGFzczoic2l6ZS01IHNocmluay0wIn0pXSksXzoxfSw4LFsic2hvdyJdKV0pLF86MX0pfX19KSxKTD1PYmplY3QuYXNzaWduKFlMLHtfX25hbWU6Ik5vdGlmaWNhdGlvbnNCZWxsIn0pO2Z1bmN0aW9uIFhMKGUpe3JldHVybih0LG4pPT5aTCh0LG4sZyhlKSl9ZnVuY3Rpb24gWkwoZSx0LG4pe3JldHVybiB3bihuLGBtZXNzYWdlcy4ke2V9YCxlKS5yZXBsYWNlKC9ceyhcdyspXH0vZywobyxzKT0+YCR7dD8uW3NdPz9geyR7c319YH1gKX1mdW5jdGlvbiBlJChlKXtjb25zdCB0PU4oKCk9PmcoZSkubmFtZSksbj1OKCgpPT5nKGUpLmNvZGUpLHI9TigoKT0+ZyhlKS5kaXIpO3JldHVybntsYW5nOnQsY29kZTpuLGRpcjpyLGxvY2FsZTokZShlKT9lOkcoZSksdDpYTChlKX19ZnVuY3Rpb24gdCQoZSl7cmV0dXJuIG1uKGUse2RpcjoibHRyIn0pfWNvbnN0IGtoPXQkKHtuYW1lOiJFbmdsaXNoIixjb2RlOiJlbiIsbWVzc2FnZXM6e2FsZXJ0OntjbG9zZToiQ2xvc2UifSxhdXRoRm9ybTp7aGlkZVBhc3N3b3JkOiJIaWRlIHBhc3N3b3JkIixzaG93UGFzc3dvcmQ6IlNob3cgcGFzc3dvcmQiLHN1Ym1pdDoiQ29udGludWUifSxiYW5uZXI6e2Nsb3NlOiJDbG9zZSJ9LGNhbGVuZGFyOntuZXh0TW9udGg6Ik5leHQgbW9udGgiLG5leHRZZWFyOiJOZXh0IHllYXIiLHByZXZNb250aDoiUHJldmlvdXMgbW9udGgiLHByZXZZZWFyOiJQcmV2aW91cyB5ZWFyIn0sY2Fyb3VzZWw6e2RvdHM6IkNob29zZSBzbGlkZSB0byBkaXNwbGF5Iixnb3RvOiJHbyB0byBzbGlkZSB7c2xpZGV9IixuZXh0OiJOZXh0IixwcmV2OiJQcmV2In0sY2hhdFByb21wdDp7cGxhY2Vob2xkZXI6IlR5cGUgeW91ciBtZXNzYWdlIGhlcmXigKYifSxjaGF0UHJvbXB0U3VibWl0OntsYWJlbDoiU2VuZCBwcm9tcHQifSxjb2xvck1vZGU6e2Rhcms6IkRhcmsiLGxpZ2h0OiJMaWdodCIsc3dpdGNoVG9EYXJrOiJTd2l0Y2ggdG8gZGFyayBtb2RlIixzd2l0Y2hUb0xpZ2h0OiJTd2l0Y2ggdG8gbGlnaHQgbW9kZSIsc3lzdGVtOiJTeXN0ZW0ifSxjb21tYW5kUGFsZXR0ZTp7YmFjazoiQmFjayIsY2xvc2U6IkNsb3NlIixub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEiLHBsYWNlaG9sZGVyOiJUeXBlIGEgY29tbWFuZCBvciBzZWFyY2jigKYifSxjb250ZW50U2VhcmNoOntsaW5rczoiTGlua3MiLHRoZW1lOiJUaGVtZSJ9LGNvbnRlbnRTZWFyY2hCdXR0b246e2xhYmVsOiJTZWFyY2jigKYifSxjb250ZW50VG9jOnt0aXRsZToiT24gdGhpcyBwYWdlIn0sZHJvcGRvd25NZW51Ontub01hdGNoOiJObyBtYXRjaGluZyBkYXRhIixzZWFyY2g6IlNlYXJjaOKApiJ9LGRhc2hib2FyZFNlYXJjaDp7dGhlbWU6IlRoZW1lIn0sZGFzaGJvYXJkU2VhcmNoQnV0dG9uOntsYWJlbDoiU2VhcmNo4oCmIn0sZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlOntjb2xsYXBzZToiQ29sbGFwc2Ugc2lkZWJhciIsZXhwYW5kOiJFeHBhbmQgc2lkZWJhciJ9LGRhc2hib2FyZFNpZGViYXJUb2dnbGU6e2Nsb3NlOiJDbG9zZSBzaWRlYmFyIixvcGVuOiJPcGVuIHNpZGViYXIifSxlcnJvcjp7Y2xlYXI6IkJhY2sgdG8gaG9tZSJ9LGZpbGVVcGxvYWQ6e3JlbW92ZUZpbGU6IlJlbW92ZSB7ZmlsZW5hbWV9In0saGVhZGVyOntjbG9zZToiQ2xvc2UgbWVudSIsb3BlbjoiT3BlbiBtZW51In0saW5wdXRNZW51OntjcmVhdGU6J0NyZWF0ZSAie2xhYmVsfSInLG5vRGF0YToiTm8gZGF0YSIsbm9NYXRjaDoiTm8gbWF0Y2hpbmcgZGF0YSJ9LGlucHV0TnVtYmVyOntkZWNyZW1lbnQ6IkRlY3JlbWVudCIsaW5jcmVtZW50OiJJbmNyZW1lbnQifSxsaXN0Ym94Ontub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEiLHNlYXJjaDoiU2VhcmNo4oCmIn0sbW9kYWw6e2Nsb3NlOiJDbG9zZSJ9LHByaWNpbmdUYWJsZTp7Y2FwdGlvbjoiUHJpY2luZyBwbGFuIGNvbXBhcmlzb24ifSxwcm9zZTp7Y29kZUNvbGxhcHNlOntjbG9zZVRleHQ6IkNvbGxhcHNlIixuYW1lOiJjb2RlIixvcGVuVGV4dDoiRXhwYW5kIn0sY29sbGFwc2libGU6e2Nsb3NlVGV4dDoiSGlkZSIsbmFtZToicHJvcGVydGllcyIsb3BlblRleHQ6IlNob3cifSxwcmU6e2NvcHk6IkNvcHkgY29kZSB0byBjbGlwYm9hcmQifSxwcm9tcHQ6e2NvcHk6IkNvcHkgcHJvbXB0IixvcGVuSW46Ik9wZW4gaW4ge25hbWV9In19LGNoYXRSZWFzb25pbmc6e3RoaW5raW5nOiJUaGlua2luZ+KApiIsdGhvdWdodDoiVGhvdWdodCIsdGhvdWdodEZvcjoiVGhvdWdodCBmb3Ige2R1cmF0aW9ufSJ9LHNpZGViYXI6e2Nsb3NlOiJDbG9zZSIsdG9nZ2xlOiJUb2dnbGUifSxzZWxlY3RNZW51OntjcmVhdGU6J0NyZWF0ZSAie2xhYmVsfSInLG5vRGF0YToiTm8gZGF0YSIsbm9NYXRjaDoiTm8gbWF0Y2hpbmcgZGF0YSIsc2VhcmNoOiJTZWFyY2jigKYifSxzbGlkZW92ZXI6e2Nsb3NlOiJDbG9zZSJ9LHRhYmxlOntub0RhdGE6Ik5vIGRhdGEifSx0b2FzdDp7Y2xvc2U6IkNsb3NlIn19fSksb3c9U3ltYm9sLmZvcigibnV4dC11aS5sb2NhbGUtY29udGV4dCIpLG4kPWU9Pntjb25zdCB0PWV8fHl0KEtlKG93LGtoKSk7cmV0dXJuIGUkKE4oKCk9PnQudmFsdWV8fGtoKSl9LFFsPWVkKG4kKSxzdz1TeW1ib2woIm51eHQtdWkucG9ydGFsLXRhcmdldCIpO2Z1bmN0aW9uIFlsKGUpe2NvbnN0IHQ9S2Uoc3csdm9pZCAwKSxuPU4oKCk9PmUudmFsdWU9PT0hMD90Py52YWx1ZTplLnZhbHVlKSxyPU4oKCk9PnR5cGVvZiBuLnZhbHVlPT0iYm9vbGVhbiI/IW4udmFsdWU6ITEpLG89TigoKT0+dHlwZW9mIG4udmFsdWU9PSJib29sZWFuIj8iYm9keSI6bi52YWx1ZSk7cmV0dXJuIE4oKCk9Pih7dG86by52YWx1ZSxkaXNhYmxlZDpyLnZhbHVlfSkpfWZ1bmN0aW9uIGl3KGUsdD17fSl7Y29uc3Qgbj1lLmRldGFpbC5vcmlnaW5hbEV2ZW50LHI9bi50YXJnZXQ7aWYoIXI/LmlzQ29ubmVjdGVkKXtlLnByZXZlbnREZWZhdWx0KCk7cmV0dXJufXQuc2Nyb2xsYWJsZSYmKG4ub2Zmc2V0WD5yLmNsaWVudFdpZHRofHxuLm9mZnNldFk+ci5jbGllbnRIZWlnaHQpJiZlLnByZXZlbnREZWZhdWx0KCl9Y29uc3QgciQ9e3Nsb3RzOntvdmVybGF5OiJmaXhlZCBpbnNldC0wIGJnLWVsZXZhdGVkLzc1Iixjb250ZW50OiJmaXhlZCBiZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IHNtOnJpbmcgcmluZy1kZWZhdWx0IHNtOnNoYWRvdy1sZyBmbGV4IGZsZXgtY29sIGZvY3VzOm91dGxpbmUtbm9uZSIsaGVhZGVyOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHAtNCBzbTpweC02IG1pbi1oLSgtLXVpLWhlYWRlci1oZWlnaHQpIix3cmFwcGVyOiIiLGJvZHk6ImZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcC00IHNtOnAtNiIsZm9vdGVyOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHAtNCBzbTpweC02Iix0aXRsZToidGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIixkZXNjcmlwdGlvbjoibXQtMSB0ZXh0LW11dGVkIHRleHQtc20iLGNsb3NlOiJhYnNvbHV0ZSB0b3AtNCBlbmQtNCJ9LHZhcmlhbnRzOntzaWRlOnt0b3A6e2NvbnRlbnQ6IiJ9LHJpZ2h0Ontjb250ZW50OiJtYXgtdy1tZCJ9LGJvdHRvbTp7Y29udGVudDoiIn0sbGVmdDp7Y29udGVudDoibWF4LXctbWQifX0saW5zZXQ6e3RydWU6e2NvbnRlbnQ6InJvdW5kZWQtbGcifX0sdHJhbnNpdGlvbjp7dHJ1ZTp7b3ZlcmxheToiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bZmFkZS1pbl8yMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtmYWRlLW91dF8yMDBtc19lYXNlLWluXSJ9fX0sY29tcG91bmRWYXJpYW50czpbe3NpZGU6InRvcCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Im1heC1oLVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXgtNCB0b3AtNCJ9fSx7c2lkZToidG9wIixpbnNldDohMSxjbGFzczp7Y29udGVudDoibWF4LWgtZnVsbCBpbnNldC14LTAgdG9wLTAifX0se3NpZGU6InJpZ2h0IixpbnNldDohMCxjbGFzczp7Y29udGVudDoidy1bY2FsYygxMDAlLTJyZW0pXSBpbnNldC15LTQgcmlnaHQtNCJ9fSx7c2lkZToicmlnaHQiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJ3LWZ1bGwgaW5zZXQteS0wIHJpZ2h0LTAifX0se3NpZGU6ImJvdHRvbSIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Im1heC1oLVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXgtNCBib3R0b20tNCJ9fSx7c2lkZToiYm90dG9tIixpbnNldDohMSxjbGFzczp7Y29udGVudDoibWF4LWgtZnVsbCBpbnNldC14LTAgYm90dG9tLTAifX0se3NpZGU6ImxlZnQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJ3LVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXktNCBsZWZ0LTQifX0se3NpZGU6ImxlZnQiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJ3LWZ1bGwgaW5zZXQteS0wIGxlZnQtMCJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJ0b3AiLGNsYXNzOntjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzbGlkZS1pbi1mcm9tLXRvcF8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzbGlkZS1vdXQtdG8tdG9wXzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJyaWdodCIsY2xhc3M6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NsaWRlLWluLWZyb20tcmlnaHRfMjAwbXNfZWFzZS1pbi1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2xpZGUtb3V0LXRvLXJpZ2h0XzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJib3R0b20iLGNsYXNzOntjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzbGlkZS1pbi1mcm9tLWJvdHRvbV8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzbGlkZS1vdXQtdG8tYm90dG9tXzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJsZWZ0IixjbGFzczp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2xpZGUtaW4tZnJvbS1sZWZ0XzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NsaWRlLW91dC10by1sZWZ0XzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fV19LG8kPXtfX25hbWU6IlVTbGlkZW92ZXIiLHByb3BzOnt0aXRsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG92ZXJsYXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InJpZ2h0In0saW5zZXQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LGNsb3NlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc21pc3NpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LGVtaXRzOlsiYWZ0ZXI6bGVhdmUiLCJhZnRlcjplbnRlciIsImNsb3NlOnByZXZlbnQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz16cigpLHt0OnN9PVFsKCksaT1TdCgpLGE9TG4oInNsaWRlb3ZlciIsbiksbD0kcyhWcihuLCJvcGVuIiwiZGVmYXVsdE9wZW4iLCJtb2RhbCIpLHIpLHU9WWwoeXQoKCk9Pm4ucG9ydGFsKSksYz15dCgoKT0+bi5jb250ZW50KSxmPU4oKCk9Pm4uZGlzbWlzc2libGU/e3BvaW50ZXJEb3duT3V0c2lkZTppd306WyJpbnRlcmFjdE91dHNpZGUiLCJlc2NhcGVLZXlEb3duIl0ucmVkdWNlKChtLHkpPT4obVt5XT1fPT57Xy5wcmV2ZW50RGVmYXVsdCgpLHIoImNsb3NlOnByZXZlbnQiKX0sbSkse30pKSxkPU4oKCk9PnV0KHtleHRlbmQ6dXQociQpLC4uLmkudWk/LnNsaWRlb3Zlcnx8e319KSh7dHJhbnNpdGlvbjpuLnRyYW5zaXRpb24sc2lkZTpuLnNpZGUsaW5zZXQ6bi5pbnNldH0pKTtyZXR1cm4ocCxtKT0+KFIoKSwkKGcocjApLHh0KE10KGcobCkpKSx7ZGVmYXVsdDpNKCh7b3Blbjp5LGNsb3NlOl99KT0+W28uZGVmYXVsdD8oUigpLCQoZyhmMCkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6dWUobi5jbGFzcyl9LHtkZWZhdWx0Ok0oKCk9PltVKHAuJHNsb3RzLCJkZWZhdWx0Iix7b3Blbjp5fSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6ZGUoIiIsITApLHJlKGcodTApLHh0KE10KGcodSkpKSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhfZCksbnVsbCx7ZGVmYXVsdDpNKCgpPT5bZS5vdmVybGF5PyhSKCksJChnKHF1KSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnVlKGQudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZyhhKT8ub3ZlcmxheX0pKX0sbnVsbCw4LFsiY2xhc3MiXSkpOmRlKCIiLCEwKSxyZShnKGMwKSxmZSh7ImRhdGEtc2lkZSI6ZS5zaWRlLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpkLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshby5kZWZhdWx0JiZuLmNsYXNzLGcoYSk/LmNvbnRlbnRdfSl9LGMudmFsdWUse29uQWZ0ZXJFbnRlcjptWzBdfHwobVswXT13PT5yKCJhZnRlcjplbnRlciIpKSxvbkFmdGVyTGVhdmU6bVsxXXx8KG1bMV09dz0+cigiYWZ0ZXI6bGVhdmUiKSl9LFZnKGYudmFsdWUpKSx7ZGVmYXVsdDpNKCgpPT5bIWUudGl0bGUmJiFvLnRpdGxlfHwhZS5kZXNjcmlwdGlvbiYmIW8uZGVzY3JpcHRpb258fG8uY29udGVudD8oUigpLCQoZyhWaSkse2tleTowfSx7ZGVmYXVsdDpNKCgpPT5bIWUudGl0bGUmJiFvLnRpdGxlPyhSKCksJChnKHZzKSx7a2V5OjB9KSk6by5jb250ZW50PyhSKCksJChnKHZzKSx7a2V5OjF9LHtkZWZhdWx0Ok0oKCk9PltVKHAuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltzdChydChlLnRpdGxlKSwxKV0pXSksXzozfSkpOmRlKCIiLCEwKSwhZS5kZXNjcmlwdGlvbiYmIW8uZGVzY3JpcHRpb24/KFIoKSwkKGcoeXMpLHtrZXk6Mn0pKTpvLmNvbnRlbnQ/KFIoKSwkKGcoeXMpLHtrZXk6M30se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W3N0KHJ0KGUuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZGUoIiIsITApXSksXzozfSkpOmRlKCIiLCEwKSxVKHAuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6X30sKCk9PltvLmhlYWRlcnx8ZS50aXRsZXx8by50aXRsZXx8ZS5kZXNjcmlwdGlvbnx8by5kZXNjcmlwdGlvbnx8bi5jbG9zZXx8by5jbG9zZT8oUigpLF9lKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp1ZShkLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZyhhKT8uaGVhZGVyfSkpfSxbVShwLiRzbG90cywiaGVhZGVyIix7Y2xvc2U6X30sKCk9PltlLnRpdGxlfHxvLnRpdGxlfHxlLmRlc2NyaXB0aW9ufHxvLmRlc2NyaXB0aW9uPyhSKCksX2UoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ3cmFwcGVyIixjbGFzczp1ZShkLnZhbHVlLndyYXBwZXIoe2NsYXNzOmcoYSk/LndyYXBwZXJ9KSl9LFtlLnRpdGxlfHxvLnRpdGxlPyhSKCksJChnKHZzKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczp1ZShkLnZhbHVlLnRpdGxlKHtjbGFzczpnKGEpPy50aXRsZX0pKX0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W3N0KHJ0KGUudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZGUoIiIsITApLGUuZGVzY3JpcHRpb258fG8uZGVzY3JpcHRpb24/KFIoKSwkKGcoeXMpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnVlKGQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmcoYSk/LmRlc2NyaXB0aW9ufSkpfSx7ZGVmYXVsdDpNKCgpPT5bVShwLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bc3QocnQoZS5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpkZSgiIiwhMCldLDIpKTpkZSgiIiwhMCksVShwLiRzbG90cywiYWN0aW9ucyIpLG4uY2xvc2V8fG8uY2xvc2U/KFIoKSwkKGcobzApLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpNKCgpPT5bVShwLiRzbG90cywiY2xvc2UiLHt1aTpkLnZhbHVlfSwoKT0+W24uY2xvc2U/KFIoKSwkKE5yLGZlKHtrZXk6MCxpY29uOmUuY2xvc2VJY29ufHxnKGkpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmcocykoInNsaWRlb3Zlci5jbG9zZSIpfSx0eXBlb2Ygbi5jbG9zZT09Im9iamVjdCI/bi5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczpkLnZhbHVlLmNsb3NlKHtjbGFzczpnKGEpPy5jbG9zZX0pfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSksXzoyfSwxMDI0KSk6ZGUoIiIsITApXSldLDIpKTpkZSgiIiwhMCksd3QoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp1ZShkLnZhbHVlLmJvZHkoe2NsYXNzOmcoYSk/LmJvZHl9KSl9LFtVKHAuJHNsb3RzLCJib2R5Iix7Y2xvc2U6X30pXSwyKSxvLmZvb3Rlcj8oUigpLF9lKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczp1ZShkLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZyhhKT8uZm9vdGVyfSkpfSxbVShwLiRzbG90cywiZm9vdGVyIix7Y2xvc2U6X30pXSwyKSk6ZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJkYXRhLXNpZGUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwNDApXSksXzozfSwxNikpfX0scyQ9e2tleTowLGNsYXNzOiJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgifSxpJD17a2V5OjEsY2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTEgLW14LTIifSxhJD17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHctZnVsbCB0ZXh0LWxlZnQifSxsJD17Y2xhc3M6InRleHQtc20gZmxleC0xIG1pbi13LTAifSxjJD17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LHUkPXtjbGFzczoidGV4dC1oaWdobGlnaHRlZCBmb250LW1lZGl1bSB0cnVuY2F0ZSJ9LGYkPVsiZGF0ZXRpbWUiXSxkJD17Y2xhc3M6InRleHQtZGltbWVkIHRydW5jYXRlIn0scCQ9e2tleTowLGNsYXNzOiJwdC0yIHB4LTIifSxtJD1zZSh7X19uYW1lOiJOb3RpZmljYXRpb25zU2xpZGVvdmVyIixzZXR1cChlKXtjb25zdCB0PXJ3KCksbj1OKHtnZXQ6KCk9PnQuaXNPcGVuLHNldDpzPT50LmlzT3Blbj1zfSk7ZnVuY3Rpb24gcihzKXtyZXR1cm4gcy5zcGxpdCgiICIpLm1hcChpPT5pWzBdKS5zbGljZSgwLDIpLmpvaW4oIiIpLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gbyhzKXtjb25zdCBpPURhdGUubm93KCktbmV3IERhdGUocykuZ2V0VGltZSgpLGE9TWF0aC5mbG9vcihpLzZlNCk7aWYoYTwxKXJldHVybiJqdXN0IG5vdyI7aWYoYTw2MClyZXR1cm5gJHthfW0gYWdvYDtjb25zdCBsPU1hdGguZmxvb3IoYS82MCk7cmV0dXJuIGw8MjQ/YCR7bH1oIGFnb2A6YCR7TWF0aC5mbG9vcihsLzI0KX1kIGFnb2B9cmV0dXJuKHMsaSk9Pntjb25zdCBhPVVvLGw9R2wsdT1OcixjPW8kLGY9bngoInNhbml0aXplIik7cmV0dXJuIFIoKSwkKGMse29wZW46ZyhuKSwib25VcGRhdGU6b3BlbiI6aVsxXXx8KGlbMV09ZD0+JGUobik/bi52YWx1ZT1kOm51bGwpLHRpdGxlOiJOb3RpZmljYXRpb25zIn0se2JvZHk6TSgoKT0+W2codCkuaXRlbXMubGVuZ3RoPT09MCYmIWcodCkubG9hZGluZz8oUigpLF9lKCJkaXYiLHMkLCIgWW91J3JlIGFsbCBjYXVnaHQgdXAuICIpKTooUigpLF9lKCJkaXYiLGkkLFsoUighMCksX2UoR2UsbnVsbCx1cihnKHQpLml0ZW1zLGQ9PihSKCksJCh1LHtrZXk6ZC5pZCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGJsb2NrOiIiLGNsYXNzOiJqdXN0aWZ5LXN0YXJ0IHB5LTIuNSIsb25DbGljazpwPT5nKHQpLm1hcmtSZWFkKGQuaWQpfSx7ZGVmYXVsdDpNKCgpPT5bd3QoImRpdiIsYSQsW3JlKGwse2NvbG9yOiJlcnJvciIsc2hvdzohZC5pc1JlYWQsaW5zZXQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShhLHthbHQ6ZC5zZW5kZXJOYW1lLHRleHQ6cihkLnNlbmRlck5hbWUpLHNpemU6Im1kIn0sbnVsbCw4LFsiYWx0IiwidGV4dCJdKV0pLF86Mn0sMTAzMixbInNob3ciXSksd3QoImRpdiIsbCQsW3d0KCJwIixjJCxbd3QoInNwYW4iLHUkLHJ0KGQuc2VuZGVyTmFtZSksMSksd3QoInRpbWUiLHtkYXRldGltZTpkLmNyZWF0ZWRBdCxjbGFzczoidGV4dC1tdXRlZCB0ZXh0LXhzIHNocmluay0wIn0scnQobyhkLmNyZWF0ZWRBdCkpLDksZiQpXSksUl8od3QoImRpdiIsZCQsbnVsbCw1MTIpLFtbZixkLmJvZHldXSldKV0pXSksXzoyfSwxMDMyLFsib25DbGljayJdKSkpLDEyOCkpLGcodCkuaGFzTW9yZT8oUigpLF9lKCJkaXYiLHAkLFtyZSh1LHtibG9jazoiIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29mdCIsbG9hZGluZzpnKHQpLmxvYWRpbmcsImRhdGEtdGVzdGlkIjoibm90aWZpY2F0aW9ucy1sb2FkLW1vcmUiLG9uQ2xpY2s6aVswXXx8KGlbMF09ZD0+Zyh0KS5sb2FkTW9yZSgpKX0se2RlZmF1bHQ6TSgoKT0+Wy4uLmlbMl18fChpWzJdPVtzdCgiIExvYWQgbW9yZSAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyJdKV0pKTpkZSgiIiwhMCldKSldKSxfOjF9LDgsWyJvcGVuIl0pfX19KSxoJD1PYmplY3QuYXNzaWduKG0kLHtfX25hbWU6Ik5vdGlmaWNhdGlvbnNTbGlkZW92ZXIifSksZyQ9bHQoKCk9Pntjb25zdHtjb250cmlidXRlOmV9PWpyKCk7ZSh7bmF2YmFySXRlbXM6W3tpZDoibm90aWZpY2F0aW9ucy1iZWxsIixjb21wb25lbnQ6SkwscHJpb3JpdHk6MTB9XSxvdmVybGF5czpbe2lkOiJub3RpZmljYXRpb25zLXNsaWRlb3ZlciIsY29tcG9uZW50OmgkfV19KX0pO2Z1bmN0aW9uIEVoKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5JChlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIHYkKGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihuIT1udWxsKXt2YXIgcixvLHMsaSxhPVtdLGw9ITAsdT0hMTt0cnl7aWYocz0obj1uLmNhbGwoZSkpLm5leHQsdCE9PTApZm9yKDshKGw9KHI9cy5jYWxsKG4pKS5kb25lKSYmKGEucHVzaChyLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2w9ITApO31jYXRjaChjKXt1PSEwLG89Y31maW5hbGx5e3RyeXtpZighbCYmbi5yZXR1cm4hPW51bGwmJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gYX19ZnVuY3Rpb24gYiQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gdyQoZSx0KXtyZXR1cm4geSQoZSl8fHYkKGUsdCl8fF8kKGUsdCl8fGIkKCl9ZnVuY3Rpb24gXyQoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIEVoKGUsdCk7dmFyIG49e30udG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4gbj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiP0FycmF5LmZyb20oZSk6bj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9FaChlLHQpOnZvaWQgMH19Y29uc3QgYXc9T2JqZWN0LmVudHJpZXMsVGg9T2JqZWN0LnNldFByb3RvdHlwZU9mLHgkPU9iamVjdC5pc0Zyb3plbixTJD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsayQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtsZXQgc249T2JqZWN0LmZyZWV6ZSxEbj1PYmplY3Quc2VhbCxscz1PYmplY3QuY3JlYXRlLGx3PXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdCx0Zj1sdy5hcHBseSxuZj1sdy5jb25zdHJ1Y3Q7c258fChzbj1mdW5jdGlvbih0KXtyZXR1cm4gdH0pO0RufHwoRG49ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt0Znx8KHRmPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkocj4yP3ItMjowKSxzPTI7czxyO3MrKylvW3MtMl09YXJndW1lbnRzW3NdO3JldHVybiB0LmFwcGx5KG4sbyl9KTtuZnx8KG5mPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gbmV3IHQoLi4ucil9KTtjb25zdCBlcz1PdChBcnJheS5wcm90b3R5cGUuZm9yRWFjaCksRSQ9T3QoQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKSxDaD1PdChBcnJheS5wcm90b3R5cGUucG9wKSx0cz1PdChBcnJheS5wcm90b3R5cGUucHVzaCksVCQ9T3QoQXJyYXkucHJvdG90eXBlLnNwbGljZSksZW49QXJyYXkuaXNBcnJheSx0aT1PdChTdHJpbmcucHJvdG90eXBlLnRvTG93ZXJDYXNlKSxWYz1PdChTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nKSxBaD1PdChTdHJpbmcucHJvdG90eXBlLm1hdGNoKSxucz1PdChTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLE9oPU90KFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiksQyQ9T3QoU3RyaW5nLnByb3RvdHlwZS50cmltKSxBJD1PdChOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5nKSxPJD1PdChCb29sZWFuLnByb3RvdHlwZS50b1N0cmluZyksUGg9dHlwZW9mIEJpZ0ludD4idSI/bnVsbDpPdChCaWdJbnQucHJvdG90eXBlLnRvU3RyaW5nKSxJaD10eXBlb2YgU3ltYm9sPiJ1Ij9udWxsOk90KFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcpLGh0PU90KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLFlzPU90KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpLEJ0PU90KFJlZ0V4cC5wcm90b3R5cGUudGVzdCkseGE9UCQoVHlwZUVycm9yKTtmdW5jdGlvbiBPdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIFJlZ0V4cCYmKHQubGFzdEluZGV4PTApO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gdGYoZSx0LHIpfX1mdW5jdGlvbiBQJChlKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gbmYoZSxuKX19ZnVuY3Rpb24gUmUoZSx0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06dGk7aWYoVGgmJlRoKGUsbnVsbCksIWVuKHQpKXJldHVybiBlO2xldCByPXQubGVuZ3RoO2Zvcig7ci0tOyl7bGV0IG89dFtyXTtpZih0eXBlb2Ygbz09InN0cmluZyIpe2NvbnN0IHM9bihvKTtzIT09byYmKHgkKHQpfHwodFtyXT1zKSxvPXMpfWVbb109ITB9cmV0dXJuIGV9ZnVuY3Rpb24gSSQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaHQoZSx0KXx8KGVbdF09bnVsbCk7cmV0dXJuIGV9ZnVuY3Rpb24gdW4oZSl7Y29uc3QgdD1scyhudWxsKTtmb3IoY29uc3QgciBvZiBhdyhlKSl7dmFyIG49dyQociwyKTtjb25zdCBvPW5bMF0scz1uWzFdO2h0KGUsbykmJihlbihzKT90W29dPUkkKHMpOnMmJnR5cGVvZiBzPT0ib2JqZWN0IiYmcy5jb25zdHJ1Y3Rvcj09PU9iamVjdD90W29dPXVuKHMpOnRbb109cyl9cmV0dXJuIHR9ZnVuY3Rpb24gUiQoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6cmV0dXJuIGU7Y2FzZSJudW1iZXIiOnJldHVybiBBJChlKTtjYXNlImJvb2xlYW4iOnJldHVybiBPJChlKTtjYXNlImJpZ2ludCI6cmV0dXJuIFBoP1BoKGUpOiIwIjtjYXNlInN5bWJvbCI6cmV0dXJuIEloP0loKGUpOiJTeW1ib2woKSI7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiBZcyhlKTtjYXNlImZ1bmN0aW9uIjpjYXNlIm9iamVjdCI6e2lmKGU9PT1udWxsKXJldHVybiBZcyhlKTtjb25zdCB0PWUsbj1Bbyh0LCJ0b1N0cmluZyIpO2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXtjb25zdCByPW4odCk7cmV0dXJuIHR5cGVvZiByPT0ic3RyaW5nIj9yOllzKHIpfXJldHVybiBZcyhlKX1kZWZhdWx0OnJldHVybiBZcyhlKX19ZnVuY3Rpb24gQW8oZSx0KXtmb3IoO2UhPT1udWxsOyl7Y29uc3Qgcj1rJChlLHQpO2lmKHIpe2lmKHIuZ2V0KXJldHVybiBPdChyLmdldCk7aWYodHlwZW9mIHIudmFsdWU9PSJmdW5jdGlvbiIpcmV0dXJuIE90KHIudmFsdWUpfWU9UyQoZSl9ZnVuY3Rpb24gbigpe3JldHVybiBudWxsfXJldHVybiBufWZ1bmN0aW9uIE4kKGUpe3RyeXtyZXR1cm4gQnQoZSwiIiksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IFJoPXNuKFsiYSIsImFiYnIiLCJhY3JvbnltIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiZGkiLCJiZG8iLCJiaWciLCJibGluayIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY2VudGVyIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImNvbnRlbnQiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZCIsImRlY29yYXRvciIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXIiLCJkaXYiLCJkbCIsImR0IiwiZWxlbWVudCIsImVtIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWFycXVlZSIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGVyIiwibmF2Iiwibm9iciIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGljdHVyZSIsInByZSIsInByb2dyZXNzIiwicSIsInJwIiwicnQiLCJydWJ5IiwicyIsInNhbXAiLCJzZWFyY2giLCJzZWN0aW9uIiwic2VsZWN0Iiwic2hhZG93Iiwic2xvdCIsInNtYWxsIiwic291cmNlIiwic3BhY2VyIiwic3BhbiIsInN0cmlrZSIsInN0cm9uZyIsInN0eWxlIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRlbXBsYXRlIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidHIiLCJ0cmFjayIsInR0IiwidSIsInVsIiwidmFyIiwidmlkZW8iLCJ3YnIiXSksVWM9c24oWyJzdmciLCJhIiwiYWx0Z2x5cGgiLCJhbHRnbHlwaGRlZiIsImFsdGdseXBoaXRlbSIsImFuaW1hdGVjb2xvciIsImFuaW1hdGVtb3Rpb24iLCJhbmltYXRldHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcHBhdGgiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJlbnRlcmtleWhpbnQiLCJleHBvcnRwYXJ0cyIsImZpbHRlciIsImZvbnQiLCJnIiwiZ2x5cGgiLCJnbHlwaHJlZiIsImhrZXJuIiwiaW1hZ2UiLCJpbnB1dG1vZGUiLCJsaW5lIiwibGluZWFyZ3JhZGllbnQiLCJtYXJrZXIiLCJtYXNrIiwibWV0YWRhdGEiLCJtcGF0aCIsInBhcnQiLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdHlsZSIsInN3aXRjaCIsInN5bWJvbCIsInRleHQiLCJ0ZXh0cGF0aCIsInRpdGxlIiwidHJlZiIsInRzcGFuIiwidmlldyIsInZrZXJuIl0pLEhjPXNuKFsiZmVCbGVuZCIsImZlQ29sb3JNYXRyaXgiLCJmZUNvbXBvbmVudFRyYW5zZmVyIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRGlzdGFudExpZ2h0IiwiZmVEcm9wU2hhZG93IiwiZmVGbG9vZCIsImZlRnVuY0EiLCJmZUZ1bmNCIiwiZmVGdW5jRyIsImZlRnVuY1IiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNZXJnZU5vZGUiLCJmZU1vcnBob2xvZ3kiLCJmZU9mZnNldCIsImZlUG9pbnRMaWdodCIsImZlU3BlY3VsYXJMaWdodGluZyIsImZlU3BvdExpZ2h0IiwiZmVUaWxlIiwiZmVUdXJidWxlbmNlIl0pLEQkPXNuKFsiYW5pbWF0ZSIsImNvbG9yLXByb2ZpbGUiLCJjdXJzb3IiLCJkaXNjYXJkIiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXNyYyIsImZvbnQtZmFjZS11cmkiLCJmb3JlaWdub2JqZWN0IiwiaGF0Y2giLCJoYXRjaHBhdGgiLCJtZXNoIiwibWVzaGdyYWRpZW50IiwibWVzaHBhdGNoIiwibWVzaHJvdyIsIm1pc3NpbmctZ2x5cGgiLCJzY3JpcHQiLCJzZXQiLCJzb2xpZGNvbG9yIiwidW5rbm93biIsInVzZSJdKSxXYz1zbihbIm1hdGgiLCJtZW5jbG9zZSIsIm1lcnJvciIsIm1mZW5jZWQiLCJtZnJhYyIsIm1nbHlwaCIsIm1pIiwibWxhYmVsZWR0ciIsIm1tdWx0aXNjcmlwdHMiLCJtbiIsIm1vIiwibW92ZXIiLCJtcGFkZGVkIiwibXBoYW50b20iLCJtcm9vdCIsIm1yb3ciLCJtcyIsIm1zcGFjZSIsIm1zcXJ0IiwibXN0eWxlIiwibXN1YiIsIm1zdXAiLCJtc3Vic3VwIiwibXRhYmxlIiwibXRkIiwibXRleHQiLCJtdHIiLCJtdW5kZXIiLCJtdW5kZXJvdmVyIiwibXByZXNjcmlwdHMiXSksTCQ9c24oWyJtYWN0aW9uIiwibWFsaWduZ3JvdXAiLCJtYWxpZ25tYXJrIiwibWxvbmdkaXYiLCJtc2NhcnJpZXMiLCJtc2NhcnJ5IiwibXNncm91cCIsIm1zdGFjayIsIm1zbGluZSIsIm1zcm93Iiwic2VtYW50aWNzIiwiYW5ub3RhdGlvbiIsImFubm90YXRpb24teG1sIiwibXByZXNjcmlwdHMiLCJub25lIl0pLE5oPXNuKFsiI3RleHQiXSksRGg9c24oWyJhY2NlcHQiLCJhY3Rpb24iLCJhbGlnbiIsImFsdCIsImF1dG9jYXBpdGFsaXplIiwiYXV0b2NvbXBsZXRlIiwiYXV0b3BpY3R1cmVpbnBpY3R1cmUiLCJhdXRvcGxheSIsImJhY2tncm91bmQiLCJiZ2NvbG9yIiwiYm9yZGVyIiwiY2FwdHVyZSIsImNlbGxwYWRkaW5nIiwiY2VsbHNwYWNpbmciLCJjaGVja2VkIiwiY2l0ZSIsImNsYXNzIiwiY2xlYXIiLCJjb2xvciIsImNvbHMiLCJjb2xzcGFuIiwiY29tbWFuZCIsImNvbW1hbmRmb3IiLCJjb250cm9scyIsImNvbnRyb2xzbGlzdCIsImNvb3JkcyIsImNyb3Nzb3JpZ2luIiwiZGF0ZXRpbWUiLCJkZWNvZGluZyIsImRlZmF1bHQiLCJkaXIiLCJkaXNhYmxlZCIsImRpc2FibGVwaWN0dXJlaW5waWN0dXJlIiwiZGlzYWJsZXJlbW90ZXBsYXliYWNrIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmN0eXBlIiwiZW50ZXJrZXloaW50IiwiZXhwb3J0cGFydHMiLCJmYWNlIiwiZm9yIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhpZ2giLCJocmVmIiwiaHJlZmxhbmciLCJpZCIsImluZXJ0IiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJsb29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIsIm11dGVkIiwibmFtZSIsIm5vbmNlIiwibm9zaGFkZSIsIm5vdmFsaWRhdGUiLCJub3dyYXAiLCJvcGVuIiwib3B0aW11bSIsInBhcnQiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvcG92ZXIiLCJwb3BvdmVydGFyZ2V0IiwicG9wb3ZlcnRhcmdldGFjdGlvbiIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwicm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzbG90Iiwic3BhbiIsInNyY2xhbmciLCJzdGFydCIsInNyYyIsInNyY3NldCIsInN0ZXAiLCJzdHlsZSIsInN1bW1hcnkiLCJ0YWJpbmRleCIsInRpdGxlIiwidHJhbnNsYXRlIiwidHlwZSIsInVzZW1hcCIsInZhbGlnbiIsInZhbHVlIiwid2lkdGgiLCJ3cmFwIiwieG1sbnMiXSksR2M9c24oWyJhY2NlbnQtaGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFkZGl0aXZlIiwiYWxpZ25tZW50LWJhc2VsaW5lIiwiYW1wbGl0dWRlIiwiYXNjZW50IiwiYXR0cmlidXRlbmFtZSIsImF0dHJpYnV0ZXR5cGUiLCJhemltdXRoIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2VsaW5lLXNoaWZ0IiwiYmVnaW4iLCJiaWFzIiwiYnkiLCJjbGFzcyIsImNsaXAiLCJjbGlwcGF0aHVuaXRzIiwiY2xpcC1wYXRoIiwiY2xpcC1ydWxlIiwiY29sb3IiLCJjb2xvci1pbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwiY29sb3ItcHJvZmlsZSIsImNvbG9yLXJlbmRlcmluZyIsImN4IiwiY3kiLCJkIiwiZHgiLCJkeSIsImRpZmZ1c2Vjb25zdGFudCIsImRpcmVjdGlvbiIsImRpc3BsYXkiLCJkaXZpc29yIiwiZHVyIiwiZWRnZW1vZGUiLCJlbGV2YXRpb24iLCJlbmQiLCJleHBvbmVudCIsImZpbGwiLCJmaWxsLW9wYWNpdHkiLCJmaWxsLXJ1bGUiLCJmaWx0ZXIiLCJmaWx0ZXJ1bml0cyIsImZsb29kLWNvbG9yIiwiZmxvb2Qtb3BhY2l0eSIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zaXplLWFkanVzdCIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXZhcmlhbnQiLCJmb250LXdlaWdodCIsImZ4IiwiZnkiLCJnMSIsImcyIiwiZ2x5cGgtbmFtZSIsImdseXBocmVmIiwiZ3JhZGllbnR1bml0cyIsImdyYWRpZW50dHJhbnNmb3JtIiwiaGVpZ2h0IiwiaHJlZiIsImlkIiwiaW1hZ2UtcmVuZGVyaW5nIiwiaW4iLCJpbjIiLCJpbnRlcmNlcHQiLCJrIiwiazEiLCJrMiIsImszIiwiazQiLCJrZXJuaW5nIiwia2V5cG9pbnRzIiwia2V5c3BsaW5lcyIsImtleXRpbWVzIiwibGFuZyIsImxlbmd0aGFkanVzdCIsImxldHRlci1zcGFjaW5nIiwia2VybmVsbWF0cml4Iiwia2VybmVsdW5pdGxlbmd0aCIsImxpZ2h0aW5nLWNvbG9yIiwibG9jYWwiLCJtYXJrZXItZW5kIiwibWFya2VyLW1pZCIsIm1hcmtlci1zdGFydCIsIm1hcmtlcmhlaWdodCIsIm1hcmtlcnVuaXRzIiwibWFya2Vyd2lkdGgiLCJtYXNrY29udGVudHVuaXRzIiwibWFza3VuaXRzIiwibWF4IiwibWFzayIsIm1hc2stdHlwZSIsIm1lZGlhIiwibWV0aG9kIiwibW9kZSIsIm1pbiIsIm5hbWUiLCJudW1vY3RhdmVzIiwib2Zmc2V0Iiwib3BlcmF0b3IiLCJvcGFjaXR5Iiwib3JkZXIiLCJvcmllbnQiLCJvcmllbnRhdGlvbiIsIm9yaWdpbiIsIm92ZXJmbG93IiwicGFpbnQtb3JkZXIiLCJwYXRoIiwicGF0aGxlbmd0aCIsInBhdHRlcm5jb250ZW50dW5pdHMiLCJwYXR0ZXJudHJhbnNmb3JtIiwicGF0dGVybnVuaXRzIiwicG9pbnRzIiwicHJlc2VydmVhbHBoYSIsInByZXNlcnZlYXNwZWN0cmF0aW8iLCJwcmltaXRpdmV1bml0cyIsInIiLCJyeCIsInJ5IiwicmFkaXVzIiwicmVmeCIsInJlZnkiLCJyZXBlYXRjb3VudCIsInJlcGVhdGR1ciIsInJlc3RhcnQiLCJyZXN1bHQiLCJyb3RhdGUiLCJzY2FsZSIsInNlZWQiLCJzaGFwZS1yZW5kZXJpbmciLCJzbG9wZSIsInNwZWN1bGFyY29uc3RhbnQiLCJzcGVjdWxhcmV4cG9uZW50Iiwic3ByZWFkbWV0aG9kIiwic3RhcnRvZmZzZXQiLCJzdGRkZXZpYXRpb24iLCJzdGl0Y2h0aWxlcyIsInN0b3AtY29sb3IiLCJzdG9wLW9wYWNpdHkiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtbGluZWNhcCIsInN0cm9rZS1saW5lam9pbiIsInN0cm9rZS1taXRlcmxpbWl0Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2UiLCJzdHJva2Utd2lkdGgiLCJzdHlsZSIsInN1cmZhY2VzY2FsZSIsInN5c3RlbWxhbmd1YWdlIiwidGFiaW5kZXgiLCJ0YWJsZXZhbHVlcyIsInRhcmdldHgiLCJ0YXJnZXR5IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtLW9yaWdpbiIsInRleHQtYW5jaG9yIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1yZW5kZXJpbmciLCJ0ZXh0bGVuZ3RoIiwidHlwZSIsInUxIiwidTIiLCJ1bmljb2RlIiwidmFsdWVzIiwidmlld2JveCIsInZpc2liaWxpdHkiLCJ2ZXJzaW9uIiwidmVydC1hZHYteSIsInZlcnQtb3JpZ2luLXgiLCJ2ZXJ0LW9yaWdpbi15Iiwid2lkdGgiLCJ3b3JkLXNwYWNpbmciLCJ3cmFwIiwid3JpdGluZy1tb2RlIiwieGNoYW5uZWxzZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ4IiwieDEiLCJ4MiIsInhtbG5zIiwieSIsInkxIiwieTIiLCJ6Iiwiem9vbWFuZHBhbiJdKSxMaD1zbihbImFjY2VudCIsImFjY2VudHVuZGVyIiwiYWxpZ24iLCJiZXZlbGxlZCIsImNsb3NlIiwiY29sdW1uYWxpZ24iLCJjb2x1bW5saW5lcyIsImNvbHVtbnNwYWNpbmciLCJjb2x1bW5zcGFuIiwiZGVub21hbGlnbiIsImRlcHRoIiwiZGlyIiwiZGlzcGxheSIsImRpc3BsYXlzdHlsZSIsImVuY29kaW5nIiwiZmVuY2UiLCJmcmFtZSIsImhlaWdodCIsImhyZWYiLCJpZCIsImxhcmdlb3AiLCJsZW5ndGgiLCJsaW5ldGhpY2tuZXNzIiwibHF1b3RlIiwibHNwYWNlIiwibWF0aGJhY2tncm91bmQiLCJtYXRoY29sb3IiLCJtYXRoc2l6ZSIsIm1hdGh2YXJpYW50IiwibWF4c2l6ZSIsIm1pbnNpemUiLCJtb3ZhYmxlbGltaXRzIiwibm90YXRpb24iLCJudW1hbGlnbiIsIm9wZW4iLCJyb3dhbGlnbiIsInJvd2xpbmVzIiwicm93c3BhY2luZyIsInJvd3NwYW4iLCJyc3BhY2UiLCJycXVvdGUiLCJzY3JpcHRsZXZlbCIsInNjcmlwdG1pbnNpemUiLCJzY3JpcHRzaXplbXVsdGlwbGllciIsInNlbGVjdGlvbiIsInNlcGFyYXRvciIsInNlcGFyYXRvcnMiLCJzdHJldGNoeSIsInN1YnNjcmlwdHNoaWZ0Iiwic3Vwc2NyaXB0c2hpZnQiLCJzeW1tZXRyaWMiLCJ2b2Zmc2V0Iiwid2lkdGgiLCJ4bWxucyJdKSxTYT1zbihbInhsaW5rOmhyZWYiLCJ4bWw6aWQiLCJ4bGluazp0aXRsZSIsInhtbDpzcGFjZSIsInhtbG5zOnhsaW5rIl0pLCQkPURuKC97e1tcd1xXXSp8Xltcd1xXXSp9fS9nKSxNJD1EbigvPCVbXHdcV10qfF5bXHdcV10qJT4vZyksQiQ9RG4oL1wke1tcd1xXXSovZykscSQ9RG4oL15kYXRhLVtcLVx3Llx1MDBCNy1cdUZGRkZdKyQvKSxGJD1EbigvXmFyaWEtW1wtXHddKyQvKSwkaD1EbigvXig/Oig/Oig/OmZ8aHQpdHBzP3xtYWlsdG98dGVsfGNhbGx0b3xzbXN8Y2lkfHhtcHB8bWF0cml4KTp8W15hLXpdfFthLXorLlwtXSsoPzpbXmEteisuXC06XXwkKSkvaSkseiQ9RG4oL14oPzpcdytzY3JpcHR8ZGF0YSk6L2kpLGokPURuKC9bXHUwMDAwLVx1MDAyMFx1MDBBMFx1MTY4MFx1MTgwRVx1MjAwMC1cdTIwMjlcdTIwNUZcdTMwMDBdL2cpLFYkPURuKC9eaHRtbCQvaSksVSQ9RG4oL15bYS16XVsuXHddKigtWy5cd10rKSskL2kpLHJzPXtlbGVtZW50OjEsdGV4dDozLHByb2dyZXNzaW5nSW5zdHJ1Y3Rpb246Nyxjb21tZW50OjgsZG9jdW1lbnQ6OX0sSCQ9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIHdpbmRvdz4idSI/bnVsbDp3aW5kb3d9LFckPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QifHx0eXBlb2YgdC5jcmVhdGVQb2xpY3khPSJmdW5jdGlvbiIpcmV0dXJuIG51bGw7bGV0IHI9bnVsbDtjb25zdCBvPSJkYXRhLXR0LXBvbGljeS1zdWZmaXgiO24mJm4uaGFzQXR0cmlidXRlKG8pJiYocj1uLmdldEF0dHJpYnV0ZShvKSk7Y29uc3Qgcz0iZG9tcHVyaWZ5Iisocj8iIyIrcjoiIik7dHJ5e3JldHVybiB0LmNyZWF0ZVBvbGljeShzLHtjcmVhdGVIVE1MKGkpe3JldHVybiBpfSxjcmVhdGVTY3JpcHRVUkwoaSl7cmV0dXJuIGl9fSl9Y2F0Y2h7cmV0dXJuIG51bGx9fSxNaD1mdW5jdGlvbigpe3JldHVybnthZnRlclNhbml0aXplQXR0cmlidXRlczpbXSxhZnRlclNhbml0aXplRWxlbWVudHM6W10sYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTTpbXSxiZWZvcmVTYW5pdGl6ZUF0dHJpYnV0ZXM6W10sYmVmb3JlU2FuaXRpemVFbGVtZW50czpbXSxiZWZvcmVTYW5pdGl6ZVNoYWRvd0RPTTpbXSx1cG9uU2FuaXRpemVBdHRyaWJ1dGU6W10sdXBvblNhbml0aXplRWxlbWVudDpbXSx1cG9uU2FuaXRpemVTaGFkb3dOb2RlOltdfX07ZnVuY3Rpb24gY3coKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06SCQoKTtjb25zdCB0PXhlPT5jdyh4ZSk7aWYodC52ZXJzaW9uPSIzLjQuNSIsdC5yZW1vdmVkPVtdLCFlfHwhZS5kb2N1bWVudHx8ZS5kb2N1bWVudC5ub2RlVHlwZSE9PXJzLmRvY3VtZW50fHwhZS5FbGVtZW50KXJldHVybiB0LmlzU3VwcG9ydGVkPSExLHQ7bGV0IG49ZS5kb2N1bWVudDtjb25zdCByPW4sbz1yLmN1cnJlbnRTY3JpcHQscz1lLkRvY3VtZW50RnJhZ21lbnQsaT1lLkhUTUxUZW1wbGF0ZUVsZW1lbnQsYT1lLk5vZGUsbD1lLkVsZW1lbnQsdT1lLk5vZGVGaWx0ZXIsYz1lLk5hbWVkTm9kZU1hcCxmPWM9PT12b2lkIDA/ZS5OYW1lZE5vZGVNYXB8fGUuTW96TmFtZWRBdHRyTWFwOmMsZD1lLkhUTUxGb3JtRWxlbWVudCxwPWUuRE9NUGFyc2VyLG09ZS50cnVzdGVkVHlwZXMseT1sLnByb3RvdHlwZSxfPUFvKHksImNsb25lTm9kZSIpLHc9QW8oeSwicmVtb3ZlIiksdj1Bbyh5LCJuZXh0U2libGluZyIpLGg9QW8oeSwiY2hpbGROb2RlcyIpLGI9QW8oeSwicGFyZW50Tm9kZSIpLHg9YSYmYS5wcm90b3R5cGU/QW8oYS5wcm90b3R5cGUsIm5vZGVUeXBlIik6bnVsbDtpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7Y29uc3QgeGU9bi5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3hlLmNvbnRlbnQmJnhlLmNvbnRlbnQub3duZXJEb2N1bWVudCYmKG49eGUuY29udGVudC5vd25lckRvY3VtZW50KX1sZXQgUyxrPSIiO2NvbnN0IFQ9bixDPVQuaW1wbGVtZW50YXRpb24sUD1ULmNyZWF0ZU5vZGVJdGVyYXRvcixGPVQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxEPVQuZ2V0RWxlbWVudHNCeVRhZ05hbWUsVz1yLmltcG9ydE5vZGU7bGV0IEw9TWgoKTt0LmlzU3VwcG9ydGVkPXR5cGVvZiBhdz09ImZ1bmN0aW9uIiYmdHlwZW9mIGI9PSJmdW5jdGlvbiImJkMmJkMuY3JlYXRlSFRNTERvY3VtZW50IT09dm9pZCAwO2NvbnN0IGo9JCQsST1NJCxWPUIkLEI9cSQsaWU9RiQsbmU9eiQsVmU9aiQsTmU9VSQ7bGV0IGV0PSRoLHZlPW51bGw7Y29uc3QgSWU9UmUoe30sWy4uLlJoLC4uLlVjLC4uLkhjLC4uLldjLC4uLk5oXSk7bGV0IGVlPW51bGw7Y29uc3Qgej1SZSh7fSxbLi4uRGgsLi4uR2MsLi4uTGgsLi4uU2FdKTtsZXQgWT1PYmplY3Quc2VhbChscyhudWxsLHt0YWdOYW1lQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZU5hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTohMX19KSksSj1udWxsLGxlPW51bGw7Y29uc3Qgd2U9T2JqZWN0LnNlYWwobHMobnVsbCx7dGFnQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZUNoZWNrOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsfX0pKTtsZXQgdGU9ITAsRT0hMCxPPSExLHE9ITAsSz0hMSxIPSEwLFg9ITEsY2U9ITEsYWU9ITEsb2U9ITEsWj0hMSxrZT0hMSxwZT0hMCxiZT0hMTtjb25zdCBBZT0idXNlci1jb250ZW50LSI7bGV0IHplPSEwLEhlPSExLFdlPXt9LEplPW51bGw7Y29uc3QgcHQ9UmUoe30sWyJhbm5vdGF0aW9uLXhtbCIsImF1ZGlvIiwiY29sZ3JvdXAiLCJkZXNjIiwiZm9yZWlnbm9iamVjdCIsImhlYWQiLCJpZnJhbWUiLCJtYXRoIiwibWkiLCJtbiIsIm1vIiwibXMiLCJtdGV4dCIsIm5vZW1iZWQiLCJub2ZyYW1lcyIsIm5vc2NyaXB0IiwicGxhaW50ZXh0Iiwic2NyaXB0Iiwic3R5bGUiLCJzdmciLCJ0ZW1wbGF0ZSIsInRoZWFkIiwidGl0bGUiLCJ2aWRlbyIsInhtcCJdKTtsZXQgYW49bnVsbDtjb25zdCBXdD1SZSh7fSxbImF1ZGlvIiwidmlkZW8iLCJpbWciLCJzb3VyY2UiLCJpbWFnZSIsInRyYWNrIl0pO2xldCBncj1udWxsO2NvbnN0IE1zPVJlKHt9LFsiYWx0IiwiY2xhc3MiLCJmb3IiLCJpZCIsImxhYmVsIiwibmFtZSIsInBhdHRlcm4iLCJwbGFjZWhvbGRlciIsInJvbGUiLCJzdW1tYXJ5IiwidGl0bGUiLCJ2YWx1ZSIsInN0eWxlIiwieG1sbnMiXSksRHQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLFh0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseW49Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2xldCB5cj15bixabD0hMSxlYz1udWxsO2NvbnN0IEx3PVJlKHt9LFtEdCxYdCx5bl0sVmMpO2xldCB0Yz1SZSh7fSxbIm1pIiwibW8iLCJtbiIsIm1zIiwibXRleHQiXSksbmM9UmUoe30sWyJhbm5vdGF0aW9uLXhtbCJdKTtjb25zdCAkdz1SZSh7fSxbInRpdGxlIiwic3R5bGUiLCJmb250IiwiYSIsInNjcmlwdCJdKTtsZXQgQnM9bnVsbDtjb25zdCBNdz1bImFwcGxpY2F0aW9uL3hodG1sK3htbCIsInRleHQvaHRtbCJdLEJ3PSJ0ZXh0L2h0bWwiO2xldCBQdD1udWxsLFFvPW51bGw7Y29uc3QgcXc9bi5jcmVhdGVFbGVtZW50KCJmb3JtIiksQ2Q9ZnVuY3Rpb24oQSl7cmV0dXJuIEEgaW5zdGFuY2VvZiBSZWdFeHB8fEEgaW5zdGFuY2VvZiBGdW5jdGlvbn0scmM9ZnVuY3Rpb24oKXtsZXQgQT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307aWYoUW8mJlFvPT09QSlyZXR1cm47KCFBfHx0eXBlb2YgQSE9Im9iamVjdCIpJiYoQT17fSksQT11bihBKSxCcz1Ndy5pbmRleE9mKEEuUEFSU0VSX01FRElBX1RZUEUpPT09LTE/Qnc6QS5QQVJTRVJfTUVESUFfVFlQRSxQdD1Ccz09PSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiP1ZjOnRpLHZlPWh0KEEsIkFMTE9XRURfVEFHUyIpJiZlbihBLkFMTE9XRURfVEFHUyk/UmUoe30sQS5BTExPV0VEX1RBR1MsUHQpOkllLGVlPWh0KEEsIkFMTE9XRURfQVRUUiIpJiZlbihBLkFMTE9XRURfQVRUUik/UmUoe30sQS5BTExPV0VEX0FUVFIsUHQpOnosZWM9aHQoQSwiQUxMT1dFRF9OQU1FU1BBQ0VTIikmJmVuKEEuQUxMT1dFRF9OQU1FU1BBQ0VTKT9SZSh7fSxBLkFMTE9XRURfTkFNRVNQQUNFUyxWYyk6THcsZ3I9aHQoQSwiQUREX1VSSV9TQUZFX0FUVFIiKSYmZW4oQS5BRERfVVJJX1NBRkVfQVRUUik/UmUodW4oTXMpLEEuQUREX1VSSV9TQUZFX0FUVFIsUHQpOk1zLGFuPWh0KEEsIkFERF9EQVRBX1VSSV9UQUdTIikmJmVuKEEuQUREX0RBVEFfVVJJX1RBR1MpP1JlKHVuKFd0KSxBLkFERF9EQVRBX1VSSV9UQUdTLFB0KTpXdCxKZT1odChBLCJGT1JCSURfQ09OVEVOVFMiKSYmZW4oQS5GT1JCSURfQ09OVEVOVFMpP1JlKHt9LEEuRk9SQklEX0NPTlRFTlRTLFB0KTpwdCxKPWh0KEEsIkZPUkJJRF9UQUdTIikmJmVuKEEuRk9SQklEX1RBR1MpP1JlKHt9LEEuRk9SQklEX1RBR1MsUHQpOnVuKHt9KSxsZT1odChBLCJGT1JCSURfQVRUUiIpJiZlbihBLkZPUkJJRF9BVFRSKT9SZSh7fSxBLkZPUkJJRF9BVFRSLFB0KTp1bih7fSksV2U9aHQoQSwiVVNFX1BST0ZJTEVTIik/QS5VU0VfUFJPRklMRVMmJnR5cGVvZiBBLlVTRV9QUk9GSUxFUz09Im9iamVjdCI/dW4oQS5VU0VfUFJPRklMRVMpOkEuVVNFX1BST0ZJTEVTOiExLHRlPUEuQUxMT1dfQVJJQV9BVFRSIT09ITEsRT1BLkFMTE9XX0RBVEFfQVRUUiE9PSExLE89QS5BTExPV19VTktOT1dOX1BST1RPQ09MU3x8ITEscT1BLkFMTE9XX1NFTEZfQ0xPU0VfSU5fQVRUUiE9PSExLEs9QS5TQUZFX0ZPUl9URU1QTEFURVN8fCExLEg9QS5TQUZFX0ZPUl9YTUwhPT0hMSxYPUEuV0hPTEVfRE9DVU1FTlR8fCExLG9lPUEuUkVUVVJOX0RPTXx8ITEsWj1BLlJFVFVSTl9ET01fRlJBR01FTlR8fCExLGtlPUEuUkVUVVJOX1RSVVNURURfVFlQRXx8ITEsYWU9QS5GT1JDRV9CT0RZfHwhMSxwZT1BLlNBTklUSVpFX0RPTSE9PSExLGJlPUEuU0FOSVRJWkVfTkFNRURfUFJPUFN8fCExLHplPUEuS0VFUF9DT05URU5UIT09ITEsSGU9QS5JTl9QTEFDRXx8ITEsZXQ9TiQoQS5BTExPV0VEX1VSSV9SRUdFWFApP0EuQUxMT1dFRF9VUklfUkVHRVhQOiRoLHlyPXR5cGVvZiBBLk5BTUVTUEFDRT09InN0cmluZyI/QS5OQU1FU1BBQ0U6eW4sdGM9aHQoQSwiTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTIikmJkEuTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTJiZ0eXBlb2YgQS5NQVRITUxfVEVYVF9JTlRFR1JBVElPTl9QT0lOVFM9PSJvYmplY3QiP3VuKEEuTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTKTpSZSh7fSxbIm1pIiwibW8iLCJtbiIsIm1zIiwibXRleHQiXSksbmM9aHQoQSwiSFRNTF9JTlRFR1JBVElPTl9QT0lOVFMiKSYmQS5IVE1MX0lOVEVHUkFUSU9OX1BPSU5UUyYmdHlwZW9mIEEuSFRNTF9JTlRFR1JBVElPTl9QT0lOVFM9PSJvYmplY3QiP3VuKEEuSFRNTF9JTlRFR1JBVElPTl9QT0lOVFMpOlJlKHt9LFsiYW5ub3RhdGlvbi14bWwiXSk7Y29uc3QgUT1odChBLCJDVVNUT01fRUxFTUVOVF9IQU5ETElORyIpJiZBLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiZ0eXBlb2YgQS5DVVNUT01fRUxFTUVOVF9IQU5ETElORz09Im9iamVjdCI/dW4oQS5DVVNUT01fRUxFTUVOVF9IQU5ETElORyk6bHMobnVsbCk7aWYoWT1scyhudWxsKSxodChRLCJ0YWdOYW1lQ2hlY2siKSYmQ2QoUS50YWdOYW1lQ2hlY2spJiYoWS50YWdOYW1lQ2hlY2s9US50YWdOYW1lQ2hlY2spLGh0KFEsImF0dHJpYnV0ZU5hbWVDaGVjayIpJiZDZChRLmF0dHJpYnV0ZU5hbWVDaGVjaykmJihZLmF0dHJpYnV0ZU5hbWVDaGVjaz1RLmF0dHJpYnV0ZU5hbWVDaGVjayksaHQoUSwiYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzIikmJnR5cGVvZiBRLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cz09ImJvb2xlYW4iJiYoWS5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM9US5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMpLEsmJihFPSExKSxaJiYob2U9ITApLFdlJiYodmU9UmUoe30sTmgpLGVlPWxzKG51bGwpLFdlLmh0bWw9PT0hMCYmKFJlKHZlLFJoKSxSZShlZSxEaCkpLFdlLnN2Zz09PSEwJiYoUmUodmUsVWMpLFJlKGVlLEdjKSxSZShlZSxTYSkpLFdlLnN2Z0ZpbHRlcnM9PT0hMCYmKFJlKHZlLEhjKSxSZShlZSxHYyksUmUoZWUsU2EpKSxXZS5tYXRoTWw9PT0hMCYmKFJlKHZlLFdjKSxSZShlZSxMaCksUmUoZWUsU2EpKSksd2UudGFnQ2hlY2s9bnVsbCx3ZS5hdHRyaWJ1dGVDaGVjaz1udWxsLGh0KEEsIkFERF9UQUdTIikmJih0eXBlb2YgQS5BRERfVEFHUz09ImZ1bmN0aW9uIj93ZS50YWdDaGVjaz1BLkFERF9UQUdTOmVuKEEuQUREX1RBR1MpJiYodmU9PT1JZSYmKHZlPXVuKHZlKSksUmUodmUsQS5BRERfVEFHUyxQdCkpKSxodChBLCJBRERfQVRUUiIpJiYodHlwZW9mIEEuQUREX0FUVFI9PSJmdW5jdGlvbiI/d2UuYXR0cmlidXRlQ2hlY2s9QS5BRERfQVRUUjplbihBLkFERF9BVFRSKSYmKGVlPT09eiYmKGVlPXVuKGVlKSksUmUoZWUsQS5BRERfQVRUUixQdCkpKSxodChBLCJBRERfVVJJX1NBRkVfQVRUUiIpJiZlbihBLkFERF9VUklfU0FGRV9BVFRSKSYmUmUoZ3IsQS5BRERfVVJJX1NBRkVfQVRUUixQdCksaHQoQSwiRk9SQklEX0NPTlRFTlRTIikmJmVuKEEuRk9SQklEX0NPTlRFTlRTKSYmKEplPT09cHQmJihKZT11bihKZSkpLFJlKEplLEEuRk9SQklEX0NPTlRFTlRTLFB0KSksaHQoQSwiQUREX0ZPUkJJRF9DT05URU5UUyIpJiZlbihBLkFERF9GT1JCSURfQ09OVEVOVFMpJiYoSmU9PT1wdCYmKEplPXVuKEplKSksUmUoSmUsQS5BRERfRk9SQklEX0NPTlRFTlRTLFB0KSksemUmJih2ZVsiI3RleHQiXT0hMCksWCYmUmUodmUsWyJodG1sIiwiaGVhZCIsImJvZHkiXSksdmUudGFibGUmJihSZSh2ZSxbInRib2R5Il0pLGRlbGV0ZSBKLnRib2R5KSxBLlRSVVNURURfVFlQRVNfUE9MSUNZKXtpZih0eXBlb2YgQS5UUlVTVEVEX1RZUEVTX1BPTElDWS5jcmVhdGVIVE1MIT0iZnVuY3Rpb24iKXRocm93IHhhKCdUUlVTVEVEX1RZUEVTX1BPTElDWSBjb25maWd1cmF0aW9uIG9wdGlvbiBtdXN0IHByb3ZpZGUgYSAiY3JlYXRlSFRNTCIgaG9vay4nKTtpZih0eXBlb2YgQS5UUlVTVEVEX1RZUEVTX1BPTElDWS5jcmVhdGVTY3JpcHRVUkwhPSJmdW5jdGlvbiIpdGhyb3cgeGEoJ1RSVVNURURfVFlQRVNfUE9MSUNZIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG11c3QgcHJvdmlkZSBhICJjcmVhdGVTY3JpcHRVUkwiIGhvb2suJyk7Uz1BLlRSVVNURURfVFlQRVNfUE9MSUNZLGs9Uy5jcmVhdGVIVE1MKCIiKX1lbHNlIFM9PT12b2lkIDAmJihTPVckKG0sbykpLFMhPT1udWxsJiZ0eXBlb2Ygaz09InN0cmluZyImJihrPVMuY3JlYXRlSFRNTCgiIikpO3NuJiZzbihBKSxRbz1BfSxBZD1SZSh7fSxbLi4uVWMsLi4uSGMsLi4uRCRdKSxPZD1SZSh7fSxbLi4uV2MsLi4uTCRdKSxGdz1mdW5jdGlvbihBKXtsZXQgUT1iKEEpOyghUXx8IVEudGFnTmFtZSkmJihRPXtuYW1lc3BhY2VVUkk6eXIsdGFnTmFtZToidGVtcGxhdGUifSk7Y29uc3QgbWU9dGkoQS50YWdOYW1lKSxxZT10aShRLnRhZ05hbWUpO3JldHVybiBlY1tBLm5hbWVzcGFjZVVSSV0/QS5uYW1lc3BhY2VVUkk9PT1YdD9RLm5hbWVzcGFjZVVSST09PXluP21lPT09InN2ZyI6US5uYW1lc3BhY2VVUkk9PT1EdD9tZT09PSJzdmciJiYocWU9PT0iYW5ub3RhdGlvbi14bWwifHx0Y1txZV0pOiEhQWRbbWVdOkEubmFtZXNwYWNlVVJJPT09RHQ/US5uYW1lc3BhY2VVUkk9PT15bj9tZT09PSJtYXRoIjpRLm5hbWVzcGFjZVVSST09PVh0P21lPT09Im1hdGgiJiZuY1txZV06ISFPZFttZV06QS5uYW1lc3BhY2VVUkk9PT15bj9RLm5hbWVzcGFjZVVSST09PVh0JiYhbmNbcWVdfHxRLm5hbWVzcGFjZVVSST09PUR0JiYhdGNbcWVdPyExOiFPZFttZV0mJigkd1ttZV18fCFBZFttZV0pOiEhKEJzPT09ImFwcGxpY2F0aW9uL3hodG1sK3htbCImJmVjW0EubmFtZXNwYWNlVVJJXSk6ITF9LCRuPWZ1bmN0aW9uKEEpe3RzKHQucmVtb3ZlZCx7ZWxlbWVudDpBfSk7dHJ5e2IoQSkucmVtb3ZlQ2hpbGQoQSl9Y2F0Y2h7dyhBKX19LHlvPWZ1bmN0aW9uKEEsUSl7dHJ5e3RzKHQucmVtb3ZlZCx7YXR0cmlidXRlOlEuZ2V0QXR0cmlidXRlTm9kZShBKSxmcm9tOlF9KX1jYXRjaHt0cyh0LnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206UX0pfWlmKFEucmVtb3ZlQXR0cmlidXRlKEEpLEE9PT0iaXMiKWlmKG9lfHxaKXRyeXskbihRKX1jYXRjaHt9ZWxzZSB0cnl7US5zZXRBdHRyaWJ1dGUoQSwiIil9Y2F0Y2h7fX0sUGQ9ZnVuY3Rpb24oQSl7bGV0IFE9bnVsbCxtZT1udWxsO2lmKGFlKUE9IjxyZW1vdmU+PC9yZW1vdmU+IitBO2Vsc2V7Y29uc3QgRXQ9QWgoQSwvXltcclxuXHQgXSsvKTttZT1FdCYmRXRbMF19QnM9PT0iYXBwbGljYXRpb24veGh0bWwreG1sIiYmeXI9PT15biYmKEE9JzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48L2hlYWQ+PGJvZHk+JytBKyI8L2JvZHk+PC9odG1sPiIpO2NvbnN0IHFlPVM/Uy5jcmVhdGVIVE1MKEEpOkE7aWYoeXI9PT15bil0cnl7UT1uZXcgcCgpLnBhcnNlRnJvbVN0cmluZyhxZSxCcyl9Y2F0Y2h7fWlmKCFRfHwhUS5kb2N1bWVudEVsZW1lbnQpe1E9Qy5jcmVhdGVEb2N1bWVudCh5ciwidGVtcGxhdGUiLG51bGwpO3RyeXtRLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9Wmw/azpxZX1jYXRjaHt9fWNvbnN0IGt0PVEuYm9keXx8US5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIEEmJm1lJiZrdC5pbnNlcnRCZWZvcmUobi5jcmVhdGVUZXh0Tm9kZShtZSksa3QuY2hpbGROb2Rlc1swXXx8bnVsbCkseXI9PT15bj9ELmNhbGwoUSxYPyJodG1sIjoiYm9keSIpWzBdOlg/US5kb2N1bWVudEVsZW1lbnQ6a3R9LElkPWZ1bmN0aW9uKEEpe3JldHVybiBQLmNhbGwoQS5vd25lckRvY3VtZW50fHxBLEEsdS5TSE9XX0VMRU1FTlR8dS5TSE9XX0NPTU1FTlR8dS5TSE9XX1RFWFR8dS5TSE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT058dS5TSE9XX0NEQVRBX1NFQ1RJT04sbnVsbCl9LFJkPWZ1bmN0aW9uKEEpe0Eubm9ybWFsaXplKCk7Y29uc3QgUT1QLmNhbGwoQS5vd25lckRvY3VtZW50fHxBLEEsdS5TSE9XX1RFWFR8dS5TSE9XX0NPTU1FTlR8dS5TSE9XX0NEQVRBX1NFQ1RJT058dS5TSE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT04sbnVsbCk7bGV0IG1lPVEubmV4dE5vZGUoKTtmb3IoO21lOyl7bGV0IHFlPW1lLmRhdGE7ZXMoW2osSSxWXSxrdD0+e3FlPW5zKHFlLGt0LCIgIil9KSxtZS5kYXRhPXFlLG1lPVEubmV4dE5vZGUoKX19LG9jPWZ1bmN0aW9uKEEpe3JldHVybiBBIGluc3RhbmNlb2YgZCYmKHR5cGVvZiBBLm5vZGVOYW1lIT0ic3RyaW5nInx8dHlwZW9mIEEudGV4dENvbnRlbnQhPSJzdHJpbmcifHx0eXBlb2YgQS5yZW1vdmVDaGlsZCE9ImZ1bmN0aW9uInx8IShBLmF0dHJpYnV0ZXMgaW5zdGFuY2VvZiBmKXx8dHlwZW9mIEEucmVtb3ZlQXR0cmlidXRlIT0iZnVuY3Rpb24ifHx0eXBlb2YgQS5zZXRBdHRyaWJ1dGUhPSJmdW5jdGlvbiJ8fHR5cGVvZiBBLm5hbWVzcGFjZVVSSSE9InN0cmluZyJ8fHR5cGVvZiBBLmluc2VydEJlZm9yZSE9ImZ1bmN0aW9uInx8dHlwZW9mIEEuaGFzQ2hpbGROb2RlcyE9ImZ1bmN0aW9uIil9LEdpPWZ1bmN0aW9uKEEpe2lmKCF4fHx0eXBlb2YgQSE9Im9iamVjdCJ8fEE9PT1udWxsKXJldHVybiExO3RyeXtyZXR1cm4gdHlwZW9mIHgoQSk9PSJudW1iZXIifWNhdGNoe3JldHVybiExfX07ZnVuY3Rpb24gdnIoeGUsQSxRKXtlcyh4ZSxtZT0+e21lLmNhbGwodCxBLFEsUW8pfSl9Y29uc3QgTmQ9ZnVuY3Rpb24oQSl7bGV0IFE9bnVsbDtpZih2cihMLmJlZm9yZVNhbml0aXplRWxlbWVudHMsQSxudWxsKSxvYyhBKSlyZXR1cm4gJG4oQSksITA7Y29uc3QgbWU9UHQoQS5ub2RlTmFtZSk7aWYodnIoTC51cG9uU2FuaXRpemVFbGVtZW50LEEse3RhZ05hbWU6bWUsYWxsb3dlZFRhZ3M6dmV9KSxIJiZBLmhhc0NoaWxkTm9kZXMoKSYmIUdpKEEuZmlyc3RFbGVtZW50Q2hpbGQpJiZCdCgvPFsvXHchXS9nLEEuaW5uZXJIVE1MKSYmQnQoLzxbL1x3IV0vZyxBLnRleHRDb250ZW50KXx8SCYmQS5uYW1lc3BhY2VVUkk9PT15biYmbWU9PT0ic3R5bGUiJiZHaShBLmZpcnN0RWxlbWVudENoaWxkKXx8QS5ub2RlVHlwZT09PXJzLnByb2dyZXNzaW5nSW5zdHJ1Y3Rpb258fEgmJkEubm9kZVR5cGU9PT1ycy5jb21tZW50JiZCdCgvPFsvXHddL2csQS5kYXRhKSlyZXR1cm4gJG4oQSksITA7aWYoSlttZV18fCEod2UudGFnQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmd2UudGFnQ2hlY2sobWUpKSYmIXZlW21lXSl7aWYoIUpbbWVdJiZMZChtZSkmJihZLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmQnQoWS50YWdOYW1lQ2hlY2ssbWUpfHxZLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZZLnRhZ05hbWVDaGVjayhtZSkpKXJldHVybiExO2lmKHplJiYhSmVbbWVdKXtjb25zdCBxZT1iKEEpfHxBLnBhcmVudE5vZGUsa3Q9aChBKXx8QS5jaGlsZE5vZGVzO2lmKGt0JiZxZSl7Y29uc3QgRXQ9a3QubGVuZ3RoO2ZvcihsZXQgbG49RXQtMTtsbj49MDstLWxuKXtjb25zdCBIcj1fKGt0W2xuXSwhMCk7cWUuaW5zZXJ0QmVmb3JlKEhyLHYoQSkpfX19cmV0dXJuICRuKEEpLCEwfXJldHVybiBBIGluc3RhbmNlb2YgbCYmIUZ3KEEpfHwobWU9PT0ibm9zY3JpcHQifHxtZT09PSJub2VtYmVkInx8bWU9PT0ibm9mcmFtZXMiKSYmQnQoLzxcL25vKHNjcmlwdHxlbWJlZHxmcmFtZXMpL2ksQS5pbm5lckhUTUwpPygkbihBKSwhMCk6KEsmJkEubm9kZVR5cGU9PT1ycy50ZXh0JiYoUT1BLnRleHRDb250ZW50LGVzKFtqLEksVl0scWU9PntRPW5zKFEscWUsIiAiKX0pLEEudGV4dENvbnRlbnQhPT1RJiYodHModC5yZW1vdmVkLHtlbGVtZW50OkEuY2xvbmVOb2RlKCl9KSxBLnRleHRDb250ZW50PVEpKSx2cihMLmFmdGVyU2FuaXRpemVFbGVtZW50cyxBLG51bGwpLCExKX0sRGQ9ZnVuY3Rpb24oQSxRLG1lKXtpZihsZVtRXXx8cGUmJihRPT09ImlkInx8UT09PSJuYW1lIikmJihtZSBpbiBufHxtZSBpbiBxdykpcmV0dXJuITE7Y29uc3QgcWU9ZWVbUV18fHdlLmF0dHJpYnV0ZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJndlLmF0dHJpYnV0ZUNoZWNrKFEsQSk7aWYoIShFJiYhbGVbUV0mJkJ0KEIsUSkpKXtpZighKHRlJiZCdChpZSxRKSkpe2lmKCFxZXx8bGVbUV0pe2lmKCEoTGQoQSkmJihZLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmQnQoWS50YWdOYW1lQ2hlY2ssQSl8fFkudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlkudGFnTmFtZUNoZWNrKEEpKSYmKFkuYXR0cmlidXRlTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZCdChZLmF0dHJpYnV0ZU5hbWVDaGVjayxRKXx8WS5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmWS5hdHRyaWJ1dGVOYW1lQ2hlY2soUSxBKSl8fFE9PT0iaXMiJiZZLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyYmKFkudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZCdChZLnRhZ05hbWVDaGVjayxtZSl8fFkudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlkudGFnTmFtZUNoZWNrKG1lKSkpKXJldHVybiExfWVsc2UgaWYoIWdyW1FdKXtpZighQnQoZXQsbnMobWUsVmUsIiIpKSl7aWYoISgoUT09PSJzcmMifHxRPT09InhsaW5rOmhyZWYifHxRPT09ImhyZWYiKSYmQSE9PSJzY3JpcHQiJiZPaChtZSwiZGF0YToiKT09PTAmJmFuW0FdKSl7aWYoIShPJiYhQnQobmUsbnMobWUsVmUsIiIpKSkpe2lmKG1lKXJldHVybiExfX19fX19cmV0dXJuITB9LHp3PVJlKHt9LFsiYW5ub3RhdGlvbi14bWwiLCJjb2xvci1wcm9maWxlIiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXNyYyIsImZvbnQtZmFjZS11cmkiLCJtaXNzaW5nLWdseXBoIl0pLExkPWZ1bmN0aW9uKEEpe3JldHVybiF6d1t0aShBKV0mJkJ0KE5lLEEpfSwkZD1mdW5jdGlvbihBKXt2cihMLmJlZm9yZVNhbml0aXplQXR0cmlidXRlcyxBLG51bGwpO2NvbnN0IFE9QS5hdHRyaWJ1dGVzO2lmKCFRfHxvYyhBKSlyZXR1cm47Y29uc3QgbWU9e2F0dHJOYW1lOiIiLGF0dHJWYWx1ZToiIixrZWVwQXR0cjohMCxhbGxvd2VkQXR0cmlidXRlczplZSxmb3JjZUtlZXBBdHRyOnZvaWQgMH07bGV0IHFlPVEubGVuZ3RoO2Zvcig7cWUtLTspe2NvbnN0IGt0PVFbcWVdLEV0PWt0Lm5hbWUsbG49a3QubmFtZXNwYWNlVVJJLEhyPWt0LnZhbHVlLGJyPVB0KEV0KSxpYz1IcjtsZXQgTHQ9RXQ9PT0idmFsdWUiP2ljOkMkKGljKTtpZihtZS5hdHRyTmFtZT1icixtZS5hdHRyVmFsdWU9THQsbWUua2VlcEF0dHI9ITAsbWUuZm9yY2VLZWVwQXR0cj12b2lkIDAsdnIoTC51cG9uU2FuaXRpemVBdHRyaWJ1dGUsQSxtZSksTHQ9bWUuYXR0clZhbHVlLGJlJiYoYnI9PT0iaWQifHxicj09PSJuYW1lIikmJk9oKEx0LEFlKSE9PTAmJih5byhFdCxBKSxMdD1BZStMdCksSCYmQnQoLygoLS0hP3xdKT4pfDxcLyhzdHlsZXxzY3JpcHR8dGl0bGV8eG1wfHRleHRhcmVhfG5vc2NyaXB0fGlmcmFtZXxub2VtYmVkfG5vZnJhbWVzKS9pLEx0KSl7eW8oRXQsQSk7Y29udGludWV9aWYoYnI9PT0iYXR0cmlidXRlbmFtZSImJkFoKEx0LCJocmVmIikpe3lvKEV0LEEpO2NvbnRpbnVlfWlmKG1lLmZvcmNlS2VlcEF0dHIpY29udGludWU7aWYoIW1lLmtlZXBBdHRyKXt5byhFdCxBKTtjb250aW51ZX1pZighcSYmQnQoL1wvPi9pLEx0KSl7eW8oRXQsQSk7Y29udGludWV9SyYmZXMoW2osSSxWXSxCZD0+e0x0PW5zKEx0LEJkLCIgIil9KTtjb25zdCBNZD1QdChBLm5vZGVOYW1lKTtpZighRGQoTWQsYnIsTHQpKXt5byhFdCxBKTtjb250aW51ZX1pZihTJiZ0eXBlb2YgbT09Im9iamVjdCImJnR5cGVvZiBtLmdldEF0dHJpYnV0ZVR5cGU9PSJmdW5jdGlvbiImJiFsbilzd2l0Y2gobS5nZXRBdHRyaWJ1dGVUeXBlKE1kLGJyKSl7Y2FzZSJUcnVzdGVkSFRNTCI6e0x0PVMuY3JlYXRlSFRNTChMdCk7YnJlYWt9Y2FzZSJUcnVzdGVkU2NyaXB0VVJMIjp7THQ9Uy5jcmVhdGVTY3JpcHRVUkwoTHQpO2JyZWFrfX1pZihMdCE9PWljKXRyeXtsbj9BLnNldEF0dHJpYnV0ZU5TKGxuLEV0LEx0KTpBLnNldEF0dHJpYnV0ZShFdCxMdCksb2MoQSk/JG4oQSk6Q2godC5yZW1vdmVkKX1jYXRjaHt5byhFdCxBKX19dnIoTC5hZnRlclNhbml0aXplQXR0cmlidXRlcyxBLG51bGwpfSxzYz1mdW5jdGlvbihBKXtsZXQgUT1udWxsO2NvbnN0IG1lPUlkKEEpO2Zvcih2cihMLmJlZm9yZVNhbml0aXplU2hhZG93RE9NLEEsbnVsbCk7UT1tZS5uZXh0Tm9kZSgpOyl2cihMLnVwb25TYW5pdGl6ZVNoYWRvd05vZGUsUSxudWxsKSxOZChRKSwkZChRKSxRLmNvbnRlbnQgaW5zdGFuY2VvZiBzJiZzYyhRLmNvbnRlbnQpO3ZyKEwuYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTSxBLG51bGwpfSxLaT1mdW5jdGlvbihBKXtpZihBLm5vZGVUeXBlPT09cnMuZWxlbWVudCYmQS5zaGFkb3dSb290IGluc3RhbmNlb2Ygcyl7Y29uc3QgcWU9QS5zaGFkb3dSb290O0tpKHFlKSxzYyhxZSl9Y29uc3QgUT1BLmNoaWxkTm9kZXM7aWYoIVEpcmV0dXJuO2NvbnN0IG1lPVtdO2VzKFEscWU9Pnt0cyhtZSxxZSl9KTtmb3IoY29uc3QgcWUgb2YgbWUpS2kocWUpfTtyZXR1cm4gdC5zYW5pdGl6ZT1mdW5jdGlvbih4ZSl7bGV0IEE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LFE9bnVsbCxtZT1udWxsLHFlPW51bGwsa3Q9bnVsbDtpZihabD0heGUsWmwmJih4ZT0iPCEtLT4iKSx0eXBlb2YgeGUhPSJzdHJpbmciJiYhR2koeGUpJiYoeGU9UiQoeGUpLHR5cGVvZiB4ZSE9InN0cmluZyIpKXRocm93IHhhKCJkaXJ0eSBpcyBub3QgYSBzdHJpbmcsIGFib3J0aW5nIik7aWYoIXQuaXNTdXBwb3J0ZWQpcmV0dXJuIHhlO2lmKGNlfHxyYyhBKSx0LnJlbW92ZWQ9W10sdHlwZW9mIHhlPT0ic3RyaW5nIiYmKEhlPSExKSxIZSl7Y29uc3QgSHI9eGUubm9kZU5hbWU7aWYodHlwZW9mIEhyPT0ic3RyaW5nIil7Y29uc3QgYnI9UHQoSHIpO2lmKCF2ZVticl18fEpbYnJdKXRocm93IHhhKCJyb290IG5vZGUgaXMgZm9yYmlkZGVuIGFuZCBjYW5ub3QgYmUgc2FuaXRpemVkIGluLXBsYWNlIil9S2koeGUpfWVsc2UgaWYoR2koeGUpKVE9UGQoIjwhLS0tLT4iKSxtZT1RLm93bmVyRG9jdW1lbnQuaW1wb3J0Tm9kZSh4ZSwhMCksbWUubm9kZVR5cGU9PT1ycy5lbGVtZW50JiZtZS5ub2RlTmFtZT09PSJCT0RZInx8bWUubm9kZU5hbWU9PT0iSFRNTCI/UT1tZTpRLmFwcGVuZENoaWxkKG1lKSxLaShtZSk7ZWxzZXtpZighb2UmJiFLJiYhWCYmeGUuaW5kZXhPZigiPCIpPT09LTEpcmV0dXJuIFMmJmtlP1MuY3JlYXRlSFRNTCh4ZSk6eGU7aWYoUT1QZCh4ZSksIVEpcmV0dXJuIG9lP251bGw6a2U/azoiIn1RJiZhZSYmJG4oUS5maXJzdENoaWxkKTtjb25zdCBFdD1JZChIZT94ZTpRKTtmb3IoO3FlPUV0Lm5leHROb2RlKCk7KU5kKHFlKSwkZChxZSkscWUuY29udGVudCBpbnN0YW5jZW9mIHMmJnNjKHFlLmNvbnRlbnQpO2lmKEhlKXJldHVybiBLJiZSZCh4ZSkseGU7aWYob2Upe2lmKEsmJlJkKFEpLFopZm9yKGt0PUYuY2FsbChRLm93bmVyRG9jdW1lbnQpO1EuZmlyc3RDaGlsZDspa3QuYXBwZW5kQ2hpbGQoUS5maXJzdENoaWxkKTtlbHNlIGt0PVE7cmV0dXJuKGVlLnNoYWRvd3Jvb3R8fGVlLnNoYWRvd3Jvb3Rtb2RlKSYmKGt0PVcuY2FsbChyLGt0LCEwKSksa3R9bGV0IGxuPVg/US5vdXRlckhUTUw6US5pbm5lckhUTUw7cmV0dXJuIFgmJnZlWyIhZG9jdHlwZSJdJiZRLm93bmVyRG9jdW1lbnQmJlEub3duZXJEb2N1bWVudC5kb2N0eXBlJiZRLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lJiZCdChWJCxRLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKSYmKGxuPSI8IURPQ1RZUEUgIitRLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lK2A+CmArbG4pLEsmJmVzKFtqLEksVl0sSHI9Pntsbj1ucyhsbixIciwiICIpfSksUyYma2U/Uy5jcmVhdGVIVE1MKGxuKTpsbn0sdC5zZXRDb25maWc9ZnVuY3Rpb24oKXtsZXQgeGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O3JjKHhlKSxjZT0hMH0sdC5jbGVhckNvbmZpZz1mdW5jdGlvbigpe1FvPW51bGwsY2U9ITF9LHQuaXNWYWxpZEF0dHJpYnV0ZT1mdW5jdGlvbih4ZSxBLFEpe1FvfHxyYyh7fSk7Y29uc3QgbWU9UHQoeGUpLHFlPVB0KEEpO3JldHVybiBEZChtZSxxZSxRKX0sdC5hZGRIb29rPWZ1bmN0aW9uKHhlLEEpe3R5cGVvZiBBPT0iZnVuY3Rpb24iJiZ0cyhMW3hlXSxBKX0sdC5yZW1vdmVIb29rPWZ1bmN0aW9uKHhlLEEpe2lmKEEhPT12b2lkIDApe2NvbnN0IFE9RSQoTFt4ZV0sQSk7cmV0dXJuIFE9PT0tMT92b2lkIDA6VCQoTFt4ZV0sUSwxKVswXX1yZXR1cm4gQ2goTFt4ZV0pfSx0LnJlbW92ZUhvb2tzPWZ1bmN0aW9uKHhlKXtMW3hlXT1bXX0sdC5yZW1vdmVBbGxIb29rcz1mdW5jdGlvbigpe0w9TWgoKX0sdH12YXIgdXc9Y3coKTt1dy5hZGRIb29rKCJhZnRlclNhbml0aXplQXR0cmlidXRlcyIsZT0+e2UgaW5zdGFuY2VvZiBFbGVtZW50JiZlLnRhZ05hbWU9PT0iQSImJmUuZ2V0QXR0cmlidXRlKCJ0YXJnZXQiKT09PSJfYmxhbmsiJiZlLnNldEF0dHJpYnV0ZSgicmVsIiwibm9vcGVuZXIgbm9yZWZlcnJlciIpfSk7ZnVuY3Rpb24gQmgoZSl7cmV0dXJuIHV3LnNhbml0aXplKHR5cGVvZiBlPT0ic3RyaW5nIj9lOiIiLHtBRERfQVRUUjpbInRhcmdldCJdfSl9Y29uc3QgRyQ9e21vdW50ZWQoZSx0KXtlLmlubmVySFRNTD1CaCh0LnZhbHVlKX0sdXBkYXRlZChlLHQpe3QudmFsdWUhPT10Lm9sZFZhbHVlJiYoZS5pbm5lckhUTUw9QmgodC52YWx1ZSkpfX0sSyQ9bHQoZT0+e2UudnVlQXBwLmRpcmVjdGl2ZSgic2FuaXRpemUiLEckKX0pLFEkPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InByb2R1Y3RzIixsYWJlbDoiUHJvZHVjdHMiLGljb246ImktbHVjaWRlLXBhY2thZ2UiLHRvOiIvcHJvZHVjdHMiLHNlY3Rpb246Im1haW4iLHByaW9yaXR5OjUsYWJpbGl0eTpbInByb2R1Y3Q6bWFuYWdlIiwicHJvZHVjdDp3cml0ZSJdfV19KX0pLFkkPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InByb2plY3RzIixsYWJlbDoiUHJvamVjdHMiLGljb246ImktbHVjaWRlLWZvbGRlci1rYW5iYW4iLHRvOiIvcHJvamVjdHMiLHNlY3Rpb246Im1haW4iLHByaW9yaXR5OjEwfV19KX0pLEokPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InJlZmVycmFsIixsYWJlbDoiUmVmZXJyYWwiLGljb246ImktbHVjaWRlLWdpZnQiLHRvOiIvcmVmZXJyYWwiLHNlY3Rpb246Im1haW4iLHByaW9yaXR5OjIwfV19KX0pLFgkPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InNldHRpbmdzLXNlbGYtaG9zdCIsbGFiZWw6IlNlbGYtaG9zdGluZyIsdG86Ii9zZXR0aW5ncy9zZWxmLWhvc3QiLHNlY3Rpb246InNldHRpbmdzIixwcmlvcml0eTo5MCxhYmlsaXR5Olsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdfV19KX0pLFokPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIixiYXNlOlsidy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyLTAgYXBwZWFyYW5jZS1ub25lIHBsYWNlaG9sZGVyOnRleHQtZGltbWVkIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS03NSIsInRyYW5zaXRpb24tY29sb3JzIl0sbGVhZGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIHN0YXJ0LTAgZmxleCBpdGVtcy1jZW50ZXIiLGxlYWRpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgZW5kLTAgZmxleCBpdGVtcy1jZW50ZXIiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtZS1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC1zLW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9LHZlcnRpY2FsOntyb290OiJncm91cCBoYXMtZm9jdXMtdmlzaWJsZTp6LVsxXSIsYmFzZToiZ3JvdXAtbm90LW9ubHk6Z3JvdXAtZmlyc3Q6cm91bmRlZC1iLW5vbmUgZ3JvdXAtbm90LW9ubHk6Z3JvdXAtbGFzdDpyb3VuZGVkLXQtbm9uZSBncm91cC1ub3QtbGFzdDpncm91cC1ub3QtZmlyc3Q6cm91bmRlZC1ub25lIn19LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC1zbS80IGdhcC0xIixsZWFkaW5nOiJwcy0yIix0cmFpbGluZzoicGUtMiIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtLzQgZ2FwLTEuNSIsbGVhZGluZzoicHMtMi41Iix0cmFpbGluZzoicGUtMi41IixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LG1kOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtYmFzZS81IGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZS81IGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSx4bDp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZSBnYXAtMiIsbGVhZGluZzoicHMtMyIsdHJhaWxpbmc6InBlLTMiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW52ZXJ0ZWQifSx7bGVhZGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBzLTcifSx7bGVhZGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBzLTgifSx7bGVhZGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBzLTkifSx7bGVhZGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBzLTEwIn0se2xlYWRpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwcy0xMSJ9LHt0cmFpbGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBlLTcifSx7dHJhaWxpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwZS04In0se3RyYWlsaW5nOiEwLHNpemU6Im1kIixjbGFzczoicGUtOSJ9LHt0cmFpbGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBlLTEwIn0se3RyYWlsaW5nOiEwLHNpemU6InhsIixjbGFzczoicGUtMTEifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtmaXhlZDohMSxzaXplOiJ4cyIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToic20iLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6Im1kIixjbGFzczoibWQ6dGV4dC1zbSJ9LHtmaXhlZDohMSxzaXplOiJsZyIsY2xhc3M6Im1kOnRleHQtc20ifV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCIsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUifX0sZU09WyJpZCIsInR5cGUiLCJ2YWx1ZSIsIm5hbWUiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJhdXRvY29tcGxldGUiXSxmdz1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVJbnB1dCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ0ZXh0In0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2NvbXBsZXRlOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiJvZmYifSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZpeGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsTW9kaWZpZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwiYmx1ciIsImNoYW5nZSJdLHNldHVwKGUse2V4cG9zZTp0LGVtaXQ6bn0pe2NvbnN0IHI9ZSxvPW4scz16cigpLGk9YW8ociwibW9kZWxWYWx1ZSIsbyx7ZGVmYXVsdFZhbHVlOnIuZGVmYXVsdFZhbHVlfSksYT1TdCgpLGw9TG4oImlucHV0IixyKSx7ZW1pdEZvcm1CbHVyOnUsZW1pdEZvcm1JbnB1dDpjLGVtaXRGb3JtQ2hhbmdlOmYsc2l6ZTpkLGNvbG9yOnAsaWQ6bSxuYW1lOnksaGlnaGxpZ2h0Ol8sZGlzYWJsZWQ6dyxlbWl0Rm9ybUZvY3VzOnYsYXJpYUF0dHJzOmh9PXhkKHIse2RlZmVySW5wdXRWYWxpZGF0aW9uOiEwfSkse29yaWVudGF0aW9uOmIsc2l6ZTp4fT13ZChyKSx7aXNMZWFkaW5nOlMsaXNUcmFpbGluZzprLGxlYWRpbmdJY29uTmFtZTpULHRyYWlsaW5nSWNvbk5hbWU6Q309S2wociksUD1OKCgpPT54LnZhbHVlfHxkLnZhbHVlKSxGPU4oKCk9PnV0KHtleHRlbmQ6dXQoWiQpLC4uLmEudWk/LmlucHV0fHx7fX0pKHt0eXBlOnIudHlwZSxjb2xvcjpwLnZhbHVlLHZhcmlhbnQ6ci52YXJpYW50LHNpemU6UD8udmFsdWUsbG9hZGluZzpyLmxvYWRpbmcsaGlnaGxpZ2h0Ol8udmFsdWUsZml4ZWQ6ci5maXhlZCxsZWFkaW5nOlMudmFsdWV8fCEhci5hdmF0YXJ8fCEhcy5sZWFkaW5nLHRyYWlsaW5nOmsudmFsdWV8fCEhcy50cmFpbGluZyxmaWVsZEdyb3VwOmIudmFsdWV9KSksRD1TcygiaW5wdXRSZWYiKTtmdW5jdGlvbiBXKEIpe3IubW9kZWxNb2RpZmllcnM/LnRyaW0mJih0eXBlb2YgQj09InN0cmluZyJ8fEI9PT1udWxsfHxCPT09dm9pZCAwKSYmKEI9Qj8udHJpbSgpPz9udWxsKSwoci5tb2RlbE1vZGlmaWVycz8ubnVtYmVyfHxyLnR5cGU9PT0ibnVtYmVyIikmJihCPXlkKEIpKSxyLm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmKEJ8fD1udWxsKSxyLm1vZGVsTW9kaWZpZXJzPy5vcHRpb25hbCYmIXIubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiZCIT09bnVsbCYmKEJ8fD12b2lkIDApLGkudmFsdWU9QixjKCl9ZnVuY3Rpb24gTChCKXtyLm1vZGVsTW9kaWZpZXJzPy5sYXp5fHxXKEIudGFyZ2V0LnZhbHVlKX1mdW5jdGlvbiBqKEIpe2NvbnN0IGllPUIudGFyZ2V0LnZhbHVlO3IubW9kZWxNb2RpZmllcnM/LmxhenkmJlcoaWUpLHIubW9kZWxNb2RpZmllcnM/LnRyaW0mJihCLnRhcmdldC52YWx1ZT1pZS50cmltKCkpLGYoKSxvKCJjaGFuZ2UiLEIpfWZ1bmN0aW9uIEkoQil7dSgpLG8oImJsdXIiLEIpfWZ1bmN0aW9uIFYoKXtyLmF1dG9mb2N1cyYmRC52YWx1ZT8uZm9jdXMoKX1yZXR1cm4gb3QoKCk9PntzZXRUaW1lb3V0KCgpPT57VigpfSxyLmF1dG9mb2N1c0RlbGF5KX0pLHQoe2lucHV0UmVmOkR9KSwoQixpZSk9PihSKCksJChnKE1lKSx7YXM6ZS5hcywiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6dWUoRi52YWx1ZS5yb290KHtjbGFzczpbZyhsKT8ucm9vdCxyLmNsYXNzXX0pKX0se2RlZmF1bHQ6TSgoKT0+W3d0KCJpbnB1dCIsZmUoe2lkOmcobSkscmVmX2tleToiaW5wdXRSZWYiLHJlZjpELHR5cGU6ZS50eXBlLHZhbHVlOmcoaSksbmFtZTpnKHkpLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkYudmFsdWUuYmFzZSh7Y2xhc3M6ZyhsKT8uYmFzZX0pLGRpc2FibGVkOmcodykscmVxdWlyZWQ6ZS5yZXF1aXJlZCxhdXRvY29tcGxldGU6ZS5hdXRvY29tcGxldGV9LHsuLi5CLiRhdHRycywuLi5nKGgpfSx7b25JbnB1dDpMLG9uQmx1cjpJLG9uQ2hhbmdlOmosb25Gb2N1czppZVswXXx8KGllWzBdPSguLi5uZSk9PmcodikmJmcodikoLi4ubmUpKX0pLG51bGwsMTYsZU0pLFUoQi4kc2xvdHMsImRlZmF1bHQiLHt1aTpGLnZhbHVlfSksZyhTKXx8ZS5hdmF0YXJ8fHMubGVhZGluZz8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOnVlKEYudmFsdWUubGVhZGluZyh7Y2xhc3M6ZyhsKT8ubGVhZGluZ30pKX0sW1UoQi4kc2xvdHMsImxlYWRpbmciLHt1aTpGLnZhbHVlfSwoKT0+W2coUykmJmcoVCk/KFIoKSwkKF9uLHtrZXk6MCxuYW1lOmcoVCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp1ZShGLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczpnKGwpPy5sZWFkaW5nSWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8oUigpLCQoVW8sZmUoe2tleToxLHNpemU6ZyhsKT8ubGVhZGluZ0F2YXRhclNpemV8fEYudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpGLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmcobCk/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLGcoayl8fHMudHJhaWxpbmc/KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6dWUoRi52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZyhsKT8udHJhaWxpbmd9KSl9LFtVKEIuJHNsb3RzLCJ0cmFpbGluZyIse3VpOkYudmFsdWV9LCgpPT5bZyhDKT8oUigpLCQoX24se2tleTowLG5hbWU6ZyhDKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczp1ZShGLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZyhsKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fSksdE09e3Nsb3RzOntyb290OiIiLHdyYXBwZXI6IiIsbGFiZWxXcmFwcGVyOiJmbGV4IGNvbnRlbnQtY2VudGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTEiLGxhYmVsOiJibG9jayBmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQiLGNvbnRhaW5lcjoicmVsYXRpdmUiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIixlcnJvcjoibXQtMiB0ZXh0LWVycm9yIixoaW50OiJ0ZXh0LW11dGVkIixoZWxwOiJtdC0yIHRleHQtbXV0ZWQifSx2YXJpYW50czp7c2l6ZTp7eHM6e3Jvb3Q6InRleHQteHMifSxzbTp7cm9vdDoidGV4dC14cyJ9LG1kOntyb290OiJ0ZXh0LXNtIn0sbGc6e3Jvb3Q6InRleHQtc20ifSx4bDp7cm9vdDoidGV4dC1iYXNlIn19LHJlcXVpcmVkOnt0cnVlOntsYWJlbDoiYWZ0ZXI6Y29udGVudC1bJyonXSBhZnRlcjptcy0wLjUgYWZ0ZXI6dGV4dC1lcnJvciJ9fSxvcmllbnRhdGlvbjp7dmVydGljYWw6e2NvbnRhaW5lcjoibXQtMSJ9LGhvcml6b250YWw6e3Jvb3Q6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHBsYWNlLWl0ZW1zLWJhc2VsaW5lIGdhcC0yIn19fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIixvcmllbnRhdGlvbjoidmVydGljYWwifX0sbk09WyJpZCJdLHJNPVsiaWQiXSxvTT1bImlkIl0sc009WyJpZCJdLGR3PXtfX25hbWU6IlVGb3JtRmllbGQiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3JQYXR0ZXJuOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoZWxwOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3I6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0saGludDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZWFnZXJWYWxpZGF0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT25JbnB1dERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49enIoKSxyPVN0KCksbz1MbigiZm9ybUZpZWxkIix0KSxzPU4oKCk9PnV0KHtleHRlbmQ6dXQodE0pLC4uLnIudWk/LmZvcm1GaWVsZHx8e319KSh7c2l6ZTp0LnNpemUscmVxdWlyZWQ6dC5yZXF1aXJlZCxvcmllbnRhdGlvbjp0Lm9yaWVudGF0aW9ufSkpLGk9S2UoYkwsbnVsbCksYT1OKCgpPT50LmVycm9yfHxpPy52YWx1ZT8uZmluZChmPT5mLm5hbWU9PT10Lm5hbWV8fHQuZXJyb3JQYXR0ZXJuJiZmLm5hbWU/Lm1hdGNoKHQuZXJyb3JQYXR0ZXJuKSk/Lm1lc3NhZ2UpLGw9RyhiZigpKSx1PWwudmFsdWUsYz1LZSh5TCx2b2lkIDApO3JldHVybiBQZShsLCgpPT57YyYmdC5uYW1lJiYoYy52YWx1ZVt0Lm5hbWVdPXtpZDpsLnZhbHVlLHBhdHRlcm46dC5lcnJvclBhdHRlcm59KX0se2ltbWVkaWF0ZTohMH0pLE50KFowLGwpLE50KFp1LE4oKCk9Pih7ZXJyb3I6YS52YWx1ZSxuYW1lOnQubmFtZSxzaXplOnQuc2l6ZSxlYWdlclZhbGlkYXRpb246dC5lYWdlclZhbGlkYXRpb24sdmFsaWRhdGVPbklucHV0RGVsYXk6dC52YWxpZGF0ZU9uSW5wdXREZWxheSxlcnJvclBhdHRlcm46dC5lcnJvclBhdHRlcm4saGludDp0LmhpbnQsZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvbixoZWxwOnQuaGVscCxhcmlhSWQ6dX0pKSksKGYsZCk9PihSKCksJChnKE1lKSx7YXM6ZS5hcywiZGF0YS1vcmllbnRhdGlvbiI6ZS5vcmllbnRhdGlvbiwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6dWUocy52YWx1ZS5yb290KHtjbGFzczpbZyhvKT8ucm9vdCx0LmNsYXNzXX0pKX0se2RlZmF1bHQ6TSgoKT0+W3d0KCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6dWUocy52YWx1ZS53cmFwcGVyKHtjbGFzczpnKG8pPy53cmFwcGVyfSkpfSxbZS5sYWJlbHx8bi5sYWJlbD8oUigpLF9lKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWxXcmFwcGVyIixjbGFzczp1ZShzLnZhbHVlLmxhYmVsV3JhcHBlcih7Y2xhc3M6ZyhvKT8ubGFiZWxXcmFwcGVyfSkpfSxbcmUoZyhJMikse2ZvcjpsLnZhbHVlLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6dWUocy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZyhvKT8ubGFiZWx9KSl9LHtkZWZhdWx0Ok0oKCk9PltVKGYuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmUubGFiZWx9LCgpPT5bc3QocnQoZS5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pLGUuaGludHx8bi5oaW50PyhSKCksX2UoInNwYW4iLHtrZXk6MCxpZDpgJHtnKHUpfS1oaW50YCwiZGF0YS1zbG90IjoiaGludCIsY2xhc3M6dWUocy52YWx1ZS5oaW50KHtjbGFzczpnKG8pPy5oaW50fSkpfSxbVShmLiRzbG90cywiaGludCIse2hpbnQ6ZS5oaW50fSwoKT0+W3N0KHJ0KGUuaGludCksMSldKV0sMTAsbk0pKTpkZSgiIiwhMCldLDIpKTpkZSgiIiwhMCksZS5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oUigpLF9lKCJwIix7a2V5OjEsaWQ6YCR7Zyh1KX0tZGVzY3JpcHRpb25gLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6dWUocy52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZyhvKT8uZGVzY3JpcHRpb259KSl9LFtVKGYuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb259LCgpPT5bc3QocnQoZS5kZXNjcmlwdGlvbiksMSldKV0sMTAsck0pKTpkZSgiIiwhMCldLDIpLHd0KCJkaXYiLHtjbGFzczp1ZShbKGUubGFiZWx8fCEhbi5sYWJlbHx8ZS5kZXNjcmlwdGlvbnx8ISFuLmRlc2NyaXB0aW9uKSYmcy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmcobyk/LmNvbnRhaW5lcn0pXSl9LFtVKGYuJHNsb3RzLCJkZWZhdWx0Iix7ZXJyb3I6YS52YWx1ZX0pLHQuZXJyb3IhPT0hMSYmKHR5cGVvZiBhLnZhbHVlPT0ic3RyaW5nIiYmYS52YWx1ZXx8bi5lcnJvcik/KFIoKSxfZSgiZGl2Iix7a2V5OjAsaWQ6YCR7Zyh1KX0tZXJyb3JgLCJkYXRhLXNsb3QiOiJlcnJvciIsY2xhc3M6dWUocy52YWx1ZS5lcnJvcih7Y2xhc3M6ZyhvKT8uZXJyb3J9KSl9LFtVKGYuJHNsb3RzLCJlcnJvciIse2Vycm9yOmEudmFsdWV9LCgpPT5bc3QocnQoYS52YWx1ZSksMSldKV0sMTAsb00pKTplLmhlbHB8fG4uaGVscD8oUigpLF9lKCJkaXYiLHtrZXk6MSxpZDpgJHtnKHUpfS1oZWxwYCwiZGF0YS1zbG90IjoiaGVscCIsY2xhc3M6dWUocy52YWx1ZS5oZWxwKHtjbGFzczpnKG8pPy5oZWxwfSkpfSxbVShmLiRzbG90cywiaGVscCIse2hlbHA6ZS5oZWxwfSwoKT0+W3N0KHJ0KGUuaGVscCksMSldKV0sMTAsc00pKTpkZSgiIiwhMCldLDIpXSksXzozfSw4LFsiYXMiLCJkYXRhLW9yaWVudGF0aW9uIiwiY2xhc3MiXSkpfX0saU09e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGJhc2U6WyJ3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBhcHBlYXJhbmNlLW5vbmUgcGxhY2Vob2xkZXI6dGV4dC1kaW1tZWQgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsZWFkaW5nOiJhYnNvbHV0ZSBzdGFydC0wIGZsZXggaXRlbXMtc3RhcnQiLGxlYWRpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nOiJhYnNvbHV0ZSBlbmQtMCBmbGV4IGl0ZW1zLXN0YXJ0Iix0cmFpbGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6e3Jvb3Q6Imdyb3VwIGhhcy1mb2N1cy12aXNpYmxlOnotWzFdIixiYXNlOiJncm91cC1ub3Qtb25seTpncm91cC1maXJzdDpyb3VuZGVkLWUtbm9uZSBncm91cC1ub3Qtb25seTpncm91cC1sYXN0OnJvdW5kZWQtcy1ub25lIGdyb3VwLW5vdC1sYXN0Omdyb3VwLW5vdC1maXJzdDpyb3VuZGVkLW5vbmUifSx2ZXJ0aWNhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtYi1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC10LW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9fSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQtc20vNCBnYXAtMSIsbGVhZGluZzoicHMtMiBpbnNldC15LTEiLHRyYWlsaW5nOiJwZS0yIGluc2V0LXktMSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtLzQgZ2FwLTEuNSIsbGVhZGluZzoicHMtMi41IGluc2V0LXktMS41Iix0cmFpbGluZzoicGUtMi41IGluc2V0LXktMS41IixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LG1kOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtYmFzZS81IGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSBpbnNldC15LTEuNSIsdHJhaWxpbmc6InBlLTIuNSBpbnNldC15LTEuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZS81IGdhcC0yIixsZWFkaW5nOiJwcy0zIGluc2V0LXktMiIsdHJhaWxpbmc6InBlLTMgaW5zZXQteS0yIixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSJ9LHhsOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlIGdhcC0yIixsZWFkaW5nOiJwcy0zIGluc2V0LXktMiIsdHJhaWxpbmc6InBlLTMgaW5zZXQteS0yIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02In19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCIsc29mdDoidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZC81MCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1lbGV2YXRlZC81MCIsc3VidGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixnaG9zdDoidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50Iixub25lOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50In0sY29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LGxlYWRpbmc6e3RydWU6IiJ9LHRyYWlsaW5nOnt0cnVlOiIifSxsb2FkaW5nOnt0cnVlOiIifSxoaWdobGlnaHQ6e3RydWU6IiJ9LGZpeGVkOntmYWxzZToiIn0sdHlwZTp7ZmlsZToiZmlsZTptZS0xLjUgZmlsZTpmb250LW1lZGl1bSBmaWxlOnRleHQtbXV0ZWQgZmlsZTpvdXRsaW5lLW5vbmUifSxhdXRvcmVzaXplOnt0cnVlOntiYXNlOiJyZXNpemUtbm9uZSJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIn19LGFNPVsiaWQiLCJ2YWx1ZSIsIm5hbWUiLCJyb3dzIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsInJlcXVpcmVkIl0scHc9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVVGV4dGFyZWEiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sYXV0b3Jlc2l6ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvcmVzaXplRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scm93czp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozfSxtYXhyb3dzOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmaXhlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImJsdXIiLCJjaGFuZ2UiXSxzZXR1cChlLHtleHBvc2U6dCxlbWl0Om59KXtjb25zdCByPWUsbz1uLHM9enIoKSxpPWFvKHIsIm1vZGVsVmFsdWUiLG8se2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRWYWx1ZX0pLGE9U3QoKSxsPUxuKCJ0ZXh0YXJlYSIscikse2VtaXRGb3JtRm9jdXM6dSxlbWl0Rm9ybUJsdXI6YyxlbWl0Rm9ybUlucHV0OmYsZW1pdEZvcm1DaGFuZ2U6ZCxzaXplOnAsY29sb3I6bSxpZDp5LG5hbWU6XyxoaWdobGlnaHQ6dyxkaXNhYmxlZDp2LGFyaWFBdHRyczpofT14ZChyLHtkZWZlcklucHV0VmFsaWRhdGlvbjohMH0pLHtpc0xlYWRpbmc6Yixpc1RyYWlsaW5nOngsbGVhZGluZ0ljb25OYW1lOlMsdHJhaWxpbmdJY29uTmFtZTprfT1LbChyKSxUPU4oKCk9PnV0KHtleHRlbmQ6dXQoaU0pLC4uLmEudWk/LnRleHRhcmVhfHx7fX0pKHtjb2xvcjptLnZhbHVlLHZhcmlhbnQ6ci52YXJpYW50LHNpemU6cD8udmFsdWUsbG9hZGluZzpyLmxvYWRpbmcsaGlnaGxpZ2h0OncudmFsdWUsZml4ZWQ6ci5maXhlZCxhdXRvcmVzaXplOnIuYXV0b3Jlc2l6ZSxsZWFkaW5nOmIudmFsdWV8fCEhci5hdmF0YXJ8fCEhcy5sZWFkaW5nLHRyYWlsaW5nOngudmFsdWV8fCEhcy50cmFpbGluZ30pKSxDPVNzKCJ0ZXh0YXJlYVJlZiIpO2Z1bmN0aW9uIFAoSSl7ci5tb2RlbE1vZGlmaWVycz8udHJpbSYmKHR5cGVvZiBJPT0ic3RyaW5nInx8ST09PW51bGx8fEk9PT12b2lkIDApJiYoST1JPy50cmltKCk/P251bGwpLHIubW9kZWxNb2RpZmllcnM/Lm51bWJlciYmKEk9eWQoSSkpLHIubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiYoSXx8PW51bGwpLHIubW9kZWxNb2RpZmllcnM/Lm9wdGlvbmFsJiYhci5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJkkhPT1udWxsJiYoSXx8PXZvaWQgMCksaS52YWx1ZT1JLGYoKX1mdW5jdGlvbiBGKEkpe2ooKSxyLm1vZGVsTW9kaWZpZXJzPy5sYXp5fHxQKEkudGFyZ2V0LnZhbHVlKX1mdW5jdGlvbiBEKEkpe2NvbnN0IFY9SS50YXJnZXQudmFsdWU7ci5tb2RlbE1vZGlmaWVycz8ubGF6eSYmUChWKSxyLm1vZGVsTW9kaWZpZXJzPy50cmltJiYoSS50YXJnZXQudmFsdWU9Vi50cmltKCkpLGQoKSxvKCJjaGFuZ2UiLEkpfWZ1bmN0aW9uIFcoSSl7YygpLG8oImJsdXIiLEkpfWZ1bmN0aW9uIEwoKXtyLmF1dG9mb2N1cyYmQy52YWx1ZT8uZm9jdXMoKX1mdW5jdGlvbiBqKCl7aWYoci5hdXRvcmVzaXplJiZDLnZhbHVlKXtDLnZhbHVlLnJvd3M9ci5yb3dzO2NvbnN0IEk9Qy52YWx1ZS5zdHlsZS5vdmVyZmxvdztDLnZhbHVlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2NvbnN0IFY9d2luZG93LmdldENvbXB1dGVkU3R5bGUoQy52YWx1ZSksQj1OdW1iZXIucGFyc2VJbnQoVi5wYWRkaW5nVG9wKSxpZT1OdW1iZXIucGFyc2VJbnQoVi5wYWRkaW5nQm90dG9tKSxuZT1CK2llLFZlPU51bWJlci5wYXJzZUludChWLmxpbmVIZWlnaHQpLHtzY3JvbGxIZWlnaHQ6TmV9PUMudmFsdWUsZXQ9KE5lLW5lKS9WZTtldD5yLnJvd3MmJihDLnZhbHVlLnJvd3M9ci5tYXhyb3dzP01hdGgubWluKGV0LHIubWF4cm93cyk6ZXQpLEMudmFsdWUuc3R5bGUub3ZlcmZsb3c9SX19cmV0dXJuIFBlKGksKCk9PntpdChqKX0pLG90KCgpPT57c2V0VGltZW91dCgoKT0+e0woKX0sci5hdXRvZm9jdXNEZWxheSksc2V0VGltZW91dCgoKT0+e2ooKX0sci5hdXRvcmVzaXplRGVsYXkpfSksdCh7dGV4dGFyZWFSZWY6QyxhdXRvUmVzaXplOmp9KSwoSSxWKT0+KFIoKSwkKGcoTWUpLHthczplLmFzLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczp1ZShULnZhbHVlLnJvb3Qoe2NsYXNzOltnKGwpPy5yb290LHIuY2xhc3NdfSkpfSx7ZGVmYXVsdDpNKCgpPT5bd3QoInRleHRhcmVhIixmZSh7aWQ6Zyh5KSxyZWZfa2V5OiJ0ZXh0YXJlYVJlZiIscmVmOkMsdmFsdWU6ZyhpKSxuYW1lOmcoXykscm93czplLnJvd3MscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlciwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6VC52YWx1ZS5iYXNlKHtjbGFzczpnKGwpPy5iYXNlfSksZGlzYWJsZWQ6Zyh2KSxyZXF1aXJlZDplLnJlcXVpcmVkfSx7Li4uSS4kYXR0cnMsLi4uZyhoKX0se29uSW5wdXQ6RixvbkJsdXI6VyxvbkNoYW5nZTpELG9uRm9jdXM6VlswXXx8KFZbMF09KC4uLkIpPT5nKHUpJiZnKHUpKC4uLkIpKX0pLG51bGwsMTYsYU0pLFUoSS4kc2xvdHMsImRlZmF1bHQiLHt1aTpULnZhbHVlfSksZyhiKXx8ZS5hdmF0YXJ8fHMubGVhZGluZz8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOnVlKFQudmFsdWUubGVhZGluZyh7Y2xhc3M6ZyhsKT8ubGVhZGluZ30pKX0sW1UoSS4kc2xvdHMsImxlYWRpbmciLHt1aTpULnZhbHVlfSwoKT0+W2coYikmJmcoUyk/KFIoKSwkKF9uLHtrZXk6MCxuYW1lOmcoUyksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp1ZShULnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczpnKGwpPy5sZWFkaW5nSWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8oUigpLCQoVW8sZmUoe2tleToxLHNpemU6ZyhsKT8ubGVhZGluZ0F2YXRhclNpemV8fFQudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpULnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmcobCk/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLGcoeCl8fHMudHJhaWxpbmc/KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6dWUoVC52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZyhsKT8udHJhaWxpbmd9KSl9LFtVKEkuJHNsb3RzLCJ0cmFpbGluZyIse3VpOlQudmFsdWV9LCgpPT5bZyhrKT8oUigpLCQoX24se2tleTowLG5hbWU6ZyhrKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczp1ZShULnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZyhsKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fSksbE09e3Nsb3RzOntvdmVybGF5OiJmaXhlZCBpbnNldC0wIixjb250ZW50OiJiZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IGZsZXggZmxleC1jb2wgZm9jdXM6b3V0bGluZS1ub25lIixoZWFkZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYgbWluLWgtKC0tdWktaGVhZGVyLWhlaWdodCkiLHdyYXBwZXI6IiIsYm9keToiZmxleC0xIHAtNCBzbTpwLTYiLGZvb3RlcjoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBwLTQgc206cHgtNiIsdGl0bGU6InRleHQtaGlnaGxpZ2h0ZWQgZm9udC1zZW1pYm9sZCIsZGVzY3JpcHRpb246Im10LTEgdGV4dC1tdXRlZCB0ZXh0LXNtIixjbG9zZToiYWJzb2x1dGUgdG9wLTQgZW5kLTQifSx2YXJpYW50czp7dHJhbnNpdGlvbjp7dHJ1ZTp7b3ZlcmxheToiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bZmFkZS1pbl8yMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtmYWRlLW91dF8yMDBtc19lYXNlLWluXSIsY29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMjAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzIwMG1zX2Vhc2UtaW5dIn19LGZ1bGxzY3JlZW46e3RydWU6e2NvbnRlbnQ6Imluc2V0LTAifSxmYWxzZTp7Y29udGVudDoidy1bY2FsYygxMDB2dy0ycmVtKV0gbWF4LXctbGcgcm91bmRlZC1sZyBzaGFkb3ctbGcgcmluZyByaW5nLWRlZmF1bHQifX0sb3ZlcmxheTp7dHJ1ZTp7b3ZlcmxheToiYmctZWxldmF0ZWQvNzUifX0sc2Nyb2xsYWJsZTp7dHJ1ZTp7b3ZlcmxheToib3ZlcmZsb3cteS1hdXRvIixjb250ZW50OiJyZWxhdGl2ZSJ9LGZhbHNlOntjb250ZW50OiJmaXhlZCIsYm9keToib3ZlcmZsb3cteS1hdXRvIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7c2Nyb2xsYWJsZTohMCxmdWxsc2NyZWVuOiExLGNsYXNzOntvdmVybGF5OiJncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciBwLTQgc206cHktOCJ9fSx7c2Nyb2xsYWJsZTohMSxmdWxsc2NyZWVuOiExLGNsYXNzOntjb250ZW50OiJ0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBtYXgtaC1bY2FsYygxMDBkdmgtMnJlbSldIHNtOm1heC1oLVtjYWxjKDEwMGR2aC00cmVtKV0gb3ZlcmZsb3ctaGlkZGVuIn19XX0sbXc9e19fbmFtZToiVU1vZGFsIixwcm9wczp7dGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvdmVybGF5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2Nyb2xsYWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJhZnRlcjpsZWF2ZSIsImFmdGVyOmVudGVyIiwiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCxvPXpyKCkse3Q6c309UWwoKSxpPVN0KCksYT1MbigibW9kYWwiLG4pLGw9JHMoVnIobiwib3BlbiIsImRlZmF1bHRPcGVuIiwibW9kYWwiKSxyKSx1PVlsKHl0KCgpPT5uLnBvcnRhbCkpLGM9eXQoKCk9Pm4uY29udGVudCksZj1OKCgpPT5uLmRpc21pc3NpYmxlP3twb2ludGVyRG93bk91dHNpZGU6eT0+aXcoeSx7c2Nyb2xsYWJsZTpuLnNjcm9sbGFibGV9KX06WyJpbnRlcmFjdE91dHNpZGUiLCJlc2NhcGVLZXlEb3duIl0ucmVkdWNlKChfLHcpPT4oX1t3XT12PT57di5wcmV2ZW50RGVmYXVsdCgpLHIoImNsb3NlOnByZXZlbnQiKX0sXykse30pKSxbZCxwXT1RUCgpLG09TigoKT0+dXQoe2V4dGVuZDp1dChsTSksLi4uaS51aT8ubW9kYWx8fHt9fSkoe3RyYW5zaXRpb246bi50cmFuc2l0aW9uLGZ1bGxzY3JlZW46bi5mdWxsc2NyZWVuLG92ZXJsYXk6bi5vdmVybGF5LHNjcm9sbGFibGU6bi5zY3JvbGxhYmxlfSkpO3JldHVybih5LF8pPT4oUigpLCQoZyhyMCkseHQoTXQoZyhsKSkpLHtkZWZhdWx0Ok0oKHtvcGVuOncsY2xvc2U6dn0pPT5bcmUoZyhkKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKGMwKSxmZSh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOm0udmFsdWUuY29udGVudCh7Y2xhc3M6WyFvLmRlZmF1bHQmJm4uY2xhc3MsZyhhKT8uY29udGVudF19KX0sYy52YWx1ZSx7b25BZnRlckVudGVyOl9bMF18fChfWzBdPWg9PnIoImFmdGVyOmVudGVyIikpLG9uQWZ0ZXJMZWF2ZTpfWzFdfHwoX1sxXT1oPT5yKCJhZnRlcjpsZWF2ZSIpKX0sVmcoZi52YWx1ZSkpLHtkZWZhdWx0Ok0oKCk9PlshZS50aXRsZSYmIW8udGl0bGV8fCFlLmRlc2NyaXB0aW9uJiYhby5kZXNjcmlwdGlvbnx8by5jb250ZW50PyhSKCksJChnKFZpKSx7a2V5OjB9LHtkZWZhdWx0Ok0oKCk9PlshZS50aXRsZSYmIW8udGl0bGU/KFIoKSwkKGcodnMpLHtrZXk6MH0pKTpvLmNvbnRlbnQ/KFIoKSwkKGcodnMpLHtrZXk6MX0se2RlZmF1bHQ6TSgoKT0+W1UoeS4kc2xvdHMsInRpdGxlIix7fSwoKT0+W3N0KHJ0KGUudGl0bGUpLDEpXSldKSxfOjN9KSk6ZGUoIiIsITApLCFlLmRlc2NyaXB0aW9uJiYhby5kZXNjcmlwdGlvbj8oUigpLCQoZyh5cykse2tleToyfSkpOm8uY29udGVudD8oUigpLCQoZyh5cykse2tleTozfSx7ZGVmYXVsdDpNKCgpPT5bVSh5LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bc3QocnQoZS5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTpkZSgiIiwhMCldKSxfOjN9KSk6ZGUoIiIsITApLFUoeS4kc2xvdHMsImNvbnRlbnQiLHtjbG9zZTp2fSwoKT0+W28uaGVhZGVyfHxlLnRpdGxlfHxvLnRpdGxlfHxlLmRlc2NyaXB0aW9ufHxvLmRlc2NyaXB0aW9ufHxuLmNsb3NlfHxvLmNsb3NlPyhSKCksX2UoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOnVlKG0udmFsdWUuaGVhZGVyKHtjbGFzczpnKGEpPy5oZWFkZXJ9KSl9LFtVKHkuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTp2fSwoKT0+W2UudGl0bGV8fG8udGl0bGV8fGUuZGVzY3JpcHRpb258fG8uZGVzY3JpcHRpb24/KFIoKSxfZSgiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnVlKG0udmFsdWUud3JhcHBlcih7Y2xhc3M6ZyhhKT8ud3JhcHBlcn0pKX0sW2UudGl0bGV8fG8udGl0bGU/KFIoKSwkKGcodnMpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOnVlKG0udmFsdWUudGl0bGUoe2NsYXNzOmcoYSk/LnRpdGxlfSkpfSx7ZGVmYXVsdDpNKCgpPT5bVSh5LiRzbG90cywidGl0bGUiLHt9LCgpPT5bc3QocnQoZS50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpkZSgiIiwhMCksZS5kZXNjcmlwdGlvbnx8by5kZXNjcmlwdGlvbj8oUigpLCQoZyh5cykse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6dWUobS52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZyhhKT8uZGVzY3JpcHRpb259KSl9LHtkZWZhdWx0Ok0oKCk9PltVKHkuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltzdChydChlLmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmRlKCIiLCEwKV0sMikpOmRlKCIiLCEwKSxVKHkuJHNsb3RzLCJhY3Rpb25zIiksbi5jbG9zZXx8by5jbG9zZT8oUigpLCQoZyhvMCkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0Ok0oKCk9PltVKHkuJHNsb3RzLCJjbG9zZSIse3VpOm0udmFsdWV9LCgpPT5bbi5jbG9zZT8oUigpLCQoTnIsZmUoe2tleTowLGljb246ZS5jbG9zZUljb258fGcoaSkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZyhzKSgibW9kYWwuY2xvc2UiKX0sdHlwZW9mIG4uY2xvc2U9PSJvYmplY3QiP24uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6bS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZyhhKT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTpkZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLG8uYm9keT8oUigpLF9lKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6dWUobS52YWx1ZS5ib2R5KHtjbGFzczpnKGEpPy5ib2R5fSkpfSxbVSh5LiRzbG90cywiYm9keSIse2Nsb3NlOnZ9KV0sMikpOmRlKCIiLCEwKSxvLmZvb3Rlcj8oUigpLF9lKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczp1ZShtLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZyhhKT8uZm9vdGVyfSkpfSxbVSh5LiRzbG90cywiZm9vdGVyIix7Y2xvc2U6dn0pXSwyKSk6ZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAyNCksby5kZWZhdWx0PyhSKCksJChnKGYwKSx7a2V5OjAsImFzLWNoaWxkIjoiIixjbGFzczp1ZShuLmNsYXNzKX0se2RlZmF1bHQ6TSgoKT0+W1UoeS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnd9KV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTpkZSgiIiwhMCkscmUoZyh1MCkseHQoTXQoZyh1KSkpLHtkZWZhdWx0Ok0oKCk9PltyZShnKF9kKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltlLnNjcm9sbGFibGU/KFIoKSwkKGcocXUpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6dWUobS52YWx1ZS5vdmVybGF5KHtjbGFzczpnKGEpPy5vdmVybGF5fSkpfSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhwKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KFIoKSxfZShHZSx7a2V5OjF9LFtlLm92ZXJsYXk/KFIoKSwkKGcocXUpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6dWUobS52YWx1ZS5vdmVybGF5KHtjbGFzczpnKGEpPy5vdmVybGF5fSkpfSxudWxsLDgsWyJjbGFzcyJdKSk6ZGUoIiIsITApLHJlKGcocCkpXSw2NCkpXSksXzoxfSldKSxfOjF9LDE2KV0pLF86M30sMTYpKX19O2Z1bmN0aW9uIGh3KCl7ZnVuY3Rpb24gZShvKXtyZXR1cm4gTGUoIi9hcGkvc3VwcG9ydC90aWNrZXRzIix7bWV0aG9kOiJQT1NUIixib2R5Om99KX1mdW5jdGlvbiB0KG89e30pe3JldHVybiBMZSgiL2FwaS9zdXBwb3J0L3RpY2tldHMiLHtxdWVyeTp7Li4ub319KX1mdW5jdGlvbiBuKG8pe3JldHVybiBMZSgiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkIix7cXVlcnk6e2lkOm99fSl9ZnVuY3Rpb24gcihvLHMpe3JldHVybiBMZSgiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6b30sYm9keTp7Ym9keTpzfX0pfXJldHVybntjcmVhdGVUaWNrZXQ6ZSxmZXRjaFRpY2tldHM6dCxmZXRjaFRpY2tldDpuLHBvc3RNZXNzYWdlOnJ9fWNvbnN0IGd3PSgpPT5pbygic3VwcG9ydC5mZWVkYmFja09wZW4iLCgpPT4hMSkseXc9KCk9PmlvKCJzdXBwb3J0LnRpY2tldE9wZW4iLCgpPT4hMSksdnc9U3ltYm9sKCJudXh0LXVpLnRvYXN0LW1heCIpO2Z1bmN0aW9uIFNkKCl7Y29uc3QgZT1pbygidG9hc3RzIiwoKT0+W10pLHQ9S2Uodncsdm9pZCAwKSxuPUcoITEpLHI9W10sbz0oKT0+YCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLDkpfWA7YXN5bmMgZnVuY3Rpb24gcygpe2lmKCEobi52YWx1ZXx8ci5sZW5ndGg9PT0wKSl7Zm9yKG4udmFsdWU9ITA7ci5sZW5ndGg+MDspe2NvbnN0IGM9ci5zaGlmdCgpO2F3YWl0IGl0KCksZS52YWx1ZT1bLi4uZS52YWx1ZSxjXS5zbGljZSgtKHQ/LnZhbHVlPz81KSl9bi52YWx1ZT0hMX19ZnVuY3Rpb24gaShjKXtjb25zdCBmPXtpZDpvKCksb3BlbjohMCwuLi5jfSxkPWUudmFsdWUuZmluZEluZGV4KHA9PnAuaWQ9PT1mLmlkKTtyZXR1cm4gZCE9PS0xPyhlLnZhbHVlW2RdPXsuLi5lLnZhbHVlW2RdLC4uLmYsX2R1cGxpY2F0ZTooZS52YWx1ZVtkXS5fZHVwbGljYXRlfHwwKSsxfSxmKTooci5wdXNoKGYpLHMoKSxmKX1mdW5jdGlvbiBhKGMsZil7Y29uc3QgZD1lLnZhbHVlLmZpbmRJbmRleChwPT5wLmlkPT09Yyk7ZCE9PS0xJiYoZS52YWx1ZVtkXT17Li4uZS52YWx1ZVtkXSwuLi5mLGR1cmF0aW9uOmYuZHVyYXRpb24sb3BlbjohMCxfdXBkYXRlZDohMH0saXQoKCk9Pntjb25zdCBwPWUudmFsdWUuZmluZEluZGV4KG09Pm0uaWQ9PT1jKTtwIT09LTEmJmUudmFsdWVbcF0uX3VwZGF0ZWQmJihlLnZhbHVlW3BdPXsuLi5lLnZhbHVlW3BdLF91cGRhdGVkOnZvaWQgMH0pfSkpfWZ1bmN0aW9uIGwoYyl7Y29uc3QgZj1lLnZhbHVlLmZpbmRJbmRleChkPT5kLmlkPT09Yyk7ZiE9PS0xJiZlLnZhbHVlW2ZdLl91cGRhdGVkfHwoZiE9PS0xJiYoZS52YWx1ZVtmXT17Li4uZS52YWx1ZVtmXSxvcGVuOiExfSksc2V0VGltZW91dCgoKT0+e2UudmFsdWU9ZS52YWx1ZS5maWx0ZXIoZD0+ZC5pZCE9PWMpfSwyMDApKX1mdW5jdGlvbiB1KCl7ZS52YWx1ZT1bXX1yZXR1cm57dG9hc3RzOmUsYWRkOmksdXBkYXRlOmEscmVtb3ZlOmwsY2xlYXI6dX19Y29uc3QgTXI9U3ltYm9sLmZvcigiQHRzLXBhdHRlcm4vbWF0Y2hlciIpLGNNPVN5bWJvbC5mb3IoIkB0cy1wYXR0ZXJuL2lzVmFyaWFkaWMiKSxpbD0iQHRzLXBhdHRlcm4vYW5vbnltb3VzLXNlbGVjdC1rZXkiLHJmPWU9PiEhKGUmJnR5cGVvZiBlPT0ib2JqZWN0IiksRGE9ZT0+ZSYmISFlW01yXSxhcj0oZSx0LG4pPT57aWYoRGEoZSkpe2NvbnN0IHI9ZVtNcl0oKSx7bWF0Y2hlZDpvLHNlbGVjdGlvbnM6c309ci5tYXRjaCh0KTtyZXR1cm4gbyYmcyYmT2JqZWN0LmtleXMocykuZm9yRWFjaChpPT5uKGksc1tpXSkpLG99aWYocmYoZSkpe2lmKCFyZih0KSlyZXR1cm4hMTtpZihBcnJheS5pc0FycmF5KGUpKXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4hMTtsZXQgcj1bXSxvPVtdLHM9W107Zm9yKGNvbnN0IGkgb2YgZS5rZXlzKCkpe2NvbnN0IGE9ZVtpXTtEYShhKSYmYVtjTV0/cy5wdXNoKGEpOnMubGVuZ3RoP28ucHVzaChhKTpyLnB1c2goYSl9aWYocy5sZW5ndGgpe2lmKHMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXR0ZXJuIGVycm9yOiBVc2luZyBgLi4uUC5hcnJheSguLi4pYCBzZXZlcmFsIHRpbWVzIGluIGEgc2luZ2xlIHBhdHRlcm4gaXMgbm90IGFsbG93ZWQuIik7aWYodC5sZW5ndGg8ci5sZW5ndGgrby5sZW5ndGgpcmV0dXJuITE7Y29uc3QgaT10LnNsaWNlKDAsci5sZW5ndGgpLGE9by5sZW5ndGg9PT0wP1tdOnQuc2xpY2UoLW8ubGVuZ3RoKSxsPXQuc2xpY2Uoci5sZW5ndGgsby5sZW5ndGg9PT0wPzEvMDotby5sZW5ndGgpO3JldHVybiByLmV2ZXJ5KCh1LGMpPT5hcih1LGlbY10sbikpJiZvLmV2ZXJ5KCh1LGMpPT5hcih1LGFbY10sbikpJiYocy5sZW5ndGg9PT0wfHxhcihzWzBdLGwsbikpfXJldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoJiZlLmV2ZXJ5KChpLGEpPT5hcihpLHRbYV0sbikpfXJldHVybiBSZWZsZWN0Lm93bktleXMoZSkuZXZlcnkocj0+e2NvbnN0IG89ZVtyXTtyZXR1cm4ociBpbiB0fHxEYShzPW8pJiZzW01yXSgpLm1hdGNoZXJUeXBlPT09Im9wdGlvbmFsIikmJmFyKG8sdFtyXSxuKTt2YXIgc30pfXJldHVybiBPYmplY3QuaXModCxlKX0sY289ZT0+e3ZhciB0LG4scjtyZXR1cm4gcmYoZSk/RGEoZSk/KHQ9KG49KHI9ZVtNcl0oKSkuZ2V0U2VsZWN0aW9uS2V5cyk9PW51bGw/dm9pZCAwOm4uY2FsbChyKSkhPW51bGw/dDpbXTpBcnJheS5pc0FycmF5KGUpP0lpKGUsY28pOklpKE9iamVjdC52YWx1ZXMoZSksY28pOltdfSxJaT0oZSx0KT0+ZS5yZWR1Y2UoKG4scik9Pm4uY29uY2F0KHQocikpLFtdKTtmdW5jdGlvbiBDbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHtvcHRpb25hbDooKT0+dU0oZSksYW5kOnQ9PmR0KGUsdCksb3I6dD0+Zk0oZSx0KSxzZWxlY3Q6dD0+dD09PXZvaWQgMD9xaChlKTpxaCh0LGUpfSl9ZnVuY3Rpb24gdU0oZSl7cmV0dXJuIENuKHtbTXJdOigpPT4oe21hdGNoOnQ9PntsZXQgbj17fTtjb25zdCByPShvLHMpPT57bltvXT1zfTtyZXR1cm4gdD09PXZvaWQgMD8oY28oZSkuZm9yRWFjaChvPT5yKG8sdm9pZCAwKSkse21hdGNoZWQ6ITAsc2VsZWN0aW9uczpufSk6e21hdGNoZWQ6YXIoZSx0LHIpLHNlbGVjdGlvbnM6bn19LGdldFNlbGVjdGlvbktleXM6KCk9PmNvKGUpLG1hdGNoZXJUeXBlOiJvcHRpb25hbCJ9KX0pfWZ1bmN0aW9uIGR0KC4uLmUpe3JldHVybiBDbih7W01yXTooKT0+KHttYXRjaDp0PT57bGV0IG49e307Y29uc3Qgcj0obyxzKT0+e25bb109c307cmV0dXJue21hdGNoZWQ6ZS5ldmVyeShvPT5hcihvLHQscikpLHNlbGVjdGlvbnM6bn19LGdldFNlbGVjdGlvbktleXM6KCk9PklpKGUsY28pLG1hdGNoZXJUeXBlOiJhbmQifSl9KX1mdW5jdGlvbiBmTSguLi5lKXtyZXR1cm4gQ24oe1tNcl06KCk9Pih7bWF0Y2g6dD0+e2xldCBuPXt9O2NvbnN0IHI9KG8scyk9PntuW29dPXN9O3JldHVybiBJaShlLGNvKS5mb3JFYWNoKG89PnIobyx2b2lkIDApKSx7bWF0Y2hlZDplLnNvbWUobz0+YXIobyx0LHIpKSxzZWxlY3Rpb25zOm59fSxnZXRTZWxlY3Rpb25LZXlzOigpPT5JaShlLGNvKSxtYXRjaGVyVHlwZToib3IifSl9KX1mdW5jdGlvbiBRZShlKXtyZXR1cm57W01yXTooKT0+KHttYXRjaDp0PT4oe21hdGNoZWQ6ISFlKHQpfSl9KX19ZnVuY3Rpb24gcWgoLi4uZSl7Y29uc3QgdD10eXBlb2YgZVswXT09InN0cmluZyI/ZVswXTp2b2lkIDAsbj1lLmxlbmd0aD09PTI/ZVsxXTp0eXBlb2YgZVswXT09InN0cmluZyI/dm9pZCAwOmVbMF07cmV0dXJuIENuKHtbTXJdOigpPT4oe21hdGNoOnI9PntsZXQgbz17W3Q/P2lsXTpyfTtyZXR1cm57bWF0Y2hlZDpuPT09dm9pZCAwfHxhcihuLHIsKHMsaSk9PntvW3NdPWl9KSxzZWxlY3Rpb25zOm99fSxnZXRTZWxlY3Rpb25LZXlzOigpPT5bdD8/aWxdLmNvbmNhdChuPT09dm9pZCAwP1tdOmNvKG4pKX0pfSl9ZnVuY3Rpb24gYncoZSl7cmV0dXJuITB9ZnVuY3Rpb24gdHIoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIn1mdW5jdGlvbiBYcihlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifWZ1bmN0aW9uIFpyKGUpe3JldHVybiB0eXBlb2YgZT09ImJpZ2ludCJ9Q24oUWUoYncpKTtDbihRZShidykpO2NvbnN0IGVvPWU9Pk9iamVjdC5hc3NpZ24oQ24oZSkse3N0YXJ0c1dpdGg6dD0+e3JldHVybiBlbyhkdChlLChuPXQsUWUocj0+WHIocikmJnIuc3RhcnRzV2l0aChuKSkpKSk7dmFyIG59LGVuZHNXaXRoOnQ9PntyZXR1cm4gZW8oZHQoZSwobj10LFFlKHI9PlhyKHIpJiZyLmVuZHNXaXRoKG4pKSkpKTt2YXIgbn0sbWluTGVuZ3RoOnQ9PmVvKGR0KGUsKG49PlFlKHI9PlhyKHIpJiZyLmxlbmd0aD49bikpKHQpKSksbGVuZ3RoOnQ9PmVvKGR0KGUsKG49PlFlKHI9PlhyKHIpJiZyLmxlbmd0aD09PW4pKSh0KSkpLG1heExlbmd0aDp0PT5lbyhkdChlLChuPT5RZShyPT5YcihyKSYmci5sZW5ndGg8PW4pKSh0KSkpLGluY2x1ZGVzOnQ9PntyZXR1cm4gZW8oZHQoZSwobj10LFFlKHI9PlhyKHIpJiZyLmluY2x1ZGVzKG4pKSkpKTt2YXIgbn0scmVnZXg6dD0+e3JldHVybiBlbyhkdChlLChuPXQsUWUocj0+WHIocikmJiEhci5tYXRjaChuKSkpKSk7dmFyIG59fSksZE09ZW8oUWUoWHIpKSxucj1lPT5PYmplY3QuYXNzaWduKENuKGUpLHtiZXR3ZWVuOih0LG4pPT5ucihkdChlLCgocixvKT0+UWUocz0+dHIocykmJnI8PXMmJm8+PXMpKSh0LG4pKSksbHQ6dD0+bnIoZHQoZSwobj0+UWUocj0+dHIocikmJnI8bikpKHQpKSksZ3Q6dD0+bnIoZHQoZSwobj0+UWUocj0+dHIocikmJnI+bikpKHQpKSksbHRlOnQ9Pm5yKGR0KGUsKG49PlFlKHI9PnRyKHIpJiZyPD1uKSkodCkpKSxndGU6dD0+bnIoZHQoZSwobj0+UWUocj0+dHIocikmJnI+PW4pKSh0KSkpLGludDooKT0+bnIoZHQoZSxRZSh0PT50cih0KSYmTnVtYmVyLmlzSW50ZWdlcih0KSkpKSxmaW5pdGU6KCk9Pm5yKGR0KGUsUWUodD0+dHIodCkmJk51bWJlci5pc0Zpbml0ZSh0KSkpKSxwb3NpdGl2ZTooKT0+bnIoZHQoZSxRZSh0PT50cih0KSYmdD4wKSkpLG5lZ2F0aXZlOigpPT5ucihkdChlLFFlKHQ9PnRyKHQpJiZ0PDApKSl9KTtucihRZSh0cikpO2NvbnN0IHRvPWU9Pk9iamVjdC5hc3NpZ24oQ24oZSkse2JldHdlZW46KHQsbik9PnRvKGR0KGUsKChyLG8pPT5RZShzPT5acihzKSYmcjw9cyYmbz49cykpKHQsbikpKSxsdDp0PT50byhkdChlLChuPT5RZShyPT5acihyKSYmcjxuKSkodCkpKSxndDp0PT50byhkdChlLChuPT5RZShyPT5acihyKSYmcj5uKSkodCkpKSxsdGU6dD0+dG8oZHQoZSwobj0+UWUocj0+WnIocikmJnI8PW4pKSh0KSkpLGd0ZTp0PT50byhkdChlLChuPT5RZShyPT5acihyKSYmcj49bikpKHQpKSkscG9zaXRpdmU6KCk9PnRvKGR0KGUsUWUodD0+WnIodCkmJnQ+MCkpKSxuZWdhdGl2ZTooKT0+dG8oZHQoZSxRZSh0PT5acih0KSYmdDwwKSkpfSk7dG8oUWUoWnIpKTtDbihRZShmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJib29sZWFuIn0pKTtDbihRZShmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJzeW1ib2wifSkpO0NuKFFlKGZ1bmN0aW9uKGUpe3JldHVybiBlPT1udWxsfSkpO0NuKFFlKGZ1bmN0aW9uKGUpe3JldHVybiBlIT1udWxsfSkpO3ZhciBrYT17X19wcm90b19fOm51bGwsc3RyaW5nOmRNfTtjbGFzcyBwTSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe2xldCBuO3RyeXtuPUpTT04uc3RyaW5naWZ5KHQpfWNhdGNoe249dH1zdXBlcihgUGF0dGVybiBtYXRjaGluZyBlcnJvcjogbm8gcGF0dGVybiBtYXRjaGVzIHZhbHVlICR7bn1gKSx0aGlzLmlucHV0PXZvaWQgMCx0aGlzLmlucHV0PXR9fWNvbnN0IG9mPXttYXRjaGVkOiExLHZhbHVlOnZvaWQgMH07ZnVuY3Rpb24gbU0oZSl7cmV0dXJuIG5ldyBhbChlLG9mKX1jbGFzcyBhbHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuaW5wdXQ9dm9pZCAwLHRoaXMuc3RhdGU9dm9pZCAwLHRoaXMuaW5wdXQ9dCx0aGlzLnN0YXRlPW59d2l0aCguLi50KXtpZih0aGlzLnN0YXRlLm1hdGNoZWQpcmV0dXJuIHRoaXM7Y29uc3Qgbj10W3QubGVuZ3RoLTFdLHI9W3RbMF1dO2xldCBvO3QubGVuZ3RoPT09MyYmdHlwZW9mIHRbMV09PSJmdW5jdGlvbiI/bz10WzFdOnQubGVuZ3RoPjImJnIucHVzaCguLi50LnNsaWNlKDEsdC5sZW5ndGgtMSkpO2xldCBzPSExLGk9e307Y29uc3QgYT0odSxjKT0+e3M9ITAsaVt1XT1jfSxsPSFyLnNvbWUodT0+YXIodSx0aGlzLmlucHV0LGEpKXx8byYmIW8odGhpcy5pbnB1dCk/b2Y6e21hdGNoZWQ6ITAsdmFsdWU6bihzP2lsIGluIGk/aVtpbF06aTp0aGlzLmlucHV0LHRoaXMuaW5wdXQpfTtyZXR1cm4gbmV3IGFsKHRoaXMuaW5wdXQsbCl9d2hlbih0LG4pe2lmKHRoaXMuc3RhdGUubWF0Y2hlZClyZXR1cm4gdGhpcztjb25zdCByPSEhdCh0aGlzLmlucHV0KTtyZXR1cm4gbmV3IGFsKHRoaXMuaW5wdXQscj97bWF0Y2hlZDohMCx2YWx1ZTpuKHRoaXMuaW5wdXQsdGhpcy5pbnB1dCl9Om9mKX1vdGhlcndpc2UodCl7cmV0dXJuIHRoaXMuc3RhdGUubWF0Y2hlZD90aGlzLnN0YXRlLnZhbHVlOnQodGhpcy5pbnB1dCl9ZXhoYXVzdGl2ZSh0PWhNKXtyZXR1cm4gdGhpcy5zdGF0ZS5tYXRjaGVkP3RoaXMuc3RhdGUudmFsdWU6dCh0aGlzLmlucHV0KX1ydW4oKXtyZXR1cm4gdGhpcy5leGhhdXN0aXZlKCl9cmV0dXJuVHlwZSgpe3JldHVybiB0aGlzfW5hcnJvdygpe3JldHVybiB0aGlzfX1mdW5jdGlvbiBoTShlKXt0aHJvdyBuZXcgcE0oZSl9ZnVuY3Rpb24ganEoZSx0KXtLUChlKX1mdW5jdGlvbiB3dyhlKXtyZXR1cm4gbU0oZSkud2l0aCh7Y29kZTprYS5zdHJpbmd9LHQ9PmBmaXJlYmFzZS5lcnJvcnNbJyR7dC5jb2RlfSddYCkud2l0aCh7cmVzcG9uc2U6e2RhdGE6e21lc3NhZ2U6a2Euc3RyaW5nfX19LHQ9PnQucmVzcG9uc2UuZGF0YS5tZXNzYWdlKS53aXRoKHtkYXRhOnttZXNzYWdlOmthLnN0cmluZ319LHQ9PnQuZGF0YS5tZXNzYWdlKS53aXRoKHttZXNzYWdlOmthLnN0cmluZ30sdD0+dC5tZXNzYWdlKS5vdGhlcndpc2UoKCk9PiJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIil9Y29uc3QgZ009e2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC00In0seU09e2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIHctZnVsbCJ9LHZNPXNlKHtfX25hbWU6IlN1cHBvcnRGZWVkYmFja01vZGFsIixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCxvPWd3KCkscz1OKHtnZXQ6KCk9Pm4ub3Blbnx8by52YWx1ZSxzZXQ6cD0+e28udmFsdWU9cCxyKCJ1cGRhdGU6b3BlbiIscCl9fSksaT1odygpLGE9U2QoKSxsPUcoITEpLHU9RygiIiksYz1HKCIiKSxmPU4oKCk9PnUudmFsdWUudHJpbSgpLmxlbmd0aD4wJiZjLnZhbHVlLnRyaW0oKS5sZW5ndGg+MCk7YXN5bmMgZnVuY3Rpb24gZCgpe2lmKGYudmFsdWUpe2wudmFsdWU9ITA7dHJ5e2F3YWl0IGkuY3JlYXRlVGlja2V0KHtraW5kOiJmZWVkYmFjayIsc3ViamVjdDp1LnZhbHVlLnRyaW0oKSxib2R5OmMudmFsdWUudHJpbSgpfSksYS5hZGQoe3RpdGxlOiJUaGFua3MgZm9yIHlvdXIgZmVlZGJhY2siLGRlc2NyaXB0aW9uOiJXZSdsbCBmb2xsb3cgdXAgaW4geW91ciByZXF1ZXN0cy4iLGNvbG9yOiJzdWNjZXNzIn0pLHUudmFsdWU9IiIsYy52YWx1ZT0iIixzLnZhbHVlPSExLGF3YWl0IEF2KCJzdXBwb3J0LXRpY2tldHMiKX1jYXRjaChwKXthLmFkZCh7dGl0bGU6IkNvdWxkIG5vdCBzZW5kIixkZXNjcmlwdGlvbjp3dyhwKSxjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtsLnZhbHVlPSExfX19cmV0dXJuKHAsbSk9Pntjb25zdCB5PWZ3LF89ZHcsdz1wdyx2PU5yLGg9bXc7cmV0dXJuIFIoKSwkKGgse29wZW46ZyhzKSwib25VcGRhdGU6b3BlbiI6bVszXXx8KG1bM109Yj0+JGUocyk/cy52YWx1ZT1iOm51bGwpLHRpdGxlOiJTZW5kIGZlZWRiYWNrIixkZXNjcmlwdGlvbjoiVGVsbCB1cyB3aGF0J3Mgd29ya2luZyBvciB3aGF0IGNvdWxkIGJlIGJldHRlci4ifSx7Ym9keTpNKCgpPT5bd3QoImRpdiIsZ00sW3JlKF8se2xhYmVsOiJTdWJqZWN0IixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6TSgoKT0+W3JlKHkse21vZGVsVmFsdWU6Zyh1KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6bVswXXx8KG1bMF09Yj0+JGUodSk/dS52YWx1ZT1iOm51bGwpLHBsYWNlaG9sZGVyOiJBIHNob3J0IHN1bW1hcnkiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSkscmUoXyx7bGFiZWw6Ik1lc3NhZ2UiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUodyx7bW9kZWxWYWx1ZTpnKGMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjptWzFdfHwobVsxXT1iPT4kZShjKT9jLnZhbHVlPWI6bnVsbCkscm93czo1LHBsYWNlaG9sZGVyOiJZb3VyIGZlZWRiYWNr4oCmIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pXSldKSxmb290ZXI6TSgoKT0+W3d0KCJkaXYiLHlNLFtyZSh2LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6bVsyXXx8KG1bMl09Yj0+cy52YWx1ZT0hMSl9KSxyZSh2LHtsYWJlbDoiU2VuZCBmZWVkYmFjayIsbG9hZGluZzpnKGwpLGRpc2FibGVkOiFnKGYpLG9uQ2xpY2s6ZH0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldKSxfOjF9LDgsWyJvcGVuIl0pfX19KSxiTT1PYmplY3QuYXNzaWduKHZNLHtfX25hbWU6IlN1cHBvcnRGZWVkYmFja01vZGFsIn0pO2Z1bmN0aW9uIHdNKGUsdCxuLHIsbyl7Y29uc3Qgcz1TdCgpLGk9e307Zm9yKGNvbnN0IGEgb2YgcilpW2FdPU4oKCk9PihvPy5bYV0hPT12b2lkIDA/RWUob1thXSk6d24odCxhKSk/P3MudWk/LltlXT8uZGVmYXVsdFZhcmlhbnRzPy5bYV0/P24uZGVmYXVsdFZhcmlhbnRzPy5bYV0pO3JldHVybiBpfWNvbnN0IEZoPXtzbG90czp7YmFzZTpbInJlbGF0aXZlIGdyb3VwIHJvdW5kZWQtbWQgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS03NSIsInRyYW5zaXRpb24tY29sb3JzIl0sbGVhZGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIHN0YXJ0LTAgZmxleCBpdGVtcy1jZW50ZXIiLGxlYWRpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgZW5kLTAgZmxleCBpdGVtcy1jZW50ZXIiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQiLHZhbHVlOiJ0cnVuY2F0ZSBwb2ludGVyLWV2ZW50cy1ub25lIixwbGFjZWhvbGRlcjoidHJ1bmNhdGUgdGV4dC1kaW1tZWQiLGFycm93OiJmaWxsLWJnIHN0cm9rZS1kZWZhdWx0Iixjb250ZW50OiJtYXgtaC02MCB3LSgtLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgpIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgb3ZlcmZsb3ctaGlkZGVuIG9yaWdpbi0oLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIHBvaW50ZXItZXZlbnRzLWF1dG8gZmxleCBmbGV4LWNvbCIsdmlld3BvcnQ6InJlbGF0aXZlIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IHNjcm9sbC1weS0xIG92ZXJmbG93LXktYXV0byBmbGV4LTEiLGdyb3VwOiJwLTEgaXNvbGF0ZSIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLGxhYmVsOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLHNlcGFyYXRvcjoiLW14LTEgbXktMSBoLXB4IGJnLWJvcmRlciIsaXRlbTpbImdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IHRleHQtZGVmYXVsdCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOnRleHQtaGlnaGxpZ2h0ZWQgZGF0YS1oaWdobGlnaHRlZDpub3QtZGF0YS1kaXNhYmxlZDpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0ljb246WyJzaHJpbmstMCB0ZXh0LWRpbW1lZCBncm91cC1kYXRhLWhpZ2hsaWdodGVkOm5vdC1ncm91cC1kYXRhLWRpc2FibGVkOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdBdmF0YXI6InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhclNpemU6IiIsaXRlbUxlYWRpbmdDaGlwOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToiIixpdGVtVHJhaWxpbmc6Im1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgbWluLXctMCIsaXRlbUxhYmVsOiJ0cnVuY2F0ZSIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQteHMgZ2FwLTEiLGxlYWRpbmc6InBzLTIiLHRyYWlsaW5nOiJwZS0yIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCIsbGFiZWw6InAtMSB0ZXh0LVsxMHB4XS8zIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMiB0ZXh0LXhzIn0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC14cyBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xLjUgdGV4dC1bMTBweF0vMyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTQiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6InNtIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGVtcHR5OiJwLTIuNSB0ZXh0LXhzIn0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbSBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01IixsYWJlbDoicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTIuNSB0ZXh0LXNtIn0sbGc6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LXNtIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTIgdGV4dC14cyBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTMgdGV4dC1zbSJ9LHhsOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6InhzIix0cmFpbGluZ0ljb246InNpemUtNiIsbGFiZWw6InAtMiB0ZXh0LXNtIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixpdGVtTGVhZGluZ0ljb246InNpemUtNiIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTYiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6ImxnIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTYiLGVtcHR5OiJwLTMgdGV4dC1iYXNlIn19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1kZWZhdWx0Iixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgZGlzYWJsZWQ6YmctZWxldmF0ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9LHBvc2l0aW9uOntwb3BwZXI6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSJ9LCJpdGVtLWFsaWduZWQiOntjb250ZW50OiIifX19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvciJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1pbnZlcnRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbnZlcnRlZCJ9LHtsZWFkaW5nOiEwLHNpemU6InhzIixjbGFzczoicHMtNyJ9LHtsZWFkaW5nOiEwLHNpemU6InNtIixjbGFzczoicHMtOCJ9LHtsZWFkaW5nOiEwLHNpemU6Im1kIixjbGFzczoicHMtOSJ9LHtsZWFkaW5nOiEwLHNpemU6ImxnIixjbGFzczoicHMtMTAifSx7bGVhZGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBzLTExIn0se3RyYWlsaW5nOiEwLHNpemU6InhzIixjbGFzczoicGUtNyJ9LHt0cmFpbGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBlLTgifSx7dHJhaWxpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwZS05In0se3RyYWlsaW5nOiEwLHNpemU6ImxnIixjbGFzczoicGUtMTAifSx7dHJhaWxpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwZS0xMSJ9LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITAsY2xhc3M6e2xlYWRpbmdJY29uOiJhbmltYXRlLXNwaW4ifX0se2xvYWRpbmc6ITAsbGVhZGluZzohMSx0cmFpbGluZzohMCxjbGFzczp7dHJhaWxpbmdJY29uOiJhbmltYXRlLXNwaW4ifX0se2ZpeGVkOiExLHNpemU6InhzIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJzbSIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToibWQiLGNsYXNzOiJtZDp0ZXh0LXNtIn0se2ZpeGVkOiExLHNpemU6ImxnIixjbGFzczoibWQ6dGV4dC1zbSJ9XSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIixjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIscG9zaXRpb246InBvcHBlciJ9fSxfTT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVTZWxlY3QiLHByb3BzOntpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzZWxlY3RlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSx2YWx1ZUtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZhbHVlIn0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9LGRlc2NyaXB0aW9uS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGVzY3JpcHRpb24ifSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1c0RlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiY2hhbmdlIiwiYmx1ciIsImZvY3VzIiwidXBkYXRlOm1vZGVsVmFsdWUiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2V4cG9zZTp0LGVtaXQ6bn0pe2NvbnN0IHI9ZSxvPW4scz16cigpLGk9U3QoKSxhPUxuKCJzZWxlY3QiLHIpLGw9JHMoVnIociwib3BlbiIsImRlZmF1bHRPcGVuIiwiZGlzYWJsZWQiLCJhdXRvY29tcGxldGUiLCJyZXF1aXJlZCIsIm11bHRpcGxlIiksbyksdT1ZbCh5dCgoKT0+ci5wb3J0YWwpKSx7cG9zaXRpb246Y309d00oInNlbGVjdCIscixGaCxbInBvc2l0aW9uIl0se3Bvc2l0aW9uOigpPT5yLmNvbnRlbnQ/LnBvc2l0aW9ufSksZj15dCgoKT0+bW4oci5jb250ZW50LHtzaWRlOiJib3R0b20iLHNpZGVPZmZzZXQ6OCxjb2xsaXNpb25QYWRkaW5nOjgscG9zaXRpb246Yy52YWx1ZX0pKSxkPXl0KCgpPT5tbihyLmFycm93LHtyb3VuZGVkOiEwfSkpLHtlbWl0Rm9ybUNoYW5nZTpwLGVtaXRGb3JtSW5wdXQ6bSxlbWl0Rm9ybUJsdXI6eSxlbWl0Rm9ybUZvY3VzOl8sc2l6ZTp3LGNvbG9yOnYsaWQ6aCxuYW1lOmIsaGlnaGxpZ2h0OngsZGlzYWJsZWQ6UyxhcmlhQXR0cnM6a309eGQocikse29yaWVudGF0aW9uOlQsc2l6ZTpDfT13ZChyKSx7aXNMZWFkaW5nOlAsaXNUcmFpbGluZzpGLGxlYWRpbmdJY29uTmFtZTpELHRyYWlsaW5nSWNvbk5hbWU6V309S2woeXQoKCk9Pm1uKHIse3RyYWlsaW5nSWNvbjppLnVpLmljb25zLmNoZXZyb25Eb3dufSkpKSxMPU4oKCk9PkMudmFsdWV8fHcudmFsdWUpLGo9TigoKT0+Yy52YWx1ZT09PSJpdGVtLWFsaWduZWQiKSxJPU4oKCk9PnV0KHtleHRlbmQ6dXQoRmgpLC4uLmkudWk/LnNlbGVjdHx8e319KSh7Y29sb3I6di52YWx1ZSx2YXJpYW50OnIudmFyaWFudCxzaXplOkw/LnZhbHVlLGxvYWRpbmc6ci5sb2FkaW5nLGhpZ2hsaWdodDp4LnZhbHVlLGxlYWRpbmc6UC52YWx1ZXx8ISFyLmF2YXRhcnx8ISFzLmxlYWRpbmcsdHJhaWxpbmc6Ri52YWx1ZXx8ISFzLnRyYWlsaW5nLGZpZWxkR3JvdXA6VC52YWx1ZSxwb3NpdGlvbjpjLnZhbHVlfSkpLFY9TigoKT0+ci5pdGVtcz8ubGVuZ3RoP2ZEKHIuaXRlbXMpP3IuaXRlbXM6W3IuaXRlbXNdOltdKSxCPU4oKCk9PlYudmFsdWUuZmxhdE1hcChlZT0+ZWUpKTtmdW5jdGlvbiBpZShlZSl7aWYoci5tdWx0aXBsZSYmQXJyYXkuaXNBcnJheShlZSkpe2NvbnN0IHo9ZWUubWFwKFk9PnVoKEIudmFsdWUsWSx7bGFiZWxLZXk6ci5sYWJlbEtleSx2YWx1ZUtleTpyLnZhbHVlS2V5fSkpLmZpbHRlcihZPT5ZIT1udWxsJiZZIT09IiIpO3JldHVybiB6Lmxlbmd0aD4wP3ouam9pbigiLCAiKTp2b2lkIDB9cmV0dXJuIHVoKEIudmFsdWUsZWUse2xhYmVsS2V5OnIubGFiZWxLZXksdmFsdWVLZXk6ci52YWx1ZUtleX0pfWNvbnN0IG5lPVNzKCJ0cmlnZ2VyUmVmIik7ZnVuY3Rpb24gVmUoKXtyLmF1dG9mb2N1cyYmbmUudmFsdWU/LiRlbD8uZm9jdXMoe2ZvY3VzVmlzaWJsZTohMH0pfW90KCgpPT57c2V0VGltZW91dCgoKT0+e1ZlKCl9LHIuYXV0b2ZvY3VzRGVsYXkpfSk7ZnVuY3Rpb24gTmUoZWUpe3IubW9kZWxNb2RpZmllcnM/LnRyaW0mJih0eXBlb2YgZWU9PSJzdHJpbmcifHxlZT09PW51bGx8fGVlPT09dm9pZCAwKSYmKGVlPWVlPy50cmltKCk/P251bGwpLHIubW9kZWxNb2RpZmllcnM/Lm51bWJlciYmKGVlPXlkKGVlKSksci5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJihlZT8/PW51bGwpLHIubW9kZWxNb2RpZmllcnM/Lm9wdGlvbmFsJiYhci5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJmVlIT09bnVsbCYmKGVlPz89dm9pZCAwKTtjb25zdCB6PW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTplZX19KTtvKCJjaGFuZ2UiLHopLHAoKSxtKCl9ZnVuY3Rpb24gZXQoZWUpe2lmKGVlKXtjb25zdCB6PW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO28oImZvY3VzIix6KSxfKCl9ZWxzZXtjb25zdCB6PW5ldyBGb2N1c0V2ZW50KCJibHVyIik7bygiYmx1ciIseikseSgpfX1mdW5jdGlvbiB2ZShlZSl7cmV0dXJuIHR5cGVvZiBlZT09Im9iamVjdCImJmVlIT09bnVsbH1jb25zdCBJZT1Tcygidmlld3BvcnRSZWYiKTtyZXR1cm4gdCh7dHJpZ2dlclJlZjp5dCgoKT0+bmUudmFsdWU/LiRlbCksdmlld3BvcnRSZWY6eXQoKCk9Pntjb25zdCBlZT1JZS52YWx1ZTtyZXR1cm4gZWUmJnR5cGVvZiBlZT09Im9iamVjdCImJiIkZWwiaW4gZWU/ZWUuJGVsOmVlfSl9KSwoZWUseik9PihSKCksJChnKEgyKSxmZSh7bmFtZTpnKGIpfSxnKGwpLHthdXRvY29tcGxldGU6ZS5hdXRvY29tcGxldGUsZGlzYWJsZWQ6ZyhTKSwiZGVmYXVsdC12YWx1ZSI6ZS5kZWZhdWx0VmFsdWUsIm1vZGVsLXZhbHVlIjplLm1vZGVsVmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOk5lLCJvblVwZGF0ZTpvcGVuIjpldH0pLHtkZWZhdWx0Ok0oKHttb2RlbFZhbHVlOlksb3BlbjpKfSk9PltyZShnKENOKSxmZSh7aWQ6ZyhoKSxyZWZfa2V5OiJ0cmlnZ2VyUmVmIixyZWY6bmUsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkkudmFsdWUuYmFzZSh7Y2xhc3M6W2coYSk/LmJhc2Usci5jbGFzc119KX0sey4uLmVlLiRhdHRycywuLi5nKGspfSkse2RlZmF1bHQ6TSgoKT0+W2coUCl8fGUuYXZhdGFyfHxzLmxlYWRpbmc/KFIoKSxfZSgic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJsZWFkaW5nIixjbGFzczp1ZShJLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmcoYSk/LmxlYWRpbmd9KSl9LFtVKGVlLiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6WSxvcGVuOkosdWk6SS52YWx1ZX0sKCk9PltnKFApJiZnKEQpPyhSKCksJChfbix7a2V5OjAsbmFtZTpnKEQpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6dWUoSS52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6ZyhhKT8ubGVhZGluZ0ljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5hdmF0YXI/KFIoKSwkKFVvLGZlKHtrZXk6MSxzaXplOmcoYSk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8SS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6SS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZyhhKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLChSKCEwKSxfZShHZSxudWxsLHVyKFtpZShZKV0sbGU9PihSKCksJChnKE9OKSx7a2V5OmxlLCJkYXRhLXNsb3QiOmxlIT1udWxsPyJ2YWx1ZSI6InBsYWNlaG9sZGVyIixjbGFzczp1ZShsZSE9bnVsbD9JLnZhbHVlLnZhbHVlKHtjbGFzczpnKGEpPy52YWx1ZX0pOkkudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmcoYSk/LnBsYWNlaG9sZGVyfSkpfSx7ZGVmYXVsdDpNKCgpPT5bVShlZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOlksb3BlbjpKLHVpOkkudmFsdWV9LCgpPT5bc3QocnQobGU/P2UucGxhY2Vob2xkZXI/PyLCoCIpLDEpXSldKSxfOjJ9LDEwMzIsWyJkYXRhLXNsb3QiLCJjbGFzcyJdKSkpLDEyOCkpLGcoRil8fHMudHJhaWxpbmc/KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6dWUoSS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZyhhKT8udHJhaWxpbmd9KSl9LFtVKGVlLiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOlksb3BlbjpKLHVpOkkudmFsdWV9LCgpPT5bZyhXKT8oUigpLCQoX24se2tleTowLG5hbWU6ZyhXKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczp1ZShJLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZyhhKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApXSksXzoyfSwxMDQwLFsiaWQiLCJjbGFzcyJdKSxyZShnKFNOKSx4dChNdChnKHUpKSkse2RlZmF1bHQ6TSgoKT0+W3JlKGcoX2QpLG51bGwse2RlZmF1bHQ6TSgoKT0+W3JlKGcobE4pLGZlKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6SS52YWx1ZS5jb250ZW50KHtjbGFzczpnKGEpPy5jb250ZW50fSl9LGYudmFsdWUpLHtkZWZhdWx0Ok0oKCk9PltVKGVlLiRzbG90cywiY29udGVudC10b3AiKSwoUigpLCQoRm4oai52YWx1ZT9nKElOKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6SWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnVlKEkudmFsdWUudmlld3BvcnQoe2NsYXNzOmcoYSk/LnZpZXdwb3J0fSkpfSx7ZGVmYXVsdDpNKCgpPT5bKFIoITApLF9lKEdlLG51bGwsdXIoVi52YWx1ZSwobGUsd2UpPT4oUigpLCQoZyhkTikse2tleTpgZ3JvdXAtJHt3ZX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6dWUoSS52YWx1ZS5ncm91cCh7Y2xhc3M6ZyhhKT8uZ3JvdXB9KSl9LHtkZWZhdWx0Ok0oKCk9PlsoUighMCksX2UoR2UsbnVsbCx1cihsZSwodGUsRSk9PihSKCksX2UoR2Use2tleTpgZ3JvdXAtJHt3ZX0tJHtFfWB9LFt2ZSh0ZSkmJnRlLnR5cGU9PT0ibGFiZWwiPyhSKCksJChnKF9OKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp1ZShJLnZhbHVlLmxhYmVsKHtjbGFzczpbZyhhKT8ubGFiZWwsdGUudWk/LmxhYmVsLHRlLmNsYXNzXX0pKX0se2RlZmF1bHQ6TSgoKT0+W3N0KHJ0KGcod24pKHRlLHIubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTp2ZSh0ZSkmJnRlLnR5cGU9PT0ic2VwYXJhdG9yIj8oUigpLCQoZyhFTikse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOnVlKEkudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZyhhKT8uc2VwYXJhdG9yLHRlLnVpPy5zZXBhcmF0b3IsdGUuY2xhc3NdfSkpfSxudWxsLDgsWyJjbGFzcyJdKSk6KFIoKSwkKGcoaE4pLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6dWUoSS52YWx1ZS5pdGVtKHtjbGFzczpbZyhhKT8uaXRlbSx2ZSh0ZSkmJnRlLnVpPy5pdGVtLHZlKHRlKSYmdGUuY2xhc3NdfSkpLGRpc2FibGVkOnZlKHRlKSYmdGUuZGlzYWJsZWQsdmFsdWU6dmUodGUpP2cod24pKHRlLHIudmFsdWVLZXkpOnRlLG9uU2VsZWN0Ok89PnZlKHRlKSYmdGUub25TZWxlY3Q/LihPKX0se2RlZmF1bHQ6TSgoKT0+W1UoZWUuJHNsb3RzLCJpdGVtIix7aXRlbTp0ZSxpbmRleDpFLHVpOkkudmFsdWV9LCgpPT5bVShlZS4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06dGUsaW5kZXg6RSx1aTpJLnZhbHVlfSwoKT0+W3ZlKHRlKSYmdGUuaWNvbj8oUigpLCQoX24se2tleTowLG5hbWU6dGUuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczp1ZShJLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2coYSk/Lml0ZW1MZWFkaW5nSWNvbix0ZS51aT8uaXRlbUxlYWRpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTp2ZSh0ZSkmJnRlLmF2YXRhcj8oUigpLCQoVW8sZmUoe2tleToxLHNpemU6dGUudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZyhhKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxJLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sdGUuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOkkudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltnKGEpPy5pdGVtTGVhZGluZ0F2YXRhcix0ZS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTp2ZSh0ZSkmJnRlLmNoaXA/KFIoKSwkKEdsLGZlKHtrZXk6MixzaXplOnRlLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxnKGEpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxJLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sdGUuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6SS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltnKGEpPy5pdGVtTGVhZGluZ0NoaXAsdGUudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pLHd0KCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczp1ZShJLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZyhhKT8uaXRlbVdyYXBwZXIsdmUodGUpJiZ0ZS51aT8uaXRlbVdyYXBwZXJdfSkpfSxbcmUoZyhiTikseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOnVlKEkudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZyhhKT8uaXRlbUxhYmVsLHZlKHRlKSYmdGUudWk/Lml0ZW1MYWJlbF19KSl9LHtkZWZhdWx0Ok0oKCk9PltVKGVlLiRzbG90cywiaXRlbS1sYWJlbCIse2l0ZW06dGUsaW5kZXg6RX0sKCk9PltzdChydCh2ZSh0ZSk/Zyh3bikodGUsci5sYWJlbEtleSk6dGUpLDEpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSx2ZSh0ZSkmJihnKHduKSh0ZSxyLmRlc2NyaXB0aW9uS2V5KXx8c1siaXRlbS1kZXNjcmlwdGlvbiJdKT8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6dWUoSS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltnKGEpPy5pdGVtRGVzY3JpcHRpb24sdmUodGUpJiZ0ZS51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0sW1UoZWUuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTp0ZSxpbmRleDpFfSwoKT0+W3N0KHJ0KGcod24pKHRlLHIuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZGUoIiIsITApXSwyKSx3dCgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOnVlKEkudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZyhhKT8uaXRlbVRyYWlsaW5nLHZlKHRlKSYmdGUudWk/Lml0ZW1UcmFpbGluZ119KSl9LFtVKGVlLiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06dGUsaW5kZXg6RSx1aTpJLnZhbHVlfSkscmUoZyh5TikseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShfbix7bmFtZTplLnNlbGVjdGVkSWNvbnx8ZyhpKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6dWUoSS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZyhhKT8uaXRlbVRyYWlsaW5nSWNvbix2ZSh0ZSkmJnRlLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSksXzozfSw4LFsiY2xhc3MiXSkpLFUoZWUuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpLGUuYXJyb3c/KFIoKSwkKGcock4pLGZlKHtrZXk6MH0sZC52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpJLnZhbHVlLmFycm93KHtjbGFzczpnKGEpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTpkZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldKSxfOjN9KV0pLF86M30sMTYpXSksXzozfSwxNixbIm5hbWUiLCJhdXRvY29tcGxldGUiLCJkaXNhYmxlZCIsImRlZmF1bHQtdmFsdWUiLCJtb2RlbC12YWx1ZSJdKSl9fSksVGU9U3ltYm9sLmZvcigiZHJpenpsZTplbnRpdHlLaW5kIik7ZnVuY3Rpb24gdm4oZSx0KXtpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiB0KXJldHVybiEwO2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxUZSkpdGhyb3cgbmV3IEVycm9yKGBDbGFzcyAiJHt0Lm5hbWU/PyI8dW5rbm93bj4ifSIgZG9lc24ndCBsb29rIGxpa2UgYSBEcml6emxlIGVudGl0eS4gSWYgdGhpcyBpcyBpbmNvcnJlY3QgYW5kIHRoZSBjbGFzcyBpcyBwcm92aWRlZCBieSBEcml6emxlLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcuYCk7bGV0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpLmNvbnN0cnVjdG9yO2lmKG4pZm9yKDtuOyl7aWYoVGUgaW4gbiYmbltUZV09PT10W1RlXSlyZXR1cm4hMDtuPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKX1yZXR1cm4hMX1jbGFzcyBrZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMudGFibGU9dCx0aGlzLmNvbmZpZz1uLHRoaXMubmFtZT1uLm5hbWUsdGhpcy5rZXlBc05hbWU9bi5rZXlBc05hbWUsdGhpcy5ub3ROdWxsPW4ubm90TnVsbCx0aGlzLmRlZmF1bHQ9bi5kZWZhdWx0LHRoaXMuZGVmYXVsdEZuPW4uZGVmYXVsdEZuLHRoaXMub25VcGRhdGVGbj1uLm9uVXBkYXRlRm4sdGhpcy5oYXNEZWZhdWx0PW4uaGFzRGVmYXVsdCx0aGlzLnByaW1hcnk9bi5wcmltYXJ5S2V5LHRoaXMuaXNVbmlxdWU9bi5pc1VuaXF1ZSx0aGlzLnVuaXF1ZU5hbWU9bi51bmlxdWVOYW1lLHRoaXMudW5pcXVlVHlwZT1uLnVuaXF1ZVR5cGUsdGhpcy5kYXRhVHlwZT1uLmRhdGFUeXBlLHRoaXMuY29sdW1uVHlwZT1uLmNvbHVtblR5cGUsdGhpcy5nZW5lcmF0ZWQ9bi5nZW5lcmF0ZWQsdGhpcy5nZW5lcmF0ZWRJZGVudGl0eT1uLmdlbmVyYXRlZElkZW50aXR5fXN0YXRpY1tUZV09IkNvbHVtbiI7bmFtZTtrZXlBc05hbWU7cHJpbWFyeTtub3ROdWxsO2RlZmF1bHQ7ZGVmYXVsdEZuO29uVXBkYXRlRm47aGFzRGVmYXVsdDtpc1VuaXF1ZTt1bmlxdWVOYW1lO3VuaXF1ZVR5cGU7ZGF0YVR5cGU7Y29sdW1uVHlwZTtlbnVtVmFsdWVzPXZvaWQgMDtnZW5lcmF0ZWQ9dm9pZCAwO2dlbmVyYXRlZElkZW50aXR5PXZvaWQgMDtjb25maWc7bWFwRnJvbURyaXZlclZhbHVlKHQpe3JldHVybiB0fW1hcFRvRHJpdmVyVmFsdWUodCl7cmV0dXJuIHR9c2hvdWxkRGlzYWJsZUluc2VydCgpe3JldHVybiB0aGlzLmNvbmZpZy5nZW5lcmF0ZWQhPT12b2lkIDAmJnRoaXMuY29uZmlnLmdlbmVyYXRlZC50eXBlIT09ImJ5RGVmYXVsdCJ9fWNsYXNzIHhNe3N0YXRpY1tUZV09IkNvbHVtbkJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jb25maWc9e25hbWU6dCxrZXlBc05hbWU6dD09PSIiLG5vdE51bGw6ITEsZGVmYXVsdDp2b2lkIDAsaGFzRGVmYXVsdDohMSxwcmltYXJ5S2V5OiExLGlzVW5pcXVlOiExLHVuaXF1ZU5hbWU6dm9pZCAwLHVuaXF1ZVR5cGU6dm9pZCAwLGRhdGFUeXBlOm4sY29sdW1uVHlwZTpyLGdlbmVyYXRlZDp2b2lkIDB9fSR0eXBlKCl7cmV0dXJuIHRoaXN9bm90TnVsbCgpe3JldHVybiB0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9ZGVmYXVsdCh0KXtyZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdD10LHRoaXMuY29uZmlnLmhhc0RlZmF1bHQ9ITAsdGhpc30kZGVmYXVsdEZuKHQpe3JldHVybiB0aGlzLmNvbmZpZy5kZWZhdWx0Rm49dCx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHRoaXN9JGRlZmF1bHQ9dGhpcy4kZGVmYXVsdEZuOyRvblVwZGF0ZUZuKHQpe3JldHVybiB0aGlzLmNvbmZpZy5vblVwZGF0ZUZuPXQsdGhpcy5jb25maWcuaGFzRGVmYXVsdD0hMCx0aGlzfSRvblVwZGF0ZT10aGlzLiRvblVwZGF0ZUZuO3ByaW1hcnlLZXkoKXtyZXR1cm4gdGhpcy5jb25maWcucHJpbWFyeUtleT0hMCx0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9c2V0TmFtZSh0KXt0aGlzLmNvbmZpZy5uYW1lPT09IiImJih0aGlzLmNvbmZpZy5uYW1lPXQpfX1jb25zdCB3cz1TeW1ib2wuZm9yKCJkcml6emxlOk5hbWUiKSx6aD1TeW1ib2wuZm9yKCJkcml6emxlOmlzUGdFbnVtIik7ZnVuY3Rpb24gU00oZSl7cmV0dXJuISFlJiZ0eXBlb2YgZT09ImZ1bmN0aW9uIiYmemggaW4gZSYmZVt6aF09PT0hMH1jbGFzcyBfd3tzdGF0aWNbVGVdPSJTdWJxdWVyeSI7Y29uc3RydWN0b3IodCxuLHIsbz0hMSxzPVtdKXt0aGlzLl89e2JyYW5kOiJTdWJxdWVyeSIsc3FsOnQsc2VsZWN0ZWRGaWVsZHM6bixhbGlhczpyLGlzV2l0aDpvLHVzZWRUYWJsZXM6c319fWNvbnN0IGtNPXtzdGFydEFjdGl2ZVNwYW4oZSx0KXtyZXR1cm4gdCgpfX0scGk9U3ltYm9sLmZvcigiZHJpenpsZTpWaWV3QmFzZUNvbmZpZyIpLEtjPVN5bWJvbC5mb3IoImRyaXp6bGU6U2NoZW1hIiksamg9U3ltYm9sLmZvcigiZHJpenpsZTpDb2x1bW5zIiksVmg9U3ltYm9sLmZvcigiZHJpenpsZTpFeHRyYUNvbmZpZ0NvbHVtbnMiKSxRYz1TeW1ib2wuZm9yKCJkcml6emxlOk9yaWdpbmFsTmFtZSIpLFljPVN5bWJvbC5mb3IoImRyaXp6bGU6QmFzZU5hbWUiKSxsbD1TeW1ib2wuZm9yKCJkcml6emxlOklzQWxpYXMiKSxVaD1TeW1ib2wuZm9yKCJkcml6emxlOkV4dHJhQ29uZmlnQnVpbGRlciIpLEVNPVN5bWJvbC5mb3IoImRyaXp6bGU6SXNEcml6emxlVGFibGUiKTtjbGFzcyBxdHtzdGF0aWNbVGVdPSJUYWJsZSI7c3RhdGljIFN5bWJvbD17TmFtZTp3cyxTY2hlbWE6S2MsT3JpZ2luYWxOYW1lOlFjLENvbHVtbnM6amgsRXh0cmFDb25maWdDb2x1bW5zOlZoLEJhc2VOYW1lOlljLElzQWxpYXM6bGwsRXh0cmFDb25maWdCdWlsZGVyOlVofTtbd3NdO1tRY107W0tjXTtbamhdO1tWaF07W1ljXTtbbGxdPSExO1tFTV09ITA7W1VoXT12b2lkIDA7Y29uc3RydWN0b3IodCxuLHIpe3RoaXNbd3NdPXRoaXNbUWNdPXQsdGhpc1tLY109bix0aGlzW1ljXT1yfX1mdW5jdGlvbiBUTShlKXtyZXR1cm4gZSE9bnVsbCYmdHlwZW9mIGUuZ2V0U1FMPT0iZnVuY3Rpb24ifWZ1bmN0aW9uIENNKGUpe2NvbnN0IHQ9e3NxbDoiIixwYXJhbXM6W119O2Zvcihjb25zdCBuIG9mIGUpdC5zcWwrPW4uc3FsLHQucGFyYW1zLnB1c2goLi4ubi5wYXJhbXMpLG4udHlwaW5ncz8ubGVuZ3RoJiYodC50eXBpbmdzfHwodC50eXBpbmdzPVtdKSx0LnR5cGluZ3MucHVzaCguLi5uLnR5cGluZ3MpKTtyZXR1cm4gdH1jbGFzcyBCbntzdGF0aWNbVGVdPSJTdHJpbmdDaHVuayI7dmFsdWU7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZT1BcnJheS5pc0FycmF5KHQpP3Q6W3RdfWdldFNRTCgpe3JldHVybiBuZXcgQ3QoW3RoaXNdKX19Y2xhc3MgQ3R7Y29uc3RydWN0b3IodCl7dGhpcy5xdWVyeUNodW5rcz10O2Zvcihjb25zdCBuIG9mIHQpaWYodm4obixxdCkpe2NvbnN0IHI9bltxdC5TeW1ib2wuU2NoZW1hXTt0aGlzLnVzZWRUYWJsZXMucHVzaChyPT09dm9pZCAwP25bcXQuU3ltYm9sLk5hbWVdOnIrIi4iK25bcXQuU3ltYm9sLk5hbWVdKX19c3RhdGljW1RlXT0iU1FMIjtkZWNvZGVyPXh3O3Nob3VsZElubGluZVBhcmFtcz0hMTt1c2VkVGFibGVzPVtdO2FwcGVuZCh0KXtyZXR1cm4gdGhpcy5xdWVyeUNodW5rcy5wdXNoKC4uLnQucXVlcnlDaHVua3MpLHRoaXN9dG9RdWVyeSh0KXtyZXR1cm4ga00uc3RhcnRBY3RpdmVTcGFuKCJkcml6emxlLmJ1aWxkU1FMIixuPT57Y29uc3Qgcj10aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKHRoaXMucXVlcnlDaHVua3MsdCk7cmV0dXJuIG4/LnNldEF0dHJpYnV0ZXMoeyJkcml6emxlLnF1ZXJ5LnRleHQiOnIuc3FsLCJkcml6emxlLnF1ZXJ5LnBhcmFtcyI6SlNPTi5zdHJpbmdpZnkoci5wYXJhbXMpfSkscn0pfWJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKHQsbil7Y29uc3Qgcj1PYmplY3QuYXNzaWduKHt9LG4se2lubGluZVBhcmFtczpuLmlubGluZVBhcmFtc3x8dGhpcy5zaG91bGRJbmxpbmVQYXJhbXMscGFyYW1TdGFydEluZGV4Om4ucGFyYW1TdGFydEluZGV4fHx7dmFsdWU6MH19KSx7Y2FzaW5nOm8sZXNjYXBlTmFtZTpzLGVzY2FwZVBhcmFtOmkscHJlcGFyZVR5cGluZzphLGlubGluZVBhcmFtczpsLHBhcmFtU3RhcnRJbmRleDp1fT1yO3JldHVybiBDTSh0Lm1hcChjPT57aWYodm4oYyxCbikpcmV0dXJue3NxbDpjLnZhbHVlLmpvaW4oIiIpLHBhcmFtczpbXX07aWYodm4oYyxzZikpcmV0dXJue3NxbDpzKGMudmFsdWUpLHBhcmFtczpbXX07aWYoYz09PXZvaWQgMClyZXR1cm57c3FsOiIiLHBhcmFtczpbXX07aWYoQXJyYXkuaXNBcnJheShjKSl7Y29uc3QgZj1bbmV3IEJuKCIoIildO2Zvcihjb25zdFtkLHBdb2YgYy5lbnRyaWVzKCkpZi5wdXNoKHApLGQ8Yy5sZW5ndGgtMSYmZi5wdXNoKG5ldyBCbigiLCAiKSk7cmV0dXJuIGYucHVzaChuZXcgQm4oIikiKSksdGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhmLHIpfWlmKHZuKGMsQ3QpKXJldHVybiB0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKGMucXVlcnlDaHVua3Msey4uLnIsaW5saW5lUGFyYW1zOmx8fGMuc2hvdWxkSW5saW5lUGFyYW1zfSk7aWYodm4oYyxxdCkpe2NvbnN0IGY9Y1txdC5TeW1ib2wuU2NoZW1hXSxkPWNbcXQuU3ltYm9sLk5hbWVdO3JldHVybntzcWw6Zj09PXZvaWQgMHx8Y1tsbF0/cyhkKTpzKGYpKyIuIitzKGQpLHBhcmFtczpbXX19aWYodm4oYyxrZCkpe2NvbnN0IGY9by5nZXRDb2x1bW5DYXNpbmcoYyk7aWYobi5pbnZva2VTb3VyY2U9PT0iaW5kZXhlcyIpcmV0dXJue3NxbDpzKGYpLHBhcmFtczpbXX07Y29uc3QgZD1jLnRhYmxlW3F0LlN5bWJvbC5TY2hlbWFdO3JldHVybntzcWw6Yy50YWJsZVtsbF18fGQ9PT12b2lkIDA/cyhjLnRhYmxlW3F0LlN5bWJvbC5OYW1lXSkrIi4iK3MoZik6cyhkKSsiLiIrcyhjLnRhYmxlW3F0LlN5bWJvbC5OYW1lXSkrIi4iK3MoZikscGFyYW1zOltdfX1pZih2bihjLE9NKSl7Y29uc3QgZj1jW3BpXS5zY2hlbWEsZD1jW3BpXS5uYW1lO3JldHVybntzcWw6Zj09PXZvaWQgMHx8Y1twaV0uaXNBbGlhcz9zKGQpOnMoZikrIi4iK3MoZCkscGFyYW1zOltdfX1pZih2bihjLGt3KSl7aWYodm4oYy52YWx1ZSxsZikpcmV0dXJue3NxbDppKHUudmFsdWUrKyxjKSxwYXJhbXM6W2NdLHR5cGluZ3M6WyJub25lIl19O2NvbnN0IGY9Yy52YWx1ZT09PW51bGw/bnVsbDpjLmVuY29kZXIubWFwVG9Ecml2ZXJWYWx1ZShjLnZhbHVlKTtpZih2bihmLEN0KSlyZXR1cm4gdGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhbZl0scik7aWYobClyZXR1cm57c3FsOnRoaXMubWFwSW5saW5lUGFyYW0oZixyKSxwYXJhbXM6W119O2xldCBkPVsibm9uZSJdO3JldHVybiBhJiYoZD1bYShjLmVuY29kZXIpXSkse3NxbDppKHUudmFsdWUrKyxmKSxwYXJhbXM6W2ZdLHR5cGluZ3M6ZH19cmV0dXJuIHZuKGMsbGYpP3tzcWw6aSh1LnZhbHVlKyssYykscGFyYW1zOltjXSx0eXBpbmdzOlsibm9uZSJdfTp2bihjLEN0LkFsaWFzZWQpJiZjLmZpZWxkQWxpYXMhPT12b2lkIDA/e3NxbDpzKGMuZmllbGRBbGlhcykscGFyYW1zOltdfTp2bihjLF93KT9jLl8uaXNXaXRoP3tzcWw6cyhjLl8uYWxpYXMpLHBhcmFtczpbXX06dGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhbbmV3IEJuKCIoIiksYy5fLnNxbCxuZXcgQm4oIikgIiksbmV3IHNmKGMuXy5hbGlhcyldLHIpOlNNKGMpP2Muc2NoZW1hP3tzcWw6cyhjLnNjaGVtYSkrIi4iK3MoYy5lbnVtTmFtZSkscGFyYW1zOltdfTp7c3FsOnMoYy5lbnVtTmFtZSkscGFyYW1zOltdfTpUTShjKT9jLnNob3VsZE9taXRTUUxQYXJlbnM/LigpP3RoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW2MuZ2V0U1FMKCldLHIpOnRoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW25ldyBCbigiKCIpLGMuZ2V0U1FMKCksbmV3IEJuKCIpIildLHIpOmw/e3NxbDp0aGlzLm1hcElubGluZVBhcmFtKGMscikscGFyYW1zOltdfTp7c3FsOmkodS52YWx1ZSsrLGMpLHBhcmFtczpbY10sdHlwaW5nczpbIm5vbmUiXX19KSl9bWFwSW5saW5lUGFyYW0odCx7ZXNjYXBlU3RyaW5nOm59KXtpZih0PT09bnVsbClyZXR1cm4ibnVsbCI7aWYodHlwZW9mIHQ9PSJudW1iZXIifHx0eXBlb2YgdD09ImJvb2xlYW4iKXJldHVybiB0LnRvU3RyaW5nKCk7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiBuKHQpO2lmKHR5cGVvZiB0PT0ib2JqZWN0Iil7Y29uc3Qgcj10LnRvU3RyaW5nKCk7cmV0dXJuIG4ocj09PSJbb2JqZWN0IE9iamVjdF0iP0pTT04uc3RyaW5naWZ5KHQpOnIpfXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBwYXJhbSB2YWx1ZTogIit0KX1nZXRTUUwoKXtyZXR1cm4gdGhpc31hcyh0KXtyZXR1cm4gdD09PXZvaWQgMD90aGlzOm5ldyBDdC5BbGlhc2VkKHRoaXMsdCl9bWFwV2l0aCh0KXtyZXR1cm4gdGhpcy5kZWNvZGVyPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3ttYXBGcm9tRHJpdmVyVmFsdWU6dH06dCx0aGlzfWlubGluZVBhcmFtcygpe3JldHVybiB0aGlzLnNob3VsZElubGluZVBhcmFtcz0hMCx0aGlzfWlmKHQpe3JldHVybiB0P3RoaXM6dm9pZCAwfX1jbGFzcyBzZntjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXR9c3RhdGljW1RlXT0iTmFtZSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBDdChbdGhpc10pfX1jb25zdCB4dz17bWFwRnJvbURyaXZlclZhbHVlOmU9PmV9LFN3PXttYXBUb0RyaXZlclZhbHVlOmU9PmV9Oyh7Li4ueHcsLi4uU3d9KTtjbGFzcyBrd3tjb25zdHJ1Y3Rvcih0LG49U3cpe3RoaXMudmFsdWU9dCx0aGlzLmVuY29kZXI9bn1zdGF0aWNbVGVdPSJQYXJhbSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBDdChbdGhpc10pfX1mdW5jdGlvbiBhZihlLC4uLnQpe2NvbnN0IG49W107KHQubGVuZ3RoPjB8fGUubGVuZ3RoPjAmJmVbMF0hPT0iIikmJm4ucHVzaChuZXcgQm4oZVswXSkpO2Zvcihjb25zdFtyLG9db2YgdC5lbnRyaWVzKCkpbi5wdXNoKG8sbmV3IEJuKGVbcisxXSkpO3JldHVybiBuZXcgQ3Qobil9KGU9PntmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBDdChbXSl9ZS5lbXB0eT10O2Z1bmN0aW9uIG4obCl7cmV0dXJuIG5ldyBDdChsKX1lLmZyb21MaXN0PW47ZnVuY3Rpb24gcihsKXtyZXR1cm4gbmV3IEN0KFtuZXcgQm4obCldKX1lLnJhdz1yO2Z1bmN0aW9uIG8obCx1KXtjb25zdCBjPVtdO2Zvcihjb25zdFtmLGRdb2YgbC5lbnRyaWVzKCkpZj4wJiZ1IT09dm9pZCAwJiZjLnB1c2godSksYy5wdXNoKGQpO3JldHVybiBuZXcgQ3QoYyl9ZS5qb2luPW87ZnVuY3Rpb24gcyhsKXtyZXR1cm4gbmV3IHNmKGwpfWUuaWRlbnRpZmllcj1zO2Z1bmN0aW9uIGkobCl7cmV0dXJuIG5ldyBsZihsKX1lLnBsYWNlaG9sZGVyPWk7ZnVuY3Rpb24gYShsLHUpe3JldHVybiBuZXcga3cobCx1KX1lLnBhcmFtPWF9KShhZnx8KGFmPXt9KSk7KGU9PntjbGFzcyB0e2NvbnN0cnVjdG9yKHIsbyl7dGhpcy5zcWw9cix0aGlzLmZpZWxkQWxpYXM9b31zdGF0aWNbVGVdPSJTUUwuQWxpYXNlZCI7aXNTZWxlY3Rpb25GaWVsZD0hMTtnZXRTUUwoKXtyZXR1cm4gdGhpcy5zcWx9Y2xvbmUoKXtyZXR1cm4gbmV3IHQodGhpcy5zcWwsdGhpcy5maWVsZEFsaWFzKX19ZS5BbGlhc2VkPXR9KShDdHx8KEN0PXt9KSk7Y2xhc3MgbGZ7Y29uc3RydWN0b3IodCl7dGhpcy5uYW1lPXR9c3RhdGljW1RlXT0iUGxhY2Vob2xkZXIiO2dldFNRTCgpe3JldHVybiBuZXcgQ3QoW3RoaXNdKX19Y29uc3QgQU09U3ltYm9sLmZvcigiZHJpenpsZTpJc0RyaXp6bGVWaWV3Iik7Y2xhc3MgT017c3RhdGljW1RlXT0iVmlldyI7W3BpXTtbQU1dPSEwO2NvbnN0cnVjdG9yKHtuYW1lOnQsc2NoZW1hOm4sc2VsZWN0ZWRGaWVsZHM6cixxdWVyeTpvfSl7dGhpc1twaV09e25hbWU6dCxvcmlnaW5hbE5hbWU6dCxzY2hlbWE6bixzZWxlY3RlZEZpZWxkczpyLHF1ZXJ5Om8saXNFeGlzdGluZzohbyxpc0FsaWFzOiExfX1nZXRTUUwoKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9fWtkLnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9O3F0LnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9O193LnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9O2Z1bmN0aW9uIFdpKGUsdCl7cmV0dXJue25hbWU6dHlwZW9mIGU9PSJzdHJpbmciJiZlLmxlbmd0aD4wP2U6IiIsY29uZmlnOnR5cGVvZiBlPT0ib2JqZWN0Ij9lOnR9fWNvbnN0IEV3PXR5cGVvZiBUZXh0RGVjb2Rlcj4idSI/bnVsbDpuZXcgVGV4dERlY29kZXI7Y2xhc3MgUE17c3RhdGljW1RlXT0iU1FMaXRlRm9yZWlnbktleUJ1aWxkZXIiO3JlZmVyZW5jZTtfb25VcGRhdGU7X29uRGVsZXRlO2NvbnN0cnVjdG9yKHQsbil7dGhpcy5yZWZlcmVuY2U9KCk9Pntjb25zdHtuYW1lOnIsY29sdW1uczpvLGZvcmVpZ25Db2x1bW5zOnN9PXQoKTtyZXR1cm57bmFtZTpyLGNvbHVtbnM6byxmb3JlaWduVGFibGU6c1swXS50YWJsZSxmb3JlaWduQ29sdW1uczpzfX0sbiYmKHRoaXMuX29uVXBkYXRlPW4ub25VcGRhdGUsdGhpcy5fb25EZWxldGU9bi5vbkRlbGV0ZSl9b25VcGRhdGUodCl7cmV0dXJuIHRoaXMuX29uVXBkYXRlPXQsdGhpc31vbkRlbGV0ZSh0KXtyZXR1cm4gdGhpcy5fb25EZWxldGU9dCx0aGlzfWJ1aWxkKHQpe3JldHVybiBuZXcgSU0odCx0aGlzKX19Y2xhc3MgSU17Y29uc3RydWN0b3IodCxuKXt0aGlzLnRhYmxlPXQsdGhpcy5yZWZlcmVuY2U9bi5yZWZlcmVuY2UsdGhpcy5vblVwZGF0ZT1uLl9vblVwZGF0ZSx0aGlzLm9uRGVsZXRlPW4uX29uRGVsZXRlfXN0YXRpY1tUZV09IlNRTGl0ZUZvcmVpZ25LZXkiO3JlZmVyZW5jZTtvblVwZGF0ZTtvbkRlbGV0ZTtnZXROYW1lKCl7Y29uc3R7bmFtZTp0LGNvbHVtbnM6bixmb3JlaWduQ29sdW1uczpyfT10aGlzLnJlZmVyZW5jZSgpLG89bi5tYXAoYT0+YS5uYW1lKSxzPXIubWFwKGE9PmEubmFtZSksaT1bdGhpcy50YWJsZVt3c10sLi4ubyxyWzBdLnRhYmxlW3dzXSwuLi5zXTtyZXR1cm4gdD8/YCR7aS5qb2luKCJfIil9X2ZrYH19ZnVuY3Rpb24gUk0oZSx0KXtyZXR1cm5gJHtlW3dzXX1fJHt0LmpvaW4oIl8iKX1fdW5pcXVlYH1jbGFzcyBYbiBleHRlbmRzIHhNe3N0YXRpY1tUZV09IlNRTGl0ZUNvbHVtbkJ1aWxkZXIiO2ZvcmVpZ25LZXlDb25maWdzPVtdO3JlZmVyZW5jZXModCxuPXt9KXtyZXR1cm4gdGhpcy5mb3JlaWduS2V5Q29uZmlncy5wdXNoKHtyZWY6dCxhY3Rpb25zOm59KSx0aGlzfXVuaXF1ZSh0KXtyZXR1cm4gdGhpcy5jb25maWcuaXNVbmlxdWU9ITAsdGhpcy5jb25maWcudW5pcXVlTmFtZT10LHRoaXN9Z2VuZXJhdGVkQWx3YXlzQXModCxuKXtyZXR1cm4gdGhpcy5jb25maWcuZ2VuZXJhdGVkPXthczp0LHR5cGU6ImFsd2F5cyIsbW9kZTpuPy5tb2RlPz8idmlydHVhbCJ9LHRoaXN9YnVpbGRGb3JlaWduS2V5cyh0LG4pe3JldHVybiB0aGlzLmZvcmVpZ25LZXlDb25maWdzLm1hcCgoe3JlZjpyLGFjdGlvbnM6b30pPT4oKHMsaSk9Pntjb25zdCBhPW5ldyBQTSgoKT0+e2NvbnN0IGw9cygpO3JldHVybntjb2x1bW5zOlt0XSxmb3JlaWduQ29sdW1uczpbbF19fSk7cmV0dXJuIGkub25VcGRhdGUmJmEub25VcGRhdGUoaS5vblVwZGF0ZSksaS5vbkRlbGV0ZSYmYS5vbkRlbGV0ZShpLm9uRGVsZXRlKSxhLmJ1aWxkKG4pfSkocixvKSl9fWNsYXNzIFpuIGV4dGVuZHMga2R7Y29uc3RydWN0b3IodCxuKXtuLnVuaXF1ZU5hbWV8fChuLnVuaXF1ZU5hbWU9Uk0odCxbbi5uYW1lXSkpLHN1cGVyKHQsbiksdGhpcy50YWJsZT10fXN0YXRpY1tUZV09IlNRTGl0ZUNvbHVtbiJ9Y2xhc3MgTk0gZXh0ZW5kcyBYbntzdGF0aWNbVGVdPSJTUUxpdGVCaWdJbnRCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJiaWdpbnQiLCJTUUxpdGVCaWdJbnQiKX1idWlsZCh0KXtyZXR1cm4gbmV3IERNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBETSBleHRlbmRzIFpue3N0YXRpY1tUZV09IlNRTGl0ZUJpZ0ludCI7Z2V0U1FMVHlwZSgpe3JldHVybiJibG9iIn1tYXBGcm9tRHJpdmVyVmFsdWUodCl7aWYodHlwZW9mIEJ1ZmZlcjwidSImJkJ1ZmZlci5mcm9tKXtjb25zdCBuPUJ1ZmZlci5pc0J1ZmZlcih0KT90OnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9CdWZmZXIuZnJvbSh0KTp0LmJ1ZmZlcj9CdWZmZXIuZnJvbSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTpCdWZmZXIuZnJvbSh0KTtyZXR1cm4gQmlnSW50KG4udG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEJpZ0ludChFdy5kZWNvZGUodCkpfW1hcFRvRHJpdmVyVmFsdWUodCl7cmV0dXJuIEJ1ZmZlci5mcm9tKHQudG9TdHJpbmcoKSl9fWNsYXNzIExNIGV4dGVuZHMgWG57c3RhdGljW1RlXT0iU1FMaXRlQmxvYkpzb25CdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJqc29uIiwiU1FMaXRlQmxvYkpzb24iKX1idWlsZCh0KXtyZXR1cm4gbmV3ICRNKHQsdGhpcy5jb25maWcpfX1jbGFzcyAkTSBleHRlbmRzIFpue3N0YXRpY1tUZV09IlNRTGl0ZUJsb2JKc29uIjtnZXRTUUxUeXBlKCl7cmV0dXJuImJsb2IifW1hcEZyb21Ecml2ZXJWYWx1ZSh0KXtpZih0eXBlb2YgQnVmZmVyPCJ1IiYmQnVmZmVyLmZyb20pe2NvbnN0IG49QnVmZmVyLmlzQnVmZmVyKHQpP3Q6dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP0J1ZmZlci5mcm9tKHQpOnQuYnVmZmVyP0J1ZmZlci5mcm9tKHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpOkJ1ZmZlci5mcm9tKHQpO3JldHVybiBKU09OLnBhcnNlKG4udG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEpTT04ucGFyc2UoRXcuZGVjb2RlKHQpKX1tYXBUb0RyaXZlclZhbHVlKHQpe3JldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh0KSl9fWNsYXNzIE1NIGV4dGVuZHMgWG57c3RhdGljW1RlXT0iU1FMaXRlQmxvYkJ1ZmZlckJ1aWxkZXIiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsImJ1ZmZlciIsIlNRTGl0ZUJsb2JCdWZmZXIiKX1idWlsZCh0KXtyZXR1cm4gbmV3IEJNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBCTSBleHRlbmRzIFpue3N0YXRpY1tUZV09IlNRTGl0ZUJsb2JCdWZmZXIiO21hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHQpP3Q6QnVmZmVyLmZyb20odCl9Z2V0U1FMVHlwZSgpe3JldHVybiJibG9iIn19ZnVuY3Rpb24gcU0oZSx0KXtjb25zdHtuYW1lOm4sY29uZmlnOnJ9PVdpKGUsdCk7cmV0dXJuIHI/Lm1vZGU9PT0ianNvbiI/bmV3IExNKG4pOnI/Lm1vZGU9PT0iYmlnaW50Ij9uZXcgTk0obik6bmV3IE1NKG4pfWNsYXNzIEZNIGV4dGVuZHMgWG57c3RhdGljW1RlXT0iU1FMaXRlQ3VzdG9tQ29sdW1uQnVpbGRlciI7Y29uc3RydWN0b3IodCxuLHIpe3N1cGVyKHQsImN1c3RvbSIsIlNRTGl0ZUN1c3RvbUNvbHVtbiIpLHRoaXMuY29uZmlnLmZpZWxkQ29uZmlnPW4sdGhpcy5jb25maWcuY3VzdG9tVHlwZVBhcmFtcz1yfWJ1aWxkKHQpe3JldHVybiBuZXcgek0odCx0aGlzLmNvbmZpZyl9fWNsYXNzIHpNIGV4dGVuZHMgWm57c3RhdGljW1RlXT0iU1FMaXRlQ3VzdG9tQ29sdW1uIjtzcWxOYW1lO21hcFRvO21hcEZyb207Y29uc3RydWN0b3IodCxuKXtzdXBlcih0LG4pLHRoaXMuc3FsTmFtZT1uLmN1c3RvbVR5cGVQYXJhbXMuZGF0YVR5cGUobi5maWVsZENvbmZpZyksdGhpcy5tYXBUbz1uLmN1c3RvbVR5cGVQYXJhbXMudG9Ecml2ZXIsdGhpcy5tYXBGcm9tPW4uY3VzdG9tVHlwZVBhcmFtcy5mcm9tRHJpdmVyfWdldFNRTFR5cGUoKXtyZXR1cm4gdGhpcy5zcWxOYW1lfW1hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gdHlwZW9mIHRoaXMubWFwRnJvbT09ImZ1bmN0aW9uIj90aGlzLm1hcEZyb20odCk6dH1tYXBUb0RyaXZlclZhbHVlKHQpe3JldHVybiB0eXBlb2YgdGhpcy5tYXBUbz09ImZ1bmN0aW9uIj90aGlzLm1hcFRvKHQpOnR9fWZ1bmN0aW9uIGpNKGUpe3JldHVybih0LG4pPT57Y29uc3R7bmFtZTpyLGNvbmZpZzpvfT1XaSh0LG4pO3JldHVybiBuZXcgRk0ocixvLGUpfX1jbGFzcyBFZCBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZUJhc2VJbnRlZ2VyQnVpbGRlciI7Y29uc3RydWN0b3IodCxuLHIpe3N1cGVyKHQsbixyKSx0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSExfXByaW1hcnlLZXkodCl7cmV0dXJuIHQ/LmF1dG9JbmNyZW1lbnQmJih0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSEwKSx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHN1cGVyLnByaW1hcnlLZXkoKX19Y2xhc3MgVGQgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVCYXNlSW50ZWdlciI7YXV0b0luY3JlbWVudD10aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50O2dldFNRTFR5cGUoKXtyZXR1cm4iaW50ZWdlciJ9fWNsYXNzIFZNIGV4dGVuZHMgRWR7c3RhdGljW1RlXT0iU1FMaXRlSW50ZWdlckJ1aWxkZXIiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIm51bWJlciIsIlNRTGl0ZUludGVnZXIiKX1idWlsZCh0KXtyZXR1cm4gbmV3IFVNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBVTSBleHRlbmRzIFRke3N0YXRpY1tUZV09IlNRTGl0ZUludGVnZXIifWNsYXNzIEhNIGV4dGVuZHMgRWR7c3RhdGljW1RlXT0iU1FMaXRlVGltZXN0YW1wQnVpbGRlciI7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0LCJkYXRlIiwiU1FMaXRlVGltZXN0YW1wIiksdGhpcy5jb25maWcubW9kZT1ufWRlZmF1bHROb3coKXtyZXR1cm4gdGhpcy5kZWZhdWx0KGFmYChjYXN0KChqdWxpYW5kYXkoJ25vdycpIC0gMjQ0MDU4Ny41KSo4NjQwMDAwMCBhcyBpbnRlZ2VyKSlgKX1idWlsZCh0KXtyZXR1cm4gbmV3IFdNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBXTSBleHRlbmRzIFRke3N0YXRpY1tUZV09IlNRTGl0ZVRpbWVzdGFtcCI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gdGhpcy5jb25maWcubW9kZT09PSJ0aW1lc3RhbXAiP25ldyBEYXRlKHQqMWUzKTpuZXcgRGF0ZSh0KX1tYXBUb0RyaXZlclZhbHVlKHQpe2NvbnN0IG49dC5nZXRUaW1lKCk7cmV0dXJuIHRoaXMuY29uZmlnLm1vZGU9PT0idGltZXN0YW1wIj9NYXRoLmZsb29yKG4vMWUzKTpufX1jbGFzcyBHTSBleHRlbmRzIEVke3N0YXRpY1tUZV09IlNRTGl0ZUJvb2xlYW5CdWlsZGVyIjtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsImJvb2xlYW4iLCJTUUxpdGVCb29sZWFuIiksdGhpcy5jb25maWcubW9kZT1ufWJ1aWxkKHQpe3JldHVybiBuZXcgS00odCx0aGlzLmNvbmZpZyl9fWNsYXNzIEtNIGV4dGVuZHMgVGR7c3RhdGljW1RlXT0iU1FMaXRlQm9vbGVhbiI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gTnVtYmVyKHQpPT09MX1tYXBUb0RyaXZlclZhbHVlKHQpe3JldHVybiB0PzE6MH19ZnVuY3Rpb24gYXQoZSx0KXtjb25zdHtuYW1lOm4sY29uZmlnOnJ9PVdpKGUsdCk7cmV0dXJuIHI/Lm1vZGU9PT0idGltZXN0YW1wInx8cj8ubW9kZT09PSJ0aW1lc3RhbXBfbXMiP25ldyBITShuLHIubW9kZSk6cj8ubW9kZT09PSJib29sZWFuIj9uZXcgR00obixyLm1vZGUpOm5ldyBWTShuKX1jbGFzcyBRTSBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZU51bWVyaWNCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJzdHJpbmciLCJTUUxpdGVOdW1lcmljIil9YnVpbGQodCl7cmV0dXJuIG5ldyBZTSh0LHRoaXMuY29uZmlnKX19Y2xhc3MgWU0gZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVOdW1lcmljIjttYXBGcm9tRHJpdmVyVmFsdWUodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OlN0cmluZyh0KX1nZXRTUUxUeXBlKCl7cmV0dXJuIm51bWVyaWMifX1jbGFzcyBKTSBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZU51bWVyaWNOdW1iZXJCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJudW1iZXIiLCJTUUxpdGVOdW1lcmljTnVtYmVyIil9YnVpbGQodCl7cmV0dXJuIG5ldyBYTSh0LHRoaXMuY29uZmlnKX19Y2xhc3MgWE0gZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVOdW1lcmljTnVtYmVyIjttYXBGcm9tRHJpdmVyVmFsdWUodCl7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyIj90Ok51bWJlcih0KX1tYXBUb0RyaXZlclZhbHVlPVN0cmluZztnZXRTUUxUeXBlKCl7cmV0dXJuIm51bWVyaWMifX1jbGFzcyBaTSBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZU51bWVyaWNCaWdJbnRCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJiaWdpbnQiLCJTUUxpdGVOdW1lcmljQmlnSW50Iil9YnVpbGQodCl7cmV0dXJuIG5ldyBlQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgZUIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVOdW1lcmljQmlnSW50IjttYXBGcm9tRHJpdmVyVmFsdWU9QmlnSW50O21hcFRvRHJpdmVyVmFsdWU9U3RyaW5nO2dldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWZ1bmN0aW9uIHRCKGUsdCl7Y29uc3R7bmFtZTpuLGNvbmZpZzpyfT1XaShlLHQpLG89cj8ubW9kZTtyZXR1cm4gbz09PSJudW1iZXIiP25ldyBKTShuKTpvPT09ImJpZ2ludCI/bmV3IFpNKG4pOm5ldyBRTShuKX1jbGFzcyBuQiBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZVJlYWxCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJudW1iZXIiLCJTUUxpdGVSZWFsIil9YnVpbGQodCl7cmV0dXJuIG5ldyByQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgckIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVSZWFsIjtnZXRTUUxUeXBlKCl7cmV0dXJuInJlYWwifX1mdW5jdGlvbiBvQihlKXtyZXR1cm4gbmV3IG5CKGU/PyIiKX1jbGFzcyBzQiBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZVRleHRCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsInN0cmluZyIsIlNRTGl0ZVRleHQiKSx0aGlzLmNvbmZpZy5lbnVtVmFsdWVzPW4uZW51bSx0aGlzLmNvbmZpZy5sZW5ndGg9bi5sZW5ndGh9YnVpbGQodCl7cmV0dXJuIG5ldyBpQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgaUIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVUZXh0IjtlbnVtVmFsdWVzPXRoaXMuY29uZmlnLmVudW1WYWx1ZXM7bGVuZ3RoPXRoaXMuY29uZmlnLmxlbmd0aDtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsbil9Z2V0U1FMVHlwZSgpe3JldHVybmB0ZXh0JHt0aGlzLmNvbmZpZy5sZW5ndGg/YCgke3RoaXMuY29uZmlnLmxlbmd0aH0pYDoiIn1gfX1jbGFzcyBhQiBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZVRleHRKc29uQnVpbGRlciI7Y29uc3RydWN0b3IodCl7c3VwZXIodCwianNvbiIsIlNRTGl0ZVRleHRKc29uIil9YnVpbGQodCl7cmV0dXJuIG5ldyBsQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgbEIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVUZXh0SnNvbiI7Z2V0U1FMVHlwZSgpe3JldHVybiJ0ZXh0In1tYXBGcm9tRHJpdmVyVmFsdWUodCl7cmV0dXJuIEpTT04ucGFyc2UodCl9bWFwVG9Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9fWZ1bmN0aW9uIGhlKGUsdD17fSl7Y29uc3R7bmFtZTpuLGNvbmZpZzpyfT1XaShlLHQpO3JldHVybiByLm1vZGU9PT0ianNvbiI/bmV3IGFCKG4pOm5ldyBzQihuLHIpfWZ1bmN0aW9uIGNCKCl7cmV0dXJue2Jsb2I6cU0sY3VzdG9tVHlwZTpqTSxpbnRlZ2VyOmF0LG51bWVyaWM6dEIscmVhbDpvQix0ZXh0OmhlfX1jb25zdCBjZj1TeW1ib2wuZm9yKCJkcml6emxlOlNRTGl0ZUlubGluZUZvcmVpZ25LZXlzIik7Y2xhc3MgSGggZXh0ZW5kcyBxdHtzdGF0aWNbVGVdPSJTUUxpdGVUYWJsZSI7c3RhdGljIFN5bWJvbD1PYmplY3QuYXNzaWduKHt9LHF0LlN5bWJvbCx7SW5saW5lRm9yZWlnbktleXM6Y2Z9KTtbcXQuU3ltYm9sLkNvbHVtbnNdO1tjZl09W107W3F0LlN5bWJvbC5FeHRyYUNvbmZpZ0J1aWxkZXJdPXZvaWQgMH1mdW5jdGlvbiB1QihlLHQsbixyLG89ZSl7Y29uc3Qgcz1uZXcgSGgoZSxyLG8pLGk9dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChjQigpKTp0LGE9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGkpLm1hcCgoW3UsY10pPT57Y29uc3QgZj1jO2Yuc2V0TmFtZSh1KTtjb25zdCBkPWYuYnVpbGQocyk7cmV0dXJuIHNbY2ZdLnB1c2goLi4uZi5idWlsZEZvcmVpZ25LZXlzKGQscykpLFt1LGRdfSkpLGw9T2JqZWN0LmFzc2lnbihzLGEpO3JldHVybiBsW3F0LlN5bWJvbC5Db2x1bW5zXT1hLGxbcXQuU3ltYm9sLkV4dHJhQ29uZmlnQ29sdW1uc109YSxuJiYobFtIaC5TeW1ib2wuRXh0cmFDb25maWdCdWlsZGVyXT1uKSxsfWNvbnN0IGVyPShlLHQsbik9PnVCKGUsdCxuKTtjbGFzcyBUd3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMubmFtZT10LHRoaXMudW5pcXVlPW59c3RhdGljW1RlXT0iU1FMaXRlSW5kZXhCdWlsZGVyT24iO29uKC4uLnQpe3JldHVybiBuZXcgZkIodGhpcy5uYW1lLHQsdGhpcy51bmlxdWUpfX1jbGFzcyBmQntzdGF0aWNbVGVdPSJTUUxpdGVJbmRleEJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jb25maWc9e25hbWU6dCxjb2x1bW5zOm4sdW5pcXVlOnIsd2hlcmU6dm9pZCAwfX13aGVyZSh0KXtyZXR1cm4gdGhpcy5jb25maWcud2hlcmU9dCx0aGlzfWJ1aWxkKHQpe3JldHVybiBuZXcgZEIodGhpcy5jb25maWcsdCl9fWNsYXNzIGRCe3N0YXRpY1tUZV09IlNRTGl0ZUluZGV4Ijtjb25maWc7Y29uc3RydWN0b3IodCxuKXt0aGlzLmNvbmZpZz17Li4udCx0YWJsZTpufX19ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIG5ldyBUdyhlLCExKX1mdW5jdGlvbiBKbChlKXtyZXR1cm4gbmV3IFR3KGUsITApfXZhciBDdz0oZT0+KGUuR09PR0xFPSJnb29nbGUiLGUuR0lUSFVCPSJnaXRodWIiLGUpKShDd3x8e30pLEF3PShlPT4oZS5TSUdOX0lOPSJhdXRoOnNpZ25faW4iLGUuU0lHTl9VUD0iYXV0aDpzaWduX3VwIixlLklNUEVSU09OQVRFX1NUQVJUPSJhdXRoOmltcGVyc29uYXRlX3N0YXJ0IixlLklNUEVSU09OQVRFX1NUT1A9ImF1dGg6aW1wZXJzb25hdGVfc3RvcCIsZSkpKEF3fHx7fSk7ZnVuY3Rpb24gT3coZSl7cmV0dXJuIE9iamVjdC52YWx1ZXMoZSl9Y29uc3QgdW89ZXIoInVzZXJzIix7aWQ6aGUoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VybmFtZTpoZSgidXNlcm5hbWUiKSxuYW1lOmhlKCJuYW1lIikscHJpbWFyeV9lbWFpbDpoZSgicHJpbWFyeV9lbWFpbCIpLnVuaXF1ZSgpLm5vdE51bGwoKSxwcmltYXJ5X3Bob25lOmhlKCJwcmltYXJ5X3Bob25lIikudW5pcXVlKCksYXZhdGFyOmhlKCJhdmF0YXIiKSx2ZXJpZmllZDphdCgidmVyaWZpZWQiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITEpLGVtYWlsX25vdGlmaWNhdGlvbnM6YXQoImVtYWlsX25vdGlmaWNhdGlvbnMiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITApLGJpbzpoZSgiYmlvIiksbm90aWZpY2F0aW9uX3ByZWZzOmhlKCJub3RpZmljYXRpb25fcHJlZnMiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdCh7ZW1haWw6ITAscHJvZHVjdF91cGRhdGVzOiEwLHdlZWtseV9kaWdlc3Q6ITEsaW1wb3J0YW50X3VwZGF0ZXM6ITB9KSxjdXN0b21fZGF0YTpoZSgiY3VzdG9tX2RhdGEiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdCh7fSksbGFzdF9zaWduX2luX2F0OmF0KCJsYXN0X3NpZ25faW5fYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksaXNfc3VzcGVuZGVkOmF0KCJpc19zdXNwZW5kZWQiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmF0KCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W0h0KCJ1c2Vyc191c2VybmFtZV9pZHgiKS5vbihlLnVzZXJuYW1lKSxIdCgidXNlcnNfbmFtZV9pZHgiKS5vbihlLm5hbWUpXSk7ZXIoImlkZW50aXRpZXMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6aGUoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT51by5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxwcm92aWRlcjpoZSgicHJvdmlkZXIiLHtlbnVtOk93KEN3KX0pLm5vdE51bGwoKSxwcm92aWRlcl91c2VyX2lkOmhlKCJwcm92aWRlcl91c2VyX2lkIikubm90TnVsbCgpLHByb3ZpZGVyX2RhdGE6aGUoInByb3ZpZGVyX2RhdGEiLHttb2RlOiJqc29uIn0pLiR0eXBlKCksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6YXQoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bSHQoImlkZW50aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpLEpsKCJpZGVudGl0aWVzX3Byb3ZpZGVyX3VuaXF1ZV9pZHgiKS5vbihlLnByb3ZpZGVyLGUucHJvdmlkZXJfdXNlcl9pZCldKTtlcigiYWN0aXZpdGllcyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDpoZSgidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSIsb25VcGRhdGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGFjdGlvbjpoZSgiYWN0aW9uIix7ZW51bTpPdyhBdyl9KS5ub3ROdWxsKCksYWN0aW9uX3JlZl9pZDpoZSgiYWN0aW9uX3JlZl9pZCIpLHRlc3Q6aGUoInRlc3QiLHttb2RlOiJqc29uIn0pLG1ldGFkYXRhOmhlKCJtZXRhZGF0YSIse21vZGU6Impzb24ifSksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bSHQoImFjdGl2aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpXSk7Y29uc3QgWGw9ZXIoIm9yZ2FuaXphdGlvbnMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG5hbWU6aGUoIm5hbWUiKS5ub3ROdWxsKCksc2x1ZzpoZSgic2x1ZyIpLm5vdE51bGwoKS51bmlxdWUoKSxvd25lcl9pZDpoZSgib3duZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT51by5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGlzX3BlcnNvbmFsOmF0KCJpc19wZXJzb25hbCIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGlzX3N5c3RlbTphdCgiaXNfc3lzdGVtIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6YXQoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bSHQoIm9yZ2FuaXphdGlvbnNfaXNfc3lzdGVtX2lkeCIpLm9uKGUuaXNfc3lzdGVtKV0pLHBCPWVyKCJvcmdhbml6YXRpb25fbWVtYmVycyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDpoZSgidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksb3JnYW5pemF0aW9uX2lkOmhlKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5YbC5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGFiaWxpdGllczpoZSgiYWJpbGl0aWVzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxjcmVhdGVkX2F0OmF0KCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDphdCgidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9PltKbCgib3JnX21lbWJlcnNfdXNlcl9vcmdfdW5pcXVlIikub24oZS51c2VyX2lkLGUub3JnYW5pemF0aW9uX2lkKSxIdCgib3JnX21lbWJlcnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKV0pO2VyKCJwZXJtaXNzaW9ucyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksa2V5OmhlKCJrZXkiKS5ub3ROdWxsKCkudW5pcXVlKCksc3ViamVjdDpoZSgic3ViamVjdCIpLm5vdE51bGwoKSxhY3Rpb246aGUoImFjdGlvbiIpLm5vdE51bGwoKSxzY29wZTpoZSgic2NvcGUiKSxvcmdfa2luZDpoZSgib3JnX2tpbmQiLHtlbnVtOlsic3lzdGVtIiwidGVuYW50Il19KS5ub3ROdWxsKCksZGVzY3JpcHRpb246aGUoImRlc2NyaXB0aW9uIiksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bSHQoInBlcm1pc3Npb25zX3N1YmplY3RfaWR4Iikub24oZS5zdWJqZWN0KV0pO2NvbnN0IFB3PWVyKCJyb2xlcyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOmhlKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5YbC5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLG5hbWU6aGUoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246aGUoImRlc2NyaXB0aW9uIikscGVybWlzc2lvbnM6aGUoInBlcm1pc3Npb25zIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxpc19zeXN0ZW06YXQoImlzX3N5c3RlbSIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmF0KCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W0psKCJyb2xlc19vcmdfbmFtZV91bmlxdWUiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCxlLm5hbWUpLEh0KCJyb2xlc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpXSk7ZXIoIm9yZ2FuaXphdGlvbl9tZW1iZXJfcm9sZXMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG1lbWJlcl9pZDpoZSgibWVtYmVyX2lkIikucmVmZXJlbmNlcygoKT0+cEIuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxyb2xlX2lkOmhlKCJyb2xlX2lkIikucmVmZXJlbmNlcygoKT0+UHcuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxjcmVhdGVkX2F0OmF0KCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9PltKbCgibWVtYmVyX3JvbGVzX3VuaXF1ZSIpLm9uKGUubWVtYmVyX2lkLGUucm9sZV9pZCksSHQoIm1lbWJlcl9yb2xlc19tZW1iZXJfaWR4Iikub24oZS5tZW1iZXJfaWQpLEh0KCJtZW1iZXJfcm9sZXNfcm9sZV9pZHgiKS5vbihlLnJvbGVfaWQpXSk7ZXIoIm9yZ2FuaXphdGlvbl9pbnZpdGF0aW9ucyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOmhlKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5YbC5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGVtYWlsOmhlKCJlbWFpbCIpLm5vdE51bGwoKSxyb2xlX2lkOmhlKCJyb2xlX2lkIikucmVmZXJlbmNlcygoKT0+UHcuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSx0b2tlbjpoZSgidG9rZW4iKS5ub3ROdWxsKCkudW5pcXVlKCksaW52aXRlZF9ieTpoZSgiaW52aXRlZF9ieSIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSkscHJvamVjdF9pZHM6aGUoInByb2plY3RfaWRzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoW10pLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxleHBpcmVzX2F0OmF0KCJleHBpcmVzX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKX0sZT0+W0h0KCJvcmdfaW52aXRhdGlvbnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKSxIdCgib3JnX2ludml0YXRpb25zX3Rva2VuX2lkeCIpLm9uKGUudG9rZW4pXSk7Y29uc3QgbUI9WyJmZWVkYmFjayIsInN1cHBvcnQiXSxJdz1bImFjY291bnQiLCJiaWxsaW5nIiwidGVjaG5pY2FsIiwib3RoZXIiXSxoQj1bIm9wZW4iLCJhY3RpdmUiLCJjbG9zZWQiXSxSdz1bInVzZXIiLCJhZ2VudCJdLGdCPWVyKCJzdXBwb3J0X3RpY2tldHMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6aGUoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT51by5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLG9yZ2FuaXphdGlvbl9pZDpoZSgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+WGwuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxraW5kOmhlKCJraW5kIix7ZW51bTptQn0pLm5vdE51bGwoKSxjYXRlZ29yeTpoZSgiY2F0ZWdvcnkiLHtlbnVtOkl3fSksc3ViamVjdDpoZSgic3ViamVjdCIpLm5vdE51bGwoKSxzdGF0dXM6aGUoInN0YXR1cyIse2VudW06aEJ9KS5ub3ROdWxsKCkuZGVmYXVsdCgib3BlbiIpLGFzc2lnbmVkX3RvOmhlKCJhc3NpZ25lZF90byIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksbGFzdF9tZXNzYWdlX2F0OmF0KCJsYXN0X21lc3NhZ2VfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxsYXN0X21lc3NhZ2Vfcm9sZTpoZSgibGFzdF9tZXNzYWdlX3JvbGUiLHtlbnVtOlJ3fSkubm90TnVsbCgpLmRlZmF1bHQoInVzZXIiKSxyZW1pbmRlcl9zZW50X2F0OmF0KCJyZW1pbmRlcl9zZW50X2F0Iix7bW9kZToidGltZXN0YW1wIn0pLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmF0KCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W0h0KCJzdXBwb3J0X3RpY2tldHNfdXNlcl9pZHgiKS5vbihlLnVzZXJfaWQpLEh0KCJzdXBwb3J0X3RpY2tldHNfc3RhdHVzX2lkeCIpLm9uKGUuc3RhdHVzKSxIdCgic3VwcG9ydF90aWNrZXRzX2Fzc2lnbmVkX2lkeCIpLm9uKGUuYXNzaWduZWRfdG8pLEh0KCJzdXBwb3J0X3RpY2tldHNfcmVtaW5kZXJfaWR4Iikub24oZS5sYXN0X21lc3NhZ2Vfcm9sZSxlLmxhc3RfbWVzc2FnZV9hdCldKTtlcigic3VwcG9ydF90aWNrZXRfbWVzc2FnZXMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHRpY2tldF9pZDpoZSgidGlja2V0X2lkIikucmVmZXJlbmNlcygoKT0+Z0IuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhdXRob3JfaWQ6aGUoImF1dGhvcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksYXV0aG9yX3JvbGU6aGUoImF1dGhvcl9yb2xlIix7ZW51bTpSd30pLm5vdE51bGwoKSxib2R5OmhlKCJib2R5Iikubm90TnVsbCgpLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W0h0KCJzdXBwb3J0X3RpY2tldF9tZXNzYWdlc190aWNrZXRfaWR4Iikub24oZS50aWNrZXRfaWQsZS5jcmVhdGVkX2F0KV0pO2NvbnN0IHlCPXtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LHZCPXtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiB3LWZ1bGwifSxiQj1zZSh7X19uYW1lOiJTdXBwb3J0VGlja2V0TW9kYWwiLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBuPWUscj10LG89eXcoKSxzPU4oe2dldDooKT0+bi5vcGVufHxvLnZhbHVlLHNldDp5PT57by52YWx1ZT15LHIoInVwZGF0ZTpvcGVuIix5KX19KSxpPWh3KCksYT1TZCgpLGw9RyghMSksdT1HKCksYz1HKCIiKSxmPUcoIiIpLGQ9SXcubWFwKHk9Pih7bGFiZWw6eS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt5LnNsaWNlKDEpLHZhbHVlOnl9KSkscD1OKCgpPT4hIXUudmFsdWUmJmMudmFsdWUudHJpbSgpLmxlbmd0aD4wJiZmLnZhbHVlLnRyaW0oKS5sZW5ndGg+MCk7YXN5bmMgZnVuY3Rpb24gbSgpe2lmKCEoIXAudmFsdWV8fCF1LnZhbHVlKSl7bC52YWx1ZT0hMDt0cnl7YXdhaXQgaS5jcmVhdGVUaWNrZXQoe2tpbmQ6InN1cHBvcnQiLGNhdGVnb3J5OnUudmFsdWUsc3ViamVjdDpjLnZhbHVlLnRyaW0oKSxib2R5OmYudmFsdWUudHJpbSgpfSksYS5hZGQoe3RpdGxlOiJSZXF1ZXN0IHN1Ym1pdHRlZCIsZGVzY3JpcHRpb246IldlJ2xsIHJlcGx5IGluIHlvdXIgcmVxdWVzdHMuIixjb2xvcjoic3VjY2VzcyJ9KSx1LnZhbHVlPXZvaWQgMCxjLnZhbHVlPSIiLGYudmFsdWU9IiIscy52YWx1ZT0hMSxhd2FpdCBBdigic3VwcG9ydC10aWNrZXRzIil9Y2F0Y2goeSl7YS5hZGQoe3RpdGxlOiJDb3VsZCBub3Qgc3VibWl0IixkZXNjcmlwdGlvbjp3dyh5KSxjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtsLnZhbHVlPSExfX19cmV0dXJuKHksXyk9Pntjb25zdCB3PV9NLHY9ZHcsaD1mdyxiPXB3LHg9TnIsUz1tdztyZXR1cm4gUigpLCQoUyx7b3BlbjpnKHMpLCJvblVwZGF0ZTpvcGVuIjpfWzRdfHwoX1s0XT1rPT4kZShzKT9zLnZhbHVlPWs6bnVsbCksdGl0bGU6IkhlbHAgJiBzdXBwb3J0IixkZXNjcmlwdGlvbjoiVGVsbCB1cyB3aGF0IHlvdSBuZWVkIGhlbHAgd2l0aC4ifSx7Ym9keTpNKCgpPT5bd3QoImRpdiIseUIsW3JlKHYse2xhYmVsOiJDYXRlZ29yeSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZSh3LHttb2RlbFZhbHVlOmcodSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOl9bMF18fChfWzBdPWs9PiRlKHUpP3UudmFsdWU9azpudWxsKSxpdGVtczpnKGQpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIscGxhY2Vob2xkZXI6IkNob29zZSBhIGNhdGVnb3J5IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSkscmUodix7bGFiZWw6IlN1YmplY3QiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUoaCx7bW9kZWxWYWx1ZTpnKGMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpfWzFdfHwoX1sxXT1rPT4kZShjKT9jLnZhbHVlPWs6bnVsbCkscGxhY2Vob2xkZXI6IkEgc2hvcnQgc3VtbWFyeSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxyZSh2LHtsYWJlbDoiTWVzc2FnZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShiLHttb2RlbFZhbHVlOmcoZiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOl9bMl18fChfWzJdPWs9PiRlKGYpP2YudmFsdWU9azpudWxsKSxyb3dzOjUscGxhY2Vob2xkZXI6IkRlc2NyaWJlIHRoZSBpc3N1ZeKApiIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KV0pXSksZm9vdGVyOk0oKCk9Plt3dCgiZGl2Iix2QixbcmUoeCx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOl9bM118fChfWzNdPWs9PnMudmFsdWU9ITEpfSkscmUoeCx7bGFiZWw6IlN1Ym1pdCByZXF1ZXN0Iixsb2FkaW5nOmcobCksZGlzYWJsZWQ6IWcocCksb25DbGljazptfSxudWxsLDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKV0pLF86MX0sOCxbIm9wZW4iXSl9fX0pLHdCPU9iamVjdC5hc3NpZ24oYkIse19fbmFtZToiU3VwcG9ydFRpY2tldE1vZGFsIn0pLF9CPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InN1cHBvcnQtcmVxdWVzdHMiLGxhYmVsOiJNeSBSZXF1ZXN0cyIsaWNvbjoiaS1sdWNpZGUtaW5ib3giLHRvOiIvc3VwcG9ydCIsc2VjdGlvbjoibWFpbiIscHJpb3JpdHk6MzB9LHtpZDoic3VwcG9ydC1mZWVkYmFjayIsbGFiZWw6IkZlZWRiYWNrIixpY29uOiJpLWx1Y2lkZS1tZXNzYWdlLWNpcmNsZSIsc2VjdGlvbjoic3ViIixwcmlvcml0eToxMCxvblNlbGVjdDooKT0+e2d3KCkudmFsdWU9ITB9fSx7aWQ6InN1cHBvcnQtdGlja2V0IixsYWJlbDoiSGVscCAmIFN1cHBvcnQiLGljb246ImktbHVjaWRlLWluZm8iLHNlY3Rpb246InN1YiIscHJpb3JpdHk6MjAsb25TZWxlY3Q6KCk9Pnt5dygpLnZhbHVlPSEwfX1dLG92ZXJsYXlzOlt7aWQ6InN1cHBvcnQtZmVlZGJhY2stbW9kYWwiLGNvbXBvbmVudDpiTX0se2lkOiJzdXBwb3J0LXRpY2tldC1tb2RhbCIsY29tcG9uZW50OndCfV19KX0pLHhCPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InN5c3RlbS1hZG1pbiIsbGFiZWw6IlN5c3RlbSBBZG1pbmlzdHJhdGlvbiIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkLWNoZWNrIixzZWN0aW9uOiJzdWIiLHByaW9yaXR5OjAsdHlwZToidHJpZ2dlciIsZGVmYXVsdE9wZW46ITAsYWJpbGl0eToic3lzdGVtOm1hbmFnZSIsY2hpbGRyZW46W3tpZDoic3lzdGVtLW5vdGlmaWNhdGlvbnMiLGxhYmVsOiJOb3RpZmljYXRpb25zIix0bzoiL3N5c3RlbS9ub3RpZmljYXRpb25zIixzZWN0aW9uOiJzdWIiLHByaW9yaXR5OjB9LHtpZDoic3lzdGVtLXRpY2tldHMiLGxhYmVsOiJUaWNrZXRzIix0bzoiL3N5c3RlbS90aWNrZXRzIixzZWN0aW9uOiJzdWIiLHByaW9yaXR5OjEwLGFiaWxpdHk6InN1cHBvcnQ6bWFuYWdlIn1dfV19KX0pLFNCPVt6ayxWayxLayxFQyxUQyxDQyxBQyxPQyxQQyxOQywkQyxNQyxCQyxaQyxyQSxyTyxvTyxaTyxlUCxnJCxLJCxRJCxZJCxKJCxYJCxfQix4Ql0sa0I9c2Uoe25hbWU6Ik51eHRMb2FkaW5nSW5kaWNhdG9yIixwcm9wczp7dGhyb3R0bGU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MjAwfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsZGVmYXVsdDoyZTN9LGhpZGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDo1MDB9LHJlc2V0RGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NDAwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6M30sY29sb3I6e3R5cGU6W1N0cmluZyxCb29sZWFuXSxkZWZhdWx0OiJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCMwMGRjODIgMCUsIzM0Y2RmZSA1MCUsIzAwNDdlMSAxMDAlKSJ9LGVycm9yQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsI2Y4NzE3MSAwJSwjZWY0NDQ0IDEwMCUpIn0sZXN0aW1hdGVkUHJvZ3Jlc3M6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czp0LGV4cG9zZTpufSl7Y29uc3R7cHJvZ3Jlc3M6cixpc0xvYWRpbmc6byxlcnJvcjpzLHN0YXJ0OmksZmluaXNoOmEsY2xlYXI6bH09QWEoe2R1cmF0aW9uOmUuZHVyYXRpb24sdGhyb3R0bGU6ZS50aHJvdHRsZSxoaWRlRGVsYXk6ZS5oaWRlRGVsYXkscmVzZXREZWxheTplLnJlc2V0RGVsYXksZXN0aW1hdGVkUHJvZ3Jlc3M6ZS5lc3RpbWF0ZWRQcm9ncmVzc30pO3JldHVybiBuKHtwcm9ncmVzczpyLGlzTG9hZGluZzpvLGVycm9yOnMsc3RhcnQ6aSxmaW5pc2g6YSxjbGVhcjpsfSksKCk9PkZlKCJkaXYiLHtjbGFzczoibnV4dC1sb2FkaW5nLWluZGljYXRvciIsc3R5bGU6e3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjAscmlnaHQ6MCxsZWZ0OjAscG9pbnRlckV2ZW50czoibm9uZSIsd2lkdGg6ImF1dG8iLGhlaWdodDpgJHtlLmhlaWdodH1weGAsb3BhY2l0eTpvLnZhbHVlPzE6MCxiYWNrZ3JvdW5kOnMudmFsdWU/ZS5lcnJvckNvbG9yOmUuY29sb3J8fHZvaWQgMCxiYWNrZ3JvdW5kU2l6ZTpgJHtyLnZhbHVlPjA/MTAwL3IudmFsdWUqMTAwOjB9JSBhdXRvYCx0cmFuc2Zvcm06YHNjYWxlWCgke3IudmFsdWV9JSlgLHRyYW5zZm9ybU9yaWdpbjoibGVmdCIsdHJhbnNpdGlvbjoidHJhbnNmb3JtIDAuMXMsIGhlaWdodCAwLjRzLCBvcGFjaXR5IDAuNHMiLHpJbmRleDo5OTk5OTl9fSx0KX19KSxFQj1zZSh7bmFtZToiTnV4dFJvdXRlQW5ub3VuY2VyIixwcm9wczp7YXRvbWljOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scG9saXRlbmVzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDoicG9saXRlIn19LHNldHVwKGUse3Nsb3RzOnQsZXhwb3NlOm59KXtjb25zdHtzZXQ6cixwb2xpdGU6byxhc3NlcnRpdmU6cyxtZXNzYWdlOmkscG9saXRlbmVzczphfT1pQyh7cG9saXRlbmVzczplLnBvbGl0ZW5lc3N9KSxsPU4oKCk9PntpZihhLnZhbHVlPT09ImFzc2VydGl2ZSIpcmV0dXJuImFsZXJ0IjtpZihhLnZhbHVlIT09Im9mZiIpcmV0dXJuInN0YXR1cyJ9KTtyZXR1cm4gbih7c2V0OnIscG9saXRlOm8sYXNzZXJ0aXZlOnMsbWVzc2FnZTppLHBvbGl0ZW5lc3M6YX0pLCgpPT5GZSgic3BhbiIse2NsYXNzOiJudXh0LXJvdXRlLWFubm91bmNlciIsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9fSxGZSgic3BhbiIse3JvbGU6bC52YWx1ZSwiYXJpYS1saXZlIjphLnZhbHVlLCJhcmlhLWF0b21pYyI6ZS5hdG9taWMsc3R5bGU6e2JvcmRlcjoiMCIsY2xpcDoicmVjdCgwIDAgMCAwKSIsImNsaXAtcGF0aCI6Imluc2V0KDUwJSkiLGhlaWdodDoiMXB4Iix3aWR0aDoiMXB4IixvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoiYWJzb2x1dGUiLCJ3aGl0ZS1zcGFjZSI6Im5vd3JhcCIsIndvcmQtd3JhcCI6Im5vcm1hbCIsbWFyZ2luOiItMXB4IixwYWRkaW5nOiIwIn19LHQuZGVmYXVsdD90LmRlZmF1bHQoe21lc3NhZ2U6aS52YWx1ZX0pOmkudmFsdWUpKX19KSxOdz0oZT0iUm91dGVQcm92aWRlciIpPT5zZSh7bmFtZTplLHByb3BzOntyb3V0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LHZub2RlOk9iamVjdCx2bm9kZVJlZjpPYmplY3QscmVuZGVyS2V5OlN0cmluZyx0cmFja1Jvb3ROb2RlczpCb29sZWFufSxzZXR1cCh0KXtjb25zdCBuPXQucmVuZGVyS2V5LHI9dC5yb3V0ZSxvPXt9O2Zvcihjb25zdCBzIGluIHQucm91dGUpT2JqZWN0LmRlZmluZVByb3BlcnR5KG8scyx7Z2V0OigpPT5uPT09dC5yZW5kZXJLZXk/dC5yb3V0ZVtzXTpyW3NdLGVudW1lcmFibGU6ITB9KTtyZXR1cm4gTnQocW8sUG4obykpLCgpPT50LnZub2RlP0ZlKHQudm5vZGUse3JlZjp0LnZub2RlUmVmfSk6dC52bm9kZX19KSxUQj1OdygpLFdoPW5ldyBXZWFrTWFwLENCPXNlKHtuYW1lOiJOdXh0UGFnZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZ30sdHJhbnNpdGlvbjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxrZWVwYWxpdmU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxkZWZhdWx0OnZvaWQgMH0scm91dGU6e3R5cGU6T2JqZWN0fSxwYWdlS2V5Ont0eXBlOltGdW5jdGlvbixTdHJpbmddLGRlZmF1bHQ6bnVsbH19LHNldHVwKGUse2F0dHJzOnQsc2xvdHM6bixleHBvc2U6cn0pe2NvbnN0IG89QmUoKSxzPUcoKSxpPUtlKHFvLG51bGwpO2xldCBhO3Ioe3BhZ2VSZWY6c30pO2NvbnN0IGw9S2UoanksbnVsbCk7bGV0IHU7Y29uc3QgYz1vLmRlZmVySHlkcmF0aW9uKCk7bGV0IGY9ITEsZD0wO2lmKG8uaXNIeWRyYXRpbmcpe2NvbnN0IG09by5ob29rcy5ob29rT25jZSgiYXBwOmVycm9yIixjKTtKdCgpLmJlZm9yZUVhY2gobSl9ZS5wYWdlS2V5JiZQZSgoKT0+ZS5wYWdlS2V5LChtLHkpPT57bSE9PXkmJm8uY2FsbEhvb2soInBhZ2U6bG9hZGluZzpzdGFydCIpfSk7bGV0IHA9ITE7e2NvbnN0IG09SnQoKS5iZWZvcmVSZXNvbHZlKCgpPT57cD0hMX0pO0hvKCgpPT57bSgpLGMoKX0pfXJldHVybigpPT5GZSh2dix7bmFtZTplLm5hbWUscm91dGU6ZS5yb3V0ZSwuLi50fSx7ZGVmYXVsdDptPT57Y29uc3QgeT1BQihpLG0ucm91dGUsbS5Db21wb25lbnQpLF89aSYmaS5tYXRjaGVkLmxlbmd0aD09PW0ucm91dGUubWF0Y2hlZC5sZW5ndGg7aWYoIW0uQ29tcG9uZW50KXtpZih1JiYhXylyZXR1cm4gdTtjKCk7cmV0dXJufWlmKHUmJmwmJiFsLmlzQ3VycmVudChtLnJvdXRlKSlyZXR1cm4gdTtpZih5JiZpJiYoIWx8fGw/LmlzQ3VycmVudChpKSkpcmV0dXJuIF98fHU/dTpudWxsO2NvbnN0IHc9VHUobSxlLnBhZ2VLZXkpLHY9T0IoaSxtLnJvdXRlLG0uQ29tcG9uZW50KTshby5pc0h5ZHJhdGluZyYmYT09PXcmJiF2JiZpdCgoKT0+e3B8fChwPSEwLG8uY2FsbEhvb2soInBhZ2U6bG9hZGluZzplbmQiKSl9KSxmJiZhIT09dyYmZCsrLGE9dztjb25zdCBoPSEhKGUudHJhbnNpdGlvbj8/bS5yb3V0ZS5tZXRhLnBhZ2VUcmFuc2l0aW9uPz9PcCksYj1oJiZ4dihbZS50cmFuc2l0aW9uLG0ucm91dGUubWV0YS5wYWdlVHJhbnNpdGlvbixPcCx7b25BZnRlckxlYXZlKCl7b1sifnRyYW5zaXRpb25GaW5pc2giXT8uKCksZGVsZXRlIG9bIn50cmFuc2l0aW9uRmluaXNoIl0sZGVsZXRlIG9bIn50cmFuc2l0aW9uUHJvbWlzZSJdLG8uY2FsbEhvb2soInBhZ2U6dHJhbnNpdGlvbjpmaW5pc2giLG0uQ29tcG9uZW50KX19XSkseD1lLmtlZXBhbGl2ZT8/bS5yb3V0ZS5tZXRhLmtlZXBhbGl2ZT8/QTE7cmV0dXJuIHU9d3YoaCYmYixhVCh4LEZlKENmLHtrZXk6ZCxzdXNwZW5zaWJsZTohMCxvblBlbmRpbmc6KCk9PntmPSEwLGgmJiFvWyJ+dHJhbnNpdGlvblByb21pc2UiXSYmKG9bIn50cmFuc2l0aW9uUHJvbWlzZSJdPW5ldyBQcm9taXNlKFM9PntvWyJ+dHJhbnNpdGlvbkZpbmlzaCJdPVN9KSksby5jYWxsSG9vaygicGFnZTpzdGFydCIsbS5Db21wb25lbnQpfSxvblJlc29sdmU6YXN5bmMoKT0+e2Y9ITE7dHJ5e2F3YWl0IGl0KCksby5fcm91dGUuc3luYz8uKCksYXdhaXQgby5jYWxsSG9vaygicGFnZTpmaW5pc2giLG0uQ29tcG9uZW50KSwhcCYmIXYmJihwPSEwLGF3YWl0IG8uY2FsbEhvb2soInBhZ2U6bG9hZGluZzplbmQiKSl9ZmluYWxseXtjKCl9fX0se2RlZmF1bHQ6KCk9Pntjb25zdCBTPXtrZXk6d3x8dm9pZCAwLHZub2RlOm4uZGVmYXVsdD9QQihuLmRlZmF1bHQsbSk6bS5Db21wb25lbnQscm91dGU6bS5yb3V0ZSxyZW5kZXJLZXk6d3x8dm9pZCAwLHRyYWNrUm9vdE5vZGVzOmgsdm5vZGVSZWY6c307aWYoIXgpcmV0dXJuIEZlKFRCLFMpO2NvbnN0IGs9bS5Db21wb25lbnQudHlwZSxUPWs7bGV0IEM9V2guZ2V0KFQpO3JldHVybiBDfHwoQz1OdyhrLm5hbWV8fGsuX19uYW1lKSxXaC5zZXQoVCxDKSksRmUoQyxTKX19KSkpLmRlZmF1bHQoKSx1fX0pfX0pO2Z1bmN0aW9uIEFCKGUsdCxuKXtpZighZSlyZXR1cm4hMTtjb25zdCByPXQubWF0Y2hlZC5maW5kSW5kZXgobz0+by5jb21wb25lbnRzPy5kZWZhdWx0PT09bj8udHlwZSk7cmV0dXJuIXJ8fHI9PT0tMT8hMTp0Lm1hdGNoZWQuc2xpY2UoMCxyKS5zb21lKChvLHMpPT5vLmNvbXBvbmVudHM/LmRlZmF1bHQhPT1lLm1hdGNoZWRbc10/LmNvbXBvbmVudHM/LmRlZmF1bHQpfHxuJiZUdSh7cm91dGU6dCxDb21wb25lbnQ6bn0pIT09VHUoe3JvdXRlOmUsQ29tcG9uZW50Om59KX1mdW5jdGlvbiBPQihlLHQsbil7cmV0dXJuIGU/dC5tYXRjaGVkLmZpbmRJbmRleChvPT5vLmNvbXBvbmVudHM/LmRlZmF1bHQ9PT1uPy50eXBlKTx0Lm1hdGNoZWQubGVuZ3RoLTE6ITF9ZnVuY3Rpb24gUEIoZSx0KXtjb25zdCBuPWUodCk7cmV0dXJuIG4ubGVuZ3RoPT09MT9GZShuWzBdKTpGZShHZSx2b2lkIDAsbil9Y29uc3QgRHc9dHYsSUI9c2Uoe25hbWU6IkxheW91dExvYWRlciIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntuYW1lOlN0cmluZyxsYXlvdXRQcm9wczpPYmplY3R9LHNldHVwKGUsdCl7cmV0dXJuKCk9PkZlKG9vW2UubmFtZV0sZS5sYXlvdXRQcm9wcyx0LnNsb3RzKX19KSxSQj17bmFtZTp7dHlwZTpbU3RyaW5nLEJvb2xlYW4sT2JqZWN0XSxkZWZhdWx0Om51bGx9LGZhbGxiYWNrOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0Om51bGx9fSxOQj1zZSh7bmFtZToiTnV4dExheW91dCIsaW5oZXJpdEF0dHJzOiExLHByb3BzOlJCLHNldHVwKGUsdCl7Y29uc3Qgbj1CZSgpLHI9S2UocW8pLHM9IXJ8fHI9PT1BbCgpP2F2KCk6cixpPU4oKCk9PntsZXQgYz1nKGUubmFtZSk/P3M/Lm1ldGEubGF5b3V0Pz9EdyhzPy5wYXRoKS5hcHBMYXlvdXQ/PyJkZWZhdWx0IjtyZXR1cm4gYyYmIShjIGluIG9vKSYmZS5mYWxsYmFjayYmKGM9ZyhlLmZhbGxiYWNrKSksY30pLGE9T2UoKTt0LmV4cG9zZSh7bGF5b3V0UmVmOmF9KTtjb25zdCBsPW4uZGVmZXJIeWRyYXRpb24oKTtpZihuLmlzSHlkcmF0aW5nKXtjb25zdCBjPW4uaG9va3MuaG9va09uY2UoImFwcDplcnJvciIsbCk7SnQoKS5iZWZvcmVFYWNoKGMpfWxldCB1O3JldHVybigpPT57Y29uc3QgZj0hIWkudmFsdWUmJmkudmFsdWUgaW4gb28mJiEhKHM/Lm1ldGEubGF5b3V0VHJhbnNpdGlvbj8/QXApLGQ9ZiYmeHYoW3M/Lm1ldGEubGF5b3V0VHJhbnNpdGlvbixBcCx7b25CZWZvcmVMZWF2ZSgpe25bIn50cmFuc2l0aW9uUHJvbWlzZSJdPW5ldyBQcm9taXNlKG09PntuWyJ+dHJhbnNpdGlvbkZpbmlzaCJdPW19KX0sb25BZnRlckxlYXZlKCl7blsifnRyYW5zaXRpb25GaW5pc2giXT8uKCksZGVsZXRlIG5bIn50cmFuc2l0aW9uRmluaXNoIl0sZGVsZXRlIG5bIn50cmFuc2l0aW9uUHJvbWlzZSJdfX1dKSxwPXU7cmV0dXJuIHU9aS52YWx1ZSx3dihkLHtkZWZhdWx0OigpPT5GZShDZix7c3VzcGVuc2libGU6ITAsb25SZXNvbHZlOmFzeW5jKCk9Pnthd2FpdCBpdChsKX19LHtkZWZhdWx0OigpPT5GZShEQix7bGF5b3V0UHJvcHM6ZmUodC5hdHRycyxzLm1ldGEubGF5b3V0UHJvcHM/P3t9LHtyZWY6YX0pLGtleTppLnZhbHVlfHx2b2lkIDAsbmFtZTppLnZhbHVlLHNob3VsZFByb3ZpZGU6IWUubmFtZSxpc1JlbmRlcmluZ05ld0xheW91dDptPT5tIT09cCYmbT09PWkudmFsdWUsaGFzVHJhbnNpdGlvbjpmfSx0LnNsb3RzKX0pfSkuZGVmYXVsdCgpfX19KSxEQj1zZSh7bmFtZToiTnV4dExheW91dFByb3ZpZGVyIixpbmhlcml0QXR0cnM6ITEscHJvcHM6e25hbWU6e3R5cGU6W1N0cmluZyxCb29sZWFuXX0sbGF5b3V0UHJvcHM6e3R5cGU6T2JqZWN0fSxoYXNUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW59LHNob3VsZFByb3ZpZGU6e3R5cGU6Qm9vbGVhbn0saXNSZW5kZXJpbmdOZXdMYXlvdXQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITB9fSxzZXR1cChlLHQpe2NvbnN0IG49ZS5uYW1lO2Uuc2hvdWxkUHJvdmlkZSYmTnQoankse2lzQ3VycmVudDpzPT5uPT09ITF8fG49PT0ocy5tZXRhLmxheW91dD8/RHcocy5wYXRoKS5hcHBMYXlvdXQ/PyJkZWZhdWx0Iil9KTtjb25zdCByPUtlKHFvKTtpZihyJiZyPT09QWwoKSl7Y29uc3Qgcz1hdigpLGk9e307Zm9yKGNvbnN0IGEgaW4gcyl7Y29uc3QgbD1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGwse2VudW1lcmFibGU6ITAsZ2V0OigpPT5lLmlzUmVuZGVyaW5nTmV3TGF5b3V0KGUubmFtZSk/c1tsXTpyW2xdfSl9TnQocW8sUG4oaSkpfXJldHVybigpPT4hbnx8dHlwZW9mIG49PSJzdHJpbmciJiYhKG4gaW4gb28pP3Quc2xvdHMuZGVmYXVsdD8uKCk6RmUoSUIse2tleTpuLGxheW91dFByb3BzOmUubGF5b3V0UHJvcHMsbmFtZTpufSx0LnNsb3RzKX19KSxMQj17c2xvdHM6e3Jvb3Q6ImdhcC0yIixiYXNlOiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLWFjY2VudGVkIixpbmRpY2F0b3I6InJvdW5kZWQtZnVsbCBzaXplLWZ1bGwgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwIGVhc2Utb3V0IixzdGF0dXM6ImZsZXggdGV4dC1kaW1tZWQgdHJhbnNpdGlvbi1bd2lkdGhdIGR1cmF0aW9uLTIwMCIsc3RlcHM6ImdyaWQgaXRlbXMtZW5kIixzdGVwOiJ0cnVuY2F0ZSB0ZXh0LWVuZCByb3ctc3RhcnQtMSBjb2wtc3RhcnQtMSB0cmFuc2l0aW9uLW9wYWNpdHkifSx2YXJpYW50czp7YW5pbWF0aW9uOntjYXJvdXNlbDoiIiwiY2Fyb3VzZWwtaW52ZXJzZSI6IiIsc3dpbmc6IiIsZWxhc3RpYzoiIn0sY29sb3I6e3ByaW1hcnk6e2luZGljYXRvcjoiYmctcHJpbWFyeSIsc3RlcHM6InRleHQtcHJpbWFyeSJ9LHNlY29uZGFyeTp7aW5kaWNhdG9yOiJiZy1zZWNvbmRhcnkiLHN0ZXBzOiJ0ZXh0LXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2luZGljYXRvcjoiYmctc3VjY2VzcyIsc3RlcHM6InRleHQtc3VjY2VzcyJ9LGluZm86e2luZGljYXRvcjoiYmctaW5mbyIsc3RlcHM6InRleHQtaW5mbyJ9LHdhcm5pbmc6e2luZGljYXRvcjoiYmctd2FybmluZyIsc3RlcHM6InRleHQtd2FybmluZyJ9LGVycm9yOntpbmRpY2F0b3I6ImJnLWVycm9yIixzdGVwczoidGV4dC1lcnJvciJ9LG5ldXRyYWw6e2luZGljYXRvcjoiYmctaW52ZXJ0ZWQiLHN0ZXBzOiJ0ZXh0LWludmVydGVkIn19LHNpemU6eyIyeHMiOntzdGF0dXM6InRleHQteHMiLHN0ZXBzOiJ0ZXh0LXhzIn0seHM6e3N0YXR1czoidGV4dC14cyIsc3RlcHM6InRleHQteHMifSxzbTp7c3RhdHVzOiJ0ZXh0LXNtIixzdGVwczoidGV4dC1zbSJ9LG1kOntzdGF0dXM6InRleHQtc20iLHN0ZXBzOiJ0ZXh0LXNtIn0sbGc6e3N0YXR1czoidGV4dC1zbSIsc3RlcHM6InRleHQtc20ifSx4bDp7c3RhdHVzOiJ0ZXh0LWJhc2UiLHN0ZXBzOiJ0ZXh0LWJhc2UifSwiMnhsIjp7c3RhdHVzOiJ0ZXh0LWJhc2UiLHN0ZXBzOiJ0ZXh0LWJhc2UifX0sc3RlcDp7YWN0aXZlOntzdGVwOiJvcGFjaXR5LTEwMCJ9LGZpcnN0OntzdGVwOiJvcGFjaXR5LTEwMCB0ZXh0LW11dGVkIn0sb3RoZXI6e3N0ZXA6Im9wYWNpdHktMCJ9LGxhc3Q6e3N0ZXA6IiJ9fSxvcmllbnRhdGlvbjp7aG9yaXpvbnRhbDp7cm9vdDoidy1mdWxsIGZsZXggZmxleC1jb2wiLGJhc2U6InctZnVsbCIsc3RhdHVzOiJmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgbWluLXctZml0In0sdmVydGljYWw6e3Jvb3Q6ImgtZnVsbCBmbGV4IGZsZXgtcm93LXJldmVyc2UiLGJhc2U6ImgtZnVsbCIsc3RhdHVzOiJmbGV4LWNvbCBqdXN0aWZ5LWVuZCBtaW4taC1maXQifX0saW52ZXJ0ZWQ6e3RydWU6e3N0YXR1czoic2VsZi1lbmQifX19LGNvbXBvdW5kVmFyaWFudHM6W3tpbnZlcnRlZDohMCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e3N0ZXA6InRleHQtc3RhcnQiLHN0YXR1czoiZmxleC1yb3ctcmV2ZXJzZSJ9fSx7aW52ZXJ0ZWQ6ITAsb3JpZW50YXRpb246InZlcnRpY2FsIixjbGFzczp7c3RlcHM6Iml0ZW1zLXN0YXJ0IixzdGF0dXM6ImZsZXgtY29sLXJldmVyc2UifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiIyeHMiLGNsYXNzOiJoLXB4In0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJ4cyIsY2xhc3M6ImgtMC41In0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJzbSIsY2xhc3M6ImgtMSJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToibWQiLGNsYXNzOiJoLTIifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6ImxnIixjbGFzczoiaC0zIn0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJ4bCIsY2xhc3M6ImgtNCJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToiMnhsIixjbGFzczoiaC01In0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToiMnhzIixjbGFzczoidy1weCJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6InhzIixjbGFzczoidy0wLjUifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJzbSIsY2xhc3M6InctMSJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6Im1kIixjbGFzczoidy0yIn0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToibGciLGNsYXNzOiJ3LTMifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4bCIsY2xhc3M6InctNCJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6IjJ4bCIsY2xhc3M6InctNSJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsYW5pbWF0aW9uOiJjYXJvdXNlbCIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bY2Fyb3VzZWxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIGRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOnJ0bDphbmltYXRlLVtjYXJvdXNlbC1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGFuaW1hdGlvbjoiY2Fyb3VzZWwiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoiY2Fyb3VzZWwtaW52ZXJzZSIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bY2Fyb3VzZWwtaW52ZXJzZV8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0gZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06cnRsOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2UtcnRsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixhbmltYXRpb246ImNhcm91c2VsLWludmVyc2UiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2UtdmVydGljYWxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsYW5pbWF0aW9uOiJzd2luZyIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bc3dpbmdfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGFuaW1hdGlvbjoic3dpbmciLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW3N3aW5nLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoiZWxhc3RpYyIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsYW5pbWF0aW9uOiJlbGFzdGljIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtlbGFzdGljLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fV0sZGVmYXVsdFZhcmlhbnRzOnthbmltYXRpb246ImNhcm91c2VsIixjb2xvcjoicHJpbWFyeSIsc2l6ZToibWQifX0sJEI9e19fbmFtZToiVVByb2dyZXNzIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbWF4Ont0eXBlOltOdW1iZXIsQXJyYXldLHJlcXVpcmVkOiExfSxzdGF0dXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saW52ZXJ0ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGFuaW1hdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGdldFZhbHVlTGFiZWw6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LGdldFZhbHVlVGV4dDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpbTnVtYmVyLG51bGxdLHJlcXVpcmVkOiExLGRlZmF1bHQ6bnVsbH19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiLCJ1cGRhdGU6bWF4Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCxvPXpyKCkse2RpcjpzfT1RbCgpLGk9U3QoKSxhPUxuKCJwcm9ncmVzcyIsbiksbD0kcyhWcihuLCJnZXRWYWx1ZUxhYmVsIiwiZ2V0VmFsdWVUZXh0IiwibW9kZWxWYWx1ZSIpLHIpLHU9TigoKT0+bC52YWx1ZS5tb2RlbFZhbHVlPT09bnVsbCksYz1OKCgpPT5BcnJheS5pc0FycmF5KG4ubWF4KSksZj1OKCgpPT57aWYoISh1LnZhbHVlfHwhbi5tYXgpKXJldHVybiBBcnJheS5pc0FycmF5KG4ubWF4KT9uLm1heC5sZW5ndGgtMTpOdW1iZXIobi5tYXgpfSksZD1OKCgpPT57aWYoIXUudmFsdWUpc3dpdGNoKCEwKXtjYXNlIGwudmFsdWUubW9kZWxWYWx1ZTwwOnJldHVybiAwO2Nhc2UgbC52YWx1ZS5tb2RlbFZhbHVlPihmLnZhbHVlPz8xMDApOnJldHVybiAxMDA7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZChsLnZhbHVlLm1vZGVsVmFsdWUvKGYudmFsdWU/PzEwMCkqMTAwKX19KSxwPU4oKCk9PntpZihkLnZhbHVlIT09dm9pZCAwKXJldHVybiBuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIj97dHJhbnNmb3JtOmB0cmFuc2xhdGVZKCR7bi5pbnZlcnRlZD8iIjoiLSJ9JHsxMDAtZC52YWx1ZX0lKWB9OnMudmFsdWU9PT0icnRsIj97dHJhbnNmb3JtOmB0cmFuc2xhdGVYKCR7bi5pbnZlcnRlZD8iLSI6IiJ9JHsxMDAtZC52YWx1ZX0lKWB9Ont0cmFuc2Zvcm06YHRyYW5zbGF0ZVgoJHtuLmludmVydGVkPyIiOiItIn0kezEwMC1kLnZhbHVlfSUpYH19KSxtPU4oKCk9Pntjb25zdCBiPWAke01hdGgubWF4KGQudmFsdWU/PzAsMCl9JWA7cmV0dXJuIG4ub3JpZW50YXRpb249PT0idmVydGljYWwiP3toZWlnaHQ6Yn06e3dpZHRoOmJ9fSk7ZnVuY3Rpb24geShiKXtyZXR1cm4gYj09PU51bWJlcihuLm1vZGVsVmFsdWUpfWZ1bmN0aW9uIF8oYil7cmV0dXJuIGI9PT0wfWZ1bmN0aW9uIHcoYil7cmV0dXJuIGI9PT1mLnZhbHVlfWZ1bmN0aW9uIHYoYil7cmV0dXJuIGI9TnVtYmVyKGIpLHkoYikmJiFfKGIpPyJhY3RpdmUiOl8oYikmJnkoYik/ImZpcnN0Ijp3KGIpJiZ5KGIpPyJsYXN0Ijoib3RoZXIifWNvbnN0IGg9TigoKT0+dXQoe2V4dGVuZDp1dChMQiksLi4uaS51aT8ucHJvZ3Jlc3N8fHt9fSkoe2FuaW1hdGlvbjpuLmFuaW1hdGlvbixzaXplOm4uc2l6ZSxjb2xvcjpuLmNvbG9yLG9yaWVudGF0aW9uOm4ub3JpZW50YXRpb24saW52ZXJ0ZWQ6bi5pbnZlcnRlZH0pKTtyZXR1cm4oYix4KT0+KFIoKSwkKGcoTWUpLHthczplLmFzLCJkYXRhLW9yaWVudGF0aW9uIjplLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczp1ZShoLnZhbHVlLnJvb3Qoe2NsYXNzOltnKGEpPy5yb290LG4uY2xhc3NdfSkpfSx7ZGVmYXVsdDpNKCgpPT5bIXUudmFsdWUmJihlLnN0YXR1c3x8by5zdGF0dXMpPyhSKCksX2UoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJzdGF0dXMiLGNsYXNzOnVlKGgudmFsdWUuc3RhdHVzKHtjbGFzczpnKGEpPy5zdGF0dXN9KSksc3R5bGU6Um4obS52YWx1ZSl9LFtVKGIuJHNsb3RzLCJzdGF0dXMiLHtwZXJjZW50OmQudmFsdWV9LCgpPT5bc3QocnQoZC52YWx1ZSkrIiUgIiwxKV0pXSw2KSk6ZGUoIiIsITApLHJlKGcoTTIpLGZlKGcobCkse21heDpmLnZhbHVlLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpoLnZhbHVlLmJhc2Uoe2NsYXNzOmcoYSk/LmJhc2V9KSxzdHlsZTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVaKDApIn19KSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhxMikseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOnVlKGgudmFsdWUuaW5kaWNhdG9yKHtjbGFzczpnKGEpPy5pbmRpY2F0b3J9KSksc3R5bGU6Um4ocC52YWx1ZSl9LG51bGwsOCxbImNsYXNzIiwic3R5bGUiXSldKSxfOjF9LDE2LFsibWF4IiwiY2xhc3MiXSksYy52YWx1ZT8oUigpLF9lKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90Ijoic3RlcHMiLGNsYXNzOnVlKGgudmFsdWUuc3RlcHMoe2NsYXNzOmcoYSk/LnN0ZXBzfSkpfSxbKFIoITApLF9lKEdlLG51bGwsdXIoZS5tYXgsKFMsayk9PihSKCksX2UoImRpdiIse2tleTprLCJkYXRhLXNsb3QiOiJzdGVwIixjbGFzczp1ZShoLnZhbHVlLnN0ZXAoe2NsYXNzOmcoYSk/LnN0ZXAsc3RlcDp2KGspfSkpfSxbVShiLiRzbG90cyxgc3RlcC0ke2t9YCx7c3RlcDpTfSwoKT0+W3N0KHJ0KFMpLDEpXSldLDIpKSksMTI4KSldLDIpKTpkZSgiIiwhMCldKSxfOjN9LDgsWyJhcyIsImRhdGEtb3JpZW50YXRpb24iLCJjbGFzcyJdKSl9fSxNQj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGdyb3VwIG92ZXJmbG93LWhpZGRlbiBiZy1kZWZhdWx0IHNoYWRvdy1sZyByb3VuZGVkLWxnIHJpbmcgcmluZy1kZWZhdWx0IHAtNCBmbGV4IGdhcC0yLjUgZm9jdXM6b3V0bGluZS1ub25lIix3cmFwcGVyOiJ3LTAgZmxleC0xIGZsZXggZmxleC1jb2wiLHRpdGxlOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQiLGRlc2NyaXB0aW9uOiJ0ZXh0LXNtIHRleHQtbXV0ZWQiLGljb246InNocmluay0wIHNpemUtNSIsYXZhdGFyOiJzaHJpbmstMCIsYXZhdGFyU2l6ZToiMnhsIixhY3Rpb25zOiJmbGV4IGdhcC0xLjUgc2hyaW5rLTAiLHByb2dyZXNzOiJhYnNvbHV0ZSBpbnNldC14LTAgYm90dG9tLTAiLGNsb3NlOiJwLTAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSIsaWNvbjoidGV4dC1wcmltYXJ5In0sc2Vjb25kYXJ5Ontyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSIsaWNvbjoidGV4dC1zZWNvbmRhcnkifSxzdWNjZXNzOntyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MiLGljb246InRleHQtc3VjY2VzcyJ9LGluZm86e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW5mbyIsaWNvbjoidGV4dC1pbmZvIn0sd2FybmluZzp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy13YXJuaW5nIixpY29uOiJ0ZXh0LXdhcm5pbmcifSxlcnJvcjp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1lcnJvciIsaWNvbjoidGV4dC1lcnJvciJ9LG5ldXRyYWw6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQiLGljb246InRleHQtaGlnaGxpZ2h0ZWQifX0sb3JpZW50YXRpb246e2hvcml6b250YWw6e3Jvb3Q6Iml0ZW1zLWNlbnRlciIsYWN0aW9uczoiaXRlbXMtY2VudGVyIn0sdmVydGljYWw6e3Jvb3Q6Iml0ZW1zLXN0YXJ0IixhY3Rpb25zOiJpdGVtcy1zdGFydCBtdC0yLjUifX0sdGl0bGU6e3RydWU6e2Rlc2NyaXB0aW9uOiJtdC0xIn19fSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5In19LEJCPXtfX25hbWU6IlVUb2FzdCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOltTdHJpbmcsT2JqZWN0LEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6W1N0cmluZyxPYmplY3QsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmVydGljYWwifSxjbG9zZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsb3NlSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3Rpb25zOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxwcm9ncmVzczp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicGF1c2UiLCJyZXN1bWUiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwic3dpcGVDYW5jZWwiLCJzd2lwZUVuZCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZXhwb3NlOnQsZW1pdDpufSl7Y29uc3Qgcj1lLG89bixzPXpyKCkse3Q6aX09UWwoKSxhPVN0KCksbD1MbigidG9hc3QiLHIpLHU9JHMoVnIociwiYXMiLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJkdXJhdGlvbiIsInR5cGUiKSxvKSxjPU4oKCk9PnV0KHtleHRlbmQ6dXQoTUIpLC4uLmEudWk/LnRvYXN0fHx7fX0pKHtjb2xvcjpyLmNvbG9yLG9yaWVudGF0aW9uOnIub3JpZW50YXRpb24sdGl0bGU6ISFyLnRpdGxlfHwhIXMudGl0bGV9KSksZj1Tcygicm9vdFJlZiIpLGQ9RygwKTtyZXR1cm4gb3QoKCk9PntmLnZhbHVlPy4kZWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKGQudmFsdWU9Zi52YWx1ZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KX0pLHQoe2hlaWdodDpkfSksKHAsbSk9PihSKCksJChnKGVEKSxmZSh7cmVmX2tleToicm9vdFJlZiIscmVmOmZ9LGcodSkseyJkYXRhLW9yaWVudGF0aW9uIjplLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpjLnZhbHVlLnJvb3Qoe2NsYXNzOltnKGwpPy5yb290LHIuY2xhc3NdfSksc3R5bGU6eyItLWhlaWdodCI6ZC52YWx1ZX19KSx7ZGVmYXVsdDpNKCh7cmVtYWluaW5nOnksZHVyYXRpb246XyxvcGVuOnd9KT0+W1UocC4kc2xvdHMsImxlYWRpbmciLHt1aTpjLnZhbHVlfSwoKT0+W2UuYXZhdGFyPyhSKCksJChVbyxmZSh7a2V5OjAsc2l6ZTpnKGwpPy5hdmF0YXJTaXplfHxjLnZhbHVlLmF2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJhdmF0YXIiLGNsYXNzOmMudmFsdWUuYXZhdGFyKHtjbGFzczpnKGwpPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuaWNvbj8oUigpLCQoX24se2tleToxLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczp1ZShjLnZhbHVlLmljb24oe2NsYXNzOmcobCk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZGUoIiIsITApXSksd3QoImRpdiIseyJkYXRhLXNsb3QiOiJ3cmFwcGVyIixjbGFzczp1ZShjLnZhbHVlLndyYXBwZXIoe2NsYXNzOmcobCk/LndyYXBwZXJ9KSl9LFtlLnRpdGxlfHxzLnRpdGxlPyhSKCksJChnKG5EKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczp1ZShjLnZhbHVlLnRpdGxlKHtjbGFzczpnKGwpPy50aXRsZX0pKX0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W3R5cGVvZiBlLnRpdGxlPT0iZnVuY3Rpb24iPyhSKCksJChGbihlLnRpdGxlKCkpLHtrZXk6MH0pKTp0eXBlb2YgZS50aXRsZT09Im9iamVjdCI/KFIoKSwkKEZuKGUudGl0bGUpLHtrZXk6MX0pKTooUigpLF9lKEdlLHtrZXk6Mn0sW3N0KHJ0KGUudGl0bGUpLDEpXSw2NCkpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZGUoIiIsITApLGUuZGVzY3JpcHRpb258fHMuZGVzY3JpcHRpb24/KFIoKSwkKGcoWU4pLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnVlKGMudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmcobCk/LmRlc2NyaXB0aW9ufSkpfSx7ZGVmYXVsdDpNKCgpPT5bVShwLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bdHlwZW9mIGUuZGVzY3JpcHRpb249PSJmdW5jdGlvbiI/KFIoKSwkKEZuKGUuZGVzY3JpcHRpb24oKSkse2tleTowfSkpOnR5cGVvZiBlLmRlc2NyaXB0aW9uPT0ib2JqZWN0Ij8oUigpLCQoRm4oZS5kZXNjcmlwdGlvbikse2tleToxfSkpOihSKCksX2UoR2Use2tleToyfSxbc3QocnQoZS5kZXNjcmlwdGlvbiksMSldLDY0KSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpkZSgiIiwhMCksZS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJihlLmFjdGlvbnM/Lmxlbmd0aHx8cy5hY3Rpb25zKT8oUigpLF9lKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6dWUoYy52YWx1ZS5hY3Rpb25zKHtjbGFzczpnKGwpPy5hY3Rpb25zfSkpfSxbVShwLiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsoUighMCksX2UoR2UsbnVsbCx1cihlLmFjdGlvbnMsKHYsaCk9PihSKCksJChnKHNoKSx7a2V5OmgsImFsdC10ZXh0Ijp2LmxhYmVsfHwiQWN0aW9uIiwiYXMtY2hpbGQiOiIiLG9uQ2xpY2s6bVswXXx8KG1bMF09UnIoKCk9Pnt9LFsic3RvcCJdKSl9LHtkZWZhdWx0Ok0oKCk9PltyZShOcixmZSh7c2l6ZToieHMiLGNvbG9yOmUuY29sb3J9LHtyZWZfZm9yOiEwfSx2KSxudWxsLDE2LFsiY29sb3IiXSldKSxfOjJ9LDEwMzIsWyJhbHQtdGV4dCJdKSkpLDEyOCkpXSldLDIpKTpkZSgiIiwhMCldLDIpLGUub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJihlLmFjdGlvbnM/Lmxlbmd0aHx8cy5hY3Rpb25zKXx8ZS5jbG9zZT8oUigpLF9lKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6dWUoYy52YWx1ZS5hY3Rpb25zKHtjbGFzczpnKGwpPy5hY3Rpb25zLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIn0pKX0sW2Uub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJihlLmFjdGlvbnM/Lmxlbmd0aHx8cy5hY3Rpb25zKT9VKHAuJHNsb3RzLCJhY3Rpb25zIix7a2V5OjB9LCgpPT5bKFIoITApLF9lKEdlLG51bGwsdXIoZS5hY3Rpb25zLCh2LGgpPT4oUigpLCQoZyhzaCkse2tleTpoLCJhbHQtdGV4dCI6di5sYWJlbHx8IkFjdGlvbiIsImFzLWNoaWxkIjoiIixvbkNsaWNrOm1bMV18fChtWzFdPVJyKCgpPT57fSxbInN0b3AiXSkpfSx7ZGVmYXVsdDpNKCgpPT5bcmUoTnIsZmUoe3NpemU6InhzIixjb2xvcjplLmNvbG9yfSx7cmVmX2ZvcjohMH0sdiksbnVsbCwxNixbImNvbG9yIl0pXSksXzoyfSwxMDMyLFsiYWx0LXRleHQiXSkpKSwxMjgpKV0pOmRlKCIiLCEwKSxlLmNsb3NlfHxzLmNsb3NlPyhSKCksJChnKEkwKSx7a2V5OjEsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsImNsb3NlIix7dWk6Yy52YWx1ZX0sKCk9PltlLmNsb3NlPyhSKCksJChOcixmZSh7a2V5OjAsaWNvbjplLmNsb3NlSWNvbnx8ZyhhKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsImFyaWEtbGFiZWwiOmcoaSkoInRvYXN0LmNsb3NlIil9LHR5cGVvZiBlLmNsb3NlPT0ib2JqZWN0Ij9lLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOmMudmFsdWUuY2xvc2Uoe2NsYXNzOmcobCk/LmNsb3NlfSksb25DbGljazptWzJdfHwobVsyXT1ScigoKT0+e30sWyJzdG9wIl0pKX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTpkZSgiIiwhMCldKV0pLF86M30pKTpkZSgiIiwhMCldLDIpKTpkZSgiIiwhMCksZS5wcm9ncmVzcyYmdyYmeT4wJiZfPyhSKCksJCgkQixmZSh7a2V5OjEsIm1vZGVsLXZhbHVlIjp5L18qMTAwLGNvbG9yOmUuY29sb3J9LHR5cGVvZiBlLnByb2dyZXNzPT0ib2JqZWN0Ij9lLnByb2dyZXNzOnt9LHtzaXplOiJzbSIsImRhdGEtc2xvdCI6InByb2dyZXNzIixjbGFzczpjLnZhbHVlLnByb2dyZXNzKHtjbGFzczpnKGwpPy5wcm9ncmVzc30pfSksbnVsbCwxNixbIm1vZGVsLXZhbHVlIiwiY29sb3IiLCJjbGFzcyJdKSk6ZGUoIiIsITApXSksXzozfSwxNixbImRhdGEtb3JpZW50YXRpb24iLCJjbGFzcyIsInN0eWxlIl0pKX19LHFCPXtzbG90czp7dmlld3BvcnQ6ImZpeGVkIGZsZXggZmxleC1jb2wgdy1bY2FsYygxMDAlLTJyZW0pXSBzbTp3LTk2IHotWzEwMF0gZGF0YS1bZXhwYW5kZWQ9dHJ1ZV06aC0oLS1oZWlnaHQpIGZvY3VzOm91dGxpbmUtbm9uZSIsYmFzZToicG9pbnRlci1ldmVudHMtYXV0byBhYnNvbHV0ZSBpbnNldC14LTAgei0oLS1pbmRleCkgdHJhbnNmb3JtLSgtLXRyYW5zZm9ybSkgZGF0YS1bZXhwYW5kZWQ9ZmFsc2VdOmRhdGEtW2Zyb250PWZhbHNlXTpoLSgtLWZyb250LWhlaWdodCkgZGF0YS1bZXhwYW5kZWQ9ZmFsc2VdOmRhdGEtW2Zyb250PWZhbHNlXToqOm9wYWNpdHktMCBkYXRhLVtmcm9udD1mYWxzZV06Kjp0cmFuc2l0aW9uLW9wYWNpdHkgZGF0YS1bZnJvbnQ9ZmFsc2VdOio6ZHVyYXRpb24tMTAwIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bdG9hc3QtY2xvc2VkXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmRhdGEtW2V4cGFuZGVkPWZhbHNlXTpkYXRhLVtmcm9udD1mYWxzZV06YW5pbWF0ZS1bdG9hc3QtY29sbGFwc2VkLWNsb3NlZF8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9b3Blbl06ZGF0YS1bcHVsc2luZz1vZGRdOmFuaW1hdGUtW3RvYXN0LXB1bHNlLWFfMzAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPW9wZW5dOmRhdGEtW3B1bHNpbmc9ZXZlbl06YW5pbWF0ZS1bdG9hc3QtcHVsc2UtYl8zMDBtc19lYXNlLW91dF0gZGF0YS1bc3dpcGU9bW92ZV06dHJhbnNpdGlvbi1ub25lIHRyYW5zaXRpb24tW3RyYW5zZm9ybSx0cmFuc2xhdGUsaGVpZ2h0XSBkdXJhdGlvbi0yMDAgZWFzZS1vdXQifSx2YXJpYW50czp7cG9zaXRpb246eyJ0b3AtbGVmdCI6e3ZpZXdwb3J0OiJsZWZ0LTQifSwidG9wLWNlbnRlciI6e3ZpZXdwb3J0OiJsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiJ9LCJ0b3AtcmlnaHQiOnt2aWV3cG9ydDoicmlnaHQtNCJ9LCJib3R0b20tbGVmdCI6e3ZpZXdwb3J0OiJsZWZ0LTQifSwiYm90dG9tLWNlbnRlciI6e3ZpZXdwb3J0OiJsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiJ9LCJib3R0b20tcmlnaHQiOnt2aWV3cG9ydDoicmlnaHQtNCJ9fSxzd2lwZURpcmVjdGlvbjp7dXA6ImRhdGEtW3N3aXBlPWVuZF06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtdXBfMjAwbXNfZWFzZS1vdXRdIixyaWdodDoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS1yaWdodF8yMDBtc19lYXNlLW91dF0iLGRvd246ImRhdGEtW3N3aXBlPWVuZF06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtZG93bl8yMDBtc19lYXNlLW91dF0iLGxlZnQ6ImRhdGEtW3N3aXBlPWVuZF06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtbGVmdF8yMDBtc19lYXNlLW91dF0ifX0sY29tcG91bmRWYXJpYW50czpbe3Bvc2l0aW9uOlsidG9wLWxlZnQiLCJ0b3AtY2VudGVyIiwidG9wLXJpZ2h0Il0sY2xhc3M6e3ZpZXdwb3J0OiJ0b3AtNCIsYmFzZToidG9wLTAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtaW4tZnJvbS10b3BfMjAwbXNfZWFzZS1pbi1vdXRdIn19LHtwb3NpdGlvbjpbImJvdHRvbS1sZWZ0IiwiYm90dG9tLWNlbnRlciIsImJvdHRvbS1yaWdodCJdLGNsYXNzOnt2aWV3cG9ydDoiYm90dG9tLTQiLGJhc2U6ImJvdHRvbS0wIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3RvYXN0LXNsaWRlLWluLWZyb20tYm90dG9tXzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7c3dpcGVEaXJlY3Rpb246WyJsZWZ0IiwicmlnaHQiXSxjbGFzczoiZGF0YS1bc3dpcGU9bW92ZV06dHJhbnNsYXRlLXgtKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgpIGRhdGEtW3N3aXBlPWVuZF06dHJhbnNsYXRlLXgtKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteCkgZGF0YS1bc3dpcGU9Y2FuY2VsXTp0cmFuc2xhdGUteC0wIn0se3N3aXBlRGlyZWN0aW9uOlsidXAiLCJkb3duIl0sY2xhc3M6ImRhdGEtW3N3aXBlPW1vdmVdOnRyYW5zbGF0ZS15LSgtLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15KSBkYXRhLVtzd2lwZT1lbmRdOnRyYW5zbGF0ZS15LSgtLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXkpIGRhdGEtW3N3aXBlPWNhbmNlbF06dHJhbnNsYXRlLXktMCJ9XSxkZWZhdWx0VmFyaWFudHM6e3Bvc2l0aW9uOiJib3R0b20tcmlnaHQifX0sRkI9e25hbWU6IlRvYXN0ZXIifSx6Qj1PYmplY3QuYXNzaWduKEZCLHtwcm9wczp7cG9zaXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXhwYW5kOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0scHJvZ3Jlc3M6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sbWF4Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1ZTN9LGRpc2FibGVTd2lwZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzd2lwZVRocmVzaG9sZDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUse3RvYXN0czpuLHJlbW92ZTpyfT1TZCgpLG89U3QoKSxzPUxuKCJ0b2FzdGVyIix0KTtOdCh2dyx5dCgoKT0+dC5tYXgpKTtjb25zdCBpPXBvKFZyKHQsImR1cmF0aW9uIiwibGFiZWwiLCJzd2lwZVRocmVzaG9sZCIsImRpc2FibGVTd2lwZSIpKSxhPVlsKHl0KCgpPT50LnBvcnRhbCkpLGw9TigoKT0+e3N3aXRjaCh0LnBvc2l0aW9uKXtjYXNlInRvcC1jZW50ZXIiOnJldHVybiJ1cCI7Y2FzZSJ0b3AtcmlnaHQiOmNhc2UiYm90dG9tLXJpZ2h0IjpyZXR1cm4icmlnaHQiO2Nhc2UiYm90dG9tLWNlbnRlciI6cmV0dXJuImRvd24iO2Nhc2UidG9wLWxlZnQiOmNhc2UiYm90dG9tLWxlZnQiOnJldHVybiJsZWZ0In1yZXR1cm4icmlnaHQifSksdT1OKCgpPT51dCh7ZXh0ZW5kOnV0KHFCKSwuLi5vLnVpPy50b2FzdGVyfHx7fX0pKHtwb3NpdGlvbjp0LnBvc2l0aW9uLHN3aXBlRGlyZWN0aW9uOmwudmFsdWV9KSk7ZnVuY3Rpb24gYyh3LHYpe3d8fHIodil9Y29uc3QgZj1HKCExKSxkPU4oKCk9PnQuZXhwYW5kfHxmLnZhbHVlKSxwPUcoW10pLG09TigoKT0+cC52YWx1ZS5yZWR1Y2UoKHcse2hlaWdodDp2fSk9PncrdisxNiwwKSkseT1OKCgpPT5wLnZhbHVlW3AudmFsdWUubGVuZ3RoLTFdPy5oZWlnaHR8fDApO2Z1bmN0aW9uIF8odyl7cmV0dXJuIHAudmFsdWUuc2xpY2UodysxKS5yZWR1Y2UoKHYse2hlaWdodDpofSk9PnYraCsxNiwwKX1yZXR1cm4odyx2KT0+KFIoKSwkKGcoTE4pLGZlKHsic3dpcGUtZGlyZWN0aW9uIjpsLnZhbHVlfSxnKGkpKSx7ZGVmYXVsdDpNKCgpPT5bVSh3LiRzbG90cywiZGVmYXVsdCIpLChSKCEwKSxfZShHZSxudWxsLHVyKGcobiksKGgsYik9PihSKCksJChCQixmZSh7a2V5OmguaWQscmVmX2ZvcjohMCxyZWZfa2V5OiJyZWZzIixyZWY6cCxwcm9ncmVzczplLnByb2dyZXNzfSx7cmVmX2ZvcjohMH0sZyhOMCkoaCxbImlkIiwiY2xvc2UiLCJfZHVwbGljYXRlIiwiX3VwZGF0ZWQiXSkse2Nsb3NlOmguY2xvc2UsImRhdGEtZXhwYW5kZWQiOmQudmFsdWUsImRhdGEtZnJvbnQiOiFkLnZhbHVlJiZiPT09ZyhuKS5sZW5ndGgtMSwiZGF0YS1wdWxzaW5nIjpoLl9kdXBsaWNhdGU/aC5fZHVwbGljYXRlJTI9PT0wPyJldmVuIjoib2RkIjp2b2lkIDAsc3R5bGU6eyItLWluZGV4IjpiLWcobikubGVuZ3RoK2cobikubGVuZ3RoLCItLWJlZm9yZSI6ZyhuKS5sZW5ndGgtMS1iLCItLW9mZnNldCI6XyhiKSwiLS1zY2FsZSI6ZC52YWx1ZT8iMSI6ImNhbGMoMSAtIHZhcigtLWJlZm9yZSkgKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIsIi0tdHJhbnNsYXRlIjpkLnZhbHVlPyJjYWxjKHZhcigtLW9mZnNldCkgKiB2YXIoLS10cmFuc2xhdGUtZmFjdG9yKSkiOiJjYWxjKHZhcigtLWJlZm9yZSkgKiB2YXIoLS1nYXApKSIsIi0tdHJhbnNmb3JtIjoidHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKSBzY2FsZSh2YXIoLS1zY2FsZSkpIn0sImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOnUudmFsdWUuYmFzZSh7Y2xhc3M6W2cocyk/LmJhc2UsaC5vbkNsaWNrPyJjdXJzb3ItcG9pbnRlciI6dm9pZCAwXX0pLCJvblVwZGF0ZTpvcGVuIjp4PT5jKHgsaC5pZCksb25DbGljazp4PT5oLm9uQ2xpY2smJmgub25DbGljayhoKX0pLG51bGwsMTYsWyJwcm9ncmVzcyIsImNsb3NlIiwiZGF0YS1leHBhbmRlZCIsImRhdGEtZnJvbnQiLCJkYXRhLXB1bHNpbmciLCJzdHlsZSIsImNsYXNzIiwib25VcGRhdGU6b3BlbiIsIm9uQ2xpY2siXSkpKSwxMjgpKSxyZShnKFhOKSx4dChNdChnKGEpKSkse2RlZmF1bHQ6TSgoKT0+W3JlKGcoc0QpLHsiZGF0YS1leHBhbmRlZCI6ZC52YWx1ZSwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnVlKHUudmFsdWUudmlld3BvcnQoe2NsYXNzOltnKHMpPy52aWV3cG9ydCx0LmNsYXNzXX0pKSxzdHlsZTpSbih7Ii0tc2NhbGUtZmFjdG9yIjoiMC4wNSIsIi0tdHJhbnNsYXRlLWZhY3RvciI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjFweCI6Ii0xcHgiLCItLWdhcCI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjE2cHgiOiItMTZweCIsIi0tZnJvbnQtaGVpZ2h0IjpgJHt5LnZhbHVlfXB4YCwiLS1oZWlnaHQiOmAke20udmFsdWV9cHhgfSksb25Nb3VzZWVudGVyOnZbMF18fCh2WzBdPWg9PmYudmFsdWU9ITApLG9uTW91c2VsZWF2ZTp2WzFdfHwodlsxXT1oPT5mLnZhbHVlPSExKX0sbnVsbCw4LFsiZGF0YS1leHBhbmRlZCIsImNsYXNzIiwic3R5bGUiXSldKSxfOjF9LDE2KV0pLF86M30sMTYsWyJzd2lwZS1kaXJlY3Rpb24iXSkpfX0pLGpCPU9iamVjdC5hc3NpZ24oekIse19fbmFtZToiVVRvYXN0ZXIifSk7ZnVuY3Rpb24gVkIoKXtjb25zdCBlPVBuKFtdKSx0PSh1LGMpPT57Y29uc3R7cHJvcHM6ZixkZWZhdWx0T3BlbjpkLGRlc3Ryb3lPbkNsb3NlOnB9PWN8fHt9LG09YnQoe2lkOlN5bWJvbCgiIiksaXNPcGVuOiEhZCxjb21wb25lbnQ6TG8odSksaXNNb3VudGVkOiEhZCxkZXN0cm95T25DbG9zZTohIXAsb3JpZ2luYWxQcm9wczpmfHx7fSxwcm9wczp7Li4uZn19KTtyZXR1cm4gZS5wdXNoKG0pLHsuLi5tLG9wZW46eT0+bihtLmlkLHkpLGNsb3NlOnk9PnIobS5pZCx5KSxwYXRjaDp5PT5pKG0uaWQseSl9fSxuPSh1LGMpPT57Y29uc3QgZj1hKHUpO2M/Zi5wcm9wcz17Li4uZi5vcmlnaW5hbFByb3BzLC4uLmN9OmYucHJvcHM9ey4uLmYub3JpZ2luYWxQcm9wc30sZi5pc09wZW49ITAsZi5pc01vdW50ZWQ9ITA7Y29uc3QgZD1uZXcgUHJvbWlzZShwPT5mLnJlc29sdmVQcm9taXNlPXApO3JldHVybiBPYmplY3QuYXNzaWduKGQse2lkOnUsaXNNb3VudGVkOmYuaXNNb3VudGVkLGlzT3BlbjpmLmlzT3BlbixyZXN1bHQ6ZH0pfSxyPSh1LGMpPT57Y29uc3QgZj1hKHUpO2YuaXNPcGVuPSExLGYucmVzb2x2ZVByb21pc2UmJihmLnJlc29sdmVQcm9taXNlKGMpLGYucmVzb2x2ZVByb21pc2U9dm9pZCAwKX0sbz0oKT0+e2UuZm9yRWFjaCh1PT5yKHUuaWQpKX0scz11PT57Y29uc3QgYz1hKHUpO2lmKGMuaXNNb3VudGVkPSExLGMuZGVzdHJveU9uQ2xvc2Upe2NvbnN0IGY9ZS5maW5kSW5kZXgoZD0+ZC5pZD09PXUpO2Uuc3BsaWNlKGYsMSl9fSxpPSh1LGMpPT57Y29uc3QgZj1hKHUpO2YucHJvcHM9ey4uLmYucHJvcHMsLi4uY319LGE9dT0+e2NvbnN0IGM9ZS5maW5kKGY9PmYuaWQ9PT11KTtpZighYyl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXkgbm90IGZvdW5kIik7cmV0dXJuIGN9O3JldHVybntvdmVybGF5czplLG9wZW46bixjbG9zZTpyLGNsb3NlQWxsOm8sY3JlYXRlOnQscGF0Y2g6aSx1bm1vdW50OnMsaXNPcGVuOnU9PmEodSkuaXNPcGVufX1jb25zdCBVQj1lZChWQiksSEI9e19fbmFtZToiVU92ZXJsYXlQcm92aWRlciIsc2V0dXAoZSl7Y29uc3R7b3ZlcmxheXM6dCx1bm1vdW50Om4sY2xvc2U6cn09VUIoKSxvPU4oKCk9PnQuZmlsdGVyKGE9PmEuaXNNb3VudGVkKSkscz1hPT57cihhKSxuKGEpfSxpPShhLGwpPT57cihhLGwpfTtyZXR1cm4oYSxsKT0+KFIoITApLF9lKEdlLG51bGwsdXIoby52YWx1ZSx1PT4oUigpLCQoRm4odS5jb21wb25lbnQpLGZlKHtrZXk6dS5pZH0se3JlZl9mb3I6ITB9LHUucHJvcHMse29wZW46dS5pc09wZW4sIm9uVXBkYXRlOm9wZW4iOmM9PnUuaXNPcGVuPWMsb25DbG9zZTpjPT5pKHUuaWQsYyksIm9uQWZ0ZXI6bGVhdmUiOmM9PnModS5pZCl9KSxudWxsLDE2LFsib3BlbiIsIm9uVXBkYXRlOm9wZW4iLCJvbkNsb3NlIiwib25BZnRlcjpsZWF2ZSJdKSkpLDEyOCkpfX0sV0I9e25hbWU6IkFwcCJ9LEdCPU9iamVjdC5hc3NpZ24oV0Ise3Byb3BzOnt0b29sdGlwOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sdG9hc3Rlcjp7dHlwZTpbT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxsb2NhbGU6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDoiYm9keSJ9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNjcm9sbEJvZHk6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49cG8oVnIodCwic2Nyb2xsQm9keSIpKSxyPXl0KCgpPT50LnRvb2x0aXApLG89eXQoKCk9PnQudG9hc3Rlcikscz15dCgoKT0+dC5sb2NhbGUpO3JldHVybiBOdChvdyxzKSxOdChzdyx5dCgoKT0+dC5wb3J0YWwpKSwoYSxsKT0+KFIoKSwkKGcobUkpLGZlKHsidXNlLWlkIjooKT0+YmYoKSxkaXI6dC5kaXJ8fHMudmFsdWU/LmRpcixsb2NhbGU6cy52YWx1ZT8uY29kZX0sZyhuKSkse2RlZmF1bHQ6TSgoKT0+W3JlKGcobEQpLHh0KE10KHIudmFsdWUpKSx7ZGVmYXVsdDpNKCgpPT5bZS50b2FzdGVyIT09bnVsbD8oUigpLCQoakIseHQoZmUoe2tleTowfSxvLnZhbHVlKSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTpVKGEuJHNsb3RzLCJkZWZhdWx0Iix7a2V5OjF9KSxyZShIQildKSxfOjN9LDE2KV0pLF86M30sMTYsWyJ1c2UtaWQiLCJkaXIiLCJsb2NhbGUiXSkpfX0pLEtCPU9iamVjdC5hc3NpZ24oR0Ise19fbmFtZToiVUFwcCJ9KSxRQj0oZSx0KT0+e2NvbnN0IG49ZS5fX3ZjY09wdHN8fGU7Zm9yKGNvbnN0W3Isb11vZiB0KW5bcl09bztyZXR1cm4gbn0sWUI9R1QoRUIpLEpCPXt9O2Z1bmN0aW9uIFhCKGUsdCl7Y29uc3Qgbj1rQixyPVlCLG89Q0Iscz1OQixpPUtCO3JldHVybiBSKCksJChpLG51bGwse2RlZmF1bHQ6TSgoKT0+W3JlKG4pLHJlKHIpLHJlKHMsbnVsbCx7ZGVmYXVsdDpNKCgpPT5bcmUobyldKSxfOjF9KV0pLF86MX0pfWNvbnN0IFpCPVFCKEpCLFtbInJlbmRlciIsWEJdXSksZXE9e19fbmFtZToibnV4dC1lcnJvci1wYWdlIixwcm9wczp7ZXJyb3I6T2JqZWN0fSxzZXR1cChlKXtjb25zdCBuPWUuZXJyb3Iscj1OdW1iZXIobi5zdGF0dXNDb2RlfHw1MDApLG89cj09PTQwNCxzPW4uc3RhdHVzTWVzc2FnZT8/KG8/IlBhZ2UgTm90IEZvdW5kIjoiSW50ZXJuYWwgU2VydmVyIEVycm9yIiksaT1uLm1lc3NhZ2V8fG4udG9TdHJpbmcoKSxhPXZvaWQgMCxjPW8/dmkoKCk9PlhlKCgpPT5pbXBvcnQoIi4vRFBmWmtsMmUuanMiKSxfX3ZpdGVfX21hcERlcHMoWzYyLDYzXSksaW1wb3J0Lm1ldGEudXJsKSk6dmkoKCk9PlhlKCgpPT5pbXBvcnQoIi4vWlpzZlA5S1ouanMiKSxfX3ZpdGVfX21hcERlcHMoWzY0LDY1XSksaW1wb3J0Lm1ldGEudXJsKSk7cmV0dXJuKGYsZCk9PihSKCksJChnKGMpLHh0KE10KHtzdGF0dXM6ZyhyKSxzdGF0dXNUZXh0Omcocyksc3RhdHVzQ29kZTpnKHIpLHN0YXR1c01lc3NhZ2U6ZyhzKSxkZXNjcmlwdGlvbjpnKGkpLHN0YWNrOmcoYSl9KSksbnVsbCwxNikpfX0sdHE9e2tleTowfSxHaD17X19uYW1lOiJudXh0LXJvb3QiLHNldHVwKGUpe2NvbnN0IHQ9KCk9Pm51bGwsbj1CZSgpLHI9bi5kZWZlckh5ZHJhdGlvbigpO2lmKG4uaXNIeWRyYXRpbmcpe2NvbnN0IHU9bi5ob29rcy5ob29rT25jZSgiYXBwOmVycm9yIixyKTtKdCgpLmJlZm9yZUVhY2godSl9Y29uc3Qgbz0hMTtOdChxbyxBbCgpKSxuLmhvb2tzLmNhbGxIb29rV2l0aCh1PT51Lm1hcChjPT5jKCkpLCJ2dWU6c2V0dXAiKTtjb25zdCBzPU9sKCksaT0hMSxhPS9ib3RcYnxjaHJvbWUtbGlnaHRob3VzZXxmYWNlYm9va2V4dGVybmFsaGl0fGdvb2dsZVxiL2k7RmcoKHUsYyxmKT0+e2lmKG4uaG9va3MuY2FsbEhvb2soInZ1ZTplcnJvciIsdSxjLGYpPy5jYXRjaChkPT57fSksYS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKXJldHVybiBuLmhvb2tzLmNhbGxIb29rKCJhcHA6ZXJyb3IiLHUpLCExO2lmKEh5KHUpJiYodS5mYXRhbHx8dS51bmhhbmRsZWQpKXJldHVybiBuLnJ1bldpdGhDb250ZXh0KCgpPT5Dbyh1KSksITF9KTtjb25zdCBsPSExO3JldHVybih1LGMpPT4oUigpLCQoQ2Yse29uUmVzb2x2ZTpnKHIpfSx7ZGVmYXVsdDpNKCgpPT5bZyhpKT8oUigpLF9lKCJkaXYiLHRxKSk6ZyhzKT8oUigpLCQoZyhlcSkse2tleToxLGVycm9yOmcocyl9LG51bGwsOCxbImVycm9yIl0pKTpnKGwpPyhSKCksJChnKHQpLHtrZXk6Mixjb250ZXh0OmcobCl9LG51bGwsOCxbImNvbnRleHQiXSkpOmcobyk/KFIoKSwkKEZuKGcobykpLHtrZXk6M30pKTooUigpLCQoZyhaQikse2tleTo0fSkpXSksXzoxfSw4LFsib25SZXNvbHZlIl0pKX19O2xldCBLaDt7bGV0IGU7S2g9YXN5bmMgZnVuY3Rpb24oKXtpZihlKXJldHVybiBlO2NvbnN0IG49ISEod2luZG93Ll9fTlVYVF9fPy5zZXJ2ZXJSZW5kZXJlZD8/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9fTlVYVF9EQVRBX18iKT8uZGF0YXNldC5zc3I9PT0idHJ1ZSIpLHI9bj9FUyhHaCk6a1MoR2gpLG89TDEoe3Z1ZUFwcDpyfSk7YXN5bmMgZnVuY3Rpb24gcyhpKXthd2FpdCBvLmNhbGxIb29rKCJhcHA6ZXJyb3IiLGkpLG8ucGF5bG9hZC5lcnJvcnx8PXNvKGkpfXIuY29uZmlnLmVycm9ySGFuZGxlcj1zLG8uaG9vaygiYXBwOnN1c3BlbnNlOnJlc29sdmUiLCgpPT57ci5jb25maWcuZXJyb3JIYW5kbGVyPT09cyYmKHIuY29uZmlnLmVycm9ySGFuZGxlcj12b2lkIDApfSksIW4mJlBwLmlkJiZvLmhvb2soImFwcDpzdXNwZW5zZTpyZXNvbHZlIiwoKT0+e2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFBwLmlkKT8ucmVtb3ZlKCl9KTt0cnl7YXdhaXQgQjEobyxTQil9Y2F0Y2goaSl7cyhpKX10cnl7YXdhaXQgby5ob29rcy5jYWxsSG9vaygiYXBwOmNyZWF0ZWQiLHIpLGF3YWl0IG8uaG9va3MuY2FsbEhvb2soImFwcDpiZWZvcmVNb3VudCIsciksci5tb3VudChSMSksYXdhaXQgby5ob29rcy5jYWxsSG9vaygiYXBwOm1vdW50ZWQiLHIpLGF3YWl0IGl0KCl9Y2F0Y2goaSl7cyhpKX1yZXR1cm4gcn0sZT1LaCgpLmNhdGNoKHQ9Pnt0aHJvdyB0fSl9ZXhwb3J0e0ZlIGFzICQsbnEgYXMgQSxnQyBhcyBCLEpkIGFzIEMsZHcgYXMgRCxfTSBhcyBFLEdlIGFzIEYsJGUgYXMgRyxmdyBhcyBILFVvIGFzIEksU3QgYXMgSixMbiBhcyBLLFUgYXMgTCx1ZSBhcyBNLHV0IGFzIE4sQ0IgYXMgTyxNZSBhcyBQLGNxIGFzIFEsUGUgYXMgUixidCBhcyBTLEtlIGFzIFQsbXggYXMgVSxtdyBhcyBWLGl4IGFzIFcsVHEgYXMgWCxTcSBhcyBZLGlxIGFzIFosUUIgYXMgXyx3dCBhcyBhLGYyIGFzIGEkLEJpIGFzIGEwLE50IGFzIGExLENzIGFzIGEyLG1vIGFzIGEzLG90IGFzIGE0LHByIGFzIGE1LGl0IGFzIGE2LGduIGFzIGE3LFVlIGFzIGE4LGFvIGFzIGE5LGdxIGFzIGFBLFFQIGFzIGFCLFNzIGFzIGFDLHBvIGFzIGFELFJuIGFzIGFFLHl0IGFzIGFGLG1uIGFzIGFHLEZvIGFzIGFILFJfIGFzIGFJLHNxIGFzIGFKLGdMIGFzIGFLLHpxIGFzIGFMLCRyIGFzIGFNLEVxIGFzIGFOLGJMIGFzIGFPLHlMIGFzIGFQLHZMIGFzIGFRLGhMIGFzIGFSLHJxIGFzIGFTLGh3IGFzIGFULEF2IGFzIGFVLGpyIGFzIGFWLGxxIGFzIGFXLHpQIGFzIGFYLEhvIGFzIGFZLG5oIGFzIGFaLGQyIGFzIGFfLGZlIGFzIGFhLFJyIGFzIGFiLEZuIGFzIGFjLEFpIGFzIGFkLElsIGFzIGFlLGJJIGFzIGFmLHpsIGFzIGFnLHpyIGFzIGFoLCRzIGFzIGFpLFZyIGFzIGFqLHhkIGFzIGFrLGJmIGFzIGFsLHdNIGFzIGFtLG94IGFzIGFuLEkyIGFzIGFvLFRpIGFzIGFwLGJxIGFzIGFxLHB3IGFzIGFyLExlIGFzIGFzLHdxIGFzIGF0LEVuIGFzIGF1LHh0IGFzIGF2LE10IGFzIGF3LFFsIGFzIGF4LE9lIGFzIGF5LG9uIGFzIGF6LHJlIGFzIGIsX3EgYXMgYiQsaDIgYXMgYjAscDIgYXMgYjEsJHEgYXMgYjIsbTIgYXMgYjMsTXEgYXMgYjQseTIgYXMgYjUsZkQgYXMgYjYscXEgYXMgYjcsTjAgYXMgYjgsbXQgYXMgYjksRFAgYXMgYkEsQ3EgYXMgYkIsR0wgYXMgYkMsZmggYXMgYkQsQmUgYXMgYkUsUnMgYXMgYkYsRnEgYXMgYkcscXUgYXMgYkgsYzAgYXMgYkkscjAgYXMgYkosZjAgYXMgYkssdTAgYXMgYkwsVmcgYXMgYk0sVmkgYXMgYk4sdnMgYXMgYk8seXMgYXMgYlAsaXcgYXMgYlEsbyQgYXMgYlIsRWUgYXMgYlMseXEgYXMgYlQsdnEgYXMgYlUsX0wgYXMgYlYsZWYgYXMgYlcsaW8gYXMgYlgsdGQgYXMgYlksVXQgYXMgYloseHEgYXMgYl8sTG8gYXMgYmEsd2wgYXMgYmIseUkgYXMgYmMsbVIgYXMgYmQsQm0gYXMgYmUsaHEgYXMgYmYsZ1IgYXMgYmcsWGIgYXMgYmgsdkkgYXMgYmksdDAgYXMgYmoscm4gYXMgYmssYTAgYXMgYmwsaTAgYXMgYm0sRTIgYXMgYm4sQTIgYXMgYm8sbGQgYXMgYnAsWWwgYXMgYnEsd2QgYXMgYnIsS2wgYXMgYnMsd24gYXMgYnQsR2wgYXMgYnUsX2QgYXMgYnYsdWggYXMgYncsdUQgYXMgYngsamUgYXMgYnkseWQgYXMgYnosX2UgYXMgYyxqUCBhcyBjMCxobiBhcyBjMSx2ZiBhcyBjMixKYiBhcyBjMyxBdCBhcyBjNCxxciBhcyBjNSxrcSBhcyBjNixuMCBhcyBjNyxMXyBhcyBjOCxvcSBhcyBjOSxKZiBhcyBjYSxBcSBhcyBjYixDSSBhcyBjYyxwbiBhcyBjZCxfXyBhcyBjZSxCcSBhcyBjZixuZCBhcyBjZyxHbiBhcyBjaCxlZCBhcyBjaSxLSSBhcyBjaixzeCBhcyBjayxfMiBhcyBjbCxEcSBhcyBjbSxQcSBhcyBjbixHSSBhcyBjbyxWbSBhcyBjcCxMcSBhcyBjcSxqbSBhcyBjcixPcSBhcyBjcyxOcSBhcyBjdCxRSSBhcyBjdSxScSBhcyBjdixJcSBhcyBjdyxxZyBhcyBjeCxGbCBhcyBjeSxzdCBhcyBkLGNDIGFzIGUsc2UgYXMgZixTZCBhcyBnLCQgYXMgaCxnIGFzIGksTnIgYXMgaixfbiBhcyBrLE4gYXMgbCxmbyBhcyBtLE1mIGFzIG4sUiBhcyBvLFlUIGFzIHAsdXIgYXMgcSxHIGFzIHIsTHYgYXMgcyxydCBhcyB0LERrIGFzIHUsZGUgYXMgdixNIGFzIHcsQWwgYXMgeCxKdCBhcyB5LGpxIGFzIHp9Owo=", "/_nuxt/s3p0c03M.js": "aW1wb3J0e18gYXMgbH1mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtmIGFzIGksbiBhcyB1LG8saCBhcyBtLHcgYXMgYSxhIGFzIHQsaSBhcyBmLGMgYXMgaCxiIGFzIHMsayBhcyBiLHYgYXMgeCxsIGFzICQsdSBhcyBnfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMga31mcm9tIi4vQlNSS3FHclAuanMiO2ltcG9ydHtfIGFzIHl9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnR7XyBhcyBVfWZyb20iLi9DbDRpNHJTTS5qcyI7aW1wb3J0Ii4vQ3RhMTVzRy0uanMiO2ltcG9ydCIuL0NjNnppaC1SLmpzIjtpbXBvcnQiLi9naHFZYklTVC5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2ltcG9ydCIuL18ybFNkcjEzLmpzIjtjb25zdCBCPXtjbGFzczoic3BhY2UteS0yIHRleHQtc20ifSxDPXtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSx3PWkoe19fbmFtZToiRGFzaGJvYXJkR2V0dGluZ1N0YXJ0ZWQiLHNldHVwKF8pe2NvbnN0IHI9dSgpLG49JCgoKT0+KHIuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10pLmluY2x1ZGVzKCJ1c2VyOmltcGVyc29uYXRlIikpO3JldHVybihjLGUpPT57Y29uc3QgZD1iLHA9aztyZXR1cm4gbygpLG0ocCxudWxsLHtoZWFkZXI6YSgoKT0+Wy4uLmVbMF18fChlWzBdPVt0KCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgR2V0IHN0YXJ0ZWQgIiwtMSldKV0pLGRlZmF1bHQ6YSgoKT0+W3QoInVsIixCLFtmKG4pPyhvKCksaCgibGkiLEMsW3MoZCx7bmFtZToiaS1sdWNpZGUtdXNlci1jb2ciLGNsYXNzOiJzaXplLTQgdGV4dC1tdXRlZCJ9KSxlWzFdfHwoZVsxXT10KCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVXNlIHRoZSBkcm9wZG93biBhdCB0aGUgdG9wIG9mIHRoZSBzaWRlYmFyIHRvIGltcGVyc29uYXRlIGFueSB1c2VyLiIsLTEpKV0pKTp4KCIiLCEwKV0pXSksXzoxfSl9fX0pLEQ9e2NsYXNzOiJzcGFjZS15LTYifSxQPWkoe19fbmFtZToiZGFzaGJvYXJkIixzZXR1cChfKXtyZXR1cm4gZyh7dGl0bGU6IkRhc2hib2FyZCJ9KSwocixuKT0+e2NvbnN0IGM9bDtyZXR1cm4gbygpLG0oYyx7aWQ6ImRhc2hib2FyZCJ9LHtoZWFkZXI6YSgoKT0+W3MoeSx7dGl0bGU6IkhvbWUifSldKSxib2R5OmEoKCk9Plt0KCJkaXYiLEQsW3MoVSkscyh3KV0pXSksXzoxfSl9fX0pO2V4cG9ydHtQIGFzIGRlZmF1bHR9Owo=", "/favicon.ico": "AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AIIHcAJCC3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C2wBwgNsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAgdsAgILdAJ+C3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfgdwAkIDfABCB3AC/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gdwAv4DfACAAAAAAAAAAAAAAAACC2gBggtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gdwAv4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA34DfACAAAAAAAAAAAAAAAACC3ADfgtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gt4Ar4LcAP+C3AD/gtwA/4LbAMCC3QCfgt0An4LdAJ+C3QCfgt0An4HbAM+C3AD/gtwA/4LcAP+C3AD/gtwA3wAAAAAAAAAAAAAAAIDfACCC3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfg9wAv4LcAP+C3AD/gtwA/4HcAL+A3wAggtwA/4LcAP+C3AD/gdsAzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfACCC2gDQgtwA/4LcAP+C3AD/gdsAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACB3AC/gtwA/4LcAP+C3AD/gN8AIAAAAACC3QCPgtwA/4LcAP+C3AD/gtoAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfABCC3ADfgtwA/4LcAP+C3ADvgN8AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNwAUILcAP+C3AD/gtwA/4LbAI8AAAAAAAAAAIDfACCC3ADfgtwA/4LcAP+C3ADfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDcAFCC3AD/gtwA/4LcAP+C3ACfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfABCB3ADfgtwA/4LcAP+C3ADvgN8AEAAAAAAAAAAAAAAAAILaAGCC3AD/gtwA/4LcAP+B2wCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIHaAKCC3AD/gtwA/4LcAP+A3wAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgdsAgILcAP+C3AD/gtwA/4LbAHAAAAAAAAAAAAAAAAAAAAAAAAAAAILcAN+C3AD/gtwA/4LcAP+A3wAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AIILcAP+C3AD/gtwA/4LcAN8AAAAAAAAAAAAAAAAAAAAAAAAAAIDfACCC3ADvgtwA/4LcAP+B3AC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AMILcAP+C3AD/gtwA/4LcAJ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgt0Af4LcAP+C3AD/gtwA/4LaAGAAAAAAAAAAAAAAAAAAAAAAgdwAv4LcAP+C3AD/gtwA/4DbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgdoAoILcAP+C3AD/gtwA/4DcAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA3wAwgtwA/4LcAP+C3AD/gtwA34DfACAAAAAAAAAAAIDbAECC3AD/gtwA/4LcAP+C3ACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA3wAggtwA/4LcAP+C3AD/gtwA3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIHaAKCC3AD/gtwA/4LcAP+C3AD/gdwAkAAAAAAAAAAAgd0Az4LcAP+C3AD/gtwA74DfACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC3QB/gtwA/4LcAP+C3AD/gtoAYAAAAAAAAAAAAAAAAAAAAACA2wBAgtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gN8AIILbAHCC3AD/gtwA/4LcAP+B2wCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC3ADfgtwA/4LcAP+C3ADfgN8AIAAAAAAAAAAAAAAAAIHcAL+C3AD/gtwA/4LcAO+C3AD/gtwA/4LcAP+D3ACvgtwA74LcAP+C3AD/gtwA34DfABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILaAGCC3AD/gtwA/4LcAP+C3ACfAAAAAAAAAACC2wBwgtwA/4LcAP+C3AD/gdsAgIHaAKCC3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+A2wBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILeAK+C3AD/gtwA/4LcAP+A3wAggN8AEILcAO+C3AD/gtwA/4LcAN+A3wAQgN8AIILcAN+C3AD/gtwA/4LcAP+C3AD/gdwAvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AIILcAP+C3AD/gtwA/4HcAL+B2wCAgtwA/4LcAP+C3AD/gNwAUAAAAAAAAAAAg90Ab4LcAP+C3AD/gtwA/4LcAP+A2gAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgdoAoILcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4HcAL8AAAAAAAAAAAAAAAAAAAAAgtoA0ILcAP+C3AD/gt0AfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA3wAggtwA34LcAP+C3AD/gtwA/4LcAP+C3AD/gNsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAgNsAQIDbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC2gBggtwA/4LcAP+C3AD/gtwA/4LbAI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC3ADfgtwA/4LcAP+C3ADvgN8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfACCB3ACQgdwAkIDfACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////8AB8AAAAHAAAAA4AAAAOAAB+B/4IPwP8GD+D+Bwfwfg+D8Hwfg/g8H8H4GD/B+Bg/4PAAf/BwAH/wYAD/+AAB//gBgf/8A8P//APn//4H////B////w/////////////////////////////8=", "/robots.txt": "VXNlci1BZ2VudDogKgpEaXNhbGxvdzoK" }, "migrations": [{ "name": "0000_outgoing_leo", "sql": "CREATE TABLE `activities` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`action` text NOT NULL,\n\t`action_ref_id` text,\n\t`test` text,\n\t`metadata` text,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE cascade ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `activities_user_id_idx` ON `activities` (`user_id`);--> statement-breakpoint\nCREATE TABLE `identities` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`provider` text NOT NULL,\n\t`provider_user_id` text NOT NULL,\n\t`provider_data` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE cascade ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `identities_user_id_idx` ON `identities` (`user_id`);--> statement-breakpoint\nCREATE UNIQUE INDEX `identities_provider_unique_idx` ON `identities` (`provider`,`provider_user_id`);--> statement-breakpoint\nCREATE TABLE `users` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`username` text,\n\t`name` text,\n\t`primary_email` text NOT NULL,\n\t`primary_phone` text,\n\t`avatar` text,\n\t`verified` integer DEFAULT false,\n\t`email_notifications` integer DEFAULT true,\n\t`abilities` text DEFAULT '[]' NOT NULL,\n\t`custom_data` text DEFAULT '{}',\n\t`last_sign_in_at` integer,\n\t`is_suspended` integer DEFAULT false,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `users_primary_email_unique` ON `users` (`primary_email`);--> statement-breakpoint\nCREATE UNIQUE INDEX `users_primary_phone_unique` ON `users` (`primary_phone`);--> statement-breakpoint\nCREATE INDEX `users_username_idx` ON `users` (`username`);--> statement-breakpoint\nCREATE INDEX `users_name_idx` ON `users` (`name`);" }, { "name": "0001_goofy_quasar", "sql": "CREATE TABLE `organization_members` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`abilities` text DEFAULT '[]' NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `org_members_user_org_unique` ON `organization_members` (`user_id`,`organization_id`);--> statement-breakpoint\nCREATE INDEX `org_members_org_idx` ON `organization_members` (`organization_id`);--> statement-breakpoint\nCREATE TABLE `organizations` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`name` text NOT NULL,\n\t`slug` text NOT NULL,\n\t`owner_id` text,\n\t`is_personal` integer DEFAULT false NOT NULL,\n\t`is_system` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`owner_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `organizations_slug_unique` ON `organizations` (`slug`);--> statement-breakpoint\nCREATE INDEX `organizations_is_system_idx` ON `organizations` (`is_system`);--> statement-breakpoint\nALTER TABLE `users` DROP COLUMN `abilities`;" }, { "name": "0002_sad_cable", "sql": "CREATE TABLE `permissions` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`key` text NOT NULL,\n\t`subject` text NOT NULL,\n\t`action` text NOT NULL,\n\t`scope` text,\n\t`org_kind` text NOT NULL,\n\t`description` text,\n\t`created_at` integer NOT NULL\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `permissions_key_unique` ON `permissions` (`key`);--> statement-breakpoint\nCREATE INDEX `permissions_subject_idx` ON `permissions` (`subject`);" }, { "name": "0003_narrow_swordsman", "sql": "CREATE TABLE `todos` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`user_id` text,\n\t`title` text NOT NULL,\n\t`completed` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `todos_org_idx` ON `todos` (`organization_id`);" }, { "name": "0004_cloudy_nicolaos", "sql": "CREATE TABLE `notifications` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`user_id` text NOT NULL,\n\t`sender_name` text NOT NULL,\n\t`body` text NOT NULL,\n\t`is_read` integer DEFAULT false NOT NULL,\n\t`dedupe_key` text,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `notifications_user_org_idx` ON `notifications` (`user_id`,`organization_id`);--> statement-breakpoint\nCREATE INDEX `notifications_created_idx` ON `notifications` (`created_at`);--> statement-breakpoint\nCREATE UNIQUE INDEX `notifications_dedupe_idx` ON `notifications` (`user_id`,`organization_id`,`dedupe_key`);" }, { "name": "0005_sweet_gideon", "sql": "ALTER TABLE `users` ADD `bio` text;--> statement-breakpoint\nALTER TABLE `users` ADD `notification_prefs` text DEFAULT '{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}';" }, { "name": "0006_cooing_vindicator", "sql": "CREATE TABLE `organization_invitations` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`email` text NOT NULL,\n\t`role` text DEFAULT 'member' NOT NULL,\n\t`token` text NOT NULL,\n\t`invited_by` text,\n\t`created_at` integer NOT NULL,\n\t`expires_at` integer NOT NULL,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`invited_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `organization_invitations_token_unique` ON `organization_invitations` (`token`);--> statement-breakpoint\nCREATE INDEX `org_invitations_org_idx` ON `organization_invitations` (`organization_id`);--> statement-breakpoint\nCREATE INDEX `org_invitations_token_idx` ON `organization_invitations` (`token`);" }, { "name": "0007_roles_and_member_roles", "sql": "CREATE TABLE `roles` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`name` text NOT NULL,\n\t`description` text,\n\t`permissions` text DEFAULT '[]' NOT NULL,\n\t`is_system` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `roles_org_name_unique` ON `roles` (`organization_id`,`name`);--> statement-breakpoint\nCREATE INDEX `roles_org_idx` ON `roles` (`organization_id`);--> statement-breakpoint\nCREATE TABLE `organization_member_roles` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`member_id` text NOT NULL,\n\t`role_id` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`member_id`) REFERENCES `organization_members`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `member_roles_unique` ON `organization_member_roles` (`member_id`,`role_id`);--> statement-breakpoint\nCREATE INDEX `member_roles_member_idx` ON `organization_member_roles` (`member_id`);--> statement-breakpoint\nCREATE INDEX `member_roles_role_idx` ON `organization_member_roles` (`role_id`);--> statement-breakpoint\nALTER TABLE `organization_invitations` ADD `role_id` text REFERENCES roles(id) ON DELETE set null;--> statement-breakpoint\nALTER TABLE `organization_invitations` DROP COLUMN `role`;\n" }, { "name": "0008_tense_guardian", "sql": "CREATE TABLE `organization_credits` (\n\t`organization_id` text PRIMARY KEY NOT NULL,\n\t`balance` integer DEFAULT 0 NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE TABLE `transactions` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`user_id` text,\n\t`type` text NOT NULL,\n\t`status` text DEFAULT 'pending' NOT NULL,\n\t`amount` integer NOT NULL,\n\t`gateway_ref` text,\n\t`sepay_event_id` text,\n\t`metadata` text DEFAULT '{}',\n\t`expires_at` integer,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `transactions_gateway_ref_unique` ON `transactions` (`gateway_ref`);--> statement-breakpoint\nCREATE UNIQUE INDEX `transactions_sepay_event_id_unique` ON `transactions` (`sepay_event_id`);--> statement-breakpoint\nCREATE INDEX `transactions_org_idx` ON `transactions` (`organization_id`);--> statement-breakpoint\nCREATE INDEX `transactions_status_idx` ON `transactions` (`status`);" }, { "name": "0009_condemned_sandman", "sql": "CREATE TABLE `referrals` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`referrer_id` text NOT NULL,\n\t`referee_id` text NOT NULL,\n\t`source` text DEFAULT 'link' NOT NULL,\n\t`reward_paid` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`referrer_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`referee_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `referrals_referee_unique` ON `referrals` (`referee_id`);--> statement-breakpoint\nCREATE INDEX `referrals_referrer_idx` ON `referrals` (`referrer_id`);--> statement-breakpoint\nCREATE TABLE `user_referrals` (\n\t`user_id` text PRIMARY KEY NOT NULL,\n\t`code` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `user_referrals_code_unique` ON `user_referrals` (`code`);" }, { "name": "0010_abnormal_barracuda", "sql": "CREATE TABLE `support_ticket_messages` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`ticket_id` text NOT NULL,\n\t`author_id` text,\n\t`author_role` text NOT NULL,\n\t`body` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`ticket_id`) REFERENCES `support_tickets`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`author_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `support_ticket_messages_ticket_idx` ON `support_ticket_messages` (`ticket_id`,`created_at`);--> statement-breakpoint\nCREATE TABLE `support_tickets` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`kind` text NOT NULL,\n\t`category` text,\n\t`subject` text NOT NULL,\n\t`status` text DEFAULT 'open' NOT NULL,\n\t`assigned_to` text,\n\t`last_message_at` integer NOT NULL,\n\t`last_message_role` text DEFAULT 'user' NOT NULL,\n\t`reminder_sent_at` integer,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`assigned_to`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `support_tickets_user_idx` ON `support_tickets` (`user_id`);--> statement-breakpoint\nCREATE INDEX `support_tickets_status_idx` ON `support_tickets` (`status`);--> statement-breakpoint\nCREATE INDEX `support_tickets_assigned_idx` ON `support_tickets` (`assigned_to`);--> statement-breakpoint\nCREATE INDEX `support_tickets_reminder_idx` ON `support_tickets` (`last_message_role`,`last_message_at`);" }, { "name": "0011_drop_todos_add_products", "sql": "DROP TABLE `todos`;\n--> statement-breakpoint\nCREATE TABLE `products` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`name` text NOT NULL,\n\t`description` text,\n\t`type` text DEFAULT 'one_time' NOT NULL,\n\t`price` integer NOT NULL,\n\t`price_currency` text DEFAULT 'USD' NOT NULL,\n\t`billing_interval` text,\n\t`status` text DEFAULT 'active' NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer\n);\n--> statement-breakpoint\nCREATE INDEX `products_status_idx` ON `products` (`status`);\n--> statement-breakpoint\nCREATE INDEX `products_type_idx` ON `products` (`type`);\n" }, { "name": "0012_project_layer", "sql": "ALTER TABLE `organization_invitations` ADD `project_ids` text DEFAULT '[]';\n--> statement-breakpoint\nCREATE TABLE `projects` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`name` text NOT NULL,\n\t`description` text,\n\t`status` text DEFAULT 'active' NOT NULL,\n\t`created_by` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`created_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `projects_org_idx` ON `projects` (`organization_id`);\n--> statement-breakpoint\nCREATE INDEX `projects_status_idx` ON `projects` (`status`);\n--> statement-breakpoint\nCREATE TABLE `project_products` (\n\t`project_id` text NOT NULL,\n\t`product_id` text NOT NULL,\n\t`quantity` integer DEFAULT 1 NOT NULL,\n\t`added_at` integer NOT NULL,\n\tPRIMARY KEY(`project_id`, `product_id`),\n\tFOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE TABLE `project_members` (\n\t`project_id` text NOT NULL,\n\t`user_id` text NOT NULL,\n\t`role` text DEFAULT 'member' NOT NULL,\n\t`added_at` integer NOT NULL,\n\tPRIMARY KEY(`project_id`, `user_id`),\n\tFOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `project_members_user_idx` ON `project_members` (`user_id`);\n" }, { "name": "0013_invoice_billing", "sql": "CREATE TABLE `organization_billing_settings` (\n\t`organization_id` text PRIMARY KEY NOT NULL,\n\t`company_name` text,\n\t`tax_id` text,\n\t`address` text,\n\t`city` text,\n\t`country` text DEFAULT 'US',\n\t`currency` text DEFAULT 'USD' NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE TABLE `invoices` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`number` text NOT NULL,\n\t`status` text DEFAULT 'draft' NOT NULL,\n\t`currency` text DEFAULT 'USD' NOT NULL,\n\t`subtotal` integer DEFAULT 0 NOT NULL,\n\t`tax` integer DEFAULT 0 NOT NULL,\n\t`total` integer DEFAULT 0 NOT NULL,\n\t`issued_at` integer,\n\t`due_at` integer,\n\t`paid_at` integer,\n\t`notes` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `invoices_number_unique` ON `invoices` (`number`);\n--> statement-breakpoint\nCREATE INDEX `invoices_org_idx` ON `invoices` (`organization_id`);\n--> statement-breakpoint\nCREATE INDEX `invoices_status_idx` ON `invoices` (`status`);\n--> statement-breakpoint\nCREATE TABLE `invoice_items` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`invoice_id` text NOT NULL,\n\t`description` text NOT NULL,\n\t`quantity` integer DEFAULT 1 NOT NULL,\n\t`unit_price` integer NOT NULL,\n\t`currency` text DEFAULT 'USD' NOT NULL,\n\t`amount` integer NOT NULL,\n\tFOREIGN KEY (`invoice_id`) REFERENCES `invoices`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `invoice_items_invoice_idx` ON `invoice_items` (`invoice_id`);\n" }, { "name": "0014_migrate_todo_abilities", "sql": "UPDATE organization_members\nSET abilities = (\n SELECT json_group_array(DISTINCT mapped)\n FROM (\n SELECT\n CASE\n WHEN value = 'todo:manage' THEN 'project:manage'\n WHEN value = 'todo:read' THEN 'project:read'\n WHEN value = 'todo:write' THEN 'project:write'\n WHEN value = 'todo:delete:self' THEN 'project:write'\n ELSE value\n END AS mapped\n FROM json_each(abilities)\n )\n)\nWHERE abilities LIKE '%todo:%';\n" }, { "name": "0015_grant_billing_abilities", "sql": "-- Grant billing:manage + billing:read to org admins (identified by user:manage)\nUPDATE organization_members\nSET abilities = json_insert(\n json_insert(abilities, '$[#]', 'billing:read'),\n '$[#]', 'billing:manage'\n)\nWHERE json_type(abilities) = 'array'\n AND abilities LIKE '%user:manage%'\n AND abilities NOT LIKE '%billing:manage%';\n--> statement-breakpoint\n-- Grant billing:read to regular members (identified by project:read/write, not already billing-capable)\nUPDATE organization_members\nSET abilities = json_insert(abilities, '$[#]', 'billing:read')\nWHERE json_type(abilities) = 'array'\n AND (abilities LIKE '%project:read%' OR abilities LIKE '%project:write%')\n AND abilities NOT LIKE '%billing:read%'\n AND abilities NOT LIKE '%billing:manage%';\n" }, { "name": "0016_aromatic_jack_murdock", "sql": "CREATE TABLE `selfhost_audit` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`actor_user_id` text,\n\t`action` text NOT NULL,\n\t`success` integer NOT NULL,\n\t`cf_account_id` text,\n\t`error_message` text,\n\t`started_at` integer NOT NULL,\n\t`finished_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`actor_user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `selfhost_audit_org_idx` ON `selfhost_audit` (`organization_id`);--> statement-breakpoint\nCREATE INDEX `selfhost_audit_started_idx` ON `selfhost_audit` (`started_at`);--> statement-breakpoint\nCREATE TABLE `selfhost_deployments` (\n\t`organization_id` text PRIMARY KEY NOT NULL,\n\t`cf_account_id` text,\n\t`cf_script_name` text,\n\t`workers_dev_url` text,\n\t`deployed_version` text,\n\t`deployed_at` integer,\n\t`cf_token_ciphertext` text,\n\t`cf_token_iv` text,\n\t`cf_token_expires_at` integer,\n\t`status` text DEFAULT 'idle' NOT NULL,\n\t`last_error` text,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n" }, { "name": "0017_brave_pete_wisdom", "sql": "CREATE TABLE `selfhost_deployment_secrets` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`key` text NOT NULL,\n\t`ciphertext` text NOT NULL,\n\t`iv` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `selfhost_secrets_org_key_unique` ON `selfhost_deployment_secrets` (`organization_id`,`key`);\n" }], "version": "v2.0.1" } \ No newline at end of file diff --git a/bundle.sha256 b/bundle.sha256 new file mode 100644 index 00000000..0638cdcb --- /dev/null +++ b/bundle.sha256 @@ -0,0 +1 @@ +6fc3dde206a7f0ae38699bb3c4e01b2d7e6e4f3be87e53e405090b5782754d99 \ No newline at end of file diff --git a/layers/auth/shared/permissions.ts b/layers/auth/shared/permissions.ts index 1c9a0e0b..fc0aa7c4 100644 --- a/layers/auth/shared/permissions.ts +++ b/layers/auth/shared/permissions.ts @@ -1,6 +1,6 @@ import { parseAbility, satisfiesAbility } from '#layers/auth/shared/ability' -export const TENANT_SUBJECTS: readonly string[] = ['user', 'project', 'billing'] +export const TENANT_SUBJECTS: readonly string[] = ['user', 'project', 'billing', 'selfhost'] export const TENANT_ACTIONS = ['read', 'write', 'delete', 'manage'] as const // Platform powers — grantable ONLY in the system org. @@ -24,7 +24,7 @@ export const SELF_ABILITY_KEYS = new Set([]) // --- defaults ---------------------------------------------------------- // Owner of a personal org (admin of their own workspace). -export const DEFAULT_PERSONAL_ORG_ABILITIES: readonly string[] = ['user:manage', 'project:manage', 'billing:manage', 'billing:read'] +export const DEFAULT_PERSONAL_ORG_ABILITIES: readonly string[] = ['user:manage', 'project:manage', 'billing:manage', 'billing:read', 'selfhost:manage', 'selfhost:read'] // Granted to a user joining an org as a plain member (direct add or accepted invitation). export const DEFAULT_MEMBER_ABILITIES: readonly string[] = ['project:read', 'project:write', 'billing:read'] diff --git a/layers/selfhost/CLAUDE.md b/layers/selfhost/CLAUDE.md new file mode 100644 index 00000000..1a5e039c --- /dev/null +++ b/layers/selfhost/CLAUDE.md @@ -0,0 +1,109 @@ +# layers/selfhost + +> Self-contained Nuxt layer that owns the **self-hosting** feature — lets a +> user deploy this template into their own Cloudflare account by pasting a +> Cloudflare API token. Auto-discovered from `/layers/selfhost/`. + +## What this layer owns + +| Concern | Where | +|--------|------| +| Drizzle tables (`selfhost_deployments`, `selfhost_audit`) | `server/db/schema.ts` | +| Cloudflare API wrapper (verify, write-probe, provision, migrations, upload, subdomain) | `server/services/cloudflare.ts` *(Phase 2)* | +| GitHub release bundle fetcher (public + private repo via `NUXT_GITHUB_TOKEN`) | `server/services/github.ts` *(Phase 2)* | +| Deploy orchestration route (rate-limit, owner-check, audit, concurrent guard) | `server/api/selfhost/deploy.post.ts` *(Phase 3)* | +| Status + version-compare route | `server/api/selfhost/status.get.ts` *(Phase 3)* | +| Disconnect (null the stored token) route | `server/api/selfhost/disconnect.post.ts` *(Phase 3)* | +| Audit log route | `server/api/selfhost/audit.get.ts` *(Phase 3)* | +| Settings page (paste token, Deploy/Update button, status panel, expiry warning) | `app/pages/settings/self-host.vue` *(Phase 4)* | +| Sidebar contribution (Settings → Self-hosting, priority 90) | `app/plugins/99.contribute.selfhost.client.ts` *(Phase 4)* | + +## The deploy flow (Phase 3) + +1. `POST /api/selfhost/deploy` (body: `{ token? }` — omit to redeploy with stored token) + 1. **Precheck**: owner-role check, rate limit (1/60s/org), concurrent-deploy guard. + 2. `verifyToken` → `discoverAccount` → `probeCapabilities` (write-probe via POST+DELETE — returns missing permission names → 400 if any). + 3. `provisionResources` — idempotently creates D1, KV namespace, R2 bucket. + 4. `getLatestBundle(repo)` — fetches `bundle.json` from latest GitHub release; verifies SHA-256. + 5. `applyMigrations` — runs migrations against the user's D1 via the Cloudflare REST API; idempotent via `d1_migrations` table. + 6. `uploadWorker` — multipart PUT to Workers API with bindings (D1, KV, R2, `DEPLOYED_VERSION`). + 7. `enableSubdomain` — enables `*.workers.dev` for the script. + 8. Persists CF token (AES-GCM encrypted via `authSecret`), `workers_dev_url`, `deployed_version`, `cf_token_expires_at`, `status='deployed'`. + 9. Writes an audit row to `selfhost_audit` (success or failure). + +## Token encryption + +The Cloudflare API token is account-takeover-grade. It is stored +**AES-GCM-encrypted** using `encryptSecret`/`decryptSecret` from +`~~/server/utils/crypto.ts` (key = SHA-256 of `runtimeConfig.authSecret`). Rules: +- Never log or include in error messages. +- `GET /api/selfhost/status` strips `cf_token_ciphertext`/`cf_token_iv` from the response. +- `POST /api/selfhost/disconnect` nulls the ciphertext so the token can't be reused. + +## DB schema (Phase 1) + +`selfhost_deployments` is keyed by `organization_id` (one deployment per org). + +| Column | Purpose | +|--------|---------| +| `organization_id` (PK) | One row per org | +| `cf_account_id` | Discovered Cloudflare account | +| `cf_script_name` | Worker script name (`nuxt-template-<8-char-org-id>`) | +| `workers_dev_url` | `https:// + + diff --git a/layers/selfhost/app/pages/settings/self-host.vue b/layers/selfhost/app/pages/settings/self-host.vue new file mode 100644 index 00000000..075b2b19 --- /dev/null +++ b/layers/selfhost/app/pages/settings/self-host.vue @@ -0,0 +1,285 @@ + + + diff --git a/layers/selfhost/app/plugins/99.contribute.selfhost.client.ts b/layers/selfhost/app/plugins/99.contribute.selfhost.client.ts new file mode 100644 index 00000000..dfe915a4 --- /dev/null +++ b/layers/selfhost/app/plugins/99.contribute.selfhost.client.ts @@ -0,0 +1,15 @@ +export default defineNuxtPlugin(() => { + const { contribute } = useLayerRegistry() + contribute({ + navItems: [ + { + id: 'settings-self-host', + label: 'Self-hosting', + to: '/settings/self-host', + section: 'settings', + priority: 90, + ability: ['selfhost:read', 'selfhost:manage'], + }, + ], + }) +}) diff --git a/layers/selfhost/nuxt.config.ts b/layers/selfhost/nuxt.config.ts new file mode 100644 index 00000000..a8e8e34a --- /dev/null +++ b/layers/selfhost/nuxt.config.ts @@ -0,0 +1,5 @@ +export default defineNuxtConfig({ + $meta: { + name: 'selfhost', + }, +}) diff --git a/layers/selfhost/package.json b/layers/selfhost/package.json new file mode 100644 index 00000000..632bddb9 --- /dev/null +++ b/layers/selfhost/package.json @@ -0,0 +1,6 @@ +{ + "name": "@layers/selfhost", + "type": "module", + "private": true, + "main": "./nuxt.config.ts" +} diff --git a/layers/selfhost/server/api/selfhost/audit.get.ts b/layers/selfhost/server/api/selfhost/audit.get.ts new file mode 100644 index 00000000..41c55cd5 --- /dev/null +++ b/layers/selfhost/server/api/selfhost/audit.get.ts @@ -0,0 +1,16 @@ +import { db } from '@nuxthub/db' +import { desc, eq } from 'drizzle-orm' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { selfhostAuditTable } from '#layers/selfhost/server/db/schema' + +const DEFAULT_LIMIT = 50 + +export default defineAuthorizedHandler(['selfhost:read', 'selfhost:manage'], async (_event, { session }) => { + const orgId = session.activeOrganizationId! + const rows = await db.query.selfhostAuditTable.findMany({ + where: eq(selfhostAuditTable.organization_id, orgId), + orderBy: [desc(selfhostAuditTable.started_at)], + limit: DEFAULT_LIMIT, + }) + return { audits: rows } +}) diff --git a/layers/selfhost/server/api/selfhost/cf-accounts.post.ts b/layers/selfhost/server/api/selfhost/cf-accounts.post.ts new file mode 100644 index 00000000..28dac22e --- /dev/null +++ b/layers/selfhost/server/api/selfhost/cf-accounts.post.ts @@ -0,0 +1,13 @@ +import { readValidatedBody } from 'h3' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { listAccounts, verifyToken } from '#layers/selfhost/server/services/cloudflare' +import { CfAccountsBodySchema } from '#layers/selfhost/shared/schemas/deploy' + +// Pre-flight: returns the list of CF accounts the pasted token can reach, +// so the UI can prompt the user to pick one when there are multiple. +export default defineAuthorizedHandler(['selfhost:manage'], async (event) => { + const { token } = await readValidatedBody(event, CfAccountsBodySchema.parse) + await verifyToken(token) + const accounts = await listAccounts(token) + return { accounts } +}) diff --git a/layers/selfhost/server/api/selfhost/deploy.post.ts b/layers/selfhost/server/api/selfhost/deploy.post.ts new file mode 100644 index 00000000..1c5c6fb1 --- /dev/null +++ b/layers/selfhost/server/api/selfhost/deploy.post.ts @@ -0,0 +1,191 @@ +import { db } from '@nuxthub/db' +import { kv } from '@nuxthub/kv' +import { eq } from 'drizzle-orm' +import { readValidatedBody } from 'h3' +import { decryptSecret, encryptSecret } from '~~/server/utils/crypto' +import { organizationTable } from '#layers/auth/server/db/schema' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { selfhostAuditTable, selfhostDeploymentSecretTable, selfhostDeploymentTable } from '#layers/selfhost/server/db/schema' +import { applyMigrations, enableSubdomain, listAccounts, probeCapabilities, provisionResources, setWorkerSecret, uploadAssets, uploadWorker, verifyToken } from '#layers/selfhost/server/services/cloudflare' +import { getLatestBundle } from '#layers/selfhost/server/services/github' +import { generateAutoSecret, SELFHOST_SECRET_CATALOG } from '#layers/selfhost/server/services/secrets' +import { DeployBodySchema } from '#layers/selfhost/shared/schemas/deploy' + +const RATE_LIMIT_SECONDS = 60 +const CONCURRENT_DEPLOY_WINDOW_MS = 5 * 60_000 + +export default defineAuthorizedHandler(['selfhost:manage'], async (event, { session }) => { + const orgId = session.activeOrganizationId! + const body = await readValidatedBody(event, DeployBodySchema.parse) + const startedAt = new Date() + + // Owner-only gate: a CF API token is account-takeover-grade, so only the org owner may bind one. + const org = await db.query.organizationTable.findFirst({ where: eq(organizationTable.id, orgId) }) + if (!org || org.owner_id !== session.id) + throw createError({ statusCode: 403, statusMessage: 'Only the organization owner can deploy a self-hosted instance' }) + + // Rate limit (one deploy attempt per minute per org) + const rlKey = `selfhost:deploy-rl:${orgId}` + if (await kv.has(rlKey)) + throw createError({ statusCode: 429, statusMessage: `Deploy attempted too recently. Wait ${RATE_LIMIT_SECONDS}s.` }) + await kv.set(rlKey, 1, { ttl: RATE_LIMIT_SECONDS }) + + // Concurrent-deploy guard (skip if a prior run is still within the 5-minute window) + const existing = await db.query.selfhostDeploymentTable.findFirst({ + where: eq(selfhostDeploymentTable.organization_id, orgId), + }) + if (existing?.status === 'deploying' && existing.deployed_at && Date.now() - existing.deployed_at.getTime() < CONCURRENT_DEPLOY_WINDOW_MS) + throw createError({ statusCode: 409, statusMessage: 'Another deploy is already in progress' }) + + // Resolve the CF token: either pasted in the request body, or decrypt the stored one for a redeploy. + let cfToken: string + if (body.token) { + cfToken = body.token + } + else { + if (!existing?.cf_token_ciphertext || !existing?.cf_token_iv) + throw createError({ statusCode: 400, statusMessage: 'No token provided and no stored token found' }) + cfToken = await decryptSecret({ ciphertext: existing.cf_token_ciphertext, iv: existing.cf_token_iv }) + } + + const action = existing?.deployed_version ? 'redeploy' : 'deploy' + + await db.insert(selfhostDeploymentTable) + .values({ organization_id: orgId, status: 'deploying', deployed_at: startedAt }) + .onConflictDoUpdate({ + target: selfhostDeploymentTable.organization_id, + set: { status: 'deploying', last_error: null, deployed_at: startedAt }, + }) + + let cfAccountId: string | null = null + + try { + // 1. Verify token + const tokenInfo = await verifyToken(cfToken) + + // 2. Resolve which Cloudflare account to deploy into. + // Priority: explicit body.account_id > stored cf_account_id (redeploy) > the single account on the token. + // If the token can see multiple accounts and no choice was made, refuse so the UI can prompt. + if (body.account_id) { + const accounts = await listAccounts(cfToken) + if (!accounts.some(a => a.id === body.account_id)) + throw createError({ statusCode: 400, statusMessage: 'Selected account_id is not reachable by the provided token' }) + cfAccountId = body.account_id + } + else if (existing?.cf_account_id) { + cfAccountId = existing.cf_account_id + } + else { + const accounts = await listAccounts(cfToken) + if (accounts.length > 1) { + throw createError({ + statusCode: 409, + statusMessage: 'Multiple Cloudflare accounts available — choose one before deploying', + data: { code: 'multiple_accounts', accounts }, + }) + } + cfAccountId = accounts[0]!.id + } + + // 3. Write-capable capability probe + const missing = await probeCapabilities(cfToken, cfAccountId) + if (missing.length) + throw createError({ statusCode: 400, statusMessage: `Token missing permissions: ${missing.join(', ')}` }) + + // 4. Provision resources + const resources = await provisionResources(cfToken, cfAccountId) + + // 5. Fetch bundle from GitHub release + const repo = useRuntimeConfig().githubReleaseRepo + if (!repo) + throw createError({ statusCode: 500, statusMessage: 'githubReleaseRepo runtime config not set' }) + const { version, bundle } = await getLatestBundle(repo) + + // 6. Apply migrations + await applyMigrations(cfToken, cfAccountId, resources.dbId, bundle.migrations) + + // 7. Upload Worker + static assets + enable subdomain + const scriptName = `nuxt-template-${orgId.slice(0, 8)}`.slice(0, 63) + const assetsJwt = bundle.assets ? await uploadAssets(cfToken, cfAccountId, scriptName, bundle.assets) : null + await uploadWorker(cfToken, cfAccountId, scriptName, bundle, resources, version, assetsJwt) + const workerUrl = await enableSubdomain(cfToken, cfAccountId, scriptName) + + // 7b. Push secrets to the new Worker. Auto-generated ones are created once and persisted so + // redeploys reuse the same value (rotating auth secrets would log every user out). + const autoCtx = { workersDevUrl: workerUrl, releaseRepo: repo } + for (const def of SELFHOST_SECRET_CATALOG) { + if (!def.auto) + continue + const value = generateAutoSecret(def, autoCtx) + if (!value) + continue + const enc = await encryptSecret(value) + await db.insert(selfhostDeploymentSecretTable) + .values({ organization_id: orgId, key: def.key, ciphertext: enc.ciphertext, iv: enc.iv }) + .onConflictDoNothing({ target: [selfhostDeploymentSecretTable.organization_id, selfhostDeploymentSecretTable.key] }) + } + + const storedSecrets = await db.query.selfhostDeploymentSecretTable.findMany({ + where: eq(selfhostDeploymentSecretTable.organization_id, orgId), + }) + for (const row of storedSecrets) { + const def = SELFHOST_SECRET_CATALOG.find(d => d.key === row.key) + if (!def) + continue + const value = await decryptSecret({ ciphertext: row.ciphertext, iv: row.iv }) + await setWorkerSecret(cfToken, cfAccountId, scriptName, row.key, value, def.type) + } + + // 8. Persist deployment + encrypted token + const enc = await encryptSecret(cfToken) + const expires = tokenInfo.expires_on ? new Date(tokenInfo.expires_on) : null + await db.update(selfhostDeploymentTable) + .set({ + cf_account_id: cfAccountId, + cf_script_name: scriptName, + workers_dev_url: workerUrl, + deployed_version: version, + deployed_at: new Date(), + status: 'deployed', + cf_token_ciphertext: enc.ciphertext, + cf_token_iv: enc.iv, + cf_token_expires_at: expires ?? undefined, + last_error: null, + }) + .where(eq(selfhostDeploymentTable.organization_id, orgId)) + + await db.insert(selfhostAuditTable).values({ + organization_id: orgId, + actor_user_id: session.id, + action, + success: true, + cf_account_id: cfAccountId, + started_at: startedAt, + finished_at: new Date(), + }) + + return { url: workerUrl, version } + } + catch (e: unknown) { + const message = ((e as { statusMessage?: string, message?: string })?.statusMessage + ?? (e as { message?: string })?.message + ?? 'Unknown error').slice(0, 500) + + await db.update(selfhostDeploymentTable) + .set({ status: 'failed', last_error: message }) + .where(eq(selfhostDeploymentTable.organization_id, orgId)) + + await db.insert(selfhostAuditTable).values({ + organization_id: orgId, + actor_user_id: session.id, + action, + success: false, + cf_account_id: cfAccountId, + error_message: message, + started_at: startedAt, + finished_at: new Date(), + }) + + throw e + } +}) diff --git a/layers/selfhost/server/api/selfhost/disconnect.post.ts b/layers/selfhost/server/api/selfhost/disconnect.post.ts new file mode 100644 index 00000000..32faf8e1 --- /dev/null +++ b/layers/selfhost/server/api/selfhost/disconnect.post.ts @@ -0,0 +1,27 @@ +import { db } from '@nuxthub/db' +import { eq } from 'drizzle-orm' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { selfhostAuditTable, selfhostDeploymentSecretTable, selfhostDeploymentTable } from '#layers/selfhost/server/db/schema' + +export default defineAuthorizedHandler(['selfhost:manage'], async (_event, { session }) => { + const orgId = session.activeOrganizationId! + const startedAt = new Date() + + await db.update(selfhostDeploymentTable) + .set({ cf_token_ciphertext: null, cf_token_iv: null, cf_token_expires_at: null, status: 'idle' }) + .where(eq(selfhostDeploymentTable.organization_id, orgId)) + + // Per Phase 9 decision: wipe stored secrets too. The UI re-prompts the user on next deploy. + await db.delete(selfhostDeploymentSecretTable).where(eq(selfhostDeploymentSecretTable.organization_id, orgId)) + + await db.insert(selfhostAuditTable).values({ + organization_id: orgId, + actor_user_id: session.id, + action: 'disconnect', + success: true, + started_at: startedAt, + finished_at: new Date(), + }) + + return { success: true } +}) diff --git a/layers/selfhost/server/api/selfhost/secrets.get.ts b/layers/selfhost/server/api/selfhost/secrets.get.ts new file mode 100644 index 00000000..c2982136 --- /dev/null +++ b/layers/selfhost/server/api/selfhost/secrets.get.ts @@ -0,0 +1,28 @@ +import { db } from '@nuxthub/db' +import { eq } from 'drizzle-orm' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { selfhostDeploymentSecretTable } from '#layers/selfhost/server/db/schema' +import { SELFHOST_SECRET_CATALOG } from '#layers/selfhost/server/services/secrets' + +// Never returns the actual secret values. Just the catalog + isSet flags. +export default defineAuthorizedHandler(['selfhost:read', 'selfhost:manage'], async (_event, { session }) => { + const orgId = session.activeOrganizationId! + const stored = await db.query.selfhostDeploymentSecretTable.findMany({ + where: eq(selfhostDeploymentSecretTable.organization_id, orgId), + columns: { key: true, updated_at: true }, + }) + const storedMap = new Map(stored.map(s => [s.key, s.updated_at] as const)) + + const items = SELFHOST_SECRET_CATALOG.map(def => ({ + key: def.key, + label: def.label, + description: def.description, + category: def.category, + type: def.type, + isAuto: !!def.auto, + isSet: storedMap.has(def.key), + updatedAt: storedMap.get(def.key) ?? null, + })) + + return { items } +}) diff --git a/layers/selfhost/server/api/selfhost/secrets.patch.ts b/layers/selfhost/server/api/selfhost/secrets.patch.ts new file mode 100644 index 00000000..ec3e499d --- /dev/null +++ b/layers/selfhost/server/api/selfhost/secrets.patch.ts @@ -0,0 +1,54 @@ +import { db } from '@nuxthub/db' +import { eq } from 'drizzle-orm' +import { readValidatedBody } from 'h3' +import { decryptSecret, encryptSecret } from '~~/server/utils/crypto' +import { organizationTable } from '#layers/auth/server/db/schema' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { selfhostDeploymentSecretTable, selfhostDeploymentTable } from '#layers/selfhost/server/db/schema' +import { setWorkerSecret } from '#layers/selfhost/server/services/cloudflare' +import { findSecretDef, isKnownSecretKey } from '#layers/selfhost/server/services/secrets' +import { PatchSecretsBodySchema } from '#layers/selfhost/shared/schemas/secret' + +export default defineAuthorizedHandler(['selfhost:manage'], async (event, { session }) => { + const orgId = session.activeOrganizationId! + const body = await readValidatedBody(event, PatchSecretsBodySchema.parse) + + // Owner-only — secrets include payment + auth credentials. + const org = await db.query.organizationTable.findFirst({ where: eq(organizationTable.id, orgId) }) + if (!org || org.owner_id !== session.id) + throw createError({ statusCode: 403, statusMessage: 'Only the organization owner can modify deployment secrets' }) + + // Reject unknown keys early so a typo can't poison the catalog. + const unknown = body.updates.filter(u => !isKnownSecretKey(u.key)).map(u => u.key) + if (unknown.length) + throw createError({ statusCode: 400, statusMessage: `Unknown secret key(s): ${unknown.join(', ')}` }) + + // Encrypt + upsert to DB. + for (const u of body.updates) { + const enc = await encryptSecret(u.value) + await db.insert(selfhostDeploymentSecretTable) + .values({ organization_id: orgId, key: u.key, ciphertext: enc.ciphertext, iv: enc.iv }) + .onConflictDoUpdate({ + target: [selfhostDeploymentSecretTable.organization_id, selfhostDeploymentSecretTable.key], + set: { ciphertext: enc.ciphertext, iv: enc.iv, updated_at: new Date() }, + }) + } + + // If a deployment exists, push the changed secrets to Cloudflare immediately so they take effect without a redeploy. + const deployment = await db.query.selfhostDeploymentTable.findFirst({ + where: eq(selfhostDeploymentTable.organization_id, orgId), + }) + let pushedToCf = 0 + if (deployment?.cf_account_id && deployment?.cf_script_name && deployment?.cf_token_ciphertext && deployment?.cf_token_iv) { + const cfToken = await decryptSecret({ ciphertext: deployment.cf_token_ciphertext, iv: deployment.cf_token_iv }) + for (const u of body.updates) { + const def = findSecretDef(u.key) + if (!def) + continue + await setWorkerSecret(cfToken, deployment.cf_account_id, deployment.cf_script_name, u.key, u.value, def.type) + pushedToCf++ + } + } + + return { updated: body.updates.length, pushedToCloudflare: pushedToCf } +}) diff --git a/layers/selfhost/server/api/selfhost/status.get.ts b/layers/selfhost/server/api/selfhost/status.get.ts new file mode 100644 index 00000000..a8a653f5 --- /dev/null +++ b/layers/selfhost/server/api/selfhost/status.get.ts @@ -0,0 +1,32 @@ +import { db } from '@nuxthub/db' +import { eq } from 'drizzle-orm' +import { getCachedOrFetch } from '~~/server/utils/cache' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { selfhostDeploymentTable } from '#layers/selfhost/server/db/schema' +import { getLatestVersion } from '#layers/selfhost/server/services/github' + +const LATEST_VERSION_CACHE_TTL_SECONDS = 3600 + +export default defineAuthorizedHandler(['selfhost:read', 'selfhost:manage'], async (_event, { session }) => { + const orgId = session.activeOrganizationId! + const deployment = await db.query.selfhostDeploymentTable.findFirst({ + where: eq(selfhostDeploymentTable.organization_id, orgId), + }) + + const repo = useRuntimeConfig().githubReleaseRepo + const latest_version = repo + ? await getCachedOrFetch(`selfhost:latest-version`, () => getLatestVersion(repo), LATEST_VERSION_CACHE_TTL_SECONDS) + : null + + if (!deployment) + return { status: 'idle' as const, latest_version, update_available: false, has_stored_token: false } + + // Strip token ciphertext + IV before returning to the client. + const { cf_token_ciphertext, cf_token_iv, ...safe } = deployment + return { + ...safe, + latest_version, + update_available: !!(latest_version && deployment.deployed_version && latest_version !== deployment.deployed_version), + has_stored_token: !!(cf_token_ciphertext && cf_token_iv), + } +}) diff --git a/layers/selfhost/server/api/selfhost/test-email.post.ts b/layers/selfhost/server/api/selfhost/test-email.post.ts new file mode 100644 index 00000000..2cf572c7 --- /dev/null +++ b/layers/selfhost/server/api/selfhost/test-email.post.ts @@ -0,0 +1,33 @@ +import { db } from '@nuxthub/db' +import { eq } from 'drizzle-orm' +import { readValidatedBody } from 'h3' +import { defineAuthorizedHandler } from '#layers/auth/server/services/casl' +import { selfhostDeploymentTable } from '#layers/selfhost/server/db/schema' +import { TestEmailBodySchema } from '#layers/selfhost/shared/schemas/secret' + +// Smoke-test SMTP by asking the deployed Worker to send an email to itself. +// We assume the deployed worker exposes /api/auth/dev-cleanup or a similar endpoint that triggers +// an email — for a generic implementation we just GET /api/health to verify reachability and +// instruct the user to verify email by signing up on their deployed instance. +// +// True SMTP-from-here would require the deployed Worker to expose a dedicated test endpoint, which +// isn't part of the current upstream app. For now this endpoint validates that the Worker is alive +// and the workers.dev URL responds. +export default defineAuthorizedHandler(['selfhost:manage'], async (event, { session }) => { + await readValidatedBody(event, TestEmailBodySchema.parse) + const orgId = session.activeOrganizationId! + + const deployment = await db.query.selfhostDeploymentTable.findFirst({ + where: eq(selfhostDeploymentTable.organization_id, orgId), + }) + if (!deployment?.workers_dev_url) + throw createError({ statusCode: 400, statusMessage: 'No active deployment found' }) + + const res = await fetch(deployment.workers_dev_url, { method: 'GET', redirect: 'manual' }) + return { + reachable: res.ok || res.status === 302, + status: res.status, + workerUrl: deployment.workers_dev_url, + note: 'To verify SMTP end-to-end, sign up on the deployed URL above and confirm the welcome/verification email arrives.', + } +}) diff --git a/layers/selfhost/server/db/schema.ts b/layers/selfhost/server/db/schema.ts new file mode 100644 index 00000000..325c2811 --- /dev/null +++ b/layers/selfhost/server/db/schema.ts @@ -0,0 +1,49 @@ +import type { InferSelect } from '~~/server/db/types' +import { index, integer, sqliteTable, text, uniqueIndex } from 'drizzle-orm/sqlite-core' +import { organizationTable, userTable } from '#layers/auth/server/db/schema' + +export const selfhostDeploymentTable = sqliteTable('selfhost_deployments', { + organization_id: text('organization_id').primaryKey().references(() => organizationTable.id, { onDelete: 'cascade' }), + cf_account_id: text('cf_account_id'), + cf_script_name: text('cf_script_name'), + workers_dev_url: text('workers_dev_url'), + deployed_version: text('deployed_version'), + deployed_at: integer('deployed_at', { mode: 'timestamp' }), + // CF API token, AES-GCM encrypted via authSecret. Never log, never return. + cf_token_ciphertext: text('cf_token_ciphertext'), + cf_token_iv: text('cf_token_iv'), + // Surfaces to UI for "token expires in N days" warning. From /user/tokens/verify. + cf_token_expires_at: integer('cf_token_expires_at', { mode: 'timestamp' }), + status: text('status', { enum: ['idle', 'deploying', 'deployed', 'failed'] }).notNull().default('idle'), + last_error: text('last_error'), +}) +export type SelfhostDeployment = InferSelect + +export const selfhostAuditTable = sqliteTable('selfhost_audit', { + id: text('id').primaryKey().notNull().$defaultFn(() => crypto.randomUUID()), + organization_id: text('organization_id').references(() => organizationTable.id, { onDelete: 'cascade' }).notNull(), + actor_user_id: text('actor_user_id').references(() => userTable.id, { onDelete: 'set null' }), + action: text('action', { enum: ['deploy', 'redeploy', 'disconnect'] }).notNull(), + success: integer('success', { mode: 'boolean' }).notNull(), + cf_account_id: text('cf_account_id'), + error_message: text('error_message'), + started_at: integer('started_at', { mode: 'timestamp' }).notNull().$defaultFn(() => new Date()), + finished_at: integer('finished_at', { mode: 'timestamp' }), +}, table => [ + index('selfhost_audit_org_idx').on(table.organization_id), + index('selfhost_audit_started_idx').on(table.started_at), +]) +export type SelfhostAudit = InferSelect + +export const selfhostDeploymentSecretTable = sqliteTable('selfhost_deployment_secrets', { + id: text('id').primaryKey().notNull().$defaultFn(() => crypto.randomUUID()), + organization_id: text('organization_id').references(() => organizationTable.id, { onDelete: 'cascade' }).notNull(), + key: text('key').notNull(), + ciphertext: text('ciphertext').notNull(), + iv: text('iv').notNull(), + created_at: integer('created_at', { mode: 'timestamp' }).notNull().$defaultFn(() => new Date()), + updated_at: integer('updated_at', { mode: 'timestamp' }).$defaultFn(() => new Date()).$onUpdate(() => new Date()), +}, table => [ + uniqueIndex('selfhost_secrets_org_key_unique').on(table.organization_id, table.key), +]) +export type SelfhostDeploymentSecret = InferSelect diff --git a/layers/selfhost/server/services/cloudflare.ts b/layers/selfhost/server/services/cloudflare.ts new file mode 100644 index 00000000..07a79fed --- /dev/null +++ b/layers/selfhost/server/services/cloudflare.ts @@ -0,0 +1,397 @@ +import { createError } from 'h3' + +const BASE = 'https://api.cloudflare.com/client/v4' + +interface CfEnvelope { success: boolean, result: T, errors?: { message: string }[] } + +async function cf(token: string, method: string, path: string, body?: unknown): Promise> { + const res = await fetch(`${BASE}${path}`, { + method, + headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: body ? JSON.stringify(body) : undefined, + }) + return res.json() as Promise> +} + +async function cfRaw(token: string, method: string, path: string, body?: unknown): Promise { + return fetch(`${BASE}${path}`, { + method, + headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: body ? JSON.stringify(body) : undefined, + }) +} + +export interface TokenInfo { + status: 'active' | 'disabled' | 'expired' + expires_on?: string | null +} + +export async function verifyToken(token: string): Promise { + const r = await cf(token, 'GET', '/user/tokens/verify') + if (r?.result?.status !== 'active') + throw createError({ statusCode: 400, statusMessage: 'Token is not active' }) + return r.result +} + +export interface CloudflareAccount { id: string, name: string } + +export async function listAccounts(token: string): Promise { + const r = await cf(token, 'GET', '/accounts') + if (!r?.result?.length) + throw createError({ statusCode: 400, statusMessage: 'Token has no account access' }) + return r.result.map(a => ({ id: a.id, name: a.name })) +} + +// Single-account convenience for tokens scoped to exactly one account. +export async function discoverAccount(token: string): Promise { + const accounts = await listAccounts(token) + return accounts[0]!.id +} + +// Write-capable capability probe. POSTs a sentinel resource then deletes it. +// A read-only token will fail POST with 403 even when GET returns 200, so a +// pure-read probe is insufficient — see plan §3.2. +export async function probeCapabilities(token: string, accountId: string): Promise { + const nonce = `_probe-${Date.now().toString(36)}` + const missing: string[] = [] + + // Workers Scripts: try a HEAD on the listing endpoint with write-like content-type. + // A pure POST creates a script which is overkill — list-with-write-perm is signalled by 200 on GET. + // Cloudflare returns 403 on GET for read-only tokens too, so we test PUT of an empty module then DELETE. + { + const form = new FormData() + form.append('metadata', new Blob([JSON.stringify({ main_module: 'index.mjs', compatibility_date: '2025-01-01' })], { type: 'application/json' })) + form.append('index.mjs', new Blob(['export default { fetch: () => new Response("") }'], { type: 'application/javascript+module' }), 'index.mjs') + const put = await fetch(`${BASE}/accounts/${accountId}/workers/scripts/${nonce}`, { + method: 'PUT', + headers: { Authorization: `Bearer ${token}` }, + body: form, + }) + if (put.status === 403) + missing.push('Workers Scripts') + else if (put.ok) + await cfRaw(token, 'DELETE', `/accounts/${accountId}/workers/scripts/${nonce}`) + } + + // D1 + { + const create = await cf<{ uuid: string }>(token, 'POST', `/accounts/${accountId}/d1/database`, { name: nonce }) + if (!create?.success && JSON.stringify(create).includes('forbidden')) + missing.push('D1') + else if (create?.success) + await cfRaw(token, 'DELETE', `/accounts/${accountId}/d1/database/${create.result.uuid}`) + } + + // KV + { + const create = await cf<{ id: string }>(token, 'POST', `/accounts/${accountId}/storage/kv/namespaces`, { title: nonce }) + if (!create?.success && JSON.stringify(create).includes('forbidden')) + missing.push('KV') + else if (create?.success) + await cfRaw(token, 'DELETE', `/accounts/${accountId}/storage/kv/namespaces/${create.result.id}`) + } + + // R2 — distinguish between (a) missing permission, (b) R2 not enabled on the account, (c) success. + { + const create = await cf(token, 'POST', `/accounts/${accountId}/r2/buckets`, { name: nonce }) + if (create?.success) { + await cfRaw(token, 'DELETE', `/accounts/${accountId}/r2/buckets/${nonce}`) + } + else { + const msg = JSON.stringify(create).toLowerCase() + if (msg.includes('forbidden')) + missing.push('R2') + else if (/not enabled|subscription|terms/.test(msg)) + missing.push('R2 (not enabled on account — accept R2 terms in CF dashboard first)') + } + } + + // Workers Subdomain: read-only is fine here; the actual enable happens at deploy time. + { + const sub = await cfRaw(token, 'GET', `/accounts/${accountId}/workers/subdomain`) + if (sub.status === 403) + missing.push('Workers Subdomain') + } + + return missing +} + +async function ensureResource(token: string, path: string, body: Record, idKey: string): Promise { + const create = await cf>(token, 'POST', path, body) + if (create?.success) + return create.result[idKey] as string + const list = await cf[]>(token, 'GET', path) + const found = list?.result?.find((r: Record) => r.name === body.name || r.title === body.title) + return (found?.[idKey] ?? null) as string | null +} + +export interface ProvisionedResources { dbId: string, kvId: string, bucketName: string } + +async function ensureR2Bucket(token: string, accountId: string, name: string): Promise { + const create = await cf(token, 'POST', `/accounts/${accountId}/r2/buckets`, { name }) + if (create?.success) + return + + // Already exists? R2's list response shape is { result: { buckets: [...] } }, not { result: [...] }. + const list = await cf<{ buckets?: { name: string }[] }>(token, 'GET', `/accounts/${accountId}/r2/buckets`) + const exists = list?.result?.buckets?.some(b => b.name === name) + if (exists) + return + + // Try to surface a useful reason. The most common cause is R2 not being enabled on the account + // (Cloudflare requires a one-time ToS acceptance + plan selection before any bucket can be created). + const firstError = create?.errors?.[0]?.message ?? 'Unknown reason' + const hint = /not enabled|subscription|terms/i.test(firstError) + ? ' — open the R2 dashboard and enable R2 (free tier is fine), then retry.' + : '' + throw createError({ statusCode: 502, statusMessage: `Failed to create R2 bucket '${name}': ${firstError}${hint}` }) +} + +export async function provisionResources(token: string, accountId: string, prefix = 'nuxt-template'): Promise { + const dbId = await ensureResource(token, `/accounts/${accountId}/d1/database`, { name: `${prefix}-db` }, 'uuid') + const kvId = await ensureResource(token, `/accounts/${accountId}/storage/kv/namespaces`, { title: `${prefix}-kv` }, 'id') + await ensureR2Bucket(token, accountId, `${prefix}-blob`) + + if (!dbId || !kvId) + throw createError({ statusCode: 502, statusMessage: 'Failed to provision required resources (D1 or KV)' }) + + return { dbId, kvId, bucketName: `${prefix}-blob` } +} + +export async function applyMigrations(token: string, accountId: string, dbId: string, migrations: { name: string, sql: string }[]): Promise { + await cf(token, 'POST', `/accounts/${accountId}/d1/database/${dbId}/query`, { + sql: 'CREATE TABLE IF NOT EXISTS d1_migrations (name TEXT PRIMARY KEY, applied_at TEXT)', + }) + + for (const m of migrations) { + const check = await cf<{ results: unknown[] }[]>(token, 'POST', `/accounts/${accountId}/d1/database/${dbId}/query`, { + sql: 'SELECT name FROM d1_migrations WHERE name = ?', + params: [m.name], + }) + if (check?.result?.[0]?.results?.length) + continue + await cf(token, 'POST', `/accounts/${accountId}/d1/database/${dbId}/query`, { sql: m.sql }) + await cf(token, 'POST', `/accounts/${accountId}/d1/database/${dbId}/query`, { + sql: `INSERT INTO d1_migrations (name, applied_at) VALUES (?, datetime())`, + params: [m.name], + }) + } +} + +export interface UploadWorkerBundle { + main: string + compatibilityDate: string + modules: Record +} + +const MIME_BY_EXT: Record = { + js: 'application/javascript', + mjs: 'application/javascript', + cjs: 'application/javascript', + css: 'text/css', + html: 'text/html; charset=utf-8', + htm: 'text/html; charset=utf-8', + json: 'application/json', + map: 'application/json', + txt: 'text/plain; charset=utf-8', + xml: 'application/xml', + svg: 'image/svg+xml', + png: 'image/png', + jpg: 'image/jpeg', + jpeg: 'image/jpeg', + gif: 'image/gif', + webp: 'image/webp', + avif: 'image/avif', + ico: 'image/x-icon', + woff: 'font/woff', + woff2: 'font/woff2', + ttf: 'font/ttf', + otf: 'font/otf', + eot: 'application/vnd.ms-fontobject', + wasm: 'application/wasm', + pdf: 'application/pdf', + webmanifest: 'application/manifest+json', +} + +function mimeFromPath(path: string): string { + const ext = path.split('.').pop()?.toLowerCase() ?? '' + return MIME_BY_EXT[ext] ?? 'application/octet-stream' +} + +// Uploads .output/public/* to Cloudflare Workers Static Assets and returns the completion JWT +// that uploadWorker must include in its metadata. Three-call protocol: start session → upload +// the buckets CF doesn't already have → final response carries the token to embed. +export async function uploadAssets( + token: string, + accountId: string, + scriptName: string, + assets: Record, +): Promise { + const entries = Object.entries(assets) + if (entries.length === 0) + return null + + const manifest: Record = {} + // Keep the original base64 keyed by hash — we ship base64 to CF anyway (?base64=true), so re-encoding + // (bytes → fromCharCode spread → btoa) is wasted CPU AND blows the V8 argument stack on files > ~64 KB. + const b64ByHash: Record = {} + // CF serves each asset back using the Content-Type we set during multipart upload, NOT the manifest + // path's extension. So we infer MIME here and pass it to the Blob. + const mimeByHash: Record = {} + for (const [path, b64] of entries) { + const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0)) + const hashBuf = await crypto.subtle.digest('SHA-256', bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer) + const hash = Array.from(new Uint8Array(hashBuf)).map(b => b.toString(16).padStart(2, '0')).join('').slice(0, 32) + manifest[path] = { hash, size: bytes.byteLength } + b64ByHash[hash] = b64 + mimeByHash[hash] = mimeFromPath(path) + } + + const session = await cf<{ jwt: string, buckets: string[][] }>( + token, + 'POST', + `/accounts/${accountId}/workers/scripts/${scriptName}/assets-upload-session`, + { manifest }, + ) + if (!session?.success || !session.result) + throw createError({ statusCode: 502, statusMessage: `Failed to start assets upload session: ${session?.errors?.[0]?.message ?? 'unknown'}` }) + + // If CF already has every file by hash, buckets will be empty arrays — we still need the JWT. + let completionJwt = session.result.jwt + const buckets = session.result.buckets ?? [] + + for (const bucket of buckets) { + if (bucket.length === 0) + continue + + const form = new FormData() + for (const hash of bucket) { + // CF expects the part to be the file's base64 content keyed by its hash; ?base64=true tells CF to decode it. + // The Blob's Content-Type is what CF will serve the file as later — so set it from the file's extension. + const b64 = b64ByHash[hash]! + const mime = mimeByHash[hash] ?? 'application/octet-stream' + form.append(hash, new Blob([b64], { type: mime }), hash) + } + + const res = await fetch(`${BASE}/accounts/${accountId}/workers/assets/upload?base64=true`, { + method: 'POST', + headers: { Authorization: `Bearer ${completionJwt}` }, + body: form, + }) + if (!res.ok) + throw createError({ statusCode: 502, statusMessage: `Asset bucket upload failed (${res.status}): ${await res.text()}` }) + + const data = await res.json() as { result?: { jwt?: string }, success: boolean } + // Only the last bucket's response carries the final completion token. + if (data.result?.jwt) + completionJwt = data.result.jwt + } + + return completionJwt +} + +export async function uploadWorker( + token: string, + accountId: string, + scriptName: string, + bundle: UploadWorkerBundle, + resources: ProvisionedResources, + version: string, + assetsJwt: string | null, +): Promise { + const form = new FormData() + const bindings: Array> = [ + { type: 'd1', name: 'DB', id: resources.dbId }, + { type: 'kv_namespace', name: 'KV', namespace_id: resources.kvId }, + { type: 'r2_bucket', name: 'BLOB', bucket_name: resources.bucketName }, + { type: 'plain_text', name: 'DEPLOYED_VERSION', text: version }, + ] + if (assetsJwt) + bindings.push({ type: 'assets', name: 'ASSETS' }) + + const metadata: Record = { + main_module: bundle.main, + compatibility_date: bundle.compatibilityDate, + compatibility_flags: ['nodejs_compat'], + bindings, + } + if (assetsJwt) { + metadata.assets = { + jwt: assetsJwt, + config: { html_handling: 'auto-trailing-slash', not_found_handling: 'single-page-application' }, + } + } + + form.append('metadata', new Blob([JSON.stringify(metadata)], { type: 'application/json' })) + + function b64decode(s: string): ArrayBuffer { + const bytes = Uint8Array.from(atob(s), c => c.charCodeAt(0)) + // Return a fresh ArrayBuffer slice so the Blob constructor accepts it (Uint8Array isn't assignable to BlobPart in strict TS). + return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer + } + + form.append(bundle.main, new Blob([b64decode(bundle.modules[bundle.main]!)], { type: 'application/javascript+module' }), bundle.main) + for (const [name, b64] of Object.entries(bundle.modules)) { + if (name !== bundle.main) + form.append(name, new Blob([b64decode(b64)], { type: 'application/javascript+module' }), name) + } + + const res = await fetch(`${BASE}/accounts/${accountId}/workers/scripts/${scriptName}`, { + method: 'PUT', + headers: { Authorization: `Bearer ${token}` }, + body: form, + }) + if (!res.ok) + throw createError({ statusCode: 502, statusMessage: `Worker upload failed: ${await res.text()}` }) +} + +export type CfSecretType = 'secret_text' | 'plain_text' + +export async function setWorkerSecret( + token: string, + accountId: string, + scriptName: string, + name: string, + value: string, + type: CfSecretType = 'secret_text', +): Promise { + const res = await cf(token, 'PUT', `/accounts/${accountId}/workers/scripts/${scriptName}/secrets`, { name, text: value, type }) + if (!res?.success) { + const msg = res?.errors?.[0]?.message ?? 'Unknown error' + throw createError({ statusCode: 502, statusMessage: `Failed to set worker secret ${name}: ${msg}` }) + } +} + +export async function listWorkerSecrets( + token: string, + accountId: string, + scriptName: string, +): Promise<{ name: string, type: string }[]> { + const res = await cf<{ name: string, type: string }[]>( + token, + 'GET', + `/accounts/${accountId}/workers/scripts/${scriptName}/secrets`, + ) + return res?.result ?? [] +} + +export async function deleteWorkerSecret( + token: string, + accountId: string, + scriptName: string, + name: string, +): Promise { + // 404 is fine (already gone); other 4xx/5xx should surface. + const res = await cfRaw(token, 'DELETE', `/accounts/${accountId}/workers/scripts/${scriptName}/secrets/${name}`) + if (!res.ok && res.status !== 404) + throw createError({ statusCode: 502, statusMessage: `Failed to delete worker secret ${name}: ${await res.text()}` }) +} + +export async function enableSubdomain(token: string, accountId: string, scriptName: string): Promise { + const sub = await cf<{ subdomain: string }>(token, 'GET', `/accounts/${accountId}/workers/subdomain`) + const subdomain = sub?.result?.subdomain + if (!subdomain) + throw createError({ statusCode: 400, statusMessage: 'No workers.dev subdomain configured for this account' }) + await cf(token, 'POST', `/accounts/${accountId}/workers/scripts/${scriptName}/subdomain`, { enabled: true }) + return `https://${scriptName}.${subdomain}.workers.dev` +} diff --git a/layers/selfhost/server/services/github.ts b/layers/selfhost/server/services/github.ts new file mode 100644 index 00000000..0596e51a --- /dev/null +++ b/layers/selfhost/server/services/github.ts @@ -0,0 +1,75 @@ +import { createError } from 'h3' + +export interface Bundle { + main: string + compatibilityDate: string + modules: Record + // Static frontend files from .output/public/, keyed by absolute path ("/_nuxt/foo.js"). Base64 encoded. + // Optional for backwards compatibility with older bundles that didn't include assets. + assets?: Record + migrations: { name: string, sql: string }[] + version: string +} + +interface GitHubAsset { name: string, browser_download_url: string, url: string } +interface GitHubRelease { tag_name: string, body?: string, assets?: GitHubAsset[] } + +async function sha256Hex(data: Uint8Array): Promise { + const hashBuffer = await crypto.subtle.digest('SHA-256', Uint8Array.from(data)) + return Array.from(new Uint8Array(hashBuffer)).map(b => b.toString(16).padStart(2, '0')).join('') +} + +function authHeaders(): Record { + const headers: Record = { + 'Accept': 'application/vnd.github+json', + 'X-GitHub-Api-Version': '2022-11-28', + 'User-Agent': 'nuxt-template-selfhost', + } + const token = useRuntimeConfig().githubToken + if (token) + headers.Authorization = `Bearer ${token}` + return headers +} + +async function fetchRelease(repo: string): Promise { + const res = await fetch(`https://api.github.com/repos/${repo}/releases/latest`, { headers: authHeaders() }) + if (!res.ok) + throw createError({ statusCode: res.status, statusMessage: `GitHub releases API ${res.status} ${res.statusText}` }) + return res.json() as Promise +} + +export async function getLatestBundle(repo: string): Promise<{ version: string, bundle: Bundle, sha256: string }> { + const rel = await fetchRelease(repo) + const asset = rel.assets?.find(a => a.name === 'bundle.json') + if (!asset) + throw createError({ statusCode: 404, statusMessage: 'No bundle.json found in latest release' }) + + // For private repos, the browser_download_url requires the same Authorization header; use the API URL with octet-stream Accept. + const token = useRuntimeConfig().githubToken + const downloadRes = token + ? await fetch(asset.url, { headers: { ...authHeaders(), Accept: 'application/octet-stream' } }) + : await fetch(asset.browser_download_url) + + if (!downloadRes.ok) + throw createError({ statusCode: 502, statusMessage: `Failed to download bundle: ${downloadRes.status}` }) + + const raw = new Uint8Array(await downloadRes.arrayBuffer()) + const sha256 = await sha256Hex(raw) + + // Verify SHA-256 if release body advertises one (`sha256:`). Mismatch is a tampering signal. + if (rel.body?.includes('sha256:') && !rel.body.includes(sha256)) + throw createError({ statusCode: 400, statusMessage: 'Bundle SHA-256 mismatch — possible tampering' }) + + const bundle = JSON.parse(new TextDecoder().decode(raw)) as Bundle + return { version: rel.tag_name, bundle, sha256 } +} + +export async function getLatestVersion(repo: string): Promise { + try { + const rel = await fetchRelease(repo) + return rel.tag_name ?? null + } + catch { + return null + } +} diff --git a/layers/selfhost/server/services/secrets.ts b/layers/selfhost/server/services/secrets.ts new file mode 100644 index 00000000..38cfa3a1 --- /dev/null +++ b/layers/selfhost/server/services/secrets.ts @@ -0,0 +1,80 @@ +export type CfSecretType = 'secret_text' | 'plain_text' + +export type AutoGenStrategy = 'random-hex-32' | 'derive-base-domain' | 'derive-ssl-enabled' | 'derive-release-repo' | null + +export interface SecretDef { + key: string + label: string + description: string + category: 'auth' | 'oauth' | 'smtp' | 'payments' | 'system' | 'support' + type: CfSecretType + auto: AutoGenStrategy +} + +// Catalog of every env var the deployed worker understands. Editing this list is the way to add support +// for new self-host config. `auto` entries are derived/generated at deploy time without user input. +export const SELFHOST_SECRET_CATALOG: SecretDef[] = [ + // System (auto-generated, stable across redeploys) + { key: 'NUXT_AUTH_SECRET', label: 'Auth signing secret', description: 'Used to encrypt session tokens. Stable across redeploys — rotating logs all users out.', category: 'system', type: 'secret_text', auto: 'random-hex-32' }, + { key: 'NUXT_WEBHOOK_SIGNING_SECRET', label: 'Webhook signing secret', description: 'HMAC key for outbound webhook signatures.', category: 'system', type: 'secret_text', auto: 'random-hex-32' }, + { key: 'NUXT_TASK_SECRET', label: 'Task bearer secret', description: 'Bearer guard for internal /api/tasks/** routes.', category: 'system', type: 'secret_text', auto: 'random-hex-32' }, + { key: 'NUXT_CRON_SECRET', label: 'Cron bearer secret', description: 'Bearer guard for /api/cron/** routes.', category: 'system', type: 'secret_text', auto: 'random-hex-32' }, + { key: 'NUXT_PUBLIC_BASE_DOMAIN', label: 'Public base domain', description: 'Derived from your workers.dev URL. Server-side reads only; client-side bundles use the build-time value.', category: 'system', type: 'secret_text', auto: 'derive-base-domain' }, + { key: 'NUXT_PUBLIC_SSL_ENABLED', label: 'SSL enabled flag', description: 'Always "true" for workers.dev deployments.', category: 'system', type: 'secret_text', auto: 'derive-ssl-enabled' }, + { key: 'NUXT_GITHUB_RELEASE_REPO', label: 'Release repo', description: 'OWNER/REPO that the deployed worker checks for self-updates.', category: 'system', type: 'secret_text', auto: 'derive-release-repo' }, + + // OAuth (user-provided) + { key: 'NUXT_GOOGLE_CLIENT_ID', label: 'Google OAuth client ID', description: 'From Google Cloud Console → Credentials. Whitelist your worker URL + /api/auth/google/callback.', category: 'oauth', type: 'secret_text', auto: null }, + { key: 'NUXT_GOOGLE_CLIENT_SECRET', label: 'Google OAuth client secret', description: 'Pairs with the client ID above.', category: 'oauth', type: 'secret_text', auto: null }, + { key: 'NUXT_GITHUB_CLIENT_ID', label: 'GitHub OAuth client ID', description: 'From GitHub Developer Settings → OAuth Apps. Whitelist your worker URL + /api/auth/github/callback.', category: 'oauth', type: 'secret_text', auto: null }, + { key: 'NUXT_GITHUB_CLIENT_SECRET', label: 'GitHub OAuth client secret', description: 'Pairs with the client ID above.', category: 'oauth', type: 'secret_text', auto: null }, + { key: 'NUXT_GITHUB_TOKEN', label: 'GitHub token (private repo updates)', description: 'PAT with contents:read. Only needed if your release repo is private.', category: 'oauth', type: 'secret_text', auto: null }, + + // SMTP (user-provided) + { key: 'NUXT_SMTP_HOST', label: 'SMTP host', description: 'e.g. smtp.resend.com, smtp.sendgrid.net.', category: 'smtp', type: 'secret_text', auto: null }, + { key: 'NUXT_SMTP_PORT', label: 'SMTP port', description: 'Typically 587 (STARTTLS) or 465 (SSL).', category: 'smtp', type: 'secret_text', auto: null }, + { key: 'NUXT_SMTP_USER', label: 'SMTP username', description: 'Often "apikey" for services like SendGrid/Resend.', category: 'smtp', type: 'secret_text', auto: null }, + { key: 'NUXT_SMTP_PASS', label: 'SMTP password / API key', description: 'The actual provider API key.', category: 'smtp', type: 'secret_text', auto: null }, + { key: 'NUXT_SMTP_FROM', label: 'From address', description: 'e.g. "MyApp ". Must be a verified sender.', category: 'smtp', type: 'secret_text', auto: null }, + + // Payments (user-provided) + { key: 'NUXT_SEPAY_TRANSACTION_PREFIX', label: 'Sepay transaction prefix', description: 'Used to identify your transactions in bank transfer descriptions.', category: 'payments', type: 'secret_text', auto: null }, + { key: 'NUXT_SEPAY_BANK_NUMBER', label: 'Sepay bank account number', description: 'Your bank account to receive payments.', category: 'payments', type: 'secret_text', auto: null }, + { key: 'NUXT_SEPAY_BANK_NAME', label: 'Sepay bank name', description: 'Bank short code, e.g. "VCB" for Vietcombank.', category: 'payments', type: 'secret_text', auto: null }, + + // Support + { key: 'NUXT_CUSTOMER_SUPPORT_EMAIL', label: 'Customer support email', description: 'Surfaces in support emails and the contact form.', category: 'support', type: 'secret_text', auto: null }, +] + +const SECRET_KEYS = new Set(SELFHOST_SECRET_CATALOG.map(d => d.key)) + +export function isKnownSecretKey(key: string): boolean { + return SECRET_KEYS.has(key) +} + +export function findSecretDef(key: string): SecretDef | undefined { + return SELFHOST_SECRET_CATALOG.find(d => d.key === key) +} + +export interface AutoGenContext { + workersDevUrl: string + releaseRepo: string +} + +export function generateAutoSecret(def: SecretDef, ctx: AutoGenContext): string | null { + switch (def.auto) { + case 'random-hex-32': { + const bytes = new Uint8Array(32) + crypto.getRandomValues(bytes) + return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('') + } + case 'derive-base-domain': + return new URL(ctx.workersDevUrl).host + case 'derive-ssl-enabled': + return 'true' + case 'derive-release-repo': + return ctx.releaseRepo + default: + return null + } +} diff --git a/layers/selfhost/shared/schemas/deploy.ts b/layers/selfhost/shared/schemas/deploy.ts new file mode 100644 index 00000000..5776c584 --- /dev/null +++ b/layers/selfhost/shared/schemas/deploy.ts @@ -0,0 +1,12 @@ +import { z } from 'zod' + +export const DeployBodySchema = z.object({ + token: z.string().min(20).max(200).optional(), + account_id: z.string().min(8).max(64).optional(), +}) +export type DeployBody = z.infer + +export const CfAccountsBodySchema = z.object({ + token: z.string().min(20).max(200), +}) +export type CfAccountsBody = z.infer diff --git a/layers/selfhost/shared/schemas/secret.ts b/layers/selfhost/shared/schemas/secret.ts new file mode 100644 index 00000000..6a0fd9e2 --- /dev/null +++ b/layers/selfhost/shared/schemas/secret.ts @@ -0,0 +1,14 @@ +import { z } from 'zod' + +export const PatchSecretsBodySchema = z.object({ + updates: z.array(z.object({ + key: z.string().min(1).max(128), + value: z.string().min(1).max(2000), + })).min(1).max(50), +}) +export type PatchSecretsBody = z.infer + +export const TestEmailBodySchema = z.object({ + to: z.string().email(), +}) +export type TestEmailBody = z.infer diff --git a/layers/selfhost/test/unit/cloudflare.test.ts b/layers/selfhost/test/unit/cloudflare.test.ts new file mode 100644 index 00000000..b96fbe48 --- /dev/null +++ b/layers/selfhost/test/unit/cloudflare.test.ts @@ -0,0 +1,250 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' + +vi.stubGlobal('createError', ({ statusCode, statusMessage }: { statusCode: number, statusMessage: string }) => + Object.assign(new Error(statusMessage), { statusCode })) + +describe('verifyToken', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('rejects a non-active token', async () => { + vi.mocked(fetch).mockResolvedValue({ json: async () => ({ result: { status: 'disabled' } }) } as Response) + const { verifyToken } = await import('#layers/selfhost/server/services/cloudflare') + await expect(verifyToken('bad')).rejects.toMatchObject({ statusCode: 400 }) + }) + + it('returns the token info for an active token', async () => { + vi.mocked(fetch).mockResolvedValue({ + json: async () => ({ result: { status: 'active', expires_on: '2030-01-01T00:00:00Z' } }), + } as Response) + const { verifyToken } = await import('#layers/selfhost/server/services/cloudflare') + const info = await verifyToken('good') + expect(info.status).toBe('active') + expect(info.expires_on).toBe('2030-01-01T00:00:00Z') + }) +}) + +describe('listAccounts / discoverAccount', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('listAccounts returns id+name pairs', async () => { + vi.mocked(fetch).mockResolvedValue({ + json: async () => ({ result: [{ id: 'acc-1', name: 'Personal' }, { id: 'acc-2', name: 'Work' }] }), + } as Response) + const { listAccounts } = await import('#layers/selfhost/server/services/cloudflare') + expect(await listAccounts('t')).toEqual([ + { id: 'acc-1', name: 'Personal' }, + { id: 'acc-2', name: 'Work' }, + ]) + }) + + it('discoverAccount returns the first account id', async () => { + vi.mocked(fetch).mockResolvedValue({ + json: async () => ({ result: [{ id: 'acc-1', name: 'Personal' }, { id: 'acc-2', name: 'Work' }] }), + } as Response) + const { discoverAccount } = await import('#layers/selfhost/server/services/cloudflare') + expect(await discoverAccount('t')).toBe('acc-1') + }) + + it('listAccounts throws when the token has no account access', async () => { + vi.mocked(fetch).mockResolvedValue({ json: async () => ({ result: [] }) } as Response) + const { listAccounts } = await import('#layers/selfhost/server/services/cloudflare') + await expect(listAccounts('t')).rejects.toMatchObject({ statusCode: 400 }) + }) +}) + +describe('probeCapabilities (write-probe)', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('reports Workers Scripts missing when PUT returns 403', async () => { + // Sequence: PUT script (403), POST d1 (success), DELETE d1, POST kv (success), DELETE kv, + // POST r2 (success), DELETE r2, GET workers subdomain (200) + let call = 0 + vi.mocked(fetch).mockImplementation(async (_url: string | URL | Request, init?: RequestInit) => { + call++ + const method = init?.method ?? 'GET' + // 1: PUT workers script → 403 + if (call === 1 && method === 'PUT') + return { status: 403, ok: false, json: async () => ({}), text: async () => 'forbidden' } as Response + // POSTs return success envelope + if (method === 'POST') + return { status: 200, ok: true, json: async () => ({ success: true, result: { uuid: 'x', id: 'x' } }), text: async () => '' } as Response + // DELETEs and the final GET subdomain + return { status: 200, ok: true, json: async () => ({ success: true, result: { subdomain: 'example' } }), text: async () => '' } as Response + }) + + const { probeCapabilities } = await import('#layers/selfhost/server/services/cloudflare') + const missing = await probeCapabilities('t', 'acc') + expect(missing).toContain('Workers Scripts') + }) + + it('returns empty array when every write-probe succeeds', async () => { + vi.mocked(fetch).mockImplementation(async (_url, init?: RequestInit) => { + const method = init?.method ?? 'GET' + if (method === 'PUT' || method === 'DELETE') + return { status: 200, ok: true, json: async () => ({}), text: async () => '' } as Response + if (method === 'POST') + return { status: 200, ok: true, json: async () => ({ success: true, result: { uuid: 'x', id: 'x' } }), text: async () => '' } as Response + return { status: 200, ok: true, json: async () => ({ success: true, result: { subdomain: 'example' } }), text: async () => '' } as Response + }) + const { probeCapabilities } = await import('#layers/selfhost/server/services/cloudflare') + expect(await probeCapabilities('t', 'acc')).toEqual([]) + }) + + it('reports D1 missing when POST is forbidden', async () => { + vi.mocked(fetch).mockImplementation(async (url, init?: RequestInit) => { + const method = init?.method ?? 'GET' + const urlStr = String(url) + if (method === 'PUT') + return { status: 200, ok: true, json: async () => ({}), text: async () => '' } as Response + if (method === 'POST' && urlStr.includes('/d1/database')) + return { status: 200, ok: true, json: async () => ({ success: false, errors: [{ message: 'forbidden' }] }), text: async () => '' } as Response + if (method === 'POST') + return { status: 200, ok: true, json: async () => ({ success: true, result: { uuid: 'x', id: 'x' } }), text: async () => '' } as Response + return { status: 200, ok: true, json: async () => ({ success: true, result: { subdomain: 'example' } }), text: async () => '' } as Response + }) + const { probeCapabilities } = await import('#layers/selfhost/server/services/cloudflare') + expect(await probeCapabilities('t', 'acc')).toContain('D1') + }) +}) + +describe('enableSubdomain', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('returns the workers.dev URL', async () => { + vi.mocked(fetch).mockResolvedValueOnce({ + json: async () => ({ success: true, result: { subdomain: 'my-sub' } }), + } as Response).mockResolvedValueOnce({ + json: async () => ({ success: true, result: {} }), + } as Response) + const { enableSubdomain } = await import('#layers/selfhost/server/services/cloudflare') + expect(await enableSubdomain('t', 'acc', 'my-script')).toBe('https://my-script.my-sub.workers.dev') + }) + + it('throws when no workers.dev subdomain is configured', async () => { + vi.mocked(fetch).mockResolvedValueOnce({ + json: async () => ({ success: true, result: { subdomain: null } }), + } as Response) + const { enableSubdomain } = await import('#layers/selfhost/server/services/cloudflare') + await expect(enableSubdomain('t', 'acc', 'my-script')).rejects.toMatchObject({ statusCode: 400 }) + }) +}) + +describe('uploadAssets', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('returns null when the assets map is empty', async () => { + const { uploadAssets } = await import('#layers/selfhost/server/services/cloudflare') + expect(await uploadAssets('t', 'acc', 'script', {})).toBeNull() + expect(vi.mocked(fetch)).not.toHaveBeenCalled() + }) + + it('starts a session, uploads buckets, and returns the final completion JWT', async () => { + let call = 0 + let bucketHashes: string[] = [] + vi.mocked(fetch).mockImplementation(async (_url, init?: RequestInit) => { + call++ + // 1: start session — reflect the manifest hashes back so the function can find them in fileByHash + if (call === 1) { + const body = JSON.parse((init?.body as string) ?? '{}') as { manifest: Record } + bucketHashes = Object.values(body.manifest).map(m => m.hash) + return { + ok: true, + status: 200, + json: async () => ({ success: true, result: { jwt: 'session-jwt', buckets: [bucketHashes] } }), + } as Response + } + // 2: bucket upload → completion JWT + return { + ok: true, + status: 200, + json: async () => ({ success: true, result: { jwt: 'completion-jwt' } }), + text: async () => '', + } as Response + }) + + const { uploadAssets } = await import('#layers/selfhost/server/services/cloudflare') + const result = await uploadAssets('t', 'acc', 'script', { + '/a.js': btoa('console.log(1)'), + '/b.css': btoa('body { color: red }'), + }) + expect(result).toBe('completion-jwt') + expect(bucketHashes).toHaveLength(2) + }) + + it('throws when the session call fails', async () => { + vi.mocked(fetch).mockResolvedValueOnce({ + ok: true, + status: 200, + json: async () => ({ success: false, errors: [{ message: 'invalid script name' }] }), + } as Response) + const { uploadAssets } = await import('#layers/selfhost/server/services/cloudflare') + await expect(uploadAssets('t', 'acc', 'script', { '/a.js': btoa('x') })) + .rejects + .toMatchObject({ statusCode: 502 }) + }) + + it('throws when a bucket upload returns non-2xx', async () => { + let call = 0 + vi.mocked(fetch).mockImplementation(async (_url, init?: RequestInit) => { + call++ + if (call === 1) { + const body = JSON.parse((init?.body as string) ?? '{}') as { manifest: Record } + const hashes = Object.values(body.manifest).map(m => m.hash) + return { + ok: true, + status: 200, + json: async () => ({ success: true, result: { jwt: 'session', buckets: [hashes] } }), + } as Response + } + return { ok: false, status: 413, text: async () => 'too big' } as Response + }) + const { uploadAssets } = await import('#layers/selfhost/server/services/cloudflare') + await expect(uploadAssets('t', 'acc', 'script', { '/a.js': btoa('x') })) + .rejects + .toMatchObject({ statusCode: 502 }) + }) +}) + +describe('applyMigrations', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('skips migrations that are already applied', async () => { + const calls: string[] = [] + vi.mocked(fetch).mockImplementation(async (_url, init?: RequestInit) => { + const body = JSON.parse((init?.body as string) ?? '{}') + calls.push(body.sql) + // First call: create tracker table (no result). Second call: check returns one row → already applied. + if (body.sql?.startsWith('SELECT name FROM d1_migrations')) + return { json: async () => ({ result: [{ results: [{ name: '0000_init' }] }] }) } as Response + return { json: async () => ({ success: true, result: [] }) } as Response + }) + const { applyMigrations } = await import('#layers/selfhost/server/services/cloudflare') + await applyMigrations('t', 'acc', 'db', [{ name: '0000_init', sql: 'CREATE TABLE foo (id TEXT)' }]) + // expect: create-tracker + check-applied (only two SQL queries; no INSERT, no migration SQL) + expect(calls).toHaveLength(2) + expect(calls[0]).toContain('CREATE TABLE IF NOT EXISTS d1_migrations') + expect(calls[1]).toContain('SELECT name FROM d1_migrations') + }) + + it('applies a new migration and records it', async () => { + const calls: string[] = [] + vi.mocked(fetch).mockImplementation(async (_url, init?: RequestInit) => { + const body = JSON.parse((init?.body as string) ?? '{}') + calls.push(body.sql) + if (body.sql?.startsWith('SELECT name FROM d1_migrations')) + return { json: async () => ({ result: [{ results: [] }] }) } as Response + return { json: async () => ({ success: true, result: [] }) } as Response + }) + const { applyMigrations } = await import('#layers/selfhost/server/services/cloudflare') + await applyMigrations('t', 'acc', 'db', [{ name: '0000_init', sql: 'CREATE TABLE foo (id TEXT)' }]) + expect(calls).toHaveLength(4) + expect(calls[2]).toBe('CREATE TABLE foo (id TEXT)') + expect(calls[3]).toContain('INSERT INTO d1_migrations') + }) +}) diff --git a/layers/selfhost/test/unit/github.test.ts b/layers/selfhost/test/unit/github.test.ts new file mode 100644 index 00000000..933c2bf2 --- /dev/null +++ b/layers/selfhost/test/unit/github.test.ts @@ -0,0 +1,168 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' + +vi.stubGlobal('createError', ({ statusCode, statusMessage }: { statusCode: number, statusMessage: string }) => + Object.assign(new Error(statusMessage), { statusCode })) + +const bundleFixture = { + main: 'index.mjs', + compatibilityDate: '2025-01-01', + modules: { 'index.mjs': 'aGVsbG8=' }, + migrations: [], + version: 'v1.0.0', +} + +async function sha256OfBytes(bytes: Uint8Array): Promise { + const buf = await crypto.subtle.digest('SHA-256', Uint8Array.from(bytes)) + return Array.from(new Uint8Array(buf)).map(b => b.toString(16).padStart(2, '0')).join('') +} + +describe('getLatestBundle', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('downloads via browser_download_url when no token is configured (public repo)', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ githubToken: '' })) + const bytes = new TextEncoder().encode(JSON.stringify(bundleFixture)) + vi.mocked(fetch) + .mockResolvedValueOnce({ + ok: true, + status: 200, + statusText: 'OK', + json: async () => ({ + tag_name: 'v1.0.0', + body: 'release notes', + assets: [{ name: 'bundle.json', browser_download_url: 'https://github.example/bundle.json', url: 'https://api.github.com/asset/1' }], + }), + } as Response) + .mockResolvedValueOnce({ + ok: true, + status: 200, + arrayBuffer: async () => bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), + } as Response) + + const { getLatestBundle } = await import('#layers/selfhost/server/services/github') + const { version, bundle } = await getLatestBundle('owner/repo') + expect(version).toBe('v1.0.0') + expect(bundle.main).toBe('index.mjs') + + const second = vi.mocked(fetch).mock.calls[1]! + expect(String(second[0])).toBe('https://github.example/bundle.json') + }) + + it('downloads via the API asset URL with Authorization when a token is configured (private repo)', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ githubToken: 'ghp_secret' })) + const bytes = new TextEncoder().encode(JSON.stringify(bundleFixture)) + vi.mocked(fetch) + .mockResolvedValueOnce({ + ok: true, + status: 200, + statusText: 'OK', + json: async () => ({ + tag_name: 'v1.0.0', + body: '', + assets: [{ name: 'bundle.json', browser_download_url: 'https://github.example/bundle.json', url: 'https://api.github.com/asset/1' }], + }), + } as Response) + .mockResolvedValueOnce({ + ok: true, + status: 200, + arrayBuffer: async () => bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), + } as Response) + + const { getLatestBundle } = await import('#layers/selfhost/server/services/github') + await getLatestBundle('owner/private') + + const calls = vi.mocked(fetch).mock.calls + expect(String(calls[1]![0])).toBe('https://api.github.com/asset/1') + const headers = (calls[1]![1] as RequestInit).headers as Record + expect(headers.Authorization).toBe('Bearer ghp_secret') + expect(headers.Accept).toBe('application/octet-stream') + }) + + it('throws on SHA-256 mismatch when the release body advertises one', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ githubToken: '' })) + const bytes = new TextEncoder().encode(JSON.stringify(bundleFixture)) + vi.mocked(fetch) + .mockResolvedValueOnce({ + ok: true, + status: 200, + statusText: 'OK', + json: async () => ({ + tag_name: 'v1.0.0', + body: 'sha256:0000000000000000000000000000000000000000000000000000000000000000', + assets: [{ name: 'bundle.json', browser_download_url: 'https://github.example/bundle.json', url: 'x' }], + }), + } as Response) + .mockResolvedValueOnce({ + ok: true, + status: 200, + arrayBuffer: async () => bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), + } as Response) + + const { getLatestBundle } = await import('#layers/selfhost/server/services/github') + await expect(getLatestBundle('owner/repo')).rejects.toMatchObject({ statusCode: 400 }) + }) + + it('passes SHA-256 verification when the body contains the matching hash', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ githubToken: '' })) + const bytes = new TextEncoder().encode(JSON.stringify(bundleFixture)) + const hash = await sha256OfBytes(bytes) + vi.mocked(fetch) + .mockResolvedValueOnce({ + ok: true, + status: 200, + statusText: 'OK', + json: async () => ({ + tag_name: 'v1.0.0', + body: `release notes\nsha256:${hash}`, + assets: [{ name: 'bundle.json', browser_download_url: 'https://github.example/bundle.json', url: 'x' }], + }), + } as Response) + .mockResolvedValueOnce({ + ok: true, + status: 200, + arrayBuffer: async () => bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), + } as Response) + + const { getLatestBundle } = await import('#layers/selfhost/server/services/github') + const result = await getLatestBundle('owner/repo') + expect(result.sha256).toBe(hash) + }) + + it('throws 404 when there is no bundle.json asset', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ githubToken: '' })) + vi.mocked(fetch).mockResolvedValueOnce({ + ok: true, + status: 200, + statusText: 'OK', + json: async () => ({ tag_name: 'v1.0.0', body: '', assets: [] }), + } as Response) + + const { getLatestBundle } = await import('#layers/selfhost/server/services/github') + await expect(getLatestBundle('owner/repo')).rejects.toMatchObject({ statusCode: 404 }) + }) +}) + +describe('getLatestVersion', () => { + beforeEach(() => vi.stubGlobal('fetch', vi.fn())) + afterEach(() => vi.unstubAllGlobals()) + + it('returns the tag_name', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ githubToken: '' })) + vi.mocked(fetch).mockResolvedValueOnce({ + ok: true, + status: 200, + statusText: 'OK', + json: async () => ({ tag_name: 'v2.5.0' }), + } as Response) + const { getLatestVersion } = await import('#layers/selfhost/server/services/github') + expect(await getLatestVersion('owner/repo')).toBe('v2.5.0') + }) + + it('returns null when the API fails', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ githubToken: '' })) + vi.mocked(fetch).mockResolvedValueOnce({ ok: false, status: 502, statusText: 'Bad Gateway' } as Response) + const { getLatestVersion } = await import('#layers/selfhost/server/services/github') + expect(await getLatestVersion('owner/repo')).toBeNull() + }) +}) diff --git a/nuxt.config.ts b/nuxt.config.ts index 2163b1a7..b8cac84a 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -222,6 +222,9 @@ export default defineNuxtConfig({ cronSecret: process.env.CRON_SECRET || '', customerSupportEmail: '', + + githubReleaseRepo: '', + githubToken: '', }, // Production-grade security applied uniformly across development, diff --git a/package.json b/package.json index 7de8a9b9..3361efb0 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "@layers/auth": "workspace:*", "@layers/product": "workspace:*", "@layers/project": "workspace:*", + "@layers/selfhost": "workspace:*", "@layers/system": "workspace:*", "@nuxt/a11y": "catalog:", "@nuxt/eslint": "catalog:", diff --git a/scripts/make-deploy-bundle.mjs b/scripts/make-deploy-bundle.mjs new file mode 100644 index 00000000..433e7b34 --- /dev/null +++ b/scripts/make-deploy-bundle.mjs @@ -0,0 +1,86 @@ +/** + * Build a self-deployable bundle.json from the Nitro output. + * Emits: bundle.json { main, compatibilityDate, modules:{name:b64}, migrations:[{name,sql}], version } + * Also computes a SHA-256 of the bundle bytes and writes it to bundle.sha256 + * so the release workflow can include it in the release body for tamper detection. + * + * Run after `pnpm build` with NITRO_PRESET=cloudflare-module. + * RELEASE_TAG env var is used as the version string. + */ + +import { createHash } from 'node:crypto' +import { readdir, readFile, writeFile } from 'node:fs/promises' +import { basename, extname, join } from 'node:path' + +const OUTPUT_DIR = '.output/server' +const PUBLIC_DIR = '.output/public' +const MIGRATIONS_DIR = 'server/db/migrations/sqlite' +const TAG = process.env.RELEASE_TAG ?? 'dev' + +async function getFiles(dir) { + const entries = await readdir(dir, { withFileTypes: true }).catch(() => []) + const files = [] + for (const e of entries) { + if (e.isDirectory()) + files.push(...await getFiles(join(dir, e.name))) + else files.push(join(dir, e.name)) + } + return files +} + +async function main() { + const allFiles = await getFiles(OUTPUT_DIR) + const modules = {} + let main = 'index.mjs' + + for (const f of allFiles) { + const name = f.replace(`${OUTPUT_DIR}/`, '').replace(`${OUTPUT_DIR}\\`, '') + if (extname(name) === '.mjs' || extname(name) === '.js') { + const content = await readFile(f) + modules[name] = content.toString('base64') + if (basename(name) === 'index.mjs') + main = name + } + } + + const migFiles = (await readdir(MIGRATIONS_DIR).catch(() => [])) + .filter(f => f.endsWith('.sql') && !f.startsWith('meta')) + .sort() + + const migrations = [] + for (const f of migFiles) { + const sql = await readFile(join(MIGRATIONS_DIR, f), 'utf-8') + migrations.push({ name: f.replace('.sql', ''), sql }) + } + + let compatibilityDate = '2025-01-01' + const wrangler = await readFile('wrangler.jsonc', 'utf-8').catch(() => '') + const match = wrangler.match(/"compatibility_date"\s*:\s*"([^"]+)"/) + if (match) + compatibilityDate = match[1] + + // Walk .output/public/ for the prebuilt frontend (CSS, JS, fonts, images). + // The deployed Worker serves these via the Cloudflare Workers Static Assets binding. + const assets = {} + const publicFiles = await getFiles(PUBLIC_DIR) + for (const f of publicFiles) { + const rel = `/${f.replace(`${PUBLIC_DIR}/`, '').replace(`${PUBLIC_DIR}\\`, '')}` + const content = await readFile(f) + assets[rel] = content.toString('base64') + } + + const bundle = { main, compatibilityDate, modules, assets, migrations, version: TAG } + const json = JSON.stringify(bundle) + await writeFile('bundle.json', json) + + const sha256 = createHash('sha256').update(json).digest('hex') + await writeFile('bundle.sha256', sha256) + + console.log(`bundle.json written: ${Object.keys(modules).length} modules, ${Object.keys(assets).length} assets, ${migrations.length} migrations, version ${TAG}`) + console.log(`sha256:${sha256}`) +} + +main().catch((e) => { + console.error(e) + process.exit(1) +}) diff --git a/server/db/migrations/sqlite/0016_aromatic_jack_murdock.sql b/server/db/migrations/sqlite/0016_aromatic_jack_murdock.sql new file mode 100644 index 00000000..9acf64fc --- /dev/null +++ b/server/db/migrations/sqlite/0016_aromatic_jack_murdock.sql @@ -0,0 +1,30 @@ +CREATE TABLE `selfhost_audit` ( + `id` text PRIMARY KEY NOT NULL, + `organization_id` text NOT NULL, + `actor_user_id` text, + `action` text NOT NULL, + `success` integer NOT NULL, + `cf_account_id` text, + `error_message` text, + `started_at` integer NOT NULL, + `finished_at` integer, + FOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade, + FOREIGN KEY (`actor_user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null +); +--> statement-breakpoint +CREATE INDEX `selfhost_audit_org_idx` ON `selfhost_audit` (`organization_id`);--> statement-breakpoint +CREATE INDEX `selfhost_audit_started_idx` ON `selfhost_audit` (`started_at`);--> statement-breakpoint +CREATE TABLE `selfhost_deployments` ( + `organization_id` text PRIMARY KEY NOT NULL, + `cf_account_id` text, + `cf_script_name` text, + `workers_dev_url` text, + `deployed_version` text, + `deployed_at` integer, + `cf_token_ciphertext` text, + `cf_token_iv` text, + `cf_token_expires_at` integer, + `status` text DEFAULT 'idle' NOT NULL, + `last_error` text, + FOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade +); diff --git a/server/db/migrations/sqlite/0017_brave_pete_wisdom.sql b/server/db/migrations/sqlite/0017_brave_pete_wisdom.sql new file mode 100644 index 00000000..262a62d7 --- /dev/null +++ b/server/db/migrations/sqlite/0017_brave_pete_wisdom.sql @@ -0,0 +1,12 @@ +CREATE TABLE `selfhost_deployment_secrets` ( + `id` text PRIMARY KEY NOT NULL, + `organization_id` text NOT NULL, + `key` text NOT NULL, + `ciphertext` text NOT NULL, + `iv` text NOT NULL, + `created_at` integer NOT NULL, + `updated_at` integer, + FOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +CREATE UNIQUE INDEX `selfhost_secrets_org_key_unique` ON `selfhost_deployment_secrets` (`organization_id`,`key`); diff --git a/server/db/migrations/sqlite/meta/0011_snapshot.json b/server/db/migrations/sqlite/meta/0011_snapshot.json index 84c134e8..77c1c368 100644 --- a/server/db/migrations/sqlite/meta/0011_snapshot.json +++ b/server/db/migrations/sqlite/meta/0011_snapshot.json @@ -1,1752 +1,1750 @@ -{ - "version": "6", - "dialect": "sqlite", - "id": "0011_drop_todos_add_products", - "prevId": "3eade0e3-e19d-44ef-bc18-f7e04a05d51f", - "tables": { - "activities": { - "name": "activities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action_ref_id": { - "name": "action_ref_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "test": { - "name": "test", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "activities_user_id_idx": { - "name": "activities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "activities_user_id_users_id_fk": { - "name": "activities_user_id_users_id_fk", - "tableFrom": "activities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "identities": { - "name": "identities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider": { - "name": "provider", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_user_id": { - "name": "provider_user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_data": { - "name": "provider_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "identities_user_id_idx": { - "name": "identities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "identities_provider_unique_idx": { - "name": "identities_provider_unique_idx", - "columns": [ - "provider", - "provider_user_id" - ], - "isUnique": true - } - }, - "foreignKeys": { - "identities_user_id_users_id_fk": { - "name": "identities_user_id_users_id_fk", - "tableFrom": "identities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "notifications": { - "name": "notifications", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "sender_name": { - "name": "sender_name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "is_read": { - "name": "is_read", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "dedupe_key": { - "name": "dedupe_key", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "notifications_user_org_idx": { - "name": "notifications_user_org_idx", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": false - }, - "notifications_created_idx": { - "name": "notifications_created_idx", - "columns": [ - "created_at" - ], - "isUnique": false - }, - "notifications_dedupe_idx": { - "name": "notifications_dedupe_idx", - "columns": [ - "user_id", - "organization_id", - "dedupe_key" - ], - "isUnique": true - } - }, - "foreignKeys": { - "notifications_organization_id_organizations_id_fk": { - "name": "notifications_organization_id_organizations_id_fk", - "tableFrom": "notifications", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "notifications_user_id_users_id_fk": { - "name": "notifications_user_id_users_id_fk", - "tableFrom": "notifications", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_credits": { - "name": "organization_credits", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "balance": { - "name": "balance", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": 0 - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "organization_credits_organization_id_organizations_id_fk": { - "name": "organization_credits_organization_id_organizations_id_fk", - "tableFrom": "organization_credits", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_invitations": { - "name": "organization_invitations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "email": { - "name": "email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "token": { - "name": "token", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "invited_by": { - "name": "invited_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "organization_invitations_token_unique": { - "name": "organization_invitations_token_unique", - "columns": [ - "token" - ], - "isUnique": true - }, - "org_invitations_org_idx": { - "name": "org_invitations_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "org_invitations_token_idx": { - "name": "org_invitations_token_idx", - "columns": [ - "token" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_invitations_organization_id_organizations_id_fk": { - "name": "organization_invitations_organization_id_organizations_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_invitations_role_id_roles_id_fk": { - "name": "organization_invitations_role_id_roles_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - }, - "organization_invitations_invited_by_users_id_fk": { - "name": "organization_invitations_invited_by_users_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "users", - "columnsFrom": [ - "invited_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_member_roles": { - "name": "organization_member_roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "member_id": { - "name": "member_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "member_roles_unique": { - "name": "member_roles_unique", - "columns": [ - "member_id", - "role_id" - ], - "isUnique": true - }, - "member_roles_member_idx": { - "name": "member_roles_member_idx", - "columns": [ - "member_id" - ], - "isUnique": false - }, - "member_roles_role_idx": { - "name": "member_roles_role_idx", - "columns": [ - "role_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_member_roles_member_id_organization_members_id_fk": { - "name": "organization_member_roles_member_id_organization_members_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "organization_members", - "columnsFrom": [ - "member_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_member_roles_role_id_roles_id_fk": { - "name": "organization_member_roles_role_id_roles_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_members": { - "name": "organization_members", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "abilities": { - "name": "abilities", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "org_members_user_org_unique": { - "name": "org_members_user_org_unique", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": true - }, - "org_members_org_idx": { - "name": "org_members_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_members_user_id_users_id_fk": { - "name": "organization_members_user_id_users_id_fk", - "tableFrom": "organization_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_members_organization_id_organizations_id_fk": { - "name": "organization_members_organization_id_organizations_id_fk", - "tableFrom": "organization_members", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organizations": { - "name": "organizations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "slug": { - "name": "slug", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "owner_id": { - "name": "owner_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_personal": { - "name": "is_personal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "organizations_slug_unique": { - "name": "organizations_slug_unique", - "columns": [ - "slug" - ], - "isUnique": true - }, - "organizations_is_system_idx": { - "name": "organizations_is_system_idx", - "columns": [ - "is_system" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organizations_owner_id_users_id_fk": { - "name": "organizations_owner_id_users_id_fk", - "tableFrom": "organizations", - "tableTo": "users", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "permissions": { - "name": "permissions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "key": { - "name": "key", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "scope": { - "name": "scope", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "org_kind": { - "name": "org_kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "permissions_key_unique": { - "name": "permissions_key_unique", - "columns": [ - "key" - ], - "isUnique": true - }, - "permissions_subject_idx": { - "name": "permissions_subject_idx", - "columns": [ - "subject" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "referrals": { - "name": "referrals", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "referrer_id": { - "name": "referrer_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "referee_id": { - "name": "referee_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "source": { - "name": "source", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'link'" - }, - "reward_paid": { - "name": "reward_paid", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "referrals_referee_unique": { - "name": "referrals_referee_unique", - "columns": [ - "referee_id" - ], - "isUnique": true - }, - "referrals_referrer_idx": { - "name": "referrals_referrer_idx", - "columns": [ - "referrer_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "referrals_referrer_id_users_id_fk": { - "name": "referrals_referrer_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referrer_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "referrals_referee_id_users_id_fk": { - "name": "referrals_referee_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referee_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "roles": { - "name": "roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "permissions": { - "name": "permissions", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "roles_org_name_unique": { - "name": "roles_org_name_unique", - "columns": [ - "organization_id", - "name" - ], - "isUnique": true - }, - "roles_org_idx": { - "name": "roles_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "roles_organization_id_organizations_id_fk": { - "name": "roles_organization_id_organizations_id_fk", - "tableFrom": "roles", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_ticket_messages": { - "name": "support_ticket_messages", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "ticket_id": { - "name": "ticket_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "author_id": { - "name": "author_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "author_role": { - "name": "author_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "support_ticket_messages_ticket_idx": { - "name": "support_ticket_messages_ticket_idx", - "columns": [ - "ticket_id", - "created_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_ticket_messages_ticket_id_support_tickets_id_fk": { - "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "support_tickets", - "columnsFrom": [ - "ticket_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_ticket_messages_author_id_users_id_fk": { - "name": "support_ticket_messages_author_id_users_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "users", - "columnsFrom": [ - "author_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_tickets": { - "name": "support_tickets", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "kind": { - "name": "kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "category": { - "name": "category", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'open'" - }, - "assigned_to": { - "name": "assigned_to", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "last_message_at": { - "name": "last_message_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "last_message_role": { - "name": "last_message_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'user'" - }, - "reminder_sent_at": { - "name": "reminder_sent_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "support_tickets_user_idx": { - "name": "support_tickets_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "support_tickets_status_idx": { - "name": "support_tickets_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "support_tickets_assigned_idx": { - "name": "support_tickets_assigned_idx", - "columns": [ - "assigned_to" - ], - "isUnique": false - }, - "support_tickets_reminder_idx": { - "name": "support_tickets_reminder_idx", - "columns": [ - "last_message_role", - "last_message_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_tickets_user_id_users_id_fk": { - "name": "support_tickets_user_id_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_organization_id_organizations_id_fk": { - "name": "support_tickets_organization_id_organizations_id_fk", - "tableFrom": "support_tickets", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_assigned_to_users_id_fk": { - "name": "support_tickets_assigned_to_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "assigned_to" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "transactions": { - "name": "transactions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'pending'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "gateway_ref": { - "name": "gateway_ref", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "sepay_event_id": { - "name": "sepay_event_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "transactions_gateway_ref_unique": { - "name": "transactions_gateway_ref_unique", - "columns": [ - "gateway_ref" - ], - "isUnique": true - }, - "transactions_sepay_event_id_unique": { - "name": "transactions_sepay_event_id_unique", - "columns": [ - "sepay_event_id" - ], - "isUnique": true - }, - "transactions_org_idx": { - "name": "transactions_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "transactions_status_idx": { - "name": "transactions_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "transactions_organization_id_organizations_id_fk": { - "name": "transactions_organization_id_organizations_id_fk", - "tableFrom": "transactions", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "transactions_user_id_users_id_fk": { - "name": "transactions_user_id_users_id_fk", - "tableFrom": "transactions", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "user_referrals": { - "name": "user_referrals", - "columns": { - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "code": { - "name": "code", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "user_referrals_code_unique": { - "name": "user_referrals_code_unique", - "columns": [ - "code" - ], - "isUnique": true - } - }, - "foreignKeys": { - "user_referrals_user_id_users_id_fk": { - "name": "user_referrals_user_id_users_id_fk", - "tableFrom": "user_referrals", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "users": { - "name": "users", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "username": { - "name": "username", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "primary_email": { - "name": "primary_email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "primary_phone": { - "name": "primary_phone", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "avatar": { - "name": "avatar", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "verified": { - "name": "verified", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "email_notifications": { - "name": "email_notifications", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": true - }, - "bio": { - "name": "bio", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notification_prefs": { - "name": "notification_prefs", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" - }, - "custom_data": { - "name": "custom_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "last_sign_in_at": { - "name": "last_sign_in_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_suspended": { - "name": "is_suspended", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "users_primary_email_unique": { - "name": "users_primary_email_unique", - "columns": [ - "primary_email" - ], - "isUnique": true - }, - "users_primary_phone_unique": { - "name": "users_primary_phone_unique", - "columns": [ - "primary_phone" - ], - "isUnique": true - }, - "users_username_idx": { - "name": "users_username_idx", - "columns": [ - "username" - ], - "isUnique": false - }, - "users_name_idx": { - "name": "users_name_idx", - "columns": [ - "name" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "products": { - "name": "products", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'one_time'" - }, - "price": { - "name": "price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "price_currency": { - "name": "price_currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "billing_interval": { - "name": "billing_interval", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "products_status_idx": { - "name": "products_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "products_type_idx": { - "name": "products_type_idx", - "columns": [ - "type" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - } - }, - "views": {}, - "enums": {}, - "_meta": { - "schemas": {}, - "tables": {}, - "columns": {} - }, - "internal": { - "indexes": {} - } -} \ No newline at end of file +{ + "version": "6", + "dialect": "sqlite", + "id": "d7e4ac83-fe45-4be2-a88e-85361ab8ed3d", + "prevId": "3eade0e3-e19d-44ef-bc18-f7e04a05d51f", + "tables": { + "activities": { + "name": "activities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action_ref_id": { + "name": "action_ref_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "test": { + "name": "test", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "activities_user_id_idx": { + "name": "activities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "activities_user_id_users_id_fk": { + "name": "activities_user_id_users_id_fk", + "tableFrom": "activities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "identities": { + "name": "identities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_user_id": { + "name": "provider_user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_data": { + "name": "provider_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "identities_user_id_idx": { + "name": "identities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "identities_provider_unique_idx": { + "name": "identities_provider_unique_idx", + "columns": [ + "provider", + "provider_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "identities_user_id_users_id_fk": { + "name": "identities_user_id_users_id_fk", + "tableFrom": "identities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "notifications": { + "name": "notifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sender_name": { + "name": "sender_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_read": { + "name": "is_read", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "notifications_user_org_idx": { + "name": "notifications_user_org_idx", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": false + }, + "notifications_created_idx": { + "name": "notifications_created_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "notifications_dedupe_idx": { + "name": "notifications_dedupe_idx", + "columns": [ + "user_id", + "organization_id", + "dedupe_key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "notifications_organization_id_organizations_id_fk": { + "name": "notifications_organization_id_organizations_id_fk", + "tableFrom": "notifications", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_credits": { + "name": "organization_credits", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "organization_credits_organization_id_organizations_id_fk": { + "name": "organization_credits_organization_id_organizations_id_fk", + "tableFrom": "organization_credits", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_invitations": { + "name": "organization_invitations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "organization_invitations_token_unique": { + "name": "organization_invitations_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "org_invitations_org_idx": { + "name": "org_invitations_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "org_invitations_token_idx": { + "name": "org_invitations_token_idx", + "columns": [ + "token" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_role_id_roles_id_fk": { + "name": "organization_invitations_role_id_roles_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_member_roles": { + "name": "organization_member_roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "member_roles_unique": { + "name": "member_roles_unique", + "columns": [ + "member_id", + "role_id" + ], + "isUnique": true + }, + "member_roles_member_idx": { + "name": "member_roles_member_idx", + "columns": [ + "member_id" + ], + "isUnique": false + }, + "member_roles_role_idx": { + "name": "member_roles_role_idx", + "columns": [ + "role_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_member_roles_member_id_organization_members_id_fk": { + "name": "organization_member_roles_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_member_roles_role_id_roles_id_fk": { + "name": "organization_member_roles_role_id_roles_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_members": { + "name": "organization_members", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "org_members_user_org_unique": { + "name": "org_members_user_org_unique", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": true + }, + "org_members_org_idx": { + "name": "org_members_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organizations": { + "name": "organizations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_personal": { + "name": "is_personal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "columns": [ + "slug" + ], + "isUnique": true + }, + "organizations_is_system_idx": { + "name": "organizations_is_system_idx", + "columns": [ + "is_system" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organizations_owner_id_users_id_fk": { + "name": "organizations_owner_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "permissions": { + "name": "permissions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "org_kind": { + "name": "org_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "permissions_key_unique": { + "name": "permissions_key_unique", + "columns": [ + "key" + ], + "isUnique": true + }, + "permissions_subject_idx": { + "name": "permissions_subject_idx", + "columns": [ + "subject" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "referrer_id": { + "name": "referrer_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referee_id": { + "name": "referee_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'link'" + }, + "reward_paid": { + "name": "reward_paid", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "referrals_referee_unique": { + "name": "referrals_referee_unique", + "columns": [ + "referee_id" + ], + "isUnique": true + }, + "referrals_referrer_idx": { + "name": "referrals_referrer_idx", + "columns": [ + "referrer_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "referrals_referrer_id_users_id_fk": { + "name": "referrals_referrer_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referrer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "referrals_referee_id_users_id_fk": { + "name": "referrals_referee_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referee_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "roles_org_name_unique": { + "name": "roles_org_name_unique", + "columns": [ + "organization_id", + "name" + ], + "isUnique": true + }, + "roles_org_idx": { + "name": "roles_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "roles_organization_id_organizations_id_fk": { + "name": "roles_organization_id_organizations_id_fk", + "tableFrom": "roles", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_ticket_messages": { + "name": "support_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "ticket_id": { + "name": "ticket_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "author_role": { + "name": "author_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "support_ticket_messages_ticket_idx": { + "name": "support_ticket_messages_ticket_idx", + "columns": [ + "ticket_id", + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_ticket_messages_ticket_id_support_tickets_id_fk": { + "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "support_tickets", + "columnsFrom": [ + "ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_ticket_messages_author_id_users_id_fk": { + "name": "support_ticket_messages_author_id_users_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "assigned_to": { + "name": "assigned_to", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "last_message_role": { + "name": "last_message_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "reminder_sent_at": { + "name": "reminder_sent_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "support_tickets_user_idx": { + "name": "support_tickets_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "support_tickets_status_idx": { + "name": "support_tickets_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "support_tickets_assigned_idx": { + "name": "support_tickets_assigned_idx", + "columns": [ + "assigned_to" + ], + "isUnique": false + }, + "support_tickets_reminder_idx": { + "name": "support_tickets_reminder_idx", + "columns": [ + "last_message_role", + "last_message_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_tickets_user_id_users_id_fk": { + "name": "support_tickets_user_id_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_organization_id_organizations_id_fk": { + "name": "support_tickets_organization_id_organizations_id_fk", + "tableFrom": "support_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_assigned_to_users_id_fk": { + "name": "support_tickets_assigned_to_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "assigned_to" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "transactions": { + "name": "transactions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gateway_ref": { + "name": "gateway_ref", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sepay_event_id": { + "name": "sepay_event_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "transactions_gateway_ref_unique": { + "name": "transactions_gateway_ref_unique", + "columns": [ + "gateway_ref" + ], + "isUnique": true + }, + "transactions_sepay_event_id_unique": { + "name": "transactions_sepay_event_id_unique", + "columns": [ + "sepay_event_id" + ], + "isUnique": true + }, + "transactions_org_idx": { + "name": "transactions_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "transactions_status_idx": { + "name": "transactions_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_organization_id_organizations_id_fk": { + "name": "transactions_organization_id_organizations_id_fk", + "tableFrom": "transactions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "transactions_user_id_users_id_fk": { + "name": "transactions_user_id_users_id_fk", + "tableFrom": "transactions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_referrals_code_unique": { + "name": "user_referrals_code_unique", + "columns": [ + "code" + ], + "isUnique": true + } + }, + "foreignKeys": { + "user_referrals_user_id_users_id_fk": { + "name": "user_referrals_user_id_users_id_fk", + "tableFrom": "user_referrals", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "primary_email": { + "name": "primary_email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "primary_phone": { + "name": "primary_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "bio": { + "name": "bio", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notification_prefs": { + "name": "notification_prefs", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" + }, + "custom_data": { + "name": "custom_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "last_sign_in_at": { + "name": "last_sign_in_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_primary_email_unique": { + "name": "users_primary_email_unique", + "columns": [ + "primary_email" + ], + "isUnique": true + }, + "users_primary_phone_unique": { + "name": "users_primary_phone_unique", + "columns": [ + "primary_phone" + ], + "isUnique": true + }, + "users_username_idx": { + "name": "users_username_idx", + "columns": [ + "username" + ], + "isUnique": false + }, + "users_name_idx": { + "name": "users_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "products": { + "name": "products", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'one_time'" + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price_currency": { + "name": "price_currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "billing_interval": { + "name": "billing_interval", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "products_status_idx": { + "name": "products_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "products_type_idx": { + "name": "products_type_idx", + "columns": [ + "type" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/server/db/migrations/sqlite/meta/0012_snapshot.json b/server/db/migrations/sqlite/meta/0012_snapshot.json index 83afe5a4..e8800bcb 100644 --- a/server/db/migrations/sqlite/meta/0012_snapshot.json +++ b/server/db/migrations/sqlite/meta/0012_snapshot.json @@ -1,2031 +1,2023 @@ -{ - "version": "6", - "dialect": "sqlite", - "id": "0012_project_layer", - "prevId": "0011_drop_todos_add_products", - "tables": { - "activities": { - "name": "activities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action_ref_id": { - "name": "action_ref_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "test": { - "name": "test", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "activities_user_id_idx": { - "name": "activities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "activities_user_id_users_id_fk": { - "name": "activities_user_id_users_id_fk", - "tableFrom": "activities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "identities": { - "name": "identities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider": { - "name": "provider", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_user_id": { - "name": "provider_user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_data": { - "name": "provider_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "identities_user_id_idx": { - "name": "identities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "identities_provider_unique_idx": { - "name": "identities_provider_unique_idx", - "columns": [ - "provider", - "provider_user_id" - ], - "isUnique": true - } - }, - "foreignKeys": { - "identities_user_id_users_id_fk": { - "name": "identities_user_id_users_id_fk", - "tableFrom": "identities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "notifications": { - "name": "notifications", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "sender_name": { - "name": "sender_name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "is_read": { - "name": "is_read", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "dedupe_key": { - "name": "dedupe_key", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "notifications_user_org_idx": { - "name": "notifications_user_org_idx", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": false - }, - "notifications_created_idx": { - "name": "notifications_created_idx", - "columns": [ - "created_at" - ], - "isUnique": false - }, - "notifications_dedupe_idx": { - "name": "notifications_dedupe_idx", - "columns": [ - "user_id", - "organization_id", - "dedupe_key" - ], - "isUnique": true - } - }, - "foreignKeys": { - "notifications_organization_id_organizations_id_fk": { - "name": "notifications_organization_id_organizations_id_fk", - "tableFrom": "notifications", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "notifications_user_id_users_id_fk": { - "name": "notifications_user_id_users_id_fk", - "tableFrom": "notifications", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_credits": { - "name": "organization_credits", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "balance": { - "name": "balance", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": 0 - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "organization_credits_organization_id_organizations_id_fk": { - "name": "organization_credits_organization_id_organizations_id_fk", - "tableFrom": "organization_credits", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_invitations": { - "name": "organization_invitations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "email": { - "name": "email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "token": { - "name": "token", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "invited_by": { - "name": "invited_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "project_ids": { - "name": "project_ids", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'[]'" - } - }, - "indexes": { - "organization_invitations_token_unique": { - "name": "organization_invitations_token_unique", - "columns": [ - "token" - ], - "isUnique": true - }, - "org_invitations_org_idx": { - "name": "org_invitations_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "org_invitations_token_idx": { - "name": "org_invitations_token_idx", - "columns": [ - "token" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_invitations_organization_id_organizations_id_fk": { - "name": "organization_invitations_organization_id_organizations_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_invitations_role_id_roles_id_fk": { - "name": "organization_invitations_role_id_roles_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - }, - "organization_invitations_invited_by_users_id_fk": { - "name": "organization_invitations_invited_by_users_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "users", - "columnsFrom": [ - "invited_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_member_roles": { - "name": "organization_member_roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "member_id": { - "name": "member_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "member_roles_unique": { - "name": "member_roles_unique", - "columns": [ - "member_id", - "role_id" - ], - "isUnique": true - }, - "member_roles_member_idx": { - "name": "member_roles_member_idx", - "columns": [ - "member_id" - ], - "isUnique": false - }, - "member_roles_role_idx": { - "name": "member_roles_role_idx", - "columns": [ - "role_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_member_roles_member_id_organization_members_id_fk": { - "name": "organization_member_roles_member_id_organization_members_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "organization_members", - "columnsFrom": [ - "member_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_member_roles_role_id_roles_id_fk": { - "name": "organization_member_roles_role_id_roles_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_members": { - "name": "organization_members", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "abilities": { - "name": "abilities", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "org_members_user_org_unique": { - "name": "org_members_user_org_unique", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": true - }, - "org_members_org_idx": { - "name": "org_members_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_members_user_id_users_id_fk": { - "name": "organization_members_user_id_users_id_fk", - "tableFrom": "organization_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_members_organization_id_organizations_id_fk": { - "name": "organization_members_organization_id_organizations_id_fk", - "tableFrom": "organization_members", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organizations": { - "name": "organizations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "slug": { - "name": "slug", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "owner_id": { - "name": "owner_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_personal": { - "name": "is_personal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "organizations_slug_unique": { - "name": "organizations_slug_unique", - "columns": [ - "slug" - ], - "isUnique": true - }, - "organizations_is_system_idx": { - "name": "organizations_is_system_idx", - "columns": [ - "is_system" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organizations_owner_id_users_id_fk": { - "name": "organizations_owner_id_users_id_fk", - "tableFrom": "organizations", - "tableTo": "users", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "permissions": { - "name": "permissions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "key": { - "name": "key", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "scope": { - "name": "scope", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "org_kind": { - "name": "org_kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "permissions_key_unique": { - "name": "permissions_key_unique", - "columns": [ - "key" - ], - "isUnique": true - }, - "permissions_subject_idx": { - "name": "permissions_subject_idx", - "columns": [ - "subject" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "referrals": { - "name": "referrals", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "referrer_id": { - "name": "referrer_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "referee_id": { - "name": "referee_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "source": { - "name": "source", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'link'" - }, - "reward_paid": { - "name": "reward_paid", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "referrals_referee_unique": { - "name": "referrals_referee_unique", - "columns": [ - "referee_id" - ], - "isUnique": true - }, - "referrals_referrer_idx": { - "name": "referrals_referrer_idx", - "columns": [ - "referrer_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "referrals_referrer_id_users_id_fk": { - "name": "referrals_referrer_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referrer_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "referrals_referee_id_users_id_fk": { - "name": "referrals_referee_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referee_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "roles": { - "name": "roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "permissions": { - "name": "permissions", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "roles_org_name_unique": { - "name": "roles_org_name_unique", - "columns": [ - "organization_id", - "name" - ], - "isUnique": true - }, - "roles_org_idx": { - "name": "roles_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "roles_organization_id_organizations_id_fk": { - "name": "roles_organization_id_organizations_id_fk", - "tableFrom": "roles", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_ticket_messages": { - "name": "support_ticket_messages", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "ticket_id": { - "name": "ticket_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "author_id": { - "name": "author_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "author_role": { - "name": "author_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "support_ticket_messages_ticket_idx": { - "name": "support_ticket_messages_ticket_idx", - "columns": [ - "ticket_id", - "created_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_ticket_messages_ticket_id_support_tickets_id_fk": { - "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "support_tickets", - "columnsFrom": [ - "ticket_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_ticket_messages_author_id_users_id_fk": { - "name": "support_ticket_messages_author_id_users_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "users", - "columnsFrom": [ - "author_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_tickets": { - "name": "support_tickets", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "kind": { - "name": "kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "category": { - "name": "category", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'open'" - }, - "assigned_to": { - "name": "assigned_to", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "last_message_at": { - "name": "last_message_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "last_message_role": { - "name": "last_message_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'user'" - }, - "reminder_sent_at": { - "name": "reminder_sent_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "support_tickets_user_idx": { - "name": "support_tickets_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "support_tickets_status_idx": { - "name": "support_tickets_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "support_tickets_assigned_idx": { - "name": "support_tickets_assigned_idx", - "columns": [ - "assigned_to" - ], - "isUnique": false - }, - "support_tickets_reminder_idx": { - "name": "support_tickets_reminder_idx", - "columns": [ - "last_message_role", - "last_message_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_tickets_user_id_users_id_fk": { - "name": "support_tickets_user_id_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_organization_id_organizations_id_fk": { - "name": "support_tickets_organization_id_organizations_id_fk", - "tableFrom": "support_tickets", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_assigned_to_users_id_fk": { - "name": "support_tickets_assigned_to_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "assigned_to" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "transactions": { - "name": "transactions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'pending'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "gateway_ref": { - "name": "gateway_ref", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "sepay_event_id": { - "name": "sepay_event_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "transactions_gateway_ref_unique": { - "name": "transactions_gateway_ref_unique", - "columns": [ - "gateway_ref" - ], - "isUnique": true - }, - "transactions_sepay_event_id_unique": { - "name": "transactions_sepay_event_id_unique", - "columns": [ - "sepay_event_id" - ], - "isUnique": true - }, - "transactions_org_idx": { - "name": "transactions_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "transactions_status_idx": { - "name": "transactions_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "transactions_organization_id_organizations_id_fk": { - "name": "transactions_organization_id_organizations_id_fk", - "tableFrom": "transactions", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "transactions_user_id_users_id_fk": { - "name": "transactions_user_id_users_id_fk", - "tableFrom": "transactions", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "user_referrals": { - "name": "user_referrals", - "columns": { - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "code": { - "name": "code", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "user_referrals_code_unique": { - "name": "user_referrals_code_unique", - "columns": [ - "code" - ], - "isUnique": true - } - }, - "foreignKeys": { - "user_referrals_user_id_users_id_fk": { - "name": "user_referrals_user_id_users_id_fk", - "tableFrom": "user_referrals", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "users": { - "name": "users", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "username": { - "name": "username", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "primary_email": { - "name": "primary_email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "primary_phone": { - "name": "primary_phone", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "avatar": { - "name": "avatar", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "verified": { - "name": "verified", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "email_notifications": { - "name": "email_notifications", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": true - }, - "bio": { - "name": "bio", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notification_prefs": { - "name": "notification_prefs", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" - }, - "custom_data": { - "name": "custom_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "last_sign_in_at": { - "name": "last_sign_in_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_suspended": { - "name": "is_suspended", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "users_primary_email_unique": { - "name": "users_primary_email_unique", - "columns": [ - "primary_email" - ], - "isUnique": true - }, - "users_primary_phone_unique": { - "name": "users_primary_phone_unique", - "columns": [ - "primary_phone" - ], - "isUnique": true - }, - "users_username_idx": { - "name": "users_username_idx", - "columns": [ - "username" - ], - "isUnique": false - }, - "users_name_idx": { - "name": "users_name_idx", - "columns": [ - "name" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "products": { - "name": "products", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'one_time'" - }, - "price": { - "name": "price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "price_currency": { - "name": "price_currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "billing_interval": { - "name": "billing_interval", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "products_status_idx": { - "name": "products_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "products_type_idx": { - "name": "products_type_idx", - "columns": [ - "type" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "projects": { - "name": "projects", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_by": { - "name": "created_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "projects_org_idx": { - "name": "projects_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "projects_status_idx": { - "name": "projects_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "projects_organization_id_organizations_id_fk": { - "name": "projects_organization_id_organizations_id_fk", - "tableFrom": "projects", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "projects_created_by_users_id_fk": { - "name": "projects_created_by_users_id_fk", - "tableFrom": "projects", - "tableTo": "users", - "columnsFrom": [ - "created_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_products": { - "name": "project_products", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "product_id": { - "name": "product_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "quantity": { - "name": "quantity", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "1" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "project_products_project_id_projects_id_fk": { - "name": "project_products_project_id_projects_id_fk", - "tableFrom": "project_products", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_products_product_id_products_id_fk": { - "name": "project_products_product_id_products_id_fk", - "tableFrom": "project_products", - "tableTo": "products", - "columnsFrom": [ - "product_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_products_project_id_product_id_pk": { - "name": "project_products_project_id_product_id_pk", - "columns": [ - "project_id", - "product_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_members": { - "name": "project_members", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role": { - "name": "role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'member'" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "project_members_user_idx": { - "name": "project_members_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "project_members_project_id_projects_id_fk": { - "name": "project_members_project_id_projects_id_fk", - "tableFrom": "project_members", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_members_user_id_users_id_fk": { - "name": "project_members_user_id_users_id_fk", - "tableFrom": "project_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_members_project_id_user_id_pk": { - "name": "project_members_project_id_user_id_pk", - "columns": [ - "project_id", - "user_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - } - }, - "views": {}, - "enums": {}, - "_meta": { - "schemas": {}, - "tables": {}, - "columns": {} - }, - "internal": { - "indexes": {} - } -} \ No newline at end of file +{ + "version": "6", + "dialect": "sqlite", + "id": "cc46cb43-ee36-41e5-8fcd-0e6f57928a69", + "prevId": "d7e4ac83-fe45-4be2-a88e-85361ab8ed3d", + "tables": { + "activities": { + "name": "activities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action_ref_id": { + "name": "action_ref_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "test": { + "name": "test", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "activities_user_id_idx": { + "name": "activities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "activities_user_id_users_id_fk": { + "name": "activities_user_id_users_id_fk", + "tableFrom": "activities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "identities": { + "name": "identities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_user_id": { + "name": "provider_user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_data": { + "name": "provider_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "identities_user_id_idx": { + "name": "identities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "identities_provider_unique_idx": { + "name": "identities_provider_unique_idx", + "columns": [ + "provider", + "provider_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "identities_user_id_users_id_fk": { + "name": "identities_user_id_users_id_fk", + "tableFrom": "identities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "notifications": { + "name": "notifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sender_name": { + "name": "sender_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_read": { + "name": "is_read", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "notifications_user_org_idx": { + "name": "notifications_user_org_idx", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": false + }, + "notifications_created_idx": { + "name": "notifications_created_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "notifications_dedupe_idx": { + "name": "notifications_dedupe_idx", + "columns": [ + "user_id", + "organization_id", + "dedupe_key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "notifications_organization_id_organizations_id_fk": { + "name": "notifications_organization_id_organizations_id_fk", + "tableFrom": "notifications", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_credits": { + "name": "organization_credits", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "organization_credits_organization_id_organizations_id_fk": { + "name": "organization_credits_organization_id_organizations_id_fk", + "tableFrom": "organization_credits", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_invitations": { + "name": "organization_invitations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "project_ids": { + "name": "project_ids", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + } + }, + "indexes": { + "organization_invitations_token_unique": { + "name": "organization_invitations_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "org_invitations_org_idx": { + "name": "org_invitations_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "org_invitations_token_idx": { + "name": "org_invitations_token_idx", + "columns": [ + "token" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_role_id_roles_id_fk": { + "name": "organization_invitations_role_id_roles_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_member_roles": { + "name": "organization_member_roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "member_roles_unique": { + "name": "member_roles_unique", + "columns": [ + "member_id", + "role_id" + ], + "isUnique": true + }, + "member_roles_member_idx": { + "name": "member_roles_member_idx", + "columns": [ + "member_id" + ], + "isUnique": false + }, + "member_roles_role_idx": { + "name": "member_roles_role_idx", + "columns": [ + "role_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_member_roles_member_id_organization_members_id_fk": { + "name": "organization_member_roles_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_member_roles_role_id_roles_id_fk": { + "name": "organization_member_roles_role_id_roles_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_members": { + "name": "organization_members", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "org_members_user_org_unique": { + "name": "org_members_user_org_unique", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": true + }, + "org_members_org_idx": { + "name": "org_members_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organizations": { + "name": "organizations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_personal": { + "name": "is_personal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "columns": [ + "slug" + ], + "isUnique": true + }, + "organizations_is_system_idx": { + "name": "organizations_is_system_idx", + "columns": [ + "is_system" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organizations_owner_id_users_id_fk": { + "name": "organizations_owner_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "permissions": { + "name": "permissions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "org_kind": { + "name": "org_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "permissions_key_unique": { + "name": "permissions_key_unique", + "columns": [ + "key" + ], + "isUnique": true + }, + "permissions_subject_idx": { + "name": "permissions_subject_idx", + "columns": [ + "subject" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "referrer_id": { + "name": "referrer_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referee_id": { + "name": "referee_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'link'" + }, + "reward_paid": { + "name": "reward_paid", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "referrals_referee_unique": { + "name": "referrals_referee_unique", + "columns": [ + "referee_id" + ], + "isUnique": true + }, + "referrals_referrer_idx": { + "name": "referrals_referrer_idx", + "columns": [ + "referrer_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "referrals_referrer_id_users_id_fk": { + "name": "referrals_referrer_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referrer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "referrals_referee_id_users_id_fk": { + "name": "referrals_referee_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referee_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "roles_org_name_unique": { + "name": "roles_org_name_unique", + "columns": [ + "organization_id", + "name" + ], + "isUnique": true + }, + "roles_org_idx": { + "name": "roles_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "roles_organization_id_organizations_id_fk": { + "name": "roles_organization_id_organizations_id_fk", + "tableFrom": "roles", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_ticket_messages": { + "name": "support_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "ticket_id": { + "name": "ticket_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "author_role": { + "name": "author_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "support_ticket_messages_ticket_idx": { + "name": "support_ticket_messages_ticket_idx", + "columns": [ + "ticket_id", + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_ticket_messages_ticket_id_support_tickets_id_fk": { + "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "support_tickets", + "columnsFrom": [ + "ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_ticket_messages_author_id_users_id_fk": { + "name": "support_ticket_messages_author_id_users_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "assigned_to": { + "name": "assigned_to", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "last_message_role": { + "name": "last_message_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "reminder_sent_at": { + "name": "reminder_sent_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "support_tickets_user_idx": { + "name": "support_tickets_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "support_tickets_status_idx": { + "name": "support_tickets_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "support_tickets_assigned_idx": { + "name": "support_tickets_assigned_idx", + "columns": [ + "assigned_to" + ], + "isUnique": false + }, + "support_tickets_reminder_idx": { + "name": "support_tickets_reminder_idx", + "columns": [ + "last_message_role", + "last_message_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_tickets_user_id_users_id_fk": { + "name": "support_tickets_user_id_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_organization_id_organizations_id_fk": { + "name": "support_tickets_organization_id_organizations_id_fk", + "tableFrom": "support_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_assigned_to_users_id_fk": { + "name": "support_tickets_assigned_to_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "assigned_to" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "transactions": { + "name": "transactions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gateway_ref": { + "name": "gateway_ref", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sepay_event_id": { + "name": "sepay_event_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "transactions_gateway_ref_unique": { + "name": "transactions_gateway_ref_unique", + "columns": [ + "gateway_ref" + ], + "isUnique": true + }, + "transactions_sepay_event_id_unique": { + "name": "transactions_sepay_event_id_unique", + "columns": [ + "sepay_event_id" + ], + "isUnique": true + }, + "transactions_org_idx": { + "name": "transactions_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "transactions_status_idx": { + "name": "transactions_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_organization_id_organizations_id_fk": { + "name": "transactions_organization_id_organizations_id_fk", + "tableFrom": "transactions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "transactions_user_id_users_id_fk": { + "name": "transactions_user_id_users_id_fk", + "tableFrom": "transactions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_referrals_code_unique": { + "name": "user_referrals_code_unique", + "columns": [ + "code" + ], + "isUnique": true + } + }, + "foreignKeys": { + "user_referrals_user_id_users_id_fk": { + "name": "user_referrals_user_id_users_id_fk", + "tableFrom": "user_referrals", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "primary_email": { + "name": "primary_email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "primary_phone": { + "name": "primary_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "bio": { + "name": "bio", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notification_prefs": { + "name": "notification_prefs", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" + }, + "custom_data": { + "name": "custom_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "last_sign_in_at": { + "name": "last_sign_in_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_primary_email_unique": { + "name": "users_primary_email_unique", + "columns": [ + "primary_email" + ], + "isUnique": true + }, + "users_primary_phone_unique": { + "name": "users_primary_phone_unique", + "columns": [ + "primary_phone" + ], + "isUnique": true + }, + "users_username_idx": { + "name": "users_username_idx", + "columns": [ + "username" + ], + "isUnique": false + }, + "users_name_idx": { + "name": "users_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "products": { + "name": "products", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'one_time'" + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price_currency": { + "name": "price_currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "billing_interval": { + "name": "billing_interval", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "products_status_idx": { + "name": "products_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "products_type_idx": { + "name": "products_type_idx", + "columns": [ + "type" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "projects": { + "name": "projects", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "projects_org_idx": { + "name": "projects_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "projects_status_idx": { + "name": "projects_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "projects_organization_id_organizations_id_fk": { + "name": "projects_organization_id_organizations_id_fk", + "tableFrom": "projects", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "projects_created_by_users_id_fk": { + "name": "projects_created_by_users_id_fk", + "tableFrom": "projects", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_products": { + "name": "project_products", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "project_products_project_id_projects_id_fk": { + "name": "project_products_project_id_projects_id_fk", + "tableFrom": "project_products", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_products_product_id_products_id_fk": { + "name": "project_products_product_id_products_id_fk", + "tableFrom": "project_products", + "tableTo": "products", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_products_project_id_product_id_pk": { + "name": "project_products_project_id_product_id_pk", + "columns": [ + "project_id", + "product_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_members": { + "name": "project_members", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'member'" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_members_user_idx": { + "name": "project_members_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "project_members_project_id_projects_id_fk": { + "name": "project_members_project_id_projects_id_fk", + "tableFrom": "project_members", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_members_user_id_users_id_fk": { + "name": "project_members_user_id_users_id_fk", + "tableFrom": "project_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_members_project_id_user_id_pk": { + "name": "project_members_project_id_user_id_pk", + "columns": [ + "project_id", + "user_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/server/db/migrations/sqlite/meta/0013_snapshot.json b/server/db/migrations/sqlite/meta/0013_snapshot.json index 5802bb73..a4bc5af4 100644 --- a/server/db/migrations/sqlite/meta/0013_snapshot.json +++ b/server/db/migrations/sqlite/meta/0013_snapshot.json @@ -1,2309 +1,2295 @@ -{ - "version": "6", - "dialect": "sqlite", - "id": "0013_invoice_billing", - "prevId": "0012_project_layer", - "tables": { - "activities": { - "name": "activities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action_ref_id": { - "name": "action_ref_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "test": { - "name": "test", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "activities_user_id_idx": { - "name": "activities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "activities_user_id_users_id_fk": { - "name": "activities_user_id_users_id_fk", - "tableFrom": "activities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "identities": { - "name": "identities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider": { - "name": "provider", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_user_id": { - "name": "provider_user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_data": { - "name": "provider_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "identities_user_id_idx": { - "name": "identities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "identities_provider_unique_idx": { - "name": "identities_provider_unique_idx", - "columns": [ - "provider", - "provider_user_id" - ], - "isUnique": true - } - }, - "foreignKeys": { - "identities_user_id_users_id_fk": { - "name": "identities_user_id_users_id_fk", - "tableFrom": "identities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "notifications": { - "name": "notifications", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "sender_name": { - "name": "sender_name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "is_read": { - "name": "is_read", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "dedupe_key": { - "name": "dedupe_key", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "notifications_user_org_idx": { - "name": "notifications_user_org_idx", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": false - }, - "notifications_created_idx": { - "name": "notifications_created_idx", - "columns": [ - "created_at" - ], - "isUnique": false - }, - "notifications_dedupe_idx": { - "name": "notifications_dedupe_idx", - "columns": [ - "user_id", - "organization_id", - "dedupe_key" - ], - "isUnique": true - } - }, - "foreignKeys": { - "notifications_organization_id_organizations_id_fk": { - "name": "notifications_organization_id_organizations_id_fk", - "tableFrom": "notifications", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "notifications_user_id_users_id_fk": { - "name": "notifications_user_id_users_id_fk", - "tableFrom": "notifications", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_credits": { - "name": "organization_credits", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "balance": { - "name": "balance", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": 0 - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "organization_credits_organization_id_organizations_id_fk": { - "name": "organization_credits_organization_id_organizations_id_fk", - "tableFrom": "organization_credits", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_invitations": { - "name": "organization_invitations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "email": { - "name": "email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "token": { - "name": "token", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "invited_by": { - "name": "invited_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "project_ids": { - "name": "project_ids", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'[]'" - } - }, - "indexes": { - "organization_invitations_token_unique": { - "name": "organization_invitations_token_unique", - "columns": [ - "token" - ], - "isUnique": true - }, - "org_invitations_org_idx": { - "name": "org_invitations_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "org_invitations_token_idx": { - "name": "org_invitations_token_idx", - "columns": [ - "token" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_invitations_organization_id_organizations_id_fk": { - "name": "organization_invitations_organization_id_organizations_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_invitations_role_id_roles_id_fk": { - "name": "organization_invitations_role_id_roles_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - }, - "organization_invitations_invited_by_users_id_fk": { - "name": "organization_invitations_invited_by_users_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "users", - "columnsFrom": [ - "invited_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_member_roles": { - "name": "organization_member_roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "member_id": { - "name": "member_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "member_roles_unique": { - "name": "member_roles_unique", - "columns": [ - "member_id", - "role_id" - ], - "isUnique": true - }, - "member_roles_member_idx": { - "name": "member_roles_member_idx", - "columns": [ - "member_id" - ], - "isUnique": false - }, - "member_roles_role_idx": { - "name": "member_roles_role_idx", - "columns": [ - "role_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_member_roles_member_id_organization_members_id_fk": { - "name": "organization_member_roles_member_id_organization_members_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "organization_members", - "columnsFrom": [ - "member_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_member_roles_role_id_roles_id_fk": { - "name": "organization_member_roles_role_id_roles_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_members": { - "name": "organization_members", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "abilities": { - "name": "abilities", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "org_members_user_org_unique": { - "name": "org_members_user_org_unique", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": true - }, - "org_members_org_idx": { - "name": "org_members_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_members_user_id_users_id_fk": { - "name": "organization_members_user_id_users_id_fk", - "tableFrom": "organization_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_members_organization_id_organizations_id_fk": { - "name": "organization_members_organization_id_organizations_id_fk", - "tableFrom": "organization_members", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organizations": { - "name": "organizations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "slug": { - "name": "slug", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "owner_id": { - "name": "owner_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_personal": { - "name": "is_personal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "organizations_slug_unique": { - "name": "organizations_slug_unique", - "columns": [ - "slug" - ], - "isUnique": true - }, - "organizations_is_system_idx": { - "name": "organizations_is_system_idx", - "columns": [ - "is_system" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organizations_owner_id_users_id_fk": { - "name": "organizations_owner_id_users_id_fk", - "tableFrom": "organizations", - "tableTo": "users", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "permissions": { - "name": "permissions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "key": { - "name": "key", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "scope": { - "name": "scope", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "org_kind": { - "name": "org_kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "permissions_key_unique": { - "name": "permissions_key_unique", - "columns": [ - "key" - ], - "isUnique": true - }, - "permissions_subject_idx": { - "name": "permissions_subject_idx", - "columns": [ - "subject" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "referrals": { - "name": "referrals", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "referrer_id": { - "name": "referrer_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "referee_id": { - "name": "referee_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "source": { - "name": "source", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'link'" - }, - "reward_paid": { - "name": "reward_paid", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "referrals_referee_unique": { - "name": "referrals_referee_unique", - "columns": [ - "referee_id" - ], - "isUnique": true - }, - "referrals_referrer_idx": { - "name": "referrals_referrer_idx", - "columns": [ - "referrer_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "referrals_referrer_id_users_id_fk": { - "name": "referrals_referrer_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referrer_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "referrals_referee_id_users_id_fk": { - "name": "referrals_referee_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referee_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "roles": { - "name": "roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "permissions": { - "name": "permissions", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "roles_org_name_unique": { - "name": "roles_org_name_unique", - "columns": [ - "organization_id", - "name" - ], - "isUnique": true - }, - "roles_org_idx": { - "name": "roles_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "roles_organization_id_organizations_id_fk": { - "name": "roles_organization_id_organizations_id_fk", - "tableFrom": "roles", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_ticket_messages": { - "name": "support_ticket_messages", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "ticket_id": { - "name": "ticket_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "author_id": { - "name": "author_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "author_role": { - "name": "author_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "support_ticket_messages_ticket_idx": { - "name": "support_ticket_messages_ticket_idx", - "columns": [ - "ticket_id", - "created_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_ticket_messages_ticket_id_support_tickets_id_fk": { - "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "support_tickets", - "columnsFrom": [ - "ticket_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_ticket_messages_author_id_users_id_fk": { - "name": "support_ticket_messages_author_id_users_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "users", - "columnsFrom": [ - "author_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_tickets": { - "name": "support_tickets", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "kind": { - "name": "kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "category": { - "name": "category", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'open'" - }, - "assigned_to": { - "name": "assigned_to", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "last_message_at": { - "name": "last_message_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "last_message_role": { - "name": "last_message_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'user'" - }, - "reminder_sent_at": { - "name": "reminder_sent_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "support_tickets_user_idx": { - "name": "support_tickets_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "support_tickets_status_idx": { - "name": "support_tickets_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "support_tickets_assigned_idx": { - "name": "support_tickets_assigned_idx", - "columns": [ - "assigned_to" - ], - "isUnique": false - }, - "support_tickets_reminder_idx": { - "name": "support_tickets_reminder_idx", - "columns": [ - "last_message_role", - "last_message_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_tickets_user_id_users_id_fk": { - "name": "support_tickets_user_id_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_organization_id_organizations_id_fk": { - "name": "support_tickets_organization_id_organizations_id_fk", - "tableFrom": "support_tickets", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_assigned_to_users_id_fk": { - "name": "support_tickets_assigned_to_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "assigned_to" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "transactions": { - "name": "transactions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'pending'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "gateway_ref": { - "name": "gateway_ref", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "sepay_event_id": { - "name": "sepay_event_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "transactions_gateway_ref_unique": { - "name": "transactions_gateway_ref_unique", - "columns": [ - "gateway_ref" - ], - "isUnique": true - }, - "transactions_sepay_event_id_unique": { - "name": "transactions_sepay_event_id_unique", - "columns": [ - "sepay_event_id" - ], - "isUnique": true - }, - "transactions_org_idx": { - "name": "transactions_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "transactions_status_idx": { - "name": "transactions_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "transactions_organization_id_organizations_id_fk": { - "name": "transactions_organization_id_organizations_id_fk", - "tableFrom": "transactions", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "transactions_user_id_users_id_fk": { - "name": "transactions_user_id_users_id_fk", - "tableFrom": "transactions", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "user_referrals": { - "name": "user_referrals", - "columns": { - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "code": { - "name": "code", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "user_referrals_code_unique": { - "name": "user_referrals_code_unique", - "columns": [ - "code" - ], - "isUnique": true - } - }, - "foreignKeys": { - "user_referrals_user_id_users_id_fk": { - "name": "user_referrals_user_id_users_id_fk", - "tableFrom": "user_referrals", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "users": { - "name": "users", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "username": { - "name": "username", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "primary_email": { - "name": "primary_email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "primary_phone": { - "name": "primary_phone", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "avatar": { - "name": "avatar", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "verified": { - "name": "verified", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "email_notifications": { - "name": "email_notifications", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": true - }, - "bio": { - "name": "bio", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notification_prefs": { - "name": "notification_prefs", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" - }, - "custom_data": { - "name": "custom_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "last_sign_in_at": { - "name": "last_sign_in_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_suspended": { - "name": "is_suspended", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "users_primary_email_unique": { - "name": "users_primary_email_unique", - "columns": [ - "primary_email" - ], - "isUnique": true - }, - "users_primary_phone_unique": { - "name": "users_primary_phone_unique", - "columns": [ - "primary_phone" - ], - "isUnique": true - }, - "users_username_idx": { - "name": "users_username_idx", - "columns": [ - "username" - ], - "isUnique": false - }, - "users_name_idx": { - "name": "users_name_idx", - "columns": [ - "name" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "products": { - "name": "products", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'one_time'" - }, - "price": { - "name": "price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "price_currency": { - "name": "price_currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "billing_interval": { - "name": "billing_interval", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "products_status_idx": { - "name": "products_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "products_type_idx": { - "name": "products_type_idx", - "columns": [ - "type" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "projects": { - "name": "projects", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_by": { - "name": "created_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "projects_org_idx": { - "name": "projects_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "projects_status_idx": { - "name": "projects_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "projects_organization_id_organizations_id_fk": { - "name": "projects_organization_id_organizations_id_fk", - "tableFrom": "projects", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "projects_created_by_users_id_fk": { - "name": "projects_created_by_users_id_fk", - "tableFrom": "projects", - "tableTo": "users", - "columnsFrom": [ - "created_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_products": { - "name": "project_products", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "product_id": { - "name": "product_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "quantity": { - "name": "quantity", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "1" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "project_products_project_id_projects_id_fk": { - "name": "project_products_project_id_projects_id_fk", - "tableFrom": "project_products", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_products_product_id_products_id_fk": { - "name": "project_products_product_id_products_id_fk", - "tableFrom": "project_products", - "tableTo": "products", - "columnsFrom": [ - "product_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_products_project_id_product_id_pk": { - "name": "project_products_project_id_product_id_pk", - "columns": [ - "project_id", - "product_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_members": { - "name": "project_members", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role": { - "name": "role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'member'" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "project_members_user_idx": { - "name": "project_members_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "project_members_project_id_projects_id_fk": { - "name": "project_members_project_id_projects_id_fk", - "tableFrom": "project_members", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_members_user_id_users_id_fk": { - "name": "project_members_user_id_users_id_fk", - "tableFrom": "project_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_members_project_id_user_id_pk": { - "name": "project_members_project_id_user_id_pk", - "columns": [ - "project_id", - "user_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "organization_billing_settings": { - "name": "organization_billing_settings", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "company_name": { - "name": "company_name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "tax_id": { - "name": "tax_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "address": { - "name": "address", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "city": { - "name": "city", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "country": { - "name": "country", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'US'" - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "invoices": { - "name": "invoices", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "number": { - "name": "number", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'draft'" - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "subtotal": { - "name": "subtotal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "tax": { - "name": "tax", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "total": { - "name": "total", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "issued_at": { - "name": "issued_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "due_at": { - "name": "due_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "paid_at": { - "name": "paid_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notes": { - "name": "notes", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "invoices_org_idx": { - "name": "invoices_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "invoices_status_idx": { - "name": "invoices_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": { - "invoices_number_unique": { - "name": "invoices_number_unique", - "columns": [ - "number" - ] - } - }, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "invoice_items": { - "name": "invoice_items", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "invoice_id": { - "name": "invoice_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "quantity": { - "name": "quantity", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "1" - }, - "unit_price": { - "name": "unit_price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "invoice_items_invoice_idx": { - "name": "invoice_items_invoice_idx", - "columns": [ - "invoice_id" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - } - }, - "views": {}, - "enums": {}, - "_meta": { - "schemas": {}, - "tables": {}, - "columns": {} - }, - "internal": { - "indexes": {} - } -} \ No newline at end of file +{ + "version": "6", + "dialect": "sqlite", + "id": "ded5f287-c90f-4ca2-aba6-bb24921acefe", + "prevId": "cc46cb43-ee36-41e5-8fcd-0e6f57928a69", + "tables": { + "activities": { + "name": "activities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action_ref_id": { + "name": "action_ref_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "test": { + "name": "test", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "activities_user_id_idx": { + "name": "activities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "activities_user_id_users_id_fk": { + "name": "activities_user_id_users_id_fk", + "tableFrom": "activities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "identities": { + "name": "identities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_user_id": { + "name": "provider_user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_data": { + "name": "provider_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "identities_user_id_idx": { + "name": "identities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "identities_provider_unique_idx": { + "name": "identities_provider_unique_idx", + "columns": [ + "provider", + "provider_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "identities_user_id_users_id_fk": { + "name": "identities_user_id_users_id_fk", + "tableFrom": "identities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "notifications": { + "name": "notifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sender_name": { + "name": "sender_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_read": { + "name": "is_read", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "notifications_user_org_idx": { + "name": "notifications_user_org_idx", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": false + }, + "notifications_created_idx": { + "name": "notifications_created_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "notifications_dedupe_idx": { + "name": "notifications_dedupe_idx", + "columns": [ + "user_id", + "organization_id", + "dedupe_key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "notifications_organization_id_organizations_id_fk": { + "name": "notifications_organization_id_organizations_id_fk", + "tableFrom": "notifications", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_credits": { + "name": "organization_credits", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "organization_credits_organization_id_organizations_id_fk": { + "name": "organization_credits_organization_id_organizations_id_fk", + "tableFrom": "organization_credits", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_invitations": { + "name": "organization_invitations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "project_ids": { + "name": "project_ids", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + } + }, + "indexes": { + "organization_invitations_token_unique": { + "name": "organization_invitations_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "org_invitations_org_idx": { + "name": "org_invitations_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "org_invitations_token_idx": { + "name": "org_invitations_token_idx", + "columns": [ + "token" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_role_id_roles_id_fk": { + "name": "organization_invitations_role_id_roles_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_member_roles": { + "name": "organization_member_roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "member_roles_unique": { + "name": "member_roles_unique", + "columns": [ + "member_id", + "role_id" + ], + "isUnique": true + }, + "member_roles_member_idx": { + "name": "member_roles_member_idx", + "columns": [ + "member_id" + ], + "isUnique": false + }, + "member_roles_role_idx": { + "name": "member_roles_role_idx", + "columns": [ + "role_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_member_roles_member_id_organization_members_id_fk": { + "name": "organization_member_roles_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_member_roles_role_id_roles_id_fk": { + "name": "organization_member_roles_role_id_roles_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_members": { + "name": "organization_members", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "org_members_user_org_unique": { + "name": "org_members_user_org_unique", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": true + }, + "org_members_org_idx": { + "name": "org_members_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organizations": { + "name": "organizations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_personal": { + "name": "is_personal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "columns": [ + "slug" + ], + "isUnique": true + }, + "organizations_is_system_idx": { + "name": "organizations_is_system_idx", + "columns": [ + "is_system" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organizations_owner_id_users_id_fk": { + "name": "organizations_owner_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "permissions": { + "name": "permissions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "org_kind": { + "name": "org_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "permissions_key_unique": { + "name": "permissions_key_unique", + "columns": [ + "key" + ], + "isUnique": true + }, + "permissions_subject_idx": { + "name": "permissions_subject_idx", + "columns": [ + "subject" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "referrer_id": { + "name": "referrer_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referee_id": { + "name": "referee_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'link'" + }, + "reward_paid": { + "name": "reward_paid", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "referrals_referee_unique": { + "name": "referrals_referee_unique", + "columns": [ + "referee_id" + ], + "isUnique": true + }, + "referrals_referrer_idx": { + "name": "referrals_referrer_idx", + "columns": [ + "referrer_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "referrals_referrer_id_users_id_fk": { + "name": "referrals_referrer_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referrer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "referrals_referee_id_users_id_fk": { + "name": "referrals_referee_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referee_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "roles_org_name_unique": { + "name": "roles_org_name_unique", + "columns": [ + "organization_id", + "name" + ], + "isUnique": true + }, + "roles_org_idx": { + "name": "roles_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "roles_organization_id_organizations_id_fk": { + "name": "roles_organization_id_organizations_id_fk", + "tableFrom": "roles", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_ticket_messages": { + "name": "support_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "ticket_id": { + "name": "ticket_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "author_role": { + "name": "author_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "support_ticket_messages_ticket_idx": { + "name": "support_ticket_messages_ticket_idx", + "columns": [ + "ticket_id", + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_ticket_messages_ticket_id_support_tickets_id_fk": { + "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "support_tickets", + "columnsFrom": [ + "ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_ticket_messages_author_id_users_id_fk": { + "name": "support_ticket_messages_author_id_users_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "assigned_to": { + "name": "assigned_to", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "last_message_role": { + "name": "last_message_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "reminder_sent_at": { + "name": "reminder_sent_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "support_tickets_user_idx": { + "name": "support_tickets_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "support_tickets_status_idx": { + "name": "support_tickets_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "support_tickets_assigned_idx": { + "name": "support_tickets_assigned_idx", + "columns": [ + "assigned_to" + ], + "isUnique": false + }, + "support_tickets_reminder_idx": { + "name": "support_tickets_reminder_idx", + "columns": [ + "last_message_role", + "last_message_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_tickets_user_id_users_id_fk": { + "name": "support_tickets_user_id_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_organization_id_organizations_id_fk": { + "name": "support_tickets_organization_id_organizations_id_fk", + "tableFrom": "support_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_assigned_to_users_id_fk": { + "name": "support_tickets_assigned_to_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "assigned_to" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "transactions": { + "name": "transactions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gateway_ref": { + "name": "gateway_ref", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sepay_event_id": { + "name": "sepay_event_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "transactions_gateway_ref_unique": { + "name": "transactions_gateway_ref_unique", + "columns": [ + "gateway_ref" + ], + "isUnique": true + }, + "transactions_sepay_event_id_unique": { + "name": "transactions_sepay_event_id_unique", + "columns": [ + "sepay_event_id" + ], + "isUnique": true + }, + "transactions_org_idx": { + "name": "transactions_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "transactions_status_idx": { + "name": "transactions_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_organization_id_organizations_id_fk": { + "name": "transactions_organization_id_organizations_id_fk", + "tableFrom": "transactions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "transactions_user_id_users_id_fk": { + "name": "transactions_user_id_users_id_fk", + "tableFrom": "transactions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_referrals_code_unique": { + "name": "user_referrals_code_unique", + "columns": [ + "code" + ], + "isUnique": true + } + }, + "foreignKeys": { + "user_referrals_user_id_users_id_fk": { + "name": "user_referrals_user_id_users_id_fk", + "tableFrom": "user_referrals", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "primary_email": { + "name": "primary_email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "primary_phone": { + "name": "primary_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "bio": { + "name": "bio", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notification_prefs": { + "name": "notification_prefs", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" + }, + "custom_data": { + "name": "custom_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "last_sign_in_at": { + "name": "last_sign_in_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_primary_email_unique": { + "name": "users_primary_email_unique", + "columns": [ + "primary_email" + ], + "isUnique": true + }, + "users_primary_phone_unique": { + "name": "users_primary_phone_unique", + "columns": [ + "primary_phone" + ], + "isUnique": true + }, + "users_username_idx": { + "name": "users_username_idx", + "columns": [ + "username" + ], + "isUnique": false + }, + "users_name_idx": { + "name": "users_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "products": { + "name": "products", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'one_time'" + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price_currency": { + "name": "price_currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "billing_interval": { + "name": "billing_interval", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "products_status_idx": { + "name": "products_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "products_type_idx": { + "name": "products_type_idx", + "columns": [ + "type" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "projects": { + "name": "projects", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "projects_org_idx": { + "name": "projects_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "projects_status_idx": { + "name": "projects_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "projects_organization_id_organizations_id_fk": { + "name": "projects_organization_id_organizations_id_fk", + "tableFrom": "projects", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "projects_created_by_users_id_fk": { + "name": "projects_created_by_users_id_fk", + "tableFrom": "projects", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_products": { + "name": "project_products", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "project_products_project_id_projects_id_fk": { + "name": "project_products_project_id_projects_id_fk", + "tableFrom": "project_products", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_products_product_id_products_id_fk": { + "name": "project_products_product_id_products_id_fk", + "tableFrom": "project_products", + "tableTo": "products", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_products_project_id_product_id_pk": { + "name": "project_products_project_id_product_id_pk", + "columns": [ + "project_id", + "product_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_members": { + "name": "project_members", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'member'" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_members_user_idx": { + "name": "project_members_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "project_members_project_id_projects_id_fk": { + "name": "project_members_project_id_projects_id_fk", + "tableFrom": "project_members", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_members_user_id_users_id_fk": { + "name": "project_members_user_id_users_id_fk", + "tableFrom": "project_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_members_project_id_user_id_pk": { + "name": "project_members_project_id_user_id_pk", + "columns": [ + "project_id", + "user_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_billing_settings": { + "name": "organization_billing_settings", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "company_name": { + "name": "company_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tax_id": { + "name": "tax_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'US'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invoices": { + "name": "invoices", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "number": { + "name": "number", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'draft'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "subtotal": { + "name": "subtotal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "tax": { + "name": "tax", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "total": { + "name": "total", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "issued_at": { + "name": "issued_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "due_at": { + "name": "due_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "paid_at": { + "name": "paid_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "invoices_org_idx": { + "name": "invoices_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "invoices_status_idx": { + "name": "invoices_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "invoices_number_unique": { + "name": "invoices_number_unique", + "columns": [ + "number" + ] + } + }, + "checkConstraints": {} + }, + "invoice_items": { + "name": "invoice_items", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "unit_price": { + "name": "unit_price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invoice_items_invoice_idx": { + "name": "invoice_items_invoice_idx", + "columns": [ + "invoice_id" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/server/db/migrations/sqlite/meta/0014_snapshot.json b/server/db/migrations/sqlite/meta/0014_snapshot.json index f180cf74..f1ff82d5 100644 --- a/server/db/migrations/sqlite/meta/0014_snapshot.json +++ b/server/db/migrations/sqlite/meta/0014_snapshot.json @@ -1,2309 +1,2295 @@ -{ - "version": "6", - "dialect": "sqlite", - "id": "0014_migrate_todo_abilities", - "prevId": "0013_invoice_billing", - "tables": { - "activities": { - "name": "activities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action_ref_id": { - "name": "action_ref_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "test": { - "name": "test", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "activities_user_id_idx": { - "name": "activities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "activities_user_id_users_id_fk": { - "name": "activities_user_id_users_id_fk", - "tableFrom": "activities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "identities": { - "name": "identities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider": { - "name": "provider", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_user_id": { - "name": "provider_user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_data": { - "name": "provider_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "identities_user_id_idx": { - "name": "identities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "identities_provider_unique_idx": { - "name": "identities_provider_unique_idx", - "columns": [ - "provider", - "provider_user_id" - ], - "isUnique": true - } - }, - "foreignKeys": { - "identities_user_id_users_id_fk": { - "name": "identities_user_id_users_id_fk", - "tableFrom": "identities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "notifications": { - "name": "notifications", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "sender_name": { - "name": "sender_name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "is_read": { - "name": "is_read", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "dedupe_key": { - "name": "dedupe_key", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "notifications_user_org_idx": { - "name": "notifications_user_org_idx", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": false - }, - "notifications_created_idx": { - "name": "notifications_created_idx", - "columns": [ - "created_at" - ], - "isUnique": false - }, - "notifications_dedupe_idx": { - "name": "notifications_dedupe_idx", - "columns": [ - "user_id", - "organization_id", - "dedupe_key" - ], - "isUnique": true - } - }, - "foreignKeys": { - "notifications_organization_id_organizations_id_fk": { - "name": "notifications_organization_id_organizations_id_fk", - "tableFrom": "notifications", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "notifications_user_id_users_id_fk": { - "name": "notifications_user_id_users_id_fk", - "tableFrom": "notifications", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_credits": { - "name": "organization_credits", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "balance": { - "name": "balance", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": 0 - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "organization_credits_organization_id_organizations_id_fk": { - "name": "organization_credits_organization_id_organizations_id_fk", - "tableFrom": "organization_credits", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_invitations": { - "name": "organization_invitations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "email": { - "name": "email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "token": { - "name": "token", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "invited_by": { - "name": "invited_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "project_ids": { - "name": "project_ids", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'[]'" - } - }, - "indexes": { - "organization_invitations_token_unique": { - "name": "organization_invitations_token_unique", - "columns": [ - "token" - ], - "isUnique": true - }, - "org_invitations_org_idx": { - "name": "org_invitations_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "org_invitations_token_idx": { - "name": "org_invitations_token_idx", - "columns": [ - "token" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_invitations_organization_id_organizations_id_fk": { - "name": "organization_invitations_organization_id_organizations_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_invitations_role_id_roles_id_fk": { - "name": "organization_invitations_role_id_roles_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - }, - "organization_invitations_invited_by_users_id_fk": { - "name": "organization_invitations_invited_by_users_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "users", - "columnsFrom": [ - "invited_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_member_roles": { - "name": "organization_member_roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "member_id": { - "name": "member_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "member_roles_unique": { - "name": "member_roles_unique", - "columns": [ - "member_id", - "role_id" - ], - "isUnique": true - }, - "member_roles_member_idx": { - "name": "member_roles_member_idx", - "columns": [ - "member_id" - ], - "isUnique": false - }, - "member_roles_role_idx": { - "name": "member_roles_role_idx", - "columns": [ - "role_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_member_roles_member_id_organization_members_id_fk": { - "name": "organization_member_roles_member_id_organization_members_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "organization_members", - "columnsFrom": [ - "member_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_member_roles_role_id_roles_id_fk": { - "name": "organization_member_roles_role_id_roles_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_members": { - "name": "organization_members", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "abilities": { - "name": "abilities", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "org_members_user_org_unique": { - "name": "org_members_user_org_unique", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": true - }, - "org_members_org_idx": { - "name": "org_members_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_members_user_id_users_id_fk": { - "name": "organization_members_user_id_users_id_fk", - "tableFrom": "organization_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_members_organization_id_organizations_id_fk": { - "name": "organization_members_organization_id_organizations_id_fk", - "tableFrom": "organization_members", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organizations": { - "name": "organizations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "slug": { - "name": "slug", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "owner_id": { - "name": "owner_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_personal": { - "name": "is_personal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "organizations_slug_unique": { - "name": "organizations_slug_unique", - "columns": [ - "slug" - ], - "isUnique": true - }, - "organizations_is_system_idx": { - "name": "organizations_is_system_idx", - "columns": [ - "is_system" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organizations_owner_id_users_id_fk": { - "name": "organizations_owner_id_users_id_fk", - "tableFrom": "organizations", - "tableTo": "users", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "permissions": { - "name": "permissions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "key": { - "name": "key", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "scope": { - "name": "scope", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "org_kind": { - "name": "org_kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "permissions_key_unique": { - "name": "permissions_key_unique", - "columns": [ - "key" - ], - "isUnique": true - }, - "permissions_subject_idx": { - "name": "permissions_subject_idx", - "columns": [ - "subject" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "referrals": { - "name": "referrals", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "referrer_id": { - "name": "referrer_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "referee_id": { - "name": "referee_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "source": { - "name": "source", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'link'" - }, - "reward_paid": { - "name": "reward_paid", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "referrals_referee_unique": { - "name": "referrals_referee_unique", - "columns": [ - "referee_id" - ], - "isUnique": true - }, - "referrals_referrer_idx": { - "name": "referrals_referrer_idx", - "columns": [ - "referrer_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "referrals_referrer_id_users_id_fk": { - "name": "referrals_referrer_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referrer_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "referrals_referee_id_users_id_fk": { - "name": "referrals_referee_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referee_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "roles": { - "name": "roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "permissions": { - "name": "permissions", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "roles_org_name_unique": { - "name": "roles_org_name_unique", - "columns": [ - "organization_id", - "name" - ], - "isUnique": true - }, - "roles_org_idx": { - "name": "roles_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "roles_organization_id_organizations_id_fk": { - "name": "roles_organization_id_organizations_id_fk", - "tableFrom": "roles", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_ticket_messages": { - "name": "support_ticket_messages", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "ticket_id": { - "name": "ticket_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "author_id": { - "name": "author_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "author_role": { - "name": "author_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "support_ticket_messages_ticket_idx": { - "name": "support_ticket_messages_ticket_idx", - "columns": [ - "ticket_id", - "created_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_ticket_messages_ticket_id_support_tickets_id_fk": { - "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "support_tickets", - "columnsFrom": [ - "ticket_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_ticket_messages_author_id_users_id_fk": { - "name": "support_ticket_messages_author_id_users_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "users", - "columnsFrom": [ - "author_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_tickets": { - "name": "support_tickets", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "kind": { - "name": "kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "category": { - "name": "category", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'open'" - }, - "assigned_to": { - "name": "assigned_to", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "last_message_at": { - "name": "last_message_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "last_message_role": { - "name": "last_message_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'user'" - }, - "reminder_sent_at": { - "name": "reminder_sent_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "support_tickets_user_idx": { - "name": "support_tickets_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "support_tickets_status_idx": { - "name": "support_tickets_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "support_tickets_assigned_idx": { - "name": "support_tickets_assigned_idx", - "columns": [ - "assigned_to" - ], - "isUnique": false - }, - "support_tickets_reminder_idx": { - "name": "support_tickets_reminder_idx", - "columns": [ - "last_message_role", - "last_message_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_tickets_user_id_users_id_fk": { - "name": "support_tickets_user_id_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_organization_id_organizations_id_fk": { - "name": "support_tickets_organization_id_organizations_id_fk", - "tableFrom": "support_tickets", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_assigned_to_users_id_fk": { - "name": "support_tickets_assigned_to_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "assigned_to" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "transactions": { - "name": "transactions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'pending'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "gateway_ref": { - "name": "gateway_ref", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "sepay_event_id": { - "name": "sepay_event_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "transactions_gateway_ref_unique": { - "name": "transactions_gateway_ref_unique", - "columns": [ - "gateway_ref" - ], - "isUnique": true - }, - "transactions_sepay_event_id_unique": { - "name": "transactions_sepay_event_id_unique", - "columns": [ - "sepay_event_id" - ], - "isUnique": true - }, - "transactions_org_idx": { - "name": "transactions_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "transactions_status_idx": { - "name": "transactions_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "transactions_organization_id_organizations_id_fk": { - "name": "transactions_organization_id_organizations_id_fk", - "tableFrom": "transactions", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "transactions_user_id_users_id_fk": { - "name": "transactions_user_id_users_id_fk", - "tableFrom": "transactions", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "user_referrals": { - "name": "user_referrals", - "columns": { - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "code": { - "name": "code", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "user_referrals_code_unique": { - "name": "user_referrals_code_unique", - "columns": [ - "code" - ], - "isUnique": true - } - }, - "foreignKeys": { - "user_referrals_user_id_users_id_fk": { - "name": "user_referrals_user_id_users_id_fk", - "tableFrom": "user_referrals", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "users": { - "name": "users", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "username": { - "name": "username", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "primary_email": { - "name": "primary_email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "primary_phone": { - "name": "primary_phone", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "avatar": { - "name": "avatar", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "verified": { - "name": "verified", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "email_notifications": { - "name": "email_notifications", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": true - }, - "bio": { - "name": "bio", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notification_prefs": { - "name": "notification_prefs", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" - }, - "custom_data": { - "name": "custom_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "last_sign_in_at": { - "name": "last_sign_in_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_suspended": { - "name": "is_suspended", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "users_primary_email_unique": { - "name": "users_primary_email_unique", - "columns": [ - "primary_email" - ], - "isUnique": true - }, - "users_primary_phone_unique": { - "name": "users_primary_phone_unique", - "columns": [ - "primary_phone" - ], - "isUnique": true - }, - "users_username_idx": { - "name": "users_username_idx", - "columns": [ - "username" - ], - "isUnique": false - }, - "users_name_idx": { - "name": "users_name_idx", - "columns": [ - "name" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "products": { - "name": "products", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'one_time'" - }, - "price": { - "name": "price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "price_currency": { - "name": "price_currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "billing_interval": { - "name": "billing_interval", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "products_status_idx": { - "name": "products_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "products_type_idx": { - "name": "products_type_idx", - "columns": [ - "type" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "projects": { - "name": "projects", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_by": { - "name": "created_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "projects_org_idx": { - "name": "projects_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "projects_status_idx": { - "name": "projects_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "projects_organization_id_organizations_id_fk": { - "name": "projects_organization_id_organizations_id_fk", - "tableFrom": "projects", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "projects_created_by_users_id_fk": { - "name": "projects_created_by_users_id_fk", - "tableFrom": "projects", - "tableTo": "users", - "columnsFrom": [ - "created_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_products": { - "name": "project_products", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "product_id": { - "name": "product_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "quantity": { - "name": "quantity", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "1" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "project_products_project_id_projects_id_fk": { - "name": "project_products_project_id_projects_id_fk", - "tableFrom": "project_products", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_products_product_id_products_id_fk": { - "name": "project_products_product_id_products_id_fk", - "tableFrom": "project_products", - "tableTo": "products", - "columnsFrom": [ - "product_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_products_project_id_product_id_pk": { - "name": "project_products_project_id_product_id_pk", - "columns": [ - "project_id", - "product_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_members": { - "name": "project_members", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role": { - "name": "role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'member'" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "project_members_user_idx": { - "name": "project_members_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "project_members_project_id_projects_id_fk": { - "name": "project_members_project_id_projects_id_fk", - "tableFrom": "project_members", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_members_user_id_users_id_fk": { - "name": "project_members_user_id_users_id_fk", - "tableFrom": "project_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_members_project_id_user_id_pk": { - "name": "project_members_project_id_user_id_pk", - "columns": [ - "project_id", - "user_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "organization_billing_settings": { - "name": "organization_billing_settings", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "company_name": { - "name": "company_name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "tax_id": { - "name": "tax_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "address": { - "name": "address", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "city": { - "name": "city", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "country": { - "name": "country", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'US'" - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "invoices": { - "name": "invoices", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "number": { - "name": "number", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'draft'" - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "subtotal": { - "name": "subtotal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "tax": { - "name": "tax", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "total": { - "name": "total", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "issued_at": { - "name": "issued_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "due_at": { - "name": "due_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "paid_at": { - "name": "paid_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notes": { - "name": "notes", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "invoices_org_idx": { - "name": "invoices_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "invoices_status_idx": { - "name": "invoices_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": { - "invoices_number_unique": { - "name": "invoices_number_unique", - "columns": [ - "number" - ] - } - }, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "invoice_items": { - "name": "invoice_items", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "invoice_id": { - "name": "invoice_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "quantity": { - "name": "quantity", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "1" - }, - "unit_price": { - "name": "unit_price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "invoice_items_invoice_idx": { - "name": "invoice_items_invoice_idx", - "columns": [ - "invoice_id" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - } - }, - "views": {}, - "enums": {}, - "_meta": { - "schemas": {}, - "tables": {}, - "columns": {} - }, - "internal": { - "indexes": {} - } -} \ No newline at end of file +{ + "version": "6", + "dialect": "sqlite", + "id": "f8422c2e-9f3c-4c99-a9b6-7c915267f490", + "prevId": "ded5f287-c90f-4ca2-aba6-bb24921acefe", + "tables": { + "activities": { + "name": "activities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action_ref_id": { + "name": "action_ref_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "test": { + "name": "test", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "activities_user_id_idx": { + "name": "activities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "activities_user_id_users_id_fk": { + "name": "activities_user_id_users_id_fk", + "tableFrom": "activities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "identities": { + "name": "identities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_user_id": { + "name": "provider_user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_data": { + "name": "provider_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "identities_user_id_idx": { + "name": "identities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "identities_provider_unique_idx": { + "name": "identities_provider_unique_idx", + "columns": [ + "provider", + "provider_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "identities_user_id_users_id_fk": { + "name": "identities_user_id_users_id_fk", + "tableFrom": "identities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "notifications": { + "name": "notifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sender_name": { + "name": "sender_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_read": { + "name": "is_read", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "notifications_user_org_idx": { + "name": "notifications_user_org_idx", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": false + }, + "notifications_created_idx": { + "name": "notifications_created_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "notifications_dedupe_idx": { + "name": "notifications_dedupe_idx", + "columns": [ + "user_id", + "organization_id", + "dedupe_key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "notifications_organization_id_organizations_id_fk": { + "name": "notifications_organization_id_organizations_id_fk", + "tableFrom": "notifications", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_credits": { + "name": "organization_credits", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "organization_credits_organization_id_organizations_id_fk": { + "name": "organization_credits_organization_id_organizations_id_fk", + "tableFrom": "organization_credits", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_invitations": { + "name": "organization_invitations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "project_ids": { + "name": "project_ids", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + } + }, + "indexes": { + "organization_invitations_token_unique": { + "name": "organization_invitations_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "org_invitations_org_idx": { + "name": "org_invitations_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "org_invitations_token_idx": { + "name": "org_invitations_token_idx", + "columns": [ + "token" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_role_id_roles_id_fk": { + "name": "organization_invitations_role_id_roles_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_member_roles": { + "name": "organization_member_roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "member_roles_unique": { + "name": "member_roles_unique", + "columns": [ + "member_id", + "role_id" + ], + "isUnique": true + }, + "member_roles_member_idx": { + "name": "member_roles_member_idx", + "columns": [ + "member_id" + ], + "isUnique": false + }, + "member_roles_role_idx": { + "name": "member_roles_role_idx", + "columns": [ + "role_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_member_roles_member_id_organization_members_id_fk": { + "name": "organization_member_roles_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_member_roles_role_id_roles_id_fk": { + "name": "organization_member_roles_role_id_roles_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_members": { + "name": "organization_members", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "org_members_user_org_unique": { + "name": "org_members_user_org_unique", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": true + }, + "org_members_org_idx": { + "name": "org_members_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organizations": { + "name": "organizations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_personal": { + "name": "is_personal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "columns": [ + "slug" + ], + "isUnique": true + }, + "organizations_is_system_idx": { + "name": "organizations_is_system_idx", + "columns": [ + "is_system" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organizations_owner_id_users_id_fk": { + "name": "organizations_owner_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "permissions": { + "name": "permissions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "org_kind": { + "name": "org_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "permissions_key_unique": { + "name": "permissions_key_unique", + "columns": [ + "key" + ], + "isUnique": true + }, + "permissions_subject_idx": { + "name": "permissions_subject_idx", + "columns": [ + "subject" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "referrer_id": { + "name": "referrer_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referee_id": { + "name": "referee_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'link'" + }, + "reward_paid": { + "name": "reward_paid", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "referrals_referee_unique": { + "name": "referrals_referee_unique", + "columns": [ + "referee_id" + ], + "isUnique": true + }, + "referrals_referrer_idx": { + "name": "referrals_referrer_idx", + "columns": [ + "referrer_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "referrals_referrer_id_users_id_fk": { + "name": "referrals_referrer_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referrer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "referrals_referee_id_users_id_fk": { + "name": "referrals_referee_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referee_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "roles_org_name_unique": { + "name": "roles_org_name_unique", + "columns": [ + "organization_id", + "name" + ], + "isUnique": true + }, + "roles_org_idx": { + "name": "roles_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "roles_organization_id_organizations_id_fk": { + "name": "roles_organization_id_organizations_id_fk", + "tableFrom": "roles", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_ticket_messages": { + "name": "support_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "ticket_id": { + "name": "ticket_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "author_role": { + "name": "author_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "support_ticket_messages_ticket_idx": { + "name": "support_ticket_messages_ticket_idx", + "columns": [ + "ticket_id", + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_ticket_messages_ticket_id_support_tickets_id_fk": { + "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "support_tickets", + "columnsFrom": [ + "ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_ticket_messages_author_id_users_id_fk": { + "name": "support_ticket_messages_author_id_users_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "assigned_to": { + "name": "assigned_to", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "last_message_role": { + "name": "last_message_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "reminder_sent_at": { + "name": "reminder_sent_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "support_tickets_user_idx": { + "name": "support_tickets_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "support_tickets_status_idx": { + "name": "support_tickets_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "support_tickets_assigned_idx": { + "name": "support_tickets_assigned_idx", + "columns": [ + "assigned_to" + ], + "isUnique": false + }, + "support_tickets_reminder_idx": { + "name": "support_tickets_reminder_idx", + "columns": [ + "last_message_role", + "last_message_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_tickets_user_id_users_id_fk": { + "name": "support_tickets_user_id_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_organization_id_organizations_id_fk": { + "name": "support_tickets_organization_id_organizations_id_fk", + "tableFrom": "support_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_assigned_to_users_id_fk": { + "name": "support_tickets_assigned_to_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "assigned_to" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "transactions": { + "name": "transactions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gateway_ref": { + "name": "gateway_ref", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sepay_event_id": { + "name": "sepay_event_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "transactions_gateway_ref_unique": { + "name": "transactions_gateway_ref_unique", + "columns": [ + "gateway_ref" + ], + "isUnique": true + }, + "transactions_sepay_event_id_unique": { + "name": "transactions_sepay_event_id_unique", + "columns": [ + "sepay_event_id" + ], + "isUnique": true + }, + "transactions_org_idx": { + "name": "transactions_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "transactions_status_idx": { + "name": "transactions_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_organization_id_organizations_id_fk": { + "name": "transactions_organization_id_organizations_id_fk", + "tableFrom": "transactions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "transactions_user_id_users_id_fk": { + "name": "transactions_user_id_users_id_fk", + "tableFrom": "transactions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_referrals_code_unique": { + "name": "user_referrals_code_unique", + "columns": [ + "code" + ], + "isUnique": true + } + }, + "foreignKeys": { + "user_referrals_user_id_users_id_fk": { + "name": "user_referrals_user_id_users_id_fk", + "tableFrom": "user_referrals", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "primary_email": { + "name": "primary_email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "primary_phone": { + "name": "primary_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "bio": { + "name": "bio", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notification_prefs": { + "name": "notification_prefs", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" + }, + "custom_data": { + "name": "custom_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "last_sign_in_at": { + "name": "last_sign_in_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_primary_email_unique": { + "name": "users_primary_email_unique", + "columns": [ + "primary_email" + ], + "isUnique": true + }, + "users_primary_phone_unique": { + "name": "users_primary_phone_unique", + "columns": [ + "primary_phone" + ], + "isUnique": true + }, + "users_username_idx": { + "name": "users_username_idx", + "columns": [ + "username" + ], + "isUnique": false + }, + "users_name_idx": { + "name": "users_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "products": { + "name": "products", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'one_time'" + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price_currency": { + "name": "price_currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "billing_interval": { + "name": "billing_interval", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "products_status_idx": { + "name": "products_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "products_type_idx": { + "name": "products_type_idx", + "columns": [ + "type" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "projects": { + "name": "projects", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "projects_org_idx": { + "name": "projects_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "projects_status_idx": { + "name": "projects_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "projects_organization_id_organizations_id_fk": { + "name": "projects_organization_id_organizations_id_fk", + "tableFrom": "projects", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "projects_created_by_users_id_fk": { + "name": "projects_created_by_users_id_fk", + "tableFrom": "projects", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_products": { + "name": "project_products", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "project_products_project_id_projects_id_fk": { + "name": "project_products_project_id_projects_id_fk", + "tableFrom": "project_products", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_products_product_id_products_id_fk": { + "name": "project_products_product_id_products_id_fk", + "tableFrom": "project_products", + "tableTo": "products", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_products_project_id_product_id_pk": { + "name": "project_products_project_id_product_id_pk", + "columns": [ + "project_id", + "product_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_members": { + "name": "project_members", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'member'" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_members_user_idx": { + "name": "project_members_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "project_members_project_id_projects_id_fk": { + "name": "project_members_project_id_projects_id_fk", + "tableFrom": "project_members", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_members_user_id_users_id_fk": { + "name": "project_members_user_id_users_id_fk", + "tableFrom": "project_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_members_project_id_user_id_pk": { + "name": "project_members_project_id_user_id_pk", + "columns": [ + "project_id", + "user_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_billing_settings": { + "name": "organization_billing_settings", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "company_name": { + "name": "company_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tax_id": { + "name": "tax_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'US'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invoices": { + "name": "invoices", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "number": { + "name": "number", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'draft'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "subtotal": { + "name": "subtotal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "tax": { + "name": "tax", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "total": { + "name": "total", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "issued_at": { + "name": "issued_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "due_at": { + "name": "due_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "paid_at": { + "name": "paid_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "invoices_org_idx": { + "name": "invoices_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "invoices_status_idx": { + "name": "invoices_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "invoices_number_unique": { + "name": "invoices_number_unique", + "columns": [ + "number" + ] + } + }, + "checkConstraints": {} + }, + "invoice_items": { + "name": "invoice_items", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "unit_price": { + "name": "unit_price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invoice_items_invoice_idx": { + "name": "invoice_items_invoice_idx", + "columns": [ + "invoice_id" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/server/db/migrations/sqlite/meta/0015_snapshot.json b/server/db/migrations/sqlite/meta/0015_snapshot.json index 504340fd..f703442e 100644 --- a/server/db/migrations/sqlite/meta/0015_snapshot.json +++ b/server/db/migrations/sqlite/meta/0015_snapshot.json @@ -1,2309 +1,2295 @@ -{ - "version": "6", - "dialect": "sqlite", - "id": "0015_grant_billing_abilities", - "prevId": "0014_migrate_todo_abilities", - "tables": { - "activities": { - "name": "activities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action_ref_id": { - "name": "action_ref_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "test": { - "name": "test", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "activities_user_id_idx": { - "name": "activities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "activities_user_id_users_id_fk": { - "name": "activities_user_id_users_id_fk", - "tableFrom": "activities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "identities": { - "name": "identities", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider": { - "name": "provider", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_user_id": { - "name": "provider_user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "provider_data": { - "name": "provider_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "identities_user_id_idx": { - "name": "identities_user_id_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "identities_provider_unique_idx": { - "name": "identities_provider_unique_idx", - "columns": [ - "provider", - "provider_user_id" - ], - "isUnique": true - } - }, - "foreignKeys": { - "identities_user_id_users_id_fk": { - "name": "identities_user_id_users_id_fk", - "tableFrom": "identities", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "cascade" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "notifications": { - "name": "notifications", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "sender_name": { - "name": "sender_name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "is_read": { - "name": "is_read", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "dedupe_key": { - "name": "dedupe_key", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "notifications_user_org_idx": { - "name": "notifications_user_org_idx", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": false - }, - "notifications_created_idx": { - "name": "notifications_created_idx", - "columns": [ - "created_at" - ], - "isUnique": false - }, - "notifications_dedupe_idx": { - "name": "notifications_dedupe_idx", - "columns": [ - "user_id", - "organization_id", - "dedupe_key" - ], - "isUnique": true - } - }, - "foreignKeys": { - "notifications_organization_id_organizations_id_fk": { - "name": "notifications_organization_id_organizations_id_fk", - "tableFrom": "notifications", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "notifications_user_id_users_id_fk": { - "name": "notifications_user_id_users_id_fk", - "tableFrom": "notifications", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_credits": { - "name": "organization_credits", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "balance": { - "name": "balance", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": 0 - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "organization_credits_organization_id_organizations_id_fk": { - "name": "organization_credits_organization_id_organizations_id_fk", - "tableFrom": "organization_credits", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_invitations": { - "name": "organization_invitations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "email": { - "name": "email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "token": { - "name": "token", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "invited_by": { - "name": "invited_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "project_ids": { - "name": "project_ids", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'[]'" - } - }, - "indexes": { - "organization_invitations_token_unique": { - "name": "organization_invitations_token_unique", - "columns": [ - "token" - ], - "isUnique": true - }, - "org_invitations_org_idx": { - "name": "org_invitations_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "org_invitations_token_idx": { - "name": "org_invitations_token_idx", - "columns": [ - "token" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_invitations_organization_id_organizations_id_fk": { - "name": "organization_invitations_organization_id_organizations_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_invitations_role_id_roles_id_fk": { - "name": "organization_invitations_role_id_roles_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - }, - "organization_invitations_invited_by_users_id_fk": { - "name": "organization_invitations_invited_by_users_id_fk", - "tableFrom": "organization_invitations", - "tableTo": "users", - "columnsFrom": [ - "invited_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_member_roles": { - "name": "organization_member_roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "member_id": { - "name": "member_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role_id": { - "name": "role_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "member_roles_unique": { - "name": "member_roles_unique", - "columns": [ - "member_id", - "role_id" - ], - "isUnique": true - }, - "member_roles_member_idx": { - "name": "member_roles_member_idx", - "columns": [ - "member_id" - ], - "isUnique": false - }, - "member_roles_role_idx": { - "name": "member_roles_role_idx", - "columns": [ - "role_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_member_roles_member_id_organization_members_id_fk": { - "name": "organization_member_roles_member_id_organization_members_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "organization_members", - "columnsFrom": [ - "member_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_member_roles_role_id_roles_id_fk": { - "name": "organization_member_roles_role_id_roles_id_fk", - "tableFrom": "organization_member_roles", - "tableTo": "roles", - "columnsFrom": [ - "role_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organization_members": { - "name": "organization_members", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "abilities": { - "name": "abilities", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "org_members_user_org_unique": { - "name": "org_members_user_org_unique", - "columns": [ - "user_id", - "organization_id" - ], - "isUnique": true - }, - "org_members_org_idx": { - "name": "org_members_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organization_members_user_id_users_id_fk": { - "name": "organization_members_user_id_users_id_fk", - "tableFrom": "organization_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "organization_members_organization_id_organizations_id_fk": { - "name": "organization_members_organization_id_organizations_id_fk", - "tableFrom": "organization_members", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "organizations": { - "name": "organizations", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "slug": { - "name": "slug", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "owner_id": { - "name": "owner_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_personal": { - "name": "is_personal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "organizations_slug_unique": { - "name": "organizations_slug_unique", - "columns": [ - "slug" - ], - "isUnique": true - }, - "organizations_is_system_idx": { - "name": "organizations_is_system_idx", - "columns": [ - "is_system" - ], - "isUnique": false - } - }, - "foreignKeys": { - "organizations_owner_id_users_id_fk": { - "name": "organizations_owner_id_users_id_fk", - "tableFrom": "organizations", - "tableTo": "users", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "permissions": { - "name": "permissions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "key": { - "name": "key", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "action": { - "name": "action", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "scope": { - "name": "scope", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "org_kind": { - "name": "org_kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "permissions_key_unique": { - "name": "permissions_key_unique", - "columns": [ - "key" - ], - "isUnique": true - }, - "permissions_subject_idx": { - "name": "permissions_subject_idx", - "columns": [ - "subject" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "referrals": { - "name": "referrals", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "referrer_id": { - "name": "referrer_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "referee_id": { - "name": "referee_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "source": { - "name": "source", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'link'" - }, - "reward_paid": { - "name": "reward_paid", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "referrals_referee_unique": { - "name": "referrals_referee_unique", - "columns": [ - "referee_id" - ], - "isUnique": true - }, - "referrals_referrer_idx": { - "name": "referrals_referrer_idx", - "columns": [ - "referrer_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "referrals_referrer_id_users_id_fk": { - "name": "referrals_referrer_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referrer_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "referrals_referee_id_users_id_fk": { - "name": "referrals_referee_id_users_id_fk", - "tableFrom": "referrals", - "tableTo": "users", - "columnsFrom": [ - "referee_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "roles": { - "name": "roles", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "permissions": { - "name": "permissions", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'[]'" - }, - "is_system": { - "name": "is_system", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "roles_org_name_unique": { - "name": "roles_org_name_unique", - "columns": [ - "organization_id", - "name" - ], - "isUnique": true - }, - "roles_org_idx": { - "name": "roles_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "roles_organization_id_organizations_id_fk": { - "name": "roles_organization_id_organizations_id_fk", - "tableFrom": "roles", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_ticket_messages": { - "name": "support_ticket_messages", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "ticket_id": { - "name": "ticket_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "author_id": { - "name": "author_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "author_role": { - "name": "author_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "body": { - "name": "body", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "support_ticket_messages_ticket_idx": { - "name": "support_ticket_messages_ticket_idx", - "columns": [ - "ticket_id", - "created_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_ticket_messages_ticket_id_support_tickets_id_fk": { - "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "support_tickets", - "columnsFrom": [ - "ticket_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_ticket_messages_author_id_users_id_fk": { - "name": "support_ticket_messages_author_id_users_id_fk", - "tableFrom": "support_ticket_messages", - "tableTo": "users", - "columnsFrom": [ - "author_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "support_tickets": { - "name": "support_tickets", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "kind": { - "name": "kind", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "category": { - "name": "category", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "subject": { - "name": "subject", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'open'" - }, - "assigned_to": { - "name": "assigned_to", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "last_message_at": { - "name": "last_message_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "last_message_role": { - "name": "last_message_role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'user'" - }, - "reminder_sent_at": { - "name": "reminder_sent_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "support_tickets_user_idx": { - "name": "support_tickets_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - }, - "support_tickets_status_idx": { - "name": "support_tickets_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "support_tickets_assigned_idx": { - "name": "support_tickets_assigned_idx", - "columns": [ - "assigned_to" - ], - "isUnique": false - }, - "support_tickets_reminder_idx": { - "name": "support_tickets_reminder_idx", - "columns": [ - "last_message_role", - "last_message_at" - ], - "isUnique": false - } - }, - "foreignKeys": { - "support_tickets_user_id_users_id_fk": { - "name": "support_tickets_user_id_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_organization_id_organizations_id_fk": { - "name": "support_tickets_organization_id_organizations_id_fk", - "tableFrom": "support_tickets", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "support_tickets_assigned_to_users_id_fk": { - "name": "support_tickets_assigned_to_users_id_fk", - "tableFrom": "support_tickets", - "tableTo": "users", - "columnsFrom": [ - "assigned_to" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "transactions": { - "name": "transactions", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'pending'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "gateway_ref": { - "name": "gateway_ref", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "sepay_event_id": { - "name": "sepay_event_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "metadata": { - "name": "metadata", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "expires_at": { - "name": "expires_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "transactions_gateway_ref_unique": { - "name": "transactions_gateway_ref_unique", - "columns": [ - "gateway_ref" - ], - "isUnique": true - }, - "transactions_sepay_event_id_unique": { - "name": "transactions_sepay_event_id_unique", - "columns": [ - "sepay_event_id" - ], - "isUnique": true - }, - "transactions_org_idx": { - "name": "transactions_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "transactions_status_idx": { - "name": "transactions_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "transactions_organization_id_organizations_id_fk": { - "name": "transactions_organization_id_organizations_id_fk", - "tableFrom": "transactions", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "transactions_user_id_users_id_fk": { - "name": "transactions_user_id_users_id_fk", - "tableFrom": "transactions", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "user_referrals": { - "name": "user_referrals", - "columns": { - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "code": { - "name": "code", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "user_referrals_code_unique": { - "name": "user_referrals_code_unique", - "columns": [ - "code" - ], - "isUnique": true - } - }, - "foreignKeys": { - "user_referrals_user_id_users_id_fk": { - "name": "user_referrals_user_id_users_id_fk", - "tableFrom": "user_referrals", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "users": { - "name": "users", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "username": { - "name": "username", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "primary_email": { - "name": "primary_email", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "primary_phone": { - "name": "primary_phone", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "avatar": { - "name": "avatar", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "verified": { - "name": "verified", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "email_notifications": { - "name": "email_notifications", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": true - }, - "bio": { - "name": "bio", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notification_prefs": { - "name": "notification_prefs", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" - }, - "custom_data": { - "name": "custom_data", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'{}'" - }, - "last_sign_in_at": { - "name": "last_sign_in_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "is_suspended": { - "name": "is_suspended", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "users_primary_email_unique": { - "name": "users_primary_email_unique", - "columns": [ - "primary_email" - ], - "isUnique": true - }, - "users_primary_phone_unique": { - "name": "users_primary_phone_unique", - "columns": [ - "primary_phone" - ], - "isUnique": true - }, - "users_username_idx": { - "name": "users_username_idx", - "columns": [ - "username" - ], - "isUnique": false - }, - "users_name_idx": { - "name": "users_name_idx", - "columns": [ - "name" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {} - }, - "products": { - "name": "products", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'one_time'" - }, - "price": { - "name": "price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "price_currency": { - "name": "price_currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "billing_interval": { - "name": "billing_interval", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "products_status_idx": { - "name": "products_status_idx", - "columns": [ - "status" - ], - "isUnique": false - }, - "products_type_idx": { - "name": "products_type_idx", - "columns": [ - "type" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "projects": { - "name": "projects", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'active'" - }, - "created_by": { - "name": "created_by", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "projects_org_idx": { - "name": "projects_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "projects_status_idx": { - "name": "projects_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": { - "projects_organization_id_organizations_id_fk": { - "name": "projects_organization_id_organizations_id_fk", - "tableFrom": "projects", - "tableTo": "organizations", - "columnsFrom": [ - "organization_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "projects_created_by_users_id_fk": { - "name": "projects_created_by_users_id_fk", - "tableFrom": "projects", - "tableTo": "users", - "columnsFrom": [ - "created_by" - ], - "columnsTo": [ - "id" - ], - "onDelete": "set null", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_products": { - "name": "project_products", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "product_id": { - "name": "product_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "quantity": { - "name": "quantity", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "1" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": { - "project_products_project_id_projects_id_fk": { - "name": "project_products_project_id_projects_id_fk", - "tableFrom": "project_products", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_products_product_id_products_id_fk": { - "name": "project_products_product_id_products_id_fk", - "tableFrom": "project_products", - "tableTo": "products", - "columnsFrom": [ - "product_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_products_project_id_product_id_pk": { - "name": "project_products_project_id_product_id_pk", - "columns": [ - "project_id", - "product_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "project_members": { - "name": "project_members", - "columns": { - "project_id": { - "name": "project_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "user_id": { - "name": "user_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "role": { - "name": "role", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'member'" - }, - "added_at": { - "name": "added_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "project_members_user_idx": { - "name": "project_members_user_idx", - "columns": [ - "user_id" - ], - "isUnique": false - } - }, - "foreignKeys": { - "project_members_project_id_projects_id_fk": { - "name": "project_members_project_id_projects_id_fk", - "tableFrom": "project_members", - "tableTo": "projects", - "columnsFrom": [ - "project_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - }, - "project_members_user_id_users_id_fk": { - "name": "project_members_user_id_users_id_fk", - "tableFrom": "project_members", - "tableTo": "users", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], - "onDelete": "cascade", - "onUpdate": "no action" - } - }, - "compositePrimaryKeys": { - "project_members_project_id_user_id_pk": { - "name": "project_members_project_id_user_id_pk", - "columns": [ - "project_id", - "user_id" - ] - } - }, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "organization_billing_settings": { - "name": "organization_billing_settings", - "columns": { - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "company_name": { - "name": "company_name", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "tax_id": { - "name": "tax_id", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "address": { - "name": "address", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "city": { - "name": "city", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "country": { - "name": "country", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false, - "default": "'US'" - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": {}, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "invoices": { - "name": "invoices", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "organization_id": { - "name": "organization_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "number": { - "name": "number", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'draft'" - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "subtotal": { - "name": "subtotal", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "tax": { - "name": "tax", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "total": { - "name": "total", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "0" - }, - "issued_at": { - "name": "issued_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "due_at": { - "name": "due_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "paid_at": { - "name": "paid_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "notes": { - "name": "notes", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "created_at": { - "name": "created_at", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "updated_at": { - "name": "updated_at", - "type": "integer", - "primaryKey": false, - "notNull": false, - "autoincrement": false - } - }, - "indexes": { - "invoices_org_idx": { - "name": "invoices_org_idx", - "columns": [ - "organization_id" - ], - "isUnique": false - }, - "invoices_status_idx": { - "name": "invoices_status_idx", - "columns": [ - "status" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": { - "invoices_number_unique": { - "name": "invoices_number_unique", - "columns": [ - "number" - ] - } - }, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "invoice_items": { - "name": "invoice_items", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": true, - "notNull": true, - "autoincrement": false - }, - "invoice_id": { - "name": "invoice_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "quantity": { - "name": "quantity", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "1" - }, - "unit_price": { - "name": "unit_price", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "currency": { - "name": "currency", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false, - "default": "'USD'" - }, - "amount": { - "name": "amount", - "type": "integer", - "primaryKey": false, - "notNull": true, - "autoincrement": false - } - }, - "indexes": { - "invoice_items_invoice_idx": { - "name": "invoice_items_invoice_idx", - "columns": [ - "invoice_id" - ], - "isUnique": false - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - } - }, - "views": {}, - "enums": {}, - "_meta": { - "schemas": {}, - "tables": {}, - "columns": {} - }, - "internal": { - "indexes": {} - } -} \ No newline at end of file +{ + "version": "6", + "dialect": "sqlite", + "id": "de4ae17b-dced-423c-b8f7-fb9f12b17498", + "prevId": "f8422c2e-9f3c-4c99-a9b6-7c915267f490", + "tables": { + "activities": { + "name": "activities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action_ref_id": { + "name": "action_ref_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "test": { + "name": "test", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "activities_user_id_idx": { + "name": "activities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "activities_user_id_users_id_fk": { + "name": "activities_user_id_users_id_fk", + "tableFrom": "activities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "identities": { + "name": "identities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_user_id": { + "name": "provider_user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_data": { + "name": "provider_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "identities_user_id_idx": { + "name": "identities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "identities_provider_unique_idx": { + "name": "identities_provider_unique_idx", + "columns": [ + "provider", + "provider_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "identities_user_id_users_id_fk": { + "name": "identities_user_id_users_id_fk", + "tableFrom": "identities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "notifications": { + "name": "notifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sender_name": { + "name": "sender_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_read": { + "name": "is_read", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "notifications_user_org_idx": { + "name": "notifications_user_org_idx", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": false + }, + "notifications_created_idx": { + "name": "notifications_created_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "notifications_dedupe_idx": { + "name": "notifications_dedupe_idx", + "columns": [ + "user_id", + "organization_id", + "dedupe_key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "notifications_organization_id_organizations_id_fk": { + "name": "notifications_organization_id_organizations_id_fk", + "tableFrom": "notifications", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_credits": { + "name": "organization_credits", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "organization_credits_organization_id_organizations_id_fk": { + "name": "organization_credits_organization_id_organizations_id_fk", + "tableFrom": "organization_credits", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_invitations": { + "name": "organization_invitations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "project_ids": { + "name": "project_ids", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + } + }, + "indexes": { + "organization_invitations_token_unique": { + "name": "organization_invitations_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "org_invitations_org_idx": { + "name": "org_invitations_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "org_invitations_token_idx": { + "name": "org_invitations_token_idx", + "columns": [ + "token" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_role_id_roles_id_fk": { + "name": "organization_invitations_role_id_roles_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_member_roles": { + "name": "organization_member_roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "member_roles_unique": { + "name": "member_roles_unique", + "columns": [ + "member_id", + "role_id" + ], + "isUnique": true + }, + "member_roles_member_idx": { + "name": "member_roles_member_idx", + "columns": [ + "member_id" + ], + "isUnique": false + }, + "member_roles_role_idx": { + "name": "member_roles_role_idx", + "columns": [ + "role_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_member_roles_member_id_organization_members_id_fk": { + "name": "organization_member_roles_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_member_roles_role_id_roles_id_fk": { + "name": "organization_member_roles_role_id_roles_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_members": { + "name": "organization_members", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "org_members_user_org_unique": { + "name": "org_members_user_org_unique", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": true + }, + "org_members_org_idx": { + "name": "org_members_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organizations": { + "name": "organizations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_personal": { + "name": "is_personal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "columns": [ + "slug" + ], + "isUnique": true + }, + "organizations_is_system_idx": { + "name": "organizations_is_system_idx", + "columns": [ + "is_system" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organizations_owner_id_users_id_fk": { + "name": "organizations_owner_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "permissions": { + "name": "permissions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "org_kind": { + "name": "org_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "permissions_key_unique": { + "name": "permissions_key_unique", + "columns": [ + "key" + ], + "isUnique": true + }, + "permissions_subject_idx": { + "name": "permissions_subject_idx", + "columns": [ + "subject" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "referrer_id": { + "name": "referrer_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referee_id": { + "name": "referee_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'link'" + }, + "reward_paid": { + "name": "reward_paid", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "referrals_referee_unique": { + "name": "referrals_referee_unique", + "columns": [ + "referee_id" + ], + "isUnique": true + }, + "referrals_referrer_idx": { + "name": "referrals_referrer_idx", + "columns": [ + "referrer_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "referrals_referrer_id_users_id_fk": { + "name": "referrals_referrer_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referrer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "referrals_referee_id_users_id_fk": { + "name": "referrals_referee_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referee_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "roles_org_name_unique": { + "name": "roles_org_name_unique", + "columns": [ + "organization_id", + "name" + ], + "isUnique": true + }, + "roles_org_idx": { + "name": "roles_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "roles_organization_id_organizations_id_fk": { + "name": "roles_organization_id_organizations_id_fk", + "tableFrom": "roles", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_ticket_messages": { + "name": "support_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "ticket_id": { + "name": "ticket_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "author_role": { + "name": "author_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "support_ticket_messages_ticket_idx": { + "name": "support_ticket_messages_ticket_idx", + "columns": [ + "ticket_id", + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_ticket_messages_ticket_id_support_tickets_id_fk": { + "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "support_tickets", + "columnsFrom": [ + "ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_ticket_messages_author_id_users_id_fk": { + "name": "support_ticket_messages_author_id_users_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "assigned_to": { + "name": "assigned_to", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "last_message_role": { + "name": "last_message_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "reminder_sent_at": { + "name": "reminder_sent_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "support_tickets_user_idx": { + "name": "support_tickets_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "support_tickets_status_idx": { + "name": "support_tickets_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "support_tickets_assigned_idx": { + "name": "support_tickets_assigned_idx", + "columns": [ + "assigned_to" + ], + "isUnique": false + }, + "support_tickets_reminder_idx": { + "name": "support_tickets_reminder_idx", + "columns": [ + "last_message_role", + "last_message_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_tickets_user_id_users_id_fk": { + "name": "support_tickets_user_id_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_organization_id_organizations_id_fk": { + "name": "support_tickets_organization_id_organizations_id_fk", + "tableFrom": "support_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_assigned_to_users_id_fk": { + "name": "support_tickets_assigned_to_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "assigned_to" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "transactions": { + "name": "transactions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gateway_ref": { + "name": "gateway_ref", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sepay_event_id": { + "name": "sepay_event_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "transactions_gateway_ref_unique": { + "name": "transactions_gateway_ref_unique", + "columns": [ + "gateway_ref" + ], + "isUnique": true + }, + "transactions_sepay_event_id_unique": { + "name": "transactions_sepay_event_id_unique", + "columns": [ + "sepay_event_id" + ], + "isUnique": true + }, + "transactions_org_idx": { + "name": "transactions_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "transactions_status_idx": { + "name": "transactions_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_organization_id_organizations_id_fk": { + "name": "transactions_organization_id_organizations_id_fk", + "tableFrom": "transactions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "transactions_user_id_users_id_fk": { + "name": "transactions_user_id_users_id_fk", + "tableFrom": "transactions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_referrals_code_unique": { + "name": "user_referrals_code_unique", + "columns": [ + "code" + ], + "isUnique": true + } + }, + "foreignKeys": { + "user_referrals_user_id_users_id_fk": { + "name": "user_referrals_user_id_users_id_fk", + "tableFrom": "user_referrals", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "primary_email": { + "name": "primary_email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "primary_phone": { + "name": "primary_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "bio": { + "name": "bio", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notification_prefs": { + "name": "notification_prefs", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" + }, + "custom_data": { + "name": "custom_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "last_sign_in_at": { + "name": "last_sign_in_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_primary_email_unique": { + "name": "users_primary_email_unique", + "columns": [ + "primary_email" + ], + "isUnique": true + }, + "users_primary_phone_unique": { + "name": "users_primary_phone_unique", + "columns": [ + "primary_phone" + ], + "isUnique": true + }, + "users_username_idx": { + "name": "users_username_idx", + "columns": [ + "username" + ], + "isUnique": false + }, + "users_name_idx": { + "name": "users_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "products": { + "name": "products", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'one_time'" + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price_currency": { + "name": "price_currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "billing_interval": { + "name": "billing_interval", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "products_status_idx": { + "name": "products_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "products_type_idx": { + "name": "products_type_idx", + "columns": [ + "type" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "projects": { + "name": "projects", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "projects_org_idx": { + "name": "projects_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "projects_status_idx": { + "name": "projects_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "projects_organization_id_organizations_id_fk": { + "name": "projects_organization_id_organizations_id_fk", + "tableFrom": "projects", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "projects_created_by_users_id_fk": { + "name": "projects_created_by_users_id_fk", + "tableFrom": "projects", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_products": { + "name": "project_products", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "project_products_project_id_projects_id_fk": { + "name": "project_products_project_id_projects_id_fk", + "tableFrom": "project_products", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_products_product_id_products_id_fk": { + "name": "project_products_product_id_products_id_fk", + "tableFrom": "project_products", + "tableTo": "products", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_products_project_id_product_id_pk": { + "name": "project_products_project_id_product_id_pk", + "columns": [ + "project_id", + "product_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_members": { + "name": "project_members", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'member'" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_members_user_idx": { + "name": "project_members_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "project_members_project_id_projects_id_fk": { + "name": "project_members_project_id_projects_id_fk", + "tableFrom": "project_members", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_members_user_id_users_id_fk": { + "name": "project_members_user_id_users_id_fk", + "tableFrom": "project_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_members_project_id_user_id_pk": { + "name": "project_members_project_id_user_id_pk", + "columns": [ + "project_id", + "user_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_billing_settings": { + "name": "organization_billing_settings", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "company_name": { + "name": "company_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tax_id": { + "name": "tax_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'US'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invoices": { + "name": "invoices", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "number": { + "name": "number", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'draft'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "subtotal": { + "name": "subtotal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "tax": { + "name": "tax", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "total": { + "name": "total", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "issued_at": { + "name": "issued_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "due_at": { + "name": "due_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "paid_at": { + "name": "paid_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "invoices_org_idx": { + "name": "invoices_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "invoices_status_idx": { + "name": "invoices_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "invoices_number_unique": { + "name": "invoices_number_unique", + "columns": [ + "number" + ] + } + }, + "checkConstraints": {} + }, + "invoice_items": { + "name": "invoice_items", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "unit_price": { + "name": "unit_price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invoice_items_invoice_idx": { + "name": "invoice_items_invoice_idx", + "columns": [ + "invoice_id" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/server/db/migrations/sqlite/meta/0016_snapshot.json b/server/db/migrations/sqlite/meta/0016_snapshot.json new file mode 100644 index 00000000..003f9ece --- /dev/null +++ b/server/db/migrations/sqlite/meta/0016_snapshot.json @@ -0,0 +1,2512 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "4f0f3e8c-17d0-4781-9524-5ddeea4b8290", + "prevId": "de4ae17b-dced-423c-b8f7-fb9f12b17498", + "tables": { + "activities": { + "name": "activities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action_ref_id": { + "name": "action_ref_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "test": { + "name": "test", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "activities_user_id_idx": { + "name": "activities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "activities_user_id_users_id_fk": { + "name": "activities_user_id_users_id_fk", + "tableFrom": "activities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "identities": { + "name": "identities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_user_id": { + "name": "provider_user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_data": { + "name": "provider_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "identities_user_id_idx": { + "name": "identities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "identities_provider_unique_idx": { + "name": "identities_provider_unique_idx", + "columns": [ + "provider", + "provider_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "identities_user_id_users_id_fk": { + "name": "identities_user_id_users_id_fk", + "tableFrom": "identities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invoice_items": { + "name": "invoice_items", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "unit_price": { + "name": "unit_price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invoice_items_invoice_idx": { + "name": "invoice_items_invoice_idx", + "columns": [ + "invoice_id" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invoices": { + "name": "invoices", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "number": { + "name": "number", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'draft'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "subtotal": { + "name": "subtotal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "tax": { + "name": "tax", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "total": { + "name": "total", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "issued_at": { + "name": "issued_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "due_at": { + "name": "due_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "paid_at": { + "name": "paid_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "invoices_org_idx": { + "name": "invoices_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "invoices_status_idx": { + "name": "invoices_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "invoices_number_unique": { + "name": "invoices_number_unique", + "columns": [ + "number" + ] + } + }, + "checkConstraints": {} + }, + "notifications": { + "name": "notifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sender_name": { + "name": "sender_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_read": { + "name": "is_read", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "notifications_user_org_idx": { + "name": "notifications_user_org_idx", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": false + }, + "notifications_created_idx": { + "name": "notifications_created_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "notifications_dedupe_idx": { + "name": "notifications_dedupe_idx", + "columns": [ + "user_id", + "organization_id", + "dedupe_key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "notifications_organization_id_organizations_id_fk": { + "name": "notifications_organization_id_organizations_id_fk", + "tableFrom": "notifications", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_billing_settings": { + "name": "organization_billing_settings", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "company_name": { + "name": "company_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tax_id": { + "name": "tax_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'US'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_credits": { + "name": "organization_credits", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "organization_credits_organization_id_organizations_id_fk": { + "name": "organization_credits_organization_id_organizations_id_fk", + "tableFrom": "organization_credits", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_invitations": { + "name": "organization_invitations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "project_ids": { + "name": "project_ids", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "organization_invitations_token_unique": { + "name": "organization_invitations_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "org_invitations_org_idx": { + "name": "org_invitations_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "org_invitations_token_idx": { + "name": "org_invitations_token_idx", + "columns": [ + "token" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_role_id_roles_id_fk": { + "name": "organization_invitations_role_id_roles_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_member_roles": { + "name": "organization_member_roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "member_roles_unique": { + "name": "member_roles_unique", + "columns": [ + "member_id", + "role_id" + ], + "isUnique": true + }, + "member_roles_member_idx": { + "name": "member_roles_member_idx", + "columns": [ + "member_id" + ], + "isUnique": false + }, + "member_roles_role_idx": { + "name": "member_roles_role_idx", + "columns": [ + "role_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_member_roles_member_id_organization_members_id_fk": { + "name": "organization_member_roles_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_member_roles_role_id_roles_id_fk": { + "name": "organization_member_roles_role_id_roles_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_members": { + "name": "organization_members", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "org_members_user_org_unique": { + "name": "org_members_user_org_unique", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": true + }, + "org_members_org_idx": { + "name": "org_members_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organizations": { + "name": "organizations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_personal": { + "name": "is_personal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "columns": [ + "slug" + ], + "isUnique": true + }, + "organizations_is_system_idx": { + "name": "organizations_is_system_idx", + "columns": [ + "is_system" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organizations_owner_id_users_id_fk": { + "name": "organizations_owner_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "permissions": { + "name": "permissions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "org_kind": { + "name": "org_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "permissions_key_unique": { + "name": "permissions_key_unique", + "columns": [ + "key" + ], + "isUnique": true + }, + "permissions_subject_idx": { + "name": "permissions_subject_idx", + "columns": [ + "subject" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "products": { + "name": "products", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'one_time'" + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price_currency": { + "name": "price_currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "billing_interval": { + "name": "billing_interval", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "products_status_idx": { + "name": "products_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "products_type_idx": { + "name": "products_type_idx", + "columns": [ + "type" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_members": { + "name": "project_members", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'member'" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_members_user_idx": { + "name": "project_members_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "project_members_project_id_projects_id_fk": { + "name": "project_members_project_id_projects_id_fk", + "tableFrom": "project_members", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_members_user_id_users_id_fk": { + "name": "project_members_user_id_users_id_fk", + "tableFrom": "project_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_members_project_id_user_id_pk": { + "columns": [ + "project_id", + "user_id" + ], + "name": "project_members_project_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_products": { + "name": "project_products", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "project_products_project_id_projects_id_fk": { + "name": "project_products_project_id_projects_id_fk", + "tableFrom": "project_products", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_products_product_id_products_id_fk": { + "name": "project_products_product_id_products_id_fk", + "tableFrom": "project_products", + "tableTo": "products", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_products_project_id_product_id_pk": { + "name": "project_products_project_id_product_id_pk", + "columns": [ + "project_id", + "product_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "projects": { + "name": "projects", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "projects_org_idx": { + "name": "projects_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "projects_status_idx": { + "name": "projects_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "projects_organization_id_organizations_id_fk": { + "name": "projects_organization_id_organizations_id_fk", + "tableFrom": "projects", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "projects_created_by_users_id_fk": { + "name": "projects_created_by_users_id_fk", + "tableFrom": "projects", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "referrer_id": { + "name": "referrer_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referee_id": { + "name": "referee_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'link'" + }, + "reward_paid": { + "name": "reward_paid", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "referrals_referee_unique": { + "name": "referrals_referee_unique", + "columns": [ + "referee_id" + ], + "isUnique": true + }, + "referrals_referrer_idx": { + "name": "referrals_referrer_idx", + "columns": [ + "referrer_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "referrals_referrer_id_users_id_fk": { + "name": "referrals_referrer_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referrer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "referrals_referee_id_users_id_fk": { + "name": "referrals_referee_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referee_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "roles_org_name_unique": { + "name": "roles_org_name_unique", + "columns": [ + "organization_id", + "name" + ], + "isUnique": true + }, + "roles_org_idx": { + "name": "roles_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "roles_organization_id_organizations_id_fk": { + "name": "roles_organization_id_organizations_id_fk", + "tableFrom": "roles", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "selfhost_audit": { + "name": "selfhost_audit", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "actor_user_id": { + "name": "actor_user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "success": { + "name": "success", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "cf_account_id": { + "name": "cf_account_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "started_at": { + "name": "started_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "finished_at": { + "name": "finished_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "selfhost_audit_org_idx": { + "name": "selfhost_audit_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "selfhost_audit_started_idx": { + "name": "selfhost_audit_started_idx", + "columns": [ + "started_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "selfhost_audit_organization_id_organizations_id_fk": { + "name": "selfhost_audit_organization_id_organizations_id_fk", + "tableFrom": "selfhost_audit", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "selfhost_audit_actor_user_id_users_id_fk": { + "name": "selfhost_audit_actor_user_id_users_id_fk", + "tableFrom": "selfhost_audit", + "tableTo": "users", + "columnsFrom": [ + "actor_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "selfhost_deployments": { + "name": "selfhost_deployments", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "cf_account_id": { + "name": "cf_account_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_script_name": { + "name": "cf_script_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "workers_dev_url": { + "name": "workers_dev_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "deployed_version": { + "name": "deployed_version", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "deployed_at": { + "name": "deployed_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_token_ciphertext": { + "name": "cf_token_ciphertext", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_token_iv": { + "name": "cf_token_iv", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_token_expires_at": { + "name": "cf_token_expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'idle'" + }, + "last_error": { + "name": "last_error", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "selfhost_deployments_organization_id_organizations_id_fk": { + "name": "selfhost_deployments_organization_id_organizations_id_fk", + "tableFrom": "selfhost_deployments", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_ticket_messages": { + "name": "support_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "ticket_id": { + "name": "ticket_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "author_role": { + "name": "author_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "support_ticket_messages_ticket_idx": { + "name": "support_ticket_messages_ticket_idx", + "columns": [ + "ticket_id", + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_ticket_messages_ticket_id_support_tickets_id_fk": { + "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "support_tickets", + "columnsFrom": [ + "ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_ticket_messages_author_id_users_id_fk": { + "name": "support_ticket_messages_author_id_users_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "assigned_to": { + "name": "assigned_to", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "last_message_role": { + "name": "last_message_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "reminder_sent_at": { + "name": "reminder_sent_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "support_tickets_user_idx": { + "name": "support_tickets_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "support_tickets_status_idx": { + "name": "support_tickets_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "support_tickets_assigned_idx": { + "name": "support_tickets_assigned_idx", + "columns": [ + "assigned_to" + ], + "isUnique": false + }, + "support_tickets_reminder_idx": { + "name": "support_tickets_reminder_idx", + "columns": [ + "last_message_role", + "last_message_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_tickets_user_id_users_id_fk": { + "name": "support_tickets_user_id_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_organization_id_organizations_id_fk": { + "name": "support_tickets_organization_id_organizations_id_fk", + "tableFrom": "support_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_assigned_to_users_id_fk": { + "name": "support_tickets_assigned_to_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "assigned_to" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "transactions": { + "name": "transactions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gateway_ref": { + "name": "gateway_ref", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sepay_event_id": { + "name": "sepay_event_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "transactions_gateway_ref_unique": { + "name": "transactions_gateway_ref_unique", + "columns": [ + "gateway_ref" + ], + "isUnique": true + }, + "transactions_sepay_event_id_unique": { + "name": "transactions_sepay_event_id_unique", + "columns": [ + "sepay_event_id" + ], + "isUnique": true + }, + "transactions_org_idx": { + "name": "transactions_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "transactions_status_idx": { + "name": "transactions_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_organization_id_organizations_id_fk": { + "name": "transactions_organization_id_organizations_id_fk", + "tableFrom": "transactions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "transactions_user_id_users_id_fk": { + "name": "transactions_user_id_users_id_fk", + "tableFrom": "transactions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_referrals_code_unique": { + "name": "user_referrals_code_unique", + "columns": [ + "code" + ], + "isUnique": true + } + }, + "foreignKeys": { + "user_referrals_user_id_users_id_fk": { + "name": "user_referrals_user_id_users_id_fk", + "tableFrom": "user_referrals", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "primary_email": { + "name": "primary_email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "primary_phone": { + "name": "primary_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "bio": { + "name": "bio", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notification_prefs": { + "name": "notification_prefs", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" + }, + "custom_data": { + "name": "custom_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "last_sign_in_at": { + "name": "last_sign_in_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_primary_email_unique": { + "name": "users_primary_email_unique", + "columns": [ + "primary_email" + ], + "isUnique": true + }, + "users_primary_phone_unique": { + "name": "users_primary_phone_unique", + "columns": [ + "primary_phone" + ], + "isUnique": true + }, + "users_username_idx": { + "name": "users_username_idx", + "columns": [ + "username" + ], + "isUnique": false + }, + "users_name_idx": { + "name": "users_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/server/db/migrations/sqlite/meta/0017_snapshot.json b/server/db/migrations/sqlite/meta/0017_snapshot.json new file mode 100644 index 00000000..e6d4690b --- /dev/null +++ b/server/db/migrations/sqlite/meta/0017_snapshot.json @@ -0,0 +1,2594 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "d454e63f-6bfb-44af-a58b-890a3f22ee92", + "prevId": "4f0f3e8c-17d0-4781-9524-5ddeea4b8290", + "tables": { + "activities": { + "name": "activities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action_ref_id": { + "name": "action_ref_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "test": { + "name": "test", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "activities_user_id_idx": { + "name": "activities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "activities_user_id_users_id_fk": { + "name": "activities_user_id_users_id_fk", + "tableFrom": "activities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "identities": { + "name": "identities", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_user_id": { + "name": "provider_user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_data": { + "name": "provider_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "identities_user_id_idx": { + "name": "identities_user_id_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "identities_provider_unique_idx": { + "name": "identities_provider_unique_idx", + "columns": [ + "provider", + "provider_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "identities_user_id_users_id_fk": { + "name": "identities_user_id_users_id_fk", + "tableFrom": "identities", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invoice_items": { + "name": "invoice_items", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "unit_price": { + "name": "unit_price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invoice_items_invoice_idx": { + "name": "invoice_items_invoice_idx", + "columns": [ + "invoice_id" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invoices": { + "name": "invoices", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "number": { + "name": "number", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'draft'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "subtotal": { + "name": "subtotal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "tax": { + "name": "tax", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "total": { + "name": "total", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "0" + }, + "issued_at": { + "name": "issued_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "due_at": { + "name": "due_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "paid_at": { + "name": "paid_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "invoices_org_idx": { + "name": "invoices_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "invoices_status_idx": { + "name": "invoices_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "invoices_number_unique": { + "name": "invoices_number_unique", + "columns": [ + "number" + ] + } + }, + "checkConstraints": {} + }, + "notifications": { + "name": "notifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sender_name": { + "name": "sender_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_read": { + "name": "is_read", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "notifications_user_org_idx": { + "name": "notifications_user_org_idx", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": false + }, + "notifications_created_idx": { + "name": "notifications_created_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "notifications_dedupe_idx": { + "name": "notifications_dedupe_idx", + "columns": [ + "user_id", + "organization_id", + "dedupe_key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "notifications_organization_id_organizations_id_fk": { + "name": "notifications_organization_id_organizations_id_fk", + "tableFrom": "notifications", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "notifications_user_id_users_id_fk": { + "name": "notifications_user_id_users_id_fk", + "tableFrom": "notifications", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_billing_settings": { + "name": "organization_billing_settings", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "company_name": { + "name": "company_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tax_id": { + "name": "tax_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "address": { + "name": "address", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'US'" + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_credits": { + "name": "organization_credits", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "organization_credits_organization_id_organizations_id_fk": { + "name": "organization_credits_organization_id_organizations_id_fk", + "tableFrom": "organization_credits", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_invitations": { + "name": "organization_invitations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "project_ids": { + "name": "project_ids", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "organization_invitations_token_unique": { + "name": "organization_invitations_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "org_invitations_org_idx": { + "name": "org_invitations_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "org_invitations_token_idx": { + "name": "org_invitations_token_idx", + "columns": [ + "token" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_role_id_roles_id_fk": { + "name": "organization_invitations_role_id_roles_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_member_roles": { + "name": "organization_member_roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "member_id": { + "name": "member_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "member_roles_unique": { + "name": "member_roles_unique", + "columns": [ + "member_id", + "role_id" + ], + "isUnique": true + }, + "member_roles_member_idx": { + "name": "member_roles_member_idx", + "columns": [ + "member_id" + ], + "isUnique": false + }, + "member_roles_role_idx": { + "name": "member_roles_role_idx", + "columns": [ + "role_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_member_roles_member_id_organization_members_id_fk": { + "name": "organization_member_roles_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_member_roles_role_id_roles_id_fk": { + "name": "organization_member_roles_role_id_roles_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "roles", + "columnsFrom": [ + "role_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organization_members": { + "name": "organization_members", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "org_members_user_org_unique": { + "name": "org_members_user_org_unique", + "columns": [ + "user_id", + "organization_id" + ], + "isUnique": true + }, + "org_members_org_idx": { + "name": "org_members_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "organizations": { + "name": "organizations", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_personal": { + "name": "is_personal", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "columns": [ + "slug" + ], + "isUnique": true + }, + "organizations_is_system_idx": { + "name": "organizations_is_system_idx", + "columns": [ + "is_system" + ], + "isUnique": false + } + }, + "foreignKeys": { + "organizations_owner_id_users_id_fk": { + "name": "organizations_owner_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "permissions": { + "name": "permissions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "org_kind": { + "name": "org_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "permissions_key_unique": { + "name": "permissions_key_unique", + "columns": [ + "key" + ], + "isUnique": true + }, + "permissions_subject_idx": { + "name": "permissions_subject_idx", + "columns": [ + "subject" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "products": { + "name": "products", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'one_time'" + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price_currency": { + "name": "price_currency", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "billing_interval": { + "name": "billing_interval", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "products_status_idx": { + "name": "products_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "products_type_idx": { + "name": "products_type_idx", + "columns": [ + "type" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_members": { + "name": "project_members", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'member'" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "project_members_user_idx": { + "name": "project_members_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "project_members_project_id_projects_id_fk": { + "name": "project_members_project_id_projects_id_fk", + "tableFrom": "project_members", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_members_user_id_users_id_fk": { + "name": "project_members_user_id_users_id_fk", + "tableFrom": "project_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_members_project_id_user_id_pk": { + "columns": [ + "project_id", + "user_id" + ], + "name": "project_members_project_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "project_products": { + "name": "project_products", + "columns": { + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "1" + }, + "added_at": { + "name": "added_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "project_products_project_id_projects_id_fk": { + "name": "project_products_project_id_projects_id_fk", + "tableFrom": "project_products", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "project_products_product_id_products_id_fk": { + "name": "project_products_product_id_products_id_fk", + "tableFrom": "project_products", + "tableTo": "products", + "columnsFrom": [ + "product_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "project_products_project_id_product_id_pk": { + "name": "project_products_project_id_product_id_pk", + "columns": [ + "project_id", + "product_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "projects": { + "name": "projects", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'active'" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "projects_org_idx": { + "name": "projects_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "projects_status_idx": { + "name": "projects_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "projects_organization_id_organizations_id_fk": { + "name": "projects_organization_id_organizations_id_fk", + "tableFrom": "projects", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "projects_created_by_users_id_fk": { + "name": "projects_created_by_users_id_fk", + "tableFrom": "projects", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "referrer_id": { + "name": "referrer_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referee_id": { + "name": "referee_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'link'" + }, + "reward_paid": { + "name": "reward_paid", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "referrals_referee_unique": { + "name": "referrals_referee_unique", + "columns": [ + "referee_id" + ], + "isUnique": true + }, + "referrals_referrer_idx": { + "name": "referrals_referrer_idx", + "columns": [ + "referrer_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "referrals_referrer_id_users_id_fk": { + "name": "referrals_referrer_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referrer_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "referrals_referee_id_users_id_fk": { + "name": "referrals_referee_id_users_id_fk", + "tableFrom": "referrals", + "tableTo": "users", + "columnsFrom": [ + "referee_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "roles": { + "name": "roles", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'[]'" + }, + "is_system": { + "name": "is_system", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "roles_org_name_unique": { + "name": "roles_org_name_unique", + "columns": [ + "organization_id", + "name" + ], + "isUnique": true + }, + "roles_org_idx": { + "name": "roles_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "roles_organization_id_organizations_id_fk": { + "name": "roles_organization_id_organizations_id_fk", + "tableFrom": "roles", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "selfhost_audit": { + "name": "selfhost_audit", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "actor_user_id": { + "name": "actor_user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "success": { + "name": "success", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "cf_account_id": { + "name": "cf_account_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "started_at": { + "name": "started_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "finished_at": { + "name": "finished_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "selfhost_audit_org_idx": { + "name": "selfhost_audit_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "selfhost_audit_started_idx": { + "name": "selfhost_audit_started_idx", + "columns": [ + "started_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "selfhost_audit_organization_id_organizations_id_fk": { + "name": "selfhost_audit_organization_id_organizations_id_fk", + "tableFrom": "selfhost_audit", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "selfhost_audit_actor_user_id_users_id_fk": { + "name": "selfhost_audit_actor_user_id_users_id_fk", + "tableFrom": "selfhost_audit", + "tableTo": "users", + "columnsFrom": [ + "actor_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "selfhost_deployment_secrets": { + "name": "selfhost_deployment_secrets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ciphertext": { + "name": "ciphertext", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "iv": { + "name": "iv", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "selfhost_secrets_org_key_unique": { + "name": "selfhost_secrets_org_key_unique", + "columns": [ + "organization_id", + "key" + ], + "isUnique": true + } + }, + "foreignKeys": { + "selfhost_deployment_secrets_organization_id_organizations_id_fk": { + "name": "selfhost_deployment_secrets_organization_id_organizations_id_fk", + "tableFrom": "selfhost_deployment_secrets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "selfhost_deployments": { + "name": "selfhost_deployments", + "columns": { + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "cf_account_id": { + "name": "cf_account_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_script_name": { + "name": "cf_script_name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "workers_dev_url": { + "name": "workers_dev_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "deployed_version": { + "name": "deployed_version", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "deployed_at": { + "name": "deployed_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_token_ciphertext": { + "name": "cf_token_ciphertext", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_token_iv": { + "name": "cf_token_iv", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cf_token_expires_at": { + "name": "cf_token_expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'idle'" + }, + "last_error": { + "name": "last_error", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "selfhost_deployments_organization_id_organizations_id_fk": { + "name": "selfhost_deployments_organization_id_organizations_id_fk", + "tableFrom": "selfhost_deployments", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_ticket_messages": { + "name": "support_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "ticket_id": { + "name": "ticket_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author_id": { + "name": "author_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "author_role": { + "name": "author_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "support_ticket_messages_ticket_idx": { + "name": "support_ticket_messages_ticket_idx", + "columns": [ + "ticket_id", + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_ticket_messages_ticket_id_support_tickets_id_fk": { + "name": "support_ticket_messages_ticket_id_support_tickets_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "support_tickets", + "columnsFrom": [ + "ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_ticket_messages_author_id_users_id_fk": { + "name": "support_ticket_messages_author_id_users_id_fk", + "tableFrom": "support_ticket_messages", + "tableTo": "users", + "columnsFrom": [ + "author_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "assigned_to": { + "name": "assigned_to", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "last_message_role": { + "name": "last_message_role", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "reminder_sent_at": { + "name": "reminder_sent_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "support_tickets_user_idx": { + "name": "support_tickets_user_idx", + "columns": [ + "user_id" + ], + "isUnique": false + }, + "support_tickets_status_idx": { + "name": "support_tickets_status_idx", + "columns": [ + "status" + ], + "isUnique": false + }, + "support_tickets_assigned_idx": { + "name": "support_tickets_assigned_idx", + "columns": [ + "assigned_to" + ], + "isUnique": false + }, + "support_tickets_reminder_idx": { + "name": "support_tickets_reminder_idx", + "columns": [ + "last_message_role", + "last_message_at" + ], + "isUnique": false + } + }, + "foreignKeys": { + "support_tickets_user_id_users_id_fk": { + "name": "support_tickets_user_id_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_organization_id_organizations_id_fk": { + "name": "support_tickets_organization_id_organizations_id_fk", + "tableFrom": "support_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "support_tickets_assigned_to_users_id_fk": { + "name": "support_tickets_assigned_to_users_id_fk", + "tableFrom": "support_tickets", + "tableTo": "users", + "columnsFrom": [ + "assigned_to" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "transactions": { + "name": "transactions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "amount": { + "name": "amount", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gateway_ref": { + "name": "gateway_ref", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sepay_event_id": { + "name": "sepay_event_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "transactions_gateway_ref_unique": { + "name": "transactions_gateway_ref_unique", + "columns": [ + "gateway_ref" + ], + "isUnique": true + }, + "transactions_sepay_event_id_unique": { + "name": "transactions_sepay_event_id_unique", + "columns": [ + "sepay_event_id" + ], + "isUnique": true + }, + "transactions_org_idx": { + "name": "transactions_org_idx", + "columns": [ + "organization_id" + ], + "isUnique": false + }, + "transactions_status_idx": { + "name": "transactions_status_idx", + "columns": [ + "status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_organization_id_organizations_id_fk": { + "name": "transactions_organization_id_organizations_id_fk", + "tableFrom": "transactions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "transactions_user_id_users_id_fk": { + "name": "transactions_user_id_users_id_fk", + "tableFrom": "transactions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_referrals_code_unique": { + "name": "user_referrals_code_unique", + "columns": [ + "code" + ], + "isUnique": true + } + }, + "foreignKeys": { + "user_referrals_user_id_users_id_fk": { + "name": "user_referrals_user_id_users_id_fk", + "tableFrom": "user_referrals", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "primary_email": { + "name": "primary_email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "primary_phone": { + "name": "primary_phone", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "verified": { + "name": "verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "bio": { + "name": "bio", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "notification_prefs": { + "name": "notification_prefs", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}'" + }, + "custom_data": { + "name": "custom_data", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'{}'" + }, + "last_sign_in_at": { + "name": "last_sign_in_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_suspended": { + "name": "is_suspended", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_primary_email_unique": { + "name": "users_primary_email_unique", + "columns": [ + "primary_email" + ], + "isUnique": true + }, + "users_primary_phone_unique": { + "name": "users_primary_phone_unique", + "columns": [ + "primary_phone" + ], + "isUnique": true + }, + "users_username_idx": { + "name": "users_username_idx", + "columns": [ + "username" + ], + "isUnique": false + }, + "users_name_idx": { + "name": "users_name_idx", + "columns": [ + "name" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/server/db/migrations/sqlite/meta/_journal.json b/server/db/migrations/sqlite/meta/_journal.json index ed16316a..8b64d19e 100644 --- a/server/db/migrations/sqlite/meta/_journal.json +++ b/server/db/migrations/sqlite/meta/_journal.json @@ -1,118 +1,132 @@ -{ - "version": "7", - "dialect": "sqlite", - "entries": [ - { - "idx": 0, - "version": "6", - "when": 1779371197629, - "tag": "0000_outgoing_leo", - "breakpoints": true - }, - { - "idx": 1, - "version": "6", - "when": 1779426436331, - "tag": "0001_goofy_quasar", - "breakpoints": true - }, - { - "idx": 2, - "version": "6", - "when": 1779426582486, - "tag": "0002_sad_cable", - "breakpoints": true - }, - { - "idx": 3, - "version": "6", - "when": 1779427409718, - "tag": "0003_narrow_swordsman", - "breakpoints": true - }, - { - "idx": 4, - "version": "6", - "when": 1779457093776, - "tag": "0004_cloudy_nicolaos", - "breakpoints": true - }, - { - "idx": 5, - "version": "6", - "when": 1779458233338, - "tag": "0005_sweet_gideon", - "breakpoints": true - }, - { - "idx": 6, - "version": "6", - "when": 1779472084262, - "tag": "0006_cooing_vindicator", - "breakpoints": true - }, - { - "idx": 7, - "version": "6", - "when": 1748000000000, - "tag": "0007_roles_and_member_roles", - "breakpoints": true - }, - { - "idx": 8, - "version": "6", - "when": 1779522476117, - "tag": "0008_tense_guardian", - "breakpoints": true - }, - { - "idx": 9, - "version": "6", - "when": 1779523115991, - "tag": "0009_condemned_sandman", - "breakpoints": true - }, - { - "idx": 10, - "version": "6", - "when": 1779638205569, - "tag": "0010_abnormal_barracuda", - "breakpoints": true - }, - { - "idx": 11, - "version": "6", - "when": 1779798344630, - "tag": "0011_drop_todos_add_products", - "breakpoints": true - }, - { - "idx": 12, - "version": "6", - "when": 1779798763494, - "tag": "0012_project_layer", - "breakpoints": true - }, - { - "idx": 13, - "version": "6", - "when": 1779798974694, - "tag": "0013_invoice_billing", - "breakpoints": true - }, - { - "idx": 14, - "version": "6", - "when": 1748260000000, - "tag": "0014_migrate_todo_abilities", - "breakpoints": true - }, - { - "idx": 15, - "version": "6", - "when": 1748261000000, - "tag": "0015_grant_billing_abilities", - "breakpoints": true - } - ] +{ + "version": "7", + "dialect": "sqlite", + "entries": [ + { + "idx": 0, + "version": "6", + "when": 1779371197629, + "tag": "0000_outgoing_leo", + "breakpoints": true + }, + { + "idx": 1, + "version": "6", + "when": 1779426436331, + "tag": "0001_goofy_quasar", + "breakpoints": true + }, + { + "idx": 2, + "version": "6", + "when": 1779426582486, + "tag": "0002_sad_cable", + "breakpoints": true + }, + { + "idx": 3, + "version": "6", + "when": 1779427409718, + "tag": "0003_narrow_swordsman", + "breakpoints": true + }, + { + "idx": 4, + "version": "6", + "when": 1779457093776, + "tag": "0004_cloudy_nicolaos", + "breakpoints": true + }, + { + "idx": 5, + "version": "6", + "when": 1779458233338, + "tag": "0005_sweet_gideon", + "breakpoints": true + }, + { + "idx": 6, + "version": "6", + "when": 1779472084262, + "tag": "0006_cooing_vindicator", + "breakpoints": true + }, + { + "idx": 7, + "version": "6", + "when": 1748000000000, + "tag": "0007_roles_and_member_roles", + "breakpoints": true + }, + { + "idx": 8, + "version": "6", + "when": 1779522476117, + "tag": "0008_tense_guardian", + "breakpoints": true + }, + { + "idx": 9, + "version": "6", + "when": 1779523115991, + "tag": "0009_condemned_sandman", + "breakpoints": true + }, + { + "idx": 10, + "version": "6", + "when": 1779638205569, + "tag": "0010_abnormal_barracuda", + "breakpoints": true + }, + { + "idx": 11, + "version": "6", + "when": 1779798344630, + "tag": "0011_drop_todos_add_products", + "breakpoints": true + }, + { + "idx": 12, + "version": "6", + "when": 1779798763494, + "tag": "0012_project_layer", + "breakpoints": true + }, + { + "idx": 13, + "version": "6", + "when": 1779798974694, + "tag": "0013_invoice_billing", + "breakpoints": true + }, + { + "idx": 14, + "version": "6", + "when": 1748260000000, + "tag": "0014_migrate_todo_abilities", + "breakpoints": true + }, + { + "idx": 15, + "version": "6", + "when": 1748261000000, + "tag": "0015_grant_billing_abilities", + "breakpoints": true + }, + { + "idx": 16, + "version": "6", + "when": 1780291707683, + "tag": "0016_aromatic_jack_murdock", + "breakpoints": true + }, + { + "idx": 17, + "version": "6", + "when": 1780304292405, + "tag": "0017_brave_pete_wisdom", + "breakpoints": true + } + ] } \ No newline at end of file diff --git a/server/utils/crypto.ts b/server/utils/crypto.ts new file mode 100644 index 00000000..d29c3e7c --- /dev/null +++ b/server/utils/crypto.ts @@ -0,0 +1,29 @@ +interface Encrypted { ciphertext: string, iv: string } + +function toBase64(arr: Uint8Array): string { + return Buffer.from(arr).toString('base64') +} + +function fromBase64(str: string): Uint8Array { + return Uint8Array.from(Buffer.from(str, 'base64')) +} + +async function key(): Promise { + const secret = useRuntimeConfig().authSecret + if (!secret) + throw createError({ statusCode: 500, statusMessage: 'authSecret not configured' }) + const hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(secret)) + return crypto.subtle.importKey('raw', hash, 'AES-GCM', false, ['encrypt', 'decrypt']) +} + +export async function encryptSecret(plain: string): Promise { + const iv = new Uint8Array(12) + crypto.getRandomValues(iv) + const ct = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, await key(), new TextEncoder().encode(plain)) + return { ciphertext: toBase64(new Uint8Array(ct)), iv: toBase64(iv) } +} + +export async function decryptSecret(enc: Encrypted): Promise { + const pt = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: fromBase64(enc.iv) }, await key(), fromBase64(enc.ciphertext)) + return new TextDecoder().decode(pt) +} diff --git a/test/unit/crypto.test.ts b/test/unit/crypto.test.ts new file mode 100644 index 00000000..f2b20f82 --- /dev/null +++ b/test/unit/crypto.test.ts @@ -0,0 +1,41 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' + +describe('encryptSecret / decryptSecret', () => { + beforeEach(() => { + vi.stubGlobal('createError', ({ statusCode, statusMessage }: { statusCode: number, statusMessage: string }) => + Object.assign(new Error(statusMessage), { statusCode })) + vi.stubGlobal('useRuntimeConfig', () => ({ authSecret: 'unit-test-secret' })) + }) + afterEach(() => vi.unstubAllGlobals()) + + it('round-trips a plaintext string', async () => { + const { encryptSecret, decryptSecret } = await import('~~/server/utils/crypto') + const enc = await encryptSecret('cf-token-abc-123') + expect(enc.ciphertext).toBeTypeOf('string') + expect(enc.iv).toBeTypeOf('string') + expect(await decryptSecret(enc)).toBe('cf-token-abc-123') + }) + + it('produces a fresh IV per call (non-determinism)', async () => { + const { encryptSecret } = await import('~~/server/utils/crypto') + const a = await encryptSecret('same-plaintext') + const b = await encryptSecret('same-plaintext') + expect(a.iv).not.toBe(b.iv) + expect(a.ciphertext).not.toBe(b.ciphertext) + }) + + it('fails to decrypt when the secret has rotated', async () => { + const { encryptSecret } = await import('~~/server/utils/crypto') + const enc = await encryptSecret('cf-token') + + vi.stubGlobal('useRuntimeConfig', () => ({ authSecret: 'rotated-secret' })) + const { decryptSecret } = await import('~~/server/utils/crypto') + await expect(decryptSecret(enc)).rejects.toBeTruthy() + }) + + it('throws when authSecret is not configured', async () => { + vi.stubGlobal('useRuntimeConfig', () => ({ authSecret: '' })) + const { encryptSecret } = await import('~~/server/utils/crypto') + await expect(encryptSecret('x')).rejects.toMatchObject({ statusCode: 500 }) + }) +}) diff --git a/vitest.config.ts b/vitest.config.ts index 5ae40e35..3a732f39 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -13,6 +13,7 @@ const layerAliases = [ { find: /^#layers\/referral\/(.+?)(\.ts|\.vue)?$/, replacement: `${ROOT}/layers/referral/$1$2` }, { find: /^#layers\/system\/(.+?)(\.ts|\.vue)?$/, replacement: `${ROOT}/layers/system/$1$2` }, { find: /^#layers\/support\/(.+?)(\.ts|\.vue)?$/, replacement: `${ROOT}/layers/support/$1$2` }, + { find: /^#layers\/selfhost\/(.+?)(\.ts|\.vue)?$/, replacement: `${ROOT}/layers/selfhost/$1$2` }, ] const rootAliases = [ From 466e2026c725aa013bdc83e25b020b0fd8e626b1 Mon Sep 17 00:00:00 2001 From: NguyenHal Date: Mon, 1 Jun 2026 22:38:13 +0700 Subject: [PATCH 02/18] feat: update ui for deployment and env config --- bundle.json | 1 - bundle.sha256 | 1 - layers/selfhost/app/api/useSelfhostApi.ts | 8 +- .../Selfhost/SelfhostSecretImportModal.vue | 174 +++++++ .../Selfhost/SelfhostSecretsCard.vue | 182 ------- .../Selfhost/SelfhostSecretsTable.vue | 485 ++++++++++++++++++ .../selfhost/app/pages/settings/self-host.vue | 240 +++++---- .../server/api/selfhost/secrets.patch.ts | 13 +- .../api/selfhost/secrets/[key]/reveal.get.ts | 45 ++ layers/selfhost/server/db/schema.ts | 2 +- layers/selfhost/server/services/secrets.ts | 9 - layers/selfhost/shared/schemas/secret.ts | 5 + 12 files changed, 868 insertions(+), 297 deletions(-) delete mode 100644 bundle.json delete mode 100644 bundle.sha256 create mode 100644 layers/selfhost/app/components/Selfhost/SelfhostSecretImportModal.vue delete mode 100644 layers/selfhost/app/components/Selfhost/SelfhostSecretsCard.vue create mode 100644 layers/selfhost/app/components/Selfhost/SelfhostSecretsTable.vue create mode 100644 layers/selfhost/server/api/selfhost/secrets/[key]/reveal.get.ts diff --git a/bundle.json b/bundle.json deleted file mode 100644 index 5e8005fc..00000000 --- a/bundle.json +++ /dev/null @@ -1 +0,0 @@ -{ "main": "index.mjs", "compatibilityDate": "2025-02-11", "modules": { "chunks/_/auth.mjs": "aW1wb3J0e0ggYXMgdCxJIGFzIGEsSiBhcyBpLGMgYXMgcyxrIGFzIGUsZCBhcyBuLGggYXMgcix1IGFzIG99ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtTIGFzIGQsYiBhcyB1LHcgYXMgY31mcm9tIi4vc2Vzc2lvbi5tanMiO2Z1bmN0aW9uIGRlZmluZUF1dGhlbnRpY2F0ZWRIYW5kbGVyKGwpe3JldHVybiB0KGFzeW5jIHQ9Pnt2YXIgZyxoLGY7Y29uc3Qgdj1hKHQsInNlc3Npb25pZCIpfHxpKHQsIngtc2Vzc2lvbi1pZCIpO2lmKCF2KXRocm93IHMoe3N0YXR1c0NvZGU6NDAxLHN0YXR1c01lc3NhZ2U6IlVuYXV0aG9yaXplZCJ9KTtjb25zdCB3PWF3YWl0IGUuZ2V0KGBzZXNzaW9uOiR7dn1gKTtpZighdyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7bGV0IHo7aWYoKG51bGwhPShnPXcuZ2VuZXJhdGlvbik/ZzowKTxkKXtjb25zdCB0PWF3YWl0IG4ucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6cihvLmlkLHcuaWQpfSk7aWYoIXQpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDEsc3RhdHVzTWVzc2FnZToiVW5hdXRob3JpemVkIn0pO3o9YXdhaXQgdSh0LHtwcm92aWRlcjp3LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOncuYWN0aXZlT3JnYW5pemF0aW9uSWQsaW1wZXJzb25hdG9yOncuaW1wZXJzb25hdG9yfSksYXdhaXQgYyh2LHopfWVsc2Ugej17Li4udyxhYmlsaXRpZXM6bnVsbCE9KGg9dy5hYmlsaXRpZXMpP2g6W10sYWN0aXZlT3JnYW5pemF0aW9uSWQ6bnVsbCE9KGY9dy5hY3RpdmVPcmdhbml6YXRpb25JZCk/ZjpudWxsfTtyZXR1cm4gdC5jb250ZXh0LmF1dGhVc2VyPXosdC5jb250ZXh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkPXouYWN0aXZlT3JnYW5pemF0aW9uSWQsbCh0LHopfSl9ZXhwb3J0e2RlZmluZUF1dGhlbnRpY2F0ZWRIYW5kbGVyIGFzIGR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hdXRoLm1qcy5tYXAK", "chunks/_/billing.mjs": "aW1wb3J0e28gYXMgdCxzIGFzIGEsVCBhcyBuLGE3IGFzIG8sRyBhcyBzfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCByPXQoe2Ftb3VudDpuKCkuaW50KCkubWluKDFlNCkubWF4KDVlNyl9KSxlPXQoe2lkOm8oW2EoKSxzKCldKS50cmFuc2Zvcm0oU3RyaW5nKSx0cmFuc2ZlckFtb3VudDpuKCkuaW50KCkucG9zaXRpdmUoKSx0cmFuc2ZlclR5cGU6YSgpLGNvbnRlbnQ6YSgpLmRlZmF1bHQoIiIpLGNvZGU6YSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKX0pO2V4cG9ydHtyIGFzIEMsZSBhcyBTfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmlsbGluZy5tanMubWFwCg==", "chunks/_/casl.mjs": "aW1wb3J0e2MgYXMgZSxtIGFzIHR9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGF9ZnJvbSIuL2F1dGgubWpzIjtpbXBvcnR7cyBhcyBuLHAgYXMgcn1mcm9tIi4vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgbz1uZXcgTWFwO2FzeW5jIGZ1bmN0aW9uIGV2YWx1YXRlQWJpbGl0eVN0cmluZyh0LGEscyl7dmFyIGksbDtpZighbihhLmFiaWxpdGllcyx0KSlyZXR1cm57YWxsb3dlZDohMX07Y29uc3R7c3ViamVjdDp1LHNjb3BlOmR9PXIodCk7aWYoInNlbGYiIT09ZClyZXR1cm57YWxsb3dlZDohMH07Y29uc3QgYz1vLmdldCh1KTtpZighYyl0aHJvdyBlKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOmBTdWJqZWN0ICIke3V9IiBub3QgcmVnaXN0ZXJlZC4gQ2FsbCBkZWZpbmVTdWJqZWN0KCcke3V9JywgeyBmZXRjaCB9KSBiZWZvcmUgdXNpbmcgYSAiOnNlbGYiIGFiaWxpdHkuYH0pO2NvbnN0IGY9bnVsbCE9KGk9Yy5wYXJhbU5hbWUpP2k6ImlkIix3PW51bGwhPShsPWMub3duZXJLZXkpP2w6InVzZXJfaWQiLG09cy5nZXRQYXJhbShmKTtpZighbSlyZXR1cm57YWxsb3dlZDohMX07Y29uc3QgZz1hd2FpdCBjLmZldGNoKG0scy5ldmVudCk7cmV0dXJuIGc/Z1t3XSE9PWEuaWQ/e2FsbG93ZWQ6ITF9OnthbGxvd2VkOiEwLGV4dHJhczp7W3VdOmd9fTp7YWxsb3dlZDohMX19YXN5bmMgZnVuY3Rpb24gcnVuQXV0aG9yaXplZEhhbmRsZXIoYSxuLHIsbyl7dmFyIHM7Y29uc3QgaT1hd2FpdCBhc3luYyBmdW5jdGlvbihlLGEsbil7Y29uc3Qgcj17ZXZlbnQ6bixnZXRQYXJhbTplPT50KG4sZSl9O2Zvcihjb25zdCB0IG9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT1hd2FpdCBldmFsdWF0ZUFiaWxpdHlTdHJpbmcodCxhLHIpO2lmKGUuYWxsb3dlZClyZXR1cm4gZTtjb250aW51ZX1jb25zdCBlPWF3YWl0IHQobixhKTtpZihlLmFsbG93ZWQpe2NvbnN0e2FsbG93ZWQ6dCwuLi5hfT1lO3JldHVybnthbGxvd2VkOnQsZXh0cmFzOmF9fX1yZXR1cm57YWxsb3dlZDohMX19KGEsbixyKTtpZighaS5hbGxvd2VkKXRocm93IGUoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6IkZvcmJpZGRlbiJ9KTtyZXR1cm4gbyhyLHtzZXNzaW9uOm4sLi4ubnVsbCE9KHM9aS5leHRyYXMpP3M6e319KX1mdW5jdGlvbiBkZWZpbmVBdXRob3JpemVkSGFuZGxlcihlLHQpe3JldHVybiBhKChhLG4pPT5ydW5BdXRob3JpemVkSGFuZGxlcihlLG4sYSx0KSl9ZXhwb3J0e2RlZmluZUF1dGhvcml6ZWRIYW5kbGVyIGFzIGR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jYXNsLm1qcy5tYXAK", "chunks/_/cloudflare.mjs": "aW1wb3J0e2MgYXMgdH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgZT0iaHR0cHM6Ly9hcGkuY2xvdWRmbGFyZS5jb20vY2xpZW50L3Y0Ijthc3luYyBmdW5jdGlvbiBjZih0LGEscyxuKXtyZXR1cm4oYXdhaXQgZmV0Y2goYCR7ZX0ke3N9YCx7bWV0aG9kOmEsaGVhZGVyczp7QXV0aG9yaXphdGlvbjpgQmVhcmVyICR7dH1gLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpuP0pTT04uc3RyaW5naWZ5KG4pOnZvaWQgMH0pKS5qc29uKCl9YXN5bmMgZnVuY3Rpb24gY2ZSYXcodCxhLHMsbil7cmV0dXJuIGZldGNoKGAke2V9JHtzfWAse21ldGhvZDphLGhlYWRlcnM6e0F1dGhvcml6YXRpb246YEJlYXJlciAke3R9YCwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6dm9pZCAwfSl9YXN5bmMgZnVuY3Rpb24gdmVyaWZ5VG9rZW4oZSl7dmFyIGE7Y29uc3Qgcz1hd2FpdCBjZihlLCJHRVQiLCIvdXNlci90b2tlbnMvdmVyaWZ5Iik7aWYoImFjdGl2ZSIhPT0obnVsbD09KGE9bnVsbD09cz92b2lkIDA6cy5yZXN1bHQpP3ZvaWQgMDphLnN0YXR1cykpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiVG9rZW4gaXMgbm90IGFjdGl2ZSJ9KTtyZXR1cm4gcy5yZXN1bHR9YXN5bmMgZnVuY3Rpb24gbGlzdEFjY291bnRzKGUpe3ZhciBhO2NvbnN0IHM9YXdhaXQgY2YoZSwiR0VUIiwiL2FjY291bnRzIik7aWYoIShudWxsPT0oYT1udWxsPT1zP3ZvaWQgMDpzLnJlc3VsdCk/dm9pZCAwOmEubGVuZ3RoKSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJUb2tlbiBoYXMgbm8gYWNjb3VudCBhY2Nlc3MifSk7cmV0dXJuIHMucmVzdWx0Lm1hcCh0PT4oe2lkOnQuaWQsbmFtZTp0Lm5hbWV9KSl9YXN5bmMgZnVuY3Rpb24gcHJvYmVDYXBhYmlsaXRpZXModCxhKXtjb25zdCBzPWBfcHJvYmUtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX1gLG49W107e2NvbnN0IG89bmV3IEZvcm1EYXRhO28uYXBwZW5kKCJtZXRhZGF0YSIsbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHttYWluX21vZHVsZToiaW5kZXgubWpzIixjb21wYXRpYmlsaXR5X2RhdGU6IjIwMjUtMDEtMDEifSldLHt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pKSxvLmFwcGVuZCgiaW5kZXgubWpzIixuZXcgQmxvYihbJ2V4cG9ydCBkZWZhdWx0IHsgZmV0Y2g6ICgpID0+IG5ldyBSZXNwb25zZSgiIikgfSddLHt0eXBlOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0K21vZHVsZSJ9KSwiaW5kZXgubWpzIik7Y29uc3QgaT1hd2FpdCBmZXRjaChgJHtlfS9hY2NvdW50cy8ke2F9L3dvcmtlcnMvc2NyaXB0cy8ke3N9YCx7bWV0aG9kOiJQVVQiLGhlYWRlcnM6e0F1dGhvcml6YXRpb246YEJlYXJlciAke3R9YH0sYm9keTpvfSk7NDAzPT09aS5zdGF0dXM/bi5wdXNoKCJXb3JrZXJzIFNjcmlwdHMiKTppLm9rJiZhd2FpdCBjZlJhdyh0LCJERUxFVEUiLGAvYWNjb3VudHMvJHthfS93b3JrZXJzL3NjcmlwdHMvJHtzfWApfXtjb25zdCBlPWF3YWl0IGNmKHQsIlBPU1QiLGAvYWNjb3VudHMvJHthfS9kMS9kYXRhYmFzZWAse25hbWU6c30pOyEobnVsbD09ZT92b2lkIDA6ZS5zdWNjZXNzKSYmSlNPTi5zdHJpbmdpZnkoZSkuaW5jbHVkZXMoImZvcmJpZGRlbiIpP24ucHVzaCgiRDEiKToobnVsbD09ZT92b2lkIDA6ZS5zdWNjZXNzKSYmYXdhaXQgY2ZSYXcodCwiREVMRVRFIixgL2FjY291bnRzLyR7YX0vZDEvZGF0YWJhc2UvJHtlLnJlc3VsdC51dWlkfWApfXtjb25zdCBlPWF3YWl0IGNmKHQsIlBPU1QiLGAvYWNjb3VudHMvJHthfS9zdG9yYWdlL2t2L25hbWVzcGFjZXNgLHt0aXRsZTpzfSk7IShudWxsPT1lP3ZvaWQgMDplLnN1Y2Nlc3MpJiZKU09OLnN0cmluZ2lmeShlKS5pbmNsdWRlcygiZm9yYmlkZGVuIik/bi5wdXNoKCJLViIpOihudWxsPT1lP3ZvaWQgMDplLnN1Y2Nlc3MpJiZhd2FpdCBjZlJhdyh0LCJERUxFVEUiLGAvYWNjb3VudHMvJHthfS9zdG9yYWdlL2t2L25hbWVzcGFjZXMvJHtlLnJlc3VsdC5pZH1gKX17Y29uc3QgZT1hd2FpdCBjZih0LCJQT1NUIixgL2FjY291bnRzLyR7YX0vcjIvYnVja2V0c2Ase25hbWU6c30pO2lmKG51bGw9PWU/dm9pZCAwOmUuc3VjY2Vzcylhd2FpdCBjZlJhdyh0LCJERUxFVEUiLGAvYWNjb3VudHMvJHthfS9yMi9idWNrZXRzLyR7c31gKTtlbHNle2NvbnN0IHQ9SlNPTi5zdHJpbmdpZnkoZSkudG9Mb3dlckNhc2UoKTt0LmluY2x1ZGVzKCJmb3JiaWRkZW4iKT9uLnB1c2goIlIyIik6L25vdCBlbmFibGVkfHN1YnNjcmlwdGlvbnx0ZXJtcy8udGVzdCh0KSYmbi5wdXNoKCJSMiAobm90IGVuYWJsZWQgb24gYWNjb3VudCDigJQgYWNjZXB0IFIyIHRlcm1zIGluIENGIGRhc2hib2FyZCBmaXJzdCkiKX19NDAzPT09KGF3YWl0IGNmUmF3KHQsIkdFVCIsYC9hY2NvdW50cy8ke2F9L3dvcmtlcnMvc3ViZG9tYWluYCkpLnN0YXR1cyYmbi5wdXNoKCJXb3JrZXJzIFN1YmRvbWFpbiIpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIGVuc3VyZVJlc291cmNlKHQsZSxhLHMpe3ZhciBuLG87Y29uc3QgaT1hd2FpdCBjZih0LCJQT1NUIixlLGEpO2lmKG51bGw9PWk/dm9pZCAwOmkuc3VjY2VzcylyZXR1cm4gaS5yZXN1bHRbc107Y29uc3QgYz1hd2FpdCBjZih0LCJHRVQiLGUpLHI9bnVsbD09KG49bnVsbD09Yz92b2lkIDA6Yy5yZXN1bHQpP3ZvaWQgMDpuLmZpbmQodD0+dC5uYW1lPT09YS5uYW1lfHx0LnRpdGxlPT09YS50aXRsZSk7cmV0dXJuIG51bGwhPShvPW51bGw9PXI/dm9pZCAwOnJbc10pP286bnVsbH1hc3luYyBmdW5jdGlvbiBwcm92aXNpb25SZXNvdXJjZXMoZSxhLHM9Im51eHQtdGVtcGxhdGUiKXtjb25zdCBuPWF3YWl0IGVuc3VyZVJlc291cmNlKGUsYC9hY2NvdW50cy8ke2F9L2QxL2RhdGFiYXNlYCx7bmFtZTpgJHtzfS1kYmB9LCJ1dWlkIiksbz1hd2FpdCBlbnN1cmVSZXNvdXJjZShlLGAvYWNjb3VudHMvJHthfS9zdG9yYWdlL2t2L25hbWVzcGFjZXNgLHt0aXRsZTpgJHtzfS1rdmB9LCJpZCIpO2lmKGF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsYSxzKXt2YXIgbixvLGksYyxyO2NvbnN0IHU9YXdhaXQgY2YoZSwiUE9TVCIsYC9hY2NvdW50cy8ke2F9L3IyL2J1Y2tldHNgLHtuYW1lOnN9KTtpZihudWxsPT11P3ZvaWQgMDp1LnN1Y2Nlc3MpcmV0dXJuO2NvbnN0IGw9YXdhaXQgY2YoZSwiR0VUIixgL2FjY291bnRzLyR7YX0vcjIvYnVja2V0c2ApO2lmKG51bGw9PShvPW51bGw9PShuPW51bGw9PWw/dm9pZCAwOmwucmVzdWx0KT92b2lkIDA6bi5idWNrZXRzKT92b2lkIDA6by5zb21lKHQ9PnQubmFtZT09PXMpKXJldHVybjtjb25zdCBkPW51bGwhPShyPW51bGw9PShjPW51bGw9PShpPW51bGw9PXU/dm9pZCAwOnUuZXJyb3JzKT92b2lkIDA6aVswXSk/dm9pZCAwOmMubWVzc2FnZSk/cjoiVW5rbm93biByZWFzb24iLHA9L25vdCBlbmFibGVkfHN1YnNjcmlwdGlvbnx0ZXJtcy9pLnRlc3QoZCk/IiDigJQgb3BlbiB0aGUgUjIgZGFzaGJvYXJkIGFuZCBlbmFibGUgUjIgKGZyZWUgdGllciBpcyBmaW5lKSwgdGhlbiByZXRyeS4iOiIiO3Rocm93IHQoe3N0YXR1c0NvZGU6NTAyLHN0YXR1c01lc3NhZ2U6YEZhaWxlZCB0byBjcmVhdGUgUjIgYnVja2V0ICcke3N9JzogJHtkfSR7cH1gfSl9KGUsYSxgJHtzfS1ibG9iYCksIW58fCFvKXRocm93IHQoe3N0YXR1c0NvZGU6NTAyLHN0YXR1c01lc3NhZ2U6IkZhaWxlZCB0byBwcm92aXNpb24gcmVxdWlyZWQgcmVzb3VyY2VzIChEMSBvciBLVikifSk7cmV0dXJue2RiSWQ6bixrdklkOm8sYnVja2V0TmFtZTpgJHtzfS1ibG9iYH19YXN5bmMgZnVuY3Rpb24gYXBwbHlNaWdyYXRpb25zKHQsZSxhLHMpe3ZhciBuLG8saTthd2FpdCBjZih0LCJQT1NUIixgL2FjY291bnRzLyR7ZX0vZDEvZGF0YWJhc2UvJHthfS9xdWVyeWAse3NxbDoiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgZDFfbWlncmF0aW9ucyAobmFtZSBURVhUIFBSSU1BUlkgS0VZLCBhcHBsaWVkX2F0IFRFWFQpIn0pO2Zvcihjb25zdCBjIG9mIHMpe2NvbnN0IHM9YXdhaXQgY2YodCwiUE9TVCIsYC9hY2NvdW50cy8ke2V9L2QxL2RhdGFiYXNlLyR7YX0vcXVlcnlgLHtzcWw6IlNFTEVDVCBuYW1lIEZST00gZDFfbWlncmF0aW9ucyBXSEVSRSBuYW1lID0gPyIscGFyYW1zOltjLm5hbWVdfSk7KG51bGw9PShpPW51bGw9PShvPW51bGw9PShuPW51bGw9PXM/dm9pZCAwOnMucmVzdWx0KT92b2lkIDA6blswXSk/dm9pZCAwOm8ucmVzdWx0cyk/dm9pZCAwOmkubGVuZ3RoKXx8KGF3YWl0IGNmKHQsIlBPU1QiLGAvYWNjb3VudHMvJHtlfS9kMS9kYXRhYmFzZS8ke2F9L3F1ZXJ5YCx7c3FsOmMuc3FsfSksYXdhaXQgY2YodCwiUE9TVCIsYC9hY2NvdW50cy8ke2V9L2QxL2RhdGFiYXNlLyR7YX0vcXVlcnlgLHtzcWw6IklOU0VSVCBJTlRPIGQxX21pZ3JhdGlvbnMgKG5hbWUsIGFwcGxpZWRfYXQpIFZBTFVFUyAoPywgZGF0ZXRpbWUoKSkiLHBhcmFtczpbYy5uYW1lXX0pKX19Y29uc3QgYT17anM6ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLG1qczoiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsY2pzOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iixjc3M6InRleHQvY3NzIixodG1sOiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLGh0bToidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iixqc29uOiJhcHBsaWNhdGlvbi9qc29uIixtYXA6ImFwcGxpY2F0aW9uL2pzb24iLHR4dDoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIseG1sOiJhcHBsaWNhdGlvbi94bWwiLHN2ZzoiaW1hZ2Uvc3ZnK3htbCIscG5nOiJpbWFnZS9wbmciLGpwZzoiaW1hZ2UvanBlZyIsanBlZzoiaW1hZ2UvanBlZyIsZ2lmOiJpbWFnZS9naWYiLHdlYnA6ImltYWdlL3dlYnAiLGF2aWY6ImltYWdlL2F2aWYiLGljbzoiaW1hZ2UveC1pY29uIix3b2ZmOiJmb250L3dvZmYiLHdvZmYyOiJmb250L3dvZmYyIix0dGY6ImZvbnQvdHRmIixvdGY6ImZvbnQvb3RmIixlb3Q6ImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0Iix3YXNtOiJhcHBsaWNhdGlvbi93YXNtIixwZGY6ImFwcGxpY2F0aW9uL3BkZiIsd2VibWFuaWZlc3Q6ImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24ifTtmdW5jdGlvbiBtaW1lRnJvbVBhdGgodCl7dmFyIGUscyxuO2NvbnN0IG89bnVsbCE9KHM9bnVsbD09KGU9dC5zcGxpdCgiLiIpLnBvcCgpKT92b2lkIDA6ZS50b0xvd2VyQ2FzZSgpKT9zOiIiO3JldHVybiBudWxsIT0obj1hW29dKT9uOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWFzeW5jIGZ1bmN0aW9uIHVwbG9hZEFzc2V0cyhhLHMsbixvKXt2YXIgaSxjLHIsdSxsLGQ7Y29uc3QgcD1PYmplY3QuZW50cmllcyhvKTtpZigwPT09cC5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZj17fSxtPXt9LGI9e307Zm9yKGNvbnN0W3QsZV1vZiBwKXtjb25zdCBhPVVpbnQ4QXJyYXkuZnJvbShhdG9iKGUpLHQ9PnQuY2hhckNvZGVBdCgwKSkscz1hd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgiU0hBLTI1NiIsYS5idWZmZXIuc2xpY2UoYS5ieXRlT2Zmc2V0LGEuYnl0ZU9mZnNldCthLmJ5dGVMZW5ndGgpKSxuPUFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkocykpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpLnNsaWNlKDAsMzIpO2ZbdF09e2hhc2g6bixzaXplOmEuYnl0ZUxlbmd0aH0sbVtuXT1lLGJbbl09bWltZUZyb21QYXRoKHQpfWNvbnN0IHc9YXdhaXQgY2YoYSwiUE9TVCIsYC9hY2NvdW50cy8ke3N9L3dvcmtlcnMvc2NyaXB0cy8ke259L2Fzc2V0cy11cGxvYWQtc2Vzc2lvbmAse21hbmlmZXN0OmZ9KTtpZighKG51bGw9PXc/dm9pZCAwOncuc3VjY2Vzcyl8fCF3LnJlc3VsdCl0aHJvdyB0KHtzdGF0dXNDb2RlOjUwMixzdGF0dXNNZXNzYWdlOmBGYWlsZWQgdG8gc3RhcnQgYXNzZXRzIHVwbG9hZCBzZXNzaW9uOiAke251bGwhPShyPW51bGw9PShjPW51bGw9PShpPW51bGw9PXc/dm9pZCAwOncuZXJyb3JzKT92b2lkIDA6aVswXSk/dm9pZCAwOmMubWVzc2FnZSk/cjoidW5rbm93biJ9YH0pO2xldCB2PXcucmVzdWx0Lmp3dDtjb25zdCBoPW51bGwhPSh1PXcucmVzdWx0LmJ1Y2tldHMpP3U6W107Zm9yKGNvbnN0IGEgb2YgaCl7aWYoMD09PWEubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IG49bmV3IEZvcm1EYXRhO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0IGU9bVt0XSxhPW51bGwhPShsPWJbdF0pP2w6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI7bi5hcHBlbmQodCxuZXcgQmxvYihbZV0se3R5cGU6YX0pLHQpfWNvbnN0IG89YXdhaXQgZmV0Y2goYCR7ZX0vYWNjb3VudHMvJHtzfS93b3JrZXJzL2Fzc2V0cy91cGxvYWQ/YmFzZTY0PXRydWVgLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6e0F1dGhvcml6YXRpb246YEJlYXJlciAke3Z9YH0sYm9keTpufSk7aWYoIW8ub2spdGhyb3cgdCh7c3RhdHVzQ29kZTo1MDIsc3RhdHVzTWVzc2FnZTpgQXNzZXQgYnVja2V0IHVwbG9hZCBmYWlsZWQgKCR7by5zdGF0dXN9KTogJHthd2FpdCBvLnRleHQoKX1gfSk7Y29uc3QgaT1hd2FpdCBvLmpzb24oKTsobnVsbD09KGQ9aS5yZXN1bHQpP3ZvaWQgMDpkLmp3dCkmJih2PWkucmVzdWx0Lmp3dCl9cmV0dXJuIHZ9YXN5bmMgZnVuY3Rpb24gdXBsb2FkV29ya2VyKGEscyxuLG8saSxjLHIpe2NvbnN0IHU9bmV3IEZvcm1EYXRhLGw9W3t0eXBlOiJkMSIsbmFtZToiREIiLGlkOmkuZGJJZH0se3R5cGU6Imt2X25hbWVzcGFjZSIsbmFtZToiS1YiLG5hbWVzcGFjZV9pZDppLmt2SWR9LHt0eXBlOiJyMl9idWNrZXQiLG5hbWU6IkJMT0IiLGJ1Y2tldF9uYW1lOmkuYnVja2V0TmFtZX0se3R5cGU6InBsYWluX3RleHQiLG5hbWU6IkRFUExPWUVEX1ZFUlNJT04iLHRleHQ6Y31dO3ImJmwucHVzaCh7dHlwZToiYXNzZXRzIixuYW1lOiJBU1NFVFMifSk7Y29uc3QgZD17bWFpbl9tb2R1bGU6by5tYWluLGNvbXBhdGliaWxpdHlfZGF0ZTpvLmNvbXBhdGliaWxpdHlEYXRlLGNvbXBhdGliaWxpdHlfZmxhZ3M6WyJub2RlanNfY29tcGF0Il0sYmluZGluZ3M6bH07ZnVuY3Rpb24gYjY0ZGVjb2RlKHQpe2NvbnN0IGU9VWludDhBcnJheS5mcm9tKGF0b2IodCksdD0+dC5jaGFyQ29kZUF0KDApKTtyZXR1cm4gZS5idWZmZXIuc2xpY2UoZS5ieXRlT2Zmc2V0LGUuYnl0ZU9mZnNldCtlLmJ5dGVMZW5ndGgpfXImJihkLmFzc2V0cz17and0OnIsY29uZmlnOntodG1sX2hhbmRsaW5nOiJhdXRvLXRyYWlsaW5nLXNsYXNoIixub3RfZm91bmRfaGFuZGxpbmc6InNpbmdsZS1wYWdlLWFwcGxpY2F0aW9uIn19KSx1LmFwcGVuZCgibWV0YWRhdGEiLG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkKV0se3R5cGU6ImFwcGxpY2F0aW9uL2pzb24ifSkpLHUuYXBwZW5kKG8ubWFpbixuZXcgQmxvYihbYjY0ZGVjb2RlKG8ubW9kdWxlc1tvLm1haW5dKV0se3R5cGU6ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQrbW9kdWxlIn0pLG8ubWFpbik7Zm9yKGNvbnN0W3QsZV1vZiBPYmplY3QuZW50cmllcyhvLm1vZHVsZXMpKXQhPT1vLm1haW4mJnUuYXBwZW5kKHQsbmV3IEJsb2IoW2I2NGRlY29kZShlKV0se3R5cGU6ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQrbW9kdWxlIn0pLHQpO2NvbnN0IHA9YXdhaXQgZmV0Y2goYCR7ZX0vYWNjb3VudHMvJHtzfS93b3JrZXJzL3NjcmlwdHMvJHtufWAse21ldGhvZDoiUFVUIixoZWFkZXJzOntBdXRob3JpemF0aW9uOmBCZWFyZXIgJHthfWB9LGJvZHk6dX0pO2lmKCFwLm9rKXRocm93IHQoe3N0YXR1c0NvZGU6NTAyLHN0YXR1c01lc3NhZ2U6YFdvcmtlciB1cGxvYWQgZmFpbGVkOiAke2F3YWl0IHAudGV4dCgpfWB9KX1hc3luYyBmdW5jdGlvbiBzZXRXb3JrZXJTZWNyZXQoZSxhLHMsbixvLGk9InNlY3JldF90ZXh0Iil7dmFyIGMscix1O2NvbnN0IGw9YXdhaXQgY2YoZSwiUFVUIixgL2FjY291bnRzLyR7YX0vd29ya2Vycy9zY3JpcHRzLyR7c30vc2VjcmV0c2Ase25hbWU6bix0ZXh0Om8sdHlwZTppfSk7aWYoIShudWxsPT1sP3ZvaWQgMDpsLnN1Y2Nlc3MpKXtjb25zdCBlPW51bGwhPSh1PW51bGw9PShyPW51bGw9PShjPW51bGw9PWw/dm9pZCAwOmwuZXJyb3JzKT92b2lkIDA6Y1swXSk/dm9pZCAwOnIubWVzc2FnZSk/dToiVW5rbm93biBlcnJvciI7dGhyb3cgdCh7c3RhdHVzQ29kZTo1MDIsc3RhdHVzTWVzc2FnZTpgRmFpbGVkIHRvIHNldCB3b3JrZXIgc2VjcmV0ICR7bn06ICR7ZX1gfSl9fWFzeW5jIGZ1bmN0aW9uIGVuYWJsZVN1YmRvbWFpbihlLGEscyl7dmFyIG47Y29uc3Qgbz1hd2FpdCBjZihlLCJHRVQiLGAvYWNjb3VudHMvJHthfS93b3JrZXJzL3N1YmRvbWFpbmApLGk9bnVsbD09KG49bnVsbD09bz92b2lkIDA6by5yZXN1bHQpP3ZvaWQgMDpuLnN1YmRvbWFpbjtpZighaSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyB3b3JrZXJzLmRldiBzdWJkb21haW4gY29uZmlndXJlZCBmb3IgdGhpcyBhY2NvdW50In0pO3JldHVybiBhd2FpdCBjZihlLCJQT1NUIixgL2FjY291bnRzLyR7YX0vd29ya2Vycy9zY3JpcHRzLyR7c30vc3ViZG9tYWluYCx7ZW5hYmxlZDohMH0pLGBodHRwczovLyR7c30uJHtpfS53b3JrZXJzLmRldmB9ZXhwb3J0e3Byb3Zpc2lvblJlc291cmNlcyBhcyBhLGFwcGx5TWlncmF0aW9ucyBhcyBiLHVwbG9hZFdvcmtlciBhcyBjLGVuYWJsZVN1YmRvbWFpbiBhcyBlLGxpc3RBY2NvdW50cyBhcyBsLHByb2JlQ2FwYWJpbGl0aWVzIGFzIHAsc2V0V29ya2VyU2VjcmV0IGFzIHMsdXBsb2FkQXNzZXRzIGFzIHUsdmVyaWZ5VG9rZW4gYXMgdn07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb3VkZmxhcmUubWpzLm1hcAo=", "chunks/_/deploy.mjs": "aW1wb3J0e28scyBhcyBufWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBhPW8oe3Rva2VuOm4oKS5taW4oMjApLm1heCgyMDApLm9wdGlvbmFsKCksYWNjb3VudF9pZDpuKCkubWluKDgpLm1heCg2NCkub3B0aW9uYWwoKX0pLHQ9byh7dG9rZW46bigpLm1pbigyMCkubWF4KDIwMCl9KTtleHBvcnR7dCBhcyBDLGEgYXMgRH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlcGxveS5tanMubWFwCg==", "chunks/_/dispatch.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIGksZiBhcyBhLGcgYXMgbixoIGFzIHQsdSBhcyBvLGkgYXMgcixqIGFzIHMsbH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2kgYXMgbX1mcm9tIi4vdXNlci1lbWFpbC5tanMiO2FzeW5jIGZ1bmN0aW9uIGdldERpc3BhdGNoT3B0aW9ucygpe2NvbnN0IG89YXdhaXQgZS5zZWxlY3Qoe2lkOmkuaWQsbmFtZTppLm5hbWV9KS5mcm9tKGkpLm9yZGVyQnkoYShpLm5hbWUpKSxyPWF3YWl0IGUuc2VsZWN0KHtpZDpuLmlkLG5hbWU6bi5uYW1lLG9yZ05hbWU6aS5uYW1lfSkuZnJvbShuKS5pbm5lckpvaW4oaSx0KGkuaWQsbi5vcmdhbml6YXRpb25faWQpKS5vcmRlckJ5KGEoaS5uYW1lKSxhKG4ubmFtZSkpO3JldHVybntvcmdhbml6YXRpb25zOm8ubWFwKGU9Pih7aWQ6ZS5pZCxsYWJlbDplLm5hbWV9KSkscm9sZXM6ci5tYXAoZT0+KHtpZDplLmlkLGxhYmVsOmAke2Uub3JnTmFtZX0gwrcgJHtlLm5hbWV9YH0pKX19Y29uc3QgYz17aWQ6by5pZCxwcmltYXJ5X2VtYWlsOm8ucHJpbWFyeV9lbWFpbCxuYW1lOm8ubmFtZSxub3RpZmljYXRpb25fcHJlZnM6by5ub3RpZmljYXRpb25fcHJlZnN9O2FzeW5jIGZ1bmN0aW9uIHJlc29sdmVEaXNwYXRjaFJlY2lwaWVudHMoaSl7Y29uc3QgYT1uZXcgTWFwLGFkZD1lPT57Zm9yKGNvbnN0IGkgb2YgZSlhLnNldChpLmlkLGkpfTtpLmFsbFVzZXJzP2FkZChhd2FpdCBlLnNlbGVjdChjKS5mcm9tKG8pKTooaS5vcmdhbml6YXRpb25JZHMubGVuZ3RoJiZhZGQoYXdhaXQgZS5zZWxlY3QoYykuZnJvbShyKS5pbm5lckpvaW4obyx0KG8uaWQsci51c2VyX2lkKSkud2hlcmUocyhyLm9yZ2FuaXphdGlvbl9pZCxpLm9yZ2FuaXphdGlvbklkcykpKSxpLnJvbGVJZHMubGVuZ3RoJiZhZGQoYXdhaXQgZS5zZWxlY3QoYykuZnJvbShsKS5pbm5lckpvaW4ocix0KHIuaWQsbC5tZW1iZXJfaWQpKS5pbm5lckpvaW4obyx0KG8uaWQsci51c2VyX2lkKSkud2hlcmUocyhsLnJvbGVfaWQsaS5yb2xlSWRzKSkpLGkuZW1haWxzLmxlbmd0aCYmYWRkKGF3YWl0IGUuc2VsZWN0KGMpLmZyb20obykud2hlcmUocyhvLnByaW1hcnlfZW1haWwsaS5lbWFpbHMpKSkpO2NvbnN0IG49Wy4uLmEudmFsdWVzKCldLGQ9bi5maWx0ZXIoZT0+bShlLm5vdGlmaWNhdGlvbl9wcmVmcykpO3JldHVybntlbmFibGVkOmQsc2tpcHBlZENvdW50Om4ubGVuZ3RoLWQubGVuZ3RoLHRvdGFsOm4ubGVuZ3RofX1mdW5jdGlvbiBjb21wb3NlRW1haWxIdG1sKGUsaSl7cmV0dXJuYDwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5IHN0eWxlPSJmb250LWZhbWlseTpzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojMTExMTExIj48aDEgc3R5bGU9ImZvbnQtc2l6ZToxOHB4O21hcmdpbjowIDAgMTJweCI+JHtlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNlKC8iL2csIiZxdW90OyIpLnJlcGxhY2UoLycvZywiJiMzOTsiKX08L2gxPjxkaXY+JHtpfTwvZGl2PjwvYm9keT48L2h0bWw+YH1leHBvcnR7Y29tcG9zZUVtYWlsSHRtbCBhcyBjLGdldERpc3BhdGNoT3B0aW9ucyBhcyBnLHJlc29sdmVEaXNwYXRjaFJlY2lwaWVudHMgYXMgcn07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRpc3BhdGNoLm1qcy5tYXAK", "chunks/_/dispatch2.mjs": "aW1wb3J0e28gYXMgZSxhIGFzIHQscyBhcyBhLGIgYXMgbn1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgaT1lKHthbGxVc2VyczpuKCkuZGVmYXVsdCghMSksb3JnYW5pemF0aW9uSWRzOnQoYSgpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSkscm9sZUlkczp0KGEoKS5taW4oMSkpLm1heCgxMDApLmRlZmF1bHQoW10pLGVtYWlsczp0KGEoKS50cmltKCkudG9Mb3dlckNhc2UoKS5lbWFpbCgpKS5tYXgoMjAwKS5kZWZhdWx0KFtdKX0pLnJlZmluZShlPT5lLmFsbFVzZXJzfHxlLm9yZ2FuaXphdGlvbklkcy5sZW5ndGg+MHx8ZS5yb2xlSWRzLmxlbmd0aD4wfHxlLmVtYWlscy5sZW5ndGg+MCx7bWVzc2FnZToiU2VsZWN0IGF0IGxlYXN0IG9uZSByZWNpcGllbnQgY3JpdGVyaW9uIn0pLHI9LzxbXj5dKj4vZyxzPS8mbmJzcDsvZ2ksbz0vPGltZ1xiL2k7Y29uc3QgbD1lKHtmaWx0ZXI6aSxzdWJqZWN0OmEoKS50cmltKCkubWluKDEpLm1heCgyMDApLnJlZ2V4KC9eW15cclxuXSokLywiU3ViamVjdCBjYW5ub3QgY29udGFpbiBsaW5lIGJyZWFrcyIpLGJvZHk6YSgpLnRyaW0oKS5taW4oMSkubWF4KDVlNCkucmVmaW5lKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UociwiIikucmVwbGFjZShzLCIgIikudHJpbSgpLmxlbmd0aD4wfHxvLnRlc3QoZSl9LCJCb2R5IGNhbm5vdCBiZSBlbXB0eSIpfSk7ZXhwb3J0e2kgYXMgRCxsIGFzIGF9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kaXNwYXRjaDIubWpzLm1hcAo=", "chunks/_/error-500.mjs": "aW1wb3J0e1IgYXMgZX1mcm9tIi4vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IHQ9e2FwcE5hbWU6Ik51eHQiLHN0YXR1czo1MDAsc3RhdHVzVGV4dDoiSW50ZXJuYWwgc2VydmVyIGVycm9yIixkZXNjcmlwdGlvbjoiVGhpcyBwYWdlIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlLiIscmVmcmVzaDoiUmVmcmVzaCB0aGlzIHBhZ2UifSx0ZW1wbGF0ZT1yPT4ocj17Li4udCwuLi5yfSwnPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjx0aXRsZT4nK2Uoci5zdGF0dXMpKyIgLSAiK2Uoci5zdGF0dXNUZXh0KSsiIHwgIitlKHIuYXBwTmFtZSkrJzwvdGl0bGU+PG1ldGEgY2hhcnNldD0idXRmLTgiPjxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtaW5pbXVtLXNjYWxlPTEuMCIgbmFtZT0idmlld3BvcnQiPjxzY3JpcHQ+IWZ1bmN0aW9uKCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZighKGUmJmUuc3VwcG9ydHMmJmUuc3VwcG9ydHMoIm1vZHVsZXByZWxvYWQiKSkpe2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdXCcpKXIoZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2Zvcihjb25zdCBvIG9mIGUpaWYoImNoaWxkTGlzdCI9PT1vLnR5cGUpZm9yKGNvbnN0IGUgb2Ygby5hZGRlZE5vZGVzKSJMSU5LIj09PWUudGFnTmFtZSYmIm1vZHVsZXByZWxvYWQiPT09ZS5yZWwmJnIoZSl9KS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfWZ1bmN0aW9uIHIoZSl7aWYoZS5lcClyZXR1cm47ZS5lcD0hMDtjb25zdCByPWZ1bmN0aW9uKGUpe2NvbnN0IHI9e307cmV0dXJuIGUuaW50ZWdyaXR5JiYoci5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHkpLGUucmVmZXJyZXJQb2xpY3kmJihyLnJlZmVycmVyUG9saWN5PWUucmVmZXJyZXJQb2xpY3kpLCJ1c2UtY3JlZGVudGlhbHMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjoiYW5vbnltb3VzIj09PWUuY3Jvc3NPcmlnaW4/ci5jcmVkZW50aWFscz0ib21pdCI6ci5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLHJ9KGUpO2ZldGNoKGUuaHJlZixyKX19KCk7PFwvc2NyaXB0PjxzdHlsZT4qLDphZnRlciw6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS11bi1kZWZhdWx0LWJvcmRlci1jb2xvciwjZTVlN2ViKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjA7Ym94LXNpemluZzpib3JkZXItYm94fTphZnRlciw6YmVmb3Jley0tdW4tY29udGVudDoiIn1odG1se2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjB9aDEsaDJ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1oMSxoMixwe21hcmdpbjowfSosOmFmdGVyLDpiZWZvcmV7LS11bi1yb3RhdGU6MDstLXVuLXJvdGF0ZS14OjA7LS11bi1yb3RhdGUteTowOy0tdW4tcm90YXRlLXo6MDstLXVuLXNjYWxlLXg6MTstLXVuLXNjYWxlLXk6MTstLXVuLXNjYWxlLXo6MTstLXVuLXNrZXcteDowOy0tdW4tc2tldy15OjA7LS11bi10cmFuc2xhdGUteDowOy0tdW4tdHJhbnNsYXRlLXk6MDstLXVuLXRyYW5zbGF0ZS16OjA7LS11bi1wYW4teDogOy0tdW4tcGFuLXk6IDstLXVuLXBpbmNoLXpvb206IDstLXVuLXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdW4tb3JkaW5hbDogOy0tdW4tc2xhc2hlZC16ZXJvOiA7LS11bi1udW1lcmljLWZpZ3VyZTogOy0tdW4tbnVtZXJpYy1zcGFjaW5nOiA7LS11bi1udW1lcmljLWZyYWN0aW9uOiA7LS11bi1ib3JkZXItc3BhY2luZy14OjA7LS11bi1ib3JkZXItc3BhY2luZy15OjA7LS11bi1yaW5nLW9mZnNldC1zaGFkb3c6MCAwIHRyYW5zcGFyZW50Oy0tdW4tcmluZy1zaGFkb3c6MCAwIHRyYW5zcGFyZW50Oy0tdW4tc2hhZG93LWluc2V0OiA7LS11bi1zaGFkb3c6MCAwIHRyYW5zcGFyZW50Oy0tdW4tcmluZy1pbnNldDogOy0tdW4tcmluZy1vZmZzZXQtd2lkdGg6MHB4Oy0tdW4tcmluZy1vZmZzZXQtY29sb3I6I2ZmZjstLXVuLXJpbmctd2lkdGg6MHB4Oy0tdW4tcmluZy1jb2xvcjpyZ2JhKDE0NywxOTcsMjUzLC41KTstLXVuLWJsdXI6IDstLXVuLWJyaWdodG5lc3M6IDstLXVuLWNvbnRyYXN0OiA7LS11bi1kcm9wLXNoYWRvdzogOy0tdW4tZ3JheXNjYWxlOiA7LS11bi1odWUtcm90YXRlOiA7LS11bi1pbnZlcnQ6IDstLXVuLXNhdHVyYXRlOiA7LS11bi1zZXBpYTogOy0tdW4tYmFja2Ryb3AtYmx1cjogOy0tdW4tYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdW4tYmFja2Ryb3AtY29udHJhc3Q6IDstLXVuLWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdW4tYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdW4tYmFja2Ryb3AtaW52ZXJ0OiA7LS11bi1iYWNrZHJvcC1vcGFjaXR5OiA7LS11bi1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdW4tYmFja2Ryb3Atc2VwaWE6IH0uZ3JpZHtkaXNwbGF5OmdyaWR9Lm1iLTJ7bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItNHttYXJnaW4tYm90dG9tOjFyZW19Lm1heC13LTUyMHB4e21heC13aWR0aDo1MjBweH0ubWluLWgtc2NyZWVue21pbi1oZWlnaHQ6MTAwdmh9LnBsYWNlLWNvbnRlbnQtY2VudGVye3BsYWNlLWNvbnRlbnQ6Y2VudGVyfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5iZy13aGl0ZXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSl9LnB4LTJ7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LVxcWzgwcHhcXF17Zm9udC1zaXplOjgwcHh9LnRleHQtMnhse2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1cXFtcXCMwMjA0MjBcXF17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS50ZXh0LVxcW1xcIzY0NzQ4QlxcXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0uZm9udC1zZW1pYm9sZHtmb250LXdlaWdodDo2MDB9LmxlYWRpbmctbm9uZXtsaW5lLWhlaWdodDoxfS50cmFja2luZy13aWRle2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5ze2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxOb3RvIFNhbnMsc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2wsTm90byBDb2xvciBFbW9qaX0udGFidWxhci1udW1zey0tdW4tbnVtZXJpYy1zcGFjaW5nOnRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS11bi1vcmRpbmFsKSB2YXIoLS11bi1zbGFzaGVkLXplcm8pIHZhcigtLXVuLW51bWVyaWMtZmlndXJlKSB2YXIoLS11bi1udW1lcmljLXNwYWNpbmcpIHZhcigtLXVuLW51bWVyaWMtZnJhY3Rpb24pfS5hbnRpYWxpYXNlZHstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpiZy1cXFtcXCMwMjA0MjBcXF17LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLWJnLW9wYWNpdHkpKX0uZGFya1xcOnRleHQtd2hpdGV7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9fUBtZWRpYShtaW4td2lkdGg6NjQwcHgpey5zbVxcOnRleHQtXFxbMTEwcHhcXF17Zm9udC1zaXplOjExMHB4fS5zbVxcOnRleHQtM3hse2ZvbnQtc2l6ZToxLjg3NXJlbTtsaW5lLWhlaWdodDoyLjI1cmVtfX08L3N0eWxlPjwvaGVhZD48Ym9keSBjbGFzcz0iYW50aWFsaWFzZWQgYmctd2hpdGUgZGFyazpiZy1bIzAyMDQyMF0gZGFyazp0ZXh0LXdoaXRlIGZvbnQtc2FucyBncmlkIG1pbi1oLXNjcmVlbiBvdmVyZmxvdy1oaWRkZW4gcGxhY2UtY29udGVudC1jZW50ZXIgdGV4dC1bIzAyMDQyMF0gdHJhY2tpbmctd2lkZSI+PGRpdiBjbGFzcz0ibWF4LXctNTIwcHggdGV4dC1jZW50ZXIiPjxoMSBjbGFzcz0iZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgbWItNCBzbTp0ZXh0LVsxMTBweF0gdGFidWxhci1udW1zIHRleHQtWzgwcHhdIj4nK2Uoci5zdGF0dXMpKyc8L2gxPjxoMiBjbGFzcz0iZm9udC1zZW1pYm9sZCBtYi0yIHNtOnRleHQtM3hsIHRleHQtMnhsIj4nK2Uoci5zdGF0dXNUZXh0KSsnPC9oMj48cCBjbGFzcz0ibWItNCBweC0yIHRleHQtWyM2NDc0OEJdIHRleHQtbWQiPicrZShyLmRlc2NyaXB0aW9uKSsiPC9wPjwvZGl2PjwvYm9keT48L2h0bWw+Iik7ZXhwb3J0e3RlbXBsYXRlfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3ItNTAwLm1qcy5tYXAK", "chunks/_/github.mjs": "aW1wb3J0e2MgYXMgdCx2IGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGF1dGhIZWFkZXJzKCl7Y29uc3QgdD17QWNjZXB0OiJhcHBsaWNhdGlvbi92bmQuZ2l0aHViK2pzb24iLCJYLUdpdEh1Yi1BcGktVmVyc2lvbiI6IjIwMjItMTEtMjgiLCJVc2VyLUFnZW50IjoibnV4dC10ZW1wbGF0ZS1zZWxmaG9zdCJ9LGE9ZSgpLmdpdGh1YlRva2VuO3JldHVybiBhJiYodC5BdXRob3JpemF0aW9uPWBCZWFyZXIgJHthfWApLHR9YXN5bmMgZnVuY3Rpb24gZmV0Y2hSZWxlYXNlKGUpe2NvbnN0IGE9YXdhaXQgZmV0Y2goYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtlfS9yZWxlYXNlcy9sYXRlc3RgLHtoZWFkZXJzOmF1dGhIZWFkZXJzKCl9KTtpZighYS5vayl0aHJvdyB0KHtzdGF0dXNDb2RlOmEuc3RhdHVzLHN0YXR1c01lc3NhZ2U6YEdpdEh1YiByZWxlYXNlcyBBUEkgJHthLnN0YXR1c30gJHthLnN0YXR1c1RleHR9YH0pO3JldHVybiBhLmpzb24oKX1hc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RCdW5kbGUoYSl7dmFyIHMsbjtjb25zdCBvPWF3YWl0IGZldGNoUmVsZWFzZShhKSxyPW51bGw9PShzPW8uYXNzZXRzKT92b2lkIDA6cy5maW5kKHQ9PiJidW5kbGUuanNvbiI9PT10Lm5hbWUpO2lmKCFyKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vIGJ1bmRsZS5qc29uIGZvdW5kIGluIGxhdGVzdCByZWxlYXNlIn0pO2NvbnN0IGk9ZSgpLmdpdGh1YlRva2VuP2F3YWl0IGZldGNoKHIudXJsLHtoZWFkZXJzOnsuLi5hdXRoSGVhZGVycygpLEFjY2VwdDoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn19KTphd2FpdCBmZXRjaChyLmJyb3dzZXJfZG93bmxvYWRfdXJsKTtpZighaS5vayl0aHJvdyB0KHtzdGF0dXNDb2RlOjUwMixzdGF0dXNNZXNzYWdlOmBGYWlsZWQgdG8gZG93bmxvYWQgYnVuZGxlOiAke2kuc3RhdHVzfWB9KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KGF3YWl0IGkuYXJyYXlCdWZmZXIoKSksYz1hd2FpdCBhc3luYyBmdW5jdGlvbih0KXtjb25zdCBlPWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixVaW50OEFycmF5LmZyb20odCkpO3JldHVybiBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGUpKS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX0odSk7aWYoKG51bGw9PShuPW8uYm9keSk/dm9pZCAwOm4uaW5jbHVkZXMoInNoYTI1NjoiKSkmJiFvLmJvZHkuaW5jbHVkZXMoYykpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiQnVuZGxlIFNIQS0yNTYgbWlzbWF0Y2gg4oCUIHBvc3NpYmxlIHRhbXBlcmluZyJ9KTtjb25zdCBsPUpTT04ucGFyc2UoKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKHUpKTtyZXR1cm57dmVyc2lvbjpvLnRhZ19uYW1lLGJ1bmRsZTpsLHNoYTI1NjpjfX1hc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RWZXJzaW9uKHQpe3ZhciBlO3RyeXtyZXR1cm4gbnVsbCE9KGU9KGF3YWl0IGZldGNoUmVsZWFzZSh0KSkudGFnX25hbWUpP2U6bnVsbH1jYXRjaHtyZXR1cm4gbnVsbH19ZXhwb3J0e2dldExhdGVzdFZlcnNpb24gYXMgYSxnZXRMYXRlc3RCdW5kbGUgYXMgZ307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWdpdGh1Yi5tanMubWFwCg==", "chunks/_/impersonate.mjs": "aW1wb3J0e2FqIGFzIG99ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2NvbnN0IHI9InVzZXI6aW1wZXJzb25hdGUiO2Z1bmN0aW9uIGltcGVyc29uYXRvckluZm9Gcm9tU2Vzc2lvbihyKXtyZXR1cm4gbyhyLFsiaWQiLCJ1c2VybmFtZSIsIm5hbWUiLCJwcmltYXJ5X2VtYWlsIiwiYWJpbGl0aWVzIl0pfWZ1bmN0aW9uIGJhY2t1cEtleShvKXtyZXR1cm5gaW1wZXJzb25hdG9yOnNlc3Npb246JHtvfWB9ZXhwb3J0e3IgYXMgSSxiYWNrdXBLZXkgYXMgYixpbXBlcnNvbmF0b3JJbmZvRnJvbVNlc3Npb24gYXMgaX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWltcGVyc29uYXRlLm1qcy5tYXAK", "chunks/_/invoice.mjs": "aW1wb3J0e28gYXMgdCxhLHMgYXMgbixfIGFzIGksRyBhcyBvfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBlPXQoe2Rlc2NyaXB0aW9uOm4oKS5taW4oMSkubWF4KDUwMCkscXVhbnRpdHk6bygpLmludCgpLm1pbigxKS5kZWZhdWx0KDEpLHVuaXRfcHJpY2U6bygpLmludCgpLm1pbigwKSxjdXJyZW5jeTpuKCkubGVuZ3RoKDMpLmRlZmF1bHQoIlVTRCIpfSkscz10KHtzdGF0dXM6aShbImRyYWZ0Iiwic2VudCIsInBhaWQiLCJvdmVyZHVlIiwiY2FuY2VsbGVkIl0pLmRlZmF1bHQoImRyYWZ0IiksY3VycmVuY3k6bigpLmxlbmd0aCgzKS5kZWZhdWx0KCJVU0QiKSxub3RlczpuKCkubWF4KDJlMykub3B0aW9uYWwoKSxkdWVfYXQ6bigpLmRhdGV0aW1lKCkub3B0aW9uYWwoKSxpdGVtczphKGUpLm1pbigxKX0pO3Mub21pdCh7aXRlbXM6ITB9KS5wYXJ0aWFsKCk7Y29uc3QgbD10KHtjb21wYW55X25hbWU6bigpLm1heCgyMDApLm9wdGlvbmFsKCksdGF4X2lkOm4oKS5tYXgoMTAwKS5vcHRpb25hbCgpLGFkZHJlc3M6bigpLm1heCg1MDApLm9wdGlvbmFsKCksY2l0eTpuKCkubWF4KDEwMCkub3B0aW9uYWwoKSxjb3VudHJ5Om4oKS5sZW5ndGgoMikub3B0aW9uYWwoKSxjdXJyZW5jeTpuKCkubGVuZ3RoKDMpLm9wdGlvbmFsKCl9KTtleHBvcnR7cyBhcyBDLGwgYXMgVX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWludm9pY2UubWpzLm1hcAo=", "chunks/_/member.mjs": "aW1wb3J0e1QgYXMgYX1mcm9tIi4vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e28gYXMgZSxhIGFzIGksc31mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgcj1lKHtlbWFpbDpzKCkuZW1haWwoKX0pLHQ9ZSh7YWJpbGl0aWVzOmkocygpKS5yZWZpbmUoZT0+ZS5ldmVyeShlPT5hLmhhcyhlKSkse21lc3NhZ2U6Ik9ubHkgdGVuYW50IGFiaWxpdGllcyAodXNlcjoqLCBwcm9qZWN0OiosIGJpbGxpbmc6KikgY2FuIGJlIGdyYW50ZWQgaGVyZSJ9KX0pO2V4cG9ydHtyIGFzIEEsdCBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVtYmVyLm1qcy5tYXAK", "chunks/_/notification.mjs": "aW1wb3J0e28gYXMgdCxUIGFzIGEsYTEgYXMgZSxiIGFzIGkscyBhcyBvfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjt0KHtpZDpvKCksc2VuZGVyTmFtZTpvKCksYm9keTpvKCksaXNSZWFkOmkoKSxjcmVhdGVkQXQ6ZSgpfSk7Y29uc3QgZD10KHtvZmZzZXQ6YSgpLmludCgpLm1pbigwKS5kZWZhdWx0KDApLGxpbWl0OmEoKS5pbnQoKS5taW4oMSkubWF4KDUwKS5kZWZhdWx0KDIwKX0pO2Z1bmN0aW9uIHRvTm90aWZpY2F0aW9uKHQpe3JldHVybntpZDp0LmlkLHNlbmRlck5hbWU6dC5zZW5kZXJfbmFtZSxib2R5OnQuYm9keSxpc1JlYWQ6dC5pc19yZWFkLGNyZWF0ZWRBdDp0LmNyZWF0ZWRfYXQudG9JU09TdHJpbmcoKX19ZXhwb3J0e2QgYXMgTix0b05vdGlmaWNhdGlvbiBhcyB0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm90aWZpY2F0aW9uLm1qcy5tYXAK", "chunks/_/organization.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIGksZSBhcyBuLGkgYXMgYSxGIGFzIHQsSyBhcyByLGcgYXMgcyxMIGFzIG8sbCxNIGFzIHUsTiBhcyBkLE8gYXMgYyxmIGFzIG0sUCBhcyBnLHUgYXMgZn1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7ZnVuY3Rpb24gcGFyc2VBYmlsaXR5KGUpe2NvbnN0W2k9IiIsbj0iIixhXT1lLnNwbGl0KCI6Iik7cmV0dXJue3N1YmplY3Q6aSxhY3Rpb246bixzY29wZTphfX1jb25zdCB5PW5ldyBTZXQoWyJyZWFkIiwid3JpdGUiLCJkZWxldGUiXSk7ZnVuY3Rpb24gc2F0aXNmaWVzQWJpbGl0eShlLGkpe2NvbnN0e3N1YmplY3Q6bixhY3Rpb246YSxzY29wZTp0fT1wYXJzZUFiaWxpdHkoaSk7cmV0dXJuIGUuc29tZShlPT57Y29uc3R7c3ViamVjdDppLGFjdGlvbjpyLHNjb3BlOnN9PXBhcnNlQWJpbGl0eShlKTtyZXR1cm4gaT09PW4mJighKCJtYW5hZ2UiIT09cnx8cyE9PXR8fCF5LmhhcyhhKSl8fHI9PT1hJiZzPT09dCl9KX1jb25zdCB3PVsicmVhZCIsIndyaXRlIiwiZGVsZXRlIiwibWFuYWdlIl0sYj1uZXcgU2V0KFsidXNlcjppbXBlcnNvbmF0ZSIsInN5c3RlbTptYW5hZ2UiLCJzdXBwb3J0Om1hbmFnZSIsInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0OmRlbGV0ZSIsInByb2R1Y3Q6bWFuYWdlIl0pLHA9bmV3IFNldChbInVzZXIiLCJwcm9qZWN0IiwiYmlsbGluZyIsInNlbGZob3N0Il0uZmxhdE1hcChlPT53Lm1hcChpPT5gJHtlfToke2l9YCkpKSxfPW5ldyBTZXQoW10pLHY9WyJ1c2VyOm1hbmFnZSIsInByb2plY3Q6bWFuYWdlIiwiYmlsbGluZzptYW5hZ2UiLCJiaWxsaW5nOnJlYWQiLCJzZWxmaG9zdDptYW5hZ2UiLCJzZWxmaG9zdDpyZWFkIl0saD1bInByb2plY3Q6cmVhZCIsInByb2plY3Q6d3JpdGUiLCJiaWxsaW5nOnJlYWQiXSx6PXtyZWFkOiJWaWV3Iix3cml0ZToiQ3JlYXRlIGFuZCBlZGl0IixkZWxldGU6IkRlbGV0ZSIsbWFuYWdlOiJGdWxsIGNvbnRyb2wgb3ZlciIsaW1wZXJzb25hdGU6IkltcGVyc29uYXRlIn07ZnVuY3Rpb24gb3JnS2luZE9mKGUpe3JldHVybiBiLmhhcyhlKT8ic3lzdGVtIjoidGVuYW50In1mdW5jdGlvbiBkZWYoZSl7dmFyIGk7Y29uc3R7c3ViamVjdDpuLGFjdGlvbjphLHNjb3BlOnR9PXBhcnNlQWJpbGl0eShlKSxyPWAke251bGwhPShpPXpbYV0pP2k6YX0gJHtufWA7cmV0dXJue2tleTplLHN1YmplY3Q6bixhY3Rpb246YSxzY29wZTpudWxsIT10P3Q6bnVsbCxvcmdfa2luZDpvcmdLaW5kT2YoZSksZGVzY3JpcHRpb246InNlbGYiPT09dD9gJHtyfSAob3duIG9ubHkpYDpyfX1mdW5jdGlvbiBidWlsZFBlcm1pc3Npb25DYXRhbG9nKCl7cmV0dXJuWy4uLnAsLi4uYiwuLi5fXS5tYXAoZGVmKX1mdW5jdGlvbiBrZXlzQWxsb3dlZEZvcihlKXtyZXR1cm4gZT9iOm5ldyBTZXQoWy4uLnAsLi4uX10pfWZ1bmN0aW9uIG1lcmdlT3JnQWJpbGl0aWVzKGUsaSxuKXtjb25zdCBhPWUuZmlsdGVyKGU9PmIuaGFzKGUpKSx0PWkuZmlsdGVyKGU9PmtleXNBbGxvd2VkRm9yKG4pLmhhcyhlKSk7cmV0dXJuWy4uLm5ldyBTZXQoWy4uLmEsLi4udF0pXX1mdW5jdGlvbiBhc3NlcnRHcmFudGFibGUoZSxpKXtjb25zdCBuPWtleXNBbGxvd2VkRm9yKCExKSxhPWkuZmlsdGVyKGU9PiFuLmhhcyhlKSksdD1pLmZpbHRlcihpPT5uLmhhcyhpKSYmIXNhdGlzZmllc0FiaWxpdHkoZSxpKSk7cmV0dXJuWy4uLm5ldyBTZXQoWy4uLmEsLi4udF0pXX1hc3luYyBmdW5jdGlvbiBnZXRTeXN0ZW1Pcmdhbml6YXRpb25JZCgpe3ZhciBhO2NvbnN0IHQ9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkobi5pc19zeXN0ZW0sITApLGNvbHVtbnM6e2lkOiEwfX0pO3JldHVybiBudWxsIT0oYT1udWxsPT10P3ZvaWQgMDp0LmlkKT9hOm51bGx9YXN5bmMgZnVuY3Rpb24gbWVtYmVyc2hpcEFiaWxpdGllcyhuLHIpe3ZhciBzO2NvbnN0IG89YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25NZW1iZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnQoaShhLnVzZXJfaWQsbiksaShhLm9yZ2FuaXphdGlvbl9pZCxyKSksY29sdW1uczp7YWJpbGl0aWVzOiEwfX0pO3JldHVybiBudWxsIT0ocz1udWxsPT1vP3ZvaWQgMDpvLmFiaWxpdGllcyk/czpbXX1hc3luYyBmdW5jdGlvbiByb2xlQWJpbGl0aWVzKG4scil7cmV0dXJuKGF3YWl0IGUuc2VsZWN0KHtwZXJtaXNzaW9uczpzLnBlcm1pc3Npb25zfSkuZnJvbShhKS5pbm5lckpvaW4obCxpKGwubWVtYmVyX2lkLGEuaWQpKS5pbm5lckpvaW4ocyxpKHMuaWQsbC5yb2xlX2lkKSkud2hlcmUodChpKGEudXNlcl9pZCxuKSxpKGEub3JnYW5pemF0aW9uX2lkLHIpKSkpLmZsYXRNYXAoZT0+e3ZhciBpO3JldHVybiBudWxsIT0oaT1lLnBlcm1pc3Npb25zKT9pOltdfSl9YXN5bmMgZnVuY3Rpb24gZWZmZWN0aXZlT3JnR3JhbnRzKGUsaSl7Y29uc3RbbixhXT1hd2FpdCBQcm9taXNlLmFsbChbbWVtYmVyc2hpcEFiaWxpdGllcyhlLGkpLHJvbGVBYmlsaXRpZXMoZSxpKV0pO3JldHVyblsuLi5uZXcgU2V0KFsuLi5uLC4uLmFdKV19YXN5bmMgZnVuY3Rpb24gbG9hZEVmZmVjdGl2ZUFiaWxpdGllcyhlLGkpe2NvbnN0IG49YXdhaXQgZ2V0U3lzdGVtT3JnYW5pemF0aW9uSWQoKSxhPW4/YXdhaXQgZWZmZWN0aXZlT3JnR3JhbnRzKGUsbik6W107aWYoIWkpcmV0dXJuIG1lcmdlT3JnQWJpbGl0aWVzKGEsW10sITEpO3JldHVybiBtZXJnZU9yZ0FiaWxpdGllcyhhLGF3YWl0IGVmZmVjdGl2ZU9yZ0dyYW50cyhlLGkpLGk9PT1uKX1hc3luYyBmdW5jdGlvbiBkZWZhdWx0QWN0aXZlT3JnYW5pemF0aW9uSWQodCl7dmFyIHIscyxvLGw7Y29uc3QgdT0oYXdhaXQgZS5zZWxlY3Qoe29yZzpuLmlkLHBlcnNvbmFsOm4uaXNfcGVyc29uYWwsc3lzdGVtOm4uaXNfc3lzdGVtfSkuZnJvbShhKS5pbm5lckpvaW4obixpKG4uaWQsYS5vcmdhbml6YXRpb25faWQpKS53aGVyZShpKGEudXNlcl9pZCx0KSkpLmZpbHRlcihlPT4hZS5zeXN0ZW0pO3JldHVybiBudWxsIT0obD1udWxsIT0obz1udWxsPT0ocj11LmZpbmQoZT0+ZS5wZXJzb25hbCkpP3ZvaWQgMDpyLm9yZyk/bzpudWxsPT0ocz11WzBdKT92b2lkIDA6cy5vcmcpP2w6bnVsbH1hc3luYyBmdW5jdGlvbiBlbnN1cmVPcmdhbml6YXRpb24oYSx0LHI9e30pe2NvbnN0IHM9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkobi5zbHVnLGEpfSk7aWYocylyZXR1cm4gcztjb25zdFtvXT1hd2FpdCBlLmluc2VydChuKS52YWx1ZXMoe3NsdWc6YSxuYW1lOnQsaXNfc3lzdGVtOiEhci5pc19zeXN0ZW19KS5yZXR1cm5pbmcoKTtyZXR1cm4gYXdhaXQgZW5zdXJlU3lzdGVtUm9sZXMoby5pZCksb31hc3luYyBmdW5jdGlvbiBlbnN1cmVNZW1iZXJzaGlwKGksbix0KXthd2FpdCBlLmluc2VydChhKS52YWx1ZXMoe3VzZXJfaWQ6aSxvcmdhbml6YXRpb25faWQ6bixhYmlsaXRpZXM6Wy4uLnRdfSkub25Db25mbGljdERvTm90aGluZygpfWFzeW5jIGZ1bmN0aW9uIGlzTWVtYmVyKG4scil7cmV0dXJuISFhd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvbk1lbWJlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6dChpKGEudXNlcl9pZCxuKSxpKGEub3JnYW5pemF0aW9uX2lkLHIpKSxjb2x1bW5zOntpZDohMH19KX1hc3luYyBmdW5jdGlvbiBjb3VudE9yZ01hbmFnZXJzKG4pe2NvbnN0IHQ9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25NZW1iZXJUYWJsZS5maW5kTWFueSh7d2hlcmU6aShhLm9yZ2FuaXphdGlvbl9pZCxuKSxjb2x1bW5zOnt1c2VyX2lkOiEwfX0pO2xldCByPTA7Zm9yKGNvbnN0IGUgb2YgdCkoYXdhaXQgZWZmZWN0aXZlT3JnR3JhbnRzKGUudXNlcl9pZCxuKSkuaW5jbHVkZXMoInVzZXI6bWFuYWdlIikmJnIrKztyZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBlbnN1cmVTeXN0ZW1Sb2xlcyhuKXtyZXR1cm4gYXdhaXQgZS5pbnNlcnQocykudmFsdWVzKFt7b3JnYW5pemF0aW9uX2lkOm4sbmFtZToiQWRtaW4iLGRlc2NyaXB0aW9uOiJGdWxsIHdvcmtzcGFjZSBjb250cm9sIixwZXJtaXNzaW9uczpbLi4udl0saXNfc3lzdGVtOiEwfSx7b3JnYW5pemF0aW9uX2lkOm4sbmFtZToiTWVtYmVyIixkZXNjcmlwdGlvbjoiU3RhbmRhcmQgbWVtYmVyIixwZXJtaXNzaW9uczpbLi4uaF0saXNfc3lzdGVtOiEwfV0pLm9uQ29uZmxpY3REb05vdGhpbmcoKSxlLnF1ZXJ5LnJvbGVUYWJsZS5maW5kTWFueSh7d2hlcmU6aShzLm9yZ2FuaXphdGlvbl9pZCxuKX0pfWFzeW5jIGZ1bmN0aW9uIGFzc2lnblJvbGUoaSxuKXthd2FpdCBlLmluc2VydChsKS52YWx1ZXMoe21lbWJlcl9pZDppLHJvbGVfaWQ6bn0pLm9uQ29uZmxpY3REb05vdGhpbmcoKX1hc3luYyBmdW5jdGlvbiBtZW1iZXJzV2l0aFJvbGUobil7cmV0dXJuKGF3YWl0IGUuc2VsZWN0KHt1c2VyX2lkOmEudXNlcl9pZH0pLmZyb20obCkuaW5uZXJKb2luKGEsaShhLmlkLGwubWVtYmVyX2lkKSkud2hlcmUoaShsLnJvbGVfaWQsbikpKS5tYXAoZT0+ZS51c2VyX2lkKX1hc3luYyBmdW5jdGlvbiB1bmlxdWVTbHVnKGEpe2NvbnN0IHQ9YS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XSsvZywiLSIpLnJlcGxhY2UoL14tfC0kL2csIiIpfHwib3JnIjtmb3IobGV0IGE9MDthPDU7YSsrKXtjb25zdCByPTA9PT1hP3Q6YCR7dH0tJHtvKCkuc2xpY2UoMCw2KX1gO2lmKCFhd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShuLnNsdWcsciksY29sdW1uczp7aWQ6ITB9fSkpcmV0dXJuIHJ9cmV0dXJuYCR7dH0tJHtvKCl9YH1hc3luYyBmdW5jdGlvbiBjcmVhdGVQZXJzb25hbE9yZ2FuaXphdGlvbihyKXt2YXIgcyxvLGw7Y29uc3QgdT1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6dChpKG4ub3duZXJfaWQsci5pZCksaShuLmlzX3BlcnNvbmFsLCEwKSl9KTtpZih1KXJldHVybiB1O2NvbnN0W2RdPWF3YWl0IGUuaW5zZXJ0KG4pLnZhbHVlcyh7bmFtZTpgJHtudWxsIT0obz1udWxsIT0ocz1yLm5hbWUpP3M6ci51c2VybmFtZSk/bzoiTXkifSBPcmdhbml6YXRpb25gLHNsdWc6YXdhaXQgdW5pcXVlU2x1ZyhudWxsIT0obD1yLnVzZXJuYW1lKT9sOnIucHJpbWFyeV9lbWFpbC5zcGxpdCgiQCIpWzBdKSxvd25lcl9pZDpyLmlkLGlzX3BlcnNvbmFsOiEwfSkucmV0dXJuaW5nKCk7YXdhaXQgZS5pbnNlcnQoYSkudmFsdWVzKHt1c2VyX2lkOnIuaWQsb3JnYW5pemF0aW9uX2lkOmQuaWQsYWJpbGl0aWVzOlsuLi52XX0pLm9uQ29uZmxpY3REb05vdGhpbmcoKTtjb25zdCBjPShhd2FpdCBlbnN1cmVTeXN0ZW1Sb2xlcyhkLmlkKSkuZmluZChlPT4iQWRtaW4iPT09ZS5uYW1lKTtpZihjKXtjb25zdCBuPWF3YWl0IGUucXVlcnkub3JnYW5pemF0aW9uTWVtYmVyVGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KGkoYS51c2VyX2lkLHIuaWQpLGkoYS5vcmdhbml6YXRpb25faWQsZC5pZCkpLGNvbHVtbnM6e2lkOiEwfX0pO24mJmF3YWl0IGFzc2lnblJvbGUobi5pZCxjLmlkKX1yZXR1cm4gZH1hc3luYyBmdW5jdGlvbiBjcmVhdGVUZW5hbnRPcmdhbml6YXRpb24ocixzKXtjb25zdCBvPWF3YWl0IHVuaXF1ZVNsdWcocyksW2xdPWF3YWl0IGUuaW5zZXJ0KG4pLnZhbHVlcyh7bmFtZTpzLHNsdWc6byxvd25lcl9pZDpyLGlzX3BlcnNvbmFsOiExfSkucmV0dXJuaW5nKCk7YXdhaXQgZS5pbnNlcnQoYSkudmFsdWVzKHt1c2VyX2lkOnIsb3JnYW5pemF0aW9uX2lkOmwuaWQsYWJpbGl0aWVzOlsuLi52XX0pLm9uQ29uZmxpY3REb05vdGhpbmcoKTtjb25zdCB1PShhd2FpdCBlbnN1cmVTeXN0ZW1Sb2xlcyhsLmlkKSkuZmluZChlPT4iQWRtaW4iPT09ZS5uYW1lKTtpZih1KXtjb25zdCBuPWF3YWl0IGUucXVlcnkub3JnYW5pemF0aW9uTWVtYmVyVGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KGkoYS51c2VyX2lkLHIpLGkoYS5vcmdhbml6YXRpb25faWQsbC5pZCkpLGNvbHVtbnM6e2lkOiEwfX0pO24mJmF3YWl0IGFzc2lnblJvbGUobi5pZCx1LmlkKX1yZXR1cm4gbH1hc3luYyBmdW5jdGlvbiBnZXRPcmdhbml6YXRpb25CeUlkKGEpe2NvbnN0IHQ9YXdhaXQgZS5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkobi5pZCxhKX0pO3JldHVybiBudWxsIT10P3Q6bnVsbH1hc3luYyBmdW5jdGlvbiBnZXRPcmdJbnZpdGF0aW9ucyhuKXtyZXR1cm4gZS5xdWVyeS5vcmdhbml6YXRpb25JbnZpdGF0aW9uVGFibGUuZmluZE1hbnkoe3doZXJlOmkoci5vcmdhbml6YXRpb25faWQsbil9KX1hc3luYyBmdW5jdGlvbiBjcmVhdGVJbnZpdGF0aW9uKGksbixhLHQscz1bXSl7Y29uc3Qgbz1jcnlwdG8ucmFuZG9tVVVJRCgpLGw9bmV3IERhdGUoRGF0ZS5ub3coKSs2MDQ4ZTUpLFt1XT1hd2FpdCBlLmluc2VydChyKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDppLGVtYWlsOm4scm9sZV9pZDphLHRva2VuOm8saW52aXRlZF9ieTp0LGV4cGlyZXNfYXQ6bCxwcm9qZWN0X2lkczpzfSkucmV0dXJuaW5nKCk7cmV0dXJuIHV9YXN5bmMgZnVuY3Rpb24gZ2V0SW52aXRhdGlvbkJ5VG9rZW4obil7Y29uc3QgYT1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvbkludml0YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkoci50b2tlbixuKX0pO3JldHVybiBudWxsIT1hP2E6bnVsbH1hc3luYyBmdW5jdGlvbiByZXZva2VJbnZpdGF0aW9uKG4sYSl7YXdhaXQgZS5kZWxldGUocikud2hlcmUodChpKHIuaWQsbiksaShyLm9yZ2FuaXphdGlvbl9pZCxhKSkpfWFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUludml0YXRpb24obil7YXdhaXQgZS5kZWxldGUocikud2hlcmUoaShyLmlkLG4pKX1mdW5jdGlvbiBuYW1lRW1haWxGaWx0ZXIoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IGk9YCUke3UoZSl9JWA7cmV0dXJuIGQoY2Ake2YubmFtZX0gTElLRSAke2l9IEVTQ0FQRSAnXFwnYCxjYCR7Zi51c2VybmFtZX0gTElLRSAke2l9IEVTQ0FQRSAnXFwnYCxjYCR7Zi5wcmltYXJ5X2VtYWlsfSBMSUtFICR7aX0gRVNDQVBFICdcXCdgKX1hc3luYyBmdW5jdGlvbiBnZXRVc2VyT3JnYW5pemF0aW9uc1BhZ2Uocix7cTpzLGxpbWl0Om8sb2Zmc2V0Omx9KXtjb25zdCBnPXM/YCUke3Uocyl9JWA6dm9pZCAwLGY9dChpKGEudXNlcl9pZCxyKSxpKG4uaXNfc3lzdGVtLCExKSxnP2QoY2Ake24ubmFtZX0gTElLRSAke2d9IEVTQ0FQRSAnXFwnYCxjYCR7bi5zbHVnfSBMSUtFICR7Z30gRVNDQVBFICdcXCdgKTp2b2lkIDApLHk9YXdhaXQgZS5zZWxlY3Qoe2lkOm4uaWQsbmFtZTpuLm5hbWUsc2x1ZzpuLnNsdWcsaXNfcGVyc29uYWw6bi5pc19wZXJzb25hbH0pLmZyb20oYSkuaW5uZXJKb2luKG4saShuLmlkLGEub3JnYW5pemF0aW9uX2lkKSkud2hlcmUoZikub3JkZXJCeShtKG4ubmFtZSkpLmxpbWl0KG8rMSkub2Zmc2V0KGwpO3JldHVybntpdGVtczp5LnNsaWNlKDAsbyksaGFzTW9yZTp5Lmxlbmd0aD5vfX1hc3luYyBmdW5jdGlvbiBnZXRPcmdNZW1iZXJzUGFnZShuLHtxOnIsbGltaXQ6cyxvZmZzZXQ6b30pe2NvbnN0IGw9dChpKGEub3JnYW5pemF0aW9uX2lkLG4pLG5hbWVFbWFpbEZpbHRlcihyKSksdT1hd2FpdCBlLnNlbGVjdCh7aWQ6Zi5pZCxuYW1lOmYubmFtZSx1c2VybmFtZTpmLnVzZXJuYW1lLHByaW1hcnlfZW1haWw6Zi5wcmltYXJ5X2VtYWlsLGF2YXRhcjpmLmF2YXRhcixhYmlsaXRpZXM6YS5hYmlsaXRpZXMsaXNfc3VzcGVuZGVkOmYuaXNfc3VzcGVuZGVkfSkuZnJvbShhKS5pbm5lckpvaW4oZixpKGYuaWQsYS51c2VyX2lkKSkud2hlcmUobCkub3JkZXJCeShtKGYubmFtZSkpLmxpbWl0KHMrMSkub2Zmc2V0KG8pO3JldHVybntpdGVtczp1LnNsaWNlKDAscyksaGFzTW9yZTp1Lmxlbmd0aD5zfX1hc3luYyBmdW5jdGlvbiBnZXRJbXBlcnNvbmF0aW9uQ2FuZGlkYXRlc1BhZ2UoaSx7cTpuLGxpbWl0OmEsb2Zmc2V0OnJ9KXtjb25zdCBzPXQoZyhmLmlkLGkpLG5hbWVFbWFpbEZpbHRlcihuKSksbz1hd2FpdCBlLnF1ZXJ5LnVzZXJUYWJsZS5maW5kTWFueSh7d2hlcmU6cyxvcmRlckJ5Om0oZi5uYW1lKSxsaW1pdDphKzEsb2Zmc2V0OnIsY29sdW1uczp7aWQ6ITAsdXNlcm5hbWU6ITAsbmFtZTohMCxwcmltYXJ5X2VtYWlsOiEwLGF2YXRhcjohMCxpc19zdXNwZW5kZWQ6ITB9fSk7cmV0dXJue2l0ZW1zOm8uc2xpY2UoMCxhKSxoYXNNb3JlOm8ubGVuZ3RoPmF9fW5ldyBTZXQoYnVpbGRQZXJtaXNzaW9uQ2F0YWxvZygpLm1hcChlPT5lLmtleSkpO2V4cG9ydHtidWlsZFBlcm1pc3Npb25DYXRhbG9nIGFzIEEsaCBhcyBELF8gYXMgUyxwIGFzIFQsZW5zdXJlTWVtYmVyc2hpcCBhcyBhLGdldEltcGVyc29uYXRpb25DYW5kaWRhdGVzUGFnZSBhcyBiLGNyZWF0ZVBlcnNvbmFsT3JnYW5pemF0aW9uIGFzIGMsZGVmYXVsdEFjdGl2ZU9yZ2FuaXphdGlvbklkIGFzIGQsZW5zdXJlT3JnYW5pemF0aW9uIGFzIGUsZ2V0SW52aXRhdGlvbkJ5VG9rZW4gYXMgZixnZXRTeXN0ZW1Pcmdhbml6YXRpb25JZCBhcyBnLGdldE9yZ2FuaXphdGlvbkJ5SWQgYXMgaCxpc01lbWJlciBhcyBpLGFzc2lnblJvbGUgYXMgaixlbnN1cmVTeXN0ZW1Sb2xlcyBhcyBrLGxvYWRFZmZlY3RpdmVBYmlsaXRpZXMgYXMgbCxkZWxldGVJbnZpdGF0aW9uIGFzIG0sZ2V0T3JnSW52aXRhdGlvbnMgYXMgbixjcmVhdGVJbnZpdGF0aW9uIGFzIG8scGFyc2VBYmlsaXR5IGFzIHAsa2V5c0FsbG93ZWRGb3IgYXMgcSxyZXZva2VJbnZpdGF0aW9uIGFzIHIsc2F0aXNmaWVzQWJpbGl0eSBhcyBzLGNvdW50T3JnTWFuYWdlcnMgYXMgdCxlZmZlY3RpdmVPcmdHcmFudHMgYXMgdSxhc3NlcnRHcmFudGFibGUgYXMgdixnZXRPcmdNZW1iZXJzUGFnZSBhcyB3LGdldFVzZXJPcmdhbml6YXRpb25zUGFnZSBhcyB4LGNyZWF0ZVRlbmFudE9yZ2FuaXphdGlvbiBhcyB5LG1lbWJlcnNXaXRoUm9sZSBhcyB6fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3JnYW5pemF0aW9uLm1qcy5tYXAK", "chunks/_/organization2.mjs": "aW1wb3J0e28gYXMgbSxzIGFzIGF9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2NvbnN0IGk9bSh7b3JnYW5pemF0aW9uX2lkOmEoKS5taW4oMSl9KSxuPW0oe25hbWU6YSgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCl9KSxvPW0oe25hbWU6YSgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCl9KTtleHBvcnR7byBhcyBDLGkgYXMgUyxuIGFzIFV9OwovLyMgc291cmNlTWFwcGluZ1VSTD1vcmdhbml6YXRpb24yLm1qcy5tYXAK", "chunks/_/pagination.mjs": "aW1wb3J0e28gYXMgdCxUIGFzIGkscyBhcyBhfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBvPXQoe3E6YSgpLnRyaW0oKS5tYXgoMTAwKS5vcHRpb25hbCgpLmRlZmF1bHQoIiIpLGxpbWl0OmkoKS5pbnQoKS5taW4oMSkubWF4KDUwKS5kZWZhdWx0KDIwKSxvZmZzZXQ6aSgpLmludCgpLm1pbigwKS5kZWZhdWx0KDApfSk7ZXhwb3J0e28gYXMgTH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhZ2luYXRpb24ubWpzLm1hcAo=", "chunks/_/product.mjs": "aW1wb3J0e28gYXMgaSxfIGFzIGUsRyBhcyByLHMgYXMgdH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgYT1pKHtuYW1lOnQoKS5taW4oMSkubWF4KDIwMCksZGVzY3JpcHRpb246dCgpLm1heCgyZTMpLm9wdGlvbmFsKCksdHlwZTplKFsib25lX3RpbWUiLCJyZWN1cnJpbmciXSkuZGVmYXVsdCgib25lX3RpbWUiKSxwcmljZTpyKCkuaW50KCkubWluKDApLHByaWNlX2N1cnJlbmN5OmUoWyJVU0QiLCJFVVIiLCJHQlAiLCJWTkQiLCJKUFkiLCJBVUQiLCJDQUQiXSkuZGVmYXVsdCgiVVNEIiksYmlsbGluZ19pbnRlcnZhbDplKFsibW9udGgiLCJ5ZWFyIl0pLm9wdGlvbmFsKCksc3RhdHVzOmUoWyJhY3RpdmUiLCJpbmFjdGl2ZSJdKS5kZWZhdWx0KCJhY3RpdmUiKX0pLG49YS5yZWZpbmUoaT0+InJlY3VycmluZyIhPT1pLnR5cGV8fCEhaS5iaWxsaW5nX2ludGVydmFsLHttZXNzYWdlOiJiaWxsaW5nX2ludGVydmFsIGlzIHJlcXVpcmVkIGZvciByZWN1cnJpbmcgcHJvZHVjdHMiLHBhdGg6WyJiaWxsaW5nX2ludGVydmFsIl19KSxsPWEucGFydGlhbCgpO2V4cG9ydHtuIGFzIEMsbCBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvZHVjdC5tanMubWFwCg==", "chunks/_/project.mjs": "aW1wb3J0e28gYXMgYSxfIGFzIGUscyBhcyBpLEcgYXMgdH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgcj1hKHtuYW1lOmkoKS5taW4oMSkubWF4KDIwMCksZGVzY3JpcHRpb246aSgpLm1heCgyZTMpLm9wdGlvbmFsKCksc3RhdHVzOmUoWyJhY3RpdmUiLCJhcmNoaXZlZCJdKS5kZWZhdWx0KCJhY3RpdmUiKX0pLHM9ci5wYXJ0aWFsKCksbz1hKHtwcm9kdWN0X2lkOmkoKS51dWlkKCkscXVhbnRpdHk6dCgpLmludCgpLm1pbigxKS5kZWZhdWx0KDEpfSksbT1hKHt1c2VyX2lkOmkoKS51dWlkKCkscm9sZTplKFsib3duZXIiLCJtZW1iZXIiLCJ2aWV3ZXIiXSkuZGVmYXVsdCgibWVtYmVyIil9KTtleHBvcnR7bSBhcyBBLHIgYXMgQyxzIGFzIFUsbyBhcyBhfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvamVjdC5tanMubWFwCg==", "chunks/_/role.mjs": "aW1wb3J0e28gYXMgcyxhLHMgYXMgaX1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgZT1hKGkoKSkubWF4KDY0KSxvPXMoe25hbWU6aSgpLnRyaW0oKS5taW4oMSkubWF4KDUwKSxkZXNjcmlwdGlvbjppKCkudHJpbSgpLm1heCgyMDApLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6ZX0pLG09by5wYXJ0aWFsKCkucmVmaW5lKHM9Pk9iamVjdC5rZXlzKHMpLmxlbmd0aD4wLHttZXNzYWdlOiJObyBjaGFuZ2VzIn0pLHI9cyh7cm9sZV9pZHM6YShpKCkpfSk7ZXhwb3J0e3IgYXMgQSxvIGFzIEMsbSBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm9sZS5tanMubWFwCg==", "chunks/_/schema.mjs": "aW1wb3J0e3kgYXMgZSx6IGFzIHQsQSBhcyBhLEIgYXMgbyxDIGFzIG4scSBhcyBpLEQgYXMgZH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgcz1lKCJzZWxmaG9zdF9kZXBsb3ltZW50cyIse29yZ2FuaXphdGlvbl9pZDpvKCJvcmdhbml6YXRpb25faWQiKS5wcmltYXJ5S2V5KCkucmVmZXJlbmNlcygoKT0+aS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSksY2ZfYWNjb3VudF9pZDpvKCJjZl9hY2NvdW50X2lkIiksY2Zfc2NyaXB0X25hbWU6bygiY2Zfc2NyaXB0X25hbWUiKSx3b3JrZXJzX2Rldl91cmw6bygid29ya2Vyc19kZXZfdXJsIiksZGVwbG95ZWRfdmVyc2lvbjpvKCJkZXBsb3llZF92ZXJzaW9uIiksZGVwbG95ZWRfYXQ6YSgiZGVwbG95ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksY2ZfdG9rZW5fY2lwaGVydGV4dDpvKCJjZl90b2tlbl9jaXBoZXJ0ZXh0IiksY2ZfdG9rZW5faXY6bygiY2ZfdG9rZW5faXYiKSxjZl90b2tlbl9leHBpcmVzX2F0OmEoImNmX3Rva2VuX2V4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksc3RhdHVzOm8oInN0YXR1cyIse2VudW06WyJpZGxlIiwiZGVwbG95aW5nIiwiZGVwbG95ZWQiLCJmYWlsZWQiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJpZGxlIiksbGFzdF9lcnJvcjpvKCJsYXN0X2Vycm9yIil9KSxyPWUoInNlbGZob3N0X2F1ZGl0Iix7aWQ6bygiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDpvKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksYWN0b3JfdXNlcl9pZDpvKCJhY3Rvcl91c2VyX2lkIikucmVmZXJlbmNlcygoKT0+bi5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGFjdGlvbjpvKCJhY3Rpb24iLHtlbnVtOlsiZGVwbG95IiwicmVkZXBsb3kiLCJkaXNjb25uZWN0Il19KS5ub3ROdWxsKCksc3VjY2VzczphKCJzdWNjZXNzIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCksY2ZfYWNjb3VudF9pZDpvKCJjZl9hY2NvdW50X2lkIiksZXJyb3JfbWVzc2FnZTpvKCJlcnJvcl9tZXNzYWdlIiksc3RhcnRlZF9hdDphKCJzdGFydGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksZmluaXNoZWRfYXQ6YSgiZmluaXNoZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSl9LGU9Plt0KCJzZWxmaG9zdF9hdWRpdF9vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLHQoInNlbGZob3N0X2F1ZGl0X3N0YXJ0ZWRfaWR4Iikub24oZS5zdGFydGVkX2F0KV0pLF89ZSgic2VsZmhvc3RfZGVwbG95bWVudF9zZWNyZXRzIix7aWQ6bygiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDpvKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksa2V5Om8oImtleSIpLm5vdE51bGwoKSxjaXBoZXJ0ZXh0Om8oImNpcGhlcnRleHQiKS5ub3ROdWxsKCksaXY6bygiaXYiKS5ub3ROdWxsKCksY3JlYXRlZF9hdDphKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDphKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2QoInNlbGZob3N0X3NlY3JldHNfb3JnX2tleV91bmlxdWUiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCxlLmtleSldKTtleHBvcnR7cyBhcyBhLF8gYXMgYixyIGFzIHN9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zY2hlbWEubWpzLm1hcAo=", "chunks/_/schema2.mjs": "aW1wb3J0e3kgYXMgZSxBIGFzIHQsQiBhcyBhLEMgYXMgZCxxIGFzIG8seiBhcyBuLGEyIGFzIHJ9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2NvbnN0IGk9ZSgicHJvamVjdHMiLHtpZDphKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOmEoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9Pm8uaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxuYW1lOmEoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246YSgiZGVzY3JpcHRpb24iKSxzdGF0dXM6YSgic3RhdHVzIix7ZW51bTpbImFjdGl2ZSIsImFyY2hpdmVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgiYWN0aXZlIiksY3JlYXRlZF9ieTphKCJjcmVhdGVkX2J5IikucmVmZXJlbmNlcygoKT0+ZC5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGNyZWF0ZWRfYXQ6dCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6dCgidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9PltuKCJwcm9qZWN0c19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLG4oInByb2plY3RzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxzPWUoInByb2plY3RfcHJvZHVjdHMiLHtwcm9qZWN0X2lkOmEoInByb2plY3RfaWQiKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscHJvZHVjdF9pZDphKCJwcm9kdWN0X2lkIikubm90TnVsbCgpLHF1YW50aXR5OnQoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksYWRkZWRfYXQ6dCgiYWRkZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3Ioe2NvbHVtbnM6W2UucHJvamVjdF9pZCxlLnByb2R1Y3RfaWRdfSldKSxsPWUoInByb2plY3RfbWVtYmVycyIse3Byb2plY3RfaWQ6YSgicHJvamVjdF9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOmEoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5kLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscm9sZTphKCJyb2xlIix7ZW51bTpbIm93bmVyIiwibWVtYmVyIiwidmlld2VyIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgibWVtYmVyIiksYWRkZWRfYXQ6dCgiYWRkZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3Ioe2NvbHVtbnM6W2UucHJvamVjdF9pZCxlLnVzZXJfaWRdfSksbigicHJvamVjdF9tZW1iZXJzX3VzZXJfaWR4Iikub24oZS51c2VyX2lkKV0pO2V4cG9ydHtsIGFzIGEscyBhcyBiLGkgYXMgcH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjaGVtYTIubWpzLm1hcAo=", "chunks/_/schema3.mjs": "aW1wb3J0e3kgYXMgdCx6IGFzIGUsQSBhcyBhLEIgYXMgbn1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3QgaT10KCJwcm9kdWN0cyIse2lkOm4oImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxuYW1lOm4oIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246bigiZGVzY3JpcHRpb24iKSx0eXBlOm4oInR5cGUiLHtlbnVtOlsib25lX3RpbWUiLCJyZWN1cnJpbmciXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJvbmVfdGltZSIpLHByaWNlOmEoInByaWNlIikubm90TnVsbCgpLHByaWNlX2N1cnJlbmN5Om4oInByaWNlX2N1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGJpbGxpbmdfaW50ZXJ2YWw6bigiYmlsbGluZ19pbnRlcnZhbCIse2VudW06WyJtb250aCIsInllYXIiXX0pLHN0YXR1czpuKCJzdGF0dXMiLHtlbnVtOlsiYWN0aXZlIiwiaW5hY3RpdmUiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJhY3RpdmUiKSxjcmVhdGVkX2F0OmEoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmEoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSx0PT5bZSgicHJvZHVjdHNfc3RhdHVzX2lkeCIpLm9uKHQuc3RhdHVzKSxlKCJwcm9kdWN0c190eXBlX2lkeCIpLm9uKHQudHlwZSldKTtleHBvcnR7aSBhcyBwfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2NoZW1hMy5tanMubWFwCg==", "chunks/_/schema4.mjs": "aW1wb3J0e3kgYXMgZSx6IGFzIHQsQSBhcyBhLEIgYXMgbixxIGFzIGksQyBhcyBkfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBvPWUoIm9yZ2FuaXphdGlvbl9iaWxsaW5nX3NldHRpbmdzIix7b3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxjb21wYW55X25hbWU6bigiY29tcGFueV9uYW1lIiksdGF4X2lkOm4oInRheF9pZCIpLGFkZHJlc3M6bigiYWRkcmVzcyIpLGNpdHk6bigiY2l0eSIpLGNvdW50cnk6bigiY291bnRyeSIpLmRlZmF1bHQoIlVTIiksY3VycmVuY3k6bigiY3VycmVuY3kiKS5ub3ROdWxsKCkuZGVmYXVsdCgiVVNEIiksdXBkYXRlZF9hdDphKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0pLHU9ZSgiaW52b2ljZXMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxudW1iZXI6bigibnVtYmVyIikubm90TnVsbCgpLnVuaXF1ZSgpLHN0YXR1czpuKCJzdGF0dXMiLHtlbnVtOlsiZHJhZnQiLCJzZW50IiwicGFpZCIsIm92ZXJkdWUiLCJjYW5jZWxsZWQiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJkcmFmdCIpLGN1cnJlbmN5Om4oImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLHN1YnRvdGFsOmEoInN1YnRvdGFsIikubm90TnVsbCgpLmRlZmF1bHQoMCksdGF4OmEoInRheCIpLm5vdE51bGwoKS5kZWZhdWx0KDApLHRvdGFsOmEoInRvdGFsIikubm90TnVsbCgpLmRlZmF1bHQoMCksaXNzdWVkX2F0OmEoImlzc3VlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxkdWVfYXQ6YSgiZHVlX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLHBhaWRfYXQ6YSgicGFpZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxub3RlczpuKCJub3RlcyIpLGNyZWF0ZWRfYXQ6YSgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6YSgidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9Plt0KCJpbnZvaWNlc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLHQoImludm9pY2VzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxyPWUoImludm9pY2VfaXRlbXMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksaW52b2ljZV9pZDpuKCJpbnZvaWNlX2lkIikucmVmZXJlbmNlcygoKT0+dS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGRlc2NyaXB0aW9uOm4oImRlc2NyaXB0aW9uIikubm90TnVsbCgpLHF1YW50aXR5OmEoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksdW5pdF9wcmljZTphKCJ1bml0X3ByaWNlIikubm90TnVsbCgpLGN1cnJlbmN5Om4oImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGFtb3VudDphKCJhbW91bnQiKS5ub3ROdWxsKCl9LGU9Plt0KCJpbnZvaWNlX2l0ZW1zX2ludm9pY2VfaWR4Iikub24oZS5pbnZvaWNlX2lkKV0pO2UoIm9yZ2FuaXphdGlvbl9jcmVkaXRzIix7b3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5pLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxiYWxhbmNlOmEoImJhbGFuY2UiKS5ub3ROdWxsKCkuZGVmYXVsdCgwKSx1cGRhdGVkX2F0OmEoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSk7Y29uc3Qgcz1lKCJ0cmFuc2FjdGlvbnMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOm4oIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOm4oInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5kLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksdHlwZTpuKCJ0eXBlIix7ZW51bTpbInRvcF91cCIsInJlZmVycmFsX3Jld2FyZCJdfSkubm90TnVsbCgpLHN0YXR1czpuKCJzdGF0dXMiLHtlbnVtOlsicGVuZGluZyIsInN1Y2Nlc3MiLCJmYWlsZWQiLCJleHBpcmVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgicGVuZGluZyIpLGFtb3VudDphKCJhbW91bnQiKS5ub3ROdWxsKCksZ2F0ZXdheV9yZWY6bigiZ2F0ZXdheV9yZWYiKS51bmlxdWUoKSxzZXBheV9ldmVudF9pZDpuKCJzZXBheV9ldmVudF9pZCIpLnVuaXF1ZSgpLG1ldGFkYXRhOm4oIm1ldGFkYXRhIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoe30pLGV4cGlyZXNfYXQ6YSgiZXhwaXJlc19hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxjcmVhdGVkX2F0OmEoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmEoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bdCgidHJhbnNhY3Rpb25zX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksdCgidHJhbnNhY3Rpb25zX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKTtleHBvcnR7ciBhcyBhLHUgYXMgaSxvLHMgYXMgdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjaGVtYTQubWpzLm1hcAo=", "chunks/_/secret.mjs": "aW1wb3J0e28gYXMgYSxhIGFzIG0sc31mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7Y29uc3Qgbz1hKHt1cGRhdGVzOm0oYSh7a2V5OnMoKS5taW4oMSkubWF4KDEyOCksdmFsdWU6cygpLm1pbigxKS5tYXgoMmUzKX0pKS5taW4oMSkubWF4KDUwKX0pLGk9YSh7dG86cygpLmVtYWlsKCl9KTtleHBvcnR7byBhcyBQLGkgYXMgVH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlY3JldC5tanMubWFwCg==", "chunks/_/secrets.mjs": "Y29uc3QgZT1be2tleToiTlVYVF9BVVRIX1NFQ1JFVCIsbGFiZWw6IkF1dGggc2lnbmluZyBzZWNyZXQiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGVuY3J5cHQgc2Vzc2lvbiB0b2tlbnMuIFN0YWJsZSBhY3Jvc3MgcmVkZXBsb3lzIOKAlCByb3RhdGluZyBsb2dzIGFsbCB1c2VycyBvdXQuIixjYXRlZ29yeToic3lzdGVtIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzoicmFuZG9tLWhleC0zMiJ9LHtrZXk6Ik5VWFRfV0VCSE9PS19TSUdOSU5HX1NFQ1JFVCIsbGFiZWw6IldlYmhvb2sgc2lnbmluZyBzZWNyZXQiLGRlc2NyaXB0aW9uOiJITUFDIGtleSBmb3Igb3V0Ym91bmQgd2ViaG9vayBzaWduYXR1cmVzLiIsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86InJhbmRvbS1oZXgtMzIifSx7a2V5OiJOVVhUX1RBU0tfU0VDUkVUIixsYWJlbDoiVGFzayBiZWFyZXIgc2VjcmV0IixkZXNjcmlwdGlvbjoiQmVhcmVyIGd1YXJkIGZvciBpbnRlcm5hbCAvYXBpL3Rhc2tzLyoqIHJvdXRlcy4iLGNhdGVnb3J5OiJzeXN0ZW0iLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOiJyYW5kb20taGV4LTMyIn0se2tleToiTlVYVF9DUk9OX1NFQ1JFVCIsbGFiZWw6IkNyb24gYmVhcmVyIHNlY3JldCIsZGVzY3JpcHRpb246IkJlYXJlciBndWFyZCBmb3IgL2FwaS9jcm9uLyoqIHJvdXRlcy4iLGNhdGVnb3J5OiJzeXN0ZW0iLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOiJyYW5kb20taGV4LTMyIn0se2tleToiTlVYVF9QVUJMSUNfQkFTRV9ET01BSU4iLGxhYmVsOiJQdWJsaWMgYmFzZSBkb21haW4iLGRlc2NyaXB0aW9uOiJEZXJpdmVkIGZyb20geW91ciB3b3JrZXJzLmRldiBVUkwuIFNlcnZlci1zaWRlIHJlYWRzIG9ubHk7IGNsaWVudC1zaWRlIGJ1bmRsZXMgdXNlIHRoZSBidWlsZC10aW1lIHZhbHVlLiIsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86ImRlcml2ZS1iYXNlLWRvbWFpbiJ9LHtrZXk6Ik5VWFRfUFVCTElDX1NTTF9FTkFCTEVEIixsYWJlbDoiU1NMIGVuYWJsZWQgZmxhZyIsZGVzY3JpcHRpb246J0Fsd2F5cyAidHJ1ZSIgZm9yIHdvcmtlcnMuZGV2IGRlcGxveW1lbnRzLicsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86ImRlcml2ZS1zc2wtZW5hYmxlZCJ9LHtrZXk6Ik5VWFRfR0lUSFVCX1JFTEVBU0VfUkVQTyIsbGFiZWw6IlJlbGVhc2UgcmVwbyIsZGVzY3JpcHRpb246Ik9XTkVSL1JFUE8gdGhhdCB0aGUgZGVwbG95ZWQgd29ya2VyIGNoZWNrcyBmb3Igc2VsZi11cGRhdGVzLiIsY2F0ZWdvcnk6InN5c3RlbSIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86ImRlcml2ZS1yZWxlYXNlLXJlcG8ifSx7a2V5OiJOVVhUX0dPT0dMRV9DTElFTlRfSUQiLGxhYmVsOiJHb29nbGUgT0F1dGggY2xpZW50IElEIixkZXNjcmlwdGlvbjoiRnJvbSBHb29nbGUgQ2xvdWQgQ29uc29sZSDihpIgQ3JlZGVudGlhbHMuIFdoaXRlbGlzdCB5b3VyIHdvcmtlciBVUkwgKyAvYXBpL2F1dGgvZ29vZ2xlL2NhbGxiYWNrLiIsY2F0ZWdvcnk6Im9hdXRoIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX0dPT0dMRV9DTElFTlRfU0VDUkVUIixsYWJlbDoiR29vZ2xlIE9BdXRoIGNsaWVudCBzZWNyZXQiLGRlc2NyaXB0aW9uOiJQYWlycyB3aXRoIHRoZSBjbGllbnQgSUQgYWJvdmUuIixjYXRlZ29yeToib2F1dGgiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfR0lUSFVCX0NMSUVOVF9JRCIsbGFiZWw6IkdpdEh1YiBPQXV0aCBjbGllbnQgSUQiLGRlc2NyaXB0aW9uOiJGcm9tIEdpdEh1YiBEZXZlbG9wZXIgU2V0dGluZ3Mg4oaSIE9BdXRoIEFwcHMuIFdoaXRlbGlzdCB5b3VyIHdvcmtlciBVUkwgKyAvYXBpL2F1dGgvZ2l0aHViL2NhbGxiYWNrLiIsY2F0ZWdvcnk6Im9hdXRoIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX0dJVEhVQl9DTElFTlRfU0VDUkVUIixsYWJlbDoiR2l0SHViIE9BdXRoIGNsaWVudCBzZWNyZXQiLGRlc2NyaXB0aW9uOiJQYWlycyB3aXRoIHRoZSBjbGllbnQgSUQgYWJvdmUuIixjYXRlZ29yeToib2F1dGgiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfR0lUSFVCX1RPS0VOIixsYWJlbDoiR2l0SHViIHRva2VuIChwcml2YXRlIHJlcG8gdXBkYXRlcykiLGRlc2NyaXB0aW9uOiJQQVQgd2l0aCBjb250ZW50czpyZWFkLiBPbmx5IG5lZWRlZCBpZiB5b3VyIHJlbGVhc2UgcmVwbyBpcyBwcml2YXRlLiIsY2F0ZWdvcnk6Im9hdXRoIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX1NNVFBfSE9TVCIsbGFiZWw6IlNNVFAgaG9zdCIsZGVzY3JpcHRpb246ImUuZy4gc210cC5yZXNlbmQuY29tLCBzbXRwLnNlbmRncmlkLm5ldC4iLGNhdGVnb3J5OiJzbXRwIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX1NNVFBfUE9SVCIsbGFiZWw6IlNNVFAgcG9ydCIsZGVzY3JpcHRpb246IlR5cGljYWxseSA1ODcgKFNUQVJUVExTKSBvciA0NjUgKFNTTCkuIixjYXRlZ29yeToic210cCIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH0se2tleToiTlVYVF9TTVRQX1VTRVIiLGxhYmVsOiJTTVRQIHVzZXJuYW1lIixkZXNjcmlwdGlvbjonT2Z0ZW4gImFwaWtleSIgZm9yIHNlcnZpY2VzIGxpa2UgU2VuZEdyaWQvUmVzZW5kLicsY2F0ZWdvcnk6InNtdHAiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfU01UUF9QQVNTIixsYWJlbDoiU01UUCBwYXNzd29yZCAvIEFQSSBrZXkiLGRlc2NyaXB0aW9uOiJUaGUgYWN0dWFsIHByb3ZpZGVyIEFQSSBrZXkuIixjYXRlZ29yeToic210cCIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH0se2tleToiTlVYVF9TTVRQX0ZST00iLGxhYmVsOiJGcm9tIGFkZHJlc3MiLGRlc2NyaXB0aW9uOidlLmcuICJNeUFwcCA8bm8tcmVwbHlAbXlicmFuZC5jb20+Ii4gTXVzdCBiZSBhIHZlcmlmaWVkIHNlbmRlci4nLGNhdGVnb3J5OiJzbXRwIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX1NFUEFZX1RSQU5TQUNUSU9OX1BSRUZJWCIsbGFiZWw6IlNlcGF5IHRyYW5zYWN0aW9uIHByZWZpeCIsZGVzY3JpcHRpb246IlVzZWQgdG8gaWRlbnRpZnkgeW91ciB0cmFuc2FjdGlvbnMgaW4gYmFuayB0cmFuc2ZlciBkZXNjcmlwdGlvbnMuIixjYXRlZ29yeToicGF5bWVudHMiLHR5cGU6InNlY3JldF90ZXh0IixhdXRvOm51bGx9LHtrZXk6Ik5VWFRfU0VQQVlfQkFOS19OVU1CRVIiLGxhYmVsOiJTZXBheSBiYW5rIGFjY291bnQgbnVtYmVyIixkZXNjcmlwdGlvbjoiWW91ciBiYW5rIGFjY291bnQgdG8gcmVjZWl2ZSBwYXltZW50cy4iLGNhdGVnb3J5OiJwYXltZW50cyIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH0se2tleToiTlVYVF9TRVBBWV9CQU5LX05BTUUiLGxhYmVsOiJTZXBheSBiYW5rIG5hbWUiLGRlc2NyaXB0aW9uOidCYW5rIHNob3J0IGNvZGUsIGUuZy4gIlZDQiIgZm9yIFZpZXRjb21iYW5rLicsY2F0ZWdvcnk6InBheW1lbnRzIix0eXBlOiJzZWNyZXRfdGV4dCIsYXV0bzpudWxsfSx7a2V5OiJOVVhUX0NVU1RPTUVSX1NVUFBPUlRfRU1BSUwiLGxhYmVsOiJDdXN0b21lciBzdXBwb3J0IGVtYWlsIixkZXNjcmlwdGlvbjoiU3VyZmFjZXMgaW4gc3VwcG9ydCBlbWFpbHMgYW5kIHRoZSBjb250YWN0IGZvcm0uIixjYXRlZ29yeToic3VwcG9ydCIsdHlwZToic2VjcmV0X3RleHQiLGF1dG86bnVsbH1dLHQ9bmV3IFNldChlLm1hcChlPT5lLmtleSkpO2Z1bmN0aW9uIGlzS25vd25TZWNyZXRLZXkoZSl7cmV0dXJuIHQuaGFzKGUpfWZ1bmN0aW9uIGZpbmRTZWNyZXREZWYodCl7cmV0dXJuIGUuZmluZChlPT5lLmtleT09PXQpfWZ1bmN0aW9uIGdlbmVyYXRlQXV0b1NlY3JldChlLHQpe3N3aXRjaChlLmF1dG8pe2Nhc2UicmFuZG9tLWhleC0zMiI6e2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoMzIpO3JldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpLEFycmF5LmZyb20oZSkubWFwKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIil9Y2FzZSJkZXJpdmUtYmFzZS1kb21haW4iOnJldHVybiBuZXcgVVJMKHQud29ya2Vyc0RldlVybCkuaG9zdDtjYXNlImRlcml2ZS1zc2wtZW5hYmxlZCI6cmV0dXJuInRydWUiO2Nhc2UiZGVyaXZlLXJlbGVhc2UtcmVwbyI6cmV0dXJuIHQucmVsZWFzZVJlcG87ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZXhwb3J0e2UgYXMgUyxmaW5kU2VjcmV0RGVmIGFzIGYsZ2VuZXJhdGVBdXRvU2VjcmV0IGFzIGcsaXNLbm93blNlY3JldEtleSBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VjcmV0cy5tanMubWFwCg==", "chunks/_/seed.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIGEsdSBhcyByfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7YyBhcyBpfWZyb20iLi9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBtPXtzbHVnOiJzeXN0ZW0iLG5hbWU6IlN5c3RlbSJ9LG49e3NsdWc6ImRlbW8iLG5hbWU6IkRlbW8gT3JnYW5pemF0aW9uIn0scz17YWRtaW46WyJ1c2VyOmltcGVyc29uYXRlIiwic3lzdGVtOm1hbmFnZSIsInN1cHBvcnQ6bWFuYWdlIiwicHJvZHVjdDptYW5hZ2UiXX0sbz17YWRtaW46WyJ1c2VyOm1hbmFnZSIsInByb2plY3Q6bWFuYWdlIiwiYmlsbGluZzptYW5hZ2UiLCJiaWxsaW5nOnJlYWQiXSxtZW1iZXI6WyJ1c2VyOnJlYWQiLCJwcm9qZWN0OnJlYWQiLCJwcm9qZWN0OndyaXRlIiwiYmlsbGluZzpyZWFkIl0sZ3Vlc3Q6WyJwcm9qZWN0OnJlYWQiXX0sbD1be3ByaW1hcnlfZW1haWw6ImFkbWluQHNlZWQubG9jYWwiLHVzZXJuYW1lOiJzZWVkX2FkbWluIixuYW1lOiJTZWVkIEFkbWluIixwcmltYXJ5X3Bob25lOiIrMTAwMDAwMDAwMDEifSx7cHJpbWFyeV9lbWFpbDoiYWxpY2VAc2VlZC5sb2NhbCIsdXNlcm5hbWU6InNlZWRfYWxpY2UiLG5hbWU6IlNlZWQgQWxpY2UiLHByaW1hcnlfcGhvbmU6IisxMDAwMDAwMDAwMiJ9LHtwcmltYXJ5X2VtYWlsOiJib2JAc2VlZC5sb2NhbCIsdXNlcm5hbWU6InNlZWRfYm9iIixuYW1lOiJTZWVkIEJvYiIscHJpbWFyeV9waG9uZToiKzEwMDAwMDAwMDAzIn1dO2FzeW5jIGZ1bmN0aW9uIHNlZWRVc2VycyhtPWwpe3ZhciBuLHM7Y29uc3Qgbz1bXTtmb3IoY29uc3QgbCBvZiBtKXtjb25zdCBtPWF3YWl0IGUucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6YShyLnByaW1hcnlfZW1haWwsbC5wcmltYXJ5X2VtYWlsKX0pO2lmKG0pe2NvbnN0W3NdPWF3YWl0IGUudXBkYXRlKHIpLnNldCh7dXNlcm5hbWU6bC51c2VybmFtZSxuYW1lOmwubmFtZSxwcmltYXJ5X3Bob25lOm51bGwhPShuPWwucHJpbWFyeV9waG9uZSk/bjpudWxsLHZlcmlmaWVkOiEwfSkud2hlcmUoYShyLmlkLG0uaWQpKS5yZXR1cm5pbmcoKTthd2FpdCBpKHMpLG8ucHVzaCh7aWQ6cy5pZCxwcmltYXJ5X2VtYWlsOnMucHJpbWFyeV9lbWFpbH0pfWVsc2V7Y29uc3RbYV09YXdhaXQgZS5pbnNlcnQocikudmFsdWVzKHtwcmltYXJ5X2VtYWlsOmwucHJpbWFyeV9lbWFpbCx1c2VybmFtZTpsLnVzZXJuYW1lLG5hbWU6bC5uYW1lLHByaW1hcnlfcGhvbmU6bnVsbCE9KHM9bC5wcmltYXJ5X3Bob25lKT9zOm51bGwsdmVyaWZpZWQ6ITB9KS5yZXR1cm5pbmcoKTthd2FpdCBpKGEpLG8ucHVzaCh7aWQ6YS5pZCxwcmltYXJ5X2VtYWlsOmEucHJpbWFyeV9lbWFpbH0pfX1yZXR1cm4gb31leHBvcnR7biBhcyBELHMgYXMgUyxtIGFzIGEsbyBhcyBiLHNlZWRVc2VycyBhcyBzfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VlZC5tanMubWFwCg==", "chunks/_/session.mjs": "aW1wb3J0e0wgYXMgaSxrIGFzIHMsUiBhcyBhLGQgYXMgZSxoIGFzIG4sdSBhcyB0fWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByLGwgYXMgbyxpIGFzIGx9ZnJvbSIuL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGQ9NjA0ODAwLHU9Mjthc3luYyBmdW5jdGlvbiBidWlsZFNlc3Npb24oaSxzKXt2YXIgYSxlLG4sdCxsO2NvbnN0IGQ9dm9pZCAwIT09cy5hY3RpdmVPcmdhbml6YXRpb25JZD9zLmFjdGl2ZU9yZ2FuaXphdGlvbklkOmF3YWl0IHIoaS5pZCksdT1hd2FpdCBvKGkuaWQsZCk7cmV0dXJue2lkOmkuaWQscHJpbWFyeV9lbWFpbDppLnByaW1hcnlfZW1haWwscHJpbWFyeV9waG9uZTppLnByaW1hcnlfcGhvbmUsdXNlcm5hbWU6bnVsbCE9KGE9aS51c2VybmFtZSk/YToiIixuYW1lOm51bGwhPShlPWkubmFtZSk/ZToiIixhdmF0YXI6aS5hdmF0YXIsYmlvOm51bGwhPShuPWkuYmlvKT9uOm51bGwsdmVyaWZpZWQ6bnVsbCE9KHQ9aS52ZXJpZmllZCkmJnQscHJvdmlkZXI6cy5wcm92aWRlcixhYmlsaXRpZXM6dSxhY3RpdmVPcmdhbml6YXRpb25JZDpkLGltcGVyc29uYXRvcjpudWxsIT0obD1zLmltcGVyc29uYXRvcik/bDpudWxsLGdlbmVyYXRpb246Mn19YXN5bmMgZnVuY3Rpb24gcGVyc2lzdFNlc3Npb24oZSxuLHQpe3ZhciByO2NvbnN0IG89YXdhaXQgYnVpbGRTZXNzaW9uKG4sdCksbD1udWxsIT0ocj10LnNlc3Npb25JZCk/cjppKCk7cmV0dXJuIGF3YWl0IHMuc2V0KGBzZXNzaW9uOiR7bH1gLG8se3R0bDpkfSksYShlLCJzZXNzaW9uaWQiLGwse2h0dHBPbmx5OiEwLHNlY3VyZTohMCxzYW1lU2l0ZToibGF4IixtYXhBZ2U6ZCxwYXRoOiIvIn0pLHtzZXNzaW9uOm8sc2Vzc2lvbklkOmx9fWFzeW5jIGZ1bmN0aW9uIHdyaXRlU2Vzc2lvbihpLGEpe2F3YWl0IHMuc2V0KGBzZXNzaW9uOiR7aX1gLGEse3R0bDpkfSl9YXN5bmMgZnVuY3Rpb24gcmVmcmVzaFVzZXJTZXNzaW9ucyhpKXtjb25zdCBhPWF3YWl0IHMua2V5cygic2Vzc2lvbjoiKTtpZigwPT09YS5sZW5ndGgpcmV0dXJuIDA7Y29uc3Qgbz1hd2FpdCBlLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOm4odC5pZCxpKX0pO2lmKCFvKXJldHVybiAwO2xldCBkPTA7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgYT1hd2FpdCBzLmdldChlKTtpZighYXx8YS5pZCE9PWkpY29udGludWU7Y29uc3Qgbj1lLnNsaWNlKDgpO2xldCB0PWEuYWN0aXZlT3JnYW5pemF0aW9uSWQ7dCYmIWF3YWl0IGwoaSx0KSYmKHQ9YXdhaXQgcihpKSk7Y29uc3QgdT1hd2FpdCBidWlsZFNlc3Npb24obyx7cHJvdmlkZXI6YS5wcm92aWRlcixhY3RpdmVPcmdhbml6YXRpb25JZDp0LGltcGVyc29uYXRvcjphLmltcGVyc29uYXRvcn0pO2F3YWl0IHdyaXRlU2Vzc2lvbihuLHUpLGQrK31yZXR1cm4gZH1leHBvcnR7dSBhcyBTLGJ1aWxkU2Vzc2lvbiBhcyBiLHBlcnNpc3RTZXNzaW9uIGFzIHAscmVmcmVzaFVzZXJTZXNzaW9ucyBhcyByLHdyaXRlU2Vzc2lvbiBhcyB3fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2Vzc2lvbi5tanMubWFwCg==", "chunks/_/shared.esm-bundler.mjs": "aW1wb3J0e2F6IGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIG1ha2VNYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBhIG9mIGUuc3BsaXQoIiwiKSl0W2FdPTE7cmV0dXJuIGU9PmUgaW4gdH1jb25zdCB0PXt9LGE9W10sTk9PUD0oKT0+e30sTk89KCk9PiExLGlzT249ZT0+MTExPT09ZS5jaGFyQ29kZUF0KDApJiYxMTA9PT1lLmNoYXJDb2RlQXQoMSkmJihlLmNoYXJDb2RlQXQoMik+MTIyfHxlLmNoYXJDb2RlQXQoMik8OTcpLGlzTW9kZWxMaXN0ZW5lcj1lPT5lLnN0YXJ0c1dpdGgoIm9uVXBkYXRlOiIpLG49T2JqZWN0LmFzc2lnbixyZW1vdmU9KGUsdCk9Pntjb25zdCBhPWUuaW5kZXhPZih0KTthPi0xJiZlLnNwbGljZShhLDEpfSxyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksaGFzT3duPShlLHQpPT5yLmNhbGwoZSx0KSxpPUFycmF5LmlzQXJyYXksaXNNYXA9ZT0+IltvYmplY3QgTWFwXSI9PT10b1R5cGVTdHJpbmcoZSksaXNTZXQ9ZT0+IltvYmplY3QgU2V0XSI9PT10b1R5cGVTdHJpbmcoZSksaXNEYXRlPWU9PiJbb2JqZWN0IERhdGVdIj09PXRvVHlwZVN0cmluZyhlKSxpc1JlZ0V4cD1lPT4iW29iamVjdCBSZWdFeHBdIj09PXRvVHlwZVN0cmluZyhlKSxpc0Z1bmN0aW9uPWU9PiJmdW5jdGlvbiI9PXR5cGVvZiBlLGlzU3RyaW5nPWU9PiJzdHJpbmciPT10eXBlb2YgZSxpc1N5bWJvbD1lPT4ic3ltYm9sIj09dHlwZW9mIGUsaXNPYmplY3Q9ZT0+bnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSxpc1Byb21pc2U9ZT0+KGlzT2JqZWN0KGUpfHxpc0Z1bmN0aW9uKGUpKSYmaXNGdW5jdGlvbihlLnRoZW4pJiZpc0Z1bmN0aW9uKGUuY2F0Y2gpLG89T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyx0b1R5cGVTdHJpbmc9ZT0+by5jYWxsKGUpLHRvUmF3VHlwZT1lPT50b1R5cGVTdHJpbmcoZSkuc2xpY2UoOCwtMSksaXNQbGFpbk9iamVjdD1lPT4iW29iamVjdCBPYmplY3RdIj09PXRvVHlwZVN0cmluZyhlKSxpc0ludGVnZXJLZXk9ZT0+aXNTdHJpbmcoZSkmJiJOYU4iIT09ZSYmIi0iIT09ZVswXSYmIiIrcGFyc2VJbnQoZSwxMCk9PT1lLHM9bWFrZU1hcCgiLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LG9uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCxvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLG9uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWQiKSxsPW1ha2VNYXAoImJpbmQsY2xvYWssZWxzZS1pZixlbHNlLGZvcixodG1sLGlmLG1vZGVsLG9uLG9uY2UscHJlLHNob3csc2xvdCx0ZXh0LG1lbW8iKSxjYWNoZVN0cmluZ0Z1bmN0aW9uPWU9Pntjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGE9PnRbYV18fCh0W2FdPWUoYSkpfSxjPS8tXHcvZyxwPWNhY2hlU3RyaW5nRnVuY3Rpb24oZT0+ZS5yZXBsYWNlKGMsZT0+ZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpKSksbT0vXEIoW0EtWl0pL2csZD1jYWNoZVN0cmluZ0Z1bmN0aW9uKGU9PmUucmVwbGFjZShtLCItJDEiKS50b0xvd2VyQ2FzZSgpKSxmPWNhY2hlU3RyaW5nRnVuY3Rpb24oZT0+ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKSx1PWNhY2hlU3RyaW5nRnVuY3Rpb24oZT0+ZT9gb24ke2YoZSl9YDoiIiksaGFzQ2hhbmdlZD0oZSx0KT0+IU9iamVjdC5pcyhlLHQpLGludm9rZUFycmF5Rm5zPShlLC4uLnQpPT57Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspZVthXSguLi50KX0sZGVmPShlLHQsYSxuPSExKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOm4sdmFsdWU6YX0pfSxsb29zZVRvTnVtYmVyPWU9Pntjb25zdCB0PXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHQpP2U6dH0sdG9OdW1iZXI9ZT0+e2NvbnN0IHQ9aXNTdHJpbmcoZSk/TnVtYmVyKGUpOk5hTjtyZXR1cm4gaXNOYU4odCk/ZTp0fTtsZXQgZztjb25zdCBnZXRHbG9iYWxUaGlzPSgpPT5nfHwoZz0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp2b2lkIDAhPT1lP2U6e30pLGg9L15bXyRhLXpBLVpceEEwLVx1RkZGRl1bXyRhLXpBLVowLTlceEEwLVx1RkZGRl0qJC87Y29uc3QgeT17MToiVEVYVCIsMjoiQ0xBU1MiLDQ6IlNUWUxFIiw4OiJQUk9QUyIsMTY6IkZVTExfUFJPUFMiLDMyOiJORUVEX0hZRFJBVElPTiIsNjQ6IlNUQUJMRV9GUkFHTUVOVCIsMTI4OiJLRVlFRF9GUkFHTUVOVCIsMjU2OiJVTktFWUVEX0ZSQUdNRU5UIiw1MTI6Ik5FRURfUEFUQ0giLDEwMjQ6IkRZTkFNSUNfU0xPVFMiLDIwNDg6IkRFVl9ST09UX0ZSQUdNRU5UIixbLTFdOiJDQUNIRUQiLFstMl06IkJBSUwifSxiPXsxOiJTVEFCTEUiLDI6IkRZTkFNSUMiLDM6IkZPUldBUkRFRCJ9LEU9bWFrZU1hcCgiSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTixwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCxNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsQmlnSW50LGNvbnNvbGUsRXJyb3IsU3ltYm9sIiksUz1FO2Z1bmN0aW9uIGdlbmVyYXRlQ29kZUZyYW1lKGUsdD0wLGE9ZS5sZW5ndGgpe2lmKCh0PU1hdGgubWF4KDAsTWF0aC5taW4odCxlLmxlbmd0aCkpKT4oYT1NYXRoLm1heCgwLE1hdGgubWluKGEsZS5sZW5ndGgpKSkpcmV0dXJuIiI7bGV0IG49ZS5zcGxpdCgvKFxyP1xuKS8pO2NvbnN0IHI9bi5maWx0ZXIoKGUsdCk9PnQlMj09MSk7bj1uLmZpbHRlcigoZSx0KT0+dCUyPT0wKTtsZXQgaT0wO2NvbnN0IG89W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspaWYoaSs9bltlXS5sZW5ndGgrKHJbZV0mJnJbZV0ubGVuZ3RofHwwKSxpPj10KXtmb3IobGV0IHM9ZS0yO3M8PWUrMnx8YT5pO3MrKyl7aWYoczwwfHxzPj1uLmxlbmd0aCljb250aW51ZTtjb25zdCBsPXMrMTtvLnB1c2goYCR7bH0keyIgIi5yZXBlYXQoTWF0aC5tYXgoMy1TdHJpbmcobCkubGVuZ3RoLDApKX18ICAke25bc119YCk7Y29uc3QgYz1uW3NdLmxlbmd0aCxwPXJbc10mJnJbc10ubGVuZ3RofHwwO2lmKHM9PT1lKXtjb25zdCBlPXQtKGktKGMrcCkpLG49TWF0aC5tYXgoMSxhPmk/Yy1lOmEtdCk7by5wdXNoKCIgICB8ICAiKyIgIi5yZXBlYXQoZSkrIl4iLnJlcGVhdChuKSl9ZWxzZSBpZihzPmUpe2lmKGE+aSl7Y29uc3QgZT1NYXRoLm1heChNYXRoLm1pbihhLWksYyksMSk7by5wdXNoKCIgICB8ICAiKyJeIi5yZXBlYXQoZSkpfWkrPWMrcH19YnJlYWt9cmV0dXJuIG8uam9pbigiXG4iKX1mdW5jdGlvbiBub3JtYWxpemVTdHlsZShlKXtpZihpKGUpKXtjb25zdCB0PXt9O2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCBuPWVbYV0scj1pc1N0cmluZyhuKT9wYXJzZVN0cmluZ1N0eWxlKG4pOm5vcm1hbGl6ZVN0eWxlKG4pO2lmKHIpZm9yKGNvbnN0IGUgaW4gcil0W2VdPXJbZV19cmV0dXJuIHR9aWYoaXNTdHJpbmcoZSl8fGlzT2JqZWN0KGUpKXJldHVybiBlfWNvbnN0IEE9LzsoPyFbXihdKlwpKS9nLFQ9LzooW15dKykvLE49L1wvXCpbXl0qP1wqXC8vZztmdW5jdGlvbiBwYXJzZVN0cmluZ1N0eWxlKGUpe2NvbnN0IHQ9e307cmV0dXJuIGUucmVwbGFjZShOLCIiKS5zcGxpdChBKS5mb3JFYWNoKGU9PntpZihlKXtjb25zdCBhPWUuc3BsaXQoVCk7YS5sZW5ndGg+MSYmKHRbYVswXS50cmltKCldPWFbMV0udHJpbSgpKX19KSx0fWZ1bmN0aW9uIHN0cmluZ2lmeVN0eWxlKGUpe2lmKCFlKXJldHVybiIiO2lmKGlzU3RyaW5nKGUpKXJldHVybiBlO2xldCB0PSIiO2Zvcihjb25zdCBhIGluIGUpe2NvbnN0IG49ZVthXTtpZihpc1N0cmluZyhuKXx8Im51bWJlciI9PXR5cGVvZiBuKXt0Kz1gJHthLnN0YXJ0c1dpdGgoIi0tIik/YTpkKGEpfToke259O2B9fXJldHVybiB0fWZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzKGUpe2xldCB0PSIiO2lmKGlzU3RyaW5nKGUpKXQ9ZTtlbHNlIGlmKGkoZSkpZm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IG49bm9ybWFsaXplQ2xhc3MoZVthXSk7biYmKHQrPW4rIiAiKX1lbHNlIGlmKGlzT2JqZWN0KGUpKWZvcihjb25zdCBhIGluIGUpZVthXSYmKHQrPWErIiAiKTtyZXR1cm4gdC50cmltKCl9ZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMoZSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0e2NsYXNzOnQsc3R5bGU6YX09ZTtyZXR1cm4gdCYmIWlzU3RyaW5nKHQpJiYoZS5jbGFzcz1ub3JtYWxpemVDbGFzcyh0KSksYSYmKGUuc3R5bGU9bm9ybWFsaXplU3R5bGUoYSkpLGV9Y29uc3Qgaz1tYWtlTWFwKCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsaDEsaDIsaDMsaDQsaDUsaDYsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsc3VtbWFyeSx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCIpLE89bWFrZU1hcCgic3ZnLGFuaW1hdGUsYW5pbWF0ZU1vdGlvbixhbmltYXRlVHJhbnNmb3JtLGNpcmNsZSxjbGlwUGF0aCxjb2xvci1wcm9maWxlLGRlZnMsZGVzYyxkaXNjYXJkLGVsbGlwc2UsZmVCbGVuZCxmZUNvbG9yTWF0cml4LGZlQ29tcG9uZW50VHJhbnNmZXIsZmVDb21wb3NpdGUsZmVDb252b2x2ZU1hdHJpeCxmZURpZmZ1c2VMaWdodGluZyxmZURpc3BsYWNlbWVudE1hcCxmZURpc3RhbnRMaWdodCxmZURyb3BTaGFkb3csZmVGbG9vZCxmZUZ1bmNBLGZlRnVuY0IsZmVGdW5jRyxmZUZ1bmNSLGZlR2F1c3NpYW5CbHVyLGZlSW1hZ2UsZmVNZXJnZSxmZU1lcmdlTm9kZSxmZU1vcnBob2xvZ3ksZmVPZmZzZXQsZmVQb2ludExpZ2h0LGZlU3BlY3VsYXJMaWdodGluZyxmZVNwb3RMaWdodCxmZVRpbGUsZmVUdXJidWxlbmNlLGZpbHRlcixmb3JlaWduT2JqZWN0LGcsaGF0Y2gsaGF0Y2hwYXRoLGltYWdlLGxpbmUsbGluZWFyR3JhZGllbnQsbWFya2VyLG1hc2ssbWVzaCxtZXNoZ3JhZGllbnQsbWVzaHBhdGNoLG1lc2hyb3csbWV0YWRhdGEsbXBhdGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUscmFkaWFsR3JhZGllbnQscmVjdCxzZXQsc29saWRjb2xvcixzdG9wLHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0UGF0aCx0aXRsZSx0c3Bhbix1bmtub3duLHVzZSx2aWV3IiksTT1tYWtlTWFwKCJhbm5vdGF0aW9uLGFubm90YXRpb24teG1sLG1hY3Rpb24sbWFsaWduZ3JvdXAsbWFsaWdubWFyayxtYXRoLG1lbmNsb3NlLG1lcnJvcixtZmVuY2VkLG1mcmFjLG1mcmFjdGlvbixtZ2x5cGgsbWksbWxhYmVsZWR0cixtbG9uZ2RpdixtbXVsdGlzY3JpcHRzLG1uLG1vLG1vdmVyLG1wYWRkZWQsbXBoYW50b20sbXByZXNjcmlwdHMsbXJvb3QsbXJvdyxtcyxtc2NhcnJpZXMsbXNjYXJyeSxtc2dyb3VwLG1zbGluZSxtc3BhY2UsbXNxcnQsbXNyb3csbXN0YWNrLG1zdHlsZSxtc3ViLG1zdWJzdXAsbXN1cCxtdGFibGUsbXRkLG10ZXh0LG10cixtdW5kZXIsbXVuZGVyb3Zlcixub25lLHNlbWFudGljcyIpLEM9bWFrZU1hcCgiYXJlYSxiYXNlLGJyLGNvbCxlbWJlZCxocixpbWcsaW5wdXQsbGluayxtZXRhLHBhcmFtLHNvdXJjZSx0cmFjayx3YnIiKSx4PSJpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHkiLHY9bWFrZU1hcCh4KSxSPW1ha2VNYXAoeCsiLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjb250cm9scyxkZWZhdWx0LGRlZmVyLGRpc2FibGVkLGhpZGRlbixpbmVydCxsb29wLG9wZW4scmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLGNoZWNrZWQsbXV0ZWQsbXVsdGlwbGUsc2VsZWN0ZWQiKTtmdW5jdGlvbiBpbmNsdWRlQm9vbGVhbkF0dHIoZSl7cmV0dXJuISFlfHwiIj09PWV9Y29uc3QgXz0vWz4vPSInXHUwMDA5XHUwMDBhXHUwMDBjXHUwMDIwXS8sTD17fTtmdW5jdGlvbiBpc1NTUlNhZmVBdHRyTmFtZShlKXtpZihMLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMW2VdO2NvbnN0IHQ9Xy50ZXN0KGUpO3JldHVybiB0JiZjb25zb2xlLmVycm9yKGB1bnNhZmUgYXR0cmlidXRlIG5hbWU6ICR7ZX1gKSxMW2VdPSF0fWNvbnN0IFA9e2FjY2VwdENoYXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVpdjoiaHR0cC1lcXVpdiJ9LHc9bWFrZU1hcCgiYWNjZXB0LGFjY2VwdC1jaGFyc2V0LGFjY2Vzc2tleSxhY3Rpb24sYWxpZ24sYWxsb3csYWx0LGFzeW5jLGF1dG9jYXBpdGFsaXplLGF1dG9jb21wbGV0ZSxhdXRvZm9jdXMsYXV0b3BsYXksYmFja2dyb3VuZCxiZ2NvbG9yLGJvcmRlcixidWZmZXJlZCxjYXB0dXJlLGNoYWxsZW5nZSxjaGFyc2V0LGNoZWNrZWQsY2l0ZSxjbGFzcyxjb2RlLGNvZGViYXNlLGNvbG9yLGNvbHMsY29sc3Bhbixjb250ZW50LGNvbnRlbnRlZGl0YWJsZSxjb250ZXh0bWVudSxjb250cm9scyxjb29yZHMsY3Jvc3NvcmlnaW4sY3NwLGRhdGEsZGF0ZXRpbWUsZGVjb2RpbmcsZGVmYXVsdCxkZWZlcixkaXIsZGlybmFtZSxkaXNhYmxlZCxkb3dubG9hZCxkcmFnZ2FibGUsZHJvcHpvbmUsZW5jdHlwZSxlbnRlcmtleWhpbnQsZm9yLGZvcm0sZm9ybWFjdGlvbixmb3JtZW5jdHlwZSxmb3JtbWV0aG9kLGZvcm1ub3ZhbGlkYXRlLGZvcm10YXJnZXQsaGVhZGVycyxoZWlnaHQsaGlkZGVuLGhpZ2gsaHJlZixocmVmbGFuZyxodHRwLWVxdWl2LGljb24saWQsaW1wb3J0YW5jZSxpbmVydCxpbnRlZ3JpdHksaXNtYXAsaXRlbXByb3Asa2V5dHlwZSxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9hZGluZyxsaXN0LGxvb3AsbG93LG1hbmlmZXN0LG1heCxtYXhsZW5ndGgsbWlubGVuZ3RoLG1lZGlhLG1pbixtdWx0aXBsZSxtdXRlZCxuYW1lLG5vdmFsaWRhdGUsb3BlbixvcHRpbXVtLHBhdHRlcm4scGluZyxwbGFjZWhvbGRlcixwb3N0ZXIscHJlbG9hZCxyYWRpb2dyb3VwLHJlYWRvbmx5LHJlZmVycmVycG9saWN5LHJlbCxyZXF1aXJlZCxyZXZlcnNlZCxyb3dzLHJvd3NwYW4sc2FuZGJveCxzY29wZSxzY29wZWQsc2VsZWN0ZWQsc2hhcGUsc2l6ZSxzaXplcyxzbG90LHNwYW4sc3BlbGxjaGVjayxzcmMsc3JjZG9jLHNyY2xhbmcsc3Jjc2V0LHN0YXJ0LHN0ZXAsc3R5bGUsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbHVlLHdpZHRoLHdyYXAiKSxEPW1ha2VNYXAoInhtbG5zLGFjY2VudC1oZWlnaHQsYWNjdW11bGF0ZSxhZGRpdGl2ZSxhbGlnbm1lbnQtYmFzZWxpbmUsYWxwaGFiZXRpYyxhbXBsaXR1ZGUsYXJhYmljLWZvcm0sYXNjZW50LGF0dHJpYnV0ZU5hbWUsYXR0cmlidXRlVHlwZSxhemltdXRoLGJhc2VGcmVxdWVuY3ksYmFzZWxpbmUtc2hpZnQsYmFzZVByb2ZpbGUsYmJveCxiZWdpbixiaWFzLGJ5LGNhbGNNb2RlLGNhcC1oZWlnaHQsY2xhc3MsY2xpcCxjbGlwUGF0aFVuaXRzLGNsaXAtcGF0aCxjbGlwLXJ1bGUsY29sb3IsY29sb3ItaW50ZXJwb2xhdGlvbixjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMsY29sb3ItcHJvZmlsZSxjb2xvci1yZW5kZXJpbmcsY29udGVudFNjcmlwdFR5cGUsY29udGVudFN0eWxlVHlwZSxjcm9zc29yaWdpbixjdXJzb3IsY3gsY3ksZCxkZWNlbGVyYXRlLGRlc2NlbnQsZGlmZnVzZUNvbnN0YW50LGRpcmVjdGlvbixkaXNwbGF5LGRpdmlzb3IsZG9taW5hbnQtYmFzZWxpbmUsZHVyLGR4LGR5LGVkZ2VNb2RlLGVsZXZhdGlvbixlbmFibGUtYmFja2dyb3VuZCxlbmQsZXhwb25lbnQsZmlsbCxmaWxsLW9wYWNpdHksZmlsbC1ydWxlLGZpbHRlcixmaWx0ZXJSZXMsZmlsdGVyVW5pdHMsZmxvb2QtY29sb3IsZmxvb2Qtb3BhY2l0eSxmb250LWZhbWlseSxmb250LXNpemUsZm9udC1zaXplLWFkanVzdCxmb250LXN0cmV0Y2gsZm9udC1zdHlsZSxmb250LXZhcmlhbnQsZm9udC13ZWlnaHQsZm9ybWF0LGZyb20sZnIsZngsZnksZzEsZzIsZ2x5cGgtbmFtZSxnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsLGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsLGdseXBoUmVmLGdyYWRpZW50VHJhbnNmb3JtLGdyYWRpZW50VW5pdHMsaGFuZ2luZyxoZWlnaHQsaHJlZixocmVmbGFuZyxob3Jpei1hZHYteCxob3Jpei1vcmlnaW4teCxpZCxpZGVvZ3JhcGhpYyxpbWFnZS1yZW5kZXJpbmcsaW4saW4yLGludGVyY2VwdCxrLGsxLGsyLGszLGs0LGtlcm5lbE1hdHJpeCxrZXJuZWxVbml0TGVuZ3RoLGtlcm5pbmcsa2V5UG9pbnRzLGtleVNwbGluZXMsa2V5VGltZXMsbGFuZyxsZW5ndGhBZGp1c3QsbGV0dGVyLXNwYWNpbmcsbGlnaHRpbmctY29sb3IsbGltaXRpbmdDb25lQW5nbGUsbG9jYWwsbWFya2VyLWVuZCxtYXJrZXItbWlkLG1hcmtlci1zdGFydCxtYXJrZXJIZWlnaHQsbWFya2VyVW5pdHMsbWFya2VyV2lkdGgsbWFzayxtYXNrQ29udGVudFVuaXRzLG1hc2tVbml0cyxtYXRoZW1hdGljYWwsbWF4LG1lZGlhLG1ldGhvZCxtaW4sbW9kZSxuYW1lLG51bU9jdGF2ZXMsb2Zmc2V0LG9wYWNpdHksb3BlcmF0b3Isb3JkZXIsb3JpZW50LG9yaWVudGF0aW9uLG9yaWdpbixvdmVyZmxvdyxvdmVybGluZS1wb3NpdGlvbixvdmVybGluZS10aGlja25lc3MscGFub3NlLTEscGFpbnQtb3JkZXIscGF0aCxwYXRoTGVuZ3RoLHBhdHRlcm5Db250ZW50VW5pdHMscGF0dGVyblRyYW5zZm9ybSxwYXR0ZXJuVW5pdHMscGluZyxwb2ludGVyLWV2ZW50cyxwb2ludHMscG9pbnRzQXRYLHBvaW50c0F0WSxwb2ludHNBdFoscHJlc2VydmVBbHBoYSxwcmVzZXJ2ZUFzcGVjdFJhdGlvLHByaW1pdGl2ZVVuaXRzLHIscmFkaXVzLHJlZmVycmVyUG9saWN5LHJlZlgscmVmWSxyZWwscmVuZGVyaW5nLWludGVudCxyZXBlYXRDb3VudCxyZXBlYXREdXIscmVxdWlyZWRFeHRlbnNpb25zLHJlcXVpcmVkRmVhdHVyZXMscmVzdGFydCxyZXN1bHQscm90YXRlLHJ4LHJ5LHNjYWxlLHNlZWQsc2hhcGUtcmVuZGVyaW5nLHNsb3BlLHNwYWNpbmcsc3BlY3VsYXJDb25zdGFudCxzcGVjdWxhckV4cG9uZW50LHNwZWVkLHNwcmVhZE1ldGhvZCxzdGFydE9mZnNldCxzdGREZXZpYXRpb24sc3RlbWgsc3RlbXYsc3RpdGNoVGlsZXMsc3RvcC1jb2xvcixzdG9wLW9wYWNpdHksc3RyaWtldGhyb3VnaC1wb3NpdGlvbixzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyxzdHJpbmcsc3Ryb2tlLHN0cm9rZS1kYXNoYXJyYXksc3Ryb2tlLWRhc2hvZmZzZXQsc3Ryb2tlLWxpbmVjYXAsc3Ryb2tlLWxpbmVqb2luLHN0cm9rZS1taXRlcmxpbWl0LHN0cm9rZS1vcGFjaXR5LHN0cm9rZS13aWR0aCxzdHlsZSxzdXJmYWNlU2NhbGUsc3lzdGVtTGFuZ3VhZ2UsdGFiaW5kZXgsdGFibGVWYWx1ZXMsdGFyZ2V0LHRhcmdldFgsdGFyZ2V0WSx0ZXh0LWFuY2hvcix0ZXh0LWRlY29yYXRpb24sdGV4dC1yZW5kZXJpbmcsdGV4dExlbmd0aCx0byx0cmFuc2Zvcm0sdHJhbnNmb3JtLW9yaWdpbix0eXBlLHUxLHUyLHVuZGVybGluZS1wb3NpdGlvbix1bmRlcmxpbmUtdGhpY2tuZXNzLHVuaWNvZGUsdW5pY29kZS1iaWRpLHVuaWNvZGUtcmFuZ2UsdW5pdHMtcGVyLWVtLHYtYWxwaGFiZXRpYyx2LWhhbmdpbmcsdi1pZGVvZ3JhcGhpYyx2LW1hdGhlbWF0aWNhbCx2YWx1ZXMsdmVjdG9yLWVmZmVjdCx2ZXJzaW9uLHZlcnQtYWR2LXksdmVydC1vcmlnaW4teCx2ZXJ0LW9yaWdpbi15LHZpZXdCb3gsdmlld1RhcmdldCx2aXNpYmlsaXR5LHdpZHRoLHdpZHRocyx3b3JkLXNwYWNpbmcsd3JpdGluZy1tb2RlLHgseC1oZWlnaHQseDEseDIseENoYW5uZWxTZWxlY3Rvcix4bGluazphY3R1YXRlLHhsaW5rOmFyY3JvbGUseGxpbms6aHJlZix4bGluazpyb2xlLHhsaW5rOnNob3cseGxpbms6dGl0bGUseGxpbms6dHlwZSx4bWxuczp4bGluayx4bWw6YmFzZSx4bWw6bGFuZyx4bWw6c3BhY2UseSx5MSx5Mix5Q2hhbm5lbFNlbGVjdG9yLHosem9vbUFuZFBhbiIpLEY9bWFrZU1hcCgiYWNjZW50LGFjY2VudHVuZGVyLGFjdGlvbnR5cGUsYWxpZ24sYWxpZ25tZW50c2NvcGUsYWx0aW1nLGFsdGltZy1oZWlnaHQsYWx0aW1nLXZhbGlnbixhbHRpbWctd2lkdGgsYWx0dGV4dCxiZXZlbGxlZCxjbG9zZSxjb2x1bW5zYWxpZ24sY29sdW1ubGluZXMsY29sdW1uc3BhbixkZW5vbWFsaWduLGRlcHRoLGRpcixkaXNwbGF5LGRpc3BsYXlzdHlsZSxlbmNvZGluZyxlcXVhbGNvbHVtbnMsZXF1YWxyb3dzLGZlbmNlLGZvbnRzdHlsZSxmb250d2VpZ2h0LGZvcm0sZnJhbWUsZnJhbWVzcGFjaW5nLGdyb3VwYWxpZ24saGVpZ2h0LGhyZWYsaWQsaW5kZW50YWxpZ24saW5kZW50YWxpZ25maXJzdCxpbmRlbnRhbGlnbmxhc3QsaW5kZW50c2hpZnQsaW5kZW50c2hpZnRmaXJzdCxpbmRlbnRzaGlmdGxhc3QsaW5kZXh0eXBlLGp1c3RpZnksbGFyZ2V0b3AsbGFyZ2VvcCxscXVvdGUsbHNwYWNlLG1hdGhiYWNrZ3JvdW5kLG1hdGhjb2xvcixtYXRoc2l6ZSxtYXRodmFyaWFudCxtYXhzaXplLG1pbmxhYmVsc3BhY2luZyxtb2RlLG90aGVyLG92ZXJmbG93LHBvc2l0aW9uLHJvd2FsaWduLHJvd2xpbmVzLHJvd3NwYW4scnF1b3RlLHJzcGFjZSxzY3JpcHRsZXZlbCxzY3JpcHRtaW5zaXplLHNjcmlwdHNpemVtdWx0aXBsaWVyLHNlbGVjdGlvbixzZXBhcmF0b3Isc2VwYXJhdG9ycyxzaGlmdCxzaWRlLHNyYyxzdGFja2FsaWduLHN0cmV0Y2h5LHN1YnNjcmlwdHNoaWZ0LHN1cGVyc2NyaXB0c2hpZnQsc3ltbWV0cmljLHZvZmZzZXQsd2lkdGgsd2lkdGhzLHhsaW5rOmhyZWYseGxpbms6c2hvdyx4bGluazp0eXBlLHhtbG5zIik7ZnVuY3Rpb24gaXNSZW5kZXJhYmxlQXR0clZhbHVlKGUpe2lmKG51bGw9PWUpcmV0dXJuITE7Y29uc3QgdD10eXBlb2YgZTtyZXR1cm4ic3RyaW5nIj09PXR8fCJudW1iZXIiPT09dHx8ImJvb2xlYW4iPT09dH1jb25zdCB6PS9bIicmPD5dLztmdW5jdGlvbiBlc2NhcGVIdG1sKGUpe2NvbnN0IHQ9IiIrZSxhPXouZXhlYyh0KTtpZighYSlyZXR1cm4gdDtsZXQgbixyLGk9IiIsbz0wO2ZvcihyPWEuaW5kZXg7cjx0Lmxlbmd0aDtyKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQocikpe2Nhc2UgMzQ6bj0iJnF1b3Q7IjticmVhaztjYXNlIDM4Om49IiZhbXA7IjticmVhaztjYXNlIDM5Om49IiYjMzk7IjticmVhaztjYXNlIDYwOm49IiZsdDsiO2JyZWFrO2Nhc2UgNjI6bj0iJmd0OyI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1vIT09ciYmKGkrPXQuc2xpY2UobyxyKSksbz1yKzEsaSs9bn1yZXR1cm4gbyE9PXI/aSt0LnNsaWNlKG8scik6aX1jb25zdCBJPS9eLT8+fDwhLS18LS0+fC0tIT58PCEtJC9nO2Z1bmN0aW9uIGVzY2FwZUh0bWxDb21tZW50KGUpe3JldHVybiBlLnJlcGxhY2UoSSwiIil9Y29uc3QgVT0vWyAhIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxcXV5ge3x9fl0vZztmdW5jdGlvbiBsb29zZUVxdWFsKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7bGV0IGE9aXNEYXRlKGUpLG49aXNEYXRlKHQpO2lmKGF8fG4pcmV0dXJuISghYXx8IW4pJiZlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGE9aXNTeW1ib2woZSksbj1pc1N5bWJvbCh0KSxhfHxuKXJldHVybiBlPT09dDtpZihhPWkoZSksbj1pKHQpLGF8fG4pcmV0dXJuISghYXx8IW4pJiZmdW5jdGlvbihlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7bGV0IGE9ITA7Zm9yKGxldCBuPTA7YSYmbjxlLmxlbmd0aDtuKyspYT1sb29zZUVxdWFsKGVbbl0sdFtuXSk7cmV0dXJuIGF9KGUsdCk7aWYoYT1pc09iamVjdChlKSxuPWlzT2JqZWN0KHQpLGF8fG4pe2lmKCFhfHwhbilyZXR1cm4hMTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGghPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuITE7Zm9yKGNvbnN0IGEgaW4gZSl7Y29uc3Qgbj1lLmhhc093blByb3BlcnR5KGEpLHI9dC5oYXNPd25Qcm9wZXJ0eShhKTtpZihuJiYhcnx8IW4mJnJ8fCFsb29zZUVxdWFsKGVbYV0sdFthXSkpcmV0dXJuITF9fXJldHVybiBTdHJpbmcoZSk9PT1TdHJpbmcodCl9ZnVuY3Rpb24gbG9vc2VJbmRleE9mKGUsdCl7cmV0dXJuIGUuZmluZEluZGV4KGU9Pmxvb3NlRXF1YWwoZSx0KSl9Y29uc3QgaXNSZWY9ZT0+ISghZXx8ITAhPT1lLl9fdl9pc1JlZiksdG9EaXNwbGF5U3RyaW5nPWU9PmlzU3RyaW5nKGUpP2U6bnVsbD09ZT8iIjppKGUpfHxpc09iamVjdChlKSYmKGUudG9TdHJpbmc9PT1vfHwhaXNGdW5jdGlvbihlLnRvU3RyaW5nKSk/aXNSZWYoZSk/dG9EaXNwbGF5U3RyaW5nKGUudmFsdWUpOkpTT04uc3RyaW5naWZ5KGUscmVwbGFjZXIsMik6U3RyaW5nKGUpLHJlcGxhY2VyPShlLHQpPT5pc1JlZih0KT9yZXBsYWNlcihlLHQudmFsdWUpOmlzTWFwKHQpP3tbYE1hcCgke3Quc2l6ZX0pYF06Wy4uLnQuZW50cmllcygpXS5yZWR1Y2UoKGUsW3QsYV0sbik9PihlW3N0cmluZ2lmeVN5bWJvbCh0LG4pKyIgPT4iXT1hLGUpLHt9KX06aXNTZXQodCk/e1tgU2V0KCR7dC5zaXplfSlgXTpbLi4udC52YWx1ZXMoKV0ubWFwKGU9PnN0cmluZ2lmeVN5bWJvbChlKSl9OmlzU3ltYm9sKHQpP3N0cmluZ2lmeVN5bWJvbCh0KTohaXNPYmplY3QodCl8fGkodCl8fGlzUGxhaW5PYmplY3QodCk/dDpTdHJpbmcodCksc3RyaW5naWZ5U3ltYm9sPShlLHQ9IiIpPT57dmFyIGE7cmV0dXJuIGlzU3ltYm9sKGUpP2BTeW1ib2woJHtudWxsIT0oYT1lLmRlc2NyaXB0aW9uKT9hOnR9KWA6ZX07ZnVuY3Rpb24gbm9ybWFsaXplQ3NzVmFyVmFsdWUoZSl7cmV0dXJuIG51bGw9PWU/ImluaXRpYWwiOiJzdHJpbmciPT10eXBlb2YgZT8iIj09PWU/IiAiOmU6U3RyaW5nKGUpfWNvbnN0IGo9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLEVNUFRZX0FSUjphLEVNUFRZX09CSjp0LE5POk5PLE5PT1A6Tk9PUCxQYXRjaEZsYWdOYW1lczp5LFBhdGNoRmxhZ3M6e1RFWFQ6MSwxOiJURVhUIixDTEFTUzoyLDI6IkNMQVNTIixTVFlMRTo0LDQ6IlNUWUxFIixQUk9QUzo4LDg6IlBST1BTIixGVUxMX1BST1BTOjE2LDE2OiJGVUxMX1BST1BTIixORUVEX0hZRFJBVElPTjozMiwzMjoiTkVFRF9IWURSQVRJT04iLFNUQUJMRV9GUkFHTUVOVDo2NCw2NDoiU1RBQkxFX0ZSQUdNRU5UIixLRVlFRF9GUkFHTUVOVDoxMjgsMTI4OiJLRVlFRF9GUkFHTUVOVCIsVU5LRVlFRF9GUkFHTUVOVDoyNTYsMjU2OiJVTktFWUVEX0ZSQUdNRU5UIixORUVEX1BBVENIOjUxMiw1MTI6Ik5FRURfUEFUQ0giLERZTkFNSUNfU0xPVFM6MTAyNCwxMDI0OiJEWU5BTUlDX1NMT1RTIixERVZfUk9PVF9GUkFHTUVOVDoyMDQ4LDIwNDg6IkRFVl9ST09UX0ZSQUdNRU5UIixDQUNIRUQ6LTEsIi0xIjoiQ0FDSEVEIixCQUlMOi0yLCItMiI6IkJBSUwifSxTaGFwZUZsYWdzOntFTEVNRU5UOjEsMToiRUxFTUVOVCIsRlVOQ1RJT05BTF9DT01QT05FTlQ6MiwyOiJGVU5DVElPTkFMX0NPTVBPTkVOVCIsU1RBVEVGVUxfQ09NUE9ORU5UOjQsNDoiU1RBVEVGVUxfQ09NUE9ORU5UIixURVhUX0NISUxEUkVOOjgsODoiVEVYVF9DSElMRFJFTiIsQVJSQVlfQ0hJTERSRU46MTYsMTY6IkFSUkFZX0NISUxEUkVOIixTTE9UU19DSElMRFJFTjozMiwzMjoiU0xPVFNfQ0hJTERSRU4iLFRFTEVQT1JUOjY0LDY0OiJURUxFUE9SVCIsU1VTUEVOU0U6MTI4LDEyODoiU1VTUEVOU0UiLENPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRToyNTYsMjU2OiJDT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUiLENPTVBPTkVOVF9LRVBUX0FMSVZFOjUxMiw1MTI6IkNPTVBPTkVOVF9LRVBUX0FMSVZFIixDT01QT05FTlQ6Niw2OiJDT01QT05FTlQifSxTbG90RmxhZ3M6e1NUQUJMRToxLDE6IlNUQUJMRSIsRFlOQU1JQzoyLDI6IkRZTkFNSUMiLEZPUldBUkRFRDozLDM6IkZPUldBUkRFRCJ9LGNhbWVsaXplOnAsY2FwaXRhbGl6ZTpmLGNzc1Zhck5hbWVFc2NhcGVTeW1ib2xzUkU6VSxkZWY6ZGVmLGVzY2FwZUh0bWw6ZXNjYXBlSHRtbCxlc2NhcGVIdG1sQ29tbWVudDplc2NhcGVIdG1sQ29tbWVudCxleHRlbmQ6bixnZW5DYWNoZUtleTpmdW5jdGlvbihlLHQpe3JldHVybiBlK0pTT04uc3RyaW5naWZ5KHQsKGUsdCk9PiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QudG9TdHJpbmcoKTp0KX0sZ2VuUHJvcHNBY2Nlc3NFeHA6ZnVuY3Rpb24oZSl7cmV0dXJuIGgudGVzdChlKT9gX19wcm9wcy4ke2V9YDpgX19wcm9wc1ske0pTT04uc3RyaW5naWZ5KGUpfV1gfSxnZW5lcmF0ZUNvZGVGcmFtZTpnZW5lcmF0ZUNvZGVGcmFtZSxnZXRFc2NhcGVkQ3NzVmFyTmFtZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UoVSxlPT50PyciJz09PWU/J1xcXFxcXCInOmBcXFxcJHtlfWA6YFxcJHtlfWApfSxnZXRHbG9iYWxUaGlzOmdldEdsb2JhbFRoaXMsaGFzQ2hhbmdlZDpoYXNDaGFuZ2VkLGhhc093bjpoYXNPd24saHlwaGVuYXRlOmQsaW5jbHVkZUJvb2xlYW5BdHRyOmluY2x1ZGVCb29sZWFuQXR0cixpbnZva2VBcnJheUZuczppbnZva2VBcnJheUZucyxpc0FycmF5OmksaXNCb29sZWFuQXR0cjpSLGlzQnVpbHRJbkRpcmVjdGl2ZTpsLGlzRGF0ZTppc0RhdGUsaXNGdW5jdGlvbjppc0Z1bmN0aW9uLGlzR2xvYmFsbHlBbGxvd2VkOkUsaXNHbG9iYWxseVdoaXRlbGlzdGVkOlMsaXNIVE1MVGFnOmssaXNJbnRlZ2VyS2V5OmlzSW50ZWdlcktleSxpc0tub3duSHRtbEF0dHI6dyxpc0tub3duTWF0aE1MQXR0cjpGLGlzS25vd25TdmdBdHRyOkQsaXNNYXA6aXNNYXAsaXNNYXRoTUxUYWc6TSxpc01vZGVsTGlzdGVuZXI6aXNNb2RlbExpc3RlbmVyLGlzT2JqZWN0OmlzT2JqZWN0LGlzT246aXNPbixpc1BsYWluT2JqZWN0OmlzUGxhaW5PYmplY3QsaXNQcm9taXNlOmlzUHJvbWlzZSxpc1JlZ0V4cDppc1JlZ0V4cCxpc1JlbmRlcmFibGVBdHRyVmFsdWU6aXNSZW5kZXJhYmxlQXR0clZhbHVlLGlzUmVzZXJ2ZWRQcm9wOnMsaXNTU1JTYWZlQXR0ck5hbWU6aXNTU1JTYWZlQXR0ck5hbWUsaXNTVkdUYWc6Tyxpc1NldDppc1NldCxpc1NwZWNpYWxCb29sZWFuQXR0cjp2LGlzU3RyaW5nOmlzU3RyaW5nLGlzU3ltYm9sOmlzU3ltYm9sLGlzVm9pZFRhZzpDLGxvb3NlRXF1YWw6bG9vc2VFcXVhbCxsb29zZUluZGV4T2Y6bG9vc2VJbmRleE9mLGxvb3NlVG9OdW1iZXI6bG9vc2VUb051bWJlcixtYWtlTWFwOm1ha2VNYXAsbm9ybWFsaXplQ2xhc3M6bm9ybWFsaXplQ2xhc3Msbm9ybWFsaXplQ3NzVmFyVmFsdWU6bm9ybWFsaXplQ3NzVmFyVmFsdWUsbm9ybWFsaXplUHJvcHM6bm9ybWFsaXplUHJvcHMsbm9ybWFsaXplU3R5bGU6bm9ybWFsaXplU3R5bGUsb2JqZWN0VG9TdHJpbmc6byxwYXJzZVN0cmluZ1N0eWxlOnBhcnNlU3RyaW5nU3R5bGUscHJvcHNUb0F0dHJNYXA6UCxyZW1vdmU6cmVtb3ZlLHNsb3RGbGFnc1RleHQ6YixzdHJpbmdpZnlTdHlsZTpzdHJpbmdpZnlTdHlsZSx0b0Rpc3BsYXlTdHJpbmc6dG9EaXNwbGF5U3RyaW5nLHRvSGFuZGxlcktleTp1LHRvTnVtYmVyOnRvTnVtYmVyLHRvUmF3VHlwZTp0b1Jhd1R5cGUsdG9UeXBlU3RyaW5nOnRvVHlwZVN0cmluZ30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtleHBvcnR7ayBhcyAkLHAgYXMgQSxsb29zZVRvTnVtYmVyIGFzIEIsdSBhcyBDLGQgYXMgRCx0IGFzIEUsbG9vc2VFcXVhbCBhcyBGLGlzUmVnRXhwIGFzIEcsdG9OdW1iZXIgYXMgSCxmIGFzIEksRSBhcyBKLGluY2x1ZGVCb29sZWFuQXR0ciBhcyBLLHYgYXMgTCxsb29zZUluZGV4T2YgYXMgTSxOT09QIGFzIE4sbm9ybWFsaXplQ3NzVmFyVmFsdWUgYXMgTyxub3JtYWxpemVQcm9wcyBhcyBQLHRvRGlzcGxheVN0cmluZyBhcyBRLGVzY2FwZUh0bWwgYXMgUixlc2NhcGVIdG1sQ29tbWVudCBhcyBTLEMgYXMgVCxzdHJpbmdpZnlTdHlsZSBhcyBVLGlzUmVuZGVyYWJsZUF0dHJWYWx1ZSBhcyBWLE8gYXMgVyxQIGFzIFgsUiBhcyBZLGlzU1NSU2FmZUF0dHJOYW1lIGFzIFosbCBhcyBfLGlzU3ltYm9sIGFzIGEsTSBhcyBhMCxwYXJzZVN0cmluZ1N0eWxlIGFzIGExLGdlbmVyYXRlQ29kZUZyYW1lIGFzIGEyLGogYXMgYTMsaSBhcyBiLGlzT2JqZWN0IGFzIGMsZGVmIGFzIGQsaGFzQ2hhbmdlZCBhcyBlLGlzTWFwIGFzIGYsbiBhcyBnLGhhc093biBhcyBoLGlzRnVuY3Rpb24gYXMgaSxpc0ludGVnZXJLZXkgYXMgaixpc1NldCBhcyBrLGlzUGxhaW5PYmplY3QgYXMgbCxtYWtlTWFwIGFzIG0saXNTdHJpbmcgYXMgbixub3JtYWxpemVDbGFzcyBhcyBvLG5vcm1hbGl6ZVN0eWxlIGFzIHAsaXNPbiBhcyBxLHJlbW92ZSBhcyByLGlzTW9kZWxMaXN0ZW5lciBhcyBzLHRvUmF3VHlwZSBhcyB0LGlzUHJvbWlzZSBhcyB1LGdldEdsb2JhbFRoaXMgYXMgdixpbnZva2VBcnJheUZucyBhcyB3LE5PIGFzIHgsYSBhcyB5LHMgYXMgen07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYXJlZC5lc20tYnVuZGxlci5tanMubWFwCg==", "chunks/_/ticket.mjs": "aW1wb3J0e2QgYXMgZSxTIGFzIHQseSBhcyBhLEEgYXMgcyxCIGFzIG4sQyBhcyBpLHEgYXMgbyx6IGFzIHIsbyBhcyBkLFQgYXMgdSxfIGFzIGwscyBhcyBjLFUgYXMgbSxiIGFzIGcsViBhcyBfLFcgYXMgcCxGIGFzIHksaCBhcyBmLGMgYXMgaCxwIGFzIGssayBhcyB3LGYgYXMgYixOIGFzIFQsTyBhcyBOLFggYXMgdixqIGFzIEQsdSBhcyAkLFkgYXMgTSxaIGFzIGosJCBhcyBDLGEwIGFzIFN9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtzIGFzIEF9ZnJvbSIuL3VzZXItZW1haWwubWpzIjtpbXBvcnR7dCBhcyBJfWZyb20iLi9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBVPVt7c2VuZGVyTmFtZToiSm9yZGFuIEJyb3duIixib2R5OiJzZW50IHlvdSBhIG1lc3NhZ2UifSx7c2VuZGVyTmFtZToiVGF5bG9yIEdyZWVuIixib2R5OiJzZW50IHlvdSBhIG1lc3NhZ2UifSx7c2VuZGVyTmFtZToiQ291cnRuZXkgSGVucnkiLGJvZHk6ImFkZGVkIHlvdSB0byBhIHByb2plY3QifSx7c2VuZGVyTmFtZToiTGluZHNheSBXYWx0b24iLGJvZHk6InN1YnNjcmliZWQgdG8geW91ciBlbWFpbCBsaXN0In0se3NlbmRlck5hbWU6IlRvbSBDb29rIixib2R5OiJhYmFuZG9ubmVkIGNhcnQifSx7c2VuZGVyTmFtZToiQ2FzZXkgVGhvbWFzIixib2R5OiJwdXJjaGFzZWQgeW91ciBwcm9kdWN0In0se3NlbmRlck5hbWU6IldoaXRuZXkgRnJhbmNpcyIsYm9keToiY29tbWVudGVkIG9uIHlvdXIgcG9zdCJ9LHtzZW5kZXJOYW1lOiJMZW9uYXJkIEtyYXNuZXIiLGJvZHk6InNoYXJlZCBhIGZpbGUgd2l0aCB5b3UifV07YXN5bmMgZnVuY3Rpb24gc2VlZERlbW9Ob3RpZmljYXRpb25zKGEscyl7Y29uc3Qgbj1EYXRlLm5vdygpO2ZvcihsZXQgaT0wO2k8VS5sZW5ndGg7aSsrKXtjb25zdCBvPVVbaV07YXdhaXQgZS5pbnNlcnQodCkudmFsdWVzKHt1c2VyX2lkOmEsb3JnYW5pemF0aW9uX2lkOnMsc2VuZGVyX25hbWU6by5zZW5kZXJOYW1lLGJvZHk6by5ib2R5LGlzX3JlYWQ6aT49MyxkZWR1cGVfa2V5OmBkZW1vLSR7aX1gLGNyZWF0ZWRfYXQ6bmV3IERhdGUobi0zNmU1KmkpfSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6W3QudXNlcl9pZCx0Lm9yZ2FuaXphdGlvbl9pZCx0LmRlZHVwZV9rZXldLHNldDp7aXNfcmVhZDppPj0zfX0pfX1mdW5jdGlvbiBlc2NhcGVFbWFpbEh0bWwoZSl7cmV0dXJuIGUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpfWNvbnN0IEU9WyJmZWVkYmFjayIsInN1cHBvcnQiXSx4PVsiYWNjb3VudCIsImJpbGxpbmciLCJ0ZWNobmljYWwiLCJvdGhlciJdLHo9WyJvcGVuIiwiYWN0aXZlIiwiY2xvc2VkIl0scT1bInVzZXIiLCJhZ2VudCJdLFI9YSgic3VwcG9ydF90aWNrZXRzIix7aWQ6bigiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6bigidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxvcmdhbml6YXRpb25faWQ6bigib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+by5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGtpbmQ6bigia2luZCIse2VudW06RX0pLm5vdE51bGwoKSxjYXRlZ29yeTpuKCJjYXRlZ29yeSIse2VudW06eH0pLHN1YmplY3Q6bigic3ViamVjdCIpLm5vdE51bGwoKSxzdGF0dXM6bigic3RhdHVzIix7ZW51bTp6fSkubm90TnVsbCgpLmRlZmF1bHQoIm9wZW4iKSxhc3NpZ25lZF90bzpuKCJhc3NpZ25lZF90byIpLnJlZmVyZW5jZXMoKCk9PmkuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxsYXN0X21lc3NhZ2VfYXQ6cygibGFzdF9tZXNzYWdlX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksbGFzdF9tZXNzYWdlX3JvbGU6bigibGFzdF9tZXNzYWdlX3JvbGUiLHtlbnVtOnF9KS5ub3ROdWxsKCkuZGVmYXVsdCgidXNlciIpLHJlbWluZGVyX3NlbnRfYXQ6cygicmVtaW5kZXJfc2VudF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxjcmVhdGVkX2F0OnMoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OnMoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bcigic3VwcG9ydF90aWNrZXRzX3VzZXJfaWR4Iikub24oZS51c2VyX2lkKSxyKCJzdXBwb3J0X3RpY2tldHNfc3RhdHVzX2lkeCIpLm9uKGUuc3RhdHVzKSxyKCJzdXBwb3J0X3RpY2tldHNfYXNzaWduZWRfaWR4Iikub24oZS5hc3NpZ25lZF90bykscigic3VwcG9ydF90aWNrZXRzX3JlbWluZGVyX2lkeCIpLm9uKGUubGFzdF9tZXNzYWdlX3JvbGUsZS5sYXN0X21lc3NhZ2VfYXQpXSk7YSgic3VwcG9ydF90aWNrZXRfbWVzc2FnZXMiLHtpZDpuKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdGlja2V0X2lkOm4oInRpY2tldF9pZCIpLnJlZmVyZW5jZXMoKCk9PlIuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhdXRob3JfaWQ6bigiYXV0aG9yX2lkIikucmVmZXJlbmNlcygoKT0+aS5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGF1dGhvcl9yb2xlOm4oImF1dGhvcl9yb2xlIix7ZW51bTpxfSkubm90TnVsbCgpLGJvZHk6bigiYm9keSIpLm5vdE51bGwoKSxjcmVhdGVkX2F0OnMoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3IoInN1cHBvcnRfdGlja2V0X21lc3NhZ2VzX3RpY2tldF9pZHgiKS5vbihlLnRpY2tldF9pZCxlLmNyZWF0ZWRfYXQpXSk7Y29uc3QgTD1sKEUpLEY9bCh4KSxPPWwoeiksQj1jKCkudHJpbSgpLm1pbigxKS5tYXgoMjAwKSxIPWMoKS50cmltKCkubWluKDEpLm1heCg1ZTMpLEs9ZCh7a2luZDpMLGNhdGVnb3J5OkYub3B0aW9uYWwoKSxzdWJqZWN0OkIsYm9keTpIfSkucmVmaW5lKGU9PiJmZWVkYmFjayI9PT1lLmtpbmQ/dm9pZCAwPT09ZS5jYXRlZ29yeTp2b2lkIDAhPT1lLmNhdGVnb3J5LHttZXNzYWdlOiJTdXBwb3J0IHJlcXVlc3RzIHJlcXVpcmUgYSBjYXRlZ29yeTsgZmVlZGJhY2sgbXVzdCBub3QgaGF2ZSBvbmUuIixwYXRoOlsiY2F0ZWdvcnkiXX0pLFc9ZCh7Ym9keTpIfSksUD1kKHtvZmZzZXQ6dSgpLmludCgpLm1pbigwKS5kZWZhdWx0KDApLGxpbWl0OnUoKS5pbnQoKS5taW4oMSkubWF4KDUwKS5kZWZhdWx0KDIwKX0pLFk9UC5leHRlbmQoe3N0YXR1czpPLm9wdGlvbmFsKCksa2luZDpMLm9wdGlvbmFsKCksbWluZU9ubHk6bShlPT52b2lkIDA9PT1lP3ZvaWQgMDoidHJ1ZSI9PT1lfHwhMD09PWUsZygpLm9wdGlvbmFsKCkpLHNlYXJjaDpjKCkudHJpbSgpLm1heCgyMDApLm9wdGlvbmFsKCl9KSxHPWQoe3N0YXR1czpPLm9wdGlvbmFsKCksYXNzaWduZWRUbzpjKCkubnVsbGFibGUoKS5vcHRpb25hbCgpfSkucmVmaW5lKGU9PnZvaWQgMCE9PWUuc3RhdHVzfHx2b2lkIDAhPT1lLmFzc2lnbmVkVG8se21lc3NhZ2U6IlByb3ZpZGUgc3RhdHVzIGFuZC9vciBhc3NpZ25lZFRvLiJ9KTtmdW5jdGlvbiB0b1RpY2tldFN1bW1hcnkoZSl7dmFyIHQsYTtyZXR1cm57aWQ6ZS5pZCxraW5kOmUua2luZCxjYXRlZ29yeTpudWxsIT0odD1lLmNhdGVnb3J5KT90Om51bGwsc3ViamVjdDplLnN1YmplY3Qsc3RhdHVzOmUuc3RhdHVzLGFzc2lnbmVkVG86bnVsbCE9KGE9ZS5hc3NpZ25lZF90byk/YTpudWxsLGxhc3RNZXNzYWdlQXQ6ZS5sYXN0X21lc3NhZ2VfYXQudG9JU09TdHJpbmcoKSxsYXN0TWVzc2FnZVJvbGU6ZS5sYXN0X21lc3NhZ2Vfcm9sZSxjcmVhdGVkQXQ6ZS5jcmVhdGVkX2F0LnRvSVNPU3RyaW5nKCl9fWZ1bmN0aW9uIHRvVGlja2V0TWVzc2FnZShlKXtyZXR1cm57aWQ6ZS5pZCxhdXRob3JSb2xlOmUuYXV0aG9yX3JvbGUsYm9keTplLmJvZHksY3JlYXRlZEF0OmUuY3JlYXRlZF9hdC50b0lTT1N0cmluZygpfX1jb25zdCBKPTg2NGU1O2Z1bmN0aW9uIHJlbWluZGVyRW1haWwoZSl7Y29uc3QgdD1lc2NhcGVFbWFpbEh0bWwoZS5hZ2VudE5hbWUpLGE9ZXNjYXBlRW1haWxIdG1sKGUuc3ViamVjdCkscz1NKGooQygpLCJzdXBwb3J0Iikse3RpY2tldDplLnRpY2tldElkfSk7cmV0dXJue3N1YmplY3Q6YFlvdSBoYXZlIGEgbmV3IG1lc3NhZ2UgZnJvbSAke2UuYWdlbnROYW1lfWAsaHRtbDpgPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS41O2NvbG9yOiMxMTExMTEiPjxwPiR7dH0gcmVwbGllZCB0byB5b3VyIHJlcXVlc3QgIjxzdHJvbmc+JHthfTwvc3Ryb25nPiIuPC9wPjxwPlBsZWFzZSA8YSBocmVmPSIke3N9Ij5jb250aW51ZSB0aGUgY29udmVyc2F0aW9uPC9hPiB0byByZXNwb25kLjwvcD48L2JvZHk+PC9odG1sPmAsdGV4dDpgJHtlLmFnZW50TmFtZX0gcmVwbGllZCB0byB5b3VyIHJlcXVlc3QgIiR7ZS5zdWJqZWN0fSIuIENvbnRpbnVlOiAke3N9YH19YXN5bmMgZnVuY3Rpb24gbG9hZE1lc3NhZ2VzKHQpe3JldHVybihhd2FpdCBlLnNlbGVjdCgpLmZyb20ocCkud2hlcmUoZihwLnRpY2tldF9pZCx0KSkub3JkZXJCeShiKHAuY3JlYXRlZF9hdCkpKS5tYXAodG9UaWNrZXRNZXNzYWdlKX1hc3luYyBmdW5jdGlvbiBjcmVhdGVUaWNrZXQodCl7dmFyIGE7Y29uc3Qgcz1jcnlwdG8ucmFuZG9tVVVJRCgpLG49bmV3IERhdGU7YXdhaXQgZS5iYXRjaChbZS5pbnNlcnQoXykudmFsdWVzKHtpZDpzLHVzZXJfaWQ6dC51c2VySWQsb3JnYW5pemF0aW9uX2lkOnQub3JnYW5pemF0aW9uSWQsa2luZDp0LmtpbmQsY2F0ZWdvcnk6bnVsbCE9KGE9dC5jYXRlZ29yeSk/YTpudWxsLHN1YmplY3Q6dC5zdWJqZWN0LHN0YXR1czoib3BlbiIsbGFzdF9tZXNzYWdlX2F0Om4sbGFzdF9tZXNzYWdlX3JvbGU6InVzZXIifSksZS5pbnNlcnQocCkudmFsdWVzKHt0aWNrZXRfaWQ6cyxhdXRob3JfaWQ6dC51c2VySWQsYXV0aG9yX3JvbGU6InVzZXIiLGJvZHk6dC5ib2R5fSldKTtjb25zdFtpXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oXykud2hlcmUoZihfLmlkLHMpKTtyZXR1cm57Li4udG9UaWNrZXRTdW1tYXJ5KGkpLG1lc3NhZ2VzOmF3YWl0IGxvYWRNZXNzYWdlcyhzKX19YXN5bmMgZnVuY3Rpb24gbGlzdFVzZXJUaWNrZXRzKHQsYSxzKXtjb25zdCBuPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShmKF8udXNlcl9pZCx0KSkub3JkZXJCeShrKF8ubGFzdF9tZXNzYWdlX2F0KSkubGltaXQocysxKS5vZmZzZXQoYSk7cmV0dXJue2l0ZW1zOm4uc2xpY2UoMCxzKS5tYXAodG9UaWNrZXRTdW1tYXJ5KSxoYXNNb3JlOm4ubGVuZ3RoPnN9fWFzeW5jIGZ1bmN0aW9uIGdldFVzZXJUaWNrZXQodCxhKXtjb25zdFtzXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oXykud2hlcmUoeShmKF8uaWQsYSksZihfLnVzZXJfaWQsdCkpKTtpZighcyl0aHJvdyBoKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJUaWNrZXQgbm90IGZvdW5kIn0pO3JldHVybnsuLi50b1RpY2tldFN1bW1hcnkocyksbWVzc2FnZXM6YXdhaXQgbG9hZE1lc3NhZ2VzKGEpfX1hc3luYyBmdW5jdGlvbiBhZGRVc2VyTWVzc2FnZSh0LGEscyl7YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgdD1gcmF0ZWxpbWl0OnN1cHBvcnQtbXNnOiR7ZX1gLGE9YXdhaXQgdy5nZXQodCl8fDA7aWYoYT49MzApdGhyb3cgaCh7c3RhdHVzQ29kZTo0Mjksc3RhdHVzTWVzc2FnZToiVG9vIG1hbnkgbWVzc2FnZXMuIFRyeSBhZ2FpbiBsYXRlci4ifSk7YXdhaXQgdy5zZXQodCxhKzEse3R0bDozNjAwfSl9KHQpO2NvbnN0W25dPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZSh5KGYoXy5pZCxhKSxmKF8udXNlcl9pZCx0KSkpO2lmKCFuKXRocm93IGgoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlRpY2tldCBub3QgZm91bmQifSk7aWYoImNsb3NlZCI9PT1uLnN0YXR1cyl0aHJvdyBoKHtzdGF0dXNDb2RlOjQwOSxzdGF0dXNNZXNzYWdlOiJUaGlzIHJlcXVlc3QgaXMgY2xvc2VkLiJ9KTtjb25zdCBpPW5ldyBEYXRlO3JldHVybiBhd2FpdCBlLmluc2VydChwKS52YWx1ZXMoe3RpY2tldF9pZDphLGF1dGhvcl9pZDp0LGF1dGhvcl9yb2xlOiJ1c2VyIixib2R5OnN9KSxhd2FpdCBlLnVwZGF0ZShfKS5zZXQoe2xhc3RfbWVzc2FnZV9hdDppLGxhc3RfbWVzc2FnZV9yb2xlOiJ1c2VyIn0pLndoZXJlKGYoXy5pZCxhKSksZ2V0VXNlclRpY2tldCh0LGEpfWFzeW5jIGZ1bmN0aW9uIGxpc3RBZ2VudFRpY2tldHModCl7Y29uc3QgYT1bXTt0LnN0YXR1cyYmYS5wdXNoKGYoXy5zdGF0dXMsdC5zdGF0dXMpKSx0LmtpbmQmJmEucHVzaChmKF8ua2luZCx0LmtpbmQpKSx0Lm1pbmVPbmx5JiZhLnB1c2goZihfLmFzc2lnbmVkX3RvLHQuYWdlbnRJZCkpLHQuc2VhcmNoJiZhLnB1c2goUyhfLnN1YmplY3QsYCUke3Quc2VhcmNofSVgKSk7Y29uc3Qgcz1hLmxlbmd0aD95KC4uLmEpOnZvaWQgMCxuPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShzKS5vcmRlckJ5KGsoXy5sYXN0X21lc3NhZ2VfYXQpKS5saW1pdCh0LmxpbWl0KzEpLm9mZnNldCh0Lm9mZnNldCk7cmV0dXJue2l0ZW1zOm4uc2xpY2UoMCx0LmxpbWl0KS5tYXAodG9UaWNrZXRTdW1tYXJ5KSxoYXNNb3JlOm4ubGVuZ3RoPnQubGltaXR9fWFzeW5jIGZ1bmN0aW9uIGxvYWRSZXF1ZXN0ZXIodCl7dmFyIGE7Y29uc3Rbc109YXdhaXQgZS5zZWxlY3Qoe2lkOiQuaWQsbmFtZTokLm5hbWUsZW1haWw6JC5wcmltYXJ5X2VtYWlsfSkuZnJvbSgkKS53aGVyZShmKCQuaWQsdCkpO3JldHVybiBzP3tpZDpzLmlkLG5hbWU6bnVsbCE9KGE9cy5uYW1lKT9hOm51bGwsZW1haWw6cy5lbWFpbH06dm9pZCAwfWFzeW5jIGZ1bmN0aW9uIGdldEFnZW50VGlja2V0KHQpe2NvbnN0W2FdPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShmKF8uaWQsdCkpO2lmKCFhKXRocm93IGgoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlRpY2tldCBub3QgZm91bmQifSk7cmV0dXJuey4uLnRvVGlja2V0U3VtbWFyeShhKSxtZXNzYWdlczphd2FpdCBsb2FkTWVzc2FnZXModCkscmVxdWVzdGVyOmF3YWl0IGxvYWRSZXF1ZXN0ZXIoYS51c2VyX2lkKX19YXN5bmMgZnVuY3Rpb24gYWdlbnREaXNwbGF5TmFtZSh0KXt2YXIgYTtpZighdClyZXR1cm4gbnVsbDtjb25zdFtzXT1hd2FpdCBlLnNlbGVjdCh7bmFtZTokLm5hbWV9KS5mcm9tKCQpLndoZXJlKGYoJC5pZCx0KSk7cmV0dXJuIG51bGwhPShhPW51bGw9PXM/dm9pZCAwOnMubmFtZSk/YTpudWxsfWFzeW5jIGZ1bmN0aW9uIGFkZEFnZW50TWVzc2FnZShhLHMsbil7dmFyIGk7Y29uc3Rbb109YXdhaXQgZS5zZWxlY3QoKS5mcm9tKF8pLndoZXJlKGYoXy5pZCxzKSk7aWYoIW8pdGhyb3cgaCh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiVGlja2V0IG5vdCBmb3VuZCJ9KTtjb25zdCByPW5ldyBEYXRlO2F3YWl0IGUuaW5zZXJ0KHApLnZhbHVlcyh7dGlja2V0X2lkOnMsYXV0aG9yX2lkOmEsYXV0aG9yX3JvbGU6ImFnZW50Iixib2R5Om59KSxhd2FpdCBlLnVwZGF0ZShfKS5zZXQoe2xhc3RfbWVzc2FnZV9hdDpyLGxhc3RfbWVzc2FnZV9yb2xlOiJhZ2VudCIsYXNzaWduZWRfdG86TmBDT0FMRVNDRSgke18uYXNzaWduZWRfdG99LCAke2F9KWAsc3RhdHVzOk5gQ0FTRSBXSEVOICR7Xy5zdGF0dXN9ID0gJ29wZW4nIFRIRU4gJ2FjdGl2ZScgRUxTRSAke18uc3RhdHVzfSBFTkRgfSkud2hlcmUoZihfLmlkLHMpKTtjb25zdCBkPW51bGwhPShpPWF3YWl0IGFnZW50RGlzcGxheU5hbWUoYSkpP2k6IlN1cHBvcnQgdGVhbSI7cmV0dXJuIGF3YWl0IGFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBzO2NvbnN0W25dPWF3YWl0IGUuaW5zZXJ0KHQpLnZhbHVlcyh7dXNlcl9pZDphLnVzZXJJZCxvcmdhbml6YXRpb25faWQ6YS5vcmdhbml6YXRpb25JZCxzZW5kZXJfbmFtZTphLnNlbmRlck5hbWUsYm9keTphLmJvZHksZGVkdXBlX2tleTpudWxsIT0ocz1hLmRlZHVwZUtleSk/czpudWxsfSkub25Db25mbGljdERvTm90aGluZygpLnJldHVybmluZygpO3JldHVybiBuP0kobik6bnVsbH0oe3VzZXJJZDpvLnVzZXJfaWQsb3JnYW5pemF0aW9uSWQ6by5vcmdhbml6YXRpb25faWQsc2VuZGVyTmFtZTpkLGJvZHk6YHJlcGxpZWQgdG8geW91ciByZXF1ZXN0OiAke28uc3ViamVjdH1gLGRlZHVwZUtleTpgc3VwcG9ydC1yZXBseToke3N9OiR7ci5nZXRUaW1lKCl9YH0pLGdldEFnZW50VGlja2V0KHMpfWFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVRpY2tldCh0LGEpe2NvbnN0W3NdPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZShmKF8uaWQsdCkpO2lmKCFzKXRocm93IGgoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlRpY2tldCBub3QgZm91bmQifSk7Y29uc3Qgbj17fTtyZXR1cm4gdm9pZCAwIT09YS5zdGF0dXMmJihuLnN0YXR1cz1hLnN0YXR1cyksdm9pZCAwIT09YS5hc3NpZ25lZFRvJiYobi5hc3NpZ25lZF90bz1hLmFzc2lnbmVkVG8pLGF3YWl0IGUudXBkYXRlKF8pLnNldChuKS53aGVyZShmKF8uaWQsdCkpLGdldEFnZW50VGlja2V0KHQpfWFzeW5jIGZ1bmN0aW9uIHNlbmRUaWNrZXRSZW1pbmRlcnModD1uZXcgRGF0ZSl7dmFyIGE7Y29uc3Qgcz1uZXcgRGF0ZSh0LmdldFRpbWUoKS1KKSxuPWF3YWl0IGUuc2VsZWN0KCkuZnJvbShfKS53aGVyZSh5KGYoXy5sYXN0X21lc3NhZ2Vfcm9sZSwiYWdlbnQiKSxEKF8uc3RhdHVzLFsib3BlbiIsImFjdGl2ZSJdKSx2KF8ubGFzdF9tZXNzYWdlX2F0LHMpLFQoTmAke18ucmVtaW5kZXJfc2VudF9hdH0gSVMgTlVMTGAsTmAke18ucmVtaW5kZXJfc2VudF9hdH0gPCAke18ubGFzdF9tZXNzYWdlX2F0fWApKSkub3JkZXJCeShiKF8ubGFzdF9tZXNzYWdlX2F0KSkubGltaXQoMTAwKTtsZXQgaT0wLG89MDtmb3IoY29uc3QgcyBvZiBuKXtpZighKGF3YWl0IGUudXBkYXRlKF8pLnNldCh7cmVtaW5kZXJfc2VudF9hdDp0fSkud2hlcmUoeShmKF8uaWQscy5pZCksZihfLmxhc3RfbWVzc2FnZV9yb2xlLCJhZ2VudCIpLFQoTmAke18ucmVtaW5kZXJfc2VudF9hdH0gSVMgTlVMTGAsTmAke18ucmVtaW5kZXJfc2VudF9hdH0gPCAke18ubGFzdF9tZXNzYWdlX2F0fWApKSkucmV0dXJuaW5nKHtpZDpfLmlkfSkpLmxlbmd0aCl7bysrO2NvbnRpbnVlfWNvbnN0W25dPWF3YWl0IGUuc2VsZWN0KHtpZDokLmlkLHByaW1hcnlfZW1haWw6JC5wcmltYXJ5X2VtYWlsLG5vdGlmaWNhdGlvbl9wcmVmczokLm5vdGlmaWNhdGlvbl9wcmVmc30pLmZyb20oJCkud2hlcmUoZigkLmlkLHMudXNlcl9pZCkpO2lmKCFuKXtvKys7Y29udGludWV9Y29uc3Qgcj1yZW1pbmRlckVtYWlsKHthZ2VudE5hbWU6bnVsbCE9KGE9YXdhaXQgYWdlbnREaXNwbGF5TmFtZShzLmFzc2lnbmVkX3RvKSk/YToiU3VwcG9ydCB0ZWFtIixzdWJqZWN0OnMuc3ViamVjdCx0aWNrZXRJZDpzLmlkfSk7dHJ5eyhhd2FpdCBBKG4scikpLnNlbnQ/aSsrOm8rK31jYXRjaHtvKyt9fXJldHVybntzY2FubmVkOm4ubGVuZ3RoLHJlbWluZGVkOmksc2tpcHBlZDpvfX1hc3luYyBmdW5jdGlvbiBzZWVkRGVtb1RpY2tldHModCxhKXtjb25zdCBzPURhdGUubm93KCksbj1be2k6MCxraW5kOiJmZWVkYmFjayIsY2F0ZWdvcnk6bnVsbCxzdWJqZWN0OiJMb3ZlIHRoZSBuZXcgZGFzaGJvYXJkIixzdGF0dXM6Im9wZW4iLGFnZW50UmVwbHlBZ29NczpudWxsfSx7aToxLGtpbmQ6InN1cHBvcnQiLGNhdGVnb3J5OiJiaWxsaW5nIixzdWJqZWN0OiJJbnZvaWNlIGxvb2tzIHdyb25nIixzdGF0dXM6ImFjdGl2ZSIsYWdlbnRSZXBseUFnb01zOjcyZTV9LHtpOjIsa2luZDoic3VwcG9ydCIsY2F0ZWdvcnk6InRlY2huaWNhbCIsc3ViamVjdDoiRXhwb3J0IGtlZXBzIGZhaWxpbmciLHN0YXR1czoiYWN0aXZlIixhZ2VudFJlcGx5QWdvTXM6MipKfV07Zm9yKGNvbnN0IGkgb2Ygbil7Y29uc3Qgbj1gZGVtby10aWNrZXQtJHt0fS0ke2kuaX1gLG89bmV3IERhdGUocy02MCooaS5pKzEpKjYwKjFlMykscj1udWxsPT1pLmFnZW50UmVwbHlBZ29Ncz9udWxsOm5ldyBEYXRlKHMtaS5hZ2VudFJlcGx5QWdvTXMpO2F3YWl0IGUuaW5zZXJ0KF8pLnZhbHVlcyh7aWQ6bix1c2VyX2lkOnQsb3JnYW5pemF0aW9uX2lkOmEsa2luZDppLmtpbmQsY2F0ZWdvcnk6aS5jYXRlZ29yeSxzdWJqZWN0Omkuc3ViamVjdCxzdGF0dXM6aS5zdGF0dXMsbGFzdF9tZXNzYWdlX2F0Om51bGwhPXI/cjpvLGxhc3RfbWVzc2FnZV9yb2xlOnI/ImFnZW50IjoidXNlciIsY3JlYXRlZF9hdDpvfSkub25Db25mbGljdERvTm90aGluZygpLGF3YWl0IGUuaW5zZXJ0KHApLnZhbHVlcyh7aWQ6YCR7bn0tbTBgLHRpY2tldF9pZDpuLGF1dGhvcl9pZDp0LGF1dGhvcl9yb2xlOiJ1c2VyIixib2R5OmAoZGVtbykgJHtpLnN1YmplY3R9IOKAlCBkZXRhaWxzIGhlcmUuYCxjcmVhdGVkX2F0Om99KS5vbkNvbmZsaWN0RG9Ob3RoaW5nKCksciYmYXdhaXQgZS5pbnNlcnQocCkudmFsdWVzKHtpZDpgJHtufS1tMWAsdGlja2V0X2lkOm4sYXV0aG9yX2lkOm51bGwsYXV0aG9yX3JvbGU6ImFnZW50Iixib2R5OiIoZGVtbykgVGhhbmtzIGZvciByZWFjaGluZyBvdXQg4oCUIGNvdWxkIHlvdSBzaGFyZSBtb3JlIGRldGFpbD8iLGNyZWF0ZWRfYXQ6cn0pLm9uQ29uZmxpY3REb05vdGhpbmcoKX19ZXhwb3J0e1kgYXMgQSxLIGFzIEMsVyBhcyBQLFAgYXMgVCxHIGFzIFUsYWRkQWdlbnRNZXNzYWdlIGFzIGEsZ2V0VXNlclRpY2tldCBhcyBiLGFkZFVzZXJNZXNzYWdlIGFzIGMsbGlzdFVzZXJUaWNrZXRzIGFzIGQsY3JlYXRlVGlja2V0IGFzIGUsc2VlZERlbW9UaWNrZXRzIGFzIGYsZ2V0QWdlbnRUaWNrZXQgYXMgZyxzZW5kVGlja2V0UmVtaW5kZXJzIGFzIGgsbGlzdEFnZW50VGlja2V0cyBhcyBsLHNlZWREZW1vTm90aWZpY2F0aW9ucyBhcyBzLHVwZGF0ZVRpY2tldCBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGlja2V0Lm1qcy5tYXAK", "chunks/_/user-email.mjs": "aW1wb3J0e3YgYXMgdCxRIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGlzRW1haWxFbmFibGVkKHQpe3JldHVybiExIT09KG51bGw9PXQ/dm9pZCAwOnQuZW1haWwpfWFzeW5jIGZ1bmN0aW9uIHNlbmRVc2VyRW1haWwoaSxzKXtpZighaXNFbWFpbEVuYWJsZWQoaS5ub3RpZmljYXRpb25fcHJlZnMpKXJldHVybntzZW50OiExLHJlYXNvbjoib3B0ZWRfb3V0In07Y29uc3Qgbj10KCkse2VtYWlsczphfT1lKCk7cmV0dXJuIGF3YWl0IGEuc2VuZCh7ZnJvbTpuLnNtdHBGcm9tLHRvOmkucHJpbWFyeV9lbWFpbCxzdWJqZWN0OnMuc3ViamVjdCxodG1sOnMuaHRtbCx0ZXh0OnMudGV4dH0pLHtzZW50OiEwfX1leHBvcnR7aXNFbWFpbEVuYWJsZWQgYXMgaSxzZW5kVXNlckVtYWlsIGFzIHN9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2VyLWVtYWlsLm1qcy5tYXAK", "chunks/_/user.mjs": "aW1wb3J0e28gYXMgZSxzIGFzIHQsYiBhcyBzfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtjb25zdCBhPWUoe25hbWU6dCgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCkub3B0aW9uYWwoKSx1c2VybmFtZTp0KCkudHJpbSgpLm1pbigzKS5tYXgoNTApLnJlZ2V4KC9eXHcrJC8sIkxldHRlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmUiKS5vcHRpb25hbCgpLGJpbzp0KCkudHJpbSgpLm1heCg1MDApLm9wdGlvbmFsKCl9KS5yZWZpbmUoZT0+T2JqZWN0LmtleXMoZSkubGVuZ3RoPjAse21lc3NhZ2U6IkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCJ9KSxpPWUoe2VtYWlsOnMoKSxwcm9kdWN0X3VwZGF0ZXM6cygpLHdlZWtseV9kaWdlc3Q6cygpLGltcG9ydGFudF91cGRhdGVzOnMoKX0pO2V4cG9ydHtpIGFzIE4sYSBhcyBVfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlci5tanMubWFwCg==", "chunks/build/Alert-CVB5YXue.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyByLGUgYXMgbyx0IGFzIGEsZyBhcyBzLGIgYXMgbixfIGFzIGksUCBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7ZiBhcyBjLGcgYXMgdSxqIGFzIGQscSBhcyBnLHQgYXMgdn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IHA9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gdy1mdWxsIHJvdW5kZWQtbGcgcC00IGZsZXggZ2FwLTIuNSIsd3JhcHBlcjoibWluLXctMCBmbGV4LTEgZmxleCBmbGV4LWNvbCIsdGl0bGU6InRleHQtc20gZm9udC1tZWRpdW0iLGRlc2NyaXB0aW9uOiJ0ZXh0LXNtIG9wYWNpdHktOTAiLGljb246InNocmluay0wIHNpemUtNSIsYXZhdGFyOiJzaHJpbmstMCIsYXZhdGFyU2l6ZToiMnhsIixhY3Rpb25zOiJmbGV4IGZsZXgtd3JhcCBnYXAtMS41IHNocmluay0wIixjbG9zZToicC0wIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIifSxvcmllbnRhdGlvbjp7aG9yaXpvbnRhbDp7cm9vdDoiaXRlbXMtY2VudGVyIixhY3Rpb25zOiJpdGVtcy1jZW50ZXIifSx2ZXJ0aWNhbDp7cm9vdDoiaXRlbXMtc3RhcnQiLGFjdGlvbnM6Iml0ZW1zLXN0YXJ0IG10LTIuNSJ9fSx0aXRsZTp7dHJ1ZTp7ZGVzY3JpcHRpb246Im10LTEifX19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1wcmltYXJ5IHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvbGlkIixjbGFzczp7cm9vdDoiYmctc2Vjb25kYXJ5IHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLXN1Y2Nlc3MgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczp7cm9vdDoiYmctaW5mbyB0ZXh0LWludmVydGVkIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy13YXJuaW5nIHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1lcnJvciB0ZXh0LWludmVydGVkIn19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzI1In19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1In19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1In19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOntyb290OiJ0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1In19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctc2Vjb25kYXJ5LzEwIHRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLWluZm8vMTAgdGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLXdhcm5pbmcvMTAgdGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOntyb290OiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIn19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkgcmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS8yNSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctc2Vjb25kYXJ5LzEwIHRleHQtc2Vjb25kYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeS8yNSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIHJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvMjUifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1pbmZvLzEwIHRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1In19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctd2FybmluZy8xMCB0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1In19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1kZWZhdWx0In19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCJ9fSxmPXtfX25hbWU6IlVBbGVydCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2ZXJ0aWNhbCJ9LGFjdGlvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGNsb3NlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGNsb3NlSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZix7ZW1pdDptfSl7Y29uc3QgeD1mLHk9bSxiPWUudXNlU2xvdHMoKSx7dDprfT10KCksaD1yKCksdz1vKCJhbGVydCIseCksJD1lLmNvbXB1dGVkKCgpPT5hKHtleHRlbmQ6YShwKSwuLi5oLnVpPy5hbGVydHx8e319KSh7Y29sb3I6eC5jb2xvcix2YXJpYW50OngudmFyaWFudCxvcmllbnRhdGlvbjp4Lm9yaWVudGF0aW9uLHRpdGxlOiEheC50aXRsZXx8ISFiLnRpdGxlfSkpO3JldHVybih0LHIsbyxhKT0+e3IoYyhlLnVucmVmKGwpLGUubWVyZ2VQcm9wcyh7YXM6Zi5hcywiZGF0YS1vcmllbnRhdGlvbiI6Zi5vcmllbnRhdGlvbiwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6JC52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZih3KT8ucm9vdCx4LmNsYXNzXX0pfSxhKSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbyxhLGwpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse3VpOiQudmFsdWV9LCgpPT5bZi5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhzLGUubWVyZ2VQcm9wcyh7a2V5OjAsc2l6ZTplLnVucmVmKHcpPy5hdmF0YXJTaXplfHwkLnZhbHVlLmF2YXRhclNpemUoKX0sZi5hdmF0YXIseyJkYXRhLXNsb3QiOiJhdmF0YXIiLGNsYXNzOiQudmFsdWUuYXZhdGFyKHtjbGFzczplLnVucmVmKHcpPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmYuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKG4se2tleToxLG5hbWU6Zi5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczokLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYodyk/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6JC52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHcpPy53cmFwcGVyfSl9LFtmLnRpdGxlfHxiLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6JC52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih3KT8udGl0bGV9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZi50aXRsZSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxmLmRlc2NyaXB0aW9ufHxiLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6JC52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih3KT8uZGVzY3JpcHRpb259KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZi5kZXNjcmlwdGlvbiksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwidmVydGljYWwiPT09Zi5vcmllbnRhdGlvbiYmKGYuYWN0aW9ucz8ubGVuZ3RofHxiLmFjdGlvbnMpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJhY3Rpb25zIixjbGFzczokLnZhbHVlLmFjdGlvbnMoe2NsYXNzOmUudW5yZWYodyk/LmFjdGlvbnN9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChmLmFjdGlvbnMsKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soaSxlLm1lcmdlUHJvcHMoe2tleTpyLHNpemU6InhzIn0se3JlZl9mb3I6ITB9LHQpLG51bGwsMTYpKSksMTI4KSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksImhvcml6b250YWwiPT09Zi5vcmllbnRhdGlvbiYmKGYuYWN0aW9ucz8ubGVuZ3RofHxiLmFjdGlvbnMpfHxmLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJhY3Rpb25zIixjbGFzczokLnZhbHVlLmFjdGlvbnMoe2NsYXNzOmUudW5yZWYodyk/LmFjdGlvbnMsb3JpZW50YXRpb246Imhvcml6b250YWwifSl9LFsiaG9yaXpvbnRhbCI9PT1mLm9yaWVudGF0aW9uJiYoZi5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/ZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJhY3Rpb25zIix7a2V5OjB9LCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoZi5hY3Rpb25zLCh0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGksZS5tZXJnZVByb3BzKHtrZXk6cixzaXplOiJ4cyJ9LHtyZWZfZm9yOiEwfSx0KSxudWxsLDE2KSkpLDEyOCkpXSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY2xvc2UiLHt1aTokLnZhbHVlfSwoKT0+W2YuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhpLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjpmLmNsb3NlSWNvbnx8ZS51bnJlZihoKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsImFyaWEtbGFiZWwiOmUudW5yZWYoaykoImFsZXJ0LmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgZi5jbG9zZT9mLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOiQudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYodyk/LmNsb3NlfSksb25DbGljazplPT55KCJ1cGRhdGU6b3BlbiIsITEpfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiLCJvbkNsaWNrIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07dSh0LiRzbG90cywibGVhZGluZyIse3VpOiQudmFsdWV9LCgpPT57Zi5hdmF0YXI/byhjKHMsZS5tZXJnZVByb3BzKHtzaXplOmUudW5yZWYodyk/LmF2YXRhclNpemV8fCQudmFsdWUuYXZhdGFyU2l6ZSgpfSxmLmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6JC52YWx1ZS5hdmF0YXIoe2NsYXNzOmUudW5yZWYodyk/LmF2YXRhcn0pfSksbnVsbCxhLGwpKTpmLmljb24/byhjKG4se25hbWU6Zi5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczokLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYodyk/Lmljb259KX0sbnVsbCxhLGwpKTpvKCJceDNjIS0tLS1ceDNlIil9LG8sYSxsKSxvKGA8ZGl2IGRhdGEtc2xvdD0id3JhcHBlciIgY2xhc3M9IiR7ZCgkLnZhbHVlLndyYXBwZXIoe2NsYXNzOmUudW5yZWYodyk/LndyYXBwZXJ9KSl9IiR7bH0+YCksZi50aXRsZXx8Yi50aXRsZT8obyhgPGRpdiBkYXRhLXNsb3Q9InRpdGxlIiBjbGFzcz0iJHtkKCQudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYodyk/LnRpdGxlfSkpfSIke2x9PmApLHUodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+e28oYCR7ZyhmLnRpdGxlKX1gKX0sbyxhLGwpLG8oIjwvZGl2PiIpKTpvKCJceDNjIS0tLS1ceDNlIiksZi5kZXNjcmlwdGlvbnx8Yi5kZXNjcmlwdGlvbj8obyhgPGRpdiBkYXRhLXNsb3Q9ImRlc2NyaXB0aW9uIiBjbGFzcz0iJHtkKCQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYodyk/LmRlc2NyaXB0aW9ufSkpfSIke2x9PmApLHUodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+e28oYCR7ZyhmLmRlc2NyaXB0aW9uKX1gKX0sbyxhLGwpLG8oIjwvZGl2PiIpKTpvKCJceDNjIS0tLS1ceDNlIiksInZlcnRpY2FsIj09PWYub3JpZW50YXRpb24mJihmLmFjdGlvbnM/Lmxlbmd0aHx8Yi5hY3Rpb25zKT8obyhgPGRpdiBkYXRhLXNsb3Q9ImFjdGlvbnMiIGNsYXNzPSIke2QoJC52YWx1ZS5hY3Rpb25zKHtjbGFzczplLnVucmVmKHcpPy5hY3Rpb25zfSkpfSIke2x9PmApLHUodC4kc2xvdHMsImFjdGlvbnMiLHt9LCgpPT57bygiXHgzYyEtLVstLVx4M2UiKSx2KGYuYWN0aW9ucywodCxyKT0+e28oYyhpLGUubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZToieHMifSx7cmVmX2ZvcjohMH0sdCksbnVsbCxhLGwpKX0pLG8oIlx4M2MhLS1dLS1ceDNlIil9LG8sYSxsKSxvKCI8L2Rpdj4iKSk6bygiXHgzYyEtLS0tXHgzZSIpLG8oIjwvZGl2PiIpLCJob3Jpem9udGFsIj09PWYub3JpZW50YXRpb24mJihmLmFjdGlvbnM/Lmxlbmd0aHx8Yi5hY3Rpb25zKXx8Zi5jbG9zZT8obyhgPGRpdiBkYXRhLXNsb3Q9ImFjdGlvbnMiIGNsYXNzPSIke2QoJC52YWx1ZS5hY3Rpb25zKHtjbGFzczplLnVucmVmKHcpPy5hY3Rpb25zLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIn0pKX0iJHtsfT5gKSwiaG9yaXpvbnRhbCI9PT1mLm9yaWVudGF0aW9uJiYoZi5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/dSh0LiRzbG90cywiYWN0aW9ucyIse30sKCk9PntvKCJceDNjIS0tWy0tXHgzZSIpLHYoZi5hY3Rpb25zLCh0LHIpPT57byhjKGksZS5tZXJnZVByb3BzKHtrZXk6cixzaXplOiJ4cyJ9LHtyZWZfZm9yOiEwfSx0KSxudWxsLGEsbCkpfSksbygiXHgzYyEtLV0tLVx4M2UiKX0sbyxhLGwpOm8oIlx4M2MhLS0tLVx4M2UiKSx1KHQuJHNsb3RzLCJjbG9zZSIse3VpOiQudmFsdWV9LCgpPT57Zi5jbG9zZT9vKGMoaSxlLm1lcmdlUHJvcHMoe2ljb246Zi5jbG9zZUljb258fGUudW5yZWYoaCkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjplLnVucmVmKGspKCJhbGVydC5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIGYuY2xvc2U/Zi5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczokLnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKHcpPy5jbG9zZX0pLG9uQ2xpY2s6ZT0+eSgidXBkYXRlOm9wZW4iLCExKX0pLG51bGwsYSxsKSk6bygiXHgzYyEtLS0tXHgzZSIpfSxvLGEsbCksbygiPC9kaXY+IikpOm8oIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sbykpfX19LG09Zi5zZXR1cDtmLnNldHVwPSh0LHIpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQWxlcnQudnVlIiksbT9tKHQscik6dm9pZCAwfTtleHBvcnR7ZiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWxlcnQtQ1ZCNVlYdWUubWpzLm1hcAo=", "chunks/build/Badge-BB0KlMQV.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIGEsZSBhcyByLHEgYXMgbixzLHQgYXMgaSxiIGFzIGwsZyBhcyB0LFAgYXMgb31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2YgYXMgYyxnIGFzIHUsaiBhcyBkLHEgYXMgZ31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IHY9e3Nsb3RzOntiYXNlOiJmb250LW1lZGl1bSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGxhYmVsOiJ0cnVuY2F0ZSIsbGVhZGluZ0ljb246InNocmluay0wIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmdJY29uOiJzaHJpbmstMCJ9LHZhcmlhbnRzOntmaWVsZEdyb3VwOntob3Jpem9udGFsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWUtbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtcy1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSIsdmVydGljYWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtYi1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC10LW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIn0sY29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LHZhcmlhbnQ6e3NvbGlkOiIiLG91dGxpbmU6IiIsc29mdDoiIixzdWJ0bGU6IiJ9LHNpemU6e3hzOntiYXNlOiJ0ZXh0LVs4cHhdLzMgcHgtMSBweS0wLjUgZ2FwLTEgcm91bmRlZC1zbSIsbGVhZGluZ0ljb246InNpemUtMyIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTMifSxzbTp7YmFzZToidGV4dC1bMTBweF0vMyBweC0xLjUgcHktMSBnYXAtMSByb3VuZGVkLXNtIixsZWFkaW5nSWNvbjoic2l6ZS0zIixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtMyJ9LG1kOntiYXNlOiJ0ZXh0LXhzIHB4LTIgcHktMSBnYXAtMSByb3VuZGVkLW1kIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LGxnOntiYXNlOiJ0ZXh0LXNtIHB4LTIgcHktMSBnYXAtMS41IHJvdW5kZWQtbWQiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InRleHQtYmFzZSBweC0yLjUgcHktMSBnYXAtMS41IHJvdW5kZWQtbWQiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02In19LHNxdWFyZTp7dHJ1ZToiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1wcmltYXJ5IHRleHQtaW52ZXJ0ZWQifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1zZWNvbmRhcnkgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1zdWNjZXNzIHRleHQtaW52ZXJ0ZWQifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoiYmctaW5mbyB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXdhcm5pbmcgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoiYmctZXJyb3IgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzUwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy81MCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzUwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC13YXJuaW5nIHJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvNTAifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci81MCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy1zdWNjZXNzLzEwIHRleHQtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLWluZm8vMTAgdGV4dC1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctd2FybmluZy8xMCB0ZXh0LXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctZXJyb3IvMTAgdGV4dC1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkgcmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS8yNSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1zdWNjZXNzLzEwIHRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzI1In0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1pbmZvLzEwIHRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1In0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy13YXJuaW5nLzEwIHRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1In0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoiYmctZXJyb3IvMTAgdGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9LHtzaXplOiJ4cyIsc3F1YXJlOiEwLGNsYXNzOiJwLTAuNSJ9LHtzaXplOiJzbSIsc3F1YXJlOiEwLGNsYXNzOiJwLTEifSx7c2l6ZToibWQiLHNxdWFyZTohMCxjbGFzczoicC0xIn0se3NpemU6ImxnIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9LHtzaXplOiJ4bCIsc3F1YXJlOiEwLGNsYXNzOiJwLTEifV0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLHNpemU6Im1kIn19LHA9e19fbmFtZToiVUJhZGdlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn0sbGFiZWw6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3F1YXJlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocCl7Y29uc3QgZj1wLGI9ZS51c2VTbG90cygpLHg9YSgpLG09cigiYmFkZ2UiLGYpLHtvcmllbnRhdGlvbjp5LHNpemU6en09bihmKSx7aXNMZWFkaW5nOkksaXNUcmFpbGluZzpxLGxlYWRpbmdJY29uTmFtZTpTLHRyYWlsaW5nSWNvbk5hbWU6QX09cyhmKSxrPWUuY29tcHV0ZWQoKCk9Pmkoe2V4dGVuZDppKHYpLC4uLngudWk/LmJhZGdlfHx7fX0pKHtjb2xvcjpmLmNvbG9yLHZhcmlhbnQ6Zi52YXJpYW50LHNpemU6ei52YWx1ZXx8Zi5zaXplLHNxdWFyZTpmLnNxdWFyZXx8IWIuZGVmYXVsdCYmIWYubGFiZWwsZmllbGRHcm91cDp5LnZhbHVlfSkpO3JldHVybihhLHIsbixzKT0+e3IoYyhlLnVucmVmKG8pLGUubWVyZ2VQcm9wcyh7YXM6cC5hcywiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6ay52YWx1ZS5iYXNlKHtjbGFzczpbZS51bnJlZihtKT8uYmFzZSxmLmNsYXNzXX0pfSxzKSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixzLGkpPT57aWYoIW4pcmV0dXJuW2UucmVuZGVyU2xvdChhLiRzbG90cywibGVhZGluZyIse3VpOmsudmFsdWV9LCgpPT5bZS51bnJlZihJKSYmZS51bnJlZihTKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGwse2tleTowLG5hbWU6ZS51bnJlZihTKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmsudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYobSk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6cC5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh0LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKG0pPy5sZWFkaW5nQXZhdGFyU2l6ZXx8ay52YWx1ZS5sZWFkaW5nQXZhdGFyU2l6ZSgpfSxwLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxlYWRpbmdBdmF0YXIiLGNsYXNzOmsudmFsdWUubGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihtKT8ubGVhZGluZ0F2YXRhcn0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJkZWZhdWx0Iix7dWk6ay52YWx1ZX0sKCk9Plt2b2lkIDAhPT1wLmxhYmVsJiZudWxsIT09cC5sYWJlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczprLnZhbHVlLmxhYmVsKHtjbGFzczplLnVucmVmKG0pPy5sYWJlbH0pfSxlLnRvRGlzcGxheVN0cmluZyhwLmxhYmVsKSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJ0cmFpbGluZyIse3VpOmsudmFsdWV9LCgpPT5bZS51bnJlZihxKSYmZS51bnJlZihBKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGwse2tleTowLG5hbWU6ZS51bnJlZihBKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczprLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihtKT8udHJhaWxpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO3UoYS4kc2xvdHMsImxlYWRpbmciLHt1aTprLnZhbHVlfSwoKT0+e2UudW5yZWYoSSkmJmUudW5yZWYoUyk/bihjKGwse25hbWU6ZS51bnJlZihTKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmsudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYobSk/LmxlYWRpbmdJY29ufSl9LG51bGwscyxpKSk6cC5hdmF0YXI/bihjKHQsZS5tZXJnZVByb3BzKHtzaXplOmUudW5yZWYobSk/LmxlYWRpbmdBdmF0YXJTaXplfHxrLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LHAuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6ay52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczplLnVucmVmKG0pPy5sZWFkaW5nQXZhdGFyfSl9KSxudWxsLHMsaSkpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixzLGkpLHUoYS4kc2xvdHMsImRlZmF1bHQiLHt1aTprLnZhbHVlfSwoKT0+e3ZvaWQgMCE9PXAubGFiZWwmJm51bGwhPT1wLmxhYmVsP24oYDxzcGFuIGRhdGEtc2xvdD0ibGFiZWwiIGNsYXNzPSIke2Qoay52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZihtKT8ubGFiZWx9KSl9IiR7aX0+JHtnKHAubGFiZWwpfTwvc3Bhbj5gKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scyxpKSx1KGEuJHNsb3RzLCJ0cmFpbGluZyIse3VpOmsudmFsdWV9LCgpPT57ZS51bnJlZihxKSYmZS51bnJlZihBKT9uKGMobCx7bmFtZTplLnVucmVmKEEpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOmsudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKG0pPy50cmFpbGluZ0ljb259KX0sbnVsbCxzLGkpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scyxpKX0pLF86M30sbikpfX19LGY9cC5zZXR1cDtwLnNldHVwPShhLHIpPT57Y29uc3Qgbj1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQmFkZ2UudnVlIiksZj9mKGEscik6dm9pZCAwfTtleHBvcnR7cCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFkZ2UtQkIwS2xNUVYubWpzLm1hcAo=", "chunks/build/Card-novgqRop.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBvLHQgYXMgcyxQIGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIHIsaiBhcyBpLGcgYXMgbCxxIGFzIGF9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBuPXtzbG90czp7cm9vdDoicm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW4iLGhlYWRlcjoicC00IHNtOnB4LTYiLHRpdGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGZvbnQtc2VtaWJvbGQiLGRlc2NyaXB0aW9uOiJtdC0xIHRleHQtbXV0ZWQgdGV4dC1zbSIsYm9keToicC00IHNtOnAtNiIsZm9vdGVyOiJwLTQgc206cHgtNiJ9LHZhcmlhbnRzOnt2YXJpYW50Ontzb2xpZDp7cm9vdDoiYmctaW52ZXJ0ZWQgdGV4dC1pbnZlcnRlZCIsdGl0bGU6InRleHQtaW52ZXJ0ZWQiLGRlc2NyaXB0aW9uOiJ0ZXh0LWRpbW1lZCJ9LG91dGxpbmU6e3Jvb3Q6ImJnLWRlZmF1bHQgcmluZyByaW5nLWRlZmF1bHQgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxzb2Z0Ontyb290OiJiZy1lbGV2YXRlZC81MCBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9LHN1YnRsZTp7cm9vdDoiYmctZWxldmF0ZWQvNTAgcmluZyByaW5nLWRlZmF1bHQgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX19LGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDoib3V0bGluZSJ9fSxjPXtfX25hbWU6IlVDYXJkIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoYyl7Y29uc3QgdT1jLHA9ZS51c2VTbG90cygpLHY9dCgpLGY9bygiY2FyZCIsdSksbT1lLmNvbXB1dGVkKCgpPT5zKHtleHRlbmQ6cyhuKSwuLi52LnVpPy5jYXJkfHx7fX0pKHt2YXJpYW50OnUudmFyaWFudH0pKTtyZXR1cm4odCxvLHMsbik9PntvKHIoZS51bnJlZihkKSxlLm1lcmdlUHJvcHMoe2FzOmMuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOm0udmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoZik/LnJvb3QsdS5jbGFzc119KX0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLHMsZCxyKT0+e2lmKCFzKXJldHVybltwLmhlYWRlcnx8Yy50aXRsZXx8cC50aXRsZXx8Yy5kZXNjcmlwdGlvbnx8cC5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczptLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihmKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImhlYWRlciIse30sKCk9PltjLnRpdGxlfHxwLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6bS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihmKT8udGl0bGV9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoYy50aXRsZSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxjLmRlc2NyaXB0aW9ufHxwLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6bS52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihmKT8uZGVzY3JpcHRpb259KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoYy5kZXNjcmlwdGlvbiksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHAuZGVmYXVsdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6bS52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKGYpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxwLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczptLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihmKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImZvb3RlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtwLmhlYWRlcnx8Yy50aXRsZXx8cC50aXRsZXx8Yy5kZXNjcmlwdGlvbnx8cC5kZXNjcmlwdGlvbj8ocyhgPGRpdiBkYXRhLXNsb3Q9ImhlYWRlciIgY2xhc3M9IiR7aShtLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihmKT8uaGVhZGVyfSkpfSIke3J9PmApLGwodC4kc2xvdHMsImhlYWRlciIse30sKCk9PntjLnRpdGxlfHxwLnRpdGxlPyhzKGA8ZGl2IGRhdGEtc2xvdD0idGl0bGUiIGNsYXNzPSIke2kobS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihmKT8udGl0bGV9KSl9IiR7cn0+YCksbCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT57cyhgJHthKGMudGl0bGUpfWApfSxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKSxjLmRlc2NyaXB0aW9ufHxwLmRlc2NyaXB0aW9uPyhzKGA8ZGl2IGRhdGEtc2xvdD0iZGVzY3JpcHRpb24iIGNsYXNzPSIke2kobS52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihmKT8uZGVzY3JpcHRpb259KSl9IiR7cn0+YCksbCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT57cyhgJHthKGMuZGVzY3JpcHRpb24pfWApfSxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKX0scyxkLHIpLHMoIjwvZGl2PiIpKTpzKCJceDNjIS0tLS1ceDNlIikscC5kZWZhdWx0PyhzKGA8ZGl2IGRhdGEtc2xvdD0iYm9keSIgY2xhc3M9IiR7aShtLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoZik/LmJvZHl9KSl9IiR7cn0+YCksbCh0LiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKSxwLmZvb3Rlcj8ocyhgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7aShtLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihmKT8uZm9vdGVyfSkpfSIke3J9PmApLGwodC4kc2xvdHMsImZvb3RlciIse30sbnVsbCxzLGQscikscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30scykpfX19LHU9Yy5zZXR1cDtjLnNldHVwPSh0LG8pPT57Y29uc3Qgcz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4ocy5tb2R1bGVzfHwocy5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQ2FyZC52dWUiKSx1P3UodCxvKTp2b2lkIDB9O2V4cG9ydHtjIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1DYXJkLW5vdmdxUm9wLm1qcy5tYXAK", "chunks/build/DashboardNavbar-2JpQqwJ7.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLXBrSUVhZE9KLm1qcyI7aW1wb3J0e18gYXMgcn1mcm9tIi4vRGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLUNRQ1pPdFhILm1qcyI7aW1wb3J0e3YgYXMgdCxhMCBhcyBvfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBzfWZyb20iLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7aW1wb3J0e2YgYXMgYSxnIGFzIG59ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBsPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRhc2hib2FyZE5hdmJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3RpdGxlOnt9fSxzZXR1cChsKXtjb25zdCBpPXMoKSxtPXQuY29tcHV0ZWQoKCk9PlsuLi5pLm5hdmJhckl0ZW1zLnZhbHVlXS5zb3J0KChlLHIpPT5lLnByaW9yaXR5LXIucHJpb3JpdHkpKTtyZXR1cm4ocyxpLHUsZCk9Pntjb25zdCBwPXIsYz1vO2koYShlLHQubWVyZ2VQcm9wcyh7dGl0bGU6bC50aXRsZX0sZCkse2xlYWRpbmc6dC53aXRoQ3R4KChlLHIsbyxzKT0+e2lmKCFyKXJldHVyblt0LmNyZWF0ZVZOb2RlKHApXTtyKGEocCxudWxsLG51bGwsbyxzKSl9KSxyaWdodDp0LndpdGhDdHgoKGUscixvLGwpPT57aWYoIXIpcmV0dXJuW3QucmVuZGVyU2xvdChzLiRzbG90cywicmlnaHQiKSx0LmNyZWF0ZVZOb2RlKGMsbnVsbCx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9PlsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdCh0LnVucmVmKG0pLGU9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLmNvbXBvbmVudCkse2tleTplLmlkfSkpKSwxMjgpKV0pLF86MX0pXTtuKHMuJHNsb3RzLCJyaWdodCIse30sbnVsbCxyLG8sbCkscihhKGMsbnVsbCx7fSxvLGwpKX0pLF86M30sdSkpfX19KSxpPWwuc2V0dXA7bC5zZXR1cD0oZSxyKT0+e2NvbnN0IG89dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCJjb21wb25lbnRzL0Rhc2hib2FyZC9EYXNoYm9hcmROYXZiYXIudnVlIiksaT9pKGUscik6dm9pZCAwfTtleHBvcnR7bCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcy5tYXAK", "chunks/build/DashboardNavbar-pkIEadOJ.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBsLGsgYXMgcyx0IGFzIHIsYiBhcyBvLFAgYXMgYX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3UgYXMgbn1mcm9tIi4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS1DSE1NaWJfVy5tanMiO2ltcG9ydHtmIGFzIHUsZyBhcyBkLGogYXMgYyxxIGFzIGd9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBmPXtzbG90czp7cm9vdDoiaC0oLS11aS1oZWFkZXItaGVpZ2h0KSBzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUiLGxlZnQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgbWluLXctMCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IHNlbGYtY2VudGVyIG1lLTEuNSIsdGl0bGU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIHRydW5jYXRlIixjZW50ZXI6ImhpZGRlbiBsZzpmbGV4IixyaWdodDoiZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTEuNSIsdG9nZ2xlOiIifSx2YXJpYW50czp7dG9nZ2xlU2lkZTp7bGVmdDp7dG9nZ2xlOiIifSxyaWdodDp7dG9nZ2xlOiIifX19fSxtPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZE5hdmJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0b2dnbGU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0b2dnbGVTaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAobSl7Y29uc3QgcD1tLHY9ZS51c2VTbG90cygpLGg9dCgpLHg9bCgiZGFzaGJvYXJkTmF2YmFyIixwKSxiPW4oe30pLFtTLCRdPXMoKSxrPWUuY29tcHV0ZWQoKCk9PnIoe2V4dGVuZDpyKGYpLC4uLmgudWk/LmRhc2hib2FyZE5hdmJhcnx8e319KSgpKTtyZXR1cm4odCxsLHMscik9PntsKCJceDNjIS0tWy0tXHgzZSIpLGwodShlLnVucmVmKFMpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLHMscixvKT0+e2lmKCFzKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsInRvZ2dsZSIsey4uLmUudW5yZWYoYiksdWk6ay52YWx1ZX0sKCk9PlttLnRvZ2dsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGksZS5tZXJnZVByb3BzKHtrZXk6MH0sIm9iamVjdCI9PXR5cGVvZiBtLnRvZ2dsZT9tLnRvZ2dsZTp7fSx7c2lkZTptLnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6ay52YWx1ZS50b2dnbGUoe2NsYXNzOmUudW5yZWYoeCk/LnRvZ2dsZSx0b2dnbGVTaWRlOm0udG9nZ2xlU2lkZX0pfSksbnVsbCwxNixbInNpZGUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO2QodC4kc2xvdHMsInRvZ2dsZSIsey4uLmUudW5yZWYoYiksdWk6ay52YWx1ZX0sKCk9PnttLnRvZ2dsZT9zKHUoaSxlLm1lcmdlUHJvcHMoIm9iamVjdCI9PXR5cGVvZiBtLnRvZ2dsZT9tLnRvZ2dsZTp7fSx7c2lkZTptLnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6ay52YWx1ZS50b2dnbGUoe2NsYXNzOmUudW5yZWYoeCk/LnRvZ2dsZSx0b2dnbGVTaWRlOm0udG9nZ2xlU2lkZX0pfSksbnVsbCxyLG8pKTpzKCJceDNjIS0tLS1ceDNlIil9LHMscixvKX0pLF86M30scykpLGwodShlLnVucmVmKGEpLGUubWVyZ2VQcm9wcyh7YXM6bS5hc30sdC4kYXR0cnMseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczprLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHgpPy5yb290LHAuY2xhc3NdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKGwscyxyLGEpPT57aWYoIXMpcmV0dXJuW2UuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJsZWZ0IixjbGFzczprLnZhbHVlLmxlZnQoe2NsYXNzOmUudW5yZWYoeCk/LmxlZnR9KX0sWyJsZWZ0Ij09PW0udG9nZ2xlU2lkZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJCkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImxlZnQiLGUudW5yZWYoYiksKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImxlYWRpbmciLHsuLi5lLnVucmVmKGIpLHVpOmsudmFsdWV9LCgpPT5bbS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sobyx7a2V5OjAsbmFtZTptLmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOmsudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih4KT8uaWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoImgxIix7ImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczprLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKHgpPy50aXRsZX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhtLnRpdGxlKSwxKV0pXSwyKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsInRyYWlsaW5nIix7Li4uZS51bnJlZihiKSx1aTprLnZhbHVlfSldKV0sMiksdi5kZWZhdWx0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJjZW50ZXIiLGNsYXNzOmsudmFsdWUuY2VudGVyKHtjbGFzczplLnVucmVmKHgpPy5jZW50ZXJ9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIsZS51bnJlZihiKSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6InJpZ2h0IixjbGFzczprLnZhbHVlLnJpZ2h0KHtjbGFzczplLnVucmVmKHgpPy5yaWdodH0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJyaWdodCIsZS51bnJlZihiKSksInJpZ2h0Ij09PW0udG9nZ2xlU2lkZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJCkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildO3MoYDxkaXYgZGF0YS1zbG90PSJsZWZ0IiBjbGFzcz0iJHtjKGsudmFsdWUubGVmdCh7Y2xhc3M6ZS51bnJlZih4KT8ubGVmdH0pKX0iJHthfT5gKSwibGVmdCI9PT1tLnRvZ2dsZVNpZGU/cyh1KGUudW5yZWYoJCksbnVsbCxudWxsLHIsYSkpOnMoIlx4M2MhLS0tLVx4M2UiKSxkKHQuJHNsb3RzLCJsZWZ0IixlLnVucmVmKGIpLCgpPT57ZCh0LiRzbG90cywibGVhZGluZyIsey4uLmUudW5yZWYoYiksdWk6ay52YWx1ZX0sKCk9PnttLmljb24/cyh1KG8se25hbWU6bS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczprLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeCk/Lmljb259KX0sbnVsbCxyLGEpKTpzKCJceDNjIS0tLS1ceDNlIil9LHMscixhKSxzKGA8aDEgZGF0YS1zbG90PSJ0aXRsZSIgY2xhc3M9IiR7YyhrLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKHgpPy50aXRsZX0pKX0iJHthfT5gKSxkKHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntzKGAke2cobS50aXRsZSl9YCl9LHMscixhKSxzKCI8L2gxPiIpLGQodC4kc2xvdHMsInRyYWlsaW5nIix7Li4uZS51bnJlZihiKSx1aTprLnZhbHVlfSxudWxsLHMscixhKX0scyxyLGEpLHMoIjwvZGl2PiIpLHYuZGVmYXVsdD8ocyhgPGRpdiBkYXRhLXNsb3Q9ImNlbnRlciIgY2xhc3M9IiR7YyhrLnZhbHVlLmNlbnRlcih7Y2xhc3M6ZS51bnJlZih4KT8uY2VudGVyfSkpfSIke2F9PmApLGQodC4kc2xvdHMsImRlZmF1bHQiLGUudW5yZWYoYiksbnVsbCxzLHIsYSkscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKSxzKGA8ZGl2IGRhdGEtc2xvdD0icmlnaHQiIGNsYXNzPSIke2Moay52YWx1ZS5yaWdodCh7Y2xhc3M6ZS51bnJlZih4KT8ucmlnaHR9KSl9IiR7YX0+YCksZCh0LiRzbG90cywicmlnaHQiLGUudW5yZWYoYiksbnVsbCxzLHIsYSksInJpZ2h0Ij09PW0udG9nZ2xlU2lkZT9zKHUoZS51bnJlZigkKSxudWxsLG51bGwscixhKSk6cygiXHgzYyEtLS0tXHgzZSIpLHMoIjwvZGl2PiIpfSksXzozfSxzKSksbCgiXHgzYyEtLV0tLVx4M2UiKX19fSkscD1tLnNldHVwO20uc2V0dXA9KHQsbCk9Pntjb25zdCBzPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9EYXNoYm9hcmROYXZiYXIudnVlIikscD9wKHQsbCk6dm9pZCAwfTtleHBvcnR7bSBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkTmF2YmFyLXBrSUVhZE9KLm1qcy5tYXAK", "chunks/build/DashboardPanel-CFKYSqc5.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHMsdiBhcyBvLHQgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3UgYXMgYSxhIGFzIHQsXyBhcyBsfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7byBhcyBuLGcgYXMgdSxqIGFzIGQsZiBhcyBpfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgZj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGZsZXggZmxleC1jb2wgbWluLXctMCBtaW4taC1zdmggbGc6bm90LWxhc3Q6Ym9yZGVyLWUgbGc6bm90LWxhc3Q6Ym9yZGVyLWRlZmF1bHQgc2hyaW5rLTAiLGJvZHk6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgZmxleC0xIG92ZXJmbG93LXktYXV0byBwLTQgc206cC02IixoYW5kbGU6IiJ9LHZhcmlhbnRzOntzaXplOnt0cnVlOntyb290OiJ3LWZ1bGwgbGc6dy0oLS13aWR0aCkifSxmYWxzZTp7cm9vdDoiZmxleC0xIn19fX0sYj1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVEYXNoYm9hcmRQYW5lbCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2NsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtaW5TaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjE1fSxtYXhTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFNpemU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyZXNpemFibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfX0sc2V0dXAoYil7Y29uc3QgYz1iLG09ZSgpLHA9cygiZGFzaGJvYXJkUGFuZWwiLGMpLGg9YSh7c3RvcmFnZUtleToiZGFzaGJvYXJkIix1bml0OiIlIn0pLHg9YCR7aC5zdG9yYWdlS2V5fS1wYW5lbC0ke2MuaWR8fG8udXNlSWQoKX1gLHtlbDpnLHNpemU6dixpc0RyYWdnaW5nOnksb25Nb3VzZURvd246JCxvblRvdWNoU3RhcnQ6dyxvbkRvdWJsZUNsaWNrOnp9PXQoeCxvLnRvUmVmKCgpPT4oey4uLmgsLi4uY30pKSksXz1vLmNvbXB1dGVkKCgpPT5yKHtleHRlbmQ6cihmKSwuLi5tLnVpPy5kYXNoYm9hcmRQYW5lbHx8e319KSh7c2l6ZTohIXYudmFsdWV9KSk7cmV0dXJuKGUscyxyLGEpPT57cyhgXHgzYyEtLVstLVx4M2U8ZGl2JHtuKG8ubWVyZ2VQcm9wcyh7aWQ6eCxyZWZfa2V5OiJlbCIscmVmOmd9LGUuJGF0dHJzLHsiZGF0YS1kcmFnZ2luZyI6by51bnJlZih5KSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Xy52YWx1ZS5yb290KHtjbGFzczpbby51bnJlZihwKT8ucm9vdCxjLmNsYXNzXX0pLHN0eWxlOltvLnVucmVmKHYpP3siLS13aWR0aCI6YCR7by51bnJlZih2KX0ke28udW5yZWYoaCkudW5pdH1gfTp2b2lkIDBdfSkpfT5gKSx1KGUuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+e3UoZS4kc2xvdHMsImhlYWRlciIse30sbnVsbCxzLHIpLHMoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtkKF8udmFsdWUuYm9keSh7Y2xhc3M6by51bnJlZihwKT8uYm9keX0pKX0iPmApLHUoZS4kc2xvdHMsImJvZHkiLHt9LG51bGwscyxyKSxzKCI8L2Rpdj4iKSx1KGUuJHNsb3RzLCJmb290ZXIiLHt9LG51bGwscyxyKX0scyxyKSxzKCI8L2Rpdj4iKSx1KGUuJHNsb3RzLCJyZXNpemUtaGFuZGxlIix7b25Nb3VzZURvd246by51bnJlZigkKSxvblRvdWNoU3RhcnQ6by51bnJlZih3KSxvbkRvdWJsZUNsaWNrOm8udW5yZWYoeil9LCgpPT57Yi5yZXNpemFibGU/cyhpKGwseyJhcmlhLWNvbnRyb2xzIjp4LCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOl8udmFsdWUuaGFuZGxlKHtjbGFzczpvLnVucmVmKHApPy5oYW5kbGV9KSxvbk1vdXNlZG93bjpvLnVucmVmKCQpLG9uVG91Y2hzdGFydDpvLnVucmVmKHcpLG9uRGJsY2xpY2s6by51bnJlZih6KX0sbnVsbCxyKSk6cygiXHgzYyEtLS0tXHgzZSIpfSxzLHIpLHMoIlx4M2MhLS1dLS1ceDNlIil9fX0pLGM9Yi5zZXR1cDtiLnNldHVwPShlLHMpPT57Y29uc3Qgcj1vLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oci5tb2R1bGVzfHwoci5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkUGFuZWwudnVlIiksYz9jKGUscyk6dm9pZCAwfTtleHBvcnR7YiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzLm1hcAo=", "chunks/build/DashboardResizeHandle-BRuAGFE5.mjs": "aW1wb3J0e20gYXMgZSx2IGFzIHQsZiBhcyBhLG4gYXMgbyxkIGFzIGwsZSBhcyBzLHQgYXMgdSxQIGFzIG4sbyBhcyBpLHAgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2FGIGFzIGQsYVYgYXMgdixhVyBhcyBjLGFYIGFzIHAsUiBhcyBmLEkgYXMgbSxhYiBhcyBofWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZiBhcyBiLGcgYXMgen1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IGc9e3BhdGg6Ii8iLHdhdGNoOiEwLGRlY29kZTplPT5mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9PWUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJlN0cmluZyh0KSE9PWU/ZTp0fWNhdGNoe3JldHVybiBlfX0oZGVjb2RlVVJJQ29tcG9uZW50KGUpKSxlbmNvZGU6ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZXx8InVuZGVmaW5lZCI9PT1lKXJldHVybiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZSkpO3RyeXtpZigic3RyaW5nIiE9dHlwZW9mIEpTT04ucGFyc2UoZSkpcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2h7fXJldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSl9LHJlZnJlc2g6ITF9O2Z1bmN0aW9uIHVzZUNvb2tpZShlLGEpe2NvbnN0IG89ey4uLmcsLi4uYX07by5maWx0ZXI/Pz10PT50PT09ZTtjb25zdCBsPWZ1bmN0aW9uKGU9e30pe3JldHVybiB2KGMocigpLCJjb29raWUiKXx8IiIsZSl9KG8pfHx7fTtsZXQgczt2b2lkIDAhPT1vLm1heEFnZT9zPTFlMypvLm1heEFnZTpvLmV4cGlyZXMmJihzPW8uZXhwaXJlcy5nZXRUaW1lKCktRGF0ZS5ub3coKSk7Y29uc3QgdT1kKHZvaWQgMCE9PXMmJnM8PTA/dm9pZCAwOmxbZV0/P28uZGVmYXVsdD8uKCkpLG49ZnVuY3Rpb24oZSxhKXtjb25zdCBvPXQucmVmKGEpLGw9aSgpO3JldHVybiB0LmN1c3RvbVJlZigodCxhKT0+KHtnZXQ6KCk9Pih0KCksby52YWx1ZSksc2V0KHQpe2wuX2Nvb2tpZXNDaGFuZ2VkfHw9e30sbC5fY29va2llc0NoYW5nZWRbZV09ITAsby52YWx1ZT10LGEoKX19KSl9KGUsdSk7e2NvbnN0IHQ9aSgpLHdyaXRlRmluYWxDb29raWVWYWx1ZT0oKT0+e2NvbnN0IGE9cChuLnZhbHVlLGxbZV0pO28ucmVhZG9ubHl8fGEmJiFvLnJlZnJlc2h8fCh0Ll9jb29raWVzQ2hhbmdlZHx8PXt9LGEmJm8ucmVmcmVzaCYmIXQuX2Nvb2tpZXNDaGFuZ2VkW2VdfHwodC5fY29va2llc3x8PXt9LGUgaW4gdC5fY29va2llcyYmcChuLnZhbHVlLHQuX2Nvb2tpZXNbZV0pfHwodC5fY29va2llc1tlXT1uLnZhbHVlLGZ1bmN0aW9uKGUsdCxhLG89e30pe2lmKGUpe2lmKG51bGwhPWEpcmV0dXJuIGYoZSx0LGEsbyk7aWYodm9pZCAwIT09bShlLHQpKWgoZSx0LG8pfX0ocih0KSxlLG4udmFsdWUsbykpKSl9LGE9dC5ob29rcy5ob29rT25jZSgiYXBwOnJlbmRlcmVkIix3cml0ZUZpbmFsQ29va2llVmFsdWUpO3QuaG9va3MuaG9va09uY2UoImFwcDplcnJvciIsKCk9PihhKCksd3JpdGVGaW5hbENvb2tpZVZhbHVlKCkpKX1yZXR1cm4gbn1mdW5jdGlvbiB1c2VSZXNpemFibGUoZSxsPXt9LHtjb2xsYXBzZWQ6cz10LnJlZighMSl9PXt9KXtjb25zdCB1PXQucmVmKG51bGwpLG49dC5jb21wdXRlZCgoKT0+KHtzaWRlOiJsZWZ0IixtaW5TaXplOjAsbWF4U2l6ZToxMDAsZGVmYXVsdFNpemU6MCxzdG9yYWdlOiJjb29raWUiLHBlcnNpc3RlbnQ6ITAsY29sbGFwc2libGU6ITEsY29sbGFwc2VkU2l6ZTowLHJlc2l6YWJsZTohMCx1bml0OiIlIiwuLi50LmlzUmVmKGwpP2wudmFsdWU6bH0pKSx7ZGlyOml9PWEoKSxyPXtzaXplOm4udmFsdWUuZGVmYXVsdFNpemUsY29sbGFwc2VkOnQudW5yZWYocyk/PyExfSxkPW4udmFsdWUucGVyc2lzdGVudCYmKG4udmFsdWUucmVzaXphYmxlfHxuLnZhbHVlLmNvbGxhcHNpYmxlKT8iY29va2llIj09PW4udmFsdWUuc3RvcmFnZT91c2VDb29raWUoZSx7ZGVmYXVsdDooKT0+cn0pOm8oZSxyKTp0LnJlZihyKSx2PXQuY29tcHV0ZWQoe2dldDooKT0+ZC52YWx1ZS5jb2xsYXBzZWQsc2V0OmU9PntuLnZhbHVlLmNvbGxhcHNpYmxlJiYodC5pc1JlZihzKSYmKHMudmFsdWU9ZSksZC52YWx1ZS5jb2xsYXBzZWQ9ZSl9fSksYz10LnJlZihuLnZhbHVlLmRlZmF1bHRTaXplKSxwPXQuY29tcHV0ZWQoe2dldDooKT0+ZC52YWx1ZS5zaXplLHNldDplPT57ZC52YWx1ZS5zaXplPWV9fSksZj10LmNvbXB1dGVkKCgpPT52LnZhbHVlP24udmFsdWUuY29sbGFwc2VkU2l6ZTpwLnZhbHVlKSxtPXQucmVmKCExKSxjb2xsYXBzZT1lPT57aWYoIW4udmFsdWUuY29sbGFwc2libGUpcmV0dXJuO2NvbnN0IHQ9ZT8/IXYudmFsdWU7dCYmIXYudmFsdWU/Yy52YWx1ZT1wLnZhbHVlOiF0JiZ2LnZhbHVlJiYocC52YWx1ZT1jLnZhbHVlKSx2LnZhbHVlPXR9O3JldHVybiB0LmlzUmVmKHMpJiZkLnZhbHVlLmNvbGxhcHNlZCYmKHMudmFsdWU9ZC52YWx1ZS5jb2xsYXBzZWQpLHQuaXNSZWYocykmJnQud2F0Y2gocyxlPT57bi52YWx1ZS5jb2xsYXBzaWJsZSYmZC52YWx1ZS5jb2xsYXBzZWQhPT1lJiYoZC52YWx1ZS5jb2xsYXBzZWQ9ZSl9KSx7ZWw6dSxzaXplOmYsaXNEcmFnZ2luZzptLGlzQ29sbGFwc2VkOnYsb25Nb3VzZURvd246ZT0+e2lmKCF1LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGUpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO2NvbnN0IHQ9dS52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtpZighdClyZXR1cm47Y29uc3QgYT1lLmNsaWVudFgsbz10O20udmFsdWU9ITA7Y29uc3QgaGFuZGxlTW91c2VNb3ZlPWU9PnsoKGUsdCxhKT0+e2lmKCF1LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGUpcmV0dXJuO2NvbnN0IG89dS52YWx1ZS5wYXJlbnRFbGVtZW50Py5vZmZzZXRXaWR0aHx8MTtsZXQgbDtsPSJydGwiPT09aS52YWx1ZT8ibGVmdCI9PT1uLnZhbHVlLnNpZGU/dC1lLmNsaWVudFg6ZS5jbGllbnRYLXQ6ImxlZnQiPT09bi52YWx1ZS5zaWRlP2UuY2xpZW50WC10OnQtZS5jbGllbnRYO2NvbnN0IHM9YStsO2xldCByO3I9InJlbSI9PT1uLnZhbHVlLnVuaXQ/cy9OdW1iZXIucGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKCh2b2lkIDApLmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpOiJweCI9PT1uLnZhbHVlLnVuaXQ/czpzL28qMTAwO24udmFsdWUuY29sbGFwc2libGUmJnI8bi52YWx1ZS5jb2xsYXBzZWRTaXplKzQ/Y29sbGFwc2UoITApOih2LnZhbHVlJiZjb2xsYXBzZSghMSkscC52YWx1ZT1NYXRoLm1pbihuLnZhbHVlLm1heFNpemUsTWF0aC5tYXgobi52YWx1ZS5taW5TaXplLHIpKSl9KShlLGEsbyl9LGhhbmRsZU1vdXNlVXA9KCk9PnttLnZhbHVlPSExLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsaGFuZGxlTW91c2VNb3ZlKSwodm9pZCAwKS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixoYW5kbGVNb3VzZVVwKX07KHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixoYW5kbGVNb3VzZU1vdmUpLCh2b2lkIDApLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGhhbmRsZU1vdXNlVXApfSxvblRvdWNoU3RhcnQ6ZT0+e2lmKCF1LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGV8fCFlLnRvdWNoZXNbMF0pcmV0dXJuO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO2NvbnN0IHQ9dS52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtpZighdClyZXR1cm47Y29uc3QgYT1lLnRvdWNoZXNbMF0uY2xpZW50WCxvPXQ7bS52YWx1ZT0hMDtjb25zdCBoYW5kbGVUb3VjaE1vdmU9ZT0+eygoZSx0LGEpPT57aWYoIXUudmFsdWV8fCFuLnZhbHVlLnJlc2l6YWJsZXx8IWUudG91Y2hlc1swXSlyZXR1cm47Y29uc3Qgbz11LnZhbHVlLnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRofHwxO2xldCBsO2w9InJ0bCI9PT1pLnZhbHVlPyJsZWZ0Ij09PW4udmFsdWUuc2lkZT90LWUudG91Y2hlc1swXS5jbGllbnRYOmUudG91Y2hlc1swXS5jbGllbnRYLXQ6ImxlZnQiPT09bi52YWx1ZS5zaWRlP2UudG91Y2hlc1swXS5jbGllbnRYLXQ6dC1lLnRvdWNoZXNbMF0uY2xpZW50WDtjb25zdCBzPWErbDtsZXQgcjtyPSJyZW0iPT09bi52YWx1ZS51bml0P3MvTnVtYmVyLnBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSgodm9pZCAwKS5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKToicHgiPT09bi52YWx1ZS51bml0P3M6cy9vKjEwMDtuLnZhbHVlLmNvbGxhcHNpYmxlJiZyPG4udmFsdWUuY29sbGFwc2VkU2l6ZSs0P2NvbGxhcHNlKCEwKToodi52YWx1ZSYmY29sbGFwc2UoITEpLHAudmFsdWU9TWF0aC5taW4obi52YWx1ZS5tYXhTaXplLE1hdGgubWF4KG4udmFsdWUubWluU2l6ZSxyKSkpfSkoZSxhLG8pfSxoYW5kbGVUb3VjaEVuZD0oKT0+e20udmFsdWU9ITEsKHZvaWQgMCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixoYW5kbGVUb3VjaE1vdmUpLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixoYW5kbGVUb3VjaEVuZCksKHZvaWQgMCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLGhhbmRsZVRvdWNoRW5kKX07KHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixoYW5kbGVUb3VjaE1vdmUse3Bhc3NpdmU6ITF9KSwodm9pZCAwKS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsaGFuZGxlVG91Y2hFbmQpLCh2b2lkIDApLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIixoYW5kbGVUb3VjaEVuZCl9LG9uRG91YmxlQ2xpY2s6ZT0+e3UudmFsdWUmJm4udmFsdWUucmVzaXphYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdi52YWx1ZSYmY29sbGFwc2UoITEpLHAudmFsdWU9bi52YWx1ZS5kZWZhdWx0U2l6ZSl9LGNvbGxhcHNlOmNvbGxhcHNlfX1jb25zdFtTLFJdPWUoIkRhc2hib2FyZEdyb3VwIiksaz17YmFzZToiaGlkZGVuIGxnOmJsb2NrIHRvdWNoLW5vbmUgc2VsZWN0LW5vbmUgY3Vyc29yLWV3LXJlc2l6ZSByZWxhdGl2ZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOmluc2V0LXktMCBiZWZvcmU6LWxlZnQtMS41IGJlZm9yZTotcmlnaHQtMS41IGJlZm9yZTp6LTEifSxDPXtfX25hbWU6IlVEYXNoYm9hcmRSZXNpemVIYW5kbGUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBhPWUsbz1sKCksaT1zKCJkYXNoYm9hcmRSZXNpemVIYW5kbGUiLGEpLHI9dC5jb21wdXRlZCgoKT0+dSh7ZXh0ZW5kOnUoayksLi4uby51aT8uZGFzaGJvYXJkUmVzaXplSGFuZGxlfHx7fX0pKTtyZXR1cm4obyxsLHMsdSk9PntsKGIodC51bnJlZihuKSx0Lm1lcmdlUHJvcHMoe2FzOmUuYXMscm9sZToic2VwYXJhdG9yIixjbGFzczpyLnZhbHVlKHtjbGFzczpbdC51bnJlZihpKT8uYmFzZSxhLmNsYXNzXX0pfSx1KSx7ZGVmYXVsdDp0LndpdGhDdHgoKGUsYSxsLHMpPT57aWYoIWEpcmV0dXJuW3QucmVuZGVyU2xvdChvLiRzbG90cywiZGVmYXVsdCIpXTt6KG8uJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLGEsbCxzKX0pLF86M30scykpfX19LHg9Qy5zZXR1cDtDLnNldHVwPShlLGEpPT57Y29uc3Qgbz10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkUmVzaXplSGFuZGxlLnZ1ZSIpLHg/eChlLGEpOnZvaWQgMH07ZXhwb3J0e0MgYXMgXyx1c2VSZXNpemFibGUgYXMgYSxSIGFzIHAsUyBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcy5tYXAK", "chunks/build/DashboardSessionCard-DKC9fkMe.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHtfIGFzIHR9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e3YgYXMgcixoIGFzIHN9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGEsdCBhcyBuLHEgYXMgaX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IG89ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGFzaGJvYXJkU2Vzc2lvbkNhcmQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKG8pe2NvbnN0IGQ9cygpO3JldHVybihzLG8sYyxsKT0+e2NvbnN0IG09dDtvKGEoZSxyLm1lcmdlUHJvcHMoeyJkYXRhLXRlc3RpZCI6InNlc3Npb24tY2FyZCJ9LGwpLHtoZWFkZXI6ci53aXRoQ3R4KChlLHQscyxuKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIn0sW3IuY3JlYXRlVk5vZGUoImRpdiIsbnVsbCxbci5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFNpZ25lZCBpbiBhcyAiKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiwiZGF0YS10ZXN0aWQiOiJjdXJyZW50LXVzZXItbmFtZSJ9LHIudG9EaXNwbGF5U3RyaW5nKHIudW5yZWYoZCkuY3VycmVudFVzZXI/Lm5hbWU/P3IudW5yZWYoZCkuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwpLDEpLHIuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIiwiZGF0YS10ZXN0aWQiOiJjdXJyZW50LXVzZXItZW1haWwifSxyLnRvRGlzcGxheVN0cmluZyhyLnVucmVmKGQpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsKSwxKV0pLHIudW5yZWYoZCkuaXNJbXBlcnNvbmF0aW5nPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2sobSx7a2V5OjAsY29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGljb246ImktbHVjaWRlLXVzZXItY29nIiwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0aW5nLWJhZGdlIn0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVUZXh0Vk5vZGUoIiBJbXBlcnNvbmF0aW5nICIpXSksXzoxfSkpOnIuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIiJHtufT48ZGl2JHtufT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7bn0+IFNpZ25lZCBpbiBhcyA8L3A+PHAgY2xhc3M9InRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiBkYXRhLXRlc3RpZD0iY3VycmVudC11c2VyLW5hbWUiJHtufT4ke2koci51bnJlZihkKS5jdXJyZW50VXNlcj8ubmFtZT8/ci51bnJlZihkKS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbCl9PC9wPjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQiIGRhdGEtdGVzdGlkPSJjdXJyZW50LXVzZXItZW1haWwiJHtufT4ke2koci51bnJlZihkKS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbCl9PC9wPjwvZGl2PmApLHIudW5yZWYoZCkuaXNJbXBlcnNvbmF0aW5nP3QoYShtLHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsaWNvbjoiaS1sdWNpZGUtdXNlci1jb2ciLCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRpbmctYmFkZ2UifSx7ZGVmYXVsdDpyLndpdGhDdHgoKGUsdCxzLGEpPT57aWYoIXQpcmV0dXJuW3IuY3JlYXRlVGV4dFZOb2RlKCIgSW1wZXJzb25hdGluZyAiKV07dCgiIEltcGVyc29uYXRpbmcgIil9KSxfOjF9LHMsbikpOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCI8L2Rpdj4iKX0pLGRlZmF1bHQ6ci53aXRoQ3R4KChlLHQscyxvKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS0zIn0sW3IuY3JlYXRlVk5vZGUoImRpdiIsbnVsbCxbci5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSJ9LCIgQWJpbGl0aWVzICIpLHIuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtd3JhcCBnYXAtMSJ9LFsoci5vcGVuQmxvY2soITApLHIuY3JlYXRlQmxvY2soci5GcmFnbWVudCxudWxsLHIucmVuZGVyTGlzdChyLnVucmVmKGQpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLGU9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2sobSx7a2V5OmUsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToic20ifSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVRleHRWTm9kZShyLnRvRGlzcGxheVN0cmluZyhlKSwxKV0pLF86Mn0sMTAyNCkpKSwxMjgpKSxyLnVucmVmKGQpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/Lmxlbmd0aD9yLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLGNsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSwiIChub25lKSAiKSldKV0pLHIudW5yZWYoZCkuaXNJbXBlcnNvbmF0aW5nJiZyLnVucmVmKGQpLmltcGVyc29uYXRvcj8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MH0sW3IuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIG1iLTEifSwiIFJlYWwgdXNlciAiKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20ifSxbci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoci51bnJlZihkKS5pbXBlcnNvbmF0b3IubmFtZSkrIiAiLDEpLHIuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCLCtyAiK3IudG9EaXNwbGF5U3RyaW5nKHIudW5yZWYoZCkuaW1wZXJzb25hdG9yLnByaW1hcnlfZW1haWwpLDEpXSldKSk6ci5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktMyIke299PjxkaXYke299PjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSIke299PiBBYmlsaXRpZXMgPC9wPjxkaXYgY2xhc3M9ImZsZXggZmxleC13cmFwIGdhcC0xIiR7b30+XHgzYyEtLVstLVx4M2VgKSxuKHIudW5yZWYoZCkuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sZT0+e3QoYShtLHtrZXk6ZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJzbSJ9LHtkZWZhdWx0OnIud2l0aEN0eCgodCxzLGEsbik9PntpZighcylyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZSksMSldO3MoYCR7aShlKX1gKX0pLF86Mn0scyxvKSl9KSx0KCJceDNjIS0tXS0tXHgzZSIpLHIudW5yZWYoZCkuY3VycmVudFVzZXI/LmFiaWxpdGllcz8ubGVuZ3RoP3QoIlx4M2MhLS0tLVx4M2UiKTp0KGA8c3BhbiBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIiR7b30+IChub25lKSA8L3NwYW4+YCksdCgiPC9kaXY+PC9kaXY+Iiksci51bnJlZihkKS5pc0ltcGVyc29uYXRpbmcmJnIudW5yZWYoZCkuaW1wZXJzb25hdG9yP3QoYDxkaXYke299PjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSIke299PiBSZWFsIHVzZXIgPC9wPjxwIGNsYXNzPSJ0ZXh0LXNtIiR7b30+JHtpKHIudW5yZWYoZCkuaW1wZXJzb25hdG9yLm5hbWUpfSA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke299PsK3ICR7aShyLnVucmVmKGQpLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKX08L3NwYW4+PC9wPjwvZGl2PmApOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCI8L2Rpdj4iKX0pLF86MX0sYykpfX19KSxkPW8uc2V0dXA7by5zZXR1cD0oZSx0KT0+e2NvbnN0IHM9ci51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHMubW9kdWxlc3x8KHMubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCJjb21wb25lbnRzL0Rhc2hib2FyZC9EYXNoYm9hcmRTZXNzaW9uQ2FyZC52dWUiKSxkP2QoZSx0KTp2b2lkIDB9O2V4cG9ydHtvIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1EYXNoYm9hcmRTZXNzaW9uQ2FyZC1ES0M5ZmtNZS5tanMubWFwCg==", "chunks/build/DashboardSidebarCollapse-CQCZOtXH.mjs": "aW1wb3J0e2wgYXMgZSxyLGYgYXMgYSxkIGFzIGwsZSBhcyBpLHYgYXMgZCx0IGFzIG4sXyBhcyBzfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBvfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7ZiBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgdD17YmFzZToiaGlkZGVuIGxnOmZsZXgiLHZhcmlhbnRzOntzaWRlOntsZWZ0OiIiLHJpZ2h0OiIifX19LHA9e19fbmFtZToiVURhc2hib2FyZFNpZGViYXJDb2xsYXBzZSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2NvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJnaG9zdCJ9LHNpZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxlZnQifSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNxdWFyZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxibG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAocCl7Y29uc3QgYz1wLGI9ZShyKGMsImljb24iLCJzaWRlIiwiY2xhc3MiKSkse3Q6eX09YSgpLHE9bCgpLGY9aSgiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlIixjKSx7c2lkZWJhckNvbGxhcHNlZDptLGNvbGxhcHNlU2lkZWJhcjpnfT1vKHtzaWRlYmFyQ29sbGFwc2VkOmQucmVmKCExKSxjb2xsYXBzZVNpZGViYXI6KCk9Pnt9fSksQz1kLmNvbXB1dGVkKCgpPT5uKHtleHRlbmQ6bih0KSwuLi5xLnVpPy5kYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2V8fHt9fSkpO3JldHVybihlLHIsYSxsKT0+e3IodShzLGQubWVyZ2VQcm9wcyh7Li4uZC51bnJlZihiKSxpY29uOmMuaWNvbnx8KGQudW5yZWYobSk/ZC51bnJlZihxKS51aS5pY29ucy5wYW5lbE9wZW46ZC51bnJlZihxKS51aS5pY29ucy5wYW5lbENsb3NlKSwiYXJpYS1sYWJlbCI6ZC51bnJlZihtKT9kLnVucmVmKHkpKCJkYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UuZXhwYW5kIik6ZC51bnJlZih5KSgiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLmNvbGxhcHNlIiksLi4uZS4kYXR0cnN9LHtjbGFzczpDLnZhbHVlKHtjbGFzczpbZC51bnJlZihmKT8uYmFzZSxjLmNsYXNzXSxzaWRlOmMuc2lkZX0pLG9uQ2xpY2s6ZT0+ZC51bnJlZihnKT8uKCFkLnVucmVmKG0pKX0sbCksbnVsbCxhKSl9fX0sYz1wLnNldHVwO3Auc2V0dXA9KGUscik9Pntjb25zdCBhPWQudXNlU1NSQ29udGV4dCgpO3JldHVybihhLm1vZHVsZXN8fChhLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UudnVlIiksYz9jKGUscik6dm9pZCAwfTtleHBvcnR7cCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLUNRQ1pPdFhILm1qcy5tYXAK", "chunks/build/DashboardSidebarToggle-CHMMib_W.mjs": "aW1wb3J0e2wgYXMgZSxyLGYgYXMgaSxkIGFzIGEsZSBhcyBuLHYgYXMgdCx0IGFzIGQsXyBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBvfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7ZiBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3Qgcz17YmFzZToibGc6aGlkZGVuIix2YXJpYW50czp7c2lkZTp7bGVmdDoiIixyaWdodDoiIn19fSxwPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNpZGViYXJUb2dnbGUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZ2hvc3QifSxzaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZVZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYmxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25DbGljazp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmlld1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHApe2NvbnN0IGM9cCxiPWUocihjLCJpY29uIiwic2lkZSIsImNsYXNzIikpLHt0Omd9PWkoKSx5PWEoKSxxPW4oImRhc2hib2FyZFNpZGViYXJUb2dnbGUiLGMpLHtzaWRlYmFyT3BlbjpmLHRvZ2dsZVNpZGViYXI6bX09byh7c2lkZWJhck9wZW46dC5yZWYoITEpLHRvZ2dsZVNpZGViYXI6KCk9Pnt9fSksUz10LmNvbXB1dGVkKCgpPT5kKHtleHRlbmQ6ZChzKSwuLi55LnVpPy5kYXNoYm9hcmRTaWRlYmFyVG9nZ2xlfHx7fX0pKTtyZXR1cm4oZSxyLGksYSk9PntyKHUobCx0Lm1lcmdlUHJvcHMoey4uLnQudW5yZWYoYiksaWNvbjpjLmljb258fCh0LnVucmVmKGYpP3QudW5yZWYoeSkudWkuaWNvbnMuY2xvc2U6dC51bnJlZih5KS51aS5pY29ucy5tZW51KSwiYXJpYS1sYWJlbCI6dC51bnJlZihmKT90LnVucmVmKGcpKCJkYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLmNsb3NlIik6dC51bnJlZihnKSgiZGFzaGJvYXJkU2lkZWJhclRvZ2dsZS5vcGVuIiksLi4uZS4kYXR0cnN9LHtjbGFzczpTLnZhbHVlKHtjbGFzczpbdC51bnJlZihxKT8uYmFzZSxjLmNsYXNzXSxzaWRlOmMuc2lkZX0pLG9uQ2xpY2s6dC51bnJlZihtKX0sYSksbnVsbCxpKSl9fX0pLGM9cC5zZXR1cDtwLnNldHVwPShlLHIpPT57Y29uc3QgaT10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oaS5tb2R1bGVzfHwoaS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS52dWUiKSxjP2MoZSxyKTp2b2lkIDB9O2V4cG9ydHtwIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcy5tYXAK", "chunks/build/DashboardToolbar-BtABYzKH.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHQsdiBhcyBzLHQgYXMgcixQIGFzIGx9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIG8sZyBhcyBhLGogYXMgZH1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0IHU9e3Nsb3RzOntyb290OiJzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUgb3ZlcmZsb3cteC1hdXRvIG1pbi1oLVs0OXB4XSIsbGVmdDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSIscmlnaHQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUifX0sbj17X19uYW1lOiJVRGFzaGJvYXJkVG9vbGJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IGk9bixmPWUoKSxjPXQoImRhc2hib2FyZFRvb2xiYXIiLGkpLHA9cy5jb21wdXRlZCgoKT0+cih7ZXh0ZW5kOnIodSksLi4uZi51aT8uZGFzaGJvYXJkVG9vbGJhcnx8e319KSgpKTtyZXR1cm4oZSx0LHIsdSk9Pnt0KG8ocy51bnJlZihsKSxzLm1lcmdlUHJvcHMoe2FzOm4uYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnAudmFsdWUucm9vdCh7Y2xhc3M6W3MudW5yZWYoYyk/LnJvb3QsaS5jbGFzc119KX0sdSkse2RlZmF1bHQ6cy53aXRoQ3R4KCh0LHIsbCxvKT0+e2lmKCFyKXJldHVybltzLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bcy5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImxlZnQiLGNsYXNzOnAudmFsdWUubGVmdCh7Y2xhc3M6W3MudW5yZWYoYyk/LmxlZnRdfSl9LFtzLnJlbmRlclNsb3QoZS4kc2xvdHMsImxlZnQiKV0sMikscy5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6InJpZ2h0IixjbGFzczpwLnZhbHVlLnJpZ2h0KHtjbGFzczpbcy51bnJlZihjKT8ucmlnaHRdfSl9LFtzLnJlbmRlclNsb3QoZS4kc2xvdHMsInJpZ2h0IildLDIpXSldO2EoZS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT57cihgPGRpdiBkYXRhLXNsb3Q9ImxlZnQiIGNsYXNzPSIke2QocC52YWx1ZS5sZWZ0KHtjbGFzczpbcy51bnJlZihjKT8ubGVmdF19KSl9IiR7b30+YCksYShlLiRzbG90cywibGVmdCIse30sbnVsbCxyLGwsbykscihgPC9kaXY+PGRpdiBkYXRhLXNsb3Q9InJpZ2h0IiBjbGFzcz0iJHtkKHAudmFsdWUucmlnaHQoe2NsYXNzOltzLnVucmVmKGMpPy5yaWdodF19KSl9IiR7b30+YCksYShlLiRzbG90cywicmlnaHQiLHt9LG51bGwscixsLG8pLHIoIjwvZGl2PiIpfSxyLGwsbyl9KSxfOjN9LHIpKX19fSxpPW4uc2V0dXA7bi5zZXR1cD0oZSx0KT0+e2NvbnN0IHI9cy51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHIubW9kdWxlc3x8KHIubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Rhc2hib2FyZFRvb2xiYXIudnVlIiksaT9pKGUsdCk6dm9pZCAwfTtleHBvcnR7biBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGFzaGJvYXJkVG9vbGJhci1CdEFCWXpLSC5tanMubWFwCg==", "chunks/build/DropdownMenu-CecPceJa.mjs": "aW1wb3J0e2FFIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt2IGFzIHQsZCBhcyBpLGUgYXMgbCxFIGFzIGEsRiBhcyByLHQgYXMgbyxmIGFzIG4sRyBhcyBzLHIgYXMgYyxrIGFzIGQsSSBhcyB1LGIgYXMgbSxnIGFzIHAsSyBhcyBmLEogYXMgZyxhaCBhcyB4LGFpIGFzIGIsYWogYXMgdixhSiBhcyBofWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7RCBhcyB5LGIgYXMgayxjIGFzIHcsXyBhcyBCLGQgYXMgU31mcm9tIi4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0e3UgYXMgSX1mcm9tIi4vdXNlRmlsdGVyLUNsQ1phb2k4Lm1qcyI7aW1wb3J0e18gYXMgQ31mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7ZiBhcyBfLGcgYXMgTyxqIGFzIFYscSBhcyBMLHQgYXMgVCxrIGFzIHp9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBOPXtfX25hbWU6IlVEcm9wZG93bk1lbnVDb250ZW50IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7aXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxzdWI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXh0ZXJuYWxJY29uOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGZpbHRlcjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxmaWx0ZXJGaWVsZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGlnbm9yZUZpbHRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sdWlPdmVycmlkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6c2VhcmNoVGVybSIsImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGwse2VtaXQ6cn0pe2NvbnN0IG89bCx5PXIsaz10LnVzZVNsb3RzKCkse3Q6dyxkaXI6JH09bigpLEs9aSgpLHtmaWx0ZXJHcm91cHM6Rn09SSgpLHE9dC5yZWYoIiIpLFA9dC5jb21wdXRlZCh7Z2V0OigpPT5vLnNlYXJjaFRlcm0/P3EudmFsdWUsc2V0OmU9PntxLnZhbHVlPWUseSgidXBkYXRlOnNlYXJjaFRlcm0iLGUpfX0pLEE9dC50b1JlZigoKT0+ZShvLmZpbHRlcix7cGxhY2Vob2xkZXI6dygiZHJvcGRvd25NZW51LnNlYXJjaCIpLHZhcmlhbnQ6Im5vbmUifSkpLFU9cyh0LnRvUmVmKCgpPT5vLnBvcnRhbCkpLEQ9YShjKG8sInN1YiIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWxLZXkiLCJkZXNjcmlwdGlvbktleSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJzaXplIiwiZmlsdGVyIiwiZmlsdGVyRmllbGRzIiwiaWdub3JlRmlsdGVyIiwic2VhcmNoVGVybSIsImNsYXNzIiwidWkiLCJ1aU92ZXJyaWRlIikseSksZ2V0UHJveHlTbG90cz0oKT0+aChrLFsiZGVmYXVsdCJdKSxbTSxqXT1kKCksRT10LmNvbXB1dGVkKCgpPT4icnRsIj09PSQudmFsdWU/Sy51aS5pY29ucy5jaGV2cm9uTGVmdDpLLnVpLmljb25zLmNoZXZyb25SaWdodCksVz10LmNvbXB1dGVkKCgpPT5vLml0ZW1zPy5sZW5ndGg/dShvLml0ZW1zKT9vLml0ZW1zOltvLml0ZW1zXTpbXSksaXNTdHJ1Y3R1cmFsSXRlbT1lPT4hIWUudHlwZSYmWyJsYWJlbCIsInNlcGFyYXRvciJdLmluY2x1ZGVzKGUudHlwZSksUj10LmNvbXB1dGVkKCgpPT57aWYoIW8uZmlsdGVyfHxvLmlnbm9yZUZpbHRlcnx8IVAudmFsdWUpcmV0dXJuIFcudmFsdWU7Y29uc3QgZT1BcnJheS5pc0FycmF5KG8uZmlsdGVyRmllbGRzKSYmby5maWx0ZXJGaWVsZHMubGVuZ3RoP28uZmlsdGVyRmllbGRzOltvLmxhYmVsS2V5XTtyZXR1cm4gRihXLnZhbHVlLFAudmFsdWUse2ZpZWxkczplLGlzU3RydWN0dXJhbDppc1N0cnVjdHVyYWxJdGVtfSl9KSxHPXQuY29tcHV0ZWQoKCk9PlIudmFsdWUuc29tZShlPT5lLnNvbWUoZT0+IWlzU3RydWN0dXJhbEl0ZW0oZSkpKSk7cmV0dXJuKGUsaSxhLHIpPT57aSgiXHgzYyEtLVstLVx4M2UiKSxpKF8odC51bnJlZihNKSxudWxsLHtkZWZhdWx0OnQud2l0aEN0eCgoe2l0ZW06aSxhY3RpdmU6YSxpbmRleDpyfSxuLHMsYyk9PntpZighbilyZXR1cm5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLGkuc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTpsLnVpfSwoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sZWFkaW5nYDoiaXRlbS1sZWFkaW5nIix7aXRlbTppLGFjdGl2ZTphLGluZGV4OnIsdWk6bC51aX0sKCk9PltpLmxvYWRpbmc/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayhtLHtrZXk6MCxuYW1lOmwubG9hZGluZ0ljb258fHQudW5yZWYoSykudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpsLnVpLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsbG9hZGluZzohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuaWNvbj8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKG0se2tleToxLG5hbWU6aS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmwudWkuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxjb2xvcjppPy5jb2xvcixhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuYXZhdGFyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2socCx0Lm1lcmdlUHJvcHMoe2tleToyLHNpemU6aS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxsLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8bC51aS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0saS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6bC51aS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdBdmF0YXIsaS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTphfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSx0LnVucmVmKGYpKGksby5sYWJlbEtleSl8fGtbaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KXx8a1tpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczpsLnVpLml0ZW1XcmFwcGVyKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtV3JhcHBlcixpLnVpPy5pdGVtV3JhcHBlcl19KX0sW3QuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczpsLnVpLml0ZW1MYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxhYmVsLGkudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOmF9KX0sW3QucmVuZGVyU2xvdChlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksYWN0aXZlOmEsaW5kZXg6cn0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGYpKGksby5sYWJlbEtleSkpLDEpXSksIl9ibGFuayI9PT1pLnRhcmdldCYmITEhPT1sLmV4dGVybmFsSWNvbj8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKG0se2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBsLmV4dGVybmFsSWNvbj9sLmV4dGVybmFsSWNvbjp0LnVucmVmKEspLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOmwudWkuaXRlbUxhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtTGFiZWxFeHRlcm5hbEljb24saS51aT8uaXRlbUxhYmVsRXh0ZXJuYWxJY29uXSxjb2xvcjppPy5jb2xvcixhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksdC51bnJlZihmKShpLG8uZGVzY3JpcHRpb25LZXkpfHxrW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczpsLnVpLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbURlc2NyaXB0aW9uLGkudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW3QucmVuZGVyU2xvdChlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmksYWN0aXZlOmEsaW5kZXg6cn0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGYpKGksby5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOmwudWkuaXRlbVRyYWlsaW5nKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmcsaS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06aSxhY3RpdmU6YSxpbmRleDpyLHVpOmwudWl9LCgpPT5baS5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sobSx7a2V5OjAsbmFtZTpFLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpsLnVpLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmtiZHM/Lmxlbmd0aD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0tiZHMiLGNsYXNzOmwudWkuaXRlbVRyYWlsaW5nS2Jkcyh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nS2JkcyxpLnVpPy5pdGVtVHJhaWxpbmdLYmRzXX0pfSxbKHQub3BlbkJsb2NrKCEwKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQsbnVsbCx0LnJlbmRlckxpc3QoaS5rYmRzLChlLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKEIsdC5tZXJnZVByb3BzKHtrZXk6YSxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIGU/e3ZhbHVlOmV9OmUpLG51bGwsMTYsWyJzaXplIl0pKSksMTI4KSldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSx0LmNyZWF0ZVZOb2RlKHQudW5yZWYoUykuSXRlbUluZGljYXRvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZShtLHtuYW1lOmwuY2hlY2tlZEljb258fHQudW5yZWYoSykudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmwudWkuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXSxjb2xvcjppPy5jb2xvcn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXTtPKGUuJHNsb3RzLGkuc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTpsLnVpfSwoKT0+e08oZS4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06aSxhY3RpdmU6YSxpbmRleDpyLHVpOmwudWl9LCgpPT57aS5sb2FkaW5nP24oXyhtLHtuYW1lOmwubG9hZGluZ0ljb258fHQudW5yZWYoSykudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpsLnVpLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsbG9hZGluZzohMH0pfSxudWxsLHMsYykpOmkuaWNvbj9uKF8obSx7bmFtZTppLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6bC51aS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nSWNvbixpLnVpPy5pdGVtTGVhZGluZ0ljb25dLGNvbG9yOmk/LmNvbG9yLGFjdGl2ZTphfSl9LG51bGwscyxjKSk6aS5hdmF0YXI/bihfKHAsdC5tZXJnZVByb3BzKHtzaXplOmkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8bC51aU92ZXJyaWRlPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGwudWkuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LGkuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmwudWkuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nQXZhdGFyLGkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6YX0pfSksbnVsbCxzLGMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scyxjKSx0LnVucmVmKGYpKGksby5sYWJlbEtleSl8fGtbaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KXx8a1tpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8obihgPHNwYW4gZGF0YS1zbG90PSJpdGVtV3JhcHBlciIgY2xhc3M9IiR7VihsLnVpLml0ZW1XcmFwcGVyKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtV3JhcHBlcixpLnVpPy5pdGVtV3JhcHBlcl19KSl9IiR7Y30+PHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWwiIGNsYXNzPSIke1YobC51aS5pdGVtTGFiZWwoe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1MYWJlbCxpLnVpPy5pdGVtTGFiZWxdLGFjdGl2ZTphfSkpfSIke2N9PmApLE8oZS4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIix7aXRlbTppLGFjdGl2ZTphLGluZGV4OnJ9LCgpPT57bihgJHtMKHQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSl9YCl9LG4scyxjKSwiX2JsYW5rIj09PWkudGFyZ2V0JiYhMSE9PWwuZXh0ZXJuYWxJY29uP24oXyhtLHtuYW1lOiJzdHJpbmciPT10eXBlb2YgbC5leHRlcm5hbEljb24/bC5leHRlcm5hbEljb246dC51bnJlZihLKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpsLnVpLml0ZW1MYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbUxhYmVsRXh0ZXJuYWxJY29uLGkudWk/Lml0ZW1MYWJlbEV4dGVybmFsSWNvbl0sY29sb3I6aT8uY29sb3IsYWN0aXZlOmF9KX0sbnVsbCxzLGMpKTpuKCJceDNjIS0tLS1ceDNlIiksbigiPC9zcGFuPiIpLHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KXx8a1tpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8obihgPHNwYW4gZGF0YS1zbG90PSJpdGVtRGVzY3JpcHRpb24iIGNsYXNzPSIke1YobC51aS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1EZXNjcmlwdGlvbixpLnVpPy5pdGVtRGVzY3JpcHRpb25dfSkpfSIke2N9PmApLE8oZS4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTppLGFjdGl2ZTphLGluZGV4OnJ9LCgpPT57bihgJHtMKHQudW5yZWYoZikoaSxvLmRlc2NyaXB0aW9uS2V5KSl9YCl9LG4scyxjKSxuKCI8L3NwYW4+IikpOm4oIlx4M2MhLS0tLVx4M2UiKSxuKCI8L3NwYW4+IikpOm4oIlx4M2MhLS0tLVx4M2UiKSxuKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1UcmFpbGluZyIgY2xhc3M9IiR7VihsLnVpLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nLGkudWk/Lml0ZW1UcmFpbGluZ119KSl9IiR7Y30+YCksTyhlLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciLHtpdGVtOmksYWN0aXZlOmEsaW5kZXg6cix1aTpsLnVpfSwoKT0+e2kuY2hpbGRyZW4/Lmxlbmd0aD9uKF8obSx7bmFtZTpFLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpsLnVpLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl0sY29sb3I6aT8uY29sb3IsYWN0aXZlOmF9KX0sbnVsbCxzLGMpKTppLmtiZHM/Lmxlbmd0aD8obihgPHNwYW4gZGF0YS1zbG90PSJpdGVtVHJhaWxpbmdLYmRzIiBjbGFzcz0iJHtWKGwudWkuaXRlbVRyYWlsaW5nS2Jkcyh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nS2JkcyxpLnVpPy5pdGVtVHJhaWxpbmdLYmRzXX0pKX0iJHtjfT5ceDNjIS0tWy0tXHgzZWApLFQoaS5rYmRzLChlLGEpPT57bihfKEIsdC5tZXJnZVByb3BzKHtrZXk6YSxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsLnVpLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIGU/e3ZhbHVlOmV9OmUpLG51bGwscyxjKSl9KSxuKCJceDNjIS0tXS0tXHgzZTwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpfSxuLHMsYyksbihfKHQudW5yZWYoUykuSXRlbUluZGljYXRvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGEscixvKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKG0se25hbWU6bC5jaGVja2VkSWNvbnx8dC51bnJlZihLKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6bC51aS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dLGNvbG9yOmk/LmNvbG9yfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV07YShfKG0se25hbWU6bC5jaGVja2VkSWNvbnx8dC51bnJlZihLKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6bC51aS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dLGNvbG9yOmk/LmNvbG9yfSl9LG51bGwscixvKSl9KSxfOjJ9LHMsYykpLG4oIjwvc3Bhbj4iKX0sbixzLGMpfSksXzozfSxhKSksaShfKHQudW5yZWYoUykuUG9ydGFsLHQudW5yZWYoVSkse2RlZmF1bHQ6dC53aXRoQ3R4KChpLGEscixuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoZyksbnVsbCx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9PlsodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQobC5zdWI/dC51bnJlZihTKS5TdWJDb250ZW50OnQudW5yZWYoUykuQ29udGVudCksdC5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6bC51aS5jb250ZW50KHtjbGFzczpbbC51aU92ZXJyaWRlPy5jb250ZW50LG8uY2xhc3NdfSl9LHQudW5yZWYoRCkpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W2wuZmlsdGVyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5GaWx0ZXIse2tleTowLG1vZGVsVmFsdWU6UC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+UC52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoQyx0Lm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTpsLnNpemV9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6bC51aS5pbnB1dCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5pbnB1dH0pLG9uQ2hhbmdlOnQud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQtdG9wIix7c3ViOmwuc3ViPz8hMX0pLCFQLnZhbHVlfHxHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpsLnVpLnZpZXdwb3J0KHtjbGFzczpsLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdChSLnZhbHVlLChpLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuR3JvdXAse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpsLnVpLmdyb3VwKHtjbGFzczpsLnVpT3ZlcnJpZGU/Lmdyb3VwfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+Wyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGkscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke2F9LSR7cn1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLmF9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxhLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLFAudmFsdWUmJiFHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6bC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKHcpKCJkcm9wZG93bk1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06UC52YWx1ZX0pKSwxKV0pXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpLHQucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudC1ib3R0b20iLHtzdWI6bC5zdWI/PyExfSldKSxfOjN9LDE2LFsiY2xhc3MiXSkpXSksXzozfSldO2EoXyh0LnVucmVmKGcpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KChpLGEscixuKT0+e2lmKCFhKXJldHVyblsodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQobC5zdWI/dC51bnJlZihTKS5TdWJDb250ZW50OnQudW5yZWYoUykuQ29udGVudCksdC5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6bC51aS5jb250ZW50KHtjbGFzczpbbC51aU92ZXJyaWRlPy5jb250ZW50LG8uY2xhc3NdfSl9LHQudW5yZWYoRCkpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W2wuZmlsdGVyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5GaWx0ZXIse2tleTowLG1vZGVsVmFsdWU6UC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+UC52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoQyx0Lm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTpsLnNpemV9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6bC51aS5pbnB1dCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5pbnB1dH0pLG9uQ2hhbmdlOnQud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQtdG9wIix7c3ViOmwuc3ViPz8hMX0pLCFQLnZhbHVlfHxHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpsLnVpLnZpZXdwb3J0KHtjbGFzczpsLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdChSLnZhbHVlLChpLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuR3JvdXAse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpsLnVpLmdyb3VwKHtjbGFzczpsLnVpT3ZlcnJpZGU/Lmdyb3VwfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+Wyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGkscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke2F9LSR7cn1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLmF9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxhLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLFAudmFsdWUmJiFHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6bC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKHcpKCJkcm9wZG93bk1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06UC52YWx1ZX0pKSwxKV0pXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpLHQucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudC1ib3R0b20iLHtzdWI6bC5zdWI/PyExfSldKSxfOjN9LDE2LFsiY2xhc3MiXSkpXTt6KGEsdC5jcmVhdGVWTm9kZSh0LnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGwuc3ViP3QudW5yZWYoUykuU3ViQ29udGVudDp0LnVucmVmKFMpLkNvbnRlbnQpLHQubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOmwudWkuY29udGVudCh7Y2xhc3M6W2wudWlPdmVycmlkZT8uY29udGVudCxvLmNsYXNzXX0pfSx0LnVucmVmKEQpKSx7ZGVmYXVsdDp0LndpdGhDdHgoKGksYSxyLG4pPT57aWYoIWEpcmV0dXJuW2wuZmlsdGVyPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5GaWx0ZXIse2tleTowLG1vZGVsVmFsdWU6UC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+UC52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoQyx0Lm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTpsLnNpemV9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6bC51aS5pbnB1dCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5pbnB1dH0pLG9uQ2hhbmdlOnQud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQtdG9wIix7c3ViOmwuc3ViPz8hMX0pLCFQLnZhbHVlfHxHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpsLnVpLnZpZXdwb3J0KHtjbGFzczpsLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdChSLnZhbHVlLChpLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuR3JvdXAse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpsLnVpLmdyb3VwKHtjbGFzczpsLnVpT3ZlcnJpZGU/Lmdyb3VwfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+Wyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGkscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke2F9LSR7cn1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6cn0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLmF9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxhLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OnJ9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLFAudmFsdWUmJiFHLnZhbHVlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6bC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pfSxbdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKHcpKCJkcm9wZG93bk1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06UC52YWx1ZX0pKSwxKV0pXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpLHQucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudC1ib3R0b20iLHtzdWI6bC5zdWI/PyExfSldO2wuZmlsdGVyP2EoXyh0LnVucmVmKFMpLkZpbHRlcix7bW9kZWxWYWx1ZTpQLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5QLnZhbHVlPWUsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksYSxyKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVZOb2RlKEMsdC5tZXJnZVByb3BzKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6bC5zaXplfSxBLnZhbHVlLHsiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOmwudWkuaW5wdXQoe2NsYXNzOmwudWlPdmVycmlkZT8uaW5wdXR9KSxvbkNoYW5nZTp0LndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV07aShfKEMsdC5tZXJnZVByb3BzKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6bC5zaXplfSxBLnZhbHVlLHsiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOmwudWkuaW5wdXQoe2NsYXNzOmwudWlPdmVycmlkZT8uaW5wdXR9KSxvbkNoYW5nZTooKT0+e319KSxudWxsLGEscikpfSksXzoxfSxyLG4pKTphKCJceDNjIS0tLS1ceDNlIiksTyhlLiRzbG90cywiY29udGVudC10b3AiLHtzdWI6bC5zdWI/PyExfSxudWxsLGEscixuKSwhUC52YWx1ZXx8Ry52YWx1ZT8oYShgPGRpdiByb2xlPSJwcmVzZW50YXRpb24iIGRhdGEtc2xvdD0idmlld3BvcnQiIGNsYXNzPSIke1YobC51aS52aWV3cG9ydCh7Y2xhc3M6bC51aU92ZXJyaWRlPy52aWV3cG9ydH0pKX0iJHtufT5ceDNjIS0tWy0tXHgzZWApLFQoUi52YWx1ZSwoaSxzKT0+e2EoXyh0LnVucmVmKFMpLkdyb3VwLHtrZXk6YGdyb3VwLSR7c31gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6bC51aS5ncm91cCh7Y2xhc3M6bC51aU92ZXJyaWRlPy5ncm91cH0pfSx7ZGVmYXVsdDp0LndpdGhDdHgoKGEscixuLGMpPT57aWYoIXIpcmV0dXJuWyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KGksKGksYSk9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCx7a2V5OmBncm91cC0ke3N9LSR7YX1gfSxbImxhYmVsIj09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuTGFiZWwse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6bC51aS5sYWJlbCh7Y2xhc3M6W2wudWlPdmVycmlkZT8ubGFiZWwsaS51aT8ubGFiZWwsaS5jbGFzc119KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOiJzZXBhcmF0b3IiPT09aS50eXBlPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TZXBhcmF0b3Ise2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmwudWkuc2VwYXJhdG9yKHtjbGFzczpbbC51aU92ZXJyaWRlPy5zZXBhcmF0b3IsaS51aT8uc2VwYXJhdG9yLGkuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTppPy5jaGlsZHJlbj8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihTKS5TdWIse2tleToyLG9wZW46aS5vcGVuLCJkZWZhdWx0LW9wZW4iOmkuZGVmYXVsdE9wZW59LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5TdWJUcmlnZ2VyLHthczoiYnV0dG9uIix0eXBlOiJidXR0b24iLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3J9KX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdC5jcmVhdGVWTm9kZShOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoaT0+W3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6ImNoZWNrYm94Ij09PWkudHlwZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHtrZXk6MywibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soeCx0Lm1lcmdlUHJvcHMoe2tleTo0LHJlZl9mb3I6ITB9LHQudW5yZWYoYikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OnQud2l0aEN0eCgoe2FjdGl2ZTplLC4uLnJ9KT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxyLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApKV0sNjQpKSksMTI4KSldO3IoIlx4M2MhLS1bLS1ceDNlIiksVChpLChpLGEpPT57cigiXHgzYyEtLVstLVx4M2UiKSwibGFiZWwiPT09aS50eXBlP3IoXyh0LnVucmVmKFMpLkxhYmVsLHsiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmwudWkubGFiZWwoe2NsYXNzOltsLnVpT3ZlcnJpZGU/LmxhYmVsLGkudWk/LmxhYmVsLGkuY2xhc3NdfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxsLHIsbyk9PntpZighbClyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKF8odC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwscixvKSl9KSxfOjJ9LG4sYykpOiJzZXBhcmF0b3IiPT09aS50eXBlP3IoXyh0LnVucmVmKFMpLlNlcGFyYXRvcix7ImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6bC51aS5zZXBhcmF0b3Ioe2NsYXNzOltsLnVpT3ZlcnJpZGU/LnNlcGFyYXRvcixpLnVpPy5zZXBhcmF0b3IsaS5jbGFzc119KX0sbnVsbCxuLGMpKTppPy5jaGlsZHJlbj8ubGVuZ3RoP3IoXyh0LnVucmVmKFMpLlN1Yix7b3BlbjppLm9wZW4sImRlZmF1bHQtb3BlbiI6aS5kZWZhdWx0T3Blbn0se2RlZmF1bHQ6dC53aXRoQ3R4KChyLG4scyxjKT0+e2lmKCFuKXJldHVyblt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoUykuU3ViVHJpZ2dlcix7YXM6ImJ1dHRvbiIsdHlwZToiYnV0dG9uIixkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbImRpc2FibGVkIiwidGV4dC12YWx1ZSIsImNsYXNzIl0pLHQuY3JlYXRlVk5vZGUoTix0Lm1lcmdlUHJvcHMoe3N1YjoiIixjbGFzczppLnVpPy5jb250ZW50LHVpOmwudWksInVpLW92ZXJyaWRlIjpsLnVpT3ZlcnJpZGUscG9ydGFsOmwucG9ydGFsLGl0ZW1zOmkuY2hpbGRyZW4sYWxpZ246InN0YXJ0IiwiYWxpZ24tb2Zmc2V0IjotNCwic2lkZS1vZmZzZXQiOjMsImxhYmVsLWtleSI6bC5sYWJlbEtleSwiZGVzY3JpcHRpb24ta2V5IjpsLmRlc2NyaXB0aW9uS2V5LCJjaGVja2VkLWljb24iOmwuY2hlY2tlZEljb24sImxvYWRpbmctaWNvbiI6bC5sb2FkaW5nSWNvbiwiZXh0ZXJuYWwtaWNvbiI6bC5leHRlcm5hbEljb24sc2l6ZTpsLnNpemUsZmlsdGVyOmkuZmlsdGVyLCJmaWx0ZXItZmllbGRzIjppLmZpbHRlckZpZWxkc3x8bC5maWx0ZXJGaWVsZHMsImlnbm9yZS1maWx0ZXIiOmkuaWdub3JlRmlsdGVyPz9sLmlnbm9yZUZpbHRlcn0se3JlZl9mb3I6ITB9LGkuY29udGVudCksdC5jcmVhdGVTbG90cyh7XzoyfSxbdC5yZW5kZXJMaXN0KGdldFByb3h5U2xvdHMoKSwoaSxsKT0+KHtuYW1lOmwsZm46dC53aXRoQ3R4KGk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsbCx0Lm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGkpKV0pfSkpXSksMTA0MCxbImNsYXNzIiwidWkiLCJ1aS1vdmVycmlkZSIsInBvcnRhbCIsIml0ZW1zIiwibGFiZWwta2V5IiwiZGVzY3JpcHRpb24ta2V5IiwiY2hlY2tlZC1pY29uIiwibG9hZGluZy1pY29uIiwiZXh0ZXJuYWwtaWNvbiIsInNpemUiLCJmaWx0ZXIiLCJmaWx0ZXItZmllbGRzIiwiaWdub3JlLWZpbHRlciJdKV07bihfKHQudW5yZWYoUykuU3ViVHJpZ2dlcix7YXM6ImJ1dHRvbiIsdHlwZToiYnV0dG9uIixkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSl9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxsLHIsbyk9PntpZighbClyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKF8odC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwscixvKSl9KSxfOjJ9LHMsYykpLG4oXyhOLHQubWVyZ2VQcm9wcyh7c3ViOiIiLGNsYXNzOmkudWk/LmNvbnRlbnQsdWk6bC51aSwidWktb3ZlcnJpZGUiOmwudWlPdmVycmlkZSxwb3J0YWw6bC5wb3J0YWwsaXRlbXM6aS5jaGlsZHJlbixhbGlnbjoic3RhcnQiLCJhbGlnbi1vZmZzZXQiOi00LCJzaWRlLW9mZnNldCI6MywibGFiZWwta2V5IjpsLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmwuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6bC5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjpsLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjpsLmV4dGVybmFsSWNvbixzaXplOmwuc2l6ZSxmaWx0ZXI6aS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmkuZmlsdGVyRmllbGRzfHxsLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6aS5pZ25vcmVGaWx0ZXI/P2wuaWdub3JlRmlsdGVyfSx7cmVmX2ZvcjohMH0saS5jb250ZW50KSx0LmNyZWF0ZVNsb3RzKHtfOjJ9LFt0LnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLChpLGwpPT4oe25hbWU6bCxmbjp0LndpdGhDdHgoKGksYSxyLG8pPT57aWYoIWEpcmV0dXJuW3QucmVuZGVyU2xvdChlLiRzbG90cyxsLHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0saSkpXTtPKGUuJHNsb3RzLGwsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxpKSxudWxsLGEscixvKX0pfSkpXSkscyxjKSl9KSxfOjJ9LG4sYykpOiJjaGVja2JveCI9PT1pLnR5cGU/cihfKHQudW5yZWYoUykuQ2hlY2tib3hJdGVtLHsibW9kZWwtdmFsdWUiOmkuY2hlY2tlZCxkaXNhYmxlZDppLmRpc2FibGVkLCJ0ZXh0LXZhbHVlIjp0LnVucmVmKGYpKGksby5sYWJlbEtleSksImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmkub25VcGRhdGVDaGVja2VkLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxsLHIsbyk9PntpZighbClyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKF8odC51bnJlZihqKSx7aXRlbTppLGluZGV4OmF9LG51bGwscixvKSl9KSxfOjJ9LG4sYykpOnIoXyh4LHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sdC51bnJlZihiKShpKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6dC53aXRoQ3R4KCh7YWN0aXZlOmUsLi4ucn0sbixzLGMpPT57aWYoIW4pcmV0dXJuW3QuY3JlYXRlVk5vZGUodC51bnJlZihTKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmkuZGlzYWJsZWQsInRleHQtdmFsdWUiOnQudW5yZWYoZikoaSxvLmxhYmVsS2V5KSxvblNlbGVjdDppLm9uU2VsZWN0fSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxyLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwib25TZWxlY3QiXSldO24oXyh0LnVucmVmKFMpLkl0ZW0seyJhcy1jaGlsZCI6IiIsZGlzYWJsZWQ6aS5kaXNhYmxlZCwidGV4dC12YWx1ZSI6dC51bnJlZihmKShpLG8ubGFiZWxLZXkpLG9uU2VsZWN0Omkub25TZWxlY3R9LHtkZWZhdWx0OnQud2l0aEN0eCgobyxuLHMsYyk9PntpZighbilyZXR1cm5bdC5jcmVhdGVWTm9kZSh2LHQubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0scix7ImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmwudWkuaXRlbSh7Y2xhc3M6W2wudWlPdmVycmlkZT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGNvbG9yOmk/LmNvbG9yLGFjdGl2ZTplfSl9KSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoaikse2l0ZW06aSxhY3RpdmU6ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07bihfKHYsdC5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxyLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6bC51aS5pdGVtKHtjbGFzczpbbC51aU92ZXJyaWRlPy5pdGVtLGkudWk/Lml0ZW0saS5jbGFzc10sY29sb3I6aT8uY29sb3IsYWN0aXZlOmV9KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgobCxyLG8sbik9PntpZighcilyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHtpdGVtOmksYWN0aXZlOmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXTtyKF8odC51bnJlZihqKSx7aXRlbTppLGFjdGl2ZTplLGluZGV4OmF9LG51bGwsbyxuKSl9KSxfOjJ9LHMsYykpfSksXzoyfSxzLGMpKX0pLF86Mn0sbixjKSkscigiXHgzYyEtLV0tLVx4M2UiKX0pLHIoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9LHIsbikpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLFAudmFsdWUmJiFHLnZhbHVlPyhhKGA8ZGl2IGRhdGEtc2xvdD0iZW1wdHkiIGNsYXNzPSIke1YobC51aS5lbXB0eSh7Y2xhc3M6bC51aU92ZXJyaWRlPy5lbXB0eX0pKX0iJHtufT5gKSxPKGUuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06UC52YWx1ZX0sKCk9PnthKGAke0wodC51bnJlZih3KSgiZHJvcGRvd25NZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOlAudmFsdWV9KSl9YCl9LGEscixuKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLE8oZS4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsYSxyLG4pLE8oZS4kc2xvdHMsImNvbnRlbnQtYm90dG9tIix7c3ViOmwuc3ViPz8hMX0sbnVsbCxhLHIsbil9KSxfOjN9KSxyLG4pfSksXzozfSxyLG4pKX0pLF86M30sYSkpLGkoIlx4M2MhLS1dLS1ceDNlIil9fX0sJD1OLnNldHVwO04uc2V0dXA9KGUsaSk9Pntjb25zdCBsPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ecm9wZG93bk1lbnVDb250ZW50LnZ1ZSIpLCQ/JChlLGkpOnZvaWQgMH07Y29uc3QgSz17c2xvdHM6e2NvbnRlbnQ6Im1pbi13LTMyIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgb3ZlcmZsb3ctaGlkZGVuIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSBvcmlnaW4tKC0tcmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgZmxleCBmbGV4LWNvbCIsaW5wdXQ6ImJvcmRlci1iIGJvcmRlci1kZWZhdWx0IixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsdmlld3BvcnQ6InJlbGF0aXZlIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IHNjcm9sbC1weS0xIG92ZXJmbG93LXktYXV0byBmbGV4LTEiLGFycm93OiJmaWxsLWJnIHN0cm9rZS1kZWZhdWx0Iixncm91cDoicC0xIGlzb2xhdGUiLGxhYmVsOiJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIixzZXBhcmF0b3I6Ii1teC0xIG15LTEgaC1weCBiZy1ib3JkZXIiLGl0ZW06Imdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IixpdGVtTGVhZGluZ0ljb246InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtVHJhaWxpbmc6Im1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtVHJhaWxpbmdLYmRzOiJoaWRkZW4gbGc6aW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNocmluay0wIixpdGVtVHJhaWxpbmdLYmRzU2l6ZToiIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgdGV4dC1zdGFydCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQiLGl0ZW1MYWJlbEV4dGVybmFsSWNvbjoiaW5saW5lLWJsb2NrIHNpemUtMyBhbGlnbi10b3AgdGV4dC1kaW1tZWQifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LGFjdGl2ZTp7dHJ1ZTp7aXRlbToidGV4dC1oaWdobGlnaHRlZCBiZWZvcmU6YmctZWxldmF0ZWQiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1kZWZhdWx0In0sZmFsc2U6e2l0ZW06WyJ0ZXh0LWRlZmF1bHQgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWhpZ2hsaWdodGVkIGRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6YmctZWxldmF0ZWQvNTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLWVsZXZhdGVkLzUwIiwidHJhbnNpdGlvbi1jb2xvcnMgYmVmb3JlOnRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdJY29uOlsidGV4dC1kaW1tZWQgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWRlZmF1bHQgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXX19LGxvYWRpbmc6e3RydWU6e2l0ZW1MZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHNpemU6e3hzOntsYWJlbDoicC0xIHRleHQteHMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixlbXB0eToicC0yIHRleHQteHMiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToic20ifSxzbTp7bGFiZWw6InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC14cyBnYXAtMS41IixlbXB0eToicC0yLjUgdGV4dC14cyIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJzbSJ9LG1kOntsYWJlbDoicC0xLjUgdGV4dC1zbSBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGVtcHR5OiJwLTIuNSB0ZXh0LXNtIixpdGVtTGVhZGluZ0ljb246InNpemUtNSIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6Im1kIn0sbGc6e2xhYmVsOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGVtcHR5OiJwLTMgdGV4dC1zbSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0xIixpdGVtVHJhaWxpbmdLYmRzU2l6ZToibWQifSx4bDp7bGFiZWw6InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGVtcHR5OiJwLTMgdGV4dC1iYXNlIixpdGVtTGVhZGluZ0ljb246InNpemUtNiIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS02IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6ImxnIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLGFjdGl2ZTohMSxjbGFzczp7aXRlbToidGV4dC1wcmltYXJ5IGRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1wcmltYXJ5IGRhdGEtaGlnaGxpZ2h0ZWQ6YmVmb3JlOmJnLXByaW1hcnkvMTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLXByaW1hcnkvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1wcmltYXJ5Lzc1IGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1wcmltYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LXNlY29uZGFyeSBkYXRhLWhpZ2hsaWdodGVkOnRleHQtc2Vjb25kYXJ5IGRhdGEtaGlnaGxpZ2h0ZWQ6YmVmb3JlOmJnLXNlY29uZGFyeS8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6Ymctc2Vjb25kYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5Lzc1IGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1zZWNvbmRhcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zZWNvbmRhcnkifX0se2NvbG9yOiJzdWNjZXNzIixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtc3VjY2VzcyBkYXRhLWhpZ2hsaWdodGVkOnRleHQtc3VjY2VzcyBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1zdWNjZXNzLzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1zdWNjZXNzLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc3VjY2Vzcy83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtc3VjY2VzcyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtaW5mbyBkYXRhLWhpZ2hsaWdodGVkOnRleHQtaW5mbyBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1pbmZvLzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1pbmZvLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtaW5mby83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtaW5mbyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtd2FybmluZyBkYXRhLWhpZ2hsaWdodGVkOnRleHQtd2FybmluZyBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy13YXJuaW5nLzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy13YXJuaW5nLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtd2FybmluZy83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtd2FybmluZyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXdhcm5pbmcifX0se2NvbG9yOiJlcnJvciIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LWVycm9yIGRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1lcnJvciBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1lcnJvci8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctZXJyb3IvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1lcnJvci83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtZXJyb3IgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1lcnJvciJ9fSx7Y29sb3I6InByaW1hcnkiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1wcmltYXJ5IGJlZm9yZTpiZy1wcmltYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LXNlY29uZGFyeSBiZWZvcmU6Ymctc2Vjb25kYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LXN1Y2Nlc3MgYmVmb3JlOmJnLXN1Y2Nlc3MvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LWluZm8gYmVmb3JlOmJnLWluZm8vMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsYWN0aXZlOiEwLGNsYXNzOntpdGVtOiJ0ZXh0LXdhcm5pbmcgYmVmb3JlOmJnLXdhcm5pbmcvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1lcnJvciBiZWZvcmU6YmctZXJyb3IvMTAiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1lcnJvciJ9fV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCJ9fSxGPXtfX25hbWU6IlVEcm9wZG93bk1lbnUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnQubWVyZ2VNb2RlbHMoe3NpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXh0ZXJuYWxJY29uOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9LGRlc2NyaXB0aW9uS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGVzY3JpcHRpb24ifSxmaWx0ZXI6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxmaWx0ZXJGaWVsZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGlnbm9yZUZpbHRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSx7c2VhcmNoVGVybTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2VhcmNoVGVybU1vZGlmaWVyczp7fX0pLGVtaXRzOnQubWVyZ2VNb2RlbHMoWyJ1cGRhdGU6b3BlbiJdLFsidXBkYXRlOnNlYXJjaFRlcm0iXSksc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYz1uLGQ9cyx1PXQudXNlU2xvdHMoKSxtPXQudXNlTW9kZWwobiwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KSxwPWkoKSxmPWwoImRyb3Bkb3duTWVudSIsYyksZz1hKHIoYywiZGVmYXVsdE9wZW4iLCJvcGVuIiwibW9kYWwiKSxkKSx4PXQudG9SZWYoKCk9PmUoYy5jb250ZW50LHtzaWRlOiJib3R0b20iLHNpZGVPZmZzZXQ6OCxjb2xsaXNpb25QYWRkaW5nOjh9KSksYj10LnRvUmVmKCgpPT5lKGMuYXJyb3cse3JvdW5kZWQ6ITB9KSksZ2V0UHJveHlTbG90cz0oKT0+aCh1LFsiZGVmYXVsdCJdKSx2PXQuY29tcHV0ZWQoKCk9Pm8oe2V4dGVuZDpvKEspLC4uLnAudWk/LmRyb3Bkb3duTWVudXx8e319KSh7c2l6ZTpjLnNpemV9KSk7cmV0dXJuKGUsaSxsLGEpPT57aShfKHQudW5yZWYodyksdC5tZXJnZVByb3BzKHQudW5yZWYoZyksYSkse2RlZmF1bHQ6dC53aXRoQ3R4KCh7b3BlbjppfSxsLGEscik9PntpZighbClyZXR1cm5bdS5kZWZhdWx0Pyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZih5KSx7a2V5OjAsImFzLWNoaWxkIjoiIixjbGFzczpjLmNsYXNzLGRpc2FibGVkOm4uZGlzYWJsZWR9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse29wZW46aX0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuY3JlYXRlVk5vZGUoTix0Lm1lcmdlUHJvcHMoeyJzZWFyY2gtdGVybSI6bS52YWx1ZSwib25VcGRhdGU6c2VhcmNoVGVybSI6ZT0+bS52YWx1ZT1lLGNsYXNzOnYudmFsdWUuY29udGVudCh7Y2xhc3M6WyF1LmRlZmF1bHQmJmMuY2xhc3MsdC51bnJlZihmKT8uY29udGVudF19KSx1aTp2LnZhbHVlLCJ1aS1vdmVycmlkZSI6dC51bnJlZihmKX0seC52YWx1ZSx7aXRlbXM6bi5pdGVtcyxwb3J0YWw6bi5wb3J0YWwsImxhYmVsLWtleSI6bi5sYWJlbEtleSwiZGVzY3JpcHRpb24ta2V5IjpuLmRlc2NyaXB0aW9uS2V5LCJjaGVja2VkLWljb24iOm4uY2hlY2tlZEljb24sImxvYWRpbmctaWNvbiI6bi5sb2FkaW5nSWNvbiwiZXh0ZXJuYWwtaWNvbiI6bi5leHRlcm5hbEljb24sc2l6ZTpuLnNpemUsZmlsdGVyOm4uZmlsdGVyLCJmaWx0ZXItZmllbGRzIjpuLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6bi5pZ25vcmVGaWx0ZXJ9KSx0LmNyZWF0ZVNsb3RzKHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W24uYXJyb3c/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKGspLHQubWVyZ2VQcm9wcyh7a2V5OjB9LGIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6di52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZihmKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoyfSxbdC5yZW5kZXJMaXN0KGdldFByb3h5U2xvdHMoKSwoaSxsKT0+KHtuYW1lOmwsZm46dC53aXRoQ3R4KGk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsbCxpKV0pfSkpXSksMTA0MCxbInNlYXJjaC10ZXJtIiwib25VcGRhdGU6c2VhcmNoVGVybSIsImNsYXNzIiwidWkiLCJ1aS1vdmVycmlkZSIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWwta2V5IiwiZGVzY3JpcHRpb24ta2V5IiwiY2hlY2tlZC1pY29uIiwibG9hZGluZy1pY29uIiwiZXh0ZXJuYWwtaWNvbiIsInNpemUiLCJmaWx0ZXIiLCJmaWx0ZXItZmllbGRzIiwiaWdub3JlLWZpbHRlciJdKV07dS5kZWZhdWx0P2woXyh0LnVucmVmKHkpLHsiYXMtY2hpbGQiOiIiLGNsYXNzOmMuY2xhc3MsZGlzYWJsZWQ6bi5kaXNhYmxlZH0se2RlZmF1bHQ6dC53aXRoQ3R4KChsLGEscixvKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOml9KV07TyhlLiRzbG90cywiZGVmYXVsdCIse29wZW46aX0sbnVsbCxhLHIsbyl9KSxfOjJ9LGEscikpOmwoIlx4M2MhLS0tLVx4M2UiKSxsKF8oTix0Lm1lcmdlUHJvcHMoeyJzZWFyY2gtdGVybSI6bS52YWx1ZSwib25VcGRhdGU6c2VhcmNoVGVybSI6ZT0+bS52YWx1ZT1lLGNsYXNzOnYudmFsdWUuY29udGVudCh7Y2xhc3M6WyF1LmRlZmF1bHQmJmMuY2xhc3MsdC51bnJlZihmKT8uY29udGVudF19KSx1aTp2LnZhbHVlLCJ1aS1vdmVycmlkZSI6dC51bnJlZihmKX0seC52YWx1ZSx7aXRlbXM6bi5pdGVtcyxwb3J0YWw6bi5wb3J0YWwsImxhYmVsLWtleSI6bi5sYWJlbEtleSwiZGVzY3JpcHRpb24ta2V5IjpuLmRlc2NyaXB0aW9uS2V5LCJjaGVja2VkLWljb24iOm4uY2hlY2tlZEljb24sImxvYWRpbmctaWNvbiI6bi5sb2FkaW5nSWNvbiwiZXh0ZXJuYWwtaWNvbiI6bi5leHRlcm5hbEljb24sc2l6ZTpuLnNpemUsZmlsdGVyOm4uZmlsdGVyLCJmaWx0ZXItZmllbGRzIjpuLmZpbHRlckZpZWxkcywiaWdub3JlLWZpbHRlciI6bi5pZ25vcmVGaWx0ZXJ9KSx0LmNyZWF0ZVNsb3RzKHtkZWZhdWx0OnQud2l0aEN0eCgoZSxpLGwsYSk9PntpZighaSlyZXR1cm5bbi5hcnJvdz8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoayksdC5tZXJnZVByb3BzKHtrZXk6MH0sYi52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczp2LnZhbHVlLmFycm93KHtjbGFzczp0LnVucmVmKGYpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO24uYXJyb3c/aShfKHQudW5yZWYoayksdC5tZXJnZVByb3BzKGIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6di52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZihmKT8uYXJyb3d9KX0pLG51bGwsbCxhKSk6aSgiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxbdC5yZW5kZXJMaXN0KGdldFByb3h5U2xvdHMoKSwoaSxsKT0+KHtuYW1lOmwsZm46dC53aXRoQ3R4KChpLGEscixvKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsbCxpKV07TyhlLiRzbG90cyxsLGksbnVsbCxhLHIsbyl9KX0pKV0pLGEscikpfSksXzozfSxsKSl9fX0scT1GLnNldHVwO0Yuc2V0dXA9KGUsaSk9Pntjb25zdCBsPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ecm9wZG93bk1lbnUudnVlIikscT9xKGUsaSk6dm9pZCAwfTtleHBvcnR7RiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd25NZW51LUNlY1BjZUphLm1qcy5tYXAK", "chunks/build/Form-CeNf1I5q.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHIsdiBhcyB0LHQgYXMgYSxhRSBhcyBuLGFGIGFzIG8sQSBhcyBzLEIgYXMgaSxhRyBhcyB1LGFIIGFzIGwsYUkgYXMgbX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2sgYXMgZCxnIGFzIGN9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjbGFzcyBGb3JtVmFsaWRhdGlvbkV4Y2VwdGlvbiBleHRlbmRzIEVycm9ye2Zvcm1JZDtlcnJvcnM7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigiRm9ybSB2YWxpZGF0aW9uIGV4Y2VwdGlvbiIpLHRoaXMuZm9ybUlkPWUsdGhpcy5lcnJvcnM9cixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxGb3JtVmFsaWRhdGlvbkV4Y2VwdGlvbi5wcm90b3R5cGUpfX1jb25zdCBmPXtiYXNlOiIifSxwPXtfX25hbWU6IlVGb3JtIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7aWQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxzY2hlbWE6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3RhdGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFsaWRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT246e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+WyJpbnB1dCIsImJsdXIiLCJjaGFuZ2UiXX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YWxpZGF0ZU9uSW5wdXREZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LHRyYW5zZm9ybTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiEwfSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9uU3VibWl0Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzdWJtaXQiLCJlcnJvciJdLHNldHVwKHAse2V4cG9zZTp2LGVtaXQ6eX0pe2NvbnN0IGc9cCxoPXksYj1lKCksRT1yKCJmb3JtIixnKSx3PXQuY29tcHV0ZWQoKCk9PmEoe2V4dGVuZDphKGYpLC4uLmIudWk/LmZvcm18fHt9fSkpLEY9Zy5pZD8/dC51c2VJZCgpLHg9dC51c2VUZW1wbGF0ZVJlZigiZm9ybVJlZiIpLFM9bShgZm9ybS0ke0Z9YCkscT0hMD09PWcubmVzdGVkJiZ0LmluamVjdChuLHZvaWQgMCksXz0hMD09PWcubmVzdGVkP3QuaW5qZWN0KG8sdm9pZCAwKTp2b2lkIDAsaj10LmNvbXB1dGVkKCgpPT57cmV0dXJuIF8/LnZhbHVlP2cubmFtZT8oZT1fLnZhbHVlLChyPWcubmFtZSk/ci5zcGxpdCgiLiIpLnJlZHVjZSgoZSxyKT0+ZT8uW3JdLGUpOmUpOl8udmFsdWU6Zy5zdGF0ZTt2YXIgZSxyfSk7dC5wcm92aWRlKG4sUyksdC5wcm92aWRlKG8saik7Y29uc3QgST10LnJlZihuZXcgTWFwKSxSPXQucmVmKFtdKTt0LnByb3ZpZGUocyxSKTtjb25zdCBOPXQucmVmKHt9KTt0LnByb3ZpZGUoaSxOKTtjb25zdCBPPXQucmVhY3RpdmUobmV3IFNldCksQT10LnJlYWN0aXZlKG5ldyBTZXQpLFQ9dC5yZWFjdGl2ZShuZXcgU2V0KTtmdW5jdGlvbiByZXNvbHZlRXJyb3JJZHMoZSl7cmV0dXJuIGUubWFwKGU9Pih7Li4uZSxpZDplPy5uYW1lP04udmFsdWVbZS5uYW1lXT8uaWQ6dm9pZCAwfSkpfWNvbnN0IFY9dC5yZWYobnVsbCk7YXN5bmMgZnVuY3Rpb24gZ2V0RXJyb3JzKCl7bGV0IGU9Zy52YWxpZGF0ZT9hd2FpdCBnLnZhbGlkYXRlKGoudmFsdWUpPz9bXTpbXTtpZihnLnNjaGVtYSl7Y29uc3R7ZXJyb3JzOnIscmVzdWx0OnR9PWF3YWl0IGZ1bmN0aW9uKGUscil7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIn5zdGFuZGFyZCJpbiBlfShyKSlyZXR1cm4gYXN5bmMgZnVuY3Rpb24oZSxyKXtjb25zdCB0PWF3YWl0IHJbIn5zdGFuZGFyZCJdLnZhbGlkYXRlKGUpO3JldHVybiB0Lmlzc3Vlcz97ZXJyb3JzOnQuaXNzdWVzPy5tYXAoZT0+KHtuYW1lOmUucGF0aD8ubWFwKGU9PiJvYmplY3QiPT10eXBlb2YgZT9lLmtleTplKS5qb2luKCIuIil8fCIiLG1lc3NhZ2U6ZS5tZXNzYWdlfSkpfHxbXSxyZXN1bHQ6bnVsbH06e2Vycm9yczpudWxsLHJlc3VsdDp0LnZhbHVlfX0oZSxyKTtpZihmdW5jdGlvbihlKXtyZXR1cm4ic2NoZW1hImluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvZXJjZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnZhbGlkYXRvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUucmVmaW5lcn0ocikpcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKGUscil7Y29uc3RbdCxhXT1yLnZhbGlkYXRlKGUpO3JldHVybiB0P3tlcnJvcnM6dC5mYWlsdXJlcygpLm1hcChlPT4oe21lc3NhZ2U6ZS5tZXNzYWdlLG5hbWU6ZS5wYXRoLmpvaW4oIi4iKX0pKSxyZXN1bHQ6bnVsbH06e2Vycm9yczpudWxsLHJlc3VsdDphfX0oZSxyKTt0aHJvdyBuZXcgRXJyb3IoIkZvcm0gdmFsaWRhdGlvbiBmYWlsZWQ6IFVuc3VwcG9ydGVkIGZvcm0gc2NoZW1hIil9KGoudmFsdWUsZy5zY2hlbWEpO3I/ZT1lLmNvbmNhdChyKTpWLnZhbHVlPXR9cmV0dXJuIHJlc29sdmVFcnJvcklkcyhlKX1hc3luYyBmdW5jdGlvbiBfdmFsaWRhdGUoZT17c2lsZW50OiExLG5lc3RlZDohMSx0cmFuc2Zvcm06ITF9KXtjb25zdCByPWUubmFtZSYmIUFycmF5LmlzQXJyYXkoZS5uYW1lKT9bZS5uYW1lXTplLm5hbWU7bGV0IHQ9W10sYT1bXTtpZighciYmZS5uZXN0ZWQpe2NvbnN0IHI9QXJyYXkuZnJvbShJLnZhbHVlLnZhbHVlcygpKS5tYXAocj0+YXN5bmMgZnVuY3Rpb24oZSxyKXt0cnl7Y29uc3QgdD1hd2FpdCBlLnZhbGlkYXRlKHsuLi5yLHNpbGVudDohMX0pO3JldHVybntuYW1lOmUubmFtZSxvdXRwdXQ6dH19Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgRm9ybVZhbGlkYXRpb25FeGNlcHRpb24pKXRocm93IHI7cmV0dXJue25hbWU6ZS5uYW1lLGVycm9yOnJ9fX0ocixlKSksbj1hd2FpdCBQcm9taXNlLmFsbChyKTthPW4uZmlsdGVyKGU9PmUuZXJyb3IpLmZsYXRNYXAoZT0+ZS5lcnJvci5lcnJvcnMubWFwKHI9PntyZXR1cm4gdD1yLChhPWUubmFtZSkmJnQubmFtZT97Li4udCxuYW1lOmErIi4iK3QubmFtZX06dDt2YXIgdCxhfSkpLHQ9bi5maWx0ZXIoZT0+dm9pZCAwIT09ZS5vdXRwdXQpfWNvbnN0IG49Wy4uLmF3YWl0IGdldEVycm9ycygpLC4uLmFdO2lmKFIudmFsdWU9cj9mdW5jdGlvbihlLHIpe2NvbnN0IHQ9bmV3IFNldChyKSxhPXIubWFwKGU9Pk4udmFsdWU/LltlXT8ucGF0dGVybikuZmlsdGVyKEJvb2xlYW4pLG1hdGNoZXNOYW1lcz1lPT4hIWUubmFtZSYmKCEhdC5oYXMoZS5uYW1lKXx8YS5zb21lKHI9PnIudGVzdChlLm5hbWUpKSksbj1SLnZhbHVlLmZpbHRlcihlPT4hbWF0Y2hlc05hbWVzKGUpKSxvPWUuZmlsdGVyKG1hdGNoZXNOYW1lcyk7cmV0dXJuWy4uLm4sLi4ub119KG4scik6bixSLnZhbHVlPy5sZW5ndGgpe2lmKGUuc2lsZW50KXJldHVybiExO3Rocm93IG5ldyBGb3JtVmFsaWRhdGlvbkV4Y2VwdGlvbihGLFIudmFsdWUpfXJldHVybiBlLnRyYW5zZm9ybT8odC5mb3JFYWNoKGU9PntlLm5hbWU/ZnVuY3Rpb24oZSxyLHQpe2lmKCFyKXJldHVybiBPYmplY3QuYXNzaWduKGUsdCk7aWYoIWUpcmV0dXJuIGU7Y29uc3QgYT1yLnNwbGl0KCIuIik7bGV0IG49ZTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoLTE7ZSsrKXtjb25zdCByPWFbZV07dm9pZCAwIT09bltyXSYmbnVsbCE9PW5bcl18fChlKzE8YS5sZW5ndGgmJiFOdW1iZXIuaXNOYU4oTnVtYmVyKGFbZSsxXSkpP25bcl09W106bltyXT17fSksbj1uW3JdfW5bYVthLmxlbmd0aC0xXV09dH0oVi52YWx1ZSxlLm5hbWUsZS5vdXRwdXQpOk9iamVjdC5hc3NpZ24oVi52YWx1ZSxlLm91dHB1dCl9KSxWLnZhbHVlPz9qLnZhbHVlKTpqLnZhbHVlfWNvbnN0IFc9dC5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIG9uU3VibWl0V3JhcHBlcihlKXtXLnZhbHVlPWcubG9hZGluZ0F1dG8mJiEwO2NvbnN0IHI9ZTt0cnl7ci5kYXRhPWF3YWl0IF92YWxpZGF0ZSh7bmVzdGVkOiEwLHRyYW5zZm9ybTpnLnRyYW5zZm9ybX0pLGF3YWl0KGcub25TdWJtaXQ/LihyKSksTy5jbGVhcigpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEZvcm1WYWxpZGF0aW9uRXhjZXB0aW9uKSl0aHJvdyBlO2NvbnN0IHQ9ey4uLnIsZXJyb3JzOmUuZXJyb3JzfTtoKCJlcnJvciIsdCl9ZmluYWxseXtXLnZhbHVlPSExfX10LnByb3ZpZGUodSx0LnJlYWRvbmx5KFcpKTtjb25zdCBCPXQuY29tcHV0ZWQoKCk9PmcuZGlzYWJsZWR8fFcudmFsdWUpO2Z1bmN0aW9uIGZpbHRlckZvcm1FcnJvcnMoZSxyKXtyZXR1cm4gcj9lLmZpbHRlcihlPT5lPy5uYW1lPy5zdGFydHNXaXRoKHIrIi4iKSkubWFwKGU9PmZ1bmN0aW9uKGUscil7Y29uc3QgdD1yKyIuIixhPWU/Lm5hbWU/LnN0YXJ0c1dpdGgodCk/ZS5uYW1lLnN1YnN0cmluZyh0Lmxlbmd0aCk6ZS5uYW1lO3JldHVybnsuLi5lLG5hbWU6YX19KGUscikpOmV9ZnVuY3Rpb24gZ2V0Rm9ybUVycm9ycyhlKXtyZXR1cm4gZS5hcGkuZ2V0RXJyb3JzKCkubWFwKHI9PmUubmFtZT97Li4ucixuYW1lOmUubmFtZSsiLiIrci5uYW1lfTpyKX1mdW5jdGlvbiBtYXRjaGVzVGFyZ2V0KGUscil7cmV0dXJuIWV8fCFyfHwoZSBpbnN0YW5jZW9mIFJlZ0V4cD9lLnRlc3Qocik6cj09PWV8fCJzdHJpbmciPT10eXBlb2YgZSYmZS5zdGFydHNXaXRoKHIrIi4iKSl9ZnVuY3Rpb24gZ2V0TmVzdGVkVGFyZ2V0KGUscil7cmV0dXJuIWV8fGUgaW5zdGFuY2VvZiBSZWdFeHA/ZTpyIT09ZT8ic3RyaW5nIj09dHlwZW9mIGUmJmUuc3RhcnRzV2l0aChyKyIuIik/ZS5zdWJzdHJpbmcoci5sZW5ndGgrMSk6ZTp2b2lkIDB9ZnVuY3Rpb24gaXNMb2NhbEVycm9yKGUpe3JldHVybiFlLm5hbWV8fCEhTi52YWx1ZVtlLm5hbWVdfXQucHJvdmlkZShsLHQuY29tcHV0ZWQoKCk9Pih7ZGlzYWJsZWQ6Qi52YWx1ZSx2YWxpZGF0ZU9uSW5wdXREZWxheTpnLnZhbGlkYXRlT25JbnB1dERlbGF5fSkpKTtyZXR1cm4gdih7dmFsaWRhdGU6X3ZhbGlkYXRlLGVycm9yczpSLHNldEVycm9ycyhlLHIpe2NvbnN0IHQ9cmVzb2x2ZUVycm9ySWRzKGUuZmlsdGVyKGlzTG9jYWxFcnJvcikpLGE9W107Zm9yKGNvbnN0IHQgb2YgSS52YWx1ZS52YWx1ZXMoKSlpZihtYXRjaGVzVGFyZ2V0KHIsdC5uYW1lKSl7Y29uc3Qgbj1maWx0ZXJGb3JtRXJyb3JzKGUsdC5uYW1lKTt0LmFwaS5zZXRFcnJvcnMobixnZXROZXN0ZWRUYXJnZXQocix0Lm5hbWV8fCIiKSksYS5wdXNoKC4uLmdldEZvcm1FcnJvcnModCkpfWlmKHIpe2NvbnN0IGU9KG49Ui52YWx1ZSxvPXIsbi5maWx0ZXIoZT0+byBpbnN0YW5jZW9mIFJlZ0V4cD8hKGUubmFtZSYmby50ZXN0KGUubmFtZSkpOiFlLm5hbWV8fGUubmFtZSE9PW8pKTtSLnZhbHVlPVsuLi5lLC4uLnQsLi4uYV19ZWxzZSBSLnZhbHVlPVsuLi50LC4uLmFdO3ZhciBuLG99LGFzeW5jIHN1Ym1pdCgpe3gudmFsdWUgaW5zdGFuY2VvZiBIVE1MRm9ybUVsZW1lbnQmJiExPT09eC52YWx1ZS5yZXBvcnRWYWxpZGl0eSgpfHxhd2FpdCBvblN1Ym1pdFdyYXBwZXIobmV3IEV2ZW50KCJzdWJtaXQiKSl9LGdldEVycm9yczplPT5lP1IudmFsdWUuZmlsdGVyKHI9PmUgaW5zdGFuY2VvZiBSZWdFeHA/ci5uYW1lJiZlLnRlc3Qoci5uYW1lKTpyLm5hbWU9PT1lKTpSLnZhbHVlLGNsZWFyKGUpe2NvbnN0IHI9ZT9SLnZhbHVlLmZpbHRlcihyPT5pc0xvY2FsRXJyb3IocikmJihlIGluc3RhbmNlb2YgUmVnRXhwPyEoci5uYW1lJiZlLnRlc3Qoci5uYW1lKSk6ci5uYW1lIT09ZSkpOltdLHQ9W107Zm9yKGNvbnN0IHIgb2YgSS52YWx1ZS52YWx1ZXMoKSltYXRjaGVzVGFyZ2V0KGUsci5uYW1lKSYmci5hcGkuY2xlYXIoKSx0LnB1c2goLi4uZ2V0Rm9ybUVycm9ycyhyKSk7Ui52YWx1ZT1bLi4uciwuLi50XX0sZGlzYWJsZWQ6Qixsb2FkaW5nOlcsZGlydHk6dC5jb21wdXRlZCgoKT0+ISFPLnNpemUpLGRpcnR5RmllbGRzOnQucmVhZG9ubHkoTyksYmx1cnJlZEZpZWxkczp0LnJlYWRvbmx5KFQpLHRvdWNoZWRGaWVsZHM6dC5yZWFkb25seShBKX0pLChlLHIsYSxuKT0+e2Qocix0LmNyZWF0ZVZOb2RlKHQucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodC51bnJlZihxKT8iZGl2IjoiZm9ybSIpLHQubWVyZ2VQcm9wcyh7aWQ6dC51bnJlZihGKSxyZWZfa2V5OiJmb3JtUmVmIixyZWY6eCxjbGFzczp3LnZhbHVlKHtjbGFzczpbdC51bnJlZihFKT8uYmFzZSxnLmNsYXNzXX0pLG9uU3VibWl0Om9uU3VibWl0V3JhcHBlcn0sbikse2RlZmF1bHQ6dC53aXRoQ3R4KChyLGEsbixvKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtlcnJvcnM6Ui52YWx1ZSxsb2FkaW5nOlcudmFsdWV9KV07YyhlLiRzbG90cywiZGVmYXVsdCIse2Vycm9yczpSLnZhbHVlLGxvYWRpbmc6Vy52YWx1ZX0sbnVsbCxhLG4sbyl9KSxfOjN9KSxhKX19fSx2PXAuc2V0dXA7cC5zZXR1cD0oZSxyKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Zvcm0udnVlIiksdj92KGUscik6dm9pZCAwfTtleHBvcnR7cCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9ybS1DZU5mMUk1cS5tanMubWFwCg==", "chunks/build/FormField-CVLIzRLY.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHIsZSBhcyB0LHQgYXMgYSxBIGFzIGwsQiBhcyBvLEMgYXMgaSxEIGFzIHMsUCBhcyBufWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7TCBhcyBkfWZyb20iLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydHtmIGFzIHAsaiBhcyB1LGcgYXMgYyxxIGFzIHYseiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgZj17c2xvdHM6e3Jvb3Q6IiIsd3JhcHBlcjoiIixsYWJlbFdyYXBwZXI6ImZsZXggY29udGVudC1jZW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMSIsbGFiZWw6ImJsb2NrIGZvbnQtbWVkaXVtIHRleHQtZGVmYXVsdCIsY29udGFpbmVyOiJyZWxhdGl2ZSIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQiLGVycm9yOiJtdC0yIHRleHQtZXJyb3IiLGhpbnQ6InRleHQtbXV0ZWQiLGhlbHA6Im10LTIgdGV4dC1tdXRlZCJ9LHZhcmlhbnRzOntzaXplOnt4czp7cm9vdDoidGV4dC14cyJ9LHNtOntyb290OiJ0ZXh0LXhzIn0sbWQ6e3Jvb3Q6InRleHQtc20ifSxsZzp7cm9vdDoidGV4dC1zbSJ9LHhsOntyb290OiJ0ZXh0LWJhc2UifX0scmVxdWlyZWQ6e3RydWU6e2xhYmVsOiJhZnRlcjpjb250ZW50LVsnKiddIGFmdGVyOm1zLTAuNSBhZnRlcjp0ZXh0LWVycm9yIn19LG9yaWVudGF0aW9uOnt2ZXJ0aWNhbDp7Y29udGFpbmVyOiJtdC0xIn0saG9yaXpvbnRhbDp7cm9vdDoiZmxleCBqdXN0aWZ5LWJldHdlZW4gcGxhY2UtaXRlbXMtYmFzZWxpbmUgZ2FwLTIifX19LGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCJ9fSxoPXtfX25hbWU6IlVGb3JtRmllbGQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3JQYXR0ZXJuOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoZWxwOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3I6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0saGludDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZWFnZXJWYWxpZGF0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT25JbnB1dERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoaCl7Y29uc3QgYj1oLCQ9ZS51c2VTbG90cygpLHg9cigpLHk9dCgiZm9ybUZpZWxkIixiKSxnPWUuY29tcHV0ZWQoKCk9PmEoe2V4dGVuZDphKGYpLC4uLngudWk/LmZvcm1GaWVsZHx8e319KSh7c2l6ZTpiLnNpemUscmVxdWlyZWQ6Yi5yZXF1aXJlZCxvcmllbnRhdGlvbjpiLm9yaWVudGF0aW9ufSkpLFM9ZS5pbmplY3QobCxudWxsKSxxPWUuY29tcHV0ZWQoKCk9PmIuZXJyb3J8fFM/LnZhbHVlPy5maW5kKGU9PmUubmFtZT09PWIubmFtZXx8Yi5lcnJvclBhdHRlcm4mJmUubmFtZT8ubWF0Y2goYi5lcnJvclBhdHRlcm4pKT8ubWVzc2FnZSksVj1lLnJlZihlLnVzZUlkKCkpLGs9Vi52YWx1ZSxCPWUuaW5qZWN0KG8sdm9pZCAwKTtyZXR1cm4gZS53YXRjaChWLCgpPT57QiYmYi5uYW1lJiYoQi52YWx1ZVtiLm5hbWVdPXtpZDpWLnZhbHVlLHBhdHRlcm46Yi5lcnJvclBhdHRlcm59KX0se2ltbWVkaWF0ZTohMH0pLGUucHJvdmlkZShpLFYpLGUucHJvdmlkZShzLGUuY29tcHV0ZWQoKCk9Pih7ZXJyb3I6cS52YWx1ZSxuYW1lOmIubmFtZSxzaXplOmIuc2l6ZSxlYWdlclZhbGlkYXRpb246Yi5lYWdlclZhbGlkYXRpb24sdmFsaWRhdGVPbklucHV0RGVsYXk6Yi52YWxpZGF0ZU9uSW5wdXREZWxheSxlcnJvclBhdHRlcm46Yi5lcnJvclBhdHRlcm4saGludDpiLmhpbnQsZGVzY3JpcHRpb246Yi5kZXNjcmlwdGlvbixoZWxwOmIuaGVscCxhcmlhSWQ6a30pKSksKHIsdCxhLGwpPT57dChwKGUudW5yZWYobiksZS5tZXJnZVByb3BzKHthczpoLmFzLCJkYXRhLW9yaWVudGF0aW9uIjpoLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpnLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHkpPy5yb290LGIuY2xhc3NdfSl9LGwpLHtkZWZhdWx0OmUud2l0aEN0eCgodCxhLGwsbyk9PntpZighYSlyZXR1cm5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOmcudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pfSxbaC5sYWJlbHx8JC5sYWJlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWxXcmFwcGVyIixjbGFzczpnLnZhbHVlLmxhYmVsV3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWxXcmFwcGVyfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoZCkse2ZvcjpWLnZhbHVlLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Zy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHIuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmgubGFiZWx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaC5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pLGguaGludHx8JC5oaW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCxpZDpgJHtlLnVucmVmKGspfS1oaW50YCwiZGF0YS1zbG90IjoiaGludCIsY2xhc3M6Zy52YWx1ZS5oaW50KHtjbGFzczplLnVucmVmKHkpPy5oaW50fSl9LFtlLnJlbmRlclNsb3Qoci4kc2xvdHMsImhpbnQiLHtoaW50OmguaGludH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmhpbnQpLDEpXSldLDEwLFsiaWQiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxoLmRlc2NyaXB0aW9ufHwkLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MSxpZDpgJHtlLnVucmVmKGspfS1kZXNjcmlwdGlvbmAsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpnLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pfSxbZS5yZW5kZXJTbG90KHIuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmguZGVzY3JpcHRpb259LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaC5kZXNjcmlwdGlvbiksMSldKV0sMTAsWyJpZCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczpbKGgubGFiZWx8fCEhJC5sYWJlbHx8aC5kZXNjcmlwdGlvbnx8ISEkLmRlc2NyaXB0aW9uKSYmZy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoeSk/LmNvbnRhaW5lcn0pXX0sW2UucmVuZGVyU2xvdChyLiRzbG90cywiZGVmYXVsdCIse2Vycm9yOnEudmFsdWV9KSwhMSE9PWIuZXJyb3ImJigic3RyaW5nIj09dHlwZW9mIHEudmFsdWUmJnEudmFsdWV8fCQuZXJyb3IpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGlkOmAke2UudW5yZWYoayl9LWVycm9yYCwiZGF0YS1zbG90IjoiZXJyb3IiLGNsYXNzOmcudmFsdWUuZXJyb3Ioe2NsYXNzOmUudW5yZWYoeSk/LmVycm9yfSl9LFtlLnJlbmRlclNsb3Qoci4kc2xvdHMsImVycm9yIix7ZXJyb3I6cS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhxLnZhbHVlKSwxKV0pXSwxMCxbImlkIl0pKTpoLmhlbHB8fCQuaGVscD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxpZDpgJHtlLnVucmVmKGspfS1oZWxwYCwiZGF0YS1zbG90IjoiaGVscCIsY2xhc3M6Zy52YWx1ZS5oZWxwKHtjbGFzczplLnVucmVmKHkpPy5oZWxwfSl9LFtlLnJlbmRlclNsb3Qoci4kc2xvdHMsImhlbHAiLHtoZWxwOmguaGVscH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmhlbHApLDEpXSldLDEwLFsiaWQiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildO2EoYDxkaXYgZGF0YS1zbG90PSJ3cmFwcGVyIiBjbGFzcz0iJHt1KGcudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pKX0iJHtvfT5gKSxoLmxhYmVsfHwkLmxhYmVsPyhhKGA8ZGl2IGRhdGEtc2xvdD0ibGFiZWxXcmFwcGVyIiBjbGFzcz0iJHt1KGcudmFsdWUubGFiZWxXcmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy5sYWJlbFdyYXBwZXJ9KSl9IiR7b30+YCksYShwKGUudW5yZWYoZCkse2ZvcjpWLnZhbHVlLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Zy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbCxvKT0+e2lmKCFhKXJldHVybltlLnJlbmRlclNsb3Qoci4kc2xvdHMsImxhYmVsIix7bGFiZWw6aC5sYWJlbH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmxhYmVsKSwxKV0pXTtjKHIuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmgubGFiZWx9LCgpPT57YShgJHt2KGgubGFiZWwpfWApfSxhLGwsbyl9KSxfOjN9LGwsbykpLGguaGludHx8JC5oaW50PyhhKGA8c3BhbiR7bSgiaWQiLGAke2UudW5yZWYoayl9LWhpbnRgKX0gZGF0YS1zbG90PSJoaW50IiBjbGFzcz0iJHt1KGcudmFsdWUuaGludCh7Y2xhc3M6ZS51bnJlZih5KT8uaGludH0pKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJoaW50Iix7aGludDpoLmhpbnR9LCgpPT57YShgJHt2KGguaGludCl9YCl9LGEsbCxvKSxhKCI8L3NwYW4+IikpOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGguZGVzY3JpcHRpb258fCQuZGVzY3JpcHRpb24/KGEoYDxwJHttKCJpZCIsYCR7ZS51bnJlZihrKX0tZGVzY3JpcHRpb25gKX0gZGF0YS1zbG90PSJkZXNjcmlwdGlvbiIgY2xhc3M9IiR7dShnLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmguZGVzY3JpcHRpb259LCgpPT57YShgJHt2KGguZGVzY3JpcHRpb24pfWApfSxhLGwsbyksYSgiPC9wPiIpKTphKCJceDNjIS0tLS1ceDNlIiksYShgPC9kaXY+PGRpdiBjbGFzcz0iJHt1KFsoaC5sYWJlbHx8ISEkLmxhYmVsfHxoLmRlc2NyaXB0aW9ufHwhISQuZGVzY3JpcHRpb24pJiZnLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZih5KT8uY29udGFpbmVyfSldKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJkZWZhdWx0Iix7ZXJyb3I6cS52YWx1ZX0sbnVsbCxhLGwsbyksITEhPT1iLmVycm9yJiYoInN0cmluZyI9PXR5cGVvZiBxLnZhbHVlJiZxLnZhbHVlfHwkLmVycm9yKT8oYShgPGRpdiR7bSgiaWQiLGAke2UudW5yZWYoayl9LWVycm9yYCl9IGRhdGEtc2xvdD0iZXJyb3IiIGNsYXNzPSIke3UoZy52YWx1ZS5lcnJvcih7Y2xhc3M6ZS51bnJlZih5KT8uZXJyb3J9KSl9IiR7b30+YCksYyhyLiRzbG90cywiZXJyb3IiLHtlcnJvcjpxLnZhbHVlfSwoKT0+e2EoYCR7dihxLnZhbHVlKX1gKX0sYSxsLG8pLGEoIjwvZGl2PiIpKTpoLmhlbHB8fCQuaGVscD8oYShgPGRpdiR7bSgiaWQiLGAke2UudW5yZWYoayl9LWhlbHBgKX0gZGF0YS1zbG90PSJoZWxwIiBjbGFzcz0iJHt1KGcudmFsdWUuaGVscCh7Y2xhc3M6ZS51bnJlZih5KT8uaGVscH0pKX0iJHtvfT5gKSxjKHIuJHNsb3RzLCJoZWxwIix7aGVscDpoLmhlbHB9LCgpPT57YShgJHt2KGguaGVscCl9YCl9LGEsbCxvKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoIjwvZGl2PiIpfSksXzozfSxhKSl9fX0sYj1oLnNldHVwO2guc2V0dXA9KHIsdCk9Pntjb25zdCBhPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihhLm1vZHVsZXN8fChhLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Gb3JtRmllbGQudnVlIiksYj9iKHIsdCk6dm9pZCAwfTtleHBvcnR7aCBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9ybUZpZWxkLUNWTEl6UkxZLm1qcy5tYXAK", "chunks/build/Input-DGyvQQRd.mjs": "aW1wb3J0e3YgYXMgZSxTIGFzIGksZCBhcyBhLGUgYXMgbixIIGFzIGwscSBhcyByLHMgYXMgdCx0IGFzIHMsYiBhcyBvLGcgYXMgdSxQIGFzIGQsUiBhcyBnfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7ZiBhcyBjLG8gYXMgcCxnIGFzIGYsaiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3Qgdj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsYmFzZTpbInctZnVsbCByb3VuZGVkLW1kIGJvcmRlci0wIGFwcGVhcmFuY2Utbm9uZSBwbGFjZWhvbGRlcjp0ZXh0LWRpbW1lZCBmb2N1czpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxlYWRpbmc6ImFic29sdXRlIGluc2V0LXktMCBzdGFydC0wIGZsZXggaXRlbXMtY2VudGVyIixsZWFkaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIGVuZC0wIGZsZXggaXRlbXMtY2VudGVyIix0cmFpbGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6e3Jvb3Q6Imdyb3VwIGhhcy1mb2N1cy12aXNpYmxlOnotWzFdIixiYXNlOiJncm91cC1ub3Qtb25seTpncm91cC1maXJzdDpyb3VuZGVkLWUtbm9uZSBncm91cC1ub3Qtb25seTpncm91cC1sYXN0OnJvdW5kZWQtcy1ub25lIGdyb3VwLW5vdC1sYXN0Omdyb3VwLW5vdC1maXJzdDpyb3VuZGVkLW5vbmUifSx2ZXJ0aWNhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtYi1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC10LW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9fSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQtc20vNCBnYXAtMSIsbGVhZGluZzoicHMtMiIsdHJhaWxpbmc6InBlLTIiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbS80IGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxtZDp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LWJhc2UvNSBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0sbGc6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UvNSBnYXAtMiIsbGVhZGluZzoicHMtMyIsdHJhaWxpbmc6InBlLTMiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02In19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCIsc29mdDoidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZC81MCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1lbGV2YXRlZC81MCIsc3VidGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixnaG9zdDoidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50Iixub25lOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50In0sY29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LGxlYWRpbmc6e3RydWU6IiJ9LHRyYWlsaW5nOnt0cnVlOiIifSxsb2FkaW5nOnt0cnVlOiIifSxoaWdobGlnaHQ6e3RydWU6IiJ9LGZpeGVkOntmYWxzZToiIn0sdHlwZTp7ZmlsZToiZmlsZTptZS0xLjUgZmlsZTpmb250LW1lZGl1bSBmaWxlOnRleHQtbXV0ZWQgZmlsZTpvdXRsaW5lLW5vbmUifX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIn19LGI9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVSW5wdXQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidGV4dCJ9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9jb21wbGV0ZTp7dHlwZTpbU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDoib2ZmIn0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1c0RlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmaXhlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImJsdXIiLCJjaGFuZ2UiXSxzZXR1cChiLHtleHBvc2U6aCxlbWl0Onl9KXtjb25zdCB4PWIsej15LEk9ZS51c2VTbG90cygpLHE9aSh4LCJtb2RlbFZhbHVlIix6LHtkZWZhdWx0VmFsdWU6eC5kZWZhdWx0VmFsdWV9KSxCPWEoKSxTPW4oImlucHV0Iix4KSx7ZW1pdEZvcm1CbHVyOmssZW1pdEZvcm1JbnB1dDpBLGVtaXRGb3JtQ2hhbmdlOlYsc2l6ZTokLGNvbG9yOl8saWQ6QyxuYW1lOncsaGlnaGxpZ2h0Ok0sZGlzYWJsZWQ6TixlbWl0Rm9ybUZvY3VzOlIsYXJpYUF0dHJzOmp9PWwoeCx7ZGVmZXJJbnB1dFZhbGlkYXRpb246ITB9KSx7b3JpZW50YXRpb246RixzaXplOlB9PXIoeCkse2lzTGVhZGluZzpPLGlzVHJhaWxpbmc6RyxsZWFkaW5nSWNvbk5hbWU6VCx0cmFpbGluZ0ljb25OYW1lOkR9PXQoeCksSD1lLmNvbXB1dGVkKCgpPT5QLnZhbHVlfHwkLnZhbHVlKSxMPWUuY29tcHV0ZWQoKCk9PnMoe2V4dGVuZDpzKHYpLC4uLkIudWk/LmlucHV0fHx7fX0pKHt0eXBlOngudHlwZSxjb2xvcjpfLnZhbHVlLHZhcmlhbnQ6eC52YXJpYW50LHNpemU6SD8udmFsdWUsbG9hZGluZzp4LmxvYWRpbmcsaGlnaGxpZ2h0Ok0udmFsdWUsZml4ZWQ6eC5maXhlZCxsZWFkaW5nOk8udmFsdWV8fCEheC5hdmF0YXJ8fCEhSS5sZWFkaW5nLHRyYWlsaW5nOkcudmFsdWV8fCEhSS50cmFpbGluZyxmaWVsZEdyb3VwOkYudmFsdWV9KSksVT1lLnVzZVRlbXBsYXRlUmVmKCJpbnB1dFJlZiIpO2Z1bmN0aW9uIHVwZGF0ZUlucHV0KGUpeyF4Lm1vZGVsTW9kaWZpZXJzPy50cmltfHwic3RyaW5nIiE9dHlwZW9mIGUmJm51bGwhPWV8fChlPWU/LnRyaW0oKT8/bnVsbCksKHgubW9kZWxNb2RpZmllcnM/Lm51bWJlcnx8Im51bWJlciI9PT14LnR5cGUpJiYoZT1nKGUpKSx4Lm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmKGV8fD1udWxsKSx4Lm1vZGVsTW9kaWZpZXJzPy5vcHRpb25hbCYmIXgubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiZudWxsIT09ZSYmKGV8fD12b2lkIDApLHEudmFsdWU9ZSxBKCl9ZnVuY3Rpb24gb25JbnB1dChlKXt4Lm1vZGVsTW9kaWZpZXJzPy5sYXp5fHx1cGRhdGVJbnB1dChlLnRhcmdldC52YWx1ZSl9ZnVuY3Rpb24gb25DaGFuZ2UoZSl7Y29uc3QgaT1lLnRhcmdldC52YWx1ZTt4Lm1vZGVsTW9kaWZpZXJzPy5sYXp5JiZ1cGRhdGVJbnB1dChpKSx4Lm1vZGVsTW9kaWZpZXJzPy50cmltJiYoZS50YXJnZXQudmFsdWU9aS50cmltKCkpLFYoKSx6KCJjaGFuZ2UiLGUpfWZ1bmN0aW9uIG9uQmx1cihlKXtrKCkseigiYmx1ciIsZSl9cmV0dXJuIGgoe2lucHV0UmVmOlV9KSwoaSxhLG4sbCk9PnthKGMoZS51bnJlZihkKSxlLm1lcmdlUHJvcHMoe2FzOmIuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOkwudmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoUyk/LnJvb3QseC5jbGFzc119KX0sbCkse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLG4sbCxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKCJpbnB1dCIsZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKEMpLHJlZl9rZXk6ImlucHV0UmVmIixyZWY6VSx0eXBlOmIudHlwZSx2YWx1ZTplLnVucmVmKHEpLG5hbWU6ZS51bnJlZih3KSxwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpMLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmJhc2V9KSxkaXNhYmxlZDplLnVucmVmKE4pLHJlcXVpcmVkOmIucmVxdWlyZWQsYXV0b2NvbXBsZXRlOmIuYXV0b2NvbXBsZXRlfSx7Li4uaS4kYXR0cnMsLi4uZS51bnJlZihqKX0se29uSW5wdXQ6b25JbnB1dCxvbkJsdXI6b25CbHVyLG9uQ2hhbmdlOm9uQ2hhbmdlLG9uRm9jdXM6ZS51bnJlZihSKX0pLG51bGwsMTYsWyJpZCIsInR5cGUiLCJ2YWx1ZSIsIm5hbWUiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJhdXRvY29tcGxldGUiLCJvbkZvY3VzIl0pLGUucmVuZGVyU2xvdChpLiRzbG90cywiZGVmYXVsdCIse3VpOkwudmFsdWV9KSxlLnVucmVmKE8pfHxiLmF2YXRhcnx8SS5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6TC52YWx1ZS5sZWFkaW5nKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nfSl9LFtlLnJlbmRlclNsb3QoaS4kc2xvdHMsImxlYWRpbmciLHt1aTpMLnZhbHVlfSwoKT0+W2UudW5yZWYoTykmJmUudW5yZWYoVCk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhvLHtrZXk6MCxuYW1lOmUudW5yZWYoVCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpMLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmIuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodSxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6ZS51bnJlZihTKT8ubGVhZGluZ0F2YXRhclNpemV8fEwudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sYi5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpMLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoUyk/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUudW5yZWYoRyl8fEkudHJhaWxpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6TC52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihTKT8udHJhaWxpbmd9KX0sW2UucmVuZGVyU2xvdChpLiRzbG90cywidHJhaWxpbmciLHt1aTpMLnZhbHVlfSwoKT0+W2UudW5yZWYoRCk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhvLHtrZXk6MCxuYW1lOmUudW5yZWYoRCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6TC52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOmUudW5yZWYoUyk/LnRyYWlsaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtuKGA8aW5wdXQke3AoZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKEMpLHJlZl9rZXk6ImlucHV0UmVmIixyZWY6VSx0eXBlOmIudHlwZSx2YWx1ZTplLnVucmVmKHEpLG5hbWU6ZS51bnJlZih3KSxwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpMLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmJhc2V9KSxkaXNhYmxlZDplLnVucmVmKE4pLHJlcXVpcmVkOmIucmVxdWlyZWQsYXV0b2NvbXBsZXRlOmIuYXV0b2NvbXBsZXRlfSx7Li4uaS4kYXR0cnMsLi4uZS51bnJlZihqKX0pKX0ke3J9PmApLGYoaS4kc2xvdHMsImRlZmF1bHQiLHt1aTpMLnZhbHVlfSxudWxsLG4sbCxyKSxlLnVucmVmKE8pfHxiLmF2YXRhcnx8SS5sZWFkaW5nPyhuKGA8c3BhbiBkYXRhLXNsb3Q9ImxlYWRpbmciIGNsYXNzPSIke20oTC52YWx1ZS5sZWFkaW5nKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nfSkpfSIke3J9PmApLGYoaS4kc2xvdHMsImxlYWRpbmciLHt1aTpMLnZhbHVlfSwoKT0+e2UudW5yZWYoTykmJmUudW5yZWYoVCk/bihjKG8se25hbWU6ZS51bnJlZihUKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOkwudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoUyk/LmxlYWRpbmdJY29ufSl9LG51bGwsbCxyKSk6Yi5hdmF0YXI/bihjKHUsZS5tZXJnZVByb3BzKHtzaXplOmUudW5yZWYoUyk/LmxlYWRpbmdBdmF0YXJTaXplfHxMLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LGIuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6TC52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczplLnVucmVmKFMpPy5sZWFkaW5nQXZhdGFyfSl9KSxudWxsLGwscikpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixsLHIpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpLGUudW5yZWYoRyl8fEkudHJhaWxpbmc/KG4oYDxzcGFuIGRhdGEtc2xvdD0idHJhaWxpbmciIGNsYXNzPSIke20oTC52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihTKT8udHJhaWxpbmd9KSl9IiR7cn0+YCksZihpLiRzbG90cywidHJhaWxpbmciLHt1aTpMLnZhbHVlfSwoKT0+e2UudW5yZWYoRCk/bihjKG8se25hbWU6ZS51bnJlZihEKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczpMLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihTKT8udHJhaWxpbmdJY29ufSl9LG51bGwsbCxyKSk6bigiXHgzYyEtLS0tXHgzZSIpfSxuLGwsciksbigiPC9zcGFuPiIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LG4pKX19fSksaD1iLnNldHVwO2Iuc2V0dXA9KGksYSk9Pntjb25zdCBuPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9JbnB1dC52dWUiKSxoP2goaSxhKTp2b2lkIDB9O2V4cG9ydHtiIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1JbnB1dC1ER3l2UVFSZC5tanMubWFwCg==", "chunks/build/Kbd-AWGJveXK.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHQsdiBhcyByLHQgYXMgbyxQIGFzIG4sYWEgYXMgYSxNIGFzIGksRSBhcyB1LFEgYXMgbCxUIGFzIGQsUyBhcyBzLG0gYXMgcCxsIGFzIGMsYW4gYXMgZixhMSBhcyB5LGFvIGFzIGcsciBhcyB2LGFwIGFzIG0sYXEgYXMgaCxhciBhcyBxLE4gYXMgQixYIGFzIGJ9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHthIGFzIHcsUCBhcyBDLGIgYXMgayxkIGFzIHgsYyBhcyBTLHUgYXMgUCxlIGFzIF99ZnJvbSIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0e3UgYXMgTyxELGEgYXMgRixiIGFzIEEsRiBhcyBOLGcgYXMgUixTIGFzIE0sYyBhcyBFLGkgYXMgSSxkIGFzIFQsZSBhcyBWLGggYXMgJCxqIGFzIEssayBhcyB6LEwsZiBhcyBVLEkgYXMgR31mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7dSBhcyBqfWZyb20iLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnR7UiBhcyBXfWZyb20iLi9Sb3ZpbmdGb2N1c0dyb3VwLUJyYXFDWEhfLm1qcyI7aW1wb3J0e2YgYXMgSCxnIGFzIFgscSBhcyBZfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgUT1bIklOUFVUIiwiVEVYVEFSRUEiXTtmdW5jdGlvbiB1c2VBcnJvd05hdmlnYXRpb24oZSx0LHIsbz17fSl7aWYoIXR8fG8uZW5hYmxlSWdub3JlZEVsZW1lbnQmJlEuaW5jbHVkZXModC5ub2RlTmFtZSkpcmV0dXJuIG51bGw7Y29uc3R7YXJyb3dLZXlPcHRpb25zOm49ImJvdGgiLGF0dHJpYnV0ZU5hbWU6YT0iW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dIixpdGVtc0FycmF5Omk9W10sbG9vcDp1PSEwLGRpcjpsPSJsdHIiLHByZXZlbnRTY3JvbGw6ZD0hMCxmb2N1czpzPSExfT1vLFtwLGMsZix5LGcsdl09WyJBcnJvd1JpZ2h0Ij09PWUua2V5LCJBcnJvd0xlZnQiPT09ZS5rZXksIkFycm93VXAiPT09ZS5rZXksIkFycm93RG93biI9PT1lLmtleSwiSG9tZSI9PT1lLmtleSwiRW5kIj09PWUua2V5XSxtPWZ8fHksaD1wfHxjO2lmKCFnJiYhdiYmKCFtJiYhaHx8InZlcnRpY2FsIj09PW4mJmh8fCJob3Jpem9udGFsIj09PW4mJm0pKXJldHVybiBudWxsO2NvbnN0IHE9cj9BcnJheS5mcm9tKHIucXVlcnlTZWxlY3RvckFsbChhKSk6aTtpZighcS5sZW5ndGgpcmV0dXJuIG51bGw7ZCYmZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBCPW51bGw7aWYoaHx8bSl7Qj1maW5kTmV4dEZvY3VzYWJsZUVsZW1lbnQocSx0LHtnb0ZvcndhcmQ6bT95OiJsdHIiPT09bD9wOmMsbG9vcDp1fSl9ZWxzZSBnP0I9cS5hdCgwKXx8bnVsbDp2JiYoQj1xLmF0KC0xKXx8bnVsbCk7cmV0dXJuIHMmJkI/LmZvY3VzKCksQn1mdW5jdGlvbiBmaW5kTmV4dEZvY3VzYWJsZUVsZW1lbnQoZSx0LHIsbz0oZS5pbmNsdWRlcyh0KT9lLmxlbmd0aDplLmxlbmd0aCsxKSl7aWYoMD09PS0tbylyZXR1cm4gbnVsbDtjb25zdCBuPWUuaW5kZXhPZih0KTtsZXQgYTtpZihhPS0xPT09bj9yLmdvRm9yd2FyZD8wOmUubGVuZ3RoLTE6ci5nb0ZvcndhcmQ/bisxOm4tMSwhci5sb29wJiYoYTwwfHxhPj1lLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgaT1lWyhhK2UubGVuZ3RoKSVlLmxlbmd0aF07aWYoIWkpcmV0dXJuIG51bGw7cmV0dXJuIGkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpJiYiZmFsc2UiIT09aS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik/ZmluZE5leHRGb2N1c2FibGVFbGVtZW50KGUsaSxyLG8pOml9ZnVuY3Rpb24gdXNlR3JhY2VBcmVhKGUsdCl7Y29uc3Qgbz15KCExLDMwMCk7ZygoKT0+e28udmFsdWU9ITF9KTtjb25zdCBuPXIucmVmKG51bGwpLGE9bSgpO2Z1bmN0aW9uIGhhbmRsZVJlbW92ZUdyYWNlQXJlYSgpe24udmFsdWU9bnVsbCxvLnZhbHVlPSExfWZ1bmN0aW9uIGhhbmRsZUNyZWF0ZUdyYWNlQXJlYShlLHQpe2lmKCF0KXJldHVybjtjb25zdCByPWUuY3VycmVudFRhcmdldCxhPXt4OmUuY2xpZW50WCx5OmUuY2xpZW50WX0saT1mdW5jdGlvbihlLHQscj01KXtjb25zdCBvPVtdO3N3aXRjaCh0KXtjYXNlInRvcCI6by5wdXNoKHt4OmUueC1yLHk6ZS55K3J9LHt4OmUueCtyLHk6ZS55K3J9KTticmVhaztjYXNlImJvdHRvbSI6by5wdXNoKHt4OmUueC1yLHk6ZS55LXJ9LHt4OmUueCtyLHk6ZS55LXJ9KTticmVhaztjYXNlImxlZnQiOm8ucHVzaCh7eDplLngrcix5OmUueS1yfSx7eDplLngrcix5OmUueStyfSk7YnJlYWs7Y2FzZSJyaWdodCI6by5wdXNoKHt4OmUueC1yLHk6ZS55LXJ9LHt4OmUueC1yLHk6ZS55K3J9KX1yZXR1cm4gb30oYSxmdW5jdGlvbihlLHQpe2NvbnN0IHI9TWF0aC5hYnModC50b3AtZS55KSxvPU1hdGguYWJzKHQuYm90dG9tLWUueSksbj1NYXRoLmFicyh0LnJpZ2h0LWUueCksYT1NYXRoLmFicyh0LmxlZnQtZS54KTtzd2l0Y2goTWF0aC5taW4ocixvLG4sYSkpe2Nhc2UgYTpyZXR1cm4ibGVmdCI7Y2FzZSBuOnJldHVybiJyaWdodCI7Y2FzZSByOnJldHVybiJ0b3AiO2Nhc2UgbzpyZXR1cm4iYm90dG9tIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19KGEsci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksMSksdT1mdW5jdGlvbihlKXtjb25zdCB0PWUuc2xpY2UoKTtyZXR1cm4gdC5zb3J0KChlLHQpPT5lLng8dC54Py0xOmUueD50Lng/MTplLnk8dC55Py0xOmUueT50Lnk/MTowKSxmdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5zbGljZSgpO2NvbnN0IHQ9W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG89ZVtyXTtmb3IoO3QubGVuZ3RoPj0yOyl7Y29uc3QgZT10LmF0KC0xKSxyPXRbdC5sZW5ndGgtMl07aWYoISgoZS54LXIueCkqKG8ueS1yLnkpPj0oZS55LXIueSkqKG8ueC1yLngpKSlicmVhazt0LnBvcCgpfXQucHVzaChvKX10LnBvcCgpO2NvbnN0IHI9W107Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IG89ZVt0XTtmb3IoO3IubGVuZ3RoPj0yOyl7Y29uc3QgZT1yLmF0KC0xKSx0PXJbci5sZW5ndGgtMl07aWYoISgoZS54LXQueCkqKG8ueS10LnkpPj0oZS55LXQueSkqKG8ueC10LngpKSlicmVhaztyLnBvcCgpfXIucHVzaChvKX1yZXR1cm4gci5wb3AoKSwxPT09dC5sZW5ndGgmJjE9PT1yLmxlbmd0aCYmdFswXS54PT09clswXS54JiZ0WzBdLnk9PT1yWzBdLnk/dDp0LmNvbmNhdChyKX0odCl9KFsuLi5pLC4uLmZ1bmN0aW9uKGUpe2NvbnN0e3RvcDp0LHJpZ2h0OnIsYm90dG9tOm8sbGVmdDpufT1lO3JldHVyblt7eDpuLHk6dH0se3g6cix5OnR9LHt4OnIseTpvfSx7eDpuLHk6b31dfSh0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKV0pO24udmFsdWU9dSxvLnZhbHVlPSEwfXJldHVybiByLndhdGNoRWZmZWN0KHI9PntpZihlLnZhbHVlJiZ0LnZhbHVlKXtjb25zdCBoYW5kbGVUcmlnZ2VyTGVhdmU9ZT0+aGFuZGxlQ3JlYXRlR3JhY2VBcmVhKGUsdC52YWx1ZSksaGFuZGxlQ29udGVudExlYXZlPXQ9PmhhbmRsZUNyZWF0ZUdyYWNlQXJlYSh0LGUudmFsdWUpO2UudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVUcmlnZ2VyTGVhdmUpLHQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVDb250ZW50TGVhdmUpLHIoKCk9PntlLnZhbHVlPy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLGhhbmRsZVRyaWdnZXJMZWF2ZSksdC52YWx1ZT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVDb250ZW50TGVhdmUpfSl9fSksci53YXRjaEVmZmVjdChyPT57aWYobi52YWx1ZSl7Y29uc3QgaGFuZGxlVHJhY2tQb2ludGVyR3JhY2U9cj0+e2lmKCEobi52YWx1ZSYmci50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSlyZXR1cm47Y29uc3Qgbz1yLnRhcmdldCxpPXt4OnIuY2xpZW50WCx5OnIuY2xpZW50WX0sdT1lLnZhbHVlPy5jb250YWlucyhvKXx8dC52YWx1ZT8uY29udGFpbnMobyksbD0hZnVuY3Rpb24oZSx0KXtjb25zdHt4OnIseTpvfT1lO2xldCBuPSExO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGgtMTtlPHQubGVuZ3RoO2E9ZSsrKXtjb25zdCBpPXRbZV0ueCx1PXRbZV0ueSxsPXRbYV0ueCxkPXRbYV0ueTt1Pm8hPWQ+byYmcjwobC1pKSooby11KS8oZC11KStpJiYobj0hbil9cmV0dXJuIG59KGksbi52YWx1ZSksZD0hIW8uY2xvc2VzdCgiW2RhdGEtZ3JhY2UtYXJlYS10cmlnZ2VyXSIpO3U/aGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk6KGx8fGQpJiYoaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCksYS50cmlnZ2VyKCkpfTtlLnZhbHVlPy5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSkscigoKT0+ZS52YWx1ZT8ub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlVHJhY2tQb2ludGVyR3JhY2UpKX19KSx7aXNQb2ludGVySW5UcmFuc2l0Om8sb25Qb2ludGVyRXhpdDphLm9ufX12YXIgSj1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51QW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKEMpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFo9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudUFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKHcpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0IGVlPWEoZnVuY3Rpb24oKXtyZXR1cm4gci5yZWYoITEpfSksW3RlLHJlXT1wKFsiTWVudVJvb3QiLCJNZW51U3ViIl0sIk1lbnVDb250ZXh0IiksW29lLG5lXT1wKCJNZW51Um9vdCIpO3ZhciBhZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51Um9vdCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCx7bW9kYWw6YSxkaXI6aX09ci50b1JlZnMobyksdT1qKGkpLGw9cyhvLCJvcGVuIixuKSxkPXIucmVmKCkscD1lZSgpO3JldHVybiByZSh7b3BlbjpsLG9uT3BlbkNoYW5nZTplPT57bC52YWx1ZT1lfSxjb250ZW50OmQsb25Db250ZW50Q2hhbmdlOmU9PntkLnZhbHVlPWV9fSksbmUoe29uQ2xvc2U6KCk9PntsLnZhbHVlPSExfSxpc1VzaW5nS2V5Ym9hcmRSZWY6cCxkaXI6dSxtb2RhbDphfSksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihrKSxudWxsLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpfX0pO2NvbnN0W2llLHVlXT1wKCJNZW51Q29udGVudCIpO3ZhciBsZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51Q29udGVudEltcGwiLHByb3BzOnIubWVyZ2VEZWZhdWx0cyh7bG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uX30pLGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImVudHJ5Rm9jdXMiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiLCJkaXNtaXNzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCxhPXRlKCksdT1vZSgpLHt0cmFwRm9jdXM6bCxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6ZCxsb29wOnN9PXIudG9SZWZzKG8pO1MoKSxGKGQudmFsdWUpO2NvbnN0IHA9ci5yZWYoIiIpLGM9ci5yZWYoMCksZj1yLnJlZigwKSx5PXIucmVmKG51bGwpLGc9ci5yZWYoInJpZ2h0Iiksdj1yLnJlZigwKSxtPXIucmVmKG51bGwpLGg9ci5yZWYoKSx7Zm9yd2FyZFJlZjpxLGN1cnJlbnRFbGVtZW50OkJ9PWkoKSx7aGFuZGxlVHlwZWFoZWFkU2VhcmNoOnd9PVAoKSxDPXIucmVmKCk7Y29uc3Qgaz1yLnJlZigpLF89ci5yZWYoKTtmdW5jdGlvbiBpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZSl7cmV0dXJuIGcudmFsdWU9PT15LnZhbHVlPy5zaWRlJiZLKGUseS52YWx1ZT8uYXJlYSl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlTW91bnRBdXRvRm9jdXMoZSl7bigib3BlbkF1dG9Gb2N1cyIsZSksZS5kZWZhdWx0UHJldmVudGVkfHwoZS5wcmV2ZW50RGVmYXVsdCgpLEIudmFsdWU/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpfWZ1bmN0aW9uIGhhbmRsZUtleURvd24oZSl7aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB0PWUudGFyZ2V0LHI9dC5jbG9zZXN0KCJbZGF0YS1yZWthLW1lbnUtY29udGVudF0iKT09PWUuY3VycmVudFRhcmdldCxvPVsiaW5wdXQiLCJ0ZXh0YXJlYSJdLmluY2x1ZGVzKHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSxuPWUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0YUtleSxhPTE9PT1lLmtleS5sZW5ndGgsaT11c2VBcnJvd05hdmlnYXRpb24oZSxiKCksQi52YWx1ZSx7bG9vcDpzLnZhbHVlLGFycm93S2V5T3B0aW9uczoidmVydGljYWwiLGRpcjp1Py5kaXIudmFsdWUsZm9jdXM6ITAsYXR0cmlidXRlTmFtZToiW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dOm5vdChbZGF0YS1kaXNhYmxlZF0pIn0pO2lmKGkpcmV0dXJuIGk/LmZvY3VzKCk7aWYoIlNwYWNlIj09PWUuY29kZSlyZXR1cm47Y29uc3QgbD1oLnZhbHVlPy5nZXRJdGVtcygpPz9bXTtpZihyJiYoIlRhYiI9PT1lLmtleSYmZS5wcmV2ZW50RGVmYXVsdCgpLG58fCFhfHxvfHx3KGUua2V5LGwpKSxlLnRhcmdldCE9PUIudmFsdWUpcmV0dXJuO2lmKCF6LmluY2x1ZGVzKGUua2V5KSlyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGQ9Wy4uLmwubWFwKGU9PmUucmVmKV07TC5pbmNsdWRlcyhlLmtleSkmJmQucmV2ZXJzZSgpLFUoZCl9ZnVuY3Rpb24gaGFuZGxlQmx1cihlKXtlPy5jdXJyZW50VGFyZ2V0Py5jb250YWlucz8uKGUudGFyZ2V0KXx8KCh2b2lkIDApLmNsZWFyVGltZW91dChjLnZhbHVlKSxwLnZhbHVlPSIiKX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyTW92ZShlKXtpZighJChlKSlyZXR1cm47Y29uc3QgdD1lLnRhcmdldCxyPXYudmFsdWUhPT1lLmNsaWVudFg7aWYoZT8uY3VycmVudFRhcmdldD8uY29udGFpbnModCkmJnIpe2NvbnN0IHQ9ZS5jbGllbnRYPnYudmFsdWU/InJpZ2h0IjoibGVmdCI7Zy52YWx1ZT10LHYudmFsdWU9ZS5jbGllbnRYfX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyRW50ZXIoZSl7JChlKSYmay52YWx1ZSYmay52YWx1ZS5mb2N1cygpfXJldHVybiByLndhdGNoKEMsZT0+eyFfLnZhbHVlfHx2b2lkIDAhPT1lJiZlPT09Xy52YWx1ZS50cmlnZ2VyLnZhbHVlfHwoXy52YWx1ZS5vbk9wZW5DaGFuZ2UoITEpLF8udmFsdWU9dm9pZCAwKX0pLHIud2F0Y2goQixlPT57YS5vbkNvbnRlbnRDaGFuZ2UoZSl9KSx1ZSh7b25JdGVtRW50ZXI6ZT0+ISFpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZSksb25JdGVtTGVhdmU6ZT0+e2lmKGlzUG9pbnRlck1vdmluZ1RvU3VibWVudShlKSlyZXR1cm47WyJJTlBVVCIsIlRFWFRBUkVBIl0uaW5jbHVkZXMoYigpPy50YWdOYW1lfHwiIil8fEIudmFsdWU/LmZvY3VzKCksbS52YWx1ZT1udWxsfSxvblRyaWdnZXJMZWF2ZTplPT4hIWlzUG9pbnRlck1vdmluZ1RvU3VibWVudShlKSxzZWFyY2hSZWY6cCxoaWdobGlnaHRlZEVsZW1lbnQ6QyxvbktleWRvd25OYXZpZ2F0aW9uOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9dXNlQXJyb3dOYXZpZ2F0aW9uKGUsQy52YWx1ZXx8YigpLEIudmFsdWUse2xvb3A6cy52YWx1ZSxhcnJvd0tleU9wdGlvbnM6InZlcnRpY2FsIixkaXI6dT8uZGlyLnZhbHVlLGZvY3VzOiExLGF0dHJpYnV0ZU5hbWU6IltkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXTpub3QoW2RhdGEtZGlzYWJsZWRdKSJ9KTt0JiYoQy52YWx1ZT10LHQuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0In0pKX0sb25LZXlkb3duRW50ZXI6ZnVuY3Rpb24oKXtDLnZhbHVlJiZDLnZhbHVlLmNsaWNrKCl9LGZpbHRlckVsZW1lbnQ6ayxvbkZpbHRlckVsZW1lbnRDaGFuZ2U6ZT0+e2sudmFsdWU9ZX0sYWN0aXZlU3VibWVudUNvbnRleHQ6Xyxwb2ludGVyR3JhY2VUaW1lclJlZjpmLG9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlOmU9Pnt5LnZhbHVlPWV9fSksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihOKSx7ImFzLWNoaWxkIjoiIix0cmFwcGVkOnIudW5yZWYobCksb25Nb3VudEF1dG9Gb2N1czpoYW5kbGVNb3VudEF1dG9Gb2N1cyxvblVubW91bnRBdXRvRm9jdXM6dFs3XXx8KHRbN109ZT0+bigiY2xvc2VBdXRvRm9jdXMiLGUpKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKEQpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOnIudW5yZWYoZCksb25Fc2NhcGVLZXlEb3duOnRbMl18fCh0WzJdPWU9Pm4oImVzY2FwZUtleURvd24iLGUpKSxvblBvaW50ZXJEb3duT3V0c2lkZTp0WzNdfHwodFszXT1lPT5uKCJwb2ludGVyRG93bk91dHNpZGUiLGUpKSxvbkZvY3VzT3V0c2lkZTp0WzRdfHwodFs0XT1lPT5uKCJmb2N1c091dHNpZGUiLGUpKSxvbkludGVyYWN0T3V0c2lkZTp0WzVdfHwodFs1XT1lPT5uKCJpbnRlcmFjdE91dHNpZGUiLGUpKSxvbkRpc21pc3M6dFs2XXx8KHRbNl09ZT0+bigiZGlzbWlzcyIpKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKFcpLHtyZWZfa2V5OiJyb3ZpbmdGb2N1c0dyb3VwUmVmIixyZWY6aCwiY3VycmVudC10YWItc3RvcC1pZCI6bS52YWx1ZSwib25VcGRhdGU6Y3VycmVudFRhYlN0b3BJZCI6dFswXXx8KHRbMF09ZT0+bS52YWx1ZT1lKSwiYXMtY2hpbGQiOiIiLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsZGlyOnIudW5yZWYodSkuZGlyLnZhbHVlLGxvb3A6ci51bnJlZihzKSxvbkVudHJ5Rm9jdXM6dFsxXXx8KHRbMV09ZT0+e24oImVudHJ5Rm9jdXMiLGUpLHIudW5yZWYodSkuaXNVc2luZ0tleWJvYXJkUmVmLnZhbHVlfHxlLnByZXZlbnREZWZhdWx0KCl9KX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKHgpLHtyZWY6ci51bnJlZihxKSxyb2xlOiJtZW51IixhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJkYXRhLXJla2EtbWVudS1jb250ZW50IjoiIiwiZGF0YS1zdGF0ZSI6ci51bnJlZihSKShyLnVucmVmKGEpLm9wZW4udmFsdWUpLGRpcjpyLnVucmVmKHUpLmRpci52YWx1ZSxzaWRlOmUuc2lkZSwic2lkZS1vZmZzZXQiOmUuc2lkZU9mZnNldCxhbGlnbjplLmFsaWduLCJhbGlnbi1vZmZzZXQiOmUuYWxpZ25PZmZzZXQsImF2b2lkLWNvbGxpc2lvbnMiOmUuYXZvaWRDb2xsaXNpb25zLCJjb2xsaXNpb24tYm91bmRhcnkiOmUuY29sbGlzaW9uQm91bmRhcnksImNvbGxpc2lvbi1wYWRkaW5nIjplLmNvbGxpc2lvblBhZGRpbmcsImFycm93LXBhZGRpbmciOmUuYXJyb3dQYWRkaW5nLCJwcmlvcml0aXplLXBvc2l0aW9uIjplLnByaW9yaXRpemVQb3NpdGlvbiwicG9zaXRpb24tc3RyYXRlZ3kiOmUucG9zaXRpb25TdHJhdGVneSwidXBkYXRlLXBvc2l0aW9uLXN0cmF0ZWd5IjplLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3ksc3RpY2t5OmUuc3RpY2t5LCJoaWRlLXdoZW4tZGV0YWNoZWQiOmUuaGlkZVdoZW5EZXRhY2hlZCxyZWZlcmVuY2U6ZS5yZWZlcmVuY2Usb25LZXlkb3duOmhhbmRsZUtleURvd24sb25CbHVyOmhhbmRsZUJsdXIsb25Qb2ludGVybW92ZTpoYW5kbGVQb2ludGVyTW92ZSxvblBvaW50ZXJlbnRlcjpoYW5kbGVQb2ludGVyRW50ZXJ9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkaXIiLCJzaWRlIiwic2lkZS1vZmZzZXQiLCJhbGlnbiIsImFsaWduLW9mZnNldCIsImF2b2lkLWNvbGxpc2lvbnMiLCJjb2xsaXNpb24tYm91bmRhcnkiLCJjb2xsaXNpb24tcGFkZGluZyIsImFycm93LXBhZGRpbmciLCJwcmlvcml0aXplLXBvc2l0aW9uIiwicG9zaXRpb24tc3RyYXRlZ3kiLCJ1cGRhdGUtcG9zaXRpb24tc3RyYXRlZ3kiLCJzdGlja3kiLCJoaWRlLXdoZW4tZGV0YWNoZWQiLCJyZWZlcmVuY2UiXSldKSxfOjN9LDgsWyJjdXJyZW50LXRhYi1zdG9wLWlkIiwiZGlyIiwibG9vcCJdKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLGRlPXIuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJNZW51SXRlbUltcGwiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbz1pZSgpLHtmb3J3YXJkUmVmOmEsY3VycmVudEVsZW1lbnQ6dX09aSgpLHtDb2xsZWN0aW9uSXRlbTpsfT1CKCksZD1yLnJlZighMSkscz1yLmNvbXB1dGVkKCgpPT5kLnZhbHVlfHxvLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZT09PXUudmFsdWUpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKGUpe2lmKCFlLmRlZmF1bHRQcmV2ZW50ZWQmJiQoZSkpaWYodC5kaXNhYmxlZClvLm9uSXRlbUxlYXZlKGUpO2Vsc2V7aWYoIW8ub25JdGVtRW50ZXIoZSkpe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0O28uaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPXQ7WyJJTlBVVCIsIlRFWFRBUkVBIl0uaW5jbHVkZXMoYigpPy50YWdOYW1lfHwiIil8fHQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX19fWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJMZWF2ZShlKXthd2FpdCByLm5leHRUaWNrKCksZS5kZWZhdWx0UHJldmVudGVkfHwkKGUpJiZvLm9uSXRlbUxlYXZlKGUpfXJldHVybihlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobCkse3ZhbHVlOnt0ZXh0VmFsdWU6ZS50ZXh0VmFsdWV9fSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVZOb2RlKHIudW5yZWYobiksci5tZXJnZVByb3BzKHtyZWY6ci51bnJlZihhKSxyb2xlOiJtZW51aXRlbSIsdGFiaW5kZXg6Ii0xIn0sZS4kYXR0cnMse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImFyaWEtZGlzYWJsZWQiOmUuZGlzYWJsZWR8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZS5kaXNhYmxlZD8iIjp2b2lkIDAsImRhdGEtaGlnaGxpZ2h0ZWQiOnMudmFsdWU/IiI6dm9pZCAwLG9uUG9pbnRlcm1vdmU6aGFuZGxlUG9pbnRlck1vdmUsb25Qb2ludGVybGVhdmU6aGFuZGxlUG9pbnRlckxlYXZlLG9uRm9jdXM6dFswXXx8KHRbMF09YXN5bmMgdD0+e2F3YWl0IHIubmV4dFRpY2soKSx0LmRlZmF1bHRQcmV2ZW50ZWR8fGUuZGlzYWJsZWR8fChkLnZhbHVlPSEwLHIudW5yZWYobykuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPXQuY3VycmVudFRhcmdldCl9KSxvbkJsdXI6dFsxXXx8KHRbMV09YXN5bmMgZT0+e2F3YWl0IHIubmV4dFRpY2soKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fChkLnZhbHVlPSExKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCIsImFyaWEtZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1oaWdobGlnaHRlZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxzZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51SXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCx7Zm9yd2FyZFJlZjphLGN1cnJlbnRFbGVtZW50OnV9PWkoKSxsPW9lKCksZD1pZSgpLHM9ci5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZVNlbGVjdCgpe2NvbnN0IGU9dS52YWx1ZTtpZighby5kaXNhYmxlZCYmZSl7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQoRyx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7bigic2VsZWN0IixlKSxhd2FpdCByLm5leHRUaWNrKCksZS5kZWZhdWx0UHJldmVudGVkP3MudmFsdWU9ITE6bC5vbkNsb3NlKCl9fXJldHVybihlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKGRlLHIubWVyZ2VQcm9wcyhvLHtyZWY6ci51bnJlZihhKSxvbkNsaWNrOmhhbmRsZVNlbGVjdCxvblBvaW50ZXJkb3duOnRbMF18fCh0WzBdPSgpPT57cy52YWx1ZT0hMH0pLG9uUG9pbnRlcnVwOnRbMV18fCh0WzFdPWFzeW5jIGU9Pnthd2FpdCByLm5leHRUaWNrKCksZS5kZWZhdWx0UHJldmVudGVkfHxzLnZhbHVlfHxlLmN1cnJlbnRUYXJnZXQ/LmNsaWNrKCl9KSxvbktleWRvd246dFsyXXx8KHRbMl09YXN5bmMgdD0+e2NvbnN0IG89IiIhPT1yLnVucmVmKGQpLnNlYXJjaFJlZi52YWx1ZTtlLmRpc2FibGVkfHxvJiYiICI9PT10LmtleXx8ci51bnJlZihUKS5pbmNsdWRlcyh0LmtleSkmJih0LmN1cnJlbnRUYXJnZXQ/LmNsaWNrKCksdC5wcmV2ZW50RGVmYXVsdCgpKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3RbcGUsY2VdPXAoWyJNZW51Q2hlY2tib3hJdGVtIiwiTWVudVJhZGlvSXRlbSJdLCJNZW51SXRlbUluZGljYXRvckNvbnRleHQiKTt2YXIgZmU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudUl0ZW1JbmRpY2F0b3IiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKGUpe2NvbnN0IHQ9cGUoe21vZGVsVmFsdWU6ci5yZWYoITEpfSk7cmV0dXJuKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihsKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHIudW5yZWYoSSkoci51bnJlZih0KS5tb2RlbFZhbHVlLnZhbHVlKXx8ITA9PT1yLnVucmVmKHQpLm1vZGVsVmFsdWUudmFsdWV9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZihuKSx7YXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCwiZGF0YS1zdGF0ZSI6ci51bnJlZihFKShyLnVucmVmKHQpLm1vZGVsVmFsdWUudmFsdWUpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXN0YXRlIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSkseWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudUNoZWNrYm94SXRlbSIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCxhPXYobyxbIm1vZGVsVmFsdWUiXSksaT1jKGEpLHU9cyhvLCJtb2RlbFZhbHVlIixuKTtyZXR1cm4gY2Uoe21vZGVsVmFsdWU6dX0pLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHNlLHIubWVyZ2VQcm9wcyh7cm9sZToibWVudWl0ZW1jaGVja2JveCJ9LHIudW5yZWYoaSkseyJhcmlhLWNoZWNrZWQiOnIudW5yZWYoSSkoci51bnJlZih1KSk/Im1peGVkIjpyLnVucmVmKHUpLCJkYXRhLXN0YXRlIjpyLnVucmVmKEUpKHIudW5yZWYodSkpLG9uU2VsZWN0OnRbMF18fCh0WzBdPWFzeW5jIGU9PntuKCJzZWxlY3QiLGUpLHIudW5yZWYoSSkoci51bnJlZih1KSk/dS52YWx1ZT0hMDp1LnZhbHVlPSFyLnVucmVmKHUpfSl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnIudW5yZWYodSl9KV0pLF86M30sMTYsWyJhcmlhLWNoZWNrZWQiLCJkYXRhLXN0YXRlIl0pKX19KSxnZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51Um9vdENvbnRlbnRNb2RhbCIscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImVudHJ5Rm9jdXMiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPXQsbj11KGUsbyksYT10ZSgpLHtmb3J3YXJkUmVmOmwsY3VycmVudEVsZW1lbnQ6ZH09aSgpO3JldHVybiBBKGQpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKGxlLHIubWVyZ2VQcm9wcyhyLnVucmVmKG4pLHtyZWY6ci51bnJlZihsKSwidHJhcC1mb2N1cyI6ci51bnJlZihhKS5vcGVuLnZhbHVlLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOnIudW5yZWYoYSkub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXNjcm9sbCI6ITAsb25EaXNtaXNzOnRbMF18fCh0WzBdPWU9PnIudW5yZWYoYSkub25PcGVuQ2hhbmdlKCExKSksb25Gb2N1c091dHNpZGU6dFsxXXx8KHRbMV09ci53aXRoTW9kaWZpZXJzKGU9Pm8oImZvY3VzT3V0c2lkZSIsZSksWyJwcmV2ZW50Il0pKX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInRyYXAtZm9jdXMiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSkpfX0pLHZlPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVSb290Q29udGVudE5vbk1vZGFsIixwcm9wczp7bG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpLG49dGUoKTtyZXR1cm4oZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhsZSxyLm1lcmdlUHJvcHMoci51bnJlZihvKSx7InRyYXAtZm9jdXMiOiExLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLCJkaXNhYmxlLW91dHNpZGUtc2Nyb2xsIjohMSxvbkRpc21pc3M6dFswXXx8KHRbMF09ZT0+ci51bnJlZihuKS5vbk9wZW5DaGFuZ2UoITEpKX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLG1lPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJlbnRyeUZvY3VzIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz11KGUsdCksbj10ZSgpLGE9b2UoKTtyZXR1cm4oZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGwpLHtwcmVzZW50OmUuZm9yY2VNb3VudHx8ci51bnJlZihuKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnVucmVmKGEpLm1vZGFsLnZhbHVlPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soZ2Usci5ub3JtYWxpemVQcm9wcyhyLm1lcmdlUHJvcHMoe2tleTowfSx7Li4uZS4kYXR0cnMsLi4uci51bnJlZihvKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHZlLHIubm9ybWFsaXplUHJvcHMoci5tZXJnZVByb3BzKHtrZXk6MX0sey4uLmUuJGF0dHJzLC4uLnIudW5yZWYobyl9KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KTtjb25zdFtoZSxxZV09cCgiTWVudUdyb3VwIik7dmFyIEJlPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVHcm91cCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPU8odm9pZCAwLCJyZWthLW1lbnUtZ3JvdXAiKTtyZXR1cm4gcWUoe2lkOm99KSwoZSxhKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKG4pLHIubWVyZ2VQcm9wcyh7cm9sZToiZ3JvdXAifSx0LHsiYXJpYS1sYWJlbGxlZGJ5IjpyLnVucmVmKG8pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxiZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51TGFiZWwiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPWhlKHtpZDoiIn0pO3JldHVybihlLGEpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobiksci5tZXJnZVByb3BzKHQse2lkOnIudW5yZWYobykuaWR8fHZvaWQgMH0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSx3ZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybihlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoZCksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3RbQ2Usa2VdPXAoIk1lbnVSYWRpb0dyb3VwIik7dmFyIHhlPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik1lbnVSYWRpb0dyb3VwIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6IiJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9dihvLFsibW9kZWxWYWx1ZSJdKSxpPWMoYSksdT1zKG8sIm1vZGVsVmFsdWUiLG4pO3JldHVybiBrZSh7bW9kZWxWYWx1ZTp1LG9uVmFsdWVDaGFuZ2U6ZT0+e3UudmFsdWU9ZX19KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhCZSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHIudW5yZWYoaSkpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnIudW5yZWYodSl9KV0pLF86M30sMTYpKX19KSxTZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51UmFkaW9JdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9dihvLFsidmFsdWUiXSksaT1jKGEpLHt2YWx1ZTp1fT1yLnRvUmVmcyhvKSxsPUNlKCksZD1yLmNvbXB1dGVkKCgpPT5sLm1vZGVsVmFsdWUudmFsdWU9PT11Py52YWx1ZSk7cmV0dXJuIGNlKHttb2RlbFZhbHVlOmR9KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhzZSxyLm1lcmdlUHJvcHMoe3JvbGU6Im1lbnVpdGVtcmFkaW8ifSxyLnVucmVmKGkpLHsiYXJpYS1jaGVja2VkIjpkLnZhbHVlLCJkYXRhLXN0YXRlIjpyLnVucmVmKEUpKGQudmFsdWUpLG9uU2VsZWN0OnRbMF18fCh0WzBdPWFzeW5jIGU9PntuKCJzZWxlY3QiLGUpLHIudW5yZWYobCkub25WYWx1ZUNoYW5nZShyLnVucmVmKHUpKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1jaGVja2VkIiwiZGF0YS1zdGF0ZSJdKSl9fSksUGU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudVNlcGFyYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKG4pLHIubWVyZ2VQcm9wcyh0LHtyb2xlOiJzZXBhcmF0b3IiLCJhcmlhLW9yaWVudGF0aW9uIjoiaG9yaXpvbnRhbCJ9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtjb25zdFtfZSxPZV09cCgiTWVudVN1YiIpO3ZhciBEZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51U3ViIixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89cyhlLCJvcGVuIix0LHtkZWZhdWx0VmFsdWU6ITEscGFzc2l2ZTp2b2lkIDA9PT1lLm9wZW59KSxuPXRlKCksYT1yLnJlZigpLGk9ci5yZWYoKTtyZXR1cm4gci53YXRjaEVmZmVjdChlPT57ITE9PT1uPy5vcGVuLnZhbHVlJiYoby52YWx1ZT0hMSksZSgoKT0+by52YWx1ZT0hMSl9KSxyZSh7b3BlbjpvLG9uT3BlbkNoYW5nZTplPT57by52YWx1ZT1lfSxjb250ZW50Omksb25Db250ZW50Q2hhbmdlOmU9PntpLnZhbHVlPWV9fSksT2Uoe3RyaWdnZXJJZDoiIixjb250ZW50SWQ6IiIsdHJpZ2dlcjphLG9uVHJpZ2dlckNoYW5nZTplPT57YS52YWx1ZT1lfX0pLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoayksbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30pKX19KSxGZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJNZW51U3ViQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpLG49dGUoKSxhPW9lKCksZD1fZSgpLHM9aWUoKSx7Zm9yd2FyZFJlZjpwLGN1cnJlbnRFbGVtZW50OmN9PWkoKTtyZXR1cm4gZC5jb250ZW50SWR8fD1PKHZvaWQgMCwicmVrYS1tZW51LXN1Yi1jb250ZW50IiksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihsKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHIudW5yZWYobikub3Blbi52YWx1ZX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShsZSxyLm1lcmdlUHJvcHMoci51bnJlZihvKSx7aWQ6ci51bnJlZihkKS5jb250ZW50SWQscmVmOnIudW5yZWYocCksImFyaWEtbGFiZWxsZWRieSI6ci51bnJlZihkKS50cmlnZ2VySWQsYWxpZ246InN0YXJ0IixzaWRlOiJydGwiPT09ci51bnJlZihhKS5kaXIudmFsdWU/ImxlZnQiOiJyaWdodCIsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6ITEsImRpc2FibGUtb3V0c2lkZS1zY3JvbGwiOiExLCJ0cmFwLWZvY3VzIjohMSxvbk9wZW5BdXRvRm9jdXM6dFswXXx8KHRbMF09ci53aXRoTW9kaWZpZXJzKGU9PntyLnVucmVmKGEpLmlzVXNpbmdLZXlib2FyZFJlZi52YWx1ZSYmci51bnJlZihjKT8uZm9jdXMoKX0sWyJwcmV2ZW50Il0pKSxvbkNsb3NlQXV0b0ZvY3VzOnRbMV18fCh0WzFdPXIud2l0aE1vZGlmaWVycygoKT0+e30sWyJwcmV2ZW50Il0pKSxvbkZvY3VzT3V0c2lkZTp0WzJdfHwodFsyXT1lPT57aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB0PXIudW5yZWYocykuZmlsdGVyRWxlbWVudC52YWx1ZT8uY29udGFpbnMoZS50YXJnZXQpO2UudGFyZ2V0PT09ci51bnJlZihkKS50cmlnZ2VyLnZhbHVlfHx0fHxyLnVucmVmKG4pLm9uT3BlbkNoYW5nZSghMSl9KSxvbkVzY2FwZUtleURvd246dFszXXx8KHRbM109ZT0+e3IudW5yZWYoYSkub25DbG9zZSgpLGUucHJldmVudERlZmF1bHQoKX0pLG9uS2V5ZG93bjp0WzRdfHwodFs0XT1lPT57Y29uc3QgdD1lLmN1cnJlbnRUYXJnZXQ/LmNvbnRhaW5zKGUudGFyZ2V0KSxvPXIudW5yZWYoTSlbci51bnJlZihhKS5kaXIudmFsdWVdLmluY2x1ZGVzKGUua2V5KTt0JiZvJiYoci51bnJlZihuKS5vbk9wZW5DaGFuZ2UoITEpLHIudW5yZWYocykuZmlsdGVyRWxlbWVudC52YWx1ZT8oci51bnJlZihzKS5maWx0ZXJFbGVtZW50LnZhbHVlLmZvY3VzKCksci51bnJlZihzKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU9ci51bnJlZihkKS50cmlnZ2VyLnZhbHVlLHIudW5yZWYoZCkudHJpZ2dlci52YWx1ZT8uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0In0pKTpyLnVucmVmKGQpLnRyaWdnZXIudmFsdWU/LmZvY3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpKX0pfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJhcmlhLWxhYmVsbGVkYnkiLCJzaWRlIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksQWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTWVudVN1YlRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbz10ZSgpLG49b2UoKSxhPV9lKCksaT1pZSgpO3Iud2F0Y2goby5vcGVuLGU9PntlP2kuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9e29uT3BlbkNoYW5nZTpvLm9uT3BlbkNoYW5nZSx0cmlnZ2VyOmEudHJpZ2dlcn06aS5hY3RpdmVTdWJtZW51Q29udGV4dC52YWx1ZT8udHJpZ2dlci52YWx1ZT09PWEudHJpZ2dlci52YWx1ZSYmKGkuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9dm9pZCAwKX0pO2NvbnN0IHU9ci5yZWYobnVsbCk7ZnVuY3Rpb24gY2xlYXJPcGVuVGltZXIoKXt1LnZhbHVlJiYodm9pZCAwKS5jbGVhclRpbWVvdXQodS52YWx1ZSksdS52YWx1ZT1udWxsfWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKGUpe2lmKCEkKGUpKXJldHVybjtpLm9uSXRlbUVudGVyKGUpfHx0LmRpc2FibGVkfHxvLm9wZW4udmFsdWV8fHUudmFsdWV8fChpLm9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlKG51bGwpLHUudmFsdWU9KHZvaWQgMCkuc2V0VGltZW91dCgoKT0+e28ub25PcGVuQ2hhbmdlKCEwKSxjbGVhck9wZW5UaW1lcigpfSwxMDApKX1hc3luYyBmdW5jdGlvbiBoYW5kbGVQb2ludGVyTGVhdmUoZSl7aWYoISQoZSkpcmV0dXJuO2NsZWFyT3BlblRpbWVyKCk7Y29uc3QgdD1vLmNvbnRlbnQudmFsdWU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHQ/LndpZHRoKXtjb25zdCByPW8uY29udGVudC52YWx1ZT8uZGF0YXNldC5zaWRlLG49InJpZ2h0Ij09PXIsYT1uPy01OjUsdT10W24/ImxlZnQiOiJyaWdodCJdLGw9dFtuPyJyaWdodCI6ImxlZnQiXTtpLm9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlKHthcmVhOlt7eDplLmNsaWVudFgrYSx5OmUuY2xpZW50WX0se3g6dSx5OnQudG9wfSx7eDpsLHk6dC50b3B9LHt4OmwseTp0LmJvdHRvbX0se3g6dSx5OnQuYm90dG9tfV0sc2lkZTpyfSksKHZvaWQgMCkuY2xlYXJUaW1lb3V0KGkucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWUpLGkucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWU9KHZvaWQgMCkuc2V0VGltZW91dCgoKT0+aS5vblBvaW50ZXJHcmFjZUludGVudENoYW5nZShudWxsKSwzMDApfWVsc2V7aWYoaS5vblRyaWdnZXJMZWF2ZShlKSlyZXR1cm47aS5vblBvaW50ZXJHcmFjZUludGVudENoYW5nZShudWxsKX19YXN5bmMgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKXtjb25zdCBhPSIiIT09aS5zZWFyY2hSZWYudmFsdWU7dC5kaXNhYmxlZHx8YSYmIiAiPT09ZS5rZXl8fFZbbi5kaXIudmFsdWVdLmluY2x1ZGVzKGUua2V5KSYmKG8ub25PcGVuQ2hhbmdlKCEwKSxhd2FpdCByLm5leHRUaWNrKCksby5jb250ZW50LnZhbHVlPy5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKSl9cmV0dXJuIGEudHJpZ2dlcklkfHw9Tyh2b2lkIDAsInJla2EtbWVudS1zdWItdHJpZ2dlciIpLChlLG4pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKEoseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoZGUsci5tZXJnZVByb3BzKHQse2lkOnIudW5yZWYoYSkudHJpZ2dlcklkLHJlZjplPT57ZSYmci51bnJlZihhKT8ub25UcmlnZ2VyQ2hhbmdlKGU/LiRlbCl9LCJhcmlhLWhhc3BvcHVwIjoibWVudSIsImFyaWEtZXhwYW5kZWQiOnIudW5yZWYobykub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6ci51bnJlZihhKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOnIudW5yZWYoUikoci51bnJlZihvKS5vcGVuLnZhbHVlKSxvbkNsaWNrOm5bMF18fChuWzBdPWFzeW5jIGU9Pnt0LmRpc2FibGVkfHxlLmRlZmF1bHRQcmV2ZW50ZWR8fChlLmN1cnJlbnRUYXJnZXQ/LmZvY3VzKCksci51bnJlZihvKS5vcGVuLnZhbHVlfHxyLnVucmVmKG8pLm9uT3BlbkNoYW5nZSghMCkpfSksb25Qb2ludGVybW92ZTpoYW5kbGVQb2ludGVyTW92ZSxvblBvaW50ZXJsZWF2ZTpoYW5kbGVQb2ludGVyTGVhdmUsb25LZXlkb3duOmhhbmRsZUtleURvd259KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSJdKV0pLF86M30pKX19KTtjb25zdFtOZSxSZV09cCgiUG9wb3ZlclJvb3QiKTt2YXIgTWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlclJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89ZSxuPXQse21vZGFsOmF9PXIudG9SZWZzKG8pLGk9cyhvLCJvcGVuIixuLHtkZWZhdWx0VmFsdWU6by5kZWZhdWx0T3BlbixwYXNzaXZlOnZvaWQgMD09PW8ub3Blbn0pLHU9ci5yZWYoKSxsPXIucmVmKCExKTtyZXR1cm4gUmUoe2NvbnRlbnRJZDoiIix0cmlnZ2VySWQ6IiIsbW9kYWw6YSxvcGVuOmksb25PcGVuQ2hhbmdlOmU9PntpLnZhbHVlPWV9LG9uT3BlblRvZ2dsZTooKT0+e2kudmFsdWU9IWkudmFsdWV9LHRyaWdnZXJFbGVtZW50OnUsaGFzQ3VzdG9tQW5jaG9yOmx9KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGspLG51bGwse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyLnVucmVmKGkpLGNsb3NlOigpPT5pLnZhbHVlPSExfSldKSxfOjN9KSl9fSksRWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlckFuY2hvciIscHJvcHM6e3JlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIGkoKSxOZSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoQyksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksSWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlckFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1fSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzdmcifX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBpKCksKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZih3KSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHQpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxUZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyQ2xvc2UiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZTtpKCk7Y29uc3Qgbz1OZSgpO3JldHVybihlLGEpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobikse3R5cGU6ImJ1dHRvbiI9PT1lLmFzPyJidXR0b24iOnZvaWQgMCxhczplLmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLG9uQ2xpY2s6YVswXXx8KGFbMF09ZT0+ci51bnJlZihvKS5vbk9wZW5DaGFuZ2UoITEpKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0eXBlIiwiYXMiLCJhcy1jaGlsZCJdKSl9fSksVmU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlckNvbnRlbnRJbXBsIixwcm9wczp7dHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz10LG49Yyh2KGUsInRyYXBGb2N1cyIsImRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyIpKSx7Zm9yd2FyZFJlZjphfT1pKCksdT1OZSgpO3JldHVybiBTKCksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihOKSx7ImFzLWNoaWxkIjoiIixsb29wOiIiLHRyYXBwZWQ6ZS50cmFwRm9jdXMsb25Nb3VudEF1dG9Gb2N1czp0WzVdfHwodFs1XT1lPT5vKCJvcGVuQXV0b0ZvY3VzIixlKSksb25Vbm1vdW50QXV0b0ZvY3VzOnRbNl18fCh0WzZdPWU9Pm8oImNsb3NlQXV0b0ZvY3VzIixlKSl9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZihEKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjplLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvblBvaW50ZXJEb3duT3V0c2lkZTp0WzBdfHwodFswXT1lPT5vKCJwb2ludGVyRG93bk91dHNpZGUiLGUpKSxvbkludGVyYWN0T3V0c2lkZTp0WzFdfHwodFsxXT1lPT5vKCJpbnRlcmFjdE91dHNpZGUiLGUpKSxvbkVzY2FwZUtleURvd246dFsyXXx8KHRbMl09ZT0+bygiZXNjYXBlS2V5RG93biIsZSkpLG9uRm9jdXNPdXRzaWRlOnRbM118fCh0WzNdPWU9Pm8oImZvY3VzT3V0c2lkZSIsZSkpLG9uRGlzbWlzczp0WzRdfHwodFs0XT1lPT5yLnVucmVmKHUpLm9uT3BlbkNoYW5nZSghMSkpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVZOb2RlKHIudW5yZWYoeCksci5tZXJnZVByb3BzKHIudW5yZWYobikse2lkOnIudW5yZWYodSkuY29udGVudElkLHJlZjpyLnVucmVmKGEpLCJkYXRhLXN0YXRlIjpyLnVucmVmKHUpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLCJhcmlhLWxhYmVsbGVkYnkiOnIudW5yZWYodSkudHJpZ2dlcklkLHN0eWxlOnsiLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtcG9wb3Zlci1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtcG9wb3Zlci1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1wb3BvdmVyLXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLXBvcG92ZXItdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9LHJvbGU6ImRpYWxvZyJ9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImRhdGEtc3RhdGUiLCJhcmlhLWxhYmVsbGVkYnkiXSldKSxfOjN9LDgsWyJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSldKSxfOjN9LDgsWyJ0cmFwcGVkIl0pKX19KSwkZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyQ29udGVudE1vZGFsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9TmUoKSxsPXIucmVmKCExKTtGKCEwKTtjb25zdCBkPXUobyxuKSx7Zm9yd2FyZFJlZjpzLGN1cnJlbnRFbGVtZW50OnB9PWkoKTtyZXR1cm4gQShwKSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhWZSxyLm1lcmdlUHJvcHMoci51bnJlZihkKSx7cmVmOnIudW5yZWYocyksInRyYXAtZm9jdXMiOnIudW5yZWYoYSkub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjoiIixvbkNsb3NlQXV0b0ZvY3VzOnRbMF18fCh0WzBdPXIud2l0aE1vZGlmaWVycyhlPT57bigiY2xvc2VBdXRvRm9jdXMiLGUpLGwudmFsdWV8fHIudW5yZWYoYSkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCl9LFsicHJldmVudCJdKSksb25Qb2ludGVyRG93bk91dHNpZGU6dFsxXXx8KHRbMV09ZT0+e24oInBvaW50ZXJEb3duT3V0c2lkZSIsZSk7Y29uc3QgdD1lLmRldGFpbC5vcmlnaW5hbEV2ZW50LHI9MD09PXQuYnV0dG9uJiYhMD09PXQuY3RybEtleSxvPTI9PT10LmJ1dHRvbnx8cjtsLnZhbHVlPW99KSxvbkZvY3VzT3V0c2lkZTp0WzJdfHwodFsyXT1yLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxLZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyQ29udGVudE5vbk1vZGFsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPWUsbj10LGE9TmUoKSxpPXIucmVmKCExKSxsPXIucmVmKCExKSxkPXUobyxuKTtyZXR1cm4oZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhWZSxyLm1lcmdlUHJvcHMoci51bnJlZihkKSx7InRyYXAtZm9jdXMiOiExLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uQ2xvc2VBdXRvRm9jdXM6dFswXXx8KHRbMF09ZT0+e24oImNsb3NlQXV0b0ZvY3VzIixlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fChpLnZhbHVlfHxyLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKSksaS52YWx1ZT0hMSxsLnZhbHVlPSExfSksb25JbnRlcmFjdE91dHNpZGU6dFsxXXx8KHRbMV09YXN5bmMgZT0+e24oImludGVyYWN0T3V0c2lkZSIsZSksZS5kZWZhdWx0UHJldmVudGVkfHwoaS52YWx1ZT0hMCwicG9pbnRlcmRvd24iPT09ZS5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiYobC52YWx1ZT0hMCkpO2NvbnN0IHQ9ZS50YXJnZXQsbz1yLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyh0KTtvJiZlLnByZXZlbnREZWZhdWx0KCksImZvY3VzaW4iPT09ZS5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiZsLnZhbHVlJiZlLnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHplPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBvcG92ZXJDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89ZSxuPXQsYT1OZSgpLGQ9dShvLG4pLHtmb3J3YXJkUmVmOnN9PWkoKTtyZXR1cm4gYS5jb250ZW50SWR8fD1PKHZvaWQgMCwicmVrYS1wb3BvdmVyLWNvbnRlbnQiKSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGwpLHtwcmVzZW50OmUuZm9yY2VNb3VudHx8ci51bnJlZihhKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnVucmVmKGEpLm1vZGFsLnZhbHVlPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soJGUsci5tZXJnZVByb3BzKHtrZXk6MH0sci51bnJlZihkKSx7cmVmOnIudW5yZWYocyl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKEtlLHIubWVyZ2VQcm9wcyh7a2V5OjF9LHIudW5yZWYoZCkse3JlZjpyLnVucmVmKHMpfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxMZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQb3BvdmVyUG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybihlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoZCksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksVWU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wb3ZlclRyaWdnZXIiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPU5lKCkse2ZvcndhcmRSZWY6YX09aSgpO3JldHVybiBvLnRyaWdnZXJJZHx8PU8odm9pZCAwLCJyZWthLXBvcG92ZXItdHJpZ2dlciIpLChlLGkpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoci51bnJlZihvKS5oYXNDdXN0b21BbmNob3IudmFsdWU/ci51bnJlZihuKTpyLnVucmVmKEMpKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKG4pLHtpZDpyLnVucmVmKG8pLnRyaWdnZXJJZCxyZWY6ci51bnJlZihhKSx0eXBlOiJidXR0b24iPT09ZS5hcz8iYnV0dG9uIjp2b2lkIDAsImFyaWEtaGFzcG9wdXAiOiJkaWFsb2ciLCJhcmlhLWV4cGFuZGVkIjpyLnVucmVmKG8pLm9wZW4udmFsdWUsImFyaWEtY29udHJvbHMiOnIudW5yZWYobykuY29udGVudElkLCJkYXRhLXN0YXRlIjpyLnVucmVmKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLGFzOmUuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGQsb25DbGljazpyLnVucmVmKG8pLm9uT3BlblRvZ2dsZX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJpZCIsInR5cGUiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1jb250cm9scyIsImRhdGEtc3RhdGUiLCJhcyIsImFzLWNoaWxkIiwib25DbGljayJdKV0pLF86M30pKX19KSxHZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoWiksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksamU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49cSh0KTtyZXR1cm4gaSgpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoeWUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLm8sLi4uci51bnJlZihuKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtjb25zdFtXZSxIZV09cCgiRHJvcGRvd25NZW51Um9vdCIpO3ZhciBYZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dDtpKCk7Y29uc3QgYT1zKG8sIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpvLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09by5vcGVufSksdT1yLnJlZigpLHttb2RhbDpsLGRpcjpkfT1yLnRvUmVmcyhvKSxwPWooZCk7cmV0dXJuIEhlKHtvcGVuOmEsb25PcGVuQ2hhbmdlOmU9PnthLnZhbHVlPWV9LG9uT3BlblRvZ2dsZTooKT0+e2EudmFsdWU9IWEudmFsdWV9LHRyaWdnZXJJZDoiIix0cmlnZ2VyRWxlbWVudDp1LGNvbnRlbnRJZDoiIixtb2RhbDpsLGRpcjpwfSksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihhZSkse29wZW46ci51bnJlZihhKSwib25VcGRhdGU6b3BlbiI6dFswXXx8KHRbMF09ZT0+ci5pc1JlZihhKT9hLnZhbHVlPWU6bnVsbCksZGlyOnIudW5yZWYocCksbW9kYWw6ci51bnJlZihsKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyLnVucmVmKGEpfSldKSxfOjN9LDgsWyJvcGVuIiwiZGlyIiwibW9kYWwiXSkpfX0pLFllPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz11KGUsdCk7aSgpO2NvbnN0IG49V2UoKSxhPXIucmVmKCExKTtmdW5jdGlvbiBoYW5kbGVDbG9zZUF1dG9Gb2N1cyhlKXtlLmRlZmF1bHRQcmV2ZW50ZWR8fChhLnZhbHVlfHxzZXRUaW1lb3V0KCgpPT57bi50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoKX0sMCksYS52YWx1ZT0hMSxlLnByZXZlbnREZWZhdWx0KCkpfXJldHVybiBuLmNvbnRlbnRJZHx8PU8odm9pZCAwLCJyZWthLWRyb3Bkb3duLW1lbnUtY29udGVudCIpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobWUpLHIubWVyZ2VQcm9wcyhyLnVucmVmKG8pLHtpZDpyLnVucmVmKG4pLmNvbnRlbnRJZCwiYXJpYS1sYWJlbGxlZGJ5IjpyLnVucmVmKG4pPy50cmlnZ2VySWQsc3R5bGU6eyItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4iOiJ2YXIoLS1yZWthLXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS10cmlnZ2VyLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn0sb25DbG9zZUF1dG9Gb2N1czpoYW5kbGVDbG9zZUF1dG9Gb2N1cyxvbkludGVyYWN0T3V0c2lkZTp0WzBdfHwodFswXT1lPT57aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB0PWUuZGV0YWlsLm9yaWdpbmFsRXZlbnQsbz0wPT09dC5idXR0b24mJiEwPT09dC5jdHJsS2V5LGk9Mj09PXQuYnV0dG9ufHxvO3IudW5yZWYobikubW9kYWwudmFsdWUmJiFpfHwoYS52YWx1ZT0hMCksci51bnJlZihuKS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uY29udGFpbnMoZS50YXJnZXQpJiZlLnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxRZT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVGaWx0ZXIiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbnB1dCJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLGE9cyhvLCJtb2RlbFZhbHVlIix0LHtkZWZhdWx0VmFsdWU6IiIscGFzc2l2ZTp2b2lkIDA9PT1vLm1vZGVsVmFsdWV9KTtvZSgpO2NvbnN0IGk9aWUoKTtfZShudWxsKSxyLndhdGNoKGEsZT0+e2kuc2VhcmNoUmVmLnZhbHVlPWU/PyIifSx7aW1tZWRpYXRlOiEwfSk7Y29uc3R7cHJpbWl0aXZlRWxlbWVudDp1fT1oKCksbD1yLmNvbXB1dGVkKCgpPT5vLmRpc2FibGVkfHwhMSksZD1yLnJlZigpO2Z1bmN0aW9uIGhhbmRsZUlucHV0KGUpe2lmKGwudmFsdWUpcmV0dXJuO2NvbnN0IHQ9ZS50YXJnZXQ7YS52YWx1ZT10LnZhbHVlLGkuc2VhcmNoUmVmLnZhbHVlPXQudmFsdWV9ZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKXtsLnZhbHVlfHwoWyJBcnJvd0Rvd24iLCJBcnJvd1VwIiwiSG9tZSIsIkVuZCJdLmluY2x1ZGVzKGUua2V5KT8oZS5wcmV2ZW50RGVmYXVsdCgpLGkub25LZXlkb3duTmF2aWdhdGlvbihlKSk6IkVudGVyIj09PWUua2V5PyhlLnByZXZlbnREZWZhdWx0KCksaS5vbktleWRvd25FbnRlcihlKSk6IkVzY2FwZSI9PT1lLmtleSYmYS52YWx1ZSYmKGUuc3RvcFByb3BhZ2F0aW9uKCksYS52YWx1ZT0iIixpLnNlYXJjaFJlZi52YWx1ZT0iIikpfXJldHVybiByLndhdGNoU3luY0VmZmVjdCgoKT0+ZC52YWx1ZT1pLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZT8uaWQpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobikse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjp1LGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsdmFsdWU6ci51bnJlZihhKSxkaXNhYmxlZDpsLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6bC52YWx1ZT8iIjp2b2lkIDAsImFyaWEtZGlzYWJsZWQiOiEhbC52YWx1ZXx8dm9pZCAwLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOmQudmFsdWUsdHlwZToidGV4dCIscm9sZToic2VhcmNoYm94IixvbklucHV0OmhhbmRsZUlucHV0LG9uS2V5ZG93bjpoYW5kbGVLZXlEb3dufSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnIudW5yZWYoYSl9KV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiXSkpfX0pLEplPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudUdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBpKCksKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihCZSksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksWmU9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51SXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49cSh0KTtyZXR1cm4gaSgpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoc2UpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLm8sLi4uci51bnJlZihuKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxldD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVJdGVtSW5kaWNhdG9yIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIGkoKSwoZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGZlKSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHQpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx0dD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVMYWJlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoYmUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHJ0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudVBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKHdlKSxyLm5vcm1hbGl6ZVByb3BzKHIuZ3VhcmRSZWFjdGl2ZVByb3BzKHQpKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxvdD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVSYWRpb0dyb3VwIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49cSh0KTtyZXR1cm4gaSgpLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoeGUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLm8sLi4uci51bnJlZihuKX0pKSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxudD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVSYWRpb0l0ZW0iLHByb3BzOnt2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpO3JldHVybiBpKCksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihTZSksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyhyLnVucmVmKG8pKSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksYXQ9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBpKCksKGUsbyk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihQZSksci5ub3JtYWxpemVQcm9wcyhyLmd1YXJkUmVhY3RpdmVQcm9wcyh0KSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksaXQ9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51U3ViIixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89ZSxuPXMobywib3BlbiIsdCx7cGFzc2l2ZTp2b2lkIDA9PT1vLm9wZW4sZGVmYXVsdFZhbHVlOm8uZGVmYXVsdE9wZW4/PyExfSk7cmV0dXJuIGkoKSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKERlKSx7b3BlbjpyLnVucmVmKG4pLCJvblVwZGF0ZTpvcGVuIjp0WzBdfHwodFswXT1lPT5yLmlzUmVmKG4pP24udmFsdWU9ZTpudWxsKX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyLnVucmVmKG4pfSldKSxfOjN9LDgsWyJvcGVuIl0pKX19KSx1dD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcm9wZG93bk1lbnVTdWJDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dShlLHQpO3JldHVybiBpKCksKGUsdCk9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soci51bnJlZihGZSksci5tZXJnZVByb3BzKHIudW5yZWYobykse3N0eWxlOnsiLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksbHQ9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaSgpLChlLG8pPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoQWUpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGR0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyb3Bkb3duTWVudVRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxvPVdlKCkse2ZvcndhcmRSZWY6YX09aSgpO3JldHVybiBvLnRyaWdnZXJJZHx8PU8odm9pZCAwLCJyZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlciIpLChlLGkpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoSikseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZihuKSx7aWQ6ci51bnJlZihvKS50cmlnZ2VySWQscmVmOnIudW5yZWYoYSksdHlwZToiYnV0dG9uIj09PWUuYXM/ImJ1dHRvbiI6dm9pZCAwLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGFzOmUuYXMsImFyaWEtaGFzcG9wdXAiOiJtZW51IiwiYXJpYS1leHBhbmRlZCI6ci51bnJlZihvKS5vcGVuLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjpyLnVucmVmKG8pLm9wZW4udmFsdWU/ci51bnJlZihvKS5jb250ZW50SWQ6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjplLmRpc2FibGVkPyIiOnZvaWQgMCxkaXNhYmxlZDplLmRpc2FibGVkLCJkYXRhLXN0YXRlIjpyLnVucmVmKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLG9uQ2xpY2s6aVswXXx8KGlbMF09YXN5bmMgdD0+e2UuZGlzYWJsZWR8fDAhPT10LmJ1dHRvbnx8ITEhPT10LmN0cmxLZXl8fChyLnVucmVmKG8pPy5vbk9wZW5Ub2dnbGUoKSxhd2FpdCByLm5leHRUaWNrKCksci51bnJlZihvKS5vcGVuLnZhbHVlJiZ0LnByZXZlbnREZWZhdWx0KCkpfSksb25LZXlkb3duOmlbMV18fChpWzFdPXIud2l0aEtleXModD0+e2UuZGlzYWJsZWR8fChbIkVudGVyIiwiICJdLmluY2x1ZGVzKHQua2V5KSYmci51bnJlZihvKS5vbk9wZW5Ub2dnbGUoKSwiQXJyb3dEb3duIj09PXQua2V5JiZyLnVucmVmKG8pLm9uT3BlbkNoYW5nZSghMCksWyJFbnRlciIsIiAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyh0LmtleSkmJnQucHJldmVudERlZmF1bHQoKSl9LFsiZW50ZXIiLCJzcGFjZSIsImFycm93LWRvd24iXSkpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImlkIiwidHlwZSIsImFzLWNoaWxkIiwiYXMiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1jb250cm9scyIsImRhdGEtZGlzYWJsZWQiLCJkaXNhYmxlZCIsImRhdGEtc3RhdGUiXSldKSxfOjN9KSl9fSksc3Q9ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSG92ZXJDYXJkQXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIGkoKSwoZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKHcpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0W3B0LGN0XT1wKCJIb3ZlckNhcmRSb290Iik7dmFyIGZ0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZFJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sb3BlbkRlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjcwMH0sY2xvc2VEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz1lLG49dCx7b3BlbkRlbGF5OmEsY2xvc2VEZWxheTp1fT1yLnRvUmVmcyhvKTtpKCk7Y29uc3QgbD1zKG8sIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpvLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09by5vcGVufSksZD1yLnJlZigwKSxwPXIucmVmKDApLGM9ci5yZWYoITEpLGY9ci5yZWYoITEpLHk9ci5yZWYoITEpLGc9ci5yZWYoKTtyZXR1cm4gY3Qoe29wZW46bCxvbk9wZW5DaGFuZ2UoZSl7bC52YWx1ZT1lfSxvbk9wZW46ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocC52YWx1ZSksZC52YWx1ZT0odm9pZCAwKS5zZXRUaW1lb3V0KCgpPT5sLnZhbHVlPSEwLGEudmFsdWUpfSxvbkNsb3NlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQudmFsdWUpLGMudmFsdWV8fGYudmFsdWV8fChwLnZhbHVlPSh2b2lkIDApLnNldFRpbWVvdXQoKCk9PmwudmFsdWU9ITEsdS52YWx1ZSkpfSxvbkRpc21pc3M6ZnVuY3Rpb24oKXtsLnZhbHVlPSExfSxoYXNTZWxlY3Rpb25SZWY6Yyxpc1BvaW50ZXJEb3duT25Db250ZW50UmVmOmYsaXNQb2ludGVySW5UcmFuc2l0UmVmOnksdHJpZ2dlckVsZW1lbnQ6Z30pLChlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYoayksbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnIudW5yZWYobCl9KV0pLF86M30pKX19KTtmdW5jdGlvbiBleGNsdWRlVG91Y2goZSl7cmV0dXJuIHQ9PiJ0b3VjaCI9PT10LnBvaW50ZXJUeXBlP3ZvaWQgMDplKCl9dmFyIHl0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnRJbXBsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG89dCxuPWMoZSkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDp1fT1pKCksbD1wdCgpLHtpc1BvaW50ZXJJblRyYW5zaXQ6ZCxvblBvaW50ZXJFeGl0OnN9PXVzZUdyYWNlQXJlYShsLnRyaWdnZXJFbGVtZW50LHUpO2YobC5pc1BvaW50ZXJJblRyYW5zaXRSZWYsZCx7ZGlyZWN0aW9uOiJydGwifSkscygoKT0+e2wub25DbG9zZSgpfSk7Y29uc3QgcD1yLnJlZighMSk7bGV0IHk7cmV0dXJuIHIud2F0Y2hFZmZlY3QoZT0+e2lmKHAudmFsdWUpe2NvbnN0IHQ9KHZvaWQgMCkuYm9keTt5PXQuc3R5bGUudXNlclNlbGVjdHx8dC5zdHlsZS53ZWJraXRVc2VyU2VsZWN0LHQuc3R5bGUudXNlclNlbGVjdD0ibm9uZSIsdC5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PSJub25lIixlKCgpPT57dC5zdHlsZS51c2VyU2VsZWN0PXksdC5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PXl9KX19KSwoZSx0KT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKEQpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uRXNjYXBlS2V5RG93bjp0WzFdfHwodFsxXT1lPT5vKCJlc2NhcGVLZXlEb3duIixlKSksb25Qb2ludGVyRG93bk91dHNpZGU6dFsyXXx8KHRbMl09ZT0+bygicG9pbnRlckRvd25PdXRzaWRlIixlKSksb25Gb2N1c091dHNpZGU6dFszXXx8KHRbM109ci53aXRoTW9kaWZpZXJzKGU9Pm8oImZvY3VzT3V0c2lkZSIsZSksWyJwcmV2ZW50Il0pKSxvbkRpc21pc3M6ci51bnJlZihsKS5vbkRpc21pc3N9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoci51bnJlZih4KSxyLm1lcmdlUHJvcHMoey4uLnIudW5yZWYobiksLi4uZS4kYXR0cnN9LHtyZWY6ci51bnJlZihhKSwiZGF0YS1zdGF0ZSI6ci51bnJlZihsKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixzdHlsZTp7dXNlclNlbGVjdDpwLnZhbHVlPyJ0ZXh0Ijp2b2lkIDAsV2Via2l0VXNlclNlbGVjdDpwLnZhbHVlPyJ0ZXh0Ijp2b2lkIDAsIi0tcmVrYS1ob3Zlci1jYXJkLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbiI6InZhcigtLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pIiwiLS1yZWthLWhvdmVyLWNhcmQtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLWhvdmVyLWNhcmQtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCkiLCItLXJla2EtaG92ZXItY2FyZC10cmlnZ2VyLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLXdpZHRoKSIsIi0tcmVrYS1ob3Zlci1jYXJkLXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifSxvblBvaW50ZXJkb3duOnRbMF18fCh0WzBdPWU9PntlLmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZS50YXJnZXQpJiYocC52YWx1ZT0hMCksci51bnJlZihsKS5oYXNTZWxlY3Rpb25SZWYudmFsdWU9ITEsci51bnJlZihsKS5pc1BvaW50ZXJEb3duT25Db250ZW50UmVmLnZhbHVlPSEwfSl9KSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIiwic3R5bGUiXSldKSxfOjN9LDgsWyJvbkRpc21pc3MiXSkpfX0pLGd0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBvPXUoZSx0KSx7Zm9yd2FyZFJlZjpufT1pKCksYT1wdCgpO3JldHVybihlLHQpPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHIudW5yZWYobCkse3ByZXNlbnQ6ZS5mb3JjZU1vdW50fHxyLnVucmVmKGEpLm9wZW4udmFsdWV9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoeXQsci5tZXJnZVByb3BzKHIudW5yZWYobykse3JlZjpyLnVucmVmKG4pLG9uUG9pbnRlcmVudGVyOnRbMF18fCh0WzBdPWU9PnIudW5yZWYoZXhjbHVkZVRvdWNoKShyLnVucmVmKGEpLm9uT3BlbikoZSkpfSkse2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLHZ0PXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkhvdmVyQ2FyZFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4oZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKGQpLHIubm9ybWFsaXplUHJvcHMoci5ndWFyZFJlYWN0aXZlUHJvcHModCkpLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0IG10PXtSb290OlhlLFRyaWdnZXI6ZHQsUG9ydGFsOnJ0LENvbnRlbnQ6WWUsQXJyb3c6R2UsSXRlbTpaZSxHcm91cDpKZSxTZXBhcmF0b3I6YXQsQ2hlY2tib3hJdGVtOmplLEl0ZW1JbmRpY2F0b3I6ZXQsTGFiZWw6dHQsUmFkaW9Hcm91cDpvdCxSYWRpb0l0ZW06bnQsU3ViOml0LFN1YkNvbnRlbnQ6dXQsU3ViVHJpZ2dlcjpsdCxGaWx0ZXI6UWV9LGh0PXtSb290OmZ0LFRyaWdnZXI6ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSG92ZXJDYXJkVHJpZ2dlciIscHJvcHM6e3JlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYSJ9fSxzZXR1cChlKXtjb25zdHtmb3J3YXJkUmVmOnQsY3VycmVudEVsZW1lbnQ6b309aSgpLGE9cHQoKTtmdW5jdGlvbiBoYW5kbGVMZWF2ZSgpe3NldFRpbWVvdXQoKCk9PnthLmlzUG9pbnRlckluVHJhbnNpdFJlZi52YWx1ZXx8YS5vcGVuLnZhbHVlfHxhLm9uQ2xvc2UoKX0sMCl9cmV0dXJuIGEudHJpZ2dlckVsZW1lbnQ9bywoZSxvKT0+KHIub3BlbkJsb2NrKCksci5jcmVhdGVCbG9jayhyLnVucmVmKEMpLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTplLnJlZmVyZW5jZX0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShyLnVucmVmKG4pLHtyZWY6ci51bnJlZih0KSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLCJkYXRhLXN0YXRlIjpyLnVucmVmKGEpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLCJkYXRhLWdyYWNlLWFyZWEtdHJpZ2dlciI6IiIsb25Qb2ludGVyZW50ZXI6b1swXXx8KG9bMF09ZT0+ci51bnJlZihleGNsdWRlVG91Y2gpKHIudW5yZWYoYSkub25PcGVuKShlKSksb25Qb2ludGVybGVhdmU6b1sxXXx8KG9bMV09ZT0+ci51bnJlZihleGNsdWRlVG91Y2gpKGhhbmRsZUxlYXZlKShlKSksb25Gb2N1czpvWzJdfHwob1syXT1lPT5yLnVucmVmKGEpLm9uT3BlbigpKSxvbkJsdXI6b1szXXx8KG9bM109ZT0+ci51bnJlZihhKS5vbkNsb3NlKCkpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiLCJkYXRhLXN0YXRlIl0pXSksXzozfSw4LFsicmVmZXJlbmNlIl0pKX19KSxQb3J0YWw6dnQsQ29udGVudDpndCxBcnJvdzpzdH0scXQ9e1Jvb3Q6TWUsVHJpZ2dlcjpVZSxQb3J0YWw6TGUsQ29udGVudDp6ZSxBcnJvdzpJZSxDbG9zZTpUZSxBbmNob3I6RWV9LEJ0PXttZXRhOiIiLGN0cmw6IiIsYWx0OiIiLHdpbjoi4oqeIixjb21tYW5kOiLijJgiLHNoaWZ0OiLih6ciLGNvbnRyb2w6IuKMgyIsb3B0aW9uOiLijKUiLGVudGVyOiLihrUiLGRlbGV0ZToi4oymIixiYWNrc3BhY2U6IuKMqyIsZXNjYXBlOiJFc2MiLHRhYjoi4oelIixjYXBzbG9jazoi4oeqIixhcnJvd3VwOiLihpEiLGFycm93cmlnaHQ6IuKGkiIsYXJyb3dkb3duOiLihpMiLGFycm93bGVmdDoi4oaQIixwYWdldXA6IuKHniIscGFnZWRvd246IuKHnyIsaG9tZToi4oaWIixlbmQ6IuKGmCJ9LGJ0PWEoKCk9Pntjb25zdCBlPXIuY29tcHV0ZWQoKCk9PiExKSx0PXIucmVhY3RpdmUoe21ldGE6IiAiLGFsdDoiICIsY3RybDoiICJ9KTtyZXR1cm57bWFjT1M6ZSxnZXRLYmRLZXk6ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm5bIm1ldGEiLCJhbHQiLCJjdHJsIl0uaW5jbHVkZXMoZSk/dFtlXTpCdFtlXXx8ZX19fSksd3Q9e2Jhc2U6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0xIHJvdW5kZWQtc20gZm9udC1tZWRpdW0gZm9udC1zYW5zIHVwcGVyY2FzZSIsdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIifSxzaXplOntzbToiaC00IG1pbi13LVsxNnB4XSB0ZXh0LVsxMHB4XSIsbWQ6ImgtNSBtaW4tdy1bMjBweF0gdGV4dC1bMTFweF0iLGxnOiJoLTYgbWluLXctWzI0cHhdIHRleHQtWzEycHhdIn19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvNTAgdGV4dC1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAgdGV4dC1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIHRleHQtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vNTAgdGV4dC1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCB0ZXh0LXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvNTAgdGV4dC1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtcHJpbWFyeSBiZy1wcmltYXJ5LzEwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBiZy1zZWNvbmRhcnkvMTAifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgYmctc3VjY2Vzcy8xMCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtaW5mbyBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC13YXJuaW5nIGJnLXdhcm5pbmcvMTAifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1lcnJvciBiZy1lcnJvci8xMCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvMjUgYmctcHJpbWFyeS8xMCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUgYmctc2Vjb25kYXJ5LzEwIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSBiZy1zdWNjZXNzLzEwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWluZm8gcmluZyByaW5nLWluc2V0IHJpbmctaW5mby8yNSBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSBiZy13YXJuaW5nLzEwIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSBiZy1lcnJvci8xMCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9XSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6Im91dGxpbmUiLGNvbG9yOiJuZXV0cmFsIixzaXplOiJtZCJ9fSxDdD17X19uYW1lOiJVS2JkIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJrYmQifSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoYSl7Y29uc3QgaT1hLHtnZXRLYmRLZXk6dX09YnQoKSxsPWUoKSxkPXQoImtiZCIsaSkscz1yLmNvbXB1dGVkKCgpPT5vKHtleHRlbmQ6byh3dCksLi4ubC51aT8ua2JkfHx7fX0pKTtyZXR1cm4oZSx0LG8sbCk9Pnt0KEgoci51bnJlZihuKSxyLm1lcmdlUHJvcHMoe2FzOmEuYXMsY2xhc3M6cy52YWx1ZSh7Y2xhc3M6W3IudW5yZWYoZCk/LmJhc2UsaS5jbGFzc10sY29sb3I6aS5jb2xvcix2YXJpYW50OmkudmFyaWFudCxzaXplOmkuc2l6ZX0pfSxsKSx7ZGVmYXVsdDpyLndpdGhDdHgoKHQsbyxuLGkpPT57aWYoIW8pcmV0dXJuW3IucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse30sKCk9PltyLmNyZWF0ZVRleHRWTm9kZShyLnRvRGlzcGxheVN0cmluZyhyLnVucmVmKHUpKGEudmFsdWUpKSwxKV0pXTtYKGUuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+e28oYCR7WShyLnVucmVmKHUpKGEudmFsdWUpKX1gKX0sbyxuLGkpfSksXzozfSxvKSl9fX0sa3Q9Q3Quc2V0dXA7Q3Quc2V0dXA9KGUsdCk9Pntjb25zdCBvPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihvLm1vZHVsZXN8fChvLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9LYmQudnVlIiksa3Q/a3QoZSx0KTp2b2lkIDB9O2V4cG9ydHtkdCBhcyBELGh0IGFzIEgscXQgYXMgUCxDdCBhcyBfLHVzZUdyYWNlQXJlYSBhcyBhLEdlIGFzIGIsWGUgYXMgYyxtdCBhcyBkLGJ0IGFzIGUsdXNlQXJyb3dOYXZpZ2F0aW9uIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD1LYmQtQVdHSnZlWEsubWpzLm1hcAo=", "chunks/build/Label-BUWLzyGL.mjs": "aW1wb3J0e3YgYXMgZSxNIGFzIHIsUCBhcyB0fWZyb20iLi9zZXJ2ZXIubWpzIjt2YXIgbz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9fSxzZXR1cChvKXtjb25zdCBhPW87cmV0dXJuIHIoKSwocixvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHQpLGUubWVyZ2VQcm9wcyhhLHtvbk1vdXNlZG93bjpvWzBdfHwob1swXT1lPT57IWUuZGVmYXVsdFByZXZlbnRlZCYmZS5kZXRhaWw+MSYmZS5wcmV2ZW50RGVmYXVsdCgpfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtleHBvcnR7byBhcyBMfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGFiZWwtQlVXTHp5R0wubWpzLm1hcAo=", "chunks/build/Modal-B0yWPxW_.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBvLGUgYXMgbCxFIGFzIHIsRiBhcyBhLEcgYXMgbixrIGFzIHMsdCBhcyBjLFkgYXMgaSxfIGFzIGQsSiBhcyB1LE0gYXMgcCxQIGFzIGYsVCBhcyB5LGFyIGFzIG0sUSBhcyB2LFMgYXMgayxtIGFzIEJ9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHt1IGFzIEMsYiBhcyBoLGEgYXMgeCxGIGFzIGcsRCBhcyB3LGcgYXMgX31mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7cCBhcyBifWZyb20iLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0e2YgYXMgUyxnIGFzICQscSBhcyBWLGogYXMgTn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0W0QscV09QigiRGlhbG9nUm9vdCIpO3ZhciBPPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJEaWFsb2dSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cCh0LHtlbWl0Om99KXtjb25zdCBsPXQscj1rKGwsIm9wZW4iLG8se2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09bC5vcGVufSksYT1lLnJlZigpLG49ZS5yZWYoKSx7bW9kYWw6c309ZS50b1JlZnMobCk7cmV0dXJuIHEoe29wZW46cixtb2RhbDpzLG9wZW5Nb2RhbDooKT0+e3IudmFsdWU9ITB9LG9uT3BlbkNoYW5nZTplPT57ci52YWx1ZT1lfSxvbk9wZW5Ub2dnbGU6KCk9PntyLnZhbHVlPSFyLnZhbHVlfSxjb250ZW50SWQ6IiIsdGl0bGVJZDoiIixkZXNjcmlwdGlvbklkOiIiLHRyaWdnZXJFbGVtZW50OmEsY29udGVudEVsZW1lbnQ6bn0pLCh0LG8pPT5lLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmUudW5yZWYociksY2xvc2U6KCk9PnIudmFsdWU9ITF9KX19KSxQPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ0Nsb3NlIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBvPXQ7cCgpO2NvbnN0IGw9RCgpO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZiksZS5tZXJnZVByb3BzKG8se3R5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCxvbkNsaWNrOnJbMF18fChyWzBdPXQ9PmUudW5yZWYobCkub25PcGVuQ2hhbmdlKCExKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIl0pKX19KSxBPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ0NvbnRlbnRJbXBsIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFwRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHQse2VtaXQ6b30pe2NvbnN0IGw9dCxyPW8sYT1EKCkse2ZvcndhcmRSZWY6bixjdXJyZW50RWxlbWVudDpzfT1wKCk7cmV0dXJuIGEudGl0bGVJZHx8PUModm9pZCAwLCJyZWthLWRpYWxvZy10aXRsZSIpLGEuZGVzY3JpcHRpb25JZHx8PUModm9pZCAwLCJyZWthLWRpYWxvZy1kZXNjcmlwdGlvbiIpLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZykseyJhcy1jaGlsZCI6IiIsbG9vcDoiIix0cmFwcGVkOmwudHJhcEZvY3VzLG9uTW91bnRBdXRvRm9jdXM6b1s1XXx8KG9bNV09ZT0+cigib3BlbkF1dG9Gb2N1cyIsZSkpLG9uVW5tb3VudEF1dG9Gb2N1czpvWzZdfHwob1s2XT1lPT5yKCJjbG9zZUF1dG9Gb2N1cyIsZSkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodyksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKGEpLmNvbnRlbnRJZCxyZWY6ZS51bnJlZihuKSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOnQuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLHJvbGU6ImRpYWxvZyIsImFyaWEtZGVzY3JpYmVkYnkiOmUudW5yZWYoYSkuZGVzY3JpcHRpb25JZCwiYXJpYS1sYWJlbGxlZGJ5IjplLnVucmVmKGEpLnRpdGxlSWQsImRhdGEtc3RhdGUiOmUudW5yZWYoXykoZS51bnJlZihhKS5vcGVuLnZhbHVlKX0sdC4kYXR0cnMse29uRGlzbWlzczpvWzBdfHwob1swXT10PT5lLnVucmVmKGEpLm9uT3BlbkNoYW5nZSghMSkpLG9uRXNjYXBlS2V5RG93bjpvWzFdfHwob1sxXT1lPT5yKCJlc2NhcGVLZXlEb3duIixlKSksb25Gb2N1c091dHNpZGU6b1syXXx8KG9bMl09ZT0+cigiZm9jdXNPdXRzaWRlIixlKSksb25JbnRlcmFjdE91dHNpZGU6b1szXXx8KG9bM109ZT0+cigiaW50ZXJhY3RPdXRzaWRlIixlKSksb25Qb2ludGVyRG93bk91dHNpZGU6b1s0XXx8KG9bNF09ZT0+cigicG9pbnRlckRvd25PdXRzaWRlIixlKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFzIiwiYXMtY2hpbGQiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYS1sYWJlbGxlZGJ5IiwiZGF0YS1zdGF0ZSJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLEY9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nQ29udGVudE1vZGFsIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFwRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHQse2VtaXQ6b30pe2NvbnN0IGw9dCxyPW8sYT1EKCksbj1tKHIpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6Y309cCgpO3JldHVybiBoKGMpLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEEsZS5tZXJnZVByb3BzKHsuLi5sLC4uLmUudW5yZWYobil9LHtyZWY6ZS51bnJlZihzKSwidHJhcC1mb2N1cyI6ZS51bnJlZihhKS5vcGVuLnZhbHVlLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiEwLG9uQ2xvc2VBdXRvRm9jdXM6b1swXXx8KG9bMF09dD0+e3QuZGVmYXVsdFByZXZlbnRlZHx8KHQucHJldmVudERlZmF1bHQoKSxlLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cygpKX0pLG9uUG9pbnRlckRvd25PdXRzaWRlOm9bMV18fChvWzFdPWU9Pntjb25zdCB0PWUuZGV0YWlsLm9yaWdpbmFsRXZlbnQsbz0wPT09dC5idXR0b24mJiEwPT09dC5jdHJsS2V5OygyPT09dC5idXR0b258fG8pJiZlLnByZXZlbnREZWZhdWx0KCl9KSxvbkZvY3VzT3V0c2lkZTpvWzJdfHwob1syXT1lPT57ZS5wcmV2ZW50RGVmYXVsdCgpfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxJPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ0NvbnRlbnROb25Nb2RhbCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cCh0LHtlbWl0Om99KXtjb25zdCBsPXQscj1tKG8pO3AoKTtjb25zdCBhPUQoKSxuPWUucmVmKCExKSxzPWUucmVmKCExKTtyZXR1cm4odCxvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhBLGUubWVyZ2VQcm9wcyh7Li4ubCwuLi5lLnVucmVmKHIpfSx7InRyYXAtZm9jdXMiOiExLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uQ2xvc2VBdXRvRm9jdXM6b1swXXx8KG9bMF09dD0+e3QuZGVmYXVsdFByZXZlbnRlZHx8KG4udmFsdWV8fGUudW5yZWYoYSkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCksdC5wcmV2ZW50RGVmYXVsdCgpKSxuLnZhbHVlPSExLHMudmFsdWU9ITF9KSxvbkludGVyYWN0T3V0c2lkZTpvWzFdfHwob1sxXT10PT57dC5kZWZhdWx0UHJldmVudGVkfHwobi52YWx1ZT0hMCwicG9pbnRlcmRvd24iPT09dC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiYocy52YWx1ZT0hMCkpO2NvbnN0IG89dC50YXJnZXQsbD1lLnVucmVmKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyhvKTtsJiZ0LnByZXZlbnREZWZhdWx0KCksImZvY3VzaW4iPT09dC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlJiZzLnZhbHVlJiZ0LnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFQ9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHQse2VtaXQ6b30pe2NvbnN0IGw9dCxyPW8sYT1EKCksbj1tKHIpLHtmb3J3YXJkUmVmOnN9PXAoKTtyZXR1cm4odCxvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHYpLHtwcmVzZW50OnQuZm9yY2VNb3VudHx8ZS51bnJlZihhKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKGEpLm1vZGFsLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRixlLm1lcmdlUHJvcHMoe2tleTowLHJlZjplLnVucmVmKHMpfSx7Li4ubCwuLi5lLnVucmVmKG4pLC4uLnQuJGF0dHJzfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhJLGUubWVyZ2VQcm9wcyh7a2V5OjEscmVmOmUudW5yZWYocyl9LHsuLi5sLC4uLmUudW5yZWYobiksLi4udC4kYXR0cnN9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nRGVzY3JpcHRpb24iLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoicCJ9fSxzZXR1cCh0KXtjb25zdCBvPXQ7cCgpO2NvbnN0IGw9RCgpO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZiksZS5tZXJnZVByb3BzKG8se2lkOmUudW5yZWYobCkuZGVzY3JpcHRpb25JZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxqPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ092ZXJsYXlJbXBsIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3Qgbz1EKCk7cmV0dXJuIHgoITApLHAoKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGYpLHthczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJkYXRhLXN0YXRlIjplLnVucmVmKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLHN0eWxlOnsicG9pbnRlci1ldmVudHMiOiJhdXRvIn19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiXSkpfX0pLE09ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nT3ZlcmxheSIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3Qgbz1EKCkse2ZvcndhcmRSZWY6bH09cCgpO3JldHVybih0LHIpPT5lLnVucmVmKG8pPy5tb2RhbC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodikse2tleTowLHByZXNlbnQ6dC5mb3JjZU1vdW50fHxlLnVucmVmKG8pLm9wZW4udmFsdWV9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoaixlLm1lcmdlUHJvcHModC4kYXR0cnMse3JlZjplLnVucmVmKGwpLGFzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGR9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxSPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRpYWxvZ1BvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IG89dDtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHkpLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMobykpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEs9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nVGl0bGUiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaDIifX0sc2V0dXAodCl7Y29uc3Qgbz10LGw9RCgpO3JldHVybiBwKCksKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmKSxlLm1lcmdlUHJvcHMobyx7aWQ6ZS51bnJlZihsKS50aXRsZUlkfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiXSkpfX0pLEw9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRGlhbG9nVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3Qgbz10LGw9RCgpLHtmb3J3YXJkUmVmOnJ9PXAoKTtyZXR1cm4gbC5jb250ZW50SWR8fD1DKHZvaWQgMCwicmVrYS1kaWFsb2ctY29udGVudCIpLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZiksZS5tZXJnZVByb3BzKG8se3JlZjplLnVucmVmKHIpLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCwiYXJpYS1oYXNwb3B1cCI6ImRpYWxvZyIsImFyaWEtZXhwYW5kZWQiOmUudW5yZWYobCkub3Blbi52YWx1ZXx8ITEsImFyaWEtY29udHJvbHMiOmUudW5yZWYobCkub3Blbi52YWx1ZT9lLnVucmVmKGwpLmNvbnRlbnRJZDp2b2lkIDAsImRhdGEtc3RhdGUiOmUudW5yZWYobCkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsb25DbGljazplLnVucmVmKGwpLm9uT3BlblRvZ2dsZX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInR5cGUiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1jb250cm9scyIsImRhdGEtc3RhdGUiLCJvbkNsaWNrIl0pKX19KTtjb25zdCBIPXtzbG90czp7b3ZlcmxheToiZml4ZWQgaW5zZXQtMCIsY29udGVudDoiYmctZGVmYXVsdCBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCBmbGV4IGZsZXgtY29sIGZvY3VzOm91dGxpbmUtbm9uZSIsaGVhZGVyOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHAtNCBzbTpweC02IG1pbi1oLSgtLXVpLWhlYWRlci1oZWlnaHQpIix3cmFwcGVyOiIiLGJvZHk6ImZsZXgtMSBwLTQgc206cC02Iixmb290ZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYiLHRpdGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGZvbnQtc2VtaWJvbGQiLGRlc2NyaXB0aW9uOiJtdC0xIHRleHQtbXV0ZWQgdGV4dC1zbSIsY2xvc2U6ImFic29sdXRlIHRvcC00IGVuZC00In0sdmFyaWFudHM6e3RyYW5zaXRpb246e3RydWU6e292ZXJsYXk6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW2ZhZGUtaW5fMjAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bZmFkZS1vdXRfMjAwbXNfZWFzZS1pbl0iLGNvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzIwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8yMDBtc19lYXNlLWluXSJ9fSxmdWxsc2NyZWVuOnt0cnVlOntjb250ZW50OiJpbnNldC0wIn0sZmFsc2U6e2NvbnRlbnQ6InctW2NhbGMoMTAwdnctMnJlbSldIG1heC13LWxnIHJvdW5kZWQtbGcgc2hhZG93LWxnIHJpbmcgcmluZy1kZWZhdWx0In19LG92ZXJsYXk6e3RydWU6e292ZXJsYXk6ImJnLWVsZXZhdGVkLzc1In19LHNjcm9sbGFibGU6e3RydWU6e292ZXJsYXk6Im92ZXJmbG93LXktYXV0byIsY29udGVudDoicmVsYXRpdmUifSxmYWxzZTp7Y29udGVudDoiZml4ZWQiLGJvZHk6Im92ZXJmbG93LXktYXV0byJ9fX0sY29tcG91bmRWYXJpYW50czpbe3Njcm9sbGFibGU6ITAsZnVsbHNjcmVlbjohMSxjbGFzczp7b3ZlcmxheToiZ3JpZCBwbGFjZS1pdGVtcy1jZW50ZXIgcC00IHNtOnB5LTgifX0se3Njcm9sbGFibGU6ITEsZnVsbHNjcmVlbjohMSxjbGFzczp7Y29udGVudDoidG9wLTEvMiBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgbWF4LWgtW2NhbGMoMTAwZHZoLTJyZW0pXSBzbTptYXgtaC1bY2FsYygxMDBkdmgtNHJlbSldIG92ZXJmbG93LWhpZGRlbiJ9fV19LHo9e19fbmFtZToiVU1vZGFsIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7dGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvdmVybGF5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2Nyb2xsYWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJhZnRlcjpsZWF2ZSIsImFmdGVyOmVudGVyIiwiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAocCx7ZW1pdDpmfSl7Y29uc3QgeT1wLG09Zix2PWUudXNlU2xvdHMoKSx7dDprfT10KCksQj1vKCksQz1sKCJtb2RhbCIseSksaD1yKGEoeSwib3BlbiIsImRlZmF1bHRPcGVuIiwibW9kYWwiKSxtKSx4PW4oZS50b1JlZigoKT0+eS5wb3J0YWwpKSxnPWUudG9SZWYoKCk9PnkuY29udGVudCksdz1lLmNvbXB1dGVkKCgpPT57aWYoIXkuZGlzbWlzc2libGUpe3JldHVyblsiaW50ZXJhY3RPdXRzaWRlIiwiZXNjYXBlS2V5RG93biJdLnJlZHVjZSgoZSx0KT0+KGVbdF09ZT0+e2UucHJldmVudERlZmF1bHQoKSxtKCJjbG9zZTpwcmV2ZW50Iil9LGUpLHt9KX1yZXR1cm57cG9pbnRlckRvd25PdXRzaWRlOmU9PmIoZSx7c2Nyb2xsYWJsZTp5LnNjcm9sbGFibGV9KX19KSxbXyxEXT1zKCkscT1lLmNvbXB1dGVkKCgpPT5jKHtleHRlbmQ6YyhIKSwuLi5CLnVpPy5tb2RhbHx8e319KSh7dHJhbnNpdGlvbjp5LnRyYW5zaXRpb24sZnVsbHNjcmVlbjp5LmZ1bGxzY3JlZW4sb3ZlcmxheTp5Lm92ZXJsYXksc2Nyb2xsYWJsZTp5LnNjcm9sbGFibGV9KSk7cmV0dXJuKHQsbyxsLHIpPT57byhTKGUudW5yZWYoTyksZS5tZXJnZVByb3BzKGUudW5yZWYoaCkscikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3BlbjpvLGNsb3NlOmx9LHIsYSxuKT0+e2lmKCFyKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXyksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVCksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6cS52YWx1ZS5jb250ZW50KHtjbGFzczpbIXYuZGVmYXVsdCYmeS5jbGFzcyxlLnVucmVmKEMpPy5jb250ZW50XX0pfSxnLnZhbHVlLHtvbkFmdGVyRW50ZXI6ZT0+bSgiYWZ0ZXI6ZW50ZXIiKSxvbkFmdGVyTGVhdmU6ZT0+bSgiYWZ0ZXI6bGVhdmUiKX0sZS50b0hhbmRsZXJzKHcudmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlshcC50aXRsZSYmIXYudGl0bGV8fCFwLmRlc2NyaXB0aW9uJiYhdi5kZXNjcmlwdGlvbnx8di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihpKSx7a2V5OjB9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AudGl0bGV8fHYudGl0bGU/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihLKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MH0pKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uP3YuY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudCIse2Nsb3NlOmx9LCgpPT5bdi5oZWFkZXJ8fHAudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb258fHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6cS52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoQyk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTpsfSwoKT0+W3AudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnEudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZihDKT8ud3JhcHBlcn0pfSxbcC50aXRsZXx8di50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6cS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihDKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpxLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiYWN0aW9ucyIpLHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFApLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNsb3NlIix7dWk6cS52YWx1ZX0sKCk9Plt5LmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCxlLm1lcmdlUHJvcHMoe2tleTowLGljb246cC5jbG9zZUljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihrKSgibW9kYWwuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiB5LmNsb3NlP3kuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6cS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZihDKT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHYuYm9keT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6cS52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKEMpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImJvZHkiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6cS52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoQyk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImNsYXNzIiwib25BZnRlckVudGVyIiwib25BZnRlckxlYXZlIl0pXSksXzoyfSwxMDI0KSx2LmRlZmF1bHQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEwpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLGNsYXNzOnkuY2xhc3N9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46b30pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoUiksZS51bnJlZih4KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLnNjcm9sbGFibGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE0pLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6cS52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKEMpPy5vdmVybGF5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3Aub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXSw2NCkpXSksXzoxfSldKSxfOjF9LDE2KV07cihTKGUudW5yZWYoXyksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8scixhLG4pPT57aWYoIXIpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihUKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpxLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshdi5kZWZhdWx0JiZ5LmNsYXNzLGUudW5yZWYoQyk/LmNvbnRlbnRdfSl9LGcudmFsdWUse29uQWZ0ZXJFbnRlcjplPT5tKCJhZnRlcjplbnRlciIpLG9uQWZ0ZXJMZWF2ZTplPT5tKCJhZnRlcjpsZWF2ZSIpfSxlLnRvSGFuZGxlcnMody52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyFwLnRpdGxlJiYhdi50aXRsZXx8IXAuZGVzY3JpcHRpb24mJiF2LmRlc2NyaXB0aW9ufHx2LmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGkpLHtrZXk6MH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bcC50aXRsZXx8di50aXRsZT92LmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowfSkpLHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6bH0sKCk9Plt2LmhlYWRlcnx8cC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbnx8eS5jbG9zZXx8di5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpxLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihDKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOmx9LCgpPT5bcC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6cS52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSl9LFtwLnRpdGxlfHx2LnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihLKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpxLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKEMpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEUpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnEudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoQyk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJhY3Rpb25zIikseS5jbG9zZXx8di5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUCkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY2xvc2UiLHt1aTpxLnZhbHVlfSwoKT0+W3kuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjpwLmNsb3NlSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGspKCJtb2RhbC5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIHkuY2xvc2U/eS5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczpxLnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKEMpPy5jbG9zZX0pfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksXzoyfSwxMDI0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5ib2R5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpxLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoQyk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiYm9keSIse2Nsb3NlOmx9KV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx2LmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpxLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImZvb3RlciIse2Nsb3NlOmx9KV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksXzoyfSwxMDQwLFsiY2xhc3MiLCJvbkFmdGVyRW50ZXIiLCJvbkFmdGVyTGVhdmUiXSldO3IoUyhlLnVucmVmKFQpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnEudmFsdWUuY29udGVudCh7Y2xhc3M6WyF2LmRlZmF1bHQmJnkuY2xhc3MsZS51bnJlZihDKT8uY29udGVudF19KX0sZy52YWx1ZSx7b25BZnRlckVudGVyOmU9Pm0oImFmdGVyOmVudGVyIiksb25BZnRlckxlYXZlOmU9Pm0oImFmdGVyOmxlYXZlIil9LGUudG9IYW5kbGVycyh3LnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLHIsYSxuKT0+e2lmKCFyKXJldHVyblshcC50aXRsZSYmIXYudGl0bGV8fCFwLmRlc2NyaXB0aW9uJiYhdi5kZXNjcmlwdGlvbnx8di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihpKSx7a2V5OjB9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3AudGl0bGV8fHYudGl0bGU/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihLKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MH0pKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uP3YuY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudCIse2Nsb3NlOmx9LCgpPT5bdi5oZWFkZXJ8fHAudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb258fHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6cS52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoQyk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTpsfSwoKT0+W3AudGl0bGV8fHYudGl0bGV8fHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnEudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZihDKT8ud3JhcHBlcn0pfSxbcC50aXRsZXx8di50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6cS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihDKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxwLmRlc2NyaXB0aW9ufHx2LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpxLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiYWN0aW9ucyIpLHkuY2xvc2V8fHYuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFApLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNsb3NlIix7dWk6cS52YWx1ZX0sKCk9Plt5LmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCxlLm1lcmdlUHJvcHMoe2tleTowLGljb246cC5jbG9zZUljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihrKSgibW9kYWwuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiB5LmNsb3NlP3kuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6cS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZihDKT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHYuYm9keT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6cS52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKEMpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImJvZHkiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6cS52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoQyk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpsfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07IXAudGl0bGUmJiF2LnRpdGxlfHwhcC5kZXNjcmlwdGlvbiYmIXYuZGVzY3JpcHRpb258fHYuY29udGVudD9yKFMoZS51bnJlZihpKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgobyxsLHIsYSk9PntpZighbClyZXR1cm5bcC50aXRsZXx8di50aXRsZT92LmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhwLnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSykse2tleTowfSkpLHAuZGVzY3JpcHRpb258fHYuZGVzY3JpcHRpb24/di5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihFKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEUpLHtrZXk6Mn0pKV07cC50aXRsZXx8di50aXRsZT92LmNvbnRlbnQ/bChTKGUudW5yZWYoSyksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8sbCxyLGEpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC50aXRsZSksMSldKV07JCh0LiRzbG90cywidGl0bGUiLHt9LCgpPT57bChgJHtWKHAudGl0bGUpfWApfSxsLHIsYSl9KSxfOjJ9LHIsYSkpOmwoIlx4M2MhLS0tLVx4M2UiKTpsKFMoZS51bnJlZihLKSxudWxsLG51bGwscixhKSkscC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj92LmNvbnRlbnQ/bChTKGUudW5yZWYoRSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8sbCxyLGEpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV07JCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT57bChgJHtWKHAuZGVzY3JpcHRpb24pfWApfSxsLHIsYSl9KSxfOjJ9LHIsYSkpOmwoIlx4M2MhLS0tLVx4M2UiKTpsKFMoZS51bnJlZihFKSxudWxsLG51bGwscixhKSl9KSxfOjJ9LGEsbikpOnIoIlx4M2MhLS0tLVx4M2UiKSwkKHQuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6bH0sKCk9Pnt2LmhlYWRlcnx8cC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbnx8eS5jbG9zZXx8di5jbG9zZT8ocihgPGRpdiBkYXRhLXNsb3Q9ImhlYWRlciIgY2xhc3M9IiR7TihxLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihDKT8uaGVhZGVyfSkpfSIke259PmApLCQodC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOmx9LCgpPT57cC50aXRsZXx8di50aXRsZXx8cC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj8ocihgPGRpdiBkYXRhLXNsb3Q9IndyYXBwZXIiIGNsYXNzPSIke04ocS52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSkpfSIke259PmApLHAudGl0bGV8fHYudGl0bGU/cihTKGUudW5yZWYoSykseyJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6cS52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihDKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGwscixhKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHAudGl0bGUpLDEpXSldOyQodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+e2woYCR7VihwLnRpdGxlKX1gKX0sbCxyLGEpfSksXzoyfSxhLG4pKTpyKCJceDNjIS0tLS1ceDNlIikscC5kZXNjcmlwdGlvbnx8di5kZXNjcmlwdGlvbj9yKFMoZS51bnJlZihFKSx7ImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpxLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKG8sbCxyLGEpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocC5kZXNjcmlwdGlvbiksMSldKV07JCh0LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT57bChgJHtWKHAuZGVzY3JpcHRpb24pfWApfSxsLHIsYSl9KSxfOjJ9LGEsbikpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLCQodC4kc2xvdHMsImFjdGlvbnMiLHt9LG51bGwscixhLG4pLHkuY2xvc2V8fHYuY2xvc2U/cihTKGUudW5yZWYoUCkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgobyxsLHIsYSk9PntpZighbClyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjbG9zZSIse3VpOnEudmFsdWV9LCgpPT5beS5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQsZS5tZXJnZVByb3BzKHtrZXk6MCxpY29uOnAuY2xvc2VJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoaykoIm1vZGFsLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgeS5jbG9zZT95LmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnEudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoQyk/LmNsb3NlfSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldOyQodC4kc2xvdHMsImNsb3NlIix7dWk6cS52YWx1ZX0sKCk9Pnt5LmNsb3NlP2woUyhkLGUubWVyZ2VQcm9wcyh7aWNvbjpwLmNsb3NlSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGspKCJtb2RhbC5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIHkuY2xvc2U/eS5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczpxLnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKEMpPy5jbG9zZX0pfSksbnVsbCxyLGEpKTpsKCJceDNjIS0tLS1ceDNlIil9LGwscixhKX0pLF86Mn0sYSxuKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLGEsbikscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSx2LmJvZHk/KHIoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtOKHEudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZihDKT8uYm9keX0pKX0iJHtufT5gKSwkKHQuJHNsb3RzLCJib2R5Iix7Y2xvc2U6bH0sbnVsbCxyLGEsbikscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSx2LmZvb3Rlcj8ocihgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7TihxLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSkpfSIke259PmApLCQodC4kc2xvdHMsImZvb3RlciIse2Nsb3NlOmx9LG51bGwscixhLG4pLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIil9LHIsYSxuKX0pLF86Mn0sYSxuKSl9KSxfOjJ9LGEsbikpLHYuZGVmYXVsdD9yKFMoZS51bnJlZihMKSx7ImFzLWNoaWxkIjoiIixjbGFzczp5LmNsYXNzfSx7ZGVmYXVsdDplLndpdGhDdHgoKGwscixhLG4pPT57aWYoIXIpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46b30pXTskKHQuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpvfSxudWxsLHIsYSxuKX0pLF86Mn0sYSxuKSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoUyhlLnVucmVmKFIpLGUudW5yZWYoeCkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8sbCxyKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltwLnNjcm9sbGFibGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE0pLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6cS52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKEMpPy5vdmVybGF5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3Aub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXSw2NCkpXSksXzoxfSldO28oUyhlLnVucmVmKHUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8sbCxyKT0+e2lmKCFvKXJldHVybltwLnNjcm9sbGFibGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE0pLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6cS52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKEMpPy5vdmVybGF5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW3Aub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXSw2NCkpXTtwLnNjcm9sbGFibGU/byhTKGUudW5yZWYoTSkseyJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpxLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoQyk/Lm92ZXJsYXl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8sbCxyKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoRCkpXTtvKFMoZS51bnJlZihEKSxudWxsLG51bGwsbCxyKSl9KSxfOjJ9LGwscikpOihvKCJceDNjIS0tWy0tXHgzZSIpLHAub3ZlcmxheT9vKFMoZS51bnJlZihNKSx7ImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnEudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZihDKT8ub3ZlcmxheX0pfSxudWxsLGwscikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKFMoZS51bnJlZihEKSxudWxsLG51bGwsbCxyKSksbygiXHgzYyEtLV0tLVx4M2UiKSl9KSxfOjJ9LGwscikpfSksXzoyfSxhLG4pKX0pLF86M30sbCkpfX19LFU9ei5zZXR1cDt6LnNldHVwPSh0LG8pPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvTW9kYWwudnVlIiksVT9VKHQsbyk6dm9pZCAwfTtleHBvcnR7TCBhcyBELHogYXMgXyxLIGFzIGEsRSBhcyBiLFIgYXMgYyxNIGFzIGQsVCBhcyBlLFAgYXMgZixPIGFzIGd9OwovLyMgc291cmNlTWFwcGluZ1VSTD1Nb2RhbC1CMHlXUHhXXy5tanMubWFwCg==", "chunks/build/NavigationMenu-dNaFFhma.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBsLEUgYXMgYSxGIGFzIG4sayBhcyBpLHQgYXMgbyxJIGFzIHIsZyBhcyBjLEwgYXMgcyxiIGFzIGQsSyBhcyB1LGFoIGFzIGYsYWkgYXMgdixhaiBhcyBwLE0gYXMgaCxOIGFzIGssUCBhcyBtLGExIGFzIGcsWSBhcyBMLEcgYXMgYixKIGFzIHgsciBhcyB5LGFrIGFzIEksUSBhcyBDLFogYXMgQixTIGFzIHcsYWwgYXMgVixtIGFzIF8sWCBhcyBOLFYgYXMgUyxhbSBhcyBEfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBFfWZyb20iLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnR7aSBhcyBQfWZyb20iLi9pc1ZhbHVlRXF1YWxPckV4aXN0LURtUHluNWJOLm1qcyI7aW1wb3J0e0ggYXMgJCxQIGFzIFQsdSBhcyBxfWZyb20iLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnR7dSBhcyB6LEQgYXMgT31mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7YUUgYXMgSyxhWCBhcyBBfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7XyBhcyBSfWZyb20iLi9CYWRnZS1CQjBLbE1RVi5tanMiO2ltcG9ydHtwIGFzIE19ZnJvbSIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtpbXBvcnR7XyBhcyBGfWZyb20iLi9Ub29sdGlwLUJQOHpiOERLLm1qcyI7aW1wb3J0e2YgYXMgVyxnIGFzIEgsaixxIGFzIFUsayBhcyBYLHQgYXMgR31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0W0osUV09XygiQ29sbGFwc2libGVSb290Iik7dmFyIFk9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29sbGFwc2libGVSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAodCx7ZXhwb3NlOmwsZW1pdDphfSl7Y29uc3Qgbj10LGk9dyhuLCJvcGVuIixhLHtkZWZhdWx0VmFsdWU6bi5kZWZhdWx0T3BlbixwYXNzaXZlOnZvaWQgMD09PW4ub3Blbn0pLHtkaXNhYmxlZDpvLHVubW91bnRPbkhpZGU6cn09ZS50b1JlZnMobik7cmV0dXJuIFEoe2NvbnRlbnRJZDoiIixkaXNhYmxlZDpvLG9wZW46aSx1bm1vdW50T25IaWRlOnIsb25PcGVuVG9nZ2xlOigpPT57by52YWx1ZXx8KGkudmFsdWU9IWkudmFsdWUpfX0pLGwoe29wZW46aX0pLGgoKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHthczp0LmFzLCJhcy1jaGlsZCI6bi5hc0NoaWxkLCJkYXRhLXN0YXRlIjplLnVucmVmKGkpPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihvKT8iIjp2b2lkIDB9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46ZS51bnJlZihpKX0pXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIl0pKX19KSxaPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJDb2xsYXBzaWJsZUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiY29udGVudEZvdW5kIl0sc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3QgYT10LG49bCxpPUooKTtpLmNvbnRlbnRJZHx8PXoodm9pZCAwLCJyZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQiKTtjb25zdCBvPWUucmVmKCkse2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDpjfT1oKCkscz1lLnJlZigwKSxkPWUucmVmKDApLHU9ZS5jb21wdXRlZCgoKT0+aS5vcGVuLnZhbHVlKSxmPWUucmVmKHUudmFsdWUpLHY9ZS5yZWYoKTtlLndhdGNoKCgpPT5bdS52YWx1ZSxvLnZhbHVlPy5wcmVzZW50XSxhc3luYygpPT57YXdhaXQgZS5uZXh0VGljaygpO2NvbnN0IHQ9Yy52YWx1ZTtpZighdClyZXR1cm47di52YWx1ZT12LnZhbHVlfHx7dHJhbnNpdGlvbkR1cmF0aW9uOnQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uLGFuaW1hdGlvbk5hbWU6dC5zdHlsZS5hbmltYXRpb25OYW1lfSx0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj0iMHMiLHQuc3R5bGUuYW5pbWF0aW9uTmFtZT0ibm9uZSI7Y29uc3QgbD10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2QudmFsdWU9bC5oZWlnaHQscy52YWx1ZT1sLndpZHRoLGYudmFsdWV8fCh0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj12LnZhbHVlLnRyYW5zaXRpb25EdXJhdGlvbix0LnN0eWxlLmFuaW1hdGlvbk5hbWU9di52YWx1ZS5hbmltYXRpb25OYW1lKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHA9ZS5jb21wdXRlZCgoKT0+Zi52YWx1ZSYmaS5vcGVuLnZhbHVlKTtyZXR1cm4gVihjLCJiZWZvcmVtYXRjaCIsZT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2kub25PcGVuVG9nZ2xlKCksbigiY29udGVudEZvdW5kIil9KX0pLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQykse3JlZl9rZXk6InByZXNlbnRSZWYiLHJlZjpvLHByZXNlbnQ6dC5mb3JjZU1vdW50fHxlLnVucmVmKGkpLm9wZW4udmFsdWUsImZvcmNlLW1vdW50IjohMH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh7cHJlc2VudDpsfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobSksZS5tZXJnZVByb3BzKHQuJGF0dHJzLHtpZDplLnVucmVmKGkpLmNvbnRlbnRJZCxyZWY6ZS51bnJlZihyKSwiYXMtY2hpbGQiOmEuYXNDaGlsZCxhczp0LmFzLGhpZGRlbjpsP3ZvaWQgMDplLnVucmVmKGkpLnVubW91bnRPbkhpZGUudmFsdWU/IiI6InVudGlsLWZvdW5kIiwiZGF0YS1zdGF0ZSI6cC52YWx1ZT92b2lkIDA6ZS51bnJlZihpKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihpKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLHN0eWxlOnsiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0IjpgJHtkLnZhbHVlfXB4YCwiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtd2lkdGgiOmAke3MudmFsdWV9cHhgfX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyFlLnVucmVmKGkpLnVubW91bnRPbkhpZGUudmFsdWV8fGw/ZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7a2V5OjB9KTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApXSksXzoyfSwxMDQwLFsiaWQiLCJhcy1jaGlsZCIsImFzIiwiaGlkZGVuIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJzdHlsZSJdKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLGVlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbGxhcHNpYmxlVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3QgbD10O2goKTtjb25zdCBhPUooKTtyZXR1cm4odCxuKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHt0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDAsYXM6dC5hcywiYXMtY2hpbGQiOmwuYXNDaGlsZCwiYXJpYS1jb250cm9scyI6ZS51bnJlZihhKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOmUudW5yZWYoYSkub3Blbi52YWx1ZSwiZGF0YS1zdGF0ZSI6ZS51bnJlZihhKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihhKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLGRpc2FibGVkOmUudW5yZWYoYSkuZGlzYWJsZWQ/LnZhbHVlLG9uQ2xpY2s6ZS51bnJlZihhKS5vbk9wZW5Ub2dnbGV9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidHlwZSIsImFzIiwiYXMtY2hpbGQiLCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1leHBhbmRlZCIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pKX19KTtmdW5jdGlvbiBnZXREZWZhdWx0VHlwZSh7dHlwZTplLGRlZmF1bHRWYWx1ZTp0LG1vZGVsVmFsdWU6bH0pe3JldHVybiBlfHxmdW5jdGlvbih7dHlwZTplLGRlZmF1bHRWYWx1ZTp0LG1vZGVsVmFsdWU6bH0pe2NvbnN0IGE9bHx8dDtyZXR1cm4gdm9pZCAwIT09bHx8dm9pZCAwIT09dD9BcnJheS5pc0FycmF5KGEpPyJtdWx0aXBsZSI6InNpbmdsZSI6ZT8/InNpbmdsZSJ9KHt0eXBlOmUsZGVmYXVsdFZhbHVlOnQsbW9kZWxWYWx1ZTpsfSl9ZnVuY3Rpb24gZ2V0RGVmYXVsdFZhbHVlKHt0eXBlOmUsZGVmYXVsdFZhbHVlOnR9KXtyZXR1cm4gdm9pZCAwIT09dD90OiJzaW5nbGUiPT09ZT92b2lkIDA6W119Y29uc3RbdGUsbGVdPV8oIkFjY29yZGlvblJvb3QiKTt2YXIgYWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQWNjb3JkaW9uUm9vdCIscHJvcHM6e2NvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmVydGljYWwifSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBhPXQsbj1sLHtkaXI6aSxkaXNhYmxlZDpvLHVubW91bnRPbkhpZGU6cn09ZS50b1JlZnMoYSksYz1FKGkpLHttb2RlbFZhbHVlOnMsY2hhbmdlTW9kZWxWYWx1ZTpkLGlzU2luZ2xlOnV9PWZ1bmN0aW9uKHQsbCl7Y29uc3QgYT1lLmNvbXB1dGVkKCgpPT5nZXREZWZhdWx0VHlwZSh0KSksbj13KHQsIm1vZGVsVmFsdWUiLGwse2RlZmF1bHRWYWx1ZTpnZXREZWZhdWx0VmFsdWUodCkscGFzc2l2ZTp2b2lkIDA9PT10Lm1vZGVsVmFsdWUsZGVlcDohMH0pLGk9ZS5jb21wdXRlZCgoKT0+InNpbmdsZSI9PT1hLnZhbHVlKTtyZXR1cm57bW9kZWxWYWx1ZTpuLGNoYW5nZU1vZGVsVmFsdWU6ZnVuY3Rpb24oZSl7aWYoInNpbmdsZSI9PT1hLnZhbHVlKW4udmFsdWU9QShlLG4udmFsdWUpP3ZvaWQgMDplO2Vsc2V7Y29uc3QgdD1BcnJheS5pc0FycmF5KG4udmFsdWUpP1suLi5uLnZhbHVlfHxbXV06W24udmFsdWVdLmZpbHRlcihCb29sZWFuKTtpZihQKHQsZSkpe2NvbnN0IGw9dC5maW5kSW5kZXgodD0+QSh0LGUpKTt0LnNwbGljZShsLDEpfWVsc2UgdC5wdXNoKGUpO24udmFsdWU9dH19LGlzU2luZ2xlOml9fShhLG4pLHtmb3J3YXJkUmVmOmYsY3VycmVudEVsZW1lbnQ6dn09aCgpO3JldHVybiBsZSh7ZGlzYWJsZWQ6byxkaXJlY3Rpb246YyxvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHBhcmVudEVsZW1lbnQ6dixpc1NpbmdsZTp1LGNvbGxhcHNpYmxlOmEuY29sbGFwc2libGUsbW9kZWxWYWx1ZTpzLGNoYW5nZU1vZGVsVmFsdWU6ZCx1bm1vdW50T25IaWRlOnJ9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHtyZWY6ZS51bnJlZihmKSwiYXMtY2hpbGQiOnQuYXNDaGlsZCxhczp0LmFzfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmUudW5yZWYocyl9KV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiXSkpfX0pLG5lPWZ1bmN0aW9uKGUpe3JldHVybiBlLk9wZW49Im9wZW4iLGUuQ2xvc2VkPSJjbG9zZWQiLGV9KG5lfHx7fSk7Y29uc3RbaWUsb2VdPV8oIkFjY29yZGlvbkl0ZW0iKTt2YXIgcmU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQWNjb3JkaW9uSXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0LHtleHBvc2U6bH0pe2NvbnN0IGE9dCxuPXRlKCksaT1lLmNvbXB1dGVkKCgpPT5uLmlzU2luZ2xlLnZhbHVlP2EudmFsdWU9PT1uLm1vZGVsVmFsdWUudmFsdWU6QXJyYXkuaXNBcnJheShuLm1vZGVsVmFsdWUudmFsdWUpJiZuLm1vZGVsVmFsdWUudmFsdWUuaW5jbHVkZXMoYS52YWx1ZSkpLG89ZS5jb21wdXRlZCgoKT0+bi5kaXNhYmxlZC52YWx1ZXx8YS5kaXNhYmxlZCkscj1lLmNvbXB1dGVkKCgpPT5vLnZhbHVlPyIiOnZvaWQgMCksYz1lLmNvbXB1dGVkKCgpPT5pLnZhbHVlP25lLk9wZW46bmUuQ2xvc2VkKTtsKHtvcGVuOmksZGF0YURpc2FibGVkOnJ9KTtjb25zdHtjdXJyZW50UmVmOnMsY3VycmVudEVsZW1lbnQ6ZH09aCgpO2Z1bmN0aW9uIGhhbmRsZUFycm93S2V5KGUpe2NvbnN0IHQ9ZS50YXJnZXQ7aWYoLTE9PT1BcnJheS5mcm9tKG4ucGFyZW50RWxlbWVudC52YWx1ZT8ucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dIik/P1tdKS5maW5kSW5kZXgoZT0+ZT09PXQpKXJldHVybiBudWxsO3EoZSx0LG4ucGFyZW50RWxlbWVudC52YWx1ZSx7YXJyb3dLZXlPcHRpb25zOm4ub3JpZW50YXRpb24sZGlyOm4uZGlyZWN0aW9uLnZhbHVlLGZvY3VzOiEwfSl9cmV0dXJuIG9lKHtvcGVuOmksZGF0YVN0YXRlOmMsZGlzYWJsZWQ6byxkYXRhRGlzYWJsZWQ6cix0cmlnZ2VySWQ6IiIsY3VycmVudFJlZjpzLGN1cnJlbnRFbGVtZW50OmQsdmFsdWU6ZS5jb21wdXRlZCgoKT0+YS52YWx1ZSl9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFkpLHsiZGF0YS1vcmllbnRhdGlvbiI6ZS51bnJlZihuKS5vcmllbnRhdGlvbiwiZGF0YS1kaXNhYmxlZCI6ci52YWx1ZSwiZGF0YS1zdGF0ZSI6Yy52YWx1ZSxkaXNhYmxlZDpvLnZhbHVlLG9wZW46aS52YWx1ZSxhczphLmFzLCJhcy1jaGlsZCI6YS5hc0NoaWxkLCJ1bm1vdW50LW9uLWhpZGUiOmEudW5tb3VudE9uSGlkZT8/ZS51bnJlZihuKS51bm1vdW50T25IaWRlLnZhbHVlLG9uS2V5ZG93bjplLndpdGhLZXlzKGhhbmRsZUFycm93S2V5LFsidXAiLCJkb3duIiwibGVmdCIsInJpZ2h0IiwiaG9tZSIsImVuZCJdKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjppLnZhbHVlfSldKSxfOjN9LDgsWyJkYXRhLW9yaWVudGF0aW9uIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtc3RhdGUiLCJkaXNhYmxlZCIsIm9wZW4iLCJhcyIsImFzLWNoaWxkIiwidW5tb3VudC1vbi1oaWRlIl0pKX19KSxjZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJBY2NvcmRpb25Db250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBsPXQsYT10ZSgpLG49aWUoKTtyZXR1cm4gaCgpLCh0LGkpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoWikse3JvbGU6InJlZ2lvbiIsImFzLWNoaWxkIjpsLmFzQ2hpbGQsYXM6dC5hcywiZm9yY2UtbW91bnQiOmwuZm9yY2VNb3VudCwiYXJpYS1sYWJlbGxlZGJ5IjplLnVucmVmKG4pLnRyaWdnZXJJZCwiZGF0YS1zdGF0ZSI6ZS51bnJlZihuKS5kYXRhU3RhdGUudmFsdWUsImRhdGEtZGlzYWJsZWQiOmUudW5yZWYobikuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjplLnVucmVmKGEpLm9yaWVudGF0aW9uLHN0eWxlOnsiLS1yZWthLWFjY29yZGlvbi1jb250ZW50LXdpZHRoIjoidmFyKC0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKSIsIi0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQiOiJ2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KSJ9LG9uQ29udGVudEZvdW5kOmlbMF18fChpWzBdPXQ9PmUudW5yZWYoYSkuY2hhbmdlTW9kZWxWYWx1ZShlLnVucmVmKG4pLnZhbHVlLnZhbHVlKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyIsImZvcmNlLW1vdW50IiwiYXJpYS1sYWJlbGxlZGJ5IiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLW9yaWVudGF0aW9uIl0pKX19KSxzZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJBY2NvcmRpb25UcmlnZ2VyIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgbD10LGE9dGUoKSxuPWllKCk7ZnVuY3Rpb24gY2hhbmdlSXRlbSgpe2NvbnN0IGU9YS5pc1NpbmdsZS52YWx1ZSYmbi5vcGVuLnZhbHVlJiYhYS5jb2xsYXBzaWJsZTtuLmRpc2FibGVkLnZhbHVlfHxlfHxhLmNoYW5nZU1vZGVsVmFsdWUobi52YWx1ZS52YWx1ZSl9cmV0dXJuIG4udHJpZ2dlcklkfHw9eih2b2lkIDAsInJla2EtYWNjb3JkaW9uLXRyaWdnZXIiKSwodCxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGVlKSx7aWQ6ZS51bnJlZihuKS50cmlnZ2VySWQscmVmOmUudW5yZWYobikuY3VycmVudFJlZiwiZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbSI6IiIsYXM6bC5hcywiYXMtY2hpbGQiOmwuYXNDaGlsZCwiYXJpYS1kaXNhYmxlZCI6ZS51bnJlZihuKS5kaXNhYmxlZC52YWx1ZXx8dm9pZCAwLCJhcmlhLWV4cGFuZGVkIjplLnVucmVmKG4pLm9wZW4udmFsdWV8fCExLCJkYXRhLWRpc2FibGVkIjplLnVucmVmKG4pLmRhdGFEaXNhYmxlZC52YWx1ZSwiZGF0YS1vcmllbnRhdGlvbiI6ZS51bnJlZihhKS5vcmllbnRhdGlvbiwiZGF0YS1zdGF0ZSI6ZS51bnJlZihuKS5kYXRhU3RhdGUudmFsdWUsZGlzYWJsZWQ6ZS51bnJlZihuKS5kaXNhYmxlZC52YWx1ZSxvbkNsaWNrOmNoYW5nZUl0ZW19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiaWQiLCJhcyIsImFzLWNoaWxkIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtZXhwYW5kZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1vcmllbnRhdGlvbiIsImRhdGEtc3RhdGUiLCJkaXNhYmxlZCJdKSl9fSk7ZnVuY3Rpb24gZ2V0T3BlblN0YXRlKGUpe3JldHVybiBlPyJvcGVuIjoiY2xvc2VkIn1mdW5jdGlvbiBtYWtlQ29udGVudElkKGUsdCl7cmV0dXJuYCR7ZX0tY29udGVudC0ke3R9YH1jb25zdCBkZT0ibmF2aWdhdGlvbk1lbnUucm9vdENvbnRlbnREaXNtaXNzIjtmdW5jdGlvbiBnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoZSl7Y29uc3QgdD1bXSxsPSh2b2lkIDApLmNyZWF0ZVRyZWVXYWxrZXIoZSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTplPT57Y29uc3QgdD0iSU5QVVQiPT09ZS50YWdOYW1lJiYiaGlkZGVuIj09PWUudHlwZTtyZXR1cm4gZS5kaXNhYmxlZHx8ZS5oaWRkZW58fHQ/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDplLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7bC5uZXh0Tm9kZSgpOyl0LnB1c2gobC5jdXJyZW50Tm9kZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZm9jdXNGaXJzdChlKXtjb25zdCB0PU4oKTtyZXR1cm4gZS5zb21lKGU9PmU9PT10fHwoZS5mb2N1cygpLE4oKSE9PXQpKX1mdW5jdGlvbiB3aGVuTW91c2UoZSl7cmV0dXJuIHQ9PiJtb3VzZSI9PT10LnBvaW50ZXJUeXBlP2UodCk6dm9pZCAwfWNvbnN0W3VlLGZlXT1fKFsiTmF2aWdhdGlvbk1lbnVSb290IiwiTmF2aWdhdGlvbk1lbnVTdWIiXSwiTmF2aWdhdGlvbk1lbnVDb250ZXh0Iik7dmFyIHZlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik5hdmlnYXRpb25NZW51Um9vdCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGRlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MjAwfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LGRpc2FibGVDbGlja1RyaWdnZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXNhYmxlSG92ZXJUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmF2In19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBhPXQsbj13KGEsIm1vZGVsVmFsdWUiLGwse2RlZmF1bHRWYWx1ZTphLmRlZmF1bHRWYWx1ZT8/IiIscGFzc2l2ZTp2b2lkIDA9PT1hLm1vZGVsVmFsdWV9KSxpPWUucmVmKCIiKSx7Zm9yd2FyZFJlZjpvLGN1cnJlbnRFbGVtZW50OnJ9PWgoKSxjPWUucmVmKCkscz1lLnJlZigpLGQ9ZS5yZWYoKSx7Z2V0SXRlbXM6dSxDb2xsZWN0aW9uU2xvdDpmfT1rKHtrZXk6Ik5hdmlnYXRpb25NZW51Iixpc1Byb3ZpZGVyOiEwfSkse2RlbGF5RHVyYXRpb246dixza2lwRGVsYXlEdXJhdGlvbjpwLGRpcjpMLGRpc2FibGVDbGlja1RyaWdnZXI6YixkaXNhYmxlSG92ZXJUcmlnZ2VyOngsdW5tb3VudE9uSGlkZTp5fT1lLnRvUmVmcyhhKSxJPUUoTCksQz1nKCExLHApLEI9ZS5jb21wdXRlZCgoKT0+IiIhPT1uLnZhbHVlfHxDLnZhbHVlPzE1MDp2LnZhbHVlKSxfPUQoZT0+eyJzdHJpbmciPT10eXBlb2YgZSYmKGkudmFsdWU9bi52YWx1ZSxuLnZhbHVlPWUpfSxCKTtmdW5jdGlvbiBvbkl0ZW1EaXNtaXNzKCl7aS52YWx1ZT1uLnZhbHVlLG4udmFsdWU9IiJ9cmV0dXJuIGUud2F0Y2hFZmZlY3QoKCk9PntpZighbi52YWx1ZSlyZXR1cm47Y29uc3QgZT11KCkubWFwKGU9PmUucmVmKTtkLnZhbHVlPWUuZmluZChlPT5lLmlkLmluY2x1ZGVzKG4udmFsdWUpKX0pLFYocixkZSxvbkl0ZW1EaXNtaXNzKSxmZSh7aXNSb290TWVudTohMCxtb2RlbFZhbHVlOm4scHJldmlvdXNWYWx1ZTppLGJhc2VJZDp6KHZvaWQgMCwicmVrYS1uYXZpZ2F0aW9uLW1lbnUiKSxkaXNhYmxlQ2xpY2tUcmlnZ2VyOmIsZGlzYWJsZUhvdmVyVHJpZ2dlcjp4LGRpcjpJLHVubW91bnRPbkhpZGU6eSxvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHJvb3ROYXZpZ2F0aW9uTWVudTpyLGluZGljYXRvclRyYWNrOmMsYWN0aXZlVHJpZ2dlcjpkLG9uSW5kaWNhdG9yVHJhY2tDaGFuZ2U6ZT0+e2MudmFsdWU9ZX0sdmlld3BvcnQ6cyxvblZpZXdwb3J0Q2hhbmdlOmU9PntzLnZhbHVlPWV9LG9uVHJpZ2dlckVudGVyOmU9PntfKGUpfSxvblRyaWdnZXJMZWF2ZTooKT0+e0MudmFsdWU9ITAsXygiIil9LG9uQ29udGVudEVudGVyOigpPT57XygpfSxvbkNvbnRlbnRMZWF2ZTooKT0+e2EuZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlfHxfKCIiKX0sb25JdGVtU2VsZWN0OmU9PntpLnZhbHVlPW4udmFsdWUsbi52YWx1ZT1lfSxvbkl0ZW1EaXNtaXNzOm9uSXRlbURpc21pc3N9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGYpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLHtyZWY6ZS51bnJlZihvKSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJkYXRhLW9yaWVudGF0aW9uIjp0Lm9yaWVudGF0aW9uLGRpcjplLnVucmVmKEkpLCJkYXRhLXJla2EtbmF2aWdhdGlvbi1tZW51IjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKG4pfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1vcmllbnRhdGlvbiIsImRpciJdKV0pLF86M30pKX19KTtjb25zdFtwZSxoZV09XygiTmF2aWdhdGlvbk1lbnVJdGVtIik7dmFyIGtlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ik5hdmlnYXRpb25NZW51SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LHNldHVwKHQpe2NvbnN0IGw9dDtoKCk7Y29uc3R7Z2V0SXRlbXM6YX09ayh7a2V5OiJOYXZpZ2F0aW9uTWVudSJ9KSxuPXVlKCksaT16KGwudmFsdWUpLG89ZS5yZWYoKSxyPWUucmVmKCksYz1tYWtlQ29udGVudElkKG4uYmFzZUlkLGkpO2xldCByZXN0b3JlQ29udGVudFRhYk9yZGVyUmVmPSgpPT4oe30pO2NvbnN0IHM9ZS5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZUNvbnRlbnRFbnRyeShlPSJzdGFydCIpe2NvbnN0IHQ9KHZvaWQgMCkuZ2V0RWxlbWVudEJ5SWQoYyk7aWYodCl7cmVzdG9yZUNvbnRlbnRUYWJPcmRlclJlZigpO2NvbnN0IGw9Z2V0VGFiYmFibGVDYW5kaWRhdGVzKHQpO2wubGVuZ3RoJiZmb2N1c0ZpcnN0KCJzdGFydCI9PT1lP2w6bC5yZXZlcnNlKCkpfX1mdW5jdGlvbiBoYW5kbGVDb250ZW50RXhpdCgpe2NvbnN0IGU9KHZvaWQgMCkuZ2V0RWxlbWVudEJ5SWQoYyk7aWYoZSl7Y29uc3QgdD1nZXRUYWJiYWJsZUNhbmRpZGF0ZXMoZSk7dC5sZW5ndGgmJihyZXN0b3JlQ29udGVudFRhYk9yZGVyUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBlLmZvckVhY2goZT0+e2UuZGF0YXNldC50YWJpbmRleD1lLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8IiIsZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKX0pLCgpPT57ZS5mb3JFYWNoKGU9Pntjb25zdCB0PWUuZGF0YXNldC50YWJpbmRleDtlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHQpfSl9fSh0KSl9fWZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSl7Y29uc3QgdD1OKCk7aWYoMzI9PT1lLmtleUNvZGV8fCJFbnRlciI9PT1lLmtleSlyZXR1cm4gbi5tb2RlbFZhbHVlLnZhbHVlPT09aT8obi5vbkl0ZW1EaXNtaXNzKCksby52YWx1ZT8uZm9jdXMoKSx2b2lkIGUucHJldmVudERlZmF1bHQoKSk6KGUudGFyZ2V0LmNsaWNrKCksdm9pZCBlLnByZXZlbnREZWZhdWx0KCkpO2NvbnN0IGw9YSgpLmZpbHRlcihlPT5lLnJlZi5wYXJlbnRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoImRhdGEtbWVudS1pdGVtIikpLm1hcChlPT5lLnJlZik7aWYoIWwuaW5jbHVkZXModCkpcmV0dXJuO2NvbnN0IHI9cShlLHQsdm9pZCAwLHtpdGVtc0FycmF5OmwsbG9vcDohMX0pO3ImJnI/LmZvY3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCl9cmV0dXJuIGhlKHt2YWx1ZTppLGNvbnRlbnRJZDpjLHRyaWdnZXJSZWY6byxmb2N1c1Byb3h5UmVmOnIsd2FzRXNjYXBlQ2xvc2VSZWY6cyxvbkVudHJ5S2V5RG93bjpoYW5kbGVDb250ZW50RW50cnksb25Gb2N1c1Byb3h5RW50ZXI6aGFuZGxlQ29udGVudEVudHJ5LG9uQ29udGVudEZvY3VzT3V0c2lkZTpoYW5kbGVDb250ZW50RXhpdCxvblJvb3RDb250ZW50Q2xvc2U6aGFuZGxlQ29udGVudEV4aXR9KSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHsiYXMtY2hpbGQiOnQuYXNDaGlsZCxhczp0LmFzLCJkYXRhLW1lbnUtaXRlbSI6IiIsb25LZXlkb3duOmUud2l0aEtleXMoaGFuZGxlS2V5ZG93bixbInVwIiwiZG93biIsImxlZnQiLCJyaWdodCIsImhvbWUiLCJlbmQiLCJzcGFjZSJdKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KSxtZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJOYXZpZ2F0aW9uTWVudUNvbnRlbnRJbXBsIixwcm9wczp7ZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKHQse2VtaXQ6bH0pe2NvbnN0IGE9dCxuPWwse2dldEl0ZW1zOml9PWsoe2tleToiTmF2aWdhdGlvbk1lbnUifSkse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpyfT1oKCksYz11ZSgpLHM9cGUoKSxkPSh1PWMuYmFzZUlkLGY9cy52YWx1ZSxgJHt1fS10cmlnZ2VyLSR7Zn1gKTt2YXIgdSxmO2NvbnN0IHY9bWFrZUNvbnRlbnRJZChjLmJhc2VJZCxzLnZhbHVlKSxwPWUucmVmKG51bGwpLG09ZS5jb21wdXRlZCgoKT0+e2NvbnN0IGU9aSgpLm1hcChlPT5lLnJlZi5pZC5zcGxpdCgidHJpZ2dlci0iKVsxXSk7InJ0bCI9PT1jLmRpci52YWx1ZSYmZS5yZXZlcnNlKCk7Y29uc3QgdD1lLmluZGV4T2YoYy5tb2RlbFZhbHVlLnZhbHVlKSxsPWUuaW5kZXhPZihjLnByZXZpb3VzVmFsdWUudmFsdWUpLGE9cy52YWx1ZT09PWMubW9kZWxWYWx1ZS52YWx1ZSxuPWw9PT1lLmluZGV4T2Yocy52YWx1ZSk7aWYoIWEmJiFuKXJldHVybiBwLnZhbHVlO2NvbnN0IG89KCgpPT57aWYodCE9PWwpe2lmKGEmJi0xIT09bClyZXR1cm4gdD5sPyJmcm9tLWVuZCI6ImZyb20tc3RhcnQiO2lmKG4mJi0xIT09dClyZXR1cm4gdD5sPyJ0by1zdGFydCI6InRvLWVuZCJ9cmV0dXJuIG51bGx9KSgpO3JldHVybiBwLnZhbHVlPW8sb30pO2Z1bmN0aW9uIGhhbmRsZUZvY3VzT3V0c2lkZShlKXtuKCJmb2N1c091dHNpZGUiLGUpLG4oImludGVyYWN0T3V0c2lkZSIsZSk7aWYoZS5kZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQuaGFzQXR0cmlidXRlKCJkYXRhLW5hdmlnYXRpb24tbWVudS10cmlnZ2VyIikmJmUucHJldmVudERlZmF1bHQoKSwhZS5kZWZhdWx0UHJldmVudGVkKXtzLm9uQ29udGVudEZvY3VzT3V0c2lkZSgpO2NvbnN0IHQ9ZS50YXJnZXQ7Yy5yb290TmF2aWdhdGlvbk1lbnU/LnZhbHVlPy5jb250YWlucyh0KSYmZS5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUoZSl7aWYobigicG9pbnRlckRvd25PdXRzaWRlIixlKSwhZS5kZWZhdWx0UHJldmVudGVkKXtjb25zdCB0PWUudGFyZ2V0LGw9aSgpLnNvbWUoZT0+ZS5yZWYuY29udGFpbnModCkpLGE9Yy5pc1Jvb3RNZW51JiZjLnZpZXdwb3J0LnZhbHVlPy5jb250YWlucyh0KTsobHx8YXx8IWMuaXNSb290TWVudSkmJmUucHJldmVudERlZmF1bHQoKX19ZnVuY3Rpb24gaGFuZGxlRXNjYXBlS2V5RG93bihlKXtuKCJlc2NhcGVLZXlEb3duIixlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fChjLm9uSXRlbURpc21pc3MoKSxzLnRyaWdnZXJSZWY/LnZhbHVlPy5mb2N1cygpLHMud2FzRXNjYXBlQ2xvc2VSZWYudmFsdWU9ITApfWZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSl7aWYoZS50YXJnZXQuY2xvc2VzdCgiW2RhdGEtcmVrYS1uYXZpZ2F0aW9uLW1lbnVdIikhPT1jLnJvb3ROYXZpZ2F0aW9uTWVudS52YWx1ZSlyZXR1cm47Y29uc3QgdD1lLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXksbD0iVGFiIj09PWUua2V5JiYhdCxhPWdldFRhYmJhYmxlQ2FuZGlkYXRlcyhlLmN1cnJlbnRUYXJnZXQpO2lmKGwpe2NvbnN0IHQ9TigpLGw9YS5maW5kSW5kZXgoZT0+ZT09PXQpO2lmKCFmb2N1c0ZpcnN0KGUuc2hpZnRLZXk/YS5zbGljZSgwLGwpLnJldmVyc2UoKTphLnNsaWNlKGwrMSxhLmxlbmd0aCkpKXJldHVybiB2b2lkIHMuZm9jdXNQcm94eVJlZi52YWx1ZT8uZm9jdXMoKTtlLnByZXZlbnREZWZhdWx0KCl9Y29uc3Qgbj1xKGUsTigpLHZvaWQgMCx7aXRlbXNBcnJheTphLGxvb3A6ITEsZW5hYmxlSWdub3JlZEVsZW1lbnQ6ITB9KTtuPy5mb2N1cygpfWZ1bmN0aW9uIGhhbmRsZURpc21pc3MoKXtjb25zdCBlPW5ldyBFdmVudChkZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7ci52YWx1ZT8uZGlzcGF0Y2hFdmVudChlKX1yZXR1cm4gZS53YXRjaEVmZmVjdChlPT57Y29uc3QgdD1yLnZhbHVlO2lmKGMuaXNSb290TWVudSYmdCl7Y29uc3QgaGFuZGxlQ2xvc2U9KCk9PntjLm9uSXRlbURpc21pc3MoKSxzLm9uUm9vdENvbnRlbnRDbG9zZSgpLHQuY29udGFpbnMoTigpKSYmcy50cmlnZ2VyUmVmLnZhbHVlPy5mb2N1cygpfTt0LmFkZEV2ZW50TGlzdGVuZXIoZGUsaGFuZGxlQ2xvc2UpLGUoKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihkZSxoYW5kbGVDbG9zZSkpfX0pLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTyksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKHYpLHJlZjplLnVucmVmKG8pLCJhcmlhLWxhYmVsbGVkYnkiOmUudW5yZWYoZCksImRhdGEtbW90aW9uIjptLnZhbHVlLCJkYXRhLXN0YXRlIjplLnVucmVmKGdldE9wZW5TdGF0ZSkoZS51bnJlZihjKS5tb2RlbFZhbHVlLnZhbHVlPT09ZS51bnJlZihzKS52YWx1ZSksImRhdGEtb3JpZW50YXRpb24iOmUudW5yZWYoYykub3JpZW50YXRpb259LGEse29uS2V5ZG93bjpoYW5kbGVLZXlkb3duLG9uRXNjYXBlS2V5RG93bjpoYW5kbGVFc2NhcGVLZXlEb3duLG9uUG9pbnRlckRvd25PdXRzaWRlOmhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSxvbkZvY3VzT3V0c2lkZTpoYW5kbGVGb2N1c091dHNpZGUsb25EaXNtaXNzOmhhbmRsZURpc21pc3N9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsImRhdGEtbW90aW9uIiwiZGF0YS1zdGF0ZSIsImRhdGEtb3JpZW50YXRpb24iXSkpfX0pLGdlPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBuPWwsaT1hKHkodCwiZm9yY2VNb3VudCIpLG4pLHtmb3J3YXJkUmVmOm99PWgoKSxyPXVlKCksYz1wZSgpLHM9ZS5jb21wdXRlZCgoKT0+Yy52YWx1ZT09PXIubW9kZWxWYWx1ZS52YWx1ZSksZD1lLmNvbXB1dGVkKCgpPT4hKCFyLnZpZXdwb3J0LnZhbHVlfHxyLm1vZGVsVmFsdWUudmFsdWV8fCFyLnByZXZpb3VzVmFsdWUudmFsdWUpJiZyLnByZXZpb3VzVmFsdWUudmFsdWU9PT1jLnZhbHVlKTtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLlRlbGVwb3J0LHt0bzplLnVucmVmKEkpJiZlLnVucmVmKHIpLnZpZXdwb3J0LnZhbHVlP2UudW5yZWYocikudmlld3BvcnQudmFsdWU6ImJvZHkiLGRpc2FibGVkOiFlLnVucmVmKEkpfHwhZS51bnJlZihyKS52aWV3cG9ydC52YWx1ZXx8IWUudW5yZWYocikudmlld3BvcnQudmFsdWV9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQykse3ByZXNlbnQ6dC5mb3JjZU1vdW50fHxzLnZhbHVlfHxkLnZhbHVlLCJmb3JjZS1tb3VudCI6IWUudW5yZWYocikudW5tb3VudE9uSGlkZS52YWx1ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh7cHJlc2VudDphfSk9PltlLmNyZWF0ZVZOb2RlKG1lLGUubWVyZ2VQcm9wcyh7cmVmOmUudW5yZWYobyksImRhdGEtc3RhdGUiOmUudW5yZWYoZ2V0T3BlblN0YXRlKShzLnZhbHVlKSxzdHlsZTp7cG9pbnRlckV2ZW50czohcy52YWx1ZSYmZS51bnJlZihyKS5pc1Jvb3RNZW51PyJub25lIjp2b2lkIDB9fSx7Li4udC4kYXR0cnMsLi4uZS51bnJlZihpKX0se2hpZGRlbjohYSxvblBvaW50ZXJlbnRlcjpsWzBdfHwobFswXT10PT5lLnVucmVmKHIpLm9uQ29udGVudEVudGVyKGUudW5yZWYoYykudmFsdWUpKSxvblBvaW50ZXJsZWF2ZTpsWzFdfHwobFsxXT10PT5lLnVucmVmKHdoZW5Nb3VzZSkoKCk9PmUudW5yZWYocikub25Db250ZW50TGVhdmUoKSkodCkpLG9uUG9pbnRlckRvd25PdXRzaWRlOmxbMl18fChsWzJdPWU9Pm4oInBvaW50ZXJEb3duT3V0c2lkZSIsZSkpLG9uRm9jdXNPdXRzaWRlOmxbM118fChsWzNdPWU9Pm4oImZvY3VzT3V0c2lkZSIsZSkpLG9uSW50ZXJhY3RPdXRzaWRlOmxbNF18fChsWzRdPWU9Pm4oImludGVyYWN0T3V0c2lkZSIsZSkpfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjJ9LDEwNDAsWyJkYXRhLXN0YXRlIiwic3R5bGUiLCJoaWRkZW4iXSldKSxfOjN9LDgsWyJwcmVzZW50IiwiZm9yY2UtbW91bnQiXSldLDgsWyJ0byIsImRpc2FibGVkIl0pKX19KSxMZT1lLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiTmF2aWdhdGlvbk1lbnVJbmRpY2F0b3IiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGw9dCx7Zm9yd2FyZFJlZjphfT1oKCksbj11ZSgpLGk9ZS5yZWYoKSxvPWUuY29tcHV0ZWQoKCk9PiJob3Jpem9udGFsIj09PW4ub3JpZW50YXRpb24pLHI9ZS5jb21wdXRlZCgoKT0+ISFuLm1vZGVsVmFsdWUudmFsdWUpLHthY3RpdmVUcmlnZ2VyOmN9PW47ZnVuY3Rpb24gaGFuZGxlUG9zaXRpb25DaGFuZ2UoKXtjLnZhbHVlJiYoaS52YWx1ZT17c2l6ZTpvLnZhbHVlP2MudmFsdWUub2Zmc2V0V2lkdGg6Yy52YWx1ZS5vZmZzZXRIZWlnaHQscG9zaXRpb246by52YWx1ZT9jLnZhbHVlLm9mZnNldExlZnQ6Yy52YWx1ZS5vZmZzZXRUb3B9KX1yZXR1cm4gZS53YXRjaEVmZmVjdCgoKT0+e24ubW9kZWxWYWx1ZS52YWx1ZSYmaGFuZGxlUG9zaXRpb25DaGFuZ2UoKX0pLEIoYyxoYW5kbGVQb3NpdGlvbkNoYW5nZSksQihuLmluZGljYXRvclRyYWNrLGhhbmRsZVBvc2l0aW9uQ2hhbmdlKSwodCxvKT0+ZS51bnJlZihuKS5pbmRpY2F0b3JUcmFjay52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuVGVsZXBvcnQse2tleTowLHRvOmUudW5yZWYobikuaW5kaWNhdG9yVHJhY2sudmFsdWV9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQykse3ByZXNlbnQ6dC5mb3JjZU1vdW50fHxyLnZhbHVlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobSksZS5tZXJnZVByb3BzKHtyZWY6ZS51bnJlZihhKSwiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiZGF0YS1zdGF0ZSI6ci52YWx1ZT8idmlzaWJsZSI6ImhpZGRlbiIsImRhdGEtb3JpZW50YXRpb24iOmUudW5yZWYobikub3JpZW50YXRpb24sImFzLWNoaWxkIjpsLmFzQ2hpbGQsYXM6dC5hcyxzdHlsZTp7Li4uaS52YWx1ZT97Ii0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUiOmAke2kudmFsdWUuc2l6ZX1weGAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uIjpgJHtpLnZhbHVlLnBvc2l0aW9ufXB4YH06e319fSx0LiRhdHRycykse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsImRhdGEtb3JpZW50YXRpb24iLCJhcy1jaGlsZCIsImFzIiwic3R5bGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pXSw4LFsidG8iXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCl9fSksYmU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTmF2aWdhdGlvbk1lbnVMaW5rIixwcm9wczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJhIn19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3QgYT10LG49bCx7Q29sbGVjdGlvbkl0ZW06aX09ayh7a2V5OiJOYXZpZ2F0aW9uTWVudSJ9KTthc3luYyBmdW5jdGlvbiBoYW5kbGVDbGljayhlKXtjb25zdCB0PW5ldyBDdXN0b21FdmVudCgibmF2aWdhdGlvbk1lbnUubGlua1NlbGVjdCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxkZXRhaWw6e29yaWdpbmFsRXZlbnQ6ZX19KTtpZihuKCJzZWxlY3QiLHQpLCF0LmRlZmF1bHRQcmV2ZW50ZWQmJiFlLm1ldGFLZXkpe2NvbnN0IHQ9bmV3IEN1c3RvbUV2ZW50KGRlLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTtlLnRhcmdldD8uZGlzcGF0Y2hFdmVudCh0KX19cmV0dXJuIGgoKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLHthczp0LmFzLCJkYXRhLWFjdGl2ZSI6dC5hY3RpdmU/IiI6dm9pZCAwLCJhcmlhLWN1cnJlbnQiOnQuYWN0aXZlPyJwYWdlIjp2b2lkIDAsImFzLWNoaWxkIjphLmFzQ2hpbGQsb25DbGljazpoYW5kbGVDbGlja30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImRhdGEtYWN0aXZlIiwiYXJpYS1jdXJyZW50IiwiYXMtY2hpbGQiXSldKSxfOjN9KSl9fSkseGU9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik5hdmlnYXRpb25NZW51TGlzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ1bCJ9fSxzZXR1cCh0KXtjb25zdCBsPXQsYT11ZSgpLHtmb3J3YXJkUmVmOm59PWgoKTtyZXR1cm4odCxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG0pLHtyZWY6ZS51bnJlZihuKSxzdHlsZTp7cG9zaXRpb246InJlbGF0aXZlIn19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihtKSxlLm1lcmdlUHJvcHModC4kYXR0cnMseyJhcy1jaGlsZCI6bC5hc0NoaWxkLGFzOnQuYXMsImRhdGEtb3JpZW50YXRpb24iOmUudW5yZWYoYSkub3JpZW50YXRpb259KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcy1jaGlsZCIsImFzIiwiZGF0YS1vcmllbnRhdGlvbiJdKV0pLF86M30sNTEyKSl9fSk7Y29uc3QgeWU9WyJhcmlhLW93bnMiXTt2YXIgSWU9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik5hdmlnYXRpb25NZW51VHJpZ2dlciIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3QgbD10LGE9dWUoKSxuPXBlKCkse0NvbGxlY3Rpb25JdGVtOml9PWsoe2tleToiTmF2aWdhdGlvbk1lbnUifSkse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpyfT1oKCksYz1lLnJlZigiIikscz1lLnJlZigiIiksZD1nKCExLDMwMCksdT1lLnJlZighMSksZj1lLmNvbXB1dGVkKCgpPT5uLnZhbHVlPT09YS5tb2RlbFZhbHVlLnZhbHVlKTtmdW5jdGlvbiBoYW5kbGVQb2ludGVyRW50ZXIoKXthLmRpc2FibGVIb3ZlclRyaWdnZXIudmFsdWV8fCh1LnZhbHVlPSExLG4ud2FzRXNjYXBlQ2xvc2VSZWYudmFsdWU9ITEpfWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKGUpe2lmKCFhLmRpc2FibGVIb3ZlclRyaWdnZXIudmFsdWUmJiJtb3VzZSI9PT1lLnBvaW50ZXJUeXBlKXtpZihsLmRpc2FibGVkfHx1LnZhbHVlfHxuLndhc0VzY2FwZUNsb3NlUmVmLnZhbHVlfHxkLnZhbHVlKXJldHVybjthLm9uVHJpZ2dlckVudGVyKG4udmFsdWUpLGQudmFsdWU9ITB9fWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJMZWF2ZShlKXtpZighYS5kaXNhYmxlSG92ZXJUcmlnZ2VyLnZhbHVlJiYibW91c2UiPT09ZS5wb2ludGVyVHlwZSl7aWYobC5kaXNhYmxlZClyZXR1cm47YS5vblRyaWdnZXJMZWF2ZSgpLGQudmFsdWU9ITF9fWZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpeygicG9pbnRlclR5cGUiaW4gZSYmIm1vdXNlIiE9PWUucG9pbnRlclR5cGV8fCFhLmRpc2FibGVDbGlja1RyaWdnZXIudmFsdWUpJiYoZC52YWx1ZXx8KGYudmFsdWU/YS5vbkl0ZW1TZWxlY3QoIiIpOmEub25JdGVtU2VsZWN0KG4udmFsdWUpLHUudmFsdWU9Zi52YWx1ZSkpfWZ1bmN0aW9uIGhhbmRsZUtleWRvd24oZSl7Y29uc3QgdD17aG9yaXpvbnRhbDoiQXJyb3dEb3duIix2ZXJ0aWNhbDoicnRsIj09PWEuZGlyLnZhbHVlPyJBcnJvd0xlZnQiOiJBcnJvd1JpZ2h0In1bYS5vcmllbnRhdGlvbl07Zi52YWx1ZSYmZS5rZXk9PT10JiYobi5vbkVudHJ5S2V5RG93bigpLGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKX1mdW5jdGlvbiBzZXRGb2N1c1Byb3h5UmVmKGUpe2UmJihuLmZvY3VzUHJveHlSZWYudmFsdWU9UyhlKSl9ZnVuY3Rpb24gaGFuZGxlVmlzdWFsbHlIaWRkZW5Gb2N1cyhlKXtjb25zdCB0PSh2b2lkIDApLmdldEVsZW1lbnRCeUlkKG4uY29udGVudElkKSxsPWUucmVsYXRlZFRhcmdldCxhPWw9PT1yLnZhbHVlLGk9dD8uY29udGFpbnMobCk7IWEmJml8fG4ub25Gb2N1c1Byb3h5RW50ZXIoYT8ic3RhcnQiOiJlbmQiKX1yZXR1cm4odCxuKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCxudWxsLFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoaSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobSksZS5tZXJnZVByb3BzKHtpZDpjLnZhbHVlLHJlZjplLnVucmVmKG8pLGRpc2FibGVkOnQuZGlzYWJsZWQsImRhdGEtZGlzYWJsZWQiOnQuZGlzYWJsZWQ/IiI6dm9pZCAwLCJkYXRhLXN0YXRlIjplLnVucmVmKGdldE9wZW5TdGF0ZSkoZi52YWx1ZSksImRhdGEtbmF2aWdhdGlvbi1tZW51LXRyaWdnZXIiOiIiLCJhcmlhLWV4cGFuZGVkIjpmLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjpzLnZhbHVlLCJhcy1jaGlsZCI6bC5hc0NoaWxkLGFzOnQuYXN9LHQuJGF0dHJzLHtvblBvaW50ZXJlbnRlcjpoYW5kbGVQb2ludGVyRW50ZXIsb25Qb2ludGVybW92ZTpoYW5kbGVQb2ludGVyTW92ZSxvblBvaW50ZXJsZWF2ZTpoYW5kbGVQb2ludGVyTGVhdmUsb25DbGljazpoYW5kbGVDbGljayxvbktleWRvd246aGFuZGxlS2V5ZG93bn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwiZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1zdGF0ZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30pLGYudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoTCkse3JlZjpzZXRGb2N1c1Byb3h5UmVmLCJhcmlhLWhpZGRlbiI6InRydWUiLHRhYmluZGV4OjAsb25Gb2N1czpoYW5kbGVWaXN1YWxseUhpZGRlbkZvY3VzfSksZS51bnJlZihhKS52aWV3cG9ydD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jaygic3BhbiIse2tleTowLCJhcmlhLW93bnMiOnMudmFsdWV9LG51bGwsOCx5ZSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCldLDY0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0sNjQpKX19KSxDZT1lLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiTmF2aWdhdGlvbk1lbnVWaWV3cG9ydCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImNlbnRlciJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGw9dCx7Zm9yd2FyZFJlZjphLGN1cnJlbnRFbGVtZW50Om59PWgoKSxpPXVlKCkse2FjdGl2ZVRyaWdnZXI6byxyb290TmF2aWdhdGlvbk1lbnU6cixtb2RlbFZhbHVlOmN9PWkscz1lLnJlZigpLGQ9ZS5yZWYoKSx1PWUuY29tcHV0ZWQoKCk9PiEhaS5tb2RlbFZhbHVlLnZhbHVlKTtlLndhdGNoKG4sKCk9PntpLm9uVmlld3BvcnRDaGFuZ2Uobi52YWx1ZSl9KTtjb25zdCBmPWUucmVmKCk7ZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oKXtpZihmLnZhbHVlJiZvLnZhbHVlJiZyLnZhbHVlKXtjb25zdCBlPSh2b2lkIDApLmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCx0PSh2b2lkIDApLmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQsYT1yLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49by52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7b2Zmc2V0V2lkdGg6aSxvZmZzZXRIZWlnaHQ6Y309Zi52YWx1ZSxzPW4ubGVmdC1hLmxlZnQsdT1uLnRvcC1hLnRvcDtsZXQgdj1udWxsLHA9bnVsbDtzd2l0Y2gobC5hbGlnbil7Y2FzZSJzdGFydCI6dj1zLHA9dTticmVhaztjYXNlImVuZCI6dj1zLWkrbi53aWR0aCxwPXUtYytuLmhlaWdodDticmVhaztkZWZhdWx0OnY9cy1pLzIrbi53aWR0aC8yLHA9dS1jLzIrbi5oZWlnaHQvMn1jb25zdCBoPTEwO3YrYS5sZWZ0PGgmJih2PWgtYS5sZWZ0KTtjb25zdCBrPXYrYS5sZWZ0K2k7az5lLWgmJih2LT1rLWUraCx2PGgtYS5sZWZ0JiYodj1oLWEubGVmdCkpLHArYS50b3A8aCYmKHA9aC1hLnRvcCk7Y29uc3QgbT1wK2EudG9wK2M7bT50LWgmJihwLT1tLXQraCxwPGgtYS50b3AmJihwPWgtYS50b3ApKSx2PU1hdGgucm91bmQodikscD1NYXRoLnJvdW5kKHApLGQudmFsdWU9e2xlZnQ6dix0b3A6cH19fXJldHVybiBlLndhdGNoKFtjLHVdLCgpPT57ZS5uZXh0VGljaygoKT0+e24udmFsdWUmJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9bi52YWx1ZT8ucXVlcnlTZWxlY3RvcigiW2RhdGEtc3RhdGU9b3Blbl0iKTtmLnZhbHVlPWV9KX0pfSx7aW1tZWRpYXRlOiEwfSksQihmLCgpPT57Zi52YWx1ZSYmKHMudmFsdWU9e3dpZHRoOmYudmFsdWUub2Zmc2V0V2lkdGgsaGVpZ2h0OmYudmFsdWUub2Zmc2V0SGVpZ2h0fSx1cGRhdGVQb3NpdGlvbigpKX0pLEIoW2dsb2JhbFRoaXMuZG9jdW1lbnQ/LmJvZHkscl0sKCk9Pnt1cGRhdGVQb3NpdGlvbigpfSksKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihDKSx7cHJlc2VudDp0LmZvcmNlTW91bnR8fHUudmFsdWUsImZvcmNlLW1vdW50IjohZS51bnJlZihpKS51bm1vdW50T25IaWRlLnZhbHVlLG9uQWZ0ZXJMZWF2ZTpsWzJdfHwobFsyXT0oKT0+e3MudmFsdWU9dm9pZCAwLGQudmFsdWU9dm9pZCAwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoe3ByZXNlbnQ6bn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLGUubWVyZ2VQcm9wcyh0LiRhdHRycyx7cmVmOmUudW5yZWYoYSksYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiZGF0YS1zdGF0ZSI6ZS51bnJlZihnZXRPcGVuU3RhdGUpKHUudmFsdWUpLCJkYXRhLW9yaWVudGF0aW9uIjplLnVucmVmKGkpLm9yaWVudGF0aW9uLHN0eWxlOntwb2ludGVyRXZlbnRzOiF1LnZhbHVlJiZlLnVucmVmKGkpLmlzUm9vdE1lbnU/Im5vbmUiOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCI6cy52YWx1ZT9gJHtzLnZhbHVlPy53aWR0aH1weGA6dm9pZCAwLCItLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWhlaWdodCI6cy52YWx1ZT9gJHtzLnZhbHVlPy5oZWlnaHR9cHhgOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0IjpkLnZhbHVlP2Ake2QudmFsdWU/LmxlZnR9cHhgOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC10b3AiOmQudmFsdWU/YCR7ZC52YWx1ZT8udG9wfXB4YDp2b2lkIDB9LGhpZGRlbjohbixvblBvaW50ZXJlbnRlcjpsWzBdfHwobFswXT10PT5lLnVucmVmKGkpLm9uQ29udGVudEVudGVyKGUudW5yZWYoaSkubW9kZWxWYWx1ZS52YWx1ZSkpLG9uUG9pbnRlcmxlYXZlOmxbMV18fChsWzFdPXQ9PmUudW5yZWYod2hlbk1vdXNlKSgoKT0+ZS51bnJlZihpKS5vbkNvbnRlbnRMZWF2ZSgpKSh0KSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86Mn0sMTA0MCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXN0YXRlIiwiZGF0YS1vcmllbnRhdGlvbiIsInN0eWxlIiwiaGlkZGVuIl0pXSksXzozfSw4LFsicHJlc2VudCIsImZvcmNlLW1vdW50Il0pKX19KTtjb25zdCBCZT17c2xvdHM6e2NvbnRlbnQ6ImJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIG9yaWdpbi0oLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSBmb2N1czpvdXRsaW5lLW5vbmUgcG9pbnRlci1ldmVudHMtYXV0byIsYXJyb3c6ImZpbGwtYmcgc3Ryb2tlLWRlZmF1bHQifX0sd2U9e19fbmFtZToiVVBvcG92ZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnttb2RlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiY2xpY2sifSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sYXJyb3c6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3BlbkRlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsb3NlRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH19LGVtaXRzOlsiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoaSx7ZW1pdDpyfSl7Y29uc3QgYz1pLHM9cixkPWUudXNlU2xvdHMoKSx1PXQoKSxmPWwoInBvcG92ZXIiLGMpLHY9ImhvdmVyIj09PWMubW9kZT9uKGMsImRlZmF1bHRPcGVuIiwib3BlbiIsIm9wZW5EZWxheSIsImNsb3NlRGVsYXkiKTpuKGMsImRlZmF1bHRPcGVuIiwib3BlbiIsIm1vZGFsIikscD1hKHYscyksaD1iKGUudG9SZWYoKCk9PmMucG9ydGFsKSksaz1lLnRvUmVmKCgpPT5LKGMuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4fSkpLG09ZS5jb21wdXRlZCgoKT0+e2lmKCFjLmRpc21pc3NpYmxlKXtyZXR1cm5bImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKGUsdCk9PihlW3RdPWU9PntlLnByZXZlbnREZWZhdWx0KCkscygiY2xvc2U6cHJldmVudCIpfSxlKSx7fSl9cmV0dXJue3BvaW50ZXJEb3duT3V0c2lkZTpNfX0pLGc9ZS50b1JlZigoKT0+SyhjLmFycm93LHtyb3VuZGVkOiEwfSkpLEw9ZS5jb21wdXRlZCgoKT0+byh7ZXh0ZW5kOm8oQmUpLC4uLnUudWk/LnBvcG92ZXJ8fHt9fSkoe3NpZGU6ay52YWx1ZS5zaWRlfSkpLHk9ZS5jb21wdXRlZCgoKT0+ImhvdmVyIj09PWMubW9kZT8kOlQpO3JldHVybih0LGwsYSxuKT0+e2woVyhlLnVucmVmKHkpLlJvb3QsZS5tZXJnZVByb3BzKGUudW5yZWYocCksbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3BlbjpsLGNsb3NlOmF9LG4sbyxyKT0+e2lmKCFuKXJldHVybltkLmRlZmF1bHR8fGkucmVmZXJlbmNlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5UcmlnZ2VyLHtrZXk6MCwiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTppLnJlZmVyZW5jZSxjbGFzczpjLmNsYXNzfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmx9KV0pLF86Mn0sMTAzMixbInJlZmVyZW5jZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksIkFuY2hvciJpbiB5LnZhbHVlJiZkLmFuY2hvcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoeSkuQW5jaG9yLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImFuY2hvciIsYT97Y2xvc2U6YX06e30pXSksXzoyfSwxMDI0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih5KS5Qb3J0YWwsZS51bnJlZihoKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeSkuQ29udGVudCxlLm1lcmdlUHJvcHMoay52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkwudmFsdWUuY29udGVudCh7Y2xhc3M6WyFkLmRlZmF1bHQmJmMuY2xhc3MsZS51bnJlZihmKT8uY29udGVudF19KX0sZS50b0hhbmRsZXJzKG0udmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQiLGE/e2Nsb3NlOmF9Ont9KSxpLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoe2tleTowfSxnLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkwudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoZik/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDI0KV0pLF86Mn0sMTA0MCldO2QuZGVmYXVsdHx8aS5yZWZlcmVuY2U/bihXKGUudW5yZWYoeSkuVHJpZ2dlcix7ImFzLWNoaWxkIjoiIixyZWZlcmVuY2U6aS5yZWZlcmVuY2UsY2xhc3M6Yy5jbGFzc30se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLG4saSxvKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmx9KV07SCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46bH0sbnVsbCxuLGksbyl9KSxfOjJ9LG8scikpOm4oIlx4M2MhLS0tLVx4M2UiKSwiQW5jaG9yImluIHkudmFsdWUmJmQuYW5jaG9yP24oVyhlLnVucmVmKHkpLkFuY2hvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG4saSxvKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImFuY2hvciIsYT97Y2xvc2U6YX06e30pXTtIKHQuJHNsb3RzLCJhbmNob3IiLGE/e2Nsb3NlOmF9Ont9LG51bGwsbixpLG8pfSksXzoyfSxvLHIpKTpuKCJceDNjIS0tLS1ceDNlIiksbihXKGUudW5yZWYoeSkuUG9ydGFsLGUudW5yZWYoaCkse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG4sbyxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeSkuQ29udGVudCxlLm1lcmdlUHJvcHMoay52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkwudmFsdWUuY29udGVudCh7Y2xhc3M6WyFkLmRlZmF1bHQmJmMuY2xhc3MsZS51bnJlZihmKT8uY29udGVudF19KX0sZS50b0hhbmRsZXJzKG0udmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQiLGE/e2Nsb3NlOmF9Ont9KSxpLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoe2tleTowfSxnLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkwudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoZik/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDI0KV07bihXKGUudW5yZWYoeCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGwsbixvLHIpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih5KS5Db250ZW50LGUubWVyZ2VQcm9wcyhrLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6TC52YWx1ZS5jb250ZW50KHtjbGFzczpbIWQuZGVmYXVsdCYmYy5jbGFzcyxlLnVucmVmKGYpPy5jb250ZW50XX0pfSxlLnRvSGFuZGxlcnMobS52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudCIsYT97Y2xvc2U6YX06e30pLGkuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHkpLkFycm93LGUubWVyZ2VQcm9wcyh7a2V5OjB9LGcudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6TC52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihmKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldO24oVyhlLnVucmVmKHkpLkNvbnRlbnQsZS5tZXJnZVByb3BzKGsudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpMLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshZC5kZWZhdWx0JiZjLmNsYXNzLGUudW5yZWYoZik/LmNvbnRlbnRdfSl9LGUudG9IYW5kbGVycyhtLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG4sbyxyKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQiLGE/e2Nsb3NlOmF9Ont9KSxpLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoe2tleTowfSxnLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkwudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoZik/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07SCh0LiRzbG90cywiY29udGVudCIsYT97Y2xvc2U6YX06e30sbnVsbCxuLG8sciksaS5hcnJvdz9uKFcoZS51bnJlZih5KS5BcnJvdyxlLm1lcmdlUHJvcHMoZy52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpMLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKGYpPy5hcnJvd30pfSksbnVsbCxvLHIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9LG8scikpfSksXzoyfSxvLHIpKX0pLF86Mn0sbyxyKSl9KSxfOjN9LGEpKX19fSxWZT13ZS5zZXR1cDt3ZS5zZXR1cD0odCxsKT0+e2NvbnN0IGE9ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1BvcG92ZXIudnVlIiksVmU/VmUodCxsKTp2b2lkIDB9O2NvbnN0IF9lPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCBnYXAtMS41IFsmPmRpdl06bWluLXctMCIsbGlzdDoiaXNvbGF0ZSBtaW4tdy0wIixsYWJlbDoidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1zZW1pYm9sZCB0ZXh0LXhzLzUgdGV4dC1oaWdobGlnaHRlZCBweC0yLjUgcHktMS41IixpdGVtOiJtaW4tdy0wIixsaW5rOiJncm91cCByZWxhdGl2ZSB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBmb250LW1lZGl1bSB0ZXh0LXNtIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTpyb3VuZGVkLW1kIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy0yIixsaW5rTGVhZGluZ0ljb246InNocmluay0wIHNpemUtNSIsbGlua0xlYWRpbmdBdmF0YXI6InNocmluay0wIixsaW5rTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsbGlua0xlYWRpbmdDaGlwU2l6ZToic20iLGxpbmtUcmFpbGluZzoiZ3JvdXAgbXMtYXV0byBpbmxpbmUtZmxleCBnYXAtMS41IGl0ZW1zLWNlbnRlciIsbGlua1RyYWlsaW5nQmFkZ2U6InNocmluay0wIixsaW5rVHJhaWxpbmdCYWRnZVNpemU6InNtIixsaW5rVHJhaWxpbmdJY29uOiJzaXplLTUgdHJhbnNmb3JtIHNocmluay0wIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnJvdGF0ZS0xODAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwIixsaW5rTGFiZWw6InRydW5jYXRlIixsaW5rTGFiZWxFeHRlcm5hbEljb246ImlubGluZS1ibG9jayBzaXplLTMgYWxpZ24tdG9wIHRleHQtZGltbWVkIixjaGlsZExpc3Q6Imlzb2xhdGUiLGNoaWxkTGFiZWw6InRleHQteHMgdGV4dC1oaWdobGlnaHRlZCIsY2hpbGRJdGVtOiIiLGNoaWxkTGluazoiZ3JvdXAgcmVsYXRpdmUgc2l6ZS1mdWxsIGZsZXggaXRlbXMtc3RhcnQgdGV4dC1zdGFydCB0ZXh0LXNtIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTpyb3VuZGVkLW1kIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy0yIixjaGlsZExpbmtXcmFwcGVyOiJtaW4tdy0wIixjaGlsZExpbmtJY29uOiJzaXplLTUgc2hyaW5rLTAiLGNoaWxkTGlua0xhYmVsOiJ0cnVuY2F0ZSIsY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb246ImlubGluZS1ibG9jayBzaXplLTMgYWxpZ24tdG9wIHRleHQtZGltbWVkIixjaGlsZExpbmtEZXNjcmlwdGlvbjoidGV4dC1tdXRlZCIsc2VwYXJhdG9yOiJweC0yIGgtcHggYmctYm9yZGVyIix2aWV3cG9ydFdyYXBwZXI6ImFic29sdXRlIHRvcC1mdWxsIGxlZnQtMCBmbGV4IHctZnVsbCIsdmlld3BvcnQ6InJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiBiZy1kZWZhdWx0IHNoYWRvdy1sZyByb3VuZGVkLW1kIHJpbmcgcmluZy1kZWZhdWx0IGgtKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtaGVpZ2h0KSB3LWZ1bGwgdHJhbnNpdGlvbi1bd2lkdGgsaGVpZ2h0LGxlZnQscmlnaHRdIGR1cmF0aW9uLTIwMCBvcmlnaW4tW3RvcF9jZW50ZXJdIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSB6LTEiLGNvbnRlbnQ6IiIsaW5kaWNhdG9yOiJhYnNvbHV0ZSBsZWZ0LTAgZGF0YS1bc3RhdGU9dmlzaWJsZV06YW5pbWF0ZS1bZmFkZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9aGlkZGVuXTphbmltYXRlLVtmYWRlLW91dF8xMDBtc19lYXNlLWluXSBkYXRhLVtzdGF0ZT1oaWRkZW5dOm9wYWNpdHktMCBib3R0b20tMCB6LTIgdy0oLS1yZWthLW5hdmlnYXRpb24tbWVudS1pbmRpY2F0b3Itc2l6ZSkgdHJhbnNsYXRlLXgtKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uKSBmbGV4IGgtMi41IGl0ZW1zLWVuZCBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gdHJhbnNpdGlvbi1bdHJhbnNsYXRlLHdpZHRoXSBkdXJhdGlvbi0yMDAiLGFycm93OiJyZWxhdGl2ZSB0b3AtWzUwJV0gc2l6ZS0yLjUgcm90YXRlLTQ1IGJvcmRlciBib3JkZXItZGVmYXVsdCBiZy1kZWZhdWx0IHotMSByb3VuZGVkLXhzIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXByaW1hcnkiLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1wcmltYXJ5In0sc2Vjb25kYXJ5OntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXNlY29uZGFyeSIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2xpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctc3VjY2VzcyIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXN1Y2Nlc3MifSxpbmZvOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWluZm8iLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1pbmZvIn0sd2FybmluZzp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy13YXJuaW5nIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctd2FybmluZyJ9LGVycm9yOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWVycm9yIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctZXJyb3IifSxuZXV0cmFsOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWludmVydGVkIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW52ZXJ0ZWQifX0saGlnaGxpZ2h0Q29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LHZhcmlhbnQ6e3BpbGw6IiIsbGluazoiIn0sb3JpZW50YXRpb246e2hvcml6b250YWw6e3Jvb3Q6Iml0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iLGxpc3Q6ImZsZXggaXRlbXMtY2VudGVyIixpdGVtOiJweS0yIixsaW5rOiJweC0yLjUgcHktMS41IGJlZm9yZTppbnNldC14LXB4IGJlZm9yZTppbnNldC15LTAiLGNoaWxkTGlzdDoiZ3JpZCBwLTIiLGNoaWxkTGluazoicHgtMyBweS0yIGdhcC0yIGJlZm9yZTppbnNldC14LXB4IGJlZm9yZTppbnNldC15LTAiLGNoaWxkTGlua0xhYmVsOiJmb250LW1lZGl1bSIsY29udGVudDoiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBtYXgtaC1bNzB2aF0gb3ZlcmZsb3cteS1hdXRvIn0sdmVydGljYWw6e3Jvb3Q6ImZsZXgtY29sIixsaW5rOiJmbGV4LXJvdyBweC0yLjUgcHktMS41IGJlZm9yZTppbnNldC15LXB4IGJlZm9yZTppbnNldC14LTAiLGNoaWxkTGFiZWw6InB4LTEuNSBweS0wLjUiLGNoaWxkTGluazoicC0xLjUgZ2FwLTEuNSBiZWZvcmU6aW5zZXQteS1weCBiZWZvcmU6aW5zZXQteC0wIn19LGNvbnRlbnRPcmllbnRhdGlvbjp7aG9yaXpvbnRhbDp7dmlld3BvcnRXcmFwcGVyOiJqdXN0aWZ5LWNlbnRlciIsY29udGVudDoiZGF0YS1bbW90aW9uPWZyb20tc3RhcnRdOmFuaW1hdGUtW2VudGVyLWZyb20tbGVmdF8yMDBtc19lYXNlXSBkYXRhLVttb3Rpb249ZnJvbS1lbmRdOmFuaW1hdGUtW2VudGVyLWZyb20tcmlnaHRfMjAwbXNfZWFzZV0gZGF0YS1bbW90aW9uPXRvLXN0YXJ0XTphbmltYXRlLVtleGl0LXRvLWxlZnRfMjAwbXNfZWFzZV0gZGF0YS1bbW90aW9uPXRvLWVuZF06YW5pbWF0ZS1bZXhpdC10by1yaWdodF8yMDBtc19lYXNlXSJ9LHZlcnRpY2FsOnt2aWV3cG9ydDoic206dy0oLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCkgbGVmdC0oLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0KSBydGw6bGVmdC1hdXRvIHJ0bDpyaWdodC1bY2FsYygxMDAlLXZhcigtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWxlZnQpLXZhcigtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LXdpZHRoKSldIn19LGFjdGl2ZTp7dHJ1ZTp7Y2hpbGRMaW5rOiJiZWZvcmU6YmctZWxldmF0ZWQgdGV4dC1oaWdobGlnaHRlZCIsY2hpbGRMaW5rSWNvbjoidGV4dC1kZWZhdWx0In0sZmFsc2U6e2xpbms6InRleHQtbXV0ZWQiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1kaW1tZWQiLGNoaWxkTGluazpbImhvdmVyOmJlZm9yZTpiZy1lbGV2YXRlZC81MCB0ZXh0LWRlZmF1bHQgaG92ZXI6dGV4dC1oaWdobGlnaHRlZCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGNoaWxkTGlua0ljb246WyJ0ZXh0LWRpbW1lZCBncm91cC1ob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0sZGlzYWJsZWQ6e3RydWU6e2xpbms6ImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTc1In19LGhpZ2hsaWdodDp7dHJ1ZToiIn0sbGV2ZWw6e3RydWU6IiJ9LGNvbGxhcHNlZDp7dHJ1ZToiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY29udGVudE9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczp7Y2hpbGRMaXN0OiJncmlkLWNvbHMtMiBnYXAtMiJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGNvbnRlbnRPcmllbnRhdGlvbjoidmVydGljYWwiLGNsYXNzOntjaGlsZExpc3Q6ImdhcC0xIixjb250ZW50OiJ3LTYwIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGNvbGxhcHNlZDohMSxjbGFzczp7Y2hpbGRMaXN0OiJtcy01IGJvcmRlci1zIGJvcmRlci1kZWZhdWx0IixjaGlsZEl0ZW06InBzLTEuNSAtbXMtcHgiLGNvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW2NvbGxhcHNpYmxlLWRvd25fMjAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bY29sbGFwc2libGUtdXBfMjAwbXNfZWFzZS1vdXRdIG92ZXJmbG93LWhpZGRlbiJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixjb2xsYXBzZWQ6ITAsY2xhc3M6e2xpbms6InB4LTEuNSIsbGlua0xhYmVsOiJoaWRkZW4iLGxpbmtUcmFpbGluZzoiaGlkZGVuIixjb250ZW50OiJzaGFkb3ctc20gcm91bmRlZC1zbSBtaW4taC02IHAtMSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGhpZ2hsaWdodDohMCxjbGFzczp7bGluazpbImFmdGVyOmFic29sdXRlIGFmdGVyOi1ib3R0b20tMiBhZnRlcjppbnNldC14LTIuNSBhZnRlcjpibG9jayBhZnRlcjpoLXB4IGFmdGVyOnJvdW5kZWQtZnVsbCIsImFmdGVyOnRyYW5zaXRpb24tY29sb3JzIl19fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsY2xhc3M6e2xpbms6WyJhZnRlcjphYnNvbHV0ZSBhZnRlcjotc3RhcnQtMS41IGFmdGVyOmluc2V0LXktMC41IGFmdGVyOmJsb2NrIGFmdGVyOnctcHggYWZ0ZXI6cm91bmRlZC1mdWxsIiwiYWZ0ZXI6dHJhbnNpdGlvbi1jb2xvcnMiXX19LHtkaXNhYmxlZDohMSxhY3RpdmU6ITEsdmFyaWFudDoicGlsbCIsY2xhc3M6e2xpbms6WyJob3Zlcjp0ZXh0LWhpZ2hsaWdodGVkIGhvdmVyOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGxpbmtMZWFkaW5nSWNvbjpbImdyb3VwLWhvdmVyOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19fSx7ZGlzYWJsZWQ6ITEsYWN0aXZlOiExLHZhcmlhbnQ6InBpbGwiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczp7bGluazoiZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1oaWdobGlnaHRlZCIsbGlua0xlYWRpbmdJY29uOiJncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWRlZmF1bHQifX0se2Rpc2FibGVkOiExLHZhcmlhbnQ6InBpbGwiLGhpZ2hsaWdodDohMCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1lbGV2YXRlZC81MCJ9fSx7ZGlzYWJsZWQ6ITEsdmFyaWFudDoicGlsbCIsaGlnaGxpZ2h0OiExLGFjdGl2ZTohMSxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1lbGV2YXRlZC81MCJ9fSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1wcmltYXJ5IixsaW5rTGVhZGluZ0ljb246InRleHQtcHJpbWFyeSBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1zZWNvbmRhcnkiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1zZWNvbmRhcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zZWNvbmRhcnkifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtc3VjY2VzcyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXN1Y2Nlc3MgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LWluZm8iLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1pbmZvIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaW5mbyJ9fSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC13YXJuaW5nIixsaW5rTGVhZGluZ0ljb246InRleHQtd2FybmluZyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXdhcm5pbmcifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LWVycm9yIixsaW5rTGVhZGluZ0ljb246InRleHQtZXJyb3IgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1lcnJvciJ9fSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1oaWdobGlnaHRlZCIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWhpZ2hsaWdodGVkIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQifX0se3ZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxoaWdobGlnaHQ6ITEsY2xhc3M6e2xpbms6ImJlZm9yZTpiZy1lbGV2YXRlZCJ9fSx7dmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGhpZ2hsaWdodDohMCxkaXNhYmxlZDohMSxjbGFzczp7bGluazpbImhvdmVyOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsImJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdfX0se2Rpc2FibGVkOiExLGFjdGl2ZTohMSx2YXJpYW50OiJsaW5rIixjbGFzczp7bGluazpbImhvdmVyOnRleHQtaGlnaGxpZ2h0ZWQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxpbmtMZWFkaW5nSWNvbjpbImdyb3VwLWhvdmVyOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19fSx7ZGlzYWJsZWQ6ITEsYWN0aXZlOiExLHZhcmlhbnQ6ImxpbmsiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczp7bGluazoiZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1oaWdobGlnaHRlZCIsbGlua0xlYWRpbmdJY29uOiJncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWRlZmF1bHQifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtcHJpbWFyeSIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXByaW1hcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1wcmltYXJ5In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtc2Vjb25kYXJ5IixsaW5rTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXN1Y2Nlc3MiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1zdWNjZXNzIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6ImxpbmsiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1pbmZvIixsaW5rTGVhZGluZ0ljb246InRleHQtaW5mbyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtd2FybmluZyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXdhcm5pbmcgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6ImxpbmsiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1lcnJvciIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWVycm9yIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZXJyb3IifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1oaWdobGlnaHRlZCBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWhpZ2hsaWdodGVkIn19LHtoaWdobGlnaHRDb2xvcjoicHJpbWFyeSIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6YmctcHJpbWFyeSJ9fSx7aGlnaGxpZ2h0Q29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6Ymctc2Vjb25kYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6Ymctc3VjY2VzcyJ9fSx7aGlnaGxpZ2h0Q29sb3I6ImluZm8iLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLWluZm8ifX0se2hpZ2hsaWdodENvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJhZnRlcjpiZy13YXJuaW5nIn19LHtoaWdobGlnaHRDb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLWVycm9yIn19LHtoaWdobGlnaHRDb2xvcjoibmV1dHJhbCIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6YmctaW52ZXJ0ZWQifX1dLGRlZmF1bHRWYXJpYW50czp7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodENvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJwaWxsIn19LE5lPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVU5hdmlnYXRpb25NZW51IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im11bHRpcGxlIn0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGV4dGVybmFsSWNvbjp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGNvbGxhcHNlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0b29sdGlwOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcG92ZXI6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodENvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb250ZW50T3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJob3Jpem9udGFsIn0sYXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdmFsdWVLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2YWx1ZSJ9LGxhYmVsS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGRlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sZGlzYWJsZUNsaWNrVHJpZ2dlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlSG92ZXJUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNraXBEZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsYXBzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoaCx7ZW1pdDprfSl7Y29uc3QgbT1oLGc9ayxMPWUudXNlU2xvdHMoKSxiPXQoKSx4PWwoIm5hdmlnYXRpb25NZW51IixtKSx5PWEoZS5jb21wdXRlZCgoKT0+KHthczptLmFzLGRlbGF5RHVyYXRpb246bS5kZWxheUR1cmF0aW9uLHNraXBEZWxheUR1cmF0aW9uOm0uc2tpcERlbGF5RHVyYXRpb24sb3JpZW50YXRpb246bS5vcmllbnRhdGlvbixkaXNhYmxlQ2xpY2tUcmlnZ2VyOm0uZGlzYWJsZUNsaWNrVHJpZ2dlcixkaXNhYmxlSG92ZXJUcmlnZ2VyOm0uZGlzYWJsZUhvdmVyVHJpZ2dlcixkaXNhYmxlUG9pbnRlckxlYXZlQ2xvc2U6bS5kaXNhYmxlUG9pbnRlckxlYXZlQ2xvc2UsdW5tb3VudE9uSGlkZTptLnVubW91bnRPbkhpZGV9KSksZyksST1hKG4obSwiY29sbGFwc2libGUiLCJkaXNhYmxlZCIsInR5cGUiLCJ1bm1vdW50T25IaWRlIiksZyksQz1lLnRvUmVmKCgpPT5tLmNvbnRlbnQpLEI9ZS50b1JlZigoKT0+SygiYm9vbGVhbiI9PXR5cGVvZiBtLnRvb2x0aXA/e306bS50b29sdGlwLHsuLi4idmVydGljYWwiPT09bS5vcmllbnRhdGlvbiYme2RlbGF5RHVyYXRpb246MCxjb250ZW50OntzaWRlOiJyaWdodCJ9fX0pKSx3PWUudG9SZWYoKCk9PksoImJvb2xlYW4iPT10eXBlb2YgbS5wb3BvdmVyP3t9Om0ucG9wb3Zlcix7bW9kZToiaG92ZXIiLGNvbnRlbnQ6e3NpZGU6InJpZ2h0IixhbGlnbjoic3RhcnQiLGFsaWduT2Zmc2V0OjJ9fSkpLFtWLF9dPWkoKSxbTixTXT1pKHtwcm9wczp7aXRlbTpPYmplY3QsaW5kZXg6TnVtYmVyLGxldmVsOk51bWJlcixsaXN0SW5kZXg6TnVtYmVyfX0pLEQ9ZS5jb21wdXRlZCgoKT0+byh7ZXh0ZW5kOm8oX2UpLC4uLmIudWk/Lm5hdmlnYXRpb25NZW51fHx7fX0pKHtvcmllbnRhdGlvbjptLm9yaWVudGF0aW9uLGNvbnRlbnRPcmllbnRhdGlvbjoidmVydGljYWwiPT09bS5vcmllbnRhdGlvbj92b2lkIDA6bS5jb250ZW50T3JpZW50YXRpb24sY29sbGFwc2VkOm0uY29sbGFwc2VkLGNvbG9yOm0uY29sb3IsdmFyaWFudDptLnZhcmlhbnQsaGlnaGxpZ2h0Om0uaGlnaGxpZ2h0LGhpZ2hsaWdodENvbG9yOm0uaGlnaGxpZ2h0Q29sb3J8fG0uY29sb3J9KSksRT1lLmNvbXB1dGVkKCgpPT5tLml0ZW1zPy5sZW5ndGg/cihtLml0ZW1zKT9tLml0ZW1zOlttLml0ZW1zXTpbXSk7ZnVuY3Rpb24gZ2V0SXRlbVZhbHVlKGUsdCxsLGEpe2NvbnN0IG49RS52YWx1ZS5sZW5ndGg+MT9gZ3JvdXAtJHthfS1gOiIiO3JldHVybiB1KGUsbS52YWx1ZUtleSk/PyhsPjA/YCR7bn1pdGVtLSR7bH0tJHt0fWA6YCR7bn1pdGVtLSR7dH1gKX1mdW5jdGlvbiBnZXRBY2NvcmRpb25EZWZhdWx0VmFsdWUoZSx0PTAsbD0wKXtjb25zdCBhPWUucmVkdWNlKChlLGEsbik9PigoYS5kZWZhdWx0T3Blbnx8YS5vcGVuKSYmZS5wdXNoKGdldEl0ZW1WYWx1ZShhLG4sdCxsKSksZSksW10pO3JldHVybiJzaW5nbGUiPT09bS50eXBlP2FbMF06YX1mdW5jdGlvbiBvbkxpbmtUcmFpbGluZ0NsaWNrKGUsdCl7dC5jaGlsZHJlbj8ubGVuZ3RoJiYoImhvcml6b250YWwiPT09bS5vcmllbnRhdGlvbj9lLnByZXZlbnREZWZhdWx0KCk6InZlcnRpY2FsIiE9PW0ub3JpZW50YXRpb258fG0uY29sbGFwc2VkfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4odCxsLGEsbik9PntsKCJceDNjIS0tWy0tXHgzZSIpLGwoVyhlLnVucmVmKFYpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7aXRlbTpsLGFjdGl2ZTphLGluZGV4Om59LGksbyxyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsbC5zbG90fHwiaXRlbSIse2l0ZW06bCxpbmRleDpuLGFjdGl2ZTphLHVpOkQudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOmwsYWN0aXZlOmEsaW5kZXg6bix1aTpELnZhbHVlfSwoKT0+W2wuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYyxlLm1lcmdlUHJvcHMoe2tleTowLHNpemU6bC51aT8ubGlua0xlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKHgpPy5saW5rTGVhZGluZ0F2YXRhclNpemV8fEQudmFsdWUubGlua0xlYWRpbmdBdmF0YXJTaXplKCl9LGwuYXZhdGFyLHsiZGF0YS1zbG90IjoibGlua0xlYWRpbmdBdmF0YXIiLGNsYXNzOkQudmFsdWUubGlua0xlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGVhZGluZ0F2YXRhcixsLnVpPy5saW5rTGVhZGluZ0F2YXRhcl0sYWN0aXZlOmEsZGlzYWJsZWQ6ISFsLmRpc2FibGVkfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpsLmljb24mJmwuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHMsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmwudWk/LmxpbmtMZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoeCk/LmxpbmtMZWFkaW5nQ2hpcFNpemV8fEQudmFsdWUubGlua0xlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIifSwib2JqZWN0Ij09dHlwZW9mIGwuY2hpcD9sLmNoaXA6e30seyJkYXRhLXNsb3QiOiJsaW5rTGVhZGluZ0NoaXAifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOmwuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtMZWFkaW5nSWNvbixsLnVpPy5saW5rTGVhZGluZ0ljb25dLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJzaXplIl0pKTpsLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MixuYW1lOmwuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtMZWFkaW5nSWNvbixsLnVpPy5saW5rTGVhZGluZ0ljb25dLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUudW5yZWYodSkobCxtLmxhYmVsS2V5KXx8TFtsLnNsb3Q/YCR7bC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5saW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWwsbC51aT8ubGlua0xhYmVsXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpufSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkobCxtLmxhYmVsS2V5KSksMSldKSwiX2JsYW5rIj09PWwudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImxpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8ubGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxsLmJhZGdlfHwwPT09bC5iYWRnZXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pfHwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RofHxsLnRyYWlsaW5nSWNvbnx8TFtsLnNsb3Q/YCR7bC5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkP2UudW5yZWYoc2UpOiJzcGFuIikse2tleToxLGFzOiJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGgmJiFoLmNvbGxhcHNlZD8ic3BhbiI6dm9pZCAwLCJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmciLGNsYXNzOkQudmFsdWUubGlua1RyYWlsaW5nKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nLGwudWk/LmxpbmtUcmFpbGluZ119KSxvbkNsaWNrOmU9Pm9uTGlua1RyYWlsaW5nQ2xpY2soZSxsKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT5bbC5iYWRnZXx8MD09PWwuYmFkZ2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhSLGUubWVyZ2VQcm9wcyh7a2V5OjAsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLHNpemU6bC51aT8ubGlua1RyYWlsaW5nQmFkZ2VTaXplfHxlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZVNpemV8fEQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2VTaXplKCl9LCJzdHJpbmciPT10eXBlb2YgbC5iYWRnZXx8Im51bWJlciI9PXR5cGVvZiBsLmJhZGdlP3tsYWJlbDpsLmJhZGdlfTpsLmJhZGdlLHsiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nQmFkZ2UiLGNsYXNzOkQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2Uoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZSxsLnVpPy5saW5rVHJhaWxpbmdCYWRnZV19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSl8fCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MSxuYW1lOmwudHJhaWxpbmdJY29ufHxoLnRyYWlsaW5nSWNvbnx8ZS51bnJlZihiKS51aS5pY29ucy5jaGV2cm9uRG93biwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmwudHJhaWxpbmdJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjIsbmFtZTpsLnRyYWlsaW5nSWNvbiwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksXzoyfSwxMDMyLFsiYXMiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTtIKHQuJHNsb3RzLGwuc2xvdHx8Iml0ZW0iLHtpdGVtOmwsaW5kZXg6bixhY3RpdmU6YSx1aTpELnZhbHVlfSwoKT0+e0godC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT57bC5hdmF0YXI/aShXKGMsZS5tZXJnZVByb3BzKHtzaXplOmwudWk/LmxpbmtMZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZih4KT8ubGlua0xlYWRpbmdBdmF0YXJTaXplfHxELnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyU2l6ZSgpfSxsLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQXZhdGFyIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZih4KT8ubGlua0xlYWRpbmdBdmF0YXIsbC51aT8ubGlua0xlYWRpbmdBdmF0YXJdLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSksbnVsbCxvLHIpKTpsLmljb24mJmwuY2hpcD9pKFcocyxlLm1lcmdlUHJvcHMoe3NpemU6bC51aT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZih4KT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8RC52YWx1ZS5saW5rTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiJ9LCJvYmplY3QiPT10eXBlb2YgbC5jaGlwP2wuY2hpcDp7fSx7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQ2hpcCJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbixpLG8pPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZCx7bmFtZTpsLmljb24sImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGVhZGluZ0ljb24sbC51aT8ubGlua0xlYWRpbmdJY29uXSxhY3RpdmU6YSxkaXNhYmxlZDohIWwuZGlzYWJsZWR9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXTtuKFcoZCx7bmFtZTpsLmljb24sImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGVhZGluZ0ljb24sbC51aT8ubGlua0xlYWRpbmdJY29uXSxhY3RpdmU6YSxkaXNhYmxlZDohIWwuZGlzYWJsZWR9KX0sbnVsbCxpLG8pKX0pLF86Mn0sbyxyKSk6bC5pY29uP2koVyhkLHtuYW1lOmwuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtMZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtMZWFkaW5nSWNvbixsLnVpPy5saW5rTGVhZGluZ0ljb25dLGFjdGl2ZTphLGRpc2FibGVkOiEhbC5kaXNhYmxlZH0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxvLHIpLGUudW5yZWYodSkobCxtLmxhYmVsS2V5KXx8TFtsLnNsb3Q/YCR7bC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXT8oaShgPHNwYW4gZGF0YS1zbG90PSJsaW5rTGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5saW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWwsbC51aT8ubGlua0xhYmVsXX0pKX0iJHtyfT5gKSxIKHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpufSwoKT0+e2koYCR7VShlLnVucmVmKHUpKGwsbS5sYWJlbEtleSkpfWApfSxpLG8sciksIl9ibGFuayI9PT1sLnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj9pKFcoZCx7bmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImxpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8ubGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L3NwYW4+IikpOmkoIlx4M2MhLS0tLVx4M2UiKSxsLmJhZGdlfHwwPT09bC5iYWRnZXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pfHwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RofHxsLnRyYWlsaW5nSWNvbnx8TFtsLnNsb3Q/YCR7bC5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciXT9YKGksZS5jcmVhdGVWTm9kZShlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGgmJiFoLmNvbGxhcHNlZD9lLnVucmVmKHNlKToic3BhbiIpLHthczoidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYhaC5jb2xsYXBzZWQ/InNwYW4iOnZvaWQgMCwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nIixjbGFzczpELnZhbHVlLmxpbmtUcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtUcmFpbGluZyxsLnVpPy5saW5rVHJhaWxpbmddfSksb25DbGljazplPT5vbkxpbmtUcmFpbGluZ0NsaWNrKGUsbCl9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxvLHIsYyk9PntpZighbylyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT5bbC5iYWRnZXx8MD09PWwuYmFkZ2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhSLGUubWVyZ2VQcm9wcyh7a2V5OjAsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLHNpemU6bC51aT8ubGlua1RyYWlsaW5nQmFkZ2VTaXplfHxlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZVNpemV8fEQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2VTaXplKCl9LCJzdHJpbmciPT10eXBlb2YgbC5iYWRnZXx8Im51bWJlciI9PXR5cGVvZiBsLmJhZGdlP3tsYWJlbDpsLmJhZGdlfTpsLmJhZGdlLHsiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nQmFkZ2UiLGNsYXNzOkQudmFsdWUubGlua1RyYWlsaW5nQmFkZ2Uoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdCYWRnZSxsLnVpPy5saW5rVHJhaWxpbmdCYWRnZV19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSl8fCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsLmNoaWxkcmVuPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MSxuYW1lOmwudHJhaWxpbmdJY29ufHxoLnRyYWlsaW5nSWNvbnx8ZS51bnJlZihiKS51aS5pY29ucy5jaGV2cm9uRG93biwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmwudHJhaWxpbmdJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjIsbmFtZTpsLnRyYWlsaW5nSWNvbiwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTtIKHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06bCxhY3RpdmU6YSxpbmRleDpuLHVpOkQudmFsdWV9LCgpPT57bC5iYWRnZXx8MD09PWwuYmFkZ2U/byhXKFIsZS5tZXJnZVByb3BzKHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoib3V0bGluZSIsc2l6ZTpsLnVpPy5saW5rVHJhaWxpbmdCYWRnZVNpemV8fGUudW5yZWYoeCk/LmxpbmtUcmFpbGluZ0JhZGdlU2l6ZXx8RC52YWx1ZS5saW5rVHJhaWxpbmdCYWRnZVNpemUoKX0sInN0cmluZyI9PXR5cGVvZiBsLmJhZGdlfHwibnVtYmVyIj09dHlwZW9mIGwuYmFkZ2U/e2xhYmVsOmwuYmFkZ2V9OmwuYmFkZ2UseyJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmdCYWRnZSIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdCYWRnZSh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmtUcmFpbGluZ0JhZGdlLGwudWk/LmxpbmtUcmFpbGluZ0JhZGdlXX0pfSksbnVsbCxyLGMpKTpvKCJceDNjIS0tLS1ceDNlIiksImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pfHwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoP28oVyhkLHtuYW1lOmwudHJhaWxpbmdJY29ufHxoLnRyYWlsaW5nSWNvbnx8ZS51bnJlZihiKS51aS5pY29ucy5jaGV2cm9uRG93biwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nSWNvbiIsY2xhc3M6RC52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZih4KT8ubGlua1RyYWlsaW5nSWNvbixsLnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6YX0pfSxudWxsLHIsYykpOmwudHJhaWxpbmdJY29uP28oVyhkLHtuYW1lOmwudHJhaWxpbmdJY29uLCJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmdJY29uIixjbGFzczpELnZhbHVlLmxpbmtUcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5saW5rVHJhaWxpbmdJY29uLGwudWk/LmxpbmtUcmFpbGluZ0ljb25dLGFjdGl2ZTphfSl9LG51bGwscixjKSk6bygiXHgzYyEtLS0tXHgzZSIpfSxvLHIsYyl9KSxfOjJ9KSxvLHIpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxvLHIpfSksXzozfSxhKSksbChXKGUudW5yZWYoTiksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtOmwsaW5kZXg6YSxsZXZlbDpuPTAsbGlzdEluZGV4Omk9MH0sbyxyLGMpPT57aWYoIW8pcmV0dXJuWyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8aC5jb2xsYXBzZWQ/ZS51bnJlZihrZSk6ZS51bnJlZihyZSkpLGUubWVyZ2VQcm9wcyh7YXM6ImxpIn0sInZlcnRpY2FsIiE9PWgub3JpZW50YXRpb258fGguY29sbGFwc2VkP3t9OntkaXNhYmxlZDohIWwuZGlzYWJsZWR9LHt2YWx1ZTpnZXRJdGVtVmFsdWUobCxhLG4saSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8ImxhYmVsIiE9PWwudHlwZXx8aC5jb2xsYXBzZWQ/ImxhYmVsIiE9PWwudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGYsZS5tZXJnZVByb3BzKHtrZXk6MX0sInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkJiYidHJpZ2dlciI9PT1sLnR5cGU/e306ZS51bnJlZih2KShsKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmksLi4ub30pPT5bKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJihsLmNoaWxkcmVuPy5sZW5ndGh8fExbbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT9lLnVucmVmKEllKToidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8IWwuY2hpbGRyZW4/Lmxlbmd0aHx8aC5jb2xsYXBzZWR8fG8uaHJlZj9lLnVucmVmKGJlKTplLnVucmVmKHNlKSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOmwuZGlzYWJsZWQsb25TZWxlY3Q6bC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmguY29sbGFwc2VkJiZsLmNoaWxkcmVuPy5sZW5ndGgmJihtLnBvcG92ZXJ8fGwucG9wb3Zlcik/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh3ZSxlLm1lcmdlUHJvcHMoe2tleTowfSx7Li4udy52YWx1ZSwuLi4iYm9vbGVhbiI9PXR5cGVvZiBsLnBvcG92ZXI/e306bC5wb3BvdmVyfHx7fX0se3VpOntjb250ZW50OkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX19KSx7Y29udGVudDplLndpdGhDdHgoKHtjbG9zZTpufSk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCIse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YSx1aTpELnZhbHVlLGNsb3NlOm59LCgpPT5bZS5jcmVhdGVWTm9kZSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9LFtlLmNyZWF0ZVZOb2RlKCJsaSIseyJkYXRhLXNsb3QiOiJjaGlsZExhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExhYmVsLGwudWk/LmNoaWxkTGFiZWxdfSl9LGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkobCxtLmxhYmVsS2V5KSksMyksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobC5jaGlsZHJlbiwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygibGkiLHtrZXk6YSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpELnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkSXRlbSxsLnVpPy5jaGlsZEl0ZW1dfSl9LFtlLmNyZWF0ZVZOb2RlKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoYmUpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTphLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4seyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rLGwudWk/LmNoaWxkTGluayx0LmNsYXNzXSxhY3RpdmU6YX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0ljb24sbC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKSsiICIsMSksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0sMikpKSwxMjgpKV0sMildKV0pLGRlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyhvLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6RC52YWx1ZS5saW5rKHtjbGFzczpbZS51bnJlZih4KT8ubGluayxsLnVpPy5saW5rLGwuY2xhc3NdLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDohIWwuZGlzYWJsZWQsbGV2ZWw6bj4wfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJ1aSJdKSk6InZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmguY29sbGFwc2VkJiYobS50b29sdGlwfHxsLnRvb2x0aXApfHwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiZsLnRvb2x0aXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhGLGUubWVyZ2VQcm9wcyh7a2V5OjEsdGV4dDplLnVucmVmKHUpKGwsbS5sYWJlbEtleSl9LHsuLi5CLnZhbHVlLC4uLiJib29sZWFuIj09dHlwZW9mIGwudG9vbHRpcD97fTpsLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyhvLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6RC52YWx1ZS5saW5rKHtjbGFzczpbZS51bnJlZih4KT8ubGluayxsLnVpPy5saW5rLGwuY2xhc3NdLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDohIWwuZGlzYWJsZWQsbGV2ZWw6bj4wfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJ0ZXh0Il0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHAsZS5tZXJnZVByb3BzKHtrZXk6Mn0sbyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOiJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb258fG4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKV0pLF86Mn0sMTA2NCxbImFjdGl2ZSIsImRpc2FibGVkIiwib25TZWxlY3QiXSkpLCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJihsLmNoaWxkcmVuPy5sZW5ndGh8fExbbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZ2UpLGUubWVyZ2VQcm9wcyh7a2V5OjB9LEMudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCIse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YSx1aTpELnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobC5jaGlsZHJlbiwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygibGkiLHtrZXk6YSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpELnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkSXRlbSxsLnVpPy5jaGlsZEl0ZW1dfSl9LFtlLmNyZWF0ZVZOb2RlKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoYmUpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTphLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4seyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rLGwudWk/LmNoaWxkTGluayx0LmNsYXNzXSxhY3RpdmU6YX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0ljb24sbC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua1dyYXBwZXIiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua1dyYXBwZXIsbC51aT8uY2hpbGRMaW5rV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInAiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLHQuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygicCIse2tleTowLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtEZXNjcmlwdGlvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtEZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uLGwudWk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uXSxhY3RpdmU6YX0pfSxlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiYWN0aXZlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXSwyKSkpLDEyOCkpXSwyKV0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOkQudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5sYWJlbCxsLnVpPy5sYWJlbCxsLmNsYXNzXX0pfSxbZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSwyKSksInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihjZSkse2tleToyLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihhZSksZS5tZXJnZVByb3BzKHsuLi5lLnVucmVmKEkpLGRlZmF1bHRWYWx1ZTpnZXRBY2NvcmRpb25EZWZhdWx0VmFsdWUobC5jaGlsZHJlbixuKzEsaSl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihTKSx7a2V5OmwsaXRlbTp0LGluZGV4OmwsbGV2ZWw6bisxLCJsaXN0LWluZGV4IjppLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLHQudWk/LmNoaWxkSXRlbV19KX0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwibGV2ZWwiLCJsaXN0LWluZGV4IiwiY2xhc3MiXSkpKSwxMjgpKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbInZhbHVlIl0pKV07WChvLGUuY3JlYXRlVk5vZGUoZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8aC5jb2xsYXBzZWQ/ZS51bnJlZihrZSk6ZS51bnJlZihyZSkpLGUubWVyZ2VQcm9wcyh7YXM6ImxpIn0sInZlcnRpY2FsIiE9PWgub3JpZW50YXRpb258fGguY29sbGFwc2VkP3t9OntkaXNhYmxlZDohIWwuZGlzYWJsZWR9LHt2YWx1ZTpnZXRJdGVtVmFsdWUobCxhLG4saSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKG8scixjLHMpPT57aWYoIXIpcmV0dXJuWyJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHwibGFiZWwiIT09bC50eXBlfHxoLmNvbGxhcHNlZD8ibGFiZWwiIT09bC50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZixlLm1lcmdlUHJvcHMoe2tleToxfSwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYhaC5jb2xsYXBzZWQmJiJ0cmlnZ2VyIj09PWwudHlwZT97fTplLnVucmVmKHYpKGwpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6aSwuLi5vfSk9PlsoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pP2UudW5yZWYoSWUpOiJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHwhbC5jaGlsZHJlbj8ubGVuZ3RofHxoLmNvbGxhcHNlZHx8by5ocmVmP2UudW5yZWYoYmUpOmUudW5yZWYoc2UpKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6bC5kaXNhYmxlZCxvblNlbGVjdDpsLm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmaC5jb2xsYXBzZWQmJmwuY2hpbGRyZW4/Lmxlbmd0aCYmKG0ucG9wb3Zlcnx8bC5wb3BvdmVyKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHdlLGUubWVyZ2VQcm9wcyh7a2V5OjB9LHsuLi53LnZhbHVlLC4uLiJib29sZWFuIj09dHlwZW9mIGwucG9wb3Zlcj97fTpsLnBvcG92ZXJ8fHt9fSx7dWk6e2NvbnRlbnQ6RC52YWx1ZS5jb250ZW50KHtjbGFzczpbZS51bnJlZih4KT8uY29udGVudCxsLnVpPy5jb250ZW50XX0pfX0pLHtjb250ZW50OmUud2l0aEN0eCgoe2Nsb3NlOm59KT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWUsY2xvc2U6bn0sKCk9PltlLmNyZWF0ZVZOb2RlKCJ1bCIseyJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0sW2UuY3JlYXRlVk5vZGUoImxpIix7ImRhdGEtc2xvdCI6ImNoaWxkTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGFiZWwsbC51aT8uY2hpbGRMYWJlbF19KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KShsLG0ubGFiZWxLZXkpKSwzKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiYWN0aXZlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXSwyKSkpLDEyOCkpXSwyKV0pXSksZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDpuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTA0MCxbInVpIl0pKToidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmaC5jb2xsYXBzZWQmJihtLnRvb2x0aXB8fGwudG9vbHRpcCl8fCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJmwudG9vbHRpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEYsZS5tZXJnZVByb3BzKHtrZXk6MSx0ZXh0OmUudW5yZWYodSkobCxtLmxhYmVsS2V5KX0sey4uLkIudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC50b29sdGlwP3t9OmwudG9vbHRpcHx8e319KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDpuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTA0MCxbInRleHQiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToyfSxvLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6RC52YWx1ZS5saW5rKHtjbGFzczpbZS51bnJlZih4KT8ubGluayxsLnVpPy5saW5rLGwuY2xhc3NdLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDohIWwuZGlzYWJsZWQsbGV2ZWw6Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbnx8bj4wfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSkpXSksXzoyfSwxMDY0LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvblNlbGVjdCJdKSksImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihnZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sQy52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWV9LCgpPT5bZS5jcmVhdGVWTm9kZSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rV3JhcHBlciIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtXcmFwcGVyKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rV3JhcHBlcixsLnVpPy5jaGlsZExpbmtXcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgicCIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKSsiICIsMSksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksdC5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjAsImRhdGEtc2xvdCI6ImNoaWxkTGlua0Rlc2NyaXB0aW9uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0Rlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rRGVzY3JpcHRpb24sbC51aT8uY2hpbGRMaW5rRGVzY3JpcHRpb25dLGFjdGl2ZTphfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoyfSwxMDQwKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6RC52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmxhYmVsLGwudWk/LmxhYmVsLGwuY2xhc3NdfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldLDIpKSwidmVydGljYWwiPT09aC5vcmllbnRhdGlvbiYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYhaC5jb2xsYXBzZWQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGNlKSx7a2V5OjIsImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGFlKSxlLm1lcmdlUHJvcHMoey4uLmUudW5yZWYoSSksZGVmYXVsdFZhbHVlOmdldEFjY29yZGlvbkRlZmF1bHRWYWx1ZShsLmNoaWxkcmVuLG4rMSxpKX0se2FzOiJ1bCIsImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobC5jaGlsZHJlbiwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFMpLHtrZXk6bCxpdGVtOnQsaW5kZXg6bCxsZXZlbDpuKzEsImxpc3QtaW5kZXgiOmksImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sdC51aT8uY2hpbGRJdGVtXX0pfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJsZXZlbCIsImxpc3QtaW5kZXgiLCJjbGFzcyJdKSkpLDEyOCkpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTsidmVydGljYWwiIT09aC5vcmllbnRhdGlvbnx8ImxhYmVsIiE9PWwudHlwZXx8aC5jb2xsYXBzZWQ/ImxhYmVsIiE9PWwudHlwZT9yKFcoZixlLm1lcmdlUHJvcHMoInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkJiYidHJpZ2dlciI9PT1sLnR5cGU/e306ZS51bnJlZih2KShsKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmksLi4ub30scixjLHMpPT57aWYoIXIpcmV0dXJuWyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSk/ZS51bnJlZihJZSk6InZlcnRpY2FsIiE9PWgub3JpZW50YXRpb258fCFsLmNoaWxkcmVuPy5sZW5ndGh8fGguY29sbGFwc2VkfHxvLmhyZWY/ZS51bnJlZihiZSk6ZS51bnJlZihzZSkpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTppfHxsLmFjdGl2ZSxkaXNhYmxlZDpsLmRpc2FibGVkLG9uU2VsZWN0Omwub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYobS5wb3BvdmVyfHxsLnBvcG92ZXIpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sod2UsZS5tZXJnZVByb3BzKHtrZXk6MH0sey4uLncudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC5wb3BvdmVyP3t9OmwucG9wb3Zlcnx8e319LHt1aTp7Y29udGVudDpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9fSkse2NvbnRlbnQ6ZS53aXRoQ3R4KCh7Y2xvc2U6bn0pPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZSxjbG9zZTpufSwoKT0+W2UuY3JlYXRlVk5vZGUoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSxbZS5jcmVhdGVWTm9kZSgibGkiLHsiZGF0YS1zbG90IjoiY2hpbGRMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMYWJlbCxsLnVpPy5jaGlsZExhYmVsXX0pfSxlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKGwsbS5sYWJlbEtleSkpLDMpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImxpIix7a2V5OmEsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sbC51aT8uY2hpbGRJdGVtXX0pfSxbZS5jcmVhdGVWTm9kZShmLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sZS51bnJlZih2KSh0KSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmEsLi4ubn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidWkiXSkpOiJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmKG0udG9vbHRpcHx8bC50b29sdGlwKXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmbC50b29sdGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRixlLm1lcmdlUHJvcHMoe2tleToxLHRleHQ6ZS51bnJlZih1KShsLG0ubGFiZWxLZXkpfSx7Li4uQi52YWx1ZSwuLi4iYm9vbGVhbiI9PXR5cGVvZiBsLnRvb2x0aXA/e306bC50b29sdGlwfHx7fX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidGV4dCJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjJ9LG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDoiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9ufHxuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldKSxfOjJ9LDEwNjQsWyJhY3RpdmUiLCJkaXNhYmxlZCIsIm9uU2VsZWN0Il0pKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiYobC5jaGlsZHJlbj8ubGVuZ3RofHxMW2wuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGdlKSxlLm1lcmdlUHJvcHMoe2tleTowfSxDLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6RC52YWx1ZS5jb250ZW50KHtjbGFzczpbZS51bnJlZih4KT8uY29udGVudCxsLnVpPy5jb250ZW50XX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZX0sKCk9PltlLmNyZWF0ZVZOb2RlKCJ1bCIseyJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImxpIix7a2V5OmEsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sbC51aT8uY2hpbGRJdGVtXX0pfSxbZS5jcmVhdGVWTm9kZShmLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sZS51bnJlZih2KSh0KSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmEsLi4ubn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtXcmFwcGVyIixjbGFzczpELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJwIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSx0LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rRGVzY3JpcHRpb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtEZXNjcmlwdGlvbixsLnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOmF9KX0sZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0sMikpKSwxMjgpKV0sMildKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO1gocixlLmNyZWF0ZVZOb2RlKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmKGwuY2hpbGRyZW4/Lmxlbmd0aHx8TFtsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Il0pP2UudW5yZWYoSWUpOiJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHwhbC5jaGlsZHJlbj8ubGVuZ3RofHxoLmNvbGxhcHNlZHx8by5ocmVmP2UudW5yZWYoYmUpOmUudW5yZWYoc2UpKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6bC5kaXNhYmxlZCxvblNlbGVjdDpsLm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsYyxzLGspPT57aWYoIWMpcmV0dXJuWyJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYobS5wb3BvdmVyfHxsLnBvcG92ZXIpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sod2UsZS5tZXJnZVByb3BzKHtrZXk6MH0sey4uLncudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC5wb3BvdmVyP3t9OmwucG9wb3Zlcnx8e319LHt1aTp7Y29udGVudDpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9fSkse2NvbnRlbnQ6ZS53aXRoQ3R4KCh7Y2xvc2U6bn0pPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZSxjbG9zZTpufSwoKT0+W2UuY3JlYXRlVk5vZGUoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpc3Qoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpc3QsbC51aT8uY2hpbGRMaXN0XX0pfSxbZS5jcmVhdGVWTm9kZSgibGkiLHsiZGF0YS1zbG90IjoiY2hpbGRMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMYWJlbCxsLnVpPy5jaGlsZExhYmVsXX0pfSxlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKGwsbS5sYWJlbEtleSkpLDMpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImxpIix7a2V5OmEsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6RC52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZEl0ZW0sbC51aT8uY2hpbGRJdGVtXX0pfSxbZS5jcmVhdGVWTm9kZShmLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sZS51bnJlZih2KSh0KSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOmEsLi4ubn0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidWkiXSkpOiJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmKG0udG9vbHRpcHx8bC50b29sdGlwKXx8Imhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbiYmbC50b29sdGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRixlLm1lcmdlUHJvcHMoe2tleToxLHRleHQ6ZS51bnJlZih1KShsLG0ubGFiZWxLZXkpfSx7Li4uQi52YWx1ZSwuLi4iYm9vbGVhbiI9PXR5cGVvZiBsLnRvb2x0aXA/e306bC50b29sdGlwfHx7fX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidGV4dCJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjJ9LG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDoiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9ufHxuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldOyJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZoLmNvbGxhcHNlZCYmbC5jaGlsZHJlbj8ubGVuZ3RoJiYobS5wb3BvdmVyfHxsLnBvcG92ZXIpP2MoVyh3ZSxlLm1lcmdlUHJvcHMoey4uLncudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC5wb3BvdmVyP3t9OmwucG9wb3Zlcnx8e319LHt1aTp7Y29udGVudDpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9fSkse2NvbnRlbnQ6ZS53aXRoQ3R4KCh7Y2xvc2U6bn0sbyxyLGMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWUsY2xvc2U6bn0sKCk9PltlLmNyZWF0ZVZOb2RlKCJ1bCIseyJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOkQudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaXN0LGwudWk/LmNoaWxkTGlzdF19KX0sW2UuY3JlYXRlVk5vZGUoImxpIix7ImRhdGEtc2xvdCI6ImNoaWxkTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGFiZWwsbC51aT8uY2hpbGRMYWJlbF19KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KShsLG0ubGFiZWxLZXkpKSwzKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsiYWN0aXZlIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXSwyKSkpLDEyOCkpXSwyKV0pXTtIKHQuJHNsb3RzLGwuc2xvdD9gJHtsLnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmEsdWk6RC52YWx1ZSxjbG9zZTpufSwoKT0+e28oYDx1bCBkYXRhLXNsb3Q9ImNoaWxkTGlzdCIgY2xhc3M9IiR7aihELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSkpfSIke2N9PjxsaSBkYXRhLXNsb3Q9ImNoaWxkTGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5jaGlsZExhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMYWJlbCxsLnVpPy5jaGlsZExhYmVsXX0pKX0iJHtjfT4ke1UoZS51bnJlZih1KShsLG0ubGFiZWxLZXkpKX08L2xpPlx4M2MhLS1bLS1ceDNlYCksRyhsLmNoaWxkcmVuLCh0LGEpPT57byhgPGxpIGRhdGEtc2xvdD0iY2hpbGRJdGVtIiBjbGFzcz0iJHtqKEQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KSl9IiR7Y30+YCksbyhXKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSxpLG8scik9PntpZighaSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV07aShXKGUudW5yZWYoYmUpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTphLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxvLHIsYyk9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTtvKFcocCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4seyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rLGwudWk/LmNoaWxkTGluayx0LmNsYXNzXSxhY3RpdmU6YX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChuLGksbyxyKT0+e2lmKCFpKXJldHVyblt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV07dC5pY29uP2koVyhkLHtuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKGA8c3BhbiBkYXRhLXNsb3Q9ImNoaWxkTGlua0xhYmVsIiBjbGFzcz0iJHtqKEQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KSl9IiR7cn0+JHtVKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSl9IGApLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/aShXKGQse25hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L3NwYW4+Iil9KSxfOjJ9LHIsYykpfSksXzoyfSxvLHIpKX0pLF86Mn0scixjKSksbygiPC9saT4iKX0pLG8oIlx4M2MhLS1dLS1ceDNlPC91bD4iKX0sbyxyLGMpfSksZGVmYXVsdDplLndpdGhDdHgoKHQscixjLHMpPT57aWYoIXIpcmV0dXJuW2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTtyKFcocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG4sbyxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXTtuKFcoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLG8scikpfSksXzoyfSxjLHMpKX0pLF86Mn0scyxrKSk6InZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmguY29sbGFwc2VkJiYobS50b29sdGlwfHxsLnRvb2x0aXApfHwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uJiZsLnRvb2x0aXA/YyhXKEYsZS5tZXJnZVByb3BzKHt0ZXh0OmUudW5yZWYodSkobCxtLmxhYmVsS2V5KX0sey4uLkIudmFsdWUsLi4uImJvb2xlYW4iPT10eXBlb2YgbC50b29sdGlwP3t9OmwudG9vbHRpcHx8e319KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQscixjLHMpPT57aWYoIXIpcmV0dXJuW2UuY3JlYXRlVk5vZGUocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTtyKFcocCxlLm1lcmdlUHJvcHMobyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOkQudmFsdWUubGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmxpbmssbC51aT8ubGluayxsLmNsYXNzXSxhY3RpdmU6aXx8bC5hY3RpdmUsZGlzYWJsZWQ6ISFsLmRpc2FibGVkLGxldmVsOm4+MH0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG4sbyxyKT0+e2lmKCFuKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCw4LFsiaXRlbSIsImFjdGl2ZSIsImluZGV4Il0pXTtuKFcoZS51bnJlZihfKSx7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphfSxudWxsLG8scikpfSksXzoyfSxjLHMpKX0pLF86Mn0scyxrKSk6YyhXKHAsZS5tZXJnZVByb3BzKG8seyJkYXRhLXNsb3QiOiJsaW5rIixjbGFzczpELnZhbHVlLmxpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5saW5rLGwudWk/LmxpbmssbC5jbGFzc10sYWN0aXZlOml8fGwuYWN0aXZlLGRpc2FibGVkOiEhbC5kaXNhYmxlZCxsZXZlbDoiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9ufHxuPjB9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgodCxuLG8scik9PntpZighbilyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHtpdGVtOmwsYWN0aXZlOml8fGwuYWN0aXZlLGluZGV4OmF9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV07bihXKGUudW5yZWYoXykse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YX0sbnVsbCxvLHIpKX0pLF86Mn0scyxrKSl9KSxfOjJ9KSxjLHMpLCJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24mJihsLmNoaWxkcmVuPy5sZW5ndGh8fExbbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT9yKFcoZS51bnJlZihnZSksZS5tZXJnZVByb3BzKEMudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpELnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlLnVucmVmKHgpPy5jb250ZW50LGwudWk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKG4sbyxyLGMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cyxsLnNsb3Q/YCR7bC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTpsLGFjdGl2ZTppfHxsLmFjdGl2ZSxpbmRleDphLHVpOkQudmFsdWV9LCgpPT5bZS5jcmVhdGVWTm9kZSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJsaSIse2tleTphLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KX0sW2UuY3JlYXRlVk5vZGUoZixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGUudW5yZWYodikodCkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTphLC4uLm59KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbix7ImRhdGEtc2xvdCI6ImNoaWxkTGluayIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmsoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmssbC51aT8uY2hpbGRMaW5rLHQuY2xhc3NdLGFjdGl2ZTphfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rV3JhcHBlciIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtXcmFwcGVyKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rV3JhcHBlcixsLnVpPy5jaGlsZExpbmtXcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgicCIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pfSxbZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKSsiICIsMSksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6InN0cmluZyI9PXR5cGVvZiBoLmV4dGVybmFsSWNvbj9oLmV4dGVybmFsSWNvbjplLnVucmVmKGIpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uLGwudWk/LmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uXSxhY3RpdmU6YX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksdC5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjAsImRhdGEtc2xvdCI6ImNoaWxkTGlua0Rlc2NyaXB0aW9uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0Rlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rRGVzY3JpcHRpb24sbC51aT8uY2hpbGRMaW5rRGVzY3JpcHRpb25dLGFjdGl2ZTphfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldO0godC4kc2xvdHMsbC5zbG90P2Ake2wuc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCIse2l0ZW06bCxhY3RpdmU6aXx8bC5hY3RpdmUsaW5kZXg6YSx1aTpELnZhbHVlfSwoKT0+e28oYDx1bCBkYXRhLXNsb3Q9ImNoaWxkTGlzdCIgY2xhc3M9IiR7aihELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSkpfSIke2N9Plx4M2MhLS1bLS1ceDNlYCksRyhsLmNoaWxkcmVuLCh0LGEpPT57byhgPGxpIGRhdGEtc2xvdD0iY2hpbGRJdGVtIiBjbGFzcz0iJHtqKEQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLGwudWk/LmNoaWxkSXRlbV19KSl9IiR7Y30+YCksbyhXKGYsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxlLnVucmVmKHYpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHthY3RpdmU6YSwuLi5ufSxpLG8scik9PntpZighaSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIixhY3RpdmU6YSxvblNlbGVjdDp0Lm9uU2VsZWN0fSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtXcmFwcGVyIixjbGFzczpELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJwIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSx0LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rRGVzY3JpcHRpb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtEZXNjcmlwdGlvbixsLnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOmF9KX0sZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXTtpKFcoZS51bnJlZihiZSkseyJhcy1jaGlsZCI6IiIsYWN0aXZlOmEsb25TZWxlY3Q6dC5vblNlbGVjdH0se2RlZmF1bHQ6ZS53aXRoQ3R4KChpLG8scixjKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0ljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtJY29uLGwudWk/LmNoaWxkTGlua0ljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtXcmFwcGVyIixjbGFzczpELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJwIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWwsbC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTphfSl9LFtlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKHUpKHQsbS5sYWJlbEtleSkpKyIgIiwxKSwiX2JsYW5rIj09PXQudGFyZ2V0JiYhMSE9PWguZXh0ZXJuYWxJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSx0LmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInAiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rRGVzY3JpcHRpb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtEZXNjcmlwdGlvbixsLnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOmF9KX0sZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07byhXKHAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpELnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGluayxsLnVpPy5jaGlsZExpbmssdC5jbGFzc10sYWN0aXZlOmF9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgobixpLG8scik9PntpZighaSlyZXR1cm5bdC5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0ljb24sbC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNoaWxkTGlua1dyYXBwZXIiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua1dyYXBwZXIsbC51aT8uY2hpbGRMaW5rV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInAiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWwiLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWwoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbCxsLnVpPy5jaGlsZExpbmtMYWJlbF0sYWN0aXZlOmF9KX0sW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYodSkodCxtLmxhYmVsS2V5KSkrIiAiLDEpLCJfYmxhbmsiPT09dC50YXJnZXQmJiExIT09aC5leHRlcm5hbEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOiJzdHJpbmciPT10eXBlb2YgaC5leHRlcm5hbEljb24/aC5leHRlcm5hbEljb246ZS51bnJlZihiKS51aS5pY29ucy5leHRlcm5hbCwiZGF0YS1zbG90IjoiY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOkQudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbixsLnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOmF9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLHQuZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygicCIse2tleTowLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtEZXNjcmlwdGlvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtEZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uLGwudWk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uXSxhY3RpdmU6YX0pfSxlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV07dC5pY29uP2koVyhkLHtuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiY2hpbGRMaW5rSWNvbiIsY2xhc3M6RC52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rSWNvbixsLnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6YX0pfSxudWxsLG8scikpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKGA8ZGl2IGRhdGEtc2xvdD0iY2hpbGRMaW5rV3JhcHBlciIgY2xhc3M9IiR7aihELnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlLnVucmVmKHgpPy5jaGlsZExpbmtXcmFwcGVyLGwudWk/LmNoaWxkTGlua1dyYXBwZXJdfSkpfSIke3J9PjxwIGRhdGEtc2xvdD0iY2hpbGRMaW5rTGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5jaGlsZExpbmtMYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0xhYmVsLGwudWk/LmNoaWxkTGlua0xhYmVsXSxhY3RpdmU6YX0pKX0iJHtyfT4ke1UoZS51bnJlZih1KSh0LG0ubGFiZWxLZXkpKX0gYCksIl9ibGFuayI9PT10LnRhcmdldCYmITEhPT1oLmV4dGVybmFsSWNvbj9pKFcoZCx7bmFtZToic3RyaW5nIj09dHlwZW9mIGguZXh0ZXJuYWxJY29uP2guZXh0ZXJuYWxJY29uOmUudW5yZWYoYikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpELnZhbHVlLmNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24sbC51aT8uY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTphfSl9LG51bGwsbyxyKSk6aSgiXHgzYyEtLS0tXHgzZSIpLGkoIjwvcD4iKSx0LmRlc2NyaXB0aW9uP2koYDxwIGRhdGEtc2xvdD0iY2hpbGRMaW5rRGVzY3JpcHRpb24iIGNsYXNzPSIke2ooRC52YWx1ZS5jaGlsZExpbmtEZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uLGwudWk/LmNoaWxkTGlua0Rlc2NyaXB0aW9uXSxhY3RpdmU6YX0pKX0iJHtyfT4ke1UodC5kZXNjcmlwdGlvbil9PC9wPmApOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L2Rpdj4iKX0pLF86Mn0scixjKSl9KSxfOjJ9LG8scikpfSksXzoyfSxyLGMpKSxvKCI8L2xpPiIpfSksbygiXHgzYyEtLV0tLVx4M2U8L3VsPiIpfSxvLHIsYyl9KSxfOjJ9LGMscykpOnIoIlx4M2MhLS0tLVx4M2UiKX0pLF86Mn0sYyxzKSk6cigiXHgzYyEtLS0tXHgzZSIpOihyKGA8ZGl2IGRhdGEtc2xvdD0ibGFiZWwiIGNsYXNzPSIke2ooRC52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoeCk/LmxhYmVsLGwudWk/LmxhYmVsLGwuY2xhc3NdfSkpfSIke3N9PmApLHIoVyhlLnVucmVmKF8pLHtpdGVtOmwsaW5kZXg6YX0sbnVsbCxjLHMpKSxyKCI8L2Rpdj4iKSksInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmwuY2hpbGRyZW4/Lmxlbmd0aCYmIWguY29sbGFwc2VkP3IoVyhlLnVucmVmKGNlKSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkQudmFsdWUuY29udGVudCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNvbnRlbnQsbC51aT8uY29udGVudF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbyxyKT0+e2lmKCFhKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoYWUpLGUubWVyZ2VQcm9wcyh7Li4uZS51bnJlZihJKSxkZWZhdWx0VmFsdWU6Z2V0QWNjb3JkaW9uRGVmYXVsdFZhbHVlKGwuY2hpbGRyZW4sbisxLGkpfSx7YXM6InVsIiwiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChsLmNoaWxkcmVuLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUykse2tleTpsLGl0ZW06dCxpbmRleDpsLGxldmVsOm4rMSwibGlzdC1pbmRleCI6aSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpELnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkSXRlbSx0LnVpPy5jaGlsZEl0ZW1dfSl9LG51bGwsOCxbIml0ZW0iLCJpbmRleCIsImxldmVsIiwibGlzdC1pbmRleCIsImNsYXNzIl0pKSksMTI4KSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07YShXKGUudW5yZWYoYWUpLGUubWVyZ2VQcm9wcyh7Li4uZS51bnJlZihJKSxkZWZhdWx0VmFsdWU6Z2V0QWNjb3JkaW9uRGVmYXVsdFZhbHVlKGwuY2hpbGRyZW4sbisxLGkpfSx7YXM6InVsIiwiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpELnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UudW5yZWYoeCk/LmNoaWxkTGlzdCxsLnVpPy5jaGlsZExpc3RdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsYSxvLHIpPT57aWYoIWEpcmV0dXJuWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGwuY2hpbGRyZW4sKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihTKSx7a2V5OmwsaXRlbTp0LGluZGV4OmwsbGV2ZWw6bisxLCJsaXN0LWluZGV4IjppLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLHQudWk/LmNoaWxkSXRlbV19KX0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwibGV2ZWwiLCJsaXN0LWluZGV4IiwiY2xhc3MiXSkpKSwxMjgpKV07YSgiXHgzYyEtLVstLVx4M2UiKSxHKGwuY2hpbGRyZW4sKHQsbCk9PnthKFcoZS51bnJlZihTKSx7a2V5OmwsaXRlbTp0LGluZGV4OmwsbGV2ZWw6bisxLCJsaXN0LWluZGV4IjppLCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOkQudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZS51bnJlZih4KT8uY2hpbGRJdGVtLHQudWk/LmNoaWxkSXRlbV19KX0sbnVsbCxvLHIpKX0pLGEoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9LG8scikpfSksXzoyfSxjLHMpKTpyKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9KSxyLGMpfSksXzozfSxhKSksbChXKGUudW5yZWYodmUpLGUubWVyZ2VQcm9wcyh7Li4uZS51bnJlZih5KSwuLi4iaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uP3ttb2RlbFZhbHVlOmgubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6aC5kZWZhdWx0VmFsdWV9Ont9LC4uLnQuJGF0dHJzfSx7ImRhdGEtY29sbGFwc2VkIjpoLmNvbGxhcHNlZCwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6RC52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZih4KT8ucm9vdCxtLmNsYXNzXX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLGEsbixpKT0+e2lmKCFhKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImxpc3QtbGVhZGluZyIpLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KEUudmFsdWUsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OmBsaXN0LSR7bH1gfSxbKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uP2UudW5yZWYoYWUpOmUudW5yZWYoeGUpKSxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LCJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHxoLmNvbGxhcHNlZD97fTp7Li4uZS51bnJlZihJKSxtb2RlbFZhbHVlOmgubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6aC5kZWZhdWx0VmFsdWU/P2dldEFjY29yZGlvbkRlZmF1bHRWYWx1ZSh0LDAsbCl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJsaXN0IixjbGFzczpELnZhbHVlLmxpc3Qoe2NsYXNzOmUudW5yZWYoeCk/Lmxpc3R9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHQsKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihTKSx7a2V5OmBsaXN0LSR7bH0tJHthfWAsaXRlbTp0LGluZGV4OmEsImxpc3QtaW5kZXgiOmwsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOkQudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/Lml0ZW0sdC51aT8uaXRlbV19KX0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwibGlzdC1pbmRleCIsImNsYXNzIl0pKSksMTI4KSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSksInZlcnRpY2FsIj09PWgub3JpZW50YXRpb24mJmw8RS52YWx1ZS5sZW5ndGgtMT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpELnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6ZS51bnJlZih4KT8uc2VwYXJhdG9yfSl9LG51bGwsMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKSksMTI4KSksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsaXN0LXRyYWlsaW5nIiksImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoidmlld3BvcnRXcmFwcGVyIixjbGFzczpELnZhbHVlLnZpZXdwb3J0V3JhcHBlcih7Y2xhc3M6ZS51bnJlZih4KT8udmlld3BvcnRXcmFwcGVyfSl9LFtoLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihMZSkse2tleTowLCJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczplLnVucmVmKHgpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpELnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKHgpPy5hcnJvd30pfSxudWxsLDIpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQ2UpLHsiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOkQudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoeCk/LnZpZXdwb3J0fSl9LG51bGwsOCxbImNsYXNzIl0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtIKHQuJHNsb3RzLCJsaXN0LWxlYWRpbmciLHt9LG51bGwsYSxuLGkpLGEoIlx4M2MhLS1bLS1ceDNlIiksRyhFLnZhbHVlLCh0LGwpPT57YSgiXHgzYyEtLVstLVx4M2UiKSxYKGEsZS5jcmVhdGVWTm9kZShlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uP2UudW5yZWYoYWUpOmUudW5yZWYoeGUpKSxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LCJ2ZXJ0aWNhbCIhPT1oLm9yaWVudGF0aW9ufHxoLmNvbGxhcHNlZD97fTp7Li4uZS51bnJlZihJKSxtb2RlbFZhbHVlOmgubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6aC5kZWZhdWx0VmFsdWU/P2dldEFjY29yZGlvbkRlZmF1bHRWYWx1ZSh0LDAsbCl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJsaXN0IixjbGFzczpELnZhbHVlLmxpc3Qoe2NsYXNzOmUudW5yZWYoeCk/Lmxpc3R9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxuLGksbyk9PntpZighbilyZXR1cm5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodCwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFMpLHtrZXk6YGxpc3QtJHtsfS0ke2F9YCxpdGVtOnQsaW5kZXg6YSwibGlzdC1pbmRleCI6bCwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6RC52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZih4KT8uaXRlbSx0LnVpPy5pdGVtXX0pfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJsaXN0LWluZGV4IiwiY2xhc3MiXSkpKSwxMjgpKV07bigiXHgzYyEtLVstLVx4M2UiKSxHKHQsKHQsYSk9PntuKFcoZS51bnJlZihTKSx7a2V5OmBsaXN0LSR7bH0tJHthfWAsaXRlbTp0LGluZGV4OmEsImxpc3QtaW5kZXgiOmwsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOkQudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoeCk/Lml0ZW0sdC51aT8uaXRlbV19KX0sbnVsbCxpLG8pKX0pLG4oIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9KSxuLGkpLCJ2ZXJ0aWNhbCI9PT1oLm9yaWVudGF0aW9uJiZsPEUudmFsdWUubGVuZ3RoLTE/YShgPGRpdiBkYXRhLXNsb3Q9InNlcGFyYXRvciIgY2xhc3M9IiR7aihELnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6ZS51bnJlZih4KT8uc2VwYXJhdG9yfSkpfSIke2l9PjwvZGl2PmApOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCJceDNjIS0tXS0tXHgzZSIpfSksYSgiXHgzYyEtLV0tLVx4M2UiKSxIKHQuJHNsb3RzLCJsaXN0LXRyYWlsaW5nIix7fSxudWxsLGEsbixpKSwiaG9yaXpvbnRhbCI9PT1oLm9yaWVudGF0aW9uPyhhKGA8ZGl2IGRhdGEtc2xvdD0idmlld3BvcnRXcmFwcGVyIiBjbGFzcz0iJHtqKEQudmFsdWUudmlld3BvcnRXcmFwcGVyKHtjbGFzczplLnVucmVmKHgpPy52aWV3cG9ydFdyYXBwZXJ9KSl9IiR7aX0+YCksaC5hcnJvdz9hKFcoZS51bnJlZihMZSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczplLnVucmVmKHgpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGwsYSxuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkQudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoeCk/LmFycm93fSl9LG51bGwsMildO2woYDxkaXYgZGF0YS1zbG90PSJhcnJvdyIgY2xhc3M9IiR7aihELnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKHgpPy5hcnJvd30pKX0iJHtufT48L2Rpdj5gKX0pLF86MX0sbixpKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoVyhlLnVucmVmKENlKSx7ImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpELnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKHgpPy52aWV3cG9ydH0pfSxudWxsLG4saSkpLGEoIjwvZGl2PiIpKTphKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LGEpKSxsKCJceDNjIS0tXS0tXHgzZSIpfX19KSxTZT1OZS5zZXR1cDtOZS5zZXR1cD0odCxsKT0+e2NvbnN0IGE9ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL05hdmlnYXRpb25NZW51LnZ1ZSIpLFNlP1NlKHQsbCk6dm9pZCAwfTtleHBvcnR7TmUgYXMgXyx3ZSBhcyBhfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzLm1hcAo=", "chunks/build/PageCard-Bw-W4qxs.mjs": "aW1wb3J0e3YgYXMgZSxhdSBhcyB0LGQgYXMgbyxlIGFzIHIsYXYgYXMgaSx0IGFzIGwsYXcgYXMgYSxiIGFzIHMsYWggYXMgbixQIGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGMsaiBhcyBnLGcgYXMgcCxxIGFzIHV9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBoPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCByb3VuZGVkLWxnIixzcG90bGlnaHQ6ImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1baW5oZXJpdF0gcG9pbnRlci1ldmVudHMtbm9uZSBiZy1kZWZhdWx0LzkwIixjb250YWluZXI6InJlbGF0aXZlIGZsZXggZmxleC1jb2wgZmxleC0xIGxnOmdyaWQgZ2FwLXgtOCBnYXAteS00IHAtNCBzbTpwLTYiLHdyYXBwZXI6ImZsZXggZmxleC1jb2wgZmxleC0xIGl0ZW1zLXN0YXJ0IixoZWFkZXI6Im1iLTQiLGJvZHk6ImZsZXgtMSIsZm9vdGVyOiJwdC00IG10LWF1dG8iLGxlYWRpbmc6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUgc2hyaW5rLTAgdGV4dC1wcmltYXJ5Iix0aXRsZToidGV4dC1iYXNlIHRleHQtcHJldHR5IGZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsZGVzY3JpcHRpb246InRleHQtWzE1cHhdIHRleHQtcHJldHR5In0sdmFyaWFudHM6e29yaWVudGF0aW9uOntob3Jpem9udGFsOntjb250YWluZXI6ImxnOmdyaWQtY29scy0yIGxnOml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntjb250YWluZXI6IiJ9fSxyZXZlcnNlOnt0cnVlOnt3cmFwcGVyOiJvcmRlci1sYXN0In19LHZhcmlhbnQ6e3NvbGlkOntyb290OiJiZy1pbnZlcnRlZCB0ZXh0LWludmVydGVkIix0aXRsZToidGV4dC1pbnZlcnRlZCIsZGVzY3JpcHRpb246InRleHQtZGltbWVkIn0sb3V0bGluZTp7cm9vdDoiYmctZGVmYXVsdCByaW5nIHJpbmctZGVmYXVsdCIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQifSxzb2Z0Ontyb290OiJiZy1lbGV2YXRlZC81MCIsZGVzY3JpcHRpb246InRleHQtdG9uZWQifSxzdWJ0bGU6e3Jvb3Q6ImJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1kZWZhdWx0IixkZXNjcmlwdGlvbjoidGV4dC10b25lZCJ9LGdob3N0OntkZXNjcmlwdGlvbjoidGV4dC1tdXRlZCJ9LG5ha2VkOntjb250YWluZXI6InAtMCBzbTpwLTAiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn19LHRvOnt0cnVlOntyb290OlsiaGFzLWZvY3VzLXZpc2libGU6cmluZy0yIGhhcy1mb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSIsInRyYW5zaXRpb24iXX19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fSxoaWdobGlnaHQ6e3RydWU6e3Jvb3Q6InJpbmctMiJ9fSxoaWdobGlnaHRDb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sc3BvdGxpZ2h0Ont0cnVlOntyb290OiJbLS1zcG90bGlnaHQtc2l6ZTo0MDBweF0gYmVmb3JlOmFic29sdXRlIGJlZm9yZTotaW5zZXQtcHggYmVmb3JlOnBvaW50ZXItZXZlbnRzLW5vbmUgYmVmb3JlOnJvdW5kZWQtW2luaGVyaXRdIGJlZm9yZTpiZy1bcmFkaWFsLWdyYWRpZW50KHZhcigtLXNwb3RsaWdodC1zaXplKV92YXIoLS1zcG90bGlnaHQtc2l6ZSlfYXRfY2FsYyh2YXIoLS1zcG90bGlnaHQteCwwcHgpKV9jYWxjKHZhcigtLXNwb3RsaWdodC15LDBweCkpLHZhcigtLXNwb3RsaWdodC1jb2xvciksdHJhbnNwYXJlbnRfNzAlKV0ifX0sc3BvdGxpZ2h0Q29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7dmFyaWFudDoic29saWQiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1pbnZlcnRlZC85MCJ9fSx7dmFyaWFudDoib3V0bGluZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkLzUwIn19LHt2YXJpYW50OiJzb2Z0Iix0bzohMCxjbGFzczp7cm9vdDoiaG92ZXI6YmctZWxldmF0ZWQifX0se3ZhcmlhbnQ6InN1YnRsZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkIn19LHt2YXJpYW50OiJzdWJ0bGUiLHRvOiEwLGhpZ2hsaWdodDohMSxjbGFzczp7cm9vdDoiaG92ZXI6cmluZy1hY2NlbnRlZCJ9fSx7dmFyaWFudDoiZ2hvc3QiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1lbGV2YXRlZC81MCJ9fSx7aGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1wcmltYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctc2Vjb25kYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOntyb290OiJyaW5nLXN1Y2Nlc3MifX0se2hpZ2hsaWdodENvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctaW5mbyJ9fSx7aGlnaGxpZ2h0Q29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy13YXJuaW5nIn19LHtoaWdobGlnaHRDb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1lcnJvciJ9fSx7aGlnaGxpZ2h0Q29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1pbnZlcnRlZCJ9fSx7c3BvdGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLXByaW1hcnkpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6InNlY29uZGFyeSIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KV0ifX0se3Nwb3RsaWdodENvbG9yOiJzdWNjZXNzIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKV0ifX0se3Nwb3RsaWdodENvbG9yOiJpbmZvIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1pbmZvKV0ifX0se3Nwb3RsaWdodENvbG9yOiJ3YXJuaW5nIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKV0ifX0se3Nwb3RsaWdodENvbG9yOiJlcnJvciIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktZXJyb3IpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6Im5ldXRyYWwiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKV0ifX1dLGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDoib3V0bGluZSIsaGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodENvbG9yOiJwcmltYXJ5In19LHY9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVUGFnZUNhcmQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0scmV2ZXJzZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Q29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3BvdGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNwb3RsaWdodENvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cCh2KXtjb25zdCBmPXYsbT1lLnVzZVNsb3RzKCkseT1lLnJlZigpLHg9dCgpLGI9bygpLEM9cigicGFnZUNhcmQiLGYpLHtlbGVtZW50WDokLGVsZW1lbnRZOmt9PWkoeSx7ZXZlbnRGaWx0ZXI6eC5ldmVudEZpbHRlcn0pLEI9ZS5jb21wdXRlZCgoKT0+Zi5zcG90bGlnaHQmJigwIT09JC52YWx1ZXx8MCE9PWsudmFsdWUpKTtlLndhdGNoKCgpPT5mLnNwb3RsaWdodCxlPT57ZT94LnJlc3VtZSgpOngucGF1c2UoKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHc9ZS5jb21wdXRlZCgoKT0+bCh7ZXh0ZW5kOmwoaCksLi4uYi51aT8ucGFnZUNhcmR8fHt9fSkoe29yaWVudGF0aW9uOmYub3JpZW50YXRpb24scmV2ZXJzZTpmLnJldmVyc2UsdmFyaWFudDpmLnZhcmlhbnQsdG86ISFmLnRvfHwhIWYub25DbGljayx0aXRsZTohIWYudGl0bGV8fCEhbS50aXRsZSxoaWdobGlnaHQ6Zi5oaWdobGlnaHQsaGlnaGxpZ2h0Q29sb3I6Zi5oaWdobGlnaHRDb2xvcixzcG90bGlnaHQ6Qi52YWx1ZSxzcG90bGlnaHRDb2xvcjpmLnNwb3RsaWdodENvbG9yfSkpLHE9ZS5jb21wdXRlZCgoKT0+KG0udGl0bGUmJmEobS50aXRsZSgpKXx8Zi50aXRsZXx8IkNhcmQgbGluayIpLnRyaW0oKSk7cmV0dXJuKHQsbyxyLGkpPT57byhjKGUudW5yZWYoZCksZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJjYXJkUmVmIixyZWY6eSxhczp2LmFzLCJkYXRhLW9yaWVudGF0aW9uIjp2Lm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczp3LnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKEMpPy5yb290LGYuY2xhc3NdfSksc3R5bGU6Qi52YWx1ZSYmeyItLXNwb3RsaWdodC14IjpgJHtlLnVucmVmKCQpfXB4YCwiLS1zcG90bGlnaHQteSI6YCR7ZS51bnJlZihrKX1weGB9LG9uQ2xpY2s6di5vbkNsaWNrfSxpKSx7ZGVmYXVsdDplLndpdGhDdHgoKG8scixpLGwpPT57aWYoIXIpcmV0dXJuW2Yuc3BvdGxpZ2h0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJzcG90bGlnaHQiLGNsYXNzOncudmFsdWUuc3BvdGxpZ2h0KHtjbGFzczplLnVucmVmKEMpPy5zcG90bGlnaHR9KX0sbnVsbCwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOncudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKEMpPy5jb250YWluZXJ9KX0sW20uaGVhZGVyfHx2Lmljb258fG0ubGVhZGluZ3x8bS5ib2R5fHx2LnRpdGxlfHxtLnRpdGxlfHx2LmRlc2NyaXB0aW9ufHxtLmRlc2NyaXB0aW9ufHxtLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6dy52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSl9LFttLmhlYWRlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp3LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihDKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImhlYWRlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHYuaWNvbnx8bS5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJsZWFkaW5nIixjbGFzczp3LnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse3VpOncudmFsdWV9LCgpPT5bdi5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTp2Lmljb24sImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp3LnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG0uYm9keXx8di50aXRsZXx8bS50aXRsZXx8di5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6dy52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKEMpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImJvZHkiLHt9LCgpPT5bdi50aXRsZXx8bS50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOncudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYoQyk/LnRpdGxlfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHYudGl0bGUpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdi5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOncudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoQyk/LmRlc2NyaXB0aW9ufSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHYuZGVzY3JpcHRpb24pLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxtLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MywiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczp3LnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImZvb3RlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSwyKSx2LnRvPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sobixlLm1lcmdlUHJvcHMoe2tleToxLCJhcmlhLWxhYmVsIjpxLnZhbHVlfSx7dG86di50byx0YXJnZXQ6di50YXJnZXQsLi4udC4kYXR0cnN9LHtjbGFzczoiZm9jdXM6b3V0bGluZS1ub25lIHBlZXIiLHJhdzoiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoiYWJzb2x1dGUgaW5zZXQtMCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KV0pLF86MX0sMTYsWyJhcmlhLWxhYmVsIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2Yuc3BvdGxpZ2h0P3IoYDxkaXYgZGF0YS1zbG90PSJzcG90bGlnaHQiIGNsYXNzPSIke2cody52YWx1ZS5zcG90bGlnaHQoe2NsYXNzOmUudW5yZWYoQyk/LnNwb3RsaWdodH0pKX0iJHtsfT48L2Rpdj5gKTpyKCJceDNjIS0tLS1ceDNlIikscihgPGRpdiBkYXRhLXNsb3Q9ImNvbnRhaW5lciIgY2xhc3M9IiR7Zyh3LnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZihDKT8uY29udGFpbmVyfSkpfSIke2x9PmApLG0uaGVhZGVyfHx2Lmljb258fG0ubGVhZGluZ3x8bS5ib2R5fHx2LnRpdGxlfHxtLnRpdGxlfHx2LmRlc2NyaXB0aW9ufHxtLmRlc2NyaXB0aW9ufHxtLmZvb3Rlcj8ocihgPGRpdiBkYXRhLXNsb3Q9IndyYXBwZXIiIGNsYXNzPSIke2cody52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKEMpPy53cmFwcGVyfSkpfSIke2x9PmApLG0uaGVhZGVyPyhyKGA8ZGl2IGRhdGEtc2xvdD0iaGVhZGVyIiBjbGFzcz0iJHtnKHcudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKEMpPy5oZWFkZXJ9KSl9IiR7bH0+YCkscCh0LiRzbG90cywiaGVhZGVyIix7fSxudWxsLHIsaSxsKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHYuaWNvbnx8bS5sZWFkaW5nPyhyKGA8ZGl2IGRhdGEtc2xvdD0ibGVhZGluZyIgY2xhc3M9IiR7Zyh3LnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmd9KSl9IiR7bH0+YCkscCh0LiRzbG90cywibGVhZGluZyIse3VpOncudmFsdWV9LCgpPT57di5pY29uP3IoYyhzLHtuYW1lOnYuaWNvbiwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOncudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmdJY29ufSl9LG51bGwsaSxsKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLGksbCkscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxtLmJvZHl8fHYudGl0bGV8fG0udGl0bGV8fHYuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KHIoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtnKHcudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZihDKT8uYm9keX0pKX0iJHtsfT5gKSxwKHQuJHNsb3RzLCJib2R5Iix7fSwoKT0+e3YudGl0bGV8fG0udGl0bGU/KHIoYDxkaXYgZGF0YS1zbG90PSJ0aXRsZSIgY2xhc3M9IiR7Zyh3LnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKEMpPy50aXRsZX0pKX0iJHtsfT5gKSxwKHQuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntyKGAke3Uodi50aXRsZSl9YCl9LHIsaSxsKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHYuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KHIoYDxkaXYgZGF0YS1zbG90PSJkZXNjcmlwdGlvbiIgY2xhc3M9IiR7Zyh3LnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKEMpPy5kZXNjcmlwdGlvbn0pKX0iJHtsfT5gKSxwKHQuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntyKGAke3Uodi5kZXNjcmlwdGlvbil9YCl9LHIsaSxsKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLGksbCkscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxtLmZvb3Rlcj8ocihgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7Zyh3LnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihDKT8uZm9vdGVyfSkpfSIke2x9PmApLHAodC4kc2xvdHMsImZvb3RlciIse30sbnVsbCxyLGksbCkscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHAodC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwscixpLGwpLHIoIjwvZGl2PiIpLHYudG8/cihjKG4sZS5tZXJnZVByb3BzKHsiYXJpYS1sYWJlbCI6cS52YWx1ZX0se3RvOnYudG8sdGFyZ2V0OnYudGFyZ2V0LC4uLnQuJGF0dHJzfSx7Y2xhc3M6ImZvY3VzOm91dGxpbmUtbm9uZSBwZWVyIixyYXc6IiJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbyxyLGkpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoiYWJzb2x1dGUgaW5zZXQtMCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KV07byhgPHNwYW4gY2xhc3M9ImFic29sdXRlIGluc2V0LTAiIGFyaWEtaGlkZGVuPSJ0cnVlIiR7aX0+PC9zcGFuPmApfSksXzoxfSxpLGwpKTpyKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LHIpKX19fSksZj12LnNldHVwO3Yuc2V0dXA9KHQsbyk9Pntjb25zdCByPWUudXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9QYWdlQ2FyZC52dWUiKSxmP2YodCxvKTp2b2lkIDB9O2V4cG9ydHt2IGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1QYWdlQ2FyZC1Cdy1XNHF4cy5tanMubWFwCg==", "chunks/build/Pagination-CzrEiPJd.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBhLGUgYXMgbCxFIGFzIG8sRiBhcyByLHQgYXMgcyxfIGFzIGksTSBhcyBuLFAgYXMgdSxTIGFzIGMsbSBhcyBkfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7ZiBhcyBwLGcgYXMgdix0IGFzIGZ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjt2YXIgZz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQYWdpbmF0aW9uRWxsaXBzaXMiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuIG4oKSwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyhhLHsiZGF0YS10eXBlIjoiZWxsaXBzaXMifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2xbMF18fChsWzBdPWUuY3JlYXRlVGV4dFZOb2RlKCLigKYiKSldKV0pLF86M30sMTYpKX19KTtjb25zdFttLGhdPWQoIlBhZ2luYXRpb25Sb290Iik7dmFyIEM9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvblJvb3QiLHByb3BzOntwYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFBhZ2U6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MX0saXRlbXNQZXJQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMH0sdG90YWw6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sc2libGluZ0NvdW50Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNob3dFZGdlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuYXYifX0sZW1pdHM6WyJ1cGRhdGU6cGFnZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxvPWEse3NpYmxpbmdDb3VudDpyLGRpc2FibGVkOnMsc2hvd0VkZ2VzOml9PWUudG9SZWZzKGwpO24oKTtjb25zdCBkPWMobCwicGFnZSIsbyx7ZGVmYXVsdFZhbHVlOmwuZGVmYXVsdFBhZ2UscGFzc2l2ZTp2b2lkIDA9PT1sLnBhZ2V9KSxwPWUuY29tcHV0ZWQoKCk9Pk1hdGgubWF4KDEsTWF0aC5jZWlsKGwudG90YWwvKGwuaXRlbXNQZXJQYWdlfHwxKSkpKTtyZXR1cm4gaCh7cGFnZTpkLG9uUGFnZUNoYW5nZShlKXtkLnZhbHVlPWV9LHBhZ2VDb3VudDpwLHNpYmxpbmdDb3VudDpyLGRpc2FibGVkOnMsc2hvd0VkZ2VzOml9KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLHthczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtwYWdlOmUudW5yZWYoZCkscGFnZUNvdW50OnAudmFsdWV9KV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiXSkpfX0pLGI9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvbkZpcnN0Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1tKCk7bigpO2NvbnN0IG89ZS5jb21wdXRlZCgoKT0+MT09PWwucGFnZS52YWx1ZXx8bC5kaXNhYmxlZC52YWx1ZSk7cmV0dXJuKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih1KSxlLm1lcmdlUHJvcHMoYSx7ImFyaWEtbGFiZWwiOiJGaXJzdCBQYWdlIix0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDAsZGlzYWJsZWQ6by52YWx1ZSxvbkNsaWNrOnJbMF18fChyWzBdPXQ9PiFvLnZhbHVlJiZlLnVucmVmKGwpLm9uUGFnZUNoYW5nZSgxKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bclsxXXx8KHJbMV09ZS5jcmVhdGVUZXh0Vk5vZGUoIkZpcnN0IHBhZ2UiKSldKV0pLF86M30sMTYsWyJ0eXBlIiwiZGlzYWJsZWQiXSkpfX0pLHg9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvbkxhc3QiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHQpe2NvbnN0IGE9dCxsPW0oKTtuKCk7Y29uc3Qgbz1lLmNvbXB1dGVkKCgpPT5sLnBhZ2UudmFsdWU9PT1sLnBhZ2VDb3VudC52YWx1ZXx8bC5kaXNhYmxlZC52YWx1ZSk7cmV0dXJuKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih1KSxlLm1lcmdlUHJvcHMoYSx7ImFyaWEtbGFiZWwiOiJMYXN0IFBhZ2UiLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCxkaXNhYmxlZDpvLnZhbHVlLG9uQ2xpY2s6clswXXx8KHJbMF09dD0+IW8udmFsdWUmJmUudW5yZWYobCkub25QYWdlQ2hhbmdlKGUudW5yZWYobCkucGFnZUNvdW50LnZhbHVlKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bclsxXXx8KHJbMV09ZS5jcmVhdGVUZXh0Vk5vZGUoIkxhc3QgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSk7ZnVuY3Rpb24gcmFuZ2UoZSx0KXtjb25zdCBhPXQtZSsxO3JldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6YX0sKHQsYSk9PmErZSl9Y29uc3QgeT0iZWxsaXBzaXMiO3ZhciB6PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBhZ2luYXRpb25MaXN0Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10O24oKTtjb25zdCBsPW0oKSxvPWUuY29tcHV0ZWQoKCk9PmZ1bmN0aW9uKGUsdCxhLGwpe2NvbnN0IG89dCxyPU1hdGgubWF4KGUtYSwxKSxzPU1hdGgubWluKGUrYSxvKTtpZihsKXtjb25zdCBlPU1hdGgubWluKDIqYSs1LHQpLTIsbD1yPjMmJk1hdGguYWJzKG8tZS0xKzEpPjImJk1hdGguYWJzKHItMSk+MixpPXM8by0yJiZNYXRoLmFicyhvLWUpPjImJk1hdGguYWJzKG8tcyk+MjtpZighbCYmaSlyZXR1cm5bLi4ucmFuZ2UoMSxlKSx5LG9dO2lmKGwmJiFpKXtjb25zdCB0PXJhbmdlKG8tZSsxLG8pO3JldHVyblsxLHksLi4udF19aWYobCYmaSl7Y29uc3QgZT1yYW5nZShyLHMpO3JldHVyblsxLHksLi4uZSx5LG9dfXJldHVybiByYW5nZSgxLG8pfXtjb25zdCBsPTIqYSsxO3JldHVybiB0PGw/cmFuZ2UoMSxvKTplPD1hKzE/cmFuZ2UoMSxsKTp0LWU8PWE/cmFuZ2UodC1sKzEsbyk6cmFuZ2UocixzKX19KGwucGFnZS52YWx1ZSxsLnBhZ2VDb3VudC52YWx1ZSxsLnNpYmxpbmdDb3VudC52YWx1ZSxsLnNob3dFZGdlcy52YWx1ZSkubWFwKGU9PiJudW1iZXIiPT10eXBlb2YgZT97dHlwZToicGFnZSIsdmFsdWU6ZX06e3R5cGU6ImVsbGlwc2lzIn0pKTtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse2l0ZW1zOm8udmFsdWV9KV0pLF86M30sMTYpKX19KSxrPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBhZ2luYXRpb25MaXN0SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQ7bigpO2NvbnN0IGw9bSgpLG89ZS5jb21wdXRlZCgoKT0+bC5wYWdlLnZhbHVlPT09YS52YWx1ZSkscj1lLmNvbXB1dGVkKCgpPT5sLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4odCxzKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyhhLHsiZGF0YS10eXBlIjoicGFnZSIsImFyaWEtbGFiZWwiOmBQYWdlICR7dC52YWx1ZX1gLCJhcmlhLWN1cnJlbnQiOm8udmFsdWU/InBhZ2UiOnZvaWQgMCwiZGF0YS1zZWxlY3RlZCI6by52YWx1ZT8idHJ1ZSI6dm9pZCAwLGRpc2FibGVkOnIudmFsdWUsdHlwZToiYnV0dG9uIj09PXQuYXM/ImJ1dHRvbiI6dm9pZCAwLG9uQ2xpY2s6c1swXXx8KHNbMF09YT0+IXIudmFsdWUmJmUudW5yZWYobCkub25QYWdlQ2hhbmdlKHQudmFsdWUpKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnZhbHVlKSwxKV0pXSksXzozfSwxNixbImFyaWEtbGFiZWwiLCJhcmlhLWN1cnJlbnQiLCJkYXRhLXNlbGVjdGVkIiwiZGlzYWJsZWQiLCJ0eXBlIl0pKX19KSxCPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlBhZ2luYXRpb25OZXh0Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQ7bigpO2NvbnN0IGw9bSgpLG89ZS5jb21wdXRlZCgoKT0+bC5wYWdlLnZhbHVlPT09bC5wYWdlQ291bnQudmFsdWV8fGwuZGlzYWJsZWQudmFsdWUpO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodSksZS5tZXJnZVByb3BzKGEseyJhcmlhLWxhYmVsIjoiTmV4dCBQYWdlIix0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDAsZGlzYWJsZWQ6by52YWx1ZSxvbkNsaWNrOnJbMF18fChyWzBdPXQ9PiFvLnZhbHVlJiZlLnVucmVmKGwpLm9uUGFnZUNoYW5nZShlLnVucmVmKGwpLnBhZ2UudmFsdWUrMSkpfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3JbMV18fChyWzFdPWUuY3JlYXRlVGV4dFZOb2RlKCJOZXh0IHBhZ2UiKSldKV0pLF86M30sMTYsWyJ0eXBlIiwiZGlzYWJsZWQiXSkpfX0pLF89ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUGFnaW5hdGlvblByZXYiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHQpe2NvbnN0IGE9dDtuKCk7Y29uc3QgbD1tKCksbz1lLmNvbXB1dGVkKCgpPT4xPT09bC5wYWdlLnZhbHVlfHxsLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4odCxyKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyhhLHsiYXJpYS1sYWJlbCI6IlByZXZpb3VzIFBhZ2UiLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCxkaXNhYmxlZDpvLnZhbHVlLG9uQ2xpY2s6clswXXx8KHJbMF09dD0+IW8udmFsdWUmJmUudW5yZWYobCkub25QYWdlQ2hhbmdlKGUudW5yZWYobCkucGFnZS52YWx1ZS0xKSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bclsxXXx8KHJbMV09ZS5jcmVhdGVUZXh0Vk5vZGUoIlByZXYgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSk7Y29uc3QgUD17c2xvdHM6e3Jvb3Q6IiIsbGlzdDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEiLGVsbGlwc2lzOiJwb2ludGVyLWV2ZW50cy1ub25lIixsYWJlbDoibWluLXctNSB0ZXh0LWNlbnRlciIsZmlyc3Q6IiIscHJldjoiIixpdGVtOiIiLG5leHQ6IiIsbGFzdDoiIn19LHE9e19fbmFtZToiVVBhZ2luYXRpb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxmaXJzdEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scHJldkljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbmV4dEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFzdEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZWxsaXBzaXNJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJvdXRsaW5lIn0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJwcmltYXJ5In0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNvbGlkIn0sc2hvd0NvbnRyb2xzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0bzp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWZhdWx0UGFnZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGl0ZW1zUGVyUGFnZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0scGFnZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNob3dFZGdlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHNpYmxpbmdDb3VudDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoyfSx0b3RhbDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfX0sZW1pdHM6WyJ1cGRhdGU6cGFnZSJdLHNldHVwKG4se2VtaXQ6dX0pe2NvbnN0IGM9bixkPXUsbT1lLnVzZVNsb3RzKCkse2RpcjpofT10KCkseT1hKCkscT1sKCJwYWdpbmF0aW9uIixjKSx3PW8ocihjLCJhcyIsImRlZmF1bHRQYWdlIiwiZGlzYWJsZWQiLCJpdGVtc1BlclBhZ2UiLCJwYWdlIiwic2hvd0VkZ2VzIiwic2libGluZ0NvdW50IiwidG90YWwiKSxkKSxOPWUuY29tcHV0ZWQoKCk9PmMuZmlyc3RJY29ufHwoInJ0bCI9PT1oLnZhbHVlP3kudWkuaWNvbnMuY2hldnJvbkRvdWJsZVJpZ2h0OnkudWkuaWNvbnMuY2hldnJvbkRvdWJsZUxlZnQpKSxWPWUuY29tcHV0ZWQoKCk9PmMucHJldkljb258fCgicnRsIj09PWgudmFsdWU/eS51aS5pY29ucy5jaGV2cm9uUmlnaHQ6eS51aS5pY29ucy5jaGV2cm9uTGVmdCkpLFM9ZS5jb21wdXRlZCgoKT0+Yy5uZXh0SWNvbnx8KCJydGwiPT09aC52YWx1ZT95LnVpLmljb25zLmNoZXZyb25MZWZ0OnkudWkuaWNvbnMuY2hldnJvblJpZ2h0KSksJD1lLmNvbXB1dGVkKCgpPT5jLmxhc3RJY29ufHwoInJ0bCI9PT1oLnZhbHVlP3kudWkuaWNvbnMuY2hldnJvbkRvdWJsZUxlZnQ6eS51aS5pY29ucy5jaGV2cm9uRG91YmxlUmlnaHQpKSxJPWUuY29tcHV0ZWQoKCk9PnMoe2V4dGVuZDpzKFApLC4uLnkudWk/LnBhZ2luYXRpb258fHt9fSkoKSk7cmV0dXJuKHQsYSxsLG8pPT57YShwKGUudW5yZWYoQyksZS5tZXJnZVByb3BzKGUudW5yZWYodykseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczpJLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHEpPy5yb290LGMuY2xhc3NdfSl9LG8pLHtkZWZhdWx0OmUud2l0aEN0eCgoe3BhZ2U6YSxwYWdlQ291bnQ6bH0sbyxyLHMpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih6KSx7ImRhdGEtc2xvdCI6Imxpc3QiLGNsYXNzOkkudmFsdWUubGlzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGlzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtczpvfSk9PltuLnNob3dDb250cm9sc3x8bS5maXJzdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYikse2tleTowLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6ImZpcnN0IixjbGFzczpJLnZhbHVlLmZpcnN0KHtjbGFzczplLnVucmVmKHEpPy5maXJzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImZpcnN0Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOk4udmFsdWUsdG86bi50bz8uKDEpfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uc2hvd0NvbnRyb2xzfHxtLnByZXY/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF8pLHtrZXk6MSwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJwcmV2IixjbGFzczpJLnZhbHVlLnByZXYoe2NsYXNzOmUudW5yZWYocSk/LnByZXZ9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJwcmV2Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOlYudmFsdWUsdG86YT4xP24udG8/LihhLTEpOnZvaWQgMH0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChvLChvLHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTpyfSxbInBhZ2UiPT09by50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrKSx7a2V5OjAsImFzLWNoaWxkIjoiIix2YWx1ZTpvLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpJLnZhbHVlLml0ZW0oe2NsYXNzOmUudW5yZWYocSk/Lml0ZW19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIixlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LHtpdGVtOm8saW5kZXg6cixwYWdlOmEscGFnZUNvdW50Omx9KSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6YT09PW8udmFsdWU/bi5hY3RpdmVDb2xvcjpuLmNvbG9yLHZhcmlhbnQ6YT09PW8udmFsdWU/bi5hY3RpdmVWYXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxsYWJlbDpTdHJpbmcoby52YWx1ZSksdWk6e2xhYmVsOkkudmFsdWUubGFiZWwoKX0sdG86bi50bz8uKG8udmFsdWUpLHNxdWFyZToiIn0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImxhYmVsIiwidWkiLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsidmFsdWUiLCJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGcpLHtrZXk6MSwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJlbGxpcHNpcyIsY2xhc3M6SS52YWx1ZS5lbGxpcHNpcyh7Y2xhc3M6ZS51bnJlZihxKT8uZWxsaXBzaXN9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbGxpcHNpcyIse3VpOkkudmFsdWV9LCgpPT5bZS5jcmVhdGVWTm9kZShpLHthczoiZGl2Iixjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246bi5lbGxpcHNpc0ljb258fGUudW5yZWYoeSkudWkuaWNvbnMuZWxsaXBzaXN9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIl0pXSldKSxfOjN9LDgsWyJjbGFzcyJdKSldLDY0KSkpLDEyOCkpLG4uc2hvd0NvbnRyb2xzfHxtLm5leHQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEIpLHtrZXk6MiwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJuZXh0IixjbGFzczpJLnZhbHVlLm5leHQoe2NsYXNzOmUudW5yZWYocSk/Lm5leHR9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJuZXh0Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOlMudmFsdWUsdG86YTxsP24udG8/LihhKzEpOnZvaWQgMH0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLnNob3dDb250cm9sc3x8bS5sYXN0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih4KSx7a2V5OjMsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoibGFzdCIsY2xhc3M6SS52YWx1ZS5sYXN0KHtjbGFzczplLnVucmVmKHEpPy5sYXN0fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywibGFzdCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjokLnZhbHVlLHRvOm4udG8/LihsKX0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXTtvKHAoZS51bnJlZih6KSx7ImRhdGEtc2xvdCI6Imxpc3QiLGNsYXNzOkkudmFsdWUubGlzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGlzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtczpvfSxyLHMsdSk9PntpZighcilyZXR1cm5bbi5zaG93Q29udHJvbHN8fG0uZmlyc3Q/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGIpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJmaXJzdCIsY2xhc3M6SS52YWx1ZS5maXJzdCh7Y2xhc3M6ZS51bnJlZihxKT8uZmlyc3R9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJmaXJzdCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpOLnZhbHVlLHRvOm4udG8/LigxKX0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLnNob3dDb250cm9sc3x8bS5wcmV2PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfKSx7a2V5OjEsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoicHJldiIsY2xhc3M6SS52YWx1ZS5wcmV2KHtjbGFzczplLnVucmVmKHEpPy5wcmV2fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywicHJldiIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpWLnZhbHVlLHRvOmE+MT9uLnRvPy4oYS0xKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QobywobyxyKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6cn0sWyJwYWdlIj09PW8udHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoaykse2tleTowLCJhcy1jaGlsZCI6IiIsdmFsdWU6by52YWx1ZSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6SS52YWx1ZS5pdGVtKHtjbGFzczplLnVucmVmKHEpPy5pdGVtfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSx7aXRlbTpvLGluZGV4OnIscGFnZTphLHBhZ2VDb3VudDpsfSksKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOmE9PT1vLnZhbHVlP24uYWN0aXZlQ29sb3I6bi5jb2xvcix2YXJpYW50OmE9PT1vLnZhbHVlP24uYWN0aXZlVmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsbGFiZWw6U3RyaW5nKG8udmFsdWUpLHVpOntsYWJlbDpJLnZhbHVlLmxhYmVsKCl9LHRvOm4udG8/LihvLnZhbHVlKSxzcXVhcmU6IiJ9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJsYWJlbCIsInVpIiwidG8iXSldKV0pLF86Mn0sMTAzMixbInZhbHVlIiwiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihnKSx7a2V5OjEsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoiZWxsaXBzaXMiLGNsYXNzOkkudmFsdWUuZWxsaXBzaXMoe2NsYXNzOmUudW5yZWYocSk/LmVsbGlwc2lzfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZWxsaXBzaXMiLHt1aTpJLnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7YXM6ImRpdiIsY29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOm4uZWxsaXBzaXNJY29ufHxlLnVucmVmKHkpLnVpLmljb25zLmVsbGlwc2lzfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiJdKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpXSw2NCkpKSwxMjgpKSxuLnNob3dDb250cm9sc3x8bS5uZXh0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCKSx7a2V5OjIsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoibmV4dCIsY2xhc3M6SS52YWx1ZS5uZXh0KHtjbGFzczplLnVucmVmKHEpPy5uZXh0fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywibmV4dCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpTLnZhbHVlLHRvOmE8bD9uLnRvPy4oYSsxKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5zaG93Q29udHJvbHN8fG0ubGFzdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoeCkse2tleTozLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6Imxhc3QiLGNsYXNzOkkudmFsdWUubGFzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGFzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImxhc3QiLHt9LCgpPT5bZS5jcmVhdGVWTm9kZShpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246JC52YWx1ZSx0bzpuLnRvPy4obCl9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO24uc2hvd0NvbnRyb2xzfHxtLmZpcnN0P3IocChlLnVucmVmKGIpLHsiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJmaXJzdCIsY2xhc3M6SS52YWx1ZS5maXJzdCh7Y2xhc3M6ZS51bnJlZihxKT8uZmlyc3R9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwsbyxyKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImZpcnN0Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOk4udmFsdWUsdG86bi50bz8uKDEpfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldO3YodC4kc2xvdHMsImZpcnN0Iix7fSwoKT0+e2wocChpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246Ti52YWx1ZSx0bzpuLnRvPy4oMSl9LG51bGwsbyxyKSl9LGwsbyxyKX0pLF86Mn0scyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpLG4uc2hvd0NvbnRyb2xzfHxtLnByZXY/cihwKGUudW5yZWYoXykseyJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6InByZXYiLGNsYXNzOkkudmFsdWUucHJldih7Y2xhc3M6ZS51bnJlZihxKT8ucHJldn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGwsbyxyLHMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywicHJldiIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpWLnZhbHVlLHRvOmE+MT9uLnRvPy4oYS0xKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV07dih0LiRzbG90cywicHJldiIse30sKCk9PntvKHAoaSx7Y29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOlYudmFsdWUsdG86YT4xP24udG8/LihhLTEpOnZvaWQgMH0sbnVsbCxyLHMpKX0sbyxyLHMpfSksXzoyfSxzLHUpKTpyKCJceDNjIS0tLS1ceDNlIikscigiXHgzYyEtLVstLVx4M2UiKSxmKG8sKG8sYyk9PntyKCJceDNjIS0tWy0tXHgzZSIpLCJwYWdlIj09PW8udHlwZT9yKHAoZS51bnJlZihrKSx7ImFzLWNoaWxkIjoiIix2YWx1ZTpvLnZhbHVlLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpJLnZhbHVlLml0ZW0oe2NsYXNzOmUudW5yZWYocSk/Lml0ZW19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChyLHMsdSxkKT0+e2lmKCFzKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0iLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0se2l0ZW06byxpbmRleDpjLHBhZ2U6YSxwYWdlQ291bnQ6bH0pLCgpPT5bZS5jcmVhdGVWTm9kZShpLHtjb2xvcjphPT09by52YWx1ZT9uLmFjdGl2ZUNvbG9yOm4uY29sb3IsdmFyaWFudDphPT09by52YWx1ZT9uLmFjdGl2ZVZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGxhYmVsOlN0cmluZyhvLnZhbHVlKSx1aTp7bGFiZWw6SS52YWx1ZS5sYWJlbCgpfSx0bzpuLnRvPy4oby52YWx1ZSksc3F1YXJlOiIifSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwibGFiZWwiLCJ1aSIsInRvIl0pXSldO3YodC4kc2xvdHMsIml0ZW0iLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0se2l0ZW06byxpbmRleDpjLHBhZ2U6YSxwYWdlQ291bnQ6bH0pLCgpPT57cyhwKGkse2NvbG9yOmE9PT1vLnZhbHVlP24uYWN0aXZlQ29sb3I6bi5jb2xvcix2YXJpYW50OmE9PT1vLnZhbHVlP24uYWN0aXZlVmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsbGFiZWw6U3RyaW5nKG8udmFsdWUpLHVpOntsYWJlbDpJLnZhbHVlLmxhYmVsKCl9LHRvOm4udG8/LihvLnZhbHVlKSxzcXVhcmU6IiJ9LG51bGwsdSxkKSl9LHMsdSxkKX0pLF86Mn0scyx1KSk6cihwKGUudW5yZWYoZykseyJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6ImVsbGlwc2lzIixjbGFzczpJLnZhbHVlLmVsbGlwc2lzKHtjbGFzczplLnVucmVmKHEpPy5lbGxpcHNpc30pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbCxvLHIpPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZWxsaXBzaXMiLHt1aTpJLnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoaSx7YXM6ImRpdiIsY29sb3I6bi5jb2xvcix2YXJpYW50Om4udmFyaWFudCxzaXplOm4uc2l6ZSxpY29uOm4uZWxsaXBzaXNJY29ufHxlLnVucmVmKHkpLnVpLmljb25zLmVsbGlwc2lzfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiJdKV0pXTt2KHQuJHNsb3RzLCJlbGxpcHNpcyIse3VpOkkudmFsdWV9LCgpPT57bChwKGkse2FzOiJkaXYiLGNvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpuLmVsbGlwc2lzSWNvbnx8ZS51bnJlZih5KS51aS5pY29ucy5lbGxpcHNpc30sbnVsbCxvLHIpKX0sbCxvLHIpfSksXzoyfSxzLHUpKSxyKCJceDNjIS0tXS0tXHgzZSIpfSkscigiXHgzYyEtLV0tLVx4M2UiKSxuLnNob3dDb250cm9sc3x8bS5uZXh0P3IocChlLnVucmVmKEIpLHsiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJuZXh0IixjbGFzczpJLnZhbHVlLm5leHQoe2NsYXNzOmUudW5yZWYocSk/Lm5leHR9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLHIscyx1KT0+e2lmKCFyKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsIm5leHQiLHt9LCgpPT5bZS5jcmVhdGVWTm9kZShpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246Uy52YWx1ZSx0bzphPGw/bi50bz8uKGErMSk6dm9pZCAwfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldO3YodC4kc2xvdHMsIm5leHQiLHt9LCgpPT57cihwKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjpTLnZhbHVlLHRvOmE8bD9uLnRvPy4oYSsxKTp2b2lkIDB9LG51bGwscyx1KSl9LHIscyx1KX0pLF86Mn0scyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpLG4uc2hvd0NvbnRyb2xzfHxtLmxhc3Q/cihwKGUudW5yZWYoeCkseyJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6Imxhc3QiLGNsYXNzOkkudmFsdWUubGFzdCh7Y2xhc3M6ZS51bnJlZihxKT8ubGFzdH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbyxyLHMpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGFzdCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKGkse2NvbG9yOm4uY29sb3IsdmFyaWFudDpuLnZhcmlhbnQsc2l6ZTpuLnNpemUsaWNvbjokLnZhbHVlLHRvOm4udG8/LihsKX0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXTt2KHQuJHNsb3RzLCJsYXN0Iix7fSwoKT0+e28ocChpLHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LHNpemU6bi5zaXplLGljb246JC52YWx1ZSx0bzpuLnRvPy4obCl9LG51bGwscixzKSl9LG8scixzKX0pLF86Mn0scyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxyLHMpKX0pLF86M30sbCkpfX19LHc9cS5zZXR1cDtxLnNldHVwPSh0LGEpPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvUGFnaW5hdGlvbi52dWUiKSx3P3codCxhKTp2b2lkIDB9O2V4cG9ydHtxIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1QYWdpbmF0aW9uLUN6ckVpUEpkLm1qcy5tYXAK", "chunks/build/PopperArrow-BEyWUJiQ.mjs": "aW1wb3J0e3YgYXMgZSxNIGFzIHQsUCBhcyBuLGExIGFzIG8sbSBhcyByLGEyIGFzIGksWCBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VGb2N1c0d1YXJkcygpe2Uud2F0Y2hFZmZlY3QoZT0+e30pfWZ1bmN0aW9uIHVzZVR5cGVhaGVhZChlKXtjb25zdCB0PW8oIiIsMWUzKTtyZXR1cm57c2VhcmNoOnQsaGFuZGxlVHlwZWFoZWFkU2VhcmNoOihlLG4pPT57dC52YWx1ZT10LnZhbHVlK2U7e2NvbnN0IGU9bCgpLG89bi5tYXAoZT0+KHsuLi5lLHRleHRWYWx1ZTplLnZhbHVlPy50ZXh0VmFsdWU/P2UucmVmLnRleHRDb250ZW50Py50cmltKCk/PyIifSkpLHI9by5maW5kKHQ9PnQucmVmPT09ZSksaT1nZXROZXh0TWF0Y2goby5tYXAoZT0+ZS50ZXh0VmFsdWUpLHQudmFsdWUscj8udGV4dFZhbHVlKSxhPW8uZmluZChlPT5lLnRleHRWYWx1ZT09PWkpO3JldHVybiBhJiZhLnJlZi5mb2N1cygpLGE/LnJlZn19LHJlc2V0VHlwZWFoZWFkOigpPT57dC52YWx1ZT0iIn19fWZ1bmN0aW9uIGdldE5leHRNYXRjaChlLHQsbil7Y29uc3Qgbz10Lmxlbmd0aD4xJiZBcnJheS5mcm9tKHQpLmV2ZXJ5KGU9PmU9PT10WzBdKT90WzBdOnQscj1uP2UuaW5kZXhPZihuKTotMTtsZXQgaT0obD1lLGE9TWF0aC5tYXgociwwKSxsLm1hcCgoZSx0KT0+bFsoYSt0KSVsLmxlbmd0aF0pKTt2YXIgbCxhOzE9PT1vLmxlbmd0aCYmKGk9aS5maWx0ZXIoZT0+ZSE9PW4pKTtjb25zdCBzPWkuZmluZChlPT5lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChvLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gcyE9PW4/czp2b2lkIDB9Y29uc3RbYSxzXT1yKCJQb3BwZXJSb290Iik7dmFyIGM9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlBvcHBlclJvb3QiLHNldHVwKHQpe2NvbnN0IG49ZS5yZWYoKTtyZXR1cm4gcyh7YW5jaG9yOm4sb25BbmNob3JDaGFuZ2U6ZT0+bi52YWx1ZT1lfSksKHQsbik9PmUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpfX0pLHU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiUG9wcGVyQW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG8pe2NvbnN0IHI9byx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50Omx9PXQoKSxzPWEoKTtyZXR1cm4gZS53YXRjaFBvc3RFZmZlY3QoKCk9PntzLm9uQW5jaG9yQ2hhbmdlKHIucmVmZXJlbmNlPz9sLnZhbHVlKX0pLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobikse3JlZjplLnVucmVmKGkpLGFzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGR9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCJdKSl9fSk7Y29uc3QgZD17a2V5OjAsZDoiTTAgMEw2IDZMMTIgMCJ9LGY9e2tleToxLGQ6Ik0wIDBMNC41ODU3OSA0LjU4NTc5QzUuMzY2ODMgNS4zNjY4MyA2LjYzMzE2IDUuMzY2ODQgNy40MTQyMSA0LjU4NTc5TDEyIDAifTt2YXIgcD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKG8pe2NvbnN0IHI9bztyZXR1cm4gdCgpLCh0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobiksZS5tZXJnZVByb3BzKHIse3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LHZpZXdCb3g6dC5hc0NoaWxkP3ZvaWQgMDoiMCAwIDEyIDYiLHByZXNlcnZlQXNwZWN0UmF0aW86dC5hc0NoaWxkP3ZvaWQgMDoibm9uZSJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bdC5yb3VuZGVkPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJwYXRoIixmKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soInBhdGgiLGQpKV0pXSksXzozfSwxNixbIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iXSkpfX0pO2Z1bmN0aW9uIGlzTm90TnVsbChlKXtyZXR1cm4gbnVsbCE9PWV9ZnVuY3Rpb24gdHJhbnNmb3JtT3JpZ2luKGUpe3JldHVybntuYW1lOiJ0cmFuc2Zvcm1PcmlnaW4iLG9wdGlvbnM6ZSxmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixyZWN0czpvLG1pZGRsZXdhcmVEYXRhOnJ9PXQsaT0wIT09ci5hcnJvdz8uY2VudGVyT2Zmc2V0LGw9aT8wOmUuYXJyb3dXaWR0aCxhPWk/MDplLmFycm93SGVpZ2h0LFtzLGNdPWdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQobiksdT17c3RhcnQ6IjAlIixjZW50ZXI6IjUwJSIsZW5kOiIxMDAlIn1bY10sZD0oci5hcnJvdz8ueD8/MCkrbC8yLGY9KHIuYXJyb3c/Lnk/PzApK2EvMjtsZXQgcD0iIixnPSIiO3JldHVybiJib3R0b20iPT09cz8ocD1pP3U6YCR7ZH1weGAsZz0tYSsicHgiKToidG9wIj09PXM/KHA9aT91OmAke2R9cHhgLGc9YCR7by5mbG9hdGluZy5oZWlnaHQrYX1weGApOiJyaWdodCI9PT1zPyhwPS1hKyJweCIsZz1pP3U6YCR7Zn1weGApOiJsZWZ0Ij09PXMmJihwPWAke28uZmxvYXRpbmcud2lkdGgrYX1weGAsZz1pP3U6YCR7Zn1weGApLHtkYXRhOnt4OnAseTpnfX19fX1mdW5jdGlvbiBnZXRTaWRlQW5kQWxpZ25Gcm9tUGxhY2VtZW50KGUpe2NvbnN0W3Qsbj0iY2VudGVyIl09ZS5zcGxpdCgiLSIpO3JldHVyblt0LG5dfWNvbnN0IGc9WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSxtPU1hdGgubWluLGg9TWF0aC5tYXgseT1NYXRoLnJvdW5kLHY9TWF0aC5mbG9vcixjcmVhdGVDb29yZHM9ZT0+KHt4OmUseTplfSksdz17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtmdW5jdGlvbiBjbGFtcChlLHQsbil7cmV0dXJuIGgoZSxtKHQsbikpfWZ1bmN0aW9uIGV2YWx1YXRlKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0KTplfWZ1bmN0aW9uIGdldFNpZGUoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVswXX1mdW5jdGlvbiBnZXRBbGlnbm1lbnQoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVsxXX1mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoZSl7cmV0dXJuIngiPT09ZT8ieSI6IngifWZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoZSl7cmV0dXJuInkiPT09ZT8iaGVpZ2h0Ijoid2lkdGgifWZ1bmN0aW9uIGdldFNpZGVBeGlzKGUpe2NvbnN0IHQ9ZVswXTtyZXR1cm4idCI9PT10fHwiYiI9PT10PyJ5IjoieCJ9ZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhlKXtyZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKGUpKX1mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChlKXtyZXR1cm4gZS5pbmNsdWRlcygic3RhcnQiKT9lLnJlcGxhY2UoInN0YXJ0IiwiZW5kIik6ZS5yZXBsYWNlKCJlbmQiLCJzdGFydCIpfWNvbnN0IHg9WyJsZWZ0IiwicmlnaHQiXSxBPVsicmlnaHQiLCJsZWZ0Il0sYj1bInRvcCIsImJvdHRvbSJdLFM9WyJib3R0b20iLCJ0b3AiXTtmdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGUsdCxuLG8pe2NvbnN0IHI9Z2V0QWxpZ25tZW50KGUpO2xldCBpPWZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2goZSl7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpyZXR1cm4gbj90P0E6eDp0P3g6QTtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnJldHVybiB0P2I6UztkZWZhdWx0OnJldHVybltdfX0oZ2V0U2lkZShlKSwic3RhcnQiPT09bixvKTtyZXR1cm4gciYmKGk9aS5tYXAoZT0+ZSsiLSIrciksdCYmKGk9aS5jb25jYXQoaS5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKSkpLGl9ZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoZSl7Y29uc3QgdD1nZXRTaWRlKGUpO3JldHVybiB3W3RdK2Uuc2xpY2UodC5sZW5ndGgpfWZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QoZSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBlP2Z1bmN0aW9uKGUpe3JldHVybnt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MCwuLi5lfX0oZSk6e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfX1mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KGUpe2NvbnN0e3g6dCx5Om4sd2lkdGg6byxoZWlnaHQ6cn09ZTtyZXR1cm57d2lkdGg6byxoZWlnaHQ6cix0b3A6bixsZWZ0OnQscmlnaHQ6dCtvLGJvdHRvbTpuK3IseDp0LHk6bn19ZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoZSx0LG4pe2xldHtyZWZlcmVuY2U6byxmbG9hdGluZzpyfT1lO2NvbnN0IGk9Z2V0U2lkZUF4aXModCksbD1nZXRBbGlnbm1lbnRBeGlzKHQpLGE9Z2V0QXhpc0xlbmd0aChsKSxzPWdldFNpZGUodCksYz0ieSI9PT1pLHU9by54K28ud2lkdGgvMi1yLndpZHRoLzIsZD1vLnkrby5oZWlnaHQvMi1yLmhlaWdodC8yLGY9b1thXS8yLXJbYV0vMjtsZXQgcDtzd2l0Y2gocyl7Y2FzZSJ0b3AiOnA9e3g6dSx5Om8ueS1yLmhlaWdodH07YnJlYWs7Y2FzZSJib3R0b20iOnA9e3g6dSx5Om8ueStvLmhlaWdodH07YnJlYWs7Y2FzZSJyaWdodCI6cD17eDpvLngrby53aWR0aCx5OmR9O2JyZWFrO2Nhc2UibGVmdCI6cD17eDpvLngtci53aWR0aCx5OmR9O2JyZWFrO2RlZmF1bHQ6cD17eDpvLngseTpvLnl9fXN3aXRjaChnZXRBbGlnbm1lbnQodCkpe2Nhc2Uic3RhcnQiOnBbbF0tPWYqKG4mJmM/LTE6MSk7YnJlYWs7Y2FzZSJlbmQiOnBbbF0rPWYqKG4mJmM/LTE6MSl9cmV0dXJuIHB9YXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD17fSk7Y29uc3R7eDpvLHk6cixwbGF0Zm9ybTppLHJlY3RzOmwsZWxlbWVudHM6YSxzdHJhdGVneTpzfT1lLHtib3VuZGFyeTpjPSJjbGlwcGluZ0FuY2VzdG9ycyIscm9vdEJvdW5kYXJ5OnU9InZpZXdwb3J0IixlbGVtZW50Q29udGV4dDpkPSJmbG9hdGluZyIsYWx0Qm91bmRhcnk6Zj0hMSxwYWRkaW5nOnA9MH09ZXZhbHVhdGUodCxlKSxnPWdldFBhZGRpbmdPYmplY3QocCksbT1hW2Y/ImZsb2F0aW5nIj09PWQ/InJlZmVyZW5jZSI6ImZsb2F0aW5nIjpkXSxoPXJlY3RUb0NsaWVudFJlY3QoYXdhaXQgaS5nZXRDbGlwcGluZ1JlY3Qoe2VsZW1lbnQ6bnVsbD09KG49YXdhaXQobnVsbD09aS5pc0VsZW1lbnQ/dm9pZCAwOmkuaXNFbGVtZW50KG0pKSl8fG4/bTptLmNvbnRleHRFbGVtZW50fHxhd2FpdChudWxsPT1pLmdldERvY3VtZW50RWxlbWVudD92b2lkIDA6aS5nZXREb2N1bWVudEVsZW1lbnQoYS5mbG9hdGluZykpLGJvdW5kYXJ5OmMscm9vdEJvdW5kYXJ5OnUsc3RyYXRlZ3k6c30pKSx5PSJmbG9hdGluZyI9PT1kP3t4Om8seTpyLHdpZHRoOmwuZmxvYXRpbmcud2lkdGgsaGVpZ2h0OmwuZmxvYXRpbmcuaGVpZ2h0fTpsLnJlZmVyZW5jZSx2PWF3YWl0KG51bGw9PWkuZ2V0T2Zmc2V0UGFyZW50P3ZvaWQgMDppLmdldE9mZnNldFBhcmVudChhLmZsb2F0aW5nKSksdz1hd2FpdChudWxsPT1pLmlzRWxlbWVudD92b2lkIDA6aS5pc0VsZW1lbnQodikpJiZhd2FpdChudWxsPT1pLmdldFNjYWxlP3ZvaWQgMDppLmdldFNjYWxlKHYpKXx8e3g6MSx5OjF9LHg9cmVjdFRvQ2xpZW50UmVjdChpLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IGkuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOmEscmVjdDp5LG9mZnNldFBhcmVudDp2LHN0cmF0ZWd5OnN9KTp5KTtyZXR1cm57dG9wOihoLnRvcC14LnRvcCtnLnRvcCkvdy55LGJvdHRvbTooeC5ib3R0b20taC5ib3R0b20rZy5ib3R0b20pL3cueSxsZWZ0OihoLmxlZnQteC5sZWZ0K2cubGVmdCkvdy54LHJpZ2h0Oih4LnJpZ2h0LWgucmlnaHQrZy5yaWdodCkvdy54fX1mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQoZSl7cmV0dXJuIGcuc29tZSh0PT5lW3RdPj0wKX1jb25zdCBPPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2Z1bmN0aW9uIGdldE5vZGVOYW1lKGUpe3JldHVybiBpc05vZGUoKT8oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6IiNkb2N1bWVudCJ9ZnVuY3Rpb24gZ2V0V2luZG93KGUpe3ZhciB0O3JldHVybihudWxsPT1lfHxudWxsPT0odD1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8dm9pZCAwfWZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlKXt2YXIgdDtyZXR1cm4gbnVsbD09KHQ9KGlzTm9kZSgpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8KHZvaWQgMCkuZG9jdW1lbnQpP3ZvaWQgMDp0LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBpc05vZGUoZSl7cmV0dXJuITF9ZnVuY3Rpb24gaXNFbGVtZW50KGUpe3JldHVybiExfWZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGUpe2NvbnN0e292ZXJmbG93OnQsb3ZlcmZsb3dYOm4sb3ZlcmZsb3dZOm8sZGlzcGxheTpyfT1nZXRDb21wdXRlZFN0eWxlJDEoZSk7cmV0dXJuL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3QodCtvK24pJiYiaW5saW5lIiE9PXImJiJjb250ZW50cyIhPT1yfWZ1bmN0aW9uIGlzVG9wTGF5ZXIoZSl7dHJ5e2lmKGUubWF0Y2hlcygiOnBvcG92ZXItb3BlbiIpKXJldHVybiEwfWNhdGNoKGUpe310cnl7cmV0dXJuIGUubWF0Y2hlcygiOm1vZGFsIil9Y2F0Y2goZSl7cmV0dXJuITF9fWNvbnN0IFA9L3RyYW5zZm9ybXx0cmFuc2xhdGV8c2NhbGV8cm90YXRlfHBlcnNwZWN0aXZlfGZpbHRlci8sQz0vcGFpbnR8bGF5b3V0fHN0cmljdHxjb250ZW50Lyxpc05vdE5vbmU9ZT0+ISFlJiYibm9uZSIhPT1lO2xldCBSO2Z1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gaXNOb3ROb25lKHQudHJhbnNmb3JtKXx8aXNOb3ROb25lKHQudHJhbnNsYXRlKXx8aXNOb3ROb25lKHQuc2NhbGUpfHxpc05vdE5vbmUodC5yb3RhdGUpfHxpc05vdE5vbmUodC5wZXJzcGVjdGl2ZSl8fCFpc1dlYktpdCgpJiYoaXNOb3ROb25lKHQuYmFja2Ryb3BGaWx0ZXIpfHxpc05vdE5vbmUodC5maWx0ZXIpKXx8UC50ZXN0KHQud2lsbENoYW5nZXx8IiIpfHxDLnRlc3QodC5jb250YWlufHwiIil9ZnVuY3Rpb24gaXNXZWJLaXQoKXtyZXR1cm4gbnVsbD09UiYmKFI9InVuZGVmaW5lZCIhPXR5cGVvZiBDU1MmJkNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKCItd2Via2l0LWJhY2tkcm9wLWZpbHRlciIsIm5vbmUiKSksUn1mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoZSl7cmV0dXJuL14oaHRtbHxib2R5fCNkb2N1bWVudCkkLy50ZXN0KGdldE5vZGVOYW1lKGUpKX1mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZSl7cmV0dXJuIGdldFdpbmRvdyhlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZSl7cmV0dXJue3Njcm9sbExlZnQ6ZS5zY3JvbGxYLHNjcm9sbFRvcDplLnNjcm9sbFl9fWZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZSl7aWYoImh0bWwiPT09Z2V0Tm9kZU5hbWUoZSkpcmV0dXJuIGU7Y29uc3QgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxnZXREb2N1bWVudEVsZW1lbnQoZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IoZSl7Y29uc3QgdD1nZXRQYXJlbnROb2RlKGUpO3JldHVybiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk/ZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudC5ib2R5OmUuYm9keTpnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcih0KX1mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlLHQsbil7dmFyIG87dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PW4mJihuPSEwKTtjb25zdCByPWdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKGUpLGk9cj09PShudWxsPT0obz1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDpvLmJvZHkpLGw9Z2V0V2luZG93KHIpO2lmKGkpe2NvbnN0IGU9Z2V0RnJhbWVFbGVtZW50KGwpO3JldHVybiB0LmNvbmNhdChsLGwudmlzdWFsVmlld3BvcnR8fFtdLGlzT3ZlcmZsb3dFbGVtZW50KHIpP3I6W10sZSYmbj9nZXRPdmVyZmxvd0FuY2VzdG9ycyhlKTpbXSl9cmV0dXJuIHQuY29uY2F0KHIsZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocixbXSxuKSl9ZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KGUpe3JldHVybiBlLnBhcmVudCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUucGFyZW50KT9lLmZyYW1lRWxlbWVudDpudWxsfWZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZSl7Y29uc3QgdD1nZXRDb21wdXRlZFN0eWxlJDEoZSk7bGV0IG49cGFyc2VGbG9hdCh0LndpZHRoKXx8MCxvPXBhcnNlRmxvYXQodC5oZWlnaHQpfHwwO2NvbnN0IHI9bixpPW8sbD15KG4pIT09cnx8eShvKSE9PWk7cmV0dXJuIGwmJihuPXIsbz1pKSx7d2lkdGg6bixoZWlnaHQ6bywkOmx9fWZ1bmN0aW9uIHVud3JhcEVsZW1lbnQkMShlKXtyZXR1cm4gZS5jb250ZXh0RWxlbWVudH1mdW5jdGlvbiBnZXRTY2FsZShlKXt1bndyYXBFbGVtZW50JDEoZSk7cmV0dXJuIGNyZWF0ZUNvb3JkcygxKX1jb25zdCBFPWNyZWF0ZUNvb3JkcygwKTtmdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGUpe2NvbnN0IHQ9Z2V0V2luZG93KGUpO3JldHVybiBpc1dlYktpdCgpJiZ0LnZpc3VhbFZpZXdwb3J0P3t4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfTpFfWZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlLHQsbixvKXt2b2lkIDA9PT10JiYodD0hMSksdm9pZCAwPT09biYmKG49ITEpO2NvbnN0IHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXVud3JhcEVsZW1lbnQkMShlKTtsZXQgbD1jcmVhdGVDb29yZHMoMSk7dCYmKG98fChsPWdldFNjYWxlKGUpKSk7Y29uc3QgYT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSwhKCFufHx0JiZuIT09Z2V0V2luZG93KGUpKSYmdH0oaSxuLG8pP2dldFZpc3VhbE9mZnNldHMoaSk6Y3JlYXRlQ29vcmRzKDApO2xldCBzPShyLmxlZnQrYS54KS9sLngsYz0oci50b3ArYS55KS9sLnksdT1yLndpZHRoL2wueCxkPXIuaGVpZ2h0L2wueTtpZihpKXtjb25zdCBlPW87bGV0IHQ9Z2V0V2luZG93KGkpLG49Z2V0RnJhbWVFbGVtZW50KHQpO2Zvcig7biYmbyYmZSE9PXQ7KXtjb25zdCBlPWdldFNjYWxlKG4pLG89bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWdldENvbXB1dGVkU3R5bGUkMShuKSxpPW8ubGVmdCsobi5jbGllbnRMZWZ0K3BhcnNlRmxvYXQoci5wYWRkaW5nTGVmdCkpKmUueCxsPW8udG9wKyhuLmNsaWVudFRvcCtwYXJzZUZsb2F0KHIucGFkZGluZ1RvcCkpKmUueTtzKj1lLngsYyo9ZS55LHUqPWUueCxkKj1lLnkscys9aSxjKz1sLHQ9Z2V0V2luZG93KG4pLG49Z2V0RnJhbWVFbGVtZW50KHQpfX1yZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7d2lkdGg6dSxoZWlnaHQ6ZCx4OnMseTpjfSl9ZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlLHQpe2NvbnN0IG49Z2V0Tm9kZVNjcm9sbChlKS5zY3JvbGxMZWZ0O3JldHVybiB0P3QubGVmdCtuOmdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZSkpLmxlZnQrbn1mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGUsdCl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt4Om4ubGVmdCt0LnNjcm9sbExlZnQtZ2V0V2luZG93U2Nyb2xsQmFyWChlLG4pLHk6bi50b3ArdC5zY3JvbGxUb3B9fWZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlLHQsbil7bGV0IG87aWYoInZpZXdwb3J0Ij09PXQpbz1mdW5jdGlvbihlLHQpe2NvbnN0IG49Z2V0V2luZG93KGUpLG89Z2V0RG9jdW1lbnRFbGVtZW50KGUpLHI9bi52aXN1YWxWaWV3cG9ydDtsZXQgaT1vLmNsaWVudFdpZHRoLGw9by5jbGllbnRIZWlnaHQsYT0wLHM9MDtpZihyKXtpPXIud2lkdGgsbD1yLmhlaWdodDtjb25zdCBlPWlzV2ViS2l0KCk7KCFlfHxlJiYiZml4ZWQiPT09dCkmJihhPXIub2Zmc2V0TGVmdCxzPXIub2Zmc2V0VG9wKX1jb25zdCBjPWdldFdpbmRvd1Njcm9sbEJhclgobyk7aWYoYzw9MCl7Y29uc3QgZT1vLm93bmVyRG9jdW1lbnQsdD1lLmJvZHksbj1nZXRDb21wdXRlZFN0eWxlKHQpLHI9IkNTUzFDb21wYXQiPT09ZS5jb21wYXRNb2RlJiZwYXJzZUZsb2F0KG4ubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChuLm1hcmdpblJpZ2h0KXx8MCxsPU1hdGguYWJzKG8uY2xpZW50V2lkdGgtdC5jbGllbnRXaWR0aC1yKTtsPD0yNSYmKGktPWwpfWVsc2UgYzw9MjUmJihpKz1jKTtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6bCx4OmEseTpzfX0oZSxuKTtlbHNlIGlmKCJkb2N1bWVudCI9PT10KW89ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXREb2N1bWVudEVsZW1lbnQoZSksbj1nZXROb2RlU2Nyb2xsKGUpLG89ZS5vd25lckRvY3VtZW50LmJvZHkscj1oKHQuc2Nyb2xsV2lkdGgsdC5jbGllbnRXaWR0aCxvLnNjcm9sbFdpZHRoLG8uY2xpZW50V2lkdGgpLGk9aCh0LnNjcm9sbEhlaWdodCx0LmNsaWVudEhlaWdodCxvLnNjcm9sbEhlaWdodCxvLmNsaWVudEhlaWdodCk7bGV0IGw9LW4uc2Nyb2xsTGVmdCtnZXRXaW5kb3dTY3JvbGxCYXJYKGUpO2NvbnN0IGE9LW4uc2Nyb2xsVG9wO3JldHVybiJydGwiPT09Z2V0Q29tcHV0ZWRTdHlsZSQxKG8pLmRpcmVjdGlvbiYmKGwrPWgodC5jbGllbnRXaWR0aCxvLmNsaWVudFdpZHRoKS1yKSx7d2lkdGg6cixoZWlnaHQ6aSx4OmwseTphfX0oZ2V0RG9jdW1lbnRFbGVtZW50KGUpKTtlbHNle3tjb25zdCBuPWdldFZpc3VhbE9mZnNldHMoZSk7bz17eDp0Lngtbi54LHk6dC55LW4ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fXJldHVybiByZWN0VG9DbGllbnRSZWN0KG8pfWZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlLHQpe2dldFBhcmVudE5vZGUoZSk7cmV0dXJuITF9ZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZSx0LG4pe2NvbnN0IG89Z2V0RG9jdW1lbnRFbGVtZW50KHQpLHI9ImZpeGVkIj09PW4saT1nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSwhMCxyLHQpO2xldCBsPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9O2NvbnN0IGE9Y3JlYXRlQ29vcmRzKDApO2Z1bmN0aW9uIHNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKXthLng9Z2V0V2luZG93U2Nyb2xsQmFyWChvKX1yfHwoKCJib2R5IiE9PWdldE5vZGVOYW1lKHQpfHxpc092ZXJmbG93RWxlbWVudChvKSkmJihsPWdldE5vZGVTY3JvbGwodCkpLG8mJnNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKSksciYmbyYmc2V0TGVmdFJUTFNjcm9sbGJhck9mZnNldCgpO2NvbnN0IHM9byYmIXI/Z2V0SFRNTE9mZnNldChvLGwpOmNyZWF0ZUNvb3JkcygwKTtyZXR1cm57eDppLmxlZnQrbC5zY3JvbGxMZWZ0LWEueC1zLngseTppLnRvcCtsLnNjcm9sbFRvcC1hLnktcy55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX1mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZSl7cmV0dXJuInN0YXRpYyI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkucG9zaXRpb259ZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGUsdCl7Y29uc3Qgbj1nZXRXaW5kb3coZSk7aWYoaXNUb3BMYXllcihlKSlyZXR1cm4gbjt7bGV0IHQ9Z2V0UGFyZW50Tm9kZShlKTtmb3IoO3QmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk7KXtpZihpc0VsZW1lbnQoKSYmIWlzU3RhdGljUG9zaXRpb25lZCh0KSlyZXR1cm4gdDt0PWdldFBhcmVudE5vZGUodCl9cmV0dXJuIG59fWNvbnN0IEI9e2NvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0OmZ1bmN0aW9uKGUpe2xldHtlbGVtZW50czp0LHJlY3Q6bixvZmZzZXRQYXJlbnQ6byxzdHJhdGVneTpyfT1lO2NvbnN0IGk9ImZpeGVkIj09PXIsbD1nZXREb2N1bWVudEVsZW1lbnQobyksYT0hIXQmJmlzVG9wTGF5ZXIodC5mbG9hdGluZyk7aWYobz09PWx8fGEmJmkpcmV0dXJuIG47bGV0IHM9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0sYz1jcmVhdGVDb29yZHMoMSk7Y29uc3QgdT1jcmVhdGVDb29yZHMoMCk7aXx8KCJib2R5IiE9PWdldE5vZGVOYW1lKG8pfHxpc092ZXJmbG93RWxlbWVudChsKSkmJihzPWdldE5vZGVTY3JvbGwobykpO2NvbnN0IGQ9bCYmIWk/Z2V0SFRNTE9mZnNldChsLHMpOmNyZWF0ZUNvb3JkcygwKTtyZXR1cm57d2lkdGg6bi53aWR0aCpjLngsaGVpZ2h0Om4uaGVpZ2h0KmMueSx4Om4ueCpjLngtcy5zY3JvbGxMZWZ0KmMueCt1LngrZC54LHk6bi55KmMueS1zLnNjcm9sbFRvcCpjLnkrdS55K2QueX19LGdldERvY3VtZW50RWxlbWVudDpnZXREb2N1bWVudEVsZW1lbnQsZ2V0Q2xpcHBpbmdSZWN0OmZ1bmN0aW9uKGUpe2xldHtlbGVtZW50OnQsYm91bmRhcnk6bixyb290Qm91bmRhcnk6byxzdHJhdGVneTpyfT1lO2NvbnN0IGk9Wy4uLiJjbGlwcGluZ0FuY2VzdG9ycyI9PT1uP2lzVG9wTGF5ZXIodCk/W106ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXQuZ2V0KGUpO2lmKG4pcmV0dXJuIG47bGV0IG89Z2V0T3ZlcmZsb3dBbmNlc3RvcnMoZSxbXSwhMSkuZmlsdGVyKGU9PiExKSxyPW51bGw7Y29uc3QgaT0iZml4ZWQiPT09Z2V0Q29tcHV0ZWRTdHlsZSQxKGUpLnBvc2l0aW9uO2xldCBsPWk/Z2V0UGFyZW50Tm9kZShlKTplO2Zvcig7aXNFbGVtZW50KCkmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobCk7KXtjb25zdCB0PWdldENvbXB1dGVkU3R5bGUkMShsKSxuPWlzQ29udGFpbmluZ0Jsb2NrKGwpO258fCJmaXhlZCIhPT10LnBvc2l0aW9ufHwocj1udWxsKSwoaT8hbiYmIXI6IW4mJiJzdGF0aWMiPT09dC5wb3NpdGlvbiYmciYmKCJhYnNvbHV0ZSI9PT1yLnBvc2l0aW9ufHwiZml4ZWQiPT09ci5wb3NpdGlvbil8fGlzT3ZlcmZsb3dFbGVtZW50KGwpJiYhbiYmaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGUpKT9vPW8uZmlsdGVyKGU9PmUhPT1sKTpyPXQsbD1nZXRQYXJlbnROb2RlKGwpfXJldHVybiB0LnNldChlLG8pLG99KHQsdGhpcy5fYyk6W10uY29uY2F0KG4pLG9dLGw9Z2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKHQsaVswXSxyKTtsZXQgYT1sLnRvcCxzPWwucmlnaHQsYz1sLmJvdHRvbSx1PWwubGVmdDtmb3IobGV0IGU9MTtlPGkubGVuZ3RoO2UrKyl7Y29uc3Qgbj1nZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IodCxpW2VdLHIpO2E9aChuLnRvcCxhKSxzPW0obi5yaWdodCxzKSxjPW0obi5ib3R0b20sYyksdT1oKG4ubGVmdCx1KX1yZXR1cm57d2lkdGg6cy11LGhlaWdodDpjLWEseDp1LHk6YX19LGdldE9mZnNldFBhcmVudDpnZXRPZmZzZXRQYXJlbnQsZ2V0RWxlbWVudFJlY3RzOmFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fGdldE9mZnNldFBhcmVudCxuPXRoaXMuZ2V0RGltZW5zaW9ucyxvPWF3YWl0IG4oZS5mbG9hdGluZyk7cmV0dXJue3JlZmVyZW5jZTpnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlLnJlZmVyZW5jZSxhd2FpdCB0KGUuZmxvYXRpbmcpLGUuc3RyYXRlZ3kpLGZsb2F0aW5nOnt4OjAseTowLHdpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fX19LGdldENsaWVudFJlY3RzOmZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSl9LGdldERpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7Y29uc3R7d2lkdGg6dCxoZWlnaHQ6bn09Z2V0Q3NzRGltZW5zaW9ucyhlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19LGdldFNjYWxlOmdldFNjYWxlLGlzRWxlbWVudDppc0VsZW1lbnQsaXNSVEw6ZnVuY3Rpb24oZSl7cmV0dXJuInJ0bCI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkuZGlyZWN0aW9ufX07ZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChlLHQpe3JldHVybiBlLng9PT10LngmJmUueT09PXQueSYmZS53aWR0aD09PXQud2lkdGgmJmUuaGVpZ2h0PT09dC5oZWlnaHR9ZnVuY3Rpb24gYXV0b1VwZGF0ZShlLHQsbixvKXt2b2lkIDA9PT1vJiYobz17fSk7Y29uc3R7YW5jZXN0b3JTY3JvbGw6cj0hMCxhbmNlc3RvclJlc2l6ZTppPSEwLGVsZW1lbnRSZXNpemU6bD0iZnVuY3Rpb24iPT10eXBlb2YgUmVzaXplT2JzZXJ2ZXIsbGF5b3V0U2hpZnQ6YT0iZnVuY3Rpb24iPT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsYW5pbWF0aW9uRnJhbWU6cz0hMX09byxjPXVud3JhcEVsZW1lbnQkMShlKSx1PXJ8fGk/Wy4uLmM/Z2V0T3ZlcmZsb3dBbmNlc3RvcnMoYyk6W10sLi4udD9nZXRPdmVyZmxvd0FuY2VzdG9ycyh0KTpbXV06W107dS5mb3JFYWNoKGU9PntyJiZlLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsbix7cGFzc2l2ZTohMH0pLGkmJmUuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixuKX0pO2NvbnN0IGQ9YyYmYT9mdW5jdGlvbihlLHQpe2xldCBuLG89bnVsbDtjb25zdCByPWdldERvY3VtZW50RWxlbWVudChlKTtmdW5jdGlvbiBjbGVhbnVwKCl7dmFyIGU7Y2xlYXJUaW1lb3V0KG4pLG51bGw9PShlPW8pfHxlLmRpc2Nvbm5lY3QoKSxvPW51bGx9cmV0dXJuIGZ1bmN0aW9uIHJlZnJlc2goaSxsKXt2b2lkIDA9PT1pJiYoaT0hMSksdm9pZCAwPT09bCYmKGw9MSksY2xlYW51cCgpO2NvbnN0IGE9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7bGVmdDpzLHRvcDpjLHdpZHRoOnUsaGVpZ2h0OmR9PWE7aWYoaXx8dCgpLCF1fHwhZClyZXR1cm47Y29uc3QgZj17cm9vdE1hcmdpbjotdihjKSsicHggIistdihyLmNsaWVudFdpZHRoLShzK3UpKSsicHggIistdihyLmNsaWVudEhlaWdodC0oYytkKSkrInB4ICIrLXYocykrInB4Iix0aHJlc2hvbGQ6aCgwLG0oMSxsKSl8fDF9O2xldCBwPSEwO2Z1bmN0aW9uIGhhbmRsZU9ic2VydmUodCl7Y29uc3Qgbz10WzBdLmludGVyc2VjdGlvblJhdGlvO2lmKG8hPT1sKXtpZighcClyZXR1cm4gcmVmcmVzaCgpO28/cmVmcmVzaCghMSxvKTpuPXNldFRpbWVvdXQoKCk9PntyZWZyZXNoKCExLDFlLTcpfSwxZTMpfTEhPT1vfHxyZWN0c0FyZUVxdWFsKGEsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSl8fHJlZnJlc2goKSxwPSExfXRyeXtvPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLHsuLi5mLHJvb3Q6ci5vd25lckRvY3VtZW50fSl9Y2F0Y2goZSl7bz1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSxmKX1vLm9ic2VydmUoZSl9KCEwKSxjbGVhbnVwfShjLG4pOm51bGw7bGV0IGYscD0tMSxnPW51bGw7bCYmKGc9bmV3IFJlc2l6ZU9ic2VydmVyKGU9PntsZXRbb109ZTtvJiZvLnRhcmdldD09PWMmJmcmJnQmJihnLnVub2JzZXJ2ZSh0KSxjYW5jZWxBbmltYXRpb25GcmFtZShwKSxwPXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBlO251bGw9PShlPWcpfHxlLm9ic2VydmUodCl9KSksbigpfSksYyYmIXMmJmcub2JzZXJ2ZShjKSx0JiZnLm9ic2VydmUodCkpO2xldCB5PXM/Z2V0Qm91bmRpbmdDbGllbnRSZWN0KGUpOm51bGw7cmV0dXJuIHMmJmZ1bmN0aW9uIGZyYW1lTG9vcCgpe2NvbnN0IHQ9Z2V0Qm91bmRpbmdDbGllbnRSZWN0KGUpO3kmJiFyZWN0c0FyZUVxdWFsKHksdCkmJm4oKTt5PXQsZj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKX0oKSxuKCksKCk9Pnt2YXIgZTt1LmZvckVhY2goZT0+e3ImJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixuKSxpJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KSxudWxsPT1kfHxkKCksbnVsbD09KGU9Zyl8fGUuZGlzY29ubmVjdCgpLGc9bnVsbCxzJiZjYW5jZWxBbmltYXRpb25GcmFtZShmKX19Y29uc3Qgb2Zmc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4sbztjb25zdHt4OnIseTppLHBsYWNlbWVudDpsLG1pZGRsZXdhcmVEYXRhOmF9PXQscz1hd2FpdCBhc3luYyBmdW5jdGlvbihlLHQpe2NvbnN0e3BsYWNlbWVudDpuLHBsYXRmb3JtOm8sZWxlbWVudHM6cn09ZSxpPWF3YWl0KG51bGw9PW8uaXNSVEw/dm9pZCAwOm8uaXNSVEwoci5mbG9hdGluZykpLGw9Z2V0U2lkZShuKSxhPWdldEFsaWdubWVudChuKSxzPSJ5Ij09PWdldFNpZGVBeGlzKG4pLGM9Ty5oYXMobCk/LTE6MSx1PWkmJnM/LTE6MSxkPWV2YWx1YXRlKHQsZSk7bGV0e21haW5BeGlzOmYsY3Jvc3NBeGlzOnAsYWxpZ25tZW50QXhpczpnfT0ibnVtYmVyIj09dHlwZW9mIGQ/e21haW5BeGlzOmQsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6ZC5tYWluQXhpc3x8MCxjcm9zc0F4aXM6ZC5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpkLmFsaWdubWVudEF4aXN9O3JldHVybiBhJiYibnVtYmVyIj09dHlwZW9mIGcmJihwPSJlbmQiPT09YT8tMSpnOmcpLHM/e3g6cCp1LHk6ZipjfTp7eDpmKmMseTpwKnV9fSh0LGUpO3JldHVybiBsPT09KG51bGw9PShuPWEub2Zmc2V0KT92b2lkIDA6bi5wbGFjZW1lbnQpJiZudWxsIT0obz1hLmFycm93KSYmby5hbGlnbm1lbnRPZmZzZXQ/e306e3g6citzLngseTppK3MueSxkYXRhOnsuLi5zLHBsYWNlbWVudDpsfX19fX0sc2hpZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToic2hpZnQiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpvLHBsYWNlbWVudDpyLHBsYXRmb3JtOml9PXQse21haW5BeGlzOmw9ITAsY3Jvc3NBeGlzOmE9ITEsbGltaXRlcjpzPXtmbjplPT57bGV0e3g6dCx5Om59PWU7cmV0dXJue3g6dCx5Om59fX0sLi4uY309ZXZhbHVhdGUoZSx0KSx1PXt4Om4seTpvfSxkPWF3YWl0IGkuZGV0ZWN0T3ZlcmZsb3codCxjKSxmPWdldFNpZGVBeGlzKGdldFNpZGUocikpLHA9Z2V0T3Bwb3NpdGVBeGlzKGYpO2xldCBnPXVbcF0sbT11W2ZdO2lmKGwpe2NvbnN0IGU9InkiPT09cD8iYm90dG9tIjoicmlnaHQiO2c9Y2xhbXAoZytkWyJ5Ij09PXA/InRvcCI6ImxlZnQiXSxnLGctZFtlXSl9aWYoYSl7Y29uc3QgZT0ieSI9PT1mPyJib3R0b20iOiJyaWdodCI7bT1jbGFtcChtK2RbInkiPT09Zj8idG9wIjoibGVmdCJdLG0sbS1kW2VdKX1jb25zdCBoPXMuZm4oey4uLnQsW3BdOmcsW2ZdOm19KTtyZXR1cm57Li4uaCxkYXRhOnt4OmgueC1uLHk6aC55LW8sZW5hYmxlZDp7W3BdOmwsW2ZdOmF9fX19fX0sZmxpcD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJmbGlwIixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4sbztjb25zdHtwbGFjZW1lbnQ6cixtaWRkbGV3YXJlRGF0YTppLHJlY3RzOmwsaW5pdGlhbFBsYWNlbWVudDphLHBsYXRmb3JtOnMsZWxlbWVudHM6Y309dCx7bWFpbkF4aXM6dT0hMCxjcm9zc0F4aXM6ZD0hMCxmYWxsYmFja1BsYWNlbWVudHM6ZixmYWxsYmFja1N0cmF0ZWd5OnA9ImJlc3RGaXQiLGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246Zz0ibm9uZSIsZmxpcEFsaWdubWVudDptPSEwLC4uLmh9PWV2YWx1YXRlKGUsdCk7aWYobnVsbCE9KG49aS5hcnJvdykmJm4uYWxpZ25tZW50T2Zmc2V0KXJldHVybnt9O2NvbnN0IHk9Z2V0U2lkZShyKSx2PWdldFNpZGVBeGlzKGEpLHc9Z2V0U2lkZShhKT09PWEseD1hd2FpdChudWxsPT1zLmlzUlRMP3ZvaWQgMDpzLmlzUlRMKGMuZmxvYXRpbmcpKSxBPWZ8fCh3fHwhbT9bZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoYSldOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9Z2V0T3Bwb3NpdGVQbGFjZW1lbnQoZSk7cmV0dXJuW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KGUpLHQsZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQodCldfShhKSksYj0ibm9uZSIhPT1nOyFmJiZiJiZBLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhhLG0sZyx4KSk7Y29uc3QgUz1bYSwuLi5BXSxPPWF3YWl0IHMuZGV0ZWN0T3ZlcmZsb3codCxoKSxQPVtdO2xldCBDPShudWxsPT0obz1pLmZsaXApP3ZvaWQgMDpvLm92ZXJmbG93cyl8fFtdO2lmKHUmJlAucHVzaChPW3ldKSxkKXtjb25zdCBlPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0hMSk7Y29uc3Qgbz1nZXRBbGlnbm1lbnQoZSkscj1nZXRBbGlnbm1lbnRBeGlzKGUpLGk9Z2V0QXhpc0xlbmd0aChyKTtsZXQgbD0ieCI9PT1yP289PT0obj8iZW5kIjoic3RhcnQiKT8icmlnaHQiOiJsZWZ0Ijoic3RhcnQiPT09bz8iYm90dG9tIjoidG9wIjtyZXR1cm4gdC5yZWZlcmVuY2VbaV0+dC5mbG9hdGluZ1tpXSYmKGw9Z2V0T3Bwb3NpdGVQbGFjZW1lbnQobCkpLFtsLGdldE9wcG9zaXRlUGxhY2VtZW50KGwpXX0ocixsLHgpO1AucHVzaChPW2VbMF1dLE9bZVsxXV0pfWlmKEM9Wy4uLkMse3BsYWNlbWVudDpyLG92ZXJmbG93czpQfV0sIVAuZXZlcnkoZT0+ZTw9MCkpe3ZhciBSLEU7Y29uc3QgZT0oKG51bGw9PShSPWkuZmxpcCk/dm9pZCAwOlIuaW5kZXgpfHwwKSsxLHQ9U1tlXTtpZih0KXtpZighKCJhbGlnbm1lbnQiPT09ZCYmdiE9PWdldFNpZGVBeGlzKHQpKXx8Qy5ldmVyeShlPT5nZXRTaWRlQXhpcyhlLnBsYWNlbWVudCkhPT12fHxlLm92ZXJmbG93c1swXT4wKSlyZXR1cm57ZGF0YTp7aW5kZXg6ZSxvdmVyZmxvd3M6Q30scmVzZXQ6e3BsYWNlbWVudDp0fX19bGV0IG49bnVsbD09KEU9Qy5maWx0ZXIoZT0+ZS5vdmVyZmxvd3NbMF08PTApLnNvcnQoKGUsdCk9PmUub3ZlcmZsb3dzWzFdLXQub3ZlcmZsb3dzWzFdKVswXSk/dm9pZCAwOkUucGxhY2VtZW50O2lmKCFuKXN3aXRjaChwKXtjYXNlImJlc3RGaXQiOnt2YXIgQjtjb25zdCBlPW51bGw9PShCPUMuZmlsdGVyKGU9PntpZihiKXtjb25zdCB0PWdldFNpZGVBeGlzKGUucGxhY2VtZW50KTtyZXR1cm4gdD09PXZ8fCJ5Ij09PXR9cmV0dXJuITB9KS5tYXAoZT0+W2UucGxhY2VtZW50LGUub3ZlcmZsb3dzLmZpbHRlcihlPT5lPjApLnJlZHVjZSgoZSx0KT0+ZSt0LDApXSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKVswXSk/dm9pZCAwOkJbMF07ZSYmKG49ZSk7YnJlYWt9Y2FzZSJpbml0aWFsUGxhY2VtZW50IjpuPWF9aWYociE9PW4pcmV0dXJue3Jlc2V0OntwbGFjZW1lbnQ6bn19fXJldHVybnt9fX19LHNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToic2l6ZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLG87Y29uc3R7cGxhY2VtZW50OnIscmVjdHM6aSxwbGF0Zm9ybTpsLGVsZW1lbnRzOmF9PXQse2FwcGx5OnM9KCk9Pnt9LC4uLmN9PWV2YWx1YXRlKGUsdCksdT1hd2FpdCBsLmRldGVjdE92ZXJmbG93KHQsYyksZD1nZXRTaWRlKHIpLGY9Z2V0QWxpZ25tZW50KHIpLHA9InkiPT09Z2V0U2lkZUF4aXMocikse3dpZHRoOmcsaGVpZ2h0Onl9PWkuZmxvYXRpbmc7bGV0IHYsdzsidG9wIj09PWR8fCJib3R0b20iPT09ZD8odj1kLHc9Zj09PShhd2FpdChudWxsPT1sLmlzUlRMP3ZvaWQgMDpsLmlzUlRMKGEuZmxvYXRpbmcpKT8ic3RhcnQiOiJlbmQiKT8ibGVmdCI6InJpZ2h0Iik6KHc9ZCx2PSJlbmQiPT09Zj8idG9wIjoiYm90dG9tIik7Y29uc3QgeD15LXUudG9wLXUuYm90dG9tLEE9Zy11LmxlZnQtdS5yaWdodCxiPW0oeS11W3ZdLHgpLFM9bShnLXVbd10sQSksTz0hdC5taWRkbGV3YXJlRGF0YS5zaGlmdDtsZXQgUD1iLEM9UztpZihudWxsIT0obj10Lm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSYmbi5lbmFibGVkLngmJihDPUEpLG51bGwhPShvPXQubWlkZGxld2FyZURhdGEuc2hpZnQpJiZvLmVuYWJsZWQueSYmKFA9eCksTyYmIWYpe2NvbnN0IGU9aCh1LmxlZnQsMCksdD1oKHUucmlnaHQsMCksbj1oKHUudG9wLDApLG89aCh1LmJvdHRvbSwwKTtwP0M9Zy0yKigwIT09ZXx8MCE9PXQ/ZSt0OmgodS5sZWZ0LHUucmlnaHQpKTpQPXktMiooMCE9PW58fDAhPT1vP24rbzpoKHUudG9wLHUuYm90dG9tKSl9YXdhaXQgcyh7Li4udCxhdmFpbGFibGVXaWR0aDpDLGF2YWlsYWJsZUhlaWdodDpQfSk7Y29uc3QgUj1hd2FpdCBsLmdldERpbWVuc2lvbnMoYS5mbG9hdGluZyk7cmV0dXJuIGchPT1SLndpZHRofHx5IT09Ui5oZWlnaHQ/e3Jlc2V0OntyZWN0czohMH19Ont9fX19LGhpZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToiaGlkZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3JlY3RzOm4scGxhdGZvcm06b309dCx7c3RyYXRlZ3k6cj0icmVmZXJlbmNlSGlkZGVuIiwuLi5pfT1ldmFsdWF0ZShlLHQpO3N3aXRjaChyKXtjYXNlInJlZmVyZW5jZUhpZGRlbiI6e2NvbnN0IGU9Z2V0U2lkZU9mZnNldHMoYXdhaXQgby5kZXRlY3RPdmVyZmxvdyh0LHsuLi5pLGVsZW1lbnRDb250ZXh0OiJyZWZlcmVuY2UifSksbi5yZWZlcmVuY2UpO3JldHVybntkYXRhOntyZWZlcmVuY2VIaWRkZW5PZmZzZXRzOmUscmVmZXJlbmNlSGlkZGVuOmlzQW55U2lkZUZ1bGx5Q2xpcHBlZChlKX19fWNhc2UiZXNjYXBlZCI6e2NvbnN0IGU9Z2V0U2lkZU9mZnNldHMoYXdhaXQgby5kZXRlY3RPdmVyZmxvdyh0LHsuLi5pLGFsdEJvdW5kYXJ5OiEwfSksbi5mbG9hdGluZyk7cmV0dXJue2RhdGE6e2VzY2FwZWRPZmZzZXRzOmUsZXNjYXBlZDppc0FueVNpZGVGdWxseUNsaXBwZWQoZSl9fX1kZWZhdWx0OnJldHVybnt9fX19fSxhcnJvdyQxPWU9Pih7bmFtZToiYXJyb3ciLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpvLHBsYWNlbWVudDpyLHJlY3RzOmkscGxhdGZvcm06bCxlbGVtZW50czphLG1pZGRsZXdhcmVEYXRhOnN9PXQse2VsZW1lbnQ6YyxwYWRkaW5nOnU9MH09ZXZhbHVhdGUoZSx0KXx8e307aWYobnVsbD09YylyZXR1cm57fTtjb25zdCBkPWdldFBhZGRpbmdPYmplY3QodSksZj17eDpuLHk6b30scD1nZXRBbGlnbm1lbnRBeGlzKHIpLGc9Z2V0QXhpc0xlbmd0aChwKSxoPWF3YWl0IGwuZ2V0RGltZW5zaW9ucyhjKSx5PSJ5Ij09PXAsdj15PyJ0b3AiOiJsZWZ0Iix3PXk/ImJvdHRvbSI6InJpZ2h0Iix4PXk/ImNsaWVudEhlaWdodCI6ImNsaWVudFdpZHRoIixBPWkucmVmZXJlbmNlW2ddK2kucmVmZXJlbmNlW3BdLWZbcF0taS5mbG9hdGluZ1tnXSxiPWZbcF0taS5yZWZlcmVuY2VbcF0sUz1hd2FpdChudWxsPT1sLmdldE9mZnNldFBhcmVudD92b2lkIDA6bC5nZXRPZmZzZXRQYXJlbnQoYykpO2xldCBPPVM/U1t4XTowO08mJmF3YWl0KG51bGw9PWwuaXNFbGVtZW50P3ZvaWQgMDpsLmlzRWxlbWVudChTKSl8fChPPWEuZmxvYXRpbmdbeF18fGkuZmxvYXRpbmdbZ10pO2NvbnN0IFA9QS8yLWIvMixDPU8vMi1oW2ddLzItMSxSPW0oZFt2XSxDKSxFPW0oZFt3XSxDKSxCPVIsTD1PLWhbZ10tRSxOPU8vMi1oW2ddLzIrUCxUPWNsYW1wKEIsTixMKSxEPSFzLmFycm93JiZudWxsIT1nZXRBbGlnbm1lbnQocikmJk4hPT1UJiZpLnJlZmVyZW5jZVtnXS8yLShOPEI/UjpFKS1oW2ddLzI8MCxGPUQ/TjxCP04tQjpOLUw6MDtyZXR1cm57W3BdOmZbcF0rRixkYXRhOntbcF06VCxjZW50ZXJPZmZzZXQ6Ti1ULUYsLi4uRCYme2FsaWdubWVudE9mZnNldDpGfX0scmVzZXQ6RH19fSksbGltaXRTaGlmdD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtvcHRpb25zOmUsZm4odCl7Y29uc3R7eDpuLHk6byxwbGFjZW1lbnQ6cixyZWN0czppLG1pZGRsZXdhcmVEYXRhOmx9PXQse29mZnNldDphPTAsbWFpbkF4aXM6cz0hMCxjcm9zc0F4aXM6Yz0hMH09ZXZhbHVhdGUoZSx0KSx1PXt4Om4seTpvfSxkPWdldFNpZGVBeGlzKHIpLGY9Z2V0T3Bwb3NpdGVBeGlzKGQpO2xldCBwPXVbZl0sZz11W2RdO2NvbnN0IG09ZXZhbHVhdGUoYSx0KSxoPSJudW1iZXIiPT10eXBlb2YgbT97bWFpbkF4aXM6bSxjcm9zc0F4aXM6MH06e21haW5BeGlzOjAsY3Jvc3NBeGlzOjAsLi4ubX07aWYocyl7Y29uc3QgZT0ieSI9PT1mPyJoZWlnaHQiOiJ3aWR0aCIsdD1pLnJlZmVyZW5jZVtmXS1pLmZsb2F0aW5nW2VdK2gubWFpbkF4aXMsbj1pLnJlZmVyZW5jZVtmXStpLnJlZmVyZW5jZVtlXS1oLm1haW5BeGlzO3A8dD9wPXQ6cD5uJiYocD1uKX1pZihjKXt2YXIgeSx2O2NvbnN0IGU9InkiPT09Zj8id2lkdGgiOiJoZWlnaHQiLHQ9Ty5oYXMoZ2V0U2lkZShyKSksbj1pLnJlZmVyZW5jZVtkXS1pLmZsb2F0aW5nW2VdKyh0JiYobnVsbD09KHk9bC5vZmZzZXQpP3ZvaWQgMDp5W2RdKXx8MCkrKHQ/MDpoLmNyb3NzQXhpcyksbz1pLnJlZmVyZW5jZVtkXStpLnJlZmVyZW5jZVtlXSsodD8wOihudWxsPT0odj1sLm9mZnNldCk/dm9pZCAwOnZbZF0pfHwwKS0odD9oLmNyb3NzQXhpczowKTtnPG4/Zz1uOmc+byYmKGc9byl9cmV0dXJue1tmXTpwLFtkXTpnfX19fSxjb21wdXRlUG9zaXRpb249KGUsdCxuKT0+e2NvbnN0IG89bmV3IE1hcCxyPXtwbGF0Zm9ybTpCLC4uLm59LGk9ey4uLnIucGxhdGZvcm0sX2M6b307cmV0dXJuKGFzeW5jKGUsdCxuKT0+e2NvbnN0e3BsYWNlbWVudDpvPSJib3R0b20iLHN0cmF0ZWd5OnI9ImFic29sdXRlIixtaWRkbGV3YXJlOmk9W10scGxhdGZvcm06bH09bixhPWwuZGV0ZWN0T3ZlcmZsb3c/bDp7Li4ubCxkZXRlY3RPdmVyZmxvdzpkZXRlY3RPdmVyZmxvd30scz1hd2FpdChudWxsPT1sLmlzUlRMP3ZvaWQgMDpsLmlzUlRMKHQpKTtsZXQgYz1hd2FpdCBsLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dCxzdHJhdGVneTpyfSkse3g6dSx5OmR9PWNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KGMsbyxzKSxmPW8scD0wO2NvbnN0IGc9e307Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDtuKyspe2NvbnN0IG09aVtuXTtpZighbSljb250aW51ZTtjb25zdHtuYW1lOmgsZm46eX09bSx7eDp2LHk6dyxkYXRhOngscmVzZXQ6QX09YXdhaXQgeSh7eDp1LHk6ZCxpbml0aWFsUGxhY2VtZW50Om8scGxhY2VtZW50OmYsc3RyYXRlZ3k6cixtaWRkbGV3YXJlRGF0YTpnLHJlY3RzOmMscGxhdGZvcm06YSxlbGVtZW50czp7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dH19KTt1PW51bGwhPXY/djp1LGQ9bnVsbCE9dz93OmQsZ1toXT17Li4uZ1toXSwuLi54fSxBJiZwPDUwJiYocCsrLCJvYmplY3QiPT10eXBlb2YgQSYmKEEucGxhY2VtZW50JiYoZj1BLnBsYWNlbWVudCksQS5yZWN0cyYmKGM9ITA9PT1BLnJlY3RzP2F3YWl0IGwuZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5OnJ9KTpBLnJlY3RzKSwoe3g6dSx5OmR9PWNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KGMsZixzKSkpLG49LTEpfXJldHVybnt4OnUseTpkLHBsYWNlbWVudDpmLHN0cmF0ZWd5OnIsbWlkZGxld2FyZURhdGE6Z319KShlLHQsey4uLnIscGxhdGZvcm06aX0pfTtmdW5jdGlvbiB1bndyYXBFbGVtZW50KGUpe2lmKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiIkZWwiaW4gZX0oZSkpe2NvbnN0IHQ9ZS4kZWw7cmV0dXJuIHR9cmV0dXJuIGV9ZnVuY3Rpb24gdG9WYWx1ZSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KCk6ZS51bnJlZih0KX1mdW5jdGlvbiByb3VuZEJ5RFBSKGUsdCl7cmV0dXJuIE1hdGgucm91bmQoMSp0KS8xfWNvbnN0IEw9e3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDowLHNpZGVGbGlwOiEwLGFsaWduOiJjZW50ZXIiLGFsaWduT2Zmc2V0OjAsYWxpZ25GbGlwOiEwLGFycm93UGFkZGluZzowLGhpZGVTaGlmdGVkQXJyb3c6ITAsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OigpPT5bXSxjb2xsaXNpb25QYWRkaW5nOjAsc3RpY2t5OiJwYXJ0aWFsIixoaWRlV2hlbkRldGFjaGVkOiExLHBvc2l0aW9uU3RyYXRlZ3k6ImZpeGVkIix1cGRhdGVQb3NpdGlvblN0cmF0ZWd5OiJvcHRpbWl6ZWQiLHByaW9yaXRpemVQb3NpdGlvbjohMX0sW04sVF09cigiUG9wcGVyQ29udGVudCIpO3ZhciBEPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJQb3BwZXJDb250ZW50Iixwcm9wczplLm1lcmdlRGVmYXVsdHMoe3NpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uTH0pLGVtaXRzOlsicGxhY2VkIl0sc2V0dXAobyx7ZW1pdDpyfSl7Y29uc3QgbD1vLHM9cixjPWEoKSx7Zm9yd2FyZFJlZjp1LGN1cnJlbnRFbGVtZW50OmR9PXQoKSxmPWUucmVmKCkscD1lLnJlZigpLHt3aWR0aDpnLGhlaWdodDptfT1mdW5jdGlvbigpe2NvbnN0IHQ9ZS5yZWYoKTtyZXR1cm57d2lkdGg6ZS5jb21wdXRlZCgoKT0+dC52YWx1ZT8ud2lkdGg/PzApLGhlaWdodDplLmNvbXB1dGVkKCgpPT50LnZhbHVlPy5oZWlnaHQ/PzApfX0oKSxoPWUuY29tcHV0ZWQoKCk9Pmwuc2lkZSsoImNlbnRlciIhPT1sLmFsaWduP2AtJHtsLmFsaWdufWA6IiIpKSx5PWUuY29tcHV0ZWQoKCk9PiJudW1iZXIiPT10eXBlb2YgbC5jb2xsaXNpb25QYWRkaW5nP2wuY29sbGlzaW9uUGFkZGluZzp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjAsLi4ubC5jb2xsaXNpb25QYWRkaW5nfSksdj1lLmNvbXB1dGVkKCgpPT5BcnJheS5pc0FycmF5KGwuY29sbGlzaW9uQm91bmRhcnkpP2wuY29sbGlzaW9uQm91bmRhcnk6W2wuY29sbGlzaW9uQm91bmRhcnldKSx3PWUuY29tcHV0ZWQoKCk9Pih7cGFkZGluZzp5LnZhbHVlLGJvdW5kYXJ5OnYudmFsdWUuZmlsdGVyKGlzTm90TnVsbCksYWx0Qm91bmRhcnk6di52YWx1ZS5sZW5ndGg+MH0pKSx4PWUuY29tcHV0ZWQoKCk9Pih7bWFpbkF4aXM6bC5zaWRlRmxpcCxjcm9zc0F4aXM6bC5hbGlnbkZsaXB9KSksQT1pKCgpPT57cmV0dXJuW29mZnNldCh7bWFpbkF4aXM6bC5zaWRlT2Zmc2V0K20udmFsdWUsYWxpZ25tZW50QXhpczpsLmFsaWduT2Zmc2V0fSksbC5wcmlvcml0aXplUG9zaXRpb24mJmwuYXZvaWRDb2xsaXNpb25zJiZmbGlwKHsuLi53LnZhbHVlLC4uLngudmFsdWV9KSxsLmF2b2lkQ29sbGlzaW9ucyYmc2hpZnQoe21haW5BeGlzOiEwLGNyb3NzQXhpczohIWwucHJpb3JpdGl6ZVBvc2l0aW9uLGxpbWl0ZXI6InBhcnRpYWwiPT09bC5zdGlja3k/bGltaXRTaGlmdCgpOnZvaWQgMCwuLi53LnZhbHVlfSksIWwucHJpb3JpdGl6ZVBvc2l0aW9uJiZsLmF2b2lkQ29sbGlzaW9ucyYmZmxpcCh7Li4udy52YWx1ZSwuLi54LnZhbHVlfSksc2l6ZSh7Li4udy52YWx1ZSxhcHBseTooe2VsZW1lbnRzOmUscmVjdHM6dCxhdmFpbGFibGVXaWR0aDpuLGF2YWlsYWJsZUhlaWdodDpvfSk9Pntjb25zdHt3aWR0aDpyLGhlaWdodDppfT10LnJlZmVyZW5jZSxsPWUuZmxvYXRpbmcuc3R5bGU7bC5zZXRQcm9wZXJ0eSgiLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgiLGAke259cHhgKSxsLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQiLGAke299cHhgKSxsLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCIsYCR7cn1weGApLGwuc2V0UHJvcGVydHkoIi0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCIsYCR7aX1weGApfX0pLHAudmFsdWUmJihlPXtlbGVtZW50OnAudmFsdWUscGFkZGluZzpsLmFycm93UGFkZGluZ30se25hbWU6ImFycm93IixvcHRpb25zOmUsZm4odCl7Y29uc3Qgbj11bndyYXBFbGVtZW50KHRvVmFsdWUoZS5lbGVtZW50KSk7cmV0dXJuIG51bGw9PW4/e306YXJyb3ckMSh7ZWxlbWVudDpuLHBhZGRpbmc6ZS5wYWRkaW5nfSkuZm4odCl9fSksdHJhbnNmb3JtT3JpZ2luKHthcnJvd1dpZHRoOmcudmFsdWUsYXJyb3dIZWlnaHQ6bS52YWx1ZX0pLGwuaGlkZVdoZW5EZXRhY2hlZCYmaGlkZSh7c3RyYXRlZ3k6InJlZmVyZW5jZUhpZGRlbiIsLi4udy52YWx1ZX0pXTt2YXIgZX0pLGI9ZS5jb21wdXRlZCgoKT0+bC5yZWZlcmVuY2U/P2MuYW5jaG9yLnZhbHVlKSx7ZmxvYXRpbmdTdHlsZXM6UyxwbGFjZW1lbnQ6Tyxpc1Bvc2l0aW9uZWQ6UCxtaWRkbGV3YXJlRGF0YTpDfT1mdW5jdGlvbih0LG4sbyl7dm9pZCAwPT09byYmKG89e30pO2NvbnN0IHI9by53aGlsZUVsZW1lbnRzTW91bnRlZCxpPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4gbnVsbD09KGU9dG9WYWx1ZShvLm9wZW4pKXx8ZX0pLGw9ZS5jb21wdXRlZCgoKT0+dG9WYWx1ZShvLm1pZGRsZXdhcmUpKSxhPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dG9WYWx1ZShvLnBsYWNlbWVudCkpP2U6ImJvdHRvbSJ9KSxzPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dG9WYWx1ZShvLnN0cmF0ZWd5KSk/ZToiYWJzb2x1dGUifSksYz1lLmNvbXB1dGVkKCgpPT57dmFyIGU7cmV0dXJuIG51bGw9PShlPXRvVmFsdWUoby50cmFuc2Zvcm0pKXx8ZX0pLHU9ZS5jb21wdXRlZCgoKT0+dW53cmFwRWxlbWVudCh0LnZhbHVlKSksZD1lLmNvbXB1dGVkKCgpPT51bndyYXBFbGVtZW50KG4udmFsdWUpKSxmPWUucmVmKDApLHA9ZS5yZWYoMCksZz1lLnJlZihzLnZhbHVlKSxtPWUucmVmKGEudmFsdWUpLGg9ZS5zaGFsbG93UmVmKHt9KSx5PWUucmVmKCExKSx2PWUuY29tcHV0ZWQoKCk9Pntjb25zdCBlPXtwb3NpdGlvbjpnLnZhbHVlLGxlZnQ6IjAiLHRvcDoiMCJ9O2lmKCFkLnZhbHVlKXJldHVybiBlO2NvbnN0IHQ9cm91bmRCeURQUihkLnZhbHVlLGYudmFsdWUpLG49cm91bmRCeURQUihkLnZhbHVlLHAudmFsdWUpO3JldHVybiBjLnZhbHVlP3suLi5lLHRyYW5zZm9ybToidHJhbnNsYXRlKCIrdCsicHgsICIrbisicHgpIiwuLi4oZC52YWx1ZSwhMSl9Ontwb3NpdGlvbjpnLnZhbHVlLGxlZnQ6dCsicHgiLHRvcDpuKyJweCJ9fSk7bGV0IHc7ZnVuY3Rpb24gdXBkYXRlKCl7aWYobnVsbD09dS52YWx1ZXx8bnVsbD09ZC52YWx1ZSlyZXR1cm47Y29uc3QgZT1pLnZhbHVlO2NvbXB1dGVQb3NpdGlvbih1LnZhbHVlLGQudmFsdWUse21pZGRsZXdhcmU6bC52YWx1ZSxwbGFjZW1lbnQ6YS52YWx1ZSxzdHJhdGVneTpzLnZhbHVlfSkudGhlbih0PT57Zi52YWx1ZT10LngscC52YWx1ZT10LnksZy52YWx1ZT10LnN0cmF0ZWd5LG0udmFsdWU9dC5wbGFjZW1lbnQsaC52YWx1ZT10Lm1pZGRsZXdhcmVEYXRhLHkudmFsdWU9ITEhPT1lfSl9ZnVuY3Rpb24gY2xlYW51cCgpeyJmdW5jdGlvbiI9PXR5cGVvZiB3JiYodygpLHc9dm9pZCAwKX1yZXR1cm4gZS53YXRjaChbbCxhLHMsaV0sdXBkYXRlLHtmbHVzaDoic3luYyJ9KSxlLndhdGNoKFt1LGRdLGZ1bmN0aW9uKCl7Y2xlYW51cCgpLHZvaWQgMCE9PXI/bnVsbD09dS52YWx1ZXx8bnVsbD09ZC52YWx1ZXx8KHc9cih1LnZhbHVlLGQudmFsdWUsdXBkYXRlKSk6dXBkYXRlKCl9LHtmbHVzaDoic3luYyJ9KSxlLndhdGNoKGksZnVuY3Rpb24oKXtpLnZhbHVlfHwoeS52YWx1ZT0hMSl9LHtmbHVzaDoic3luYyJ9KSxlLmdldEN1cnJlbnRTY29wZSgpJiZlLm9uU2NvcGVEaXNwb3NlKGNsZWFudXApLHt4OmUuc2hhbGxvd1JlYWRvbmx5KGYpLHk6ZS5zaGFsbG93UmVhZG9ubHkocCksc3RyYXRlZ3k6ZS5zaGFsbG93UmVhZG9ubHkoZykscGxhY2VtZW50OmUuc2hhbGxvd1JlYWRvbmx5KG0pLG1pZGRsZXdhcmVEYXRhOmUuc2hhbGxvd1JlYWRvbmx5KGgpLGlzUG9zaXRpb25lZDplLnNoYWxsb3dSZWFkb25seSh5KSxmbG9hdGluZ1N0eWxlczp2LHVwZGF0ZTp1cGRhdGV9fShiLGYse3N0cmF0ZWd5OmwucG9zaXRpb25TdHJhdGVneSxwbGFjZW1lbnQ6aCx3aGlsZUVsZW1lbnRzTW91bnRlZDooLi4uZSk9PmF1dG9VcGRhdGUoLi4uZSx7bGF5b3V0U2hpZnQ6IWwuZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQsYW5pbWF0aW9uRnJhbWU6ImFsd2F5cyI9PT1sLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3l9KSxtaWRkbGV3YXJlOkF9KSxSPWUuY29tcHV0ZWQoKCk9PmdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQoTy52YWx1ZSlbMF0pLEU9ZS5jb21wdXRlZCgoKT0+Z2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChPLnZhbHVlKVsxXSk7ZS53YXRjaFBvc3RFZmZlY3QoKCk9PntQLnZhbHVlJiZzKCJwbGFjZWQiKX0pO2NvbnN0IEI9ZS5jb21wdXRlZCgoKT0+e2NvbnN0IGU9MCE9PUMudmFsdWUuYXJyb3c/LmNlbnRlck9mZnNldDtyZXR1cm4gbC5oaWRlU2hpZnRlZEFycm93JiZlfSksTD1lLnJlZigiIik7ZS53YXRjaEVmZmVjdCgoKT0+e2QudmFsdWUmJihMLnZhbHVlPSh2b2lkIDApLmdldENvbXB1dGVkU3R5bGUoZC52YWx1ZSkuekluZGV4KX0pO2NvbnN0IE49ZS5jb21wdXRlZCgoKT0+Qy52YWx1ZS5hcnJvdz8ueD8/MCksRD1lLmNvbXB1dGVkKCgpPT5DLnZhbHVlLmFycm93Py55Pz8wKTtyZXR1cm4gVCh7cGxhY2VkU2lkZTpSLG9uQXJyb3dDaGFuZ2U6ZT0+cC52YWx1ZT1lLGFycm93WDpOLGFycm93WTpELHNob3VsZEhpZGVBcnJvdzpCfSksKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJkaXYiLHtyZWZfa2V5OiJmbG9hdGluZ1JlZiIscmVmOmYsImRhdGEtcmVrYS1wb3BwZXItY29udGVudC13cmFwcGVyIjoiIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHsuLi5lLnVucmVmKFMpLHRyYW5zZm9ybTplLnVucmVmKFApP2UudW5yZWYoUykudHJhbnNmb3JtOiJ0cmFuc2xhdGUoMCwgLTIwMCUpIixtaW5XaWR0aDoibWF4LWNvbnRlbnQiLHpJbmRleDpMLnZhbHVlLCItLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4iOltlLnVucmVmKEMpLnRyYW5zZm9ybU9yaWdpbj8ueCxlLnVucmVmKEMpLnRyYW5zZm9ybU9yaWdpbj8ueV0uam9pbigiICIpLC4uLmUudW5yZWYoQykuaGlkZT8ucmVmZXJlbmNlSGlkZGVuJiZ7dmlzaWJpbGl0eToiaGlkZGVuIixwb2ludGVyRXZlbnRzOiJub25lIn19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihuKSxlLm1lcmdlUHJvcHMoe3JlZjplLnVucmVmKHUpfSx0LiRhdHRycyx7ImFzLWNoaWxkIjpsLmFzQ2hpbGQsYXM6dC5hcywiZGF0YS1zaWRlIjpSLnZhbHVlLCJkYXRhLWFsaWduIjpFLnZhbHVlLHN0eWxlOnthbmltYXRpb246ZS51bnJlZihQKT92b2lkIDA6Im5vbmUifX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzLWNoaWxkIiwiYXMiLCJkYXRhLXNpZGUiLCJkYXRhLWFsaWduIiwic3R5bGUiXSldLDQpKX19KTtjb25zdCBGPXt0b3A6ImJvdHRvbSIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCJ9O3ZhciBrPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJQb3BwZXJBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKG4pe2NvbnN0e2ZvcndhcmRSZWY6b309dCgpLHI9TigpLGk9ZS5jb21wdXRlZCgoKT0+RltyLnBsYWNlZFNpZGUudmFsdWVdKTtyZXR1cm4odCxuKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soInNwYW4iLHtyZWY6dD0+e2UudW5yZWYocikub25BcnJvd0NoYW5nZSh0Pz92b2lkIDApfSxzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6ZS51bnJlZihyKS5hcnJvd1g/LnZhbHVlP2Ake2UudW5yZWYocikuYXJyb3dYPy52YWx1ZX1weGA6dm9pZCAwLHRvcDplLnVucmVmKHIpLmFycm93WT8udmFsdWU/YCR7ZS51bnJlZihyKS5hcnJvd1k/LnZhbHVlfXB4YDp2b2lkIDAsW2kudmFsdWVdOjAsdHJhbnNmb3JtT3JpZ2luOnt0b3A6IiIscmlnaHQ6IjAgMCIsYm90dG9tOiJjZW50ZXIgMCIsbGVmdDoiMTAwJSAwIn1bZS51bnJlZihyKS5wbGFjZWRTaWRlLnZhbHVlXSx0cmFuc2Zvcm06e3RvcDoidHJhbnNsYXRlWSgxMDAlKSIscmlnaHQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoOTBkZWcpIHRyYW5zbGF0ZVgoLTUwJSkiLGJvdHRvbToicm90YXRlKDE4MGRlZykiLGxlZnQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSkifVtlLnVucmVmKHIpLnBsYWNlZFNpZGUudmFsdWVdLHZpc2liaWxpdHk6ZS51bnJlZihyKS5zaG91bGRIaWRlQXJyb3cudmFsdWU/ImhpZGRlbiI6dm9pZCAwfSl9LFtlLmNyZWF0ZVZOb2RlKHAsZS5tZXJnZVByb3BzKHQuJGF0dHJzLHtyZWY6ZS51bnJlZihvKSxzdHlsZTp7ZGlzcGxheToiYmxvY2sifSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLHJvdW5kZWQ6dC5yb3VuZGVkLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCIsInJvdW5kZWQiLCJ3aWR0aCIsImhlaWdodCJdKV0sNCkpfX0pO2V4cG9ydHt1IGFzIFAsayBhcyBhLGMgYXMgYix1c2VGb2N1c0d1YXJkcyBhcyBjLEQgYXMgZCxMIGFzIGUsZ2V0TmV4dE1hdGNoIGFzIGcsdXNlVHlwZWFoZWFkIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD1Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMubWFwCg==", "chunks/build/RovingFocusGroup-BraqCXH_.mjs": "aW1wb3J0e20gYXMgZSx2IGFzIHQsUyBhcyBvLE4gYXMgcixQIGFzIGF9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHt1IGFzIG59ZnJvbSIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydHtmIGFzIHUsRSBhcyBpLGEgYXMgbH1mcm9tIi4vdXRpbHMtREluN0VMWVYubWpzIjtjb25zdFtkLHNdPWUoIlJvdmluZ0ZvY3VzR3JvdXAiKTt2YXIgYz10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJSb3ZpbmdGb2N1c0dyb3VwIixwcm9wczp7b3JpZW50YXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sY3VycmVudFRhYlN0b3BJZDp7dHlwZTpbU3RyaW5nLG51bGxdLHJlcXVpcmVkOiExfSxkZWZhdWx0Q3VycmVudFRhYlN0b3BJZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVudHJ5Rm9jdXMiLCJ1cGRhdGU6Y3VycmVudFRhYlN0b3BJZCJdLHNldHVwKGUse2V4cG9zZTpkLGVtaXQ6Y30pe2NvbnN0IHA9ZSxmPWMse2xvb3A6dixvcmllbnRhdGlvbjptLGRpcjpTfT10LnRvUmVmcyhwKSxnPW4oUyksYj1vKHAsImN1cnJlbnRUYWJTdG9wSWQiLGYse2RlZmF1bHRWYWx1ZTpwLmRlZmF1bHRDdXJyZW50VGFiU3RvcElkLHBhc3NpdmU6dm9pZCAwPT09cC5jdXJyZW50VGFiU3RvcElkfSksaD10LnJlZighMSksST10LnJlZighMSkseT10LnJlZigwKSx7Z2V0SXRlbXM6RixDb2xsZWN0aW9uU2xvdDpUfT1yKHtpc1Byb3ZpZGVyOiEwfSk7ZnVuY3Rpb24gaGFuZGxlRm9jdXMoZSl7Y29uc3QgdD0hSS52YWx1ZTtpZihlLmN1cnJlbnRUYXJnZXQmJmUudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0JiZ0JiYhaC52YWx1ZSl7Y29uc3QgdD1uZXcgQ3VzdG9tRXZlbnQoaSxsKTtpZihlLmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudCh0KSxmKCJlbnRyeUZvY3VzIix0KSwhdC5kZWZhdWx0UHJldmVudGVkKXtjb25zdCBlPUYoKS5tYXAoZT0+ZS5yZWYpLmZpbHRlcihlPT4iIiE9PWUuZGF0YXNldC5kaXNhYmxlZCksdD1bZS5maW5kKGU9PiIiPT09ZS5nZXRBdHRyaWJ1dGUoImRhdGEtYWN0aXZlIikpLGUuZmluZChlPT4iIj09PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWhpZ2hsaWdodGVkIikpLGUuZmluZChlPT5lLmlkPT09Yi52YWx1ZSksLi4uZV0uZmlsdGVyKEJvb2xlYW4pO3UodCxwLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpfX1JLnZhbHVlPSExfWZ1bmN0aW9uIGhhbmRsZU1vdXNlVXAoKXtzZXRUaW1lb3V0KCgpPT57SS52YWx1ZT0hMX0sMSl9cmV0dXJuIGQoe2dldEl0ZW1zOkZ9KSxzKHtsb29wOnYsZGlyOmcsb3JpZW50YXRpb246bSxjdXJyZW50VGFiU3RvcElkOmIsb25JdGVtRm9jdXM6ZT0+e2IudmFsdWU9ZX0sb25JdGVtU2hpZnRUYWI6KCk9PntoLnZhbHVlPSEwfSxvbkZvY3VzYWJsZUl0ZW1BZGQ6KCk9Pnt5LnZhbHVlKyt9LG9uRm9jdXNhYmxlSXRlbVJlbW92ZTooKT0+e3kudmFsdWUtLX19KSwoZSxvKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKFQpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGEpLHt0YWJpbmRleDpoLnZhbHVlfHwwPT09eS52YWx1ZT8tMTowLCJkYXRhLW9yaWVudGF0aW9uIjp0LnVucmVmKG0pLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsZGlyOnQudW5yZWYoZyksc3R5bGU6e291dGxpbmU6Im5vbmUifSxvbk1vdXNlZG93bjpvWzBdfHwob1swXT1lPT5JLnZhbHVlPSEwKSxvbk1vdXNldXA6aGFuZGxlTW91c2VVcCxvbkZvY3VzOmhhbmRsZUZvY3VzLG9uQmx1cjpvWzFdfHwob1sxXT1lPT5oLnZhbHVlPSExKX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0YWJpbmRleCIsImRhdGEtb3JpZW50YXRpb24iLCJhcyIsImFzLWNoaWxkIiwiZGlyIl0pXSksXzozfSkpfX0pO2V4cG9ydHtjIGFzIFIsZCBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Um92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMubWFwCg==", "chunks/build/Select-DiailfUc.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHQsZSBhcyBhLEUgYXMgbCxGIGFzIGksRyBhcyByLEggYXMgbixxIGFzIG8scyx0IGFzIHUsSSBhcyBjLGIgYXMgZCxnIGFzIHAsSiBhcyBtLEsgYXMgZixMIGFzIGcsTSBhcyB2LE4gYXMgeSxQIGFzIGgsTyBhcyBTLFQgYXMgayxRIGFzIHgsUiBhcyBiLFMgYXMgSSxVIGFzIEIsbSBhcyBDLGwgYXMgTCxWIGFzIHcsVyBhcyBxLFggYXMgVixZIGFzIHosWiBhcyBffWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBUfWZyb20iLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnR7dSBhcyBOfWZyb20iLi91c2VGb3JtQ29udHJvbC1CTS1NZldtby5tanMiO2ltcG9ydHt1IGFzIEEsUCBhcyAkLGEgYXMgUCxiIGFzIEQsYyBhcyBLLGQgYXMgRX1mcm9tIi4vUG9wcGVyQXJyb3ctQkV5V1VKaVEubWpzIjtpbXBvcnR7dSBhcyBPLGEgYXMgUixiIGFzIEYsRiBhcyBXLEQgYXMgTSxmIGFzIGp9ZnJvbSIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0e2ggYXMgVX1mcm9tIi4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydHthRSBhcyBILGFYIGFzIEd9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt1IGFzIFl9ZnJvbSIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnR7ZiBhcyBYLGogYXMgSixnIGFzIFEsdCBhcyBaLHEgYXMgZWUsayBhcyB0ZX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2Z1bmN0aW9uIGNsYW1wKGUsdD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe3JldHVybiBNYXRoLm1pbihhLE1hdGgubWF4KHQsZSkpfWNvbnN0IGFlPVsiICIsIkVudGVyIiwiQXJyb3dVcCIsIkFycm93RG93biJdLGxlPVsiICIsIkVudGVyIl0saWU9MTA7ZnVuY3Rpb24gdmFsdWVDb21wYXJhdG9yKGUsdCxhKXtyZXR1cm4gdm9pZCAwIT09ZSYmKEFycmF5LmlzQXJyYXkoZSk/ZS5zb21lKGU9PmNvbXBhcmUoZSx0LGEpKTpjb21wYXJlKGUsdCxhKSl9ZnVuY3Rpb24gY29tcGFyZShlLHQsYSl7cmV0dXJuIHZvaWQgMCE9PWUmJnZvaWQgMCE9PXQmJigic3RyaW5nIj09dHlwZW9mIGU/ZT09PXQ6ImZ1bmN0aW9uIj09dHlwZW9mIGE/YShlLHQpOiJzdHJpbmciPT10eXBlb2YgYT9lPy5bYV09PT10Py5bYV06RyhlLHQpKX1mdW5jdGlvbiBzaG91bGRTaG93UGxhY2Vob2xkZXIoZSl7cmV0dXJuIG51bGw9PWV8fCIiPT09ZXx8QXJyYXkuaXNBcnJheShlKSYmMD09PWUubGVuZ3RofWNvbnN0IHJlPXtrZXk6MCx2YWx1ZToiIn0sW25lLG9lXT1DKCJTZWxlY3RSb290Iik7dmFyIHNlPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJTZWxlY3RSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm9wZW4iXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQsaT1hLHtyZXF1aXJlZDpyLGRpc2FibGVkOm4sbXVsdGlwbGU6byxkaXI6c309ZS50b1JlZnMobCksdT1JKGwsIm1vZGVsVmFsdWUiLGkse2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRWYWx1ZT8/KG8udmFsdWU/W106dm9pZCAwKSxwYXNzaXZlOnZvaWQgMD09PWwubW9kZWxWYWx1ZSxkZWVwOiEwfSksYz1JKGwsIm9wZW4iLGkse2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09bC5vcGVufSksZD1lLnJlZigpLHA9ZS5yZWYoKSxtPWUucmVmKHt4OjAseTowfSksZj1lLmNvbXB1dGVkKCgpPT5vLnZhbHVlJiZBcnJheS5pc0FycmF5KHUudmFsdWUpPzA9PT11LnZhbHVlPy5sZW5ndGg6Qih1LnZhbHVlKSk7eSh7aXNQcm92aWRlcjohMH0pO2NvbnN0IGc9VChzKSx2PU4oZCksaD1lLnJlZihuZXcgU2V0KSxTPWUuY29tcHV0ZWQoKCk9PkFycmF5LmZyb20oaC52YWx1ZSkubWFwKGU9PmUudmFsdWUpLmpvaW4oIjsiKSk7ZnVuY3Rpb24gZ2V0T3B0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKGgudmFsdWUpLmZpbmQodD0+dmFsdWVDb21wYXJhdG9yKGUsdC52YWx1ZSxsLmJ5KSl9cmV0dXJuIG9lKHt0cmlnZ2VyRWxlbWVudDpkLG9uVHJpZ2dlckNoYW5nZTplPT57ZC52YWx1ZT1lfSx2YWx1ZUVsZW1lbnQ6cCxvblZhbHVlRWxlbWVudENoYW5nZTplPT57cC52YWx1ZT1lfSxjb250ZW50SWQ6IiIsbW9kZWxWYWx1ZTp1LG9uVmFsdWVDaGFuZ2U6ZnVuY3Rpb24oZSl7aWYoby52YWx1ZSl7Y29uc3QgdD1BcnJheS5pc0FycmF5KHUudmFsdWUpP1suLi51LnZhbHVlXTpbXSxhPXQuZmluZEluZGV4KHQ9PmNvbXBhcmUodCxlLGwuYnkpKTstMT09PWE/dC5wdXNoKGUpOnQuc3BsaWNlKGEsMSksdS52YWx1ZT1bLi4udF19ZWxzZSB1LnZhbHVlPWV9LGJ5OmwuYnksb3BlbjpjLG11bHRpcGxlOm8scmVxdWlyZWQ6cixvbk9wZW5DaGFuZ2U6ZT0+e2MudmFsdWU9ZX0sZGlyOmcsdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOm0sZGlzYWJsZWQ6bixpc0VtcHR5TW9kZWxWYWx1ZTpmLG9wdGlvbnNTZXQ6aCxvbk9wdGlvbkFkZDplPT57Y29uc3QgdD1nZXRPcHRpb24oZS52YWx1ZSk7dCYmaC52YWx1ZS5kZWxldGUodCksaC52YWx1ZS5hZGQoZSl9LG9uT3B0aW9uUmVtb3ZlOmU9Pntjb25zdCB0PWdldE9wdGlvbihlLnZhbHVlKTt0JiZoLnZhbHVlLmRlbGV0ZSh0KX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEQpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKHUpLG9wZW46ZS51bnJlZihjKX0pLGUudW5yZWYodikmJnQubmFtZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHVlLHtrZXk6Uy52YWx1ZSwiYXJpYS1oaWRkZW4iOiJ0cnVlIix0YWJpbmRleDoiLTEiLG11bHRpcGxlOmUudW5yZWYobykscmVxdWlyZWQ6ZS51bnJlZihyKSxuYW1lOnQubmFtZSxhdXRvY29tcGxldGU6dC5hdXRvY29tcGxldGUsZGlzYWJsZWQ6ZS51bnJlZihuKSx2YWx1ZTplLnVucmVmKHUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKEIpKGUudW5yZWYodSkpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJvcHRpb24iLHJlKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoQXJyYXkuZnJvbShoLnZhbHVlKSx0PT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jaygib3B0aW9uIixlLm1lcmdlUHJvcHMoe2tleTp0LnZhbHVlPz8iIn0se3JlZl9mb3I6ITB9LHQpLG51bGwsMTYpKSksMTI4KSldKSxfOjF9LDgsWyJtdWx0aXBsZSIsInJlcXVpcmVkIiwibmFtZSIsImF1dG9jb21wbGV0ZSIsImRpc2FibGVkIiwidmFsdWUiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCldKSxfOjN9KSl9fSksdWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQnViYmxlU2VsZWN0Iixwcm9wczp7YXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcm06e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1lLnJlZigpLGk9bmUoKTtmdW5jdGlvbiBoYW5kbGVJbnB1dChlKXtpLm9uVmFsdWVDaGFuZ2UoZS50YXJnZXQudmFsdWUpfXJldHVybiBlLndhdGNoKCgpPT5hLnZhbHVlLChlLHQpPT57Y29uc3QgYT0odm9pZCAwKS5IVE1MU2VsZWN0RWxlbWVudC5wcm90b3R5cGUsaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsInZhbHVlIikuc2V0O2lmKGUhPT10JiZpJiZsLnZhbHVlKXtjb25zdCB0PW5ldyBFdmVudCgiY2hhbmdlIix7YnViYmxlczohMH0pO2kuY2FsbChsLnZhbHVlLGUpLGwudmFsdWUuZGlzcGF0Y2hFdmVudCh0KX19KSwodCxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHopLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZUVsZW1lbnRWTm9kZSgic2VsZWN0IixlLm1lcmdlUHJvcHMoe3JlZl9rZXk6InNlbGVjdEVsZW1lbnQiLHJlZjpsfSxhLHtvbklucHV0OmhhbmRsZUlucHV0fSksW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSwxNildKSxfOjN9KSl9fSksY2U9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0UG9wcGVyUG9zaXRpb24iLHByb3BzOntzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN0YXJ0In0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6aWV9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT1MKHQpO3JldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRSksZS5tZXJnZVByb3BzKGUudW5yZWYoYSkse3N0eWxlOntib3hTaXppbmc6ImJvcmRlci1ib3giLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbiI6InZhcigtLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pIiwiLS1yZWthLXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLXdpZHRoKSIsIi0tcmVrYS1zZWxlY3QtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3QgZGU9e29uVmlld3BvcnRDaGFuZ2U6KCk9Pnt9LGl0ZW1UZXh0UmVmQ2FsbGJhY2s6KCk9Pnt9LGl0ZW1SZWZDYWxsYmFjazooKT0+e319LFtwZSxtZV09QygiU2VsZWN0Q29udGVudCIpO3ZhciBmZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RDb250ZW50SW1wbCIscHJvcHM6e3Bvc2l0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJpdGVtLWFsaWduZWQifSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3RhcnQifSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJjbG9zZUF1dG9Gb2N1cyIsImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQsaT1hLHI9bmUoKTtLKCksUihsLmJvZHlMb2NrKTtjb25zdHtDb2xsZWN0aW9uU2xvdDpuLGdldEl0ZW1zOm99PXkoKSxzPWUucmVmKCk7RihzKTtjb25zdHtzZWFyY2g6dSxoYW5kbGVUeXBlYWhlYWRTZWFyY2g6Y309QSgpLGQ9ZS5yZWYoKSxwPWUucmVmKCksbT1lLnJlZigpLGY9ZS5yZWYoITEpLGc9ZS5yZWYoITEpLHY9ZS5yZWYoITEpO2Z1bmN0aW9uIGZvY3VzU2VsZWN0ZWRJdGVtKCl7cC52YWx1ZSYmcy52YWx1ZSYmaihbcC52YWx1ZSxzLnZhbHVlXSl9ZS53YXRjaChmLCgpPT57Zm9jdXNTZWxlY3RlZEl0ZW0oKX0pO2NvbnN0e29uT3BlbkNoYW5nZTpoLHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjpTfT1yO2Z1bmN0aW9uIGhhbmRsZUtleURvd24oZSl7Y29uc3QgdD1lLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXk7aWYoIlRhYiI9PT1lLmtleSYmZS5wcmV2ZW50RGVmYXVsdCgpLHR8fDEhPT1lLmtleS5sZW5ndGh8fGMoZS5rZXksbygpKSxbIkFycm93VXAiLCJBcnJvd0Rvd24iLCJIb21lIiwiRW5kIl0uaW5jbHVkZXMoZS5rZXkpKXtsZXQgdD1bLi4ubygpLm1hcChlPT5lLnJlZildO2lmKFsiQXJyb3dVcCIsIkVuZCJdLmluY2x1ZGVzKGUua2V5KSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSksWyJBcnJvd1VwIiwiQXJyb3dEb3duIl0uaW5jbHVkZXMoZS5rZXkpKXtjb25zdCBhPWUudGFyZ2V0LGw9dC5pbmRleE9mKGEpO3Q9dC5zbGljZShsKzEpfXNldFRpbWVvdXQoKCk9PmoodCkpLGUucHJldmVudERlZmF1bHQoKX19ZS53YXRjaEVmZmVjdChlPT57aWYoIXMudmFsdWUpcmV0dXJuO2xldCB0PXt4OjAseTowfTtjb25zdCBoYW5kbGVQb2ludGVyTW92ZT1lPT57dD17eDpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVgpLShTLnZhbHVlPy54Pz8wKSkseTpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVkpLShTLnZhbHVlPy55Pz8wKSl9fSxoYW5kbGVQb2ludGVyVXA9ZT0+eyJ0b3VjaCIhPT1lLnBvaW50ZXJUeXBlJiYodC54PD0xMCYmdC55PD0xMD9lLnByZXZlbnREZWZhdWx0KCk6cy52YWx1ZT8uY29udGFpbnMoZS50YXJnZXQpfHxoKCExKSwodm9pZCAwKS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUG9pbnRlck1vdmUpLFMudmFsdWU9bnVsbCl9O251bGwhPT1TLnZhbHVlJiYoKHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGhhbmRsZVBvaW50ZXJNb3ZlKSwodm9pZCAwKS5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLGhhbmRsZVBvaW50ZXJVcCx7Y2FwdHVyZTohMCxvbmNlOiEwfSkpLGUoKCk9Pnsodm9pZCAwKS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUG9pbnRlck1vdmUpLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsaGFuZGxlUG9pbnRlclVwLHtjYXB0dXJlOiEwfSl9KX0pO2NvbnN0IGs9ZS5jb21wdXRlZCgoKT0+InBvcHBlciI9PT1sLnBvc2l0aW9uP2w6e30pLHg9TChrLnZhbHVlKTtyZXR1cm4gbWUoe2NvbnRlbnQ6cyx2aWV3cG9ydDpkLG9uVmlld3BvcnRDaGFuZ2U6ZT0+e2QudmFsdWU9ZX0saXRlbVJlZkNhbGxiYWNrOihlLHQsYSk9Pntjb25zdCBsPSFnLnZhbHVlJiYhYSxpPXZhbHVlQ29tcGFyYXRvcihyLm1vZGVsVmFsdWUudmFsdWUsdCxyLmJ5KTtpZihyLm11bHRpcGxlLnZhbHVlKXtpZih2LnZhbHVlKXJldHVybjsoaXx8bCkmJihwLnZhbHVlPWUsaSYmKHYudmFsdWU9ITApKX1lbHNlKGl8fGwpJiYocC52YWx1ZT1lKTtsJiYoZy52YWx1ZT0hMCl9LHNlbGVjdGVkSXRlbTpwLHNlbGVjdGVkSXRlbVRleHQ6bSxvbkl0ZW1MZWF2ZTooKT0+e3MudmFsdWU/LmZvY3VzKCl9LGl0ZW1UZXh0UmVmQ2FsbGJhY2s6KGUsdCxhKT0+e2NvbnN0IGw9IWcudmFsdWUmJiFhOyh2YWx1ZUNvbXBhcmF0b3Ioci5tb2RlbFZhbHVlLnZhbHVlLHQsci5ieSl8fGwpJiYobS52YWx1ZT1lKX0sZm9jdXNTZWxlY3RlZEl0ZW06Zm9jdXNTZWxlY3RlZEl0ZW0scG9zaXRpb246bC5wb3NpdGlvbixpc1Bvc2l0aW9uZWQ6ZixzZWFyY2hSZWY6dX0pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobiksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVykseyJhcy1jaGlsZCI6IiIsb25Nb3VudEF1dG9Gb2N1czphWzZdfHwoYVs2XT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25Vbm1vdW50QXV0b0ZvY3VzOmFbN118fChhWzddPXQ9PntpKCJjbG9zZUF1dG9Gb2N1cyIsdCksdC5kZWZhdWx0UHJldmVudGVkfHwoZS51bnJlZihyKS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSx0LnByZXZlbnREZWZhdWx0KCkpfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihNKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0LmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkZvY3VzT3V0c2lkZTphWzJdfHwoYVsyXT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25EaXNtaXNzOmFbM118fChhWzNdPXQ9PmUudW5yZWYocikub25PcGVuQ2hhbmdlKCExKSksb25Fc2NhcGVLZXlEb3duOmFbNF18fChhWzRdPWU9PmkoImVzY2FwZUtleURvd24iLGUpKSxvblBvaW50ZXJEb3duT3V0c2lkZTphWzVdfHwoYVs1XT1lPT5pKCJwb2ludGVyRG93bk91dHNpZGUiLGUpKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KCJwb3BwZXIiPT09dC5wb3NpdGlvbj9jZTp5ZSksZS5tZXJnZVByb3BzKHsuLi50LiRhdHRycywuLi5lLnVucmVmKHgpfSx7aWQ6ZS51bnJlZihyKS5jb250ZW50SWQscmVmOnQ9PntpZighdClyZXR1cm47Y29uc3QgYT1lLnVucmVmKHcpKHQpO2E/Lmhhc0F0dHJpYnV0ZSgiZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXIiKT9zLnZhbHVlPWEuZmlyc3RFbGVtZW50Q2hpbGQ6cy52YWx1ZT1hfSxyb2xlOiJsaXN0Ym94IiwiZGF0YS1zdGF0ZSI6ZS51bnJlZihyKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixkaXI6ZS51bnJlZihyKS5kaXIudmFsdWUsc3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsb3V0bGluZToibm9uZSJ9LG9uQ29udGV4dG1lbnU6YVswXXx8KGFbMF09ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiXSkpLG9uUGxhY2VkOmFbMV18fChhWzFdPWU9PmYudmFsdWU9ITApLG9uS2V5ZG93bjpoYW5kbGVLZXlEb3dufSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJkYXRhLXN0YXRlIiwiZGlyIiwib25LZXlkb3duIl0pKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30pXSksXzozfSkpfX0pO2NvbnN0W2dlLHZlXT1DKCJTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIik7dmFyIHllPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJwbGFjZWQiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQsaT1hLHtnZXRJdGVtczpyfT15KCksbj1uZSgpLG89cGUoKSxzPWUucmVmKCExKSx1PWUucmVmKCEwKSxjPWUucmVmKCkse2ZvcndhcmRSZWY6ZCxjdXJyZW50RWxlbWVudDpwfT12KCkse3ZpZXdwb3J0Om0sc2VsZWN0ZWRJdGVtOmYsc2VsZWN0ZWRJdGVtVGV4dDpnLGZvY3VzU2VsZWN0ZWRJdGVtOlN9PW87ZnVuY3Rpb24gcG9zaXRpb24oKXtpZihuLnRyaWdnZXJFbGVtZW50LnZhbHVlJiZuLnZhbHVlRWxlbWVudC52YWx1ZSYmYy52YWx1ZSYmcC52YWx1ZSYmbT8udmFsdWUmJmY/LnZhbHVlJiZnPy52YWx1ZSl7Y29uc3QgZT1uLnRyaWdnZXJFbGVtZW50LnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9cC52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPW4udmFsdWVFbGVtZW50LnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9Zy52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZigicnRsIiE9PW4uZGlyLnZhbHVlKXtjb25zdCBpPWwubGVmdC10LmxlZnQscj1hLmxlZnQtaSxuPWUubGVmdC1yLG89ZS53aWR0aCtuLHM9TWF0aC5tYXgobyx0LndpZHRoKSx1PSh2b2lkIDApLmlubmVyV2lkdGgtaWUsZD1jbGFtcChyLGllLE1hdGgubWF4KGllLHUtcykpO2MudmFsdWUuc3R5bGUubWluV2lkdGg9YCR7b31weGAsYy52YWx1ZS5zdHlsZS5sZWZ0PWAke2R9cHhgfWVsc2V7Y29uc3QgaT10LnJpZ2h0LWwucmlnaHQscj0odm9pZCAwKS5pbm5lcldpZHRoLWEucmlnaHQtaSxuPSh2b2lkIDApLmlubmVyV2lkdGgtZS5yaWdodC1yLG89ZS53aWR0aCtuLHM9TWF0aC5tYXgobyx0LndpZHRoKSx1PSh2b2lkIDApLmlubmVyV2lkdGgtaWUsZD1jbGFtcChyLGllLE1hdGgubWF4KGllLHUtcykpO2MudmFsdWUuc3R5bGUubWluV2lkdGg9YCR7b31weGAsYy52YWx1ZS5zdHlsZS5yaWdodD1gJHtkfXB4YH1jb25zdCBvPXIoKS5tYXAoZT0+ZS5yZWYpLHU9KHZvaWQgMCkuaW5uZXJIZWlnaHQtMjAsZD1tLnZhbHVlLnNjcm9sbEhlaWdodCx2PSh2b2lkIDApLmdldENvbXB1dGVkU3R5bGUocC52YWx1ZSkseT1OdW1iZXIucGFyc2VJbnQodi5ib3JkZXJUb3BXaWR0aCwxMCksaD1OdW1iZXIucGFyc2VJbnQodi5wYWRkaW5nVG9wLDEwKSxTPU51bWJlci5wYXJzZUludCh2LmJvcmRlckJvdHRvbVdpZHRoLDEwKSxrPXkraCtkK051bWJlci5wYXJzZUludCh2LnBhZGRpbmdCb3R0b20sMTApK1MseD1NYXRoLm1pbig1KmYudmFsdWUub2Zmc2V0SGVpZ2h0LGspLGI9KHZvaWQgMCkuZ2V0Q29tcHV0ZWRTdHlsZShtLnZhbHVlKSxJPU51bWJlci5wYXJzZUludChiLnBhZGRpbmdUb3AsMTApLEI9TnVtYmVyLnBhcnNlSW50KGIucGFkZGluZ0JvdHRvbSwxMCksQz1lLnRvcCtlLmhlaWdodC8yLWllLEw9dS1DLHc9Zi52YWx1ZS5vZmZzZXRIZWlnaHQvMixxPXkraCsoZi52YWx1ZS5vZmZzZXRUb3ArdyksVj1rLXE7aWYocTw9Qyl7Y29uc3QgZT1mLnZhbHVlPT09by5hdCgtMSk7Yy52YWx1ZS5zdHlsZS5ib3R0b209IjBweCI7Y29uc3QgdD1wLnZhbHVlLmNsaWVudEhlaWdodC1tLnZhbHVlLm9mZnNldFRvcC1tLnZhbHVlLm9mZnNldEhlaWdodCxhPXErTWF0aC5tYXgoTCx3KyhlP0I6MCkrdCtTKTtjLnZhbHVlLnN0eWxlLmhlaWdodD1gJHthfXB4YH1lbHNle2NvbnN0IGU9Zi52YWx1ZT09PW9bMF07Yy52YWx1ZS5zdHlsZS50b3A9IjBweCI7Y29uc3QgdD1NYXRoLm1heChDLHkrbS52YWx1ZS5vZmZzZXRUb3ArKGU/STowKSt3KStWO2MudmFsdWUuc3R5bGUuaGVpZ2h0PWAke3R9cHhgLG0udmFsdWUuc2Nyb2xsVG9wPXEtQyttLnZhbHVlLm9mZnNldFRvcH1jLnZhbHVlLnN0eWxlLm1hcmdpbj0iMTBweCAwIixjLnZhbHVlLnN0eWxlLm1pbkhlaWdodD1gJHt4fXB4YCxjLnZhbHVlLnN0eWxlLm1heEhlaWdodD1gJHt1fXB4YCxpKCJwbGFjZWQiKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnMudmFsdWU9ITApfX1jb25zdCBrPWUucmVmKCIiKTtyZXR1cm4gXyhuLnRyaWdnZXJFbGVtZW50LCgpPT57cG9zaXRpb24oKX0pLHZlKHtjb250ZW50V3JhcHBlcjpjLHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOnMsb25TY3JvbGxCdXR0b25DaGFuZ2U6ZnVuY3Rpb24oZSl7ZSYmITA9PT11LnZhbHVlJiYocG9zaXRpb24oKSxTPy4oKSx1LnZhbHVlPSExKX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soImRpdiIse3JlZl9rZXk6ImNvbnRlbnRXcmFwcGVyRWxlbWVudCIscmVmOmMsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixwb3NpdGlvbjoiZml4ZWQiLHpJbmRleDprLnZhbHVlfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoaCksZS5tZXJnZVByb3BzKHtyZWY6ZS51bnJlZihkKSxzdHlsZTp7Ym94U2l6aW5nOiJib3JkZXItYm94IixtYXhIZWlnaHQ6IjEwMCUifX0sey4uLnQuJGF0dHJzLC4uLmx9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpXSw0KSl9fSksaGU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0QXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1wZShkZSk7cmV0dXJuKHQsaSk9PiJwb3BwZXIiPT09ZS51bnJlZihsKS5wb3NpdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUCksZS5ub3JtYWxpemVQcm9wcyhlLm1lcmdlUHJvcHMoe2tleTowfSxhKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxTZT1lLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0UHJvdmlkZXIiLHByb3BzOntjb250ZXh0Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMH19LHNldHVwOnQ9PihvZSh0LmNvbnRleHQpLG1lKGRlKSwodCxhKT0+ZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IikpfSk7Y29uc3Qga2U9e2tleToxfTt2YXIgeGU9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlNlbGVjdENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYm9keUxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImNsb3NlQXV0b0ZvY3VzIiwiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGk9dCxyPWwoaSxhKSxuPW5lKCksbz1lLnJlZigpLHM9ZS5yZWYoKSx1PWUuY29tcHV0ZWQoKCk9PmkuZm9yY2VNb3VudHx8bi5vcGVuLnZhbHVlKSxjPWUucmVmKHUudmFsdWUpO3JldHVybiBlLndhdGNoKHUsKCk9PntzZXRUaW1lb3V0KCgpPT5jLnZhbHVlPXUudmFsdWUpfSksKHQsYSk9PnUudmFsdWV8fGMudmFsdWV8fHMudmFsdWU/LnByZXNlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHgpLHtrZXk6MCxyZWZfa2V5OiJwcmVzZW5jZVJlZiIscmVmOnMscHJlc2VudDp1LnZhbHVlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGZlLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoey4uLmUudW5yZWYociksLi4udC4kYXR0cnN9KSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KV0pLF86M30sOCxbInByZXNlbnQiXSkpOm8udmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soImRpdiIsa2UsWyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5UZWxlcG9ydCx7dG86by52YWx1ZX0sW2UuY3JlYXRlVk5vZGUoU2Use2NvbnRleHQ6ZS51bnJlZihuKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJjb250ZXh0Il0pXSw4LFsidG8iXSkpXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCl9fSk7Y29uc3RbYmUsSWVdPUMoIlNlbGVjdEdyb3VwIik7dmFyIEJlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlNlbGVjdEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LGw9Tyh2b2lkIDAsInJla2Etc2VsZWN0LWdyb3VwIik7cmV0dXJuIEllKHtpZDpsfSksKHQsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe3JvbGU6Imdyb3VwIn0sYSx7ImFyaWEtbGFiZWxsZWRieSI6ZS51bnJlZihsKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFyaWEtbGFiZWxsZWRieSJdKSl9fSk7Y29uc3RbQ2UsTGVdPUMoIlNlbGVjdEl0ZW0iKTt2YXIgd2U9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3QgbD10LGk9YSx7ZGlzYWJsZWQ6cn09ZS50b1JlZnMobCksbj1uZSgpLG89cGUoKSx7Zm9yd2FyZFJlZjpzfT12KCkse0NvbGxlY3Rpb25JdGVtOnV9PXkoKSxjPWUuY29tcHV0ZWQoKCk9PnZhbHVlQ29tcGFyYXRvcihuLm1vZGVsVmFsdWU/LnZhbHVlLGwudmFsdWUsbi5ieSkpLGQ9ZS5yZWYoITEpLHA9ZS5yZWYobC50ZXh0VmFsdWU/PyIiKSxtPU8odm9pZCAwLCJyZWthLXNlbGVjdC1pdGVtLXRleHQiKTthc3luYyBmdW5jdGlvbiBoYW5kbGVTZWxlY3RDdXN0b21FdmVudChlKXtpZihlLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IHQ9e29yaWdpbmFsRXZlbnQ6ZSx2YWx1ZTpsLnZhbHVlfTtVKCJzZWxlY3Quc2VsZWN0IixoYW5kbGVTZWxlY3QsdCl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2VsZWN0KHQpe2F3YWl0IGUubmV4dFRpY2soKSxpKCJzZWxlY3QiLHQpLHQuZGVmYXVsdFByZXZlbnRlZHx8ci52YWx1ZXx8KG4ub25WYWx1ZUNoYW5nZShsLnZhbHVlKSxuLm11bHRpcGxlLnZhbHVlfHxuLm9uT3BlbkNoYW5nZSghMSkpfWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJNb3ZlKHQpe2F3YWl0IGUubmV4dFRpY2soKSx0LmRlZmF1bHRQcmV2ZW50ZWR8fChyLnZhbHVlP28ub25JdGVtTGVhdmU/LigpOnQuY3VycmVudFRhcmdldD8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlUG9pbnRlckxlYXZlKHQpe2F3YWl0IGUubmV4dFRpY2soKSx0LmRlZmF1bHRQcmV2ZW50ZWR8fHQuY3VycmVudFRhcmdldD09PVYoKSYmby5vbkl0ZW1MZWF2ZT8uKCl9YXN5bmMgZnVuY3Rpb24gaGFuZGxlS2V5RG93bih0KXtpZihhd2FpdCBlLm5leHRUaWNrKCksdC5kZWZhdWx0UHJldmVudGVkKXJldHVybjsiIiE9PW8uc2VhcmNoUmVmPy52YWx1ZSYmIiAiPT09dC5rZXl8fChsZS5pbmNsdWRlcyh0LmtleSkmJmhhbmRsZVNlbGVjdEN1c3RvbUV2ZW50KHQpLCIgIj09PXQua2V5JiZ0LnByZXZlbnREZWZhdWx0KCkpfWlmKCIiPT09bC52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoIkEgPFNlbGVjdEl0ZW0gLz4gbXVzdCBoYXZlIGEgdmFsdWUgcHJvcCB0aGF0IGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcuIFRoaXMgaXMgYmVjYXVzZSB0aGUgU2VsZWN0IHZhbHVlIGNhbiBiZSBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBzZWxlY3Rpb24gYW5kIHNob3cgdGhlIHBsYWNlaG9sZGVyLiIpO3JldHVybiBMZSh7dmFsdWU6bC52YWx1ZSxkaXNhYmxlZDpyLHRleHRJZDptLGlzU2VsZWN0ZWQ6Yyxvbkl0ZW1UZXh0Q2hhbmdlOmU9PntwLnZhbHVlPSgocC52YWx1ZXx8ZT8udGV4dENvbnRlbnQpPz8iIikudHJpbSgpfX0pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodSkse3ZhbHVlOnt0ZXh0VmFsdWU6cC52YWx1ZX19LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihoKSx7cmVmOmUudW5yZWYocykscm9sZToib3B0aW9uIiwiYXJpYS1sYWJlbGxlZGJ5IjplLnVucmVmKG0pLCJkYXRhLWhpZ2hsaWdodGVkIjpkLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1zZWxlY3RlZCI6Yy52YWx1ZSwiZGF0YS1zdGF0ZSI6Yy52YWx1ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCIsImFyaWEtZGlzYWJsZWQiOmUudW5yZWYocil8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihyKT8iIjp2b2lkIDAsdGFiaW5kZXg6ZS51bnJlZihyKT92b2lkIDA6LTEsYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCxvbkZvY3VzOmFbMF18fChhWzBdPWU9PmQudmFsdWU9ITApLG9uQmx1cjphWzFdfHwoYVsxXT1lPT5kLnZhbHVlPSExKSxvblBvaW50ZXJ1cDpoYW5kbGVTZWxlY3RDdXN0b21FdmVudCxvblBvaW50ZXJkb3duOmFbMl18fChhWzJdPWU9PntlLmN1cnJlbnRUYXJnZXQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0pLG9uVG91Y2hlbmQ6YVszXXx8KGFbM109ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiLCJzdG9wIl0pKSxvblBvaW50ZXJtb3ZlOmhhbmRsZVBvaW50ZXJNb3ZlLG9uUG9pbnRlcmxlYXZlOmhhbmRsZVBvaW50ZXJMZWF2ZSxvbktleWRvd246aGFuZGxlS2V5RG93bn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLWhpZ2hsaWdodGVkIiwiYXJpYS1zZWxlY3RlZCIsImRhdGEtc3RhdGUiLCJhcmlhLWRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsInRhYmluZGV4IiwiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxxZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RJdGVtSW5kaWNhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgYT10LGw9Q2UoKTtyZXR1cm4odCxpKT0+ZS51bnJlZihsKS5pc1NlbGVjdGVkLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe2tleTowLCJhcmlhLWhpZGRlbiI6InRydWUifSxhKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pLFZlPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJTZWxlY3RJdGVtVGV4dCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKHQpe2NvbnN0IGE9dDtuZSgpLHBlKCk7Y29uc3QgbD1DZSgpLHtmb3J3YXJkUmVmOmksY3VycmVudEVsZW1lbnQ6cn09digpO3JldHVybiBlLmNvbXB1dGVkKCgpPT4oe3ZhbHVlOmwudmFsdWUsZGlzYWJsZWQ6bC5kaXNhYmxlZC52YWx1ZSx0ZXh0Q29udGVudDpyLnZhbHVlPy50ZXh0Q29udGVudD8/bC52YWx1ZT8udG9TdHJpbmcoKT8/IiJ9KSksKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe2lkOmUudW5yZWYobCkudGV4dElkLHJlZjplLnVucmVmKGkpfSx7Li4uYSwuLi50LiRhdHRyc30pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSx6ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAodCl7Y29uc3QgYT10LGw9YmUoe2lkOiIifSk7cmV0dXJuKHQsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoYSx7aWQ6ZS51bnJlZihsKS5pZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxfZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrKSxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKGEpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxUZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RTZXBhcmF0b3IiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoeyJhcmlhLWhpZGRlbiI6InRydWUifSxhKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxOZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTZWxlY3RUcmlnZ2VyIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAodCl7Y29uc3QgYT10LGw9bmUoKSx7Zm9yd2FyZFJlZjppfT12KCkscj1lLmNvbXB1dGVkKCgpPT5sLmRpc2FibGVkPy52YWx1ZXx8YS5kaXNhYmxlZCk7bC5jb250ZW50SWR8fD1PKHZvaWQgMCwicmVrYS1zZWxlY3QtY29udGVudCIpO2NvbnN0e2dldEl0ZW1zOm59PXkoKSx7c2VhcmNoOm8saGFuZGxlVHlwZWFoZWFkU2VhcmNoOnMscmVzZXRUeXBlYWhlYWQ6dX09QSgpO2Z1bmN0aW9uIGhhbmRsZU9wZW4oKXtyLnZhbHVlfHwobC5vbk9wZW5DaGFuZ2UoITApLHUoKSl9ZnVuY3Rpb24gaGFuZGxlUG9pbnRlck9wZW4oZSl7aGFuZGxlT3BlbigpLGwudHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLnZhbHVlPXt4Ok1hdGgucm91bmQoZS5wYWdlWCkseTpNYXRoLnJvdW5kKGUucGFnZVkpfX1yZXR1cm4odCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKCQpLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTp0LnJlZmVyZW5jZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGgpLHtyZWY6ZS51bnJlZihpKSxyb2xlOiJjb21ib2JveCIsdHlwZToiYnV0dG9uIj09PXQuYXM/ImJ1dHRvbiI6dm9pZCAwLCJhcmlhLWNvbnRyb2xzIjplLnVucmVmKGwpLmNvbnRlbnRJZCwiYXJpYS1leHBhbmRlZCI6ZS51bnJlZihsKS5vcGVuLnZhbHVlfHwhMSwiYXJpYS1yZXF1aXJlZCI6ZS51bnJlZihsKS5yZXF1aXJlZD8udmFsdWUsImFyaWEtYXV0b2NvbXBsZXRlIjoibm9uZSIsZGlzYWJsZWQ6ci52YWx1ZSxkaXI6ZS51bnJlZihsKT8uZGlyLnZhbHVlLCJkYXRhLXN0YXRlIjplLnVucmVmKGwpPy5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ci52YWx1ZT8iIjp2b2lkIDAsImRhdGEtcGxhY2Vob2xkZXIiOmUudW5yZWYoc2hvdWxkU2hvd1BsYWNlaG9sZGVyKShlLnVucmVmKGwpLm1vZGVsVmFsdWU/LnZhbHVlKT8iIjp2b2lkIDAsImFzLWNoaWxkIjp0LmFzQ2hpbGQsYXM6dC5hcyxvbkNsaWNrOmFbMF18fChhWzBdPWU9PntlPy5jdXJyZW50VGFyZ2V0Py5mb2N1cygpfSksb25Qb2ludGVyZG93bjphWzFdfHwoYVsxXT1lPT57aWYoInRvdWNoIj09PWUucG9pbnRlclR5cGUpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKTtjb25zdCB0PWUudGFyZ2V0O3QuaGFzUG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpJiZ0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCksMD09PWUuYnV0dG9uJiYhMT09PWUuY3RybEtleSYmKGhhbmRsZVBvaW50ZXJPcGVuKGUpLGUucHJldmVudERlZmF1bHQoKSl9KSxvblBvaW50ZXJ1cDphWzJdfHwoYVsyXT1lLndpdGhNb2RpZmllcnMoZT0+eyJ0b3VjaCI9PT1lLnBvaW50ZXJUeXBlJiZoYW5kbGVQb2ludGVyT3BlbihlKX0sWyJwcmV2ZW50Il0pKSxvbktleWRvd246YVszXXx8KGFbM109dD0+e2NvbnN0IGE9IiIhPT1lLnVucmVmKG8pOyEodC5jdHJsS2V5fHx0LmFsdEtleXx8dC5tZXRhS2V5KSYmMT09PXQua2V5Lmxlbmd0aCYmYSYmIiAiPT09dC5rZXl8fChlLnVucmVmKHMpKHQua2V5LGUudW5yZWYobikoKSksZS51bnJlZihhZSkuaW5jbHVkZXModC5rZXkpJiYoaGFuZGxlT3BlbigpLHQucHJldmVudERlZmF1bHQoKSkpfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidHlwZSIsImFyaWEtY29udHJvbHMiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1yZXF1aXJlZCIsImRpc2FibGVkIiwiZGlyIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLXBsYWNlaG9sZGVyIiwiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30sOCxbInJlZmVyZW5jZSJdKSl9fSksQWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0VmFsdWUiLHByb3BzOntwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiIn0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgYT10LHtmb3J3YXJkUmVmOmx9PXYoKSxpPW5lKCkscj1lLmNvbXB1dGVkKCgpPT57bGV0IGU9W107Y29uc3QgdD1BcnJheS5mcm9tKGkub3B0aW9uc1NldC52YWx1ZSksZ2V0T3B0aW9uPWU9PnQuZmluZCh0PT52YWx1ZUNvbXBhcmF0b3IoZSx0LnZhbHVlLGkuYnkpKTtyZXR1cm4gZT1BcnJheS5pc0FycmF5KGkubW9kZWxWYWx1ZS52YWx1ZSk/aS5tb2RlbFZhbHVlLnZhbHVlLm1hcChlPT5nZXRPcHRpb24oZSk/LnRleHRDb250ZW50Pz8iIik6W2dldE9wdGlvbihpLm1vZGVsVmFsdWUudmFsdWUpPy50ZXh0Q29udGVudD8/IiJdLGUuZmlsdGVyKEJvb2xlYW4pfSksbj1lLmNvbXB1dGVkKCgpPT5yLnZhbHVlLmxlbmd0aD9yLnZhbHVlLmpvaW4oIiwgIik6YS5wbGFjZWhvbGRlcik7cmV0dXJuKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoKSx7cmVmOmUudW5yZWYobCksYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCxzdHlsZTp7cG9pbnRlckV2ZW50czoibm9uZSJ9LCJkYXRhLXBsYWNlaG9sZGVyIjpyLnZhbHVlLmxlbmd0aD92b2lkIDA6YS5wbGFjZWhvbGRlcn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7c2VsZWN0ZWRMYWJlbDpyLnZhbHVlLG1vZGVsVmFsdWU6ZS51bnJlZihpKS5tb2RlbFZhbHVlLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKG4udmFsdWUpLDEpXSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1wbGFjZWhvbGRlciJdKSl9fSksJGU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZWN0Vmlld3BvcnQiLHByb3BzOntub25jZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGE9dCx7bm9uY2U6bH09ZS50b1JlZnMoYSksaT1mdW5jdGlvbih0KXtjb25zdCBhPXEoe25vbmNlOmUucmVmKCl9KTtyZXR1cm4gZS5jb21wdXRlZCgoKT0+dD8udmFsdWV8fGEubm9uY2U/LnZhbHVlKX0obCkscj0iaXRlbS1hbGlnbmVkIj09PXBlKCkucG9zaXRpb24/Z2UoKTp2b2lkIDAse2ZvcndhcmRSZWY6bn09digpLG89ZS5yZWYoMCk7ZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGUpe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0LHtzaG91bGRFeHBhbmRPblNjcm9sbFJlZjphLGNvbnRlbnRXcmFwcGVyOmx9PXI/P3t9O2lmKGE/LnZhbHVlJiZsPy52YWx1ZSl7Y29uc3QgZT1NYXRoLmFicyhvLnZhbHVlLXQuc2Nyb2xsVG9wKTtpZihlPjApe2NvbnN0IGE9KHZvaWQgMCkuaW5uZXJIZWlnaHQtMjAsaT1OdW1iZXIucGFyc2VGbG9hdChsLnZhbHVlLnN0eWxlLm1pbkhlaWdodCkscj1OdW1iZXIucGFyc2VGbG9hdChsLnZhbHVlLnN0eWxlLmhlaWdodCksbj1NYXRoLm1heChpLHIpO2lmKG48YSl7Y29uc3QgaT1uK2Uscj1NYXRoLm1pbihhLGkpLG89aS1yO2wudmFsdWUuc3R5bGUuaGVpZ2h0PWAke3J9cHhgLCIwcHgiPT09bC52YWx1ZS5zdHlsZS5ib3R0b20mJih0LnNjcm9sbFRvcD1vPjA/bzowLGwudmFsdWUuc3R5bGUuanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIil9fX1vLnZhbHVlPXQuc2Nyb2xsVG9wfXJldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsW2UuY3JlYXRlVk5vZGUoZS51bnJlZihoKSxlLm1lcmdlUHJvcHMoe3JlZjplLnVucmVmKG4pLCJkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0IjoiIixyb2xlOiJwcmVzZW50YXRpb24ifSx7Li4udC4kYXR0cnMsLi4uYX0se3N0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXg6MSxvdmVyZmxvdzoiaGlkZGVuIGF1dG8ifSxvblNjcm9sbDpoYW5kbGVTY3JvbGx9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpLGUuY3JlYXRlVk5vZGUoZS51bnJlZihoKSx7YXM6InN0eWxlIixub25jZTplLnVucmVmKGkpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PmxbMF18fChsWzBdPVtlLmNyZWF0ZVRleHRWTm9kZSgiIC8qIEhpZGUgc2Nyb2xsYmFycyBjcm9zcy1icm93c2VyIGFuZCBlbmFibGUgbW9tZW50dW0gc2Nyb2xsIGZvciB0b3VjaCBkZXZpY2VzICovIFtkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0XSB7IHNjcm9sbGJhci13aWR0aDpub25lOyAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfSBbZGF0YS1yZWthLXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfSAiKV0pKSxfOjEsX186WzBdfSw4LFsibm9uY2UiXSldLDY0KSl9fSk7Y29uc3QgUGU9e3Nsb3RzOntiYXNlOlsicmVsYXRpdmUgZ3JvdXAgcm91bmRlZC1tZCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsZWFkaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgc3RhcnQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsbGVhZGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmc6ImFic29sdXRlIGluc2V0LXktMCBlbmQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsdHJhaWxpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsdmFsdWU6InRydW5jYXRlIHBvaW50ZXItZXZlbnRzLW5vbmUiLHBsYWNlaG9sZGVyOiJ0cnVuY2F0ZSB0ZXh0LWRpbW1lZCIsYXJyb3c6ImZpbGwtYmcgc3Ryb2tlLWRlZmF1bHQiLGNvbnRlbnQ6Im1heC1oLTYwIHctKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aCkgYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBvdmVyZmxvdy1oaWRkZW4gb3JpZ2luLSgtLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGZsZXgtY29sIix2aWV3cG9ydDoicmVsYXRpdmUgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQgc2Nyb2xsLXB5LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSIsZ3JvdXA6InAtMSBpc29sYXRlIixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsbGFiZWw6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsc2VwYXJhdG9yOiItbXgtMSBteS0xIGgtcHggYmctYm9yZGVyIixpdGVtOlsiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtc3RhcnQgc2VsZWN0LW5vbmUgb3V0bGluZS1ub25lIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTppbnNldC1weCBiZWZvcmU6cm91bmRlZC1tZCBkYXRhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNzUgdGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInNocmluay0wIHRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWdyb3VwLWRhdGEtZGlzYWJsZWQ6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtTGVhZGluZ0NoaXA6InNocmluay0wIixpdGVtTGVhZGluZ0NoaXBTaXplOiIiLGl0ZW1UcmFpbGluZzoibXMtYXV0byBpbmxpbmUtZmxleCBnYXAtMS41IGl0ZW1zLWNlbnRlciIsaXRlbVRyYWlsaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1XcmFwcGVyOiJmbGV4LTEgZmxleCBmbGV4LWNvbCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1lLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXMtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0iLHZlcnRpY2FsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWItbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtdC1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSJ9LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC14cyBnYXAtMSIsbGVhZGluZzoicHMtMiIsdHJhaWxpbmc6InBlLTIiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xIHRleHQtWzEwcHhdLzMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixlbXB0eToicC0yIHRleHQteHMifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQiLGxhYmVsOiJwLTEuNSB0ZXh0LVsxMHB4XS8zIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMi41IHRleHQteHMifSxtZDp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQtc20gZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMi41IHRleHQtc20ifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtc20gZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSIsbGFiZWw6InAtMiB0ZXh0LXhzIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMyB0ZXh0LXNtIn0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02IixsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS02IixpdGVtTGVhZGluZ0F2YXRhclNpemU6InhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNiIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibGciLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsZW1wdHk6InAtMyB0ZXh0LWJhc2UifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIGhvdmVyOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWRlZmF1bHQiLHNvZnQ6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctZWxldmF0ZWQvNTAiLHN1YnRsZToidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1hY2NlbnRlZC83NSBkaXNhYmxlZDpiZy1lbGV2YXRlZCIsZ2hvc3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCIsbm9uZToidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCJ9LGNvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSxsZWFkaW5nOnt0cnVlOiIifSx0cmFpbGluZzp7dHJ1ZToiIn0sbG9hZGluZzp7dHJ1ZToiIn0saGlnaGxpZ2h0Ont0cnVlOiIifSxmaXhlZDp7ZmFsc2U6IiJ9LHR5cGU6e2ZpbGU6ImZpbGU6bWUtMS41IGZpbGU6Zm9udC1tZWRpdW0gZmlsZTp0ZXh0LW11dGVkIGZpbGU6b3V0bGluZS1ub25lIn0scG9zaXRpb246e3BvcHBlcjp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIn0sIml0ZW0tYWxpZ25lZCI6e2NvbnRlbnQ6IiJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixwb3NpdGlvbjoicG9wcGVyIn19LERlPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVNlbGVjdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2lkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNlbGVjdGVkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sYXJyb3c6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmFsdWUifSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkZXNjcmlwdGlvbiJ9LGl0ZW1zOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsTW9kaWZpZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjaGFuZ2UiLCJibHVyIiwiZm9jdXMiLCJ1cGRhdGU6bW9kZWxWYWx1ZSIsInVwZGF0ZTpvcGVuIl0sc2V0dXAodix7ZXhwb3NlOnksZW1pdDpofSl7Y29uc3Qgaz12LHg9aCxJPWUudXNlU2xvdHMoKSxCPXQoKSxDPWEoInNlbGVjdCIsayksTD1sKGkoaywib3BlbiIsImRlZmF1bHRPcGVuIiwiZGlzYWJsZWQiLCJhdXRvY29tcGxldGUiLCJyZXF1aXJlZCIsIm11bHRpcGxlIikseCksdz1yKGUudG9SZWYoKCk9PmsucG9ydGFsKSkse3Bvc2l0aW9uOnF9PVkoInNlbGVjdCIsayxQZSxbInBvc2l0aW9uIl0se3Bvc2l0aW9uOigpPT5rLmNvbnRlbnQ/LnBvc2l0aW9ufSksVj1lLnRvUmVmKCgpPT5IKGsuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4LHBvc2l0aW9uOnEudmFsdWV9KSksej1lLnRvUmVmKCgpPT5IKGsuYXJyb3cse3JvdW5kZWQ6ITB9KSkse2VtaXRGb3JtQ2hhbmdlOl8sZW1pdEZvcm1JbnB1dDpULGVtaXRGb3JtQmx1cjpOLGVtaXRGb3JtRm9jdXM6QSxzaXplOiQsY29sb3I6UCxpZDpELG5hbWU6SyxoaWdobGlnaHQ6RSxkaXNhYmxlZDpPLGFyaWFBdHRyczpSfT1uKGspLHtvcmllbnRhdGlvbjpGLHNpemU6V309byhrKSx7aXNMZWFkaW5nOk0saXNUcmFpbGluZzpqLGxlYWRpbmdJY29uTmFtZTpVLHRyYWlsaW5nSWNvbk5hbWU6R309cyhlLnRvUmVmKCgpPT5IKGsse3RyYWlsaW5nSWNvbjpCLnVpLmljb25zLmNoZXZyb25Eb3dufSkpKSxhZT1lLmNvbXB1dGVkKCgpPT5XLnZhbHVlfHwkLnZhbHVlKSxsZT1lLmNvbXB1dGVkKCgpPT4iaXRlbS1hbGlnbmVkIj09PXEudmFsdWUpLGllPWUuY29tcHV0ZWQoKCk9PnUoe2V4dGVuZDp1KFBlKSwuLi5CLnVpPy5zZWxlY3R8fHt9fSkoe2NvbG9yOlAudmFsdWUsdmFyaWFudDprLnZhcmlhbnQsc2l6ZTphZT8udmFsdWUsbG9hZGluZzprLmxvYWRpbmcsaGlnaGxpZ2h0OkUudmFsdWUsbGVhZGluZzpNLnZhbHVlfHwhIWsuYXZhdGFyfHwhIUkubGVhZGluZyx0cmFpbGluZzpqLnZhbHVlfHwhIUkudHJhaWxpbmcsZmllbGRHcm91cDpGLnZhbHVlLHBvc2l0aW9uOnEudmFsdWV9KSkscmU9ZS5jb21wdXRlZCgoKT0+ay5pdGVtcz8ubGVuZ3RoP2Moay5pdGVtcyk/ay5pdGVtczpbay5pdGVtc106W10pLG5lPWUuY29tcHV0ZWQoKCk9PnJlLnZhbHVlLmZsYXRNYXAoZT0+ZSkpO2Z1bmN0aW9uIGRpc3BsYXlWYWx1ZShlKXtpZihrLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubWFwKGU9PlMobmUudmFsdWUsZSx7bGFiZWxLZXk6ay5sYWJlbEtleSx2YWx1ZUtleTprLnZhbHVlS2V5fSkpLmZpbHRlcihlPT5udWxsIT1lJiYiIiE9PWUpO3JldHVybiB0Lmxlbmd0aD4wP3Quam9pbigiLCAiKTp2b2lkIDB9cmV0dXJuIFMobmUudmFsdWUsZSx7bGFiZWxLZXk6ay5sYWJlbEtleSx2YWx1ZUtleTprLnZhbHVlS2V5fSl9Y29uc3Qgb2U9ZS51c2VUZW1wbGF0ZVJlZigidHJpZ2dlclJlZiIpO2Z1bmN0aW9uIG9uVXBkYXRlKGUpeyFrLm1vZGVsTW9kaWZpZXJzPy50cmltfHwic3RyaW5nIiE9dHlwZW9mIGUmJm51bGwhPWV8fChlPWU/LnRyaW0oKT8/bnVsbCksay5tb2RlbE1vZGlmaWVycz8ubnVtYmVyJiYoZT1iKGUpKSxrLm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmKGU/Pz1udWxsKSxrLm1vZGVsTW9kaWZpZXJzPy5vcHRpb25hbCYmIWsubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiZudWxsIT09ZSYmKGU/Pz12b2lkIDApO2NvbnN0IHQ9bmV3IEV2ZW50KCJjaGFuZ2UiLHt0YXJnZXQ6e3ZhbHVlOmV9fSk7eCgiY2hhbmdlIix0KSxfKCksVCgpfWZ1bmN0aW9uIG9uVXBkYXRlT3BlbihlKXtpZihlKXtjb25zdCBlPW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO3goImZvY3VzIixlKSxBKCl9ZWxzZXtjb25zdCBlPW5ldyBGb2N1c0V2ZW50KCJibHVyIik7eCgiYmx1ciIsZSksTigpfX1mdW5jdGlvbiBpc1NlbGVjdEl0ZW0oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZX1jb25zdCB1ZT1lLnVzZVRlbXBsYXRlUmVmKCJ2aWV3cG9ydFJlZiIpO3JldHVybiB5KHt0cmlnZ2VyUmVmOmUudG9SZWYoKCk9Pm9lLnZhbHVlPy4kZWwpLHZpZXdwb3J0UmVmOmUudG9SZWYoKCk9Pntjb25zdCBlPXVlLnZhbHVlO3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiIkZWwiaW4gZT9lLiRlbDplfSl9KSwodCxhLGwsaSk9PnthKFgoZS51bnJlZihzZSksZS5tZXJnZVByb3BzKHtuYW1lOmUudW5yZWYoSyl9LGUudW5yZWYoTCkse2F1dG9jb21wbGV0ZTp2LmF1dG9jb21wbGV0ZSxkaXNhYmxlZDplLnVucmVmKE8pLCJkZWZhdWx0LXZhbHVlIjp2LmRlZmF1bHRWYWx1ZSwibW9kZWwtdmFsdWUiOnYubW9kZWxWYWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b25VcGRhdGUsIm9uVXBkYXRlOm9wZW4iOm9uVXBkYXRlT3Blbn0saSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7bW9kZWxWYWx1ZTphLG9wZW46bH0saSxyLG4pPT57aWYoIWkpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihOZSksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKEQpLHJlZl9rZXk6InRyaWdnZXJSZWYiLHJlZjpvZSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6aWUudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoQyk/LmJhc2Usay5jbGFzc119KX0sey4uLnQuJGF0dHJzLC4uLmUudW5yZWYoUil9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKE0pfHx2LmF2YXRhcnx8SS5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6aWUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihDKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PltlLnVucmVmKE0pJiZlLnVucmVmKFUpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTplLnVucmVmKFUpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6di5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx2LmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFtkaXNwbGF5VmFsdWUoYSldLGk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihBZSkse2tleTppLCJkYXRhLXNsb3QiOm51bGwhPWk/InZhbHVlIjoicGxhY2Vob2xkZXIiLGNsYXNzOm51bGwhPWk/aWUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoQyk/LnZhbHVlfSk6aWUudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmUudW5yZWYoQyk/LnBsYWNlaG9sZGVyfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6aWUudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaT8/di5wbGFjZWhvbGRlcj8/IsKgIiksMSldKV0pLF86Mn0sMTAzMixbImRhdGEtc2xvdCIsImNsYXNzIl0pKSksMTI4KSksZS51bnJlZihqKXx8SS50cmFpbGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczppZS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihDKT8udHJhaWxpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOmllLnZhbHVlfSwoKT0+W2UudW5yZWYoRyk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmUudW5yZWYoRyksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTA0MCxbImlkIiwiY2xhc3MiXSksZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSxlLnVucmVmKHcpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihtKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZih4ZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6aWUudmFsdWUuY29udGVudCh7Y2xhc3M6ZS51bnJlZihDKT8uY29udGVudH0pfSxWLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtdG9wIiksKGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGxlLnZhbHVlP2UudW5yZWYoJGUpOiJkaXYiKSx7cmVmX2tleToidmlld3BvcnRSZWYiLHJlZjp1ZSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6aWUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoQyk/LnZpZXdwb3J0fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHJlLnZhbHVlLChhLGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQmUpLHtrZXk6YGdyb3VwLSR7bH1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6aWUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoQyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGEsKGEsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OmBncm91cC0ke2x9LSR7aX1gfSxbaXNTZWxlY3RJdGVtKGEpJiYibGFiZWwiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih6ZSkse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6aWUudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5sYWJlbCxhLnVpPy5sYWJlbCxhLmNsYXNzXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5sYWJlbEtleSkpLDEpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmInNlcGFyYXRvciI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFRlKSx7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6aWUudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihDKT8uc2VwYXJhdG9yLGEudWk/LnNlcGFyYXRvcixhLmNsYXNzXX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHdlKSx7a2V5OjIsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmllLnZhbHVlLml0ZW0oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEuY2xhc3NdfSksZGlzYWJsZWQ6aXNTZWxlY3RJdGVtKGEpJiZhLmRpc2FibGVkLHZhbHVlOmlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay52YWx1ZUtleSk6YSxvblNlbGVjdDplPT5pc1NlbGVjdEl0ZW0oYSkmJmEub25TZWxlY3Q/LihlKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0sKCk9Pltpc1NlbGVjdEl0ZW0oYSkmJmEuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHAsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0se3JlZl9mb3I6ITB9LGEuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXIsYS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sYS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXAsYS51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6aWUudmFsdWUuaXRlbVdyYXBwZXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtV3JhcHBlcixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZShlLnVucmVmKFZlKSx7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6aWUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxhYmVsLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbUxhYmVsXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsubGFiZWxLZXkpOmEpLDEpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSxpc1NlbGVjdEl0ZW0oYSkmJihlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSl8fElbIml0ZW0tZGVzY3JpcHRpb24iXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOmllLnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1EZXNjcmlwdGlvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDppfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSksZS5jcmVhdGVWTm9kZShlLnVucmVmKHFlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOnYuc2VsZWN0ZWRJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyIsImRpc2FibGVkIiwidmFsdWUiLCJvblNlbGVjdCJdKSldLDY0KSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0pLF86M30sOCxbImNsYXNzIl0pKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIiksdi5hcnJvdz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoaGUpLGUubWVyZ2VQcm9wcyh7a2V5OjB9LHoudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6aWUudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoQyk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86M30sMTYsWyJjbGFzcyJdKV0pLF86M30pXSksXzozfSwxNildO2koWChlLnVucmVmKE5lKSxlLm1lcmdlUHJvcHMoe2lkOmUudW5yZWYoRCkscmVmX2tleToidHJpZ2dlclJlZiIscmVmOm9lLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczppZS52YWx1ZS5iYXNlKHtjbGFzczpbZS51bnJlZihDKT8uYmFzZSxrLmNsYXNzXX0pfSx7Li4udC4kYXR0cnMsLi4uZS51bnJlZihSKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLG4sbyk9PntpZighcilyZXR1cm5bZS51bnJlZihNKXx8di5hdmF0YXJ8fEkubGVhZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOmllLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoQyk/LmxlYWRpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6aWUudmFsdWV9LCgpPT5bZS51bnJlZihNKSYmZS51bnJlZihVKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6ZS51bnJlZihVKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnYuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sdi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChbZGlzcGxheVZhbHVlKGEpXSxpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQWUpLHtrZXk6aSwiZGF0YS1zbG90IjpudWxsIT1pPyJ2YWx1ZSI6InBsYWNlaG9sZGVyIixjbGFzczpudWxsIT1pP2llLnZhbHVlLnZhbHVlKHtjbGFzczplLnVucmVmKEMpPy52YWx1ZX0pOmllLnZhbHVlLnBsYWNlaG9sZGVyKHtjbGFzczplLnVucmVmKEMpPy5wbGFjZWhvbGRlcn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOmllLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGk/P3YucGxhY2Vob2xkZXI/PyLCoCIpLDEpXSldKSxfOjJ9LDEwMzIsWyJkYXRhLXNsb3QiLCJjbGFzcyJdKSkpLDEyOCkpLGUudW5yZWYoail8fEkudHJhaWxpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6aWUudmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoQyk/LnRyYWlsaW5nfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsInRyYWlsaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PltlLnVucmVmKEcpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTplLnVucmVmKEcpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihDKT8udHJhaWxpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2UudW5yZWYoTSl8fHYuYXZhdGFyfHxJLmxlYWRpbmc/KHIoYDxzcGFuIGRhdGEtc2xvdD0ibGVhZGluZyIgY2xhc3M9IiR7SihpZS52YWx1ZS5sZWFkaW5nKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nfSkpfSIke299PmApLFEodC4kc2xvdHMsImxlYWRpbmciLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOmllLnZhbHVlfSwoKT0+e2UudW5yZWYoTSkmJmUudW5yZWYoVSk/cihYKGQse25hbWU6ZS51bnJlZihVKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEMpPy5sZWFkaW5nSWNvbn0pfSxudWxsLG4sbykpOnYuYXZhdGFyP3IoWChwLGUubWVyZ2VQcm9wcyh7c2l6ZTplLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx2LmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsbixvKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLG4sbykscigiPC9zcGFuPiIpKTpyKCJceDNjIS0tLS1ceDNlIikscigiXHgzYyEtLVstLVx4M2UiKSxaKFtkaXNwbGF5VmFsdWUoYSldLGk9PntyKFgoZS51bnJlZihBZSkseyJkYXRhLXNsb3QiOm51bGwhPWk/InZhbHVlIjoicGxhY2Vob2xkZXIiLGNsYXNzOm51bGwhPWk/aWUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoQyk/LnZhbHVlfSk6aWUudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmUudW5yZWYoQyk/LnBsYWNlaG9sZGVyfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgocixuLG8scyk9PntpZighbilyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpPz92LnBsYWNlaG9sZGVyPz8iwqAiKSwxKV0pXTtRKHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTppZS52YWx1ZX0sKCk9PntuKGAke2VlKGk/P3YucGxhY2Vob2xkZXI/PyLCoCIpfWApfSxuLG8scyl9KSxfOjJ9LG4sbykpfSkscigiXHgzYyEtLV0tLVx4M2UiKSxlLnVucmVmKGopfHxJLnRyYWlsaW5nPyhyKGA8c3BhbiBkYXRhLXNsb3Q9InRyYWlsaW5nIiBjbGFzcz0iJHtKKGllLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEMpPy50cmFpbGluZ30pKX0iJHtvfT5gKSxRKHQuJHNsb3RzLCJ0cmFpbGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6aWUudmFsdWV9LCgpPT57ZS51bnJlZihHKT9yKFgoZCx7bmFtZTplLnVucmVmKEcpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihDKT8udHJhaWxpbmdJY29ufSl9LG51bGwsbixvKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLG4sbykscigiPC9zcGFuPiIpKTpyKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9LHIsbikpLGkoWChlLnVucmVmKF9lKSxlLnVucmVmKHcpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLGkscik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKG0pLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKHhlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczppZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEMpPy5jb250ZW50fSl9LFYudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC10b3AiKSwoZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQobGUudmFsdWU/ZS51bnJlZigkZSk6ImRpdiIpLHtyZWZfa2V5OiJ2aWV3cG9ydFJlZiIscmVmOnVlLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczppZS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZS51bnJlZihDKT8udmlld3BvcnR9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QocmUudmFsdWUsKGEsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCZSkse2tleTpgZ3JvdXAtJHtsfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczppZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihDKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoYSwoYSxpKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6YGdyb3VwLSR7bH0tJHtpfWB9LFtpc1NlbGVjdEl0ZW0oYSkmJiJsYWJlbCI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczppZS52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/LmxhYmVsLGEudWk/LmxhYmVsLGEuY2xhc3NdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmxhYmVsS2V5KSksMSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiYic2VwYXJhdG9yIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVGUpLHtrZXk6MSwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczppZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEMpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYod2UpLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6aWUudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS5jbGFzc119KSxkaXNhYmxlZDppc1NlbGVjdEl0ZW0oYSkmJmEuZGlzYWJsZWQsdmFsdWU6aXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLnZhbHVlS2V5KTphLG9uU2VsZWN0OmU9PmlzU2VsZWN0SXRlbShhKSYmYS5vblNlbGVjdD8uKGUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0iLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0sKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSwoKT0+W2lzU2VsZWN0SXRlbShhKSYmYS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTphLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdJY29uLGEudWk/Lml0ZW1MZWFkaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZyxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6YS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LHtyZWZfZm9yOiEwfSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczppZS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1XcmFwcGVyLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczppZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sYWJlbCIse2l0ZW06YSxpbmRleDppfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay5sYWJlbEtleSk6YSksMSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KXx8SVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6aWUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Oml9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9KSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYocWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGQse25hbWU6di5zZWxlY3RlZEljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSksXzozfSw4LFsiY2xhc3MiXSkpLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC1ib3R0b20iKSx2LmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihoZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sei52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczppZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihDKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldO2woWChlLnVucmVmKG0pLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwsaSxyKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeGUpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOmllLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUudW5yZWYoQyk/LmNvbnRlbnR9KX0sVi52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LXRvcCIpLChlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChsZS52YWx1ZT9lLnVucmVmKCRlKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6dWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOmllLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEMpPy52aWV3cG9ydH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChyZS52YWx1ZSwoYSxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEJlKSx7a2V5OmBncm91cC0ke2x9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOmllLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEMpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChhLChhLGkpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTpgZ3JvdXAtJHtsfS0ke2l9YH0sW2lzU2VsZWN0SXRlbShhKSYmImxhYmVsIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoemUpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmllLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJiJzZXBhcmF0b3IiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihUZSkse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmllLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoQyk/LnNlcGFyYXRvcixhLnVpPy5zZXBhcmF0b3IsYS5jbGFzc119KX0sbnVsbCw4LFsiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih3ZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczppZS52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLmNsYXNzXX0pLGRpc2FibGVkOmlzU2VsZWN0SXRlbShhKSYmYS5kaXNhYmxlZCx2YWx1ZTppc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsudmFsdWVLZXkpOmEsb25TZWxlY3Q6ZT0+aXNTZWxlY3RJdGVtKGEpJiZhLm9uU2VsZWN0Py4oZSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHtyZWZfZm9yOiEwfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0se3JlZl9mb3I6ITB9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOmllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihWZSkseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOmllLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Oml9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpfHxJWyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczppZS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtRGVzY3JpcHRpb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmcsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tdHJhaWxpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0pLGUuY3JlYXRlVk5vZGUoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZCx7bmFtZTp2LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCIsInZhbHVlIiwib25TZWxlY3QiXSkpXSw2NCkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSldKSxfOjN9LDgsWyJjbGFzcyJdKSksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpLHYuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGhlKSxlLm1lcmdlUHJvcHMoe2tleTowfSx6LnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOmllLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKEMpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldO2woWChlLnVucmVmKHhlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczppZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEMpPy5jb250ZW50fSl9LFYudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLGkscik9PntpZighbClyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LXRvcCIpLChlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChsZS52YWx1ZT9lLnVucmVmKCRlKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6dWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOmllLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEMpPy52aWV3cG9ydH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChyZS52YWx1ZSwoYSxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEJlKSx7a2V5OmBncm91cC0ke2x9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOmllLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEMpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChhLChhLGkpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTpgZ3JvdXAtJHtsfS0ke2l9YH0sW2lzU2VsZWN0SXRlbShhKSYmImxhYmVsIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoemUpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmllLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJiJzZXBhcmF0b3IiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihUZSkse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmllLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoQyk/LnNlcGFyYXRvcixhLnVpPy5zZXBhcmF0b3IsYS5jbGFzc119KX0sbnVsbCw4LFsiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih3ZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczppZS52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLmNsYXNzXX0pLGRpc2FibGVkOmlzU2VsZWN0SXRlbShhKSYmYS5kaXNhYmxlZCx2YWx1ZTppc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsudmFsdWVLZXkpOmEsb25TZWxlY3Q6ZT0+aXNTZWxlY3RJdGVtKGEpJiZhLm9uU2VsZWN0Py4oZSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHtyZWZfZm9yOiEwfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0se3JlZl9mb3I6ITB9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOmllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihWZSkseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOmllLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Oml9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpfHxJWyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczppZS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtRGVzY3JpcHRpb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmcsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tdHJhaWxpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0pLGUuY3JlYXRlVk5vZGUoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZCx7bmFtZTp2LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCIsInZhbHVlIiwib25TZWxlY3QiXSkpXSw2NCkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSldKSxfOjN9LDgsWyJjbGFzcyJdKSksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpLHYuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGhlKSxlLm1lcmdlUHJvcHMoe2tleTowfSx6LnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOmllLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKEMpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO1EodC4kc2xvdHMsImNvbnRlbnQtdG9wIix7fSxudWxsLGwsaSxyKSx0ZShsLGUuY3JlYXRlVk5vZGUoZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChsZS52YWx1ZT9lLnVucmVmKCRlKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6dWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOmllLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEMpPy52aWV3cG9ydH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbCxpLHIpPT57aWYoIWwpcmV0dXJuWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHJlLnZhbHVlLChhLGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQmUpLHtrZXk6YGdyb3VwLSR7bH1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6aWUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoQyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGEsKGEsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OmBncm91cC0ke2x9LSR7aX1gfSxbaXNTZWxlY3RJdGVtKGEpJiYibGFiZWwiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih6ZSkse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6aWUudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5sYWJlbCxhLnVpPy5sYWJlbCxhLmNsYXNzXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5sYWJlbEtleSkpLDEpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmInNlcGFyYXRvciI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFRlKSx7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6aWUudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihDKT8uc2VwYXJhdG9yLGEudWk/LnNlcGFyYXRvcixhLmNsYXNzXX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHdlKSx7a2V5OjIsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOmllLnZhbHVlLml0ZW0oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEuY2xhc3NdfSksZGlzYWJsZWQ6aXNTZWxlY3RJdGVtKGEpJiZhLmRpc2FibGVkLHZhbHVlOmlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay52YWx1ZUtleSk6YSxvblNlbGVjdDplPT5pc1NlbGVjdEl0ZW0oYSkmJmEub25TZWxlY3Q/LihlKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmksdWk6aWUudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmEsaW5kZXg6aSx1aTppZS52YWx1ZX0sKCk9Pltpc1NlbGVjdEl0ZW0oYSkmJmEuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGQse2tleTowLG5hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHAsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0se3JlZl9mb3I6ITB9LGEuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdBdmF0YXIsYS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sYS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXAsYS51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6aWUudmFsdWUuaXRlbVdyYXBwZXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtV3JhcHBlcixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZShlLnVucmVmKFZlKSx7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6aWUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxhYmVsLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbUxhYmVsXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6aX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsubGFiZWxLZXkpOmEpLDEpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSxpc1NlbGVjdEl0ZW0oYSkmJihlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSl8fElbIml0ZW0tZGVzY3JpcHRpb24iXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOmllLnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1EZXNjcmlwdGlvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDppfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDppLHVpOmllLnZhbHVlfSksZS5jcmVhdGVWTm9kZShlLnVucmVmKHFlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOnYuc2VsZWN0ZWRJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyIsImRpc2FibGVkIiwidmFsdWUiLCJvblNlbGVjdCJdKSldLDY0KSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV07bCgiXHgzYyEtLVstLVx4M2UiKSxaKHJlLnZhbHVlLChhLG4pPT57bChYKGUudW5yZWYoQmUpLHtrZXk6YGdyb3VwLSR7bn1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6aWUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoQyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgobCxpLHIsbyk9PntpZighaSlyZXR1cm5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoYSwoYSxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6YGdyb3VwLSR7bn0tJHtsfWB9LFtpc1NlbGVjdEl0ZW0oYSkmJiJsYWJlbCI9PT1hLnR5cGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczppZS52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/LmxhYmVsLGEudWk/LmxhYmVsLGEuY2xhc3NdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxrLmxhYmVsS2V5KSksMSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiYic2VwYXJhdG9yIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVGUpLHtrZXk6MSwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczppZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEMpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwsOCxbImNsYXNzIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYod2UpLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6aWUudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS5jbGFzc119KSxkaXNhYmxlZDppc1NlbGVjdEl0ZW0oYSkmJmEuZGlzYWJsZWQsdmFsdWU6aXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLnZhbHVlS2V5KTphLG9uU2VsZWN0OmU9PmlzU2VsZWN0SXRlbShhKSYmYS5vblNlbGVjdD8uKGUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0iLHtpdGVtOmEsaW5kZXg6bCx1aTppZS52YWx1ZX0sKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06YSxpbmRleDpsLHVpOmllLnZhbHVlfSwoKT0+W2lzU2VsZWN0SXRlbShhKSYmYS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZCx7a2V5OjAsbmFtZTphLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdJY29uLGEudWk/Lml0ZW1MZWFkaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socCxlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZyxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6YS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LHtyZWZfZm9yOiEwfSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczppZS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1XcmFwcGVyLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczppZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sYWJlbCIse2l0ZW06YSxpbmRleDpsfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsay5sYWJlbEtleSk6YSksMSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KXx8SVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6aWUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9KSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYocWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGQse25hbWU6di5zZWxlY3RlZEljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV0sNjQpKSksMTI4KSldO2koIlx4M2MhLS1bLS1ceDNlIiksWihhLChhLGwpPT57aSgiXHgzYyEtLVstLVx4M2UiKSxpc1NlbGVjdEl0ZW0oYSkmJiJsYWJlbCI9PT1hLnR5cGU/aShYKGUudW5yZWYoemUpLHsiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOmllLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihDKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGwsaSxyKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5sYWJlbEtleSkpLDEpXTtsKGAke2VlKGUudW5yZWYoZikoYSxrLmxhYmVsS2V5KSl9YCl9KSxfOjJ9LHIsbykpOmlzU2VsZWN0SXRlbShhKSYmInNlcGFyYXRvciI9PT1hLnR5cGU/aShYKGUudW5yZWYoVGUpLHsiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczppZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEMpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwscixvKSk6aShYKGUudW5yZWYod2UpLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6aWUudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS5jbGFzc119KSxkaXNhYmxlZDppc1NlbGVjdEl0ZW0oYSkmJmEuZGlzYWJsZWQsdmFsdWU6aXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLnZhbHVlS2V5KTphLG9uU2VsZWN0OmU9PmlzU2VsZWN0SXRlbShhKSYmYS5vblNlbGVjdD8uKGUpfSx7ZGVmYXVsdDplLndpdGhDdHgoKGkscixuLG8pPT57aWYoIXIpcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDpsLHVpOmllLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhwLGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHtyZWZfZm9yOiEwfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxpZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0se3JlZl9mb3I6ITB9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOmllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoZS51bnJlZihWZSkseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOmllLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLGsuZGVzY3JpcHRpb25LZXkpfHxJWyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczppZS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtRGVzY3JpcHRpb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmEsaW5kZXg6bH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmcsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tdHJhaWxpbmciLHtpdGVtOmEsaW5kZXg6bCx1aTppZS52YWx1ZX0pLGUuY3JlYXRlVk5vZGUoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZCx7bmFtZTp2LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihCKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6aWUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpXSwyKV0pXTtRKHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9LCgpPT57USh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmwsdWk6aWUudmFsdWV9LCgpPT57aXNTZWxlY3RJdGVtKGEpJiZhLmljb24/cihYKGQse25hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsbixvKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj9yKFgocCxlLm1lcmdlUHJvcHMoe3NpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6aWUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsbixvKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmNoaXA/cihYKGcsZS5tZXJnZVByb3BzKHtzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoQyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGllLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sYS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczppZS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGVhZGluZ0NoaXAsYS51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCxuLG8pKTpyKCJceDNjIS0tLS1ceDNlIil9LHIsbixvKSxyKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1XcmFwcGVyIiBjbGFzcz0iJHtKKGllLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KSl9IiR7b30+YCkscihYKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczppZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLG4sbyk9PntpZighcilyZXR1cm5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxrLmxhYmVsS2V5KTphKSwxKV0pXTtRKHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT57cihgJHtlZShpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLGsubGFiZWxLZXkpOmEpfWApfSxyLG4sbyl9KSxfOjJ9LG4sbykpLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxrLmRlc2NyaXB0aW9uS2V5KXx8SVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8ocihgPHNwYW4gZGF0YS1zbG90PSJpdGVtRGVzY3JpcHRpb24iIGNsYXNzPSIke0ooaWUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0iJHtvfT5gKSxRKHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Omx9LCgpPT57cihgJHtlZShlLnVucmVmKGYpKGEsay5kZXNjcmlwdGlvbktleSkpfWApfSxyLG4sbykscigiPC9zcGFuPiIpKTpyKCJceDNjIS0tLS1ceDNlIikscihgPC9zcGFuPjxzcGFuIGRhdGEtc2xvdD0iaXRlbVRyYWlsaW5nIiBjbGFzcz0iJHtKKGllLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoQyk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KSl9IiR7b30+YCksUSh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDpsLHVpOmllLnZhbHVlfSxudWxsLHIsbixvKSxyKFgoZS51bnJlZihxZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxsLGkscik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShkLHtuYW1lOnYuc2VsZWN0ZWRJY29ufHxlLnVucmVmKEIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczppZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihDKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV07bChYKGQse25hbWU6di5zZWxlY3RlZEljb258fGUudW5yZWYoQikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOmllLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEMpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCxpLHIpKX0pLF86Mn0sbixvKSkscigiPC9zcGFuPiIpfSxyLG4sbyl9KSxfOjJ9LHIsbykpLGkoIlx4M2MhLS1dLS1ceDNlIil9KSxpKCJceDNjIS0tXS0tXHgzZSIpfSksXzoyfSxpLHIpKX0pLGwoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjJ9KSxpLHIpLFEodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIix7fSxudWxsLGwsaSxyKSx2LmFycm93P2woWChlLnVucmVmKGhlKSxlLm1lcmdlUHJvcHMoei52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczppZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihDKT8uYXJyb3d9KX0pLG51bGwsaSxyKSk6bCgiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxpLHIpKX0pLF86Mn0saSxyKSl9KSxfOjJ9LHIsbikpfSksXzozfSxsKSl9fX0pLEtlPURlLnNldHVwO0RlLnNldHVwPSh0LGEpPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2VsZWN0LnZ1ZSIpLEtlP0tlKHQsYSk6dm9pZCAwfTtleHBvcnR7RGUgYXMgX307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVNlbGVjdC1EaWFpbGZVYy5tanMubWFwCg==", "chunks/build/SelectMenu-BaAPw4-k.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBhLGUgYXMgbCxFIGFzIHIsRiBhcyBuLEcgYXMgbyxIIGFzIGkscSBhcyBzLHMgYXMgdSxrIGFzIGMsdCBhcyBkLEkgYXMgcCxhQSBhcyBtLEsgYXMgZixiIGFzIGcsZyBhcyB2LEwgYXMgaCxfIGFzIHksSiBhcyBrLGFxIGFzIGIsTSBhcyB4LFAgYXMgQixPIGFzIEMsVCBhcyBTLFEgYXMgVixTIGFzIHcsUiBhcyBJLG0gYXMgcSxsIGFzIHosYXAgYXMgTn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e0YgYXMgXyx1IGFzIEwsYSBhcyAkLGIgYXMgVCxEIGFzIE19ZnJvbSIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0e3UgYXMgT31mcm9tIi4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0e3UgYXMgUCxhIGFzIEF9ZnJvbSIuL3VzZUZpbHRlci1DbENaYW9pOC5tanMiO2ltcG9ydHtnIGFzIEYsTCBhcyBELGEgYXMgSyxpIGFzIEUsYiBhcyBSLGMgYXMgaixkIGFzIFUsZSBhcyBXLGYgYXMgR31mcm9tIi4vdmlydHVhbGl6ZXItQnlxaTB1QUsubWpzIjtpbXBvcnR7UCBhcyBILGEgYXMgUSxiIGFzIEosYyBhcyBaLGQgYXMgWH1mcm9tIi4vUG9wcGVyQXJyb3ctQkV5V1VKaVEubWpzIjtpbXBvcnR7YUUgYXMgWX1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e18gYXMgZWV9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e2YgYXMgdGUsaiBhcyBhZSxnIGFzIGxlLHEgYXMgcmUsdCBhcyBuZX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2NvbnN0W29lLGllXT1xKCJDb21ib2JveFJvb3QiKTt2YXIgc2U9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29tYm9ib3hSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXNldFNlYXJjaFRlcm1PbkJsdXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZXNldFNlYXJjaFRlcm1PblNlbGVjdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG9wZW5PbkZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbk9uQ2xpY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxpZ25vcmVGaWx0ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVzZXRNb2RlbFZhbHVlT25DbGVhcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodE9uSG92ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiLCJoaWdobGlnaHQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKHQse2V4cG9zZTphLGVtaXQ6bH0pe2NvbnN0IHI9dCxuPWwse3ByaW1pdGl2ZUVsZW1lbnQ6byxjdXJyZW50RWxlbWVudDppfT1iKCkse211bHRpcGxlOnMsZGlzYWJsZWQ6dSxpZ25vcmVGaWx0ZXI6YyxyZXNldFNlYXJjaFRlcm1PblNlbGVjdDpkLG9wZW5PbkZvY3VzOnAsb3Blbk9uQ2xpY2s6bSxkaXI6ZixyZXNldE1vZGVsVmFsdWVPbkNsZWFyOmcsaGlnaGxpZ2h0T25Ib3Zlcjp2fT1lLnRvUmVmcyhyKSxoPU8oZikseT13KHIsIm1vZGVsVmFsdWUiLG4se2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRWYWx1ZT8/KHMudmFsdWU/W106dm9pZCAwKSxwYXNzaXZlOnZvaWQgMD09PXIubW9kZWxWYWx1ZSxkZWVwOiEwfSksaz13KHIsIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09ci5vcGVufSk7Y29uc3QgeD1OKCksQj1lLnJlZighMSksQz1lLnJlZighMSksUz1lLnJlZigpLFY9ZS5yZWYoKSxJPWUuY29tcHV0ZWQoKCk9Pm8udmFsdWU/LmhpZ2hsaWdodGVkRWxlbWVudD8/dm9pZCAwKSxxPWUucmVmKG5ldyBNYXApLHo9ZS5yZWYobmV3IE1hcCkse2NvbnRhaW5zOl99PUEoe3NlbnNpdGl2aXR5OiJiYXNlIn0pLEw9ZS5yZWYoIiIpLCQ9ZS5jb21wdXRlZChlPT57aWYoIUwudmFsdWV8fHIuaWdub3JlRmlsdGVyfHxDLnZhbHVlKXJldHVybntjb3VudDpxLnZhbHVlLnNpemUsaXRlbXM6ZT8uaXRlbXM/P25ldyBNYXAsZ3JvdXBzOmU/Lmdyb3Vwcz8/bmV3IFNldCh6LnZhbHVlLmtleXMoKSl9O2xldCB0PTA7Y29uc3QgYT1uZXcgTWFwLGw9bmV3IFNldDtmb3IoY29uc3RbZSxsXW9mIHEudmFsdWUpe2NvbnN0IHI9XyhsLEwudmFsdWUpO2Euc2V0KGUscj8xOjApLHImJnQrK31mb3IoY29uc3RbZSx0XW9mIHoudmFsdWUpZm9yKGNvbnN0IHIgb2YgdClpZihhLmdldChyKT4wKXtsLmFkZChlKTticmVha31yZXR1cm57Y291bnQ6dCxpdGVtczphLGdyb3VwczpsfX0pO3JldHVybiBlLmdldEN1cnJlbnRJbnN0YW5jZSgpLGEoe2ZpbHRlcmVkOiQsaGlnaGxpZ2h0ZWRFbGVtZW50OkksaGlnaGxpZ2h0SXRlbTpvLnZhbHVlPy5oaWdobGlnaHRJdGVtLGhpZ2hsaWdodEZpcnN0SXRlbTpvLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0saGlnaGxpZ2h0U2VsZWN0ZWQ6by52YWx1ZT8uaGlnaGxpZ2h0U2VsZWN0ZWR9KSxpZSh7bW9kZWxWYWx1ZTp5LG11bHRpcGxlOnMsZGlzYWJsZWQ6dSxvcGVuOmssb25PcGVuQ2hhbmdlOmFzeW5jIGZ1bmN0aW9uKHQpe2sudmFsdWU9dCxMLnZhbHVlPSIiLHQ/KGF3YWl0IGUubmV4dFRpY2soKSxvLnZhbHVlPy5oaWdobGlnaHRTZWxlY3RlZCgpLEIudmFsdWU9ITAsUy52YWx1ZT8uZm9jdXMoKSk6KEIudmFsdWU9ITEsc2V0VGltZW91dCgoKT0+eyF0JiZyLnJlc2V0U2VhcmNoVGVybU9uQmx1ciYmeC50cmlnZ2VyKCl9LDEpKX0sY29udGVudElkOiIiLGlzVXNlcklucHV0dGVkOkIsaXNWaXJ0dWFsOkMsaW5wdXRFbGVtZW50OlMsaGlnaGxpZ2h0ZWRFbGVtZW50Okksb25JbnB1dEVsZW1lbnRDaGFuZ2U6ZT0+Uy52YWx1ZT1lLHRyaWdnZXJFbGVtZW50OlYsb25UcmlnZ2VyRWxlbWVudENoYW5nZTplPT5WLnZhbHVlPWUscGFyZW50RWxlbWVudDppLHJlc2V0U2VhcmNoVGVybU9uU2VsZWN0OmQsb25SZXNldFNlYXJjaFRlcm06eC5vbixhbGxJdGVtczpxLGFsbEdyb3Vwczp6LGZpbHRlclNlYXJjaDpMLGZpbHRlclN0YXRlOiQsaWdub3JlRmlsdGVyOmMsb3Blbk9uRm9jdXM6cCxvcGVuT25DbGljazptLHJlc2V0TW9kZWxWYWx1ZU9uQ2xlYXI6Z30pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSiksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoVyksZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6b30sdC4kYXR0cnMse21vZGVsVmFsdWU6ZS51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8KGFbMF09dD0+ZS5pc1JlZih5KT95LnZhbHVlPXQ6bnVsbCksc3R5bGU6e3BvaW50ZXJFdmVudHM6ZS51bnJlZihrKT8iYXV0byI6dm9pZCAwfSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpcjplLnVucmVmKGgpLG11bHRpcGxlOmUudW5yZWYocyksbmFtZTp0Lm5hbWUscmVxdWlyZWQ6dC5yZXF1aXJlZCxkaXNhYmxlZDplLnVucmVmKHUpLCJoaWdobGlnaHQtb24taG92ZXIiOmUudW5yZWYodiksYnk6ci5ieSxvbkhpZ2hsaWdodDphWzFdfHwoYVsxXT1lPT5uKCJoaWdobGlnaHQiLGUpKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse29wZW46ZS51bnJlZihrKSxtb2RlbFZhbHVlOmUudW5yZWYoeSl9KV0pLF86M30sMTYsWyJtb2RlbFZhbHVlIiwic3R5bGUiLCJhcyIsImFzLWNoaWxkIiwiZGlyIiwibXVsdGlwbGUiLCJuYW1lIiwicmVxdWlyZWQiLCJkaXNhYmxlZCIsImhpZ2hsaWdodC1vbi1ob3ZlciIsImJ5Il0pXSksXzozfSkpfX0pLHVlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94QW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0e2ZvcndhcmRSZWY6YX09eCgpO3JldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoSCkseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOnQucmVmZXJlbmNlfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKHtyZWY6ZS51bnJlZihhKSwiYXMtY2hpbGQiOnQuYXNDaGlsZCxhczp0LmFzfSx0LiRhdHRycykse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30sOCxbInJlZmVyZW5jZSJdKSl9fSk7Y29uc3RbY2UsZGVdPXEoIkNvbWJvYm94Q29udGVudCIpO3ZhciBwZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveENvbnRlbnRJbXBsIixwcm9wczp7cG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImlubGluZSJ9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZGVXaGVuRW1wdHk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cCh0LHtlbWl0OmF9KXtjb25zdCBsPXQscj1hLHtwb3NpdGlvbjpufT1lLnRvUmVmcyhsKSxvPW9lKCksaT1lLmNvbXB1dGVkKCgpPT5vLmlnbm9yZUZpbHRlci52YWx1ZT8wPT09by5hbGxJdGVtcy52YWx1ZS5zaXplOjA9PT1vLmZpbHRlclN0YXRlLnZhbHVlLmNvdW50KSx7Zm9yd2FyZFJlZjpzfT14KCk7JChsLmJvZHlMb2NrKSxaKCksVChvLnBhcmVudEVsZW1lbnQpO2NvbnN0IHU9ZS5jb21wdXRlZCgoKT0+InBvcHBlciI9PT1sLnBvc2l0aW9uP2w6e30pLGM9eih1LnZhbHVlKSxkPXtib3hTaXppbmc6ImJvcmRlci1ib3giLCItLXJla2EtY29tYm9ib3gtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtY29tYm9ib3gtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifTtyZXR1cm4gZGUoe3Bvc2l0aW9uOm59KSxlLnJlZighMSksKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihHKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHsiYXMtY2hpbGQiOiIiLG9uTW91bnRBdXRvRm9jdXM6YVs1XXx8KGFbNV09ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiXSkpLG9uVW5tb3VudEF1dG9Gb2N1czphWzZdfHwoYVs2XT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihNKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0LmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkRpc21pc3M6YVswXXx8KGFbMF09dD0+ZS51bnJlZihvKS5vbk9wZW5DaGFuZ2UoITEpKSxvbkZvY3VzT3V0c2lkZTphWzFdfHwoYVsxXT10PT57ZS51bnJlZihvKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyh0LnRhcmdldCkmJnQucHJldmVudERlZmF1bHQoKSxyKCJmb2N1c091dHNpZGUiLHQpfSksb25JbnRlcmFjdE91dHNpZGU6YVsyXXx8KGFbMl09ZT0+cigiaW50ZXJhY3RPdXRzaWRlIixlKSksb25Fc2NhcGVLZXlEb3duOmFbM118fChhWzNdPWU9PnIoImVzY2FwZUtleURvd24iLGUpKSxvblBvaW50ZXJEb3duT3V0c2lkZTphWzRdfHwoYVs0XT10PT57ZS51bnJlZihvKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyh0LnRhcmdldCkmJnQucHJldmVudERlZmF1bHQoKSxyKCJwb2ludGVyRG93bk91dHNpZGUiLHQpfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCgicG9wcGVyIj09PWUudW5yZWYobik/ZS51bnJlZihYKTplLnVucmVmKEIpKSxlLm1lcmdlUHJvcHMoey4uLnQuJGF0dHJzLC4uLmUudW5yZWYoYyl9LHtpZDplLnVucmVmKG8pLmNvbnRlbnRJZCxyZWY6ZS51bnJlZihzKSwiZGF0YS1zdGF0ZSI6ZS51bnJlZihvKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1lbXB0eSI6aS52YWx1ZT8iIjp2b2lkIDAsc3R5bGU6e2Rpc3BsYXk6bC5oaWRlV2hlbkVtcHR5JiZpLnZhbHVlPyJub25lIjoiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdXRsaW5lOiJub25lIiwuLi4icG9wcGVyIj09PWUudW5yZWYobik/ZDp7fX19KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImRhdGEtc3RhdGUiLCJkYXRhLWVtcHR5Iiwic3R5bGUiXSkpXSksXzozfSw4LFsiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIl0pXSksXzozfSldKSxfOjN9KSl9fSksbWU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29tYm9ib3hBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHQpe2NvbnN0IGE9dCxsPW9lKCkscj1jZSgpO3JldHVybiB4KCksKHQsbik9PmUudW5yZWYobCkub3Blbi52YWx1ZSYmInBvcHBlciI9PT1lLnVucmVmKHIpLnBvc2l0aW9uLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihRKSxlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LGEpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pLGZlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94Q2FuY2VsIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cCh0KXtjb25zdCBhPXQ7eCgpO2NvbnN0IGw9b2UoKTtmdW5jdGlvbiBoYW5kbGVDbGljaygpe2wuZmlsdGVyU2VhcmNoLnZhbHVlPSIiLGwuaW5wdXRFbGVtZW50LnZhbHVlJiYobC5pbnB1dEVsZW1lbnQudmFsdWUudmFsdWU9IiIsbC5pbnB1dEVsZW1lbnQudmFsdWUuZm9jdXMoKSksbC5yZXNldE1vZGVsVmFsdWVPbkNsZWFyPy52YWx1ZSYmKGwubW9kZWxWYWx1ZS52YWx1ZT1sLm11bHRpcGxlLnZhbHVlP1tdOm51bGwpfXJldHVybih0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKHt0eXBlOiJidXR0b24iPT09dC5hcz8iYnV0dG9uIjp2b2lkIDB9LGEse3RhYmluZGV4OiItMSIsb25DbGljazpoYW5kbGVDbGlja30pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInR5cGUiXSkpfX0pLGdlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94Q29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWRlV2hlbkVtcHR5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIl0sc2V0dXAodCx7ZW1pdDphfSl7Y29uc3QgbD1yKHQsYSkse2ZvcndhcmRSZWY6bn09eCgpLG89b2UoKTtyZXR1cm4gby5jb250ZW50SWR8fD1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1jb250ZW50IiksKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWKSx7cHJlc2VudDp0LmZvcmNlTW91bnR8fGUudW5yZWYobykub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShwZSxlLm1lcmdlUHJvcHMoey4uLmUudW5yZWYobCksLi4udC4kYXR0cnN9LHtyZWY6ZS51bnJlZihuKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNildKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSx2ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveEVtcHR5Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LGw9b2UoKSxyPWUuY29tcHV0ZWQoKCk9PmwuaWdub3JlRmlsdGVyLnZhbHVlPzA9PT1sLmFsbEl0ZW1zLnZhbHVlLnNpemU6MD09PWwuZmlsdGVyU3RhdGUudmFsdWUuY291bnQpO3JldHVybih0LGwpPT5yLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCKSxlLm5vcm1hbGl6ZVByb3BzKGUubWVyZ2VQcm9wcyh7a2V5OjB9LGEpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bbFswXXx8KGxbMF09ZS5jcmVhdGVUZXh0Vk5vZGUoIk5vIG9wdGlvbnMiKSldKV0pLF86M30sMTYpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pO2NvbnN0W2hlLHllXT1xKCJDb21ib2JveEdyb3VwIik7dmFyIGtlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94R3JvdXAiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQsbD1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1ncm91cCIpLHI9b2UoKSxuPWUuY29tcHV0ZWQoKCk9PiEhci5pZ25vcmVGaWx0ZXIudmFsdWV8fCghci5maWx0ZXJTZWFyY2gudmFsdWV8fHIuZmlsdGVyU3RhdGUudmFsdWUuZ3JvdXBzLmhhcyhsKSkpLG89eWUoe2lkOmwsbGFiZWxJZDoiIn0pO3JldHVybih0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVSksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKGwpLCJhcmlhLWxhYmVsbGVkYnkiOmUudW5yZWYobykubGFiZWxJZH0sYSx7aGlkZGVuOiFuLnZhbHVlfHx2b2lkIDB9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsImhpZGRlbiJdKSl9fSksYmU9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQ29tYm9ib3hJbnB1dCIscHJvcHM6e2Rpc3BsYXlWYWx1ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaW5wdXQifX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxyPWEsbj1vZSgpLG89RSgpLHtwcmltaXRpdmVFbGVtZW50Oml9PWIoKSxzPXcobCwibW9kZWxWYWx1ZSIscix7cGFzc2l2ZTp2b2lkIDA9PT1sLm1vZGVsVmFsdWV9KTtmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGUpe24ub3Blbi52YWx1ZXx8bi5vbk9wZW5DaGFuZ2UoITApfWZ1bmN0aW9uIGhhbmRsZUlucHV0KHQpe2NvbnN0IGE9dC50YXJnZXQ7bi5vcGVuLnZhbHVlP24uZmlsdGVyU2VhcmNoLnZhbHVlPWEudmFsdWU6KG4ub25PcGVuQ2hhbmdlKCEwKSxlLm5leHRUaWNrKCgpPT57YS52YWx1ZSYmKG4uZmlsdGVyU2VhcmNoLnZhbHVlPWEudmFsdWUsby5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9KSl9ZnVuY3Rpb24gaGFuZGxlRm9jdXMoKXtuLm9wZW5PbkZvY3VzLnZhbHVlJiYhbi5vcGVuLnZhbHVlJiZuLm9uT3BlbkNoYW5nZSghMCl9ZnVuY3Rpb24gaGFuZGxlQmx1cihlKXtpZighbi5vcGVuLnZhbHVlKXJldHVybjtjb25zdCB0PWUucmVsYXRlZFRhcmdldDtpZighdClyZXR1cm47Y29uc3QgYT1uLnBhcmVudEVsZW1lbnQudmFsdWU/LmNvbnRhaW5zKHQpLGw9KHZvaWQgMCkuZ2V0RWxlbWVudEJ5SWQobi5jb250ZW50SWQpPy5jb250YWlucyh0KTthfHxsfHxuLm9uT3BlbkNoYW5nZSghMSl9ZnVuY3Rpb24gaGFuZGxlQ2xpY2soKXtuLm9wZW5PbkNsaWNrLnZhbHVlJiYhbi5vcGVuLnZhbHVlJiZuLm9uT3BlbkNoYW5nZSghMCl9ZnVuY3Rpb24gcmVzZXRTZWFyY2hUZXJtKCl7Y29uc3QgdD1uLm1vZGVsVmFsdWUudmFsdWU7bC5kaXNwbGF5VmFsdWU/cy52YWx1ZT1sLmRpc3BsYXlWYWx1ZSh0KTpuLm11bHRpcGxlLnZhbHVlfHwhdHx8QXJyYXkuaXNBcnJheSh0KT9zLnZhbHVlPSIiOnMudmFsdWU9Im9iamVjdCIhPXR5cGVvZiB0P3QudG9TdHJpbmcoKToiIixlLm5leHRUaWNrKCgpPT57cy52YWx1ZT1zLnZhbHVlfSl9cmV0dXJuIG4ub25SZXNldFNlYXJjaFRlcm0oKCk9PntyZXNldFNlYXJjaFRlcm0oKX0pLGUud2F0Y2gobi5tb2RlbFZhbHVlLGFzeW5jKCk9Pnshbi5pc1VzZXJJbnB1dHRlZC52YWx1ZSYmbi5yZXNldFNlYXJjaFRlcm1PblNlbGVjdC52YWx1ZSYmcmVzZXRTZWFyY2hUZXJtKCl9LHtpbW1lZGlhdGU6ITAsZGVlcDohMH0pLGUud2F0Y2gobi5maWx0ZXJTdGF0ZSwoZSx0KT0+e24uaXNWaXJ0dWFsLnZhbHVlfHwwIT09dC5jb3VudHx8by5oaWdobGlnaHRGaXJzdEl0ZW0oKX0pLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoUikse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjppLG1vZGVsVmFsdWU6ZS51bnJlZihzKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8KGFbMF09dD0+ZS5pc1JlZihzKT9zLnZhbHVlPXQ6bnVsbCksYXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiYXV0by1mb2N1cyI6dC5hdXRvRm9jdXMsZGlzYWJsZWQ6dC5kaXNhYmxlZCwiYXJpYS1leHBhbmRlZCI6ZS51bnJlZihuKS5vcGVuLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjplLnVucmVmKG4pLmNvbnRlbnRJZCwiYXJpYS1hdXRvY29tcGxldGUiOiJsaXN0Iixyb2xlOiJjb21ib2JveCIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uQ2xpY2s6aGFuZGxlQ2xpY2ssb25JbnB1dDpoYW5kbGVJbnB1dCxvbktleWRvd246ZS53aXRoS2V5cyhlLndpdGhNb2RpZmllcnMoaGFuZGxlS2V5RG93bixbInByZXZlbnQiXSksWyJkb3duIiwidXAiXSksb25Gb2N1czpoYW5kbGVGb2N1cyxvbkJsdXI6aGFuZGxlQmx1cn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJtb2RlbFZhbHVlIiwiYXMiLCJhcy1jaGlsZCIsImF1dG8tZm9jdXMiLCJkaXNhYmxlZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwib25LZXlkb3duIl0pKX19KSx4ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveEl0ZW0iLHByb3BzOnt0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxyPWEsbj1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1pdGVtIiksbz1vZSgpO2hlKG51bGwpO2NvbnN0e3ByaW1pdGl2ZUVsZW1lbnQ6aX09YigpO2lmKCIiPT09bC52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoIkEgPENvbWJvYm94SXRlbSAvPiBtdXN0IGhhdmUgYSB2YWx1ZSBwcm9wIHRoYXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBDb21ib2JveCB2YWx1ZSBjYW4gYmUgc2V0IHRvIGFuIGVtcHR5IHN0cmluZyB0byBjbGVhciB0aGUgc2VsZWN0aW9uIGFuZCBzaG93IHRoZSBwbGFjZWhvbGRlci4iKTtjb25zdCBzPWUuY29tcHV0ZWQoKCk9PntpZihvLmlzVmlydHVhbC52YWx1ZXx8by5pZ25vcmVGaWx0ZXIudmFsdWV8fCFvLmZpbHRlclNlYXJjaC52YWx1ZSlyZXR1cm4hMDt7Y29uc3QgZT1vLmZpbHRlclN0YXRlLnZhbHVlLml0ZW1zLmdldChuKTtyZXR1cm4gdm9pZCAwPT09ZXx8ZT4wfX0pO3JldHVybih0LGEpPT5zLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihEKSxlLm1lcmdlUHJvcHMoe2tleTowfSxsLHtpZDplLnVucmVmKG4pLHJlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjppLGRpc2FibGVkOmUudW5yZWYobykuZGlzYWJsZWQudmFsdWV8fHQuZGlzYWJsZWQsb25TZWxlY3Q6YVswXXx8KGFbMF09YT0+e3IoInNlbGVjdCIsYSksYS5kZWZhdWx0UHJldmVudGVkfHwoZS51bnJlZihvKS5tdWx0aXBsZS52YWx1ZXx8dC5kaXNhYmxlZHx8ZS51bnJlZihvKS5kaXNhYmxlZC52YWx1ZT9lLnVucmVmKG8pLm11bHRpcGxlLnZhbHVlJiZlLnVucmVmKG8pLmlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTooYS5wcmV2ZW50RGVmYXVsdCgpLGUudW5yZWYobykub25PcGVuQ2hhbmdlKCExKSxlLnVucmVmKG8pLm1vZGVsVmFsdWUudmFsdWU9bC52YWx1ZSkpfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC52YWx1ZSksMSldKV0pLF86M30sMTYsWyJpZCIsImRpc2FibGVkIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pLEJlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94SXRlbUluZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKHQpe2NvbnN0IGE9dDtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEspLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLENlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94TGFiZWwiLHByb3BzOntmb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LHNldHVwKHQpe2NvbnN0IGE9dDt4KCk7Y29uc3QgbD1oZSh7aWQ6IiIsbGFiZWxJZDoiIn0pO3JldHVybiBsLmxhYmVsSWR8fD1MKHZvaWQgMCwicmVrYS1jb21ib2JveC1ncm91cC1sYWJlbCIpLCh0LHIpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKGEse2lkOmUudW5yZWYobCkubGFiZWxJZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxTZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHQpe2NvbnN0IGE9dDtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFMpLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFZlPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10O3JldHVybiB4KCksKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihCKSxlLm1lcmdlUHJvcHMoYSx7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx3ZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJDb21ib2JveFRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHQpe2NvbnN0IGE9dCx7Zm9yd2FyZFJlZjpsfT14KCkscj1vZSgpLG49ZS5jb21wdXRlZCgoKT0+YS5kaXNhYmxlZHx8ci5kaXNhYmxlZC52YWx1ZXx8ITEpO3JldHVybih0LG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQiksZS5tZXJnZVByb3BzKGEse3JlZjplLnVucmVmKGwpLHR5cGU6ImJ1dHRvbiI9PT10LmFzPyJidXR0b24iOnZvaWQgMCx0YWJpbmRleDoiLTEiLCJhcmlhLWxhYmVsIjoiU2hvdyBwb3B1cCIsImFyaWEtaGFzcG9wdXAiOiJsaXN0Ym94IiwiYXJpYS1leHBhbmRlZCI6ZS51bnJlZihyKS5vcGVuLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjplLnVucmVmKHIpLmNvbnRlbnRJZCwiZGF0YS1zdGF0ZSI6ZS51bnJlZihyKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixkaXNhYmxlZDpuLnZhbHVlLCJkYXRhLWRpc2FibGVkIjpuLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1kaXNhYmxlZCI6bi52YWx1ZT8/dm9pZCAwLG9uQ2xpY2s6b1swXXx8KG9bMF09dD0+ZS51bnJlZihyKS5vbk9wZW5DaGFuZ2UoIWUudW5yZWYocikub3Blbi52YWx1ZSkpfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsidHlwZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiXSkpfX0pLEllPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNvbWJvYm94VmlydHVhbGl6ZXIiLHByb3BzOntvcHRpb25zOnt0eXBlOkFycmF5LHJlcXVpcmVkOiEwfSxvdmVyc2Nhbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGVzdGltYXRlU2l6ZTp7dHlwZTpbTnVtYmVyLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sdGV4dENvbnRlbnQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBhPXQ7cmV0dXJuIG9lKCkuaXNWaXJ0dWFsLnZhbHVlPSEwLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGosZS5ub3JtYWxpemVQcm9wcyhlLmd1YXJkUmVhY3RpdmVQcm9wcyhhKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KGE9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLGUubm9ybWFsaXplUHJvcHMoZS5ndWFyZFJlYWN0aXZlUHJvcHMoYSkpKV0pLF86M30sMTYpKX19KTtjb25zdCBxZT17c2xvdHM6e2Jhc2U6WyJyZWxhdGl2ZSBncm91cCByb3VuZGVkLW1kIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxlYWRpbmc6ImFic29sdXRlIGluc2V0LXktMCBzdGFydC0wIGZsZXggaXRlbXMtY2VudGVyIixsZWFkaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIGVuZC0wIGZsZXggaXRlbXMtY2VudGVyIix0cmFpbGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIix2YWx1ZToidHJ1bmNhdGUgcG9pbnRlci1ldmVudHMtbm9uZSIscGxhY2Vob2xkZXI6InRydW5jYXRlIHRleHQtZGltbWVkIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsY29udGVudDpbIm1heC1oLTYwIHctKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aCkgYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBvdmVyZmxvdy1oaWRkZW4gb3JpZ2luLSgtLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGZsZXgtY29sIiwib3JpZ2luLSgtLXJla2EtY29tYm9ib3gtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSB3LSgtLXJla2EtY29tYm9ib3gtdHJpZ2dlci13aWR0aCkiXSx2aWV3cG9ydDoicmVsYXRpdmUgc2Nyb2xsLXB5LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSIsZ3JvdXA6InAtMSBpc29sYXRlIixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsbGFiZWw6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsc2VwYXJhdG9yOiItbXgtMSBteS0xIGgtcHggYmctYm9yZGVyIixpdGVtOlsiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtc3RhcnQgc2VsZWN0LW5vbmUgb3V0bGluZS1ub25lIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTppbnNldC1weCBiZWZvcmU6cm91bmRlZC1tZCBkYXRhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNzUgdGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInNocmluay0wIHRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWdyb3VwLWRhdGEtZGlzYWJsZWQ6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtTGVhZGluZ0NoaXA6InNocmluay0wIixpdGVtTGVhZGluZ0NoaXBTaXplOiIiLGl0ZW1UcmFpbGluZzoibXMtYXV0byBpbmxpbmUtZmxleCBnYXAtMS41IGl0ZW1zLWNlbnRlciIsaXRlbVRyYWlsaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1XcmFwcGVyOiJmbGV4LTEgZmxleCBmbGV4LWNvbCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQiLGlucHV0OiJib3JkZXItYiBib3JkZXItZGVmYXVsdCIsZm9jdXNTY29wZToiZmxleCBmbGV4LWNvbCBtaW4taC0wIix0cmFpbGluZ0NsZWFyOiJwLTAifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1lLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXMtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0iLHZlcnRpY2FsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWItbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtdC1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSJ9LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC14cyBnYXAtMSIsbGVhZGluZzoicHMtMiIsdHJhaWxpbmc6InBlLTIiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xIHRleHQtWzEwcHhdLzMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixlbXB0eToicC0yIHRleHQteHMifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQiLGxhYmVsOiJwLTEuNSB0ZXh0LVsxMHB4XS8zIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMi41IHRleHQteHMifSxtZDp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQtc20gZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMi41IHRleHQtc20ifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtc20gZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSIsbGFiZWw6InAtMiB0ZXh0LXhzIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNSIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibWQiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsZW1wdHk6InAtMyB0ZXh0LXNtIn0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMiLHRyYWlsaW5nOiJwZS0zIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02IixsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS02IixpdGVtTGVhZGluZ0F2YXRhclNpemU6InhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNiIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibGciLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsZW1wdHk6InAtMyB0ZXh0LWJhc2UifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIGhvdmVyOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWRlZmF1bHQiLHNvZnQ6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctZWxldmF0ZWQvNTAiLHN1YnRsZToidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1hY2NlbnRlZC83NSBkaXNhYmxlZDpiZy1lbGV2YXRlZCIsZ2hvc3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctZWxldmF0ZWQgZm9jdXM6YmctZWxldmF0ZWQgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCIsbm9uZToidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCJ9LGNvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSxsZWFkaW5nOnt0cnVlOiIifSx0cmFpbGluZzp7dHJ1ZToiIn0sbG9hZGluZzp7dHJ1ZToiIn0saGlnaGxpZ2h0Ont0cnVlOiIifSxmaXhlZDp7ZmFsc2U6IiJ9LHR5cGU6e2ZpbGU6ImZpbGU6bWUtMS41IGZpbGU6Zm9udC1tZWRpdW0gZmlsZTp0ZXh0LW11dGVkIGZpbGU6b3V0bGluZS1ub25lIn0scG9zaXRpb246e3BvcHBlcjp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIn0sIml0ZW0tYWxpZ25lZCI6e2NvbnRlbnQ6IiJ9fSx2aXJ0dWFsaXplOnt0cnVlOnt2aWV3cG9ydDoicC0xIGlzb2xhdGUifSxmYWxzZTp7dmlld3BvcnQ6ImRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW52ZXJ0ZWQifSx7bGVhZGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBzLTcifSx7bGVhZGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBzLTgifSx7bGVhZGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBzLTkifSx7bGVhZGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBzLTEwIn0se2xlYWRpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwcy0xMSJ9LHt0cmFpbGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBlLTcifSx7dHJhaWxpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwZS04In0se3RyYWlsaW5nOiEwLHNpemU6Im1kIixjbGFzczoicGUtOSJ9LHt0cmFpbGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBlLTEwIn0se3RyYWlsaW5nOiEwLHNpemU6InhsIixjbGFzczoicGUtMTEifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtmaXhlZDohMSxzaXplOiJ4cyIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToic20iLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6Im1kIixjbGFzczoibWQ6dGV4dC1zbSJ9LHtmaXhlZDohMSxzaXplOiJsZyIsY2xhc3M6Im1kOnRleHQtc20ifV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCIsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUiLHBvc2l0aW9uOiJwb3BwZXIifX0semU9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVU2VsZWN0TWVudSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6ZS5tZXJnZU1vZGVscyh7aWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNlYXJjaElucHV0Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzZWxlY3RlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xlYXI6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sY2xlYXJJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sdmlydHVhbGl6ZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifSxkZXNjcmlwdGlvbktleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRlc2NyaXB0aW9uIn0saXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxNb2RpZmllcnM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNyZWF0ZUl0ZW06e3R5cGU6W0Jvb2xlYW4sU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITF9LGZpbHRlckZpZWxkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saWdub3JlRmlsdGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXNEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlc2V0U2VhcmNoVGVybU9uQmx1cjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHJlc2V0U2VhcmNoVGVybU9uU2VsZWN0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0scmVzZXRNb2RlbFZhbHVlT25DbGVhcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGhpZ2hsaWdodE9uSG92ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYnk6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7c2VhcmNoVGVybTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2VhcmNoVGVybU1vZGlmaWVyczp7fX0pLGVtaXRzOmUubWVyZ2VNb2RlbHMoWyJjaGFuZ2UiLCJibHVyIiwiZm9jdXMiLCJjcmVhdGUiLCJjbGVhciIsImhpZ2hsaWdodCIsInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm9wZW4iXSxbInVwZGF0ZTpzZWFyY2hUZXJtIl0pLHNldHVwKGIse2V4cG9zZTp4LGVtaXQ6Qn0pe2NvbnN0IFM9YixWPUIsdz1lLnVzZVNsb3RzKCkscT1lLnVzZU1vZGVsKGIsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSkse3Q6en09dCgpLE49YSgpLEw9bCgic2VsZWN0TWVudSIsUykse2ZpbHRlckdyb3VwczokfT1QKCksVD1yKG4oUywibW9kZWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsIm9wZW4iLCJkZWZhdWx0T3BlbiIsInJlcXVpcmVkIiwibXVsdGlwbGUiLCJyZXNldFNlYXJjaFRlcm1PbkJsdXIiLCJyZXNldFNlYXJjaFRlcm1PblNlbGVjdCIsInJlc2V0TW9kZWxWYWx1ZU9uQ2xlYXIiLCJoaWdobGlnaHRPbkhvdmVyIiwiYnkiKSxWKSxNPW8oZS50b1JlZigoKT0+Uy5wb3J0YWwpKSxPPWUudG9SZWYoKCk9PlkoUy5jb250ZW50LHtzaWRlOiJib3R0b20iLHNpZGVPZmZzZXQ6OCxjb2xsaXNpb25QYWRkaW5nOjgscG9zaXRpb246InBvcHBlciJ9KSksQT1lLnRvUmVmKCgpPT5ZKFMuYXJyb3cse3JvdW5kZWQ6ITB9KSksRD1lLmNvbXB1dGVkKCgpPT4ib2JqZWN0Ij09dHlwZW9mIFMuY2xlYXI/Uy5jbGVhcjp7fSksSz1lLnRvUmVmKCgpPT4hIVMudmlydHVhbGl6ZSYmWSgiYm9vbGVhbiI9PXR5cGVvZiBTLnZpcnR1YWxpemU/e306Uy52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6RihBZS52YWx1ZSx6ZS52YWx1ZXx8Im1kIixTLmRlc2NyaXB0aW9uS2V5LCEhd1siaXRlbS1kZXNjcmlwdGlvbiJdKX0pKSxFPWUudG9SZWYoKCk9PlkoUy5zZWFyY2hJbnB1dCx7cGxhY2Vob2xkZXI6eigic2VsZWN0TWVudS5zZWFyY2giKSx2YXJpYW50OiJub25lIn0pKSx7ZW1pdEZvcm1CbHVyOlIsZW1pdEZvcm1Gb2N1czpqLGVtaXRGb3JtSW5wdXQ6VSxlbWl0Rm9ybUNoYW5nZTpXLHNpemU6Ryxjb2xvcjpILGlkOlEsbmFtZTpKLGhpZ2hsaWdodDpaLGRpc2FibGVkOlgsYXJpYUF0dHJzOm9lfT1pKFMpLHtvcmllbnRhdGlvbjppZSxzaXplOmNlfT1zKFMpLHtpc0xlYWRpbmc6ZGUsaXNUcmFpbGluZzpwZSxsZWFkaW5nSWNvbk5hbWU6aGUsdHJhaWxpbmdJY29uTmFtZTp5ZX09dShlLnRvUmVmKCgpPT5ZKFMse3RyYWlsaW5nSWNvbjpOLnVpLmljb25zLmNoZXZyb25Eb3dufSkpKSx6ZT1lLmNvbXB1dGVkKCgpPT5jZS52YWx1ZXx8Ry52YWx1ZSksW05lLF9lXT1jKCksW0xlLCRlXT1jKHtwcm9wczp7aXRlbTp7dHlwZTpbT2JqZWN0LFN0cmluZyxOdW1iZXIsQm9vbGVhbl0scmVxdWlyZWQ6ITB9LGluZGV4Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX19fSksVGU9ZS5jb21wdXRlZCgoKT0+ZCh7ZXh0ZW5kOmQocWUpLC4uLk4udWk/LnNlbGVjdE1lbnV8fHt9fSkoe2NvbG9yOkgudmFsdWUsdmFyaWFudDpTLnZhcmlhbnQsc2l6ZTp6ZT8udmFsdWUsbG9hZGluZzpTLmxvYWRpbmcsaGlnaGxpZ2h0OloudmFsdWUsbGVhZGluZzpkZS52YWx1ZXx8ISFTLmF2YXRhcnx8ISF3LmxlYWRpbmcsdHJhaWxpbmc6cGUudmFsdWV8fCEhdy50cmFpbGluZyxmaWVsZEdyb3VwOmllLnZhbHVlLHZpcnR1YWxpemU6ISFTLnZpcnR1YWxpemV9KSk7ZnVuY3Rpb24gZGlzcGxheVZhbHVlKGUpe2lmKFMubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9ZS5tYXAoZT0+QyhPZS52YWx1ZSxlLHtsYWJlbEtleTpTLmxhYmVsS2V5LHZhbHVlS2V5OlMudmFsdWVLZXksYnk6Uy5ieX0pKS5maWx0ZXIoZT0+bnVsbCE9ZSYmIiIhPT1lKTtyZXR1cm4gdC5sZW5ndGg+MD90LmpvaW4oIiwgIik6dm9pZCAwfXJldHVybiBDKE9lLnZhbHVlLGUse2xhYmVsS2V5OlMubGFiZWxLZXksdmFsdWVLZXk6Uy52YWx1ZUtleSxieTpTLmJ5fSl9Y29uc3QgTWU9ZS5jb21wdXRlZCgoKT0+Uy5pdGVtcz8ubGVuZ3RoP3AoUy5pdGVtcyk/Uy5pdGVtczpbUy5pdGVtc106W10pLE9lPWUuY29tcHV0ZWQoKCk9Pk1lLnZhbHVlLmZsYXRNYXAoZT0+ZSkpLFBlPWUuY29tcHV0ZWQoKCk9PntpZihTLmlnbm9yZUZpbHRlcnx8IXEudmFsdWUpcmV0dXJuIE1lLnZhbHVlO2NvbnN0IGU9QXJyYXkuaXNBcnJheShTLmZpbHRlckZpZWxkcyk/Uy5maWx0ZXJGaWVsZHM6W1MubGFiZWxLZXldO3JldHVybiAkKE1lLnZhbHVlLHEudmFsdWUse2ZpZWxkczplLGlzU3RydWN0dXJhbDplPT5pc1NlbGVjdEl0ZW0oZSkmJiEhZS50eXBlJiZbImxhYmVsIiwic2VwYXJhdG9yIl0uaW5jbHVkZXMoZS50eXBlKX0pfSksQWU9ZS5jb21wdXRlZCgoKT0+UGUudmFsdWUuZmxhdE1hcChlPT5lKSksRmU9ZS5jb21wdXRlZCgoKT0+e2lmKCFTLmNyZWF0ZUl0ZW18fCFxLnZhbHVlKXJldHVybiExO2NvbnN0IGU9Uy52YWx1ZUtleT97W1MudmFsdWVLZXldOnEudmFsdWV9OnEudmFsdWU7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBTLmNyZWF0ZUl0ZW0mJiJhbHdheXMiPT09Uy5jcmVhdGVJdGVtLndoZW58fCJhbHdheXMiPT09Uy5jcmVhdGVJdGVtPyFBZS52YWx1ZS5maW5kKHQ9Pm0odCxlLFMuYnk/P1MudmFsdWVLZXkpKTohQWUudmFsdWUubGVuZ3RofSksRGU9ZS5jb21wdXRlZCgoKT0+Im9iamVjdCI9PXR5cGVvZiBTLmNyZWF0ZUl0ZW0/Uy5jcmVhdGVJdGVtLnBvc2l0aW9uOiJib3R0b20iKSxLZT1lLnVzZVRlbXBsYXRlUmVmKCJ0cmlnZ2VyUmVmIik7ZnVuY3Rpb24gb25VcGRhdGUodCl7aWYoZS50b1JhdyhTLm1vZGVsVmFsdWUpPT09dClyZXR1cm47IVMubW9kZWxNb2RpZmllcnM/LnRyaW18fCJzdHJpbmciIT10eXBlb2YgdCYmbnVsbCE9dHx8KHQ9dD8udHJpbSgpPz9udWxsKSxTLm1vZGVsTW9kaWZpZXJzPy5udW1iZXImJih0PUkodCkpLFMubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiYodD8/PW51bGwpLFMubW9kZWxNb2RpZmllcnM/Lm9wdGlvbmFsJiYhUy5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJm51bGwhPT10JiYodD8/PXZvaWQgMCk7Y29uc3QgYT1uZXcgRXZlbnQoImNoYW5nZSIse3RhcmdldDp7dmFsdWU6dH19KTtWKCJjaGFuZ2UiLGEpLFcoKSxVKCksUy5yZXNldFNlYXJjaFRlcm1PblNlbGVjdCYmKHEudmFsdWU9IiIpfWZ1bmN0aW9uIG9uVXBkYXRlT3BlbihlKXtsZXQgdDtpZihlKXtjb25zdCBlPW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO1YoImZvY3VzIixlKSxqKCksY2xlYXJUaW1lb3V0KHQpfWVsc2V7Y29uc3QgZT1uZXcgRm9jdXNFdmVudCgiYmx1ciIpO2lmKFYoImJsdXIiLGUpLFIoKSxTLnJlc2V0U2VhcmNoVGVybU9uQmx1cil7dD1zZXRUaW1lb3V0KCgpPT57cS52YWx1ZT0iIn0sMTAwKX19fWZ1bmN0aW9uIG9uQ3JlYXRlKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLFYoImNyZWF0ZSIscS52YWx1ZSl9ZnVuY3Rpb24gb25TZWxlY3QoZSx0KXtpc1NlbGVjdEl0ZW0odCkmJih0LmRpc2FibGVkP2UucHJldmVudERlZmF1bHQoKTp0Lm9uU2VsZWN0Py4oZSkpfWZ1bmN0aW9uIGlzU2VsZWN0SXRlbShlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfWZ1bmN0aW9uIGlzTW9kZWxWYWx1ZUVtcHR5KGUpe3JldHVybiBTLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KGUpPzA9PT1lLmxlbmd0aDpudWxsPT1lfHwiIj09PWV9ZnVuY3Rpb24gb25DbGVhcigpe1YoImNsZWFyIil9Y29uc3QgRWU9ZS51c2VUZW1wbGF0ZVJlZigidmlld3BvcnRSZWYiKTtyZXR1cm4geCh7dHJpZ2dlclJlZjplLnRvUmVmKCgpPT5LZS52YWx1ZT8uJGVsKSx2aWV3cG9ydFJlZjplLnRvUmVmKCgpPT5FZS52YWx1ZSl9KSwodCxhLGwscik9PnthKCJceDNjIS0tWy0tXHgzZSIpLGEodGUoZS51bnJlZihOZSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGEsbCxyLG4pPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih4ZSkseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpUZS52YWx1ZS5pdGVtKHtjbGFzczplLnVucmVmKEwpPy5pdGVtfSksdmFsdWU6cS52YWx1ZSxvblNlbGVjdDpvbkNyZWF0ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOlRlLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6ZS51bnJlZihMKT8uaXRlbUxhYmVsfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImNyZWF0ZS1pdGVtLWxhYmVsIix7aXRlbTpxLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoeikoInNlbGVjdE1lbnUuY3JlYXRlIix7bGFiZWw6cS52YWx1ZX0pKSwxKV0pXSwyKV0pLF86M30sOCxbImNsYXNzIiwidmFsdWUiXSldO2wodGUoZS51bnJlZih4ZSkseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpUZS52YWx1ZS5pdGVtKHtjbGFzczplLnVucmVmKEwpPy5pdGVtfSksdmFsdWU6cS52YWx1ZSxvblNlbGVjdDpvbkNyZWF0ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6VGUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczplLnVucmVmKEwpPy5pdGVtTGFiZWx9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiY3JlYXRlLWl0ZW0tbGFiZWwiLHtpdGVtOnEudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZih6KSgic2VsZWN0TWVudS5jcmVhdGUiLHtsYWJlbDpxLnZhbHVlfSkpLDEpXSldLDIpXTtsKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbCIgY2xhc3M9IiR7YWUoVGUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczplLnVucmVmKEwpPy5pdGVtTGFiZWx9KSl9IiR7bn0+YCksbGUodC4kc2xvdHMsImNyZWF0ZS1pdGVtLWxhYmVsIix7aXRlbTpxLnZhbHVlfSwoKT0+e2woYCR7cmUoZS51bnJlZih6KSgic2VsZWN0TWVudS5jcmVhdGUiLHtsYWJlbDpxLnZhbHVlfSkpfWApfSxsLHIsbiksbCgiPC9zcGFuPiIpfSksXzozfSxyLG4pKX0pLF86M30sbCkpLGEodGUoZS51bnJlZihMZSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKHtpdGVtOmEsaW5kZXg6bH0scixuLG8pPT57aWYoIXIpcmV0dXJuW2lzU2VsZWN0SXRlbShhKSYmImxhYmVsIj09PWEudHlwZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQ2UpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlRlLnZhbHVlLmxhYmVsKHtjbGFzczpbZS51bnJlZihMKT8ubGFiZWwsYS51aT8ubGFiZWwsYS5jbGFzc119KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLFMubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJiJzZXBhcmF0b3IiPT09YS50eXBlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWZSkse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOlRlLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoTCk/LnNlcGFyYXRvcixhLnVpPy5zZXBhcmF0b3IsYS5jbGFzc119KX0sbnVsbCw4LFsiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih4ZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpUZS52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW0saXNTZWxlY3RJdGVtKGEpJiZhLmNsYXNzXX0pLGRpc2FibGVkOmlzU2VsZWN0SXRlbShhKSYmYS5kaXNhYmxlZCx2YWx1ZTpTLnZhbHVlS2V5JiZpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLFMudmFsdWVLZXkpOmEsb25TZWxlY3Q6ZT0+b25TZWxlY3QoZSxhKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmEsaW5kZXg6bCx1aTpUZS52YWx1ZX0sKCk9Pltpc1NlbGVjdEl0ZW0oYSkmJmEuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcse2tleTowLG5hbWU6YS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nSWNvbixhLnVpPy5pdGVtTGVhZGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aXNTZWxlY3RJdGVtKGEpJiZhLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHYsZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sYS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhcixhLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soaCxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6YS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8VGUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGEuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxlYWRpbmdDaGlwLGEudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOlRlLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczpUZS52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtTGFiZWwsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtTGFiZWxdfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6bH0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhpc1NlbGVjdEl0ZW0oYSk/ZS51bnJlZihmKShhLFMubGFiZWxLZXkpOmEpLDEpXSldLDIpLGlzU2VsZWN0SXRlbShhKSYmKGUudW5yZWYoZikoYSxTLmRlc2NyaXB0aW9uS2V5KXx8d1siaXRlbS1kZXNjcmlwdGlvbiJdKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6VGUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihmKShhLFMuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6VGUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9KSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQmUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGcse25hbWU6Yi5zZWxlY3RlZEljb258fGUudW5yZWYoTikudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtVHJhaWxpbmdJY29uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV07aXNTZWxlY3RJdGVtKGEpJiYibGFiZWwiPT09YS50eXBlP3IodGUoZS51bnJlZihDZSkseyJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6VGUudmFsdWUubGFiZWwoe2NsYXNzOltlLnVucmVmKEwpPy5sYWJlbCxhLnVpPy5sYWJlbCxhLmNsYXNzXX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxyLG4pPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxTLmxhYmVsS2V5KSksMSldO2woYCR7cmUoZS51bnJlZihmKShhLFMubGFiZWxLZXkpKX1gKX0pLF86Mn0sbixvKSk6aXNTZWxlY3RJdGVtKGEpJiYic2VwYXJhdG9yIj09PWEudHlwZT9yKHRlKGUudW5yZWYoVmUpLHsiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpUZS52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOltlLnVucmVmKEwpPy5zZXBhcmF0b3IsYS51aT8uc2VwYXJhdG9yLGEuY2xhc3NdfSl9LG51bGwsbixvKSk6cih0ZShlLnVucmVmKHhlKSx7ImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOlRlLnZhbHVlLml0ZW0oe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbSxpc1NlbGVjdEl0ZW0oYSkmJmEuY2xhc3NdfSksZGlzYWJsZWQ6aXNTZWxlY3RJdGVtKGEpJiZhLmRpc2FibGVkLHZhbHVlOlMudmFsdWVLZXkmJmlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsUy52YWx1ZUtleSk6YSxvblNlbGVjdDplPT5vblNlbGVjdChlLGEpfSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixvLGkpPT57aWYoIW4pcmV0dXJuW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbSIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1sZWFkaW5nIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9LCgpPT5baXNTZWxlY3RJdGVtKGEpJiZhLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MCxuYW1lOmEuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKEwpPy5pdGVtTGVhZGluZ0ljb24sYS51aT8uaXRlbUxlYWRpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmlzU2VsZWN0SXRlbShhKSYmYS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh2LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTphLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LGEuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXIsYS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGgsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczpUZS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1XcmFwcGVyLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6VGUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxhYmVsLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbUxhYmVsXX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTphLGluZGV4Omx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaXNTZWxlY3RJdGVtKGEpP2UudW5yZWYoZikoYSxTLmxhYmVsS2V5KTphKSwxKV0pXSwyKSxpc1NlbGVjdEl0ZW0oYSkmJihlLnVucmVmKGYpKGEsUy5kZXNjcmlwdGlvbktleSl8fHdbIml0ZW0tZGVzY3JpcHRpb24iXSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOlRlLnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1EZXNjcmlwdGlvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDpsfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoZikoYSxTLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMiksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOlRlLnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1UcmFpbGluZyxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSksZS5jcmVhdGVWTm9kZShlLnVucmVmKEJlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShnLHtuYW1lOmIuc2VsZWN0ZWRJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpUZS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVRyYWlsaW5nSWNvbixpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldO2xlKHQuJHNsb3RzLCJpdGVtIix7aXRlbTphLGluZGV4OmwsdWk6VGUudmFsdWV9LCgpPT57bGUodC4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSwoKT0+e2lzU2VsZWN0SXRlbShhKSYmYS5pY29uP24odGUoZyx7bmFtZTphLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbUxlYWRpbmdJY29uLGEudWk/Lml0ZW1MZWFkaW5nSWNvbl19KX0sbnVsbCxvLGkpKTppc1NlbGVjdEl0ZW0oYSkmJmEuYXZhdGFyP24odGUodixlLm1lcmdlUHJvcHMoe3NpemU6YS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxhLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyLGEudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCxvLGkpKTppc1NlbGVjdEl0ZW0oYSkmJmEuY2hpcD9uKHRlKGgsZS5tZXJnZVByb3BzKHtzaXplOmEudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSxhLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOlRlLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQ2hpcCxhLnVpPy5pdGVtTGVhZGluZ0NoaXBdfSl9KSxudWxsLG8saSkpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixvLGkpLG4oYDxzcGFuIGRhdGEtc2xvdD0iaXRlbVdyYXBwZXIiIGNsYXNzPSIke2FlKFRlLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVdyYXBwZXIsaXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtV3JhcHBlcl19KSl9IiR7aX0+PHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWwiIGNsYXNzPSIke2FlKFRlLnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1MYWJlbCxpc1NlbGVjdEl0ZW0oYSkmJmEudWk/Lml0ZW1MYWJlbF19KSl9IiR7aX0+YCksbGUodC4kc2xvdHMsIml0ZW0tbGFiZWwiLHtpdGVtOmEsaW5kZXg6bH0sKCk9PntuKGAke3JlKGlzU2VsZWN0SXRlbShhKT9lLnVucmVmKGYpKGEsUy5sYWJlbEtleSk6YSl9YCl9LG4sbyxpKSxuKCI8L3NwYW4+IiksaXNTZWxlY3RJdGVtKGEpJiYoZS51bnJlZihmKShhLFMuZGVzY3JpcHRpb25LZXkpfHx3WyJpdGVtLWRlc2NyaXB0aW9uIl0pPyhuKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1EZXNjcmlwdGlvbiIgY2xhc3M9IiR7YWUoVGUudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbURlc2NyaXB0aW9uLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0iJHtpfT5gKSxsZSh0LiRzbG90cywiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06YSxpbmRleDpsfSwoKT0+e24oYCR7cmUoZS51bnJlZihmKShhLFMuZGVzY3JpcHRpb25LZXkpKX1gKX0sbixvLGkpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpLG4oYDwvc3Bhbj48c3BhbiBkYXRhLXNsb3Q9Iml0ZW1UcmFpbGluZyIgY2xhc3M9IiR7YWUoVGUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihMKT8uaXRlbVRyYWlsaW5nLGlzU2VsZWN0SXRlbShhKSYmYS51aT8uaXRlbVRyYWlsaW5nXX0pKX0iJHtpfT5gKSxsZSh0LiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06YSxpbmRleDpsLHVpOlRlLnZhbHVlfSxudWxsLG4sbyxpKSxuKHRlKGUudW5yZWYoQmUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxyLG4pPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZyx7bmFtZTpiLnNlbGVjdGVkSWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldO2wodGUoZyx7bmFtZTpiLnNlbGVjdGVkSWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoTCk/Lml0ZW1UcmFpbGluZ0ljb24saXNTZWxlY3RJdGVtKGEpJiZhLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLHIsbikpfSksXzoyfSxvLGkpKSxuKCI8L3NwYW4+Iil9LG4sbyxpKX0pLF86Mn0sbixvKSl9KSxfOjN9LGwpKSxhKHRlKGUudW5yZWYoc2UpLGUubWVyZ2VQcm9wcyh7aWQ6ZS51bnJlZihRKX0sey4uLmUudW5yZWYoVCksLi4udC4kYXR0cnMsLi4uZS51bnJlZihvZSl9LHsiaWdub3JlLWZpbHRlciI6IiIsImFzLWNoaWxkIjoiIixuYW1lOmUudW5yZWYoSiksZGlzYWJsZWQ6ZS51bnJlZihYKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b25VcGRhdGUsIm9uVXBkYXRlOm9wZW4iOm9uVXBkYXRlT3Blbn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe21vZGVsVmFsdWU6YSxvcGVuOmx9LHIsbixvKT0+e2lmKCFyKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYod2UpLHtyZWZfa2V5OiJ0cmlnZ2VyUmVmIixyZWY6S2UsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOlRlLnZhbHVlLmJhc2Uoe2NsYXNzOltlLnVucmVmKEwpPy5iYXNlLFMuY2xhc3NdfSksdGFiaW5kZXg6IjAifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnVucmVmKGRlKXx8Yi5hdmF0YXJ8fHcubGVhZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOlRlLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUudW5yZWYoTCk/LmxlYWRpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bZS51bnJlZihkZSkmJmUudW5yZWYoaGUpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZyx7a2V5OjAsbmFtZTplLnVucmVmKGhlKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy5sZWFkaW5nSWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmIuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodixlLm1lcmdlUHJvcHMoe2tleToxLHNpemU6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sYi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOlRlLnZhbHVlfSwoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFtkaXNwbGF5VmFsdWUoYSldLHQ9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OnR9LFtudWxsIT10PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoidmFsdWUiLGNsYXNzOlRlLnZhbHVlLnZhbHVlKHtjbGFzczplLnVucmVmKEwpPy52YWx1ZX0pfSxlLnRvRGlzcGxheVN0cmluZyh0KSwzKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJwbGFjZWhvbGRlciIsY2xhc3M6VGUudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmUudW5yZWYoTCk/LnBsYWNlaG9sZGVyfSl9LGUudG9EaXNwbGF5U3RyaW5nKGIucGxhY2Vob2xkZXI/PyLCoCIpLDMpKV0sNjQpKSksMTI4KSldKSxlLnVucmVmKHBlKXx8dy50cmFpbGluZ3x8Yi5jbGVhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczpUZS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmd9KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOmEsb3BlbjpsLHVpOlRlLnZhbHVlfSwoKT0+W2IuY2xlYXImJiFpc01vZGVsVmFsdWVFbXB0eShhKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKHksZS5tZXJnZVByb3BzKHthczoic3BhbiIsaWNvbjpiLmNsZWFySWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jbG9zZSxzaXplOnplLnZhbHVlLHZhcmlhbnQ6ImxpbmsiLGNvbG9yOiJuZXV0cmFsIix0YWJpbmRleDoiLTEifSxELnZhbHVlLHsiZGF0YS1zbG90IjoidHJhaWxpbmdDbGVhciIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdDbGVhcih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdDbGVhcn0pLG9uQ2xpY2s6ZS53aXRoTW9kaWZpZXJzKG9uQ2xlYXIsWyJzdG9wIl0pfSksbnVsbCwxNixbImljb24iLCJzaXplIiwiY2xhc3MiXSldKSxfOjF9KSk6ZS51bnJlZih5ZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MSxuYW1lOmUudW5yZWYoeWUpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV0pLF86Mn0sMTAyNCksZS5jcmVhdGVWTm9kZShlLnVucmVmKFNlKSxlLnVucmVmKE0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihrKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihnZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6VGUudmFsdWUuY29udGVudCh7Y2xhc3M6ZS51bnJlZihMKT8uY29udGVudH0pfSxPLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoXykse3RyYXBwZWQ6IiIsImRhdGEtc2xvdCI6ImZvY3VzU2NvcGUiLGNsYXNzOlRlLnZhbHVlLmZvY3VzU2NvcGUoe2NsYXNzOmUudW5yZWYoTCk/LmZvY3VzU2NvcGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LXRvcCIpLGIuc2VhcmNoSW5wdXQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGJlKSx7a2V5OjAsbW9kZWxWYWx1ZTpxLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5xLnZhbHVlPWUsImRpc3BsYXktdmFsdWUiOigpPT5xLnZhbHVlLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZWUsZS5tZXJnZVByb3BzKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6emUudmFsdWV9LEUudmFsdWUseyJtb2RlbC1tb2RpZmllcnMiOnt0cmltOmIubW9kZWxNb2RpZmllcnM/LnRyaW19LCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6VGUudmFsdWUuaW5wdXQoe2NsYXNzOmUudW5yZWYoTCk/LmlucHV0fSksb25DaGFuZ2U6ZS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInN0b3AiXSl9KSxudWxsLDE2LFsic2l6ZSIsIm1vZGVsLW1vZGlmaWVycyIsImNsYXNzIiwib25DaGFuZ2UiXSldKSxfOjF9LDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsImRpc3BsYXktdmFsdWUiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYodmUpLHsiZGF0YS1zbG90IjoiZW1wdHkiLGNsYXNzOlRlLnZhbHVlLmVtcHR5KHtjbGFzczplLnVucmVmKEwpPy5lbXB0eX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpxLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHEudmFsdWU/ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub01hdGNoIix7c2VhcmNoVGVybTpxLnZhbHVlfSk6ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub0RhdGEiKSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pLGUuY3JlYXRlVk5vZGUoImRpdiIse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6RWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOlRlLnZhbHVlLnZpZXdwb3J0KHtjbGFzczplLnVucmVmKEwpPy52aWV3cG9ydH0pfSxbYi52aXJ0dWFsaXplPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LFtGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoX2UpLHtrZXk6MH0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKEllKSxlLm1lcmdlUHJvcHMoe29wdGlvbnM6QWUudmFsdWUsInRleHQtY29udGVudCI6dD0+aXNTZWxlY3RJdGVtKHQpP2UudW5yZWYoZikodCxTLmxhYmVsS2V5KTpTdHJpbmcodCl9LEsudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoe29wdGlvbjp0LHZpcnR1YWxJdGVtOmF9KT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZigkZSkse2l0ZW06dCxpbmRleDphLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldKSxfOjF9LDE2LFsib3B0aW9ucyIsInRleHQtY29udGVudCJdKSxGZS52YWx1ZSYmImJvdHRvbSI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoX2UpLHtrZXk6MX0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MX0sW0ZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleTowLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfZSkpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChQZS52YWx1ZSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OmBncm91cC0ke2F9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0LCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJGUpLHtrZXk6YGdyb3VwLSR7YX0tJHtsfWAsaXRlbTp0LGluZGV4Omx9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKSxGZS52YWx1ZSYmImJvdHRvbSI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6MSwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV0pLF86MX0sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSldLDIpLGUucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC1ib3R0b20iKV0pLF86M30sOCxbImNsYXNzIl0pLGIuYXJyb3c/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSxlLm1lcmdlUHJvcHMoe2tleTowfSxBLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOlRlLnZhbHVlLmFycm93KHtjbGFzczplLnVucmVmKEwpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldKSxfOjN9KV0pLF86M30sMTYpXTtyKHRlKGUudW5yZWYodWUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixvLGkpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZih3ZSkse3JlZl9rZXk6InRyaWdnZXJSZWYiLHJlZjpLZSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6VGUudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoTCk/LmJhc2UsUy5jbGFzc119KSx0YWJpbmRleDoiMCJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UudW5yZWYoZGUpfHxiLmF2YXRhcnx8dy5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6VGUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihMKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PltlLnVucmVmKGRlKSYmZS51bnJlZihoZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MCxuYW1lOmUudW5yZWYoaGUpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoTCk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6Yi5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh2LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxiLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoW2Rpc3BsYXlWYWx1ZShhKV0sdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6dH0sW251bGwhPXQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ2YWx1ZSIsY2xhc3M6VGUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoTCk/LnZhbHVlfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQpLDMpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InBsYWNlaG9sZGVyIixjbGFzczpUZS52YWx1ZS5wbGFjZWhvbGRlcih7Y2xhc3M6ZS51bnJlZihMKT8ucGxhY2Vob2xkZXJ9KX0sZS50b0Rpc3BsYXlTdHJpbmcoYi5wbGFjZWhvbGRlcj8/IsKgIiksMykpXSw2NCkpKSwxMjgpKV0pLGUudW5yZWYocGUpfHx3LnRyYWlsaW5nfHxiLmNsZWFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0cmFpbGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bYi5jbGVhciYmIWlzTW9kZWxWYWx1ZUVtcHR5KGEpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoeSxlLm1lcmdlUHJvcHMoe2FzOiJzcGFuIixpY29uOmIuY2xlYXJJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNsb3NlLHNpemU6emUudmFsdWUsdmFyaWFudDoibGluayIsY29sb3I6Im5ldXRyYWwiLHRhYmluZGV4OiItMSJ9LEQudmFsdWUseyJkYXRhLXNsb3QiOiJ0cmFpbGluZ0NsZWFyIixjbGFzczpUZS52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazplLndpdGhNb2RpZmllcnMob25DbGVhcixbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsInNpemUiLCJjbGFzcyJdKV0pLF86MX0pKTplLnVucmVmKHllKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcse2tleToxLG5hbWU6ZS51bnJlZih5ZSksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXTtuKHRlKGUudW5yZWYod2UpLHtyZWZfa2V5OiJ0cmlnZ2VyUmVmIixyZWY6S2UsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOlRlLnZhbHVlLmJhc2Uoe2NsYXNzOltlLnVucmVmKEwpPy5iYXNlLFMuY2xhc3NdfSksdGFiaW5kZXg6IjAifSx7ZGVmYXVsdDplLndpdGhDdHgoKHIsbixvLGkpPT57aWYoIW4pcmV0dXJuW2UudW5yZWYoZGUpfHxiLmF2YXRhcnx8dy5sZWFkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6VGUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihMKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PltlLnVucmVmKGRlKSYmZS51bnJlZihoZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhnLHtrZXk6MCxuYW1lOmUudW5yZWYoaGUpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUudW5yZWYoTCk/LmxlYWRpbmdJY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6Yi5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayh2LGUubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTplLnVucmVmKEwpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fFRlLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxiLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczpUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoW2Rpc3BsYXlWYWx1ZShhKV0sdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6dH0sW251bGwhPXQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ2YWx1ZSIsY2xhc3M6VGUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoTCk/LnZhbHVlfSl9LGUudG9EaXNwbGF5U3RyaW5nKHQpLDMpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InBsYWNlaG9sZGVyIixjbGFzczpUZS52YWx1ZS5wbGFjZWhvbGRlcih7Y2xhc3M6ZS51bnJlZihMKT8ucGxhY2Vob2xkZXJ9KX0sZS50b0Rpc3BsYXlTdHJpbmcoYi5wbGFjZWhvbGRlcj8/IsKgIiksMykpXSw2NCkpKSwxMjgpKV0pLGUudW5yZWYocGUpfHx3LnRyYWlsaW5nfHxiLmNsZWFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ30pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJ0cmFpbGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT5bYi5jbGVhciYmIWlzTW9kZWxWYWx1ZUVtcHR5KGEpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoeSxlLm1lcmdlUHJvcHMoe2FzOiJzcGFuIixpY29uOmIuY2xlYXJJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNsb3NlLHNpemU6emUudmFsdWUsdmFyaWFudDoibGluayIsY29sb3I6Im5ldXRyYWwiLHRhYmluZGV4OiItMSJ9LEQudmFsdWUseyJkYXRhLXNsb3QiOiJ0cmFpbGluZ0NsZWFyIixjbGFzczpUZS52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazplLndpdGhNb2RpZmllcnMob25DbGVhcixbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsInNpemUiLCJjbGFzcyJdKV0pLF86MX0pKTplLnVucmVmKHllKT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGcse2tleToxLG5hbWU6ZS51bnJlZih5ZSksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07ZS51bnJlZihkZSl8fGIuYXZhdGFyfHx3LmxlYWRpbmc/KG4oYDxzcGFuIGRhdGEtc2xvdD0ibGVhZGluZyIgY2xhc3M9IiR7YWUoVGUudmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihMKT8ubGVhZGluZ30pKX0iJHtpfT5gKSxsZSh0LiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6YSxvcGVuOmwsdWk6VGUudmFsdWV9LCgpPT57ZS51bnJlZihkZSkmJmUudW5yZWYoaGUpP24odGUoZyx7bmFtZTplLnVucmVmKGhlKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEwpPy5sZWFkaW5nSWNvbn0pfSxudWxsLG8saSkpOmIuYXZhdGFyP24odGUodixlLm1lcmdlUHJvcHMoe3NpemU6ZS51bnJlZihMKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxUZS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sYi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6VGUudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOmUudW5yZWYoTCk/Lml0ZW1MZWFkaW5nQXZhdGFyfSl9KSxudWxsLG8saSkpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixvLGkpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpLGxlKHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PntuKCJceDNjIS0tWy0tXHgzZSIpLG5lKFtkaXNwbGF5VmFsdWUoYSldLHQ9PntuKCJceDNjIS0tWy0tXHgzZSIpLG4obnVsbCE9dD9gPHNwYW4gZGF0YS1zbG90PSJ2YWx1ZSIgY2xhc3M9IiR7YWUoVGUudmFsdWUudmFsdWUoe2NsYXNzOmUudW5yZWYoTCk/LnZhbHVlfSkpfSIke2l9PiR7cmUodCl9PC9zcGFuPmA6YDxzcGFuIGRhdGEtc2xvdD0icGxhY2Vob2xkZXIiIGNsYXNzPSIke2FlKFRlLnZhbHVlLnBsYWNlaG9sZGVyKHtjbGFzczplLnVucmVmKEwpPy5wbGFjZWhvbGRlcn0pKX0iJHtpfT4ke3JlKGIucGxhY2Vob2xkZXI/PyLCoCIpfTwvc3Bhbj5gKSxuKCJceDNjIS0tXS0tXHgzZSIpfSksbigiXHgzYyEtLV0tLVx4M2UiKX0sbixvLGkpLGUudW5yZWYocGUpfHx3LnRyYWlsaW5nfHxiLmNsZWFyPyhuKGA8c3BhbiBkYXRhLXNsb3Q9InRyYWlsaW5nIiBjbGFzcz0iJHthZShUZS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmd9KSl9IiR7aX0+YCksbGUodC4kc2xvdHMsInRyYWlsaW5nIix7bW9kZWxWYWx1ZTphLG9wZW46bCx1aTpUZS52YWx1ZX0sKCk9PntiLmNsZWFyJiYhaXNNb2RlbFZhbHVlRW1wdHkoYSk/bih0ZShlLnVucmVmKGZlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbCxyKT0+e2lmKCFhKXJldHVybltlLmNyZWF0ZVZOb2RlKHksZS5tZXJnZVByb3BzKHthczoic3BhbiIsaWNvbjpiLmNsZWFySWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5jbG9zZSxzaXplOnplLnZhbHVlLHZhcmlhbnQ6ImxpbmsiLGNvbG9yOiJuZXV0cmFsIix0YWJpbmRleDoiLTEifSxELnZhbHVlLHsiZGF0YS1zbG90IjoidHJhaWxpbmdDbGVhciIsY2xhc3M6VGUudmFsdWUudHJhaWxpbmdDbGVhcih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdDbGVhcn0pLG9uQ2xpY2s6ZS53aXRoTW9kaWZpZXJzKG9uQ2xlYXIsWyJzdG9wIl0pfSksbnVsbCwxNixbImljb24iLCJzaXplIiwiY2xhc3MiXSldO2EodGUoeSxlLm1lcmdlUHJvcHMoe2FzOiJzcGFuIixpY29uOmIuY2xlYXJJY29ufHxlLnVucmVmKE4pLnVpLmljb25zLmNsb3NlLHNpemU6emUudmFsdWUsdmFyaWFudDoibGluayIsY29sb3I6Im5ldXRyYWwiLHRhYmluZGV4OiItMSJ9LEQudmFsdWUseyJkYXRhLXNsb3QiOiJ0cmFpbGluZ0NsZWFyIixjbGFzczpUZS52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplLnVucmVmKEwpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazpvbkNsZWFyfSksbnVsbCxsLHIpKX0pLF86Mn0sbyxpKSk6ZS51bnJlZih5ZSk/bih0ZShnLHtuYW1lOmUudW5yZWYoeWUpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOlRlLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihMKT8udHJhaWxpbmdJY29ufSl9LG51bGwsbyxpKSk6bigiXHgzYyEtLS0tXHgzZSIpfSxuLG8saSksbigiPC9zcGFuPiIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjJ9LG8saSkpfSksXzoyfSxuLG8pKSxyKHRlKGUudW5yZWYoU2UpLGUudW5yZWYoTSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoayksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoZ2UpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOlRlLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUudW5yZWYoTCk/LmNvbnRlbnR9KX0sTy52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHt0cmFwcGVkOiIiLCJkYXRhLXNsb3QiOiJmb2N1c1Njb3BlIixjbGFzczpUZS52YWx1ZS5mb2N1c1Njb3BlKHtjbGFzczplLnVucmVmKEwpPy5mb2N1c1Njb3BlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC10b3AiKSxiLnNlYXJjaElucHV0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleTowLG1vZGVsVmFsdWU6cS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cS52YWx1ZT1lLCJkaXNwbGF5LXZhbHVlIjooKT0+cS52YWx1ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGVlLGUubWVyZ2VQcm9wcyh7YXV0b2ZvY3VzOiIiLGF1dG9jb21wbGV0ZToib2ZmIixzaXplOnplLnZhbHVlfSxFLnZhbHVlLHsibW9kZWwtbW9kaWZpZXJzIjp7dHJpbTpiLm1vZGVsTW9kaWZpZXJzPy50cmltfSwiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOlRlLnZhbHVlLmlucHV0KHtjbGFzczplLnVucmVmKEwpPy5pbnB1dH0pLG9uQ2hhbmdlOmUud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJtb2RlbC1tb2RpZmllcnMiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJkaXNwbGF5LXZhbHVlIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpUZS52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihMKT8uZW1wdHl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06cS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhxLnZhbHVlP2UudW5yZWYoeikoInNlbGVjdE1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06cS52YWx1ZX0pOmUudW5yZWYoeikoInNlbGVjdE1lbnUubm9EYXRhIikpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHtyZWZfa2V5OiJ2aWV3cG9ydFJlZiIscmVmOkVlLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpUZS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZS51bnJlZihMKT8udmlld3BvcnR9KX0sW2IudmlydHVhbGl6ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjB9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihJZSksZS5tZXJnZVByb3BzKHtvcHRpb25zOkFlLnZhbHVlLCJ0ZXh0LWNvbnRlbnQiOnQ9PmlzU2VsZWN0SXRlbSh0KT9lLnVucmVmKGYpKHQsUy5sYWJlbEtleSk6U3RyaW5nKHQpfSxLLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTphfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjF9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6MCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV0pLF86MX0sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoUGUudmFsdWUsKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodCwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKCRlKSx7a2V5OmBncm91cC0ke2F9LSR7bH1gLGl0ZW06dCxpbmRleDpsfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjEsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpXSwyKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIildKSxfOjN9LDgsWyJjbGFzcyJdKSxiLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sQS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpUZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihMKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldO2wodGUoZS51bnJlZihrKSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLHIsbik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKGdlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpUZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEwpPy5jb250ZW50fSl9LE8udmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfKSx7dHJhcHBlZDoiIiwiZGF0YS1zbG90IjoiZm9jdXNTY29wZSIsY2xhc3M6VGUudmFsdWUuZm9jdXNTY29wZSh7Y2xhc3M6ZS51bnJlZihMKT8uZm9jdXNTY29wZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtdG9wIiksYi5zZWFyY2hJbnB1dD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYmUpLHtrZXk6MCxtb2RlbFZhbHVlOnEudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnEudmFsdWU9ZSwiZGlzcGxheS12YWx1ZSI6KCk9PnEudmFsdWUsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTplLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwibW9kZWwtbW9kaWZpZXJzIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzcGxheS12YWx1ZSJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih2ZSkseyJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6VGUudmFsdWUuZW1wdHkoe2NsYXNzOmUudW5yZWYoTCk/LmVtcHR5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOnEudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocS52YWx1ZT9lLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOnEudmFsdWV9KTplLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vRGF0YSIpKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSksZS5jcmVhdGVWTm9kZSgiZGl2Iix7cmVmX2tleToidmlld3BvcnRSZWYiLHJlZjpFZSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6VGUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoTCk/LnZpZXdwb3J0fSl9LFtiLnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW0ZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSWUpLGUubWVyZ2VQcm9wcyh7b3B0aW9uczpBZS52YWx1ZSwidGV4dC1jb250ZW50Ijp0PT5pc1NlbGVjdEl0ZW0odCk/ZS51bnJlZihmKSh0LFMubGFiZWxLZXkpOlN0cmluZyh0KX0sSy52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3B0aW9uOnQsdmlydHVhbEl0ZW06YX0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKCRlKSx7aXRlbTp0LGluZGV4OmEuaW5kZXh9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86MX0sMTYsWyJvcHRpb25zIiwidGV4dC1jb250ZW50Il0pLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleToxfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFBlLnZhbHVlLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6YGdyb3VwLSR7YX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHQsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZigkZSkse2tleTpgZ3JvdXAtJHthfS0ke2x9YCxpdGVtOnQsaW5kZXg6bH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleToxLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfZSkpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0sMiksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpXSksXzozfSw4LFsiY2xhc3MiXSksYi5hcnJvdz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLGUubWVyZ2VQcm9wcyh7a2V5OjB9LEEudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6VGUudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoTCk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86M30sMTYsWyJjbGFzcyJdKV07bCh0ZShlLnVucmVmKGdlKSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpUZS52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKEwpPy5jb250ZW50fSl9LE8udmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxsLHIsbik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF8pLHt0cmFwcGVkOiIiLCJkYXRhLXNsb3QiOiJmb2N1c1Njb3BlIixjbGFzczpUZS52YWx1ZS5mb2N1c1Njb3BlKHtjbGFzczplLnVucmVmKEwpPy5mb2N1c1Njb3BlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiY29udGVudC10b3AiKSxiLnNlYXJjaElucHV0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleTowLG1vZGVsVmFsdWU6cS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cS52YWx1ZT1lLCJkaXNwbGF5LXZhbHVlIjooKT0+cS52YWx1ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGVlLGUubWVyZ2VQcm9wcyh7YXV0b2ZvY3VzOiIiLGF1dG9jb21wbGV0ZToib2ZmIixzaXplOnplLnZhbHVlfSxFLnZhbHVlLHsibW9kZWwtbW9kaWZpZXJzIjp7dHJpbTpiLm1vZGVsTW9kaWZpZXJzPy50cmltfSwiZGF0YS1zbG90IjoiaW5wdXQiLGNsYXNzOlRlLnZhbHVlLmlucHV0KHtjbGFzczplLnVucmVmKEwpPy5pbnB1dH0pLG9uQ2hhbmdlOmUud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbInNpemUiLCJtb2RlbC1tb2RpZmllcnMiLCJjbGFzcyIsIm9uQ2hhbmdlIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJkaXNwbGF5LXZhbHVlIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpUZS52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihMKT8uZW1wdHl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06cS52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhxLnZhbHVlP2UudW5yZWYoeikoInNlbGVjdE1lbnUubm9NYXRjaCIse3NlYXJjaFRlcm06cS52YWx1ZX0pOmUudW5yZWYoeikoInNlbGVjdE1lbnUubm9EYXRhIikpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHtyZWZfa2V5OiJ2aWV3cG9ydFJlZiIscmVmOkVlLHJvbGU6InByZXNlbnRhdGlvbiIsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpUZS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZS51bnJlZihMKT8udmlld3BvcnR9KX0sW2IudmlydHVhbGl6ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjB9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihJZSksZS5tZXJnZVByb3BzKHtvcHRpb25zOkFlLnZhbHVlLCJ0ZXh0LWNvbnRlbnQiOnQ9PmlzU2VsZWN0SXRlbSh0KT9lLnVucmVmKGYpKHQsUy5sYWJlbEtleSk6U3RyaW5nKHQpfSxLLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTphfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKF9lKSx7a2V5OjF9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6MCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlRlLnZhbHVlLmdyb3VwKHtjbGFzczplLnVucmVmKEwpPy5ncm91cH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV0pLF86MX0sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoUGUudmFsdWUsKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodCwodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKCRlKSx7a2V5OmBncm91cC0ke2F9LSR7bH1gLGl0ZW06dCxpbmRleDpsfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSkpKSwxMjgpKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKSksMTI4KSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjEsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpXSwyKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtYm90dG9tIildKSxfOjN9LDgsWyJjbGFzcyJdKSxiLmFycm93PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSksZS5tZXJnZVByb3BzKHtrZXk6MH0sQS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpUZS52YWx1ZS5hcnJvdyh7Y2xhc3M6ZS51bnJlZihMKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtsKHRlKGUudW5yZWYoXykse3RyYXBwZWQ6IiIsImRhdGEtc2xvdCI6ImZvY3VzU2NvcGUiLGNsYXNzOlRlLnZhbHVlLmZvY3VzU2NvcGUoe2NsYXNzOmUudW5yZWYoTCk/LmZvY3VzU2NvcGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImNvbnRlbnQtdG9wIiksYi5zZWFyY2hJbnB1dD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYmUpLHtrZXk6MCxtb2RlbFZhbHVlOnEudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnEudmFsdWU9ZSwiZGlzcGxheS12YWx1ZSI6KCk9PnEudmFsdWUsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTplLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwibW9kZWwtbW9kaWZpZXJzIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzcGxheS12YWx1ZSJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih2ZSkseyJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6VGUudmFsdWUuZW1wdHkoe2NsYXNzOmUudW5yZWYoTCk/LmVtcHR5fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOnEudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcocS52YWx1ZT9lLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOnEudmFsdWV9KTplLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vRGF0YSIpKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSksZS5jcmVhdGVWTm9kZSgiZGl2Iix7cmVmX2tleToidmlld3BvcnRSZWYiLHJlZjpFZSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6VGUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoTCk/LnZpZXdwb3J0fSl9LFtiLnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW0ZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleTowfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSWUpLGUubWVyZ2VQcm9wcyh7b3B0aW9uczpBZS52YWx1ZSwidGV4dC1jb250ZW50Ijp0PT5pc1NlbGVjdEl0ZW0odCk/ZS51bnJlZihmKSh0LFMubGFiZWxLZXkpOlN0cmluZyh0KX0sSy52YWx1ZSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7b3B0aW9uOnQsdmlydHVhbEl0ZW06YX0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKCRlKSx7aXRlbTp0LGluZGV4OmEuaW5kZXh9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86MX0sMTYsWyJvcHRpb25zIiwidGV4dC1jb250ZW50Il0pLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihfZSkse2tleToxfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbRmUudmFsdWUmJiJ0b3AiPT09RGUudmFsdWU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGtlKSx7a2V5OjAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLChlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KFBlLnZhbHVlLCh0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtrZXk6YGdyb3VwLSR7YX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KHQsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZigkZSkse2tleTpgZ3JvdXAtJHthfS0ke2x9YCxpdGVtOnQsaW5kZXg6bH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpLEZlLnZhbHVlJiYiYm90dG9tIj09PURlLnZhbHVlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihrZSkse2tleToxLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihfZSkpXSksXzoxfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0sMiksZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpXTtsZSh0LiRzbG90cywiY29udGVudC10b3AiLHt9LG51bGwsbCxyLG4pLGIuc2VhcmNoSW5wdXQ/bCh0ZShlLnVucmVmKGJlKSx7bW9kZWxWYWx1ZTpxLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5xLnZhbHVlPWUsImRpc3BsYXktdmFsdWUiOigpPT5xLnZhbHVlLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxhLGwscik9PntpZighYSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTplLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsic3RvcCJdKX0pLG51bGwsMTYsWyJzaXplIiwibW9kZWwtbW9kaWZpZXJzIiwiY2xhc3MiLCJvbkNoYW5nZSJdKV07YSh0ZShlZSxlLm1lcmdlUHJvcHMoe2F1dG9mb2N1czoiIixhdXRvY29tcGxldGU6Im9mZiIsc2l6ZTp6ZS52YWx1ZX0sRS52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06Yi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpUZS52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihMKT8uaW5wdXR9KSxvbkNoYW5nZTooKT0+e319KSxudWxsLGwscikpfSksXzoyfSxyLG4pKTpsKCJceDNjIS0tLS1ceDNlIiksbCh0ZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpUZS52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihMKT8uZW1wdHl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChhLGwscixuKT0+e2lmKCFsKXJldHVybltlLnJlbmRlclNsb3QodC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpxLnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHEudmFsdWU/ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub01hdGNoIix7c2VhcmNoVGVybTpxLnZhbHVlfSk6ZS51bnJlZih6KSgic2VsZWN0TWVudS5ub0RhdGEiKSksMSldKV07bGUodC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpxLnZhbHVlfSwoKT0+e2woYCR7cmUocS52YWx1ZT9lLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOnEudmFsdWV9KTplLnVucmVmKHopKCJzZWxlY3RNZW51Lm5vRGF0YSIpKX1gKX0sbCxyLG4pfSksXzoyfSxyLG4pKSxsKGA8ZGl2IHJvbGU9InByZXNlbnRhdGlvbiIgZGF0YS1zbG90PSJ2aWV3cG9ydCIgY2xhc3M9IiR7YWUoVGUudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoTCk/LnZpZXdwb3J0fSkpfSIke259PmApLGIudmlydHVhbGl6ZT8obCgiXHgzYyEtLVstLVx4M2UiKSxGZS52YWx1ZSYmInRvcCI9PT1EZS52YWx1ZT9sKHRlKGUudW5yZWYoX2UpLG51bGwsbnVsbCxyLG4pKTpsKCJceDNjIS0tLS1ceDNlIiksbCh0ZShlLnVucmVmKEllKSxlLm1lcmdlUHJvcHMoe29wdGlvbnM6QWUudmFsdWUsInRleHQtY29udGVudCI6dD0+aXNTZWxlY3RJdGVtKHQpP2UudW5yZWYoZikodCxTLmxhYmVsS2V5KTpTdHJpbmcodCl9LEsudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoe29wdGlvbjp0LHZpcnR1YWxJdGVtOmF9LGwscixuKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXTtsKHRlKGUudW5yZWYoJGUpLHtpdGVtOnQsaW5kZXg6YS5pbmRleH0sbnVsbCxyLG4pKX0pLF86Mn0scixuKSksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/bCh0ZShlLnVucmVmKF9lKSxudWxsLG51bGwscixuKSk6bCgiXHgzYyEtLS0tXHgzZSIpLGwoIlx4M2MhLS1dLS1ceDNlIikpOihsKCJceDNjIS0tWy0tXHgzZSIpLEZlLnZhbHVlJiYidG9wIj09PURlLnZhbHVlP2wodGUoZS51bnJlZihrZSkseyJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6VGUudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoTCk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxhLGwscik9PntpZighYSlyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKF9lKSldO2EodGUoZS51bnJlZihfZSksbnVsbCxudWxsLGwscikpfSksXzoyfSxyLG4pKTpsKCJceDNjIS0tLS1ceDNlIiksbCgiXHgzYyEtLVstLVx4M2UiKSxuZShQZS52YWx1ZSwodCxhKT0+e2wodGUoZS51bnJlZihrZSkse2tleTpgZ3JvdXAtJHthfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChsLHIsbixvKT0+e2lmKCFyKXJldHVyblsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0LCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoJGUpLHtrZXk6YGdyb3VwLSR7YX0tJHtsfWAsaXRlbTp0LGluZGV4Omx9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKSkpLDEyOCkpXTtyKCJceDNjIS0tWy0tXHgzZSIpLG5lKHQsKHQsbCk9PntyKHRlKGUudW5yZWYoJGUpLHtrZXk6YGdyb3VwLSR7YX0tJHtsfWAsaXRlbTp0LGluZGV4Omx9LG51bGwsbixvKSl9KSxyKCJceDNjIS0tXS0tXHgzZSIpfSksXzoyfSxyLG4pKX0pLGwoIlx4M2MhLS1dLS1ceDNlIiksRmUudmFsdWUmJiJib3R0b20iPT09RGUudmFsdWU/bCh0ZShlLnVucmVmKGtlKSx7ImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpUZS52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihMKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGEsbCxyKT0+e2lmKCFhKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoX2UpKV07YSh0ZShlLnVucmVmKF9lKSxudWxsLG51bGwsbCxyKSl9KSxfOjJ9LHIsbikpOmwoIlx4M2MhLS0tLVx4M2UiKSxsKCJceDNjIS0tXS0tXHgzZSIpKSxsKCI8L2Rpdj4iKSxsZSh0LiRzbG90cywiY29udGVudC1ib3R0b20iLHt9LG51bGwsbCxyLG4pfSksXzoyfSxyLG4pKSxiLmFycm93P2wodGUoZS51bnJlZihtZSksZS5tZXJnZVByb3BzKEEudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6VGUudmFsdWUuYXJyb3coe2NsYXNzOmUudW5yZWYoTCk/LmFycm93fSl9KSxudWxsLHIsbikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86Mn0scixuKSl9KSxfOjJ9LHIsbikpfSksXzoyfSxuLG8pKX0pLF86M30sbCkpLGEoIlx4M2MhLS1dLS1ceDNlIil9fX0pLE5lPXplLnNldHVwO3plLnNldHVwPSh0LGEpPT57Y29uc3QgbD1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2VsZWN0TWVudS52dWUiKSxOZT9OZSh0LGEpOnZvaWQgMH07ZXhwb3J0e3plIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1TZWxlY3RNZW51LUJhQVB3NC1rLm1qcy5tYXAK", "chunks/build/Separator-C9BM_fkO.mjs": "aW1wb3J0e3YgYXMgZSxQIGFzIHJ9ZnJvbSIuL3NlcnZlci5tanMiO3ZhciB0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkJhc2VTZXBhcmF0b3IiLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGRlY29yYXRpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3Qgbz10LGE9WyJob3Jpem9udGFsIiwidmVydGljYWwiXTtjb25zdCBuPWUuY29tcHV0ZWQoKCk9PntyZXR1cm4gZT1vLm9yaWVudGF0aW9uLGEuaW5jbHVkZXMoZSk/by5vcmllbnRhdGlvbjoiaG9yaXpvbnRhbCI7dmFyIGV9KSxpPWUuY29tcHV0ZWQoKCk9PiJ2ZXJ0aWNhbCI9PT1uLnZhbHVlP28ub3JpZW50YXRpb246dm9pZCAwKSxsPWUuY29tcHV0ZWQoKCk9Pm8uZGVjb3JhdGl2ZT97cm9sZToibm9uZSJ9OnsiYXJpYS1vcmllbnRhdGlvbiI6aS52YWx1ZSxyb2xlOiJzZXBhcmF0b3IifSk7cmV0dXJuKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihyKSxlLm1lcmdlUHJvcHMoe2FzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGQsImRhdGEtb3JpZW50YXRpb24iOm4udmFsdWV9LGwudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiLCJkYXRhLW9yaWVudGF0aW9uIl0pKX19KSxvPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlNlcGFyYXRvciIscHJvcHM6e29yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJob3Jpem9udGFsIn0sZGVjb3JhdGl2ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuKHIsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodCxlLm5vcm1hbGl6ZVByb3BzKGUuZ3VhcmRSZWFjdGl2ZVByb3BzKG8pKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3Qoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KTtleHBvcnR7byBhcyBTfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VwYXJhdG9yLUM5Qk1fZmtPLm1qcy5tYXAK", "chunks/build/Separator-DwcR9PM1.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIHIsZSBhcyBhLGwgYXMgbyxGIGFzIHQsdCBhcyBzLGIgYXMgbCxnIGFzIG59ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtTIGFzIGl9ZnJvbSIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2ltcG9ydHtmIGFzIGQsaiBhcyBjLGcgYXMgdSxxIGFzIGJ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBwPXtzbG90czp7cm9vdDoiZmxleCBpdGVtcy1jZW50ZXIgYWxpZ24tY2VudGVyIHRleHQtY2VudGVyIixib3JkZXI6IiIsY29udGFpbmVyOiJmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQgZmxleCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IixhdmF0YXI6InNocmluay0wIixhdmF0YXJTaXplOiIyeHMiLGxhYmVsOiJ0ZXh0LXNtIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5Ontib3JkZXI6ImJvcmRlci1wcmltYXJ5In0sc2Vjb25kYXJ5Ontib3JkZXI6ImJvcmRlci1zZWNvbmRhcnkifSxzdWNjZXNzOntib3JkZXI6ImJvcmRlci1zdWNjZXNzIn0saW5mbzp7Ym9yZGVyOiJib3JkZXItaW5mbyJ9LHdhcm5pbmc6e2JvcmRlcjoiYm9yZGVyLXdhcm5pbmcifSxlcnJvcjp7Ym9yZGVyOiJib3JkZXItZXJyb3IifSxuZXV0cmFsOntib3JkZXI6ImJvcmRlci1kZWZhdWx0In19LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJ3LWZ1bGwgZmxleC1yb3ciLGJvcmRlcjoidy1mdWxsIixjb250YWluZXI6Im14LTMgd2hpdGVzcGFjZS1ub3dyYXAifSx2ZXJ0aWNhbDp7cm9vdDoiaC1mdWxsIGZsZXgtY29sIixib3JkZXI6ImgtZnVsbCIsY29udGFpbmVyOiJteS0yIn19LHNpemU6e3hzOiIiLHNtOiIiLG1kOiIiLGxnOiIiLHhsOiIifSx0eXBlOntzb2xpZDp7Ym9yZGVyOiJib3JkZXItc29saWQifSxkYXNoZWQ6e2JvcmRlcjoiYm9yZGVyLWRhc2hlZCJ9LGRvdHRlZDp7Ym9yZGVyOiJib3JkZXItZG90dGVkIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhzIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdCJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InNtIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bMnB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bM3B4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6ImxnIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNHB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhsIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNXB4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4cyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToic20iLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVsycHhdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItcy1bM3B4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJsZyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMtWzRweF0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToieGwiLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVs1cHhdIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJuZXV0cmFsIixzaXplOiJ4cyIsdHlwZToic29saWQifX0sdj17X19uYW1lOiJVU2VwYXJhdG9yIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWNvcmF0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cCh2KXtjb25zdCBmPXYsbT1lLnVzZVNsb3RzKCkseD1yKCksej1hKCJzZXBhcmF0b3IiLGYpLHk9byh0KGYsImFzIiwiZGVjb3JhdGl2ZSIsIm9yaWVudGF0aW9uIikpLFM9ZS5jb21wdXRlZCgoKT0+cyh7ZXh0ZW5kOnMocCksLi4ueC51aT8uc2VwYXJhdG9yfHx7fX0pKHtjb2xvcjpmLmNvbG9yLG9yaWVudGF0aW9uOmYub3JpZW50YXRpb24sc2l6ZTpmLnNpemUsdHlwZTpmLnR5cGV9KSk7cmV0dXJuKHIsYSxvLHQpPT57YShkKGUudW5yZWYoaSksZS5tZXJnZVByb3BzKGUudW5yZWYoeSkseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczpTLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKHopPy5yb290LGYuY2xhc3NdfSl9LHQpLHtkZWZhdWx0OmUud2l0aEN0eCgoYSxvLHQscyk9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImJvcmRlciIsY2xhc3M6Uy52YWx1ZS5ib3JkZXIoe2NsYXNzOmUudW5yZWYoeik/LmJvcmRlcn0pfSxudWxsLDIpLHYubGFiZWx8fHYuaWNvbnx8di5hdmF0YXJ8fG0uZGVmYXVsdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6Uy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoeik/LmNvbnRhaW5lcn0pfSxbZS5yZW5kZXJTbG90KHIuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Uy52YWx1ZX0sKCk9Plt2LmxhYmVsPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlMudmFsdWUubGFiZWwoe2NsYXNzOmUudW5yZWYoeik/LmxhYmVsfSl9LGUudG9EaXNwbGF5U3RyaW5nKHYubGFiZWwpLDMpKTp2Lmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhsLHtrZXk6MSxuYW1lOnYuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6Uy52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHopPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6di5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhuLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTplLnVucmVmKHopPy5hdmF0YXJTaXplfHxTLnZhbHVlLmF2YXRhclNpemUoKX0sdi5hdmF0YXIseyJkYXRhLXNsb3QiOiJhdmF0YXIiLGNsYXNzOlMudmFsdWUuYXZhdGFyKHtjbGFzczplLnVucmVmKHopPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9yZGVyIixjbGFzczpTLnZhbHVlLmJvcmRlcih7Y2xhc3M6ZS51bnJlZih6KT8uYm9yZGVyfSl9LG51bGwsMildLDY0KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtvKGA8ZGl2IGRhdGEtc2xvdD0iYm9yZGVyIiBjbGFzcz0iJHtjKFMudmFsdWUuYm9yZGVyKHtjbGFzczplLnVucmVmKHopPy5ib3JkZXJ9KSl9IiR7c30+PC9kaXY+YCksdi5sYWJlbHx8di5pY29ufHx2LmF2YXRhcnx8bS5kZWZhdWx0PyhvKGBceDNjIS0tWy0tXHgzZTxkaXYgZGF0YS1zbG90PSJjb250YWluZXIiIGNsYXNzPSIke2MoUy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoeik/LmNvbnRhaW5lcn0pKX0iJHtzfT5gKSx1KHIuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Uy52YWx1ZX0sKCk9Pnt2LmxhYmVsP28oYDxzcGFuIGRhdGEtc2xvdD0ibGFiZWwiIGNsYXNzPSIke2MoUy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih6KT8ubGFiZWx9KSl9IiR7c30+JHtiKHYubGFiZWwpfTwvc3Bhbj5gKTp2Lmljb24/byhkKGwse25hbWU6di5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpTLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeik/Lmljb259KX0sbnVsbCx0LHMpKTp2LmF2YXRhcj9vKGQobixlLm1lcmdlUHJvcHMoe3NpemU6ZS51bnJlZih6KT8uYXZhdGFyU2l6ZXx8Uy52YWx1ZS5hdmF0YXJTaXplKCl9LHYuYXZhdGFyLHsiZGF0YS1zbG90IjoiYXZhdGFyIixjbGFzczpTLnZhbHVlLmF2YXRhcih7Y2xhc3M6ZS51bnJlZih6KT8uYXZhdGFyfSl9KSxudWxsLHQscykpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyx0LHMpLG8oYDwvZGl2PjxkaXYgZGF0YS1zbG90PSJib3JkZXIiIGNsYXNzPSIke2MoUy52YWx1ZS5ib3JkZXIoe2NsYXNzOmUudW5yZWYoeik/LmJvcmRlcn0pKX0iJHtzfT48L2Rpdj5ceDNjIS0tXS0tXHgzZWApKTpvKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LG8pKX19fSxmPXYuc2V0dXA7di5zZXR1cD0ocixhKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1NlcGFyYXRvci52dWUiKSxmP2YocixhKTp2b2lkIDB9O2V4cG9ydHt2IGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1TZXBhcmF0b3ItRHdjUjlQTTEubWpzLm1hcAo=", "chunks/build/Skeleton-BftqyGp3.mjs": "aW1wb3J0e2QgYXMgZSxlIGFzIHMsdiBhcyB0LHQgYXMgcixQIGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGEsZyBhcyBsfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3Qgbj17YmFzZToiYW5pbWF0ZS1wdWxzZSByb3VuZGVkLW1kIGJnLWVsZXZhdGVkIn0sbz17X19uYW1lOiJVU2tlbGV0b24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cChvKXtjb25zdCBkPW8saT1lKCksbT1zKCJza2VsZXRvbiIsZCkscD10LmNvbXB1dGVkKCgpPT5yKHtleHRlbmQ6cihuKSwuLi5pLnVpPy5za2VsZXRvbnx8e319KSk7cmV0dXJuKGUscyxyLG4pPT57cyhhKHQudW5yZWYodSksdC5tZXJnZVByb3BzKHthczpvLmFzLCJhcmlhLWJ1c3kiOiJ0cnVlIiwiYXJpYS1sYWJlbCI6ImxvYWRpbmciLCJhcmlhLWxpdmUiOiJwb2xpdGUiLHJvbGU6ImFsZXJ0IixjbGFzczpwLnZhbHVlKHtjbGFzczpbdC51bnJlZihtKT8uYmFzZSxkLmNsYXNzXX0pfSxuKSx7ZGVmYXVsdDp0LndpdGhDdHgoKHMscix1LGEpPT57aWYoIXIpcmV0dXJuW3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXTtsKGUuJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLHIsdSxhKX0pLF86M30scikpfX19LGQ9by5zZXR1cDtvLnNldHVwPShlLHMpPT57Y29uc3Qgcj10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oci5tb2R1bGVzfHwoci5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2tlbGV0b24udnVlIiksZD9kKGUscyk6dm9pZCAwfTtleHBvcnR7byBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2tlbGV0b24tQmZ0cXlHcDMubWpzLm1hcAo=", "chunks/build/SupportConversation-BXDjvgCH.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7diBhcyB0LF8gYXMgb31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e28gYXMgcyx0IGFzIHIsaiBhcyBuLHEgYXMgYSxmIGFzIGx9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdCBpPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnttZXNzYWdlczp7fSx2aWV3ZXJSb2xlOnt9LGNhblJlcGx5Ont0eXBlOkJvb2xlYW59LHNlbmRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic2VuZCJdLHNldHVwKGkse2VtaXQ6cH0pe2NvbnN0IHU9aSxkPXAsbT10LnJlZigiIik7ZnVuY3Rpb24gc3VibWl0KCl7Y29uc3QgZT1tLnZhbHVlLnRyaW0oKTtlJiYhdS5zZW5kaW5nJiYoZCgic2VuZCIsZSksbS52YWx1ZT0iIil9ZnVuY3Rpb24gaXNNaW5lKGUpe3JldHVybiBlLmF1dGhvclJvbGU9PT11LnZpZXdlclJvbGV9cmV0dXJuKGkscCxkLGMpPT57Y29uc3QgZj1lLHg9bztwKGA8ZGl2JHtzKHQubWVyZ2VQcm9wcyh7Y2xhc3M6ImZsZXggZmxleC1jb2wgaC1mdWxsIn0sYykpfT48ZGl2IGNsYXNzPSJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTMgcC00Ij5ceDNjIS0tWy0tXHgzZWApLHIodS5tZXNzYWdlcyxlPT57cChgPGRpdiBjbGFzcz0iJHtuKFtpc01pbmUoZSk/Imp1c3RpZnktZW5kIjoianVzdGlmeS1zdGFydCIsImZsZXgiXSl9Ij48ZGl2IGNsYXNzPSIke24oW2lzTWluZShlKT8iYmctcHJpbWFyeSB0ZXh0LWludmVydGVkIjoiYmctZWxldmF0ZWQgdGV4dC1kZWZhdWx0IiwibWF4LXctWzgwJV0gcm91bmRlZC1sZyBweC0zIHB5LTIgdGV4dC1zbSJdKX0iPjxwIGNsYXNzPSJ3aGl0ZXNwYWNlLXByZS13cmFwIGJyZWFrLXdvcmRzIj4ke2EoZS5ib2R5KX08L3A+PHAgY2xhc3M9Im10LTEgdGV4dC1bMTBweF0gb3BhY2l0eS03MCI+JHthKCJhZ2VudCI9PT1lLmF1dGhvclJvbGU/IlN1cHBvcnQiOiJZb3UiKX0gwrcgJHthKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9RGF0ZS5ub3coKS1uZXcgRGF0ZShlKS5nZXRUaW1lKCksbz1NYXRoLmZsb29yKHQvNmU0KTtpZihvPDEpcmV0dXJuImp1c3Qgbm93IjtpZihvPDYwKXJldHVybmAke299bSBhZ29gO2NvbnN0IHM9TWF0aC5mbG9vcihvLzYwKTtyZXR1cm4gczwyND9gJHtzfWggYWdvYDpgJHtNYXRoLmZsb29yKHMvMjQpfWQgYWdvYH0oZS5jcmVhdGVkQXQpKX08L3A+PC9kaXY+PC9kaXY+YCl9KSxwKCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpLHUuY2FuUmVwbHk/KHAoJzxmb3JtIGNsYXNzPSJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTMgZmxleCBpdGVtcy1lbmQgZ2FwLTIiPicpLHAobChmLHttb2RlbFZhbHVlOnQudW5yZWYobSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQuaXNSZWYobSk/bS52YWx1ZT1lOm51bGwscm93czoyLGF1dG9yZXNpemU6IiIscGxhY2Vob2xkZXI6IldyaXRlIGEgcmVwbHnigKYiLGNsYXNzOiJmbGV4LTEiLG9uS2V5ZG93bjpzdWJtaXR9LG51bGwsZCkpLHAobCh4LHt0eXBlOiJzdWJtaXQiLGljb246ImktbHVjaWRlLXNlbmQiLGxvYWRpbmc6dS5zZW5kaW5nLGRpc2FibGVkOiF0LnVucmVmKG0pLnRyaW0oKX0sbnVsbCxkKSkscCgiPC9mb3JtPiIpKTpwKCJceDNjIS0tLS1ceDNlIikscCgiPC9kaXY+Iil9fX0pLHA9aS5zZXR1cDtpLnNldHVwPShlLG8pPT57Y29uc3Qgcz10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4ocy5tb2R1bGVzfHwocy5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9zdXBwb3J0L2FwcC9jb21wb25lbnRzL1N1cHBvcnQvU3VwcG9ydENvbnZlcnNhdGlvbi52dWUiKSxwP3AoZSxvKTp2b2lkIDB9O2NvbnN0IHU9T2JqZWN0LmFzc2lnbihpLHtfX25hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24ifSk7ZXhwb3J0e3UgYXMgU307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVN1cHBvcnRDb252ZXJzYXRpb24tQlhEanZnQ0gubWpzLm1hcAo=", "chunks/build/Switch-ByW0BULi.mjs": "aW1wb3J0e3YgYXMgZSxkIGFzIGEsZSBhcyB0LEUgYXMgbCxGIGFzIG4sSCBhcyBjLHQgYXMgcixiIGFzIHMsUCBhcyBvLFMgYXMgZCxNIGFzIGksbSBhcyB1fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7TCBhcyBwfWZyb20iLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydHt1IGFzIG19ZnJvbSIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0e1YgYXMgZn1mcm9tIi4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydHtmIGFzIGgsaiBhcyBrLGcgYXMgYixxIGFzIHZ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtjb25zdFtnLHldPXUoIlN3aXRjaFJvb3QiKTt2YXIgeD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTd2l0Y2hSb290Iixwcm9wczp7ZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoib24ifSx0cnVlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT4hMH0sZmFsc2VWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoYSx7ZW1pdDp0fSl7Y29uc3QgbD1hLG49dCx7ZGlzYWJsZWQ6Y309ZS50b1JlZnMobCkscj1kKGwsIm1vZGVsVmFsdWUiLG4se2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRWYWx1ZT8/bC5mYWxzZVZhbHVlLHBhc3NpdmU6dm9pZCAwPT09bC5tb2RlbFZhbHVlfSkscz1lLmNvbXB1dGVkKCgpPT5yLnZhbHVlPT09bC50cnVlVmFsdWUpO2Z1bmN0aW9uIHRvZ2dsZUNoZWNrKCl7Yy52YWx1ZXx8KHIudmFsdWU9cy52YWx1ZT9sLmZhbHNlVmFsdWU6bC50cnVlVmFsdWUpfWNvbnN0e2ZvcndhcmRSZWY6dSxjdXJyZW50RWxlbWVudDpwfT1pKCksaD1tKHApLGs9ZS5jb21wdXRlZCgoKT0+bC5pZCYmcC52YWx1ZT8odm9pZCAwKS5xdWVyeVNlbGVjdG9yKGBbZm9yPSIke2wuaWR9Il1gKT8uaW5uZXJUZXh0OnZvaWQgMCk7cmV0dXJuIHkoe2NoZWNrZWQ6cyx0b2dnbGVDaGVjazp0b2dnbGVDaGVjayxkaXNhYmxlZDpjfSksKGEsdCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihvKSxlLm1lcmdlUHJvcHMoYS4kYXR0cnMse2lkOmEuaWQscmVmOmUudW5yZWYodSkscm9sZToic3dpdGNoIix0eXBlOiJidXR0b24iPT09YS5hcz8iYnV0dG9uIjp2b2lkIDAsdmFsdWU6YS52YWx1ZSwiYXJpYS1sYWJlbCI6YS4kYXR0cnNbImFyaWEtbGFiZWwiXXx8ay52YWx1ZSwiYXJpYS1jaGVja2VkIjpzLnZhbHVlLCJhcmlhLXJlcXVpcmVkIjphLnJlcXVpcmVkLCJkYXRhLXN0YXRlIjpzLnZhbHVlPyJjaGVja2VkIjoidW5jaGVja2VkIiwiZGF0YS1kaXNhYmxlZCI6ZS51bnJlZihjKT8iIjp2b2lkIDAsImFzLWNoaWxkIjphLmFzQ2hpbGQsYXM6YS5hcyxkaXNhYmxlZDplLnVucmVmKGMpLG9uQ2xpY2s6dG9nZ2xlQ2hlY2ssb25LZXlkb3duOmUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKHRvZ2dsZUNoZWNrLFsicHJldmVudCJdKSxbImVudGVyIl0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKHIpLGNoZWNrZWQ6cy52YWx1ZX0pLGUudW5yZWYoaCkmJmEubmFtZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZikse2tleTowLHR5cGU6ImNoZWNrYm94IixuYW1lOmEubmFtZSxkaXNhYmxlZDplLnVucmVmKGMpLHJlcXVpcmVkOmEucmVxdWlyZWQsdmFsdWU6YS52YWx1ZSxjaGVja2VkOnMudmFsdWV9LG51bGwsOCxbIm5hbWUiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwidmFsdWUiLCJjaGVja2VkIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApXSksXzozfSwxNixbImlkIiwidHlwZSIsInZhbHVlIiwiYXJpYS1sYWJlbCIsImFyaWEtY2hlY2tlZCIsImFyaWEtcmVxdWlyZWQiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImFzLWNoaWxkIiwiYXMiLCJkaXNhYmxlZCIsIm9uS2V5ZG93biJdKSl9fSksdz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJTd2l0Y2hUaHVtYiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKGEpe2NvbnN0IHQ9ZygpO3JldHVybiBpKCksKGEsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihvKSx7ImRhdGEtc3RhdGUiOmUudW5yZWYodCkuY2hlY2tlZC52YWx1ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCIsImRhdGEtZGlzYWJsZWQiOmUudW5yZWYodCkuZGlzYWJsZWQudmFsdWU/IiI6dm9pZCAwLCJhcy1jaGlsZCI6YS5hc0NoaWxkLGFzOmEuYXN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJhcy1jaGlsZCIsImFzIl0pKX19KTtjb25zdCBxPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCBpdGVtcy1zdGFydCIsYmFzZTpbImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzaHJpbmstMCByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXRyYW5zcGFyZW50IGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOmJnLWFjY2VudGVkIiwidHJhbnNpdGlvbi1bYmFja2dyb3VuZF0gZHVyYXRpb24tMjAwIl0sY29udGFpbmVyOiJmbGV4IGl0ZW1zLWNlbnRlciIsdGh1bWI6Imdyb3VwIHBvaW50ZXItZXZlbnRzLW5vbmUgcm91bmRlZC1mdWxsIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJpbmctMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0yMDAgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTp0cmFuc2xhdGUteC0wIGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIixpY29uOlsiYWJzb2x1dGUgc2hyaW5rLTAgZ3JvdXAtZGF0YS1bc3RhdGU9dW5jaGVja2VkXTp0ZXh0LWRpbW1lZCBvcGFjaXR5LTAgc2l6ZS0xMC8xMiIsInRyYW5zaXRpb24tW2NvbG9yLG9wYWNpdHldIGR1cmF0aW9uLTIwMCJdLHdyYXBwZXI6Im1zLTIiLGxhYmVsOiJibG9jayBmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OntiYXNlOiJkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1wcmltYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5IixpY29uOiJncm91cC1kYXRhLVtzdGF0ZT1jaGVja2VkXTp0ZXh0LXByaW1hcnkifSxzZWNvbmRhcnk6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXNlY29uZGFyeSBmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5IixpY29uOiJncm91cC1kYXRhLVtzdGF0ZT1jaGVja2VkXTp0ZXh0LXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXN1Y2Nlc3MgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXN1Y2Nlc3MiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtc3VjY2VzcyJ9LGluZm86e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLWluZm8gZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZm8iLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtaW5mbyJ9LHdhcm5pbmc6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXdhcm5pbmcgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXdhcm5pbmciLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtd2FybmluZyJ9LGVycm9yOntiYXNlOiJkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1lcnJvciBmb2N1cy12aXNpYmxlOm91dGxpbmUtZXJyb3IiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtZXJyb3IifSxuZXV0cmFsOntiYXNlOiJkYXRhLVtzdGF0ZT1jaGVja2VkXTpiZy1pbnZlcnRlZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtaW52ZXJ0ZWQiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtaGlnaGxpZ2h0ZWQifX0sc2l6ZTp7eHM6e2Jhc2U6InctNyIsY29udGFpbmVyOiJoLTQiLHRodW1iOiJzaXplLTMgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtMyBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTMiLHdyYXBwZXI6InRleHQteHMifSxzbTp7YmFzZToidy04Iixjb250YWluZXI6ImgtNCIsdGh1bWI6InNpemUtMy41IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTMuNSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTMuNSIsd3JhcHBlcjoidGV4dC14cyJ9LG1kOntiYXNlOiJ3LTkiLGNvbnRhaW5lcjoiaC01Iix0aHVtYjoic2l6ZS00IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTQgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC00Iix3cmFwcGVyOiJ0ZXh0LXNtIn0sbGc6e2Jhc2U6InctMTAiLGNvbnRhaW5lcjoiaC01Iix0aHVtYjoic2l6ZS00LjUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtNC41IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnJ0bDotdHJhbnNsYXRlLXgtNC41Iix3cmFwcGVyOiJ0ZXh0LXNtIn0seGw6e2Jhc2U6InctMTEiLGNvbnRhaW5lcjoiaC02Iix0aHVtYjoic2l6ZS01IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnRyYW5zbGF0ZS14LTUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC01Iix3cmFwcGVyOiJ0ZXh0LWJhc2UifX0sY2hlY2tlZDp7dHJ1ZTp7aWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06b3BhY2l0eS0xMDAifX0sdW5jaGVja2VkOnt0cnVlOntpY29uOiJncm91cC1kYXRhLVtzdGF0ZT11bmNoZWNrZWRdOm9wYWNpdHktMTAwIn19LGxvYWRpbmc6e3RydWU6e2ljb246ImFuaW1hdGUtc3BpbiJ9fSxyZXF1aXJlZDp7dHJ1ZTp7bGFiZWw6ImFmdGVyOmNvbnRlbnQtWycqJ10gYWZ0ZXI6bXMtMC41IGFmdGVyOnRleHQtZXJyb3IifX0sZGlzYWJsZWQ6e3RydWU6e3Jvb3Q6Im9wYWNpdHktNzUiLGJhc2U6ImN1cnNvci1ub3QtYWxsb3dlZCIsbGFiZWw6ImN1cnNvci1ub3QtYWxsb3dlZCIsZGVzY3JpcHRpb246ImN1cnNvci1ub3QtYWxsb3dlZCJ9fX0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSIsc2l6ZToibWQifX0sQj1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVTd2l0Y2giLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdW5jaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRydWVWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxmYWxzZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImNoYW5nZSIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZCx7ZW1pdDppfSl7Y29uc3QgdT1kLG09ZS51c2VTbG90cygpLGY9aSxnPWEoKSx5PXQoInN3aXRjaCIsdSksQj1sKG4odSwicmVxdWlyZWQiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIm1vZGVsVmFsdWUiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiksZikse2lkOlYsZW1pdEZvcm1DaGFuZ2U6QyxlbWl0Rm9ybUlucHV0Okksc2l6ZTpTLGNvbG9yOl8sbmFtZTokLGRpc2FibGVkOk4sYXJpYUF0dHJzOnp9PWModSksaj1WLnZhbHVlPz9lLnVzZUlkKCksRj1lLnVzZUF0dHJzKCksVT1lLmNvbXB1dGVkKCgpPT57Y29uc3R7ImRhdGEtc3RhdGUiOmUsLi4uYX09RjtyZXR1cm4gYX0pLFA9ZS5jb21wdXRlZCgoKT0+cih7ZXh0ZW5kOnIocSksLi4uZy51aT8uc3dpdGNofHx7fX0pKHtzaXplOlMudmFsdWUsY29sb3I6Xy52YWx1ZSxyZXF1aXJlZDp1LnJlcXVpcmVkLGxvYWRpbmc6dS5sb2FkaW5nLGRpc2FibGVkOk4udmFsdWV8fHUubG9hZGluZ30pKTtmdW5jdGlvbiBvblVwZGF0ZShlKXtjb25zdCBhPW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTplfX0pO2YoImNoYW5nZSIsYSksQygpLEkoKX1yZXR1cm4oYSx0LGwsbik9Pnt0KGgoZS51bnJlZihvKSxlLm1lcmdlUHJvcHMoe2FzOmQuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOlAudmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoeSk/LnJvb3QsdS5jbGFzc119KX0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LGwsbixjKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY29udGFpbmVyIixjbGFzczpQLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZih5KT8uY29udGFpbmVyfSl9LFtlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeCksZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKGopfSx7Li4uZS51bnJlZihCKSwuLi5VLnZhbHVlLC4uLmUudW5yZWYoeil9LHtuYW1lOmUudW5yZWYoJCksZGlzYWJsZWQ6ZS51bnJlZihOKXx8ZC5sb2FkaW5nLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpQLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoeSk/LmJhc2V9KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b25VcGRhdGV9KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodykseyJkYXRhLXNsb3QiOiJ0aHVtYiIsY2xhc3M6UC52YWx1ZS50aHVtYih7Y2xhc3M6ZS51bnJlZih5KT8udGh1bWJ9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZC5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmxvYWRpbmdJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtkLmNoZWNrZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmNoZWNrZWRJY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpQLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeSk/Lmljb24sY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxkLnVuY2hlY2tlZEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhzLHtrZXk6MSxuYW1lOmQudW5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0pLF86MX0sOCxbImNsYXNzIl0pXSksXzoxfSwxNixbImlkIiwibmFtZSIsImRpc2FibGVkIiwiY2xhc3MiXSldLDIpLGQubGFiZWx8fG0ubGFiZWx8fGQuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOlAudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pfSxbZC5sYWJlbHx8bS5sYWJlbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYocCkse2tleTowLGZvcjplLnVucmVmKGopLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6UC52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZih5KT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmQubGFiZWx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZC5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZC5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpQLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pfSxbZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmQuZGVzY3JpcHRpb259LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZC5kZXNjcmlwdGlvbiksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07bChgPGRpdiBkYXRhLXNsb3Q9ImNvbnRhaW5lciIgY2xhc3M9IiR7ayhQLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZih5KT8uY29udGFpbmVyfSkpfSIke2N9PmApLGwoaChlLnVucmVmKHgpLGUubWVyZ2VQcm9wcyh7aWQ6ZS51bnJlZihqKX0sey4uLmUudW5yZWYoQiksLi4uVS52YWx1ZSwuLi5lLnVucmVmKHopfSx7bmFtZTplLnVucmVmKCQpLGRpc2FibGVkOmUudW5yZWYoTil8fGQubG9hZGluZywiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6UC52YWx1ZS5iYXNlKHtjbGFzczplLnVucmVmKHkpPy5iYXNlfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9uVXBkYXRlfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChhLHQsbCxuKT0+e2lmKCF0KXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYodykseyJkYXRhLXNsb3QiOiJ0aHVtYiIsY2xhc3M6UC52YWx1ZS50aHVtYih7Y2xhc3M6ZS51bnJlZih5KT8udGh1bWJ9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZC5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmxvYWRpbmdJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjF9LFtkLmNoZWNrZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjAsbmFtZTpkLmNoZWNrZWRJY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpQLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeSk/Lmljb24sY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxkLnVuY2hlY2tlZEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhzLHtrZXk6MSxuYW1lOmQudW5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLHVuY2hlY2tlZDohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKV0pLF86MX0sOCxbImNsYXNzIl0pXTt0KGgoZS51bnJlZih3KSx7ImRhdGEtc2xvdCI6InRodW1iIixjbGFzczpQLnZhbHVlLnRodW1iKHtjbGFzczplLnVucmVmKHkpPy50aHVtYn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGEsdCxsLG4pPT57aWYoIXQpcmV0dXJuW2QubG9hZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHMse2tleTowLG5hbWU6ZC5sb2FkaW5nSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpQLnZhbHVlLmljb24oe2NsYXNzOmUudW5yZWYoeSk/Lmljb24sY2hlY2tlZDohMCx1bmNoZWNrZWQ6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxbZC5jaGVja2VkSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKHMse2tleTowLG5hbWU6ZC5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLGNoZWNrZWQ6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZC51bmNoZWNrZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2socyx7a2V5OjEsbmFtZTpkLnVuY2hlY2tlZEljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbix1bmNoZWNrZWQ6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSldO2QubG9hZGluZz90KGgocyx7bmFtZTpkLmxvYWRpbmdJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlAudmFsdWUuaWNvbih7Y2xhc3M6ZS51bnJlZih5KT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pfSxudWxsLGwsbikpOih0KCJceDNjIS0tWy0tXHgzZSIpLGQuY2hlY2tlZEljb24/dChoKHMse25hbWU6ZC5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLGNoZWNrZWQ6ITB9KX0sbnVsbCxsLG4pKTp0KCJceDNjIS0tLS1ceDNlIiksZC51bmNoZWNrZWRJY29uP3QoaChzLHtuYW1lOmQudW5jaGVja2VkSWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6UC52YWx1ZS5pY29uKHtjbGFzczplLnVucmVmKHkpPy5pY29uLHVuY2hlY2tlZDohMH0pfSxudWxsLGwsbikpOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCJceDNjIS0tXS0tXHgzZSIpKX0pLF86MX0sbCxuKSl9KSxfOjF9LG4sYykpLGwoIjwvZGl2PiIpLGQubGFiZWx8fG0ubGFiZWx8fGQuZGVzY3JpcHRpb258fG0uZGVzY3JpcHRpb24/KGwoYDxkaXYgZGF0YS1zbG90PSJ3cmFwcGVyIiBjbGFzcz0iJHtrKFAudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pKX0iJHtjfT5gKSxkLmxhYmVsfHxtLmxhYmVsP2woaChlLnVucmVmKHApLHtmb3I6ZS51bnJlZihqKSwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlAudmFsdWUubGFiZWwoe2NsYXNzOmUudW5yZWYoeSk/LmxhYmVsfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgodCxsLG4sYyk9PntpZighbClyZXR1cm5bZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmQubGFiZWx9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZC5sYWJlbCksMSldKV07YihhLiRzbG90cywibGFiZWwiLHtsYWJlbDpkLmxhYmVsfSwoKT0+e2woYCR7dihkLmxhYmVsKX1gKX0sbCxuLGMpfSksXzozfSxuLGMpKTpsKCJceDNjIS0tLS1ceDNlIiksZC5kZXNjcmlwdGlvbnx8bS5kZXNjcmlwdGlvbj8obChgPHAgZGF0YS1zbG90PSJkZXNjcmlwdGlvbiIgY2xhc3M9IiR7ayhQLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pKX0iJHtjfT5gKSxiKGEuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmQuZGVzY3JpcHRpb259LCgpPT57bChgJHt2KGQuZGVzY3JpcHRpb24pfWApfSxsLG4sYyksbCgiPC9wPiIpKTpsKCJceDNjIS0tLS1ceDNlIiksbCgiPC9kaXY+IikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sbCkpfX19KSxWPUIuc2V0dXA7Qi5zZXR1cD0oYSx0KT0+e2NvbnN0IGw9ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGwubW9kdWxlc3x8KGwubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1N3aXRjaC52dWUiKSxWP1YoYSx0KTp2b2lkIDB9O2V4cG9ydHtCIGFzIF99OwovLyMgc291cmNlTWFwcGluZ1VSTD1Td2l0Y2gtQnlXMEJVTGkubWpzLm1hcAo=", "chunks/build/Table-0URnC8OH.mjs": "aW1wb3J0e3YgYXMgZSxmIGFzIHQsZCBhcyBuLGUgYXMgbyxheCBhcyBsLHQgYXMgYSxrIGFzIHIsbCBhcyBpLEYgYXMgcyxQIGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHthWSBhcyBkLGFFIGFzIGd9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtBIGFzIGMsYiBhcyBwLHcgYXMgbSxhIGFzIGYsQiBhcyB2LGQgYXMgaCxoIGFzIFMsdSBhcyBiLGYgYXMgdyx6IGFzIEMsaiBhcyBSLHksdCBhcyB4LGcgYXMgRixxIGFzIE19ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnR7dSBhcyBWfWZyb20iLi9pbmRleC1CMVBPVExtYS5tanMiO2Z1bmN0aW9uIGZ1bmN0aW9uYWxVcGRhdGUoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQpOmV9ZnVuY3Rpb24gbWFrZVN0YXRlVXBkYXRlcihlLHQpe3JldHVybiBuPT57dC5zZXRTdGF0ZSh0PT4oey4uLnQsW2VdOmZ1bmN0aW9uYWxVcGRhdGUobix0W2VdKX0pKX19ZnVuY3Rpb24gaXNGdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufWZ1bmN0aW9uIG1lbW8oZSx0LG4pe2xldCBvLGw9W107cmV0dXJuIGE9PntsZXQgcjtuLmtleSYmbi5kZWJ1ZyYmKHI9RGF0ZS5ub3coKSk7Y29uc3QgaT1lKGEpO2lmKCEoaS5sZW5ndGghPT1sLmxlbmd0aHx8aS5zb21lKChlLHQpPT5sW3RdIT09ZSkpKXJldHVybiBvO2xldCBzO2lmKGw9aSxuLmtleSYmbi5kZWJ1ZyYmKHM9RGF0ZS5ub3coKSksbz10KC4uLmkpLG51bGw9PW58fG51bGw9PW4ub25DaGFuZ2V8fG4ub25DaGFuZ2Uobyksbi5rZXkmJm4uZGVidWcmJm51bGwhPW4mJm4uZGVidWcoKSl7Y29uc3QgZT1NYXRoLnJvdW5kKDEwMCooRGF0ZS5ub3coKS1yKSkvMTAwLHQ9TWF0aC5yb3VuZCgxMDAqKERhdGUubm93KCktcykpLzEwMCxvPXQvMTYscGFkPShlLHQpPT57Zm9yKGU9U3RyaW5nKGUpO2UubGVuZ3RoPHQ7KWU9IiAiK2U7cmV0dXJuIGV9O2NvbnNvbGUuaW5mbyhgJWPij7EgJHtwYWQodCw1KX0gLyR7cGFkKGUsNSl9IG1zYCxgXG4gICAgICAgICAgICBmb250LXNpemU6IC42cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBjb2xvcjogaHNsKCR7TWF0aC5tYXgoMCxNYXRoLm1pbigxMjAtMTIwKm8sMTIwKSl9ZGVnIDEwMCUgMzElKTtgLG51bGw9PW4/dm9pZCAwOm4ua2V5KX1yZXR1cm4gb319ZnVuY3Rpb24gZ2V0TWVtb09wdGlvbnMoZSx0LG4sbyl7cmV0dXJue2RlYnVnOigpPT57dmFyIG47cmV0dXJuIG51bGwhPShuPW51bGw9PWU/dm9pZCAwOmUuZGVidWdBbGwpP246ZVt0XX0sa2V5OiExLG9uQ2hhbmdlOm99fWNvbnN0IFA9ImRlYnVnSGVhZGVycyI7ZnVuY3Rpb24gY3JlYXRlSGVhZGVyKGUsdCxuKXt2YXIgbztsZXQgbD17aWQ6bnVsbCE9KG89bi5pZCk/bzp0LmlkLGNvbHVtbjp0LGluZGV4Om4uaW5kZXgsaXNQbGFjZWhvbGRlcjohIW4uaXNQbGFjZWhvbGRlcixwbGFjZWhvbGRlcklkOm4ucGxhY2Vob2xkZXJJZCxkZXB0aDpuLmRlcHRoLHN1YkhlYWRlcnM6W10sY29sU3BhbjowLHJvd1NwYW46MCxoZWFkZXJHcm91cDpudWxsLGdldExlYWZIZWFkZXJzOigpPT57Y29uc3QgZT1bXSxyZWN1cnNlSGVhZGVyPXQ9Pnt0LnN1YkhlYWRlcnMmJnQuc3ViSGVhZGVycy5sZW5ndGgmJnQuc3ViSGVhZGVycy5tYXAocmVjdXJzZUhlYWRlciksZS5wdXNoKHQpfTtyZXR1cm4gcmVjdXJzZUhlYWRlcihsKSxlfSxnZXRDb250ZXh0OigpPT4oe3RhYmxlOmUsaGVhZGVyOmwsY29sdW1uOnR9KX07cmV0dXJuIGUuX2ZlYXR1cmVzLmZvckVhY2godD0+e251bGw9PXQuY3JlYXRlSGVhZGVyfHx0LmNyZWF0ZUhlYWRlcihsLGUpfSksbH1jb25zdCBJPXtjcmVhdGVUYWJsZTplPT57ZS5nZXRIZWFkZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKHQsbixvLGwpPT57dmFyIGEscjtjb25zdCBpPW51bGwhPShhPW51bGw9PW8/dm9pZCAwOm8ubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKSk/YTpbXSxzPW51bGwhPShyPW51bGw9PWw/dm9pZCAwOmwubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKSk/cjpbXTtyZXR1cm4gYnVpbGRIZWFkZXJHcm91cHModCxbLi4uaSwuLi5uLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZS5pZCl8fG51bGwhPWwmJmwuaW5jbHVkZXMoZS5pZCkpKSwuLi5zXSxlKX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldENlbnRlckhlYWRlckdyb3Vwcz1tZW1vKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLG8sbCk9PmJ1aWxkSGVhZGVyR3JvdXBzKHQsbj1uLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZS5pZCl8fG51bGwhPWwmJmwuaW5jbHVkZXMoZS5pZCkpKSxlLCJjZW50ZXIiKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0TGVmdEhlYWRlckdyb3Vwcz1tZW1vKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0XSwodCxuLG8pPT57dmFyIGw7cmV0dXJuIGJ1aWxkSGVhZGVyR3JvdXBzKHQsbnVsbCE9KGw9bnVsbD09bz92b2lkIDA6by5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pKT9sOltdLGUsImxlZnQiKX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldFJpZ2h0SGVhZGVyR3JvdXBzPW1lbW8oKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLG8pPT57dmFyIGw7cmV0dXJuIGJ1aWxkSGVhZGVyR3JvdXBzKHQsbnVsbCE9KGw9bnVsbD09bz92b2lkIDA6by5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pKT9sOltdLGUsInJpZ2h0Iil9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucyxQKSksZS5nZXRGb290ZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0SGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldExlZnRGb290ZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0TGVmdEhlYWRlckdyb3VwcygpXSxlPT5bLi4uZV0ucmV2ZXJzZSgpLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucyxQKSksZS5nZXRDZW50ZXJGb290ZXJHcm91cHM9bWVtbygoKT0+W2UuZ2V0Q2VudGVySGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldFJpZ2h0Rm9vdGVyR3JvdXBzPW1lbW8oKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldEZsYXRIZWFkZXJzPW1lbW8oKCk9PltlLmdldEhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0TGVmdEZsYXRIZWFkZXJzPW1lbW8oKCk9PltlLmdldExlZnRIZWFkZXJHcm91cHMoKV0sZT0+ZS5tYXAoZT0+ZS5oZWFkZXJzKS5mbGF0KCksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldENlbnRlckZsYXRIZWFkZXJzPW1lbW8oKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0UmlnaHRGbGF0SGVhZGVycz1tZW1vKCgpPT5bZS5nZXRSaWdodEhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0Q2VudGVyTGVhZkhlYWRlcnM9bWVtbygoKT0+W2UuZ2V0Q2VudGVyRmxhdEhlYWRlcnMoKV0sZT0+ZS5maWx0ZXIoZT0+e3ZhciB0O3JldHVybiEobnVsbCE9KHQ9ZS5zdWJIZWFkZXJzKSYmdC5sZW5ndGgpfSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldExlZnRMZWFmSGVhZGVycz1tZW1vKCgpPT5bZS5nZXRMZWZ0RmxhdEhlYWRlcnMoKV0sZT0+ZS5maWx0ZXIoZT0+e3ZhciB0O3JldHVybiEobnVsbCE9KHQ9ZS5zdWJIZWFkZXJzKSYmdC5sZW5ndGgpfSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLFApKSxlLmdldFJpZ2h0TGVhZkhlYWRlcnM9bWVtbygoKT0+W2UuZ2V0UmlnaHRGbGF0SGVhZGVycygpXSxlPT5lLmZpbHRlcihlPT57dmFyIHQ7cmV0dXJuIShudWxsIT0odD1lLnN1YkhlYWRlcnMpJiZ0Lmxlbmd0aCl9KSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpLGUuZ2V0TGVhZkhlYWRlcnM9bWVtbygoKT0+W2UuZ2V0TGVmdEhlYWRlckdyb3VwcygpLGUuZ2V0Q2VudGVySGVhZGVyR3JvdXBzKCksZS5nZXRSaWdodEhlYWRlckdyb3VwcygpXSwoZSx0LG4pPT57dmFyIG8sbCxhLHIsaSxzO3JldHVyblsuLi5udWxsIT0obz1udWxsPT0obD1lWzBdKT92b2lkIDA6bC5oZWFkZXJzKT9vOltdLC4uLm51bGwhPShhPW51bGw9PShyPXRbMF0pP3ZvaWQgMDpyLmhlYWRlcnMpP2E6W10sLi4ubnVsbCE9KGk9bnVsbD09KHM9blswXSk/dm9pZCAwOnMuaGVhZGVycyk/aTpbXV0ubWFwKGU9PmUuZ2V0TGVhZkhlYWRlcnMoKSkuZmxhdCgpfSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsUCkpfX07ZnVuY3Rpb24gYnVpbGRIZWFkZXJHcm91cHMoZSx0LG4sbyl7dmFyIGwsYTtsZXQgcj0wO2NvbnN0IGZpbmRNYXhEZXB0aD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PTEpLHI9TWF0aC5tYXgocix0KSxlLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZSgpKS5mb3JFYWNoKGU9Pnt2YXIgbjtudWxsIT0obj1lLmNvbHVtbnMpJiZuLmxlbmd0aCYmZmluZE1heERlcHRoKGUuY29sdW1ucyx0KzEpfSwwKX07ZmluZE1heERlcHRoKGUpO2xldCBpPVtdO2NvbnN0IGNyZWF0ZUhlYWRlckdyb3VwPShlLHQpPT57Y29uc3QgbD17ZGVwdGg6dCxpZDpbbyxgJHt0fWBdLmZpbHRlcihCb29sZWFuKS5qb2luKCJfIiksaGVhZGVyczpbXX0sYT1bXTtlLmZvckVhY2goZT0+e2NvbnN0IHI9Wy4uLmFdLnJldmVyc2UoKVswXTtsZXQgaSxzPSExO2lmKGUuY29sdW1uLmRlcHRoPT09bC5kZXB0aCYmZS5jb2x1bW4ucGFyZW50P2k9ZS5jb2x1bW4ucGFyZW50OihpPWUuY29sdW1uLHM9ITApLHImJihudWxsPT1yP3ZvaWQgMDpyLmNvbHVtbik9PT1pKXIuc3ViSGVhZGVycy5wdXNoKGUpO2Vsc2V7Y29uc3QgbD1jcmVhdGVIZWFkZXIobixpLHtpZDpbbyx0LGkuaWQsbnVsbD09ZT92b2lkIDA6ZS5pZF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIl8iKSxpc1BsYWNlaG9sZGVyOnMscGxhY2Vob2xkZXJJZDpzP2Ake2EuZmlsdGVyKGU9PmUuY29sdW1uPT09aSkubGVuZ3RofWA6dm9pZCAwLGRlcHRoOnQsaW5kZXg6YS5sZW5ndGh9KTtsLnN1YkhlYWRlcnMucHVzaChlKSxhLnB1c2gobCl9bC5oZWFkZXJzLnB1c2goZSksZS5oZWFkZXJHcm91cD1sfSksaS5wdXNoKGwpLHQ+MCYmY3JlYXRlSGVhZGVyR3JvdXAoYSx0LTEpfSxzPXQubWFwKChlLHQpPT5jcmVhdGVIZWFkZXIobixlLHtkZXB0aDpyLGluZGV4OnR9KSk7Y3JlYXRlSGVhZGVyR3JvdXAocyxyLTEpLGkucmV2ZXJzZSgpO2NvbnN0IHJlY3Vyc2VIZWFkZXJzRm9yU3BhbnM9ZT0+ZS5maWx0ZXIoZT0+ZS5jb2x1bW4uZ2V0SXNWaXNpYmxlKCkpLm1hcChlPT57bGV0IHQ9MCxuPTAsbz1bMF07ZS5zdWJIZWFkZXJzJiZlLnN1YkhlYWRlcnMubGVuZ3RoPyhvPVtdLHJlY3Vyc2VIZWFkZXJzRm9yU3BhbnMoZS5zdWJIZWFkZXJzKS5mb3JFYWNoKGU9PntsZXR7Y29sU3BhbjpuLHJvd1NwYW46bH09ZTt0Kz1uLG8ucHVzaChsKX0pKTp0PTE7cmV0dXJuIG4rPU1hdGgubWluKC4uLm8pLGUuY29sU3Bhbj10LGUucm93U3Bhbj1uLHtjb2xTcGFuOnQscm93U3BhbjpufX0pO3JldHVybiByZWN1cnNlSGVhZGVyc0ZvclNwYW5zKG51bGwhPShsPW51bGw9PShhPWlbMF0pP3ZvaWQgMDphLmhlYWRlcnMpP2w6W10pLGl9Y29uc3QgY3JlYXRlUm93PShlLHQsbixvLGwsYSxyKT0+e2xldCBpPXtpZDp0LGluZGV4Om8sb3JpZ2luYWw6bixkZXB0aDpsLHBhcmVudElkOnIsX3ZhbHVlc0NhY2hlOnt9LF91bmlxdWVWYWx1ZXNDYWNoZTp7fSxnZXRWYWx1ZTp0PT57aWYoaS5fdmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGkuX3ZhbHVlc0NhY2hlW3RdO2NvbnN0IG49ZS5nZXRDb2x1bW4odCk7cmV0dXJuIG51bGwhPW4mJm4uYWNjZXNzb3JGbj8oaS5fdmFsdWVzQ2FjaGVbdF09bi5hY2Nlc3NvckZuKGkub3JpZ2luYWwsbyksaS5fdmFsdWVzQ2FjaGVbdF0pOnZvaWQgMH0sZ2V0VW5pcXVlVmFsdWVzOnQ9PntpZihpLl91bmlxdWVWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gaS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF07Y29uc3Qgbj1lLmdldENvbHVtbih0KTtyZXR1cm4gbnVsbCE9biYmbi5hY2Nlc3NvckZuP24uY29sdW1uRGVmLmdldFVuaXF1ZVZhbHVlcz8oaS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF09bi5jb2x1bW5EZWYuZ2V0VW5pcXVlVmFsdWVzKGkub3JpZ2luYWwsbyksaS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pOihpLl91bmlxdWVWYWx1ZXNDYWNoZVt0XT1baS5nZXRWYWx1ZSh0KV0saS5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pOnZvaWQgMH0scmVuZGVyVmFsdWU6dD0+e3ZhciBuO3JldHVybiBudWxsIT0obj1pLmdldFZhbHVlKHQpKT9uOmUub3B0aW9ucy5yZW5kZXJGYWxsYmFja1ZhbHVlfSxzdWJSb3dzOltdLGdldExlYWZSb3dzOigpPT5mdW5jdGlvbihlLHQpe2NvbnN0IG49W10scmVjdXJzZT1lPT57ZS5mb3JFYWNoKGU9PntuLnB1c2goZSk7Y29uc3Qgbz10KGUpO251bGwhPW8mJm8ubGVuZ3RoJiZyZWN1cnNlKG8pfSl9O3JldHVybiByZWN1cnNlKGUpLG59KGkuc3ViUm93cyxlPT5lLnN1YlJvd3MpLGdldFBhcmVudFJvdzooKT0+aS5wYXJlbnRJZD9lLmdldFJvdyhpLnBhcmVudElkLCEwKTp2b2lkIDAsZ2V0UGFyZW50Um93czooKT0+e2xldCBlPVtdLHQ9aTtmb3IoOzspe2NvbnN0IG49dC5nZXRQYXJlbnRSb3coKTtpZighbilicmVhaztlLnB1c2gobiksdD1ufXJldHVybiBlLnJldmVyc2UoKX0sZ2V0QWxsQ2VsbHM6bWVtbygoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKV0sdD0+dC5tYXAodD0+ZnVuY3Rpb24oZSx0LG4sbyl7Y29uc3QgbD17aWQ6YCR7dC5pZH1fJHtuLmlkfWAscm93OnQsY29sdW1uOm4sZ2V0VmFsdWU6KCk9PnQuZ2V0VmFsdWUobykscmVuZGVyVmFsdWU6KCk9Pnt2YXIgdDtyZXR1cm4gbnVsbCE9KHQ9bC5nZXRWYWx1ZSgpKT90OmUub3B0aW9ucy5yZW5kZXJGYWxsYmFja1ZhbHVlfSxnZXRDb250ZXh0Om1lbW8oKCk9PltlLG4sdCxsXSwoZSx0LG4sbyk9Pih7dGFibGU6ZSxjb2x1bW46dCxyb3c6bixjZWxsOm8sZ2V0VmFsdWU6by5nZXRWYWx1ZSxyZW5kZXJWYWx1ZTpvLnJlbmRlclZhbHVlfSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z0NlbGxzIikpfTtyZXR1cm4gZS5fZmVhdHVyZXMuZm9yRWFjaChvPT57bnVsbD09by5jcmVhdGVDZWxsfHxvLmNyZWF0ZUNlbGwobCxuLHQsZSl9LHt9KSxsfShlLGksdCx0LmlkKSksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksX2dldEFsbENlbGxzQnlDb2x1bW5JZDptZW1vKCgpPT5baS5nZXRBbGxDZWxscygpXSxlPT5lLnJlZHVjZSgoZSx0KT0+KGVbdC5jb2x1bW4uaWRdPXQsZSkse30pLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdSb3dzIikpfTtmb3IobGV0IHQ9MDt0PGUuX2ZlYXR1cmVzLmxlbmd0aDt0Kyspe2NvbnN0IG49ZS5fZmVhdHVyZXNbdF07bnVsbD09bnx8bnVsbD09bi5jcmVhdGVSb3d8fG4uY3JlYXRlUm93KGksZSl9cmV0dXJuIGl9LE89e2NyZWF0ZUNvbHVtbjooZSx0KT0+e2UuX2dldEZhY2V0ZWRSb3dNb2RlbD10Lm9wdGlvbnMuZ2V0RmFjZXRlZFJvd01vZGVsJiZ0Lm9wdGlvbnMuZ2V0RmFjZXRlZFJvd01vZGVsKHQsZS5pZCksZS5nZXRGYWNldGVkUm93TW9kZWw9KCk9PmUuX2dldEZhY2V0ZWRSb3dNb2RlbD9lLl9nZXRGYWNldGVkUm93TW9kZWwoKTp0LmdldFByZUZpbHRlcmVkUm93TW9kZWwoKSxlLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzPXQub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzJiZ0Lm9wdGlvbnMuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcyh0LGUuaWQpLGUuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcz0oKT0+ZS5fZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcz9lLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzKCk6bmV3IE1hcCxlLl9nZXRGYWNldGVkTWluTWF4VmFsdWVzPXQub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzJiZ0Lm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyh0LGUuaWQpLGUuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcz0oKT0+e2lmKGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXMpcmV0dXJuIGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXMoKX19fSxpbmNsdWRlc1N0cmluZz0oZSx0LG4pPT57dmFyIG8sbDtjb25zdCBhPW51bGw9PW58fG51bGw9PShvPW4udG9TdHJpbmcoKSk/dm9pZCAwOm8udG9Mb3dlckNhc2UoKTtyZXR1cm4gQm9vbGVhbihudWxsPT0obD1lLmdldFZhbHVlKHQpKXx8bnVsbD09KGw9bC50b1N0cmluZygpKXx8bnVsbD09KGw9bC50b0xvd2VyQ2FzZSgpKT92b2lkIDA6bC5pbmNsdWRlcyhhKSl9O2luY2x1ZGVzU3RyaW5nLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKTtjb25zdCBpbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZT0oZSx0LG4pPT57dmFyIG87cmV0dXJuIEJvb2xlYW4obnVsbD09KG89ZS5nZXRWYWx1ZSh0KSl8fG51bGw9PShvPW8udG9TdHJpbmcoKSk/dm9pZCAwOm8uaW5jbHVkZXMobikpfTtpbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZS5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSk7Y29uc3QgZXF1YWxzU3RyaW5nPShlLHQsbik9Pnt2YXIgbztyZXR1cm4obnVsbD09KG89ZS5nZXRWYWx1ZSh0KSl8fG51bGw9PShvPW8udG9TdHJpbmcoKSk/dm9pZCAwOm8udG9Mb3dlckNhc2UoKSk9PT0obnVsbD09bj92b2lkIDA6bi50b0xvd2VyQ2FzZSgpKX07ZXF1YWxzU3RyaW5nLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKTtjb25zdCBhcnJJbmNsdWRlcz0oZSx0LG4pPT57dmFyIG87cmV0dXJuIG51bGw9PShvPWUuZ2V0VmFsdWUodCkpP3ZvaWQgMDpvLmluY2x1ZGVzKG4pfTthcnJJbmNsdWRlcy5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSk7Y29uc3QgYXJySW5jbHVkZXNBbGw9KGUsdCxuKT0+IW4uc29tZShuPT57dmFyIG87cmV0dXJuIShudWxsIT0obz1lLmdldFZhbHVlKHQpKSYmby5pbmNsdWRlcyhuKSl9KTthcnJJbmNsdWRlc0FsbC5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSl8fCEobnVsbCE9ZSYmZS5sZW5ndGgpO2NvbnN0IGFyckluY2x1ZGVzU29tZT0oZSx0LG4pPT5uLnNvbWUobj0+e3ZhciBvO3JldHVybiBudWxsPT0obz1lLmdldFZhbHVlKHQpKT92b2lkIDA6by5pbmNsdWRlcyhuKX0pO2FyckluY2x1ZGVzU29tZS5hdXRvUmVtb3ZlPWU9PnRlc3RGYWxzZXkoZSl8fCEobnVsbCE9ZSYmZS5sZW5ndGgpO2NvbnN0IGVxdWFscz0oZSx0LG4pPT5lLmdldFZhbHVlKHQpPT09bjtlcXVhbHMuYXV0b1JlbW92ZT1lPT50ZXN0RmFsc2V5KGUpO2NvbnN0IHdlYWtFcXVhbHM9KGUsdCxuKT0+ZS5nZXRWYWx1ZSh0KT09bjt3ZWFrRXF1YWxzLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKTtjb25zdCBpbk51bWJlclJhbmdlPShlLHQsbik9PntsZXRbbyxsXT1uO2NvbnN0IGE9ZS5nZXRWYWx1ZSh0KTtyZXR1cm4gYT49byYmYTw9bH07aW5OdW1iZXJSYW5nZS5yZXNvbHZlRmlsdGVyVmFsdWU9ZT0+e2xldFt0LG5dPWUsbz0ibnVtYmVyIiE9dHlwZW9mIHQ/cGFyc2VGbG9hdCh0KTp0LGw9Im51bWJlciIhPXR5cGVvZiBuP3BhcnNlRmxvYXQobik6bixhPW51bGw9PT10fHxOdW1iZXIuaXNOYU4obyk/LTEvMDpvLHI9bnVsbD09PW58fE51bWJlci5pc05hTihsKT8xLzA6bDtpZihhPnIpe2NvbnN0IGU9YTthPXIscj1lfXJldHVyblthLHJdfSxpbk51bWJlclJhbmdlLmF1dG9SZW1vdmU9ZT0+dGVzdEZhbHNleShlKXx8dGVzdEZhbHNleShlWzBdKSYmdGVzdEZhbHNleShlWzFdKTtjb25zdCBfPXtpbmNsdWRlc1N0cmluZzppbmNsdWRlc1N0cmluZyxpbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZTppbmNsdWRlc1N0cmluZ1NlbnNpdGl2ZSxlcXVhbHNTdHJpbmc6ZXF1YWxzU3RyaW5nLGFyckluY2x1ZGVzOmFyckluY2x1ZGVzLGFyckluY2x1ZGVzQWxsOmFyckluY2x1ZGVzQWxsLGFyckluY2x1ZGVzU29tZTphcnJJbmNsdWRlc1NvbWUsZXF1YWxzOmVxdWFscyx3ZWFrRXF1YWxzOndlYWtFcXVhbHMsaW5OdW1iZXJSYW5nZTppbk51bWJlclJhbmdlfTtmdW5jdGlvbiB0ZXN0RmFsc2V5KGUpe3JldHVybiBudWxsPT1lfHwiIj09PWV9Y29uc3Qgaz17Z2V0RGVmYXVsdENvbHVtbkRlZjooKT0+KHtmaWx0ZXJGbjoiYXV0byJ9KSxnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5GaWx0ZXJzOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uRmlsdGVyc0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5GaWx0ZXJzIixlKSxmaWx0ZXJGcm9tTGVhZlJvd3M6ITEsbWF4TGVhZlJvd0ZpbHRlckRlcHRoOjEwMH0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UuZ2V0QXV0b0ZpbHRlckZuPSgpPT57Y29uc3Qgbj10LmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdLG89bnVsbD09bj92b2lkIDA6bi5nZXRWYWx1ZShlLmlkKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG8/Xy5pbmNsdWRlc1N0cmluZzoibnVtYmVyIj09dHlwZW9mIG8/Xy5pbk51bWJlclJhbmdlOiJib29sZWFuIj09dHlwZW9mIG98fG51bGwhPT1vJiYib2JqZWN0Ij09dHlwZW9mIG8/Xy5lcXVhbHM6QXJyYXkuaXNBcnJheShvKT9fLmFyckluY2x1ZGVzOl8ud2Vha0VxdWFsc30sZS5nZXRGaWx0ZXJGbj0oKT0+e3ZhciBuLG87cmV0dXJuIGlzRnVuY3Rpb24oZS5jb2x1bW5EZWYuZmlsdGVyRm4pP2UuY29sdW1uRGVmLmZpbHRlckZuOiJhdXRvIj09PWUuY29sdW1uRGVmLmZpbHRlckZuP2UuZ2V0QXV0b0ZpbHRlckZuKCk6bnVsbCE9KG49bnVsbD09KG89dC5vcHRpb25zLmZpbHRlckZucyk/dm9pZCAwOm9bZS5jb2x1bW5EZWYuZmlsdGVyRm5dKT9uOl9bZS5jb2x1bW5EZWYuZmlsdGVyRm5dfSxlLmdldENhbkZpbHRlcj0oKT0+e3ZhciBuLG8sbDtyZXR1cm4obnVsbD09KG49ZS5jb2x1bW5EZWYuZW5hYmxlQ29sdW1uRmlsdGVyKXx8bikmJihudWxsPT0obz10Lm9wdGlvbnMuZW5hYmxlQ29sdW1uRmlsdGVycyl8fG8pJiYobnVsbD09KGw9dC5vcHRpb25zLmVuYWJsZUZpbHRlcnMpfHxsKSYmISFlLmFjY2Vzc29yRm59LGUuZ2V0SXNGaWx0ZXJlZD0oKT0+ZS5nZXRGaWx0ZXJJbmRleCgpPi0xLGUuZ2V0RmlsdGVyVmFsdWU9KCk9Pnt2YXIgbjtyZXR1cm4gbnVsbD09KG49dC5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMpfHxudWxsPT0obj1uLmZpbmQodD0+dC5pZD09PWUuaWQpKT92b2lkIDA6bi52YWx1ZX0sZS5nZXRGaWx0ZXJJbmRleD0oKT0+e3ZhciBuLG87cmV0dXJuIG51bGwhPShuPW51bGw9PShvPXQuZ2V0U3RhdGUoKS5jb2x1bW5GaWx0ZXJzKT92b2lkIDA6by5maW5kSW5kZXgodD0+dC5pZD09PWUuaWQpKT9uOi0xfSxlLnNldEZpbHRlclZhbHVlPW49Pnt0LnNldENvbHVtbkZpbHRlcnModD0+e2NvbnN0IG89ZS5nZXRGaWx0ZXJGbigpLGw9bnVsbD09dD92b2lkIDA6dC5maW5kKHQ9PnQuaWQ9PT1lLmlkKSxhPWZ1bmN0aW9uYWxVcGRhdGUobixsP2wudmFsdWU6dm9pZCAwKTt2YXIgcjtpZihzaG91bGRBdXRvUmVtb3ZlRmlsdGVyKG8sYSxlKSlyZXR1cm4gbnVsbCE9KHI9bnVsbD09dD92b2lkIDA6dC5maWx0ZXIodD0+dC5pZCE9PWUuaWQpKT9yOltdO2NvbnN0IGk9e2lkOmUuaWQsdmFsdWU6YX07dmFyIHM7cmV0dXJuIGw/bnVsbCE9KHM9bnVsbD09dD92b2lkIDA6dC5tYXAodD0+dC5pZD09PWUuaWQ/aTp0KSk/czpbXTpudWxsIT10JiZ0Lmxlbmd0aD9bLi4udCxpXTpbaV19KX19LGNyZWF0ZVJvdzooZSx0KT0+e2UuY29sdW1uRmlsdGVycz17fSxlLmNvbHVtbkZpbHRlcnNNZXRhPXt9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5GaWx0ZXJzPXQ9Pntjb25zdCBuPWUuZ2V0QWxsTGVhZkNvbHVtbnMoKTtudWxsPT1lLm9wdGlvbnMub25Db2x1bW5GaWx0ZXJzQ2hhbmdlfHxlLm9wdGlvbnMub25Db2x1bW5GaWx0ZXJzQ2hhbmdlKGU9Pnt2YXIgbztyZXR1cm4gbnVsbD09KG89ZnVuY3Rpb25hbFVwZGF0ZSh0LGUpKT92b2lkIDA6by5maWx0ZXIoZT0+e2NvbnN0IHQ9bi5maW5kKHQ9PnQuaWQ9PT1lLmlkKTtpZih0KXtpZihzaG91bGRBdXRvUmVtb3ZlRmlsdGVyKHQuZ2V0RmlsdGVyRm4oKSxlLnZhbHVlLHQpKXJldHVybiExfXJldHVybiEwfSl9KX0sZS5yZXNldENvbHVtbkZpbHRlcnM9dD0+e3ZhciBuLG87ZS5zZXRDb2x1bW5GaWx0ZXJzKHQ/W106bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmNvbHVtbkZpbHRlcnMpP246W10pfSxlLmdldFByZUZpbHRlcmVkUm93TW9kZWw9KCk9PmUuZ2V0Q29yZVJvd01vZGVsKCksZS5nZXRGaWx0ZXJlZFJvd01vZGVsPSgpPT4oIWUuX2dldEZpbHRlcmVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRGaWx0ZXJlZFJvd01vZGVsJiYoZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RmlsdGVyZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEZpbHRlcmluZ3x8IWUuX2dldEZpbHRlcmVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbCgpKX19O2Z1bmN0aW9uIHNob3VsZEF1dG9SZW1vdmVGaWx0ZXIoZSx0LG4pe3JldHVybiEoIWV8fCFlLmF1dG9SZW1vdmUpJiZlLmF1dG9SZW1vdmUodCxuKXx8dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0JiYhdH1jb25zdCBBPXtzdW06KGUsdCxuKT0+bi5yZWR1Y2UoKHQsbik9Pntjb25zdCBvPW4uZ2V0VmFsdWUoZSk7cmV0dXJuIHQrKCJudW1iZXIiPT10eXBlb2Ygbz9vOjApfSwwKSxtaW46KGUsdCxuKT0+e2xldCBvO3JldHVybiBuLmZvckVhY2godD0+e2NvbnN0IG49dC5nZXRWYWx1ZShlKTtudWxsIT1uJiYobz5ufHx2b2lkIDA9PT1vJiZuPj1uKSYmKG89bil9KSxvfSxtYXg6KGUsdCxuKT0+e2xldCBvO3JldHVybiBuLmZvckVhY2godD0+e2NvbnN0IG49dC5nZXRWYWx1ZShlKTtudWxsIT1uJiYobzxufHx2b2lkIDA9PT1vJiZuPj1uKSYmKG89bil9KSxvfSxleHRlbnQ6KGUsdCxuKT0+e2xldCBvLGw7cmV0dXJuIG4uZm9yRWFjaCh0PT57Y29uc3Qgbj10LmdldFZhbHVlKGUpO251bGwhPW4mJih2b2lkIDA9PT1vP24+PW4mJihvPWw9bik6KG8+biYmKG89biksbDxuJiYobD1uKSkpfSksW28sbF19LG1lYW46KGUsdCk9PntsZXQgbj0wLG89MDtpZih0LmZvckVhY2godD0+e2xldCBsPXQuZ2V0VmFsdWUoZSk7bnVsbCE9bCYmKGw9K2wpPj1sJiYoKytuLG8rPWwpfSksbilyZXR1cm4gby9ufSxtZWRpYW46KGUsdCk9PntpZighdC5sZW5ndGgpcmV0dXJuO2NvbnN0IG49dC5tYXAodD0+dC5nZXRWYWx1ZShlKSk7aWYobz1uLCFBcnJheS5pc0FycmF5KG8pfHwhby5ldmVyeShlPT4ibnVtYmVyIj09dHlwZW9mIGUpKXJldHVybjt2YXIgbztpZigxPT09bi5sZW5ndGgpcmV0dXJuIG5bMF07Y29uc3QgbD1NYXRoLmZsb29yKG4ubGVuZ3RoLzIpLGE9bi5zb3J0KChlLHQpPT5lLXQpO3JldHVybiBuLmxlbmd0aCUyIT0wP2FbbF06KGFbbC0xXSthW2xdKS8yfSx1bmlxdWU6KGUsdCk9PkFycmF5LmZyb20obmV3IFNldCh0Lm1hcCh0PT50LmdldFZhbHVlKGUpKSkudmFsdWVzKCkpLHVuaXF1ZUNvdW50OihlLHQpPT5uZXcgU2V0KHQubWFwKHQ9PnQuZ2V0VmFsdWUoZSkpKS5zaXplLGNvdW50OihlLHQpPT50Lmxlbmd0aH0sej17Z2V0RGVmYXVsdENvbHVtbkRlZjooKT0+KHthZ2dyZWdhdGVkQ2VsbDplPT57dmFyIHQsbjtyZXR1cm4gbnVsbCE9KHQ9bnVsbD09KG49ZS5nZXRWYWx1ZSgpKXx8bnVsbD09bi50b1N0cmluZz92b2lkIDA6bi50b1N0cmluZygpKT90Om51bGx9LGFnZ3JlZ2F0aW9uRm46ImF1dG8ifSksZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Z3JvdXBpbmc6W10sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Hcm91cGluZ0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJncm91cGluZyIsZSksZ3JvdXBlZENvbHVtbk1vZGU6InJlb3JkZXIifSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS50b2dnbGVHcm91cGluZz0oKT0+e3Quc2V0R3JvdXBpbmcodD0+bnVsbCE9dCYmdC5pbmNsdWRlcyhlLmlkKT90LmZpbHRlcih0PT50IT09ZS5pZCk6Wy4uLm51bGwhPXQ/dDpbXSxlLmlkXSl9LGUuZ2V0Q2FuR3JvdXA9KCk9Pnt2YXIgbixvO3JldHVybihudWxsPT0obj1lLmNvbHVtbkRlZi5lbmFibGVHcm91cGluZyl8fG4pJiYobnVsbD09KG89dC5vcHRpb25zLmVuYWJsZUdyb3VwaW5nKXx8bykmJighIWUuYWNjZXNzb3JGbnx8ISFlLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKX0sZS5nZXRJc0dyb3VwZWQ9KCk9Pnt2YXIgbjtyZXR1cm4gbnVsbD09KG49dC5nZXRTdGF0ZSgpLmdyb3VwaW5nKT92b2lkIDA6bi5pbmNsdWRlcyhlLmlkKX0sZS5nZXRHcm91cGVkSW5kZXg9KCk9Pnt2YXIgbjtyZXR1cm4gbnVsbD09KG49dC5nZXRTdGF0ZSgpLmdyb3VwaW5nKT92b2lkIDA6bi5pbmRleE9mKGUuaWQpfSxlLmdldFRvZ2dsZUdyb3VwaW5nSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5Hcm91cCgpO3JldHVybigpPT57dCYmZS50b2dnbGVHcm91cGluZygpfX0sZS5nZXRBdXRvQWdncmVnYXRpb25Gbj0oKT0+e2NvbnN0IG49dC5nZXRDb3JlUm93TW9kZWwoKS5mbGF0Um93c1swXSxvPW51bGw9PW4/dm9pZCAwOm4uZ2V0VmFsdWUoZS5pZCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBvP0Euc3VtOiJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKT9BLmV4dGVudDp2b2lkIDB9LGUuZ2V0QWdncmVnYXRpb25Gbj0oKT0+e3ZhciBuLG87aWYoIWUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBpc0Z1bmN0aW9uKGUuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm4pP2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm46ImF1dG8iPT09ZS5jb2x1bW5EZWYuYWdncmVnYXRpb25Gbj9lLmdldEF1dG9BZ2dyZWdhdGlvbkZuKCk6bnVsbCE9KG49bnVsbD09KG89dC5vcHRpb25zLmFnZ3JlZ2F0aW9uRm5zKT92b2lkIDA6b1tlLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuXSk/bjpBW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0R3JvdXBpbmc9dD0+bnVsbD09ZS5vcHRpb25zLm9uR3JvdXBpbmdDaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vbkdyb3VwaW5nQ2hhbmdlKHQpLGUucmVzZXRHcm91cGluZz10PT57dmFyIG4sbztlLnNldEdyb3VwaW5nKHQ/W106bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmdyb3VwaW5nKT9uOltdKX0sZS5nZXRQcmVHcm91cGVkUm93TW9kZWw9KCk9PmUuZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLGUuZ2V0R3JvdXBlZFJvd01vZGVsPSgpPT4oIWUuX2dldEdyb3VwZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEdyb3VwZWRSb3dNb2RlbCYmKGUuX2dldEdyb3VwZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0R3JvdXBlZFJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsR3JvdXBpbmd8fCFlLl9nZXRHcm91cGVkUm93TW9kZWw/ZS5nZXRQcmVHcm91cGVkUm93TW9kZWwoKTplLl9nZXRHcm91cGVkUm93TW9kZWwoKSl9LGNyZWF0ZVJvdzooZSx0KT0+e2UuZ2V0SXNHcm91cGVkPSgpPT4hIWUuZ3JvdXBpbmdDb2x1bW5JZCxlLmdldEdyb3VwaW5nVmFsdWU9bj0+e2lmKGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkobikpcmV0dXJuIGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGVbbl07Y29uc3Qgbz10LmdldENvbHVtbihuKTtyZXR1cm4gbnVsbCE9byYmby5jb2x1bW5EZWYuZ2V0R3JvdXBpbmdWYWx1ZT8oZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXT1vLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKGUub3JpZ2luYWwpLGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGVbbl0pOmUuZ2V0VmFsdWUobil9LGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGU9e319LGNyZWF0ZUNlbGw6KGUsdCxuLG8pPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PnQuZ2V0SXNHcm91cGVkKCkmJnQuaWQ9PT1uLmdyb3VwaW5nQ29sdW1uSWQsZS5nZXRJc1BsYWNlaG9sZGVyPSgpPT4hZS5nZXRJc0dyb3VwZWQoKSYmdC5nZXRJc0dyb3VwZWQoKSxlLmdldElzQWdncmVnYXRlZD0oKT0+e3ZhciB0O3JldHVybiFlLmdldElzR3JvdXBlZCgpJiYhZS5nZXRJc1BsYWNlaG9sZGVyKCkmJiEobnVsbD09KHQ9bi5zdWJSb3dzKXx8IXQubGVuZ3RoKX19fTtjb25zdCBCPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5PcmRlcjpbXSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtbk9yZGVyQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoImNvbHVtbk9yZGVyIixlKX0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UuZ2V0SW5kZXg9bWVtbyhlPT5bX2dldFZpc2libGVMZWFmQ29sdW1ucyh0LGUpXSx0PT50LmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCksZ2V0TWVtb09wdGlvbnModC5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSksZS5nZXRJc0ZpcnN0Q29sdW1uPW49Pnt2YXIgbztyZXR1cm4obnVsbD09KG89X2dldFZpc2libGVMZWFmQ29sdW1ucyh0LG4pWzBdKT92b2lkIDA6by5pZCk9PT1lLmlkfSxlLmdldElzTGFzdENvbHVtbj1uPT57dmFyIG87Y29uc3QgbD1fZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHQsbik7cmV0dXJuKG51bGw9PShvPWxbbC5sZW5ndGgtMV0pP3ZvaWQgMDpvLmlkKT09PWUuaWR9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5PcmRlcj10PT5udWxsPT1lLm9wdGlvbnMub25Db2x1bW5PcmRlckNoYW5nZT92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uT3JkZXJDaGFuZ2UodCksZS5yZXNldENvbHVtbk9yZGVyPXQ9Pnt2YXIgbjtlLnNldENvbHVtbk9yZGVyKHQ/W106bnVsbCE9KG49ZS5pbml0aWFsU3RhdGUuY29sdW1uT3JkZXIpP246W10pfSxlLl9nZXRPcmRlckNvbHVtbnNGbj1tZW1vKCgpPT5bZS5nZXRTdGF0ZSgpLmNvbHVtbk9yZGVyLGUuZ2V0U3RhdGUoKS5ncm91cGluZyxlLm9wdGlvbnMuZ3JvdXBlZENvbHVtbk1vZGVdLChlLHQsbik9Pm89PntsZXQgbD1bXTtpZihudWxsIT1lJiZlLmxlbmd0aCl7Y29uc3QgdD1bLi4uZV0sbj1bLi4ub107Zm9yKDtuLmxlbmd0aCYmdC5sZW5ndGg7KXtjb25zdCBlPXQuc2hpZnQoKSxvPW4uZmluZEluZGV4KHQ9PnQuaWQ9PT1lKTtvPi0xJiZsLnB1c2gobi5zcGxpY2UobywxKVswXSl9bD1bLi4ubCwuLi5uXX1lbHNlIGw9bztyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PXR8fCF0Lmxlbmd0aHx8IW4pcmV0dXJuIGU7Y29uc3Qgbz1lLmZpbHRlcihlPT4hdC5pbmNsdWRlcyhlLmlkKSk7cmV0dXJuInJlbW92ZSI9PT1uP286Wy4uLnQubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSwuLi5vXX0obCx0LG4pfSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSl9fSxFPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5QaW5uaW5nOntsZWZ0OltdLHJpZ2h0OltdfSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtblBpbm5pbmdDaGFuZ2U6bWFrZVN0YXRlVXBkYXRlcigiY29sdW1uUGlubmluZyIsZSl9KSxjcmVhdGVDb2x1bW46KGUsdCk9PntlLnBpbj1uPT57Y29uc3Qgbz1lLmdldExlYWZDb2x1bW5zKCkubWFwKGU9PmUuaWQpLmZpbHRlcihCb29sZWFuKTt0LnNldENvbHVtblBpbm5pbmcoZT0+e3ZhciB0LGwsYSxyLGkscztyZXR1cm4icmlnaHQiPT09bj97bGVmdDoobnVsbCE9KGE9bnVsbD09ZT92b2lkIDA6ZS5sZWZ0KT9hOltdKS5maWx0ZXIoZT0+IShudWxsIT1vJiZvLmluY2x1ZGVzKGUpKSkscmlnaHQ6Wy4uLihudWxsIT0ocj1udWxsPT1lP3ZvaWQgMDplLnJpZ2h0KT9yOltdKS5maWx0ZXIoZT0+IShudWxsIT1vJiZvLmluY2x1ZGVzKGUpKSksLi4ub119OiJsZWZ0Ij09PW4/e2xlZnQ6Wy4uLihudWxsIT0oaT1udWxsPT1lP3ZvaWQgMDplLmxlZnQpP2k6W10pLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZSkpKSwuLi5vXSxyaWdodDoobnVsbCE9KHM9bnVsbD09ZT92b2lkIDA6ZS5yaWdodCk/czpbXSkuZmlsdGVyKGU9PiEobnVsbCE9byYmby5pbmNsdWRlcyhlKSkpfTp7bGVmdDoobnVsbCE9KHQ9bnVsbD09ZT92b2lkIDA6ZS5sZWZ0KT90OltdKS5maWx0ZXIoZT0+IShudWxsIT1vJiZvLmluY2x1ZGVzKGUpKSkscmlnaHQ6KG51bGwhPShsPW51bGw9PWU/dm9pZCAwOmUucmlnaHQpP2w6W10pLmZpbHRlcihlPT4hKG51bGwhPW8mJm8uaW5jbHVkZXMoZSkpKX19KX0sZS5nZXRDYW5QaW49KCk9PmUuZ2V0TGVhZkNvbHVtbnMoKS5zb21lKGU9Pnt2YXIgbixvLGw7cmV0dXJuKG51bGw9PShuPWUuY29sdW1uRGVmLmVuYWJsZVBpbm5pbmcpfHxuKSYmKG51bGw9PShvPW51bGwhPShsPXQub3B0aW9ucy5lbmFibGVDb2x1bW5QaW5uaW5nKT9sOnQub3B0aW9ucy5lbmFibGVQaW5uaW5nKXx8byl9KSxlLmdldElzUGlubmVkPSgpPT57Y29uc3Qgbj1lLmdldExlYWZDb2x1bW5zKCkubWFwKGU9PmUuaWQpLHtsZWZ0Om8scmlnaHQ6bH09dC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcsYT1uLnNvbWUoZT0+bnVsbD09bz92b2lkIDA6by5pbmNsdWRlcyhlKSkscj1uLnNvbWUoZT0+bnVsbD09bD92b2lkIDA6bC5pbmNsdWRlcyhlKSk7cmV0dXJuIGE/ImxlZnQiOiEhciYmInJpZ2h0In0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e3ZhciBuLG87Y29uc3QgbD1lLmdldElzUGlubmVkKCk7cmV0dXJuIGw/bnVsbCE9KG49bnVsbD09KG89dC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcpfHxudWxsPT0obz1vW2xdKT92b2lkIDA6by5pbmRleE9mKGUuaWQpKT9uOi0xOjB9fSxjcmVhdGVSb3c6KGUsdCk9PntlLmdldENlbnRlclZpc2libGVDZWxscz1tZW1vKCgpPT5bZS5fZ2V0QWxsVmlzaWJsZUNlbGxzKCksdC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCx0LmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKGUsdCxuKT0+e2NvbnN0IG89Wy4uLm51bGwhPXQ/dDpbXSwuLi5udWxsIT1uP246W11dO3JldHVybiBlLmZpbHRlcihlPT4hby5pbmNsdWRlcyhlLmNvbHVtbi5pZCkpfSxnZXRNZW1vT3B0aW9ucyh0Lm9wdGlvbnMsImRlYnVnUm93cyIpKSxlLmdldExlZnRWaXNpYmxlQ2VsbHM9bWVtbygoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChlLHQpPT4obnVsbCE9dD90OltdKS5tYXAodD0+ZS5maW5kKGU9PmUuY29sdW1uLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKS5tYXAoZT0+KHsuLi5lLHBvc2l0aW9uOiJsZWZ0In0pKSxnZXRNZW1vT3B0aW9ucyh0Lm9wdGlvbnMsImRlYnVnUm93cyIpKSxlLmdldFJpZ2h0VmlzaWJsZUNlbGxzPW1lbW8oKCk9PltlLl9nZXRBbGxWaXNpYmxlQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKGUsdCk9PihudWxsIT10P3Q6W10pLm1hcCh0PT5lLmZpbmQoZT0+ZS5jb2x1bW4uaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246InJpZ2h0In0pKSxnZXRNZW1vT3B0aW9ucyh0Lm9wdGlvbnMsImRlYnVnUm93cyIpKX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uUGlubmluZz10PT5udWxsPT1lLm9wdGlvbnMub25Db2x1bW5QaW5uaW5nQ2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5QaW5uaW5nQ2hhbmdlKHQpLGUucmVzZXRDb2x1bW5QaW5uaW5nPXQ9Pnt2YXIgbixvO3JldHVybiBlLnNldENvbHVtblBpbm5pbmcodD97bGVmdDpbXSxyaWdodDpbXX06bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmNvbHVtblBpbm5pbmcpP246e2xlZnQ6W10scmlnaHQ6W119KX0sZS5nZXRJc1NvbWVDb2x1bW5zUGlubmVkPXQ9Pnt2YXIgbjtjb25zdCBvPWUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nO3ZhciBsLGE7cmV0dXJuIHQ/Qm9vbGVhbihudWxsPT0obj1vW3RdKT92b2lkIDA6bi5sZW5ndGgpOkJvb2xlYW4oKG51bGw9PShsPW8ubGVmdCk/dm9pZCAwOmwubGVuZ3RoKXx8KG51bGw9PShhPW8ucmlnaHQpP3ZvaWQgMDphLmxlbmd0aCkpfSxlLmdldExlZnRMZWFmQ29sdW1ucz1tZW1vKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChlLHQpPT4obnVsbCE9dD90OltdKS5tYXAodD0+ZS5maW5kKGU9PmUuaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUuZ2V0UmlnaHRMZWFmQ29sdW1ucz1tZW1vKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KG51bGwhPXQ/dDpbXSkubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldENlbnRlckxlYWZDb2x1bW5zPW1lbW8oKCk9PltlLmdldEFsbExlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKGUsdCxuKT0+e2NvbnN0IG89Wy4uLm51bGwhPXQ/dDpbXSwuLi5udWxsIT1uP246W11dO3JldHVybiBlLmZpbHRlcihlPT4hby5pbmNsdWRlcyhlLmlkKSl9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpfX07Y29uc3QgRD17c2l6ZToxNTAsbWluU2l6ZToyMCxtYXhTaXplOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSfSwkPXtnZXREZWZhdWx0Q29sdW1uRGVmOigpPT5ELGdldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtblNpemluZzp7fSxjb2x1bW5TaXppbmdJbmZvOntzdGFydE9mZnNldDpudWxsLHN0YXJ0U2l6ZTpudWxsLGRlbHRhT2Zmc2V0Om51bGwsZGVsdGFQZXJjZW50YWdlOm51bGwsaXNSZXNpemluZ0NvbHVtbjohMSxjb2x1bW5TaXppbmdTdGFydDpbXX0sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7Y29sdW1uUmVzaXplTW9kZToib25FbmQiLGNvbHVtblJlc2l6ZURpcmVjdGlvbjoibHRyIixvbkNvbHVtblNpemluZ0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5TaXppbmciLGUpLG9uQ29sdW1uU2l6aW5nSW5mb0NoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5TaXppbmdJbmZvIixlKX0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UuZ2V0U2l6ZT0oKT0+e3ZhciBuLG8sbDtjb25zdCBhPXQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmdbZS5pZF07cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG51bGwhPShuPWUuY29sdW1uRGVmLm1pblNpemUpP246RC5taW5TaXplLG51bGwhPShvPW51bGwhPWE/YTplLmNvbHVtbkRlZi5zaXplKT9vOkQuc2l6ZSksbnVsbCE9KGw9ZS5jb2x1bW5EZWYubWF4U2l6ZSk/bDpELm1heFNpemUpfSxlLmdldFN0YXJ0PW1lbW8oZT0+W2UsX2dldFZpc2libGVMZWFmQ29sdW1ucyh0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKDAsZS5nZXRJbmRleCh0KSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLGdldE1lbW9PcHRpb25zKHQub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUuZ2V0QWZ0ZXI9bWVtbyhlPT5bZSxfZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHQsZSksdC5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ10sKHQsbik9Pm4uc2xpY2UoZS5nZXRJbmRleCh0KSsxKS5yZWR1Y2UoKGUsdCk9PmUrdC5nZXRTaXplKCksMCksZ2V0TWVtb09wdGlvbnModC5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSksZS5yZXNldFNpemU9KCk9Pnt0LnNldENvbHVtblNpemluZyh0PT57bGV0e1tlLmlkXTpuLC4uLm99PXQ7cmV0dXJuIG99KX0sZS5nZXRDYW5SZXNpemU9KCk9Pnt2YXIgbixvO3JldHVybihudWxsPT0obj1lLmNvbHVtbkRlZi5lbmFibGVSZXNpemluZyl8fG4pJiYobnVsbD09KG89dC5vcHRpb25zLmVuYWJsZUNvbHVtblJlc2l6aW5nKXx8byl9LGUuZ2V0SXNSZXNpemluZz0oKT0+dC5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ0luZm8uaXNSZXNpemluZ0NvbHVtbj09PWUuaWR9LGNyZWF0ZUhlYWRlcjooZSx0KT0+e2UuZ2V0U2l6ZT0oKT0+e2xldCB0PTA7Y29uc3QgcmVjdXJzZT1lPT57dmFyIG47ZS5zdWJIZWFkZXJzLmxlbmd0aD9lLnN1YkhlYWRlcnMuZm9yRWFjaChyZWN1cnNlKTp0Kz1udWxsIT0obj1lLmNvbHVtbi5nZXRTaXplKCkpP246MH07cmV0dXJuIHJlY3Vyc2UoZSksdH0sZS5nZXRTdGFydD0oKT0+e2lmKGUuaW5kZXg+MCl7Y29uc3QgdD1lLmhlYWRlckdyb3VwLmhlYWRlcnNbZS5pbmRleC0xXTtyZXR1cm4gdC5nZXRTdGFydCgpK3QuZ2V0U2l6ZSgpfXJldHVybiAwfSxlLmdldFJlc2l6ZUhhbmRsZXI9bj0+e2NvbnN0IG89dC5nZXRDb2x1bW4oZS5jb2x1bW4uaWQpLGw9bnVsbD09bz92b2lkIDA6by5nZXRDYW5SZXNpemUoKTtyZXR1cm4gYT0+e2lmKCFvfHwhbClyZXR1cm47aWYobnVsbD09YS5wZXJzaXN0fHxhLnBlcnNpc3QoKSxpc1RvdWNoU3RhcnRFdmVudChhKSYmYS50b3VjaGVzJiZhLnRvdWNoZXMubGVuZ3RoPjEpcmV0dXJuO2NvbnN0IHI9ZS5nZXRTaXplKCksaT1lP2UuZ2V0TGVhZkhlYWRlcnMoKS5tYXAoZT0+W2UuY29sdW1uLmlkLGUuY29sdW1uLmdldFNpemUoKV0pOltbby5pZCxvLmdldFNpemUoKV1dLHM9aXNUb3VjaFN0YXJ0RXZlbnQoYSk/TWF0aC5yb3VuZChhLnRvdWNoZXNbMF0uY2xpZW50WCk6YS5jbGllbnRYLHU9e30sdXBkYXRlT2Zmc2V0PShlLG4pPT57Im51bWJlciI9PXR5cGVvZiBuJiYodC5zZXRDb2x1bW5TaXppbmdJbmZvKGU9Pnt2YXIgbyxsO2NvbnN0IGE9InJ0bCI9PT10Lm9wdGlvbnMuY29sdW1uUmVzaXplRGlyZWN0aW9uPy0xOjEscj0obi0obnVsbCE9KG89bnVsbD09ZT92b2lkIDA6ZS5zdGFydE9mZnNldCk/bzowKSkqYSxpPU1hdGgubWF4KHIvKG51bGwhPShsPW51bGw9PWU/dm9pZCAwOmUuc3RhcnRTaXplKT9sOjApLC0uOTk5OTk5KTtyZXR1cm4gZS5jb2x1bW5TaXppbmdTdGFydC5mb3JFYWNoKGU9PntsZXRbdCxuXT1lO3VbdF09TWF0aC5yb3VuZCgxMDAqTWF0aC5tYXgobituKmksMCkpLzEwMH0pLHsuLi5lLGRlbHRhT2Zmc2V0OnIsZGVsdGFQZXJjZW50YWdlOml9fSksIm9uQ2hhbmdlIiE9PXQub3B0aW9ucy5jb2x1bW5SZXNpemVNb2RlJiYiZW5kIiE9PWV8fHQuc2V0Q29sdW1uU2l6aW5nKGU9Pih7Li4uZSwuLi51fSkpKX0sb25Nb3ZlPWU9PnVwZGF0ZU9mZnNldCgibW92ZSIsZSksb25FbmQ9ZT0+e3VwZGF0ZU9mZnNldCgiZW5kIixlKSx0LnNldENvbHVtblNpemluZ0luZm8oZT0+KHsuLi5lLGlzUmVzaXppbmdDb2x1bW46ITEsc3RhcnRPZmZzZXQ6bnVsbCxzdGFydFNpemU6bnVsbCxkZWx0YU9mZnNldDpudWxsLGRlbHRhUGVyY2VudGFnZTpudWxsLGNvbHVtblNpemluZ1N0YXJ0OltdfSkpfSxkPW58fCgidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50Om51bGwpO2NvbnN0IGc9e21vdmVIYW5kbGVyOmU9Pm9uTW92ZShlLmNsaWVudFgpLHVwSGFuZGxlcjplPT57bnVsbD09ZHx8ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGcubW92ZUhhbmRsZXIpLG51bGw9PWR8fGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsZy51cEhhbmRsZXIpLG9uRW5kKGUuY2xpZW50WCl9fSxjPXttb3ZlSGFuZGxlcjplPT4oZS5jYW5jZWxhYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpLG9uTW92ZShlLnRvdWNoZXNbMF0uY2xpZW50WCksITEpLHVwSGFuZGxlcjplPT57dmFyIHQ7bnVsbD09ZHx8ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGMubW92ZUhhbmRsZXIpLG51bGw9PWR8fGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLGMudXBIYW5kbGVyKSxlLmNhbmNlbGFibGUmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSksb25FbmQobnVsbD09KHQ9ZS50b3VjaGVzWzBdKT92b2lkIDA6dC5jbGllbnRYKX19LHA9ISFmdW5jdGlvbigpe2lmKCJib29sZWFuIj09dHlwZW9mIEcpcmV0dXJuIEc7bGV0IGU9ITE7dHJ5e2NvbnN0IHQ9e2dldCBwYXNzaXZlKCl7cmV0dXJuIGU9ITAsITF9fSxub29wPSgpPT57fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbm9vcCx0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsbm9vcCl9Y2F0Y2godCl7ZT0hMX1yZXR1cm4gRz1lLEd9KCkmJntwYXNzaXZlOiExfTtpc1RvdWNoU3RhcnRFdmVudChhKT8obnVsbD09ZHx8ZC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGMubW92ZUhhbmRsZXIscCksbnVsbD09ZHx8ZC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsYy51cEhhbmRsZXIscCkpOihudWxsPT1kfHxkLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZy5tb3ZlSGFuZGxlcixwKSxudWxsPT1kfHxkLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGcudXBIYW5kbGVyLHApKSx0LnNldENvbHVtblNpemluZ0luZm8oZT0+KHsuLi5lLHN0YXJ0T2Zmc2V0OnMsc3RhcnRTaXplOnIsZGVsdGFPZmZzZXQ6MCxkZWx0YVBlcmNlbnRhZ2U6MCxjb2x1bW5TaXppbmdTdGFydDppLGlzUmVzaXppbmdDb2x1bW46by5pZH0pKX19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5TaXppbmc9dD0+bnVsbD09ZS5vcHRpb25zLm9uQ29sdW1uU2l6aW5nQ2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5TaXppbmdDaGFuZ2UodCksZS5zZXRDb2x1bW5TaXppbmdJbmZvPXQ9Pm51bGw9PWUub3B0aW9ucy5vbkNvbHVtblNpemluZ0luZm9DaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtblNpemluZ0luZm9DaGFuZ2UodCksZS5yZXNldENvbHVtblNpemluZz10PT57dmFyIG47ZS5zZXRDb2x1bW5TaXppbmcodD97fTpudWxsIT0obj1lLmluaXRpYWxTdGF0ZS5jb2x1bW5TaXppbmcpP246e30pfSxlLnJlc2V0SGVhZGVyU2l6ZUluZm89dD0+e3ZhciBuO2Uuc2V0Q29sdW1uU2l6aW5nSW5mbyh0P3tzdGFydE9mZnNldDpudWxsLHN0YXJ0U2l6ZTpudWxsLGRlbHRhT2Zmc2V0Om51bGwsZGVsdGFQZXJjZW50YWdlOm51bGwsaXNSZXNpemluZ0NvbHVtbjohMSxjb2x1bW5TaXppbmdTdGFydDpbXX06bnVsbCE9KG49ZS5pbml0aWFsU3RhdGUuY29sdW1uU2l6aW5nSW5mbyk/bjp7c3RhcnRPZmZzZXQ6bnVsbCxzdGFydFNpemU6bnVsbCxkZWx0YU9mZnNldDpudWxsLGRlbHRhUGVyY2VudGFnZTpudWxsLGlzUmVzaXppbmdDb2x1bW46ITEsY29sdW1uU2l6aW5nU3RhcnQ6W119KX0sZS5nZXRUb3RhbFNpemU9KCk9Pnt2YXIgdCxuO3JldHVybiBudWxsIT0odD1udWxsPT0obj1lLmdldEhlYWRlckdyb3VwcygpWzBdKT92b2lkIDA6bi5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKSk/dDowfSxlLmdldExlZnRUb3RhbFNpemU9KCk9Pnt2YXIgdCxuO3JldHVybiBudWxsIT0odD1udWxsPT0obj1lLmdldExlZnRIZWFkZXJHcm91cHMoKVswXSk/dm9pZCAwOm4uaGVhZGVycy5yZWR1Y2UoKGUsdCk9PmUrdC5nZXRTaXplKCksMCkpP3Q6MH0sZS5nZXRDZW50ZXJUb3RhbFNpemU9KCk9Pnt2YXIgdCxuO3JldHVybiBudWxsIT0odD1udWxsPT0obj1lLmdldENlbnRlckhlYWRlckdyb3VwcygpWzBdKT92b2lkIDA6bi5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKSk/dDowfSxlLmdldFJpZ2h0VG90YWxTaXplPSgpPT57dmFyIHQsbjtyZXR1cm4gbnVsbCE9KHQ9bnVsbD09KG49ZS5nZXRSaWdodEhlYWRlckdyb3VwcygpWzBdKT92b2lkIDA6bi5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKSk/dDowfX19O2xldCBHPW51bGw7ZnVuY3Rpb24gaXNUb3VjaFN0YXJ0RXZlbnQoZSl7cmV0dXJuInRvdWNoc3RhcnQiPT09ZS50eXBlfWZ1bmN0aW9uIF9nZXRWaXNpYmxlTGVhZkNvbHVtbnMoZSx0KXtyZXR1cm4gdD8iY2VudGVyIj09PXQ/ZS5nZXRDZW50ZXJWaXNpYmxlTGVhZkNvbHVtbnMoKToibGVmdCI9PT10P2UuZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1ucygpOmUuZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnMoKTplLmdldFZpc2libGVMZWFmQ29sdW1ucygpfWNvbnN0IEw9e2dldEluaXRpYWxTdGF0ZTplPT4oe3Jvd1NlbGVjdGlvbjp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1NlbGVjdGlvbkNoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJyb3dTZWxlY3Rpb24iLGUpLGVuYWJsZVJvd1NlbGVjdGlvbjohMCxlbmFibGVNdWx0aVJvd1NlbGVjdGlvbjohMCxlbmFibGVTdWJSb3dTZWxlY3Rpb246ITB9KSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dTZWxlY3Rpb249dD0+bnVsbD09ZS5vcHRpb25zLm9uUm93U2VsZWN0aW9uQ2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Sb3dTZWxlY3Rpb25DaGFuZ2UodCksZS5yZXNldFJvd1NlbGVjdGlvbj10PT57dmFyIG47cmV0dXJuIGUuc2V0Um93U2VsZWN0aW9uKHQ/e306bnVsbCE9KG49ZS5pbml0aWFsU3RhdGUucm93U2VsZWN0aW9uKT9uOnt9KX0sZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQ9dD0+e2Uuc2V0Um93U2VsZWN0aW9uKG49Pnt0PXZvaWQgMCE9PXQ/dDohZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpO2NvbnN0IG89ey4uLm59LGw9ZS5nZXRQcmVHcm91cGVkUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4gdD9sLmZvckVhY2goZT0+e2UuZ2V0Q2FuU2VsZWN0KCkmJihvW2UuaWRdPSEwKX0pOmwuZm9yRWFjaChlPT57ZGVsZXRlIG9bZS5pZF19KSxvfSl9LGUudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZD10PT5lLnNldFJvd1NlbGVjdGlvbihuPT57Y29uc3Qgbz12b2lkIDAhPT10P3Q6IWUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKCksbD17Li4ubn07cmV0dXJuIGUuZ2V0Um93TW9kZWwoKS5yb3dzLmZvckVhY2godD0+e211dGF0ZVJvd0lzU2VsZWN0ZWQobCx0LmlkLG8sITAsZSl9KSxsfSksZS5nZXRQcmVTZWxlY3RlZFJvd01vZGVsPSgpPT5lLmdldENvcmVSb3dNb2RlbCgpLGUuZ2V0U2VsZWN0ZWRSb3dNb2RlbD1tZW1vKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldENvcmVSb3dNb2RlbCgpXSwodCxuKT0+T2JqZWN0LmtleXModCkubGVuZ3RoP3NlbGVjdFJvd3NGbihlLG4pOntyb3dzOltdLGZsYXRSb3dzOltdLHJvd3NCeUlkOnt9fSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWw9bWVtbygoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCldLCh0LG4pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg/c2VsZWN0Um93c0ZuKGUsbik6e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIpKSxlLmdldEdyb3VwZWRTZWxlY3RlZFJvd01vZGVsPW1lbW8oKCk9PltlLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLGUuZ2V0U29ydGVkUm93TW9kZWwoKV0sKHQsbik9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD9zZWxlY3RSb3dzRm4oZSxuKTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIikpLGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQ9KCk9Pntjb25zdCB0PWUuZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLmZsYXRSb3dzLHtyb3dTZWxlY3Rpb246bn09ZS5nZXRTdGF0ZSgpO2xldCBvPUJvb2xlYW4odC5sZW5ndGgmJk9iamVjdC5rZXlzKG4pLmxlbmd0aCk7cmV0dXJuIG8mJnQuc29tZShlPT5lLmdldENhblNlbGVjdCgpJiYhbltlLmlkXSkmJihvPSExKSxvfSxlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IHQ9ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5maWx0ZXIoZT0+ZS5nZXRDYW5TZWxlY3QoKSkse3Jvd1NlbGVjdGlvbjpufT1lLmdldFN0YXRlKCk7bGV0IG89ISF0Lmxlbmd0aDtyZXR1cm4gbyYmdC5zb21lKGU9PiFuW2UuaWRdKSYmKG89ITEpLG99LGUuZ2V0SXNTb21lUm93c1NlbGVjdGVkPSgpPT57dmFyIHQ7Y29uc3Qgbj1PYmplY3Qua2V5cyhudWxsIT0odD1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uKT90Ont9KS5sZW5ndGg7cmV0dXJuIG4+MCYmbjxlLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cy5sZW5ndGh9LGUuZ2V0SXNTb21lUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IHQ9ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4hZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKSYmdC5maWx0ZXIoZT0+ZS5nZXRDYW5TZWxlY3QoKSkuc29tZShlPT5lLmdldElzU2VsZWN0ZWQoKXx8ZS5nZXRJc1NvbWVTZWxlY3RlZCgpKX0sZS5nZXRUb2dnbGVBbGxSb3dzU2VsZWN0ZWRIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQodC50YXJnZXQuY2hlY2tlZCl9LGUuZ2V0VG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZEhhbmRsZXI9KCk9PnQ9PntlLnRvZ2dsZUFsbFBhZ2VSb3dzU2VsZWN0ZWQodC50YXJnZXQuY2hlY2tlZCl9fSxjcmVhdGVSb3c6KGUsdCk9PntlLnRvZ2dsZVNlbGVjdGVkPShuLG8pPT57Y29uc3QgbD1lLmdldElzU2VsZWN0ZWQoKTt0LnNldFJvd1NlbGVjdGlvbihhPT57dmFyIHI7aWYobj12b2lkIDAhPT1uP246IWwsZS5nZXRDYW5TZWxlY3QoKSYmbD09PW4pcmV0dXJuIGE7Y29uc3QgaT17Li4uYX07cmV0dXJuIG11dGF0ZVJvd0lzU2VsZWN0ZWQoaSxlLmlkLG4sbnVsbD09KHI9bnVsbD09bz92b2lkIDA6by5zZWxlY3RDaGlsZHJlbil8fHIsdCksaX0pfSxlLmdldElzU2VsZWN0ZWQ9KCk9Pntjb25zdHtyb3dTZWxlY3Rpb246bn09dC5nZXRTdGF0ZSgpO3JldHVybiBpc1Jvd1NlbGVjdGVkKGUsbil9LGUuZ2V0SXNTb21lU2VsZWN0ZWQ9KCk9Pntjb25zdHtyb3dTZWxlY3Rpb246bn09dC5nZXRTdGF0ZSgpO3JldHVybiJzb21lIj09PWlzU3ViUm93U2VsZWN0ZWQoZSxuKX0sZS5nZXRJc0FsbFN1YlJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0e3Jvd1NlbGVjdGlvbjpufT10LmdldFN0YXRlKCk7cmV0dXJuImFsbCI9PT1pc1N1YlJvd1NlbGVjdGVkKGUsbil9LGUuZ2V0Q2FuU2VsZWN0PSgpPT57dmFyIG47cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQub3B0aW9ucy5lbmFibGVSb3dTZWxlY3Rpb24/dC5vcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbihlKTpudWxsPT0obj10Lm9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uKXx8bn0sZS5nZXRDYW5TZWxlY3RTdWJSb3dzPSgpPT57dmFyIG47cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQub3B0aW9ucy5lbmFibGVTdWJSb3dTZWxlY3Rpb24/dC5vcHRpb25zLmVuYWJsZVN1YlJvd1NlbGVjdGlvbihlKTpudWxsPT0obj10Lm9wdGlvbnMuZW5hYmxlU3ViUm93U2VsZWN0aW9uKXx8bn0sZS5nZXRDYW5NdWx0aVNlbGVjdD0oKT0+e3ZhciBuO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0Lm9wdGlvbnMuZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb24/dC5vcHRpb25zLmVuYWJsZU11bHRpUm93U2VsZWN0aW9uKGUpOm51bGw9PShuPXQub3B0aW9ucy5lbmFibGVNdWx0aVJvd1NlbGVjdGlvbil8fG59LGUuZ2V0VG9nZ2xlU2VsZWN0ZWRIYW5kbGVyPSgpPT57Y29uc3QgdD1lLmdldENhblNlbGVjdCgpO3JldHVybiBuPT57dmFyIG87dCYmZS50b2dnbGVTZWxlY3RlZChudWxsPT0obz1uLnRhcmdldCk/dm9pZCAwOm8uY2hlY2tlZCl9fX19LG11dGF0ZVJvd0lzU2VsZWN0ZWQ9KGUsdCxuLG8sbCk9Pnt2YXIgYTtjb25zdCByPWwuZ2V0Um93KHQsITApO24/KHIuZ2V0Q2FuTXVsdGlTZWxlY3QoKXx8T2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT5kZWxldGUgZVt0XSksci5nZXRDYW5TZWxlY3QoKSYmKGVbdF09ITApKTpkZWxldGUgZVt0XSxvJiZudWxsIT0oYT1yLnN1YlJvd3MpJiZhLmxlbmd0aCYmci5nZXRDYW5TZWxlY3RTdWJSb3dzKCkmJnIuc3ViUm93cy5mb3JFYWNoKHQ9Pm11dGF0ZVJvd0lzU2VsZWN0ZWQoZSx0LmlkLG4sbyxsKSl9O2Z1bmN0aW9uIHNlbGVjdFJvd3NGbihlLHQpe2NvbnN0IG49ZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixvPVtdLGw9e30scmVjdXJzZVJvd3M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoZT0+e3ZhciB0O2NvbnN0IGE9aXNSb3dTZWxlY3RlZChlLG4pO2lmKGEmJihvLnB1c2goZSksbFtlLmlkXT1lKSxudWxsIT0odD1lLnN1YlJvd3MpJiZ0Lmxlbmd0aCYmKGU9ey4uLmUsc3ViUm93czpyZWN1cnNlUm93cyhlLnN1YlJvd3MpfSksYSlyZXR1cm4gZX0pLmZpbHRlcihCb29sZWFuKX07cmV0dXJue3Jvd3M6cmVjdXJzZVJvd3ModC5yb3dzKSxmbGF0Um93czpvLHJvd3NCeUlkOmx9fWZ1bmN0aW9uIGlzUm93U2VsZWN0ZWQoZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9KG49dFtlLmlkXSkmJm59ZnVuY3Rpb24gaXNTdWJSb3dTZWxlY3RlZChlLHQsbil7dmFyIG87aWYobnVsbD09KG89ZS5zdWJSb3dzKXx8IW8ubGVuZ3RoKXJldHVybiExO2xldCBsPSEwLGE9ITE7cmV0dXJuIGUuc3ViUm93cy5mb3JFYWNoKGU9PntpZigoIWF8fGwpJiYoZS5nZXRDYW5TZWxlY3QoKSYmKGlzUm93U2VsZWN0ZWQoZSx0KT9hPSEwOmw9ITEpLGUuc3ViUm93cyYmZS5zdWJSb3dzLmxlbmd0aCkpe2NvbnN0IG49aXNTdWJSb3dTZWxlY3RlZChlLHQpOyJhbGwiPT09bj9hPSEwOiJzb21lIj09PW4/KGE9ITAsbD0hMSk6bD0hMX19KSxsPyJhbGwiOiEhYSYmInNvbWUifWNvbnN0IEg9LyhbMC05XSspL2dtO2Z1bmN0aW9uIGNvbXBhcmVCYXNpYyhlLHQpe3JldHVybiBlPT09dD8wOmU+dD8xOi0xfWZ1bmN0aW9uIHRvU3RyaW5nKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9pc05hTihlKXx8ZT09PTEvMHx8ZT09PS0xLzA/IiI6U3RyaW5nKGUpOiJzdHJpbmciPT10eXBlb2YgZT9lOiIifWZ1bmN0aW9uIGNvbXBhcmVBbHBoYW51bWVyaWMoZSx0KXtjb25zdCBuPWUuc3BsaXQoSCkuZmlsdGVyKEJvb2xlYW4pLG89dC5zcGxpdChIKS5maWx0ZXIoQm9vbGVhbik7Zm9yKDtuLmxlbmd0aCYmby5sZW5ndGg7KXtjb25zdCBlPW4uc2hpZnQoKSx0PW8uc2hpZnQoKSxsPXBhcnNlSW50KGUsMTApLGE9cGFyc2VJbnQodCwxMCkscj1bbCxhXS5zb3J0KCk7aWYoaXNOYU4oclswXSkpe2lmKGU+dClyZXR1cm4gMTtpZih0PmUpcmV0dXJuLTF9ZWxzZXtpZihpc05hTihyWzFdKSlyZXR1cm4gaXNOYU4obCk/LTE6MTtpZihsPmEpcmV0dXJuIDE7aWYoYT5sKXJldHVybi0xfX1yZXR1cm4gbi5sZW5ndGgtby5sZW5ndGh9Y29uc3QgcT17YWxwaGFudW1lcmljOihlLHQsbik9PmNvbXBhcmVBbHBoYW51bWVyaWModG9TdHJpbmcoZS5nZXRWYWx1ZShuKSkudG9Mb3dlckNhc2UoKSx0b1N0cmluZyh0LmdldFZhbHVlKG4pKS50b0xvd2VyQ2FzZSgpKSxhbHBoYW51bWVyaWNDYXNlU2Vuc2l0aXZlOihlLHQsbik9PmNvbXBhcmVBbHBoYW51bWVyaWModG9TdHJpbmcoZS5nZXRWYWx1ZShuKSksdG9TdHJpbmcodC5nZXRWYWx1ZShuKSkpLHRleHQ6KGUsdCxuKT0+Y29tcGFyZUJhc2ljKHRvU3RyaW5nKGUuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCksdG9TdHJpbmcodC5nZXRWYWx1ZShuKSkudG9Mb3dlckNhc2UoKSksdGV4dENhc2VTZW5zaXRpdmU6KGUsdCxuKT0+Y29tcGFyZUJhc2ljKHRvU3RyaW5nKGUuZ2V0VmFsdWUobikpLHRvU3RyaW5nKHQuZ2V0VmFsdWUobikpKSxkYXRldGltZTooZSx0LG4pPT57Y29uc3Qgbz1lLmdldFZhbHVlKG4pLGw9dC5nZXRWYWx1ZShuKTtyZXR1cm4gbz5sPzE6bzxsPy0xOjB9LGJhc2ljOihlLHQsbik9PmNvbXBhcmVCYXNpYyhlLmdldFZhbHVlKG4pLHQuZ2V0VmFsdWUobikpfSxqPVtJLHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtjb2x1bW5WaXNpYmlsaXR5Ont9LC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZTptYWtlU3RhdGVVcGRhdGVyKCJjb2x1bW5WaXNpYmlsaXR5IixlKX0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UudG9nZ2xlVmlzaWJpbGl0eT1uPT57ZS5nZXRDYW5IaWRlKCkmJnQuc2V0Q29sdW1uVmlzaWJpbGl0eSh0PT4oey4uLnQsW2UuaWRdOm51bGwhPW4/bjohZS5nZXRJc1Zpc2libGUoKX0pKX0sZS5nZXRJc1Zpc2libGU9KCk9Pnt2YXIgbixvO2NvbnN0IGw9ZS5jb2x1bW5zO3JldHVybiBudWxsPT0obj1sLmxlbmd0aD9sLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGUoKSk6bnVsbD09KG89dC5nZXRTdGF0ZSgpLmNvbHVtblZpc2liaWxpdHkpP3ZvaWQgMDpvW2UuaWRdKXx8bn0sZS5nZXRDYW5IaWRlPSgpPT57dmFyIG4sbztyZXR1cm4obnVsbD09KG49ZS5jb2x1bW5EZWYuZW5hYmxlSGlkaW5nKXx8bikmJihudWxsPT0obz10Lm9wdGlvbnMuZW5hYmxlSGlkaW5nKXx8byl9LGUuZ2V0VG9nZ2xlVmlzaWJpbGl0eUhhbmRsZXI9KCk9PnQ9PntudWxsPT1lLnRvZ2dsZVZpc2liaWxpdHl8fGUudG9nZ2xlVmlzaWJpbGl0eSh0LnRhcmdldC5jaGVja2VkKX19LGNyZWF0ZVJvdzooZSx0KT0+e2UuX2dldEFsbFZpc2libGVDZWxscz1tZW1vKCgpPT5bZS5nZXRBbGxDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5WaXNpYmlsaXR5XSxlPT5lLmZpbHRlcihlPT5lLmNvbHVtbi5nZXRJc1Zpc2libGUoKSksZ2V0TWVtb09wdGlvbnModC5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRWaXNpYmxlQ2VsbHM9bWVtbygoKT0+W2UuZ2V0TGVmdFZpc2libGVDZWxscygpLGUuZ2V0Q2VudGVyVmlzaWJsZUNlbGxzKCksZS5nZXRSaWdodFZpc2libGVDZWxscygpXSwoZSx0LG4pPT5bLi4uZSwuLi50LC4uLm5dLGdldE1lbW9PcHRpb25zKHQub3B0aW9ucywiZGVidWdSb3dzIikpfSxjcmVhdGVUYWJsZTplPT57Y29uc3QgbWFrZVZpc2libGVDb2x1bW5zTWV0aG9kPSh0LG4pPT5tZW1vKCgpPT5bbigpLG4oKS5maWx0ZXIoZT0+ZS5nZXRJc1Zpc2libGUoKSkubWFwKGU9PmUuaWQpLmpvaW4oIl8iKV0sZT0+ZS5maWx0ZXIoZT0+bnVsbD09ZS5nZXRJc1Zpc2libGU/dm9pZCAwOmUuZ2V0SXNWaXNpYmxlKCkpLGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpO2UuZ2V0VmlzaWJsZUZsYXRDb2x1bW5zPW1ha2VWaXNpYmxlQ29sdW1uc01ldGhvZCgwLCgpPT5lLmdldEFsbEZsYXRDb2x1bW5zKCkpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zPW1ha2VWaXNpYmxlQ29sdW1uc01ldGhvZCgwLCgpPT5lLmdldEFsbExlYWZDb2x1bW5zKCkpLGUuZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1ucz1tYWtlVmlzaWJsZUNvbHVtbnNNZXRob2QoMCwoKT0+ZS5nZXRMZWZ0TGVhZkNvbHVtbnMoKSksZS5nZXRSaWdodFZpc2libGVMZWFmQ29sdW1ucz1tYWtlVmlzaWJsZUNvbHVtbnNNZXRob2QoMCwoKT0+ZS5nZXRSaWdodExlYWZDb2x1bW5zKCkpLGUuZ2V0Q2VudGVyVmlzaWJsZUxlYWZDb2x1bW5zPW1ha2VWaXNpYmxlQ29sdW1uc01ldGhvZCgwLCgpPT5lLmdldENlbnRlckxlYWZDb2x1bW5zKCkpLGUuc2V0Q29sdW1uVmlzaWJpbGl0eT10PT5udWxsPT1lLm9wdGlvbnMub25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlKHQpLGUucmVzZXRDb2x1bW5WaXNpYmlsaXR5PXQ9Pnt2YXIgbjtlLnNldENvbHVtblZpc2liaWxpdHkodD97fTpudWxsIT0obj1lLmluaXRpYWxTdGF0ZS5jb2x1bW5WaXNpYmlsaXR5KT9uOnt9KX0sZS50b2dnbGVBbGxDb2x1bW5zVmlzaWJsZT10PT57dmFyIG47dD1udWxsIT0obj10KT9uOiFlLmdldElzQWxsQ29sdW1uc1Zpc2libGUoKSxlLnNldENvbHVtblZpc2liaWxpdHkoZS5nZXRBbGxMZWFmQ29sdW1ucygpLnJlZHVjZSgoZSxuKT0+KHsuLi5lLFtuLmlkXTp0fHwhKG51bGwhPW4uZ2V0Q2FuSGlkZSYmbi5nZXRDYW5IaWRlKCkpfSkse30pKX0sZS5nZXRJc0FsbENvbHVtbnNWaXNpYmxlPSgpPT4hZS5nZXRBbGxMZWFmQ29sdW1ucygpLnNvbWUoZT0+IShudWxsIT1lLmdldElzVmlzaWJsZSYmZS5nZXRJc1Zpc2libGUoKSkpLGUuZ2V0SXNTb21lQ29sdW1uc1Zpc2libGU9KCk9PmUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5zb21lKGU9Pm51bGw9PWUuZ2V0SXNWaXNpYmxlP3ZvaWQgMDplLmdldElzVmlzaWJsZSgpKSxlLmdldFRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5SGFuZGxlcj0oKT0+dD0+e3ZhciBuO2UudG9nZ2xlQWxsQ29sdW1uc1Zpc2libGUobnVsbD09KG49dC50YXJnZXQpP3ZvaWQgMDpuLmNoZWNrZWQpfX19LEIsRSxPLGsse2NyZWF0ZVRhYmxlOmU9PntlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9ZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbChlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9KCk9PmUub3B0aW9ucy5tYW51YWxGaWx0ZXJpbmd8fCFlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsKCksZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz1lLm9wdGlvbnMuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcyYmZS5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoZSwiX19nbG9iYWxfXyIpLGUuZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz0oKT0+ZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz9lLl9nZXRHbG9iYWxGYWNldGVkVW5pcXVlVmFsdWVzKCk6bmV3IE1hcCxlLl9nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPWUub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzJiZlLm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyhlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcygpfX19LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtnbG9iYWxGaWx0ZXI6dm9pZCAwLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR2xvYmFsRmlsdGVyQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoImdsb2JhbEZpbHRlciIsZSksZ2xvYmFsRmlsdGVyRm46ImF1dG8iLGdldENvbHVtbkNhbkdsb2JhbEZpbHRlcjp0PT57dmFyIG47Y29uc3Qgbz1udWxsPT0obj1lLmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdKXx8bnVsbD09KG49bi5fZ2V0QWxsQ2VsbHNCeUNvbHVtbklkKClbdC5pZF0pP3ZvaWQgMDpuLmdldFZhbHVlKCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBvfHwibnVtYmVyIj09dHlwZW9mIG99fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRDYW5HbG9iYWxGaWx0ZXI9KCk9Pnt2YXIgbixvLGwsYTtyZXR1cm4obnVsbD09KG49ZS5jb2x1bW5EZWYuZW5hYmxlR2xvYmFsRmlsdGVyKXx8bikmJihudWxsPT0obz10Lm9wdGlvbnMuZW5hYmxlR2xvYmFsRmlsdGVyKXx8bykmJihudWxsPT0obD10Lm9wdGlvbnMuZW5hYmxlRmlsdGVycyl8fGwpJiYobnVsbD09KGE9bnVsbD09dC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcj92b2lkIDA6dC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcihlKSl8fGEpJiYhIWUuYWNjZXNzb3JGbn19LGNyZWF0ZVRhYmxlOmU9PntlLmdldEdsb2JhbEF1dG9GaWx0ZXJGbj0oKT0+Xy5pbmNsdWRlc1N0cmluZyxlLmdldEdsb2JhbEZpbHRlckZuPSgpPT57dmFyIHQsbjtjb25zdHtnbG9iYWxGaWx0ZXJGbjpvfT1lLm9wdGlvbnM7cmV0dXJuIGlzRnVuY3Rpb24obyk/bzoiYXV0byI9PT1vP2UuZ2V0R2xvYmFsQXV0b0ZpbHRlckZuKCk6bnVsbCE9KHQ9bnVsbD09KG49ZS5vcHRpb25zLmZpbHRlckZucyk/dm9pZCAwOm5bb10pP3Q6X1tvXX0sZS5zZXRHbG9iYWxGaWx0ZXI9dD0+e251bGw9PWUub3B0aW9ucy5vbkdsb2JhbEZpbHRlckNoYW5nZXx8ZS5vcHRpb25zLm9uR2xvYmFsRmlsdGVyQ2hhbmdlKHQpfSxlLnJlc2V0R2xvYmFsRmlsdGVyPXQ9PntlLnNldEdsb2JhbEZpbHRlcih0P3ZvaWQgMDplLmluaXRpYWxTdGF0ZS5nbG9iYWxGaWx0ZXIpfX19LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtzb3J0aW5nOltdLC4uLmV9KSxnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe3NvcnRpbmdGbjoiYXV0byIsc29ydFVuZGVmaW5lZDoxfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblNvcnRpbmdDaGFuZ2U6bWFrZVN0YXRlVXBkYXRlcigic29ydGluZyIsZSksaXNNdWx0aVNvcnRFdmVudDplPT5lLnNoaWZ0S2V5fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRBdXRvU29ydGluZ0ZuPSgpPT57Y29uc3Qgbj10LmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cy5zbGljZSgxMCk7bGV0IG89ITE7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3Qgbj1udWxsPT10P3ZvaWQgMDp0LmdldFZhbHVlKGUuaWQpO2lmKCJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSlyZXR1cm4gcS5kYXRldGltZTtpZigic3RyaW5nIj09dHlwZW9mIG4mJihvPSEwLG4uc3BsaXQoSCkubGVuZ3RoPjEpKXJldHVybiBxLmFscGhhbnVtZXJpY31yZXR1cm4gbz9xLnRleHQ6cS5iYXNpY30sZS5nZXRBdXRvU29ydERpcj0oKT0+e2NvbnN0IG49dC5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3NbMF07cmV0dXJuInN0cmluZyI9PXR5cGVvZihudWxsPT1uP3ZvaWQgMDpuLmdldFZhbHVlKGUuaWQpKT8iYXNjIjoiZGVzYyJ9LGUuZ2V0U29ydGluZ0ZuPSgpPT57dmFyIG4sbztpZighZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGlzRnVuY3Rpb24oZS5jb2x1bW5EZWYuc29ydGluZ0ZuKT9lLmNvbHVtbkRlZi5zb3J0aW5nRm46ImF1dG8iPT09ZS5jb2x1bW5EZWYuc29ydGluZ0ZuP2UuZ2V0QXV0b1NvcnRpbmdGbigpOm51bGwhPShuPW51bGw9PShvPXQub3B0aW9ucy5zb3J0aW5nRm5zKT92b2lkIDA6b1tlLmNvbHVtbkRlZi5zb3J0aW5nRm5dKT9uOnFbZS5jb2x1bW5EZWYuc29ydGluZ0ZuXX0sZS50b2dnbGVTb3J0aW5nPShuLG8pPT57Y29uc3QgbD1lLmdldE5leHRTb3J0aW5nT3JkZXIoKSxhPW51bGwhPW47dC5zZXRTb3J0aW5nKHI9Pntjb25zdCBpPW51bGw9PXI/dm9pZCAwOnIuZmluZCh0PT50LmlkPT09ZS5pZCkscz1udWxsPT1yP3ZvaWQgMDpyLmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCk7bGV0IHUsZD1bXSxnPWE/bjoiZGVzYyI9PT1sO3ZhciBjOyh1PW51bGwhPXImJnIubGVuZ3RoJiZlLmdldENhbk11bHRpU29ydCgpJiZvP2k/InRvZ2dsZSI6ImFkZCI6bnVsbCE9ciYmci5sZW5ndGgmJnMhPT1yLmxlbmd0aC0xPyJyZXBsYWNlIjppPyJ0b2dnbGUiOiJyZXBsYWNlIiwidG9nZ2xlIj09PXUmJihhfHxsfHwodT0icmVtb3ZlIikpLCJhZGQiPT09dSk/KGQ9Wy4uLnIse2lkOmUuaWQsZGVzYzpnfV0sZC5zcGxpY2UoMCxkLmxlbmd0aC0obnVsbCE9KGM9dC5vcHRpb25zLm1heE11bHRpU29ydENvbENvdW50KT9jOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSkpOmQ9InRvZ2dsZSI9PT11P3IubWFwKHQ9PnQuaWQ9PT1lLmlkP3suLi50LGRlc2M6Z306dCk6InJlbW92ZSI9PT11P3IuZmlsdGVyKHQ9PnQuaWQhPT1lLmlkKTpbe2lkOmUuaWQsZGVzYzpnfV07cmV0dXJuIGR9KX0sZS5nZXRGaXJzdFNvcnREaXI9KCk9Pnt2YXIgbixvO3JldHVybihudWxsIT0obj1udWxsIT0obz1lLmNvbHVtbkRlZi5zb3J0RGVzY0ZpcnN0KT9vOnQub3B0aW9ucy5zb3J0RGVzY0ZpcnN0KT9uOiJkZXNjIj09PWUuZ2V0QXV0b1NvcnREaXIoKSk/ImRlc2MiOiJhc2MifSxlLmdldE5leHRTb3J0aW5nT3JkZXI9bj0+e3ZhciBvLGw7Y29uc3QgYT1lLmdldEZpcnN0U29ydERpcigpLHI9ZS5nZXRJc1NvcnRlZCgpO3JldHVybiByPyEhKHI9PT1hfHxudWxsIT0obz10Lm9wdGlvbnMuZW5hYmxlU29ydGluZ1JlbW92YWwpJiYhb3x8biYmbnVsbCE9KGw9dC5vcHRpb25zLmVuYWJsZU11bHRpUmVtb3ZlKSYmIWwpJiYoImRlc2MiPT09cj8iYXNjIjoiZGVzYyIpOmF9LGUuZ2V0Q2FuU29ydD0oKT0+e3ZhciBuLG87cmV0dXJuKG51bGw9PShuPWUuY29sdW1uRGVmLmVuYWJsZVNvcnRpbmcpfHxuKSYmKG51bGw9PShvPXQub3B0aW9ucy5lbmFibGVTb3J0aW5nKXx8bykmJiEhZS5hY2Nlc3NvckZufSxlLmdldENhbk11bHRpU29ydD0oKT0+e3ZhciBuLG87cmV0dXJuIG51bGwhPShuPW51bGwhPShvPWUuY29sdW1uRGVmLmVuYWJsZU11bHRpU29ydCk/bzp0Lm9wdGlvbnMuZW5hYmxlTXVsdGlTb3J0KT9uOiEhZS5hY2Nlc3NvckZufSxlLmdldElzU29ydGVkPSgpPT57dmFyIG47Y29uc3Qgbz1udWxsPT0obj10LmdldFN0YXRlKCkuc29ydGluZyk/dm9pZCAwOm4uZmluZCh0PT50LmlkPT09ZS5pZCk7cmV0dXJuISFvJiYoby5kZXNjPyJkZXNjIjoiYXNjIil9LGUuZ2V0U29ydEluZGV4PSgpPT57dmFyIG4sbztyZXR1cm4gbnVsbCE9KG49bnVsbD09KG89dC5nZXRTdGF0ZSgpLnNvcnRpbmcpP3ZvaWQgMDpvLmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCkpP246LTF9LGUuY2xlYXJTb3J0aW5nPSgpPT57dC5zZXRTb3J0aW5nKHQ9Pm51bGwhPXQmJnQubGVuZ3RoP3QuZmlsdGVyKHQ9PnQuaWQhPT1lLmlkKTpbXSl9LGUuZ2V0VG9nZ2xlU29ydGluZ0hhbmRsZXI9KCk9Pntjb25zdCBuPWUuZ2V0Q2FuU29ydCgpO3JldHVybiBvPT57biYmKG51bGw9PW8ucGVyc2lzdHx8by5wZXJzaXN0KCksbnVsbD09ZS50b2dnbGVTb3J0aW5nfHxlLnRvZ2dsZVNvcnRpbmcodm9pZCAwLCEhZS5nZXRDYW5NdWx0aVNvcnQoKSYmKG51bGw9PXQub3B0aW9ucy5pc011bHRpU29ydEV2ZW50P3ZvaWQgMDp0Lm9wdGlvbnMuaXNNdWx0aVNvcnRFdmVudChvKSkpKX19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRTb3J0aW5nPXQ9Pm51bGw9PWUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2UodCksZS5yZXNldFNvcnRpbmc9dD0+e3ZhciBuLG87ZS5zZXRTb3J0aW5nKHQ/W106bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLnNvcnRpbmcpP246W10pfSxlLmdldFByZVNvcnRlZFJvd01vZGVsPSgpPT5lLmdldEdyb3VwZWRSb3dNb2RlbCgpLGUuZ2V0U29ydGVkUm93TW9kZWw9KCk9PighZS5fZ2V0U29ydGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbCYmKGUuX2dldFNvcnRlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFNvcnRpbmd8fCFlLl9nZXRTb3J0ZWRSb3dNb2RlbD9lLmdldFByZVNvcnRlZFJvd01vZGVsKCk6ZS5fZ2V0U29ydGVkUm93TW9kZWwoKSl9fSx6LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtleHBhbmRlZDp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkV4cGFuZGVkQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoImV4cGFuZGVkIixlKSxwYWdpbmF0ZUV4cGFuZGVkUm93czohMH0pLGNyZWF0ZVRhYmxlOmU9PntsZXQgdD0hMSxuPSExO2UuX2F1dG9SZXNldEV4cGFuZGVkPSgpPT57dmFyIG8sbDtpZih0KXtpZihudWxsIT0obz1udWxsIT0obD1lLm9wdGlvbnMuYXV0b1Jlc2V0QWxsKT9sOmUub3B0aW9ucy5hdXRvUmVzZXRFeHBhbmRlZCk/bzohZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZyl7aWYobilyZXR1cm47bj0hMCxlLl9xdWV1ZSgoKT0+e2UucmVzZXRFeHBhbmRlZCgpLG49ITF9KX19ZWxzZSBlLl9xdWV1ZSgoKT0+e3Q9ITB9KX0sZS5zZXRFeHBhbmRlZD10PT5udWxsPT1lLm9wdGlvbnMub25FeHBhbmRlZENoYW5nZT92b2lkIDA6ZS5vcHRpb25zLm9uRXhwYW5kZWRDaGFuZ2UodCksZS50b2dnbGVBbGxSb3dzRXhwYW5kZWQ9dD0+eyhudWxsIT10P3Q6IWUuZ2V0SXNBbGxSb3dzRXhwYW5kZWQoKSk/ZS5zZXRFeHBhbmRlZCghMCk6ZS5zZXRFeHBhbmRlZCh7fSl9LGUucmVzZXRFeHBhbmRlZD10PT57dmFyIG4sbztlLnNldEV4cGFuZGVkKHQ/e306bnVsbCE9KG49bnVsbD09KG89ZS5pbml0aWFsU3RhdGUpP3ZvaWQgMDpvLmV4cGFuZGVkKT9uOnt9KX0sZS5nZXRDYW5Tb21lUm93c0V4cGFuZD0oKT0+ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PmUuZ2V0Q2FuRXhwYW5kKCkpLGUuZ2V0VG9nZ2xlQWxsUm93c0V4cGFuZGVkSGFuZGxlcj0oKT0+dD0+e251bGw9PXQucGVyc2lzdHx8dC5wZXJzaXN0KCksZS50b2dnbGVBbGxSb3dzRXhwYW5kZWQoKX0sZS5nZXRJc1NvbWVSb3dzRXhwYW5kZWQ9KCk9Pntjb25zdCB0PWUuZ2V0U3RhdGUoKS5leHBhbmRlZDtyZXR1cm4hMD09PXR8fE9iamVjdC52YWx1ZXModCkuc29tZShCb29sZWFuKX0sZS5nZXRJc0FsbFJvd3NFeHBhbmRlZD0oKT0+e2NvbnN0IHQ9ZS5nZXRTdGF0ZSgpLmV4cGFuZGVkO3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/ITA9PT10OiEhT2JqZWN0LmtleXModCkubGVuZ3RoJiYhZS5nZXRSb3dNb2RlbCgpLmZsYXRSb3dzLnNvbWUoZT0+IWUuZ2V0SXNFeHBhbmRlZCgpKX0sZS5nZXRFeHBhbmRlZERlcHRoPSgpPT57bGV0IHQ9MDtyZXR1cm4oITA9PT1lLmdldFN0YXRlKCkuZXhwYW5kZWQ/T2JqZWN0LmtleXMoZS5nZXRSb3dNb2RlbCgpLnJvd3NCeUlkKTpPYmplY3Qua2V5cyhlLmdldFN0YXRlKCkuZXhwYW5kZWQpKS5mb3JFYWNoKGU9Pntjb25zdCBuPWUuc3BsaXQoIi4iKTt0PU1hdGgubWF4KHQsbi5sZW5ndGgpfSksdH0sZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsPSgpPT5lLmdldFNvcnRlZFJvd01vZGVsKCksZS5nZXRFeHBhbmRlZFJvd01vZGVsPSgpPT4oIWUuX2dldEV4cGFuZGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRFeHBhbmRlZFJvd01vZGVsJiYoZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RXhwYW5kZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZ3x8IWUuX2dldEV4cGFuZGVkUm93TW9kZWw/ZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsKCk6ZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS50b2dnbGVFeHBhbmRlZD1uPT57dC5zZXRFeHBhbmRlZChvPT57dmFyIGw7Y29uc3QgYT0hMD09PW98fCEobnVsbD09b3x8IW9bZS5pZF0pO2xldCByPXt9O2lmKCEwPT09bz9PYmplY3Qua2V5cyh0LmdldFJvd01vZGVsKCkucm93c0J5SWQpLmZvckVhY2goZT0+e3JbZV09ITB9KTpyPW8sbj1udWxsIT0obD1uKT9sOiFhLCFhJiZuKXJldHVybnsuLi5yLFtlLmlkXTohMH07aWYoYSYmIW4pe2NvbnN0e1tlLmlkXTp0LC4uLm59PXI7cmV0dXJuIG59cmV0dXJuIG99KX0sZS5nZXRJc0V4cGFuZGVkPSgpPT57dmFyIG47Y29uc3Qgbz10LmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuISEobnVsbCE9KG49bnVsbD09dC5vcHRpb25zLmdldElzUm93RXhwYW5kZWQ/dm9pZCAwOnQub3B0aW9ucy5nZXRJc1Jvd0V4cGFuZGVkKGUpKT9uOiEwPT09b3x8KG51bGw9PW8/dm9pZCAwOm9bZS5pZF0pKX0sZS5nZXRDYW5FeHBhbmQ9KCk9Pnt2YXIgbixvLGw7cmV0dXJuIG51bGwhPShuPW51bGw9PXQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQ/dm9pZCAwOnQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQoZSkpP246KG51bGw9PShvPXQub3B0aW9ucy5lbmFibGVFeHBhbmRpbmcpfHxvKSYmIShudWxsPT0obD1lLnN1YlJvd3MpfHwhbC5sZW5ndGgpfSxlLmdldElzQWxsUGFyZW50c0V4cGFuZGVkPSgpPT57bGV0IG49ITAsbz1lO2Zvcig7biYmby5wYXJlbnRJZDspbz10LmdldFJvdyhvLnBhcmVudElkLCEwKSxuPW8uZ2V0SXNFeHBhbmRlZCgpO3JldHVybiBufSxlLmdldFRvZ2dsZUV4cGFuZGVkSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5FeHBhbmQoKTtyZXR1cm4oKT0+e3QmJmUudG9nZ2xlRXhwYW5kZWQoKX19fX0se2dldEluaXRpYWxTdGF0ZTplPT4oey4uLmUscGFnaW5hdGlvbjp7cGFnZUluZGV4OjAscGFnZVNpemU6MTAsLi4ubnVsbD09ZT92b2lkIDA6ZS5wYWdpbmF0aW9ufX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25QYWdpbmF0aW9uQ2hhbmdlOm1ha2VTdGF0ZVVwZGF0ZXIoInBhZ2luYXRpb24iLGUpfSksY3JlYXRlVGFibGU6ZT0+e2xldCB0PSExLG49ITE7ZS5fYXV0b1Jlc2V0UGFnZUluZGV4PSgpPT57dmFyIG8sbDtpZih0KXtpZihudWxsIT0obz1udWxsIT0obD1lLm9wdGlvbnMuYXV0b1Jlc2V0QWxsKT9sOmUub3B0aW9ucy5hdXRvUmVzZXRQYWdlSW5kZXgpP286IWUub3B0aW9ucy5tYW51YWxQYWdpbmF0aW9uKXtpZihuKXJldHVybjtuPSEwLGUuX3F1ZXVlKCgpPT57ZS5yZXNldFBhZ2VJbmRleCgpLG49ITF9KX19ZWxzZSBlLl9xdWV1ZSgoKT0+e3Q9ITB9KX0sZS5zZXRQYWdpbmF0aW9uPXQ9Pm51bGw9PWUub3B0aW9ucy5vblBhZ2luYXRpb25DaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vblBhZ2luYXRpb25DaGFuZ2UoZT0+ZnVuY3Rpb25hbFVwZGF0ZSh0LGUpKSxlLnJlc2V0UGFnaW5hdGlvbj10PT57dmFyIG47ZS5zZXRQYWdpbmF0aW9uKHQ/e3BhZ2VJbmRleDowLHBhZ2VTaXplOjEwfTpudWxsIT0obj1lLmluaXRpYWxTdGF0ZS5wYWdpbmF0aW9uKT9uOntwYWdlSW5kZXg6MCxwYWdlU2l6ZToxMH0pfSxlLnNldFBhZ2VJbmRleD10PT57ZS5zZXRQYWdpbmF0aW9uKG49PntsZXQgbz1mdW5jdGlvbmFsVXBkYXRlKHQsbi5wYWdlSW5kZXgpO2NvbnN0IGw9dm9pZCAwPT09ZS5vcHRpb25zLnBhZ2VDb3VudHx8LTE9PT1lLm9wdGlvbnMucGFnZUNvdW50P051bWJlci5NQVhfU0FGRV9JTlRFR0VSOmUub3B0aW9ucy5wYWdlQ291bnQtMTtyZXR1cm4gbz1NYXRoLm1heCgwLE1hdGgubWluKG8sbCkpLHsuLi5uLHBhZ2VJbmRleDpvfX0pfSxlLnJlc2V0UGFnZUluZGV4PXQ9Pnt2YXIgbixvO2Uuc2V0UGFnZUluZGV4KHQ/MDpudWxsIT0obj1udWxsPT0obz1lLmluaXRpYWxTdGF0ZSl8fG51bGw9PShvPW8ucGFnaW5hdGlvbik/dm9pZCAwOm8ucGFnZUluZGV4KT9uOjApfSxlLnJlc2V0UGFnZVNpemU9dD0+e3ZhciBuLG87ZS5zZXRQYWdlU2l6ZSh0PzEwOm51bGwhPShuPW51bGw9PShvPWUuaW5pdGlhbFN0YXRlKXx8bnVsbD09KG89by5wYWdpbmF0aW9uKT92b2lkIDA6by5wYWdlU2l6ZSk/bjoxMCl9LGUuc2V0UGFnZVNpemU9dD0+e2Uuc2V0UGFnaW5hdGlvbihlPT57Y29uc3Qgbj1NYXRoLm1heCgxLGZ1bmN0aW9uYWxVcGRhdGUodCxlLnBhZ2VTaXplKSksbz1lLnBhZ2VTaXplKmUucGFnZUluZGV4LGw9TWF0aC5mbG9vcihvL24pO3JldHVybnsuLi5lLHBhZ2VJbmRleDpsLHBhZ2VTaXplOm59fSl9LGUuc2V0UGFnZUNvdW50PXQ9PmUuc2V0UGFnaW5hdGlvbihuPT57dmFyIG87bGV0IGw9ZnVuY3Rpb25hbFVwZGF0ZSh0LG51bGwhPShvPWUub3B0aW9ucy5wYWdlQ291bnQpP286LTEpO3JldHVybiJudW1iZXIiPT10eXBlb2YgbCYmKGw9TWF0aC5tYXgoLTEsbCkpLHsuLi5uLHBhZ2VDb3VudDpsfX0pLGUuZ2V0UGFnZU9wdGlvbnM9bWVtbygoKT0+W2UuZ2V0UGFnZUNvdW50KCldLGU9PntsZXQgdD1bXTtyZXR1cm4gZSYmZT4wJiYodD1bLi4ubmV3IEFycmF5KGUpXS5maWxsKG51bGwpLm1hcCgoZSx0KT0+dCkpLHR9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIpKSxlLmdldENhblByZXZpb3VzUGFnZT0oKT0+ZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZUluZGV4PjAsZS5nZXRDYW5OZXh0UGFnZT0oKT0+e2NvbnN0e3BhZ2VJbmRleDp0fT1lLmdldFN0YXRlKCkucGFnaW5hdGlvbixuPWUuZ2V0UGFnZUNvdW50KCk7cmV0dXJuLTE9PT1ufHwwIT09biYmdDxuLTF9LGUucHJldmlvdXNQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlPT5lLTEpLGUubmV4dFBhZ2U9KCk9PmUuc2V0UGFnZUluZGV4KGU9PmUrMSksZS5maXJzdFBhZ2U9KCk9PmUuc2V0UGFnZUluZGV4KDApLGUubGFzdFBhZ2U9KCk9PmUuc2V0UGFnZUluZGV4KGUuZ2V0UGFnZUNvdW50KCktMSksZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWw9KCk9PmUuZ2V0RXhwYW5kZWRSb3dNb2RlbCgpLGUuZ2V0UGFnaW5hdGlvblJvd01vZGVsPSgpPT4oIWUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbCYmZS5vcHRpb25zLmdldFBhZ2luYXRpb25Sb3dNb2RlbCYmKGUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbD1lLm9wdGlvbnMuZ2V0UGFnaW5hdGlvblJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsUGFnaW5hdGlvbnx8IWUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbD9lLmdldFByZVBhZ2luYXRpb25Sb3dNb2RlbCgpOmUuX2dldFBhZ2luYXRpb25Sb3dNb2RlbCgpKSxlLmdldFBhZ2VDb3VudD0oKT0+e3ZhciB0O3JldHVybiBudWxsIT0odD1lLm9wdGlvbnMucGFnZUNvdW50KT90Ok1hdGguY2VpbChlLmdldFJvd0NvdW50KCkvZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemUpfSxlLmdldFJvd0NvdW50PSgpPT57dmFyIHQ7cmV0dXJuIG51bGwhPSh0PWUub3B0aW9ucy5yb3dDb3VudCk/dDplLmdldFByZVBhZ2luYXRpb25Sb3dNb2RlbCgpLnJvd3MubGVuZ3RofX19LHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dQaW5uaW5nOnt0b3A6W10sYm90dG9tOltdfSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1Bpbm5pbmdDaGFuZ2U6bWFrZVN0YXRlVXBkYXRlcigicm93UGlubmluZyIsZSl9KSxjcmVhdGVSb3c6KGUsdCk9PntlLnBpbj0obixvLGwpPT57Y29uc3QgYT1vP2UuZ2V0TGVhZlJvd3MoKS5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSk6W10scj1sP2UuZ2V0UGFyZW50Um93cygpLm1hcChlPT57bGV0e2lkOnR9PWU7cmV0dXJuIHR9KTpbXSxpPW5ldyBTZXQoWy4uLnIsZS5pZCwuLi5hXSk7dC5zZXRSb3dQaW5uaW5nKGU9Pnt2YXIgdCxvLGwsYSxyLHM7cmV0dXJuImJvdHRvbSI9PT1uP3t0b3A6KG51bGwhPShsPW51bGw9PWU/dm9pZCAwOmUudG9wKT9sOltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLGJvdHRvbTpbLi4uKG51bGwhPShhPW51bGw9PWU/dm9pZCAwOmUuYm90dG9tKT9hOltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLC4uLkFycmF5LmZyb20oaSldfToidG9wIj09PW4/e3RvcDpbLi4uKG51bGwhPShyPW51bGw9PWU/dm9pZCAwOmUudG9wKT9yOltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLC4uLkFycmF5LmZyb20oaSldLGJvdHRvbToobnVsbCE9KHM9bnVsbD09ZT92b2lkIDA6ZS5ib3R0b20pP3M6W10pLmZpbHRlcihlPT4hKG51bGwhPWkmJmkuaGFzKGUpKSl9Ont0b3A6KG51bGwhPSh0PW51bGw9PWU/dm9pZCAwOmUudG9wKT90OltdKS5maWx0ZXIoZT0+IShudWxsIT1pJiZpLmhhcyhlKSkpLGJvdHRvbToobnVsbCE9KG89bnVsbD09ZT92b2lkIDA6ZS5ib3R0b20pP286W10pLmZpbHRlcihlPT4hKG51bGwhPWkmJmkuaGFzKGUpKSl9fSl9LGUuZ2V0Q2FuUGluPSgpPT57dmFyIG47Y29uc3R7ZW5hYmxlUm93UGlubmluZzpvLGVuYWJsZVBpbm5pbmc6bH09dC5vcHRpb25zO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBvP28oZSk6bnVsbD09KG49bnVsbCE9bz9vOmwpfHxufSxlLmdldElzUGlubmVkPSgpPT57Y29uc3Qgbj1bZS5pZF0se3RvcDpvLGJvdHRvbTpsfT10LmdldFN0YXRlKCkucm93UGlubmluZyxhPW4uc29tZShlPT5udWxsPT1vP3ZvaWQgMDpvLmluY2x1ZGVzKGUpKSxyPW4uc29tZShlPT5udWxsPT1sP3ZvaWQgMDpsLmluY2x1ZGVzKGUpKTtyZXR1cm4gYT8idG9wIjohIXImJiJib3R0b20ifSxlLmdldFBpbm5lZEluZGV4PSgpPT57dmFyIG4sbztjb25zdCBsPWUuZ2V0SXNQaW5uZWQoKTtpZighbClyZXR1cm4tMTtjb25zdCBhPW51bGw9PShuPSJ0b3AiPT09bD90LmdldFRvcFJvd3MoKTp0LmdldEJvdHRvbVJvd3MoKSk/dm9pZCAwOm4ubWFwKGU9PntsZXR7aWQ6dH09ZTtyZXR1cm4gdH0pO3JldHVybiBudWxsIT0obz1udWxsPT1hP3ZvaWQgMDphLmluZGV4T2YoZS5pZCkpP286LTF9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dQaW5uaW5nPXQ9Pm51bGw9PWUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2U/dm9pZCAwOmUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2UodCksZS5yZXNldFJvd1Bpbm5pbmc9dD0+e3ZhciBuLG87cmV0dXJuIGUuc2V0Um93UGlubmluZyh0P3t0b3A6W10sYm90dG9tOltdfTpudWxsIT0obj1udWxsPT0obz1lLmluaXRpYWxTdGF0ZSk/dm9pZCAwOm8ucm93UGlubmluZyk/bjp7dG9wOltdLGJvdHRvbTpbXX0pfSxlLmdldElzU29tZVJvd3NQaW5uZWQ9dD0+e3ZhciBuO2NvbnN0IG89ZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmc7dmFyIGwsYTtyZXR1cm4gdD9Cb29sZWFuKG51bGw9PShuPW9bdF0pP3ZvaWQgMDpuLmxlbmd0aCk6Qm9vbGVhbigobnVsbD09KGw9by50b3ApP3ZvaWQgMDpsLmxlbmd0aCl8fChudWxsPT0oYT1vLmJvdHRvbSk/dm9pZCAwOmEubGVuZ3RoKSl9LGUuX2dldFBpbm5lZFJvd3M9KHQsbixvKT0+e3ZhciBsO3JldHVybihudWxsPT0obD1lLm9wdGlvbnMua2VlcFBpbm5lZFJvd3MpfHxsPyhudWxsIT1uP246W10pLm1hcCh0PT57Y29uc3Qgbj1lLmdldFJvdyh0LCEwKTtyZXR1cm4gbi5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZCgpP246bnVsbH0pOihudWxsIT1uP246W10pLm1hcChlPT50LmZpbmQodD0+dC5pZD09PWUpKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246b30pKX0sZS5nZXRUb3BSb3dzPW1lbW8oKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3BdLCh0LG4pPT5lLl9nZXRQaW5uZWRSb3dzKHQsbiwidG9wIiksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRCb3R0b21Sb3dzPW1lbW8oKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy5ib3R0b21dLCh0LG4pPT5lLl9nZXRQaW5uZWRSb3dzKHQsbiwiYm90dG9tIiksZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRDZW50ZXJSb3dzPW1lbW8oKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3AsZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcuYm90dG9tXSwoZSx0LG4pPT57Y29uc3Qgbz1uZXcgU2V0KFsuLi5udWxsIT10P3Q6W10sLi4ubnVsbCE9bj9uOltdXSk7cmV0dXJuIGUuZmlsdGVyKGU9PiFvLmhhcyhlLmlkKSl9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdSb3dzIikpfX0sTCwkXTtmdW5jdGlvbiBjcmVhdGVUYWJsZShlKXt2YXIgdCxuO2NvbnN0IG89Wy4uLmosLi4ubnVsbCE9KHQ9ZS5fZmVhdHVyZXMpP3Q6W11dO2xldCBsPXtfZmVhdHVyZXM6b307Y29uc3QgYT1sLl9mZWF0dXJlcy5yZWR1Y2UoKGUsdCk9Pk9iamVjdC5hc3NpZ24oZSxudWxsPT10LmdldERlZmF1bHRPcHRpb25zP3ZvaWQgMDp0LmdldERlZmF1bHRPcHRpb25zKGwpKSx7fSk7bGV0IHI9ey4uLm51bGwhPShuPWUuaW5pdGlhbFN0YXRlKT9uOnt9fTtsLl9mZWF0dXJlcy5mb3JFYWNoKGU9Pnt2YXIgdDtyPW51bGwhPSh0PW51bGw9PWUuZ2V0SW5pdGlhbFN0YXRlP3ZvaWQgMDplLmdldEluaXRpYWxTdGF0ZShyKSk/dDpyfSk7Y29uc3QgaT1bXTtsZXQgcz0hMTtjb25zdCB1PXtfZmVhdHVyZXM6byxvcHRpb25zOnsuLi5hLC4uLmV9LGluaXRpYWxTdGF0ZTpyLF9xdWV1ZTplPT57aS5wdXNoKGUpLHN8fChzPSEwLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pntmb3IoO2kubGVuZ3RoOylpLnNoaWZ0KCkoKTtzPSExfSkuY2F0Y2goZT0+c2V0VGltZW91dCgoKT0+e3Rocm93IGV9KSkpfSxyZXNldDooKT0+e2wuc2V0U3RhdGUobC5pbml0aWFsU3RhdGUpfSxzZXRPcHRpb25zOmU9Pntjb25zdCB0PWZ1bmN0aW9uYWxVcGRhdGUoZSxsLm9wdGlvbnMpO2wub3B0aW9ucz0oZT0+bC5vcHRpb25zLm1lcmdlT3B0aW9ucz9sLm9wdGlvbnMubWVyZ2VPcHRpb25zKGEsZSk6ey4uLmEsLi4uZX0pKHQpfSxnZXRTdGF0ZTooKT0+bC5vcHRpb25zLnN0YXRlLHNldFN0YXRlOmU9PntudWxsPT1sLm9wdGlvbnMub25TdGF0ZUNoYW5nZXx8bC5vcHRpb25zLm9uU3RhdGVDaGFuZ2UoZSl9LF9nZXRSb3dJZDooZSx0LG4pPT57dmFyIG87cmV0dXJuIG51bGwhPShvPW51bGw9PWwub3B0aW9ucy5nZXRSb3dJZD92b2lkIDA6bC5vcHRpb25zLmdldFJvd0lkKGUsdCxuKSk/bzpgJHtuP1tuLmlkLHRdLmpvaW4oIi4iKTp0fWB9LGdldENvcmVSb3dNb2RlbDooKT0+KGwuX2dldENvcmVSb3dNb2RlbHx8KGwuX2dldENvcmVSb3dNb2RlbD1sLm9wdGlvbnMuZ2V0Q29yZVJvd01vZGVsKGwpKSxsLl9nZXRDb3JlUm93TW9kZWwoKSksZ2V0Um93TW9kZWw6KCk9PmwuZ2V0UGFnaW5hdGlvblJvd01vZGVsKCksZ2V0Um93OihlLHQpPT57bGV0IG49KHQ/bC5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTpsLmdldFJvd01vZGVsKCkpLnJvd3NCeUlkW2VdO2lmKCFuJiYobj1sLmdldENvcmVSb3dNb2RlbCgpLnJvd3NCeUlkW2VdLCFuKSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIG59LF9nZXREZWZhdWx0Q29sdW1uRGVmOm1lbW8oKCk9PltsLm9wdGlvbnMuZGVmYXVsdENvbHVtbl0sZT0+e3ZhciB0O3JldHVybiBlPW51bGwhPSh0PWUpP3Q6e30se2hlYWRlcjplPT57Y29uc3QgdD1lLmhlYWRlci5jb2x1bW4uY29sdW1uRGVmO3JldHVybiB0LmFjY2Vzc29yS2V5P3QuYWNjZXNzb3JLZXk6dC5hY2Nlc3NvckZuP3QuaWQ6bnVsbH0sY2VsbDplPT57dmFyIHQsbjtyZXR1cm4gbnVsbCE9KHQ9bnVsbD09KG49ZS5yZW5kZXJWYWx1ZSgpKXx8bnVsbD09bi50b1N0cmluZz92b2lkIDA6bi50b1N0cmluZygpKT90Om51bGx9LC4uLmwuX2ZlYXR1cmVzLnJlZHVjZSgoZSx0KT0+T2JqZWN0LmFzc2lnbihlLG51bGw9PXQuZ2V0RGVmYXVsdENvbHVtbkRlZj92b2lkIDA6dC5nZXREZWZhdWx0Q29sdW1uRGVmKCkpLHt9KSwuLi5lfX0sZ2V0TWVtb09wdGlvbnMoZSwiZGVidWdDb2x1bW5zIikpLF9nZXRDb2x1bW5EZWZzOigpPT5sLm9wdGlvbnMuY29sdW1ucyxnZXRBbGxDb2x1bW5zOm1lbW8oKCk9PltsLl9nZXRDb2x1bW5EZWZzKCldLGU9Pntjb25zdCByZWN1cnNlQ29sdW1ucz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLGUubWFwKGU9Pntjb25zdCBvPWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBsLGE7Y29uc3Qgcj17Li4uZS5fZ2V0RGVmYXVsdENvbHVtbkRlZigpLC4uLnR9LGk9ci5hY2Nlc3NvcktleTtsZXQgcyx1PW51bGwhPShsPW51bGwhPShhPXIuaWQpP2E6aT8iZnVuY3Rpb24iPT10eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsP2kucmVwbGFjZUFsbCgiLiIsIl8iKTppLnJlcGxhY2UoL1wuL2csIl8iKTp2b2lkIDApP2w6InN0cmluZyI9PXR5cGVvZiByLmhlYWRlcj9yLmhlYWRlcjp2b2lkIDA7aWYoci5hY2Nlc3NvckZuP3M9ci5hY2Nlc3NvckZuOmkmJihzPWkuaW5jbHVkZXMoIi4iKT9lPT57bGV0IHQ9ZTtmb3IoY29uc3QgZSBvZiBpLnNwbGl0KCIuIikpe3ZhciBuO3Q9bnVsbD09KG49dCk/dm9pZCAwOm5bZV19cmV0dXJuIHR9OmU9PmVbci5hY2Nlc3NvcktleV0pLCF1KXRocm93IG5ldyBFcnJvcjtsZXQgZD17aWQ6YCR7U3RyaW5nKHUpfWAsYWNjZXNzb3JGbjpzLHBhcmVudDpvLGRlcHRoOm4sY29sdW1uRGVmOnIsY29sdW1uczpbXSxnZXRGbGF0Q29sdW1uczptZW1vKCgpPT5bITBdLCgpPT57dmFyIGU7cmV0dXJuW2QsLi4ubnVsbD09KGU9ZC5jb2x1bW5zKT92b2lkIDA6ZS5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSldfSxnZXRNZW1vT3B0aW9ucyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxnZXRMZWFmQ29sdW1uczptZW1vKCgpPT5bZS5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sZT0+e3ZhciB0O2lmKG51bGwhPSh0PWQuY29sdW1ucykmJnQubGVuZ3RoKXtsZXQgdD1kLmNvbHVtbnMuZmxhdE1hcChlPT5lLmdldExlYWZDb2x1bW5zKCkpO3JldHVybiBlKHQpfXJldHVybltkXX0sZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSl9O2Zvcihjb25zdCB0IG9mIGUuX2ZlYXR1cmVzKW51bGw9PXQuY3JlYXRlQ29sdW1ufHx0LmNyZWF0ZUNvbHVtbihkLGUpO3JldHVybiBkfShsLGUsbix0KSxhPWU7cmV0dXJuIG8uY29sdW1ucz1hLmNvbHVtbnM/cmVjdXJzZUNvbHVtbnMoYS5jb2x1bW5zLG8sbisxKTpbXSxvfSl9O3JldHVybiByZWN1cnNlQ29sdW1ucyhlKX0sZ2V0TWVtb09wdGlvbnMoZSwiZGVidWdDb2x1bW5zIikpLGdldEFsbEZsYXRDb2x1bW5zOm1lbW8oKCk9PltsLmdldEFsbENvbHVtbnMoKV0sZT0+ZS5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSksZ2V0TWVtb09wdGlvbnMoZSwiZGVidWdDb2x1bW5zIikpLF9nZXRBbGxGbGF0Q29sdW1uc0J5SWQ6bWVtbygoKT0+W2wuZ2V0QWxsRmxhdENvbHVtbnMoKV0sZT0+ZS5yZWR1Y2UoKGUsdCk9PihlW3QuaWRdPXQsZSkse30pLGdldE1lbW9PcHRpb25zKGUsImRlYnVnQ29sdW1ucyIpKSxnZXRBbGxMZWFmQ29sdW1uczptZW1vKCgpPT5bbC5nZXRBbGxDb2x1bW5zKCksbC5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sKGUsdCk9PnQoZS5mbGF0TWFwKGU9PmUuZ2V0TGVhZkNvbHVtbnMoKSkpLGdldE1lbW9PcHRpb25zKGUsImRlYnVnQ29sdW1ucyIpKSxnZXRDb2x1bW46ZT0+bC5fZ2V0QWxsRmxhdENvbHVtbnNCeUlkKClbZV19O09iamVjdC5hc3NpZ24obCx1KTtmb3IobGV0IGU9MDtlPGwuX2ZlYXR1cmVzLmxlbmd0aDtlKyspe2NvbnN0IHQ9bC5fZmVhdHVyZXNbZV07bnVsbD09dHx8bnVsbD09dC5jcmVhdGVUYWJsZXx8dC5jcmVhdGVUYWJsZShsKX1yZXR1cm4gbH1mdW5jdGlvbiBmaWx0ZXJSb3dzKGUsdCxuKXtyZXR1cm4gbi5vcHRpb25zLmZpbHRlckZyb21MZWFmUm93cz9mdW5jdGlvbihlLHQsbil7dmFyIG87Y29uc3QgbD1bXSxhPXt9LHI9bnVsbCE9KG89bi5vcHRpb25zLm1heExlYWZSb3dGaWx0ZXJEZXB0aCk/bzoxMDAscmVjdXJzZUZpbHRlclJvd3M9ZnVuY3Rpb24oZSxvKXt2b2lkIDA9PT1vJiYobz0wKTtjb25zdCBpPVtdO2ZvcihsZXQgdT0wO3U8ZS5sZW5ndGg7dSsrKXt2YXIgcztsZXQgZD1lW3VdO2NvbnN0IGc9Y3JlYXRlUm93KG4sZC5pZCxkLm9yaWdpbmFsLGQuaW5kZXgsZC5kZXB0aCwwLGQucGFyZW50SWQpO2lmKGcuY29sdW1uRmlsdGVycz1kLmNvbHVtbkZpbHRlcnMsbnVsbCE9KHM9ZC5zdWJSb3dzKSYmcy5sZW5ndGgmJm88cil7aWYoZy5zdWJSb3dzPXJlY3Vyc2VGaWx0ZXJSb3dzKGQuc3ViUm93cyxvKzEpLGQ9Zyx0KGQpJiYhZy5zdWJSb3dzLmxlbmd0aCl7aS5wdXNoKGQpLGFbZC5pZF09ZCxsLnB1c2goZCk7Y29udGludWV9aWYodChkKXx8Zy5zdWJSb3dzLmxlbmd0aCl7aS5wdXNoKGQpLGFbZC5pZF09ZCxsLnB1c2goZCk7Y29udGludWV9fWVsc2UgZD1nLHQoZCkmJihpLnB1c2goZCksYVtkLmlkXT1kLGwucHVzaChkKSl9cmV0dXJuIGl9O3JldHVybntyb3dzOnJlY3Vyc2VGaWx0ZXJSb3dzKGUpLGZsYXRSb3dzOmwscm93c0J5SWQ6YX19KGUsdCxuKTpmdW5jdGlvbihlLHQsbil7dmFyIG87Y29uc3QgbD1bXSxhPXt9LHI9bnVsbCE9KG89bi5vcHRpb25zLm1heExlYWZSb3dGaWx0ZXJEZXB0aCk/bzoxMDAscmVjdXJzZUZpbHRlclJvd3M9ZnVuY3Rpb24oZSxvKXt2b2lkIDA9PT1vJiYobz0wKTtjb25zdCBpPVtdO2ZvcihsZXQgdT0wO3U8ZS5sZW5ndGg7dSsrKXtsZXQgZD1lW3VdO2lmKHQoZCkpe3ZhciBzO2lmKG51bGwhPShzPWQuc3ViUm93cykmJnMubGVuZ3RoJiZvPHIpe2NvbnN0IGU9Y3JlYXRlUm93KG4sZC5pZCxkLm9yaWdpbmFsLGQuaW5kZXgsZC5kZXB0aCwwLGQucGFyZW50SWQpO2Uuc3ViUm93cz1yZWN1cnNlRmlsdGVyUm93cyhkLnN1YlJvd3MsbysxKSxkPWV9aS5wdXNoKGQpLGwucHVzaChkKSxhW2QuaWRdPWR9fXJldHVybiBpfTtyZXR1cm57cm93czpyZWN1cnNlRmlsdGVyUm93cyhlKSxmbGF0Um93czpsLHJvd3NCeUlkOmF9fShlLHQsbil9ZnVuY3Rpb24gdHJ1ZUZuKCl7cmV0dXJuITB9Y29uc3QgVD1TeW1ib2woIm1lcmdlLXByb3h5IiksVT17Z2V0OihlLHQsbik9PnQ9PT1UP246ZS5nZXQodCksaGFzOihlLHQpPT5lLmhhcyh0KSxzZXQ6dHJ1ZUZuLGRlbGV0ZVByb3BlcnR5OnRydWVGbixnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6KGUsdCk9Pih7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OigpPT5lLmdldCh0KSxzZXQ6dHJ1ZUZuLGRlbGV0ZVByb3BlcnR5OnRydWVGbn0pLG93bktleXM6ZT0+ZS5rZXlzKCl9O2Z1bmN0aW9uIHJlc29sdmVTb3VyY2UoZSl7cmV0dXJuInZhbHVlImluIGU/ZS52YWx1ZTplfWZ1bmN0aW9uIG1lcmdlUHJveHkoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbmV3IFByb3h5KHtnZXQoZSl7Zm9yKGxldCBuPXQubGVuZ3RoLTE7bj49MDtuLS0pe2NvbnN0IG89cmVzb2x2ZVNvdXJjZSh0W25dKVtlXTtpZih2b2lkIDAhPT1vKXJldHVybiBvfX0saGFzKGUpe2ZvcihsZXQgbj10Lmxlbmd0aC0xO24+PTA7bi0tKWlmKGUgaW4gcmVzb2x2ZVNvdXJjZSh0W25dKSlyZXR1cm4hMDtyZXR1cm4hMX0sa2V5cygpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZS5wdXNoKC4uLk9iamVjdC5rZXlzKHJlc29sdmVTb3VyY2UodFtuXSkpKTtyZXR1cm5bLi4uQXJyYXkuZnJvbShuZXcgU2V0KGUpKV19fSxVKX1jb25zdCBOPWgoe3Byb3BzOlsicmVuZGVyIiwicHJvcHMiXSxzZXR1cDplPT4oKT0+ImZ1bmN0aW9uIj09dHlwZW9mIGUucmVuZGVyfHwib2JqZWN0Ij09dHlwZW9mIGUucmVuZGVyP1MoZS5yZW5kZXIsZS5wcm9wcyk6ZS5yZW5kZXJ9KTtmdW5jdGlvbiBnZXRPcHRpb25zV2l0aFJlYWN0aXZlRGF0YShlKXtyZXR1cm4gbWVyZ2VQcm94eShlLHtkYXRhOmIoZS5kYXRhKX0pfWNvbnN0IFg9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBvdmVyZmxvdy1hdXRvIixiYXNlOiJtaW4tdy1mdWxsIG92ZXJmbG93LWNsaXAiLGNhcHRpb246InNyLW9ubHkiLHRoZWFkOiJyZWxhdGl2ZSIsdGJvZHk6Imlzb2xhdGUgWyY+dHJdOmRhdGEtW3NlbGVjdGFibGU9dHJ1ZV06aG92ZXI6YmctZWxldmF0ZWQvNTAgWyY+dHJdOmRhdGEtW3NlbGVjdGFibGU9dHJ1ZV06Zm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiLHRmb290OiJyZWxhdGl2ZSIsdHI6ImRhdGEtW3NlbGVjdGVkPXRydWVdOmJnLWVsZXZhdGVkLzUwIix0aDoicHgtNCBweS0zLjUgdGV4dC1zbSB0ZXh0LWhpZ2hsaWdodGVkIHRleHQtbGVmdCBydGw6dGV4dC1yaWdodCBmb250LXNlbWlib2xkIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwZS0wIix0ZDoicC00IHRleHQtc20gdGV4dC1tdXRlZCB3aGl0ZXNwYWNlLW5vd3JhcCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cGUtMCIsc2VwYXJhdG9yOiJhYnNvbHV0ZSB6LTEgbGVmdC0wIHctZnVsbCBoLXB4IGJnLSgtLXVpLWJvcmRlci1hY2NlbnRlZCkiLGVtcHR5OiJweS02IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCIsbG9hZGluZzoicHktNiB0ZXh0LWNlbnRlciJ9LHZhcmlhbnRzOntwaW5uZWQ6e3RydWU6e3RoOiJzdGlja3kgYmctZGVmYXVsdC83NSB6LTEiLHRkOiJzdGlja3kgYmctZGVmYXVsdC83NSB6LTEifX0sc3RpY2t5Ont0cnVlOnt0aGVhZDoic3RpY2t5IHRvcC0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIix0Zm9vdDoic3RpY2t5IGJvdHRvbS0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIn0saGVhZGVyOnt0aGVhZDoic3RpY2t5IHRvcC0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIn0sZm9vdGVyOnt0Zm9vdDoic3RpY2t5IGJvdHRvbS0wIGluc2V0LXgtMCBiZy1kZWZhdWx0Lzc1IGJhY2tkcm9wLWJsdXIgei0xIn19LGxvYWRpbmc6e3RydWU6e3RoZWFkOiJhZnRlcjphYnNvbHV0ZSBhZnRlcjp6LTEgYWZ0ZXI6aC1weCJ9fSxsb2FkaW5nQW5pbWF0aW9uOntjYXJvdXNlbDoiIiwiY2Fyb3VzZWwtaW52ZXJzZSI6IiIsc3dpbmc6IiIsZWxhc3RpYzoiIn0sbG9hZGluZ0NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifX0sY29tcG91bmRWYXJpYW50czpbe2xvYWRpbmc6ITAsbG9hZGluZ0NvbG9yOiJwcmltYXJ5IixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLXByaW1hcnkifX0se2xvYWRpbmc6ITAsbG9hZGluZ0NvbG9yOiJzZWNvbmRhcnkiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6Ymctc2Vjb25kYXJ5In19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoic3VjY2VzcyIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1zdWNjZXNzIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoiaW5mbyIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1pbmZvIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoid2FybmluZyIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy13YXJuaW5nIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoiZXJyb3IiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YmctZXJyb3IifX0se2xvYWRpbmc6ITAsbG9hZGluZ0NvbG9yOiJuZXV0cmFsIixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLWludmVydGVkIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdBbmltYXRpb246ImNhcm91c2VsIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSBydGw6YWZ0ZXI6YW5pbWF0ZS1bY2Fyb3VzZWwtcnRsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQW5pbWF0aW9uOiJjYXJvdXNlbC1pbnZlcnNlIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2VfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIHJ0bDphZnRlcjphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se2xvYWRpbmc6ITAsbG9hZGluZ0FuaW1hdGlvbjoic3dpbmciLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YW5pbWF0ZS1bc3dpbmdfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdBbmltYXRpb246ImVsYXN0aWMiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YW5pbWF0ZS1bZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX1dLGRlZmF1bHRWYXJpYW50czp7bG9hZGluZ0NvbG9yOiJwcmltYXJ5Iixsb2FkaW5nQW5pbWF0aW9uOiJjYXJvdXNlbCJ9fSxLPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVRhYmxlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczplLm1lcmdlTW9kZWxzKHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkYXRhOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxjb2x1bW5zOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxjYXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbWV0YTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHZpcnR1YWxpemU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxlbXB0eTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nQW5pbWF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHdhdGNoT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+KHtkZWVwOiEwfSl9LGdsb2JhbEZpbHRlck9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb2x1bW5GaWx0ZXJzT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbHVtblBpbm5pbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29sdW1uU2l6aW5nT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHZpc2liaWxpdHlPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sc29ydGluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxncm91cGluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxleHBhbmRlZE9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxyb3dTZWxlY3Rpb25PcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scm93UGlubmluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxwYWdpbmF0aW9uT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGZhY2V0ZWRPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb25TZWxlY3Q6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uSG92ZXI6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQ29udGV4dG1lbnU6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxzdGF0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9uU3RhdGVDaGFuZ2U6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LHJlbmRlckZhbGxiYWNrVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sX2ZlYXR1cmVzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxhdXRvUmVzZXRBbGw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdBbGw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdDZWxsczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWJ1Z0NvbHVtbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdIZWFkZXJzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnUm93czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWJ1Z1RhYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRDb2x1bW46e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxnZXRSb3dJZDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sZ2V0U3ViUm93czp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0saW5pdGlhbFN0YXRlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbWVyZ2VPcHRpb25zOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfX0se2dsb2JhbEZpbHRlcjp7dHlwZTpTdHJpbmd9LGdsb2JhbEZpbHRlck1vZGlmaWVyczp7fSxjb2x1bW5GaWx0ZXJzOnt0eXBlOkFycmF5fSxjb2x1bW5GaWx0ZXJzTW9kaWZpZXJzOnt9LGNvbHVtbk9yZGVyOnt0eXBlOkFycmF5fSxjb2x1bW5PcmRlck1vZGlmaWVyczp7fSxjb2x1bW5WaXNpYmlsaXR5Ont0eXBlOk9iamVjdH0sY29sdW1uVmlzaWJpbGl0eU1vZGlmaWVyczp7fSxjb2x1bW5QaW5uaW5nOnt0eXBlOk9iamVjdH0sY29sdW1uUGlubmluZ01vZGlmaWVyczp7fSxjb2x1bW5TaXppbmc6e3R5cGU6T2JqZWN0fSxjb2x1bW5TaXppbmdNb2RpZmllcnM6e30sY29sdW1uU2l6aW5nSW5mbzp7dHlwZTpPYmplY3R9LGNvbHVtblNpemluZ0luZm9Nb2RpZmllcnM6e30scm93U2VsZWN0aW9uOnt0eXBlOk9iamVjdH0scm93U2VsZWN0aW9uTW9kaWZpZXJzOnt9LHJvd1Bpbm5pbmc6e3R5cGU6T2JqZWN0fSxyb3dQaW5uaW5nTW9kaWZpZXJzOnt9LHNvcnRpbmc6e3R5cGU6QXJyYXl9LHNvcnRpbmdNb2RpZmllcnM6e30sZ3JvdXBpbmc6e3R5cGU6QXJyYXl9LGdyb3VwaW5nTW9kaWZpZXJzOnt9LGV4cGFuZGVkOnt0eXBlOltCb29sZWFuLE9iamVjdF19LGV4cGFuZGVkTW9kaWZpZXJzOnt9LHBhZ2luYXRpb246e3R5cGU6T2JqZWN0fSxwYWdpbmF0aW9uTW9kaWZpZXJzOnt9fSksZW1pdHM6WyJ1cGRhdGU6Z2xvYmFsRmlsdGVyIiwidXBkYXRlOmNvbHVtbkZpbHRlcnMiLCJ1cGRhdGU6Y29sdW1uT3JkZXIiLCJ1cGRhdGU6Y29sdW1uVmlzaWJpbGl0eSIsInVwZGF0ZTpjb2x1bW5QaW5uaW5nIiwidXBkYXRlOmNvbHVtblNpemluZyIsInVwZGF0ZTpjb2x1bW5TaXppbmdJbmZvIiwidXBkYXRlOnJvd1NlbGVjdGlvbiIsInVwZGF0ZTpyb3dQaW5uaW5nIiwidXBkYXRlOnNvcnRpbmciLCJ1cGRhdGU6Z3JvdXBpbmciLCJ1cGRhdGU6ZXhwYW5kZWQiLCJ1cGRhdGU6cGFnaW5hdGlvbiJdLHNldHVwKGgse2V4cG9zZTpTfSl7Y29uc3QgYj1oLFA9ZS51c2VTbG90cygpLHt0Okl9PXQoKSxPPW4oKSxfPW8oInRhYmxlIixiKSxrPWwoYi5kYXRhPz9bXSwhMSE9PWIud2F0Y2hPcHRpb25zPy5kZWVwKSxBPWUuY29tcHV0ZWQoKCk9PmIubWV0YT8/e30pLHo9ZS5jb21wdXRlZCgoKT0+cHJvY2Vzc0NvbHVtbnMoYi5jb2x1bW5zPz9PYmplY3Qua2V5cyhrLnZhbHVlWzBdPz97fSkubWFwKGU9Pih7YWNjZXNzb3JLZXk6ZSxoZWFkZXI6ZChlKX0pKSkpO2Z1bmN0aW9uIHByb2Nlc3NDb2x1bW5zKGUpe3JldHVybiBlLm1hcChlPT57Y29uc3QgdD17Li4uZX07cmV0dXJuImNvbHVtbnMiaW4gdCYmdC5jb2x1bW5zJiYodC5jb2x1bW5zPXByb2Nlc3NDb2x1bW5zKHQuY29sdW1ucykpLHQuY2VsbHx8KHQuY2VsbD0oe2dldFZhbHVlOmV9KT0+e2NvbnN0IHQ9ZSgpO3JldHVybiIiPT09dHx8bnVsbD09dD8iwqAiOlN0cmluZyh0KX0pLHR9KX1jb25zdCBCPWUuY29tcHV0ZWQoKCk9PmEoe2V4dGVuZDphKFgpLC4uLk8udWk/LnRhYmxlfHx7fX0pKHtzdGlja3k6Yi5zdGlja3ksbG9hZGluZzpiLmxvYWRpbmcsbG9hZGluZ0NvbG9yOmIubG9hZGluZ0NvbG9yLGxvYWRpbmdBbmltYXRpb246Yi5sb2FkaW5nQW5pbWF0aW9ufSkpLFtFLERdPXIoKSxbJCxHXT1yKHtwcm9wczp7cm93Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sc3R5bGU6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX19KSxMPWUuY29tcHV0ZWQoKCk9PmZ1bmN0aW9uIGhhc0Zvb3RlclJlY3Vyc2l2ZShlKXtmb3IoY29uc3QgdCBvZiBlKXtpZigiZm9vdGVyImluIHQpcmV0dXJuITA7aWYoImNvbHVtbnMiaW4gdCYmaGFzRm9vdGVyUmVjdXJzaXZlKHQuY29sdW1ucykpcmV0dXJuITB9cmV0dXJuITF9KHoudmFsdWUpKSxIPWUudXNlTW9kZWwoaCwiZ2xvYmFsRmlsdGVyIikscT1lLnVzZU1vZGVsKGgsImNvbHVtbkZpbHRlcnMiKSxqPWUudXNlTW9kZWwoaCwiY29sdW1uT3JkZXIiKSxUPWUudXNlTW9kZWwoaCwiY29sdW1uVmlzaWJpbGl0eSIpLFU9ZS51c2VNb2RlbChoLCJjb2x1bW5QaW5uaW5nIiksSz1lLnVzZU1vZGVsKGgsImNvbHVtblNpemluZyIpLFc9ZS51c2VNb2RlbChoLCJjb2x1bW5TaXppbmdJbmZvIiksWT1lLnVzZU1vZGVsKGgsInJvd1NlbGVjdGlvbiIpLEo9ZS51c2VNb2RlbChoLCJyb3dQaW5uaW5nIiksUT1lLnVzZU1vZGVsKGgsInNvcnRpbmciKSxaPWUudXNlTW9kZWwoaCwiZ3JvdXBpbmciKSxlZT1lLnVzZU1vZGVsKGgsImV4cGFuZGVkIiksdGU9ZS51c2VNb2RlbChoLCJwYWdpbmF0aW9uIiksbmU9ZS51c2VUZW1wbGF0ZVJlZigicm9vdFJlZiIpLG9lPWUudXNlVGVtcGxhdGVSZWYoInRhYmxlUmVmIiksbGU9ZnVuY3Rpb24oZSl7Y29uc3QgdD1jKGUuZGF0YSksbj1jcmVhdGVUYWJsZShtZXJnZVByb3h5KHtzdGF0ZTp7fSxvblN0YXRlQ2hhbmdlOigpPT57fSxyZW5kZXJGYWxsYmFja1ZhbHVlOm51bGwsbWVyZ2VPcHRpb25zOihlLG4pPT50P3suLi5lLC4uLm59Om1lcmdlUHJveHkoZSxuKX0sdD9nZXRPcHRpb25zV2l0aFJlYWN0aXZlRGF0YShlKTplKSk7aWYodCl7Y29uc3QgdD1wKGUuZGF0YSk7bSh0LCgpPT57bi5zZXRTdGF0ZShlPT4oey4uLmUsZGF0YTp0LnZhbHVlfSkpfSx7aW1tZWRpYXRlOiEwfSl9Y29uc3Qgbz1mKG4uaW5pdGlhbFN0YXRlKTtyZXR1cm4gdigoKT0+e24uc2V0T3B0aW9ucyhuPT57dmFyIGw7Y29uc3QgYT1uZXcgUHJveHkoe30se2dldDooZSx0KT0+by52YWx1ZVt0XX0pO3JldHVybiBtZXJnZVByb3h5KG4sdD9nZXRPcHRpb25zV2l0aFJlYWN0aXZlRGF0YShlKTplLHtzdGF0ZTptZXJnZVByb3h5KGEsbnVsbCE9KGw9ZS5zdGF0ZSk/bDp7fSksb25TdGF0ZUNoYW5nZTp0PT57by52YWx1ZT10IGluc3RhbmNlb2YgRnVuY3Rpb24/dChvLnZhbHVlKTp0LG51bGw9PWUub25TdGF0ZUNoYW5nZXx8ZS5vblN0YXRlQ2hhbmdlKHQpfX0pfSl9KSxufSh7Li4uaShzKGIsIl9mZWF0dXJlcyIsImF1dG9SZXNldEFsbCIsImRlYnVnQWxsIiwiZGVidWdDZWxscyIsImRlYnVnQ29sdW1ucyIsImRlYnVnSGVhZGVycyIsImRlYnVnUm93cyIsImRlYnVnVGFibGUiLCJkZWZhdWx0Q29sdW1uIiwiZ2V0Um93SWQiLCJnZXRTdWJSb3dzIiwiaW5pdGlhbFN0YXRlIiwibWVyZ2VPcHRpb25zIiwicmVuZGVyRmFsbGJhY2tWYWx1ZSIpKS52YWx1ZSxnZXQgZGF0YSgpe3JldHVybiBrLnZhbHVlfSxnZXQgY29sdW1ucygpe3JldHVybiB6LnZhbHVlfSxtZXRhOkEudmFsdWUsZ2V0Q29yZVJvd01vZGVsOmU9Pm1lbW8oKCk9PltlLm9wdGlvbnMuZGF0YV0sdD0+e2NvbnN0IG49e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LGFjY2Vzc1Jvd3M9ZnVuY3Rpb24odCxvLGwpe3ZvaWQgMD09PW8mJihvPTApO2NvbnN0IGE9W107Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IHM9Y3JlYXRlUm93KGUsZS5fZ2V0Um93SWQodFtpXSxpLGwpLHRbaV0saSxvLDAsbnVsbD09bD92b2lkIDA6bC5pZCk7dmFyIHI7bi5mbGF0Um93cy5wdXNoKHMpLG4ucm93c0J5SWRbcy5pZF09cyxhLnB1c2gocyksZS5vcHRpb25zLmdldFN1YlJvd3MmJihzLm9yaWdpbmFsU3ViUm93cz1lLm9wdGlvbnMuZ2V0U3ViUm93cyh0W2ldLGkpLG51bGwhPShyPXMub3JpZ2luYWxTdWJSb3dzKSYmci5sZW5ndGgmJihzLnN1YlJvd3M9YWNjZXNzUm93cyhzLm9yaWdpbmFsU3ViUm93cyxvKzEscykpKX1yZXR1cm4gYX07cmV0dXJuIG4ucm93cz1hY2Nlc3NSb3dzKHQpLG59LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIsMCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKSwuLi5iLmdsb2JhbEZpbHRlck9wdGlvbnN8fHt9LC4uLnZvaWQgMCE9PUgudmFsdWUmJntvbkdsb2JhbEZpbHRlckNoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxIKX0sLi4uYi5jb2x1bW5GaWx0ZXJzT3B0aW9uc3x8e30sZ2V0RmlsdGVyZWRSb3dNb2RlbDplPT5tZW1vKCgpPT5bZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCksZS5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMsZS5nZXRTdGF0ZSgpLmdsb2JhbEZpbHRlcl0sKHQsbixvKT0+e2lmKCF0LnJvd3MubGVuZ3RofHwobnVsbD09bnx8IW4ubGVuZ3RoKSYmIW8pe2ZvcihsZXQgZT0wO2U8dC5mbGF0Um93cy5sZW5ndGg7ZSsrKXQuZmxhdFJvd3NbZV0uY29sdW1uRmlsdGVycz17fSx0LmZsYXRSb3dzW2VdLmNvbHVtbkZpbHRlcnNNZXRhPXt9O3JldHVybiB0fWNvbnN0IGw9W10sYT1bXTsobnVsbCE9bj9uOltdKS5mb3JFYWNoKHQ9Pnt2YXIgbjtjb25zdCBvPWUuZ2V0Q29sdW1uKHQuaWQpO2lmKCFvKXJldHVybjtjb25zdCBhPW8uZ2V0RmlsdGVyRm4oKTthJiZsLnB1c2goe2lkOnQuaWQsZmlsdGVyRm46YSxyZXNvbHZlZFZhbHVlOm51bGwhPShuPW51bGw9PWEucmVzb2x2ZUZpbHRlclZhbHVlP3ZvaWQgMDphLnJlc29sdmVGaWx0ZXJWYWx1ZSh0LnZhbHVlKSk/bjp0LnZhbHVlfSl9KTtjb25zdCByPShudWxsIT1uP246W10pLm1hcChlPT5lLmlkKSxpPWUuZ2V0R2xvYmFsRmlsdGVyRm4oKSxzPWUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5maWx0ZXIoZT0+ZS5nZXRDYW5HbG9iYWxGaWx0ZXIoKSk7bGV0IHUsZDtvJiZpJiZzLmxlbmd0aCYmKHIucHVzaCgiX19nbG9iYWxfXyIpLHMuZm9yRWFjaChlPT57dmFyIHQ7YS5wdXNoKHtpZDplLmlkLGZpbHRlckZuOmkscmVzb2x2ZWRWYWx1ZTpudWxsIT0odD1udWxsPT1pLnJlc29sdmVGaWx0ZXJWYWx1ZT92b2lkIDA6aS5yZXNvbHZlRmlsdGVyVmFsdWUobykpP3Q6b30pfSkpO2ZvcihsZXQgZT0wO2U8dC5mbGF0Um93cy5sZW5ndGg7ZSsrKXtjb25zdCBuPXQuZmxhdFJvd3NbZV07aWYobi5jb2x1bW5GaWx0ZXJzPXt9LGwubGVuZ3RoKWZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSsrKXt1PWxbZV07Y29uc3QgdD11LmlkO24uY29sdW1uRmlsdGVyc1t0XT11LmZpbHRlckZuKG4sdCx1LnJlc29sdmVkVmFsdWUsZT0+e24uY29sdW1uRmlsdGVyc01ldGFbdF09ZX0pfWlmKGEubGVuZ3RoKXtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7ZD1hW2VdO2NvbnN0IHQ9ZC5pZDtpZihkLmZpbHRlckZuKG4sdCxkLnJlc29sdmVkVmFsdWUsZT0+e24uY29sdW1uRmlsdGVyc01ldGFbdF09ZX0pKXtuLmNvbHVtbkZpbHRlcnMuX19nbG9iYWxfXz0hMDticmVha319ITAhPT1uLmNvbHVtbkZpbHRlcnMuX19nbG9iYWxfXyYmKG4uY29sdW1uRmlsdGVycy5fX2dsb2JhbF9fPSExKX19cmV0dXJuIGZpbHRlclJvd3ModC5yb3dzLGU9Pntmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylpZighMT09PWUuY29sdW1uRmlsdGVyc1tyW3RdXSlyZXR1cm4hMTtyZXR1cm4hMH0sZSl9LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIsMCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKSwuLi52b2lkIDAhPT1xLnZhbHVlJiZ7b25Db2x1bW5GaWx0ZXJzQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLHEpfSwuLi52b2lkIDAhPT1qLnZhbHVlJiZ7b25Db2x1bW5PcmRlckNoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxqKX0sLi4uYi52aXNpYmlsaXR5T3B0aW9uc3x8e30sLi4udm9pZCAwIT09VC52YWx1ZSYme29uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxUKX0sLi4uYi5jb2x1bW5QaW5uaW5nT3B0aW9uc3x8e30sLi4udm9pZCAwIT09VS52YWx1ZSYme29uQ29sdW1uUGlubmluZ0NoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxVKX0sLi4uYi5jb2x1bW5TaXppbmdPcHRpb25zfHx7fSwuLi52b2lkIDAhPT1LLnZhbHVlJiZ7b25Db2x1bW5TaXppbmdDaGFuZ2U6ZT0+dmFsdWVVcGRhdGVyKGUsSyl9LC4uLnZvaWQgMCE9PVcudmFsdWUmJntvbkNvbHVtblNpemluZ0luZm9DaGFuZ2U6ZT0+dmFsdWVVcGRhdGVyKGUsVyl9LC4uLmIucm93U2VsZWN0aW9uT3B0aW9uc3x8e30sLi4udm9pZCAwIT09WS52YWx1ZSYme29uUm93U2VsZWN0aW9uQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLFkpfSwuLi5iLnJvd1Bpbm5pbmdPcHRpb25zfHx7fSwuLi52b2lkIDAhPT1KLnZhbHVlJiZ7b25Sb3dQaW5uaW5nQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLEopfSwuLi5iLnNvcnRpbmdPcHRpb25zfHx7fSxnZXRTb3J0ZWRSb3dNb2RlbDplPT5tZW1vKCgpPT5bZS5nZXRTdGF0ZSgpLnNvcnRpbmcsZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpXSwodCxuKT0+e2lmKCFuLnJvd3MubGVuZ3RofHxudWxsPT10fHwhdC5sZW5ndGgpcmV0dXJuIG47Y29uc3Qgbz1lLmdldFN0YXRlKCkuc29ydGluZyxsPVtdLGE9by5maWx0ZXIodD0+e3ZhciBuO3JldHVybiBudWxsPT0obj1lLmdldENvbHVtbih0LmlkKSk/dm9pZCAwOm4uZ2V0Q2FuU29ydCgpfSkscj17fTthLmZvckVhY2godD0+e2NvbnN0IG49ZS5nZXRDb2x1bW4odC5pZCk7biYmKHJbdC5pZF09e3NvcnRVbmRlZmluZWQ6bi5jb2x1bW5EZWYuc29ydFVuZGVmaW5lZCxpbnZlcnRTb3J0aW5nOm4uY29sdW1uRGVmLmludmVydFNvcnRpbmcsc29ydGluZ0ZuOm4uZ2V0U29ydGluZ0ZuKCl9KX0pO2NvbnN0IHNvcnREYXRhPWU9Pntjb25zdCB0PWUubWFwKGU9Pih7Li4uZX0pKTtyZXR1cm4gdC5zb3J0KChlLHQpPT57Zm9yKGxldCBvPTA7bzxhLmxlbmd0aDtvKz0xKXt2YXIgbjtjb25zdCBsPWFbb10saT1yW2wuaWRdLHM9aS5zb3J0VW5kZWZpbmVkLHU9bnVsbCE9KG49bnVsbD09bD92b2lkIDA6bC5kZXNjKSYmbjtsZXQgZD0wO2lmKHMpe2NvbnN0IG49dm9pZCAwPT09ZS5nZXRWYWx1ZShsLmlkKSxvPXZvaWQgMD09PXQuZ2V0VmFsdWUobC5pZCk7aWYobnx8byl7aWYoImZpcnN0Ij09PXMpcmV0dXJuIG4/LTE6MTtpZigibGFzdCI9PT1zKXJldHVybiBuPzE6LTE7ZD1uJiZvPzA6bj9zOi1zfX1pZigwPT09ZCYmKGQ9aS5zb3J0aW5nRm4oZSx0LGwuaWQpKSwwIT09ZClyZXR1cm4gdSYmKGQqPS0xKSxpLmludmVydFNvcnRpbmcmJihkKj0tMSksZH1yZXR1cm4gZS5pbmRleC10LmluZGV4fSksdC5mb3JFYWNoKGU9Pnt2YXIgdDtsLnB1c2goZSksbnVsbCE9KHQ9ZS5zdWJSb3dzKSYmdC5sZW5ndGgmJihlLnN1YlJvd3M9c29ydERhdGEoZS5zdWJSb3dzKSl9KSx0fTtyZXR1cm57cm93czpzb3J0RGF0YShuLnJvd3MpLGZsYXRSb3dzOmwscm93c0J5SWQ6bi5yb3dzQnlJZH19LGdldE1lbW9PcHRpb25zKGUub3B0aW9ucywiZGVidWdUYWJsZSIsMCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKSwuLi52b2lkIDAhPT1RLnZhbHVlJiZ7b25Tb3J0aW5nQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLFEpfSwuLi5iLmdyb3VwaW5nT3B0aW9uc3x8e30sLi4udm9pZCAwIT09Wi52YWx1ZSYme29uR3JvdXBpbmdDaGFuZ2U6ZT0+dmFsdWVVcGRhdGVyKGUsWil9LC4uLmIuZXhwYW5kZWRPcHRpb25zfHx7fSxnZXRFeHBhbmRlZFJvd01vZGVsOmU9Pm1lbW8oKCk9PltlLmdldFN0YXRlKCkuZXhwYW5kZWQsZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsKCksZS5vcHRpb25zLnBhZ2luYXRlRXhwYW5kZWRSb3dzXSwoZSx0LG4pPT4hdC5yb3dzLmxlbmd0aHx8ITAhPT1lJiYhT2JqZWN0LmtleXMobnVsbCE9ZT9lOnt9KS5sZW5ndGg/dDpuP2Z1bmN0aW9uKGUpe2NvbnN0IHQ9W10saGFuZGxlUm93PWU9Pnt2YXIgbjt0LnB1c2goZSksbnVsbCE9KG49ZS5zdWJSb3dzKSYmbi5sZW5ndGgmJmUuZ2V0SXNFeHBhbmRlZCgpJiZlLnN1YlJvd3MuZm9yRWFjaChoYW5kbGVSb3cpfTtyZXR1cm4gZS5yb3dzLmZvckVhY2goaGFuZGxlUm93KSx7cm93czp0LGZsYXRSb3dzOmUuZmxhdFJvd3Mscm93c0J5SWQ6ZS5yb3dzQnlJZH19KHQpOnQsZ2V0TWVtb09wdGlvbnMoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIikpLC4uLnZvaWQgMCE9PWVlLnZhbHVlJiZ7b25FeHBhbmRlZENoYW5nZTplPT52YWx1ZVVwZGF0ZXIoZSxlZSl9LC4uLmIucGFnaW5hdGlvbk9wdGlvbnN8fHt9LC4uLnZvaWQgMCE9PXRlLnZhbHVlJiZ7b25QYWdpbmF0aW9uQ2hhbmdlOmU9PnZhbHVlVXBkYXRlcihlLHRlKX0sLi4uYi5mYWNldGVkT3B0aW9uc3x8e30sc3RhdGU6e2dldCBnbG9iYWxGaWx0ZXIoKXtyZXR1cm4gSC52YWx1ZX0sZ2V0IGNvbHVtbkZpbHRlcnMoKXtyZXR1cm4gcS52YWx1ZX0sZ2V0IGNvbHVtbk9yZGVyKCl7cmV0dXJuIGoudmFsdWV9LGdldCBjb2x1bW5WaXNpYmlsaXR5KCl7cmV0dXJuIFQudmFsdWV9LGdldCBjb2x1bW5QaW5uaW5nKCl7cmV0dXJuIFUudmFsdWV9LGdldCBleHBhbmRlZCgpe3JldHVybiBlZS52YWx1ZX0sZ2V0IHJvd1NlbGVjdGlvbigpe3JldHVybiBZLnZhbHVlfSxnZXQgc29ydGluZygpe3JldHVybiBRLnZhbHVlfSxnZXQgZ3JvdXBpbmcoKXtyZXR1cm4gWi52YWx1ZX0sZ2V0IHJvd1Bpbm5pbmcoKXtyZXR1cm4gSi52YWx1ZX0sZ2V0IGNvbHVtblNpemluZygpe3JldHVybiBLLnZhbHVlfSxnZXQgY29sdW1uU2l6aW5nSW5mbygpe3JldHVybiBXLnZhbHVlfSxnZXQgcGFnaW5hdGlvbigpe3JldHVybiB0ZS52YWx1ZX19fSksYWU9ZS5jb21wdXRlZCgoKT0+bGUuZ2V0Um93TW9kZWwoKS5yb3dzKSxyZT1lLmNvbXB1dGVkKCgpPT5iLnZpcnR1YWxpemU/W106bGUuZ2V0VG9wUm93cygpKSxpZT1lLmNvbXB1dGVkKCgpPT5iLnZpcnR1YWxpemU/W106bGUuZ2V0Qm90dG9tUm93cygpKSxzZT1lLmNvbXB1dGVkKCgpPT5yZS52YWx1ZS5sZW5ndGh8fGllLnZhbHVlLmxlbmd0aD9sZS5nZXRDZW50ZXJSb3dzKCk6YWUudmFsdWUpLHVlPWUudG9SZWYoKCk9PmcoImJvb2xlYW4iPT10eXBlb2YgYi52aXJ0dWFsaXplP3t9OmIudmlydHVhbGl6ZSx7ZXN0aW1hdGVTaXplOjY1LG92ZXJzY2FuOjEyfSkpLGRlPSEhYi52aXJ0dWFsaXplJiZWKHsuLi51ZS52YWx1ZSxnZXQgY291bnQoKXtyZXR1cm4gc2UudmFsdWUubGVuZ3RofSxnZXRTY3JvbGxFbGVtZW50OigpPT5uZS52YWx1ZT8uJGVsLGVzdGltYXRlU2l6ZTplPT57Y29uc3QgdD11ZS52YWx1ZS5lc3RpbWF0ZVNpemU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChlKTp0fX0pLGdlPWUuY29tcHV0ZWQoKCk9PmRlP2RlLnZhbHVlLmdldFZpcnR1YWxJdGVtcygpOltdKSxjZT1lLmNvbXB1dGVkKCgpPT5nZS52YWx1ZVswXT8uc3RhcnQ/PzApLHBlPWUuY29tcHV0ZWQoKCk9PmRlJiZnZS52YWx1ZS5sZW5ndGg/ZGUudmFsdWUuZ2V0VG90YWxTaXplKCktKGdlLnZhbHVlW2dlLnZhbHVlLmxlbmd0aC0xXT8uZW5kPz8wKTowKTtmdW5jdGlvbiB2YWx1ZVVwZGF0ZXIoZSx0KXt0LnZhbHVlPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UodC52YWx1ZSk6ZX1mdW5jdGlvbiBvblJvd0hvdmVyKGUsdCl7Yi5vbkhvdmVyJiZiLm9uSG92ZXIoZSx0KX1mdW5jdGlvbiByZXNvbHZlVmFsdWUoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQpOmV9ZnVuY3Rpb24gZ2V0Q29sdW1uU3R5bGVzKGUpe2NvbnN0IHQ9e30sbj1lLmdldElzUGlubmVkKCk7cmV0dXJuImxlZnQiPT09bj90LmxlZnQ9YCR7ZS5nZXRTdGFydCgibGVmdCIpfXB4YDoicmlnaHQiPT09biYmKHQucmlnaHQ9YCR7ZS5nZXRBZnRlcigicmlnaHQiKX1weGApLHR9cmV0dXJuIGUud2F0Y2goKCk9PmIuZGF0YSwoKT0+e2sudmFsdWU9Yi5kYXRhP1suLi5iLmRhdGFdOltdfSxiLndhdGNoT3B0aW9ucyksUyh7Z2V0ICRlbCgpe3JldHVybiBuZS52YWx1ZT8uJGVsfSx0YWJsZVJlZjpvZSx0YWJsZUFwaTpsZX0pLCh0LG4sbyxsKT0+e24oIlx4M2MhLS1bLS1ceDNlIiksbih3KGUudW5yZWYoJCksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKHtyb3c6bixzdHlsZTpvfSxsLGEscik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZSgidHIiLHsiZGF0YS1zZWxlY3RlZCI6bi5nZXRJc1NlbGVjdGVkKCksImRhdGEtc2VsZWN0YWJsZSI6ISFiLm9uU2VsZWN0fHwhIWIub25Ib3Zlcnx8ISFiLm9uQ29udGV4dG1lbnUsImRhdGEtZXhwYW5kZWQiOm4uZ2V0SXNFeHBhbmRlZCgpLCJkYXRhLXBpbm5lZCI6bi5nZXRJc1Bpbm5lZCgpfHx2b2lkIDAscm9sZTpiLm9uU2VsZWN0PyJidXR0b24iOnZvaWQgMCx0YWJpbmRleDpiLm9uU2VsZWN0PzA6dm9pZCAwLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6Qi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyLHJlc29sdmVWYWx1ZShlLnVucmVmKGxlKS5vcHRpb25zLm1ldGE/LmNsYXNzPy50cixuKV19KSxzdHlsZTpbcmVzb2x2ZVZhbHVlKGUudW5yZWYobGUpLm9wdGlvbnMubWV0YT8uc3R5bGU/LnRyLG4pLG9dLG9uQ2xpY2s6ZT0+ZnVuY3Rpb24oZSx0KXtpZighYi5vblNlbGVjdClyZXR1cm47Y29uc3Qgbj1lLnRhcmdldDtuLmNsb3Nlc3QoImJ1dHRvbiIpfHxuLmNsb3Nlc3QoImEiKXx8KGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLGIub25TZWxlY3QoZSx0KSl9KGUsbiksb25Qb2ludGVyZW50ZXI6ZT0+b25Sb3dIb3ZlcihlLG4pLG9uUG9pbnRlcmxlYXZlOmU9Pm9uUm93SG92ZXIoZSxudWxsKSxvbkNvbnRleHRtZW51OmU9PmZ1bmN0aW9uKGUsdCl7Yi5vbkNvbnRleHRtZW51JiYoQXJyYXkuaXNBcnJheShiLm9uQ29udGV4dG1lbnUpP2Iub25Db250ZXh0bWVudS5mb3JFYWNoKG49Pm4oZSx0KSk6Yi5vbkNvbnRleHRtZW51KGUsdCkpfShlLG4pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qobi5nZXRWaXNpYmxlQ2VsbHMoKSxuPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0ZCIse2tleTpuLmlkLCJkYXRhLXBpbm5lZCI6bi5jb2x1bW4uZ2V0SXNQaW5uZWQoKSxjb2xzcGFuOnJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uY29sc3Bhbj8udGQsbikscm93c3BhbjpyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnJvd3NwYW4/LnRkLG4pLCJkYXRhLXNsb3QiOiJ0ZCIsY2xhc3M6Qi52YWx1ZS50ZCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRkLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uY2xhc3M/LnRkLG4pXSxwaW5uZWQ6ISFuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpfSksc3R5bGU6W2dldENvbHVtblN0eWxlcyhuLmNvbHVtbikscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5zdHlsZT8udGQsbildfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLGAke24uY29sdW1uLmlkfS1jZWxsYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+W2UuY3JlYXRlVk5vZGUoZS51bnJlZihOKSx7cmVuZGVyOm4uY29sdW1uLmNvbHVtbkRlZi5jZWxsLHByb3BzOm4uZ2V0Q29udGV4dCgpfSxudWxsLDgsWyJyZW5kZXIiLCJwcm9wcyJdKV0pXSwxNCxbImRhdGEtcGlubmVkIiwiY29sc3BhbiIsInJvd3NwYW4iXSkpKSwxMjgpKV0sNDYsWyJkYXRhLXNlbGVjdGVkIiwiZGF0YS1zZWxlY3RhYmxlIiwiZGF0YS1leHBhbmRlZCIsImRhdGEtcGlubmVkIiwicm9sZSIsInRhYmluZGV4Iiwib25DbGljayIsIm9uUG9pbnRlcmVudGVyIiwib25Qb2ludGVybGVhdmUiLCJvbkNvbnRleHRtZW51Il0pLG4uZ2V0SXNFeHBhbmRlZCgpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRyIix7a2V5OjAsImRhdGEtc2xvdCI6InRyIixjbGFzczpCLnZhbHVlLnRyKHtjbGFzczpbZS51bnJlZihfKT8udHJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46bi5nZXRBbGxDZWxscygpLmxlbmd0aCwiZGF0YS1zbG90IjoidGQiLGNsYXNzOkIudmFsdWUudGQoe2NsYXNzOltlLnVucmVmKF8pPy50ZF19KX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cywiZXhwYW5kZWQiLHtyb3c6bn0pXSwxMCxbImNvbHNwYW4iXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2woYDx0ciR7QygiZGF0YS1zZWxlY3RlZCIsbi5nZXRJc1NlbGVjdGVkKCkpfSR7QygiZGF0YS1zZWxlY3RhYmxlIiwhIWIub25TZWxlY3R8fCEhYi5vbkhvdmVyfHwhIWIub25Db250ZXh0bWVudSl9JHtDKCJkYXRhLWV4cGFuZGVkIixuLmdldElzRXhwYW5kZWQoKSl9JHtDKCJkYXRhLXBpbm5lZCIsbi5nZXRJc1Bpbm5lZCgpfHx2b2lkIDApfSR7Qygicm9sZSIsYi5vblNlbGVjdD8iYnV0dG9uIjp2b2lkIDApfSR7QygidGFiaW5kZXgiLGIub25TZWxlY3Q/MDp2b2lkIDApfSBkYXRhLXNsb3Q9InRyIiBjbGFzcz0iJHtSKEIudmFsdWUudHIoe2NsYXNzOltlLnVucmVmKF8pPy50cixyZXNvbHZlVmFsdWUoZS51bnJlZihsZSkub3B0aW9ucy5tZXRhPy5jbGFzcz8udHIsbildfSkpfSIgc3R5bGU9IiR7eShbcmVzb2x2ZVZhbHVlKGUudW5yZWYobGUpLm9wdGlvbnMubWV0YT8uc3R5bGU/LnRyLG4pLG9dKX0iJHtyfT5ceDNjIS0tWy0tXHgzZWApLHgobi5nZXRWaXNpYmxlQ2VsbHMoKSxuPT57bChgPHRkJHtDKCJkYXRhLXBpbm5lZCIsbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKSl9JHtDKCJjb2xzcGFuIixyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNvbHNwYW4/LnRkLG4pKX0ke0MoInJvd3NwYW4iLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8ucm93c3Bhbj8udGQsbikpfSBkYXRhLXNsb3Q9InRkIiBjbGFzcz0iJHtSKEIudmFsdWUudGQoe2NsYXNzOltlLnVucmVmKF8pPy50ZCxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50ZCxuKV0scGlubmVkOiEhbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKX0iIHN0eWxlPSIke3koW2dldENvbHVtblN0eWxlcyhuLmNvbHVtbikscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5zdHlsZT8udGQsbildKX0iJHtyfT5gKSxGKHQuJHNsb3RzLGAke24uY29sdW1uLmlkfS1jZWxsYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+e2wodyhlLnVucmVmKE4pLHtyZW5kZXI6bi5jb2x1bW4uY29sdW1uRGVmLmNlbGwscHJvcHM6bi5nZXRDb250ZXh0KCl9LG51bGwsYSxyKSl9LGwsYSxyKSxsKCI8L3RkPiIpfSksbCgiXHgzYyEtLV0tLVx4M2U8L3RyPiIpLG4uZ2V0SXNFeHBhbmRlZCgpPyhsKGA8dHIgZGF0YS1zbG90PSJ0ciIgY2xhc3M9IiR7UihCLnZhbHVlLnRyKHtjbGFzczpbZS51bnJlZihfKT8udHJdfSkpfSIke3J9Pjx0ZCR7QygiY29sc3BhbiIsbi5nZXRBbGxDZWxscygpLmxlbmd0aCl9IGRhdGEtc2xvdD0idGQiIGNsYXNzPSIke1IoQi52YWx1ZS50ZCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRkXX0pKX0iJHtyfT5gKSxGKHQuJHNsb3RzLCJleHBhbmRlZCIse3JvdzpufSxudWxsLGwsYSxyKSxsKCI8L3RkPjwvdHI+IikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sbykpLG4odyhlLnVucmVmKEUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChuLG8sbCxhKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKCJ0YWJsZSIse3JlZl9rZXk6InRhYmxlUmVmIixyZWY6b2UsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkIudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoXyk/LmJhc2VdfSl9LFtoLmNhcHRpb258fFAuY2FwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJjYXB0aW9uIix7a2V5OjAsImRhdGEtc2xvdCI6ImNhcHRpb24iLGNsYXNzOkIudmFsdWUuY2FwdGlvbih7Y2xhc3M6W2UudW5yZWYoXyk/LmNhcHRpb25dfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImNhcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoaC5jYXB0aW9uKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInRoZWFkIix7ImRhdGEtc2xvdCI6InRoZWFkIixjbGFzczpCLnZhbHVlLnRoZWFkKHtjbGFzczpbZS51bnJlZihfKT8udGhlYWRdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKGxlKS5nZXRIZWFkZXJHcm91cHMoKSxuPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0ciIse2tleTpuLmlkLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6Qi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyXX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qobi5oZWFkZXJzLG49PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRoIix7a2V5Om4uaWQsImRhdGEtcGlubmVkIjpuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpLHNjb3BlOm4uY29sU3Bhbj4xPyJjb2xncm91cCI6ImNvbCIsY29sc3BhbjpuLmNvbFNwYW4+MT9uLmNvbFNwYW46dm9pZCAwLHJvd3NwYW46bi5yb3dTcGFuPjE/bi5yb3dTcGFuOnZvaWQgMCwiZGF0YS1zbG90IjoidGgiLGNsYXNzOkIudmFsdWUudGgoe2NsYXNzOltlLnVucmVmKF8pPy50aCxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxuKV0scGlubmVkOiEhbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pLHN0eWxlOltnZXRDb2x1bW5TdHlsZXMobi5jb2x1bW4pLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uc3R5bGU/LnRoLG4pXX0sW2UucmVuZGVyU2xvdCh0LiRzbG90cyxgJHtuLmlkfS1oZWFkZXJgLGUubWVyZ2VQcm9wcyh7cmVmX2ZvcjohMH0sbi5nZXRDb250ZXh0KCkpLCgpPT5bbi5pc1BsYWNlaG9sZGVyP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoTikse2tleTowLHJlbmRlcjpuLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLHByb3BzOm4uZ2V0Q29udGV4dCgpfSxudWxsLDgsWyJyZW5kZXIiLCJwcm9wcyJdKSldKV0sMTQsWyJkYXRhLXBpbm5lZCIsInNjb3BlIiwiY29sc3BhbiIsInJvd3NwYW4iXSkpKSwxMjgpKV0sMikpKSwxMjgpKSxlLmNyZWF0ZVZOb2RlKCJ0ciIseyJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOkIudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihfKT8uc2VwYXJhdG9yXX0pfSxudWxsLDIpXSwyKSxlLmNyZWF0ZVZOb2RlKCJ0Ym9keSIseyJkYXRhLXNsb3QiOiJ0Ym9keSIsY2xhc3M6Qi52YWx1ZS50Ym9keSh7Y2xhc3M6W2UudW5yZWYoXyk/LnRib2R5XX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJib2R5LXRvcCIpLGFlLnZhbHVlLmxlbmd0aD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QocmUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCw4LFsicm93Il0pKSksMTI4KSksZS51bnJlZihkZSk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6MH0sW2NlLnZhbHVlPjA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygidHIiLHtrZXk6MCxzdHlsZTp7aGVpZ2h0OmAke2NlLnZhbHVlfXB4YH0sImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46ZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGh9LG51bGwsOCxbImNvbHNwYW4iXSldLDQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoZ2UudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LHtrZXk6c2UudmFsdWVbdC5pbmRleF0/LmlkPz9gdmlydHVhbC0ke3QuaW5kZXh9YH0sW3NlLnZhbHVlW3QuaW5kZXhdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihHKSx7a2V5OjAscm93OnNlLnZhbHVlW3QuaW5kZXhdLHN0eWxlOntoZWlnaHQ6YCR7dC5zaXplfXB4YH19LG51bGwsOCxbInJvdyIsInN0eWxlIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSkpLDEyOCkpLHBlLnZhbHVlPjA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygidHIiLHtrZXk6MSxzdHlsZTp7aGVpZ2h0OmAke3BlLnZhbHVlfXB4YH0sImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46ZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGh9LG51bGwsOCxbImNvbHNwYW4iXSldLDQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDY0KSk6KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3Qoc2UudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCw4LFsicm93Il0pKSksMTI4KSksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoaWUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCw4LFsicm93Il0pKSksMTI4KSldLDY0KSk6aC5sb2FkaW5nJiZQLmxvYWRpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygidHIiLHtrZXk6MX0sW2UuY3JlYXRlVk5vZGUoInRkIix7Y29sc3BhbjplLnVucmVmKGxlKS5nZXRBbGxMZWFmQ29sdW1ucygpLmxlbmd0aCwiZGF0YS1zbG90IjoibG9hZGluZyIsY2xhc3M6Qi52YWx1ZS5sb2FkaW5nKHtjbGFzczplLnVucmVmKF8pPy5sb2FkaW5nfSl9LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImxvYWRpbmciKV0sMTAsWyJjb2xzcGFuIl0pXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRyIix7a2V5OjJ9LFtlLmNyZWF0ZVZOb2RlKCJ0ZCIse2NvbHNwYW46ZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgsImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpCLnZhbHVlLmVtcHR5KHtjbGFzczplLnVucmVmKF8pPy5lbXB0eX0pfSxbZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJlbXB0eSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhoLmVtcHR5fHxlLnVucmVmKEkpKCJ0YWJsZS5ub0RhdGEiKSksMSldKV0sMTAsWyJjb2xzcGFuIl0pXSkpLGUucmVuZGVyU2xvdCh0LiRzbG90cywiYm9keS1ib3R0b20iKV0sMiksTC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0Zm9vdCIse2tleToxLCJkYXRhLXNsb3QiOiJ0Zm9vdCIsY2xhc3M6Qi52YWx1ZS50Zm9vdCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRmb290XX0pfSxbZS5jcmVhdGVWTm9kZSgidHIiLHsiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpCLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoXyk/LnNlcGFyYXRvcl19KX0sbnVsbCwyKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKGxlKS5nZXRGb290ZXJHcm91cHMoKSxuPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJ0ciIse2tleTpuLmlkLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6Qi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyXX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3Qobi5oZWFkZXJzLG49PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInRoIix7a2V5Om4uaWQsImRhdGEtcGlubmVkIjpuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpLGNvbHNwYW46bi5jb2xTcGFuPjE/bi5jb2xTcGFuOnZvaWQgMCxyb3dzcGFuOm4ucm93U3Bhbj4xP24ucm93U3Bhbjp2b2lkIDAsImRhdGEtc2xvdCI6InRoIixjbGFzczpCLnZhbHVlLnRoKHtjbGFzczpbZS51bnJlZihfKT8udGgscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5jbGFzcz8udGgsbildLHBpbm5lZDohIW4uY29sdW1uLmdldElzUGlubmVkKCl9KSxzdHlsZTpbZ2V0Q29sdW1uU3R5bGVzKG4uY29sdW1uKSxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnN0eWxlPy50aCxuKV19LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsYCR7bi5pZH0tZm9vdGVyYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+W24uaXNQbGFjZWhvbGRlcj9lLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE4pLHtrZXk6MCxyZW5kZXI6bi5jb2x1bW4uY29sdW1uRGVmLmZvb3Rlcixwcm9wczpuLmdldENvbnRleHQoKX0sbnVsbCw4LFsicmVuZGVyIiwicHJvcHMiXSkpXSldLDE0LFsiZGF0YS1waW5uZWQiLCJjb2xzcGFuIiwicm93c3BhbiJdKSkpLDEyOCkpXSwyKSkpLDEyOCkpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV07byhgPHRhYmxlIGRhdGEtc2xvdD0iYmFzZSIgY2xhc3M9IiR7UihCLnZhbHVlLmJhc2Uoe2NsYXNzOltlLnVucmVmKF8pPy5iYXNlXX0pKX0iJHthfT5gKSxoLmNhcHRpb258fFAuY2FwdGlvbj8obyhgPGNhcHRpb24gZGF0YS1zbG90PSJjYXB0aW9uIiBjbGFzcz0iJHtSKEIudmFsdWUuY2FwdGlvbih7Y2xhc3M6W2UudW5yZWYoXyk/LmNhcHRpb25dfSkpfSIke2F9PmApLEYodC4kc2xvdHMsImNhcHRpb24iLHt9LCgpPT57byhgJHtNKGguY2FwdGlvbil9YCl9LG8sbCxhKSxvKCI8L2NhcHRpb24+IikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKGA8dGhlYWQgZGF0YS1zbG90PSJ0aGVhZCIgY2xhc3M9IiR7UihCLnZhbHVlLnRoZWFkKHtjbGFzczpbZS51bnJlZihfKT8udGhlYWRdfSkpfSIke2F9Plx4M2MhLS1bLS1ceDNlYCkseChlLnVucmVmKGxlKS5nZXRIZWFkZXJHcm91cHMoKSxuPT57byhgPHRyIGRhdGEtc2xvdD0idHIiIGNsYXNzPSIke1IoQi52YWx1ZS50cih7Y2xhc3M6W2UudW5yZWYoXyk/LnRyXX0pKX0iJHthfT5ceDNjIS0tWy0tXHgzZWApLHgobi5oZWFkZXJzLG49PntvKGA8dGgke0MoImRhdGEtcGlubmVkIixuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpKX0ke0MoInNjb3BlIixuLmNvbFNwYW4+MT8iY29sZ3JvdXAiOiJjb2wiKX0ke0MoImNvbHNwYW4iLG4uY29sU3Bhbj4xP24uY29sU3Bhbjp2b2lkIDApfSR7Qygicm93c3BhbiIsbi5yb3dTcGFuPjE/bi5yb3dTcGFuOnZvaWQgMCl9IGRhdGEtc2xvdD0idGgiIGNsYXNzPSIke1IoQi52YWx1ZS50aCh7Y2xhc3M6W2UudW5yZWYoXyk/LnRoLHJlc29sdmVWYWx1ZShuLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uY2xhc3M/LnRoLG4pXSxwaW5uZWQ6ISFuLmNvbHVtbi5nZXRJc1Bpbm5lZCgpfSkpfSIgc3R5bGU9IiR7eShbZ2V0Q29sdW1uU3R5bGVzKG4uY29sdW1uKSxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnN0eWxlPy50aCxuKV0pfSIke2F9PmApLEYodC4kc2xvdHMsYCR7bi5pZH0taGVhZGVyYCxlLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LG4uZ2V0Q29udGV4dCgpKSwoKT0+e24uaXNQbGFjZWhvbGRlcj9vKCJceDNjIS0tLS1ceDNlIik6byh3KGUudW5yZWYoTikse3JlbmRlcjpuLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLHByb3BzOm4uZ2V0Q29udGV4dCgpfSxudWxsLGwsYSkpfSxvLGwsYSksbygiPC90aD4iKX0pLG8oIlx4M2MhLS1dLS1ceDNlPC90cj4iKX0pLG8oYFx4M2MhLS1dLS1ceDNlPHRyIGRhdGEtc2xvdD0ic2VwYXJhdG9yIiBjbGFzcz0iJHtSKEIudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZS51bnJlZihfKT8uc2VwYXJhdG9yXX0pKX0iJHthfT48L3RyPjwvdGhlYWQ+PHRib2R5IGRhdGEtc2xvdD0idGJvZHkiIGNsYXNzPSIke1IoQi52YWx1ZS50Ym9keSh7Y2xhc3M6W2UudW5yZWYoXyk/LnRib2R5XX0pKX0iJHthfT5gKSxGKHQuJHNsb3RzLCJib2R5LXRvcCIse30sbnVsbCxvLGwsYSksYWUudmFsdWUubGVuZ3RoPyhvKCJceDNjIS0tWy0tXHgzZVx4M2MhLS1bLS1ceDNlIikseChyZS52YWx1ZSx0PT57byh3KGUudW5yZWYoRykse2tleTp0LmlkLHJvdzp0fSxudWxsLGwsYSkpfSksbygiXHgzYyEtLV0tLVx4M2UiKSxlLnVucmVmKGRlKT8obygiXHgzYyEtLVstLVx4M2UiKSxjZS52YWx1ZT4wP28oYDx0ciBzdHlsZT0iJHt5KHtoZWlnaHQ6YCR7Y2UudmFsdWV9cHhgfSl9IiBhcmlhLWhpZGRlbj0idHJ1ZSIke2F9Pjx0ZCR7QygiY29sc3BhbiIsZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgpfSR7YX0+PC90ZD48L3RyPmApOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCJceDNjIS0tWy0tXHgzZSIpLHgoZ2UudmFsdWUsdD0+e28oIlx4M2MhLS1bLS1ceDNlIiksc2UudmFsdWVbdC5pbmRleF0/byh3KGUudW5yZWYoRykse3JvdzpzZS52YWx1ZVt0LmluZGV4XSxzdHlsZTp7aGVpZ2h0OmAke3Quc2l6ZX1weGB9fSxudWxsLGwsYSkpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCJceDNjIS0tXS0tXHgzZSIpfSksbygiXHgzYyEtLV0tLVx4M2UiKSxwZS52YWx1ZT4wP28oYDx0ciBzdHlsZT0iJHt5KHtoZWlnaHQ6YCR7cGUudmFsdWV9cHhgfSl9IiBhcmlhLWhpZGRlbj0idHJ1ZSIke2F9Pjx0ZCR7QygiY29sc3BhbiIsZS51bnJlZihsZSkuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgpfSR7YX0+PC90ZD48L3RyPmApOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCJceDNjIS0tXS0tXHgzZSIpKToobygiXHgzYyEtLVstLVx4M2UiKSx4KHNlLnZhbHVlLHQ9PntvKHcoZS51bnJlZihHKSx7a2V5OnQuaWQscm93OnR9LG51bGwsbCxhKSl9KSxvKCJceDNjIS0tXS0tXHgzZSIpKSxvKCJceDNjIS0tWy0tXHgzZSIpLHgoaWUudmFsdWUsdD0+e28odyhlLnVucmVmKEcpLHtrZXk6dC5pZCxyb3c6dH0sbnVsbCxsLGEpKX0pLG8oIlx4M2MhLS1dLS1ceDNlXHgzYyEtLV0tLVx4M2UiKSk6aC5sb2FkaW5nJiZQLmxvYWRpbmc/KG8oYDx0ciR7YX0+PHRkJHtDKCJjb2xzcGFuIixlLnVucmVmKGxlKS5nZXRBbGxMZWFmQ29sdW1ucygpLmxlbmd0aCl9IGRhdGEtc2xvdD0ibG9hZGluZyIgY2xhc3M9IiR7UihCLnZhbHVlLmxvYWRpbmcoe2NsYXNzOmUudW5yZWYoXyk/LmxvYWRpbmd9KSl9IiR7YX0+YCksRih0LiRzbG90cywibG9hZGluZyIse30sbnVsbCxvLGwsYSksbygiPC90ZD48L3RyPiIpKToobyhgPHRyJHthfT48dGQke0MoImNvbHNwYW4iLGUudW5yZWYobGUpLmdldEFsbExlYWZDb2x1bW5zKCkubGVuZ3RoKX0gZGF0YS1zbG90PSJlbXB0eSIgY2xhc3M9IiR7UihCLnZhbHVlLmVtcHR5KHtjbGFzczplLnVucmVmKF8pPy5lbXB0eX0pKX0iJHthfT5gKSxGKHQuJHNsb3RzLCJlbXB0eSIse30sKCk9PntvKGAke00oaC5lbXB0eXx8ZS51bnJlZihJKSgidGFibGUubm9EYXRhIikpfWApfSxvLGwsYSksbygiPC90ZD48L3RyPiIpKSxGKHQuJHNsb3RzLCJib2R5LWJvdHRvbSIse30sbnVsbCxvLGwsYSksbygiPC90Ym9keT4iKSxMLnZhbHVlPyhvKGA8dGZvb3QgZGF0YS1zbG90PSJ0Zm9vdCIgY2xhc3M9IiR7UihCLnZhbHVlLnRmb290KHtjbGFzczpbZS51bnJlZihfKT8udGZvb3RdfSkpfSIke2F9Pjx0ciBkYXRhLXNsb3Q9InNlcGFyYXRvciIgY2xhc3M9IiR7UihCLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UudW5yZWYoXyk/LnNlcGFyYXRvcl19KSl9IiR7YX0+PC90cj5ceDNjIS0tWy0tXHgzZWApLHgoZS51bnJlZihsZSkuZ2V0Rm9vdGVyR3JvdXBzKCksbj0+e28oYDx0ciBkYXRhLXNsb3Q9InRyIiBjbGFzcz0iJHtSKEIudmFsdWUudHIoe2NsYXNzOltlLnVucmVmKF8pPy50cl19KSl9IiR7YX0+XHgzYyEtLVstLVx4M2VgKSx4KG4uaGVhZGVycyxuPT57byhgPHRoJHtDKCJkYXRhLXBpbm5lZCIsbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKSl9JHtDKCJjb2xzcGFuIixuLmNvbFNwYW4+MT9uLmNvbFNwYW46dm9pZCAwKX0ke0MoInJvd3NwYW4iLG4ucm93U3Bhbj4xP24ucm93U3Bhbjp2b2lkIDApfSBkYXRhLXNsb3Q9InRoIiBjbGFzcz0iJHtSKEIudmFsdWUudGgoe2NsYXNzOltlLnVucmVmKF8pPy50aCxyZXNvbHZlVmFsdWUobi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxuKV0scGlubmVkOiEhbi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKX0iIHN0eWxlPSIke3koW2dldENvbHVtblN0eWxlcyhuLmNvbHVtbikscmVzb2x2ZVZhbHVlKG4uY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5zdHlsZT8udGgsbildKX0iJHthfT5gKSxGKHQuJHNsb3RzLGAke24uaWR9LWZvb3RlcmAsZS5tZXJnZVByb3BzKHtyZWZfZm9yOiEwfSxuLmdldENvbnRleHQoKSksKCk9PntuLmlzUGxhY2Vob2xkZXI/bygiXHgzYyEtLS0tXHgzZSIpOm8odyhlLnVucmVmKE4pLHtyZW5kZXI6bi5jb2x1bW4uY29sdW1uRGVmLmZvb3Rlcixwcm9wczpuLmdldENvbnRleHQoKX0sbnVsbCxsLGEpKX0sbyxsLGEpLG8oIjwvdGg+Iil9KSxvKCJceDNjIS0tXS0tXHgzZTwvdHI+Iil9KSxvKCJceDNjIS0tXS0tXHgzZTwvdGZvb3Q+IikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCI8L3RhYmxlPiIpfSksXzozfSxvKSksbih3KGUudW5yZWYodSksZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJyb290UmVmIixyZWY6bmUsYXM6aC5hc30sdC4kYXR0cnMseyJkYXRhLXNsb3QiOiJyb290IixjbGFzczpCLnZhbHVlLnJvb3Qoe2NsYXNzOltlLnVucmVmKF8pPy5yb290LGIuY2xhc3NdfSl9KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbixvLGwpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihEKSldO24odyhlLnVucmVmKEQpLG51bGwsbnVsbCxvLGwpKX0pLF86MX0sbykpLG4oIlx4M2MhLS1dLS1ceDNlIil9fX0pLFc9Sy5zZXR1cDtLLnNldHVwPSh0LG4pPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvVGFibGUudnVlIiksVz9XKHQsbik6dm9pZCAwfTtleHBvcnR7SyBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGUtMFVSbkM4T0gubWpzLm1hcAo=", "chunks/build/Textarea-BytpaMVH.mjs": "aW1wb3J0e3YgYXMgZSxTIGFzIGEsZCBhcyBpLGUgYXMgbixIIGFzIGwscyBhcyByLHQgYXMgcyxiIGFzIHQsZyBhcyBvLFAgYXMgdSxSIGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGcsbyBhcyBjLHEgYXMgcCxnIGFzIGYsaiBhcyB2fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7Y29uc3QgbT17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsYmFzZTpbInctZnVsbCByb3VuZGVkLW1kIGJvcmRlci0wIGFwcGVhcmFuY2Utbm9uZSBwbGFjZWhvbGRlcjp0ZXh0LWRpbW1lZCBmb2N1czpvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdLGxlYWRpbmc6ImFic29sdXRlIHN0YXJ0LTAgZmxleCBpdGVtcy1zdGFydCIsbGVhZGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmc6ImFic29sdXRlIGVuZC0wIGZsZXggaXRlbXMtc3RhcnQiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtZS1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC1zLW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9LHZlcnRpY2FsOntyb290OiJncm91cCBoYXMtZm9jdXMtdmlzaWJsZTp6LVsxXSIsYmFzZToiZ3JvdXAtbm90LW9ubHk6Z3JvdXAtZmlyc3Q6cm91bmRlZC1iLW5vbmUgZ3JvdXAtbm90LW9ubHk6Z3JvdXAtbGFzdDpyb3VuZGVkLXQtbm9uZSBncm91cC1ub3QtbGFzdDpncm91cC1ub3QtZmlyc3Q6cm91bmRlZC1ub25lIn19LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC1zbS80IGdhcC0xIixsZWFkaW5nOiJwcy0yIGluc2V0LXktMSIsdHJhaWxpbmc6InBlLTIgaW5zZXQteS0xIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LHNtOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtc20vNCBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUgaW5zZXQteS0xLjUiLHRyYWlsaW5nOiJwZS0yLjUgaW5zZXQteS0xLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1iYXNlLzUgZ2FwLTEuNSIsbGVhZGluZzoicHMtMi41IGluc2V0LXktMS41Iix0cmFpbGluZzoicGUtMi41IGluc2V0LXktMS41IixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSJ9LGxnOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlLzUgZ2FwLTIiLGxlYWRpbmc6InBzLTMgaW5zZXQteS0yIix0cmFpbGluZzoicGUtMyBpbnNldC15LTIiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmc6InBzLTMgaW5zZXQteS0yIix0cmFpbGluZzoicGUtMyBpbnNldC15LTIiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9LGF1dG9yZXNpemU6e3RydWU6e2Jhc2U6InJlc2l6ZS1ub25lIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW52ZXJ0ZWQifSx7bGVhZGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBzLTcifSx7bGVhZGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBzLTgifSx7bGVhZGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBzLTkifSx7bGVhZGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBzLTEwIn0se2xlYWRpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwcy0xMSJ9LHt0cmFpbGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBlLTcifSx7dHJhaWxpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwZS04In0se3RyYWlsaW5nOiEwLHNpemU6Im1kIixjbGFzczoicGUtOSJ9LHt0cmFpbGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBlLTEwIn0se3RyYWlsaW5nOiEwLHNpemU6InhsIixjbGFzczoicGUtMTEifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtmaXhlZDohMSxzaXplOiJ4cyIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToic20iLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6Im1kIixjbGFzczoibWQ6dGV4dC1zbSJ9LHtmaXhlZDohMSxzaXplOiJsZyIsY2xhc3M6Im1kOnRleHQtc20ifV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCIsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUifX0sYj1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVUZXh0YXJlYSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXNEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfSxhdXRvcmVzaXplOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9yZXNpemVEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyb3dzOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjN9LG1heHJvd3M6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZpeGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsTW9kaWZpZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwiYmx1ciIsImNoYW5nZSJdLHNldHVwKGIse2V4cG9zZTp4LGVtaXQ6eX0pe2NvbnN0IGg9Yix6PXksST1lLnVzZVNsb3RzKCkscT1hKGgsIm1vZGVsVmFsdWUiLHose2RlZmF1bHRWYWx1ZTpoLmRlZmF1bHRWYWx1ZX0pLHc9aSgpLEI9bigidGV4dGFyZWEiLGgpLHtlbWl0Rm9ybUZvY3VzOmssZW1pdEZvcm1CbHVyOlMsZW1pdEZvcm1JbnB1dDpBLGVtaXRGb3JtQ2hhbmdlOiQsc2l6ZTpOLGNvbG9yOlYsaWQ6UixuYW1lOkMsaGlnaGxpZ2h0Ol8sZGlzYWJsZWQ6TSxhcmlhQXR0cnM6Rn09bChoLHtkZWZlcklucHV0VmFsaWRhdGlvbjohMH0pLHtpc0xlYWRpbmc6aixpc1RyYWlsaW5nOlAsbGVhZGluZ0ljb25OYW1lOlQsdHJhaWxpbmdJY29uTmFtZTpIfT1yKGgpLE89ZS5jb21wdXRlZCgoKT0+cyh7ZXh0ZW5kOnMobSksLi4udy51aT8udGV4dGFyZWF8fHt9fSkoe2NvbG9yOlYudmFsdWUsdmFyaWFudDpoLnZhcmlhbnQsc2l6ZTpOPy52YWx1ZSxsb2FkaW5nOmgubG9hZGluZyxoaWdobGlnaHQ6Xy52YWx1ZSxmaXhlZDpoLmZpeGVkLGF1dG9yZXNpemU6aC5hdXRvcmVzaXplLGxlYWRpbmc6ai52YWx1ZXx8ISFoLmF2YXRhcnx8ISFJLmxlYWRpbmcsdHJhaWxpbmc6UC52YWx1ZXx8ISFJLnRyYWlsaW5nfSkpLEQ9ZS51c2VUZW1wbGF0ZVJlZigidGV4dGFyZWFSZWYiKTtmdW5jdGlvbiB1cGRhdGVJbnB1dChlKXshaC5tb2RlbE1vZGlmaWVycz8udHJpbXx8InN0cmluZyIhPXR5cGVvZiBlJiZudWxsIT1lfHwoZT1lPy50cmltKCk/P251bGwpLGgubW9kZWxNb2RpZmllcnM/Lm51bWJlciYmKGU9ZChlKSksaC5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJihlfHw9bnVsbCksaC5tb2RlbE1vZGlmaWVycz8ub3B0aW9uYWwmJiFoLm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmbnVsbCE9PWUmJihlfHw9dm9pZCAwKSxxLnZhbHVlPWUsQSgpfWZ1bmN0aW9uIG9uSW5wdXQoZSl7YXV0b1Jlc2l6ZSgpLGgubW9kZWxNb2RpZmllcnM/Lmxhenl8fHVwZGF0ZUlucHV0KGUudGFyZ2V0LnZhbHVlKX1mdW5jdGlvbiBvbkNoYW5nZShlKXtjb25zdCBhPWUudGFyZ2V0LnZhbHVlO2gubW9kZWxNb2RpZmllcnM/LmxhenkmJnVwZGF0ZUlucHV0KGEpLGgubW9kZWxNb2RpZmllcnM/LnRyaW0mJihlLnRhcmdldC52YWx1ZT1hLnRyaW0oKSksJCgpLHooImNoYW5nZSIsZSl9ZnVuY3Rpb24gb25CbHVyKGUpe1MoKSx6KCJibHVyIixlKX1mdW5jdGlvbiBhdXRvUmVzaXplKCl7aWYoaC5hdXRvcmVzaXplJiZELnZhbHVlKXtELnZhbHVlLnJvd3M9aC5yb3dzO2NvbnN0IGU9RC52YWx1ZS5zdHlsZS5vdmVyZmxvdztELnZhbHVlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2NvbnN0IGE9KHZvaWQgMCkuZ2V0Q29tcHV0ZWRTdHlsZShELnZhbHVlKSxpPU51bWJlci5wYXJzZUludChhLnBhZGRpbmdUb3ApK051bWJlci5wYXJzZUludChhLnBhZGRpbmdCb3R0b20pLG49TnVtYmVyLnBhcnNlSW50KGEubGluZUhlaWdodCkse3Njcm9sbEhlaWdodDpsfT1ELnZhbHVlLHI9KGwtaSkvbjtyPmgucm93cyYmKEQudmFsdWUucm93cz1oLm1heHJvd3M/TWF0aC5taW4ocixoLm1heHJvd3MpOnIpLEQudmFsdWUuc3R5bGUub3ZlcmZsb3c9ZX19cmV0dXJuIGUud2F0Y2gocSwoKT0+e2UubmV4dFRpY2soYXV0b1Jlc2l6ZSl9KSx4KHt0ZXh0YXJlYVJlZjpELGF1dG9SZXNpemU6YXV0b1Jlc2l6ZX0pLChhLGksbixsKT0+e2xldCByO2koZyhlLnVucmVmKHUpLGUubWVyZ2VQcm9wcyh7YXM6Yi5hcywiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Ty52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZihCKT8ucm9vdCxoLmNsYXNzXX0pfSxsKSx7ZGVmYXVsdDplLndpdGhDdHgoKGksbixsLHMpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoInRleHRhcmVhIixlLm1lcmdlUHJvcHMoe2lkOmUudW5yZWYoUikscmVmX2tleToidGV4dGFyZWFSZWYiLHJlZjpELHZhbHVlOmUudW5yZWYocSksbmFtZTplLnVucmVmKEMpLHJvd3M6Yi5yb3dzLHBsYWNlaG9sZGVyOmIucGxhY2Vob2xkZXIsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOk8udmFsdWUuYmFzZSh7Y2xhc3M6ZS51bnJlZihCKT8uYmFzZX0pLGRpc2FibGVkOmUudW5yZWYoTSkscmVxdWlyZWQ6Yi5yZXF1aXJlZH0sey4uLmEuJGF0dHJzLC4uLmUudW5yZWYoRil9LHtvbklucHV0Om9uSW5wdXQsb25CbHVyOm9uQmx1cixvbkNoYW5nZTpvbkNoYW5nZSxvbkZvY3VzOmUudW5yZWYoayl9KSxudWxsLDE2LFsiaWQiLCJ2YWx1ZSIsIm5hbWUiLCJyb3dzIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwib25Gb2N1cyJdKSxlLnJlbmRlclNsb3QoYS4kc2xvdHMsImRlZmF1bHQiLHt1aTpPLnZhbHVlfSksZS51bnJlZihqKXx8Yi5hdmF0YXJ8fEkubGVhZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOk8udmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ30pfSxbZS5yZW5kZXJTbG90KGEuJHNsb3RzLCJsZWFkaW5nIix7dWk6Ty52YWx1ZX0sKCk9PltlLnVucmVmKGopJiZlLnVucmVmKFQpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodCx7a2V5OjAsbmFtZTplLnVucmVmKFQpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6Ty52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpiLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKG8sZS5tZXJnZVByb3BzKHtrZXk6MSxzaXplOmUudW5yZWYoQik/LmxlYWRpbmdBdmF0YXJTaXplfHxPLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LGIuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6Ty52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczplLnVucmVmKEIpPy5sZWFkaW5nQXZhdGFyfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnVucmVmKFApfHxJLnRyYWlsaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOk8udmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoQik/LnRyYWlsaW5nfSl9LFtlLnJlbmRlclNsb3QoYS4kc2xvdHMsInRyYWlsaW5nIix7dWk6Ty52YWx1ZX0sKCk9PltlLnVucmVmKEgpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sodCx7a2V5OjAsbmFtZTplLnVucmVmKEgpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOk8udmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczplLnVucmVmKEIpPy50cmFpbGluZ0ljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07bihgPHRleHRhcmVhJHtjKHI9ZS5tZXJnZVByb3BzKHtpZDplLnVucmVmKFIpLHJlZl9rZXk6InRleHRhcmVhUmVmIixyZWY6RCx2YWx1ZTplLnVucmVmKHEpLG5hbWU6ZS51bnJlZihDKSxyb3dzOmIucm93cyxwbGFjZWhvbGRlcjpiLnBsYWNlaG9sZGVyLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpPLnZhbHVlLmJhc2Uoe2NsYXNzOmUudW5yZWYoQik/LmJhc2V9KSxkaXNhYmxlZDplLnVucmVmKE0pLHJlcXVpcmVkOmIucmVxdWlyZWR9LHsuLi5hLiRhdHRycywuLi5lLnVucmVmKEYpfSksInRleHRhcmVhIil9JHtzfT4ke3AoInZhbHVlImluIHI/ci52YWx1ZToiIil9PC90ZXh0YXJlYT5gKSxmKGEuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Ty52YWx1ZX0sbnVsbCxuLGwscyksZS51bnJlZihqKXx8Yi5hdmF0YXJ8fEkubGVhZGluZz8obihgPHNwYW4gZGF0YS1zbG90PSJsZWFkaW5nIiBjbGFzcz0iJHt2KE8udmFsdWUubGVhZGluZyh7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ30pKX0iJHtzfT5gKSxmKGEuJHNsb3RzLCJsZWFkaW5nIix7dWk6Ty52YWx1ZX0sKCk9PntlLnVucmVmKGopJiZlLnVucmVmKFQpP24oZyh0LHtuYW1lOmUudW5yZWYoVCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpPLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczplLnVucmVmKEIpPy5sZWFkaW5nSWNvbn0pfSxudWxsLGwscykpOmIuYXZhdGFyP24oZyhvLGUubWVyZ2VQcm9wcyh7c2l6ZTplLnVucmVmKEIpPy5sZWFkaW5nQXZhdGFyU2l6ZXx8Ty52YWx1ZS5sZWFkaW5nQXZhdGFyU2l6ZSgpfSxiLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxlYWRpbmdBdmF0YXIiLGNsYXNzOk8udmFsdWUubGVhZGluZ0F2YXRhcih7Y2xhc3M6ZS51bnJlZihCKT8ubGVhZGluZ0F2YXRhcn0pfSksbnVsbCxsLHMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4sbCxzKSxuKCI8L3NwYW4+IikpOm4oIlx4M2MhLS0tLVx4M2UiKSxlLnVucmVmKFApfHxJLnRyYWlsaW5nPyhuKGA8c3BhbiBkYXRhLXNsb3Q9InRyYWlsaW5nIiBjbGFzcz0iJHt2KE8udmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoQik/LnRyYWlsaW5nfSkpfSIke3N9PmApLGYoYS4kc2xvdHMsInRyYWlsaW5nIix7dWk6Ty52YWx1ZX0sKCk9PntlLnVucmVmKEgpP24oZyh0LHtuYW1lOmUudW5yZWYoSCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6Ty52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOmUudW5yZWYoQik/LnRyYWlsaW5nSWNvbn0pfSxudWxsLGwscykpOm4oIlx4M2MhLS0tLVx4M2UiKX0sbixsLHMpLG4oIjwvc3Bhbj4iKSk6bigiXHgzYyEtLS0tXHgzZSIpfSksXzozfSxuKSl9fX0pLHg9Yi5zZXR1cDtiLnNldHVwPShhLGkpPT57Y29uc3Qgbj1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvVGV4dGFyZWEudnVlIikseD94KGEsaSk6dm9pZCAwfTtleHBvcnR7YiBhcyBffTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dGFyZWEtQnl0cGFNVkgubWpzLm1hcAo=", "chunks/build/Tooltip-BP8zb8DK.mjs": "aW1wb3J0e2FFIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt2IGFzIHQsZCBhcyByLGUgYXMgbyxhcyBhcyBhLEUgYXMgbixGIGFzIGwsRyBhcyBzLHQgYXMgaSxKIGFzIGQsTSBhcyB1LFAgYXMgYyxUIGFzIHAsUSBhcyBmLFMgYXMgZyxhdCBhcyBtLG0gYXMgeSxZIGFzIHYsbCBhcyBrfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7UCBhcyBiLGEgYXMgaCxiIGFzIEIsZCBhcyBDfWZyb20iLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydHt1IGFzIHEsRCBhcyB4fWZyb20iLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydHtfIGFzIHcsYSBhcyBTfWZyb20iLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnR7ZiBhcyBfLGcgYXMgUCxqIGFzIE4scSBhcyBULHQgYXMgT31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO3ZhciBEPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlRvb2x0aXBBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdCByPWU7cmV0dXJuIHUoKSwoZSxvKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKGgpLHQubm9ybWFsaXplUHJvcHModC5ndWFyZFJlYWN0aXZlUHJvcHMocikpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pO2NvbnN0W1YsJF09eSgiVG9vbHRpcFJvb3QiKTt2YXIgej10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJUb29sdGlwUm9vdCIscHJvcHM6e2RlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChlLHtlbWl0OnJ9KXtjb25zdCBvPWUsbj1yO3UoKTtjb25zdCBsPWEoKSxzPXQuY29tcHV0ZWQoKCk9Pm8uZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ/P2wuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQudmFsdWUpLGk9dC5jb21wdXRlZCgoKT0+by5kaXNhYmxlQ2xvc2luZ1RyaWdnZXI/P2wuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlKSxkPXQuY29tcHV0ZWQoKCk9Pm8uZGlzYWJsZWQ/P2wuZGlzYWJsZWQudmFsdWUpLGM9dC5jb21wdXRlZCgoKT0+by5kZWxheUR1cmF0aW9uPz9sLmRlbGF5RHVyYXRpb24udmFsdWUpLHA9dC5jb21wdXRlZCgoKT0+by5pZ25vcmVOb25LZXlib2FyZEZvY3VzPz9sLmlnbm9yZU5vbktleWJvYXJkRm9jdXMudmFsdWUpLGY9ZyhvLCJvcGVuIixuLHtkZWZhdWx0VmFsdWU6by5kZWZhdWx0T3BlbixwYXNzaXZlOnZvaWQgMD09PW8ub3Blbn0pO3Qud2F0Y2goZixlPT57bC5vbkNsb3NlJiYoZT8obC5vbk9wZW4oKSwodm9pZCAwKS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidG9vbHRpcC5vcGVuIikpKTpsLm9uQ2xvc2UoKSl9KTtjb25zdCB5PXQucmVmKCExKSx2PXQucmVmKCksaz10LmNvbXB1dGVkKCgpPT5mLnZhbHVlP3kudmFsdWU/ImRlbGF5ZWQtb3BlbiI6Imluc3RhbnQtb3BlbiI6ImNsb3NlZCIpLHtzdGFydDpiLHN0b3A6aH09bSgoKT0+e3kudmFsdWU9ITAsZi52YWx1ZT0hMH0sYyx7aW1tZWRpYXRlOiExfSk7ZnVuY3Rpb24gaGFuZGxlT3Blbigpe2goKSx5LnZhbHVlPSExLGYudmFsdWU9ITB9ZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKXtoKCksZi52YWx1ZT0hMX1yZXR1cm4gJCh7Y29udGVudElkOiIiLG9wZW46ZixzdGF0ZUF0dHJpYnV0ZTprLHRyaWdnZXI6dixvblRyaWdnZXJDaGFuZ2UoZSl7di52YWx1ZT1lfSxvblRyaWdnZXJFbnRlcigpe2wuaXNPcGVuRGVsYXllZC52YWx1ZT9iKCk6aGFuZGxlT3BlbigpfSxvblRyaWdnZXJMZWF2ZSgpe3MudmFsdWU/aGFuZGxlQ2xvc2UoKTpoKCl9LG9uT3BlbjpoYW5kbGVPcGVuLG9uQ2xvc2U6aGFuZGxlQ2xvc2UsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6cyxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6aSxkaXNhYmxlZDpkLGlnbm9yZU5vbktleWJvYXJkRm9jdXM6cH0pLChlLHIpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoQiksbnVsbCx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnQudW5yZWYoZil9KV0pLF86M30pKX19KSxSPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlRvb2x0aXBDb250ZW50SW1wbCIscHJvcHM6e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3Qgbj1yLGw9byxzPVYoKSxpPWEoKSx7Zm9yd2FyZFJlZjpkLGN1cnJlbnRFbGVtZW50OmN9PXUoKSxwPXQuY29tcHV0ZWQoKCk9Pm4uYXJpYUxhYmVsfHxjLnZhbHVlPy50ZXh0Q29udGVudCksZj10LmNvbXB1dGVkKCgpPT57Y29uc3R7YXJpYUxhYmVsOnQsLi4ucn09bjtyZXR1cm4gZShyLGkuY29udGVudC52YWx1ZT8/e30se3NpZGU6InRvcCIsc2lkZU9mZnNldDowLGFsaWduOiJjZW50ZXIiLGF2b2lkQ29sbGlzaW9uczohMCxjb2xsaXNpb25Cb3VuZGFyeTpbXSxjb2xsaXNpb25QYWRkaW5nOjAsYXJyb3dQYWRkaW5nOjAsc3RpY2t5OiJwYXJ0aWFsIixoaWRlV2hlbkRldGFjaGVkOiExfSl9KTtyZXR1cm4oZSxyKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKHgpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uRXNjYXBlS2V5RG93bjpyWzBdfHwoclswXT1lPT5sKCJlc2NhcGVLZXlEb3duIixlKSksb25Qb2ludGVyRG93bk91dHNpZGU6clsxXXx8KHJbMV09ZT0+e3QudW5yZWYocykuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlJiZ0LnVucmVmKHMpLnRyaWdnZXIudmFsdWU/LmNvbnRhaW5zKGUudGFyZ2V0KSYmZS5wcmV2ZW50RGVmYXVsdCgpLGwoInBvaW50ZXJEb3duT3V0c2lkZSIsZSl9KSxvbkZvY3VzT3V0c2lkZTpyWzJdfHwoclsyXT10LndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25EaXNtaXNzOnJbM118fChyWzNdPWU9PnQudW5yZWYocykub25DbG9zZSgpKX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKEMpLHQubWVyZ2VQcm9wcyh7cmVmOnQudW5yZWYoZCksImRhdGEtc3RhdGUiOnQudW5yZWYocykuc3RhdGVBdHRyaWJ1dGUudmFsdWV9LHsuLi5lLiRhdHRycywuLi5mLnZhbHVlfSx7c3R5bGU6eyItLXJla2EtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4iOiJ2YXIoLS1yZWthLXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKSIsIi0tcmVrYS10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmVrYS10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLXRvb2x0aXAtdHJpZ2dlci13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCkiLCItLXJla2EtdG9vbHRpcC10cmlnZ2VyLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn19KSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKSx0LmNyZWF0ZVZOb2RlKHQudW5yZWYodikse2lkOnQudW5yZWYocykuY29udGVudElkLHJvbGU6InRvb2x0aXAifSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyhwLnZhbHVlKSwxKV0pLF86MX0sOCxbImlkIl0pXSksXzozfSwxNixbImRhdGEtc3RhdGUiXSldKSxfOjN9KSl9fSksRj10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJUb29sdGlwQ29udGVudEhvdmVyYWJsZSIscHJvcHM6e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3Qgcj1rKGUpLHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6bn09dSgpLHt0cmlnZ2VyOmwsb25DbG9zZTpzfT1WKCksaT1hKCkse2lzUG9pbnRlckluVHJhbnNpdDpkLG9uUG9pbnRlckV4aXQ6Y309UyhsLG4pO3JldHVybiBpLmlzUG9pbnRlckluVHJhbnNpdFJlZj1kLGMoKCk9PntzKCl9KSwoZSxhKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayhSLHQubWVyZ2VQcm9wcyh7cmVmOnQudW5yZWYobyl9LHQudW5yZWYocikpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGo9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9vbHRpcENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIl0sc2V0dXAoZSx7ZW1pdDpyfSl7Y29uc3Qgbz1lLGE9cixsPVYoKSxzPW4obyxhKSx7Zm9yd2FyZFJlZjppfT11KCk7cmV0dXJuKGUscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihmKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHQudW5yZWYobCkub3Blbi52YWx1ZX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bKHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnJlc29sdmVEeW5hbWljQ29tcG9uZW50KHQudW5yZWYobCkuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQudmFsdWU/UjpGKSx0Lm1lcmdlUHJvcHMoe3JlZjp0LnVucmVmKGkpfSx0LnVucmVmKHMpKSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEw9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9vbHRpcFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHI9ZTtyZXR1cm4oZSxvKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKHApLHQubm9ybWFsaXplUHJvcHModC5ndWFyZFJlYWN0aXZlUHJvcHMocikpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEs9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9vbHRpcFRyaWdnZXIiLHByb3BzOntyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChlKXtjb25zdCByPWUsbz1WKCksbj1hKCk7by5jb250ZW50SWR8fD1xKHZvaWQgMCwicmVrYS10b29sdGlwLWNvbnRlbnQiKTtjb25zdHtmb3J3YXJkUmVmOmx9PXUoKSxzPXQucmVmKCExKSxpPXQucmVmKCExKSxkPXQuY29tcHV0ZWQoKCk9Pm8uZGlzYWJsZWQudmFsdWU/e306e2NsaWNrOmhhbmRsZUNsaWNrLGZvY3VzOmhhbmRsZUZvY3VzLHBvaW50ZXJtb3ZlOmhhbmRsZVBvaW50ZXJNb3ZlLHBvaW50ZXJsZWF2ZTpoYW5kbGVQb2ludGVyTGVhdmUscG9pbnRlcmRvd246aGFuZGxlUG9pbnRlckRvd24sYmx1cjpoYW5kbGVCbHVyfSk7ZnVuY3Rpb24gaGFuZGxlUG9pbnRlclVwKCl7c2V0VGltZW91dCgoKT0+e3MudmFsdWU9ITF9LDEpfWZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJEb3duKCl7by5vcGVuJiYhby5kaXNhYmxlQ2xvc2luZ1RyaWdnZXIudmFsdWUmJm8ub25DbG9zZSgpLHMudmFsdWU9ITAsKHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixoYW5kbGVQb2ludGVyVXAse29uY2U6ITB9KX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyTW92ZShlKXsidG91Y2giIT09ZS5wb2ludGVyVHlwZSYmKGkudmFsdWV8fG4uaXNQb2ludGVySW5UcmFuc2l0UmVmLnZhbHVlfHwoby5vblRyaWdnZXJFbnRlcigpLGkudmFsdWU9ITApKX1mdW5jdGlvbiBoYW5kbGVQb2ludGVyTGVhdmUoKXtvLm9uVHJpZ2dlckxlYXZlKCksaS52YWx1ZT0hMX1mdW5jdGlvbiBoYW5kbGVGb2N1cyhlKXtzLnZhbHVlfHxvLmlnbm9yZU5vbktleWJvYXJkRm9jdXMudmFsdWUmJiFlLnRhcmdldC5tYXRjaGVzPy4oIjpmb2N1cy12aXNpYmxlIil8fG8ub25PcGVuKCl9ZnVuY3Rpb24gaGFuZGxlQmx1cigpe28ub25DbG9zZSgpfWZ1bmN0aW9uIGhhbmRsZUNsaWNrKCl7by5kaXNhYmxlQ2xvc2luZ1RyaWdnZXIudmFsdWV8fG8ub25DbG9zZSgpfXJldHVybihlLGEpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoYikseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOmUucmVmZXJlbmNlfSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoYyksdC5tZXJnZVByb3BzKHtyZWY6dC51bnJlZihsKSwiYXJpYS1kZXNjcmliZWRieSI6dC51bnJlZihvKS5vcGVuLnZhbHVlP3QudW5yZWYobykuY29udGVudElkOnZvaWQgMCwiZGF0YS1zdGF0ZSI6dC51bnJlZihvKS5zdGF0ZUF0dHJpYnV0ZS52YWx1ZSxhczplLmFzLCJhcy1jaGlsZCI6ci5hc0NoaWxkLCJkYXRhLWdyYWNlLWFyZWEtdHJpZ2dlciI6IiJ9LHQudG9IYW5kbGVycyhkLnZhbHVlKSkse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1kZXNjcmliZWRieSIsImRhdGEtc3RhdGUiLCJhcyIsImFzLWNoaWxkIl0pXSksXzozfSw4LFsicmVmZXJlbmNlIl0pKX19KTtjb25zdCBFPXtzbG90czp7Y29udGVudDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgYmctZGVmYXVsdCB0ZXh0LWhpZ2hsaWdodGVkIHNoYWRvdy1zbSByb3VuZGVkLXNtIHJpbmcgcmluZy1kZWZhdWx0IGgtNiBweC0yLjUgcHktMSB0ZXh0LXhzIHNlbGVjdC1ub25lIGRhdGEtW3N0YXRlPWRlbGF5ZWQtb3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIG9yaWdpbi0oLS1yZWthLXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSBwb2ludGVyLWV2ZW50cy1hdXRvIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsdGV4dDoidHJ1bmNhdGUiLGtiZHM6ImhpZGRlbiBsZzppbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTAuNSBub3QtZmlyc3Qtb2YtdHlwZTpiZWZvcmU6Y29udGVudC1bJ8K3J10gbm90LWZpcnN0LW9mLXR5cGU6YmVmb3JlOm1lLTAuNSIsa2Jkc1NpemU6InNtIn19LEk9e19fbmFtZToiVVRvb2x0aXAiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnt0ZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sa2Jkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxkaXNhYmxlSG92ZXJhYmxlQ29udGVudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saWdub3JlTm9uS2V5Ym9hcmRGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKHUse2VtaXQ6Y30pe2NvbnN0IHA9dSxmPWMsZz10LnVzZVNsb3RzKCksbT1yKCkseT1vKCJ0b29sdGlwIixwKSx2PWEoKSxrPW4obChwLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJkZWxheUR1cmF0aW9uIiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQiLCJkaXNhYmxlQ2xvc2luZ1RyaWdnZXIiLCJpZ25vcmVOb25LZXlib2FyZEZvY3VzIiksZiksYj1zKHQudG9SZWYoKCk9PnAucG9ydGFsKSksaD10LnRvUmVmKCgpPT5lKHAuY29udGVudCx2LmNvbnRlbnQudmFsdWUse3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDo4LGNvbGxpc2lvblBhZGRpbmc6OH0pKSxCPXQudG9SZWYoKCk9PmUocC5hcnJvdyx7cm91bmRlZDohMH0pKSxDPXQuY29tcHV0ZWQoKCk9Pmkoe2V4dGVuZDppKEUpLC4uLm0udWk/LnRvb2x0aXB8fHt9fSkoe3NpZGU6aC52YWx1ZS5zaWRlfSkpO3JldHVybihlLHIsbyxhKT0+e3IoXyh0LnVucmVmKHopLHQubWVyZ2VQcm9wcyh0LnVucmVmKGspLHtkaXNhYmxlZDohKHUudGV4dHx8dS5rYmRzPy5sZW5ndGh8fGcuY29udGVudCl8fHAuZGlzYWJsZWR9LGEpLHtkZWZhdWx0OnQud2l0aEN0eCgoe29wZW46cn0sbyxhLG4pPT57aWYoIW8pcmV0dXJuW2cuZGVmYXVsdHx8dS5yZWZlcmVuY2U/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKEspLHQubWVyZ2VQcm9wcyh7a2V5OjB9LGUuJGF0dHJzLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTp1LnJlZmVyZW5jZSxjbGFzczpwLmNsYXNzfSkse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpyfSldKSxfOjJ9LDEwNDAsWyJyZWZlcmVuY2UiLCJjbGFzcyJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuY3JlYXRlVk5vZGUodC51bnJlZihMKSx0LnVucmVmKGIpLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihkKSxudWxsLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUodC51bnJlZihqKSx0Lm1lcmdlUHJvcHMoaC52YWx1ZSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkMudmFsdWUuY29udGVudCh7Y2xhc3M6WyFnLmRlZmF1bHQmJnAuY2xhc3MsdC51bnJlZih5KT8uY29udGVudF19KX0pLHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QucmVuZGVyU2xvdChlLiRzbG90cywiY29udGVudCIse3VpOkMudmFsdWV9LCgpPT5bdS50ZXh0Pyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoidGV4dCIsY2xhc3M6Qy52YWx1ZS50ZXh0KHtjbGFzczp0LnVucmVmKHkpPy50ZXh0fSl9LHQudG9EaXNwbGF5U3RyaW5nKHUudGV4dCksMykpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx1LmtiZHM/Lmxlbmd0aD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6ImtiZHMiLGNsYXNzOkMudmFsdWUua2Jkcyh7Y2xhc3M6dC51bnJlZih5KT8ua2Jkc30pfSxbKHQub3BlbkJsb2NrKCEwKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQsbnVsbCx0LnJlbmRlckxpc3QodS5rYmRzLChlLHIpPT4odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHcsdC5tZXJnZVByb3BzKHtrZXk6cixzaXplOnQudW5yZWYoeSk/LmtiZHNTaXplfHxDLnZhbHVlLmtiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIGU/e3ZhbHVlOmV9OmUpLG51bGwsMTYsWyJzaXplIl0pKSksMTI4KSldLDIpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSx1LmFycm93Pyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodC51bnJlZihEKSx0Lm1lcmdlUHJvcHMoe2tleTowfSxCLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOkMudmFsdWUuYXJyb3coe2NsYXNzOnQudW5yZWYoeSk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86M30sMTYsWyJjbGFzcyJdKV0pLF86M30pXSksXzozfSwxNildO2cuZGVmYXVsdHx8dS5yZWZlcmVuY2U/byhfKHQudW5yZWYoSyksdC5tZXJnZVByb3BzKGUuJGF0dHJzLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTp1LnJlZmVyZW5jZSxjbGFzczpwLmNsYXNzfSkse2RlZmF1bHQ6dC53aXRoQ3R4KChvLGEsbixsKT0+e2lmKCFhKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnJ9KV07UChlLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0sbnVsbCxhLG4sbCl9KSxfOjJ9LGEsbikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKF8odC51bnJlZihMKSx0LnVucmVmKGIpLHtkZWZhdWx0OnQud2l0aEN0eCgocixvLGEsbik9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGQpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh0LnVucmVmKGopLHQubWVyZ2VQcm9wcyhoLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qy52YWx1ZS5jb250ZW50KHtjbGFzczpbIWcuZGVmYXVsdCYmcC5jbGFzcyx0LnVucmVmKHkpPy5jb250ZW50XX0pfSkse2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5yZW5kZXJTbG90KGUuJHNsb3RzLCJjb250ZW50Iix7dWk6Qy52YWx1ZX0sKCk9Plt1LnRleHQ/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ0ZXh0IixjbGFzczpDLnZhbHVlLnRleHQoe2NsYXNzOnQudW5yZWYoeSk/LnRleHR9KX0sdC50b0Rpc3BsYXlTdHJpbmcodS50ZXh0KSwzKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHUua2Jkcz8ubGVuZ3RoPyh0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90Ijoia2JkcyIsY2xhc3M6Qy52YWx1ZS5rYmRzKHtjbGFzczp0LnVucmVmKHkpPy5rYmRzfSl9LFsodC5vcGVuQmxvY2soITApLHQuY3JlYXRlQmxvY2sodC5GcmFnbWVudCxudWxsLHQucmVuZGVyTGlzdCh1LmtiZHMsKGUscik9Pih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodyx0Lm1lcmdlUHJvcHMoe2tleTpyLHNpemU6dC51bnJlZih5KT8ua2Jkc1NpemV8fEMudmFsdWUua2Jkc1NpemUoKX0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgZT97dmFsdWU6ZX06ZSksbnVsbCwxNixbInNpemUiXSkpKSwxMjgpKV0sMikpOnQuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLHUuYXJyb3c/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh0LnVucmVmKEQpLHQubWVyZ2VQcm9wcyh7a2V5OjB9LEIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6Qy52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZih5KT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldO28oXyh0LnVucmVmKGQpLG51bGwse2RlZmF1bHQ6dC53aXRoQ3R4KChyLG8sYSxuKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKHQudW5yZWYoaiksdC5tZXJnZVByb3BzKGgudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpDLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshZy5kZWZhdWx0JiZwLmNsYXNzLHQudW5yZWYoeSk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQiLHt1aTpDLnZhbHVlfSwoKT0+W3UudGV4dD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6InRleHQiLGNsYXNzOkMudmFsdWUudGV4dCh7Y2xhc3M6dC51bnJlZih5KT8udGV4dH0pfSx0LnRvRGlzcGxheVN0cmluZyh1LnRleHQpLDMpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdS5rYmRzPy5sZW5ndGg/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJrYmRzIixjbGFzczpDLnZhbHVlLmtiZHMoe2NsYXNzOnQudW5yZWYoeSk/LmtiZHN9KX0sWyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KHUua2JkcywoZSxyKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh3LHQubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZTp0LnVucmVmKHkpPy5rYmRzU2l6ZXx8Qy52YWx1ZS5rYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiBlP3t2YWx1ZTplfTplKSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksdS5hcnJvdz8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoRCksdC5tZXJnZVByb3BzKHtrZXk6MH0sQi52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpDLnZhbHVlLmFycm93KHtjbGFzczp0LnVucmVmKHkpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldO28oXyh0LnVucmVmKGopLHQubWVyZ2VQcm9wcyhoLnZhbHVlLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qy52YWx1ZS5jb250ZW50KHtjbGFzczpbIWcuZGVmYXVsdCYmcC5jbGFzcyx0LnVucmVmKHkpPy5jb250ZW50XX0pfSkse2RlZmF1bHQ6dC53aXRoQ3R4KChyLG8sYSxuKT0+e2lmKCFvKXJldHVyblt0LnJlbmRlclNsb3QoZS4kc2xvdHMsImNvbnRlbnQiLHt1aTpDLnZhbHVlfSwoKT0+W3UudGV4dD8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6InRleHQiLGNsYXNzOkMudmFsdWUudGV4dCh7Y2xhc3M6dC51bnJlZih5KT8udGV4dH0pfSx0LnRvRGlzcGxheVN0cmluZyh1LnRleHQpLDMpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdS5rYmRzPy5sZW5ndGg/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJrYmRzIixjbGFzczpDLnZhbHVlLmtiZHMoe2NsYXNzOnQudW5yZWYoeSk/LmtiZHN9KX0sWyh0Lm9wZW5CbG9jayghMCksdC5jcmVhdGVCbG9jayh0LkZyYWdtZW50LG51bGwsdC5yZW5kZXJMaXN0KHUua2JkcywoZSxyKT0+KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jayh3LHQubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZTp0LnVucmVmKHkpPy5rYmRzU2l6ZXx8Qy52YWx1ZS5rYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiBlP3t2YWx1ZTplfTplKSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksdS5hcnJvdz8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQudW5yZWYoRCksdC5tZXJnZVByb3BzKHtrZXk6MH0sQi52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpDLnZhbHVlLmFycm93KHtjbGFzczp0LnVucmVmKHkpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO1AoZS4kc2xvdHMsImNvbnRlbnQiLHt1aTpDLnZhbHVlfSwoKT0+e3UudGV4dD9vKGA8c3BhbiBkYXRhLXNsb3Q9InRleHQiIGNsYXNzPSIke04oQy52YWx1ZS50ZXh0KHtjbGFzczp0LnVucmVmKHkpPy50ZXh0fSkpfSIke259PiR7VCh1LnRleHQpfTwvc3Bhbj5gKTpvKCJceDNjIS0tLS1ceDNlIiksdS5rYmRzPy5sZW5ndGg/KG8oYDxzcGFuIGRhdGEtc2xvdD0ia2JkcyIgY2xhc3M9IiR7TihDLnZhbHVlLmtiZHMoe2NsYXNzOnQudW5yZWYoeSk/LmtiZHN9KSl9IiR7bn0+XHgzYyEtLVstLVx4M2VgKSxPKHUua2JkcywoZSxyKT0+e28oXyh3LHQubWVyZ2VQcm9wcyh7a2V5OnIsc2l6ZTp0LnVucmVmKHkpPy5rYmRzU2l6ZXx8Qy52YWx1ZS5rYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiBlP3t2YWx1ZTplfTplKSxudWxsLGEsbikpfSksbygiXHgzYyEtLV0tLVx4M2U8L3NwYW4+IikpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyxhLG4pLHUuYXJyb3c/byhfKHQudW5yZWYoRCksdC5tZXJnZVByb3BzKEIudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6Qy52YWx1ZS5hcnJvdyh7Y2xhc3M6dC51bnJlZih5KT8uYXJyb3d9KX0pLG51bGwsYSxuKSk6bygiXHgzYyEtLS0tXHgzZSIpfSksXzoyfSxhLG4pKX0pLF86Mn0sYSxuKSl9KSxfOjJ9LGEsbikpfSksXzozfSxvKSl9fX0sSD1JLnNldHVwO0kuc2V0dXA9KGUscik9Pntjb25zdCBvPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihvLm1vZHVsZXN8fChvLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ub29sdGlwLnZ1ZSIpLEg/SChlLHIpOnZvaWQgMH07ZXhwb3J0e0kgYXMgX307Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVRvb2x0aXAtQlA4emI4REsubWpzLm1hcAo=", "chunks/build/VisuallyHiddenInput-D7mGP_JW.mjs": "aW1wb3J0e3YgYXMgZSxhcSBhcyB0LFkgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7dmFyIGE9ZS5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlZpc3VhbGx5SGlkZGVuSW5wdXRCdWJibGUiLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sdmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sY2hlY2tlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmZWF0dXJlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJmdWxseS1oaWRkZW4ifX0sc2V0dXAoYSl7Y29uc3QgbD1hLHtwcmltaXRpdmVFbGVtZW50Om4sY3VycmVudEVsZW1lbnQ6dX09dCgpLG89ZS5jb21wdXRlZCgoKT0+bC5jaGVja2VkPz9sLnZhbHVlKTtyZXR1cm4gZS53YXRjaChvLChlLHQpPT57aWYoIXUudmFsdWUpcmV0dXJuO2NvbnN0IHI9dS52YWx1ZSxhPSh2b2lkIDApLkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLCJ2YWx1ZSIpLnNldDtpZihsJiZlIT09dCl7Y29uc3QgdD1uZXcgRXZlbnQoImlucHV0Iix7YnViYmxlczohMH0pLGE9bmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSk7bC5jYWxsKHIsZSksci5kaXNwYXRjaEV2ZW50KHQpLHIuZGlzcGF0Y2hFdmVudChhKX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhyLGUubWVyZ2VQcm9wcyh7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOm59LHsuLi5sLC4uLnQuJGF0dHJzfSx7YXM6ImlucHV0In0pLG51bGwsMTYpKX19KSxsPWUuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJWaXN1YWxseUhpZGRlbklucHV0Iixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGNoZWNrZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZmVhdHVyZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZnVsbHktaGlkZGVuIn19LHNldHVwKHQpe2NvbnN0IHI9dCxsPWUuY29tcHV0ZWQoKCk9PiJvYmplY3QiPT10eXBlb2Ygci52YWx1ZSYmQXJyYXkuaXNBcnJheShyLnZhbHVlKSYmMD09PXIudmFsdWUubGVuZ3RoJiZyLnJlcXVpcmVkKSxuPWUuY29tcHV0ZWQoKCk9PiJzdHJpbmciPT10eXBlb2Ygci52YWx1ZXx8Im51bWJlciI9PXR5cGVvZiByLnZhbHVlfHwiYm9vbGVhbiI9PXR5cGVvZiByLnZhbHVlfHxudWxsPT09ci52YWx1ZXx8dm9pZCAwPT09ci52YWx1ZT9be25hbWU6ci5uYW1lLHZhbHVlOnIudmFsdWV9XToib2JqZWN0Ij09dHlwZW9mIHIudmFsdWUmJkFycmF5LmlzQXJyYXkoci52YWx1ZSk/ci52YWx1ZS5mbGF0TWFwKChlLHQpPT4ib2JqZWN0Ij09dHlwZW9mIGU/T2JqZWN0LmVudHJpZXMoZSkubWFwKChbZSxhXSk9Pih7bmFtZTpgJHtyLm5hbWV9WyR7dH1dWyR7ZX1dYCx2YWx1ZTphfSkpOntuYW1lOmAke3IubmFtZX1bJHt0fV1gLHZhbHVlOmV9KTpudWxsPT09ci52YWx1ZXx8Im9iamVjdCIhPXR5cGVvZiByLnZhbHVlfHxBcnJheS5pc0FycmF5KHIudmFsdWUpP1tdOk9iamVjdC5lbnRyaWVzKHIudmFsdWUpLm1hcCgoW2UsdF0pPT4oe25hbWU6YCR7ci5uYW1lfVske2V9XWAsdmFsdWU6dH0pKSk7cmV0dXJuKHQsdSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQsbnVsbCxbZS5jcmVhdGVDb21tZW50Vk5vZGUoIiBXZSByZW5kZXIgc2luZ2xlIGlucHV0IGlmIGl0J3MgcmVxdWlyZWQgIiksbC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGEsZS5tZXJnZVByb3BzKHtrZXk6dC5uYW1lfSx7Li4uciwuLi50LiRhdHRyc30se25hbWU6dC5uYW1lLHZhbHVlOnQudmFsdWV9KSxudWxsLDE2LFsibmFtZSIsInZhbHVlIl0pKTooZS5vcGVuQmxvY2soITApLGUuY3JlYXRlRWxlbWVudEJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3Qobi52YWx1ZSxsPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGEsZS5tZXJnZVByb3BzKHtrZXk6bC5uYW1lfSx7cmVmX2ZvcjohMH0sey4uLnIsLi4udC4kYXR0cnN9LHtuYW1lOmwubmFtZSx2YWx1ZTpsLnZhbHVlfSksbnVsbCwxNixbIm5hbWUiLCJ2YWx1ZSJdKSkpLDEyOCkpXSwyMTEyKSl9fSk7ZXhwb3J0e2wgYXMgVn07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPVZpc3VhbGx5SGlkZGVuSW5wdXQtRDdtR1BfSlcubWpzLm1hcAo=", "chunks/build/_id_-DzdVtYf5.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7diBhcyBsLHcgYXMgdCxhLGkgYXMgcix1IGFzIG8sXyBhcyBkLGcgYXMgcyx5IGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e18gYXMgbn1mcm9tIi4vRm9ybUZpZWxkLUNWTEl6UkxZLm1qcyI7aW1wb3J0e18gYXMgY31mcm9tIi4vU2VsZWN0LURpYWlsZlVjLm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7XyBhcyBmfWZyb20iLi9Ta2VsZXRvbi1CZnRxeUdwMy5tanMiO2ltcG9ydHt1IGFzIHB9ZnJvbSIuL3VzZVByb2R1Y3RBcGktQlp1TmpPaGsubWpzIjtpbXBvcnR7dSBhcyB2fWZyb20iLi91c2VQcm9qZWN0QXBpLUNUTDJLNkpWLm1qcyI7aW1wb3J0e18gYXMgYn1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcyI7aW1wb3J0e3cgYXMgeH1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7ZiBhcyBWLHEgYXMgaCx0IGFzIHd9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnQiLi91c2VGb3JtQ29udHJvbC1CTS1NZldtby5tanMiO2ltcG9ydCIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi9oYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50LUJrX0FWU1NvLm1qcyI7aW1wb3J0Ii4vdXNlUmVzb2x2ZWRWYXJpYW50cy1EaEh1NnZSSy5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgZz1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJbaWRdIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChnKXtjb25zdCB5PXQoKSxrPXYoKSxOPXUoKSxfPXAoKSxDPWEoKSxqPXkucGFyYW1zLmlkLHtkYXRhOkIsZXJyb3I6VSxyZWZyZXNoOlN9PXIoYHByb2plY3QtJHtqfWAsKCk9PmsuZmV0Y2hQcm9qZWN0KGopKTt4KFUpLG8oKCk9Pih7dGl0bGU6Qi52YWx1ZT8ubmFtZT8/IlByb2plY3QifSkpO2NvbnN0e2RhdGE6TX09cigib3JnLW1lbWJlcnMtZm9yLXByb2plY3QiLCgpPT5OLmZldGNoTWVtYmVycyh7bGltaXQ6MTAwfSkse2RlZmF1bHQ6KCk9Pih7aXRlbXM6W10saGFzTW9yZTohMX0pfSkse2RhdGE6Un09cigicHJvZHVjdHMtZm9yLXByb2plY3QiLCgpPT5fLmZldGNoUHJvZHVjdHMoImFjdGl2ZSIpLHtkZWZhdWx0OigpPT5bXX0pLCQ9bC5yZWYoIiIpLEQ9bC5yZWYoMSksUD1sLnJlZighMSksQT1sLnJlZigiIiksVD1sLnJlZigibWVtYmVyIiksej1sLnJlZighMSkscT1sLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1uZXcgU2V0KEIudmFsdWU/LnByb2R1Y3RzLm1hcChlPT5lLnByb2R1Y3RfaWQpPz9bXSk7cmV0dXJuKFIudmFsdWU/P1tdKS5maWx0ZXIobD0+IWUuaGFzKGwuaWQpKX0pLEk9bC5jb21wdXRlZCgoKT0+e2NvbnN0IGU9bmV3IFNldChCLnZhbHVlPy5tZW1iZXJzLm1hcChlPT5lLnVzZXJfaWQpPz9bXSk7cmV0dXJuKE0udmFsdWU/Lml0ZW1zPz9bXSkuZmlsdGVyKGw9PiFlLmhhcyhsLmlkKSl9KTthc3luYyBmdW5jdGlvbiBhZGRQcm9kdWN0KCl7aWYoJC52YWx1ZSl7UC52YWx1ZT0hMDt0cnl7YXdhaXQgay5hZGRQcm9kdWN0KGose3Byb2R1Y3RfaWQ6JC52YWx1ZSxxdWFudGl0eTpELnZhbHVlfSksYXdhaXQgUygpLCQudmFsdWU9IiIsRC52YWx1ZT0xLEMuYWRkKHt0aXRsZToiUHJvZHVjdCBhZGRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Y29uc3QgbD1lO0MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtQLnZhbHVlPSExfX19YXN5bmMgZnVuY3Rpb24gcmVtb3ZlUHJvZHVjdChlKXt0cnl7YXdhaXQgay5yZW1vdmVQcm9kdWN0KGosZSksYXdhaXQgUygpLEMuYWRkKHt0aXRsZToiUHJvZHVjdCByZW1vdmVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBsPWU7Qy5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246bD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19YXN5bmMgZnVuY3Rpb24gYWRkTWVtYmVyKCl7aWYoQS52YWx1ZSl7ei52YWx1ZT0hMDt0cnl7YXdhaXQgay5hZGRNZW1iZXIoaix7dXNlcl9pZDpBLnZhbHVlLHJvbGU6VC52YWx1ZX0pLGF3YWl0IFMoKSxBLnZhbHVlPSIiLFQudmFsdWU9Im1lbWJlciIsQy5hZGQoe3RpdGxlOiJNZW1iZXIgYWRkZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IGw9ZTtDLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7ei52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIHJlbW92ZU1lbWJlcihlKXt0cnl7YXdhaXQgay5yZW1vdmVNZW1iZXIoaixlKSxhd2FpdCBTKCksQy5hZGQoe3RpdGxlOiJNZW1iZXIgcmVtb3ZlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Y29uc3QgbD1lO0MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9fXJldHVybih0LGEscixvKT0+e2NvbnN0IHU9ZSxwPWQsdj1pLHg9bC5yZXNvbHZlQ29tcG9uZW50KCJDYW4iKSxnPW4seT1jLGs9bSxOPXMsXz1mO2EoVih1LGwubWVyZ2VQcm9wcyh7aWQ6InByb2plY3QtZGV0YWlsIn0sbykse2hlYWRlcjpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUoYix7dGl0bGU6bC51bnJlZihCKT8ubmFtZT8/IlByb2plY3QifSx7bGVhZGluZzpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHAse2ljb246ImktbHVjaWRlLWFycm93LWxlZnQiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsdG86Ii9wcm9qZWN0cyJ9KV0pLHJpZ2h0Omwud2l0aEN0eCgoKT0+W2wudW5yZWYoQik/KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jayh2LHtrZXk6MCxjb2xvcjoiYWN0aXZlIj09PWwudW5yZWYoQikuc3RhdHVzPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVUZXh0Vk5vZGUobC50b0Rpc3BsYXlTdHJpbmcobC51bnJlZihCKS5zdGF0dXMpLDEpXSksXzoxfSw4LFsiY29sb3IiXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86MX0sOCxbInRpdGxlIl0pXTt0KFYoYix7dGl0bGU6bC51bnJlZihCKT8ubmFtZT8/IlByb2plY3QifSx7bGVhZGluZzpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUocCx7aWNvbjoiaS1sdWNpZGUtYXJyb3ctbGVmdCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0Iix0bzoiL3Byb2plY3RzIn0pXTt0KFYocCx7aWNvbjoiaS1sdWNpZGUtYXJyb3ctbGVmdCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0Iix0bzoiL3Byb2plY3RzIn0sbnVsbCxhLHIpKX0pLHJpZ2h0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC51bnJlZihCKT8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKHYse2tleTowLGNvbG9yOiJhY3RpdmUiPT09bC51bnJlZihCKS5zdGF0dXM/InN1Y2Nlc3MiOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVRleHRWTm9kZShsLnRvRGlzcGxheVN0cmluZyhsLnVucmVmKEIpLnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtsLnVucmVmKEIpP3QoVih2LHtjb2xvcjoiYWN0aXZlIj09PWwudW5yZWYoQikuc3RhdHVzPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVRleHRWTm9kZShsLnRvRGlzcGxheVN0cmluZyhsLnVucmVmKEIpLnN0YXR1cyksMSldO3QoYCR7aChsLnVucmVmKEIpLnN0YXR1cyl9YCl9KSxfOjF9LGEscikpOnQoIlx4M2MhLS0tLVx4M2UiKX0pLF86MX0sYSxyKSl9KSxib2R5Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC51bnJlZihCKT8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00IHNwYWNlLXktNiJ9LFtsLnVucmVmKEIpLmRlc2NyaXB0aW9uPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soInAiLHtrZXk6MCxjbGFzczoidGV4dC1tdXRlZCJ9LGwudG9EaXNwbGF5U3RyaW5nKGwudW5yZWYoQikuZGVzY3JpcHRpb24pLDEpKTpsLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbC5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFtsLmNyZWF0ZVZOb2RlKCJoMiIse2NsYXNzOiJmb250LXNlbWlib2xkIG1iLTMifSwiIFByb2R1Y3RzICgiK2wudG9EaXNwbGF5U3RyaW5nKGwudW5yZWYoQikucHJvZHVjdHMubGVuZ3RoKSsiKSAiLDEpLDA9PT1sLnVucmVmKEIpLnByb2R1Y3RzLmxlbmd0aD8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIG1iLTMifSwiIE5vIHByb2R1Y3RzIGxpbmtlZC4gIikpOihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJzcGFjZS15LTIgbWItMyJ9LFsobC5vcGVuQmxvY2soITApLGwuY3JlYXRlQmxvY2sobC5GcmFnbWVudCxudWxsLGwucmVuZGVyTGlzdChsLnVucmVmKEIpLnByb2R1Y3RzLGU9PihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTplLnByb2R1Y3RfaWQsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTMgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxbbC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIn0sbC50b0Rpc3BsYXlTdHJpbmcobC51bnJlZihSKT8uZmluZChsPT5sLmlkPT09ZS5wcm9kdWN0X2lkKT8ubmFtZT8/ZS5wcm9kdWN0X2lkKSwxKSxsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxbbC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSwicXR5OiAiK2wudG9EaXNwbGF5U3RyaW5nKGUucXVhbnRpdHkpLDEpLGwuY3JlYXRlVk5vZGUocCx7aWNvbjoiaS1sdWNpZGUteCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsb25DbGljazpsPT5yZW1vdmVQcm9kdWN0KGUucHJvZHVjdF9pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSldKV0pKSksMTI4KSldKSksbC5jcmVhdGVWTm9kZSh4LHtJOiJ3cml0ZSIsYToicHJvamVjdCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wudW5yZWYocSkubGVuZ3RoPjA/KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsY2xhc3M6ImZsZXggaXRlbXMtZW5kIGdhcC0yIn0sW2wuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IkFkZCBwcm9kdWN0IixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOmwudW5yZWYoJCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoJCk/JC52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihxKS5tYXAoZT0+KHtsYWJlbDplLm5hbWUsdmFsdWU6ZS5pZH0pKSxwbGFjZWhvbGRlcjoiU2VsZWN0IGEgcHJvZHVjdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJRdHkiLGNsYXNzOiJ3LTIwIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShrLHttb2RlbFZhbHVlOmwudW5yZWYoRCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRCk/RC52YWx1ZT1lOm51bGwsbW9kZWxNb2RpZmllcnM6e251bWJlcjohMH0sdHlwZToibnVtYmVyIixtaW46IjEifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUocCx7bG9hZGluZzpsLnVucmVmKFApLGRpc2FibGVkOiFsLnVucmVmKCQpLGljb246ImktbHVjaWRlLXBsdXMiLG9uQ2xpY2s6YWRkUHJvZHVjdH0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVUZXh0Vk5vZGUoIiBBZGQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoxfSldKSxsLmNyZWF0ZVZOb2RlKCJkaXYiLG51bGwsW2wuY3JlYXRlVk5vZGUoImgyIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgbWItMyJ9LCIgTWVtYmVycyAoIitsLnRvRGlzcGxheVN0cmluZyhsLnVucmVmKEIpLm1lbWJlcnMubGVuZ3RoKSsiKSAiLDEpLDA9PT1sLnVucmVmKEIpLm1lbWJlcnMubGVuZ3RoPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbWItMyJ9LCIgTm8gbWVtYmVycy4gIikpOihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJzcGFjZS15LTIgbWItMyJ9LFsobC5vcGVuQmxvY2soITApLGwuY3JlYXRlQmxvY2sobC5GcmFnbWVudCxudWxsLGwucmVuZGVyTGlzdChsLnVucmVmKEIpLm1lbWJlcnMsZT0+KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OmUudXNlcl9pZCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBiZy1lbGV2YXRlZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGVmYXVsdCJ9LFtsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxbbC5jcmVhdGVWTm9kZShOLHtzcmM6ZS5hdmF0YXI/P3ZvaWQgMCxhbHQ6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQsc2l6ZToieHMifSxudWxsLDgsWyJzcmMiLCJhbHQiXSksbC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LXNtIn0sbC50b0Rpc3BsYXlTdHJpbmcoZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQpLDEpLGwuY3JlYXRlVk5vZGUodix7dmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVGV4dFZOb2RlKGwudG9EaXNwbGF5U3RyaW5nKGUucm9sZSksMSldKSxfOjJ9LDEwMjQpXSksbC5jcmVhdGVWTm9kZShwLHtpY29uOiJpLWx1Y2lkZS14Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InhzIixvbkNsaWNrOmw9PnJlbW92ZU1lbWJlcihlLnVzZXJfaWQpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSkpKSwxMjgpKV0pKSxsLmNyZWF0ZVZOb2RlKHgse0k6IndyaXRlIixhOiJwcm9qZWN0In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC51bnJlZihJKS5sZW5ndGg+MD8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1lbmQgZ2FwLTIifSxbbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiQWRkIG1lbWJlciIsY2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKEEpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEEpP0EudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoSSkubWFwKGU9Pih7bGFiZWw6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnByaW1hcnlfZW1haWwsdmFsdWU6ZS5pZH0pKSxwbGFjZWhvbGRlcjoiU2VsZWN0IGEgbWVtYmVyIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IlJvbGUifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihUKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihUKT9ULnZhbHVlPWU6bnVsbCxpdGVtczpbe2xhYmVsOiJPd25lciIsdmFsdWU6Im93bmVyIn0se2xhYmVsOiJNZW1iZXIiLHZhbHVlOiJtZW1iZXIifSx7bGFiZWw6IlZpZXdlciIsdmFsdWU6InZpZXdlciJ9XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKHAse2xvYWRpbmc6bC51bnJlZih6KSxkaXNhYmxlZDohbC51bnJlZihBKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZE1lbWJlcn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVUZXh0Vk5vZGUoIiBBZGQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksXzoxfSldKV0pKToobC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC00OCB0ZXh0LW11dGVkIn0sW2wuY3JlYXRlVk5vZGUoXyx7Y2xhc3M6ImgtNDggdy1mdWxsIG1heC13LTN4bCJ9KV0pKV07bC51bnJlZihCKT8odChgPGRpdiBjbGFzcz0ibWF4LXctM3hsIG14LWF1dG8gcC00IHNwYWNlLXktNiIke3J9PmApLGwudW5yZWYoQikuZGVzY3JpcHRpb24/dChgPHAgY2xhc3M9InRleHQtbXV0ZWQiJHtyfT4ke2gobC51bnJlZihCKS5kZXNjcmlwdGlvbil9PC9wPmApOnQoIlx4M2MhLS0tLVx4M2UiKSx0KGA8ZGl2JHtyfT48aDIgY2xhc3M9ImZvbnQtc2VtaWJvbGQgbWItMyIke3J9PiBQcm9kdWN0cyAoJHtoKGwudW5yZWYoQikucHJvZHVjdHMubGVuZ3RoKX0pIDwvaDI+YCksMD09PWwudW5yZWYoQikucHJvZHVjdHMubGVuZ3RoP3QoYDxkaXYgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCBtYi0zIiR7cn0+IE5vIHByb2R1Y3RzIGxpbmtlZC4gPC9kaXY+YCk6KHQoYDxkaXYgY2xhc3M9InNwYWNlLXktMiBtYi0zIiR7cn0+XHgzYyEtLVstLVx4M2VgKSx3KGwudW5yZWYoQikucHJvZHVjdHMsZT0+e3QoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTMgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQiJHtyfT48c3BhbiBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSIke3J9PiR7aChsLnVucmVmKFIpPy5maW5kKGw9PmwuaWQ9PT1lLnByb2R1Y3RfaWQpPy5uYW1lPz9lLnByb2R1Y3RfaWQpfTwvc3Bhbj48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiIke3J9PjxzcGFuIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQiJHtyfT5xdHk6ICR7aChlLnF1YW50aXR5KX08L3NwYW4+YCksdChWKHAse2ljb246ImktbHVjaWRlLXgiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLG9uQ2xpY2s6bD0+cmVtb3ZlUHJvZHVjdChlLnByb2R1Y3RfaWQpfSxudWxsLGEscikpLHQoIjwvZGl2PjwvZGl2PiIpfSksdCgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSksdChWKHgse0k6IndyaXRlIixhOiJwcm9qZWN0In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLnVucmVmKHEpLmxlbmd0aD4wPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJmbGV4IGl0ZW1zLWVuZCBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJBZGQgcHJvZHVjdCIsY2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKCQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKCQpPyQudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYocSkubWFwKGU9Pih7bGFiZWw6ZS5uYW1lLHZhbHVlOmUuaWR9KSkscGxhY2Vob2xkZXI6IlNlbGVjdCBhIHByb2R1Y3QiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiUXR5IixjbGFzczoidy0yMCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoayx7bW9kZWxWYWx1ZTpsLnVucmVmKEQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEQpP0QudmFsdWU9ZTpudWxsLG1vZGVsTW9kaWZpZXJzOntudW1iZXI6ITB9LHR5cGU6Im51bWJlciIsbWluOiIxIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKHAse2xvYWRpbmc6bC51bnJlZihQKSxkaXNhYmxlZDohbC51bnJlZigkKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZFByb2R1Y3R9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVGV4dFZOb2RlKCIgQWRkICIpXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07bC51bnJlZihxKS5sZW5ndGg+MD8odChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1lbmQgZ2FwLTIiJHtyfT5gKSx0KFYoZyx7bGFiZWw6IkFkZCBwcm9kdWN0IixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZigkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZigkKT8kLnZhbHVlPWU6bnVsbCxpdGVtczpsLnVucmVmKHEpLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBwcm9kdWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyJdKV07dChWKHkse21vZGVsVmFsdWU6bC51bnJlZigkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZigkKT8kLnZhbHVlPWU6bnVsbCxpdGVtczpsLnVucmVmKHEpLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBwcm9kdWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCxhLHIpKX0pLF86MX0sYSxyKSksdChWKGcse2xhYmVsOiJRdHkiLGNsYXNzOiJ3LTIwIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGsse21vZGVsVmFsdWU6bC51bnJlZihEKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihEKT9ELnZhbHVlPWU6bnVsbCxtb2RlbE1vZGlmaWVyczp7bnVtYmVyOiEwfSx0eXBlOiJudW1iZXIiLG1pbjoiMSJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KFYoayx7bW9kZWxWYWx1ZTpsLnVucmVmKEQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEQpP0QudmFsdWU9ZTpudWxsLG1vZGVsTW9kaWZpZXJzOntudW1iZXI6ITB9LHR5cGU6Im51bWJlciIsbWluOiIxIn0sbnVsbCxhLHIpKX0pLF86MX0sYSxyKSksdChWKHAse2xvYWRpbmc6bC51bnJlZihQKSxkaXNhYmxlZDohbC51bnJlZigkKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZFByb2R1Y3R9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVUZXh0Vk5vZGUoIiBBZGQgIildO3QoIiBBZGQgIil9KSxfOjF9LGEscikpLHQoIjwvZGl2PiIpKTp0KCJceDNjIS0tLS1ceDNlIil9KSxfOjF9LGEscikpLHQoYDwvZGl2PjxkaXYke3J9PjxoMiBjbGFzcz0iZm9udC1zZW1pYm9sZCBtYi0zIiR7cn0+IE1lbWJlcnMgKCR7aChsLnVucmVmKEIpLm1lbWJlcnMubGVuZ3RoKX0pIDwvaDI+YCksMD09PWwudW5yZWYoQikubWVtYmVycy5sZW5ndGg/dChgPGRpdiBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIG1iLTMiJHtyfT4gTm8gbWVtYmVycy4gPC9kaXY+YCk6KHQoYDxkaXYgY2xhc3M9InNwYWNlLXktMiBtYi0zIiR7cn0+XHgzYyEtLVstLVx4M2VgKSx3KGwudW5yZWYoQikubWVtYmVycyxlPT57dChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBiZy1lbGV2YXRlZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGVmYXVsdCIke3J9PjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIiR7cn0+YCksdChWKE4se3NyYzplLmF2YXRhcj8/dm9pZCAwLGFsdDplLm5hbWU/P2UudXNlcm5hbWU/P2UudXNlcl9pZCxzaXplOiJ4cyJ9LG51bGwsYSxyKSksdChgPHNwYW4gY2xhc3M9InRleHQtc20iJHtyfT4ke2goZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQpfTwvc3Bhbj5gKSx0KFYodix7dmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgodCxhLHIsbyk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVUZXh0Vk5vZGUobC50b0Rpc3BsYXlTdHJpbmcoZS5yb2xlKSwxKV07YShgJHtoKGUucm9sZSl9YCl9KSxfOjJ9LGEscikpLHQoIjwvZGl2PiIpLHQoVihwLHtpY29uOiJpLWx1Y2lkZS14Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InhzIixvbkNsaWNrOmw9PnJlbW92ZU1lbWJlcihlLnVzZXJfaWQpfSxudWxsLGEscikpLHQoIjwvZGl2PiIpfSksdCgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSksdChWKHgse0k6IndyaXRlIixhOiJwcm9qZWN0In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLnVucmVmKEkpLmxlbmd0aD4wPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJmbGV4IGl0ZW1zLWVuZCBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJBZGQgbWVtYmVyIixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOmwudW5yZWYoQSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoQSk/QS52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihJKS5tYXAoZT0+KHtsYWJlbDplLm5hbWU/P2UudXNlcm5hbWU/P2UucHJpbWFyeV9lbWFpbCx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBtZW1iZXIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKFQpP1QudmFsdWU9ZTpudWxsLGl0ZW1zOlt7bGFiZWw6Ik93bmVyIix2YWx1ZToib3duZXIifSx7bGFiZWw6Ik1lbWJlciIsdmFsdWU6Im1lbWJlciJ9LHtsYWJlbDoiVmlld2VyIix2YWx1ZToidmlld2VyIn1dfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUocCx7bG9hZGluZzpsLnVucmVmKHopLGRpc2FibGVkOiFsLnVucmVmKEEpLGljb246ImktbHVjaWRlLXBsdXMiLG9uQ2xpY2s6YWRkTWVtYmVyfSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVRleHRWTm9kZSgiIEFkZCAiKV0pLF86MX0sOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pKTpsLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2wudW5yZWYoSSkubGVuZ3RoPjA/KHQoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtZW5kIGdhcC0yIiR7cn0+YCksdChWKGcse2xhYmVsOiJBZGQgbWVtYmVyIixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihBKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihBKT9BLnZhbHVlPWU6bnVsbCxpdGVtczpsLnVucmVmKEkpLm1hcChlPT4oe2xhYmVsOmUubmFtZT8/ZS51c2VybmFtZT8/ZS5wcmltYXJ5X2VtYWlsLHZhbHVlOmUuaWR9KSkscGxhY2Vob2xkZXI6IlNlbGVjdCBhIG1lbWJlciIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO3QoVih5LHttb2RlbFZhbHVlOmwudW5yZWYoQSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoQSk/QS52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihJKS5tYXAoZT0+KHtsYWJlbDplLm5hbWU/P2UudXNlcm5hbWU/P2UucHJpbWFyeV9lbWFpbCx2YWx1ZTplLmlkfSkpLHBsYWNlaG9sZGVyOiJTZWxlY3QgYSBtZW1iZXIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEscikpfSksXzoxfSxhLHIpKSx0KFYoZyx7bGFiZWw6IlJvbGUifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKFQpP1QudmFsdWU9ZTpudWxsLGl0ZW1zOlt7bGFiZWw6Ik93bmVyIix2YWx1ZToib3duZXIifSx7bGFiZWw6Ik1lbWJlciIsdmFsdWU6Im1lbWJlciJ9LHtsYWJlbDoiVmlld2VyIix2YWx1ZToidmlld2VyIn1dfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChWKHkse21vZGVsVmFsdWU6bC51bnJlZihUKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihUKT9ULnZhbHVlPWU6bnVsbCxpdGVtczpbe2xhYmVsOiJPd25lciIsdmFsdWU6Im93bmVyIn0se2xhYmVsOiJNZW1iZXIiLHZhbHVlOiJtZW1iZXIifSx7bGFiZWw6IlZpZXdlciIsdmFsdWU6InZpZXdlciJ9XX0sbnVsbCxhLHIpKX0pLF86MX0sYSxyKSksdChWKHAse2xvYWRpbmc6bC51bnJlZih6KSxkaXNhYmxlZDohbC51bnJlZihBKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOmFkZE1lbWJlcn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVRleHRWTm9kZSgiIEFkZCAiKV07dCgiIEFkZCAiKX0pLF86MX0sYSxyKSksdCgiPC9kaXY+IikpOnQoIlx4M2MhLS0tLVx4M2UiKX0pLF86MX0sYSxyKSksdCgiPC9kaXY+PC9kaXY+IikpOih0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTQ4IHRleHQtbXV0ZWQiJHtyfT5gKSx0KFYoXyx7Y2xhc3M6ImgtNDggdy1mdWxsIG1heC13LTN4bCJ9LG51bGwsYSxyKSksdCgiPC9kaXY+IikpfSksXzoxfSxyKSl9fX0pLHk9Zy5zZXR1cDtnLnNldHVwPShlLHQpPT57Y29uc3QgYT1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9baWRdLnZ1ZSIpLHk/eShlLHQpOnZvaWQgMH07ZXhwb3J0e2cgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8tRHpkVnRZZjUubWpzLm1hcAo=", "chunks/build/_token_-BMRvL9xC.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHt2IGFzIHQsdyBhcyBuLHggYXMgbyxoIGFzIHIsYSxpLHUgYXMgcyxiIGFzIGMsXyBhcyBsLHkgYXMgZH1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3cgYXMgdX1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7byBhcyBtLGYgYXMgcCxxIGFzIGZ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgdj10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJbdG9rZW5dIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cCh2KXtjb25zdCB4PW4oKSxnPW8oKSxoPXgucGFyYW1zLnRva2VuLGs9ZCgpLHk9cigpLE49YSgpLHtkYXRhOmIsZXJyb3I6Q309aShgaW52aXRhdGlvbi0ke2h9YCwoKT0+ay5mZXRjaEludml0YXRpb24oaCkpO3UoQykscyh7dGl0bGU6KCk9PmIudmFsdWU/YEpvaW4gJHtiLnZhbHVlLm9yZy5uYW1lfWA6Ikludml0YXRpb24ifSk7Y29uc3QgJD10LnJlZighMSk7YXN5bmMgZnVuY3Rpb24gYWNjZXB0KCl7aWYoeS5jdXJyZW50VXNlcil7JC52YWx1ZT0hMDt0cnl7Y29uc3QgZT1hd2FpdCBrLmFjY2VwdEludml0YXRpb24oaCk7YXdhaXQgeS5mZXRjaEN1cnJlbnRVc2VyKCksTi5hZGQoe3RpdGxlOmBKb2luZWQgJHtlLm9yZy5uYW1lfWAsY29sb3I6InN1Y2Nlc3MifSksYXdhaXQgZy5wdXNoKCIvZGFzaGJvYXJkIil9Y2F0Y2goZSl7Y29uc3QgdD1lO04uYWRkKHt0aXRsZToiRmFpbGVkIHRvIGFjY2VwdCBpbnZpdGF0aW9uIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7JC52YWx1ZT0hMX19ZWxzZSBhd2FpdCBnLnB1c2goIi9hdXRoL2xvZ2luIil9cmV0dXJuKG4sbyxyLGEpPT57Y29uc3QgaT1lLHM9YyxkPWw7byhgPGRpdiR7bSh0Lm1lcmdlUHJvcHMoe2NsYXNzOiJtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00In0sYSkpfT5gKSxvKHAoaSx7Y2xhc3M6InctZnVsbCBtYXgtdy1tZCJ9LHQuY3JlYXRlU2xvdHMoe2hlYWRlcjp0LndpdGhDdHgoKGUsbixvLHIpPT57aWYoIW4pcmV0dXJuW3QuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1sZyBmb250LXNlbWlib2xkIn0sIiBPcmdhbml6YXRpb24gaW52aXRhdGlvbiAiKV07bihgPHAgY2xhc3M9InRleHQtbGcgZm9udC1zZW1pYm9sZCIke3J9PiBPcmdhbml6YXRpb24gaW52aXRhdGlvbiA8L3A+YCl9KSxkZWZhdWx0OnQud2l0aEN0eCgoZSxuLG8scik9PntpZighbilyZXR1cm5bdC51bnJlZihDKXx8IXQudW5yZWYoYik/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsY2xhc3M6InRleHQtY2VudGVyIHB5LTQifSxbdC5jcmVhdGVWTm9kZShzLHtuYW1lOiJpLWx1Y2lkZS1jaXJjbGUteCIsY2xhc3M6InNpemUtMTIgdGV4dC1lcnJvciBteC1hdXRvIG1iLTMifSksdC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LW1lZGl1bSJ9LCIgSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCAiKSx0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCBtdC0xIn0sIiBUaGUgaW52aXRhdGlvbiBsaW5rIG1heSBoYXZlIGJlZW4gcmV2b2tlZCBvciBpcyBubyBsb25nZXIgdmFsaWQuICIpXSkpOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJzcGFjZS15LTQifSxbdC5jcmVhdGVWTm9kZSgicCIsbnVsbCxbdC5jcmVhdGVUZXh0Vk5vZGUoIiBZb3UgaGF2ZSBiZWVuIGludml0ZWQgdG8gam9pbiAiKSx0LmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwsdC50b0Rpc3BsYXlTdHJpbmcodC51bnJlZihiKS5vcmcubmFtZSksMSksdC51bnJlZihiKS5yb2xlTmFtZT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQse2tleTowfSxbdC5jcmVhdGVUZXh0Vk5vZGUoIiBhcyBhICIpLHQuY3JlYXRlVk5vZGUoInN0cm9uZyIsbnVsbCx0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGIpLnJvbGVOYW1lKSwxKV0sNjQpKTp0LmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5jcmVhdGVUZXh0Vk5vZGUoIi4gIildKSx0LnVucmVmKHkpLmN1cnJlbnRVc2VyP3QuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKToodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBTaWduIGluIHRvIGFjY2VwdCB0aGlzIGludml0YXRpb24uICIpKV0pKV07dC51bnJlZihDKXx8IXQudW5yZWYoYik/KG4oYDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHB5LTQiJHtyfT5gKSxuKHAocyx7bmFtZToiaS1sdWNpZGUtY2lyY2xlLXgiLGNsYXNzOiJzaXplLTEyIHRleHQtZXJyb3IgbXgtYXV0byBtYi0zIn0sbnVsbCxvLHIpKSxuKGA8cCBjbGFzcz0iZm9udC1tZWRpdW0iJHtyfT4gSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCA8L3A+PHAgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCBtdC0xIiR7cn0+IFRoZSBpbnZpdGF0aW9uIGxpbmsgbWF5IGhhdmUgYmVlbiByZXZva2VkIG9yIGlzIG5vIGxvbmdlciB2YWxpZC4gPC9wPjwvZGl2PmApKToobihgPGRpdiBjbGFzcz0ic3BhY2UteS00IiR7cn0+PHAke3J9PiBZb3UgaGF2ZSBiZWVuIGludml0ZWQgdG8gam9pbiA8c3Ryb25nJHtyfT4ke2YodC51bnJlZihiKS5vcmcubmFtZSl9PC9zdHJvbmc+YCksdC51bnJlZihiKS5yb2xlTmFtZT9uKGBceDNjIS0tWy0tXHgzZSBhcyBhIDxzdHJvbmcke3J9PiR7Zih0LnVucmVmKGIpLnJvbGVOYW1lKX08L3N0cm9uZz5ceDNjIS0tXS0tXHgzZWApOm4oIlx4M2MhLS0tLVx4M2UiKSxuKCIuIDwvcD4iKSx0LnVucmVmKHkpLmN1cnJlbnRVc2VyP24oIlx4M2MhLS0tLVx4M2UiKTpuKGA8ZGl2IGNsYXNzPSJ0ZXh0LXNtIHRleHQtbXV0ZWQiJHtyfT4gU2lnbiBpbiB0byBhY2NlcHQgdGhpcyBpbnZpdGF0aW9uLiA8L2Rpdj5gKSxuKCI8L2Rpdj4iKSl9KSxfOjJ9LFt0LnVucmVmKGIpP3tuYW1lOiJmb290ZXIiLGZuOnQud2l0aEN0eCgoZSxuLG8scik9PntpZighbilyZXR1cm5bdC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxbdC5jcmVhdGVWTm9kZShkLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6ZT0+dC51bnJlZihnKS5wdXNoKCIvIil9LG51bGwsOCxbIm9uQ2xpY2siXSksdC5jcmVhdGVWTm9kZShkLHtsYWJlbDp0LnVucmVmKHkpLmN1cnJlbnRVc2VyPyJBY2NlcHQgaW52aXRhdGlvbiI6IlNpZ24gaW4gdG8gYWNjZXB0Iixsb2FkaW5nOnQudW5yZWYoJCksb25DbGljazphY2NlcHR9LG51bGwsOCxbImxhYmVsIiwibG9hZGluZyJdKV0pXTtuKGA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIiR7cn0+YCksbihwKGQse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT50LnVucmVmKGcpLnB1c2goIi8iKX0sbnVsbCxvLHIpKSxuKHAoZCx7bGFiZWw6dC51bnJlZih5KS5jdXJyZW50VXNlcj8iQWNjZXB0IGludml0YXRpb24iOiJTaWduIGluIHRvIGFjY2VwdCIsbG9hZGluZzp0LnVucmVmKCQpLG9uQ2xpY2s6YWNjZXB0fSxudWxsLG8scikpLG4oIjwvZGl2PiIpfSksa2V5OiIwIn06dm9pZCAwXSkscikpLG8oIjwvZGl2PiIpfX19KSx4PXYuc2V0dXA7di5zZXR1cD0oZSxuKT0+e2NvbnN0IG89dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvam9pbi9bdG9rZW5dLnZ1ZSIpLHg/eChlLG4pOnZvaWQgMH07ZXhwb3J0e3YgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV90b2tlbl8tQk1Sdkw5eEMubWpzLm1hcAo=", "chunks/build/auth-DRtN7LuV.mjs": "aW1wb3J0e2FUIGFzIGUsdiBhcyBzfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7byxnIGFzIHJ9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3QgdD17fTtjb25zdCBuPXQuc2V0dXA7dC5zZXR1cD0oZSxvKT0+e2NvbnN0IHI9cy51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHIubW9kdWxlc3x8KHIubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvbGF5b3V0cy9hdXRoLnZ1ZSIpLG4/bihlLG8pOnZvaWQgMH07Y29uc3QgbT1lKHQsW1sic3NyUmVuZGVyIixmdW5jdGlvbihlLHQsbixtKXt0KGA8ZGl2JHtvKHMubWVyZ2VQcm9wcyh7Y2xhc3M6Im1pbi1oLXNjcmVlbiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC00IHB5LTE2IGJnLWRlZmF1bHQifSxtKSl9PmApLHIoZS4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsdCxuKSx0KCI8L2Rpdj4iKX1dXSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWF1dGgtRFJ0TjdMdVYubWpzLm1hcAo=", "chunks/build/billing-Bwq8NYM_.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7diBhcyB0LHUgYXMgYSxpIGFzIGwsXyBhcyBuLGEgYXMgcyxhTCBhcyBvLGIgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e18gYXMgY31mcm9tIi4vRm9ybUZpZWxkLUNWTEl6UkxZLm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7XyBhcyB1fWZyb20iLi9UYWJsZS0wVVJuQzhPSC5tanMiO2ltcG9ydHtfIGFzIGR9ZnJvbSIuL1BhZ2luYXRpb24tQ3pyRWlQSmQubWpzIjtpbXBvcnR7dSBhcyBwfWZyb20iLi91c2VCaWxsaW5nQXBpLUNvLWJUU0tULm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vTW9kYWwtQjB5V1B4V18ubWpzIjtpbXBvcnR7dyBhcyBmfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIHYsZiBhcyB4LHogYXMgZyxxIGFzIGIsdCBhcyB5fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vaW5kZXgtQjFQT1RMbWEubWpzIjtpbXBvcnQiLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydCIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtjb25zdCBrPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkJpbGxpbmdNb2RhbCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsidXBkYXRlOm9wZW4iLCJzdWNjZXNzIl0sc2V0dXAoZSx7ZW1pdDphfSl7Y29uc3QgbD1lLGM9YSxpPXAoKSx1PXMoKSxkPVs1ZTQsMWU1LDJlNSw1ZTVdLGY9dC5yZWYoZFsxXSksdj10LnJlZighMSksaz10LnJlZighMSksTj10LnJlZihudWxsKSxDPXQucmVmKG51bGwpLGg9dC5yZWYobnVsbCksVj10LnJlZihudWxsKSx7cGF1c2U6QixyZXN1bWU6JH09byhhc3luYygpPT57aWYoTi52YWx1ZSl0cnl7Y29uc3R7c3RhdHVzOmV9PWF3YWl0IGkuZmV0Y2hUcmFuc2FjdGlvblN0YXR1cyhOLnZhbHVlKTsic3VjY2VzcyI9PT1lJiYoQigpLGsudmFsdWU9ITAsYygic3VjY2VzcyIpKX1jYXRjaHt9fSwzZTMse2ltbWVkaWF0ZTohMX0pO2FzeW5jIGZ1bmN0aW9uIHN0YXJ0Q2hlY2tvdXQoKXt2LnZhbHVlPSEwO3RyeXtjb25zdCBlPWF3YWl0IGkuY2hlY2tvdXQoZi52YWx1ZSk7Ti52YWx1ZT1lLnRyYW5zYWN0aW9uSWQsQy52YWx1ZT1lLnFyVXJsLGgudmFsdWU9ZS5iYW5rLFYudmFsdWU9ZS5vcmRlckNvZGUsJCgpLHNldFRpbWVvdXQoQiwzZTUpfWNhdGNoKGUpe2NvbnN0IHQ9ZTt1LmFkZCh7dGl0bGU6IkNoZWNrb3V0IGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3YudmFsdWU9ITF9fWZ1bmN0aW9uIGNsb3NlKCl7QigpLE4udmFsdWU9bnVsbCxDLnZhbHVlPW51bGwsaC52YWx1ZT1udWxsLFYudmFsdWU9bnVsbCxrLnZhbHVlPSExLGMoInVwZGF0ZTpvcGVuIiwhMSl9cmV0dXJuIHQud2F0Y2goKCk9Pmwub3BlbixlPT57ZXx8Y2xvc2UoKX0pLChhLGwscyxvKT0+e2NvbnN0IGk9cix1PW47bCh4KG0sdC5tZXJnZVByb3BzKHtvcGVuOmUub3Blbix0aXRsZToiVG9wIHVwIGJhbGFuY2UiLCJvblVwZGF0ZTpvcGVuIjplPT5jKCJ1cGRhdGU6b3BlbiIsZSl9LG8pLHtib2R5OnQud2l0aEN0eCgoZSxhLGwsbik9PntpZighYSlyZXR1cm5bdC51bnJlZihrKT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1jZW50ZXIgcHktNiJ9LFt0LmNyZWF0ZVZOb2RlKGkse25hbWU6ImktbHVjaWRlLWNpcmNsZS1jaGVjayIsY2xhc3M6InNpemUtMTIgdGV4dC1zdWNjZXNzIG14LWF1dG8gbWItMyJ9KSx0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1sZyJ9LCIgUGF5bWVudCByZWNlaXZlZCEgIiksdC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSJ9LCIgWW91ciBiYWxhbmNlIGhhcyBiZWVuIHVwZGF0ZWQuICIpXSkpOnQudW5yZWYoQyk/KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsY2xhc3M6InNwYWNlLXktNCJ9LFt0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoidGV4dC1jZW50ZXIifSxbdC5jcmVhdGVWTm9kZSgiaW1nIix7c3JjOnQudW5yZWYoQyksYWx0OiJTZVBheSBRUiBjb2RlIixjbGFzczoibXgtYXV0byBtYXgtdy1bMjAwcHhdIHJvdW5kZWQifSxudWxsLDgsWyJzcmMiXSldKSx0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoidGV4dC1zbSBzcGFjZS15LTEgYmctZWxldmF0ZWQgcm91bmRlZCBwLTMifSxbdC5jcmVhdGVWTm9kZSgicCIsbnVsbCxbdC5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkJhbms6IiksdC5jcmVhdGVUZXh0Vk5vZGUoIiAiK3QudG9EaXNwbGF5U3RyaW5nKHQudW5yZWYoaCk/LmJhbmtOYW1lKSwxKV0pLHQuY3JlYXRlVk5vZGUoInAiLG51bGwsW3QuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJBY2NvdW50OiIpLHQuY3JlYXRlVGV4dFZOb2RlKCIgIit0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGgpPy5hY2NvdW50TnVtYmVyKSwxKV0pLHQuY3JlYXRlVk5vZGUoInAiLG51bGwsW3QuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJNZW1vOiIpLHQuY3JlYXRlVGV4dFZOb2RlKCksdC5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJmb250LW1vbm8ifSx0LnRvRGlzcGxheVN0cmluZyh0LnVucmVmKGgpPy5wcmVmaXgpK3QudG9EaXNwbGF5U3RyaW5nKHQudW5yZWYoVikpLDEpXSldKSx0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciJ9LCIgV2FpdGluZyBmb3IgcGF5bWVudCBjb25maXJtYXRpb27igKYgIildKSk6KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsY2xhc3M6InNwYWNlLXktNCJ9LFt0LmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LCIgU2VsZWN0IHRoZSBhbW91bnQgdG8gdG9wIHVwOiAiKSx0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiJ9LFsodC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKHQuRnJhZ21lbnQsbnVsbCx0LnJlbmRlckxpc3QoZCxlPT50LmNyZWF0ZVZOb2RlKHUse2tleTplLHZhcmlhbnQ6dC51bnJlZihmKT09PWU/InNvbGlkIjoib3V0bGluZSIsY29sb3I6Im5ldXRyYWwiLGJsb2NrOiIiLG9uQ2xpY2s6dD0+Zi52YWx1ZT1lfSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyhlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpKSsiIOKCqyAiLDEpXSksXzoyfSwxMDMyLFsidmFyaWFudCIsIm9uQ2xpY2siXSkpLDY0KSldKV0pKV07dC51bnJlZihrKT8oYShgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgcHktNiIke259PmApLGEoeChpLHtuYW1lOiJpLWx1Y2lkZS1jaXJjbGUtY2hlY2siLGNsYXNzOiJzaXplLTEyIHRleHQtc3VjY2VzcyBteC1hdXRvIG1iLTMifSxudWxsLGwsbikpLGEoYDxwIGNsYXNzPSJmb250LXNlbWlib2xkIHRleHQtbGciJHtufT4gUGF5bWVudCByZWNlaXZlZCEgPC9wPjxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSIke259PiBZb3VyIGJhbGFuY2UgaGFzIGJlZW4gdXBkYXRlZC4gPC9wPjwvZGl2PmApKTp0LnVucmVmKEMpP2EoYDxkaXYgY2xhc3M9InNwYWNlLXktNCIke259PjxkaXYgY2xhc3M9InRleHQtY2VudGVyIiR7bn0+PGltZyR7Zygic3JjIix0LnVucmVmKEMpKX0gYWx0PSJTZVBheSBRUiBjb2RlIiBjbGFzcz0ibXgtYXV0byBtYXgtdy1bMjAwcHhdIHJvdW5kZWQiJHtufT48L2Rpdj48ZGl2IGNsYXNzPSJ0ZXh0LXNtIHNwYWNlLXktMSBiZy1lbGV2YXRlZCByb3VuZGVkIHAtMyIke259PjxwJHtufT48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke259PkJhbms6PC9zcGFuPiAke2IodC51bnJlZihoKT8uYmFua05hbWUpfTwvcD48cCR7bn0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHtufT5BY2NvdW50Ojwvc3Bhbj4gJHtiKHQudW5yZWYoaCk/LmFjY291bnROdW1iZXIpfTwvcD48cCR7bn0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHtufT5NZW1vOjwvc3Bhbj4gPGNvZGUgY2xhc3M9ImZvbnQtbW9ubyIke259PiR7Yih0LnVucmVmKGgpPy5wcmVmaXgpfSR7Yih0LnVucmVmKFYpKX08L2NvZGU+PC9wPjwvZGl2PjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIiJHtufT4gV2FpdGluZyBmb3IgcGF5bWVudCBjb25maXJtYXRpb27igKYgPC9wPjwvZGl2PmApOihhKGA8ZGl2IGNsYXNzPSJzcGFjZS15LTQiJHtufT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7bn0+IFNlbGVjdCB0aGUgYW1vdW50IHRvIHRvcCB1cDogPC9wPjxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTIiJHtufT5ceDNjIS0tWy0tXHgzZWApLHkoZCxlPT57YSh4KHUse2tleTplLHZhcmlhbnQ6dC51bnJlZihmKT09PWU/InNvbGlkIjoib3V0bGluZSIsY29sb3I6Im5ldXRyYWwiLGJsb2NrOiIiLG9uQ2xpY2s6dD0+Zi52YWx1ZT1lfSx7ZGVmYXVsdDp0LndpdGhDdHgoKGEsbCxuLHMpPT57aWYoIWwpcmV0dXJuW3QuY3JlYXRlVGV4dFZOb2RlKHQudG9EaXNwbGF5U3RyaW5nKGUudG9Mb2NhbGVTdHJpbmcoInZpLVZOIikpKyIg4oKrICIsMSldO2woYCR7YihlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpKX0g4oKrIGApfSksXzoyfSxsLG4pKX0pLGEoIlx4M2MhLS1dLS1ceDNlPC9kaXY+PC9kaXY+IikpfSksZm9vdGVyOnQud2l0aEN0eCgoZSxhLGwsbik9PntpZighYSlyZXR1cm5bdC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxbdC5jcmVhdGVWTm9kZSh1LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDbG9zZSIsb25DbGljazplPT5jbG9zZSgpfSxudWxsLDgsWyJvbkNsaWNrIl0pLHQudW5yZWYoQyl8fHQudW5yZWYoayk/dC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOih0Lm9wZW5CbG9jaygpLHQuY3JlYXRlQmxvY2sodSx7a2V5OjAsbGFiZWw6IkdlbmVyYXRlIFFSIixsb2FkaW5nOnQudW5yZWYodiksb25DbGljazplPT5zdGFydENoZWNrb3V0KCl9LG51bGwsOCxbImxvYWRpbmciLCJvbkNsaWNrIl0pKV0pXTthKGA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIiR7bn0+YCksYSh4KHUse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNsb3NlIixvbkNsaWNrOmU9PmNsb3NlKCl9LG51bGwsbCxuKSksdC51bnJlZihDKXx8dC51bnJlZihrKT9hKCJceDNjIS0tLS1ceDNlIik6YSh4KHUse2xhYmVsOiJHZW5lcmF0ZSBRUiIsbG9hZGluZzp0LnVucmVmKHYpLG9uQ2xpY2s6ZT0+c3RhcnRDaGVja291dCgpfSxudWxsLGwsbikpLGEoIjwvZGl2PiIpfSksXzoxfSxzKSl9fX0pLE49ay5zZXR1cDtrLnNldHVwPShlLGEpPT57Y29uc3QgbD10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9iaWxsaW5nL2FwcC9jb21wb25lbnRzL0JpbGxpbmcvQmlsbGluZ01vZGFsLnZ1ZSIpLE4/TihlLGEpOnZvaWQgMH07Y29uc3QgQz1PYmplY3QuYXNzaWduKGsse19fbmFtZToiQmlsbGluZ01vZGFsIn0pLGg9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiYmlsbGluZyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAocyl7YSh7dGl0bGU6IkJpbGxpbmcifSk7Y29uc3Qgbz1wKCkse2RhdGE6cixyZWZyZXNoOm0sZXJyb3I6Z309bCgiYmlsbGluZy1iYWxhbmNlIiwoKT0+by5mZXRjaEJhbGFuY2UoKSx7ZGVmYXVsdDooKT0+KHtiYWxhbmNlOjB9KX0pO2YoZyk7Y29uc3QgYj10LnJlZigxKSx7ZGF0YTp5LGVycm9yOmt9PWwoKCk9PmBiaWxsaW5nLXRyYW5zYWN0aW9ucy0ke2IudmFsdWV9YCwoKT0+by5mZXRjaFRyYW5zYWN0aW9ucyhiLnZhbHVlKSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxwYWdlOjEsbGltaXQ6MjB9KSx3YXRjaDpbYl19KTtmKGspO2NvbnN0IE49dC5yZWYoITEpLGg9W3thY2Nlc3NvcktleToidHlwZSIsaGVhZGVyOiJUeXBlIn0se2FjY2Vzc29yS2V5OiJzdGF0dXMiLGhlYWRlcjoiU3RhdHVzIn0se2FjY2Vzc29yS2V5OiJhbW91bnQiLGhlYWRlcjoiQW1vdW50IixjZWxsOih7cm93OmV9KT0+bmV3IEludGwuTnVtYmVyRm9ybWF0KCJ2aS1WTiIse3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3k6IlZORCJ9KS5mb3JtYXQoZS5vcmlnaW5hbC5hbW91bnQpfSx7YWNjZXNzb3JLZXk6ImNyZWF0ZWRfYXQiLGhlYWRlcjoiRGF0ZSIsY2VsbDooe3JvdzplfSk9Pm5ldyBEYXRlKGUub3JpZ2luYWwuY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9XTtyZXR1cm4oYSxsLHMsbyk9Pntjb25zdCBwPWUsZj1uLGc9YyxrPWksVj11LEI9ZDtsKGA8ZGl2JHt2KHQubWVyZ2VQcm9wcyh7Y2xhc3M6InNwYWNlLXktNiJ9LG8pKX0+YCksbCh4KHAse3RpdGxlOiJCaWxsaW5nIixkZXNjcmlwdGlvbjoiT3JnYW5pemF0aW9uIGNyZWRpdCBiYWxhbmNlIGFuZCB0b3AtdXAuIix2YXJpYW50OiJuYWtlZCIsb3JpZW50YXRpb246Imhvcml6b250YWwifSx7ZGVmYXVsdDp0LndpdGhDdHgoKGUsYSxsLG4pPT57aWYoIWEpcmV0dXJuW3QuY3JlYXRlVk5vZGUoZix7bGFiZWw6IlRvcCB1cCIsaWNvbjoiaS1sdWNpZGUtcGx1cyIsY2xhc3M6InctZml0IGxnOm1zLWF1dG8iLG9uQ2xpY2s6ZT0+Ti52YWx1ZT0hMH0sbnVsbCw4LFsib25DbGljayJdKV07YSh4KGYse2xhYmVsOiJUb3AgdXAiLGljb246ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIixvbkNsaWNrOmU9Pk4udmFsdWU9ITB9LG51bGwsbCxuKSl9KSxfOjF9LHMpKSxsKHgocCx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGEsbCxuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKGcse2xhYmVsOiJDcmVkaXQgYmFsYW5jZSIsY2xhc3M6ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtNCJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoayx7bGFiZWw6YCR7dC51bnJlZihyKS5iYWxhbmNlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpfSDigqtgLGNvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6ImxnIn0sbnVsbCw4LFsibGFiZWwiXSldKSxfOjJ9LDEwMjQpXTthKHgoZyx7bGFiZWw6IkNyZWRpdCBiYWxhbmNlIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGEsbCxuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKGsse2xhYmVsOmAke3QudW5yZWYocikuYmFsYW5jZS50b0xvY2FsZVN0cmluZygidmktVk4iKX0g4oKrYCxjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixzaXplOiJsZyJ9LG51bGwsOCxbImxhYmVsIl0pXTthKHgoayx7bGFiZWw6YCR7dC51bnJlZihyKS5iYWxhbmNlLnRvTG9jYWxlU3RyaW5nKCJ2aS1WTiIpfSDigqtgLGNvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6ImxnIn0sbnVsbCxsLG4pKX0pLF86MX0sbCxuKSl9KSxfOjF9LHMpKSxsKCc8ZGl2PjxoMyBjbGFzcz0idGV4dC1zbSBmb250LXNlbWlib2xkIG1iLTMgdGV4dC1tdXRlZCI+IFRyYW5zYWN0aW9ucyA8L2gzPicpLGwoeChWLHtkYXRhOnQudW5yZWYoeSk/Lml0ZW1zPz9bXSxjb2x1bW5zOmh9LG51bGwscykpLCh0LnVucmVmKHkpPy5pdGVtcz8ubGVuZ3RoPz8wKT09PXQudW5yZWYoeSk/LmxpbWl0PyhsKCc8ZGl2IGNsYXNzPSJtdC0zIGZsZXgganVzdGlmeS1lbmQiPicpLGwoeChCLHtwYWdlOnQudW5yZWYoYiksIm9uVXBkYXRlOnBhZ2UiOmU9PnQuaXNSZWYoYik/Yi52YWx1ZT1lOm51bGwsdG90YWw6dC51bnJlZihiKSp0LnVucmVmKHkpLmxpbWl0KzEsInBhZ2UtY291bnQiOnQudW5yZWYoeSkubGltaXR9LG51bGwscykpLGwoIjwvZGl2PiIpKTpsKCJceDNjIS0tLS1ceDNlIiksbCgiPC9kaXY+IiksbCh4KEMse29wZW46dC51bnJlZihOKSwib25VcGRhdGU6b3BlbiI6ZT0+dC5pc1JlZihOKT9OLnZhbHVlPWU6bnVsbCxvblN1Y2Nlc3M6ZT0+dC51bnJlZihtKSgpfSxudWxsLHMpKSxsKCI8L2Rpdj4iKX19fSksVj1oLnNldHVwO2guc2V0dXA9KGUsYSk9Pntjb25zdCBsPXQudXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL3NldHRpbmdzL2JpbGxpbmcudnVlIiksVj9WKGUsYSk6dm9pZCAwfTtleHBvcnR7aCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmlsbGluZy1Cd3E4TllNXy5tanMubWFwCg==", "chunks/build/client.precomputed.mjs": "Y29uc3QgZT17ZGVwZW5kZW5jaWVzOnsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOntzY3JpcHRzOnsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnM9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJvOHRkX0cwSi5qcyIsbmFtZToiZW50cnkiLHNyYzoiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLGlzRW50cnk6ITAsZHluYW1pY0ltcG9ydHM6WyJsYXlvdXRzL2RlZmF1bHQudnVlIiwiLi4vbGF5ZXJzL2F1dGgvYXBwL2xheW91dHMvYXV0aC52dWUiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTQwNC52dWUiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWUiXSxjc3M6WyJlbnRyeS56ZFQzMUVZNS5jc3MiXSxhc3NldHM6W119fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnA9e2ZpbGU6ImVudHJ5LnpkVDMxRVk1LmNzcyIscmVzb3VyY2VUeXBlOiJzdHlsZSIscHJlZmV0Y2g6ITAscHJlbG9hZDohMH19LHByZWxvYWQ6eyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvbGF5b3V0cy9hdXRoLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL2xheW91dHMvYXV0aC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRGwtRHptN3ouanMiLG5hbWU6ImF1dGgiLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL2xheW91dHMvYXV0aC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX1pKVmswb2xOLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfWkpWazBvbE4uanMiOmQ9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJaSlZrMG9sTi5qcyIsbmFtZToiQWxlcnQiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0JTUktxR3JQLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQlNSS3FHclAuanMiOnQ9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJCU1JLcUdyUC5qcyIsbmFtZToiQ2FyZCIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvYXV0aC9sb2dpbi52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9hdXRoL2xvZ2luLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEX2N1LXFNUi5qcyIsbmFtZToibG9naW4iLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2F1dGgvbG9naW4udnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfWkpWazBvbE4uanMiLCJfQlNSS3FHclAuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9aSlZrMG9sTi5qcyI6ZCwiX0JTUktxR3JQLmpzIjp0fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvZm9yYmlkZGVuLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2ZvcmJpZGRlbi52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRFdmV3FNSnEuanMiLG5hbWU6ImZvcmJpZGRlbiIsc3JjOiIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvZm9yYmlkZGVuLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvam9pbi9bdG9rZW5dLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2pvaW4vW3Rva2VuXS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ3hjWnJZM1cuanMiLG5hbWU6Il90b2tlbl8iLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2pvaW4vW3Rva2VuXS52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CU1JLcUdyUC5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0JTUktxR3JQLmpzIjp0fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfRHhDV1FzbmwuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9EeENXUXNubC5qcyI6cj17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkR4Q1dRc25sLmpzIixuYW1lOiJpc1ZhbHVlRXF1YWxPckV4aXN0IixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CdDhTMGRtbC5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0J0OFMwZG1sLmpzIjpuPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQnQ4UzBkbWwuanMiLG5hbWU6InV0aWxzIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9EdmRoeXBEaS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0R2ZGh5cERpLmpzIjpvPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRHZkaHlwRGkuanMiLG5hbWU6IlJvdmluZ0ZvY3VzR3JvdXAiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CdDhTMGRtbC5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0J0OFMwZG1sLmpzIjpufSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ1lhbXpMbTUuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DWWFtekxtNS5qcyI6dT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNZYW16TG01LmpzIixuYW1lOiJLYmQiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9EdmRoeXBEaS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm59LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9fMmxTZHIxMy5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX18ybFNkcjEzLmpzIjppPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiXzJsU2RyMTMuanMiLG5hbWU6IkJhZGdlIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9DWG9jNFVFUi5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0NYb2M0VUVSLmpzIjpsPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ1hvYzRVRVIuanMiLG5hbWU6IlRvb2x0aXAiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DWWFtekxtNS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0NZYW16TG01LmpzIjp1LCJfRHZkaHlwRGkuanMiOm8sIl9CdDhTMGRtbC5qcyI6bn0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0RUdlhULW5SLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfRFR2WFQtblIuanMiOmI9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEVHZYVC1uUi5qcyIsbmFtZToiTmF2aWdhdGlvbk1lbnUiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9EeENXUXNubC5qcyIsIl9DWWFtekxtNS5qcyIsIl9fMmxTZHIxMy5qcyIsIl9DWG9jNFVFUi5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0R4Q1dRc25sLmpzIjpyLCJfQ1lhbXpMbTUuanMiOnUsIl9EdmRoeXBEaS5qcyI6bywiX0J0OFMwZG1sLmpzIjpuLCJfXzJsU2RyMTMuanMiOmksIl9DWG9jNFVFUi5qcyI6bH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0NjTU1GMWc5LmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQ2NNTUYxZzkuanMiOmM9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDY01NRjFnOS5qcyIsbmFtZToiRGFzaGJvYXJkVG9vbGJhciIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ3RhMTVzRy0uanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DdGExNXNHLS5qcyI6bT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkN0YTE1c0ctLmpzIixuYW1lOiJEYXNoYm9hcmRSZXNpemVIYW5kbGUiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0MxT1FpeVVELmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQzFPUWl5VUQuanMiOl89e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDMU9RaXlVRC5qcyIsbmFtZToiRGFzaGJvYXJkUGFuZWwiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DdGExNXNHLS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ2M2emloLVIuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DYzZ6aWgtUi5qcyI6YT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNjNnppaC1SLmpzIixuYW1lOiJEYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DdGExNXNHLS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQmhXUzE4aTcuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9CaFdTMThpNy5qcyI6eT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJoV1MxOGk3LmpzIixuYW1lOiJEYXNoYm9hcmRTaWRlYmFyVG9nZ2xlIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ3RhMTVzRy0uanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DdGExNXNHLS5qcyI6bX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX2docVliSVNULmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfZ2hxWWJJU1QuanMiOmo9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJnaHFZYklTVC5qcyIsbmFtZToiRGFzaGJvYXJkTmF2YmFyIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ3RhMTVzRy0uanMiLCJfQmhXUzE4aTcuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DdGExNXNHLS5qcyI6bSwiX0JoV1MxOGk3LmpzIjp5fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQmQ0LU9jMzYuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9CZDQtT2MzNi5qcyI6VD17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJkNC1PYzM2LmpzIixuYW1lOiJEYXNoYm9hcmROYXZiYXIudnVlIixpbXBvcnRzOlsiX0NjNnppaC1SLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfZ2hxWWJJU1QuanMiXX0sIl9DYzZ6aWgtUi5qcyI6YSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptLCJfZ2hxWWJJU1QuanMiOmosIl9CaFdTMThpNy5qcyI6eX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24udnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNzSzUxcXRkLmpzIixuYW1lOiJvcmdhbml6YXRpb24iLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfRFR2WFQtblIuanMiLCJfQ2NNTUYxZzkuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DMU9RaXlVRC5qcyIsIl9CZDQtT2MzNi5qcyIsIl9EeENXUXNubC5qcyIsIl9DWWFtekxtNS5qcyIsIl9EdmRoeXBEaS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9fMmxTZHIxMy5qcyIsIl9DWG9jNFVFUi5qcyIsIl9DdGExNXNHLS5qcyIsIl9DYzZ6aWgtUi5qcyIsIl9naHFZYklTVC5qcyIsIl9CaFdTMThpNy5qcyJdfSwiX0RUdlhULW5SLmpzIjpiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfRHhDV1FzbmwuanMiOnIsIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9fMmxTZHIxMy5qcyI6aSwiX0NYb2M0VUVSLmpzIjpsLCJfQ2NNTUYxZzkuanMiOmMsIl9DMU9RaXlVRC5qcyI6XywiX0N0YTE1c0ctLmpzIjptLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CMU1lTHJpMy5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0IxTWVMcmkzLmpzIjpmPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQjFNZUxyaTMuanMiLG5hbWU6IlBhZ2VDYXJkIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9kXzBOd1FMVS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX2RfME53UUxVLmpzIjp4PXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiZF8wTndRTFUuanMiLG5hbWU6IlNlcGFyYXRvciIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfN2NWU09DY3UuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il83Y1ZTT0NjdS5qcyI6aD17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IjdjVlNPQ2N1LmpzIixuYW1lOiJTZXBhcmF0b3IiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9kXzBOd1FMVS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX2RfME53UUxVLmpzIjp4fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL2luZGV4LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbmRleC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ0lDN3ZzWjUuanMiLG5hbWU6ImluZGV4IixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW5kZXgudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQjFNZUxyaTMuanMiLCJfN2NWU09DY3UuanMiLCJfXzJsU2RyMTMuanMiLCJfZF8wTndRTFUuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9CMU1lTHJpMy5qcyI6ZiwiXzdjVlNPQ2N1LmpzIjpoLCJfZF8wTndRTFUuanMiOngsIl9fMmxTZHIxMy5qcyI6aX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0I3czVwampSLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQjdzNXBqalIuanMiOlk9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJCN3M1cGpqUi5qcyIsbmFtZToidXNlRmlsdGVyIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9tMjBrZEd4VS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX20yMGtkR3hVLmpzIjpDPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToibTIwa2RHeFUuanMiLG5hbWU6IlZpc3VhbGx5SGlkZGVuSW5wdXQiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0M3WXk2dFIzLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQzdZeTZ0UjMuanMiOkU9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDN1l5NnRSMy5qcyIsbmFtZToiaW5kZXgiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0RIQ3dFTFdwLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfREhDd0VMV3AuanMiOno9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJESEN3RUxXcC5qcyIsbmFtZToidmlydHVhbGl6ZXIiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9tMjBrZEd4VS5qcyIsIl9DN1l5NnRSMy5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0J0OFMwZG1sLmpzIjpuLCJfbTIwa2RHeFUuanMiOkMsIl9DN1l5NnRSMy5qcyI6RX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX1dtRFhIWUtrLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfV21EWEhZS2suanMiOnY9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJXbURYSFlLay5qcyIsbmFtZToiU2VsZWN0TWVudSIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0I3czVwampSLmpzIiwiX0RIQ3dFTFdwLmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQjdzNXBqalIuanMiOlksIl9ESEN3RUxXcC5qcyI6eiwiX0J0OFMwZG1sLmpzIjpuLCJfbTIwa2RHeFUuanMiOkMsIl9DN1l5NnRSMy5qcyI6RX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0NXOGZLbkZFLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQ1c4ZktuRkUuanMiOmc9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDVzhmS25GRS5qcyIsbmFtZToiVGFibGUiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DN1l5NnRSMy5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0M3WXk2dFIzLmpzIjpFfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ0FVQVg1VnIuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DQVVBWDVWci5qcyI6RD17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNBVUFYNVZyLmpzIixuYW1lOiJTd2l0Y2giLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9tMjBrZEd4VS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX20yMGtkR3hVLmpzIjpDfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ2ZfZncxRTkuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DZl9mdzFFOS5qcyI6Qj17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNmX2Z3MUU5LmpzIixuYW1lOiJ1c2VQcm9qZWN0QXBpIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CQXVuaS1xZC5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0JBdW5pLXFkLmpzIjpTPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQkF1bmktcWQuanMiLG5hbWU6InVzZUluZmluaXRlTGlzdCIsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfRG03OTRxeEkuanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9EbTc5NHF4SS5qcyI6Uj17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRtNzk0cXhJLmpzIixuYW1lOiJ1cmwiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9tZW1iZXJzLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9tZW1iZXJzLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDZmhZRllPWS5qcyIsbmFtZToibWVtYmVycyIsc3JjOiIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL21lbWJlcnMudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX1pKVmswb2xOLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfXzJsU2RyMTMuanMiLCJfV21EWEhZS2suanMiLCJfQlNSS3FHclAuanMiLCJfQ1c4ZktuRkUuanMiLCJfQ0FVQVg1VnIuanMiLCJfQ2ZfZncxRTkuanMiLCJfQkF1bmktcWQuanMiLCJfRG03OTRxeEkuanMiLCJfQjdzNXBqalIuanMiLCJfREhDd0VMV3AuanMiLCJfQnQ4UzBkbWwuanMiLCJfbTIwa2RHeFUuanMiLCJfQzdZeTZ0UjMuanMiXX0sIl9aSlZrMG9sTi5qcyI6ZCwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX18ybFNkcjEzLmpzIjppLCJfV21EWEhZS2suanMiOnYsIl9CN3M1cGpqUi5qcyI6WSwiX0RIQ3dFTFdwLmpzIjp6LCJfQnQ4UzBkbWwuanMiOm4sIl9tMjBrZEd4VS5qcyI6QywiX0M3WXk2dFIzLmpzIjpFLCJfQlNSS3FHclAuanMiOnQsIl9DVzhmS25GRS5qcyI6ZywiX0NBVUFYNVZyLmpzIjpELCJfQ2ZfZncxRTkuanMiOkIsIl9CQXVuaS1xZC5qcyI6UywiX0RtNzk0cXhJLmpzIjpSfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL3JvbGVzLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9yb2xlcy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQld2cWx3NWYuanMiLG5hbWU6InJvbGVzIixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vcm9sZXMudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQjFNZUxyaTMuanMiLCJfRHhDV1FzbmwuanMiLCJfbTIwa2RHeFUuanMiLCJfQnQ4UzBkbWwuanMiLCJfRHZkaHlwRGkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9CMU1lTHJpMy5qcyI6ZiwiX0R4Q1dRc25sLmpzIjpyLCJfbTIwa2RHeFUuanMiOkMsIl9CdDhTMGRtbC5qcyI6biwiX0R2ZGh5cERpLmpzIjpvfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfQ2w0aTRyU00uanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9DbDRpNHJTTS5qcyI6Rz17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkNsNGk0clNNLmpzIixuYW1lOiJEYXNoYm9hcmRTZXNzaW9uQ2FyZC52dWUiLGltcG9ydHM6WyJfXzJsU2RyMTMuanMiLCJfQlNSS3FHclAuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiX18ybFNkcjEzLmpzIjppLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQlNSS3FHclAuanMiOnR9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zYW5kYm94L2ltcGVyc29uYXRlLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NhbmRib3gvaW1wZXJzb25hdGUudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRUVExyNUhyLmpzIixuYW1lOiJpbXBlcnNvbmF0ZSIsc3JjOiIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2FuZGJveC9pbXBlcnNvbmF0ZS52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQzFPUWl5VUQuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9CU1JLcUdyUC5qcyIsIl9DbDRpNHJTTS5qcyIsIl9DdGExNXNHLS5qcyIsIl9CaFdTMThpNy5qcyIsIl9fMmxTZHIxMy5qcyJdfSwiX0NjNnppaC1SLmpzIjphLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQ3RhMTVzRy0uanMiOm0sIl9naHFZYklTVC5qcyI6aiwiX0JoV1MxOGk3LmpzIjp5LCJfQzFPUWl5VUQuanMiOl8sIl9CU1JLcUdyUC5qcyI6dCwiX0NsNGk0clNNLmpzIjpHLCJfXzJsU2RyMTMuanMiOml9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ3F5V3JOTnguanMiLG5hbWU6InNldHRpbmdzIixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfRFR2WFQtblIuanMiLCJfQ2NNTUYxZzkuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DMU9RaXlVRC5qcyIsIl9CZDQtT2MzNi5qcyIsIl9EeENXUXNubC5qcyIsIl9DWWFtekxtNS5qcyIsIl9EdmRoeXBEaS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9fMmxTZHIxMy5qcyIsIl9DWG9jNFVFUi5qcyIsIl9DdGExNXNHLS5qcyIsIl9DYzZ6aWgtUi5qcyIsIl9naHFZYklTVC5qcyIsIl9CaFdTMThpNy5qcyJdfSwiX0RUdlhULW5SLmpzIjpiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfRHhDV1FzbmwuanMiOnIsIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9fMmxTZHIxMy5qcyI6aSwiX0NYb2M0VUVSLmpzIjpsLCJfQ2NNTUYxZzkuanMiOmMsIl9DMU9RaXlVRC5qcyI6XywiX0N0YTE1c0ctLmpzIjptLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9ET0NGRFRjWS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0RPQ0ZEVGNZLmpzIjpVPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRE9DRkRUY1kuanMiLG5hbWU6IkZvcm0iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0J1TFN1QThNLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6e30scHJlbG9hZDp7Il9CdUxTdUE4TS5qcyI6TT17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJ1TFN1QThNLmpzIixuYW1lOiJzY2hlbWFzIn19LHByZWZldGNoOnt9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJCTXliRzRPay5qcyIsbmFtZToiaW5kZXgiLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0IxTWVMcmkzLmpzIiwiXzdjVlNPQ2N1LmpzIiwiX0RPQ0ZEVGNZLmpzIiwiX0J1TFN1QThNLmpzIiwiX2RfME53UUxVLmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQjFNZUxyaTMuanMiOmYsIl83Y1ZTT0NjdS5qcyI6aCwiX2RfME53UUxVLmpzIjp4LCJfRE9DRkRUY1kuanMiOlUsIl9CdUxTdUE4TS5qcyI6TX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL25vdGlmaWNhdGlvbnMudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvbm90aWZpY2F0aW9ucy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ1ltbE1JWHouanMiLG5hbWU6Im5vdGlmaWNhdGlvbnMiLHNyYzoiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL25vdGlmaWNhdGlvbnMudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX0IxTWVMcmkzLmpzIiwiX0NBVUFYNVZyLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfbTIwa2RHeFUuanMiXX0sIl9CMU1lTHJpMy5qcyI6ZiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0NBVUFYNVZyLmpzIjpELCJfbTIwa2RHeFUuanMiOkN9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9zZWN1cml0eS52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9zZWN1cml0eS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQnJOUlZJQkEuanMiLG5hbWU6InNlY3VyaXR5IixzcmM6Ii4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9zZWN1cml0eS52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyJfQjFNZUxyaTMuanMiLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiX0IxTWVMcmkzLmpzIjpmLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCJfRGM0NlF3REouanMiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Il9EYzQ2UXdESi5qcyI6Vz17cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRjNDZRd0RKLmpzIixuYW1lOiJ1c2VCaWxsaW5nQXBpIixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9iaWxsaW5nL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW52b2ljZS52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9iaWxsaW5nL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW52b2ljZS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRHVFQWZuaHEuanMiLG5hbWU6Imludm9pY2UiLHNyYzoiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbnZvaWNlLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0IxTWVMcmkzLmpzIiwiX0NXOGZLbkZFLmpzIiwiX0RjNDZRd0RKLmpzIiwiX0M3WXk2dFIzLmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQjFNZUxyaTMuanMiOmYsIl9DVzhmS25GRS5qcyI6ZywiX0M3WXk2dFIzLmpzIjpFLCJfRGM0NlF3REouanMiOld9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CZFpYNXhnZi5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0JkWlg1eGdmLmpzIjpMPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQmRaWDV4Z2YuanMiLG5hbWU6IlBhZ2luYXRpb24iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL3NldHRpbmdzL2JpbGxpbmcudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvYmlsbGluZy9hcHAvcGFnZXMvc2V0dGluZ3MvYmlsbGluZy52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQmVFTUN5dVouanMiLG5hbWU6ImJpbGxpbmciLHNyYzoiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL3NldHRpbmdzL2JpbGxpbmcudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQjFNZUxyaTMuanMiLCJfXzJsU2RyMTMuanMiLCJfQ1c4ZktuRkUuanMiLCJfQmRaWDV4Z2YuanMiLCJfRGM0NlF3REouanMiLCJfQzdZeTZ0UjMuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9CMU1lTHJpMy5qcyI6ZiwiX18ybFNkcjEzLmpzIjppLCJfQ1c4ZktuRkUuanMiOmcsIl9DN1l5NnRSMy5qcyI6RSwiX0JkWlg1eGdmLmpzIjpMLCJfRGM0NlF3REouanMiOld9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9EWVpsZzAtNS5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0RZWmxnMC01LmpzIjpxPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRFlabGcwLTUuanMiLG5hbWU6InVzZVByb2R1Y3RBcGkiLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiX0NHWGdTTVpoLmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfQ0dYZ1NNWmguanMiOlg9e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDR1hnU01aaC5qcyIsbmFtZToiU2tlbGV0b24iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiXzRsSG15SGJILmpzIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyJfNGxIbXlIYkguanMiOk89e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiI0bEhteUhiSC5qcyIsbmFtZToiRHJvcGRvd25NZW51IixpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ1lhbXpMbTUuanMiLCJfQjdzNXBqalIuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9CN3M1cGpqUi5qcyI6WX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL3Byb2R1Y3QvYXBwL3BhZ2VzL3Byb2R1Y3RzLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3Byb2R1Y3QvYXBwL3BhZ2VzL3Byb2R1Y3RzLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEcEF2dE44Zy5qcyIsbmFtZToicHJvZHVjdHMiLHNyYzoiLi4vbGF5ZXJzL3Byb2R1Y3QvYXBwL3BhZ2VzL3Byb2R1Y3RzLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX0MxT1FpeVVELmpzIiwiX0RZWmxnMC01LmpzIiwiX0RPQ0ZEVGNZLmpzIiwiX0J1TFN1QThNLmpzIiwiX0NHWGdTTVpoLmpzIiwiX18ybFNkcjEzLmpzIiwiXzRsSG15SGJILmpzIiwiX0JkNC1PYzM2LmpzIiwiX0N0YTE1c0ctLmpzIiwiX0NZYW16TG01LmpzIiwiX0R2ZGh5cERpLmpzIiwiX0J0OFMwZG1sLmpzIiwiX0I3czVwampSLmpzIiwiX0NjNnppaC1SLmpzIiwiX2docVliSVNULmpzIiwiX0JoV1MxOGk3LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfQzFPUWl5VUQuanMiOl8sIl9DdGExNXNHLS5qcyI6bSwiX0RZWmxnMC01LmpzIjpxLCJfRE9DRkRUY1kuanMiOlUsIl9CdUxTdUE4TS5qcyI6TSwiX0NHWGdTTVpoLmpzIjpYLCJfXzJsU2RyMTMuanMiOmksIl80bEhteUhiSC5qcyI6TywiX0NZYW16TG01LmpzIjp1LCJfRHZkaHlwRGkuanMiOm8sIl9CdDhTMGRtbC5qcyI6biwiX0I3czVwampSLmpzIjpZLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9baWRdLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3Byb2plY3QvYXBwL3BhZ2VzL3Byb2plY3RzL1tpZF0udnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6ImNkS19BNk5tLmpzIixuYW1lOiJfaWRfIixzcmM6Ii4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9baWRdLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX18ybFNkcjEzLmpzIiwiX0NHWGdTTVpoLmpzIiwiX0MxT1FpeVVELmpzIiwiX0RZWmxnMC01LmpzIiwiX0NmX2Z3MUU5LmpzIiwiX0JkNC1PYzM2LmpzIiwiX0N0YTE1c0ctLmpzIiwiX0NjNnppaC1SLmpzIiwiX2docVliSVNULmpzIiwiX0JoV1MxOGk3LmpzIl19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyI6cywiZW50cnkuemRUMzFFWTUuY3NzIjpwLCJfXzJsU2RyMTMuanMiOmksIl9DR1hnU01aaC5qcyI6WCwiX0MxT1FpeVVELmpzIjpfLCJfQ3RhMTVzRy0uanMiOm0sIl9EWVpsZzAtNS5qcyI6cSwiX0NmX2Z3MUU5LmpzIjpCLCJfQmQ0LU9jMzYuanMiOlQsIl9DYzZ6aWgtUi5qcyI6YSwiX2docVliSVNULmpzIjpqLCJfQmhXUzE4aTcuanMiOnl9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9pbmRleC52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9pbmRleC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQ29JZHo0a2EuanMiLG5hbWU6ImluZGV4IixzcmM6Ii4uL2xheWVycy9wcm9qZWN0L2FwcC9wYWdlcy9wcm9qZWN0cy9pbmRleC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DMU9RaXlVRC5qcyIsIl9DZl9mdzFFOS5qcyIsIl9ET0NGRFRjWS5qcyIsIl9CdUxTdUE4TS5qcyIsIl9DR1hnU01aaC5qcyIsIl9fMmxTZHIxMy5qcyIsIl80bEhteUhiSC5qcyIsIl9CZDQtT2MzNi5qcyIsIl9DdGExNXNHLS5qcyIsIl9DWWFtekxtNS5qcyIsIl9EdmRoeXBEaS5qcyIsIl9CdDhTMGRtbC5qcyIsIl9CN3M1cGpqUi5qcyIsIl9DYzZ6aWgtUi5qcyIsIl9naHFZYklTVC5qcyIsIl9CaFdTMThpNy5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0MxT1FpeVVELmpzIjpfLCJfQ3RhMTVzRy0uanMiOm0sIl9DZl9mdzFFOS5qcyI6QiwiX0RPQ0ZEVGNZLmpzIjpVLCJfQnVMU3VBOE0uanMiOk0sIl9DR1hnU01aaC5qcyI6WCwiX18ybFNkcjEzLmpzIjppLCJfNGxIbXlIYkguanMiOk8sIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQnQ4UzBkbWwuanMiOm4sIl9CN3M1cGpqUi5qcyI6WSwiX0JkNC1PYzM2LmpzIjpULCJfQ2M2emloLVIuanMiOmEsIl9naHFZYklTVC5qcyI6aiwiX0JoV1MxOGk3LmpzIjp5fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvcmVmZXJyYWwvYXBwL3BhZ2VzL3JlZmVycmFsLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9wYWdlcy9yZWZlcnJhbC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQlN5MGkyQWYuanMiLG5hbWU6InJlZmVycmFsIixzcmM6Ii4uL2xheWVycy9yZWZlcnJhbC9hcHAvcGFnZXMvcmVmZXJyYWwudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX18ybFNkcjEzLmpzIiwiX0IxTWVMcmkzLmpzIiwiX0JTUktxR3JQLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ1c4ZktuRkUuanMiLCJfQmRaWDV4Z2YuanMiLCJfQzFPUWl5VUQuanMiLCJfRG03OTRxeEkuanMiLCJfQmQ0LU9jMzYuanMiLCJfQzdZeTZ0UjMuanMiLCJfQ3RhMTVzRy0uanMiLCJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQmhXUzE4aTcuanMiXX0sIl9fMmxTZHIxMy5qcyI6aSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0IxTWVMcmkzLmpzIjpmLCJfQlNSS3FHclAuanMiOnQsIl9DVzhmS25GRS5qcyI6ZywiX0M3WXk2dFIzLmpzIjpFLCJfQmRaWDV4Z2YuanMiOkwsIl9DMU9RaXlVRC5qcyI6XywiX0N0YTE1c0ctLmpzIjptLCJfRG03OTRxeEkuanMiOlIsIl9CZDQtT2MzNi5qcyI6VCwiX0NjNnppaC1SLmpzIjphLCJfZ2hxWWJJU1QuanMiOmosIl9CaFdTMThpNy5qcyI6eX0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL3NlbGZob3N0L2FwcC9wYWdlcy9zZXR0aW5ncy9zZWxmLWhvc3QudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiRHRTdGZWbVQuanMiLG5hbWU6InNlbGYtaG9zdCIsc3JjOiIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9aSlZrMG9sTi5qcyIsIl9fMmxTZHIxMy5qcyIsIl9CU1JLcUdyUC5qcyIsIl9DMU9RaXlVRC5qcyIsIl9DdGExNXNHLS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX1pKVmswb2xOLmpzIjpkLCJfXzJsU2RyMTMuanMiOmksIl9CU1JLcUdyUC5qcyI6dCwiX0MxT1FpeVVELmpzIjpfLCJfQ3RhMTVzRy0uanMiOm19LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIl9CWmxOTmZrNC5qcyI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiX0JabE5OZms0LmpzIjprPXtyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQlpsTk5mazQuanMiLG5hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24iLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiLi4vbGF5ZXJzL3N1cHBvcnQvYXBwL3BhZ2VzL3N1cHBvcnQudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvc3VwcG9ydC9hcHAvcGFnZXMvc3VwcG9ydC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQkZPTm82M1guanMiLG5hbWU6InN1cHBvcnQiLHNyYzoiLi4vbGF5ZXJzL3N1cHBvcnQvYXBwL3BhZ2VzL3N1cHBvcnQudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX2docVliSVNULmpzIiwiX18ybFNkcjEzLmpzIiwiX0MxT1FpeVVELmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQlpsTk5mazQuanMiLCJfQ3RhMTVzRy0uanMiLCJfQmhXUzE4aTcuanMiXX0sIl9naHFZYklTVC5qcyI6aiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptLCJfQmhXUzE4aTcuanMiOnksIl9fMmxTZHIxMy5qcyI6aSwiX0MxT1FpeVVELmpzIjpfLCJfQlpsTk5mazQuanMiOmt9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiQlNHdDN4UlcuanMiLG5hbWU6InN5c3RlbSIsc3JjOiIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0udnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX0RUdlhULW5SLmpzIiwiX0NjTU1GMWc5LmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQzFPUWl5VUQuanMiLCJfQmQ0LU9jMzYuanMiLCJfRHhDV1FzbmwuanMiLCJfQ1lhbXpMbTUuanMiLCJfRHZkaHlwRGkuanMiLCJfQnQ4UzBkbWwuanMiLCJfXzJsU2RyMTMuanMiLCJfQ1hvYzRVRVIuanMiLCJfQ3RhMTVzRy0uanMiLCJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQmhXUzE4aTcuanMiXX0sIl9EVHZYVC1uUi5qcyI6YiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0R4Q1dRc25sLmpzIjpyLCJfQ1lhbXpMbTUuanMiOnUsIl9EdmRoeXBEaS5qcyI6bywiX0J0OFMwZG1sLmpzIjpuLCJfXzJsU2RyMTMuanMiOmksIl9DWG9jNFVFUi5qcyI6bCwiX0NjTU1GMWc5LmpzIjpjLCJfQzFPUWl5VUQuanMiOl8sIl9DdGExNXNHLS5qcyI6bSwiX0JkNC1PYzM2LmpzIjpULCJfQ2M2emloLVIuanMiOmEsIl9naHFZYklTVC5qcyI6aiwiX0JoV1MxOGk3LmpzIjp5fSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vaW5kZXgudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vaW5kZXgudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IjFESWtCeU1kLmpzIixuYW1lOiJpbmRleCIsc3JjOiIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vaW5kZXgudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS9ub3RpZmljYXRpb25zLnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL25vdGlmaWNhdGlvbnMudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkRiQzRwM1FBLmpzIixuYW1lOiJub3RpZmljYXRpb25zIixzcmM6Ii4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS9ub3RpZmljYXRpb25zLnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIl9CMU1lTHJpMy5qcyIsIl9DQVVBWDVWci5qcyIsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIiwiX1dtRFhIWUtrLmpzIiwiX2RfME53UUxVLmpzIiwiXzRsSG15SGJILmpzIiwiX0NYb2M0VUVSLmpzIiwiX1pKVmswb2xOLmpzIiwiX0J1TFN1QThNLmpzIiwiX20yMGtkR3hVLmpzIiwiX0I3czVwampSLmpzIiwiX0RIQ3dFTFdwLmpzIiwiX0J0OFMwZG1sLmpzIiwiX0M3WXk2dFIzLmpzIiwiX0NZYW16TG01LmpzIiwiX0R2ZGh5cERpLmpzIl19LCJfQjFNZUxyaTMuanMiOmYsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DQVVBWDVWci5qcyI6RCwiX20yMGtkR3hVLmpzIjpDLCJfV21EWEhZS2suanMiOnYsIl9CN3M1cGpqUi5qcyI6WSwiX0RIQ3dFTFdwLmpzIjp6LCJfQnQ4UzBkbWwuanMiOm4sIl9DN1l5NnRSMy5qcyI6RSwiX2RfME53UUxVLmpzIjp4LCJfNGxIbXlIYkguanMiOk8sIl9DWWFtekxtNS5qcyI6dSwiX0R2ZGh5cERpLmpzIjpvLCJfQ1hvYzRVRVIuanMiOmwsIl9aSlZrMG9sTi5qcyI6ZCwiX0J1TFN1QThNLmpzIjpNfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vdGlja2V0cy52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS90aWNrZXRzLnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJONkswcnF0Yy5qcyIsbmFtZToidGlja2V0cyIsc3JjOiIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vdGlja2V0cy52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyIsIl9DQVVBWDVWci5qcyIsIl9fMmxTZHIxMy5qcyIsIl9CWmxOTmZrNC5qcyIsIl9tMjBrZEd4VS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0NBVUFYNVZyLmpzIjpELCJfbTIwa2RHeFUuanMiOkMsIl9fMmxTZHIxMy5qcyI6aSwiX0JabE5OZms0LmpzIjprfSxwcmVmZXRjaDp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH19LCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTQwNC52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7Ii4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJEUGZaa2wyZS5qcyIsbmFtZToiZXJyb3ItNDA0IixzcmM6Ii4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSIsaXNEeW5hbWljRW50cnk6ITAsaW1wb3J0czpbIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIl0sY3NzOltdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fSwiZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyI6e3NjcmlwdHM6e30sc3R5bGVzOnt9LHByZWxvYWQ6eyJlcnJvci00MDQuQ0ZVNW9nTm0uY3NzIjp7ZmlsZToiZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyIscmVzb3VyY2VUeXBlOiJzdHlsZSIscHJlZmV0Y2g6ITAscHJlbG9hZDohMH19LHByZWZldGNoOnt9fSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci01MDAudnVlIjp7c2NyaXB0czp7fSxzdHlsZXM6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWxvYWQ6eyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiWlpzZlA5S1ouanMiLG5hbWU6ImVycm9yLTUwMCIsc3JjOiIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdLGNzczpbXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sImVycm9yLTUwMC5CNWFUNFA3Wi5jc3MiOntzY3JpcHRzOnt9LHN0eWxlczp7fSxwcmVsb2FkOnsiZXJyb3ItNTAwLkI1YVQ0UDdaLmNzcyI6e2ZpbGU6ImVycm9yLTUwMC5CNWFUNFA3Wi5jc3MiLHJlc291cmNlVHlwZToic3R5bGUiLHByZWZldGNoOiEwLHByZWxvYWQ6ITB9fSxwcmVmZXRjaDp7fX0sImVudHJ5LnpkVDMxRVk1LmNzcyI6e3NjcmlwdHM6e30sc3R5bGVzOnt9LHByZWxvYWQ6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9LHByZWZldGNoOnt9fSwibGF5b3V0cy9kZWZhdWx0LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsibGF5b3V0cy9kZWZhdWx0LnZ1ZSI6e3Jlc291cmNlVHlwZToic2NyaXB0Iixtb2R1bGU6ITAscHJlZmV0Y2g6ITAscHJlbG9hZDohMCxmaWxlOiJDRkJ0Y0I3by5qcyIsbmFtZToiZGVmYXVsdCIsc3JjOiJsYXlvdXRzL2RlZmF1bHQudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQ3RhMTVzRy0uanMiLCJfQ1lhbXpMbTUuanMiLCJfQ1hvYzRVRVIuanMiLCJfRFR2WFQtblIuanMiLCJfQmhXUzE4aTcuanMiLCJfREhDd0VMV3AuanMiLCJfNGxIbXlIYkguanMiLCJfQkF1bmktcWQuanMiLCJfRHZkaHlwRGkuanMiLCJfQnQ4UzBkbWwuanMiLCJfRHhDV1FzbmwuanMiLCJfXzJsU2RyMTMuanMiLCJfbTIwa2RHeFUuanMiLCJfQzdZeTZ0UjMuanMiLCJfQjdzNXBqalIuanMiXX0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjpzLCJlbnRyeS56ZFQzMUVZNS5jc3MiOnAsIl9DdGExNXNHLS5qcyI6bSwiX0NZYW16TG01LmpzIjp1LCJfRHZkaHlwRGkuanMiOm8sIl9CdDhTMGRtbC5qcyI6biwiX0NYb2M0VUVSLmpzIjpsLCJfRFR2WFQtblIuanMiOmIsIl9EeENXUXNubC5qcyI6ciwiX18ybFNkcjEzLmpzIjppLCJfQmhXUzE4aTcuanMiOnksIl9ESEN3RUxXcC5qcyI6eiwiX20yMGtkR3hVLmpzIjpDLCJfQzdZeTZ0UjMuanMiOkUsIl80bEhteUhiSC5qcyI6TywiX0I3czVwampSLmpzIjpZLCJfQkF1bmktcWQuanMiOlN9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sInBhZ2VzL2Rhc2hib2FyZC52dWUiOntzY3JpcHRzOnt9LHN0eWxlczp7ImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlbG9hZDp7InBhZ2VzL2Rhc2hib2FyZC52dWUiOntyZXNvdXJjZVR5cGU6InNjcmlwdCIsbW9kdWxlOiEwLHByZWZldGNoOiEwLHByZWxvYWQ6ITAsZmlsZToiczNwMGMwM00uanMiLG5hbWU6ImRhc2hib2FyZCIsc3JjOiJwYWdlcy9kYXNoYm9hcmQudnVlIixpc0R5bmFtaWNFbnRyeTohMCxpbXBvcnRzOlsiX0MxT1FpeVVELmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiLCJfQlNSS3FHclAuanMiLCJfQmQ0LU9jMzYuanMiLCJfQ2w0aTRyU00uanMiLCJfQ3RhMTVzRy0uanMiLCJfQ2M2emloLVIuanMiLCJfZ2hxWWJJU1QuanMiLCJfQmhXUzE4aTcuanMiLCJfXzJsU2RyMTMuanMiXX0sIl9DMU9RaXlVRC5qcyI6XywiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cCwiX0N0YTE1c0ctLmpzIjptLCJfQlNSS3FHclAuanMiOnQsIl9CZDQtT2MzNi5qcyI6VCwiX0NjNnppaC1SLmpzIjphLCJfZ2hxWWJJU1QuanMiOmosIl9CaFdTMThpNy5qcyI6eSwiX0NsNGk0clNNLmpzIjpHLCJfXzJsU2RyMTMuanMiOml9LHByZWZldGNoOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfX0sInBhZ2VzL2luZGV4LnZ1ZSI6e3NjcmlwdHM6e30sc3R5bGVzOnsiZW50cnkuemRUMzFFWTUuY3NzIjpwfSxwcmVsb2FkOnsicGFnZXMvaW5kZXgudnVlIjp7cmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1vZHVsZTohMCxwcmVmZXRjaDohMCxwcmVsb2FkOiEwLGZpbGU6IkJoYUdvYXpvLmpzIixuYW1lOiJpbmRleCIsc3JjOiJwYWdlcy9pbmRleC52dWUiLGlzRHluYW1pY0VudHJ5OiEwLGltcG9ydHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdfSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvZW50cnkuanMiOnMsImVudHJ5LnpkVDMxRVk1LmNzcyI6cH0scHJlZmV0Y2g6eyJlbnRyeS56ZFQzMUVZNS5jc3MiOnB9fX0sZW50cnlwb2ludHM6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9lbnRyeS5qcyJdLG1vZHVsZXM6eyIuLi9sYXllcnMvYXV0aC9hcHAvbGF5b3V0cy9hdXRoLnZ1ZSI6e2ZpbGU6IkRsLUR6bTd6LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9hdXRoL2xvZ2luLnZ1ZSI6e2ZpbGU6IkRfY3UtcU1SLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9mb3JiaWRkZW4udnVlIjp7ZmlsZToiRFdmV3FNSnEuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL2pvaW4vW3Rva2VuXS52dWUiOntmaWxlOiJDeGNaclkzVy5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvb3JnYW5pemF0aW9uLnZ1ZSI6e2ZpbGU6IkNzSzUxcXRkLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vaW5kZXgudnVlIjp7ZmlsZToiQ0lDN3ZzWjUuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9tZW1iZXJzLnZ1ZSI6e2ZpbGU6IkNmaFlGWU9ZLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vcm9sZXMudnVlIjp7ZmlsZToiQld2cWx3NWYuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NhbmRib3gvaW1wZXJzb25hdGUudnVlIjp7ZmlsZToiRFRUTHI1SHIuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzLnZ1ZSI6e2ZpbGU6IkNxeVdyTk54LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9pbmRleC52dWUiOntmaWxlOiJCTXliRzRPay5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvbm90aWZpY2F0aW9ucy52dWUiOntmaWxlOiJDWW1sTUlYei5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvc2VjdXJpdHkudnVlIjp7ZmlsZToiQnJOUlZJQkEuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL2JpbGxpbmcvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbnZvaWNlLnZ1ZSI6e2ZpbGU6IkR1RUFmbmhxLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9iaWxsaW5nL2FwcC9wYWdlcy9zZXR0aW5ncy9iaWxsaW5nLnZ1ZSI6e2ZpbGU6IkJlRU1DeXVaLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9wcm9kdWN0L2FwcC9wYWdlcy9wcm9kdWN0cy52dWUiOntmaWxlOiJEcEF2dE44Zy5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvcHJvamVjdC9hcHAvcGFnZXMvcHJvamVjdHMvW2lkXS52dWUiOntmaWxlOiJjZEtfQTZObS5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvcHJvamVjdC9hcHAvcGFnZXMvcHJvamVjdHMvaW5kZXgudnVlIjp7ZmlsZToiQ29JZHo0a2EuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9wYWdlcy9yZWZlcnJhbC52dWUiOntmaWxlOiJCU3kwaTJBZi5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiOntmaWxlOiJEdFN0ZlZtVC5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvc3VwcG9ydC9hcHAvcGFnZXMvc3VwcG9ydC52dWUiOntmaWxlOiJCRk9ObzYzWC5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0udnVlIjp7ZmlsZToiQlNHdDN4UlcuanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL2luZGV4LnZ1ZSI6e2ZpbGU6IjFESWtCeU1kLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS9ub3RpZmljYXRpb25zLnZ1ZSI6e2ZpbGU6IkRiQzRwM1FBLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL2xheWVycy9zeXN0ZW0vYXBwL3BhZ2VzL3N5c3RlbS90aWNrZXRzLnZ1ZSI6e2ZpbGU6Ik42SzBycXRjLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSI6e2ZpbGU6IkRQZlprbDJlLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sImVycm9yLTQwNC5DRlU1b2dObS5jc3MiOntmaWxlOiJlcnJvci00MDQuQ0ZVNW9nTm0uY3NzIixyZXNvdXJjZVR5cGU6InN0eWxlIixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOnZvaWQgMH0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNTAwLnZ1ZSI6e2ZpbGU6Ilpac2ZQOUtaLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sImVycm9yLTUwMC5CNWFUNFA3Wi5jc3MiOntmaWxlOiJlcnJvci01MDAuQjVhVDRQN1ouY3NzIixyZXNvdXJjZVR5cGU6InN0eWxlIixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOnZvaWQgMH0sIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2VudHJ5LmpzIjp7ZmlsZToibzh0ZF9HMEouanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwiZW50cnkuemRUMzFFWTUuY3NzIjp7ZmlsZToiZW50cnkuemRUMzFFWTUuY3NzIixyZXNvdXJjZVR5cGU6InN0eWxlIixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOnZvaWQgMH0sIl80bEhteUhiSC5qcyI6e2ZpbGU6IjRsSG15SGJILmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl83Y1ZTT0NjdS5qcyI6e2ZpbGU6IjdjVlNPQ2N1LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CMU1lTHJpMy5qcyI6e2ZpbGU6IkIxTWVMcmkzLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CN3M1cGpqUi5qcyI6e2ZpbGU6IkI3czVwampSLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CQXVuaS1xZC5qcyI6e2ZpbGU6IkJBdW5pLXFkLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CU1JLcUdyUC5qcyI6e2ZpbGU6IkJTUktxR3JQLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CWmxOTmZrNC5qcyI6e2ZpbGU6IkJabE5OZms0LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CZDQtT2MzNi5qcyI6e2ZpbGU6IkJkNC1PYzM2LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CZFpYNXhnZi5qcyI6e2ZpbGU6IkJkWlg1eGdmLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CaFdTMThpNy5qcyI6e2ZpbGU6IkJoV1MxOGk3LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CdDhTMGRtbC5qcyI6e2ZpbGU6IkJ0OFMwZG1sLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9CdUxTdUE4TS5qcyI6e2ZpbGU6IkJ1TFN1QThNLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DMU9RaXlVRC5qcyI6e2ZpbGU6IkMxT1FpeVVELmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DN1l5NnRSMy5qcyI6e2ZpbGU6IkM3WXk2dFIzLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DQVVBWDVWci5qcyI6e2ZpbGU6IkNBVUFYNVZyLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DR1hnU01aaC5qcyI6e2ZpbGU6IkNHWGdTTVpoLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DVzhmS25GRS5qcyI6e2ZpbGU6IkNXOGZLbkZFLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DWG9jNFVFUi5qcyI6e2ZpbGU6IkNYb2M0VUVSLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DWWFtekxtNS5qcyI6e2ZpbGU6IkNZYW16TG01LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DYzZ6aWgtUi5qcyI6e2ZpbGU6IkNjNnppaC1SLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DY01NRjFnOS5qcyI6e2ZpbGU6IkNjTU1GMWc5LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DZl9mdzFFOS5qcyI6e2ZpbGU6IkNmX2Z3MUU5LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DbDRpNHJTTS5qcyI6e2ZpbGU6IkNsNGk0clNNLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9DdGExNXNHLS5qcyI6e2ZpbGU6IkN0YTE1c0ctLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9ESEN3RUxXcC5qcyI6e2ZpbGU6IkRIQ3dFTFdwLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9ET0NGRFRjWS5qcyI6e2ZpbGU6IkRPQ0ZEVGNZLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EVHZYVC1uUi5qcyI6e2ZpbGU6IkRUdlhULW5SLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EWVpsZzAtNS5qcyI6e2ZpbGU6IkRZWmxnMC01LmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EYzQ2UXdESi5qcyI6e2ZpbGU6IkRjNDZRd0RKLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EbTc5NHF4SS5qcyI6e2ZpbGU6IkRtNzk0cXhJLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EdmRoeXBEaS5qcyI6e2ZpbGU6IkR2ZGh5cERpLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9EeENXUXNubC5qcyI6e2ZpbGU6IkR4Q1dRc25sLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9XbURYSFlLay5qcyI6e2ZpbGU6IldtRFhIWUtrLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9aSlZrMG9sTi5qcyI6e2ZpbGU6IlpKVmswb2xOLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9fMmxTZHIxMy5qcyI6e2ZpbGU6Il8ybFNkcjEzLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9kXzBOd1FMVS5qcyI6e2ZpbGU6ImRfME53UUxVLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9naHFZYklTVC5qcyI6e2ZpbGU6ImdocVliSVNULmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sIl9tMjBrZEd4VS5qcyI6e2ZpbGU6Im0yMGtkR3hVLmpzIixyZXNvdXJjZVR5cGU6InNjcmlwdCIsbWltZVR5cGU6dm9pZCAwLG1vZHVsZTohMH0sImxheW91dHMvZGVmYXVsdC52dWUiOntmaWxlOiJDRkJ0Y0I3by5qcyIscmVzb3VyY2VUeXBlOiJzY3JpcHQiLG1pbWVUeXBlOnZvaWQgMCxtb2R1bGU6ITB9LCJwYWdlcy9kYXNoYm9hcmQudnVlIjp7ZmlsZToiczNwMGMwM00uanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfSwicGFnZXMvaW5kZXgudnVlIjp7ZmlsZToiQmhhR29hem8uanMiLHJlc291cmNlVHlwZToic2NyaXB0IixtaW1lVHlwZTp2b2lkIDAsbW9kdWxlOiEwfX19O3ZhciBzLHAsZCx0LHIsbixvLHUsaSxsLGIsYyxtLF8sYSx5LGosVCxmLHgsaCxZLEMsRSx6LHYsZyxELEIsUyxSLEcsVSxNLFcsTCxxLFgsTyxrO2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jbGllbnQucHJlY29tcHV0ZWQubWpzLm1hcAo=", "chunks/build/dashboard-kTV2AP-w.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9DYXJkLW5vdmdxUm9wLm1qcyI7aW1wb3J0e3YgYXMgcyx1IGFzIHIsaCBhcyBvLGIgYXMgYX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e18gYXMgZH1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vRGFzaGJvYXJkU2Vzc2lvbkNhcmQtREtDOWZrTWUubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtjb25zdCBtPXMuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRhc2hib2FyZEdldHRpbmdTdGFydGVkIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCByPW8oKSxkPXMuY29tcHV0ZWQoKCk9PihyLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKS5pbmNsdWRlcygidXNlcjppbXBlcnNvbmF0ZSIpKTtyZXR1cm4oZSxyLG8saSk9Pntjb25zdCBtPWE7cihuKHQsaSx7aGVhZGVyOnMud2l0aEN0eCgoZSx0LHIsbyk9PntpZighdClyZXR1cm5bcy5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIEdldCBzdGFydGVkICIpXTt0KGA8cCBjbGFzcz0iZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7b30+IEdldCBzdGFydGVkIDwvcD5gKX0pLGRlZmF1bHQ6cy53aXRoQ3R4KChlLHQscixvKT0+e2lmKCF0KXJldHVybltzLmNyZWF0ZVZOb2RlKCJ1bCIse2NsYXNzOiJzcGFjZS15LTIgdGV4dC1zbSJ9LFtzLnVucmVmKGQpPyhzLm9wZW5CbG9jaygpLHMuY3JlYXRlQmxvY2soImxpIix7a2V5OjAsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIn0sW3MuY3JlYXRlVk5vZGUobSx7bmFtZToiaS1sdWNpZGUtdXNlci1jb2ciLGNsYXNzOiJzaXplLTQgdGV4dC1tdXRlZCJ9KSxzLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVXNlIHRoZSBkcm9wZG93biBhdCB0aGUgdG9wIG9mIHRoZSBzaWRlYmFyIHRvIGltcGVyc29uYXRlIGFueSB1c2VyLiIpXSkpOnMuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTt0KGA8dWwgY2xhc3M9InNwYWNlLXktMiB0ZXh0LXNtIiR7b30+YCkscy51bnJlZihkKT8odChgPGxpIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiIke299PmApLHQobihtLHtuYW1lOiJpLWx1Y2lkZS11c2VyLWNvZyIsY2xhc3M6InNpemUtNCB0ZXh0LW11dGVkIn0sbnVsbCxyLG8pKSx0KGA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke299PlVzZSB0aGUgZHJvcGRvd24gYXQgdGhlIHRvcCBvZiB0aGUgc2lkZWJhciB0byBpbXBlcnNvbmF0ZSBhbnkgdXNlci48L3NwYW4+PC9saT5gKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoIjwvdWw+Iil9KSxfOjF9LG8pKX19fSksbD1tLnNldHVwO20uc2V0dXA9KGUsdCk9Pntjb25zdCByPXMudXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiY29tcG9uZW50cy9EYXNoYm9hcmQvRGFzaGJvYXJkR2V0dGluZ1N0YXJ0ZWQudnVlIiksbD9sKGUsdCk6dm9pZCAwfTtjb25zdCBwPXMuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6ImRhc2hib2FyZCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXA6dD0+KHIoe3RpdGxlOiJEYXNoYm9hcmQifSksKHQscixvLGEpPT57cihuKGUscy5tZXJnZVByb3BzKHtpZDoiZGFzaGJvYXJkIn0sYSkse2hlYWRlcjpzLndpdGhDdHgoKGUsdCxyLG8pPT57aWYoIXQpcmV0dXJuW3MuY3JlYXRlVk5vZGUoZCx7dGl0bGU6IkhvbWUifSldO3QobihkLHt0aXRsZToiSG9tZSJ9LG51bGwscixvKSl9KSxib2R5OnMud2l0aEN0eCgoZSx0LHIsbyk9PntpZighdClyZXR1cm5bcy5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InNwYWNlLXktNiJ9LFtzLmNyZWF0ZVZOb2RlKGkpLHMuY3JlYXRlVk5vZGUobSldKV07dChgPGRpdiBjbGFzcz0ic3BhY2UteS02IiR7b30+YCksdChuKGksbnVsbCxudWxsLHIsbykpLHQobihtLG51bGwsbnVsbCxyLG8pKSx0KCI8L2Rpdj4iKX0pLF86MX0sbykpfSl9KSx1PXAuc2V0dXA7cC5zZXR1cD0oZSx0KT0+e2NvbnN0IHI9cy51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHIubW9kdWxlc3x8KHIubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCJwYWdlcy9kYXNoYm9hcmQudnVlIiksdT91KGUsdCk6dm9pZCAwfTtleHBvcnR7cCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGFzaGJvYXJkLWtUVjJBUC13Lm1qcy5tYXAK", "chunks/build/default-CRttjkka.mjs": "aW1wb3J0e3YgYXMgZSxoIGFzIHQsYTAgYXMgbCxhZSBhcyBvLGFmIGFzIGksdyBhcyBuLGYgYXMgcixkIGFzIHMsZSBhcyB1LGsgYXMgZCx0IGFzIGYsbCBhcyBnLHIgYXMgeSxfIGFzIGIsYVAgYXMgayxGIGFzIHgsYUogYXMgQixvIGFzIFMsRSBhcyB3LEcgYXMgTixKIGFzIEksWSBhcyBWLGEgYXMgQSxheSBhcyB6LGIgYXMgTSx4IGFzIFAsYW0gYXMgcSxhbCBhcyBGLGFRIGFzIE8sYVIgYXMgRSxhaCBhcyBSLGFpIGFzIGosSyBhcyBVLGFqIGFzIFcsZyBhcyBHLEwgYXMgSixhTSBhcyBRLGFTIGFzIFgsUCBhcyBZLG0gYXMgWixqIGFzIGVlLHkgYXMgdGV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHt1IGFzIGFlLGEgYXMgbGUsXyBhcyBvZSxwIGFzIHJlfWZyb20iLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnR7YUUgYXMgc2V9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtfIGFzIGNlfWZyb20iLi9EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcyI7aW1wb3J0e18gYXMgdWUsRCBhcyBwZSxhIGFzIGZlLGIgYXMgbWUsYyBhcyBnZSxkIGFzIHZlLGUgYXMgeWUsZiBhcyBiZSxnIGFzIGtlfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHtwIGFzIHhlfWZyb20iLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0e18gYXMgQmUsZSBhcyBTZX1mcm9tIi4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0e18gYXMgQ2V9ZnJvbSIuL1Rvb2x0aXAtQlA4emI4REsubWpzIjtpbXBvcnR7XyBhcyBfZSxhIGFzIExlfWZyb20iLi9OYXZpZ2F0aW9uTWVudS1kTmFGRmhtYS5tanMiO2ltcG9ydHtnIGFzIE5lLEwgYXMgSWUsYSBhcyBWZSxiIGFzIERlLGYgYXMgQWUsYyBhcyB6ZSxkIGFzIE1lLGUgYXMgUGUsaCBhcyBxZX1mcm9tIi4vdmlydHVhbGl6ZXItQnlxaTB1QUsubWpzIjtpbXBvcnR7XyBhcyBGZX1mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7XyBhcyBLZX1mcm9tIi4vRHJvcGRvd25NZW51LUNlY1BjZUphLm1qcyI7aW1wb3J0e3UgYXMgT2V9ZnJvbSIuL3VzZUluZmluaXRlTGlzdC1VVWduYlNtei5tanMiO2ltcG9ydHtfIGFzIEVlfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7dSBhcyBSZX1mcm9tIi4vdXNlTGF5ZXJSZWdpc3RyeS1DOUNCMjBVSC5tanMiO2ltcG9ydHtmIGFzIGplLGcgYXMgSGUsbyBhcyBVZSxqIGFzIFdlLHQgYXMgR2UsayBhcyBKZSxxIGFzIFFlfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e0sgYXMgWGV9ZnJvbSIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydCIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vaXNWYWx1ZUVxdWFsT3JFeGlzdC1EbVB5bjViTi5tanMiO2ltcG9ydCIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0Ii4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydCIuL2luZGV4LUIxUE9UTG1hLm1qcyI7aW1wb3J0Ii4vdXNlRmlsdGVyLUNsQ1phb2k4Lm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtmdW5jdGlvbiB1c2VSdW50aW1lSG9vayh0LGwpe2NvbnN0IG89UygpLmhvb2sodCxsKTtlLm9uU2NvcGVEaXNwb3NlKG8pfXZhciBZZT1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94R3JvdXBMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAodCl7Y29uc3QgbD10LG89cWUoe2lkOiIifSk7cmV0dXJuKHQsaSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihZKSxlLm1lcmdlUHJvcHMobCx7aWQ6ZS51bnJlZihvKS5pZH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KTtjb25zdCBaZT17YmFzZToiZml4ZWQgaW5zZXQtMCBmbGV4IG92ZXJmbG93LWhpZGRlbiJ9LGV0PXtfX25hbWU6IlVEYXNoYm9hcmRHcm91cCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sc3RvcmFnZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiY29va2llIn0sc3RvcmFnZUtleTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGFzaGJvYXJkIn0scGVyc2lzdGVudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHVuaXQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6IiUifX0sc2V0dXAodCl7Y29uc3QgbD10LG89UygpLGk9cygpLG49dSgiZGFzaGJvYXJkR3JvdXAiLGwpLHI9ZS5jb21wdXRlZCgoKT0+Zih7ZXh0ZW5kOmYoWmUpLC4uLmkudWk/LmRhc2hib2FyZEdyb3VwfHx7fX0pKSxkPWUucmVmKCExKSxnPWUucmVmKCExKTtyZXR1cm4gcmUoe3N0b3JhZ2U6bC5zdG9yYWdlLHN0b3JhZ2VLZXk6bC5zdG9yYWdlS2V5LHBlcnNpc3RlbnQ6bC5wZXJzaXN0ZW50LHVuaXQ6bC51bml0LHNpZGViYXJPcGVuOmQsdG9nZ2xlU2lkZWJhcjooKT0+e28uaG9va3MuY2FsbEhvb2soImRhc2hib2FyZDpzaWRlYmFyOnRvZ2dsZSIpfSxzaWRlYmFyQ29sbGFwc2VkOmcsY29sbGFwc2VTaWRlYmFyOmU9PntvLmhvb2tzLmNhbGxIb29rKCJkYXNoYm9hcmQ6c2lkZWJhcjpjb2xsYXBzZSIsZSl9LHRvZ2dsZVNlYXJjaDooKT0+e28uaG9va3MuY2FsbEhvb2soImRhc2hib2FyZDpzZWFyY2g6dG9nZ2xlIil9fSksKG8saSxzLHUpPT57aShqZShlLnVucmVmKFkpLGUubWVyZ2VQcm9wcyh7YXM6dC5hcyxjbGFzczpyLnZhbHVlKHtjbGFzczpbZS51bnJlZihuKT8uYmFzZSxsLmNsYXNzXX0pfSx1KSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxpLG4pPT57aWYoIWwpcmV0dXJuW2UucmVuZGVyU2xvdChvLiRzbG90cywiZGVmYXVsdCIpXTtIZShvLiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxsLGksbil9KSxfOjN9LHMpKX19fSx0dD1ldC5zZXR1cDtldC5zZXR1cD0odCxsKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Rhc2hib2FyZEdyb3VwLnZ1ZSIpLHR0P3R0KHQsbCk6dm9pZCAwfTtjb25zdCBhdD17c2xvdHM6e292ZXJsYXk6ImZpeGVkIGluc2V0LTAgYmctZWxldmF0ZWQvNzUiLGNvbnRlbnQ6ImZpeGVkIGJnLWRlZmF1bHQgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQgc206cmluZyByaW5nLWRlZmF1bHQgc206c2hhZG93LWxnIGZsZXggZmxleC1jb2wgZm9jdXM6b3V0bGluZS1ub25lIixoZWFkZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYgbWluLWgtKC0tdWktaGVhZGVyLWhlaWdodCkiLHdyYXBwZXI6IiIsYm9keToiZmxleC0xIG92ZXJmbG93LXktYXV0byBwLTQgc206cC02Iixmb290ZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYiLHRpdGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGZvbnQtc2VtaWJvbGQiLGRlc2NyaXB0aW9uOiJtdC0xIHRleHQtbXV0ZWQgdGV4dC1zbSIsY2xvc2U6ImFic29sdXRlIHRvcC00IGVuZC00In0sdmFyaWFudHM6e3NpZGU6e3RvcDp7Y29udGVudDoiIn0scmlnaHQ6e2NvbnRlbnQ6Im1heC13LW1kIn0sYm90dG9tOntjb250ZW50OiIifSxsZWZ0Ontjb250ZW50OiJtYXgtdy1tZCJ9fSxpbnNldDp7dHJ1ZTp7Y29udGVudDoicm91bmRlZC1sZyJ9fSx0cmFuc2l0aW9uOnt0cnVlOntvdmVybGF5OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtmYWRlLWluXzIwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW2ZhZGUtb3V0XzIwMG1zX2Vhc2UtaW5dIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7c2lkZToidG9wIixpbnNldDohMCxjbGFzczp7Y29udGVudDoibWF4LWgtW2NhbGMoMTAwJS0ycmVtKV0gaW5zZXQteC00IHRvcC00In19LHtzaWRlOiJ0b3AiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJtYXgtaC1mdWxsIGluc2V0LXgtMCB0b3AtMCJ9fSx7c2lkZToicmlnaHQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJ3LVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXktNCByaWdodC00In19LHtzaWRlOiJyaWdodCIsaW5zZXQ6ITEsY2xhc3M6e2NvbnRlbnQ6InctZnVsbCBpbnNldC15LTAgcmlnaHQtMCJ9fSx7c2lkZToiYm90dG9tIixpbnNldDohMCxjbGFzczp7Y29udGVudDoibWF4LWgtW2NhbGMoMTAwJS0ycmVtKV0gaW5zZXQteC00IGJvdHRvbS00In19LHtzaWRlOiJib3R0b20iLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJtYXgtaC1mdWxsIGluc2V0LXgtMCBib3R0b20tMCJ9fSx7c2lkZToibGVmdCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6InctW2NhbGMoMTAwJS0ycmVtKV0gaW5zZXQteS00IGxlZnQtNCJ9fSx7c2lkZToibGVmdCIsaW5zZXQ6ITEsY2xhc3M6e2NvbnRlbnQ6InctZnVsbCBpbnNldC15LTAgbGVmdC0wIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6InRvcCIsY2xhc3M6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NsaWRlLWluLWZyb20tdG9wXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NsaWRlLW91dC10by10b3BfMjAwbXNfZWFzZS1pbi1vdXRdIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6InJpZ2h0IixjbGFzczp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2xpZGUtaW4tZnJvbS1yaWdodF8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzbGlkZS1vdXQtdG8tcmlnaHRfMjAwbXNfZWFzZS1pbi1vdXRdIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6ImJvdHRvbSIsY2xhc3M6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NsaWRlLWluLWZyb20tYm90dG9tXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NsaWRlLW91dC10by1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRdIn19LHt0cmFuc2l0aW9uOiEwLHNpZGU6ImxlZnQiLGNsYXNzOntjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzbGlkZS1pbi1mcm9tLWxlZnRfMjAwbXNfZWFzZS1pbi1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2xpZGUtb3V0LXRvLWxlZnRfMjAwbXNfZWFzZS1pbi1vdXRdIn19XX0sbHQ9e19fbmFtZToiVVNsaWRlb3ZlciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3RpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3ZlcmxheTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHRyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoicmlnaHQifSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJhZnRlcjpsZWF2ZSIsImFmdGVyOmVudGVyIiwiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3Qgbz10LGk9bCxuPWUudXNlU2xvdHMoKSx7dDpkfT1yKCksZz1zKCkseT11KCJzbGlkZW92ZXIiLG8pLGs9dyh4KG8sIm9wZW4iLCJkZWZhdWx0T3BlbiIsIm1vZGFsIiksaSksQj1OKGUudG9SZWYoKCk9Pm8ucG9ydGFsKSksUz1lLnRvUmVmKCgpPT5vLmNvbnRlbnQpLEE9ZS5jb21wdXRlZCgoKT0+e2lmKCFvLmRpc21pc3NpYmxlKXtyZXR1cm5bImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKGUsdCk9PihlW3RdPWU9PntlLnByZXZlbnREZWZhdWx0KCksaSgiY2xvc2U6cHJldmVudCIpfSxlKSx7fSl9cmV0dXJue3BvaW50ZXJEb3duT3V0c2lkZTp4ZX19KSx6PWUuY29tcHV0ZWQoKCk9PmYoe2V4dGVuZDpmKGF0KSwuLi5nLnVpPy5zbGlkZW92ZXJ8fHt9fSkoe3RyYW5zaXRpb246by50cmFuc2l0aW9uLHNpZGU6by5zaWRlLGluc2V0Om8uaW5zZXR9KSk7cmV0dXJuKGwscixzLHUpPT57cihqZShlLnVucmVmKGtlKSxlLm1lcmdlUHJvcHMoZS51bnJlZihrKSx1KSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcGVuOnIsY2xvc2U6c30sdSxmLGspPT57aWYoIXUpcmV0dXJuW24uZGVmYXVsdD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYocGUpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLGNsYXNzOm8uY2xhc3N9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoZ2UpLGUudW5yZWYoQikse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKEkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5vdmVybGF5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2ZSkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczp6LnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoeSk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoeWUpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2lkZSI6dC5zaWRlLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczp6LnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZvLmNsYXNzLGUudW5yZWYoeSk/LmNvbnRlbnRdfSl9LFMudmFsdWUse29uQWZ0ZXJFbnRlcjplPT5pKCJhZnRlcjplbnRlciIpLG9uQWZ0ZXJMZWF2ZTplPT5pKCJhZnRlcjpsZWF2ZSIpfSxlLnRvSGFuZGxlcnMoQS52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+WyF0LnRpdGxlJiYhbi50aXRsZXx8IXQuZGVzY3JpcHRpb24mJiFuLmRlc2NyaXB0aW9ufHxuLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFYpLHtrZXk6MH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC50aXRsZXx8bi50aXRsZT9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjB9KSksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdChsLiRzbG90cywiY29udGVudCIse2Nsb3NlOnN9LCgpPT5bbi5oZWFkZXJ8fHQudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb258fG8uY2xvc2V8fG4uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6ei52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoeSk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTpzfSwoKT0+W3QudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnoudmFsdWUud3JhcHBlcih7Y2xhc3M6ZS51bnJlZih5KT8ud3JhcHBlcn0pfSxbdC50aXRsZXx8bi50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOnoudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYoeSk/LnRpdGxlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnoudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoeSk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJhY3Rpb25zIiksby5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoYmUpLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImNsb3NlIix7dWk6ei52YWx1ZX0sKCk9PltvLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYixlLm1lcmdlUHJvcHMoe2tleTowLGljb246dC5jbG9zZUljb258fGUudW5yZWYoZykudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihkKSgic2xpZGVvdmVyLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2Ygby5jbG9zZT9vLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoeSk/LmNsb3NlfSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjJ9LDEwMjQpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6ei52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKHkpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImJvZHkiLHtjbG9zZTpzfSldLDIpLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOnoudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKHkpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIix7Y2xvc2U6c30pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJkYXRhLXNpZGUiLCJjbGFzcyIsIm9uQWZ0ZXJFbnRlciIsIm9uQWZ0ZXJMZWF2ZSJdKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwNDApXTtuLmRlZmF1bHQ/dShqZShlLnVucmVmKHBlKSx7ImFzLWNoaWxkIjoiIixjbGFzczpvLmNsYXNzfSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbyxpLG4pPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0pXTtIZShsLiRzbG90cywiZGVmYXVsdCIse29wZW46cn0sbnVsbCxvLGksbil9KSxfOjJ9LGYsaykpOnUoIlx4M2MhLS0tLVx4M2UiKSx1KGplKGUudW5yZWYoZ2UpLGUudW5yZWYoQikse2RlZmF1bHQ6ZS53aXRoQ3R4KChyLHUsZixrKT0+e2lmKCF1KXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lm92ZXJsYXk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZlKSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnoudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZih5KT8ub3ZlcmxheX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih5ZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zaWRlIjp0LnNpZGUsImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnoudmFsdWUuY29udGVudCh7Y2xhc3M6WyFuLmRlZmF1bHQmJm8uY2xhc3MsZS51bnJlZih5KT8uY29udGVudF19KX0sUy52YWx1ZSx7b25BZnRlckVudGVyOmU9PmkoImFmdGVyOmVudGVyIiksb25BZnRlckxlYXZlOmU9PmkoImFmdGVyOmxlYXZlIil9LGUudG9IYW5kbGVycyhBLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleTowfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PltuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp6LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih5KT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOnN9LCgpPT5bdC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSl9LFt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6ei52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih5KT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih5KT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImFjdGlvbnMiKSxvLmNsb3NlfHxuLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W28uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGQpKCJzbGlkZW92ZXIuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBvLmNsb3NlP28uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZih5KT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp6LnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeSk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIse2Nsb3NlOnN9KV0sMiksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6ei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoeSk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpzfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImRhdGEtc2lkZSIsImNsYXNzIiwib25BZnRlckVudGVyIiwib25BZnRlckxlYXZlIl0pXSksXzoyfSwxMDI0KV07dShqZShlLnVucmVmKEkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChyLHUsZixrKT0+e2lmKCF1KXJldHVyblt0Lm92ZXJsYXk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZlKSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnoudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZih5KT8ub3ZlcmxheX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZih5ZSksZS5tZXJnZVByb3BzKHsiZGF0YS1zaWRlIjp0LnNpZGUsImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnoudmFsdWUuY29udGVudCh7Y2xhc3M6WyFuLmRlZmF1bHQmJm8uY2xhc3MsZS51bnJlZih5KT8uY29udGVudF19KX0sUy52YWx1ZSx7b25BZnRlckVudGVyOmU9PmkoImFmdGVyOmVudGVyIiksb25BZnRlckxlYXZlOmU9PmkoImFmdGVyOmxlYXZlIil9LGUudG9IYW5kbGVycyhBLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleTowfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PltuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp6LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih5KT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOnN9LCgpPT5bdC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSl9LFt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6ei52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih5KT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih5KT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImFjdGlvbnMiKSxvLmNsb3NlfHxuLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W28uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGQpKCJzbGlkZW92ZXIuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBvLmNsb3NlP28uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZih5KT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp6LnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeSk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIse2Nsb3NlOnN9KV0sMiksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6ei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoeSk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpzfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImRhdGEtc2lkZSIsImNsYXNzIiwib25BZnRlckVudGVyIiwib25BZnRlckxlYXZlIl0pXTt0Lm92ZXJsYXk/dShqZShlLnVucmVmKHZlKSx7ImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnoudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZih5KT8ub3ZlcmxheX0pfSxudWxsLGYsaykpOnUoIlx4M2MhLS0tLVx4M2UiKSx1KGplKGUudW5yZWYoeWUpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2lkZSI6dC5zaWRlLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczp6LnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZvLmNsYXNzLGUudW5yZWYoeSk/LmNvbnRlbnRdfSl9LFMudmFsdWUse29uQWZ0ZXJFbnRlcjplPT5pKCJhZnRlcjplbnRlciIpLG9uQWZ0ZXJMZWF2ZTplPT5pKCJhZnRlcjpsZWF2ZSIpfSxlLnRvSGFuZGxlcnMoQS52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLHUsZik9PntpZighcilyZXR1cm5bIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleTowfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PltuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp6LnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih5KT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse2Nsb3NlOnN9LCgpPT5bdC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSl9LFt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6ei52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZih5KT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZih5KT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImFjdGlvbnMiKSxvLmNsb3NlfHxuLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihiZSkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W28uY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihnKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKGQpKCJzbGlkZW92ZXIuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBvLmNsb3NlP28uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZih5KT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp6LnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeSk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIse2Nsb3NlOnN9KV0sMiksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6ei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoeSk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiLHtjbG9zZTpzfSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07IXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD9yKGplKGUudW5yZWYoViksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxyLHMpPT57aWYoIWkpcmV0dXJuW3QudGl0bGV8fG4udGl0bGU/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowfSkpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToyfSkpXTt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD9pKGplKGUudW5yZWYoZmUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldO0hlKGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntpKGAke1FlKHQudGl0bGUpfWApfSxpLG4scil9KSxfOjJ9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYoZmUpLG51bGwsbnVsbCxyLHMpKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD9pKGplKGUudW5yZWYobWUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldO0hlKGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntpKGAke1FlKHQuZGVzY3JpcHRpb24pfWApfSxpLG4scil9KSxfOjJ9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYobWUpLG51bGwsbnVsbCxyLHMpKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpLEhlKGwuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6c30sKCk9PntuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbnx8by5jbG9zZXx8bi5jbG9zZT8ocihgPGRpdiBkYXRhLXNsb3Q9ImhlYWRlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoeSk/LmhlYWRlcn0pKX0iJHtmfT5gKSxIZShsLiRzbG90cywiaGVhZGVyIix7Y2xvc2U6c30sKCk9Pnt0LnRpdGxlfHxuLnRpdGxlfHx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhyKGA8ZGl2IGRhdGEtc2xvdD0id3JhcHBlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS53cmFwcGVyKHtjbGFzczplLnVucmVmKHkpPy53cmFwcGVyfSkpfSIke2Z9PmApLHQudGl0bGV8fG4udGl0bGU/cihqZShlLnVucmVmKGZlKSx7ImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczp6LnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKHkpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxuLHIpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV07SGUobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+e2koYCR7UWUodC50aXRsZSl9YCl9LGksbixyKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/cihqZShlLnVucmVmKG1lKSx7ImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczp6LnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKHkpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxuLHIpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV07SGUobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+e2koYCR7UWUodC5kZXNjcmlwdGlvbil9YCl9LGksbixyKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIiksSGUobC4kc2xvdHMsImFjdGlvbnMiLHt9LG51bGwscix1LGYpLG8uY2xvc2V8fG4uY2xvc2U/cihqZShlLnVucmVmKGJlKSx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KChpLG4scixzKT0+e2lmKCFuKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImNsb3NlIix7dWk6ei52YWx1ZX0sKCk9PltvLmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYixlLm1lcmdlUHJvcHMoe2tleTowLGljb246dC5jbG9zZUljb258fGUudW5yZWYoZykudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZihkKSgic2xpZGVvdmVyLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2Ygby5jbG9zZT9vLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoeSk/LmNsb3NlfSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO0hlKGwuJHNsb3RzLCJjbG9zZSIse3VpOnoudmFsdWV9LCgpPT57by5jbG9zZT9uKGplKGIsZS5tZXJnZVByb3BzKHtpY29uOnQuY2xvc2VJY29ufHxlLnVucmVmKGcpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoZCkoInNsaWRlb3Zlci5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIG8uY2xvc2U/by5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczp6LnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKHkpPy5jbG9zZX0pfSksbnVsbCxyLHMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scixzKX0pLF86Mn0sdSxmKSk6cigiXHgzYyEtLS0tXHgzZSIpfSxyLHUsZikscigiPC9kaXY+IikpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKGA8ZGl2IGRhdGEtc2xvdD0iYm9keSIgY2xhc3M9IiR7V2Uoei52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKHkpPy5ib2R5fSkpfSIke2Z9PmApLEhlKGwuJHNsb3RzLCJib2R5Iix7Y2xvc2U6c30sbnVsbCxyLHUsZikscigiPC9kaXY+Iiksbi5mb290ZXI/KHIoYDxkaXYgZGF0YS1zbG90PSJmb290ZXIiIGNsYXNzPSIke1dlKHoudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKHkpPy5mb290ZXJ9KSl9IiR7Zn0+YCksSGUobC4kc2xvdHMsImZvb3RlciIse2Nsb3NlOnN9LG51bGwscix1LGYpLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIil9LHIsdSxmKX0pLF86Mn0sZixrKSl9KSxfOjJ9LGYsaykpfSksXzoyfSxmLGspKX0pLF86M30scykpfX19LG90PWx0LnNldHVwO2x0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvU2xpZGVvdmVyLnZ1ZSIpLG90P290KHQsbCk6dm9pZCAwfSxmdW5jdGlvbigpe3RyeXswfWNhdGNoKGUpe319KCk7dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmKGdsb2JhbFRoaXMsV29ya2VyR2xvYmFsU2NvcGUpO2Z1bmN0aW9uICRlKHQsbCxvLGk9e30pe3ZhciBuLHIscztjb25zdHtjbG9uZTp1PSExLHBhc3NpdmU6ZD0hMSxldmVudE5hbWU6ZixkZWVwOmc9ITEsZGVmYXVsdFZhbHVlOnksc2hvdWxkRW1pdDpifT1pLGs9ZS5nZXRDdXJyZW50SW5zdGFuY2UoKSx4PW98fChudWxsPT1rP3ZvaWQgMDprLmVtaXQpfHwobnVsbD09KG49bnVsbD09az92b2lkIDA6ay4kZW1pdCk/dm9pZCAwOm4uYmluZChrKSl8fChudWxsPT0ocz1udWxsPT0ocj1udWxsPT1rP3ZvaWQgMDprLnByb3h5KT92b2lkIDA6ci4kZW1pdCk/dm9pZCAwOnMuYmluZChudWxsPT1rP3ZvaWQgMDprLnByb3h5KSk7bGV0IEI9ZjtsfHwobD0ibW9kZWxWYWx1ZSIpLEI9Qnx8YHVwZGF0ZToke2wudG9TdHJpbmcoKX1gO2NvbnN0IEw9ZT0+dT8iZnVuY3Rpb24iPT10eXBlb2YgdT91KGUpOmZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKX0oZSk6ZSxIPSgpPT4oZT0+dHlwZW9mIGU8InUiKSh0W2xdKT9MKHRbbF0pOnkscD1lPT57Yj9iKGUpJiZ4KEIsZSk6eChCLGUpfTtpZihkKXtjb25zdCBvPUgoKSxpPWUucmVmKG8pO2xldCBuPSExO3JldHVybiBlLndhdGNoKCgpPT50W2xdLHQ9PntufHwobj0hMCxpLnZhbHVlPUwodCksZS5uZXh0VGljaygoKT0+bj0hMSkpfSksZS53YXRjaChpLGU9PnshbiYmKGUhPT10W2xdfHxnKSYmcChlKX0se2RlZXA6Z30pLGl9cmV0dXJuIGUuY29tcHV0ZWQoe2dldDooKT0+SCgpLHNldChlKXtwKGUpfX0pfWNvbnN0W2l0LG50XT1aKCJEcmF3ZXJSb290IikscnQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gQyhlLHQsbD0hMSl7aWYoIShlJiZlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnQpKXJldHVybjtjb25zdCBvPXt9O09iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKFt0LGxdKT0+e3Quc3RhcnRzV2l0aCgiLS0iKT9lLnN0eWxlLnNldFByb3BlcnR5KHQsbCk6KG9bdF09ZS5zdHlsZVt0XSxlLnN0eWxlW3RdPWwpfSksIWwmJnJ0LnNldChlLG8pfWZ1bmN0aW9uIGllKGUsdCl7Y29uc3QgbD0odm9pZCAwKS5nZXRDb21wdXRlZFN0eWxlKGUpLG89bC50cmFuc2Zvcm18fGwud2Via2l0VHJhbnNmb3JtfHxsLm1velRyYW5zZm9ybTtsZXQgaT1vLm1hdGNoKC9ebWF0cml4M2RcKCguKylcKSQvKTtyZXR1cm4gaT9OdW1iZXIucGFyc2VGbG9hdChpWzFdLnNwbGl0KCIsICIpW18odCk/MTM6MTJdKTooaT1vLm1hdGNoKC9ebWF0cml4XCgoLispXCkkLyksaT9OdW1iZXIucGFyc2VGbG9hdChpWzFdLnNwbGl0KCIsICIpW18odCk/NTo0XSk6bnVsbCl9ZnVuY3Rpb24gXyhlKXtzd2l0Y2goZSl7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpyZXR1cm4hMDtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuIGV9fWZ1bmN0aW9uIGRlKGUsdCl7aWYoIWUpcmV0dXJuKCk9Pnt9O2NvbnN0IGw9ZS5zdHlsZS5jc3NUZXh0O3JldHVybiBPYmplY3QuYXNzaWduKGUuc3R5bGUsdCksKCk9PntlLnN0eWxlLmNzc1RleHQ9bH19Y29uc3Qgc3Q9e0RVUkFUSU9OOi41LEVBU0U6Wy4zMiwuNzIsMCwxXX0sY3Q9InZhdWwtZHJhZ2dpbmciO2Z1bmN0aW9uIFRlKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdCgodm9pZCAwKS51c2VyQWdlbnQpfWxldCB1dD1udWxsO2Z1bmN0aW9uIHd0KHQpe2NvbnN0e2lzT3BlbjpsLG1vZGFsOm8sbmVzdGVkOmksaGFzQmVlbk9wZW5lZDpuLHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjpyLG5vQm9keVN0eWxlczpzfT10LHU9ZS5yZWYoIiIpLGQ9ZS5yZWYoMCk7ZnVuY3Rpb24gVCgpe2lmKFRlKCkmJm51bGwhPT11dCYmIXMudmFsdWUpe2NvbnN0IGU9LU51bWJlci5wYXJzZUludCgodm9pZCAwKS5ib2R5LnN0eWxlLnRvcCwxMCksdD0tTnVtYmVyLnBhcnNlSW50KCh2b2lkIDApLmJvZHkuc3R5bGUubGVmdCwxMCk7T2JqZWN0LmFzc2lnbigodm9pZCAwKS5ib2R5LnN0eWxlLHV0KSwodm9pZCAwKS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntyLnZhbHVlJiZ1LnZhbHVlIT09KHZvaWQgMCkubG9jYXRpb24uaHJlZj91LnZhbHVlPSh2b2lkIDApLmxvY2F0aW9uLmhyZWY6KHZvaWQgMCkuc2Nyb2xsVG8odCxlKX0pLHV0PW51bGx9fXJldHVybiBlLndhdGNoKFtsLG4sdV0sKCk9PntpLnZhbHVlfHwhbi52YWx1ZXx8KGwudmFsdWU/KCh2b2lkIDApLm1hdGNoTWVkaWEoIihkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpIikubWF0Y2hlc3x8ZnVuY3Rpb24oKXtpZihUZSgpJiZudWxsPT09dXQmJmwudmFsdWUmJiFzLnZhbHVlKXt1dD17cG9zaXRpb246KHZvaWQgMCkuYm9keS5zdHlsZS5wb3NpdGlvbix0b3A6KHZvaWQgMCkuYm9keS5zdHlsZS50b3AsbGVmdDoodm9pZCAwKS5ib2R5LnN0eWxlLmxlZnQsaGVpZ2h0Oih2b2lkIDApLmJvZHkuc3R5bGUuaGVpZ2h0fTtjb25zdHtzY3JvbGxYOmUsaW5uZXJIZWlnaHQ6dH09dm9pZCAwOyh2b2lkIDApLmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInBvc2l0aW9uIiwiZml4ZWQiLCJpbXBvcnRhbnQiKSxPYmplY3QuYXNzaWduKCh2b2lkIDApLmJvZHkuc3R5bGUse3RvcDotZC52YWx1ZSsicHgiLGxlZnQ6LWUrInB4IixyaWdodDoiMHB4IixoZWlnaHQ6ImF1dG8ifSksc2V0VGltZW91dCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9dC0odm9pZCAwKS5pbm5lckhlaWdodDtlJiZkLnZhbHVlPj10JiYoKHZvaWQgMCkuYm9keS5zdHlsZS50b3A9YC0ke2QudmFsdWUrZX1weGApfSl9LDMwMCl9fSgpLG8udmFsdWV8fHNldFRpbWVvdXQoKCk9PntUKCl9LDUwMCkpOlQoKSl9KSx7cmVzdG9yZVBvc2l0aW9uU2V0dGluZzpUfX1mdW5jdGlvbiB5dCh0KXtjb25zdHtlbWl0RHJhZzpsLGVtaXRSZWxlYXNlOm8sZW1pdENsb3NlOmksZW1pdE9wZW5DaGFuZ2U6bixvcGVuOnIsZGlzbWlzc2libGU6cyxuZXN0ZWQ6dSxtb2RhbDpkLHNob3VsZFNjYWxlQmFja2dyb3VuZDpmLHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6ZyxzY3JvbGxMb2NrVGltZW91dDp5LGNsb3NlVGhyZXNob2xkOmIsYWN0aXZlU25hcFBvaW50OmssZmFkZUZyb21JbmRleDp4LGRpcmVjdGlvbjpCLG5vQm9keVN0eWxlczpTLGhhbmRsZU9ubHk6dyxwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb246Tn09dCxJPWUucmVmKHIudmFsdWU/PyExKSxWPWUucmVmKCExKSxBPWUucmVmKCExKSx6PWUucmVmKCExKSxNPWUucmVmKG51bGwpLFA9ZS5yZWYobnVsbCkscT1lLnJlZihudWxsKSxGPWUucmVmKG51bGwpLE89ZS5yZWYobnVsbCksRT1lLnJlZighMSksUj1lLnJlZihudWxsKSxqPWUucmVmKDApLFU9ZS5yZWYoITEpO2UucmVmKDApO2NvbnN0IFc9ZS5yZWYobnVsbCk7ZS5yZWYoMCk7Y29uc3QgRz1lLmNvbXB1dGVkKCgpPT57dmFyIGU7cmV0dXJuKG51bGw9PShlPVcudmFsdWUpP3ZvaWQgMDplLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpfHwwfSksSj1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLnZhbHVlP2U6dH0odC5zbmFwUG9pbnRzLGUucmVmKHZvaWQgMCkpLFE9ZS5jb21wdXRlZCgoKT0+e3ZhciBlO3JldHVybiBKJiYoKG51bGw9PShlPUoudmFsdWUpP3ZvaWQgMDplLmxlbmd0aCk/PzApPjB9KSxYPWUucmVmKG51bGwpLHthY3RpdmVTbmFwUG9pbnRJbmRleDpZLG9uUmVsZWFzZTpaLHNuYXBQb2ludHNPZmZzZXQ6ZWUsb25EcmFnOnRlLHNob3VsZEZhZGU6YWUsZ2V0UGVyY2VudGFnZURyYWdnZWQ6bGV9PWZ1bmN0aW9uKHthY3RpdmVTbmFwUG9pbnQ6dCxzbmFwUG9pbnRzOmwsZHJhd2VyUmVmOm8sb3ZlcmxheVJlZjppLGZhZGVGcm9tSW5kZXg6bixvblNuYXBQb2ludENoYW5nZTpyLGRpcmVjdGlvbjpzfSl7Y29uc3QgdT1lLnJlZih2b2lkIDApLGQ9ZS5jb21wdXRlZCgoKT0+KGwudmFsdWUmJnQudmFsdWU9PT1sLnZhbHVlW2wudmFsdWUubGVuZ3RoLTFdKT8/bnVsbCksZj1lLmNvbXB1dGVkKCgpPT5sLnZhbHVlJiZsLnZhbHVlLmxlbmd0aD4wJiYoKG51bGw9PW4/dm9pZCAwOm4udmFsdWUpfHwwPT09KG51bGw9PW4/dm9pZCAwOm4udmFsdWUpKSYmIU51bWJlci5pc05hTihudWxsPT1uP3ZvaWQgMDpuLnZhbHVlKSYmbC52YWx1ZVsobnVsbD09bj92b2lkIDA6bi52YWx1ZSk/Py0xXT09PXQudmFsdWV8fCFsLnZhbHVlKSxnPWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4obnVsbD09KGU9bC52YWx1ZSk/dm9pZCAwOmUuZmluZEluZGV4KGU9PmU9PT10LnZhbHVlKSk/P251bGx9KSx5PWUuY29tcHV0ZWQoKCk9Pnt2YXIgZTtyZXR1cm4obnVsbD09KGU9bC52YWx1ZSk/dm9pZCAwOmUubWFwKGU9Pntjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZTtsZXQgbD0wO2lmKHQmJihsPU51bWJlci5wYXJzZUludChlLDEwKSksXyhzLnZhbHVlKSl7Y29uc3Qgbz10P2w6dS52YWx1ZT9lKnUudmFsdWUuaW5uZXJIZWlnaHQ6MDtyZXR1cm4gdS52YWx1ZT8iYm90dG9tIj09PXMudmFsdWU/dS52YWx1ZS5pbm5lckhlaWdodC1vOi11LnZhbHVlLmlubmVySGVpZ2h0K286b31jb25zdCBvPXQ/bDp1LnZhbHVlP2UqdS52YWx1ZS5pbm5lcldpZHRoOjA7cmV0dXJuIHUudmFsdWU/InJpZ2h0Ij09PXMudmFsdWU/dS52YWx1ZS5pbm5lcldpZHRoLW86LXUudmFsdWUuaW5uZXJXaWR0aCtvOm99KSk/P1tdfSksYj1lLmNvbXB1dGVkKCgpPT57dmFyIGU7cmV0dXJuIG51bGwhPT1nLnZhbHVlP251bGw9PShlPXkudmFsdWUpP3ZvaWQgMDplW2cudmFsdWVdOm51bGx9KSxtPXU9Pnt2YXIgZCxmLGcsYjtjb25zdCBrPShudWxsPT0oZD15LnZhbHVlKT92b2lkIDA6ZC5maW5kSW5kZXgoZT0+ZT09PXUpKT8/bnVsbDtlLm5leHRUaWNrKCgpPT57dmFyIGU7cihrLHkudmFsdWUpLEMobnVsbD09KGU9by52YWx1ZSk/dm9pZCAwOmUuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtzdC5EVVJBVElPTn1zIGN1YmljLWJlemllcigke3N0LkVBU0Uuam9pbigiLCIpfSlgLHRyYW5zZm9ybTpfKHMudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke3V9cHgsIDApYDpgdHJhbnNsYXRlM2QoJHt1fXB4LCAwLCAwKWB9KX0pLHkudmFsdWUmJmshPT15LnZhbHVlLmxlbmd0aC0xJiZrIT09KG51bGw9PW4/dm9pZCAwOm4udmFsdWUpP0MobnVsbD09KGY9aS52YWx1ZSk/dm9pZCAwOmYuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIwIn0pOkMobnVsbD09KGc9aS52YWx1ZSk/dm9pZCAwOmcuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIxIn0pLHQudmFsdWU9bnVsbCE9PWs/KG51bGw9PShiPWwudmFsdWUpP3ZvaWQgMDpiW2tdKT8/bnVsbDpudWxsfTtyZXR1cm4gZS53YXRjaChbdCx5LGxdLCgpPT57dmFyIGU7aWYodC52YWx1ZSl7Y29uc3Qgbz0obnVsbD09KGU9bC52YWx1ZSk/dm9pZCAwOmUuZmluZEluZGV4KGU9PmU9PT10LnZhbHVlKSk/Py0xO3kudmFsdWUmJi0xIT09byYmIm51bWJlciI9PXR5cGVvZiB5LnZhbHVlW29dJiZtKHkudmFsdWVbb10pfX0se2ltbWVkaWF0ZTohMH0pLHtpc0xhc3RTbmFwUG9pbnQ6ZCxzaG91bGRGYWRlOmYsZ2V0UGVyY2VudGFnZURyYWdnZWQ6ZnVuY3Rpb24oZSx0KXtpZighbC52YWx1ZXx8Im51bWJlciIhPXR5cGVvZiBnLnZhbHVlfHwheS52YWx1ZXx8dm9pZCAwPT09bi52YWx1ZSlyZXR1cm4gbnVsbDtjb25zdCBvPWcudmFsdWU9PT1uLnZhbHVlLTE7aWYoZy52YWx1ZT49bi52YWx1ZSYmdClyZXR1cm4gMDtpZihvJiYhdClyZXR1cm4gMTtpZighZi52YWx1ZSYmIW8pcmV0dXJuIG51bGw7Y29uc3QgaT1vP2cudmFsdWUrMTpnLnZhbHVlLTEscj1vP3kudmFsdWVbaV0teS52YWx1ZVtpLTFdOnkudmFsdWVbaSsxXS15LnZhbHVlW2ldLHM9ZS9NYXRoLmFicyhyKTtyZXR1cm4gbz8xLXM6c30sYWN0aXZlU25hcFBvaW50SW5kZXg6ZyxvblJlbGVhc2U6ZnVuY3Rpb24oe2RyYWdnZWREaXN0YW5jZTplLGNsb3NlRHJhd2VyOnQsdmVsb2NpdHk6byxkaXNtaXNzaWJsZTpyfSl7dmFyIHUsZixrO2lmKHZvaWQgMD09PW4udmFsdWUpcmV0dXJuO2NvbnN0IHg9ImJvdHRvbSI9PT1zLnZhbHVlfHwicmlnaHQiPT09cy52YWx1ZT8oYi52YWx1ZT8/MCktZTooYi52YWx1ZT8/MCkrZSxCPWcudmFsdWU9PT1uLnZhbHVlLTEsUz0wPT09Zy52YWx1ZSx3PWU+MDtpZihCJiZDKG51bGw9PSh1PWkudmFsdWUpP3ZvaWQgMDp1LiRlbCx7dHJhbnNpdGlvbjpgb3BhY2l0eSAke3N0LkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7c3QuRUFTRS5qb2luKCIsIil9KWB9KSxvPjImJiF3KXJldHVybiB2b2lkKHI/dCgpOm0oeS52YWx1ZVswXSkpO2lmKG8+MiYmdyYmeSYmbC52YWx1ZSlyZXR1cm4gdm9pZCBtKHkudmFsdWVbbC52YWx1ZS5sZW5ndGgtMV0pO2NvbnN0IE49bnVsbD09KGY9eS52YWx1ZSk/dm9pZCAwOmYucmVkdWNlKChlLHQpPT4ibnVtYmVyIiE9dHlwZW9mIGV8fCJudW1iZXIiIT10eXBlb2YgdD9lOk1hdGguYWJzKHQteCk8TWF0aC5hYnMoZS14KT90OmUpLEk9XyhzLnZhbHVlKT8odm9pZCAwKS5pbm5lckhlaWdodDoodm9pZCAwKS5pbm5lcldpZHRoO2lmKG8+LjQmJk1hdGguYWJzKGUpPC40Kkkpe2NvbnN0IGU9dz8xOi0xO2lmKGU+MCYmZClyZXR1cm4gdm9pZCBtKHkudmFsdWVbKChudWxsPT0oaz1sLnZhbHVlKT92b2lkIDA6ay5sZW5ndGgpPz8wKS0xXSk7aWYoUyYmZTwwJiZyJiZ0KCksbnVsbD09PWcudmFsdWUpcmV0dXJuO3JldHVybiB2b2lkIG0oeS52YWx1ZVtnLnZhbHVlK2VdKX1tKE4pfSxvbkRyYWc6ZnVuY3Rpb24oe2RyYWdnZWREaXN0YW5jZTplfSl7dmFyIHQ7aWYobnVsbD09PWIudmFsdWUpcmV0dXJuO2NvbnN0IGw9ImJvdHRvbSI9PT1zLnZhbHVlfHwicmlnaHQiPT09cy52YWx1ZT9iLnZhbHVlLWU6Yi52YWx1ZStlOygiYm90dG9tIj09PXMudmFsdWV8fCJyaWdodCI9PT1zLnZhbHVlKSYmbDx5LnZhbHVlW3kudmFsdWUubGVuZ3RoLTFdfHwoInRvcCI9PT1zLnZhbHVlfHwibGVmdCI9PT1zLnZhbHVlKSYmbD55LnZhbHVlW3kudmFsdWUubGVuZ3RoLTFdfHxDKG51bGw9PSh0PW8udmFsdWUpP3ZvaWQgMDp0LiRlbCx7dHJhbnNmb3JtOl8ocy52YWx1ZSk/YHRyYW5zbGF0ZTNkKDAsICR7bH1weCwgMClgOmB0cmFuc2xhdGUzZCgke2x9cHgsIDAsIDApYH0pfSxzbmFwUG9pbnRzT2Zmc2V0Onl9fSh7c25hcFBvaW50czpKLGFjdGl2ZVNuYXBQb2ludDprLGRyYXdlclJlZjpXLGZhZGVGcm9tSW5kZXg6eCxvdmVybGF5UmVmOk0sb25TbmFwUG9pbnRDaGFuZ2U6ZnVuY3Rpb24oZSx0KXtKLnZhbHVlJiZlPT09dC5sZW5ndGgtMSYmKFAudmFsdWU9bmV3IERhdGUpfSxkaXJlY3Rpb246Qn0pO2Z1bmN0aW9uIG5lKCl7cmV0dXJuKCh2b2lkIDApLmlubmVyV2lkdGgtMjYpLyh2b2lkIDApLmlubmVyV2lkdGh9ZnVuY3Rpb24gd2UoZSx0KXt2YXIgbDtpZighZSlyZXR1cm4hMTtsZXQgbz1lO2NvbnN0IGk9bnVsbD09KGw9KHZvaWQgMCkuZ2V0U2VsZWN0aW9uKCkpP3ZvaWQgMDpsLnRvU3RyaW5nKCksbj1XLnZhbHVlP2llKFcudmFsdWUuJGVsLEIudmFsdWUpOm51bGwscj1uZXcgRGF0ZTtpZihvLmhhc0F0dHJpYnV0ZSgiZGF0YS12YXVsLW5vLWRyYWciKXx8by5jbG9zZXN0KCJbZGF0YS12YXVsLW5vLWRyYWddIikpcmV0dXJuITE7aWYoInJpZ2h0Ij09PUIudmFsdWV8fCJsZWZ0Ij09PUIudmFsdWUpcmV0dXJuITA7aWYoUC52YWx1ZSYmci5nZXRUaW1lKCktUC52YWx1ZS5nZXRUaW1lKCk8NTAwKXJldHVybiExO2lmKG51bGwhPT1uJiYoImJvdHRvbSI9PT1CLnZhbHVlP24+MDpuPDApKXJldHVybiEwO2lmKGkmJmkubGVuZ3RoPjApcmV0dXJuITE7aWYoTy52YWx1ZSYmci5nZXRUaW1lKCktTy52YWx1ZS5nZXRUaW1lKCk8eS52YWx1ZSYmMD09PW58fHQpcmV0dXJuIE8udmFsdWU9ciwhMTtmb3IoO287KXtpZihvLnNjcm9sbEhlaWdodD5vLmNsaWVudEhlaWdodCl7aWYoMCE9PW8uc2Nyb2xsVG9wKXJldHVybiBPLnZhbHVlPW5ldyBEYXRlLCExO2lmKCJkaWFsb2ciPT09by5nZXRBdHRyaWJ1dGUoInJvbGUiKSlyZXR1cm4hMH1vPW8ucGFyZW50Tm9kZX1yZXR1cm4hMH1mdW5jdGlvbiBoZSgpe3ZhciBlO2lmKCFXLnZhbHVlKXJldHVybjtjb25zdCB0PSh2b2lkIDApLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXZhdWwtZHJhd2VyLXdyYXBwZXJdIil8fCh2b2lkIDApLnF1ZXJ5U2VsZWN0b3IoIlt2YXVsLWRyYXdlci13cmFwcGVyXSIpLGw9aWUoVy52YWx1ZS4kZWwsQi52YWx1ZSk7QyhXLnZhbHVlLiRlbCx7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgwLCAwLCAwKSIsdHJhbnNpdGlvbjpgdHJhbnNmb3JtICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYH0pLEMobnVsbD09KGU9TS52YWx1ZSk/dm9pZCAwOmUuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIxIn0pLGYudmFsdWUmJmwmJmw+MCYmSS52YWx1ZSYmQyh0LHtib3JkZXJSYWRpdXM6IjhweCIsb3ZlcmZsb3c6ImhpZGRlbiIsLi4uXyhCLnZhbHVlKT97dHJhbnNmb3JtOmBzY2FsZSgke25lKCl9KSB0cmFuc2xhdGUzZCgwLCBjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwKWAsdHJhbnNmb3JtT3JpZ2luOiJ0b3AifTp7dHJhbnNmb3JtOmBzY2FsZSgke25lKCl9KSB0cmFuc2xhdGUzZChjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwLCAwKWAsdHJhbnNmb3JtT3JpZ2luOiJsZWZ0In0sdHJhbnNpdGlvblByb3BlcnR5OiJ0cmFuc2Zvcm0sIGJvcmRlci1yYWRpdXMiLHRyYW5zaXRpb25EdXJhdGlvbjpgJHtzdC5EVVJBVElPTn1zYCx0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246YGN1YmljLWJlemllcigke3N0LkVBU0Uuam9pbigiLCIpfSlgfSwhMCl9ZnVuY3Rpb24gSyhlKXtXLnZhbHVlJiYoaSgpLGV8fChJLnZhbHVlPSExKSwodm9pZCAwKS5zZXRUaW1lb3V0KCgpPT57Si52YWx1ZSYmKGsudmFsdWU9Si52YWx1ZVswXSl9LDFlMypzdC5EVVJBVElPTikpfXJldHVybiB3dCh7aXNPcGVuOkksbW9kYWw6ZCxuZXN0ZWQ6dSxoYXNCZWVuT3BlbmVkOlYsbm9Cb2R5U3R5bGVzOlMscHJldmVudFNjcm9sbFJlc3RvcmF0aW9uOk59KSxlLndhdGNoRWZmZWN0KCgpPT57IUkudmFsdWUmJmYudmFsdWUsMH0pLGUud2F0Y2gociwoKT0+e0kudmFsdWU9ci52YWx1ZSxyLnZhbHVlfHxLKCl9KSxlLndhdGNoKEksZT0+e2UmJihQLnZhbHVlPW5ldyBEYXRlKSxuKGUpfSx7aW1tZWRpYXRlOiEwfSkse29wZW46cixpc09wZW46SSxtb2RhbDpkLGtleWJvYXJkSXNPcGVuOlUsaGFzQmVlbk9wZW5lZDpWLGRyYXdlclJlZjpXLGRyYXdlckhlaWdodFJlZjpHLG92ZXJsYXlSZWY6TSxoYW5kbGVSZWY6WCxpc0RyYWdnaW5nOkEsZHJhZ1N0YXJ0VGltZTpxLGlzQWxsb3dlZFRvRHJhZzpFLHNuYXBQb2ludHM6SixhY3RpdmVTbmFwUG9pbnQ6ayxoYXNTbmFwUG9pbnRzOlEscG9pbnRlclN0YXJ0OmosZGlzbWlzc2libGU6cyxzbmFwUG9pbnRzT2Zmc2V0OmVlLGRpcmVjdGlvbjpCLHNob3VsZEZhZGU6YWUsZmFkZUZyb21JbmRleDp4LHNob3VsZFNjYWxlQmFja2dyb3VuZDpmLHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6ZyxvblByZXNzOmZ1bmN0aW9uKGUpeyFzLnZhbHVlJiYhSi52YWx1ZXx8Vy52YWx1ZSYmIVcudmFsdWUuJGVsLmNvbnRhaW5zKGUudGFyZ2V0KXx8KEEudmFsdWU9ITAscS52YWx1ZT1uZXcgRGF0ZSxlLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCksai52YWx1ZT1fKEIudmFsdWUpP2UuY2xpZW50WTplLmNsaWVudFgpfSxvbkRyYWc6ZnVuY3Rpb24oZSl7dmFyIHQsbyxpLG4scix1O2lmKFcudmFsdWUmJkEudmFsdWUpe2NvbnN0IGQ9ImJvdHRvbSI9PT1CLnZhbHVlfHwicmlnaHQiPT09Qi52YWx1ZT8xOi0xLGc9KGoudmFsdWUtKF8oQi52YWx1ZSk/ZS5jbGllbnRZOmUuY2xpZW50WCkpKmQseT1nPjAsYj1KLnZhbHVlJiYhcy52YWx1ZSYmIXk7aWYoYiYmMD09PVkudmFsdWUpcmV0dXJuO2NvbnN0IGs9TWF0aC5hYnMoZyksUz0odm9pZCAwKS5xdWVyeVNlbGVjdG9yKCJbZGF0YS12YXVsLWRyYXdlci13cmFwcGVyXSIpfHwodm9pZCAwKS5xdWVyeVNlbGVjdG9yKCJbdmF1bC1kcmF3ZXItd3JhcHBlcl0iKTtsZXQgdz1rL0cudmFsdWU7Y29uc3QgTj1sZShrLHkpO2lmKG51bGwhPT1OJiYodz1OKSxiJiZ3Pj0xfHwhRS52YWx1ZSYmIXdlKGUudGFyZ2V0LHkpKXJldHVybjtpZihudWxsPT0odD1udWxsPT1XP3ZvaWQgMDpXLnZhbHVlKXx8dC4kZWwuY2xhc3NMaXN0LmFkZChjdCksRS52YWx1ZT0hMCxDKG51bGw9PShvPVcudmFsdWUpP3ZvaWQgMDpvLiRlbCx7dHJhbnNpdGlvbjoibm9uZSJ9KSxDKG51bGw9PShpPU0udmFsdWUpP3ZvaWQgMDppLiRlbCx7dHJhbnNpdGlvbjoibm9uZSJ9KSxKLnZhbHVlJiZ0ZSh7ZHJhZ2dlZERpc3RhbmNlOmd9KSx5JiYhSi52YWx1ZSl7Y29uc3QgZT1mdW5jdGlvbihlKXtyZXR1cm4gOCooTWF0aC5sb2coZSsxKS0yKX0oZyksdD1NYXRoLm1pbigtMSplLDApKmQ7cmV0dXJuIHZvaWQgQyhudWxsPT0obj1XLnZhbHVlKT92b2lkIDA6bi4kZWwse3RyYW5zZm9ybTpfKEIudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke3R9cHgsIDApYDpgdHJhbnNsYXRlM2QoJHt0fXB4LCAwLCAwKWB9KX1jb25zdCBJPTEtdztpZigoYWUudmFsdWV8fHgudmFsdWUmJlkudmFsdWU9PT14LnZhbHVlLTEpJiYobCh3KSxDKG51bGw9PShyPU0udmFsdWUpP3ZvaWQgMDpyLiRlbCx7b3BhY2l0eTpgJHtJfWAsdHJhbnNpdGlvbjoibm9uZSJ9LCEwKSksUyYmTS52YWx1ZSYmZi52YWx1ZSl7Y29uc3QgZT1NYXRoLm1pbihuZSgpK3cqKDEtbmUoKSksMSksdD04LTgqdyxsPU1hdGgubWF4KDAsMTQtMTQqdyk7QyhTLHtib3JkZXJSYWRpdXM6YCR7dH1weGAsdHJhbnNmb3JtOl8oQi52YWx1ZSk/YHNjYWxlKCR7ZX0pIHRyYW5zbGF0ZTNkKDAsICR7bH1weCwgMClgOmBzY2FsZSgke2V9KSB0cmFuc2xhdGUzZCgke2x9cHgsIDAsIDApYCx0cmFuc2l0aW9uOiJub25lIn0sITApfWlmKCFKLnZhbHVlKXtjb25zdCBlPWsqZDtDKG51bGw9PSh1PVcudmFsdWUpP3ZvaWQgMDp1LiRlbCx7dHJhbnNmb3JtOl8oQi52YWx1ZSk/YHRyYW5zbGF0ZTNkKDAsICR7ZX1weCwgMClgOmB0cmFuc2xhdGUzZCgke2V9cHgsIDAsIDApYH0pfX19LG9uUmVsZWFzZTpmdW5jdGlvbihlKXtpZighQS52YWx1ZXx8IVcudmFsdWUpcmV0dXJuO1cudmFsdWUuJGVsLmNsYXNzTGlzdC5yZW1vdmUoY3QpLEUudmFsdWU9ITEsQS52YWx1ZT0hMSxGLnZhbHVlPW5ldyBEYXRlO2NvbnN0IHQ9aWUoVy52YWx1ZS4kZWwsQi52YWx1ZSk7aWYoIXdlKGUudGFyZ2V0LCExKXx8IXR8fE51bWJlci5pc05hTih0KXx8bnVsbD09PXEudmFsdWUpcmV0dXJuO2NvbnN0IGw9Ri52YWx1ZS5nZXRUaW1lKCktcS52YWx1ZS5nZXRUaW1lKCksaT1qLnZhbHVlLShfKEIudmFsdWUpP2UuY2xpZW50WTplLmNsaWVudFgpLG49TWF0aC5hYnMoaSkvbDtpZihuPi4wNSYmKHoudmFsdWU9ITAsKHZvaWQgMCkuc2V0VGltZW91dCgoKT0+e3oudmFsdWU9ITF9LDIwMCkpLEoudmFsdWUpe2NvbnN0IGU9ImJvdHRvbSI9PT1CLnZhbHVlfHwicmlnaHQiPT09Qi52YWx1ZT8xOi0xO3JldHVybiBaKHtkcmFnZ2VkRGlzdGFuY2U6aSplLGNsb3NlRHJhd2VyOkssdmVsb2NpdHk6bixkaXNtaXNzaWJsZTpzLnZhbHVlfSksdm9pZCBvKCEwKX1pZigiYm90dG9tIj09PUIudmFsdWV8fCJyaWdodCI9PT1CLnZhbHVlP2k+MDppPDApcmV0dXJuIGhlKCksdm9pZCBvKCEwKTtpZihuPi40KXJldHVybiBLKCksdm9pZCBvKCExKTtpZih0Pj1NYXRoLm1pbihXLnZhbHVlLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ/PzAsKHZvaWQgMCkuaW5uZXJIZWlnaHQpKmIudmFsdWUpcmV0dXJuIEsoKSx2b2lkIG8oITEpO28oITApLGhlKCl9LGNsb3NlRHJhd2VyOkssb25OZXN0ZWREcmFnOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGU8MClyZXR1cm47Y29uc3QgbD1fKEIudmFsdWUpPyh2b2lkIDApLmlubmVySGVpZ2h0Oih2b2lkIDApLmlubmVyV2lkdGgsbz0obC0xNikvbCxpPW8rZSooMS1vKSxuPTE2KmUtMTY7QyhudWxsPT0odD1XLnZhbHVlKT92b2lkIDA6dC4kZWwse3RyYW5zZm9ybTpfKEIudmFsdWUpP2BzY2FsZSgke2l9KSB0cmFuc2xhdGUzZCgwLCAke259cHgsIDApYDpgc2NhbGUoJHtpfSkgdHJhbnNsYXRlM2QoJHtufXB4LCAwLCAwKWAsdHJhbnNpdGlvbjoibm9uZSJ9KX0sb25OZXN0ZWRSZWxlYXNlOmZ1bmN0aW9uKGUpe3ZhciB0O2NvbnN0IGw9XyhCLnZhbHVlKT8odm9pZCAwKS5pbm5lckhlaWdodDoodm9pZCAwKS5pbm5lcldpZHRoLG89ZT8obC0xNikvbDoxLGk9ZT8tMTY6MDtlJiZDKG51bGw9PSh0PVcudmFsdWUpP3ZvaWQgMDp0LiRlbCx7dHJhbnNpdGlvbjpgdHJhbnNmb3JtICR7c3QuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtzdC5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06XyhCLnZhbHVlKT9gc2NhbGUoJHtvfSkgdHJhbnNsYXRlM2QoMCwgJHtpfXB4LCAwKWA6YHNjYWxlKCR7b30pIHRyYW5zbGF0ZTNkKCR7aX1weCwgMCwgMClgfSl9LG9uTmVzdGVkT3BlbkNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdCxsO2NvbnN0IG89ZT8oKHZvaWQgMCkuaW5uZXJXaWR0aC0xNikvKHZvaWQgMCkuaW5uZXJXaWR0aDoxLGk9ZT8tMTY6MDtSLnZhbHVlJiYodm9pZCAwKS5jbGVhclRpbWVvdXQoUi52YWx1ZSksQyhudWxsPT0odD1XLnZhbHVlKT92b2lkIDA6dC4kZWwse3RyYW5zaXRpb246YHRyYW5zZm9ybSAke3N0LkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7c3QuRUFTRS5qb2luKCIsIil9KWAsdHJhbnNmb3JtOmBzY2FsZSgke299KSB0cmFuc2xhdGUzZCgwLCAke2l9cHgsIDApYH0pLCFlJiZudWxsIT0obD1XLnZhbHVlKSYmbC4kZWwmJihSLnZhbHVlPSh2b2lkIDApLnNldFRpbWVvdXQoKCk9Pnt2YXIgZSx0O2NvbnN0IGw9aWUobnVsbD09KGU9Vy52YWx1ZSk/dm9pZCAwOmUuJGVsLEIudmFsdWUpO0MobnVsbD09KHQ9Vy52YWx1ZSk/dm9pZCAwOnQuJGVsLHt0cmFuc2l0aW9uOiJub25lIix0cmFuc2Zvcm06XyhCLnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHtsfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7bH1weCwgMCwgMClgfSl9LDUwMCkpfSxlbWl0Q2xvc2U6aSxlbWl0RHJhZzpsLGVtaXRSZWxlYXNlOm8sZW1pdE9wZW5DaGFuZ2U6bixuZXN0ZWQ6dSxoYW5kbGVPbmx5Oncsbm9Cb2R5U3R5bGVzOlN9fWNvbnN0IGR0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyYXdlclJvb3QiLHByb3BzOnthY3RpdmVTbmFwUG9pbnQ6e2RlZmF1bHQ6dm9pZCAwfSxjbG9zZVRocmVzaG9sZDp7ZGVmYXVsdDouMjV9LHNob3VsZFNjYWxlQmFja2dyb3VuZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc2Nyb2xsTG9ja1RpbWVvdXQ6e2RlZmF1bHQ6MTAwfSxmaXhlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LG1vZGFsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sb3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxkaXJlY3Rpb246e2RlZmF1bHQ6ImJvdHRvbSJ9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFufSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scHJldmVudFNjcm9sbFJlc3RvcmF0aW9uOnt0eXBlOkJvb2xlYW59LHNuYXBQb2ludHM6e2RlZmF1bHQ6dm9pZCAwfSxmYWRlRnJvbUluZGV4OntkZWZhdWx0OnZvaWQgMH19LGVtaXRzOlsiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2V4cG9zZTpsLGVtaXQ6b30pe2NvbnN0IGk9dCxuPW87ZS51c2VTbG90cygpO2NvbnN0IHI9ZS5jb21wdXRlZCgoKT0+aS5mYWRlRnJvbUluZGV4Pz8oaS5zbmFwUG9pbnRzJiZpLnNuYXBQb2ludHMubGVuZ3RoLTEpKSxzPSRlKGksIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTppLmRlZmF1bHRPcGVuLHBhc3NpdmU6dm9pZCAwPT09aS5vcGVufSksdT0kZShpLCJhY3RpdmVTbmFwUG9pbnQiLG4se3Bhc3NpdmU6dm9pZCAwPT09aS5hY3RpdmVTbmFwUG9pbnR9KSxkPXtlbWl0RHJhZzplPT5uKCJkcmFnIixlKSxlbWl0UmVsZWFzZTplPT5uKCJyZWxlYXNlIixlKSxlbWl0Q2xvc2U6KCk9Pm4oImNsb3NlIiksZW1pdE9wZW5DaGFuZ2U6ZT0+e24oInVwZGF0ZTpvcGVuIixlKSxzZXRUaW1lb3V0KCgpPT57bigiYW5pbWF0aW9uRW5kIixlKX0sMWUzKnN0LkRVUkFUSU9OKX19LHtjbG9zZURyYXdlcjpmLGhhc0JlZW5PcGVuZWQ6Zyxtb2RhbDp5LGlzT3BlbjpifT1udCh5dCh7Li4uZCwuLi5lLnRvUmVmcyhpKSxhY3RpdmVTbmFwUG9pbnQ6dSxmYWRlRnJvbUluZGV4OnIsb3BlbjpzfSkpO2Z1bmN0aW9uIGgoZSl7dm9pZCAwPT09cy52YWx1ZT8oYi52YWx1ZT1lLGU/Zy52YWx1ZT0hMDpmKCkpOmQuZW1pdE9wZW5DaGFuZ2UoZSl9cmV0dXJuIGwoe29wZW46Yn0pLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoa2UpLHtvcGVuOmUudW5yZWYoYiksbW9kYWw6ZS51bnJlZih5KSwib25VcGRhdGU6b3BlbiI6aH0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjplLnVucmVmKGIpfSldKSxfOjN9LDgsWyJvcGVuIiwibW9kYWwiXSkpfX0pLHB0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyYXdlclJvb3ROZXN0ZWQiLHByb3BzOnthY3RpdmVTbmFwUG9pbnQ6e30sY2xvc2VUaHJlc2hvbGQ6e30sc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOnt0eXBlOkJvb2xlYW59LHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6e3R5cGU6Qm9vbGVhbn0sc2Nyb2xsTG9ja1RpbWVvdXQ6e30sZml4ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbn0sbW9kYWw6e3R5cGU6Qm9vbGVhbn0sb3Blbjp7dHlwZTpCb29sZWFufSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFufSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlyZWN0aW9uOnt9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFufSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW59LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjp7dHlwZTpCb29sZWFufSxzbmFwUG9pbnRzOnt9LGZhZGVGcm9tSW5kZXg6e319LGVtaXRzOlsiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2VtaXQ6bH0pe2NvbnN0IG89dCxpPWwse29uTmVzdGVkRHJhZzpuLG9uTmVzdGVkT3BlbkNoYW5nZTpyLG9uTmVzdGVkUmVsZWFzZTpzfT1pdCgpO2Z1bmN0aW9uIHYoKXtyKCExKX1mdW5jdGlvbiBEKGUpe24oZSl9ZnVuY3Rpb24gJChlKXtlJiZyKGUpLGkoInVwZGF0ZTpvcGVuIixlKX1jb25zdCB1PXcobyxpKTtyZXR1cm4odCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhkdCxlLm1lcmdlUHJvcHMoZS51bnJlZih1KSx7bmVzdGVkOiIiLG9uQ2xvc2U6dixvbkRyYWc6RCxvblJlbGVhc2U6ZS51bnJlZihzKSwib25VcGRhdGU6b3BlbiI6JH0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbIm9uUmVsZWFzZSJdKSl9fSksZnQ9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiRHJhd2VyT3ZlcmxheSIsc2V0dXAodCl7Y29uc3R7b3ZlcmxheVJlZjpsLGhhc1NuYXBQb2ludHM6byxpc09wZW46aSxzaG91bGRGYWRlOm59PWl0KCk7cmV0dXJuKHQscik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2ZSkse3JlZl9rZXk6Im92ZXJsYXlSZWYiLHJlZjpsLCJkYXRhLXZhdWwtb3ZlcmxheSI6IiIsImRhdGEtdmF1bC1zbmFwLXBvaW50cyI6ZS51bnJlZihpKSYmZS51bnJlZihvKT8idHJ1ZSI6ImZhbHNlIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzLW92ZXJsYXkiOmUudW5yZWYoaSkmJmUudW5yZWYobik/InRydWUiOiJmYWxzZSJ9LG51bGwsOCxbImRhdGEtdmF1bC1zbmFwLXBvaW50cyIsImRhdGEtdmF1bC1zbmFwLXBvaW50cy1vdmVybGF5Il0pKX19KTtjb25zdCBtdD1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEcmF3ZXJDb250ZW50IixzZXR1cCh0KXtjb25zdHtvcGVuOmwsaXNPcGVuOm8sc25hcFBvaW50c09mZnNldDppLGhhc1NuYXBQb2ludHM6bixkcmF3ZXJSZWY6cixvblByZXNzOnMsb25EcmFnOnUsb25SZWxlYXNlOmQsbW9kYWw6ZixlbWl0T3BlbkNoYW5nZTpnLGRpc21pc3NpYmxlOnksa2V5Ym9hcmRJc09wZW46YixjbG9zZURyYXdlcjprLGRpcmVjdGlvbjp4LGhhbmRsZU9ubHk6Qn09aXQoKTshZnVuY3Rpb24oKXtjb25zdHtkaXJlY3Rpb246dCxpc09wZW46bCxzaG91bGRTY2FsZUJhY2tncm91bmQ6byxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOmksbm9Cb2R5U3R5bGVzOm59PWl0KCkscj1lLnJlZihudWxsKSxzPWUucmVmKCh2b2lkIDApLmJvZHkuc3R5bGUuYmFja2dyb3VuZENvbG9yKTtmdW5jdGlvbiB2KCl7cmV0dXJuKCh2b2lkIDApLmlubmVyV2lkdGgtMjYpLyh2b2lkIDApLmlubmVyV2lkdGh9ZS53YXRjaEVmZmVjdChlPT57aWYobC52YWx1ZSYmby52YWx1ZSl7ci52YWx1ZSYmY2xlYXJUaW1lb3V0KHIudmFsdWUpO2NvbnN0IGw9KHZvaWQgMCkucXVlcnlTZWxlY3RvcigiW2RhdGEtdmF1bC1kcmF3ZXItd3JhcHBlcl0iKXx8KHZvaWQgMCkucXVlcnlTZWxlY3RvcigiW3ZhdWwtZHJhd2VyLXdyYXBwZXJdIik7aWYoIWwpcmV0dXJuO2kudmFsdWUmJiFuLnZhbHVlJiZkZSgodm9pZCAwKS5ib2R5LHtiYWNrZ3JvdW5kOiJibGFjayJ9KSxkZShsLHt0cmFuc2Zvcm1PcmlnaW46Xyh0LnZhbHVlKT8idG9wIjoibGVmdCIsdHJhbnNpdGlvblByb3BlcnR5OiJ0cmFuc2Zvcm0sIGJvcmRlci1yYWRpdXMiLHRyYW5zaXRpb25EdXJhdGlvbjpgJHtzdC5EVVJBVElPTn1zYCx0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246YGN1YmljLWJlemllcigke3N0LkVBU0Uuam9pbigiLCIpfSlgfSk7Y29uc3Qgbz1kZShsLHtib3JkZXJSYWRpdXM6IjhweCIsb3ZlcmZsb3c6ImhpZGRlbiIsLi4uXyh0LnZhbHVlKT97dHJhbnNmb3JtOmBzY2FsZSgke3YoKX0pIHRyYW5zbGF0ZTNkKDAsIGNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC10b3ApICsgMTRweCksIDApYH06e3RyYW5zZm9ybTpgc2NhbGUoJHt2KCl9KSB0cmFuc2xhdGUzZChjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwLCAwKWB9fSk7ZSgoKT0+e28oKSxyLnZhbHVlPSh2b2lkIDApLnNldFRpbWVvdXQoKCk9PntzLnZhbHVlPyh2b2lkIDApLmJvZHkuc3R5bGUuYmFja2dyb3VuZD1zLnZhbHVlOih2b2lkIDApLmJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoImJhY2tncm91bmQiKX0sMWUzKnN0LkRVUkFUSU9OKX0pfX0se2ZsdXNoOiJwcmUifSl9KCk7Y29uc3QgUz1lLnJlZighMSksdz1lLmNvbXB1dGVkKCgpPT5pLnZhbHVlJiZpLnZhbHVlLmxlbmd0aD4wP2Ake2kudmFsdWVbMF19cHhgOiIwIik7ZnVuY3Rpb24gcChlKXtmLnZhbHVlJiYhZS5kZWZhdWx0UHJldmVudGVkPyhiLnZhbHVlJiYoYi52YWx1ZT0hMSkseS52YWx1ZT9nKCExKTplLnByZXZlbnREZWZhdWx0KCkpOmUucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBhKGUpe0IudmFsdWV8fHMoZSl9ZnVuY3Rpb24gYyhlKXtCLnZhbHVlfHx1KGUpfXJldHVybiBlLndhdGNoRWZmZWN0KCgpPT57bi52YWx1ZSYmKHZvaWQgMCkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Uy52YWx1ZT0hMH0pfSksKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih5ZSkse3JlZl9rZXk6ImRyYXdlclJlZiIscmVmOnIsImRhdGEtdmF1bC1kcmF3ZXIiOiIiLCJkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbiI6ZS51bnJlZih4KSwiZGF0YS12YXVsLWRlbGF5ZWQtc25hcC1wb2ludHMiOlMudmFsdWU/InRydWUiOiJmYWxzZSIsImRhdGEtdmF1bC1zbmFwLXBvaW50cyI6ZS51bnJlZihvKSYmZS51bnJlZihuKT8idHJ1ZSI6ImZhbHNlIixzdHlsZTplLm5vcm1hbGl6ZVN0eWxlKHsiLS1zbmFwLXBvaW50LWhlaWdodCI6dy52YWx1ZX0pLG9uUG9pbnRlcmRvd246YSxvblBvaW50ZXJtb3ZlOmMsb25Qb2ludGVydXA6ZS51bnJlZihkKSxvblBvaW50ZXJEb3duT3V0c2lkZTpwLG9uT3BlbkF1dG9Gb2N1czpsWzBdfHwobFswXT1lLndpdGhNb2RpZmllcnMoKCk9Pnt9LFsicHJldmVudCJdKSksb25Fc2NhcGVLZXlEb3duOmxbMV18fChsWzFdPXQ9PntlLnVucmVmKHkpfHx0LnByZXZlbnREZWZhdWx0KCl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbiIsImRhdGEtdmF1bC1kZWxheWVkLXNuYXAtcG9pbnRzIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzIiwic3R5bGUiLCJvblBvaW50ZXJ1cCJdKSl9fSksaHQ9WyJkYXRhLXZhdWwtZHJhd2VyLXZpc2libGUiXSxndD17ImRhdGEtdmF1bC1oYW5kbGUtaGl0YXJlYSI6IiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHZ0PWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkRyYXdlckhhbmRsZSIscHJvcHM6e3ByZXZlbnRDeWNsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxzZXR1cCh0KXtjb25zdCBsPXQse29uUHJlc3M6byxvbkRyYWc6aSxoYW5kbGVSZWY6bixoYW5kbGVPbmx5OnIsaXNPcGVuOnMsc25hcFBvaW50czp1LGFjdGl2ZVNuYXBQb2ludDpkLGlzRHJhZ2dpbmc6ZixkaXNtaXNzaWJsZTpnLGNsb3NlRHJhd2VyOnl9PWl0KCksYj1lLnJlZihudWxsKSxrPWUucmVmKCExKTtmdW5jdGlvbiBtKCl7ay52YWx1ZT9IKCk6KHZvaWQgMCkuc2V0VGltZW91dCgoKT0+eyFmdW5jdGlvbigpe2lmKGYudmFsdWV8fGwucHJldmVudEN5Y2xlfHxrLnZhbHVlKXJldHVybiB2b2lkIEgoKTtpZihIKCksIXUudmFsdWV8fDA9PT11LnZhbHVlLmxlbmd0aClyZXR1cm4gdm9pZChnLnZhbHVlfHx5KCkpO2NvbnN0IGU9ZC52YWx1ZT09PXUudmFsdWVbdS52YWx1ZS5sZW5ndGgtMV07aWYoZSYmZy52YWx1ZSlyZXR1cm4gdm9pZCB5KCk7Y29uc3QgdD11LnZhbHVlLmZpbmRJbmRleChlPT5lPT09ZC52YWx1ZSk7aWYoLTE9PT10KXJldHVybjtjb25zdCBvPWU/MDp0KzE7ZC52YWx1ZT11LnZhbHVlW29dfSgpfSwxMjApfWZ1bmN0aW9uIEgoKXtiLnZhbHVlJiYodm9pZCAwKS5jbGVhclRpbWVvdXQoYi52YWx1ZSksay52YWx1ZT0hMX1mdW5jdGlvbiBwKGUpe3IudmFsdWUmJm8oZSksYi52YWx1ZT0odm9pZCAwKS5zZXRUaW1lb3V0KCgpPT57ay52YWx1ZT0hMH0sMjUwKX1mdW5jdGlvbiBhKGUpe3IudmFsdWUmJmkoZSl9cmV0dXJuKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlRWxlbWVudEJsb2NrKCJkaXYiLHtyZWZfa2V5OiJoYW5kbGVSZWYiLHJlZjpuLCJkYXRhLXZhdWwtZHJhd2VyLXZpc2libGUiOmUudW5yZWYocyk/InRydWUiOiJmYWxzZSIsImRhdGEtdmF1bC1oYW5kbGUiOiIiLCJhcmlhLWhpZGRlbiI6InRydWUiLG9uQ2xpY2s6bSxvblBvaW50ZXJjYW5jZWw6SCxvblBvaW50ZXJkb3duOnAsb25Qb2ludGVybW92ZTphfSxbZS5jcmVhdGVFbGVtZW50Vk5vZGUoInNwYW4iLGd0LFtlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pXSw0MCxodCkpfX0pLGJ0PXtzbG90czp7b3ZlcmxheToiZml4ZWQgaW5zZXQtMCBiZy1lbGV2YXRlZC83NSIsY29udGVudDoiZml4ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctZGVmYXVsdCBmbGV4IGZvY3VzOm91dGxpbmUtbm9uZSIsaGFuZGxlOlsic2hyaW5rLTAgIWJnLWFjY2VudGVkIiwidHJhbnNpdGlvbi1vcGFjaXR5Il0sY29udGFpbmVyOiJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBnYXAtNCBwLTQgb3ZlcmZsb3cteS1hdXRvIixoZWFkZXI6IiIsdGl0bGU6InRleHQtaGlnaGxpZ2h0ZWQgZm9udC1zZW1pYm9sZCIsZGVzY3JpcHRpb246Im10LTEgdGV4dC1tdXRlZCB0ZXh0LXNtIixib2R5OiJmbGV4LTEiLGZvb3RlcjoiZmxleCBmbGV4LWNvbCBnYXAtMS41In0sdmFyaWFudHM6e2RpcmVjdGlvbjp7dG9wOntjb250ZW50OiJtYi0yNCBmbGV4LWNvbC1yZXZlcnNlIixoYW5kbGU6Im1iLTQifSxyaWdodDp7Y29udGVudDoiZmxleC1yb3ciLGhhbmRsZToiIW1sLTQifSxib3R0b206e2NvbnRlbnQ6Im10LTI0IGZsZXgtY29sIixoYW5kbGU6Im10LTQifSxsZWZ0Ontjb250ZW50OiJmbGV4LXJvdy1yZXZlcnNlIixoYW5kbGU6IiFtci00In19LGluc2V0Ont0cnVlOntjb250ZW50OiJyb3VuZGVkLWxnIGFmdGVyOmhpZGRlbiBvdmVyZmxvdy1oaWRkZW4gWy0taW5pdGlhbC10cmFuc2Zvcm06Y2FsYygxMDAlKzEuNXJlbSldIn19LHNuYXBQb2ludHM6e3RydWU6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7ZGlyZWN0aW9uOlsidG9wIiwiYm90dG9tIl0sY2xhc3M6e2NvbnRlbnQ6ImgtYXV0byBtYXgtaC1bOTYlXSIsaGFuZGxlOiIhdy0xMiAhaC0xLjUgbXgtYXV0byJ9fSx7ZGlyZWN0aW9uOlsidG9wIiwiYm90dG9tIl0sc25hcFBvaW50czohMCxjbGFzczp7Y29udGVudDoiaC1mdWxsIn19LHtkaXJlY3Rpb246WyJyaWdodCIsImxlZnQiXSxjbGFzczp7Y29udGVudDoidy1hdXRvIG1heC13LVtjYWxjKDEwMCUtMnJlbSldIixoYW5kbGU6IiFoLTEyICF3LTEuNSBtdC1hdXRvIG1iLWF1dG8ifX0se2RpcmVjdGlvbjpbInJpZ2h0IiwibGVmdCJdLHNuYXBQb2ludHM6ITAsY2xhc3M6e2NvbnRlbnQ6InctZnVsbCJ9fSx7ZGlyZWN0aW9uOiJ0b3AiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC14LTQgdG9wLTQifX0se2RpcmVjdGlvbjoidG9wIixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteC0wIHRvcC0wIHJvdW5kZWQtYi1sZyJ9fSx7ZGlyZWN0aW9uOiJib3R0b20iLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC14LTQgYm90dG9tLTQifX0se2RpcmVjdGlvbjoiYm90dG9tIixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteC0wIGJvdHRvbS0wIHJvdW5kZWQtdC1sZyJ9fSx7ZGlyZWN0aW9uOiJsZWZ0IixpbnNldDohMCxjbGFzczp7Y29udGVudDoiaW5zZXQteS00IGxlZnQtNCJ9fSx7ZGlyZWN0aW9uOiJsZWZ0IixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteS0wIGxlZnQtMCByb3VuZGVkLXItbGcifX0se2RpcmVjdGlvbjoicmlnaHQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC15LTQgcmlnaHQtNCJ9fSx7ZGlyZWN0aW9uOiJyaWdodCIsaW5zZXQ6ITEsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXktMCByaWdodC0wIHJvdW5kZWQtbC1sZyJ9fV19LGt0PXtfX25hbWU6IlVEcmF3ZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0aXRsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saW5zZXQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG92ZXJsYXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxoYW5kbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sbmVzdGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sYWN0aXZlU25hcFBvaW50Ont0eXBlOltOdW1iZXIsU3RyaW5nLG51bGxdLHJlcXVpcmVkOiExfSxjbG9zZVRocmVzaG9sZDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNob3VsZFNjYWxlQmFja2dyb3VuZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNjcm9sbExvY2tUaW1lb3V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZml4ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlyZWN0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJib3R0b20ifSxub0JvZHlTdHlsZXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGFuZGxlT25seTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc25hcFBvaW50czp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX19LGVtaXRzOlsiY2xvc2U6cHJldmVudCIsImRyYWciLCJyZWxlYXNlIiwiY2xvc2UiLCJ1cGRhdGU6b3BlbiIsInVwZGF0ZTphY3RpdmVTbmFwUG9pbnQiLCJhbmltYXRpb25FbmQiXSxzZXR1cCh0LHtlbWl0Omx9KXtjb25zdCBvPXQsaT1sLG49ZS51c2VTbG90cygpLHI9cygpLGQ9dSgiZHJhd2VyIixvKSxnPXcoeChvLCJhY3RpdmVTbmFwUG9pbnQiLCJjbG9zZVRocmVzaG9sZCIsInNob3VsZFNjYWxlQmFja2dyb3VuZCIsInNldEJhY2tncm91bmRDb2xvck9uU2NhbGUiLCJzY3JvbGxMb2NrVGltZW91dCIsImZpeGVkIiwiZGlzbWlzc2libGUiLCJtb2RhbCIsIm9wZW4iLCJkZWZhdWx0T3BlbiIsIm5lc3RlZCIsImRpcmVjdGlvbiIsIm5vQm9keVN0eWxlcyIsImhhbmRsZU9ubHkiLCJwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb24iLCJzbmFwUG9pbnRzIiksaSkseT1OKGUudG9SZWYoKCk9Pm8ucG9ydGFsKSksYj1lLnRvUmVmKCgpPT5vLmNvbnRlbnQpLGs9ZS5jb21wdXRlZCgoKT0+e2lmKCFvLmRpc21pc3NpYmxlKXtyZXR1cm5bImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKGUsdCk9PihlW3RdPWU9PntlLnByZXZlbnREZWZhdWx0KCksaSgiY2xvc2U6cHJldmVudCIpfSxlKSx7fSl9cmV0dXJue3BvaW50ZXJEb3duT3V0c2lkZTp4ZX19KSxCPWUuY29tcHV0ZWQoKCk9PmYoe2V4dGVuZDpmKGJ0KSwuLi5yLnVpPy5kcmF3ZXJ8fHt9fSkoe2RpcmVjdGlvbjpvLmRpcmVjdGlvbixpbnNldDpvLmluc2V0LHNuYXBQb2ludHM6by5zbmFwUG9pbnRzJiZvLnNuYXBQb2ludHMubGVuZ3RoPjB9KSk7cmV0dXJuKGwsaSxyLHMpPT57SmUoaSxlLmNyZWF0ZVZOb2RlKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodC5uZXN0ZWQ/ZS51bnJlZihwdCk6ZS51bnJlZihkdCkpLGUubWVyZ2VQcm9wcyhlLnVucmVmKGcpLHMpLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLHMsdSk9PntpZighcilyZXR1cm5bbi5kZWZhdWx0PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihwZSkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6by5jbGFzc30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihnZSksZS51bnJlZih5KSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0Lm92ZXJsYXk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZ0KSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOkIudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZS51bnJlZihkKT8ub3ZlcmxheX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoZS51bnJlZihtdCksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qi52YWx1ZS5jb250ZW50KHtjbGFzczpbIW4uZGVmYXVsdCYmby5jbGFzcyxlLnVucmVmKGQpPy5jb250ZW50XX0pfSxiLnZhbHVlLGUudG9IYW5kbGVycyhrLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5oYW5kbGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHZ0KSx7a2V5OjAsImRhdGEtc2xvdCI6ImhhbmRsZSIsY2xhc3M6Qi52YWx1ZS5oYW5kbGUoe2NsYXNzOmUudW5yZWYoZCk/LmhhbmRsZX0pfSxudWxsLDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLCF0LnRpdGxlJiYhbi50aXRsZXx8IXQuZGVzY3JpcHRpb24mJiFuLmRlc2NyaXB0aW9ufHxuLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFYpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC50aXRsZXx8bi50aXRsZT9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjB9KSksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj9uLmNvbnRlbnQ/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjN9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjJ9KSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUucmVuZGVyU2xvdChsLiRzbG90cywiY29udGVudCIse30sKCk9PltlLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90IjoiY29udGFpbmVyIixjbGFzczpCLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZS51bnJlZihkKT8uY29udGFpbmVyfSl9LFtuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpCLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZihkKT8uaGVhZGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImhlYWRlciIse30sKCk9Plt0LnRpdGxlfHxuLnRpdGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6Qi52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihkKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6Qi52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihkKT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uYm9keT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6Qi52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKGQpPy5ib2R5fSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImJvZHkiKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLmZvb3Rlcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpCLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihkKT8uZm9vdGVyfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsImZvb3RlciIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKV0pXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldKSxfOjN9LDE2KV07bi5kZWZhdWx0P3IoamUoZS51bnJlZihwZSkseyJhcy1jaGlsZCI6IiIsY2xhc3M6by5jbGFzc30se2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LG8saSxuKT0+e2lmKCFvKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlZmF1bHQiKV07SGUobC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsbyxpLG4pfSksXzozfSxzLHUpKTpyKCJceDNjIS0tLS1ceDNlIikscihqZShlLnVucmVmKGdlKSxlLnVucmVmKHkpLHtkZWZhdWx0OmUud2l0aEN0eCgoaSxyLHMsdSk9PntpZighcilyZXR1cm5bZS5jcmVhdGVWTm9kZShlLnVucmVmKEkpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bdC5vdmVybGF5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmdCkse2tleTowLCJkYXRhLXNsb3QiOiJvdmVybGF5IixjbGFzczpCLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmUudW5yZWYoZCk/Lm92ZXJsYXl9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYobXQpLGUubWVyZ2VQcm9wcyh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOkIudmFsdWUuY29udGVudCh7Y2xhc3M6WyFuLmRlZmF1bHQmJm8uY2xhc3MsZS51bnJlZihkKT8uY29udGVudF19KX0sYi52YWx1ZSxlLnRvSGFuZGxlcnMoay52YWx1ZSkpLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QuaGFuZGxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZih2dCkse2tleTowLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOkIudmFsdWUuaGFuZGxlKHtjbGFzczplLnVucmVmKGQpPy5oYW5kbGV9KX0sbnVsbCw4LFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwhdC50aXRsZSYmIW4udGl0bGV8fCF0LmRlc2NyaXB0aW9uJiYhbi5kZXNjcmlwdGlvbnx8bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWKSx7a2V5OjF9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3QudGl0bGV8fG4udGl0bGU/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowfSkpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToyfSkpXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLnJlbmRlclNsb3QobC4kc2xvdHMsImNvbnRlbnQiLHt9LCgpPT5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6Qi52YWx1ZS5jb250YWluZXIoe2NsYXNzOmUudW5yZWYoZCk/LmNvbnRhaW5lcn0pfSxbbi5oZWFkZXJ8fHQudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6ImhlYWRlciIsY2xhc3M6Qi52YWx1ZS5oZWFkZXIoe2NsYXNzOmUudW5yZWYoZCk/LmhlYWRlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJoZWFkZXIiLHt9LCgpPT5bdC50aXRsZXx8bi50aXRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOkIudmFsdWUudGl0bGUoe2NsYXNzOmUudW5yZWYoZCk/LnRpdGxlfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywidGl0bGUiLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksdC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOkIudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUudW5yZWYoZCk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxuLmJvZHk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOkIudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZihkKT8uYm9keX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJib2R5IildLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5mb290ZXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6Qi52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoZCk/LmZvb3Rlcn0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJmb290ZXIiKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMildKV0pLF86M30sMTYsWyJjbGFzcyJdKV0pLF86M30pXTtyKGplKGUudW5yZWYoSSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGkscixzLHUpPT57aWYoIXIpcmV0dXJuW3Qub3ZlcmxheT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZnQpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6Qi52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKGQpPy5vdmVybGF5fSl9LG51bGwsOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZShlLnVucmVmKG10KSxlLm1lcmdlUHJvcHMoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpCLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZvLmNsYXNzLGUudW5yZWYoZCk/LmNvbnRlbnRdfSl9LGIudmFsdWUsZS50b0hhbmRsZXJzKGsudmFsdWUpKSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LmhhbmRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodnQpLHtrZXk6MCwiZGF0YS1zbG90IjoiaGFuZGxlIixjbGFzczpCLnZhbHVlLmhhbmRsZSh7Y2xhc3M6ZS51bnJlZihkKT8uaGFuZGxlfSl9LG51bGwsOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOkIudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKGQpPy5jb250YWluZXJ9KX0sW24uaGVhZGVyfHx0LnRpdGxlfHxuLnRpdGxlfHx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOkIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKGQpPy5oZWFkZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiaGVhZGVyIix7fSwoKT0+W3QudGl0bGV8fG4udGl0bGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpCLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKGQpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpCLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKGQpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5ib2R5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpCLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoZCk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOkIudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKGQpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIildLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSldKSxfOjN9LDE2LFsiY2xhc3MiXSldO3Qub3ZlcmxheT9yKGplKGUudW5yZWYoZnQpLHsiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6Qi52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKGQpPy5vdmVybGF5fSl9LG51bGwscyx1KSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoamUoZS51bnJlZihtdCksZS5tZXJnZVByb3BzKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Qi52YWx1ZS5jb250ZW50KHtjbGFzczpbIW4uZGVmYXVsdCYmby5jbGFzcyxlLnVucmVmKGQpPy5jb250ZW50XX0pfSxiLnZhbHVlLGUudG9IYW5kbGVycyhrLnZhbHVlKSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGkscixzKT0+e2lmKCFpKXJldHVyblt0LmhhbmRsZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYodnQpLHtrZXk6MCwiZGF0YS1zbG90IjoiaGFuZGxlIixjbGFzczpCLnZhbHVlLmhhbmRsZSh7Y2xhc3M6ZS51bnJlZihkKT8uaGFuZGxlfSl9LG51bGwsOCxbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVikse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9Plt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LnRpdGxlKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoZmUpLHtrZXk6MH0pKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6M30se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyh0LmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobWUpLHtrZXk6Mn0pKV0pLF86M30pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+W2UuY3JlYXRlVk5vZGUoImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOkIudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKGQpPy5jb250YWluZXJ9KX0sW24uaGVhZGVyfHx0LnRpdGxlfHxuLnRpdGxlfHx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOkIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKGQpPy5oZWFkZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiaGVhZGVyIix7fSwoKT0+W3QudGl0bGV8fG4udGl0bGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKGZlKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpCLnZhbHVlLnRpdGxlKHtjbGFzczplLnVucmVmKGQpPy50aXRsZX0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG1lKSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpCLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczplLnVucmVmKGQpPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksbi5ib2R5PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpCLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoZCk/LmJvZHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiYm9keSIpXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOkIudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKGQpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIildLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpXSldO3QuaGFuZGxlP2koamUoZS51bnJlZih2dCkseyJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOkIudmFsdWUuaGFuZGxlKHtjbGFzczplLnVucmVmKGQpPy5oYW5kbGV9KX0sbnVsbCxyLHMpKTppKCJceDNjIS0tLS1ceDNlIiksIXQudGl0bGUmJiFuLnRpdGxlfHwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb258fG4uY29udGVudD9pKGplKGUudW5yZWYoViksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKG8saSxyLHMpPT57aWYoIWkpcmV0dXJuW3QudGl0bGV8fG4udGl0bGU/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleToxfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihmZSkse2tleTowfSkpLHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/bi5jb250ZW50PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleTozfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihtZSkse2tleToyfSkpXTt0LnRpdGxlfHxuLnRpdGxlP24uY29udGVudD9pKGplKGUudW5yZWYoZmUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldO0hlKGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntpKGAke1FlKHQudGl0bGUpfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYoZmUpLG51bGwsbnVsbCxyLHMpKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP24uY29udGVudD9pKGplKGUudW5yZWYobWUpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldO0hlKGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntpKGAke1FlKHQuZGVzY3JpcHRpb24pfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKTppKGplKGUudW5yZWYobWUpLG51bGwsbnVsbCxyLHMpKX0pLF86M30scixzKSk6aSgiXHgzYyEtLS0tXHgzZSIpLEhlKGwuJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+e2koYDxkaXYgZGF0YS1zbG90PSJjb250YWluZXIiIGNsYXNzPSIke1dlKEIudmFsdWUuY29udGFpbmVyKHtjbGFzczplLnVucmVmKGQpPy5jb250YWluZXJ9KSl9IiR7c30+YCksbi5oZWFkZXJ8fHQudGl0bGV8fG4udGl0bGV8fHQuZGVzY3JpcHRpb258fG4uZGVzY3JpcHRpb24/KGkoYDxkaXYgZGF0YS1zbG90PSJoZWFkZXIiIGNsYXNzPSIke1dlKEIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKGQpPy5oZWFkZXJ9KSl9IiR7c30+YCksSGUobC4kc2xvdHMsImhlYWRlciIse30sKCk9Pnt0LnRpdGxlfHxuLnRpdGxlP2koamUoZS51bnJlZihmZSkseyJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6Qi52YWx1ZS50aXRsZSh7Y2xhc3M6ZS51bnJlZihkKT8udGl0bGV9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQudGl0bGUpLDEpXSldO0hlKGwuJHNsb3RzLCJ0aXRsZSIse30sKCk9PntpKGAke1FlKHQudGl0bGUpfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uP2koamUoZS51bnJlZihtZSkseyJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6Qi52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZS51bnJlZihkKT8uZGVzY3JpcHRpb259KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChvLGksbixyKT0+e2lmKCFpKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKHQuZGVzY3JpcHRpb24pLDEpXSldO0hlKGwuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PntpKGAke1FlKHQuZGVzY3JpcHRpb24pfWApfSxpLG4scil9KSxfOjN9LHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxyLHMpLGkoIjwvZGl2PiIpKTppKCJceDNjIS0tLS1ceDNlIiksbi5ib2R5PyhpKGA8ZGl2IGRhdGEtc2xvdD0iYm9keSIgY2xhc3M9IiR7V2UoQi52YWx1ZS5ib2R5KHtjbGFzczplLnVucmVmKGQpPy5ib2R5fSkpfSIke3N9PmApLEhlKGwuJHNsb3RzLCJib2R5Iix7fSxudWxsLGkscixzKSxpKCI8L2Rpdj4iKSk6aSgiXHgzYyEtLS0tXHgzZSIpLG4uZm9vdGVyPyhpKGA8ZGl2IGRhdGEtc2xvdD0iZm9vdGVyIiBjbGFzcz0iJHtXZShCLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZihkKT8uZm9vdGVyfSkpfSIke3N9PmApLEhlKGwuJHNsb3RzLCJmb290ZXIiLHt9LG51bGwsaSxyLHMpLGkoIjwvZGl2PiIpKTppKCJceDNjIS0tLS1ceDNlIiksaSgiPC9kaXY+Iil9LGkscixzKX0pLF86M30scyx1KSl9KSxfOjN9LHMsdSkpfSksXzozfSxzLHUpKX0pLF86M30pLHIpfX19LHh0PWt0LnNldHVwO2t0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRHJhd2VyLnZ1ZSIpLHh0P3h0KHQsbCk6dm9pZCAwfTtjb25zdCBCdD17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGhpZGRlbiBsZzpmbGV4IGZsZXgtY29sIG1pbi1oLXN2aCBtaW4tdy0xNiB3LSgtLXdpZHRoKSBzaHJpbmstMCIsaGVhZGVyOiJoLSgtLXVpLWhlYWRlci1oZWlnaHQpIHNocmluay0wIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtNCIsYm9keToiZmxleCBmbGV4LWNvbCBnYXAtNCBmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHB4LTQgcHktMiIsZm9vdGVyOiJzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTQgcHktMiIsdG9nZ2xlOiIiLGhhbmRsZToiIixjb250ZW50OiJsZzpoaWRkZW4iLG92ZXJsYXk6ImxnOmhpZGRlbiJ9LHZhcmlhbnRzOnttZW51Ont0cnVlOntoZWFkZXI6InNtOnB4LTYiLGJvZHk6InNtOnB4LTYiLGZvb3Rlcjoic206cHgtNiJ9fSxzaWRlOntsZWZ0Ontyb290OiJib3JkZXItZSBib3JkZXItZGVmYXVsdCJ9LHJpZ2h0Ontyb290OiIifX0sdG9nZ2xlU2lkZTp7bGVmdDp7dG9nZ2xlOiIifSxyaWdodDp7dG9nZ2xlOiJtcy1hdXRvIn19fX0sU3Q9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVRGFzaGJvYXJkU2lkZWJhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6ZS5tZXJnZU1vZGVscyh7bW9kZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNsaWRlb3ZlciJ9LG1lbnU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG9nZ2xlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sdG9nZ2xlU2lkZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGVmdCJ9LGF1dG9DbG9zZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sbWluU2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0sbWF4U2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoyMH0sZGVmYXVsdFNpemU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTV9LHJlc2l6YWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGNvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sY29sbGFwc2VkU2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfX0se29wZW46e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxvcGVuTW9kaWZpZXJzOnt9LGNvbGxhcHNlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGNvbGxhcHNlZE1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOm9wZW4iLCJ1cGRhdGU6Y29sbGFwc2VkIl0sc2V0dXAodCl7Y29uc3QgbD10LG89ZS51c2VTbG90cygpLGk9ZS51c2VNb2RlbCh0LCJvcGVuIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSxnPWUudXNlTW9kZWwodCwiY29sbGFwc2VkIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSx5PW4oKSx7dDpifT1yKCksaz1zKCkseD11KCJkYXNoYm9hcmRTaWRlYmFyIixsKSxCPWFlKHtzdG9yYWdlS2V5OiJkYXNoYm9hcmQiLHVuaXQ6IiUiLHNpZGViYXJPcGVuOmUucmVmKCExKSxzaWRlYmFyQ29sbGFwc2VkOmUucmVmKCExKX0pLFM9YCR7Qi5zdG9yYWdlS2V5fS1zaWRlYmFyLSR7bC5pZHx8ZS51c2VJZCgpfWAse2VsOncsc2l6ZTpOLGNvbGxhcHNlOkksaXNDb2xsYXBzZWQ6Vixpc0RyYWdnaW5nOkEsb25Nb3VzZURvd246eixvblRvdWNoU3RhcnQ6TSxvbkRvdWJsZUNsaWNrOlB9PWxlKFMsZS50b1JlZigoKT0+KHsuLi5CLC4uLmx9KSkse2NvbGxhcHNlZDpnfSksW3EsRl09ZCgpLFtPLEVdPWQoKTt1c2VSdW50aW1lSG9vaygiZGFzaGJvYXJkOnNpZGViYXI6dG9nZ2xlIiwoKT0+e2kudmFsdWU9IWkudmFsdWV9KSx1c2VSdW50aW1lSG9vaygiZGFzaGJvYXJkOnNpZGViYXI6Y29sbGFwc2UiLGU9PntWLnZhbHVlPWV9KSxlLndhdGNoKGksKCk9PkIuc2lkZWJhck9wZW4udmFsdWU9aS52YWx1ZSx7aW1tZWRpYXRlOiEwfSksZS53YXRjaChWLCgpPT5CLnNpZGViYXJDb2xsYXBzZWQudmFsdWU9Vi52YWx1ZSx7aW1tZWRpYXRlOiEwfSksZS53YXRjaCgoKT0+eS5mdWxsUGF0aCwoKT0+e2wuYXV0b0Nsb3NlJiYoaS52YWx1ZT0hMSl9KTtjb25zdCBSPWUuY29tcHV0ZWQoKCk9PmYoe2V4dGVuZDpmKEJ0KSwuLi5rLnVpPy5kYXNoYm9hcmRTaWRlYmFyfHx7fX0pKHtzaWRlOmwuc2lkZX0pKSxqPWUuY29tcHV0ZWQoKCk9Pih7c2xpZGVvdmVyOmx0LG1vZGFsOnVlLGRyYXdlcjprdH1bbC5tb2RlXSkpLFU9ZS50b1JlZigoKT0+c2UobC5tZW51LHt9LCJtb2RhbCI9PT1sLm1vZGU/e2Z1bGxzY3JlZW46ITAsdHJhbnNpdGlvbjohMX06InNsaWRlb3ZlciI9PT1sLm1vZGU/e3NpZGU6ImxlZnQifTp7fSkpO2Z1bmN0aW9uIHRvZ2dsZU9wZW4oKXtpLnZhbHVlPSFpLnZhbHVlfXJldHVybihuLHIscyx1KT0+e3IoIlx4M2MhLS1bLS1ceDNlIikscihqZShlLnVucmVmKHEpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG8scixzKT0+e2lmKCFvKXJldHVybltlLnJlbmRlclNsb3Qobi4kc2xvdHMsInRvZ2dsZSIse29wZW46aS52YWx1ZSx0b2dnbGU6dG9nZ2xlT3Blbix1aTpSLnZhbHVlfSwoKT0+W3QudG9nZ2xlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soY2UsZS5tZXJnZVByb3BzKHtrZXk6MH0sIm9iamVjdCI9PXR5cGVvZiB0LnRvZ2dsZT90LnRvZ2dsZTp7fSx7c2lkZTp0LnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6Ui52YWx1ZS50b2dnbGUoe2NsYXNzOmUudW5yZWYoeCk/LnRvZ2dsZSx0b2dnbGVTaWRlOnQudG9nZ2xlU2lkZX0pfSksbnVsbCwxNixbInNpZGUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO0hlKG4uJHNsb3RzLCJ0b2dnbGUiLHtvcGVuOmkudmFsdWUsdG9nZ2xlOnRvZ2dsZU9wZW4sdWk6Ui52YWx1ZX0sKCk9Pnt0LnRvZ2dsZT9vKGplKGNlLGUubWVyZ2VQcm9wcygib2JqZWN0Ij09dHlwZW9mIHQudG9nZ2xlP3QudG9nZ2xlOnt9LHtzaWRlOnQudG9nZ2xlU2lkZSwiZGF0YS1zbG90IjoidG9nZ2xlIixjbGFzczpSLnZhbHVlLnRvZ2dsZSh7Y2xhc3M6ZS51bnJlZih4KT8udG9nZ2xlLHRvZ2dsZVNpZGU6dC50b2dnbGVTaWRlfSl9KSxudWxsLHIscykpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyxyLHMpfSksXzozfSxzKSkscihqZShlLnVucmVmKE8pLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KChsLG8saSxyKT0+e2lmKCFvKXJldHVybltlLnJlbmRlclNsb3Qobi4kc2xvdHMsInJlc2l6ZS1oYW5kbGUiLHtvbk1vdXNlRG93bjplLnVucmVmKHopLG9uVG91Y2hTdGFydDplLnVucmVmKE0pLG9uRG91YmxlQ2xpY2s6ZS51bnJlZihQKSx1aTpSLnZhbHVlfSwoKT0+W3QucmVzaXphYmxlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2sob2Use2tleTowLCJhcmlhLWNvbnRyb2xzIjpTLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOlIudmFsdWUuaGFuZGxlKHtjbGFzczplLnVucmVmKHgpPy5oYW5kbGV9KSxvbk1vdXNlZG93bjplLnVucmVmKHopLG9uVG91Y2hzdGFydDplLnVucmVmKE0pLG9uRGJsY2xpY2s6ZS51bnJlZihQKX0sbnVsbCw4LFsiY2xhc3MiLCJvbk1vdXNlZG93biIsIm9uVG91Y2hzdGFydCIsIm9uRGJsY2xpY2siXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTtIZShuLiRzbG90cywicmVzaXplLWhhbmRsZSIse29uTW91c2VEb3duOmUudW5yZWYoeiksb25Ub3VjaFN0YXJ0OmUudW5yZWYoTSksb25Eb3VibGVDbGljazplLnVucmVmKFApLHVpOlIudmFsdWV9LCgpPT57dC5yZXNpemFibGU/byhqZShvZSx7ImFyaWEtY29udHJvbHMiOlMsImRhdGEtc2xvdCI6ImhhbmRsZSIsY2xhc3M6Ui52YWx1ZS5oYW5kbGUoe2NsYXNzOmUudW5yZWYoeCk/LmhhbmRsZX0pLG9uTW91c2Vkb3duOmUudW5yZWYoeiksb25Ub3VjaHN0YXJ0OmUudW5yZWYoTSksb25EYmxjbGljazplLnVucmVmKFApfSxudWxsLGkscikpOm8oIlx4M2MhLS0tLVx4M2UiKX0sbyxpLHIpfSksXzozfSxzKSksInJpZ2h0Ij09PXQuc2lkZT9yKGplKGUudW5yZWYoRSksbnVsbCxudWxsLHMpKTpyKCJceDNjIS0tLS1ceDNlIikscihgPGRpdiR7VWUoZS5tZXJnZVByb3BzKHtpZDpTLHJlZl9rZXk6ImVsIixyZWY6d30sbi4kYXR0cnMseyJkYXRhLWNvbGxhcHNlZCI6ZS51bnJlZihWKSwiZGF0YS1kcmFnZ2luZyI6ZS51bnJlZihBKSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Ui52YWx1ZS5yb290KHtjbGFzczpbZS51bnJlZih4KT8ucm9vdCxsLmNsYXNzXX0pLHN0eWxlOnsiLS13aWR0aCI6YCR7ZS51bnJlZihOKXx8MH0ke2UudW5yZWYoQikudW5pdH1gfX0pKX0+YCksby5oZWFkZXI/KHIoYDxkaXYgZGF0YS1zbG90PSJoZWFkZXIiIGNsYXNzPSIke1dlKFIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKHgpPy5oZWFkZXJ9KSl9Ij5gKSxIZShuLiRzbG90cywiaGVhZGVyIix7Y29sbGFwc2VkOmUudW5yZWYoViksY29sbGFwc2U6ZS51bnJlZihJKX0sbnVsbCxyLHMpLHIoIjwvZGl2PiIpKTpyKCJceDNjIS0tLS1ceDNlIikscihgPGRpdiBkYXRhLXNsb3Q9ImJvZHkiIGNsYXNzPSIke1dlKFIudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZih4KT8uYm9keX0pKX0iPmApLEhlKG4uJHNsb3RzLCJkZWZhdWx0Iix7Y29sbGFwc2VkOmUudW5yZWYoViksY29sbGFwc2U6ZS51bnJlZihJKX0sbnVsbCxyLHMpLHIoIjwvZGl2PiIpLG8uZm9vdGVyPyhyKGA8ZGl2IGRhdGEtc2xvdD0iZm9vdGVyIiBjbGFzcz0iJHtXZShSLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZih4KT8uZm9vdGVyfSkpfSI+YCksSGUobi4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDplLnVucmVmKFYpLGNvbGxhcHNlOmUudW5yZWYoSSl9LG51bGwscixzKSxyKCI8L2Rpdj4iKSk6cigiXHgzYyEtLS0tXHgzZSIpLHIoIjwvZGl2PiIpLCJsZWZ0Ij09PXQuc2lkZT9yKGplKGUudW5yZWYoRSksbnVsbCxudWxsLHMpKTpyKCJceDNjIS0tLS1ceDNlIikscihqZShlLnVucmVmKGopLGUubWVyZ2VQcm9wcyh7b3BlbjppLnZhbHVlLCJvblVwZGF0ZTpvcGVuIjplPT5pLnZhbHVlPWUsdGl0bGU6ZS51bnJlZihiKSgiZGFzaGJvYXJkU2lkZWJhci50aXRsZSIpLGRlc2NyaXB0aW9uOmUudW5yZWYoYikoImRhc2hib2FyZFNpZGViYXIuZGVzY3JpcHRpb24iKX0sVS52YWx1ZSx7dWk6e292ZXJsYXk6Ui52YWx1ZS5vdmVybGF5KHtjbGFzczplLnVucmVmKHgpPy5vdmVybGF5fSksY29udGVudDpSLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUudW5yZWYoeCk/LmNvbnRlbnR9KX19KSx7Y29udGVudDplLndpdGhDdHgoKGwsaSxyLHMpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChuLiRzbG90cywiY29udGVudCIsbCwoKT0+W28uaGVhZGVyfHwiZHJhd2VyIiE9PXQubW9kZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpSLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZS51bnJlZih4KT8uaGVhZGVyLG1lbnU6ITB9KX0sWyJkcmF3ZXIiIT09dC5tb2RlJiYibGVmdCI9PT10LnRvZ2dsZVNpZGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEYpLHtrZXk6MH0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5yZW5kZXJTbG90KG4uJHNsb3RzLCJoZWFkZXIiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSksImRyYXdlciIhPT10Lm1vZGUmJiJyaWdodCI9PT10LnRvZ2dsZVNpZGU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEYpLHtrZXk6MX0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOlIudmFsdWUuYm9keSh7Y2xhc3M6ZS51bnJlZih4KT8uYm9keSxtZW51OiEwfSl9LFtlLnJlbmRlclNsb3Qobi4kc2xvdHMsImRlZmF1bHQiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSldLDIpLG8uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOlIudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKHgpPy5mb290ZXIsbWVudTohMH0pfSxbZS5yZW5kZXJTbG90KG4uJHNsb3RzLCJmb290ZXIiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07SGUobi4kc2xvdHMsImNvbnRlbnQiLGwsKCk9PntvLmhlYWRlcnx8ImRyYXdlciIhPT10Lm1vZGU/KGkoYDxkaXYgZGF0YS1zbG90PSJoZWFkZXIiIGNsYXNzPSIke1dlKFIudmFsdWUuaGVhZGVyKHtjbGFzczplLnVucmVmKHgpPy5oZWFkZXIsbWVudTohMH0pKX0iJHtzfT5gKSwiZHJhd2VyIiE9PXQubW9kZSYmImxlZnQiPT09dC50b2dnbGVTaWRlP2koamUoZS51bnJlZihGKSxudWxsLG51bGwscixzKSk6aSgiXHgzYyEtLS0tXHgzZSIpLEhlKG4uJHNsb3RzLCJoZWFkZXIiLHtjb2xsYXBzZWQ6ITEsY29sbGFwc2U6KCk9Pnt9fSxudWxsLGkscixzKSwiZHJhd2VyIiE9PXQubW9kZSYmInJpZ2h0Ij09PXQudG9nZ2xlU2lkZT9pKGplKGUudW5yZWYoRiksbnVsbCxudWxsLHIscykpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCI8L2Rpdj4iKSk6aSgiXHgzYyEtLS0tXHgzZSIpLGkoYDxkaXYgZGF0YS1zbG90PSJib2R5IiBjbGFzcz0iJHtXZShSLnZhbHVlLmJvZHkoe2NsYXNzOmUudW5yZWYoeCk/LmJvZHksbWVudTohMH0pKX0iJHtzfT5gKSxIZShuLiRzbG90cywiZGVmYXVsdCIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319LG51bGwsaSxyLHMpLGkoIjwvZGl2PiIpLG8uZm9vdGVyPyhpKGA8ZGl2IGRhdGEtc2xvdD0iZm9vdGVyIiBjbGFzcz0iJHtXZShSLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZS51bnJlZih4KT8uZm9vdGVyLG1lbnU6ITB9KSl9IiR7c30+YCksSGUobi4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319LG51bGwsaSxyLHMpLGkoIjwvZGl2PiIpKTppKCJceDNjIS0tLS1ceDNlIil9LGkscixzKX0pLF86M30scykpLHIoIlx4M2MhLS1dLS1ceDNlIil9fX0pLEN0PVN0LnNldHVwO1N0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkU2lkZWJhci52dWUiKSxDdD9DdCh0LGwpOnZvaWQgMH07Y29uc3QgJHQ9e3Nsb3RzOntiYXNlOiIiLGxhYmVsOiIiLHRyYWlsaW5nOiJoaWRkZW4gbGc6ZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNSBtcy1hdXRvIn0sdmFyaWFudHM6e2NvbGxhcHNlZDp7dHJ1ZTp7bGFiZWw6ImhpZGRlbiIsdHJhaWxpbmc6ImxnOmhpZGRlbiJ9fX19LF90PU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNlYXJjaEJ1dHRvbiIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxhcHNlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHRvb2x0aXA6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxrYmRzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PlsibWV0YSIsImsiXX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3RpdmVDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3F1YXJlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJsb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdBdXRvOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgbD10LG89ZS51c2VTbG90cygpLFtpLG5dPWQoKSxnZXRQcm94eVNsb3RzPSgpPT5CKG8sWyJ0cmFpbGluZyJdKSx4PWcoeShsLCJpY29uIiwibGFiZWwiLCJ2YXJpYW50IiwiY29sbGFwc2VkIiwidG9vbHRpcCIsImtiZHMiLCJjbGFzcyIsInVpIikpLFM9ZS50b1JlZigoKT0+c2UoImJvb2xlYW4iPT10eXBlb2YgbC50b29sdGlwP3t9OmwudG9vbHRpcCx7ZGVsYXlEdXJhdGlvbjowLGNvbnRlbnQ6e3NpZGU6InJpZ2h0In19KSkse3Q6d309cigpLE49cygpLEk9dSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uIixsKSx7dG9nZ2xlU2VhcmNoOlZ9PWFlKHt0b2dnbGVTZWFyY2g6KCk9Pnt9fSksQT1lLmNvbXB1dGVkKCgpPT5mKHtleHRlbmQ6ZigkdCksLi4uTi51aT8uZGFzaGJvYXJkU2VhcmNoQnV0dG9ufHx7fX0pKHtjb2xsYXBzZWQ6bC5jb2xsYXBzZWR9KSk7cmV0dXJuKG8scixzLHUpPT57cigiXHgzYyEtLVstLVx4M2UiKSxyKGplKGUudW5yZWYoaSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKGksbixyLHMpPT57aWYoIW4pcmV0dXJuW2UuY3JlYXRlVk5vZGUoYixlLm1lcmdlUHJvcHMoe2ljb246dC5pY29ufHxlLnVucmVmKE4pLnVpLmljb25zLnNlYXJjaCxsYWJlbDp0LmxhYmVsfHxlLnVucmVmKHcpKCJkYXNoYm9hcmRTZWFyY2hCdXR0b24ubGFiZWwiKSx2YXJpYW50OnQudmFyaWFudHx8KHQuY29sbGFwc2VkPyJnaG9zdCI6Im91dGxpbmUiKX0sey4uLmUudW5yZWYoeCksLi4udC5jb2xsYXBzZWQ/e3NxdWFyZTohMCwiYXJpYS1sYWJlbCI6dC5sYWJlbHx8ZS51bnJlZih3KSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uLmxhYmVsIil9Ont9LC4uLm8uJGF0dHJzfSx7Y2xhc3M6QS52YWx1ZS5iYXNlKHtjbGFzczpbZS51bnJlZihJKT8uYmFzZSxsLmNsYXNzXX0pLHVpOmUudW5yZWYoaykoQS52YWx1ZSxlLnVucmVmKEkpKSxvbkNsaWNrOmUudW5yZWYoVil9KSxlLmNyZWF0ZVNsb3RzKHt0cmFpbGluZzplLndpdGhDdHgoKHt1aTpsfSk9PltlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczpBLnZhbHVlLnRyYWlsaW5nKHtjbGFzczplLnVucmVmKEkpPy50cmFpbGluZ30pfSxbZS5yZW5kZXJTbG90KG8uJHNsb3RzLCJ0cmFpbGluZyIse3VpOmx9LCgpPT5bdC5rYmRzPy5sZW5ndGg/KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleTowfSxlLnJlbmRlckxpc3QodC5rYmRzLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEJlLGUubWVyZ2VQcm9wcyh7a2V5OmwsdmFyaWFudDoic3VidGxlIn0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgdD97dmFsdWU6dH06dCksbnVsbCwxNikpKSwxMjgpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMildKSxfOjJ9LFtlLnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLCh0LGwpPT4oe25hbWU6bCxmbjplLndpdGhDdHgodD0+W2UucmVuZGVyU2xvdChvLiRzbG90cyxsLHQpXSl9KSldKSwxMDQwLFsiaWNvbiIsImxhYmVsIiwidmFyaWFudCIsImNsYXNzIiwidWkiLCJvbkNsaWNrIl0pXTtuKGplKGIsZS5tZXJnZVByb3BzKHtpY29uOnQuaWNvbnx8ZS51bnJlZihOKS51aS5pY29ucy5zZWFyY2gsbGFiZWw6dC5sYWJlbHx8ZS51bnJlZih3KSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uLmxhYmVsIiksdmFyaWFudDp0LnZhcmlhbnR8fCh0LmNvbGxhcHNlZD8iZ2hvc3QiOiJvdXRsaW5lIil9LHsuLi5lLnVucmVmKHgpLC4uLnQuY29sbGFwc2VkP3tzcXVhcmU6ITAsImFyaWEtbGFiZWwiOnQubGFiZWx8fGUudW5yZWYodykoImRhc2hib2FyZFNlYXJjaEJ1dHRvbi5sYWJlbCIpfTp7fSwuLi5vLiRhdHRyc30se2NsYXNzOkEudmFsdWUuYmFzZSh7Y2xhc3M6W2UudW5yZWYoSSk/LmJhc2UsbC5jbGFzc119KSx1aTplLnVucmVmKGspKEEudmFsdWUsZS51bnJlZihJKSksb25DbGljazplLnVucmVmKFYpfSksZS5jcmVhdGVTbG90cyh7dHJhaWxpbmc6ZS53aXRoQ3R4KCh7dWk6bH0saSxuLHIpPT57aWYoIWkpcmV0dXJuW2UuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOkEudmFsdWUudHJhaWxpbmcoe2NsYXNzOmUudW5yZWYoSSk/LnRyYWlsaW5nfSl9LFtlLnJlbmRlclNsb3Qoby4kc2xvdHMsInRyYWlsaW5nIix7dWk6bH0sKCk9Plt0LmtiZHM/Lmxlbmd0aD8oZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCx7a2V5OjB9LGUucmVuZGVyTGlzdCh0LmtiZHMsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soQmUsZS5tZXJnZVByb3BzKHtrZXk6bCx2YXJpYW50OiJzdWJ0bGUifSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiB0P3t2YWx1ZTp0fTp0KSxudWxsLDE2KSkpLDEyOCkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKV07aShgPHNwYW4gZGF0YS1zbG90PSJ0cmFpbGluZyIgY2xhc3M9IiR7V2UoQS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZS51bnJlZihJKT8udHJhaWxpbmd9KSl9IiR7cn0+YCksSGUoby4kc2xvdHMsInRyYWlsaW5nIix7dWk6bH0sKCk9Pnt0LmtiZHM/Lmxlbmd0aD8oaSgiXHgzYyEtLVstLVx4M2UiKSxHZSh0LmtiZHMsKHQsbCk9PntpKGplKEJlLGUubWVyZ2VQcm9wcyh7a2V5OmwsdmFyaWFudDoic3VidGxlIn0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgdD97dmFsdWU6dH06dCksbnVsbCxuLHIpKX0pLGkoIlx4M2MhLS1dLS1ceDNlIikpOmkoIlx4M2MhLS0tLVx4M2UiKX0saSxuLHIpLGkoIjwvc3Bhbj4iKX0pLF86Mn0sW2UucmVuZGVyTGlzdChnZXRQcm94eVNsb3RzKCksKHQsbCk9Pih7bmFtZTpsLGZuOmUud2l0aEN0eCgodCxpLG4scik9PntpZighaSlyZXR1cm5bZS5yZW5kZXJTbG90KG8uJHNsb3RzLGwsdCldO0hlKG8uJHNsb3RzLGwsdCxudWxsLGksbixyKX0pfSkpXSkscixzKSl9KSxfOjN9LHMpKSx0LmNvbGxhcHNlZCYmdC50b29sdGlwP3IoamUoQ2UsZS5tZXJnZVByb3BzKHt0ZXh0OnQubGFiZWx8fGUudW5yZWYodykoImRhc2hib2FyZFNlYXJjaEJ1dHRvbi5sYWJlbCIpfSxTLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZS51bnJlZihuKSldO2woamUoZS51bnJlZihuKSxudWxsLG51bGwsbyxpKSl9KSxfOjF9LHMpKTpyKGplKGUudW5yZWYobiksbnVsbCxudWxsLHMpKSxyKCJceDNjIS0tXS0tXHgzZSIpfX19KSxMdD1fdC5zZXR1cDtmdW5jdGlvbiBpc0FycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXkoZSk6IltvYmplY3QgQXJyYXldIj09PWdldFRhZyhlKX1mdW5jdGlvbiB0b1N0cmluZyhlKXtyZXR1cm4gbnVsbD09ZT8iIjpmdW5jdGlvbihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoImJpZ2ludCI9PXR5cGVvZiBlKXJldHVybiBlLnRvU3RyaW5nKCk7Y29uc3QgdD1lKyIiO3JldHVybiIwIj09dCYmMS9lPT0tMS8wPyItMCI6dH0oZSl9ZnVuY3Rpb24gaXNTdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfWZ1bmN0aW9uIGlzTnVtYmVyKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBpc0Jvb2xlYW4oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV8fGZ1bmN0aW9uKGUpe3JldHVybiBpc09iamVjdChlKSYmbnVsbCE9PWV9KGUpJiYiW29iamVjdCBCb29sZWFuXSI9PWdldFRhZyhlKX1mdW5jdGlvbiBpc09iamVjdChlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rpb24gaXNEZWZpbmVkKGUpe3JldHVybiBudWxsIT1lfWZ1bmN0aW9uIGlzQmxhbmsoZSl7cmV0dXJuIWUudHJpbSgpLmxlbmd0aH1mdW5jdGlvbiBnZXRUYWcoZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfV90LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvRGFzaGJvYXJkU2VhcmNoQnV0dG9uLnZ1ZSIpLEx0P0x0KHQsbCk6dm9pZCAwfTtjb25zdCBOdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NsYXNzIEtleVN0b3Jle2NvbnN0cnVjdG9yKGUpe3RoaXMuX2tleXM9W10sdGhpcy5fa2V5TWFwPXt9O2xldCB0PTA7ZS5mb3JFYWNoKGU9Pntjb25zdCBsPWNyZWF0ZUtleShlKTt0aGlzLl9rZXlzLnB1c2gobCksdGhpcy5fa2V5TWFwW2wuaWRdPWwsdCs9bC53ZWlnaHR9KSx0aGlzLl9rZXlzLmZvckVhY2goZT0+e2Uud2VpZ2h0Lz10fSl9Z2V0KGUpe3JldHVybiB0aGlzLl9rZXlNYXBbZV19a2V5cygpe3JldHVybiB0aGlzLl9rZXlzfXRvSlNPTigpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9rZXlzKX19ZnVuY3Rpb24gY3JlYXRlS2V5KGUpe2xldCB0PW51bGwsbD1udWxsLG89bnVsbCxpPTEsbj1udWxsO2lmKGlzU3RyaW5nKGUpfHxpc0FycmF5KGUpKW89ZSx0PWNyZWF0ZUtleVBhdGgoZSksbD1jcmVhdGVLZXlJZChlKTtlbHNle2lmKCFOdC5jYWxsKGUsIm5hbWUiKSl0aHJvdyBuZXcgRXJyb3IoKGU9PmBNaXNzaW5nICR7ZX0gcHJvcGVydHkgaW4ga2V5YCkoIm5hbWUiKSk7Y29uc3Qgcj1lLm5hbWU7aWYobz1yLE50LmNhbGwoZSwid2VpZ2h0IikmJihpPWUud2VpZ2h0LGk8PTApKXRocm93IG5ldyBFcnJvcigoZT0+YFByb3BlcnR5ICd3ZWlnaHQnIGluIGtleSAnJHtlfScgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXJgKShyKSk7dD1jcmVhdGVLZXlQYXRoKHIpLGw9Y3JlYXRlS2V5SWQociksbj1lLmdldEZufXJldHVybntwYXRoOnQsaWQ6bCx3ZWlnaHQ6aSxzcmM6byxnZXRGbjpufX1mdW5jdGlvbiBjcmVhdGVLZXlQYXRoKGUpe3JldHVybiBpc0FycmF5KGUpP2U6ZS5zcGxpdCgiLiIpfWZ1bmN0aW9uIGNyZWF0ZUtleUlkKGUpe3JldHVybiBpc0FycmF5KGUpP2Uuam9pbigiLiIpOmV9Y29uc3QgSXQ9e3VzZUV4dGVuZGVkU2VhcmNoOiExLHVzZVRva2VuU2VhcmNoOiExLGdldEZuOmZ1bmN0aW9uKGUsdCl7Y29uc3QgbD1bXTtsZXQgbz0hMTtjb25zdCBkZWVwR2V0PShlLHQsaSxuKT0+e2lmKGlzRGVmaW5lZChlKSlpZih0W2ldKXtjb25zdCByPWVbdFtpXV07aWYoIWlzRGVmaW5lZChyKSlyZXR1cm47aWYoaT09PXQubGVuZ3RoLTEmJihpc1N0cmluZyhyKXx8aXNOdW1iZXIocil8fGlzQm9vbGVhbihyKXx8ImJpZ2ludCI9PXR5cGVvZiByKSlsLnB1c2godm9pZCAwIT09bj97djp0b1N0cmluZyhyKSxpOm59OnRvU3RyaW5nKHIpKTtlbHNlIGlmKGlzQXJyYXkocikpe289ITA7Zm9yKGxldCBlPTAsbD1yLmxlbmd0aDtlPGw7ZSs9MSlkZWVwR2V0KHJbZV0sdCxpKzEsZSl9ZWxzZSB0Lmxlbmd0aCYmZGVlcEdldChyLHQsaSsxLG4pfWVsc2UgbC5wdXNoKHZvaWQgMCE9PW4/e3Y6ZSxpOm59OmUpfTtyZXR1cm4gZGVlcEdldChlLGlzU3RyaW5nKHQpP3Quc3BsaXQoIi4iKTp0LDApLG8/bDpsWzBdfSxpZ25vcmVMb2NhdGlvbjohMSxpZ25vcmVGaWVsZE5vcm06ITEsZmllbGROb3JtV2VpZ2h0OjF9LFZ0PU9iamVjdC5mcmVlemUoe2lzQ2FzZVNlbnNpdGl2ZTohMSxpZ25vcmVEaWFjcml0aWNzOiExLGluY2x1ZGVTY29yZTohMSxrZXlzOltdLHNob3VsZFNvcnQ6ITAsc29ydEZuOihlLHQpPT5lLnNjb3JlPT09dC5zY29yZT9lLmlkeDx0LmlkeD8tMToxOmUuc2NvcmU8dC5zY29yZT8tMToxLGluY2x1ZGVNYXRjaGVzOiExLGZpbmRBbGxNYXRjaGVzOiExLG1pbk1hdGNoQ2hhckxlbmd0aDoxLGxvY2F0aW9uOjAsdGhyZXNob2xkOi42LGRpc3RhbmNlOjEwMCwuLi5JdH0pLFR0PS9bXiBdKy9nO2NsYXNzIEZ1c2VJbmRleHtjb25zdHJ1Y3Rvcih7Z2V0Rm46ZT1WdC5nZXRGbixmaWVsZE5vcm1XZWlnaHQ6dD1WdC5maWVsZE5vcm1XZWlnaHR9PXt9KXt0aGlzLm5vcm09ZnVuY3Rpb24oZT0xLHQ9Myl7Y29uc3QgbD1uZXcgTWFwLG89TWF0aC5wb3coMTAsdCk7cmV0dXJue2dldCh0KXtjb25zdCBpPXQubWF0Y2goVHQpLmxlbmd0aDtpZihsLmhhcyhpKSlyZXR1cm4gbC5nZXQoaSk7Y29uc3Qgbj0xL01hdGgucG93KGksLjUqZSkscj1wYXJzZUZsb2F0KE1hdGgucm91bmQobipvKS9vKTtyZXR1cm4gbC5zZXQoaSxyKSxyfSxjbGVhcigpe2wuY2xlYXIoKX19fSh0LDMpLHRoaXMuZ2V0Rm49ZSx0aGlzLmlzQ3JlYXRlZD0hMSx0aGlzLmRvY3M9W10sdGhpcy5rZXlzPVtdLHRoaXMuX2tleXNNYXA9e30sdGhpcy5zZXRJbmRleFJlY29yZHMoKX1zZXRTb3VyY2VzKGU9W10pe3RoaXMuZG9jcz1lfXNldEluZGV4UmVjb3JkcyhlPVtdKXt0aGlzLnJlY29yZHM9ZX1zZXRLZXlzKGU9W10pe3RoaXMua2V5cz1lLHRoaXMuX2tleXNNYXA9e30sZS5mb3JFYWNoKChlLHQpPT57dGhpcy5fa2V5c01hcFtlLmlkXT10fSl9Y3JlYXRlKCl7IXRoaXMuaXNDcmVhdGVkJiZ0aGlzLmRvY3MubGVuZ3RoJiYodGhpcy5pc0NyZWF0ZWQ9ITAsaXNTdHJpbmcodGhpcy5kb2NzWzBdKT90aGlzLmRvY3MuZm9yRWFjaCgoZSx0KT0+e3RoaXMuX2FkZFN0cmluZyhlLHQpfSk6dGhpcy5kb2NzLmZvckVhY2goKGUsdCk9Pnt0aGlzLl9hZGRPYmplY3QoZSx0KX0pLHRoaXMubm9ybS5jbGVhcigpKX1hZGQoZSl7Y29uc3QgdD10aGlzLnNpemUoKTtpc1N0cmluZyhlKT90aGlzLl9hZGRTdHJpbmcoZSx0KTp0aGlzLl9hZGRPYmplY3QoZSx0KX1yZW1vdmVBdChlKXt0aGlzLnJlY29yZHMuc3BsaWNlKGUsMSk7Zm9yKGxldCB0PWUsbD10aGlzLnNpemUoKTt0PGw7dCs9MSl0aGlzLnJlY29yZHNbdF0uaS09MX1yZW1vdmVBbGwoZSl7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LT0xKXRoaXMucmVjb3Jkcy5zcGxpY2UoZVt0XSwxKTtmb3IobGV0IGU9MCx0PXRoaXMucmVjb3Jkcy5sZW5ndGg7ZTx0O2UrPTEpdGhpcy5yZWNvcmRzW2VdLmk9ZX1nZXRWYWx1ZUZvckl0ZW1BdEtleUlkKGUsdCl7cmV0dXJuIGVbdGhpcy5fa2V5c01hcFt0XV19c2l6ZSgpe3JldHVybiB0aGlzLnJlY29yZHMubGVuZ3RofV9hZGRTdHJpbmcoZSx0KXtpZighaXNEZWZpbmVkKGUpfHxpc0JsYW5rKGUpKXJldHVybjtjb25zdCBsPXt2OmUsaTp0LG46dGhpcy5ub3JtLmdldChlKX07dGhpcy5yZWNvcmRzLnB1c2gobCl9X2FkZE9iamVjdChlLHQpe2NvbnN0IGw9e2k6dCwkOnt9fTt0aGlzLmtleXMuZm9yRWFjaCgodCxvKT0+e2NvbnN0IGk9dC5nZXRGbj90LmdldEZuKGUpOnRoaXMuZ2V0Rm4oZSx0LnBhdGgpO2lmKGlzRGVmaW5lZChpKSlpZihpc0FycmF5KGkpKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGw9aS5sZW5ndGg7dDxsO3QrPTEpe2NvbnN0IGw9aVt0XTtpZihpc0RlZmluZWQobCkpaWYoaXNTdHJpbmcobCkpe2lmKCFpc0JsYW5rKGwpKXtjb25zdCBvPXt2OmwsaTp0LG46dGhpcy5ub3JtLmdldChsKX07ZS5wdXNoKG8pfX1lbHNlIGlmKGlzRGVmaW5lZChsLnYpKXtjb25zdCB0PWlzU3RyaW5nKGwudik/bC52OnRvU3RyaW5nKGwudik7aWYoIWlzQmxhbmsodCkpe2NvbnN0IG89e3Y6dCxpOmwuaSxuOnRoaXMubm9ybS5nZXQodCl9O2UucHVzaChvKX19fWwuJFtvXT1lfWVsc2UgaWYoaXNTdHJpbmcoaSkmJiFpc0JsYW5rKGkpKXtjb25zdCBlPXt2Omksbjp0aGlzLm5vcm0uZ2V0KGkpfTtsLiRbb109ZX19KSx0aGlzLnJlY29yZHMucHVzaChsKX10b0pTT04oKXtyZXR1cm57a2V5czp0aGlzLmtleXMubWFwKCh7Z2V0Rm46ZSwuLi50fSk9PnQpLHJlY29yZHM6dGhpcy5yZWNvcmRzfX19ZnVuY3Rpb24gY3JlYXRlSW5kZXgoZSx0LHtnZXRGbjpsPVZ0LmdldEZuLGZpZWxkTm9ybVdlaWdodDpvPVZ0LmZpZWxkTm9ybVdlaWdodH09e30pe2NvbnN0IGk9bmV3IEZ1c2VJbmRleCh7Z2V0Rm46bCxmaWVsZE5vcm1XZWlnaHQ6b30pO3JldHVybiBpLnNldEtleXMoZS5tYXAoY3JlYXRlS2V5KSksaS5zZXRTb3VyY2VzKHQpLGkuY3JlYXRlKCksaX1jb25zdCBEdD0zMjtmdW5jdGlvbiBzZWFyY2goZSx0LGwse2xvY2F0aW9uOm89VnQubG9jYXRpb24sZGlzdGFuY2U6aT1WdC5kaXN0YW5jZSx0aHJlc2hvbGQ6bj1WdC50aHJlc2hvbGQsZmluZEFsbE1hdGNoZXM6cj1WdC5maW5kQWxsTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6cz1WdC5taW5NYXRjaENoYXJMZW5ndGgsaW5jbHVkZU1hdGNoZXM6dT1WdC5pbmNsdWRlTWF0Y2hlcyxpZ25vcmVMb2NhdGlvbjpkPVZ0Lmlnbm9yZUxvY2F0aW9ufT17fSl7aWYodC5sZW5ndGg+RHQpdGhyb3cgbmV3IEVycm9yKGBQYXR0ZXJuIGxlbmd0aCBleGNlZWRzIG1heCBvZiAke0R0fS5gKTtjb25zdCBmPXQubGVuZ3RoLGc9ZS5sZW5ndGgseT1NYXRoLm1heCgwLE1hdGgubWluKG8sZykpO2xldCBiPW4saz15O2NvbnN0IGNhbGNTY29yZT0oZSx0KT0+e2NvbnN0IGw9ZS9mO2lmKGQpcmV0dXJuIGw7Y29uc3Qgbz1NYXRoLmFicyh5LXQpO3JldHVybiBpP2wrby9pOm8/MTpsfSx4PXM+MXx8dSxCPXg/QXJyYXkoZyk6W107bGV0IFM7Zm9yKDsoUz1lLmluZGV4T2YodCxrKSk+LTE7KXtjb25zdCBlPWNhbGNTY29yZSgwLFMpO2lmKGI9TWF0aC5taW4oZSxiKSxrPVMrZix4KXtsZXQgZT0wO2Zvcig7ZTxmOylCW1MrZV09MSxlKz0xfX1rPS0xO2xldCB3PVtdLE49MSxJPWYrZztjb25zdCBWPTE8PGYtMTtmb3IobGV0IHQ9MDt0PGY7dCs9MSl7bGV0IG89MCxpPUk7Zm9yKDtvPGk7KXtjYWxjU2NvcmUodCx5K2kpPD1iP289aTpJPWksaT1NYXRoLmZsb29yKChJLW8pLzIrbyl9ST1pO2xldCBuPU1hdGgubWF4KDEseS1pKzEpO2NvbnN0IHM9cj9nOk1hdGgubWluKHkraSxnKStmLHU9QXJyYXkocysyKTt1W3MrMV09KDE8PHQpLTE7Zm9yKGxldCBvPXM7bz49bjtvLT0xKXtjb25zdCBpPW8tMSxyPWxbZVtpXV07aWYoeCYmKEJbaV09KyEhciksdVtvXT0odVtvKzFdPDwxfDEpJnIsdCYmKHVbb118PSh3W28rMV18d1tvXSk8PDF8MXx3W28rMV0pLHVbb10mViYmKE49Y2FsY1Njb3JlKHQsaSksTjw9Yikpe2lmKGI9TixrPWksazw9eSlicmVhaztuPU1hdGgubWF4KDEsMip5LWspfX1pZihjYWxjU2NvcmUodCsxLHkpPmIpYnJlYWs7dz11fWNvbnN0IEE9e2lzTWF0Y2g6az49MCxzY29yZTpNYXRoLm1heCguMDAxLE4pfTtpZih4KXtjb25zdCBlPWZ1bmN0aW9uKGU9W10sdD1WdC5taW5NYXRjaENoYXJMZW5ndGgpe2NvbnN0IGw9W107bGV0IG89LTEsaT0tMSxuPTA7Zm9yKGxldCByPWUubGVuZ3RoO248cjtuKz0xKXtjb25zdCByPWVbbl07ciYmLTE9PT1vP289bjpyfHwtMT09PW98fChpPW4tMSxpLW8rMT49dCYmbC5wdXNoKFtvLGldKSxvPS0xKX1yZXR1cm4gZVtuLTFdJiZuLW8+PXQmJmwucHVzaChbbyxuLTFdKSxsfShCLHMpO2UubGVuZ3RoP3UmJihBLmluZGljZXM9ZSk6QS5pc01hdGNoPSExfXJldHVybiBBfWZ1bmN0aW9uIGNyZWF0ZVBhdHRlcm5BbHBoYWJldChlKXtjb25zdCB0PXt9O2ZvcihsZXQgbD0wLG89ZS5sZW5ndGg7bDxvO2wrPTEpe2NvbnN0IGk9ZS5jaGFyQXQobCk7dFtpXT0odFtpXXx8MCl8MTw8by1sLTF9cmV0dXJuIHR9ZnVuY3Rpb24gbWVyZ2VJbmRpY2VzKGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2Uuc29ydCgoZSx0KT0+ZVswXS10WzBdfHxlWzFdLXRbMV0pO2NvbnN0IHQ9W2VbMF1dO2ZvcihsZXQgbD0xLG89ZS5sZW5ndGg7bDxvO2wrPTEpe2NvbnN0IG89dFt0Lmxlbmd0aC0xXSxpPWVbbF07aVswXTw9b1sxXSsxP29bMV09TWF0aC5tYXgob1sxXSxpWzFdKTp0LnB1c2goaSl9cmV0dXJuIHR9Y29uc3QgQXQ9eyLFgiI6ImwiLCLFgSI6IkwiLCLEkSI6ImQiLCLEkCI6IkQiLCLDuCI6Im8iLCLDmCI6Ik8iLCLEpyI6ImgiLCLEpiI6IkgiLCLFpyI6InQiLCLFpiI6IlQiLCLEsSI6ImkiLCLDnyI6InNzIn0senQ9bmV3IFJlZ0V4cCgiWyIrT2JqZWN0LmtleXMoQXQpLmpvaW4oIiIpKyJdIiwiZyIpLE10PVN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplP2U9PmUubm9ybWFsaXplKCJORkQiKS5yZXBsYWNlKC9bXHUwMzAwLVx1MDM2Rlx1MDQ4My1cdTA0ODlcdTA1OTEtXHUwNUJEXHUwNUJGXHUwNUMxXHUwNUMyXHUwNUM0XHUwNUM1XHUwNUM3XHUwNjEwLVx1MDYxQVx1MDY0Qi1cdTA2NUZcdTA2NzBcdTA2RDYtXHUwNkRDXHUwNkRGLVx1MDZFNFx1MDZFN1x1MDZFOFx1MDZFQS1cdTA2RURcdTA3MTFcdTA3MzAtXHUwNzRBXHUwN0E2LVx1MDdCMFx1MDdFQi1cdTA3RjNcdTA3RkRcdTA4MTYtXHUwODE5XHUwODFCLVx1MDgyM1x1MDgyNS1cdTA4MjdcdTA4MjktXHUwODJEXHUwODU5LVx1MDg1Qlx1MDhEMy1cdTA4RTFcdTA4RTMtXHUwOTAzXHUwOTNBLVx1MDkzQ1x1MDkzRS1cdTA5NEZcdTA5NTEtXHUwOTU3XHUwOTYyXHUwOTYzXHUwOTgxLVx1MDk4M1x1MDlCQ1x1MDlCRS1cdTA5QzRcdTA5QzdcdTA5QzhcdTA5Q0ItXHUwOUNEXHUwOUQ3XHUwOUUyXHUwOUUzXHUwOUZFXHUwQTAxLVx1MEEwM1x1MEEzQ1x1MEEzRS1cdTBBNDJcdTBBNDdcdTBBNDhcdTBBNEItXHUwQTREXHUwQTUxXHUwQTcwXHUwQTcxXHUwQTc1XHUwQTgxLVx1MEE4M1x1MEFCQ1x1MEFCRS1cdTBBQzVcdTBBQzctXHUwQUM5XHUwQUNCLVx1MEFDRFx1MEFFMlx1MEFFM1x1MEFGQS1cdTBBRkZcdTBCMDEtXHUwQjAzXHUwQjNDXHUwQjNFLVx1MEI0NFx1MEI0N1x1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTZcdTBCNTdcdTBCNjJcdTBCNjNcdTBCODJcdTBCQkUtXHUwQkMyXHUwQkM2LVx1MEJDOFx1MEJDQS1cdTBCQ0RcdTBCRDdcdTBDMDAtXHUwQzA0XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1XHUwQzU2XHUwQzYyXHUwQzYzXHUwQzgxLVx1MEM4M1x1MENCQ1x1MENCRS1cdTBDQzRcdTBDQzYtXHUwQ0M4XHUwQ0NBLVx1MENDRFx1MENENVx1MENENlx1MENFMlx1MENFM1x1MEQwMC1cdTBEMDNcdTBEM0JcdTBEM0NcdTBEM0UtXHUwRDQ0XHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENERcdTBENTdcdTBENjJcdTBENjNcdTBEODJcdTBEODNcdTBEQ0FcdTBEQ0YtXHUwREQ0XHUwREQ2XHUwREQ4LVx1MERERlx1MERGMlx1MERGM1x1MEUzMVx1MEUzNC1cdTBFM0FcdTBFNDctXHUwRTRFXHUwRUIxXHUwRUI0LVx1MEVCOVx1MEVCQlx1MEVCQ1x1MEVDOC1cdTBFQ0RcdTBGMThcdTBGMTlcdTBGMzVcdTBGMzdcdTBGMzlcdTBGM0VcdTBGM0ZcdTBGNzEtXHUwRjg0XHUwRjg2XHUwRjg3XHUwRjhELVx1MEY5N1x1MEY5OS1cdTBGQkNcdTBGQzZcdTEwMkItXHUxMDNFXHUxMDU2LVx1MTA1OVx1MTA1RS1cdTEwNjBcdTEwNjItXHUxMDY0XHUxMDY3LVx1MTA2RFx1MTA3MS1cdTEwNzRcdTEwODItXHUxMDhEXHUxMDhGXHUxMDlBLVx1MTA5RFx1MTM1RC1cdTEzNUZcdTE3MTItXHUxNzE0XHUxNzMyLVx1MTczNFx1MTc1Mlx1MTc1M1x1MTc3Mlx1MTc3M1x1MTdCNC1cdTE3RDNcdTE3RERcdTE4MEItXHUxODBEXHUxODg1XHUxODg2XHUxOEE5XHUxOTIwLVx1MTkyQlx1MTkzMC1cdTE5M0JcdTFBMTctXHUxQTFCXHUxQTU1LVx1MUE1RVx1MUE2MC1cdTFBN0NcdTFBN0ZcdTFBQjAtXHUxQUJFXHUxQjAwLVx1MUIwNFx1MUIzNC1cdTFCNDRcdTFCNkItXHUxQjczXHUxQjgwLVx1MUI4Mlx1MUJBMS1cdTFCQURcdTFCRTYtXHUxQkYzXHUxQzI0LVx1MUMzN1x1MUNEMC1cdTFDRDJcdTFDRDQtXHUxQ0U4XHUxQ0VEXHUxQ0YyLVx1MUNGNFx1MUNGNy1cdTFDRjlcdTFEQzAtXHUxREY5XHUxREZCLVx1MURGRlx1MjBEMC1cdTIwRjBcdTJDRUYtXHUyQ0YxXHUyRDdGXHUyREUwLVx1MkRGRlx1MzAyQS1cdTMwMkZcdTMwOTlcdTMwOUFcdUE2NkYtXHVBNjcyXHVBNjc0LVx1QTY3RFx1QTY5RVx1QTY5Rlx1QTZGMFx1QTZGMVx1QTgwMlx1QTgwNlx1QTgwQlx1QTgyMy1cdUE4MjdcdUE4ODBcdUE4ODFcdUE4QjQtXHVBOEM1XHVBOEUwLVx1QThGMVx1QThGRlx1QTkyNi1cdUE5MkRcdUE5NDctXHVBOTUzXHVBOTgwLVx1QTk4M1x1QTlCMy1cdUE5QzBcdUE5RTVcdUFBMjktXHVBQTM2XHVBQTQzXHVBQTRDXHVBQTREXHVBQTdCLVx1QUE3RFx1QUFCMFx1QUFCMi1cdUFBQjRcdUFBQjdcdUFBQjhcdUFBQkVcdUFBQkZcdUFBQzFcdUFBRUItXHVBQUVGXHVBQUY1XHVBQUY2XHVBQkUzLVx1QUJFQVx1QUJFQ1x1QUJFRFx1RkIxRVx1RkUwMC1cdUZFMEZcdUZFMjAtXHVGRTJGXS9nLCIiKS5yZXBsYWNlKHp0LGU9PkF0W2VdKTplPT5lO2NsYXNzIEJpdGFwU2VhcmNoe2NvbnN0cnVjdG9yKGUse2xvY2F0aW9uOnQ9VnQubG9jYXRpb24sdGhyZXNob2xkOmw9VnQudGhyZXNob2xkLGRpc3RhbmNlOm89VnQuZGlzdGFuY2UsaW5jbHVkZU1hdGNoZXM6aT1WdC5pbmNsdWRlTWF0Y2hlcyxmaW5kQWxsTWF0Y2hlczpuPVZ0LmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpyPVZ0Lm1pbk1hdGNoQ2hhckxlbmd0aCxpc0Nhc2VTZW5zaXRpdmU6cz1WdC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczp1PVZ0Lmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246ZD1WdC5pZ25vcmVMb2NhdGlvbn09e30pe2lmKHRoaXMub3B0aW9ucz17bG9jYXRpb246dCx0aHJlc2hvbGQ6bCxkaXN0YW5jZTpvLGluY2x1ZGVNYXRjaGVzOmksZmluZEFsbE1hdGNoZXM6bixtaW5NYXRjaENoYXJMZW5ndGg6cixpc0Nhc2VTZW5zaXRpdmU6cyxpZ25vcmVEaWFjcml0aWNzOnUsaWdub3JlTG9jYXRpb246ZH0sZT1zP2U6ZS50b0xvd2VyQ2FzZSgpLGU9dT9NdChlKTplLHRoaXMucGF0dGVybj1lLHRoaXMuY2h1bmtzPVtdLCF0aGlzLnBhdHRlcm4ubGVuZ3RoKXJldHVybjtjb25zdCBhZGRDaHVuaz0oZSx0KT0+e3RoaXMuY2h1bmtzLnB1c2goe3BhdHRlcm46ZSxhbHBoYWJldDpjcmVhdGVQYXR0ZXJuQWxwaGFiZXQoZSksc3RhcnRJbmRleDp0fSl9LGY9dGhpcy5wYXR0ZXJuLmxlbmd0aDtpZihmPkR0KXtsZXQgZT0wO2NvbnN0IHQ9ZiVEdCxsPWYtdDtmb3IoO2U8bDspYWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihlLER0KSxlKSxlKz1EdDtpZih0KXtjb25zdCBlPWYtRHQ7YWRkQ2h1bmsodGhpcy5wYXR0ZXJuLnN1YnN0cihlKSxlKX19ZWxzZSBhZGRDaHVuayh0aGlzLnBhdHRlcm4sMCl9c2VhcmNoSW4oZSl7Y29uc3R7aXNDYXNlU2Vuc2l0aXZlOnQsaWdub3JlRGlhY3JpdGljczpsLGluY2x1ZGVNYXRjaGVzOm99PXRoaXMub3B0aW9ucztpZihlPXQ/ZTplLnRvTG93ZXJDYXNlKCksZT1sP010KGUpOmUsdGhpcy5wYXR0ZXJuPT09ZSl7Y29uc3QgdD17aXNNYXRjaDohMCxzY29yZTowfTtyZXR1cm4gbyYmKHQuaW5kaWNlcz1bWzAsZS5sZW5ndGgtMV1dKSx0fWNvbnN0e2xvY2F0aW9uOmksZGlzdGFuY2U6bix0aHJlc2hvbGQ6cixmaW5kQWxsTWF0Y2hlczpzLG1pbk1hdGNoQ2hhckxlbmd0aDp1LGlnbm9yZUxvY2F0aW9uOmR9PXRoaXMub3B0aW9ucyxmPVtdO2xldCBnPTAseT0hMTt0aGlzLmNodW5rcy5mb3JFYWNoKCh7cGF0dGVybjp0LGFscGhhYmV0Omwsc3RhcnRJbmRleDpifSk9Pntjb25zdHtpc01hdGNoOmssc2NvcmU6eCxpbmRpY2VzOkJ9PXNlYXJjaChlLHQsbCx7bG9jYXRpb246aStiLGRpc3RhbmNlOm4sdGhyZXNob2xkOnIsZmluZEFsbE1hdGNoZXM6cyxtaW5NYXRjaENoYXJMZW5ndGg6dSxpbmNsdWRlTWF0Y2hlczpvLGlnbm9yZUxvY2F0aW9uOmR9KTtrJiYoeT0hMCksZys9eCxrJiZCJiZmLnB1c2goLi4uQil9KTtjb25zdCBiPXtpc01hdGNoOnksc2NvcmU6eT9nL3RoaXMuY2h1bmtzLmxlbmd0aDoxfTtyZXR1cm4geSYmbyYmKGIuaW5kaWNlcz1tZXJnZUluZGljZXMoZikpLGJ9fWNsYXNzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlKXt0aGlzLnBhdHRlcm49ZX1zdGF0aWMgaXNNdWx0aU1hdGNoKGUpe3JldHVybiBnZXRNYXRjaChlLHRoaXMubXVsdGlSZWdleCl9c3RhdGljIGlzU2luZ2xlTWF0Y2goZSl7cmV0dXJuIGdldE1hdGNoKGUsdGhpcy5zaW5nbGVSZWdleCl9c2VhcmNoKGUpe3JldHVybntpc01hdGNoOiExLHNjb3JlOjF9fX1mdW5jdGlvbiBnZXRNYXRjaChlLHQpe2NvbnN0IGw9ZS5tYXRjaCh0KTtyZXR1cm4gbD9sWzFdOm51bGx9Y2xhc3MgRnV6enlNYXRjaCBleHRlbmRzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlLHtsb2NhdGlvbjp0PVZ0LmxvY2F0aW9uLHRocmVzaG9sZDpsPVZ0LnRocmVzaG9sZCxkaXN0YW5jZTpvPVZ0LmRpc3RhbmNlLGluY2x1ZGVNYXRjaGVzOmk9VnQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6bj1WdC5maW5kQWxsTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6cj1WdC5taW5NYXRjaENoYXJMZW5ndGgsaXNDYXNlU2Vuc2l0aXZlOnM9VnQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dT1WdC5pZ25vcmVEaWFjcml0aWNzLGlnbm9yZUxvY2F0aW9uOmQ9VnQuaWdub3JlTG9jYXRpb259PXt9KXtzdXBlcihlKSx0aGlzLl9iaXRhcFNlYXJjaD1uZXcgQml0YXBTZWFyY2goZSx7bG9jYXRpb246dCx0aHJlc2hvbGQ6bCxkaXN0YW5jZTpvLGluY2x1ZGVNYXRjaGVzOmksZmluZEFsbE1hdGNoZXM6bixtaW5NYXRjaENoYXJMZW5ndGg6cixpc0Nhc2VTZW5zaXRpdmU6cyxpZ25vcmVEaWFjcml0aWNzOnUsaWdub3JlTG9jYXRpb246ZH0pfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJmdXp6eSJ9c3RhdGljIGdldCBtdWx0aVJlZ2V4KCl7cmV0dXJuL14iKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14oLiopJC99c2VhcmNoKGUpe3JldHVybiB0aGlzLl9iaXRhcFNlYXJjaC5zZWFyY2hJbihlKX19Y2xhc3MgSW5jbHVkZU1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJpbmNsdWRlIn1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiciKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14nKC4qKSQvfXNlYXJjaChlKXtsZXQgdCxsPTA7Y29uc3Qgbz1bXSxpPXRoaXMucGF0dGVybi5sZW5ndGg7Zm9yKDsodD1lLmluZGV4T2YodGhpcy5wYXR0ZXJuLGwpKT4tMTspbD10K2ksby5wdXNoKFt0LGwtMV0pO2NvbnN0IG49ISFvLmxlbmd0aDtyZXR1cm57aXNNYXRjaDpuLHNjb3JlOm4/MDoxLGluZGljZXM6b319fWNvbnN0IFB0PVtjbGFzcyBleHRlbmRzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9ePSIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXj0oLiopJC99c2VhcmNoKGUpe2NvbnN0IHQ9ZT09PXRoaXMucGF0dGVybjtyZXR1cm57aXNNYXRjaDp0LHNjb3JlOnQ/MDoxLGluZGljZXM6WzAsdGhpcy5wYXR0ZXJuLmxlbmd0aC0xXX19fSxJbmNsdWRlTWF0Y2gsY2xhc3MgZXh0ZW5kcyBCYXNlTWF0Y2h7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuInByZWZpeC1leGFjdCJ9c3RhdGljIGdldCBtdWx0aVJlZ2V4KCl7cmV0dXJuL15cXiIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXlxeKC4qKSQvfXNlYXJjaChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOnQsc2NvcmU6dD8wOjEsaW5kaWNlczpbMCx0aGlzLnBhdHRlcm4ubGVuZ3RoLTFdfX19LGNsYXNzIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJpbnZlcnNlLXByZWZpeC1leGFjdCJ9c3RhdGljIGdldCBtdWx0aVJlZ2V4KCl7cmV0dXJuL14hXF4iKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14hXF4oLiopJC99c2VhcmNoKGUpe2NvbnN0IHQ9IWUuc3RhcnRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOnQsc2NvcmU6dD8wOjEsaW5kaWNlczpbMCxlLmxlbmd0aC0xXX19fSxjbGFzcyBleHRlbmRzIEJhc2VNYXRjaHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iaW52ZXJzZS1zdWZmaXgtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eISIoLiopIlwkJC99c3RhdGljIGdldCBzaW5nbGVSZWdleCgpe3JldHVybi9eISguKilcJCQvfXNlYXJjaChlKXtjb25zdCB0PSFlLmVuZHNXaXRoKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6dCxzY29yZTp0PzA6MSxpbmRpY2VzOlswLGUubGVuZ3RoLTFdfX19LGNsYXNzIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJzdWZmaXgtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eIiguKikiXCQkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14oLiopXCQkL31zZWFyY2goZSl7Y29uc3QgdD1lLmVuZHNXaXRoKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6dCxzY29yZTp0PzA6MSxpbmRpY2VzOltlLmxlbmd0aC10aGlzLnBhdHRlcm4ubGVuZ3RoLGUubGVuZ3RoLTFdfX19LGNsYXNzIGV4dGVuZHMgQmFzZU1hdGNoe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJpbnZlcnNlLWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiEiKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL14hKC4qKSQvfXNlYXJjaChlKXtjb25zdCB0PS0xPT09ZS5pbmRleE9mKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6dCxzY29yZTp0PzA6MSxpbmRpY2VzOlswLGUubGVuZ3RoLTFdfX19LEZ1enp5TWF0Y2hdLHF0PVB0Lmxlbmd0aDtjb25zdCBGdD1uZXcgU2V0KFtGdXp6eU1hdGNoLnR5cGUsSW5jbHVkZU1hdGNoLnR5cGVdKTtjbGFzcyBFeHRlbmRlZFNlYXJjaHtjb25zdHJ1Y3RvcihlLHtpc0Nhc2VTZW5zaXRpdmU6dD1WdC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczpsPVZ0Lmlnbm9yZURpYWNyaXRpY3MsaW5jbHVkZU1hdGNoZXM6bz1WdC5pbmNsdWRlTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6aT1WdC5taW5NYXRjaENoYXJMZW5ndGgsaWdub3JlTG9jYXRpb246bj1WdC5pZ25vcmVMb2NhdGlvbixmaW5kQWxsTWF0Y2hlczpyPVZ0LmZpbmRBbGxNYXRjaGVzLGxvY2F0aW9uOnM9VnQubG9jYXRpb24sdGhyZXNob2xkOnU9VnQudGhyZXNob2xkLGRpc3RhbmNlOmQ9VnQuZGlzdGFuY2V9PXt9KXt0aGlzLnF1ZXJ5PW51bGwsdGhpcy5vcHRpb25zPXtpc0Nhc2VTZW5zaXRpdmU6dCxpZ25vcmVEaWFjcml0aWNzOmwsaW5jbHVkZU1hdGNoZXM6byxtaW5NYXRjaENoYXJMZW5ndGg6aSxmaW5kQWxsTWF0Y2hlczpyLGlnbm9yZUxvY2F0aW9uOm4sbG9jYXRpb246cyx0aHJlc2hvbGQ6dSxkaXN0YW5jZTpkfSxlPXQ/ZTplLnRvTG93ZXJDYXNlKCksZT1sP010KGUpOmUsdGhpcy5wYXR0ZXJuPWUsdGhpcy5xdWVyeT1mdW5jdGlvbihlLHQ9e30pe3JldHVybiBlLnJlcGxhY2UoL1xcXHwvZywiXDAiKS5zcGxpdCgifCIpLm1hcChlPT57Y29uc3QgbD1mdW5jdGlvbihlKXtjb25zdCB0PVtdLGw9ZS5sZW5ndGg7bGV0IG89MDtmb3IoO288bDspe2Zvcig7bzxsJiYiICI9PT1lW29dOylvKys7aWYobz49bClicmVhaztsZXQgaT1vO2Zvcig7aTxsJiYiICIhPT1lW2ldJiYnIichPT1lW2ldOylpKys7aWYoaTxsJiYnIic9PT1lW2ldKXtmb3IoaSsrO2k8bDspe2lmKCciJz09PWVbaV0pe2NvbnN0IHQ9aSsxO2lmKHQ+PWx8fCIgIj09PWVbdF0pe2krKzticmVha31pZigiJCI9PT1lW3RdJiYodCsxPj1sfHwiICI9PT1lW3QrMV0pKXtpKz0yO2JyZWFrfX1pKyt9dC5wdXNoKGUuc3Vic3RyaW5nKG8saSkpLG89aX1lbHNle2Zvcig7aTxsJiYiICIhPT1lW2ldOylpKys7dC5wdXNoKGUuc3Vic3RyaW5nKG8saSkpLG89aX19cmV0dXJuIHR9KGUucmVwbGFjZSgvXHUwMDAwL2csInwiKS50cmltKCkpLmZpbHRlcihlPT5lJiYhIWUudHJpbSgpKSxvPVtdO2ZvcihsZXQgZT0wLGk9bC5sZW5ndGg7ZTxpO2UrPTEpe2NvbnN0IGk9bFtlXTtsZXQgbj0hMSxyPS0xO2Zvcig7IW4mJisrcjxxdDspe2NvbnN0IGU9UHRbcl0sbD1lLmlzTXVsdGlNYXRjaChpKTtsJiYoby5wdXNoKG5ldyBlKGwsdCkpLG49ITApfWlmKCFuKWZvcihyPS0xOysrcjxxdDspe2NvbnN0IGU9UHRbcl0sbD1lLmlzU2luZ2xlTWF0Y2goaSk7aWYobCl7by5wdXNoKG5ldyBlKGwsdCkpO2JyZWFrfX19cmV0dXJuIG99KX0odGhpcy5wYXR0ZXJuLHRoaXMub3B0aW9ucyl9c3RhdGljIGNvbmRpdGlvbihlLHQpe3JldHVybiB0LnVzZUV4dGVuZGVkU2VhcmNofXNlYXJjaEluKGUpe2NvbnN0IHQ9dGhpcy5xdWVyeTtpZighdClyZXR1cm57aXNNYXRjaDohMSxzY29yZToxfTtjb25zdHtpbmNsdWRlTWF0Y2hlczpsLGlzQ2FzZVNlbnNpdGl2ZTpvLGlnbm9yZURpYWNyaXRpY3M6aX09dGhpcy5vcHRpb25zO2U9bz9lOmUudG9Mb3dlckNhc2UoKSxlPWk/TXQoZSk6ZTtsZXQgbj0wO2NvbnN0IHI9W107bGV0IHM9MCx1PSExO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rPTEpe2NvbnN0IGk9dFtvXTtyLmxlbmd0aD0wLG49MCx1PSExO2ZvcihsZXQgdD0wLG89aS5sZW5ndGg7dDxvO3QrPTEpe2NvbnN0IG89aVt0XSx7aXNNYXRjaDpkLGluZGljZXM6ZixzY29yZTpnfT1vLnNlYXJjaChlKTtpZighZCl7cz0wLG49MCxyLmxlbmd0aD0wLHU9ITE7YnJlYWt9e24rPTEscys9Zztjb25zdCBlPW8uY29uc3RydWN0b3IudHlwZTtlLnN0YXJ0c1dpdGgoImludmVyc2UiKSYmKHU9ITApLGwmJihGdC5oYXMoZSk/ci5wdXNoKC4uLmYpOnIucHVzaChmKSl9fWlmKG4pe2NvbnN0IGU9e2lzTWF0Y2g6ITAsc2NvcmU6cy9ufTtyZXR1cm4gdSYmKGUuaGFzSW52ZXJzZT0hMCksbCYmKGUuaW5kaWNlcz1tZXJnZUluZGljZXMocikpLGV9fXJldHVybntpc01hdGNoOiExLHNjb3JlOjF9fX1jb25zdCBLdD1bXTtmdW5jdGlvbiByZWdpc3RlciguLi5lKXtLdC5wdXNoKC4uLmUpfWZ1bmN0aW9uIGNyZWF0ZVNlYXJjaGVyKGUsdCl7Zm9yKGxldCBsPTAsbz1LdC5sZW5ndGg7bDxvO2wrPTEpe2NvbnN0IG89S3RbbF07aWYoby5jb25kaXRpb24oZSx0KSlyZXR1cm4gbmV3IG8oZSx0KX1yZXR1cm4gbmV3IEJpdGFwU2VhcmNoKGUsdCl9Y29uc3QgT3Q9IiRhbmQiLEV0PSIkb3IiLFJ0PSIkcGF0aCIsanQ9IiR2YWwiLGlzRXhwcmVzc2lvbj1lPT4hKCFlW090XSYmIWVbRXRdKSxjb252ZXJ0VG9FeHBsaWNpdD1lPT4oe1tPdF06T2JqZWN0LmtleXMoZSkubWFwKHQ9Pih7W3RdOmVbdF19KSl9KTtmdW5jdGlvbiBwYXJzZShlLHQse2F1dG86bD0hMH09e30pe2NvbnN0IG5leHQ9ZT0+e2lmKGlzU3RyaW5nKGUpKXtjb25zdCBvPXtrZXlJZDpudWxsLHBhdHRlcm46ZX07cmV0dXJuIGwmJihvLnNlYXJjaGVyPWNyZWF0ZVNlYXJjaGVyKGUsdCkpLG99Y29uc3Qgbz1PYmplY3Qua2V5cyhlKSxpPShlPT4hIWVbUnRdKShlKTtpZighaSYmby5sZW5ndGg+MSYmIWlzRXhwcmVzc2lvbihlKSlyZXR1cm4gbmV4dChjb252ZXJ0VG9FeHBsaWNpdChlKSk7aWYoKGU9PiFpc0FycmF5KGUpJiZpc09iamVjdChlKSYmIWlzRXhwcmVzc2lvbihlKSkoZSkpe2NvbnN0IG49aT9lW1J0XTpvWzBdLHI9aT9lW2p0XTplW25dO2lmKCFpc1N0cmluZyhyKSl0aHJvdyBuZXcgRXJyb3IoKGU9PmBJbnZhbGlkIHZhbHVlIGZvciBrZXkgJHtlfWApKG4pKTtjb25zdCBzPXtrZXlJZDpjcmVhdGVLZXlJZChuKSxwYXR0ZXJuOnJ9O3JldHVybiBsJiYocy5zZWFyY2hlcj1jcmVhdGVTZWFyY2hlcihyLHQpKSxzfWNvbnN0IG49e2NoaWxkcmVuOltdLG9wZXJhdG9yOm9bMF19O3JldHVybiBvLmZvckVhY2godD0+e2NvbnN0IGw9ZVt0XTtpc0FycmF5KGwpJiZsLmZvckVhY2goZT0+e24uY2hpbGRyZW4ucHVzaChuZXh0KGUpKX0pfSksbn07cmV0dXJuIGlzRXhwcmVzc2lvbihlKXx8KGU9Y29udmVydFRvRXhwbGljaXQoZSkpLG5leHQoZSl9ZnVuY3Rpb24gY29tcHV0ZVNjb3JlU2luZ2xlKGUse2lnbm9yZUZpZWxkTm9ybTp0PVZ0Lmlnbm9yZUZpZWxkTm9ybX0pe2xldCBsPTE7cmV0dXJuIGUuZm9yRWFjaCgoe2tleTplLG5vcm06byxzY29yZTppfSk9Pntjb25zdCBuPWU/ZS53ZWlnaHQ6bnVsbDtsKj1NYXRoLnBvdygwPT09aSYmbj9OdW1iZXIuRVBTSUxPTjppLChufHwxKSoodD8xOm8pKX0pLGx9Y2xhc3MgTWF4SGVhcHtjb25zdHJ1Y3RvcihlKXt0aGlzLmxpbWl0PWUsdGhpcy5oZWFwPVtdfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuaGVhcC5sZW5ndGh9c2hvdWxkSW5zZXJ0KGUpe3JldHVybiB0aGlzLnNpemU8dGhpcy5saW1pdHx8ZTx0aGlzLmhlYXBbMF0uc2NvcmV9aW5zZXJ0KGUpe3RoaXMuc2l6ZTx0aGlzLmxpbWl0Pyh0aGlzLmhlYXAucHVzaChlKSx0aGlzLl9idWJibGVVcCh0aGlzLnNpemUtMSkpOmUuc2NvcmU8dGhpcy5oZWFwWzBdLnNjb3JlJiYodGhpcy5oZWFwWzBdPWUsdGhpcy5fc2lua0Rvd24oMCkpfWV4dHJhY3RTb3J0ZWQoZSl7cmV0dXJuIHRoaXMuaGVhcC5zb3J0KGUpfV9idWJibGVVcChlKXtjb25zdCB0PXRoaXMuaGVhcDtmb3IoO2U+MDspe2NvbnN0IGw9ZS0xPj4xO2lmKHRbZV0uc2NvcmU8PXRbbF0uc2NvcmUpYnJlYWs7Y29uc3Qgbz10W2VdO3RbZV09dFtsXSx0W2xdPW8sZT1sfX1fc2lua0Rvd24oZSl7Y29uc3QgdD10aGlzLmhlYXAsbD10Lmxlbmd0aDtsZXQgbz1lO2Rve2NvbnN0IGk9MiooZT1vKSsxLG49MiplKzI7aWYoaTxsJiZ0W2ldLnNjb3JlPnRbb10uc2NvcmUmJihvPWkpLG48bCYmdFtuXS5zY29yZT50W29dLnNjb3JlJiYobz1uKSxvIT09ZSl7Y29uc3QgbD10W2VdO3RbZV09dFtvXSx0W29dPWx9fXdoaWxlKG8hPT1lKX19ZnVuY3Rpb24gdHJhbnNmb3JtTWF0Y2hlcyhlLHQpe2NvbnN0IGw9ZS5tYXRjaGVzO3QubWF0Y2hlcz1bXSxpc0RlZmluZWQobCkmJmwuZm9yRWFjaChlPT57aWYoIWlzRGVmaW5lZChlLmluZGljZXMpfHwhZS5pbmRpY2VzLmxlbmd0aClyZXR1cm47Y29uc3R7aW5kaWNlczpsLHZhbHVlOm99PWUsaT17aW5kaWNlczpsLHZhbHVlOm99O2Uua2V5JiYoaS5rZXk9ZS5rZXkuc3JjKSxlLmlkeD4tMSYmKGkucmVmSW5kZXg9ZS5pZHgpLHQubWF0Y2hlcy5wdXNoKGkpfSl9ZnVuY3Rpb24gdHJhbnNmb3JtU2NvcmUoZSx0KXt0LnNjb3JlPWUuc2NvcmV9Y29uc3QgSHQ9L1xiXHcrXGIvZztmdW5jdGlvbiBjcmVhdGVBbmFseXplcih7aXNDYXNlU2Vuc2l0aXZlOmU9ITEsaWdub3JlRGlhY3JpdGljczp0PSExfT17fSl7cmV0dXJue3Rva2VuaXplOmw9PihlfHwobD1sLnRvTG93ZXJDYXNlKCkpLHQmJihsPU10KGwpKSxsLm1hdGNoKEh0KXx8W10pfX1mdW5jdGlvbiByZW1vdmVGcm9tSW52ZXJ0ZWRJbmRleChlLHQpe2Zvcihjb25zdFtsLG9db2YgZS50ZXJtcyl7Y29uc3QgaT1vLmZpbHRlcihlPT5lLmRvY0lkeCE9PXQpLG49by5sZW5ndGgtaS5sZW5ndGg7bj4wJiYoZS5maWVsZENvdW50LT1uLGUuZGYuc2V0KGwsKGUuZGYuZ2V0KGwpfHwwKS1uKSwwPT09aS5sZW5ndGg/KGUudGVybXMuZGVsZXRlKGwpLGUuZGYuZGVsZXRlKGwpKTplLnRlcm1zLnNldChsLGkpKX19Y2xhc3MgRnVzZXtjb25zdHJ1Y3RvcihlLHQsbCl7dGhpcy5vcHRpb25zPXsuLi5WdCwuLi50fSx0aGlzLm9wdGlvbnMudXNlRXh0ZW5kZWRTZWFyY2gsdGhpcy5vcHRpb25zLnVzZVRva2VuU2VhcmNoLHRoaXMuX2tleVN0b3JlPW5ldyBLZXlTdG9yZSh0aGlzLm9wdGlvbnMua2V5cyksdGhpcy5fZG9jcz1lLHRoaXMuX215SW5kZXg9bnVsbCx0aGlzLl9pbnZlcnRlZEluZGV4PW51bGwsdGhpcy5zZXRDb2xsZWN0aW9uKGUsbCksdGhpcy5fbGFzdFF1ZXJ5PW51bGwsdGhpcy5fbGFzdFNlYXJjaGVyPW51bGx9X2dldFNlYXJjaGVyKGUpe2lmKHRoaXMuX2xhc3RRdWVyeT09PWUpcmV0dXJuIHRoaXMuX2xhc3RTZWFyY2hlcjtjb25zdCB0PWNyZWF0ZVNlYXJjaGVyKGUsdGhpcy5faW52ZXJ0ZWRJbmRleD97Li4udGhpcy5vcHRpb25zLF9pbnZlcnRlZEluZGV4OnRoaXMuX2ludmVydGVkSW5kZXh9OnRoaXMub3B0aW9ucyk7cmV0dXJuIHRoaXMuX2xhc3RRdWVyeT1lLHRoaXMuX2xhc3RTZWFyY2hlcj10LHR9c2V0Q29sbGVjdGlvbihlLHQpe2lmKHRoaXMuX2RvY3M9ZSx0JiYhKHQgaW5zdGFuY2VvZiBGdXNlSW5kZXgpKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0ICdpbmRleCcgdHlwZSIpO2lmKHRoaXMuX215SW5kZXg9dHx8Y3JlYXRlSW5kZXgodGhpcy5vcHRpb25zLmtleXMsdGhpcy5fZG9jcyx7Z2V0Rm46dGhpcy5vcHRpb25zLmdldEZuLGZpZWxkTm9ybVdlaWdodDp0aGlzLm9wdGlvbnMuZmllbGROb3JtV2VpZ2h0fSksdGhpcy5vcHRpb25zLnVzZVRva2VuU2VhcmNoKXtjb25zdCBlPWNyZWF0ZUFuYWx5emVyKHtpc0Nhc2VTZW5zaXRpdmU6dGhpcy5vcHRpb25zLmlzQ2FzZVNlbnNpdGl2ZSxpZ25vcmVEaWFjcml0aWNzOnRoaXMub3B0aW9ucy5pZ25vcmVEaWFjcml0aWNzfSk7dGhpcy5faW52ZXJ0ZWRJbmRleD1mdW5jdGlvbihlLHQsbCl7Y29uc3Qgbz1uZXcgTWFwLGk9bmV3IE1hcDtsZXQgbj0wO2Z1bmN0aW9uIGFkZEZpZWxkKGUsdCxyLHMpe2NvbnN0IHU9bC50b2tlbml6ZShlKTtpZighdS5sZW5ndGgpcmV0dXJuO24rKztjb25zdCBkPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdSlkLnNldChlLChkLmdldChlKXx8MCkrMSk7Zm9yKGNvbnN0W2UsbF1vZiBkKXtjb25zdCBuPXtkb2NJZHg6dCxrZXlJZHg6cixzdWJJZHg6cyx0ZjpsfTtsZXQgdT1vLmdldChlKTt1fHwodT1bXSxvLnNldChlLHUpKSx1LnB1c2gobiksaS5zZXQoZSwoaS5nZXQoZSl8fDApKzEpfX1mb3IoY29uc3QgbCBvZiBlKXtjb25zdHtpOmUsdjpvLCQ6aX09bDtpZih2b2lkIDA9PT1vKXtpZihpKWZvcihsZXQgbD0wO2w8dDtsKyspe2NvbnN0IHQ9aVtsXTtpZih0KWlmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IG8gb2YgdClhZGRGaWVsZChvLnYsZSxsLG8uaT8/LTEpO2Vsc2UgYWRkRmllbGQodC52LGUsbCwtMSl9fWVsc2UgYWRkRmllbGQobyxlLC0xLC0xKX1yZXR1cm57dGVybXM6byxmaWVsZENvdW50Om4sZGY6aX19KHRoaXMuX215SW5kZXgucmVjb3Jkcyx0aGlzLl9teUluZGV4LmtleXMubGVuZ3RoLGUpfX1hZGQoZSl7aWYoaXNEZWZpbmVkKGUpJiYodGhpcy5fZG9jcy5wdXNoKGUpLHRoaXMuX215SW5kZXguYWRkKGUpLHRoaXMuX2ludmVydGVkSW5kZXgpKXtjb25zdCBlPXRoaXMuX215SW5kZXgucmVjb3Jkc1t0aGlzLl9teUluZGV4LnJlY29yZHMubGVuZ3RoLTFdLHQ9Y3JlYXRlQW5hbHl6ZXIoe2lzQ2FzZVNlbnNpdGl2ZTp0aGlzLm9wdGlvbnMuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dGhpcy5vcHRpb25zLmlnbm9yZURpYWNyaXRpY3N9KTshZnVuY3Rpb24oZSx0LGwsbyl7Y29uc3R7aTppLHY6biwkOnJ9PXQ7ZnVuY3Rpb24gYWRkRmllbGQodCxsLG4pe2NvbnN0IHI9by50b2tlbml6ZSh0KTtpZighci5sZW5ndGgpcmV0dXJuO2UuZmllbGRDb3VudCsrO2NvbnN0IHM9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiByKXMuc2V0KGUsKHMuZ2V0KGUpfHwwKSsxKTtmb3IoY29uc3RbdCxvXW9mIHMpe2NvbnN0IHI9e2RvY0lkeDppLGtleUlkeDpsLHN1YklkeDpuLHRmOm99O2xldCBzPWUudGVybXMuZ2V0KHQpO3N8fChzPVtdLGUudGVybXMuc2V0KHQscykpLHMucHVzaChyKSxlLmRmLnNldCh0LChlLmRmLmdldCh0KXx8MCkrMSl9fWlmKHZvaWQgMD09PW4pe2lmKHIpZm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1yW2VdO2lmKHQpaWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgbCBvZiB0KWFkZEZpZWxkKGwudixlLGwuaT8/LTEpO2Vsc2UgYWRkRmllbGQodC52LGUsLTEpfX1lbHNlIGFkZEZpZWxkKG4sLTEsLTEpfSh0aGlzLl9pbnZlcnRlZEluZGV4LGUsdGhpcy5fbXlJbmRleC5rZXlzLmxlbmd0aCx0KX19cmVtb3ZlKGU9KCk9PiExKXtjb25zdCB0PVtdLGw9W107Zm9yKGxldCBvPTAsaT10aGlzLl9kb2NzLmxlbmd0aDtvPGk7bys9MSllKHRoaXMuX2RvY3Nbb10sbykmJih0LnB1c2godGhpcy5fZG9jc1tvXSksbC5wdXNoKG8pKTtpZihsLmxlbmd0aCl7aWYodGhpcy5faW52ZXJ0ZWRJbmRleClmb3IoY29uc3QgZSBvZiBsKXJlbW92ZUZyb21JbnZlcnRlZEluZGV4KHRoaXMuX2ludmVydGVkSW5kZXgsZSk7Zm9yKGxldCBlPWwubGVuZ3RoLTE7ZT49MDtlLT0xKXRoaXMuX2RvY3Muc3BsaWNlKGxbZV0sMSk7dGhpcy5fbXlJbmRleC5yZW1vdmVBbGwobCl9cmV0dXJuIHR9cmVtb3ZlQXQoZSl7dGhpcy5faW52ZXJ0ZWRJbmRleCYmcmVtb3ZlRnJvbUludmVydGVkSW5kZXgodGhpcy5faW52ZXJ0ZWRJbmRleCxlKTtjb25zdCB0PXRoaXMuX2RvY3Muc3BsaWNlKGUsMSlbMF07cmV0dXJuIHRoaXMuX215SW5kZXgucmVtb3ZlQXQoZSksdH1nZXRJbmRleCgpe3JldHVybiB0aGlzLl9teUluZGV4fXNlYXJjaChlLHQpe2NvbnN0e2xpbWl0Omw9LTF9PXR8fHt9LHtpbmNsdWRlTWF0Y2hlczpvLGluY2x1ZGVTY29yZTppLHNob3VsZFNvcnQ6bixzb3J0Rm46cixpZ25vcmVGaWVsZE5vcm06c309dGhpcy5vcHRpb25zO2lmKGlzU3RyaW5nKGUpJiYhZS50cmltKCkpe2xldCBlPXRoaXMuX2RvY3MubWFwKChlLHQpPT4oe2l0ZW06ZSxyZWZJbmRleDp0fSkpO3JldHVybiBpc051bWJlcihsKSYmbD4tMSYmKGU9ZS5zbGljZSgwLGwpKSxlfWxldCB1O2lmKGlzTnVtYmVyKGwpJiZsPjAmJmlzU3RyaW5nKGUpKXtjb25zdCB0PW5ldyBNYXhIZWFwKGwpO2lzU3RyaW5nKHRoaXMuX2RvY3NbMF0pP3RoaXMuX3NlYXJjaFN0cmluZ0xpc3QoZSx7aGVhcDp0LGlnbm9yZUZpZWxkTm9ybTpzfSk6dGhpcy5fc2VhcmNoT2JqZWN0TGlzdChlLHtoZWFwOnQsaWdub3JlRmllbGROb3JtOnN9KSx1PXQuZXh0cmFjdFNvcnRlZChyKX1lbHNlIHU9aXNTdHJpbmcoZSk/aXNTdHJpbmcodGhpcy5fZG9jc1swXSk/dGhpcy5fc2VhcmNoU3RyaW5nTGlzdChlKTp0aGlzLl9zZWFyY2hPYmplY3RMaXN0KGUpOnRoaXMuX3NlYXJjaExvZ2ljYWwoZSksZnVuY3Rpb24oZSx7aWdub3JlRmllbGROb3JtOnQ9VnQuaWdub3JlRmllbGROb3JtfSl7ZS5mb3JFYWNoKGU9PntlLnNjb3JlPWNvbXB1dGVTY29yZVNpbmdsZShlLm1hdGNoZXMse2lnbm9yZUZpZWxkTm9ybTp0fSl9KX0odSx7aWdub3JlRmllbGROb3JtOnN9KSxuJiZ1LnNvcnQociksaXNOdW1iZXIobCkmJmw+LTEmJih1PXUuc2xpY2UoMCxsKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCx7aW5jbHVkZU1hdGNoZXM6bD1WdC5pbmNsdWRlTWF0Y2hlcyxpbmNsdWRlU2NvcmU6bz1WdC5pbmNsdWRlU2NvcmV9PXt9KXtjb25zdCBpPVtdO3JldHVybiBsJiZpLnB1c2godHJhbnNmb3JtTWF0Y2hlcyksbyYmaS5wdXNoKHRyYW5zZm9ybVNjb3JlKSxlLm1hcChlPT57Y29uc3R7aWR4Omx9PWUsbz17aXRlbTp0W2xdLHJlZkluZGV4Omx9O3JldHVybiBpLmxlbmd0aCYmaS5mb3JFYWNoKHQ9Pnt0KGUsbyl9KSxvfSl9KHUsdGhpcy5fZG9jcyx7aW5jbHVkZU1hdGNoZXM6byxpbmNsdWRlU2NvcmU6aX0pfV9zZWFyY2hTdHJpbmdMaXN0KGUse2hlYXA6dCxpZ25vcmVGaWVsZE5vcm06bH09e30pe2NvbnN0IG89dGhpcy5fZ2V0U2VhcmNoZXIoZSkse3JlY29yZHM6aX09dGhpcy5fbXlJbmRleCxuPXQ/bnVsbDpbXTtyZXR1cm4gaS5mb3JFYWNoKCh7djplLGk6aSxuOnJ9KT0+e2lmKCFpc0RlZmluZWQoZSkpcmV0dXJuO2NvbnN0e2lzTWF0Y2g6cyxzY29yZTp1LGluZGljZXM6ZH09by5zZWFyY2hJbihlKTtpZihzKXtjb25zdCBvPXtpdGVtOmUsaWR4OmksbWF0Y2hlczpbe3Njb3JlOnUsdmFsdWU6ZSxub3JtOnIsaW5kaWNlczpkfV19O3Q/KG8uc2NvcmU9Y29tcHV0ZVNjb3JlU2luZ2xlKG8ubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOmx9KSx0LnNob3VsZEluc2VydChvLnNjb3JlKSYmdC5pbnNlcnQobykpOm4ucHVzaChvKX19KSxufV9zZWFyY2hMb2dpY2FsKGUpe2NvbnN0IHQ9cGFyc2UoZSx0aGlzLm9wdGlvbnMpLGV2YWx1YXRlPShlLHQsbCk9PntpZighKCJjaGlsZHJlbiJpbiBlKSl7Y29uc3R7a2V5SWQ6byxzZWFyY2hlcjppfT1lO2xldCBuO3JldHVybiBudWxsPT09bz8obj1bXSx0aGlzLl9teUluZGV4LmtleXMuZm9yRWFjaCgoZSxsKT0+e24ucHVzaCguLi50aGlzLl9maW5kTWF0Y2hlcyh7a2V5OmUsdmFsdWU6dFtsXSxzZWFyY2hlcjppfSkpfSkpOm49dGhpcy5fZmluZE1hdGNoZXMoe2tleTp0aGlzLl9rZXlTdG9yZS5nZXQobyksdmFsdWU6dGhpcy5fbXlJbmRleC5nZXRWYWx1ZUZvckl0ZW1BdEtleUlkKHQsbyksc2VhcmNoZXI6aX0pLG4mJm4ubGVuZ3RoP1t7aWR4OmwsaXRlbTp0LG1hdGNoZXM6bn1dOltdfWNvbnN0e2NoaWxkcmVuOm8sb3BlcmF0b3I6aX09ZSxuPVtdO2ZvcihsZXQgZT0wLHI9by5sZW5ndGg7ZTxyO2UrPTEpe2NvbnN0IHI9b1tlXSxzPWV2YWx1YXRlKHIsdCxsKTtpZihzLmxlbmd0aCluLnB1c2goLi4ucyk7ZWxzZSBpZihpPT09T3QpcmV0dXJuW119cmV0dXJuIG59LGw9dGhpcy5fbXlJbmRleC5yZWNvcmRzLG89bmV3IE1hcCxpPVtdO3JldHVybiBsLmZvckVhY2goKHskOmUsaTpsfSk9PntpZihpc0RlZmluZWQoZSkpe2NvbnN0IG49ZXZhbHVhdGUodCxlLGwpO24ubGVuZ3RoJiYoby5oYXMobCl8fChvLnNldChsLHtpZHg6bCxpdGVtOmUsbWF0Y2hlczpbXX0pLGkucHVzaChvLmdldChsKSkpLG4uZm9yRWFjaCgoe21hdGNoZXM6ZX0pPT57by5nZXQobCkubWF0Y2hlcy5wdXNoKC4uLmUpfSkpfX0pLGl9X3NlYXJjaE9iamVjdExpc3QoZSx7aGVhcDp0LGlnbm9yZUZpZWxkTm9ybTpsfT17fSl7Y29uc3Qgbz10aGlzLl9nZXRTZWFyY2hlcihlKSx7a2V5czppLHJlY29yZHM6bn09dGhpcy5fbXlJbmRleCxyPXQ/bnVsbDpbXTtyZXR1cm4gbi5mb3JFYWNoKCh7JDplLGk6bn0pPT57aWYoIWlzRGVmaW5lZChlKSlyZXR1cm47Y29uc3Qgcz1bXTtsZXQgdT0hMSxkPSExO2lmKGkuZm9yRWFjaCgodCxsKT0+e2NvbnN0IGk9dGhpcy5fZmluZE1hdGNoZXMoe2tleTp0LHZhbHVlOmVbbF0sc2VhcmNoZXI6b30pO2kubGVuZ3RoPyhzLnB1c2goLi4uaSksaVswXS5oYXNJbnZlcnNlJiYoZD0hMCkpOnU9ITB9KSwoIWR8fCF1KSYmcy5sZW5ndGgpe2NvbnN0IG89e2lkeDpuLGl0ZW06ZSxtYXRjaGVzOnN9O3Q/KG8uc2NvcmU9Y29tcHV0ZVNjb3JlU2luZ2xlKG8ubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOmx9KSx0LnNob3VsZEluc2VydChvLnNjb3JlKSYmdC5pbnNlcnQobykpOnIucHVzaChvKX19KSxyfV9maW5kTWF0Y2hlcyh7a2V5OmUsdmFsdWU6dCxzZWFyY2hlcjpsfSl7aWYoIWlzRGVmaW5lZCh0KSlyZXR1cm5bXTtjb25zdCBvPVtdO2lmKGlzQXJyYXkodCkpdC5mb3JFYWNoKCh7djp0LGk6aSxuOm59KT0+e2lmKCFpc0RlZmluZWQodCkpcmV0dXJuO2NvbnN0e2lzTWF0Y2g6cixzY29yZTpzLGluZGljZXM6dSxoYXNJbnZlcnNlOmR9PWwuc2VhcmNoSW4odCk7ciYmby5wdXNoKHtzY29yZTpzLGtleTplLHZhbHVlOnQsaWR4Omksbm9ybTpuLGluZGljZXM6dSxoYXNJbnZlcnNlOmR9KX0pO2Vsc2V7Y29uc3R7djppLG46bn09dCx7aXNNYXRjaDpyLHNjb3JlOnMsaW5kaWNlczp1LGhhc0ludmVyc2U6ZH09bC5zZWFyY2hJbihpKTtyJiZvLnB1c2goe3Njb3JlOnMsa2V5OmUsdmFsdWU6aSxub3JtOm4saW5kaWNlczp1LGhhc0ludmVyc2U6ZH0pfXJldHVybiBvfX1jbGFzcyBUb2tlblNlYXJjaHtzdGF0aWMgY29uZGl0aW9uKGUsdCl7cmV0dXJuIHQudXNlVG9rZW5TZWFyY2h9Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9wdGlvbnM9dCx0aGlzLmFuYWx5emVyPWNyZWF0ZUFuYWx5emVyKHtpc0Nhc2VTZW5zaXRpdmU6dC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczp0Lmlnbm9yZURpYWNyaXRpY3N9KTtjb25zdCBsPXRoaXMuYW5hbHl6ZXIudG9rZW5pemUoZSksbz10Ll9pbnZlcnRlZEluZGV4LHtkZjppLGZpZWxkQ291bnQ6bn09bzt0aGlzLnRlcm1TZWFyY2hlcnM9W10sdGhpcy5pZGZXZWlnaHRzPVtdO2Zvcihjb25zdCBlIG9mIGwpe3RoaXMudGVybVNlYXJjaGVycy5wdXNoKG5ldyBCaXRhcFNlYXJjaChlLHtsb2NhdGlvbjp0LmxvY2F0aW9uLHRocmVzaG9sZDp0LnRocmVzaG9sZCxkaXN0YW5jZTp0LmRpc3RhbmNlLGluY2x1ZGVNYXRjaGVzOnQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6dC5maW5kQWxsTWF0Y2hlcyxtaW5NYXRjaENoYXJMZW5ndGg6dC5taW5NYXRjaENoYXJMZW5ndGgsaXNDYXNlU2Vuc2l0aXZlOnQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dC5pZ25vcmVEaWFjcml0aWNzLGlnbm9yZUxvY2F0aW9uOiEwfSkpO2NvbnN0IGw9aS5nZXQoZSl8fDAsbz1NYXRoLmxvZygxKyhuLWwrLjUpLyhsKy41KSk7dGhpcy5pZGZXZWlnaHRzLnB1c2gobyl9fXNlYXJjaEluKGUpe2lmKCF0aGlzLnRlcm1TZWFyY2hlcnMubGVuZ3RoKXJldHVybntpc01hdGNoOiExLHNjb3JlOjF9O2NvbnN0IHQ9W107bGV0IGw9MCxvPTAsaT0wO2ZvcihsZXQgbj0wO248dGhpcy50ZXJtU2VhcmNoZXJzLmxlbmd0aDtuKyspe2NvbnN0IHI9dGhpcy50ZXJtU2VhcmNoZXJzW25dLnNlYXJjaEluKGUpLHM9dGhpcy5pZGZXZWlnaHRzW25dO28rPXMsci5pc01hdGNoJiYoaSsrLGwrPXMqKDEtci5zY29yZSksci5pbmRpY2VzJiZ0LnB1c2goLi4uci5pbmRpY2VzKSl9aWYoMD09PWkpcmV0dXJue2lzTWF0Y2g6ITEsc2NvcmU6MX07Y29uc3Qgbj1vPjA/MS1sL286MCxyPXtpc01hdGNoOiEwLHNjb3JlOk1hdGgubWF4KC4wMDEsbil9O3JldHVybiB0aGlzLm9wdGlvbnMuaW5jbHVkZU1hdGNoZXMmJnQubGVuZ3RoJiYoci5pbmRpY2VzPW1lcmdlSW5kaWNlcyh0KSkscn19RnVzZS52ZXJzaW9uPSI3LjMuMCIsRnVzZS5jcmVhdGVJbmRleD1jcmVhdGVJbmRleCxGdXNlLnBhcnNlSW5kZXg9ZnVuY3Rpb24oZSx7Z2V0Rm46dD1WdC5nZXRGbixmaWVsZE5vcm1XZWlnaHQ6bD1WdC5maWVsZE5vcm1XZWlnaHR9PXt9KXtjb25zdHtrZXlzOm8scmVjb3JkczppfT1lLG49bmV3IEZ1c2VJbmRleCh7Z2V0Rm46dCxmaWVsZE5vcm1XZWlnaHQ6bH0pO3JldHVybiBuLnNldEtleXMobyksbi5zZXRJbmRleFJlY29yZHMoaSksbn0sRnVzZS5jb25maWc9VnQsRnVzZS5tYXRjaD1mdW5jdGlvbihlLHQsbCl7cmV0dXJuIGNyZWF0ZVNlYXJjaGVyKGUsey4uLlZ0LC4uLmx9KS5zZWFyY2hJbih0KX0sRnVzZS5wYXJzZVF1ZXJ5PXBhcnNlLHJlZ2lzdGVyKEV4dGVuZGVkU2VhcmNoKSxyZWdpc3RlcihUb2tlblNlYXJjaCksRnVzZS51c2U9ZnVuY3Rpb24oLi4uZSl7ZS5mb3JFYWNoKGU9PnJlZ2lzdGVyKGUpKX07Y29uc3QgVXQ9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9O2Z1bmN0aW9uIHNhbml0aXplKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7Ly50ZXN0KGUpfShlKT9lOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1smPD4iJ10vZyxlPT5VdFtlXSl9KGUpfWZ1bmN0aW9uIGhpZ2hsaWdodChlLHQsbCxvKXtmdW5jdGlvbiBnZW5lcmF0ZUhpZ2hsaWdodGVkVGV4dChlLGw9W10pe2U9ZXx8IiI7bGV0IG89IiIsaT0wO2wuZm9yRWFjaChsPT57aWYoMj09PWwubGVuZ3RoJiZsWzBdPT09bFsxXSlyZXR1cm47Y29uc3Qgbj1sWzFdKzEscj1uLWxbMF0+PXQubGVuZ3RoO28rPVtzYW5pdGl6ZShlLnN1YnN0cmluZyhpLGxbMF0pKSxyJiYiPG1hcms+IixzYW5pdGl6ZShlLnN1YnN0cmluZyhsWzBdLG4pKSxyJiYiPC9tYXJrPiJdLmZpbHRlcihCb29sZWFuKS5qb2luKCIiKSxpPW59KSxvKz1zYW5pdGl6ZShlLnN1YnN0cmluZyhpKSk7Y29uc3Qgbj1vLmluZGV4T2YoIjxtYXJrPiIpO3JldHVybi0xIT09biYmKG89ZnVuY3Rpb24oZSx0KXtsZXQgbD0iIixvPTAsaT0hMTtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7aWYoIj4iPT09ZVtuXSlpPSEwO2Vsc2UgaWYoIjwiPT09ZVtuXSl7aT0hMSxsPWVbbl0rbDtjb250aW51ZX1pZihpfHxvKyssIShvPD10KSl7bD0iLi4uIitsO2JyZWFrfWw9ZVtuXStsfXJldHVybiBsfShvLG8ubGVuZ3RoLW4pKSxvfWlmKGUubWF0Y2hlcz8ubGVuZ3RoKWZvcihjb25zdCB0IG9mIGUubWF0Y2hlcylpZighKGwmJnQua2V5IT09bHx8bz8uaW5jbHVkZXModC5rZXkpKSlyZXR1cm4gZ2VuZXJhdGVIaWdobGlnaHRlZFRleHQodC52YWx1ZSx0LmluZGljZXMpfWNvbnN0IFd0PXtzbG90czp7cm9vdDoiZmxleCBmbGV4LWNvbCBtaW4taC0wIG1pbi13LTAgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiLGlucHV0OiIiLGNsb3NlOiIiLGJhY2s6InAtMCIsY29udGVudDoicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIGZsZXggZmxleC1jb2wiLGZvb3RlcjoicC0xIix2aWV3cG9ydDoicmVsYXRpdmUgc2Nyb2xsLXB5LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSBmb2N1czpvdXRsaW5lLW5vbmUiLGdyb3VwOiJwLTEgaXNvbGF0ZSIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLGxhYmVsOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLGl0ZW06Imdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IixpdGVtTGVhZGluZ0ljb246InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiIixpdGVtTGVhZGluZ0NoaXA6InNocmluay0wIixpdGVtTGVhZGluZ0NoaXBTaXplOiIiLGl0ZW1UcmFpbGluZzoibXMtYXV0byBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNocmluay0wIHRleHQtZGltbWVkIGhpZGRlbiBncm91cC1kYXRhLWhpZ2hsaWdodGVkOmlubGluZS1mbGV4IixpdGVtVHJhaWxpbmdLYmRzOiJoaWRkZW4gbGc6aW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNocmluay0wIixpdGVtVHJhaWxpbmdLYmRzU2l6ZToiIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgdGV4dC1zdGFydCBtaW4tdy0wIixpdGVtTGFiZWw6InRydW5jYXRlIHNwYWNlLXgtMSB0ZXh0LWRpbW1lZCIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIixpdGVtTGFiZWxCYXNlOiJ0ZXh0LWhpZ2hsaWdodGVkIFsmPm1hcmtdOnRleHQtaW52ZXJ0ZWQgWyY+bWFya106YmctcHJpbWFyeSIsaXRlbUxhYmVsUHJlZml4OiJ0ZXh0LWRlZmF1bHQiLGl0ZW1MYWJlbFN1ZmZpeDoidGV4dC1kaW1tZWQgWyY+bWFya106dGV4dC1pbnZlcnRlZCBbJj5tYXJrXTpiZy1wcmltYXJ5In0sdmFyaWFudHM6e3ZpcnR1YWxpemU6e3RydWU6e3ZpZXdwb3J0OiJwLTEgaXNvbGF0ZSJ9LGZhbHNlOnt2aWV3cG9ydDoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX0sc2l6ZTp7eHM6e2lucHV0OiJbJj5pbnB1dF06aC0xMCIsZW1wdHk6InB5LTMgdGV4dC14cyIsbGFiZWw6InAtMSB0ZXh0LVsxMHB4XS8zIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZzoiZ2FwLTEiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uOiJzaXplLTQiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJzbSJ9LHNtOntpbnB1dDoiWyY+aW5wdXRdOmgtMTEiLGVtcHR5OiJweS00IHRleHQteHMiLGxhYmVsOiJwLTEuNSB0ZXh0LVsxMHB4XS8zIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZzoiZ2FwLTEuNSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNCIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6InNtIn0sbWQ6e2lucHV0OiJbJj5pbnB1dF06aC0xMiIsZW1wdHk6InB5LTYgdGV4dC1zbSIsbGFiZWw6InAtMS41IHRleHQteHMgZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC1zbSBnYXAtMS41IixpdGVtTGVhZGluZ0ljb246InNpemUtNSIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS01IixpdGVtTGVhZGluZ0NoaXBTaXplOiJtZCIsaXRlbVRyYWlsaW5nOiJnYXAtMS41IixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToibWQifSxsZzp7aW5wdXQ6IlsmPmlucHV0XTpoLTEzIixlbXB0eToicHktNyB0ZXh0LXNtIixsYWJlbDoicC0yIHRleHQteHMgZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LXNtIGdhcC0yIixpdGVtTGVhZGluZ0ljb246InNpemUtNSIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS01IixpdGVtTGVhZGluZ0NoaXBTaXplOiJtZCIsaXRlbVRyYWlsaW5nOiJnYXAtMiIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNSIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6Im1kIn0seGw6e2lucHV0OiJbJj5pbnB1dF06aC0xNCIsZW1wdHk6InB5LTggdGV4dC1iYXNlIixsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LWJhc2UgZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS02IixpdGVtTGVhZGluZ0F2YXRhclNpemU6InhzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNiIsaXRlbUxlYWRpbmdDaGlwU2l6ZToibGciLGl0ZW1UcmFpbGluZzoiZ2FwLTIiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uOiJzaXplLTYiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJsZyJ9fSxhY3RpdmU6e3RydWU6e2l0ZW06InRleHQtaGlnaGxpZ2h0ZWQgYmVmb3JlOmJnLWVsZXZhdGVkIixpdGVtTGVhZGluZ0ljb246InRleHQtZGVmYXVsdCJ9LGZhbHNlOntpdGVtOlsidGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWdyb3VwLWRhdGEtZGlzYWJsZWQ6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXX19LGxvYWRpbmc6e3RydWU6e2l0ZW1MZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIn19LEd0PU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNvbW1hbmRQYWxldHRlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczplLm1lcmdlTW9kZWxzKHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNlbGVjdGVkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjaGlsZHJlbkljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYmFjazp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGJhY2tJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlucHV0Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZ3JvdXBzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxmdXNlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sdmlydHVhbGl6ZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifSxkZXNjcmlwdGlvbktleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRlc2NyaXB0aW9uIn0scHJlc2VydmVHcm91cE9yZGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sc2VhcmNoRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxoaWdobGlnaHRPbkhvdmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2VsZWN0aW9uQmVoYXZpb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0se3NlYXJjaFRlcm06e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHNlYXJjaFRlcm1Nb2RpZmllcnM6e319KSxlbWl0czplLm1lcmdlTW9kZWxzKFsidXBkYXRlOm1vZGVsVmFsdWUiLCJoaWdobGlnaHQiLCJlbnRyeUZvY3VzIiwibGVhdmUiLCJ1cGRhdGU6b3BlbiJdLFsidXBkYXRlOnNlYXJjaFRlcm0iXSksc2V0dXAodCx7ZW1pdDpsfSl7Y29uc3Qgbz10LGk9bCxuPWUudXNlU2xvdHMoKSxnPWUudXNlTW9kZWwodCwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KSx7dDp5fT1yKCksaz1zKCksUz11KCJjb21tYW5kUGFsZXR0ZSIsbyksTj13KHgobywiYXMiLCJkaXNhYmxlZCIsIm11bHRpcGxlIiwibW9kZWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImhpZ2hsaWdodE9uSG92ZXIiLCJieSIpLGkpLEk9ZS50b1JlZigoKT0+ISFvLnZpcnR1YWxpemUmJnNlKCJib29sZWFuIj09dHlwZW9mIG8udmlydHVhbGl6ZT97fTpvLnZpcnR1YWxpemUse2VzdGltYXRlU2l6ZTpOZShhZS52YWx1ZSwibWQiLG8uZGVzY3JpcHRpb25LZXksISFuWyJpdGVtLWRlc2NyaXB0aW9uIl0pfSkpLFtWLEFdPWQoe3Byb3BzOntpdGVtOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sZ3JvdXA6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpbmRleDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9fX0pLHo9ZS5jb21wdXRlZCgoKT0+Zih7ZXh0ZW5kOmYoV3QpLC4uLmsudWk/LmNvbW1hbmRQYWxldHRlfHx7fX0pKHtzaXplOm8uc2l6ZSx2aXJ0dWFsaXplOiEhby52aXJ0dWFsaXplfSkpLFA9ZS5jb21wdXRlZCgoKT0+c2Uoe30sby5mdXNlLHtmdXNlT3B0aW9uczp7aWdub3JlTG9jYXRpb246ITAsdGhyZXNob2xkOi4xLGtleXM6W28ubGFiZWxLZXksInN1ZmZpeCJdfSxyZXN1bHRMaW1pdDoxMixtYXRjaEFsbFdoZW5TZWFyY2hFbXB0eTohMH0pKSxxPWUucmVmKFtdKSxGPWUuY29tcHV0ZWQoKCk9PnEudmFsdWVbcS52YWx1ZS5sZW5ndGgtMV0/LnBsYWNlaG9sZGVyfHxvLnBsYWNlaG9sZGVyfHx5KCJjb21tYW5kUGFsZXR0ZS5wbGFjZWhvbGRlciIpKSxRPWUuY29tcHV0ZWQoKCk9PnEudmFsdWU/Lmxlbmd0aD9bcS52YWx1ZVtxLnZhbHVlLmxlbmd0aC0xXV06by5ncm91cHMpLFg9ZS5jb21wdXRlZCgoKT0+US52YWx1ZT8uZmlsdGVyKGU9PiEhZS5pZCYmIWUuaWdub3JlRmlsdGVyKT8uZmxhdE1hcChlPT5lLml0ZW1zPy5tYXAodD0+KHsuLi50LGdyb3VwOmUuaWR9KSl8fFtdKXx8W10pLFk9TyhnLCgpPT5vLnNlYXJjaERlbGF5KSx7cmVzdWx0czpafT1mdW5jdGlvbih0LGwsbyl7Y29uc3QgY3JlYXRlRnVzZT0oKT0+e3ZhciB0LGk7cmV0dXJuIG5ldyBGdXNlKG51bGwhPT0odD1lLnRvVmFsdWUobCkpJiZ2b2lkIDAhPT10P3Q6W10sbnVsbD09PShpPWUudG9WYWx1ZShvKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuZnVzZU9wdGlvbnMpfSxpPWUucmVmKGNyZWF0ZUZ1c2UoKSk7cmV0dXJuIGUud2F0Y2goKCk9Pnt2YXIgdDtyZXR1cm4gbnVsbD09PSh0PWUudG9WYWx1ZShvKSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZnVzZU9wdGlvbnN9LCgpPT57aS52YWx1ZT1jcmVhdGVGdXNlKCl9LHtkZWVwOiEwfSksZS53YXRjaCgoKT0+ZS50b1ZhbHVlKGwpLGU9PntpLnZhbHVlLnNldENvbGxlY3Rpb24oZSl9LHtkZWVwOiEwfSkse2Z1c2U6aSxyZXN1bHRzOmUuY29tcHV0ZWQoKCk9Pntjb25zdCBuPWUudG9WYWx1ZShvKTtpZigobnVsbD09bj92b2lkIDA6bi5tYXRjaEFsbFdoZW5TZWFyY2hFbXB0eSkmJiFlLnRvVmFsdWUodCkpcmV0dXJuIGUudG9WYWx1ZShsKS5tYXAoKGUsdCk9Pih7aXRlbTplLHJlZkluZGV4OnR9KSk7Y29uc3Qgcj1udWxsPT1uP3ZvaWQgMDpuLnJlc3VsdExpbWl0O3JldHVybiBpLnZhbHVlLnNlYXJjaChlLnRvVmFsdWUodCkscj97bGltaXQ6cn06dm9pZCAwKX0pfX0oWSxYLFApLGVlPUUoWiwxNiwhMCk7ZnVuY3Rpb24gcHJvY2Vzc0dyb3VwSXRlbXMoZSx0KXtsZXQgbD10O3JldHVybiBlPy5wb3N0RmlsdGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0RmlsdGVyJiYobD1lLnBvc3RGaWx0ZXIoWS52YWx1ZSxsKSksey4uLmUsaXRlbXM6bC5zbGljZSgwLFAudmFsdWUucmVzdWx0TGltaXQpLm1hcChlPT4oey4uLmUsbGFiZWxIdG1sOmhpZ2hsaWdodChlLFkudmFsdWUsby5sYWJlbEtleSksc3VmZml4SHRtbDpoaWdobGlnaHQoZSxZLnZhbHVlLHZvaWQgMCxbby5sYWJlbEtleV0pfSkpfX1jb25zdCB0ZT1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1RLnZhbHVlLHQ9ZWUudmFsdWUucmVkdWNlKChlLHQpPT57Y29uc3R7aXRlbTpsLG1hdGNoZXM6b309dDtyZXR1cm4gbC5ncm91cD8oZVtsLmdyb3VwXXx8PVtdLGVbbC5ncm91cF0/LnB1c2goey4uLmwsbWF0Y2hlczpvfSksZSk6ZX0se30pO2lmKG8ucHJlc2VydmVHcm91cE9yZGVyKXtjb25zdCBsPVtdO2Zvcihjb25zdCBvIG9mIGV8fFtdKXtpZighby5pdGVtcz8ubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IGU9by5pZ25vcmVGaWx0ZXI/by5pdGVtczp0W28uaWRdO2lmKCFlPy5sZW5ndGgpY29udGludWU7Y29uc3QgaT1wcm9jZXNzR3JvdXBJdGVtcyhvLGUpO2kuaXRlbXM/Lmxlbmd0aCYmbC5wdXNoKGkpfXJldHVybiBsfWNvbnN0IGw9T2JqZWN0LmVudHJpZXModCkubWFwKChbdCxsXSk9Pntjb25zdCBvPWU/LmZpbmQoZT0+ZS5pZD09PXQpO2lmKCFvKXJldHVybjtjb25zdCBpPXByb2Nlc3NHcm91cEl0ZW1zKG8sbCk7cmV0dXJuIGkuaXRlbXM/Lmxlbmd0aD9pOnZvaWQgMH0pLmZpbHRlcihlPT4hIWUpO3JldHVybihlPy5tYXAoKGUsdCk9Pih7Li4uZSxpbmRleDp0fSkpPy5maWx0ZXIoZT0+ZS5pZ25vcmVGaWx0ZXImJmUuaXRlbXM/Lmxlbmd0aCk/Lm1hcChlPT4oey4uLnByb2Nlc3NHcm91cEl0ZW1zKGUsZS5pdGVtc3x8W10pLGluZGV4OmUuaW5kZXh9KSk/LmZpbHRlcihlPT5lLml0ZW1zPy5sZW5ndGgpfHxbXSkucmVkdWNlKChlLHQpPT4oZS5zcGxpY2UodC5pbmRleCwwLHQpLGUpLFsuLi5sXSl9KSxhZT1lLmNvbXB1dGVkKCgpPT50ZS52YWx1ZS5mbGF0TWFwKGU9PmUuaXRlbXN8fFtdKSksbGU9ZS51c2VUZW1wbGF0ZVJlZigicm9vdFJlZiIpO2Z1bmN0aW9uIG5hdmlnYXRlQmFjaygpe3EudmFsdWUubGVuZ3RoJiYocS52YWx1ZS5wb3AoKSxnLnZhbHVlPSIiLGxlLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9ZnVuY3Rpb24gb25CYWNrc3BhY2UoKXtnLnZhbHVlfHxuYXZpZ2F0ZUJhY2soKX1mdW5jdGlvbiBvblNlbGVjdChlLHQpe3QuY2hpbGRyZW4/Lmxlbmd0aD8oZS5wcmV2ZW50RGVmYXVsdCgpLGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4/Lmxlbmd0aCYmKHEudmFsdWUucHVzaCh7aWQ6YGhpc3RvcnktJHtxLnZhbHVlLmxlbmd0aH1gLGxhYmVsOmUubGFiZWwsc2xvdDplLnNsb3QscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlcixpdGVtczplLmNoaWxkcmVufSksZy52YWx1ZT0iIixsZS52YWx1ZT8uaGlnaGxpZ2h0Rmlyc3RJdGVtKCkpfSh0KSk6dC5vblNlbGVjdD8uKGUpfXJldHVybihsLHIscyx1KT0+e3IoIlx4M2MhLS1bLS1ceDNlIikscihqZShlLnVucmVmKFYpLG51bGwse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7aXRlbTppLGluZGV4OnIsZ3JvdXA6c30sdSxkLGYpPT57aWYoIXUpcmV0dXJuW2UuY3JlYXRlVk5vZGUoUixlLm1lcmdlUHJvcHMoZS51bnJlZihqKShpKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCh7YWN0aXZlOnUsLi4uZH0pPT5bZS5jcmVhdGVWTm9kZShlLnVucmVmKEllKSx7dmFsdWU6by52YWx1ZUtleT9lLnVucmVmKFUpKGksby52YWx1ZUtleSk6ZS51bnJlZihCKShpLFsibWF0Y2hlcyIsImdyb3VwIiwib25TZWxlY3QiLCJsYWJlbEh0bWwiLCJzdWZmaXhIdG1sIiwiY2hpbGRyZW4iXSksZGlzYWJsZWQ6aS5kaXNhYmxlZCwiYXMtY2hpbGQiOiIiLG9uU2VsZWN0OmU9Pm9uU2VsZWN0KGUsaSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoVyxlLm1lcmdlUHJvcHMoZCx7ImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOnoudmFsdWUuaXRlbSh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW0saS51aT8uaXRlbSxpLmNsYXNzXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3R8fHM/LnNsb3R8fCJpdGVtIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGVhZGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kubG9hZGluZz8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleTowLG5hbWU6dC5sb2FkaW5nSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sbG9hZGluZzohMH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuaWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleToxLG5hbWU6aS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5hdmF0YXI/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhHLGUubWVyZ2VQcm9wcyh7a2V5OjIsc2l6ZTppLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0saS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmkuY2hpcD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEosZS5tZXJnZVByb3BzKHtrZXk6MyxzaXplOmkudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fHoudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGkuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0NoaXAsaS51aT8uaXRlbUxlYWRpbmdDaGlwXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGkucHJlZml4fHxpLmxhYmVsSHRtbHx8ZS51bnJlZihVKShpLG8ubGFiZWxLZXkpfHxpLnN1ZmZpeEh0bWx8fGkuc3VmZml4fHxuW2kuc2xvdD9gJHtpLnNsb3R9LWxhYmVsYDpzPy5zbG90P2Ake3Muc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fGUudW5yZWYoVSkoaSxvLmRlc2NyaXB0aW9uS2V5KXx8bltpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6cz8uc2xvdD9gJHtzLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOnoudmFsdWUuaXRlbVdyYXBwZXIoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtV3JhcHBlcixpLnVpPy5pdGVtV3JhcHBlcl19KX0sW2UuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbCxpLnVpPy5pdGVtTGFiZWxdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWxhYmVsYDpzPy5zbG90P2Ake3Muc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltpLnByZWZpeD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFByZWZpeCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxQcmVmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxQcmVmaXgsaS51aT8uaXRlbUxhYmVsUHJlZml4XX0pfSxlLnRvRGlzcGxheVN0cmluZyhpLnByZWZpeCksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxpLmxhYmVsSHRtbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbEJhc2UiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbEJhc2UsaS51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOnV8fGkuYWN0aXZlfSksaW5uZXJIVE1MOmkubGFiZWxIdG1sfSxudWxsLDEwLFsiaW5uZXJIVE1MIl0pKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjIsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbEJhc2UiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbEJhc2UsaS51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KSksMykpLGkuc3VmZml4SHRtbD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjMsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFN1ZmZpeCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KSxpbm5lckhUTUw6aS5zdWZmaXhIdG1sfSxudWxsLDEwLFsiaW5uZXJIVE1MIl0pKTppLnN1ZmZpeD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjQsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFN1ZmZpeCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sZS50b0Rpc3BsYXlTdHJpbmcoaS5zdWZmaXgpLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0sMiksZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpfHxuW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOnoudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbURlc2NyaXB0aW9uLGkudWk/Lml0ZW1EZXNjcmlwdGlvbl19KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6cz8uc2xvdD9gJHtzLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGUuY3JlYXRlVk5vZGUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZyxpLnVpPy5pdGVtVHJhaWxpbmddfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tdHJhaWxpbmdgOnM/LnNsb3Q/YCR7cy5zbG90fS10cmFpbGluZ2A6Iml0ZW0tdHJhaWxpbmciLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kuY2hpbGRyZW4mJmkuY2hpbGRyZW4ubGVuZ3RoPjA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MCxuYW1lOnQuY2hpbGRyZW5JY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNoZXZyb25SaWdodCwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkua2Jkcz8ubGVuZ3RoPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nS2JkcyIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nS2JkcyxpLnVpPy5pdGVtVHJhaWxpbmdLYmRzXX0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoaS5rYmRzLCh0LGwpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEJlLGUubWVyZ2VQcm9wcyh7a2V5Omwsc2l6ZTppLnVpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nS2Jkc1NpemV8fHoudmFsdWUuaXRlbVRyYWlsaW5nS2Jkc1NpemUoKX0se3JlZl9mb3I6ITB9LCJzdHJpbmciPT10eXBlb2YgdD97dmFsdWU6dH06dCksbnVsbCwxNixbInNpemUiXSkpKSwxMjgpKV0sMikpOnM/LmhpZ2hsaWdodGVkSWNvbj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleToyLG5hbWU6cy5oaWdobGlnaHRlZEljb24sImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb24saS51aT8uaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGkuY2hpbGRyZW4/Lmxlbmd0aD9lLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFZlKSx7a2V5OjAsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShNLHtuYW1lOnQuc2VsZWN0ZWRJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCkpXSwyKV0pXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJ2YWx1ZSIsImRpc2FibGVkIiwib25TZWxlY3QiXSldKSxfOjJ9LDEwNDApXTt1KGplKFIsZS5tZXJnZVByb3BzKGUudW5yZWYoaikoaSkse2N1c3RvbToiIn0pLHtkZWZhdWx0OmUud2l0aEN0eCgoe2FjdGl2ZTp1LC4uLmR9LGYsZyx5KT0+e2lmKCFmKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoSWUpLHt2YWx1ZTpvLnZhbHVlS2V5P2UudW5yZWYoVSkoaSxvLnZhbHVlS2V5KTplLnVucmVmKEIpKGksWyJtYXRjaGVzIiwiZ3JvdXAiLCJvblNlbGVjdCIsImxhYmVsSHRtbCIsInN1ZmZpeEh0bWwiLCJjaGlsZHJlbiJdKSxkaXNhYmxlZDppLmRpc2FibGVkLCJhcy1jaGlsZCI6IiIsb25TZWxlY3Q6ZT0+b25TZWxlY3QoZSxpKX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShXLGUubWVyZ2VQcm9wcyhkLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ei52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdHx8cz8uc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sZWFkaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjAsbmFtZTp0LmxvYWRpbmdJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxsb2FkaW5nOiEwfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjEsbmFtZTppLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHx6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxpLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXIsaS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soSixlLm1lcmdlUHJvcHMoe2tleTozLHNpemU6aS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0saS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcCxpLnVpPy5pdGVtTGVhZGluZ0NoaXBdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5wcmVmaXh8fGkubGFiZWxIdG1sfHxlLnVucmVmKFUpKGksby5sYWJlbEtleSl8fGkuc3VmZml4SHRtbHx8aS5zdWZmaXh8fG5baS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXXx8ZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpfHxuW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6ei52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1XcmFwcGVyLGkudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsLGkudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kucHJlZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsUHJlZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFByZWZpeCxpLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSl9LGUudG9EaXNwbGF5U3RyaW5nKGkucHJlZml4KSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGkubGFiZWxIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KSxpbm5lckhUTUw6aS5sYWJlbEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKShpLG8ubGFiZWxLZXkpKSwzKSksaS5zdWZmaXhIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MywiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pLGlubmVySFRNTDppLnN1ZmZpeEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOmkuc3VmZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6NCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxlLnRvRGlzcGxheVN0cmluZyhpLnN1ZmZpeCksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtRGVzY3JpcHRpb24saS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nLGkudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS10cmFpbGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5jaGlsZHJlbiYmaS5jaGlsZHJlbi5sZW5ndGg+MD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleTowLG5hbWU6dC5jaGlsZHJlbkljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hldnJvblJpZ2h0LCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5rYmRzPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdLYmRzIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzLGkudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChpLmtiZHMsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soQmUsZS5tZXJnZVByb3BzKHtrZXk6bCxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ei52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiB0P3t2YWx1ZTp0fTp0KSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6cz8uaGlnaGxpZ2h0ZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjIsbmFtZTpzLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5jaGlsZHJlbj8ubGVuZ3RoP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKE0se25hbWU6dC5zZWxlY3RlZEljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KSldLDIpXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbInZhbHVlIiwiZGlzYWJsZWQiLCJvblNlbGVjdCJdKV07ZihqZShlLnVucmVmKEllKSx7dmFsdWU6by52YWx1ZUtleT9lLnVucmVmKFUpKGksby52YWx1ZUtleSk6ZS51bnJlZihCKShpLFsibWF0Y2hlcyIsImdyb3VwIiwib25TZWxlY3QiLCJsYWJlbEh0bWwiLCJzdWZmaXhIdG1sIiwiY2hpbGRyZW4iXSksZGlzYWJsZWQ6aS5kaXNhYmxlZCwiYXMtY2hpbGQiOiIiLG9uU2VsZWN0OmU9Pm9uU2VsZWN0KGUsaSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoZixnLHksYik9PntpZighZylyZXR1cm5bZS5jcmVhdGVWTm9kZShXLGUubWVyZ2VQcm9wcyhkLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ei52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdHx8cz8uc2xvdHx8Iml0ZW0iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sZWFkaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tbGVhZGluZ2A6Iml0ZW0tbGVhZGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5sb2FkaW5nPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjAsbmFtZTp0LmxvYWRpbmdJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxsb2FkaW5nOiEwfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5pY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjEsbmFtZTppLmljb24sImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0ljb24saS51aT8uaXRlbUxlYWRpbmdJY29uXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmF2YXRhcj8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKEcsZS5tZXJnZVByb3BzKHtrZXk6MixzaXplOmkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHx6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxpLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdBdmF0YXIsaS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6aS5jaGlwPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soSixlLm1lcmdlUHJvcHMoe2tleTozLHNpemU6aS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0saS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcCxpLnVpPy5pdGVtTGVhZGluZ0NoaXBdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5wcmVmaXh8fGkubGFiZWxIdG1sfHxlLnVucmVmKFUpKGksby5sYWJlbEtleSl8fGkuc3VmZml4SHRtbHx8aS5zdWZmaXh8fG5baS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiXXx8ZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpfHxuW2kuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6ei52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1XcmFwcGVyLGkudWk/Lml0ZW1XcmFwcGVyXX0pfSxbZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsLGkudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2kucHJlZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsUHJlZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFByZWZpeCxpLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSl9LGUudG9EaXNwbGF5U3RyaW5nKGkucHJlZml4KSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLGkubGFiZWxIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KSxpbm5lckhUTUw6aS5sYWJlbEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbUxhYmVsQmFzZSIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWxCYXNlKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsQmFzZSxpLnVpPy5pdGVtTGFiZWxCYXNlXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKShpLG8ubGFiZWxLZXkpKSwzKSksaS5zdWZmaXhIdG1sPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MywiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pLGlubmVySFRNTDppLnN1ZmZpeEh0bWx9LG51bGwsMTAsWyJpbm5lckhUTUwiXSkpOmkuc3VmZml4PyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6NCwiZGF0YS1zbG90IjoiaXRlbUxhYmVsU3VmZml4IixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbFN1ZmZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFN1ZmZpeCxpLnVpPy5pdGVtTGFiZWxTdWZmaXhdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxlLnRvRGlzcGxheVN0cmluZyhpLnN1ZmZpeCksMykpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSwyKSxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6ei52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtRGVzY3JpcHRpb24saS51aT8uaXRlbURlc2NyaXB0aW9uXX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWRlc2NyaXB0aW9uYDpzPy5zbG90P2Ake3Muc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVRleHRWTm9kZShlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jcmVhdGVWTm9kZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nLGkudWk/Lml0ZW1UcmFpbGluZ119KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS10cmFpbGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5jaGlsZHJlbiYmaS5jaGlsZHJlbi5sZW5ndGg+MD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKE0se2tleTowLG5hbWU6dC5jaGlsZHJlbkljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hldnJvblJpZ2h0LCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aS5rYmRzPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdLYmRzIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzLGkudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSl9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChpLmtiZHMsKHQsbCk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soQmUsZS5tZXJnZVByb3BzKHtrZXk6bCxzaXplOmkudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ei52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sInN0cmluZyI9PXR5cGVvZiB0P3t2YWx1ZTp0fTp0KSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6cz8uaGlnaGxpZ2h0ZWRJY29uPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjIsbmFtZTpzLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb25dfSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksaS5jaGlsZHJlbj8ubGVuZ3RoP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoVmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKE0se25hbWU6dC5zZWxlY3RlZEljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2hlY2ssImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KSldLDIpXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV07ZyhqZShXLGUubWVyZ2VQcm9wcyhkLHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ei52YWx1ZS5pdGVtKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbSxpLnVpPy5pdGVtLGkuY2xhc3NdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSkse2RlZmF1bHQ6ZS53aXRoQ3R4KChkLGYsZyx5KT0+e2lmKCFmKXJldHVybltlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90fHxzPy5zbG90fHwiaXRlbSIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LWxlYWRpbmdgOnM/LnNsb3Q/YCR7cy5zbG90fS1sZWFkaW5nYDoiaXRlbS1sZWFkaW5nIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltpLmxvYWRpbmc/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MCxuYW1lOnQubG9hZGluZ0ljb258fGUudW5yZWYoaykudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nSWNvbixpLnVpPy5pdGVtTGVhZGluZ0ljb25dLGxvYWRpbmc6ITB9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MSxuYW1lOmkuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nSWNvbixpLnVpPy5pdGVtTGVhZGluZ0ljb25dLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmkuYXZhdGFyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soRyxlLm1lcmdlUHJvcHMoe2tleToyLHNpemU6aS51aT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fHoudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LGkuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0F2YXRhcixpLnVpPy5pdGVtTGVhZGluZ0F2YXRhcl0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTppLmNoaXA/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhKLGUubWVyZ2VQcm9wcyh7a2V5OjMsc2l6ZTppLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxlLnVucmVmKFMpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHx6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSxpLmNoaXAseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0NoaXAiLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdDaGlwKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwLGkudWk/Lml0ZW1MZWFkaW5nQ2hpcF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxpLnByZWZpeHx8aS5sYWJlbEh0bWx8fGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KXx8aS5zdWZmaXhIdG1sfHxpLnN1ZmZpeHx8bltpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6cz8uc2xvdD9gJHtzLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCJdfHxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczp6LnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVdyYXBwZXIsaS51aT8uaXRlbVdyYXBwZXJdfSl9LFtlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1MYWJlbCIsY2xhc3M6ei52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWwsaS51aT8uaXRlbUxhYmVsXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cyxpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6cz8uc2xvdD9gJHtzLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT5baS5wcmVmaXg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxQcmVmaXgiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsUHJlZml4KHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsUHJlZml4LGkudWk/Lml0ZW1MYWJlbFByZWZpeF19KX0sZS50b0Rpc3BsYXlTdHJpbmcoaS5wcmVmaXgpLDMpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksaS5sYWJlbEh0bWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pLGlubmVySFRNTDppLmxhYmVsSHRtbH0sbnVsbCwxMCxbImlubmVySFRNTCJdKSk6KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczp6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSxlLnRvRGlzcGxheVN0cmluZyhlLnVucmVmKFUpKGksby5sYWJlbEtleSkpLDMpKSxpLnN1ZmZpeEh0bWw/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTozLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsU3VmZml4KHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsU3VmZml4LGkudWk/Lml0ZW1MYWJlbFN1ZmZpeF0sYWN0aXZlOnV8fGkuYWN0aXZlfSksaW5uZXJIVE1MOmkuc3VmZml4SHRtbH0sbnVsbCwxMCxbImlubmVySFRNTCJdKSk6aS5zdWZmaXg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygic3BhbiIse2tleTo0LCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOnoudmFsdWUuaXRlbUxhYmVsU3VmZml4KHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxhYmVsU3VmZml4LGkudWk/Lml0ZW1MYWJlbFN1ZmZpeF0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LGUudG9EaXNwbGF5U3RyaW5nKGkuc3VmZml4KSwzKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldLDIpLGUudW5yZWYoVSkoaSxvLmRlc2NyaXB0aW9uS2V5KXx8bltpLnNsb3Q/YCR7aS5zbG90fS1kZXNjcmlwdGlvbmA6cz8uc2xvdD9gJHtzLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczp6LnZhbHVlLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1EZXNjcmlwdGlvbixpLnVpPy5pdGVtRGVzY3JpcHRpb25dfSl9LFtlLnJlbmRlclNsb3QobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkoaSxvLmRlc2NyaXB0aW9uS2V5KSksMSldKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZyIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmcoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmcsaS51aT8uaXRlbVRyYWlsaW5nXX0pfSxbZS5yZW5kZXJTbG90KGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LXRyYWlsaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PltpLmNoaWxkcmVuJiZpLmNoaWxkcmVuLmxlbmd0aD4wPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soTSx7a2V5OjAsbmFtZTp0LmNoaWxkcmVuSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGV2cm9uUmlnaHQsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTppLmtiZHM/Lmxlbmd0aD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0tiZHMiLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nS2Jkcyh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0tiZHMsaS51aT8uaXRlbVRyYWlsaW5nS2Jkc119KX0sWyhlLm9wZW5CbG9jayghMCksZS5jcmVhdGVCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGkua2JkcywodCxsKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhCZSxlLm1lcmdlUHJvcHMoe2tleTpsLHNpemU6aS51aT8uaXRlbVRyYWlsaW5nS2Jkc1NpemV8fGUudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHx6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIHQ/e3ZhbHVlOnR9OnQpLG51bGwsMTYsWyJzaXplIl0pKSksMTI4KSldLDIpKTpzPy5oaWdobGlnaHRlZEljb24/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhNLHtrZXk6MixuYW1lOnMuaGlnaGxpZ2h0ZWRJY29uLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uLGkudWk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbl19KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxpLmNoaWxkcmVuPy5sZW5ndGg/ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihWZSkse2tleTowLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoTSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpKV0sMildKV07SGUobC4kc2xvdHMsaS5zbG90fHxzPy5zbG90fHwiaXRlbSIse2l0ZW06aSxpbmRleDpyLHVpOnoudmFsdWV9LCgpPT57SGUobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGVhZGluZ2A6cz8uc2xvdD9gJHtzLnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+e2kubG9hZGluZz9mKGplKE0se25hbWU6dC5sb2FkaW5nSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sbG9hZGluZzohMH0pfSxudWxsLGcseSkpOmkuaWNvbj9mKGplKE0se25hbWU6aS5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbUxlYWRpbmdJY29uLGkudWk/Lml0ZW1MZWFkaW5nSWNvbl0sYWN0aXZlOnV8fGkuYWN0aXZlfSl9LG51bGwsZyx5KSk6aS5hdmF0YXI/ZihqZShHLGUubWVyZ2VQcm9wcyh7c2l6ZTppLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0saS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6ei52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQXZhdGFyLGkudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6dXx8aS5hY3RpdmV9KX0pLG51bGwsZyx5KSk6aS5jaGlwP2YoamUoSixlLm1lcmdlUHJvcHMoe3NpemU6aS51aT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ZS51bnJlZihTKT8uaXRlbUxlYWRpbmdDaGlwU2l6ZXx8ei52YWx1ZS5pdGVtTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiIsc3RhbmRhbG9uZToiIn0saS5jaGlwLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdDaGlwIixjbGFzczp6LnZhbHVlLml0ZW1MZWFkaW5nQ2hpcCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MZWFkaW5nQ2hpcCxpLnVpPy5pdGVtTGVhZGluZ0NoaXBdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pfSksbnVsbCxnLHkpKTpmKCJceDNjIS0tLS1ceDNlIil9LGYsZyx5KSxpLnByZWZpeHx8aS5sYWJlbEh0bWx8fGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KXx8aS5zdWZmaXhIdG1sfHxpLnN1ZmZpeHx8bltpLnNsb3Q/YCR7aS5zbG90fS1sYWJlbGA6cz8uc2xvdD9gJHtzLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCJdfHxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtV3JhcHBlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1XcmFwcGVyLGkudWk/Lml0ZW1XcmFwcGVyXX0pKX0iJHt5fT48c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbCIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtTGFiZWwoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWwsaS51aT8uaXRlbUxhYmVsXSxhY3RpdmU6dXx8aS5hY3RpdmV9KSl9IiR7eX0+YCksSGUobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tbGFiZWxgOnM/LnNsb3Q/YCR7cy5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+e2kucHJlZml4P2YoYDxzcGFuIGRhdGEtc2xvdD0iaXRlbUxhYmVsUHJlZml4IiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1MYWJlbFByZWZpeCxpLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSkpfSIke3l9PiR7UWUoaS5wcmVmaXgpfTwvc3Bhbj5gKTpmKCJceDNjIS0tLS1ceDNlIiksaS5sYWJlbEh0bWw/ZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWxCYXNlIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pKX0iJHt5fT4ke2kubGFiZWxIdG1sPz8iIn08L3NwYW4+YCk6ZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtTGFiZWxCYXNlIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1MYWJlbEJhc2Uoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxCYXNlLGkudWk/Lml0ZW1MYWJlbEJhc2VdLGFjdGl2ZTp1fHxpLmFjdGl2ZX0pKX0iJHt5fT4ke1FlKGUudW5yZWYoVSkoaSxvLmxhYmVsS2V5KSl9PC9zcGFuPmApLGkuc3VmZml4SHRtbD9mKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbFN1ZmZpeCIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KSl9IiR7eX0+JHtpLnN1ZmZpeEh0bWw/PyIifTwvc3Bhbj5gKTppLnN1ZmZpeD9mKGA8c3BhbiBkYXRhLXNsb3Q9Iml0ZW1MYWJlbFN1ZmZpeCIgY2xhc3M9IiR7V2Uoei52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtTGFiZWxTdWZmaXgsaS51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6dXx8aS5hY3RpdmV9KSl9IiR7eX0+JHtRZShpLnN1ZmZpeCl9PC9zcGFuPmApOmYoIlx4M2MhLS0tLVx4M2UiKX0sZixnLHkpLGYoIjwvc3Bhbj4iKSxlLnVucmVmKFUpKGksby5kZXNjcmlwdGlvbktleSl8fG5baS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8oZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtRGVzY3JpcHRpb24iIGNsYXNzPSIke1dlKHoudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbURlc2NyaXB0aW9uLGkudWk/Lml0ZW1EZXNjcmlwdGlvbl19KSl9IiR7eX0+YCksSGUobC4kc2xvdHMsaS5zbG90P2Ake2kuc2xvdH0tZGVzY3JpcHRpb25gOnM/LnNsb3Q/YCR7cy5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmksaW5kZXg6cix1aTp6LnZhbHVlfSwoKT0+e2YoYCR7UWUoZS51bnJlZihVKShpLG8uZGVzY3JpcHRpb25LZXkpKX1gKX0sZixnLHkpLGYoIjwvc3Bhbj4iKSk6ZigiXHgzYyEtLS0tXHgzZSIpLGYoIjwvc3Bhbj4iKSk6ZigiXHgzYyEtLS0tXHgzZSIpLGYoYDxzcGFuIGRhdGEtc2xvdD0iaXRlbVRyYWlsaW5nIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1UcmFpbGluZyh7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZyxpLnVpPy5pdGVtVHJhaWxpbmddfSkpfSIke3l9PmApLEhlKGwuJHNsb3RzLGkuc2xvdD9gJHtpLnNsb3R9LXRyYWlsaW5nYDpzPy5zbG90P2Ake3Muc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTppLGluZGV4OnIsdWk6ei52YWx1ZX0sKCk9PntpLmNoaWxkcmVuJiZpLmNoaWxkcmVuLmxlbmd0aD4wP2YoamUoTSx7bmFtZTp0LmNoaWxkcmVuSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGV2cm9uUmlnaHQsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOnoudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0ljb24saS51aT8uaXRlbVRyYWlsaW5nSWNvbl19KX0sbnVsbCxnLHkpKTppLmtiZHM/Lmxlbmd0aD8oZihgPHNwYW4gZGF0YS1zbG90PSJpdGVtVHJhaWxpbmdLYmRzIiBjbGFzcz0iJHtXZSh6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltlLnVucmVmKFMpPy5pdGVtVHJhaWxpbmdLYmRzLGkudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSkpfSIke3l9Plx4M2MhLS1bLS1ceDNlYCksR2UoaS5rYmRzLCh0LGwpPT57ZihqZShCZSxlLm1lcmdlUHJvcHMoe2tleTpsLHNpemU6aS51aT8uaXRlbVRyYWlsaW5nS2Jkc1NpemV8fGUudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHx6LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHNTaXplKCl9LHtyZWZfZm9yOiEwfSwic3RyaW5nIj09dHlwZW9mIHQ/e3ZhbHVlOnR9OnQpLG51bGwsZyx5KSl9KSxmKCJceDNjIS0tXS0tXHgzZTwvc3Bhbj4iKSk6ZihzPy5oaWdobGlnaHRlZEljb24/amUoTSx7bmFtZTpzLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczp6LnZhbHVlLml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbih7Y2xhc3M6W2UudW5yZWYoUyk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb25dfSl9LG51bGwsZyx5KToiXHgzYyEtLS0tXHgzZSIpfSxmLGcseSksaS5jaGlsZHJlbj8ubGVuZ3RoP2YoIlx4M2MhLS0tLVx4M2UiKTpmKGplKGUudW5yZWYoVmUpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKGwsbyxuLHIpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoTSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldO28oamUoTSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6ei52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZS51bnJlZihTKT8uaXRlbVRyYWlsaW5nSWNvbixpLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pfSxudWxsLG4scikpfSksXzoyfSxnLHkpKSxmKCI8L3NwYW4+Iil9LGYsZyx5KX0pLF86Mn0seSxiKSl9KSxfOjJ9LGcseSkpfSksXzoyfSxkLGYpKX0pLF86M30scykpLHIoamUoZS51bnJlZihQZSksZS5tZXJnZVByb3BzKHsuLi5lLnVucmVmKE4pLC4uLmwuJGF0dHJzfSx7cmVmX2tleToicm9vdFJlZiIscmVmOmxlLCJzZWxlY3Rpb24tYmVoYXZpb3IiOnQuc2VsZWN0aW9uQmVoYXZpb3IsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnoudmFsdWUucm9vdCh7Y2xhc3M6W2UudW5yZWYoUyk/LnJvb3Qsby5jbGFzc119KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgocixzLHUsZCk9PntpZighcylyZXR1cm5bdC5pbnB1dD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoRGUpLHtrZXk6MCxtb2RlbFZhbHVlOmcudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmcudmFsdWU9ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKEZlLGUubWVyZ2VQcm9wcyh7dmFyaWFudDoibm9uZSIsc2l6ZTp0LnNpemV9LCJvYmplY3QiPT10eXBlb2Ygby5pbnB1dD9vLmlucHV0Ont9LHtwbGFjZWhvbGRlcjpGLnZhbHVlLGF1dG9mb2N1czp0LmF1dG9mb2N1cyxsb2FkaW5nOnQubG9hZGluZywibG9hZGluZy1pY29uIjp0LmxvYWRpbmdJY29uLCJ0cmFpbGluZy1pY29uIjp0LnRyYWlsaW5nSWNvbixpY29uOnQuaWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5zZWFyY2gsImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczp6LnZhbHVlLmlucHV0KHtjbGFzczplLnVucmVmKFMpPy5pbnB1dH0pLG9uS2V5ZG93bjplLndpdGhLZXlzKG9uQmFja3NwYWNlLFsiYmFja3NwYWNlIl0pfSksZS5jcmVhdGVTbG90cyh7XzoyfSxbcS52YWx1ZT8ubGVuZ3RoJiYodC5iYWNrfHxuLmJhY2spP3tuYW1lOiJsZWFkaW5nIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImJhY2siLHt1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVk5vZGUoYixlLm1lcmdlUHJvcHMoe3NpemU6dC5zaXplLGljb246dC5iYWNrSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5hcnJvd0xlZnQsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjplLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5iYWNrIil9LCJvYmplY3QiPT10eXBlb2YgdC5iYWNrP3QuYmFjazp7fSx7ImRhdGEtc2xvdCI6ImJhY2siLGNsYXNzOnoudmFsdWUuYmFjayh7Y2xhc3M6ZS51bnJlZihTKT8uYmFja30pLG9uQ2xpY2s6bmF2aWdhdGVCYWNrfSksbnVsbCwxNixbInNpemUiLCJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pXSldKSxrZXk6IjAifTp2b2lkIDAsdC5jbG9zZXx8bi5jbG9zZT97bmFtZToidHJhaWxpbmciLGZuOmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdChsLiRzbG90cywiY2xvc2UiLHt1aTp6LnZhbHVlfSwoKT0+W3QuY2xvc2U/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhiLGUubWVyZ2VQcm9wcyh7a2V5OjAsc2l6ZTp0LnNpemUsaWNvbjp0LmNsb3NlSWNvbnx8ZS51bnJlZihrKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjplLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5jbG9zZSIpfSwib2JqZWN0Ij09dHlwZW9mIHQuY2xvc2U/dC5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczp6LnZhbHVlLmNsb3NlKHtjbGFzczplLnVucmVmKFMpPy5jbG9zZX0pLG9uQ2xpY2s6ZT0+aSgidXBkYXRlOm9wZW4iLCExKX0pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXSksa2V5OiIxIn06dm9pZCAwXSksMTA0MCxbInNpemUiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImxvYWRpbmciLCJsb2FkaW5nLWljb24iLCJ0cmFpbGluZy1pY29uIiwiaWNvbiIsImNsYXNzIl0pXSksXzozfSw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQWUpLHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6ei52YWx1ZS5jb250ZW50KHtjbGFzczplLnVucmVmKFMpPy5jb250ZW50fSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W3RlLnZhbHVlPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnoudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoUyk/LnZpZXdwb3J0fSl9LFt0LnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSxlLm1lcmdlUHJvcHMoe2tleTowLG9wdGlvbnM6YWUudmFsdWUsInRleHQtY29udGVudCI6dD0+ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpfSxJLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTpsfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQSkse2l0ZW06dCxpbmRleDpsLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldKSxfOjF9LDE2LFsib3B0aW9ucyIsInRleHQtY29udGVudCJdKSk6KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3QodGUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE1lKSx7a2V5OmBncm91cC0ke3QuaWR9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOnoudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoUyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UudW5yZWYoVSkodCxvLmxhYmVsS2V5KXx8blt0LnNsb3Q/YCR7dC5zbG90fS1ncm91cC1sYWJlbGA6Imdyb3VwLWxhYmVsIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFllKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp6LnZhbHVlLmxhYmVsKHtjbGFzczplLnVucmVmKFMpPy5sYWJlbH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCIse2dyb3VwOnQsbGFiZWw6ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpLHVpOnoudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0Lml0ZW1zLChsLG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQSkse2tleTpgZ3JvdXAtJHt0LmlkfS0ke299YCxpdGVtOmwsaW5kZXg6byxncm91cDp0fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJncm91cCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6ei52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihTKT8uZW1wdHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOmcudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZy52YWx1ZT9lLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTpnLnZhbHVlfSk6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpLDEpXSldLDIpKV0pLF86M30sOCxbImNsYXNzIl0pLG4uZm9vdGVyPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOnoudmFsdWUuZm9vdGVyKHtjbGFzczplLnVucmVmKFMpPy5mb290ZXJ9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZm9vdGVyIix7dWk6ei52YWx1ZX0pXSwyKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTt0LmlucHV0P3MoamUoZS51bnJlZihEZSkse21vZGVsVmFsdWU6Zy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+Zy52YWx1ZT1lLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmUud2l0aEN0eCgocixzLHUsZCk9PntpZighcylyZXR1cm5bZS5jcmVhdGVWTm9kZShGZSxlLm1lcmdlUHJvcHMoe3ZhcmlhbnQ6Im5vbmUiLHNpemU6dC5zaXplfSwib2JqZWN0Ij09dHlwZW9mIG8uaW5wdXQ/by5pbnB1dDp7fSx7cGxhY2Vob2xkZXI6Ri52YWx1ZSxhdXRvZm9jdXM6dC5hdXRvZm9jdXMsbG9hZGluZzp0LmxvYWRpbmcsImxvYWRpbmctaWNvbiI6dC5sb2FkaW5nSWNvbiwidHJhaWxpbmctaWNvbiI6dC50cmFpbGluZ0ljb24saWNvbjp0Lmljb258fGUudW5yZWYoaykudWkuaWNvbnMuc2VhcmNoLCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6ei52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihTKT8uaW5wdXR9KSxvbktleWRvd246ZS53aXRoS2V5cyhvbkJhY2tzcGFjZSxbImJhY2tzcGFjZSJdKX0pLGUuY3JlYXRlU2xvdHMoe186Mn0sW3EudmFsdWU/Lmxlbmd0aCYmKHQuYmFja3x8bi5iYWNrKT97bmFtZToibGVhZGluZyIsZm46ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJiYWNrIix7dWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVZOb2RlKGIsZS5tZXJnZVByb3BzKHtzaXplOnQuc2l6ZSxpY29uOnQuYmFja0ljb258fGUudW5yZWYoaykudWkuaWNvbnMuYXJyb3dMZWZ0LGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUuYmFjayIpfSwib2JqZWN0Ij09dHlwZW9mIHQuYmFjaz90LmJhY2s6e30seyJkYXRhLXNsb3QiOiJiYWNrIixjbGFzczp6LnZhbHVlLmJhY2soe2NsYXNzOmUudW5yZWYoUyk/LmJhY2t9KSxvbkNsaWNrOm5hdmlnYXRlQmFja30pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKV0pXSksa2V5OiIwIn06dm9pZCAwLHQuY2xvc2V8fG4uY2xvc2U/e25hbWU6InRyYWlsaW5nIixmbjplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsImNsb3NlIix7dWk6ei52YWx1ZX0sKCk9Plt0LmNsb3NlPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soYixlLm1lcmdlUHJvcHMoe2tleTowLHNpemU6dC5zaXplLGljb246dC5jbG9zZUljb258fGUudW5yZWYoaykudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiB0LmNsb3NlP3QuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6ei52YWx1ZS5jbG9zZSh7Y2xhc3M6ZS51bnJlZihTKT8uY2xvc2V9KSxvbkNsaWNrOmU9PmkoInVwZGF0ZTpvcGVuIiwhMSl9KSxudWxsLDE2LFsic2l6ZSIsImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiLCJvbkNsaWNrIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLGtleToiMSJ9OnZvaWQgMF0pLDEwNDAsWyJzaXplIiwicGxhY2Vob2xkZXIiLCJhdXRvZm9jdXMiLCJsb2FkaW5nIiwibG9hZGluZy1pY29uIiwidHJhaWxpbmctaWNvbiIsImljb24iLCJjbGFzcyJdKV07cyhqZShGZSxlLm1lcmdlUHJvcHMoe3ZhcmlhbnQ6Im5vbmUiLHNpemU6dC5zaXplfSwib2JqZWN0Ij09dHlwZW9mIG8uaW5wdXQ/by5pbnB1dDp7fSx7cGxhY2Vob2xkZXI6Ri52YWx1ZSxhdXRvZm9jdXM6dC5hdXRvZm9jdXMsbG9hZGluZzp0LmxvYWRpbmcsImxvYWRpbmctaWNvbiI6dC5sb2FkaW5nSWNvbiwidHJhaWxpbmctaWNvbiI6dC50cmFpbGluZ0ljb24saWNvbjp0Lmljb258fGUudW5yZWYoaykudWkuaWNvbnMuc2VhcmNoLCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6ei52YWx1ZS5pbnB1dCh7Y2xhc3M6ZS51bnJlZihTKT8uaW5wdXR9KSxvbktleWRvd246b25CYWNrc3BhY2V9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtxLnZhbHVlPy5sZW5ndGgmJih0LmJhY2t8fG4uYmFjayk/e25hbWU6ImxlYWRpbmciLGZuOmUud2l0aEN0eCgobyxpLG4scik9PntpZighaSlyZXR1cm5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJiYWNrIix7dWk6ei52YWx1ZX0sKCk9PltlLmNyZWF0ZVZOb2RlKGIsZS5tZXJnZVByb3BzKHtzaXplOnQuc2l6ZSxpY29uOnQuYmFja0ljb258fGUudW5yZWYoaykudWkuaWNvbnMuYXJyb3dMZWZ0LGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUuYmFjayIpfSwib2JqZWN0Ij09dHlwZW9mIHQuYmFjaz90LmJhY2s6e30seyJkYXRhLXNsb3QiOiJiYWNrIixjbGFzczp6LnZhbHVlLmJhY2soe2NsYXNzOmUudW5yZWYoUyk/LmJhY2t9KSxvbkNsaWNrOm5hdmlnYXRlQmFja30pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKV0pXTtIZShsLiRzbG90cywiYmFjayIse3VpOnoudmFsdWV9LCgpPT57aShqZShiLGUubWVyZ2VQcm9wcyh7c2l6ZTp0LnNpemUsaWNvbjp0LmJhY2tJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmFycm93TGVmdCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsImFyaWEtbGFiZWwiOmUudW5yZWYoeSkoImNvbW1hbmRQYWxldHRlLmJhY2siKX0sIm9iamVjdCI9PXR5cGVvZiB0LmJhY2s/dC5iYWNrOnt9LHsiZGF0YS1zbG90IjoiYmFjayIsY2xhc3M6ei52YWx1ZS5iYWNrKHtjbGFzczplLnVucmVmKFMpPy5iYWNrfSksb25DbGljazpuYXZpZ2F0ZUJhY2t9KSxudWxsLG4scikpfSxpLG4scil9KSxrZXk6IjAifTp2b2lkIDAsdC5jbG9zZXx8bi5jbG9zZT97bmFtZToidHJhaWxpbmciLGZuOmUud2l0aEN0eCgobyxuLHIscyk9PntpZighbilyZXR1cm5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLCJjbG9zZSIse3VpOnoudmFsdWV9LCgpPT5bdC5jbG9zZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGIsZS5tZXJnZVByb3BzKHtrZXk6MCxzaXplOnQuc2l6ZSxpY29uOnQuY2xvc2VJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoeSkoImNvbW1hbmRQYWxldHRlLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgdC5jbG9zZT90LmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmNsb3NlfSksb25DbGljazplPT5pKCJ1cGRhdGU6b3BlbiIsITEpfSksbnVsbCwxNixbInNpemUiLCJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIiwib25DbGljayJdKSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO0hlKGwuJHNsb3RzLCJjbG9zZSIse3VpOnoudmFsdWV9LCgpPT57dC5jbG9zZT9uKGplKGIsZS5tZXJnZVByb3BzKHtzaXplOnQuc2l6ZSxpY29uOnQuY2xvc2VJY29ufHxlLnVucmVmKGspLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmUudW5yZWYoeSkoImNvbW1hbmRQYWxldHRlLmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgdC5jbG9zZT90LmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOnoudmFsdWUuY2xvc2Uoe2NsYXNzOmUudW5yZWYoUyk/LmNsb3NlfSksb25DbGljazplPT5pKCJ1cGRhdGU6b3BlbiIsITEpfSksbnVsbCxyLHMpKTpuKCJceDNjIS0tLS1ceDNlIil9LG4scixzKX0pLGtleToiMSJ9OnZvaWQgMF0pLHUsZCkpfSksXzozfSx1LGQpKTpzKCJceDNjIS0tLS1ceDNlIikscyhqZShlLnVucmVmKEFlKSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOnoudmFsdWUuY29udGVudCh7Y2xhc3M6ZS51bnJlZihTKT8uY29udGVudH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKGkscixzLHUpPT57aWYoIXIpcmV0dXJuW3RlLnZhbHVlPy5sZW5ndGg/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnoudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoUyk/LnZpZXdwb3J0fSl9LFt0LnZpcnR1YWxpemU/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKHplKSxlLm1lcmdlUHJvcHMoe2tleTowLG9wdGlvbnM6YWUudmFsdWUsInRleHQtY29udGVudCI6dD0+ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpfSxJLnZhbHVlKSx7ZGVmYXVsdDplLndpdGhDdHgoKHtvcHRpb246dCx2aXJ0dWFsSXRlbTpsfSk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQSkse2l0ZW06dCxpbmRleDpsLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldKSxfOjF9LDE2LFsib3B0aW9ucyIsInRleHQtY29udGVudCJdKSk6KGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQse2tleToxfSxlLnJlbmRlckxpc3QodGUudmFsdWUsdD0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKE1lKSx7a2V5OmBncm91cC0ke3QuaWR9YCwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOnoudmFsdWUuZ3JvdXAoe2NsYXNzOmUudW5yZWYoUyk/Lmdyb3VwfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UudW5yZWYoVSkodCxvLmxhYmVsS2V5KXx8blt0LnNsb3Q/YCR7dC5zbG90fS1ncm91cC1sYWJlbGA6Imdyb3VwLWxhYmVsIl0/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKFllKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp6LnZhbHVlLmxhYmVsKHtjbGFzczplLnVucmVmKFMpPy5sYWJlbH0pfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QobC4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCIse2dyb3VwOnQsbGFiZWw6ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpLHVpOnoudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdCh0Lml0ZW1zLChsLG8pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoQSkse2tleTpgZ3JvdXAtJHt0LmlkfS0ke299YCxpdGVtOmwsaW5kZXg6byxncm91cDp0fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJncm91cCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6ei52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihTKT8uZW1wdHl9KX0sW2UucmVuZGVyU2xvdChsLiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOmcudmFsdWV9LCgpPT5bZS5jcmVhdGVUZXh0Vk5vZGUoZS50b0Rpc3BsYXlTdHJpbmcoZy52YWx1ZT9lLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTpnLnZhbHVlfSk6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpLDEpXSldLDIpKV07dGUudmFsdWU/Lmxlbmd0aD8ocihgPGRpdiByb2xlPSJwcmVzZW50YXRpb24iIGRhdGEtc2xvdD0idmlld3BvcnQiIGNsYXNzPSIke1dlKHoudmFsdWUudmlld3BvcnQoe2NsYXNzOmUudW5yZWYoUyk/LnZpZXdwb3J0fSkpfSIke3V9PmApLHQudmlydHVhbGl6ZT9yKGplKGUudW5yZWYoemUpLGUubWVyZ2VQcm9wcyh7b3B0aW9uczphZS52YWx1ZSwidGV4dC1jb250ZW50Ijp0PT5lLnVucmVmKFUpKHQsby5sYWJlbEtleSl9LEkudmFsdWUpLHtkZWZhdWx0OmUud2l0aEN0eCgoe29wdGlvbjp0LHZpcnR1YWxJdGVtOmx9LG8saSxuKT0+e2lmKCFvKXJldHVybltlLmNyZWF0ZVZOb2RlKGUudW5yZWYoQSkse2l0ZW06dCxpbmRleDpsLmluZGV4fSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiXSldO28oamUoZS51bnJlZihBKSx7aXRlbTp0LGluZGV4OmwuaW5kZXh9LG51bGwsaSxuKSl9KSxfOjF9LHMsdSkpOihyKCJceDNjIS0tWy0tXHgzZSIpLEdlKHRlLnZhbHVlLHQ9PntyKGplKGUudW5yZWYoTWUpLHtrZXk6YGdyb3VwLSR7dC5pZH1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6ei52YWx1ZS5ncm91cCh7Y2xhc3M6ZS51bnJlZihTKT8uZ3JvdXB9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KChpLHIscyx1KT0+e2lmKCFyKXJldHVybltlLnVucmVmKFUpKHQsby5sYWJlbEtleSl8fG5bdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCJdPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihZZSkse2tleTowLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6ei52YWx1ZS5sYWJlbCh7Y2xhc3M6ZS51bnJlZihTKT8ubGFiZWx9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiLHtncm91cDp0LGxhYmVsOmUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSx1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSksMSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QodC5pdGVtcywobCxvKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKEEpLHtrZXk6YGdyb3VwLSR7dC5pZH0tJHtvfWAsaXRlbTpsLGluZGV4Om8sZ3JvdXA6dH0sbnVsbCw4LFsiaXRlbSIsImluZGV4IiwiZ3JvdXAiXSkpKSwxMjgpKV07ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpfHxuW3Quc2xvdD9gJHt0LnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiXT9yKGplKGUudW5yZWYoWWUpLHsiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOnoudmFsdWUubGFiZWwoe2NsYXNzOmUudW5yZWYoUyk/LmxhYmVsfSl9LHtkZWZhdWx0OmUud2l0aEN0eCgoaSxuLHIscyk9PntpZighbilyZXR1cm5bZS5yZW5kZXJTbG90KGwuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiLHtncm91cDp0LGxhYmVsOmUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSx1aTp6LnZhbHVlfSwoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKGUudG9EaXNwbGF5U3RyaW5nKGUudW5yZWYoVSkodCxvLmxhYmVsS2V5KSksMSldKV07SGUobC4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tZ3JvdXAtbGFiZWxgOiJncm91cC1sYWJlbCIse2dyb3VwOnQsbGFiZWw6ZS51bnJlZihVKSh0LG8ubGFiZWxLZXkpLHVpOnoudmFsdWV9LCgpPT57bihgJHtRZShlLnVucmVmKFUpKHQsby5sYWJlbEtleSkpfWApfSxuLHIscyl9KSxfOjJ9LHMsdSkpOnIoIlx4M2MhLS0tLVx4M2UiKSxyKCJceDNjIS0tWy0tXHgzZSIpLEdlKHQuaXRlbXMsKGwsbyk9PntyKGplKGUudW5yZWYoQSkse2tleTpgZ3JvdXAtJHt0LmlkfS0ke299YCxpdGVtOmwsaW5kZXg6byxncm91cDp0fSxudWxsLHMsdSkpfSkscigiXHgzYyEtLV0tLVx4M2UiKX0pLF86Mn0scyx1KSl9KSxyKCJceDNjIS0tXS0tXHgzZSIpKSxyKCI8L2Rpdj4iKSk6KHIoYDxkaXYgZGF0YS1zbG90PSJlbXB0eSIgY2xhc3M9IiR7V2Uoei52YWx1ZS5lbXB0eSh7Y2xhc3M6ZS51bnJlZihTKT8uZW1wdHl9KSl9IiR7dX0+YCksSGUobC4kc2xvdHMsImVtcHR5Iix7c2VhcmNoVGVybTpnLnZhbHVlfSwoKT0+e3IoYCR7UWUoZy52YWx1ZT9lLnVucmVmKHkpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTpnLnZhbHVlfSk6ZS51bnJlZih5KSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpfWApfSxyLHMsdSkscigiPC9kaXY+IikpfSksXzozfSx1LGQpKSxuLmZvb3Rlcj8ocyhgPGRpdiBkYXRhLXNsb3Q9ImZvb3RlciIgY2xhc3M9IiR7V2Uoei52YWx1ZS5mb290ZXIoe2NsYXNzOmUudW5yZWYoUyk/LmZvb3Rlcn0pKX0iJHtkfT5gKSxIZShsLiRzbG90cywiZm9vdGVyIix7dWk6ei52YWx1ZX0sbnVsbCxzLHUsZCkscygiPC9kaXY+IikpOnMoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30scykpLHIoIlx4M2MhLS1dLS1ceDNlIil9fX0pLEp0PUd0LnNldHVwO0d0LnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQ29tbWFuZFBhbGV0dGUudnVlIiksSnQ/SnQodCxsKTp2b2lkIDB9O2NvbnN0IFF0PXtzbG90czp7bW9kYWw6IiIsaW5wdXQ6IiJ9LHZhcmlhbnRzOntmdWxsc2NyZWVuOntmYWxzZTp7bW9kYWw6InNtOm1heC13LTN4bCBoLWZ1bGwgc206aC1bMjhyZW1dIn19LHNpemU6e3hzOnt9LHNtOnt9LG1kOnt9LGxnOnt9LHhsOnt9fX0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCJ9fSx1c2VDb2xvck1vZGU9KCk9Pm8oImNvbG9yLW1vZGUiKS52YWx1ZSxYdD0vXlteLV0rLiotLipbXi1dKyQvLFl0PS9eW15fXSsuKl8uKlteX10rJC8sWnQ9WyJhcnJvd2xlZnQiLCJhcnJvd3JpZ2h0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJ0YWIiLCJlc2NhcGUiLCJlbnRlciIsImJhY2tzcGFjZSJdO2Z1bmN0aW9uIGNvbnZlcnRLZXlUb0NvZGUoZSl7aWYoL15bYS16XSQvaS50ZXN0KGUpKXJldHVybmBLZXkke2UudG9VcHBlckNhc2UoKX1gO2lmKC9eXGQkLy50ZXN0KGUpKXJldHVybmBEaWdpdCR7ZX1gO2lmKC9eZlxkKyQvaS50ZXN0KGUpKXJldHVybiBlLnRvVXBwZXJDYXNlKCk7cmV0dXJue3NwYWNlOiJTcGFjZSIsZW50ZXI6IkVudGVyIixlc2NhcGU6IkVzY2FwZSIsdGFiOiJUYWIiLGJhY2tzcGFjZToiQmFja3NwYWNlIixkZWxldGU6IkRlbGV0ZSIsYXJyb3d1cDoiQXJyb3dVcCIsYXJyb3dkb3duOiJBcnJvd0Rvd24iLGFycm93bGVmdDoiQXJyb3dMZWZ0IixhcnJvd3JpZ2h0OiJBcnJvd1JpZ2h0In1bZS50b0xvd2VyQ2FzZSgpXXx8ZX1jb25zdCBlYT17X19uYW1lOiJVRGFzaGJvYXJkU2VhcmNoIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczplLm1lcmdlTW9kZWxzKHtzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsb3NlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2hvcnRjdXQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im1ldGFfayJ9LHNlYXJjaERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwMH0sY29sb3JNb2RlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSx0aXRsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sb3ZlcmxheTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmdWxsc2NyZWVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGdyb3Vwczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sZnVzZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSx7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9wZW5Nb2RpZmllcnM6e30sc2VhcmNoVGVybTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiIn0sc2VhcmNoVGVybU1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOm9wZW4iLCJ1cGRhdGU6c2VhcmNoVGVybSJdLHNldHVwKHQse2V4cG9zZTpsfSl7Y29uc3Qgbz10LGk9ZS51c2VTbG90cygpLG49ZS51c2VNb2RlbCh0LCJvcGVuIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSxkPWUudXNlTW9kZWwodCwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KTt1c2VSdW50aW1lSG9vaygiZGFzaGJvYXJkOnNlYXJjaDp0b2dnbGUiLCgpPT57bi52YWx1ZT0hbi52YWx1ZX0pO2NvbnN0e3Q6eX09cigpLGI9dXNlQ29sb3JNb2RlKCksUz1zKCksdz11KCJkYXNoYm9hcmRTZWFyY2giLG8pLE49Zyh4KG8sInNpemUiLCJpY29uIiwicGxhY2Vob2xkZXIiLCJhdXRvZm9jdXMiLCJsb2FkaW5nIiwibG9hZGluZ0ljb24iLCJjbG9zZSIsImNsb3NlSWNvbiIsInNlYXJjaERlbGF5IikpLEk9Zyh4KG8sIm92ZXJsYXkiLCJ0cmFuc2l0aW9uIiwiY29udGVudCIsImRpc21pc3NpYmxlIiwiZnVsbHNjcmVlbiIsIm1vZGFsIiwicG9ydGFsIikpLGdldFByb3h5U2xvdHM9KCk9PkIoaSxbImNvbnRlbnQiXSksVj1lLmNvbXB1dGVkKCgpPT5zZSh7fSxvLmZ1c2Use2Z1c2VPcHRpb25zOnt9fSkpLEE9ZS5jb21wdXRlZCgoKT0+Zih7ZXh0ZW5kOmYoUXQpLC4uLlMudWk/LmRhc2hib2FyZFNlYXJjaHx8e319KSh7c2l6ZTpvLnNpemUsZnVsbHNjcmVlbjpvLmZ1bGxzY3JlZW59KSksej1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1bXTtyZXR1cm4gZS5wdXNoKC4uLm8uZ3JvdXBzfHxbXSksby5jb2xvck1vZGUmJiFiPy5mb3JjZWQmJmUucHVzaCh7aWQ6InRoZW1lIixsYWJlbDp5KCJkYXNoYm9hcmRTZWFyY2gudGhlbWUiKSxpdGVtczpbe2xhYmVsOnkoImNvbG9yTW9kZS5zeXN0ZW0iKSxpY29uOlMudWkuaWNvbnMuc3lzdGVtLGFjdGl2ZToic3lzdGVtIj09PWIucHJlZmVyZW5jZSxvblNlbGVjdDooKT0+e2IucHJlZmVyZW5jZT0ic3lzdGVtIn19LHtsYWJlbDp5KCJjb2xvck1vZGUubGlnaHQiKSxpY29uOlMudWkuaWNvbnMubGlnaHQsYWN0aXZlOiJsaWdodCI9PT1iLnByZWZlcmVuY2Usb25TZWxlY3Q6KCk9PntiLnByZWZlcmVuY2U9ImxpZ2h0In19LHtsYWJlbDp5KCJjb2xvck1vZGUuZGFyayIpLGljb246Uy51aS5pY29ucy5kYXJrLGFjdGl2ZToiZGFyayI9PT1iLnByZWZlcmVuY2Usb25TZWxlY3Q6KCk9PntiLnByZWZlcmVuY2U9ImRhcmsifX1dfSksZX0pLE09ZS51c2VUZW1wbGF0ZVJlZigiY29tbWFuZFBhbGV0dGVSZWYiKTtmdW5jdGlvbiBvblNlbGVjdChlKXtlLmRpc2FibGVkfHwobi52YWx1ZT0hMSxkLnZhbHVlPSIiKX1yZXR1cm4gZnVuY3Rpb24odCxsPXt9KXtjb25zdCBvPWUucmVmKFtdKSxjbGVhckNoYWluZWRJbnB1dD0oKT0+e28udmFsdWUuc3BsaWNlKDAsby52YWx1ZS5sZW5ndGgpfSxpPXEoY2xlYXJDaGFpbmVkSW5wdXQsbC5jaGFpbkRlbGF5Pz84MDApLHttYWNPUzpufT1TZSgpLHI9WCgpLHM9bC5sYXlvdXRJbmRlcGVuZGVudD8/ITEsdT1adC5tYXAoZT0+Y29udmVydEtleVRvQ29kZShlKSksZD1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1yLnZhbHVlPy50YWdOYW1lLHQ9ci52YWx1ZT8uY29udGVudEVkaXRhYmxlO3JldHVybiEoIklOUFVUIiE9PWUmJiJURVhUQVJFQSIhPT1lJiYidHJ1ZSIhPT10JiYicGxhaW50ZXh0LW9ubHkiIT09dCkmJihyLnZhbHVlPy5uYW1lfHwhMCl9KSxmPWUuY29tcHV0ZWQoKCk9Pk9iamVjdC5lbnRyaWVzKGUudG9WYWx1ZSh0KSkubWFwKChbZSx0XSk9PntpZighdClyZXR1cm4gbnVsbDtsZXQgbDtlLmluY2x1ZGVzKCItIikmJiItIiE9PWUmJiFlLmluY2x1ZGVzKCJfIikmJmUubWF0Y2goWHQpLGUuaW5jbHVkZXMoIl8iKSYmIl8iIT09ZSYmZS5tYXRjaChZdCk7Y29uc3Qgbz1lLmluY2x1ZGVzKCItIikmJiItIiE9PWUmJiFlLmluY2x1ZGVzKCJfIik7aWYobylsPXM/e2tleTplLnNwbGl0KCItIikubWFwKGU9PmNvbnZlcnRLZXlUb0NvZGUoZSkpLmpvaW4oIi0iKSxtZXRhS2V5OiExLGN0cmxLZXk6ITEsc2hpZnRLZXk6ITEsYWx0S2V5OiExfTp7a2V5OmUudG9Mb3dlckNhc2UoKSxtZXRhS2V5OiExLGN0cmxLZXk6ITEsc2hpZnRLZXk6ITEsYWx0S2V5OiExfTtlbHNle2NvbnN0IHQ9ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCJfIikubWFwKGU9PmUpO2xldCBvPXQuZmlsdGVyKGU9PiFbIm1ldGEiLCJjb21tYW5kIiwiY3RybCIsInNoaWZ0IiwiYWx0Iiwib3B0aW9uIl0uaW5jbHVkZXMoZSkpLmpvaW4oIl8iKTtzJiYobz1jb252ZXJ0S2V5VG9Db2RlKG8pKSxsPXtrZXk6byxtZXRhS2V5OnQuaW5jbHVkZXMoIm1ldGEiKXx8dC5pbmNsdWRlcygiY29tbWFuZCIpLGN0cmxLZXk6dC5pbmNsdWRlcygiY3RybCIpLHNoaWZ0S2V5OnQuaW5jbHVkZXMoInNoaWZ0IiksYWx0S2V5OnQuaW5jbHVkZXMoImFsdCIpfHx0LmluY2x1ZGVzKCJvcHRpb24iKX19aWYobC5jaGFpbmVkPW8sbi52YWx1ZXx8IWwubWV0YUtleXx8bC5jdHJsS2V5fHwobC5tZXRhS2V5PSExLGwuY3RybEtleT0hMCksImZ1bmN0aW9uIj09dHlwZW9mIHQ/bC5oYW5kbGVyPXQ6Im9iamVjdCI9PXR5cGVvZiB0JiYobD17Li4ubCxoYW5kbGVyOnQuaGFuZGxlcn0pLCFsLmhhbmRsZXIpcmV0dXJuIG51bGw7bGV0IGk9ITA7cmV0dXJuIHQudXNpbmdJbnB1dD8ic3RyaW5nIj09dHlwZW9mIHQudXNpbmdJbnB1dCYmKGk9ZC52YWx1ZT09PXQudXNpbmdJbnB1dCk6aT0hZC52YWx1ZSxsLmVuYWJsZWQ9aSxsfSkuZmlsdGVyKEJvb2xlYW4pKTtGKCJrZXlkb3duIixlPT57aWYoIWUua2V5KXJldHVybjtjb25zdCB0PXM/L15LZXlbQS1aXSQvaS50ZXN0KGUuY29kZSk6L15bYS16XXsxfSQvaS50ZXN0KGUua2V5KSxsPXM/dS5pbmNsdWRlcyhlLmNvZGUpOlp0LmluY2x1ZGVzKGUua2V5LnRvTG93ZXJDYXNlKCkpO2xldCBuO2lmKG8udmFsdWUucHVzaChzP2UuY29kZTplLmtleSksby52YWx1ZS5sZW5ndGg+PTIpe249by52YWx1ZS5zbGljZSgtMikuam9pbigiLSIpO2Zvcihjb25zdCB0IG9mIGYudmFsdWUuZmlsdGVyKGU9PmUuY2hhaW5lZCkpaWYodC5rZXk9PT1uKXJldHVybiB0LmVuYWJsZWQmJihlLnByZXZlbnREZWZhdWx0KCksdC5oYW5kbGVyKGUpKSx2b2lkIGNsZWFyQ2hhaW5lZElucHV0KCl9Zm9yKGNvbnN0IG8gb2YgZi52YWx1ZS5maWx0ZXIoZT0+IWUuY2hhaW5lZCkpe2lmKHMpe2lmKGUuY29kZSE9PW8ua2V5KWNvbnRpbnVlfWVsc2UgaWYoZS5rZXkudG9Mb3dlckNhc2UoKSE9PW8ua2V5KWNvbnRpbnVlO2lmKGUubWV0YUtleT09PW8ubWV0YUtleSYmZS5jdHJsS2V5PT09by5jdHJsS2V5JiZlLmFsdEtleT09PW8uYWx0S2V5JiYoISh0fHxsfHxvLnNoaWZ0S2V5fHxlLnNoaWZ0S2V5JiYoZS5tZXRhS2V5fHxlLmN0cmxLZXkpKXx8ZS5zaGlmdEtleT09PW8uc2hpZnRLZXkpKXJldHVybiBvLmVuYWJsZWQmJihlLnByZXZlbnREZWZhdWx0KCksby5oYW5kbGVyKGUpKSx2b2lkIGNsZWFyQ2hhaW5lZElucHV0KCl9aSgpfSl9KHtbby5zaG9ydGN1dF06e3VzaW5nSW5wdXQ6ITAsaGFuZGxlcjooKT0+bi52YWx1ZT0hbi52YWx1ZX19KSxsKHtjb21tYW5kUGFsZXR0ZVJlZjpNfSksKGwsaSxyLHMpPT57aShqZSh1ZSxlLm1lcmdlUHJvcHMoe29wZW46bi52YWx1ZSwib25VcGRhdGU6b3BlbiI6ZT0+bi52YWx1ZT1lLHRpdGxlOnQudGl0bGV8fGUudW5yZWYoeSkoImRhc2hib2FyZFNlYXJjaC50aXRsZSIpLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb258fGUudW5yZWYoeSkoImRhc2hib2FyZFNlYXJjaC5kZXNjcmlwdGlvbiIpfSxlLnVucmVmKEkpLHsiZGF0YS1zbG90IjoibW9kYWwiLGNsYXNzOkEudmFsdWUubW9kYWwoe2NsYXNzOltlLnVucmVmKHcpPy5tb2RhbCxvLmNsYXNzXX0pfSxzKSx7Y29udGVudDplLndpdGhDdHgoKHQsbyxpLHIpPT57aWYoIW8pcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cywiY29udGVudCIsdCwoKT0+W2UuY3JlYXRlVk5vZGUoR3QsZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJjb21tYW5kUGFsZXR0ZVJlZiIscmVmOk0sInNlYXJjaC10ZXJtIjpkLnZhbHVlLCJvblVwZGF0ZTpzZWFyY2hUZXJtIjplPT5kLnZhbHVlPWV9LGUudW5yZWYoTikse2dyb3Vwczp6LnZhbHVlLGZ1c2U6Vi52YWx1ZSxpbnB1dDp7Zml4ZWQ6ITB9LHVpOmUudW5yZWYoaykoZS51bnJlZihCKShBLnZhbHVlLFsibW9kYWwiXSksZS51bnJlZih3KSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9uU2VsZWN0LCJvblVwZGF0ZTpvcGVuIjplPT5uLnZhbHVlPWV9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLCh0LG8pPT4oe25hbWU6byxmbjplLndpdGhDdHgodD0+W2UucmVuZGVyU2xvdChsLiRzbG90cyxvLHQpXSl9KSldKSwxMDQwLFsic2VhcmNoLXRlcm0iLCJvblVwZGF0ZTpzZWFyY2hUZXJtIiwiZ3JvdXBzIiwiZnVzZSIsInVpIiwib25VcGRhdGU6b3BlbiJdKV0pXTtIZShsLiRzbG90cywiY29udGVudCIsdCwoKT0+e28oamUoR3QsZS5tZXJnZVByb3BzKHtyZWZfa2V5OiJjb21tYW5kUGFsZXR0ZVJlZiIscmVmOk0sInNlYXJjaC10ZXJtIjpkLnZhbHVlLCJvblVwZGF0ZTpzZWFyY2hUZXJtIjplPT5kLnZhbHVlPWV9LGUudW5yZWYoTikse2dyb3Vwczp6LnZhbHVlLGZ1c2U6Vi52YWx1ZSxpbnB1dDp7Zml4ZWQ6ITB9LHVpOmUudW5yZWYoaykoZS51bnJlZihCKShBLnZhbHVlLFsibW9kYWwiXSksZS51bnJlZih3KSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9uU2VsZWN0LCJvblVwZGF0ZTpvcGVuIjplPT5uLnZhbHVlPWV9KSxlLmNyZWF0ZVNsb3RzKHtfOjJ9LFtlLnJlbmRlckxpc3QoZ2V0UHJveHlTbG90cygpLCh0LG8pPT4oe25hbWU6byxmbjplLndpdGhDdHgoKHQsaSxuLHIpPT57aWYoIWkpcmV0dXJuW2UucmVuZGVyU2xvdChsLiRzbG90cyxvLHQpXTtIZShsLiRzbG90cyxvLHQsbnVsbCxpLG4scil9KX0pKV0pLGkscikpfSxvLGkscil9KSxfOjN9LHIpKX19fSx0YT1lYS5zZXR1cDtlYS5zZXR1cD0odCxsKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0Rhc2hib2FyZFNlYXJjaC52dWUiKSx0YT90YSh0LGwpOnZvaWQgMH07Y29uc3QgYWE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSW1wZXJzb25hdGVNZW51IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7Y29sbGFwc2VkOnt0eXBlOkJvb2xlYW59fSxzZXR1cChsKXtjb25zdCBvPWVlKCksbj10KCkscj1BKCkscz1lLmNvbXB1dGVkKCgpPT4obi5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSkuaW5jbHVkZXMoInVzZXI6aW1wZXJzb25hdGUiKXx8bi5pc0ltcGVyc29uYXRpbmcpLHU9ZS5jb21wdXRlZCgoKT0+aShuLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLCJ1c2VyOnJlYWQiKSksZD1lLmNvbXB1dGVkKCgpPT5zLnZhbHVlfHx1LnZhbHVlKSxmPWUucmVmKCExKSxnPWUucmVmKG51bGwpLHk9ZS5yZWYoITEpLHtpdGVtczprLHE6eCxoYXNNb3JlOkIsbG9hZGluZzpTLGxvYWRNb3JlOncscmVzZXQ6Tn09T2UoZT0+by5mZXRjaEltcGVyc29uYXRpb25DYW5kaWRhdGVzKGUpLnRoZW4oZT0+ZSkse2ltbWVkaWF0ZTohMX0pO3ooZyx3LHtkaXN0YW5jZTo4MCxjYW5Mb2FkTW9yZTooKT0+Qi52YWx1ZX0pLGUud2F0Y2goZixlPT57ZSYmKE4oKSx3KCkpfSk7Y29uc3QgST1lLmNvbXB1dGVkKCgpPT5uLmlzSW1wZXJzb25hdGluZz9uLmN1cnJlbnRVc2VyPy5uYW1lPz9uLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsOm4uY3VycmVudFVzZXI/Lm5hbWU/P24uY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWw/PyJndWVzdCIpLFY9ZS5jb21wdXRlZCgoKT0+bi5pc0ltcGVyc29uYXRpbmc/ImktbHVjaWRlLXVzZXItY29nIjoiaS1sdWNpZGUtY3Vib2lkIiksUD1lLmNvbXB1dGVkKCgpPT5bW3tsYWJlbDpgUmVhbCB1c2VyOiAke24uaW1wZXJzb25hdG9yPy5uYW1lPz9uLmltcGVyc29uYXRvcj8ucHJpbWFyeV9lbWFpbH1gLGljb246ImktbHVjaWRlLXNoaWVsZCIsZGlzYWJsZWQ6ITB9LHtsYWJlbDoiU3RvcCBpbXBlcnNvbmF0aW5nIixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0Iixjb2xvcjoid2FybmluZyIsb25TZWxlY3Q6KCk9PnshYXN5bmMgZnVuY3Rpb24oKXt5LnZhbHVlPSEwO3RyeXthd2FpdCBuLnN0b3BJbXBlcnNvbmF0aW9uKCksci5hZGQoe3RpdGxlOiJTdG9wcGVkIGltcGVyc29uYXRpb24iLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtyLmFkZCh7dGl0bGU6IlN0b3AgaW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt5LnZhbHVlPSExfX0oKX19XV0pO3JldHVybih0LG8saSx1KT0+e2NvbnN0IEI9S2Usdz1iLE49TGUsQT1GZSx6PU07ZS51bnJlZihkKT8obyhgPGRpdiR7VWUodSl9PmApLGUudW5yZWYobikuaXNJbXBlcnNvbmF0aW5nP28oamUoQix7aXRlbXM6ZS51bnJlZihQKSxjb250ZW50OnthbGlnbjoiY2VudGVyIixjb2xsaXNpb25QYWRkaW5nOjEyfSx1aTp7Y29udGVudDpsLmNvbGxhcHNlZD8idy01NiI6InctKC0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgpIn19LHtkZWZhdWx0OmUud2l0aEN0eCgodCxvLGksbik9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZSh3LHtpY29uOmUudW5yZWYoViksbGFiZWw6bC5jb2xsYXBzZWQ/dm9pZCAwOmUudW5yZWYoSSksInRyYWlsaW5nLWljb24iOmwuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGJsb2NrOiIiLHNxdWFyZTpsLmNvbGxhcHNlZCxjbGFzczoiZGF0YS1bc3RhdGU9b3Blbl06YmctZWxldmF0ZWQgcHktMiIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0ZS1tZW51LXRyaWdnZXIifSxudWxsLDgsWyJpY29uIiwibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXTtvKGplKHcse2ljb246ZS51bnJlZihWKSxsYWJlbDpsLmNvbGxhcHNlZD92b2lkIDA6ZS51bnJlZihJKSwidHJhaWxpbmctaWNvbiI6bC5jb2xsYXBzZWQ/dm9pZCAwOiJpLWx1Y2lkZS1jaGV2cm9ucy11cC1kb3duIixjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCBweS0yIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9LCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRlLW1lbnUtdHJpZ2dlciJ9LG51bGwsaSxuKSl9KSxfOjF9LGkpKTplLnVucmVmKHMpP28oamUoTix7b3BlbjplLnVucmVmKGYpLCJvblVwZGF0ZTpvcGVuIjp0PT5lLmlzUmVmKGYpP2YudmFsdWU9dDpudWxsLGNvbnRlbnQ6e2FsaWduOiJjZW50ZXIiLGNvbGxpc2lvblBhZGRpbmc6MTJ9fSx7Y29udGVudDplLndpdGhDdHgoKHQsbyxpLHMpPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOihsLmNvbGxhcHNlZCwidy01NiIpfSxbZS5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCJ9LFtlLmNyZWF0ZVZOb2RlKEEse21vZGVsVmFsdWU6ZS51bnJlZih4KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dD0+ZS5pc1JlZih4KT94LnZhbHVlPXQ6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggdXNlcnPigKYiLHNpemU6InNtIixhdXRvZm9jdXM6IiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksZS5jcmVhdGVWTm9kZSgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjpnLGNsYXNzOiJtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8gcHktMSJ9LFsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKGspLHQ9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImJ1dHRvbiIse2tleTp0LmlkLHR5cGU6ImJ1dHRvbiIsZGlzYWJsZWQ6ISF0LmlzX3N1c3BlbmRlZHx8ZS51bnJlZih5KSxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdy1mdWxsIHB4LTMgcHktMS41IHRleHQtc20gaG92ZXI6YmctZWxldmF0ZWQgY3Vyc29yLXBvaW50ZXIgdGV4dC1sZWZ0IGRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIixvbkNsaWNrOmU9PmFzeW5jIGZ1bmN0aW9uKGUsdCl7eS52YWx1ZT0hMCxmLnZhbHVlPSExO3RyeXthd2FpdCBuLnN0YXJ0SW1wZXJzb25hdGlvbihlKSxyLmFkZCh7dGl0bGU6YE5vdyBpbXBlcnNvbmF0aW5nICR7dH1gLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtyLmFkZCh7dGl0bGU6IkltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz90Py5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7eS52YWx1ZT0hMX19KHQuaWQsdC5uYW1lPz90LnByaW1hcnlfZW1haWwpfSxbZS5jcmVhdGVWTm9kZSh6LHtuYW1lOiJpLWx1Y2lkZS11c2VyIixjbGFzczoic2l6ZS00IHNocmluay0wIn0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidHJ1bmNhdGUifSxlLnRvRGlzcGxheVN0cmluZyh0Lm5hbWU/P3QudXNlcm5hbWU/P3QucHJpbWFyeV9lbWFpbCksMSldLDgsWyJkaXNhYmxlZCIsIm9uQ2xpY2siXSkpKSwxMjgpKSxlLnVucmVmKFMpPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJweC0zIHB5LTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIExvYWRpbmfigKYgIikpOjA9PT1lLnVucmVmKGspLmxlbmd0aD8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyB1c2VycyBhdmFpbGFibGUuICIpKTplLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldLDUxMildLDIpXTtvKGA8ZGl2IGNsYXNzPSIke1dlKChsLmNvbGxhcHNlZCwidy01NiIpKX0iJHtzfT48ZGl2IGNsYXNzPSJwLTIgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQiJHtzfT5gKSxvKGplKEEse21vZGVsVmFsdWU6ZS51bnJlZih4KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dD0+ZS5pc1JlZih4KT94LnZhbHVlPXQ6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggdXNlcnPigKYiLHNpemU6InNtIixhdXRvZm9jdXM6IiJ9LG51bGwsaSxzKSksbyhgPC9kaXY+PGRpdiBjbGFzcz0ibWF4LWgtNjAgb3ZlcmZsb3cteS1hdXRvIHB5LTEiJHtzfT5ceDNjIS0tWy0tXHgzZWApLEdlKGUudW5yZWYoayksdD0+e28oYDxidXR0b24gdHlwZT0iYnV0dG9uIiR7WGUoISF0LmlzX3N1c3BlbmRlZHx8ZS51bnJlZih5KSk/IiBkaXNhYmxlZCI6IiJ9IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQiJHtzfT5gKSxvKGplKHose25hbWU6ImktbHVjaWRlLXVzZXIiLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAifSxudWxsLGkscykpLG8oYDxzcGFuIGNsYXNzPSJ0cnVuY2F0ZSIke3N9PiR7UWUodC5uYW1lPz90LnVzZXJuYW1lPz90LnByaW1hcnlfZW1haWwpfTwvc3Bhbj48L2J1dHRvbj5gKX0pLG8oIlx4M2MhLS1dLS1ceDNlIiksZS51bnJlZihTKT9vKGA8ZGl2IGNsYXNzPSJweC0zIHB5LTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQiJHtzfT4gTG9hZGluZ+KApiA8L2Rpdj5gKTowPT09ZS51bnJlZihrKS5sZW5ndGg/byhgPGRpdiBjbGFzcz0icHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIiR7c30+IE5vIHVzZXJzIGF2YWlsYWJsZS4gPC9kaXY+YCk6bygiXHgzYyEtLS0tXHgzZSIpLG8oIjwvZGl2PjwvZGl2PiIpfSksZGVmYXVsdDplLndpdGhDdHgoKHQsbyxpLG4pPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUodyx7aWNvbjplLnVucmVmKFYpLGxhYmVsOmwuY29sbGFwc2VkP3ZvaWQgMDplLnVucmVmKEkpLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCBweS0yIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9LCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRlLW1lbnUtdHJpZ2dlciJ9LG51bGwsOCxbImljb24iLCJsYWJlbCIsInRyYWlsaW5nLWljb24iLCJzcXVhcmUiXSldO28oamUodyx7aWNvbjplLnVucmVmKFYpLGxhYmVsOmwuY29sbGFwc2VkP3ZvaWQgMDplLnVucmVmKEkpLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCBweS0yIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9LCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRlLW1lbnUtdHJpZ2dlciJ9LG51bGwsaSxuKSl9KSxfOjF9LGkpKToobygnPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiBweS0yIiBkYXRhLXRlc3RpZD0iYnJhbmQtbWFyayI+JyksbyhqZSh6LHtuYW1lOiJpLWx1Y2lkZS1jdWJvaWQiLGNsYXNzOiJzaXplLTUgdGV4dC1wcmltYXJ5In0sbnVsbCxpKSksbC5jb2xsYXBzZWQ/bygiXHgzYyEtLS0tXHgzZSIpOm8oJzxzcGFuIGNsYXNzPSJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiPk51eHQgVGVtcGxhdGU8L3NwYW4+JyksbygiPC9kaXY+IikpLG8oIjwvZGl2PiIpKToobyhgPGRpdiR7VWUoZS5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiBweS0yIiwiZGF0YS10ZXN0aWQiOiJicmFuZC1tYXJrIn0sdSkpfT5gKSxvKGplKHose25hbWU6ImktbHVjaWRlLWN1Ym9pZCIsY2xhc3M6InNpemUtNSB0ZXh0LXByaW1hcnkifSxudWxsLGkpKSxsLmNvbGxhcHNlZD9vKCJceDNjIS0tLS1ceDNlIik6bygnPHNwYW4gY2xhc3M9ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCI+TnV4dCBUZW1wbGF0ZTwvc3Bhbj4nKSxvKCI8L2Rpdj4iKSl9fX0pLGxhPWFhLnNldHVwO2FhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL0ltcGVyc29uYXRlL0ltcGVyc29uYXRlTWVudS52dWUiKSxsYT9sYSh0LGwpOnZvaWQgMH07Y29uc3Qgb2E9T2JqZWN0LmFzc2lnbihhYSx7X19uYW1lOiJJbXBlcnNvbmF0ZU1lbnUifSksaWE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiT3JnYW5pemF0aW9uTWVudSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2NvbGxhcHNlZDp7dHlwZTpCb29sZWFufX0sc2V0dXAobCl7Y29uc3Qgbz10KCksaT10ZSgpLG49QSgpLHI9UCgpLHM9ZS5yZWYobnVsbCkse2l0ZW1zOnUscTpkLGhhc01vcmU6Zixsb2FkaW5nOmcsbG9hZE1vcmU6eSxyZXNldDprfT1PZShlPT5pLmZldGNoT3JnYW5pemF0aW9ucyhlKS50aGVuKGU9PmUpLHtpbW1lZGlhdGU6ITF9KTt6KHMseSx7ZGlzdGFuY2U6ODAsY2FuTG9hZE1vcmU6KCk9PmYudmFsdWV9KTtjb25zdCB4PWUucmVmKCExKSxCPWUucmVmKCExKSxTPWUucmVmKCExKSx3PWUucmVmKCIiKTthc3luYyBmdW5jdGlvbiBzdWJtaXRDcmVhdGUoKXtjb25zdCBlPXcudmFsdWUudHJpbSgpO2lmKGUpe1MudmFsdWU9ITA7dHJ5e2NvbnN0IHQ9YXdhaXQgaS5jcmVhdGVPcmdhbml6YXRpb24oe25hbWU6ZX0pO24uYWRkKHt0aXRsZToiT3JnYW5pemF0aW9uIGNyZWF0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pLEIudmFsdWU9ITEseC52YWx1ZT0hMSxhd2FpdCBvLnN3aXRjaE9yZ2FuaXphdGlvbih0LmlkKX1jYXRjaChlKXtjb25zdCB0PWU7bi5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gY3JlYXRlIG9yZ2FuaXphdGlvbiIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1MudmFsdWU9ITF9fX1lLndhdGNoKHgsZT0+e2UmJihrKCkseSgpKX0pLGUud2F0Y2goQixlPT57ZXx8KHcudmFsdWU9IiIpfSk7Y29uc3QgTj1lLmNvbXB1dGVkKCgpPT51LnZhbHVlLmZpbmQoZT0+ZS5pZD09PW8uYWN0aXZlT3JnYW5pemF0aW9uSWQpPy5uYW1lPz9vLmN1cnJlbnRVc2VyPy5uYW1lPz8iT3JnYW5pemF0aW9uIik7cmV0dXJuKHQsaSxuLGYpPT57Y29uc3QgeT1MZSxrPWIsST1GZSxWPU0sQT11ZSx6PUVlO2koIlx4M2MhLS1bLS1ceDNlIiksaShqZSh5LHtvcGVuOmUudW5yZWYoeCksIm9uVXBkYXRlOm9wZW4iOnQ9PmUuaXNSZWYoeCk/eC52YWx1ZT10Om51bGwsY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn19LHtjb250ZW50OmUud2l0aEN0eCgodCxsLGksbik9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InctNTYgZmxleCBmbGV4LWNvbCJ9LFtlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoicC0yIGJvcmRlci1iIGJvcmRlci1kZWZhdWx0In0sW2UuY3JlYXRlVk5vZGUoSSx7bW9kZWxWYWx1ZTplLnVucmVmKGQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5lLmlzUmVmKGQpP2QudmFsdWU9dDpudWxsLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IlNlYXJjaCBvcmdhbml6YXRpb25z4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLGUuY3JlYXRlVk5vZGUoImRpdiIse3JlZl9rZXk6InNjcm9sbEVsIixyZWY6cyxjbGFzczoibWF4LWgtNjAgb3ZlcmZsb3cteS1hdXRvIHB5LTEifSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUJsb2NrKGUuRnJhZ21lbnQsbnVsbCxlLnJlbmRlckxpc3QoZS51bnJlZih1KSx0PT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJidXR0b24iLHtrZXk6dC5pZCx0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQiLG9uQ2xpY2s6ZT0+YXN5bmMgZnVuY3Rpb24oZSl7ZSE9PW8uYWN0aXZlT3JnYW5pemF0aW9uSWQmJih4LnZhbHVlPSExLGF3YWl0IG8uc3dpdGNoT3JnYW5pemF0aW9uKGUpKX0odC5pZCl9LFtlLmNyZWF0ZVZOb2RlKFYse25hbWU6dC5pZD09PWUudW5yZWYobykuYWN0aXZlT3JnYW5pemF0aW9uSWQ/ImktbHVjaWRlLWNoZWNrIjoiaS1sdWNpZGUtYnVpbGRpbmciLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAifSxudWxsLDgsWyJuYW1lIl0pLGUuY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidHJ1bmNhdGUifSxlLnRvRGlzcGxheVN0cmluZyh0Lm5hbWUpLDEpXSw4LFsib25DbGljayJdKSkpLDEyOCkpLGUudW5yZWYoZyk/KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsY2xhc3M6InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCJ9LCIgTG9hZGluZ+KApiAiKSk6MCE9PWUudW5yZWYodSkubGVuZ3RofHxlLnVucmVmKGcpP2UuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyBvcmdhbml6YXRpb25zIGZvdW5kLiAiKSldLDUxMiksZS5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImJvcmRlci10IGJvcmRlci1kZWZhdWx0IHAtMSJ9LFtlLmNyZWF0ZVZOb2RlKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgcm91bmRlZCIsb25DbGljazp0PT57eC52YWx1ZT0hMSxlLnVucmVmKHIpLnB1c2goIi9vcmdhbml6YXRpb24iKX19LFtlLmNyZWF0ZVZOb2RlKFYse25hbWU6ImktbHVjaWRlLXNldHRpbmdzIixjbGFzczoic2l6ZS00IHNocmluay0wIHRleHQtbXV0ZWQifSksZS5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIk1hbmFnZSBvcmdhbml6YXRpb24iKV0sOCxbIm9uQ2xpY2siXSksZS5jcmVhdGVWTm9kZSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdy1mdWxsIHB4LTMgcHktMS41IHRleHQtc20gaG92ZXI6YmctZWxldmF0ZWQgY3Vyc29yLXBvaW50ZXIgdGV4dC1sZWZ0IHJvdW5kZWQiLG9uQ2xpY2s6ZT0+e3gudmFsdWU9ITEsQi52YWx1ZT0hMH19LFtlLmNyZWF0ZVZOb2RlKFYse25hbWU6ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAgdGV4dC1tdXRlZCJ9KSxlLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiQ3JlYXRlIG9yZ2FuaXphdGlvbiIpXSw4LFsib25DbGljayJdKV0pXSldO2woYDxkaXYgY2xhc3M9InctNTYgZmxleCBmbGV4LWNvbCIke259PjxkaXYgY2xhc3M9InAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCIke259PmApLGwoamUoSSx7bW9kZWxWYWx1ZTplLnVucmVmKGQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5lLmlzUmVmKGQpP2QudmFsdWU9dDpudWxsLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IlNlYXJjaCBvcmdhbml6YXRpb25z4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLGksbikpLGwoYDwvZGl2PjxkaXYgY2xhc3M9Im1heC1oLTYwIG92ZXJmbG93LXktYXV0byBweS0xIiR7bn0+XHgzYyEtLVstLVx4M2VgKSxHZShlLnVucmVmKHUpLHQ9PntsKGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCIke259PmApLGwoamUoVix7bmFtZTp0LmlkPT09ZS51bnJlZihvKS5hY3RpdmVPcmdhbml6YXRpb25JZD8iaS1sdWNpZGUtY2hlY2siOiJpLWx1Y2lkZS1idWlsZGluZyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCJ9LG51bGwsaSxuKSksbChgPHNwYW4gY2xhc3M9InRydW5jYXRlIiR7bn0+JHtRZSh0Lm5hbWUpfTwvc3Bhbj48L2J1dHRvbj5gKX0pLGwoIlx4M2MhLS1dLS1ceDNlIiksZS51bnJlZihnKT9sKGA8ZGl2IGNsYXNzPSJweC0zIHB5LTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQiJHtufT4gTG9hZGluZ+KApiA8L2Rpdj5gKTowIT09ZS51bnJlZih1KS5sZW5ndGh8fGUudW5yZWYoZyk/bCgiXHgzYyEtLS0tXHgzZSIpOmwoYDxkaXYgY2xhc3M9InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCIke259PiBObyBvcmdhbml6YXRpb25zIGZvdW5kLiA8L2Rpdj5gKSxsKGA8L2Rpdj48ZGl2IGNsYXNzPSJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTEiJHtufT48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCByb3VuZGVkIiR7bn0+YCksbChqZShWLHtuYW1lOiJpLWx1Y2lkZS1zZXR0aW5ncyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCB0ZXh0LW11dGVkIn0sbnVsbCxpLG4pKSxsKGA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke259Pk1hbmFnZSBvcmdhbml6YXRpb248L3NwYW4+PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgcm91bmRlZCIke259PmApLGwoamUoVix7bmFtZToiaS1sdWNpZGUtcGx1cyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCB0ZXh0LW11dGVkIn0sbnVsbCxpLG4pKSxsKGA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke259PkNyZWF0ZSBvcmdhbml6YXRpb248L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+YCl9KSxkZWZhdWx0OmUud2l0aEN0eCgodCxvLGksbik9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZShrLHtsYWJlbDpsLmNvbGxhcHNlZD92b2lkIDA6ZS51bnJlZihOKSxpY29uOiJpLWx1Y2lkZS1idWlsZGluZyIsInRyYWlsaW5nLWljb24iOmwuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixibG9jazoiIixzcXVhcmU6bC5jb2xsYXBzZWQsY2xhc3M6ImRhdGEtW3N0YXRlPW9wZW5dOmJnLWVsZXZhdGVkIix1aTp7dHJhaWxpbmdJY29uOiJ0ZXh0LWRpbW1lZCJ9fSxudWxsLDgsWyJsYWJlbCIsInRyYWlsaW5nLWljb24iLCJzcXVhcmUiXSldO28oamUoayx7bGFiZWw6bC5jb2xsYXBzZWQ/dm9pZCAwOmUudW5yZWYoTiksaWNvbjoiaS1sdWNpZGUtYnVpbGRpbmciLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifX0sbnVsbCxpLG4pKX0pLF86MX0sbikpLGkoamUoQSx7b3BlbjplLnVucmVmKEIpLCJvblVwZGF0ZTpvcGVuIjp0PT5lLmlzUmVmKEIpP0IudmFsdWU9dDpudWxsLHRpdGxlOiJDcmVhdGUgb3JnYW5pemF0aW9uIn0se2JvZHk6ZS53aXRoQ3R4KCh0LGwsbyxpKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKHose2xhYmVsOiJOYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5jcmVhdGVWTm9kZShJLHttb2RlbFZhbHVlOmUudW5yZWYodyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnQ9PmUuaXNSZWYodyk/dy52YWx1ZT10Om51bGwscGxhY2Vob2xkZXI6ImUuZy4gQWNtZSBDb3JwIixjbGFzczoidy1mdWxsIixhdXRvZm9jdXM6IiIsb25LZXlkb3duOmUud2l0aEtleXMoc3VibWl0Q3JlYXRlLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSldO2woamUoeix7bGFiZWw6Ik5hbWUiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoSSx7bW9kZWxWYWx1ZTplLnVucmVmKHcpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5lLmlzUmVmKHcpP3cudmFsdWU9dDpudWxsLHBsYWNlaG9sZGVyOiJlLmcuIEFjbWUgQ29ycCIsY2xhc3M6InctZnVsbCIsYXV0b2ZvY3VzOiIiLG9uS2V5ZG93bjplLndpdGhLZXlzKHN1Ym1pdENyZWF0ZSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChqZShJLHttb2RlbFZhbHVlOmUudW5yZWYodyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnQ9PmUuaXNSZWYodyk/dy52YWx1ZT10Om51bGwscGxhY2Vob2xkZXI6ImUuZy4gQWNtZSBDb3JwIixjbGFzczoidy1mdWxsIixhdXRvZm9jdXM6IiIsb25LZXlkb3duOnN1Ym1pdENyZWF0ZX0sbnVsbCxvLGkpKX0pLF86MX0sbyxpKSl9KSxmb290ZXI6ZS53aXRoQ3R4KCh0LGwsbyxpKT0+e2lmKCFsKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LFtlLmNyZWF0ZVZOb2RlKGsse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5CLnZhbHVlPSExfSxudWxsLDgsWyJvbkNsaWNrIl0pLGUuY3JlYXRlVk5vZGUoayx7bGFiZWw6IkNyZWF0ZSIsbG9hZGluZzplLnVucmVmKFMpLGRpc2FibGVkOiFlLnVucmVmKHcpLnRyaW0oKSxvbkNsaWNrOnN1Ym1pdENyZWF0ZX0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldO2woYDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIiJHtpfT5gKSxsKGplKGsse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5CLnZhbHVlPSExfSxudWxsLG8saSkpLGwoamUoayx7bGFiZWw6IkNyZWF0ZSIsbG9hZGluZzplLnVucmVmKFMpLGRpc2FibGVkOiFlLnVucmVmKHcpLnRyaW0oKSxvbkNsaWNrOnN1Ym1pdENyZWF0ZX0sbnVsbCxvLGkpKSxsKCI8L2Rpdj4iKX0pLF86MX0sbikpLGkoIlx4M2MhLS1dLS1ceDNlIil9fX0pLG5hPWlhLnNldHVwO2lhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL09yZ2FuaXphdGlvbi9Pcmdhbml6YXRpb25NZW51LnZ1ZSIpLG5hP25hKHQsbCk6dm9pZCAwfTtjb25zdCByYT1PYmplY3QuYXNzaWduKGlhLHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbnUifSksc2E9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVXNlck1lbnUiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntjb2xsYXBzZWQ6e3R5cGU6Qm9vbGVhbn19LHNldHVwKGwpe2NvbnN0IG89dXNlQ29sb3JNb2RlKCksaT10KCksbj1BKCkscj1lLmNvbXB1dGVkKCgpPT4oe25hbWU6aS5jdXJyZW50VXNlcj8ubmFtZT8/aS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbD8/Ikd1ZXN0IixlbWFpbDppLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsPz8iIixhdmF0YXI6aS5jdXJyZW50VXNlcj8uYXZhdGFyP3tzcmM6aS5jdXJyZW50VXNlci5hdmF0YXIsYWx0OmkuY3VycmVudFVzZXIubmFtZT8/IiJ9OnZvaWQgMH0pKTtjb25zdCBzPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVtdO3JldHVybiBlLnB1c2goW3t0eXBlOiJsYWJlbCIsbGFiZWw6ci52YWx1ZS5uYW1lLGF2YXRhcjpyLnZhbHVlLmF2YXRhcn1dKSxpLmlzSW1wZXJzb25hdGluZyYmZS5wdXNoKFt7bGFiZWw6YEJhY2sgdG8gJHtpLmltcGVyc29uYXRvcj8ubmFtZT8/aS5pbXBlcnNvbmF0b3I/LnByaW1hcnlfZW1haWw/PyJhZG1pbiJ9YCxpY29uOiJpLWx1Y2lkZS1zaGllbGQiLGNvbG9yOiJ3YXJuaW5nIixvblNlbGVjdDooKT0+eyFhc3luYyBmdW5jdGlvbigpe3RyeXthd2FpdCBpLnN0b3BJbXBlcnNvbmF0aW9uKCksbi5hZGQoe3RpdGxlOiJTdG9wcGVkIGltcGVyc29uYXRpb24iLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtuLmFkZCh7dGl0bGU6IlN0b3AgaW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9fSgpfX1dKSxlLnB1c2goW3tsYWJlbDoiUHJvZmlsZSIsaWNvbjoiaS1sdWNpZGUtdXNlciIsdG86Ii9zZXR0aW5ncyJ9XSksZS5wdXNoKFt7bGFiZWw6IkFwcGVhcmFuY2UiLGljb246ImktbHVjaWRlLXN1bi1tb29uIixjaGlsZHJlbjpbe2xhYmVsOiJMaWdodCIsaWNvbjoiaS1sdWNpZGUtc3VuIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDoibGlnaHQiPT09by52YWx1ZSxvblNlbGVjdChlKXtlLnByZXZlbnREZWZhdWx0KCksby5wcmVmZXJlbmNlPSJsaWdodCJ9fSx7bGFiZWw6IkRhcmsiLGljb246ImktbHVjaWRlLW1vb24iLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOiJkYXJrIj09PW8udmFsdWUsb25TZWxlY3QoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLG8ucHJlZmVyZW5jZT0iZGFyayJ9fSx7bGFiZWw6IlN5c3RlbSIsaWNvbjoiaS1sdWNpZGUtbGFwdG9wIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDoic3lzdGVtIj09PW8ucHJlZmVyZW5jZSxvblNlbGVjdChlKXtlLnByZXZlbnREZWZhdWx0KCksby5wcmVmZXJlbmNlPSJzeXN0ZW0ifX1dfV0pLGUucHVzaChbe2xhYmVsOiJEb2N1bWVudGF0aW9uIixpY29uOiJpLWx1Y2lkZS1ib29rLW9wZW4iLHRvOiJodHRwczovL3VpLm51eHQuY29tL2RvY3MvZ2V0dGluZy1zdGFydGVkL2luc3RhbGxhdGlvbi9udXh0Iix0YXJnZXQ6Il9ibGFuayJ9LHtsYWJlbDoiR2l0SHViIHJlcG9zaXRvcnkiLGljb246Imktc2ltcGxlLWljb25zLWdpdGh1YiIsdG86Imh0dHBzOi8vZ2l0aHViLmNvbS90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUiLHRhcmdldDoiX2JsYW5rIn0se2xhYmVsOiJMb2cgb3V0IixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0IixvblNlbGVjdDooKT0+eyFhc3luYyBmdW5jdGlvbigpe3RyeXthd2FpdCBpLmxvZ291dCgpfWZpbmFsbHl7YXdhaXQgUSgiL2F1dGgvbG9naW4iKX19KCl9fV0pLGV9KTtyZXR1cm4odCxvLGksbik9Pntjb25zdCB1PWI7byhqZShLZSxlLm1lcmdlUHJvcHMoe2l0ZW1zOmUudW5yZWYocyksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn0sdWk6e2NvbnRlbnQ6bC5jb2xsYXBzZWQ/InctNTYiOiJ3LSgtLXJla2EtZHJvcGRvd24tbWVudS10cmlnZ2VyLXdpZHRoKSJ9fSxuKSx7ZGVmYXVsdDplLndpdGhDdHgoKHQsbyxpLG4pPT57aWYoIW8pcmV0dXJuW2UuY3JlYXRlVk5vZGUodSxlLm1lcmdlUHJvcHMoZS51bnJlZihyKS5hdmF0YXI/e2F2YXRhcjplLnVucmVmKHIpLmF2YXRhcn06e2ljb246ImktbHVjaWRlLXVzZXIifSx7bGFiZWw6bC5jb2xsYXBzZWQ/dm9pZCAwOmUudW5yZWYocikubmFtZSwidHJhaWxpbmctaWNvbiI6bC5jb2xsYXBzZWQ/dm9pZCAwOiJpLWx1Y2lkZS1jaGV2cm9ucy11cC1kb3duIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGJsb2NrOiIiLHNxdWFyZTpsLmNvbGxhcHNlZCxjbGFzczoiZGF0YS1bc3RhdGU9b3Blbl06YmctZWxldmF0ZWQiLHVpOnt0cmFpbGluZ0ljb246InRleHQtZGltbWVkIn0sImRhdGEtdGVzdGlkIjoidXNlci1tZW51LXRyaWdnZXIifSksbnVsbCwxNixbImxhYmVsIiwidHJhaWxpbmctaWNvbiIsInNxdWFyZSJdKV07byhqZSh1LGUubWVyZ2VQcm9wcyhlLnVucmVmKHIpLmF2YXRhcj97YXZhdGFyOmUudW5yZWYocikuYXZhdGFyfTp7aWNvbjoiaS1sdWNpZGUtdXNlciJ9LHtsYWJlbDpsLmNvbGxhcHNlZD92b2lkIDA6ZS51bnJlZihyKS5uYW1lLCJ0cmFpbGluZy1pY29uIjpsLmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOmwuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJ1c2VyLW1lbnUtdHJpZ2dlciJ9KSxudWxsLGksbikpfSksXzoxfSxpKSl9fX0pLGNhPXNhLnNldHVwO3NhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL1VzZXIvVXNlck1lbnUudnVlIiksY2E/Y2EodCxsKTp2b2lkIDB9O2NvbnN0IHVhPU9iamVjdC5hc3NpZ24oc2Ese19fbmFtZToiVXNlck1lbnUifSksZGE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiZGVmYXVsdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobyl7Y29uc3Qgbj1lLnJlZighMSkscj11c2VDb2xvck1vZGUoKSxzPXQoKSx1PVJlKCk7ZnVuY3Rpb24gc2V0VGhlbWUoZSl7ci5wcmVmZXJlbmNlPWV9Y29uc3QgZD1lLmNvbXB1dGVkKCgpPT5zLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKTtmdW5jdGlvbiBjYW5TaG93KGUpe2lmKCFlLmFiaWxpdHkpcmV0dXJuITA7cmV0dXJuKEFycmF5LmlzQXJyYXkoZS5hYmlsaXR5KT9lLmFiaWxpdHk6W2UuYWJpbGl0eV0pLnNvbWUoZT0+aShkLnZhbHVlLGUpKX1mdW5jdGlvbiB0b01lbnVJdGVtKGUpe3JldHVybntsYWJlbDplLmxhYmVsLGljb246ZS5pY29uLHRvOmUudG8sdHlwZTplLnR5cGUsZGVmYXVsdE9wZW46ZS5kZWZhdWx0T3BlbixjaGlsZHJlbjplLmNoaWxkcmVuPy5maWx0ZXIoY2FuU2hvdykubWFwKHRvTWVudUl0ZW0pLG9uU2VsZWN0KCl7ZS5vblNlbGVjdD8uKCksZS5jaGlsZHJlbj8ubGVuZ3RofHwobi52YWx1ZT0hMSl9fX1jb25zdCBmPWUuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVsuLi51Lm5hdkl0ZW1zLnZhbHVlXS5zb3J0KChlLHQpPT5lLnByaW9yaXR5LXQucHJpb3JpdHkpO3JldHVybltbLi4uZS5maWx0ZXIoZT0+Im1haW4iPT09ZS5zZWN0aW9uJiZjYW5TaG93KGUpKS5tYXAodG9NZW51SXRlbSkse2xhYmVsOiJTZXR0aW5ncyIsaWNvbjoiaS1sdWNpZGUtc2V0dGluZ3MiLGRlZmF1bHRPcGVuOiEwLHR5cGU6InRyaWdnZXIiLGNoaWxkcmVuOmUuZmlsdGVyKGU9PiJzZXR0aW5ncyI9PT1lLnNlY3Rpb24mJmNhblNob3coZSkpLm1hcCh0b01lbnVJdGVtKX1dLGUuZmlsdGVyKGU9PiJzdWIiPT09ZS5zZWN0aW9uJiZjYW5TaG93KGUpKS5tYXAodG9NZW51SXRlbSldfSksZz1lLmNvbXB1dGVkKCgpPT5be2lkOiJnb3RvIixsYWJlbDoiR28gdG8iLGl0ZW1zOmYudmFsdWUuZmxhdCgpLmZsYXRNYXAoZT0+ZS5jaGlsZHJlbj8ubGVuZ3RoP2UuY2hpbGRyZW46W2VdKX0se2lkOiJ0aGVtZSIsbGFiZWw6IlRoZW1lIixpdGVtczpbe2xhYmVsOiJTeXN0ZW0iLGljb246ImktbHVjaWRlLW1vbml0b3IiLG9uU2VsZWN0OigpPT5zZXRUaGVtZSgic3lzdGVtIil9LHtsYWJlbDoiTGlnaHQiLGljb246ImktbHVjaWRlLXN1biIsb25TZWxlY3Q6KCk9PnNldFRoZW1lKCJsaWdodCIpfSx7bGFiZWw6IkRhcmsiLGljb246ImktbHVjaWRlLW1vb24iLG9uU2VsZWN0OigpPT5zZXRUaGVtZSgiZGFyayIpfV19XSk7cmV0dXJuKHQsbyxpLHIpPT57Y29uc3Qgcz1TdCxkPV90LHk9bCxiPV9lLGs9ZWE7byhqZShldCxlLm1lcmdlUHJvcHMoe3VuaXQ6InJlbSJ9LHIpLHtkZWZhdWx0OmUud2l0aEN0eCgobCxvLGkscik9PntpZighbylyZXR1cm5bZS5jcmVhdGVWTm9kZShzLHtpZDoiZGVmYXVsdCIsb3BlbjplLnVucmVmKG4pLCJvblVwZGF0ZTpvcGVuIjp0PT5lLmlzUmVmKG4pP24udmFsdWU9dDpudWxsLGNvbGxhcHNpYmxlOiIiLHJlc2l6YWJsZToiIixjbGFzczoiYmctZWxldmF0ZWQvMjUiLHVpOntoZWFkZXI6ImxnOmJvcmRlci1iIGxnOmJvcmRlci1kZWZhdWx0Iixmb290ZXI6ImxnOmJvcmRlci10IGxnOmJvcmRlci1kZWZhdWx0Iixib2R5OiJnYXAtMiBweS00In19LHtoZWFkZXI6ZS53aXRoQ3R4KCh7Y29sbGFwc2VkOnR9KT0+W2UuY3JlYXRlVk5vZGUocmEse2NvbGxhcHNlZDp0fSxudWxsLDgsWyJjb2xsYXBzZWQiXSldKSxkZWZhdWx0OmUud2l0aEN0eCgoe2NvbGxhcHNlZDp0fSk9PltlLmNyZWF0ZVZOb2RlKGQse2NvbGxhcHNlZDp0LGNsYXNzOiJiZy10cmFuc3BhcmVudCByaW5nLWRlZmF1bHQifSxudWxsLDgsWyJjb2xsYXBzZWQiXSksZS5jcmVhdGVWTm9kZShvYSx7Y29sbGFwc2VkOnR9LG51bGwsOCxbImNvbGxhcHNlZCJdKSxlLmNyZWF0ZVZOb2RlKHksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGIse2NvbGxhcHNlZDp0LGl0ZW1zOmUudW5yZWYoZilbMF0sb3JpZW50YXRpb246InZlcnRpY2FsIix0b29sdGlwOiIiLHBvcG92ZXI6IiJ9LG51bGwsOCxbImNvbGxhcHNlZCIsIml0ZW1zIl0pLGUuY3JlYXRlVk5vZGUoYix7Y29sbGFwc2VkOnQsaXRlbXM6ZS51bnJlZihmKVsxXSxvcmllbnRhdGlvbjoidmVydGljYWwiLHRvb2x0aXA6IiIscG9wb3ZlcjoiIixjbGFzczoibXQtYXV0byJ9LG51bGwsOCxbImNvbGxhcHNlZCIsIml0ZW1zIl0pXSksXzoyfSwxMDI0KV0pLGZvb3RlcjplLndpdGhDdHgoKHtjb2xsYXBzZWQ6dH0pPT5bZS5jcmVhdGVWTm9kZSh1YSx7Y29sbGFwc2VkOnR9LG51bGwsOCxbImNvbGxhcHNlZCJdKV0pLF86MX0sOCxbIm9wZW4iLCJvblVwZGF0ZTpvcGVuIl0pLGUuY3JlYXRlVk5vZGUoayx7Z3JvdXBzOmUudW5yZWYoZyl9LG51bGwsOCxbImdyb3VwcyJdKSxlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKSxlLmNyZWF0ZVZOb2RlKHksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PlsoZS5vcGVuQmxvY2soITApLGUuY3JlYXRlQmxvY2soZS5GcmFnbWVudCxudWxsLGUucmVuZGVyTGlzdChlLnVucmVmKHUpLm92ZXJsYXlzLnZhbHVlLHQ9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS5yZXNvbHZlRHluYW1pY0NvbXBvbmVudCh0LmNvbXBvbmVudCkse2tleTp0LmlkfSkpKSwxMjgpKV0pLF86MX0pXTtvKGplKHMse2lkOiJkZWZhdWx0IixvcGVuOmUudW5yZWYobiksIm9uVXBkYXRlOm9wZW4iOnQ9PmUuaXNSZWYobik/bi52YWx1ZT10Om51bGwsY29sbGFwc2libGU6IiIscmVzaXphYmxlOiIiLGNsYXNzOiJiZy1lbGV2YXRlZC8yNSIsdWk6e2hlYWRlcjoibGc6Ym9yZGVyLWIgbGc6Ym9yZGVyLWRlZmF1bHQiLGZvb3RlcjoibGc6Ym9yZGVyLXQgbGc6Ym9yZGVyLWRlZmF1bHQiLGJvZHk6ImdhcC0yIHB5LTQifX0se2hlYWRlcjplLndpdGhDdHgoKHtjb2xsYXBzZWQ6dH0sbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUocmEse2NvbGxhcHNlZDp0fSxudWxsLDgsWyJjb2xsYXBzZWQiXSldO2woamUocmEse2NvbGxhcHNlZDp0fSxudWxsLG8saSkpfSksZGVmYXVsdDplLndpdGhDdHgoKHtjb2xsYXBzZWQ6dH0sbCxvLGkpPT57aWYoIWwpcmV0dXJuW2UuY3JlYXRlVk5vZGUoZCx7Y29sbGFwc2VkOnQsY2xhc3M6ImJnLXRyYW5zcGFyZW50IHJpbmctZGVmYXVsdCJ9LG51bGwsOCxbImNvbGxhcHNlZCJdKSxlLmNyZWF0ZVZOb2RlKG9hLHtjb2xsYXBzZWQ6dH0sbnVsbCw4LFsiY29sbGFwc2VkIl0pLGUuY3JlYXRlVk5vZGUoeSxudWxsLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVk5vZGUoYix7Y29sbGFwc2VkOnQsaXRlbXM6ZS51bnJlZihmKVswXSxvcmllbnRhdGlvbjoidmVydGljYWwiLHRvb2x0aXA6IiIscG9wb3ZlcjoiIn0sbnVsbCw4LFsiY29sbGFwc2VkIiwiaXRlbXMiXSksZS5jcmVhdGVWTm9kZShiLHtjb2xsYXBzZWQ6dCxpdGVtczplLnVucmVmKGYpWzFdLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsdG9vbHRpcDoiIixwb3BvdmVyOiIiLGNsYXNzOiJtdC1hdXRvIn0sbnVsbCw4LFsiY29sbGFwc2VkIiwiaXRlbXMiXSldKSxfOjJ9LDEwMjQpXTtsKGplKGQse2NvbGxhcHNlZDp0LGNsYXNzOiJiZy10cmFuc3BhcmVudCByaW5nLWRlZmF1bHQifSxudWxsLG8saSkpLGwoamUob2Ese2NvbGxhcHNlZDp0fSxudWxsLG8saSkpLGwoamUoeSxudWxsLHt9LG8saSkpfSksZm9vdGVyOmUud2l0aEN0eCgoe2NvbGxhcHNlZDp0fSxsLG8saSk9PntpZighbClyZXR1cm5bZS5jcmVhdGVWTm9kZSh1YSx7Y29sbGFwc2VkOnR9LG51bGwsOCxbImNvbGxhcHNlZCJdKV07bChqZSh1YSx7Y29sbGFwc2VkOnR9LG51bGwsbyxpKSl9KSxfOjF9LGkscikpLG8oamUoayx7Z3JvdXBzOmUudW5yZWYoZyl9LG51bGwsaSxyKSksSGUodC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsbyxpLHIpLG8oamUoeSxudWxsLHt9LGkscikpfSksXzozfSxpKSl9fX0pLHBhPWRhLnNldHVwO2RhLnNldHVwPSh0LGwpPT57Y29uc3Qgbz1lLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oby5tb2R1bGVzfHwoby5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoImxheW91dHMvZGVmYXVsdC52dWUiKSxwYT9wYSh0LGwpOnZvaWQgMH07ZXhwb3J0e2RhIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZWZhdWx0LUNSdHRqa2thLm1qcy5tYXAK", "chunks/build/error-404-CzWfL_oH.mjs": "aW1wb3J0e2FUIGFzIGUsdSBhcyB0LHYgYXMgcixhSyBhcyBufWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7byxxIGFzIHMsZiBhcyBhfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IGk9e19fbmFtZToiZXJyb3ItNDA0IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXBwTmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiTnV4dCJ9LHN0YXR1czp7dHlwZTpOdW1iZXIsZGVmYXVsdDo0MDR9LHN0YXR1c1RleHQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlBhZ2Ugbm90IGZvdW5kIn0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlNvcnJ5LCB0aGUgcGFnZSB5b3UgYXJlIGxvb2tpbmcgZm9yIGNvdWxkIG5vdCBiZSBmb3VuZC4ifSxiYWNrSG9tZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiR28gYmFjayBob21lIn19LHNldHVwKGUpe2NvbnN0IGk9ZTtyZXR1cm4gdCh7dGl0bGU6YCR7aS5zdGF0dXN9IC0gJHtpLnN0YXR1c1RleHR9IHwgJHtpLmFwcE5hbWV9YCxzY3JpcHQ6W3tpbm5lckhUTUw6JyFmdW5jdGlvbigpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYoIShlJiZlLnN1cHBvcnRzJiZlLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpKXtmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwnbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXVwnKSlyKGUpO25ldyBNdXRhdGlvbk9ic2VydmVyKGU9Pntmb3IoY29uc3QgbyBvZiBlKWlmKCJjaGlsZExpc3QiPT09by50eXBlKWZvcihjb25zdCBlIG9mIG8uYWRkZWROb2RlcykiTElOSyI9PT1lLnRhZ05hbWUmJiJtb2R1bGVwcmVsb2FkIj09PWUucmVsJiZyKGUpfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KX1mdW5jdGlvbiByKGUpe2lmKGUuZXApcmV0dXJuO2UuZXA9ITA7Y29uc3Qgcj1mdW5jdGlvbihlKXtjb25zdCByPXt9O3JldHVybiBlLmludGVncml0eSYmKHIuaW50ZWdyaXR5PWUuaW50ZWdyaXR5KSxlLnJlZmVycmVyUG9saWN5JiYoci5yZWZlcnJlclBvbGljeT1lLnJlZmVycmVyUG9saWN5KSwidXNlLWNyZWRlbnRpYWxzIj09PWUuY3Jvc3NPcmlnaW4/ci5jcmVkZW50aWFscz0iaW5jbHVkZSI6ImFub255bW91cyI9PT1lLmNyb3NzT3JpZ2luP3IuY3JlZGVudGlhbHM9Im9taXQiOnIuY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixyfShlKTtmZXRjaChlLmhyZWYscil9fSgpOyd9XSxzdHlsZTpbe2lubmVySFRNTDonKiw6YWZ0ZXIsOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0tdW4tZGVmYXVsdC1ib3JkZXItY29sb3IsI2U1ZTdlYik7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowO2JveC1zaXppbmc6Ym9yZGVyLWJveH06YWZ0ZXIsOmJlZm9yZXstLXVuLWNvbnRlbnQ6IiJ9aHRtbHtsaW5lLWhlaWdodDoxLjU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2wsTm90byBDb2xvciBFbW9qaTtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDstbW96LXRhYi1zaXplOjQ7dGFiLXNpemU6NDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keXtsaW5lLWhlaWdodDppbmhlcml0O21hcmdpbjowfWgxLGgye2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0fWgxLGgyLHB7bWFyZ2luOjB9Kiw6YWZ0ZXIsOmJlZm9yZXstLXVuLXJvdGF0ZTowOy0tdW4tcm90YXRlLXg6MDstLXVuLXJvdGF0ZS15OjA7LS11bi1yb3RhdGUtejowOy0tdW4tc2NhbGUteDoxOy0tdW4tc2NhbGUteToxOy0tdW4tc2NhbGUtejoxOy0tdW4tc2tldy14OjA7LS11bi1za2V3LXk6MDstLXVuLXRyYW5zbGF0ZS14OjA7LS11bi10cmFuc2xhdGUteTowOy0tdW4tdHJhbnNsYXRlLXo6MDstLXVuLXBhbi14OiA7LS11bi1wYW4teTogOy0tdW4tcGluY2gtem9vbTogOy0tdW4tc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczpwcm94aW1pdHk7LS11bi1vcmRpbmFsOiA7LS11bi1zbGFzaGVkLXplcm86IDstLXVuLW51bWVyaWMtZmlndXJlOiA7LS11bi1udW1lcmljLXNwYWNpbmc6IDstLXVuLW51bWVyaWMtZnJhY3Rpb246IDstLXVuLWJvcmRlci1zcGFjaW5nLXg6MDstLXVuLWJvcmRlci1zcGFjaW5nLXk6MDstLXVuLXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1zaGFkb3ctaW5zZXQ6IDstLXVuLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLWluc2V0OiA7LS11bi1yaW5nLW9mZnNldC13aWR0aDowcHg7LS11bi1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdW4tcmluZy13aWR0aDowcHg7LS11bi1yaW5nLWNvbG9yOnJnYmEoMTQ3LDE5NywyNTMsLjUpOy0tdW4tYmx1cjogOy0tdW4tYnJpZ2h0bmVzczogOy0tdW4tY29udHJhc3Q6IDstLXVuLWRyb3Atc2hhZG93OiA7LS11bi1ncmF5c2NhbGU6IDstLXVuLWh1ZS1yb3RhdGU6IDstLXVuLWludmVydDogOy0tdW4tc2F0dXJhdGU6IDstLXVuLXNlcGlhOiA7LS11bi1iYWNrZHJvcC1ibHVyOiA7LS11bi1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS11bi1iYWNrZHJvcC1jb250cmFzdDogOy0tdW4tYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS11bi1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS11bi1iYWNrZHJvcC1pbnZlcnQ6IDstLXVuLWJhY2tkcm9wLW9wYWNpdHk6IDstLXVuLWJhY2tkcm9wLXNhdHVyYXRlOiA7LS11bi1iYWNrZHJvcC1zZXBpYTogfSd9XX0pLCh0LGksdSxkKT0+e2NvbnN0IGM9bjtpKGA8ZGl2JHtvKHIubWVyZ2VQcm9wcyh7Y2xhc3M6ImFudGlhbGlhc2VkIGJnLXdoaXRlIGRhcms6YmctWyMwMjA0MjBdIGRhcms6dGV4dC13aGl0ZSBmb250LXNhbnMgZ3JpZCBtaW4taC1zY3JlZW4gb3ZlcmZsb3ctaGlkZGVuIHBsYWNlLWNvbnRlbnQtY2VudGVyIHRleHQtWyMwMjA0MjBdIHRyYWNraW5nLXdpZGUifSxkKSl9IGRhdGEtdi02ZDdiYWNmZj48ZGl2IGNsYXNzPSJtYXgtdy01MjBweCB0ZXh0LWNlbnRlciIgZGF0YS12LTZkN2JhY2ZmPjxoMSBjbGFzcz0iZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgbWItNCBzbTp0ZXh0LVsxMTBweF0gdGFidWxhci1udW1zIHRleHQtWzgwcHhdIiBkYXRhLXYtNmQ3YmFjZmY+JHtzKGUuc3RhdHVzKX08L2gxPjxoMiBjbGFzcz0iZm9udC1zZW1pYm9sZCBtYi0yIHNtOnRleHQtM3hsIHRleHQtMnhsIiBkYXRhLXYtNmQ3YmFjZmY+JHtzKGUuc3RhdHVzVGV4dCl9PC9oMj48cCBjbGFzcz0ibWItNCBweC0yIHRleHQtWyM2NDc0OEJdIHRleHQtbWQiIGRhdGEtdi02ZDdiYWNmZj4ke3MoZS5kZXNjcmlwdGlvbil9PC9wPjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHctZnVsbCIgZGF0YS12LTZkN2JhY2ZmPmApLGkoYShjLHt0bzoiLyIsY2xhc3M6ImZvbnQtbWVkaXVtIGhvdmVyOnRleHQtWyMwMERDODJdIHRleHQtc20gdW5kZXJsaW5lIHVuZGVybGluZS1vZmZzZXQtMyJ9LHtkZWZhdWx0OnIud2l0aEN0eCgodCxuLG8sYSk9PntpZighbilyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZS5iYWNrSG9tZSksMSldO24oYCR7cyhlLmJhY2tIb21lKX1gKX0pLF86MX0sdSkpLGkoIjwvZGl2PjwvZGl2PjwvZGl2PiIpfX19LHU9aS5zZXR1cDtpLnNldHVwPShlLHQpPT57Y29uc3Qgbj1yLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSIpLHU/dShlLHQpOnZvaWQgMH07Y29uc3QgZD1lKGksW1siX19zY29wZUlkIiwiZGF0YS12LTZkN2JhY2ZmIl1dKTtleHBvcnR7ZCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3ItNDA0LUN6V2ZMX29ILm1qcy5tYXAK", "chunks/build/error-404-styles.CB4zfhTP.mjs": "Y29uc3QgYT1bIi5ncmlkW2RhdGEtdi02ZDdiYWNmZl17ZGlzcGxheTpncmlkfS5tYi0yW2RhdGEtdi02ZDdiYWNmZl17bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItNFtkYXRhLXYtNmQ3YmFjZmZde21hcmdpbi1ib3R0b206MXJlbX0ubWF4LXctNTIwcHhbZGF0YS12LTZkN2JhY2ZmXXttYXgtd2lkdGg6NTIwcHh9Lm1pbi1oLXNjcmVlbltkYXRhLXYtNmQ3YmFjZmZde21pbi1oZWlnaHQ6MTAwdmh9LnctZnVsbFtkYXRhLXYtNmQ3YmFjZmZde3dpZHRoOjEwMCV9LmZsZXhbZGF0YS12LTZkN2JhY2ZmXXtkaXNwbGF5OmZsZXh9LnBsYWNlLWNvbnRlbnQtY2VudGVyW2RhdGEtdi02ZDdiYWNmZl17cGxhY2UtY29udGVudDpjZW50ZXJ9Lml0ZW1zLWNlbnRlcltkYXRhLXYtNmQ3YmFjZmZde2FsaWduLWl0ZW1zOmNlbnRlcn0uanVzdGlmeS1jZW50ZXJbZGF0YS12LTZkN2JhY2ZmXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5vdmVyZmxvdy1oaWRkZW5bZGF0YS12LTZkN2JhY2ZmXXtvdmVyZmxvdzpoaWRkZW59LmJnLXdoaXRlW2RhdGEtdi02ZDdiYWNmZl17LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYmctb3BhY2l0eSkpfS5weC0yW2RhdGEtdi02ZDdiYWNmZl17cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnRleHQtY2VudGVyW2RhdGEtdi02ZDdiYWNmZl17dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtXFxbODBweFxcXVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTo4MHB4fS50ZXh0LTJ4bFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1zbVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LnRleHQtXFxbXFwjMDIwNDIwXFxdW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS50ZXh0LVxcW1xcIzY0NzQ4QlxcXVtkYXRhLXYtNmQ3YmFjZmZdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDEwMCAxMTYgMTM5L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS5ob3ZlclxcOnRleHQtXFxbXFwjMDBEQzgyXFxdW2RhdGEtdi02ZDdiYWNmZl06aG92ZXJ7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMCAyMjAgMTMwL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS5mb250LW1lZGl1bVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtd2VpZ2h0OjUwMH0uZm9udC1zZW1pYm9sZFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1ub25lW2RhdGEtdi02ZDdiYWNmZl17bGluZS1oZWlnaHQ6MX0udHJhY2tpbmctd2lkZVtkYXRhLXYtNmQ3YmFjZmZde2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5zW2RhdGEtdi02ZDdiYWNmZl17Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppfS50YWJ1bGFyLW51bXNbZGF0YS12LTZkN2JhY2ZmXXstLXVuLW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdW4tb3JkaW5hbCkgdmFyKC0tdW4tc2xhc2hlZC16ZXJvKSB2YXIoLS11bi1udW1lcmljLWZpZ3VyZSkgdmFyKC0tdW4tbnVtZXJpYy1zcGFjaW5nKSB2YXIoLS11bi1udW1lcmljLWZyYWN0aW9uKX0udW5kZXJsaW5lW2RhdGEtdi02ZDdiYWNmZl17dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS51bmRlcmxpbmUtb2Zmc2V0LTNbZGF0YS12LTZkN2JhY2ZmXXt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4fS5hbnRpYWxpYXNlZFtkYXRhLXYtNmQ3YmFjZmZdey13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfUBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXsuZGFya1xcOmJnLVxcW1xcIzAyMDQyMFxcXVtkYXRhLXYtNmQ3YmFjZmZdey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi1iZy1vcGFjaXR5KSl9LmRhcmtcXDp0ZXh0LXdoaXRlW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9fUBtZWRpYShtaW4td2lkdGg6NjQwcHgpey5zbVxcOnRleHQtXFxbMTEwcHhcXF1bZGF0YS12LTZkN2JhY2ZmXXtmb250LXNpemU6MTEwcHh9LnNtXFw6dGV4dC0zeGxbZGF0YS12LTZkN2JhY2ZmXXtmb250LXNpemU6MS44NzVyZW07bGluZS1oZWlnaHQ6Mi4yNXJlbX19Il07ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9yLTQwNC1zdHlsZXMuQ0I0emZoVFAubWpzLm1hcAo=", "chunks/build/error-500-DzHtsjEu.mjs": "aW1wb3J0e2FUIGFzIGUsdSBhcyB0LHYgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e28gYXMgbixxIGFzIG99ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgcz17X19uYW1lOiJlcnJvci01MDAiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthcHBOYW1lOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJOdXh0In0sc3RhdHVzOnt0eXBlOk51bWJlcixkZWZhdWx0OjUwMH0sc3RhdHVzVGV4dDp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiSW50ZXJuYWwgc2VydmVyIGVycm9yIn0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlRoaXMgcGFnZSBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZS4ifSxyZWZyZXNoOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJSZWZyZXNoIHRoaXMgcGFnZSJ9fSxzZXR1cChlKXtjb25zdCBzPWU7cmV0dXJuIHQoe3RpdGxlOmAke3Muc3RhdHVzfSAtICR7cy5zdGF0dXNUZXh0fSB8ICR7cy5hcHBOYW1lfWAsc2NyaXB0Olt7aW5uZXJIVE1MOichZnVuY3Rpb24oKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKS5yZWxMaXN0O2lmKCEoZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKSl7Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl1cJykpcihlKTtuZXcgTXV0YXRpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IG8gb2YgZSlpZigiY2hpbGRMaXN0Ij09PW8udHlwZSlmb3IoY29uc3QgZSBvZiBvLmFkZGVkTm9kZXMpIkxJTksiPT09ZS50YWdOYW1lJiYibW9kdWxlcHJlbG9hZCI9PT1lLnJlbCYmcihlKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSl9ZnVuY3Rpb24gcihlKXtpZihlLmVwKXJldHVybjtlLmVwPSEwO2NvbnN0IHI9ZnVuY3Rpb24oZSl7Y29uc3Qgcj17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJihyLmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKHIucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksInVzZS1jcmVkZW50aWFscyI9PT1lLmNyb3NzT3JpZ2luP3IuY3JlZGVudGlhbHM9ImluY2x1ZGUiOiJhbm9ueW1vdXMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJvbWl0IjpyLmNyZWRlbnRpYWxzPSJzYW1lLW9yaWdpbiIscn0oZSk7ZmV0Y2goZS5ocmVmLHIpfX0oKTsnfV0sc3R5bGU6W3tpbm5lckhUTUw6JyosOmFmdGVyLDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLXVuLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCNlNWU3ZWIpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MDtib3gtc2l6aW5nOmJvcmRlci1ib3h9OmFmdGVyLDpiZWZvcmV7LS11bi1jb250ZW50OiIifWh0bWx7bGluZS1oZWlnaHQ6MS41Oy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sLE5vdG8gQ29sb3IgRW1vamk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7LW1vei10YWItc2l6ZTo0O3RhYi1zaXplOjQ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWJvZHl7bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46MH1oMSxoMntmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0fWgxLGgyLHB7bWFyZ2luOjB9Kiw6YWZ0ZXIsOmJlZm9yZXstLXVuLXJvdGF0ZTowOy0tdW4tcm90YXRlLXg6MDstLXVuLXJvdGF0ZS15OjA7LS11bi1yb3RhdGUtejowOy0tdW4tc2NhbGUteDoxOy0tdW4tc2NhbGUteToxOy0tdW4tc2NhbGUtejoxOy0tdW4tc2tldy14OjA7LS11bi1za2V3LXk6MDstLXVuLXRyYW5zbGF0ZS14OjA7LS11bi10cmFuc2xhdGUteTowOy0tdW4tdHJhbnNsYXRlLXo6MDstLXVuLXBhbi14OiA7LS11bi1wYW4teTogOy0tdW4tcGluY2gtem9vbTogOy0tdW4tc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczpwcm94aW1pdHk7LS11bi1vcmRpbmFsOiA7LS11bi1zbGFzaGVkLXplcm86IDstLXVuLW51bWVyaWMtZmlndXJlOiA7LS11bi1udW1lcmljLXNwYWNpbmc6IDstLXVuLW51bWVyaWMtZnJhY3Rpb246IDstLXVuLWJvcmRlci1zcGFjaW5nLXg6MDstLXVuLWJvcmRlci1zcGFjaW5nLXk6MDstLXVuLXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1zaGFkb3ctaW5zZXQ6IDstLXVuLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLWluc2V0OiA7LS11bi1yaW5nLW9mZnNldC13aWR0aDowcHg7LS11bi1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdW4tcmluZy13aWR0aDowcHg7LS11bi1yaW5nLWNvbG9yOnJnYmEoMTQ3LDE5NywyNTMsLjUpOy0tdW4tYmx1cjogOy0tdW4tYnJpZ2h0bmVzczogOy0tdW4tY29udHJhc3Q6IDstLXVuLWRyb3Atc2hhZG93OiA7LS11bi1ncmF5c2NhbGU6IDstLXVuLWh1ZS1yb3RhdGU6IDstLXVuLWludmVydDogOy0tdW4tc2F0dXJhdGU6IDstLXVuLXNlcGlhOiA7LS11bi1iYWNrZHJvcC1ibHVyOiA7LS11bi1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS11bi1iYWNrZHJvcC1jb250cmFzdDogOy0tdW4tYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS11bi1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS11bi1iYWNrZHJvcC1pbnZlcnQ6IDstLXVuLWJhY2tkcm9wLW9wYWNpdHk6IDstLXVuLWJhY2tkcm9wLXNhdHVyYXRlOiA7LS11bi1iYWNrZHJvcC1zZXBpYTogfSd9XX0pLCh0LHMsYSxpKT0+e3MoYDxkaXYke24oci5tZXJnZVByb3BzKHtjbGFzczoiYW50aWFsaWFzZWQgYmctd2hpdGUgZGFyazpiZy1bIzAyMDQyMF0gZGFyazp0ZXh0LXdoaXRlIGZvbnQtc2FucyBncmlkIG1pbi1oLXNjcmVlbiBvdmVyZmxvdy1oaWRkZW4gcGxhY2UtY29udGVudC1jZW50ZXIgdGV4dC1bIzAyMDQyMF0gdHJhY2tpbmctd2lkZSJ9LGkpKX0gZGF0YS12LTI0ODQzMWQyPjxkaXYgY2xhc3M9Im1heC13LTUyMHB4IHRleHQtY2VudGVyIiBkYXRhLXYtMjQ4NDMxZDI+PGgxIGNsYXNzPSJmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSBtYi00IHNtOnRleHQtWzExMHB4XSB0YWJ1bGFyLW51bXMgdGV4dC1bODBweF0iIGRhdGEtdi0yNDg0MzFkMj4ke28oZS5zdGF0dXMpfTwvaDE+PGgyIGNsYXNzPSJmb250LXNlbWlib2xkIG1iLTIgc206dGV4dC0zeGwgdGV4dC0yeGwiIGRhdGEtdi0yNDg0MzFkMj4ke28oZS5zdGF0dXNUZXh0KX08L2gyPjxwIGNsYXNzPSJtYi00IHB4LTIgdGV4dC1bIzY0NzQ4Ql0gdGV4dC1tZCIgZGF0YS12LTI0ODQzMWQyPiR7byhlLmRlc2NyaXB0aW9uKX08L3A+PC9kaXY+PC9kaXY+YCl9fX0sYT1zLnNldHVwO3Muc2V0dXA9KGUsdCk9Pntjb25zdCBuPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci01MDAudnVlIiksYT9hKGUsdCk6dm9pZCAwfTtjb25zdCBpPWUocyxbWyJfX3Njb3BlSWQiLCJkYXRhLXYtMjQ4NDMxZDIiXV0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvci01MDAtRHpIdHNqRXUubWpzLm1hcAo=", "chunks/build/error-500-styles.M1DcLsO6.mjs": "Y29uc3QgdD1bIi5ncmlkW2RhdGEtdi0yNDg0MzFkMl17ZGlzcGxheTpncmlkfS5tYi0yW2RhdGEtdi0yNDg0MzFkMl17bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItNFtkYXRhLXYtMjQ4NDMxZDJde21hcmdpbi1ib3R0b206MXJlbX0ubWF4LXctNTIwcHhbZGF0YS12LTI0ODQzMWQyXXttYXgtd2lkdGg6NTIwcHh9Lm1pbi1oLXNjcmVlbltkYXRhLXYtMjQ4NDMxZDJde21pbi1oZWlnaHQ6MTAwdmh9LnBsYWNlLWNvbnRlbnQtY2VudGVyW2RhdGEtdi0yNDg0MzFkMl17cGxhY2UtY29udGVudDpjZW50ZXJ9Lm92ZXJmbG93LWhpZGRlbltkYXRhLXYtMjQ4NDMxZDJde292ZXJmbG93OmhpZGRlbn0uYmctd2hpdGVbZGF0YS12LTI0ODQzMWQyXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSl9LnB4LTJbZGF0YS12LTI0ODQzMWQyXXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0udGV4dC1jZW50ZXJbZGF0YS12LTI0ODQzMWQyXXt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1cXFs4MHB4XFxdW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjgwcHh9LnRleHQtMnhsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDoycmVtfS50ZXh0LVxcW1xcIzAyMDQyMFxcXVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0udGV4dC1cXFtcXCM2NDc0OEJcXF1bZGF0YS12LTI0ODQzMWQyXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0uZm9udC1zZW1pYm9sZFtkYXRhLXYtMjQ4NDMxZDJde2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1ub25lW2RhdGEtdi0yNDg0MzFkMl17bGluZS1oZWlnaHQ6MX0udHJhY2tpbmctd2lkZVtkYXRhLXYtMjQ4NDMxZDJde2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5zW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppfS50YWJ1bGFyLW51bXNbZGF0YS12LTI0ODQzMWQyXXstLXVuLW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdW4tb3JkaW5hbCkgdmFyKC0tdW4tc2xhc2hlZC16ZXJvKSB2YXIoLS11bi1udW1lcmljLWZpZ3VyZSkgdmFyKC0tdW4tbnVtZXJpYy1zcGFjaW5nKSB2YXIoLS11bi1udW1lcmljLWZyYWN0aW9uKX0uYW50aWFsaWFzZWRbZGF0YS12LTI0ODQzMWQyXXstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpiZy1cXFtcXCMwMjA0MjBcXF1bZGF0YS12LTI0ODQzMWQyXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyIDQgMzIvdmFyKC0tdW4tYmctb3BhY2l0eSkpfS5kYXJrXFw6dGV4dC13aGl0ZVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfX1AbWVkaWEobWluLXdpZHRoOjY0MHB4KXsuc21cXDp0ZXh0LVxcWzExMHB4XFxdW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjExMHB4fS5zbVxcOnRleHQtM3hsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuODc1cmVtO2xpbmUtaGVpZ2h0OjIuMjVyZW19fSJdO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvci01MDAtc3R5bGVzLk0xRGNMc082Lm1qcy5tYXAK", "chunks/build/error-JXSGuuIA.mjs": "aW1wb3J0e3ogYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gd2hlbkVycm9yKG8sZSl7cihvKX1leHBvcnR7d2hlbkVycm9yIGFzIHd9OwovLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvci1KWFNHdXVJQS5tanMubWFwCg==", "chunks/build/forbidden-eHxsGLKf.mjs": "aW1wb3J0e3YgYXMgZSx1IGFzIHQsYiBhcyBzLF8gYXMgbyxkIGFzIHIsZSBhcyBkLHQgYXMgbixQIGFzIGF9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtmIGFzIGksZyBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IGw9e2Jhc2U6InctZnVsbCBtYXgtdy0oLS11aS1jb250YWluZXIpIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTgifSxtPXtfX25hbWU6IlVDb250YWluZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBzPXQsbz1yKCksbT1kKCJjb250YWluZXIiLHMpLGM9ZS5jb21wdXRlZCgoKT0+bih7ZXh0ZW5kOm4obCksLi4uby51aT8uY29udGFpbmVyfHx7fX0pKTtyZXR1cm4obyxyLGQsbik9PntyKGkoZS51bnJlZihhKSxlLm1lcmdlUHJvcHMoe2FzOnQuYXMsY2xhc3M6Yy52YWx1ZSh7Y2xhc3M6W2UudW5yZWYobSk/LmJhc2Uscy5jbGFzc119KX0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LHMscixkKT0+e2lmKCFzKXJldHVybltlLnJlbmRlclNsb3Qoby4kc2xvdHMsImRlZmF1bHQiKV07dShvLiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxzLHIsZCl9KSxfOjN9LGQpKX19fSxjPW0uc2V0dXA7bS5zZXR1cD0odCxzKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0NvbnRhaW5lci52dWUiKSxjP2ModCxzKTp2b2lkIDB9O2NvbnN0IHA9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiZm9yYmlkZGVuIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cDpyPT4odCh7dGl0bGU6IkZvcmJpZGRlbiJ9KSwodCxyLGQsbik9Pntjb25zdCBhPXMsdT1vO3IoaShtLGUubWVyZ2VQcm9wcyh7Y2xhc3M6InB5LTI0In0sbikse2RlZmF1bHQ6ZS53aXRoQ3R4KCh0LHMsbyxyKT0+e2lmKCFzKXJldHVybltlLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibWF4LXctbWQgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTQifSxbZS5jcmVhdGVWTm9kZShhLHtuYW1lOiJpLWx1Y2lkZS1sb2NrIixjbGFzczoic2l6ZS0xMiB0ZXh0LW11dGVkIG14LWF1dG8ifSksZS5jcmVhdGVWTm9kZSgiaDEiLHtjbGFzczoidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIDQwMyDigJQgRm9yYmlkZGVuICIpLGUuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1tdXRlZCJ9LCIgWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IHRoaXMgcGFnZS4gIiksZS5jcmVhdGVWTm9kZSh1LHt0bzoiLyIsaWNvbjoiaS1sdWNpZGUtaG9tZSJ9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UuY3JlYXRlVGV4dFZOb2RlKCIgQmFjayBob21lICIpXSksXzoxfSldKV07cyhgPGRpdiBjbGFzcz0ibWF4LXctbWQgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTQiJHtyfT5gKSxzKGkoYSx7bmFtZToiaS1sdWNpZGUtbG9jayIsY2xhc3M6InNpemUtMTIgdGV4dC1tdXRlZCBteC1hdXRvIn0sbnVsbCxvLHIpKSxzKGA8aDEgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7cn0+IDQwMyDigJQgRm9yYmlkZGVuIDwvaDE+PHAgY2xhc3M9InRleHQtbXV0ZWQiJHtyfT4gWW91IGRvbiYjMzk7dCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyB0aGlzIHBhZ2UuIDwvcD5gKSxzKGkodSx7dG86Ii8iLGljb246ImktbHVjaWRlLWhvbWUifSx7ZGVmYXVsdDplLndpdGhDdHgoKHQscyxvLHIpPT57aWYoIXMpcmV0dXJuW2UuY3JlYXRlVGV4dFZOb2RlKCIgQmFjayBob21lICIpXTtzKCIgQmFjayBob21lICIpfSksXzoxfSxvLHIpKSxzKCI8L2Rpdj4iKX0pLF86MX0sZCkpfSl9KSx4PXAuc2V0dXA7cC5zZXR1cD0odCxzKT0+e2NvbnN0IG89ZS51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG8ubW9kdWxlc3x8KG8ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvZm9yYmlkZGVuLnZ1ZSIpLHg/eCh0LHMpOnZvaWQgMH07ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcmJpZGRlbi1lSHhzR0xLZi5tanMubWFwCg==", "chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs": "ZnVuY3Rpb24gaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCh0LGUsbil7Y29uc3QgYT1uLm9yaWdpbmFsRXZlbnQudGFyZ2V0LHM9bmV3IEN1c3RvbUV2ZW50KHQse2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMCxkZXRhaWw6bn0pO2UmJmEuYWRkRXZlbnRMaXN0ZW5lcih0LGUse29uY2U6ITB9KSxhLmRpc3BhdGNoRXZlbnQocyl9ZXhwb3J0e2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQgYXMgaH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzLm1hcAo=", "chunks/build/impersonate-CsY9wrgf.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmROYXZiYXItcGtJRWFkT0oubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9DYXJkLW5vdmdxUm9wLm1qcyI7aW1wb3J0e3YgYXMgcix1IGFzIGksaCBhcyBvLGEgYXMgbixfIGFzIGQsYiBhcyBsLGkgYXMgbSxqIGFzIGN9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIHB9ZnJvbSIuL0Rhc2hib2FyZFNlc3Npb25DYXJkLURLQzlma01lLm1qcyI7aW1wb3J0e2YgYXMgdSxxIGFzIGYsdCBhcyB4LHogYXMgZ31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtjb25zdCBoPXIuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkltcGVyc29uYXRlQ2FuZGlkYXRlTGlzdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAoZSl7Y29uc3QgdD1jKCksYT1vKCksaT1uKCksbD1yLnJlZihbXSkscD1yLnJlZihudWxsKSxoPXIucmVmKG51bGwpO2FzeW5jIGZ1bmN0aW9uIHN0YXJ0SW1wZXJzb25hdGlvbihlKXtoLnZhbHVlPWUuaWQ7dHJ5e2F3YWl0IGEuc3RhcnRJbXBlcnNvbmF0aW9uKGUuaWQpLGkuYWRkKHt0aXRsZTpgTm93IGltcGVyc29uYXRpbmcgJHtlLm5hbWU/P2UucHJpbWFyeV9lbWFpbH1gLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtpLmFkZCh7dGl0bGU6IkltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz90Py5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7aC52YWx1ZT1udWxsfX1yZXR1cm4gbSgiaW1wZXJzb25hdGUtY2FuZGlkYXRlcyIsKCk9PmFzeW5jIGZ1bmN0aW9uKCl7cC52YWx1ZT1udWxsO3RyeXtjb25zdCBlPWF3YWl0IHQuZmV0Y2hJbXBlcnNvbmF0aW9uQ2FuZGlkYXRlcygpO2wudmFsdWU9ZT8uaXRlbXM/P1tdfWNhdGNoKGUpe2NvbnN0IHQ9ZTtwLnZhbHVlPXQ/LnN0YXR1c01lc3NhZ2U/PyJGYWlsZWQgdG8gbG9hZCB1c2VycyIsbC52YWx1ZT1bXX19KCkpLChlLHQsaSxvKT0+e2NvbnN0IG49ZDt0KHUocyxvLHtoZWFkZXI6ci53aXRoQ3R4KChlLHQsYSxzKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgQXZhaWxhYmxlIHVzZXJzICIpXTt0KGA8cCBjbGFzcz0iZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7c30+IEF2YWlsYWJsZSB1c2VycyA8L3A+YCl9KSxkZWZhdWx0OnIud2l0aEN0eCgoZSx0LHMsaSk9PntpZighdClyZXR1cm5bci51bnJlZihwKT8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LWVycm9yIiwiZGF0YS10ZXN0aWQiOiJjYW5kaWRhdGVzLWVycm9yIn0sci50b0Rpc3BsYXlTdHJpbmcoci51bnJlZihwKSksMSkpOjA9PT1yLnVucmVmKGwpLmxlbmd0aD8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBweS04In0sIiBObyBvdGhlciB1c2VycyB0byBpbXBlcnNvbmF0ZS4gIikpOihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soInVsIix7a2V5OjIsY2xhc3M6ImRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IiwiZGF0YS10ZXN0aWQiOiJjYW5kaWRhdGVzLWxpc3QifSxbKHIub3BlbkJsb2NrKCEwKSxyLmNyZWF0ZUJsb2NrKHIuRnJhZ21lbnQsbnVsbCxyLnJlbmRlckxpc3Qoci51bnJlZihsKSxlPT4oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJsaSIse2tleTplLmlkLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweS0zIiwiZGF0YS10ZXN0aWQiOmBjYW5kaWRhdGUtJHtlLnByaW1hcnlfZW1haWx9YH0sW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4LTEifSxbci5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LW1lZGl1bSJ9LHIudG9EaXNwbGF5U3RyaW5nKGUubmFtZT8/ZS51c2VybmFtZT8/ZS5wcmltYXJ5X2VtYWlsKSwxKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LHIudG9EaXNwbGF5U3RyaW5nKGUucHJpbWFyeV9lbWFpbCksMSldKSxyLmNyZWF0ZVZOb2RlKG4se3NpemU6InNtIixpY29uOiJpLWx1Y2lkZS11c2VyLWNoZWNrIixsb2FkaW5nOnIudW5yZWYoaCk9PT1lLmlkLGRpc2FibGVkOnIudW5yZWYoYSkuaXNJbXBlcnNvbmF0aW5nfHwhIWUuaXNfc3VzcGVuZGVkLCJkYXRhLXRlc3RpZCI6YGltcGVyc29uYXRlLSR7ZS5wcmltYXJ5X2VtYWlsfWAsb25DbGljazp0PT5zdGFydEltcGVyc29uYXRpb24oZSl9LHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVGV4dFZOb2RlKCIgSW1wZXJzb25hdGUgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJkYXRhLXRlc3RpZCIsIm9uQ2xpY2siXSldLDgsWyJkYXRhLXRlc3RpZCJdKSkpLDEyOCkpXSkpXTtyLnVucmVmKHApP3QoYDxkaXYgY2xhc3M9InRleHQtc20gdGV4dC1lcnJvciIgZGF0YS10ZXN0aWQ9ImNhbmRpZGF0ZXMtZXJyb3IiJHtpfT4ke2Yoci51bnJlZihwKSl9PC9kaXY+YCk6MD09PXIudW5yZWYobCkubGVuZ3RoP3QoYDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHRleHQtbXV0ZWQgcHktOCIke2l9PiBObyBvdGhlciB1c2VycyB0byBpbXBlcnNvbmF0ZS4gPC9kaXY+YCk6KHQoYDx1bCBjbGFzcz0iZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiIGRhdGEtdGVzdGlkPSJjYW5kaWRhdGVzLWxpc3QiJHtpfT5ceDNjIS0tWy0tXHgzZWApLHgoci51bnJlZihsKSxlPT57dChgPGxpIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweS0zIiR7ZygiZGF0YS10ZXN0aWQiLGBjYW5kaWRhdGUtJHtlLnByaW1hcnlfZW1haWx9YCl9JHtpfT48ZGl2IGNsYXNzPSJmbGV4LTEiJHtpfT48cCBjbGFzcz0iZm9udC1tZWRpdW0iJHtpfT4ke2YoZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnByaW1hcnlfZW1haWwpfTwvcD48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIiR7aX0+JHtmKGUucHJpbWFyeV9lbWFpbCl9PC9wPjwvZGl2PmApLHQodShuLHtzaXplOiJzbSIsaWNvbjoiaS1sdWNpZGUtdXNlci1jaGVjayIsbG9hZGluZzpyLnVucmVmKGgpPT09ZS5pZCxkaXNhYmxlZDpyLnVucmVmKGEpLmlzSW1wZXJzb25hdGluZ3x8ISFlLmlzX3N1c3BlbmRlZCwiZGF0YS10ZXN0aWQiOmBpbXBlcnNvbmF0ZS0ke2UucHJpbWFyeV9lbWFpbH1gLG9uQ2xpY2s6dD0+c3RhcnRJbXBlcnNvbmF0aW9uKGUpfSx7ZGVmYXVsdDpyLndpdGhDdHgoKGUsdCxhLHMpPT57aWYoIXQpcmV0dXJuW3IuY3JlYXRlVGV4dFZOb2RlKCIgSW1wZXJzb25hdGUgIildO3QoIiBJbXBlcnNvbmF0ZSAiKX0pLF86Mn0scyxpKSksdCgiPC9saT4iKX0pLHQoIlx4M2MhLS1dLS1ceDNlPC91bD4iKSl9KSxfOjF9LGkpKX19fSksdj1oLnNldHVwO2guc2V0dXA9KGUsdCk9Pntjb25zdCBhPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihhLm1vZHVsZXN8fChhLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL2NvbXBvbmVudHMvSW1wZXJzb25hdGUvSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0LnZ1ZSIpLHY/dihlLHQpOnZvaWQgMH07Y29uc3QgeT1PYmplY3QuYXNzaWduKGgse19fbmFtZToiSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0In0pLF89ci5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiSW1wZXJzb25hdGVTdG9wQnV0dG9uIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCB0PW8oKSxhPW4oKSxpPXIucmVmKCExKTthc3luYyBmdW5jdGlvbiBzdG9wSW1wZXJzb25hdGlvbigpe2kudmFsdWU9ITA7dHJ5e2F3YWl0IHQuc3RvcEltcGVyc29uYXRpb24oKSxhLmFkZCh7dGl0bGU6IlN0b3BwZWQgaW1wZXJzb25hdGlvbiIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Y29uc3QgdD1lO2EuYWRkKHt0aXRsZToiU3RvcCBpbXBlcnNvbmF0aW9uIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/dD8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2kudmFsdWU9ITF9fXJldHVybihlLGEsbyxuKT0+e2NvbnN0IG09cyxjPWwscD1kO3IudW5yZWYodCkuaXNJbXBlcnNvbmF0aW5nJiZyLnVucmVmKHQpLmltcGVyc29uYXRvcj9hKHUobSxyLm1lcmdlUHJvcHMoeyJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRvci1jYXJkIn0sbikse2hlYWRlcjpyLndpdGhDdHgoKGUsdCxhLHMpPT57aWYoIXQpcmV0dXJuW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtyLmNyZWF0ZVZOb2RlKGMse25hbWU6ImktbHVjaWRlLXVzZXItY29nIixjbGFzczoic2l6ZS00IHRleHQtd2FybmluZyJ9KSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgSW1wZXJzb25hdG9yIChyZWFsIHNlc3Npb24pICIpXSldO3QoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIiR7c30+YCksdCh1KGMse25hbWU6ImktbHVjaWRlLXVzZXItY29nIixjbGFzczoic2l6ZS00IHRleHQtd2FybmluZyJ9LG51bGwsYSxzKSksdChgPHAgY2xhc3M9ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIke3N9PiBJbXBlcnNvbmF0b3IgKHJlYWwgc2Vzc2lvbikgPC9wPjwvZGl2PmApfSksZGVmYXVsdDpyLndpdGhDdHgoKGUsYSxzLG8pPT57aWYoIWEpcmV0dXJuW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQifSxbci5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFtyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIiwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0b3ItbmFtZSJ9LHIudG9EaXNwbGF5U3RyaW5nKHIudW5yZWYodCkuaW1wZXJzb25hdG9yLm5hbWUpLDEpLHIuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIiwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0b3ItZW1haWwifSxyLnRvRGlzcGxheVN0cmluZyhyLnVucmVmKHQpLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKSwxKV0pLHIuY3JlYXRlVk5vZGUocCx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0Iixsb2FkaW5nOnIudW5yZWYoaSksImRhdGEtdGVzdGlkIjoic3RvcC1pbXBlcnNvbmF0aW9uIixvbkNsaWNrOnN0b3BJbXBlcnNvbmF0aW9ufSx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVRleHRWTm9kZSgiIFN0b3AgaW1wZXJzb25hdGluZyAiKV0pLF86MX0sOCxbImxvYWRpbmciXSldKV07YShgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00IiR7b30+PGRpdiR7b30+PHAgY2xhc3M9ImZvbnQtbWVkaXVtIiBkYXRhLXRlc3RpZD0iaW1wZXJzb25hdG9yLW5hbWUiJHtvfT4ke2Yoci51bnJlZih0KS5pbXBlcnNvbmF0b3IubmFtZSl9PC9wPjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQiIGRhdGEtdGVzdGlkPSJpbXBlcnNvbmF0b3ItZW1haWwiJHtvfT4ke2Yoci51bnJlZih0KS5pbXBlcnNvbmF0b3IucHJpbWFyeV9lbWFpbCl9PC9wPjwvZGl2PmApLGEodShwLHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29saWQiLGljb246ImktbHVjaWRlLWxvZy1vdXQiLGxvYWRpbmc6ci51bnJlZihpKSwiZGF0YS10ZXN0aWQiOiJzdG9wLWltcGVyc29uYXRpb24iLG9uQ2xpY2s6c3RvcEltcGVyc29uYXRpb259LHtkZWZhdWx0OnIud2l0aEN0eCgoZSx0LGEscyk9PntpZighdClyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoIiBTdG9wIGltcGVyc29uYXRpbmcgIildO3QoIiBTdG9wIGltcGVyc29uYXRpbmcgIil9KSxfOjF9LHMsbykpLGEoIjwvZGl2PiIpfSksXzoxfSxvKSk6YSgiXHgzYyEtLS0tXHgzZSIpfX19KSxDPV8uc2V0dXA7Xy5zZXR1cD0oZSx0KT0+e2NvbnN0IGE9ci51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvY29tcG9uZW50cy9JbXBlcnNvbmF0ZS9JbXBlcnNvbmF0ZVN0b3BCdXR0b24udnVlIiksQz9DKGUsdCk6dm9pZCAwfTtjb25zdCBJPU9iamVjdC5hc3NpZ24oXyx7X19uYW1lOiJJbXBlcnNvbmF0ZVN0b3BCdXR0b24ifSksYj1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbXBlcnNvbmF0ZSIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAocyl7aSh7dGl0bGU6IkltcGVyc29uYXRpb24gc2FuZGJveCJ9KTtjb25zdCBuPW8oKTtyZXR1cm4ocyxpLG8sZCk9Pntjb25zdCBsPXQsbT1hO2kodShlLHIubWVyZ2VQcm9wcyh7aWQ6ImltcGVyc29uYXRlLXNhbmRib3gifSxkKSx7aGVhZGVyOnIud2l0aEN0eCgoZSx0LGEscyk9PntpZighdClyZXR1cm5bci5jcmVhdGVWTm9kZShsLHt0aXRsZToiSW1wZXJzb25hdGlvbiBzYW5kYm94In0se2xlYWRpbmc6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVWTm9kZShtKV0pLF86MX0pXTt0KHUobCx7dGl0bGU6IkltcGVyc29uYXRpb24gc2FuZGJveCJ9LHtsZWFkaW5nOnIud2l0aEN0eCgoZSx0LGEscyk9PntpZighdClyZXR1cm5bci5jcmVhdGVWTm9kZShtKV07dCh1KG0sbnVsbCxudWxsLGEscykpfSksXzoxfSxhLHMpKX0pLGJvZHk6ci53aXRoQ3R4KChlLHQsYSxzKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS02IG1heC13LTN4bCJ9LFtyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LFtyLmNyZWF0ZVRleHRWTm9kZSgiIEFkbWlucyB3aXRoIHRoZSAiKSxyLmNyZWF0ZVZOb2RlKCJjb2RlIixudWxsLCJ1c2VyOmltcGVyc29uYXRlIiksci5jcmVhdGVUZXh0Vk5vZGUoIiBhYmlsaXR5IGNhbiBzaWduIGluIGFzIGFueSBvdGhlciB1c2VyLiBUaGUgS1Ygc2Vzc2lvbiBzd2FwcyB0byB0aGUgdGFyZ2V0IHNvIGV2ZXJ5IGF1dGhvcml6YXRpb24gY2hlY2sgKHNlcnZlciBhbmQgY2xpZW50KSByZWZsZWN0cyB0aGUgaW1wZXJzb25hdGVkIHVzZXIuICIpXSksci5jcmVhdGVWTm9kZShwKSxyLmNyZWF0ZVZOb2RlKEkpLHIudW5yZWYobikuaXNJbXBlcnNvbmF0aW5nP3IuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKHkse2tleTowfSkpXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktNiBtYXgtdy0zeGwiJHtzfT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7c30+IEFkbWlucyB3aXRoIHRoZSA8Y29kZSR7c30+dXNlcjppbXBlcnNvbmF0ZTwvY29kZT4gYWJpbGl0eSBjYW4gc2lnbiBpbiBhcyBhbnkgb3RoZXIgdXNlci4gVGhlIEtWIHNlc3Npb24gc3dhcHMgdG8gdGhlIHRhcmdldCBzbyBldmVyeSBhdXRob3JpemF0aW9uIGNoZWNrIChzZXJ2ZXIgYW5kIGNsaWVudCkgcmVmbGVjdHMgdGhlIGltcGVyc29uYXRlZCB1c2VyLiA8L3A+YCksdCh1KHAsbnVsbCxudWxsLGEscykpLHQodShJLG51bGwsbnVsbCxhLHMpKSxyLnVucmVmKG4pLmlzSW1wZXJzb25hdGluZz90KCJceDNjIS0tLS1ceDNlIik6dCh1KHksbnVsbCxudWxsLGEscykpLHQoIjwvZGl2PiIpfSksXzoxfSxvKSl9fX0pLHc9Yi5zZXR1cDtiLnNldHVwPShlLHQpPT57Y29uc3QgYT1yLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zYW5kYm94L2ltcGVyc29uYXRlLnZ1ZSIpLHc/dyhlLHQpOnZvaWQgMH07ZXhwb3J0e2IgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWltcGVyc29uYXRlLUNzWTl3cmdmLm1qcy5tYXAK", "chunks/build/index-B1POTLma.mjs": "aW1wb3J0e3YgYXMgdH1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gbWVtbyh0LGUscyl7bGV0IGksbj1zLmluaXRpYWxEZXBzPz9bXSxsPSEwO2Z1bmN0aW9uIG1lbW9pemVkRnVuY3Rpb24oKXt2YXIgbyxyLGE7cy5rZXkmJihudWxsPT0obz1zLmRlYnVnKXx8by5jYWxsKHMpKTtjb25zdCBoPXQoKTtyZXR1cm4gaC5sZW5ndGghPT1uLmxlbmd0aHx8aC5zb21lKCh0LGUpPT5uW2VdIT09dCk/KG49aCxzLmtleSYmKG51bGw9PShyPXMuZGVidWcpfHxyLmNhbGwocykpLGk9ZSguLi5oKSxzLmtleSYmKG51bGw9PShhPXMuZGVidWcpfHxhLmNhbGwocykpLCEobnVsbD09cz92b2lkIDA6cy5vbkNoYW5nZSl8fGwmJnMuc2tpcEluaXRpYWxPbkNoYW5nZXx8cy5vbkNoYW5nZShpKSxsPSExLGkpOml9cmV0dXJuIG1lbW9pemVkRnVuY3Rpb24udXBkYXRlRGVwcz10PT57bj10fSxtZW1vaXplZEZ1bmN0aW9ufWZ1bmN0aW9uIG5vdFVuZGVmaW5lZCh0LGUpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHVuZGVmaW5lZCIpO3JldHVybiB0fWNvbnN0IGRlYm91bmNlPSh0LGUscyk9PntsZXQgaTtyZXR1cm4gZnVuY3Rpb24oLi4ubil7dC5jbGVhclRpbWVvdXQoaSksaT10LnNldFRpbWVvdXQoKCk9PmUuYXBwbHkodGhpcyxuKSxzKX19LGdldFJlY3Q9dD0+e2NvbnN0e29mZnNldFdpZHRoOmUsb2Zmc2V0SGVpZ2h0OnN9PXQ7cmV0dXJue3dpZHRoOmUsaGVpZ2h0OnN9fSxkZWZhdWx0S2V5RXh0cmFjdG9yPXQ9PnQsZGVmYXVsdFJhbmdlRXh0cmFjdG9yPXQ9Pntjb25zdCBlPU1hdGgubWF4KHQuc3RhcnRJbmRleC10Lm92ZXJzY2FuLDApLHM9TWF0aC5taW4odC5lbmRJbmRleCt0Lm92ZXJzY2FuLHQuY291bnQtMSksaT1bXTtmb3IobGV0IHQ9ZTt0PD1zO3QrKylpLnB1c2godCk7cmV0dXJuIGl9LG9ic2VydmVFbGVtZW50UmVjdD0odCxlKT0+e2NvbnN0IHM9dC5zY3JvbGxFbGVtZW50O2lmKCFzKXJldHVybjtjb25zdCBpPXQudGFyZ2V0V2luZG93O2lmKCFpKXJldHVybjtjb25zdCBoYW5kbGVyPXQ9Pntjb25zdHt3aWR0aDpzLGhlaWdodDppfT10O2Uoe3dpZHRoOk1hdGgucm91bmQocyksaGVpZ2h0Ok1hdGgucm91bmQoaSl9KX07aWYoaGFuZGxlcihnZXRSZWN0KHMpKSwhaS5SZXNpemVPYnNlcnZlcilyZXR1cm4oKT0+e307Y29uc3Qgbj1uZXcgaS5SZXNpemVPYnNlcnZlcihlPT57Y29uc3QgcnVuPSgpPT57Y29uc3QgdD1lWzBdO2lmKG51bGw9PXQ/dm9pZCAwOnQuYm9yZGVyQm94U2l6ZSl7Y29uc3QgZT10LmJvcmRlckJveFNpemVbMF07aWYoZSlyZXR1cm4gdm9pZCBoYW5kbGVyKHt3aWR0aDplLmlubGluZVNpemUsaGVpZ2h0OmUuYmxvY2tTaXplfSl9aGFuZGxlcihnZXRSZWN0KHMpKX07dC5vcHRpb25zLnVzZUFuaW1hdGlvbkZyYW1lV2l0aFJlc2l6ZU9ic2VydmVyP3JlcXVlc3RBbmltYXRpb25GcmFtZShydW4pOnJ1bigpfSk7cmV0dXJuIG4ub2JzZXJ2ZShzLHtib3g6ImJvcmRlci1ib3gifSksKCk9PntuLnVub2JzZXJ2ZShzKX19LGU9e3Bhc3NpdmU6ITB9LHM9ITAsb2JzZXJ2ZUVsZW1lbnRPZmZzZXQ9KHQsaSk9Pntjb25zdCBuPXQuc2Nyb2xsRWxlbWVudDtpZighbilyZXR1cm47Y29uc3QgbD10LnRhcmdldFdpbmRvdztpZighbClyZXR1cm47bGV0IG89MDtjb25zdCByPXQub3B0aW9ucy51c2VTY3JvbGxlbmRFdmVudD8oKT0+e306ZGVib3VuY2UobCwoKT0+e2kobywhMSl9LHQub3B0aW9ucy5pc1Njcm9sbGluZ1Jlc2V0RGVsYXkpLGNyZWF0ZUhhbmRsZXI9ZT0+KCk9Pntjb25zdHtob3Jpem9udGFsOnMsaXNSdGw6bH09dC5vcHRpb25zO289cz9uLnNjcm9sbExlZnQqKGw/LTE6MSk6bi5zY3JvbGxUb3AscigpLGkobyxlKX0sYT1jcmVhdGVIYW5kbGVyKCEwKSxoPWNyZWF0ZUhhbmRsZXIoITEpO24uYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhLGUpO2NvbnN0IGM9dC5vcHRpb25zLnVzZVNjcm9sbGVuZEV2ZW50JiZzO3JldHVybiBjJiZuLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbGVuZCIsaCxlKSwoKT0+e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhKSxjJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbGVuZCIsaCl9fSxtZWFzdXJlRWxlbWVudD0odCxlLHMpPT57aWYobnVsbD09ZT92b2lkIDA6ZS5ib3JkZXJCb3hTaXplKXtjb25zdCB0PWUuYm9yZGVyQm94U2l6ZVswXTtpZih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0W3Mub3B0aW9ucy5ob3Jpem9udGFsPyJpbmxpbmVTaXplIjoiYmxvY2tTaXplIl0pfX1yZXR1cm4gdFtzLm9wdGlvbnMuaG9yaXpvbnRhbD8ib2Zmc2V0V2lkdGgiOiJvZmZzZXRIZWlnaHQiXX0sZWxlbWVudFNjcm9sbD0odCx7YWRqdXN0bWVudHM6ZT0wLGJlaGF2aW9yOnN9LGkpPT57dmFyIG4sbDtjb25zdCBvPXQrZTtudWxsPT0obD1udWxsPT0obj1pLnNjcm9sbEVsZW1lbnQpP3ZvaWQgMDpuLnNjcm9sbFRvKXx8bC5jYWxsKG4se1tpLm9wdGlvbnMuaG9yaXpvbnRhbD8ibGVmdCI6InRvcCJdOm8sYmVoYXZpb3I6c30pfTtjbGFzcyBWaXJ0dWFsaXplcntjb25zdHJ1Y3Rvcih0KXt0aGlzLnVuc3Vicz1bXSx0aGlzLnNjcm9sbEVsZW1lbnQ9bnVsbCx0aGlzLnRhcmdldFdpbmRvdz1udWxsLHRoaXMuaXNTY3JvbGxpbmc9ITEsdGhpcy5zY3JvbGxTdGF0ZT1udWxsLHRoaXMubWVhc3VyZW1lbnRzQ2FjaGU9W10sdGhpcy5pdGVtU2l6ZUNhY2hlPW5ldyBNYXAsdGhpcy5sYW5lQXNzaWdubWVudHM9bmV3IE1hcCx0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcz1bXSx0aGlzLnByZXZMYW5lcz12b2lkIDAsdGhpcy5sYW5lc0NoYW5nZWRGbGFnPSExLHRoaXMubGFuZXNTZXR0bGluZz0hMSx0aGlzLnNjcm9sbFJlY3Q9bnVsbCx0aGlzLnNjcm9sbE9mZnNldD1udWxsLHRoaXMuc2Nyb2xsRGlyZWN0aW9uPW51bGwsdGhpcy5zY3JvbGxBZGp1c3RtZW50cz0wLHRoaXMuZWxlbWVudHNDYWNoZT1uZXcgTWFwLHRoaXMubm93PSgpPT57dmFyIHQsZSxzO3JldHVybihudWxsPT0ocz1udWxsPT0oZT1udWxsPT0odD10aGlzLnRhcmdldFdpbmRvdyk/dm9pZCAwOnQucGVyZm9ybWFuY2UpP3ZvaWQgMDplLm5vdyk/dm9pZCAwOnMuY2FsbChlKSk/P0RhdGUubm93KCl9LHRoaXMub2JzZXJ2ZXI9KCgpPT57bGV0IHQ9bnVsbDtjb25zdCBnZXQ9KCk9PnR8fCh0aGlzLnRhcmdldFdpbmRvdyYmdGhpcy50YXJnZXRXaW5kb3cuUmVzaXplT2JzZXJ2ZXI/dD1uZXcgdGhpcy50YXJnZXRXaW5kb3cuUmVzaXplT2JzZXJ2ZXIodD0+e3QuZm9yRWFjaCh0PT57Y29uc3QgcnVuPSgpPT57Y29uc3QgZT10LnRhcmdldCxzPXRoaXMuaW5kZXhGcm9tRWxlbWVudChlKTtlLmlzQ29ubmVjdGVkP3RoaXMuc2hvdWxkTWVhc3VyZUR1cmluZ1Njcm9sbChzKSYmdGhpcy5yZXNpemVJdGVtKHMsdGhpcy5vcHRpb25zLm1lYXN1cmVFbGVtZW50KGUsdCx0aGlzKSk6dGhpcy5vYnNlcnZlci51bm9ic2VydmUoZSl9O3RoaXMub3B0aW9ucy51c2VBbmltYXRpb25GcmFtZVdpdGhSZXNpemVPYnNlcnZlcj9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocnVuKTpydW4oKX0pfSk6bnVsbCk7cmV0dXJue2Rpc2Nvbm5lY3Q6KCk9Pnt2YXIgZTtudWxsPT0oZT1nZXQoKSl8fGUuZGlzY29ubmVjdCgpLHQ9bnVsbH0sb2JzZXJ2ZTp0PT57dmFyIGU7cmV0dXJuIG51bGw9PShlPWdldCgpKT92b2lkIDA6ZS5vYnNlcnZlKHQse2JveDoiYm9yZGVyLWJveCJ9KX0sdW5vYnNlcnZlOnQ9Pnt2YXIgZTtyZXR1cm4gbnVsbD09KGU9Z2V0KCkpP3ZvaWQgMDplLnVub2JzZXJ2ZSh0KX19fSkoKSx0aGlzLnJhbmdlPW51bGwsdGhpcy5zZXRPcHRpb25zPXQ9PntPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbZSxzXSk9Pnt2b2lkIDA9PT1zJiZkZWxldGUgdFtlXX0pLHRoaXMub3B0aW9ucz17ZGVidWc6ITEsaW5pdGlhbE9mZnNldDowLG92ZXJzY2FuOjEscGFkZGluZ1N0YXJ0OjAscGFkZGluZ0VuZDowLHNjcm9sbFBhZGRpbmdTdGFydDowLHNjcm9sbFBhZGRpbmdFbmQ6MCxob3Jpem9udGFsOiExLGdldEl0ZW1LZXk6ZGVmYXVsdEtleUV4dHJhY3RvcixyYW5nZUV4dHJhY3RvcjpkZWZhdWx0UmFuZ2VFeHRyYWN0b3Isb25DaGFuZ2U6KCk9Pnt9LG1lYXN1cmVFbGVtZW50Om1lYXN1cmVFbGVtZW50LGluaXRpYWxSZWN0Ont3aWR0aDowLGhlaWdodDowfSxzY3JvbGxNYXJnaW46MCxnYXA6MCxpbmRleEF0dHJpYnV0ZToiZGF0YS1pbmRleCIsaW5pdGlhbE1lYXN1cmVtZW50c0NhY2hlOltdLGxhbmVzOjEsaXNTY3JvbGxpbmdSZXNldERlbGF5OjE1MCxlbmFibGVkOiEwLGlzUnRsOiExLHVzZVNjcm9sbGVuZEV2ZW50OiExLHVzZUFuaW1hdGlvbkZyYW1lV2l0aFJlc2l6ZU9ic2VydmVyOiExLGxhbmVBc3NpZ25tZW50TW9kZToiZXN0aW1hdGUiLC4uLnR9fSx0aGlzLm5vdGlmeT10PT57dmFyIGUscztudWxsPT0ocz0oZT10aGlzLm9wdGlvbnMpLm9uQ2hhbmdlKXx8cy5jYWxsKGUsdGhpcyx0KX0sdGhpcy5tYXliZU5vdGlmeT1tZW1vKCgpPT4odGhpcy5jYWxjdWxhdGVSYW5nZSgpLFt0aGlzLmlzU2Nyb2xsaW5nLHRoaXMucmFuZ2U/dGhpcy5yYW5nZS5zdGFydEluZGV4Om51bGwsdGhpcy5yYW5nZT90aGlzLnJhbmdlLmVuZEluZGV4Om51bGxdKSx0PT57dGhpcy5ub3RpZnkodCl9LHtrZXk6ITEsZGVidWc6KCk9PnRoaXMub3B0aW9ucy5kZWJ1Zyxpbml0aWFsRGVwczpbdGhpcy5pc1Njcm9sbGluZyx0aGlzLnJhbmdlP3RoaXMucmFuZ2Uuc3RhcnRJbmRleDpudWxsLHRoaXMucmFuZ2U/dGhpcy5yYW5nZS5lbmRJbmRleDpudWxsXX0pLHRoaXMuY2xlYW51cD0oKT0+e3RoaXMudW5zdWJzLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKHQ9PnQoKSksdGhpcy51bnN1YnM9W10sdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCksbnVsbCE9dGhpcy5yYWZJZCYmdGhpcy50YXJnZXRXaW5kb3cmJih0aGlzLnRhcmdldFdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnJhZklkKSx0aGlzLnJhZklkPW51bGwpLHRoaXMuc2Nyb2xsU3RhdGU9bnVsbCx0aGlzLnNjcm9sbEVsZW1lbnQ9bnVsbCx0aGlzLnRhcmdldFdpbmRvdz1udWxsfSx0aGlzLl9kaWRNb3VudD0oKT0+KCk9Pnt0aGlzLmNsZWFudXAoKX0sdGhpcy5fd2lsbFVwZGF0ZT0oKT0+e3ZhciB0O2NvbnN0IGU9dGhpcy5vcHRpb25zLmVuYWJsZWQ/dGhpcy5vcHRpb25zLmdldFNjcm9sbEVsZW1lbnQoKTpudWxsO2lmKHRoaXMuc2Nyb2xsRWxlbWVudCE9PWUpe2lmKHRoaXMuY2xlYW51cCgpLCFlKXJldHVybiB2b2lkIHRoaXMubWF5YmVOb3RpZnkoKTt0aGlzLnNjcm9sbEVsZW1lbnQ9ZSx0aGlzLnNjcm9sbEVsZW1lbnQmJiJvd25lckRvY3VtZW50ImluIHRoaXMuc2Nyb2xsRWxlbWVudD90aGlzLnRhcmdldFdpbmRvdz10aGlzLnNjcm9sbEVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp0aGlzLnRhcmdldFdpbmRvdz0obnVsbD09KHQ9dGhpcy5zY3JvbGxFbGVtZW50KT92b2lkIDA6dC53aW5kb3cpPz9udWxsLHRoaXMuZWxlbWVudHNDYWNoZS5mb3JFYWNoKHQ9Pnt0aGlzLm9ic2VydmVyLm9ic2VydmUodCl9KSx0aGlzLnVuc3Vicy5wdXNoKHRoaXMub3B0aW9ucy5vYnNlcnZlRWxlbWVudFJlY3QodGhpcyx0PT57dGhpcy5zY3JvbGxSZWN0PXQsdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMudW5zdWJzLnB1c2godGhpcy5vcHRpb25zLm9ic2VydmVFbGVtZW50T2Zmc2V0KHRoaXMsKHQsZSk9Pnt0aGlzLnNjcm9sbEFkanVzdG1lbnRzPTAsdGhpcy5zY3JvbGxEaXJlY3Rpb249ZT90aGlzLmdldFNjcm9sbE9mZnNldCgpPHQ/ImZvcndhcmQiOiJiYWNrd2FyZCI6bnVsbCx0aGlzLnNjcm9sbE9mZnNldD10LHRoaXMuaXNTY3JvbGxpbmc9ZSx0aGlzLnNjcm9sbFN0YXRlJiZ0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCksdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCkse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjp2b2lkIDB9KX19LHRoaXMucmFmSWQ9bnVsbCx0aGlzLmdldFNpemU9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbFJlY3Q9dGhpcy5zY3JvbGxSZWN0Pz90aGlzLm9wdGlvbnMuaW5pdGlhbFJlY3QsdGhpcy5zY3JvbGxSZWN0W3RoaXMub3B0aW9ucy5ob3Jpem9udGFsPyJ3aWR0aCI6ImhlaWdodCJdKToodGhpcy5zY3JvbGxSZWN0PW51bGwsMCksdGhpcy5nZXRTY3JvbGxPZmZzZXQ9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbE9mZnNldD10aGlzLnNjcm9sbE9mZnNldD8/KCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldD90aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldCgpOnRoaXMub3B0aW9ucy5pbml0aWFsT2Zmc2V0KSx0aGlzLnNjcm9sbE9mZnNldCk6KHRoaXMuc2Nyb2xsT2Zmc2V0PW51bGwsMCksdGhpcy5nZXRGdXJ0aGVzdE1lYXN1cmVtZW50PSh0LGUpPT57Y29uc3Qgcz1uZXcgTWFwLGk9bmV3IE1hcDtmb3IobGV0IG49ZS0xO24+PTA7bi0tKXtjb25zdCBlPXRbbl07aWYocy5oYXMoZS5sYW5lKSljb250aW51ZTtjb25zdCBsPWkuZ2V0KGUubGFuZSk7aWYobnVsbD09bHx8ZS5lbmQ+bC5lbmQ/aS5zZXQoZS5sYW5lLGUpOmUuZW5kPGwuZW5kJiZzLnNldChlLmxhbmUsITApLHMuc2l6ZT09PXRoaXMub3B0aW9ucy5sYW5lcylicmVha31yZXR1cm4gaS5zaXplPT09dGhpcy5vcHRpb25zLmxhbmVzP0FycmF5LmZyb20oaS52YWx1ZXMoKSkuc29ydCgodCxlKT0+dC5lbmQ9PT1lLmVuZD90LmluZGV4LWUuaW5kZXg6dC5lbmQtZS5lbmQpWzBdOnZvaWQgMH0sdGhpcy5nZXRNZWFzdXJlbWVudE9wdGlvbnM9bWVtbygoKT0+W3RoaXMub3B0aW9ucy5jb3VudCx0aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0LHRoaXMub3B0aW9ucy5zY3JvbGxNYXJnaW4sdGhpcy5vcHRpb25zLmdldEl0ZW1LZXksdGhpcy5vcHRpb25zLmVuYWJsZWQsdGhpcy5vcHRpb25zLmxhbmVzLHRoaXMub3B0aW9ucy5sYW5lQXNzaWdubWVudE1vZGVdLCh0LGUscyxpLG4sbCxvKT0+KHZvaWQgMCE9PXRoaXMucHJldkxhbmVzJiZ0aGlzLnByZXZMYW5lcyE9PWwmJih0aGlzLmxhbmVzQ2hhbmdlZEZsYWc9ITApLHRoaXMucHJldkxhbmVzPWwsdGhpcy5wZW5kaW5nTWVhc3VyZWRDYWNoZUluZGV4ZXM9W10se2NvdW50OnQscGFkZGluZ1N0YXJ0OmUsc2Nyb2xsTWFyZ2luOnMsZ2V0SXRlbUtleTppLGVuYWJsZWQ6bixsYW5lczpsLGxhbmVBc3NpZ25tZW50TW9kZTpvfSkse2tleTohMX0pLHRoaXMuZ2V0TWVhc3VyZW1lbnRzPW1lbW8oKCk9Plt0aGlzLmdldE1lYXN1cmVtZW50T3B0aW9ucygpLHRoaXMuaXRlbVNpemVDYWNoZV0sKHtjb3VudDp0LHBhZGRpbmdTdGFydDplLHNjcm9sbE1hcmdpbjpzLGdldEl0ZW1LZXk6aSxlbmFibGVkOm4sbGFuZXM6bCxsYW5lQXNzaWdubWVudE1vZGU6b30scik9PntpZighbilyZXR1cm4gdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLFtdO2lmKHRoaXMubGFuZUFzc2lnbm1lbnRzLnNpemU+dClmb3IoY29uc3QgZSBvZiB0aGlzLmxhbmVBc3NpZ25tZW50cy5rZXlzKCkpZT49dCYmdGhpcy5sYW5lQXNzaWdubWVudHMuZGVsZXRlKGUpO3RoaXMubGFuZXNDaGFuZ2VkRmxhZyYmKHRoaXMubGFuZXNDaGFuZ2VkRmxhZz0hMSx0aGlzLmxhbmVzU2V0dGxpbmc9ITAsdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLHRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzPVtdKSwwIT09dGhpcy5tZWFzdXJlbWVudHNDYWNoZS5sZW5ndGh8fHRoaXMubGFuZXNTZXR0bGluZ3x8KHRoaXMubWVhc3VyZW1lbnRzQ2FjaGU9dGhpcy5vcHRpb25zLmluaXRpYWxNZWFzdXJlbWVudHNDYWNoZSx0aGlzLm1lYXN1cmVtZW50c0NhY2hlLmZvckVhY2godD0+e3RoaXMuaXRlbVNpemVDYWNoZS5zZXQodC5rZXksdC5zaXplKX0pKTtjb25zdCBhPXRoaXMubGFuZXNTZXR0bGluZz8wOnRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzLmxlbmd0aD4wP01hdGgubWluKC4uLnRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzKTowO3RoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzPVtdLHRoaXMubGFuZXNTZXR0bGluZyYmdGhpcy5tZWFzdXJlbWVudHNDYWNoZS5sZW5ndGg9PT10JiYodGhpcy5sYW5lc1NldHRsaW5nPSExKTtjb25zdCBoPXRoaXMubWVhc3VyZW1lbnRzQ2FjaGUuc2xpY2UoMCxhKSxjPW5ldyBBcnJheShsKS5maWxsKHZvaWQgMCk7Zm9yKGxldCB0PTA7dDxhO3QrKyl7Y29uc3QgZT1oW3RdO2UmJihjW2UubGFuZV09dCl9Zm9yKGxldCBuPWE7bjx0O24rKyl7Y29uc3QgdD1pKG4pLGw9dGhpcy5sYW5lQXNzaWdubWVudHMuZ2V0KG4pO2xldCBhLGQ7Y29uc3QgdT0iZXN0aW1hdGUiPT09b3x8ci5oYXModCk7aWYodm9pZCAwIT09bCYmdGhpcy5vcHRpb25zLmxhbmVzPjEpe2E9bDtjb25zdCB0PWNbYV0saT12b2lkIDAhPT10P2hbdF06dm9pZCAwO2Q9aT9pLmVuZCt0aGlzLm9wdGlvbnMuZ2FwOmUrc31lbHNle2NvbnN0IHQ9MT09PXRoaXMub3B0aW9ucy5sYW5lcz9oW24tMV06dGhpcy5nZXRGdXJ0aGVzdE1lYXN1cmVtZW50KGgsbik7ZD10P3QuZW5kK3RoaXMub3B0aW9ucy5nYXA6ZStzLGE9dD90LmxhbmU6biV0aGlzLm9wdGlvbnMubGFuZXMsdGhpcy5vcHRpb25zLmxhbmVzPjEmJnUmJnRoaXMubGFuZUFzc2lnbm1lbnRzLnNldChuLGEpfWNvbnN0IG09ci5nZXQodCksZz0ibnVtYmVyIj09dHlwZW9mIG0/bTp0aGlzLm9wdGlvbnMuZXN0aW1hdGVTaXplKG4pLGY9ZCtnO2hbbl09e2luZGV4Om4sc3RhcnQ6ZCxzaXplOmcsZW5kOmYsa2V5OnQsbGFuZTphfSxjW2FdPW59cmV0dXJuIHRoaXMubWVhc3VyZW1lbnRzQ2FjaGU9aCxofSx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWd9KSx0aGlzLmNhbGN1bGF0ZVJhbmdlPW1lbW8oKCk9Plt0aGlzLmdldE1lYXN1cmVtZW50cygpLHRoaXMuZ2V0U2l6ZSgpLHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCksdGhpcy5vcHRpb25zLmxhbmVzXSwodCxlLHMsaSk9PnRoaXMucmFuZ2U9dC5sZW5ndGg+MCYmZT4wP2Z1bmN0aW9uKHttZWFzdXJlbWVudHM6dCxvdXRlclNpemU6ZSxzY3JvbGxPZmZzZXQ6cyxsYW5lczppfSl7Y29uc3Qgbj10Lmxlbmd0aC0xLGdldE9mZnNldD1lPT50W2VdLnN0YXJ0O2lmKHQubGVuZ3RoPD1pKXJldHVybntzdGFydEluZGV4OjAsZW5kSW5kZXg6bn07bGV0IGw9ZmluZE5lYXJlc3RCaW5hcnlTZWFyY2goMCxuLGdldE9mZnNldCxzKSxvPWw7aWYoMT09PWkpZm9yKDtvPG4mJnRbb10uZW5kPHMrZTspbysrO2Vsc2UgaWYoaT4xKXtjb25zdCByPUFycmF5KGkpLmZpbGwoMCk7Zm9yKDtvPG4mJnIuc29tZSh0PT50PHMrZSk7KXtjb25zdCBlPXRbb107cltlLmxhbmVdPWUuZW5kLG8rK31jb25zdCBhPUFycmF5KGkpLmZpbGwocytlKTtmb3IoO2w+PTAmJmEuc29tZSh0PT50Pj1zKTspe2NvbnN0IGU9dFtsXTthW2UubGFuZV09ZS5zdGFydCxsLS19bD1NYXRoLm1heCgwLGwtbCVpKSxvPU1hdGgubWluKG4sbysoaS0xLW8laSkpfXJldHVybntzdGFydEluZGV4OmwsZW5kSW5kZXg6b319KHttZWFzdXJlbWVudHM6dCxvdXRlclNpemU6ZSxzY3JvbGxPZmZzZXQ6cyxsYW5lczppfSk6bnVsbCx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWd9KSx0aGlzLmdldFZpcnR1YWxJbmRleGVzPW1lbW8oKCk9PntsZXQgdD1udWxsLGU9bnVsbDtjb25zdCBzPXRoaXMuY2FsY3VsYXRlUmFuZ2UoKTtyZXR1cm4gcyYmKHQ9cy5zdGFydEluZGV4LGU9cy5lbmRJbmRleCksdGhpcy5tYXliZU5vdGlmeS51cGRhdGVEZXBzKFt0aGlzLmlzU2Nyb2xsaW5nLHQsZV0pLFt0aGlzLm9wdGlvbnMucmFuZ2VFeHRyYWN0b3IsdGhpcy5vcHRpb25zLm92ZXJzY2FuLHRoaXMub3B0aW9ucy5jb3VudCx0LGVdfSwodCxlLHMsaSxuKT0+bnVsbD09PWl8fG51bGw9PT1uP1tdOnQoe3N0YXJ0SW5kZXg6aSxlbmRJbmRleDpuLG92ZXJzY2FuOmUsY291bnQ6c30pLHtrZXk6ITEsZGVidWc6KCk9PnRoaXMub3B0aW9ucy5kZWJ1Z30pLHRoaXMuaW5kZXhGcm9tRWxlbWVudD10PT57Y29uc3QgZT10aGlzLm9wdGlvbnMuaW5kZXhBdHRyaWJ1dGUscz10LmdldEF0dHJpYnV0ZShlKTtyZXR1cm4gcz9wYXJzZUludChzLDEwKTotMX0sdGhpcy5zaG91bGRNZWFzdXJlRHVyaW5nU2Nyb2xsPXQ9Pnt2YXIgZTtpZighdGhpcy5zY3JvbGxTdGF0ZXx8InNtb290aCIhPT10aGlzLnNjcm9sbFN0YXRlLmJlaGF2aW9yKXJldHVybiEwO2NvbnN0IHM9dGhpcy5zY3JvbGxTdGF0ZS5pbmRleD8/KG51bGw9PShlPXRoaXMuZ2V0VmlydHVhbEl0ZW1Gb3JPZmZzZXQodGhpcy5zY3JvbGxTdGF0ZS5sYXN0VGFyZ2V0T2Zmc2V0KSk/dm9pZCAwOmUuaW5kZXgpO2lmKHZvaWQgMCE9PXMmJnRoaXMucmFuZ2Upe2NvbnN0IGU9TWF0aC5tYXgodGhpcy5vcHRpb25zLm92ZXJzY2FuLE1hdGguY2VpbCgodGhpcy5yYW5nZS5lbmRJbmRleC10aGlzLnJhbmdlLnN0YXJ0SW5kZXgpLzIpKSxpPU1hdGgubWF4KDAscy1lKSxuPU1hdGgubWluKHRoaXMub3B0aW9ucy5jb3VudC0xLHMrZSk7cmV0dXJuIHQ+PWkmJnQ8PW59cmV0dXJuITB9LHRoaXMubWVhc3VyZUVsZW1lbnQ9dD0+e2lmKCF0KXJldHVybiB2b2lkIHRoaXMuZWxlbWVudHNDYWNoZS5mb3JFYWNoKCh0LGUpPT57dC5pc0Nvbm5lY3RlZHx8KHRoaXMub2JzZXJ2ZXIudW5vYnNlcnZlKHQpLHRoaXMuZWxlbWVudHNDYWNoZS5kZWxldGUoZSkpfSk7Y29uc3QgZT10aGlzLmluZGV4RnJvbUVsZW1lbnQodCkscz10aGlzLm9wdGlvbnMuZ2V0SXRlbUtleShlKSxpPXRoaXMuZWxlbWVudHNDYWNoZS5nZXQocyk7aSE9PXQmJihpJiZ0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZShpKSx0aGlzLm9ic2VydmVyLm9ic2VydmUodCksdGhpcy5lbGVtZW50c0NhY2hlLnNldChzLHQpKSx0aGlzLmlzU2Nyb2xsaW5nJiYhdGhpcy5zY3JvbGxTdGF0ZXx8IXRoaXMuc2hvdWxkTWVhc3VyZUR1cmluZ1Njcm9sbChlKXx8dGhpcy5yZXNpemVJdGVtKGUsdGhpcy5vcHRpb25zLm1lYXN1cmVFbGVtZW50KHQsdm9pZCAwLHRoaXMpKX0sdGhpcy5yZXNpemVJdGVtPSh0LGUpPT57dmFyIHM7Y29uc3QgaT10aGlzLm1lYXN1cmVtZW50c0NhY2hlW3RdO2lmKCFpKXJldHVybjtjb25zdCBuPWUtKHRoaXMuaXRlbVNpemVDYWNoZS5nZXQoaS5rZXkpPz9pLnNpemUpOzAhPT1uJiYoInNtb290aCIhPT0obnVsbD09KHM9dGhpcy5zY3JvbGxTdGF0ZSk/dm9pZCAwOnMuYmVoYXZpb3IpJiYodm9pZCAwIT09dGhpcy5zaG91bGRBZGp1c3RTY3JvbGxQb3NpdGlvbk9uSXRlbVNpemVDaGFuZ2U/dGhpcy5zaG91bGRBZGp1c3RTY3JvbGxQb3NpdGlvbk9uSXRlbVNpemVDaGFuZ2UoaSxuLHRoaXMpOmkuc3RhcnQ8dGhpcy5nZXRTY3JvbGxPZmZzZXQoKSt0aGlzLnNjcm9sbEFkanVzdG1lbnRzKSYmdGhpcy5fc2Nyb2xsVG9PZmZzZXQodGhpcy5nZXRTY3JvbGxPZmZzZXQoKSx7YWRqdXN0bWVudHM6dGhpcy5zY3JvbGxBZGp1c3RtZW50cys9bixiZWhhdmlvcjp2b2lkIDB9KSx0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcy5wdXNoKGkuaW5kZXgpLHRoaXMuaXRlbVNpemVDYWNoZT1uZXcgTWFwKHRoaXMuaXRlbVNpemVDYWNoZS5zZXQoaS5rZXksZSkpLHRoaXMubm90aWZ5KCExKSl9LHRoaXMuZ2V0VmlydHVhbEl0ZW1zPW1lbW8oKCk9Plt0aGlzLmdldFZpcnR1YWxJbmRleGVzKCksdGhpcy5nZXRNZWFzdXJlbWVudHMoKV0sKHQsZSk9Pntjb25zdCBzPVtdO2ZvcihsZXQgaT0wLG49dC5sZW5ndGg7aTxuO2krKyl7Y29uc3Qgbj1lW3RbaV1dO3MucHVzaChuKX1yZXR1cm4gc30se2tleTohMSxkZWJ1ZzooKT0+dGhpcy5vcHRpb25zLmRlYnVnfSksdGhpcy5nZXRWaXJ0dWFsSXRlbUZvck9mZnNldD10PT57Y29uc3QgZT10aGlzLmdldE1lYXN1cmVtZW50cygpO2lmKDAhPT1lLmxlbmd0aClyZXR1cm4gbm90VW5kZWZpbmVkKGVbZmluZE5lYXJlc3RCaW5hcnlTZWFyY2goMCxlLmxlbmd0aC0xLHQ9Pm5vdFVuZGVmaW5lZChlW3RdKS5zdGFydCx0KV0pfSx0aGlzLmdldE1heFNjcm9sbE9mZnNldD0oKT0+e2lmKCF0aGlzLnNjcm9sbEVsZW1lbnQpcmV0dXJuIDA7aWYoInNjcm9sbEhlaWdodCJpbiB0aGlzLnNjcm9sbEVsZW1lbnQpcmV0dXJuIHRoaXMub3B0aW9ucy5ob3Jpem9udGFsP3RoaXMuc2Nyb2xsRWxlbWVudC5zY3JvbGxXaWR0aC10aGlzLnNjcm9sbEVsZW1lbnQuY2xpZW50V2lkdGg6dGhpcy5zY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodC10aGlzLnNjcm9sbEVsZW1lbnQuY2xpZW50SGVpZ2h0O3tjb25zdCB0PXRoaXMuc2Nyb2xsRWxlbWVudC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIHRoaXMub3B0aW9ucy5ob3Jpem9udGFsP3Quc2Nyb2xsV2lkdGgtdGhpcy5zY3JvbGxFbGVtZW50LmlubmVyV2lkdGg6dC5zY3JvbGxIZWlnaHQtdGhpcy5zY3JvbGxFbGVtZW50LmlubmVySGVpZ2h0fX0sdGhpcy5nZXRPZmZzZXRGb3JBbGlnbm1lbnQ9KHQsZSxzPTApPT57aWYoIXRoaXMuc2Nyb2xsRWxlbWVudClyZXR1cm4gMDtjb25zdCBpPXRoaXMuZ2V0U2l6ZSgpLG49dGhpcy5nZXRTY3JvbGxPZmZzZXQoKTsiYXV0byI9PT1lJiYoZT10Pj1uK2k/ImVuZCI6InN0YXJ0IiksImNlbnRlciI9PT1lP3QrPShzLWkpLzI6ImVuZCI9PT1lJiYodC09aSk7Y29uc3QgbD10aGlzLmdldE1heFNjcm9sbE9mZnNldCgpO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihsLHQpLDApfSx0aGlzLmdldE9mZnNldEZvckluZGV4PSh0LGU9ImF1dG8iKT0+e3Q9TWF0aC5tYXgoMCxNYXRoLm1pbih0LHRoaXMub3B0aW9ucy5jb3VudC0xKSk7Y29uc3Qgcz10aGlzLmdldFNpemUoKSxpPXRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCksbj10aGlzLm1lYXN1cmVtZW50c0NhY2hlW3RdO2lmKCFuKXJldHVybjtpZigiYXV0byI9PT1lKWlmKG4uZW5kPj1pK3MtdGhpcy5vcHRpb25zLnNjcm9sbFBhZGRpbmdFbmQpZT0iZW5kIjtlbHNle2lmKCEobi5zdGFydDw9aSt0aGlzLm9wdGlvbnMuc2Nyb2xsUGFkZGluZ1N0YXJ0KSlyZXR1cm5baSxlXTtlPSJzdGFydCJ9aWYoImVuZCI9PT1lJiZ0PT09dGhpcy5vcHRpb25zLmNvdW50LTEpcmV0dXJuW3RoaXMuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCksZV07Y29uc3QgbD0iZW5kIj09PWU/bi5lbmQrdGhpcy5vcHRpb25zLnNjcm9sbFBhZGRpbmdFbmQ6bi5zdGFydC10aGlzLm9wdGlvbnMuc2Nyb2xsUGFkZGluZ1N0YXJ0O3JldHVyblt0aGlzLmdldE9mZnNldEZvckFsaWdubWVudChsLGUsbi5zaXplKSxlXX0sdGhpcy5zY3JvbGxUb09mZnNldD0odCx7YWxpZ246ZT0ic3RhcnQiLGJlaGF2aW9yOnM9ImF1dG8ifT17fSk9Pntjb25zdCBpPXRoaXMuZ2V0T2Zmc2V0Rm9yQWxpZ25tZW50KHQsZSksbj10aGlzLm5vdygpO3RoaXMuc2Nyb2xsU3RhdGU9e2luZGV4Om51bGwsYWxpZ246ZSxiZWhhdmlvcjpzLHN0YXJ0ZWRBdDpuLGxhc3RUYXJnZXRPZmZzZXQ6aSxzdGFibGVGcmFtZXM6MH0sdGhpcy5fc2Nyb2xsVG9PZmZzZXQoaSx7YWRqdXN0bWVudHM6dm9pZCAwLGJlaGF2aW9yOnN9KSx0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl9LHRoaXMuc2Nyb2xsVG9JbmRleD0odCx7YWxpZ246ZT0iYXV0byIsYmVoYXZpb3I6cz0iYXV0byJ9PXt9KT0+e3Q9TWF0aC5tYXgoMCxNYXRoLm1pbih0LHRoaXMub3B0aW9ucy5jb3VudC0xKSk7Y29uc3QgaT10aGlzLmdldE9mZnNldEZvckluZGV4KHQsZSk7aWYoIWkpcmV0dXJuO2NvbnN0W24sbF09aSxvPXRoaXMubm93KCk7dGhpcy5zY3JvbGxTdGF0ZT17aW5kZXg6dCxhbGlnbjpsLGJlaGF2aW9yOnMsc3RhcnRlZEF0Om8sbGFzdFRhcmdldE9mZnNldDpuLHN0YWJsZUZyYW1lczowfSx0aGlzLl9zY3JvbGxUb09mZnNldChuLHthZGp1c3RtZW50czp2b2lkIDAsYmVoYXZpb3I6c30pLHRoaXMuc2NoZWR1bGVTY3JvbGxSZWNvbmNpbGUoKX0sdGhpcy5zY3JvbGxCeT0odCx7YmVoYXZpb3I6ZT0iYXV0byJ9PXt9KT0+e2NvbnN0IHM9dGhpcy5nZXRTY3JvbGxPZmZzZXQoKSt0LGk9dGhpcy5ub3coKTt0aGlzLnNjcm9sbFN0YXRlPXtpbmRleDpudWxsLGFsaWduOiJzdGFydCIsYmVoYXZpb3I6ZSxzdGFydGVkQXQ6aSxsYXN0VGFyZ2V0T2Zmc2V0OnMsc3RhYmxlRnJhbWVzOjB9LHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHMse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjplfSksdGhpcy5zY2hlZHVsZVNjcm9sbFJlY29uY2lsZSgpfSx0aGlzLmdldFRvdGFsU2l6ZT0oKT0+e3ZhciB0O2NvbnN0IGU9dGhpcy5nZXRNZWFzdXJlbWVudHMoKTtsZXQgcztpZigwPT09ZS5sZW5ndGgpcz10aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0O2Vsc2UgaWYoMT09PXRoaXMub3B0aW9ucy5sYW5lcylzPShudWxsPT0odD1lW2UubGVuZ3RoLTFdKT92b2lkIDA6dC5lbmQpPz8wO2Vsc2V7Y29uc3QgdD1BcnJheSh0aGlzLm9wdGlvbnMubGFuZXMpLmZpbGwobnVsbCk7bGV0IGk9ZS5sZW5ndGgtMTtmb3IoO2k+PTAmJnQuc29tZSh0PT5udWxsPT09dCk7KXtjb25zdCBzPWVbaV07bnVsbD09PXRbcy5sYW5lXSYmKHRbcy5sYW5lXT1zLmVuZCksaS0tfXM9TWF0aC5tYXgoLi4udC5maWx0ZXIodD0+bnVsbCE9PXQpKX1yZXR1cm4gTWF0aC5tYXgocy10aGlzLm9wdGlvbnMuc2Nyb2xsTWFyZ2luK3RoaXMub3B0aW9ucy5wYWRkaW5nRW5kLDApfSx0aGlzLl9zY3JvbGxUb09mZnNldD0odCx7YWRqdXN0bWVudHM6ZSxiZWhhdmlvcjpzfSk9Pnt0aGlzLm9wdGlvbnMuc2Nyb2xsVG9Gbih0LHtiZWhhdmlvcjpzLGFkanVzdG1lbnRzOmV9LHRoaXMpfSx0aGlzLm1lYXN1cmU9KCk9Pnt0aGlzLml0ZW1TaXplQ2FjaGU9bmV3IE1hcCx0aGlzLmxhbmVBc3NpZ25tZW50cz1uZXcgTWFwLHRoaXMubm90aWZ5KCExKX0sdGhpcy5zZXRPcHRpb25zKHQpfXNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl7dGhpcy50YXJnZXRXaW5kb3c/bnVsbD09dGhpcy5yYWZJZCYmKHRoaXMucmFmSWQ9dGhpcy50YXJnZXRXaW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5yYWZJZD1udWxsLHRoaXMucmVjb25jaWxlU2Nyb2xsKCl9KSk6dGhpcy5zY3JvbGxTdGF0ZT1udWxsfXJlY29uY2lsZVNjcm9sbCgpe2lmKCF0aGlzLnNjcm9sbFN0YXRlKXJldHVybjtpZighdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybjtpZih0aGlzLm5vdygpLXRoaXMuc2Nyb2xsU3RhdGUuc3RhcnRlZEF0PjVlMylyZXR1cm4gdm9pZCh0aGlzLnNjcm9sbFN0YXRlPW51bGwpO2NvbnN0IHQ9bnVsbCE9dGhpcy5zY3JvbGxTdGF0ZS5pbmRleD90aGlzLmdldE9mZnNldEZvckluZGV4KHRoaXMuc2Nyb2xsU3RhdGUuaW5kZXgsdGhpcy5zY3JvbGxTdGF0ZS5hbGlnbik6dm9pZCAwLGU9dD90WzBdOnRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldCxzPWUhPT10aGlzLnNjcm9sbFN0YXRlLmxhc3RUYXJnZXRPZmZzZXQ7aWYoIXMmJihpPWUsbj10aGlzLmdldFNjcm9sbE9mZnNldCgpLE1hdGguYWJzKGktbik8MS4wMSkpe2lmKHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzKyssdGhpcy5zY3JvbGxTdGF0ZS5zdGFibGVGcmFtZXM+PTEpcmV0dXJuIHZvaWQodGhpcy5zY3JvbGxTdGF0ZT1udWxsKX1lbHNlIHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzPTAscyYmKHRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldD1lLHRoaXMuc2Nyb2xsU3RhdGUuYmVoYXZpb3I9ImF1dG8iLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KGUse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjoiYXV0byJ9KSk7dmFyIGksbjt0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl9fWNvbnN0IGZpbmROZWFyZXN0QmluYXJ5U2VhcmNoPSh0LGUscyxpKT0+e2Zvcig7dDw9ZTspe2NvbnN0IG49KHQrZSkvMnwwLGw9cyhuKTtpZihsPGkpdD1uKzE7ZWxzZXtpZighKGw+aSkpcmV0dXJuIG47ZT1uLTF9fXJldHVybiB0PjA/dC0xOjB9O2Z1bmN0aW9uIHVzZVZpcnR1YWxpemVyKGUpe3JldHVybiBmdW5jdGlvbihlKXtjb25zdCBzPW5ldyBWaXJ0dWFsaXplcih0LnVucmVmKGUpKSxpPXQuc2hhbGxvd1JlZihzKSxuPXMuX2RpZE1vdW50KCk7cmV0dXJuIHQud2F0Y2goKCk9PnQudW5yZWYoZSkuZ2V0U2Nyb2xsRWxlbWVudCgpLHQ9Pnt0JiZzLl93aWxsVXBkYXRlKCl9LHtpbW1lZGlhdGU6ITB9KSx0LndhdGNoKCgpPT50LnVucmVmKGUpLGU9PntzLnNldE9wdGlvbnMoey4uLmUsb25DaGFuZ2U6KHMsbik9Pnt2YXIgbDt0LnRyaWdnZXJSZWYoaSksbnVsbD09KGw9ZS5vbkNoYW5nZSl8fGwuY2FsbChlLHMsbil9fSkscy5fd2lsbFVwZGF0ZSgpLHQudHJpZ2dlclJlZihpKX0se2ltbWVkaWF0ZTohMH0pLHQub25TY29wZURpc3Bvc2UobiksaX0odC5jb21wdXRlZCgoKT0+KHtvYnNlcnZlRWxlbWVudFJlY3Q6b2JzZXJ2ZUVsZW1lbnRSZWN0LG9ic2VydmVFbGVtZW50T2Zmc2V0Om9ic2VydmVFbGVtZW50T2Zmc2V0LHNjcm9sbFRvRm46ZWxlbWVudFNjcm9sbCwuLi50LnVucmVmKGUpfSkpKX1leHBvcnR7dXNlVmlydHVhbGl6ZXIgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LUIxUE9UTG1hLm1qcy5tYXAK", "chunks/build/index-BvUPl8hD.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRm9ybS1DZU5mMUk1cS5tanMiO2ltcG9ydHtfIGFzIGF9ZnJvbSIuL1BhZ2VDYXJkLUJ3LVc0cXhzLm1qcyI7aW1wb3J0e3YgYXMgbCxoIGFzIHQsYSBhcyByLF8gYXMgbixnIGFzIG99ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIHN9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgdX1mcm9tIi4vU2VwYXJhdG9yLUR3Y1I5UE0xLm1qcyI7aW1wb3J0e18gYXMgZH1mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7ZiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e28gYXMgYyxzIGFzIGYsYiBhcyBwfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQiLi4vXy9zaGFyZWQuZXNtLWJ1bmRsZXIubWpzIjtpbXBvcnQiLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydCIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBnPWMoe25hbWU6ZigpLnRyaW0oKS5taW4oMSkubWF4KDEwMCkub3B0aW9uYWwoKSx1c2VybmFtZTpmKCkudHJpbSgpLm1pbigzKS5tYXgoNTApLnJlZ2V4KC9eXHcrJC8sIkxldHRlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmUiKS5vcHRpb25hbCgpLGJpbzpmKCkudHJpbSgpLm1heCg1MDApLm9wdGlvbmFsKCl9KS5yZWZpbmUoZT0+T2JqZWN0LmtleXMoZSkubGVuZ3RoPjAse21lc3NhZ2U6IkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCJ9KTtjKHtlbWFpbDpwKCkscHJvZHVjdF91cGRhdGVzOnAoKSx3ZWVrbHlfZGlnZXN0OnAoKSxpbXBvcnRhbnRfdXBkYXRlczpwKCl9KTtjb25zdCBWPWwuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6ImluZGV4IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChjKXtjb25zdCBmPXQoKSxwPXIoKSxWPWwucmVmKHtuYW1lOmYuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHVzZXJuYW1lOmYuY3VycmVudFVzZXI/LnVzZXJuYW1lPz8iIixiaW86Zi5jdXJyZW50VXNlcj8uYmlvPz8iIn0pLGI9bC5yZWYoITEpLHg9bC5yZWYobnVsbCksdj1sLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gb25TdWJtaXQoKXtiLnZhbHVlPSEwO3RyeXthd2FpdCBmLnVwZGF0ZUN1cnJlbnRVc2VyKHtuYW1lOlYudmFsdWUubmFtZSx1c2VybmFtZTpWLnZhbHVlLnVzZXJuYW1lLGJpbzpWLnZhbHVlLmJpb30pLHAuYWRkKHt0aXRsZToiUHJvZmlsZSB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBhPWU7cC5hZGQoe3RpdGxlOiJVcGRhdGUgZmFpbGVkIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Yi52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gb25BdmF0YXJDaGFuZ2UoZSl7Y29uc3QgYT1lLnRhcmdldC5maWxlcz8uWzBdO2lmKGEpaWYoYS5zaXplPjIwOTcxNTIpcC5hZGQoe3RpdGxlOiJBdmF0YXIgbXVzdCBiZSDiiaQgMk1CIixjb2xvcjoiZXJyb3IifSk7ZWxzZXt2LnZhbHVlPSEwO3RyeXthd2FpdCBmLnVwZGF0ZUF2YXRhcihhKSxwLmFkZCh7dGl0bGU6IkF2YXRhciB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBhPWU7cC5hZGQoe3RpdGxlOiJVcGxvYWQgZmFpbGVkIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7di52YWx1ZT0hMSx4LnZhbHVlJiYoeC52YWx1ZS52YWx1ZT0iIil9fX1yZXR1cm4odCxyLGMscCk9Pntjb25zdCB3PWEsaD1uLE49aSx5PXMsVT11LEM9byxfPWQ7cihtKGUsbC5tZXJnZVByb3BzKHtzY2hlbWE6bC51bnJlZihnKSxzdGF0ZTpsLnVucmVmKFYpLG9uU3VibWl0Om9uU3VibWl0fSxwKSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUodyx7dGl0bGU6IlByb2ZpbGUiLGRlc2NyaXB0aW9uOiJUaGVzZSBpbmZvcm1hdGlvbnMgd2lsbCBiZSBkaXNwbGF5ZWQgcHVibGljbHkuIix2YXJpYW50OiJuYWtlZCIsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOiJtYi00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShoLHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIGNoYW5nZXMiLGxvYWRpbmc6bC51bnJlZihiKSxjbGFzczoidy1maXQgbGc6bXMtYXV0byJ9LG51bGwsOCxbImxvYWRpbmciXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKHcse3ZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoTix7bmFtZToibmFtZSIsbGFiZWw6Ik5hbWUiLGRlc2NyaXB0aW9uOiJXaWxsIGFwcGVhciBvbiByZWNlaXB0cywgaW52b2ljZXMsIGFuZCBvdGhlciBjb21tdW5pY2F0aW9uLiIscmVxdWlyZWQ6IiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoVikubmFtZT1lLGF1dG9jb21wbGV0ZToib2ZmIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKFUpLGwuY3JlYXRlVk5vZGUoTix7bmFtZToiZW1haWwiLGxhYmVsOiJFbWFpbCIsZGVzY3JpcHRpb246IlVzZWQgdG8gc2lnbiBpbiwgZm9yIGVtYWlsIHJlY2VpcHRzIGFuZCBwcm9kdWN0IHVwZGF0ZXMuIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHsibW9kZWwtdmFsdWUiOmwudW5yZWYoZikuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShVKSxsLmNyZWF0ZVZOb2RlKE4se25hbWU6InVzZXJuYW1lIixsYWJlbDoiVXNlcm5hbWUiLGRlc2NyaXB0aW9uOiJZb3VyIHVuaXF1ZSB1c2VybmFtZSBmb3IgbG9nZ2luZyBpbiBhbmQgeW91ciBwcm9maWxlIFVSTC4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihWKS51c2VybmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS51c2VybmFtZT1lfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoVSksbC5jcmVhdGVWTm9kZShOLHtuYW1lOiJhdmF0YXIiLGxhYmVsOiJBdmF0YXIiLGRlc2NyaXB0aW9uOiJQTkcsIEpQRUcsIEdJRiBvciBXRUJQLiBNYXggMk1CLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBzbTppdGVtcy1jZW50ZXIgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxbbC5jcmVhdGVWTm9kZShDLHtzcmM6bC51bnJlZihmKS5jdXJyZW50VXNlcj8uYXZhdGFyPz92b2lkIDAsYWx0OmwudW5yZWYoZikuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHNpemU6ImxnIn0sbnVsbCw4LFsic3JjIiwiYWx0Il0pLGwuY3JlYXRlVk5vZGUoaCx7bGFiZWw6IkNoYW5nZSIsaWNvbjoiaS1sdWNpZGUtdXBsb2FkIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOmwudW5yZWYodiksb25DbGljazplPT5sLnVucmVmKHgpPy5jbGljaygpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKSxsLmNyZWF0ZVZOb2RlKCJpbnB1dCIse3JlZl9rZXk6ImZpbGVJbnB1dCIscmVmOngsdHlwZToiZmlsZSIsYWNjZXB0OiJpbWFnZS9wbmcsaW1hZ2UvanBlZyxpbWFnZS9naWYsaW1hZ2Uvd2VicCIsY2xhc3M6ImhpZGRlbiIsb25DaGFuZ2U6b25BdmF0YXJDaGFuZ2V9LG51bGwsNTQ0KV0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShVKSxsLmNyZWF0ZVZOb2RlKE4se25hbWU6ImJpbyIsbGFiZWw6IkJpbyIsZGVzY3JpcHRpb246IkJyaWVmIGRlc2NyaXB0aW9uIGZvciB5b3VyIHByb2ZpbGUuIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShfLHttb2RlbFZhbHVlOmwudW5yZWYoVikuYmlvLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLmJpbz1lLHJvd3M6NCxhdXRvcmVzaXplOiIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pXSksXzoxfSldO2EobSh3LHt0aXRsZToiUHJvZmlsZSIsZGVzY3JpcHRpb246IlRoZXNlIGluZm9ybWF0aW9ucyB3aWxsIGJlIGRpc3BsYXllZCBwdWJsaWNseS4iLHZhcmlhbnQ6Im5ha2VkIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6Im1iLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoaCx7dHlwZToic3VibWl0IixsYWJlbDoiU2F2ZSBjaGFuZ2VzIixsb2FkaW5nOmwudW5yZWYoYiksY2xhc3M6InctZml0IGxnOm1zLWF1dG8ifSxudWxsLDgsWyJsb2FkaW5nIl0pXTthKG0oaCx7dHlwZToic3VibWl0IixsYWJlbDoiU2F2ZSBjaGFuZ2VzIixsb2FkaW5nOmwudW5yZWYoYiksY2xhc3M6InctZml0IGxnOm1zLWF1dG8ifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxhKG0odyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxyKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKE4se25hbWU6Im5hbWUiLGxhYmVsOiJOYW1lIixkZXNjcmlwdGlvbjoiV2lsbCBhcHBlYXIgb24gcmVjZWlwdHMsIGludm9pY2VzLCBhbmQgb3RoZXIgY29tbXVuaWNhdGlvbi4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHkse21vZGVsVmFsdWU6bC51bnJlZihWKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLm5hbWU9ZSxhdXRvY29tcGxldGU6Im9mZiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShVKSxsLmNyZWF0ZVZOb2RlKE4se25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHNpZ24gaW4sIGZvciBlbWFpbCByZWNlaXB0cyBhbmQgcHJvZHVjdCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeSx7Im1vZGVsLXZhbHVlIjpsLnVucmVmKGYpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsLGRpc2FibGVkOiIifSxudWxsLDgsWyJtb2RlbC12YWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoVSksbC5jcmVhdGVWTm9kZShOLHtuYW1lOiJ1c2VybmFtZSIsbGFiZWw6IlVzZXJuYW1lIixkZXNjcmlwdGlvbjoiWW91ciB1bmlxdWUgdXNlcm5hbWUgZm9yIGxvZ2dpbmcgaW4gYW5kIHlvdXIgcHJvZmlsZSBVUkwuIixyZXF1aXJlZDoiIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOmwudW5yZWYoVikudXNlcm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoVikudXNlcm5hbWU9ZX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsLmNyZWF0ZVZOb2RlKFUpLGwuY3JlYXRlVk5vZGUoTix7bmFtZToiYXZhdGFyIixsYWJlbDoiQXZhdGFyIixkZXNjcmlwdGlvbjoiUE5HLCBKUEVHLCBHSUYgb3IgV0VCUC4gTWF4IDJNQi4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gc206aXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIn0sW2wuY3JlYXRlVk5vZGUoQyx7c3JjOmwudW5yZWYoZikuY3VycmVudFVzZXI/LmF2YXRhcj8/dm9pZCAwLGFsdDpsLnVucmVmKGYpLmN1cnJlbnRVc2VyPy5uYW1lPz8iIixzaXplOiJsZyJ9LG51bGwsOCxbInNyYyIsImFsdCJdKSxsLmNyZWF0ZVZOb2RlKGgse2xhYmVsOiJDaGFuZ2UiLGljb246ImktbHVjaWRlLXVwbG9hZCIsdmFyaWFudDoib3V0bGluZSIsbG9hZGluZzpsLnVucmVmKHYpLG9uQ2xpY2s6ZT0+bC51bnJlZih4KT8uY2xpY2soKX0sbnVsbCw4LFsibG9hZGluZyIsIm9uQ2xpY2siXSksbC5jcmVhdGVWTm9kZSgiaW5wdXQiLHtyZWZfa2V5OiJmaWxlSW5wdXQiLHJlZjp4LHR5cGU6ImZpbGUiLGFjY2VwdDoiaW1hZ2UvcG5nLGltYWdlL2pwZWcsaW1hZ2UvZ2lmLGltYWdlL3dlYnAiLGNsYXNzOiJoaWRkZW4iLG9uQ2hhbmdlOm9uQXZhdGFyQ2hhbmdlfSxudWxsLDU0NCldKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoVSksbC5jcmVhdGVWTm9kZShOLHtuYW1lOiJiaW8iLGxhYmVsOiJCaW8iLGRlc2NyaXB0aW9uOiJCcmllZiBkZXNjcmlwdGlvbiBmb3IgeW91ciBwcm9maWxlLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoXyx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLmJpbywib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS5iaW89ZSxyb3dzOjQsYXV0b3Jlc2l6ZToiIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KV07YShtKE4se25hbWU6Im5hbWUiLGxhYmVsOiJOYW1lIixkZXNjcmlwdGlvbjoiV2lsbCBhcHBlYXIgb24gcmVjZWlwdHMsIGludm9pY2VzLCBhbmQgb3RoZXIgY29tbXVuaWNhdGlvbi4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoVikubmFtZT1lLGF1dG9jb21wbGV0ZToib2ZmIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO2EobSh5LHttb2RlbFZhbHVlOmwudW5yZWYoVikubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS5uYW1lPWUsYXV0b2NvbXBsZXRlOiJvZmYifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxhKG0oVSxudWxsLG51bGwsdCxyKSksYShtKE4se25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHNpZ24gaW4sIGZvciBlbWFpbCByZWNlaXB0cyBhbmQgcHJvZHVjdCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQscik9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZSh5LHsibW9kZWwtdmFsdWUiOmwudW5yZWYoZikuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXTthKG0oeSx7Im1vZGVsLXZhbHVlIjpsLnVucmVmKGYpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsLGRpc2FibGVkOiIifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxhKG0oVSxudWxsLG51bGwsdCxyKSksYShtKE4se25hbWU6InVzZXJuYW1lIixsYWJlbDoiVXNlcm5hbWUiLGRlc2NyaXB0aW9uOiJZb3VyIHVuaXF1ZSB1c2VybmFtZSBmb3IgbG9nZ2luZyBpbiBhbmQgeW91ciBwcm9maWxlIFVSTC4iLHJlcXVpcmVkOiIiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLnVzZXJuYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLnVzZXJuYW1lPWV9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTthKG0oeSx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLnVzZXJuYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLnVzZXJuYW1lPWV9LG51bGwsdCxyKSl9KSxfOjF9LHQscikpLGEobShVLG51bGwsbnVsbCx0LHIpKSxhKG0oTix7bmFtZToiYXZhdGFyIixsYWJlbDoiQXZhdGFyIixkZXNjcmlwdGlvbjoiUE5HLCBKUEVHLCBHSUYgb3IgV0VCUC4gTWF4IDJNQi4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gc206aXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxyKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxbbC5jcmVhdGVWTm9kZShDLHtzcmM6bC51bnJlZihmKS5jdXJyZW50VXNlcj8uYXZhdGFyPz92b2lkIDAsYWx0OmwudW5yZWYoZikuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHNpemU6ImxnIn0sbnVsbCw4LFsic3JjIiwiYWx0Il0pLGwuY3JlYXRlVk5vZGUoaCx7bGFiZWw6IkNoYW5nZSIsaWNvbjoiaS1sdWNpZGUtdXBsb2FkIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOmwudW5yZWYodiksb25DbGljazplPT5sLnVucmVmKHgpPy5jbGljaygpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKSxsLmNyZWF0ZVZOb2RlKCJpbnB1dCIse3JlZl9rZXk6ImZpbGVJbnB1dCIscmVmOngsdHlwZToiZmlsZSIsYWNjZXB0OiJpbWFnZS9wbmcsaW1hZ2UvanBlZyxpbWFnZS9naWYsaW1hZ2Uvd2VicCIsY2xhc3M6ImhpZGRlbiIsb25DaGFuZ2U6b25BdmF0YXJDaGFuZ2V9LG51bGwsNTQ0KV0pXTthKGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyIke3J9PmApLGEobShDLHtzcmM6bC51bnJlZihmKS5jdXJyZW50VXNlcj8uYXZhdGFyPz92b2lkIDAsYWx0OmwudW5yZWYoZikuY3VycmVudFVzZXI/Lm5hbWU/PyIiLHNpemU6ImxnIn0sbnVsbCx0LHIpKSxhKG0oaCx7bGFiZWw6IkNoYW5nZSIsaWNvbjoiaS1sdWNpZGUtdXBsb2FkIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOmwudW5yZWYodiksb25DbGljazplPT5sLnVucmVmKHgpPy5jbGljaygpfSxudWxsLHQscikpLGEoYDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdlL3BuZyxpbWFnZS9qcGVnLGltYWdlL2dpZixpbWFnZS93ZWJwIiBjbGFzcz0iaGlkZGVuIiR7cn0+PC9kaXY+YCl9KSxfOjF9LHQscikpLGEobShVLG51bGwsbnVsbCx0LHIpKSxhKG0oTix7bmFtZToiYmlvIixsYWJlbDoiQmlvIixkZXNjcmlwdGlvbjoiQnJpZWYgZGVzY3JpcHRpb24gZm9yIHlvdXIgcHJvZmlsZS4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LHIpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoXyx7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLmJpbywib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihWKS5iaW89ZSxyb3dzOjQsYXV0b3Jlc2l6ZToiIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO2EobShfLHttb2RlbFZhbHVlOmwudW5yZWYoVikuYmlvLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKFYpLmJpbz1lLHJvd3M6NCxhdXRvcmVzaXplOiIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLHQscikpfSksXzoxfSx0LHIpKX0pLF86MX0sdCxyKSl9KSxfOjF9LGMpKX19fSksYj1WLnNldHVwO1Yuc2V0dXA9KGUsYSk9Pntjb25zdCB0PWwudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL3NldHRpbmdzL2luZGV4LnZ1ZSIpLGI/YihlLGEpOnZvaWQgMH07ZXhwb3J0e1YgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LUJ2VVBsOGhELm1qcy5tYXAK", "chunks/build/index-C2QN8gzE.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7diBhcyB0LHUgYXMgbyxhLGkgYXMgbCxfIGFzIHIsYiBhcyBuLGFLIGFzIHN9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL01vZGFsLUIweVdQeFdfLm1qcyI7aW1wb3J0e3V9ZnJvbSIuL3VzZVByb2plY3RBcGktQ1RMMks2SlYubWpzIjtpbXBvcnR7XyBhcyBkfWZyb20iLi9Gb3JtLUNlTmYxSTVxLm1qcyI7aW1wb3J0e18gYXMgY31mcm9tIi4vRm9ybUZpZWxkLUNWTEl6UkxZLm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vSW5wdXQtREd5dlFRUmQubWpzIjtpbXBvcnR7XyBhcyBwfWZyb20iLi9UZXh0YXJlYS1CeXRwYU1WSC5tanMiO2ltcG9ydHtfIGFzIGZ9ZnJvbSIuL1NlbGVjdC1EaWFpbGZVYy5tanMiO2ltcG9ydHtfIGFzIGp9ZnJvbSIuL1NrZWxldG9uLUJmdHF5R3AzLm1qcyI7aW1wb3J0e18gYXMgdn1mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7XyBhcyBifWZyb20iLi9Ecm9wZG93bk1lbnUtQ2VjUGNlSmEubWpzIjtpbXBvcnR7XyBhcyBWfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7dyBhcyBofWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtmIGFzIHgsbyBhcyBDLHQgYXMgXyxxIGFzIHd9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnR7byBhcyB5LF8gYXMgZyxzIGFzIFB9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vb3ZlcmxheS1DanlCekwxQy5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzIjtpbXBvcnQiLi91c2VSZXNvbHZlZFZhcmlhbnRzLURoSHU2dlJLLm1qcyI7aW1wb3J0Ii4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vdXNlRmlsdGVyLUNsQ1phb2k4Lm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkTmF2YmFyLXBrSUVhZE9KLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS1DSE1NaWJfVy5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJDb2xsYXBzZS1DUUNaT3RYSC5tanMiO2ltcG9ydCIuL3VzZUxheWVyUmVnaXN0cnktQzlDQjIwVUgubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3QgUz10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9qZWN0Rm9ybSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2luaXRpYWxWYWx1ZXM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJzdWJtaXQiLCJjYW5jZWwiXSxzZXR1cChlLHtlbWl0Om99KXtjb25zdCBhPWUsbD1vLG49eSh7bmFtZTpQKCkubWluKDEsIk5hbWUgaXMgcmVxdWlyZWQiKS5tYXgoMjAwKSxkZXNjcmlwdGlvbjpQKCkubWF4KDJlMykub3B0aW9uYWwoKSxzdGF0dXM6ZyhbImFjdGl2ZSIsImFyY2hpdmVkIl0pfSkscz10LnJlYWN0aXZlKHtuYW1lOmEuaW5pdGlhbFZhbHVlcz8ubmFtZT8/IiIsZGVzY3JpcHRpb246YS5pbml0aWFsVmFsdWVzPy5kZXNjcmlwdGlvbj8/IiIsc3RhdHVzOmEuaW5pdGlhbFZhbHVlcz8uc3RhdHVzPz8iYWN0aXZlIn0pLGk9W3tsYWJlbDoiQWN0aXZlIix2YWx1ZToiYWN0aXZlIn0se2xhYmVsOiJBcmNoaXZlZCIsdmFsdWU6ImFyY2hpdmVkIn1dO2Z1bmN0aW9uIG9uU3VibWl0KGUpe2woInN1Ym1pdCIsZS5kYXRhKX1yZXR1cm4obyxhLHUsaik9Pntjb25zdCB2PWMsYj1tLFY9cCxoPWYsQz1yO2EoeChkLHQubWVyZ2VQcm9wcyh7c2NoZW1hOnQudW5yZWYobiksc3RhdGU6dC51bnJlZihzKSxjbGFzczoic3BhY2UteS00IixvblN1Ym1pdDpvblN1Ym1pdH0saikse2RlZmF1bHQ6dC53aXRoQ3R4KChvLGEscixuKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVZOb2RlKHYse2xhYmVsOiJOYW1lIixuYW1lOiJuYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZShiLHttb2RlbFZhbHVlOnQudW5yZWYocykubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+dC51bnJlZihzKS5uYW1lPWUscGxhY2Vob2xkZXI6IlByb2plY3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksdC5jcmVhdGVWTm9kZSh2LHtsYWJlbDoiRGVzY3JpcHRpb24iLG5hbWU6ImRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZShWLHttb2RlbFZhbHVlOnQudW5yZWYocykuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuZGVzY3JpcHRpb249ZSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSx0LmNyZWF0ZVZOb2RlKHYse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoKT0+W3QuY3JlYXRlVk5vZGUoaCx7bW9kZWxWYWx1ZTp0LnVucmVmKHMpLnN0YXR1cywib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+dC51bnJlZihzKS5zdGF0dXM9ZSxpdGVtczppLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSx0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LFt0LmNyZWF0ZVZOb2RlKEMse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5sKCJjYW5jZWwiKX0sbnVsbCw4LFsib25DbGljayJdKSx0LmNyZWF0ZVZOb2RlKEMse3R5cGU6InN1Ym1pdCIsbGFiZWw6IlNhdmUiLGxvYWRpbmc6ZS5sb2FkaW5nfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldO2EoeCh2LHtsYWJlbDoiTmFtZSIsbmFtZToibmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShiLHttb2RlbFZhbHVlOnQudW5yZWYocykubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+dC51bnJlZihzKS5uYW1lPWUscGxhY2Vob2xkZXI6IlByb2plY3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTtvKHgoYix7bW9kZWxWYWx1ZTp0LnVucmVmKHMpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykubmFtZT1lLHBsYWNlaG9sZGVyOiJQcm9qZWN0IG5hbWUiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEsbCkpfSksXzoxfSxyLG4pKSxhKHgodix7bGFiZWw6IkRlc2NyaXB0aW9uIixuYW1lOiJkZXNjcmlwdGlvbiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShWLHttb2RlbFZhbHVlOnQudW5yZWYocykuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuZGVzY3JpcHRpb249ZSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO28oeChWLHttb2RlbFZhbHVlOnQudW5yZWYocykuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuZGVzY3JpcHRpb249ZSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCxhLGwpKX0pLF86MX0scixuKSksYSh4KHYse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShoLHttb2RlbFZhbHVlOnQudW5yZWYocykuc3RhdHVzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT50LnVucmVmKHMpLnN0YXR1cz1lLGl0ZW1zOmksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07byh4KGgse21vZGVsVmFsdWU6dC51bnJlZihzKS5zdGF0dXMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnQudW5yZWYocykuc3RhdHVzPWUsaXRlbXM6aSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxsKSl9KSxfOjF9LHIsbikpLGEoYDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIiJHtufT5gKSxhKHgoQyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PmwoImNhbmNlbCIpfSxudWxsLHIsbikpLGEoeChDLHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIixsb2FkaW5nOmUubG9hZGluZ30sbnVsbCxyLG4pKSxhKCI8L2Rpdj4iKX0pLF86MX0sdSkpfX19KSxOPVMuc2V0dXA7Uy5zZXR1cD0oZSxvKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvamVjdC9hcHAvY29tcG9uZW50cy9Qcm9qZWN0L1Byb2plY3RGb3JtLnZ1ZSIpLE4/TihlLG8pOnZvaWQgMH07Y29uc3QgRD1PYmplY3QuYXNzaWduKFMse19fbmFtZToiUHJvamVjdEZvcm0ifSksaz10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9qZWN0SXRlbSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3Byb2plY3Q6e319LGVtaXRzOlsiZWRpdCIsImRlbGV0ZSJdLHNldHVwKGUse2VtaXQ6b30pe2NvbnN0IGE9ZSxsPW8sbj1bW3tsYWJlbDoiVmlldyIsaWNvbjoiaS1sdWNpZGUtZXllIix0bzpgL3Byb2plY3RzLyR7YS5wcm9qZWN0LmlkfWB9LHtsYWJlbDoiRWRpdCIsaWNvbjoiaS1sdWNpZGUtcGVuY2lsIixvblNlbGVjdDooKT0+bCgiZWRpdCIsYS5wcm9qZWN0KX0se2xhYmVsOiJEZWxldGUiLGljb246ImktbHVjaWRlLXRyYXNoLTIiLGNvbG9yOiJlcnJvciIsb25TZWxlY3Q6KCk9PmwoImRlbGV0ZSIsYS5wcm9qZWN0KX1dXTtyZXR1cm4obyxhLGwsaSk9Pntjb25zdCB1PXMsZD12LGM9YixtPXI7YShgPGRpdiR7Qyh0Lm1lcmdlUHJvcHMoe2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJnLWVsZXZhdGVkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1kZWZhdWx0In0saSkpfT48ZGl2IGNsYXNzPSJmbGV4LTEgbWluLXctMCI+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiPmApLGEoeCh1LHt0bzpgL3Byb2plY3RzLyR7ZS5wcm9qZWN0LmlkfWAsY2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQgaG92ZXI6dW5kZXJsaW5lIHRydW5jYXRlIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChvLGEsbCxyKT0+e2lmKCFhKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSh0LnRvRGlzcGxheVN0cmluZyhlLnByb2plY3QubmFtZSksMSldO2EoYCR7dyhlLnByb2plY3QubmFtZSl9YCl9KSxfOjF9LGwpKSxhKHgoZCx7Y29sb3I6ImFjdGl2ZSI9PT1lLnByb2plY3Quc3RhdHVzPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0OnQud2l0aEN0eCgobyxhLGwscik9PntpZighYSlyZXR1cm5bdC5jcmVhdGVUZXh0Vk5vZGUodC50b0Rpc3BsYXlTdHJpbmcoZS5wcm9qZWN0LnN0YXR1cyksMSldO2EoYCR7dyhlLnByb2plY3Quc3RhdHVzKX1gKX0pLF86MX0sbCkpLGEoIjwvZGl2PiIpLGUucHJvamVjdC5kZXNjcmlwdGlvbj9hKGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIG10LTAuNSB0cnVuY2F0ZSI+JHt3KGUucHJvamVjdC5kZXNjcmlwdGlvbil9PC9wPmApOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCI8L2Rpdj4iKSxhKHgoYyx7aXRlbXM6bn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLG8sYSxsKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKG0se2ljb246ImktbHVjaWRlLWVsbGlwc2lzLXZlcnRpY2FsIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InNtIn0pXTtvKHgobSx7aWNvbjoiaS1sdWNpZGUtZWxsaXBzaXMtdmVydGljYWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToic20ifSxudWxsLGEsbCkpfSksXzoxfSxsKSksYSgiPC9kaXY+Iil9fX0pLFU9ay5zZXR1cDtrLnNldHVwPShlLG8pPT57Y29uc3QgYT10LnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9qZWN0L2FwcC9jb21wb25lbnRzL1Byb2plY3QvUHJvamVjdEl0ZW0udnVlIiksVT9VKGUsbyk6dm9pZCAwfTtjb25zdCBSPU9iamVjdC5hc3NpZ24oayx7X19uYW1lOiJQcm9qZWN0SXRlbSJ9KSxCPXQuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlByb2plY3RMaXN0IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7cHJvamVjdHM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbz10O3JldHVybih0LGEsbCxyKT0+e2NvbnN0IHM9aixpPW47YShgPGRpdiR7QyhyKX0+YCksZS5sb2FkaW5nPyhhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksXygzLGU9PnthKHgocyx7a2V5OmUsY2xhc3M6ImgtMTYgcm91bmRlZC1sZyJ9LG51bGwsbCkpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSk6MD09PWUucHJvamVjdHMubGVuZ3RoPyhhKCc8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBweS0xMiB0ZXh0LW11dGVkIj4nKSxhKHgoaSx7bmFtZToiaS1sdWNpZGUtZm9sZGVyLWthbmJhbiIsY2xhc3M6InNpemUtMTAgbXgtYXV0byBtYi0zIG9wYWNpdHktNDAifSxudWxsLGwpKSxhKCI8cD5ObyBwcm9qZWN0cyB5ZXQ8L3A+PC9kaXY+IikpOihhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksXyhlLnByb2plY3RzLGU9PnthKHgoUix7a2V5OmUuaWQscHJvamVjdDplLG9uRWRpdDplPT5vKCJlZGl0IixlKSxvbkRlbGV0ZTplPT5vKCJkZWxldGUiLGUpfSxudWxsLGwpKX0pLGEoIlx4M2MhLS1dLS1ceDNlPC9kaXY+IikpLGEoIjwvZGl2PiIpfX19KSxFPUIuc2V0dXA7Qi5zZXR1cD0oZSxvKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvamVjdC9hcHAvY29tcG9uZW50cy9Qcm9qZWN0L1Byb2plY3RMaXN0LnZ1ZSIpLEU/RShlLG8pOnZvaWQgMH07Y29uc3QgST1PYmplY3QuYXNzaWduKEIse19fbmFtZToiUHJvamVjdExpc3QifSksTD1TeW1ib2woInByb2plY3RzIikscT10LmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbmRleCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobil7byh7dGl0bGU6IlByb2plY3RzIn0pO2NvbnN0IHM9dSgpLGQ9YSgpLGM9dC5yZWYoITEpLG09dC5yZWYoITEpLHA9dC5yZWYobnVsbCkse2RhdGE6ZixzdGF0dXM6aixlcnJvcjp2LHJlZnJlc2g6Yn09bCgicHJvamVjdHMiLCgpPT5zLmZldGNoUHJvamVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTtoKHYpO2NvbnN0IEM9dC5jb21wdXRlZCgoKT0+InBlbmRpbmciPT09ai52YWx1ZSk7ZnVuY3Rpb24gb3BlbkNyZWF0ZSgpe3AudmFsdWU9bnVsbCxtLnZhbHVlPSEwfWZ1bmN0aW9uIG9wZW5FZGl0KGUpe3AudmFsdWU9ZSxtLnZhbHVlPSEwfWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChlKXtjLnZhbHVlPSEwO3RyeXtjb25zdCB0PSEhcC52YWx1ZTtwLnZhbHVlP2F3YWl0IHMudXBkYXRlUHJvamVjdChwLnZhbHVlLmlkLGUpOmF3YWl0IHMuY3JlYXRlUHJvamVjdChlKSxhd2FpdCBiKCksbS52YWx1ZT0hMSxkLmFkZCh7dGl0bGU6dD8iUHJvamVjdCB1cGRhdGVkIjoiUHJvamVjdCBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCB0PWU7ZC5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2MudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVByb2plY3QoZSl7YXdhaXQgcy5kZWxldGVQcm9qZWN0KGUpLGF3YWl0IGIoKX1hc3luYyBmdW5jdGlvbiBoYW5kbGVEZWxldGUoZSl7dHJ5e2F3YWl0IGRlbGV0ZVByb2plY3QoZS5pZCksZC5hZGQoe3RpdGxlOiJQcm9qZWN0IGRlbGV0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtkLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1yZXR1cm4gdC5wcm92aWRlKEwse3Byb2plY3RzOmYsZmV0Y2hQcm9qZWN0czphc3luYyBmdW5jdGlvbigpe2F3YWl0IGIoKX0sY3JlYXRlUHJvamVjdDphc3luYyBmdW5jdGlvbihlKXtyZXR1cm4gcy5jcmVhdGVQcm9qZWN0KGUpfSx1cGRhdGVQcm9qZWN0OmFzeW5jIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMudXBkYXRlUHJvamVjdChlLHQpfSxkZWxldGVQcm9qZWN0OmRlbGV0ZVByb2plY3R9KSwobyxhLGwsbik9Pntjb25zdCBzPWUsdT1yLGQ9aTthKCJceDNjIS0tWy0tXHgzZSIpLGEoeChzLHtpZDoicHJvamVjdHMifSx7aGVhZGVyOnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShWLHt0aXRsZToiUHJvamVjdHMifSx7cmlnaHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVWTm9kZSh1LHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2plY3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksXzoxfSldO28oeChWLHt0aXRsZToiUHJvamVjdHMifSx7cmlnaHQ6dC53aXRoQ3R4KChlLG8sYSxsKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKHUse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvamVjdCIsb25DbGljazplPT5vcGVuQ3JlYXRlKCl9LG51bGwsOCxbIm9uQ2xpY2siXSldO28oeCh1LHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2plY3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLGEsbCkpfSksXzoxfSxhLGwpKX0pLGJvZHk6dC53aXRoQ3R4KChlLG8sYSxsKT0+e2lmKCFvKXJldHVyblt0LmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00In0sW3QuY3JlYXRlVk5vZGUoSSx7cHJvamVjdHM6dC51bnJlZihmKSxsb2FkaW5nOnQudW5yZWYoQyksb25FZGl0Om9wZW5FZGl0LG9uRGVsZXRlOmhhbmRsZURlbGV0ZX0sbnVsbCw4LFsicHJvamVjdHMiLCJsb2FkaW5nIl0pXSldO28oYDxkaXYgY2xhc3M9Im1heC13LTN4bCBteC1hdXRvIHAtNCIke2x9PmApLG8oeChJLHtwcm9qZWN0czp0LnVucmVmKGYpLGxvYWRpbmc6dC51bnJlZihDKSxvbkVkaXQ6b3BlbkVkaXQsb25EZWxldGU6aGFuZGxlRGVsZXRlfSxudWxsLGEsbCkpLG8oIjwvZGl2PiIpfSksXzoxfSxsKSksYSh4KGQse29wZW46dC51bnJlZihtKSwib25VcGRhdGU6b3BlbiI6ZT0+dC5pc1JlZihtKT9tLnZhbHVlPWU6bnVsbCx0aXRsZTp0LnVucmVmKHApPyJFZGl0IHByb2plY3QiOiJOZXcgcHJvamVjdCJ9LHtib2R5OnQud2l0aEN0eCgoZSxvLGEsbCk9PntpZighbylyZXR1cm5bdC5jcmVhdGVWTm9kZShELHsiaW5pdGlhbC12YWx1ZXMiOnQudW5yZWYocCk/ey4uLnQudW5yZWYocCksZGVzY3JpcHRpb246dC51bnJlZihwKS5kZXNjcmlwdGlvbj8/dm9pZCAwfTp2b2lkIDAsbG9hZGluZzp0LnVucmVmKGMpLG9uU3VibWl0OmhhbmRsZVN1Ym1pdCxvbkNhbmNlbDplPT5tLnZhbHVlPSExfSxudWxsLDgsWyJpbml0aWFsLXZhbHVlcyIsImxvYWRpbmciLCJvbkNhbmNlbCJdKV07byh4KEQseyJpbml0aWFsLXZhbHVlcyI6dC51bnJlZihwKT97Li4udC51bnJlZihwKSxkZXNjcmlwdGlvbjp0LnVucmVmKHApLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOnQudW5yZWYoYyksb25TdWJtaXQ6aGFuZGxlU3VibWl0LG9uQ2FuY2VsOmU9Pm0udmFsdWU9ITF9LG51bGwsYSxsKSl9KSxfOjF9LGwpKSxhKCJceDNjIS0tXS0tXHgzZSIpfX19KSxGPXEuc2V0dXA7cS5zZXR1cD0oZSxvKT0+e2NvbnN0IGE9dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvamVjdC9hcHAvcGFnZXMvcHJvamVjdHMvaW5kZXgudnVlIiksRj9GKGUsbyk6dm9pZCAwfTtleHBvcnR7cSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgtQzJRTjhnekUubWpzLm1hcAo=", "chunks/build/index-C9g0NVk3.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7diBhcyBhLGggYXMgbCxhIGFzIHQsaSBhcyByLGFmIGFzIHMsYW4gYXMgbixfIGFzIG8seSBhcyB1fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBpfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBkfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHtfIGFzIG19ZnJvbSIuL1NlcGFyYXRvci1Ed2NSOVBNMS5tanMiO2ltcG9ydHtfIGFzIGZ9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e3cgYXMgY31mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7byBhcyBwLGYgYXMgYn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vXy9zaGFyZWQuZXNtLWJ1bmRsZXIubWpzIjtpbXBvcnQiLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydCIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2NvbnN0IHY9YS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiaW5kZXgiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHYpe2NvbnN0IGc9bCgpLHg9dSgpLF89dCgpLHtkYXRhOlYscmVmcmVzaDp3LGVycm9yOnl9PXIoImFjdGl2ZS1vcmciLCgpPT54LmZldGNoT3JnYW5pemF0aW9uKCkpO2MoeSk7Y29uc3QgQz1hLmNvbXB1dGVkKCgpPT5zKGcuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6bWFuYWdlIikpLGg9YS5yZWYoVi52YWx1ZT8ubmFtZT8/IiIpO24oVixoLHtkaXJlY3Rpb246Imx0ciIsdHJhbnNmb3JtOntsdHI6ZT0+ZT8ubmFtZT8/IiJ9fSk7Y29uc3Qgaj1hLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gc2F2ZSgpe2oudmFsdWU9ITA7dHJ5e2F3YWl0IHgudXBkYXRlT3JnYW5pemF0aW9uKHtuYW1lOmgudmFsdWV9KSxhd2FpdCB3KCksXy5hZGQoe3RpdGxlOiJPcmdhbml6YXRpb24gdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goZSl7Xy5hZGQoe3RpdGxlOiJVcGRhdGUgZmFpbGVkIixkZXNjcmlwdGlvbjplPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtqLnZhbHVlPSExfX1yZXR1cm4obCx0LHIscyk9Pntjb25zdCBuPWUsdT1vLGM9aSx2PWQsZz1tLHg9Zjt0KGA8ZGl2JHtwKHMpfT5gKSx0KGIobix7dGl0bGU6IkdlbmVyYWwiLGRlc2NyaXB0aW9uOiJZb3VyIG9yZ2FuaXphdGlvbiBkZXRhaWxzLiIsdmFyaWFudDoibmFrZWQiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczoibWItNCJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoZSxsLHQscik9PntpZighbClyZXR1cm5bYS51bnJlZihDKSYmIWEudW5yZWYoVik/LmlzX3N5c3RlbT8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKHUse2tleTowLGxhYmVsOiJTYXZlIGNoYW5nZXMiLGxvYWRpbmc6YS51bnJlZihqKSxjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpzYXZlfSxudWxsLDgsWyJsb2FkaW5nIl0pKTphLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO2EudW5yZWYoQykmJiFhLnVucmVmKFYpPy5pc19zeXN0ZW0/bChiKHUse2xhYmVsOiJTYXZlIGNoYW5nZXMiLGxvYWRpbmc6YS51bnJlZihqKSxjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpzYXZlfSxudWxsLHQscikpOmwoIlx4M2MhLS0tLVx4M2UiKX0pLF86MX0scikpLHQoYihuLHt2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDphLndpdGhDdHgoKGUsbCx0LHIpPT57aWYoIWwpcmV0dXJuW2EuY3JlYXRlVk5vZGUoYyx7bGFiZWw6Ik5hbWUiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDphLndpdGhDdHgoKCk9PlthLmNyZWF0ZVZOb2RlKHYse21vZGVsVmFsdWU6YS51bnJlZihoKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihoKT9oLnZhbHVlPWU6bnVsbCxkaXNhYmxlZDohYS51bnJlZihDKXx8YS51bnJlZihWKT8uaXNfc3lzdGVtfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsImRpc2FibGVkIl0pXSksXzoxfSksYS5jcmVhdGVWTm9kZShnKSxhLmNyZWF0ZVZOb2RlKGMse2xhYmVsOiJTbHVnIixkZXNjcmlwdGlvbjoiVXNlZCBpbiBVUkxzLiBSZWFkLW9ubHkuIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5jcmVhdGVWTm9kZSh2LHsibW9kZWwtdmFsdWUiOmEudW5yZWYoVik/LnNsdWcsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXSksXzoxfSksYS5jcmVhdGVWTm9kZShnKSxhLmNyZWF0ZVZOb2RlKGMse2xhYmVsOiJNZW1iZXJzIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5jcmVhdGVWTm9kZSh4LHtsYWJlbDpgJHthLnVucmVmKFYpPy5tZW1iZXJDb3VudD8/MH1gLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUifSxudWxsLDgsWyJsYWJlbCJdKV0pLF86MX0pXTtsKGIoYyx7bGFiZWw6Ik5hbWUiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDphLndpdGhDdHgoKGUsbCx0LHIpPT57aWYoIWwpcmV0dXJuW2EuY3JlYXRlVk5vZGUodix7bW9kZWxWYWx1ZTphLnVucmVmKGgpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5hLmlzUmVmKGgpP2gudmFsdWU9ZTpudWxsLGRpc2FibGVkOiFhLnVucmVmKEMpfHxhLnVucmVmKFYpPy5pc19zeXN0ZW19LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldO2woYih2LHttb2RlbFZhbHVlOmEudW5yZWYoaCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYoaCk/aC52YWx1ZT1lOm51bGwsZGlzYWJsZWQ6IWEudW5yZWYoQyl8fGEudW5yZWYoVik/LmlzX3N5c3RlbX0sbnVsbCx0LHIpKX0pLF86MX0sdCxyKSksbChiKGcsbnVsbCxudWxsLHQscikpLGwoYihjLHtsYWJlbDoiU2x1ZyIsZGVzY3JpcHRpb246IlVzZWQgaW4gVVJMcy4gUmVhZC1vbmx5LiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoZSxsLHQscik9PntpZighbClyZXR1cm5bYS5jcmVhdGVWTm9kZSh2LHsibW9kZWwtdmFsdWUiOmEudW5yZWYoVik/LnNsdWcsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXTtsKGIodix7Im1vZGVsLXZhbHVlIjphLnVucmVmKFYpPy5zbHVnLGRpc2FibGVkOiIifSxudWxsLHQscikpfSksXzoxfSx0LHIpKSxsKGIoZyxudWxsLG51bGwsdCxyKSksbChiKGMse2xhYmVsOiJNZW1iZXJzIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLGwsdCxyKT0+e2lmKCFsKXJldHVyblthLmNyZWF0ZVZOb2RlKHgse2xhYmVsOmAke2EudW5yZWYoVik/Lm1lbWJlckNvdW50Pz8wfWAsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSJ9LG51bGwsOCxbImxhYmVsIl0pXTtsKGIoeCx7bGFiZWw6YCR7YS51bnJlZihWKT8ubWVtYmVyQ291bnQ/PzB9YCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0sbnVsbCx0LHIpKX0pLF86MX0sdCxyKSl9KSxfOjF9LHIpKSx0KCI8L2Rpdj4iKX19fSksZz12LnNldHVwO3Yuc2V0dXA9KGUsbCk9Pntjb25zdCB0PWEudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi9pbmRleC52dWUiKSxnP2coZSxsKTp2b2lkIDB9O2V4cG9ydHt2IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC1DOWcwTlZrMy5tanMubWFwCg==", "chunks/build/index-CyQmH4st.mjs": "aW1wb3J0e3YgYXMgZX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e299ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgcj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbmRleCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXA6ZT0+KGUscixzLHQpPT57cihgPGRpdiR7byh0KX0+PC9kaXY+YCl9fSkscz1yLnNldHVwO3Iuc2V0dXA9KG8scik9Pntjb25zdCB0PWUudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgicGFnZXMvaW5kZXgudnVlIikscz9zKG8scik6dm9pZCAwfTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgtQ3lRbUg0c3QubWpzLm1hcAo=", "chunks/build/index-etqsKZ-m.mjs": "aW1wb3J0e3YgYXMgZX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e299ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3Qgcj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJpbmRleCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXA6ZT0+KGUscixzLHQpPT57cihgPGRpdiR7byh0KX0+PC9kaXY+YCl9fSkscz1yLnNldHVwO3Iuc2V0dXA9KG8scik9Pntjb25zdCB0PWUudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL2luZGV4LnZ1ZSIpLHM/cyhvLHIpOnZvaWQgMH07ZXhwb3J0e3IgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LWV0cXNLWi1tLm1qcy5tYXAK", "chunks/build/index-mH_0pvGP.mjs": "Y29uc3QgdD1uZXcgVGV4dERlY29kZXIsdG9VVEY4U3RyaW5nPShlLGk9MCxuPWUubGVuZ3RoKT0+dC5kZWNvZGUoZS5zbGljZShpLG4pKSx0b0hleFN0cmluZz0odCxlPTAsaT10Lmxlbmd0aCk9PnQuc2xpY2UoZSxpKS5yZWR1Y2UoKHQsZSk9PnQrKCIwIitlLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLCIiKSxyZWFkSW50MTZMRT0odCxlPTApPT57Y29uc3QgaT10W2VdKzI1Nip0W2UrMV07cmV0dXJuIGl8MTMxMDcwKigzMjc2OCZpKX0scmVhZFVJbnQxNkJFPSh0LGU9MCk9PjI1Nip0W2VdK3RbZSsxXSxyZWFkVUludDE2TEU9KHQsZT0wKT0+dFtlXSsyNTYqdFtlKzFdLHJlYWRVSW50MjRMRT0odCxlPTApPT50W2VdKzI1Nip0W2UrMV0rNjU1MzYqdFtlKzJdLHJlYWRJbnQzMkxFPSh0LGU9MCk9PnRbZV0rMjU2KnRbZSsxXSs2NTUzNip0W2UrMl0rKHRbZSszXTw8MjQpLHJlYWRVSW50MzJCRT0odCxlPTApPT50W2VdKjIqKjI0KzY1NTM2KnRbZSsxXSsyNTYqdFtlKzJdK3RbZSszXSxyZWFkVUludDMyTEU9KHQsZT0wKT0+dFtlXSsyNTYqdFtlKzFdKzY1NTM2KnRbZSsyXSt0W2UrM10qMioqMjQsZT17cmVhZFVJbnQxNkJFOnJlYWRVSW50MTZCRSxyZWFkVUludDE2TEU6cmVhZFVJbnQxNkxFLHJlYWRVSW50MzJCRTpyZWFkVUludDMyQkUscmVhZFVJbnQzMkxFOnJlYWRVSW50MzJMRX07ZnVuY3Rpb24gcmVhZFVJbnQodCxpLG4scil7bj1ufHwwO3JldHVybiBlWyJyZWFkVUludCIraSsocj8iQkUiOiJMRSIpXSh0LG4pfWNvbnN0IGk9e3ZhbGlkYXRlOnQ9PiJCTSI9PT10b1VURjhTdHJpbmcodCwwLDIpLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpNYXRoLmFicyhyZWFkSW50MzJMRSh0LDIyKSksd2lkdGg6cmVhZFVJbnQzMkxFKHQsMTgpfSl9O2Z1bmN0aW9uIGdldFNpemVGcm9tT2Zmc2V0KHQsZSl7Y29uc3QgaT10W2VdO3JldHVybiAwPT09aT8yNTY6aX1mdW5jdGlvbiBnZXRJbWFnZVNpemUkMSh0LGUpe2NvbnN0IGk9NisxNiplO3JldHVybntoZWlnaHQ6Z2V0U2l6ZUZyb21PZmZzZXQodCxpKzEpLHdpZHRoOmdldFNpemVGcm9tT2Zmc2V0KHQsaSl9fWNvbnN0IG49e3ZhbGlkYXRlKHQpe2NvbnN0IGU9cmVhZFVJbnQxNkxFKHQsMCksaT1yZWFkVUludDE2TEUodCw0KTtpZigwIT09ZXx8MD09PWkpcmV0dXJuITE7cmV0dXJuIDE9PT1yZWFkVUludDE2TEUodCwyKX0sY2FsY3VsYXRlKHQpe2NvbnN0IGU9cmVhZFVJbnQxNkxFKHQsNCksaT1nZXRJbWFnZVNpemUkMSh0LDApO2lmKDE9PT1lKXJldHVybiBpO2NvbnN0IG49W2ldO2ZvcihsZXQgaT0xO2k8ZTtpKz0xKW4ucHVzaChnZXRJbWFnZVNpemUkMSh0LGkpKTtyZXR1cm57aGVpZ2h0OmkuaGVpZ2h0LGltYWdlczpuLHdpZHRoOmkud2lkdGh9fX0scj17dmFsaWRhdGUodCl7Y29uc3QgZT1yZWFkVUludDE2TEUodCwwKSxpPXJlYWRVSW50MTZMRSh0LDQpO2lmKDAhPT1lfHwwPT09aSlyZXR1cm4hMTtyZXR1cm4gMj09PXJlYWRVSW50MTZMRSh0LDIpfSxjYWxjdWxhdGU6dD0+bi5jYWxjdWxhdGUodCl9LG89e3ZhbGlkYXRlOnQ9PjU0MjMyNzg3Nj09PXJlYWRVSW50MzJMRSh0LDApLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpyZWFkVUludDMyTEUodCwxMiksd2lkdGg6cmVhZFVJbnQzMkxFKHQsMTYpfSl9LGM9L15HSUY4Wzc5XWEvLGg9e3ZhbGlkYXRlOnQ9PmMudGVzdCh0b1VURjhTdHJpbmcodCwwLDYpKSxjYWxjdWxhdGU6dD0+KHtoZWlnaHQ6cmVhZFVJbnQxNkxFKHQsOCksd2lkdGg6cmVhZFVJbnQxNkxFKHQsNil9KX0sYT17dmFsaWRhdGU6dD0+e2NvbnN0IGU9ZmluZEJveCQxKHQsImZ0eXAiKTtpZighZSlyZXR1cm4hMTtjb25zdCBpPXRvVVRGOFN0cmluZyh0LGUub2Zmc2V0KzgsZS5vZmZzZXQrMTIpO3JldHVyblsiaGVpYyIsImhlaXgiLCJoZXZjIiwiaGV2eCIsIm1pZjEiLCJtc2YxIl0uaW5jbHVkZXMoaSl9LGNhbGN1bGF0ZTp0PT57Y29uc3QgZT1maW5kQm94JDEodCwibWV0YSIpO2lmKCFlKXRocm93IG5ldyBUeXBlRXJyb3IoImhlaWM6IG1ldGEgYm94IG5vdCBmb3VuZCIpO2NvbnN0IGk9ZmluZEJveCQxKHQsImlwcnAiLGUub2Zmc2V0KzEyLGUub2Zmc2V0K2Uuc2l6ZSk7aWYoIWkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaGVpYzogaXBycCBib3ggbm90IGZvdW5kIik7Y29uc3Qgbj1maW5kQm94JDEodCwiaXBjbyIsaS5vZmZzZXQrOCxpLm9mZnNldCtpLnNpemUpO2lmKCFuKXRocm93IG5ldyBUeXBlRXJyb3IoImhlaWM6IGlwY28gYm94IG5vdCBmb3VuZCIpO2NvbnN0IHI9ZnVuY3Rpb24odCxlLGk9MCxuPXQubGVuZ3RoKXtsZXQgcj1pO2NvbnN0IG89W107Zm9yKDtyPG47KXtjb25zdCBpPXJlYWRVSW50MzJCRSh0LHIpO2lmKHRvVVRGOFN0cmluZyh0LHIrNCxyKzgpPT09ZSYmby5wdXNoKHtvZmZzZXQ6cixzaXplOml9KSxpPD0wfHxyK2k+bilicmVhaztyKz1pfXJldHVybiBvfSh0LCJpc3BlIixuLm9mZnNldCs4LG4ub2Zmc2V0K24uc2l6ZSkubWFwKGU9Pih7d2lkdGg6cmVhZFVJbnQzMkJFKHQsZS5vZmZzZXQrMTIpLGhlaWdodDpyZWFkVUludDMyQkUodCxlLm9mZnNldCsxNil9KSk7aWYoMD09PXIubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoImhlaWM6IGlzcGUgYm94IG5vdCBmb3VuZCIpO2xldCBvPXJbMF07Zm9yKGxldCB0PTE7dDxyLmxlbmd0aDt0Kyspe2NvbnN0IGU9clt0XTtlLndpZHRoKmUuaGVpZ2h0Pm8ud2lkdGgqby5oZWlnaHQmJihvPWUpfXJldHVybiBvfX07ZnVuY3Rpb24gZmluZEJveCQxKHQsZSxpPTAsbj10Lmxlbmd0aCl7bGV0IHI9aTtmb3IoO3I8bjspe2NvbnN0IGk9cmVhZFVJbnQzMkJFKHQscik7aWYodG9VVEY4U3RyaW5nKHQscis0LHIrOCk9PT1lKXJldHVybntvZmZzZXQ6cixzaXplOml9O2lmKGk8PTB8fHIraT5uKWJyZWFrO3IrPWl9fWNvbnN0IGY9e0lDT046MzIsIklDTiMiOjMyLCJpY20jIjoxNixpY200OjE2LGljbTg6MTYsImljcyMiOjE2LGljczQ6MTYsaWNzODoxNixpczMyOjE2LHM4bWs6MTYsaWNwNDoxNixpY2w0OjMyLGljbDg6MzIsaWwzMjozMixsOG1rOjMyLGljcDU6MzIsaWMxMTozMixpY2g0OjQ4LGljaDg6NDgsaWgzMjo0OCxoOG1rOjQ4LGljcDY6NjQsaWMxMjozMixpdDMyOjEyOCx0OG1rOjEyOCxpYzA3OjEyOCxpYzA4OjI1NixpYzEzOjI1NixpYzA5OjUxMixpYzE0OjUxMixpYzEwOjEwMjR9O2Z1bmN0aW9uIHJlYWRJbWFnZUhlYWRlcih0LGUpe2NvbnN0IGk9ZSs0O3JldHVyblt0b1VURjhTdHJpbmcodCxlLGkpLHJlYWRVSW50MzJCRSh0LGkpXX1mdW5jdGlvbiBnZXRJbWFnZVNpemUodCl7Y29uc3QgZT1mW3RdO3JldHVybnt3aWR0aDplLGhlaWdodDplLHR5cGU6dH19Y29uc3Qgcz17dmFsaWRhdGU6dD0+ImljbnMiPT09dG9VVEY4U3RyaW5nKHQsMCw0KSxjYWxjdWxhdGUodCl7Y29uc3QgZT10Lmxlbmd0aCxpPXJlYWRVSW50MzJCRSh0LDQpO2xldCBuPTgscj1yZWFkSW1hZ2VIZWFkZXIodCxuKSxvPWdldEltYWdlU2l6ZShyWzBdKTtpZihuKz1yWzFdLG49PT1pKXJldHVybiBvO2NvbnN0IGM9e2hlaWdodDpvLmhlaWdodCxpbWFnZXM6W29dLHdpZHRoOm8ud2lkdGh9O2Zvcig7bjxpJiZuPGU7KXI9cmVhZEltYWdlSGVhZGVyKHQsbiksbz1nZXRJbWFnZVNpemUoclswXSksbis9clsxXSxjLmltYWdlcy5wdXNoKG8pO3JldHVybiBjfX0sZD17dmFsaWRhdGU6dD0+ImZmNGZmZjUxIj09PXRvSGV4U3RyaW5nKHQsMCw0KSxjYWxjdWxhdGU6dD0+KHtoZWlnaHQ6cmVhZFVJbnQzMkJFKHQsMTIpLHdpZHRoOnJlYWRVSW50MzJCRSh0LDgpfSl9LGw9IjY2NzQ3OTcwIix1PSI2YTcwMzI2OCIsZz0iNmE1MDIwMjAiLHc9IjcyNzI2NTcxIixwYXJzZUlIRFI9dD0+KHtoZWlnaHQ6cmVhZFVJbnQzMkJFKHQsNCksd2lkdGg6cmVhZFVJbnQzMkJFKHQsOCl9KSxwPXt2YWxpZGF0ZSh0KXtjb25zdCBlPXRvSGV4U3RyaW5nKHQsNCw4KSxpPXJlYWRVSW50MzJCRSh0LDApO2lmKGUhPT1nfHxpPDEpcmV0dXJuITE7Y29uc3Qgbj1pKzQscj1yZWFkVUludDMyQkUodCxpKSxvPXQuc2xpY2UobixuK3IpO3JldHVybiB0b0hleFN0cmluZyhvLDAsNCk9PT1sfSxjYWxjdWxhdGUodCl7Y29uc3QgZT1yZWFkVUludDMyQkUodCwwKTtsZXQgaT1lKzQrcmVhZFVJbnQxNkJFKHQsZSsyKTtzd2l0Y2godG9IZXhTdHJpbmcodCxpLGkrNCkpe2Nhc2UgdzpyZXR1cm4gaT1pKzQrNCsodD0+e2NvbnN0IGU9dFswXTtsZXQgaT0xKzIqZTtyZXR1cm4gaT1pKzIrcmVhZFVJbnQxNkJFKHQsaSkqKDIrZSksaSsyK3JlYWRVSW50MTZCRSh0LGkpKigxNitlKX0pKHQuc2xpY2UoaSs0KSkscGFyc2VJSERSKHQuc2xpY2UoaSs4LGkrMjQpKTtjYXNlIHU6cmV0dXJuIHBhcnNlSUhEUih0LnNsaWNlKGkrOCxpKzI0KSk7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbnN1cHBvcnRlZCBoZWFkZXIgZm91bmQ6ICIrdG9VVEY4U3RyaW5nKHQsaSxpKzQpKX19fTtmdW5jdGlvbiBpc0VYSUYodCl7cmV0dXJuIjQ1Nzg2OTY2Ij09PXRvSGV4U3RyaW5nKHQsMiw2KX1mdW5jdGlvbiBleHRyYWN0U2l6ZSh0LGUpe3JldHVybntoZWlnaHQ6cmVhZFVJbnQxNkJFKHQsZSksd2lkdGg6cmVhZFVJbnQxNkJFKHQsZSsyKX19ZnVuY3Rpb24gdmFsaWRhdGVFeGlmQmxvY2sodCxlKXtjb25zdCBpPXQuc2xpY2UoMixlKSxuPXRvSGV4U3RyaW5nKGksNiw4KSxyPSI0ZDRkIj09PW47aWYocnx8IjQ5NDkiPT09bilyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBpPXJlYWRVSW50KHQsMTYsMTQsZSk7Zm9yKGxldCBuPTA7bjxpO24rKyl7Y29uc3QgaT0xNisxMipuLHI9aSsxMjtpZihpPnQubGVuZ3RoKXJldHVybjtjb25zdCBvPXQuc2xpY2UoaSxyKTtpZigyNzQ9PT1yZWFkVUludChvLDE2LDAsZSkpe2lmKDMhPT1yZWFkVUludChvLDE2LDIsZSkpcmV0dXJuO2lmKDEhPT1yZWFkVUludChvLDMyLDQsZSkpcmV0dXJuO3JldHVybiByZWFkVUludChvLDE2LDgsZSl9fX0oaSxyKX1mdW5jdGlvbiB2YWxpZGF0ZUlucHV0KHQsZSl7aWYoZT50Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDb3JydXB0IEpQRywgZXhjZWVkZWQgYnVmZmVyIGxpbWl0cyIpO2lmKDI1NSE9PXRbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBKUEcsIG1hcmtlciB0YWJsZSBjb3JydXB0ZWQiKX1jb25zdCBtPXt2YWxpZGF0ZTp0PT4iZmZkOCI9PT10b0hleFN0cmluZyh0LDAsMiksY2FsY3VsYXRlKHQpe2xldCBlLGk7Zm9yKHQ9dC5zbGljZSg0KTt0Lmxlbmd0aD4wOyl7Y29uc3Qgbj1yZWFkVUludDE2QkUodCwwKTtpZihpc0VYSUYodCkmJihlPXZhbGlkYXRlRXhpZkJsb2NrKHQsbikpLHZhbGlkYXRlSW5wdXQodCxuKSxpPXRbbisxXSwxOTI9PT1pfHwxOTM9PT1pfHwxOTQ9PT1pKXtjb25zdCBpPWV4dHJhY3RTaXplKHQsbis1KTtyZXR1cm4gZT97aGVpZ2h0OmkuaGVpZ2h0LG9yaWVudGF0aW9uOmUsd2lkdGg6aS53aWR0aH06aX10PXQuc2xpY2UobisyKX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIEpQRywgbm8gc2l6ZSBmb3VuZCIpfX0sST17dmFsaWRhdGU6dD0+IktUWCAxMSI9PT10b1VURjhTdHJpbmcodCwxLDcpLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpyZWFkVUludDMyTEUodCw0MCksd2lkdGg6cmVhZFVJbnQzMkxFKHQsMzYpfSl9LHY9IkNnQkkiLHg9e3ZhbGlkYXRlKHQpe2lmKCJQTkdcclxuGlxuIj09PXRvVVRGOFN0cmluZyh0LDEsOCkpe2xldCBlPXRvVVRGOFN0cmluZyh0LDEyLDE2KTtpZihlPT09diYmKGU9dG9VVEY4U3RyaW5nKHQsMjgsMzIpKSwiSUhEUiIhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgUE5HIik7cmV0dXJuITB9cmV0dXJuITF9LGNhbGN1bGF0ZTp0PT50b1VURjhTdHJpbmcodCwxMiwxNik9PT12P3toZWlnaHQ6cmVhZFVJbnQzMkJFKHQsMzYpLHdpZHRoOnJlYWRVSW50MzJCRSh0LDMyKX06e2hlaWdodDpyZWFkVUludDMyQkUodCwyMCksd2lkdGg6cmVhZFVJbnQzMkJFKHQsMTYpfX0sYj17UDE6InBibS9hc2NpaSIsUDI6InBnbS9hc2NpaSIsUDM6InBwbS9hc2NpaSIsUDQ6InBibSIsUDU6InBnbSIsUDY6InBwbSIsUDc6InBhbSIsUEY6InBmbSJ9LEU9e2RlZmF1bHQ6dD0+e2xldCBlPVtdO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGk9dC5zaGlmdCgpO2lmKCIjIiE9PWlbMF0pe2U9aS5zcGxpdCgiICIpO2JyZWFrfX1pZigyPT09ZS5sZW5ndGgpcmV0dXJue2hlaWdodDpOdW1iZXIucGFyc2VJbnQoZVsxXSwxMCksd2lkdGg6TnVtYmVyLnBhcnNlSW50KGVbMF0sMTApfTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIFBOTSIpfSxwYW06dD0+e2NvbnN0IGU9e307Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3QgaT10LnNoaWZ0KCk7aWYoaS5sZW5ndGg+MTZ8fChpLmNvZGVQb2ludEF0KDApfHwwKT4xMjgpY29udGludWU7Y29uc3RbbixyXT1pLnNwbGl0KCIgIik7aWYobiYmciYmKGVbbi50b0xvd2VyQ2FzZSgpXT1OdW1iZXIucGFyc2VJbnQociwxMCkpLGUuaGVpZ2h0JiZlLndpZHRoKWJyZWFrfWlmKGUuaGVpZ2h0JiZlLndpZHRoKXJldHVybntoZWlnaHQ6ZS5oZWlnaHQsd2lkdGg6ZS53aWR0aH07dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBQQU0iKX19LHk9e3ZhbGlkYXRlOnQ9PnRvVVRGOFN0cmluZyh0LDAsMilpbiBiLGNhbGN1bGF0ZSh0KXtjb25zdCBlPXRvVVRGOFN0cmluZyh0LDAsMiksaT1iW2VdLG49dG9VVEY4U3RyaW5nKHQsMykuc3BsaXQoL1tcblxyXSsvKTtyZXR1cm4oRVtpXXx8RS5kZWZhdWx0KShuKX19LFA9e3ZhbGlkYXRlOnQ9PiI4QlBTIj09PXRvVVRGOFN0cmluZyh0LDAsNCksY2FsY3VsYXRlOnQ9Pih7aGVpZ2h0OnJlYWRVSW50MzJCRSh0LDE0KSx3aWR0aDpyZWFkVUludDMyQkUodCwxOCl9KX0sVD0vPHN2Z1xzKFteIic+XXwiW14iXSoifCdbXiddKicpKj4vLHo9e2hlaWdodDovXHNoZWlnaHQ9KFsiJ10pKFteJV0rPylcMS8scm9vdDpULHZpZXdib3g6L1xzdmlld2JveD0oWyInXSkoLis/KVwxL2ksd2lkdGg6L1xzd2lkdGg9KFsiJ10pKFteJV0rPylcMS99LEI9Mi41NCxVPXtpbjo5NixjbTo5Ni9CLGVtOjE2LGV4OjgsbTo5Ni9CKjEwMCxtbTo5Ni9CLzEwLHBjOjk2LzcyLzEyLHB0Ojk2LzcyLHB4OjF9LGs9bmV3IFJlZ0V4cChgXihbMC05Ll0rKD86ZVxcZCspPykoJHtPYmplY3Qua2V5cyhVKS5qb2luKCJ8Iil9KT8kYCk7ZnVuY3Rpb24gcGFyc2VMZW5ndGgodCl7Y29uc3QgZT1rLmV4ZWModCk7aWYoZSlyZXR1cm4gTWF0aC5yb3VuZChOdW1iZXIoZVsxXSkqKFVbZVsyXV18fDEpKX1mdW5jdGlvbiBwYXJzZVZpZXdib3godCl7Y29uc3QgZT10LnNwbGl0KCIgIik7cmV0dXJue2hlaWdodDpwYXJzZUxlbmd0aChlWzNdKSx3aWR0aDpwYXJzZUxlbmd0aChlWzJdKX19Y29uc3QgUz17dmFsaWRhdGU6dD0+VC50ZXN0KHRvVVRGOFN0cmluZyh0LDAsMWUzKSksY2FsY3VsYXRlKHQpe2NvbnN0IGU9dG9VVEY4U3RyaW5nKHQpLm1hdGNoKHoucm9vdCk7aWYoZSl7Y29uc3QgdD1mdW5jdGlvbih0KXtjb25zdCBlPXQubWF0Y2goei53aWR0aCksaT10Lm1hdGNoKHouaGVpZ2h0KSxuPXQubWF0Y2goei52aWV3Ym94KTtyZXR1cm57aGVpZ2h0OmkmJnBhcnNlTGVuZ3RoKGlbMl0pLHZpZXdib3g6biYmcGFyc2VWaWV3Ym94KG5bMl0pLHdpZHRoOmUmJnBhcnNlTGVuZ3RoKGVbMl0pfX0oZVswXSk7aWYodC53aWR0aCYmdC5oZWlnaHQpcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybntoZWlnaHQ6dC5oZWlnaHQsd2lkdGg6dC53aWR0aH19KHQpO2lmKHQudmlld2JveClyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBpPWUud2lkdGgvZS5oZWlnaHQ7cmV0dXJuIHQud2lkdGg/e2hlaWdodDpNYXRoLmZsb29yKHQud2lkdGgvaSksd2lkdGg6dC53aWR0aH06dC5oZWlnaHQ/e2hlaWdodDp0LmhlaWdodCx3aWR0aDpNYXRoLmZsb29yKHQuaGVpZ2h0KmkpfTp7aGVpZ2h0OmUuaGVpZ2h0LHdpZHRoOmUud2lkdGh9fSh0LHQudmlld2JveCl9dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBTVkciKX19LE09e3ZhbGlkYXRlOnQ9PjA9PT1yZWFkVUludDE2TEUodCwwKSYmMD09PXJlYWRVSW50MTZMRSh0LDQpLGNhbGN1bGF0ZTp0PT4oe2hlaWdodDpyZWFkVUludDE2TEUodCwxNCksd2lkdGg6cmVhZFVJbnQxNkxFKHQsMTIpfSl9O2Z1bmN0aW9uIHJlYWRWYWx1ZSh0LGUpe2NvbnN0IGk9cmVhZFVJbnQodCwxNiw4LGUpO3JldHVybihyZWFkVUludCh0LDE2LDEwLGUpPDwxNikraX1mdW5jdGlvbiBuZXh0VGFnKHQpe2lmKHQubGVuZ3RoPjI0KXJldHVybiB0LnNsaWNlKDEyKX1jb25zdCAkPW5ldyBTZXQoWyI0OTQ5MmEwMCIsIjRkNGQwMDJhIl0pO2Z1bmN0aW9uIGZpbmRCb3godCxlLGk9MCxuPXQubGVuZ3RoKXtmb3IobGV0IHI9aTtyPG47KXtjb25zdCBpPXJlYWRVSW50MzJCRSh0LHIpO2lmKHRvVVRGOFN0cmluZyh0LHIrNCxyKzgpPT09ZSlyZXR1cm57b2Zmc2V0OnIsc2l6ZTppfTtpZihpPD0wfHxyK2k+bilicmVhaztyKz1pfXRocm93IG5ldyBFcnJvcihgJHtlfSBib3ggbm90IGZvdW5kYCl9Y29uc3QgTD17Ym1wOmksY3VyOnIsZGRzOm8sZ2lmOmgsaGVpYzphLGljbnM6cyxpY286bixqMmM6ZCxqcDI6cCxqcGc6bSxrdHg6SSxwbmc6eCxwbm06eSxwc2Q6UCxzdmc6Uyx0Z2E6TSx0aWZmOnt2YWxpZGF0ZTp0PT4kLmhhcyh0b0hleFN0cmluZyh0LDAsNCkpLGNhbGN1bGF0ZSh0KXtjb25zdCBlPSJCRSI9PT1mdW5jdGlvbih0KXtjb25zdCBlPXRvVVRGOFN0cmluZyh0LDAsMik7cmV0dXJuIklJIj09PWU/IkxFIjoiTU0iPT09ZT8iQkUiOnZvaWQgMH0odCksaT1mdW5jdGlvbih0LGUpe2NvbnN0IGk9cmVhZFVJbnQodCwzMiw0LGUpO2xldCBuPTEwMjQ7Y29uc3Qgcj10Lmxlbmd0aDtyZXR1cm4gaStuPnImJihuPXItaS0xMCksdC5zbGljZShpKzIsaSsyK24pfSh0LGUpLG49ZnVuY3Rpb24odCxlKXtjb25zdCBpPXt9O2xldCBuPXQ7Zm9yKDtuJiZuLmxlbmd0aD4wOyl7Y29uc3QgdD1yZWFkVUludChuLDE2LDAsZSkscj1yZWFkVUludChuLDE2LDIsZSksbz1yZWFkVUludChuLDMyLDQsZSk7aWYoMD09PXQpYnJlYWs7MSE9PW98fDMhPT1yJiY0IT09cnx8KGlbdF09cmVhZFZhbHVlKG4sZSkpLG49bmV4dFRhZyhuKX1yZXR1cm4gaX0oaSxlKSxyPW5bMjU2XSxvPW5bMjU3XTtpZighcnx8IW8pdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBUaWZmLiBNaXNzaW5nIHRhZ3MiKTtyZXR1cm57aGVpZ2h0Om8sd2lkdGg6cn19fSx3ZWJwOnt2YWxpZGF0ZSh0KXtjb25zdCBlPSJSSUZGIj09PXRvVVRGOFN0cmluZyh0LDAsNCksaT0iV0VCUCI9PT10b1VURjhTdHJpbmcodCw4LDEyKSxuPSJWUDgiPT09dG9VVEY4U3RyaW5nKHQsMTIsMTUpO3JldHVybiBlJiZpJiZufSxjYWxjdWxhdGUodCl7Y29uc3QgZT10b1VURjhTdHJpbmcodCwxMiwxNik7aWYodD10LnNsaWNlKDIwLDMwKSwiVlA4WCI9PT1lKXtjb25zdCBlPXRbMF07aWYoISgxOTImZSkmJiEoMSZlKSlyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJue2hlaWdodDoxK3JlYWRVSW50MjRMRSh0LDcpLHdpZHRoOjErcmVhZFVJbnQyNExFKHQsNCl9fSh0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIFdlYlAiKX1pZigiVlA4ICI9PT1lJiY0NyE9PXRbMF0pcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybntoZWlnaHQ6MTYzODMmcmVhZEludDE2TEUodCw4KSx3aWR0aDoxNjM4MyZyZWFkSW50MTZMRSh0LDYpfX0odCk7Y29uc3QgaT10b0hleFN0cmluZyh0LDMsNik7aWYoIlZQOEwiPT09ZSYmIjlkMDEyYSIhPT1pKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm57aGVpZ2h0OjErKCgxNSZ0WzRdKTw8MTB8dFszXTw8MnwoMTkyJnRbMl0pPj42KSx3aWR0aDoxKygoNjMmdFsyXSk8PDh8dFsxXSl9fSh0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIFdlYlAiKX19LGF2aWY6e3ZhbGlkYXRlOnQ9PiJhdmlmIj09PXRvVVRGOFN0cmluZyh0LDgsMTIpLGNhbGN1bGF0ZTp0PT57Y29uc3QgZT1maW5kQm94KHQsIm1ldGEiKSxpPWZpbmRCb3godCwiaXBycCIsZS5vZmZzZXQrMTIsZS5vZmZzZXQrZS5zaXplKSxuPWZpbmRCb3godCwiaXBjbyIsaS5vZmZzZXQrOCxpLm9mZnNldCtpLnNpemUpLHI9ZmluZEJveCh0LCJpc3BlIixuLm9mZnNldCs4LG4ub2Zmc2V0K24uc2l6ZSk7cmV0dXJue3dpZHRoOnJlYWRVSW50MzJCRSh0LHIub2Zmc2V0KzEyKSxoZWlnaHQ6cmVhZFVJbnQzMkJFKHQsci5vZmZzZXQrMTYpfX19fSxGPU9iamVjdC5rZXlzKEwpLE49ezU2OiJwc2QiLDY2OiJibXAiLDY4OiJkZHMiLDcxOiJnaWYiLDczOiJ0aWZmIiw3NzoidGlmZiIsODI6IndlYnAiLDEwNToiaWNucyIsMTM3OiJwbmciLDI1NToianBnIn07ZnVuY3Rpb24gaW1hZ2VNZXRhKHQpe2lmKCEodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoIklucHV0IHNob3VsZCBiZSBhIFVpbnQ4QXJyYXkiKTtjb25zdCBlPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dFswXTtpZihlIGluIE4pe2NvbnN0IGk9TltlXTtpZihpJiZMW2ldLnZhbGlkYXRlKHQpKXJldHVybiBpfXJldHVybiBGLmZpbmQoZT0+TFtlXS52YWxpZGF0ZSh0KSl9KHQpO2lmKHZvaWQgMCE9PWUmJmUgaW4gTCl7Y29uc3QgaT1MW2VdLmNhbGN1bGF0ZSh0KTtpZih2b2lkIDAhPT1pKXJldHVybiBpLnR5cGU9ZSxpfXRocm93IG5ldyBUeXBlRXJyb3IoYFVuc3VwcG9ydGVkIGZpbGUgdHlwZTogJHtlfWApfWV4cG9ydHtpbWFnZU1ldGF9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC1tSF8wcHZHUC5tanMubWFwCg==", "chunks/build/invoice-D6pBLxKL.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyBsfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHt2IGFzIG8sdSBhcyB0LGEgYXMgbixpIGFzIHIsXyBhcyBkfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyB1fWZyb20iLi9UYWJsZS0wVVJuQzhPSC5tanMiO2ltcG9ydHt1IGFzIGN9ZnJvbSIuL3VzZUJpbGxpbmdBcGktQ28tYlRTS1QubWpzIjtpbXBvcnR7dyBhcyBzfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIGksZiBhcyBtfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vaW5kZXgtQjFQT1RMbWEubWpzIjtjb25zdCBmPW8uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Imludm9pY2UiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKGYpe3Qoe3RpdGxlOiJJbnZvaWNlIn0pO2NvbnN0IHA9YygpLFY9bigpLHtkYXRhOnksZXJyb3I6aH09cigiYmlsbGluZy1zZXR0aW5ncyIsKCk9PnAuZmV0Y2hCaWxsaW5nU2V0dGluZ3MoKSx7ZGVmYXVsdDooKT0+KHtvcmdhbml6YXRpb25faWQ6IiIsY3VycmVuY3k6IlVTRCJ9KX0pO3MoaCk7Y29uc3R7ZGF0YTpfLGVycm9yOlV9PXIoImludm9pY2VzIiwoKT0+cC5mZXRjaEludm9pY2VzKCkse2RlZmF1bHQ6KCk9PltdfSk7cyhVKTtjb25zdCB4PW8ucmVhY3RpdmUoe2NvbXBhbnlfbmFtZToiIix0YXhfaWQ6IiIsYWRkcmVzczoiIixjaXR5OiIiLGNvdW50cnk6IlVTIixjdXJyZW5jeToiVVNEIn0pO28ud2F0Y2goeSxlPT57ZSYmKHguY29tcGFueV9uYW1lPWUuY29tcGFueV9uYW1lPz8iIix4LnRheF9pZD1lLnRheF9pZD8/IiIseC5hZGRyZXNzPWUuYWRkcmVzcz8/IiIseC5jaXR5PWUuY2l0eT8/IiIseC5jb3VudHJ5PWUuY291bnRyeT8/IlVTIix4LmN1cnJlbmN5PWUuY3VycmVuY3k/PyJVU0QiKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHY9by5yZWYoITEpO2FzeW5jIGZ1bmN0aW9uIHNhdmVTZXR0aW5ncygpe3YudmFsdWU9ITA7dHJ5e2F3YWl0IHAudXBkYXRlQmlsbGluZ1NldHRpbmdzKHtjb21wYW55X25hbWU6eC5jb21wYW55X25hbWV8fHZvaWQgMCx0YXhfaWQ6eC50YXhfaWR8fHZvaWQgMCxhZGRyZXNzOnguYWRkcmVzc3x8dm9pZCAwLGNpdHk6eC5jaXR5fHx2b2lkIDAsY291bnRyeTp4LmNvdW50cnl8fHZvaWQgMCxjdXJyZW5jeTp4LmN1cnJlbmN5fHx2b2lkIDB9KSxWLmFkZCh7dGl0bGU6IlNldHRpbmdzIHNhdmVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBsPWU7Vi5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246bD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3YudmFsdWU9ITF9fWNvbnN0IHc9W3thY2Nlc3NvcktleToibnVtYmVyIixoZWFkZXI6Ik51bWJlciJ9LHthY2Nlc3NvcktleToic3RhdHVzIixoZWFkZXI6IlN0YXR1cyJ9LHthY2Nlc3NvcktleToidG90YWwiLGhlYWRlcjoiVG90YWwiLGNlbGw6KHtyb3c6ZX0pPT5uZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIix7c3R5bGU6ImN1cnJlbmN5IixjdXJyZW5jeTplLm9yaWdpbmFsLmN1cnJlbmN5fSkuZm9ybWF0KGUub3JpZ2luYWwudG90YWwvMTAwKX0se2FjY2Vzc29yS2V5OiJjcmVhdGVkX2F0IixoZWFkZXI6IkRhdGUiLGNlbGw6KHtyb3c6ZX0pPT5uZXcgRGF0ZShlLm9yaWdpbmFsLmNyZWF0ZWRfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZygpfV07cmV0dXJuKHQsbixyLGMpPT57Y29uc3Qgcz1lLGY9bCxwPWEsVj1kLHk9dTtuKGA8ZGl2JHtpKG8ubWVyZ2VQcm9wcyh7Y2xhc3M6InNwYWNlLXktNiJ9LGMpKX0+YCksbihtKHMse3RpdGxlOiJJbnZvaWNlIEluZm9ybWF0aW9uIixkZXNjcmlwdGlvbjoiQ29tcGFueSBkZXRhaWxzIHRoYXQgYXBwZWFyIG9uIGludm9pY2VzLiIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLGwsYSx0KT0+e2lmKCFsKXJldHVybltvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMSBzbTpncmlkLWNvbHMtMiBnYXAtNCBtdC00In0sW28uY3JlYXRlVk5vZGUoZix7bGFiZWw6IkNvbXBhbnkgbmFtZSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmNvbXBhbnlfbmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jb21wYW55X25hbWU9ZSxwbGFjZWhvbGRlcjoiQWNtZSBJbmMuIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJUYXggSUQifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6by51bnJlZih4KS50YXhfaWQsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkudGF4X2lkPWUscGxhY2Vob2xkZXI6IjEyMy00NTYtNzg5IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJBZGRyZXNzIixjbGFzczoic206Y29sLXNwYW4tMiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmFkZHJlc3MsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuYWRkcmVzcz1lLHBsYWNlaG9sZGVyOiIxMjMgTWFpbiBTdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksby5jcmVhdGVWTm9kZShmLHtsYWJlbDoiQ2l0eSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmNpdHksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuY2l0eT1lLHBsYWNlaG9sZGVyOiJTYW4gRnJhbmNpc2NvIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJDb3VudHJ5In0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY291bnRyeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jb3VudHJ5PWUscGxhY2Vob2xkZXI6IlVTIixjbGFzczoidy1mdWxsIixtYXhsZW5ndGg6IjIifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLG8uY3JlYXRlVk5vZGUoZix7bGFiZWw6IkRlZmF1bHQgQ3VycmVuY3kifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jdXJyZW5jeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jdXJyZW5jeT1lLHBsYWNlaG9sZGVyOiJVU0QiLGNsYXNzOiJ3LWZ1bGwiLG1heGxlbmd0aDoiMyJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSldKSxvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibXQtNCBmbGV4IGp1c3RpZnktZW5kIn0sW28uY3JlYXRlVk5vZGUoVix7bGFiZWw6IlNhdmUiLGxvYWRpbmc6by51bnJlZih2KSxvbkNsaWNrOmU9PnNhdmVTZXR0aW5ncygpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKV0pXTtsKGA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIHNtOmdyaWQtY29scy0yIGdhcC00IG10LTQiJHt0fT5gKSxsKG0oZix7bGFiZWw6IkNvbXBhbnkgbmFtZSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY29tcGFueV9uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLmNvbXBhbnlfbmFtZT1lLHBsYWNlaG9sZGVyOiJBY21lIEluYy4iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jb21wYW55X25hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuY29tcGFueV9uYW1lPWUscGxhY2Vob2xkZXI6IkFjbWUgSW5jLiIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiVGF4IElEIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLGwsYSx0KT0+e2lmKCFsKXJldHVybltvLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6by51bnJlZih4KS50YXhfaWQsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkudGF4X2lkPWUscGxhY2Vob2xkZXI6IjEyMy00NTYtNzg5IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO2wobShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkudGF4X2lkLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLnRheF9pZD1lLHBsYWNlaG9sZGVyOiIxMjMtNDU2LTc4OSIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiQWRkcmVzcyIsY2xhc3M6InNtOmNvbC1zcGFuLTIifSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsbCxhLHQpPT57aWYoIWwpcmV0dXJuW28uY3JlYXRlVk5vZGUocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmFkZHJlc3MsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuYWRkcmVzcz1lLHBsYWNlaG9sZGVyOiIxMjMgTWFpbiBTdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTtsKG0ocCx7bW9kZWxWYWx1ZTpvLnVucmVmKHgpLmFkZHJlc3MsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuYWRkcmVzcz1lLHBsYWNlaG9sZGVyOiIxMjMgTWFpbiBTdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiQ2l0eSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY2l0eSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jaXR5PWUscGxhY2Vob2xkZXI6IlNhbiBGcmFuY2lzY28iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jaXR5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLmNpdHk9ZSxwbGFjZWhvbGRlcjoiU2FuIEZyYW5jaXNjbyIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiQ291bnRyeSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY291bnRyeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jb3VudHJ5PWUscGxhY2Vob2xkZXI6IlVTIixjbGFzczoidy1mdWxsIixtYXhsZW5ndGg6IjIifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jb3VudHJ5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLnVucmVmKHgpLmNvdW50cnk9ZSxwbGFjZWhvbGRlcjoiVVMiLGNsYXNzOiJ3LWZ1bGwiLG1heGxlbmd0aDoiMiJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwobShmLHtsYWJlbDoiRGVmYXVsdCBDdXJyZW5jeSJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSxsLGEsdCk9PntpZighbClyZXR1cm5bby5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOm8udW5yZWYoeCkuY3VycmVuY3ksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8udW5yZWYoeCkuY3VycmVuY3k9ZSxwbGFjZWhvbGRlcjoiVVNEIixjbGFzczoidy1mdWxsIixtYXhsZW5ndGg6IjMifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07bChtKHAse21vZGVsVmFsdWU6by51bnJlZih4KS5jdXJyZW5jeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by51bnJlZih4KS5jdXJyZW5jeT1lLHBsYWNlaG9sZGVyOiJVU0QiLGNsYXNzOiJ3LWZ1bGwiLG1heGxlbmd0aDoiMyJ9LG51bGwsYSx0KSl9KSxfOjF9LGEsdCkpLGwoYDwvZGl2PjxkaXYgY2xhc3M9Im10LTQgZmxleCBqdXN0aWZ5LWVuZCIke3R9PmApLGwobShWLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpvLnVucmVmKHYpLG9uQ2xpY2s6ZT0+c2F2ZVNldHRpbmdzKCl9LG51bGwsYSx0KSksbCgiPC9kaXY+Iil9KSxfOjF9LHIpKSxuKCc8ZGl2PjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0zIj48aDMgY2xhc3M9ImZvbnQtc2VtaWJvbGQiPiBJbnZvaWNlcyA8L2gzPjwvZGl2PicpLG4obSh5LHtkYXRhOm8udW5yZWYoXyksY29sdW1uczp3fSxudWxsLHIpKSwwPT09by51bnJlZihfKS5sZW5ndGg/bignPHAgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciBweS02Ij4gTm8gaW52b2ljZXMgeWV0LiA8L3A+Jyk6bigiXHgzYyEtLS0tXHgzZSIpLG4oIjwvZGl2PjwvZGl2PiIpfX19KSxwPWYuc2V0dXA7Zi5zZXR1cD0oZSxsKT0+e2NvbnN0IGE9by51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYmlsbGluZy9hcHAvcGFnZXMvb3JnYW5pemF0aW9uL2ludm9pY2UudnVlIikscD9wKGUsbCk6dm9pZCAwfTtleHBvcnR7ZiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW52b2ljZS1ENnBCTHhLTC5tanMubWFwCg==", "chunks/build/isValueEqualOrExist-DmPyn5bN.mjs": "aW1wb3J0e1UgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2FYIGFzIHN9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGlzVmFsdWVFcXVhbE9yRXhpc3QoaSxhKXtyZXR1cm4hcihpKSYmKEFycmF5LmlzQXJyYXkoaSk/aS5zb21lKHI9PnMocixhKSk6cyhpLGEpKX1leHBvcnR7aXNWYWx1ZUVxdWFsT3JFeGlzdCBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNWYWx1ZUVxdWFsT3JFeGlzdC1EbVB5bjViTi5tanMubWFwCg==", "chunks/build/login-DOQQ_dY9.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHt2IGFzIHQsdSBhcyBpLGEgYXMgbixfIGFzIG8sYiBhcyBhLGMgYXMgc31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e18gYXMgbH1mcm9tIi4vQWxlcnQtQ1ZCNVlYdWUubWpzIjtpbXBvcnR7ZiBhcyByfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IGQ9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiQXV0aExvZ2luQ2FyZCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAoaSl7Y29uc3QgZD1zKCksYz10LmNvbXB1dGVkKCgpPT5Cb29sZWFuKGQucHVibGljLmRlbW9Nb2RlKSksdT1uKCksZz10LnJlZihudWxsKTthc3luYyBmdW5jdGlvbiBzaWduSW5Bc0RlbW9BZ2VudChlKXtnLnZhbHVlPWU7dHJ5e2F3YWl0ICRmZXRjaCgiL2FwaS9hdXRoL2RlbW8tbG9naW4iLHttZXRob2Q6IlBPU1QiLGJvZHk6e2FnZW50OmV9LGNyZWRlbnRpYWxzOiJpbmNsdWRlIn0pLCh2b2lkIDApLmxvY2F0aW9uLmhyZWY9Ii9kYXNoYm9hcmQifWNhdGNoKGUpe2NvbnN0IHQ9ZTt1LmFkZCh7dGl0bGU6IkRlbW8gc2lnbi1pbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LmRhdGE/Lm1lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/P3Q/Lm1lc3NhZ2U/P2BTdGF0dXMgJHt0Py5zdGF0dXNDb2RlPz8idW5rbm93biJ9YCxjb2xvcjoiZXJyb3IifSksZy52YWx1ZT1udWxsfX1yZXR1cm4oaSxuLHMsZCk9Pntjb25zdCB1PWEsbT1sLHA9bztuKHIoZSx0Lm1lcmdlUHJvcHMoe2NsYXNzOiJ3LWZ1bGwgbWF4LXctbWQiLCJkYXRhLXRlc3RpZCI6ImxvZ2luLWNhcmQifSxkKSx7aGVhZGVyOnQud2l0aEN0eCgoZSxpLG4sbyk9PntpZighaSlyZXR1cm5bdC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InRleHQtY2VudGVyIHNwYWNlLXktMiJ9LFt0LmNyZWF0ZVZOb2RlKHUse25hbWU6ImktbHVjaWRlLWxvZy1pbiIsY2xhc3M6InNpemUtOCBteC1hdXRvIHRleHQtcHJpbWFyeSJ9KSx0LmNyZWF0ZVZOb2RlKCJoMSIse2NsYXNzOiJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIFNpZ24gaW4gIiksdC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFdlbGNvbWUgYmFjay4gQ2hvb3NlIGhvdyB5b3UnZCBsaWtlIHRvIHNpZ24gaW4uICIpXSldO2koYDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHNwYWNlLXktMiIke299PmApLGkocih1LHtuYW1lOiJpLWx1Y2lkZS1sb2ctaW4iLGNsYXNzOiJzaXplLTggbXgtYXV0byB0ZXh0LXByaW1hcnkifSxudWxsLG4sbykpLGkoYDxoMSBjbGFzcz0idGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIiR7b30+IFNpZ24gaW4gPC9oMT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7b30+IFdlbGNvbWUgYmFjay4gQ2hvb3NlIGhvdyB5b3UmIzM5O2QgbGlrZSB0byBzaWduIGluLiA8L3A+PC9kaXY+YCl9KSxkZWZhdWx0OnQud2l0aEN0eCgoZSxpLG4sbyk9PntpZighaSlyZXR1cm5bdC51bnJlZihjKT8odC5vcGVuQmxvY2soKSx0LmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoic3BhY2UteS0zIiwiZGF0YS10ZXN0aWQiOiJkZW1vLWJsb2NrIn0sW3QuY3JlYXRlVk5vZGUobSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InN1YnRsZSIsaWNvbjoiaS1sdWNpZGUtZmxhc2stY29uaWNhbCIsdGl0bGU6IkRlbW8gbW9kZSIsZGVzY3JpcHRpb246IlNhbmRib3ggZGVwbG95bWVudCB3aXRoIHNlZWRlZCBmYWtlIHVzZXJzLiBEbyBub3QgdXNlIHJlYWwgY3JlZGVudGlhbHMuIn0pLHQuY3JlYXRlVk5vZGUocCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJwcmltYXJ5IixpY29uOiJpLWx1Y2lkZS1zaGllbGQtY2hlY2siLGxvYWRpbmc6ImFkbWluIj09PXQudW5yZWYoZyksZGlzYWJsZWQ6bnVsbCE9PXQudW5yZWYoZyksImRhdGEtdGVzdGlkIjoic2lnbmluLWFkbWluLWFnZW50IixvbkNsaWNrOmU9PnNpZ25JbkFzRGVtb0FnZW50KCJhZG1pbiIpfSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSgiIFNpZ24gaW4gYXMgQWRtaW4gQWdlbnQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pLHQuY3JlYXRlVk5vZGUocCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixpY29uOiJpLWx1Y2lkZS11c2VyIixsb2FkaW5nOiJ1c2VyIj09PXQudW5yZWYoZyksZGlzYWJsZWQ6bnVsbCE9PXQudW5yZWYoZyksImRhdGEtdGVzdGlkIjoic2lnbmluLXVzZXItYWdlbnQiLG9uQ2xpY2s6ZT0+c2lnbkluQXNEZW1vQWdlbnQoInVzZXIiKX0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVUZXh0Vk5vZGUoIiBTaWduIGluIGFzIFVzZXIgQWdlbnQgIildKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pLHQuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIHRleHQtY2VudGVyIHB0LTIifSxbdC5jcmVhdGVUZXh0Vk5vZGUoIiBBZG1pbiBBZ2VudCBoYXMgdGhlICIpLHQuY3JlYXRlVk5vZGUoImNvZGUiLG51bGwsInVzZXI6aW1wZXJzb25hdGUiKSx0LmNyZWF0ZVRleHRWTm9kZSgiIGFiaWxpdHkuIFVzZXIgQWdlbnQgZG9lcyBub3QuICIpXSldKSk6KHQub3BlbkJsb2NrKCksdC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjEsY2xhc3M6InNwYWNlLXktMyB0ZXh0LWNlbnRlciJ9LFt0LmNyZWF0ZVZOb2RlKHAse3RvOiIvYXBpL2F1dGgvZ29vZ2xlIixleHRlcm5hbDoiIixibG9jazoiIixzaXplOiJsZyIsaWNvbjoiaS1sb2dvcy1nb29nbGUtaWNvbiIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUifSx7ZGVmYXVsdDp0LndpdGhDdHgoKCk9Plt0LmNyZWF0ZVRleHRWTm9kZSgiIENvbnRpbnVlIHdpdGggR29vZ2xlICIpXSksXzoxfSksdC5jcmVhdGVWTm9kZShwLHt0bzoiL2FwaS9hdXRoL2dpdGh1YiIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ2l0aHViLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6dC53aXRoQ3R4KCgpPT5bdC5jcmVhdGVUZXh0Vk5vZGUoIiBDb250aW51ZSB3aXRoIEdpdEh1YiAiKV0pLF86MX0pXSkpXTt0LnVucmVmKGMpPyhpKGA8ZGl2IGNsYXNzPSJzcGFjZS15LTMiIGRhdGEtdGVzdGlkPSJkZW1vLWJsb2NrIiR7b30+YCksaShyKG0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLWZsYXNrLWNvbmljYWwiLHRpdGxlOiJEZW1vIG1vZGUiLGRlc2NyaXB0aW9uOiJTYW5kYm94IGRlcGxveW1lbnQgd2l0aCBzZWVkZWQgZmFrZSB1c2Vycy4gRG8gbm90IHVzZSByZWFsIGNyZWRlbnRpYWxzLiJ9LG51bGwsbixvKSksaShyKHAse2Jsb2NrOiIiLHNpemU6ImxnIixjb2xvcjoicHJpbWFyeSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkLWNoZWNrIixsb2FkaW5nOiJhZG1pbiI9PT10LnVucmVmKGcpLGRpc2FibGVkOm51bGwhPT10LnVucmVmKGcpLCJkYXRhLXRlc3RpZCI6InNpZ25pbi1hZG1pbi1hZ2VudCIsb25DbGljazplPT5zaWduSW5Bc0RlbW9BZ2VudCgiYWRtaW4iKX0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIFNpZ24gaW4gYXMgQWRtaW4gQWdlbnQgIildO2koIiBTaWduIGluIGFzIEFkbWluIEFnZW50ICIpfSksXzoxfSxuLG8pKSxpKHIocCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixpY29uOiJpLWx1Y2lkZS11c2VyIixsb2FkaW5nOiJ1c2VyIj09PXQudW5yZWYoZyksZGlzYWJsZWQ6bnVsbCE9PXQudW5yZWYoZyksImRhdGEtdGVzdGlkIjoic2lnbmluLXVzZXItYWdlbnQiLG9uQ2xpY2s6ZT0+c2lnbkluQXNEZW1vQWdlbnQoInVzZXIiKX0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIFNpZ24gaW4gYXMgVXNlciBBZ2VudCAiKV07aSgiIFNpZ24gaW4gYXMgVXNlciBBZ2VudCAiKX0pLF86MX0sbixvKSksaShgPHAgY2xhc3M9InRleHQteHMgdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciBwdC0yIiR7b30+IEFkbWluIEFnZW50IGhhcyB0aGUgPGNvZGUke299PnVzZXI6aW1wZXJzb25hdGU8L2NvZGU+IGFiaWxpdHkuIFVzZXIgQWdlbnQgZG9lcyBub3QuIDwvcD48L2Rpdj5gKSk6KGkoYDxkaXYgY2xhc3M9InNwYWNlLXktMyB0ZXh0LWNlbnRlciIke299PmApLGkocihwLHt0bzoiL2FwaS9hdXRoL2dvb2dsZSIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ29vZ2xlLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIENvbnRpbnVlIHdpdGggR29vZ2xlICIpXTtpKCIgQ29udGludWUgd2l0aCBHb29nbGUgIil9KSxfOjF9LG4sbykpLGkocihwLHt0bzoiL2FwaS9hdXRoL2dpdGh1YiIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ2l0aHViLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6dC53aXRoQ3R4KChlLGksbixvKT0+e2lmKCFpKXJldHVyblt0LmNyZWF0ZVRleHRWTm9kZSgiIENvbnRpbnVlIHdpdGggR2l0SHViICIpXTtpKCIgQ29udGludWUgd2l0aCBHaXRIdWIgIil9KSxfOjF9LG4sbykpLGkoIjwvZGl2PiIpKX0pLF86MX0scykpfX19KSxjPWQuc2V0dXA7ZC5zZXR1cD0oZSxpKT0+e2NvbnN0IG49dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG4ubW9kdWxlc3x8KG4ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvY29tcG9uZW50cy9BdXRoL0F1dGhMb2dpbkNhcmQudnVlIiksYz9jKGUsaSk6dm9pZCAwfTtjb25zdCB1PU9iamVjdC5hc3NpZ24oZCx7X19uYW1lOiJBdXRoTG9naW5DYXJkIn0pLGc9dC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToibG9naW4iLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwOmU9PihpKHt0aXRsZToiU2lnbiBpbiJ9KSwoZSx0LGksbik9Pnt0KHIodSxuLG51bGwsaSkpfSl9KSxtPWcuc2V0dXA7Zy5zZXR1cD0oZSxpKT0+e2NvbnN0IG49dC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG4ubW9kdWxlc3x8KG4ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvYXV0aC9sb2dpbi52dWUiKSxtP20oZSxpKTp2b2lkIDB9O2V4cG9ydHtnIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1sb2dpbi1ET1FRX2RZOS5tanMubWFwCg==", "chunks/build/members-DgrH9_HQ.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQWxlcnQtQ1ZCNVlYdWUubWpzIjtpbXBvcnR7diBhcyBsLHUgYXMgYSxpIGFzIHQseSBhcyBpLGggYXMgbyxhIGFzIG4sYWYgYXMgcixheSBhcyBzLGF6IGFzIGQsXyBhcyB1fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBtfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHtfIGFzIGN9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e18gYXMgcH1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHtfIGFzIGZ9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIHZ9ZnJvbSIuL1NlbGVjdC1EaWFpbGZVYy5tanMiO2ltcG9ydHtfIGFzIGJ9ZnJvbSIuL1NlbGVjdE1lbnUtQmFBUHc0LWsubWpzIjtpbXBvcnR7XyBhcyB4fWZyb20iLi9UYWJsZS0wVVJuQzhPSC5tanMiO2ltcG9ydHtaIGFzIHl9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtfIGFzIGd9ZnJvbSIuL01vZGFsLUIweVdQeFdfLm1qcyI7aW1wb3J0e18gYXMga31mcm9tIi4vU3dpdGNoLUJ5VzBCVUxpLm1qcyI7aW1wb3J0e3cgYXMgaH1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7dSBhcyBWfWZyb20iLi91c2VQcm9qZWN0QXBpLUNUTDJLNkpWLm1qcyI7aW1wb3J0e3UgYXMgd31mcm9tIi4vdXNlSW5maW5pdGVMaXN0LVVVZ25iU216Lm1qcyI7aW1wb3J0e3UgYXMgan1mcm9tIi4vdXJsLUJmQm95akpaLm1qcyI7aW1wb3J0e28gYXMgQyxmIGFzIF8sdCBhcyBOLHEgYXMgQn1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnQiLi91c2VGaWx0ZXItQ2xDWmFvaTgubWpzIjtpbXBvcnQiLi92aXJ0dWFsaXplci1CeXFpMHVBSy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydCIuL2luZGV4LUIxUE9UTG1hLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtjb25zdCBVPVN5bWJvbCgib3JnLW1lbWJlcnMiKTtmdW5jdGlvbiB1c2VPcmdhbml6YXRpb25NZW1iZXJzKCl7Y29uc3QgZT1sLmluamVjdChVKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoInVzZU9yZ2FuaXphdGlvbk1lbWJlcnMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoaW4gdGhlIG1lbWJlcnMgcGFnZSIpO3JldHVybiBlfWNvbnN0IE09bC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiT3JnYW5pemF0aW9uTWVtYmVyUGVybWlzc2lvbnNNb2RhbCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6bC5tZXJnZU1vZGVscyh7bWVtYmVyOnt9fSx7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9wZW5Nb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSl7Y29uc3QgYT1lLHM9bC51c2VNb2RlbChlLCJvcGVuIiksZD1vKCksbT1uKCksYz1pKCkse3Blcm1pc3Npb25zOnAsdXBkYXRlTWVtYmVyQWJpbGl0aWVzOmZ9PXVzZU9yZ2FuaXphdGlvbk1lbWJlcnMoKSx7ZGF0YTp2LGVycm9yOnh9PXQoIm9yZy1yb2xlcyIsKCk9PmMuZmV0Y2hSb2xlcygpLHtkZWZhdWx0OigpPT5bXX0pO2goeCk7Y29uc3QgeT1sLnJlZihbXSksVj1sLnJlZihbXSk7bC53YXRjaCgoKT0+YS5tZW1iZXIsZT0+e3kudmFsdWU9ZT8oZS5hYmlsaXRpZXM/P1tdKS5maWx0ZXIoZT0+IWUuZW5kc1dpdGgoIjpzZWxmIikpOltdLFYudmFsdWU9W119LHtpbW1lZGlhdGU6ITB9KTtjb25zdCB3PWwucmVmKCExKSxqPWwuY29tcHV0ZWQoKCk9Pntjb25zdCBlPXAudmFsdWUuZmlsdGVyKGU9Pm51bGw9PT1lLnNjb3BlKTtyZXR1cm5bLi4ubmV3IFNldChlLm1hcChlPT5lLnN1YmplY3QpKV0ubWFwKGw9Pih7c3ViamVjdDpsLHBlcm1pc3Npb25zOmUuZmlsdGVyKGU9PmUuc3ViamVjdD09PWwpfSkpfSksQz1sLmNvbXB1dGVkKCgpPT52LnZhbHVlLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpKTtmdW5jdGlvbiBjYW5HcmFudChlKXtyZXR1cm4gcihkLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLGUpfWZ1bmN0aW9uIHRvZ2dsZShlKXtjYW5HcmFudChlKSYmKHkudmFsdWUuaW5jbHVkZXMoZSk/eS52YWx1ZT15LnZhbHVlLmZpbHRlcihsPT5sIT09ZSk6eS52YWx1ZT1bLi4ueS52YWx1ZSxlXSl9YXN5bmMgZnVuY3Rpb24gc2F2ZSgpe2lmKGEubWVtYmVyKXt3LnZhbHVlPSEwO3RyeXthd2FpdCBQcm9taXNlLmFsbChbZihhLm1lbWJlci5pZCx5LnZhbHVlKSxjLmFzc2lnbk1lbWJlclJvbGVzKGEubWVtYmVyLmlkLFYudmFsdWUpXSksbS5hZGQoe3RpdGxlOiJQZXJtaXNzaW9ucyB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KSxzLnZhbHVlPSExfWNhdGNoKGUpe2NvbnN0IGw9ZTttLmFkZCh7dGl0bGU6IkZhaWxlZCB0byB1cGRhdGUgcGVybWlzc2lvbnMiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt3LnZhbHVlPSExfX19cmV0dXJuKGEsdCxpLG8pPT57Y29uc3Qgbj1iLHI9ayxkPXU7dChfKGcsbC5tZXJnZVByb3BzKHtvcGVuOnMudmFsdWUsIm9uVXBkYXRlOm9wZW4iOmU9PnMudmFsdWU9ZSx0aXRsZTplLm1lbWJlcj9gUGVybWlzc2lvbnMg4oCUICR7ZS5tZW1iZXIubmFtZT8/ZS5tZW1iZXIucHJpbWFyeV9lbWFpbH1gOiJQZXJtaXNzaW9ucyIsdWk6e2Zvb3RlcjoianVzdGlmeS1lbmQifX0sbykse2JvZHk6bC53aXRoQ3R4KChlLGEsdCxpKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS00In0sW2wudW5yZWYodikubGVuZ3RoPjA/KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjB9LFtsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUifSwiIFJvbGVzICIpLGwuY3JlYXRlVk5vZGUobix7bW9kZWxWYWx1ZTpsLnVucmVmKFYpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKFYpP1YudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoQyksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgcm9sZXPigKYifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwobC5vcGVuQmxvY2soITApLGwuY3JlYXRlQmxvY2sobC5GcmFnbWVudCxudWxsLGwucmVuZGVyTGlzdChsLnVucmVmKGopLGU9PihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTplLnN1YmplY3R9LFtsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUifSxsLnRvRGlzcGxheVN0cmluZyhlLnN1YmplY3QpLDEpLGwuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTIifSxbKGwub3BlbkJsb2NrKCEwKSxsLmNyZWF0ZUJsb2NrKGwuRnJhZ21lbnQsbnVsbCxsLnJlbmRlckxpc3QoZS5wZXJtaXNzaW9ucyxlPT4obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6ZS5rZXksY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LFtsLmNyZWF0ZVZOb2RlKCJkaXYiLG51bGwsW2wuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSJ9LGwudG9EaXNwbGF5U3RyaW5nKGUuZGVzY3JpcHRpb24/P2Uua2V5KSwxKSxsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LGwudG9EaXNwbGF5U3RyaW5nKGUua2V5KSwxKV0pLGwuY3JlYXRlVk5vZGUocix7Im1vZGVsLXZhbHVlIjpsLnVucmVmKHkpLmluY2x1ZGVzKGUua2V5KSxkaXNhYmxlZDohY2FuR3JhbnQoZS5rZXkpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpsPT50b2dnbGUoZS5rZXkpfSxudWxsLDgsWyJtb2RlbC12YWx1ZSIsImRpc2FibGVkIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pKSksMTI4KSldKV0pKSksMTI4KSldKV07YShgPGRpdiBjbGFzcz0ic3BhY2UteS00IiR7aX0+YCksbC51bnJlZih2KS5sZW5ndGg+MD8oYShgPGRpdiR7aX0+PHAgY2xhc3M9InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUiJHtpfT4gUm9sZXMgPC9wPmApLGEoXyhuLHttb2RlbFZhbHVlOmwudW5yZWYoViksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoVik/Vi52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihDKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsbXVsdGlwbGU6IiIscGxhY2Vob2xkZXI6IlNlbGVjdCByb2xlc+KApiJ9LG51bGwsdCxpKSksYSgiPC9kaXY+IikpOmEoIlx4M2MhLS0tLVx4M2UiKSxhKCJceDNjIS0tWy0tXHgzZSIpLE4obC51bnJlZihqKSxlPT57YShgPGRpdiR7aX0+PHAgY2xhc3M9InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUiJHtpfT4ke0IoZS5zdWJqZWN0KX08L3A+PGRpdiBjbGFzcz0ic3BhY2UteS0yIiR7aX0+XHgzYyEtLVstLVx4M2VgKSxOKGUucGVybWlzc2lvbnMsZT0+e2EoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiIke2l9PjxkaXYke2l9PjxwIGNsYXNzPSJ0ZXh0LXNtIiR7aX0+JHtCKGUuZGVzY3JpcHRpb24/P2Uua2V5KX08L3A+PHAgY2xhc3M9InRleHQteHMgdGV4dC1tdXRlZCIke2l9PiR7QihlLmtleSl9PC9wPjwvZGl2PmApLGEoXyhyLHsibW9kZWwtdmFsdWUiOmwudW5yZWYoeSkuaW5jbHVkZXMoZS5rZXkpLGRpc2FibGVkOiFjYW5HcmFudChlLmtleSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmw9PnRvZ2dsZShlLmtleSl9LG51bGwsdCxpKSksYSgiPC9kaXY+Iil9KSxhKCJceDNjIS0tXS0tXHgzZTwvZGl2PjwvZGl2PiIpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKX0pLGZvb3RlcjpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoZCx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnMudmFsdWU9ITF9LG51bGwsOCxbIm9uQ2xpY2siXSksbC5jcmVhdGVWTm9kZShkLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpsLnVucmVmKHcpLG9uQ2xpY2s6c2F2ZX0sbnVsbCw4LFsibG9hZGluZyJdKV07YShfKGQse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5zLnZhbHVlPSExfSxudWxsLHQsaSkpLGEoXyhkLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpsLnVucmVmKHcpLG9uQ2xpY2s6c2F2ZX0sbnVsbCx0LGkpKX0pLF86MX0saSkpfX19KSxSPU0uc2V0dXA7TS5zZXR1cD0oZSxhKT0+e2NvbnN0IHQ9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHQubW9kdWxlc3x8KHQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvY29tcG9uZW50cy9Pcmdhbml6YXRpb24vT3JnYW5pemF0aW9uTWVtYmVyUGVybWlzc2lvbnNNb2RhbC52dWUiKSxSP1IoZSxhKTp2b2lkIDB9O2NvbnN0IHo9T2JqZWN0LmFzc2lnbihNLHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbWJlclBlcm1pc3Npb25zTW9kYWwifSksTD1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJPcmdhbml6YXRpb25NZW1iZXJMaXN0IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCBhPW8oKSxnPW4oKSxrPWkoKSx7aW52aXRhdGlvbnM6QyxyZW1vdmVNZW1iZXI6QixjcmVhdGVJbnZpdGF0aW9uOlUscmV2b2tlSW52aXRhdGlvbjpNfT11c2VPcmdhbml6YXRpb25NZW1iZXJzKCksUj1sLmNvbXB1dGVkKCgpPT5yKGEuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6bWFuYWdlIikpLEw9bC5yZWYobnVsbCkse2l0ZW1zOkkscTpTLGhhc01vcmU6JCxsb2FkaW5nOlAsbG9hZE1vcmU6TyxyZXNldDpBfT13KGU9PmsuZmV0Y2hNZW1iZXJzKGUpLnRoZW4oZT0+ZSkse2ltbWVkaWF0ZTohMH0pO3MoTCxPLHtkaXN0YW5jZToxMjAsY2FuTG9hZE1vcmU6KCk9PiQudmFsdWV9KTtjb25zdCBEPWwucmVmKCIiKSxGPWwucmVmKCIiKSxHPWwucmVmKFtdKSxLPWwucmVmKCExKSxFPWwucmVmKCIiKSx7ZGF0YTpXLGVycm9yOnF9PXQoIm9yZy1yb2xlcyIsKCk9PmsuZmV0Y2hSb2xlcygpLHtkZWZhdWx0OigpPT5bXX0pO2gocSk7Y29uc3QgSj1sLmNvbXB1dGVkKCgpPT5XLnZhbHVlLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpKSxRPWwucmVmKFtdKSxIPVYoKSx7ZGF0YTpULGVycm9yOll9PXQoIm9yZy1pbnZpdGUtcHJvamVjdHMiLCgpPT5ILmZldGNoUHJvamVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTtoKFkpLGwud2F0Y2goVCxlPT57US52YWx1ZT1lLm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgWj1qKCk7ZnVuY3Rpb24gam9pbkxpbmsoZSl7cmV0dXJuIHkoWi5vcmlnaW4sImpvaW4iLGUpfWFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlSW52aXRhdGlvbigpe2lmKEQudmFsdWUudHJpbSgpKXtLLnZhbHVlPSEwLEUudmFsdWU9IiI7dHJ5e2NvbnN0IGU9YXdhaXQgVShELnZhbHVlLnRyaW0oKSxGLnZhbHVlfHx2b2lkIDAsRy52YWx1ZS5sZW5ndGg/Ry52YWx1ZTp2b2lkIDApO0UudmFsdWU9am9pbkxpbmsoZS50b2tlbiksRC52YWx1ZT0iIixGLnZhbHVlPSIiLEcudmFsdWU9W119Y2F0Y2goZSl7Y29uc3QgbD1lO2cuYWRkKHt0aXRsZToiRmFpbGVkIHRvIGNyZWF0ZSBpbnZpdGF0aW9uIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Sy52YWx1ZT0hMX19fWNvbnN0e2NvcHk6WH09ZCgpO2FzeW5jIGZ1bmN0aW9uIGNvcHlMaW5rKGUpe2F3YWl0IFgoZSksZy5hZGQoe3RpdGxlOiJJbnZpdGF0aW9uIGxpbmsgY29waWVkIixjb2xvcjoic3VjY2VzcyJ9KX1jb25zdCBlZT1be2FjY2Vzc29yS2V5OiJlbWFpbCIsaGVhZGVyOiJFbWFpbCJ9LHtpZDoibGluayIsaGVhZGVyOiJJbnZpdGF0aW9uIGxpbmsiLGNlbGw6KHtyb3c6ZX0pPT57Y29uc3QgYT1qb2luTGluayhlLm9yaWdpbmFsLnRva2VuKTtyZXR1cm4gbC5oKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxbbC5oKG0se21vZGVsVmFsdWU6YSx0eXBlOiJwYXNzd29yZCIscmVhZG9ubHk6ITAsc2l6ZToieHMiLGNsYXNzOiJmbGV4LTEgZm9udC1tb25vIiwiYXJpYS1sYWJlbCI6Ikludml0YXRpb24gbGluayJ9KSxsLmgodSx7aWNvbjoiaS1sdWNpZGUtY29weSIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsImFyaWEtbGFiZWwiOiJDb3B5IGxpbmsiLG9uQ2xpY2s6KCk9PmNvcHlMaW5rKGEpfSldKX19LHtpZDoiYWN0aW9ucyIsaGVhZGVyOiIiLG1ldGE6e2NsYXNzOnt0ZDoidGV4dC1yaWdodCJ9fSxjZWxsOih7cm93OmV9KT0+Ui52YWx1ZT9sLmgodSx7bGFiZWw6IlJldm9rZSIsY29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIixvbkNsaWNrOigpPT5hc3luYyBmdW5jdGlvbihlKXt0cnl7YXdhaXQgTShlKSxnLmFkZCh7dGl0bGU6Ikludml0YXRpb24gcmV2b2tlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2h7Zy5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gcmV2b2tlIGludml0YXRpb24iLGNvbG9yOiJlcnJvciJ9KX19KGUub3JpZ2luYWwuaWQpfSk6bnVsbH1dLGxlPWwucmVmKG51bGwpLGFlPWwucmVmKCExKSx0ZT1sLnJlZihudWxsKSxpZT1sLnJlZih7fSksb2U9W3tpZDoibmFtZSIsaGVhZGVyOiJOYW1lIixjZWxsOih7cm93OmV9KT0+bC5oKCJkaXYiLFtsLmgoInAiLHtjbGFzczoiZm9udC1tZWRpdW0ifSxlLm9yaWdpbmFsLm5hbWU/P2Uub3JpZ2luYWwudXNlcm5hbWU/P2Uub3JpZ2luYWwucHJpbWFyeV9lbWFpbCksbC5oKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LGUub3JpZ2luYWwucHJpbWFyeV9lbWFpbCldKX0se2lkOiJhYmlsaXRpZXMiLGhlYWRlcjoiQWJpbGl0aWVzIixjZWxsOih7cm93OmV9KT0+bC5oKCJkaXYiLHtjbGFzczoiZmxleCBmbGV4LXdyYXAgZ2FwLTEifSwoZS5vcmlnaW5hbC5hYmlsaXRpZXM/P1tdKS5maWx0ZXIoZT0+IWUuZW5kc1dpdGgoIjpzZWxmIikpLm1hcChlPT5sLmgoYyx7bGFiZWw6ZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0pKSl9LHtpZDoiYWN0aW9ucyIsaGVhZGVyOiIiLG1ldGE6e2NsYXNzOnt0ZDoidGV4dC1yaWdodCJ9fSxjZWxsOih7cm93OmV9KT0+Ui52YWx1ZSYmZS5vcmlnaW5hbC5pZCE9PWEuY3VycmVudFVzZXI/LmlkP2wuaCgiZGl2Iix7Y2xhc3M6ImZsZXggZ2FwLTIganVzdGlmeS1lbmQifSxbbC5oKHUse2ljb246ImktbHVjaWRlLXBlbmNpbCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsImFyaWEtbGFiZWwiOiJFZGl0IHBlcm1pc3Npb25zIixvbkNsaWNrOigpPT57bGUudmFsdWU9ZS5vcmlnaW5hbCxhZS52YWx1ZT0hMH19KSxsLmgodSx7aWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsY29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLCJhcmlhLWxhYmVsIjoiUmVtb3ZlIG1lbWJlciIsbG9hZGluZzp0ZS52YWx1ZT09PWUub3JpZ2luYWwuaWQsb25DbGljazooKT0+YXN5bmMgZnVuY3Rpb24oZSl7dGUudmFsdWU9ZS5pZDt0cnl7YXdhaXQgQihlLmlkKSxnLmFkZCh7dGl0bGU6YCR7ZS5uYW1lPz9lLnByaW1hcnlfZW1haWx9IHJlbW92ZWRgLGNvbG9yOiJzdWNjZXNzIn0pLEEoKSxhd2FpdCBPKCl9Y2F0Y2goZSl7Y29uc3QgbD1lO2cuYWRkKHt0aXRsZToiRmFpbGVkIHRvIHJlbW92ZSBtZW1iZXIiLGRlc2NyaXB0aW9uOmw/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt0ZS52YWx1ZT1udWxsfX0oZS5vcmlnaW5hbCl9KV0pOm51bGx9XTtyZXR1cm4gbC53YXRjaChhZSxhc3luYyBlPT57ZXx8KEEoKSxhd2FpdCBPKCkpfSksKGUsYSx0LGkpPT57Y29uc3Qgbz1wLG49ZixyPW0scz12LGQ9Yix5PXUsZz14LGs9YzthKCdceDNjIS0tWy0tXHgzZTxkaXYgY2xhc3M9InNwYWNlLXktNiI+JyksbC51bnJlZihSKT8oYSgnPGRpdiBjbGFzcz0ic3BhY2UteS0zIj48cCBjbGFzcz0iZm9udC1zZW1pYm9sZCI+IEludml0ZSBhIG1lbWJlciA8L3A+JyksYShfKG8sbnVsbCx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC0zIHNtOmZsZXgtcm93IHNtOml0ZW1zLWVuZCJ9LFtsLmNyZWF0ZVZOb2RlKG4se2xhYmVsOiJFbWFpbCIsY2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUocix7bW9kZWxWYWx1ZTpsLnVucmVmKEQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEQpP0QudmFsdWU9ZTpudWxsLHR5cGU6ImVtYWlsIixwbGFjZWhvbGRlcjoidXNlckBleGFtcGxlLmNvbSIsY2xhc3M6InctZnVsbCIsb25LZXlkb3duOmwud2l0aEtleXMoZ2VuZXJhdGVJbnZpdGF0aW9uLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZShuLHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUocyx7bW9kZWxWYWx1ZTpsLnVucmVmKEYpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEYpP0YudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoSiksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLHBsYWNlaG9sZGVyOiJEZWZhdWx0IixjbGFzczoibWluLXctNDAifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksbC51bnJlZihRKS5sZW5ndGg+MD8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKG4se2tleTowLGxhYmVsOiJQcm9qZWN0cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoZCx7bW9kZWxWYWx1ZTpsLnVucmVmKEcpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLmlzUmVmKEcpP0cudmFsdWU9ZTpudWxsLGl0ZW1zOmwudW5yZWYoUSksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJOb25lIixjbGFzczoibWluLXctNDgifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxsLmNyZWF0ZVZOb2RlKHkse2xhYmVsOiJHZW5lcmF0ZSBpbnZpdGUgbGluayIsaWNvbjoiaS1sdWNpZGUtbGluayIsbG9hZGluZzpsLnVucmVmKEspLGRpc2FibGVkOiFsLnVucmVmKEQpLnRyaW0oKSxvbkNsaWNrOmdlbmVyYXRlSW52aXRhdGlvbn0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSksbC51bnJlZihFKT8obC5vcGVuQmxvY2soKSxsLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoibXQtMyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKHIseyJtb2RlbC12YWx1ZSI6bC51bnJlZihFKSx0eXBlOiJwYXNzd29yZCIscmVhZG9ubHk6IiIsY2xhc3M6ImZsZXgtMSBmb250LW1vbm8gdGV4dC14cyIsImFyaWEtbGFiZWwiOiJHZW5lcmF0ZWQgaW52aXRhdGlvbiBsaW5rIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSksbC5jcmVhdGVWTm9kZSh5LHtpY29uOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjoiQ29weSBsaW5rIixvbkNsaWNrOmU9PmNvcHlMaW5rKGwudW5yZWYoRSkpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSkpOmwuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07YShgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtMyBzbTpmbGV4LXJvdyBzbTppdGVtcy1lbmQiJHtpfT5gKSxhKF8obix7bGFiZWw6IkVtYWlsIixjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxpKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKHIse21vZGVsVmFsdWU6bC51bnJlZihEKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihEKT9ELnZhbHVlPWU6bnVsbCx0eXBlOiJlbWFpbCIscGxhY2Vob2xkZXI6InVzZXJAZXhhbXBsZS5jb20iLGNsYXNzOiJ3LWZ1bGwiLG9uS2V5ZG93bjpsLndpdGhLZXlzKGdlbmVyYXRlSW52aXRhdGlvbixbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07YShfKHIse21vZGVsVmFsdWU6bC51bnJlZihEKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihEKT9ELnZhbHVlPWU6bnVsbCx0eXBlOiJlbWFpbCIscGxhY2Vob2xkZXI6InVzZXJAZXhhbXBsZS5jb20iLGNsYXNzOiJ3LWZ1bGwiLG9uS2V5ZG93bjpnZW5lcmF0ZUludml0YXRpb259LG51bGwsdCxpKSl9KSxfOjF9LHQsaSkpLGEoXyhuLHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQsaSk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZShzLHttb2RlbFZhbHVlOmwudW5yZWYoRiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRik/Ri52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihKKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIscGxhY2Vob2xkZXI6IkRlZmF1bHQiLGNsYXNzOiJtaW4tdy00MCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO2EoXyhzLHttb2RlbFZhbHVlOmwudW5yZWYoRiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRik/Ri52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihKKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIscGxhY2Vob2xkZXI6IkRlZmF1bHQiLGNsYXNzOiJtaW4tdy00MCJ9LG51bGwsdCxpKSl9KSxfOjF9LHQsaSkpLGwudW5yZWYoUSkubGVuZ3RoPjA/YShfKG4se2xhYmVsOiJQcm9qZWN0cyJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQsaSk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZShkLHttb2RlbFZhbHVlOmwudW5yZWYoRyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRyk/Ry52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihRKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsbXVsdGlwbGU6IiIscGxhY2Vob2xkZXI6Ik5vbmUiLGNsYXNzOiJtaW4tdy00OCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO2EoXyhkLHttb2RlbFZhbHVlOmwudW5yZWYoRyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYoRyk/Ry52YWx1ZT1lOm51bGwsaXRlbXM6bC51bnJlZihRKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsbXVsdGlwbGU6IiIscGxhY2Vob2xkZXI6Ik5vbmUiLGNsYXNzOiJtaW4tdy00OCJ9LG51bGwsdCxpKSl9KSxfOjF9LHQsaSkpOmEoIlx4M2MhLS0tLVx4M2UiKSxhKF8oeSx7bGFiZWw6IkdlbmVyYXRlIGludml0ZSBsaW5rIixpY29uOiJpLWx1Y2lkZS1saW5rIixsb2FkaW5nOmwudW5yZWYoSyksZGlzYWJsZWQ6IWwudW5yZWYoRCkudHJpbSgpLG9uQ2xpY2s6Z2VuZXJhdGVJbnZpdGF0aW9ufSxudWxsLHQsaSkpLGEoIjwvZGl2PiIpLGwudW5yZWYoRSk/KGEoYDxkaXYgY2xhc3M9Im10LTMgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiJHtpfT5gKSxhKF8ocix7Im1vZGVsLXZhbHVlIjpsLnVucmVmKEUpLHR5cGU6InBhc3N3b3JkIixyZWFkb25seToiIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyB0ZXh0LXhzIiwiYXJpYS1sYWJlbCI6IkdlbmVyYXRlZCBpbnZpdGF0aW9uIGxpbmsifSxudWxsLHQsaSkpLGEoXyh5LHtpY29uOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLCJhcmlhLWxhYmVsIjoiQ29weSBsaW5rIixvbkNsaWNrOmU9PmNvcHlMaW5rKGwudW5yZWYoRSkpfSxudWxsLHQsaSkpLGEoIjwvZGl2PiIpKTphKCJceDNjIS0tLS1ceDNlIil9KSxfOjF9LHQpKSxhKCI8L2Rpdj4iKSk6YSgiXHgzYyEtLS0tXHgzZSIpLGwudW5yZWYoQykubGVuZ3RoPjA/KGEoJzxkaXYgY2xhc3M9InNwYWNlLXktMyI+PHAgY2xhc3M9ImZvbnQtc2VtaWJvbGQiPiBQZW5kaW5nIGludml0YXRpb25zIDwvcD4nKSxhKF8obyx7dWk6e2JvZHk6InNtOnAtMCJ9fSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoZyx7Y29sdW1uczplZSxkYXRhOmwudW5yZWYoQyl9LG51bGwsOCxbImRhdGEiXSldO2EoXyhnLHtjb2x1bW5zOmVlLGRhdGE6bC51bnJlZihDKX0sbnVsbCx0LGkpKX0pLF86MX0sdCkpLGEoIjwvZGl2PiIpKTphKCJceDNjIS0tLS1ceDNlIiksYSgnPGRpdiBjbGFzcz0ic3BhY2UteS0zIj48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyI+PHAgY2xhc3M9ImZvbnQtc2VtaWJvbGQgZmxleC0xIj4gTWVtYmVycyA8L3A+JyksYShfKHIse21vZGVsVmFsdWU6bC51bnJlZihTKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZihTKT9TLnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggbWVtYmVyc+KApiIsc2l6ZToic20iLGNsYXNzOiJ3LTU2In0sbnVsbCx0KSksYSgiPC9kaXY+IiksYShfKG8se3VpOntib2R5OiJzbTpwLTAifX0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxpKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtyZWZfa2V5OiJzY3JvbGxFbCIscmVmOkx9LFtsLmNyZWF0ZVZOb2RlKGcse2V4cGFuZGVkOmwudW5yZWYoaWUpLCJvblVwZGF0ZTpleHBhbmRlZCI6ZT0+bC5pc1JlZihpZSk/aWUudmFsdWU9ZTpudWxsLGNvbHVtbnM6b2UsZGF0YTpsLnVucmVmKEkpfSx7ZW1wdHk6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InRleHQtY2VudGVyIHRleHQtbXV0ZWQgcHktOCJ9LCIgTm8gbWVtYmVycyBpbiB0aGlzIG9yZ2FuaXphdGlvbi4gIildKSxleHBhbmRlZDpsLndpdGhDdHgoKHtyb3c6ZX0pPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InAtNCBzcGFjZS15LTEifSxbbC5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIn0sIiBBbGwgcGVybWlzc2lvbnMgIiksbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggZmxleC13cmFwIGdhcC0xLjUifSxbKGwub3BlbkJsb2NrKCEwKSxsLmNyZWF0ZUJsb2NrKGwuRnJhZ21lbnQsbnVsbCxsLnJlbmRlckxpc3QoZS5vcmlnaW5hbC5hYmlsaXRpZXMsZT0+KGwub3BlbkJsb2NrKCksbC5jcmVhdGVCbG9jayhrLHtrZXk6ZSxsYWJlbDplLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InNtIn0sbnVsbCw4LFsibGFiZWwiXSkpKSwxMjgpKV0pXSldKSxfOjF9LDgsWyJleHBhbmRlZCIsIm9uVXBkYXRlOmV4cGFuZGVkIiwiZGF0YSJdKSxsLnVucmVmKFApPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJweS0zIHRleHQtY2VudGVyIHRleHQtbXV0ZWQgdGV4dC1zbSJ9LCIgTG9hZGluZ+KApiAiKSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw1MTIpXTthKGA8ZGl2JHtpfT5gKSxhKF8oZyx7ZXhwYW5kZWQ6bC51bnJlZihpZSksIm9uVXBkYXRlOmV4cGFuZGVkIjplPT5sLmlzUmVmKGllKT9pZS52YWx1ZT1lOm51bGwsY29sdW1uczpvZSxkYXRhOmwudW5yZWYoSSl9LHtlbXB0eTpsLndpdGhDdHgoKGUsYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgifSwiIE5vIG1lbWJlcnMgaW4gdGhpcyBvcmdhbml6YXRpb24uICIpXTthKGA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgiJHtpfT4gTm8gbWVtYmVycyBpbiB0aGlzIG9yZ2FuaXphdGlvbi4gPC9kaXY+YCl9KSxleHBhbmRlZDpsLndpdGhDdHgoKHtyb3c6ZX0sYSx0LGkpPT57aWYoIWEpcmV0dXJuW2wuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJwLTQgc3BhY2UteS0xIn0sW2wuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtbXV0ZWQgbWItMiJ9LCIgQWxsIHBlcm1pc3Npb25zICIpLGwuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtd3JhcCBnYXAtMS41In0sWyhsLm9wZW5CbG9jayghMCksbC5jcmVhdGVCbG9jayhsLkZyYWdtZW50LG51bGwsbC5yZW5kZXJMaXN0KGUub3JpZ2luYWwuYWJpbGl0aWVzLGU9PihsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soayx7a2V5OmUsbGFiZWw6ZSxjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixzaXplOiJzbSJ9LG51bGwsOCxbImxhYmVsIl0pKSksMTI4KSldKV0pXTthKGA8ZGl2IGNsYXNzPSJwLTQgc3BhY2UteS0xIiR7aX0+PHAgY2xhc3M9InRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkIG1iLTIiJHtpfT4gQWxsIHBlcm1pc3Npb25zIDwvcD48ZGl2IGNsYXNzPSJmbGV4IGZsZXgtd3JhcCBnYXAtMS41IiR7aX0+XHgzYyEtLVstLVx4M2VgKSxOKGUub3JpZ2luYWwuYWJpbGl0aWVzLGU9PnthKF8oayx7a2V5OmUsbGFiZWw6ZSxjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixzaXplOiJzbSJ9LG51bGwsdCxpKSl9KSxhKCJceDNjIS0tXS0tXHgzZTwvZGl2PjwvZGl2PiIpfSksXzoxfSx0LGkpKSxsLnVucmVmKFApP2EoYDxkaXYgY2xhc3M9InB5LTMgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZCB0ZXh0LXNtIiR7aX0+IExvYWRpbmfigKYgPC9kaXY+YCk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoIjwvZGl2PiIpfSksXzoxfSx0KSksYSgiPC9kaXY+PC9kaXY+IiksYShfKHose29wZW46bC51bnJlZihhZSksIm9uVXBkYXRlOm9wZW4iOltlPT5sLmlzUmVmKGFlKT9hZS52YWx1ZT1lOm51bGwsZT0+e2V8fChsZS52YWx1ZT1udWxsKX1dLG1lbWJlcjpsLnVucmVmKGxlKX0sbnVsbCx0KSksYSgiXHgzYyEtLV0tLVx4M2UiKX19fSksST1MLnNldHVwO0wuc2V0dXA9KGUsYSk9Pntjb25zdCB0PWwudXNlU1NSQ29udGV4dCgpO3JldHVybih0Lm1vZHVsZXN8fCh0Lm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL2NvbXBvbmVudHMvT3JnYW5pemF0aW9uL09yZ2FuaXphdGlvbk1lbWJlckxpc3QudnVlIiksST9JKGUsYSk6dm9pZCAwfTtjb25zdCBTPU9iamVjdC5hc3NpZ24oTCx7X19uYW1lOiJPcmdhbml6YXRpb25NZW1iZXJMaXN0In0pLCQ9bC5kZWZpbmVDb21wb25lbnQoe19fbmFtZToibWVtYmVycyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobyl7YSh7dGl0bGU6Ik1lbWJlcnMifSk7Y29uc3Qgbj1pKCkse2RhdGE6cn09dCgib3JnLXBlcm1pc3Npb25zIiwoKT0+bi5mZXRjaFBlcm1pc3Npb25zKCkse2RlZmF1bHQ6KCk9PltdfSkse2RhdGE6c309dCgib3JnLWludml0YXRpb25zIiwoKT0+bi5mZXRjaEludml0YXRpb25zKCkse2RlZmF1bHQ6KCk9PltdfSk7cmV0dXJuIGwucHJvdmlkZShVLHtpbnZpdGF0aW9uczpzLHBlcm1pc3Npb25zOnIsYXN5bmMgYWRkTWVtYmVyKGUpe2F3YWl0IG4uYWRkTWVtYmVyKHtlbWFpbDplfSl9LGFzeW5jIHVwZGF0ZU1lbWJlckFiaWxpdGllcyhlLGwpe2F3YWl0IG4udXBkYXRlTWVtYmVyQWJpbGl0aWVzKGUse2FiaWxpdGllczpsfSl9LGFzeW5jIHJlbW92ZU1lbWJlcihlKXthd2FpdCBuLnJlbW92ZU1lbWJlcihlKX0sYXN5bmMgY3JlYXRlSW52aXRhdGlvbihlLGwsYSl7Y29uc3QgdD1hd2FpdCBuLmNyZWF0ZUludml0YXRpb24oe2VtYWlsOmUscm9sZV9pZDpsLHByb2plY3RfaWRzOmE/Lmxlbmd0aD9hOnZvaWQgMH0pO3JldHVybiBzLnZhbHVlPVsuLi5zLnZhbHVlLHRdLHR9LGFzeW5jIHJldm9rZUludml0YXRpb24oZSl7YXdhaXQgbi5yZXZva2VJbnZpdGF0aW9uKGUpLHMudmFsdWU9cy52YWx1ZS5maWx0ZXIobD0+bC5pZCE9PWUpfX0pLChhLHQsaSxvKT0+e2NvbnN0IG49ZTt0KGA8ZGl2JHtDKGwubWVyZ2VQcm9wcyh7Y2xhc3M6InNwYWNlLXktNCJ9LG8pKX0+YCksdChfKG4se2ljb246ImktbHVjaWRlLWluZm8iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHRpdGxlOiJQZXJtaXNzaW9uIGNoYW5nZXMgYXBwbHkgdG8gdGhpcyBvcmdhbml6YXRpb24gYW5kIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LiJ9LG51bGwsaSkpLHQoXyhTLG51bGwsbnVsbCxpKSksdCgiPC9kaXY+Iil9fX0pLFA9JC5zZXR1cDskLnNldHVwPShlLGEpPT57Y29uc3QgdD1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4odC5tb2R1bGVzfHwodC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vbWVtYmVycy52dWUiKSxQP1AoZSxhKTp2b2lkIDB9O2V4cG9ydHskIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1tZW1iZXJzLURnckg5X0hRLm1qcy5tYXAK", "chunks/build/notifications-B0mXUhvI.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBufWZyb20iLi9Td2l0Y2gtQnlXMEJVTGkubWpzIjtpbXBvcnR7XyBhcyByfWZyb20iLi9TZWxlY3RNZW51LUJhQVB3NC1rLm1qcyI7aW1wb3J0e18gYXMgb31mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7XyBhcyBpfWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHthRSBhcyBzLG8gYXMgbCxhLHMgYXMgYyxiIGFzIGR9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHt2IGFzIHAsdSBhcyBmLGEgYXMgbSxpIGFzIHksYW4gYXMgdyxfIGFzIGIsZCBhcyB2LGUgYXMgeCx0IGFzIFMsbCBhcyBDLHIgYXMgQSxQIGFzIE8sSSBhcyBFLGFPIGFzIE4sYUogYXMgUiwkIGFzIER9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtDIGFzIFAsRCBhcyAkLGQgYXMgTCxoIGFzIHosQixuIGFzIEYsdSBhcyBILGEgYXMgXyxFIGFzIGosRiBhcyBxLGIgYXMgVSxHIGFzIFcsZiBhcyBLLG8gYXMgWCxxIGFzIFEsZyBhcyBaLHQgYXMgWSxqIGFzIGVlfWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e1MgYXMgdGV9ZnJvbSIuL1NlcGFyYXRvci1DOUJNX2ZrTy5tanMiO2ltcG9ydHtfIGFzIG5lfWZyb20iLi9Ecm9wZG93bk1lbnUtQ2VjUGNlSmEubWpzIjtpbXBvcnR7XyBhcyByZX1mcm9tIi4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydHtfIGFzIG9lfWZyb20iLi9BbGVydC1DVkI1WVh1ZS5tanMiO2ltcG9ydHtfIGFzIGllfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9WaXN1YWxseUhpZGRlbklucHV0LUQ3bUdQX0pXLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnQiLi91c2VGaWx0ZXItQ2xDWmFvaTgubWpzIjtpbXBvcnQiLi92aXJ0dWFsaXplci1CeXFpMHVBSy5tanMiO2ltcG9ydCIuL2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vaW5kZXgtQjFQT1RMbWEubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vS2JkLUFXR0p2ZVhLLm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL292ZXJsYXktQ2p5QnpMMUMubWpzIjtmdW5jdGlvbiBPcmRlcmVkTWFwKGUpe3RoaXMuY29udGVudD1lfWZ1bmN0aW9uIGZpbmREaWZmU3RhcnQoZSx0LG4pe2ZvcihsZXQgcj0wOztyKyspe2lmKHI9PWUuY2hpbGRDb3VudHx8cj09dC5jaGlsZENvdW50KXJldHVybiBlLmNoaWxkQ291bnQ9PXQuY2hpbGRDb3VudD9udWxsOm47bGV0IG89ZS5jaGlsZChyKSxpPXQuY2hpbGQocik7aWYobyE9aSl7aWYoIW8uc2FtZU1hcmt1cChpKSlyZXR1cm4gbjtpZihvLmlzVGV4dCYmby50ZXh0IT1pLnRleHQpe2ZvcihsZXQgZT0wO28udGV4dFtlXT09aS50ZXh0W2VdO2UrKyluKys7cmV0dXJuIG59aWYoby5jb250ZW50LnNpemV8fGkuY29udGVudC5zaXplKXtsZXQgZT1maW5kRGlmZlN0YXJ0KG8uY29udGVudCxpLmNvbnRlbnQsbisxKTtpZihudWxsIT1lKXJldHVybiBlfW4rPW8ubm9kZVNpemV9ZWxzZSBuKz1vLm5vZGVTaXplfX1mdW5jdGlvbiBmaW5kRGlmZkVuZChlLHQsbixyKXtmb3IobGV0IG89ZS5jaGlsZENvdW50LGk9dC5jaGlsZENvdW50Ozspe2lmKDA9PW98fDA9PWkpcmV0dXJuIG89PWk/bnVsbDp7YTpuLGI6cn07bGV0IHM9ZS5jaGlsZCgtLW8pLGw9dC5jaGlsZCgtLWkpLGE9cy5ub2RlU2l6ZTtpZihzIT1sKXtpZighcy5zYW1lTWFya3VwKGwpKXJldHVybnthOm4sYjpyfTtpZihzLmlzVGV4dCYmcy50ZXh0IT1sLnRleHQpe2xldCBlPTAsdD1NYXRoLm1pbihzLnRleHQubGVuZ3RoLGwudGV4dC5sZW5ndGgpO2Zvcig7ZTx0JiZzLnRleHRbcy50ZXh0Lmxlbmd0aC1lLTFdPT1sLnRleHRbbC50ZXh0Lmxlbmd0aC1lLTFdOyllKyssbi0tLHItLTtyZXR1cm57YTpuLGI6cn19aWYocy5jb250ZW50LnNpemV8fGwuY29udGVudC5zaXplKXtsZXQgZT1maW5kRGlmZkVuZChzLmNvbnRlbnQsbC5jb250ZW50LG4tMSxyLTEpO2lmKGUpcmV0dXJuIGV9bi09YSxyLT1hfWVsc2Ugbi09YSxyLT1hfX1PcmRlcmVkTWFwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6T3JkZXJlZE1hcCxmaW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5jb250ZW50Lmxlbmd0aDt0Kz0yKWlmKHRoaXMuY29udGVudFt0XT09PWUpcmV0dXJuIHQ7cmV0dXJuLTF9LGdldDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbmQoZSk7cmV0dXJuLTE9PXQ/dm9pZCAwOnRoaXMuY29udGVudFt0KzFdfSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4hPWU/dGhpcy5yZW1vdmUobik6dGhpcyxvPXIuZmluZChlKSxpPXIuY29udGVudC5zbGljZSgpO3JldHVybi0xPT1vP2kucHVzaChufHxlLHQpOihpW28rMV09dCxuJiYoaVtvXT1uKSksbmV3IE9yZGVyZWRNYXAoaSl9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbmQoZSk7aWYoLTE9PXQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5jb250ZW50LnNsaWNlKCk7cmV0dXJuIG4uc3BsaWNlKHQsMiksbmV3IE9yZGVyZWRNYXAobil9LGFkZFRvU3RhcnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IE9yZGVyZWRNYXAoW2UsdF0uY29uY2F0KHRoaXMucmVtb3ZlKGUpLmNvbnRlbnQpKX0sYWRkVG9FbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJlbW92ZShlKS5jb250ZW50LnNsaWNlKCk7cmV0dXJuIG4ucHVzaChlLHQpLG5ldyBPcmRlcmVkTWFwKG4pfSxhZGRCZWZvcmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMucmVtb3ZlKHQpLG89ci5jb250ZW50LnNsaWNlKCksaT1yLmZpbmQoZSk7cmV0dXJuIG8uc3BsaWNlKC0xPT1pP28ubGVuZ3RoOmksMCx0LG4pLG5ldyBPcmRlcmVkTWFwKG8pfSxmb3JFYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5jb250ZW50Lmxlbmd0aDt0Kz0yKWUodGhpcy5jb250ZW50W3RdLHRoaXMuY29udGVudFt0KzFdKX0scHJlcGVuZDpmdW5jdGlvbihlKXtyZXR1cm4oZT1PcmRlcmVkTWFwLmZyb20oZSkpLnNpemU/bmV3IE9yZGVyZWRNYXAoZS5jb250ZW50LmNvbmNhdCh0aGlzLnN1YnRyYWN0KGUpLmNvbnRlbnQpKTp0aGlzfSxhcHBlbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGU9T3JkZXJlZE1hcC5mcm9tKGUpKS5zaXplP25ldyBPcmRlcmVkTWFwKHRoaXMuc3VidHJhY3QoZSkuY29udGVudC5jb25jYXQoZS5jb250ZW50KSk6dGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlPU9yZGVyZWRNYXAuZnJvbShlKTtmb3IodmFyIG49MDtuPGUuY29udGVudC5sZW5ndGg7bis9Mil0PXQucmVtb3ZlKGUuY29udGVudFtuXSk7cmV0dXJuIHR9LHRvT2JqZWN0OmZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2VbdF09bn0pLGV9LGdldCBzaXplKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg+PjF9fSxPcmRlcmVkTWFwLmZyb209ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIE9yZGVyZWRNYXApcmV0dXJuIGU7dmFyIHQ9W107aWYoZSlmb3IodmFyIG4gaW4gZSl0LnB1c2gobixlW25dKTtyZXR1cm4gbmV3IE9yZGVyZWRNYXAodCl9O2NsYXNzIEZyYWdtZW50e2NvbnN0cnVjdG9yKGUsdCl7aWYodGhpcy5jb250ZW50PWUsdGhpcy5zaXplPXR8fDAsbnVsbD09dClmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnNpemUrPWVbdF0ubm9kZVNpemV9bm9kZXNCZXR3ZWVuKGUsdCxuLHI9MCxvKXtmb3IobGV0IGk9MCxzPTA7czx0O2krKyl7bGV0IGw9dGhpcy5jb250ZW50W2ldLGE9cytsLm5vZGVTaXplO2lmKGE+ZSYmITEhPT1uKGwscitzLG98fG51bGwsaSkmJmwuY29udGVudC5zaXplKXtsZXQgbz1zKzE7bC5ub2Rlc0JldHdlZW4oTWF0aC5tYXgoMCxlLW8pLE1hdGgubWluKGwuY29udGVudC5zaXplLHQtbyksbixyK28pfXM9YX19ZGVzY2VuZGFudHMoZSl7dGhpcy5ub2Rlc0JldHdlZW4oMCx0aGlzLnNpemUsZSl9dGV4dEJldHdlZW4oZSx0LG4scil7bGV0IG89IiIsaT0hMDtyZXR1cm4gdGhpcy5ub2Rlc0JldHdlZW4oZSx0LChzLGwpPT57bGV0IGE9cy5pc1RleHQ/cy50ZXh0LnNsaWNlKE1hdGgubWF4KGUsbCktbCx0LWwpOnMuaXNMZWFmP3I/ImZ1bmN0aW9uIj09dHlwZW9mIHI/cihzKTpyOnMudHlwZS5zcGVjLmxlYWZUZXh0P3MudHlwZS5zcGVjLmxlYWZUZXh0KHMpOiIiOiIiO3MuaXNCbG9jayYmKHMuaXNMZWFmJiZhfHxzLmlzVGV4dGJsb2NrKSYmbiYmKGk/aT0hMTpvKz1uKSxvKz1hfSwwKSxvfWFwcGVuZChlKXtpZighZS5zaXplKXJldHVybiB0aGlzO2lmKCF0aGlzLnNpemUpcmV0dXJuIGU7bGV0IHQ9dGhpcy5sYXN0Q2hpbGQsbj1lLmZpcnN0Q2hpbGQscj10aGlzLmNvbnRlbnQuc2xpY2UoKSxvPTA7Zm9yKHQuaXNUZXh0JiZ0LnNhbWVNYXJrdXAobikmJihyW3IubGVuZ3RoLTFdPXQud2l0aFRleHQodC50ZXh0K24udGV4dCksbz0xKTtvPGUuY29udGVudC5sZW5ndGg7bysrKXIucHVzaChlLmNvbnRlbnRbb10pO3JldHVybiBuZXcgRnJhZ21lbnQocix0aGlzLnNpemUrZS5zaXplKX1jdXQoZSx0PXRoaXMuc2l6ZSl7aWYoMD09ZSYmdD09dGhpcy5zaXplKXJldHVybiB0aGlzO2xldCBuPVtdLHI9MDtpZih0PmUpZm9yKGxldCBvPTAsaT0wO2k8dDtvKyspe2xldCBzPXRoaXMuY29udGVudFtvXSxsPWkrcy5ub2RlU2l6ZTtsPmUmJigoaTxlfHxsPnQpJiYocz1zLmlzVGV4dD9zLmN1dChNYXRoLm1heCgwLGUtaSksTWF0aC5taW4ocy50ZXh0Lmxlbmd0aCx0LWkpKTpzLmN1dChNYXRoLm1heCgwLGUtaS0xKSxNYXRoLm1pbihzLmNvbnRlbnQuc2l6ZSx0LWktMSkpKSxuLnB1c2gocykscis9cy5ub2RlU2l6ZSksaT1sfXJldHVybiBuZXcgRnJhZ21lbnQobixyKX1jdXRCeUluZGV4KGUsdCl7cmV0dXJuIGU9PXQ/RnJhZ21lbnQuZW1wdHk6MD09ZSYmdD09dGhpcy5jb250ZW50Lmxlbmd0aD90aGlzOm5ldyBGcmFnbWVudCh0aGlzLmNvbnRlbnQuc2xpY2UoZSx0KSl9cmVwbGFjZUNoaWxkKGUsdCl7bGV0IG49dGhpcy5jb250ZW50W2VdO2lmKG49PXQpcmV0dXJuIHRoaXM7bGV0IHI9dGhpcy5jb250ZW50LnNsaWNlKCksbz10aGlzLnNpemUrdC5ub2RlU2l6ZS1uLm5vZGVTaXplO3JldHVybiByW2VdPXQsbmV3IEZyYWdtZW50KHIsbyl9YWRkVG9TdGFydChlKXtyZXR1cm4gbmV3IEZyYWdtZW50KFtlXS5jb25jYXQodGhpcy5jb250ZW50KSx0aGlzLnNpemUrZS5ub2RlU2l6ZSl9YWRkVG9FbmQoZSl7cmV0dXJuIG5ldyBGcmFnbWVudCh0aGlzLmNvbnRlbnQuY29uY2F0KGUpLHRoaXMuc2l6ZStlLm5vZGVTaXplKX1lcShlKXtpZih0aGlzLmNvbnRlbnQubGVuZ3RoIT1lLmNvbnRlbnQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgdD0wO3Q8dGhpcy5jb250ZW50Lmxlbmd0aDt0KyspaWYoIXRoaXMuY29udGVudFt0XS5lcShlLmNvbnRlbnRbdF0pKXJldHVybiExO3JldHVybiEwfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50WzBdOm51bGx9Z2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RoP3RoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdOm51bGx9Z2V0IGNoaWxkQ291bnQoKXtyZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aH1jaGlsZChlKXtsZXQgdD10aGlzLmNvbnRlbnRbZV07aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4ICIrZSsiIG91dCBvZiByYW5nZSBmb3IgIit0aGlzKTtyZXR1cm4gdH1tYXliZUNoaWxkKGUpe3JldHVybiB0aGlzLmNvbnRlbnRbZV18fG51bGx9Zm9yRWFjaChlKXtmb3IobGV0IHQ9MCxuPTA7dDx0aGlzLmNvbnRlbnQubGVuZ3RoO3QrKyl7bGV0IHI9dGhpcy5jb250ZW50W3RdO2UocixuLHQpLG4rPXIubm9kZVNpemV9fWZpbmREaWZmU3RhcnQoZSx0PTApe3JldHVybiBmaW5kRGlmZlN0YXJ0KHRoaXMsZSx0KX1maW5kRGlmZkVuZChlLHQ9dGhpcy5zaXplLG49ZS5zaXplKXtyZXR1cm4gZmluZERpZmZFbmQodGhpcyxlLHQsbil9ZmluZEluZGV4KGUpe2lmKDA9PWUpcmV0dXJuIHJldEluZGV4KDAsZSk7aWYoZT09dGhpcy5zaXplKXJldHVybiByZXRJbmRleCh0aGlzLmNvbnRlbnQubGVuZ3RoLGUpO2lmKGU+dGhpcy5zaXplfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFBvc2l0aW9uICR7ZX0gb3V0c2lkZSBvZiBmcmFnbWVudCAoJHt0aGlzfSlgKTtmb3IobGV0IHQ9MCxuPTA7O3QrKyl7bGV0IHI9bit0aGlzLmNoaWxkKHQpLm5vZGVTaXplO2lmKHI+PWUpcmV0dXJuIHI9PWU/cmV0SW5kZXgodCsxLHIpOnJldEluZGV4KHQsbik7bj1yfX10b1N0cmluZygpe3JldHVybiI8Iit0aGlzLnRvU3RyaW5nSW5uZXIoKSsiPiJ9dG9TdHJpbmdJbm5lcigpe3JldHVybiB0aGlzLmNvbnRlbnQuam9pbigiLCAiKX10b0pTT04oKXtyZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aD90aGlzLmNvbnRlbnQubWFwKGU9PmUudG9KU09OKCkpOm51bGx9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpcmV0dXJuIEZyYWdtZW50LmVtcHR5O2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBGcmFnbWVudC5mcm9tSlNPTiIpO3JldHVybiBuZXcgRnJhZ21lbnQodC5tYXAoZS5ub2RlRnJvbUpTT04pKX1zdGF0aWMgZnJvbUFycmF5KGUpe2lmKCFlLmxlbmd0aClyZXR1cm4gRnJhZ21lbnQuZW1wdHk7bGV0IHQsbj0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbz1lW3JdO24rPW8ubm9kZVNpemUsciYmby5pc1RleHQmJmVbci0xXS5zYW1lTWFya3VwKG8pPyh0fHwodD1lLnNsaWNlKDAscikpLHRbdC5sZW5ndGgtMV09by53aXRoVGV4dCh0W3QubGVuZ3RoLTFdLnRleHQrby50ZXh0KSk6dCYmdC5wdXNoKG8pfXJldHVybiBuZXcgRnJhZ21lbnQodHx8ZSxuKX1zdGF0aWMgZnJvbShlKXtpZighZSlyZXR1cm4gRnJhZ21lbnQuZW1wdHk7aWYoZSBpbnN0YW5jZW9mIEZyYWdtZW50KXJldHVybiBlO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHRoaXMuZnJvbUFycmF5KGUpO2lmKGUuYXR0cnMpcmV0dXJuIG5ldyBGcmFnbWVudChbZV0sZS5ub2RlU2l6ZSk7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNhbiBub3QgY29udmVydCAiK2UrIiB0byBhIEZyYWdtZW50IisoZS5ub2Rlc0JldHdlZW4/IiAobG9va3MgbGlrZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBwcm9zZW1pcnJvci1tb2RlbCB3ZXJlIGxvYWRlZCkiOiIiKSl9fUZyYWdtZW50LmVtcHR5PW5ldyBGcmFnbWVudChbXSwwKTtjb25zdCBzZT17aW5kZXg6MCxvZmZzZXQ6MH07ZnVuY3Rpb24gcmV0SW5kZXgoZSx0KXtyZXR1cm4gc2UuaW5kZXg9ZSxzZS5vZmZzZXQ9dCxzZX1mdW5jdGlvbiBjb21wYXJlRGVlcChlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKCFlfHwib2JqZWN0IiE9dHlwZW9mIGV8fCF0fHwib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuITE7bGV0IG49QXJyYXkuaXNBcnJheShlKTtpZihBcnJheS5pc0FycmF5KHQpIT1uKXJldHVybiExO2lmKG4pe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylpZighY29tcGFyZURlZXAoZVtuXSx0W25dKSlyZXR1cm4hMX1lbHNle2ZvcihsZXQgbiBpbiBlKWlmKCEobiBpbiB0KXx8IWNvbXBhcmVEZWVwKGVbbl0sdFtuXSkpcmV0dXJuITE7Zm9yKGxldCBuIGluIHQpaWYoIShuIGluIGUpKXJldHVybiExfXJldHVybiEwfWxldCBsZT1jbGFzcyBNYXJre2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWUsdGhpcy5hdHRycz10fWFkZFRvU2V0KGUpe2xldCB0LG49ITE7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2xldCBvPWVbcl07aWYodGhpcy5lcShvKSlyZXR1cm4gZTtpZih0aGlzLnR5cGUuZXhjbHVkZXMoby50eXBlKSl0fHwodD1lLnNsaWNlKDAscikpO2Vsc2V7aWYoby50eXBlLmV4Y2x1ZGVzKHRoaXMudHlwZSkpcmV0dXJuIGU7IW4mJm8udHlwZS5yYW5rPnRoaXMudHlwZS5yYW5rJiYodHx8KHQ9ZS5zbGljZSgwLHIpKSx0LnB1c2godGhpcyksbj0hMCksdCYmdC5wdXNoKG8pfX1yZXR1cm4gdHx8KHQ9ZS5zbGljZSgpKSxufHx0LnB1c2godGhpcyksdH1yZW1vdmVGcm9tU2V0KGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuZXEoZVt0XSkpcmV0dXJuIGUuc2xpY2UoMCx0KS5jb25jYXQoZS5zbGljZSh0KzEpKTtyZXR1cm4gZX1pc0luU2V0KGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuZXEoZVt0XSkpcmV0dXJuITA7cmV0dXJuITF9ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fHRoaXMudHlwZT09ZS50eXBlJiZjb21wYXJlRGVlcCh0aGlzLmF0dHJzLGUuYXR0cnMpfXRvSlNPTigpe2xldCBlPXt0eXBlOnRoaXMudHlwZS5uYW1lfTtmb3IobGV0IHQgaW4gdGhpcy5hdHRycyl7ZS5hdHRycz10aGlzLmF0dHJzO2JyZWFrfXJldHVybiBlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBNYXJrLmZyb21KU09OIik7bGV0IG49ZS5tYXJrc1t0LnR5cGVdO2lmKCFuKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSBpcyBubyBtYXJrIHR5cGUgJHt0LnR5cGV9IGluIHRoaXMgc2NoZW1hYCk7bGV0IHI9bi5jcmVhdGUodC5hdHRycyk7cmV0dXJuIG4uY2hlY2tBdHRycyhyLmF0dHJzKSxyfXN0YXRpYyBzYW1lU2V0KGUsdCl7aWYoZT09dClyZXR1cm4hMDtpZihlLmxlbmd0aCE9dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYoIWVbbl0uZXEodFtuXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIHNldEZyb20oZSl7aWYoIWV8fEFycmF5LmlzQXJyYXkoZSkmJjA9PWUubGVuZ3RoKXJldHVybiBNYXJrLm5vbmU7aWYoZSBpbnN0YW5jZW9mIE1hcmspcmV0dXJuW2VdO2xldCB0PWUuc2xpY2UoKTtyZXR1cm4gdC5zb3J0KChlLHQpPT5lLnR5cGUucmFuay10LnR5cGUucmFuayksdH19O2xlLm5vbmU9W107Y2xhc3MgUmVwbGFjZUVycm9yIGV4dGVuZHMgRXJyb3J7fWNsYXNzIFNsaWNle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmNvbnRlbnQ9ZSx0aGlzLm9wZW5TdGFydD10LHRoaXMub3BlbkVuZD1ufWdldCBzaXplKCl7cmV0dXJuIHRoaXMuY29udGVudC5zaXplLXRoaXMub3BlblN0YXJ0LXRoaXMub3BlbkVuZH1pbnNlcnRBdChlLHQpe2xldCBuPWluc2VydEludG8odGhpcy5jb250ZW50LGUrdGhpcy5vcGVuU3RhcnQsdCk7cmV0dXJuIG4mJm5ldyBTbGljZShuLHRoaXMub3BlblN0YXJ0LHRoaXMub3BlbkVuZCl9cmVtb3ZlQmV0d2VlbihlLHQpe3JldHVybiBuZXcgU2xpY2UocmVtb3ZlUmFuZ2UodGhpcy5jb250ZW50LGUrdGhpcy5vcGVuU3RhcnQsdCt0aGlzLm9wZW5TdGFydCksdGhpcy5vcGVuU3RhcnQsdGhpcy5vcGVuRW5kKX1lcShlKXtyZXR1cm4gdGhpcy5jb250ZW50LmVxKGUuY29udGVudCkmJnRoaXMub3BlblN0YXJ0PT1lLm9wZW5TdGFydCYmdGhpcy5vcGVuRW5kPT1lLm9wZW5FbmR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jb250ZW50KyIoIit0aGlzLm9wZW5TdGFydCsiLCIrdGhpcy5vcGVuRW5kKyIpIn10b0pTT04oKXtpZighdGhpcy5jb250ZW50LnNpemUpcmV0dXJuIG51bGw7bGV0IGU9e2NvbnRlbnQ6dGhpcy5jb250ZW50LnRvSlNPTigpfTtyZXR1cm4gdGhpcy5vcGVuU3RhcnQ+MCYmKGUub3BlblN0YXJ0PXRoaXMub3BlblN0YXJ0KSx0aGlzLm9wZW5FbmQ+MCYmKGUub3BlbkVuZD10aGlzLm9wZW5FbmQpLGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpcmV0dXJuIFNsaWNlLmVtcHR5O2xldCBuPXQub3BlblN0YXJ0fHwwLHI9dC5vcGVuRW5kfHwwO2lmKCJudW1iZXIiIT10eXBlb2Ygbnx8Im51bWJlciIhPXR5cGVvZiByKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBTbGljZS5mcm9tSlNPTiIpO3JldHVybiBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbUpTT04oZSx0LmNvbnRlbnQpLG4scil9c3RhdGljIG1heE9wZW4oZSx0PSEwKXtsZXQgbj0wLHI9MDtmb3IobGV0IHI9ZS5maXJzdENoaWxkO3ImJiFyLmlzTGVhZiYmKHR8fCFyLnR5cGUuc3BlYy5pc29sYXRpbmcpO3I9ci5maXJzdENoaWxkKW4rKztmb3IobGV0IG49ZS5sYXN0Q2hpbGQ7biYmIW4uaXNMZWFmJiYodHx8IW4udHlwZS5zcGVjLmlzb2xhdGluZyk7bj1uLmxhc3RDaGlsZClyKys7cmV0dXJuIG5ldyBTbGljZShlLG4scil9fWZ1bmN0aW9uIHJlbW92ZVJhbmdlKGUsdCxuKXtsZXR7aW5kZXg6cixvZmZzZXQ6b309ZS5maW5kSW5kZXgodCksaT1lLm1heWJlQ2hpbGQocikse2luZGV4OnMsb2Zmc2V0Omx9PWUuZmluZEluZGV4KG4pO2lmKG89PXR8fGkuaXNUZXh0KXtpZihsIT1uJiYhZS5jaGlsZChzKS5pc1RleHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJlbW92aW5nIG5vbi1mbGF0IHJhbmdlIik7cmV0dXJuIGUuY3V0KDAsdCkuYXBwZW5kKGUuY3V0KG4pKX1pZihyIT1zKXRocm93IG5ldyBSYW5nZUVycm9yKCJSZW1vdmluZyBub24tZmxhdCByYW5nZSIpO3JldHVybiBlLnJlcGxhY2VDaGlsZChyLGkuY29weShyZW1vdmVSYW5nZShpLmNvbnRlbnQsdC1vLTEsbi1vLTEpKSl9ZnVuY3Rpb24gaW5zZXJ0SW50byhlLHQsbixyKXtsZXR7aW5kZXg6byxvZmZzZXQ6aX09ZS5maW5kSW5kZXgodCkscz1lLm1heWJlQ2hpbGQobyk7aWYoaT09dHx8cy5pc1RleHQpcmV0dXJuIHImJiFyLmNhblJlcGxhY2UobyxvLG4pP251bGw6ZS5jdXQoMCx0KS5hcHBlbmQobikuYXBwZW5kKGUuY3V0KHQpKTtsZXQgbD1pbnNlcnRJbnRvKHMuY29udGVudCx0LWktMSxuLHMpO3JldHVybiBsJiZlLnJlcGxhY2VDaGlsZChvLHMuY29weShsKSl9ZnVuY3Rpb24gcmVwbGFjZShlLHQsbil7aWYobi5vcGVuU3RhcnQ+ZS5kZXB0aCl0aHJvdyBuZXcgUmVwbGFjZUVycm9yKCJJbnNlcnRlZCBjb250ZW50IGRlZXBlciB0aGFuIGluc2VydGlvbiBwb3NpdGlvbiIpO2lmKGUuZGVwdGgtbi5vcGVuU3RhcnQhPXQuZGVwdGgtbi5vcGVuRW5kKXRocm93IG5ldyBSZXBsYWNlRXJyb3IoIkluY29uc2lzdGVudCBvcGVuIGRlcHRocyIpO3JldHVybiByZXBsYWNlT3V0ZXIoZSx0LG4sMCl9ZnVuY3Rpb24gcmVwbGFjZU91dGVyKGUsdCxuLHIpe2xldCBvPWUuaW5kZXgociksaT1lLm5vZGUocik7aWYobz09dC5pbmRleChyKSYmcjxlLmRlcHRoLW4ub3BlblN0YXJ0KXtsZXQgcz1yZXBsYWNlT3V0ZXIoZSx0LG4scisxKTtyZXR1cm4gaS5jb3B5KGkuY29udGVudC5yZXBsYWNlQ2hpbGQobyxzKSl9aWYobi5jb250ZW50LnNpemUpe2lmKG4ub3BlblN0YXJ0fHxuLm9wZW5FbmR8fGUuZGVwdGghPXJ8fHQuZGVwdGghPXIpe2xldHtzdGFydDpvLGVuZDpzfT1mdW5jdGlvbihlLHQpe2xldCBuPXQuZGVwdGgtZS5vcGVuU3RhcnQscj10Lm5vZGUobikuY29weShlLmNvbnRlbnQpO2ZvcihsZXQgZT1uLTE7ZT49MDtlLS0pcj10Lm5vZGUoZSkuY29weShGcmFnbWVudC5mcm9tKHIpKTtyZXR1cm57c3RhcnQ6ci5yZXNvbHZlTm9DYWNoZShlLm9wZW5TdGFydCtuKSxlbmQ6ci5yZXNvbHZlTm9DYWNoZShyLmNvbnRlbnQuc2l6ZS1lLm9wZW5FbmQtbil9fShuLGUpO3JldHVybiBjbG9zZShpLHJlcGxhY2VUaHJlZVdheShlLG8scyx0LHIpKX17bGV0IHI9ZS5wYXJlbnQsbz1yLmNvbnRlbnQ7cmV0dXJuIGNsb3NlKHIsby5jdXQoMCxlLnBhcmVudE9mZnNldCkuYXBwZW5kKG4uY29udGVudCkuYXBwZW5kKG8uY3V0KHQucGFyZW50T2Zmc2V0KSkpfX1yZXR1cm4gY2xvc2UoaSxyZXBsYWNlVHdvV2F5KGUsdCxyKSl9ZnVuY3Rpb24gY2hlY2tKb2luKGUsdCl7aWYoIXQudHlwZS5jb21wYXRpYmxlQ29udGVudChlLnR5cGUpKXRocm93IG5ldyBSZXBsYWNlRXJyb3IoIkNhbm5vdCBqb2luICIrdC50eXBlLm5hbWUrIiBvbnRvICIrZS50eXBlLm5hbWUpfWZ1bmN0aW9uIGpvaW5hYmxlJDEoZSx0LG4pe2xldCByPWUubm9kZShuKTtyZXR1cm4gY2hlY2tKb2luKHIsdC5ub2RlKG4pKSxyfWZ1bmN0aW9uIGFkZE5vZGUoZSx0KXtsZXQgbj10Lmxlbmd0aC0xO24+PTAmJmUuaXNUZXh0JiZlLnNhbWVNYXJrdXAodFtuXSk/dFtuXT1lLndpdGhUZXh0KHRbbl0udGV4dCtlLnRleHQpOnQucHVzaChlKX1mdW5jdGlvbiBhZGRSYW5nZShlLHQsbixyKXtsZXQgbz0odHx8ZSkubm9kZShuKSxpPTAscz10P3QuaW5kZXgobik6by5jaGlsZENvdW50O2UmJihpPWUuaW5kZXgobiksZS5kZXB0aD5uP2krKzplLnRleHRPZmZzZXQmJihhZGROb2RlKGUubm9kZUFmdGVyLHIpLGkrKykpO2ZvcihsZXQgZT1pO2U8cztlKyspYWRkTm9kZShvLmNoaWxkKGUpLHIpO3QmJnQuZGVwdGg9PW4mJnQudGV4dE9mZnNldCYmYWRkTm9kZSh0Lm5vZGVCZWZvcmUscil9ZnVuY3Rpb24gY2xvc2UoZSx0KXtyZXR1cm4gZS50eXBlLmNoZWNrQ29udGVudCh0KSxlLmNvcHkodCl9ZnVuY3Rpb24gcmVwbGFjZVRocmVlV2F5KGUsdCxuLHIsbyl7bGV0IGk9ZS5kZXB0aD5vJiZqb2luYWJsZSQxKGUsdCxvKzEpLHM9ci5kZXB0aD5vJiZqb2luYWJsZSQxKG4scixvKzEpLGw9W107cmV0dXJuIGFkZFJhbmdlKG51bGwsZSxvLGwpLGkmJnMmJnQuaW5kZXgobyk9PW4uaW5kZXgobyk/KGNoZWNrSm9pbihpLHMpLGFkZE5vZGUoY2xvc2UoaSxyZXBsYWNlVGhyZWVXYXkoZSx0LG4scixvKzEpKSxsKSk6KGkmJmFkZE5vZGUoY2xvc2UoaSxyZXBsYWNlVHdvV2F5KGUsdCxvKzEpKSxsKSxhZGRSYW5nZSh0LG4sbyxsKSxzJiZhZGROb2RlKGNsb3NlKHMscmVwbGFjZVR3b1dheShuLHIsbysxKSksbCkpLGFkZFJhbmdlKHIsbnVsbCxvLGwpLG5ldyBGcmFnbWVudChsKX1mdW5jdGlvbiByZXBsYWNlVHdvV2F5KGUsdCxuKXtsZXQgcj1bXTtpZihhZGRSYW5nZShudWxsLGUsbixyKSxlLmRlcHRoPm4pe2FkZE5vZGUoY2xvc2Uoam9pbmFibGUkMShlLHQsbisxKSxyZXBsYWNlVHdvV2F5KGUsdCxuKzEpKSxyKX1yZXR1cm4gYWRkUmFuZ2UodCxudWxsLG4sciksbmV3IEZyYWdtZW50KHIpfVNsaWNlLmVtcHR5PW5ldyBTbGljZShGcmFnbWVudC5lbXB0eSwwLDApO2NsYXNzIFJlc29sdmVkUG9ze2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnBvcz1lLHRoaXMucGF0aD10LHRoaXMucGFyZW50T2Zmc2V0PW4sdGhpcy5kZXB0aD10Lmxlbmd0aC8zLTF9cmVzb2x2ZURlcHRoKGUpe3JldHVybiBudWxsPT1lP3RoaXMuZGVwdGg6ZTwwP3RoaXMuZGVwdGgrZTplfWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5ub2RlKHRoaXMuZGVwdGgpfWdldCBkb2MoKXtyZXR1cm4gdGhpcy5ub2RlKDApfW5vZGUoZSl7cmV0dXJuIHRoaXMucGF0aFszKnRoaXMucmVzb2x2ZURlcHRoKGUpXX1pbmRleChlKXtyZXR1cm4gdGhpcy5wYXRoWzMqdGhpcy5yZXNvbHZlRGVwdGgoZSkrMV19aW5kZXhBZnRlcihlKXtyZXR1cm4gZT10aGlzLnJlc29sdmVEZXB0aChlKSx0aGlzLmluZGV4KGUpKyhlIT10aGlzLmRlcHRofHx0aGlzLnRleHRPZmZzZXQ/MTowKX1zdGFydChlKXtyZXR1cm4gMD09KGU9dGhpcy5yZXNvbHZlRGVwdGgoZSkpPzA6dGhpcy5wYXRoWzMqZS0xXSsxfWVuZChlKXtyZXR1cm4gZT10aGlzLnJlc29sdmVEZXB0aChlKSx0aGlzLnN0YXJ0KGUpK3RoaXMubm9kZShlKS5jb250ZW50LnNpemV9YmVmb3JlKGUpe2lmKCEoZT10aGlzLnJlc29sdmVEZXB0aChlKSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRoZXJlIGlzIG5vIHBvc2l0aW9uIGJlZm9yZSB0aGUgdG9wLWxldmVsIG5vZGUiKTtyZXR1cm4gZT09dGhpcy5kZXB0aCsxP3RoaXMucG9zOnRoaXMucGF0aFszKmUtMV19YWZ0ZXIoZSl7aWYoIShlPXRoaXMucmVzb2x2ZURlcHRoKGUpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlcmUgaXMgbm8gcG9zaXRpb24gYWZ0ZXIgdGhlIHRvcC1sZXZlbCBub2RlIik7cmV0dXJuIGU9PXRoaXMuZGVwdGgrMT90aGlzLnBvczp0aGlzLnBhdGhbMyplLTFdK3RoaXMucGF0aFszKmVdLm5vZGVTaXplfWdldCB0ZXh0T2Zmc2V0KCl7cmV0dXJuIHRoaXMucG9zLXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdfWdldCBub2RlQWZ0ZXIoKXtsZXQgZT10aGlzLnBhcmVudCx0PXRoaXMuaW5kZXgodGhpcy5kZXB0aCk7aWYodD09ZS5jaGlsZENvdW50KXJldHVybiBudWxsO2xldCBuPXRoaXMucG9zLXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdLHI9ZS5jaGlsZCh0KTtyZXR1cm4gbj9lLmNoaWxkKHQpLmN1dChuKTpyfWdldCBub2RlQmVmb3JlKCl7bGV0IGU9dGhpcy5pbmRleCh0aGlzLmRlcHRoKSx0PXRoaXMucG9zLXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdO3JldHVybiB0P3RoaXMucGFyZW50LmNoaWxkKGUpLmN1dCgwLHQpOjA9PWU/bnVsbDp0aGlzLnBhcmVudC5jaGlsZChlLTEpfXBvc0F0SW5kZXgoZSx0KXt0PXRoaXMucmVzb2x2ZURlcHRoKHQpO2xldCBuPXRoaXMucGF0aFszKnRdLHI9MD09dD8wOnRoaXMucGF0aFszKnQtMV0rMTtmb3IobGV0IHQ9MDt0PGU7dCsrKXIrPW4uY2hpbGQodCkubm9kZVNpemU7cmV0dXJuIHJ9bWFya3MoKXtsZXQgZT10aGlzLnBhcmVudCx0PXRoaXMuaW5kZXgoKTtpZigwPT1lLmNvbnRlbnQuc2l6ZSlyZXR1cm4gbGUubm9uZTtpZih0aGlzLnRleHRPZmZzZXQpcmV0dXJuIGUuY2hpbGQodCkubWFya3M7bGV0IG49ZS5tYXliZUNoaWxkKHQtMSkscj1lLm1heWJlQ2hpbGQodCk7aWYoIW4pe2xldCBlPW47bj1yLHI9ZX1sZXQgbz1uLm1hcmtzO2Zvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKSExIT09b1tpXS50eXBlLnNwZWMuaW5jbHVzaXZlfHxyJiZvW2ldLmlzSW5TZXQoci5tYXJrcyl8fChvPW9baS0tXS5yZW1vdmVGcm9tU2V0KG8pKTtyZXR1cm4gb31tYXJrc0Fjcm9zcyhlKXtsZXQgdD10aGlzLnBhcmVudC5tYXliZUNoaWxkKHRoaXMuaW5kZXgoKSk7aWYoIXR8fCF0LmlzSW5saW5lKXJldHVybiBudWxsO2xldCBuPXQubWFya3Mscj1lLnBhcmVudC5tYXliZUNoaWxkKGUuaW5kZXgoKSk7Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspITEhPT1uW29dLnR5cGUuc3BlYy5pbmNsdXNpdmV8fHImJm5bb10uaXNJblNldChyLm1hcmtzKXx8KG49bltvLS1dLnJlbW92ZUZyb21TZXQobikpO3JldHVybiBufXNoYXJlZERlcHRoKGUpe2ZvcihsZXQgdD10aGlzLmRlcHRoO3Q+MDt0LS0paWYodGhpcy5zdGFydCh0KTw9ZSYmdGhpcy5lbmQodCk+PWUpcmV0dXJuIHQ7cmV0dXJuIDB9YmxvY2tSYW5nZShlPXRoaXMsdCl7aWYoZS5wb3M8dGhpcy5wb3MpcmV0dXJuIGUuYmxvY2tSYW5nZSh0aGlzKTtmb3IobGV0IG49dGhpcy5kZXB0aC0odGhpcy5wYXJlbnQuaW5saW5lQ29udGVudHx8dGhpcy5wb3M9PWUucG9zPzE6MCk7bj49MDtuLS0paWYoZS5wb3M8PXRoaXMuZW5kKG4pJiYoIXR8fHQodGhpcy5ub2RlKG4pKSkpcmV0dXJuIG5ldyBOb2RlUmFuZ2UodGhpcyxlLG4pO3JldHVybiBudWxsfXNhbWVQYXJlbnQoZSl7cmV0dXJuIHRoaXMucG9zLXRoaXMucGFyZW50T2Zmc2V0PT1lLnBvcy1lLnBhcmVudE9mZnNldH1tYXgoZSl7cmV0dXJuIGUucG9zPnRoaXMucG9zP2U6dGhpc31taW4oZSl7cmV0dXJuIGUucG9zPHRoaXMucG9zP2U6dGhpc310b1N0cmluZygpe2xldCBlPSIiO2ZvcihsZXQgdD0xO3Q8PXRoaXMuZGVwdGg7dCsrKWUrPShlPyIvIjoiIikrdGhpcy5ub2RlKHQpLnR5cGUubmFtZSsiXyIrdGhpcy5pbmRleCh0LTEpO3JldHVybiBlKyI6Iit0aGlzLnBhcmVudE9mZnNldH1zdGF0aWMgcmVzb2x2ZShlLHQpe2lmKCEodD49MCYmdDw9ZS5jb250ZW50LnNpemUpKXRocm93IG5ldyBSYW5nZUVycm9yKCJQb3NpdGlvbiAiK3QrIiBvdXQgb2YgcmFuZ2UiKTtsZXQgbj1bXSxyPTAsbz10O2ZvcihsZXQgdD1lOzspe2xldHtpbmRleDplLG9mZnNldDppfT10LmNvbnRlbnQuZmluZEluZGV4KG8pLHM9by1pO2lmKG4ucHVzaCh0LGUscitpKSwhcylicmVhaztpZih0PXQuY2hpbGQoZSksdC5pc1RleHQpYnJlYWs7bz1zLTEscis9aSsxfXJldHVybiBuZXcgUmVzb2x2ZWRQb3ModCxuLG8pfXN0YXRpYyByZXNvbHZlQ2FjaGVkKGUsdCl7bGV0IG49Y2UuZ2V0KGUpO2lmKG4pZm9yKGxldCBlPTA7ZTxuLmVsdHMubGVuZ3RoO2UrKyl7bGV0IHI9bi5lbHRzW2VdO2lmKHIucG9zPT10KXJldHVybiByfWVsc2UgY2Uuc2V0KGUsbj1uZXcgUmVzb2x2ZUNhY2hlKTtsZXQgcj1uLmVsdHNbbi5pXT1SZXNvbHZlZFBvcy5yZXNvbHZlKGUsdCk7cmV0dXJuIG4uaT0obi5pKzEpJWFlLHJ9fWNsYXNzIFJlc29sdmVDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuZWx0cz1bXSx0aGlzLmk9MH19Y29uc3QgYWU9MTIsY2U9bmV3IFdlYWtNYXA7Y2xhc3MgTm9kZVJhbmdle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLiRmcm9tPWUsdGhpcy4kdG89dCx0aGlzLmRlcHRoPW59Z2V0IHN0YXJ0KCl7cmV0dXJuIHRoaXMuJGZyb20uYmVmb3JlKHRoaXMuZGVwdGgrMSl9Z2V0IGVuZCgpe3JldHVybiB0aGlzLiR0by5hZnRlcih0aGlzLmRlcHRoKzEpfWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy4kZnJvbS5ub2RlKHRoaXMuZGVwdGgpfWdldCBzdGFydEluZGV4KCl7cmV0dXJuIHRoaXMuJGZyb20uaW5kZXgodGhpcy5kZXB0aCl9Z2V0IGVuZEluZGV4KCl7cmV0dXJuIHRoaXMuJHRvLmluZGV4QWZ0ZXIodGhpcy5kZXB0aCl9fWNvbnN0IGRlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTm9kZXtjb25zdHJ1Y3RvcihlLHQsbixyPWxlLm5vbmUpe3RoaXMudHlwZT1lLHRoaXMuYXR0cnM9dCx0aGlzLm1hcmtzPXIsdGhpcy5jb250ZW50PW58fEZyYWdtZW50LmVtcHR5fWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmNvbnRlbnQuY29udGVudH1nZXQgbm9kZVNpemUoKXtyZXR1cm4gdGhpcy5pc0xlYWY/MToyK3RoaXMuY29udGVudC5zaXplfWdldCBjaGlsZENvdW50KCl7cmV0dXJuIHRoaXMuY29udGVudC5jaGlsZENvdW50fWNoaWxkKGUpe3JldHVybiB0aGlzLmNvbnRlbnQuY2hpbGQoZSl9bWF5YmVDaGlsZChlKXtyZXR1cm4gdGhpcy5jb250ZW50Lm1heWJlQ2hpbGQoZSl9Zm9yRWFjaChlKXt0aGlzLmNvbnRlbnQuZm9yRWFjaChlKX1ub2Rlc0JldHdlZW4oZSx0LG4scj0wKXt0aGlzLmNvbnRlbnQubm9kZXNCZXR3ZWVuKGUsdCxuLHIsdGhpcyl9ZGVzY2VuZGFudHMoZSl7dGhpcy5ub2Rlc0JldHdlZW4oMCx0aGlzLmNvbnRlbnQuc2l6ZSxlKX1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5pc0xlYWYmJnRoaXMudHlwZS5zcGVjLmxlYWZUZXh0P3RoaXMudHlwZS5zcGVjLmxlYWZUZXh0KHRoaXMpOnRoaXMudGV4dEJldHdlZW4oMCx0aGlzLmNvbnRlbnQuc2l6ZSwiIil9dGV4dEJldHdlZW4oZSx0LG4scil7cmV0dXJuIHRoaXMuY29udGVudC50ZXh0QmV0d2VlbihlLHQsbixyKX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNvbnRlbnQuZmlyc3RDaGlsZH1nZXQgbGFzdENoaWxkKCl7cmV0dXJuIHRoaXMuY29udGVudC5sYXN0Q2hpbGR9ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fHRoaXMuc2FtZU1hcmt1cChlKSYmdGhpcy5jb250ZW50LmVxKGUuY29udGVudCl9c2FtZU1hcmt1cChlKXtyZXR1cm4gdGhpcy5oYXNNYXJrdXAoZS50eXBlLGUuYXR0cnMsZS5tYXJrcyl9aGFzTWFya3VwKGUsdCxuKXtyZXR1cm4gdGhpcy50eXBlPT1lJiZjb21wYXJlRGVlcCh0aGlzLmF0dHJzLHR8fGUuZGVmYXVsdEF0dHJzfHxkZSkmJmxlLnNhbWVTZXQodGhpcy5tYXJrcyxufHxsZS5ub25lKX1jb3B5KGU9bnVsbCl7cmV0dXJuIGU9PXRoaXMuY29udGVudD90aGlzOm5ldyBOb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9bWFyayhlKXtyZXR1cm4gZT09dGhpcy5tYXJrcz90aGlzOm5ldyBOb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLHRoaXMuY29udGVudCxlKX1jdXQoZSx0PXRoaXMuY29udGVudC5zaXplKXtyZXR1cm4gMD09ZSYmdD09dGhpcy5jb250ZW50LnNpemU/dGhpczp0aGlzLmNvcHkodGhpcy5jb250ZW50LmN1dChlLHQpKX1zbGljZShlLHQ9dGhpcy5jb250ZW50LnNpemUsbj0hMSl7aWYoZT09dClyZXR1cm4gU2xpY2UuZW1wdHk7bGV0IHI9dGhpcy5yZXNvbHZlKGUpLG89dGhpcy5yZXNvbHZlKHQpLGk9bj8wOnIuc2hhcmVkRGVwdGgodCkscz1yLnN0YXJ0KGkpLGw9ci5ub2RlKGkpLmNvbnRlbnQuY3V0KHIucG9zLXMsby5wb3Mtcyk7cmV0dXJuIG5ldyBTbGljZShsLHIuZGVwdGgtaSxvLmRlcHRoLWkpfXJlcGxhY2UoZSx0LG4pe3JldHVybiByZXBsYWNlKHRoaXMucmVzb2x2ZShlKSx0aGlzLnJlc29sdmUodCksbil9bm9kZUF0KGUpe2ZvcihsZXQgdD10aGlzOzspe2xldHtpbmRleDpuLG9mZnNldDpyfT10LmNvbnRlbnQuZmluZEluZGV4KGUpO2lmKHQ9dC5tYXliZUNoaWxkKG4pLCF0KXJldHVybiBudWxsO2lmKHI9PWV8fHQuaXNUZXh0KXJldHVybiB0O2UtPXIrMX19Y2hpbGRBZnRlcihlKXtsZXR7aW5kZXg6dCxvZmZzZXQ6bn09dGhpcy5jb250ZW50LmZpbmRJbmRleChlKTtyZXR1cm57bm9kZTp0aGlzLmNvbnRlbnQubWF5YmVDaGlsZCh0KSxpbmRleDp0LG9mZnNldDpufX1jaGlsZEJlZm9yZShlKXtpZigwPT1lKXJldHVybntub2RlOm51bGwsaW5kZXg6MCxvZmZzZXQ6MH07bGV0e2luZGV4OnQsb2Zmc2V0Om59PXRoaXMuY29udGVudC5maW5kSW5kZXgoZSk7aWYobjxlKXJldHVybntub2RlOnRoaXMuY29udGVudC5jaGlsZCh0KSxpbmRleDp0LG9mZnNldDpufTtsZXQgcj10aGlzLmNvbnRlbnQuY2hpbGQodC0xKTtyZXR1cm57bm9kZTpyLGluZGV4OnQtMSxvZmZzZXQ6bi1yLm5vZGVTaXplfX1yZXNvbHZlKGUpe3JldHVybiBSZXNvbHZlZFBvcy5yZXNvbHZlQ2FjaGVkKHRoaXMsZSl9cmVzb2x2ZU5vQ2FjaGUoZSl7cmV0dXJuIFJlc29sdmVkUG9zLnJlc29sdmUodGhpcyxlKX1yYW5nZUhhc01hcmsoZSx0LG4pe2xldCByPSExO3JldHVybiB0PmUmJnRoaXMubm9kZXNCZXR3ZWVuKGUsdCxlPT4obi5pc0luU2V0KGUubWFya3MpJiYocj0hMCksIXIpKSxyfWdldCBpc0Jsb2NrKCl7cmV0dXJuIHRoaXMudHlwZS5pc0Jsb2NrfWdldCBpc1RleHRibG9jaygpe3JldHVybiB0aGlzLnR5cGUuaXNUZXh0YmxvY2t9Z2V0IGlubGluZUNvbnRlbnQoKXtyZXR1cm4gdGhpcy50eXBlLmlubGluZUNvbnRlbnR9Z2V0IGlzSW5saW5lKCl7cmV0dXJuIHRoaXMudHlwZS5pc0lubGluZX1nZXQgaXNUZXh0KCl7cmV0dXJuIHRoaXMudHlwZS5pc1RleHR9Z2V0IGlzTGVhZigpe3JldHVybiB0aGlzLnR5cGUuaXNMZWFmfWdldCBpc0F0b20oKXtyZXR1cm4gdGhpcy50eXBlLmlzQXRvbX10b1N0cmluZygpe2lmKHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcpcmV0dXJuIHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcodGhpcyk7bGV0IGU9dGhpcy50eXBlLm5hbWU7cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZSs9IigiK3RoaXMuY29udGVudC50b1N0cmluZ0lubmVyKCkrIikiKSx3cmFwTWFya3ModGhpcy5tYXJrcyxlKX1jb250ZW50TWF0Y2hBdChlKXtsZXQgdD10aGlzLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQodGhpcy5jb250ZW50LDAsZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDYWxsZWQgY29udGVudE1hdGNoQXQgb24gYSBub2RlIHdpdGggaW52YWxpZCBjb250ZW50Iik7cmV0dXJuIHR9Y2FuUmVwbGFjZShlLHQsbj1GcmFnbWVudC5lbXB0eSxyPTAsbz1uLmNoaWxkQ291bnQpe2xldCBpPXRoaXMuY29udGVudE1hdGNoQXQoZSkubWF0Y2hGcmFnbWVudChuLHIsbykscz1pJiZpLm1hdGNoRnJhZ21lbnQodGhpcy5jb250ZW50LHQpO2lmKCFzfHwhcy52YWxpZEVuZClyZXR1cm4hMTtmb3IobGV0IGU9cjtlPG87ZSsrKWlmKCF0aGlzLnR5cGUuYWxsb3dzTWFya3Mobi5jaGlsZChlKS5tYXJrcykpcmV0dXJuITE7cmV0dXJuITB9Y2FuUmVwbGFjZVdpdGgoZSx0LG4scil7aWYociYmIXRoaXMudHlwZS5hbGxvd3NNYXJrcyhyKSlyZXR1cm4hMTtsZXQgbz10aGlzLmNvbnRlbnRNYXRjaEF0KGUpLm1hdGNoVHlwZShuKSxpPW8mJm8ubWF0Y2hGcmFnbWVudCh0aGlzLmNvbnRlbnQsdCk7cmV0dXJuISFpJiZpLnZhbGlkRW5kfWNhbkFwcGVuZChlKXtyZXR1cm4gZS5jb250ZW50LnNpemU/dGhpcy5jYW5SZXBsYWNlKHRoaXMuY2hpbGRDb3VudCx0aGlzLmNoaWxkQ291bnQsZS5jb250ZW50KTp0aGlzLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQoZS50eXBlKX1jaGVjaygpe3RoaXMudHlwZS5jaGVja0NvbnRlbnQodGhpcy5jb250ZW50KSx0aGlzLnR5cGUuY2hlY2tBdHRycyh0aGlzLmF0dHJzKTtsZXQgZT1sZS5ub25lO2ZvcihsZXQgdD0wO3Q8dGhpcy5tYXJrcy5sZW5ndGg7dCsrKXtsZXQgbj10aGlzLm1hcmtzW3RdO24udHlwZS5jaGVja0F0dHJzKG4uYXR0cnMpLGU9bi5hZGRUb1NldChlKX1pZighbGUuc2FtZVNldChlLHRoaXMubWFya3MpKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIGNvbGxlY3Rpb24gb2YgbWFya3MgZm9yIG5vZGUgJHt0aGlzLnR5cGUubmFtZX06ICR7dGhpcy5tYXJrcy5tYXAoZT0+ZS50eXBlLm5hbWUpfWApO3RoaXMuY29udGVudC5mb3JFYWNoKGU9PmUuY2hlY2soKSl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZS5jb250ZW50PXRoaXMuY29udGVudC50b0pTT04oKSksdGhpcy5tYXJrcy5sZW5ndGgmJihlLm1hcmtzPXRoaXMubWFya3MubWFwKGU9PmUudG9KU09OKCkpKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlLmZyb21KU09OIik7bGV0IG47aWYodC5tYXJrcyl7aWYoIUFycmF5LmlzQXJyYXkodC5tYXJrcykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbWFyayBkYXRhIGZvciBOb2RlLmZyb21KU09OIik7bj10Lm1hcmtzLm1hcChlLm1hcmtGcm9tSlNPTil9aWYoInRleHQiPT10LnR5cGUpe2lmKCJzdHJpbmciIT10eXBlb2YgdC50ZXh0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRleHQgbm9kZSBpbiBKU09OIik7cmV0dXJuIGUudGV4dCh0LnRleHQsbil9bGV0IHI9RnJhZ21lbnQuZnJvbUpTT04oZSx0LmNvbnRlbnQpLG89ZS5ub2RlVHlwZSh0LnR5cGUpLmNyZWF0ZSh0LmF0dHJzLHIsbik7cmV0dXJuIG8udHlwZS5jaGVja0F0dHJzKG8uYXR0cnMpLG99fU5vZGUucHJvdG90eXBlLnRleHQ9dm9pZCAwO2NsYXNzIFRleHROb2RlIGV4dGVuZHMgTm9kZXtjb25zdHJ1Y3RvcihlLHQsbixyKXtpZihzdXBlcihlLHQsbnVsbCxyKSwhbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRW1wdHkgdGV4dCBub2RlcyBhcmUgbm90IGFsbG93ZWQiKTt0aGlzLnRleHQ9bn10b1N0cmluZygpe3JldHVybiB0aGlzLnR5cGUuc3BlYy50b0RlYnVnU3RyaW5nP3RoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcodGhpcyk6d3JhcE1hcmtzKHRoaXMubWFya3MsSlNPTi5zdHJpbmdpZnkodGhpcy50ZXh0KSl9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMudGV4dH10ZXh0QmV0d2VlbihlLHQpe3JldHVybiB0aGlzLnRleHQuc2xpY2UoZSx0KX1nZXQgbm9kZVNpemUoKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH1tYXJrKGUpe3JldHVybiBlPT10aGlzLm1hcmtzP3RoaXM6bmV3IFRleHROb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLHRoaXMudGV4dCxlKX13aXRoVGV4dChlKXtyZXR1cm4gZT09dGhpcy50ZXh0P3RoaXM6bmV3IFRleHROb2RlKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9Y3V0KGU9MCx0PXRoaXMudGV4dC5sZW5ndGgpe3JldHVybiAwPT1lJiZ0PT10aGlzLnRleHQubGVuZ3RoP3RoaXM6dGhpcy53aXRoVGV4dCh0aGlzLnRleHQuc2xpY2UoZSx0KSl9ZXEoZSl7cmV0dXJuIHRoaXMuc2FtZU1hcmt1cChlKSYmdGhpcy50ZXh0PT1lLnRleHR9dG9KU09OKCl7bGV0IGU9c3VwZXIudG9KU09OKCk7cmV0dXJuIGUudGV4dD10aGlzLnRleHQsZX19ZnVuY3Rpb24gd3JhcE1hcmtzKGUsdCl7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pdD1lW25dLnR5cGUubmFtZSsiKCIrdCsiKSI7cmV0dXJuIHR9Y2xhc3MgQ29udGVudE1hdGNoe2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsaWRFbmQ9ZSx0aGlzLm5leHQ9W10sdGhpcy53cmFwQ2FjaGU9W119c3RhdGljIHBhcnNlKGUsdCl7bGV0IG49bmV3IFRva2VuU3RyZWFtKGUsdCk7aWYobnVsbD09bi5uZXh0KXJldHVybiBDb250ZW50TWF0Y2guZW1wdHk7bGV0IHI9cGFyc2VFeHByKG4pO24ubmV4dCYmbi5lcnIoIlVuZXhwZWN0ZWQgdHJhaWxpbmcgdGV4dCIpO2xldCBvPWZ1bmN0aW9uKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGV4cGxvcmUobnVsbEZyb20oZSwwKSk7ZnVuY3Rpb24gZXhwbG9yZShuKXtsZXQgcj1bXTtuLmZvckVhY2godD0+e2VbdF0uZm9yRWFjaCgoe3Rlcm06dCx0bzpufSk9PntpZighdClyZXR1cm47bGV0IG87Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspcltlXVswXT09dCYmKG89cltlXVsxXSk7bnVsbEZyb20oZSxuKS5mb3JFYWNoKGU9PntvfHxyLnB1c2goW3Qsbz1bXV0pLC0xPT1vLmluZGV4T2YoZSkmJm8ucHVzaChlKX0pfSl9KTtsZXQgbz10W24uam9pbigiLCIpXT1uZXcgQ29udGVudE1hdGNoKG4uaW5kZXhPZihlLmxlbmd0aC0xKT4tMSk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe2xldCBuPXJbZV1bMV0uc29ydChjbXApO28ubmV4dC5wdXNoKHt0eXBlOnJbZV1bMF0sbmV4dDp0W24uam9pbigiLCIpXXx8ZXhwbG9yZShuKX0pfXJldHVybiBvfX0oZnVuY3Rpb24oZSl7bGV0IHQ9W1tdXTtyZXR1cm4gY29ubmVjdChjb21waWxlKGUsMCksbm9kZSgpKSx0O2Z1bmN0aW9uIG5vZGUoKXtyZXR1cm4gdC5wdXNoKFtdKS0xfWZ1bmN0aW9uIGVkZ2UoZSxuLHIpe2xldCBvPXt0ZXJtOnIsdG86bn07cmV0dXJuIHRbZV0ucHVzaChvKSxvfWZ1bmN0aW9uIGNvbm5lY3QoZSx0KXtlLmZvckVhY2goZT0+ZS50bz10KX1mdW5jdGlvbiBjb21waWxlKGUsdCl7aWYoImNob2ljZSI9PWUudHlwZSlyZXR1cm4gZS5leHBycy5yZWR1Y2UoKGUsbik9PmUuY29uY2F0KGNvbXBpbGUobix0KSksW10pO2lmKCJzZXEiIT1lLnR5cGUpe2lmKCJzdGFyIj09ZS50eXBlKXtsZXQgbj1ub2RlKCk7cmV0dXJuIGVkZ2UodCxuKSxjb25uZWN0KGNvbXBpbGUoZS5leHByLG4pLG4pLFtlZGdlKG4pXX1pZigicGx1cyI9PWUudHlwZSl7bGV0IG49bm9kZSgpO3JldHVybiBjb25uZWN0KGNvbXBpbGUoZS5leHByLHQpLG4pLGNvbm5lY3QoY29tcGlsZShlLmV4cHIsbiksbiksW2VkZ2UobildfWlmKCJvcHQiPT1lLnR5cGUpcmV0dXJuW2VkZ2UodCldLmNvbmNhdChjb21waWxlKGUuZXhwcix0KSk7aWYoInJhbmdlIj09ZS50eXBlKXtsZXQgbj10O2ZvcihsZXQgdD0wO3Q8ZS5taW47dCsrKXtsZXQgdD1ub2RlKCk7Y29ubmVjdChjb21waWxlKGUuZXhwcixuKSx0KSxuPXR9aWYoLTE9PWUubWF4KWNvbm5lY3QoY29tcGlsZShlLmV4cHIsbiksbik7ZWxzZSBmb3IobGV0IHQ9ZS5taW47dDxlLm1heDt0Kyspe2xldCB0PW5vZGUoKTtlZGdlKG4sdCksY29ubmVjdChjb21waWxlKGUuZXhwcixuKSx0KSxuPXR9cmV0dXJuW2VkZ2UobildfWlmKCJuYW1lIj09ZS50eXBlKXJldHVybltlZGdlKHQsdm9pZCAwLGUudmFsdWUpXTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZXhwciB0eXBlIil9Zm9yKGxldCBuPTA7O24rKyl7bGV0IHI9Y29tcGlsZShlLmV4cHJzW25dLHQpO2lmKG49PWUuZXhwcnMubGVuZ3RoLTEpcmV0dXJuIHI7Y29ubmVjdChyLHQ9bm9kZSgpKX19fShyKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKGxldCBuPTAscj1bZV07bjxyLmxlbmd0aDtuKyspe2xldCBlPXJbbl0sbz0hZS52YWxpZEVuZCxpPVtdO2ZvcihsZXQgdD0wO3Q8ZS5uZXh0Lmxlbmd0aDt0Kyspe2xldHt0eXBlOm4sbmV4dDpzfT1lLm5leHRbdF07aS5wdXNoKG4ubmFtZSksIW98fG4uaXNUZXh0fHxuLmhhc1JlcXVpcmVkQXR0cnMoKXx8KG89ITEpLC0xPT1yLmluZGV4T2YocykmJnIucHVzaChzKX1vJiZ0LmVycigiT25seSBub24tZ2VuZXJhdGFibGUgbm9kZXMgKCIraS5qb2luKCIsICIpKyIpIGluIGEgcmVxdWlyZWQgcG9zaXRpb24gKHNlZSBodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL2d1aWRlLyNnZW5lcmF0YWJsZSkiKX19KG8sbiksb31tYXRjaFR5cGUoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm5leHQubGVuZ3RoO3QrKylpZih0aGlzLm5leHRbdF0udHlwZT09ZSlyZXR1cm4gdGhpcy5uZXh0W3RdLm5leHQ7cmV0dXJuIG51bGx9bWF0Y2hGcmFnbWVudChlLHQ9MCxuPWUuY2hpbGRDb3VudCl7bGV0IHI9dGhpcztmb3IobGV0IG89dDtyJiZvPG47bysrKXI9ci5tYXRjaFR5cGUoZS5jaGlsZChvKS50eXBlKTtyZXR1cm4gcn1nZXQgaW5saW5lQ29udGVudCgpe3JldHVybiAwIT10aGlzLm5leHQubGVuZ3RoJiZ0aGlzLm5leHRbMF0udHlwZS5pc0lubGluZX1nZXQgZGVmYXVsdFR5cGUoKXtmb3IobGV0IGU9MDtlPHRoaXMubmV4dC5sZW5ndGg7ZSsrKXtsZXR7dHlwZTp0fT10aGlzLm5leHRbZV07aWYoIXQuaXNUZXh0JiYhdC5oYXNSZXF1aXJlZEF0dHJzKCkpcmV0dXJuIHR9cmV0dXJuIG51bGx9Y29tcGF0aWJsZShlKXtmb3IobGV0IHQ9MDt0PHRoaXMubmV4dC5sZW5ndGg7dCsrKWZvcihsZXQgbj0wO248ZS5uZXh0Lmxlbmd0aDtuKyspaWYodGhpcy5uZXh0W3RdLnR5cGU9PWUubmV4dFtuXS50eXBlKXJldHVybiEwO3JldHVybiExfWZpbGxCZWZvcmUoZSx0PSExLG49MCl7bGV0IHI9W3RoaXNdO3JldHVybiBmdW5jdGlvbiBzZWFyY2gobyxpKXtsZXQgcz1vLm1hdGNoRnJhZ21lbnQoZSxuKTtpZihzJiYoIXR8fHMudmFsaWRFbmQpKXJldHVybiBGcmFnbWVudC5mcm9tKGkubWFwKGU9PmUuY3JlYXRlQW5kRmlsbCgpKSk7Zm9yKGxldCBlPTA7ZTxvLm5leHQubGVuZ3RoO2UrKyl7bGV0e3R5cGU6dCxuZXh0Om59PW8ubmV4dFtlXTtpZighdC5pc1RleHQmJiF0Lmhhc1JlcXVpcmVkQXR0cnMoKSYmLTE9PXIuaW5kZXhPZihuKSl7ci5wdXNoKG4pO2xldCBlPXNlYXJjaChuLGkuY29uY2F0KHQpKTtpZihlKXJldHVybiBlfX1yZXR1cm4gbnVsbH0odGhpcyxbXSl9ZmluZFdyYXBwaW5nKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy53cmFwQ2FjaGUubGVuZ3RoO3QrPTIpaWYodGhpcy53cmFwQ2FjaGVbdF09PWUpcmV0dXJuIHRoaXMud3JhcENhY2hlW3QrMV07bGV0IHQ9dGhpcy5jb21wdXRlV3JhcHBpbmcoZSk7cmV0dXJuIHRoaXMud3JhcENhY2hlLnB1c2goZSx0KSx0fWNvbXB1dGVXcmFwcGluZyhlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpLG49W3ttYXRjaDp0aGlzLHR5cGU6bnVsbCx2aWE6bnVsbH1dO2Zvcig7bi5sZW5ndGg7KXtsZXQgcj1uLnNoaWZ0KCksbz1yLm1hdGNoO2lmKG8ubWF0Y2hUeXBlKGUpKXtsZXQgZT1bXTtmb3IobGV0IHQ9cjt0LnR5cGU7dD10LnZpYSllLnB1c2godC50eXBlKTtyZXR1cm4gZS5yZXZlcnNlKCl9Zm9yKGxldCBlPTA7ZTxvLm5leHQubGVuZ3RoO2UrKyl7bGV0e3R5cGU6aSxuZXh0OnN9PW8ubmV4dFtlXTtpLmlzTGVhZnx8aS5oYXNSZXF1aXJlZEF0dHJzKCl8fGkubmFtZSBpbiB0fHxyLnR5cGUmJiFzLnZhbGlkRW5kfHwobi5wdXNoKHttYXRjaDppLmNvbnRlbnRNYXRjaCx0eXBlOmksdmlhOnJ9KSx0W2kubmFtZV09ITApfX1yZXR1cm4gbnVsbH1nZXQgZWRnZUNvdW50KCl7cmV0dXJuIHRoaXMubmV4dC5sZW5ndGh9ZWRnZShlKXtpZihlPj10aGlzLm5leHQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSdzIG5vICR7ZX10aCBlZGdlIGluIHRoaXMgY29udGVudCBtYXRjaGApO3JldHVybiB0aGlzLm5leHRbZV19dG9TdHJpbmcoKXtsZXQgZT1bXTtyZXR1cm4gZnVuY3Rpb24gc2Nhbih0KXtlLnB1c2godCk7Zm9yKGxldCBuPTA7bjx0Lm5leHQubGVuZ3RoO24rKyktMT09ZS5pbmRleE9mKHQubmV4dFtuXS5uZXh0KSYmc2Nhbih0Lm5leHRbbl0ubmV4dCl9KHRoaXMpLGUubWFwKCh0LG4pPT57bGV0IHI9bisodC52YWxpZEVuZD8iKiI6IiAiKSsiICI7Zm9yKGxldCBuPTA7bjx0Lm5leHQubGVuZ3RoO24rKylyKz0obj8iLCAiOiIiKSt0Lm5leHRbbl0udHlwZS5uYW1lKyItPiIrZS5pbmRleE9mKHQubmV4dFtuXS5uZXh0KTtyZXR1cm4gcn0pLmpvaW4oIlxuIil9fUNvbnRlbnRNYXRjaC5lbXB0eT1uZXcgQ29udGVudE1hdGNoKCEwKTtjbGFzcyBUb2tlblN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyaW5nPWUsdGhpcy5ub2RlVHlwZXM9dCx0aGlzLmlubGluZT1udWxsLHRoaXMucG9zPTAsdGhpcy50b2tlbnM9ZS5zcGxpdCgvXHMqKD89XGJ8XFd8JCkvKSwiIj09dGhpcy50b2tlbnNbdGhpcy50b2tlbnMubGVuZ3RoLTFdJiZ0aGlzLnRva2Vucy5wb3AoKSwiIj09dGhpcy50b2tlbnNbMF0mJnRoaXMudG9rZW5zLnNoaWZ0KCl9Z2V0IG5leHQoKXtyZXR1cm4gdGhpcy50b2tlbnNbdGhpcy5wb3NdfWVhdChlKXtyZXR1cm4gdGhpcy5uZXh0PT1lJiYodGhpcy5wb3MrK3x8ITApfWVycihlKXt0aHJvdyBuZXcgU3ludGF4RXJyb3IoZSsiIChpbiBjb250ZW50IGV4cHJlc3Npb24gJyIrdGhpcy5zdHJpbmcrIicpIil9fWZ1bmN0aW9uIHBhcnNlRXhwcihlKXtsZXQgdD1bXTtkb3t0LnB1c2gocGFyc2VFeHByU2VxKGUpKX13aGlsZShlLmVhdCgifCIpKTtyZXR1cm4gMT09dC5sZW5ndGg/dFswXTp7dHlwZToiY2hvaWNlIixleHByczp0fX1mdW5jdGlvbiBwYXJzZUV4cHJTZXEoZSl7bGV0IHQ9W107ZG97dC5wdXNoKHBhcnNlRXhwclN1YnNjcmlwdChlKSl9d2hpbGUoZS5uZXh0JiYiKSIhPWUubmV4dCYmInwiIT1lLm5leHQpO3JldHVybiAxPT10Lmxlbmd0aD90WzBdOnt0eXBlOiJzZXEiLGV4cHJzOnR9fWZ1bmN0aW9uIHBhcnNlRXhwclN1YnNjcmlwdChlKXtsZXQgdD1mdW5jdGlvbihlKXtpZihlLmVhdCgiKCIpKXtsZXQgdD1wYXJzZUV4cHIoZSk7cmV0dXJuIGUuZWF0KCIpIil8fGUuZXJyKCJNaXNzaW5nIGNsb3NpbmcgcGFyZW4iKSx0fWlmKCEvXFcvLnRlc3QoZS5uZXh0KSl7bGV0IHQ9ZnVuY3Rpb24oZSx0KXtsZXQgbj1lLm5vZGVUeXBlcyxyPW5bdF07aWYocilyZXR1cm5bcl07bGV0IG89W107Zm9yKGxldCBlIGluIG4pe2xldCByPW5bZV07ci5pc0luR3JvdXAodCkmJm8ucHVzaChyKX0wPT1vLmxlbmd0aCYmZS5lcnIoIk5vIG5vZGUgdHlwZSBvciBncm91cCAnIit0KyInIGZvdW5kIik7cmV0dXJuIG99KGUsZS5uZXh0KS5tYXAodD0+KG51bGw9PWUuaW5saW5lP2UuaW5saW5lPXQuaXNJbmxpbmU6ZS5pbmxpbmUhPXQuaXNJbmxpbmUmJmUuZXJyKCJNaXhpbmcgaW5saW5lIGFuZCBibG9jayBjb250ZW50Iikse3R5cGU6Im5hbWUiLHZhbHVlOnR9KSk7cmV0dXJuIGUucG9zKyssMT09dC5sZW5ndGg/dFswXTp7dHlwZToiY2hvaWNlIixleHByczp0fX1lLmVycigiVW5leHBlY3RlZCB0b2tlbiAnIitlLm5leHQrIiciKX0oZSk7Zm9yKDs7KWlmKGUuZWF0KCIrIikpdD17dHlwZToicGx1cyIsZXhwcjp0fTtlbHNlIGlmKGUuZWF0KCIqIikpdD17dHlwZToic3RhciIsZXhwcjp0fTtlbHNlIGlmKGUuZWF0KCI/IikpdD17dHlwZToib3B0IixleHByOnR9O2Vsc2V7aWYoIWUuZWF0KCJ7IikpYnJlYWs7dD1wYXJzZUV4cHJSYW5nZShlLHQpfXJldHVybiB0fWZ1bmN0aW9uIHBhcnNlTnVtKGUpey9cRC8udGVzdChlLm5leHQpJiZlLmVycigiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgJyIrZS5uZXh0KyInIik7bGV0IHQ9TnVtYmVyKGUubmV4dCk7cmV0dXJuIGUucG9zKyssdH1mdW5jdGlvbiBwYXJzZUV4cHJSYW5nZShlLHQpe2xldCBuPXBhcnNlTnVtKGUpLHI9bjtyZXR1cm4gZS5lYXQoIiwiKSYmKHI9In0iIT1lLm5leHQ/cGFyc2VOdW0oZSk6LTEpLGUuZWF0KCJ9Iil8fGUuZXJyKCJVbmNsb3NlZCBicmFjZWQgcmFuZ2UiKSx7dHlwZToicmFuZ2UiLG1pbjpuLG1heDpyLGV4cHI6dH19ZnVuY3Rpb24gY21wKGUsdCl7cmV0dXJuIHQtZX1mdW5jdGlvbiBudWxsRnJvbShlLHQpe2xldCBuPVtdO3JldHVybiBmdW5jdGlvbiBzY2FuKHQpe2xldCByPWVbdF07aWYoMT09ci5sZW5ndGgmJiFyWzBdLnRlcm0pcmV0dXJuIHNjYW4oclswXS50byk7bi5wdXNoKHQpO2ZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXtsZXR7dGVybTp0LHRvOm99PXJbZV07dHx8LTEhPW4uaW5kZXhPZihvKXx8c2NhbihvKX19KHQpLG4uc29ydChjbXApfWZ1bmN0aW9uIGRlZmF1bHRBdHRycyhlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lW25dO2lmKCFyLmhhc0RlZmF1bHQpcmV0dXJuIG51bGw7dFtuXT1yLmRlZmF1bHR9cmV0dXJuIHR9ZnVuY3Rpb24gY29tcHV0ZUF0dHJzKGUsdCl7bGV0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHIgaW4gZSl7bGV0IG89dCYmdFtyXTtpZih2b2lkIDA9PT1vKXtsZXQgdD1lW3JdO2lmKCF0Lmhhc0RlZmF1bHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIHZhbHVlIHN1cHBsaWVkIGZvciBhdHRyaWJ1dGUgIityKTtvPXQuZGVmYXVsdH1uW3JdPW99cmV0dXJuIG59ZnVuY3Rpb24gY2hlY2tBdHRycyhlLHQsbixyKXtmb3IobGV0IHIgaW4gdClpZighKHIgaW4gZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFVuc3VwcG9ydGVkIGF0dHJpYnV0ZSAke3J9IGZvciAke259IG9mIHR5cGUgJHtyfWApO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lW25dO3IudmFsaWRhdGUmJnIudmFsaWRhdGUodFtuXSl9fWZ1bmN0aW9uIGluaXRBdHRycyhlLHQpe2xldCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYodClmb3IobGV0IHIgaW4gdCluW3JdPW5ldyBBdHRyaWJ1dGUoZSxyLHRbcl0pO3JldHVybiBufWxldCBwZT1jbGFzcyBOb2RlVHlwZXtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5uYW1lPWUsdGhpcy5zY2hlbWE9dCx0aGlzLnNwZWM9bix0aGlzLm1hcmtTZXQ9bnVsbCx0aGlzLmdyb3Vwcz1uLmdyb3VwP24uZ3JvdXAuc3BsaXQoIiAiKTpbXSx0aGlzLmF0dHJzPWluaXRBdHRycyhlLG4uYXR0cnMpLHRoaXMuZGVmYXVsdEF0dHJzPWRlZmF1bHRBdHRycyh0aGlzLmF0dHJzKSx0aGlzLmNvbnRlbnRNYXRjaD1udWxsLHRoaXMuaW5saW5lQ29udGVudD1udWxsLHRoaXMuaXNCbG9jaz0hKG4uaW5saW5lfHwidGV4dCI9PWUpLHRoaXMuaXNUZXh0PSJ0ZXh0Ij09ZX1nZXQgaXNJbmxpbmUoKXtyZXR1cm4hdGhpcy5pc0Jsb2NrfWdldCBpc1RleHRibG9jaygpe3JldHVybiB0aGlzLmlzQmxvY2smJnRoaXMuaW5saW5lQ29udGVudH1nZXQgaXNMZWFmKCl7cmV0dXJuIHRoaXMuY29udGVudE1hdGNoPT1Db250ZW50TWF0Y2guZW1wdHl9Z2V0IGlzQXRvbSgpe3JldHVybiB0aGlzLmlzTGVhZnx8ISF0aGlzLnNwZWMuYXRvbX1pc0luR3JvdXAoZSl7cmV0dXJuIHRoaXMuZ3JvdXBzLmluZGV4T2YoZSk+LTF9Z2V0IHdoaXRlc3BhY2UoKXtyZXR1cm4gdGhpcy5zcGVjLndoaXRlc3BhY2V8fCh0aGlzLnNwZWMuY29kZT8icHJlIjoibm9ybWFsIil9aGFzUmVxdWlyZWRBdHRycygpe2ZvcihsZXQgZSBpbiB0aGlzLmF0dHJzKWlmKHRoaXMuYXR0cnNbZV0uaXNSZXF1aXJlZClyZXR1cm4hMDtyZXR1cm4hMX1jb21wYXRpYmxlQ29udGVudChlKXtyZXR1cm4gdGhpcz09ZXx8dGhpcy5jb250ZW50TWF0Y2guY29tcGF0aWJsZShlLmNvbnRlbnRNYXRjaCl9Y29tcHV0ZUF0dHJzKGUpe3JldHVybiFlJiZ0aGlzLmRlZmF1bHRBdHRycz90aGlzLmRlZmF1bHRBdHRyczpjb21wdXRlQXR0cnModGhpcy5hdHRycyxlKX1jcmVhdGUoZT1udWxsLHQsbil7aWYodGhpcy5pc1RleHQpdGhyb3cgbmV3IEVycm9yKCJOb2RlVHlwZS5jcmVhdGUgY2FuJ3QgY29uc3RydWN0IHRleHQgbm9kZXMiKTtyZXR1cm4gbmV3IE5vZGUodGhpcyx0aGlzLmNvbXB1dGVBdHRycyhlKSxGcmFnbWVudC5mcm9tKHQpLGxlLnNldEZyb20obikpfWNyZWF0ZUNoZWNrZWQoZT1udWxsLHQsbil7cmV0dXJuIHQ9RnJhZ21lbnQuZnJvbSh0KSx0aGlzLmNoZWNrQ29udGVudCh0KSxuZXcgTm9kZSh0aGlzLHRoaXMuY29tcHV0ZUF0dHJzKGUpLHQsbGUuc2V0RnJvbShuKSl9Y3JlYXRlQW5kRmlsbChlPW51bGwsdCxuKXtpZihlPXRoaXMuY29tcHV0ZUF0dHJzKGUpLCh0PUZyYWdtZW50LmZyb20odCkpLnNpemUpe2xldCBlPXRoaXMuY29udGVudE1hdGNoLmZpbGxCZWZvcmUodCk7aWYoIWUpcmV0dXJuIG51bGw7dD1lLmFwcGVuZCh0KX1sZXQgcj10aGlzLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KHQpLG89ciYmci5maWxsQmVmb3JlKEZyYWdtZW50LmVtcHR5LCEwKTtyZXR1cm4gbz9uZXcgTm9kZSh0aGlzLGUsdC5hcHBlbmQobyksbGUuc2V0RnJvbShuKSk6bnVsbH12YWxpZENvbnRlbnQoZSl7bGV0IHQ9dGhpcy5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudChlKTtpZighdHx8IXQudmFsaWRFbmQpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDxlLmNoaWxkQ291bnQ7dCsrKWlmKCF0aGlzLmFsbG93c01hcmtzKGUuY2hpbGQodCkubWFya3MpKXJldHVybiExO3JldHVybiEwfWNoZWNrQ29udGVudChlKXtpZighdGhpcy52YWxpZENvbnRlbnQoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgY29udGVudCBmb3Igbm9kZSAke3RoaXMubmFtZX06ICR7ZS50b1N0cmluZygpLnNsaWNlKDAsNTApfWApfWNoZWNrQXR0cnMoZSl7Y2hlY2tBdHRycyh0aGlzLmF0dHJzLGUsIm5vZGUiLHRoaXMubmFtZSl9YWxsb3dzTWFya1R5cGUoZSl7cmV0dXJuIG51bGw9PXRoaXMubWFya1NldHx8dGhpcy5tYXJrU2V0LmluZGV4T2YoZSk+LTF9YWxsb3dzTWFya3MoZSl7aWYobnVsbD09dGhpcy5tYXJrU2V0KXJldHVybiEwO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCF0aGlzLmFsbG93c01hcmtUeXBlKGVbdF0udHlwZSkpcmV0dXJuITE7cmV0dXJuITB9YWxsb3dlZE1hcmtzKGUpe2lmKG51bGw9PXRoaXMubWFya1NldClyZXR1cm4gZTtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLmFsbG93c01hcmtUeXBlKGVbbl0udHlwZSk/dCYmdC5wdXNoKGVbbl0pOnR8fCh0PWUuc2xpY2UoMCxuKSk7cmV0dXJuIHQ/dC5sZW5ndGg/dDpsZS5ub25lOmV9c3RhdGljIGNvbXBpbGUoZSx0KXtsZXQgbj1PYmplY3QuY3JlYXRlKG51bGwpO2UuZm9yRWFjaCgoZSxyKT0+bltlXT1uZXcgTm9kZVR5cGUoZSx0LHIpKTtsZXQgcj10LnNwZWMudG9wTm9kZXx8ImRvYyI7aWYoIW5bcl0pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGl0cyB0b3Agbm9kZSB0eXBlICgnIityKyInKSIpO2lmKCFuLnRleHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkV2ZXJ5IHNjaGVtYSBuZWVkcyBhICd0ZXh0JyB0eXBlIik7Zm9yKGxldCBlIGluIG4udGV4dC5hdHRycyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlIHRleHQgbm9kZSB0eXBlIHNob3VsZCBub3QgaGF2ZSBhdHRyaWJ1dGVzIik7cmV0dXJuIG59fTtjbGFzcyBBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuaGFzRGVmYXVsdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobiwiZGVmYXVsdCIpLHRoaXMuZGVmYXVsdD1uLmRlZmF1bHQsdGhpcy52YWxpZGF0ZT0ic3RyaW5nIj09dHlwZW9mIG4udmFsaWRhdGU/ZnVuY3Rpb24oZSx0LG4pe2xldCByPW4uc3BsaXQoInwiKTtyZXR1cm4gbj0+e2xldCBvPW51bGw9PT1uPyJudWxsIjp0eXBlb2YgbjtpZihyLmluZGV4T2Yobyk8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSAke3J9IGZvciBhdHRyaWJ1dGUgJHt0fSBvbiB0eXBlICR7ZX0sIGdvdCAke299YCl9fShlLHQsbi52YWxpZGF0ZSk6bi52YWxpZGF0ZX1nZXQgaXNSZXF1aXJlZCgpe3JldHVybiF0aGlzLmhhc0RlZmF1bHR9fWNsYXNzIE1hcmtUeXBle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMubmFtZT1lLHRoaXMucmFuaz10LHRoaXMuc2NoZW1hPW4sdGhpcy5zcGVjPXIsdGhpcy5hdHRycz1pbml0QXR0cnMoZSxyLmF0dHJzKSx0aGlzLmV4Y2x1ZGVkPW51bGw7bGV0IG89ZGVmYXVsdEF0dHJzKHRoaXMuYXR0cnMpO3RoaXMuaW5zdGFuY2U9bz9uZXcgbGUodGhpcyxvKTpudWxsfWNyZWF0ZShlPW51bGwpe3JldHVybiFlJiZ0aGlzLmluc3RhbmNlP3RoaXMuaW5zdGFuY2U6bmV3IGxlKHRoaXMsY29tcHV0ZUF0dHJzKHRoaXMuYXR0cnMsZSkpfXN0YXRpYyBjb21waWxlKGUsdCl7bGV0IG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPTA7cmV0dXJuIGUuZm9yRWFjaCgoZSxvKT0+bltlXT1uZXcgTWFya1R5cGUoZSxyKyssdCxvKSksbn1yZW1vdmVGcm9tU2V0KGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0udHlwZT09dGhpcyYmKGU9ZS5zbGljZSgwLHQpLmNvbmNhdChlLnNsaWNlKHQrMSkpLHQtLSk7cmV0dXJuIGV9aXNJblNldChlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZihlW3RdLnR5cGU9PXRoaXMpcmV0dXJuIGVbdF19Y2hlY2tBdHRycyhlKXtjaGVja0F0dHJzKHRoaXMuYXR0cnMsZSwibWFyayIsdGhpcy5uYW1lKX1leGNsdWRlcyhlKXtyZXR1cm4gdGhpcy5leGNsdWRlZC5pbmRleE9mKGUpPi0xfX1jbGFzcyBTY2hlbWF7Y29uc3RydWN0b3IoZSl7dGhpcy5saW5lYnJlYWtSZXBsYWNlbWVudD1udWxsLHRoaXMuY2FjaGVkPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9dGhpcy5zcGVjPXt9O2ZvcihsZXQgbiBpbiBlKXRbbl09ZVtuXTt0Lm5vZGVzPU9yZGVyZWRNYXAuZnJvbShlLm5vZGVzKSx0Lm1hcmtzPU9yZGVyZWRNYXAuZnJvbShlLm1hcmtzfHx7fSksdGhpcy5ub2Rlcz1wZS5jb21waWxlKHRoaXMuc3BlYy5ub2Rlcyx0aGlzKSx0aGlzLm1hcmtzPU1hcmtUeXBlLmNvbXBpbGUodGhpcy5zcGVjLm1hcmtzLHRoaXMpO2xldCBuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlIGluIHRoaXMubm9kZXMpe2lmKGUgaW4gdGhpcy5tYXJrcyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihlKyIgY2FuIG5vdCBiZSBib3RoIGEgbm9kZSBhbmQgYSBtYXJrIik7bGV0IHQ9dGhpcy5ub2Rlc1tlXSxyPXQuc3BlYy5jb250ZW50fHwiIixvPXQuc3BlYy5tYXJrcztpZih0LmNvbnRlbnRNYXRjaD1uW3JdfHwobltyXT1Db250ZW50TWF0Y2gucGFyc2Uocix0aGlzLm5vZGVzKSksdC5pbmxpbmVDb250ZW50PXQuY29udGVudE1hdGNoLmlubGluZUNvbnRlbnQsdC5zcGVjLmxpbmVicmVha1JlcGxhY2VtZW50KXtpZih0aGlzLmxpbmVicmVha1JlcGxhY2VtZW50KXRocm93IG5ldyBSYW5nZUVycm9yKCJNdWx0aXBsZSBsaW5lYnJlYWsgbm9kZXMgZGVmaW5lZCIpO2lmKCF0LmlzSW5saW5lfHwhdC5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkxpbmVicmVhayByZXBsYWNlbWVudCBub2RlcyBtdXN0IGJlIGlubGluZSBsZWFmIG5vZGVzIik7dGhpcy5saW5lYnJlYWtSZXBsYWNlbWVudD10fXQubWFya1NldD0iXyI9PW8/bnVsbDpvP2dhdGhlck1hcmtzKHRoaXMsby5zcGxpdCgiICIpKToiIiE9byYmdC5pbmxpbmVDb250ZW50P251bGw6W119Zm9yKGxldCBlIGluIHRoaXMubWFya3Mpe2xldCB0PXRoaXMubWFya3NbZV0sbj10LnNwZWMuZXhjbHVkZXM7dC5leGNsdWRlZD1udWxsPT1uP1t0XToiIj09bj9bXTpnYXRoZXJNYXJrcyh0aGlzLG4uc3BsaXQoIiAiKSl9dGhpcy5ub2RlRnJvbUpTT049ZT0+Tm9kZS5mcm9tSlNPTih0aGlzLGUpLHRoaXMubWFya0Zyb21KU09OPWU9PmxlLmZyb21KU09OKHRoaXMsZSksdGhpcy50b3BOb2RlVHlwZT10aGlzLm5vZGVzW3RoaXMuc3BlYy50b3BOb2RlfHwiZG9jIl0sdGhpcy5jYWNoZWQud3JhcHBpbmdzPU9iamVjdC5jcmVhdGUobnVsbCl9bm9kZShlLHQ9bnVsbCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgZSllPXRoaXMubm9kZVR5cGUoZSk7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbm9kZSB0eXBlOiAiK2UpO2lmKGUuc2NoZW1hIT10aGlzKXRocm93IG5ldyBSYW5nZUVycm9yKCJOb2RlIHR5cGUgZnJvbSBkaWZmZXJlbnQgc2NoZW1hIHVzZWQgKCIrZS5uYW1lKyIpIil9cmV0dXJuIGUuY3JlYXRlQ2hlY2tlZCh0LG4scil9dGV4dChlLHQpe2xldCBuPXRoaXMubm9kZXMudGV4dDtyZXR1cm4gbmV3IFRleHROb2RlKG4sbi5kZWZhdWx0QXR0cnMsZSxsZS5zZXRGcm9tKHQpKX1tYXJrKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYoZT10aGlzLm1hcmtzW2VdKSxlLmNyZWF0ZSh0KX1ub2RlVHlwZShlKXtsZXQgdD10aGlzLm5vZGVzW2VdO2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJVbmtub3duIG5vZGUgdHlwZTogIitlKTtyZXR1cm4gdH19ZnVuY3Rpb24gZ2F0aGVyTWFya3MoZSx0KXtsZXQgbj1bXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bGV0IG89dFtyXSxpPWUubWFya3Nbb10scz1pO2lmKGkpbi5wdXNoKGkpO2Vsc2UgZm9yKGxldCB0IGluIGUubWFya3Mpe2xldCByPWUubWFya3NbdF07KCJfIj09b3x8ci5zcGVjLmdyb3VwJiZyLnNwZWMuZ3JvdXAuc3BsaXQoIiAiKS5pbmRleE9mKG8pPi0xKSYmbi5wdXNoKHM9cil9aWYoIXMpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJVbmtub3duIG1hcmsgdHlwZTogJyIrdFtyXSsiJyIpfXJldHVybiBufWNsYXNzIERPTVBhcnNlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5ydWxlcz10LHRoaXMudGFncz1bXSx0aGlzLnN0eWxlcz1bXTtsZXQgbj10aGlzLm1hdGNoZWRTdHlsZXM9W107dC5mb3JFYWNoKGU9PntpZihmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZS50YWd9KGUpKXRoaXMudGFncy5wdXNoKGUpO2Vsc2UgaWYoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuc3R5bGV9KGUpKXtsZXQgdD0vW149XSovLmV4ZWMoZS5zdHlsZSlbMF07bi5pbmRleE9mKHQpPDAmJm4ucHVzaCh0KSx0aGlzLnN0eWxlcy5wdXNoKGUpfX0pLHRoaXMubm9ybWFsaXplTGlzdHM9IXRoaXMudGFncy5zb21lKHQ9PntpZighL14odWx8b2wpXGIvLnRlc3QodC50YWcpfHwhdC5ub2RlKXJldHVybiExO2xldCBuPWUubm9kZXNbdC5ub2RlXTtyZXR1cm4gbi5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKG4pfSl9cGFyc2UoZSx0PXt9KXtsZXQgbj1uZXcgUGFyc2VDb250ZXh0KHRoaXMsdCwhMSk7cmV0dXJuIG4uYWRkQWxsKGUsbGUubm9uZSx0LmZyb20sdC50byksbi5maW5pc2goKX1wYXJzZVNsaWNlKGUsdD17fSl7bGV0IG49bmV3IFBhcnNlQ29udGV4dCh0aGlzLHQsITApO3JldHVybiBuLmFkZEFsbChlLGxlLm5vbmUsdC5mcm9tLHQudG8pLFNsaWNlLm1heE9wZW4obi5maW5pc2goKSl9bWF0Y2hUYWcoZSx0LG4pe2ZvcihsZXQgcj1uP3RoaXMudGFncy5pbmRleE9mKG4pKzE6MDtyPHRoaXMudGFncy5sZW5ndGg7cisrKXtsZXQgbj10aGlzLnRhZ3Nbcl07aWYobWF0Y2hlcyhlLG4udGFnKSYmKHZvaWQgMD09PW4ubmFtZXNwYWNlfHxlLm5hbWVzcGFjZVVSST09bi5uYW1lc3BhY2UpJiYoIW4uY29udGV4dHx8dC5tYXRjaGVzQ29udGV4dChuLmNvbnRleHQpKSl7aWYobi5nZXRBdHRycyl7bGV0IHQ9bi5nZXRBdHRycyhlKTtpZighMT09PXQpY29udGludWU7bi5hdHRycz10fHx2b2lkIDB9cmV0dXJuIG59fX1tYXRjaFN0eWxlKGUsdCxuLHIpe2ZvcihsZXQgbz1yP3RoaXMuc3R5bGVzLmluZGV4T2YocikrMTowO288dGhpcy5zdHlsZXMubGVuZ3RoO28rKyl7bGV0IHI9dGhpcy5zdHlsZXNbb10saT1yLnN0eWxlO2lmKCEoMCE9aS5pbmRleE9mKGUpfHxyLmNvbnRleHQmJiFuLm1hdGNoZXNDb250ZXh0KHIuY29udGV4dCl8fGkubGVuZ3RoPmUubGVuZ3RoJiYoNjEhPWkuY2hhckNvZGVBdChlLmxlbmd0aCl8fGkuc2xpY2UoZS5sZW5ndGgrMSkhPXQpKSl7aWYoci5nZXRBdHRycyl7bGV0IGU9ci5nZXRBdHRycyh0KTtpZighMT09PWUpY29udGludWU7ci5hdHRycz1lfHx2b2lkIDB9cmV0dXJuIHJ9fX1zdGF0aWMgc2NoZW1hUnVsZXMoZSl7bGV0IHQ9W107ZnVuY3Rpb24gaW5zZXJ0KGUpe2xldCBuPW51bGw9PWUucHJpb3JpdHk/NTA6ZS5wcmlvcml0eSxyPTA7Zm9yKDtyPHQubGVuZ3RoO3IrKyl7bGV0IGU9dFtyXTtpZigobnVsbD09ZS5wcmlvcml0eT81MDplLnByaW9yaXR5KTxuKWJyZWFrfXQuc3BsaWNlKHIsMCxlKX1mb3IobGV0IHQgaW4gZS5tYXJrcyl7bGV0IG49ZS5tYXJrc1t0XS5zcGVjLnBhcnNlRE9NO24mJm4uZm9yRWFjaChlPT57aW5zZXJ0KGU9Y29weShlKSksZS5tYXJrfHxlLmlnbm9yZXx8ZS5jbGVhck1hcmt8fChlLm1hcms9dCl9KX1mb3IobGV0IHQgaW4gZS5ub2Rlcyl7bGV0IG49ZS5ub2Rlc1t0XS5zcGVjLnBhcnNlRE9NO24mJm4uZm9yRWFjaChlPT57aW5zZXJ0KGU9Y29weShlKSksZS5ub2RlfHxlLmlnbm9yZXx8ZS5tYXJrfHwoZS5ub2RlPXQpfSl9cmV0dXJuIHR9c3RhdGljIGZyb21TY2hlbWEoZSl7cmV0dXJuIGUuY2FjaGVkLmRvbVBhcnNlcnx8KGUuY2FjaGVkLmRvbVBhcnNlcj1uZXcgRE9NUGFyc2VyKGUsRE9NUGFyc2VyLnNjaGVtYVJ1bGVzKGUpKSl9fWNvbnN0IGhlPXthZGRyZXNzOiEwLGFydGljbGU6ITAsYXNpZGU6ITAsYmxvY2txdW90ZTohMCxjYW52YXM6ITAsZGQ6ITAsZGl2OiEwLGRsOiEwLGZpZWxkc2V0OiEwLGZpZ2NhcHRpb246ITAsZmlndXJlOiEwLGZvb3RlcjohMCxmb3JtOiEwLGgxOiEwLGgyOiEwLGgzOiEwLGg0OiEwLGg1OiEwLGg2OiEwLGhlYWRlcjohMCxoZ3JvdXA6ITAsaHI6ITAsbGk6ITAsbm9zY3JpcHQ6ITAsb2w6ITAsb3V0cHV0OiEwLHA6ITAscHJlOiEwLHNlY3Rpb246ITAsdGFibGU6ITAsdGZvb3Q6ITAsdWw6ITB9LHVlPXtoZWFkOiEwLG5vc2NyaXB0OiEwLG9iamVjdDohMCxzY3JpcHQ6ITAsc3R5bGU6ITAsdGl0bGU6ITB9LG1lPXtvbDohMCx1bDohMH07ZnVuY3Rpb24gd3NPcHRpb25zRm9yKGUsdCxuKXtyZXR1cm4gbnVsbCE9dD8odD8xOjApfCgiZnVsbCI9PT10PzI6MCk6ZSYmInByZSI9PWUud2hpdGVzcGFjZT8zOi01Jm59Y2xhc3MgTm9kZUNvbnRleHR7Y29uc3RydWN0b3IoZSx0LG4scixvLGkpe3RoaXMudHlwZT1lLHRoaXMuYXR0cnM9dCx0aGlzLm1hcmtzPW4sdGhpcy5zb2xpZD1yLHRoaXMub3B0aW9ucz1pLHRoaXMuY29udGVudD1bXSx0aGlzLmFjdGl2ZU1hcmtzPWxlLm5vbmUsdGhpcy5tYXRjaD1vfHwoNCZpP251bGw6ZS5jb250ZW50TWF0Y2gpfWZpbmRXcmFwcGluZyhlKXtpZighdGhpcy5tYXRjaCl7aWYoIXRoaXMudHlwZSlyZXR1cm5bXTtsZXQgdD10aGlzLnR5cGUuY29udGVudE1hdGNoLmZpbGxCZWZvcmUoRnJhZ21lbnQuZnJvbShlKSk7aWYoIXQpe2xldCB0LG49dGhpcy50eXBlLmNvbnRlbnRNYXRjaDtyZXR1cm4odD1uLmZpbmRXcmFwcGluZyhlLnR5cGUpKT8odGhpcy5tYXRjaD1uLHQpOm51bGx9dGhpcy5tYXRjaD10aGlzLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQodCl9cmV0dXJuIHRoaXMubWF0Y2guZmluZFdyYXBwaW5nKGUudHlwZSl9ZmluaXNoKGUpe2lmKCEoMSZ0aGlzLm9wdGlvbnMpKXtsZXQgZSx0PXRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdO2lmKHQmJnQuaXNUZXh0JiYoZT0vWyBcdFxyXG5cdTAwMGNdKyQvLmV4ZWModC50ZXh0KSkpe2xldCBuPXQ7dC50ZXh0Lmxlbmd0aD09ZVswXS5sZW5ndGg/dGhpcy5jb250ZW50LnBvcCgpOnRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdPW4ud2l0aFRleHQobi50ZXh0LnNsaWNlKDAsbi50ZXh0Lmxlbmd0aC1lWzBdLmxlbmd0aCkpfX1sZXQgdD1GcmFnbWVudC5mcm9tKHRoaXMuY29udGVudCk7cmV0dXJuIWUmJnRoaXMubWF0Y2gmJih0PXQuYXBwZW5kKHRoaXMubWF0Y2guZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCkpKSx0aGlzLnR5cGU/dGhpcy50eXBlLmNyZWF0ZSh0aGlzLmF0dHJzLHQsdGhpcy5tYXJrcyk6dH1pbmxpbmVDb250ZXh0KGUpe3JldHVybiB0aGlzLnR5cGU/dGhpcy50eXBlLmlubGluZUNvbnRlbnQ6dGhpcy5jb250ZW50Lmxlbmd0aD90aGlzLmNvbnRlbnRbMF0uaXNJbmxpbmU6ZS5wYXJlbnROb2RlJiYhaGUuaGFzT3duUHJvcGVydHkoZS5wYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfX1jbGFzcyBQYXJzZUNvbnRleHR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMucGFyc2VyPWUsdGhpcy5vcHRpb25zPXQsdGhpcy5pc09wZW49bix0aGlzLm9wZW49MCx0aGlzLmxvY2FsUHJlc2VydmVXUz0hMTtsZXQgcixvPXQudG9wTm9kZSxpPXdzT3B0aW9uc0ZvcihudWxsLHQucHJlc2VydmVXaGl0ZXNwYWNlLDApfChuPzQ6MCk7cj1vP25ldyBOb2RlQ29udGV4dChvLnR5cGUsby5hdHRycyxsZS5ub25lLCEwLHQudG9wTWF0Y2h8fG8udHlwZS5jb250ZW50TWF0Y2gsaSk6bmV3IE5vZGVDb250ZXh0KG4/bnVsbDplLnNjaGVtYS50b3BOb2RlVHlwZSxudWxsLGxlLm5vbmUsITAsbnVsbCxpKSx0aGlzLm5vZGVzPVtyXSx0aGlzLmZpbmQ9dC5maW5kUG9zaXRpb25zLHRoaXMubmVlZHNCbG9jaz0hMX1nZXQgdG9wKCl7cmV0dXJuIHRoaXMubm9kZXNbdGhpcy5vcGVuXX1hZGRET00oZSx0KXszPT1lLm5vZGVUeXBlP3RoaXMuYWRkVGV4dE5vZGUoZSx0KToxPT1lLm5vZGVUeXBlJiZ0aGlzLmFkZEVsZW1lbnQoZSx0KX1hZGRUZXh0Tm9kZShlLHQpe2xldCBuPWUubm9kZVZhbHVlLHI9dGhpcy50b3Asbz0yJnIub3B0aW9ucz8iZnVsbCI6dGhpcy5sb2NhbFByZXNlcnZlV1N8fCgxJnIub3B0aW9ucyk+MCx7c2NoZW1hOml9PXRoaXMucGFyc2VyO2lmKCJmdWxsIj09PW98fHIuaW5saW5lQ29udGV4dChlKXx8L1teIFx0XHJcblx1MDAwY10vLnRlc3Qobikpe2lmKG8paWYoImZ1bGwiPT09byluPW4ucmVwbGFjZSgvXHJcbj8vZywiXG4iKTtlbHNlIGlmKGkubGluZWJyZWFrUmVwbGFjZW1lbnQmJi9bXHJcbl0vLnRlc3QobikmJnRoaXMudG9wLmZpbmRXcmFwcGluZyhpLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKSl7bGV0IGU9bi5zcGxpdCgvXHI/XG58XHIvKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyluJiZ0aGlzLmluc2VydE5vZGUoaS5saW5lYnJlYWtSZXBsYWNlbWVudC5jcmVhdGUoKSx0LCEwKSxlW25dJiZ0aGlzLmluc2VydE5vZGUoaS50ZXh0KGVbbl0pLHQsIS9cUy8udGVzdChlW25dKSk7bj0iIn1lbHNlIG49bi5yZXBsYWNlKC9ccj9cbnxcci9nLCIgIik7ZWxzZSBpZihuPW4ucmVwbGFjZSgvWyBcdFxyXG5cdTAwMGNdKy9nLCIgIiksL15bIFx0XHJcblx1MDAwY10vLnRlc3QobikmJnRoaXMub3Blbj09dGhpcy5ub2Rlcy5sZW5ndGgtMSl7bGV0IHQ9ci5jb250ZW50W3IuY29udGVudC5sZW5ndGgtMV0sbz1lLnByZXZpb3VzU2libGluZzsoIXR8fG8mJiJCUiI9PW8ubm9kZU5hbWV8fHQuaXNUZXh0JiYvWyBcdFxyXG5cdTAwMGNdJC8udGVzdCh0LnRleHQpKSYmKG49bi5zbGljZSgxKSl9biYmdGhpcy5pbnNlcnROb2RlKGkudGV4dChuKSx0LCEvXFMvLnRlc3QobikpLHRoaXMuZmluZEluVGV4dChlKX1lbHNlIHRoaXMuZmluZEluc2lkZShlKX1hZGRFbGVtZW50KGUsdCxuKXtsZXQgcj10aGlzLmxvY2FsUHJlc2VydmVXUyxvPXRoaXMudG9wOygiUFJFIj09ZS50YWdOYW1lfHwvcHJlLy50ZXN0KGUuc3R5bGUmJmUuc3R5bGUud2hpdGVTcGFjZSkpJiYodGhpcy5sb2NhbFByZXNlcnZlV1M9ITApO2xldCBpLHM9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO21lLmhhc093blByb3BlcnR5KHMpJiZ0aGlzLnBhcnNlci5ub3JtYWxpemVMaXN0cyYmZnVuY3Rpb24oZSl7Zm9yKGxldCB0PWUuZmlyc3RDaGlsZCxuPW51bGw7dDt0PXQubmV4dFNpYmxpbmcpe2xldCBlPTE9PXQubm9kZVR5cGU/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGw7ZSYmbWUuaGFzT3duUHJvcGVydHkoZSkmJm4/KG4uYXBwZW5kQ2hpbGQodCksdD1uKToibGkiPT1lP249dDplJiYobj1udWxsKX19KGUpO2xldCBsPXRoaXMub3B0aW9ucy5ydWxlRnJvbU5vZGUmJnRoaXMub3B0aW9ucy5ydWxlRnJvbU5vZGUoZSl8fChpPXRoaXMucGFyc2VyLm1hdGNoVGFnKGUsdGhpcyxuKSk7ZTppZihsP2wuaWdub3JlOnVlLmhhc093blByb3BlcnR5KHMpKXRoaXMuZmluZEluc2lkZShlKSx0aGlzLmlnbm9yZUZhbGxiYWNrKGUsdCk7ZWxzZSBpZighbHx8bC5za2lwfHxsLmNsb3NlUGFyZW50KXtsJiZsLmNsb3NlUGFyZW50P3RoaXMub3Blbj1NYXRoLm1heCgwLHRoaXMub3Blbi0xKTpsJiZsLnNraXAubm9kZVR5cGUmJihlPWwuc2tpcCk7bGV0IG4scj10aGlzLm5lZWRzQmxvY2s7aWYoaGUuaGFzT3duUHJvcGVydHkocykpby5jb250ZW50Lmxlbmd0aCYmby5jb250ZW50WzBdLmlzSW5saW5lJiZ0aGlzLm9wZW4mJih0aGlzLm9wZW4tLSxvPXRoaXMudG9wKSxuPSEwLG8udHlwZXx8KHRoaXMubmVlZHNCbG9jaz0hMCk7ZWxzZSBpZighZS5maXJzdENoaWxkKXt0aGlzLmxlYWZGYWxsYmFjayhlLHQpO2JyZWFrIGV9bGV0IGk9bCYmbC5za2lwP3Q6dGhpcy5yZWFkU3R5bGVzKGUsdCk7aSYmdGhpcy5hZGRBbGwoZSxpKSxuJiZ0aGlzLnN5bmMobyksdGhpcy5uZWVkc0Jsb2NrPXJ9ZWxzZXtsZXQgbj10aGlzLnJlYWRTdHlsZXMoZSx0KTtuJiZ0aGlzLmFkZEVsZW1lbnRCeVJ1bGUoZSxsLG4sITE9PT1sLmNvbnN1bWluZz9pOnZvaWQgMCl9dGhpcy5sb2NhbFByZXNlcnZlV1M9cn1sZWFmRmFsbGJhY2soZSx0KXsiQlIiPT1lLm5vZGVOYW1lJiZ0aGlzLnRvcC50eXBlJiZ0aGlzLnRvcC50eXBlLmlubGluZUNvbnRlbnQmJnRoaXMuYWRkVGV4dE5vZGUoZS5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcbiIpLHQpfWlnbm9yZUZhbGxiYWNrKGUsdCl7IkJSIiE9ZS5ub2RlTmFtZXx8dGhpcy50b3AudHlwZSYmdGhpcy50b3AudHlwZS5pbmxpbmVDb250ZW50fHx0aGlzLmZpbmRQbGFjZSh0aGlzLnBhcnNlci5zY2hlbWEudGV4dCgiLSIpLHQsITApfXJlYWRTdHlsZXMoZSx0KXtsZXQgbj1lLnN0eWxlO2lmKG4mJm4ubGVuZ3RoKWZvcihsZXQgZT0wO2U8dGhpcy5wYXJzZXIubWF0Y2hlZFN0eWxlcy5sZW5ndGg7ZSsrKXtsZXQgcj10aGlzLnBhcnNlci5tYXRjaGVkU3R5bGVzW2VdLG89bi5nZXRQcm9wZXJ0eVZhbHVlKHIpO2lmKG8pZm9yKGxldCBlOzspe2xldCBuPXRoaXMucGFyc2VyLm1hdGNoU3R5bGUocixvLHRoaXMsZSk7aWYoIW4pYnJlYWs7aWYobi5pZ25vcmUpcmV0dXJuIG51bGw7aWYodD1uLmNsZWFyTWFyaz90LmZpbHRlcihlPT4hbi5jbGVhck1hcmsoZSkpOnQuY29uY2F0KHRoaXMucGFyc2VyLnNjaGVtYS5tYXJrc1tuLm1hcmtdLmNyZWF0ZShuLmF0dHJzKSksITEhPT1uLmNvbnN1bWluZylicmVhaztlPW59fXJldHVybiB0fWFkZEVsZW1lbnRCeVJ1bGUoZSx0LG4scil7bGV0IG8saTtpZih0Lm5vZGUpaWYoaT10aGlzLnBhcnNlci5zY2hlbWEubm9kZXNbdC5ub2RlXSxpLmlzTGVhZil0aGlzLmluc2VydE5vZGUoaS5jcmVhdGUodC5hdHRycyksbiwiQlIiPT1lLm5vZGVOYW1lKXx8dGhpcy5sZWFmRmFsbGJhY2soZSxuKTtlbHNle2xldCBlPXRoaXMuZW50ZXIoaSx0LmF0dHJzfHxudWxsLG4sdC5wcmVzZXJ2ZVdoaXRlc3BhY2UpO2UmJihvPSEwLG49ZSl9ZWxzZXtsZXQgZT10aGlzLnBhcnNlci5zY2hlbWEubWFya3NbdC5tYXJrXTtuPW4uY29uY2F0KGUuY3JlYXRlKHQuYXR0cnMpKX1sZXQgcz10aGlzLnRvcDtpZihpJiZpLmlzTGVhZil0aGlzLmZpbmRJbnNpZGUoZSk7ZWxzZSBpZihyKXRoaXMuYWRkRWxlbWVudChlLG4scik7ZWxzZSBpZih0LmdldENvbnRlbnQpdGhpcy5maW5kSW5zaWRlKGUpLHQuZ2V0Q29udGVudChlLHRoaXMucGFyc2VyLnNjaGVtYSkuZm9yRWFjaChlPT50aGlzLmluc2VydE5vZGUoZSxuLCExKSk7ZWxzZXtsZXQgcj1lOyJzdHJpbmciPT10eXBlb2YgdC5jb250ZW50RWxlbWVudD9yPWUucXVlcnlTZWxlY3Rvcih0LmNvbnRlbnRFbGVtZW50KToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb250ZW50RWxlbWVudD9yPXQuY29udGVudEVsZW1lbnQoZSk6dC5jb250ZW50RWxlbWVudCYmKHI9dC5jb250ZW50RWxlbWVudCksdGhpcy5maW5kQXJvdW5kKGUsciwhMCksdGhpcy5hZGRBbGwocixuKSx0aGlzLmZpbmRBcm91bmQoZSxyLCExKX1vJiZ0aGlzLnN5bmMocykmJnRoaXMub3Blbi0tfWFkZEFsbChlLHQsbixyKXtsZXQgbz1ufHwwO2ZvcihsZXQgaT1uP2UuY2hpbGROb2Rlc1tuXTplLmZpcnN0Q2hpbGQscz1udWxsPT1yP251bGw6ZS5jaGlsZE5vZGVzW3JdO2khPXM7aT1pLm5leHRTaWJsaW5nLCsrbyl0aGlzLmZpbmRBdFBvaW50KGUsbyksdGhpcy5hZGRET00oaSx0KTt0aGlzLmZpbmRBdFBvaW50KGUsbyl9ZmluZFBsYWNlKGUsdCxuKXtsZXQgcixvO2ZvcihsZXQgdD10aGlzLm9wZW4saT0wO3Q+PTA7dC0tKXtsZXQgcz10aGlzLm5vZGVzW3RdLGw9cy5maW5kV3JhcHBpbmcoZSk7aWYobCYmKCFyfHxyLmxlbmd0aD5sLmxlbmd0aCtpKSYmKHI9bCxvPXMsIWwubGVuZ3RoKSlicmVhaztpZihzLnNvbGlkKXtpZihuKWJyZWFrO2krPTJ9fWlmKCFyKXJldHVybiBudWxsO3RoaXMuc3luYyhvKTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl0PXRoaXMuZW50ZXJJbm5lcihyW2VdLG51bGwsdCwhMSk7cmV0dXJuIHR9aW5zZXJ0Tm9kZShlLHQsbil7aWYoZS5pc0lubGluZSYmdGhpcy5uZWVkc0Jsb2NrJiYhdGhpcy50b3AudHlwZSl7bGV0IGU9dGhpcy50ZXh0YmxvY2tGcm9tQ29udGV4dCgpO2UmJih0PXRoaXMuZW50ZXJJbm5lcihlLG51bGwsdCkpfWxldCByPXRoaXMuZmluZFBsYWNlKGUsdCxuKTtpZihyKXt0aGlzLmNsb3NlRXh0cmEoKTtsZXQgdD10aGlzLnRvcDt0Lm1hdGNoJiYodC5tYXRjaD10Lm1hdGNoLm1hdGNoVHlwZShlLnR5cGUpKTtsZXQgbj1sZS5ub25lO2ZvcihsZXQgbyBvZiByLmNvbmNhdChlLm1hcmtzKSkodC50eXBlP3QudHlwZS5hbGxvd3NNYXJrVHlwZShvLnR5cGUpOm1hcmtNYXlBcHBseShvLnR5cGUsZS50eXBlKSkmJihuPW8uYWRkVG9TZXQobikpO3JldHVybiB0LmNvbnRlbnQucHVzaChlLm1hcmsobikpLCEwfXJldHVybiExfWVudGVyKGUsdCxuLHIpe2xldCBvPXRoaXMuZmluZFBsYWNlKGUuY3JlYXRlKHQpLG4sITEpO3JldHVybiBvJiYobz10aGlzLmVudGVySW5uZXIoZSx0LG4sITAscikpLG99ZW50ZXJJbm5lcihlLHQsbixyPSExLG8pe3RoaXMuY2xvc2VFeHRyYSgpO2xldCBpPXRoaXMudG9wO2kubWF0Y2g9aS5tYXRjaCYmaS5tYXRjaC5tYXRjaFR5cGUoZSk7bGV0IHM9d3NPcHRpb25zRm9yKGUsbyxpLm9wdGlvbnMpOzQmaS5vcHRpb25zJiYwPT1pLmNvbnRlbnQubGVuZ3RoJiYoc3w9NCk7bGV0IGw9bGUubm9uZTtyZXR1cm4gbj1uLmZpbHRlcih0PT4hKGkudHlwZT9pLnR5cGUuYWxsb3dzTWFya1R5cGUodC50eXBlKTptYXJrTWF5QXBwbHkodC50eXBlLGUpKXx8KGw9dC5hZGRUb1NldChsKSwhMSkpLHRoaXMubm9kZXMucHVzaChuZXcgTm9kZUNvbnRleHQoZSx0LGwscixudWxsLHMpKSx0aGlzLm9wZW4rKyxufWNsb3NlRXh0cmEoZT0hMSl7bGV0IHQ9dGhpcy5ub2Rlcy5sZW5ndGgtMTtpZih0PnRoaXMub3Blbil7Zm9yKDt0PnRoaXMub3Blbjt0LS0pdGhpcy5ub2Rlc1t0LTFdLmNvbnRlbnQucHVzaCh0aGlzLm5vZGVzW3RdLmZpbmlzaChlKSk7dGhpcy5ub2Rlcy5sZW5ndGg9dGhpcy5vcGVuKzF9fWZpbmlzaCgpe3JldHVybiB0aGlzLm9wZW49MCx0aGlzLmNsb3NlRXh0cmEodGhpcy5pc09wZW4pLHRoaXMubm9kZXNbMF0uZmluaXNoKCEoIXRoaXMuaXNPcGVuJiYhdGhpcy5vcHRpb25zLnRvcE9wZW4pKX1zeW5jKGUpe2ZvcihsZXQgdD10aGlzLm9wZW47dD49MDt0LS0pe2lmKHRoaXMubm9kZXNbdF09PWUpcmV0dXJuIHRoaXMub3Blbj10LCEwO3RoaXMubG9jYWxQcmVzZXJ2ZVdTJiYodGhpcy5ub2Rlc1t0XS5vcHRpb25zfD0xKX1yZXR1cm4hMX1nZXQgY3VycmVudFBvcygpe3RoaXMuY2xvc2VFeHRyYSgpO2xldCBlPTA7Zm9yKGxldCB0PXRoaXMub3Blbjt0Pj0wO3QtLSl7bGV0IG49dGhpcy5ub2Rlc1t0XS5jb250ZW50O2ZvcihsZXQgdD1uLmxlbmd0aC0xO3Q+PTA7dC0tKWUrPW5bdF0ubm9kZVNpemU7dCYmZSsrfXJldHVybiBlfWZpbmRBdFBvaW50KGUsdCl7aWYodGhpcy5maW5kKWZvcihsZXQgbj0wO248dGhpcy5maW5kLmxlbmd0aDtuKyspdGhpcy5maW5kW25dLm5vZGU9PWUmJnRoaXMuZmluZFtuXS5vZmZzZXQ9PXQmJih0aGlzLmZpbmRbbl0ucG9zPXRoaXMuY3VycmVudFBvcyl9ZmluZEluc2lkZShlKXtpZih0aGlzLmZpbmQpZm9yKGxldCB0PTA7dDx0aGlzLmZpbmQubGVuZ3RoO3QrKyludWxsPT10aGlzLmZpbmRbdF0ucG9zJiYxPT1lLm5vZGVUeXBlJiZlLmNvbnRhaW5zKHRoaXMuZmluZFt0XS5ub2RlKSYmKHRoaXMuZmluZFt0XS5wb3M9dGhpcy5jdXJyZW50UG9zKX1maW5kQXJvdW5kKGUsdCxuKXtpZihlIT10JiZ0aGlzLmZpbmQpZm9yKGxldCByPTA7cjx0aGlzLmZpbmQubGVuZ3RoO3IrKylpZihudWxsPT10aGlzLmZpbmRbcl0ucG9zJiYxPT1lLm5vZGVUeXBlJiZlLmNvbnRhaW5zKHRoaXMuZmluZFtyXS5ub2RlKSl7dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzLmZpbmRbcl0ubm9kZSkmKG4/Mjo0KSYmKHRoaXMuZmluZFtyXS5wb3M9dGhpcy5jdXJyZW50UG9zKX19ZmluZEluVGV4dChlKXtpZih0aGlzLmZpbmQpZm9yKGxldCB0PTA7dDx0aGlzLmZpbmQubGVuZ3RoO3QrKyl0aGlzLmZpbmRbdF0ubm9kZT09ZSYmKHRoaXMuZmluZFt0XS5wb3M9dGhpcy5jdXJyZW50UG9zLShlLm5vZGVWYWx1ZS5sZW5ndGgtdGhpcy5maW5kW3RdLm9mZnNldCkpfW1hdGNoZXNDb250ZXh0KGUpe2lmKGUuaW5kZXhPZigifCIpPi0xKXJldHVybiBlLnNwbGl0KC9ccypcfFxzKi8pLnNvbWUodGhpcy5tYXRjaGVzQ29udGV4dCx0aGlzKTtsZXQgdD1lLnNwbGl0KCIvIiksbj10aGlzLm9wdGlvbnMuY29udGV4dCxyPSEodGhpcy5pc09wZW58fG4mJm4ucGFyZW50LnR5cGUhPXRoaXMubm9kZXNbMF0udHlwZSksbz0tKG4/bi5kZXB0aCsxOjApKyhyPzA6MSksbWF0Y2g9KGUsaSk9Pntmb3IoO2U+PTA7ZS0tKXtsZXQgcz10W2VdO2lmKCIiPT1zKXtpZihlPT10Lmxlbmd0aC0xfHwwPT1lKWNvbnRpbnVlO2Zvcig7aT49bztpLS0paWYobWF0Y2goZS0xLGkpKXJldHVybiEwO3JldHVybiExfXtsZXQgZT1pPjB8fDA9PWkmJnI/dGhpcy5ub2Rlc1tpXS50eXBlOm4mJmk+PW8/bi5ub2RlKGktbykudHlwZTpudWxsO2lmKCFlfHxlLm5hbWUhPXMmJiFlLmlzSW5Hcm91cChzKSlyZXR1cm4hMTtpLS19fXJldHVybiEwfTtyZXR1cm4gbWF0Y2godC5sZW5ndGgtMSx0aGlzLm9wZW4pfXRleHRibG9ja0Zyb21Db250ZXh0KCl7bGV0IGU9dGhpcy5vcHRpb25zLmNvbnRleHQ7aWYoZSlmb3IobGV0IHQ9ZS5kZXB0aDt0Pj0wO3QtLSl7bGV0IG49ZS5ub2RlKHQpLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcih0KSkuZGVmYXVsdFR5cGU7aWYobiYmbi5pc1RleHRibG9jayYmbi5kZWZhdWx0QXR0cnMpcmV0dXJuIG59Zm9yKGxldCBlIGluIHRoaXMucGFyc2VyLnNjaGVtYS5ub2Rlcyl7bGV0IHQ9dGhpcy5wYXJzZXIuc2NoZW1hLm5vZGVzW2VdO2lmKHQuaXNUZXh0YmxvY2smJnQuZGVmYXVsdEF0dHJzKXJldHVybiB0fX19ZnVuY3Rpb24gbWF0Y2hlcyhlLHQpe3JldHVybihlLm1hdGNoZXN8fGUubXNNYXRjaGVzU2VsZWN0b3J8fGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxlLm1vek1hdGNoZXNTZWxlY3RvcikuY2FsbChlLHQpfWZ1bmN0aW9uIGNvcHkoZSl7bGV0IHQ9e307Zm9yKGxldCBuIGluIGUpdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIG1hcmtNYXlBcHBseShlLHQpe2xldCBuPXQuc2NoZW1hLm5vZGVzO2ZvcihsZXQgciBpbiBuKXtsZXQgbz1uW3JdO2lmKCFvLmFsbG93c01hcmtUeXBlKGUpKWNvbnRpbnVlO2xldCBpPVtdLHNjYW49ZT0+e2kucHVzaChlKTtmb3IobGV0IG49MDtuPGUuZWRnZUNvdW50O24rKyl7bGV0e3R5cGU6cixuZXh0Om99PWUuZWRnZShuKTtpZihyPT10KXJldHVybiEwO2lmKGkuaW5kZXhPZihvKTwwJiZzY2FuKG8pKXJldHVybiEwfX07aWYoc2NhbihvLmNvbnRlbnRNYXRjaCkpcmV0dXJuITB9fWNsYXNzIERPTVNlcmlhbGl6ZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVzPWUsdGhpcy5tYXJrcz10fXNlcmlhbGl6ZUZyYWdtZW50KGUsdD17fSxuKXtufHwobj1kb2MkMSh0KS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO2xldCByPW4sbz1bXTtyZXR1cm4gZS5mb3JFYWNoKGU9PntpZihvLmxlbmd0aHx8ZS5tYXJrcy5sZW5ndGgpe2xldCBuPTAsaT0wO2Zvcig7bjxvLmxlbmd0aCYmaTxlLm1hcmtzLmxlbmd0aDspe2xldCB0PWUubWFya3NbaV07aWYodGhpcy5tYXJrc1t0LnR5cGUubmFtZV0pe2lmKCF0LmVxKG9bbl1bMF0pfHwhMT09PXQudHlwZS5zcGVjLnNwYW5uaW5nKWJyZWFrO24rKyxpKyt9ZWxzZSBpKyt9Zm9yKDtuPG8ubGVuZ3RoOylyPW8ucG9wKClbMV07Zm9yKDtpPGUubWFya3MubGVuZ3RoOyl7bGV0IG49ZS5tYXJrc1tpKytdLHM9dGhpcy5zZXJpYWxpemVNYXJrKG4sZS5pc0lubGluZSx0KTtzJiYoby5wdXNoKFtuLHJdKSxyLmFwcGVuZENoaWxkKHMuZG9tKSxyPXMuY29udGVudERPTXx8cy5kb20pfX1yLmFwcGVuZENoaWxkKHRoaXMuc2VyaWFsaXplTm9kZUlubmVyKGUsdCkpfSksbn1zZXJpYWxpemVOb2RlSW5uZXIoZSx0KXtsZXR7ZG9tOm4sY29udGVudERPTTpyfT1yZW5kZXJTcGVjKGRvYyQxKHQpLHRoaXMubm9kZXNbZS50eXBlLm5hbWVdKGUpLG51bGwsZS5hdHRycyk7aWYocil7aWYoZS5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBub3QgYWxsb3dlZCBpbiBhIGxlYWYgbm9kZSBzcGVjIik7dGhpcy5zZXJpYWxpemVGcmFnbWVudChlLmNvbnRlbnQsdCxyKX1yZXR1cm4gbn1zZXJpYWxpemVOb2RlKGUsdD17fSl7bGV0IG49dGhpcy5zZXJpYWxpemVOb2RlSW5uZXIoZSx0KTtmb3IobGV0IHI9ZS5tYXJrcy5sZW5ndGgtMTtyPj0wO3ItLSl7bGV0IG89dGhpcy5zZXJpYWxpemVNYXJrKGUubWFya3Nbcl0sZS5pc0lubGluZSx0KTtvJiYoKG8uY29udGVudERPTXx8by5kb20pLmFwcGVuZENoaWxkKG4pLG49by5kb20pfXJldHVybiBufXNlcmlhbGl6ZU1hcmsoZSx0LG49e30pe2xldCByPXRoaXMubWFya3NbZS50eXBlLm5hbWVdO3JldHVybiByJiZyZW5kZXJTcGVjKGRvYyQxKG4pLHIoZSx0KSxudWxsLGUuYXR0cnMpfXN0YXRpYyByZW5kZXJTcGVjKGUsdCxuPW51bGwscil7cmV0dXJuIHJlbmRlclNwZWMoZSx0LG4scil9c3RhdGljIGZyb21TY2hlbWEoZSl7cmV0dXJuIGUuY2FjaGVkLmRvbVNlcmlhbGl6ZXJ8fChlLmNhY2hlZC5kb21TZXJpYWxpemVyPW5ldyBET01TZXJpYWxpemVyKHRoaXMubm9kZXNGcm9tU2NoZW1hKGUpLHRoaXMubWFya3NGcm9tU2NoZW1hKGUpKSl9c3RhdGljIG5vZGVzRnJvbVNjaGVtYShlKXtsZXQgdD1nYXRoZXJUb0RPTShlLm5vZGVzKTtyZXR1cm4gdC50ZXh0fHwodC50ZXh0PWU9PmUudGV4dCksdH1zdGF0aWMgbWFya3NGcm9tU2NoZW1hKGUpe3JldHVybiBnYXRoZXJUb0RPTShlLm1hcmtzKX19ZnVuY3Rpb24gZ2F0aGVyVG9ET00oZSl7bGV0IHQ9e307Zm9yKGxldCBuIGluIGUpe2xldCByPWVbbl0uc3BlYy50b0RPTTtyJiYodFtuXT1yKX1yZXR1cm4gdH1mdW5jdGlvbiBkb2MkMShlKXtyZXR1cm4gZS5kb2N1bWVudHx8d2luZG93LmRvY3VtZW50fWNvbnN0IHllPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHN1c3BpY2lvdXNBdHRyaWJ1dGVzKGUpe2xldCB0PXllLmdldChlKTtyZXR1cm4gdm9pZCAwPT09dCYmeWUuc2V0KGUsdD1mdW5jdGlvbihlKXtsZXQgdD1udWxsO2Z1bmN0aW9uIHNjYW4oZSl7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpaWYoInN0cmluZyI9PXR5cGVvZiBlWzBdKXR8fCh0PVtdKSx0LnB1c2goZSk7ZWxzZSBmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylzY2FuKGVbdF0pO2Vsc2UgZm9yKGxldCB0IGluIGUpc2NhbihlW3RdKX1yZXR1cm4gc2NhbihlKSx0fShlKSksdH1mdW5jdGlvbiByZW5kZXJTcGVjKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm57ZG9tOmUuY3JlYXRlVGV4dE5vZGUodCl9O2lmKG51bGwhPXQubm9kZVR5cGUpcmV0dXJue2RvbTp0fTtpZih0LmRvbSYmbnVsbCE9dC5kb20ubm9kZVR5cGUpcmV0dXJuIHQ7bGV0IG8saT10WzBdO2lmKCJzdHJpbmciIT10eXBlb2YgaSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBhcnJheSBwYXNzZWQgdG8gcmVuZGVyU3BlYyIpO2lmKHImJihvPXN1c3BpY2lvdXNBdHRyaWJ1dGVzKHIpKSYmby5pbmRleE9mKHQpPi0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2luZyBhbiBhcnJheSBmcm9tIGFuIGF0dHJpYnV0ZSBvYmplY3QgYXMgYSBET00gc3BlYy4gVGhpcyBtYXkgYmUgYW4gYXR0ZW1wdGVkIGNyb3NzIHNpdGUgc2NyaXB0aW5nIGF0dGFjay4iKTtsZXQgcyxsPWkuaW5kZXhPZigiICIpO2w+MCYmKG49aS5zbGljZSgwLGwpLGk9aS5zbGljZShsKzEpKTtsZXQgYT1uP2UuY3JlYXRlRWxlbWVudE5TKG4saSk6ZS5jcmVhdGVFbGVtZW50KGkpLGM9dFsxXSxkPTE7aWYoYyYmIm9iamVjdCI9PXR5cGVvZiBjJiZudWxsPT1jLm5vZGVUeXBlJiYhQXJyYXkuaXNBcnJheShjKSl7ZD0yO2ZvcihsZXQgZSBpbiBjKWlmKG51bGwhPWNbZV0pe2xldCB0PWUuaW5kZXhPZigiICIpO3Q+MD9hLnNldEF0dHJpYnV0ZU5TKGUuc2xpY2UoMCx0KSxlLnNsaWNlKHQrMSksY1tlXSk6InN0eWxlIj09ZSYmYS5zdHlsZT9hLnN0eWxlLmNzc1RleHQ9Y1tlXTphLnNldEF0dHJpYnV0ZShlLGNbZV0pfX1mb3IobGV0IG89ZDtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvXTtpZigwPT09aSl7aWYobzx0Lmxlbmd0aC0xfHxvPmQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBtdXN0IGJlIHRoZSBvbmx5IGNoaWxkIG9mIGl0cyBwYXJlbnQgbm9kZSIpO3JldHVybntkb206YSxjb250ZW50RE9NOmF9fXtsZXR7ZG9tOnQsY29udGVudERPTTpvfT1yZW5kZXJTcGVjKGUsaSxuLHIpO2lmKGEuYXBwZW5kQ2hpbGQodCksbyl7aWYocyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTXVsdGlwbGUgY29udGVudCBob2xlcyIpO3M9b319fXJldHVybntkb206YSxjb250ZW50RE9NOnN9fWNvbnN0IHdlPU1hdGgucG93KDIsMTYpO2Z1bmN0aW9uIG1ha2VSZWNvdmVyKGUsdCl7cmV0dXJuIGUrdCp3ZX1mdW5jdGlvbiByZWNvdmVySW5kZXgoZSl7cmV0dXJuIDY1NTM1JmV9Y2xhc3MgTWFwUmVzdWx0e2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnBvcz1lLHRoaXMuZGVsSW5mbz10LHRoaXMucmVjb3Zlcj1ufWdldCBkZWxldGVkKCl7cmV0dXJuKDgmdGhpcy5kZWxJbmZvKT4wfWdldCBkZWxldGVkQmVmb3JlKCl7cmV0dXJuKDUmdGhpcy5kZWxJbmZvKT4wfWdldCBkZWxldGVkQWZ0ZXIoKXtyZXR1cm4oNiZ0aGlzLmRlbEluZm8pPjB9Z2V0IGRlbGV0ZWRBY3Jvc3MoKXtyZXR1cm4oNCZ0aGlzLmRlbEluZm8pPjB9fWNsYXNzIFN0ZXBNYXB7Y29uc3RydWN0b3IoZSx0PSExKXtpZih0aGlzLnJhbmdlcz1lLHRoaXMuaW52ZXJ0ZWQ9dCwhZS5sZW5ndGgmJlN0ZXBNYXAuZW1wdHkpcmV0dXJuIFN0ZXBNYXAuZW1wdHl9cmVjb3ZlcihlKXtsZXQgdD0wLG49cmVjb3ZlckluZGV4KGUpO2lmKCF0aGlzLmludmVydGVkKWZvcihsZXQgZT0wO2U8bjtlKyspdCs9dGhpcy5yYW5nZXNbMyplKzJdLXRoaXMucmFuZ2VzWzMqZSsxXTtyZXR1cm4gdGhpcy5yYW5nZXNbMypuXSt0K2Z1bmN0aW9uKGUpe3JldHVybihlLSg2NTUzNSZlKSkvd2V9KGUpfW1hcFJlc3VsdChlLHQ9MSl7cmV0dXJuIHRoaXMuX21hcChlLHQsITEpfW1hcChlLHQ9MSl7cmV0dXJuIHRoaXMuX21hcChlLHQsITApfV9tYXAoZSx0LG4pe2xldCByPTAsbz10aGlzLmludmVydGVkPzI6MSxpPXRoaXMuaW52ZXJ0ZWQ/MToyO2ZvcihsZXQgcz0wO3M8dGhpcy5yYW5nZXMubGVuZ3RoO3MrPTMpe2xldCBsPXRoaXMucmFuZ2VzW3NdLSh0aGlzLmludmVydGVkP3I6MCk7aWYobD5lKWJyZWFrO2xldCBhPXRoaXMucmFuZ2VzW3Mrb10sYz10aGlzLnJhbmdlc1tzK2ldLGQ9bCthO2lmKGU8PWQpe2xldCBvPWwrcisoKGE/ZT09bD8tMTplPT1kPzE6dDp0KTwwPzA6Yyk7aWYobilyZXR1cm4gbztsZXQgaT1lPT0odDwwP2w6ZCk/bnVsbDptYWtlUmVjb3ZlcihzLzMsZS1sKSxwPWU9PWw/MjplPT1kPzE6NDtyZXR1cm4odDwwP2UhPWw6ZSE9ZCkmJihwfD04KSxuZXcgTWFwUmVzdWx0KG8scCxpKX1yKz1jLWF9cmV0dXJuIG4/ZStyOm5ldyBNYXBSZXN1bHQoZStyLDAsbnVsbCl9dG91Y2hlcyhlLHQpe2xldCBuPTAscj1yZWNvdmVySW5kZXgodCksbz10aGlzLmludmVydGVkPzI6MSxpPXRoaXMuaW52ZXJ0ZWQ/MToyO2ZvcihsZXQgdD0wO3Q8dGhpcy5yYW5nZXMubGVuZ3RoO3QrPTMpe2xldCBzPXRoaXMucmFuZ2VzW3RdLSh0aGlzLmludmVydGVkP246MCk7aWYocz5lKWJyZWFrO2xldCBsPXRoaXMucmFuZ2VzW3Qrb107aWYoZTw9cytsJiZ0PT0zKnIpcmV0dXJuITA7bis9dGhpcy5yYW5nZXNbdCtpXS1sfXJldHVybiExfWZvckVhY2goZSl7bGV0IHQ9dGhpcy5pbnZlcnRlZD8yOjEsbj10aGlzLmludmVydGVkPzE6Mjtmb3IobGV0IHI9MCxvPTA7cjx0aGlzLnJhbmdlcy5sZW5ndGg7cis9Myl7bGV0IGk9dGhpcy5yYW5nZXNbcl0scz1pLSh0aGlzLmludmVydGVkP286MCksbD1pKyh0aGlzLmludmVydGVkPzA6byksYT10aGlzLnJhbmdlc1tyK3RdLGM9dGhpcy5yYW5nZXNbcituXTtlKHMscythLGwsbCtjKSxvKz1jLWF9fWludmVydCgpe3JldHVybiBuZXcgU3RlcE1hcCh0aGlzLnJhbmdlcywhdGhpcy5pbnZlcnRlZCl9dG9TdHJpbmcoKXtyZXR1cm4odGhpcy5pbnZlcnRlZD8iLSI6IiIpK0pTT04uc3RyaW5naWZ5KHRoaXMucmFuZ2VzKX1zdGF0aWMgb2Zmc2V0KGUpe3JldHVybiAwPT1lP1N0ZXBNYXAuZW1wdHk6bmV3IFN0ZXBNYXAoZTwwP1swLC1lLDBdOlswLDAsZV0pfX1TdGVwTWFwLmVtcHR5PW5ldyBTdGVwTWFwKFtdKTtjbGFzcyBNYXBwaW5ne2NvbnN0cnVjdG9yKGUsdCxuPTAscj0oZT9lLmxlbmd0aDowKSl7dGhpcy5taXJyb3I9dCx0aGlzLmZyb209bix0aGlzLnRvPXIsdGhpcy5fbWFwcz1lfHxbXSx0aGlzLm93bkRhdGE9IShlfHx0KX1nZXQgbWFwcygpe3JldHVybiB0aGlzLl9tYXBzfXNsaWNlKGU9MCx0PXRoaXMubWFwcy5sZW5ndGgpe3JldHVybiBuZXcgTWFwcGluZyh0aGlzLl9tYXBzLHRoaXMubWlycm9yLGUsdCl9YXBwZW5kTWFwKGUsdCl7dGhpcy5vd25EYXRhfHwodGhpcy5fbWFwcz10aGlzLl9tYXBzLnNsaWNlKCksdGhpcy5taXJyb3I9dGhpcy5taXJyb3ImJnRoaXMubWlycm9yLnNsaWNlKCksdGhpcy5vd25EYXRhPSEwKSx0aGlzLnRvPXRoaXMuX21hcHMucHVzaChlKSxudWxsIT10JiZ0aGlzLnNldE1pcnJvcih0aGlzLl9tYXBzLmxlbmd0aC0xLHQpfWFwcGVuZE1hcHBpbmcoZSl7Zm9yKGxldCB0PTAsbj10aGlzLl9tYXBzLmxlbmd0aDt0PGUuX21hcHMubGVuZ3RoO3QrKyl7bGV0IHI9ZS5nZXRNaXJyb3IodCk7dGhpcy5hcHBlbmRNYXAoZS5fbWFwc1t0XSxudWxsIT1yJiZyPHQ/bityOnZvaWQgMCl9fWdldE1pcnJvcihlKXtpZih0aGlzLm1pcnJvcilmb3IobGV0IHQ9MDt0PHRoaXMubWlycm9yLmxlbmd0aDt0KyspaWYodGhpcy5taXJyb3JbdF09PWUpcmV0dXJuIHRoaXMubWlycm9yW3QrKHQlMj8tMToxKV19c2V0TWlycm9yKGUsdCl7dGhpcy5taXJyb3J8fCh0aGlzLm1pcnJvcj1bXSksdGhpcy5taXJyb3IucHVzaChlLHQpfWFwcGVuZE1hcHBpbmdJbnZlcnRlZChlKXtmb3IobGV0IHQ9ZS5tYXBzLmxlbmd0aC0xLG49dGhpcy5fbWFwcy5sZW5ndGgrZS5fbWFwcy5sZW5ndGg7dD49MDt0LS0pe2xldCByPWUuZ2V0TWlycm9yKHQpO3RoaXMuYXBwZW5kTWFwKGUuX21hcHNbdF0uaW52ZXJ0KCksbnVsbCE9ciYmcj50P24tci0xOnZvaWQgMCl9fWludmVydCgpe2xldCBlPW5ldyBNYXBwaW5nO3JldHVybiBlLmFwcGVuZE1hcHBpbmdJbnZlcnRlZCh0aGlzKSxlfW1hcChlLHQ9MSl7aWYodGhpcy5taXJyb3IpcmV0dXJuIHRoaXMuX21hcChlLHQsITApO2ZvcihsZXQgbj10aGlzLmZyb207bjx0aGlzLnRvO24rKyllPXRoaXMuX21hcHNbbl0ubWFwKGUsdCk7cmV0dXJuIGV9bWFwUmVzdWx0KGUsdD0xKXtyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMSl9X21hcChlLHQsbil7bGV0IHI9MDtmb3IobGV0IG49dGhpcy5mcm9tO248dGhpcy50bztuKyspe2xldCBvPXRoaXMuX21hcHNbbl0ubWFwUmVzdWx0KGUsdCk7aWYobnVsbCE9by5yZWNvdmVyKXtsZXQgdD10aGlzLmdldE1pcnJvcihuKTtpZihudWxsIT10JiZ0Pm4mJnQ8dGhpcy50byl7bj10LGU9dGhpcy5fbWFwc1t0XS5yZWNvdmVyKG8ucmVjb3Zlcik7Y29udGludWV9fXJ8PW8uZGVsSW5mbyxlPW8ucG9zfXJldHVybiBuP2U6bmV3IE1hcFJlc3VsdChlLHIsbnVsbCl9fWNvbnN0IGJlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgU3RlcHtnZXRNYXAoKXtyZXR1cm4gU3RlcE1hcC5lbXB0eX1tZXJnZShlKXtyZXR1cm4gbnVsbH1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZighdHx8IXQuc3RlcFR5cGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFN0ZXAuZnJvbUpTT04iKTtsZXQgbj1iZVt0LnN0ZXBUeXBlXTtpZighbil0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gc3RlcCB0eXBlICR7dC5zdGVwVHlwZX0gZGVmaW5lZGApO3JldHVybiBuLmZyb21KU09OKGUsdCl9c3RhdGljIGpzb25JRChlLHQpe2lmKGUgaW4gYmUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkR1cGxpY2F0ZSB1c2Ugb2Ygc3RlcCBKU09OIElEICIrZSk7cmV0dXJuIGJlW2VdPXQsdC5wcm90b3R5cGUuanNvbklEPWUsdH19Y2xhc3MgU3RlcFJlc3VsdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZG9jPWUsdGhpcy5mYWlsZWQ9dH1zdGF0aWMgb2soZSl7cmV0dXJuIG5ldyBTdGVwUmVzdWx0KGUsbnVsbCl9c3RhdGljIGZhaWwoZSl7cmV0dXJuIG5ldyBTdGVwUmVzdWx0KG51bGwsZSl9c3RhdGljIGZyb21SZXBsYWNlKGUsdCxuLHIpe3RyeXtyZXR1cm4gU3RlcFJlc3VsdC5vayhlLnJlcGxhY2UodCxuLHIpKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgUmVwbGFjZUVycm9yKXJldHVybiBTdGVwUmVzdWx0LmZhaWwoZS5tZXNzYWdlKTt0aHJvdyBlfX19ZnVuY3Rpb24gbWFwRnJhZ21lbnQoZSx0LG4pe2xldCByPVtdO2ZvcihsZXQgbz0wO288ZS5jaGlsZENvdW50O28rKyl7bGV0IGk9ZS5jaGlsZChvKTtpLmNvbnRlbnQuc2l6ZSYmKGk9aS5jb3B5KG1hcEZyYWdtZW50KGkuY29udGVudCx0LGkpKSksaS5pc0lubGluZSYmKGk9dChpLG4sbykpLHIucHVzaChpKX1yZXR1cm4gRnJhZ21lbnQuZnJvbUFycmF5KHIpfWNsYXNzIEFkZE1hcmtTdGVwIGV4dGVuZHMgU3RlcHtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy5tYXJrPW59YXBwbHkoZSl7bGV0IHQ9ZS5zbGljZSh0aGlzLmZyb20sdGhpcy50byksbj1lLnJlc29sdmUodGhpcy5mcm9tKSxyPW4ubm9kZShuLnNoYXJlZERlcHRoKHRoaXMudG8pKSxvPW5ldyBTbGljZShtYXBGcmFnbWVudCh0LmNvbnRlbnQsKGUsdCk9PmUuaXNBdG9tJiZ0LnR5cGUuYWxsb3dzTWFya1R5cGUodGhpcy5tYXJrLnR5cGUpP2UubWFyayh0aGlzLm1hcmsuYWRkVG9TZXQoZS5tYXJrcykpOmUsciksdC5vcGVuU3RhcnQsdC5vcGVuRW5kKTtyZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShlLHRoaXMuZnJvbSx0aGlzLnRvLG8pfWludmVydCgpe3JldHVybiBuZXcgUmVtb3ZlTWFya1N0ZXAodGhpcy5mcm9tLHRoaXMudG8sdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLG49ZS5tYXBSZXN1bHQodGhpcy50bywtMSk7cmV0dXJuIHQuZGVsZXRlZCYmbi5kZWxldGVkfHx0LnBvcz49bi5wb3M/bnVsbDpuZXcgQWRkTWFya1N0ZXAodC5wb3Msbi5wb3MsdGhpcy5tYXJrKX1tZXJnZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEFkZE1hcmtTdGVwJiZlLm1hcmsuZXEodGhpcy5tYXJrKSYmdGhpcy5mcm9tPD1lLnRvJiZ0aGlzLnRvPj1lLmZyb20/bmV3IEFkZE1hcmtTdGVwKE1hdGgubWluKHRoaXMuZnJvbSxlLmZyb20pLE1hdGgubWF4KHRoaXMudG8sZS50byksdGhpcy5tYXJrKTpudWxsfXRvSlNPTigpe3JldHVybntzdGVwVHlwZToiYWRkTWFyayIsbWFyazp0aGlzLm1hcmsudG9KU09OKCksZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b319c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LmZyb218fCJudW1iZXIiIT10eXBlb2YgdC50byl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgQWRkTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEFkZE1hcmtTdGVwKHQuZnJvbSx0LnRvLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1TdGVwLmpzb25JRCgiYWRkTWFyayIsQWRkTWFya1N0ZXApO2NsYXNzIFJlbW92ZU1hcmtTdGVwIGV4dGVuZHMgU3RlcHtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy5tYXJrPW59YXBwbHkoZSl7bGV0IHQ9ZS5zbGljZSh0aGlzLmZyb20sdGhpcy50byksbj1uZXcgU2xpY2UobWFwRnJhZ21lbnQodC5jb250ZW50LGU9PmUubWFyayh0aGlzLm1hcmsucmVtb3ZlRnJvbVNldChlLm1hcmtzKSksZSksdC5vcGVuU3RhcnQsdC5vcGVuRW5kKTtyZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShlLHRoaXMuZnJvbSx0aGlzLnRvLG4pfWludmVydCgpe3JldHVybiBuZXcgQWRkTWFya1N0ZXAodGhpcy5mcm9tLHRoaXMudG8sdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLG49ZS5tYXBSZXN1bHQodGhpcy50bywtMSk7cmV0dXJuIHQuZGVsZXRlZCYmbi5kZWxldGVkfHx0LnBvcz49bi5wb3M/bnVsbDpuZXcgUmVtb3ZlTWFya1N0ZXAodC5wb3Msbi5wb3MsdGhpcy5tYXJrKX1tZXJnZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlbW92ZU1hcmtTdGVwJiZlLm1hcmsuZXEodGhpcy5tYXJrKSYmdGhpcy5mcm9tPD1lLnRvJiZ0aGlzLnRvPj1lLmZyb20/bmV3IFJlbW92ZU1hcmtTdGVwKE1hdGgubWluKHRoaXMuZnJvbSxlLmZyb20pLE1hdGgubWF4KHRoaXMudG8sZS50byksdGhpcy5tYXJrKTpudWxsfXRvSlNPTigpe3JldHVybntzdGVwVHlwZToicmVtb3ZlTWFyayIsbWFyazp0aGlzLm1hcmsudG9KU09OKCksZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b319c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LmZyb218fCJudW1iZXIiIT10eXBlb2YgdC50byl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgUmVtb3ZlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IFJlbW92ZU1hcmtTdGVwKHQuZnJvbSx0LnRvLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1TdGVwLmpzb25JRCgicmVtb3ZlTWFyayIsUmVtb3ZlTWFya1N0ZXApO2NsYXNzIEFkZE5vZGVNYXJrU3RlcCBleHRlbmRzIFN0ZXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMucG9zPWUsdGhpcy5tYXJrPXR9YXBwbHkoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKCF0KXJldHVybiBTdGVwUmVzdWx0LmZhaWwoIk5vIG5vZGUgYXQgbWFyayBzdGVwJ3MgcG9zaXRpb24iKTtsZXQgbj10LnR5cGUuY3JlYXRlKHQuYXR0cnMsbnVsbCx0aGlzLm1hcmsuYWRkVG9TZXQodC5tYXJrcykpO3JldHVybiBTdGVwUmVzdWx0LmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShuKSwwLHQuaXNMZWFmPzA6MSkpfWludmVydChlKXtsZXQgdD1lLm5vZGVBdCh0aGlzLnBvcyk7aWYodCl7bGV0IGU9dGhpcy5tYXJrLmFkZFRvU2V0KHQubWFya3MpO2lmKGUubGVuZ3RoPT10Lm1hcmtzLmxlbmd0aCl7Zm9yKGxldCBuPTA7bjx0Lm1hcmtzLmxlbmd0aDtuKyspaWYoIXQubWFya3Nbbl0uaXNJblNldChlKSlyZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0Lm1hcmtzW25dKTtyZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0aGlzLm1hcmspfX1yZXR1cm4gbmV3IFJlbW92ZU5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0aGlzLm1hcmspfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLnBvcywxKTtyZXR1cm4gdC5kZWxldGVkQWZ0ZXI/bnVsbDpuZXcgQWRkTm9kZU1hcmtTdGVwKHQucG9zLHRoaXMubWFyayl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhZGROb2RlTWFyayIscG9zOnRoaXMucG9zLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQucG9zKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBBZGROb2RlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0LnBvcyxlLm1hcmtGcm9tSlNPTih0Lm1hcmspKX19U3RlcC5qc29uSUQoImFkZE5vZGVNYXJrIixBZGROb2RlTWFya1N0ZXApO2NsYXNzIFJlbW92ZU5vZGVNYXJrU3RlcCBleHRlbmRzIFN0ZXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMucG9zPWUsdGhpcy5tYXJrPXR9YXBwbHkoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKCF0KXJldHVybiBTdGVwUmVzdWx0LmZhaWwoIk5vIG5vZGUgYXQgbWFyayBzdGVwJ3MgcG9zaXRpb24iKTtsZXQgbj10LnR5cGUuY3JlYXRlKHQuYXR0cnMsbnVsbCx0aGlzLm1hcmsucmVtb3ZlRnJvbVNldCh0Lm1hcmtzKSk7cmV0dXJuIFN0ZXBSZXN1bHQuZnJvbVJlcGxhY2UoZSx0aGlzLnBvcyx0aGlzLnBvcysxLG5ldyBTbGljZShGcmFnbWVudC5mcm9tKG4pLDAsdC5pc0xlYWY/MDoxKSl9aW52ZXJ0KGUpe2xldCB0PWUubm9kZUF0KHRoaXMucG9zKTtyZXR1cm4gdCYmdGhpcy5tYXJrLmlzSW5TZXQodC5tYXJrcyk/bmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcyx0aGlzLm1hcmspOnRoaXN9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMucG9zLDEpO3JldHVybiB0LmRlbGV0ZWRBZnRlcj9udWxsOm5ldyBSZW1vdmVOb2RlTWFya1N0ZXAodC5wb3MsdGhpcy5tYXJrKX10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6InJlbW92ZU5vZGVNYXJrIixwb3M6dGhpcy5wb3MsbWFyazp0aGlzLm1hcmsudG9KU09OKCl9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCJudW1iZXIiIT10eXBlb2YgdC5wb3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlbW92ZU5vZGVNYXJrU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUmVtb3ZlTm9kZU1hcmtTdGVwKHQucG9zLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1TdGVwLmpzb25JRCgicmVtb3ZlTm9kZU1hcmsiLFJlbW92ZU5vZGVNYXJrU3RlcCk7Y2xhc3MgUmVwbGFjZVN0ZXAgZXh0ZW5kcyBTdGVwe2NvbnN0cnVjdG9yKGUsdCxuLHI9ITEpe3N1cGVyKCksdGhpcy5mcm9tPWUsdGhpcy50bz10LHRoaXMuc2xpY2U9bix0aGlzLnN0cnVjdHVyZT1yfWFwcGx5KGUpe3JldHVybiB0aGlzLnN0cnVjdHVyZSYmY29udGVudEJldHdlZW4oZSx0aGlzLmZyb20sdGhpcy50byk/U3RlcFJlc3VsdC5mYWlsKCJTdHJ1Y3R1cmUgcmVwbGFjZSB3b3VsZCBvdmVyd3JpdGUgY29udGVudCIpOlN0ZXBSZXN1bHQuZnJvbVJlcGxhY2UoZSx0aGlzLmZyb20sdGhpcy50byx0aGlzLnNsaWNlKX1nZXRNYXAoKXtyZXR1cm4gbmV3IFN0ZXBNYXAoW3RoaXMuZnJvbSx0aGlzLnRvLXRoaXMuZnJvbSx0aGlzLnNsaWNlLnNpemVdKX1pbnZlcnQoZSl7cmV0dXJuIG5ldyBSZXBsYWNlU3RlcCh0aGlzLmZyb20sdGhpcy5mcm9tK3RoaXMuc2xpY2Uuc2l6ZSxlLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvKSl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMudG8sLTEpLG49dGhpcy5mcm9tPT10aGlzLnRvJiZSZXBsYWNlU3RlcC5NQVBfQklBUzwwP3Q6ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpO3JldHVybiBuLmRlbGV0ZWRBY3Jvc3MmJnQuZGVsZXRlZEFjcm9zcz9udWxsOm5ldyBSZXBsYWNlU3RlcChuLnBvcyxNYXRoLm1heChuLnBvcyx0LnBvcyksdGhpcy5zbGljZSx0aGlzLnN0cnVjdHVyZSl9bWVyZ2UoZSl7aWYoIShlIGluc3RhbmNlb2YgUmVwbGFjZVN0ZXApfHxlLnN0cnVjdHVyZXx8dGhpcy5zdHJ1Y3R1cmUpcmV0dXJuIG51bGw7aWYodGhpcy5mcm9tK3RoaXMuc2xpY2Uuc2l6ZSE9ZS5mcm9tfHx0aGlzLnNsaWNlLm9wZW5FbmR8fGUuc2xpY2Uub3BlblN0YXJ0KXtpZihlLnRvIT10aGlzLmZyb218fHRoaXMuc2xpY2Uub3BlblN0YXJ0fHxlLnNsaWNlLm9wZW5FbmQpcmV0dXJuIG51bGw7e2xldCB0PXRoaXMuc2xpY2Uuc2l6ZStlLnNsaWNlLnNpemU9PTA/U2xpY2UuZW1wdHk6bmV3IFNsaWNlKGUuc2xpY2UuY29udGVudC5hcHBlbmQodGhpcy5zbGljZS5jb250ZW50KSxlLnNsaWNlLm9wZW5TdGFydCx0aGlzLnNsaWNlLm9wZW5FbmQpO3JldHVybiBuZXcgUmVwbGFjZVN0ZXAoZS5mcm9tLHRoaXMudG8sdCx0aGlzLnN0cnVjdHVyZSl9fXtsZXQgdD10aGlzLnNsaWNlLnNpemUrZS5zbGljZS5zaXplPT0wP1NsaWNlLmVtcHR5Om5ldyBTbGljZSh0aGlzLnNsaWNlLmNvbnRlbnQuYXBwZW5kKGUuc2xpY2UuY29udGVudCksdGhpcy5zbGljZS5vcGVuU3RhcnQsZS5zbGljZS5vcGVuRW5kKTtyZXR1cm4gbmV3IFJlcGxhY2VTdGVwKHRoaXMuZnJvbSx0aGlzLnRvKyhlLnRvLWUuZnJvbSksdCx0aGlzLnN0cnVjdHVyZSl9fXRvSlNPTigpe2xldCBlPXtzdGVwVHlwZToicmVwbGFjZSIsZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b307cmV0dXJuIHRoaXMuc2xpY2Uuc2l6ZSYmKGUuc2xpY2U9dGhpcy5zbGljZS50b0pTT04oKSksdGhpcy5zdHJ1Y3R1cmUmJihlLnN0cnVjdHVyZT0hMCksZX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQuZnJvbXx8Im51bWJlciIhPXR5cGVvZiB0LnRvKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBSZXBsYWNlU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUmVwbGFjZVN0ZXAodC5mcm9tLHQudG8sU2xpY2UuZnJvbUpTT04oZSx0LnNsaWNlKSwhIXQuc3RydWN0dXJlKX19UmVwbGFjZVN0ZXAuTUFQX0JJQVM9MSxTdGVwLmpzb25JRCgicmVwbGFjZSIsUmVwbGFjZVN0ZXApO2NsYXNzIFJlcGxhY2VBcm91bmRTdGVwIGV4dGVuZHMgU3RlcHtjb25zdHJ1Y3RvcihlLHQsbixyLG8saSxzPSExKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLmdhcEZyb209bix0aGlzLmdhcFRvPXIsdGhpcy5zbGljZT1vLHRoaXMuaW5zZXJ0PWksdGhpcy5zdHJ1Y3R1cmU9c31hcHBseShlKXtpZih0aGlzLnN0cnVjdHVyZSYmKGNvbnRlbnRCZXR3ZWVuKGUsdGhpcy5mcm9tLHRoaXMuZ2FwRnJvbSl8fGNvbnRlbnRCZXR3ZWVuKGUsdGhpcy5nYXBUbyx0aGlzLnRvKSkpcmV0dXJuIFN0ZXBSZXN1bHQuZmFpbCgiU3RydWN0dXJlIGdhcC1yZXBsYWNlIHdvdWxkIG92ZXJ3cml0ZSBjb250ZW50Iik7bGV0IHQ9ZS5zbGljZSh0aGlzLmdhcEZyb20sdGhpcy5nYXBUbyk7aWYodC5vcGVuU3RhcnR8fHQub3BlbkVuZClyZXR1cm4gU3RlcFJlc3VsdC5mYWlsKCJHYXAgaXMgbm90IGEgZmxhdCByYW5nZSIpO2xldCBuPXRoaXMuc2xpY2UuaW5zZXJ0QXQodGhpcy5pbnNlcnQsdC5jb250ZW50KTtyZXR1cm4gbj9TdGVwUmVzdWx0LmZyb21SZXBsYWNlKGUsdGhpcy5mcm9tLHRoaXMudG8sbik6U3RlcFJlc3VsdC5mYWlsKCJDb250ZW50IGRvZXMgbm90IGZpdCBpbiBnYXAiKX1nZXRNYXAoKXtyZXR1cm4gbmV3IFN0ZXBNYXAoW3RoaXMuZnJvbSx0aGlzLmdhcEZyb20tdGhpcy5mcm9tLHRoaXMuaW5zZXJ0LHRoaXMuZ2FwVG8sdGhpcy50by10aGlzLmdhcFRvLHRoaXMuc2xpY2Uuc2l6ZS10aGlzLmluc2VydF0pfWludmVydChlKXtsZXQgdD10aGlzLmdhcFRvLXRoaXMuZ2FwRnJvbTtyZXR1cm4gbmV3IFJlcGxhY2VBcm91bmRTdGVwKHRoaXMuZnJvbSx0aGlzLmZyb20rdGhpcy5zbGljZS5zaXplK3QsdGhpcy5mcm9tK3RoaXMuaW5zZXJ0LHRoaXMuZnJvbSt0aGlzLmluc2VydCt0LGUuc2xpY2UodGhpcy5mcm9tLHRoaXMudG8pLnJlbW92ZUJldHdlZW4odGhpcy5nYXBGcm9tLXRoaXMuZnJvbSx0aGlzLmdhcFRvLXRoaXMuZnJvbSksdGhpcy5nYXBGcm9tLXRoaXMuZnJvbSx0aGlzLnN0cnVjdHVyZSl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMuZnJvbSwxKSxuPWUubWFwUmVzdWx0KHRoaXMudG8sLTEpLHI9dGhpcy5mcm9tPT10aGlzLmdhcEZyb20/dC5wb3M6ZS5tYXAodGhpcy5nYXBGcm9tLC0xKSxvPXRoaXMudG89PXRoaXMuZ2FwVG8/bi5wb3M6ZS5tYXAodGhpcy5nYXBUbywxKTtyZXR1cm4gdC5kZWxldGVkQWNyb3NzJiZuLmRlbGV0ZWRBY3Jvc3N8fHI8dC5wb3N8fG8+bi5wb3M/bnVsbDpuZXcgUmVwbGFjZUFyb3VuZFN0ZXAodC5wb3Msbi5wb3MscixvLHRoaXMuc2xpY2UsdGhpcy5pbnNlcnQsdGhpcy5zdHJ1Y3R1cmUpfXRvSlNPTigpe2xldCBlPXtzdGVwVHlwZToicmVwbGFjZUFyb3VuZCIsZnJvbTp0aGlzLmZyb20sdG86dGhpcy50byxnYXBGcm9tOnRoaXMuZ2FwRnJvbSxnYXBUbzp0aGlzLmdhcFRvLGluc2VydDp0aGlzLmluc2VydH07cmV0dXJuIHRoaXMuc2xpY2Uuc2l6ZSYmKGUuc2xpY2U9dGhpcy5zbGljZS50b0pTT04oKSksdGhpcy5zdHJ1Y3R1cmUmJihlLnN0cnVjdHVyZT0hMCksZX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQuZnJvbXx8Im51bWJlciIhPXR5cGVvZiB0LnRvfHwibnVtYmVyIiE9dHlwZW9mIHQuZ2FwRnJvbXx8Im51bWJlciIhPXR5cGVvZiB0LmdhcFRvfHwibnVtYmVyIiE9dHlwZW9mIHQuaW5zZXJ0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBSZXBsYWNlQXJvdW5kU3RlcC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUmVwbGFjZUFyb3VuZFN0ZXAodC5mcm9tLHQudG8sdC5nYXBGcm9tLHQuZ2FwVG8sU2xpY2UuZnJvbUpTT04oZSx0LnNsaWNlKSx0Lmluc2VydCwhIXQuc3RydWN0dXJlKX19ZnVuY3Rpb24gY29udGVudEJldHdlZW4oZSx0LG4pe2xldCByPWUucmVzb2x2ZSh0KSxvPW4tdCxpPXIuZGVwdGg7Zm9yKDtvPjAmJmk+MCYmci5pbmRleEFmdGVyKGkpPT1yLm5vZGUoaSkuY2hpbGRDb3VudDspaS0tLG8tLTtpZihvPjApe2xldCBlPXIubm9kZShpKS5tYXliZUNoaWxkKHIuaW5kZXhBZnRlcihpKSk7Zm9yKDtvPjA7KXtpZighZXx8ZS5pc0xlYWYpcmV0dXJuITA7ZT1lLmZpcnN0Q2hpbGQsby0tfX1yZXR1cm4hMX1mdW5jdGlvbiBjbGVhckluY29tcGF0aWJsZShlLHQsbixyPW4uY29udGVudE1hdGNoLG89ITApe2xldCBpPWUuZG9jLm5vZGVBdCh0KSxzPVtdLGw9dCsxO2ZvcihsZXQgdD0wO3Q8aS5jaGlsZENvdW50O3QrKyl7bGV0IGE9aS5jaGlsZCh0KSxjPWwrYS5ub2RlU2l6ZSxkPXIubWF0Y2hUeXBlKGEudHlwZSk7aWYoZCl7cj1kO2ZvcihsZXQgdD0wO3Q8YS5tYXJrcy5sZW5ndGg7dCsrKW4uYWxsb3dzTWFya1R5cGUoYS5tYXJrc1t0XS50eXBlKXx8ZS5zdGVwKG5ldyBSZW1vdmVNYXJrU3RlcChsLGMsYS5tYXJrc1t0XSkpO2lmKG8mJmEuaXNUZXh0JiYicHJlIiE9bi53aGl0ZXNwYWNlKXtsZXQgZSx0LHI9L1xyP1xufFxyL2c7Zm9yKDtlPXIuZXhlYyhhLnRleHQpOyl0fHwodD1uZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShuLnNjaGVtYS50ZXh0KCIgIixuLmFsbG93ZWRNYXJrcyhhLm1hcmtzKSkpLDAsMCkpLHMucHVzaChuZXcgUmVwbGFjZVN0ZXAobCtlLmluZGV4LGwrZS5pbmRleCtlWzBdLmxlbmd0aCx0KSl9fWVsc2Ugcy5wdXNoKG5ldyBSZXBsYWNlU3RlcChsLGMsU2xpY2UuZW1wdHkpKTtsPWN9aWYoIXIudmFsaWRFbmQpe2xldCB0PXIuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCk7ZS5yZXBsYWNlKGwsbCxuZXcgU2xpY2UodCwwLDApKX1mb3IobGV0IHQ9cy5sZW5ndGgtMTt0Pj0wO3QtLSllLnN0ZXAoc1t0XSl9ZnVuY3Rpb24gY2FuQ3V0KGUsdCxuKXtyZXR1cm4oMD09dHx8ZS5jYW5SZXBsYWNlKHQsZS5jaGlsZENvdW50KSkmJihuPT1lLmNoaWxkQ291bnR8fGUuY2FuUmVwbGFjZSgwLG4pKX1mdW5jdGlvbiBsaWZ0VGFyZ2V0KGUpe2xldCB0PWUucGFyZW50LmNvbnRlbnQuY3V0QnlJbmRleChlLnN0YXJ0SW5kZXgsZS5lbmRJbmRleCk7Zm9yKGxldCBuPWUuZGVwdGgscj0wLG89MDs7LS1uKXtsZXQgaT1lLiRmcm9tLm5vZGUobikscz1lLiRmcm9tLmluZGV4KG4pK3IsbD1lLiR0by5pbmRleEFmdGVyKG4pLW87aWYobjxlLmRlcHRoJiZpLmNhblJlcGxhY2UocyxsLHQpKXJldHVybiBuO2lmKDA9PW58fGkudHlwZS5zcGVjLmlzb2xhdGluZ3x8IWNhbkN1dChpLHMsbCkpYnJlYWs7cyYmKHI9MSksbDxpLmNoaWxkQ291bnQmJihvPTEpfXJldHVybiBudWxsfWZ1bmN0aW9uIGZpbmRXcmFwcGluZyhlLHQsbj1udWxsLHI9ZSl7bGV0IG89ZnVuY3Rpb24oZSx0KXtsZXR7cGFyZW50Om4sc3RhcnRJbmRleDpyLGVuZEluZGV4Om99PWUsaT1uLmNvbnRlbnRNYXRjaEF0KHIpLmZpbmRXcmFwcGluZyh0KTtpZighaSlyZXR1cm4gbnVsbDtsZXQgcz1pLmxlbmd0aD9pWzBdOnQ7cmV0dXJuIG4uY2FuUmVwbGFjZVdpdGgocixvLHMpP2k6bnVsbH0oZSx0KSxpPW8mJmZ1bmN0aW9uKGUsdCl7bGV0e3BhcmVudDpuLHN0YXJ0SW5kZXg6cixlbmRJbmRleDpvfT1lLGk9bi5jaGlsZChyKSxzPXQuY29udGVudE1hdGNoLmZpbmRXcmFwcGluZyhpLnR5cGUpO2lmKCFzKXJldHVybiBudWxsO2xldCBsPShzLmxlbmd0aD9zW3MubGVuZ3RoLTFdOnQpLmNvbnRlbnRNYXRjaDtmb3IobGV0IGU9cjtsJiZlPG87ZSsrKWw9bC5tYXRjaFR5cGUobi5jaGlsZChlKS50eXBlKTtyZXR1cm4gbCYmbC52YWxpZEVuZD9zOm51bGx9KHIsdCk7cmV0dXJuIGk/by5tYXAod2l0aEF0dHJzKS5jb25jYXQoe3R5cGU6dCxhdHRyczpufSkuY29uY2F0KGkubWFwKHdpdGhBdHRycykpOm51bGx9ZnVuY3Rpb24gd2l0aEF0dHJzKGUpe3JldHVybnt0eXBlOmUsYXR0cnM6bnVsbH19ZnVuY3Rpb24gcmVwbGFjZU5ld2xpbmVzKGUsdCxuLHIpe3QuZm9yRWFjaCgobyxpKT0+e2lmKG8uaXNUZXh0KXtsZXQgcyxsPS9ccj9cbnxcci9nO2Zvcig7cz1sLmV4ZWMoby50ZXh0KTspe2xldCBvPWUubWFwcGluZy5zbGljZShyKS5tYXAobisxK2krcy5pbmRleCk7ZS5yZXBsYWNlV2l0aChvLG8rMSx0LnR5cGUuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKX19fSl9ZnVuY3Rpb24gcmVwbGFjZUxpbmVicmVha3MoZSx0LG4scil7dC5mb3JFYWNoKChvLGkpPT57aWYoby50eXBlPT1vLnR5cGUuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50KXtsZXQgbz1lLm1hcHBpbmcuc2xpY2UocikubWFwKG4rMStpKTtlLnJlcGxhY2VXaXRoKG8sbysxLHQudHlwZS5zY2hlbWEudGV4dCgiXG4iKSl9fSl9ZnVuY3Rpb24gY2FuU3BsaXQoZSx0LG49MSxyKXtsZXQgbz1lLnJlc29sdmUodCksaT1vLmRlcHRoLW4scz1yJiZyW3IubGVuZ3RoLTFdfHxvLnBhcmVudDtpZihpPDB8fG8ucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmd8fCFvLnBhcmVudC5jYW5SZXBsYWNlKG8uaW5kZXgoKSxvLnBhcmVudC5jaGlsZENvdW50KXx8IXMudHlwZS52YWxpZENvbnRlbnQoby5wYXJlbnQuY29udGVudC5jdXRCeUluZGV4KG8uaW5kZXgoKSxvLnBhcmVudC5jaGlsZENvdW50KSkpcmV0dXJuITE7Zm9yKGxldCBlPW8uZGVwdGgtMSx0PW4tMjtlPmk7ZS0tLHQtLSl7bGV0IG49by5ub2RlKGUpLGk9by5pbmRleChlKTtpZihuLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IHM9bi5jb250ZW50LmN1dEJ5SW5kZXgoaSxuLmNoaWxkQ291bnQpLGw9ciYmclt0KzFdO2wmJihzPXMucmVwbGFjZUNoaWxkKDAsbC50eXBlLmNyZWF0ZShsLmF0dHJzKSkpO2xldCBhPXImJnJbdF18fG47aWYoIW4uY2FuUmVwbGFjZShpKzEsbi5jaGlsZENvdW50KXx8IWEudHlwZS52YWxpZENvbnRlbnQocykpcmV0dXJuITF9bGV0IGw9by5pbmRleEFmdGVyKGkpLGE9ciYmclswXTtyZXR1cm4gby5ub2RlKGkpLmNhblJlcGxhY2VXaXRoKGwsbCxhP2EudHlwZTpvLm5vZGUoaSsxKS50eXBlKX1mdW5jdGlvbiBjYW5Kb2luKGUsdCl7bGV0IG49ZS5yZXNvbHZlKHQpLHI9bi5pbmRleCgpO3JldHVybiBqb2luYWJsZShuLm5vZGVCZWZvcmUsbi5ub2RlQWZ0ZXIpJiZuLnBhcmVudC5jYW5SZXBsYWNlKHIscisxKX1mdW5jdGlvbiBqb2luYWJsZShlLHQpe3JldHVybiEoIWV8fCF0fHxlLmlzTGVhZnx8IWZ1bmN0aW9uKGUsdCl7dC5jb250ZW50LnNpemV8fGUudHlwZS5jb21wYXRpYmxlQ29udGVudCh0LnR5cGUpO2xldCBuPWUuY29udGVudE1hdGNoQXQoZS5jaGlsZENvdW50KSx7bGluZWJyZWFrUmVwbGFjZW1lbnQ6cn09ZS50eXBlLnNjaGVtYTtmb3IobGV0IG89MDtvPHQuY2hpbGRDb3VudDtvKyspe2xldCBpPXQuY2hpbGQobykscz1pLnR5cGU9PXI/ZS50eXBlLnNjaGVtYS5ub2Rlcy50ZXh0OmkudHlwZTtpZihuPW4ubWF0Y2hUeXBlKHMpLCFuKXJldHVybiExO2lmKCFlLnR5cGUuYWxsb3dzTWFya3MoaS5tYXJrcykpcmV0dXJuITF9cmV0dXJuIG4udmFsaWRFbmR9KGUsdCkpfWZ1bmN0aW9uIGpvaW5Qb2ludChlLHQsbj0tMSl7bGV0IHI9ZS5yZXNvbHZlKHQpO2ZvcihsZXQgZT1yLmRlcHRoOztlLS0pe2xldCBvLGkscz1yLmluZGV4KGUpO2lmKGU9PXIuZGVwdGg/KG89ci5ub2RlQmVmb3JlLGk9ci5ub2RlQWZ0ZXIpOm4+MD8obz1yLm5vZGUoZSsxKSxzKyssaT1yLm5vZGUoZSkubWF5YmVDaGlsZChzKSk6KG89ci5ub2RlKGUpLm1heWJlQ2hpbGQocy0xKSxpPXIubm9kZShlKzEpKSxvJiYhby5pc1RleHRibG9jayYmam9pbmFibGUobyxpKSYmci5ub2RlKGUpLmNhblJlcGxhY2UocyxzKzEpKXJldHVybiB0O2lmKDA9PWUpYnJlYWs7dD1uPDA/ci5iZWZvcmUoZSk6ci5hZnRlcihlKX19ZnVuY3Rpb24gZHJvcFBvaW50KGUsdCxuKXtsZXQgcj1lLnJlc29sdmUodCk7aWYoIW4uY29udGVudC5zaXplKXJldHVybiB0O2xldCBvPW4uY29udGVudDtmb3IobGV0IGU9MDtlPG4ub3BlblN0YXJ0O2UrKylvPW8uZmlyc3RDaGlsZC5jb250ZW50O2ZvcihsZXQgZT0xO2U8PSgwPT1uLm9wZW5TdGFydCYmbi5zaXplPzI6MSk7ZSsrKWZvcihsZXQgdD1yLmRlcHRoO3Q+PTA7dC0tKXtsZXQgbj10PT1yLmRlcHRoPzA6ci5wb3M8PShyLnN0YXJ0KHQrMSkrci5lbmQodCsxKSkvMj8tMToxLGk9ci5pbmRleCh0KSsobj4wPzE6MCkscz1yLm5vZGUodCksbD0hMTtpZigxPT1lKWw9cy5jYW5SZXBsYWNlKGksaSxvKTtlbHNle2xldCBlPXMuY29udGVudE1hdGNoQXQoaSkuZmluZFdyYXBwaW5nKG8uZmlyc3RDaGlsZC50eXBlKTtsPWUmJnMuY2FuUmVwbGFjZVdpdGgoaSxpLGVbMF0pfWlmKGwpcmV0dXJuIDA9PW4/ci5wb3M6bjwwP3IuYmVmb3JlKHQrMSk6ci5hZnRlcih0KzEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHJlcGxhY2VTdGVwKGUsdCxuPXQscj1TbGljZS5lbXB0eSl7aWYodD09biYmIXIuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgbz1lLnJlc29sdmUodCksaT1lLnJlc29sdmUobik7cmV0dXJuIGZpdHNUcml2aWFsbHkobyxpLHIpP25ldyBSZXBsYWNlU3RlcCh0LG4scik6bmV3IEZpdHRlcihvLGkscikuZml0KCl9ZnVuY3Rpb24gZml0c1RyaXZpYWxseShlLHQsbil7cmV0dXJuIW4ub3BlblN0YXJ0JiYhbi5vcGVuRW5kJiZlLnN0YXJ0KCk9PXQuc3RhcnQoKSYmZS5wYXJlbnQuY2FuUmVwbGFjZShlLmluZGV4KCksdC5pbmRleCgpLG4uY29udGVudCl9U3RlcC5qc29uSUQoInJlcGxhY2VBcm91bmQiLFJlcGxhY2VBcm91bmRTdGVwKTtjbGFzcyBGaXR0ZXJ7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuJGZyb209ZSx0aGlzLiR0bz10LHRoaXMudW5wbGFjZWQ9bix0aGlzLmZyb250aWVyPVtdLHRoaXMucGxhY2VkPUZyYWdtZW50LmVtcHR5O2ZvcihsZXQgdD0wO3Q8PWUuZGVwdGg7dCsrKXtsZXQgbj1lLm5vZGUodCk7dGhpcy5mcm9udGllci5wdXNoKHt0eXBlOm4udHlwZSxtYXRjaDpuLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcih0KSl9KX1mb3IobGV0IHQ9ZS5kZXB0aDt0PjA7dC0tKXRoaXMucGxhY2VkPUZyYWdtZW50LmZyb20oZS5ub2RlKHQpLmNvcHkodGhpcy5wbGFjZWQpKX1nZXQgZGVwdGgoKXtyZXR1cm4gdGhpcy5mcm9udGllci5sZW5ndGgtMX1maXQoKXtmb3IoO3RoaXMudW5wbGFjZWQuc2l6ZTspe2xldCBlPXRoaXMuZmluZEZpdHRhYmxlKCk7ZT90aGlzLnBsYWNlTm9kZXMoZSk6dGhpcy5vcGVuTW9yZSgpfHx0aGlzLmRyb3BOb2RlKCl9bGV0IGU9dGhpcy5tdXN0TW92ZUlubGluZSgpLHQ9dGhpcy5wbGFjZWQuc2l6ZS10aGlzLmRlcHRoLXRoaXMuJGZyb20uZGVwdGgsbj10aGlzLiRmcm9tLHI9dGhpcy5jbG9zZShlPDA/dGhpcy4kdG86bi5kb2MucmVzb2x2ZShlKSk7aWYoIXIpcmV0dXJuIG51bGw7bGV0IG89dGhpcy5wbGFjZWQsaT1uLmRlcHRoLHM9ci5kZXB0aDtmb3IoO2kmJnMmJjE9PW8uY2hpbGRDb3VudDspbz1vLmZpcnN0Q2hpbGQuY29udGVudCxpLS0scy0tO2xldCBsPW5ldyBTbGljZShvLGkscyk7cmV0dXJuIGU+LTE/bmV3IFJlcGxhY2VBcm91bmRTdGVwKG4ucG9zLGUsdGhpcy4kdG8ucG9zLHRoaXMuJHRvLmVuZCgpLGwsdCk6bC5zaXplfHxuLnBvcyE9dGhpcy4kdG8ucG9zP25ldyBSZXBsYWNlU3RlcChuLnBvcyxyLnBvcyxsKTpudWxsfWZpbmRGaXR0YWJsZSgpe2xldCBlPXRoaXMudW5wbGFjZWQub3BlblN0YXJ0O2ZvcihsZXQgdD10aGlzLnVucGxhY2VkLmNvbnRlbnQsbj0wLHI9dGhpcy51bnBsYWNlZC5vcGVuRW5kO248ZTtuKyspe2xldCBvPXQuZmlyc3RDaGlsZDtpZih0LmNoaWxkQ291bnQ+MSYmKHI9MCksby50eXBlLnNwZWMuaXNvbGF0aW5nJiZyPD1uKXtlPW47YnJlYWt9dD1vLmNvbnRlbnR9Zm9yKGxldCB0PTE7dDw9Mjt0KyspZm9yKGxldCBuPTE9PXQ/ZTp0aGlzLnVucGxhY2VkLm9wZW5TdGFydDtuPj0wO24tLSl7bGV0IGUscj1udWxsO24/KHI9Y29udGVudEF0KHRoaXMudW5wbGFjZWQuY29udGVudCxuLTEpLmZpcnN0Q2hpbGQsZT1yLmNvbnRlbnQpOmU9dGhpcy51bnBsYWNlZC5jb250ZW50O2xldCBvPWUuZmlyc3RDaGlsZDtmb3IobGV0IGU9dGhpcy5kZXB0aDtlPj0wO2UtLSl7bGV0IGkse3R5cGU6cyxtYXRjaDpsfT10aGlzLmZyb250aWVyW2VdLGE9bnVsbDtpZigxPT10JiYobz9sLm1hdGNoVHlwZShvLnR5cGUpfHwoYT1sLmZpbGxCZWZvcmUoRnJhZ21lbnQuZnJvbShvKSwhMSkpOnImJnMuY29tcGF0aWJsZUNvbnRlbnQoci50eXBlKSkpcmV0dXJue3NsaWNlRGVwdGg6bixmcm9udGllckRlcHRoOmUscGFyZW50OnIsaW5qZWN0OmF9O2lmKDI9PXQmJm8mJihpPWwuZmluZFdyYXBwaW5nKG8udHlwZSkpKXJldHVybntzbGljZURlcHRoOm4sZnJvbnRpZXJEZXB0aDplLHBhcmVudDpyLHdyYXA6aX07aWYociYmbC5tYXRjaFR5cGUoci50eXBlKSlicmVha319fW9wZW5Nb3JlKCl7bGV0e2NvbnRlbnQ6ZSxvcGVuU3RhcnQ6dCxvcGVuRW5kOm59PXRoaXMudW5wbGFjZWQscj1jb250ZW50QXQoZSx0KTtyZXR1cm4hKCFyLmNoaWxkQ291bnR8fHIuZmlyc3RDaGlsZC5pc0xlYWYpJiYodGhpcy51bnBsYWNlZD1uZXcgU2xpY2UoZSx0KzEsTWF0aC5tYXgobixyLnNpemUrdD49ZS5zaXplLW4/dCsxOjApKSwhMCl9ZHJvcE5vZGUoKXtsZXR7Y29udGVudDplLG9wZW5TdGFydDp0LG9wZW5FbmQ6bn09dGhpcy51bnBsYWNlZCxyPWNvbnRlbnRBdChlLHQpO2lmKHIuY2hpbGRDb3VudDw9MSYmdD4wKXtsZXQgbz1lLnNpemUtdDw9dCtyLnNpemU7dGhpcy51bnBsYWNlZD1uZXcgU2xpY2UoZHJvcEZyb21GcmFnbWVudChlLHQtMSwxKSx0LTEsbz90LTE6bil9ZWxzZSB0aGlzLnVucGxhY2VkPW5ldyBTbGljZShkcm9wRnJvbUZyYWdtZW50KGUsdCwxKSx0LG4pfXBsYWNlTm9kZXMoe3NsaWNlRGVwdGg6ZSxmcm9udGllckRlcHRoOnQscGFyZW50Om4saW5qZWN0OnIsd3JhcDpvfSl7Zm9yKDt0aGlzLmRlcHRoPnQ7KXRoaXMuY2xvc2VGcm9udGllck5vZGUoKTtpZihvKWZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXRoaXMub3BlbkZyb250aWVyTm9kZShvW2VdKTtsZXQgaT10aGlzLnVucGxhY2VkLHM9bj9uLmNvbnRlbnQ6aS5jb250ZW50LGw9aS5vcGVuU3RhcnQtZSxhPTAsYz1bXSx7bWF0Y2g6ZCx0eXBlOnB9PXRoaXMuZnJvbnRpZXJbdF07aWYocil7Zm9yKGxldCBlPTA7ZTxyLmNoaWxkQ291bnQ7ZSsrKWMucHVzaChyLmNoaWxkKGUpKTtkPWQubWF0Y2hGcmFnbWVudChyKX1sZXQgZj1zLnNpemUrZS0oaS5jb250ZW50LnNpemUtaS5vcGVuRW5kKTtmb3IoO2E8cy5jaGlsZENvdW50Oyl7bGV0IGU9cy5jaGlsZChhKSx0PWQubWF0Y2hUeXBlKGUudHlwZSk7aWYoIXQpYnJlYWs7YSsrLChhPjF8fDA9PWx8fGUuY29udGVudC5zaXplKSYmKGQ9dCxjLnB1c2goY2xvc2VOb2RlU3RhcnQoZS5tYXJrKHAuYWxsb3dlZE1hcmtzKGUubWFya3MpKSwxPT1hP2w6MCxhPT1zLmNoaWxkQ291bnQ/ZjotMSkpKX1sZXQgbT1hPT1zLmNoaWxkQ291bnQ7bXx8KGY9LTEpLHRoaXMucGxhY2VkPWFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsdCxGcmFnbWVudC5mcm9tKGMpKSx0aGlzLmZyb250aWVyW3RdLm1hdGNoPWQsbSYmZjwwJiZuJiZuLnR5cGU9PXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0udHlwZSYmdGhpcy5mcm9udGllci5sZW5ndGg+MSYmdGhpcy5jbG9zZUZyb250aWVyTm9kZSgpO2ZvcihsZXQgZT0wLHQ9cztlPGY7ZSsrKXtsZXQgZT10Lmxhc3RDaGlsZDt0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6ZS50eXBlLG1hdGNoOmUuY29udGVudE1hdGNoQXQoZS5jaGlsZENvdW50KX0pLHQ9ZS5jb250ZW50fXRoaXMudW5wbGFjZWQ9bT8wPT1lP1NsaWNlLmVtcHR5Om5ldyBTbGljZShkcm9wRnJvbUZyYWdtZW50KGkuY29udGVudCxlLTEsMSksZS0xLGY8MD9pLm9wZW5FbmQ6ZS0xKTpuZXcgU2xpY2UoZHJvcEZyb21GcmFnbWVudChpLmNvbnRlbnQsZSxhKSxpLm9wZW5TdGFydCxpLm9wZW5FbmQpfW11c3RNb3ZlSW5saW5lKCl7aWYoIXRoaXMuJHRvLnBhcmVudC5pc1RleHRibG9jaylyZXR1cm4tMTtsZXQgZSx0PXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF07aWYoIXQudHlwZS5pc1RleHRibG9ja3x8IWNvbnRlbnRBZnRlckZpdHModGhpcy4kdG8sdGhpcy4kdG8uZGVwdGgsdC50eXBlLHQubWF0Y2gsITEpfHx0aGlzLiR0by5kZXB0aD09dGhpcy5kZXB0aCYmKGU9dGhpcy5maW5kQ2xvc2VMZXZlbCh0aGlzLiR0bykpJiZlLmRlcHRoPT10aGlzLmRlcHRoKXJldHVybi0xO2xldHtkZXB0aDpufT10aGlzLiR0byxyPXRoaXMuJHRvLmFmdGVyKG4pO2Zvcig7bj4xJiZyPT10aGlzLiR0by5lbmQoLS1uKTspKytyO3JldHVybiByfWZpbmRDbG9zZUxldmVsKGUpe2U6Zm9yKGxldCB0PU1hdGgubWluKHRoaXMuZGVwdGgsZS5kZXB0aCk7dD49MDt0LS0pe2xldHttYXRjaDpuLHR5cGU6cn09dGhpcy5mcm9udGllclt0XSxvPXQ8ZS5kZXB0aCYmZS5lbmQodCsxKT09ZS5wb3MrKGUuZGVwdGgtKHQrMSkpLGk9Y29udGVudEFmdGVyRml0cyhlLHQscixuLG8pO2lmKGkpe2ZvcihsZXQgbj10LTE7bj49MDtuLS0pe2xldHttYXRjaDp0LHR5cGU6cn09dGhpcy5mcm9udGllcltuXSxvPWNvbnRlbnRBZnRlckZpdHMoZSxuLHIsdCwhMCk7aWYoIW98fG8uY2hpbGRDb3VudCljb250aW51ZSBlfXJldHVybntkZXB0aDp0LGZpdDppLG1vdmU6bz9lLmRvYy5yZXNvbHZlKGUuYWZ0ZXIodCsxKSk6ZX19fX1jbG9zZShlKXtsZXQgdD10aGlzLmZpbmRDbG9zZUxldmVsKGUpO2lmKCF0KXJldHVybiBudWxsO2Zvcig7dGhpcy5kZXB0aD50LmRlcHRoOyl0aGlzLmNsb3NlRnJvbnRpZXJOb2RlKCk7dC5maXQuY2hpbGRDb3VudCYmKHRoaXMucGxhY2VkPWFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsdC5kZXB0aCx0LmZpdCkpLGU9dC5tb3ZlO2ZvcihsZXQgbj10LmRlcHRoKzE7bjw9ZS5kZXB0aDtuKyspe2xldCB0PWUubm9kZShuKSxyPXQudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZSh0LmNvbnRlbnQsITAsZS5pbmRleChuKSk7dGhpcy5vcGVuRnJvbnRpZXJOb2RlKHQudHlwZSx0LmF0dHJzLHIpfXJldHVybiBlfW9wZW5Gcm9udGllck5vZGUoZSx0PW51bGwsbil7bGV0IHI9dGhpcy5mcm9udGllclt0aGlzLmRlcHRoXTtyLm1hdGNoPXIubWF0Y2gubWF0Y2hUeXBlKGUpLHRoaXMucGxhY2VkPWFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsdGhpcy5kZXB0aCxGcmFnbWVudC5mcm9tKGUuY3JlYXRlKHQsbikpKSx0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6ZSxtYXRjaDplLmNvbnRlbnRNYXRjaH0pfWNsb3NlRnJvbnRpZXJOb2RlKCl7bGV0IGU9dGhpcy5mcm9udGllci5wb3AoKS5tYXRjaC5maWxsQmVmb3JlKEZyYWdtZW50LmVtcHR5LCEwKTtlLmNoaWxkQ291bnQmJih0aGlzLnBsYWNlZD1hZGRUb0ZyYWdtZW50KHRoaXMucGxhY2VkLHRoaXMuZnJvbnRpZXIubGVuZ3RoLGUpKX19ZnVuY3Rpb24gZHJvcEZyb21GcmFnbWVudChlLHQsbil7cmV0dXJuIDA9PXQ/ZS5jdXRCeUluZGV4KG4sZS5jaGlsZENvdW50KTplLnJlcGxhY2VDaGlsZCgwLGUuZmlyc3RDaGlsZC5jb3B5KGRyb3BGcm9tRnJhZ21lbnQoZS5maXJzdENoaWxkLmNvbnRlbnQsdC0xLG4pKSl9ZnVuY3Rpb24gYWRkVG9GcmFnbWVudChlLHQsbil7cmV0dXJuIDA9PXQ/ZS5hcHBlbmQobik6ZS5yZXBsYWNlQ2hpbGQoZS5jaGlsZENvdW50LTEsZS5sYXN0Q2hpbGQuY29weShhZGRUb0ZyYWdtZW50KGUubGFzdENoaWxkLmNvbnRlbnQsdC0xLG4pKSl9ZnVuY3Rpb24gY29udGVudEF0KGUsdCl7Zm9yKGxldCBuPTA7bjx0O24rKyllPWUuZmlyc3RDaGlsZC5jb250ZW50O3JldHVybiBlfWZ1bmN0aW9uIGNsb3NlTm9kZVN0YXJ0KGUsdCxuKXtpZih0PD0wKXJldHVybiBlO2xldCByPWUuY29udGVudDtyZXR1cm4gdD4xJiYocj1yLnJlcGxhY2VDaGlsZCgwLGNsb3NlTm9kZVN0YXJ0KHIuZmlyc3RDaGlsZCx0LTEsMT09ci5jaGlsZENvdW50P24tMTowKSkpLHQ+MCYmKHI9ZS50eXBlLmNvbnRlbnRNYXRjaC5maWxsQmVmb3JlKHIpLmFwcGVuZChyKSxuPD0wJiYocj1yLmFwcGVuZChlLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQocikuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCkpKSksZS5jb3B5KHIpfWZ1bmN0aW9uIGNvbnRlbnRBZnRlckZpdHMoZSx0LG4scixvKXtsZXQgaT1lLm5vZGUodCkscz1vP2UuaW5kZXhBZnRlcih0KTplLmluZGV4KHQpO2lmKHM9PWkuY2hpbGRDb3VudCYmIW4uY29tcGF0aWJsZUNvbnRlbnQoaS50eXBlKSlyZXR1cm4gbnVsbDtsZXQgbD1yLmZpbGxCZWZvcmUoaS5jb250ZW50LCEwLHMpO3JldHVybiBsJiYhZnVuY3Rpb24oZSx0LG4pe2ZvcihsZXQgcj1uO3I8dC5jaGlsZENvdW50O3IrKylpZighZS5hbGxvd3NNYXJrcyh0LmNoaWxkKHIpLm1hcmtzKSlyZXR1cm4hMDtyZXR1cm4hMX0obixpLmNvbnRlbnQscyk/bDpudWxsfWZ1bmN0aW9uIGRlZmluZXNDb250ZW50KGUpe3JldHVybiBlLnNwZWMuZGVmaW5pbmd8fGUuc3BlYy5kZWZpbmluZ0ZvckNvbnRlbnR9ZnVuY3Rpb24gY2xvc2VGcmFnbWVudChlLHQsbixyLG8pe2lmKHQ8bil7bGV0IG89ZS5maXJzdENoaWxkO2U9ZS5yZXBsYWNlQ2hpbGQoMCxvLmNvcHkoY2xvc2VGcmFnbWVudChvLmNvbnRlbnQsdCsxLG4scixvKSkpfWlmKHQ+cil7bGV0IHQ9by5jb250ZW50TWF0Y2hBdCgwKSxuPXQuZmlsbEJlZm9yZShlKS5hcHBlbmQoZSk7ZT1uLmFwcGVuZCh0Lm1hdGNoRnJhZ21lbnQobikuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwhMCkpfXJldHVybiBlfWZ1bmN0aW9uIGNvdmVyZWREZXB0aHMoZSx0KXtsZXQgbj1bXTtmb3IobGV0IHI9TWF0aC5taW4oZS5kZXB0aCx0LmRlcHRoKTtyPj0wO3ItLSl7bGV0IG89ZS5zdGFydChyKTtpZihvPGUucG9zLShlLmRlcHRoLXIpfHx0LmVuZChyKT50LnBvcysodC5kZXB0aC1yKXx8ZS5ub2RlKHIpLnR5cGUuc3BlYy5pc29sYXRpbmd8fHQubm9kZShyKS50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrOyhvPT10LnN0YXJ0KHIpfHxyPT1lLmRlcHRoJiZyPT10LmRlcHRoJiZlLnBhcmVudC5pbmxpbmVDb250ZW50JiZ0LnBhcmVudC5pbmxpbmVDb250ZW50JiZyJiZ0LnN0YXJ0KHItMSk9PW8tMSkmJm4ucHVzaChyKX1yZXR1cm4gbn1jbGFzcyBBdHRyU3RlcCBleHRlbmRzIFN0ZXB7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCksdGhpcy5wb3M9ZSx0aGlzLmF0dHI9dCx0aGlzLnZhbHVlPW59YXBwbHkoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKCF0KXJldHVybiBTdGVwUmVzdWx0LmZhaWwoIk5vIG5vZGUgYXQgYXR0cmlidXRlIHN0ZXAncyBwb3NpdGlvbiIpO2xldCBuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlIGluIHQuYXR0cnMpbltlXT10LmF0dHJzW2VdO25bdGhpcy5hdHRyXT10aGlzLnZhbHVlO2xldCByPXQudHlwZS5jcmVhdGUobixudWxsLHQubWFya3MpO3JldHVybiBTdGVwUmVzdWx0LmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShyKSwwLHQuaXNMZWFmPzA6MSkpfWdldE1hcCgpe3JldHVybiBTdGVwTWFwLmVtcHR5fWludmVydChlKXtyZXR1cm4gbmV3IEF0dHJTdGVwKHRoaXMucG9zLHRoaXMuYXR0cixlLm5vZGVBdCh0aGlzLnBvcykuYXR0cnNbdGhpcy5hdHRyXSl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMucG9zLDEpO3JldHVybiB0LmRlbGV0ZWRBZnRlcj9udWxsOm5ldyBBdHRyU3RlcCh0LnBvcyx0aGlzLmF0dHIsdGhpcy52YWx1ZSl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhdHRyIixwb3M6dGhpcy5wb3MsYXR0cjp0aGlzLmF0dHIsdmFsdWU6dGhpcy52YWx1ZX19c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LnBvc3x8InN0cmluZyIhPXR5cGVvZiB0LmF0dHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEF0dHJTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyBBdHRyU3RlcCh0LnBvcyx0LmF0dHIsdC52YWx1ZSl9fVN0ZXAuanNvbklEKCJhdHRyIixBdHRyU3RlcCk7Y2xhc3MgRG9jQXR0clN0ZXAgZXh0ZW5kcyBTdGVwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLmF0dHI9ZSx0aGlzLnZhbHVlPXR9YXBwbHkoZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IG4gaW4gZS5hdHRycyl0W25dPWUuYXR0cnNbbl07dFt0aGlzLmF0dHJdPXRoaXMudmFsdWU7bGV0IG49ZS50eXBlLmNyZWF0ZSh0LGUuY29udGVudCxlLm1hcmtzKTtyZXR1cm4gU3RlcFJlc3VsdC5vayhuKX1nZXRNYXAoKXtyZXR1cm4gU3RlcE1hcC5lbXB0eX1pbnZlcnQoZSl7cmV0dXJuIG5ldyBEb2NBdHRyU3RlcCh0aGlzLmF0dHIsZS5hdHRyc1t0aGlzLmF0dHJdKX1tYXAoZSl7cmV0dXJuIHRoaXN9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJkb2NBdHRyIixhdHRyOnRoaXMuYXR0cix2YWx1ZTp0aGlzLnZhbHVlfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQuYXR0cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgRG9jQXR0clN0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IERvY0F0dHJTdGVwKHQuYXR0cix0LnZhbHVlKX19U3RlcC5qc29uSUQoImRvY0F0dHIiLERvY0F0dHJTdGVwKTtsZXQgdmU9Y2xhc3MgZXh0ZW5kcyBFcnJvcnt9O3ZlPWZ1bmN0aW9uIFRyYW5zZm9ybUVycm9yKGUpe2xldCB0PUVycm9yLmNhbGwodGhpcyxlKTtyZXR1cm4gdC5fX3Byb3RvX189VHJhbnNmb3JtRXJyb3IucHJvdG90eXBlLHR9LCh2ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj12ZSx2ZS5wcm90b3R5cGUubmFtZT0iVHJhbnNmb3JtRXJyb3IiO2NsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3RvcihlKXt0aGlzLmRvYz1lLHRoaXMuc3RlcHM9W10sdGhpcy5kb2NzPVtdLHRoaXMubWFwcGluZz1uZXcgTWFwcGluZ31nZXQgYmVmb3JlKCl7cmV0dXJuIHRoaXMuZG9jcy5sZW5ndGg/dGhpcy5kb2NzWzBdOnRoaXMuZG9jfXN0ZXAoZSl7bGV0IHQ9dGhpcy5tYXliZVN0ZXAoZSk7aWYodC5mYWlsZWQpdGhyb3cgbmV3IHZlKHQuZmFpbGVkKTtyZXR1cm4gdGhpc31tYXliZVN0ZXAoZSl7bGV0IHQ9ZS5hcHBseSh0aGlzLmRvYyk7cmV0dXJuIHQuZmFpbGVkfHx0aGlzLmFkZFN0ZXAoZSx0LmRvYyksdH1nZXQgZG9jQ2hhbmdlZCgpe3JldHVybiB0aGlzLnN0ZXBzLmxlbmd0aD4wfWNoYW5nZWRSYW5nZSgpe2xldCBlPTFlOSx0PS0xZTk7Zm9yKGxldCBuPTA7bjx0aGlzLm1hcHBpbmcubWFwcy5sZW5ndGg7bisrKXtsZXQgcj10aGlzLm1hcHBpbmcubWFwc1tuXTtuJiYoZT1yLm1hcChlLDEpLHQ9ci5tYXAodCwtMSkpLHIuZm9yRWFjaCgobixyLG8saSk9PntlPU1hdGgubWluKGUsbyksdD1NYXRoLm1heCh0LGkpfSl9cmV0dXJuIDFlOT09ZT9udWxsOntmcm9tOmUsdG86dH19YWRkU3RlcChlLHQpe3RoaXMuZG9jcy5wdXNoKHRoaXMuZG9jKSx0aGlzLnN0ZXBzLnB1c2goZSksdGhpcy5tYXBwaW5nLmFwcGVuZE1hcChlLmdldE1hcCgpKSx0aGlzLmRvYz10fXJlcGxhY2UoZSx0PWUsbj1TbGljZS5lbXB0eSl7bGV0IHI9cmVwbGFjZVN0ZXAodGhpcy5kb2MsZSx0LG4pO3JldHVybiByJiZ0aGlzLnN0ZXAociksdGhpc31yZXBsYWNlV2l0aChlLHQsbil7cmV0dXJuIHRoaXMucmVwbGFjZShlLHQsbmV3IFNsaWNlKEZyYWdtZW50LmZyb20obiksMCwwKSl9ZGVsZXRlKGUsdCl7cmV0dXJuIHRoaXMucmVwbGFjZShlLHQsU2xpY2UuZW1wdHkpfWluc2VydChlLHQpe3JldHVybiB0aGlzLnJlcGxhY2VXaXRoKGUsZSx0KX1yZXBsYWNlUmFuZ2UoZSx0LG4pe3JldHVybiBmdW5jdGlvbihlLHQsbixyKXtpZighci5zaXplKXJldHVybiBlLmRlbGV0ZVJhbmdlKHQsbik7bGV0IG89ZS5kb2MucmVzb2x2ZSh0KSxpPWUuZG9jLnJlc29sdmUobik7aWYoZml0c1RyaXZpYWxseShvLGkscikpcmV0dXJuIGUuc3RlcChuZXcgUmVwbGFjZVN0ZXAodCxuLHIpKTtsZXQgcz1jb3ZlcmVkRGVwdGhzKG8saSk7MD09c1tzLmxlbmd0aC0xXSYmcy5wb3AoKTtsZXQgbD0tKG8uZGVwdGgrMSk7cy51bnNoaWZ0KGwpO2ZvcihsZXQgZT1vLmRlcHRoLHQ9by5wb3MtMTtlPjA7ZS0tLHQtLSl7bGV0IG49by5ub2RlKGUpLnR5cGUuc3BlYztpZihuLmRlZmluaW5nfHxuLmRlZmluaW5nQXNDb250ZXh0fHxuLmlzb2xhdGluZylicmVhaztzLmluZGV4T2YoZSk+LTE/bD1lOm8uYmVmb3JlKGUpPT10JiZzLnNwbGljZSgxLDAsLWUpfWxldCBhPXMuaW5kZXhPZihsKSxjPVtdLGQ9ci5vcGVuU3RhcnQ7Zm9yKGxldCBlPXIuY29udGVudCx0PTA7O3QrKyl7bGV0IG49ZS5maXJzdENoaWxkO2lmKGMucHVzaChuKSx0PT1yLm9wZW5TdGFydClicmVhaztlPW4uY29udGVudH1mb3IobGV0IGU9ZC0xO2U+PTA7ZS0tKXtsZXQgdD1jW2VdLG49ZGVmaW5lc0NvbnRlbnQodC50eXBlKTtpZihuJiYhdC5zYW1lTWFya3VwKG8ubm9kZShNYXRoLmFicyhsKS0xKSkpZD1lO2Vsc2UgaWYobnx8IXQudHlwZS5pc1RleHRibG9jaylicmVha31mb3IobGV0IHQ9ci5vcGVuU3RhcnQ7dD49MDt0LS0pe2xldCBsPSh0K2QrMSklKHIub3BlblN0YXJ0KzEpLHA9Y1tsXTtpZihwKWZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKXtsZXQgYz1zWyh0K2EpJXMubGVuZ3RoXSxkPSEwO2M8MCYmKGQ9ITEsYz0tYyk7bGV0IGY9by5ub2RlKGMtMSksbT1vLmluZGV4KGMtMSk7aWYoZi5jYW5SZXBsYWNlV2l0aChtLG0scC50eXBlLHAubWFya3MpKXJldHVybiBlLnJlcGxhY2Uoby5iZWZvcmUoYyksZD9pLmFmdGVyKGMpOm4sbmV3IFNsaWNlKGNsb3NlRnJhZ21lbnQoci5jb250ZW50LDAsci5vcGVuU3RhcnQsbCksbCxyLm9wZW5FbmQpKX19bGV0IHA9ZS5zdGVwcy5sZW5ndGg7Zm9yKGxldCBsPXMubGVuZ3RoLTE7bD49MCYmKGUucmVwbGFjZSh0LG4sciksIShlLnN0ZXBzLmxlbmd0aD5wKSk7bC0tKXtsZXQgZT1zW2xdO2U8MHx8KHQ9by5iZWZvcmUoZSksbj1pLmFmdGVyKGUpKX19KHRoaXMsZSx0LG4pLHRoaXN9cmVwbGFjZVJhbmdlV2l0aChlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFyLmlzSW5saW5lJiZ0PT1uJiZlLmRvYy5yZXNvbHZlKHQpLnBhcmVudC5jb250ZW50LnNpemUpe2xldCBvPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLnJlc29sdmUodCk7aWYoci5wYXJlbnQuY2FuUmVwbGFjZVdpdGgoci5pbmRleCgpLHIuaW5kZXgoKSxuKSlyZXR1cm4gdDtpZigwPT1yLnBhcmVudE9mZnNldClmb3IobGV0IGU9ci5kZXB0aC0xO2U+PTA7ZS0tKXtsZXQgdD1yLmluZGV4KGUpO2lmKHIubm9kZShlKS5jYW5SZXBsYWNlV2l0aCh0LHQsbikpcmV0dXJuIHIuYmVmb3JlKGUrMSk7aWYodD4wKXJldHVybiBudWxsfWlmKHIucGFyZW50T2Zmc2V0PT1yLnBhcmVudC5jb250ZW50LnNpemUpZm9yKGxldCBlPXIuZGVwdGgtMTtlPj0wO2UtLSl7bGV0IHQ9ci5pbmRleEFmdGVyKGUpO2lmKHIubm9kZShlKS5jYW5SZXBsYWNlV2l0aCh0LHQsbikpcmV0dXJuIHIuYWZ0ZXIoZSsxKTtpZih0PHIubm9kZShlKS5jaGlsZENvdW50KXJldHVybiBudWxsfXJldHVybiBudWxsfShlLmRvYyx0LHIudHlwZSk7bnVsbCE9byYmKHQ9bj1vKX1lLnJlcGxhY2VSYW5nZSh0LG4sbmV3IFNsaWNlKEZyYWdtZW50LmZyb20ociksMCwwKSl9KHRoaXMsZSx0LG4pLHRoaXN9ZGVsZXRlUmFuZ2UoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2xldCByPWUuZG9jLnJlc29sdmUodCksbz1lLmRvYy5yZXNvbHZlKG4pO2lmKHIucGFyZW50LmlzVGV4dGJsb2NrJiZvLnBhcmVudC5pc1RleHRibG9jayYmci5zdGFydCgpIT1vLnN0YXJ0KCkmJjA9PXIucGFyZW50T2Zmc2V0JiYwPT1vLnBhcmVudE9mZnNldCl7bGV0IGk9ci5zaGFyZWREZXB0aChuKSxzPSExO2ZvcihsZXQgZT1yLmRlcHRoO2U+aTtlLS0pci5ub2RlKGUpLnR5cGUuc3BlYy5pc29sYXRpbmcmJihzPSEwKTtmb3IobGV0IGU9by5kZXB0aDtlPmk7ZS0tKW8ubm9kZShlKS50eXBlLnNwZWMuaXNvbGF0aW5nJiYocz0hMCk7aWYoIXMpe2ZvcihsZXQgZT1yLmRlcHRoO2U+MCYmdD09ci5zdGFydChlKTtlLS0pdD1yLmJlZm9yZShlKTtmb3IobGV0IGU9by5kZXB0aDtlPjAmJm49PW8uc3RhcnQoZSk7ZS0tKW49by5iZWZvcmUoZSk7cj1lLmRvYy5yZXNvbHZlKHQpLG89ZS5kb2MucmVzb2x2ZShuKX19bGV0IGk9Y292ZXJlZERlcHRocyhyLG8pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgbj1pW3RdLHM9dD09aS5sZW5ndGgtMTtpZihzJiYwPT1ufHxyLm5vZGUobikudHlwZS5jb250ZW50TWF0Y2gudmFsaWRFbmQpcmV0dXJuIGUuZGVsZXRlKHIuc3RhcnQobiksby5lbmQobikpO2lmKG4+MCYmKHN8fHIubm9kZShuLTEpLmNhblJlcGxhY2Uoci5pbmRleChuLTEpLG8uaW5kZXhBZnRlcihuLTEpKSkpcmV0dXJuIGUuZGVsZXRlKHIuYmVmb3JlKG4pLG8uYWZ0ZXIobikpfWZvcihsZXQgaT0xO2k8PXIuZGVwdGgmJmk8PW8uZGVwdGg7aSsrKWlmKHQtci5zdGFydChpKT09ci5kZXB0aC1pJiZuPnIuZW5kKGkpJiZvLmVuZChpKS1uIT1vLmRlcHRoLWkmJnIuc3RhcnQoaS0xKT09by5zdGFydChpLTEpJiZyLm5vZGUoaS0xKS5jYW5SZXBsYWNlKHIuaW5kZXgoaS0xKSxvLmluZGV4KGktMSkpKXJldHVybiBlLmRlbGV0ZShyLmJlZm9yZShpKSxuKTtlLmRlbGV0ZSh0LG4pfSh0aGlzLGUsdCksdGhpc31saWZ0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtsZXR7JGZyb206ciwkdG86byxkZXB0aDppfT10LHM9ci5iZWZvcmUoaSsxKSxsPW8uYWZ0ZXIoaSsxKSxhPXMsYz1sLGQ9RnJhZ21lbnQuZW1wdHkscD0wO2ZvcihsZXQgZT1pLHQ9ITE7ZT5uO2UtLSl0fHxyLmluZGV4KGUpPjA/KHQ9ITAsZD1GcmFnbWVudC5mcm9tKHIubm9kZShlKS5jb3B5KGQpKSxwKyspOmEtLTtsZXQgZj1GcmFnbWVudC5lbXB0eSxtPTA7Zm9yKGxldCBlPWksdD0hMTtlPm47ZS0tKXR8fG8uYWZ0ZXIoZSsxKTxvLmVuZChlKT8odD0hMCxmPUZyYWdtZW50LmZyb20oby5ub2RlKGUpLmNvcHkoZikpLG0rKyk6YysrO2Uuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAoYSxjLHMsbCxuZXcgU2xpY2UoZC5hcHBlbmQoZikscCxtKSxkLnNpemUtcCwhMCkpfSh0aGlzLGUsdCksdGhpc31qb2luKGUsdD0xKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2xldCByPW51bGwse2xpbmVicmVha1JlcGxhY2VtZW50Om99PWUuZG9jLnR5cGUuc2NoZW1hLGk9ZS5kb2MucmVzb2x2ZSh0LW4pLHM9aS5ub2RlKCkudHlwZTtpZihvJiZzLmlubGluZUNvbnRlbnQpe2xldCBlPSJwcmUiPT1zLndoaXRlc3BhY2UsdD0hIXMuY29udGVudE1hdGNoLm1hdGNoVHlwZShvKTtlJiYhdD9yPSExOiFlJiZ0JiYocj0hMCl9bGV0IGw9ZS5zdGVwcy5sZW5ndGg7aWYoITE9PT1yKXtsZXQgcj1lLmRvYy5yZXNvbHZlKHQrbik7cmVwbGFjZUxpbmVicmVha3MoZSxyLm5vZGUoKSxyLmJlZm9yZSgpLGwpfXMuaW5saW5lQ29udGVudCYmY2xlYXJJbmNvbXBhdGlibGUoZSx0K24tMSxzLGkubm9kZSgpLmNvbnRlbnRNYXRjaEF0KGkuaW5kZXgoKSksbnVsbD09cik7bGV0IGE9ZS5tYXBwaW5nLnNsaWNlKGwpLGM9YS5tYXAodC1uKTtpZihlLnN0ZXAobmV3IFJlcGxhY2VTdGVwKGMsYS5tYXAodCtuLC0xKSxTbGljZS5lbXB0eSwhMCkpLCEwPT09cil7bGV0IHQ9ZS5kb2MucmVzb2x2ZShjKTtyZXBsYWNlTmV3bGluZXMoZSx0Lm5vZGUoKSx0LmJlZm9yZSgpLGUuc3RlcHMubGVuZ3RoKX19KHRoaXMsZSx0KSx0aGlzfXdyYXAoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2xldCByPUZyYWdtZW50LmVtcHR5O2ZvcihsZXQgZT1uLmxlbmd0aC0xO2U+PTA7ZS0tKXtpZihyLnNpemUpe2xldCB0PW5bZV0udHlwZS5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudChyKTtpZighdHx8IXQudmFsaWRFbmQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIldyYXBwZXIgdHlwZSBnaXZlbiB0byBUcmFuc2Zvcm0ud3JhcCBkb2VzIG5vdCBmb3JtIHZhbGlkIGNvbnRlbnQgb2YgaXRzIHBhcmVudCB3cmFwcGVyIil9cj1GcmFnbWVudC5mcm9tKG5bZV0udHlwZS5jcmVhdGUobltlXS5hdHRycyxyKSl9bGV0IG89dC5zdGFydCxpPXQuZW5kO2Uuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAobyxpLG8saSxuZXcgU2xpY2UociwwLDApLG4ubGVuZ3RoLCEwKSl9KHRoaXMsZSx0KSx0aGlzfXNldEJsb2NrVHlwZShlLHQ9ZSxuLHI9bnVsbCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoIXIuaXNUZXh0YmxvY2spdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlR5cGUgZ2l2ZW4gdG8gc2V0QmxvY2tUeXBlIHNob3VsZCBiZSBhIHRleHRibG9jayIpO2xldCBpPWUuc3RlcHMubGVuZ3RoO2UuZG9jLm5vZGVzQmV0d2Vlbih0LG4sKHQsbik9PntsZXQgcz0iZnVuY3Rpb24iPT10eXBlb2Ygbz9vKHQpOm87aWYodC5pc1RleHRibG9jayYmIXQuaGFzTWFya3VwKHIscykmJmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLnJlc29sdmUodCksbz1yLmluZGV4KCk7cmV0dXJuIHIucGFyZW50LmNhblJlcGxhY2VXaXRoKG8sbysxLG4pfShlLmRvYyxlLm1hcHBpbmcuc2xpY2UoaSkubWFwKG4pLHIpKXtsZXQgbz1udWxsO2lmKHIuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50KXtsZXQgZT0icHJlIj09ci53aGl0ZXNwYWNlLHQ9ISFyLmNvbnRlbnRNYXRjaC5tYXRjaFR5cGUoci5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpO2UmJiF0P289ITE6IWUmJnQmJihvPSEwKX0hMT09PW8mJnJlcGxhY2VMaW5lYnJlYWtzKGUsdCxuLGkpLGNsZWFySW5jb21wYXRpYmxlKGUsZS5tYXBwaW5nLnNsaWNlKGkpLm1hcChuLDEpLHIsdm9pZCAwLG51bGw9PT1vKTtsZXQgbD1lLm1hcHBpbmcuc2xpY2UoaSksYT1sLm1hcChuLDEpLGM9bC5tYXAobit0Lm5vZGVTaXplLDEpO3JldHVybiBlLnN0ZXAobmV3IFJlcGxhY2VBcm91bmRTdGVwKGEsYyxhKzEsYy0xLG5ldyBTbGljZShGcmFnbWVudC5mcm9tKHIuY3JlYXRlKHMsbnVsbCx0Lm1hcmtzKSksMCwwKSwxLCEwKSksITA9PT1vJiZyZXBsYWNlTmV3bGluZXMoZSx0LG4saSksITF9fSl9KHRoaXMsZSx0LG4sciksdGhpc31zZXROb2RlTWFya3VwKGUsdCxuPW51bGwscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7bGV0IGk9ZS5kb2Mubm9kZUF0KHQpO2lmKCFpKXRocm93IG5ldyBSYW5nZUVycm9yKCJObyBub2RlIGF0IGdpdmVuIHBvc2l0aW9uIik7bnx8KG49aS50eXBlKTtsZXQgcz1uLmNyZWF0ZShyLG51bGwsb3x8aS5tYXJrcyk7aWYoaS5pc0xlYWYpcmV0dXJuIGUucmVwbGFjZVdpdGgodCx0K2kubm9kZVNpemUscyk7aWYoIW4udmFsaWRDb250ZW50KGkuY29udGVudCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgY29udGVudCBmb3Igbm9kZSB0eXBlICIrbi5uYW1lKTtlLnN0ZXAobmV3IFJlcGxhY2VBcm91bmRTdGVwKHQsdCtpLm5vZGVTaXplLHQrMSx0K2kubm9kZVNpemUtMSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShzKSwwLDApLDEsITApKX0odGhpcyxlLHQsbixyKSx0aGlzfXNldE5vZGVBdHRyaWJ1dGUoZSx0LG4pe3JldHVybiB0aGlzLnN0ZXAobmV3IEF0dHJTdGVwKGUsdCxuKSksdGhpc31zZXREb2NBdHRyaWJ1dGUoZSx0KXtyZXR1cm4gdGhpcy5zdGVwKG5ldyBEb2NBdHRyU3RlcChlLHQpKSx0aGlzfWFkZE5vZGVNYXJrKGUsdCl7cmV0dXJuIHRoaXMuc3RlcChuZXcgQWRkTm9kZU1hcmtTdGVwKGUsdCkpLHRoaXN9cmVtb3ZlTm9kZU1hcmsoZSx0KXtsZXQgbj10aGlzLmRvYy5ub2RlQXQoZSk7aWYoIW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIG5vZGUgYXQgcG9zaXRpb24gIitlKTtpZih0IGluc3RhbmNlb2YgbGUpdC5pc0luU2V0KG4ubWFya3MpJiZ0aGlzLnN0ZXAobmV3IFJlbW92ZU5vZGVNYXJrU3RlcChlLHQpKTtlbHNle2xldCByLG89bi5tYXJrcyxpPVtdO2Zvcig7cj10LmlzSW5TZXQobyk7KWkucHVzaChuZXcgUmVtb3ZlTm9kZU1hcmtTdGVwKGUscikpLG89ci5yZW1vdmVGcm9tU2V0KG8pO2ZvcihsZXQgZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMuc3RlcChpW2VdKX1yZXR1cm4gdGhpc31zcGxpdChlLHQ9MSxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG49MSxyKXtsZXQgbz1lLmRvYy5yZXNvbHZlKHQpLGk9RnJhZ21lbnQuZW1wdHkscz1GcmFnbWVudC5lbXB0eTtmb3IobGV0IGU9by5kZXB0aCx0PW8uZGVwdGgtbixsPW4tMTtlPnQ7ZS0tLGwtLSl7aT1GcmFnbWVudC5mcm9tKG8ubm9kZShlKS5jb3B5KGkpKTtsZXQgdD1yJiZyW2xdO3M9RnJhZ21lbnQuZnJvbSh0P3QudHlwZS5jcmVhdGUodC5hdHRycyxzKTpvLm5vZGUoZSkuY29weShzKSl9ZS5zdGVwKG5ldyBSZXBsYWNlU3RlcCh0LHQsbmV3IFNsaWNlKGkuYXBwZW5kKHMpLG4sbiksITApKX0odGhpcyxlLHQsbiksdGhpc31hZGRNYXJrKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7bGV0IG8saSxzPVtdLGw9W107ZS5kb2Mubm9kZXNCZXR3ZWVuKHQsbiwoZSxhLGMpPT57aWYoIWUuaXNJbmxpbmUpcmV0dXJuO2xldCBkPWUubWFya3M7aWYoIXIuaXNJblNldChkKSYmYy50eXBlLmFsbG93c01hcmtUeXBlKHIudHlwZSkpe2xldCBjPU1hdGgubWF4KGEsdCkscD1NYXRoLm1pbihhK2Uubm9kZVNpemUsbiksZj1yLmFkZFRvU2V0KGQpO2ZvcihsZXQgZT0wO2U8ZC5sZW5ndGg7ZSsrKWRbZV0uaXNJblNldChmKXx8KG8mJm8udG89PWMmJm8ubWFyay5lcShkW2VdKT9vLnRvPXA6cy5wdXNoKG89bmV3IFJlbW92ZU1hcmtTdGVwKGMscCxkW2VdKSkpO2kmJmkudG89PWM/aS50bz1wOmwucHVzaChpPW5ldyBBZGRNYXJrU3RlcChjLHAscikpfX0pLHMuZm9yRWFjaCh0PT5lLnN0ZXAodCkpLGwuZm9yRWFjaCh0PT5lLnN0ZXAodCkpfSh0aGlzLGUsdCxuKSx0aGlzfXJlbW92ZU1hcmsoZSx0LG4pe3JldHVybiBmdW5jdGlvbihlLHQsbixyKXtsZXQgbz1bXSxpPTA7ZS5kb2Mubm9kZXNCZXR3ZWVuKHQsbiwoZSxzKT0+e2lmKCFlLmlzSW5saW5lKXJldHVybjtpKys7bGV0IGw9bnVsbDtpZihyIGluc3RhbmNlb2YgTWFya1R5cGUpe2xldCB0LG49ZS5tYXJrcztmb3IoO3Q9ci5pc0luU2V0KG4pOykobHx8KGw9W10pKS5wdXNoKHQpLG49dC5yZW1vdmVGcm9tU2V0KG4pfWVsc2Ugcj9yLmlzSW5TZXQoZS5tYXJrcykmJihsPVtyXSk6bD1lLm1hcmtzO2lmKGwmJmwubGVuZ3RoKXtsZXQgcj1NYXRoLm1pbihzK2Uubm9kZVNpemUsbik7Zm9yKGxldCBlPTA7ZTxsLmxlbmd0aDtlKyspe2xldCBuLGE9bFtlXTtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IHQ9b1tlXTt0LnN0ZXA9PWktMSYmYS5lcShvW2VdLnN0eWxlKSYmKG49dCl9bj8obi50bz1yLG4uc3RlcD1pKTpvLnB1c2goe3N0eWxlOmEsZnJvbTpNYXRoLm1heChzLHQpLHRvOnIsc3RlcDppfSl9fX0pLG8uZm9yRWFjaCh0PT5lLnN0ZXAobmV3IFJlbW92ZU1hcmtTdGVwKHQuZnJvbSx0LnRvLHQuc3R5bGUpKSl9KHRoaXMsZSx0LG4pLHRoaXN9Y2xlYXJJbmNvbXBhdGlibGUoZSx0LG4pe3JldHVybiBjbGVhckluY29tcGF0aWJsZSh0aGlzLGUsdCxuKSx0aGlzfX1jb25zdCB4ZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIFNlbGVjdGlvbntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy4kYW5jaG9yPWUsdGhpcy4kaGVhZD10LHRoaXMucmFuZ2VzPW58fFtuZXcgU2VsZWN0aW9uUmFuZ2UoZS5taW4odCksZS5tYXgodCkpXX1nZXQgYW5jaG9yKCl7cmV0dXJuIHRoaXMuJGFuY2hvci5wb3N9Z2V0IGhlYWQoKXtyZXR1cm4gdGhpcy4kaGVhZC5wb3N9Z2V0IGZyb20oKXtyZXR1cm4gdGhpcy4kZnJvbS5wb3N9Z2V0IHRvKCl7cmV0dXJuIHRoaXMuJHRvLnBvc31nZXQgJGZyb20oKXtyZXR1cm4gdGhpcy5yYW5nZXNbMF0uJGZyb219Z2V0ICR0bygpe3JldHVybiB0aGlzLnJhbmdlc1swXS4kdG99Z2V0IGVtcHR5KCl7bGV0IGU9dGhpcy5yYW5nZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS4kZnJvbS5wb3MhPWVbdF0uJHRvLnBvcylyZXR1cm4hMTtyZXR1cm4hMH1jb250ZW50KCl7cmV0dXJuIHRoaXMuJGZyb20uZG9jLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvLCEwKX1yZXBsYWNlKGUsdD1TbGljZS5lbXB0eSl7bGV0IG49dC5jb250ZW50Lmxhc3RDaGlsZCxyPW51bGw7Zm9yKGxldCBlPTA7ZTx0Lm9wZW5FbmQ7ZSsrKXI9bixuPW4ubGFzdENoaWxkO2xldCBvPWUuc3RlcHMubGVuZ3RoLGk9dGhpcy5yYW5nZXM7Zm9yKGxldCBzPTA7czxpLmxlbmd0aDtzKyspe2xldHskZnJvbTpsLCR0bzphfT1pW3NdLGM9ZS5tYXBwaW5nLnNsaWNlKG8pO2UucmVwbGFjZVJhbmdlKGMubWFwKGwucG9zKSxjLm1hcChhLnBvcykscz9TbGljZS5lbXB0eTp0KSwwPT1zJiZzZWxlY3Rpb25Ub0luc2VydGlvbkVuZCQxKGUsbywobj9uLmlzSW5saW5lOnImJnIuaXNUZXh0YmxvY2spPy0xOjEpfX1yZXBsYWNlV2l0aChlLHQpe2xldCBuPWUuc3RlcHMubGVuZ3RoLHI9dGhpcy5yYW5nZXM7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspe2xldHskZnJvbTppLCR0bzpzfT1yW29dLGw9ZS5tYXBwaW5nLnNsaWNlKG4pLGE9bC5tYXAoaS5wb3MpLGM9bC5tYXAocy5wb3MpO28/ZS5kZWxldGVSYW5nZShhLGMpOihlLnJlcGxhY2VSYW5nZVdpdGgoYSxjLHQpLHNlbGVjdGlvblRvSW5zZXJ0aW9uRW5kJDEoZSxuLHQuaXNJbmxpbmU/LTE6MSkpfX1zdGF0aWMgZmluZEZyb20oZSx0LG49ITEpe2xldCByPWUucGFyZW50LmlubGluZUNvbnRlbnQ/bmV3IFRleHRTZWxlY3Rpb24oZSk6ZmluZFNlbGVjdGlvbkluKGUubm9kZSgwKSxlLnBhcmVudCxlLnBvcyxlLmluZGV4KCksdCxuKTtpZihyKXJldHVybiByO2ZvcihsZXQgcj1lLmRlcHRoLTE7cj49MDtyLS0pe2xldCBvPXQ8MD9maW5kU2VsZWN0aW9uSW4oZS5ub2RlKDApLGUubm9kZShyKSxlLmJlZm9yZShyKzEpLGUuaW5kZXgociksdCxuKTpmaW5kU2VsZWN0aW9uSW4oZS5ub2RlKDApLGUubm9kZShyKSxlLmFmdGVyKHIrMSksZS5pbmRleChyKSsxLHQsbik7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH1zdGF0aWMgbmVhcihlLHQ9MSl7cmV0dXJuIHRoaXMuZmluZEZyb20oZSx0KXx8dGhpcy5maW5kRnJvbShlLC10KXx8bmV3IEFsbFNlbGVjdGlvbihlLm5vZGUoMCkpfXN0YXRpYyBhdFN0YXJ0KGUpe3JldHVybiBmaW5kU2VsZWN0aW9uSW4oZSxlLDAsMCwxKXx8bmV3IEFsbFNlbGVjdGlvbihlKX1zdGF0aWMgYXRFbmQoZSl7cmV0dXJuIGZpbmRTZWxlY3Rpb25JbihlLGUsZS5jb250ZW50LnNpemUsZS5jaGlsZENvdW50LC0xKXx8bmV3IEFsbFNlbGVjdGlvbihlKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZighdHx8IXQudHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgU2VsZWN0aW9uLmZyb21KU09OIik7bGV0IG49eGVbdC50eXBlXTtpZighbil0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gc2VsZWN0aW9uIHR5cGUgJHt0LnR5cGV9IGRlZmluZWRgKTtyZXR1cm4gbi5mcm9tSlNPTihlLHQpfXN0YXRpYyBqc29uSUQoZSx0KXtpZihlIGluIHhlKXRocm93IG5ldyBSYW5nZUVycm9yKCJEdXBsaWNhdGUgdXNlIG9mIHNlbGVjdGlvbiBKU09OIElEICIrZSk7cmV0dXJuIHhlW2VdPXQsdC5wcm90b3R5cGUuanNvbklEPWUsdH1nZXRCb29rbWFyaygpe3JldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4odGhpcy4kYW5jaG9yLHRoaXMuJGhlYWQpLmdldEJvb2ttYXJrKCl9fVNlbGVjdGlvbi5wcm90b3R5cGUudmlzaWJsZT0hMDtjbGFzcyBTZWxlY3Rpb25SYW5nZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuJGZyb209ZSx0aGlzLiR0bz10fX1sZXQgU2U9ITE7ZnVuY3Rpb24gY2hlY2tUZXh0U2VsZWN0aW9uKGUpe1NlfHxlLnBhcmVudC5pbmxpbmVDb250ZW50fHwoU2U9ITAsY29uc29sZS53YXJuKCJUZXh0U2VsZWN0aW9uIGVuZHBvaW50IG5vdCBwb2ludGluZyBpbnRvIGEgbm9kZSB3aXRoIGlubGluZSBjb250ZW50ICgiK2UucGFyZW50LnR5cGUubmFtZSsiKSIpKX1jbGFzcyBUZXh0U2VsZWN0aW9uIGV4dGVuZHMgU2VsZWN0aW9ue2NvbnN0cnVjdG9yKGUsdD1lKXtjaGVja1RleHRTZWxlY3Rpb24oZSksY2hlY2tUZXh0U2VsZWN0aW9uKHQpLHN1cGVyKGUsdCl9Z2V0ICRjdXJzb3IoKXtyZXR1cm4gdGhpcy4kYW5jaG9yLnBvcz09dGhpcy4kaGVhZC5wb3M/dGhpcy4kaGVhZDpudWxsfW1hcChlLHQpe2xldCBuPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLmhlYWQpKTtpZighbi5wYXJlbnQuaW5saW5lQ29udGVudClyZXR1cm4gU2VsZWN0aW9uLm5lYXIobik7bGV0IHI9ZS5yZXNvbHZlKHQubWFwKHRoaXMuYW5jaG9yKSk7cmV0dXJuIG5ldyBUZXh0U2VsZWN0aW9uKHIucGFyZW50LmlubGluZUNvbnRlbnQ/cjpuLG4pfXJlcGxhY2UoZSx0PVNsaWNlLmVtcHR5KXtpZihzdXBlci5yZXBsYWNlKGUsdCksdD09U2xpY2UuZW1wdHkpe2xldCB0PXRoaXMuJGZyb20ubWFya3NBY3Jvc3ModGhpcy4kdG8pO3QmJmUuZW5zdXJlTWFya3ModCl9fWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbiYmZS5hbmNob3I9PXRoaXMuYW5jaG9yJiZlLmhlYWQ9PXRoaXMuaGVhZH1nZXRCb29rbWFyaygpe3JldHVybiBuZXcgVGV4dEJvb2ttYXJrKHRoaXMuYW5jaG9yLHRoaXMuaGVhZCl9dG9KU09OKCl7cmV0dXJue3R5cGU6InRleHQiLGFuY2hvcjp0aGlzLmFuY2hvcixoZWFkOnRoaXMuaGVhZH19c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0LmFuY2hvcnx8Im51bWJlciIhPXR5cGVvZiB0LmhlYWQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFRleHRTZWxlY3Rpb24uZnJvbUpTT04iKTtyZXR1cm4gbmV3IFRleHRTZWxlY3Rpb24oZS5yZXNvbHZlKHQuYW5jaG9yKSxlLnJlc29sdmUodC5oZWFkKSl9c3RhdGljIGNyZWF0ZShlLHQsbj10KXtsZXQgcj1lLnJlc29sdmUodCk7cmV0dXJuIG5ldyB0aGlzKHIsbj09dD9yOmUucmVzb2x2ZShuKSl9c3RhdGljIGJldHdlZW4oZSx0LG4pe2xldCByPWUucG9zLXQucG9zO2lmKG4mJiFyfHwobj1yPj0wPzE6LTEpLCF0LnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgZT1TZWxlY3Rpb24uZmluZEZyb20odCxuLCEwKXx8U2VsZWN0aW9uLmZpbmRGcm9tKHQsLW4sITApO2lmKCFlKXJldHVybiBTZWxlY3Rpb24ubmVhcih0LG4pO3Q9ZS4kaGVhZH1yZXR1cm4gZS5wYXJlbnQuaW5saW5lQ29udGVudHx8KDA9PXJ8fChlPShTZWxlY3Rpb24uZmluZEZyb20oZSwtbiwhMCl8fFNlbGVjdGlvbi5maW5kRnJvbShlLG4sITApKS4kYW5jaG9yKS5wb3M8dC5wb3MhPXI8MCkmJihlPXQpLG5ldyBUZXh0U2VsZWN0aW9uKGUsdCl9fVNlbGVjdGlvbi5qc29uSUQoInRleHQiLFRleHRTZWxlY3Rpb24pO2NsYXNzIFRleHRCb29rbWFya3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuYW5jaG9yPWUsdGhpcy5oZWFkPXR9bWFwKGUpe3JldHVybiBuZXcgVGV4dEJvb2ttYXJrKGUubWFwKHRoaXMuYW5jaG9yKSxlLm1hcCh0aGlzLmhlYWQpKX1yZXNvbHZlKGUpe3JldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4oZS5yZXNvbHZlKHRoaXMuYW5jaG9yKSxlLnJlc29sdmUodGhpcy5oZWFkKSl9fWNsYXNzIE5vZGVTZWxlY3Rpb24gZXh0ZW5kcyBTZWxlY3Rpb257Y29uc3RydWN0b3IoZSl7bGV0IHQ9ZS5ub2RlQWZ0ZXIsbj1lLm5vZGUoMCkucmVzb2x2ZShlLnBvcyt0Lm5vZGVTaXplKTtzdXBlcihlLG4pLHRoaXMubm9kZT10fW1hcChlLHQpe2xldHtkZWxldGVkOm4scG9zOnJ9PXQubWFwUmVzdWx0KHRoaXMuYW5jaG9yKSxvPWUucmVzb2x2ZShyKTtyZXR1cm4gbj9TZWxlY3Rpb24ubmVhcihvKTpuZXcgTm9kZVNlbGVjdGlvbihvKX1jb250ZW50KCl7cmV0dXJuIG5ldyBTbGljZShGcmFnbWVudC5mcm9tKHRoaXMubm9kZSksMCwwKX1lcShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24mJmUuYW5jaG9yPT10aGlzLmFuY2hvcn10b0pTT04oKXtyZXR1cm57dHlwZToibm9kZSIsYW5jaG9yOnRoaXMuYW5jaG9yfX1nZXRCb29rbWFyaygpe3JldHVybiBuZXcgTm9kZUJvb2ttYXJrKHRoaXMuYW5jaG9yKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQuYW5jaG9yKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlU2VsZWN0aW9uLmZyb21KU09OIik7cmV0dXJuIG5ldyBOb2RlU2VsZWN0aW9uKGUucmVzb2x2ZSh0LmFuY2hvcikpfXN0YXRpYyBjcmVhdGUoZSx0KXtyZXR1cm4gbmV3IE5vZGVTZWxlY3Rpb24oZS5yZXNvbHZlKHQpKX1zdGF0aWMgaXNTZWxlY3RhYmxlKGUpe3JldHVybiFlLmlzVGV4dCYmITEhPT1lLnR5cGUuc3BlYy5zZWxlY3RhYmxlfX1Ob2RlU2VsZWN0aW9uLnByb3RvdHlwZS52aXNpYmxlPSExLFNlbGVjdGlvbi5qc29uSUQoIm5vZGUiLE5vZGVTZWxlY3Rpb24pO2NsYXNzIE5vZGVCb29rbWFya3tjb25zdHJ1Y3RvcihlKXt0aGlzLmFuY2hvcj1lfW1hcChlKXtsZXR7ZGVsZXRlZDp0LHBvczpufT1lLm1hcFJlc3VsdCh0aGlzLmFuY2hvcik7cmV0dXJuIHQ/bmV3IFRleHRCb29rbWFyayhuLG4pOm5ldyBOb2RlQm9va21hcmsobil9cmVzb2x2ZShlKXtsZXQgdD1lLnJlc29sdmUodGhpcy5hbmNob3IpLG49dC5ub2RlQWZ0ZXI7cmV0dXJuIG4mJk5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG4pP25ldyBOb2RlU2VsZWN0aW9uKHQpOlNlbGVjdGlvbi5uZWFyKHQpfX1jbGFzcyBBbGxTZWxlY3Rpb24gZXh0ZW5kcyBTZWxlY3Rpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZS5yZXNvbHZlKDApLGUucmVzb2x2ZShlLmNvbnRlbnQuc2l6ZSkpfXJlcGxhY2UoZSx0PVNsaWNlLmVtcHR5KXtpZih0PT1TbGljZS5lbXB0eSl7ZS5kZWxldGUoMCxlLmRvYy5jb250ZW50LnNpemUpO2xldCB0PVNlbGVjdGlvbi5hdFN0YXJ0KGUuZG9jKTt0LmVxKGUuc2VsZWN0aW9uKXx8ZS5zZXRTZWxlY3Rpb24odCl9ZWxzZSBzdXBlci5yZXBsYWNlKGUsdCl9dG9KU09OKCl7cmV0dXJue3R5cGU6ImFsbCJ9fXN0YXRpYyBmcm9tSlNPTihlKXtyZXR1cm4gbmV3IEFsbFNlbGVjdGlvbihlKX1tYXAoZSl7cmV0dXJuIG5ldyBBbGxTZWxlY3Rpb24oZSl9ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBBbGxTZWxlY3Rpb259Z2V0Qm9va21hcmsoKXtyZXR1cm4gVGV9fVNlbGVjdGlvbi5qc29uSUQoImFsbCIsQWxsU2VsZWN0aW9uKTtjb25zdCBUZT17bWFwKCl7cmV0dXJuIHRoaXN9LHJlc29sdmU6ZT0+bmV3IEFsbFNlbGVjdGlvbihlKX07ZnVuY3Rpb24gZmluZFNlbGVjdGlvbkluKGUsdCxuLHIsbyxpPSExKXtpZih0LmlubGluZUNvbnRlbnQpcmV0dXJuIFRleHRTZWxlY3Rpb24uY3JlYXRlKGUsbik7Zm9yKGxldCBzPXItKG8+MD8wOjEpO28+MD9zPHQuY2hpbGRDb3VudDpzPj0wO3MrPW8pe2xldCByPXQuY2hpbGQocyk7aWYoci5pc0F0b20pe2lmKCFpJiZOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShyKSlyZXR1cm4gTm9kZVNlbGVjdGlvbi5jcmVhdGUoZSxuLShvPDA/ci5ub2RlU2l6ZTowKSl9ZWxzZXtsZXQgdD1maW5kU2VsZWN0aW9uSW4oZSxyLG4rbyxvPDA/ci5jaGlsZENvdW50OjAsbyxpKTtpZih0KXJldHVybiB0fW4rPXIubm9kZVNpemUqb31yZXR1cm4gbnVsbH1mdW5jdGlvbiBzZWxlY3Rpb25Ub0luc2VydGlvbkVuZCQxKGUsdCxuKXtsZXQgcj1lLnN0ZXBzLmxlbmd0aC0xO2lmKHI8dClyZXR1cm47bGV0IG8saT1lLnN0ZXBzW3JdOyhpIGluc3RhbmNlb2YgUmVwbGFjZVN0ZXB8fGkgaW5zdGFuY2VvZiBSZXBsYWNlQXJvdW5kU3RlcCkmJihlLm1hcHBpbmcubWFwc1tyXS5mb3JFYWNoKChlLHQsbixyKT0+e251bGw9PW8mJihvPXIpfSksZS5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uLm5lYXIoZS5kb2MucmVzb2x2ZShvKSxuKSkpfWNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUuZG9jKSx0aGlzLmN1clNlbGVjdGlvbkZvcj0wLHRoaXMudXBkYXRlZD0wLHRoaXMubWV0YT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMudGltZT1EYXRlLm5vdygpLHRoaXMuY3VyU2VsZWN0aW9uPWUuc2VsZWN0aW9uLHRoaXMuc3RvcmVkTWFya3M9ZS5zdG9yZWRNYXJrc31nZXQgc2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuY3VyU2VsZWN0aW9uRm9yPHRoaXMuc3RlcHMubGVuZ3RoJiYodGhpcy5jdXJTZWxlY3Rpb249dGhpcy5jdXJTZWxlY3Rpb24ubWFwKHRoaXMuZG9jLHRoaXMubWFwcGluZy5zbGljZSh0aGlzLmN1clNlbGVjdGlvbkZvcikpLHRoaXMuY3VyU2VsZWN0aW9uRm9yPXRoaXMuc3RlcHMubGVuZ3RoKSx0aGlzLmN1clNlbGVjdGlvbn1zZXRTZWxlY3Rpb24oZSl7aWYoZS4kZnJvbS5kb2MhPXRoaXMuZG9jKXRocm93IG5ldyBSYW5nZUVycm9yKCJTZWxlY3Rpb24gcGFzc2VkIHRvIHNldFNlbGVjdGlvbiBtdXN0IHBvaW50IGF0IHRoZSBjdXJyZW50IGRvY3VtZW50Iik7cmV0dXJuIHRoaXMuY3VyU2VsZWN0aW9uPWUsdGhpcy5jdXJTZWxlY3Rpb25Gb3I9dGhpcy5zdGVwcy5sZW5ndGgsdGhpcy51cGRhdGVkPS0zJnRoaXMudXBkYXRlZHwxLHRoaXMuc3RvcmVkTWFya3M9bnVsbCx0aGlzfWdldCBzZWxlY3Rpb25TZXQoKXtyZXR1cm4oMSZ0aGlzLnVwZGF0ZWQpPjB9c2V0U3RvcmVkTWFya3MoZSl7cmV0dXJuIHRoaXMuc3RvcmVkTWFya3M9ZSx0aGlzLnVwZGF0ZWR8PTIsdGhpc31lbnN1cmVNYXJrcyhlKXtyZXR1cm4gbGUuc2FtZVNldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kZnJvbS5tYXJrcygpLGUpfHx0aGlzLnNldFN0b3JlZE1hcmtzKGUpLHRoaXN9YWRkU3RvcmVkTWFyayhlKXtyZXR1cm4gdGhpcy5lbnN1cmVNYXJrcyhlLmFkZFRvU2V0KHRoaXMuc3RvcmVkTWFya3N8fHRoaXMuc2VsZWN0aW9uLiRoZWFkLm1hcmtzKCkpKX1yZW1vdmVTdG9yZWRNYXJrKGUpe3JldHVybiB0aGlzLmVuc3VyZU1hcmtzKGUucmVtb3ZlRnJvbVNldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSl9Z2V0IHN0b3JlZE1hcmtzU2V0KCl7cmV0dXJuKDImdGhpcy51cGRhdGVkKT4wfWFkZFN0ZXAoZSx0KXtzdXBlci5hZGRTdGVwKGUsdCksdGhpcy51cGRhdGVkPS0zJnRoaXMudXBkYXRlZCx0aGlzLnN0b3JlZE1hcmtzPW51bGx9c2V0VGltZShlKXtyZXR1cm4gdGhpcy50aW1lPWUsdGhpc31yZXBsYWNlU2VsZWN0aW9uKGUpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHRoaXMsZSksdGhpc31yZXBsYWNlU2VsZWN0aW9uV2l0aChlLHQ9ITApe2xldCBuPXRoaXMuc2VsZWN0aW9uO3JldHVybiB0JiYoZT1lLm1hcmsodGhpcy5zdG9yZWRNYXJrc3x8KG4uZW1wdHk/bi4kZnJvbS5tYXJrcygpOm4uJGZyb20ubWFya3NBY3Jvc3Mobi4kdG8pfHxsZS5ub25lKSkpLG4ucmVwbGFjZVdpdGgodGhpcyxlKSx0aGlzfWRlbGV0ZVNlbGVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHRoaXMpLHRoaXN9aW5zZXJ0VGV4dChlLHQsbil7bGV0IHI9dGhpcy5kb2MudHlwZS5zY2hlbWE7aWYobnVsbD09dClyZXR1cm4gZT90aGlzLnJlcGxhY2VTZWxlY3Rpb25XaXRoKHIudGV4dChlKSwhMCk6dGhpcy5kZWxldGVTZWxlY3Rpb24oKTt7aWYobnVsbD09biYmKG49dCksIWUpcmV0dXJuIHRoaXMuZGVsZXRlUmFuZ2UodCxuKTtsZXQgbz10aGlzLnN0b3JlZE1hcmtzO2lmKCFvKXtsZXQgZT10aGlzLmRvYy5yZXNvbHZlKHQpO289bj09dD9lLm1hcmtzKCk6ZS5tYXJrc0Fjcm9zcyh0aGlzLmRvYy5yZXNvbHZlKG4pKX1yZXR1cm4gdGhpcy5yZXBsYWNlUmFuZ2VXaXRoKHQsbixyLnRleHQoZSxvKSksdGhpcy5zZWxlY3Rpb24uZW1wdHl8fHRoaXMuc2VsZWN0aW9uLnRvIT10K2UubGVuZ3RofHx0aGlzLnNldFNlbGVjdGlvbihTZWxlY3Rpb24ubmVhcih0aGlzLnNlbGVjdGlvbi4kdG8pKSx0aGlzfX1zZXRNZXRhKGUsdCl7cmV0dXJuIHRoaXMubWV0YVsic3RyaW5nIj09dHlwZW9mIGU/ZTplLmtleV09dCx0aGlzfWdldE1ldGEoZSl7cmV0dXJuIHRoaXMubWV0YVsic3RyaW5nIj09dHlwZW9mIGU/ZTplLmtleV19Z2V0IGlzR2VuZXJpYygpe2ZvcihsZXQgZSBpbiB0aGlzLm1ldGEpcmV0dXJuITE7cmV0dXJuITB9c2Nyb2xsSW50b1ZpZXcoKXtyZXR1cm4gdGhpcy51cGRhdGVkfD00LHRoaXN9Z2V0IHNjcm9sbGVkSW50b1ZpZXcoKXtyZXR1cm4oNCZ0aGlzLnVwZGF0ZWQpPjB9fWZ1bmN0aW9uIGJpbmQoZSx0KXtyZXR1cm4gdCYmZT9lLmJpbmQodCk6ZX1jbGFzcyBGaWVsZERlc2N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMubmFtZT1lLHRoaXMuaW5pdD1iaW5kKHQuaW5pdCxuKSx0aGlzLmFwcGx5PWJpbmQodC5hcHBseSxuKX19Y29uc3QgQ2U9W25ldyBGaWVsZERlc2MoImRvYyIse2luaXQ6ZT0+ZS5kb2N8fGUuc2NoZW1hLnRvcE5vZGVUeXBlLmNyZWF0ZUFuZEZpbGwoKSxhcHBseTplPT5lLmRvY30pLG5ldyBGaWVsZERlc2MoInNlbGVjdGlvbiIse2luaXQ6KGUsdCk9PmUuc2VsZWN0aW9ufHxTZWxlY3Rpb24uYXRTdGFydCh0LmRvYyksYXBwbHk6ZT0+ZS5zZWxlY3Rpb259KSxuZXcgRmllbGREZXNjKCJzdG9yZWRNYXJrcyIse2luaXQ6ZT0+ZS5zdG9yZWRNYXJrc3x8bnVsbCxhcHBseTooZSx0LG4scik9PnIuc2VsZWN0aW9uLiRjdXJzb3I/ZS5zdG9yZWRNYXJrczpudWxsfSksbmV3IEZpZWxkRGVzYygic2Nyb2xsVG9TZWxlY3Rpb24iLHtpbml0OigpPT4wLGFwcGx5OihlLHQpPT5lLnNjcm9sbGVkSW50b1ZpZXc/dCsxOnR9KV07Y2xhc3MgQ29uZmlndXJhdGlvbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5wbHVnaW5zPVtdLHRoaXMucGx1Z2luc0J5S2V5PU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5maWVsZHM9Q2Uuc2xpY2UoKSx0JiZ0LmZvckVhY2goZT0+e2lmKHRoaXMucGx1Z2luc0J5S2V5W2Uua2V5XSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQWRkaW5nIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgYSBrZXllZCBwbHVnaW4gKCIrZS5rZXkrIikiKTt0aGlzLnBsdWdpbnMucHVzaChlKSx0aGlzLnBsdWdpbnNCeUtleVtlLmtleV09ZSxlLnNwZWMuc3RhdGUmJnRoaXMuZmllbGRzLnB1c2gobmV3IEZpZWxkRGVzYyhlLmtleSxlLnNwZWMuc3RhdGUsZSkpfSl9fWNsYXNzIEVkaXRvclN0YXRle2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uZmlnPWV9Z2V0IHNjaGVtYSgpe3JldHVybiB0aGlzLmNvbmZpZy5zY2hlbWF9Z2V0IHBsdWdpbnMoKXtyZXR1cm4gdGhpcy5jb25maWcucGx1Z2luc31hcHBseShlKXtyZXR1cm4gdGhpcy5hcHBseVRyYW5zYWN0aW9uKGUpLnN0YXRlfWZpbHRlclRyYW5zYWN0aW9uKGUsdD0tMSl7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbmZpZy5wbHVnaW5zLmxlbmd0aDtuKyspaWYobiE9dCl7bGV0IHQ9dGhpcy5jb25maWcucGx1Z2luc1tuXTtpZih0LnNwZWMuZmlsdGVyVHJhbnNhY3Rpb24mJiF0LnNwZWMuZmlsdGVyVHJhbnNhY3Rpb24uY2FsbCh0LGUsdGhpcykpcmV0dXJuITF9cmV0dXJuITB9YXBwbHlUcmFuc2FjdGlvbihlKXtpZighdGhpcy5maWx0ZXJUcmFuc2FjdGlvbihlKSlyZXR1cm57c3RhdGU6dGhpcyx0cmFuc2FjdGlvbnM6W119O2xldCB0PVtlXSxuPXRoaXMuYXBwbHlJbm5lcihlKSxyPW51bGw7Zm9yKDs7KXtsZXQgbz0hMTtmb3IobGV0IGk9MDtpPHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoO2krKyl7bGV0IHM9dGhpcy5jb25maWcucGx1Z2luc1tpXTtpZihzLnNwZWMuYXBwZW5kVHJhbnNhY3Rpb24pe2xldCBsPXI/cltpXS5uOjAsYT1yP3JbaV0uc3RhdGU6dGhpcyxjPWw8dC5sZW5ndGgmJnMuc3BlYy5hcHBlbmRUcmFuc2FjdGlvbi5jYWxsKHMsbD90LnNsaWNlKGwpOnQsYSxuKTtpZihjJiZuLmZpbHRlclRyYW5zYWN0aW9uKGMsaSkpe2lmKGMuc2V0TWV0YSgiYXBwZW5kZWRUcmFuc2FjdGlvbiIsZSksIXIpe3I9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbmZpZy5wbHVnaW5zLmxlbmd0aDtlKyspci5wdXNoKGU8aT97c3RhdGU6bixuOnQubGVuZ3RofTp7c3RhdGU6dGhpcyxuOjB9KX10LnB1c2goYyksbj1uLmFwcGx5SW5uZXIoYyksbz0hMH1yJiYocltpXT17c3RhdGU6bixuOnQubGVuZ3RofSl9fWlmKCFvKXJldHVybntzdGF0ZTpuLHRyYW5zYWN0aW9uczp0fX19YXBwbHlJbm5lcihlKXtpZighZS5iZWZvcmUuZXEodGhpcy5kb2MpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBcHBseWluZyBhIG1pc21hdGNoZWQgdHJhbnNhY3Rpb24iKTtsZXQgdD1uZXcgRWRpdG9yU3RhdGUodGhpcy5jb25maWcpLG49dGhpcy5jb25maWcuZmllbGRzO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKXtsZXQgbz1uW3JdO3Rbby5uYW1lXT1vLmFwcGx5KGUsdGhpc1tvLm5hbWVdLHRoaXMsdCl9cmV0dXJuIHR9Z2V0IHRyKCl7cmV0dXJuIG5ldyBUcmFuc2FjdGlvbih0aGlzKX1zdGF0aWMgY3JlYXRlKGUpe2xldCB0PW5ldyBDb25maWd1cmF0aW9uKGUuZG9jP2UuZG9jLnR5cGUuc2NoZW1hOmUuc2NoZW1hLGUucGx1Z2lucyksbj1uZXcgRWRpdG9yU3RhdGUodCk7Zm9yKGxldCByPTA7cjx0LmZpZWxkcy5sZW5ndGg7cisrKW5bdC5maWVsZHNbcl0ubmFtZV09dC5maWVsZHNbcl0uaW5pdChlLG4pO3JldHVybiBufXJlY29uZmlndXJlKGUpe2xldCB0PW5ldyBDb25maWd1cmF0aW9uKHRoaXMuc2NoZW1hLGUucGx1Z2lucyksbj10LmZpZWxkcyxyPW5ldyBFZGl0b3JTdGF0ZSh0KTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7bGV0IG89blt0XS5uYW1lO3Jbb109dGhpcy5oYXNPd25Qcm9wZXJ0eShvKT90aGlzW29dOm5bdF0uaW5pdChlLHIpfXJldHVybiByfXRvSlNPTihlKXtsZXQgdD17ZG9jOnRoaXMuZG9jLnRvSlNPTigpLHNlbGVjdGlvbjp0aGlzLnNlbGVjdGlvbi50b0pTT04oKX07aWYodGhpcy5zdG9yZWRNYXJrcyYmKHQuc3RvcmVkTWFya3M9dGhpcy5zdG9yZWRNYXJrcy5tYXAoZT0+ZS50b0pTT04oKSkpLGUmJiJvYmplY3QiPT10eXBlb2YgZSlmb3IobGV0IG4gaW4gZSl7aWYoImRvYyI9PW58fCJzZWxlY3Rpb24iPT1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgSlNPTiBmaWVsZHMgYGRvY2AgYW5kIGBzZWxlY3Rpb25gIGFyZSByZXNlcnZlZCIpO2xldCByPWVbbl0sbz1yLnNwZWMuc3RhdGU7byYmby50b0pTT04mJih0W25dPW8udG9KU09OLmNhbGwocix0aGlzW3Iua2V5XSkpfXJldHVybiB0fXN0YXRpYyBmcm9tSlNPTihlLHQsbil7aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEVkaXRvclN0YXRlLmZyb21KU09OIik7aWYoIWUuc2NoZW1hKXRocm93IG5ldyBSYW5nZUVycm9yKCJSZXF1aXJlZCBjb25maWcgZmllbGQgJ3NjaGVtYScgbWlzc2luZyIpO2xldCByPW5ldyBDb25maWd1cmF0aW9uKGUuc2NoZW1hLGUucGx1Z2lucyksbz1uZXcgRWRpdG9yU3RhdGUocik7cmV0dXJuIHIuZmllbGRzLmZvckVhY2gocj0+e2lmKCJkb2MiPT1yLm5hbWUpby5kb2M9Tm9kZS5mcm9tSlNPTihlLnNjaGVtYSx0LmRvYyk7ZWxzZSBpZigic2VsZWN0aW9uIj09ci5uYW1lKW8uc2VsZWN0aW9uPVNlbGVjdGlvbi5mcm9tSlNPTihvLmRvYyx0LnNlbGVjdGlvbik7ZWxzZSBpZigic3RvcmVkTWFya3MiPT1yLm5hbWUpdC5zdG9yZWRNYXJrcyYmKG8uc3RvcmVkTWFya3M9dC5zdG9yZWRNYXJrcy5tYXAoZS5zY2hlbWEubWFya0Zyb21KU09OKSk7ZWxzZXtpZihuKWZvcihsZXQgaSBpbiBuKXtsZXQgcz1uW2ldLGw9cy5zcGVjLnN0YXRlO2lmKHMua2V5PT1yLm5hbWUmJmwmJmwuZnJvbUpTT04mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpKXJldHVybiB2b2lkKG9bci5uYW1lXT1sLmZyb21KU09OLmNhbGwocyxlLHRbaV0sbykpfW9bci5uYW1lXT1yLmluaXQoZSxvKX19KSxvfX1mdW5jdGlvbiBiaW5kUHJvcHMoZSx0LG4pe2ZvcihsZXQgciBpbiBlKXtsZXQgbz1lW3JdO28gaW5zdGFuY2VvZiBGdW5jdGlvbj9vPW8uYmluZCh0KToiaGFuZGxlRE9NRXZlbnRzIj09ciYmKG89YmluZFByb3BzKG8sdCx7fSkpLG5bcl09b31yZXR1cm4gbn1jbGFzcyBQbHVnaW57Y29uc3RydWN0b3IoZSl7dGhpcy5zcGVjPWUsdGhpcy5wcm9wcz17fSxlLnByb3BzJiZiaW5kUHJvcHMoZS5wcm9wcyx0aGlzLHRoaXMucHJvcHMpLHRoaXMua2V5PWUua2V5P2Uua2V5LmtleTpjcmVhdGVLZXkoInBsdWdpbiIpfWdldFN0YXRlKGUpe3JldHVybiBlW3RoaXMua2V5XX19Y29uc3QgTWU9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBjcmVhdGVLZXkoZSl7cmV0dXJuIGUgaW4gTWU/ZSsiJCIrICsrTWVbZV06KE1lW2VdPTAsZSsiJCIpfWNsYXNzIFBsdWdpbktleXtjb25zdHJ1Y3RvcihlPSJrZXkiKXt0aGlzLmtleT1jcmVhdGVLZXkoZSl9Z2V0KGUpe3JldHVybiBlLmNvbmZpZy5wbHVnaW5zQnlLZXlbdGhpcy5rZXldfWdldFN0YXRlKGUpe3JldHVybiBlW3RoaXMua2V5XX19Y29uc3QgZGVsZXRlU2VsZWN0aW9uJDE9KGUsdCk9PiFlLnNlbGVjdGlvbi5lbXB0eSYmKHQmJnQoZS50ci5kZWxldGVTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpKSwhMCk7ZnVuY3Rpb24gYXRCbG9ja1N0YXJ0KGUsdCl7bGV0eyRjdXJzb3I6bn09ZS5zZWxlY3Rpb247cmV0dXJuIW58fCh0PyF0LmVuZE9mVGV4dGJsb2NrKCJiYWNrd2FyZCIsZSk6bi5wYXJlbnRPZmZzZXQ+MCk/bnVsbDpufWNvbnN0IGpvaW5CYWNrd2FyZCQxPShlLHQsbik9PntsZXQgcj1hdEJsb2NrU3RhcnQoZSxuKTtpZighcilyZXR1cm4hMTtsZXQgbz1maW5kQ3V0QmVmb3JlKHIpO2lmKCFvKXtsZXQgbj1yLmJsb2NrUmFuZ2UoKSxvPW4mJmxpZnRUYXJnZXQobik7cmV0dXJuIG51bGwhPW8mJih0JiZ0KGUudHIubGlmdChuLG8pLnNjcm9sbEludG9WaWV3KCkpLCEwKX1sZXQgaT1vLm5vZGVCZWZvcmU7aWYoZGVsZXRlQmFycmllcihlLG8sdCwtMSkpcmV0dXJuITA7aWYoMD09ci5wYXJlbnQuY29udGVudC5zaXplJiYodGV4dGJsb2NrQXQoaSwiZW5kIil8fE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGkpKSlmb3IobGV0IG49ci5kZXB0aDs7bi0tKXtsZXQgcz1yZXBsYWNlU3RlcChlLmRvYyxyLmJlZm9yZShuKSxyLmFmdGVyKG4pLFNsaWNlLmVtcHR5KTtpZihzJiZzLnNsaWNlLnNpemU8cy50by1zLmZyb20pe2lmKHQpe2xldCBuPWUudHIuc3RlcChzKTtuLnNldFNlbGVjdGlvbih0ZXh0YmxvY2tBdChpLCJlbmQiKT9TZWxlY3Rpb24uZmluZEZyb20obi5kb2MucmVzb2x2ZShuLm1hcHBpbmcubWFwKG8ucG9zLC0xKSksLTEpOk5vZGVTZWxlY3Rpb24uY3JlYXRlKG4uZG9jLG8ucG9zLWkubm9kZVNpemUpKSx0KG4uc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9aWYoMT09bnx8ci5ub2RlKG4tMSkuY2hpbGRDb3VudD4xKWJyZWFrfXJldHVybiEoIWkuaXNBdG9tfHxvLmRlcHRoIT1yLmRlcHRoLTEpJiYodCYmdChlLnRyLmRlbGV0ZShvLnBvcy1pLm5vZGVTaXplLG8ucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9O2Z1bmN0aW9uIGpvaW5UZXh0YmxvY2tzQXJvdW5kKGUsdCxuKXtsZXQgcj10Lm5vZGVCZWZvcmUsbz10LnBvcy0xO2Zvcig7IXIuaXNUZXh0YmxvY2s7by0tKXtpZihyLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IGU9ci5sYXN0Q2hpbGQ7aWYoIWUpcmV0dXJuITE7cj1lfWxldCBpPXQubm9kZUFmdGVyLHM9dC5wb3MrMTtmb3IoOyFpLmlzVGV4dGJsb2NrO3MrKyl7aWYoaS50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiExO2xldCBlPWkuZmlyc3RDaGlsZDtpZighZSlyZXR1cm4hMTtpPWV9bGV0IGw9cmVwbGFjZVN0ZXAoZS5kb2MsbyxzLFNsaWNlLmVtcHR5KTtpZighbHx8bC5mcm9tIT1vfHxsIGluc3RhbmNlb2YgUmVwbGFjZVN0ZXAmJmwuc2xpY2Uuc2l6ZT49cy1vKXJldHVybiExO2lmKG4pe2xldCB0PWUudHIuc3RlcChsKTt0LnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0LmRvYyxvKSksbih0LnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfWZ1bmN0aW9uIHRleHRibG9ja0F0KGUsdCxuPSExKXtmb3IobGV0IHI9ZTtyO3I9InN0YXJ0Ij09dD9yLmZpcnN0Q2hpbGQ6ci5sYXN0Q2hpbGQpe2lmKHIuaXNUZXh0YmxvY2spcmV0dXJuITA7aWYobiYmMSE9ci5jaGlsZENvdW50KXJldHVybiExfXJldHVybiExfWNvbnN0IHNlbGVjdE5vZGVCYWNrd2FyZCQxPShlLHQsbik9PntsZXR7JGhlYWQ6cixlbXB0eTpvfT1lLnNlbGVjdGlvbixpPXI7aWYoIW8pcmV0dXJuITE7aWYoci5wYXJlbnQuaXNUZXh0YmxvY2spe2lmKG4/IW4uZW5kT2ZUZXh0YmxvY2soImJhY2t3YXJkIixlKTpyLnBhcmVudE9mZnNldD4wKXJldHVybiExO2k9ZmluZEN1dEJlZm9yZShyKX1sZXQgcz1pJiZpLm5vZGVCZWZvcmU7cmV0dXJuISghc3x8IU5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKHMpKSYmKHQmJnQoZS50ci5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUoZS5kb2MsaS5wb3Mtcy5ub2RlU2l6ZSkpLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24gZmluZEN1dEJlZm9yZShlKXtpZighZS5wYXJlbnQudHlwZS5zcGVjLmlzb2xhdGluZylmb3IobGV0IHQ9ZS5kZXB0aC0xO3Q+PTA7dC0tKXtpZihlLmluZGV4KHQpPjApcmV0dXJuIGUuZG9jLnJlc29sdmUoZS5iZWZvcmUodCsxKSk7aWYoZS5ub2RlKHQpLnR5cGUuc3BlYy5pc29sYXRpbmcpYnJlYWt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gYXRCbG9ja0VuZChlLHQpe2xldHskY3Vyc29yOm59PWUuc2VsZWN0aW9uO3JldHVybiFufHwodD8hdC5lbmRPZlRleHRibG9jaygiZm9yd2FyZCIsZSk6bi5wYXJlbnRPZmZzZXQ8bi5wYXJlbnQuY29udGVudC5zaXplKT9udWxsOm59Y29uc3Qgam9pbkZvcndhcmQkMT0oZSx0LG4pPT57bGV0IHI9YXRCbG9ja0VuZChlLG4pO2lmKCFyKXJldHVybiExO2xldCBvPWZpbmRDdXRBZnRlcihyKTtpZighbylyZXR1cm4hMTtsZXQgaT1vLm5vZGVBZnRlcjtpZihkZWxldGVCYXJyaWVyKGUsbyx0LDEpKXJldHVybiEwO2lmKDA9PXIucGFyZW50LmNvbnRlbnQuc2l6ZSYmKHRleHRibG9ja0F0KGksInN0YXJ0Iil8fE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGkpKSl7bGV0IG49cmVwbGFjZVN0ZXAoZS5kb2Msci5iZWZvcmUoKSxyLmFmdGVyKCksU2xpY2UuZW1wdHkpO2lmKG4mJm4uc2xpY2Uuc2l6ZTxuLnRvLW4uZnJvbSl7aWYodCl7bGV0IHI9ZS50ci5zdGVwKG4pO3Iuc2V0U2VsZWN0aW9uKHRleHRibG9ja0F0KGksInN0YXJ0Iik/U2VsZWN0aW9uLmZpbmRGcm9tKHIuZG9jLnJlc29sdmUoci5tYXBwaW5nLm1hcChvLnBvcykpLDEpOk5vZGVTZWxlY3Rpb24uY3JlYXRlKHIuZG9jLHIubWFwcGluZy5tYXAoby5wb3MpKSksdChyLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1yZXR1cm4hKCFpLmlzQXRvbXx8by5kZXB0aCE9ci5kZXB0aC0xKSYmKHQmJnQoZS50ci5kZWxldGUoby5wb3Msby5wb3MraS5ub2RlU2l6ZSkuc2Nyb2xsSW50b1ZpZXcoKSksITApfSxzZWxlY3ROb2RlRm9yd2FyZCQxPShlLHQsbik9PntsZXR7JGhlYWQ6cixlbXB0eTpvfT1lLnNlbGVjdGlvbixpPXI7aWYoIW8pcmV0dXJuITE7aWYoci5wYXJlbnQuaXNUZXh0YmxvY2spe2lmKG4/IW4uZW5kT2ZUZXh0YmxvY2soImZvcndhcmQiLGUpOnIucGFyZW50T2Zmc2V0PHIucGFyZW50LmNvbnRlbnQuc2l6ZSlyZXR1cm4hMTtpPWZpbmRDdXRBZnRlcihyKX1sZXQgcz1pJiZpLm5vZGVBZnRlcjtyZXR1cm4hKCFzfHwhTm9kZVNlbGVjdGlvbi5pc1NlbGVjdGFibGUocykpJiYodCYmdChlLnRyLnNldFNlbGVjdGlvbihOb2RlU2VsZWN0aW9uLmNyZWF0ZShlLmRvYyxpLnBvcykpLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24gZmluZEN1dEFmdGVyKGUpe2lmKCFlLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKWZvcihsZXQgdD1lLmRlcHRoLTE7dD49MDt0LS0pe2xldCBuPWUubm9kZSh0KTtpZihlLmluZGV4KHQpKzE8bi5jaGlsZENvdW50KXJldHVybiBlLmRvYy5yZXNvbHZlKGUuYWZ0ZXIodCsxKSk7aWYobi50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrfXJldHVybiBudWxsfWNvbnN0IG5ld2xpbmVJbkNvZGUkMT0oZSx0KT0+e2xldHskaGVhZDpuLCRhbmNob3I6cn09ZS5zZWxlY3Rpb247cmV0dXJuISghbi5wYXJlbnQudHlwZS5zcGVjLmNvZGV8fCFuLnNhbWVQYXJlbnQocikpJiYodCYmdChlLnRyLmluc2VydFRleHQoIlxuIikuc2Nyb2xsSW50b1ZpZXcoKSksITApfTtmdW5jdGlvbiBkZWZhdWx0QmxvY2tBdCQxKGUpe2ZvcihsZXQgdD0wO3Q8ZS5lZGdlQ291bnQ7dCsrKXtsZXR7dHlwZTpufT1lLmVkZ2UodCk7aWYobi5pc1RleHRibG9jayYmIW4uaGFzUmVxdWlyZWRBdHRycygpKXJldHVybiBufXJldHVybiBudWxsfWNvbnN0IGNyZWF0ZVBhcmFncmFwaE5lYXIkMT0oZSx0KT0+e2xldCBuPWUuc2VsZWN0aW9uLHskZnJvbTpyLCR0bzpvfT1uO2lmKG4gaW5zdGFuY2VvZiBBbGxTZWxlY3Rpb258fHIucGFyZW50LmlubGluZUNvbnRlbnR8fG8ucGFyZW50LmlubGluZUNvbnRlbnQpcmV0dXJuITE7bGV0IGk9ZGVmYXVsdEJsb2NrQXQkMShvLnBhcmVudC5jb250ZW50TWF0Y2hBdChvLmluZGV4QWZ0ZXIoKSkpO2lmKCFpfHwhaS5pc1RleHRibG9jaylyZXR1cm4hMTtpZih0KXtsZXQgbj0oIXIucGFyZW50T2Zmc2V0JiZvLmluZGV4KCk8by5wYXJlbnQuY2hpbGRDb3VudD9yOm8pLnBvcyxzPWUudHIuaW5zZXJ0KG4saS5jcmVhdGVBbmRGaWxsKCkpO3Muc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24uY3JlYXRlKHMuZG9jLG4rMSkpLHQocy5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH0sbGlmdEVtcHR5QmxvY2skMT0oZSx0KT0+e2xldHskY3Vyc29yOm59PWUuc2VsZWN0aW9uO2lmKCFufHxuLnBhcmVudC5jb250ZW50LnNpemUpcmV0dXJuITE7aWYobi5kZXB0aD4xJiZuLmFmdGVyKCkhPW4uZW5kKC0xKSl7bGV0IHI9bi5iZWZvcmUoKTtpZihjYW5TcGxpdChlLmRvYyxyKSlyZXR1cm4gdCYmdChlLnRyLnNwbGl0KHIpLnNjcm9sbEludG9WaWV3KCkpLCEwfWxldCByPW4uYmxvY2tSYW5nZSgpLG89ciYmbGlmdFRhcmdldChyKTtyZXR1cm4gbnVsbCE9byYmKHQmJnQoZS50ci5saWZ0KHIsbykuc2Nyb2xsSW50b1ZpZXcoKSksITApfTtjb25zdCBzcGxpdEJsb2NrJDE9KGUsdCk9PntsZXR7JGZyb206biwkdG86cn09ZS5zZWxlY3Rpb247aWYoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uJiZlLnNlbGVjdGlvbi5ub2RlLmlzQmxvY2spcmV0dXJuISghbi5wYXJlbnRPZmZzZXR8fCFjYW5TcGxpdChlLmRvYyxuLnBvcyl8fCh0JiZ0KGUudHIuc3BsaXQobi5wb3MpLnNjcm9sbEludG9WaWV3KCkpLDApKTtpZighbi5kZXB0aClyZXR1cm4hMTtsZXQgbyxpLHM9W10sbD0hMSxhPSExO2ZvcihsZXQgZT1uLmRlcHRoOztlLS0pe2lmKG4ubm9kZShlKS5pc0Jsb2NrKXtsPW4uZW5kKGUpPT1uLnBvcysobi5kZXB0aC1lKSxhPW4uc3RhcnQoZSk9PW4ucG9zLShuLmRlcHRoLWUpLGk9ZGVmYXVsdEJsb2NrQXQkMShuLm5vZGUoZS0xKS5jb250ZW50TWF0Y2hBdChuLmluZGV4QWZ0ZXIoZS0xKSkpLHMudW5zaGlmdChsJiZpP3t0eXBlOml9Om51bGwpLG89ZTticmVha31pZigxPT1lKXJldHVybiExO3MudW5zaGlmdChudWxsKX1sZXQgYz1lLnRyOyhlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb258fGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgQWxsU2VsZWN0aW9uKSYmYy5kZWxldGVTZWxlY3Rpb24oKTtsZXQgZD1jLm1hcHBpbmcubWFwKG4ucG9zKSxwPWNhblNwbGl0KGMuZG9jLGQscy5sZW5ndGgscyk7aWYocHx8KHNbMF09aT97dHlwZTppfTpudWxsLHA9Y2FuU3BsaXQoYy5kb2MsZCxzLmxlbmd0aCxzKSksIXApcmV0dXJuITE7aWYoYy5zcGxpdChkLHMubGVuZ3RoLHMpLCFsJiZhJiZuLm5vZGUobykudHlwZSE9aSl7bGV0IGU9Yy5tYXBwaW5nLm1hcChuLmJlZm9yZShvKSksdD1jLmRvYy5yZXNvbHZlKGUpO2kmJm4ubm9kZShvLTEpLmNhblJlcGxhY2VXaXRoKHQuaW5kZXgoKSx0LmluZGV4KCkrMSxpKSYmYy5zZXROb2RlTWFya3VwKGMubWFwcGluZy5tYXAobi5iZWZvcmUobykpLGkpfXJldHVybiB0JiZ0KGMuc2Nyb2xsSW50b1ZpZXcoKSksITB9O2Z1bmN0aW9uIGRlbGV0ZUJhcnJpZXIoZSx0LG4scil7bGV0IG8saSxzPXQubm9kZUJlZm9yZSxsPXQubm9kZUFmdGVyLGE9cy50eXBlLnNwZWMuaXNvbGF0aW5nfHxsLnR5cGUuc3BlYy5pc29sYXRpbmc7aWYoIWEmJmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj10Lm5vZGVCZWZvcmUsbz10Lm5vZGVBZnRlcixpPXQuaW5kZXgoKTtyZXR1cm4hKCEociYmbyYmci50eXBlLmNvbXBhdGlibGVDb250ZW50KG8udHlwZSkpfHwoIXIuY29udGVudC5zaXplJiZ0LnBhcmVudC5jYW5SZXBsYWNlKGktMSxpKT8obiYmbihlLnRyLmRlbGV0ZSh0LnBvcy1yLm5vZGVTaXplLHQucG9zKS5zY3JvbGxJbnRvVmlldygpKSwwKTohdC5wYXJlbnQuY2FuUmVwbGFjZShpLGkrMSl8fCFvLmlzVGV4dGJsb2NrJiYhY2FuSm9pbihlLmRvYyx0LnBvcyl8fChuJiZuKGUudHIuam9pbih0LnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksMCkpKX0oZSx0LG4pKXJldHVybiEwO2xldCBjPSFhJiZ0LnBhcmVudC5jYW5SZXBsYWNlKHQuaW5kZXgoKSx0LmluZGV4KCkrMSk7aWYoYyYmKG89KGk9cy5jb250ZW50TWF0Y2hBdChzLmNoaWxkQ291bnQpKS5maW5kV3JhcHBpbmcobC50eXBlKSkmJmkubWF0Y2hUeXBlKG9bMF18fGwudHlwZSkudmFsaWRFbmQpe2lmKG4pe2xldCByPXQucG9zK2wubm9kZVNpemUsaT1GcmFnbWVudC5lbXB0eTtmb3IobGV0IGU9by5sZW5ndGgtMTtlPj0wO2UtLSlpPUZyYWdtZW50LmZyb20ob1tlXS5jcmVhdGUobnVsbCxpKSk7aT1GcmFnbWVudC5mcm9tKHMuY29weShpKSk7bGV0IGE9ZS50ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcCh0LnBvcy0xLHIsdC5wb3MscixuZXcgU2xpY2UoaSwxLDApLG8ubGVuZ3RoLCEwKSksYz1hLmRvYy5yZXNvbHZlKHIrMipvLmxlbmd0aCk7Yy5ub2RlQWZ0ZXImJmMubm9kZUFmdGVyLnR5cGU9PXMudHlwZSYmY2FuSm9pbihhLmRvYyxjLnBvcykmJmEuam9pbihjLnBvcyksbihhLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfWxldCBkPWwudHlwZS5zcGVjLmlzb2xhdGluZ3x8cj4wJiZhP251bGw6U2VsZWN0aW9uLmZpbmRGcm9tKHQsMSkscD1kJiZkLiRmcm9tLmJsb2NrUmFuZ2UoZC4kdG8pLGY9cCYmbGlmdFRhcmdldChwKTtpZihudWxsIT1mJiZmPj10LmRlcHRoKXJldHVybiBuJiZuKGUudHIubGlmdChwLGYpLnNjcm9sbEludG9WaWV3KCkpLCEwO2lmKGMmJnRleHRibG9ja0F0KGwsInN0YXJ0IiwhMCkmJnRleHRibG9ja0F0KHMsImVuZCIpKXtsZXQgcj1zLG89W107Zm9yKDtvLnB1c2gociksIXIuaXNUZXh0YmxvY2s7KXI9ci5sYXN0Q2hpbGQ7bGV0IGk9bCxhPTE7Zm9yKDshaS5pc1RleHRibG9jaztpPWkuZmlyc3RDaGlsZClhKys7aWYoci5jYW5SZXBsYWNlKHIuY2hpbGRDb3VudCxyLmNoaWxkQ291bnQsaS5jb250ZW50KSl7aWYobil7bGV0IHI9RnJhZ21lbnQuZW1wdHk7Zm9yKGxldCBlPW8ubGVuZ3RoLTE7ZT49MDtlLS0pcj1GcmFnbWVudC5mcm9tKG9bZV0uY29weShyKSk7bihlLnRyLnN0ZXAobmV3IFJlcGxhY2VBcm91bmRTdGVwKHQucG9zLW8ubGVuZ3RoLHQucG9zK2wubm9kZVNpemUsdC5wb3MrYSx0LnBvcytsLm5vZGVTaXplLWEsbmV3IFNsaWNlKHIsby5sZW5ndGgsMCksMCwhMCkpLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBzZWxlY3RUZXh0YmxvY2tTaWRlKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe2xldCByPXQuc2VsZWN0aW9uLG89ZTwwP3IuJGZyb206ci4kdG8saT1vLmRlcHRoO2Zvcig7by5ub2RlKGkpLmlzSW5saW5lOyl7aWYoIWkpcmV0dXJuITE7aS0tfXJldHVybiEhby5ub2RlKGkpLmlzVGV4dGJsb2NrJiYobiYmbih0LnRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0LmRvYyxlPDA/by5zdGFydChpKTpvLmVuZChpKSkpKSwhMCl9fWNvbnN0IEFlPXNlbGVjdFRleHRibG9ja1NpZGUoLTEpLE9lPXNlbGVjdFRleHRibG9ja1NpZGUoMSk7ZnVuY3Rpb24gc2V0QmxvY2tUeXBlKGUsdD1udWxsKXtyZXR1cm4gZnVuY3Rpb24obixyKXtsZXQgbz0hMTtmb3IobGV0IHI9MDtyPG4uc2VsZWN0aW9uLnJhbmdlcy5sZW5ndGgmJiFvO3IrKyl7bGV0eyRmcm9tOntwb3M6aX0sJHRvOntwb3M6c319PW4uc2VsZWN0aW9uLnJhbmdlc1tyXTtuLmRvYy5ub2Rlc0JldHdlZW4oaSxzLChyLGkpPT57aWYobylyZXR1cm4hMTtpZihyLmlzVGV4dGJsb2NrJiYhci5oYXNNYXJrdXAoZSx0KSlpZihyLnR5cGU9PWUpbz0hMDtlbHNle2xldCB0PW4uZG9jLnJlc29sdmUoaSkscj10LmluZGV4KCk7bz10LnBhcmVudC5jYW5SZXBsYWNlV2l0aChyLHIrMSxlKX19KX1pZighbylyZXR1cm4hMTtpZihyKXtsZXQgbz1uLnRyO2ZvcihsZXQgcj0wO3I8bi5zZWxlY3Rpb24ucmFuZ2VzLmxlbmd0aDtyKyspe2xldHskZnJvbTp7cG9zOml9LCR0bzp7cG9zOnN9fT1uLnNlbGVjdGlvbi5yYW5nZXNbcl07by5zZXRCbG9ja1R5cGUoaSxzLGUsdCl9cihvLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1mdW5jdGlvbiBjaGFpbkNvbW1hbmRzKC4uLmUpe3JldHVybiBmdW5jdGlvbih0LG4scil7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaWYoZVtvXSh0LG4scikpcmV0dXJuITA7cmV0dXJuITF9fWZ1bmN0aW9uIHdyYXBJbkxpc3QkMShlLHQ9bnVsbCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7bGV0eyRmcm9tOm8sJHRvOml9PW4uc2VsZWN0aW9uLHM9by5ibG9ja1JhbmdlKGkpO2lmKCFzKXJldHVybiExO2xldCBsPXI/bi50cjpudWxsO3JldHVybiEhZnVuY3Rpb24oZSx0LG4scj1udWxsKXtsZXQgbz0hMSxpPXQscz10LiRmcm9tLmRvYztpZih0LmRlcHRoPj0yJiZ0LiRmcm9tLm5vZGUodC5kZXB0aC0xKS50eXBlLmNvbXBhdGlibGVDb250ZW50KG4pJiYwPT10LnN0YXJ0SW5kZXgpe2lmKDA9PXQuJGZyb20uaW5kZXgodC5kZXB0aC0xKSlyZXR1cm4hMTtsZXQgZT1zLnJlc29sdmUodC5zdGFydC0yKTtpPW5ldyBOb2RlUmFuZ2UoZSxlLHQuZGVwdGgpLHQuZW5kSW5kZXg8dC5wYXJlbnQuY2hpbGRDb3VudCYmKHQ9bmV3IE5vZGVSYW5nZSh0LiRmcm9tLHMucmVzb2x2ZSh0LiR0by5lbmQodC5kZXB0aCkpLHQuZGVwdGgpKSxvPSEwfWxldCBsPWZpbmRXcmFwcGluZyhpLG4scix0KTtpZighbClyZXR1cm4hMTtlJiZmdW5jdGlvbihlLHQsbixyLG8pe2xldCBpPUZyYWdtZW50LmVtcHR5O2ZvcihsZXQgZT1uLmxlbmd0aC0xO2U+PTA7ZS0tKWk9RnJhZ21lbnQuZnJvbShuW2VdLnR5cGUuY3JlYXRlKG5bZV0uYXR0cnMsaSkpO2Uuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAodC5zdGFydC0ocj8yOjApLHQuZW5kLHQuc3RhcnQsdC5lbmQsbmV3IFNsaWNlKGksMCwwKSxuLmxlbmd0aCwhMCkpO2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspbltlXS50eXBlPT1vJiYocz1lKzEpO2xldCBsPW4ubGVuZ3RoLXMsYT10LnN0YXJ0K24ubGVuZ3RoLShyPzI6MCksYz10LnBhcmVudDtmb3IobGV0IG49dC5zdGFydEluZGV4LHI9dC5lbmRJbmRleCxvPSEwO248cjtuKyssbz0hMSkhbyYmY2FuU3BsaXQoZS5kb2MsYSxsKSYmKGUuc3BsaXQoYSxsKSxhKz0yKmwpLGErPWMuY2hpbGQobikubm9kZVNpemV9KGUsdCxsLG8sbik7cmV0dXJuITB9KGwscyxlLHQpJiYociYmcihsLnNjcm9sbEludG9WaWV3KCkpLCEwKX19ZnVuY3Rpb24gbGlmdExpc3RJdGVtJDEoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7bGV0eyRmcm9tOnIsJHRvOm99PXQuc2VsZWN0aW9uLGk9ci5ibG9ja1JhbmdlKG8sdD0+dC5jaGlsZENvdW50PjAmJnQuZmlyc3RDaGlsZC50eXBlPT1lKTtyZXR1cm4hIWkmJighbnx8KHIubm9kZShpLmRlcHRoLTEpLnR5cGU9PWU/ZnVuY3Rpb24oZSx0LG4scil7bGV0IG89ZS50cixpPXIuZW5kLHM9ci4kdG8uZW5kKHIuZGVwdGgpO2k8cyYmKG8uc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAoaS0xLHMsaSxzLG5ldyBTbGljZShGcmFnbWVudC5mcm9tKG4uY3JlYXRlKG51bGwsci5wYXJlbnQuY29weSgpKSksMSwwKSwxLCEwKSkscj1uZXcgTm9kZVJhbmdlKG8uZG9jLnJlc29sdmUoci4kZnJvbS5wb3MpLG8uZG9jLnJlc29sdmUocyksci5kZXB0aCkpO2NvbnN0IGw9bGlmdFRhcmdldChyKTtpZihudWxsPT1sKXJldHVybiExO28ubGlmdChyLGwpO2xldCBhPW8uZG9jLnJlc29sdmUoby5tYXBwaW5nLm1hcChpLC0xKS0xKTtjYW5Kb2luKG8uZG9jLGEucG9zKSYmYS5ub2RlQmVmb3JlLnR5cGU9PWEubm9kZUFmdGVyLnR5cGUmJm8uam9pbihhLnBvcyk7cmV0dXJuIHQoby5zY3JvbGxJbnRvVmlldygpKSwhMH0odCxuLGUsaSk6ZnVuY3Rpb24oZSx0LG4pe2xldCByPWUudHIsbz1uLnBhcmVudDtmb3IobGV0IGU9bi5lbmQsdD1uLmVuZEluZGV4LTEsaT1uLnN0YXJ0SW5kZXg7dD5pO3QtLSllLT1vLmNoaWxkKHQpLm5vZGVTaXplLHIuZGVsZXRlKGUtMSxlKzEpO2xldCBpPXIuZG9jLnJlc29sdmUobi5zdGFydCkscz1pLm5vZGVBZnRlcjtpZihyLm1hcHBpbmcubWFwKG4uZW5kKSE9bi5zdGFydCtpLm5vZGVBZnRlci5ub2RlU2l6ZSlyZXR1cm4hMTtsZXQgbD0wPT1uLnN0YXJ0SW5kZXgsYT1uLmVuZEluZGV4PT1vLmNoaWxkQ291bnQsYz1pLm5vZGUoLTEpLGQ9aS5pbmRleCgtMSk7aWYoIWMuY2FuUmVwbGFjZShkKyhsPzA6MSksZCsxLHMuY29udGVudC5hcHBlbmQoYT9GcmFnbWVudC5lbXB0eTpGcmFnbWVudC5mcm9tKG8pKSkpcmV0dXJuITE7bGV0IHA9aS5wb3MsZj1wK3Mubm9kZVNpemU7cmV0dXJuIHIuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAocC0obD8xOjApLGYrKGE/MTowKSxwKzEsZi0xLG5ldyBTbGljZSgobD9GcmFnbWVudC5lbXB0eTpGcmFnbWVudC5mcm9tKG8uY29weShGcmFnbWVudC5lbXB0eSkpKS5hcHBlbmQoYT9GcmFnbWVudC5lbXB0eTpGcmFnbWVudC5mcm9tKG8uY29weShGcmFnbWVudC5lbXB0eSkpKSxsPzA6MSxhPzA6MSksbD8wOjEpKSx0KHIuc2Nyb2xsSW50b1ZpZXcoKSksITB9KHQsbixpKSkpfX1jaGFpbkNvbW1hbmRzKGRlbGV0ZVNlbGVjdGlvbiQxLGpvaW5CYWNrd2FyZCQxLHNlbGVjdE5vZGVCYWNrd2FyZCQxKSxjaGFpbkNvbW1hbmRzKGRlbGV0ZVNlbGVjdGlvbiQxLGpvaW5Gb3J3YXJkJDEsc2VsZWN0Tm9kZUZvcndhcmQkMSksY2hhaW5Db21tYW5kcyhuZXdsaW5lSW5Db2RlJDEsY3JlYXRlUGFyYWdyYXBoTmVhciQxLGxpZnRFbXB0eUJsb2NrJDEsc3BsaXRCbG9jayQxKSwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj8vTWFjfGlQKGhvbmV8W29hXWQpLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk6InVuZGVmaW5lZCIhPXR5cGVvZiBvcyYmb3MucGxhdGZvcm0mJm9zLnBsYXRmb3JtKCk7Y29uc3QgZG9tSW5kZXg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7O3QrKylpZighKGU9ZS5wcmV2aW91c1NpYmxpbmcpKXJldHVybiB0fSxwYXJlbnROb2RlPWZ1bmN0aW9uKGUpe2xldCB0PWUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGU7cmV0dXJuIHQmJjExPT10Lm5vZGVUeXBlP3QuaG9zdDp0fTtsZXQgRWU9bnVsbDtjb25zdCB0ZXh0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe2xldCByPUVlfHwoRWU9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSk7cmV0dXJuIHIuc2V0RW5kKGUsbnVsbD09bj9lLm5vZGVWYWx1ZS5sZW5ndGg6biksci5zZXRTdGFydChlLHR8fDApLHJ9LGlzRXF1aXZhbGVudFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuJiYoc2NhbkZvcihlLHQsbixyLC0xKXx8c2NhbkZvcihlLHQsbixyLDEpKX0sTmU9L14oaW1nfGJyfGlucHV0fHRleHRhcmVhfGhyKSQvaTtmdW5jdGlvbiBzY2FuRm9yKGUsdCxuLHIsbyl7Zm9yKHZhciBpOzspe2lmKGU9PW4mJnQ9PXIpcmV0dXJuITA7aWYodD09KG88MD8wOm5vZGVTaXplKGUpKSl7bGV0IG49ZS5wYXJlbnROb2RlO2lmKCFufHwxIT1uLm5vZGVUeXBlfHxoYXNCbG9ja0Rlc2MoZSl8fE5lLnRlc3QoZS5ub2RlTmFtZSl8fCJmYWxzZSI9PWUuY29udGVudEVkaXRhYmxlKXJldHVybiExO3Q9ZG9tSW5kZXgoZSkrKG88MD8wOjEpLGU9bn1lbHNle2lmKDEhPWUubm9kZVR5cGUpcmV0dXJuITE7e2xldCBuPWUuY2hpbGROb2Rlc1t0KyhvPDA/LTE6MCldO2lmKDE9PW4ubm9kZVR5cGUmJiJmYWxzZSI9PW4uY29udGVudEVkaXRhYmxlKXtpZighKG51bGw9PT0oaT1uLnBtVmlld0Rlc2MpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmlnbm9yZUZvclNlbGVjdGlvbikpcmV0dXJuITE7dCs9b31lbHNlIGU9bix0PW88MD9ub2RlU2l6ZShlKTowfX19fWZ1bmN0aW9uIG5vZGVTaXplKGUpe3JldHVybiAzPT1lLm5vZGVUeXBlP2Uubm9kZVZhbHVlLmxlbmd0aDplLmNoaWxkTm9kZXMubGVuZ3RofWZ1bmN0aW9uIGhhc0Jsb2NrRGVzYyhlKXtsZXQgdDtmb3IobGV0IG49ZTtuJiYhKHQ9bi5wbVZpZXdEZXNjKTtuPW4ucGFyZW50Tm9kZSk7cmV0dXJuIHQmJnQubm9kZSYmdC5ub2RlLmlzQmxvY2smJih0LmRvbT09ZXx8dC5jb250ZW50RE9NPT1lKX1jb25zdCBzZWxlY3Rpb25Db2xsYXBzZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9jdXNOb2RlJiZpc0VxdWl2YWxlbnRQb3NpdGlvbihlLmZvY3VzTm9kZSxlLmZvY3VzT2Zmc2V0LGUuYW5jaG9yTm9kZSxlLmFuY2hvck9mZnNldCl9O2Z1bmN0aW9uIGtleUV2ZW50KGUsdCl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIG4uaW5pdEV2ZW50KCJrZXlkb3duIiwhMCwhMCksbi5rZXlDb2RlPWUsbi5rZXk9bi5jb2RlPXQsbn1jb25zdCBSZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3I6bnVsbCxEZT0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50Om51bGwsUGU9UmUmJlJlLnVzZXJBZ2VudHx8IiIsSWU9L0VkZ2VcLyhcZCspLy5leGVjKFBlKSwkZT0vTVNJRSBcZC8uZXhlYyhQZSksTGU9L1RyaWRlbnRcLyg/Ols3LTldfFxkezIsfSlcLi4qcnY6KFxkKykvLmV4ZWMoUGUpLHplPSEhKCRlfHxMZXx8SWUpLEJlPSRlP2RvY3VtZW50LmRvY3VtZW50TW9kZTpMZT8rTGVbMV06SWU/K0llWzFdOjAsRmU9IXplJiYvZ2Vja29cLyhcZCspL2kudGVzdChQZSk7RmUmJigvRmlyZWZveFwvKFxkKykvLmV4ZWMoUGUpfHxbMCwwXSlbMV07Y29uc3QgSGU9IXplJiYvQ2hyb21lXC8oXGQrKS8uZXhlYyhQZSksVmU9ISFIZSxfZT1IZT8rSGVbMV06MCxqZT0hemUmJiEhUmUmJi9BcHBsZSBDb21wdXRlci8udGVzdChSZS52ZW5kb3IpLHFlPWplJiYoL01vYmlsZVwvXHcrLy50ZXN0KFBlKXx8ISFSZSYmUmUubWF4VG91Y2hQb2ludHM+MiksVWU9cWV8fCEhUmUmJi9NYWMvLnRlc3QoUmUucGxhdGZvcm0pLFdlPSEhUmUmJi9XaW4vLnRlc3QoUmUucGxhdGZvcm0pLEtlPS9BbmRyb2lkIFxkLy50ZXN0KFBlKSxKZT0hIURlJiYid2Via2l0Rm9udFNtb290aGluZyJpbiBEZS5kb2N1bWVudEVsZW1lbnQuc3R5bGUsR2U9SmU/KygvXGJBcHBsZVdlYktpdFwvKFxkKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCl8fFswLDBdKVsxXTowO2Z1bmN0aW9uIHdpbmRvd1JlY3QoZSl7bGV0IHQ9ZS5kZWZhdWx0VmlldyYmZS5kZWZhdWx0Vmlldy52aXN1YWxWaWV3cG9ydDtyZXR1cm4gdD97bGVmdDowLHJpZ2h0OnQud2lkdGgsdG9wOjAsYm90dG9tOnQuaGVpZ2h0fTp7bGVmdDowLHJpZ2h0OmUuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHRvcDowLGJvdHRvbTplLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR9fWZ1bmN0aW9uIGdldFNpZGUkMShlLHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9lOmVbdF19ZnVuY3Rpb24gY2xpZW50UmVjdChlKXtsZXQgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC53aWR0aC9lLm9mZnNldFdpZHRofHwxLHI9dC5oZWlnaHQvZS5vZmZzZXRIZWlnaHR8fDE7cmV0dXJue2xlZnQ6dC5sZWZ0LHJpZ2h0OnQubGVmdCtlLmNsaWVudFdpZHRoKm4sdG9wOnQudG9wLGJvdHRvbTp0LnRvcCtlLmNsaWVudEhlaWdodCpyfX1mdW5jdGlvbiBzY3JvbGxSZWN0SW50b1ZpZXcoZSx0LG4pe2xldCByPWUuc29tZVByb3AoInNjcm9sbFRocmVzaG9sZCIpfHwwLG89ZS5zb21lUHJvcCgic2Nyb2xsTWFyZ2luIil8fDUsaT1lLmRvbS5vd25lckRvY3VtZW50O2ZvcihsZXQgcz1ufHxlLmRvbTtzOyl7aWYoMSE9cy5ub2RlVHlwZSl7cz1wYXJlbnROb2RlKHMpO2NvbnRpbnVlfWxldCBlPXMsbj1lPT1pLmJvZHksbD1uP3dpbmRvd1JlY3QoaSk6Y2xpZW50UmVjdChlKSxhPTAsYz0wO2lmKHQudG9wPGwudG9wK2dldFNpZGUkMShyLCJ0b3AiKT9jPS0obC50b3AtdC50b3ArZ2V0U2lkZSQxKG8sInRvcCIpKTp0LmJvdHRvbT5sLmJvdHRvbS1nZXRTaWRlJDEociwiYm90dG9tIikmJihjPXQuYm90dG9tLXQudG9wPmwuYm90dG9tLWwudG9wP3QudG9wK2dldFNpZGUkMShvLCJ0b3AiKS1sLnRvcDp0LmJvdHRvbS1sLmJvdHRvbStnZXRTaWRlJDEobywiYm90dG9tIikpLHQubGVmdDxsLmxlZnQrZ2V0U2lkZSQxKHIsImxlZnQiKT9hPS0obC5sZWZ0LXQubGVmdCtnZXRTaWRlJDEobywibGVmdCIpKTp0LnJpZ2h0PmwucmlnaHQtZ2V0U2lkZSQxKHIsInJpZ2h0IikmJihhPXQucmlnaHQtbC5yaWdodCtnZXRTaWRlJDEobywicmlnaHQiKSksYXx8YylpZihuKWkuZGVmYXVsdFZpZXcuc2Nyb2xsQnkoYSxjKTtlbHNle2xldCBuPWUuc2Nyb2xsTGVmdCxyPWUuc2Nyb2xsVG9wO2MmJihlLnNjcm9sbFRvcCs9YyksYSYmKGUuc2Nyb2xsTGVmdCs9YSk7bGV0IG89ZS5zY3JvbGxMZWZ0LW4saT1lLnNjcm9sbFRvcC1yO3Q9e2xlZnQ6dC5sZWZ0LW8sdG9wOnQudG9wLWkscmlnaHQ6dC5yaWdodC1vLGJvdHRvbTp0LmJvdHRvbS1pfX1sZXQgZD1uPyJmaXhlZCI6Z2V0Q29tcHV0ZWRTdHlsZShzKS5wb3NpdGlvbjtpZigvXihmaXhlZHxzdGlja3kpJC8udGVzdChkKSlicmVhaztzPSJhYnNvbHV0ZSI9PWQ/cy5vZmZzZXRQYXJlbnQ6cGFyZW50Tm9kZShzKX19ZnVuY3Rpb24gc2Nyb2xsU3RhY2soZSl7bGV0IHQ9W10sbj1lLm93bmVyRG9jdW1lbnQ7Zm9yKGxldCByPWU7ciYmKHQucHVzaCh7ZG9tOnIsdG9wOnIuc2Nyb2xsVG9wLGxlZnQ6ci5zY3JvbGxMZWZ0fSksZSE9bik7cj1wYXJlbnROb2RlKHIpKTtyZXR1cm4gdH1mdW5jdGlvbiByZXN0b3JlU2Nyb2xsU3RhY2soZSx0KXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0e2RvbTpyLHRvcDpvLGxlZnQ6aX09ZVtuXTtyLnNjcm9sbFRvcCE9byt0JiYoci5zY3JvbGxUb3A9byt0KSxyLnNjcm9sbExlZnQhPWkmJihyLnNjcm9sbExlZnQ9aSl9fWxldCBYZT1udWxsO2Z1bmN0aW9uIGZpbmRPZmZzZXRJbk5vZGUoZSx0KXtsZXQgbixyLG8saSxzPTJlOCxsPTAsYT10LnRvcCxjPXQudG9wO2ZvcihsZXQgZD1lLmZpcnN0Q2hpbGQscD0wO2Q7ZD1kLm5leHRTaWJsaW5nLHArKyl7bGV0IGU7aWYoMT09ZC5ub2RlVHlwZSllPWQuZ2V0Q2xpZW50UmVjdHMoKTtlbHNle2lmKDMhPWQubm9kZVR5cGUpY29udGludWU7ZT10ZXh0UmFuZ2UoZCkuZ2V0Q2xpZW50UmVjdHMoKX1mb3IobGV0IGY9MDtmPGUubGVuZ3RoO2YrKyl7bGV0IG09ZVtmXTtpZihtLnRvcDw9YSYmbS5ib3R0b20+PWMpe2E9TWF0aC5tYXgobS5ib3R0b20sYSksYz1NYXRoLm1pbihtLnRvcCxjKTtsZXQgZT1tLmxlZnQ+dC5sZWZ0P20ubGVmdC10LmxlZnQ6bS5yaWdodDx0LmxlZnQ/dC5sZWZ0LW0ucmlnaHQ6MDtpZihlPHMpe249ZCxzPWUscj1lJiYzPT1uLm5vZGVUeXBlP3tsZWZ0Om0ucmlnaHQ8dC5sZWZ0P20ucmlnaHQ6bS5sZWZ0LHRvcDp0LnRvcH06dCwxPT1kLm5vZGVUeXBlJiZlJiYobD1wKyh0LmxlZnQ+PShtLmxlZnQrbS5yaWdodCkvMj8xOjApKTtjb250aW51ZX19ZWxzZSBtLnRvcD50LnRvcCYmIW8mJm0ubGVmdDw9dC5sZWZ0JiZtLnJpZ2h0Pj10LmxlZnQmJihvPWQsaT17bGVmdDpNYXRoLm1heChtLmxlZnQsTWF0aC5taW4obS5yaWdodCx0LmxlZnQpKSx0b3A6bS50b3B9KTshbiYmKHQubGVmdD49bS5yaWdodCYmdC50b3A+PW0udG9wfHx0LmxlZnQ+PW0ubGVmdCYmdC50b3A+PW0uYm90dG9tKSYmKGw9cCsxKX19cmV0dXJuIW4mJm8mJihuPW8scj1pLHM9MCksbiYmMz09bi5ub2RlVHlwZT9mdW5jdGlvbihlLHQpe2xldCBuLHI9ZS5ub2RlVmFsdWUubGVuZ3RoLG89ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtmb3IobGV0IGk9MDtpPHI7aSsrKXtvLnNldEVuZChlLGkrMSksby5zZXRTdGFydChlLGkpO2xldCByPXNpbmdsZVJlY3QobywxKTtpZihyLnRvcCE9ci5ib3R0b20mJmluUmVjdCh0LHIpKXtuPXtub2RlOmUsb2Zmc2V0OmkrKHQubGVmdD49KHIubGVmdCtyLnJpZ2h0KS8yPzE6MCl9O2JyZWFrfX1yZXR1cm4gby5kZXRhY2goKSxufHx7bm9kZTplLG9mZnNldDowfX0obixyKTohbnx8cyYmMT09bi5ub2RlVHlwZT97bm9kZTplLG9mZnNldDpsfTpmaW5kT2Zmc2V0SW5Ob2RlKG4scil9ZnVuY3Rpb24gaW5SZWN0KGUsdCl7cmV0dXJuIGUubGVmdD49dC5sZWZ0LTEmJmUubGVmdDw9dC5yaWdodCsxJiZlLnRvcD49dC50b3AtMSYmZS50b3A8PXQuYm90dG9tKzF9ZnVuY3Rpb24gZWxlbWVudEZyb21Qb2ludChlLHQsbil7bGV0IHI9ZS5jaGlsZE5vZGVzLmxlbmd0aDtpZihyJiZuLnRvcDxuLmJvdHRvbSlmb3IobGV0IG89TWF0aC5tYXgoMCxNYXRoLm1pbihyLTEsTWF0aC5mbG9vcihyKih0LnRvcC1uLnRvcCkvKG4uYm90dG9tLW4udG9wKSktMikpLGk9bzs7KXtsZXQgbj1lLmNoaWxkTm9kZXNbaV07aWYoMT09bi5ub2RlVHlwZSl7bGV0IGU9bi5nZXRDbGllbnRSZWN0cygpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbz1lW3JdO2lmKGluUmVjdCh0LG8pKXJldHVybiBlbGVtZW50RnJvbVBvaW50KG4sdCxvKX19aWYoKGk9KGkrMSklcik9PW8pYnJlYWt9cmV0dXJuIGV9ZnVuY3Rpb24gcG9zQXRDb29yZHMoZSx0KXtsZXQgbixyPWUuZG9tLm93bmVyRG9jdW1lbnQsbz0wLGk9ZnVuY3Rpb24oZSx0LG4pe2lmKGUuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCl0cnl7bGV0IHI9ZS5jYXJldFBvc2l0aW9uRnJvbVBvaW50KHQsbik7aWYocilyZXR1cm57bm9kZTpyLm9mZnNldE5vZGUsb2Zmc2V0Ok1hdGgubWluKG5vZGVTaXplKHIub2Zmc2V0Tm9kZSksci5vZmZzZXQpfX1jYXRjaChlKXt9aWYoZS5jYXJldFJhbmdlRnJvbVBvaW50KXtsZXQgcj1lLmNhcmV0UmFuZ2VGcm9tUG9pbnQodCxuKTtpZihyKXJldHVybntub2RlOnIuc3RhcnRDb250YWluZXIsb2Zmc2V0Ok1hdGgubWluKG5vZGVTaXplKHIuc3RhcnRDb250YWluZXIpLHIuc3RhcnRPZmZzZXQpfX19KHIsdC5sZWZ0LHQudG9wKTtpJiYoe25vZGU6bixvZmZzZXQ6b309aSk7bGV0IHMsbD0oZS5yb290LmVsZW1lbnRGcm9tUG9pbnQ/ZS5yb290OnIpLmVsZW1lbnRGcm9tUG9pbnQodC5sZWZ0LHQudG9wKTtpZighbHx8IWUuZG9tLmNvbnRhaW5zKDEhPWwubm9kZVR5cGU/bC5wYXJlbnROb2RlOmwpKXtsZXQgbj1lLmRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZighaW5SZWN0KHQsbikpcmV0dXJuIG51bGw7aWYobD1lbGVtZW50RnJvbVBvaW50KGUuZG9tLHQsbiksIWwpcmV0dXJuIG51bGx9aWYoamUpZm9yKGxldCBlPWw7biYmZTtlPXBhcmVudE5vZGUoZSkpZS5kcmFnZ2FibGUmJihuPXZvaWQgMCk7aWYobD1mdW5jdGlvbihlLHQpe2xldCBuPWUucGFyZW50Tm9kZTtyZXR1cm4gbiYmL15saSQvaS50ZXN0KG4ubm9kZU5hbWUpJiZ0LmxlZnQ8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0P246ZX0obCx0KSxuKXtpZihGZSYmMT09bi5ub2RlVHlwZSYmKG89TWF0aC5taW4obyxuLmNoaWxkTm9kZXMubGVuZ3RoKSxvPG4uY2hpbGROb2Rlcy5sZW5ndGgpKXtsZXQgZSxyPW4uY2hpbGROb2Rlc1tvXTsiSU1HIj09ci5ub2RlTmFtZSYmKGU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkucmlnaHQ8PXQubGVmdCYmZS5ib3R0b20+dC50b3AmJm8rK31sZXQgcjtKZSYmbyYmMT09bi5ub2RlVHlwZSYmMT09KHI9bi5jaGlsZE5vZGVzW28tMV0pLm5vZGVUeXBlJiYiZmFsc2UiPT1yLmNvbnRlbnRFZGl0YWJsZSYmci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A+PXQudG9wJiZvLS0sbj09ZS5kb20mJm89PW4uY2hpbGROb2Rlcy5sZW5ndGgtMSYmMT09bi5sYXN0Q2hpbGQubm9kZVR5cGUmJnQudG9wPm4ubGFzdENoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbT9zPWUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZTowIT1vJiYxPT1uLm5vZGVUeXBlJiYiQlIiPT1uLmNoaWxkTm9kZXNbby0xXS5ub2RlTmFtZXx8KHM9ZnVuY3Rpb24oZSx0LG4scil7bGV0IG89LTE7Zm9yKGxldCBuPXQsaT0hMTtuIT1lLmRvbTspe2xldCB0LHM9ZS5kb2NWaWV3Lm5lYXJlc3REZXNjKG4sITApO2lmKCFzKXJldHVybiBudWxsO2lmKDE9PXMuZG9tLm5vZGVUeXBlJiYocy5ub2RlLmlzQmxvY2smJnMucGFyZW50fHwhcy5jb250ZW50RE9NKSYmKCh0PXMuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS53aWR0aHx8dC5oZWlnaHQpJiYocy5ub2RlLmlzQmxvY2smJnMucGFyZW50JiYhL15UKFJ8Qk9EWXxIRUFEfEZPT1QpJC8udGVzdChzLmRvbS5ub2RlTmFtZSkmJighaSYmdC5sZWZ0PnIubGVmdHx8dC50b3A+ci50b3A/bz1zLnBvc0JlZm9yZTooIWkmJnQucmlnaHQ8ci5sZWZ0fHx0LmJvdHRvbTxyLnRvcCkmJihvPXMucG9zQWZ0ZXIpLGk9ITApLCFzLmNvbnRlbnRET00mJm88MCYmIXMubm9kZS5pc1RleHQpKXJldHVybihzLm5vZGUuaXNCbG9jaz9yLnRvcDwodC50b3ArdC5ib3R0b20pLzI6ci5sZWZ0PCh0LmxlZnQrdC5yaWdodCkvMik/cy5wb3NCZWZvcmU6cy5wb3NBZnRlcjtuPXMuZG9tLnBhcmVudE5vZGV9cmV0dXJuIG8+LTE/bzplLmRvY1ZpZXcucG9zRnJvbURPTSh0LG4sLTEpfShlLG4sbyx0KSl9bnVsbD09cyYmKHM9ZnVuY3Rpb24oZSx0LG4pe2xldHtub2RlOnIsb2Zmc2V0Om99PWZpbmRPZmZzZXRJbk5vZGUodCxuKSxpPS0xO2lmKDE9PXIubm9kZVR5cGUmJiFyLmZpcnN0Q2hpbGQpe2xldCBlPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aT1lLmxlZnQhPWUucmlnaHQmJm4ubGVmdD4oZS5sZWZ0K2UucmlnaHQpLzI/MTotMX1yZXR1cm4gZS5kb2NWaWV3LnBvc0Zyb21ET00ocixvLGkpfShlLGwsdCkpO2xldCBhPWUuZG9jVmlldy5uZWFyZXN0RGVzYyhsLCEwKTtyZXR1cm57cG9zOnMsaW5zaWRlOmE/YS5wb3NBdFN0YXJ0LWEuYm9yZGVyOi0xfX1mdW5jdGlvbiBub25aZXJvKGUpe3JldHVybiBlLnRvcDxlLmJvdHRvbXx8ZS5sZWZ0PGUucmlnaHR9ZnVuY3Rpb24gc2luZ2xlUmVjdChlLHQpe2xldCBuPWUuZ2V0Q2xpZW50UmVjdHMoKTtpZihuLmxlbmd0aCl7bGV0IGU9blt0PDA/MDpuLmxlbmd0aC0xXTtpZihub25aZXJvKGUpKXJldHVybiBlfXJldHVybiBBcnJheS5wcm90b3R5cGUuZmluZC5jYWxsKG4sbm9uWmVybyl8fGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y29uc3QgUWU9L1tcdTA1OTAtXHUwNWY0XHUwNjAwLVx1MDZmZlx1MDcwMC1cdTA4YWNdLztmdW5jdGlvbiBjb29yZHNBdFBvcyhlLHQsbil7bGV0e25vZGU6cixvZmZzZXQ6byxhdG9tOml9PWUuZG9jVmlldy5kb21Gcm9tUG9zKHQsbjwwPy0xOjEpLHM9SmV8fEZlO2lmKDM9PXIubm9kZVR5cGUpe2lmKCFzfHwhUWUudGVzdChyLm5vZGVWYWx1ZSkmJihuPDA/bzpvIT1yLm5vZGVWYWx1ZS5sZW5ndGgpKXtsZXQgZT1vLHQ9byxpPW48MD8xOi0xO3JldHVybiBuPDAmJiFvPyh0KyssaT0tMSk6bj49MCYmbz09ci5ub2RlVmFsdWUubGVuZ3RoPyhlLS0saT0xKTpuPDA/ZS0tOnQrKyxmbGF0dGVuVihzaW5nbGVSZWN0KHRleHRSYW5nZShyLGUsdCksaSksaTwwKX17bGV0IGU9c2luZ2xlUmVjdCh0ZXh0UmFuZ2UocixvLG8pLG4pO2lmKEZlJiZvJiYvXHMvLnRlc3Qoci5ub2RlVmFsdWVbby0xXSkmJm88ci5ub2RlVmFsdWUubGVuZ3RoKXtsZXQgdD1zaW5nbGVSZWN0KHRleHRSYW5nZShyLG8tMSxvLTEpLC0xKTtpZih0LnRvcD09ZS50b3Ape2xldCBuPXNpbmdsZVJlY3QodGV4dFJhbmdlKHIsbyxvKzEpLC0xKTtpZihuLnRvcCE9ZS50b3ApcmV0dXJuIGZsYXR0ZW5WKG4sbi5sZWZ0PHQubGVmdCl9fXJldHVybiBlfX1pZighZS5zdGF0ZS5kb2MucmVzb2x2ZSh0LShpfHwwKSkucGFyZW50LmlubGluZUNvbnRlbnQpe2lmKG51bGw9PWkmJm8mJihuPDB8fG89PW5vZGVTaXplKHIpKSl7bGV0IGU9ci5jaGlsZE5vZGVzW28tMV07aWYoMT09ZS5ub2RlVHlwZSlyZXR1cm4gZmxhdHRlbkgoZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwhMSl9aWYobnVsbD09aSYmbzxub2RlU2l6ZShyKSl7bGV0IGU9ci5jaGlsZE5vZGVzW29dO2lmKDE9PWUubm9kZVR5cGUpcmV0dXJuIGZsYXR0ZW5IKGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksITApfXJldHVybiBmbGF0dGVuSChyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG4+PTApfWlmKG51bGw9PWkmJm8mJihuPDB8fG89PW5vZGVTaXplKHIpKSl7bGV0IGU9ci5jaGlsZE5vZGVzW28tMV0sdD0zPT1lLm5vZGVUeXBlP3RleHRSYW5nZShlLG5vZGVTaXplKGUpLShzPzA6MSkpOjEhPWUubm9kZVR5cGV8fCJCUiI9PWUubm9kZU5hbWUmJmUubmV4dFNpYmxpbmc/bnVsbDplO2lmKHQpcmV0dXJuIGZsYXR0ZW5WKHNpbmdsZVJlY3QodCwxKSwhMSl9aWYobnVsbD09aSYmbzxub2RlU2l6ZShyKSl7bGV0IGU9ci5jaGlsZE5vZGVzW29dO2Zvcig7ZS5wbVZpZXdEZXNjJiZlLnBtVmlld0Rlc2MuaWdub3JlRm9yQ29vcmRzOyllPWUubmV4dFNpYmxpbmc7bGV0IHQ9ZT8zPT1lLm5vZGVUeXBlP3RleHRSYW5nZShlLDAscz8wOjEpOjE9PWUubm9kZVR5cGU/ZTpudWxsOm51bGw7aWYodClyZXR1cm4gZmxhdHRlblYoc2luZ2xlUmVjdCh0LC0xKSwhMCl9cmV0dXJuIGZsYXR0ZW5WKHNpbmdsZVJlY3QoMz09ci5ub2RlVHlwZT90ZXh0UmFuZ2Uocik6ciwtbiksbj49MCl9ZnVuY3Rpb24gZmxhdHRlblYoZSx0KXtpZigwPT1lLndpZHRoKXJldHVybiBlO2xldCBuPXQ/ZS5sZWZ0OmUucmlnaHQ7cmV0dXJue3RvcDplLnRvcCxib3R0b206ZS5ib3R0b20sbGVmdDpuLHJpZ2h0Om59fWZ1bmN0aW9uIGZsYXR0ZW5IKGUsdCl7aWYoMD09ZS5oZWlnaHQpcmV0dXJuIGU7bGV0IG49dD9lLnRvcDplLmJvdHRvbTtyZXR1cm57dG9wOm4sYm90dG9tOm4sbGVmdDplLmxlZnQscmlnaHQ6ZS5yaWdodH19ZnVuY3Rpb24gd2l0aEZsdXNoZWRTdGF0ZShlLHQsbil7bGV0IHI9ZS5zdGF0ZSxvPWUucm9vdC5hY3RpdmVFbGVtZW50O3IhPXQmJmUudXBkYXRlU3RhdGUodCksbyE9ZS5kb20mJmUuZm9jdXMoKTt0cnl7cmV0dXJuIG4oKX1maW5hbGx5e3IhPXQmJmUudXBkYXRlU3RhdGUociksbyE9ZS5kb20mJm8mJm8uZm9jdXMoKX19Y29uc3QgWmU9L1tcdTA1OTAtXHUwOGFjXS87bGV0IFllPW51bGwsZXQ9bnVsbCxudD0hMTtmdW5jdGlvbiBlbmRPZlRleHRibG9jayhlLHQsbil7cmV0dXJuIFllPT10JiZldD09bj9udDooWWU9dCxldD1uLG50PSJ1cCI9PW58fCJkb3duIj09bj9mdW5jdGlvbihlLHQsbil7bGV0IHI9dC5zZWxlY3Rpb24sbz0idXAiPT1uP3IuJGZyb206ci4kdG87cmV0dXJuIHdpdGhGbHVzaGVkU3RhdGUoZSx0LCgpPT57bGV0e25vZGU6dH09ZS5kb2NWaWV3LmRvbUZyb21Qb3Moby5wb3MsInVwIj09bj8tMToxKTtmb3IoOzspe2xldCBuPWUuZG9jVmlldy5uZWFyZXN0RGVzYyh0LCEwKTtpZighbilicmVhaztpZihuLm5vZGUuaXNCbG9jayl7dD1uLmNvbnRlbnRET018fG4uZG9tO2JyZWFrfXQ9bi5kb20ucGFyZW50Tm9kZX1sZXQgcj1jb29yZHNBdFBvcyhlLG8ucG9zLDEpO2ZvcihsZXQgZT10LmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpe2xldCB0O2lmKDE9PWUubm9kZVR5cGUpdD1lLmdldENsaWVudFJlY3RzKCk7ZWxzZXtpZigzIT1lLm5vZGVUeXBlKWNvbnRpbnVlO3Q9dGV4dFJhbmdlKGUsMCxlLm5vZGVWYWx1ZS5sZW5ndGgpLmdldENsaWVudFJlY3RzKCl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBvPXRbZV07aWYoby5ib3R0b20+by50b3ArMSYmKCJ1cCI9PW4/ci50b3Atby50b3A+Miooby5ib3R0b20tci50b3ApOm8uYm90dG9tLXIuYm90dG9tPjIqKHIuYm90dG9tLW8udG9wKSkpcmV0dXJuITF9fXJldHVybiEwfSl9KGUsdCxuKTpmdW5jdGlvbihlLHQsbil7bGV0eyRoZWFkOnJ9PXQuc2VsZWN0aW9uO2lmKCFyLnBhcmVudC5pc1RleHRibG9jaylyZXR1cm4hMTtsZXQgbz1yLnBhcmVudE9mZnNldCxpPSFvLHM9bz09ci5wYXJlbnQuY29udGVudC5zaXplLGw9ZS5kb21TZWxlY3Rpb24oKTtyZXR1cm4gbD9aZS50ZXN0KHIucGFyZW50LnRleHRDb250ZW50KSYmbC5tb2RpZnk/d2l0aEZsdXNoZWRTdGF0ZShlLHQsKCk9PntsZXR7Zm9jdXNOb2RlOnQsZm9jdXNPZmZzZXQ6byxhbmNob3JOb2RlOmksYW5jaG9yT2Zmc2V0OnN9PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxhPWwuY2FyZXRCaWRpTGV2ZWw7bC5tb2RpZnkoIm1vdmUiLG4sImNoYXJhY3RlciIpO2xldCBjPXIuZGVwdGg/ZS5kb2NWaWV3LmRvbUFmdGVyUG9zKHIuYmVmb3JlKCkpOmUuZG9tLHtmb2N1c05vZGU6ZCxmb2N1c09mZnNldDpwfT1lLmRvbVNlbGVjdGlvblJhbmdlKCksZj1kJiYhYy5jb250YWlucygxPT1kLm5vZGVUeXBlP2Q6ZC5wYXJlbnROb2RlKXx8dD09ZCYmbz09cDt0cnl7bC5jb2xsYXBzZShpLHMpLHQmJih0IT1pfHxvIT1zKSYmbC5leHRlbmQmJmwuZXh0ZW5kKHQsbyl9Y2F0Y2goZSl7fXJldHVybiBudWxsIT1hJiYobC5jYXJldEJpZGlMZXZlbD1hKSxmfSk6ImxlZnQiPT1ufHwiYmFja3dhcmQiPT1uP2k6czpyLnBvcz09ci5zdGFydCgpfHxyLnBvcz09ci5lbmQoKX0oZSx0LG4pKX1jbGFzcyBWaWV3RGVzY3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnBhcmVudD1lLHRoaXMuY2hpbGRyZW49dCx0aGlzLmRvbT1uLHRoaXMuY29udGVudERPTT1yLHRoaXMuZGlydHk9MCxuLnBtVmlld0Rlc2M9dGhpc31tYXRjaGVzV2lkZ2V0KGUpe3JldHVybiExfW1hdGNoZXNNYXJrKGUpe3JldHVybiExfW1hdGNoZXNOb2RlKGUsdCxuKXtyZXR1cm4hMX1tYXRjaGVzSGFjayhlKXtyZXR1cm4hMX1wYXJzZVJ1bGUoKXtyZXR1cm4gbnVsbH1zdG9wRXZlbnQoZSl7cmV0dXJuITF9Z2V0IHNpemUoKXtsZXQgZT0wO2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKWUrPXRoaXMuY2hpbGRyZW5bdF0uc2l6ZTtyZXR1cm4gZX1nZXQgYm9yZGVyKCl7cmV0dXJuIDB9ZGVzdHJveSgpe3RoaXMucGFyZW50PXZvaWQgMCx0aGlzLmRvbS5wbVZpZXdEZXNjPT10aGlzJiYodGhpcy5kb20ucG1WaWV3RGVzYz12b2lkIDApO2ZvcihsZXQgZT0wO2U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZSsrKXRoaXMuY2hpbGRyZW5bZV0uZGVzdHJveSgpfXBvc0JlZm9yZUNoaWxkKGUpe2ZvcihsZXQgdD0wLG49dGhpcy5wb3NBdFN0YXJ0Ozt0Kyspe2xldCByPXRoaXMuY2hpbGRyZW5bdF07aWYocj09ZSlyZXR1cm4gbjtuKz1yLnNpemV9fWdldCBwb3NCZWZvcmUoKXtyZXR1cm4gdGhpcy5wYXJlbnQucG9zQmVmb3JlQ2hpbGQodGhpcyl9Z2V0IHBvc0F0U3RhcnQoKXtyZXR1cm4gdGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQucG9zQmVmb3JlQ2hpbGQodGhpcykrdGhpcy5ib3JkZXI6MH1nZXQgcG9zQWZ0ZXIoKXtyZXR1cm4gdGhpcy5wb3NCZWZvcmUrdGhpcy5zaXplfWdldCBwb3NBdEVuZCgpe3JldHVybiB0aGlzLnBvc0F0U3RhcnQrdGhpcy5zaXplLTIqdGhpcy5ib3JkZXJ9bG9jYWxQb3NGcm9tRE9NKGUsdCxuKXtpZih0aGlzLmNvbnRlbnRET00mJnRoaXMuY29udGVudERPTS5jb250YWlucygxPT1lLm5vZGVUeXBlP2U6ZS5wYXJlbnROb2RlKSl7aWYobjwwKXtsZXQgbixyO2lmKGU9PXRoaXMuY29udGVudERPTSluPWUuY2hpbGROb2Rlc1t0LTFdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7bj1lLnByZXZpb3VzU2libGluZ31mb3IoO24mJighKHI9bi5wbVZpZXdEZXNjKXx8ci5wYXJlbnQhPXRoaXMpOyluPW4ucHJldmlvdXNTaWJsaW5nO3JldHVybiBuP3RoaXMucG9zQmVmb3JlQ2hpbGQocikrci5zaXplOnRoaXMucG9zQXRTdGFydH17bGV0IG4scjtpZihlPT10aGlzLmNvbnRlbnRET00pbj1lLmNoaWxkTm9kZXNbdF07ZWxzZXtmb3IoO2UucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NOyllPWUucGFyZW50Tm9kZTtuPWUubmV4dFNpYmxpbmd9Zm9yKDtuJiYoIShyPW4ucG1WaWV3RGVzYyl8fHIucGFyZW50IT10aGlzKTspbj1uLm5leHRTaWJsaW5nO3JldHVybiBuP3RoaXMucG9zQmVmb3JlQ2hpbGQocik6dGhpcy5wb3NBdEVuZH19bGV0IHI7aWYoZT09dGhpcy5kb20mJnRoaXMuY29udGVudERPTSlyPXQ+ZG9tSW5kZXgodGhpcy5jb250ZW50RE9NKTtlbHNlIGlmKHRoaXMuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NIT10aGlzLmRvbSYmdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKSlyPTImZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzLmNvbnRlbnRET00pO2Vsc2UgaWYodGhpcy5kb20uZmlyc3RDaGlsZCl7aWYoMD09dClmb3IobGV0IHQ9ZTs7dD10LnBhcmVudE5vZGUpe2lmKHQ9PXRoaXMuZG9tKXtyPSExO2JyZWFrfWlmKHQucHJldmlvdXNTaWJsaW5nKWJyZWFrfWlmKG51bGw9PXImJnQ9PWUuY2hpbGROb2Rlcy5sZW5ndGgpZm9yKGxldCB0PWU7O3Q9dC5wYXJlbnROb2RlKXtpZih0PT10aGlzLmRvbSl7cj0hMDticmVha31pZih0Lm5leHRTaWJsaW5nKWJyZWFrfX1yZXR1cm4obnVsbD09cj9uPjA6cik/dGhpcy5wb3NBdEVuZDp0aGlzLnBvc0F0U3RhcnR9bmVhcmVzdERlc2MoZSx0PSExKXtmb3IobGV0IG49ITAscj1lO3I7cj1yLnBhcmVudE5vZGUpe2xldCBvLGk9dGhpcy5nZXREZXNjKHIpO2lmKGkmJighdHx8aS5ub2RlKSl7aWYoIW58fCEobz1pLm5vZGVET00pfHwoMT09by5ub2RlVHlwZT9vLmNvbnRhaW5zKDE9PWUubm9kZVR5cGU/ZTplLnBhcmVudE5vZGUpOm89PWUpKXJldHVybiBpO249ITF9fX1nZXREZXNjKGUpe2xldCB0PWUucG1WaWV3RGVzYztmb3IobGV0IGU9dDtlO2U9ZS5wYXJlbnQpaWYoZT09dGhpcylyZXR1cm4gdH1wb3NGcm9tRE9NKGUsdCxuKXtmb3IobGV0IHI9ZTtyO3I9ci5wYXJlbnROb2RlKXtsZXQgbz10aGlzLmdldERlc2Mocik7aWYobylyZXR1cm4gby5sb2NhbFBvc0Zyb21ET00oZSx0LG4pfXJldHVybi0xfWRlc2NBdChlKXtmb3IobGV0IHQ9MCxuPTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2xldCByPXRoaXMuY2hpbGRyZW5bdF0sbz1uK3Iuc2l6ZTtpZihuPT1lJiZvIT1uKXtmb3IoOyFyLmJvcmRlciYmci5jaGlsZHJlbi5sZW5ndGg7KWZvcihsZXQgZT0wO2U8ci5jaGlsZHJlbi5sZW5ndGg7ZSsrKXtsZXQgdD1yLmNoaWxkcmVuW2VdO2lmKHQuc2l6ZSl7cj10O2JyZWFrfX1yZXR1cm4gcn1pZihlPG8pcmV0dXJuIHIuZGVzY0F0KGUtbi1yLmJvcmRlcik7bj1vfX1kb21Gcm9tUG9zKGUsdCl7aWYoIXRoaXMuY29udGVudERPTSlyZXR1cm57bm9kZTp0aGlzLmRvbSxvZmZzZXQ6MCxhdG9tOmUrMX07bGV0IG49MCxyPTA7Zm9yKGxldCB0PTA7bjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtuKyspe2xldCBvPXRoaXMuY2hpbGRyZW5bbl0saT10K28uc2l6ZTtpZihpPmV8fG8gaW5zdGFuY2VvZiBUcmFpbGluZ0hhY2tWaWV3RGVzYyl7cj1lLXQ7YnJlYWt9dD1pfWlmKHIpcmV0dXJuIHRoaXMuY2hpbGRyZW5bbl0uZG9tRnJvbVBvcyhyLXRoaXMuY2hpbGRyZW5bbl0uYm9yZGVyLHQpO2ZvcihsZXQgZTtuJiYhKGU9dGhpcy5jaGlsZHJlbltuLTFdKS5zaXplJiZlIGluc3RhbmNlb2YgV2lkZ2V0Vmlld0Rlc2MmJmUuc2lkZT49MDtuLS0pO2lmKHQ8PTApe2xldCBlLHI9ITA7Zm9yKDtlPW4/dGhpcy5jaGlsZHJlbltuLTFdOm51bGwsZSYmZS5kb20ucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NO24tLSxyPSExKTtyZXR1cm4gZSYmdCYmciYmIWUuYm9yZGVyJiYhZS5kb21BdG9tP2UuZG9tRnJvbVBvcyhlLnNpemUsdCk6e25vZGU6dGhpcy5jb250ZW50RE9NLG9mZnNldDplP2RvbUluZGV4KGUuZG9tKSsxOjB9fXtsZXQgZSxyPSEwO2Zvcig7ZT1uPHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bbl06bnVsbCxlJiZlLmRvbS5wYXJlbnROb2RlIT10aGlzLmNvbnRlbnRET007bisrLHI9ITEpO3JldHVybiBlJiZyJiYhZS5ib3JkZXImJiFlLmRvbUF0b20/ZS5kb21Gcm9tUG9zKDAsdCk6e25vZGU6dGhpcy5jb250ZW50RE9NLG9mZnNldDplP2RvbUluZGV4KGUuZG9tKTp0aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGh9fX1wYXJzZVJhbmdlKGUsdCxuPTApe2lmKDA9PXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXJldHVybntub2RlOnRoaXMuY29udGVudERPTSxmcm9tOmUsdG86dCxmcm9tT2Zmc2V0OjAsdG9PZmZzZXQ6dGhpcy5jb250ZW50RE9NLmNoaWxkTm9kZXMubGVuZ3RofTtsZXQgcj0tMSxvPS0xO2ZvcihsZXQgaT1uLHM9MDs7cysrKXtsZXQgbj10aGlzLmNoaWxkcmVuW3NdLGw9aStuLnNpemU7aWYoLTE9PXImJmU8PWwpe2xldCBvPWkrbi5ib3JkZXI7aWYoZT49byYmdDw9bC1uLmJvcmRlciYmbi5ub2RlJiZuLmNvbnRlbnRET00mJnRoaXMuY29udGVudERPTS5jb250YWlucyhuLmNvbnRlbnRET00pKXJldHVybiBuLnBhcnNlUmFuZ2UoZSx0LG8pO2U9aTtmb3IobGV0IHQ9czt0PjA7dC0tKXtsZXQgbj10aGlzLmNoaWxkcmVuW3QtMV07aWYobi5zaXplJiZuLmRvbS5wYXJlbnROb2RlPT10aGlzLmNvbnRlbnRET00mJiFuLmVtcHR5Q2hpbGRBdCgxKSl7cj1kb21JbmRleChuLmRvbSkrMTticmVha31lLT1uLnNpemV9LTE9PXImJihyPTApfWlmKHI+LTEmJihsPnR8fHM9PXRoaXMuY2hpbGRyZW4ubGVuZ3RoLTEpKXt0PWw7Zm9yKGxldCBlPXMrMTtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKyl7bGV0IG49dGhpcy5jaGlsZHJlbltlXTtpZihuLnNpemUmJm4uZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIW4uZW1wdHlDaGlsZEF0KC0xKSl7bz1kb21JbmRleChuLmRvbSk7YnJlYWt9dCs9bi5zaXplfS0xPT1vJiYobz10aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGgpO2JyZWFrfWk9bH1yZXR1cm57bm9kZTp0aGlzLmNvbnRlbnRET00sZnJvbTplLHRvOnQsZnJvbU9mZnNldDpyLHRvT2Zmc2V0Om99fWVtcHR5Q2hpbGRBdChlKXtpZih0aGlzLmJvcmRlcnx8IXRoaXMuY29udGVudERPTXx8IXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiExO2xldCB0PXRoaXMuY2hpbGRyZW5bZTwwPzA6dGhpcy5jaGlsZHJlbi5sZW5ndGgtMV07cmV0dXJuIDA9PXQuc2l6ZXx8dC5lbXB0eUNoaWxkQXQoZSl9ZG9tQWZ0ZXJQb3MoZSl7bGV0e25vZGU6dCxvZmZzZXQ6bn09dGhpcy5kb21Gcm9tUG9zKGUsMCk7aWYoMSE9dC5ub2RlVHlwZXx8bj09dC5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gbm9kZSBhZnRlciBwb3MgIitlKTtyZXR1cm4gdC5jaGlsZE5vZGVzW25dfXNldFNlbGVjdGlvbihlLHQsbixyPSExKXtsZXQgbz1NYXRoLm1pbihlLHQpLGk9TWF0aC5tYXgoZSx0KTtmb3IobGV0IHM9MCxsPTA7czx0aGlzLmNoaWxkcmVuLmxlbmd0aDtzKyspe2xldCBhPXRoaXMuY2hpbGRyZW5bc10sYz1sK2Euc2l6ZTtpZihvPmwmJmk8YylyZXR1cm4gYS5zZXRTZWxlY3Rpb24oZS1sLWEuYm9yZGVyLHQtbC1hLmJvcmRlcixuLHIpO2w9Y31sZXQgcz10aGlzLmRvbUZyb21Qb3MoZSxlPy0xOjEpLGw9dD09ZT9zOnRoaXMuZG9tRnJvbVBvcyh0LHQ/LTE6MSksYT1uLnJvb3QuZ2V0U2VsZWN0aW9uKCksYz1uLmRvbVNlbGVjdGlvblJhbmdlKCksZD0hMTtpZigoRmV8fGplKSYmZT09dCl7bGV0e25vZGU6ZSxvZmZzZXQ6dH09cztpZigzPT1lLm5vZGVUeXBlKXtpZihkPSEoIXR8fCJcbiIhPWUubm9kZVZhbHVlW3QtMV0pLGQmJnQ9PWUubm9kZVZhbHVlLmxlbmd0aClmb3IobGV0IHQsbj1lO247bj1uLnBhcmVudE5vZGUpe2lmKHQ9bi5uZXh0U2libGluZyl7IkJSIj09dC5ub2RlTmFtZSYmKHM9bD17bm9kZTp0LnBhcmVudE5vZGUsb2Zmc2V0OmRvbUluZGV4KHQpKzF9KTticmVha31sZXQgZT1uLnBtVmlld0Rlc2M7aWYoZSYmZS5ub2RlJiZlLm5vZGUuaXNCbG9jaylicmVha319ZWxzZXtsZXQgbj1lLmNoaWxkTm9kZXNbdC0xXTtkPW4mJigiQlIiPT1uLm5vZGVOYW1lfHwiZmFsc2UiPT1uLmNvbnRlbnRFZGl0YWJsZSl9fWlmKEZlJiZjLmZvY3VzTm9kZSYmYy5mb2N1c05vZGUhPWwubm9kZSYmMT09Yy5mb2N1c05vZGUubm9kZVR5cGUpe2xldCBlPWMuZm9jdXNOb2RlLmNoaWxkTm9kZXNbYy5mb2N1c09mZnNldF07ZSYmImZhbHNlIj09ZS5jb250ZW50RWRpdGFibGUmJihyPSEwKX1pZighKHJ8fGQmJmplKSYmaXNFcXVpdmFsZW50UG9zaXRpb24ocy5ub2RlLHMub2Zmc2V0LGMuYW5jaG9yTm9kZSxjLmFuY2hvck9mZnNldCkmJmlzRXF1aXZhbGVudFBvc2l0aW9uKGwubm9kZSxsLm9mZnNldCxjLmZvY3VzTm9kZSxjLmZvY3VzT2Zmc2V0KSlyZXR1cm47bGV0IHA9ITE7aWYoKGEuZXh0ZW5kfHxlPT10KSYmKCFkfHwhRmUpKXthLmNvbGxhcHNlKHMubm9kZSxzLm9mZnNldCk7dHJ5e2UhPXQmJmEuZXh0ZW5kKGwubm9kZSxsLm9mZnNldCkscD0hMH1jYXRjaChlKXt9fWlmKCFwKXtpZihlPnQpe2xldCBlPXM7cz1sLGw9ZX1sZXQgbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO24uc2V0RW5kKGwubm9kZSxsLm9mZnNldCksbi5zZXRTdGFydChzLm5vZGUscy5vZmZzZXQpLGEucmVtb3ZlQWxsUmFuZ2VzKCksYS5hZGRSYW5nZShuKX19aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIXRoaXMuY29udGVudERPTSYmInNlbGVjdGlvbiIhPWUudHlwZX1nZXQgY29udGVudExvc3QoKXtyZXR1cm4gdGhpcy5jb250ZW50RE9NJiZ0aGlzLmNvbnRlbnRET00hPXRoaXMuZG9tJiYhdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKX1tYXJrRGlydHkoZSx0KXtmb3IobGV0IG49MCxyPTA7cjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtyKyspe2xldCBvPXRoaXMuY2hpbGRyZW5bcl0saT1uK28uc2l6ZTtpZihuPT1pP2U8PWkmJnQ+PW46ZTxpJiZ0Pm4pe2xldCByPW4rby5ib3JkZXIscz1pLW8uYm9yZGVyO2lmKGU+PXImJnQ8PXMpcmV0dXJuIHRoaXMuZGlydHk9ZT09bnx8dD09aT8yOjEsdm9pZChlIT1yfHx0IT1zfHwhby5jb250ZW50TG9zdCYmby5kb20ucGFyZW50Tm9kZT09dGhpcy5jb250ZW50RE9NP28ubWFya0RpcnR5KGUtcix0LXIpOm8uZGlydHk9Myk7by5kaXJ0eT1vLmRvbSE9by5jb250ZW50RE9NfHxvLmRvbS5wYXJlbnROb2RlIT10aGlzLmNvbnRlbnRET018fG8uY2hpbGRyZW4ubGVuZ3RoPzM6Mn1uPWl9dGhpcy5kaXJ0eT0yfW1hcmtQYXJlbnRzRGlydHkoKXtsZXQgZT0xO2ZvcihsZXQgdD10aGlzLnBhcmVudDt0O3Q9dC5wYXJlbnQsZSsrKXtsZXQgbj0xPT1lPzI6MTt0LmRpcnR5PG4mJih0LmRpcnR5PW4pfX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWdldCBpZ25vcmVGb3JDb29yZHMoKXtyZXR1cm4hMX1nZXQgaWdub3JlRm9yU2VsZWN0aW9uKCl7cmV0dXJuITF9aXNUZXh0KGUpe3JldHVybiExfX1jbGFzcyBXaWRnZXRWaWV3RGVzYyBleHRlbmRzIFZpZXdEZXNje2NvbnN0cnVjdG9yKGUsdCxuLHIpe2xldCBvLGk9dC50eXBlLnRvRE9NO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiYoaT1pKG4sKCk9Pm8/by5wYXJlbnQ/by5wYXJlbnQucG9zQmVmb3JlQ2hpbGQobyk6dm9pZCAwOnIpKSwhdC50eXBlLnNwZWMucmF3KXtpZigxIT1pLm5vZGVUeXBlKXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5hcHBlbmRDaGlsZChpKSxpPWV9aS5jb250ZW50RWRpdGFibGU9ImZhbHNlIixpLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLXdpZGdldCIpfXN1cGVyKGUsW10saSxudWxsKSx0aGlzLndpZGdldD10LHRoaXMud2lkZ2V0PXQsbz10aGlzfW1hdGNoZXNXaWRnZXQoZSl7cmV0dXJuIDA9PXRoaXMuZGlydHkmJmUudHlwZS5lcSh0aGlzLndpZGdldC50eXBlKX1wYXJzZVJ1bGUoKXtyZXR1cm57aWdub3JlOiEwfX1zdG9wRXZlbnQoZSl7bGV0IHQ9dGhpcy53aWRnZXQuc3BlYy5zdG9wRXZlbnQ7cmV0dXJuISF0JiZ0KGUpfWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiJzZWxlY3Rpb24iIT1lLnR5cGV8fHRoaXMud2lkZ2V0LnNwZWMuaWdub3JlU2VsZWN0aW9ufWRlc3Ryb3koKXt0aGlzLndpZGdldC50eXBlLmRlc3Ryb3kodGhpcy5kb20pLHN1cGVyLmRlc3Ryb3koKX1nZXQgZG9tQXRvbSgpe3JldHVybiEwfWdldCBpZ25vcmVGb3JTZWxlY3Rpb24oKXtyZXR1cm4hIXRoaXMud2lkZ2V0LnR5cGUuc3BlYy5yZWxheGVkU2lkZX1nZXQgc2lkZSgpe3JldHVybiB0aGlzLndpZGdldC50eXBlLnNpZGV9fWNsYXNzIENvbXBvc2l0aW9uVmlld0Rlc2MgZXh0ZW5kcyBWaWV3RGVzY3tjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLFtdLHQsbnVsbCksdGhpcy50ZXh0RE9NPW4sdGhpcy50ZXh0PXJ9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH1sb2NhbFBvc0Zyb21ET00oZSx0KXtyZXR1cm4gZSE9dGhpcy50ZXh0RE9NP3RoaXMucG9zQXRTdGFydCsodD90aGlzLnNpemU6MCk6dGhpcy5wb3NBdFN0YXJ0K3R9ZG9tRnJvbVBvcyhlKXtyZXR1cm57bm9kZTp0aGlzLnRleHRET00sb2Zmc2V0OmV9fWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiJjaGFyYWN0ZXJEYXRhIj09PWUudHlwZSYmZS50YXJnZXQubm9kZVZhbHVlPT1lLm9sZFZhbHVlfX1jbGFzcyBNYXJrVmlld0Rlc2MgZXh0ZW5kcyBWaWV3RGVzY3tjb25zdHJ1Y3RvcihlLHQsbixyLG8pe3N1cGVyKGUsW10sbixyKSx0aGlzLm1hcms9dCx0aGlzLnNwZWM9b31zdGF0aWMgY3JlYXRlKGUsdCxuLHIpe2xldCBvPXIubm9kZVZpZXdzW3QudHlwZS5uYW1lXSxpPW8mJm8odCxyLG4pO3JldHVybiBpJiZpLmRvbXx8KGk9RE9NU2VyaWFsaXplci5yZW5kZXJTcGVjKGRvY3VtZW50LHQudHlwZS5zcGVjLnRvRE9NKHQsbiksbnVsbCx0LmF0dHJzKSksbmV3IE1hcmtWaWV3RGVzYyhlLHQsaS5kb20saS5jb250ZW50RE9NfHxpLmRvbSxpKX1wYXJzZVJ1bGUoKXtyZXR1cm4gMyZ0aGlzLmRpcnR5fHx0aGlzLm1hcmsudHlwZS5zcGVjLnJlcGFyc2VJblZpZXc/bnVsbDp7bWFyazp0aGlzLm1hcmsudHlwZS5uYW1lLGF0dHJzOnRoaXMubWFyay5hdHRycyxjb250ZW50RWxlbWVudDp0aGlzLmNvbnRlbnRET019fW1hdGNoZXNNYXJrKGUpe3JldHVybiAzIT10aGlzLmRpcnR5JiZ0aGlzLm1hcmsuZXEoZSl9bWFya0RpcnR5KGUsdCl7aWYoc3VwZXIubWFya0RpcnR5KGUsdCksMCE9dGhpcy5kaXJ0eSl7bGV0IGU9dGhpcy5wYXJlbnQ7Zm9yKDshZS5ub2RlOyllPWUucGFyZW50O2UuZGlydHk8dGhpcy5kaXJ0eSYmKGUuZGlydHk9dGhpcy5kaXJ0eSksdGhpcy5kaXJ0eT0wfX1zbGljZShlLHQsbil7bGV0IHI9TWFya1ZpZXdEZXNjLmNyZWF0ZSh0aGlzLnBhcmVudCx0aGlzLm1hcmssITAsbiksbz10aGlzLmNoaWxkcmVuLGk9dGhpcy5zaXplO3Q8aSYmKG89cmVwbGFjZU5vZGVzKG8sdCxpLG4pKSxlPjAmJihvPXJlcGxhY2VOb2RlcyhvLDAsZSxuKSk7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspb1tlXS5wYXJlbnQ9cjtyZXR1cm4gci5jaGlsZHJlbj1vLHJ9aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIHRoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbj90aGlzLnNwZWMuaWdub3JlTXV0YXRpb24oZSk6c3VwZXIuaWdub3JlTXV0YXRpb24oZSl9ZGVzdHJveSgpe3RoaXMuc3BlYy5kZXN0cm95JiZ0aGlzLnNwZWMuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX19Y2xhc3MgTm9kZVZpZXdEZXNjIGV4dGVuZHMgVmlld0Rlc2N7Y29uc3RydWN0b3IoZSx0LG4scixvLGkscyxsLGEpe3N1cGVyKGUsW10sbyxpKSx0aGlzLm5vZGU9dCx0aGlzLm91dGVyRGVjbz1uLHRoaXMuaW5uZXJEZWNvPXIsdGhpcy5ub2RlRE9NPXN9c3RhdGljIGNyZWF0ZShlLHQsbixyLG8saSl7bGV0IHMsbD1vLm5vZGVWaWV3c1t0LnR5cGUubmFtZV0sYT1sJiZsKHQsbywoKT0+cz9zLnBhcmVudD9zLnBhcmVudC5wb3NCZWZvcmVDaGlsZChzKTp2b2lkIDA6aSxuLHIpLGM9YSYmYS5kb20sZD1hJiZhLmNvbnRlbnRET007aWYodC5pc1RleHQpaWYoYyl7aWYoMyE9Yy5ub2RlVHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGV4dCBtdXN0IGJlIHJlbmRlcmVkIGFzIGEgRE9NIHRleHQgbm9kZSIpfWVsc2UgYz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpO2Vsc2UgaWYoIWMpe2xldCBlPURPTVNlcmlhbGl6ZXIucmVuZGVyU3BlYyhkb2N1bWVudCx0LnR5cGUuc3BlYy50b0RPTSh0KSxudWxsLHQuYXR0cnMpOyh7ZG9tOmMsY29udGVudERPTTpkfT1lKX1kfHx0LmlzVGV4dHx8IkJSIj09Yy5ub2RlTmFtZXx8KGMuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8KGMuY29udGVudEVkaXRhYmxlPSJmYWxzZSIpLHQudHlwZS5zcGVjLmRyYWdnYWJsZSYmKGMuZHJhZ2dhYmxlPSEwKSk7bGV0IHA9YztyZXR1cm4gYz1hcHBseU91dGVyRGVjbyhjLG4sdCksYT9zPW5ldyBDdXN0b21Ob2RlVmlld0Rlc2MoZSx0LG4scixjLGR8fG51bGwscCxhLG8saSsxKTp0LmlzVGV4dD9uZXcgVGV4dFZpZXdEZXNjKGUsdCxuLHIsYyxwLG8pOm5ldyBOb2RlVmlld0Rlc2MoZSx0LG4scixjLGR8fG51bGwscCxvLGkrMSl9cGFyc2VSdWxlKCl7aWYodGhpcy5ub2RlLnR5cGUuc3BlYy5yZXBhcnNlSW5WaWV3KXJldHVybiBudWxsO2xldCBlPXtub2RlOnRoaXMubm9kZS50eXBlLm5hbWUsYXR0cnM6dGhpcy5ub2RlLmF0dHJzfTtpZigicHJlIj09dGhpcy5ub2RlLnR5cGUud2hpdGVzcGFjZSYmKGUucHJlc2VydmVXaGl0ZXNwYWNlPSJmdWxsIiksdGhpcy5jb250ZW50RE9NKWlmKHRoaXMuY29udGVudExvc3Qpe2ZvcihsZXQgdD10aGlzLmNoaWxkcmVuLmxlbmd0aC0xO3Q+PTA7dC0tKXtsZXQgbj10aGlzLmNoaWxkcmVuW3RdO2lmKHRoaXMuZG9tLmNvbnRhaW5zKG4uZG9tLnBhcmVudE5vZGUpKXtlLmNvbnRlbnRFbGVtZW50PW4uZG9tLnBhcmVudE5vZGU7YnJlYWt9fWUuY29udGVudEVsZW1lbnR8fChlLmdldENvbnRlbnQ9KCk9PkZyYWdtZW50LmVtcHR5KX1lbHNlIGUuY29udGVudEVsZW1lbnQ9dGhpcy5jb250ZW50RE9NO2Vsc2UgZS5nZXRDb250ZW50PSgpPT50aGlzLm5vZGUuY29udGVudDtyZXR1cm4gZX1tYXRjaGVzTm9kZShlLHQsbil7cmV0dXJuIDA9PXRoaXMuZGlydHkmJmUuZXEodGhpcy5ub2RlKSYmc2FtZU91dGVyRGVjbyh0LHRoaXMub3V0ZXJEZWNvKSYmbi5lcSh0aGlzLmlubmVyRGVjbyl9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVTaXplfWdldCBib3JkZXIoKXtyZXR1cm4gdGhpcy5ub2RlLmlzTGVhZj8wOjF9dXBkYXRlQ2hpbGRyZW4oZSx0KXtsZXQgbj10aGlzLm5vZGUuaW5saW5lQ29udGVudCxyPXQsbz1lLmNvbXBvc2luZz90aGlzLmxvY2FsQ29tcG9zaXRpb25JbmZvKGUsdCk6bnVsbCxpPW8mJm8ucG9zPi0xP286bnVsbCxzPW8mJm8ucG9zPDAsbD1uZXcgVmlld1RyZWVVcGRhdGVyKHRoaXMsaSYmaS5ub2RlLGUpOyFmdW5jdGlvbihlLHQsbixyKXtsZXQgbz10LmxvY2FscyhlKSxpPTA7aWYoMD09by5sZW5ndGgpe2ZvcihsZXQgbj0wO248ZS5jaGlsZENvdW50O24rKyl7bGV0IHM9ZS5jaGlsZChuKTtyKHMsbyx0LmZvckNoaWxkKGkscyksbiksaSs9cy5ub2RlU2l6ZX1yZXR1cm59bGV0IHM9MCxsPVtdLGE9bnVsbDtmb3IobGV0IGM9MDs7KXtsZXQgZCxwLGYsbTtmb3IoO3M8by5sZW5ndGgmJm9bc10udG89PWk7KXtsZXQgZT1vW3MrK107ZS53aWRnZXQmJihkPyhwfHwocD1bZF0pKS5wdXNoKGUpOmQ9ZSl9aWYoZClpZihwKXtwLnNvcnQoY29tcGFyZVNpZGUpO2ZvcihsZXQgZT0wO2U8cC5sZW5ndGg7ZSsrKW4ocFtlXSxjLCEhYSl9ZWxzZSBuKGQsYywhIWEpO2lmKGEpbT0tMSxmPWEsYT1udWxsO2Vsc2V7aWYoIShjPGUuY2hpbGRDb3VudCkpYnJlYWs7bT1jLGY9ZS5jaGlsZChjKyspfWZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSsrKWxbZV0udG88PWkmJmwuc3BsaWNlKGUtLSwxKTtmb3IoO3M8by5sZW5ndGgmJm9bc10uZnJvbTw9aSYmb1tzXS50bz5pOylsLnB1c2gob1tzKytdKTtsZXQgeT1pK2Yubm9kZVNpemU7aWYoZi5pc1RleHQpe2xldCBlPXk7czxvLmxlbmd0aCYmb1tzXS5mcm9tPGUmJihlPW9bc10uZnJvbSk7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0KyspbFt0XS50bzxlJiYoZT1sW3RdLnRvKTtlPHkmJihhPWYuY3V0KGUtaSksZj1mLmN1dCgwLGUtaSkseT1lLG09LTEpfWVsc2UgZm9yKDtzPG8ubGVuZ3RoJiZvW3NdLnRvPHk7KXMrKztyKGYsZi5pc0lubGluZSYmIWYuaXNMZWFmP2wuZmlsdGVyKGU9PiFlLmlubGluZSk6bC5zbGljZSgpLHQuZm9yQ2hpbGQoaSxmKSxtKSxpPXl9fSh0aGlzLm5vZGUsdGhpcy5pbm5lckRlY28sKHQsbyxpKT0+e3Quc3BlYy5tYXJrcz9sLnN5bmNUb01hcmtzKHQuc3BlYy5tYXJrcyxuLGUsbyk6dC50eXBlLnNpZGU+PTAmJiFpJiZsLnN5bmNUb01hcmtzKG89PXRoaXMubm9kZS5jaGlsZENvdW50P2xlLm5vbmU6dGhpcy5ub2RlLmNoaWxkKG8pLm1hcmtzLG4sZSxvKSxsLnBsYWNlV2lkZ2V0KHQsZSxyKX0sKHQsaSxhLGMpPT57bGV0IGQ7bC5zeW5jVG9NYXJrcyh0Lm1hcmtzLG4sZSxjKSxsLmZpbmROb2RlTWF0Y2godCxpLGEsYyl8fHMmJmUuc3RhdGUuc2VsZWN0aW9uLmZyb20+ciYmZS5zdGF0ZS5zZWxlY3Rpb24udG88cit0Lm5vZGVTaXplJiYoZD1sLmZpbmRJbmRleFdpdGhDaGlsZChvLm5vZGUpKT4tMSYmbC51cGRhdGVOb2RlQXQodCxpLGEsZCxlKXx8bC51cGRhdGVOZXh0Tm9kZSh0LGksYSxlLGMscil8fGwuYWRkTm9kZSh0LGksYSxlLHIpLHIrPXQubm9kZVNpemV9KSxsLnN5bmNUb01hcmtzKFtdLG4sZSwwKSx0aGlzLm5vZGUuaXNUZXh0YmxvY2smJmwuYWRkVGV4dGJsb2NrSGFja3MoKSxsLmRlc3Ryb3lSZXN0KCksKGwuY2hhbmdlZHx8Mj09dGhpcy5kaXJ0eSkmJihpJiZ0aGlzLnByb3RlY3RMb2NhbENvbXBvc2l0aW9uKGUsaSkscmVuZGVyRGVzY3ModGhpcy5jb250ZW50RE9NLHRoaXMuY2hpbGRyZW4sZSkscWUmJmZ1bmN0aW9uKGUpe2lmKCJVTCI9PWUubm9kZU5hbWV8fCJPTCI9PWUubm9kZU5hbWUpe2xldCB0PWUuc3R5bGUuY3NzVGV4dDtlLnN0eWxlLmNzc1RleHQ9dCsiOyBsaXN0LXN0eWxlOiBzcXVhcmUgIWltcG9ydGFudCIsd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkubGlzdFN0eWxlLGUuc3R5bGUuY3NzVGV4dD10fX0odGhpcy5kb20pKX1sb2NhbENvbXBvc2l0aW9uSW5mbyhlLHQpe2xldHtmcm9tOm4sdG86cn09ZS5zdGF0ZS5zZWxlY3Rpb247aWYoIShlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pfHxuPHR8fHI+dCt0aGlzLm5vZGUuY29udGVudC5zaXplKXJldHVybiBudWxsO2xldCBvPWUuaW5wdXQuY29tcG9zaXRpb25Ob2RlO2lmKCFvfHwhdGhpcy5kb20uY29udGFpbnMoby5wYXJlbnROb2RlKSlyZXR1cm4gbnVsbDtpZih0aGlzLm5vZGUuaW5saW5lQ29udGVudCl7bGV0IGU9by5ub2RlVmFsdWUsaT1mdW5jdGlvbihlLHQsbixyKXtmb3IobGV0IG89MCxpPTA7bzxlLmNoaWxkQ291bnQmJmk8PXI7KXtsZXQgcz1lLmNoaWxkKG8rKyksbD1pO2lmKGkrPXMubm9kZVNpemUsIXMuaXNUZXh0KWNvbnRpbnVlO2xldCBhPXMudGV4dDtmb3IoO288ZS5jaGlsZENvdW50Oyl7bGV0IHQ9ZS5jaGlsZChvKyspO2lmKGkrPXQubm9kZVNpemUsIXQuaXNUZXh0KWJyZWFrO2ErPXQudGV4dH1pZihpPj1uKXtpZihpPj1yJiZhLnNsaWNlKHItdC5sZW5ndGgtbCxyLWwpPT10KXJldHVybiByLXQubGVuZ3RoO2xldCBlPWw8cj9hLmxhc3RJbmRleE9mKHQsci1sLTEpOi0xO2lmKGU+PTAmJmUrdC5sZW5ndGgrbD49bilyZXR1cm4gbCtlO2lmKG49PXImJmEubGVuZ3RoPj1yK3QubGVuZ3RoLWwmJmEuc2xpY2Uoci1sLHItbCt0Lmxlbmd0aCk9PXQpcmV0dXJuIHJ9fXJldHVybi0xfSh0aGlzLm5vZGUuY29udGVudCxlLG4tdCxyLXQpO3JldHVybiBpPDA/bnVsbDp7bm9kZTpvLHBvczppLHRleHQ6ZX19cmV0dXJue25vZGU6byxwb3M6LTEsdGV4dDoiIn19cHJvdGVjdExvY2FsQ29tcG9zaXRpb24oZSx7bm9kZTp0LHBvczpuLHRleHQ6cn0pe2lmKHRoaXMuZ2V0RGVzYyh0KSlyZXR1cm47bGV0IG89dDtmb3IoO28ucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NO289by5wYXJlbnROb2RlKXtmb3IoO28ucHJldmlvdXNTaWJsaW5nOylvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoby5wcmV2aW91c1NpYmxpbmcpO2Zvcig7by5uZXh0U2libGluZzspby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8ubmV4dFNpYmxpbmcpO28ucG1WaWV3RGVzYyYmKG8ucG1WaWV3RGVzYz12b2lkIDApfWxldCBpPW5ldyBDb21wb3NpdGlvblZpZXdEZXNjKHRoaXMsbyx0LHIpO2UuaW5wdXQuY29tcG9zaXRpb25Ob2Rlcy5wdXNoKGkpLHRoaXMuY2hpbGRyZW49cmVwbGFjZU5vZGVzKHRoaXMuY2hpbGRyZW4sbixuK3IubGVuZ3RoLGUsaSl9dXBkYXRlKGUsdCxuLHIpe3JldHVybiEoMz09dGhpcy5kaXJ0eXx8IWUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpKSYmKHRoaXMudXBkYXRlSW5uZXIoZSx0LG4sciksITApfXVwZGF0ZUlubmVyKGUsdCxuLHIpe3RoaXMudXBkYXRlT3V0ZXJEZWNvKHQpLHRoaXMubm9kZT1lLHRoaXMuaW5uZXJEZWNvPW4sdGhpcy5jb250ZW50RE9NJiZ0aGlzLnVwZGF0ZUNoaWxkcmVuKHIsdGhpcy5wb3NBdFN0YXJ0KSx0aGlzLmRpcnR5PTB9dXBkYXRlT3V0ZXJEZWNvKGUpe2lmKHNhbWVPdXRlckRlY28oZSx0aGlzLm91dGVyRGVjbykpcmV0dXJuO2xldCB0PTEhPXRoaXMubm9kZURPTS5ub2RlVHlwZSxuPXRoaXMuZG9tO3RoaXMuZG9tPXBhdGNoT3V0ZXJEZWNvKHRoaXMuZG9tLHRoaXMubm9kZURPTSxjb21wdXRlT3V0ZXJEZWNvKHRoaXMub3V0ZXJEZWNvLHRoaXMubm9kZSx0KSxjb21wdXRlT3V0ZXJEZWNvKGUsdGhpcy5ub2RlLHQpKSx0aGlzLmRvbSE9biYmKG4ucG1WaWV3RGVzYz12b2lkIDAsdGhpcy5kb20ucG1WaWV3RGVzYz10aGlzKSx0aGlzLm91dGVyRGVjbz1lfXNlbGVjdE5vZGUoKXsxPT10aGlzLm5vZGVET00ubm9kZVR5cGUmJih0aGlzLm5vZGVET00uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlIiksIXRoaXMuY29udGVudERPTSYmdGhpcy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGV8fCh0aGlzLm5vZGVET00uZHJhZ2dhYmxlPSEwKSl9ZGVzZWxlY3ROb2RlKCl7MT09dGhpcy5ub2RlRE9NLm5vZGVUeXBlJiYodGhpcy5ub2RlRE9NLmNsYXNzTGlzdC5yZW1vdmUoIlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZSIpLCF0aGlzLmNvbnRlbnRET00mJnRoaXMubm9kZS50eXBlLnNwZWMuZHJhZ2dhYmxlfHx0aGlzLm5vZGVET00ucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKSl9Z2V0IGRvbUF0b20oKXtyZXR1cm4gdGhpcy5ub2RlLmlzQXRvbX19ZnVuY3Rpb24gZG9jVmlld0Rlc2MoZSx0LG4scixvKXthcHBseU91dGVyRGVjbyhyLHQsZSk7bGV0IGk9bmV3IE5vZGVWaWV3RGVzYyh2b2lkIDAsZSx0LG4scixyLHIsbywwKTtyZXR1cm4gaS5jb250ZW50RE9NJiZpLnVwZGF0ZUNoaWxkcmVuKG8sMCksaX1jbGFzcyBUZXh0Vmlld0Rlc2MgZXh0ZW5kcyBOb2RlVmlld0Rlc2N7Y29uc3RydWN0b3IoZSx0LG4scixvLGkscyl7c3VwZXIoZSx0LG4scixvLG51bGwsaSxzLDApfXBhcnNlUnVsZSgpe2xldCBlPXRoaXMubm9kZURPTS5wYXJlbnROb2RlO2Zvcig7ZSYmZSE9dGhpcy5kb20mJiFlLnBtSXNEZWNvOyllPWUucGFyZW50Tm9kZTtyZXR1cm57c2tpcDplfHwhMH19dXBkYXRlKGUsdCxuLHIpe3JldHVybiEoMz09dGhpcy5kaXJ0eXx8MCE9dGhpcy5kaXJ0eSYmIXRoaXMuaW5QYXJlbnQoKXx8IWUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpKSYmKHRoaXMudXBkYXRlT3V0ZXJEZWNvKHQpLDA9PXRoaXMuZGlydHkmJmUudGV4dD09dGhpcy5ub2RlLnRleHR8fGUudGV4dD09dGhpcy5ub2RlRE9NLm5vZGVWYWx1ZXx8KHRoaXMubm9kZURPTS5ub2RlVmFsdWU9ZS50ZXh0LHIudHJhY2tXcml0ZXM9PXRoaXMubm9kZURPTSYmKHIudHJhY2tXcml0ZXM9bnVsbCkpLHRoaXMubm9kZT1lLHRoaXMuZGlydHk9MCwhMCl9aW5QYXJlbnQoKXtsZXQgZT10aGlzLnBhcmVudC5jb250ZW50RE9NO2ZvcihsZXQgdD10aGlzLm5vZGVET007dDt0PXQucGFyZW50Tm9kZSlpZih0PT1lKXJldHVybiEwO3JldHVybiExfWRvbUZyb21Qb3MoZSl7cmV0dXJue25vZGU6dGhpcy5ub2RlRE9NLG9mZnNldDplfX1sb2NhbFBvc0Zyb21ET00oZSx0LG4pe3JldHVybiBlPT10aGlzLm5vZGVET00/dGhpcy5wb3NBdFN0YXJ0K01hdGgubWluKHQsdGhpcy5ub2RlLnRleHQubGVuZ3RoKTpzdXBlci5sb2NhbFBvc0Zyb21ET00oZSx0LG4pfWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiJjaGFyYWN0ZXJEYXRhIiE9ZS50eXBlJiYic2VsZWN0aW9uIiE9ZS50eXBlfXNsaWNlKGUsdCxuKXtsZXQgcj10aGlzLm5vZGUuY3V0KGUsdCksbz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShyLnRleHQpO3JldHVybiBuZXcgVGV4dFZpZXdEZXNjKHRoaXMucGFyZW50LHIsdGhpcy5vdXRlckRlY28sdGhpcy5pbm5lckRlY28sbyxvLG4pfW1hcmtEaXJ0eShlLHQpe3N1cGVyLm1hcmtEaXJ0eShlLHQpLHRoaXMuZG9tPT10aGlzLm5vZGVET018fDAhPWUmJnQhPXRoaXMubm9kZURPTS5ub2RlVmFsdWUubGVuZ3RofHwodGhpcy5kaXJ0eT0zKX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWlzVGV4dChlKXtyZXR1cm4gdGhpcy5ub2RlLnRleHQ9PWV9fWNsYXNzIFRyYWlsaW5nSGFja1ZpZXdEZXNjIGV4dGVuZHMgVmlld0Rlc2N7cGFyc2VSdWxlKCl7cmV0dXJue2lnbm9yZTohMH19bWF0Y2hlc0hhY2soZSl7cmV0dXJuIDA9PXRoaXMuZGlydHkmJnRoaXMuZG9tLm5vZGVOYW1lPT1lfWdldCBkb21BdG9tKCl7cmV0dXJuITB9Z2V0IGlnbm9yZUZvckNvb3Jkcygpe3JldHVybiJJTUciPT10aGlzLmRvbS5ub2RlTmFtZX19Y2xhc3MgQ3VzdG9tTm9kZVZpZXdEZXNjIGV4dGVuZHMgTm9kZVZpZXdEZXNje2NvbnN0cnVjdG9yKGUsdCxuLHIsbyxpLHMsbCxhLGMpe3N1cGVyKGUsdCxuLHIsbyxpLHMsYSxjKSx0aGlzLnNwZWM9bH11cGRhdGUoZSx0LG4scil7aWYoMz09dGhpcy5kaXJ0eSlyZXR1cm4hMTtpZih0aGlzLnNwZWMudXBkYXRlJiYodGhpcy5ub2RlLnR5cGU9PWUudHlwZXx8dGhpcy5zcGVjLm11bHRpVHlwZSkpe2xldCBvPXRoaXMuc3BlYy51cGRhdGUoZSx0LG4pO3JldHVybiBvJiZ0aGlzLnVwZGF0ZUlubmVyKGUsdCxuLHIpLG99cmV0dXJuISghdGhpcy5jb250ZW50RE9NJiYhZS5pc0xlYWYpJiZzdXBlci51cGRhdGUoZSx0LG4scil9c2VsZWN0Tm9kZSgpe3RoaXMuc3BlYy5zZWxlY3ROb2RlP3RoaXMuc3BlYy5zZWxlY3ROb2RlKCk6c3VwZXIuc2VsZWN0Tm9kZSgpfWRlc2VsZWN0Tm9kZSgpe3RoaXMuc3BlYy5kZXNlbGVjdE5vZGU/dGhpcy5zcGVjLmRlc2VsZWN0Tm9kZSgpOnN1cGVyLmRlc2VsZWN0Tm9kZSgpfXNldFNlbGVjdGlvbihlLHQsbixyKXt0aGlzLnNwZWMuc2V0U2VsZWN0aW9uP3RoaXMuc3BlYy5zZXRTZWxlY3Rpb24oZSx0LG4ucm9vdCk6c3VwZXIuc2V0U2VsZWN0aW9uKGUsdCxuLHIpfWRlc3Ryb3koKXt0aGlzLnNwZWMuZGVzdHJveSYmdGhpcy5zcGVjLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9c3RvcEV2ZW50KGUpe3JldHVybiEhdGhpcy5zcGVjLnN0b3BFdmVudCYmdGhpcy5zcGVjLnN0b3BFdmVudChlKX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gdGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uP3RoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihlKTpzdXBlci5pZ25vcmVNdXRhdGlvbihlKX19ZnVuY3Rpb24gcmVuZGVyRGVzY3MoZSx0LG4pe2xldCByPWUuZmlyc3RDaGlsZCxvPSExO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtsZXQgcz10W2ldLGw9cy5kb207aWYobC5wYXJlbnROb2RlPT1lKXtmb3IoO2whPXI7KXI9cm0ociksbz0hMDtyPXIubmV4dFNpYmxpbmd9ZWxzZSBvPSEwLGUuaW5zZXJ0QmVmb3JlKGwscik7aWYocyBpbnN0YW5jZW9mIE1hcmtWaWV3RGVzYyl7bGV0IHQ9cj9yLnByZXZpb3VzU2libGluZzplLmxhc3RDaGlsZDtyZW5kZXJEZXNjcyhzLmNvbnRlbnRET00scy5jaGlsZHJlbixuKSxyPXQ/dC5uZXh0U2libGluZzplLmZpcnN0Q2hpbGR9fWZvcig7cjspcj1ybShyKSxvPSEwO28mJm4udHJhY2tXcml0ZXM9PWUmJihuLnRyYWNrV3JpdGVzPW51bGwpfWNvbnN0IE91dGVyRGVjb0xldmVsPWZ1bmN0aW9uKGUpe2UmJih0aGlzLm5vZGVOYW1lPWUpfTtPdXRlckRlY29MZXZlbC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBydD1bbmV3IE91dGVyRGVjb0xldmVsXTtmdW5jdGlvbiBjb21wdXRlT3V0ZXJEZWNvKGUsdCxuKXtpZigwPT1lLmxlbmd0aClyZXR1cm4gcnQ7bGV0IHI9bj9ydFswXTpuZXcgT3V0ZXJEZWNvTGV2ZWwsbz1bcl07Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2xldCBzPWVbaV0udHlwZS5hdHRycztpZihzKXtzLm5vZGVOYW1lJiZvLnB1c2gocj1uZXcgT3V0ZXJEZWNvTGV2ZWwocy5ub2RlTmFtZSkpO2ZvcihsZXQgZSBpbiBzKXtsZXQgaT1zW2VdO251bGwhPWkmJihuJiYxPT1vLmxlbmd0aCYmby5wdXNoKHI9bmV3IE91dGVyRGVjb0xldmVsKHQuaXNJbmxpbmU/InNwYW4iOiJkaXYiKSksImNsYXNzIj09ZT9yLmNsYXNzPShyLmNsYXNzP3IuY2xhc3MrIiAiOiIiKStpOiJzdHlsZSI9PWU/ci5zdHlsZT0oci5zdHlsZT9yLnN0eWxlKyI7IjoiIikraToibm9kZU5hbWUiIT1lJiYocltlXT1pKSl9fX1yZXR1cm4gb31mdW5jdGlvbiBwYXRjaE91dGVyRGVjbyhlLHQsbixyKXtpZihuPT1ydCYmcj09cnQpcmV0dXJuIHQ7bGV0IG89dDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7bGV0IGk9clt0XSxzPW5bdF07aWYodCl7bGV0IHQ7cyYmcy5ub2RlTmFtZT09aS5ub2RlTmFtZSYmbyE9ZSYmKHQ9by5wYXJlbnROb2RlKSYmdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT1pLm5vZGVOYW1lfHwodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGkubm9kZU5hbWUpLHQucG1Jc0RlY289ITAsdC5hcHBlbmRDaGlsZChvKSxzPXJ0WzBdKSxvPXR9cGF0Y2hBdHRyaWJ1dGVzKG8sc3x8cnRbMF0saSl9cmV0dXJuIG99ZnVuY3Rpb24gcGF0Y2hBdHRyaWJ1dGVzKGUsdCxuKXtmb3IobGV0IHIgaW4gdCkiY2xhc3MiPT1yfHwic3R5bGUiPT1yfHwibm9kZU5hbWUiPT1yfHxyIGluIG58fGUucmVtb3ZlQXR0cmlidXRlKHIpO2ZvcihsZXQgciBpbiBuKSJjbGFzcyIhPXImJiJzdHlsZSIhPXImJiJub2RlTmFtZSIhPXImJm5bcl0hPXRbcl0mJmUuc2V0QXR0cmlidXRlKHIsbltyXSk7aWYodC5jbGFzcyE9bi5jbGFzcyl7bGV0IHI9dC5jbGFzcz90LmNsYXNzLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pOltdLG89bi5jbGFzcz9uLmNsYXNzLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pOltdO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKS0xPT1vLmluZGV4T2Yoclt0XSkmJmUuY2xhc3NMaXN0LnJlbW92ZShyW3RdKTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyktMT09ci5pbmRleE9mKG9bdF0pJiZlLmNsYXNzTGlzdC5hZGQob1t0XSk7MD09ZS5jbGFzc0xpc3QubGVuZ3RoJiZlLnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX1pZih0LnN0eWxlIT1uLnN0eWxlKXtpZih0LnN0eWxlKXtsZXQgbixyPS9ccyooW1x3XC1ceGExLVx1ZmZmZl0rKVxzKjooPzoiKD86XFwufFteIl0pKiJ8Jyg/OlxcLnxbXiddKSonfFwoLio/XCl8W147XSkqL2c7Zm9yKDtuPXIuZXhlYyh0LnN0eWxlKTspZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuWzFdKX1uLnN0eWxlJiYoZS5zdHlsZS5jc3NUZXh0Kz1uLnN0eWxlKX19ZnVuY3Rpb24gYXBwbHlPdXRlckRlY28oZSx0LG4pe3JldHVybiBwYXRjaE91dGVyRGVjbyhlLGUscnQsY29tcHV0ZU91dGVyRGVjbyh0LG4sMSE9ZS5ub2RlVHlwZSkpfWZ1bmN0aW9uIHNhbWVPdXRlckRlY28oZSx0KXtpZihlLmxlbmd0aCE9dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYoIWVbbl0udHlwZS5lcSh0W25dLnR5cGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHJtKGUpe2xldCB0PWUubmV4dFNpYmxpbmc7cmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSx0fWNsYXNzIFZpZXdUcmVlVXBkYXRlcntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5sb2NrPXQsdGhpcy52aWV3PW4sdGhpcy5pbmRleD0wLHRoaXMuc3RhY2s9W10sdGhpcy5jaGFuZ2VkPSExLHRoaXMudG9wPWUsdGhpcy5wcmVNYXRjaD1mdW5jdGlvbihlLHQpe2xldCBuPXQscj1uLmNoaWxkcmVuLmxlbmd0aCxvPWUuY2hpbGRDb3VudCxpPW5ldyBNYXAscz1bXTtlOmZvcig7bz4wOyl7bGV0IGw7Zm9yKDs7KWlmKHIpe2xldCBlPW4uY2hpbGRyZW5bci0xXTtpZighKGUgaW5zdGFuY2VvZiBNYXJrVmlld0Rlc2MpKXtsPWUsci0tO2JyZWFrfW49ZSxyPWUuY2hpbGRyZW4ubGVuZ3RofWVsc2V7aWYobj09dClicmVhayBlO3I9bi5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihuKSxuPW4ucGFyZW50fWxldCBhPWwubm9kZTtpZihhKXtpZihhIT1lLmNoaWxkKG8tMSkpYnJlYWs7LS1vLGkuc2V0KGwsbykscy5wdXNoKGwpfX1yZXR1cm57aW5kZXg6byxtYXRjaGVkOmksbWF0Y2hlczpzLnJldmVyc2UoKX19KGUubm9kZS5jb250ZW50LGUpfWRlc3Ryb3lCZXR3ZWVuKGUsdCl7aWYoZSE9dCl7Zm9yKGxldCBuPWU7bjx0O24rKyl0aGlzLnRvcC5jaGlsZHJlbltuXS5kZXN0cm95KCk7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKGUsdC1lKSx0aGlzLmNoYW5nZWQ9ITB9fWRlc3Ryb3lSZXN0KCl7dGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aCl9c3luY1RvTWFya3MoZSx0LG4scil7bGV0IG89MCxpPXRoaXMuc3RhY2subGVuZ3RoPj4xLHM9TWF0aC5taW4oaSxlLmxlbmd0aCk7Zm9yKDtvPHMmJihvPT1pLTE/dGhpcy50b3A6dGhpcy5zdGFja1tvKzE8PDFdKS5tYXRjaGVzTWFyayhlW29dKSYmITEhPT1lW29dLnR5cGUuc3BlYy5zcGFubmluZzspbysrO2Zvcig7bzxpOyl0aGlzLmRlc3Ryb3lSZXN0KCksdGhpcy50b3AuZGlydHk9MCx0aGlzLmluZGV4PXRoaXMuc3RhY2sucG9wKCksdGhpcy50b3A9dGhpcy5zdGFjay5wb3AoKSxpLS07Zm9yKDtpPGUubGVuZ3RoOyl7dGhpcy5zdGFjay5wdXNoKHRoaXMudG9wLHRoaXMuaW5kZXgrMSk7bGV0IG89LTEscz10aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGg7cjx0aGlzLnByZU1hdGNoLmluZGV4JiYocz1NYXRoLm1pbih0aGlzLmluZGV4KzMscykpO2ZvcihsZXQgdD10aGlzLmluZGV4O3Q8czt0Kyspe2xldCBuPXRoaXMudG9wLmNoaWxkcmVuW3RdO2lmKG4ubWF0Y2hlc01hcmsoZVtpXSkmJiF0aGlzLmlzTG9ja2VkKG4uZG9tKSl7bz10O2JyZWFrfX1pZihvPi0xKW8+dGhpcy5pbmRleCYmKHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsbykpLHRoaXMudG9wPXRoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdO2Vsc2V7bGV0IHI9TWFya1ZpZXdEZXNjLmNyZWF0ZSh0aGlzLnRvcCxlW2ldLHQsbik7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgsMCxyKSx0aGlzLnRvcD1yLHRoaXMuY2hhbmdlZD0hMH10aGlzLmluZGV4PTAsaSsrfX1maW5kTm9kZU1hdGNoKGUsdCxuLHIpe2xldCBvLGk9LTE7aWYocj49dGhpcy5wcmVNYXRjaC5pbmRleCYmKG89dGhpcy5wcmVNYXRjaC5tYXRjaGVzW3ItdGhpcy5wcmVNYXRjaC5pbmRleF0pLnBhcmVudD09dGhpcy50b3AmJm8ubWF0Y2hlc05vZGUoZSx0LG4pKWk9dGhpcy50b3AuY2hpbGRyZW4uaW5kZXhPZihvLHRoaXMuaW5kZXgpO2Vsc2UgZm9yKGxldCByPXRoaXMuaW5kZXgsbz1NYXRoLm1pbih0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGgscis1KTtyPG87cisrKXtsZXQgbz10aGlzLnRvcC5jaGlsZHJlbltyXTtpZihvLm1hdGNoZXNOb2RlKGUsdCxuKSYmIXRoaXMucHJlTWF0Y2gubWF0Y2hlZC5oYXMobykpe2k9cjticmVha319cmV0dXJuIShpPDApJiYodGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGkpLHRoaXMuaW5kZXgrKywhMCl9dXBkYXRlTm9kZUF0KGUsdCxuLHIsbyl7bGV0IGk9dGhpcy50b3AuY2hpbGRyZW5bcl07cmV0dXJuIDM9PWkuZGlydHkmJmkuZG9tPT1pLmNvbnRlbnRET00mJihpLmRpcnR5PTIpLCEhaS51cGRhdGUoZSx0LG4sbykmJih0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsciksdGhpcy5pbmRleCsrLCEwKX1maW5kSW5kZXhXaXRoQ2hpbGQoZSl7Zm9yKDs7KXtsZXQgdD1lLnBhcmVudE5vZGU7aWYoIXQpcmV0dXJuLTE7aWYodD09dGhpcy50b3AuY29udGVudERPTSl7bGV0IHQ9ZS5wbVZpZXdEZXNjO2lmKHQpZm9yKGxldCBlPXRoaXMuaW5kZXg7ZTx0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGg7ZSsrKWlmKHRoaXMudG9wLmNoaWxkcmVuW2VdPT10KXJldHVybiBlO3JldHVybi0xfWU9dH19dXBkYXRlTmV4dE5vZGUoZSx0LG4scixvLGkpe2ZvcihsZXQgcz10aGlzLmluZGV4O3M8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoO3MrKyl7bGV0IGw9dGhpcy50b3AuY2hpbGRyZW5bc107aWYobCBpbnN0YW5jZW9mIE5vZGVWaWV3RGVzYyl7bGV0IGE9dGhpcy5wcmVNYXRjaC5tYXRjaGVkLmdldChsKTtpZihudWxsIT1hJiZhIT1vKXJldHVybiExO2xldCBjLGQ9bC5kb20scD10aGlzLmlzTG9ja2VkKGQpJiYhKGUuaXNUZXh0JiZsLm5vZGUmJmwubm9kZS5pc1RleHQmJmwubm9kZURPTS5ub2RlVmFsdWU9PWUudGV4dCYmMyE9bC5kaXJ0eSYmc2FtZU91dGVyRGVjbyh0LGwub3V0ZXJEZWNvKSk7aWYoIXAmJmwudXBkYXRlKGUsdCxuLHIpKXJldHVybiB0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgscyksbC5kb20hPWQmJih0aGlzLmNoYW5nZWQ9ITApLHRoaXMuaW5kZXgrKywhMDtpZighcCYmKGM9dGhpcy5yZWNyZWF0ZVdyYXBwZXIobCxlLHQsbixyLGkpKSlyZXR1cm4gdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LHMpLHRoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdPWMsYy5jb250ZW50RE9NJiYoYy5kaXJ0eT0yLGMudXBkYXRlQ2hpbGRyZW4ocixpKzEpLGMuZGlydHk9MCksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuaW5kZXgrKywhMDticmVha319cmV0dXJuITF9cmVjcmVhdGVXcmFwcGVyKGUsdCxuLHIsbyxpKXtpZihlLmRpcnR5fHx0LmlzQXRvbXx8IWUuY2hpbGRyZW4ubGVuZ3RofHwhZS5ub2RlLmNvbnRlbnQuZXEodC5jb250ZW50KXx8IXNhbWVPdXRlckRlY28obixlLm91dGVyRGVjbyl8fCFyLmVxKGUuaW5uZXJEZWNvKSlyZXR1cm4gbnVsbDtsZXQgcz1Ob2RlVmlld0Rlc2MuY3JlYXRlKHRoaXMudG9wLHQsbixyLG8saSk7aWYocy5jb250ZW50RE9NKXtzLmNoaWxkcmVuPWUuY2hpbGRyZW4sZS5jaGlsZHJlbj1bXTtmb3IobGV0IGUgb2Ygcy5jaGlsZHJlbillLnBhcmVudD1zfXJldHVybiBlLmRlc3Ryb3koKSxzfWFkZE5vZGUoZSx0LG4scixvKXtsZXQgaT1Ob2RlVmlld0Rlc2MuY3JlYXRlKHRoaXMudG9wLGUsdCxuLHIsbyk7aS5jb250ZW50RE9NJiZpLnVwZGF0ZUNoaWxkcmVuKHIsbysxKSx0aGlzLnRvcC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCsrLDAsaSksdGhpcy5jaGFuZ2VkPSEwfXBsYWNlV2lkZ2V0KGUsdCxuKXtsZXQgcj10aGlzLmluZGV4PHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aD90aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XTpudWxsO2lmKCFyfHwhci5tYXRjaGVzV2lkZ2V0KGUpfHxlIT1yLndpZGdldCYmci53aWRnZXQudHlwZS50b0RPTS5wYXJlbnROb2RlKXtsZXQgcj1uZXcgV2lkZ2V0Vmlld0Rlc2ModGhpcy50b3AsZSx0LG4pO3RoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxyKSx0aGlzLmNoYW5nZWQ9ITB9ZWxzZSB0aGlzLmluZGV4Kyt9YWRkVGV4dGJsb2NrSGFja3MoKXtsZXQgZT10aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4LTFdLHQ9dGhpcy50b3A7Zm9yKDtlIGluc3RhbmNlb2YgTWFya1ZpZXdEZXNjOyl0PWUsZT10LmNoaWxkcmVuW3QuY2hpbGRyZW4ubGVuZ3RoLTFdOyghZXx8IShlIGluc3RhbmNlb2YgVGV4dFZpZXdEZXNjKXx8L1xuJC8udGVzdChlLm5vZGUudGV4dCl8fHRoaXMudmlldy5yZXF1aXJlc0dlY2tvSGFja05vZGUmJi9ccyQvLnRlc3QoZS5ub2RlLnRleHQpKSYmKChqZXx8VmUpJiZlJiYiZmFsc2UiPT1lLmRvbS5jb250ZW50RWRpdGFibGUmJnRoaXMuYWRkSGFja05vZGUoIklNRyIsdCksdGhpcy5hZGRIYWNrTm9kZSgiQlIiLHRoaXMudG9wKSl9YWRkSGFja05vZGUoZSx0KXtpZih0PT10aGlzLnRvcCYmdGhpcy5pbmRleDx0LmNoaWxkcmVuLmxlbmd0aCYmdC5jaGlsZHJlblt0aGlzLmluZGV4XS5tYXRjaGVzSGFjayhlKSl0aGlzLmluZGV4Kys7ZWxzZXtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpOyJJTUciPT1lJiYobi5jbGFzc05hbWU9IlByb3NlTWlycm9yLXNlcGFyYXRvciIsbi5hbHQ9IiIpLCJCUiI9PWUmJihuLmNsYXNzTmFtZT0iUHJvc2VNaXJyb3ItdHJhaWxpbmdCcmVhayIpO2xldCByPW5ldyBUcmFpbGluZ0hhY2tWaWV3RGVzYyh0aGlzLnRvcCxbXSxuLG51bGwpO3QhPXRoaXMudG9wP3QuY2hpbGRyZW4ucHVzaChyKTp0LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxyKSx0aGlzLmNoYW5nZWQ9ITB9fWlzTG9ja2VkKGUpe3JldHVybiB0aGlzLmxvY2smJihlPT10aGlzLmxvY2t8fDE9PWUubm9kZVR5cGUmJmUuY29udGFpbnModGhpcy5sb2NrLnBhcmVudE5vZGUpKX19ZnVuY3Rpb24gY29tcGFyZVNpZGUoZSx0KXtyZXR1cm4gZS50eXBlLnNpZGUtdC50eXBlLnNpZGV9ZnVuY3Rpb24gcmVwbGFjZU5vZGVzKGUsdCxuLHIsbyl7bGV0IGk9W107Zm9yKGxldCBzPTAsbD0wO3M8ZS5sZW5ndGg7cysrKXtsZXQgYT1lW3NdLGM9bCxkPWwrPWEuc2l6ZTtjPj1ufHxkPD10P2kucHVzaChhKTooYzx0JiZpLnB1c2goYS5zbGljZSgwLHQtYyxyKSksbyYmKGkucHVzaChvKSxvPXZvaWQgMCksZD5uJiZpLnB1c2goYS5zbGljZShuLWMsYS5zaXplLHIpKSl9cmV0dXJuIGl9ZnVuY3Rpb24gc2VsZWN0aW9uRnJvbURPTShlLHQ9bnVsbCl7bGV0IG49ZS5kb21TZWxlY3Rpb25SYW5nZSgpLHI9ZS5zdGF0ZS5kb2M7aWYoIW4uZm9jdXNOb2RlKXJldHVybiBudWxsO2xldCBvPWUuZG9jVmlldy5uZWFyZXN0RGVzYyhuLmZvY3VzTm9kZSksaT1vJiYwPT1vLnNpemUscz1lLmRvY1ZpZXcucG9zRnJvbURPTShuLmZvY3VzTm9kZSxuLmZvY3VzT2Zmc2V0LDEpO2lmKHM8MClyZXR1cm4gbnVsbDtsZXQgbCxhLGM9ci5yZXNvbHZlKHMpO2lmKHNlbGVjdGlvbkNvbGxhcHNlZChuKSl7Zm9yKGw9cztvJiYhby5ub2RlOylvPW8ucGFyZW50O2xldCBlPW8ubm9kZTtpZihvJiZlLmlzQXRvbSYmTm9kZVNlbGVjdGlvbi5pc1NlbGVjdGFibGUoZSkmJm8ucGFyZW50JiYoIWUuaXNJbmxpbmV8fCFmdW5jdGlvbihlLHQsbil7Zm9yKGxldCByPTA9PXQsbz10PT1ub2RlU2l6ZShlKTtyfHxvOyl7aWYoZT09bilyZXR1cm4hMDtsZXQgdD1kb21JbmRleChlKTtpZighKGU9ZS5wYXJlbnROb2RlKSlyZXR1cm4hMTtyPXImJjA9PXQsbz1vJiZ0PT1ub2RlU2l6ZShlKX19KG4uZm9jdXNOb2RlLG4uZm9jdXNPZmZzZXQsby5kb20pKSl7bGV0IGU9by5wb3NCZWZvcmU7YT1uZXcgTm9kZVNlbGVjdGlvbihzPT1lP2M6ci5yZXNvbHZlKGUpKX19ZWxzZXtpZihuIGluc3RhbmNlb2YgZS5kb20ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TZWxlY3Rpb24mJm4ucmFuZ2VDb3VudD4xKXtsZXQgdD1zLG89cztmb3IobGV0IHI9MDtyPG4ucmFuZ2VDb3VudDtyKyspe2xldCBpPW4uZ2V0UmFuZ2VBdChyKTt0PU1hdGgubWluKHQsZS5kb2NWaWV3LnBvc0Zyb21ET00oaS5zdGFydENvbnRhaW5lcixpLnN0YXJ0T2Zmc2V0LDEpKSxvPU1hdGgubWF4KG8sZS5kb2NWaWV3LnBvc0Zyb21ET00oaS5lbmRDb250YWluZXIsaS5lbmRPZmZzZXQsLTEpKX1pZih0PDApcmV0dXJuIG51bGw7W2wsc109bz09ZS5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yP1tvLHRdOlt0LG9dLGM9ci5yZXNvbHZlKHMpfWVsc2UgbD1lLmRvY1ZpZXcucG9zRnJvbURPTShuLmFuY2hvck5vZGUsbi5hbmNob3JPZmZzZXQsMSk7aWYobDwwKXJldHVybiBudWxsfWxldCBkPXIucmVzb2x2ZShsKTtpZighYSl7YT1zZWxlY3Rpb25CZXR3ZWVuKGUsZCxjLCJwb2ludGVyIj09dHx8ZS5zdGF0ZS5zZWxlY3Rpb24uaGVhZDxjLnBvcyYmIWk/MTotMSl9cmV0dXJuIGF9ZnVuY3Rpb24gZWRpdG9yT3duc1NlbGVjdGlvbihlKXtyZXR1cm4gZS5lZGl0YWJsZT9lLmhhc0ZvY3VzKCk6aGFzU2VsZWN0aW9uKGUpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNvbnRhaW5zKGUuZG9tKX1mdW5jdGlvbiBzZWxlY3Rpb25Ub0RPTShlLHQ9ITEpe2xldCBuPWUuc3RhdGUuc2VsZWN0aW9uO2lmKHN5bmNOb2RlU2VsZWN0aW9uKGUsbiksZWRpdG9yT3duc1NlbGVjdGlvbihlKSl7aWYoIXQmJmUuaW5wdXQubW91c2VEb3duJiZlLmlucHV0Lm1vdXNlRG93bi5hbGxvd0RlZmF1bHQmJlZlKXtsZXQgdD1lLmRvbVNlbGVjdGlvblJhbmdlKCksbj1lLmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb247aWYodC5hbmNob3JOb2RlJiZuLmFuY2hvck5vZGUmJmlzRXF1aXZhbGVudFBvc2l0aW9uKHQuYW5jaG9yTm9kZSx0LmFuY2hvck9mZnNldCxuLmFuY2hvck5vZGUsbi5hbmNob3JPZmZzZXQpKXJldHVybiBlLmlucHV0Lm1vdXNlRG93bi5kZWxheWVkU2VsZWN0aW9uU3luYz0hMCx2b2lkIGUuZG9tT2JzZXJ2ZXIuc2V0Q3VyU2VsZWN0aW9uKCl9aWYoZS5kb21PYnNlcnZlci5kaXNjb25uZWN0U2VsZWN0aW9uKCksZS5jdXJzb3JXcmFwcGVyKSFmdW5jdGlvbihlKXtsZXQgdD1lLmRvbVNlbGVjdGlvbigpO2lmKCF0KXJldHVybjtsZXQgbj1lLmN1cnNvcldyYXBwZXIuZG9tLHI9IklNRyI9PW4ubm9kZU5hbWU7cj90LmNvbGxhcHNlKG4ucGFyZW50Tm9kZSxkb21JbmRleChuKSsxKTp0LmNvbGxhcHNlKG4sMCk7IXImJiFlLnN0YXRlLnNlbGVjdGlvbi52aXNpYmxlJiZ6ZSYmQmU8PTExJiYobi5kaXNhYmxlZD0hMCxuLmRpc2FibGVkPSExKX0oZSk7ZWxzZXtsZXQgcixvLHthbmNob3I6aSxoZWFkOnN9PW47IW90fHxuIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbnx8KG4uJGZyb20ucGFyZW50LmlubGluZUNvbnRlbnR8fChyPXRlbXBvcmFyaWx5RWRpdGFibGVOZWFyKGUsbi5mcm9tKSksbi5lbXB0eXx8bi4kZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudHx8KG89dGVtcG9yYXJpbHlFZGl0YWJsZU5lYXIoZSxuLnRvKSkpLGUuZG9jVmlldy5zZXRTZWxlY3Rpb24oaSxzLGUsdCksb3QmJihyJiZyZXNldEVkaXRhYmxlKHIpLG8mJnJlc2V0RWRpdGFibGUobykpLG4udmlzaWJsZT9lLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uIik6KGUuZG9tLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24iKSwib25zZWxlY3Rpb25jaGFuZ2UiaW4gZG9jdW1lbnQmJmZ1bmN0aW9uKGUpe2xldCB0PWUuZG9tLm93bmVyRG9jdW1lbnQ7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGUuaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkKTtsZXQgbj1lLmRvbVNlbGVjdGlvblJhbmdlKCkscj1uLmFuY2hvck5vZGUsbz1uLmFuY2hvck9mZnNldDt0LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsZS5pbnB1dC5oaWRlU2VsZWN0aW9uR3VhcmQ9KCk9PntuLmFuY2hvck5vZGU9PXImJm4uYW5jaG9yT2Zmc2V0PT1vfHwodC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGUuaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkKSxzZXRUaW1lb3V0KCgpPT57ZWRpdG9yT3duc1NlbGVjdGlvbihlKSYmIWUuc3RhdGUuc2VsZWN0aW9uLnZpc2libGV8fGUuZG9tLmNsYXNzTGlzdC5yZW1vdmUoIlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24iKX0sMjApKX0pfShlKSl9ZS5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKSxlLmRvbU9ic2VydmVyLmNvbm5lY3RTZWxlY3Rpb24oKX19Y29uc3Qgb3Q9amV8fFZlJiZfZTw2MztmdW5jdGlvbiB0ZW1wb3JhcmlseUVkaXRhYmxlTmVhcihlLHQpe2xldHtub2RlOm4sb2Zmc2V0OnJ9PWUuZG9jVmlldy5kb21Gcm9tUG9zKHQsMCksbz1yPG4uY2hpbGROb2Rlcy5sZW5ndGg/bi5jaGlsZE5vZGVzW3JdOm51bGwsaT1yP24uY2hpbGROb2Rlc1tyLTFdOm51bGw7aWYoamUmJm8mJiJmYWxzZSI9PW8uY29udGVudEVkaXRhYmxlKXJldHVybiBzZXRFZGl0YWJsZShvKTtpZighKG8mJiJmYWxzZSIhPW8uY29udGVudEVkaXRhYmxlfHxpJiYiZmFsc2UiIT1pLmNvbnRlbnRFZGl0YWJsZSkpe2lmKG8pcmV0dXJuIHNldEVkaXRhYmxlKG8pO2lmKGkpcmV0dXJuIHNldEVkaXRhYmxlKGkpfX1mdW5jdGlvbiBzZXRFZGl0YWJsZShlKXtyZXR1cm4gZS5jb250ZW50RWRpdGFibGU9InRydWUiLGplJiZlLmRyYWdnYWJsZSYmKGUuZHJhZ2dhYmxlPSExLGUud2FzRHJhZ2dhYmxlPSEwKSxlfWZ1bmN0aW9uIHJlc2V0RWRpdGFibGUoZSl7ZS5jb250ZW50RWRpdGFibGU9ImZhbHNlIixlLndhc0RyYWdnYWJsZSYmKGUuZHJhZ2dhYmxlPSEwLGUud2FzRHJhZ2dhYmxlPW51bGwpfWZ1bmN0aW9uIHN5bmNOb2RlU2VsZWN0aW9uKGUsdCl7aWYodCBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pe2xldCBuPWUuZG9jVmlldy5kZXNjQXQodC5mcm9tKTtuIT1lLmxhc3RTZWxlY3RlZFZpZXdEZXNjJiYoY2xlYXJOb2RlU2VsZWN0aW9uKGUpLG4mJm4uc2VsZWN0Tm9kZSgpLGUubGFzdFNlbGVjdGVkVmlld0Rlc2M9bil9ZWxzZSBjbGVhck5vZGVTZWxlY3Rpb24oZSl9ZnVuY3Rpb24gY2xlYXJOb2RlU2VsZWN0aW9uKGUpe2UubGFzdFNlbGVjdGVkVmlld0Rlc2MmJihlLmxhc3RTZWxlY3RlZFZpZXdEZXNjLnBhcmVudCYmZS5sYXN0U2VsZWN0ZWRWaWV3RGVzYy5kZXNlbGVjdE5vZGUoKSxlLmxhc3RTZWxlY3RlZFZpZXdEZXNjPXZvaWQgMCl9ZnVuY3Rpb24gc2VsZWN0aW9uQmV0d2VlbihlLHQsbixyKXtyZXR1cm4gZS5zb21lUHJvcCgiY3JlYXRlU2VsZWN0aW9uQmV0d2VlbiIscj0+cihlLHQsbikpfHxUZXh0U2VsZWN0aW9uLmJldHdlZW4odCxuLHIpfWZ1bmN0aW9uIGhhc0ZvY3VzQW5kU2VsZWN0aW9uKGUpe3JldHVybiEoZS5lZGl0YWJsZSYmIWUuaGFzRm9jdXMoKSkmJmhhc1NlbGVjdGlvbihlKX1mdW5jdGlvbiBoYXNTZWxlY3Rpb24oZSl7bGV0IHQ9ZS5kb21TZWxlY3Rpb25SYW5nZSgpO2lmKCF0LmFuY2hvck5vZGUpcmV0dXJuITE7dHJ5e3JldHVybiBlLmRvbS5jb250YWlucygzPT10LmFuY2hvck5vZGUubm9kZVR5cGU/dC5hbmNob3JOb2RlLnBhcmVudE5vZGU6dC5hbmNob3JOb2RlKSYmKGUuZWRpdGFibGV8fGUuZG9tLmNvbnRhaW5zKDM9PXQuZm9jdXNOb2RlLm5vZGVUeXBlP3QuZm9jdXNOb2RlLnBhcmVudE5vZGU6dC5mb2N1c05vZGUpKX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gbW92ZVNlbGVjdGlvbkJsb2NrKGUsdCl7bGV0eyRhbmNob3I6biwkaGVhZDpyfT1lLnNlbGVjdGlvbixvPXQ+MD9uLm1heChyKTpuLm1pbihyKSxpPW8ucGFyZW50LmlubGluZUNvbnRlbnQ/by5kZXB0aD9lLmRvYy5yZXNvbHZlKHQ+MD9vLmFmdGVyKCk6by5iZWZvcmUoKSk6bnVsbDpvO3JldHVybiBpJiZTZWxlY3Rpb24uZmluZEZyb20oaSx0KX1mdW5jdGlvbiBhcHBseShlLHQpe3JldHVybiBlLmRpc3BhdGNoKGUuc3RhdGUudHIuc2V0U2VsZWN0aW9uKHQpLnNjcm9sbEludG9WaWV3KCkpLCEwfWZ1bmN0aW9uIHNlbGVjdEhvcml6b250YWxseShlLHQsbil7bGV0IHI9ZS5zdGF0ZS5zZWxlY3Rpb247aWYoIShyIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbikpe2lmKHIgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uJiZyLm5vZGUuaXNJbmxpbmUpcmV0dXJuIGFwcGx5KGUsbmV3IFRleHRTZWxlY3Rpb24odD4wP3IuJHRvOnIuJGZyb20pKTt7bGV0IG49bW92ZVNlbGVjdGlvbkJsb2NrKGUuc3RhdGUsdCk7cmV0dXJuISFuJiZhcHBseShlLG4pfX1pZihuLmluZGV4T2YoInMiKT4tMSl7bGV0eyRoZWFkOm59PXIsbz1uLnRleHRPZmZzZXQ/bnVsbDp0PDA/bi5ub2RlQmVmb3JlOm4ubm9kZUFmdGVyO2lmKCFvfHxvLmlzVGV4dHx8IW8uaXNMZWFmKXJldHVybiExO2xldCBpPWUuc3RhdGUuZG9jLnJlc29sdmUobi5wb3Mrby5ub2RlU2l6ZSoodDwwPy0xOjEpKTtyZXR1cm4gYXBwbHkoZSxuZXcgVGV4dFNlbGVjdGlvbihyLiRhbmNob3IsaSkpfWlmKCFyLmVtcHR5KXJldHVybiExO2lmKGUuZW5kT2ZUZXh0YmxvY2sodD4wPyJmb3J3YXJkIjoiYmFja3dhcmQiKSl7bGV0IG49bW92ZVNlbGVjdGlvbkJsb2NrKGUuc3RhdGUsdCk7cmV0dXJuISEobiYmbiBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pJiZhcHBseShlLG4pfWlmKCEoVWUmJm4uaW5kZXhPZigibSIpPi0xKSl7bGV0IG4sbz1yLiRoZWFkLGk9by50ZXh0T2Zmc2V0P251bGw6dDwwP28ubm9kZUJlZm9yZTpvLm5vZGVBZnRlcjtpZighaXx8aS5pc1RleHQpcmV0dXJuITE7bGV0IHM9dDwwP28ucG9zLWkubm9kZVNpemU6by5wb3M7cmV0dXJuISEoaS5pc0F0b218fChuPWUuZG9jVmlldy5kZXNjQXQocykpJiYhbi5jb250ZW50RE9NKSYmKE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGkpP2FwcGx5KGUsbmV3IE5vZGVTZWxlY3Rpb24odDwwP2Uuc3RhdGUuZG9jLnJlc29sdmUoby5wb3MtaS5ub2RlU2l6ZSk6bykpOiEhSmUmJmFwcGx5KGUsbmV3IFRleHRTZWxlY3Rpb24oZS5zdGF0ZS5kb2MucmVzb2x2ZSh0PDA/czpzK2kubm9kZVNpemUpKSkpfX1mdW5jdGlvbiBub2RlTGVuKGUpe3JldHVybiAzPT1lLm5vZGVUeXBlP2Uubm9kZVZhbHVlLmxlbmd0aDplLmNoaWxkTm9kZXMubGVuZ3RofWZ1bmN0aW9uIGlzSWdub3JhYmxlKGUsdCl7bGV0IG49ZS5wbVZpZXdEZXNjO3JldHVybiBuJiYwPT1uLnNpemUmJih0PDB8fGUubmV4dFNpYmxpbmd8fCJCUiIhPWUubm9kZU5hbWUpfWZ1bmN0aW9uIHNraXBJZ25vcmVkTm9kZXMoZSx0KXtyZXR1cm4gdDwwP2Z1bmN0aW9uKGUpe2xldCB0PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxuPXQuZm9jdXNOb2RlLHI9dC5mb2N1c09mZnNldDtpZighbilyZXR1cm47bGV0IG8saSxzPSExO0ZlJiYxPT1uLm5vZGVUeXBlJiZyPG5vZGVMZW4obikmJmlzSWdub3JhYmxlKG4uY2hpbGROb2Rlc1tyXSwtMSkmJihzPSEwKTtmb3IoOzspaWYocj4wKXtpZigxIT1uLm5vZGVUeXBlKWJyZWFrO3tsZXQgZT1uLmNoaWxkTm9kZXNbci0xXTtpZihpc0lnbm9yYWJsZShlLC0xKSlvPW4saT0tLXI7ZWxzZXtpZigzIT1lLm5vZGVUeXBlKWJyZWFrO249ZSxyPW4ubm9kZVZhbHVlLmxlbmd0aH19fWVsc2V7aWYoaXNCbG9ja05vZGUobikpYnJlYWs7e2xldCB0PW4ucHJldmlvdXNTaWJsaW5nO2Zvcig7dCYmaXNJZ25vcmFibGUodCwtMSk7KW89bi5wYXJlbnROb2RlLGk9ZG9tSW5kZXgodCksdD10LnByZXZpb3VzU2libGluZztpZih0KW49dCxyPW5vZGVMZW4obik7ZWxzZXtpZihuPW4ucGFyZW50Tm9kZSxuPT1lLmRvbSlicmVhaztyPTB9fX1zP3NldFNlbEZvY3VzKGUsbixyKTpvJiZzZXRTZWxGb2N1cyhlLG8saSl9KGUpOmZ1bmN0aW9uKGUpe2xldCB0PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxuPXQuZm9jdXNOb2RlLHI9dC5mb2N1c09mZnNldDtpZighbilyZXR1cm47bGV0IG8saSxzPW5vZGVMZW4obik7Zm9yKDs7KWlmKHI8cyl7aWYoMSE9bi5ub2RlVHlwZSlicmVhaztpZighaXNJZ25vcmFibGUobi5jaGlsZE5vZGVzW3JdLDEpKWJyZWFrO289bixpPSsrcn1lbHNle2lmKGlzQmxvY2tOb2RlKG4pKWJyZWFrO3tsZXQgdD1uLm5leHRTaWJsaW5nO2Zvcig7dCYmaXNJZ25vcmFibGUodCwxKTspbz10LnBhcmVudE5vZGUsaT1kb21JbmRleCh0KSsxLHQ9dC5uZXh0U2libGluZztpZih0KW49dCxyPTAscz1ub2RlTGVuKG4pO2Vsc2V7aWYobj1uLnBhcmVudE5vZGUsbj09ZS5kb20pYnJlYWs7cj1zPTB9fX1vJiZzZXRTZWxGb2N1cyhlLG8saSl9KGUpfWZ1bmN0aW9uIGlzQmxvY2tOb2RlKGUpe2xldCB0PWUucG1WaWV3RGVzYztyZXR1cm4gdCYmdC5ub2RlJiZ0Lm5vZGUuaXNCbG9ja31mdW5jdGlvbiBzZXRTZWxGb2N1cyhlLHQsbil7aWYoMyE9dC5ub2RlVHlwZSl7bGV0IGUscjsocj1mdW5jdGlvbihlLHQpe2Zvcig7ZSYmdD09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmIWhhc0Jsb2NrRGVzYyhlKTspdD1kb21JbmRleChlKSsxLGU9ZS5wYXJlbnROb2RlO2Zvcig7ZSYmdDxlLmNoaWxkTm9kZXMubGVuZ3RoOyl7bGV0IG49ZS5jaGlsZE5vZGVzW3RdO2lmKDM9PW4ubm9kZVR5cGUpcmV0dXJuIG47aWYoMT09bi5ub2RlVHlwZSYmImZhbHNlIj09bi5jb250ZW50RWRpdGFibGUpYnJlYWs7ZT1uLHQ9MH19KHQsbikpPyh0PXIsbj0wKTooZT1mdW5jdGlvbihlLHQpe2Zvcig7ZSYmIXQmJiFoYXNCbG9ja0Rlc2MoZSk7KXQ9ZG9tSW5kZXgoZSksZT1lLnBhcmVudE5vZGU7Zm9yKDtlJiZ0Oyl7bGV0IG49ZS5jaGlsZE5vZGVzW3QtMV07aWYoMz09bi5ub2RlVHlwZSlyZXR1cm4gbjtpZigxPT1uLm5vZGVUeXBlJiYiZmFsc2UiPT1uLmNvbnRlbnRFZGl0YWJsZSlicmVhazt0PShlPW4pLmNoaWxkTm9kZXMubGVuZ3RofX0odCxuKSkmJih0PWUsbj1lLm5vZGVWYWx1ZS5sZW5ndGgpfWxldCByPWUuZG9tU2VsZWN0aW9uKCk7aWYoIXIpcmV0dXJuO2lmKHNlbGVjdGlvbkNvbGxhcHNlZChyKSl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtlLnNldEVuZCh0LG4pLGUuc2V0U3RhcnQodCxuKSxyLnJlbW92ZUFsbFJhbmdlcygpLHIuYWRkUmFuZ2UoZSl9ZWxzZSByLmV4dGVuZCYmci5leHRlbmQodCxuKTtlLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpO2xldHtzdGF0ZTpvfT1lO3NldFRpbWVvdXQoKCk9PntlLnN0YXRlPT1vJiZzZWxlY3Rpb25Ub0RPTShlKX0sNTApfWZ1bmN0aW9uIGZpbmREaXJlY3Rpb24oZSx0KXtsZXQgbj1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpO2lmKCFWZSYmIVdlJiZuLnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgcj1lLmNvb3Jkc0F0UG9zKHQpO2lmKHQ+bi5zdGFydCgpKXtsZXQgbj1lLmNvb3Jkc0F0UG9zKHQtMSksbz0obi50b3Arbi5ib3R0b20pLzI7aWYobz5yLnRvcCYmbzxyLmJvdHRvbSYmTWF0aC5hYnMobi5sZWZ0LXIubGVmdCk+MSlyZXR1cm4gbi5sZWZ0PHIubGVmdD8ibHRyIjoicnRsIn1pZih0PG4uZW5kKCkpe2xldCBuPWUuY29vcmRzQXRQb3ModCsxKSxvPShuLnRvcCtuLmJvdHRvbSkvMjtpZihvPnIudG9wJiZvPHIuYm90dG9tJiZNYXRoLmFicyhuLmxlZnQtci5sZWZ0KT4xKXJldHVybiBuLmxlZnQ+ci5sZWZ0PyJsdHIiOiJydGwifX1yZXR1cm4icnRsIj09Z2V0Q29tcHV0ZWRTdHlsZShlLmRvbSkuZGlyZWN0aW9uPyJydGwiOiJsdHIifWZ1bmN0aW9uIHNlbGVjdFZlcnRpY2FsbHkoZSx0LG4pe2xldCByPWUuc3RhdGUuc2VsZWN0aW9uO2lmKHIgaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uJiYhci5lbXB0eXx8bi5pbmRleE9mKCJzIik+LTEpcmV0dXJuITE7aWYoVWUmJm4uaW5kZXhPZigibSIpPi0xKXJldHVybiExO2xldHskZnJvbTpvLCR0bzppfT1yO2lmKCFvLnBhcmVudC5pbmxpbmVDb250ZW50fHxlLmVuZE9mVGV4dGJsb2NrKHQ8MD8idXAiOiJkb3duIikpe2xldCBuPW1vdmVTZWxlY3Rpb25CbG9jayhlLnN0YXRlLHQpO2lmKG4mJm4gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKXJldHVybiBhcHBseShlLG4pfWlmKCFvLnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgbj10PDA/bzppLHM9ciBpbnN0YW5jZW9mIEFsbFNlbGVjdGlvbj9TZWxlY3Rpb24ubmVhcihuLHQpOlNlbGVjdGlvbi5maW5kRnJvbShuLHQpO3JldHVybiEhcyYmYXBwbHkoZSxzKX1yZXR1cm4hMX1mdW5jdGlvbiBzdG9wTmF0aXZlSG9yaXpvbnRhbERlbGV0ZShlLHQpe2lmKCEoZS5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uKSlyZXR1cm4hMDtsZXR7JGhlYWQ6biwkYW5jaG9yOnIsZW1wdHk6b309ZS5zdGF0ZS5zZWxlY3Rpb247aWYoIW4uc2FtZVBhcmVudChyKSlyZXR1cm4hMDtpZighbylyZXR1cm4hMTtpZihlLmVuZE9mVGV4dGJsb2NrKHQ+MD8iZm9yd2FyZCI6ImJhY2t3YXJkIikpcmV0dXJuITA7bGV0IGk9IW4udGV4dE9mZnNldCYmKHQ8MD9uLm5vZGVCZWZvcmU6bi5ub2RlQWZ0ZXIpO2lmKGkmJiFpLmlzVGV4dCl7bGV0IHI9ZS5zdGF0ZS50cjtyZXR1cm4gdDwwP3IuZGVsZXRlKG4ucG9zLWkubm9kZVNpemUsbi5wb3MpOnIuZGVsZXRlKG4ucG9zLG4ucG9zK2kubm9kZVNpemUpLGUuZGlzcGF0Y2gociksITB9cmV0dXJuITF9ZnVuY3Rpb24gc3dpdGNoRWRpdGFibGUoZSx0LG4pe2UuZG9tT2JzZXJ2ZXIuc3RvcCgpLHQuY29udGVudEVkaXRhYmxlPW4sZS5kb21PYnNlcnZlci5zdGFydCgpfWZ1bmN0aW9uIGNhcHR1cmVLZXlEb3duKGUsdCl7bGV0IG49dC5rZXlDb2RlLHI9ZnVuY3Rpb24oZSl7bGV0IHQ9IiI7cmV0dXJuIGUuY3RybEtleSYmKHQrPSJjIiksZS5tZXRhS2V5JiYodCs9Im0iKSxlLmFsdEtleSYmKHQrPSJhIiksZS5zaGlmdEtleSYmKHQrPSJzIiksdH0odCk7aWYoOD09bnx8VWUmJjcyPT1uJiYiYyI9PXIpcmV0dXJuIHN0b3BOYXRpdmVIb3Jpem9udGFsRGVsZXRlKGUsLTEpfHxza2lwSWdub3JlZE5vZGVzKGUsLTEpO2lmKDQ2PT1uJiYhdC5zaGlmdEtleXx8VWUmJjY4PT1uJiYiYyI9PXIpcmV0dXJuIHN0b3BOYXRpdmVIb3Jpem9udGFsRGVsZXRlKGUsMSl8fHNraXBJZ25vcmVkTm9kZXMoZSwxKTtpZigxMz09bnx8Mjc9PW4pcmV0dXJuITA7aWYoMzc9PW58fFVlJiY2Nj09biYmImMiPT1yKXtsZXQgdD0zNz09bj8ibHRyIj09ZmluZERpcmVjdGlvbihlLGUuc3RhdGUuc2VsZWN0aW9uLmZyb20pPy0xOjE6LTE7cmV0dXJuIHNlbGVjdEhvcml6b250YWxseShlLHQscil8fHNraXBJZ25vcmVkTm9kZXMoZSx0KX1pZigzOT09bnx8VWUmJjcwPT1uJiYiYyI9PXIpe2xldCB0PTM5PT1uPyJsdHIiPT1maW5kRGlyZWN0aW9uKGUsZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbSk/MTotMToxO3JldHVybiBzZWxlY3RIb3Jpem9udGFsbHkoZSx0LHIpfHxza2lwSWdub3JlZE5vZGVzKGUsdCl9cmV0dXJuIDM4PT1ufHxVZSYmODA9PW4mJiJjIj09cj9zZWxlY3RWZXJ0aWNhbGx5KGUsLTEscil8fHNraXBJZ25vcmVkTm9kZXMoZSwtMSk6NDA9PW58fFVlJiY3OD09biYmImMiPT1yP2Z1bmN0aW9uKGUpe2lmKCFqZXx8ZS5zdGF0ZS5zZWxlY3Rpb24uJGhlYWQucGFyZW50T2Zmc2V0PjApcmV0dXJuITE7bGV0e2ZvY3VzTm9kZTp0LGZvY3VzT2Zmc2V0Om59PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZih0JiYxPT10Lm5vZGVUeXBlJiYwPT1uJiZ0LmZpcnN0Q2hpbGQmJiJmYWxzZSI9PXQuZmlyc3RDaGlsZC5jb250ZW50RWRpdGFibGUpe2xldCBuPXQuZmlyc3RDaGlsZDtzd2l0Y2hFZGl0YWJsZShlLG4sInRydWUiKSxzZXRUaW1lb3V0KCgpPT5zd2l0Y2hFZGl0YWJsZShlLG4sImZhbHNlIiksMjApfXJldHVybiExfShlKXx8c2VsZWN0VmVydGljYWxseShlLDEscil8fHNraXBJZ25vcmVkTm9kZXMoZSwxKTpyPT0oVWU/Im0iOiJjIikmJig2Nj09bnx8NzM9PW58fDg5PT1ufHw5MD09bil9ZnVuY3Rpb24gc2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUsdCl7ZS5zb21lUHJvcCgidHJhbnNmb3JtQ29waWVkIixuPT57dD1uKHQsZSl9KTtsZXQgbj1bXSx7Y29udGVudDpyLG9wZW5TdGFydDpvLG9wZW5FbmQ6aX09dDtmb3IoO28+MSYmaT4xJiYxPT1yLmNoaWxkQ291bnQmJjE9PXIuZmlyc3RDaGlsZC5jaGlsZENvdW50Oyl7by0tLGktLTtsZXQgZT1yLmZpcnN0Q2hpbGQ7bi5wdXNoKGUudHlwZS5uYW1lLGUuYXR0cnMhPWUudHlwZS5kZWZhdWx0QXR0cnM/ZS5hdHRyczpudWxsKSxyPWUuY29udGVudH1sZXQgcz1lLnNvbWVQcm9wKCJjbGlwYm9hcmRTZXJpYWxpemVyIil8fERPTVNlcmlhbGl6ZXIuZnJvbVNjaGVtYShlLnN0YXRlLnNjaGVtYSksbD1kZXRhY2hlZERvYygpLGE9bC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKHMuc2VyaWFsaXplRnJhZ21lbnQocix7ZG9jdW1lbnQ6bH0pKTtsZXQgYyxkPWEuZmlyc3RDaGlsZCxwPTA7Zm9yKDtkJiYxPT1kLm5vZGVUeXBlJiYoYz1zdFtkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKTspe2ZvcihsZXQgZT1jLmxlbmd0aC0xO2U+PTA7ZS0tKXtsZXQgdD1sLmNyZWF0ZUVsZW1lbnQoY1tlXSk7Zm9yKDthLmZpcnN0Q2hpbGQ7KXQuYXBwZW5kQ2hpbGQoYS5maXJzdENoaWxkKTthLmFwcGVuZENoaWxkKHQpLHArK31kPWEuZmlyc3RDaGlsZH1yZXR1cm4gZCYmMT09ZC5ub2RlVHlwZSYmZC5zZXRBdHRyaWJ1dGUoImRhdGEtcG0tc2xpY2UiLGAke299ICR7aX0ke3A/YCAtJHtwfWA6IiJ9ICR7SlNPTi5zdHJpbmdpZnkobil9YCkse2RvbTphLHRleHQ6ZS5zb21lUHJvcCgiY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXIiLG49Pm4odCxlKSl8fHQuY29udGVudC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLCJcblxuIiksc2xpY2U6dH19ZnVuY3Rpb24gcGFyc2VGcm9tQ2xpcGJvYXJkKGUsdCxuLHIsbyl7bGV0IGkscyxsPW8ucGFyZW50LnR5cGUuc3BlYy5jb2RlO2lmKCFuJiYhdClyZXR1cm4gbnVsbDtsZXQgYT0hIXQmJihyfHxsfHwhbik7aWYoYSl7aWYoZS5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkVGV4dCIsbj0+e3Q9bih0LGx8fHIsZSl9KSxsKXJldHVybiBzPW5ldyBTbGljZShGcmFnbWVudC5mcm9tKGUuc3RhdGUuc2NoZW1hLnRleHQodC5yZXBsYWNlKC9cclxuPy9nLCJcbiIpKSksMCwwKSxlLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWQiLHQ9PntzPXQocyxlLCEwKX0pLHM7bGV0IG49ZS5zb21lUHJvcCgiY2xpcGJvYXJkVGV4dFBhcnNlciIsbj0+bih0LG8scixlKSk7aWYobilzPW47ZWxzZXtsZXQgbj1vLm1hcmtzKCkse3NjaGVtYTpyfT1lLnN0YXRlLHM9RE9NU2VyaWFsaXplci5mcm9tU2NoZW1hKHIpO2k9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5zcGxpdCgvKD86XHJcbj98XG4pKy8pLmZvckVhY2goZT0+e2xldCB0PWkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpKTtlJiZ0LmFwcGVuZENoaWxkKHMuc2VyaWFsaXplTm9kZShyLnRleHQoZSxuKSkpfSl9fWVsc2UgZS5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkSFRNTCIsdD0+e249dChuLGUpfSksaT1mdW5jdGlvbihlKXtsZXQgdD0vXihccyo8bWV0YSBbXj5dKj4pKi8uZXhlYyhlKTt0JiYoZT1lLnNsaWNlKHRbMF0ubGVuZ3RoKSk7bGV0IG4scj1kZXRhY2hlZERvYygpLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG89LzwoW2Etel1bXj5cc10rKS9pLmV4ZWMoZSk7KG49byYmc3Rbb1sxXS50b0xvd2VyQ2FzZSgpXSkmJihlPW4ubWFwKGU9PiI8IitlKyI+Iikuam9pbigiIikrZStuLm1hcChlPT4iPC8iK2UrIj4iKS5yZXZlcnNlKCkuam9pbigiIikpO2lmKHIuaW5uZXJIVE1MPWZ1bmN0aW9uKGUpe2xldCB0PXdpbmRvdy50cnVzdGVkVHlwZXM7aWYoIXQpcmV0dXJuIGU7YXR8fChhdD10LmRlZmF1bHRQb2xpY3l8fHQuY3JlYXRlUG9saWN5KCJQcm9zZU1pcnJvckNsaXBib2FyZCIse2NyZWF0ZUhUTUw6ZT0+ZX0pKTtyZXR1cm4gYXQuY3JlYXRlSFRNTChlKX0oZSksbilmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylyPXIucXVlcnlTZWxlY3RvcihuW2VdKXx8cjtyZXR1cm4gcn0obiksSmUmJmZ1bmN0aW9uKGUpe2xldCB0PWUucXVlcnlTZWxlY3RvckFsbChWZT8ic3Bhbjpub3QoW2NsYXNzXSk6bm90KFtzdHlsZV0pIjoic3Bhbi5BcHBsZS1jb252ZXJ0ZWQtc3BhY2UiKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IHI9dFtuXTsxPT1yLmNoaWxkTm9kZXMubGVuZ3RoJiYiwqAiPT1yLnRleHRDb250ZW50JiZyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZS5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikscil9fShpKTtsZXQgYz1pJiZpLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXBtLXNsaWNlXSIpLGQ9YyYmL14oXGQrKSAoXGQrKSg/OiAtKFxkKykpPyAoLiopLy5leGVjKGMuZ2V0QXR0cmlidXRlKCJkYXRhLXBtLXNsaWNlIil8fCIiKTtpZihkJiZkWzNdKWZvcihsZXQgZT0rZFszXTtlPjA7ZS0tKXtsZXQgZT1pLmZpcnN0Q2hpbGQ7Zm9yKDtlJiYxIT1lLm5vZGVUeXBlOyllPWUubmV4dFNpYmxpbmc7aWYoIWUpYnJlYWs7aT1lfWlmKCFzKXtsZXQgdD1lLnNvbWVQcm9wKCJjbGlwYm9hcmRQYXJzZXIiKXx8ZS5zb21lUHJvcCgiZG9tUGFyc2VyIil8fERPTVBhcnNlci5mcm9tU2NoZW1hKGUuc3RhdGUuc2NoZW1hKTtzPXQucGFyc2VTbGljZShpLHtwcmVzZXJ2ZVdoaXRlc3BhY2U6ISghYSYmIWQpLGNvbnRleHQ6byxydWxlRnJvbU5vZGU6ZT0+IkJSIiE9ZS5ub2RlTmFtZXx8ZS5uZXh0U2libGluZ3x8IWUucGFyZW50Tm9kZXx8aXQudGVzdChlLnBhcmVudE5vZGUubm9kZU5hbWUpP251bGw6e2lnbm9yZTohMH19KX1pZihkKXM9ZnVuY3Rpb24oZSx0KXtpZighZS5zaXplKXJldHVybiBlO2xldCBuLHI9ZS5jb250ZW50LmZpcnN0Q2hpbGQudHlwZS5zY2hlbWE7dHJ5e249SlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm4gZX1sZXR7Y29udGVudDpvLG9wZW5TdGFydDppLG9wZW5FbmQ6c309ZTtmb3IobGV0IGU9bi5sZW5ndGgtMjtlPj0wO2UtPTIpe2xldCB0PXIubm9kZXNbbltlXV07aWYoIXR8fHQuaGFzUmVxdWlyZWRBdHRycygpKWJyZWFrO289RnJhZ21lbnQuZnJvbSh0LmNyZWF0ZShuW2UrMV0sbykpLGkrKyxzKyt9cmV0dXJuIG5ldyBTbGljZShvLGkscyl9KGNsb3NlU2xpY2UocywrZFsxXSwrZFsyXSksZFs0XSk7ZWxzZSBpZihzPVNsaWNlLm1heE9wZW4oZnVuY3Rpb24oZSx0KXtpZihlLmNoaWxkQ291bnQ8MilyZXR1cm4gZTtmb3IobGV0IG49dC5kZXB0aDtuPj0wO24tLSl7bGV0IHIsbz10Lm5vZGUobikuY29udGVudE1hdGNoQXQodC5pbmRleChuKSksaT1bXTtpZihlLmZvckVhY2goZT0+e2lmKCFpKXJldHVybjtsZXQgdCxuPW8uZmluZFdyYXBwaW5nKGUudHlwZSk7aWYoIW4pcmV0dXJuIGk9bnVsbDtpZih0PWkubGVuZ3RoJiZyLmxlbmd0aCYmYWRkVG9TaWJsaW5nKG4scixlLGlbaS5sZW5ndGgtMV0sMCkpaVtpLmxlbmd0aC0xXT10O2Vsc2V7aS5sZW5ndGgmJihpW2kubGVuZ3RoLTFdPWNsb3NlUmlnaHQoaVtpLmxlbmd0aC0xXSxyLmxlbmd0aCkpO2xldCB0PXdpdGhXcmFwcGVycyhlLG4pO2kucHVzaCh0KSxvPW8ubWF0Y2hUeXBlKHQudHlwZSkscj1ufX0pLGkpcmV0dXJuIEZyYWdtZW50LmZyb20oaSl9cmV0dXJuIGV9KHMuY29udGVudCxvKSwhMCkscy5vcGVuU3RhcnR8fHMub3BlbkVuZCl7bGV0IGU9MCx0PTA7Zm9yKGxldCB0PXMuY29udGVudC5maXJzdENoaWxkO2U8cy5vcGVuU3RhcnQmJiF0LnR5cGUuc3BlYy5pc29sYXRpbmc7ZSsrLHQ9dC5maXJzdENoaWxkKTtmb3IobGV0IGU9cy5jb250ZW50Lmxhc3RDaGlsZDt0PHMub3BlbkVuZCYmIWUudHlwZS5zcGVjLmlzb2xhdGluZzt0KyssZT1lLmxhc3RDaGlsZCk7cz1jbG9zZVNsaWNlKHMsZSx0KX1yZXR1cm4gZS5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkIix0PT57cz10KHMsZSxhKX0pLHN9Y29uc3QgaXQ9L14oYXxhYmJyfGFjcm9ueW18YnxjaXRlfGNvZGV8ZGVsfGVtfGl8aW5zfGtiZHxsYWJlbHxvdXRwdXR8cXxydWJ5fHN8c2FtcHxzcGFufHN0cm9uZ3xzdWJ8c3VwfHRpbWV8dXx0dHx2YXIpJC9pO2Z1bmN0aW9uIHdpdGhXcmFwcGVycyhlLHQsbj0wKXtmb3IobGV0IHI9dC5sZW5ndGgtMTtyPj1uO3ItLSllPXRbcl0uY3JlYXRlKG51bGwsRnJhZ21lbnQuZnJvbShlKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYWRkVG9TaWJsaW5nKGUsdCxuLHIsbyl7aWYobzxlLmxlbmd0aCYmbzx0Lmxlbmd0aCYmZVtvXT09dFtvXSl7bGV0IGk9YWRkVG9TaWJsaW5nKGUsdCxuLHIubGFzdENoaWxkLG8rMSk7aWYoaSlyZXR1cm4gci5jb3B5KHIuY29udGVudC5yZXBsYWNlQ2hpbGQoci5jaGlsZENvdW50LTEsaSkpO2lmKHIuY29udGVudE1hdGNoQXQoci5jaGlsZENvdW50KS5tYXRjaFR5cGUobz09ZS5sZW5ndGgtMT9uLnR5cGU6ZVtvKzFdKSlyZXR1cm4gci5jb3B5KHIuY29udGVudC5hcHBlbmQoRnJhZ21lbnQuZnJvbSh3aXRoV3JhcHBlcnMobixlLG8rMSkpKSl9fWZ1bmN0aW9uIGNsb3NlUmlnaHQoZSx0KXtpZigwPT10KXJldHVybiBlO2xldCBuPWUuY29udGVudC5yZXBsYWNlQ2hpbGQoZS5jaGlsZENvdW50LTEsY2xvc2VSaWdodChlLmxhc3RDaGlsZCx0LTEpKSxyPWUuY29udGVudE1hdGNoQXQoZS5jaGlsZENvdW50KS5maWxsQmVmb3JlKEZyYWdtZW50LmVtcHR5LCEwKTtyZXR1cm4gZS5jb3B5KG4uYXBwZW5kKHIpKX1mdW5jdGlvbiBjbG9zZVJhbmdlKGUsdCxuLHIsbyxpKXtsZXQgcz10PDA/ZS5maXJzdENoaWxkOmUubGFzdENoaWxkLGw9cy5jb250ZW50O3JldHVybiBlLmNoaWxkQ291bnQ+MSYmKGk9MCksbzxyLTEmJihsPWNsb3NlUmFuZ2UobCx0LG4scixvKzEsaSkpLG8+PW4mJihsPXQ8MD9zLmNvbnRlbnRNYXRjaEF0KDApLmZpbGxCZWZvcmUobCxpPD1vKS5hcHBlbmQobCk6bC5hcHBlbmQocy5jb250ZW50TWF0Y2hBdChzLmNoaWxkQ291bnQpLmZpbGxCZWZvcmUoRnJhZ21lbnQuZW1wdHksITApKSksZS5yZXBsYWNlQ2hpbGQodDwwPzA6ZS5jaGlsZENvdW50LTEscy5jb3B5KGwpKX1mdW5jdGlvbiBjbG9zZVNsaWNlKGUsdCxuKXtyZXR1cm4gdDxlLm9wZW5TdGFydCYmKGU9bmV3IFNsaWNlKGNsb3NlUmFuZ2UoZS5jb250ZW50LC0xLHQsZS5vcGVuU3RhcnQsMCxlLm9wZW5FbmQpLHQsZS5vcGVuRW5kKSksbjxlLm9wZW5FbmQmJihlPW5ldyBTbGljZShjbG9zZVJhbmdlKGUuY29udGVudCwxLG4sZS5vcGVuRW5kLDAsMCksZS5vcGVuU3RhcnQsbikpLGV9Y29uc3Qgc3Q9e3RoZWFkOlsidGFibGUiXSx0Ym9keTpbInRhYmxlIl0sdGZvb3Q6WyJ0YWJsZSJdLGNhcHRpb246WyJ0YWJsZSJdLGNvbGdyb3VwOlsidGFibGUiXSxjb2w6WyJ0YWJsZSIsImNvbGdyb3VwIl0sdHI6WyJ0YWJsZSIsInRib2R5Il0sdGQ6WyJ0YWJsZSIsInRib2R5IiwidHIiXSx0aDpbInRhYmxlIiwidGJvZHkiLCJ0ciJdfTtsZXQgbHQ9bnVsbDtmdW5jdGlvbiBkZXRhY2hlZERvYygpe3JldHVybiBsdHx8KGx0PWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgidGl0bGUiKSl9bGV0IGF0PW51bGw7Y29uc3QgY3Q9e30sZHQ9e30scHQ9e3RvdWNoc3RhcnQ6ITAsdG91Y2htb3ZlOiEwfTtjbGFzcyBJbnB1dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5zaGlmdEtleT0hMSx0aGlzLm1vdXNlRG93bj1udWxsLHRoaXMubGFzdEtleUNvZGU9bnVsbCx0aGlzLmxhc3RLZXlDb2RlVGltZT0wLHRoaXMubGFzdENsaWNrPXt0aW1lOjAseDowLHk6MCx0eXBlOiIiLGJ1dHRvbjowfSx0aGlzLmxhc3RTZWxlY3Rpb25PcmlnaW49bnVsbCx0aGlzLmxhc3RTZWxlY3Rpb25UaW1lPTAsdGhpcy5sYXN0SU9TRW50ZXI9MCx0aGlzLmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dD0tMSx0aGlzLmxhc3RGb2N1cz0wLHRoaXMubGFzdFRvdWNoPTAsdGhpcy5sYXN0Q2hyb21lRGVsZXRlPTAsdGhpcy5jb21wb3Npbmc9ITEsdGhpcy5jb21wb3NpdGlvbk5vZGU9bnVsbCx0aGlzLmNvbXBvc2luZ1RpbWVvdXQ9LTEsdGhpcy5jb21wb3NpdGlvbk5vZGVzPVtdLHRoaXMuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsdGhpcy5jb21wb3NpdGlvbklEPTEsdGhpcy5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMSx0aGlzLmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCx0aGlzLmRvbUNoYW5nZUNvdW50PTAsdGhpcy5ldmVudEhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5oaWRlU2VsZWN0aW9uR3VhcmQ9bnVsbH19ZnVuY3Rpb24gc2V0U2VsZWN0aW9uT3JpZ2luKGUsdCl7ZS5pbnB1dC5sYXN0U2VsZWN0aW9uT3JpZ2luPXQsZS5pbnB1dC5sYXN0U2VsZWN0aW9uVGltZT1EYXRlLm5vdygpfWZ1bmN0aW9uIGVuc3VyZUxpc3RlbmVycyhlKXtlLnNvbWVQcm9wKCJoYW5kbGVET01FdmVudHMiLHQ9Pntmb3IobGV0IG4gaW4gdCllLmlucHV0LmV2ZW50SGFuZGxlcnNbbl18fGUuZG9tLmFkZEV2ZW50TGlzdGVuZXIobixlLmlucHV0LmV2ZW50SGFuZGxlcnNbbl09dD0+cnVuQ3VzdG9tSGFuZGxlcihlLHQpKX0pfWZ1bmN0aW9uIHJ1bkN1c3RvbUhhbmRsZXIoZSx0KXtyZXR1cm4gZS5zb21lUHJvcCgiaGFuZGxlRE9NRXZlbnRzIixuPT57bGV0IHI9blt0LnR5cGVdO3JldHVybiEhciYmKHIoZSx0KXx8dC5kZWZhdWx0UHJldmVudGVkKX0pfWZ1bmN0aW9uIGV2ZW50QmVsb25nc1RvVmlldyhlLHQpe2lmKCF0LmJ1YmJsZXMpcmV0dXJuITA7aWYodC5kZWZhdWx0UHJldmVudGVkKXJldHVybiExO2ZvcihsZXQgbj10LnRhcmdldDtuIT1lLmRvbTtuPW4ucGFyZW50Tm9kZSlpZighbnx8MTE9PW4ubm9kZVR5cGV8fG4ucG1WaWV3RGVzYyYmbi5wbVZpZXdEZXNjLnN0b3BFdmVudCh0KSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBldmVudENvb3JkcyhlKXtyZXR1cm57bGVmdDplLmNsaWVudFgsdG9wOmUuY2xpZW50WX19ZnVuY3Rpb24gcnVuSGFuZGxlck9uQ29udGV4dChlLHQsbixyLG8pe2lmKC0xPT1yKXJldHVybiExO2xldCBpPWUuc3RhdGUuZG9jLnJlc29sdmUocik7Zm9yKGxldCByPWkuZGVwdGgrMTtyPjA7ci0tKWlmKGUuc29tZVByb3AodCx0PT5yPmkuZGVwdGg/dChlLG4saS5ub2RlQWZ0ZXIsaS5iZWZvcmUociksbywhMCk6dChlLG4saS5ub2RlKHIpLGkuYmVmb3JlKHIpLG8sITEpKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB1cGRhdGVTZWxlY3Rpb24oZSx0LG4pe2lmKGUuZm9jdXNlZHx8ZS5mb2N1cygpLGUuc3RhdGUuc2VsZWN0aW9uLmVxKHQpKXJldHVybjtsZXQgcj1lLnN0YXRlLnRyLnNldFNlbGVjdGlvbih0KTtyLnNldE1ldGEoInBvaW50ZXIiLCEwKSxlLmRpc3BhdGNoKHIpfWZ1bmN0aW9uIGhhbmRsZVNpbmdsZUNsaWNrKGUsdCxuLHIsbyl7cmV0dXJuIHJ1bkhhbmRsZXJPbkNvbnRleHQoZSwiaGFuZGxlQ2xpY2tPbiIsdCxuLHIpfHxlLnNvbWVQcm9wKCJoYW5kbGVDbGljayIsbj0+bihlLHQscikpfHwobz9mdW5jdGlvbihlLHQpe2lmKC0xPT10KXJldHVybiExO2xldCBuLHIsbz1lLnN0YXRlLnNlbGVjdGlvbjtvIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiYmKG49by5ub2RlKTtsZXQgaT1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpO2ZvcihsZXQgZT1pLmRlcHRoKzE7ZT4wO2UtLSl7bGV0IHQ9ZT5pLmRlcHRoP2kubm9kZUFmdGVyOmkubm9kZShlKTtpZihOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZSh0KSl7cj1uJiZvLiRmcm9tLmRlcHRoPjAmJmU+PW8uJGZyb20uZGVwdGgmJmkuYmVmb3JlKG8uJGZyb20uZGVwdGgrMSk9PW8uJGZyb20ucG9zP2kuYmVmb3JlKG8uJGZyb20uZGVwdGgpOmkuYmVmb3JlKGUpO2JyZWFrfX1yZXR1cm4gbnVsbCE9ciYmKHVwZGF0ZVNlbGVjdGlvbihlLE5vZGVTZWxlY3Rpb24uY3JlYXRlKGUuc3RhdGUuZG9jLHIpKSwhMCl9KGUsbik6ZnVuY3Rpb24oZSx0KXtpZigtMT09dClyZXR1cm4hMTtsZXQgbj1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpLHI9bi5ub2RlQWZ0ZXI7cmV0dXJuISEociYmci5pc0F0b20mJk5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKHIpKSYmKHVwZGF0ZVNlbGVjdGlvbihlLG5ldyBOb2RlU2VsZWN0aW9uKG4pKSwhMCl9KGUsbikpfWZ1bmN0aW9uIGhhbmRsZURvdWJsZUNsaWNrKGUsdCxuLHIpe3JldHVybiBydW5IYW5kbGVyT25Db250ZXh0KGUsImhhbmRsZURvdWJsZUNsaWNrT24iLHQsbixyKXx8ZS5zb21lUHJvcCgiaGFuZGxlRG91YmxlQ2xpY2siLG49Pm4oZSx0LHIpKX1mdW5jdGlvbiBoYW5kbGVUcmlwbGVDbGljayhlLHQsbixyKXtyZXR1cm4gcnVuSGFuZGxlck9uQ29udGV4dChlLCJoYW5kbGVUcmlwbGVDbGlja09uIix0LG4scil8fGUuc29tZVByb3AoImhhbmRsZVRyaXBsZUNsaWNrIixuPT5uKGUsdCxyKSl8fGZ1bmN0aW9uKGUsdCxuKXtpZigwIT1uLmJ1dHRvbilyZXR1cm4hMTtsZXQgcj1lLnN0YXRlLmRvYztpZigtMT09dClyZXR1cm4hIXIuaW5saW5lQ29udGVudCYmKHVwZGF0ZVNlbGVjdGlvbihlLFRleHRTZWxlY3Rpb24uY3JlYXRlKHIsMCxyLmNvbnRlbnQuc2l6ZSkpLCEwKTtsZXQgbz1yLnJlc29sdmUodCk7Zm9yKGxldCB0PW8uZGVwdGgrMTt0PjA7dC0tKXtsZXQgbj10Pm8uZGVwdGg/by5ub2RlQWZ0ZXI6by5ub2RlKHQpLGk9by5iZWZvcmUodCk7aWYobi5pbmxpbmVDb250ZW50KXVwZGF0ZVNlbGVjdGlvbihlLFRleHRTZWxlY3Rpb24uY3JlYXRlKHIsaSsxLGkrMStuLmNvbnRlbnQuc2l6ZSkpO2Vsc2V7aWYoIU5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG4pKWNvbnRpbnVlO3VwZGF0ZVNlbGVjdGlvbihlLE5vZGVTZWxlY3Rpb24uY3JlYXRlKHIsaSkpfXJldHVybiEwfX0oZSxuLHIpfWZ1bmN0aW9uIGZvcmNlRE9NRmx1c2goZSl7cmV0dXJuIGVuZENvbXBvc2l0aW9uKGUpfWR0LmtleWRvd249KGUsdCk9PntsZXQgbj10O2lmKGUuaW5wdXQuc2hpZnRLZXk9MTY9PW4ua2V5Q29kZXx8bi5zaGlmdEtleSwhaW5Pck5lYXJDb21wb3NpdGlvbihlLG4pJiYoZS5pbnB1dC5sYXN0S2V5Q29kZT1uLmtleUNvZGUsZS5pbnB1dC5sYXN0S2V5Q29kZVRpbWU9RGF0ZS5ub3coKSwhS2V8fCFWZXx8MTMhPW4ua2V5Q29kZSkpaWYoMjI5IT1uLmtleUNvZGUmJmUuZG9tT2JzZXJ2ZXIuZm9yY2VGbHVzaCgpLCFxZXx8MTMhPW4ua2V5Q29kZXx8bi5jdHJsS2V5fHxuLmFsdEtleXx8bi5tZXRhS2V5KWUuc29tZVByb3AoImhhbmRsZUtleURvd24iLHQ9PnQoZSxuKSl8fGNhcHR1cmVLZXlEb3duKGUsbik/bi5wcmV2ZW50RGVmYXVsdCgpOnNldFNlbGVjdGlvbk9yaWdpbihlLCJrZXkiKTtlbHNle2xldCB0PURhdGUubm93KCk7ZS5pbnB1dC5sYXN0SU9TRW50ZXI9dCxlLmlucHV0Lmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dD1zZXRUaW1lb3V0KCgpPT57ZS5pbnB1dC5sYXN0SU9TRW50ZXI9PXQmJihlLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIix0PT50KGUsa2V5RXZlbnQoMTMsIkVudGVyIikpKSxlLmlucHV0Lmxhc3RJT1NFbnRlcj0wKX0sMjAwKX19LGR0LmtleXVwPShlLHQpPT57MTY9PXQua2V5Q29kZSYmKGUuaW5wdXQuc2hpZnRLZXk9ITEpfSxkdC5rZXlwcmVzcz0oZSx0KT0+e2xldCBuPXQ7aWYoaW5Pck5lYXJDb21wb3NpdGlvbihlLG4pfHwhbi5jaGFyQ29kZXx8bi5jdHJsS2V5JiYhbi5hbHRLZXl8fFVlJiZuLm1ldGFLZXkpcmV0dXJuO2lmKGUuc29tZVByb3AoImhhbmRsZUtleVByZXNzIix0PT50KGUsbikpKXJldHVybiB2b2lkIG4ucHJldmVudERlZmF1bHQoKTtsZXQgcj1lLnN0YXRlLnNlbGVjdGlvbjtpZighKHIgaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uJiZyLiRmcm9tLnNhbWVQYXJlbnQoci4kdG8pKSl7bGV0IHQ9U3RyaW5nLmZyb21DaGFyQ29kZShuLmNoYXJDb2RlKSxkZWZsdD0oKT0+ZS5zdGF0ZS50ci5pbnNlcnRUZXh0KHQpLnNjcm9sbEludG9WaWV3KCk7L1tcclxuXS8udGVzdCh0KXx8ZS5zb21lUHJvcCgiaGFuZGxlVGV4dElucHV0IixuPT5uKGUsci4kZnJvbS5wb3Msci4kdG8ucG9zLHQsZGVmbHQpKXx8ZS5kaXNwYXRjaChkZWZsdCgpKSxuLnByZXZlbnREZWZhdWx0KCl9fTtjb25zdCBodD1VZT8ibWV0YUtleSI6ImN0cmxLZXkiO2N0Lm1vdXNlZG93bj0oZSx0KT0+e2xldCBuPXQ7ZS5pbnB1dC5zaGlmdEtleT1uLnNoaWZ0S2V5O2xldCByPWZvcmNlRE9NRmx1c2goZSksbz1EYXRlLm5vdygpLGk9InNpbmdsZUNsaWNrIjtvLWUuaW5wdXQubGFzdENsaWNrLnRpbWU8NTAwJiZmdW5jdGlvbihlLHQpe2xldCBuPXQueC1lLmNsaWVudFgscj10LnktZS5jbGllbnRZO3JldHVybiBuKm4rcipyPDEwMH0obixlLmlucHV0Lmxhc3RDbGljaykmJiFuW2h0XSYmZS5pbnB1dC5sYXN0Q2xpY2suYnV0dG9uPT1uLmJ1dHRvbiYmKCJzaW5nbGVDbGljayI9PWUuaW5wdXQubGFzdENsaWNrLnR5cGU/aT0iZG91YmxlQ2xpY2siOiJkb3VibGVDbGljayI9PWUuaW5wdXQubGFzdENsaWNrLnR5cGUmJihpPSJ0cmlwbGVDbGljayIpKSxlLmlucHV0Lmxhc3RDbGljaz17dGltZTpvLHg6bi5jbGllbnRYLHk6bi5jbGllbnRZLHR5cGU6aSxidXR0b246bi5idXR0b259O2xldCBzPWUucG9zQXRDb29yZHMoZXZlbnRDb29yZHMobikpO3MmJigic2luZ2xlQ2xpY2siPT1pPyhlLmlucHV0Lm1vdXNlRG93biYmZS5pbnB1dC5tb3VzZURvd24uZG9uZSgpLGUuaW5wdXQubW91c2VEb3duPW5ldyBNb3VzZURvd24oZSxzLG4sISFyKSk6KCJkb3VibGVDbGljayI9PWk/aGFuZGxlRG91YmxlQ2xpY2s6aGFuZGxlVHJpcGxlQ2xpY2spKGUscy5wb3Mscy5pbnNpZGUsbik/bi5wcmV2ZW50RGVmYXVsdCgpOnNldFNlbGVjdGlvbk9yaWdpbihlLCJwb2ludGVyIikpfTtjbGFzcyBNb3VzZURvd257Y29uc3RydWN0b3IoZSx0LG4scil7bGV0IG8saTtpZih0aGlzLnZpZXc9ZSx0aGlzLnBvcz10LHRoaXMuZXZlbnQ9bix0aGlzLmZsdXNoZWQ9cix0aGlzLmRlbGF5ZWRTZWxlY3Rpb25TeW5jPSExLHRoaXMubWlnaHREcmFnPW51bGwsdGhpcy5zdGFydERvYz1lLnN0YXRlLmRvYyx0aGlzLnNlbGVjdE5vZGU9ISFuW2h0XSx0aGlzLmFsbG93RGVmYXVsdD1uLnNoaWZ0S2V5LHQuaW5zaWRlPi0xKW89ZS5zdGF0ZS5kb2Mubm9kZUF0KHQuaW5zaWRlKSxpPXQuaW5zaWRlO2Vsc2V7bGV0IG49ZS5zdGF0ZS5kb2MucmVzb2x2ZSh0LnBvcyk7bz1uLnBhcmVudCxpPW4uZGVwdGg/bi5iZWZvcmUoKTowfWNvbnN0IHM9cj9udWxsOm4udGFyZ2V0LGw9cz9lLmRvY1ZpZXcubmVhcmVzdERlc2MocywhMCk6bnVsbDt0aGlzLnRhcmdldD1sJiYxPT1sLm5vZGVET00ubm9kZVR5cGU/bC5ub2RlRE9NOm51bGw7bGV0e3NlbGVjdGlvbjphfT1lLnN0YXRlOzA9PW4uYnV0dG9uJiYoby50eXBlLnNwZWMuZHJhZ2dhYmxlJiYhMSE9PW8udHlwZS5zcGVjLnNlbGVjdGFibGV8fGEgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uJiZhLmZyb208PWkmJmEudG8+aSkmJih0aGlzLm1pZ2h0RHJhZz17bm9kZTpvLHBvczppLGFkZEF0dHI6ISghdGhpcy50YXJnZXR8fHRoaXMudGFyZ2V0LmRyYWdnYWJsZSksc2V0VW5lZGl0YWJsZTohKCF0aGlzLnRhcmdldHx8IUZlfHx0aGlzLnRhcmdldC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRFZGl0YWJsZSIpKX0pLHRoaXMudGFyZ2V0JiZ0aGlzLm1pZ2h0RHJhZyYmKHRoaXMubWlnaHREcmFnLmFkZEF0dHJ8fHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUpJiYodGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKSx0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyJiYodGhpcy50YXJnZXQuZHJhZ2dhYmxlPSEwKSx0aGlzLm1pZ2h0RHJhZy5zZXRVbmVkaXRhYmxlJiZzZXRUaW1lb3V0KCgpPT57dGhpcy52aWV3LmlucHV0Lm1vdXNlRG93bj09dGhpcyYmdGhpcy50YXJnZXQuc2V0QXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiLCJmYWxzZSIpfSwyMCksdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCkpLGUucm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnVwPXRoaXMudXAuYmluZCh0aGlzKSksZS5yb290LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3ZlPXRoaXMubW92ZS5iaW5kKHRoaXMpKSxzZXRTZWxlY3Rpb25PcmlnaW4oZSwicG9pbnRlciIpfWRvbmUoKXt0aGlzLnZpZXcucm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnVwKSx0aGlzLnZpZXcucm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubW92ZSksdGhpcy5taWdodERyYWcmJnRoaXMudGFyZ2V0JiYodGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKSx0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyJiZ0aGlzLnRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoImRyYWdnYWJsZSIpLHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUmJnRoaXMudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgiY29udGVudEVkaXRhYmxlIiksdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCkpLHRoaXMuZGVsYXllZFNlbGVjdGlvblN5bmMmJnNldFRpbWVvdXQoKCk9PnNlbGVjdGlvblRvRE9NKHRoaXMudmlldykpLHRoaXMudmlldy5pbnB1dC5tb3VzZURvd249bnVsbH11cChlKXtpZih0aGlzLmRvbmUoKSwhdGhpcy52aWV3LmRvbS5jb250YWlucyhlLnRhcmdldCkpcmV0dXJuO2xldCB0PXRoaXMucG9zO3RoaXMudmlldy5zdGF0ZS5kb2MhPXRoaXMuc3RhcnREb2MmJih0PXRoaXMudmlldy5wb3NBdENvb3JkcyhldmVudENvb3JkcyhlKSkpLHRoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGUpLHRoaXMuYWxsb3dEZWZhdWx0fHwhdD9zZXRTZWxlY3Rpb25PcmlnaW4odGhpcy52aWV3LCJwb2ludGVyIik6aGFuZGxlU2luZ2xlQ2xpY2sodGhpcy52aWV3LHQucG9zLHQuaW5zaWRlLGUsdGhpcy5zZWxlY3ROb2RlKT9lLnByZXZlbnREZWZhdWx0KCk6MD09ZS5idXR0b24mJih0aGlzLmZsdXNoZWR8fGplJiZ0aGlzLm1pZ2h0RHJhZyYmIXRoaXMubWlnaHREcmFnLm5vZGUuaXNBdG9tfHxWZSYmIXRoaXMudmlldy5zdGF0ZS5zZWxlY3Rpb24udmlzaWJsZSYmTWF0aC5taW4oTWF0aC5hYnModC5wb3MtdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi5mcm9tKSxNYXRoLmFicyh0LnBvcy10aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLnRvKSk8PTIpPyh1cGRhdGVTZWxlY3Rpb24odGhpcy52aWV3LFNlbGVjdGlvbi5uZWFyKHRoaXMudmlldy5zdGF0ZS5kb2MucmVzb2x2ZSh0LnBvcykpKSxlLnByZXZlbnREZWZhdWx0KCkpOnNldFNlbGVjdGlvbk9yaWdpbih0aGlzLnZpZXcsInBvaW50ZXIiKX1tb3ZlKGUpe3RoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGUpLHNldFNlbGVjdGlvbk9yaWdpbih0aGlzLnZpZXcsInBvaW50ZXIiKSwwPT1lLmJ1dHRvbnMmJnRoaXMuZG9uZSgpfXVwZGF0ZUFsbG93RGVmYXVsdChlKXshdGhpcy5hbGxvd0RlZmF1bHQmJihNYXRoLmFicyh0aGlzLmV2ZW50LngtZS5jbGllbnRYKT40fHxNYXRoLmFicyh0aGlzLmV2ZW50LnktZS5jbGllbnRZKT40KSYmKHRoaXMuYWxsb3dEZWZhdWx0PSEwKX19ZnVuY3Rpb24gaW5Pck5lYXJDb21wb3NpdGlvbihlLHQpe3JldHVybiEhZS5jb21wb3Npbmd8fCEhKGplJiZNYXRoLmFicyh0LnRpbWVTdGFtcC1lLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdCk8NTAwKSYmKGUuaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsITApfWN0LnRvdWNoc3RhcnQ9ZT0+e2UuaW5wdXQubGFzdFRvdWNoPURhdGUubm93KCksZm9yY2VET01GbHVzaChlKSxzZXRTZWxlY3Rpb25PcmlnaW4oZSwicG9pbnRlciIpfSxjdC50b3VjaG1vdmU9ZT0+e2UuaW5wdXQubGFzdFRvdWNoPURhdGUubm93KCksc2V0U2VsZWN0aW9uT3JpZ2luKGUsInBvaW50ZXIiKX0sY3QuY29udGV4dG1lbnU9ZT0+Zm9yY2VET01GbHVzaChlKTtjb25zdCB1dD1LZT81ZTM6LTE7ZnVuY3Rpb24gc2NoZWR1bGVDb21wb3NlRW5kKGUsdCl7Y2xlYXJUaW1lb3V0KGUuaW5wdXQuY29tcG9zaW5nVGltZW91dCksdD4tMSYmKGUuaW5wdXQuY29tcG9zaW5nVGltZW91dD1zZXRUaW1lb3V0KCgpPT5lbmRDb21wb3NpdGlvbihlKSx0KSl9ZnVuY3Rpb24gY2xlYXJDb21wb3NpdGlvbihlKXtmb3IoZS5jb21wb3NpbmcmJihlLmlucHV0LmNvbXBvc2luZz0hMSxlLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD1mdW5jdGlvbigpe2xldCBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiBlLmluaXRFdmVudCgiZXZlbnQiLCEwLCEwKSxlLnRpbWVTdGFtcH0oKSk7ZS5pbnB1dC5jb21wb3NpdGlvbk5vZGVzLmxlbmd0aD4wOyllLmlucHV0LmNvbXBvc2l0aW9uTm9kZXMucG9wKCkubWFya1BhcmVudHNEaXJ0eSgpfWZ1bmN0aW9uIGZpbmRDb21wb3NpdGlvbk5vZGUoZSl7bGV0IHQ9ZS5kb21TZWxlY3Rpb25SYW5nZSgpO2lmKCF0LmZvY3VzTm9kZSlyZXR1cm4gbnVsbDtsZXQgbj1mdW5jdGlvbihlLHQpe2Zvcig7Oyl7aWYoMz09ZS5ub2RlVHlwZSYmdClyZXR1cm4gZTtpZigxPT1lLm5vZGVUeXBlJiZ0PjApe2lmKCJmYWxzZSI9PWUuY29udGVudEVkaXRhYmxlKXJldHVybiBudWxsO3Q9bm9kZVNpemUoZT1lLmNoaWxkTm9kZXNbdC0xXSl9ZWxzZXtpZighZS5wYXJlbnROb2RlfHxoYXNCbG9ja0Rlc2MoZSkpcmV0dXJuIG51bGw7dD1kb21JbmRleChlKSxlPWUucGFyZW50Tm9kZX19fSh0LmZvY3VzTm9kZSx0LmZvY3VzT2Zmc2V0KSxyPWZ1bmN0aW9uKGUsdCl7Zm9yKDs7KXtpZigzPT1lLm5vZGVUeXBlJiZ0PGUubm9kZVZhbHVlLmxlbmd0aClyZXR1cm4gZTtpZigxPT1lLm5vZGVUeXBlJiZ0PGUuY2hpbGROb2Rlcy5sZW5ndGgpe2lmKCJmYWxzZSI9PWUuY29udGVudEVkaXRhYmxlKXJldHVybiBudWxsO2U9ZS5jaGlsZE5vZGVzW3RdLHQ9MH1lbHNle2lmKCFlLnBhcmVudE5vZGV8fGhhc0Jsb2NrRGVzYyhlKSlyZXR1cm4gbnVsbDt0PWRvbUluZGV4KGUpKzEsZT1lLnBhcmVudE5vZGV9fX0odC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCk7aWYobiYmciYmbiE9cil7bGV0IHQ9ci5wbVZpZXdEZXNjLG89ZS5kb21PYnNlcnZlci5sYXN0Q2hhbmdlZFRleHROb2RlO2lmKG49PW98fHI9PW8pcmV0dXJuIG87aWYoIXR8fCF0LmlzVGV4dChyLm5vZGVWYWx1ZSkpcmV0dXJuIHI7aWYoZS5pbnB1dC5jb21wb3NpdGlvbk5vZGU9PXIpe2xldCBlPW4ucG1WaWV3RGVzYztpZihlJiZlLmlzVGV4dChuLm5vZGVWYWx1ZSkpcmV0dXJuIHJ9fXJldHVybiBufHxyfWZ1bmN0aW9uIGVuZENvbXBvc2l0aW9uKGUsdD0hMSl7aWYoIShLZSYmZS5kb21PYnNlcnZlci5mbHVzaGluZ1Nvb24+PTApKXtpZihlLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKSxjbGVhckNvbXBvc2l0aW9uKGUpLHR8fGUuZG9jVmlldyYmZS5kb2NWaWV3LmRpcnR5KXtsZXQgbj1zZWxlY3Rpb25Gcm9tRE9NKGUpLHI9ZS5zdGF0ZS5zZWxlY3Rpb247cmV0dXJuIG4mJiFuLmVxKHIpP2UuZGlzcGF0Y2goZS5zdGF0ZS50ci5zZXRTZWxlY3Rpb24obikpOiFlLm1hcmtDdXJzb3ImJiF0fHxyLiRmcm9tLm5vZGUoci4kZnJvbS5zaGFyZWREZXB0aChyLnRvKSkuaW5saW5lQ29udGVudD9lLnVwZGF0ZVN0YXRlKGUuc3RhdGUpOmUuZGlzcGF0Y2goZS5zdGF0ZS50ci5kZWxldGVTZWxlY3Rpb24oKSksITB9cmV0dXJuITF9fWR0LmNvbXBvc2l0aW9uc3RhcnQ9ZHQuY29tcG9zaXRpb251cGRhdGU9ZT0+e2lmKCFlLmNvbXBvc2luZyl7ZS5kb21PYnNlcnZlci5mbHVzaCgpO2xldHtzdGF0ZTp0fT1lLG49dC5zZWxlY3Rpb24uJHRvO2lmKHQuc2VsZWN0aW9uIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbiYmKHQuc3RvcmVkTWFya3N8fCFuLnRleHRPZmZzZXQmJm4ucGFyZW50T2Zmc2V0JiZuLm5vZGVCZWZvcmUubWFya3Muc29tZShlPT4hMT09PWUudHlwZS5zcGVjLmluY2x1c2l2ZSl8fFZlJiZXZSYmZnVuY3Rpb24oZSl7bGV0e2ZvY3VzTm9kZTp0LGZvY3VzT2Zmc2V0Om59PWUuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZighdHx8MSE9dC5ub2RlVHlwZXx8bj49dC5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm4hMTtsZXQgcj10LmNoaWxkTm9kZXNbbl07cmV0dXJuIDE9PXIubm9kZVR5cGUmJiJmYWxzZSI9PXIuY29udGVudEVkaXRhYmxlfShlKSkpZS5tYXJrQ3Vyc29yPWUuc3RhdGUuc3RvcmVkTWFya3N8fG4ubWFya3MoKSxlbmRDb21wb3NpdGlvbihlLCEwKSxlLm1hcmtDdXJzb3I9bnVsbDtlbHNlIGlmKGVuZENvbXBvc2l0aW9uKGUsIXQuc2VsZWN0aW9uLmVtcHR5KSxGZSYmdC5zZWxlY3Rpb24uZW1wdHkmJm4ucGFyZW50T2Zmc2V0JiYhbi50ZXh0T2Zmc2V0JiZuLm5vZGVCZWZvcmUubWFya3MubGVuZ3RoKXtsZXQgdD1lLmRvbVNlbGVjdGlvblJhbmdlKCk7Zm9yKGxldCBuPXQuZm9jdXNOb2RlLHI9dC5mb2N1c09mZnNldDtuJiYxPT1uLm5vZGVUeXBlJiYwIT1yOyl7bGV0IHQ9cjwwP24ubGFzdENoaWxkOm4uY2hpbGROb2Rlc1tyLTFdO2lmKCF0KWJyZWFrO2lmKDM9PXQubm9kZVR5cGUpe2xldCBuPWUuZG9tU2VsZWN0aW9uKCk7biYmbi5jb2xsYXBzZSh0LHQubm9kZVZhbHVlLmxlbmd0aCk7YnJlYWt9bj10LHI9LTF9fWUuaW5wdXQuY29tcG9zaW5nPSEwfXNjaGVkdWxlQ29tcG9zZUVuZChlLHV0KX0sZHQuY29tcG9zaXRpb25lbmQ9KGUsdCk9PntlLmNvbXBvc2luZyYmKGUuaW5wdXQuY29tcG9zaW5nPSExLGUuaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0PXQudGltZVN0YW1wLGUuaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlcz1lLmRvbU9ic2VydmVyLnBlbmRpbmdSZWNvcmRzKCkubGVuZ3RoP2UuaW5wdXQuY29tcG9zaXRpb25JRDowLGUuaW5wdXQuY29tcG9zaXRpb25Ob2RlPW51bGwsZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbj9lLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKTplLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXMmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmUuZG9tT2JzZXJ2ZXIuZmx1c2goKSksZS5pbnB1dC5jb21wb3NpdGlvbklEKyssc2NoZWR1bGVDb21wb3NlRW5kKGUsMjApKX07Y29uc3QgZnQ9emUmJkJlPDE1fHxxZSYmR2U8NjA0O2Z1bmN0aW9uIGRvUGFzdGUoZSx0LG4scixvKXtsZXQgaT1wYXJzZUZyb21DbGlwYm9hcmQoZSx0LG4scixlLnN0YXRlLnNlbGVjdGlvbi4kZnJvbSk7aWYoZS5zb21lUHJvcCgiaGFuZGxlUGFzdGUiLHQ9PnQoZSxvLGl8fFNsaWNlLmVtcHR5KSkpcmV0dXJuITA7aWYoIWkpcmV0dXJuITE7bGV0IHM9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PWUub3BlblN0YXJ0JiYwPT1lLm9wZW5FbmQmJjE9PWUuY29udGVudC5jaGlsZENvdW50P2UuY29udGVudC5maXJzdENoaWxkOm51bGx9KGkpLGw9cz9lLnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKHMscik6ZS5zdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uKGkpO3JldHVybiBlLmRpc3BhdGNoKGwuc2Nyb2xsSW50b1ZpZXcoKS5zZXRNZXRhKCJwYXN0ZSIsITApLnNldE1ldGEoInVpRXZlbnQiLCJwYXN0ZSIpKSwhMH1mdW5jdGlvbiBnZXRUZXh0JDEoZSl7bGV0IHQ9ZS5nZXREYXRhKCJ0ZXh0L3BsYWluIil8fGUuZ2V0RGF0YSgiVGV4dCIpO2lmKHQpcmV0dXJuIHQ7bGV0IG49ZS5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0Iik7cmV0dXJuIG4/bi5yZXBsYWNlKC9ccj9cbi9nLCIgIik6IiJ9Y3QuY29weT1kdC5jdXQ9KGUsdCk9PntsZXQgbj10LHI9ZS5zdGF0ZS5zZWxlY3Rpb24sbz0iY3V0Ij09bi50eXBlO2lmKHIuZW1wdHkpcmV0dXJuO2xldCBpPWZ0P251bGw6bi5jbGlwYm9hcmREYXRhLHM9ci5jb250ZW50KCkse2RvbTpsLHRleHQ6YX09c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUscyk7aT8obi5wcmV2ZW50RGVmYXVsdCgpLGkuY2xlYXJEYXRhKCksaS5zZXREYXRhKCJ0ZXh0L2h0bWwiLGwuaW5uZXJIVE1MKSxpLnNldERhdGEoInRleHQvcGxhaW4iLGEpKTpmdW5jdGlvbihlLHQpe2lmKCFlLmRvbS5wYXJlbnROb2RlKXJldHVybjtsZXQgbj1lLmRvbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtuLmFwcGVuZENoaWxkKHQpLG4uc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGZpeGVkOyBsZWZ0OiAtMTAwMDBweDsgdG9wOiAxMHB4IjtsZXQgcj1nZXRTZWxlY3Rpb24oKSxvPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7by5zZWxlY3ROb2RlQ29udGVudHModCksZS5kb20uYmx1cigpLHIucmVtb3ZlQWxsUmFuZ2VzKCksci5hZGRSYW5nZShvKSxzZXRUaW1lb3V0KCgpPT57bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobiksZS5mb2N1cygpfSw1MCl9KGUsbCksbyYmZS5kaXNwYXRjaChlLnN0YXRlLnRyLmRlbGV0ZVNlbGVjdGlvbigpLnNjcm9sbEludG9WaWV3KCkuc2V0TWV0YSgidWlFdmVudCIsImN1dCIpKX0sZHQucGFzdGU9KGUsdCk9PntsZXQgbj10O2lmKGUuY29tcG9zaW5nJiYhS2UpcmV0dXJuO2xldCByPWZ0P251bGw6bi5jbGlwYm9hcmREYXRhLG89ZS5pbnB1dC5zaGlmdEtleSYmNDUhPWUuaW5wdXQubGFzdEtleUNvZGU7ciYmZG9QYXN0ZShlLGdldFRleHQkMShyKSxyLmdldERhdGEoInRleHQvaHRtbCIpLG8sbik/bi5wcmV2ZW50RGVmYXVsdCgpOmZ1bmN0aW9uKGUsdCl7aWYoIWUuZG9tLnBhcmVudE5vZGUpcmV0dXJuO2xldCBuPWUuaW5wdXQuc2hpZnRLZXl8fGUuc3RhdGUuc2VsZWN0aW9uLiRmcm9tLnBhcmVudC50eXBlLnNwZWMuY29kZSxyPWUuZG9tLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuPyJ0ZXh0YXJlYSI6ImRpdiIpKTtufHwoci5jb250ZW50RWRpdGFibGU9InRydWUiKSxyLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOiBmaXhlZDsgbGVmdDogLTEwMDAwcHg7IHRvcDogMTBweCIsci5mb2N1cygpO2xldCBvPWUuaW5wdXQuc2hpZnRLZXkmJjQ1IT1lLmlucHV0Lmxhc3RLZXlDb2RlO3NldFRpbWVvdXQoKCk9PntlLmZvY3VzKCksci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQociksbj9kb1Bhc3RlKGUsci52YWx1ZSxudWxsLG8sdCk6ZG9QYXN0ZShlLHIudGV4dENvbnRlbnQsci5pbm5lckhUTUwsbyx0KX0sNTApfShlLG4pfTtjbGFzcyBEcmFnZ2luZ3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5zbGljZT1lLHRoaXMubW92ZT10LHRoaXMubm9kZT1ufX1jb25zdCBtdD1VZT8iYWx0S2V5IjoiY3RybEtleSI7ZnVuY3Rpb24gZHJhZ01vdmVzKGUsdCl7bGV0IG47cmV0dXJuIGUuc29tZVByb3AoImRyYWdDb3BpZXMiLGU9PntuPW58fGUodCl9KSxudWxsIT1uPyFuOiF0W210XX1jdC5kcmFnc3RhcnQ9KGUsdCk9PntsZXQgbj10LHI9ZS5pbnB1dC5tb3VzZURvd247aWYociYmci5kb25lKCksIW4uZGF0YVRyYW5zZmVyKXJldHVybjtsZXQgbyxpPWUuc3RhdGUuc2VsZWN0aW9uLHM9aS5lbXB0eT9udWxsOmUucG9zQXRDb29yZHMoZXZlbnRDb29yZHMobikpO2lmKHMmJnMucG9zPj1pLmZyb20mJnMucG9zPD0oaSBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24/aS50by0xOmkudG8pKTtlbHNlIGlmKHImJnIubWlnaHREcmFnKW89Tm9kZVNlbGVjdGlvbi5jcmVhdGUoZS5zdGF0ZS5kb2Msci5taWdodERyYWcucG9zKTtlbHNlIGlmKG4udGFyZ2V0JiYxPT1uLnRhcmdldC5ub2RlVHlwZSl7bGV0IHQ9ZS5kb2NWaWV3Lm5lYXJlc3REZXNjKG4udGFyZ2V0LCEwKTt0JiZ0Lm5vZGUudHlwZS5zcGVjLmRyYWdnYWJsZSYmdCE9ZS5kb2NWaWV3JiYobz1Ob2RlU2VsZWN0aW9uLmNyZWF0ZShlLnN0YXRlLmRvYyx0LnBvc0JlZm9yZSkpfWxldCBsPShvfHxlLnN0YXRlLnNlbGVjdGlvbikuY29udGVudCgpLHtkb206YSx0ZXh0OmMsc2xpY2U6ZH09c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUsbCk7KCFuLmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGh8fCFWZXx8X2U+MTIwKSYmbi5kYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCksbi5kYXRhVHJhbnNmZXIuc2V0RGF0YShmdD8iVGV4dCI6InRleHQvaHRtbCIsYS5pbm5lckhUTUwpLG4uZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9ImNvcHlNb3ZlIixmdHx8bi5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsYyksZS5kcmFnZ2luZz1uZXcgRHJhZ2dpbmcoZCxkcmFnTW92ZXMoZSxuKSxvKX0sY3QuZHJhZ2VuZD1lPT57bGV0IHQ9ZS5kcmFnZ2luZzt3aW5kb3cuc2V0VGltZW91dCgoKT0+e2UuZHJhZ2dpbmc9PXQmJihlLmRyYWdnaW5nPW51bGwpfSw1MCl9LGR0LmRyYWdvdmVyPWR0LmRyYWdlbnRlcj0oZSx0KT0+dC5wcmV2ZW50RGVmYXVsdCgpLGR0LmRyb3A9KGUsdCk9Pnt0cnl7IWZ1bmN0aW9uKGUsdCxuKXtpZighdC5kYXRhVHJhbnNmZXIpcmV0dXJuO2xldCByPWUucG9zQXRDb29yZHMoZXZlbnRDb29yZHModCkpO2lmKCFyKXJldHVybjtsZXQgbz1lLnN0YXRlLmRvYy5yZXNvbHZlKHIucG9zKSxpPW4mJm4uc2xpY2U7aT9lLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWQiLHQ9PntpPXQoaSxlLCExKX0pOmk9cGFyc2VGcm9tQ2xpcGJvYXJkKGUsZ2V0VGV4dCQxKHQuZGF0YVRyYW5zZmVyKSxmdD9udWxsOnQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvaHRtbCIpLCExLG8pO2xldCBzPSEoIW58fCFkcmFnTW92ZXMoZSx0KSk7aWYoZS5zb21lUHJvcCgiaGFuZGxlRHJvcCIsbj0+bihlLHQsaXx8U2xpY2UuZW1wdHkscykpKXJldHVybiB2b2lkIHQucHJldmVudERlZmF1bHQoKTtpZighaSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO2xldCBsPWk/ZHJvcFBvaW50KGUuc3RhdGUuZG9jLG8ucG9zLGkpOm8ucG9zO251bGw9PWwmJihsPW8ucG9zKTtsZXQgYT1lLnN0YXRlLnRyO2lmKHMpe2xldHtub2RlOmV9PW47ZT9lLnJlcGxhY2UoYSk6YS5kZWxldGVTZWxlY3Rpb24oKX1sZXQgYz1hLm1hcHBpbmcubWFwKGwpLGQ9MD09aS5vcGVuU3RhcnQmJjA9PWkub3BlbkVuZCYmMT09aS5jb250ZW50LmNoaWxkQ291bnQscD1hLmRvYztkP2EucmVwbGFjZVJhbmdlV2l0aChjLGMsaS5jb250ZW50LmZpcnN0Q2hpbGQpOmEucmVwbGFjZVJhbmdlKGMsYyxpKTtpZihhLmRvYy5lcShwKSlyZXR1cm47bGV0IGY9YS5kb2MucmVzb2x2ZShjKTtpZihkJiZOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShpLmNvbnRlbnQuZmlyc3RDaGlsZCkmJmYubm9kZUFmdGVyJiZmLm5vZGVBZnRlci5zYW1lTWFya3VwKGkuY29udGVudC5maXJzdENoaWxkKSlhLnNldFNlbGVjdGlvbihuZXcgTm9kZVNlbGVjdGlvbihmKSk7ZWxzZXtsZXQgdD1hLm1hcHBpbmcubWFwKGwpO2EubWFwcGluZy5tYXBzW2EubWFwcGluZy5tYXBzLmxlbmd0aC0xXS5mb3JFYWNoKChlLG4scixvKT0+dD1vKSxhLnNldFNlbGVjdGlvbihzZWxlY3Rpb25CZXR3ZWVuKGUsZixhLmRvYy5yZXNvbHZlKHQpKSl9ZS5mb2N1cygpLGUuZGlzcGF0Y2goYS5zZXRNZXRhKCJ1aUV2ZW50IiwiZHJvcCIpKX0oZSx0LGUuZHJhZ2dpbmcpfWZpbmFsbHl7ZS5kcmFnZ2luZz1udWxsfX0sY3QuZm9jdXM9ZT0+e2UuaW5wdXQubGFzdEZvY3VzPURhdGUubm93KCksZS5mb2N1c2VkfHwoZS5kb21PYnNlcnZlci5zdG9wKCksZS5kb20uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3ItZm9jdXNlZCIpLGUuZG9tT2JzZXJ2ZXIuc3RhcnQoKSxlLmZvY3VzZWQ9ITAsc2V0VGltZW91dCgoKT0+e2UuZG9jVmlldyYmZS5oYXNGb2N1cygpJiYhZS5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmVxKGUuZG9tU2VsZWN0aW9uUmFuZ2UoKSkmJnNlbGVjdGlvblRvRE9NKGUpfSwyMCkpfSxjdC5ibHVyPShlLHQpPT57bGV0IG49dDtlLmZvY3VzZWQmJihlLmRvbU9ic2VydmVyLnN0b3AoKSxlLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1mb2N1c2VkIiksZS5kb21PYnNlcnZlci5zdGFydCgpLG4ucmVsYXRlZFRhcmdldCYmZS5kb20uY29udGFpbnMobi5yZWxhdGVkVGFyZ2V0KSYmZS5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmNsZWFyKCksZS5mb2N1c2VkPSExKX0sY3QuYmVmb3JlaW5wdXQ9KGUsdCk9PntpZihWZSYmS2UmJiJkZWxldGVDb250ZW50QmFja3dhcmQiPT10LmlucHV0VHlwZSl7ZS5kb21PYnNlcnZlci5mbHVzaFNvb24oKTtsZXR7ZG9tQ2hhbmdlQ291bnQ6dH09ZS5pbnB1dDtzZXRUaW1lb3V0KCgpPT57aWYoZS5pbnB1dC5kb21DaGFuZ2VDb3VudCE9dClyZXR1cm47aWYoZS5kb20uYmx1cigpLGUuZm9jdXMoKSxlLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIix0PT50KGUsa2V5RXZlbnQoOCwiQmFja3NwYWNlIikpKSlyZXR1cm47bGV0eyRjdXJzb3I6bn09ZS5zdGF0ZS5zZWxlY3Rpb247biYmbi5wb3M+MCYmZS5kaXNwYXRjaChlLnN0YXRlLnRyLmRlbGV0ZShuLnBvcy0xLG4ucG9zKS5zY3JvbGxJbnRvVmlldygpKX0sNTApfX07Zm9yKGxldCBlIGluIGR0KWN0W2VdPWR0W2VdO2Z1bmN0aW9uIGNvbXBhcmVPYmpzKGUsdCl7aWYoZT09dClyZXR1cm4hMDtmb3IobGV0IG4gaW4gZSlpZihlW25dIT09dFtuXSlyZXR1cm4hMTtmb3IobGV0IG4gaW4gdClpZighKG4gaW4gZSkpcmV0dXJuITE7cmV0dXJuITB9Y2xhc3MgV2lkZ2V0VHlwZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudG9ET009ZSx0aGlzLnNwZWM9dHx8eXQsdGhpcy5zaWRlPXRoaXMuc3BlYy5zaWRlfHwwfW1hcChlLHQsbixyKXtsZXR7cG9zOm8sZGVsZXRlZDppfT1lLm1hcFJlc3VsdCh0LmZyb20rcix0aGlzLnNpZGU8MD8tMToxKTtyZXR1cm4gaT9udWxsOm5ldyBEZWNvcmF0aW9uKG8tbixvLW4sdGhpcyl9dmFsaWQoKXtyZXR1cm4hMH1lcShlKXtyZXR1cm4gdGhpcz09ZXx8ZSBpbnN0YW5jZW9mIFdpZGdldFR5cGUmJih0aGlzLnNwZWMua2V5JiZ0aGlzLnNwZWMua2V5PT1lLnNwZWMua2V5fHx0aGlzLnRvRE9NPT1lLnRvRE9NJiZjb21wYXJlT2Jqcyh0aGlzLnNwZWMsZS5zcGVjKSl9ZGVzdHJveShlKXt0aGlzLnNwZWMuZGVzdHJveSYmdGhpcy5zcGVjLmRlc3Ryb3koZSl9fWNsYXNzIElubGluZVR5cGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fHl0fW1hcChlLHQsbixyKXtsZXQgbz1lLm1hcCh0LmZyb20rcix0aGlzLnNwZWMuaW5jbHVzaXZlU3RhcnQ/LTE6MSktbixpPWUubWFwKHQudG8rcix0aGlzLnNwZWMuaW5jbHVzaXZlRW5kPzE6LTEpLW47cmV0dXJuIG8+PWk/bnVsbDpuZXcgRGVjb3JhdGlvbihvLGksdGhpcyl9dmFsaWQoZSx0KXtyZXR1cm4gdC5mcm9tPHQudG99ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fGUgaW5zdGFuY2VvZiBJbmxpbmVUeXBlJiZjb21wYXJlT2Jqcyh0aGlzLmF0dHJzLGUuYXR0cnMpJiZjb21wYXJlT2Jqcyh0aGlzLnNwZWMsZS5zcGVjKX1zdGF0aWMgaXMoZSl7cmV0dXJuIGUudHlwZSBpbnN0YW5jZW9mIElubGluZVR5cGV9ZGVzdHJveSgpe319Y2xhc3MgTm9kZVR5cGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fHl0fW1hcChlLHQsbixyKXtsZXQgbz1lLm1hcFJlc3VsdCh0LmZyb20rciwxKTtpZihvLmRlbGV0ZWQpcmV0dXJuIG51bGw7bGV0IGk9ZS5tYXBSZXN1bHQodC50bytyLC0xKTtyZXR1cm4gaS5kZWxldGVkfHxpLnBvczw9by5wb3M/bnVsbDpuZXcgRGVjb3JhdGlvbihvLnBvcy1uLGkucG9zLW4sdGhpcyl9dmFsaWQoZSx0KXtsZXQgbix7aW5kZXg6cixvZmZzZXQ6b309ZS5jb250ZW50LmZpbmRJbmRleCh0LmZyb20pO3JldHVybiBvPT10LmZyb20mJiEobj1lLmNoaWxkKHIpKS5pc1RleHQmJm8rbi5ub2RlU2l6ZT09dC50b31lcShlKXtyZXR1cm4gdGhpcz09ZXx8ZSBpbnN0YW5jZW9mIE5vZGVUeXBlJiZjb21wYXJlT2Jqcyh0aGlzLmF0dHJzLGUuYXR0cnMpJiZjb21wYXJlT2Jqcyh0aGlzLnNwZWMsZS5zcGVjKX1kZXN0cm95KCl7fX1jbGFzcyBEZWNvcmF0aW9ue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy50eXBlPW59Y29weShlLHQpe3JldHVybiBuZXcgRGVjb3JhdGlvbihlLHQsdGhpcy50eXBlKX1lcShlLHQ9MCl7cmV0dXJuIHRoaXMudHlwZS5lcShlLnR5cGUpJiZ0aGlzLmZyb20rdD09ZS5mcm9tJiZ0aGlzLnRvK3Q9PWUudG99bWFwKGUsdCxuKXtyZXR1cm4gdGhpcy50eXBlLm1hcChlLHRoaXMsdCxuKX1zdGF0aWMgd2lkZ2V0KGUsdCxuKXtyZXR1cm4gbmV3IERlY29yYXRpb24oZSxlLG5ldyBXaWRnZXRUeXBlKHQsbikpfXN0YXRpYyBpbmxpbmUoZSx0LG4scil7cmV0dXJuIG5ldyBEZWNvcmF0aW9uKGUsdCxuZXcgSW5saW5lVHlwZShuLHIpKX1zdGF0aWMgbm9kZShlLHQsbixyKXtyZXR1cm4gbmV3IERlY29yYXRpb24oZSx0LG5ldyBOb2RlVHlwZShuLHIpKX1nZXQgc3BlYygpe3JldHVybiB0aGlzLnR5cGUuc3BlY31nZXQgaW5saW5lKCl7cmV0dXJuIHRoaXMudHlwZSBpbnN0YW5jZW9mIElubGluZVR5cGV9Z2V0IHdpZGdldCgpe3JldHVybiB0aGlzLnR5cGUgaW5zdGFuY2VvZiBXaWRnZXRUeXBlfX1jb25zdCBndD1bXSx5dD17fTtjbGFzcyBEZWNvcmF0aW9uU2V0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sb2NhbD1lLmxlbmd0aD9lOmd0LHRoaXMuY2hpbGRyZW49dC5sZW5ndGg/dDpndH1zdGF0aWMgY3JlYXRlKGUsdCl7cmV0dXJuIHQubGVuZ3RoP2J1aWxkVHJlZSh0LGUsMCx5dCk6a3R9ZmluZChlLHQsbil7bGV0IHI9W107cmV0dXJuIHRoaXMuZmluZElubmVyKG51bGw9PWU/MDplLG51bGw9PXQ/MWU5OnQsciwwLG4pLHJ9ZmluZElubmVyKGUsdCxuLHIsbyl7Zm9yKGxldCBpPTA7aTx0aGlzLmxvY2FsLmxlbmd0aDtpKyspe2xldCBzPXRoaXMubG9jYWxbaV07cy5mcm9tPD10JiZzLnRvPj1lJiYoIW98fG8ocy5zcGVjKSkmJm4ucHVzaChzLmNvcHkocy5mcm9tK3Iscy50bytyKSl9Zm9yKGxldCBpPTA7aTx0aGlzLmNoaWxkcmVuLmxlbmd0aDtpKz0zKWlmKHRoaXMuY2hpbGRyZW5baV08dCYmdGhpcy5jaGlsZHJlbltpKzFdPmUpe2xldCBzPXRoaXMuY2hpbGRyZW5baV0rMTt0aGlzLmNoaWxkcmVuW2krMl0uZmluZElubmVyKGUtcyx0LXMsbixyK3Msbyl9fW1hcChlLHQsbil7cmV0dXJuIHRoaXM9PWt0fHwwPT1lLm1hcHMubGVuZ3RoP3RoaXM6dGhpcy5tYXBJbm5lcihlLHQsMCwwLG58fHl0KX1tYXBJbm5lcihlLHQsbixyLG8pe2xldCBpO2ZvcihsZXQgcz0wO3M8dGhpcy5sb2NhbC5sZW5ndGg7cysrKXtsZXQgbD10aGlzLmxvY2FsW3NdLm1hcChlLG4scik7bCYmbC50eXBlLnZhbGlkKHQsbCk/KGl8fChpPVtdKSkucHVzaChsKTpvLm9uUmVtb3ZlJiZvLm9uUmVtb3ZlKHRoaXMubG9jYWxbc10uc3BlYyl9cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuLHIsbyxpLHMpe2xldCBsPWUuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWk7ZTxuLm1hcHMubGVuZ3RoO2UrKyl7bGV0IHI9MDtuLm1hcHNbZV0uZm9yRWFjaCgoZSxuLG8saSk9PntsZXQgcz1pLW8tKG4tZSk7Zm9yKGxldCBvPTA7bzxsLmxlbmd0aDtvKz0zKXtsZXQgaT1sW28rMV07aWYoaTwwfHxlPmkrdC1yKWNvbnRpbnVlO2xldCBhPWxbb10rdC1yO24+PWE/bFtvKzFdPWU8PWE/LTI6LTE6ZT49dCYmcyYmKGxbb10rPXMsbFtvKzFdKz1zKX1yKz1zfSksdD1uLm1hcHNbZV0ubWFwKHQsLTEpfWxldCBhPSExO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCs9MylpZihsW3QrMV08MCl7aWYoLTI9PWxbdCsxXSl7YT0hMCxsW3QrMV09LTE7Y29udGludWV9bGV0IGM9bi5tYXAoZVt0XStpKSxkPWMtbztpZihkPDB8fGQ+PXIuY29udGVudC5zaXplKXthPSEwO2NvbnRpbnVlfWxldCBwPW4ubWFwKGVbdCsxXStpLC0xKS1vLHtpbmRleDpmLG9mZnNldDptfT1yLmNvbnRlbnQuZmluZEluZGV4KGQpLHk9ci5tYXliZUNoaWxkKGYpO2lmKHkmJm09PWQmJm0reS5ub2RlU2l6ZT09cCl7bGV0IHI9bFt0KzJdLm1hcElubmVyKG4seSxjKzEsZVt0XStpKzEscyk7ciE9a3Q/KGxbdF09ZCxsW3QrMV09cCxsW3QrMl09cik6KGxbdCsxXT0tMixhPSEwKX1lbHNlIGE9ITB9aWYoYSl7bGV0IGE9ZnVuY3Rpb24oZSx0LG4scixvLGkscyl7ZnVuY3Rpb24gZ2F0aGVyKGUsdCl7Zm9yKGxldCBpPTA7aTxlLmxvY2FsLmxlbmd0aDtpKyspe2xldCBsPWUubG9jYWxbaV0ubWFwKHIsbyx0KTtsP24ucHVzaChsKTpzLm9uUmVtb3ZlJiZzLm9uUmVtb3ZlKGUubG9jYWxbaV0uc3BlYyl9Zm9yKGxldCBuPTA7bjxlLmNoaWxkcmVuLmxlbmd0aDtuKz0zKWdhdGhlcihlLmNoaWxkcmVuW24rMl0sZS5jaGlsZHJlbltuXSt0KzEpfWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9MyktMT09ZVtuKzFdJiZnYXRoZXIoZVtuKzJdLHRbbl0raSsxKTtyZXR1cm4gbn0obCxlLHQsbixvLGkscyksYz1idWlsZFRyZWUoYSxyLDAscyk7dD1jLmxvY2FsO2ZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSs9MylsW2UrMV08MCYmKGwuc3BsaWNlKGUsMyksZS09Myk7Zm9yKGxldCBlPTAsdD0wO2U8Yy5jaGlsZHJlbi5sZW5ndGg7ZSs9Myl7bGV0IG49Yy5jaGlsZHJlbltlXTtmb3IoO3Q8bC5sZW5ndGgmJmxbdF08bjspdCs9MztsLnNwbGljZSh0LDAsYy5jaGlsZHJlbltlXSxjLmNoaWxkcmVuW2UrMV0sYy5jaGlsZHJlbltlKzJdKX19cmV0dXJuIG5ldyBEZWNvcmF0aW9uU2V0KHQuc29ydChieVBvcyksbCl9KHRoaXMuY2hpbGRyZW4saXx8W10sZSx0LG4scixvKTppP25ldyBEZWNvcmF0aW9uU2V0KGkuc29ydChieVBvcyksZ3QpOmt0fWFkZChlLHQpe3JldHVybiB0Lmxlbmd0aD90aGlzPT1rdD9EZWNvcmF0aW9uU2V0LmNyZWF0ZShlLHQpOnRoaXMuYWRkSW5uZXIoZSx0LDApOnRoaXN9YWRkSW5uZXIoZSx0LG4pe2xldCByLG89MDtlLmZvckVhY2goKGUsaSk9PntsZXQgcyxsPWkrbjtpZihzPXRha2VTcGFuc0Zvck5vZGUodCxlLGwpKXtmb3Iocnx8KHI9dGhpcy5jaGlsZHJlbi5zbGljZSgpKTtvPHIubGVuZ3RoJiZyW29dPGk7KW8rPTM7cltvXT09aT9yW28rMl09cltvKzJdLmFkZElubmVyKGUscyxsKzEpOnIuc3BsaWNlKG8sMCxpLGkrZS5ub2RlU2l6ZSxidWlsZFRyZWUocyxlLGwrMSx5dCkpLG8rPTN9fSk7bGV0IGk9bW92ZVNwYW5zKG8/d2l0aG91dE51bGxzKHQpOnQsLW4pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWlbdF0udHlwZS52YWxpZChlLGlbdF0pfHxpLnNwbGljZSh0LS0sMSk7cmV0dXJuIG5ldyBEZWNvcmF0aW9uU2V0KGkubGVuZ3RoP3RoaXMubG9jYWwuY29uY2F0KGkpLnNvcnQoYnlQb3MpOnRoaXMubG9jYWwscnx8dGhpcy5jaGlsZHJlbil9cmVtb3ZlKGUpe3JldHVybiAwPT1lLmxlbmd0aHx8dGhpcz09a3Q/dGhpczp0aGlzLnJlbW92ZUlubmVyKGUsMCl9cmVtb3ZlSW5uZXIoZSx0KXtsZXQgbj10aGlzLmNoaWxkcmVuLHI9dGhpcy5sb2NhbDtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrPTMpe2xldCBvLGk9bltyXSt0LHM9bltyKzFdK3Q7Zm9yKGxldCB0LG49MDtuPGUubGVuZ3RoO24rKykodD1lW25dKSYmdC5mcm9tPmkmJnQudG88cyYmKGVbbl09bnVsbCwob3x8KG89W10pKS5wdXNoKHQpKTtpZighbyljb250aW51ZTtuPT10aGlzLmNoaWxkcmVuJiYobj10aGlzLmNoaWxkcmVuLnNsaWNlKCkpO2xldCBsPW5bcisyXS5yZW1vdmVJbm5lcihvLGkrMSk7bCE9a3Q/bltyKzJdPWw6KG4uc3BsaWNlKHIsMyksci09Myl9aWYoci5sZW5ndGgpZm9yKGxldCBuLG89MDtvPGUubGVuZ3RoO28rKylpZihuPWVbb10pZm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspcltlXS5lcShuLHQpJiYocj09dGhpcy5sb2NhbCYmKHI9dGhpcy5sb2NhbC5zbGljZSgpKSxyLnNwbGljZShlLS0sMSkpO3JldHVybiBuPT10aGlzLmNoaWxkcmVuJiZyPT10aGlzLmxvY2FsP3RoaXM6ci5sZW5ndGh8fG4ubGVuZ3RoP25ldyBEZWNvcmF0aW9uU2V0KHIsbik6a3R9Zm9yQ2hpbGQoZSx0KXtpZih0aGlzPT1rdClyZXR1cm4gdGhpcztpZih0LmlzTGVhZilyZXR1cm4gRGVjb3JhdGlvblNldC5lbXB0eTtsZXQgbixyO2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCs9MylpZih0aGlzLmNoaWxkcmVuW3RdPj1lKXt0aGlzLmNoaWxkcmVuW3RdPT1lJiYobj10aGlzLmNoaWxkcmVuW3QrMl0pO2JyZWFrfWxldCBvPWUrMSxpPW8rdC5jb250ZW50LnNpemU7Zm9yKGxldCBlPTA7ZTx0aGlzLmxvY2FsLmxlbmd0aDtlKyspe2xldCB0PXRoaXMubG9jYWxbZV07aWYodC5mcm9tPGkmJnQudG8+byYmdC50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZSl7bGV0IGU9TWF0aC5tYXgobyx0LmZyb20pLW8sbj1NYXRoLm1pbihpLHQudG8pLW87ZTxuJiYocnx8KHI9W10pKS5wdXNoKHQuY29weShlLG4pKX19aWYocil7bGV0IGU9bmV3IERlY29yYXRpb25TZXQoci5zb3J0KGJ5UG9zKSxndCk7cmV0dXJuIG4/bmV3IERlY29yYXRpb25Hcm91cChbZSxuXSk6ZX1yZXR1cm4gbnx8a3R9ZXEoZSl7aWYodGhpcz09ZSlyZXR1cm4hMDtpZighKGUgaW5zdGFuY2VvZiBEZWNvcmF0aW9uU2V0KXx8dGhpcy5sb2NhbC5sZW5ndGghPWUubG9jYWwubGVuZ3RofHx0aGlzLmNoaWxkcmVuLmxlbmd0aCE9ZS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLmxvY2FsLmxlbmd0aDt0KyspaWYoIXRoaXMubG9jYWxbdF0uZXEoZS5sb2NhbFt0XSkpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kz0zKWlmKHRoaXMuY2hpbGRyZW5bdF0hPWUuY2hpbGRyZW5bdF18fHRoaXMuY2hpbGRyZW5bdCsxXSE9ZS5jaGlsZHJlblt0KzFdfHwhdGhpcy5jaGlsZHJlblt0KzJdLmVxKGUuY2hpbGRyZW5bdCsyXSkpcmV0dXJuITE7cmV0dXJuITB9bG9jYWxzKGUpe3JldHVybiByZW1vdmVPdmVybGFwKHRoaXMubG9jYWxzSW5uZXIoZSkpfWxvY2Fsc0lubmVyKGUpe2lmKHRoaXM9PWt0KXJldHVybiBndDtpZihlLmlubGluZUNvbnRlbnR8fCF0aGlzLmxvY2FsLnNvbWUoSW5saW5lVHlwZS5pcykpcmV0dXJuIHRoaXMubG9jYWw7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmxvY2FsLmxlbmd0aDtlKyspdGhpcy5sb2NhbFtlXS50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZXx8dC5wdXNoKHRoaXMubG9jYWxbZV0pO3JldHVybiB0fWZvckVhY2hTZXQoZSl7ZSh0aGlzKX19RGVjb3JhdGlvblNldC5lbXB0eT1uZXcgRGVjb3JhdGlvblNldChbXSxbXSksRGVjb3JhdGlvblNldC5yZW1vdmVPdmVybGFwPXJlbW92ZU92ZXJsYXA7Y29uc3Qga3Q9RGVjb3JhdGlvblNldC5lbXB0eTtjbGFzcyBEZWNvcmF0aW9uR3JvdXB7Y29uc3RydWN0b3IoZSl7dGhpcy5tZW1iZXJzPWV9bWFwKGUsdCl7Y29uc3Qgbj10aGlzLm1lbWJlcnMubWFwKG49Pm4ubWFwKGUsdCx5dCkpO3JldHVybiBEZWNvcmF0aW9uR3JvdXAuZnJvbShuKX1mb3JDaGlsZChlLHQpe2lmKHQuaXNMZWFmKXJldHVybiBEZWNvcmF0aW9uU2V0LmVtcHR5O2xldCBuPVtdO2ZvcihsZXQgcj0wO3I8dGhpcy5tZW1iZXJzLmxlbmd0aDtyKyspe2xldCBvPXRoaXMubWVtYmVyc1tyXS5mb3JDaGlsZChlLHQpO28hPWt0JiYobyBpbnN0YW5jZW9mIERlY29yYXRpb25Hcm91cD9uPW4uY29uY2F0KG8ubWVtYmVycyk6bi5wdXNoKG8pKX1yZXR1cm4gRGVjb3JhdGlvbkdyb3VwLmZyb20obil9ZXEoZSl7aWYoIShlIGluc3RhbmNlb2YgRGVjb3JhdGlvbkdyb3VwKXx8ZS5tZW1iZXJzLmxlbmd0aCE9dGhpcy5tZW1iZXJzLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMubWVtYmVycy5sZW5ndGg7dCsrKWlmKCF0aGlzLm1lbWJlcnNbdF0uZXEoZS5tZW1iZXJzW3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1sb2NhbHMoZSl7bGV0IHQsbj0hMDtmb3IobGV0IHI9MDtyPHRoaXMubWVtYmVycy5sZW5ndGg7cisrKXtsZXQgbz10aGlzLm1lbWJlcnNbcl0ubG9jYWxzSW5uZXIoZSk7aWYoby5sZW5ndGgpaWYodCl7biYmKHQ9dC5zbGljZSgpLG49ITEpO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXQucHVzaChvW2VdKX1lbHNlIHQ9b31yZXR1cm4gdD9yZW1vdmVPdmVybGFwKG4/dDp0LnNvcnQoYnlQb3MpKTpndH1zdGF0aWMgZnJvbShlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4ga3Q7Y2FzZSAxOnJldHVybiBlWzBdO2RlZmF1bHQ6cmV0dXJuIG5ldyBEZWNvcmF0aW9uR3JvdXAoZS5ldmVyeShlPT5lIGluc3RhbmNlb2YgRGVjb3JhdGlvblNldCk/ZTplLnJlZHVjZSgoZSx0KT0+ZS5jb25jYXQodCBpbnN0YW5jZW9mIERlY29yYXRpb25TZXQ/dDp0Lm1lbWJlcnMpLFtdKSl9fWZvckVhY2hTZXQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm1lbWJlcnMubGVuZ3RoO3QrKyl0aGlzLm1lbWJlcnNbdF0uZm9yRWFjaFNldChlKX19ZnVuY3Rpb24gbW92ZVNwYW5zKGUsdCl7aWYoIXR8fCFlLmxlbmd0aClyZXR1cm4gZTtsZXQgbj1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IG89ZVtyXTtuLnB1c2gobmV3IERlY29yYXRpb24oby5mcm9tK3Qsby50byt0LG8udHlwZSkpfXJldHVybiBufWZ1bmN0aW9uIHRha2VTcGFuc0Zvck5vZGUoZSx0LG4pe2lmKHQuaXNMZWFmKXJldHVybiBudWxsO2xldCByPW4rdC5ub2RlU2l6ZSxvPW51bGw7Zm9yKGxldCB0LGk9MDtpPGUubGVuZ3RoO2krKykodD1lW2ldKSYmdC5mcm9tPm4mJnQudG88ciYmKChvfHwobz1bXSkpLnB1c2godCksZVtpXT1udWxsKTtyZXR1cm4gb31mdW5jdGlvbiB3aXRob3V0TnVsbHMoZSl7bGV0IHQ9W107Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspbnVsbCE9ZVtuXSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGJ1aWxkVHJlZShlLHQsbixyKXtsZXQgbz1bXSxpPSExO3QuZm9yRWFjaCgodCxzKT0+e2xldCBsPXRha2VTcGFuc0Zvck5vZGUoZSx0LHMrbik7aWYobCl7aT0hMDtsZXQgZT1idWlsZFRyZWUobCx0LG4rcysxLHIpO2UhPWt0JiZvLnB1c2gocyxzK3Qubm9kZVNpemUsZSl9fSk7bGV0IHM9bW92ZVNwYW5zKGk/d2l0aG91dE51bGxzKGUpOmUsLW4pLnNvcnQoYnlQb3MpO2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXNbZV0udHlwZS52YWxpZCh0LHNbZV0pfHwoci5vblJlbW92ZSYmci5vblJlbW92ZShzW2VdLnNwZWMpLHMuc3BsaWNlKGUtLSwxKSk7cmV0dXJuIHMubGVuZ3RofHxvLmxlbmd0aD9uZXcgRGVjb3JhdGlvblNldChzLG8pOmt0fWZ1bmN0aW9uIGJ5UG9zKGUsdCl7cmV0dXJuIGUuZnJvbS10LmZyb218fGUudG8tdC50b31mdW5jdGlvbiByZW1vdmVPdmVybGFwKGUpe2xldCB0PWU7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aC0xO24rKyl7bGV0IHI9dFtuXTtpZihyLmZyb20hPXIudG8pZm9yKGxldCBvPW4rMTtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvXTtpZihpLmZyb20hPXIuZnJvbSl7aS5mcm9tPHIudG8mJih0PT1lJiYodD1lLnNsaWNlKCkpLHRbbl09ci5jb3B5KHIuZnJvbSxpLmZyb20pLGluc2VydEFoZWFkKHQsbyxyLmNvcHkoaS5mcm9tLHIudG8pKSk7YnJlYWt9aS50byE9ci50byYmKHQ9PWUmJih0PWUuc2xpY2UoKSksdFtvXT1pLmNvcHkoaS5mcm9tLHIudG8pLGluc2VydEFoZWFkKHQsbysxLGkuY29weShyLnRvLGkudG8pKSl9fXJldHVybiB0fWZ1bmN0aW9uIGluc2VydEFoZWFkKGUsdCxuKXtmb3IoO3Q8ZS5sZW5ndGgmJmJ5UG9zKG4sZVt0XSk+MDspdCsrO2Uuc3BsaWNlKHQsMCxuKX1mdW5jdGlvbiB2aWV3RGVjb3JhdGlvbnMoZSl7bGV0IHQ9W107cmV0dXJuIGUuc29tZVByb3AoImRlY29yYXRpb25zIixuPT57bGV0IHI9bihlLnN0YXRlKTtyJiZyIT1rdCYmdC5wdXNoKHIpfSksZS5jdXJzb3JXcmFwcGVyJiZ0LnB1c2goRGVjb3JhdGlvblNldC5jcmVhdGUoZS5zdGF0ZS5kb2MsW2UuY3Vyc29yV3JhcHBlci5kZWNvXSkpLERlY29yYXRpb25Hcm91cC5mcm9tKHQpfWNvbnN0IHd0PXtjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMCxjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6ITAsYXR0cmlidXRlczohMCxhdHRyaWJ1dGVPbGRWYWx1ZTohMCxzdWJ0cmVlOiEwfSxidD16ZSYmQmU8PTExO2NsYXNzIFNlbGVjdGlvblN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5hbmNob3JOb2RlPW51bGwsdGhpcy5hbmNob3JPZmZzZXQ9MCx0aGlzLmZvY3VzTm9kZT1udWxsLHRoaXMuZm9jdXNPZmZzZXQ9MH1zZXQoZSl7dGhpcy5hbmNob3JOb2RlPWUuYW5jaG9yTm9kZSx0aGlzLmFuY2hvck9mZnNldD1lLmFuY2hvck9mZnNldCx0aGlzLmZvY3VzTm9kZT1lLmZvY3VzTm9kZSx0aGlzLmZvY3VzT2Zmc2V0PWUuZm9jdXNPZmZzZXR9Y2xlYXIoKXt0aGlzLmFuY2hvck5vZGU9dGhpcy5mb2N1c05vZGU9bnVsbH1lcShlKXtyZXR1cm4gZS5hbmNob3JOb2RlPT10aGlzLmFuY2hvck5vZGUmJmUuYW5jaG9yT2Zmc2V0PT10aGlzLmFuY2hvck9mZnNldCYmZS5mb2N1c05vZGU9PXRoaXMuZm9jdXNOb2RlJiZlLmZvY3VzT2Zmc2V0PT10aGlzLmZvY3VzT2Zmc2V0fX1jbGFzcyBET01PYnNlcnZlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMudmlldz1lLHRoaXMuaGFuZGxlRE9NQ2hhbmdlPXQsdGhpcy5xdWV1ZT1bXSx0aGlzLmZsdXNoaW5nU29vbj0tMSx0aGlzLm9ic2VydmVyPW51bGwsdGhpcy5jdXJyZW50U2VsZWN0aW9uPW5ldyBTZWxlY3Rpb25TdGF0ZSx0aGlzLm9uQ2hhckRhdGE9bnVsbCx0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcz0hMSx0aGlzLmxhc3RDaGFuZ2VkVGV4dE5vZGU9bnVsbCx0aGlzLm9ic2VydmVyPXdpbmRvdy5NdXRhdGlvbk9ic2VydmVyJiZuZXcgd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIodD0+e2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMucXVldWUucHVzaCh0W2VdKTt6ZSYmQmU8PTExJiZ0LnNvbWUoZT0+ImNoaWxkTGlzdCI9PWUudHlwZSYmZS5yZW1vdmVkTm9kZXMubGVuZ3RofHwiY2hhcmFjdGVyRGF0YSI9PWUudHlwZSYmZS5vbGRWYWx1ZS5sZW5ndGg+ZS50YXJnZXQubm9kZVZhbHVlLmxlbmd0aCk/dGhpcy5mbHVzaFNvb24oKTpqZSYmZS5jb21wb3NpbmcmJnQuc29tZShlPT4iY2hpbGRMaXN0Ij09ZS50eXBlJiYiVFIiPT1lLnRhcmdldC5ub2RlTmFtZSk/KGUuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb249ITAsdGhpcy5mbHVzaFNvb24oKSk6dGhpcy5mbHVzaCgpfSksYnQmJih0aGlzLm9uQ2hhckRhdGE9ZT0+e3RoaXMucXVldWUucHVzaCh7dGFyZ2V0OmUudGFyZ2V0LHR5cGU6ImNoYXJhY3RlckRhdGEiLG9sZFZhbHVlOmUucHJldlZhbHVlfSksdGhpcy5mbHVzaFNvb24oKX0pLHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9dGhpcy5vblNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpfWZsdXNoU29vbigpe3RoaXMuZmx1c2hpbmdTb29uPDAmJih0aGlzLmZsdXNoaW5nU29vbj13aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMuZmx1c2hpbmdTb29uPS0xLHRoaXMuZmx1c2goKX0sMjApKX1mb3JjZUZsdXNoKCl7dGhpcy5mbHVzaGluZ1Nvb24+LTEmJih3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuZmx1c2hpbmdTb29uKSx0aGlzLmZsdXNoaW5nU29vbj0tMSx0aGlzLmZsdXNoKCkpfXN0YXJ0KCl7dGhpcy5vYnNlcnZlciYmKHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSx0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy52aWV3LmRvbSx3dCkpLHRoaXMub25DaGFyRGF0YSYmdGhpcy52aWV3LmRvbS5hZGRFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLHRoaXMub25DaGFyRGF0YSksdGhpcy5jb25uZWN0U2VsZWN0aW9uKCl9c3RvcCgpe2lmKHRoaXMub2JzZXJ2ZXIpe2xldCBlPXRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKTtpZihlLmxlbmd0aCl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5xdWV1ZS5wdXNoKGVbdF0pO3dpbmRvdy5zZXRUaW1lb3V0KCgpPT50aGlzLmZsdXNoKCksMjApfXRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpfXRoaXMub25DaGFyRGF0YSYmdGhpcy52aWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLHRoaXMub25DaGFyRGF0YSksdGhpcy5kaXNjb25uZWN0U2VsZWN0aW9uKCl9Y29ubmVjdFNlbGVjdGlvbigpe3RoaXMudmlldy5kb20ub3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHRoaXMub25TZWxlY3Rpb25DaGFuZ2UpfWRpc2Nvbm5lY3RTZWxlY3Rpb24oKXt0aGlzLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIix0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKX1zdXBwcmVzc1NlbGVjdGlvblVwZGF0ZXMoKXt0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcz0hMCxzZXRUaW1lb3V0KCgpPT50aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcz0hMSw1MCl9b25TZWxlY3Rpb25DaGFuZ2UoKXtpZihoYXNGb2N1c0FuZFNlbGVjdGlvbih0aGlzLnZpZXcpKXtpZih0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcylyZXR1cm4gc2VsZWN0aW9uVG9ET00odGhpcy52aWV3KTtpZih6ZSYmQmU8PTExJiYhdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi5lbXB0eSl7bGV0IGU9dGhpcy52aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7aWYoZS5mb2N1c05vZGUmJmlzRXF1aXZhbGVudFBvc2l0aW9uKGUuZm9jdXNOb2RlLGUuZm9jdXNPZmZzZXQsZS5hbmNob3JOb2RlLGUuYW5jaG9yT2Zmc2V0KSlyZXR1cm4gdGhpcy5mbHVzaFNvb24oKX10aGlzLmZsdXNoKCl9fXNldEN1clNlbGVjdGlvbigpe3RoaXMuY3VycmVudFNlbGVjdGlvbi5zZXQodGhpcy52aWV3LmRvbVNlbGVjdGlvblJhbmdlKCkpfWlnbm9yZVNlbGVjdGlvbkNoYW5nZShlKXtpZighZS5mb2N1c05vZGUpcmV0dXJuITA7bGV0IHQsbj1uZXcgU2V0O2ZvcihsZXQgdD1lLmZvY3VzTm9kZTt0O3Q9cGFyZW50Tm9kZSh0KSluLmFkZCh0KTtmb3IobGV0IHI9ZS5hbmNob3JOb2RlO3I7cj1wYXJlbnROb2RlKHIpKWlmKG4uaGFzKHIpKXt0PXI7YnJlYWt9bGV0IHI9dCYmdGhpcy52aWV3LmRvY1ZpZXcubmVhcmVzdERlc2ModCk7cmV0dXJuIHImJnIuaWdub3JlTXV0YXRpb24oe3R5cGU6InNlbGVjdGlvbiIsdGFyZ2V0OjM9PXQubm9kZVR5cGU/dC5wYXJlbnROb2RlOnR9KT8odGhpcy5zZXRDdXJTZWxlY3Rpb24oKSwhMCk6dm9pZCAwfXBlbmRpbmdSZWNvcmRzKCl7aWYodGhpcy5vYnNlcnZlcilmb3IobGV0IGUgb2YgdGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpKXRoaXMucXVldWUucHVzaChlKTtyZXR1cm4gdGhpcy5xdWV1ZX1mbHVzaCgpe2xldHt2aWV3OmV9PXRoaXM7aWYoIWUuZG9jVmlld3x8dGhpcy5mbHVzaGluZ1Nvb24+LTEpcmV0dXJuO2xldCB0PXRoaXMucGVuZGluZ1JlY29yZHMoKTt0Lmxlbmd0aCYmKHRoaXMucXVldWU9W10pO2xldCBuPWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxyPSF0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcyYmIXRoaXMuY3VycmVudFNlbGVjdGlvbi5lcShuKSYmaGFzRm9jdXNBbmRTZWxlY3Rpb24oZSkmJiF0aGlzLmlnbm9yZVNlbGVjdGlvbkNoYW5nZShuKSxvPS0xLGk9LTEscz0hMSxsPVtdO2lmKGUuZWRpdGFibGUpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRoaXMucmVnaXN0ZXJNdXRhdGlvbih0W2VdLGwpO24mJihvPW88MD9uLmZyb206TWF0aC5taW4obi5mcm9tLG8pLGk9aTwwP24udG86TWF0aC5tYXgobi50byxpKSxuLnR5cGVPdmVyJiYocz0hMCkpfWlmKCFsLnNvbWUoZT0+IkJSIj09ZS5ub2RlTmFtZSl8fDghPWUuaW5wdXQubGFzdEtleUNvZGUmJjQ2IT1lLmlucHV0Lmxhc3RLZXlDb2RlKXtpZihGZSYmbC5sZW5ndGgpe2xldCB0PWwuZmlsdGVyKGU9PiJCUiI9PWUubm9kZU5hbWUpO2lmKDI9PXQubGVuZ3RoKXtsZXRbZSxuXT10O2UucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnBhcmVudE5vZGU9PW4ucGFyZW50Tm9kZT9uLnJlbW92ZSgpOmUucmVtb3ZlKCl9ZWxzZXtsZXR7Zm9jdXNOb2RlOm59PXRoaXMuY3VycmVudFNlbGVjdGlvbjtmb3IobGV0IHIgb2YgdCl7bGV0IHQ9ci5wYXJlbnROb2RlOyF0fHwiTEkiIT10Lm5vZGVOYW1lfHxuJiZibG9ja1BhcmVudChlLG4pPT10fHxyLnJlbW92ZSgpfX19fWVsc2UgZm9yKGxldCBlIG9mIGwpaWYoIkJSIj09ZS5ub2RlTmFtZSYmZS5wYXJlbnROb2RlKXtsZXQgdD1lLm5leHRTaWJsaW5nO2Zvcig7dCYmMT09dC5ub2RlVHlwZTspe2lmKCJmYWxzZSI9PXQuY29udGVudEVkaXRhYmxlKXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7YnJlYWt9dD10LmZpcnN0Q2hpbGR9fWxldCBhPW51bGw7bzwwJiZyJiZlLmlucHV0Lmxhc3RGb2N1cz5EYXRlLm5vdygpLTIwMCYmTWF0aC5tYXgoZS5pbnB1dC5sYXN0VG91Y2gsZS5pbnB1dC5sYXN0Q2xpY2sudGltZSk8RGF0ZS5ub3coKS0zMDAmJnNlbGVjdGlvbkNvbGxhcHNlZChuKSYmKGE9c2VsZWN0aW9uRnJvbURPTShlKSkmJmEuZXEoU2VsZWN0aW9uLm5lYXIoZS5zdGF0ZS5kb2MucmVzb2x2ZSgwKSwxKSk/KGUuaW5wdXQubGFzdEZvY3VzPTAsc2VsZWN0aW9uVG9ET00oZSksdGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldChuKSxlLnNjcm9sbFRvU2VsZWN0aW9uKCkpOihvPi0xfHxyKSYmKG8+LTEmJihlLmRvY1ZpZXcubWFya0RpcnR5KG8saSksZnVuY3Rpb24oZSl7aWYodnQuaGFzKGUpKXJldHVybjtpZih2dC5zZXQoZSxudWxsKSwtMSE9PVsibm9ybWFsIiwibm93cmFwIiwicHJlLWxpbmUiXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUoZS5kb20pLndoaXRlU3BhY2UpKXtpZihlLnJlcXVpcmVzR2Vja29IYWNrTm9kZT1GZSx4dClyZXR1cm47Y29uc29sZS53YXJuKCJQcm9zZU1pcnJvciBleHBlY3RzIHRoZSBDU1Mgd2hpdGUtc3BhY2UgcHJvcGVydHkgdG8gYmUgc2V0LCBwcmVmZXJhYmx5IHRvICdwcmUtd3JhcCcuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGxvYWQgc3R5bGUvcHJvc2VtaXJyb3IuY3NzIGZyb20gdGhlIHByb3NlbWlycm9yLXZpZXcgcGFja2FnZS4iKSx4dD0hMH19KGUpKSxlLmlucHV0LmJhZFNhZmFyaUNvbXBvc2l0aW9uJiYoZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMSxmdW5jdGlvbihlLHQpe3ZhciBuO2xldHtmb2N1c05vZGU6cixmb2N1c09mZnNldDpvfT1lLmRvbVNlbGVjdGlvblJhbmdlKCk7Zm9yKGxldCBpIG9mIHQpaWYoIlRSIj09KG51bGw9PT0obj1pLnBhcmVudE5vZGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm5vZGVOYW1lKSl7bGV0IHQ9aS5uZXh0U2libGluZztmb3IoO3QmJiJURCIhPXQubm9kZU5hbWUmJiJUSCIhPXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZztpZih0KXtsZXQgbj10O2Zvcig7Oyl7bGV0IGU9bi5maXJzdENoaWxkO2lmKCFlfHwxIT1lLm5vZGVUeXBlfHwiZmFsc2UiPT1lLmNvbnRlbnRFZGl0YWJsZXx8L14oQlJ8SU1HKSQvLnRlc3QoZS5ub2RlTmFtZSkpYnJlYWs7bj1lfW4uaW5zZXJ0QmVmb3JlKGksbi5maXJzdENoaWxkKSxyPT1pJiZlLmRvbVNlbGVjdGlvbigpLmNvbGxhcHNlKGksbyl9ZWxzZSBpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSl9fShlLGwpKSx0aGlzLmhhbmRsZURPTUNoYW5nZShvLGkscyxsKSxlLmRvY1ZpZXcmJmUuZG9jVmlldy5kaXJ0eT9lLnVwZGF0ZVN0YXRlKGUuc3RhdGUpOnRoaXMuY3VycmVudFNlbGVjdGlvbi5lcShuKXx8c2VsZWN0aW9uVG9ET00oZSksdGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldChuKSl9cmVnaXN0ZXJNdXRhdGlvbihlLHQpe2lmKHQuaW5kZXhPZihlLnRhcmdldCk+LTEpcmV0dXJuIG51bGw7bGV0IG49dGhpcy52aWV3LmRvY1ZpZXcubmVhcmVzdERlc2MoZS50YXJnZXQpO2lmKCJhdHRyaWJ1dGVzIj09ZS50eXBlJiYobj09dGhpcy52aWV3LmRvY1ZpZXd8fCJjb250ZW50ZWRpdGFibGUiPT1lLmF0dHJpYnV0ZU5hbWV8fCJzdHlsZSI9PWUuYXR0cmlidXRlTmFtZSYmIWUub2xkVmFsdWUmJiFlLnRhcmdldC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpKXJldHVybiBudWxsO2lmKCFufHxuLmlnbm9yZU11dGF0aW9uKGUpKXJldHVybiBudWxsO2lmKCJjaGlsZExpc3QiPT1lLnR5cGUpe2ZvcihsZXQgbj0wO248ZS5hZGRlZE5vZGVzLmxlbmd0aDtuKyspe2xldCByPWUuYWRkZWROb2Rlc1tuXTt0LnB1c2gociksMz09ci5ub2RlVHlwZSYmKHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1yKX1pZihuLmNvbnRlbnRET00mJm4uY29udGVudERPTSE9bi5kb20mJiFuLmNvbnRlbnRET00uY29udGFpbnMoZS50YXJnZXQpKXJldHVybntmcm9tOm4ucG9zQmVmb3JlLHRvOm4ucG9zQWZ0ZXJ9O2xldCByPWUucHJldmlvdXNTaWJsaW5nLG89ZS5uZXh0U2libGluZztpZih6ZSYmQmU8PTExJiZlLmFkZGVkTm9kZXMubGVuZ3RoKWZvcihsZXQgdD0wO3Q8ZS5hZGRlZE5vZGVzLmxlbmd0aDt0Kyspe2xldHtwcmV2aW91c1NpYmxpbmc6bixuZXh0U2libGluZzppfT1lLmFkZGVkTm9kZXNbdF07KCFufHxBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUuYWRkZWROb2RlcyxuKTwwKSYmKHI9biksKCFpfHxBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUuYWRkZWROb2RlcyxpKTwwKSYmKG89aSl9bGV0IGk9ciYmci5wYXJlbnROb2RlPT1lLnRhcmdldD9kb21JbmRleChyKSsxOjAscz1uLmxvY2FsUG9zRnJvbURPTShlLnRhcmdldCxpLC0xKSxsPW8mJm8ucGFyZW50Tm9kZT09ZS50YXJnZXQ/ZG9tSW5kZXgobyk6ZS50YXJnZXQuY2hpbGROb2Rlcy5sZW5ndGg7cmV0dXJue2Zyb206cyx0bzpuLmxvY2FsUG9zRnJvbURPTShlLnRhcmdldCxsLDEpfX1yZXR1cm4iYXR0cmlidXRlcyI9PWUudHlwZT97ZnJvbTpuLnBvc0F0U3RhcnQtbi5ib3JkZXIsdG86bi5wb3NBdEVuZCtuLmJvcmRlcn06KHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1lLnRhcmdldCx7ZnJvbTpuLnBvc0F0U3RhcnQsdG86bi5wb3NBdEVuZCx0eXBlT3ZlcjplLnRhcmdldC5ub2RlVmFsdWU9PWUub2xkVmFsdWV9KX19bGV0IHZ0PW5ldyBXZWFrTWFwLHh0PSExO2Z1bmN0aW9uIHJhbmdlVG9TZWxlY3Rpb25SYW5nZShlLHQpe2xldCBuPXQuc3RhcnRDb250YWluZXIscj10LnN0YXJ0T2Zmc2V0LG89dC5lbmRDb250YWluZXIsaT10LmVuZE9mZnNldCxzPWUuZG9tQXRQb3MoZS5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yKTtyZXR1cm4gaXNFcXVpdmFsZW50UG9zaXRpb24ocy5ub2RlLHMub2Zmc2V0LG8saSkmJihbbixyLG8saV09W28saSxuLHJdKSx7YW5jaG9yTm9kZTpuLGFuY2hvck9mZnNldDpyLGZvY3VzTm9kZTpvLGZvY3VzT2Zmc2V0Oml9fWZ1bmN0aW9uIGJsb2NrUGFyZW50KGUsdCl7Zm9yKGxldCBuPXQucGFyZW50Tm9kZTtuJiZuIT1lLmRvbTtuPW4ucGFyZW50Tm9kZSl7bGV0IHQ9ZS5kb2NWaWV3Lm5lYXJlc3REZXNjKG4sITApO2lmKHQmJnQubm9kZS5pc0Jsb2NrKXJldHVybiBufXJldHVybiBudWxsfWZ1bmN0aW9uIHJ1bGVGcm9tTm9kZShlKXtsZXQgdD1lLnBtVmlld0Rlc2M7aWYodClyZXR1cm4gdC5wYXJzZVJ1bGUoKTtpZigiQlIiPT1lLm5vZGVOYW1lJiZlLnBhcmVudE5vZGUpe2lmKGplJiYvXih1bHxvbCkkL2kudGVzdChlLnBhcmVudE5vZGUubm9kZU5hbWUpKXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpKSx7c2tpcDplfX1pZihlLnBhcmVudE5vZGUubGFzdENoaWxkPT1lfHxqZSYmL14odHJ8dGFibGUpJC9pLnRlc3QoZS5wYXJlbnROb2RlLm5vZGVOYW1lKSlyZXR1cm57aWdub3JlOiEwfX1lbHNlIGlmKCJJTUciPT1lLm5vZGVOYW1lJiZlLmdldEF0dHJpYnV0ZSgibWFyay1wbGFjZWhvbGRlciIpKXJldHVybntpZ25vcmU6ITB9O3JldHVybiBudWxsfWNvbnN0IFN0PS9eKGF8YWJicnxhY3JvbnltfGJ8YmRbaW9dfGJpZ3xicnxidXR0b258Y2l0ZXxjb2RlfGRhdGEobGlzdCk/fGRlbHxkZm58ZW18aXxpbWd8aW5zfGtiZHxsYWJlbHxtYXB8bWFya3xtZXRlcnxvdXRwdXR8cXxydWJ5fHN8c2FtcHxzbWFsbHxzcGFufHN0cm9uZ3xzdVticF18dGltZXx1fHR0fHZhcikkL2k7ZnVuY3Rpb24gcmVhZERPTUNoYW5nZShlLHQsbixyLG8pe2xldCBpPWUuaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlc3x8KGUuY29tcG9zaW5nP2UuaW5wdXQuY29tcG9zaXRpb25JRDowKTtpZihlLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCx0PDApe2xldCB0PWUuaW5wdXQubGFzdFNlbGVjdGlvblRpbWU+RGF0ZS5ub3coKS01MD9lLmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW46bnVsbCxuPXNlbGVjdGlvbkZyb21ET00oZSx0KTtpZihuJiYhZS5zdGF0ZS5zZWxlY3Rpb24uZXEobikpe2lmKFZlJiZLZSYmMTM9PT1lLmlucHV0Lmxhc3RLZXlDb2RlJiZEYXRlLm5vdygpLTEwMDxlLmlucHV0Lmxhc3RLZXlDb2RlVGltZSYmZS5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsdD0+dChlLGtleUV2ZW50KDEzLCJFbnRlciIpKSkpcmV0dXJuO2xldCByPWUuc3RhdGUudHIuc2V0U2VsZWN0aW9uKG4pOyJwb2ludGVyIj09dD9yLnNldE1ldGEoInBvaW50ZXIiLCEwKToia2V5Ij09dCYmci5zY3JvbGxJbnRvVmlldygpLGkmJnIuc2V0TWV0YSgiY29tcG9zaXRpb24iLGkpLGUuZGlzcGF0Y2gocil9cmV0dXJufWxldCBzPWUuc3RhdGUuZG9jLnJlc29sdmUodCksbD1zLnNoYXJlZERlcHRoKG4pO3Q9cy5iZWZvcmUobCsxKSxuPWUuc3RhdGUuZG9jLnJlc29sdmUobikuYWZ0ZXIobCsxKTtsZXQgYSxjLGQ9ZS5zdGF0ZS5zZWxlY3Rpb24scD1mdW5jdGlvbihlLHQsbil7bGV0IHIse25vZGU6byxmcm9tT2Zmc2V0OmksdG9PZmZzZXQ6cyxmcm9tOmwsdG86YX09ZS5kb2NWaWV3LnBhcnNlUmFuZ2UodCxuKSxjPWUuZG9tU2VsZWN0aW9uUmFuZ2UoKSxkPWMuYW5jaG9yTm9kZTtpZihkJiZlLmRvbS5jb250YWlucygxPT1kLm5vZGVUeXBlP2Q6ZC5wYXJlbnROb2RlKSYmKHI9W3tub2RlOmQsb2Zmc2V0OmMuYW5jaG9yT2Zmc2V0fV0sc2VsZWN0aW9uQ29sbGFwc2VkKGMpfHxyLnB1c2goe25vZGU6Yy5mb2N1c05vZGUsb2Zmc2V0OmMuZm9jdXNPZmZzZXR9KSksVmUmJjg9PT1lLmlucHV0Lmxhc3RLZXlDb2RlKWZvcihsZXQgZT1zO2U+aTtlLS0pe2xldCB0PW8uY2hpbGROb2Rlc1tlLTFdLG49dC5wbVZpZXdEZXNjO2lmKCJCUiI9PXQubm9kZU5hbWUmJiFuKXtzPWU7YnJlYWt9aWYoIW58fG4uc2l6ZSlicmVha31sZXQgcD1lLnN0YXRlLmRvYyxmPWUuc29tZVByb3AoImRvbVBhcnNlciIpfHxET01QYXJzZXIuZnJvbVNjaGVtYShlLnN0YXRlLnNjaGVtYSksbT1wLnJlc29sdmUobCkseT1udWxsLHc9Zi5wYXJzZShvLHt0b3BOb2RlOm0ucGFyZW50LHRvcE1hdGNoOm0ucGFyZW50LmNvbnRlbnRNYXRjaEF0KG0uaW5kZXgoKSksdG9wT3BlbjohMCxmcm9tOmksdG86cyxwcmVzZXJ2ZVdoaXRlc3BhY2U6InByZSIhPW0ucGFyZW50LnR5cGUud2hpdGVzcGFjZXx8ImZ1bGwiLGZpbmRQb3NpdGlvbnM6cixydWxlRnJvbU5vZGU6cnVsZUZyb21Ob2RlLGNvbnRleHQ6bX0pO2lmKHImJm51bGwhPXJbMF0ucG9zKXtsZXQgZT1yWzBdLnBvcyx0PXJbMV0mJnJbMV0ucG9zO251bGw9PXQmJih0PWUpLHk9e2FuY2hvcjplK2wsaGVhZDp0K2x9fXJldHVybntkb2M6dyxzZWw6eSxmcm9tOmwsdG86YX19KGUsdCxuKSxmPWUuc3RhdGUuZG9jLG09Zi5zbGljZShwLmZyb20scC50byk7OD09PWUuaW5wdXQubGFzdEtleUNvZGUmJkRhdGUubm93KCktMTAwPGUuaW5wdXQubGFzdEtleUNvZGVUaW1lPyhhPWUuc3RhdGUuc2VsZWN0aW9uLnRvLGM9ImVuZCIpOihhPWUuc3RhdGUuc2VsZWN0aW9uLmZyb20sYz0ic3RhcnQiKSxlLmlucHV0Lmxhc3RLZXlDb2RlPW51bGw7bGV0IHk9ZnVuY3Rpb24oZSx0LG4scixvKXtsZXQgaT1lLmZpbmREaWZmU3RhcnQodCxuKTtpZihudWxsPT1pKXJldHVybiBudWxsO2xldHthOnMsYjpsfT1lLmZpbmREaWZmRW5kKHQsbitlLnNpemUsbit0LnNpemUpO2lmKCJlbmQiPT1vKXtyLT1zK01hdGgubWF4KDAsaS1NYXRoLm1pbihzLGwpKS1pfWlmKHM8aSYmZS5zaXplPHQuc2l6ZSl7bGV0IGU9cjw9aSYmcj49cz9pLXI6MDtpLT1lLGkmJmk8dC5zaXplJiZpc1N1cnJvZ2F0ZVBhaXIodC50ZXh0QmV0d2VlbihpLTEsaSsxKSkmJihpKz1lPzE6LTEpLGw9aSsobC1zKSxzPWl9ZWxzZSBpZihsPGkpe2xldCB0PXI8PWkmJnI+PWw/aS1yOjA7aS09dCxpJiZpPGUuc2l6ZSYmaXNTdXJyb2dhdGVQYWlyKGUudGV4dEJldHdlZW4oaS0xLGkrMSkpJiYoaSs9dD8xOi0xKSxzPWkrKHMtbCksbD1pfXJldHVybntzdGFydDppLGVuZEE6cyxlbmRCOmx9fShtLmNvbnRlbnQscC5kb2MuY29udGVudCxwLmZyb20sYSxjKTtpZih5JiZlLmlucHV0LmRvbUNoYW5nZUNvdW50KyssKHFlJiZlLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNXx8S2UpJiZvLnNvbWUoZT0+MT09ZS5ub2RlVHlwZSYmIVN0LnRlc3QoZS5ub2RlTmFtZSkpJiYoIXl8fHkuZW5kQT49eS5lbmRCKSYmZS5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsdD0+dChlLGtleUV2ZW50KDEzLCJFbnRlciIpKSkpcmV0dXJuIHZvaWQoZS5pbnB1dC5sYXN0SU9TRW50ZXI9MCk7aWYoIXkpe2lmKCEociYmZCBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24mJiFkLmVtcHR5JiZkLiRoZWFkLnNhbWVQYXJlbnQoZC4kYW5jaG9yKSl8fGUuY29tcG9zaW5nfHxwLnNlbCYmcC5zZWwuYW5jaG9yIT1wLnNlbC5oZWFkKXtpZihwLnNlbCl7bGV0IHQ9cmVzb2x2ZVNlbGVjdGlvbihlLGUuc3RhdGUuZG9jLHAuc2VsKTtpZih0JiYhdC5lcShlLnN0YXRlLnNlbGVjdGlvbikpe2xldCBuPWUuc3RhdGUudHIuc2V0U2VsZWN0aW9uKHQpO2kmJm4uc2V0TWV0YSgiY29tcG9zaXRpb24iLGkpLGUuZGlzcGF0Y2gobil9fXJldHVybn15PXtzdGFydDpkLmZyb20sZW5kQTpkLnRvLGVuZEI6ZC50b319ZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbTxlLnN0YXRlLnNlbGVjdGlvbi50byYmeS5zdGFydD09eS5lbmRCJiZlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24mJih5LnN0YXJ0PmUuc3RhdGUuc2VsZWN0aW9uLmZyb20mJnkuc3RhcnQ8PWUuc3RhdGUuc2VsZWN0aW9uLmZyb20rMiYmZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbT49cC5mcm9tP3kuc3RhcnQ9ZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbTp5LmVuZEE8ZS5zdGF0ZS5zZWxlY3Rpb24udG8mJnkuZW5kQT49ZS5zdGF0ZS5zZWxlY3Rpb24udG8tMiYmZS5zdGF0ZS5zZWxlY3Rpb24udG88PXAudG8mJih5LmVuZEIrPWUuc3RhdGUuc2VsZWN0aW9uLnRvLXkuZW5kQSx5LmVuZEE9ZS5zdGF0ZS5zZWxlY3Rpb24udG8pKSx6ZSYmQmU8PTExJiZ5LmVuZEI9PXkuc3RhcnQrMSYmeS5lbmRBPT15LnN0YXJ0JiZ5LnN0YXJ0PnAuZnJvbSYmIiDCoCI9PXAuZG9jLnRleHRCZXR3ZWVuKHkuc3RhcnQtcC5mcm9tLTEseS5zdGFydC1wLmZyb20rMSkmJih5LnN0YXJ0LS0seS5lbmRBLS0seS5lbmRCLS0pO2xldCB3PXAuZG9jLnJlc29sdmVOb0NhY2hlKHkuc3RhcnQtcC5mcm9tKSxiPXAuZG9jLnJlc29sdmVOb0NhY2hlKHkuZW5kQi1wLmZyb20pLHY9Zi5yZXNvbHZlKHkuc3RhcnQpLHg9dy5zYW1lUGFyZW50KGIpJiZ3LnBhcmVudC5pbmxpbmVDb250ZW50JiZ2LmVuZCgpPj15LmVuZEE7aWYoKHFlJiZlLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNSYmKCF4fHxvLnNvbWUoZT0+IkRJViI9PWUubm9kZU5hbWV8fCJQIj09ZS5ub2RlTmFtZSkpfHwheCYmdy5wb3M8cC5kb2MuY29udGVudC5zaXplJiYoIXcuc2FtZVBhcmVudChiKXx8IXcucGFyZW50LmlubGluZUNvbnRlbnQpJiZ3LnBvczxiLnBvcyYmIS9cUy8udGVzdChwLmRvYy50ZXh0QmV0d2Vlbih3LnBvcyxiLnBvcywiIiwiIikpKSYmZS5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsdD0+dChlLGtleUV2ZW50KDEzLCJFbnRlciIpKSkpcmV0dXJuIHZvaWQoZS5pbnB1dC5sYXN0SU9TRW50ZXI9MCk7aWYoZS5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yPnkuc3RhcnQmJmZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYobi10PD1vLnBvcy1yLnBvc3x8c2tpcENsb3NpbmdBbmRPcGVuaW5nKHIsITAsITEpPG8ucG9zKXJldHVybiExO2xldCBpPWUucmVzb2x2ZSh0KTtpZighci5wYXJlbnQuaXNUZXh0YmxvY2spe2xldCBlPWkubm9kZUFmdGVyO3JldHVybiBudWxsIT1lJiZuPT10K2Uubm9kZVNpemV9aWYoaS5wYXJlbnRPZmZzZXQ8aS5wYXJlbnQuY29udGVudC5zaXplfHwhaS5wYXJlbnQuaXNUZXh0YmxvY2spcmV0dXJuITE7bGV0IHM9ZS5yZXNvbHZlKHNraXBDbG9zaW5nQW5kT3BlbmluZyhpLCEwLCEwKSk7cmV0dXJuISghcy5wYXJlbnQuaXNUZXh0YmxvY2t8fHMucG9zPm58fHNraXBDbG9zaW5nQW5kT3BlbmluZyhzLCEwLCExKTxuKSYmci5wYXJlbnQuY29udGVudC5jdXQoci5wYXJlbnRPZmZzZXQpLmVxKHMucGFyZW50LmNvbnRlbnQpfShmLHkuc3RhcnQseS5lbmRBLHcsYikmJmUuc29tZVByb3AoImhhbmRsZUtleURvd24iLHQ9PnQoZSxrZXlFdmVudCg4LCJCYWNrc3BhY2UiKSkpKXJldHVybiB2b2lkKEtlJiZWZSYmZS5kb21PYnNlcnZlci5zdXBwcmVzc1NlbGVjdGlvblVwZGF0ZXMoKSk7VmUmJnkuZW5kQj09eS5zdGFydCYmKGUuaW5wdXQubGFzdENocm9tZURlbGV0ZT1EYXRlLm5vdygpKSxLZSYmIXgmJncuc3RhcnQoKSE9Yi5zdGFydCgpJiYwPT1iLnBhcmVudE9mZnNldCYmdy5kZXB0aD09Yi5kZXB0aCYmcC5zZWwmJnAuc2VsLmFuY2hvcj09cC5zZWwuaGVhZCYmcC5zZWwuaGVhZD09eS5lbmRBJiYoeS5lbmRCLT0yLGI9cC5kb2MucmVzb2x2ZU5vQ2FjaGUoeS5lbmRCLXAuZnJvbSksc2V0VGltZW91dCgoKT0+e2Uuc29tZVByb3AoImhhbmRsZUtleURvd24iLGZ1bmN0aW9uKHQpe3JldHVybiB0KGUsa2V5RXZlbnQoMTMsIkVudGVyIikpfSl9LDIwKSk7bGV0IFMsQz15LnN0YXJ0LEE9eS5lbmRBLG1rVHI9dD0+e2xldCBuPXR8fGUuc3RhdGUudHIucmVwbGFjZShDLEEscC5kb2Muc2xpY2UoeS5zdGFydC1wLmZyb20seS5lbmRCLXAuZnJvbSkpO2lmKHAuc2VsKXtsZXQgdD1yZXNvbHZlU2VsZWN0aW9uKGUsbi5kb2MscC5zZWwpO3QmJiEoVmUmJmUuY29tcG9zaW5nJiZ0LmVtcHR5JiYoeS5zdGFydCE9eS5lbmRCfHxlLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU8RGF0ZS5ub3coKS0xMDApJiYodC5oZWFkPT1DfHx0LmhlYWQ9PW4ubWFwcGluZy5tYXAoQSktMSl8fHplJiZ0LmVtcHR5JiZ0LmhlYWQ9PUMpJiZuLnNldFNlbGVjdGlvbih0KX1yZXR1cm4gaSYmbi5zZXRNZXRhKCJjb21wb3NpdGlvbiIsaSksbi5zY3JvbGxJbnRvVmlldygpfTtpZih4KWlmKHcucG9zPT1iLnBvcyl7emUmJkJlPD0xMSYmMD09dy5wYXJlbnRPZmZzZXQmJihlLmRvbU9ic2VydmVyLnN1cHByZXNzU2VsZWN0aW9uVXBkYXRlcygpLHNldFRpbWVvdXQoKCk9PnNlbGVjdGlvblRvRE9NKGUpLDIwKSk7bGV0IHQ9bWtUcihlLnN0YXRlLnRyLmRlbGV0ZShDLEEpKSxuPWYucmVzb2x2ZSh5LnN0YXJ0KS5tYXJrc0Fjcm9zcyhmLnJlc29sdmUoeS5lbmRBKSk7biYmdC5lbnN1cmVNYXJrcyhuKSxlLmRpc3BhdGNoKHQpfWVsc2UgaWYoeS5lbmRBPT15LmVuZEImJihTPWZ1bmN0aW9uKGUsdCl7bGV0IG4scixvLGk9ZS5maXJzdENoaWxkLm1hcmtzLHM9dC5maXJzdENoaWxkLm1hcmtzLGw9aSxhPXM7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspbD1zW2VdLnJlbW92ZUZyb21TZXQobCk7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspYT1pW2VdLnJlbW92ZUZyb21TZXQoYSk7aWYoMT09bC5sZW5ndGgmJjA9PWEubGVuZ3RoKXI9bFswXSxuPSJhZGQiLG89ZT0+ZS5tYXJrKHIuYWRkVG9TZXQoZS5tYXJrcykpO2Vsc2V7aWYoMCE9bC5sZW5ndGh8fDEhPWEubGVuZ3RoKXJldHVybiBudWxsO3I9YVswXSxuPSJyZW1vdmUiLG89ZT0+ZS5tYXJrKHIucmVtb3ZlRnJvbVNldChlLm1hcmtzKSl9bGV0IGM9W107Zm9yKGxldCBlPTA7ZTx0LmNoaWxkQ291bnQ7ZSsrKWMucHVzaChvKHQuY2hpbGQoZSkpKTtpZihGcmFnbWVudC5mcm9tKGMpLmVxKGUpKXJldHVybnttYXJrOnIsdHlwZTpufX0ody5wYXJlbnQuY29udGVudC5jdXQody5wYXJlbnRPZmZzZXQsYi5wYXJlbnRPZmZzZXQpLHYucGFyZW50LmNvbnRlbnQuY3V0KHYucGFyZW50T2Zmc2V0LHkuZW5kQS12LnN0YXJ0KCkpKSkpe2xldCB0PW1rVHIoZS5zdGF0ZS50cik7ImFkZCI9PVMudHlwZT90LmFkZE1hcmsoQyxBLFMubWFyayk6dC5yZW1vdmVNYXJrKEMsQSxTLm1hcmspLGUuZGlzcGF0Y2godCl9ZWxzZSBpZih3LnBhcmVudC5jaGlsZCh3LmluZGV4KCkpLmlzVGV4dCYmdy5pbmRleCgpPT1iLmluZGV4KCktKGIudGV4dE9mZnNldD8wOjEpKXtsZXQgdD13LnBhcmVudC50ZXh0QmV0d2Vlbih3LnBhcmVudE9mZnNldCxiLnBhcmVudE9mZnNldCksZGVmbHQ9KCk9Pm1rVHIoZS5zdGF0ZS50ci5pbnNlcnRUZXh0KHQsQyxBKSk7ZS5zb21lUHJvcCgiaGFuZGxlVGV4dElucHV0IixuPT5uKGUsQyxBLHQsZGVmbHQpKXx8ZS5kaXNwYXRjaChkZWZsdCgpKX1lbHNlIGUuZGlzcGF0Y2gobWtUcigpKTtlbHNlIGUuZGlzcGF0Y2gobWtUcigpKX1mdW5jdGlvbiByZXNvbHZlU2VsZWN0aW9uKGUsdCxuKXtyZXR1cm4gTWF0aC5tYXgobi5hbmNob3Isbi5oZWFkKT50LmNvbnRlbnQuc2l6ZT9udWxsOnNlbGVjdGlvbkJldHdlZW4oZSx0LnJlc29sdmUobi5hbmNob3IpLHQucmVzb2x2ZShuLmhlYWQpKX1mdW5jdGlvbiBza2lwQ2xvc2luZ0FuZE9wZW5pbmcoZSx0LG4pe2xldCByPWUuZGVwdGgsbz10P2UuZW5kKCk6ZS5wb3M7Zm9yKDtyPjAmJih0fHxlLmluZGV4QWZ0ZXIocik9PWUubm9kZShyKS5jaGlsZENvdW50KTspci0tLG8rKyx0PSExO2lmKG4pe2xldCB0PWUubm9kZShyKS5tYXliZUNoaWxkKGUuaW5kZXhBZnRlcihyKSk7Zm9yKDt0JiYhdC5pc0xlYWY7KXQ9dC5maXJzdENoaWxkLG8rK31yZXR1cm4gb31mdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIoZSl7aWYoMiE9ZS5sZW5ndGgpcmV0dXJuITE7bGV0IHQ9ZS5jaGFyQ29kZUF0KDApLG49ZS5jaGFyQ29kZUF0KDEpO3JldHVybiB0Pj01NjMyMCYmdDw9NTczNDMmJm4+PTU1Mjk2JiZuPD01NjMxOX1jbGFzcyBFZGl0b3JWaWV3e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnRyYWNrV3JpdGVzPW51bGwsdGhpcy5tb3VudGVkPSExLHRoaXMubWFya0N1cnNvcj1udWxsLHRoaXMuY3Vyc29yV3JhcHBlcj1udWxsLHRoaXMubGFzdFNlbGVjdGVkVmlld0Rlc2M9dm9pZCAwLHRoaXMuaW5wdXQ9bmV3IElucHV0U3RhdGUsdGhpcy5wcmV2RGlyZWN0UGx1Z2lucz1bXSx0aGlzLnBsdWdpblZpZXdzPVtdLHRoaXMucmVxdWlyZXNHZWNrb0hhY2tOb2RlPSExLHRoaXMuZHJhZ2dpbmc9bnVsbCx0aGlzLl9wcm9wcz10LHRoaXMuc3RhdGU9dC5zdGF0ZSx0aGlzLmRpcmVjdFBsdWdpbnM9dC5wbHVnaW5zfHxbXSx0aGlzLmRpcmVjdFBsdWdpbnMuZm9yRWFjaChjaGVja1N0YXRlQ29tcG9uZW50KSx0aGlzLmRpc3BhdGNoPXRoaXMuZGlzcGF0Y2guYmluZCh0aGlzKSx0aGlzLmRvbT1lJiZlLm1vdW50fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlJiYoZS5hcHBlbmRDaGlsZD9lLmFwcGVuZENoaWxkKHRoaXMuZG9tKToiZnVuY3Rpb24iPT10eXBlb2YgZT9lKHRoaXMuZG9tKTplLm1vdW50JiYodGhpcy5tb3VudGVkPSEwKSksdGhpcy5lZGl0YWJsZT1nZXRFZGl0YWJsZSh0aGlzKSx1cGRhdGVDdXJzb3JXcmFwcGVyKHRoaXMpLHRoaXMubm9kZVZpZXdzPWJ1aWxkTm9kZVZpZXdzKHRoaXMpLHRoaXMuZG9jVmlldz1kb2NWaWV3RGVzYyh0aGlzLnN0YXRlLmRvYyxjb21wdXRlRG9jRGVjbyh0aGlzKSx2aWV3RGVjb3JhdGlvbnModGhpcyksdGhpcy5kb20sdGhpcyksdGhpcy5kb21PYnNlcnZlcj1uZXcgRE9NT2JzZXJ2ZXIodGhpcywoZSx0LG4scik9PnJlYWRET01DaGFuZ2UodGhpcyxlLHQsbixyKSksdGhpcy5kb21PYnNlcnZlci5zdGFydCgpLGZ1bmN0aW9uKGUpe2ZvcihsZXQgdCBpbiBjdCl7bGV0IG49Y3RbdF07ZS5kb20uYWRkRXZlbnRMaXN0ZW5lcih0LGUuaW5wdXQuZXZlbnRIYW5kbGVyc1t0XT10PT57IWV2ZW50QmVsb25nc1RvVmlldyhlLHQpfHxydW5DdXN0b21IYW5kbGVyKGUsdCl8fCFlLmVkaXRhYmxlJiZ0LnR5cGUgaW4gZHR8fG4oZSx0KX0scHRbdF0/e3Bhc3NpdmU6ITB9OnZvaWQgMCl9amUmJmUuZG9tLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoKT0+bnVsbCksZW5zdXJlTGlzdGVuZXJzKGUpfSh0aGlzKSx0aGlzLnVwZGF0ZVBsdWdpblZpZXdzKCl9Z2V0IGNvbXBvc2luZygpe3JldHVybiB0aGlzLmlucHV0LmNvbXBvc2luZ31nZXQgcHJvcHMoKXtpZih0aGlzLl9wcm9wcy5zdGF0ZSE9dGhpcy5zdGF0ZSl7bGV0IGU9dGhpcy5fcHJvcHM7dGhpcy5fcHJvcHM9e307Zm9yKGxldCB0IGluIGUpdGhpcy5fcHJvcHNbdF09ZVt0XTt0aGlzLl9wcm9wcy5zdGF0ZT10aGlzLnN0YXRlfXJldHVybiB0aGlzLl9wcm9wc311cGRhdGUoZSl7ZS5oYW5kbGVET01FdmVudHMhPXRoaXMuX3Byb3BzLmhhbmRsZURPTUV2ZW50cyYmZW5zdXJlTGlzdGVuZXJzKHRoaXMpO2xldCB0PXRoaXMuX3Byb3BzO3RoaXMuX3Byb3BzPWUsZS5wbHVnaW5zJiYoZS5wbHVnaW5zLmZvckVhY2goY2hlY2tTdGF0ZUNvbXBvbmVudCksdGhpcy5kaXJlY3RQbHVnaW5zPWUucGx1Z2lucyksdGhpcy51cGRhdGVTdGF0ZUlubmVyKGUuc3RhdGUsdCl9c2V0UHJvcHMoZSl7bGV0IHQ9e307Zm9yKGxldCBlIGluIHRoaXMuX3Byb3BzKXRbZV09dGhpcy5fcHJvcHNbZV07dC5zdGF0ZT10aGlzLnN0YXRlO2ZvcihsZXQgbiBpbiBlKXRbbl09ZVtuXTt0aGlzLnVwZGF0ZSh0KX11cGRhdGVTdGF0ZShlKXt0aGlzLnVwZGF0ZVN0YXRlSW5uZXIoZSx0aGlzLl9wcm9wcyl9dXBkYXRlU3RhdGVJbm5lcihlLHQpe3ZhciBuO2xldCByPXRoaXMuc3RhdGUsbz0hMSxpPSExO2Uuc3RvcmVkTWFya3MmJnRoaXMuY29tcG9zaW5nJiYoY2xlYXJDb21wb3NpdGlvbih0aGlzKSxpPSEwKSx0aGlzLnN0YXRlPWU7bGV0IHM9ci5wbHVnaW5zIT1lLnBsdWdpbnN8fHRoaXMuX3Byb3BzLnBsdWdpbnMhPXQucGx1Z2lucztpZihzfHx0aGlzLl9wcm9wcy5wbHVnaW5zIT10LnBsdWdpbnN8fHRoaXMuX3Byb3BzLm5vZGVWaWV3cyE9dC5ub2RlVmlld3Mpe2xldCBlPWJ1aWxkTm9kZVZpZXdzKHRoaXMpOyhmdW5jdGlvbihlLHQpe2xldCBuPTAscj0wO2ZvcihsZXQgciBpbiBlKXtpZihlW3JdIT10W3JdKXJldHVybiEwO24rK31mb3IobGV0IGUgaW4gdClyKys7cmV0dXJuIG4hPXJ9KShlLHRoaXMubm9kZVZpZXdzKSYmKHRoaXMubm9kZVZpZXdzPWUsbz0hMCl9KHN8fHQuaGFuZGxlRE9NRXZlbnRzIT10aGlzLl9wcm9wcy5oYW5kbGVET01FdmVudHMpJiZlbnN1cmVMaXN0ZW5lcnModGhpcyksdGhpcy5lZGl0YWJsZT1nZXRFZGl0YWJsZSh0aGlzKSx1cGRhdGVDdXJzb3JXcmFwcGVyKHRoaXMpO2xldCBsPXZpZXdEZWNvcmF0aW9ucyh0aGlzKSxhPWNvbXB1dGVEb2NEZWNvKHRoaXMpLGM9ci5wbHVnaW5zPT1lLnBsdWdpbnN8fHIuZG9jLmVxKGUuZG9jKT9lLnNjcm9sbFRvU2VsZWN0aW9uPnIuc2Nyb2xsVG9TZWxlY3Rpb24/InRvIHNlbGVjdGlvbiI6InByZXNlcnZlIjoicmVzZXQiLGQ9b3x8IXRoaXMuZG9jVmlldy5tYXRjaGVzTm9kZShlLmRvYyxhLGwpOyFkJiZlLnNlbGVjdGlvbi5lcShyLnNlbGVjdGlvbil8fChpPSEwKTtsZXQgcD0icHJlc2VydmUiPT1jJiZpJiZudWxsPT10aGlzLmRvbS5zdHlsZS5vdmVyZmxvd0FuY2hvciYmZnVuY3Rpb24oZSl7bGV0IHQsbixyPWUuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89TWF0aC5tYXgoMCxyLnRvcCk7Zm9yKGxldCBpPShyLmxlZnQrci5yaWdodCkvMixzPW8rMTtzPE1hdGgubWluKGlubmVySGVpZ2h0LHIuYm90dG9tKTtzKz01KXtsZXQgcj1lLnJvb3QuZWxlbWVudEZyb21Qb2ludChpLHMpO2lmKCFyfHxyPT1lLmRvbXx8IWUuZG9tLmNvbnRhaW5zKHIpKWNvbnRpbnVlO2xldCBsPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYobC50b3A+PW8tMjApe3Q9cixuPWwudG9wO2JyZWFrfX1yZXR1cm57cmVmRE9NOnQscmVmVG9wOm4sc3RhY2s6c2Nyb2xsU3RhY2soZS5kb20pfX0odGhpcyk7aWYoaSl7dGhpcy5kb21PYnNlcnZlci5zdG9wKCk7bGV0IHQ9ZCYmKHplfHxWZSkmJiF0aGlzLmNvbXBvc2luZyYmIXIuc2VsZWN0aW9uLmVtcHR5JiYhZS5zZWxlY3Rpb24uZW1wdHkmJmZ1bmN0aW9uKGUsdCl7bGV0IG49TWF0aC5taW4oZS4kYW5jaG9yLnNoYXJlZERlcHRoKGUuaGVhZCksdC4kYW5jaG9yLnNoYXJlZERlcHRoKHQuaGVhZCkpO3JldHVybiBlLiRhbmNob3Iuc3RhcnQobikhPXQuJGFuY2hvci5zdGFydChuKX0oci5zZWxlY3Rpb24sZS5zZWxlY3Rpb24pO2lmKGQpe2xldCBuPVZlP3RoaXMudHJhY2tXcml0ZXM9dGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpLmZvY3VzTm9kZTpudWxsO3RoaXMuY29tcG9zaW5nJiYodGhpcy5pbnB1dC5jb21wb3NpdGlvbk5vZGU9ZmluZENvbXBvc2l0aW9uTm9kZSh0aGlzKSksIW8mJnRoaXMuZG9jVmlldy51cGRhdGUoZS5kb2MsYSxsLHRoaXMpfHwodGhpcy5kb2NWaWV3LnVwZGF0ZU91dGVyRGVjbyhhKSx0aGlzLmRvY1ZpZXcuZGVzdHJveSgpLHRoaXMuZG9jVmlldz1kb2NWaWV3RGVzYyhlLmRvYyxhLGwsdGhpcy5kb20sdGhpcykpLCFufHx0aGlzLnRyYWNrV3JpdGVzJiZ0aGlzLmRvbS5jb250YWlucyh0aGlzLnRyYWNrV3JpdGVzKXx8KHQ9ITApfXR8fCEodGhpcy5pbnB1dC5tb3VzZURvd24mJnRoaXMuZG9tT2JzZXJ2ZXIuY3VycmVudFNlbGVjdGlvbi5lcSh0aGlzLmRvbVNlbGVjdGlvblJhbmdlKCkpJiZmdW5jdGlvbihlKXtsZXQgdD1lLmRvY1ZpZXcuZG9tRnJvbVBvcyhlLnN0YXRlLnNlbGVjdGlvbi5hbmNob3IsMCksbj1lLmRvbVNlbGVjdGlvblJhbmdlKCk7cmV0dXJuIGlzRXF1aXZhbGVudFBvc2l0aW9uKHQubm9kZSx0Lm9mZnNldCxuLmFuY2hvck5vZGUsbi5hbmNob3JPZmZzZXQpfSh0aGlzKSk/c2VsZWN0aW9uVG9ET00odGhpcyx0KTooc3luY05vZGVTZWxlY3Rpb24odGhpcyxlLnNlbGVjdGlvbiksdGhpcy5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKSksdGhpcy5kb21PYnNlcnZlci5zdGFydCgpfXRoaXMudXBkYXRlUGx1Z2luVmlld3MociksKG51bGw9PT0obj10aGlzLmRyYWdnaW5nKXx8dm9pZCAwPT09bj92b2lkIDA6bi5ub2RlKSYmIXIuZG9jLmVxKGUuZG9jKSYmdGhpcy51cGRhdGVEcmFnZ2VkTm9kZSh0aGlzLmRyYWdnaW5nLHIpLCJyZXNldCI9PWM/dGhpcy5kb20uc2Nyb2xsVG9wPTA6InRvIHNlbGVjdGlvbiI9PWM/dGhpcy5zY3JvbGxUb1NlbGVjdGlvbigpOnAmJmZ1bmN0aW9uKHtyZWZET006ZSxyZWZUb3A6dCxzdGFjazpufSl7bGV0IHI9ZT9lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDowO3Jlc3RvcmVTY3JvbGxTdGFjayhuLDA9PXI/MDpyLXQpfShwKX1zY3JvbGxUb1NlbGVjdGlvbigpe2xldCBlPXRoaXMuZG9tU2VsZWN0aW9uUmFuZ2UoKS5mb2N1c05vZGU7aWYoZSYmdGhpcy5kb20uY29udGFpbnMoMT09ZS5ub2RlVHlwZT9lOmUucGFyZW50Tm9kZSkpaWYodGhpcy5zb21lUHJvcCgiaGFuZGxlU2Nyb2xsVG9TZWxlY3Rpb24iLGU9PmUodGhpcykpKTtlbHNlIGlmKHRoaXMuc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbil7bGV0IHQ9dGhpcy5kb2NWaWV3LmRvbUFmdGVyUG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZyb20pOzE9PXQubm9kZVR5cGUmJnNjcm9sbFJlY3RJbnRvVmlldyh0aGlzLHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZSl9ZWxzZSBzY3JvbGxSZWN0SW50b1ZpZXcodGhpcyx0aGlzLmNvb3Jkc0F0UG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmhlYWQsMSksZSk7ZWxzZTt9ZGVzdHJveVBsdWdpblZpZXdzKCl7bGV0IGU7Zm9yKDtlPXRoaXMucGx1Z2luVmlld3MucG9wKCk7KWUuZGVzdHJveSYmZS5kZXN0cm95KCl9dXBkYXRlUGx1Z2luVmlld3MoZSl7aWYoZSYmZS5wbHVnaW5zPT10aGlzLnN0YXRlLnBsdWdpbnMmJnRoaXMuZGlyZWN0UGx1Z2lucz09dGhpcy5wcmV2RGlyZWN0UGx1Z2lucylmb3IobGV0IHQ9MDt0PHRoaXMucGx1Z2luVmlld3MubGVuZ3RoO3QrKyl7bGV0IG49dGhpcy5wbHVnaW5WaWV3c1t0XTtuLnVwZGF0ZSYmbi51cGRhdGUodGhpcyxlKX1lbHNle3RoaXMucHJldkRpcmVjdFBsdWdpbnM9dGhpcy5kaXJlY3RQbHVnaW5zLHRoaXMuZGVzdHJveVBsdWdpblZpZXdzKCk7Zm9yKGxldCBlPTA7ZTx0aGlzLmRpcmVjdFBsdWdpbnMubGVuZ3RoO2UrKyl7bGV0IHQ9dGhpcy5kaXJlY3RQbHVnaW5zW2VdO3Quc3BlYy52aWV3JiZ0aGlzLnBsdWdpblZpZXdzLnB1c2godC5zcGVjLnZpZXcodGhpcykpfWZvcihsZXQgZT0wO2U8dGhpcy5zdGF0ZS5wbHVnaW5zLmxlbmd0aDtlKyspe2xldCB0PXRoaXMuc3RhdGUucGx1Z2luc1tlXTt0LnNwZWMudmlldyYmdGhpcy5wbHVnaW5WaWV3cy5wdXNoKHQuc3BlYy52aWV3KHRoaXMpKX19fXVwZGF0ZURyYWdnZWROb2RlKGUsdCl7bGV0IG49ZS5ub2RlLHI9LTE7aWYobi5mcm9tPHRoaXMuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSYmdGhpcy5zdGF0ZS5kb2Mubm9kZUF0KG4uZnJvbSk9PW4ubm9kZSlyPW4uZnJvbTtlbHNle2xldCBlPW4uZnJvbSsodGhpcy5zdGF0ZS5kb2MuY29udGVudC5zaXplLXQuZG9jLmNvbnRlbnQuc2l6ZSk7KGU+MCYmZTx0aGlzLnN0YXRlLmRvYy5jb250ZW50LnNpemUmJnRoaXMuc3RhdGUuZG9jLm5vZGVBdChlKSk9PW4ubm9kZSYmKHI9ZSl9dGhpcy5kcmFnZ2luZz1uZXcgRHJhZ2dpbmcoZS5zbGljZSxlLm1vdmUscjwwP3ZvaWQgMDpOb2RlU2VsZWN0aW9uLmNyZWF0ZSh0aGlzLnN0YXRlLmRvYyxyKSl9c29tZVByb3AoZSx0KXtsZXQgbixyPXRoaXMuX3Byb3BzJiZ0aGlzLl9wcm9wc1tlXTtpZihudWxsIT1yJiYobj10P3Qocik6cikpcmV0dXJuIG47Zm9yKGxldCByPTA7cjx0aGlzLmRpcmVjdFBsdWdpbnMubGVuZ3RoO3IrKyl7bGV0IG89dGhpcy5kaXJlY3RQbHVnaW5zW3JdLnByb3BzW2VdO2lmKG51bGwhPW8mJihuPXQ/dChvKTpvKSlyZXR1cm4gbn1sZXQgbz10aGlzLnN0YXRlLnBsdWdpbnM7aWYobylmb3IobGV0IHI9MDtyPG8ubGVuZ3RoO3IrKyl7bGV0IGk9b1tyXS5wcm9wc1tlXTtpZihudWxsIT1pJiYobj10P3QoaSk6aSkpcmV0dXJuIG59fWhhc0ZvY3VzKCl7aWYoemUpe2xldCBlPXRoaXMucm9vdC5hY3RpdmVFbGVtZW50O2lmKGU9PXRoaXMuZG9tKXJldHVybiEwO2lmKCFlfHwhdGhpcy5kb20uY29udGFpbnMoZSkpcmV0dXJuITE7Zm9yKDtlJiZ0aGlzLmRvbSE9ZSYmdGhpcy5kb20uY29udGFpbnMoZSk7KXtpZigiZmFsc2UiPT1lLmNvbnRlbnRFZGl0YWJsZSlyZXR1cm4hMTtlPWUucGFyZW50RWxlbWVudH1yZXR1cm4hMH1yZXR1cm4gdGhpcy5yb290LmFjdGl2ZUVsZW1lbnQ9PXRoaXMuZG9tfWZvY3VzKCl7dGhpcy5kb21PYnNlcnZlci5zdG9wKCksdGhpcy5lZGl0YWJsZSYmZnVuY3Rpb24oZSl7aWYoZS5zZXRBY3RpdmUpcmV0dXJuIGUuc2V0QWN0aXZlKCk7aWYoWGUpcmV0dXJuIGUuZm9jdXMoWGUpO2xldCB0PXNjcm9sbFN0YWNrKGUpO2UuZm9jdXMobnVsbD09WGU/e2dldCBwcmV2ZW50U2Nyb2xsKCl7cmV0dXJuIFhlPXtwcmV2ZW50U2Nyb2xsOiEwfSwhMH19OnZvaWQgMCksWGV8fChYZT0hMSxyZXN0b3JlU2Nyb2xsU3RhY2sodCwwKSl9KHRoaXMuZG9tKSxzZWxlY3Rpb25Ub0RPTSh0aGlzKSx0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCl9Z2V0IHJvb3QoKXtsZXQgZT10aGlzLl9yb290O2lmKG51bGw9PWUpZm9yKGxldCBlPXRoaXMuZG9tLnBhcmVudE5vZGU7ZTtlPWUucGFyZW50Tm9kZSlpZig5PT1lLm5vZGVUeXBlfHwxMT09ZS5ub2RlVHlwZSYmZS5ob3N0KXJldHVybiBlLmdldFNlbGVjdGlvbnx8KE9iamVjdC5nZXRQcm90b3R5cGVPZihlKS5nZXRTZWxlY3Rpb249KCk9PmUub3duZXJEb2N1bWVudC5nZXRTZWxlY3Rpb24oKSksdGhpcy5fcm9vdD1lO3JldHVybiBlfHxkb2N1bWVudH11cGRhdGVSb290KCl7dGhpcy5fcm9vdD1udWxsfXBvc0F0Q29vcmRzKGUpe3JldHVybiBwb3NBdENvb3Jkcyh0aGlzLGUpfWNvb3Jkc0F0UG9zKGUsdD0xKXtyZXR1cm4gY29vcmRzQXRQb3ModGhpcyxlLHQpfWRvbUF0UG9zKGUsdD0wKXtyZXR1cm4gdGhpcy5kb2NWaWV3LmRvbUZyb21Qb3MoZSx0KX1ub2RlRE9NKGUpe2xldCB0PXRoaXMuZG9jVmlldy5kZXNjQXQoZSk7cmV0dXJuIHQ/dC5ub2RlRE9NOm51bGx9cG9zQXRET00oZSx0LG49LTEpe2xldCByPXRoaXMuZG9jVmlldy5wb3NGcm9tRE9NKGUsdCxuKTtpZihudWxsPT1yKXRocm93IG5ldyBSYW5nZUVycm9yKCJET00gcG9zaXRpb24gbm90IGluc2lkZSB0aGUgZWRpdG9yIik7cmV0dXJuIHJ9ZW5kT2ZUZXh0YmxvY2soZSx0KXtyZXR1cm4gZW5kT2ZUZXh0YmxvY2sodGhpcyx0fHx0aGlzLnN0YXRlLGUpfXBhc3RlSFRNTChlLHQpe3JldHVybiBkb1Bhc3RlKHRoaXMsIiIsZSwhMSx0fHxuZXcgQ2xpcGJvYXJkRXZlbnQoInBhc3RlIikpfXBhc3RlVGV4dChlLHQpe3JldHVybiBkb1Bhc3RlKHRoaXMsZSxudWxsLCEwLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUpe3JldHVybiBzZXJpYWxpemVGb3JDbGlwYm9hcmQodGhpcyxlKX1kZXN0cm95KCl7dGhpcy5kb2NWaWV3JiYoIWZ1bmN0aW9uKGUpe2UuZG9tT2JzZXJ2ZXIuc3RvcCgpO2ZvcihsZXQgdCBpbiBlLmlucHV0LmV2ZW50SGFuZGxlcnMpZS5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUuaW5wdXQuZXZlbnRIYW5kbGVyc1t0XSk7Y2xlYXJUaW1lb3V0KGUuaW5wdXQuY29tcG9zaW5nVGltZW91dCksY2xlYXJUaW1lb3V0KGUuaW5wdXQubGFzdElPU0VudGVyRmFsbGJhY2tUaW1lb3V0KX0odGhpcyksdGhpcy5kZXN0cm95UGx1Z2luVmlld3MoKSx0aGlzLm1vdW50ZWQ/KHRoaXMuZG9jVmlldy51cGRhdGUodGhpcy5zdGF0ZS5kb2MsW10sdmlld0RlY29yYXRpb25zKHRoaXMpLHRoaXMpLHRoaXMuZG9tLnRleHRDb250ZW50PSIiKTp0aGlzLmRvbS5wYXJlbnROb2RlJiZ0aGlzLmRvbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZG9tKSx0aGlzLmRvY1ZpZXcuZGVzdHJveSgpLHRoaXMuZG9jVmlldz1udWxsLEVlPW51bGwpfWdldCBpc0Rlc3Ryb3llZCgpe3JldHVybiBudWxsPT10aGlzLmRvY1ZpZXd9ZGlzcGF0Y2hFdmVudChlKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtydW5DdXN0b21IYW5kbGVyKGUsdCl8fCFjdFt0LnR5cGVdfHwhZS5lZGl0YWJsZSYmdC50eXBlIGluIGR0fHxjdFt0LnR5cGVdKGUsdCl9KHRoaXMsZSl9ZG9tU2VsZWN0aW9uUmFuZ2UoKXtsZXQgZT10aGlzLmRvbVNlbGVjdGlvbigpO3JldHVybiBlP2plJiYxMT09PXRoaXMucm9vdC5ub2RlVHlwZSYmZnVuY3Rpb24oZSl7bGV0IHQ9ZS5hY3RpdmVFbGVtZW50O2Zvcig7dCYmdC5zaGFkb3dSb290Oyl0PXQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O3JldHVybiB0fSh0aGlzLmRvbS5vd25lckRvY3VtZW50KT09dGhpcy5kb20mJmZ1bmN0aW9uKGUsdCl7aWYodC5nZXRDb21wb3NlZFJhbmdlcyl7bGV0IG49dC5nZXRDb21wb3NlZFJhbmdlcyhlLnJvb3QpWzBdO2lmKG4pcmV0dXJuIHJhbmdlVG9TZWxlY3Rpb25SYW5nZShlLG4pfWxldCBuO2Z1bmN0aW9uIHJlYWQoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksbj1lLmdldFRhcmdldFJhbmdlcygpWzBdfXJldHVybiBlLmRvbS5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIscmVhZCwhMCksZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluZGVudCIpLGUuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IixyZWFkLCEwKSxuP3JhbmdlVG9TZWxlY3Rpb25SYW5nZShlLG4pOm51bGx9KHRoaXMsZSl8fGU6e2ZvY3VzTm9kZTpudWxsLGZvY3VzT2Zmc2V0OjAsYW5jaG9yTm9kZTpudWxsLGFuY2hvck9mZnNldDowfX1kb21TZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290LmdldFNlbGVjdGlvbigpfX1mdW5jdGlvbiBjb21wdXRlRG9jRGVjbyhlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiB0LmNsYXNzPSJQcm9zZU1pcnJvciIsdC5jb250ZW50ZWRpdGFibGU9U3RyaW5nKGUuZWRpdGFibGUpLGUuc29tZVByb3AoImF0dHJpYnV0ZXMiLG49PntpZigiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49bihlLnN0YXRlKSksbilmb3IobGV0IGUgaW4gbikiY2xhc3MiPT1lP3QuY2xhc3MrPSIgIituW2VdOiJzdHlsZSI9PWU/dC5zdHlsZT0odC5zdHlsZT90LnN0eWxlKyI7IjoiIikrbltlXTp0W2VdfHwiY29udGVudGVkaXRhYmxlIj09ZXx8Im5vZGVOYW1lIj09ZXx8KHRbZV09U3RyaW5nKG5bZV0pKX0pLHQudHJhbnNsYXRlfHwodC50cmFuc2xhdGU9Im5vIiksW0RlY29yYXRpb24ubm9kZSgwLGUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSx0KV19ZnVuY3Rpb24gdXBkYXRlQ3Vyc29yV3JhcHBlcihlKXtpZihlLm1hcmtDdXJzb3Ipe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO3QuY2xhc3NOYW1lPSJQcm9zZU1pcnJvci1zZXBhcmF0b3IiLHQuc2V0QXR0cmlidXRlKCJtYXJrLXBsYWNlaG9sZGVyIiwidHJ1ZSIpLHQuc2V0QXR0cmlidXRlKCJhbHQiLCIiKSxlLmN1cnNvcldyYXBwZXI9e2RvbTp0LGRlY286RGVjb3JhdGlvbi53aWRnZXQoZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbSx0LHtyYXc6ITAsbWFya3M6ZS5tYXJrQ3Vyc29yfSl9fWVsc2UgZS5jdXJzb3JXcmFwcGVyPW51bGx9ZnVuY3Rpb24gZ2V0RWRpdGFibGUoZSl7cmV0dXJuIWUuc29tZVByb3AoImVkaXRhYmxlIix0PT4hMT09PXQoZS5zdGF0ZSkpfWZ1bmN0aW9uIGJ1aWxkTm9kZVZpZXdzKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gYWRkKGUpe2ZvcihsZXQgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHwodFtuXT1lW25dKX1yZXR1cm4gZS5zb21lUHJvcCgibm9kZVZpZXdzIixhZGQpLGUuc29tZVByb3AoIm1hcmtWaWV3cyIsYWRkKSx0fWZ1bmN0aW9uIGNoZWNrU3RhdGVDb21wb25lbnQoZSl7aWYoZS5zcGVjLnN0YXRlfHxlLnNwZWMuZmlsdGVyVHJhbnNhY3Rpb258fGUuc3BlYy5hcHBlbmRUcmFuc2FjdGlvbil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUGx1Z2lucyBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHZpZXcgbXVzdCBub3QgaGF2ZSBhIHN0YXRlIGNvbXBvbmVudCIpfUVkaXRvclZpZXcucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGUpe2xldCB0PXRoaXMuX3Byb3BzLmRpc3BhdGNoVHJhbnNhY3Rpb247dD90LmNhbGwodGhpcyxlKTp0aGlzLnVwZGF0ZVN0YXRlKHRoaXMuc3RhdGUuYXBwbHkoZSkpfTtmb3IodmFyIFR0PXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTA6IkVudGVyIiwxMjoiTnVtTG9jayIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ0OiJQcmludFNjcmVlbiIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsNTk6IjsiLDYxOiI9Iiw5MToiTWV0YSIsOTI6Ik1ldGEiLDEwNjoiKiIsMTA3OiIrIiwxMDg6IiwiLDEwOToiLSIsMTEwOiIuIiwxMTE6Ii8iLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwxNjA6IlNoaWZ0IiwxNjE6IlNoaWZ0IiwxNjI6IkNvbnRyb2wiLDE2MzoiQ29udHJvbCIsMTY0OiJBbHQiLDE2NToiQWx0IiwxNzM6Ii0iLDE4NjoiOyIsMTg3OiI9IiwxODg6IiwiLDE4OToiLSIsMTkwOiIuIiwxOTE6Ii8iLDE5MjoiYCIsMjE5OiJbIiwyMjA6IlxcIiwyMjE6Il0iLDIyMjoiJyJ9LEN0PXs0ODoiKSIsNDk6IiEiLDUwOiJAIiw1MToiIyIsNTI6IiQiLDUzOiIlIiw1NDoiXiIsNTU6IiYiLDU2OiIqIiw1NzoiKCIsNTk6IjoiLDYxOiIrIiwxNzM6Il8iLDE4NjoiOiIsMTg3OiIrIiwxODg6IjwiLDE4OToiXyIsMTkwOiI+IiwxOTE6Ij8iLDE5MjoifiIsMjE5OiJ7IiwyMjA6InwiLDIyMToifSIsMjIyOiciJ30sTXQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSxBdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmL01TSUUgXGR8VHJpZGVudFwvKD86WzctOV18XGR7Mix9KVwuLipydjooXGQrKS8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KSxPdD0wO090PDEwO090KyspVHRbNDgrT3RdPVR0Wzk2K090XT1TdHJpbmcoT3QpO2ZvcihPdD0xO090PD0yNDtPdCsrKVR0W090KzExMV09IkYiK090O2ZvcihPdD02NTtPdDw9OTA7T3QrKylUdFtPdF09U3RyaW5nLmZyb21DaGFyQ29kZShPdCszMiksQ3RbT3RdPVN0cmluZy5mcm9tQ2hhckNvZGUoT3QpO2Zvcih2YXIgRXQgaW4gVHQpQ3QuaGFzT3duUHJvcGVydHkoRXQpfHwoQ3RbRXRdPVR0W0V0XSk7Y29uc3QgTnQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9NYWN8aVAoaG9uZXxbb2FdZCkvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSxSdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmL1dpbi8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO2Z1bmN0aW9uIG5vcm1hbGl6ZUtleU5hbWUkMShlKXtsZXQgdCxuLHIsbyxpPWUuc3BsaXQoLy0oPyEkKS8pLHM9aVtpLmxlbmd0aC0xXTsiU3BhY2UiPT1zJiYocz0iICIpO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGgtMTtlKyspe2xldCBzPWlbZV07aWYoL14oY21kfG1ldGF8bSkkL2kudGVzdChzKSlvPSEwO2Vsc2UgaWYoL15hKGx0KT8kL2kudGVzdChzKSl0PSEwO2Vsc2UgaWYoL14oY3xjdHJsfGNvbnRyb2wpJC9pLnRlc3Qocykpbj0hMDtlbHNlIGlmKC9ecyhoaWZ0KT8kL2kudGVzdChzKSlyPSEwO2Vsc2V7aWYoIS9ebW9kJC9pLnRlc3QocykpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgbW9kaWZpZXIgbmFtZTogIitzKTtOdD9vPSEwOm49ITB9fXJldHVybiB0JiYocz0iQWx0LSIrcyksbiYmKHM9IkN0cmwtIitzKSxvJiYocz0iTWV0YS0iK3MpLHImJihzPSJTaGlmdC0iK3MpLHN9ZnVuY3Rpb24gbW9kaWZpZXJzKGUsdCxuPSEwKXtyZXR1cm4gdC5hbHRLZXkmJihlPSJBbHQtIitlKSx0LmN0cmxLZXkmJihlPSJDdHJsLSIrZSksdC5tZXRhS2V5JiYoZT0iTWV0YS0iK2UpLG4mJnQuc2hpZnRLZXkmJihlPSJTaGlmdC0iK2UpLGV9ZnVuY3Rpb24ga2V5ZG93bkhhbmRsZXIoZSl7bGV0IHQ9ZnVuY3Rpb24oZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IG4gaW4gZSl0W25vcm1hbGl6ZUtleU5hbWUkMShuKV09ZVtuXTtyZXR1cm4gdH0oZSk7cmV0dXJuIGZ1bmN0aW9uKGUsbil7bGV0IHIsbz1mdW5jdGlvbihlKXt2YXIgdD0hKE10JiZlLm1ldGFLZXkmJmUuc2hpZnRLZXkmJiFlLmN0cmxLZXkmJiFlLmFsdEtleXx8QXQmJmUuc2hpZnRLZXkmJmUua2V5JiYxPT1lLmtleS5sZW5ndGh8fCJVbmlkZW50aWZpZWQiPT1lLmtleSkmJmUua2V5fHwoZS5zaGlmdEtleT9DdDpUdClbZS5rZXlDb2RlXXx8ZS5rZXl8fCJVbmlkZW50aWZpZWQiO3JldHVybiJFc2MiPT10JiYodD0iRXNjYXBlIiksIkRlbCI9PXQmJih0PSJEZWxldGUiKSwiTGVmdCI9PXQmJih0PSJBcnJvd0xlZnQiKSwiVXAiPT10JiYodD0iQXJyb3dVcCIpLCJSaWdodCI9PXQmJih0PSJBcnJvd1JpZ2h0IiksIkRvd24iPT10JiYodD0iQXJyb3dEb3duIiksdH0obiksaT10W21vZGlmaWVycyhvLG4pXTtpZihpJiZpKGUuc3RhdGUsZS5kaXNwYXRjaCxlKSlyZXR1cm4hMDtpZigxPT1vLmxlbmd0aCYmIiAiIT1vKXtpZihuLnNoaWZ0S2V5KXtsZXQgcj10W21vZGlmaWVycyhvLG4sITEpXTtpZihyJiZyKGUuc3RhdGUsZS5kaXNwYXRjaCxlKSlyZXR1cm4hMH1pZigobi5hbHRLZXl8fG4ubWV0YUtleXx8bi5jdHJsS2V5KSYmIShSdCYmbi5jdHJsS2V5JiZuLmFsdEtleSkmJihyPVR0W24ua2V5Q29kZV0pJiZyIT1vKXtsZXQgbz10W21vZGlmaWVycyhyLG4pXTtpZihvJiZvKGUuc3RhdGUsZS5kaXNwYXRjaCxlKSlyZXR1cm4hMH19cmV0dXJuITF9fXZhciBEdD1PYmplY3QuZGVmaW5lUHJvcGVydHksX19leHBvcnQkMT0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KUR0KGUsbix7Z2V0OnRbbl0sZW51bWVyYWJsZTohMH0pfTtmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVTdGF0ZShlKXtjb25zdHtzdGF0ZTp0LHRyYW5zYWN0aW9uOm59PWU7bGV0e3NlbGVjdGlvbjpyfT1uLHtkb2M6b309bix7c3RvcmVkTWFya3M6aX09bjtyZXR1cm57Li4udCxhcHBseTp0LmFwcGx5LmJpbmQodCksYXBwbHlUcmFuc2FjdGlvbjp0LmFwcGx5VHJhbnNhY3Rpb24uYmluZCh0KSxwbHVnaW5zOnQucGx1Z2lucyxzY2hlbWE6dC5zY2hlbWEscmVjb25maWd1cmU6dC5yZWNvbmZpZ3VyZS5iaW5kKHQpLHRvSlNPTjp0LnRvSlNPTi5iaW5kKHQpLGdldCBzdG9yZWRNYXJrcygpe3JldHVybiBpfSxnZXQgc2VsZWN0aW9uKCl7cmV0dXJuIHJ9LGdldCBkb2MoKXtyZXR1cm4gb30sZ2V0IHRyKCl7cmV0dXJuIHI9bi5zZWxlY3Rpb24sbz1uLmRvYyxpPW4uc3RvcmVkTWFya3Msbn19fXZhciBQdD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmVkaXRvcj1lLmVkaXRvcix0aGlzLnJhd0NvbW1hbmRzPXRoaXMuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuY29tbWFuZHMsdGhpcy5jdXN0b21TdGF0ZT1lLnN0YXRlfWdldCBoYXNDdXN0b21TdGF0ZSgpe3JldHVybiEhdGhpcy5jdXN0b21TdGF0ZX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5jdXN0b21TdGF0ZXx8dGhpcy5lZGl0b3Iuc3RhdGV9Z2V0IGNvbW1hbmRzKCl7Y29uc3R7cmF3Q29tbWFuZHM6ZSxlZGl0b3I6dCxzdGF0ZTpufT10aGlzLHt2aWV3OnJ9PXQse3RyOm99PW4saT10aGlzLmJ1aWxkUHJvcHMobyk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5tYXAoKFtlLHRdKT0+W2UsKC4uLmUpPT57Y29uc3Qgbj10KC4uLmUpKGkpO3JldHVybiBvLmdldE1ldGEoInByZXZlbnREaXNwYXRjaCIpfHx0aGlzLmhhc0N1c3RvbVN0YXRlfHxyLmRpc3BhdGNoKG8pLG59XSkpfWdldCBjaGFpbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNoYWluKCl9Z2V0IGNhbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNhbigpfWNyZWF0ZUNoYWluKGUsdD0hMCl7Y29uc3R7cmF3Q29tbWFuZHM6bixlZGl0b3I6cixzdGF0ZTpvfT10aGlzLHt2aWV3Oml9PXIscz1bXSxsPSEhZSxhPWV8fG8udHIsYz17Li4uT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLm1hcCgoW2Usbl0pPT5bZSwoLi4uZSk9Pntjb25zdCByPXRoaXMuYnVpbGRQcm9wcyhhLHQpLG89biguLi5lKShyKTtyZXR1cm4gcy5wdXNoKG8pLGN9XSkpLHJ1bjooKT0+KGx8fCF0fHxhLmdldE1ldGEoInByZXZlbnREaXNwYXRjaCIpfHx0aGlzLmhhc0N1c3RvbVN0YXRlfHxpLmRpc3BhdGNoKGEpLHMuZXZlcnkoZT0+ITA9PT1lKSl9O3JldHVybiBjfWNyZWF0ZUNhbihlKXtjb25zdHtyYXdDb21tYW5kczp0LHN0YXRlOm59PXRoaXMscj0hMSxvPWV8fG4udHIsaT10aGlzLmJ1aWxkUHJvcHMobyxyKTtyZXR1cm57Li4uT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoW2UsdF0pPT5bZSwoLi4uZSk9PnQoLi4uZSkoey4uLmksZGlzcGF0Y2g6dm9pZCAwfSldKSksY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4obyxyKX19YnVpbGRQcm9wcyhlLHQ9ITApe2NvbnN0e3Jhd0NvbW1hbmRzOm4sZWRpdG9yOnIsc3RhdGU6b309dGhpcyx7dmlldzppfT1yLHM9e3RyOmUsZWRpdG9yOnIsdmlldzppLHN0YXRlOmNyZWF0ZUNoYWluYWJsZVN0YXRlKHtzdGF0ZTpvLHRyYW5zYWN0aW9uOmV9KSxkaXNwYXRjaDp0PygpPT57fTp2b2lkIDAsY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4oZSx0KSxjYW46KCk9PnRoaXMuY3JlYXRlQ2FuKGUpLGdldCBjb21tYW5kcygpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMobikubWFwKChbZSx0XSk9PltlLCguLi5lKT0+dCguLi5lKShzKV0pKX19O3JldHVybiBzfX0sSXQ9e307X19leHBvcnQkMShJdCx7Ymx1cjooKT0+Ymx1cixjbGVhckNvbnRlbnQ6KCk9PmNsZWFyQ29udGVudCxjbGVhck5vZGVzOigpPT5jbGVhck5vZGVzLGNvbW1hbmQ6KCk9PmNvbW1hbmQsY3JlYXRlUGFyYWdyYXBoTmVhcjooKT0+Y3JlYXRlUGFyYWdyYXBoTmVhcixjdXQ6KCk9PmN1dCxkZWxldGVDdXJyZW50Tm9kZTooKT0+ZGVsZXRlQ3VycmVudE5vZGUsZGVsZXRlTm9kZTooKT0+ZGVsZXRlTm9kZSxkZWxldGVSYW5nZTooKT0+ZGVsZXRlUmFuZ2UsZGVsZXRlU2VsZWN0aW9uOigpPT5kZWxldGVTZWxlY3Rpb24sZW50ZXI6KCk9PmVudGVyLGV4aXRDb2RlOigpPT5leGl0Q29kZSxleHRlbmRNYXJrUmFuZ2U6KCk9PmV4dGVuZE1hcmtSYW5nZSxmaXJzdDooKT0+Zmlyc3QsZm9jdXM6KCk9PmZvY3VzLGZvckVhY2g6KCk9PmZvckVhY2gsaW5zZXJ0Q29udGVudDooKT0+aW5zZXJ0Q29udGVudCxpbnNlcnRDb250ZW50QXQ6KCk9Pmluc2VydENvbnRlbnRBdCxqb2luQmFja3dhcmQ6KCk9PmpvaW5CYWNrd2FyZCxqb2luRG93bjooKT0+am9pbkRvd24sam9pbkZvcndhcmQ6KCk9PmpvaW5Gb3J3YXJkLGpvaW5JdGVtQmFja3dhcmQ6KCk9PmpvaW5JdGVtQmFja3dhcmQsam9pbkl0ZW1Gb3J3YXJkOigpPT5qb2luSXRlbUZvcndhcmQsam9pblRleHRibG9ja0JhY2t3YXJkOigpPT5qb2luVGV4dGJsb2NrQmFja3dhcmQsam9pblRleHRibG9ja0ZvcndhcmQ6KCk9PmpvaW5UZXh0YmxvY2tGb3J3YXJkLGpvaW5VcDooKT0+am9pblVwLGtleWJvYXJkU2hvcnRjdXQ6KCk9PmtleWJvYXJkU2hvcnRjdXQsbGlmdDooKT0+bGlmdCxsaWZ0RW1wdHlCbG9jazooKT0+bGlmdEVtcHR5QmxvY2ssbGlmdExpc3RJdGVtOigpPT5saWZ0TGlzdEl0ZW0sbmV3bGluZUluQ29kZTooKT0+bmV3bGluZUluQ29kZSxyZXNldEF0dHJpYnV0ZXM6KCk9PnJlc2V0QXR0cmlidXRlcyxzY3JvbGxJbnRvVmlldzooKT0+c2Nyb2xsSW50b1ZpZXcsc2VsZWN0QWxsOigpPT5zZWxlY3RBbGwsc2VsZWN0Tm9kZUJhY2t3YXJkOigpPT5zZWxlY3ROb2RlQmFja3dhcmQsc2VsZWN0Tm9kZUZvcndhcmQ6KCk9PnNlbGVjdE5vZGVGb3J3YXJkLHNlbGVjdFBhcmVudE5vZGU6KCk9PnNlbGVjdFBhcmVudE5vZGUsc2VsZWN0VGV4dGJsb2NrRW5kOigpPT5zZWxlY3RUZXh0YmxvY2tFbmQsc2VsZWN0VGV4dGJsb2NrU3RhcnQ6KCk9PnNlbGVjdFRleHRibG9ja1N0YXJ0LHNldENvbnRlbnQ6KCk9PnNldENvbnRlbnQsc2V0TWFyazooKT0+c2V0TWFyayxzZXRNZXRhOigpPT5zZXRNZXRhLHNldE5vZGU6KCk9PnNldE5vZGUsc2V0Tm9kZVNlbGVjdGlvbjooKT0+c2V0Tm9kZVNlbGVjdGlvbixzZXRUZXh0RGlyZWN0aW9uOigpPT5zZXRUZXh0RGlyZWN0aW9uLHNldFRleHRTZWxlY3Rpb246KCk9PnNldFRleHRTZWxlY3Rpb24sc2lua0xpc3RJdGVtOigpPT5zaW5rTGlzdEl0ZW0sc3BsaXRCbG9jazooKT0+c3BsaXRCbG9jayxzcGxpdExpc3RJdGVtOigpPT5zcGxpdExpc3RJdGVtLHRvZ2dsZUxpc3Q6KCk9PnRvZ2dsZUxpc3QsdG9nZ2xlTWFyazooKT0+dG9nZ2xlTWFyayx0b2dnbGVOb2RlOigpPT50b2dnbGVOb2RlLHRvZ2dsZVdyYXA6KCk9PnRvZ2dsZVdyYXAsdW5kb0lucHV0UnVsZTooKT0+dW5kb0lucHV0UnVsZSx1bnNldEFsbE1hcmtzOigpPT51bnNldEFsbE1hcmtzLHVuc2V0TWFyazooKT0+dW5zZXRNYXJrLHVuc2V0VGV4dERpcmVjdGlvbjooKT0+dW5zZXRUZXh0RGlyZWN0aW9uLHVwZGF0ZUF0dHJpYnV0ZXM6KCk9PnVwZGF0ZUF0dHJpYnV0ZXMsd3JhcEluOigpPT53cmFwSW4sd3JhcEluTGlzdDooKT0+d3JhcEluTGlzdH0pO3ZhciBibHVyPSgpPT4oe2VkaXRvcjplLHZpZXc6dH0pPT4ocmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIG47ZS5pc0Rlc3Ryb3llZHx8KHQuZG9tLmJsdXIoKSxudWxsPT0obj1udWxsPT13aW5kb3c/dm9pZCAwOndpbmRvdy5nZXRTZWxlY3Rpb24oKSl8fG4ucmVtb3ZlQWxsUmFuZ2VzKCkpfSksITApLGNsZWFyQ29udGVudD0oZT0hMCk9Pih7Y29tbWFuZHM6dH0pPT50LnNldENvbnRlbnQoIiIse2VtaXRVcGRhdGU6ZX0pLGNsZWFyTm9kZXM9KCk9Pih7c3RhdGU6ZSx0cjp0LGRpc3BhdGNoOm59KT0+e2NvbnN0e3NlbGVjdGlvbjpyfT10LHtyYW5nZXM6b309cjtyZXR1cm4hbnx8KG8uZm9yRWFjaCgoeyRmcm9tOm4sJHRvOnJ9KT0+e2UuZG9jLm5vZGVzQmV0d2VlbihuLnBvcyxyLnBvcywoZSxuKT0+e2lmKGUudHlwZS5pc1RleHQpcmV0dXJuO2NvbnN0e2RvYzpyLG1hcHBpbmc6b309dCxpPXIucmVzb2x2ZShvLm1hcChuKSkscz1yLnJlc29sdmUoby5tYXAobitlLm5vZGVTaXplKSksbD1pLmJsb2NrUmFuZ2Uocyk7aWYoIWwpcmV0dXJuO2NvbnN0IGE9bGlmdFRhcmdldChsKTtpZihlLnR5cGUuaXNUZXh0YmxvY2spe2NvbnN0e2RlZmF1bHRUeXBlOmV9PWkucGFyZW50LmNvbnRlbnRNYXRjaEF0KGkuaW5kZXgoKSk7dC5zZXROb2RlTWFya3VwKGwuc3RhcnQsZSl9KGF8fDA9PT1hKSYmdC5saWZ0KGwsYSl9KX0pLCEwKX0sY29tbWFuZD1lPT50PT5lKHQpLGNyZWF0ZVBhcmFncmFwaE5lYXI9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9PmNyZWF0ZVBhcmFncmFwaE5lYXIkMShlLHQpLGN1dD0oZSx0KT0+KHtlZGl0b3I6bix0cjpyfSk9Pntjb25zdHtzdGF0ZTpvfT1uLGk9by5kb2Muc2xpY2UoZS5mcm9tLGUudG8pO3IuZGVsZXRlUmFuZ2UoZS5mcm9tLGUudG8pO2NvbnN0IHM9ci5tYXBwaW5nLm1hcCh0KTtyZXR1cm4gci5pbnNlcnQocyxpLmNvbnRlbnQpLHIuc2V0U2VsZWN0aW9uKG5ldyBUZXh0U2VsZWN0aW9uKHIuZG9jLnJlc29sdmUoTWF0aC5tYXgocy0xLDApKSkpLCEwfSxkZWxldGVDdXJyZW50Tm9kZT0oKT0+KHt0cjplLGRpc3BhdGNoOnR9KT0+e2NvbnN0e3NlbGVjdGlvbjpufT1lLHI9bi4kYW5jaG9yLm5vZGUoKTtpZihyLmNvbnRlbnQuc2l6ZT4wKXJldHVybiExO2NvbnN0IG89ZS5zZWxlY3Rpb24uJGFuY2hvcjtmb3IobGV0IG49by5kZXB0aDtuPjA7bi09MSl7aWYoby5ub2RlKG4pLnR5cGU9PT1yLnR5cGUpe2lmKHQpe2NvbnN0IHQ9by5iZWZvcmUobikscj1vLmFmdGVyKG4pO2UuZGVsZXRlKHQscikuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4hMH19cmV0dXJuITF9O2Z1bmN0aW9uIGdldE5vZGVUeXBlKGUsdCl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZighdC5ub2Rlc1tlXSl0aHJvdyBFcnJvcihgVGhlcmUgaXMgbm8gbm9kZSB0eXBlIG5hbWVkICcke2V9Jy4gTWF5YmUgeW91IGZvcmdvdCB0byBhZGQgdGhlIGV4dGVuc2lvbj9gKTtyZXR1cm4gdC5ub2Rlc1tlXX1yZXR1cm4gZX12YXIgZGVsZXRlTm9kZT1lPT4oe3RyOnQsc3RhdGU6bixkaXNwYXRjaDpyfSk9Pntjb25zdCBvPWdldE5vZGVUeXBlKGUsbi5zY2hlbWEpLGk9dC5zZWxlY3Rpb24uJGFuY2hvcjtmb3IobGV0IGU9aS5kZXB0aDtlPjA7ZS09MSl7aWYoaS5ub2RlKGUpLnR5cGU9PT1vKXtpZihyKXtjb25zdCBuPWkuYmVmb3JlKGUpLHI9aS5hZnRlcihlKTt0LmRlbGV0ZShuLHIpLnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9fXJldHVybiExfSxkZWxldGVSYW5nZT1lPT4oe3RyOnQsZGlzcGF0Y2g6bn0pPT57Y29uc3R7ZnJvbTpyLHRvOm99PWU7cmV0dXJuIG4mJnQuZGVsZXRlKHIsbyksITB9LGRlbGV0ZVNlbGVjdGlvbj0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+ZGVsZXRlU2VsZWN0aW9uJDEoZSx0KSxlbnRlcj0oKT0+KHtjb21tYW5kczplfSk9PmUua2V5Ym9hcmRTaG9ydGN1dCgiRW50ZXIiKSxleGl0Q29kZT0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQpPT57bGV0eyRoZWFkOm4sJGFuY2hvcjpyfT1lLnNlbGVjdGlvbjtpZighbi5wYXJlbnQudHlwZS5zcGVjLmNvZGV8fCFuLnNhbWVQYXJlbnQocikpcmV0dXJuITE7bGV0IG89bi5ub2RlKC0xKSxpPW4uaW5kZXhBZnRlcigtMSkscz1kZWZhdWx0QmxvY2tBdCQxKG8uY29udGVudE1hdGNoQXQoaSkpO2lmKCFzfHwhby5jYW5SZXBsYWNlV2l0aChpLGkscykpcmV0dXJuITE7aWYodCl7bGV0IHI9bi5hZnRlcigpLG89ZS50ci5yZXBsYWNlV2l0aChyLHIscy5jcmVhdGVBbmRGaWxsKCkpO28uc2V0U2VsZWN0aW9uKFNlbGVjdGlvbi5uZWFyKG8uZG9jLnJlc29sdmUociksMSkpLHQoby5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH0pKGUsdCk7ZnVuY3Rpb24gaXNSZWdFeHAoZSl7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gb2JqZWN0SW5jbHVkZXMoZSx0LG49e3N0cmljdDohMH0pe2NvbnN0IHI9T2JqZWN0LmtleXModCk7cmV0dXJuIXIubGVuZ3RofHxyLmV2ZXJ5KHI9Pm4uc3RyaWN0P3Rbcl09PT1lW3JdOmlzUmVnRXhwKHRbcl0pP3Rbcl0udGVzdChlW3JdKTp0W3JdPT09ZVtyXSl9ZnVuY3Rpb24gZmluZE1hcmtJblNldChlLHQsbj17fSl7cmV0dXJuIGUuZmluZChlPT5lLnR5cGU9PT10JiZvYmplY3RJbmNsdWRlcyhPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMobikubWFwKHQ9Plt0LGUuYXR0cnNbdF1dKSksbikpfWZ1bmN0aW9uIGlzTWFya0luU2V0KGUsdCxuPXt9KXtyZXR1cm4hIWZpbmRNYXJrSW5TZXQoZSx0LG4pfWZ1bmN0aW9uIGdldE1hcmtSYW5nZShlLHQsbil7aWYoIWV8fCF0KXJldHVybjtsZXQgcj1lLnBhcmVudC5jaGlsZEFmdGVyKGUucGFyZW50T2Zmc2V0KTtpZihyLm5vZGUmJnIubm9kZS5tYXJrcy5zb21lKGU9PmUudHlwZT09PXQpfHwocj1lLnBhcmVudC5jaGlsZEJlZm9yZShlLnBhcmVudE9mZnNldCkpLCFyLm5vZGV8fCFyLm5vZGUubWFya3Muc29tZShlPT5lLnR5cGU9PT10KSlyZXR1cm47aWYoIW4pe2NvbnN0IGU9ci5ub2RlLm1hcmtzLmZpbmQoZT0+ZS50eXBlPT09dCk7ZSYmKG49ZS5hdHRycyl9aWYoIWZpbmRNYXJrSW5TZXQoWy4uLnIubm9kZS5tYXJrc10sdCxuKSlyZXR1cm47bGV0IG89ci5pbmRleCxpPWUuc3RhcnQoKStyLm9mZnNldCxzPW8rMSxsPWkrci5ub2RlLm5vZGVTaXplO2Zvcig7bz4wJiZpc01hcmtJblNldChbLi4uZS5wYXJlbnQuY2hpbGQoby0xKS5tYXJrc10sdCxuKTspby09MSxpLT1lLnBhcmVudC5jaGlsZChvKS5ub2RlU2l6ZTtmb3IoO3M8ZS5wYXJlbnQuY2hpbGRDb3VudCYmaXNNYXJrSW5TZXQoWy4uLmUucGFyZW50LmNoaWxkKHMpLm1hcmtzXSx0LG4pOylsKz1lLnBhcmVudC5jaGlsZChzKS5ub2RlU2l6ZSxzKz0xO3JldHVybntmcm9tOmksdG86bH19ZnVuY3Rpb24gZ2V0TWFya1R5cGUoZSx0KXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCF0Lm1hcmtzW2VdKXRocm93IEVycm9yKGBUaGVyZSBpcyBubyBtYXJrIHR5cGUgbmFtZWQgJyR7ZX0nLiBNYXliZSB5b3UgZm9yZ290IHRvIGFkZCB0aGUgZXh0ZW5zaW9uP2ApO3JldHVybiB0Lm1hcmtzW2VdfXJldHVybiBlfXZhciBleHRlbmRNYXJrUmFuZ2U9KGUsdCk9Pih7dHI6bixzdGF0ZTpyLGRpc3BhdGNoOm99KT0+e2NvbnN0IGk9Z2V0TWFya1R5cGUoZSxyLnNjaGVtYSkse2RvYzpzLHNlbGVjdGlvbjpsfT1uLHskZnJvbTphLGZyb206Yyx0bzpkfT1sO2lmKG8pe2NvbnN0IGU9Z2V0TWFya1JhbmdlKGEsaSx0KTtpZihlJiZlLmZyb208PWMmJmUudG8+PWQpe2NvbnN0IHQ9VGV4dFNlbGVjdGlvbi5jcmVhdGUocyxlLmZyb20sZS50byk7bi5zZXRTZWxlY3Rpb24odCl9fXJldHVybiEwfSxmaXJzdD1lPT50PT57Y29uc3Qgbj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQpOmU7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKz0xKWlmKG5bZV0odCkpcmV0dXJuITA7cmV0dXJuITF9O2Z1bmN0aW9uIGlzVGV4dFNlbGVjdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb259ZnVuY3Rpb24gbWluTWF4KGU9MCx0PTAsbj0wKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxuKX1mdW5jdGlvbiByZXNvbHZlRm9jdXNQb3NpdGlvbihlLHQ9bnVsbCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgbj1TZWxlY3Rpb24uYXRTdGFydChlKSxyPVNlbGVjdGlvbi5hdEVuZChlKTtpZigic3RhcnQiPT09dHx8ITA9PT10KXJldHVybiBuO2lmKCJlbmQiPT09dClyZXR1cm4gcjtjb25zdCBvPW4uZnJvbSxpPXIudG87cmV0dXJuImFsbCI9PT10P1RleHRTZWxlY3Rpb24uY3JlYXRlKGUsbWluTWF4KDAsbyxpKSxtaW5NYXgoZS5jb250ZW50LnNpemUsbyxpKSk6VGV4dFNlbGVjdGlvbi5jcmVhdGUoZSxtaW5NYXgodCxvLGkpLG1pbk1heCh0LG8saSkpfWZ1bmN0aW9uIGlzQW5kcm9pZCgpe3JldHVybiJBbmRyb2lkIj09PW5hdmlnYXRvci5wbGF0Zm9ybXx8L2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfWZ1bmN0aW9uIGlzaU9TKCl7cmV0dXJuWyJpUGFkIFNpbXVsYXRvciIsImlQaG9uZSBTaW11bGF0b3IiLCJpUG9kIFNpbXVsYXRvciIsImlQYWQiLCJpUGhvbmUiLCJpUG9kIl0uaW5jbHVkZXMobmF2aWdhdG9yLnBsYXRmb3JtKXx8bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiTWFjIikmJiJvbnRvdWNoZW5kImluIGRvY3VtZW50fXZhciBmb2N1cz0oZT1udWxsLHQ9e30pPT4oe2VkaXRvcjpuLHZpZXc6cix0cjpvLGRpc3BhdGNoOml9KT0+e3Q9e3Njcm9sbEludG9WaWV3OiEwLC4uLnR9O2NvbnN0IGRlbGF5ZWRGb2N1cz0oKT0+eyhpc2lPUygpfHxpc0FuZHJvaWQoKSkmJnIuZG9tLmZvY3VzKCksInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfHxpc2lPUygpfHxpc0FuZHJvaWQoKXx8ci5kb20uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuLmlzRGVzdHJveWVkfHwoci5mb2N1cygpLChudWxsPT10P3ZvaWQgMDp0LnNjcm9sbEludG9WaWV3KSYmbi5jb21tYW5kcy5zY3JvbGxJbnRvVmlldygpKX0pfTt0cnl7aWYoci5oYXNGb2N1cygpJiZudWxsPT09ZXx8ITE9PT1lKXJldHVybiEwfWNhdGNoe3JldHVybiExfWlmKGkmJm51bGw9PT1lJiYhaXNUZXh0U2VsZWN0aW9uKG4uc3RhdGUuc2VsZWN0aW9uKSlyZXR1cm4gZGVsYXllZEZvY3VzKCksITA7Y29uc3Qgcz1yZXNvbHZlRm9jdXNQb3NpdGlvbihvLmRvYyxlKXx8bi5zdGF0ZS5zZWxlY3Rpb24sbD1uLnN0YXRlLnNlbGVjdGlvbi5lcShzKTtyZXR1cm4gaSYmKGx8fG8uc2V0U2VsZWN0aW9uKHMpLGwmJm8uc3RvcmVkTWFya3MmJm8uc2V0U3RvcmVkTWFya3Moby5zdG9yZWRNYXJrcyksZGVsYXllZEZvY3VzKCkpLCEwfSxmb3JFYWNoPShlLHQpPT5uPT5lLmV2ZXJ5KChlLHIpPT50KGUsey4uLm4saW5kZXg6cn0pKSxpbnNlcnRDb250ZW50PShlLHQpPT4oe3RyOm4sY29tbWFuZHM6cn0pPT5yLmluc2VydENvbnRlbnRBdCh7ZnJvbTpuLnNlbGVjdGlvbi5mcm9tLHRvOm4uc2VsZWN0aW9uLnRvfSxlLHQpO2Z1bmN0aW9uIGVsZW1lbnRGcm9tU3RyaW5nKGUpe3Rocm93IG5ldyBFcnJvcigiW3RpcHRhcCBlcnJvcl06IHRoZXJlIGlzIG5vIHdpbmRvdyBvYmplY3QgYXZhaWxhYmxlLCBzbyB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIil9ZnVuY3Rpb24gY3JlYXRlTm9kZUZyb21Db250ZW50KGUsdCxuKXtpZihlIGluc3RhbmNlb2YgTm9kZXx8ZSBpbnN0YW5jZW9mIEZyYWdtZW50KXJldHVybiBlO249e3NsaWNlOiEwLHBhcnNlT3B0aW9uczp7fSwuLi5ufTtjb25zdCByPSJzdHJpbmciPT10eXBlb2YgZTtpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lKXRyeXtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXJldHVybiBGcmFnbWVudC5mcm9tQXJyYXkoZS5tYXAoZT0+dC5ub2RlRnJvbUpTT04oZSkpKTtjb25zdCByPXQubm9kZUZyb21KU09OKGUpO3JldHVybiBuLmVycm9yT25JbnZhbGlkQ29udGVudCYmci5jaGVjaygpLHJ9Y2F0Y2gocil7aWYobi5lcnJvck9uSW52YWxpZENvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJbdGlwdGFwIGVycm9yXTogSW52YWxpZCBKU09OIGNvbnRlbnQiLHtjYXVzZTpyfSk7cmV0dXJuIGNvbnNvbGUud2FybigiW3RpcHRhcCB3YXJuXTogSW52YWxpZCBjb250ZW50LiIsIlBhc3NlZCB2YWx1ZToiLGUsIkVycm9yOiIsciksY3JlYXRlTm9kZUZyb21Db250ZW50KCIiLHQsbil9aWYocil7aWYobi5lcnJvck9uSW52YWxpZENvbnRlbnQpe2xldCBlPSExLHI9IiI7Y29uc3Qgbz1uZXcgU2NoZW1hKHt0b3BOb2RlOnQuc3BlYy50b3BOb2RlLG1hcmtzOnQuc3BlYy5tYXJrcyxub2Rlczp0LnNwZWMubm9kZXMuYXBwZW5kKHtfX3RpcHRhcF9fcHJpdmF0ZV9fdW5rbm93bl9fY2F0Y2hfX2FsbF9fbm9kZTp7Y29udGVudDoiaW5saW5lKiIsZ3JvdXA6ImJsb2NrIixwYXJzZURPTTpbe3RhZzoiKiIsZ2V0QXR0cnM6dD0+KGU9ITAscj0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0Lm91dGVySFRNTCxudWxsKX1dfX0pfSk7aWYobi5zbGljZT9ET01QYXJzZXIuZnJvbVNjaGVtYShvKS5wYXJzZVNsaWNlKGVsZW1lbnRGcm9tU3RyaW5nKCksbi5wYXJzZU9wdGlvbnMpOkRPTVBhcnNlci5mcm9tU2NoZW1hKG8pLnBhcnNlKGVsZW1lbnRGcm9tU3RyaW5nKCksbi5wYXJzZU9wdGlvbnMpLG4uZXJyb3JPbkludmFsaWRDb250ZW50JiZlKXRocm93IG5ldyBFcnJvcigiW3RpcHRhcCBlcnJvcl06IEludmFsaWQgSFRNTCBjb250ZW50Iix7Y2F1c2U6bmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgZm91bmQ6ICR7cn1gKX0pfWNvbnN0IGU9RE9NUGFyc2VyLmZyb21TY2hlbWEodCk7cmV0dXJuIG4uc2xpY2U/ZS5wYXJzZVNsaWNlKGVsZW1lbnRGcm9tU3RyaW5nKCksbi5wYXJzZU9wdGlvbnMpLmNvbnRlbnQ6ZS5wYXJzZShlbGVtZW50RnJvbVN0cmluZygpLG4ucGFyc2VPcHRpb25zKX1yZXR1cm4gY3JlYXRlTm9kZUZyb21Db250ZW50KCIiLHQsbil9dmFyIGluc2VydENvbnRlbnRBdD0oZSx0LG4pPT4oe3RyOnIsZGlzcGF0Y2g6byxlZGl0b3I6aX0pPT57dmFyIHM7aWYobyl7bGV0IG87Y29uc3QgZW1pdENvbnRlbnRFcnJvcj1lPT57aS5lbWl0KCJjb250ZW50RXJyb3IiLHtlZGl0b3I6aSxlcnJvcjplLGRpc2FibGVDb2xsYWJvcmF0aW9uOigpPT57ImNvbGxhYm9yYXRpb24iaW4gaS5zdG9yYWdlJiYib2JqZWN0Ij09dHlwZW9mIGkuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiZpLnN0b3JhZ2UuY29sbGFib3JhdGlvbiYmKGkuc3RvcmFnZS5jb2xsYWJvcmF0aW9uLmlzRGlzYWJsZWQ9ITApfX0pfSxsPXtwcmVzZXJ2ZVdoaXRlc3BhY2U6ImZ1bGwiLC4uLihuPXtwYXJzZU9wdGlvbnM6aS5vcHRpb25zLnBhcnNlT3B0aW9ucyx1cGRhdGVTZWxlY3Rpb246ITAsYXBwbHlJbnB1dFJ1bGVzOiExLGFwcGx5UGFzdGVSdWxlczohMSwuLi5ufSkucGFyc2VPcHRpb25zfTtpZighbi5lcnJvck9uSW52YWxpZENvbnRlbnQmJiFpLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrJiZpLm9wdGlvbnMuZW1pdENvbnRlbnRFcnJvcil0cnl7Y3JlYXRlTm9kZUZyb21Db250ZW50KHQsaS5zY2hlbWEse3BhcnNlT3B0aW9uczpsLGVycm9yT25JbnZhbGlkQ29udGVudDohMH0pfWNhdGNoKGUpe2VtaXRDb250ZW50RXJyb3IoZSl9dHJ5e289Y3JlYXRlTm9kZUZyb21Db250ZW50KHQsaS5zY2hlbWEse3BhcnNlT3B0aW9uczpsLGVycm9yT25JbnZhbGlkQ29udGVudDpudWxsIT0ocz1uLmVycm9yT25JbnZhbGlkQ29udGVudCk/czppLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrfSl9Y2F0Y2goZSl7cmV0dXJuIGVtaXRDb250ZW50RXJyb3IoZSksITF9bGV0e2Zyb206YSx0bzpjfT0ibnVtYmVyIj09dHlwZW9mIGU/e2Zyb206ZSx0bzplfTp7ZnJvbTplLmZyb20sdG86ZS50b30sZD0hMCxwPSEwO2lmKCgidHlwZSJpbiBvP1tvXTpvKS5mb3JFYWNoKGU9PntlLmNoZWNrKCksZD0hIWQmJihlLmlzVGV4dCYmMD09PWUubWFya3MubGVuZ3RoKSxwPSEhcCYmZS5pc0Jsb2NrfSksYT09PWMmJnApe2NvbnN0e3BhcmVudDplfT1yLmRvYy5yZXNvbHZlKGEpO2UuaXNUZXh0YmxvY2smJiFlLnR5cGUuc3BlYy5jb2RlJiYhZS5jaGlsZENvdW50JiYoYS09MSxjKz0xKX1sZXQgZjtpZihkKXtpZihBcnJheS5pc0FycmF5KHQpKWY9dC5tYXAoZT0+ZS50ZXh0fHwiIikuam9pbigiIik7ZWxzZSBpZih0IGluc3RhbmNlb2YgRnJhZ21lbnQpe2xldCBlPSIiO3QuZm9yRWFjaCh0PT57dC50ZXh0JiYoZSs9dC50ZXh0KX0pLGY9ZX1lbHNlIGY9Im9iamVjdCI9PXR5cGVvZiB0JiZ0JiZ0LnRleHQ/dC50ZXh0OnQ7ci5pbnNlcnRUZXh0KGYsYSxjKX1lbHNle2Y9bztjb25zdCBlPXIuZG9jLnJlc29sdmUoYSksdD1lLm5vZGUoKSxuPTA9PT1lLnBhcmVudE9mZnNldCxpPXQuaXNUZXh0fHx0LmlzVGV4dGJsb2NrLHM9dC5jb250ZW50LnNpemU+MDtuJiZpJiZzJiZwJiYoYT1NYXRoLm1heCgwLGEtMSkpLHIucmVwbGFjZVdpdGgoYSxjLGYpfW4udXBkYXRlU2VsZWN0aW9uJiZmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1lLnN0ZXBzLmxlbmd0aC0xO2lmKHI8dClyZXR1cm47Y29uc3Qgbz1lLnN0ZXBzW3JdO2lmKCEobyBpbnN0YW5jZW9mIFJlcGxhY2VTdGVwfHxvIGluc3RhbmNlb2YgUmVwbGFjZUFyb3VuZFN0ZXApKXJldHVybjtjb25zdCBpPWUubWFwcGluZy5tYXBzW3JdO2xldCBzPTA7aS5mb3JFYWNoKChlLHQsbixyKT0+ezA9PT1zJiYocz1yKX0pLGUuc2V0U2VsZWN0aW9uKFNlbGVjdGlvbi5uZWFyKGUuZG9jLnJlc29sdmUocyksbikpfShyLHIuc3RlcHMubGVuZ3RoLTEsLTEpLG4uYXBwbHlJbnB1dFJ1bGVzJiZyLnNldE1ldGEoImFwcGx5SW5wdXRSdWxlcyIse2Zyb206YSx0ZXh0OmZ9KSxuLmFwcGx5UGFzdGVSdWxlcyYmci5zZXRNZXRhKCJhcHBseVBhc3RlUnVsZXMiLHtmcm9tOmEsdGV4dDpmfSl9cmV0dXJuITB9LGpvaW5VcD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQpPT57bGV0IG4scj1lLnNlbGVjdGlvbixvPXIgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uO2lmKG8pe2lmKHIubm9kZS5pc1RleHRibG9ja3x8IWNhbkpvaW4oZS5kb2Msci5mcm9tKSlyZXR1cm4hMTtuPXIuZnJvbX1lbHNlIGlmKG49am9pblBvaW50KGUuZG9jLHIuZnJvbSwtMSksbnVsbD09bilyZXR1cm4hMTtpZih0KXtsZXQgcj1lLnRyLmpvaW4obik7byYmci5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUoci5kb2Msbi1lLmRvYy5yZXNvbHZlKG4pLm5vZGVCZWZvcmUubm9kZVNpemUpKSx0KHIuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9KShlLHQpLGpvaW5Eb3duPSgpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT4oKGUsdCk9PntsZXQgbixyPWUuc2VsZWN0aW9uO2lmKHIgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKXtpZihyLm5vZGUuaXNUZXh0YmxvY2t8fCFjYW5Kb2luKGUuZG9jLHIudG8pKXJldHVybiExO249ci50b31lbHNlIGlmKG49am9pblBvaW50KGUuZG9jLHIudG8sMSksbnVsbD09bilyZXR1cm4hMTtyZXR1cm4gdCYmdChlLnRyLmpvaW4obikuc2Nyb2xsSW50b1ZpZXcoKSksITB9KShlLHQpLGpvaW5CYWNrd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+am9pbkJhY2t3YXJkJDEoZSx0KSxqb2luRm9yd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+am9pbkZvcndhcmQkMShlLHQpLGpvaW5JdGVtQmFja3dhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0LHRyOm59KT0+e3RyeXtjb25zdCByPWpvaW5Qb2ludChlLmRvYyxlLnNlbGVjdGlvbi4kZnJvbS5wb3MsLTEpO3JldHVybiBudWxsIT1yJiYobi5qb2luKHIsMiksdCYmdChuKSwhMCl9Y2F0Y2h7cmV0dXJuITF9fSxqb2luSXRlbUZvcndhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0LHRyOm59KT0+e3RyeXtjb25zdCByPWpvaW5Qb2ludChlLmRvYyxlLnNlbGVjdGlvbi4kZnJvbS5wb3MsMSk7cmV0dXJuIG51bGwhPXImJihuLmpvaW4ociwyKSx0JiZ0KG4pLCEwKX1jYXRjaHtyZXR1cm4hMX19LGpvaW5UZXh0YmxvY2tCYWNrd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQsbik9PntsZXQgcj1hdEJsb2NrU3RhcnQoZSxuKTtpZighcilyZXR1cm4hMTtsZXQgbz1maW5kQ3V0QmVmb3JlKHIpO3JldHVybiEhbyYmam9pblRleHRibG9ja3NBcm91bmQoZSxvLHQpfSkoZSx0KSxqb2luVGV4dGJsb2NrRm9yd2FyZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+KChlLHQsbik9PntsZXQgcj1hdEJsb2NrRW5kKGUsbik7aWYoIXIpcmV0dXJuITE7bGV0IG89ZmluZEN1dEFmdGVyKHIpO3JldHVybiEhbyYmam9pblRleHRibG9ja3NBcm91bmQoZSxvLHQpfSkoZSx0KTtmdW5jdGlvbiBpc01hY09TKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKX12YXIga2V5Ym9hcmRTaG9ydGN1dD1lPT4oe2VkaXRvcjp0LHZpZXc6bix0cjpyLGRpc3BhdGNoOm99KT0+e2NvbnN0IGk9ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLnNwbGl0KC8tKD8hJCkvKTtsZXQgbixyLG8saSxzPXRbdC5sZW5ndGgtMV07IlNwYWNlIj09PXMmJihzPSIgIik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aC0xO2UrPTEpe2NvbnN0IHM9dFtlXTtpZigvXihjbWR8bWV0YXxtKSQvaS50ZXN0KHMpKWk9ITA7ZWxzZSBpZigvXmEobHQpPyQvaS50ZXN0KHMpKW49ITA7ZWxzZSBpZigvXihjfGN0cmx8Y29udHJvbCkkL2kudGVzdChzKSlyPSEwO2Vsc2UgaWYoL15zKGhpZnQpPyQvaS50ZXN0KHMpKW89ITA7ZWxzZXtpZighL15tb2QkL2kudGVzdChzKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAke3N9YCk7aXNpT1MoKXx8aXNNYWNPUygpP2k9ITA6cj0hMH19cmV0dXJuIG4mJihzPWBBbHQtJHtzfWApLHImJihzPWBDdHJsLSR7c31gKSxpJiYocz1gTWV0YS0ke3N9YCksbyYmKHM9YFNoaWZ0LSR7c31gKSxzfShlKS5zcGxpdCgvLSg/ISQpLykscz1pLmZpbmQoZT0+IVsiQWx0IiwiQ3RybCIsIk1ldGEiLCJTaGlmdCJdLmluY2x1ZGVzKGUpKSxsPW5ldyBLZXlib2FyZEV2ZW50KCJrZXlkb3duIix7a2V5OiJTcGFjZSI9PT1zPyIgIjpzLGFsdEtleTppLmluY2x1ZGVzKCJBbHQiKSxjdHJsS2V5OmkuaW5jbHVkZXMoIkN0cmwiKSxtZXRhS2V5OmkuaW5jbHVkZXMoIk1ldGEiKSxzaGlmdEtleTppLmluY2x1ZGVzKCJTaGlmdCIpLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pLGE9dC5jYXB0dXJlVHJhbnNhY3Rpb24oKCk9PntuLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixlPT5lKG4sbCkpfSk7cmV0dXJuIG51bGw9PWF8fGEuc3RlcHMuZm9yRWFjaChlPT57Y29uc3QgdD1lLm1hcChyLm1hcHBpbmcpO3QmJm8mJnIubWF5YmVTdGVwKHQpfSksITB9O2Z1bmN0aW9uIGlzTm9kZUFjdGl2ZShlLHQsbj17fSl7Y29uc3R7ZnJvbTpyLHRvOm8sZW1wdHk6aX09ZS5zZWxlY3Rpb24scz10P2dldE5vZGVUeXBlKHQsZS5zY2hlbWEpOm51bGwsbD1bXTtlLmRvYy5ub2Rlc0JldHdlZW4ocixvLChlLHQpPT57aWYoZS5pc1RleHQpcmV0dXJuO2NvbnN0IG49TWF0aC5tYXgocix0KSxpPU1hdGgubWluKG8sdCtlLm5vZGVTaXplKTtsLnB1c2goe25vZGU6ZSxmcm9tOm4sdG86aX0pfSk7Y29uc3QgYT1vLXIsYz1sLmZpbHRlcihlPT4hc3x8cy5uYW1lPT09ZS5ub2RlLnR5cGUubmFtZSkuZmlsdGVyKGU9Pm9iamVjdEluY2x1ZGVzKGUubm9kZS5hdHRycyxuLHtzdHJpY3Q6ITF9KSk7aWYoaSlyZXR1cm4hIWMubGVuZ3RoO3JldHVybiBjLnJlZHVjZSgoZSx0KT0+ZSt0LnRvLXQuZnJvbSwwKT49YX12YXIgbGlmdD0oZSx0PXt9KT0+KHtzdGF0ZTpuLGRpc3BhdGNoOnJ9KT0+ISFpc05vZGVBY3RpdmUobixnZXROb2RlVHlwZShlLG4uc2NoZW1hKSx0KSYmKChlLHQpPT57bGV0eyRmcm9tOm4sJHRvOnJ9PWUuc2VsZWN0aW9uLG89bi5ibG9ja1JhbmdlKHIpLGk9byYmbGlmdFRhcmdldChvKTtyZXR1cm4gbnVsbCE9aSYmKHQmJnQoZS50ci5saWZ0KG8saSkuc2Nyb2xsSW50b1ZpZXcoKSksITApfSkobixyKSxsaWZ0RW1wdHlCbG9jaz0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+bGlmdEVtcHR5QmxvY2skMShlLHQpLGxpZnRMaXN0SXRlbT1lPT4oe3N0YXRlOnQsZGlzcGF0Y2g6bn0pPT5saWZ0TGlzdEl0ZW0kMShnZXROb2RlVHlwZShlLHQuc2NoZW1hKSkodCxuKSxuZXdsaW5lSW5Db2RlPSgpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT5uZXdsaW5lSW5Db2RlJDEoZSx0KTtmdW5jdGlvbiBnZXRTY2hlbWFUeXBlTmFtZUJ5TmFtZShlLHQpe3JldHVybiB0Lm5vZGVzW2VdPyJub2RlIjp0Lm1hcmtzW2VdPyJtYXJrIjpudWxsfWZ1bmN0aW9uIGRlbGV0ZVByb3BzKGUsdCl7Y29uc3Qgbj0ic3RyaW5nIj09dHlwZW9mIHQ/W3RdOnQ7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZSgodCxyKT0+KG4uaW5jbHVkZXMocil8fCh0W3JdPWVbcl0pLHQpLHt9KX12YXIgcmVzZXRBdHRyaWJ1dGVzPShlLHQpPT4oe3RyOm4sc3RhdGU6cixkaXNwYXRjaDpvfSk9PntsZXQgaT1udWxsLHM9bnVsbDtjb25zdCBsPWdldFNjaGVtYVR5cGVOYW1lQnlOYW1lKCJzdHJpbmciPT10eXBlb2YgZT9lOmUubmFtZSxyLnNjaGVtYSk7aWYoIWwpcmV0dXJuITE7Im5vZGUiPT09bCYmKGk9Z2V0Tm9kZVR5cGUoZSxyLnNjaGVtYSkpLCJtYXJrIj09PWwmJihzPWdldE1hcmtUeXBlKGUsci5zY2hlbWEpKTtsZXQgYT0hMTtyZXR1cm4gbi5zZWxlY3Rpb24ucmFuZ2VzLmZvckVhY2goZT0+e3IuZG9jLm5vZGVzQmV0d2VlbihlLiRmcm9tLnBvcyxlLiR0by5wb3MsKGUscik9PntpJiZpPT09ZS50eXBlJiYoYT0hMCxvJiZuLnNldE5vZGVNYXJrdXAocix2b2lkIDAsZGVsZXRlUHJvcHMoZS5hdHRycyx0KSkpLHMmJmUubWFya3MubGVuZ3RoJiZlLm1hcmtzLmZvckVhY2goaT0+e3M9PT1pLnR5cGUmJihhPSEwLG8mJm4uYWRkTWFyayhyLHIrZS5ub2RlU2l6ZSxzLmNyZWF0ZShkZWxldGVQcm9wcyhpLmF0dHJzLHQpKSkpfSl9KX0pLGF9LHNjcm9sbEludG9WaWV3PSgpPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT4odCYmZS5zY3JvbGxJbnRvVmlldygpLCEwKSxzZWxlY3RBbGw9KCk9Pih7dHI6ZSxkaXNwYXRjaDp0fSk9PntpZih0KXtjb25zdCB0PW5ldyBBbGxTZWxlY3Rpb24oZS5kb2MpO2Uuc2V0U2VsZWN0aW9uKHQpfXJldHVybiEwfSxzZWxlY3ROb2RlQmFja3dhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9PnNlbGVjdE5vZGVCYWNrd2FyZCQxKGUsdCksc2VsZWN0Tm9kZUZvcndhcmQ9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9PnNlbGVjdE5vZGVGb3J3YXJkJDEoZSx0KSxzZWxlY3RQYXJlbnROb2RlPSgpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT4oKGUsdCk9PntsZXQgbix7JGZyb206cix0bzpvfT1lLnNlbGVjdGlvbixpPXIuc2hhcmVkRGVwdGgobyk7cmV0dXJuIDAhPWkmJihuPXIuYmVmb3JlKGkpLHQmJnQoZS50ci5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUoZS5kb2MsbikpKSwhMCl9KShlLHQpLHNlbGVjdFRleHRibG9ja0VuZD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+T2UoZSx0KSxzZWxlY3RUZXh0YmxvY2tTdGFydD0oKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+QWUoZSx0KTtmdW5jdGlvbiBjcmVhdGVEb2N1bWVudChlLHQsbj17fSxyPXt9KXtyZXR1cm4gY3JlYXRlTm9kZUZyb21Db250ZW50KGUsdCx7c2xpY2U6ITEscGFyc2VPcHRpb25zOm4sZXJyb3JPbkludmFsaWRDb250ZW50OnIuZXJyb3JPbkludmFsaWRDb250ZW50fSl9dmFyIHNldENvbnRlbnQ9KGUse2Vycm9yT25JbnZhbGlkQ29udGVudDp0LGVtaXRVcGRhdGU6bj0hMCxwYXJzZU9wdGlvbnM6cj17fX09e30pPT4oe2VkaXRvcjpvLHRyOmksZGlzcGF0Y2g6cyxjb21tYW5kczpsfSk9Pntjb25zdHtkb2M6YX09aTtpZigiZnVsbCIhPT1yLnByZXNlcnZlV2hpdGVzcGFjZSl7Y29uc3QgbD1jcmVhdGVEb2N1bWVudChlLG8uc2NoZW1hLHIse2Vycm9yT25JbnZhbGlkQ29udGVudDpudWxsIT10P3Q6by5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pO3JldHVybiBzJiZpLnJlcGxhY2VXaXRoKDAsYS5jb250ZW50LnNpemUsbCkuc2V0TWV0YSgicHJldmVudFVwZGF0ZSIsIW4pLCEwfXJldHVybiBzJiZpLnNldE1ldGEoInByZXZlbnRVcGRhdGUiLCFuKSxsLmluc2VydENvbnRlbnRBdCh7ZnJvbTowLHRvOmEuY29udGVudC5zaXplfSxlLHtwYXJzZU9wdGlvbnM6cixlcnJvck9uSW52YWxpZENvbnRlbnQ6bnVsbCE9dD90Om8ub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2t9KX07ZnVuY3Rpb24gZ2V0TWFya0F0dHJpYnV0ZXMoZSx0KXtjb25zdCBuPWdldE1hcmtUeXBlKHQsZS5zY2hlbWEpLHtmcm9tOnIsdG86byxlbXB0eTppfT1lLnNlbGVjdGlvbixzPVtdO2k/KGUuc3RvcmVkTWFya3MmJnMucHVzaCguLi5lLnN0b3JlZE1hcmtzKSxzLnB1c2goLi4uZS5zZWxlY3Rpb24uJGhlYWQubWFya3MoKSkpOmUuZG9jLm5vZGVzQmV0d2VlbihyLG8sZT0+e3MucHVzaCguLi5lLm1hcmtzKX0pO2NvbnN0IGw9cy5maW5kKGU9PmUudHlwZS5uYW1lPT09bi5uYW1lKTtyZXR1cm4gbD97Li4ubC5hdHRyc306e319ZnVuY3Rpb24gY29tYmluZVRyYW5zYWN0aW9uU3RlcHMoZSx0KXtjb25zdCBuPW5ldyBUcmFuc2Zvcm0oZSk7cmV0dXJuIHQuZm9yRWFjaChlPT57ZS5zdGVwcy5mb3JFYWNoKGU9PntuLnN0ZXAoZSl9KX0pLG59ZnVuY3Rpb24gZmluZFBhcmVudE5vZGUoZSl7cmV0dXJuIHQ9PmZ1bmN0aW9uKGUsdCl7Zm9yKGxldCBuPWUuZGVwdGg7bj4wO24tPTEpe2NvbnN0IHI9ZS5ub2RlKG4pO2lmKHQocikpcmV0dXJue3BvczpuPjA/ZS5iZWZvcmUobik6MCxzdGFydDplLnN0YXJ0KG4pLGRlcHRoOm4sbm9kZTpyfX19KHQuJGZyb20sZSl9ZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uRmllbGQoZSx0LG4pe2lmKHZvaWQgMD09PWUuY29uZmlnW3RdJiZlLnBhcmVudClyZXR1cm4gZ2V0RXh0ZW5zaW9uRmllbGQoZS5wYXJlbnQsdCxuKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25maWdbdF0pe3JldHVybiBlLmNvbmZpZ1t0XS5iaW5kKHsuLi5uLHBhcmVudDplLnBhcmVudD9nZXRFeHRlbnNpb25GaWVsZChlLnBhcmVudCx0LG4pOm51bGx9KX1yZXR1cm4gZS5jb25maWdbdF19ZnVuY3Rpb24gZmxhdHRlbkV4dGVuc2lvbnMoZSl7cmV0dXJuIGUubWFwKGU9Pntjb25zdCB0PWdldEV4dGVuc2lvbkZpZWxkKGUsImFkZEV4dGVuc2lvbnMiLHtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOmUuc3RvcmFnZX0pO3JldHVybiB0P1tlLC4uLmZsYXR0ZW5FeHRlbnNpb25zKHQoKSldOmV9KS5mbGF0KDEwKX1mdW5jdGlvbiBnZXRIVE1MRnJvbUZyYWdtZW50KGUsdCl7Y29uc3Qgbj1ET01TZXJpYWxpemVyLmZyb21TY2hlbWEodCkuc2VyaWFsaXplRnJhZ21lbnQoZSkscj1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gci5hcHBlbmRDaGlsZChuKSxyLmlubmVySFRNTH1mdW5jdGlvbiBpc0Z1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIGNhbGxPclJldHVybihlLHQ9dm9pZCAwLC4uLm4pe3JldHVybiBpc0Z1bmN0aW9uKGUpP3Q/ZS5iaW5kKHQpKC4uLm4pOmUoLi4ubik6ZX1mdW5jdGlvbiBzcGxpdEV4dGVuc2lvbnMoZSl7cmV0dXJue2Jhc2VFeHRlbnNpb25zOmUuZmlsdGVyKGU9PiJleHRlbnNpb24iPT09ZS50eXBlKSxub2RlRXh0ZW5zaW9uczplLmZpbHRlcihlPT4ibm9kZSI9PT1lLnR5cGUpLG1hcmtFeHRlbnNpb25zOmUuZmlsdGVyKGU9PiJtYXJrIj09PWUudHlwZSl9fWZ1bmN0aW9uIGdldEF0dHJpYnV0ZXNGcm9tRXh0ZW5zaW9ucyhlKXtjb25zdCB0PVtdLHtub2RlRXh0ZW5zaW9uczpuLG1hcmtFeHRlbnNpb25zOnJ9PXNwbGl0RXh0ZW5zaW9ucyhlKSxvPVsuLi5uLC4uLnJdLGk9e2RlZmF1bHQ6bnVsbCx2YWxpZGF0ZTp2b2lkIDAscmVuZGVyZWQ6ITAscmVuZGVySFRNTDpudWxsLHBhcnNlSFRNTDpudWxsLGtlZXBPblNwbGl0OiEwLGlzUmVxdWlyZWQ6ITF9LHM9bi5maWx0ZXIoZT0+InRleHQiIT09ZS5uYW1lKS5tYXAoZT0+ZS5uYW1lKSxsPXIubWFwKGU9PmUubmFtZSksYT1bLi4ucywuLi5sXTtyZXR1cm4gZS5mb3JFYWNoKGU9Pntjb25zdCBuPWdldEV4dGVuc2lvbkZpZWxkKGUsImFkZEdsb2JhbEF0dHJpYnV0ZXMiLHtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOmUuc3RvcmFnZSxleHRlbnNpb25zOm99KTtpZighbilyZXR1cm47bigpLmZvckVhY2goZT0+e2xldCBuO249QXJyYXkuaXNBcnJheShlLnR5cGVzKT9lLnR5cGVzOiIqIj09PWUudHlwZXM/YToibm9kZXMiPT09ZS50eXBlcz9zOiJtYXJrcyI9PT1lLnR5cGVzP2w6W10sbi5mb3JFYWNoKG49PntPYmplY3QuZW50cmllcyhlLmF0dHJpYnV0ZXMpLmZvckVhY2goKFtlLHJdKT0+e3QucHVzaCh7dHlwZTpuLG5hbWU6ZSxhdHRyaWJ1dGU6ey4uLmksLi4ucn19KX0pfSl9KX0pLG8uZm9yRWFjaChlPT57Y29uc3Qgbj17bmFtZTplLm5hbWUsb3B0aW9uczplLm9wdGlvbnMsc3RvcmFnZTplLnN0b3JhZ2V9LHI9Z2V0RXh0ZW5zaW9uRmllbGQoZSwiYWRkQXR0cmlidXRlcyIsbik7aWYoIXIpcmV0dXJuO2NvbnN0IG89cigpO09iamVjdC5lbnRyaWVzKG8pLmZvckVhY2goKFtuLHJdKT0+e2NvbnN0IG89ey4uLmksLi4ucn07ImZ1bmN0aW9uIj09dHlwZW9mKG51bGw9PW8/dm9pZCAwOm8uZGVmYXVsdCkmJihvLmRlZmF1bHQ9by5kZWZhdWx0KCkpLChudWxsPT1vP3ZvaWQgMDpvLmlzUmVxdWlyZWQpJiZ2b2lkIDA9PT0obnVsbD09bz92b2lkIDA6by5kZWZhdWx0KSYmZGVsZXRlIG8uZGVmYXVsdCx0LnB1c2goe3R5cGU6ZS5uYW1lLG5hbWU6bixhdHRyaWJ1dGU6b30pfSl9KSx0fWZ1bmN0aW9uIHBhcnNlU3R5bGVFbnRyaWVzKGUpe2NvbnN0IHQ9W10sbj1mdW5jdGlvbihlKXtjb25zdCB0PVtdO2xldCBuPSIiLHI9ITEsbz0hMSxpPTA7Y29uc3Qgcz1lLmxlbmd0aDtmb3IobGV0IGw9MDtsPHM7bCs9MSl7Y29uc3Qgcz1lW2xdO2lmKCInIiE9PXN8fG8paWYoJyInIT09c3x8cil7aWYoIXImJiFvKXtpZigiKCI9PT1zKXtpKz0xLG4rPXM7Y29udGludWV9aWYoIikiPT09cyYmaT4wKXtpLT0xLG4rPXM7Y29udGludWV9aWYoIjsiPT09cyYmMD09PWkpe3QucHVzaChuKSxuPSIiO2NvbnRpbnVlfX1uKz1zfWVsc2Ugbz0hbyxuKz1zO2Vsc2Ugcj0hcixuKz1zfXJldHVybiBuJiZ0LnB1c2gobiksdH0oZXx8IiIpLHI9bi5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxyO2UrPTEpe2NvbnN0IHI9bltlXSxvPXIuaW5kZXhPZigiOiIpO2lmKC0xPT09byljb250aW51ZTtjb25zdCBpPXIuc2xpY2UoMCxvKS50cmltKCkscz1yLnNsaWNlKG8rMSkudHJpbSgpO2kmJnMmJnQucHVzaChbaSxzXSl9cmV0dXJuIHR9ZnVuY3Rpb24gbWVyZ2VBdHRyaWJ1dGVzKC4uLmUpe3JldHVybiBlLmZpbHRlcihlPT4hIWUpLnJlZHVjZSgoZSx0KT0+e2NvbnN0IG49ey4uLmV9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbZSx0XSk9PntpZihuW2VdKWlmKCJjbGFzcyI9PT1lKXtjb25zdCByPXQ/U3RyaW5nKHQpLnNwbGl0KCIgIik6W10sbz1uW2VdP25bZV0uc3BsaXQoIiAiKTpbXSxpPXIuZmlsdGVyKGU9PiFvLmluY2x1ZGVzKGUpKTtuW2VdPVsuLi5vLC4uLmldLmpvaW4oIiAiKX1lbHNlIGlmKCJzdHlsZSI9PT1lKXtjb25zdCByPW5ldyBNYXAoWy4uLnBhcnNlU3R5bGVFbnRyaWVzKG5bZV0pLC4uLnBhcnNlU3R5bGVFbnRyaWVzKHQpXSk7bltlXT1BcnJheS5mcm9tKHIuZW50cmllcygpKS5tYXAoKFtlLHRdKT0+YCR7ZX06ICR7dH1gKS5qb2luKCI7ICIpfWVsc2UgbltlXT10O2Vsc2UgbltlXT10fSksbn0se30pfWZ1bmN0aW9uIGdldFJlbmRlcmVkQXR0cmlidXRlcyhlLHQpe3JldHVybiB0LmZpbHRlcih0PT50LnR5cGU9PT1lLnR5cGUubmFtZSkuZmlsdGVyKGU9PmUuYXR0cmlidXRlLnJlbmRlcmVkKS5tYXAodD0+dC5hdHRyaWJ1dGUucmVuZGVySFRNTD90LmF0dHJpYnV0ZS5yZW5kZXJIVE1MKGUuYXR0cnMpfHx7fTp7W3QubmFtZV06ZS5hdHRyc1t0Lm5hbWVdfSkucmVkdWNlKChlLHQpPT5tZXJnZUF0dHJpYnV0ZXMoZSx0KSx7fSl9ZnVuY3Rpb24gaW5qZWN0RXh0ZW5zaW9uQXR0cmlidXRlc1RvUGFyc2VSdWxlKGUsdCl7cmV0dXJuInN0eWxlImluIGU/ZTp7Li4uZSxnZXRBdHRyczpuPT57Y29uc3Qgcj1lLmdldEF0dHJzP2UuZ2V0QXR0cnMobik6ZS5hdHRycztpZighMT09PXIpcmV0dXJuITE7Y29uc3Qgbz10LnJlZHVjZSgoZSx0KT0+e2NvbnN0IHI9dC5hdHRyaWJ1dGUucGFyc2VIVE1MP3QuYXR0cmlidXRlLnBhcnNlSFRNTChuKTpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/ZTplLm1hdGNoKC9eWystXT8oPzpcZCpcLik/XGQrJC8pP051bWJlcihlKToidHJ1ZSI9PT1lfHwiZmFsc2UiIT09ZSYmZX0obi5nZXRBdHRyaWJ1dGUodC5uYW1lKSk7cmV0dXJuIG51bGw9PXI/ZTp7Li4uZSxbdC5uYW1lXTpyfX0se30pO3JldHVybnsuLi5yLC4uLm99fX19ZnVuY3Rpb24gY2xlYW5VcFNjaGVtYUl0ZW0oZSl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFtlLHRdKT0+KCJhdHRycyIhPT1lfHwhZnVuY3Rpb24oZT17fSl7cmV0dXJuIDA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJmUuY29uc3RydWN0b3I9PT1PYmplY3R9KHQpKSYmbnVsbCE9dCkpfWZ1bmN0aW9uIGJ1aWxkQXR0cmlidXRlU3BlYyhlKXt2YXIgdCxuO2NvbnN0IHI9e307cmV0dXJuIShudWxsPT0odD1udWxsPT1lP3ZvaWQgMDplLmF0dHJpYnV0ZSk/dm9pZCAwOnQuaXNSZXF1aXJlZCkmJiJkZWZhdWx0ImluKChudWxsPT1lP3ZvaWQgMDplLmF0dHJpYnV0ZSl8fHt9KSYmKHIuZGVmYXVsdD1lLmF0dHJpYnV0ZS5kZWZhdWx0KSx2b2lkIDAhPT0obnVsbD09KG49bnVsbD09ZT92b2lkIDA6ZS5hdHRyaWJ1dGUpP3ZvaWQgMDpuLnZhbGlkYXRlKSYmKHIudmFsaWRhdGU9ZS5hdHRyaWJ1dGUudmFsaWRhdGUpLFtlLm5hbWUscl19ZnVuY3Rpb24gc29ydEV4dGVuc2lvbnMoZSl7cmV0dXJuIGUuc29ydCgoZSx0KT0+e2NvbnN0IG49Z2V0RXh0ZW5zaW9uRmllbGQoZSwicHJpb3JpdHkiKXx8MTAwLHI9Z2V0RXh0ZW5zaW9uRmllbGQodCwicHJpb3JpdHkiKXx8MTAwO3JldHVybiBuPnI/LTE6bjxyPzE6MH0pfWZ1bmN0aW9uIHJlc29sdmVFeHRlbnNpb25zKGUpe2NvbnN0IHQ9c29ydEV4dGVuc2lvbnMoZmxhdHRlbkV4dGVuc2lvbnMoZSkpLG49ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmZpbHRlcigodCxuKT0+ZS5pbmRleE9mKHQpIT09bik7cmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0KSl9KHQubWFwKGU9PmUubmFtZSkpO3JldHVybiBuLmxlbmd0aCYmY29uc29sZS53YXJuKGBbdGlwdGFwIHdhcm5dOiBEdXBsaWNhdGUgZXh0ZW5zaW9uIG5hbWVzIGZvdW5kOiBbJHtuLm1hcChlPT5gJyR7ZX0nYCkuam9pbigiLCAiKX1dLiBUaGlzIGNhbiBsZWFkIHRvIGlzc3Vlcy5gKSx0fWZ1bmN0aW9uIGdldFRleHRCZXR3ZWVuKGUsdCxuKXtjb25zdHtmcm9tOnIsdG86b309dCx7YmxvY2tTZXBhcmF0b3I6aT0iXG5cbiIsdGV4dFNlcmlhbGl6ZXJzOnM9e319PW58fHt9O2xldCBsPSIiO3JldHVybiBlLm5vZGVzQmV0d2VlbihyLG8sKGUsbixhLGMpPT57dmFyIGQ7ZS5pc0Jsb2NrJiZuPnImJihsKz1pKTtjb25zdCBwPW51bGw9PXM/dm9pZCAwOnNbZS50eXBlLm5hbWVdO2lmKHApcmV0dXJuIGEmJihsKz1wKHtub2RlOmUscG9zOm4scGFyZW50OmEsaW5kZXg6YyxyYW5nZTp0fSkpLCExO2UuaXNUZXh0JiYobCs9bnVsbD09KGQ9bnVsbD09ZT92b2lkIDA6ZS50ZXh0KT92b2lkIDA6ZC5zbGljZShNYXRoLm1heChyLG4pLW4sby1uKSl9KSxsfWZ1bmN0aW9uIGdldFRleHQoZSx0KXtyZXR1cm4gZ2V0VGV4dEJldHdlZW4oZSx7ZnJvbTowLHRvOmUuY29udGVudC5zaXplfSx0KX1mdW5jdGlvbiBnZXRUZXh0U2VyaWFsaXplcnNGcm9tU2NoZW1hKGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZS5ub2RlcykuZmlsdGVyKChbLGVdKT0+ZS5zcGVjLnRvVGV4dCkubWFwKChbZSx0XSk9PltlLHQuc3BlYy50b1RleHRdKSl9ZnVuY3Rpb24gZ2V0QXR0cmlidXRlcyhlLHQpe2NvbnN0IG49Z2V0U2NoZW1hVHlwZU5hbWVCeU5hbWUoInN0cmluZyI9PXR5cGVvZiB0P3Q6dC5uYW1lLGUuc2NoZW1hKTtyZXR1cm4ibm9kZSI9PT1uP2Z1bmN0aW9uKGUsdCl7Y29uc3Qgbj1nZXROb2RlVHlwZSh0LGUuc2NoZW1hKSx7ZnJvbTpyLHRvOm99PWUuc2VsZWN0aW9uLGk9W107ZS5kb2Mubm9kZXNCZXR3ZWVuKHIsbyxlPT57aS5wdXNoKGUpfSk7Y29uc3Qgcz1pLnJldmVyc2UoKS5maW5kKGU9PmUudHlwZS5uYW1lPT09bi5uYW1lKTtyZXR1cm4gcz97Li4ucy5hdHRyc306e319KGUsdCk6Im1hcmsiPT09bj9nZXRNYXJrQXR0cmlidXRlcyhlLHQpOnt9fWZ1bmN0aW9uIHNpbXBsaWZ5Q2hhbmdlZFJhbmdlcyhlKXtjb25zdCB0PWZ1bmN0aW9uKGUsdD1KU09OLnN0cmluZ2lmeSl7Y29uc3Qgbj17fTtyZXR1cm4gZS5maWx0ZXIoZT0+e2NvbnN0IHI9dChlKTtyZXR1cm4hT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihuW3JdPSEwKX0pfShlKTtyZXR1cm4gMT09PXQubGVuZ3RoP3Q6dC5maWx0ZXIoKGUsbik9Pntjb25zdCByPXQuZmlsdGVyKChlLHQpPT50IT09bik7cmV0dXJuIXIuc29tZSh0PT5lLm9sZFJhbmdlLmZyb20+PXQub2xkUmFuZ2UuZnJvbSYmZS5vbGRSYW5nZS50bzw9dC5vbGRSYW5nZS50byYmZS5uZXdSYW5nZS5mcm9tPj10Lm5ld1JhbmdlLmZyb20mJmUubmV3UmFuZ2UudG88PXQubmV3UmFuZ2UudG8pfSl9ZnVuY3Rpb24gZ2V0Q2hhbmdlZFJhbmdlcyhlKXtjb25zdHttYXBwaW5nOnQsc3RlcHM6bn09ZSxyPVtdO3JldHVybiB0Lm1hcHMuZm9yRWFjaCgoZSxvKT0+e2NvbnN0IGk9W107aWYoZS5yYW5nZXMubGVuZ3RoKWUuZm9yRWFjaCgoZSx0KT0+e2kucHVzaCh7ZnJvbTplLHRvOnR9KX0pO2Vsc2V7Y29uc3R7ZnJvbTplLHRvOnR9PW5bb107aWYodm9pZCAwPT09ZXx8dm9pZCAwPT09dClyZXR1cm47aS5wdXNoKHtmcm9tOmUsdG86dH0pfWkuZm9yRWFjaCgoe2Zyb206ZSx0bzpufSk9Pntjb25zdCBpPXQuc2xpY2UobykubWFwKGUsLTEpLHM9dC5zbGljZShvKS5tYXAobiksbD10LmludmVydCgpLm1hcChpLC0xKSxhPXQuaW52ZXJ0KCkubWFwKHMpO3IucHVzaCh7b2xkUmFuZ2U6e2Zyb206bCx0bzphfSxuZXdSYW5nZTp7ZnJvbTppLHRvOnN9fSl9KX0pLHNpbXBsaWZ5Q2hhbmdlZFJhbmdlcyhyKX1mdW5jdGlvbiBnZXRNYXJrc0JldHdlZW4oZSx0LG4pe2NvbnN0IHI9W107cmV0dXJuIGU9PT10P24ucmVzb2x2ZShlKS5tYXJrcygpLmZvckVhY2godD0+e2NvbnN0IG89Z2V0TWFya1JhbmdlKG4ucmVzb2x2ZShlKSx0LnR5cGUpO28mJnIucHVzaCh7bWFyazp0LC4uLm99KX0pOm4ubm9kZXNCZXR3ZWVuKGUsdCwoZSx0KT0+e2UmJnZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLm5vZGVTaXplKSYmci5wdXNoKC4uLmUubWFya3MubWFwKG49Pih7ZnJvbTp0LHRvOnQrZS5ub2RlU2l6ZSxtYXJrOm59KSkpfSkscn1mdW5jdGlvbiBnZXRTY2hlbWFUeXBlQnlOYW1lKGUsdCl7cmV0dXJuIHQubm9kZXNbZV18fHQubWFya3NbZV18fG51bGx9ZnVuY3Rpb24gZ2V0U3BsaXR0ZWRBdHRyaWJ1dGVzKGUsdCxuKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLmZpbHRlcigoW25dKT0+e2NvbnN0IHI9ZS5maW5kKGU9PmUudHlwZT09PXQmJmUubmFtZT09PW4pO3JldHVybiEhciYmci5hdHRyaWJ1dGUua2VlcE9uU3BsaXR9KSl9ZnVuY3Rpb24gaXNNYXJrQWN0aXZlKGUsdCxuPXt9KXtjb25zdHtlbXB0eTpyLHJhbmdlczpvfT1lLnNlbGVjdGlvbixpPXQ/Z2V0TWFya1R5cGUodCxlLnNjaGVtYSk6bnVsbDtpZihyKXJldHVybiEhKGUuc3RvcmVkTWFya3N8fGUuc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCkpLmZpbHRlcihlPT4haXx8aS5uYW1lPT09ZS50eXBlLm5hbWUpLmZpbmQoZT0+b2JqZWN0SW5jbHVkZXMoZS5hdHRycyxuLHtzdHJpY3Q6ITF9KSk7bGV0IHM9MDtjb25zdCBsPVtdO2lmKG8uZm9yRWFjaCgoeyRmcm9tOnQsJHRvOm59KT0+e2NvbnN0IHI9dC5wb3Msbz1uLnBvcztlLmRvYy5ub2Rlc0JldHdlZW4ocixvLChlLHQpPT57aWYoaSYmZS5pbmxpbmVDb250ZW50JiYhZS50eXBlLmFsbG93c01hcmtUeXBlKGkpKXJldHVybiExO2lmKCFlLmlzVGV4dCYmIWUubWFya3MubGVuZ3RoKXJldHVybjtjb25zdCBuPU1hdGgubWF4KHIsdCksYT1NYXRoLm1pbihvLHQrZS5ub2RlU2l6ZSk7cys9YS1uLGwucHVzaCguLi5lLm1hcmtzLm1hcChlPT4oe21hcms6ZSxmcm9tOm4sdG86YX0pKSl9KX0pLDA9PT1zKXJldHVybiExO2NvbnN0IGE9bC5maWx0ZXIoZT0+IWl8fGkubmFtZT09PWUubWFyay50eXBlLm5hbWUpLmZpbHRlcihlPT5vYmplY3RJbmNsdWRlcyhlLm1hcmsuYXR0cnMsbix7c3RyaWN0OiExfSkpLnJlZHVjZSgoZSx0KT0+ZSt0LnRvLXQuZnJvbSwwKSxjPWwuZmlsdGVyKGU9PiFpfHxlLm1hcmsudHlwZSE9PWkmJmUubWFyay50eXBlLmV4Y2x1ZGVzKGkpKS5yZWR1Y2UoKGUsdCk9PmUrdC50by10LmZyb20sMCk7cmV0dXJuKGE+MD9hK2M6YSk+PXN9ZnVuY3Rpb24gaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LnNvbWUodD0+KCJzdHJpbmciPT10eXBlb2YgdD90OnQubmFtZSk9PT1lLm5hbWUpOnR9ZnVuY3Rpb24gaXNMaXN0KGUsdCl7Y29uc3R7bm9kZUV4dGVuc2lvbnM6bn09c3BsaXRFeHRlbnNpb25zKHQpLHI9bi5maW5kKHQ9PnQubmFtZT09PWUpO2lmKCFyKXJldHVybiExO2NvbnN0IG89Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKHIsImdyb3VwIix7bmFtZTpyLm5hbWUsb3B0aW9uczpyLm9wdGlvbnMsc3RvcmFnZTpyLnN0b3JhZ2V9KSk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBvJiZvLnNwbGl0KCIgIikuaW5jbHVkZXMoImxpc3QiKX1mdW5jdGlvbiBpc05vZGVFbXB0eShlLHtjaGVja0NoaWxkcmVuOnQ9ITAsaWdub3JlV2hpdGVzcGFjZTpuPSExfT17fSl7dmFyIHI7aWYobil7aWYoImhhcmRCcmVhayI9PT1lLnR5cGUubmFtZSlyZXR1cm4hMDtpZihlLmlzVGV4dClyZXR1cm4hL1xTLy50ZXN0KG51bGwhPShyPWUudGV4dCk/cjoiIil9aWYoZS5pc1RleHQpcmV0dXJuIWUudGV4dDtpZihlLmlzQXRvbXx8ZS5pc0xlYWYpcmV0dXJuITE7aWYoMD09PWUuY29udGVudC5jaGlsZENvdW50KXJldHVybiEwO2lmKHQpe2xldCByPSEwO3JldHVybiBlLmNvbnRlbnQuZm9yRWFjaChlPT57ITEhPT1yJiYoaXNOb2RlRW1wdHkoZSx7aWdub3JlV2hpdGVzcGFjZTpuLGNoZWNrQ2hpbGRyZW46dH0pfHwocj0hMSkpfSkscn1yZXR1cm4hMX1mdW5jdGlvbiBpc05vZGVTZWxlY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9ufXZhciAkdD1jbGFzcyBfTWFwcGFibGVQb3NpdGlvbntjb25zdHJ1Y3RvcihlKXt0aGlzLnBvc2l0aW9uPWV9c3RhdGljIGZyb21KU09OKGUpe3JldHVybiBuZXcgX01hcHBhYmxlUG9zaXRpb24oZS5wb3NpdGlvbil9dG9KU09OKCl7cmV0dXJue3Bvc2l0aW9uOnRoaXMucG9zaXRpb259fX07ZnVuY3Rpb24gZ2V0VXBkYXRlZFBvc2l0aW9uKGUsdCl7Y29uc3Qgbj10Lm1hcHBpbmcubWFwUmVzdWx0KGUucG9zaXRpb24pO3JldHVybntwb3NpdGlvbjpuZXcgJHQobi5wb3MpLG1hcFJlc3VsdDpufX1mdW5jdGlvbiBjcmVhdGVNYXBwYWJsZVBvc2l0aW9uKGUpe3JldHVybiBuZXcgJHQoZSl9ZnVuY3Rpb24gcG9zVG9ET01SZWN0KGUsdCxuKXtjb25zdCByPWUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSxvPW1pbk1heCh0LDAsciksaT1taW5NYXgobiwwLHIpLHM9ZS5jb29yZHNBdFBvcyhvKSxsPWUuY29vcmRzQXRQb3MoaSwtMSksYT1NYXRoLm1pbihzLnRvcCxsLnRvcCksYz1NYXRoLm1heChzLmJvdHRvbSxsLmJvdHRvbSksZD1NYXRoLm1pbihzLmxlZnQsbC5sZWZ0KSxwPU1hdGgubWF4KHMucmlnaHQsbC5yaWdodCksZj17dG9wOmEsYm90dG9tOmMsbGVmdDpkLHJpZ2h0OnAsd2lkdGg6cC1kLGhlaWdodDpjLWEseDpkLHk6YX07cmV0dXJuey4uLmYsdG9KU09OOigpPT5mfX12YXIgc2V0TWFyaz0oZSx0PXt9KT0+KHt0cjpuLHN0YXRlOnIsZGlzcGF0Y2g6b30pPT57Y29uc3R7c2VsZWN0aW9uOml9PW4se2VtcHR5OnMscmFuZ2VzOmx9PWksYT1nZXRNYXJrVHlwZShlLHIuc2NoZW1hKTtpZihvKWlmKHMpe2NvbnN0IGU9Z2V0TWFya0F0dHJpYnV0ZXMocixhKTtuLmFkZFN0b3JlZE1hcmsoYS5jcmVhdGUoey4uLmUsLi4udH0pKX1lbHNlIGwuZm9yRWFjaChlPT57Y29uc3Qgbz1lLiRmcm9tLnBvcyxpPWUuJHRvLnBvcztyLmRvYy5ub2Rlc0JldHdlZW4obyxpLChlLHIpPT57Y29uc3Qgcz1NYXRoLm1heChyLG8pLGw9TWF0aC5taW4ocitlLm5vZGVTaXplLGkpO2UubWFya3MuZmluZChlPT5lLnR5cGU9PT1hKT9lLm1hcmtzLmZvckVhY2goZT0+e2E9PT1lLnR5cGUmJm4uYWRkTWFyayhzLGwsYS5jcmVhdGUoey4uLmUuYXR0cnMsLi4udH0pKX0pOm4uYWRkTWFyayhzLGwsYS5jcmVhdGUodCkpfSl9KTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByO2NvbnN0e3NlbGVjdGlvbjpvfT10O2xldCBpPW51bGw7aWYoaXNUZXh0U2VsZWN0aW9uKG8pJiYoaT1vLiRjdXJzb3IpLGkpe2NvbnN0IHQ9bnVsbCE9KHI9ZS5zdG9yZWRNYXJrcyk/cjppLm1hcmtzKCk7cmV0dXJuIGkucGFyZW50LnR5cGUuYWxsb3dzTWFya1R5cGUobikmJighIW4uaXNJblNldCh0KXx8IXQuc29tZShlPT5lLnR5cGUuZXhjbHVkZXMobikpKX1jb25zdHtyYW5nZXM6c309bztyZXR1cm4gcy5zb21lKCh7JGZyb206dCwkdG86cn0pPT57bGV0IG89MD09PXQuZGVwdGgmJmUuZG9jLmlubGluZUNvbnRlbnQmJmUuZG9jLnR5cGUuYWxsb3dzTWFya1R5cGUobik7cmV0dXJuIGUuZG9jLm5vZGVzQmV0d2Vlbih0LnBvcyxyLnBvcywoZSx0LHIpPT57aWYobylyZXR1cm4hMTtpZihlLmlzSW5saW5lKXtjb25zdCB0PSFyfHxyLnR5cGUuYWxsb3dzTWFya1R5cGUobiksaT0hIW4uaXNJblNldChlLm1hcmtzKXx8IWUubWFya3Muc29tZShlPT5lLnR5cGUuZXhjbHVkZXMobikpO289dCYmaX1yZXR1cm4hb30pLG99KX0ocixuLGEpfSxzZXRNZXRhPShlLHQpPT4oe3RyOm59KT0+KG4uc2V0TWV0YShlLHQpLCEwKSxzZXROb2RlPShlLHQ9e30pPT4oe3N0YXRlOm4sZGlzcGF0Y2g6cixjaGFpbjpvfSk9Pntjb25zdCBpPWdldE5vZGVUeXBlKGUsbi5zY2hlbWEpO2xldCBzO3JldHVybiBuLnNlbGVjdGlvbi4kYW5jaG9yLnNhbWVQYXJlbnQobi5zZWxlY3Rpb24uJGhlYWQpJiYocz1uLnNlbGVjdGlvbi4kYW5jaG9yLnBhcmVudC5hdHRycyksaS5pc1RleHRibG9jaz9vKCkuY29tbWFuZCgoe2NvbW1hbmRzOmV9KT0+ISFzZXRCbG9ja1R5cGUoaSx7Li4ucywuLi50fSkobil8fGUuY2xlYXJOb2RlcygpKS5jb21tYW5kKCh7c3RhdGU6ZX0pPT5zZXRCbG9ja1R5cGUoaSx7Li4ucywuLi50fSkoZSxyKSkucnVuKCk6KGNvbnNvbGUud2FybignW3RpcHRhcCB3YXJuXTogQ3VycmVudGx5ICJzZXROb2RlKCkiIG9ubHkgc3VwcG9ydHMgdGV4dCBibG9jayBub2Rlcy4nKSwhMSl9LHNldE5vZGVTZWxlY3Rpb249ZT0+KHt0cjp0LGRpc3BhdGNoOm59KT0+e2lmKG4pe2NvbnN0e2RvYzpufT10LHI9bWluTWF4KGUsMCxuLmNvbnRlbnQuc2l6ZSksbz1Ob2RlU2VsZWN0aW9uLmNyZWF0ZShuLHIpO3Quc2V0U2VsZWN0aW9uKG8pfXJldHVybiEwfSxzZXRUZXh0RGlyZWN0aW9uPShlLHQpPT4oe3RyOm4sc3RhdGU6cixkaXNwYXRjaDpvfSk9Pntjb25zdHtzZWxlY3Rpb246aX09cjtsZXQgcyxsO3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8ocz10LGw9dCk6dCYmImZyb20iaW4gdCYmInRvImluIHQ/KHM9dC5mcm9tLGw9dC50byk6KHM9aS5mcm9tLGw9aS50byksbyYmbi5kb2Mubm9kZXNCZXR3ZWVuKHMsbCwodCxyKT0+e3QuaXNUZXh0fHxuLnNldE5vZGVNYXJrdXAocix2b2lkIDAsey4uLnQuYXR0cnMsZGlyOmV9KX0pLCEwfSxzZXRUZXh0U2VsZWN0aW9uPWU9Pih7dHI6dCxkaXNwYXRjaDpufSk9PntpZihuKXtjb25zdHtkb2M6bn09dCx7ZnJvbTpyLHRvOm99PSJudW1iZXIiPT10eXBlb2YgZT97ZnJvbTplLHRvOmV9OmUsaT1UZXh0U2VsZWN0aW9uLmF0U3RhcnQobikuZnJvbSxzPVRleHRTZWxlY3Rpb24uYXRFbmQobikudG8sbD1taW5NYXgocixpLHMpLGE9bWluTWF4KG8saSxzKSxjPVRleHRTZWxlY3Rpb24uY3JlYXRlKG4sbCxhKTt0LnNldFNlbGVjdGlvbihjKX1yZXR1cm4hMH0sc2lua0xpc3RJdGVtPWU9Pih7c3RhdGU6dCxkaXNwYXRjaDpufSk9Pntjb25zdCByPWdldE5vZGVUeXBlKGUsdC5zY2hlbWEpO3JldHVybihvPXIsZnVuY3Rpb24oZSx0KXtsZXR7JGZyb206biwkdG86cn09ZS5zZWxlY3Rpb24saT1uLmJsb2NrUmFuZ2UocixlPT5lLmNoaWxkQ291bnQ+MCYmZS5maXJzdENoaWxkLnR5cGU9PW8pO2lmKCFpKXJldHVybiExO2xldCBzPWkuc3RhcnRJbmRleDtpZigwPT1zKXJldHVybiExO2xldCBsPWkucGFyZW50LGE9bC5jaGlsZChzLTEpO2lmKGEudHlwZSE9bylyZXR1cm4hMTtpZih0KXtsZXQgbj1hLmxhc3RDaGlsZCYmYS5sYXN0Q2hpbGQudHlwZT09bC50eXBlLHI9RnJhZ21lbnQuZnJvbShuP28uY3JlYXRlKCk6bnVsbCkscz1uZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShvLmNyZWF0ZShudWxsLEZyYWdtZW50LmZyb20obC50eXBlLmNyZWF0ZShudWxsLHIpKSkpLG4/MzoxLDApLGM9aS5zdGFydCxkPWkuZW5kO3QoZS50ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcChjLShuPzM6MSksZCxjLGQscywxLCEwKSkuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9KSh0LG4pO3ZhciBvfTtmdW5jdGlvbiBlbnN1cmVNYXJrcyhlLHQpe2NvbnN0IG49ZS5zdG9yZWRNYXJrc3x8ZS5zZWxlY3Rpb24uJHRvLnBhcmVudE9mZnNldCYmZS5zZWxlY3Rpb24uJGZyb20ubWFya3MoKTtpZihuKXtjb25zdCByPW4uZmlsdGVyKGU9Pm51bGw9PXQ/dm9pZCAwOnQuaW5jbHVkZXMoZS50eXBlLm5hbWUpKTtlLnRyLmVuc3VyZU1hcmtzKHIpfX12YXIgc3BsaXRCbG9jaz0oe2tlZXBNYXJrczplPSEwfT17fSk9Pih7dHI6dCxzdGF0ZTpuLGRpc3BhdGNoOnIsZWRpdG9yOm99KT0+e2NvbnN0e3NlbGVjdGlvbjppLGRvYzpzfT10LHskZnJvbTpsLCR0bzphfT1pLGM9Z2V0U3BsaXR0ZWRBdHRyaWJ1dGVzKG8uZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzLGwubm9kZSgpLnR5cGUubmFtZSxsLm5vZGUoKS5hdHRycyk7aWYoaSBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24mJmkubm9kZS5pc0Jsb2NrKXJldHVybiEoIWwucGFyZW50T2Zmc2V0fHwhY2FuU3BsaXQocyxsLnBvcykpJiYociYmKGUmJmVuc3VyZU1hcmtzKG4sby5leHRlbnNpb25NYW5hZ2VyLnNwbGl0dGFibGVNYXJrcyksdC5zcGxpdChsLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksITApO2lmKCFsLnBhcmVudC5pc0Jsb2NrKXJldHVybiExO2NvbnN0IGQ9YS5wYXJlbnRPZmZzZXQ9PT1hLnBhcmVudC5jb250ZW50LnNpemUscD0wPT09bC5kZXB0aD92b2lkIDA6ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTA7dDxlLmVkZ2VDb3VudDt0Kz0xKXtjb25zdHt0eXBlOm59PWUuZWRnZSh0KTtpZihuLmlzVGV4dGJsb2NrJiYhbi5oYXNSZXF1aXJlZEF0dHJzKCkpcmV0dXJuIG59cmV0dXJuIG51bGx9KGwubm9kZSgtMSkuY29udGVudE1hdGNoQXQobC5pbmRleEFmdGVyKC0xKSkpO2xldCBmPWQmJnA/W3t0eXBlOnAsYXR0cnM6Y31dOnZvaWQgMCxtPWNhblNwbGl0KHQuZG9jLHQubWFwcGluZy5tYXAobC5wb3MpLDEsZik7aWYoZnx8bXx8IWNhblNwbGl0KHQuZG9jLHQubWFwcGluZy5tYXAobC5wb3MpLDEscD9be3R5cGU6cH1dOnZvaWQgMCl8fChtPSEwLGY9cD9be3R5cGU6cCxhdHRyczpjfV06dm9pZCAwKSxyKXtpZihtJiYoaSBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24mJnQuZGVsZXRlU2VsZWN0aW9uKCksdC5zcGxpdCh0Lm1hcHBpbmcubWFwKGwucG9zKSwxLGYpLHAmJiFkJiYhbC5wYXJlbnRPZmZzZXQmJmwucGFyZW50LnR5cGUhPT1wKSl7Y29uc3QgZT10Lm1hcHBpbmcubWFwKGwuYmVmb3JlKCkpLG49dC5kb2MucmVzb2x2ZShlKTtsLm5vZGUoLTEpLmNhblJlcGxhY2VXaXRoKG4uaW5kZXgoKSxuLmluZGV4KCkrMSxwKSYmdC5zZXROb2RlTWFya3VwKHQubWFwcGluZy5tYXAobC5iZWZvcmUoKSkscCl9ZSYmZW5zdXJlTWFya3MobixvLmV4dGVuc2lvbk1hbmFnZXIuc3BsaXR0YWJsZU1hcmtzKSx0LnNjcm9sbEludG9WaWV3KCl9cmV0dXJuIG19LHNwbGl0TGlzdEl0ZW09KGUsdD17fSk9Pih7dHI6bixzdGF0ZTpyLGRpc3BhdGNoOm8sZWRpdG9yOml9KT0+e3ZhciBzO2NvbnN0IGw9Z2V0Tm9kZVR5cGUoZSxyLnNjaGVtYSkseyRmcm9tOmEsJHRvOmN9PXIuc2VsZWN0aW9uLGQ9ci5zZWxlY3Rpb24ubm9kZTtpZihkJiZkLmlzQmxvY2t8fGEuZGVwdGg8Mnx8IWEuc2FtZVBhcmVudChjKSlyZXR1cm4hMTtjb25zdCBwPWEubm9kZSgtMSk7aWYocC50eXBlIT09bClyZXR1cm4hMTtjb25zdCBmPWkuZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzO2lmKDA9PT1hLnBhcmVudC5jb250ZW50LnNpemUmJmEubm9kZSgtMSkuY2hpbGRDb3VudD09PWEuaW5kZXhBZnRlcigtMSkpe2lmKDI9PT1hLmRlcHRofHxhLm5vZGUoLTMpLnR5cGUhPT1sfHxhLmluZGV4KC0yKSE9PWEubm9kZSgtMikuY2hpbGRDb3VudC0xKXJldHVybiExO2lmKG8pe2xldCBlPUZyYWdtZW50LmVtcHR5O2NvbnN0IHI9YS5pbmRleCgtMSk/MTphLmluZGV4KC0yKT8yOjM7Zm9yKGxldCB0PWEuZGVwdGgtcjt0Pj1hLmRlcHRoLTM7dC09MSllPUZyYWdtZW50LmZyb20oYS5ub2RlKHQpLmNvcHkoZSkpO2NvbnN0IG89YS5pbmRleEFmdGVyKC0xKTxhLm5vZGUoLTIpLmNoaWxkQ291bnQ/MTphLmluZGV4QWZ0ZXIoLTIpPGEubm9kZSgtMykuY2hpbGRDb3VudD8yOjMsaT17Li4uZ2V0U3BsaXR0ZWRBdHRyaWJ1dGVzKGYsYS5ub2RlKCkudHlwZS5uYW1lLGEubm9kZSgpLmF0dHJzKSwuLi50fSxjPShudWxsPT0ocz1sLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSk/dm9pZCAwOnMuY3JlYXRlQW5kRmlsbChpKSl8fHZvaWQgMDtlPWUuYXBwZW5kKEZyYWdtZW50LmZyb20obC5jcmVhdGVBbmRGaWxsKG51bGwsYyl8fHZvaWQgMCkpO2NvbnN0IGQ9YS5iZWZvcmUoYS5kZXB0aC0oci0xKSk7bi5yZXBsYWNlKGQsYS5hZnRlcigtbyksbmV3IFNsaWNlKGUsNC1yLDApKTtsZXQgcD0tMTtuLmRvYy5ub2Rlc0JldHdlZW4oZCxuLmRvYy5jb250ZW50LnNpemUsKGUsdCk9PntpZihwPi0xKXJldHVybiExO2UuaXNUZXh0YmxvY2smJjA9PT1lLmNvbnRlbnQuc2l6ZSYmKHA9dCsxKX0pLHA+LTEmJm4uc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24ubmVhcihuLmRvYy5yZXNvbHZlKHApKSksbi5zY3JvbGxJbnRvVmlldygpfXJldHVybiEwfWNvbnN0IG09Yy5wb3M9PT1hLmVuZCgpP3AuY29udGVudE1hdGNoQXQoMCkuZGVmYXVsdFR5cGU6bnVsbCx5PXsuLi5nZXRTcGxpdHRlZEF0dHJpYnV0ZXMoZixwLnR5cGUubmFtZSxwLmF0dHJzKSwuLi50fSx3PXsuLi5nZXRTcGxpdHRlZEF0dHJpYnV0ZXMoZixhLm5vZGUoKS50eXBlLm5hbWUsYS5ub2RlKCkuYXR0cnMpLC4uLnR9O24uZGVsZXRlKGEucG9zLGMucG9zKTtjb25zdCBiPW0/W3t0eXBlOmwsYXR0cnM6eX0se3R5cGU6bSxhdHRyczp3fV06W3t0eXBlOmwsYXR0cnM6eX1dO2lmKCFjYW5TcGxpdChuLmRvYyxhLnBvcywyKSlyZXR1cm4hMTtpZihvKXtjb25zdHtzZWxlY3Rpb246ZSxzdG9yZWRNYXJrczp0fT1yLHtzcGxpdHRhYmxlTWFya3M6c309aS5leHRlbnNpb25NYW5hZ2VyLGw9dHx8ZS4kdG8ucGFyZW50T2Zmc2V0JiZlLiRmcm9tLm1hcmtzKCk7aWYobi5zcGxpdChhLnBvcywyLGIpLnNjcm9sbEludG9WaWV3KCksIWx8fCFvKXJldHVybiEwO2NvbnN0IGM9bC5maWx0ZXIoZT0+cy5pbmNsdWRlcyhlLnR5cGUubmFtZSkpO24uZW5zdXJlTWFya3MoYyl9cmV0dXJuITB9LGpvaW5MaXN0QmFja3dhcmRzPShlLHQpPT57Y29uc3Qgbj1maW5kUGFyZW50Tm9kZShlPT5lLnR5cGU9PT10KShlLnNlbGVjdGlvbik7aWYoIW4pcmV0dXJuITA7Y29uc3Qgcj1lLmRvYy5yZXNvbHZlKE1hdGgubWF4KDAsbi5wb3MtMSkpLmJlZm9yZShuLmRlcHRoKTtpZih2b2lkIDA9PT1yKXJldHVybiEwO2NvbnN0IG89ZS5kb2Mubm9kZUF0KHIpO3JldHVybiBuLm5vZGUudHlwZSE9PShudWxsPT1vP3ZvaWQgMDpvLnR5cGUpfHwhY2FuSm9pbihlLmRvYyxuLnBvcyl8fChlLmpvaW4obi5wb3MpLCEwKX0sam9pbkxpc3RGb3J3YXJkcz0oZSx0KT0+e2NvbnN0IG49ZmluZFBhcmVudE5vZGUoZT0+ZS50eXBlPT09dCkoZS5zZWxlY3Rpb24pO2lmKCFuKXJldHVybiEwO2NvbnN0IHI9ZS5kb2MucmVzb2x2ZShuLnN0YXJ0KS5hZnRlcihuLmRlcHRoKTtpZih2b2lkIDA9PT1yKXJldHVybiEwO2NvbnN0IG89ZS5kb2Mubm9kZUF0KHIpO3JldHVybiBuLm5vZGUudHlwZSE9PShudWxsPT1vP3ZvaWQgMDpvLnR5cGUpfHwhY2FuSm9pbihlLmRvYyxyKXx8KGUuam9pbihyKSwhMCl9O3ZhciB0b2dnbGVMaXN0PShlLHQsbixyPXt9KT0+KHtlZGl0b3I6byx0cjppLHN0YXRlOnMsZGlzcGF0Y2g6bCxjaGFpbjphLGNvbW1hbmRzOmMsY2FuOmR9KT0+e2NvbnN0e2V4dGVuc2lvbnM6cCxzcGxpdHRhYmxlTWFya3M6Zn09by5leHRlbnNpb25NYW5hZ2VyLG09Z2V0Tm9kZVR5cGUoZSxzLnNjaGVtYSkseT1nZXROb2RlVHlwZSh0LHMuc2NoZW1hKSx7c2VsZWN0aW9uOncsc3RvcmVkTWFya3M6Yn09cyx7JGZyb206diwkdG86eH09dyxTPXYuYmxvY2tSYW5nZSh4KSxDPWJ8fHcuJHRvLnBhcmVudE9mZnNldCYmdy4kZnJvbS5tYXJrcygpO2lmKCFTKXJldHVybiExO2NvbnN0IEE9ZmluZFBhcmVudE5vZGUoZT0+aXNMaXN0KGUudHlwZS5uYW1lLHApKSh3KSxPPTA9PT13LmZyb20mJncudG89PT1zLmRvYy5jb250ZW50LnNpemUsRT1zLmRvYy5jb250ZW50LmNvbnRlbnQsTj0xPT09RS5sZW5ndGg/RVswXTpudWxsLFI9TyYmTiYmaXNMaXN0KE4udHlwZS5uYW1lLHApP3tub2RlOk4scG9zOjB9Om51bGwsRD1udWxsIT1BP0E6UixQPSEhUjtpZigoISFBJiZTLmRlcHRoPj0xJiZTLmRlcHRoLUEuZGVwdGg8PTF8fFApJiZEKXtpZihELm5vZGUudHlwZT09PW0pcmV0dXJuIE8mJlA/YSgpLmNvbW1hbmQoKHt0cjplLGRpc3BhdGNoOnR9KT0+e2NvbnN0IG49ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmRvYyxuPXQuZmlyc3RDaGlsZDtpZighbilyZXR1cm4gbnVsbDtjb25zdCByPXQucmVzb2x2ZSgxKSxvPXQucmVzb2x2ZShuLm5vZGVTaXplLTEpO3JldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4ocixvKX0oZSk7cmV0dXJuISFuJiYoZS5zZXRTZWxlY3Rpb24obiksdCYmdChlKSwhMCl9KS5saWZ0TGlzdEl0ZW0oeSkucnVuKCk6Yy5saWZ0TGlzdEl0ZW0oeSk7aWYoaXNMaXN0KEQubm9kZS50eXBlLm5hbWUscCkmJm0udmFsaWRDb250ZW50KEQubm9kZS5jb250ZW50KSlyZXR1cm4gYSgpLmNvbW1hbmQoKCk9PihpLnNldE5vZGVNYXJrdXAoRC5wb3MsbSksITApKS5jb21tYW5kKCgpPT5qb2luTGlzdEJhY2t3YXJkcyhpLG0pKS5jb21tYW5kKCgpPT5qb2luTGlzdEZvcndhcmRzKGksbSkpLnJ1bigpfXJldHVybiBuJiZDJiZsP2EoKS5jb21tYW5kKCgpPT57Y29uc3QgZT1kKCkud3JhcEluTGlzdChtLHIpLHQ9Qy5maWx0ZXIoZT0+Zi5pbmNsdWRlcyhlLnR5cGUubmFtZSkpO3JldHVybiBpLmVuc3VyZU1hcmtzKHQpLCEhZXx8Yy5jbGVhck5vZGVzKCl9KS53cmFwSW5MaXN0KG0scikuY29tbWFuZCgoKT0+am9pbkxpc3RCYWNrd2FyZHMoaSxtKSkuY29tbWFuZCgoKT0+am9pbkxpc3RGb3J3YXJkcyhpLG0pKS5ydW4oKTphKCkuY29tbWFuZCgoKT0+ISFkKCkud3JhcEluTGlzdChtLHIpfHxjLmNsZWFyTm9kZXMoKSkud3JhcEluTGlzdChtLHIpLmNvbW1hbmQoKCk9PmpvaW5MaXN0QmFja3dhcmRzKGksbSkpLmNvbW1hbmQoKCk9PmpvaW5MaXN0Rm9yd2FyZHMoaSxtKSkucnVuKCl9LHRvZ2dsZU1hcms9KGUsdD17fSxuPXt9KT0+KHtzdGF0ZTpyLGNvbW1hbmRzOm99KT0+e2NvbnN0e2V4dGVuZEVtcHR5TWFya1JhbmdlOmk9ITF9PW4scz1nZXRNYXJrVHlwZShlLHIuc2NoZW1hKTtyZXR1cm4gaXNNYXJrQWN0aXZlKHIscyx0KT9vLnVuc2V0TWFyayhzLHtleHRlbmRFbXB0eU1hcmtSYW5nZTppfSk6by5zZXRNYXJrKHMsdCl9LHRvZ2dsZU5vZGU9KGUsdCxuPXt9KT0+KHtzdGF0ZTpyLGNvbW1hbmRzOm99KT0+e2NvbnN0IGk9Z2V0Tm9kZVR5cGUoZSxyLnNjaGVtYSkscz1nZXROb2RlVHlwZSh0LHIuc2NoZW1hKSxsPWlzTm9kZUFjdGl2ZShyLGksbik7bGV0IGE7cmV0dXJuIHIuc2VsZWN0aW9uLiRhbmNob3Iuc2FtZVBhcmVudChyLnNlbGVjdGlvbi4kaGVhZCkmJihhPXIuc2VsZWN0aW9uLiRhbmNob3IucGFyZW50LmF0dHJzKSxsP28uc2V0Tm9kZShzLGEpOm8uc2V0Tm9kZShpLHsuLi5hLC4uLm59KX0sdG9nZ2xlV3JhcD0oZSx0PXt9KT0+KHtzdGF0ZTpuLGNvbW1hbmRzOnJ9KT0+e2NvbnN0IG89Z2V0Tm9kZVR5cGUoZSxuLnNjaGVtYSk7cmV0dXJuIGlzTm9kZUFjdGl2ZShuLG8sdCk/ci5saWZ0KG8pOnIud3JhcEluKG8sdCl9LHVuZG9JbnB1dFJ1bGU9KCk9Pih7c3RhdGU6ZSxkaXNwYXRjaDp0fSk9Pntjb25zdCBuPWUucGx1Z2lucztmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrPTEpe2NvbnN0IG89bltyXTtsZXQgaTtpZihvLnNwZWMuaXNJbnB1dFJ1bGVzJiYoaT1vLmdldFN0YXRlKGUpKSl7aWYodCl7Y29uc3QgdD1lLnRyLG49aS50cmFuc2Zvcm07Zm9yKGxldCBlPW4uc3RlcHMubGVuZ3RoLTE7ZT49MDtlLT0xKXQuc3RlcChuLnN0ZXBzW2VdLmludmVydChuLmRvY3NbZV0pKTtpZihpLnRleHQpe2NvbnN0IG49dC5kb2MucmVzb2x2ZShpLmZyb20pLm1hcmtzKCk7dC5yZXBsYWNlV2l0aChpLmZyb20saS50byxlLnNjaGVtYS50ZXh0KGkudGV4dCxuKSl9ZWxzZSB0LmRlbGV0ZShpLmZyb20saS50byl9cmV0dXJuITB9fXJldHVybiExfSx1bnNldEFsbE1hcmtzPSgpPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT57Y29uc3R7c2VsZWN0aW9uOm59PWUse2VtcHR5OnIscmFuZ2VzOm99PW47cmV0dXJuIHJ8fHQmJm8uZm9yRWFjaCh0PT57ZS5yZW1vdmVNYXJrKHQuJGZyb20ucG9zLHQuJHRvLnBvcyl9KSwhMH0sdW5zZXRNYXJrPShlLHQ9e30pPT4oe3RyOm4sc3RhdGU6cixkaXNwYXRjaDpvfSk9Pnt2YXIgaTtjb25zdHtleHRlbmRFbXB0eU1hcmtSYW5nZTpzPSExfT10LHtzZWxlY3Rpb246bH09bixhPWdldE1hcmtUeXBlKGUsci5zY2hlbWEpLHskZnJvbTpjLGVtcHR5OmQscmFuZ2VzOnB9PWw7aWYoIW8pcmV0dXJuITA7aWYoZCYmcyl7bGV0e2Zyb206ZSx0bzp0fT1sO2NvbnN0IHI9bnVsbD09KGk9Yy5tYXJrcygpLmZpbmQoZT0+ZS50eXBlPT09YSkpP3ZvaWQgMDppLmF0dHJzLG89Z2V0TWFya1JhbmdlKGMsYSxyKTtvJiYoZT1vLmZyb20sdD1vLnRvKSxuLnJlbW92ZU1hcmsoZSx0LGEpfWVsc2UgcC5mb3JFYWNoKGU9PntuLnJlbW92ZU1hcmsoZS4kZnJvbS5wb3MsZS4kdG8ucG9zLGEpfSk7cmV0dXJuIG4ucmVtb3ZlU3RvcmVkTWFyayhhKSwhMH0sdW5zZXRUZXh0RGlyZWN0aW9uPWU9Pih7dHI6dCxzdGF0ZTpuLGRpc3BhdGNoOnJ9KT0+e2NvbnN0e3NlbGVjdGlvbjpvfT1uO2xldCBpLHM7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlPyhpPWUscz1lKTplJiYiZnJvbSJpbiBlJiYidG8iaW4gZT8oaT1lLmZyb20scz1lLnRvKTooaT1vLmZyb20scz1vLnRvKSxyJiZ0LmRvYy5ub2Rlc0JldHdlZW4oaSxzLChlLG4pPT57aWYoZS5pc1RleHQpcmV0dXJuO2NvbnN0IHI9ey4uLmUuYXR0cnN9O2RlbGV0ZSByLmRpcix0LnNldE5vZGVNYXJrdXAobix2b2lkIDAscil9KSwhMH0sdXBkYXRlQXR0cmlidXRlcz0oZSx0PXt9KT0+KHt0cjpuLHN0YXRlOnIsZGlzcGF0Y2g6b30pPT57bGV0IGk9bnVsbCxzPW51bGw7Y29uc3QgbD1nZXRTY2hlbWFUeXBlTmFtZUJ5TmFtZSgic3RyaW5nIj09dHlwZW9mIGU/ZTplLm5hbWUsci5zY2hlbWEpO2lmKCFsKXJldHVybiExOyJub2RlIj09PWwmJihpPWdldE5vZGVUeXBlKGUsci5zY2hlbWEpKSwibWFyayI9PT1sJiYocz1nZXRNYXJrVHlwZShlLHIuc2NoZW1hKSk7bGV0IGE9ITE7cmV0dXJuIG4uc2VsZWN0aW9uLnJhbmdlcy5mb3JFYWNoKGU9Pntjb25zdCBsPWUuJGZyb20ucG9zLGM9ZS4kdG8ucG9zO2xldCBkLHAsZixtO24uc2VsZWN0aW9uLmVtcHR5P3IuZG9jLm5vZGVzQmV0d2VlbihsLGMsKGUsdCk9PntpJiZpPT09ZS50eXBlJiYoYT0hMCxmPU1hdGgubWF4KHQsbCksbT1NYXRoLm1pbih0K2Uubm9kZVNpemUsYyksZD10LHA9ZSl9KTpyLmRvYy5ub2Rlc0JldHdlZW4obCxjLChlLHIpPT57cjxsJiZpJiZpPT09ZS50eXBlJiYoYT0hMCxmPU1hdGgubWF4KHIsbCksbT1NYXRoLm1pbihyK2Uubm9kZVNpemUsYyksZD1yLHA9ZSkscj49bCYmcjw9YyYmKGkmJmk9PT1lLnR5cGUmJihhPSEwLG8mJm4uc2V0Tm9kZU1hcmt1cChyLHZvaWQgMCx7Li4uZS5hdHRycywuLi50fSkpLHMmJmUubWFya3MubGVuZ3RoJiZlLm1hcmtzLmZvckVhY2goaT0+e2lmKHM9PT1pLnR5cGUmJihhPSEwLG8pKXtjb25zdCBvPU1hdGgubWF4KHIsbCksYT1NYXRoLm1pbihyK2Uubm9kZVNpemUsYyk7bi5hZGRNYXJrKG8sYSxzLmNyZWF0ZSh7Li4uaS5hdHRycywuLi50fSkpfX0pKX0pLHAmJih2b2lkIDAhPT1kJiZvJiZuLnNldE5vZGVNYXJrdXAoZCx2b2lkIDAsey4uLnAuYXR0cnMsLi4udH0pLHMmJnAubWFya3MubGVuZ3RoJiZwLm1hcmtzLmZvckVhY2goZT0+e3M9PT1lLnR5cGUmJm8mJm4uYWRkTWFyayhmLG0scy5jcmVhdGUoey4uLmUuYXR0cnMsLi4udH0pKX0pKX0pLGF9LHdyYXBJbj0oZSx0PXt9KT0+KHtzdGF0ZTpuLGRpc3BhdGNoOnJ9KT0+ZnVuY3Rpb24oZSx0PW51bGwpe3JldHVybiBmdW5jdGlvbihuLHIpe2xldHskZnJvbTpvLCR0bzppfT1uLnNlbGVjdGlvbixzPW8uYmxvY2tSYW5nZShpKSxsPXMmJmZpbmRXcmFwcGluZyhzLGUsdCk7cmV0dXJuISFsJiYociYmcihuLnRyLndyYXAocyxsKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9fShnZXROb2RlVHlwZShlLG4uc2NoZW1hKSx0KShuLHIpLHdyYXBJbkxpc3Q9KGUsdD17fSk9Pih7c3RhdGU6bixkaXNwYXRjaDpyfSk9PndyYXBJbkxpc3QkMShnZXROb2RlVHlwZShlLG4uc2NoZW1hKSx0KShuLHIpLEx0PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jYWxsYmFja3M9e319b24oZSx0KXtyZXR1cm4gdGhpcy5jYWxsYmFja3NbZV18fCh0aGlzLmNhbGxiYWNrc1tlXT1bXSksdGhpcy5jYWxsYmFja3NbZV0ucHVzaCh0KSx0aGlzfWVtaXQoZSwuLi50KXtjb25zdCBuPXRoaXMuY2FsbGJhY2tzW2VdO3JldHVybiBuJiZuLmZvckVhY2goZT0+ZS5hcHBseSh0aGlzLHQpKSx0aGlzfW9mZihlLHQpe2NvbnN0IG49dGhpcy5jYWxsYmFja3NbZV07cmV0dXJuIG4mJih0P3RoaXMuY2FsbGJhY2tzW2VdPW4uZmlsdGVyKGU9PmUhPT10KTpkZWxldGUgdGhpcy5jYWxsYmFja3NbZV0pLHRoaXN9b25jZShlLHQpe2NvbnN0IG9uY2VGbj0oLi4ubik9Pnt0aGlzLm9mZihlLG9uY2VGbiksdC5hcHBseSh0aGlzLG4pfTtyZXR1cm4gdGhpcy5vbihlLG9uY2VGbil9cmVtb3ZlQWxsTGlzdGVuZXJzKCl7dGhpcy5jYWxsYmFja3M9e319fSx6dD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt2YXIgdDt0aGlzLmZpbmQ9ZS5maW5kLHRoaXMuaGFuZGxlcj1lLmhhbmRsZXIsdGhpcy51bmRvYWJsZT1udWxsPT0odD1lLnVuZG9hYmxlKXx8dH19O2Z1bmN0aW9uIHJ1biQyKGUpe3ZhciB0O2NvbnN0e2VkaXRvcjpuLGZyb206cix0bzpvLHRleHQ6aSxydWxlczpzLHBsdWdpbjpsfT1lLHt2aWV3OmF9PW47aWYoYS5jb21wb3NpbmcpcmV0dXJuITE7Y29uc3QgYz1hLnN0YXRlLmRvYy5yZXNvbHZlKHIpO2lmKGMucGFyZW50LnR5cGUuc3BlYy5jb2RlfHwobnVsbD09KHQ9Yy5ub2RlQmVmb3JlfHxjLm5vZGVBZnRlcik/dm9pZCAwOnQubWFya3MuZmluZChlPT5lLnR5cGUuc3BlYy5jb2RlKSkpcmV0dXJuITE7bGV0IGQ9ITE7Y29uc3QgcD0oKGUsdD01MDApPT57bGV0IG49IiI7Y29uc3Qgcj1lLnBhcmVudE9mZnNldDtyZXR1cm4gZS5wYXJlbnQubm9kZXNCZXR3ZWVuKE1hdGgubWF4KDAsci10KSxyLChlLHQsbyxpKT0+e3ZhciBzLGw7Y29uc3QgYT0obnVsbD09KGw9KHM9ZS50eXBlLnNwZWMpLnRvVGV4dCk/dm9pZCAwOmwuY2FsbChzLHtub2RlOmUscG9zOnQscGFyZW50Om8saW5kZXg6aX0pKXx8ZS50ZXh0Q29udGVudHx8IiVsZWFmJSI7bis9ZS5pc0F0b20mJiFlLmlzVGV4dD9hOmEuc2xpY2UoMCxNYXRoLm1heCgwLHItdCkpfSksbn0pKGMpK2k7cmV0dXJuIHMuZm9yRWFjaChlPT57aWYoZClyZXR1cm47Y29uc3QgdD0oKGUsdCk9PntpZihpc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKGUpO2NvbnN0IG49dChlKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCByPVtuLnRleHRdO3JldHVybiByLmluZGV4PW4uaW5kZXgsci5pbnB1dD1lLHIuZGF0YT1uLmRhdGEsbi5yZXBsYWNlV2l0aCYmKG4udGV4dC5pbmNsdWRlcyhuLnJlcGxhY2VXaXRoKXx8Y29uc29sZS53YXJuKCdbdGlwdGFwIHdhcm5dOiAiaW5wdXRSdWxlTWF0Y2gucmVwbGFjZVdpdGgiIG11c3QgYmUgcGFydCBvZiAiaW5wdXRSdWxlTWF0Y2gudGV4dCIuJyksci5wdXNoKG4ucmVwbGFjZVdpdGgpKSxyfSkocCxlLmZpbmQpO2lmKCF0KXJldHVybjtjb25zdCBzPWEuc3RhdGUudHIsYz1jcmVhdGVDaGFpbmFibGVTdGF0ZSh7c3RhdGU6YS5zdGF0ZSx0cmFuc2FjdGlvbjpzfSksZj17ZnJvbTpyLSh0WzBdLmxlbmd0aC1pLmxlbmd0aCksdG86b30se2NvbW1hbmRzOm0sY2hhaW46eSxjYW46d309bmV3IFB0KHtlZGl0b3I6bixzdGF0ZTpjfSk7bnVsbCE9PWUuaGFuZGxlcih7c3RhdGU6YyxyYW5nZTpmLG1hdGNoOnQsY29tbWFuZHM6bSxjaGFpbjp5LGNhbjp3fSkmJnMuc3RlcHMubGVuZ3RoJiYoZS51bmRvYWJsZSYmcy5zZXRNZXRhKGwse3RyYW5zZm9ybTpzLGZyb206cix0bzpvLHRleHQ6aX0pLGEuZGlzcGF0Y2gocyksZD0hMCl9KSxkfWZ1bmN0aW9uIGlzUGxhaW5PYmplY3QoZSl7cmV0dXJuIk9iamVjdCI9PT1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfShlKSYmKGUuY29uc3RydWN0b3I9PT1PYmplY3QmJk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGUpfWZ1bmN0aW9uIG1lcmdlRGVlcChlLHQpe2NvbnN0IG49ey4uLmV9O3JldHVybiBpc1BsYWluT2JqZWN0KGUpJiZpc1BsYWluT2JqZWN0KHQpJiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKHI9Pntpc1BsYWluT2JqZWN0KHRbcl0pJiZpc1BsYWluT2JqZWN0KGVbcl0pP25bcl09bWVyZ2VEZWVwKGVbcl0sdFtyXSk6bltyXT10W3JdfSksbn12YXIgQnQ9Y2xhc3N7Y29uc3RydWN0b3IoZT17fSl7dGhpcy50eXBlPSJleHRlbmRhYmxlIix0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGQ9bnVsbCx0aGlzLm5hbWU9IiIsdGhpcy5jb25maWc9e25hbWU6dGhpcy5uYW1lfSx0aGlzLmNvbmZpZz17Li4udGhpcy5jb25maWcsLi4uZX0sdGhpcy5uYW1lPXRoaXMuY29uZmlnLm5hbWV9Z2V0IG9wdGlvbnMoKXtyZXR1cm57Li4uY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKHRoaXMsImFkZE9wdGlvbnMiLHtuYW1lOnRoaXMubmFtZX0pKXx8e319fWdldCBzdG9yYWdlKCl7cmV0dXJuey4uLmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZCh0aGlzLCJhZGRTdG9yYWdlIix7bmFtZTp0aGlzLm5hbWUsb3B0aW9uczp0aGlzLm9wdGlvbnN9KSl8fHt9fX1jb25maWd1cmUoZT17fSl7Y29uc3QgdD10aGlzLmV4dGVuZCh7Li4udGhpcy5jb25maWcsYWRkT3B0aW9uczooKT0+bWVyZ2VEZWVwKHRoaXMub3B0aW9ucyxlKX0pO3JldHVybiB0Lm5hbWU9dGhpcy5uYW1lLHQucGFyZW50PXRoaXMucGFyZW50LHR9ZXh0ZW5kKGU9e30pe2NvbnN0IHQ9bmV3IHRoaXMuY29uc3RydWN0b3Ioey4uLnRoaXMuY29uZmlnLC4uLmV9KTtyZXR1cm4gdC5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkPXQsdC5uYW1lPSJuYW1lImluIGU/ZS5uYW1lOnQucGFyZW50Lm5hbWUsdH19LEZ0PWNsYXNzIF9NYXJrIGV4dGVuZHMgQnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0ibWFyayJ9c3RhdGljIGNyZWF0ZShlPXt9KXtjb25zdCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoKTplO3JldHVybiBuZXcgX01hcmsodCl9c3RhdGljIGhhbmRsZUV4aXQoe2VkaXRvcjplLG1hcms6dH0pe2NvbnN0e3RyOm59PWUuc3RhdGUscj1lLnN0YXRlLnNlbGVjdGlvbi4kZnJvbTtpZihyLnBvcz09PXIuZW5kKCkpe2NvbnN0IG89ci5tYXJrcygpLGk9ISFvLmZpbmQoZT0+KG51bGw9PWU/dm9pZCAwOmUudHlwZS5uYW1lKT09PXQubmFtZSk7aWYoIWkpcmV0dXJuITE7Y29uc3Qgcz1vLmZpbmQoZT0+KG51bGw9PWU/dm9pZCAwOmUudHlwZS5uYW1lKT09PXQubmFtZSk7cmV0dXJuIHMmJm4ucmVtb3ZlU3RvcmVkTWFyayhzKSxuLmluc2VydFRleHQoIiAiLHIucG9zKSxlLnZpZXcuZGlzcGF0Y2gobiksITB9cmV0dXJuITF9Y29uZmlndXJlKGUpe3JldHVybiBzdXBlci5jb25maWd1cmUoZSl9ZXh0ZW5kKGUpe2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmU7cmV0dXJuIHN1cGVyLmV4dGVuZCh0KX19O3ZhciBIdD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZpbmQ9ZS5maW5kLHRoaXMuaGFuZGxlcj1lLmhhbmRsZXJ9fTtmdW5jdGlvbiBydW4yKGUpe2NvbnN0e2VkaXRvcjp0LHN0YXRlOm4sZnJvbTpyLHRvOm8scnVsZTppLHBhc3RlRXZlbnQ6cyxkcm9wRXZlbnQ6bH09ZSx7Y29tbWFuZHM6YSxjaGFpbjpjLGNhbjpkfT1uZXcgUHQoe2VkaXRvcjp0LHN0YXRlOm59KSxwPVtdO24uZG9jLm5vZGVzQmV0d2VlbihyLG8sKGUsdCk9Pnt2YXIgZixtLHksdyxiO2lmKChudWxsPT0obT1udWxsPT0oZj1lLnR5cGUpP3ZvaWQgMDpmLnNwZWMpP3ZvaWQgMDptLmNvZGUpfHwhKGUuaXNUZXh0fHxlLmlzVGV4dGJsb2NrfHxlLmlzSW5saW5lKSlyZXR1cm47Y29uc3Qgdj1udWxsIT0oYj1udWxsIT0odz1udWxsPT0oeT1lLmNvbnRlbnQpP3ZvaWQgMDp5LnNpemUpP3c6ZS5ub2RlU2l6ZSk/YjowLHg9TWF0aC5tYXgocix0KSxTPU1hdGgubWluKG8sdCt2KTtpZih4Pj1TKXJldHVybjtjb25zdCBDPSgoZSx0LG4pPT57aWYoaXNSZWdFeHAodCkpcmV0dXJuWy4uLmUubWF0Y2hBbGwodCldO2NvbnN0IHI9dChlLG4pO3JldHVybiByP3IubWFwKHQ9Pntjb25zdCBuPVt0LnRleHRdO3JldHVybiBuLmluZGV4PXQuaW5kZXgsbi5pbnB1dD1lLG4uZGF0YT10LmRhdGEsdC5yZXBsYWNlV2l0aCYmKHQudGV4dC5pbmNsdWRlcyh0LnJlcGxhY2VXaXRoKXx8Y29uc29sZS53YXJuKCdbdGlwdGFwIHdhcm5dOiAicGFzdGVSdWxlTWF0Y2gucmVwbGFjZVdpdGgiIG11c3QgYmUgcGFydCBvZiAicGFzdGVSdWxlTWF0Y2gudGV4dCIuJyksbi5wdXNoKHQucmVwbGFjZVdpdGgpKSxufSk6W119KShlLmlzVGV4dD9lLnRleHR8fCIiOmUudGV4dEJldHdlZW4oeC10LFMtdCx2b2lkIDAsIu+/vCIpLGkuZmluZCxzKTtDLmZvckVhY2goZT0+e2lmKHZvaWQgMD09PWUuaW5kZXgpcmV0dXJuO2NvbnN0IHQ9eCtlLmluZGV4KzEscj10K2VbMF0ubGVuZ3RoLG89e2Zyb206bi50ci5tYXBwaW5nLm1hcCh0KSx0bzpuLnRyLm1hcHBpbmcubWFwKHIpfSxmPWkuaGFuZGxlcih7c3RhdGU6bixyYW5nZTpvLG1hdGNoOmUsY29tbWFuZHM6YSxjaGFpbjpjLGNhbjpkLHBhc3RlRXZlbnQ6cyxkcm9wRXZlbnQ6bH0pO3AucHVzaChmKX0pfSk7cmV0dXJuIHAuZXZlcnkoZT0+bnVsbCE9PWUpfXZhciBWdD1udWxsO2Z1bmN0aW9uIHBhc3RlUnVsZXNQbHVnaW4oZSl7Y29uc3R7ZWRpdG9yOnQscnVsZXM6bn09ZTtsZXQgcixvPW51bGwsaT0hMSxzPSExLGw9InVuZGVmaW5lZCIhPXR5cGVvZiBDbGlwYm9hcmRFdmVudD9uZXcgQ2xpcGJvYXJkRXZlbnQoInBhc3RlIik6bnVsbDt0cnl7cj0idW5kZWZpbmVkIiE9dHlwZW9mIERyYWdFdmVudD9uZXcgRHJhZ0V2ZW50KCJkcm9wIik6bnVsbH1jYXRjaHtyPW51bGx9Y29uc3QgcHJvY2Vzc0V2ZW50PSh7c3RhdGU6ZSxmcm9tOm4sdG86byxydWxlOmkscGFzdGVFdnQ6c30pPT57Y29uc3QgYT1lLnRyLGM9Y3JlYXRlQ2hhaW5hYmxlU3RhdGUoe3N0YXRlOmUsdHJhbnNhY3Rpb246YX0pO2lmKHJ1bjIoe2VkaXRvcjp0LHN0YXRlOmMsZnJvbTpNYXRoLm1heChuLTEsMCksdG86by5iLTEscnVsZTppLHBhc3RlRXZlbnQ6cyxkcm9wRXZlbnQ6cn0pJiZhLnN0ZXBzLmxlbmd0aCl7dHJ5e3I9InVuZGVmaW5lZCIhPXR5cGVvZiBEcmFnRXZlbnQ/bmV3IERyYWdFdmVudCgiZHJvcCIpOm51bGx9Y2F0Y2h7cj1udWxsfXJldHVybiBsPSJ1bmRlZmluZWQiIT10eXBlb2YgQ2xpcGJvYXJkRXZlbnQ/bmV3IENsaXBib2FyZEV2ZW50KCJwYXN0ZSIpOm51bGwsYX19O3JldHVybiBuLm1hcChlPT5uZXcgUGx1Z2luKHt2aWV3KGUpe2NvbnN0IGhhbmRsZURyYWdzdGFydD1uPT57dmFyIHI7bz0obnVsbD09KHI9ZS5kb20ucGFyZW50RWxlbWVudCk/dm9pZCAwOnIuY29udGFpbnMobi50YXJnZXQpKT9lLmRvbS5wYXJlbnRFbGVtZW50Om51bGwsbyYmKFZ0PXQpfSxoYW5kbGVEcmFnZW5kPSgpPT57VnQmJihWdD1udWxsKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLGhhbmRsZURyYWdzdGFydCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbmQiLGhhbmRsZURyYWdlbmQpLHtkZXN0cm95KCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsaGFuZGxlRHJhZ3N0YXJ0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsaGFuZGxlRHJhZ2VuZCl9fX0scHJvcHM6e2hhbmRsZURPTUV2ZW50czp7ZHJvcDooZSx0KT0+e2lmKHM9bz09PWUuZG9tLnBhcmVudEVsZW1lbnQscj10LCFzKXtjb25zdCBlPVZ0OyhudWxsPT1lP3ZvaWQgMDplLmlzRWRpdGFibGUpJiZzZXRUaW1lb3V0KCgpPT57Y29uc3QgdD1lLnN0YXRlLnNlbGVjdGlvbjt0JiZlLmNvbW1hbmRzLmRlbGV0ZVJhbmdlKHtmcm9tOnQuZnJvbSx0bzp0LnRvfSl9LDEwKX1yZXR1cm4hMX0scGFzdGU6KGUsdCk9Pnt2YXIgbjtjb25zdCByPW51bGw9PShuPXQuY2xpcGJvYXJkRGF0YSk/dm9pZCAwOm4uZ2V0RGF0YSgidGV4dC9odG1sIik7cmV0dXJuIGw9dCxpPSEhKG51bGw9PXI/dm9pZCAwOnIuaW5jbHVkZXMoImRhdGEtcG0tc2xpY2UiKSksITF9fX0sYXBwZW5kVHJhbnNhY3Rpb246KHQsbixyKT0+e2NvbnN0IG89dFswXSxhPSJwYXN0ZSI9PT1vLmdldE1ldGEoInVpRXZlbnQiKSYmIWksYz0iZHJvcCI9PT1vLmdldE1ldGEoInVpRXZlbnQiKSYmIXMsZD1vLmdldE1ldGEoImFwcGx5UGFzdGVSdWxlcyIpLHA9ISFkO2lmKCFhJiYhYyYmIXApcmV0dXJuO2lmKHApe2xldHt0ZXh0OnR9PWQ7InN0cmluZyI9PXR5cGVvZiB0fHwodD1nZXRIVE1MRnJvbUZyYWdtZW50KEZyYWdtZW50LmZyb20odCksci5zY2hlbWEpKTtjb25zdHtmcm9tOm59PWQsbz1uK3QubGVuZ3RoLGk9KGU9Pnt2YXIgdDtjb25zdCBuPW5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiLHtjbGlwYm9hcmREYXRhOm5ldyBEYXRhVHJhbnNmZXJ9KTtyZXR1cm4gbnVsbD09KHQ9bi5jbGlwYm9hcmREYXRhKXx8dC5zZXREYXRhKCJ0ZXh0L2h0bWwiLGUpLG59KSh0KTtyZXR1cm4gcHJvY2Vzc0V2ZW50KHtydWxlOmUsc3RhdGU6cixmcm9tOm4sdG86e2I6b30scGFzdGVFdnQ6aX0pfWNvbnN0IGY9bi5kb2MuY29udGVudC5maW5kRGlmZlN0YXJ0KHIuZG9jLmNvbnRlbnQpLG09bi5kb2MuY29udGVudC5maW5kRGlmZkVuZChyLmRvYy5jb250ZW50KTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGYmJm0mJmYhPT1tLmI/cHJvY2Vzc0V2ZW50KHtydWxlOmUsc3RhdGU6cixmcm9tOmYsdG86bSxwYXN0ZUV2dDpsfSk6dm9pZCAwfX0pKX12YXIgX3Q9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnNwbGl0dGFibGVNYXJrcz1bXSx0aGlzLmVkaXRvcj10LHRoaXMuYmFzZUV4dGVuc2lvbnM9ZSx0aGlzLmV4dGVuc2lvbnM9cmVzb2x2ZUV4dGVuc2lvbnMoZSksdGhpcy5zY2hlbWE9ZnVuY3Rpb24oZSx0KXt2YXIgbjtjb25zdCByPWdldEF0dHJpYnV0ZXNGcm9tRXh0ZW5zaW9ucyhlKSx7bm9kZUV4dGVuc2lvbnM6byxtYXJrRXh0ZW5zaW9uczppfT1zcGxpdEV4dGVuc2lvbnMoZSkscz1udWxsPT0obj1vLmZpbmQoZT0+Z2V0RXh0ZW5zaW9uRmllbGQoZSwidG9wTm9kZSIpKSk/dm9pZCAwOm4ubmFtZSxsPU9iamVjdC5mcm9tRW50cmllcyhvLm1hcChuPT57Y29uc3Qgbz1yLmZpbHRlcihlPT5lLnR5cGU9PT1uLm5hbWUpLGk9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6bi5zdG9yYWdlLGVkaXRvcjp0fSxzPWNsZWFuVXBTY2hlbWFJdGVtKHsuLi5lLnJlZHVjZSgoZSx0KT0+e2NvbnN0IHI9Z2V0RXh0ZW5zaW9uRmllbGQodCwiZXh0ZW5kTm9kZVNjaGVtYSIsaSk7cmV0dXJuey4uLmUsLi4ucj9yKG4pOnt9fX0se30pLGNvbnRlbnQ6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImNvbnRlbnQiLGkpKSxtYXJrczpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwibWFya3MiLGkpKSxncm91cDpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiZ3JvdXAiLGkpKSxpbmxpbmU6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImlubGluZSIsaSkpLGF0b206Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImF0b20iLGkpKSxzZWxlY3RhYmxlOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJzZWxlY3RhYmxlIixpKSksZHJhZ2dhYmxlOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJkcmFnZ2FibGUiLGkpKSxjb2RlOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJjb2RlIixpKSksd2hpdGVzcGFjZTpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwid2hpdGVzcGFjZSIsaSkpLGxpbmVicmVha1JlcGxhY2VtZW50OmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJsaW5lYnJlYWtSZXBsYWNlbWVudCIsaSkpLGRlZmluaW5nOmNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChuLCJkZWZpbmluZyIsaSkpLGlzb2xhdGluZzpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiaXNvbGF0aW5nIixpKSksYXR0cnM6T2JqZWN0LmZyb21FbnRyaWVzKG8ubWFwKGJ1aWxkQXR0cmlidXRlU3BlYykpfSksbD1jYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwicGFyc2VIVE1MIixpKSk7bCYmKHMucGFyc2VET009bC5tYXAoZT0+aW5qZWN0RXh0ZW5zaW9uQXR0cmlidXRlc1RvUGFyc2VSdWxlKGUsbykpKTtjb25zdCBhPWdldEV4dGVuc2lvbkZpZWxkKG4sInJlbmRlckhUTUwiLGkpO2EmJihzLnRvRE9NPWU9PmEoe25vZGU6ZSxIVE1MQXR0cmlidXRlczpnZXRSZW5kZXJlZEF0dHJpYnV0ZXMoZSxvKX0pKTtjb25zdCBjPWdldEV4dGVuc2lvbkZpZWxkKG4sInJlbmRlclRleHQiLGkpO3JldHVybiBjJiYocy50b1RleHQ9YyksW24ubmFtZSxzXX0pKSxhPU9iamVjdC5mcm9tRW50cmllcyhpLm1hcChuPT57Y29uc3Qgbz1yLmZpbHRlcihlPT5lLnR5cGU9PT1uLm5hbWUpLGk9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6bi5zdG9yYWdlLGVkaXRvcjp0fSxzPWNsZWFuVXBTY2hlbWFJdGVtKHsuLi5lLnJlZHVjZSgoZSx0KT0+e2NvbnN0IHI9Z2V0RXh0ZW5zaW9uRmllbGQodCwiZXh0ZW5kTWFya1NjaGVtYSIsaSk7cmV0dXJuey4uLmUsLi4ucj9yKG4pOnt9fX0se30pLGluY2x1c2l2ZTpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiaW5jbHVzaXZlIixpKSksZXhjbHVkZXM6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImV4Y2x1ZGVzIixpKSksZ3JvdXA6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sImdyb3VwIixpKSksc3Bhbm5pbmc6Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sInNwYW5uaW5nIixpKSksY29kZTpjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQobiwiY29kZSIsaSkpLGF0dHJzOk9iamVjdC5mcm9tRW50cmllcyhvLm1hcChidWlsZEF0dHJpYnV0ZVNwZWMpKX0pLGw9Y2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKG4sInBhcnNlSFRNTCIsaSkpO2wmJihzLnBhcnNlRE9NPWwubWFwKGU9PmluamVjdEV4dGVuc2lvbkF0dHJpYnV0ZXNUb1BhcnNlUnVsZShlLG8pKSk7Y29uc3QgYT1nZXRFeHRlbnNpb25GaWVsZChuLCJyZW5kZXJIVE1MIixpKTtyZXR1cm4gYSYmKHMudG9ET009ZT0+YSh7bWFyazplLEhUTUxBdHRyaWJ1dGVzOmdldFJlbmRlcmVkQXR0cmlidXRlcyhlLG8pfSkpLFtuLm5hbWUsc119KSk7cmV0dXJuIG5ldyBTY2hlbWEoe3RvcE5vZGU6cyxub2RlczpsLG1hcmtzOmF9KX0odGhpcy5leHRlbnNpb25zLHQpLHRoaXMuc2V0dXBFeHRlbnNpb25zKCl9Z2V0IGNvbW1hbmRzKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5yZWR1Y2UoKGUsdCk9Pntjb25zdCBuPWdldEV4dGVuc2lvbkZpZWxkKHQsImFkZENvbW1hbmRzIix7bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOnRoaXMuZWRpdG9yLHR5cGU6Z2V0U2NoZW1hVHlwZUJ5TmFtZSh0Lm5hbWUsdGhpcy5zY2hlbWEpfSk7cmV0dXJuIG4/ey4uLmUsLi4ubigpfTplfSx7fSl9Z2V0IHBsdWdpbnMoKXtjb25zdHtlZGl0b3I6ZX09dGhpcyx0PXNvcnRFeHRlbnNpb25zKFsuLi50aGlzLmV4dGVuc2lvbnNdLnJldmVyc2UoKSkuZmxhdE1hcCh0PT57Y29uc3Qgbj17bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOmUsdHlwZTpnZXRTY2hlbWFUeXBlQnlOYW1lKHQubmFtZSx0aGlzLnNjaGVtYSl9LHI9W10sbz1nZXRFeHRlbnNpb25GaWVsZCh0LCJhZGRLZXlib2FyZFNob3J0Y3V0cyIsbik7bGV0IGk9e307aWYoIm1hcmsiPT09dC50eXBlJiZnZXRFeHRlbnNpb25GaWVsZCh0LCJleGl0YWJsZSIsbikmJihpLkFycm93UmlnaHQ9KCk9PkZ0LmhhbmRsZUV4aXQoe2VkaXRvcjplLG1hcms6dH0pKSxvKXtjb25zdCB0PU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhvKCkpLm1hcCgoW3Qsbl0pPT5bdCwoKT0+bih7ZWRpdG9yOmV9KV0pKTtpPXsuLi5pLC4uLnR9fWNvbnN0IHM9bmV3IFBsdWdpbih7cHJvcHM6e2hhbmRsZUtleURvd246a2V5ZG93bkhhbmRsZXIoaSl9fSk7ci5wdXNoKHMpO2NvbnN0IGw9Z2V0RXh0ZW5zaW9uRmllbGQodCwiYWRkSW5wdXRSdWxlcyIsbik7aWYoaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQodCxlLm9wdGlvbnMuZW5hYmxlSW5wdXRSdWxlcykmJmwpe2NvbnN0IHQ9bCgpO2lmKHQmJnQubGVuZ3RoKXtjb25zdCBuPWZ1bmN0aW9uKGUpe2NvbnN0e2VkaXRvcjp0LHJ1bGVzOm59PWUscj1uZXcgUGx1Z2luKHtzdGF0ZTp7aW5pdDooKT0+bnVsbCxhcHBseShlLG8saSl7Y29uc3Qgcz1lLmdldE1ldGEocik7aWYocylyZXR1cm4gcztjb25zdCBsPWUuZ2V0TWV0YSgiYXBwbHlJbnB1dFJ1bGVzIik7cmV0dXJuISFsJiZzZXRUaW1lb3V0KCgpPT57bGV0e3RleHQ6ZX09bDsic3RyaW5nIj09dHlwZW9mIGV8fChlPWdldEhUTUxGcm9tRnJhZ21lbnQoRnJhZ21lbnQuZnJvbShlKSxpLnNjaGVtYSkpO2NvbnN0e2Zyb206b309bCxzPW8rZS5sZW5ndGg7cnVuJDIoe2VkaXRvcjp0LGZyb206byx0bzpzLHRleHQ6ZSxydWxlczpuLHBsdWdpbjpyfSl9KSxlLnNlbGVjdGlvblNldHx8ZS5kb2NDaGFuZ2VkP251bGw6b319LHByb3BzOntoYW5kbGVUZXh0SW5wdXQ6KGUsbyxpLHMpPT5ydW4kMih7ZWRpdG9yOnQsZnJvbTpvLHRvOmksdGV4dDpzLHJ1bGVzOm4scGx1Z2luOnJ9KSxoYW5kbGVET01FdmVudHM6e2NvbXBvc2l0aW9uZW5kOmU9PihzZXRUaW1lb3V0KCgpPT57Y29uc3R7JGN1cnNvcjpvfT1lLnN0YXRlLnNlbGVjdGlvbjtvJiZydW4kMih7ZWRpdG9yOnQsZnJvbTpvLnBvcyx0bzpvLnBvcyx0ZXh0OiIiLHJ1bGVzOm4scGx1Z2luOnJ9KX0pLCExKX0saGFuZGxlS2V5RG93bihlLG8pe2lmKCJFbnRlciIhPT1vLmtleSlyZXR1cm4hMTtjb25zdHskY3Vyc29yOml9PWUuc3RhdGUuc2VsZWN0aW9uO3JldHVybiEhaSYmcnVuJDIoe2VkaXRvcjp0LGZyb206aS5wb3MsdG86aS5wb3MsdGV4dDoiXG4iLHJ1bGVzOm4scGx1Z2luOnJ9KX19LGlzSW5wdXRSdWxlczohMH0pO3JldHVybiByfSh7ZWRpdG9yOmUscnVsZXM6dH0pLG89QXJyYXkuaXNBcnJheShuKT9uOltuXTtyLnB1c2goLi4ubyl9fWNvbnN0IGE9Z2V0RXh0ZW5zaW9uRmllbGQodCwiYWRkUGFzdGVSdWxlcyIsbik7aWYoaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQodCxlLm9wdGlvbnMuZW5hYmxlUGFzdGVSdWxlcykmJmEpe2NvbnN0IHQ9YSgpO2lmKHQmJnQubGVuZ3RoKXtjb25zdCBuPXBhc3RlUnVsZXNQbHVnaW4oe2VkaXRvcjplLHJ1bGVzOnR9KTtyLnB1c2goLi4ubil9fWNvbnN0IGM9Z2V0RXh0ZW5zaW9uRmllbGQodCwiYWRkUHJvc2VNaXJyb3JQbHVnaW5zIixuKTtpZihjKXtjb25zdCBlPWMoKTtyLnB1c2goLi4uZSl9cmV0dXJuIHJ9KTtyZXR1cm4gdH1nZXQgYXR0cmlidXRlcygpe3JldHVybiBnZXRBdHRyaWJ1dGVzRnJvbUV4dGVuc2lvbnModGhpcy5leHRlbnNpb25zKX1nZXQgbm9kZVZpZXdzKCl7Y29uc3R7ZWRpdG9yOmV9PXRoaXMse25vZGVFeHRlbnNpb25zOnR9PXNwbGl0RXh0ZW5zaW9ucyh0aGlzLmV4dGVuc2lvbnMpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXModC5maWx0ZXIoZT0+ISFnZXRFeHRlbnNpb25GaWVsZChlLCJhZGROb2RlVmlldyIpKS5tYXAodD0+e2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzLmZpbHRlcihlPT5lLnR5cGU9PT10Lm5hbWUpLHI9e25hbWU6dC5uYW1lLG9wdGlvbnM6dC5vcHRpb25zLHN0b3JhZ2U6dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVt0Lm5hbWVdLGVkaXRvcjplLHR5cGU6Z2V0Tm9kZVR5cGUodC5uYW1lLHRoaXMuc2NoZW1hKX0sbz1nZXRFeHRlbnNpb25GaWVsZCh0LCJhZGROb2RlVmlldyIscik7aWYoIW8pcmV0dXJuW107Y29uc3QgaT1vKCk7aWYoIWkpcmV0dXJuW107cmV0dXJuW3QubmFtZSwocixvLHMsbCxhKT0+e2NvbnN0IGM9Z2V0UmVuZGVyZWRBdHRyaWJ1dGVzKHIsbik7cmV0dXJuIGkoe25vZGU6cix2aWV3Om8sZ2V0UG9zOnMsZGVjb3JhdGlvbnM6bCxpbm5lckRlY29yYXRpb25zOmEsZWRpdG9yOmUsZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6Y30pfV19KSl9ZGlzcGF0Y2hUcmFuc2FjdGlvbihlKXtjb25zdHtlZGl0b3I6dH09dGhpcztyZXR1cm4gc29ydEV4dGVuc2lvbnMoWy4uLnRoaXMuZXh0ZW5zaW9uc10ucmV2ZXJzZSgpKS5yZWR1Y2VSaWdodCgoZSxuKT0+e2NvbnN0IHI9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVtuLm5hbWVdLGVkaXRvcjp0LHR5cGU6Z2V0U2NoZW1hVHlwZUJ5TmFtZShuLm5hbWUsdGhpcy5zY2hlbWEpfSxvPWdldEV4dGVuc2lvbkZpZWxkKG4sImRpc3BhdGNoVHJhbnNhY3Rpb24iLHIpO3JldHVybiBvP3Q9PntvLmNhbGwocix7dHJhbnNhY3Rpb246dCxuZXh0OmV9KX06ZX0sZSl9dHJhbnNmb3JtUGFzdGVkSFRNTChlKXtjb25zdHtlZGl0b3I6dH09dGhpcztyZXR1cm4gc29ydEV4dGVuc2lvbnMoWy4uLnRoaXMuZXh0ZW5zaW9uc10pLnJlZHVjZSgoZSxuKT0+e2NvbnN0IHI9e25hbWU6bi5uYW1lLG9wdGlvbnM6bi5vcHRpb25zLHN0b3JhZ2U6dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVtuLm5hbWVdLGVkaXRvcjp0LHR5cGU6Z2V0U2NoZW1hVHlwZUJ5TmFtZShuLm5hbWUsdGhpcy5zY2hlbWEpfSxvPWdldEV4dGVuc2lvbkZpZWxkKG4sInRyYW5zZm9ybVBhc3RlZEhUTUwiLHIpO3JldHVybiBvPyh0LG4pPT57Y29uc3QgaT1lKHQsbik7cmV0dXJuIG8uY2FsbChyLGkpfTplfSxlfHwoZT0+ZSkpfWdldCBtYXJrVmlld3MoKXtjb25zdHtlZGl0b3I6ZX09dGhpcyx7bWFya0V4dGVuc2lvbnM6dH09c3BsaXRFeHRlbnNpb25zKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh0LmZpbHRlcihlPT4hIWdldEV4dGVuc2lvbkZpZWxkKGUsImFkZE1hcmtWaWV3IikpLm1hcCh0PT57Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMuZmlsdGVyKGU9PmUudHlwZT09PXQubmFtZSkscj17bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOmUsdHlwZTpnZXRNYXJrVHlwZSh0Lm5hbWUsdGhpcy5zY2hlbWEpfSxvPWdldEV4dGVuc2lvbkZpZWxkKHQsImFkZE1hcmtWaWV3IixyKTtpZighbylyZXR1cm5bXTtyZXR1cm5bdC5uYW1lLChyLGkscyk9Pntjb25zdCBsPWdldFJlbmRlcmVkQXR0cmlidXRlcyhyLG4pO3JldHVybiBvKCkoe21hcms6cix2aWV3OmksaW5saW5lOnMsZWRpdG9yOmUsZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6bCx1cGRhdGVBdHRyaWJ1dGVzOnQ9PnshZnVuY3Rpb24oZSx0LG49e30pe2NvbnN0e3N0YXRlOnJ9PXQse2RvYzpvLHRyOml9PXIscz1lO28uZGVzY2VuZGFudHMoKHQscik9Pntjb25zdCBvPWkubWFwcGluZy5tYXAociksbD1pLm1hcHBpbmcubWFwKHIpK3Qubm9kZVNpemU7bGV0IGE9bnVsbDtpZih0Lm1hcmtzLmZvckVhY2goZT0+e2lmKGUhPT1zKXJldHVybiExO2E9ZX0pLCFhKXJldHVybjtsZXQgYz0hMTtpZihPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGU9PntuW2VdIT09YS5hdHRyc1tlXSYmKGM9ITApfSksYyl7Y29uc3QgdD1lLnR5cGUuY3JlYXRlKHsuLi5lLmF0dHJzLC4uLm59KTtpLnJlbW92ZU1hcmsobyxsLGUudHlwZSksaS5hZGRNYXJrKG8sbCx0KX19KSxpLmRvY0NoYW5nZWQmJnQudmlldy5kaXNwYXRjaChpKX0ocixlLHQpfX0pfV19KSl9c2V0dXBFeHRlbnNpb25zKCl7Y29uc3QgZT10aGlzLmV4dGVuc2lvbnM7dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZT1PYmplY3QuZnJvbUVudHJpZXMoZS5tYXAoZT0+W2UubmFtZSxlLnN0b3JhZ2VdKSksZS5mb3JFYWNoKGU9Pnt2YXIgdDtjb25zdCBuPXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbZS5uYW1lXSxlZGl0b3I6dGhpcy5lZGl0b3IsdHlwZTpnZXRTY2hlbWFUeXBlQnlOYW1lKGUubmFtZSx0aGlzLnNjaGVtYSl9O2lmKCJtYXJrIj09PWUudHlwZSl7KG51bGw9PSh0PWNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChlLCJrZWVwT25TcGxpdCIsbikpKXx8dCkmJnRoaXMuc3BsaXR0YWJsZU1hcmtzLnB1c2goZS5uYW1lKX1jb25zdCByPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uQmVmb3JlQ3JlYXRlIixuKSxvPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uQ3JlYXRlIixuKSxpPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uVXBkYXRlIixuKSxzPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uU2VsZWN0aW9uVXBkYXRlIixuKSxsPWdldEV4dGVuc2lvbkZpZWxkKGUsIm9uVHJhbnNhY3Rpb24iLG4pLGE9Z2V0RXh0ZW5zaW9uRmllbGQoZSwib25Gb2N1cyIsbiksYz1nZXRFeHRlbnNpb25GaWVsZChlLCJvbkJsdXIiLG4pLGQ9Z2V0RXh0ZW5zaW9uRmllbGQoZSwib25EZXN0cm95IixuKTtyJiZ0aGlzLmVkaXRvci5vbigiYmVmb3JlQ3JlYXRlIixyKSxvJiZ0aGlzLmVkaXRvci5vbigiY3JlYXRlIixvKSxpJiZ0aGlzLmVkaXRvci5vbigidXBkYXRlIixpKSxzJiZ0aGlzLmVkaXRvci5vbigic2VsZWN0aW9uVXBkYXRlIixzKSxsJiZ0aGlzLmVkaXRvci5vbigidHJhbnNhY3Rpb24iLGwpLGEmJnRoaXMuZWRpdG9yLm9uKCJmb2N1cyIsYSksYyYmdGhpcy5lZGl0b3Iub24oImJsdXIiLGMpLGQmJnRoaXMuZWRpdG9yLm9uKCJkZXN0cm95IixkKX0pfX07X3QucmVzb2x2ZT1yZXNvbHZlRXh0ZW5zaW9ucyxfdC5zb3J0PXNvcnRFeHRlbnNpb25zLF90LmZsYXR0ZW49ZmxhdHRlbkV4dGVuc2lvbnM7X19leHBvcnQkMSh7fSx7Q2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXI6KCk9PnF0LENvbW1hbmRzOigpPT5VdCxEZWxldGU6KCk9Pld0LERyb3A6KCk9Pkt0LEVkaXRhYmxlOigpPT5KdCxGb2N1c0V2ZW50czooKT0+WHQsS2V5bWFwOigpPT5RdCxQYXN0ZTooKT0+WnQsVGFiaW5kZXg6KCk9Pll0LFRleHREaXJlY3Rpb246KCk9PmVuLGZvY3VzRXZlbnRzUGx1Z2luS2V5OigpPT5HdH0pO3ZhciBqdD1jbGFzcyBfRXh0ZW5zaW9uIGV4dGVuZHMgQnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0iZXh0ZW5zaW9uIn1zdGF0aWMgY3JlYXRlKGU9e30pe2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmU7cmV0dXJuIG5ldyBfRXh0ZW5zaW9uKHQpfWNvbmZpZ3VyZShlKXtyZXR1cm4gc3VwZXIuY29uZmlndXJlKGUpfWV4dGVuZChlKXtjb25zdCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoKTplO3JldHVybiBzdXBlci5leHRlbmQodCl9fSxxdD1qdC5jcmVhdGUoe25hbWU6ImNsaXBib2FyZFRleHRTZXJpYWxpemVyIixhZGRPcHRpb25zOigpPT4oe2Jsb2NrU2VwYXJhdG9yOnZvaWQgMH0pLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgiY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXIiKSxwcm9wczp7Y2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXI6KCk9Pntjb25zdHtlZGl0b3I6ZX09dGhpcyx7c3RhdGU6dCxzY2hlbWE6bn09ZSx7ZG9jOnIsc2VsZWN0aW9uOm99PXQse3JhbmdlczppfT1vLHM9TWF0aC5taW4oLi4uaS5tYXAoZT0+ZS4kZnJvbS5wb3MpKSxsPU1hdGgubWF4KC4uLmkubWFwKGU9PmUuJHRvLnBvcykpLGE9Z2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYShuKTtyZXR1cm4gZ2V0VGV4dEJldHdlZW4ocix7ZnJvbTpzLHRvOmx9LHsuLi52b2lkIDAhPT10aGlzLm9wdGlvbnMuYmxvY2tTZXBhcmF0b3I/e2Jsb2NrU2VwYXJhdG9yOnRoaXMub3B0aW9ucy5ibG9ja1NlcGFyYXRvcn06e30sdGV4dFNlcmlhbGl6ZXJzOmF9KX19fSldfX0pLFV0PWp0LmNyZWF0ZSh7bmFtZToiY29tbWFuZHMiLGFkZENvbW1hbmRzOigpPT4oey4uLkl0fSl9KSxXdD1qdC5jcmVhdGUoe25hbWU6ImRlbGV0ZSIsb25VcGRhdGUoe3RyYW5zYWN0aW9uOmUsYXBwZW5kZWRUcmFuc2FjdGlvbnM6dH0pe3ZhciBuLHIsbztjb25zdCBjYWxsYmFjaz0oKT0+e3ZhciBuLHIsbyxpO2lmKG51bGwhPShpPW51bGw9PShvPW51bGw9PShyPW51bGw9PShuPXRoaXMuZWRpdG9yLm9wdGlvbnMuY29yZUV4dGVuc2lvbk9wdGlvbnMpP3ZvaWQgMDpuLmRlbGV0ZSk/dm9pZCAwOnIuZmlsdGVyVHJhbnNhY3Rpb24pP3ZvaWQgMDpvLmNhbGwocixlKSk/aTplLmdldE1ldGEoInktc3luYyQiKSlyZXR1cm47Y29uc3Qgcz1jb21iaW5lVHJhbnNhY3Rpb25TdGVwcyhlLmJlZm9yZSxbZSwuLi50XSk7Z2V0Q2hhbmdlZFJhbmdlcyhzKS5mb3JFYWNoKHQ9PntzLm1hcHBpbmcubWFwUmVzdWx0KHQub2xkUmFuZ2UuZnJvbSkuZGVsZXRlZEFmdGVyJiZzLm1hcHBpbmcubWFwUmVzdWx0KHQub2xkUmFuZ2UudG8pLmRlbGV0ZWRCZWZvcmUmJnMuYmVmb3JlLm5vZGVzQmV0d2Vlbih0Lm9sZFJhbmdlLmZyb20sdC5vbGRSYW5nZS50bywobixyKT0+e2NvbnN0IG89cituLm5vZGVTaXplLTIsaT10Lm9sZFJhbmdlLmZyb208PXImJm88PXQub2xkUmFuZ2UudG87dGhpcy5lZGl0b3IuZW1pdCgiZGVsZXRlIix7dHlwZToibm9kZSIsbm9kZTpuLGZyb206cix0bzpvLG5ld0Zyb206cy5tYXBwaW5nLm1hcChyKSxuZXdUbzpzLm1hcHBpbmcubWFwKG8pLGRlbGV0ZWRSYW5nZTp0Lm9sZFJhbmdlLG5ld1JhbmdlOnQubmV3UmFuZ2UscGFydGlhbDohaSxlZGl0b3I6dGhpcy5lZGl0b3IsdHJhbnNhY3Rpb246ZSxjb21iaW5lZFRyYW5zZm9ybTpzfSl9KX0pO2NvbnN0IGw9cy5tYXBwaW5nO3Muc3RlcHMuZm9yRWFjaCgodCxuKT0+e3ZhciByLG87aWYodCBpbnN0YW5jZW9mIFJlbW92ZU1hcmtTdGVwKXtjb25zdCBpPWwuc2xpY2UobikubWFwKHQuZnJvbSwtMSksYT1sLnNsaWNlKG4pLm1hcCh0LnRvKSxjPWwuaW52ZXJ0KCkubWFwKGksLTEpLGQ9bC5pbnZlcnQoKS5tYXAoYSkscD1pPjAmJihudWxsPT0ocj1zLmRvYy5ub2RlQXQoaS0xKSk/dm9pZCAwOnIubWFya3Muc29tZShlPT5lLmVxKHQubWFyaykpKSxmPW51bGw9PShvPXMuZG9jLm5vZGVBdChhKSk/dm9pZCAwOm8ubWFya3Muc29tZShlPT5lLmVxKHQubWFyaykpO3RoaXMuZWRpdG9yLmVtaXQoImRlbGV0ZSIse3R5cGU6Im1hcmsiLG1hcms6dC5tYXJrLGZyb206dC5mcm9tLHRvOnQudG8sZGVsZXRlZFJhbmdlOntmcm9tOmMsdG86ZH0sbmV3UmFuZ2U6e2Zyb206aSx0bzphfSxwYXJ0aWFsOkJvb2xlYW4oZnx8cCksZWRpdG9yOnRoaXMuZWRpdG9yLHRyYW5zYWN0aW9uOmUsY29tYmluZWRUcmFuc2Zvcm06c30pfX0pfTtudWxsPT0obz1udWxsPT0ocj1udWxsPT0obj10aGlzLmVkaXRvci5vcHRpb25zLmNvcmVFeHRlbnNpb25PcHRpb25zKT92b2lkIDA6bi5kZWxldGUpP3ZvaWQgMDpyLmFzeW5jKXx8bz9zZXRUaW1lb3V0KGNhbGxiYWNrLDApOmNhbGxiYWNrKCl9fSksS3Q9anQuY3JlYXRlKHtuYW1lOiJkcm9wIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoInRpcHRhcERyb3AiKSxwcm9wczp7aGFuZGxlRHJvcDooZSx0LG4scik9Pnt0aGlzLmVkaXRvci5lbWl0KCJkcm9wIix7ZWRpdG9yOnRoaXMuZWRpdG9yLGV2ZW50OnQsc2xpY2U6bixtb3ZlZDpyfSl9fX0pXX19KSxKdD1qdC5jcmVhdGUoe25hbWU6ImVkaXRhYmxlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImVkaXRhYmxlIikscHJvcHM6e2VkaXRhYmxlOigpPT50aGlzLmVkaXRvci5vcHRpb25zLmVkaXRhYmxlfX0pXX19KSxHdD1uZXcgUGx1Z2luS2V5KCJmb2N1c0V2ZW50cyIpLFh0PWp0LmNyZWF0ZSh7bmFtZToiZm9jdXNFdmVudHMiLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe2NvbnN0e2VkaXRvcjplfT10aGlzO3JldHVybltuZXcgUGx1Z2luKHtrZXk6R3QscHJvcHM6e2hhbmRsZURPTUV2ZW50czp7Zm9jdXM6KHQsbik9PntlLmlzRm9jdXNlZD0hMDtjb25zdCByPWUuc3RhdGUudHIuc2V0TWV0YSgiZm9jdXMiLHtldmVudDpufSkuc2V0TWV0YSgiYWRkVG9IaXN0b3J5IiwhMSk7cmV0dXJuIHQuZGlzcGF0Y2gociksITF9LGJsdXI6KHQsbik9PntlLmlzRm9jdXNlZD0hMTtjb25zdCByPWUuc3RhdGUudHIuc2V0TWV0YSgiYmx1ciIse2V2ZW50Om59KS5zZXRNZXRhKCJhZGRUb0hpc3RvcnkiLCExKTtyZXR1cm4gdC5kaXNwYXRjaChyKSwhMX19fX0pXX19KSxRdD1qdC5jcmVhdGUoe25hbWU6ImtleW1hcCIsYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtjb25zdCBoYW5kbGVCYWNrc3BhY2U9KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7Y29tbWFuZHM6ZX0pPT5bKCk9PmUudW5kb0lucHV0UnVsZSgpLCgpPT5lLmNvbW1hbmQoKHt0cjp0fSk9Pntjb25zdHtzZWxlY3Rpb246bixkb2M6cn09dCx7ZW1wdHk6bywkYW5jaG9yOml9PW4se3BvczpzLHBhcmVudDpsfT1pLGE9aS5wYXJlbnQuaXNUZXh0YmxvY2smJnM+MD90LmRvYy5yZXNvbHZlKHMtMSk6aSxjPWEucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcsZD1pLnBvcy1pLnBhcmVudE9mZnNldCxwPWMmJjE9PT1hLnBhcmVudC5jaGlsZENvdW50P2Q9PT1pLnBvczpTZWxlY3Rpb24uYXRTdGFydChyKS5mcm9tPT09cztyZXR1cm4hKCFvfHwhbC50eXBlLmlzVGV4dGJsb2NrfHxsLnRleHRDb250ZW50Lmxlbmd0aHx8IXB8fHAmJiJwYXJhZ3JhcGgiPT09aS5wYXJlbnQudHlwZS5uYW1lKSYmZS5jbGVhck5vZGVzKCl9KSwoKT0+ZS5kZWxldGVTZWxlY3Rpb24oKSwoKT0+ZS5qb2luQmFja3dhcmQoKSwoKT0+ZS5zZWxlY3ROb2RlQmFja3dhcmQoKV0pLGhhbmRsZURlbGV0ZT0oKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuZmlyc3QoKHtjb21tYW5kczplfSk9PlsoKT0+ZS5kZWxldGVTZWxlY3Rpb24oKSwoKT0+ZS5kZWxldGVDdXJyZW50Tm9kZSgpLCgpPT5lLmpvaW5Gb3J3YXJkKCksKCk9PmUuc2VsZWN0Tm9kZUZvcndhcmQoKV0pLGU9e0VudGVyOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5maXJzdCgoe2NvbW1hbmRzOmV9KT0+WygpPT5lLm5ld2xpbmVJbkNvZGUoKSwoKT0+ZS5jcmVhdGVQYXJhZ3JhcGhOZWFyKCksKCk9PmUubGlmdEVtcHR5QmxvY2soKSwoKT0+ZS5zcGxpdEJsb2NrKCldKSwiTW9kLUVudGVyIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuZXhpdENvZGUoKSxCYWNrc3BhY2U6aGFuZGxlQmFja3NwYWNlLCJNb2QtQmFja3NwYWNlIjpoYW5kbGVCYWNrc3BhY2UsIlNoaWZ0LUJhY2tzcGFjZSI6aGFuZGxlQmFja3NwYWNlLERlbGV0ZTpoYW5kbGVEZWxldGUsIk1vZC1EZWxldGUiOmhhbmRsZURlbGV0ZSwiTW9kLWEiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZWxlY3RBbGwoKX0sdD17Li4uZX0sbj17Li4uZSwiQ3RybC1oIjpoYW5kbGVCYWNrc3BhY2UsIkFsdC1CYWNrc3BhY2UiOmhhbmRsZUJhY2tzcGFjZSwiQ3RybC1kIjpoYW5kbGVEZWxldGUsIkN0cmwtQWx0LUJhY2tzcGFjZSI6aGFuZGxlRGVsZXRlLCJBbHQtRGVsZXRlIjpoYW5kbGVEZWxldGUsIkFsdC1kIjpoYW5kbGVEZWxldGUsIkN0cmwtYSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja1N0YXJ0KCksIkN0cmwtZSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja0VuZCgpfTtyZXR1cm4gaXNpT1MoKXx8aXNNYWNPUygpP246dH0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBQbHVnaW4oe2tleTpuZXcgUGx1Z2luS2V5KCJjbGVhckRvY3VtZW50IiksYXBwZW5kVHJhbnNhY3Rpb246KGUsdCxuKT0+e2lmKGUuc29tZShlPT5lLmdldE1ldGEoImNvbXBvc2l0aW9uIikpKXJldHVybjtjb25zdCByPWUuc29tZShlPT5lLmRvY0NoYW5nZWQpJiYhdC5kb2MuZXEobi5kb2MpLG89ZS5zb21lKGU9PmUuZ2V0TWV0YSgicHJldmVudENsZWFyRG9jdW1lbnQiKSk7aWYoIXJ8fG8pcmV0dXJuO2NvbnN0e2VtcHR5OmksZnJvbTpzLHRvOmx9PXQuc2VsZWN0aW9uLGE9U2VsZWN0aW9uLmF0U3RhcnQodC5kb2MpLmZyb20sYz1TZWxlY3Rpb24uYXRFbmQodC5kb2MpLnRvO2lmKGl8fCEocz09PWEmJmw9PT1jKSlyZXR1cm47aWYoIWlzTm9kZUVtcHR5KG4uZG9jKSlyZXR1cm47Y29uc3QgZD1uLnRyLHA9Y3JlYXRlQ2hhaW5hYmxlU3RhdGUoe3N0YXRlOm4sdHJhbnNhY3Rpb246ZH0pLHtjb21tYW5kczpmfT1uZXcgUHQoe2VkaXRvcjp0aGlzLmVkaXRvcixzdGF0ZTpwfSk7cmV0dXJuIGYuY2xlYXJOb2RlcygpLGQuc3RlcHMubGVuZ3RoP2Q6dm9pZCAwfX0pXX19KSxadD1qdC5jcmVhdGUoe25hbWU6InBhc3RlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoInRpcHRhcFBhc3RlIikscHJvcHM6e2hhbmRsZVBhc3RlOihlLHQsbik9Pnt0aGlzLmVkaXRvci5lbWl0KCJwYXN0ZSIse2VkaXRvcjp0aGlzLmVkaXRvcixldmVudDp0LHNsaWNlOm59KX19fSldfX0pLFl0PWp0LmNyZWF0ZSh7bmFtZToidGFiaW5kZXgiLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgidGFiaW5kZXgiKSxwcm9wczp7YXR0cmlidXRlczooKT0+dGhpcy5lZGl0b3IuaXNFZGl0YWJsZT97dGFiaW5kZXg6IjAifTp7fX19KV19fSksZW49anQuY3JlYXRlKHtuYW1lOiJ0ZXh0RGlyZWN0aW9uIixhZGRPcHRpb25zOigpPT4oe2RpcmVjdGlvbjp2b2lkIDB9KSxhZGRHbG9iYWxBdHRyaWJ1dGVzKCl7aWYoIXRoaXMub3B0aW9ucy5kaXJlY3Rpb24pcmV0dXJuW107Y29uc3R7bm9kZUV4dGVuc2lvbnM6ZX09c3BsaXRFeHRlbnNpb25zKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuW3t0eXBlczplLmZpbHRlcihlPT4idGV4dCIhPT1lLm5hbWUpLm1hcChlPT5lLm5hbWUpLGF0dHJpYnV0ZXM6e2Rpcjp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHBhcnNlSFRNTDplPT57Y29uc3QgdD1lLmdldEF0dHJpYnV0ZSgiZGlyIik7cmV0dXJuIXR8fCJsdHIiIT09dCYmInJ0bCIhPT10JiYiYXV0byIhPT10P3RoaXMub3B0aW9ucy5kaXJlY3Rpb246dH0scmVuZGVySFRNTDplPT5lLmRpcj97ZGlyOmUuZGlyfTp7fX19fV19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgidGV4dERpcmVjdGlvbiIpLHByb3BzOnthdHRyaWJ1dGVzOigpPT57Y29uc3QgZT10aGlzLm9wdGlvbnMuZGlyZWN0aW9uO3JldHVybiBlP3tkaXI6ZX06e319fX0pXX19KSx0bj1jbGFzcyBfTm9kZVBvc3tjb25zdHJ1Y3RvcihlLHQsbj0hMSxyPW51bGwpe3RoaXMuY3VycmVudE5vZGU9bnVsbCx0aGlzLmFjdHVhbERlcHRoPW51bGwsdGhpcy5pc0Jsb2NrPW4sdGhpcy5yZXNvbHZlZFBvcz1lLHRoaXMuZWRpdG9yPXQsdGhpcy5jdXJyZW50Tm9kZT1yfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMubm9kZS50eXBlLm5hbWV9Z2V0IG5vZGUoKXtyZXR1cm4gdGhpcy5jdXJyZW50Tm9kZXx8dGhpcy5yZXNvbHZlZFBvcy5ub2RlKCl9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5lZGl0b3Iudmlldy5kb21BdFBvcyh0aGlzLnBvcykubm9kZX1nZXQgZGVwdGgoKXt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dGhpcy5hY3R1YWxEZXB0aCk/ZTp0aGlzLnJlc29sdmVkUG9zLmRlcHRofWdldCBwb3MoKXtyZXR1cm4gdGhpcy5yZXNvbHZlZFBvcy5wb3N9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5ub2RlLmNvbnRlbnR9c2V0IGNvbnRlbnQoZSl7bGV0IHQ9dGhpcy5mcm9tLG49dGhpcy50bztpZih0aGlzLmlzQmxvY2spe2lmKDA9PT10aGlzLmNvbnRlbnQuc2l6ZSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKGBZb3UgY2Fu4oCZdCBzZXQgY29udGVudCBvbiBhIGJsb2NrIG5vZGUuIFRyaWVkIHRvIHNldCBjb250ZW50IG9uICR7dGhpcy5uYW1lfSBhdCAke3RoaXMucG9zfWApO3Q9dGhpcy5mcm9tKzEsbj10aGlzLnRvLTF9dGhpcy5lZGl0b3IuY29tbWFuZHMuaW5zZXJ0Q29udGVudEF0KHtmcm9tOnQsdG86bn0sZSl9Z2V0IGF0dHJpYnV0ZXMoKXtyZXR1cm4gdGhpcy5ub2RlLmF0dHJzfWdldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLm5vZGUudGV4dENvbnRlbnR9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVTaXplfWdldCBmcm9tKCl7cmV0dXJuIHRoaXMuaXNCbG9jaz90aGlzLnBvczp0aGlzLnJlc29sdmVkUG9zLnN0YXJ0KHRoaXMucmVzb2x2ZWRQb3MuZGVwdGgpfWdldCByYW5nZSgpe3JldHVybntmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvfX1nZXQgdG8oKXtyZXR1cm4gdGhpcy5pc0Jsb2NrP3RoaXMucG9zK3RoaXMuc2l6ZTp0aGlzLnJlc29sdmVkUG9zLmVuZCh0aGlzLnJlc29sdmVkUG9zLmRlcHRoKSsodGhpcy5ub2RlLmlzVGV4dD8wOjEpfWdldCBwYXJlbnQoKXtpZigwPT09dGhpcy5kZXB0aClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMucmVzb2x2ZWRQb3Muc3RhcnQodGhpcy5yZXNvbHZlZFBvcy5kZXB0aC0xKSx0PXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUoZSk7cmV0dXJuIG5ldyBfTm9kZVBvcyh0LHRoaXMuZWRpdG9yKX1nZXQgYmVmb3JlKCl7bGV0IGU9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLmZyb20tKHRoaXMuaXNCbG9jaz8xOjIpKTtyZXR1cm4gZS5kZXB0aCE9PXRoaXMuZGVwdGgmJihlPXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy5mcm9tLTMpKSxuZXcgX05vZGVQb3MoZSx0aGlzLmVkaXRvcil9Z2V0IGFmdGVyKCl7bGV0IGU9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLnRvKyh0aGlzLmlzQmxvY2s/MjoxKSk7cmV0dXJuIGUuZGVwdGghPT10aGlzLmRlcHRoJiYoZT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRoaXMudG8rMykpLG5ldyBfTm9kZVBvcyhlLHRoaXMuZWRpdG9yKX1nZXQgY2hpbGRyZW4oKXtjb25zdCBlPVtdO3JldHVybiB0aGlzLm5vZGUuY29udGVudC5mb3JFYWNoKCh0LG4pPT57Y29uc3Qgcj10LmlzQmxvY2smJiF0LmlzVGV4dGJsb2NrLG89dC5pc0F0b20mJiF0LmlzVGV4dCxpPXQuaXNJbmxpbmUscz10aGlzLnBvcytuKyhvPzA6MSk7aWYoczwwfHxzPnRoaXMucmVzb2x2ZWRQb3MuZG9jLm5vZGVTaXplLTIpcmV0dXJuO2NvbnN0IGw9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZShzKTtpZighciYmIWkmJmwuZGVwdGg8PXRoaXMuZGVwdGgpcmV0dXJuO2NvbnN0IGE9bmV3IF9Ob2RlUG9zKGwsdGhpcy5lZGl0b3IscixyfHxpP3Q6bnVsbCk7ciYmKGEuYWN0dWFsRGVwdGg9dGhpcy5kZXB0aCsxKSxlLnB1c2goYSl9KSxlfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW5bMF18fG51bGx9Z2V0IGxhc3RDaGlsZCgpe2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtyZXR1cm4gZVtlLmxlbmd0aC0xXXx8bnVsbH1jbG9zZXN0KGUsdD17fSl7bGV0IG49bnVsbCxyPXRoaXMucGFyZW50O2Zvcig7ciYmIW47KXtpZihyLm5vZGUudHlwZS5uYW1lPT09ZSlpZihPYmplY3Qua2V5cyh0KS5sZW5ndGg+MCl7Y29uc3QgZT1yLm5vZGUuYXR0cnMsbj1PYmplY3Qua2V5cyh0KTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrPTEpe2NvbnN0IG89bltyXTtpZihlW29dIT09dFtvXSlicmVha319ZWxzZSBuPXI7cj1yLnBhcmVudH1yZXR1cm4gbn1xdWVyeVNlbGVjdG9yKGUsdD17fSl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChlLHQsITApWzBdfHxudWxsfXF1ZXJ5U2VsZWN0b3JBbGwoZSx0PXt9LG49ITEpe2xldCByPVtdO2lmKCF0aGlzLmNoaWxkcmVufHwwPT09dGhpcy5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIHI7Y29uc3Qgbz1PYmplY3Qua2V5cyh0KTtyZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGk9PntpZighKG4mJnIubGVuZ3RoPjApKXtpZihpLm5vZGUudHlwZS5uYW1lPT09ZSl7by5ldmVyeShlPT50W2VdPT09aS5ub2RlLmF0dHJzW2VdKSYmci5wdXNoKGkpfW4mJnIubGVuZ3RoPjB8fChyPXIuY29uY2F0KGkucXVlcnlTZWxlY3RvckFsbChlLHQsbikpKX19KSxyfXNldEF0dHJpYnV0ZShlKXtjb25zdHt0cjp0fT10aGlzLmVkaXRvci5zdGF0ZTt0LnNldE5vZGVNYXJrdXAodGhpcy5mcm9tLHZvaWQgMCx7Li4udGhpcy5ub2RlLmF0dHJzLC4uLmV9KSx0aGlzLmVkaXRvci52aWV3LmRpc3BhdGNoKHQpfX07dmFyIG5uPWNsYXNzIGV4dGVuZHMgTHR7Y29uc3RydWN0b3IoZT17fSl7c3VwZXIoKSx0aGlzLmNzcz1udWxsLHRoaXMuY2xhc3NOYW1lPSJ0aXB0YXAiLHRoaXMuZWRpdG9yVmlldz1udWxsLHRoaXMuaXNGb2N1c2VkPSExLHRoaXMuaXNJbml0aWFsaXplZD0hMSx0aGlzLmV4dGVuc2lvblN0b3JhZ2U9e30sdGhpcy5pbnN0YW5jZUlkPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsOSksdGhpcy5vcHRpb25zPXtlbGVtZW50OiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCxjb250ZW50OiIiLGluamVjdENTUzohMCxpbmplY3ROb25jZTp2b2lkIDAsZXh0ZW5zaW9uczpbXSxhdXRvZm9jdXM6ITEsZWRpdGFibGU6ITAsdGV4dERpcmVjdGlvbjp2b2lkIDAsZWRpdG9yUHJvcHM6e30scGFyc2VPcHRpb25zOnt9LGNvcmVFeHRlbnNpb25PcHRpb25zOnt9LGVuYWJsZUlucHV0UnVsZXM6ITAsZW5hYmxlUGFzdGVSdWxlczohMCxlbmFibGVDb3JlRXh0ZW5zaW9uczohMCxlbmFibGVDb250ZW50Q2hlY2s6ITEsZW1pdENvbnRlbnRFcnJvcjohMSxvbkJlZm9yZUNyZWF0ZTooKT0+bnVsbCxvbkNyZWF0ZTooKT0+bnVsbCxvbk1vdW50OigpPT5udWxsLG9uVW5tb3VudDooKT0+bnVsbCxvblVwZGF0ZTooKT0+bnVsbCxvblNlbGVjdGlvblVwZGF0ZTooKT0+bnVsbCxvblRyYW5zYWN0aW9uOigpPT5udWxsLG9uRm9jdXM6KCk9Pm51bGwsb25CbHVyOigpPT5udWxsLG9uRGVzdHJveTooKT0+bnVsbCxvbkNvbnRlbnRFcnJvcjooe2Vycm9yOmV9KT0+e3Rocm93IGV9LG9uUGFzdGU6KCk9Pm51bGwsb25Ecm9wOigpPT5udWxsLG9uRGVsZXRlOigpPT5udWxsLGVuYWJsZUV4dGVuc2lvbkRpc3BhdGNoVHJhbnNhY3Rpb246ITB9LHRoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbj0hMSx0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb249bnVsbCx0aGlzLnV0aWxzPXtnZXRVcGRhdGVkUG9zaXRpb246Z2V0VXBkYXRlZFBvc2l0aW9uLGNyZWF0ZU1hcHBhYmxlUG9zaXRpb246Y3JlYXRlTWFwcGFibGVQb3NpdGlvbn0sdGhpcy5zZXRPcHRpb25zKGUpLHRoaXMuY3JlYXRlRXh0ZW5zaW9uTWFuYWdlcigpLHRoaXMuY3JlYXRlQ29tbWFuZE1hbmFnZXIoKSx0aGlzLmNyZWF0ZVNjaGVtYSgpLHRoaXMub24oImJlZm9yZUNyZWF0ZSIsdGhpcy5vcHRpb25zLm9uQmVmb3JlQ3JlYXRlKSx0aGlzLmVtaXQoImJlZm9yZUNyZWF0ZSIse2VkaXRvcjp0aGlzfSksdGhpcy5vbigibW91bnQiLHRoaXMub3B0aW9ucy5vbk1vdW50KSx0aGlzLm9uKCJ1bm1vdW50Iix0aGlzLm9wdGlvbnMub25Vbm1vdW50KSx0aGlzLm9uKCJjb250ZW50RXJyb3IiLHRoaXMub3B0aW9ucy5vbkNvbnRlbnRFcnJvciksdGhpcy5vbigiY3JlYXRlIix0aGlzLm9wdGlvbnMub25DcmVhdGUpLHRoaXMub24oInVwZGF0ZSIsdGhpcy5vcHRpb25zLm9uVXBkYXRlKSx0aGlzLm9uKCJzZWxlY3Rpb25VcGRhdGUiLHRoaXMub3B0aW9ucy5vblNlbGVjdGlvblVwZGF0ZSksdGhpcy5vbigidHJhbnNhY3Rpb24iLHRoaXMub3B0aW9ucy5vblRyYW5zYWN0aW9uKSx0aGlzLm9uKCJmb2N1cyIsdGhpcy5vcHRpb25zLm9uRm9jdXMpLHRoaXMub24oImJsdXIiLHRoaXMub3B0aW9ucy5vbkJsdXIpLHRoaXMub24oImRlc3Ryb3kiLHRoaXMub3B0aW9ucy5vbkRlc3Ryb3kpLHRoaXMub24oImRyb3AiLCh7ZXZlbnQ6ZSxzbGljZTp0LG1vdmVkOm59KT0+dGhpcy5vcHRpb25zLm9uRHJvcChlLHQsbikpLHRoaXMub24oInBhc3RlIiwoe2V2ZW50OmUsc2xpY2U6dH0pPT50aGlzLm9wdGlvbnMub25QYXN0ZShlLHQpKSx0aGlzLm9uKCJkZWxldGUiLHRoaXMub3B0aW9ucy5vbkRlbGV0ZSk7Y29uc3QgdD10aGlzLmNyZWF0ZURvYygpLG49cmVzb2x2ZUZvY3VzUG9zaXRpb24odCx0aGlzLm9wdGlvbnMuYXV0b2ZvY3VzKTt0aGlzLmVkaXRvclN0YXRlPUVkaXRvclN0YXRlLmNyZWF0ZSh7ZG9jOnQsc2NoZW1hOnRoaXMuc2NoZW1hLHNlbGVjdGlvbjpufHx2b2lkIDB9KSx0aGlzLm9wdGlvbnMuZWxlbWVudCYmdGhpcy5tb3VudCh0aGlzLm9wdGlvbnMuZWxlbWVudCl9bW91bnQoZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoIlt0aXB0YXAgZXJyb3JdOiBUaGUgZWRpdG9yIGNhbm5vdCBiZSBtb3VudGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gJ2RvY3VtZW50JyBkZWZpbmVkIGluIHRoaXMgZW52aXJvbm1lbnQuIik7dGhpcy5jcmVhdGVWaWV3KGUpLHRoaXMuZW1pdCgibW91bnQiLHtlZGl0b3I6dGhpc30pLHRoaXMuY3NzJiYhZG9jdW1lbnQuaGVhZC5jb250YWlucyh0aGlzLmNzcykmJmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5jc3MpLHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy5pc0Rlc3Ryb3llZHx8KCExIT09dGhpcy5vcHRpb25zLmF1dG9mb2N1cyYmbnVsbCE9PXRoaXMub3B0aW9ucy5hdXRvZm9jdXMmJnRoaXMuY29tbWFuZHMuZm9jdXModGhpcy5vcHRpb25zLmF1dG9mb2N1cyksdGhpcy5lbWl0KCJjcmVhdGUiLHtlZGl0b3I6dGhpc30pLHRoaXMuaXNJbml0aWFsaXplZD0hMCl9LDApfXVubW91bnQoKXtpZih0aGlzLmVkaXRvclZpZXcpe2NvbnN0IGU9dGhpcy5lZGl0b3JWaWV3LmRvbTsobnVsbD09ZT92b2lkIDA6ZS5lZGl0b3IpJiZkZWxldGUgZS5lZGl0b3IsdGhpcy5lZGl0b3JWaWV3LmRlc3Ryb3koKX1pZih0aGlzLmVkaXRvclZpZXc9bnVsbCx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5jc3MmJiFkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAuJHt0aGlzLmNsYXNzTmFtZX1gKS5sZW5ndGgpdHJ5eyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmNzcy5yZW1vdmU/dGhpcy5jc3MucmVtb3ZlKCk6dGhpcy5jc3MucGFyZW50Tm9kZSYmdGhpcy5jc3MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNzcyl9Y2F0Y2goZSl7Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gcmVtb3ZlIENTUyBlbGVtZW50OiIsZSl9dGhpcy5jc3M9bnVsbCx0aGlzLmVtaXQoInVubW91bnQiLHtlZGl0b3I6dGhpc30pfWdldCBzdG9yYWdlKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9uU3RvcmFnZX1nZXQgY29tbWFuZHMoKXtyZXR1cm4gdGhpcy5jb21tYW5kTWFuYWdlci5jb21tYW5kc31jaGFpbigpe3JldHVybiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNoYWluKCl9Y2FuKCl7cmV0dXJuIHRoaXMuY29tbWFuZE1hbmFnZXIuY2FuKCl9aW5qZWN0Q1NTKCl7dGhpcy5vcHRpb25zLmluamVjdENTUyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKHRoaXMuY3NzPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzdHlsZVtkYXRhLXRpcHRhcC1zdHlsZV0iKTtpZihudWxsIT09bilyZXR1cm4gbjtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQmJnIuc2V0QXR0cmlidXRlKCJub25jZSIsdCksci5zZXRBdHRyaWJ1dGUoImRhdGEtdGlwdGFwLXN0eWxlIiwiIiksci5pbm5lckhUTUw9ZSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHIpLHJ9KCcuUHJvc2VNaXJyb3Ige1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5Qcm9zZU1pcnJvciB7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xuICAtd2Via2l0LWZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7XG4gIGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogImxpZ2EiIDA7IC8qIHRoZSBhYm92ZSBkb2VzblwndCBzZWVtIHRvIHdvcmsgaW4gRWRnZSAqL1xufVxuXG4uUHJvc2VNaXJyb3IgW2NvbnRlbnRlZGl0YWJsZT0iZmFsc2UiXSB7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbi5Qcm9zZU1pcnJvciBbY29udGVudGVkaXRhYmxlPSJmYWxzZSJdIFtjb250ZW50ZWRpdGFibGU9InRydWUiXSB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuLlByb3NlTWlycm9yIHByZSB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuaW1nLlByb3NlTWlycm9yLXNlcGFyYXRvciB7XG4gIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAwICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMCAhaW1wb3J0YW50O1xufVxuXG4uUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uUHJvc2VNaXJyb3ItZ2FwY3Vyc29yOmFmdGVyIHtcbiAgY29udGVudDogIiI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTJweDtcbiAgd2lkdGg6IDIwcHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbiAgYW5pbWF0aW9uOiBQcm9zZU1pcnJvci1jdXJzb3ItYmxpbmsgMS4xcyBzdGVwcygyLCBzdGFydCkgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgUHJvc2VNaXJyb3ItY3Vyc29yLWJsaW5rIHtcbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxufVxuXG4uUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvbiAqOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24gKjo6LW1vei1zZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24gKiB7XG4gIGNhcmV0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLlByb3NlTWlycm9yLWZvY3VzZWQgLlByb3NlTWlycm9yLWdhcGN1cnNvciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufScsdGhpcy5vcHRpb25zLmluamVjdE5vbmNlKSl9c2V0T3B0aW9ucyhlPXt9KXt0aGlzLm9wdGlvbnM9ey4uLnRoaXMub3B0aW9ucywuLi5lfSx0aGlzLmVkaXRvclZpZXcmJnRoaXMuc3RhdGUmJiF0aGlzLmlzRGVzdHJveWVkJiYodGhpcy5vcHRpb25zLmVkaXRvclByb3BzJiZ0aGlzLnZpZXcuc2V0UHJvcHModGhpcy5vcHRpb25zLmVkaXRvclByb3BzKSx0aGlzLnZpZXcudXBkYXRlU3RhdGUodGhpcy5zdGF0ZSkpfXNldEVkaXRhYmxlKGUsdD0hMCl7dGhpcy5zZXRPcHRpb25zKHtlZGl0YWJsZTplfSksdCYmdGhpcy5lbWl0KCJ1cGRhdGUiLHtlZGl0b3I6dGhpcyx0cmFuc2FjdGlvbjp0aGlzLnN0YXRlLnRyLGFwcGVuZGVkVHJhbnNhY3Rpb25zOltdfSl9Z2V0IGlzRWRpdGFibGUoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmVkaXRhYmxlJiZ0aGlzLnZpZXcmJnRoaXMudmlldy5lZGl0YWJsZX1nZXQgdmlldygpe3JldHVybiB0aGlzLmVkaXRvclZpZXc/dGhpcy5lZGl0b3JWaWV3Om5ldyBQcm94eSh7c3RhdGU6dGhpcy5lZGl0b3JTdGF0ZSx1cGRhdGVTdGF0ZTplPT57dGhpcy5lZGl0b3JTdGF0ZT1lfSxkaXNwYXRjaDplPT57dGhpcy5kaXNwYXRjaFRyYW5zYWN0aW9uKGUpfSxjb21wb3Npbmc6ITEsZHJhZ2dpbmc6bnVsbCxlZGl0YWJsZTohMCxpc0Rlc3Ryb3llZDohMX0se2dldDooZSx0KT0+e2lmKHRoaXMuZWRpdG9yVmlldylyZXR1cm4gdGhpcy5lZGl0b3JWaWV3W3RdO2lmKCJzdGF0ZSI9PT10KXJldHVybiB0aGlzLmVkaXRvclN0YXRlO2lmKHQgaW4gZSlyZXR1cm4gUmVmbGVjdC5nZXQoZSx0KTt0aHJvdyBuZXcgRXJyb3IoYFt0aXB0YXAgZXJyb3JdOiBUaGUgZWRpdG9yIHZpZXcgaXMgbm90IGF2YWlsYWJsZS4gQ2Fubm90IGFjY2VzcyB2aWV3Wycke3R9J10uIFRoZSBlZGl0b3IgbWF5IG5vdCBiZSBtb3VudGVkIHlldC5gKX19KX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5lZGl0b3JWaWV3JiYodGhpcy5lZGl0b3JTdGF0ZT10aGlzLnZpZXcuc3RhdGUpLHRoaXMuZWRpdG9yU3RhdGV9cmVnaXN0ZXJQbHVnaW4oZSx0KXtjb25zdCBuPWlzRnVuY3Rpb24odCk/dChlLFsuLi50aGlzLnN0YXRlLnBsdWdpbnNdKTpbLi4udGhpcy5zdGF0ZS5wbHVnaW5zLGVdLHI9dGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7cGx1Z2luczpufSk7cmV0dXJuIHRoaXMudmlldy51cGRhdGVTdGF0ZShyKSxyfXVucmVnaXN0ZXJQbHVnaW4oZSl7aWYodGhpcy5pc0Rlc3Ryb3llZClyZXR1cm47Y29uc3QgdD10aGlzLnN0YXRlLnBsdWdpbnM7bGV0IG49dDtpZihbXS5jb25jYXQoZSkuZm9yRWFjaChlPT57Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/YCR7ZX0kYDplLmtleTtuPW4uZmlsdGVyKGU9PiFlLmtleS5zdGFydHNXaXRoKHQpKX0pLHQubGVuZ3RoPT09bi5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9dGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7cGx1Z2luczpufSk7cmV0dXJuIHRoaXMudmlldy51cGRhdGVTdGF0ZShyKSxyfWNyZWF0ZUV4dGVuc2lvbk1hbmFnZXIoKXt2YXIgZSx0O2NvbnN0IG49Wy4uLnRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9ucz9bSnQscXQuY29uZmlndXJlKHtibG9ja1NlcGFyYXRvcjpudWxsPT0odD1udWxsPT0oZT10aGlzLm9wdGlvbnMuY29yZUV4dGVuc2lvbk9wdGlvbnMpP3ZvaWQgMDplLmNsaXBib2FyZFRleHRTZXJpYWxpemVyKT92b2lkIDA6dC5ibG9ja1NlcGFyYXRvcn0pLFV0LFh0LFF0LFl0LEt0LFp0LFd0LGVuLmNvbmZpZ3VyZSh7ZGlyZWN0aW9uOnRoaXMub3B0aW9ucy50ZXh0RGlyZWN0aW9ufSldLmZpbHRlcihlPT4ib2JqZWN0IiE9dHlwZW9mIHRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9uc3x8ITEhPT10aGlzLm9wdGlvbnMuZW5hYmxlQ29yZUV4dGVuc2lvbnNbZS5uYW1lXSk6W10sLi4udGhpcy5vcHRpb25zLmV4dGVuc2lvbnNdLmZpbHRlcihlPT5bImV4dGVuc2lvbiIsIm5vZGUiLCJtYXJrIl0uaW5jbHVkZXMobnVsbD09ZT92b2lkIDA6ZS50eXBlKSk7dGhpcy5leHRlbnNpb25NYW5hZ2VyPW5ldyBfdChuLHRoaXMpfWNyZWF0ZUNvbW1hbmRNYW5hZ2VyKCl7dGhpcy5jb21tYW5kTWFuYWdlcj1uZXcgUHQoe2VkaXRvcjp0aGlzfSl9Y3JlYXRlU2NoZW1hKCl7dGhpcy5zY2hlbWE9dGhpcy5leHRlbnNpb25NYW5hZ2VyLnNjaGVtYX1jcmVhdGVEb2MoKXtsZXQgZTt0cnl7ZT1jcmVhdGVEb2N1bWVudCh0aGlzLm9wdGlvbnMuY29udGVudCx0aGlzLnNjaGVtYSx0aGlzLm9wdGlvbnMucGFyc2VPcHRpb25zLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6dGhpcy5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pfWNhdGNoKHQpe2lmKCEodCBpbnN0YW5jZW9mIEVycm9yJiZbIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudCIsIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudCJdLmluY2x1ZGVzKHQubWVzc2FnZSkpKXRocm93IHQ7dGhpcy5lbWl0KCJjb250ZW50RXJyb3IiLHtlZGl0b3I6dGhpcyxlcnJvcjp0LGRpc2FibGVDb2xsYWJvcmF0aW9uOigpPT57ImNvbGxhYm9yYXRpb24iaW4gdGhpcy5zdG9yYWdlJiYib2JqZWN0Ij09dHlwZW9mIHRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiZ0aGlzLnN0b3JhZ2UuY29sbGFib3JhdGlvbiYmKHRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uLmlzRGlzYWJsZWQ9ITApLHRoaXMub3B0aW9ucy5leHRlbnNpb25zPXRoaXMub3B0aW9ucy5leHRlbnNpb25zLmZpbHRlcihlPT4iY29sbGFib3JhdGlvbiIhPT1lLm5hbWUpLHRoaXMuY3JlYXRlRXh0ZW5zaW9uTWFuYWdlcigpfX0pLGU9Y3JlYXRlRG9jdW1lbnQodGhpcy5vcHRpb25zLmNvbnRlbnQsdGhpcy5zY2hlbWEsdGhpcy5vcHRpb25zLnBhcnNlT3B0aW9ucyx7ZXJyb3JPbkludmFsaWRDb250ZW50OiExfSl9cmV0dXJuIGV9Y3JlYXRlVmlldyhlKXtjb25zdHtlZGl0b3JQcm9wczp0LGVuYWJsZUV4dGVuc2lvbkRpc3BhdGNoVHJhbnNhY3Rpb246bn09dGhpcy5vcHRpb25zLHI9dC5kaXNwYXRjaFRyYW5zYWN0aW9ufHx0aGlzLmRpc3BhdGNoVHJhbnNhY3Rpb24uYmluZCh0aGlzKSxvPW4/dGhpcy5leHRlbnNpb25NYW5hZ2VyLmRpc3BhdGNoVHJhbnNhY3Rpb24ocik6cixpPXQudHJhbnNmb3JtUGFzdGVkSFRNTCxzPXRoaXMuZXh0ZW5zaW9uTWFuYWdlci50cmFuc2Zvcm1QYXN0ZWRIVE1MKGkpO3RoaXMuZWRpdG9yVmlldz1uZXcgRWRpdG9yVmlldyhlLHsuLi50LGF0dHJpYnV0ZXM6e3JvbGU6InRleHRib3giLC4uLm51bGw9PXQ/dm9pZCAwOnQuYXR0cmlidXRlc30sZGlzcGF0Y2hUcmFuc2FjdGlvbjpvLHRyYW5zZm9ybVBhc3RlZEhUTUw6cyxzdGF0ZTp0aGlzLmVkaXRvclN0YXRlLG1hcmtWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubWFya1ZpZXdzLG5vZGVWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubm9kZVZpZXdzfSk7Y29uc3QgbD10aGlzLnN0YXRlLnJlY29uZmlndXJlKHtwbHVnaW5zOnRoaXMuZXh0ZW5zaW9uTWFuYWdlci5wbHVnaW5zfSk7dGhpcy52aWV3LnVwZGF0ZVN0YXRlKGwpLHRoaXMucHJlcGVuZENsYXNzKCksdGhpcy5pbmplY3RDU1MoKTt0aGlzLnZpZXcuZG9tLmVkaXRvcj10aGlzfWNyZWF0ZU5vZGVWaWV3cygpe3RoaXMudmlldy5pc0Rlc3Ryb3llZHx8dGhpcy52aWV3LnNldFByb3BzKHttYXJrVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm1hcmtWaWV3cyxub2RlVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm5vZGVWaWV3c30pfXByZXBlbmRDbGFzcygpe3RoaXMudmlldy5kb20uY2xhc3NOYW1lPWAke3RoaXMuY2xhc3NOYW1lfSAke3RoaXMudmlldy5kb20uY2xhc3NOYW1lfWB9Y2FwdHVyZVRyYW5zYWN0aW9uKGUpe3RoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbj0hMCxlKCksdGhpcy5pc0NhcHR1cmluZ1RyYW5zYWN0aW9uPSExO2NvbnN0IHQ9dGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uO3JldHVybiB0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb249bnVsbCx0fWRpc3BhdGNoVHJhbnNhY3Rpb24oZSl7aWYodGhpcy52aWV3LmlzRGVzdHJveWVkKXJldHVybjtpZih0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb24pcmV0dXJuIHRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbj92b2lkIGUuc3RlcHMuZm9yRWFjaChlPT57dmFyIHQ7cmV0dXJuIG51bGw9PSh0PXRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbik/dm9pZCAwOnQuc3RlcChlKX0pOnZvaWQodGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uPWUpO2NvbnN0e3N0YXRlOnQsdHJhbnNhY3Rpb25zOm59PXRoaXMuc3RhdGUuYXBwbHlUcmFuc2FjdGlvbihlKSxyPSF0aGlzLnN0YXRlLnNlbGVjdGlvbi5lcSh0LnNlbGVjdGlvbiksbz1uLmluY2x1ZGVzKGUpLGk9dGhpcy5zdGF0ZTtpZih0aGlzLmVtaXQoImJlZm9yZVRyYW5zYWN0aW9uIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZSxuZXh0U3RhdGU6dH0pLCFvKXJldHVybjt0aGlzLnZpZXcudXBkYXRlU3RhdGUodCksdGhpcy5lbWl0KCJ0cmFuc2FjdGlvbiIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOmUsYXBwZW5kZWRUcmFuc2FjdGlvbnM6bi5zbGljZSgxKX0pLHImJnRoaXMuZW1pdCgic2VsZWN0aW9uVXBkYXRlIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZX0pO2NvbnN0IHM9bi5maW5kTGFzdChlPT5lLmdldE1ldGEoImZvY3VzIil8fGUuZ2V0TWV0YSgiYmx1ciIpKSxsPW51bGw9PXM/dm9pZCAwOnMuZ2V0TWV0YSgiZm9jdXMiKSxhPW51bGw9PXM/dm9pZCAwOnMuZ2V0TWV0YSgiYmx1ciIpO2wmJnRoaXMuZW1pdCgiZm9jdXMiLHtlZGl0b3I6dGhpcyxldmVudDpsLmV2ZW50LHRyYW5zYWN0aW9uOnN9KSxhJiZ0aGlzLmVtaXQoImJsdXIiLHtlZGl0b3I6dGhpcyxldmVudDphLmV2ZW50LHRyYW5zYWN0aW9uOnN9KSxlLmdldE1ldGEoInByZXZlbnRVcGRhdGUiKXx8IW4uc29tZShlPT5lLmRvY0NoYW5nZWQpfHxpLmRvYy5lcSh0LmRvYyl8fHRoaXMuZW1pdCgidXBkYXRlIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZSxhcHBlbmRlZFRyYW5zYWN0aW9uczpuLnNsaWNlKDEpfSl9Z2V0QXR0cmlidXRlcyhlKXtyZXR1cm4gZ2V0QXR0cmlidXRlcyh0aGlzLnN0YXRlLGUpfWlzQWN0aXZlKGUsdCl7Y29uc3Qgbj0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsLHI9InN0cmluZyI9PXR5cGVvZiBlP3Q6ZTtyZXR1cm4gZnVuY3Rpb24oZSx0LG49e30pe2lmKCF0KXJldHVybiBpc05vZGVBY3RpdmUoZSxudWxsLG4pfHxpc01hcmtBY3RpdmUoZSxudWxsLG4pO2NvbnN0IHI9Z2V0U2NoZW1hVHlwZU5hbWVCeU5hbWUodCxlLnNjaGVtYSk7cmV0dXJuIm5vZGUiPT09cj9pc05vZGVBY3RpdmUoZSx0LG4pOiJtYXJrIj09PXImJmlzTWFya0FjdGl2ZShlLHQsbil9KHRoaXMuc3RhdGUsbixyKX1nZXRKU09OKCl7cmV0dXJuIHRoaXMuc3RhdGUuZG9jLnRvSlNPTigpfWdldEhUTUwoKXtyZXR1cm4gZ2V0SFRNTEZyb21GcmFnbWVudCh0aGlzLnN0YXRlLmRvYy5jb250ZW50LHRoaXMuc2NoZW1hKX1nZXRUZXh0KGUpe2NvbnN0e2Jsb2NrU2VwYXJhdG9yOnQ9IlxuXG4iLHRleHRTZXJpYWxpemVyczpuPXt9fT1lfHx7fTtyZXR1cm4gZ2V0VGV4dCh0aGlzLnN0YXRlLmRvYyx7YmxvY2tTZXBhcmF0b3I6dCx0ZXh0U2VyaWFsaXplcnM6ey4uLmdldFRleHRTZXJpYWxpemVyc0Zyb21TY2hlbWEodGhpcy5zY2hlbWEpLC4uLm59fSl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gaXNOb2RlRW1wdHkodGhpcy5zdGF0ZS5kb2MpfWRlc3Ryb3koKXt0aGlzLmVtaXQoImRlc3Ryb3kiKSx0aGlzLnVubW91bnQoKSx0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpfWdldCBpc0Rlc3Ryb3llZCgpe3ZhciBlLHQ7cmV0dXJuIG51bGw9PSh0PW51bGw9PShlPXRoaXMuZWRpdG9yVmlldyk/dm9pZCAwOmUuaXNEZXN0cm95ZWQpfHx0fSRub2RlKGUsdCl7dmFyIG47cmV0dXJuKG51bGw9PShuPXRoaXMuJGRvYyk/dm9pZCAwOm4ucXVlcnlTZWxlY3RvcihlLHQpKXx8bnVsbH0kbm9kZXMoZSx0KXt2YXIgbjtyZXR1cm4obnVsbD09KG49dGhpcy4kZG9jKT92b2lkIDA6bi5xdWVyeVNlbGVjdG9yQWxsKGUsdCkpfHxudWxsfSRwb3MoZSl7Y29uc3QgdD10aGlzLnN0YXRlLmRvYy5yZXNvbHZlKGUpO3JldHVybiBuZXcgdG4odCx0aGlzKX1nZXQgJGRvYygpe3JldHVybiB0aGlzLiRwb3MoMCl9fTtmdW5jdGlvbiBtYXJrSW5wdXRSdWxlKGUpe3JldHVybiBuZXcgenQoe2ZpbmQ6ZS5maW5kLGhhbmRsZXI6KHtzdGF0ZTp0LHJhbmdlOm4sbWF0Y2g6cn0pPT57Y29uc3Qgbz1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKTtpZighMT09PW98fG51bGw9PT1vKXJldHVybiBudWxsO2NvbnN0e3RyOml9PXQscz1yW3IubGVuZ3RoLTFdLGw9clswXTtpZihzKXtjb25zdCByPWwuc2VhcmNoKC9cUy8pLGE9bi5mcm9tK2wuaW5kZXhPZihzKSxjPWErcy5sZW5ndGg7aWYoZ2V0TWFya3NCZXR3ZWVuKG4uZnJvbSxuLnRvLHQuZG9jKS5maWx0ZXIodD0+dC5tYXJrLnR5cGUuZXhjbHVkZWQuZmluZChuPT5uPT09ZS50eXBlJiZuIT09dC5tYXJrLnR5cGUpKS5maWx0ZXIoZT0+ZS50bz5hKS5sZW5ndGgpcmV0dXJuIG51bGw7YzxuLnRvJiZpLmRlbGV0ZShjLG4udG8pLGE+bi5mcm9tJiZpLmRlbGV0ZShuLmZyb20rcixhKTtjb25zdCBkPW4uZnJvbStyK3MubGVuZ3RoO2kuYWRkTWFyayhuLmZyb20rcixkLGUudHlwZS5jcmVhdGUob3x8e30pKSxpLnJlbW92ZVN0b3JlZE1hcmsoZS50eXBlKX19LHVuZG9hYmxlOmUudW5kb2FibGV9KX1mdW5jdGlvbiBub2RlSW5wdXRSdWxlKGUpe3JldHVybiBuZXcgenQoe2ZpbmQ6ZS5maW5kLGhhbmRsZXI6KHtzdGF0ZTp0LHJhbmdlOm4sbWF0Y2g6cn0pPT57Y29uc3Qgbz1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKXx8e30se3RyOml9PXQscz1uLmZyb207bGV0IGw9bi50bztjb25zdCBhPWUudHlwZS5jcmVhdGUobyk7aWYoclsxXSl7bGV0IGU9cytyWzBdLmxhc3RJbmRleE9mKHJbMV0pO2U+bD9lPWw6bD1lK3JbMV0ubGVuZ3RoO2NvbnN0IHQ9clswXVtyWzBdLmxlbmd0aC0xXTtpLmluc2VydFRleHQodCxzK3JbMF0ubGVuZ3RoLTEpLGkucmVwbGFjZVdpdGgoZSxsLGEpfWVsc2UgaWYoclswXSl7Y29uc3QgdD1lLnR5cGUuaXNJbmxpbmU/czpzLTE7aS5pbnNlcnQodCxlLnR5cGUuY3JlYXRlKG8pKS5kZWxldGUoaS5tYXBwaW5nLm1hcChzKSxpLm1hcHBpbmcubWFwKGwpKX1pLnNjcm9sbEludG9WaWV3KCl9LHVuZG9hYmxlOmUudW5kb2FibGV9KX1mdW5jdGlvbiB0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKGUpe3JldHVybiBuZXcgenQoe2ZpbmQ6ZS5maW5kLGhhbmRsZXI6KHtzdGF0ZTp0LHJhbmdlOm4sbWF0Y2g6cn0pPT57Y29uc3Qgbz10LmRvYy5yZXNvbHZlKG4uZnJvbSksaT1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKXx8e307aWYoIW8ubm9kZSgtMSkuY2FuUmVwbGFjZVdpdGgoby5pbmRleCgtMSksby5pbmRleEFmdGVyKC0xKSxlLnR5cGUpKXJldHVybiBudWxsO3QudHIuZGVsZXRlKG4uZnJvbSxuLnRvKS5zZXRCbG9ja1R5cGUobi5mcm9tLG4uZnJvbSxlLnR5cGUsaSl9LHVuZG9hYmxlOmUudW5kb2FibGV9KX1mdW5jdGlvbiB3cmFwcGluZ0lucHV0UnVsZShlKXtyZXR1cm4gbmV3IHp0KHtmaW5kOmUuZmluZCxoYW5kbGVyOih7c3RhdGU6dCxyYW5nZTpuLG1hdGNoOnIsY2hhaW46b30pPT57Y29uc3QgaT1jYWxsT3JSZXR1cm4oZS5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKXx8e30scz10LnRyLmRlbGV0ZShuLmZyb20sbi50byksbD1zLmRvYy5yZXNvbHZlKG4uZnJvbSkuYmxvY2tSYW5nZSgpLGE9bCYmZmluZFdyYXBwaW5nKGwsZS50eXBlLGkpO2lmKCFhKXJldHVybiBudWxsO2lmKHMud3JhcChsLGEpLGUua2VlcE1hcmtzJiZlLmVkaXRvcil7Y29uc3R7c2VsZWN0aW9uOm4sc3RvcmVkTWFya3M6cn09dCx7c3BsaXR0YWJsZU1hcmtzOm99PWUuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIsaT1yfHxuLiR0by5wYXJlbnRPZmZzZXQmJm4uJGZyb20ubWFya3MoKTtpZihpKXtjb25zdCBlPWkuZmlsdGVyKGU9Pm8uaW5jbHVkZXMoZS50eXBlLm5hbWUpKTtzLmVuc3VyZU1hcmtzKGUpfX1pZihlLmtlZXBBdHRyaWJ1dGVzKXtjb25zdCB0PSJidWxsZXRMaXN0Ij09PWUudHlwZS5uYW1lfHwib3JkZXJlZExpc3QiPT09ZS50eXBlLm5hbWU/Imxpc3RJdGVtIjoidGFza0xpc3QiO28oKS51cGRhdGVBdHRyaWJ1dGVzKHQsaSkucnVuKCl9Y29uc3QgYz1zLmRvYy5yZXNvbHZlKG4uZnJvbS0xKS5ub2RlQmVmb3JlO2MmJmMudHlwZT09PWUudHlwZSYmY2FuSm9pbihzLmRvYyxuLmZyb20tMSkmJighZS5qb2luUHJlZGljYXRlfHxlLmpvaW5QcmVkaWNhdGUocixjKSkmJnMuam9pbihuLmZyb20tMSl9LHVuZG9hYmxlOmUudW5kb2FibGV9KX12YXIgcm49Y2xhc3N7Y29uc3RydWN0b3IoZSl7dmFyIHQsbixyLG8saSxzO3RoaXMuZGlyZWN0aW9ucz1bImJvdHRvbS1sZWZ0IiwiYm90dG9tLXJpZ2h0IiwidG9wLWxlZnQiLCJ0b3AtcmlnaHQiXSx0aGlzLm1pblNpemU9e2hlaWdodDo4LHdpZHRoOjh9LHRoaXMucHJlc2VydmVBc3BlY3RSYXRpbz0hMSx0aGlzLmNsYXNzTmFtZXM9e2NvbnRhaW5lcjoiIix3cmFwcGVyOiIiLGhhbmRsZToiIixyZXNpemluZzoiIn0sdGhpcy5pbml0aWFsV2lkdGg9MCx0aGlzLmluaXRpYWxIZWlnaHQ9MCx0aGlzLmFzcGVjdFJhdGlvPTEsdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5zdGFydFg9MCx0aGlzLnN0YXJ0WT0wLHRoaXMuc3RhcnRXaWR0aD0wLHRoaXMuc3RhcnRIZWlnaHQ9MCx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkPSExLHRoaXMubGFzdEVkaXRhYmxlU3RhdGU9dm9pZCAwLHRoaXMuaGFuZGxlTWFwPW5ldyBNYXAsdGhpcy5oYW5kbGVNb3VzZU1vdmU9ZT0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgdD1lLmNsaWVudFgtdGhpcy5zdGFydFgsbj1lLmNsaWVudFktdGhpcy5zdGFydFk7dGhpcy5oYW5kbGVSZXNpemUodCxuKX0sdGhpcy5oYW5kbGVUb3VjaE1vdmU9ZT0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgdD1lLnRvdWNoZXNbMF07aWYoIXQpcmV0dXJuO2NvbnN0IG49dC5jbGllbnRYLXRoaXMuc3RhcnRYLHI9dC5jbGllbnRZLXRoaXMuc3RhcnRZO3RoaXMuaGFuZGxlUmVzaXplKG4scil9LHRoaXMuaGFuZGxlTW91c2VVcD0oKT0+e2lmKCF0aGlzLmlzUmVzaXppbmcpcmV0dXJuO2NvbnN0IGU9dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoLHQ9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDt0aGlzLm9uQ29tbWl0KGUsdCksdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5jb250YWluZXIuZGF0YXNldC5yZXNpemVTdGF0ZT0iZmFsc2UiLHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyYmdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlTW91c2VVcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlEb3duKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsdGhpcy5oYW5kbGVLZXlVcCl9LHRoaXMuaGFuZGxlS2V5RG93bj1lPT57IlNoaWZ0Ij09PWUua2V5JiYodGhpcy5pc1NoaWZ0S2V5UHJlc3NlZD0hMCl9LHRoaXMuaGFuZGxlS2V5VXA9ZT0+eyJTaGlmdCI9PT1lLmtleSYmKHRoaXMuaXNTaGlmdEtleVByZXNzZWQ9ITEpfSx0aGlzLm5vZGU9ZS5ub2RlLHRoaXMuZWRpdG9yPWUuZWRpdG9yLHRoaXMuZWxlbWVudD1lLmVsZW1lbnQsdGhpcy5jb250ZW50RWxlbWVudD1lLmNvbnRlbnRFbGVtZW50LHRoaXMuZ2V0UG9zPWUuZ2V0UG9zLHRoaXMub25SZXNpemU9ZS5vblJlc2l6ZSx0aGlzLm9uQ29tbWl0PWUub25Db21taXQsdGhpcy5vblVwZGF0ZT1lLm9uVXBkYXRlLChudWxsPT0odD1lLm9wdGlvbnMpP3ZvaWQgMDp0Lm1pbikmJih0aGlzLm1pblNpemU9ey4uLnRoaXMubWluU2l6ZSwuLi5lLm9wdGlvbnMubWlufSksKG51bGw9PShuPWUub3B0aW9ucyk/dm9pZCAwOm4ubWF4KSYmKHRoaXMubWF4U2l6ZT1lLm9wdGlvbnMubWF4KSwobnVsbD09KHI9bnVsbD09ZT92b2lkIDA6ZS5vcHRpb25zKT92b2lkIDA6ci5kaXJlY3Rpb25zKSYmKHRoaXMuZGlyZWN0aW9ucz1lLm9wdGlvbnMuZGlyZWN0aW9ucyksKG51bGw9PShvPWUub3B0aW9ucyk/dm9pZCAwOm8ucHJlc2VydmVBc3BlY3RSYXRpbykmJih0aGlzLnByZXNlcnZlQXNwZWN0UmF0aW89ZS5vcHRpb25zLnByZXNlcnZlQXNwZWN0UmF0aW8pLChudWxsPT0oaT1lLm9wdGlvbnMpP3ZvaWQgMDppLmNsYXNzTmFtZSkmJih0aGlzLmNsYXNzTmFtZXM9e2NvbnRhaW5lcjplLm9wdGlvbnMuY2xhc3NOYW1lLmNvbnRhaW5lcnx8IiIsd3JhcHBlcjplLm9wdGlvbnMuY2xhc3NOYW1lLndyYXBwZXJ8fCIiLGhhbmRsZTplLm9wdGlvbnMuY2xhc3NOYW1lLmhhbmRsZXx8IiIscmVzaXppbmc6ZS5vcHRpb25zLmNsYXNzTmFtZS5yZXNpemluZ3x8IiJ9KSwobnVsbD09KHM9ZS5vcHRpb25zKT92b2lkIDA6cy5jcmVhdGVDdXN0b21IYW5kbGUpJiYodGhpcy5jcmVhdGVDdXN0b21IYW5kbGU9ZS5vcHRpb25zLmNyZWF0ZUN1c3RvbUhhbmRsZSksdGhpcy53cmFwcGVyPXRoaXMuY3JlYXRlV3JhcHBlcigpLHRoaXMuY29udGFpbmVyPXRoaXMuY3JlYXRlQ29udGFpbmVyKCksdGhpcy5hcHBseUluaXRpYWxTaXplKCksdGhpcy5hdHRhY2hIYW5kbGVzKCksdGhpcy5lZGl0b3Iub24oInVwZGF0ZSIsdGhpcy5oYW5kbGVFZGl0b3JVcGRhdGUuYmluZCh0aGlzKSl9Z2V0IGRvbSgpe3JldHVybiB0aGlzLmNvbnRhaW5lcn1nZXQgY29udGVudERPTSgpe3ZhciBlO3JldHVybiBudWxsIT0oZT10aGlzLmNvbnRlbnRFbGVtZW50KT9lOm51bGx9aGFuZGxlRWRpdG9yVXBkYXRlKCl7Y29uc3QgZT10aGlzLmVkaXRvci5pc0VkaXRhYmxlO2UhPT10aGlzLmxhc3RFZGl0YWJsZVN0YXRlJiYodGhpcy5sYXN0RWRpdGFibGVTdGF0ZT1lLGU/ZSYmMD09PXRoaXMuaGFuZGxlTWFwLnNpemUmJnRoaXMuYXR0YWNoSGFuZGxlcygpOnRoaXMucmVtb3ZlSGFuZGxlcygpKX11cGRhdGUoZSx0LG4pe3JldHVybiBlLnR5cGU9PT10aGlzLm5vZGUudHlwZSYmKHRoaXMubm9kZT1lLCF0aGlzLm9uVXBkYXRlfHx0aGlzLm9uVXBkYXRlKGUsdCxuKSl9ZGVzdHJveSgpe3RoaXMuaXNSZXNpemluZyYmKHRoaXMuY29udGFpbmVyLmRhdGFzZXQucmVzaXplU3RhdGU9ImZhbHNlIix0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcmJnRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuaGFuZGxlS2V5RG93biksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuaGFuZGxlS2V5VXApLHRoaXMuaXNSZXNpemluZz0hMSx0aGlzLmFjdGl2ZUhhbmRsZT1udWxsKSx0aGlzLmVkaXRvci5vZmYoInVwZGF0ZSIsdGhpcy5oYW5kbGVFZGl0b3JVcGRhdGUuYmluZCh0aGlzKSksdGhpcy5jb250YWluZXIucmVtb3ZlKCl9Y3JlYXRlQ29udGFpbmVyKCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5kYXRhc2V0LnJlc2l6ZUNvbnRhaW5lcj0iIixlLmRhdGFzZXQubm9kZT10aGlzLm5vZGUudHlwZS5uYW1lLGUuc3R5bGUuZGlzcGxheT10aGlzLm5vZGUudHlwZS5pc0lubGluZT8iaW5saW5lLWZsZXgiOiJmbGV4Iix0aGlzLmNsYXNzTmFtZXMuY29udGFpbmVyJiYoZS5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWVzLmNvbnRhaW5lciksZS5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIpLGV9Y3JlYXRlV3JhcHBlcigpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixlLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixlLmRhdGFzZXQucmVzaXplV3JhcHBlcj0iIix0aGlzLmNsYXNzTmFtZXMud3JhcHBlciYmKGUuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lcy53cmFwcGVyKSxlLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksZX1jcmVhdGVIYW5kbGUoZSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5kYXRhc2V0LnJlc2l6ZUhhbmRsZT1lLHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmNsYXNzTmFtZXMuaGFuZGxlJiYodC5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWVzLmhhbmRsZSksdH1wb3NpdGlvbkhhbmRsZShlLHQpe2NvbnN0IG49dC5pbmNsdWRlcygidG9wIikscj10LmluY2x1ZGVzKCJib3R0b20iKSxvPXQuaW5jbHVkZXMoImxlZnQiKSxpPXQuaW5jbHVkZXMoInJpZ2h0Iik7biYmKGUuc3R5bGUudG9wPSIwIiksciYmKGUuc3R5bGUuYm90dG9tPSIwIiksbyYmKGUuc3R5bGUubGVmdD0iMCIpLGkmJihlLnN0eWxlLnJpZ2h0PSIwIiksInRvcCIhPT10JiYiYm90dG9tIiE9PXR8fChlLnN0eWxlLmxlZnQ9IjAiLGUuc3R5bGUucmlnaHQ9IjAiKSwibGVmdCIhPT10JiYicmlnaHQiIT09dHx8KGUuc3R5bGUudG9wPSIwIixlLnN0eWxlLmJvdHRvbT0iMCIpfWF0dGFjaEhhbmRsZXMoKXt0aGlzLmRpcmVjdGlvbnMuZm9yRWFjaChlPT57bGV0IHQ7dD10aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZT90aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZShlKTp0aGlzLmNyZWF0ZUhhbmRsZShlKSx0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fChjb25zb2xlLndhcm4oYFtSZXNpemFibGVOb2RlVmlld10gY3JlYXRlQ3VzdG9tSGFuZGxlKCIke2V9IikgZGlkIG5vdCByZXR1cm4gYW4gSFRNTEVsZW1lbnQuIEZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGhhbmRsZS5gKSx0PXRoaXMuY3JlYXRlSGFuZGxlKGUpKSx0aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZXx8dGhpcy5wb3NpdGlvbkhhbmRsZSh0LGUpLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0PT50aGlzLmhhbmRsZVJlc2l6ZVN0YXJ0KHQsZSkpLHQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdD0+dGhpcy5oYW5kbGVSZXNpemVTdGFydCh0LGUpKSx0aGlzLmhhbmRsZU1hcC5zZXQoZSx0KSx0aGlzLndyYXBwZXIuYXBwZW5kQ2hpbGQodCl9KX1yZW1vdmVIYW5kbGVzKCl7dGhpcy5oYW5kbGVNYXAuZm9yRWFjaChlPT5lLnJlbW92ZSgpKSx0aGlzLmhhbmRsZU1hcC5jbGVhcigpfWFwcGx5SW5pdGlhbFNpemUoKXtjb25zdCBlPXRoaXMubm9kZS5hdHRycy53aWR0aCx0PXRoaXMubm9kZS5hdHRycy5oZWlnaHQ7ZT8odGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPWAke2V9cHhgLHRoaXMuaW5pdGlhbFdpZHRoPWUpOnRoaXMuaW5pdGlhbFdpZHRoPXRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCx0Pyh0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0PWAke3R9cHhgLHRoaXMuaW5pdGlhbEhlaWdodD10KTp0aGlzLmluaXRpYWxIZWlnaHQ9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCx0aGlzLmluaXRpYWxXaWR0aD4wJiZ0aGlzLmluaXRpYWxIZWlnaHQ+MCYmKHRoaXMuYXNwZWN0UmF0aW89dGhpcy5pbml0aWFsV2lkdGgvdGhpcy5pbml0aWFsSGVpZ2h0KX1oYW5kbGVSZXNpemVTdGFydChlLHQpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuaXNSZXNpemluZz0hMCx0aGlzLmFjdGl2ZUhhbmRsZT10LCJ0b3VjaGVzImluIGU/KHRoaXMuc3RhcnRYPWUudG91Y2hlc1swXS5jbGllbnRYLHRoaXMuc3RhcnRZPWUudG91Y2hlc1swXS5jbGllbnRZKToodGhpcy5zdGFydFg9ZS5jbGllbnRYLHRoaXMuc3RhcnRZPWUuY2xpZW50WSksdGhpcy5zdGFydFdpZHRoPXRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCx0aGlzLnN0YXJ0SGVpZ2h0PXRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQsdGhpcy5zdGFydFdpZHRoPjAmJnRoaXMuc3RhcnRIZWlnaHQ+MCYmKHRoaXMuYXNwZWN0UmF0aW89dGhpcy5zdGFydFdpZHRoL3RoaXMuc3RhcnRIZWlnaHQpLHRoaXMuZ2V0UG9zKCksdGhpcy5jb250YWluZXIuZGF0YXNldC5yZXNpemVTdGF0ZT0idHJ1ZSIsdGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nJiZ0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZU1vdXNlTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmhhbmRsZVRvdWNoTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5oYW5kbGVNb3VzZVVwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleURvd24pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIix0aGlzLmhhbmRsZUtleVVwKX1oYW5kbGVSZXNpemUoZSx0KXtpZighdGhpcy5hY3RpdmVIYW5kbGUpcmV0dXJuO2NvbnN0IG49dGhpcy5wcmVzZXJ2ZUFzcGVjdFJhdGlvfHx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkLHt3aWR0aDpyLGhlaWdodDpvfT10aGlzLmNhbGN1bGF0ZU5ld0RpbWVuc2lvbnModGhpcy5hY3RpdmVIYW5kbGUsZSx0KSxpPXRoaXMuYXBwbHlDb25zdHJhaW50cyhyLG8sbik7dGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPWAke2kud2lkdGh9cHhgLHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQ9YCR7aS5oZWlnaHR9cHhgLHRoaXMub25SZXNpemUmJnRoaXMub25SZXNpemUoaS53aWR0aCxpLmhlaWdodCl9Y2FsY3VsYXRlTmV3RGltZW5zaW9ucyhlLHQsbil7bGV0IHI9dGhpcy5zdGFydFdpZHRoLG89dGhpcy5zdGFydEhlaWdodDtjb25zdCBpPWUuaW5jbHVkZXMoInJpZ2h0Iikscz1lLmluY2x1ZGVzKCJsZWZ0IiksbD1lLmluY2x1ZGVzKCJib3R0b20iKSxhPWUuaW5jbHVkZXMoInRvcCIpO2k/cj10aGlzLnN0YXJ0V2lkdGgrdDpzJiYocj10aGlzLnN0YXJ0V2lkdGgtdCksbD9vPXRoaXMuc3RhcnRIZWlnaHQrbjphJiYobz10aGlzLnN0YXJ0SGVpZ2h0LW4pLCJyaWdodCIhPT1lJiYibGVmdCIhPT1lfHwocj10aGlzLnN0YXJ0V2lkdGgrKGk/dDotdCkpLCJ0b3AiIT09ZSYmImJvdHRvbSIhPT1lfHwobz10aGlzLnN0YXJ0SGVpZ2h0KyhsP246LW4pKTtyZXR1cm4gdGhpcy5wcmVzZXJ2ZUFzcGVjdFJhdGlvfHx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkP3RoaXMuYXBwbHlBc3BlY3RSYXRpbyhyLG8sZSk6e3dpZHRoOnIsaGVpZ2h0Om99fWFwcGx5Q29uc3RyYWludHMoZSx0LG4pe3ZhciByLG8saSxzO2lmKCFuKXtsZXQgbj1NYXRoLm1heCh0aGlzLm1pblNpemUud2lkdGgsZSksaT1NYXRoLm1heCh0aGlzLm1pblNpemUuaGVpZ2h0LHQpO3JldHVybihudWxsPT0ocj10aGlzLm1heFNpemUpP3ZvaWQgMDpyLndpZHRoKSYmKG49TWF0aC5taW4odGhpcy5tYXhTaXplLndpZHRoLG4pKSwobnVsbD09KG89dGhpcy5tYXhTaXplKT92b2lkIDA6by5oZWlnaHQpJiYoaT1NYXRoLm1pbih0aGlzLm1heFNpemUuaGVpZ2h0LGkpKSx7d2lkdGg6bixoZWlnaHQ6aX19bGV0IGw9ZSxhPXQ7cmV0dXJuIGw8dGhpcy5taW5TaXplLndpZHRoJiYobD10aGlzLm1pblNpemUud2lkdGgsYT1sL3RoaXMuYXNwZWN0UmF0aW8pLGE8dGhpcy5taW5TaXplLmhlaWdodCYmKGE9dGhpcy5taW5TaXplLmhlaWdodCxsPWEqdGhpcy5hc3BlY3RSYXRpbyksKG51bGw9PShpPXRoaXMubWF4U2l6ZSk/dm9pZCAwOmkud2lkdGgpJiZsPnRoaXMubWF4U2l6ZS53aWR0aCYmKGw9dGhpcy5tYXhTaXplLndpZHRoLGE9bC90aGlzLmFzcGVjdFJhdGlvKSwobnVsbD09KHM9dGhpcy5tYXhTaXplKT92b2lkIDA6cy5oZWlnaHQpJiZhPnRoaXMubWF4U2l6ZS5oZWlnaHQmJihhPXRoaXMubWF4U2l6ZS5oZWlnaHQsbD1hKnRoaXMuYXNwZWN0UmF0aW8pLHt3aWR0aDpsLGhlaWdodDphfX1hcHBseUFzcGVjdFJhdGlvKGUsdCxuKXtjb25zdCByPSJ0b3AiPT09bnx8ImJvdHRvbSI9PT1uO3JldHVybiJsZWZ0Ij09PW58fCJyaWdodCI9PT1uP3t3aWR0aDplLGhlaWdodDplL3RoaXMuYXNwZWN0UmF0aW99OnI/e3dpZHRoOnQqdGhpcy5hc3BlY3RSYXRpbyxoZWlnaHQ6dH06e3dpZHRoOmUsaGVpZ2h0OmUvdGhpcy5hc3BlY3RSYXRpb319fTtmdW5jdGlvbiBkZWNvZGVIdG1sRW50aXRpZXMoZSl7cmV0dXJuIGUucmVwbGFjZSgvJmx0Oy9nLCI8IikucmVwbGFjZSgvJmd0Oy9nLCI+IikucmVwbGFjZSgvJnF1b3Q7L2csJyInKS5yZXBsYWNlKC8mYW1wOy9nLCImIil9ZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKGUpe2lmKCEobnVsbD09ZT92b2lkIDA6ZS50cmltKCkpKXJldHVybnt9O2NvbnN0IHQ9e30sbj1bXSxyPWUucmVwbGFjZSgvWyInXShbXiInXSopWyInXS9nLGU9PihuLnB1c2goZSksYF9fUVVPVEVEXyR7bi5sZW5ndGgtMX1fX2ApKSxvPXIubWF0Y2goLyg/Ol58XHMpXC4oW2EtekEtWl1bXHctXSopL2cpO2lmKG8pe2NvbnN0IGU9by5tYXAoZT0+ZS50cmltKCkuc2xpY2UoMSkpO3QuY2xhc3M9ZS5qb2luKCIgIil9Y29uc3QgaT1yLm1hdGNoKC8oPzpefFxzKSMoW2EtekEtWl1bXHctXSopLyk7aSYmKHQuaWQ9aVsxXSk7QXJyYXkuZnJvbShyLm1hdGNoQWxsKC8oW2EtekEtWl1bXHctXSopXHMqPVxzKihfX1FVT1RFRF9cZCtfXykvZykpLmZvckVhY2goKFssZSxyXSk9Pnt2YXIgbztjb25zdCBpPXBhcnNlSW50KChudWxsPT0obz1yLm1hdGNoKC9fX1FVT1RFRF8oXGQrKV9fLykpP3ZvaWQgMDpvWzFdKXx8IjAiLDEwKSxzPW5baV07cyYmKHRbZV09cy5zbGljZSgxLC0xKSl9KTtjb25zdCBzPXIucmVwbGFjZSgvKD86XnxccylcLihbYS16QS1aXVtcdy1dKikvZywiIikucmVwbGFjZSgvKD86XnxccykjKFthLXpBLVpdW1x3LV0qKS9nLCIiKS5yZXBsYWNlKC8oW2EtekEtWl1bXHctXSopXHMqPVxzKl9fUVVPVEVEX1xkK19fL2csIiIpLnRyaW0oKTtpZihzKXtzLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChlPT57ZS5tYXRjaCgvXlthLXpBLVpdW1x3LV0qJC8pJiYodFtlXT0hMCl9KX1yZXR1cm4gdH1mdW5jdGlvbiBzZXJpYWxpemVBdHRyaWJ1dGVzKGUpe2lmKCFlfHwwPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoKXJldHVybiIiO2NvbnN0IHQ9W107aWYoZS5jbGFzcyl7U3RyaW5nKGUuY2xhc3MpLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChlPT50LnB1c2goYC4ke2V9YCkpfXJldHVybiBlLmlkJiZ0LnB1c2goYCMke2UuaWR9YCksT2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW2Usbl0pPT57ImNsYXNzIiE9PWUmJiJpZCIhPT1lJiYoITA9PT1uP3QucHVzaChlKTohMSE9PW4mJm51bGwhPW4mJnQucHVzaChgJHtlfT0iJHtTdHJpbmcobil9ImApKX0pLHQuam9pbigiICIpfWZ1bmN0aW9uIGNyZWF0ZUF0b21CbG9ja01hcmtkb3duU3BlYyhlKXtjb25zdHtub2RlTmFtZTp0LG5hbWU6bixwYXJzZUF0dHJpYnV0ZXM6cj1wYXJzZUF0dHJpYnV0ZXMsc2VyaWFsaXplQXR0cmlidXRlczpvPXNlcmlhbGl6ZUF0dHJpYnV0ZXMsZGVmYXVsdEF0dHJpYnV0ZXM6aT17fSxyZXF1aXJlZEF0dHJpYnV0ZXM6cz1bXSxhbGxvd2VkQXR0cmlidXRlczpsfT1lLGE9bnx8dDtyZXR1cm57cGFyc2VNYXJrZG93bjooZSxuKT0+e2NvbnN0IHI9ey4uLmksLi4uZS5hdHRyaWJ1dGVzfTtyZXR1cm4gbi5jcmVhdGVOb2RlKHQscixbXSl9LG1hcmtkb3duVG9rZW5pemVyOntuYW1lOnQsbGV2ZWw6ImJsb2NrIixzdGFydChlKXt2YXIgdDtjb25zdCBuPW5ldyBSZWdFeHAoYF46Ojoke2F9KD86XFxzfCQpYCwibSIpLHI9bnVsbD09KHQ9ZS5tYXRjaChuKSk/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PXI/cjotMX0sdG9rZW5pemUoZSxuLG8pe2NvbnN0IGk9bmV3IFJlZ0V4cChgXjo6OiR7YX0oPzpcXHMrXFx7KFtefV0qKVxcfSk/XFxzKjo6Oig/OlxcbnwkKWApLGw9ZS5tYXRjaChpKTtpZighbClyZXR1cm47Y29uc3QgYz1sWzFdfHwiIixkPXIoYyk7cmV0dXJuIHMuZmluZChlPT4hKGUgaW4gZCkpP3ZvaWQgMDp7dHlwZTp0LHJhdzpsWzBdLGF0dHJpYnV0ZXM6ZH19fSxyZW5kZXJNYXJrZG93bjplPT57Y29uc3QgdD0oZT0+e2lmKCFsKXJldHVybiBlO2NvbnN0IHQ9e307cmV0dXJuIGwuZm9yRWFjaChuPT57biBpbiBlJiYodFtuXT1lW25dKX0pLHR9KShlLmF0dHJzfHx7fSksbj1vKHQpO3JldHVybmA6Ojoke2F9JHtuP2AgeyR7bn19YDoiIn0gOjo6YH19fWZ1bmN0aW9uIGNyZWF0ZUJsb2NrTWFya2Rvd25TcGVjKGUpe2NvbnN0e25vZGVOYW1lOnQsbmFtZTpuLGdldENvbnRlbnQ6cixwYXJzZUF0dHJpYnV0ZXM6bz1wYXJzZUF0dHJpYnV0ZXMsc2VyaWFsaXplQXR0cmlidXRlczppPXNlcmlhbGl6ZUF0dHJpYnV0ZXMsZGVmYXVsdEF0dHJpYnV0ZXM6cz17fSxjb250ZW50Omw9ImJsb2NrIixhbGxvd2VkQXR0cmlidXRlczphfT1lLGM9bnx8dDtyZXR1cm57cGFyc2VNYXJrZG93bjooZSxuKT0+e2xldCBvO2lmKHIpe2NvbnN0IHQ9cihlKTtvPSJzdHJpbmciPT10eXBlb2YgdD9be3R5cGU6InRleHQiLHRleHQ6dH1dOnR9ZWxzZSBvPSJibG9jayI9PT1sP24ucGFyc2VDaGlsZHJlbihlLnRva2Vuc3x8W10pOm4ucGFyc2VJbmxpbmUoZS50b2tlbnN8fFtdKTtjb25zdCBpPXsuLi5zLC4uLmUuYXR0cmlidXRlc307cmV0dXJuIG4uY3JlYXRlTm9kZSh0LGksbyl9LG1hcmtkb3duVG9rZW5pemVyOntuYW1lOnQsbGV2ZWw6ImJsb2NrIixzdGFydChlKXt2YXIgdDtjb25zdCBuPW5ldyBSZWdFeHAoYF46Ojoke2N9YCwibSIpLHI9bnVsbD09KHQ9ZS5tYXRjaChuKSk/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PXI/cjotMX0sdG9rZW5pemUoZSxuLHIpe3ZhciBpO2NvbnN0IHM9bmV3IFJlZ0V4cChgXjo6OiR7Y30oPzpcXHMrXFx7KFtefV0qKVxcfSk/XFxzKlxcbmApLGE9ZS5tYXRjaChzKTtpZighYSlyZXR1cm47Y29uc3RbZCxwPSIiXT1hLGY9byhwKTtsZXQgbT0xO2NvbnN0IHk9ZC5sZW5ndGg7bGV0IHc9IiI7Y29uc3QgYj0vXjo6OihbXHctXSopKFxzLiopPy9nbSx2PWUuc2xpY2UoeSk7Zm9yKGIubGFzdEluZGV4PTA7Oyl7Y29uc3Qgbj1iLmV4ZWModik7aWYobnVsbD09PW4pYnJlYWs7Y29uc3Qgbz1uLmluZGV4LHM9blsxXTtpZighKG51bGw9PShpPW5bMl0pP3ZvaWQgMDppLmVuZHNXaXRoKCI6OjoiKSkpaWYocyltKz0xO2Vsc2UgaWYobS09MSwwPT09bSl7Y29uc3QgaT12LnNsaWNlKDAsbyk7dz1pLnRyaW0oKTtjb25zdCBzPWUuc2xpY2UoMCx5K28rblswXS5sZW5ndGgpO2xldCBhPVtdO2lmKHcpaWYoImJsb2NrIj09PWwpZm9yKGE9ci5ibG9ja1Rva2VucyhpKSxhLmZvckVhY2goZT0+eyFlLnRleHR8fGUudG9rZW5zJiYwIT09ZS50b2tlbnMubGVuZ3RofHwoZS50b2tlbnM9ci5pbmxpbmVUb2tlbnMoZS50ZXh0KSl9KTthLmxlbmd0aD4wOyl7Y29uc3QgZT1hW2EubGVuZ3RoLTFdO2lmKCJwYXJhZ3JhcGgiIT09ZS50eXBlfHxlLnRleHQmJiIiIT09ZS50ZXh0LnRyaW0oKSlicmVhazthLnBvcCgpfWVsc2UgYT1yLmlubGluZVRva2Vucyh3KTtyZXR1cm57dHlwZTp0LHJhdzpzLGF0dHJpYnV0ZXM6Zixjb250ZW50OncsdG9rZW5zOmF9fX19fSxyZW5kZXJNYXJrZG93bjooZSx0KT0+e2NvbnN0IG49KGU9PntpZighYSlyZXR1cm4gZTtjb25zdCB0PXt9O3JldHVybiBhLmZvckVhY2gobj0+e24gaW4gZSYmKHRbbl09ZVtuXSl9KSx0fSkoZS5hdHRyc3x8e30pLHI9aShuKSxvPXI/YCB7JHtyfX1gOiIiLHM9dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnR8fFtdLCJcblxuIik7cmV0dXJuYDo6OiR7Y30ke299XG5cbiR7c31cblxuOjo6YH19fWZ1bmN0aW9uIHBhcnNlU2hvcnRjb2RlQXR0cmlidXRlcyhlKXtpZighZS50cmltKCkpcmV0dXJue307Y29uc3QgdD17fSxuPS8oXHcrKT0oPzoiKFteIl0qKSJ8JyhbXiddKiknKS9nO2xldCByPW4uZXhlYyhlKTtmb3IoO251bGwhPT1yOyl7Y29uc3RbLG8saSxzXT1yO3Rbb109aXx8cyxyPW4uZXhlYyhlKX1yZXR1cm4gdH1mdW5jdGlvbiBzZXJpYWxpemVTaG9ydGNvZGVBdHRyaWJ1dGVzKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFssZV0pPT5udWxsIT1lKS5tYXAoKFtlLHRdKT0+YCR7ZX09IiR7dH0iYCkuam9pbigiICIpfWZ1bmN0aW9uIGNyZWF0ZUlubGluZU1hcmtkb3duU3BlYyhlKXtjb25zdHtub2RlTmFtZTp0LG5hbWU6bixnZXRDb250ZW50OnIscGFyc2VBdHRyaWJ1dGVzOm89cGFyc2VTaG9ydGNvZGVBdHRyaWJ1dGVzLHNlcmlhbGl6ZUF0dHJpYnV0ZXM6aT1zZXJpYWxpemVTaG9ydGNvZGVBdHRyaWJ1dGVzLGRlZmF1bHRBdHRyaWJ1dGVzOnM9e30sc2VsZkNsb3Npbmc6bD0hMSxhbGxvd2VkQXR0cmlidXRlczphfT1lLGM9bnx8dCxkPWMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKTtyZXR1cm57cGFyc2VNYXJrZG93bjooZSxuKT0+e2NvbnN0IG89ey4uLnMsLi4uZS5hdHRyaWJ1dGVzfTtpZihsKXJldHVybiBuLmNyZWF0ZU5vZGUodCxvKTtjb25zdCBpPXI/cihlKTplLmNvbnRlbnR8fCIiO3JldHVybiBpP24uY3JlYXRlTm9kZSh0LG8sW24uY3JlYXRlVGV4dE5vZGUoaSldKTpuLmNyZWF0ZU5vZGUodCxvLFtdKX0sbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6dCxsZXZlbDoiaW5saW5lIixzdGFydChlKXtjb25zdCB0PWw/bmV3IFJlZ0V4cChgXFxbJHtkfVxccypbXlxcXV0qXFxdYCk6bmV3IFJlZ0V4cChgXFxbJHtkfVxccypbXlxcXV0qXFxdW1xcc1xcU10qP1xcW1xcLyR7ZH1cXF1gKSxuPWUubWF0Y2godCkscj1udWxsPT1uP3ZvaWQgMDpuLmluZGV4O3JldHVybiB2b2lkIDAhPT1yP3I6LTF9LHRva2VuaXplKGUsbixyKXtjb25zdCBpPWw/bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdYCk6bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdKFtcXHNcXFNdKj8pXFxbXFwvJHtkfVxcXWApLHM9ZS5tYXRjaChpKTtpZighcylyZXR1cm47bGV0IGE9IiIsYz0iIjtpZihsKXtjb25zdFssZV09cztjPWV9ZWxzZXtjb25zdFssZSx0XT1zO2M9ZSxhPXR8fCIifWNvbnN0IHA9byhjLnRyaW0oKSk7cmV0dXJue3R5cGU6dCxyYXc6c1swXSxjb250ZW50OmEudHJpbSgpLGF0dHJpYnV0ZXM6cH19fSxyZW5kZXJNYXJrZG93bjplPT57bGV0IHQ9IiI7cj90PXIoZSk6ZS5jb250ZW50JiZlLmNvbnRlbnQubGVuZ3RoPjAmJih0PWUuY29udGVudC5maWx0ZXIoZT0+InRleHQiPT09ZS50eXBlKS5tYXAoZT0+ZS50ZXh0KS5qb2luKCIiKSk7Y29uc3Qgbj0oZT0+e2lmKCFhKXJldHVybiBlO2NvbnN0IHQ9e307cmV0dXJuIGEuZm9yRWFjaChuPT57Y29uc3Qgcj0ic3RyaW5nIj09dHlwZW9mIG4/bjpuLm5hbWUsbz0ic3RyaW5nIj09dHlwZW9mIG4/dm9pZCAwOm4uc2tpcElmRGVmYXVsdDtpZihyIGluIGUpe2NvbnN0IG49ZVtyXTtpZih2b2lkIDAhPT1vJiZuPT09bylyZXR1cm47dFtyXT1ufX0pLHR9KShlLmF0dHJzfHx7fSksbz1pKG4pLHM9bz9gICR7b31gOiIiO3JldHVybiBsP2BbJHtjfSR7c31dYDpgWyR7Y30ke3N9XSR7dH1bLyR7Y31dYH19fWZ1bmN0aW9uIHBhcnNlSW5kZW50ZWRCbG9ja3MoZSx0LG4pe3ZhciByLG8saSxzO2NvbnN0IGw9ZS5zcGxpdCgiXG4iKSxhPVtdO2xldCBjPSIiLGQ9MDtjb25zdCBwPXQuYmFzZUluZGVudFNpemV8fDI7Zm9yKDtkPGwubGVuZ3RoOyl7Y29uc3QgZT1sW2RdLGY9ZS5tYXRjaCh0Lml0ZW1QYXR0ZXJuKTtpZighZil7aWYoYS5sZW5ndGg+MClicmVhaztpZigiIj09PWUudHJpbSgpKXtkKz0xLGM9YCR7Y30ke2V9XG5gO2NvbnRpbnVlfXJldHVybn1jb25zdCBtPXQuZXh0cmFjdEl0ZW1EYXRhKGYpLHtpbmRlbnRMZXZlbDp5LG1haW5Db250ZW50Ond9PW07Yz1gJHtjfSR7ZX1cbmA7Y29uc3QgYj1bd107Zm9yKGQrPTE7ZDxsLmxlbmd0aDspe2NvbnN0IGU9bFtkXTtpZigiIj09PWUudHJpbSgpKXtjb25zdCB0PWwuc2xpY2UoZCsxKS5maW5kSW5kZXgoZT0+IiIhPT1lLnRyaW0oKSk7aWYoLTE9PT10KWJyZWFrO2lmKCgobnVsbD09KG89bnVsbD09KHI9bFtkKzErdF0ubWF0Y2goL14oXHMqKS8pKT92b2lkIDA6clsxXSk/dm9pZCAwOm8ubGVuZ3RoKXx8MCk+eSl7Yi5wdXNoKGUpLGM9YCR7Y30ke2V9XG5gLGQrPTE7Y29udGludWV9YnJlYWt9aWYoISgoKG51bGw9PShzPW51bGw9PShpPWUubWF0Y2goL14oXHMqKS8pKT92b2lkIDA6aVsxXSk/dm9pZCAwOnMubGVuZ3RoKXx8MCk+eSkpYnJlYWs7Yi5wdXNoKGUpLGM9YCR7Y30ke2V9XG5gLGQrPTF9bGV0IHY7Y29uc3QgeD1iLnNsaWNlKDEpO2lmKHgubGVuZ3RoPjApe2NvbnN0IGU9eC5tYXAoZT0+ZS5zbGljZSh5K3ApKS5qb2luKCJcbiIpO2UudHJpbSgpJiYodj10LmN1c3RvbU5lc3RlZFBhcnNlcj90LmN1c3RvbU5lc3RlZFBhcnNlcihlKTpuLmJsb2NrVG9rZW5zKGUpKX1jb25zdCBTPXQuY3JlYXRlVG9rZW4obSx2KTthLnB1c2goUyl9aWYoMCE9PWEubGVuZ3RoKXJldHVybntpdGVtczphLHJhdzpjfX1mdW5jdGlvbiByZW5kZXJOZXN0ZWRNYXJrZG93bkNvbnRlbnQoZSx0LG4scil7aWYoIWV8fCFBcnJheS5pc0FycmF5KGUuY29udGVudCkpcmV0dXJuIiI7Y29uc3Qgbz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHIpOm4sW2ksLi4uc109ZS5jb250ZW50O2xldCBsPWAke299JHt0LnJlbmRlckNoaWxkcmVuKFtpXSl9YDtyZXR1cm4gcyYmcy5sZW5ndGg+MCYmcy5mb3JFYWNoKChlLG4pPT57dmFyIHIsbztjb25zdCBpPW51bGwhPShvPW51bGw9PShyPXQucmVuZGVyQ2hpbGQpP3ZvaWQgMDpyLmNhbGwodCxlLG4rMSkpP286dC5yZW5kZXJDaGlsZHJlbihbZV0pO2lmKG51bGwhPWkpe2NvbnN0IG49aS5zcGxpdCgiXG4iKS5tYXAoZT0+ZT90LmluZGVudChlKTp0LmluZGVudCgiIikpLmpvaW4oIlxuIik7bCs9InBhcmFncmFwaCI9PT1lLnR5cGU/YFxuXG4ke259YDpgXG4ke259YH19KSxsfV9fZXhwb3J0JDEoe30se2NyZWF0ZUF0b21CbG9ja01hcmtkb3duU3BlYzooKT0+Y3JlYXRlQXRvbUJsb2NrTWFya2Rvd25TcGVjLGNyZWF0ZUJsb2NrTWFya2Rvd25TcGVjOigpPT5jcmVhdGVCbG9ja01hcmtkb3duU3BlYyxjcmVhdGVJbmxpbmVNYXJrZG93blNwZWM6KCk9PmNyZWF0ZUlubGluZU1hcmtkb3duU3BlYyxwYXJzZUF0dHJpYnV0ZXM6KCk9PnBhcnNlQXR0cmlidXRlcyxwYXJzZUluZGVudGVkQmxvY2tzOigpPT5wYXJzZUluZGVudGVkQmxvY2tzLHJlbmRlck5lc3RlZE1hcmtkb3duQ29udGVudDooKT0+cmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50LHNlcmlhbGl6ZUF0dHJpYnV0ZXM6KCk9PnNlcmlhbGl6ZUF0dHJpYnV0ZXN9KTt2YXIgb249Y2xhc3MgX05vZGUgZXh0ZW5kcyBCdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy50eXBlPSJub2RlIn1zdGF0aWMgY3JlYXRlKGU9e30pe2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmU7cmV0dXJuIG5ldyBfTm9kZSh0KX1jb25maWd1cmUoZSl7cmV0dXJuIHN1cGVyLmNvbmZpZ3VyZShlKX1leHRlbmQoZSl7Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKCk6ZTtyZXR1cm4gc3VwZXIuZXh0ZW5kKHQpfX07ZnVuY3Rpb24gbWFya1Bhc3RlUnVsZShlKXtyZXR1cm4gbmV3IEh0KHtmaW5kOmUuZmluZCxoYW5kbGVyOih7c3RhdGU6dCxyYW5nZTpuLG1hdGNoOnIscGFzdGVFdmVudDpvfSk9Pntjb25zdCBpPWNhbGxPclJldHVybihlLmdldEF0dHJpYnV0ZXMsdm9pZCAwLHIsbyk7aWYoITE9PT1pfHxudWxsPT09aSlyZXR1cm4gbnVsbDtjb25zdHt0cjpzfT10LGw9cltyLmxlbmd0aC0xXSxhPXJbMF07bGV0IGM9bi50bztpZihsKXtjb25zdCBvPWEuc2VhcmNoKC9cUy8pLGQ9bi5mcm9tK2EuaW5kZXhPZihsKSxwPWQrbC5sZW5ndGg7aWYoZ2V0TWFya3NCZXR3ZWVuKG4uZnJvbSxuLnRvLHQuZG9jKS5maWx0ZXIodD0+dC5tYXJrLnR5cGUuZXhjbHVkZWQuZmluZChuPT5uPT09ZS50eXBlJiZuIT09dC5tYXJrLnR5cGUpKS5maWx0ZXIoZT0+ZS50bz5kKS5sZW5ndGgpcmV0dXJuIG51bGw7cDxuLnRvJiZzLmRlbGV0ZShwLG4udG8pLGQ+bi5mcm9tJiZzLmRlbGV0ZShuLmZyb20rbyxkKSxjPW4uZnJvbStvK2wubGVuZ3RoLHMuYWRkTWFyayhuLmZyb20rbyxjLGUudHlwZS5jcmVhdGUoaXx8e30pKTt2b2lkIDAhPT1yLmluZGV4JiZ2b2lkIDAhPT1yLmlucHV0JiZyLmluZGV4K3JbMF0ubGVuZ3RoPj1yLmlucHV0Lmxlbmd0aHx8cy5yZW1vdmVTdG9yZWRNYXJrKGUudHlwZSl9fX0pfXZhciBzbj0vKF58W15gXSlgKFteYF0rKWAoPyFgKSQvLGxuPS8oXnxbXmBdKWAoW15gXSspYCg/IWApL2csYW49RnQuY3JlYXRlKHtuYW1lOiJjb2RlIixhZGRPcHRpb25zOigpPT4oe0hUTUxBdHRyaWJ1dGVzOnt9fSksZXhjbHVkZXM6Il8iLGNvZGU6ITAsZXhpdGFibGU6ITAscGFyc2VIVE1MOigpPT5be3RhZzoiY29kZSJ9XSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuWyJjb2RlIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLDBdfSxtYXJrZG93blRva2VuTmFtZToiY29kZXNwYW4iLHBhcnNlTWFya2Rvd246KGUsdCk9PnQuYXBwbHlNYXJrKCJjb2RlIixbe3R5cGU6InRleHQiLHRleHQ6ZS50ZXh0fHwiIn1dKSxyZW5kZXJNYXJrZG93bjooZSx0KT0+ZS5jb250ZW50P2BcYCR7dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQpfVxgYDoiIixhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlQ29kZTooKT0+KHtjb21tYW5kczplfSk9PmUudG9nZ2xlTWFyayh0aGlzLm5hbWUpLHVuc2V0Q29kZTooKT0+KHtjb21tYW5kczplfSk9PmUudW5zZXRNYXJrKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLWUiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVDb2RlKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6c24sdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bbWFya1Bhc3RlUnVsZSh7ZmluZDpsbix0eXBlOnRoaXMudHlwZX0pXX19KSxjbj1hbixkbj1vbi5jcmVhdGUoe25hbWU6Imhvcml6b250YWxSdWxlIixhZGRPcHRpb25zOigpPT4oe0hUTUxBdHRyaWJ1dGVzOnt9LG5leHROb2RlVHlwZToicGFyYWdyYXBoIn0pLGdyb3VwOiJibG9jayIscGFyc2VIVE1MOigpPT5be3RhZzoiaHIifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsiaHIiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSldfSxtYXJrZG93blRva2VuTmFtZToiaHIiLHBhcnNlTWFya2Rvd246KGUsdCk9PnQuY3JlYXRlTm9kZSgiaG9yaXpvbnRhbFJ1bGUiKSxyZW5kZXJNYXJrZG93bjooKT0+Ii0tLSIsYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SG9yaXpvbnRhbFJ1bGU6KCk9Pih7Y2hhaW46ZSxzdGF0ZTp0fSk9PntpZighZnVuY3Rpb24oZSx0KXtjb25zdHtzZWxlY3Rpb246bn09ZSx7JGZyb206cn09bjtpZihuIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbil7Y29uc3QgZT1yLmluZGV4KCk7cmV0dXJuIHIucGFyZW50LmNhblJlcGxhY2VXaXRoKGUsZSsxLHQpfWxldCBvPXIuZGVwdGg7Zm9yKDtvPj0wOyl7Y29uc3QgZT1yLmluZGV4KG8pO2lmKHIubm9kZShvKS5jb250ZW50TWF0Y2hBdChlKS5tYXRjaFR5cGUodCkpcmV0dXJuITA7by09MX1yZXR1cm4hMX0odCx0LnNjaGVtYS5ub2Rlc1t0aGlzLm5hbWVdKSlyZXR1cm4hMTtjb25zdHtzZWxlY3Rpb246bn09dCx7JHRvOnJ9PW4sbz1lKCk7cmV0dXJuIGlzTm9kZVNlbGVjdGlvbihuKT9vLmluc2VydENvbnRlbnRBdChyLnBvcyx7dHlwZTp0aGlzLm5hbWV9KTpvLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSksby5jb21tYW5kKCh7c3RhdGU6ZSx0cjp0LGRpc3BhdGNoOm59KT0+e2lmKG4pe2NvbnN0eyR0bzpufT10LnNlbGVjdGlvbixyPW4uZW5kKCk7aWYobi5ub2RlQWZ0ZXIpbi5ub2RlQWZ0ZXIuaXNUZXh0YmxvY2s/dC5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5jcmVhdGUodC5kb2Msbi5wb3MrMSkpOm4ubm9kZUFmdGVyLmlzQmxvY2s/dC5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUodC5kb2Msbi5wb3MpKTp0LnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0LmRvYyxuLnBvcykpO2Vsc2V7Y29uc3Qgbz1lLnNjaGVtYS5ub2Rlc1t0aGlzLm9wdGlvbnMubmV4dE5vZGVUeXBlXXx8bi5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2guZGVmYXVsdFR5cGUsaT1udWxsPT1vP3ZvaWQgMDpvLmNyZWF0ZSgpO2kmJih0Lmluc2VydChyLGkpLHQuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24uY3JlYXRlKHQuZG9jLHIrMSkpKX10LnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9KS5ydW4oKX19fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW25vZGVJbnB1dFJ1bGUoe2ZpbmQ6L14oPzotLS184oCULXxfX19cc3xcKlwqXCpccykkLyx0eXBlOnRoaXMudHlwZX0pXX19KSxwbj1kbixobj0vKD86XnxccykoIVxbKC4rfDo/KV1cKChcUyspKD86KD86XHMrKVsiJ10oXFMrKVsiJ10pP1wpKSQvLHVuPW9uLmNyZWF0ZSh7bmFtZToiaW1hZ2UiLGFkZE9wdGlvbnM6KCk9Pih7aW5saW5lOiExLGFsbG93QmFzZTY0OiExLEhUTUxBdHRyaWJ1dGVzOnt9LHJlc2l6ZTohMX0pLGlubGluZSgpe3JldHVybiB0aGlzLm9wdGlvbnMuaW5saW5lfSxncm91cCgpe3JldHVybiB0aGlzLm9wdGlvbnMuaW5saW5lPyJpbmxpbmUiOiJibG9jayJ9LGRyYWdnYWJsZTohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe3NyYzp7ZGVmYXVsdDpudWxsfSxhbHQ6e2RlZmF1bHQ6bnVsbH0sdGl0bGU6e2RlZmF1bHQ6bnVsbH0sd2lkdGg6e2RlZmF1bHQ6bnVsbH0saGVpZ2h0OntkZWZhdWx0Om51bGx9fSkscGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6dGhpcy5vcHRpb25zLmFsbG93QmFzZTY0PyJpbWdbc3JjXSI6J2ltZ1tzcmNdOm5vdChbc3JjXj0iZGF0YToiXSknfV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bImltZyIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKV19LHBhcnNlTWFya2Rvd246KGUsdCk9PnQuY3JlYXRlTm9kZSgiaW1hZ2UiLHtzcmM6ZS5ocmVmLHRpdGxlOmUudGl0bGUsYWx0OmUudGV4dH0pLHJlbmRlck1hcmtkb3duOmU9Pnt2YXIgdCxuLHIsbyxpLHM7Y29uc3QgbD1udWxsIT0obj1udWxsPT0odD1lLmF0dHJzKT92b2lkIDA6dC5zcmMpP246IiIsYT1udWxsIT0obz1udWxsPT0ocj1lLmF0dHJzKT92b2lkIDA6ci5hbHQpP286IiIsYz1udWxsIT0ocz1udWxsPT0oaT1lLmF0dHJzKT92b2lkIDA6aS50aXRsZSk/czoiIjtyZXR1cm4gYz9gIVske2F9XSgke2x9ICIke2N9IilgOmAhWyR7YX1dKCR7bH0pYH0sYWRkTm9kZVZpZXcoKXtpZighdGhpcy5vcHRpb25zLnJlc2l6ZXx8IXRoaXMub3B0aW9ucy5yZXNpemUuZW5hYmxlZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4gbnVsbDtjb25zdHtkaXJlY3Rpb25zOmUsbWluV2lkdGg6dCxtaW5IZWlnaHQ6bixhbHdheXNQcmVzZXJ2ZUFzcGVjdFJhdGlvOnJ9PXRoaXMub3B0aW9ucy5yZXNpemU7cmV0dXJuKHtub2RlOm8sZ2V0UG9zOmksSFRNTEF0dHJpYnV0ZXM6cyxlZGl0b3I6bH0pPT57Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtPYmplY3QuZW50cmllcyhzKS5mb3JFYWNoKChbZSx0XSk9PntpZihudWxsIT10KXN3aXRjaChlKXtjYXNlIndpZHRoIjpjYXNlImhlaWdodCI6YnJlYWs7ZGVmYXVsdDphLnNldEF0dHJpYnV0ZShlLHQpfX0pLGEuc3JjPXMuc3JjO2NvbnN0IGM9bmV3IHJuKHtlbGVtZW50OmEsZWRpdG9yOmwsbm9kZTpvLGdldFBvczppLG9uUmVzaXplOihlLHQpPT57YS5zdHlsZS53aWR0aD1gJHtlfXB4YCxhLnN0eWxlLmhlaWdodD1gJHt0fXB4YH0sb25Db21taXQ6KGUsdCk9Pntjb25zdCBuPWkoKTt2b2lkIDAhPT1uJiZ0aGlzLmVkaXRvci5jaGFpbigpLnNldE5vZGVTZWxlY3Rpb24obikudXBkYXRlQXR0cmlidXRlcyh0aGlzLm5hbWUse3dpZHRoOmUsaGVpZ2h0OnR9KS5ydW4oKX0sb25VcGRhdGU6KGUsdCxuKT0+ZS50eXBlPT09by50eXBlLG9wdGlvbnM6e2RpcmVjdGlvbnM6ZSxtaW46e3dpZHRoOnQsaGVpZ2h0Om59LHByZXNlcnZlQXNwZWN0UmF0aW86ITA9PT1yfX0pLGQ9Yy5kb207cmV0dXJuIGQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixkLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLGEub25sb2FkPSgpPT57ZC5zdHlsZS52aXNpYmlsaXR5PSIiLGQuc3R5bGUucG9pbnRlckV2ZW50cz0iIn0sY319LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEltYWdlOmU9Pih7Y29tbWFuZHM6dH0pPT50Lmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lLGF0dHJzOmV9KX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bbm9kZUlucHV0UnVsZSh7ZmluZDpobix0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOmU9Pntjb25zdFssLHQsbixyXT1lO3JldHVybntzcmM6bixhbHQ6dCx0aXRsZTpyfX19KV19fSksZm49dW47ZnVuY3Rpb24gZmluZFN1Z2dlc3Rpb25NYXRjaChlKXt2YXIgdDtjb25zdHtjaGFyOm4sYWxsb3dTcGFjZXM6cixhbGxvd1RvSW5jbHVkZUNoYXI6byxhbGxvd2VkUHJlZml4ZXM6aSxzdGFydE9mTGluZTpzLCRwb3NpdGlvbjpsfT1lLGE9ciYmIW8sYz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLS9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9KG4pLGQ9bmV3IFJlZ0V4cChgXFxzJHtjfSRgKSxwPXM/Il4iOiIiLGY9bz8iIjpjLG09YT9uZXcgUmVnRXhwKGAke3B9JHtjfS4qPyg/PVxccyR7Zn18JClgLCJnbSIpOm5ldyBSZWdFeHAoYCR7cH0oPzpeKT8ke2N9W15cXHMke2Z9XSpgLCJnbSIpLHk9KG51bGw9PSh0PWwubm9kZUJlZm9yZSk/dm9pZCAwOnQuaXNUZXh0KSYmbC5ub2RlQmVmb3JlLnRleHQ7aWYoIXkpcmV0dXJuIG51bGw7Y29uc3Qgdz1sLnBvcy15Lmxlbmd0aCxiPUFycmF5LmZyb20oeS5tYXRjaEFsbChtKSkucG9wKCk7aWYoIWJ8fHZvaWQgMD09PWIuaW5wdXR8fHZvaWQgMD09PWIuaW5kZXgpcmV0dXJuIG51bGw7Y29uc3Qgdj1iLmlucHV0LnNsaWNlKE1hdGgubWF4KDAsYi5pbmRleC0xKSxiLmluZGV4KSx4PW5ldyBSZWdFeHAoYF5bJHtudWxsPT1pP3ZvaWQgMDppLmpvaW4oIiIpfVwwXT8kYCkudGVzdCh2KTtpZihudWxsIT09aSYmIXgpcmV0dXJuIG51bGw7Y29uc3QgUz13K2IuaW5kZXg7bGV0IEM9UytiWzBdLmxlbmd0aDtyZXR1cm4gYSYmZC50ZXN0KHkuc2xpY2UoQy0xLEMrMSkpJiYoYlswXSs9IiAiLEMrPTEpLFM8bC5wb3MmJkM+PWwucG9zP3tyYW5nZTp7ZnJvbTpTLHRvOkN9LHF1ZXJ5OmJbMF0uc2xpY2Uobi5sZW5ndGgpLHRleHQ6YlswXX06bnVsbH12YXIgbW49bmV3IFBsdWdpbktleSgic3VnZ2VzdGlvbiIpO2Z1bmN0aW9uIFN1Z2dlc3Rpb24oe3BsdWdpbktleTplPW1uLGVkaXRvcjp0LGNoYXI6bj0iQCIsYWxsb3dTcGFjZXM6cj0hMSxhbGxvd1RvSW5jbHVkZUNoYXI6bz0hMSxhbGxvd2VkUHJlZml4ZXM6aT1bIiAiXSxzdGFydE9mTGluZTpzPSExLGRlY29yYXRpb25UYWc6bD0ic3BhbiIsZGVjb3JhdGlvbkNsYXNzOmE9InN1Z2dlc3Rpb24iLGRlY29yYXRpb25Db250ZW50OmM9IiIsZGVjb3JhdGlvbkVtcHR5Q2xhc3M6ZD0iaXMtZW1wdHkiLGNvbW1hbmQ6cD0oKT0+bnVsbCxpdGVtczpmPSgpPT5bXSxyZW5kZXI6bT0oKT0+KHt9KSxhbGxvdzp5PSgpPT4hMCxmaW5kU3VnZ2VzdGlvbk1hdGNoOnc9ZmluZFN1Z2dlc3Rpb25NYXRjaCxzaG91bGRTaG93OmIsc2hvdWxkUmVzZXREaXNtaXNzZWQ6dn0pe2xldCB4O2NvbnN0IFM9bnVsbD09bT92b2lkIDA6bSgpLEM9ciYmIW8sZ2V0QW5jaG9yQ2xpZW50UmVjdD0oKT0+e2NvbnN0IGU9dC5zdGF0ZS5zZWxlY3Rpb24uJGFuY2hvci5wb3Msbj10LnZpZXcuY29vcmRzQXRQb3MoZSkse3RvcDpyLHJpZ2h0Om8sYm90dG9tOmksbGVmdDpzfT1uO3RyeXtyZXR1cm4gbmV3IERPTVJlY3QocyxyLG8tcyxpLXIpfWNhdGNoe3JldHVybiBudWxsfX0sY2xpZW50UmVjdEZvcj0obixyKT0+cj8oKT0+e2NvbnN0IHI9ZS5nZXRTdGF0ZSh0LnN0YXRlKSxvPW51bGw9PXI/dm9pZCAwOnIuZGVjb3JhdGlvbklkLGk9bi5kb20ucXVlcnlTZWxlY3RvcihgW2RhdGEtZGVjb3JhdGlvbi1pZD0iJHtvfSJdYCk7cmV0dXJuKG51bGw9PWk/dm9pZCAwOmkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfHxudWxsfTpnZXRBbmNob3JDbGllbnRSZWN0O2NvbnN0IEE9bmV3IFBsdWdpbih7a2V5OmUsdmlldygpe3JldHVybnt1cGRhdGU6YXN5bmMoZSxuKT0+e3ZhciByLG8saSxzLGwsYSxjO2NvbnN0IGQ9bnVsbD09KHI9dGhpcy5rZXkpP3ZvaWQgMDpyLmdldFN0YXRlKG4pLG09bnVsbD09KG89dGhpcy5rZXkpP3ZvaWQgMDpvLmdldFN0YXRlKGUuc3RhdGUpLHk9ZC5hY3RpdmUmJm0uYWN0aXZlJiZkLnJhbmdlLmZyb20hPT1tLnJhbmdlLmZyb20sdz0hZC5hY3RpdmUmJm0uYWN0aXZlLGI9ZC5hY3RpdmUmJiFtLmFjdGl2ZSx2PSF3JiYhYiYmZC5xdWVyeSE9PW0ucXVlcnksQz13fHx5JiZ2LEE9dnx8eSxPPWJ8fHkmJnY7aWYoIUMmJiFBJiYhTylyZXR1cm47Y29uc3QgRT1PJiYhQz9kOm0sTj1lLmRvbS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1kZWNvcmF0aW9uLWlkPSIke0UuZGVjb3JhdGlvbklkfSJdYCk7eD17ZWRpdG9yOnQscmFuZ2U6RS5yYW5nZSxxdWVyeTpFLnF1ZXJ5LHRleHQ6RS50ZXh0LGl0ZW1zOltdLGNvbW1hbmQ6ZT0+cCh7ZWRpdG9yOnQscmFuZ2U6RS5yYW5nZSxwcm9wczplfSksZGVjb3JhdGlvbk5vZGU6TixjbGllbnRSZWN0OmNsaWVudFJlY3RGb3IoZSxOKX0sQyYmKG51bGw9PShpPW51bGw9PVM/dm9pZCAwOlMub25CZWZvcmVTdGFydCl8fGkuY2FsbChTLHgpKSxBJiYobnVsbD09KHM9bnVsbD09Uz92b2lkIDA6Uy5vbkJlZm9yZVVwZGF0ZSl8fHMuY2FsbChTLHgpKSwoQXx8QykmJih4Lml0ZW1zPWF3YWl0IGYoe2VkaXRvcjp0LHF1ZXJ5OkUucXVlcnl9KSksTyYmKG51bGw9PShsPW51bGw9PVM/dm9pZCAwOlMub25FeGl0KXx8bC5jYWxsKFMseCkpLEEmJihudWxsPT0oYT1udWxsPT1TP3ZvaWQgMDpTLm9uVXBkYXRlKXx8YS5jYWxsKFMseCkpLEMmJihudWxsPT0oYz1udWxsPT1TP3ZvaWQgMDpTLm9uU3RhcnQpfHxjLmNhbGwoUyx4KSl9LGRlc3Ryb3k6KCk9Pnt2YXIgZTt4JiYobnVsbD09KGU9bnVsbD09Uz92b2lkIDA6Uy5vbkV4aXQpfHxlLmNhbGwoUyx4KSl9fX0sc3RhdGU6e2luaXQ6KCk9Pih7YWN0aXZlOiExLHJhbmdlOntmcm9tOjAsdG86MH0scXVlcnk6bnVsbCx0ZXh0Om51bGwsY29tcG9zaW5nOiExLGRpc21pc3NlZFJhbmdlOm51bGx9KSxhcHBseShsLGEsYyxkKXtjb25zdHtpc0VkaXRhYmxlOnB9PXQse2NvbXBvc2luZzpmfT10LnZpZXcse3NlbGVjdGlvbjptfT1sLHtlbXB0eTp4LGZyb206U309bSxBPXsuLi5hfSxPPWwuZ2V0TWV0YShlKTtpZihPJiZPLmV4aXQpcmV0dXJuIEEuYWN0aXZlPSExLEEuZGVjb3JhdGlvbklkPW51bGwsQS5yYW5nZT17ZnJvbTowLHRvOjB9LEEucXVlcnk9bnVsbCxBLnRleHQ9bnVsbCxBLmRpc21pc3NlZFJhbmdlPWEuYWN0aXZlP3suLi5hLnJhbmdlfTphLmRpc21pc3NlZFJhbmdlLEE7aWYoQS5jb21wb3Npbmc9ZixsLmRvY0NoYW5nZWQmJm51bGwhPT1BLmRpc21pc3NlZFJhbmdlJiYoQS5kaXNtaXNzZWRSYW5nZT17ZnJvbTpsLm1hcHBpbmcubWFwKEEuZGlzbWlzc2VkUmFuZ2UuZnJvbSksdG86bC5tYXBwaW5nLm1hcChBLmRpc21pc3NlZFJhbmdlLnRvKX0pLHAmJih4fHx0LnZpZXcuY29tcG9zaW5nKSl7IShTPGEucmFuZ2UuZnJvbXx8Uz5hLnJhbmdlLnRvKXx8Znx8YS5jb21wb3Npbmd8fChBLmFjdGl2ZT0hMSk7Y29uc3QgZT13KHtjaGFyOm4sYWxsb3dTcGFjZXM6cixhbGxvd1RvSW5jbHVkZUNoYXI6byxhbGxvd2VkUHJlZml4ZXM6aSxzdGFydE9mTGluZTpzLCRwb3NpdGlvbjptLiRmcm9tfSksYz1gaWRfJHtNYXRoLmZsb29yKDQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKSl9YDtlJiZ5KHtlZGl0b3I6dCxzdGF0ZTpkLHJhbmdlOmUucmFuZ2UsaXNBY3RpdmU6YS5hY3RpdmV9KSYmKCFifHxiKHtlZGl0b3I6dCxyYW5nZTplLnJhbmdlLHF1ZXJ5OmUucXVlcnksdGV4dDplLnRleHQsdHJhbnNhY3Rpb246bH0pKT8obnVsbD09PUEuZGlzbWlzc2VkUmFuZ2V8fCgoe21hdGNoOmUsZGlzbWlzc2VkUmFuZ2U6bixzdGF0ZTpyLHRyYW5zYWN0aW9uOm99KT0+IShudWxsPT12P3ZvaWQgMDp2KHtlZGl0b3I6dCxzdGF0ZTpyLHJhbmdlOm4sbWF0Y2g6ZSx0cmFuc2FjdGlvbjpvLGFsbG93U3BhY2VzOkN9KSkmJihDP2UucmFuZ2UuZnJvbT09PW4uZnJvbTplLnJhbmdlLmZyb209PT1uLmZyb20mJiFmdW5jdGlvbihlKXtyZXR1cm4hIWUuZG9jQ2hhbmdlZCYmZS5zdGVwcy5zb21lKGU9Pntjb25zdCB0PWUuc2xpY2U7aWYoIShudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnQpKXJldHVybiExO2NvbnN0IG49dC5jb250ZW50LnRleHRCZXR3ZWVuKDAsdC5jb250ZW50LnNpemUsIlxuIik7cmV0dXJuL1xzLy50ZXN0KG4pfSl9KG8pKSkoe21hdGNoOmUsZGlzbWlzc2VkUmFuZ2U6QS5kaXNtaXNzZWRSYW5nZSxzdGF0ZTpkLHRyYW5zYWN0aW9uOmx9KXx8KEEuZGlzbWlzc2VkUmFuZ2U9bnVsbCksbnVsbD09PUEuZGlzbWlzc2VkUmFuZ2U/KEEuYWN0aXZlPSEwLEEuZGVjb3JhdGlvbklkPWEuZGVjb3JhdGlvbklkP2EuZGVjb3JhdGlvbklkOmMsQS5yYW5nZT1lLnJhbmdlLEEucXVlcnk9ZS5xdWVyeSxBLnRleHQ9ZS50ZXh0KTpBLmFjdGl2ZT0hMSk6KGV8fChBLmRpc21pc3NlZFJhbmdlPW51bGwpLEEuYWN0aXZlPSExKX1lbHNlIEEuYWN0aXZlPSExO3JldHVybiBBLmFjdGl2ZXx8KEEuZGVjb3JhdGlvbklkPW51bGwsQS5yYW5nZT17ZnJvbTowLHRvOjB9LEEucXVlcnk9bnVsbCxBLnRleHQ9bnVsbCksQX19LHByb3BzOntoYW5kbGVLZXlEb3duKG4scil7dmFyIG8saTtjb25zdHthY3RpdmU6cyxyYW5nZTpsfT1BLmdldFN0YXRlKG4uc3RhdGUpO2lmKCFzKXJldHVybiExO2lmKCJFc2NhcGUiPT09ci5rZXl8fCJFc2MiPT09ci5rZXkpe2NvbnN0IGk9QS5nZXRTdGF0ZShuLnN0YXRlKTtyZXR1cm4gbnVsbD09KG89bnVsbD09Uz92b2lkIDA6Uy5vbktleURvd24pfHxvLmNhbGwoUyx7dmlldzpuLGV2ZW50OnIscmFuZ2U6aS5yYW5nZX0pLGZ1bmN0aW9uKG4scil7dmFyIG87dHJ5e2NvbnN0IHI9ZS5nZXRTdGF0ZShuLnN0YXRlKSxpPShudWxsPT1yP3ZvaWQgMDpyLmRlY29yYXRpb25JZCk/bi5kb20ucXVlcnlTZWxlY3RvcihgW2RhdGEtZGVjb3JhdGlvbi1pZD0iJHtyLmRlY29yYXRpb25JZH0iXWApOm51bGwscz17ZWRpdG9yOnQscmFuZ2U6KG51bGw9PXI/dm9pZCAwOnIucmFuZ2UpfHx7ZnJvbTowLHRvOjB9LHF1ZXJ5OihudWxsPT1yP3ZvaWQgMDpyLnF1ZXJ5KXx8bnVsbCx0ZXh0OihudWxsPT1yP3ZvaWQgMDpyLnRleHQpfHxudWxsLGl0ZW1zOltdLGNvbW1hbmQ6ZT0+cCh7ZWRpdG9yOnQscmFuZ2U6KG51bGw9PXI/dm9pZCAwOnIucmFuZ2UpfHx7ZnJvbTowLHRvOjB9LHByb3BzOmV9KSxkZWNvcmF0aW9uTm9kZTppLGNsaWVudFJlY3Q6Y2xpZW50UmVjdEZvcihuLGkpfTtudWxsPT0obz1udWxsPT1TP3ZvaWQgMDpTLm9uRXhpdCl8fG8uY2FsbChTLHMpfWNhdGNoe31jb25zdCBpPW4uc3RhdGUudHIuc2V0TWV0YShyLHtleGl0OiEwfSk7bi5kaXNwYXRjaChpKX0obixlKSwhMH1yZXR1cm4obnVsbD09KGk9bnVsbD09Uz92b2lkIDA6Uy5vbktleURvd24pP3ZvaWQgMDppLmNhbGwoUyx7dmlldzpuLGV2ZW50OnIscmFuZ2U6bH0pKXx8ITF9LGRlY29yYXRpb25zKGUpe2NvbnN0e2FjdGl2ZTp0LHJhbmdlOm4sZGVjb3JhdGlvbklkOnIscXVlcnk6b309QS5nZXRTdGF0ZShlKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBpPSEobnVsbD09bz92b2lkIDA6by5sZW5ndGgpLHM9W2FdO3JldHVybiBpJiZzLnB1c2goZCksRGVjb3JhdGlvblNldC5jcmVhdGUoZS5kb2MsW0RlY29yYXRpb24uaW5saW5lKG4uZnJvbSxuLnRvLHtub2RlTmFtZTpsLGNsYXNzOnMuam9pbigiICIpLCJkYXRhLWRlY29yYXRpb24taWQiOnIsImRhdGEtZGVjb3JhdGlvbi1jb250ZW50IjpjfSldKX19fSk7cmV0dXJuIEF9ZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnMoZSl7cmV0dXJuKGUub3B0aW9ucy5zdWdnZXN0aW9ucy5sZW5ndGg/ZS5vcHRpb25zLnN1Z2dlc3Rpb25zOltlLm9wdGlvbnMuc3VnZ2VzdGlvbl0pLm1hcCh0PT5mdW5jdGlvbih7ZWRpdG9yOmUsb3ZlcnJpZGVTdWdnZXN0aW9uT3B0aW9uczp0LGV4dGVuc2lvbk5hbWU6bixjaGFyOnI9IkAifSl7Y29uc3Qgbz1uZXcgUGx1Z2luS2V5O3JldHVybntlZGl0b3I6ZSxjaGFyOnIscGx1Z2luS2V5Om8sY29tbWFuZDooe2VkaXRvcjplLHJhbmdlOnQscHJvcHM6b30pPT57dmFyIGkscyxsO2NvbnN0IGE9ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi4kdG8ubm9kZUFmdGVyOyhudWxsPT0oaT1udWxsPT1hP3ZvaWQgMDphLnRleHQpP3ZvaWQgMDppLnN0YXJ0c1dpdGgoIiAiKSkmJih0LnRvKz0xKSxlLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQodCxbe3R5cGU6bixhdHRyczp7Li4ubyxtZW50aW9uU3VnZ2VzdGlvbkNoYXI6cn19LHt0eXBlOiJ0ZXh0Iix0ZXh0OiIgIn1dKS5ydW4oKSxudWxsPT0obD1udWxsPT0ocz1lLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpP3ZvaWQgMDpzLmdldFNlbGVjdGlvbigpKXx8bC5jb2xsYXBzZVRvRW5kKCl9LGFsbG93Oih7c3RhdGU6ZSxyYW5nZTp0fSk9Pntjb25zdCByPWUuZG9jLnJlc29sdmUodC5mcm9tKSxvPWUuc2NoZW1hLm5vZGVzW25dO3JldHVybiEhci5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKG8pfSwuLi50fX0oe2VkaXRvcjplLmVkaXRvcixvdmVycmlkZVN1Z2dlc3Rpb25PcHRpb25zOnQsZXh0ZW5zaW9uTmFtZTplLm5hbWUsY2hhcjp0LmNoYXJ9KSl9ZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbkZyb21DaGFyKGUsdCl7Y29uc3Qgbj1nZXRTdWdnZXN0aW9ucyhlKSxyPW4uZmluZChlPT5lLmNoYXI9PT10KTtyZXR1cm4gcnx8KG4ubGVuZ3RoP25bMF06bnVsbCl9dmFyIGduPW9uLmNyZWF0ZSh7bmFtZToibWVudGlvbiIscHJpb3JpdHk6MTAxLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e30scmVuZGVyVGV4dCh7bm9kZTplLHN1Z2dlc3Rpb246dH0pe3ZhciBuLHI7cmV0dXJuYCR7bnVsbCE9KG49bnVsbD09dD92b2lkIDA6dC5jaGFyKT9uOiJAIn0ke251bGwhPShyPWUuYXR0cnMubGFiZWwpP3I6ZS5hdHRycy5pZH1gfSxkZWxldGVUcmlnZ2VyV2l0aEJhY2tzcGFjZTohMSxyZW5kZXJIVE1MKHtvcHRpb25zOmUsbm9kZTp0LHN1Z2dlc3Rpb246bn0pe3ZhciByLG87cmV0dXJuWyJzcGFuIixtZXJnZUF0dHJpYnV0ZXModGhpcy5IVE1MQXR0cmlidXRlcyxlLkhUTUxBdHRyaWJ1dGVzKSxgJHtudWxsIT0ocj1udWxsPT1uP3ZvaWQgMDpuLmNoYXIpP3I6IkAifSR7bnVsbCE9KG89dC5hdHRycy5sYWJlbCk/bzp0LmF0dHJzLmlkfWBdfSxzdWdnZXN0aW9uczpbXSxzdWdnZXN0aW9uOnt9fSksZ3JvdXA6ImlubGluZSIsaW5saW5lOiEwLHNlbGVjdGFibGU6ITEsYXRvbTohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe2lkOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJkYXRhLWlkIikscmVuZGVySFRNTDplPT5lLmlkP3siZGF0YS1pZCI6ZS5pZH06e319LGxhYmVsOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJkYXRhLWxhYmVsIikscmVuZGVySFRNTDplPT5lLmxhYmVsP3siZGF0YS1sYWJlbCI6ZS5sYWJlbH06e319LG1lbnRpb25TdWdnZXN0aW9uQ2hhcjp7ZGVmYXVsdDoiQCIscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIikscmVuZGVySFRNTDplPT4oeyJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIjplLm1lbnRpb25TdWdnZXN0aW9uQ2hhcn0pfX0pLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOmBzcGFuW2RhdGEtdHlwZT0iJHt0aGlzLm5hbWV9Il1gfV19LHJlbmRlckhUTUwoe25vZGU6ZSxIVE1MQXR0cmlidXRlczp0fSl7Y29uc3Qgbj1nZXRTdWdnZXN0aW9uRnJvbUNoYXIodGhpcyxlLmF0dHJzLm1lbnRpb25TdWdnZXN0aW9uQ2hhcik7aWYodm9pZCAwIT09dGhpcy5vcHRpb25zLnJlbmRlckxhYmVsKXJldHVybiBjb25zb2xlLndhcm4oInJlbmRlckxhYmVsIGlzIGRlcHJlY2F0ZWQgdXNlIHJlbmRlclRleHQgYW5kIHJlbmRlckhUTUwgaW5zdGVhZCIpLFsic3BhbiIsbWVyZ2VBdHRyaWJ1dGVzKHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9LHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyx0KSx0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwoe29wdGlvbnM6dGhpcy5vcHRpb25zLG5vZGU6ZSxzdWdnZXN0aW9uOm59KV07Y29uc3Qgcj17Li4udGhpcy5vcHRpb25zfTtyLkhUTUxBdHRyaWJ1dGVzPW1lcmdlQXR0cmlidXRlcyh7ImRhdGEtdHlwZSI6dGhpcy5uYW1lfSx0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsdCk7Y29uc3Qgbz10aGlzLm9wdGlvbnMucmVuZGVySFRNTCh7b3B0aW9uczpyLG5vZGU6ZSxzdWdnZXN0aW9uOm59KTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG8/WyJzcGFuIixtZXJnZUF0dHJpYnV0ZXMoeyJkYXRhLXR5cGUiOnRoaXMubmFtZX0sdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQpLG9dOm99LC4uLmNyZWF0ZUlubGluZU1hcmtkb3duU3BlYyh7bm9kZU5hbWU6Im1lbnRpb24iLG5hbWU6IkAiLHNlbGZDbG9zaW5nOiEwLGFsbG93ZWRBdHRyaWJ1dGVzOlsiaWQiLCJsYWJlbCIse25hbWU6Im1lbnRpb25TdWdnZXN0aW9uQ2hhciIsc2tpcElmRGVmYXVsdDoiQCJ9XSxwYXJzZUF0dHJpYnV0ZXM6ZT0+e2NvbnN0IHQ9e30sbj0vKFx3Kyk9KD86IihbXiJdKikifCcoW14nXSopJykvZztsZXQgcj1uLmV4ZWMoZSk7Zm9yKDtudWxsIT09cjspe2NvbnN0WyxvLGksc109cixsPW51bGwhPWk/aTpzO3RbImNoYXIiPT09bz8ibWVudGlvblN1Z2dlc3Rpb25DaGFyIjpvXT1sLHI9bi5leGVjKGUpfXJldHVybiB0fSxzZXJpYWxpemVBdHRyaWJ1dGVzOmU9Pk9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoWyxlXSk9Pm51bGwhPWUpLm1hcCgoW2UsdF0pPT5gJHsibWVudGlvblN1Z2dlc3Rpb25DaGFyIj09PWU/ImNoYXIiOmV9PSIke3R9ImApLmpvaW4oIiAiKX0pLHJlbmRlclRleHQoe25vZGU6ZX0pe2NvbnN0IHQ9e29wdGlvbnM6dGhpcy5vcHRpb25zLG5vZGU6ZSxzdWdnZXN0aW9uOmdldFN1Z2dlc3Rpb25Gcm9tQ2hhcih0aGlzLGUuYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyKX07cmV0dXJuIHZvaWQgMCE9PXRoaXMub3B0aW9ucy5yZW5kZXJMYWJlbD8oY29uc29sZS53YXJuKCJyZW5kZXJMYWJlbCBpcyBkZXByZWNhdGVkIHVzZSByZW5kZXJUZXh0IGFuZCByZW5kZXJIVE1MIGluc3RlYWQiKSx0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwodCkpOnRoaXMub3B0aW9ucy5yZW5kZXJUZXh0KHQpfSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybntCYWNrc3BhY2U6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmNvbW1hbmQoKHt0cjplLHN0YXRlOnR9KT0+e2xldCBuPSExO2NvbnN0e3NlbGVjdGlvbjpyfT10LHtlbXB0eTpvLGFuY2hvcjppfT1yO2lmKCFvKXJldHVybiExO2xldCBzPW5ldyBOb2RlLGw9MDtyZXR1cm4gdC5kb2Mubm9kZXNCZXR3ZWVuKGktMSxpLChlLHQpPT57aWYoZS50eXBlLm5hbWU9PT10aGlzLm5hbWUpcmV0dXJuIG49ITAscz1lLGw9dCwhMX0pLG4mJmUuaW5zZXJ0VGV4dCh0aGlzLm9wdGlvbnMuZGVsZXRlVHJpZ2dlcldpdGhCYWNrc3BhY2U/IiI6cy5hdHRycy5tZW50aW9uU3VnZ2VzdGlvbkNoYXIsbCxsK3Mubm9kZVNpemUpLG59KX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybiBnZXRTdWdnZXN0aW9ucyh0aGlzKS5tYXAoU3VnZ2VzdGlvbil9fSkseW49Z247ZnVuY3Rpb24gZHJvcEN1cnNvcihlPXt9KXtyZXR1cm4gbmV3IFBsdWdpbih7dmlldzp0PT5uZXcgRHJvcEN1cnNvclZpZXcodCxlKX0pfWNsYXNzIERyb3BDdXJzb3JWaWV3e2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47dGhpcy5lZGl0b3JWaWV3PWUsdGhpcy5jdXJzb3JQb3M9bnVsbCx0aGlzLmVsZW1lbnQ9bnVsbCx0aGlzLnRpbWVvdXQ9LTEsdGhpcy53aWR0aD1udWxsIT09KG49dC53aWR0aCkmJnZvaWQgMCE9PW4/bjoxLHRoaXMuY29sb3I9ITE9PT10LmNvbG9yP3ZvaWQgMDp0LmNvbG9yfHwiYmxhY2siLHRoaXMuY2xhc3M9dC5jbGFzcyx0aGlzLmhhbmRsZXJzPVsiZHJhZ292ZXIiLCJkcmFnZW5kIiwiZHJvcCIsImRyYWdsZWF2ZSJdLm1hcCh0PT57bGV0IGhhbmRsZXI9ZT0+e3RoaXNbdF0oZSl9O3JldHVybiBlLmRvbS5hZGRFdmVudExpc3RlbmVyKHQsaGFuZGxlcikse25hbWU6dCxoYW5kbGVyOmhhbmRsZXJ9fSl9ZGVzdHJveSgpe3RoaXMuaGFuZGxlcnMuZm9yRWFjaCgoe25hbWU6ZSxoYW5kbGVyOnR9KT0+dGhpcy5lZGl0b3JWaWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdCkpfXVwZGF0ZShlLHQpe251bGwhPXRoaXMuY3Vyc29yUG9zJiZ0LmRvYyE9ZS5zdGF0ZS5kb2MmJih0aGlzLmN1cnNvclBvcz5lLnN0YXRlLmRvYy5jb250ZW50LnNpemU/dGhpcy5zZXRDdXJzb3IobnVsbCk6dGhpcy51cGRhdGVPdmVybGF5KCkpfXNldEN1cnNvcihlKXtlIT10aGlzLmN1cnNvclBvcyYmKHRoaXMuY3Vyc29yUG9zPWUsbnVsbD09ZT8odGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmVsZW1lbnQ9bnVsbCk6dGhpcy51cGRhdGVPdmVybGF5KCkpfXVwZGF0ZU92ZXJsYXkoKXtsZXQgZSx0PXRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MucmVzb2x2ZSh0aGlzLmN1cnNvclBvcyksbj0hdC5wYXJlbnQuaW5saW5lQ29udGVudCxyPXRoaXMuZWRpdG9yVmlldy5kb20sbz1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9by53aWR0aC9yLm9mZnNldFdpZHRoLHM9by5oZWlnaHQvci5vZmZzZXRIZWlnaHQ7aWYobil7bGV0IG49dC5ub2RlQmVmb3JlLHI9dC5ub2RlQWZ0ZXI7aWYobnx8cil7bGV0IHQ9dGhpcy5lZGl0b3JWaWV3Lm5vZGVET00odGhpcy5jdXJzb3JQb3MtKG4/bi5ub2RlU2l6ZTowKSk7aWYodCl7bGV0IG89dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPW4/by5ib3R0b206by50b3A7biYmciYmKGk9KGkrdGhpcy5lZGl0b3JWaWV3Lm5vZGVET00odGhpcy5jdXJzb3JQb3MpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkvMik7bGV0IGw9dGhpcy53aWR0aC8yKnM7ZT17bGVmdDpvLmxlZnQscmlnaHQ6by5yaWdodCx0b3A6aS1sLGJvdHRvbTppK2x9fX19aWYoIWUpe2xldCB0PXRoaXMuZWRpdG9yVmlldy5jb29yZHNBdFBvcyh0aGlzLmN1cnNvclBvcyksbj10aGlzLndpZHRoLzIqaTtlPXtsZWZ0OnQubGVmdC1uLHJpZ2h0OnQubGVmdCtuLHRvcDp0LnRvcCxib3R0b206dC5ib3R0b219fWxldCBsLGEsYz10aGlzLmVkaXRvclZpZXcuZG9tLm9mZnNldFBhcmVudDtpZih0aGlzLmVsZW1lbnR8fCh0aGlzLmVsZW1lbnQ9Yy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSksdGhpcy5jbGFzcyYmKHRoaXMuZWxlbWVudC5jbGFzc05hbWU9dGhpcy5jbGFzcyksdGhpcy5lbGVtZW50LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNTA7IHBvaW50ZXItZXZlbnRzOiBub25lOyIsdGhpcy5jb2xvciYmKHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5jb2xvcikpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJwcm9zZW1pcnJvci1kcm9wY3Vyc29yLWJsb2NrIixuKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicHJvc2VtaXJyb3ItZHJvcGN1cnNvci1pbmxpbmUiLCFuKSwhY3x8Yz09ZG9jdW1lbnQuYm9keSYmInN0YXRpYyI9PWdldENvbXB1dGVkU3R5bGUoYykucG9zaXRpb24pbD0tcGFnZVhPZmZzZXQsYT0tcGFnZVlPZmZzZXQ7ZWxzZXtsZXQgZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9ZS53aWR0aC9jLm9mZnNldFdpZHRoLG49ZS5oZWlnaHQvYy5vZmZzZXRIZWlnaHQ7bD1lLmxlZnQtYy5zY3JvbGxMZWZ0KnQsYT1lLnRvcC1jLnNjcm9sbFRvcCpufXRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0PShlLmxlZnQtbCkvaSsicHgiLHRoaXMuZWxlbWVudC5zdHlsZS50b3A9KGUudG9wLWEpL3MrInB4Iix0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9KGUucmlnaHQtZS5sZWZ0KS9pKyJweCIsdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD0oZS5ib3R0b20tZS50b3ApL3MrInB4In1zY2hlZHVsZVJlbW92YWwoZSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksdGhpcy50aW1lb3V0PXNldFRpbWVvdXQoKCk9PnRoaXMuc2V0Q3Vyc29yKG51bGwpLGUpfWRyYWdvdmVyKGUpe2lmKCF0aGlzLmVkaXRvclZpZXcuZWRpdGFibGUpcmV0dXJuO2xldCB0PXRoaXMuZWRpdG9yVmlldy5wb3NBdENvb3Jkcyh7bGVmdDplLmNsaWVudFgsdG9wOmUuY2xpZW50WX0pLG49dCYmdC5pbnNpZGU+PTAmJnRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2Mubm9kZUF0KHQuaW5zaWRlKSxyPW4mJm4udHlwZS5zcGVjLmRpc2FibGVEcm9wQ3Vyc29yLG89ImZ1bmN0aW9uIj09dHlwZW9mIHI/cih0aGlzLmVkaXRvclZpZXcsdCxlKTpyO2lmKHQmJiFvKXtsZXQgZT10LnBvcztpZih0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcmJnRoaXMuZWRpdG9yVmlldy5kcmFnZ2luZy5zbGljZSl7bGV0IHQ9ZHJvcFBvaW50KHRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MsZSx0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcuc2xpY2UpO251bGwhPXQmJihlPXQpfXRoaXMuc2V0Q3Vyc29yKGUpLHRoaXMuc2NoZWR1bGVSZW1vdmFsKDVlMyl9fWRyYWdlbmQoKXt0aGlzLnNjaGVkdWxlUmVtb3ZhbCgyMCl9ZHJvcCgpe3RoaXMuc2NoZWR1bGVSZW1vdmFsKDIwKX1kcmFnbGVhdmUoZSl7dGhpcy5lZGl0b3JWaWV3LmRvbS5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHx0aGlzLnNldEN1cnNvcihudWxsKX19Y2xhc3MgR2FwQ3Vyc29yIGV4dGVuZHMgU2VsZWN0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsZSl9bWFwKGUsdCl7bGV0IG49ZS5yZXNvbHZlKHQubWFwKHRoaXMuaGVhZCkpO3JldHVybiBHYXBDdXJzb3IudmFsaWQobik/bmV3IEdhcEN1cnNvcihuKTpTZWxlY3Rpb24ubmVhcihuKX1jb250ZW50KCl7cmV0dXJuIFNsaWNlLmVtcHR5fWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgR2FwQ3Vyc29yJiZlLmhlYWQ9PXRoaXMuaGVhZH10b0pTT04oKXtyZXR1cm57dHlwZToiZ2FwY3Vyc29yIixwb3M6dGhpcy5oZWFkfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQucG9zKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBHYXBDdXJzb3IuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEdhcEN1cnNvcihlLnJlc29sdmUodC5wb3MpKX1nZXRCb29rbWFyaygpe3JldHVybiBuZXcgR2FwQm9va21hcmsodGhpcy5hbmNob3IpfXN0YXRpYyB2YWxpZChlKXtsZXQgdD1lLnBhcmVudDtpZih0LmlubGluZUNvbnRlbnR8fCFmdW5jdGlvbihlKXtmb3IobGV0IHQ9ZS5kZXB0aDt0Pj0wO3QtLSl7bGV0IG49ZS5pbmRleCh0KSxyPWUubm9kZSh0KTtpZigwIT1uKWZvcihsZXQgZT1yLmNoaWxkKG4tMSk7O2U9ZS5sYXN0Q2hpbGQpe2lmKDA9PWUuY2hpbGRDb3VudCYmIWUuaW5saW5lQ29udGVudHx8bmVlZHNHYXAoZS50eXBlKSlyZXR1cm4hMDtpZihlLmlubGluZUNvbnRlbnQpcmV0dXJuITF9ZWxzZSBpZihyLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITB9cmV0dXJuITB9KGUpfHwhZnVuY3Rpb24oZSl7Zm9yKGxldCB0PWUuZGVwdGg7dD49MDt0LS0pe2xldCBuPWUuaW5kZXhBZnRlcih0KSxyPWUubm9kZSh0KTtpZihuIT1yLmNoaWxkQ291bnQpZm9yKGxldCBlPXIuY2hpbGQobik7O2U9ZS5maXJzdENoaWxkKXtpZigwPT1lLmNoaWxkQ291bnQmJiFlLmlubGluZUNvbnRlbnR8fG5lZWRzR2FwKGUudHlwZSkpcmV0dXJuITA7aWYoZS5pbmxpbmVDb250ZW50KXJldHVybiExfWVsc2UgaWYoci50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiEwfXJldHVybiEwfShlKSlyZXR1cm4hMTtsZXQgbj10LnR5cGUuc3BlYy5hbGxvd0dhcEN1cnNvcjtpZihudWxsIT1uKXJldHVybiBuO2xldCByPXQuY29udGVudE1hdGNoQXQoZS5pbmRleCgpKS5kZWZhdWx0VHlwZTtyZXR1cm4gciYmci5pc1RleHRibG9ja31zdGF0aWMgZmluZEdhcEN1cnNvckZyb20oZSx0LG49ITEpe2U6Zm9yKDs7KXtpZighbiYmR2FwQ3Vyc29yLnZhbGlkKGUpKXJldHVybiBlO2xldCByPWUucG9zLG89bnVsbDtmb3IobGV0IG49ZS5kZXB0aDs7bi0tKXtsZXQgaT1lLm5vZGUobik7aWYodD4wP2UuaW5kZXhBZnRlcihuKTxpLmNoaWxkQ291bnQ6ZS5pbmRleChuKT4wKXtvPWkuY2hpbGQodD4wP2UuaW5kZXhBZnRlcihuKTplLmluZGV4KG4pLTEpO2JyZWFrfWlmKDA9PW4pcmV0dXJuIG51bGw7cis9dDtsZXQgcz1lLmRvYy5yZXNvbHZlKHIpO2lmKEdhcEN1cnNvci52YWxpZChzKSlyZXR1cm4gc31mb3IoOzspe2xldCBpPXQ+MD9vLmZpcnN0Q2hpbGQ6by5sYXN0Q2hpbGQ7aWYoIWkpe2lmKG8uaXNBdG9tJiYhby5pc1RleHQmJiFOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShvKSl7ZT1lLmRvYy5yZXNvbHZlKHIrby5ub2RlU2l6ZSp0KSxuPSExO2NvbnRpbnVlIGV9YnJlYWt9bz1pLHIrPXQ7bGV0IHM9ZS5kb2MucmVzb2x2ZShyKTtpZihHYXBDdXJzb3IudmFsaWQocykpcmV0dXJuIHN9cmV0dXJuIG51bGx9fX1HYXBDdXJzb3IucHJvdG90eXBlLnZpc2libGU9ITEsR2FwQ3Vyc29yLmZpbmRGcm9tPUdhcEN1cnNvci5maW5kR2FwQ3Vyc29yRnJvbSxTZWxlY3Rpb24uanNvbklEKCJnYXBjdXJzb3IiLEdhcEN1cnNvcik7Y2xhc3MgR2FwQm9va21hcmt7Y29uc3RydWN0b3IoZSl7dGhpcy5wb3M9ZX1tYXAoZSl7cmV0dXJuIG5ldyBHYXBCb29rbWFyayhlLm1hcCh0aGlzLnBvcykpfXJlc29sdmUoZSl7bGV0IHQ9ZS5yZXNvbHZlKHRoaXMucG9zKTtyZXR1cm4gR2FwQ3Vyc29yLnZhbGlkKHQpP25ldyBHYXBDdXJzb3IodCk6U2VsZWN0aW9uLm5lYXIodCl9fWZ1bmN0aW9uIG5lZWRzR2FwKGUpe3JldHVybiBlLmlzQXRvbXx8ZS5zcGVjLmlzb2xhdGluZ3x8ZS5zcGVjLmNyZWF0ZUdhcEN1cnNvcn1jb25zdCBrbj1rZXlkb3duSGFuZGxlcih7QXJyb3dMZWZ0OmFycm93JDMoImhvcml6IiwtMSksQXJyb3dSaWdodDphcnJvdyQzKCJob3JpeiIsMSksQXJyb3dVcDphcnJvdyQzKCJ2ZXJ0IiwtMSksQXJyb3dEb3duOmFycm93JDMoInZlcnQiLDEpfSk7ZnVuY3Rpb24gYXJyb3ckMyhlLHQpe2NvbnN0IG49InZlcnQiPT1lP3Q+MD8iZG93biI6InVwIjp0PjA/InJpZ2h0IjoibGVmdCI7cmV0dXJuIGZ1bmN0aW9uKGUscixvKXtsZXQgaT1lLnNlbGVjdGlvbixzPXQ+MD9pLiR0bzppLiRmcm9tLGw9aS5lbXB0eTtpZihpIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbil7aWYoIW8uZW5kT2ZUZXh0YmxvY2sobil8fDA9PXMuZGVwdGgpcmV0dXJuITE7bD0hMSxzPWUuZG9jLnJlc29sdmUodD4wP3MuYWZ0ZXIoKTpzLmJlZm9yZSgpKX1sZXQgYT1HYXBDdXJzb3IuZmluZEdhcEN1cnNvckZyb20ocyx0LGwpO3JldHVybiEhYSYmKHImJnIoZS50ci5zZXRTZWxlY3Rpb24obmV3IEdhcEN1cnNvcihhKSkpLCEwKX19ZnVuY3Rpb24gaGFuZGxlQ2xpY2soZSx0LG4pe2lmKCFlfHwhZS5lZGl0YWJsZSlyZXR1cm4hMTtsZXQgcj1lLnN0YXRlLmRvYy5yZXNvbHZlKHQpO2lmKCFHYXBDdXJzb3IudmFsaWQocikpcmV0dXJuITE7bGV0IG89ZS5wb3NBdENvb3Jkcyh7bGVmdDpuLmNsaWVudFgsdG9wOm4uY2xpZW50WX0pO3JldHVybiEobyYmby5pbnNpZGU+LTEmJk5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGUuc3RhdGUuZG9jLm5vZGVBdChvLmluc2lkZSkpKSYmKGUuZGlzcGF0Y2goZS5zdGF0ZS50ci5zZXRTZWxlY3Rpb24obmV3IEdhcEN1cnNvcihyKSkpLCEwKX1mdW5jdGlvbiBiZWZvcmVpbnB1dChlLHQpe2lmKCJpbnNlcnRDb21wb3NpdGlvblRleHQiIT10LmlucHV0VHlwZXx8IShlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEdhcEN1cnNvcikpcmV0dXJuITE7bGV0eyRmcm9tOm59PWUuc3RhdGUuc2VsZWN0aW9uLHI9bi5wYXJlbnQuY29udGVudE1hdGNoQXQobi5pbmRleCgpKS5maW5kV3JhcHBpbmcoZS5zdGF0ZS5zY2hlbWEubm9kZXMudGV4dCk7aWYoIXIpcmV0dXJuITE7bGV0IG89RnJhZ21lbnQuZW1wdHk7Zm9yKGxldCBlPXIubGVuZ3RoLTE7ZT49MDtlLS0pbz1GcmFnbWVudC5mcm9tKHJbZV0uY3JlYXRlQW5kRmlsbChudWxsLG8pKTtsZXQgaT1lLnN0YXRlLnRyLnJlcGxhY2Uobi5wb3Msbi5wb3MsbmV3IFNsaWNlKG8sMCwwKSk7cmV0dXJuIGkuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24ubmVhcihpLmRvYy5yZXNvbHZlKG4ucG9zKzEpKSksZS5kaXNwYXRjaChpKSwhMX1mdW5jdGlvbiBkcmF3R2FwQ3Vyc29yKGUpe2lmKCEoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBHYXBDdXJzb3IpKXJldHVybiBudWxsO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0iUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIixEZWNvcmF0aW9uU2V0LmNyZWF0ZShlLmRvYyxbRGVjb3JhdGlvbi53aWRnZXQoZS5zZWxlY3Rpb24uaGVhZCx0LHtrZXk6ImdhcGN1cnNvciJ9KV0pfXZhciB3bj0yMDAsUm9wZVNlcXVlbmNlPWZ1bmN0aW9uKCl7fTtSb3BlU2VxdWVuY2UucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGg/KGU9Um9wZVNlcXVlbmNlLmZyb20oZSksIXRoaXMubGVuZ3RoJiZlfHxlLmxlbmd0aDx3biYmdGhpcy5sZWFmQXBwZW5kKGUpfHx0aGlzLmxlbmd0aDx3biYmZS5sZWFmUHJlcGVuZCh0aGlzKXx8dGhpcy5hcHBlbmRJbm5lcihlKSk6dGhpc30sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5wcmVwZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD9Sb3BlU2VxdWVuY2UuZnJvbShlKS5hcHBlbmQodGhpcyk6dGhpc30sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5hcHBlbmRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHZuKHRoaXMsZSl9LFJvcGVTZXF1ZW5jZS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09dCYmKHQ9dGhpcy5sZW5ndGgpLGU+PXQ/Um9wZVNlcXVlbmNlLmVtcHR5OnRoaXMuc2xpY2VJbm5lcihNYXRoLm1heCgwLGUpLE1hdGgubWluKHRoaXMubGVuZ3RoLHQpKX0sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7aWYoIShlPDB8fGU+PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpcy5nZXRJbm5lcihlKX0sUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj10aGlzLmxlbmd0aCksdDw9bj90aGlzLmZvckVhY2hJbm5lcihlLHQsbiwwKTp0aGlzLmZvckVhY2hJbnZlcnRlZElubmVyKGUsdCxuLDApfSxSb3BlU2VxdWVuY2UucHJvdG90eXBlLm1hcD1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49dGhpcy5sZW5ndGgpO3ZhciByPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtyZXR1cm4gci5wdXNoKGUodCxuKSl9LHQsbikscn0sUm9wZVNlcXVlbmNlLmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSb3BlU2VxdWVuY2U/ZTplJiZlLmxlbmd0aD9uZXcgYm4oZSk6Um9wZVNlcXVlbmNlLmVtcHR5fTt2YXIgYm49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gTGVhZih0KXtlLmNhbGwodGhpcyksdGhpcy52YWx1ZXM9dH1lJiYoTGVhZi5fX3Byb3RvX189ZSksTGVhZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksTGVhZi5wcm90b3R5cGUuY29uc3RydWN0b3I9TGVhZjt2YXIgdD17bGVuZ3RoOntjb25maWd1cmFibGU6ITB9LGRlcHRoOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gTGVhZi5wcm90b3R5cGUuZmxhdHRlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlc30sTGVhZi5wcm90b3R5cGUuc2xpY2VJbm5lcj1mdW5jdGlvbihlLHQpe3JldHVybiAwPT1lJiZ0PT10aGlzLmxlbmd0aD90aGlzOm5ldyBMZWFmKHRoaXMudmFsdWVzLnNsaWNlKGUsdCkpfSxMZWFmLnByb3RvdHlwZS5nZXRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy52YWx1ZXNbZV19LExlYWYucHJvdG90eXBlLmZvckVhY2hJbm5lcj1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89dDtvPG47bysrKWlmKCExPT09ZSh0aGlzLnZhbHVlc1tvXSxyK28pKXJldHVybiExfSxMZWFmLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lcj1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89dC0xO28+PW47by0tKWlmKCExPT09ZSh0aGlzLnZhbHVlc1tvXSxyK28pKXJldHVybiExfSxMZWFmLnByb3RvdHlwZS5sZWFmQXBwZW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoK2UubGVuZ3RoPD13bilyZXR1cm4gbmV3IExlYWYodGhpcy52YWx1ZXMuY29uY2F0KGUuZmxhdHRlbigpKSl9LExlYWYucHJvdG90eXBlLmxlYWZQcmVwZW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoK2UubGVuZ3RoPD13bilyZXR1cm4gbmV3IExlYWYoZS5mbGF0dGVuKCkuY29uY2F0KHRoaXMudmFsdWVzKSl9LHQubGVuZ3RoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGh9LHQuZGVwdGguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKExlYWYucHJvdG90eXBlLHQpLExlYWZ9KFJvcGVTZXF1ZW5jZSk7Um9wZVNlcXVlbmNlLmVtcHR5PW5ldyBibihbXSk7dmFyIHZuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIEFwcGVuZCh0LG4pe2UuY2FsbCh0aGlzKSx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PW4sdGhpcy5sZW5ndGg9dC5sZW5ndGgrbi5sZW5ndGgsdGhpcy5kZXB0aD1NYXRoLm1heCh0LmRlcHRoLG4uZGVwdGgpKzF9cmV0dXJuIGUmJihBcHBlbmQuX19wcm90b19fPWUpLEFwcGVuZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksQXBwZW5kLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BcHBlbmQsQXBwZW5kLnByb3RvdHlwZS5mbGF0dGVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVmdC5mbGF0dGVuKCkuY29uY2F0KHRoaXMucmlnaHQuZmxhdHRlbigpKX0sQXBwZW5kLnByb3RvdHlwZS5nZXRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLmxlZnQubGVuZ3RoP3RoaXMubGVmdC5nZXQoZSk6dGhpcy5yaWdodC5nZXQoZS10aGlzLmxlZnQubGVuZ3RoKX0sQXBwZW5kLnByb3RvdHlwZS5mb3JFYWNoSW5uZXI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcy5sZWZ0Lmxlbmd0aDtyZXR1cm4hKHQ8byYmITE9PT10aGlzLmxlZnQuZm9yRWFjaElubmVyKGUsdCxNYXRoLm1pbihuLG8pLHIpKSYmKCEobj5vJiYhMT09PXRoaXMucmlnaHQuZm9yRWFjaElubmVyKGUsTWF0aC5tYXgodC1vLDApLE1hdGgubWluKHRoaXMubGVuZ3RoLG4pLW8scitvKSkmJnZvaWQgMCl9LEFwcGVuZC5wcm90b3R5cGUuZm9yRWFjaEludmVydGVkSW5uZXI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcy5sZWZ0Lmxlbmd0aDtyZXR1cm4hKHQ+byYmITE9PT10aGlzLnJpZ2h0LmZvckVhY2hJbnZlcnRlZElubmVyKGUsdC1vLE1hdGgubWF4KG4sbyktbyxyK28pKSYmKCEobjxvJiYhMT09PXRoaXMubGVmdC5mb3JFYWNoSW52ZXJ0ZWRJbm5lcihlLE1hdGgubWluKHQsbyksbixyKSkmJnZvaWQgMCl9LEFwcGVuZC5wcm90b3R5cGUuc2xpY2VJbm5lcj1mdW5jdGlvbihlLHQpe2lmKDA9PWUmJnQ9PXRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3ZhciBuPXRoaXMubGVmdC5sZW5ndGg7cmV0dXJuIHQ8PW4/dGhpcy5sZWZ0LnNsaWNlKGUsdCk6ZT49bj90aGlzLnJpZ2h0LnNsaWNlKGUtbix0LW4pOnRoaXMubGVmdC5zbGljZShlLG4pLmFwcGVuZCh0aGlzLnJpZ2h0LnNsaWNlKDAsdC1uKSl9LEFwcGVuZC5wcm90b3R5cGUubGVhZkFwcGVuZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnJpZ2h0LmxlYWZBcHBlbmQoZSk7aWYodClyZXR1cm4gbmV3IEFwcGVuZCh0aGlzLmxlZnQsdCl9LEFwcGVuZC5wcm90b3R5cGUubGVhZlByZXBlbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZWZ0LmxlYWZQcmVwZW5kKGUpO2lmKHQpcmV0dXJuIG5ldyBBcHBlbmQodCx0aGlzLnJpZ2h0KX0sQXBwZW5kLnByb3RvdHlwZS5hcHBlbmRJbm5lcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZWZ0LmRlcHRoPj1NYXRoLm1heCh0aGlzLnJpZ2h0LmRlcHRoLGUuZGVwdGgpKzE/bmV3IEFwcGVuZCh0aGlzLmxlZnQsbmV3IEFwcGVuZCh0aGlzLnJpZ2h0LGUpKTpuZXcgQXBwZW5kKHRoaXMsZSl9LEFwcGVuZH0oUm9wZVNlcXVlbmNlKTtjbGFzcyBCcmFuY2h7Y29uc3RydWN0b3IoZSx0KXt0aGlzLml0ZW1zPWUsdGhpcy5ldmVudENvdW50PXR9cG9wRXZlbnQoZSx0KXtpZigwPT10aGlzLmV2ZW50Q291bnQpcmV0dXJuIG51bGw7bGV0IG4scixvPXRoaXMuaXRlbXMubGVuZ3RoO2Zvcig7O28tLSl7aWYodGhpcy5pdGVtcy5nZXQoby0xKS5zZWxlY3Rpb24pey0tbzticmVha319dCYmKG49dGhpcy5yZW1hcHBpbmcobyx0aGlzLml0ZW1zLmxlbmd0aCkscj1uLm1hcHMubGVuZ3RoKTtsZXQgaSxzLGw9ZS50cixhPVtdLGM9W107cmV0dXJuIHRoaXMuaXRlbXMuZm9yRWFjaCgoZSx0KT0+e2lmKCFlLnN0ZXApcmV0dXJuIG58fChuPXRoaXMucmVtYXBwaW5nKG8sdCsxKSxyPW4ubWFwcy5sZW5ndGgpLHItLSx2b2lkIGMucHVzaChlKTtpZihuKXtjLnB1c2gobmV3IEl0ZW0oZS5tYXApKTtsZXQgdCxvPWUuc3RlcC5tYXAobi5zbGljZShyKSk7byYmbC5tYXliZVN0ZXAobykuZG9jJiYodD1sLm1hcHBpbmcubWFwc1tsLm1hcHBpbmcubWFwcy5sZW5ndGgtMV0sYS5wdXNoKG5ldyBJdGVtKHQsdm9pZCAwLHZvaWQgMCxhLmxlbmd0aCtjLmxlbmd0aCkpKSxyLS0sdCYmbi5hcHBlbmRNYXAodCxyKX1lbHNlIGwubWF5YmVTdGVwKGUuc3RlcCk7cmV0dXJuIGUuc2VsZWN0aW9uPyhpPW4/ZS5zZWxlY3Rpb24ubWFwKG4uc2xpY2UocikpOmUuc2VsZWN0aW9uLHM9bmV3IEJyYW5jaCh0aGlzLml0ZW1zLnNsaWNlKDAsbykuYXBwZW5kKGMucmV2ZXJzZSgpLmNvbmNhdChhKSksdGhpcy5ldmVudENvdW50LTEpLCExKTp2b2lkIDB9LHRoaXMuaXRlbXMubGVuZ3RoLDApLHtyZW1haW5pbmc6cyx0cmFuc2Zvcm06bCxzZWxlY3Rpb246aX19YWRkVHJhbnNmb3JtKGUsdCxuLHIpe2xldCBvPVtdLGk9dGhpcy5ldmVudENvdW50LHM9dGhpcy5pdGVtcyxsPSFyJiZzLmxlbmd0aD9zLmdldChzLmxlbmd0aC0xKTpudWxsO2ZvcihsZXQgbj0wO248ZS5zdGVwcy5sZW5ndGg7bisrKXtsZXQgYSxjPWUuc3RlcHNbbl0uaW52ZXJ0KGUuZG9jc1tuXSksZD1uZXcgSXRlbShlLm1hcHBpbmcubWFwc1tuXSxjLHQpOyhhPWwmJmwubWVyZ2UoZCkpJiYoZD1hLG4/by5wb3AoKTpzPXMuc2xpY2UoMCxzLmxlbmd0aC0xKSksby5wdXNoKGQpLHQmJihpKyssdD12b2lkIDApLHJ8fChsPWQpfWxldCBhPWktbi5kZXB0aDtyZXR1cm4gYT54biYmKHM9ZnVuY3Rpb24oZSx0KXtsZXQgbjtyZXR1cm4gZS5mb3JFYWNoKChlLHIpPT57aWYoZS5zZWxlY3Rpb24mJjA9PXQtLSlyZXR1cm4gbj1yLCExfSksZS5zbGljZShuKX0ocyxhKSxpLT1hKSxuZXcgQnJhbmNoKHMuYXBwZW5kKG8pLGkpfXJlbWFwcGluZyhlLHQpe2xldCBuPW5ldyBNYXBwaW5nO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2goKHQscik9PntsZXQgbz1udWxsIT10Lm1pcnJvck9mZnNldCYmci10Lm1pcnJvck9mZnNldD49ZT9uLm1hcHMubGVuZ3RoLXQubWlycm9yT2Zmc2V0OnZvaWQgMDtuLmFwcGVuZE1hcCh0Lm1hcCxvKX0sZSx0KSxufWFkZE1hcHMoZSl7cmV0dXJuIDA9PXRoaXMuZXZlbnRDb3VudD90aGlzOm5ldyBCcmFuY2godGhpcy5pdGVtcy5hcHBlbmQoZS5tYXAoZT0+bmV3IEl0ZW0oZSkpKSx0aGlzLmV2ZW50Q291bnQpfXJlYmFzZWQoZSx0KXtpZighdGhpcy5ldmVudENvdW50KXJldHVybiB0aGlzO2xldCBuPVtdLHI9TWF0aC5tYXgoMCx0aGlzLml0ZW1zLmxlbmd0aC10KSxvPWUubWFwcGluZyxpPWUuc3RlcHMubGVuZ3RoLHM9dGhpcy5ldmVudENvdW50O3RoaXMuaXRlbXMuZm9yRWFjaChlPT57ZS5zZWxlY3Rpb24mJnMtLX0scik7bGV0IGw9dDt0aGlzLml0ZW1zLmZvckVhY2godD0+e2xldCByPW8uZ2V0TWlycm9yKC0tbCk7aWYobnVsbD09cilyZXR1cm47aT1NYXRoLm1pbihpLHIpO2xldCBhPW8ubWFwc1tyXTtpZih0LnN0ZXApe2xldCBpPWUuc3RlcHNbcl0uaW52ZXJ0KGUuZG9jc1tyXSksYz10LnNlbGVjdGlvbiYmdC5zZWxlY3Rpb24ubWFwKG8uc2xpY2UobCsxLHIpKTtjJiZzKyssbi5wdXNoKG5ldyBJdGVtKGEsaSxjKSl9ZWxzZSBuLnB1c2gobmV3IEl0ZW0oYSkpfSxyKTtsZXQgYT1bXTtmb3IobGV0IGU9dDtlPGk7ZSsrKWEucHVzaChuZXcgSXRlbShvLm1hcHNbZV0pKTtsZXQgYz10aGlzLml0ZW1zLnNsaWNlKDAscikuYXBwZW5kKGEpLmFwcGVuZChuKSxkPW5ldyBCcmFuY2goYyxzKTtyZXR1cm4gZC5lbXB0eUl0ZW1Db3VudCgpPjUwMCYmKGQ9ZC5jb21wcmVzcyh0aGlzLml0ZW1zLmxlbmd0aC1uLmxlbmd0aCkpLGR9ZW1wdHlJdGVtQ291bnQoKXtsZXQgZT0wO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2godD0+e3Quc3RlcHx8ZSsrfSksZX1jb21wcmVzcyhlPXRoaXMuaXRlbXMubGVuZ3RoKXtsZXQgdD10aGlzLnJlbWFwcGluZygwLGUpLG49dC5tYXBzLmxlbmd0aCxyPVtdLG89MDtyZXR1cm4gdGhpcy5pdGVtcy5mb3JFYWNoKChpLHMpPT57aWYocz49ZSlyLnB1c2goaSksaS5zZWxlY3Rpb24mJm8rKztlbHNlIGlmKGkuc3RlcCl7bGV0IGU9aS5zdGVwLm1hcCh0LnNsaWNlKG4pKSxzPWUmJmUuZ2V0TWFwKCk7aWYobi0tLHMmJnQuYXBwZW5kTWFwKHMsbiksZSl7bGV0IGw9aS5zZWxlY3Rpb24mJmkuc2VsZWN0aW9uLm1hcCh0LnNsaWNlKG4pKTtsJiZvKys7bGV0IGEsYz1uZXcgSXRlbShzLmludmVydCgpLGUsbCksZD1yLmxlbmd0aC0xOyhhPXIubGVuZ3RoJiZyW2RdLm1lcmdlKGMpKT9yW2RdPWE6ci5wdXNoKGMpfX1lbHNlIGkubWFwJiZuLS19LHRoaXMuaXRlbXMubGVuZ3RoLDApLG5ldyBCcmFuY2goUm9wZVNlcXVlbmNlLmZyb20oci5yZXZlcnNlKCkpLG8pfX1CcmFuY2guZW1wdHk9bmV3IEJyYW5jaChSb3BlU2VxdWVuY2UuZW1wdHksMCk7Y2xhc3MgSXRlbXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLm1hcD1lLHRoaXMuc3RlcD10LHRoaXMuc2VsZWN0aW9uPW4sdGhpcy5taXJyb3JPZmZzZXQ9cn1tZXJnZShlKXtpZih0aGlzLnN0ZXAmJmUuc3RlcCYmIWUuc2VsZWN0aW9uKXtsZXQgdD1lLnN0ZXAubWVyZ2UodGhpcy5zdGVwKTtpZih0KXJldHVybiBuZXcgSXRlbSh0LmdldE1hcCgpLmludmVydCgpLHQsdGhpcy5zZWxlY3Rpb24pfX19Y2xhc3MgSGlzdG9yeVN0YXRle2NvbnN0cnVjdG9yKGUsdCxuLHIsbyl7dGhpcy5kb25lPWUsdGhpcy51bmRvbmU9dCx0aGlzLnByZXZSYW5nZXM9bix0aGlzLnByZXZUaW1lPXIsdGhpcy5wcmV2Q29tcG9zaXRpb249b319Y29uc3QgeG49MjA7ZnVuY3Rpb24gcmFuZ2VzRm9yKGUpe2xldCB0PVtdO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTAmJjA9PXQubGVuZ3RoO24tLSllW25dLmZvckVhY2goKGUsbixyLG8pPT50LnB1c2gocixvKSk7cmV0dXJuIHR9ZnVuY3Rpb24gbWFwUmFuZ2VzKGUsdCl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IG49W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKz0yKXtsZXQgbz10Lm1hcChlW3JdLDEpLGk9dC5tYXAoZVtyKzFdLC0xKTtvPD1pJiZuLnB1c2gobyxpKX1yZXR1cm4gbn1sZXQgU249ITEsVG49bnVsbDtmdW5jdGlvbiBtdXN0UHJlc2VydmVJdGVtcyhlKXtsZXQgdD1lLnBsdWdpbnM7aWYoVG4hPXQpe1NuPSExLFRuPXQ7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5zcGVjLmhpc3RvcnlQcmVzZXJ2ZUl0ZW1zKXtTbj0hMDticmVha319cmV0dXJuIFNufWNvbnN0IENuPW5ldyBQbHVnaW5LZXkoImhpc3RvcnkiKSxNbj1uZXcgUGx1Z2luS2V5KCJjbG9zZUhpc3RvcnkiKTtmdW5jdGlvbiBoaXN0b3J5KGU9e30pe3JldHVybiBlPXtkZXB0aDplLmRlcHRofHwxMDAsbmV3R3JvdXBEZWxheTplLm5ld0dyb3VwRGVsYXl8fDUwMH0sbmV3IFBsdWdpbih7a2V5OkNuLHN0YXRlOntpbml0OigpPT5uZXcgSGlzdG9yeVN0YXRlKEJyYW5jaC5lbXB0eSxCcmFuY2guZW1wdHksbnVsbCwwLC0xKSxhcHBseToodCxuLHIpPT5mdW5jdGlvbihlLHQsbixyKXtsZXQgbyxpPW4uZ2V0TWV0YShDbik7aWYoaSlyZXR1cm4gaS5oaXN0b3J5U3RhdGU7bi5nZXRNZXRhKE1uKSYmKGU9bmV3IEhpc3RvcnlTdGF0ZShlLmRvbmUsZS51bmRvbmUsbnVsbCwwLC0xKSk7bGV0IHM9bi5nZXRNZXRhKCJhcHBlbmRlZFRyYW5zYWN0aW9uIik7aWYoMD09bi5zdGVwcy5sZW5ndGgpcmV0dXJuIGU7aWYocyYmcy5nZXRNZXRhKENuKSlyZXR1cm4gcy5nZXRNZXRhKENuKS5yZWRvP25ldyBIaXN0b3J5U3RhdGUoZS5kb25lLmFkZFRyYW5zZm9ybShuLHZvaWQgMCxyLG11c3RQcmVzZXJ2ZUl0ZW1zKHQpKSxlLnVuZG9uZSxyYW5nZXNGb3Iobi5tYXBwaW5nLm1hcHMpLGUucHJldlRpbWUsZS5wcmV2Q29tcG9zaXRpb24pOm5ldyBIaXN0b3J5U3RhdGUoZS5kb25lLGUudW5kb25lLmFkZFRyYW5zZm9ybShuLHZvaWQgMCxyLG11c3RQcmVzZXJ2ZUl0ZW1zKHQpKSxudWxsLGUucHJldlRpbWUsZS5wcmV2Q29tcG9zaXRpb24pO2lmKCExPT09bi5nZXRNZXRhKCJhZGRUb0hpc3RvcnkiKXx8cyYmITE9PT1zLmdldE1ldGEoImFkZFRvSGlzdG9yeSIpKXJldHVybihvPW4uZ2V0TWV0YSgicmViYXNlZCIpKT9uZXcgSGlzdG9yeVN0YXRlKGUuZG9uZS5yZWJhc2VkKG4sbyksZS51bmRvbmUucmViYXNlZChuLG8pLG1hcFJhbmdlcyhlLnByZXZSYW5nZXMsbi5tYXBwaW5nKSxlLnByZXZUaW1lLGUucHJldkNvbXBvc2l0aW9uKTpuZXcgSGlzdG9yeVN0YXRlKGUuZG9uZS5hZGRNYXBzKG4ubWFwcGluZy5tYXBzKSxlLnVuZG9uZS5hZGRNYXBzKG4ubWFwcGluZy5tYXBzKSxtYXBSYW5nZXMoZS5wcmV2UmFuZ2VzLG4ubWFwcGluZyksZS5wcmV2VGltZSxlLnByZXZDb21wb3NpdGlvbik7e2xldCBvPW4uZ2V0TWV0YSgiY29tcG9zaXRpb24iKSxpPTA9PWUucHJldlRpbWV8fCFzJiZlLnByZXZDb21wb3NpdGlvbiE9byYmKGUucHJldlRpbWU8KG4udGltZXx8MCktci5uZXdHcm91cERlbGF5fHwhZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4hMTtpZighZS5kb2NDaGFuZ2VkKXJldHVybiEwO2xldCBuPSExO3JldHVybiBlLm1hcHBpbmcubWFwc1swXS5mb3JFYWNoKChlLHIpPT57Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKWU8PXRbbysxXSYmcj49dFtvXSYmKG49ITApfSksbn0obixlLnByZXZSYW5nZXMpKSxsPXM/bWFwUmFuZ2VzKGUucHJldlJhbmdlcyxuLm1hcHBpbmcpOnJhbmdlc0ZvcihuLm1hcHBpbmcubWFwcyk7cmV0dXJuIG5ldyBIaXN0b3J5U3RhdGUoZS5kb25lLmFkZFRyYW5zZm9ybShuLGk/dC5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKTp2b2lkIDAscixtdXN0UHJlc2VydmVJdGVtcyh0KSksQnJhbmNoLmVtcHR5LGwsbi50aW1lLG51bGw9PW8/ZS5wcmV2Q29tcG9zaXRpb246byl9fShuLHIsdCxlKX0sY29uZmlnOmUscHJvcHM6e2hhbmRsZURPTUV2ZW50czp7YmVmb3JlaW5wdXQoZSx0KXtsZXQgbj10LmlucHV0VHlwZSxyPSJoaXN0b3J5VW5kbyI9PW4/QW46Imhpc3RvcnlSZWRvIj09bj9PbjpudWxsO3JldHVybiEoIXJ8fCFlLmVkaXRhYmxlKSYmKHQucHJldmVudERlZmF1bHQoKSxyKGUuc3RhdGUsZS5kaXNwYXRjaCkpfX19fSl9ZnVuY3Rpb24gYnVpbGRDb21tYW5kKGUsdCl7cmV0dXJuKG4scik9PntsZXQgbz1Dbi5nZXRTdGF0ZShuKTtpZighb3x8MD09KGU/by51bmRvbmU6by5kb25lKS5ldmVudENvdW50KXJldHVybiExO2lmKHIpe2xldCBpPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1tdXN0UHJlc2VydmVJdGVtcyh0KSxvPUNuLmdldCh0KS5zcGVjLmNvbmZpZyxpPShuP2UudW5kb25lOmUuZG9uZSkucG9wRXZlbnQodCxyKTtpZighaSlyZXR1cm4gbnVsbDtsZXQgcz1pLnNlbGVjdGlvbi5yZXNvbHZlKGkudHJhbnNmb3JtLmRvYyksbD0obj9lLmRvbmU6ZS51bmRvbmUpLmFkZFRyYW5zZm9ybShpLnRyYW5zZm9ybSx0LnNlbGVjdGlvbi5nZXRCb29rbWFyaygpLG8sciksYT1uZXcgSGlzdG9yeVN0YXRlKG4/bDppLnJlbWFpbmluZyxuP2kucmVtYWluaW5nOmwsbnVsbCwwLC0xKTtyZXR1cm4gaS50cmFuc2Zvcm0uc2V0U2VsZWN0aW9uKHMpLnNldE1ldGEoQ24se3JlZG86bixoaXN0b3J5U3RhdGU6YX0pfShvLG4sZSk7aSYmcih0P2kuc2Nyb2xsSW50b1ZpZXcoKTppKX1yZXR1cm4hMH19Y29uc3QgQW49YnVpbGRDb21tYW5kKCExLCEwKSxPbj1idWlsZENvbW1hbmQoITAsITApO2p0LmNyZWF0ZSh7bmFtZToiY2hhcmFjdGVyQ291bnQiLGFkZE9wdGlvbnM6KCk9Pih7bGltaXQ6bnVsbCxtb2RlOiJ0ZXh0U2l6ZSIsdGV4dENvdW50ZXI6ZT0+ZS5sZW5ndGgsd29yZENvdW50ZXI6ZT0+ZS5zcGxpdCgiICIpLmZpbHRlcihlPT4iIiE9PWUpLmxlbmd0aH0pLGFkZFN0b3JhZ2U6KCk9Pih7Y2hhcmFjdGVyczooKT0+MCx3b3JkczooKT0+MH0pLG9uQmVmb3JlQ3JlYXRlKCl7dGhpcy5zdG9yYWdlLmNoYXJhY3RlcnM9ZT0+e2NvbnN0IHQ9KG51bGw9PWU/dm9pZCAwOmUubm9kZSl8fHRoaXMuZWRpdG9yLnN0YXRlLmRvYztpZigidGV4dFNpemUiPT09KChudWxsPT1lP3ZvaWQgMDplLm1vZGUpfHx0aGlzLm9wdGlvbnMubW9kZSkpe2NvbnN0IGU9dC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLHZvaWQgMCwiICIpO3JldHVybiB0aGlzLm9wdGlvbnMudGV4dENvdW50ZXIoZSl9cmV0dXJuIHQubm9kZVNpemV9LHRoaXMuc3RvcmFnZS53b3Jkcz1lPT57Y29uc3QgdD0obnVsbD09ZT92b2lkIDA6ZS5ub2RlKXx8dGhpcy5lZGl0b3Iuc3RhdGUuZG9jLG49dC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLCIgIiwiICIpO3JldHVybiB0aGlzLm9wdGlvbnMud29yZENvdW50ZXIobil9fSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtsZXQgZT0hMTtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImNoYXJhY3RlckNvdW50IiksYXBwZW5kVHJhbnNhY3Rpb246KHQsbixyKT0+e2lmKGUpcmV0dXJuO2NvbnN0IG89dGhpcy5vcHRpb25zLmxpbWl0O2lmKG51bGw9PW98fDA9PT1vKXJldHVybiB2b2lkKGU9ITApO2NvbnN0IGk9dGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoe25vZGU6ci5kb2N9KTtpZihpPm8pe2NvbnN0IHQ9MCxuPWktbztjb25zb2xlLndhcm4oYFtDaGFyYWN0ZXJDb3VudF0gSW5pdGlhbCBjb250ZW50IGV4Y2VlZGVkIGxpbWl0IG9mICR7b30gY2hhcmFjdGVycy4gQ29udGVudCB3YXMgYXV0b21hdGljYWxseSB0cmltbWVkLmApO2NvbnN0IHM9ci50ci5kZWxldGVSYW5nZSh0LG4pO3JldHVybiBlPSEwLHN9ZT0hMH0sZmlsdGVyVHJhbnNhY3Rpb246KGUsdCk9Pntjb25zdCBuPXRoaXMub3B0aW9ucy5saW1pdDtpZighZS5kb2NDaGFuZ2VkfHwwPT09bnx8bnVsbD09bilyZXR1cm4hMDtjb25zdCByPXRoaXMuc3RvcmFnZS5jaGFyYWN0ZXJzKHtub2RlOnQuZG9jfSksbz10aGlzLnN0b3JhZ2UuY2hhcmFjdGVycyh7bm9kZTplLmRvY30pO2lmKG88PW4pcmV0dXJuITA7aWYocj5uJiZvPm4mJm88PXIpcmV0dXJuITA7aWYocj5uJiZvPm4mJm8+cilyZXR1cm4hMTtpZighZS5nZXRNZXRhKCJwYXN0ZSIpKXJldHVybiExO2NvbnN0IGk9ZS5zZWxlY3Rpb24uJGhlYWQucG9zLHM9aS0oby1uKSxsPWk7ZS5kZWxldGVSYW5nZShzLGwpO3JldHVybiEodGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoe25vZGU6ZS5kb2N9KT5uKX19KV19fSk7dmFyIEVuPWp0LmNyZWF0ZSh7bmFtZToiZHJvcEN1cnNvciIsYWRkT3B0aW9uczooKT0+KHtjb2xvcjoiY3VycmVudENvbG9yIix3aWR0aDoxLGNsYXNzOnZvaWQgMH0pLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltkcm9wQ3Vyc29yKHRoaXMub3B0aW9ucyldfX0pO2p0LmNyZWF0ZSh7bmFtZToiZm9jdXMiLGFkZE9wdGlvbnM6KCk9Pih7Y2xhc3NOYW1lOiJoYXMtZm9jdXMiLG1vZGU6ImFsbCJ9KSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImZvY3VzIikscHJvcHM6e2RlY29yYXRpb25zOih7ZG9jOmUsc2VsZWN0aW9uOnR9KT0+e2NvbnN0e2lzRWRpdGFibGU6bixpc0ZvY3VzZWQ6cn09dGhpcy5lZGl0b3Ise2FuY2hvcjpvfT10LGk9W107aWYoIW58fCFyKXJldHVybiBEZWNvcmF0aW9uU2V0LmNyZWF0ZShlLFtdKTtsZXQgcz0wOyJkZWVwZXN0Ij09PXRoaXMub3B0aW9ucy5tb2RlJiZlLmRlc2NlbmRhbnRzKChlLHQpPT57aWYoZS5pc1RleHQpcmV0dXJuO2lmKCEobz49dCYmbzw9dCtlLm5vZGVTaXplLTEpKXJldHVybiExO3MrPTF9KTtsZXQgbD0wO3JldHVybiBlLmRlc2NlbmRhbnRzKChlLHQpPT57aWYoZS5pc1RleHQpcmV0dXJuITE7aWYoIShvPj10JiZvPD10K2Uubm9kZVNpemUtMSkpcmV0dXJuITE7bCs9MTtpZigiZGVlcGVzdCI9PT10aGlzLm9wdGlvbnMubW9kZSYmcy1sPjB8fCJzaGFsbG93ZXN0Ij09PXRoaXMub3B0aW9ucy5tb2RlJiZsPjEpcmV0dXJuImRlZXBlc3QiPT09dGhpcy5vcHRpb25zLm1vZGU7aS5wdXNoKERlY29yYXRpb24ubm9kZSh0LHQrZS5ub2RlU2l6ZSx7Y2xhc3M6dGhpcy5vcHRpb25zLmNsYXNzTmFtZX0pKX0pLERlY29yYXRpb25TZXQuY3JlYXRlKGUsaSl9fX0pXX19KTt2YXIgTm49anQuY3JlYXRlKHtuYW1lOiJnYXBDdXJzb3IiLGFkZFByb3NlTWlycm9yUGx1Z2luczooKT0+W25ldyBQbHVnaW4oe3Byb3BzOntkZWNvcmF0aW9uczpkcmF3R2FwQ3Vyc29yLGNyZWF0ZVNlbGVjdGlvbkJldHdlZW46KGUsdCxuKT0+dC5wb3M9PW4ucG9zJiZHYXBDdXJzb3IudmFsaWQobik/bmV3IEdhcEN1cnNvcihuKTpudWxsLGhhbmRsZUNsaWNrOmhhbmRsZUNsaWNrLGhhbmRsZUtleURvd246a24saGFuZGxlRE9NRXZlbnRzOntiZWZvcmVpbnB1dDpiZWZvcmVpbnB1dH19fSldLGV4dGVuZE5vZGVTY2hlbWEoZSl7dmFyIHQ7cmV0dXJue2FsbG93R2FwQ3Vyc29yOm51bGwhPSh0PWNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChlLCJhbGxvd0dhcEN1cnNvciIse25hbWU6ZS5uYW1lLG9wdGlvbnM6ZS5vcHRpb25zLHN0b3JhZ2U6ZS5zdG9yYWdlfSkpKT90Om51bGx9fX0pLFJuPSJwbGFjZWhvbGRlciI7dmFyIERuPWp0LmNyZWF0ZSh7bmFtZToicGxhY2Vob2xkZXIiLGFkZE9wdGlvbnM6KCk9Pih7ZW1wdHlFZGl0b3JDbGFzczoiaXMtZWRpdG9yLWVtcHR5IixlbXB0eU5vZGVDbGFzczoiaXMtZW1wdHkiLGRhdGFBdHRyaWJ1dGU6Um4scGxhY2Vob2xkZXI6IldyaXRlIHNvbWV0aGluZyDigKYiLHNob3dPbmx5V2hlbkVkaXRhYmxlOiEwLHNob3dPbmx5Q3VycmVudDohMCxpbmNsdWRlQ2hpbGRyZW46ITF9KSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBlPXRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlP2BkYXRhLSR7dD10aGlzLm9wdGlvbnMuZGF0YUF0dHJpYnV0ZSx0LnJlcGxhY2UoL1xzKy9nLCItIikucmVwbGFjZSgvW15hLXpBLVowLTktXS9nLCIiKS5yZXBsYWNlKC9eWzAtOS1dKy8sIiIpLnJlcGxhY2UoL14tKy8sIiIpLnRvTG93ZXJDYXNlKCl9YDpgZGF0YS0ke1JufWA7dmFyIHQ7cmV0dXJuW25ldyBQbHVnaW4oe2tleTpuZXcgUGx1Z2luS2V5KCJwbGFjZWhvbGRlciIpLHByb3BzOntkZWNvcmF0aW9uczooe2RvYzp0LHNlbGVjdGlvbjpufSk9Pntjb25zdCByPXRoaXMuZWRpdG9yLmlzRWRpdGFibGV8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlXaGVuRWRpdGFibGUse2FuY2hvcjpvfT1uLGk9W107aWYoIXIpcmV0dXJuIG51bGw7Y29uc3Qgcz10aGlzLmVkaXRvci5pc0VtcHR5O3JldHVybiB0LmRlc2NlbmRhbnRzKCh0LG4pPT57Y29uc3Qgcj1vPj1uJiZvPD1uK3Qubm9kZVNpemUsbD0hdC5pc0xlYWYmJmlzTm9kZUVtcHR5KHQpO2lmKCF0LnR5cGUuaXNUZXh0YmxvY2spcmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlQ2hpbGRyZW47aWYoKHJ8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlDdXJyZW50KSYmbCl7Y29uc3Qgbz1bdGhpcy5vcHRpb25zLmVtcHR5Tm9kZUNsYXNzXTtzJiZvLnB1c2godGhpcy5vcHRpb25zLmVtcHR5RWRpdG9yQ2xhc3MpO2NvbnN0IGw9RGVjb3JhdGlvbi5ub2RlKG4sbit0Lm5vZGVTaXplLHtjbGFzczpvLmpvaW4oIiAiKSxbZV06ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcj90aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIoe2VkaXRvcjp0aGlzLmVkaXRvcixub2RlOnQscG9zOm4saGFzQW5jaG9yOnJ9KTp0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXJ9KTtpLnB1c2gobCl9cmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlQ2hpbGRyZW59KSxEZWNvcmF0aW9uU2V0LmNyZWF0ZSh0LGkpfX19KV19fSk7anQuY3JlYXRlKHtuYW1lOiJzZWxlY3Rpb24iLGFkZE9wdGlvbnM6KCk9Pih7Y2xhc3NOYW1lOiJzZWxlY3Rpb24ifSksYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7Y29uc3R7ZWRpdG9yOmUsb3B0aW9uczp0fT10aGlzO3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgic2VsZWN0aW9uIikscHJvcHM6e2RlY29yYXRpb25zOm49Pm4uc2VsZWN0aW9uLmVtcHR5fHxlLmlzRm9jdXNlZHx8IWUuaXNFZGl0YWJsZXx8aXNOb2RlU2VsZWN0aW9uKG4uc2VsZWN0aW9uKXx8ZS52aWV3LmRyYWdnaW5nP251bGw6RGVjb3JhdGlvblNldC5jcmVhdGUobi5kb2MsW0RlY29yYXRpb24uaW5saW5lKG4uc2VsZWN0aW9uLmZyb20sbi5zZWxlY3Rpb24udG8se2NsYXNzOnQuY2xhc3NOYW1lfSldKX19KV19fSk7ZnVuY3Rpb24gbm9kZUVxdWFsc1R5cGUoe3R5cGVzOmUsbm9kZTp0fSl7cmV0dXJuIHQmJkFycmF5LmlzQXJyYXkoZSkmJmUuaW5jbHVkZXModC50eXBlKXx8KG51bGw9PXQ/dm9pZCAwOnQudHlwZSk9PT1lfXZhciBQbj1qdC5jcmVhdGUoe25hbWU6InRyYWlsaW5nTm9kZSIsYWRkT3B0aW9uczooKT0+KHtub2RlOnZvaWQgMCxub3RBZnRlcjpbXX0pLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3ZhciBlO2NvbnN0IHQ9bmV3IFBsdWdpbktleSh0aGlzLm5hbWUpLG49dGhpcy5vcHRpb25zLm5vZGV8fChudWxsPT0oZT10aGlzLmVkaXRvci5zY2hlbWEudG9wTm9kZVR5cGUuY29udGVudE1hdGNoLmRlZmF1bHRUeXBlKT92b2lkIDA6ZS5uYW1lKXx8InBhcmFncmFwaCIscj1PYmplY3QuZW50cmllcyh0aGlzLmVkaXRvci5zY2hlbWEubm9kZXMpLm1hcCgoWyxlXSk9PmUpLmZpbHRlcihlPT4odGhpcy5vcHRpb25zLm5vdEFmdGVyfHxbXSkuY29uY2F0KG4pLmluY2x1ZGVzKGUubmFtZSkpO3JldHVybltuZXcgUGx1Z2luKHtrZXk6dCxhcHBlbmRUcmFuc2FjdGlvbjooZSxyLG8pPT57Y29uc3R7ZG9jOmksdHI6cyxzY2hlbWE6bH09byxhPXQuZ2V0U3RhdGUobyksYz1pLmNvbnRlbnQuc2l6ZSxkPWwubm9kZXNbbl07aWYoIWUuc29tZShlPT5lLmdldE1ldGEoInNraXBUcmFpbGluZ05vZGUiKSkmJmEpcmV0dXJuIHMuaW5zZXJ0KGMsZC5jcmVhdGUoKSl9LHN0YXRlOntpbml0OihlLHQpPT4hbm9kZUVxdWFsc1R5cGUoe25vZGU6dC50ci5kb2MubGFzdENoaWxkLHR5cGVzOnJ9KSxhcHBseTooZSx0KT0+e2lmKCFlLmRvY0NoYW5nZWQpcmV0dXJuIHQ7aWYoZS5nZXRNZXRhKCJfX3VuaXF1ZUlEVHJhbnNhY3Rpb24iKSlyZXR1cm4gdDtyZXR1cm4hbm9kZUVxdWFsc1R5cGUoe25vZGU6ZS5kb2MubGFzdENoaWxkLHR5cGVzOnJ9KX19fSldfX0pLEluPWp0LmNyZWF0ZSh7bmFtZToidW5kb1JlZG8iLGFkZE9wdGlvbnM6KCk9Pih7ZGVwdGg6MTAwLG5ld0dyb3VwRGVsYXk6NTAwfSksYWRkQ29tbWFuZHM6KCk9Pih7dW5kbzooKT0+KHtzdGF0ZTplLGRpc3BhdGNoOnR9KT0+QW4oZSx0KSxyZWRvOigpPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT5PbihlLHQpfSksYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW2hpc3RvcnkodGhpcy5vcHRpb25zKV19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QteiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnVuZG8oKSwiU2hpZnQtTW9kLXoiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCksIk1vZC15IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMucmVkbygpLCJNb2Qt0Y8iOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy51bmRvKCksIlNoaWZ0LU1vZC3RjyI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnJlZG8oKX19fSksJG49RG47ZnVuY3Rpb24gTSgpe3JldHVybnthc3luYzohMSxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxob29rczpudWxsLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2lsZW50OiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbH19dmFyIExuPXthc3luYzohMSxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxob29rczpudWxsLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2lsZW50OiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbH07ZnVuY3Rpb24gRyhlKXtMbj1lfXZhciB6bj17ZXhlYzooKT0+bnVsbH07ZnVuY3Rpb24gayhlLHQ9IiIpe2xldCBuPSJzdHJpbmciPT10eXBlb2YgZT9lOmUuc291cmNlLHI9e3JlcGxhY2U6KGUsdCk9PntsZXQgbz0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnNvdXJjZTtyZXR1cm4gbz1vLnJlcGxhY2UoRm4uY2FyZXQsIiQxIiksbj1uLnJlcGxhY2UoZSxvKSxyfSxnZXRSZWdleDooKT0+bmV3IFJlZ0V4cChuLHQpfTtyZXR1cm4gcn12YXIgQm49KCgpPT57dHJ5e3JldHVybiEhbmV3IFJlZ0V4cCgiKD88PTEpKD88ITEpIil9Y2F0Y2h7cmV0dXJuITF9fSkoKSxGbj17Y29kZVJlbW92ZUluZGVudDovXig/OiB7MSw0fXwgezAsM31cdCkvZ20sb3V0cHV0TGlua1JlcGxhY2U6L1xcKFtcW1xdXSkvZyxpbmRlbnRDb2RlQ29tcGVuc2F0aW9uOi9eKFxzKykoPzpgYGApLyxiZWdpbm5pbmdTcGFjZTovXlxzKy8sZW5kaW5nSGFzaDovIyQvLHN0YXJ0aW5nU3BhY2VDaGFyOi9eIC8sZW5kaW5nU3BhY2VDaGFyOi8gJC8sbm9uU3BhY2VDaGFyOi9bXiBdLyxuZXdMaW5lQ2hhckdsb2JhbDovXG4vZyx0YWJDaGFyR2xvYmFsOi9cdC9nLG11bHRpcGxlU3BhY2VHbG9iYWw6L1xzKy9nLGJsYW5rTGluZTovXlsgXHRdKiQvLGRvdWJsZUJsYW5rTGluZTovXG5bIFx0XSpcblsgXHRdKiQvLGJsb2NrcXVvdGVTdGFydDovXiB7MCwzfT4vLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlOi9cbiB7MCwzfSgoPzo9K3wtKykgKikoPz1cbnwkKS9nLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlMjovXiB7MCwzfT5bIFx0XT8vZ20sbGlzdFJlcGxhY2VOZXN0aW5nOi9eIHsxLDR9KD89KCB7NH0pKlteIF0pL2csbGlzdElzVGFzazovXlxbWyB4WF1cXSArXFMvLGxpc3RSZXBsYWNlVGFzazovXlxbWyB4WF1cXSArLyxsaXN0VGFza0NoZWNrYm94Oi9cW1sgeFhdXF0vLGFueUxpbmU6L1xuLipcbi8saHJlZkJyYWNrZXRzOi9ePCguKik+JC8sdGFibGVEZWxpbWl0ZXI6L1s6fF0vLHRhYmxlQWxpZ25DaGFyczovXlx8fFx8ICokL2csdGFibGVSb3dCbGFua0xpbmU6L1xuWyBcdF0qJC8sdGFibGVBbGlnblJpZ2h0Oi9eICotKzogKiQvLHRhYmxlQWxpZ25DZW50ZXI6L14gKjotKzogKiQvLHRhYmxlQWxpZ25MZWZ0Oi9eICo6LSsgKiQvLHN0YXJ0QVRhZzovXjxhIC9pLGVuZEFUYWc6L148XC9hPi9pLHN0YXJ0UHJlU2NyaXB0VGFnOi9ePChwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLGVuZFByZVNjcmlwdFRhZzovXjxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLHN0YXJ0QW5nbGVCcmFja2V0Oi9ePC8sZW5kQW5nbGVCcmFja2V0Oi8+JC8scGVkYW50aWNIcmVmVGl0bGU6L14oW14nIl0qW15cc10pXHMrKFsnIl0pKC4qKVwyLyx1bmljb2RlQWxwaGFOdW1lcmljOi9bXHB7TH1ccHtOfV0vdSxlc2NhcGVUZXN0Oi9bJjw+IiddLyxlc2NhcGVSZXBsYWNlOi9bJjw+IiddL2csZXNjYXBlVGVzdE5vRW5jb2RlOi9bPD4iJ118Jig/ISgjXGR7MSw3fXwjW1h4XVthLWZBLUYwLTldezEsNn18XHcrKTspLyxlc2NhcGVSZXBsYWNlTm9FbmNvZGU6L1s8PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykvZyxjYXJldDovKF58W15cW10pXF4vZyxwZXJjZW50RGVjb2RlOi8lMjUvZyxmaW5kUGlwZTovXHwvZyxzcGxpdFBpcGU6LyBcfC8sc2xhc2hQaXBlOi9cXFx8L2csY2FycmlhZ2VSZXR1cm46L1xyXG58XHIvZyxzcGFjZUxpbmU6L14gKyQvZ20sbm90U3BhY2VTdGFydDovXlxTKi8sZW5kaW5nTmV3bGluZTovXG4kLyxsaXN0SXRlbVJlZ2V4OmU9Pm5ldyBSZWdFeHAoYF4oIHswLDN9JHtlfSkoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpYCksbmV4dEJ1bGxldFJlZ2V4OmU9Pm5ldyBSZWdFeHAoYF4gezAsJHtNYXRoLm1pbigzLGUtMSl9fSg/OlsqKy1dfFxcZHsxLDl9Wy4pXSkoKD86WyBcdF1bXlxcbl0qKT8oPzpcXG58JCkpYCksaHJSZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX0oKD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpYCksZmVuY2VzQmVnaW5SZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX0oPzpcYFxgXGB8fn5+KWApLGhlYWRpbmdCZWdpblJlZ2V4OmU9Pm5ldyBSZWdFeHAoYF4gezAsJHtNYXRoLm1pbigzLGUtMSl9fSNgKSxodG1sQmVnaW5SZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX08KD86W2Etel0uKj58IS0tKWAsImkiKSxibG9ja3F1b3RlQmVnaW5SZWdleDplPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxlLTEpfX0+YCl9LEhuPS9eIHswLDN9KCg/Oi1bXHQgXSopezMsfXwoPzpfWyBcdF0qKXszLH18KD86XCpbIFx0XSopezMsfSkoPzpcbit8JCkvLFZuPS8gezAsM30oPzpbKistXXxcZHsxLDl9Wy4pXSkvLF9uPS9eKD8hYnVsbCB8YmxvY2tDb2RlfGZlbmNlc3xibG9ja3F1b3RlfGhlYWRpbmd8aHRtbHx0YWJsZSkoKD86Lnxcbig/IVxzKj9cbnxidWxsIHxibG9ja0NvZGV8ZmVuY2VzfGJsb2NrcXVvdGV8aGVhZGluZ3xodG1sfHRhYmxlKSkrPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8sam49ayhfbikucmVwbGFjZSgvYnVsbC9nLFZuKS5yZXBsYWNlKC9ibG9ja0NvZGUvZywvKD86IHs0fXwgezAsM31cdCkvKS5yZXBsYWNlKC9mZW5jZXMvZywvIHswLDN9KD86YHszLH18fnszLH0pLykucmVwbGFjZSgvYmxvY2txdW90ZS9nLC8gezAsM30+LykucmVwbGFjZSgvaGVhZGluZy9nLC8gezAsM30jezEsNn0vKS5yZXBsYWNlKC9odG1sL2csLyB7MCwzfTxbXlxuPl0rPlxuLykucmVwbGFjZSgvXHx0YWJsZS9nLCIiKS5nZXRSZWdleCgpLHFuPWsoX24pLnJlcGxhY2UoL2J1bGwvZyxWbikucmVwbGFjZSgvYmxvY2tDb2RlL2csLyg/OiB7NH18IHswLDN9XHQpLykucmVwbGFjZSgvZmVuY2VzL2csLyB7MCwzfSg/OmB7Myx9fH57Myx9KS8pLnJlcGxhY2UoL2Jsb2NrcXVvdGUvZywvIHswLDN9Pi8pLnJlcGxhY2UoL2hlYWRpbmcvZywvIHswLDN9I3sxLDZ9LykucmVwbGFjZSgvaHRtbC9nLC8gezAsM308W15cbj5dKz5cbi8pLnJlcGxhY2UoL3RhYmxlL2csLyB7MCwzfVx8Pyg/Ols6XC0gXSpcfCkrW1w6XC0gXSpcbi8pLmdldFJlZ2V4KCksVW49L14oW15cbl0rKD86XG4oPyFocnxoZWFkaW5nfGxoZWFkaW5nfGJsb2NrcXVvdGV8ZmVuY2VzfGxpc3R8aHRtbHx0YWJsZXwgK1xuKVteXG5dKykqKS8sV249Lyg/IVxzKlxdKSg/OlxcW1xzXFNdfFteXFtcXVxcXSkrLyxLbj1rKC9eIHswLDN9XFsobGFiZWwpXF06ICooPzpcblsgXHRdKik/KFtePFxzXVteXHNdKnw8Lio/PikoPzooPzogKyg/OlxuWyBcdF0qKT98ICpcblsgXHRdKikodGl0bGUpKT8gKig/OlxuK3wkKS8pLnJlcGxhY2UoImxhYmVsIixXbikucmVwbGFjZSgidGl0bGUiLC8oPzoiKD86XFwiP3xbXiJcXF0pKiJ8J1teJ1xuXSooPzpcblteJ1xuXSspKlxuPyd8XChbXigpXSpcKSkvKS5nZXRSZWdleCgpLEpuPWsoL14oYnVsbCkoWyBcdF1bXlxuXSs/KT8oPzpcbnwkKS8pLnJlcGxhY2UoL2J1bGwvZyxWbikuZ2V0UmVnZXgoKSxHbj0iYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGhbMS02XXxoZWFkfGhlYWRlcnxocnxodG1sfGlmcmFtZXxsZWdlbmR8bGl8bGlua3xtYWlufG1lbnV8bWVudWl0ZW18bWV0YXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VhcmNofHNlY3Rpb258c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bCIsWG49LzwhLS0oPzotPz58W1xzXFNdKj8oPzotLT58JCkpLyxRbj1rKCJeIHswLDN9KD86PChzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVtcXHM+XVtcXHNcXFNdKj8oPzo8L1xcMT5bXlxcbl0qXFxuK3wkKXxjb21tZW50W15cXG5dKihcXG4rfCQpfDxcXD9bXFxzXFxTXSo/KD86XFw/Plxcbip8JCl8PCFbQS1aXVtcXHNcXFNdKj8oPzo+XFxuKnwkKXw8IVxcW0NEQVRBXFxbW1xcc1xcU10qPyg/OlxcXVxcXT5cXG4qfCQpfDwvPyh0YWcpKD86ICt8XFxufC8/PilbXFxzXFxTXSo/KD86KD86XFxuWyBcdF0qKStcXG58JCl8PCg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKFthLXpdW1xcdy1dKikoPzphdHRyaWJ1dGUpKj8gKi8/Pig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcblsgXHRdKikrXFxufCQpfDwvKD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbYS16XVtcXHctXSpcXHMqPig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcblsgXHRdKikrXFxufCQpKSIsImkiKS5yZXBsYWNlKCJjb21tZW50IixYbikucmVwbGFjZSgidGFnIixHbikucmVwbGFjZSgiYXR0cmlidXRlIiwvICtbYS16QS1aOl9dW1x3LjotXSooPzogKj0gKiJbXiJcbl0qInwgKj0gKidbXidcbl0qJ3wgKj0gKlteXHMiJz08PmBdKyk/LykuZ2V0UmVnZXgoKSxabj1rKFVuKS5yZXBsYWNlKCJociIsSG4pLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0oPzpcXHN8JCkiKS5yZXBsYWNlKCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ8dGFibGUiLCIiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pWyBcXHRdIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixHbikuZ2V0UmVnZXgoKSxZbj17YmxvY2txdW90ZTprKC9eKCB7MCwzfT4gPyhwYXJhZ3JhcGh8W15cbl0qKSg/OlxufCQpKSsvKS5yZXBsYWNlKCJwYXJhZ3JhcGgiLFpuKS5nZXRSZWdleCgpLGNvZGU6L14oKD86IHs0fXwgezAsM31cdClbXlxuXSsoPzpcbig/OlsgXHRdKig/OlxufCQpKSopPykrLyxkZWY6S24sZmVuY2VzOi9eIHswLDN9KGB7Myx9KD89W15gXG5dKig/OlxufCQpKXx+ezMsfSkoW15cbl0qKSg/OlxufCQpKD86fChbXHNcU10qPykoPzpcbnwkKSkoPzogezAsM31cMVt+YF0qICooPz1cbnwkKXwkKS8saGVhZGluZzovXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxocjpIbixodG1sOlFuLGxoZWFkaW5nOmpuLGxpc3Q6Sm4sbmV3bGluZTovXig/OlsgXHRdKig/OlxufCQpKSsvLHBhcmFncmFwaDpabix0YWJsZTp6bix0ZXh0Oi9eW15cbl0rL30sZXI9aygiXiAqKFteXFxuIF0uKilcXG4gezAsM30oKD86XFx8ICopPzo/LSs6PyAqKD86XFx8ICo6Py0rOj8gKikqKD86XFx8ICopPykoPzpcXG4oKD86KD8hICpcXG58aHJ8aGVhZGluZ3xibG9ja3F1b3RlfGNvZGV8ZmVuY2VzfGxpc3R8aHRtbCkuKig/OlxcbnwkKSkqKVxcbip8JCkiKS5yZXBsYWNlKCJociIsSG4pLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0oPzpcXHN8JCkiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImNvZGUiLCIoPzogezR9fCB7MCwzfVx0KVteXFxuXSIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pWyBcXHRdIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixHbikuZ2V0UmVnZXgoKSxucj17Li4uWW4sbGhlYWRpbmc6cW4sdGFibGU6ZXIscGFyYWdyYXBoOmsoVW4pLnJlcGxhY2UoImhyIixIbikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSg/Olxcc3wkKSIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInRhYmxlIixlcikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKVsgXFx0XSIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsR24pLmdldFJlZ2V4KCl9LHJyPXsuLi5ZbixodG1sOmsoIl4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OlwiW15cIl0qXCJ8J1teJ10qJ3xcXHNbXidcIi8+XFxzXSopKj8vPz4gKig/OlxcbnsyLH18XFxzKiQpKSIpLnJlcGxhY2UoImNvbW1lbnQiLFhuKS5yZXBsYWNlKC90YWcvZywiKD8hKD86YXxlbXxzdHJvbmd8c21hbGx8c3xjaXRlfHF8ZGZufGFiYnJ8ZGF0YXx0aW1lfGNvZGV8dmFyfHNhbXB8a2JkfHN1YnxzdXB8aXxifHV8bWFya3xydWJ5fHJ0fHJwfGJkaXxiZG98c3Bhbnxicnx3YnJ8aW5zfGRlbHxpbWcpXFxiKVxcdysoPyE6fFteXFx3XFxzQF0qQClcXGIiKS5nZXRSZWdleCgpLGRlZjovXiAqXFsoW15cXV0rKVxdOiAqPD8oW15ccz5dKyk+Pyg/OiArKFsiKF1bXlxuXStbIildKSk/ICooPzpcbit8JCkvLGhlYWRpbmc6L14oI3sxLDZ9KSguKikoPzpcbit8JCkvLGZlbmNlczp6bixsaGVhZGluZzovXiguKz8pXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLHBhcmFncmFwaDprKFVuKS5yZXBsYWNlKCJociIsSG4pLnJlcGxhY2UoImhlYWRpbmciLCIgKiN7MSw2fSAqW15cbl0iKS5yZXBsYWNlKCJsaGVhZGluZyIsam4pLnJlcGxhY2UoInx0YWJsZSIsIiIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgifGZlbmNlcyIsIiIpLnJlcGxhY2UoInxsaXN0IiwiIikucmVwbGFjZSgifGh0bWwiLCIiKS5yZXBsYWNlKCJ8dGFnIiwiIikuZ2V0UmVnZXgoKX0sb3I9L14oIHsyLH18XFwpXG4oPyFccyokKS8saXI9L1tccHtQfVxwe1N9XS91LHNyPS9bXHNccHtQfVxwe1N9XS91LGxyPS9bXlxzXHB7UH1ccHtTfV0vdSxhcj1rKC9eKCg/IVsqX10pcHVuY3RTcGFjZSkvLCJ1IikucmVwbGFjZSgvcHVuY3RTcGFjZS9nLHNyKS5nZXRSZWdleCgpLGNyPS8oPyF+KVtccHtQfVxwe1N9XS91LGRyPWsoL2xpbmt8cHJlY29kZS1jb2RlfGh0bWwvLCJnIikucmVwbGFjZSgibGluayIsL1xbKD86W15cW1xdYF18KD88YT5gKylbXmBdK1xrPGE+KD8hYCkpKj9cXVwoKD86XFxbXHNcU118W15cXFwoXCldfFwoKD86XFxbXHNcU118W15cXFwoXCldKSpcKSkqXCkvKS5yZXBsYWNlKCJwcmVjb2RlLSIsQm4/Iig/PCFgKSgpIjoiKF5efFteYF0pIikucmVwbGFjZSgiY29kZSIsLyg/PGI+YCspW15gXStcazxiPig/IWApLykucmVwbGFjZSgiaHRtbCIsLzwoPyEgKVtePD5dKj8+LykuZ2V0UmVnZXgoKSxwcj0vXig/OlwqKyg/OigoPyFcKilwdW5jdCl8KFteXHMqXSkpPyl8Xl8rKD86KCg/IV8pcHVuY3QpfChbXlxzX10pKT8vLGhyPWsocHIsInUiKS5yZXBsYWNlKC9wdW5jdC9nLGlyKS5nZXRSZWdleCgpLHVyPWsocHIsInUiKS5yZXBsYWNlKC9wdW5jdC9nLGNyKS5nZXRSZWdleCgpLGZyPSJeW15fKl0qP19fW15fKl0qP1xcKlteXypdKj8oPz1fXyl8W14qXSsoPz1bXipdKXwoPyFcXCopcHVuY3QoXFwqKykoPz1bXFxzXXwkKXxub3RQdW5jdFNwYWNlKFxcKispKD8hXFwqKSg/PXB1bmN0U3BhY2V8JCl8KD8hXFwqKXB1bmN0U3BhY2UoXFwqKykoPz1ub3RQdW5jdFNwYWNlKXxbXFxzXShcXCorKSg/IVxcKikoPz1wdW5jdCl8KD8hXFwqKXB1bmN0KFxcKispKD8hXFwqKSg/PXB1bmN0KXxub3RQdW5jdFNwYWNlKFxcKispKD89bm90UHVuY3RTcGFjZSkiLG1yPWsoZnIsImd1IikucmVwbGFjZSgvbm90UHVuY3RTcGFjZS9nLGxyKS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csc3IpLnJlcGxhY2UoL3B1bmN0L2csaXIpLmdldFJlZ2V4KCksZ3I9ayhmciwiZ3UiKS5yZXBsYWNlKC9ub3RQdW5jdFNwYWNlL2csLyg/OlteXHNccHtQfVxwe1N9XXx+KS91KS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csLyg/IX4pW1xzXHB7UH1ccHtTfV0vdSkucmVwbGFjZSgvcHVuY3QvZyxjcikuZ2V0UmVnZXgoKSx5cj1rKCJeW15fKl0qP1xcKlxcKlteXypdKj9fW15fKl0qPyg/PVxcKlxcKil8W15fXSsoPz1bXl9dKXwoPyFfKXB1bmN0KF8rKSg/PVtcXHNdfCQpfG5vdFB1bmN0U3BhY2UoXyspKD8hXykoPz1wdW5jdFNwYWNlfCQpfCg/IV8pcHVuY3RTcGFjZShfKykoPz1ub3RQdW5jdFNwYWNlKXxbXFxzXShfKykoPyFfKSg/PXB1bmN0KXwoPyFfKXB1bmN0KF8rKSg/IV8pKD89cHVuY3QpIiwiZ3UiKS5yZXBsYWNlKC9ub3RQdW5jdFNwYWNlL2csbHIpLnJlcGxhY2UoL3B1bmN0U3BhY2UvZyxzcikucmVwbGFjZSgvcHVuY3QvZyxpcikuZ2V0UmVnZXgoKSxrcj1rKC9efn4/KD86KCg/IX4pcHVuY3QpfFteXHN+XSkvLCJ1IikucmVwbGFjZSgvcHVuY3QvZyxpcikuZ2V0UmVnZXgoKSx3cj1rKCJeW15+XSsoPz1bXn5dKXwoPyF+KXB1bmN0KH5+PykoPz1bXFxzXXwkKXxub3RQdW5jdFNwYWNlKH5+PykoPyF+KSg/PXB1bmN0U3BhY2V8JCl8KD8hfilwdW5jdFNwYWNlKH5+PykoPz1ub3RQdW5jdFNwYWNlKXxbXFxzXSh+fj8pKD8hfikoPz1wdW5jdCl8KD8hfilwdW5jdCh+fj8pKD8hfikoPz1wdW5jdCl8bm90UHVuY3RTcGFjZSh+fj8pKD89bm90UHVuY3RTcGFjZSkiLCJndSIpLnJlcGxhY2UoL25vdFB1bmN0U3BhY2UvZyxscikucmVwbGFjZSgvcHVuY3RTcGFjZS9nLHNyKS5yZXBsYWNlKC9wdW5jdC9nLGlyKS5nZXRSZWdleCgpLGJyPWsoL1xcKHB1bmN0KS8sImd1IikucmVwbGFjZSgvcHVuY3QvZyxpcikuZ2V0UmVnZXgoKSx2cj1rKC9ePChzY2hlbWU6W15cc1x4MDAtXHgxZjw+XSp8ZW1haWwpPi8pLnJlcGxhY2UoInNjaGVtZSIsL1thLXpBLVpdW2EtekEtWjAtOSsuLV17MSwzMX0vKS5yZXBsYWNlKCJlbWFpbCIsL1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rKEApW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKyg/IVstX10pLykuZ2V0UmVnZXgoKSx4cj1rKFhuKS5yZXBsYWNlKCIoPzotLVx4M2V8JCkiLCItLVx4M2UiKS5nZXRSZWdleCgpLFNyPWsoIl5jb21tZW50fF48L1thLXpBLVpdW1xcdzotXSpcXHMqPnxePFthLXpBLVpdW1xcdy1dKig/OmF0dHJpYnV0ZSkqP1xccyovPz58XjxcXD9bXFxzXFxTXSo/XFw/PnxePCFbYS16QS1aXStcXHNbXFxzXFxTXSo/PnxePCFcXFtDREFUQVxcW1tcXHNcXFNdKj9cXF1cXF0+IikucmVwbGFjZSgiY29tbWVudCIseHIpLnJlcGxhY2UoImF0dHJpYnV0ZSIsL1xzK1thLXpBLVo6X11bXHcuOi1dKig/OlxzKj1ccyoiW14iXSoifFxzKj1ccyonW14nXSonfFxzKj1ccypbXlxzIic9PD5gXSspPy8pLmdldFJlZ2V4KCksVHI9Lyg/OlxbKD86XFxbXHNcU118W15cW1xdXFxdKSpcXXxcXFtcc1xTXXxgKyg/IWApW15gXSo/YCsoPyFgKXxgYCsoPz1cXSl8W15cW1xdXFxgXSkqPy8sQ3I9aygvXiE/XFsobGFiZWwpXF1cKFxzKihocmVmKSg/Oig/OlsgXHRdKyg/OlxuWyBcdF0qKT98XG5bIFx0XSopKHRpdGxlKSk/XHMqXCkvKS5yZXBsYWNlKCJsYWJlbCIsVHIpLnJlcGxhY2UoImhyZWYiLC88KD86XFwufFteXG48PlxcXSkrPnxbXiBcdFxuXHgwMC1ceDFmXSovKS5yZXBsYWNlKCJ0aXRsZSIsLyIoPzpcXCI/fFteIlxcXSkqInwnKD86XFwnP3xbXidcXF0pKid8XCgoPzpcXFwpP3xbXilcXF0pKlwpLykuZ2V0UmVnZXgoKSxNcj1rKC9eIT9cWyhsYWJlbClcXVxbKHJlZilcXS8pLnJlcGxhY2UoImxhYmVsIixUcikucmVwbGFjZSgicmVmIixXbikuZ2V0UmVnZXgoKSxBcj1rKC9eIT9cWyhyZWYpXF0oPzpcW1xdKT8vKS5yZXBsYWNlKCJyZWYiLFduKS5nZXRSZWdleCgpLE9yPS9baEhdW3RUXVt0VF1bcFBdW3NTXT98W2ZGXVt0VF1bcFBdLyxFcj17X2JhY2twZWRhbDp6bixhbnlQdW5jdHVhdGlvbjpicixhdXRvbGluazp2cixibG9ja1NraXA6ZHIsYnI6b3IsY29kZTovXihgKykoW15gXXxbXmBdW1xzXFNdKj9bXmBdKVwxKD8hYCkvLGRlbDp6bixkZWxMRGVsaW06em4sZGVsUkRlbGltOnpuLGVtU3Ryb25nTERlbGltOmhyLGVtU3Ryb25nUkRlbGltQXN0Om1yLGVtU3Ryb25nUkRlbGltVW5kOnlyLGVzY2FwZTovXlxcKFshIiMkJSYnKCkqKyxcLS4vOjs8PT4/QFxbXF1cXF5fYHt8fX5dKS8sbGluazpDcixub2xpbms6QXIscHVuY3R1YXRpb246YXIscmVmbGluazpNcixyZWZsaW5rU2VhcmNoOmsoInJlZmxpbmt8bm9saW5rKD8hXFwoKSIsImciKS5yZXBsYWNlKCJyZWZsaW5rIixNcikucmVwbGFjZSgibm9saW5rIixBcikuZ2V0UmVnZXgoKSx0YWc6U3IsdGV4dDovXihgK3xbXmBdKSg/Oig/PSB7Mix9XG4pfFtcc1xTXSo/KD86KD89W1xcPCFcW2AqX118XGJffCQpfFteIF0oPz0gezIsfVxuKSkpLyx1cmw6em59LE5yPXsuLi5FcixsaW5rOmsoL14hP1xbKGxhYmVsKVxdXCgoLio/KVwpLykucmVwbGFjZSgibGFiZWwiLFRyKS5nZXRSZWdleCgpLHJlZmxpbms6aygvXiE/XFsobGFiZWwpXF1ccypcWyhbXlxdXSopXF0vKS5yZXBsYWNlKCJsYWJlbCIsVHIpLmdldFJlZ2V4KCl9LFJyPXsuLi5FcixlbVN0cm9uZ1JEZWxpbUFzdDpncixlbVN0cm9uZ0xEZWxpbTp1cixkZWxMRGVsaW06a3IsZGVsUkRlbGltOndyLHVybDprKC9eKCg/OnByb3RvY29sKTpcL1wvfHd3d1wuKSg/OlthLXpBLVowLTlcLV0rXC4/KStbXlxzPF0qfF5lbWFpbC8pLnJlcGxhY2UoInByb3RvY29sIixPcikucmVwbGFjZSgiZW1haWwiLC9bQS1aYS16MC05Ll8rLV0rKEApW2EtekEtWjAtOS1fXSsoPzpcLlthLXpBLVowLTktX10qW2EtekEtWjAtOV0pKyg/IVstX10pLykuZ2V0UmVnZXgoKSxfYmFja3BlZGFsOi8oPzpbXj8hLiw6OypfJyJ+KCkmXSt8XChbXildKlwpfCYoPyFbYS16QS1aMC05XSs7JCl8Wz8hLiw6OypfJyJ+KV0rKD8hJCkpKy8sZGVsOi9eKH5+PykoPz1bXlxzfl0pKCg/OlxcW1xzXFNdfFteXFxdKSo/KD86XFxbXHNcU118W15cc35cXF0pKVwxKD89W15+XXwkKS8sdGV4dDprKC9eKFtgfl0rfFteYH5dKSg/Oig/PSB7Mix9XG4pfCg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApfFtcc1xTXSo/KD86KD89W1xcPCFcW2Aqfl9dfFxiX3xwcm90b2NvbDpcL1wvfHd3d1wufCQpfFteIF0oPz0gezIsfVxuKXxbXmEtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0oPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKSkpLykucmVwbGFjZSgicHJvdG9jb2wiLE9yKS5nZXRSZWdleCgpfSxEcj17Li4uUnIsYnI6ayhvcikucmVwbGFjZSgiezIsfSIsIioiKS5nZXRSZWdleCgpLHRleHQ6ayhSci50ZXh0KS5yZXBsYWNlKCJcXGJfIiwiXFxiX3wgezIsfVxcbiIpLnJlcGxhY2UoL1x7MixcfS9nLCIqIikuZ2V0UmVnZXgoKX0sUHI9e25vcm1hbDpZbixnZm06bnIscGVkYW50aWM6cnJ9LElyPXtub3JtYWw6RXIsZ2ZtOlJyLGJyZWFrczpEcixwZWRhbnRpYzpOcn0sJHI9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9LGtlPWU9PiRyW2VdO2Z1bmN0aW9uIFQoZSx0KXtpZih0KXtpZihGbi5lc2NhcGVUZXN0LnRlc3QoZSkpcmV0dXJuIGUucmVwbGFjZShGbi5lc2NhcGVSZXBsYWNlLGtlKX1lbHNlIGlmKEZuLmVzY2FwZVRlc3ROb0VuY29kZS50ZXN0KGUpKXJldHVybiBlLnJlcGxhY2UoRm4uZXNjYXBlUmVwbGFjZU5vRW5jb2RlLGtlKTtyZXR1cm4gZX1mdW5jdGlvbiBKKGUpe3RyeXtlPWVuY29kZVVSSShlKS5yZXBsYWNlKEZuLnBlcmNlbnREZWNvZGUsIiUiKX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gZX1mdW5jdGlvbiBWKGUsdCl7bGV0IG49ZS5yZXBsYWNlKEZuLmZpbmRQaXBlLChlLHQsbik9PntsZXQgcj0hMSxvPXQ7Zm9yKDstLW8+PTAmJiJcXCI9PT1uW29dOylyPSFyO3JldHVybiByPyJ8IjoiIHwifSkuc3BsaXQoRm4uc3BsaXRQaXBlKSxyPTA7aWYoblswXS50cmltKCl8fG4uc2hpZnQoKSxuLmxlbmd0aD4wJiYhbi5hdCgtMSk/LnRyaW0oKSYmbi5wb3AoKSx0KWlmKG4ubGVuZ3RoPnQpbi5zcGxpY2UodCk7ZWxzZSBmb3IoO24ubGVuZ3RoPHQ7KW4ucHVzaCgiIik7Zm9yKDtyPG4ubGVuZ3RoO3IrKyluW3JdPW5bcl0udHJpbSgpLnJlcGxhY2UoRm4uc2xhc2hQaXBlLCJ8Iik7cmV0dXJuIG59ZnVuY3Rpb24gSShlLHQsbil7bGV0IHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIiI7bGV0IG89MDtmb3IoO288cjspe2lmKGUuY2hhckF0KHItby0xKSE9PXQpYnJlYWs7bysrfXJldHVybiBlLnNsaWNlKDAsci1vKX1mdW5jdGlvbiBnZShlLHQ9MCl7bGV0IG49dCxyPSIiO2ZvcihsZXQgdCBvZiBlKWlmKCJcdCI9PT10KXtsZXQgZT00LW4lNDtyKz0iICIucmVwZWF0KGUpLG4rPWV9ZWxzZSByKz10LG4rKztyZXR1cm4gcn1mdW5jdGlvbiBmZShlLHQsbixyLG8pe2xldCBpPXQuaHJlZixzPXQudGl0bGV8fG51bGwsbD1lWzFdLnJlcGxhY2Uoby5vdGhlci5vdXRwdXRMaW5rUmVwbGFjZSwiJDEiKTtyLnN0YXRlLmluTGluaz0hMDtsZXQgYT17dHlwZToiISI9PT1lWzBdLmNoYXJBdCgwKT8iaW1hZ2UiOiJsaW5rIixyYXc6bixocmVmOmksdGl0bGU6cyx0ZXh0OmwsdG9rZW5zOnIuaW5saW5lVG9rZW5zKGwpfTtyZXR1cm4gci5zdGF0ZS5pbkxpbms9ITEsYX12YXIgTHI9Y2xhc3N7b3B0aW9ucztydWxlcztsZXhlcjtjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZXx8TG59c3BhY2UoZSl7bGV0IHQ9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMoZSk7aWYodCYmdFswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzp0WzBdfX1jb2RlKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suY29kZS5leGVjKGUpO2lmKHQpe2xldCBlPXRbMF0ucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLmNvZGVSZW1vdmVJbmRlbnQsIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6dFswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP2U6SShlLCJcbiIpfX19ZmVuY2VzKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMoZSk7aWYodCl7bGV0IGU9dFswXSxuPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLm1hdGNoKG4ub3RoZXIuaW5kZW50Q29kZUNvbXBlbnNhdGlvbik7aWYobnVsbD09PXIpcmV0dXJuIHQ7bGV0IG89clsxXTtyZXR1cm4gdC5zcGxpdCgiXG4iKS5tYXAoZT0+e2xldCB0PWUubWF0Y2gobi5vdGhlci5iZWdpbm5pbmdTcGFjZSk7aWYobnVsbD09PXQpcmV0dXJuIGU7bGV0W3JdPXQ7cmV0dXJuIHIubGVuZ3RoPj1vLmxlbmd0aD9lLnNsaWNlKG8ubGVuZ3RoKTplfSkuam9pbigiXG4iKX0oZSx0WzNdfHwiIix0aGlzLnJ1bGVzKTtyZXR1cm57dHlwZToiY29kZSIscmF3OmUsbGFuZzp0WzJdP3RbMl0udHJpbSgpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24sIiQxIik6dFsyXSx0ZXh0Om59fX1oZWFkaW5nKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suaGVhZGluZy5leGVjKGUpO2lmKHQpe2xldCBlPXRbMl0udHJpbSgpO2lmKHRoaXMucnVsZXMub3RoZXIuZW5kaW5nSGFzaC50ZXN0KGUpKXtsZXQgdD1JKGUsIiMiKTsodGhpcy5vcHRpb25zLnBlZGFudGljfHwhdHx8dGhpcy5ydWxlcy5vdGhlci5lbmRpbmdTcGFjZUNoYXIudGVzdCh0KSkmJihlPXQudHJpbSgpKX1yZXR1cm57dHlwZToiaGVhZGluZyIscmF3OnRbMF0sZGVwdGg6dFsxXS5sZW5ndGgsdGV4dDplLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShlKX19fWhyKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2suaHIuZXhlYyhlKTtpZih0KXJldHVybnt0eXBlOiJociIscmF3OkkodFswXSwiXG4iKX19YmxvY2txdW90ZShlKXtsZXQgdD10aGlzLnJ1bGVzLmJsb2NrLmJsb2NrcXVvdGUuZXhlYyhlKTtpZih0KXtsZXQgZT1JKHRbMF0sIlxuIikuc3BsaXQoIlxuIiksbj0iIixyPSIiLG89W107Zm9yKDtlLmxlbmd0aD4wOyl7bGV0IHQsaT0hMSxzPVtdO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU3RhcnQudGVzdChlW3RdKSlzLnB1c2goZVt0XSksaT0hMDtlbHNle2lmKGkpYnJlYWs7cy5wdXNoKGVbdF0pfWU9ZS5zbGljZSh0KTtsZXQgbD1zLmpvaW4oIlxuIiksYT1sLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU2V0ZXh0UmVwbGFjZSwiXG4gICAgJDEiKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIuYmxvY2txdW90ZVNldGV4dFJlcGxhY2UyLCIiKTtuPW4/YCR7bn1cbiR7bH1gOmwscj1yP2Ake3J9XG4ke2F9YDphO2xldCBjPXRoaXMubGV4ZXIuc3RhdGUudG9wO2lmKHRoaXMubGV4ZXIuc3RhdGUudG9wPSEwLHRoaXMubGV4ZXIuYmxvY2tUb2tlbnMoYSxvLCEwKSx0aGlzLmxleGVyLnN0YXRlLnRvcD1jLDA9PT1lLmxlbmd0aClicmVhaztsZXQgZD1vLmF0KC0xKTtpZigiY29kZSI9PT1kPy50eXBlKWJyZWFrO2lmKCJibG9ja3F1b3RlIj09PWQ/LnR5cGUpe2xldCB0PWQsaT10LnJhdysiXG4iK2Uuam9pbigiXG4iKSxzPXRoaXMuYmxvY2txdW90ZShpKTtvW28ubGVuZ3RoLTFdPXMsbj1uLnN1YnN0cmluZygwLG4ubGVuZ3RoLXQucmF3Lmxlbmd0aCkrcy5yYXcscj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLXQudGV4dC5sZW5ndGgpK3MudGV4dDticmVha31pZigibGlzdCI9PT1kPy50eXBlKXtsZXQgdD1kLGk9dC5yYXcrIlxuIitlLmpvaW4oIlxuIikscz10aGlzLmxpc3QoaSk7b1tvLmxlbmd0aC0xXT1zLG49bi5zdWJzdHJpbmcoMCxuLmxlbmd0aC1kLnJhdy5sZW5ndGgpK3MucmF3LHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC10LnJhdy5sZW5ndGgpK3MucmF3LGU9aS5zdWJzdHJpbmcoby5hdCgtMSkucmF3Lmxlbmd0aCkuc3BsaXQoIlxuIik7Y29udGludWV9fXJldHVybnt0eXBlOiJibG9ja3F1b3RlIixyYXc6bix0b2tlbnM6byx0ZXh0OnJ9fX1saXN0KGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKGUpO2lmKHQpe2xldCBuPXRbMV0udHJpbSgpLHI9bi5sZW5ndGg+MSxvPXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpyLHN0YXJ0OnI/K24uc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119O249cj9gXFxkezEsOX1cXCR7bi5zbGljZSgtMSl9YDpgXFwke259YCx0aGlzLm9wdGlvbnMucGVkYW50aWMmJihuPXI/bjoiWyorLV0iKTtsZXQgaT10aGlzLnJ1bGVzLm90aGVyLmxpc3RJdGVtUmVnZXgobikscz0hMTtmb3IoO2U7KXtsZXQgbj0hMSxyPSIiLGw9IiI7aWYoISh0PWkuZXhlYyhlKSl8fHRoaXMucnVsZXMuYmxvY2suaHIudGVzdChlKSlicmVhaztyPXRbMF0sZT1lLnN1YnN0cmluZyhyLmxlbmd0aCk7bGV0IGE9Z2UodFsyXS5zcGxpdCgiXG4iLDEpWzBdLHRbMV0ubGVuZ3RoKSxjPWUuc3BsaXQoIlxuIiwxKVswXSxkPSFhLnRyaW0oKSxwPTA7aWYodGhpcy5vcHRpb25zLnBlZGFudGljPyhwPTIsbD1hLnRyaW1TdGFydCgpKTpkP3A9dFsxXS5sZW5ndGgrMToocD1hLnNlYXJjaCh0aGlzLnJ1bGVzLm90aGVyLm5vblNwYWNlQ2hhcikscD1wPjQ/MTpwLGw9YS5zbGljZShwKSxwKz10WzFdLmxlbmd0aCksZCYmdGhpcy5ydWxlcy5vdGhlci5ibGFua0xpbmUudGVzdChjKSYmKHIrPWMrIlxuIixlPWUuc3Vic3RyaW5nKGMubGVuZ3RoKzEpLG49ITApLCFuKXtsZXQgdD10aGlzLnJ1bGVzLm90aGVyLm5leHRCdWxsZXRSZWdleChwKSxuPXRoaXMucnVsZXMub3RoZXIuaHJSZWdleChwKSxvPXRoaXMucnVsZXMub3RoZXIuZmVuY2VzQmVnaW5SZWdleChwKSxpPXRoaXMucnVsZXMub3RoZXIuaGVhZGluZ0JlZ2luUmVnZXgocCkscz10aGlzLnJ1bGVzLm90aGVyLmh0bWxCZWdpblJlZ2V4KHApLGY9dGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlQmVnaW5SZWdleChwKTtmb3IoO2U7KXtsZXQgbSx5PWUuc3BsaXQoIlxuIiwxKVswXTtpZihjPXksdGhpcy5vcHRpb25zLnBlZGFudGljPyhjPWMucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLmxpc3RSZXBsYWNlTmVzdGluZywiICAiKSxtPWMpOm09Yy5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFiQ2hhckdsb2JhbCwiICAgICIpLG8udGVzdChjKXx8aS50ZXN0KGMpfHxzLnRlc3QoYyl8fGYudGVzdChjKXx8dC50ZXN0KGMpfHxuLnRlc3QoYykpYnJlYWs7aWYobS5zZWFyY2godGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIpPj1wfHwhYy50cmltKCkpbCs9IlxuIittLnNsaWNlKHApO2Vsc2V7aWYoZHx8YS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFiQ2hhckdsb2JhbCwiICAgICIpLnNlYXJjaCh0aGlzLnJ1bGVzLm90aGVyLm5vblNwYWNlQ2hhcik+PTR8fG8udGVzdChhKXx8aS50ZXN0KGEpfHxuLnRlc3QoYSkpYnJlYWs7bCs9IlxuIitjfWQ9IWMudHJpbSgpLHIrPXkrIlxuIixlPWUuc3Vic3RyaW5nKHkubGVuZ3RoKzEpLGE9bS5zbGljZShwKX19by5sb29zZXx8KHM/by5sb29zZT0hMDp0aGlzLnJ1bGVzLm90aGVyLmRvdWJsZUJsYW5rTGluZS50ZXN0KHIpJiYocz0hMCkpLG8uaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6cix0YXNrOiEhdGhpcy5vcHRpb25zLmdmbSYmdGhpcy5ydWxlcy5vdGhlci5saXN0SXNUYXNrLnRlc3QobCksbG9vc2U6ITEsdGV4dDpsLHRva2VuczpbXX0pLG8ucmF3Kz1yfWxldCBsPW8uaXRlbXMuYXQoLTEpO2lmKCFsKXJldHVybjtsLnJhdz1sLnJhdy50cmltRW5kKCksbC50ZXh0PWwudGV4dC50cmltRW5kKCksby5yYXc9by5yYXcudHJpbUVuZCgpO2ZvcihsZXQgZSBvZiBvLml0ZW1zKXtpZih0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxlLnRva2Vucz10aGlzLmxleGVyLmJsb2NrVG9rZW5zKGUudGV4dCxbXSksZS50YXNrKXtpZihlLnRleHQ9ZS50ZXh0LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLCJ0ZXh0Ij09PWUudG9rZW5zWzBdPy50eXBlfHwicGFyYWdyYXBoIj09PWUudG9rZW5zWzBdPy50eXBlKXtlLnRva2Vuc1swXS5yYXc9ZS50b2tlbnNbMF0ucmF3LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLGUudG9rZW5zWzBdLnRleHQ9ZS50b2tlbnNbMF0udGV4dC5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubGlzdFJlcGxhY2VUYXNrLCIiKTtmb3IobGV0IGU9dGhpcy5sZXhlci5pbmxpbmVRdWV1ZS5sZW5ndGgtMTtlPj0wO2UtLSlpZih0aGlzLnJ1bGVzLm90aGVyLmxpc3RJc1Rhc2sudGVzdCh0aGlzLmxleGVyLmlubGluZVF1ZXVlW2VdLnNyYykpe3RoaXMubGV4ZXIuaW5saW5lUXVldWVbZV0uc3JjPXRoaXMubGV4ZXIuaW5saW5lUXVldWVbZV0uc3JjLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpO2JyZWFrfX1sZXQgdD10aGlzLnJ1bGVzLm90aGVyLmxpc3RUYXNrQ2hlY2tib3guZXhlYyhlLnJhdyk7aWYodCl7bGV0IG49e3R5cGU6ImNoZWNrYm94IixyYXc6dFswXSsiICIsY2hlY2tlZDoiWyBdIiE9PXRbMF19O2UuY2hlY2tlZD1uLmNoZWNrZWQsby5sb29zZT9lLnRva2Vuc1swXSYmWyJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoZS50b2tlbnNbMF0udHlwZSkmJiJ0b2tlbnMiaW4gZS50b2tlbnNbMF0mJmUudG9rZW5zWzBdLnRva2Vucz8oZS50b2tlbnNbMF0ucmF3PW4ucmF3K2UudG9rZW5zWzBdLnJhdyxlLnRva2Vuc1swXS50ZXh0PW4ucmF3K2UudG9rZW5zWzBdLnRleHQsZS50b2tlbnNbMF0udG9rZW5zLnVuc2hpZnQobikpOmUudG9rZW5zLnVuc2hpZnQoe3R5cGU6InBhcmFncmFwaCIscmF3Om4ucmF3LHRleHQ6bi5yYXcsdG9rZW5zOltuXX0pOmUudG9rZW5zLnVuc2hpZnQobil9fWlmKCFvLmxvb3NlKXtsZXQgdD1lLnRva2Vucy5maWx0ZXIoZT0+InNwYWNlIj09PWUudHlwZSksbj10Lmxlbmd0aD4wJiZ0LnNvbWUoZT0+dGhpcy5ydWxlcy5vdGhlci5hbnlMaW5lLnRlc3QoZS5yYXcpKTtvLmxvb3NlPW59fWlmKG8ubG9vc2UpZm9yKGxldCBlIG9mIG8uaXRlbXMpe2UubG9vc2U9ITA7Zm9yKGxldCB0IG9mIGUudG9rZW5zKSJ0ZXh0Ij09PXQudHlwZSYmKHQudHlwZT0icGFyYWdyYXBoIil9cmV0dXJuIG99fWh0bWwoZSl7bGV0IHQ9dGhpcy5ydWxlcy5ibG9jay5odG1sLmV4ZWMoZSk7aWYodClyZXR1cm57dHlwZToiaHRtbCIsYmxvY2s6ITAscmF3OnRbMF0scHJlOiJwcmUiPT09dFsxXXx8InNjcmlwdCI9PT10WzFdfHwic3R5bGUiPT09dFsxXSx0ZXh0OnRbMF19fWRlZihlKXtsZXQgdD10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKGUpO2lmKHQpe2xldCBlPXRbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubXVsdGlwbGVTcGFjZUdsb2JhbCwiICIpLG49dFsyXT90WzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ocmVmQnJhY2tldHMsIiQxIikucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbiwiJDEiKToiIixyPXRbM10/dFszXS5zdWJzdHJpbmcoMSx0WzNdLmxlbmd0aC0xKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpOnRbM107cmV0dXJue3R5cGU6ImRlZiIsdGFnOmUscmF3OnRbMF0saHJlZjpuLHRpdGxlOnJ9fX10YWJsZShlKXtsZXQgdD10aGlzLnJ1bGVzLmJsb2NrLnRhYmxlLmV4ZWMoZSk7aWYoIXR8fCF0aGlzLnJ1bGVzLm90aGVyLnRhYmxlRGVsaW1pdGVyLnRlc3QodFsyXSkpcmV0dXJuO2xldCBuPVYodFsxXSkscj10WzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduQ2hhcnMsIiIpLnNwbGl0KCJ8Iiksbz10WzNdPy50cmltKCk/dFszXS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFibGVSb3dCbGFua0xpbmUsIiIpLnNwbGl0KCJcbiIpOltdLGk9e3R5cGU6InRhYmxlIixyYXc6dFswXSxoZWFkZXI6W10sYWxpZ246W10scm93czpbXX07aWYobi5sZW5ndGg9PT1yLmxlbmd0aCl7Zm9yKGxldCBlIG9mIHIpdGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduUmlnaHQudGVzdChlKT9pLmFsaWduLnB1c2goInJpZ2h0Iik6dGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduQ2VudGVyLnRlc3QoZSk/aS5hbGlnbi5wdXNoKCJjZW50ZXIiKTp0aGlzLnJ1bGVzLm90aGVyLnRhYmxlQWxpZ25MZWZ0LnRlc3QoZSk/aS5hbGlnbi5wdXNoKCJsZWZ0Iik6aS5hbGlnbi5wdXNoKG51bGwpO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKWkuaGVhZGVyLnB1c2goe3RleHQ6bltlXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUobltlXSksaGVhZGVyOiEwLGFsaWduOmkuYWxpZ25bZV19KTtmb3IobGV0IGUgb2YgbylpLnJvd3MucHVzaChWKGUsaS5oZWFkZXIubGVuZ3RoKS5tYXAoKGUsdCk9Pih7dGV4dDplLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShlKSxoZWFkZXI6ITEsYWxpZ246aS5hbGlnblt0XX0pKSk7cmV0dXJuIGl9fWxoZWFkaW5nKGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2subGhlYWRpbmcuZXhlYyhlKTtpZih0KXtsZXQgZT10WzFdLnRyaW0oKTtyZXR1cm57dHlwZToiaGVhZGluZyIscmF3OnRbMF0sZGVwdGg6Ij0iPT09dFsyXS5jaGFyQXQoMCk/MToyLHRleHQ6ZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZSl9fX1wYXJhZ3JhcGgoZSl7bGV0IHQ9dGhpcy5ydWxlcy5ibG9jay5wYXJhZ3JhcGguZXhlYyhlKTtpZih0KXtsZXQgZT0iXG4iPT09dFsxXS5jaGFyQXQodFsxXS5sZW5ndGgtMSk/dFsxXS5zbGljZSgwLC0xKTp0WzFdO3JldHVybnt0eXBlOiJwYXJhZ3JhcGgiLHJhdzp0WzBdLHRleHQ6ZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZSl9fX10ZXh0KGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKGUpO2lmKHQpcmV0dXJue3R5cGU6InRleHQiLHJhdzp0WzBdLHRleHQ6dFswXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodFswXSl9fWVzY2FwZShlKXtsZXQgdD10aGlzLnJ1bGVzLmlubGluZS5lc2NhcGUuZXhlYyhlKTtpZih0KXJldHVybnt0eXBlOiJlc2NhcGUiLHJhdzp0WzBdLHRleHQ6dFsxXX19dGFnKGUpe2xldCB0PXRoaXMucnVsZXMuaW5saW5lLnRhZy5leGVjKGUpO2lmKHQpcmV0dXJuIXRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0QVRhZy50ZXN0KHRbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLmVuZEFUYWcudGVzdCh0WzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0UHJlU2NyaXB0VGFnLnRlc3QodFswXSk/dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmdGhpcy5ydWxlcy5vdGhlci5lbmRQcmVTY3JpcHRUYWcudGVzdCh0WzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMSkse3R5cGU6Imh0bWwiLHJhdzp0WzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2NrOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayxibG9jazohMSx0ZXh0OnRbMF19fWxpbmsoZSl7bGV0IHQ9dGhpcy5ydWxlcy5pbmxpbmUubGluay5leGVjKGUpO2lmKHQpe2xldCBlPXRbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJnRoaXMucnVsZXMub3RoZXIuc3RhcnRBbmdsZUJyYWNrZXQudGVzdChlKSl7aWYoIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QoZSkpcmV0dXJuO2xldCB0PUkoZS5zbGljZSgwLC0xKSwiXFwiKTtpZigoZS5sZW5ndGgtdC5sZW5ndGgpJTI9PTApcmV0dXJufWVsc2V7bGV0IGU9ZnVuY3Rpb24oZSx0KXtpZigtMT09PWUuaW5kZXhPZih0WzFdKSlyZXR1cm4tMTtsZXQgbj0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKCJcXCI9PT1lW3JdKXIrKztlbHNlIGlmKGVbcl09PT10WzBdKW4rKztlbHNlIGlmKGVbcl09PT10WzFdJiYobi0tLG48MCkpcmV0dXJuIHI7cmV0dXJuIG4+MD8tMjotMX0odFsyXSwiKCkiKTtpZigtMj09PWUpcmV0dXJuO2lmKGU+LTEpe2xldCBuPSgwPT09dFswXS5pbmRleE9mKCIhIik/NTo0KSt0WzFdLmxlbmd0aCtlO3RbMl09dFsyXS5zdWJzdHJpbmcoMCxlKSx0WzBdPXRbMF0uc3Vic3RyaW5nKDAsbikudHJpbSgpLHRbM109IiJ9fWxldCBuPXRbMl0scj0iIjtpZih0aGlzLm9wdGlvbnMucGVkYW50aWMpe2xldCBlPXRoaXMucnVsZXMub3RoZXIucGVkYW50aWNIcmVmVGl0bGUuZXhlYyhuKTtlJiYobj1lWzFdLHI9ZVszXSl9ZWxzZSByPXRbM10/dFszXS5zbGljZSgxLC0xKToiIjtyZXR1cm4gbj1uLnRyaW0oKSx0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0QW5nbGVCcmFja2V0LnRlc3QobikmJihuPXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QoZSk/bi5zbGljZSgxKTpuLnNsaWNlKDEsLTEpKSxmZSh0LHtocmVmOm4mJm4ucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbiwiJDEiKSx0aXRsZTpyJiZyLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24sIiQxIil9LHRbMF0sdGhpcy5sZXhlcix0aGlzLnJ1bGVzKX19cmVmbGluayhlLHQpe2xldCBuO2lmKChuPXRoaXMucnVsZXMuaW5saW5lLnJlZmxpbmsuZXhlYyhlKSl8fChuPXRoaXMucnVsZXMuaW5saW5lLm5vbGluay5leGVjKGUpKSl7bGV0IGU9dFsoblsyXXx8blsxXSkucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLm11bHRpcGxlU3BhY2VHbG9iYWwsIiAiKS50b0xvd2VyQ2FzZSgpXTtpZighZSl7bGV0IGU9blswXS5jaGFyQXQoMCk7cmV0dXJue3R5cGU6InRleHQiLHJhdzplLHRleHQ6ZX19cmV0dXJuIGZlKG4sZSxuWzBdLHRoaXMubGV4ZXIsdGhpcy5ydWxlcyl9fWVtU3Ryb25nKGUsdCxuPSIiKXtsZXQgcj10aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZ0xEZWxpbS5leGVjKGUpO2lmKHImJihyWzFdfHxyWzJdfHxyWzNdfHxyWzRdKSYmKCFyWzRdfHwhbi5tYXRjaCh0aGlzLnJ1bGVzLm90aGVyLnVuaWNvZGVBbHBoYU51bWVyaWMpKSYmKCFyWzFdJiYhclszXXx8IW58fHRoaXMucnVsZXMuaW5saW5lLnB1bmN0dWF0aW9uLmV4ZWMobikpKXtsZXQgbixvLGk9Wy4uLnJbMF1dLmxlbmd0aC0xLHM9aSxsPTAsYT0iKiI9PT1yWzBdWzBdP3RoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nUkRlbGltQXN0OnRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nUkRlbGltVW5kO2ZvcihhLmxhc3RJbmRleD0wLHQ9dC5zbGljZSgtMSplLmxlbmd0aCtpKTtudWxsIT09KHI9YS5leGVjKHQpKTspe2lmKG49clsxXXx8clsyXXx8clszXXx8cls0XXx8cls1XXx8cls2XSwhbiljb250aW51ZTtpZihvPVsuLi5uXS5sZW5ndGgsclszXXx8cls0XSl7cys9bztjb250aW51ZX1pZigocls1XXx8cls2XSkmJmklMyYmISgoaStvKSUzKSl7bCs9bztjb250aW51ZX1pZihzLT1vLHM+MCljb250aW51ZTtvPU1hdGgubWluKG8sbytzK2wpO2xldCB0PVsuLi5yWzBdXVswXS5sZW5ndGgsYT1lLnNsaWNlKDAsaStyLmluZGV4K3Qrbyk7aWYoTWF0aC5taW4oaSxvKSUyKXtsZXQgZT1hLnNsaWNlKDEsLTEpO3JldHVybnt0eXBlOiJlbSIscmF3OmEsdGV4dDplLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhlKX19bGV0IGM9YS5zbGljZSgyLC0yKTtyZXR1cm57dHlwZToic3Ryb25nIixyYXc6YSx0ZXh0OmMsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGMpfX19fWNvZGVzcGFuKGUpe2xldCB0PXRoaXMucnVsZXMuaW5saW5lLmNvZGUuZXhlYyhlKTtpZih0KXtsZXQgZT10WzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5uZXdMaW5lQ2hhckdsb2JhbCwiICIpLG49dGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIudGVzdChlKSxyPXRoaXMucnVsZXMub3RoZXIuc3RhcnRpbmdTcGFjZUNoYXIudGVzdChlKSYmdGhpcy5ydWxlcy5vdGhlci5lbmRpbmdTcGFjZUNoYXIudGVzdChlKTtyZXR1cm4gbiYmciYmKGU9ZS5zdWJzdHJpbmcoMSxlLmxlbmd0aC0xKSkse3R5cGU6ImNvZGVzcGFuIixyYXc6dFswXSx0ZXh0OmV9fX1icihlKXtsZXQgdD10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKGUpO2lmKHQpcmV0dXJue3R5cGU6ImJyIixyYXc6dFswXX19ZGVsKGUsdCxuPSIiKXtsZXQgcj10aGlzLnJ1bGVzLmlubGluZS5kZWxMRGVsaW0uZXhlYyhlKTtpZihyJiYoIXJbMV18fCFufHx0aGlzLnJ1bGVzLmlubGluZS5wdW5jdHVhdGlvbi5leGVjKG4pKSl7bGV0IG4sbyxpPVsuLi5yWzBdXS5sZW5ndGgtMSxzPWksbD10aGlzLnJ1bGVzLmlubGluZS5kZWxSRGVsaW07Zm9yKGwubGFzdEluZGV4PTAsdD10LnNsaWNlKC0xKmUubGVuZ3RoK2kpO251bGwhPT0ocj1sLmV4ZWModCkpOyl7aWYobj1yWzFdfHxyWzJdfHxyWzNdfHxyWzRdfHxyWzVdfHxyWzZdLCFufHwobz1bLi4ubl0ubGVuZ3RoLG8hPT1pKSljb250aW51ZTtpZihyWzNdfHxyWzRdKXtzKz1vO2NvbnRpbnVlfWlmKHMtPW8scz4wKWNvbnRpbnVlO289TWF0aC5taW4obyxvK3MpO2xldCB0PVsuLi5yWzBdXVswXS5sZW5ndGgsbD1lLnNsaWNlKDAsaStyLmluZGV4K3QrbyksYT1sLnNsaWNlKGksLWkpO3JldHVybnt0eXBlOiJkZWwiLHJhdzpsLHRleHQ6YSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoYSl9fX19YXV0b2xpbmsoZSl7bGV0IHQ9dGhpcy5ydWxlcy5pbmxpbmUuYXV0b2xpbmsuZXhlYyhlKTtpZih0KXtsZXQgZSxuO3JldHVybiJAIj09PXRbMl0/KGU9dFsxXSxuPSJtYWlsdG86IitlKTooZT10WzFdLG49ZSkse3R5cGU6ImxpbmsiLHJhdzp0WzBdLHRleHQ6ZSxocmVmOm4sdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmUsdGV4dDplfV19fX11cmwoZSl7bGV0IHQ7aWYodD10aGlzLnJ1bGVzLmlubGluZS51cmwuZXhlYyhlKSl7bGV0IGUsbjtpZigiQCI9PT10WzJdKWU9dFswXSxuPSJtYWlsdG86IitlO2Vsc2V7bGV0IHI7ZG97cj10WzBdLHRbMF09dGhpcy5ydWxlcy5pbmxpbmUuX2JhY2twZWRhbC5leGVjKHRbMF0pPy5bMF0/PyIifXdoaWxlKHIhPT10WzBdKTtlPXRbMF0sbj0id3d3LiI9PT10WzFdPyJodHRwOi8vIit0WzBdOnRbMF19cmV0dXJue3R5cGU6ImxpbmsiLHJhdzp0WzBdLHRleHQ6ZSxocmVmOm4sdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmUsdGV4dDplfV19fX1pbmxpbmVUZXh0KGUpe2xldCB0PXRoaXMucnVsZXMuaW5saW5lLnRleHQuZXhlYyhlKTtpZih0KXtsZXQgZT10aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s7cmV0dXJue3R5cGU6InRleHQiLHJhdzp0WzBdLHRleHQ6dFswXSxlc2NhcGVkOmV9fX19LHpyPWNsYXNzIHV7dG9rZW5zO29wdGlvbnM7c3RhdGU7aW5saW5lUXVldWU7dG9rZW5pemVyO2NvbnN0cnVjdG9yKGUpe3RoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5zLmxpbmtzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zPWV8fExuLHRoaXMub3B0aW9ucy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcnx8bmV3IExyLHRoaXMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXIsdGhpcy50b2tlbml6ZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy50b2tlbml6ZXIubGV4ZXI9dGhpcyx0aGlzLmlubGluZVF1ZXVlPVtdLHRoaXMuc3RhdGU9e2luTGluazohMSxpblJhd0Jsb2NrOiExLHRvcDohMH07bGV0IHQ9e290aGVyOkZuLGJsb2NrOlByLm5vcm1hbCxpbmxpbmU6SXIubm9ybWFsfTt0aGlzLm9wdGlvbnMucGVkYW50aWM/KHQuYmxvY2s9UHIucGVkYW50aWMsdC5pbmxpbmU9SXIucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJih0LmJsb2NrPVByLmdmbSx0aGlzLm9wdGlvbnMuYnJlYWtzP3QuaW5saW5lPUlyLmJyZWFrczp0LmlubGluZT1Jci5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPXR9c3RhdGljIGdldCBydWxlcygpe3JldHVybntibG9jazpQcixpbmxpbmU6SXJ9fXN0YXRpYyBsZXgoZSx0KXtyZXR1cm4gbmV3IHUodCkubGV4KGUpfXN0YXRpYyBsZXhJbmxpbmUoZSx0KXtyZXR1cm4gbmV3IHUodCkuaW5saW5lVG9rZW5zKGUpfWxleChlKXtlPWUucmVwbGFjZShGbi5jYXJyaWFnZVJldHVybiwiXG4iKSx0aGlzLmJsb2NrVG9rZW5zKGUsdGhpcy50b2tlbnMpO2ZvcihsZXQgZT0wO2U8dGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGg7ZSsrKXtsZXQgdD10aGlzLmlubGluZVF1ZXVlW2VdO3RoaXMuaW5saW5lVG9rZW5zKHQuc3JjLHQudG9rZW5zKX1yZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnRva2Vuc31ibG9ja1Rva2VucyhlLHQ9W10sbj0hMSl7Zm9yKHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5vcHRpb25zLnBlZGFudGljJiYoZT1lLnJlcGxhY2UoRm4udGFiQ2hhckdsb2JhbCwiICAgICIpLnJlcGxhY2UoRm4uc3BhY2VMaW5lLCIiKSk7ZTspe2xldCByO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5ibG9jaz8uc29tZShuPT4hIShyPW4uY2FsbCh7bGV4ZXI6dGhpc30sZSx0KSkmJihlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpLCEwKSkpY29udGludWU7aWYocj10aGlzLnRva2VuaXplci5zcGFjZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOzE9PT1yLnJhdy5sZW5ndGgmJnZvaWQgMCE9PW4/bi5yYXcrPSJcbiI6dC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuY29kZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOyJwYXJhZ3JhcGgiPT09bj8udHlwZXx8InRleHQiPT09bj8udHlwZT8obi5yYXcrPShuLnJhdy5lbmRzV2l0aCgiXG4iKT8iIjoiXG4iKStyLnJhdyxuLnRleHQrPSJcbiIrci50ZXh0LHRoaXMuaW5saW5lUXVldWUuYXQoLTEpLnNyYz1uLnRleHQpOnQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmZlbmNlcyhlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmhlYWRpbmcoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5ocihlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmJsb2NrcXVvdGUoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5saXN0KGUpKXtlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuaHRtbChlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmRlZihlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOyJwYXJhZ3JhcGgiPT09bj8udHlwZXx8InRleHQiPT09bj8udHlwZT8obi5yYXcrPShuLnJhdy5lbmRzV2l0aCgiXG4iKT8iIjoiXG4iKStyLnJhdyxuLnRleHQrPSJcbiIrci5yYXcsdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW4udGV4dCk6dGhpcy50b2tlbnMubGlua3Nbci50YWddfHwodGhpcy50b2tlbnMubGlua3Nbci50YWddPXtocmVmOnIuaHJlZix0aXRsZTpyLnRpdGxlfSx0LnB1c2gocikpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIudGFibGUoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5saGVhZGluZyhlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1sZXQgbz1lO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5zdGFydEJsb2NrKXtsZXQgdCxuPTEvMCxyPWUuc2xpY2UoMSk7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jay5mb3JFYWNoKGU9Pnt0PWUuY2FsbCh7bGV4ZXI6dGhpc30sciksIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wJiYobj1NYXRoLm1pbihuLHQpKX0pLG48MS8wJiZuPj0wJiYobz1lLnN1YnN0cmluZygwLG4rMSkpfWlmKHRoaXMuc3RhdGUudG9wJiYocj10aGlzLnRva2VuaXplci5wYXJhZ3JhcGgobykpKXtsZXQgaT10LmF0KC0xKTtuJiYicGFyYWdyYXBoIj09PWk/LnR5cGU/KGkucmF3Kz0oaS5yYXcuZW5kc1dpdGgoIlxuIik/IiI6IlxuIikrci5yYXcsaS50ZXh0Kz0iXG4iK3IudGV4dCx0aGlzLmlubGluZVF1ZXVlLnBvcCgpLHRoaXMuaW5saW5lUXVldWUuYXQoLTEpLnNyYz1pLnRleHQpOnQucHVzaChyKSxuPW8ubGVuZ3RoIT09ZS5sZW5ndGgsZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIudGV4dChlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpO2xldCBuPXQuYXQoLTEpOyJ0ZXh0Ij09PW4/LnR5cGU/KG4ucmF3Kz0obi5yYXcuZW5kc1dpdGgoIlxuIik/IiI6IlxuIikrci5yYXcsbi50ZXh0Kz0iXG4iK3IudGV4dCx0aGlzLmlubGluZVF1ZXVlLnBvcCgpLHRoaXMuaW5saW5lUXVldWUuYXQoLTEpLnNyYz1uLnRleHQpOnQucHVzaChyKTtjb250aW51ZX1pZihlKXtsZXQgdD0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2UuY2hhckNvZGVBdCgwKTtpZih0aGlzLm9wdGlvbnMuc2lsZW50KXtjb25zb2xlLmVycm9yKHQpO2JyZWFrfXRocm93IG5ldyBFcnJvcih0KX19cmV0dXJuIHRoaXMuc3RhdGUudG9wPSEwLHR9aW5saW5lKGUsdD1bXSl7cmV0dXJuIHRoaXMuaW5saW5lUXVldWUucHVzaCh7c3JjOmUsdG9rZW5zOnR9KSx0fWlubGluZVRva2VucyhlLHQ9W10pe3RoaXMudG9rZW5pemVyLmxleGVyPXRoaXM7bGV0IG4scj1lLG89bnVsbDtpZih0aGlzLnRva2Vucy5saW5rcyl7bGV0IGU9T2JqZWN0LmtleXModGhpcy50b2tlbnMubGlua3MpO2lmKGUubGVuZ3RoPjApZm9yKDtudWxsIT09KG89dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2guZXhlYyhyKSk7KWUuaW5jbHVkZXMob1swXS5zbGljZShvWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYocj1yLnNsaWNlKDAsby5pbmRleCkrIlsiKyJhIi5yZXBlYXQob1swXS5sZW5ndGgtMikrIl0iK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDtudWxsIT09KG89dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmV4ZWMocikpOylyPXIuc2xpY2UoMCxvLmluZGV4KSsiKysiK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmxhc3RJbmRleCk7Zm9yKDtudWxsIT09KG89dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmJsb2NrU2tpcC5leGVjKHIpKTspbj1vWzJdP29bMl0ubGVuZ3RoOjAscj1yLnNsaWNlKDAsby5pbmRleCtuKSsiWyIrImEiLnJlcGVhdChvWzBdLmxlbmd0aC1uLTIpKyJdIityLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAubGFzdEluZGV4KTtyPXRoaXMub3B0aW9ucy5ob29rcz8uZW1TdHJvbmdNYXNrPy5jYWxsKHtsZXhlcjp0aGlzfSxyKT8/cjtsZXQgaT0hMSxzPSIiO2Zvcig7ZTspe2xldCBuO2lmKGl8fChzPSIiKSxpPSExLHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5pbmxpbmU/LnNvbWUocj0+ISEobj1yLmNhbGwoe2xleGVyOnRoaXN9LGUsdCkpJiYoZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKSwhMCkpKWNvbnRpbnVlO2lmKG49dGhpcy50b2tlbml6ZXIuZXNjYXBlKGUpKXtlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksdC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIudGFnKGUpKXtlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksdC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIubGluayhlKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKTtjb250aW51ZX1pZihuPXRoaXMudG9rZW5pemVyLnJlZmxpbmsoZSx0aGlzLnRva2Vucy5saW5rcykpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKTtsZXQgcj10LmF0KC0xKTsidGV4dCI9PT1uLnR5cGUmJiJ0ZXh0Ij09PXI/LnR5cGU/KHIucmF3Kz1uLnJhdyxyLnRleHQrPW4udGV4dCk6dC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIuZW1TdHJvbmcoZSxyLHMpKXtlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksdC5wdXNoKG4pO2NvbnRpbnVlfWlmKG49dGhpcy50b2tlbml6ZXIuY29kZXNwYW4oZSkpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSx0LnB1c2gobik7Y29udGludWV9aWYobj10aGlzLnRva2VuaXplci5icihlKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKTtjb250aW51ZX1pZihuPXRoaXMudG9rZW5pemVyLmRlbChlLHIscykpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSx0LnB1c2gobik7Y29udGludWV9aWYobj10aGlzLnRva2VuaXplci5hdXRvbGluayhlKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHQucHVzaChuKTtjb250aW51ZX1pZighdGhpcy5zdGF0ZS5pbkxpbmsmJihuPXRoaXMudG9rZW5pemVyLnVybChlKSkpe2U9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSx0LnB1c2gobik7Y29udGludWV9bGV0IG89ZTtpZih0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucz8uc3RhcnRJbmxpbmUpe2xldCB0LG49MS8wLHI9ZS5zbGljZSgxKTt0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZS5mb3JFYWNoKGU9Pnt0PWUuY2FsbCh7bGV4ZXI6dGhpc30sciksIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wJiYobj1NYXRoLm1pbihuLHQpKX0pLG48MS8wJiZuPj0wJiYobz1lLnN1YnN0cmluZygwLG4rMSkpfWlmKG49dGhpcy50b2tlbml6ZXIuaW5saW5lVGV4dChvKSl7ZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLCJfIiE9PW4ucmF3LnNsaWNlKC0xKSYmKHM9bi5yYXcuc2xpY2UoLTEpKSxpPSEwO2xldCByPXQuYXQoLTEpOyJ0ZXh0Ij09PXI/LnR5cGU/KHIucmF3Kz1uLnJhdyxyLnRleHQrPW4udGV4dCk6dC5wdXNoKG4pO2NvbnRpbnVlfWlmKGUpe2xldCB0PSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpe2NvbnNvbGUuZXJyb3IodCk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKHQpfX1yZXR1cm4gdH19LEJyPWNsYXNze29wdGlvbnM7cGFyc2VyO2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lfHxMbn1zcGFjZShlKXtyZXR1cm4iIn1jb2RlKHt0ZXh0OmUsbGFuZzp0LGVzY2FwZWQ6bn0pe2xldCByPSh0fHwiIikubWF0Y2goRm4ubm90U3BhY2VTdGFydCk/LlswXSxvPWUucmVwbGFjZShGbi5lbmRpbmdOZXdsaW5lLCIiKSsiXG4iO3JldHVybiByPyc8cHJlPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS0nK1QocikrJyI+Jysobj9vOlQobywhMCkpKyI8L2NvZGU+PC9wcmU+XG4iOiI8cHJlPjxjb2RlPiIrKG4/bzpUKG8sITApKSsiPC9jb2RlPjwvcHJlPlxuIn1ibG9ja3F1b3RlKHt0b2tlbnM6ZX0pe3JldHVybmA8YmxvY2txdW90ZT5cbiR7dGhpcy5wYXJzZXIucGFyc2UoZSl9PC9ibG9ja3F1b3RlPlxuYH1odG1sKHt0ZXh0OmV9KXtyZXR1cm4gZX1kZWYoZSl7cmV0dXJuIiJ9aGVhZGluZyh7dG9rZW5zOmUsZGVwdGg6dH0pe3JldHVybmA8aCR7dH0+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShlKX08L2gke3R9PlxuYH1ocihlKXtyZXR1cm4iPGhyPlxuIn1saXN0KGUpe2xldCB0PWUub3JkZXJlZCxuPWUuc3RhcnQscj0iIjtmb3IobGV0IHQ9MDt0PGUuaXRlbXMubGVuZ3RoO3QrKyl7bGV0IG49ZS5pdGVtc1t0XTtyKz10aGlzLmxpc3RpdGVtKG4pfWxldCBvPXQ/Im9sIjoidWwiO3JldHVybiI8IitvKyh0JiYxIT09bj8nIHN0YXJ0PSInK24rJyInOiIiKSsiPlxuIityKyI8LyIrbysiPlxuIn1saXN0aXRlbShlKXtyZXR1cm5gPGxpPiR7dGhpcy5wYXJzZXIucGFyc2UoZS50b2tlbnMpfTwvbGk+XG5gfWNoZWNrYm94KHtjaGVja2VkOmV9KXtyZXR1cm4iPGlucHV0ICIrKGU/J2NoZWNrZWQ9IiIgJzoiIikrJ2Rpc2FibGVkPSIiIHR5cGU9ImNoZWNrYm94Ij4gJ31wYXJhZ3JhcGgoe3Rva2VuczplfSl7cmV0dXJuYDxwPiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZSl9PC9wPlxuYH10YWJsZShlKXtsZXQgdD0iIixuPSIiO2ZvcihsZXQgdD0wO3Q8ZS5oZWFkZXIubGVuZ3RoO3QrKyluKz10aGlzLnRhYmxlY2VsbChlLmhlYWRlclt0XSk7dCs9dGhpcy50YWJsZXJvdyh7dGV4dDpufSk7bGV0IHI9IiI7Zm9yKGxldCB0PTA7dDxlLnJvd3MubGVuZ3RoO3QrKyl7bGV0IG89ZS5yb3dzW3RdO249IiI7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspbis9dGhpcy50YWJsZWNlbGwob1tlXSk7cis9dGhpcy50YWJsZXJvdyh7dGV4dDpufSl9cmV0dXJuIHImJihyPWA8dGJvZHk+JHtyfTwvdGJvZHk+YCksIjx0YWJsZT5cbjx0aGVhZD5cbiIrdCsiPC90aGVhZD5cbiIrcisiPC90YWJsZT5cbiJ9dGFibGVyb3coe3RleHQ6ZX0pe3JldHVybmA8dHI+XG4ke2V9PC90cj5cbmB9dGFibGVjZWxsKGUpe2xldCB0PXRoaXMucGFyc2VyLnBhcnNlSW5saW5lKGUudG9rZW5zKSxuPWUuaGVhZGVyPyJ0aCI6InRkIjtyZXR1cm4oZS5hbGlnbj9gPCR7bn0gYWxpZ249IiR7ZS5hbGlnbn0iPmA6YDwke259PmApK3QrYDwvJHtufT5cbmB9c3Ryb25nKHt0b2tlbnM6ZX0pe3JldHVybmA8c3Ryb25nPiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZSl9PC9zdHJvbmc+YH1lbSh7dG9rZW5zOmV9KXtyZXR1cm5gPGVtPiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZSl9PC9lbT5gfWNvZGVzcGFuKHt0ZXh0OmV9KXtyZXR1cm5gPGNvZGU+JHtUKGUsITApfTwvY29kZT5gfWJyKGUpe3JldHVybiI8YnI+In1kZWwoe3Rva2VuczplfSl7cmV0dXJuYDxkZWw+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShlKX08L2RlbD5gfWxpbmsoe2hyZWY6ZSx0aXRsZTp0LHRva2VuczpufSl7bGV0IHI9dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUobiksbz1KKGUpO2lmKG51bGw9PT1vKXJldHVybiByO2xldCBpPSc8YSBocmVmPSInKyhlPW8pKyciJztyZXR1cm4gdCYmKGkrPScgdGl0bGU9IicrVCh0KSsnIicpLGkrPSI+IityKyI8L2E+IixpfWltYWdlKHtocmVmOmUsdGl0bGU6dCx0ZXh0Om4sdG9rZW5zOnJ9KXtyJiYobj10aGlzLnBhcnNlci5wYXJzZUlubGluZShyLHRoaXMucGFyc2VyLnRleHRSZW5kZXJlcikpO2xldCBvPUooZSk7aWYobnVsbD09PW8pcmV0dXJuIFQobik7bGV0IGk9YDxpbWcgc3JjPSIke2U9b30iIGFsdD0iJHtUKG4pfSJgO3JldHVybiB0JiYoaSs9YCB0aXRsZT0iJHtUKHQpfSJgKSxpKz0iPiIsaX10ZXh0KGUpe3JldHVybiJ0b2tlbnMiaW4gZSYmZS50b2tlbnM/dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUoZS50b2tlbnMpOiJlc2NhcGVkImluIGUmJmUuZXNjYXBlZD9lLnRleHQ6VChlLnRleHQpfX0sRnI9Y2xhc3N7c3Ryb25nKHt0ZXh0OmV9KXtyZXR1cm4gZX1lbSh7dGV4dDplfSl7cmV0dXJuIGV9Y29kZXNwYW4oe3RleHQ6ZX0pe3JldHVybiBlfWRlbCh7dGV4dDplfSl7cmV0dXJuIGV9aHRtbCh7dGV4dDplfSl7cmV0dXJuIGV9dGV4dCh7dGV4dDplfSl7cmV0dXJuIGV9bGluayh7dGV4dDplfSl7cmV0dXJuIiIrZX1pbWFnZSh7dGV4dDplfSl7cmV0dXJuIiIrZX1icigpe3JldHVybiIifWNoZWNrYm94KHtyYXc6ZX0pe3JldHVybiBlfX0sSHI9Y2xhc3MgdXtvcHRpb25zO3JlbmRlcmVyO3RleHRSZW5kZXJlcjtjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZXx8TG4sdGhpcy5vcHRpb25zLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcnx8bmV3IEJyLHRoaXMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyLHRoaXMucmVuZGVyZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy5yZW5kZXJlci5wYXJzZXI9dGhpcyx0aGlzLnRleHRSZW5kZXJlcj1uZXcgRnJ9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuIG5ldyB1KHQpLnBhcnNlKGUpfXN0YXRpYyBwYXJzZUlubGluZShlLHQpe3JldHVybiBuZXcgdSh0KS5wYXJzZUlubGluZShlKX1wYXJzZShlKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCB0PSIiO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgcj1lW25dO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltyLnR5cGVdKXtsZXQgZT1yLG49dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW2UudHlwZV0uY2FsbCh7cGFyc2VyOnRoaXN9LGUpO2lmKCExIT09bnx8IVsic3BhY2UiLCJociIsImhlYWRpbmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJkZWYiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoZS50eXBlKSl7dCs9bnx8IiI7Y29udGludWV9fWxldCBvPXI7c3dpdGNoKG8udHlwZSl7Y2FzZSJzcGFjZSI6dCs9dGhpcy5yZW5kZXJlci5zcGFjZShvKTticmVhaztjYXNlImhyIjp0Kz10aGlzLnJlbmRlcmVyLmhyKG8pO2JyZWFrO2Nhc2UiaGVhZGluZyI6dCs9dGhpcy5yZW5kZXJlci5oZWFkaW5nKG8pO2JyZWFrO2Nhc2UiY29kZSI6dCs9dGhpcy5yZW5kZXJlci5jb2RlKG8pO2JyZWFrO2Nhc2UidGFibGUiOnQrPXRoaXMucmVuZGVyZXIudGFibGUobyk7YnJlYWs7Y2FzZSJibG9ja3F1b3RlIjp0Kz10aGlzLnJlbmRlcmVyLmJsb2NrcXVvdGUobyk7YnJlYWs7Y2FzZSJsaXN0Ijp0Kz10aGlzLnJlbmRlcmVyLmxpc3Qobyk7YnJlYWs7Y2FzZSJjaGVja2JveCI6dCs9dGhpcy5yZW5kZXJlci5jaGVja2JveChvKTticmVhaztjYXNlImh0bWwiOnQrPXRoaXMucmVuZGVyZXIuaHRtbChvKTticmVhaztjYXNlImRlZiI6dCs9dGhpcy5yZW5kZXJlci5kZWYobyk7YnJlYWs7Y2FzZSJwYXJhZ3JhcGgiOnQrPXRoaXMucmVuZGVyZXIucGFyYWdyYXBoKG8pO2JyZWFrO2Nhc2UidGV4dCI6dCs9dGhpcy5yZW5kZXJlci50ZXh0KG8pO2JyZWFrO2RlZmF1bHQ6e2xldCBlPSdUb2tlbiB3aXRoICInK28udHlwZSsnIiB0eXBlIHdhcyBub3QgZm91bmQuJztpZih0aGlzLm9wdGlvbnMuc2lsZW50KXJldHVybiBjb25zb2xlLmVycm9yKGUpLCIiO3Rocm93IG5ldyBFcnJvcihlKX19fXJldHVybiB0fXBhcnNlSW5saW5lKGUsdD10aGlzLnJlbmRlcmVyKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCBuPSIiO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbz1lW3JdO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltvLnR5cGVdKXtsZXQgZT10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbby50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sbyk7aWYoITEhPT1lfHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKG8udHlwZSkpe24rPWV8fCIiO2NvbnRpbnVlfX1sZXQgaT1vO3N3aXRjaChpLnR5cGUpe2Nhc2UiZXNjYXBlIjpjYXNlInRleHQiOm4rPXQudGV4dChpKTticmVhaztjYXNlImh0bWwiOm4rPXQuaHRtbChpKTticmVhaztjYXNlImxpbmsiOm4rPXQubGluayhpKTticmVhaztjYXNlImltYWdlIjpuKz10LmltYWdlKGkpO2JyZWFrO2Nhc2UiY2hlY2tib3giOm4rPXQuY2hlY2tib3goaSk7YnJlYWs7Y2FzZSJzdHJvbmciOm4rPXQuc3Ryb25nKGkpO2JyZWFrO2Nhc2UiZW0iOm4rPXQuZW0oaSk7YnJlYWs7Y2FzZSJjb2Rlc3BhbiI6bis9dC5jb2Rlc3BhbihpKTticmVhaztjYXNlImJyIjpuKz10LmJyKGkpO2JyZWFrO2Nhc2UiZGVsIjpuKz10LmRlbChpKTticmVhaztkZWZhdWx0OntsZXQgZT0nVG9rZW4gd2l0aCAiJytpLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gY29uc29sZS5lcnJvcihlKSwiIjt0aHJvdyBuZXcgRXJyb3IoZSl9fX1yZXR1cm4gbn19LFZyPWNsYXNze29wdGlvbnM7YmxvY2s7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWV8fExufXN0YXRpYyBwYXNzVGhyb3VnaEhvb2tzPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIiwiZW1TdHJvbmdNYXNrIl0pO3N0YXRpYyBwYXNzVGhyb3VnaEhvb2tzUmVzcGVjdEFzeW5jPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIl0pO3ByZXByb2Nlc3MoZSl7cmV0dXJuIGV9cG9zdHByb2Nlc3MoZSl7cmV0dXJuIGV9cHJvY2Vzc0FsbFRva2VucyhlKXtyZXR1cm4gZX1lbVN0cm9uZ01hc2soZSl7cmV0dXJuIGV9cHJvdmlkZUxleGVyKGU9dGhpcy5ibG9jayl7cmV0dXJuIGU/enIubGV4OnpyLmxleElubGluZX1wcm92aWRlUGFyc2VyKGU9dGhpcy5ibG9jayl7cmV0dXJuIGU/SHIucGFyc2U6SHIucGFyc2VJbmxpbmV9fSxfcj1uZXcgY2xhc3N7ZGVmYXVsdHM9e2FzeW5jOiExLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhvb2tzOm51bGwscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzaWxlbnQ6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsfTtvcHRpb25zPXRoaXMuc2V0T3B0aW9ucztwYXJzZT10aGlzLnBhcnNlTWFya2Rvd24oITApO3BhcnNlSW5saW5lPXRoaXMucGFyc2VNYXJrZG93bighMSk7UGFyc2VyPUhyO1JlbmRlcmVyPUJyO1RleHRSZW5kZXJlcj1GcjtMZXhlcj16cjtUb2tlbml6ZXI9THI7SG9va3M9VnI7Y29uc3RydWN0b3IoLi4uZSl7dGhpcy51c2UoLi4uZSl9d2Fsa1Rva2VucyhlLHQpe2xldCBuPVtdO2ZvcihsZXQgciBvZiBlKXN3aXRjaChuPW4uY29uY2F0KHQuY2FsbCh0aGlzLHIpKSxyLnR5cGUpe2Nhc2UidGFibGUiOntsZXQgZT1yO2ZvcihsZXQgciBvZiBlLmhlYWRlciluPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhyLnRva2Vucyx0KSk7Zm9yKGxldCByIG9mIGUucm93cylmb3IobGV0IGUgb2YgciluPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhlLnRva2Vucyx0KSk7YnJlYWt9Y2FzZSJsaXN0Ijp7bGV0IGU9cjtuPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhlLml0ZW1zLHQpKTticmVha31kZWZhdWx0OntsZXQgZT1yO3RoaXMuZGVmYXVsdHMuZXh0ZW5zaW9ucz8uY2hpbGRUb2tlbnM/LltlLnR5cGVdP3RoaXMuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1tlLnR5cGVdLmZvckVhY2gocj0+e2xldCBvPWVbcl0uZmxhdCgxLzApO249bi5jb25jYXQodGhpcy53YWxrVG9rZW5zKG8sdCkpfSk6ZS50b2tlbnMmJihuPW4uY29uY2F0KHRoaXMud2Fsa1Rva2VucyhlLnRva2Vucyx0KSkpfX1yZXR1cm4gbn11c2UoLi4uZSl7bGV0IHQ9dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fTtyZXR1cm4gZS5mb3JFYWNoKGU9PntsZXQgbj17Li4uZX07aWYobi5hc3luYz10aGlzLmRlZmF1bHRzLmFzeW5jfHxuLmFzeW5jfHwhMSxlLmV4dGVuc2lvbnMmJihlLmV4dGVuc2lvbnMuZm9yRWFjaChlPT57aWYoIWUubmFtZSl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBuYW1lIHJlcXVpcmVkIik7aWYoInJlbmRlcmVyImluIGUpe2xldCBuPXQucmVuZGVyZXJzW2UubmFtZV07dC5yZW5kZXJlcnNbZS5uYW1lXT1uP2Z1bmN0aW9uKC4uLnQpe2xldCByPWUucmVuZGVyZXIuYXBwbHkodGhpcyx0KTtyZXR1cm4hMT09PXImJihyPW4uYXBwbHkodGhpcyx0KSkscn06ZS5yZW5kZXJlcn1pZigidG9rZW5pemVyImluIGUpe2lmKCFlLmxldmVsfHwiYmxvY2siIT09ZS5sZXZlbCYmImlubGluZSIhPT1lLmxldmVsKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIGxldmVsIG11c3QgYmUgJ2Jsb2NrJyBvciAnaW5saW5lJyIpO2xldCBuPXRbZS5sZXZlbF07bj9uLnVuc2hpZnQoZS50b2tlbml6ZXIpOnRbZS5sZXZlbF09W2UudG9rZW5pemVyXSxlLnN0YXJ0JiYoImJsb2NrIj09PWUubGV2ZWw/dC5zdGFydEJsb2NrP3Quc3RhcnRCbG9jay5wdXNoKGUuc3RhcnQpOnQuc3RhcnRCbG9jaz1bZS5zdGFydF06ImlubGluZSI9PT1lLmxldmVsJiYodC5zdGFydElubGluZT90LnN0YXJ0SW5saW5lLnB1c2goZS5zdGFydCk6dC5zdGFydElubGluZT1bZS5zdGFydF0pKX0iY2hpbGRUb2tlbnMiaW4gZSYmZS5jaGlsZFRva2VucyYmKHQuY2hpbGRUb2tlbnNbZS5uYW1lXT1lLmNoaWxkVG9rZW5zKX0pLG4uZXh0ZW5zaW9ucz10KSxlLnJlbmRlcmVyKXtsZXQgdD10aGlzLmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgQnIodGhpcy5kZWZhdWx0cyk7Zm9yKGxldCBuIGluIGUucmVuZGVyZXIpe2lmKCEobiBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoYHJlbmRlcmVyICcke259JyBkb2VzIG5vdCBleGlzdGApO2lmKFsib3B0aW9ucyIsInBhcnNlciJdLmluY2x1ZGVzKG4pKWNvbnRpbnVlO2xldCByPW4sbz1lLnJlbmRlcmVyW3JdLGk9dFtyXTt0W3JdPSguLi5lKT0+e2xldCBuPW8uYXBwbHkodCxlKTtyZXR1cm4hMT09PW4mJihuPWkuYXBwbHkodCxlKSksbnx8IiJ9fW4ucmVuZGVyZXI9dH1pZihlLnRva2VuaXplcil7bGV0IHQ9dGhpcy5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBMcih0aGlzLmRlZmF1bHRzKTtmb3IobGV0IG4gaW4gZS50b2tlbml6ZXIpe2lmKCEobiBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoYHRva2VuaXplciAnJHtufScgZG9lcyBub3QgZXhpc3RgKTtpZihbIm9wdGlvbnMiLCJydWxlcyIsImxleGVyIl0uaW5jbHVkZXMobikpY29udGludWU7bGV0IHI9bixvPWUudG9rZW5pemVyW3JdLGk9dFtyXTt0W3JdPSguLi5lKT0+e2xldCBuPW8uYXBwbHkodCxlKTtyZXR1cm4hMT09PW4mJihuPWkuYXBwbHkodCxlKSksbn19bi50b2tlbml6ZXI9dH1pZihlLmhvb2tzKXtsZXQgdD10aGlzLmRlZmF1bHRzLmhvb2tzfHxuZXcgVnI7Zm9yKGxldCBuIGluIGUuaG9va3Mpe2lmKCEobiBpbiB0KSl0aHJvdyBuZXcgRXJyb3IoYGhvb2sgJyR7bn0nIGRvZXMgbm90IGV4aXN0YCk7aWYoWyJvcHRpb25zIiwiYmxvY2siXS5pbmNsdWRlcyhuKSljb250aW51ZTtsZXQgcj1uLG89ZS5ob29rc1tyXSxpPXRbcl07VnIucGFzc1Rocm91Z2hIb29rcy5oYXMobik/dFtyXT1lPT57aWYodGhpcy5kZWZhdWx0cy5hc3luYyYmVnIucGFzc1Rocm91Z2hIb29rc1Jlc3BlY3RBc3luYy5oYXMobikpcmV0dXJuKGFzeW5jKCk9PntsZXQgbj1hd2FpdCBvLmNhbGwodCxlKTtyZXR1cm4gaS5jYWxsKHQsbil9KSgpO2xldCByPW8uY2FsbCh0LGUpO3JldHVybiBpLmNhbGwodCxyKX06dFtyXT0oLi4uZSk9PntpZih0aGlzLmRlZmF1bHRzLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IG49YXdhaXQgby5hcHBseSh0LGUpO3JldHVybiExPT09biYmKG49YXdhaXQgaS5hcHBseSh0LGUpKSxufSkoKTtsZXQgbj1vLmFwcGx5KHQsZSk7cmV0dXJuITE9PT1uJiYobj1pLmFwcGx5KHQsZSkpLG59fW4uaG9va3M9dH1pZihlLndhbGtUb2tlbnMpe2xldCB0PXRoaXMuZGVmYXVsdHMud2Fsa1Rva2VucyxyPWUud2Fsa1Rva2VucztuLndhbGtUb2tlbnM9ZnVuY3Rpb24oZSl7bGV0IG49W107cmV0dXJuIG4ucHVzaChyLmNhbGwodGhpcyxlKSksdCYmKG49bi5jb25jYXQodC5jYWxsKHRoaXMsZSkpKSxufX10aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLm59fSksdGhpc31zZXRPcHRpb25zKGUpe3JldHVybiB0aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLmV9LHRoaXN9bGV4ZXIoZSx0KXtyZXR1cm4genIubGV4KGUsdD8/dGhpcy5kZWZhdWx0cyl9cGFyc2VyKGUsdCl7cmV0dXJuIEhyLnBhcnNlKGUsdD8/dGhpcy5kZWZhdWx0cyl9cGFyc2VNYXJrZG93bihlKXtyZXR1cm4odCxuKT0+e2xldCByPXsuLi5ufSxvPXsuLi50aGlzLmRlZmF1bHRzLC4uLnJ9LGk9dGhpcy5vbkVycm9yKCEhby5zaWxlbnQsISFvLmFzeW5jKTtpZighMD09PXRoaXMuZGVmYXVsdHMuYXN5bmMmJiExPT09ci5hc3luYylyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBUaGUgYXN5bmMgb3B0aW9uIHdhcyBzZXQgdG8gdHJ1ZSBieSBhbiBleHRlbnNpb24uIFJlbW92ZSBhc3luYzogZmFsc2UgZnJvbSB0aGUgcGFyc2Ugb3B0aW9ucyBvYmplY3QgdG8gcmV0dXJuIGEgUHJvbWlzZS4iKSk7aWYodHlwZW9mIHQ+InUifHxudWxsPT09dClyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBpKG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKyIsIHN0cmluZyBleHBlY3RlZCIpKTtpZihvLmhvb2tzJiYoby5ob29rcy5vcHRpb25zPW8sby5ob29rcy5ibG9jaz1lKSxvLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IG49by5ob29rcz9hd2FpdCBvLmhvb2tzLnByZXByb2Nlc3ModCk6dCxyPWF3YWl0KG8uaG9va3M/YXdhaXQgby5ob29rcy5wcm92aWRlTGV4ZXIoZSk6ZT96ci5sZXg6enIubGV4SW5saW5lKShuLG8pLGk9by5ob29rcz9hd2FpdCBvLmhvb2tzLnByb2Nlc3NBbGxUb2tlbnMocik6cjtvLndhbGtUb2tlbnMmJmF3YWl0IFByb21pc2UuYWxsKHRoaXMud2Fsa1Rva2VucyhpLG8ud2Fsa1Rva2VucykpO2xldCBzPWF3YWl0KG8uaG9va3M/YXdhaXQgby5ob29rcy5wcm92aWRlUGFyc2VyKGUpOmU/SHIucGFyc2U6SHIucGFyc2VJbmxpbmUpKGksbyk7cmV0dXJuIG8uaG9va3M/YXdhaXQgby5ob29rcy5wb3N0cHJvY2VzcyhzKTpzfSkoKS5jYXRjaChpKTt0cnl7by5ob29rcyYmKHQ9by5ob29rcy5wcmVwcm9jZXNzKHQpKTtsZXQgbj0oby5ob29rcz9vLmhvb2tzLnByb3ZpZGVMZXhlcihlKTplP3pyLmxleDp6ci5sZXhJbmxpbmUpKHQsbyk7by5ob29rcyYmKG49by5ob29rcy5wcm9jZXNzQWxsVG9rZW5zKG4pKSxvLndhbGtUb2tlbnMmJnRoaXMud2Fsa1Rva2VucyhuLG8ud2Fsa1Rva2Vucyk7bGV0IHI9KG8uaG9va3M/by5ob29rcy5wcm92aWRlUGFyc2VyKGUpOmU/SHIucGFyc2U6SHIucGFyc2VJbmxpbmUpKG4sbyk7cmV0dXJuIG8uaG9va3MmJihyPW8uaG9va3MucG9zdHByb2Nlc3MocikpLHJ9Y2F0Y2goZSl7cmV0dXJuIGkoZSl9fX1vbkVycm9yKGUsdCl7cmV0dXJuIG49PntpZihuLm1lc3NhZ2UrPSJcblBsZWFzZSByZXBvcnQgdGhpcyB0byBodHRwczovL2dpdGh1Yi5jb20vbWFya2VkanMvbWFya2VkLiIsZSl7bGV0IGU9IjxwPkFuIGVycm9yIG9jY3VycmVkOjwvcD48cHJlPiIrVChuLm1lc3NhZ2UrIiIsITApKyI8L3ByZT4iO3JldHVybiB0P1Byb21pc2UucmVzb2x2ZShlKTplfWlmKHQpcmV0dXJuIFByb21pc2UucmVqZWN0KG4pO3Rocm93IG59fX07ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBfci5wYXJzZShlLHQpfWZ1bmN0aW9uIHdyYXBJbk1hcmtkb3duQmxvY2soZSx0KXtjb25zdCBuPXQuc3BsaXQoIlxuIikuZmxhdE1hcChlPT5bZSwiIl0pLm1hcCh0PT5gJHtlfSR7dH1gKS5qb2luKCJcbiIpO3JldHVybiBuLnNsaWNlKDAsbi5sZW5ndGgtMSl9ZnVuY3Rpb24gaXNUYXNrSXRlbShlKXtjb25zdCB0PShlLnJhd3x8ZS50ZXh0fHwiIikubWF0Y2goL14oXHMqKVstKypdXHMrXFsoWyB4WF0pXF1ccysvKTtyZXR1cm4gdD97aXNUYXNrOiEwLGNoZWNrZWQ6IngiPT09dFsyXS50b0xvd2VyQ2FzZSgpLGluZGVudExldmVsOnRbMV0ubGVuZ3RofTp7aXNUYXNrOiExLGluZGVudExldmVsOjB9fWZ1bmN0aW9uIGFzc3VtZUNvbnRlbnRUeXBlKGUsdCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlPyJqc29uIjp0fWcub3B0aW9ucz1nLnNldE9wdGlvbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIF9yLnNldE9wdGlvbnMoZSksZy5kZWZhdWx0cz1fci5kZWZhdWx0cyxHKGcuZGVmYXVsdHMpLGd9LGcuZ2V0RGVmYXVsdHM9TSxnLmRlZmF1bHRzPUxuLGcudXNlPWZ1bmN0aW9uKC4uLmUpe3JldHVybiBfci51c2UoLi4uZSksZy5kZWZhdWx0cz1fci5kZWZhdWx0cyxHKGcuZGVmYXVsdHMpLGd9LGcud2Fsa1Rva2Vucz1mdW5jdGlvbihlLHQpe3JldHVybiBfci53YWxrVG9rZW5zKGUsdCl9LGcucGFyc2VJbmxpbmU9X3IucGFyc2VJbmxpbmUsZy5QYXJzZXI9SHIsZy5wYXJzZXI9SHIucGFyc2UsZy5SZW5kZXJlcj1CcixnLlRleHRSZW5kZXJlcj1GcixnLkxleGVyPXpyLGcubGV4ZXI9enIubGV4LGcuVG9rZW5pemVyPUxyLGcuSG9va3M9VnIsZy5wYXJzZT1nLGcub3B0aW9ucyxnLnNldE9wdGlvbnMsZy51c2UsZy53YWxrVG9rZW5zLGcucGFyc2VJbmxpbmUsSHIucGFyc2UsenIubGV4O3ZhciBqcj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt2YXIgdCxuLHIsbyxpO2lmKHRoaXMuYWN0aXZlUGFyc2VMZXhlcj1udWxsLHRoaXMuYmFzZUV4dGVuc2lvbnM9W10sdGhpcy5leHRlbnNpb25zPVtdLHRoaXMuY29kZVR5cGVzPW5ldyBTZXQsdGhpcy5sYXN0UGFyc2VSZXN1bHQ9bnVsbCx0aGlzLm1hcmtlZEluc3RhbmNlPW51bGwhPSh0PW51bGw9PWU/dm9pZCAwOmUubWFya2VkKT90OmcsdGhpcy5pbmRlbnRTdHlsZT1udWxsIT0ocj1udWxsPT0obj1udWxsPT1lP3ZvaWQgMDplLmluZGVudGF0aW9uKT92b2lkIDA6bi5zdHlsZSk/cjoic3BhY2UiLHRoaXMuaW5kZW50U2l6ZT1udWxsIT0oaT1udWxsPT0obz1udWxsPT1lP3ZvaWQgMDplLmluZGVudGF0aW9uKT92b2lkIDA6by5zaXplKT9pOjIsdGhpcy5iYXNlRXh0ZW5zaW9ucz0obnVsbD09ZT92b2lkIDA6ZS5leHRlbnNpb25zKXx8W10sKG51bGw9PWU/dm9pZCAwOmUubWFya2VkT3B0aW9ucykmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm1hcmtlZEluc3RhbmNlLnNldE9wdGlvbnMmJnRoaXMubWFya2VkSW5zdGFuY2Uuc2V0T3B0aW9ucyhlLm1hcmtlZE9wdGlvbnMpLHRoaXMucmVnaXN0cnk9bmV3IE1hcCx0aGlzLm5vZGVUeXBlUmVnaXN0cnk9bmV3IE1hcCxudWxsPT1lP3ZvaWQgMDplLmV4dGVuc2lvbnMpe3RoaXMuYmFzZUV4dGVuc2lvbnM9ZS5leHRlbnNpb25zO2ZsYXR0ZW5FeHRlbnNpb25zKGUuZXh0ZW5zaW9ucykuZm9yRWFjaChlPT50aGlzLnJlZ2lzdGVyRXh0ZW5zaW9uKGUpKX19Z2V0IGluc3RhbmNlKCl7cmV0dXJuIHRoaXMubWFya2VkSW5zdGFuY2V9Z2V0IGluZGVudENoYXJhY3Rlcigpe3JldHVybiJzcGFjZSI9PT10aGlzLmluZGVudFN0eWxlPyIgIjoiXHQifWdldCBpbmRlbnRTdHJpbmcoKXtyZXR1cm4gdGhpcy5pbmRlbnRDaGFyYWN0ZXIucmVwZWF0KHRoaXMuaW5kZW50U2l6ZSl9aGFzTWFya2VkKCl7cmV0dXJuISF0aGlzLm1hcmtlZEluc3RhbmNlfXJlZ2lzdGVyRXh0ZW5zaW9uKGUpe3ZhciB0LG47dGhpcy5leHRlbnNpb25zLnB1c2goZSk7Y29uc3Qgcj1jYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZSwiY29kZSIpKSxvPWUubmFtZTtyJiZ0aGlzLmNvZGVUeXBlcy5hZGQobyk7Y29uc3QgaT1nZXRFeHRlbnNpb25GaWVsZChlLCJtYXJrZG93blRva2VuTmFtZSIpfHxvLHM9Z2V0RXh0ZW5zaW9uRmllbGQoZSwicGFyc2VNYXJrZG93biIpLGw9Z2V0RXh0ZW5zaW9uRmllbGQoZSwicmVuZGVyTWFya2Rvd24iKSxhPWdldEV4dGVuc2lvbkZpZWxkKGUsIm1hcmtkb3duVG9rZW5pemVyIiksYz1udWxsIT0odD1nZXRFeHRlbnNpb25GaWVsZChlLCJtYXJrZG93bk9wdGlvbnMiKSk/dDpudWxsLGQ9e3Rva2VuTmFtZTppLG5vZGVOYW1lOm8scGFyc2VNYXJrZG93bjpzLHJlbmRlck1hcmtkb3duOmwsaXNJbmRlbnRpbmc6bnVsbCE9KG49bnVsbD09Yz92b2lkIDA6Yy5pbmRlbnRzQ29udGVudCkmJm4saHRtbFJlb3BlbjpudWxsPT1jP3ZvaWQgMDpjLmh0bWxSZW9wZW4sdG9rZW5pemVyOmF9O2lmKGkmJnMpe2NvbnN0IGU9dGhpcy5yZWdpc3RyeS5nZXQoaSl8fFtdO2UucHVzaChkKSx0aGlzLnJlZ2lzdHJ5LnNldChpLGUpfWlmKGwpe2NvbnN0IGU9dGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LmdldChvKXx8W107ZS5wdXNoKGQpLHRoaXMubm9kZVR5cGVSZWdpc3RyeS5zZXQobyxlKX1hJiZ0aGlzLmhhc01hcmtlZCgpJiZ0aGlzLnJlZ2lzdGVyVG9rZW5pemVyKGEpfWNyZWF0ZUxleGVyKCl7cmV0dXJuIG5ldyB0aGlzLm1hcmtlZEluc3RhbmNlLkxleGVyfWNyZWF0ZVRva2VuaXplckhlbHBlcnMoZSl7cmV0dXJue2lubGluZVRva2Vuczp0PT5lLmlubGluZVRva2Vucyh0KSxibG9ja1Rva2Vuczp0PT5lLmJsb2NrVG9rZW5zKHQpfX10b2tlbml6ZUlubGluZShlKXt2YXIgdDtyZXR1cm4obnVsbCE9KHQ9dGhpcy5hY3RpdmVQYXJzZUxleGVyKT90OnRoaXMuY3JlYXRlTGV4ZXIoKSkuaW5saW5lVG9rZW5zKGUpfXJlZ2lzdGVyVG9rZW5pemVyKGUpe2lmKCF0aGlzLmhhc01hcmtlZCgpKXJldHVybjtjb25zdHtuYW1lOnQsc3RhcnQ6bixsZXZlbDpyPSJpbmxpbmUiLHRva2VuaXplOm99PWUsaT10aGlzLmNyZWF0ZVRva2VuaXplckhlbHBlcnMuYmluZCh0aGlzKSxzPXRoaXMuY3JlYXRlTGV4ZXIuYmluZCh0aGlzKTtsZXQgbDtsPW4/ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjplPT5lLmluZGV4T2Yobik6ZT0+e2NvbnN0IHQ9byhlLFtdLHRoaXMuY3JlYXRlVG9rZW5pemVySGVscGVycyh0aGlzLmNyZWF0ZUxleGVyKCkpKTtpZih0JiZ0LnJhdyl7cmV0dXJuIGUuaW5kZXhPZih0LnJhdyl9cmV0dXJuLTF9O2NvbnN0IGE9e25hbWU6dCxsZXZlbDpyLHN0YXJ0OmwsdG9rZW5pemVyKGUsbil7Y29uc3Qgcj10aGlzLmxleGVyP2kodGhpcy5sZXhlcik6aShzKCkpLGw9byhlLG4scik7aWYobCYmbC50eXBlKXJldHVybnsuLi5sLHR5cGU6bC50eXBlfHx0LHJhdzpsLnJhd3x8IiIsdG9rZW5zOmwudG9rZW5zfHxbXX19LGNoaWxkVG9rZW5zOltdfTt0aGlzLm1hcmtlZEluc3RhbmNlLnVzZSh7ZXh0ZW5zaW9uczpbYV19KX1nZXRIYW5kbGVyc0ZvclRva2VuKGUpe3RyeXtyZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQoZSl8fFtdfWNhdGNoe3JldHVybltdfX1nZXRIYW5kbGVyRm9yVG9rZW4oZSl7Y29uc3QgdD10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4oZSk7aWYodC5sZW5ndGg+MClyZXR1cm4gdFswXTtjb25zdCBuPXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShlKTtyZXR1cm4gbi5sZW5ndGg+MD9uWzBdOnZvaWQgMH1nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKGUpe3RyeXtyZXR1cm4gdGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LmdldChlKXx8W119Y2F0Y2h7cmV0dXJuW119fXNlcmlhbGl6ZShlKXtpZighZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMucmVuZGVyTm9kZXMoZSxlKTtyZXR1cm4gdGhpcy5pc0VtcHR5T3V0cHV0KHQpPyIiOnR9aXNFbXB0eU91dHB1dChlKXtpZighZXx8IiI9PT1lLnRyaW0oKSlyZXR1cm4hMDtyZXR1cm4iIj09PWUucmVwbGFjZSgvJm5ic3A7L2csIiIpLnJlcGxhY2UoL1x1MDBBMC9nLCIiKS50cmltKCl9cGFyc2UoZSl7aWYoIXRoaXMuaGFzTWFya2VkKCkpdGhyb3cgbmV3IEVycm9yKCJObyBtYXJrZWQgaW5zdGFuY2UgYXZhaWxhYmxlIGZvciBwYXJzaW5nIik7Y29uc3QgdD10aGlzLmFjdGl2ZVBhcnNlTGV4ZXIsbj10aGlzLmNyZWF0ZUxleGVyKCk7dGhpcy5hY3RpdmVQYXJzZUxleGVyPW47dHJ5e2NvbnN0IHQ9bi5sZXgoZSk7cmV0dXJue3R5cGU6ImRvYyIsY29udGVudDp0aGlzLnBhcnNlVG9rZW5zKHQsITApfX1maW5hbGx5e3RoaXMuYWN0aXZlUGFyc2VMZXhlcj10fX1wYXJzZVRva2VucyhlLHQ9ITEpe2NvbnN0IG49ZS5yZWR1Y2UoKGUsdCxuKT0+KCJzcGFjZSIhPT10LnR5cGUmJmUucHVzaChuKSxlKSxbXSk7bGV0IHI9LTEsbz0wO3JldHVybiBlLmZsYXRNYXAoKGUsaSk9Pntmb3IodmFyIHM7bzxuLmxlbmd0aCYmbltvXTxpOylyPW5bb10sbys9MTtpZih0JiYic3BhY2UiPT09ZS50eXBlKXtjb25zdCB0PW51bGwhPShzPW5bb10pP3M6LTE7cmV0dXJuIHRoaXMuY3JlYXRlSW1wbGljaXRFbXB0eVBhcmFncmFwaHNGcm9tU3BhY2UoZSxyLHQpfWNvbnN0IGw9dGhpcy5wYXJzZVRva2VuKGUsdCk7cmV0dXJuIG51bGw9PT1sP1tdOkFycmF5LmlzQXJyYXkobCk/bDpbbF19KX1jcmVhdGVJbXBsaWNpdEVtcHR5UGFyYWdyYXBoc0Zyb21TcGFjZShlLHQsbil7Y29uc3Qgcj10aGlzLmNvdW50UGFyYWdyYXBoU2VwYXJhdG9ycyhlLnJhd3x8IiIpO2lmKDA9PT1yKXJldHVybltdO2NvbnN0IG89LTE9PT10fHwtMT09PW4saT1NYXRoLm1heChyLShvPzA6MSksMCk7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDppfSwoKT0+KHt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6W119KSl9Y291bnRQYXJhZ3JhcGhTZXBhcmF0b3JzKGUpe3JldHVybihlLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5tYXRjaCgvXG5cbi9nKXx8W10pLmxlbmd0aH1wYXJzZVRva2VuKGUsdD0hMSl7aWYoIWUudHlwZSlyZXR1cm4gbnVsbDtpZigibGlzdCI9PT1lLnR5cGUpcmV0dXJuIHRoaXMucGFyc2VMaXN0VG9rZW4oZSk7Y29uc3Qgbj10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4oZS50eXBlKSxyPXRoaXMuY3JlYXRlUGFyc2VIZWxwZXJzKCk7aWYobi5maW5kKHQ9PntpZighdC5wYXJzZU1hcmtkb3duKXJldHVybiExO2NvbnN0IG49dC5wYXJzZU1hcmtkb3duKGUsciksbz10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KG4pO3JldHVybiEoIW98fEFycmF5LmlzQXJyYXkobykmJiEoby5sZW5ndGg+MCkpJiYodGhpcy5sYXN0UGFyc2VSZXN1bHQ9bywhMCl9KSYmdGhpcy5sYXN0UGFyc2VSZXN1bHQpe2NvbnN0IGU9dGhpcy5sYXN0UGFyc2VSZXN1bHQ7cmV0dXJuIHRoaXMubGFzdFBhcnNlUmVzdWx0PW51bGwsZX1yZXR1cm4gdGhpcy5wYXJzZUZhbGxiYWNrVG9rZW4oZSx0KX1wYXJzZUxpc3RUb2tlbihlKXtpZighZS5pdGVtc3x8MD09PWUuaXRlbXMubGVuZ3RoKXJldHVybiB0aGlzLnBhcnNlVG9rZW5XaXRoSGFuZGxlcnMoZSk7Y29uc3QgdD1lLml0ZW1zLnNvbWUoZT0+aXNUYXNrSXRlbShlKS5pc1Rhc2spLG49ZS5pdGVtcy5zb21lKGU9PiFpc1Rhc2tJdGVtKGUpLmlzVGFzayk7aWYoIXR8fCFufHwwPT09dGhpcy5nZXRIYW5kbGVyc0ZvclRva2VuKCJ0YXNrTGlzdCIpLmxlbmd0aClyZXR1cm4gdGhpcy5wYXJzZVRva2VuV2l0aEhhbmRsZXJzKGUpO2NvbnN0IHI9W107bGV0IG89W10saT1udWxsO2ZvcihsZXQgdD0wO3Q8ZS5pdGVtcy5sZW5ndGg7dCs9MSl7Y29uc3Qgbj1lLml0ZW1zW3RdLHtpc1Rhc2s6cyxjaGVja2VkOmwsaW5kZW50TGV2ZWw6YX09aXNUYXNrSXRlbShuKTtsZXQgYz1uO2lmKHMpe2NvbnN0IGU9KG4ucmF3fHxuLnRleHR8fCIiKS5zcGxpdCgiXG4iKSx0PWVbMF0ubWF0Y2goL15ccypbLSsqXVxzK1xbKFsgeFhdKVxdXHMrKC4qKSQvKSxyPXQ/dFsyXToiIjtsZXQgbz1bXTtpZihlLmxlbmd0aD4xKXtpZihlLnNsaWNlKDEpLmpvaW4oIlxuIikudHJpbSgpKXtjb25zdCB0PWUuc2xpY2UoMSksbj10LmZpbHRlcihlPT5lLnRyaW0oKSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi5uLm1hcChlPT5lLmxlbmd0aC1lLnRyaW1TdGFydCgpLmxlbmd0aCkpLHI9dC5tYXAodD0+dC50cmltKCk/dC5zbGljZShlKToiIikuam9pbigiXG4iKS50cmltKCk7ciYmKG89dGhpcy5tYXJrZWRJbnN0YW5jZS5sZXhlcihgJHtyfVxuYCkpfX19Yz17dHlwZToidGFza0l0ZW0iLHJhdzoiIixtYWluQ29udGVudDpyLGluZGVudExldmVsOmEsY2hlY2tlZDpudWxsIT1sJiZsLHRleHQ6cix0b2tlbnM6dGhpcy50b2tlbml6ZUlubGluZShyKSxuZXN0ZWRUb2tlbnM6b319Y29uc3QgZD1zPyJ0YXNrTGlzdCI6Imxpc3QiO2khPT1kPyhvLmxlbmd0aD4wJiZyLnB1c2goe3R5cGU6aSxpdGVtczpvfSksbz1bY10saT1kKTpvLnB1c2goYyl9by5sZW5ndGg+MCYmci5wdXNoKHt0eXBlOmksaXRlbXM6b30pO2NvbnN0IHM9W107Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kz0xKXtjb25zdCBuPXJbdF0sbz17Li4uZSx0eXBlOm4udHlwZSxpdGVtczpuLml0ZW1zfSxpPXRoaXMucGFyc2VUb2tlbihvKTtpJiYoQXJyYXkuaXNBcnJheShpKT9zLnB1c2goLi4uaSk6cy5wdXNoKGkpKX1yZXR1cm4gcy5sZW5ndGg+MD9zOm51bGx9cGFyc2VUb2tlbldpdGhIYW5kbGVycyhlKXtpZighZS50eXBlKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5nZXRIYW5kbGVyc0ZvclRva2VuKGUudHlwZSksbj10aGlzLmNyZWF0ZVBhcnNlSGVscGVycygpO2lmKHQuZmluZCh0PT57aWYoIXQucGFyc2VNYXJrZG93bilyZXR1cm4hMTtjb25zdCByPXQucGFyc2VNYXJrZG93bihlLG4pLG89dGhpcy5ub3JtYWxpemVQYXJzZVJlc3VsdChyKTtyZXR1cm4hKCFvfHxBcnJheS5pc0FycmF5KG8pJiYhKG8ubGVuZ3RoPjApKSYmKHRoaXMubGFzdFBhcnNlUmVzdWx0PW8sITApfSkmJnRoaXMubGFzdFBhcnNlUmVzdWx0KXtjb25zdCBlPXRoaXMubGFzdFBhcnNlUmVzdWx0O3JldHVybiB0aGlzLmxhc3RQYXJzZVJlc3VsdD1udWxsLGV9cmV0dXJuIHRoaXMucGFyc2VGYWxsYmFja1Rva2VuKGUpfWNyZWF0ZVBhcnNlSGVscGVycygpe3JldHVybntwYXJzZUlubGluZTplPT50aGlzLnBhcnNlSW5saW5lVG9rZW5zKGUpLHBhcnNlQ2hpbGRyZW46ZT0+dGhpcy5wYXJzZVRva2VucyhlKSxwYXJzZUJsb2NrQ2hpbGRyZW46ZT0+dGhpcy5wYXJzZVRva2VucyhlLCEwKSxjcmVhdGVUZXh0Tm9kZTooZSx0KT0+KHt0eXBlOiJ0ZXh0Iix0ZXh0OmUsbWFya3M6dHx8dm9pZCAwfSksY3JlYXRlTm9kZTooZSx0LG4pPT57Y29uc3Qgcj17dHlwZTplLGF0dHJzOnR8fHZvaWQgMCxjb250ZW50Om58fHZvaWQgMH07cmV0dXJuIHQmJjAhPT1PYmplY3Qua2V5cyh0KS5sZW5ndGh8fGRlbGV0ZSByLmF0dHJzLHJ9LGFwcGx5TWFyazooZSx0LG4pPT4oe21hcms6ZSxjb250ZW50OnQsYXR0cnM6biYmT2JqZWN0LmtleXMobikubGVuZ3RoPjA/bjp2b2lkIDB9KX19ZXNjYXBlUmVnZXgoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1wYXJzZUlubGluZVRva2VucyhlKXt2YXIgdCxuLHIsbztjb25zdCBpPVtdO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cys9MSl7Y29uc3QgbD1lW3NdO2lmKCJ0ZXh0Ij09PWwudHlwZSlpLnB1c2goe3R5cGU6InRleHQiLHRleHQ6ZGVjb2RlSHRtbEVudGl0aWVzKGwudGV4dHx8IiIpfSk7ZWxzZSBpZigiaHRtbCI9PT1sLnR5cGUpe2NvbnN0IGE9KG51bGwhPShuPW51bGwhPSh0PWwucmF3KT90OmwudGV4dCk/bjoiIikudG9TdHJpbmcoKSxjPS9ePFwvW1xzXSpbXHctXSsvaS50ZXN0KGEpLGQ9YS5tYXRjaCgvXjxbXHNdKihbXHctXSspKFxzfD58XC98JCkvaSk7aWYoIWMmJmQmJiEvXC8+JC8udGVzdChhKSl7Y29uc3QgdD1kWzFdLG49dGhpcy5lc2NhcGVSZWdleCh0KSxsPW5ldyBSZWdFeHAoYF48XFwvXFxzKiR7bn1cXGJgLCJpIik7bGV0IGM9LTE7Y29uc3QgcD1bYV07Zm9yKGxldCB0PXMrMTt0PGUubGVuZ3RoO3QrPTEpe2NvbnN0IG49ZVt0XSxpPShudWxsIT0obz1udWxsIT0ocj1uLnJhdyk/cjpuLnRleHQpP286IiIpLnRvU3RyaW5nKCk7aWYocC5wdXNoKGkpLCJodG1sIj09PW4udHlwZSYmbC50ZXN0KGkpKXtjPXQ7YnJlYWt9fWlmKC0xIT09Yyl7Y29uc3QgZT1wLmpvaW4oIiIpLHQ9e3R5cGU6Imh0bWwiLHJhdzplLHRleHQ6ZSxibG9jazohMX0sbj10aGlzLnBhcnNlSFRNTFRva2VuKHQpO2lmKG4pe2NvbnN0IGU9dGhpcy5ub3JtYWxpemVQYXJzZVJlc3VsdChuKTtBcnJheS5pc0FycmF5KGUpP2kucHVzaCguLi5lKTplJiZpLnB1c2goZSl9cz1jO2NvbnRpbnVlfX1jb25zdCBwPXRoaXMucGFyc2VIVE1MVG9rZW4obCk7aWYocCl7Y29uc3QgZT10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KHApO0FycmF5LmlzQXJyYXkoZSk/aS5wdXNoKC4uLmUpOmUmJmkucHVzaChlKX19ZWxzZSBpZihsLnR5cGUpe2NvbnN0IGU9dGhpcy5nZXRIYW5kbGVyRm9yVG9rZW4obC50eXBlKTtpZihlJiZlLnBhcnNlTWFya2Rvd24pe2NvbnN0IHQ9dGhpcy5jcmVhdGVQYXJzZUhlbHBlcnMoKSxuPWUucGFyc2VNYXJrZG93bihsLHQpO2lmKHRoaXMuaXNNYXJrUmVzdWx0KG4pKXtjb25zdCBlPXRoaXMuYXBwbHlNYXJrVG9Db250ZW50KG4ubWFyayxuLmNvbnRlbnQsbi5hdHRycyk7aS5wdXNoKC4uLmUpfWVsc2V7Y29uc3QgZT10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KG4pO0FycmF5LmlzQXJyYXkoZSk/aS5wdXNoKC4uLmUpOmUmJmkucHVzaChlKX19ZWxzZSBsLnRva2VucyYmaS5wdXNoKC4uLnRoaXMucGFyc2VJbmxpbmVUb2tlbnMobC50b2tlbnMpKX19cmV0dXJuIGl9YXBwbHlNYXJrVG9Db250ZW50KGUsdCxuKXtyZXR1cm4gdC5tYXAodD0+e2lmKCJ0ZXh0Ij09PXQudHlwZSl7Y29uc3Qgcj10Lm1hcmtzfHxbXSxvPW4/e3R5cGU6ZSxhdHRyczpufTp7dHlwZTplfTtyZXR1cm57Li4udCxtYXJrczpbLi4ucixvXX19cmV0dXJuey4uLnQsY29udGVudDp0LmNvbnRlbnQ/dGhpcy5hcHBseU1hcmtUb0NvbnRlbnQoZSx0LmNvbnRlbnQsbik6dm9pZCAwfX0pfWlzTWFya1Jlc3VsdChlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYibWFyayJpbiBlfW5vcm1hbGl6ZVBhcnNlUmVzdWx0KGUpe3JldHVybiBlP3RoaXMuaXNNYXJrUmVzdWx0KGUpP2UuY29udGVudDplOm51bGx9cGFyc2VGYWxsYmFja1Rva2VuKGUsdD0hMSl7c3dpdGNoKGUudHlwZSl7Y2FzZSJwYXJhZ3JhcGgiOnJldHVybnt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6ZS50b2tlbnM/dGhpcy5wYXJzZUlubGluZVRva2VucyhlLnRva2Vucyk6W119O2Nhc2UiaGVhZGluZyI6cmV0dXJue3R5cGU6ImhlYWRpbmciLGF0dHJzOntsZXZlbDplLmRlcHRofHwxfSxjb250ZW50OmUudG9rZW5zP3RoaXMucGFyc2VJbmxpbmVUb2tlbnMoZS50b2tlbnMpOltdfTtjYXNlInRleHQiOnJldHVybnt0eXBlOiJ0ZXh0Iix0ZXh0OmRlY29kZUh0bWxFbnRpdGllcyhlLnRleHR8fCIiKX07Y2FzZSJodG1sIjpyZXR1cm4gdGhpcy5wYXJzZUhUTUxUb2tlbihlKTtjYXNlInNwYWNlIjpyZXR1cm4gbnVsbDtkZWZhdWx0OnJldHVybiBlLnRva2Vucz90aGlzLnBhcnNlVG9rZW5zKGUudG9rZW5zLHQpOm51bGx9fXBhcnNlSFRNTFRva2VuKGUpe2NvbnN0IHQ9ZS50ZXh0fHxlLnJhd3x8IiI7cmV0dXJuIHQudHJpbSgpP2UuYmxvY2s/e3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6dH1dfTp7dHlwZToidGV4dCIsdGV4dDp0fTpudWxsfWVuY29kZVRleHRGb3JNYXJrZG93bihlLHQsbil7Y29uc3Qgcj1udWxsIT0obnVsbD09bj92b2lkIDA6bi50eXBlKSYmdGhpcy5jb2RlVHlwZXMuaGFzKG4udHlwZSl8fCh0Lm1hcmtzfHxbXSkuc29tZShlPT50aGlzLmNvZGVUeXBlcy5oYXMoInN0cmluZyI9PXR5cGVvZiBlP2U6ZS50eXBlKSk7cmV0dXJuIHI/ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9KGUpfXJlbmRlck5vZGVUb01hcmtkb3duKGUsdCxuPTAscj0wLG89e30pe3ZhciBpO2lmKCJ0ZXh0Ij09PWUudHlwZSlyZXR1cm4gdGhpcy5lbmNvZGVUZXh0Rm9yTWFya2Rvd24oZS50ZXh0fHwiIixlLHQpO2lmKCFlLnR5cGUpcmV0dXJuIiI7Y29uc3Qgcz10aGlzLmdldEhhbmRsZXJGb3JUb2tlbihlLnR5cGUpO2lmKCFzKXJldHVybiIiO2NvbnN0IGw9QXJyYXkuaXNBcnJheShudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnQpJiZuPjA/dC5jb250ZW50W24tMV06dm9pZCAwLGE9e3JlbmRlckNoaWxkcmVuOih0LG8pPT57Y29uc3QgaT1zLmlzSW5kZW50aW5nP3IrMTpyO3JldHVybiFBcnJheS5pc0FycmF5KHQpJiZ0LmNvbnRlbnQ/dGhpcy5yZW5kZXJOb2Rlcyh0LmNvbnRlbnQsZSxvfHwiIixuLGkpOnRoaXMucmVuZGVyTm9kZXModCxlLG98fCIiLG4saSl9LHJlbmRlckNoaWxkOih0LG4pPT57Y29uc3Qgbz1zLmlzSW5kZW50aW5nP3IrMTpyO3JldHVybiB0aGlzLnJlbmRlck5vZGVUb01hcmtkb3duKHQsZSxuLG8pfSxpbmRlbnQ6ZT0+dGhpcy5pbmRlbnRTdHJpbmcrZSx3cmFwSW5CbG9jazp3cmFwSW5NYXJrZG93bkJsb2NrfSxjPXtpbmRleDpuLGxldmVsOnIscGFyZW50VHlwZTpudWxsPT10P3ZvaWQgMDp0LnR5cGUscHJldmlvdXNOb2RlOmwsbWV0YTp7cGFyZW50QXR0cnM6bnVsbD09dD92b2lkIDA6dC5hdHRycywuLi5vfX07cmV0dXJuKG51bGw9PShpPXMucmVuZGVyTWFya2Rvd24pP3ZvaWQgMDppLmNhbGwocyxlLGEsYykpfHwiIn1yZW5kZXJOb2RlcyhlLHQsbj0iIixyPTAsbz0wKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT90aGlzLnJlbmRlck5vZGVzV2l0aE1hcmtCb3VuZGFyaWVzKGUsdCxuLG8pOmUudHlwZT90aGlzLnJlbmRlck5vZGVUb01hcmtkb3duKGUsdCxyLG8pOiIifXJlbmRlck5vZGVzV2l0aE1hcmtCb3VuZGFyaWVzKGUsdCxuPSIiLHI9MCl7Y29uc3Qgbz1bXSxpPW5ldyBNYXAscz1uZXcgU2V0LGw9bmV3IE1hcDtyZXR1cm4gZS5mb3JFYWNoKChuLGEpPT57Y29uc3QgYz1hPGUubGVuZ3RoLTE/ZVthKzFdOm51bGw7aWYobi50eXBlKWlmKCJ0ZXh0Ij09PW4udHlwZSl7bGV0IGU9dGhpcy5lbmNvZGVUZXh0Rm9yTWFya2Rvd24obi50ZXh0fHwiIixuLHQpO2NvbnN0IHI9bmV3IE1hcCgobi5tYXJrc3x8W10pLm1hcChlPT5bZS50eXBlLGVdKSksYT1mdW5jdGlvbihlLHQpe2NvbnN0IG49W107cmV0dXJuIEFycmF5LmZyb20odC5lbnRyaWVzKCkpLmZvckVhY2goKFt0LHJdKT0+e2UuaGFzKHQpfHxuLnB1c2goe3R5cGU6dCxtYXJrOnJ9KX0pLG59KGksciksZD1mdW5jdGlvbihlLHQpe2NvbnN0IG49W107cmV0dXJuIEFycmF5LmZyb20oZS5rZXlzKCkpLmZvckVhY2goZT0+e3QmJnQubWFya3MmJnQubWFya3MubWFwKGU9PmUudHlwZSkuaW5jbHVkZXMoZSl8fG4ucHVzaChlKX0pLG59KHIsYykscD1kLmZpbHRlcihlPT5pLmhhcyhlKSksZj1wLmxlbmd0aD4wJiZhLmxlbmd0aD4wO2xldCBtPSIiO2lmKGQubGVuZ3RoPjAmJiFmKXtjb25zdCB0PWUubWF0Y2goLyhccyspJC8pO3QmJihtPXRbMV0sZT1lLnNsaWNlKDAsLW0ubGVuZ3RoKSl9Znx8ZC5mb3JFYWNoKHQ9PntpZighaS5oYXModCkpcmV0dXJuO2NvbnN0IG49ci5nZXQodCksbz10aGlzLmdldE1hcmtDbG9zaW5nKHQsbixsLmdldCh0KSk7byYmKGUrPW8pLGkuaGFzKHQpJiYoaS5kZWxldGUodCksbC5kZWxldGUodCkpfSk7bGV0IHksdz0iIjtpZihhLmxlbmd0aD4wKXtjb25zdCB0PWUubWF0Y2goL14oXHMrKS8pO3QmJih3PXRbMV0sZT1lLnNsaWNlKHcubGVuZ3RoKSl9aWYoYS5mb3JFYWNoKCh7dHlwZTp0LG1hcms6bn0pPT57Y29uc3Qgcj1zLmhhcyh0KT8iaHRtbCI6Im1hcmtkb3duIixvPXRoaXMuZ2V0TWFya09wZW5pbmcodCxuLHIpO28mJihlPW8rZSksbC5zZXQodCxyKSxzLmRlbGV0ZSh0KX0pLGZ8fGEuc2xpY2UoKS5yZXZlcnNlKCkuZm9yRWFjaCgoe3R5cGU6ZSxtYXJrOnR9KT0+e2kuc2V0KGUsdCl9KSxlPXcrZSxmKXtjb25zdCBlPW5ldyBTZXQoKChudWxsPT1jP3ZvaWQgMDpjLm1hcmtzKXx8W10pLm1hcChlPT5lLnR5cGUpKTthLmZvckVhY2goKHt0eXBlOnR9KT0+e2UuaGFzKHQpJiZ0aGlzLmdldEh0bWxSZW9wZW5UYWdzKHQpJiZzLmFkZCh0KX0pLHk9Wy4uLmEubWFwKGU9PmUudHlwZSksLi4ucF19ZWxzZSB5PWZ1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89IW4saT1uJiYidGV4dCI9PT1uLnR5cGUmJighbi5tYXJrc3x8MD09PW4ubWFya3MubGVuZ3RoKSxzPW4mJiJ0ZXh0Ij09PW4udHlwZSYmbi5tYXJrcyYmIXIodCxuZXcgTWFwKG4ubWFya3MubWFwKGU9PltlLnR5cGUsZV0pKSksbD1bXTtpZihvfHxpfHxzKWlmKG4mJiJ0ZXh0Ij09PW4udHlwZSYmbi5tYXJrcyl7Y29uc3QgdD1uZXcgTWFwKG4ubWFya3MubWFwKGU9PltlLnR5cGUsZV0pKTtBcnJheS5mcm9tKGUua2V5cygpKS5yZXZlcnNlKCkuZm9yRWFjaChlPT57dC5oYXMoZSl8fGwucHVzaChlKX0pfWVsc2Uob3x8aSkmJmwucHVzaCguLi5BcnJheS5mcm9tKGUua2V5cygpKS5yZXZlcnNlKCkpO3JldHVybiBsfShpLHIsYyx0aGlzLm1hcmtTZXRzRXF1YWwuYmluZCh0aGlzKSk7bGV0IGI9IiI7aWYoeS5sZW5ndGg+MCl7Y29uc3QgdD1lLm1hdGNoKC8oXHMrKSQvKTt0JiYoYj10WzFdLGU9ZS5zbGljZSgwLC1iLmxlbmd0aCkpfXkuZm9yRWFjaCh0PT57dmFyIG47Y29uc3Qgbz1udWxsIT0obj1pLmdldCh0KSk/bjpyLmdldCh0KSxzPXRoaXMuZ2V0TWFya0Nsb3NpbmcodCxvLGwuZ2V0KHQpKTtzJiYoZSs9cyksaS5kZWxldGUodCksbC5kZWxldGUodCl9KSxlKz1iLGUrPW0sby5wdXNoKGUpfWVsc2V7Y29uc3QgZT1uZXcgTWFwKGkpLHM9bmV3IE1hcChsKSxjPWZ1bmN0aW9uKGUsdCl7bGV0IG49IiI7cmV0dXJuIEFycmF5LmZyb20oZS5rZXlzKCkpLnJldmVyc2UoKS5mb3JFYWNoKHI9Pntjb25zdCBvPWUuZ2V0KHIpLGk9dChyLG8pO2kmJihuPWkrbil9KSxlLmNsZWFyKCksbn0oaSwoZSx0KT0+dGhpcy5nZXRNYXJrQ2xvc2luZyhlLHQsbC5nZXQoZSkpKTtsLmNsZWFyKCk7Y29uc3QgZD10aGlzLnJlbmRlck5vZGVUb01hcmtkb3duKG4sdCxhLHIpLHA9ImhhcmRCcmVhayI9PT1uLnR5cGU/IiI6ZnVuY3Rpb24oZSx0LG4pe2xldCByPSIiO3JldHVybiBBcnJheS5mcm9tKGUuZW50cmllcygpKS5mb3JFYWNoKChbZSxvXSk9Pntjb25zdCBpPW4oZSxvKTtpJiYocis9aSksdC5zZXQoZSxvKX0pLHJ9KGUsaSwoZSx0KT0+e3ZhciBuO2NvbnN0IHI9bnVsbCE9KG49cy5nZXQoZSkpP246Im1hcmtkb3duIjtyZXR1cm4gbC5zZXQoZSxyKSx0aGlzLmdldE1hcmtPcGVuaW5nKGUsdCxyKX0pO28ucHVzaChjK2QrcCl9fSksby5qb2luKG4pfWdldE1hcmtPcGVuaW5nKGUsdCxuPSJtYXJrZG93biIpe3ZhciByO2lmKCJodG1sIj09PW4pcmV0dXJuKG51bGw9PShyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MoZSkpP3ZvaWQgMDpyLm9wZW4pfHwiIjtjb25zdCBvPXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShlKSxpPW8ubGVuZ3RoPjA/b1swXTp2b2lkIDA7aWYoIWl8fCFpLnJlbmRlck1hcmtkb3duKXJldHVybiIiO2NvbnN0IHM9Iu6AgF9fVElQVEFQX01BUktET1dOX1BMQUNFSE9MREVSX1/ugIEiLGw9e3R5cGU6ZSxhdHRyczp0LmF0dHJzfHx7fSxjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDpzfV19O3RyeXtjb25zdCBlPWkucmVuZGVyTWFya2Rvd24obCx7cmVuZGVyQ2hpbGRyZW46KCk9PnMscmVuZGVyQ2hpbGQ6KCk9PnMsaW5kZW50OmU9PmUsd3JhcEluQmxvY2s6KGUsdCk9PmUrdH0se2luZGV4OjAsbGV2ZWw6MCxwYXJlbnRUeXBlOiJ0ZXh0IixtZXRhOnt9fSksdD1lLmluZGV4T2Yocyk7cmV0dXJuIHQ+PTA/ZS5zdWJzdHJpbmcoMCx0KToiIn1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBvcGVuaW5nIGZvciAke2V9OiAke3R9YCl9fWdldE1hcmtDbG9zaW5nKGUsdCxuPSJtYXJrZG93biIpe3ZhciByO2lmKCJodG1sIj09PW4pcmV0dXJuKG51bGw9PShyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MoZSkpP3ZvaWQgMDpyLmNsb3NlKXx8IiI7Y29uc3Qgbz10aGlzLmdldEhhbmRsZXJzRm9yTm9kZVR5cGUoZSksaT1vLmxlbmd0aD4wP29bMF06dm9pZCAwO2lmKCFpfHwhaS5yZW5kZXJNYXJrZG93bilyZXR1cm4iIjtjb25zdCBzPSLugIBfX1RJUFRBUF9NQVJLRE9XTl9QTEFDRUhPTERFUl9f7oCBIixsPXt0eXBlOmUsYXR0cnM6dC5hdHRyc3x8e30sY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6c31dfTt0cnl7Y29uc3QgZT1pLnJlbmRlck1hcmtkb3duKGwse3JlbmRlckNoaWxkcmVuOigpPT5zLHJlbmRlckNoaWxkOigpPT5zLGluZGVudDplPT5lLHdyYXBJbkJsb2NrOihlLHQpPT5lK3R9LHtpbmRleDowLGxldmVsOjAscGFyZW50VHlwZToidGV4dCIsbWV0YTp7fX0pLHQ9ZS5pbmRleE9mKHMpLG49dCszMztyZXR1cm4gdD49MD9lLnN1YnN0cmluZyhuKToiIn1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBjbG9zaW5nIGZvciAke2V9OiAke3R9YCl9fWdldEh0bWxSZW9wZW5UYWdzKGUpe2NvbnN0IHQ9dGhpcy5nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKGUpLG49dC5sZW5ndGg+MD90WzBdOnZvaWQgMDtyZXR1cm4gbnVsbD09bj92b2lkIDA6bi5odG1sUmVvcGVufW1hcmtTZXRzRXF1YWwoZSx0KXtyZXR1cm4gZS5zaXplPT09dC5zaXplJiZBcnJheS5mcm9tKGUua2V5cygpKS5ldmVyeShlPT50LmhhcyhlKSl9fSxxcj1qdC5jcmVhdGUoe25hbWU6Im1hcmtkb3duIixhZGRPcHRpb25zOigpPT4oe2luZGVudGF0aW9uOntzdHlsZToic3BhY2UiLHNpemU6Mn0sbWFya2VkOnZvaWQgMCxtYXJrZWRPcHRpb25zOnt9fSksYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0Q29udGVudDooZSx0KT0+e2lmKCEobnVsbD09dD92b2lkIDA6dC5jb250ZW50VHlwZSkpcmV0dXJuIEl0LnNldENvbnRlbnQoZSx0KTtpZigibWFya2Rvd24iIT09YXNzdW1lQ29udGVudFR5cGUoZSxudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnRUeXBlKXx8IXRoaXMuZWRpdG9yLm1hcmtkb3duKXJldHVybiBJdC5zZXRDb250ZW50KGUsdCk7Y29uc3Qgbj10aGlzLmVkaXRvci5tYXJrZG93bi5wYXJzZShlKTtyZXR1cm4gSXQuc2V0Q29udGVudChuLHQpfSxpbnNlcnRDb250ZW50OihlLHQpPT57aWYoIShudWxsPT10P3ZvaWQgMDp0LmNvbnRlbnRUeXBlKSlyZXR1cm4gSXQuaW5zZXJ0Q29udGVudChlLHQpO2lmKCJtYXJrZG93biIhPT1hc3N1bWVDb250ZW50VHlwZShlLG51bGw9PXQ/dm9pZCAwOnQuY29udGVudFR5cGUpfHwhdGhpcy5lZGl0b3IubWFya2Rvd24pcmV0dXJuIEl0Lmluc2VydENvbnRlbnQoZSx0KTtjb25zdCBuPXRoaXMuZWRpdG9yLm1hcmtkb3duLnBhcnNlKGUpO3JldHVybiBJdC5pbnNlcnRDb250ZW50KG4sdCl9LGluc2VydENvbnRlbnRBdDooZSx0LG4pPT57aWYoIShudWxsPT1uP3ZvaWQgMDpuLmNvbnRlbnRUeXBlKSlyZXR1cm4gSXQuaW5zZXJ0Q29udGVudEF0KGUsdCxuKTtpZigibWFya2Rvd24iIT09YXNzdW1lQ29udGVudFR5cGUodCxudWxsPT1uP3ZvaWQgMDpuLmNvbnRlbnRUeXBlKXx8IXRoaXMuZWRpdG9yLm1hcmtkb3duKXJldHVybiBJdC5pbnNlcnRDb250ZW50QXQoZSx0LG4pO2NvbnN0IHI9dGhpcy5lZGl0b3IubWFya2Rvd24ucGFyc2UodCk7cmV0dXJuIEl0Lmluc2VydENvbnRlbnRBdChlLHIsbil9fX0sYWRkU3RvcmFnZSgpe3JldHVybnttYW5hZ2VyOm5ldyBqcih7aW5kZW50YXRpb246dGhpcy5vcHRpb25zLmluZGVudGF0aW9uLG1hcmtlZDp0aGlzLm9wdGlvbnMubWFya2VkLG1hcmtlZE9wdGlvbnM6dGhpcy5vcHRpb25zLm1hcmtlZE9wdGlvbnMsZXh0ZW5zaW9uczpbXX0pfX0sb25CZWZvcmVDcmVhdGUoKXtpZih0aGlzLmVkaXRvci5tYXJrZG93bilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJbdGlwdGFwXVttYXJrZG93bl06IFRoZXJlIGlzIGFscmVhZHkgYSBgbWFya2Rvd25gIHByb3BlcnR5IG9uIHRoZSBlZGl0b3IgaW5zdGFuY2UuIFRoaXMgbWlnaHQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yLiIpO2lmKHRoaXMuc3RvcmFnZS5tYW5hZ2VyPW5ldyBqcih7aW5kZW50YXRpb246dGhpcy5vcHRpb25zLmluZGVudGF0aW9uLG1hcmtlZDp0aGlzLm9wdGlvbnMubWFya2VkLG1hcmtlZE9wdGlvbnM6dGhpcy5vcHRpb25zLm1hcmtlZE9wdGlvbnMsZXh0ZW5zaW9uczp0aGlzLmVkaXRvci5leHRlbnNpb25NYW5hZ2VyLmJhc2VFeHRlbnNpb25zfSksdGhpcy5lZGl0b3IubWFya2Rvd249dGhpcy5zdG9yYWdlLm1hbmFnZXIsdGhpcy5lZGl0b3IuZ2V0TWFya2Rvd249KCk9PnRoaXMuc3RvcmFnZS5tYW5hZ2VyLnNlcmlhbGl6ZSh0aGlzLmVkaXRvci5nZXRKU09OKCkpLCF0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnRUeXBlKXJldHVybjtpZigibWFya2Rvd24iIT09YXNzdW1lQ29udGVudFR5cGUodGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50LHRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudFR5cGUpKXJldHVybjtpZighdGhpcy5lZGl0b3IubWFya2Rvd24pdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBNYXJrZG93biBleHRlbnNpb24gaXMgbm90IGFkZGVkIHRvIHRoZSBlZGl0b3IuIFBsZWFzZSBhZGQgdGhlIE1hcmtkb3duIGV4dGVuc2lvbiB0byB1c2UgdGhpcyBmZWF0dXJlLicpO2lmKHZvaWQgMD09PXRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudHx8InN0cmluZyIhPXR5cGVvZiB0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBpbml0aWFsIGNvbnRlbnQgaXMgbm90IGEgc3RyaW5nLiBQbGVhc2UgcHJvdmlkZSB0aGUgaW5pdGlhbCBjb250ZW50IGFzIGEgbWFya2Rvd24gc3RyaW5nLicpO2NvbnN0IGU9dGhpcy5lZGl0b3IubWFya2Rvd24ucGFyc2UodGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50KTt0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQ9ZX19KSxoPShlLHQpPT57aWYoInNsb3QiPT09ZSlyZXR1cm4gMDtpZihlIGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuIGUodCk7Y29uc3R7Y2hpbGRyZW46biwuLi5yfT1udWxsIT10P3Q6e307aWYoInN2ZyI9PT1lKXRocm93IG5ldyBFcnJvcigiU1ZHIGVsZW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBKU1ggc3ludGF4LCB1c2UgdGhlIGFycmF5IHN5bnRheCBpbnN0ZWFkIik7cmV0dXJuW2UscixuXX0sVXI9L15ccyo+XHMkLyxXcj1vbi5jcmVhdGUoe25hbWU6ImJsb2NrcXVvdGUiLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxjb250ZW50OiJibG9jaysiLGdyb3VwOiJibG9jayIsZGVmaW5pbmc6ITAscGFyc2VIVE1MOigpPT5be3RhZzoiYmxvY2txdW90ZSJ9XSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuIGgoImJsb2NrcXVvdGUiLHsuLi5tZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLGNoaWxkcmVuOmgoInNsb3QiLHt9KX0pfSxwYXJzZU1hcmtkb3duOihlLHQpPT57dmFyIG47Y29uc3Qgcj1udWxsIT0obj10LnBhcnNlQmxvY2tDaGlsZHJlbik/bjp0LnBhcnNlQ2hpbGRyZW47cmV0dXJuIHQuY3JlYXRlTm9kZSgiYmxvY2txdW90ZSIsdm9pZCAwLHIoZS50b2tlbnN8fFtdKSl9LHJlbmRlck1hcmtkb3duOihlLHQpPT57aWYoIWUuY29udGVudClyZXR1cm4iIjtjb25zdCBuPVtdO3JldHVybiBlLmNvbnRlbnQuZm9yRWFjaCgoZSxyKT0+e3ZhciBvLGk7Y29uc3Qgcz0obnVsbCE9KGk9bnVsbD09KG89dC5yZW5kZXJDaGlsZCk/dm9pZCAwOm8uY2FsbCh0LGUscikpP2k6dC5yZW5kZXJDaGlsZHJlbihbZV0pKS5zcGxpdCgiXG4iKS5tYXAoZT0+IiI9PT1lLnRyaW0oKT8iPiI6YD4gJHtlfWApO24ucHVzaChzLmpvaW4oIlxuIikpfSksbi5qb2luKCJcbj5cbiIpfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRCbG9ja3F1b3RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS53cmFwSW4odGhpcy5uYW1lKSx0b2dnbGVCbG9ja3F1b3RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVXcmFwKHRoaXMubmFtZSksdW5zZXRCbG9ja3F1b3RlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5saWZ0KHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LWIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVCbG9ja3F1b3RlKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW3dyYXBwaW5nSW5wdXRSdWxlKHtmaW5kOlVyLHR5cGU6dGhpcy50eXBlfSldfX0pLEtyPS8oPzpefFxzKShcKlwqKD8hXHMrXCpcKikoKD86W14qXSspKVwqXCooPyFccytcKlwqKSkkLyxKcj0vKD86XnxccykoXCpcKig/IVxzK1wqXCopKCg/OlteKl0rKSlcKlwqKD8hXHMrXCpcKikpL2csR3I9Lyg/Ol58XHMpKF9fKD8hXHMrX18pKCg/OlteX10rKSlfXyg/IVxzK19fKSkkLyxYcj0vKD86XnxccykoX18oPyFccytfXykoKD86W15fXSspKV9fKD8hXHMrX18pKS9nLFFyPUZ0LmNyZWF0ZSh7bmFtZToiYm9sZCIsYWRkT3B0aW9uczooKT0+KHtIVE1MQXR0cmlidXRlczp7fX0pLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJzdHJvbmcifSx7dGFnOiJiIixnZXRBdHRyczplPT4ibm9ybWFsIiE9PWUuc3R5bGUuZm9udFdlaWdodCYmbnVsbH0se3N0eWxlOiJmb250LXdlaWdodD00MDAiLGNsZWFyTWFyazplPT5lLnR5cGUubmFtZT09PXRoaXMubmFtZX0se3N0eWxlOiJmb250LXdlaWdodCIsZ2V0QXR0cnM6ZT0+L14oYm9sZChlcik/fFs1LTldXGR7Mix9KSQvLnRlc3QoZSkmJm51bGx9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVybiBoKCJzdHJvbmciLHsuLi5tZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLGNoaWxkcmVuOmgoInNsb3QiLHt9KX0pfSxtYXJrZG93blRva2VuTmFtZToic3Ryb25nIixwYXJzZU1hcmtkb3duOihlLHQpPT50LmFwcGx5TWFyaygiYm9sZCIsdC5wYXJzZUlubGluZShlLnRva2Vuc3x8W10pKSxtYXJrZG93bk9wdGlvbnM6e2h0bWxSZW9wZW46e29wZW46IjxzdHJvbmc+IixjbG9zZToiPC9zdHJvbmc+In19LHJlbmRlck1hcmtkb3duOihlLHQpPT5gKioke3QucmVuZGVyQ2hpbGRyZW4oZSl9KipgLGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEJvbGQ6KCk9Pih7Y29tbWFuZHM6ZX0pPT5lLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVCb2xkOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRCb2xkOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS51bnNldE1hcmsodGhpcy5uYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtYiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJvbGQoKSwiTW9kLUIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVCb2xkKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6S3IsdHlwZTp0aGlzLnR5cGV9KSxtYXJrSW5wdXRSdWxlKHtmaW5kOkdyLHR5cGU6dGhpcy50eXBlfSldfSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW21hcmtQYXN0ZVJ1bGUoe2ZpbmQ6SnIsdHlwZTp0aGlzLnR5cGV9KSxtYXJrUGFzdGVSdWxlKHtmaW5kOlhyLHR5cGU6dGhpcy50eXBlfSldfX0pLFpyPS9eYGBgKFthLXpdKyk/W1xzXG5dJC8sWXI9L15+fn4oW2Etel0rKT9bXHNcbl0kLyxlbz1vbi5jcmVhdGUoe25hbWU6ImNvZGVCbG9jayIsYWRkT3B0aW9uczooKT0+KHtsYW5ndWFnZUNsYXNzUHJlZml4OiJsYW5ndWFnZS0iLGV4aXRPblRyaXBsZUVudGVyOiEwLGV4aXRPbkFycm93RG93bjohMCxkZWZhdWx0TGFuZ3VhZ2U6bnVsbCxlbmFibGVUYWJJbmRlbnRhdGlvbjohMSx0YWJTaXplOjQsSFRNTEF0dHJpYnV0ZXM6e319KSxjb250ZW50OiJ0ZXh0KiIsbWFya3M6IiIsZ3JvdXA6ImJsb2NrIixjb2RlOiEwLGRlZmluaW5nOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57bGFuZ3VhZ2U6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLmRlZmF1bHRMYW5ndWFnZSxwYXJzZUhUTUw6ZT0+e3ZhciB0O2NvbnN0e2xhbmd1YWdlQ2xhc3NQcmVmaXg6bn09dGhpcy5vcHRpb25zO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9Wy4uLihudWxsPT0odD1lLmZpcnN0RWxlbWVudENoaWxkKT92b2lkIDA6dC5jbGFzc0xpc3QpfHxbXV0uZmlsdGVyKGU9PmUuc3RhcnRzV2l0aChuKSkubWFwKGU9PmUucmVwbGFjZShuLCIiKSlbMF07cmV0dXJuIHJ8fG51bGx9LHJlbmRlcmVkOiExfX19LHBhcnNlSFRNTDooKT0+W3t0YWc6InByZSIscHJlc2VydmVXaGl0ZXNwYWNlOiJmdWxsIn1dLHJlbmRlckhUTUwoe25vZGU6ZSxIVE1MQXR0cmlidXRlczp0fSl7cmV0dXJuWyJwcmUiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsdCksWyJjb2RlIix7Y2xhc3M6ZS5hdHRycy5sYW5ndWFnZT90aGlzLm9wdGlvbnMubGFuZ3VhZ2VDbGFzc1ByZWZpeCtlLmF0dHJzLmxhbmd1YWdlOm51bGx9LDBdXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImNvZGUiLHBhcnNlTWFya2Rvd246KGUsdCk9Pnt2YXIgbixyO3JldHVybiExPT09KG51bGw9PShuPWUucmF3KT92b2lkIDA6bi5zdGFydHNXaXRoKCJgYGAiKSkmJiExPT09KG51bGw9PShyPWUucmF3KT92b2lkIDA6ci5zdGFydHNXaXRoKCJ+fn4iKSkmJiJpbmRlbnRlZCIhPT1lLmNvZGVCbG9ja1N0eWxlP1tdOnQuY3JlYXRlTm9kZSgiY29kZUJsb2NrIix7bGFuZ3VhZ2U6ZS5sYW5nfHxudWxsfSxlLnRleHQ/W3QuY3JlYXRlVGV4dE5vZGUoZS50ZXh0KV06W10pfSxyZW5kZXJNYXJrZG93bjooZSx0KT0+e3ZhciBuO2xldCByPSIiO2NvbnN0IG89KG51bGw9PShuPWUuYXR0cnMpP3ZvaWQgMDpuLmxhbmd1YWdlKXx8IiI7aWYoZS5jb250ZW50KXtyPVtgXGBcYFxgJHtvfWAsdC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQpLCJgYGAiXS5qb2luKCJcbiIpfWVsc2Ugcj1gXGBcYFxgJHtvfVxuXG5cYFxgXGBgO3JldHVybiByfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlQmxvY2s6ZT0+KHtjb21tYW5kczp0fSk9PnQuc2V0Tm9kZSh0aGlzLm5hbWUsZSksdG9nZ2xlQ29kZUJsb2NrOmU9Pih7Y29tbWFuZHM6dH0pPT50LnRvZ2dsZU5vZGUodGhpcy5uYW1lLCJwYXJhZ3JhcGgiLGUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1BbHQtYyI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUNvZGVCbG9jaygpLEJhY2tzcGFjZTooKT0+e2NvbnN0e2VtcHR5OmUsJGFuY2hvcjp0fT10aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb24sbj0xPT09dC5wb3M7cmV0dXJuISghZXx8dC5wYXJlbnQudHlwZS5uYW1lIT09dGhpcy5uYW1lKSYmKCEoIW4mJnQucGFyZW50LnRleHRDb250ZW50Lmxlbmd0aCkmJnRoaXMuZWRpdG9yLmNvbW1hbmRzLmNsZWFyTm9kZXMoKSl9LFRhYjooe2VkaXRvcjplfSk9Pnt2YXIgdDtpZighdGhpcy5vcHRpb25zLmVuYWJsZVRhYkluZGVudGF0aW9uKXJldHVybiExO2NvbnN0IG49bnVsbCE9KHQ9dGhpcy5vcHRpb25zLnRhYlNpemUpP3Q6NCx7c3RhdGU6cn09ZSx7c2VsZWN0aW9uOm99PXIseyRmcm9tOmksZW1wdHk6c309bztpZihpLnBhcmVudC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO2NvbnN0IGw9IiAiLnJlcGVhdChuKTtyZXR1cm4gcz9lLmNvbW1hbmRzLmluc2VydENvbnRlbnQobCk6ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT57Y29uc3R7ZnJvbTp0LHRvOm59PW8saT1yLmRvYy50ZXh0QmV0d2Vlbih0LG4sIlxuIiwiXG4iKS5zcGxpdCgiXG4iKS5tYXAoZT0+bCtlKS5qb2luKCJcbiIpO3JldHVybiBlLnJlcGxhY2VXaXRoKHQsbixyLnNjaGVtYS50ZXh0KGkpKSwhMH0pfSwiU2hpZnQtVGFiIjooe2VkaXRvcjplfSk9Pnt2YXIgdDtpZighdGhpcy5vcHRpb25zLmVuYWJsZVRhYkluZGVudGF0aW9uKXJldHVybiExO2NvbnN0IG49bnVsbCE9KHQ9dGhpcy5vcHRpb25zLnRhYlNpemUpP3Q6NCx7c3RhdGU6cn09ZSx7c2VsZWN0aW9uOm99PXIseyRmcm9tOmksZW1wdHk6c309bztyZXR1cm4gaS5wYXJlbnQudHlwZT09PXRoaXMudHlwZSYmKHM/ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT57dmFyIHQ7Y29uc3R7cG9zOm99PWkscz1pLnN0YXJ0KCksbD1pLmVuZCgpLGE9ci5kb2MudGV4dEJldHdlZW4ocyxsLCJcbiIsIlxuIikuc3BsaXQoIlxuIik7bGV0IGM9MCxkPTA7Y29uc3QgcD1vLXM7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0xKXtpZihkK2FbZV0ubGVuZ3RoPj1wKXtjPWU7YnJlYWt9ZCs9YVtlXS5sZW5ndGgrMX1jb25zdCBmPShudWxsPT0odD1hW2NdLm1hdGNoKC9eICovKSk/dm9pZCAwOnRbMF0pfHwiIixtPU1hdGgubWluKGYubGVuZ3RoLG4pO2lmKDA9PT1tKXJldHVybiEwO2xldCB5PXM7Zm9yKGxldCBlPTA7ZTxjO2UrPTEpeSs9YVtlXS5sZW5ndGgrMTtlLmRlbGV0ZSh5LHkrbSk7cmV0dXJuIG8teTw9bSYmZS5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5jcmVhdGUoZS5kb2MseSkpLCEwfSk6ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT57Y29uc3R7ZnJvbTp0LHRvOml9PW8scz1yLmRvYy50ZXh0QmV0d2Vlbih0LGksIlxuIiwiXG4iKS5zcGxpdCgiXG4iKS5tYXAoZT0+e3ZhciB0O2NvbnN0IHI9KG51bGw9PSh0PWUubWF0Y2goL14gKi8pKT92b2lkIDA6dFswXSl8fCIiLG89TWF0aC5taW4oci5sZW5ndGgsbik7cmV0dXJuIGUuc2xpY2Uobyl9KS5qb2luKCJcbiIpO3JldHVybiBlLnJlcGxhY2VXaXRoKHQsaSxyLnNjaGVtYS50ZXh0KHMpKSwhMH0pKX0sRW50ZXI6KHtlZGl0b3I6ZX0pPT57aWYoIXRoaXMub3B0aW9ucy5leGl0T25UcmlwbGVFbnRlcilyZXR1cm4hMTtjb25zdHtzdGF0ZTp0fT1lLHtzZWxlY3Rpb246bn09dCx7JGZyb206cixlbXB0eTpvfT1uO2lmKCFvfHxyLnBhcmVudC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO2NvbnN0IGk9ci5wYXJlbnRPZmZzZXQ9PT1yLnBhcmVudC5ub2RlU2l6ZS0yLHM9ci5wYXJlbnQudGV4dENvbnRlbnQuZW5kc1dpdGgoIlxuXG4iKTtyZXR1cm4hKCFpfHwhcykmJmUuY2hhaW4oKS5jb21tYW5kKCh7dHI6ZX0pPT4oZS5kZWxldGUoci5wb3MtMixyLnBvcyksITApKS5leGl0Q29kZSgpLnJ1bigpfSxBcnJvd0Rvd246KHtlZGl0b3I6ZX0pPT57aWYoIXRoaXMub3B0aW9ucy5leGl0T25BcnJvd0Rvd24pcmV0dXJuITE7Y29uc3R7c3RhdGU6dH09ZSx7c2VsZWN0aW9uOm4sZG9jOnJ9PXQseyRmcm9tOm8sZW1wdHk6aX09bjtpZighaXx8by5wYXJlbnQudHlwZSE9PXRoaXMudHlwZSlyZXR1cm4hMTtpZighKG8ucGFyZW50T2Zmc2V0PT09by5wYXJlbnQubm9kZVNpemUtMikpcmV0dXJuITE7Y29uc3Qgcz1vLmFmdGVyKCk7aWYodm9pZCAwPT09cylyZXR1cm4hMTtyZXR1cm4gci5ub2RlQXQocyk/ZS5jb21tYW5kcy5jb21tYW5kKCh7dHI6ZX0pPT4oZS5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uLm5lYXIoci5yZXNvbHZlKHMpKSksITApKTplLmNvbW1hbmRzLmV4aXRDb2RlKCl9fX0sYWRkSW5wdXRSdWxlcygpe3JldHVyblt0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKHtmaW5kOlpyLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtsYW5ndWFnZTplWzFdfSl9KSx0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKHtmaW5kOllyLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtsYW5ndWFnZTplWzFdfSl9KV19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgUGx1Z2luKHtrZXk6bmV3IFBsdWdpbktleSgiY29kZUJsb2NrVlNDb2RlSGFuZGxlciIpLHByb3BzOntoYW5kbGVQYXN0ZTooZSx0KT0+e2lmKCF0LmNsaXBib2FyZERhdGEpcmV0dXJuITE7aWYodGhpcy5lZGl0b3IuaXNBY3RpdmUodGhpcy50eXBlLm5hbWUpKXJldHVybiExO2NvbnN0IG49dC5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSxyPXQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ2c2NvZGUtZWRpdG9yLWRhdGEiKSxvPXI/SlNPTi5wYXJzZShyKTp2b2lkIDAsaT1udWxsPT1vP3ZvaWQgMDpvLm1vZGU7aWYoIW58fCFpKXJldHVybiExO2NvbnN0e3RyOnMsc2NoZW1hOmx9PWUuc3RhdGUsYT1sLnRleHQobi5yZXBsYWNlKC9cclxuPy9nLCJcbiIpKTtyZXR1cm4gcy5yZXBsYWNlU2VsZWN0aW9uV2l0aCh0aGlzLnR5cGUuY3JlYXRlKHtsYW5ndWFnZTppfSxhKSkscy5zZWxlY3Rpb24uJGZyb20ucGFyZW50LnR5cGUhPT10aGlzLnR5cGUmJnMuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24ubmVhcihzLmRvYy5yZXNvbHZlKE1hdGgubWF4KDAscy5zZWxlY3Rpb24uZnJvbS0yKSkpKSxzLnNldE1ldGEoInBhc3RlIiwhMCksZS5kaXNwYXRjaChzKSwhMH19fSldfX0pLHRvPW9uLmNyZWF0ZSh7bmFtZToiZG9jIix0b3BOb2RlOiEwLGNvbnRlbnQ6ImJsb2NrKyIscmVuZGVyTWFya2Rvd246KGUsdCk9PmUuY29udGVudD90LnJlbmRlckNoaWxkcmVuKGUuY29udGVudCwiXG5cbiIpOiIifSksbm89b24uY3JlYXRlKHtuYW1lOiJoYXJkQnJlYWsiLG1hcmtkb3duVG9rZW5OYW1lOiJiciIsYWRkT3B0aW9uczooKT0+KHtrZWVwTWFya3M6ITAsSFRNTEF0dHJpYnV0ZXM6e319KSxpbmxpbmU6ITAsZ3JvdXA6ImlubGluZSIsc2VsZWN0YWJsZTohMSxsaW5lYnJlYWtSZXBsYWNlbWVudDohMCxwYXJzZUhUTUw6KCk9Plt7dGFnOiJiciJ9XSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuWyJiciIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKV19LHJlbmRlclRleHQ6KCk9PiJcbiIscmVuZGVyTWFya2Rvd246KCk9PiIgIFxuIixwYXJzZU1hcmtkb3duOigpPT4oe3R5cGU6ImhhcmRCcmVhayJ9KSxhZGRDb21tYW5kcygpe3JldHVybntzZXRIYXJkQnJlYWs6KCk9Pih7Y29tbWFuZHM6ZSxjaGFpbjp0LHN0YXRlOm4sZWRpdG9yOnJ9KT0+ZS5maXJzdChbKCk9PmUuZXhpdENvZGUoKSwoKT0+ZS5jb21tYW5kKCgpPT57Y29uc3R7c2VsZWN0aW9uOmUsc3RvcmVkTWFya3M6b309bjtpZihlLiRmcm9tLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiExO2NvbnN0e2tlZXBNYXJrczppfT10aGlzLm9wdGlvbnMse3NwbGl0dGFibGVNYXJrczpzfT1yLmV4dGVuc2lvbk1hbmFnZXIsbD1vfHxlLiR0by5wYXJlbnRPZmZzZXQmJmUuJGZyb20ubWFya3MoKTtyZXR1cm4gdCgpLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSkuY29tbWFuZCgoe3RyOmUsZGlzcGF0Y2g6dH0pPT57aWYodCYmbCYmaSl7Y29uc3QgdD1sLmZpbHRlcihlPT5zLmluY2x1ZGVzKGUudHlwZS5uYW1lKSk7ZS5lbnN1cmVNYXJrcyh0KX1yZXR1cm4hMH0pLnJ1bigpfSldKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtRW50ZXIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZXRIYXJkQnJlYWsoKSwiU2hpZnQtRW50ZXIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZXRIYXJkQnJlYWsoKX19fSkscm89b24uY3JlYXRlKHtuYW1lOiJoZWFkaW5nIixhZGRPcHRpb25zOigpPT4oe2xldmVsczpbMSwyLDMsNCw1LDZdLEhUTUxBdHRyaWJ1dGVzOnt9fSksY29udGVudDoiaW5saW5lKiIsZ3JvdXA6ImJsb2NrIixkZWZpbmluZzohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe2xldmVsOntkZWZhdWx0OjEscmVuZGVyZWQ6ITF9fSkscGFyc2VIVE1MKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMubWFwKGU9Pih7dGFnOmBoJHtlfWAsYXR0cnM6e2xldmVsOmV9fSkpfSxyZW5kZXJIVE1MKHtub2RlOmUsSFRNTEF0dHJpYnV0ZXM6dH0pe3JldHVybltgaCR7dGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhlLmF0dHJzLmxldmVsKT9lLmF0dHJzLmxldmVsOnRoaXMub3B0aW9ucy5sZXZlbHNbMF19YCxtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQpLDBdfSxwYXJzZU1hcmtkb3duOihlLHQpPT50LmNyZWF0ZU5vZGUoImhlYWRpbmciLHtsZXZlbDplLmRlcHRofHwxfSx0LnBhcnNlSW5saW5lKGUudG9rZW5zfHxbXSkpLHJlbmRlck1hcmtkb3duOihlLHQpPT57dmFyIG47Y29uc3Qgcj0obnVsbD09KG49ZS5hdHRycyk/dm9pZCAwOm4ubGV2ZWwpP3BhcnNlSW50KGUuYXR0cnMubGV2ZWwsMTApOjEsbz0iIyIucmVwZWF0KHIpO3JldHVybiBlLmNvbnRlbnQ/YCR7b30gJHt0LnJlbmRlckNoaWxkcmVuKGUuY29udGVudCl9YDoiIn0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SGVhZGluZzplPT4oe2NvbW1hbmRzOnR9KT0+ISF0aGlzLm9wdGlvbnMubGV2ZWxzLmluY2x1ZGVzKGUubGV2ZWwpJiZ0LnNldE5vZGUodGhpcy5uYW1lLGUpLHRvZ2dsZUhlYWRpbmc6ZT0+KHtjb21tYW5kczp0fSk9PiEhdGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhlLmxldmVsKSYmdC50b2dnbGVOb2RlKHRoaXMubmFtZSwicGFyYWdyYXBoIixlKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMucmVkdWNlKChlLHQpPT4oey4uLmUsW2BNb2QtQWx0LSR7dH1gXTooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSGVhZGluZyh7bGV2ZWw6dH0pfSkse30pfSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMubWFwKGU9PnRleHRibG9ja1R5cGVJbnB1dFJ1bGUoe2ZpbmQ6bmV3IFJlZ0V4cChgXigjeyR7TWF0aC5taW4oLi4udGhpcy5vcHRpb25zLmxldmVscyl9LCR7ZX19KVxccyRgKSx0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOntsZXZlbDplfX0pKX19KSxvbz0vKD86XnxccykoXCooPyFccytcKikoKD86W14qXSspKVwqKD8hXHMrXCopKSQvLGlvPS8oPzpefFxzKShcKig/IVxzK1wqKSgoPzpbXipdKykpXCooPyFccytcKikpL2csc289Lyg/Ol58XHMpKF8oPyFccytfKSgoPzpbXl9dKykpXyg/IVxzK18pKSQvLGxvPS8oPzpefFxzKShfKD8hXHMrXykoKD86W15fXSspKV8oPyFccytfKSkvZyxhbz1GdC5jcmVhdGUoe25hbWU6Iml0YWxpYyIsYWRkT3B0aW9uczooKT0+KHtIVE1MQXR0cmlidXRlczp7fX0pLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJlbSJ9LHt0YWc6ImkiLGdldEF0dHJzOmU9PiJub3JtYWwiIT09ZS5zdHlsZS5mb250U3R5bGUmJm51bGx9LHtzdHlsZToiZm9udC1zdHlsZT1ub3JtYWwiLGNsZWFyTWFyazplPT5lLnR5cGUubmFtZT09PXRoaXMubmFtZX0se3N0eWxlOiJmb250LXN0eWxlPWl0YWxpYyJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsiZW0iLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEl0YWxpYzooKT0+KHtjb21tYW5kczplfSk9PmUuc2V0TWFyayh0aGlzLm5hbWUpLHRvZ2dsZUl0YWxpYzooKT0+KHtjb21tYW5kczplfSk9PmUudG9nZ2xlTWFyayh0aGlzLm5hbWUpLHVuc2V0SXRhbGljOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS51bnNldE1hcmsodGhpcy5uYW1lKX19LG1hcmtkb3duVG9rZW5OYW1lOiJlbSIscGFyc2VNYXJrZG93bjooZSx0KT0+dC5hcHBseU1hcmsoIml0YWxpYyIsdC5wYXJzZUlubGluZShlLnRva2Vuc3x8W10pKSxtYXJrZG93bk9wdGlvbnM6e2h0bWxSZW9wZW46e29wZW46IjxlbT4iLGNsb3NlOiI8L2VtPiJ9fSxyZW5kZXJNYXJrZG93bjooZSx0KT0+YCoke3QucmVuZGVyQ2hpbGRyZW4oZSl9KmAsYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1pIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSXRhbGljKCksIk1vZC1JIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSXRhbGljKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6b28sdHlwZTp0aGlzLnR5cGV9KSxtYXJrSW5wdXRSdWxlKHtmaW5kOnNvLHR5cGU6dGhpcy50eXBlfSldfSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW21hcmtQYXN0ZVJ1bGUoe2ZpbmQ6aW8sdHlwZTp0aGlzLnR5cGV9KSxtYXJrUGFzdGVSdWxlKHtmaW5kOmxvLHR5cGU6dGhpcy50eXBlfSldfX0pO2NvbnN0IGNvPSJudW1lcmljIixwbz0iYXNjaWkiLGhvPSJhbHBoYSIsdW89ImFzY2lpbnVtZXJpYyIsZm89ImFscGhhbnVtZXJpYyIsbW89ImRvbWFpbiIsZ289ImVtb2ppIix5bz0ic2NoZW1lIixrbz0ic2xhc2hzY2hlbWUiLHdvPSJ3aGl0ZXNwYWNlIjtmdW5jdGlvbiByZWdpc3Rlckdyb3VwKGUsdCl7cmV0dXJuIGUgaW4gdHx8KHRbZV09W10pLHRbZV19ZnVuY3Rpb24gYWRkVG9Hcm91cHMoZSx0LG4pe3RbY29dJiYodFt1b109ITAsdFtmb109ITApLHRbcG9dJiYodFt1b109ITAsdFtob109ITApLHRbdW9dJiYodFtmb109ITApLHRbaG9dJiYodFtmb109ITApLHRbZm9dJiYodFttb109ITApLHRbZ29dJiYodFttb109ITApO2Zvcihjb25zdCByIGluIHQpe2NvbnN0IHQ9cmVnaXN0ZXJHcm91cChyLG4pO3QuaW5kZXhPZihlKTwwJiZ0LnB1c2goZSl9fWZ1bmN0aW9uIFN0YXRlKGU9bnVsbCl7dGhpcy5qPXt9LHRoaXMuanI9W10sdGhpcy5qZD1udWxsLHRoaXMudD1lfVN0YXRlLmdyb3Vwcz17fSxTdGF0ZS5wcm90b3R5cGU9e2FjY2VwdHMoKXtyZXR1cm4hIXRoaXMudH0sZ28oZSl7Y29uc3QgdD10aGlzLG49dC5qW2VdO2lmKG4pcmV0dXJuIG47Zm9yKGxldCBuPTA7bjx0LmpyLmxlbmd0aDtuKyspe2NvbnN0IHI9dC5qcltuXVswXSxvPXQuanJbbl1bMV07aWYobyYmci50ZXN0KGUpKXJldHVybiBvfXJldHVybiB0LmpkfSxoYXMoZSx0PSExKXtyZXR1cm4gdD9lIGluIHRoaXMuajohIXRoaXMuZ28oZSl9LHRhKGUsdCxuLHIpe2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXRoaXMudHQoZVtvXSx0LG4scil9LHRyKGUsdCxuLHIpe2xldCBvO3JldHVybiByPXJ8fFN0YXRlLmdyb3Vwcyx0JiZ0Lmo/bz10OihvPW5ldyBTdGF0ZSh0KSxuJiZyJiZhZGRUb0dyb3Vwcyh0LG4scikpLHRoaXMuanIucHVzaChbZSxvXSksb30sdHMoZSx0LG4scil7bGV0IG89dGhpcztjb25zdCBpPWUubGVuZ3RoO2lmKCFpKXJldHVybiBvO2ZvcihsZXQgdD0wO3Q8aS0xO3QrKylvPW8udHQoZVt0XSk7cmV0dXJuIG8udHQoZVtpLTFdLHQsbixyKX0sdHQoZSx0LG4scil7cj1yfHxTdGF0ZS5ncm91cHM7Y29uc3Qgbz10aGlzO2lmKHQmJnQuailyZXR1cm4gby5qW2VdPXQsdDtjb25zdCBpPXQ7bGV0IHMsbD1vLmdvKGUpO2lmKGw/KHM9bmV3IFN0YXRlLE9iamVjdC5hc3NpZ24ocy5qLGwuaikscy5qci5wdXNoLmFwcGx5KHMuanIsbC5qcikscy5qZD1sLmpkLHMudD1sLnQpOnM9bmV3IFN0YXRlLGkpe2lmKHIpaWYocy50JiYic3RyaW5nIj09dHlwZW9mIHMudCl7Y29uc3QgZT1PYmplY3QuYXNzaWduKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiB0KXRbcl0uaW5kZXhPZihlKT49MCYmKG5bcl09ITApO3JldHVybiBufShzLnQsciksbik7YWRkVG9Hcm91cHMoaSxlLHIpfWVsc2UgbiYmYWRkVG9Hcm91cHMoaSxuLHIpO3MudD1pfXJldHVybiBvLmpbZV09cyxzfX07Y29uc3QgdGE9KGUsdCxuLHIsbyk9PmUudGEodCxuLHIsbyksdHI9KGUsdCxuLHIsbyk9PmUudHIodCxuLHIsbyksdHM9KGUsdCxuLHIsbyk9PmUudHModCxuLHIsbyksdHQ9KGUsdCxuLHIsbyk9PmUudHQodCxuLHIsbyksYm89IldPUkQiLHZvPSJVV09SRCIseG89IkFTQ0lJTlVNRVJJQ0FMIixTbz0iQUxQSEFOVU1FUklDQUwiLFRvPSJMT0NBTEhPU1QiLENvPSJUTEQiLE1vPSJVVExEIixBbz0iU0NIRU1FIixPbz0iU0xBU0hfU0NIRU1FIixFbz0iTlVNIixObz0iV1MiLFJvPSJOTCIsRG89Ik9QRU5CUkFDRSIsUG89IkNMT1NFQlJBQ0UiLElvPSJPUEVOQlJBQ0tFVCIsJG89IkNMT1NFQlJBQ0tFVCIsTG89Ik9QRU5QQVJFTiIsem89IkNMT1NFUEFSRU4iLEJvPSJPUEVOQU5HTEVCUkFDS0VUIixGbz0iQ0xPU0VBTkdMRUJSQUNLRVQiLEhvPSJGVUxMV0lEVEhMRUZUUEFSRU4iLFZvPSJGVUxMV0lEVEhSSUdIVFBBUkVOIixfbz0iTEVGVENPUk5FUkJSQUNLRVQiLGpvPSJSSUdIVENPUk5FUkJSQUNLRVQiLHFvPSJMRUZUV0hJVEVDT1JORVJCUkFDS0VUIixVbz0iUklHSFRXSElURUNPUk5FUkJSQUNLRVQiLFdvPSJGVUxMV0lEVEhMRVNTVEhBTiIsS289IkZVTExXSURUSEdSRUFURVJUSEFOIixKbz0iQU1QRVJTQU5EIixHbz0iQVBPU1RST1BIRSIsWG89IkFTVEVSSVNLIixRbz0iQVQiLFpvPSJCQUNLU0xBU0giLFlvPSJCQUNLVElDSyIsZWk9IkNBUkVUIix0aT0iQ09MT04iLG5pPSJDT01NQSIscmk9IkRPTExBUiIsb2k9IkRPVCIsaWk9IkVRVUFMUyIsc2k9IkVYQ0xBTUFUSU9OIixsaT0iSFlQSEVOIixhaT0iUEVSQ0VOVCIsY2k9IlBJUEUiLGRpPSJQTFVTIixwaT0iUE9VTkQiLGhpPSJRVUVSWSIsdWk9IlFVT1RFIixmaT0iRlVMTFdJRFRITUlERExFRE9UIixtaT0iU0VNSSIsZ2k9IlNMQVNIIix5aT0iVElMREUiLGtpPSJVTkRFUlNDT1JFIix3aT0iRU1PSkkiLGJpPSJTWU0iO3ZhciB2aT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBTFBIQU5VTUVSSUNBTDpTbyxBTVBFUlNBTkQ6Sm8sQVBPU1RST1BIRTpHbyxBU0NJSU5VTUVSSUNBTDp4byxBU1RFUklTSzpYbyxBVDpRbyxCQUNLU0xBU0g6Wm8sQkFDS1RJQ0s6WW8sQ0FSRVQ6ZWksQ0xPU0VBTkdMRUJSQUNLRVQ6Rm8sQ0xPU0VCUkFDRTpQbyxDTE9TRUJSQUNLRVQ6JG8sQ0xPU0VQQVJFTjp6byxDT0xPTjp0aSxDT01NQTpuaSxET0xMQVI6cmksRE9UOm9pLEVNT0pJOndpLEVRVUFMUzppaSxFWENMQU1BVElPTjpzaSxGVUxMV0lEVEhHUkVBVEVSVEhBTjpLbyxGVUxMV0lEVEhMRUZUUEFSRU46SG8sRlVMTFdJRFRITEVTU1RIQU46V28sRlVMTFdJRFRITUlERExFRE9UOmZpLEZVTExXSURUSFJJR0hUUEFSRU46Vm8sSFlQSEVOOmxpLExFRlRDT1JORVJCUkFDS0VUOl9vLExFRlRXSElURUNPUk5FUkJSQUNLRVQ6cW8sTE9DQUxIT1NUOlRvLE5MOlJvLE5VTTpFbyxPUEVOQU5HTEVCUkFDS0VUOkJvLE9QRU5CUkFDRTpEbyxPUEVOQlJBQ0tFVDpJbyxPUEVOUEFSRU46TG8sUEVSQ0VOVDphaSxQSVBFOmNpLFBMVVM6ZGksUE9VTkQ6cGksUVVFUlk6aGksUVVPVEU6dWksUklHSFRDT1JORVJCUkFDS0VUOmpvLFJJR0hUV0hJVEVDT1JORVJCUkFDS0VUOlVvLFNDSEVNRTpBbyxTRU1JOm1pLFNMQVNIOmdpLFNMQVNIX1NDSEVNRTpPbyxTWU06YmksVElMREU6eWksVExEOkNvLFVOREVSU0NPUkU6a2ksVVRMRDpNbyxVV09SRDp2byxXT1JEOmJvLFdTOk5vfSk7Y29uc3QgeGk9L1thLXpdLyxTaT0vXHB7TH0vdSxUaT0vXHB7RW1vaml9L3UsQ2k9L1xkLyxNaT0vXHMvO2xldCBBaT1udWxsLE9pPW51bGw7ZnVuY3Rpb24gcnVuJDEoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9W10sbj1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxuOyl7bGV0IG8saT1lLmNoYXJDb2RlQXQocikscz1pPDU1Mjk2fHxpPjU2MzE5fHxyKzE9PT1ufHwobz1lLmNoYXJDb2RlQXQocisxKSk8NTYzMjB8fG8+NTczNDM/ZVtyXTplLnNsaWNlKHIscisyKTt0LnB1c2gocykscis9cy5sZW5ndGh9cmV0dXJuIHR9KHQucmVwbGFjZSgvW0EtWl0vZyxlPT5lLnRvTG93ZXJDYXNlKCkpKSxyPW4ubGVuZ3RoLG89W107bGV0IGk9MCxzPTA7Zm9yKDtzPHI7KXtsZXQgbD1lLGE9bnVsbCxjPTAsZD1udWxsLHA9LTEsZj0tMTtmb3IoO3M8ciYmKGE9bC5nbyhuW3NdKSk7KWw9YSxsLmFjY2VwdHMoKT8ocD0wLGY9MCxkPWwpOnA+PTAmJihwKz1uW3NdLmxlbmd0aCxmKyspLGMrPW5bc10ubGVuZ3RoLGkrPW5bc10ubGVuZ3RoLHMrKztpLT1wLHMtPWYsYy09cCxvLnB1c2goe3Q6ZC50LHY6dC5zbGljZShpLWMsaSksczppLWMsZTppfSl9cmV0dXJuIG99ZnVuY3Rpb24gZmFzdHRzKGUsdCxuLHIsbyl7bGV0IGk7Y29uc3Qgcz10Lmxlbmd0aDtmb3IobGV0IG49MDtuPHMtMTtuKyspe2NvbnN0IHM9dFtuXTtlLmpbc10/aT1lLmpbc106KGk9bmV3IFN0YXRlKHIpLGkuanI9by5zbGljZSgpLGUualtzXT1pKSxlPWl9cmV0dXJuIGk9bmV3IFN0YXRlKG4pLGkuanI9by5zbGljZSgpLGUualt0W3MtMV1dPWksaX1mdW5jdGlvbiBkZWNvZGVUbGRzKGUpe2NvbnN0IHQ9W10sbj1bXTtsZXQgcj0wO2Zvcig7cjxlLmxlbmd0aDspe2xldCBvPTA7Zm9yKDsiMDEyMzQ1Njc4OSIuaW5kZXhPZihlW3Irb10pPj0wOylvKys7aWYobz4wKXt0LnB1c2gobi5qb2luKCIiKSk7Zm9yKGxldCB0PXBhcnNlSW50KGUuc3Vic3RyaW5nKHIscitvKSwxMCk7dD4wO3QtLSluLnBvcCgpO3IrPW99ZWxzZSBuLnB1c2goZVtyXSkscisrfXJldHVybiB0fWNvbnN0IEVpPXtkZWZhdWx0UHJvdG9jb2w6Imh0dHAiLGV2ZW50czpudWxsLGZvcm1hdDpub29wLGZvcm1hdEhyZWY6bm9vcCxubDJicjohMSx0YWdOYW1lOiJhIix0YXJnZXQ6bnVsbCxyZWw6bnVsbCx2YWxpZGF0ZTohMCx0cnVuY2F0ZToxLzAsY2xhc3NOYW1lOm51bGwsYXR0cmlidXRlczpudWxsLGlnbm9yZVRhZ3M6W10scmVuZGVyOm51bGx9O2Z1bmN0aW9uIE9wdGlvbnMoZSx0PW51bGwpe2xldCBuPU9iamVjdC5hc3NpZ24oe30sRWkpO2UmJihuPU9iamVjdC5hc3NpZ24obixlIGluc3RhbmNlb2YgT3B0aW9ucz9lLm86ZSkpO2NvbnN0IHI9bi5pZ25vcmVUYWdzLG89W107Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspby5wdXNoKHJbZV0udG9VcHBlckNhc2UoKSk7dGhpcy5vPW4sdCYmKHRoaXMuZGVmYXVsdFJlbmRlcj10KSx0aGlzLmlnbm9yZVRhZ3M9b31mdW5jdGlvbiBub29wKGUpe3JldHVybiBlfWZ1bmN0aW9uIE11bHRpVG9rZW4oZSx0KXt0aGlzLnQ9InRva2VuIix0aGlzLnY9ZSx0aGlzLnRrPXR9ZnVuY3Rpb24gY3JlYXRlVG9rZW5DbGFzcyhlLHQpe2NsYXNzIFRva2VuIGV4dGVuZHMgTXVsdGlUb2tlbntjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsbiksdGhpcy50PWV9fWZvcihjb25zdCBlIGluIHQpVG9rZW4ucHJvdG90eXBlW2VdPXRbZV07cmV0dXJuIFRva2VuLnQ9ZSxUb2tlbn1PcHRpb25zLnByb3RvdHlwZT17bzpFaSxpZ25vcmVUYWdzOltdLGRlZmF1bHRSZW5kZXI6ZT0+ZSxjaGVjayhlKXtyZXR1cm4gdGhpcy5nZXQoInZhbGlkYXRlIixlLnRvU3RyaW5nKCksZSl9LGdldChlLHQsbil7Y29uc3Qgcj1udWxsIT10O2xldCBvPXRoaXMub1tlXTtyZXR1cm4gbz8oIm9iamVjdCI9PXR5cGVvZiBvPyhvPW4udCBpbiBvP29bbi50XTpFaVtlXSwiZnVuY3Rpb24iPT10eXBlb2YgbyYmciYmKG89byh0LG4pKSk6ImZ1bmN0aW9uIj09dHlwZW9mIG8mJnImJihvPW8odCxuLnQsbikpLG8pOm99LGdldE9iaihlLHQsbil7bGV0IHI9dGhpcy5vW2VdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiZudWxsIT10JiYocj1yKHQsbi50LG4pKSxyfSxyZW5kZXIoZSl7Y29uc3QgdD1lLnJlbmRlcih0aGlzKTtyZXR1cm4odGhpcy5nZXQoInJlbmRlciIsbnVsbCxlKXx8dGhpcy5kZWZhdWx0UmVuZGVyKSh0LGUudCxlKX19LE11bHRpVG9rZW4ucHJvdG90eXBlPXtpc0xpbms6ITEsdG9TdHJpbmcoKXtyZXR1cm4gdGhpcy52fSx0b0hyZWYoZSl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdG9Gb3JtYXR0ZWRTdHJpbmcoZSl7Y29uc3QgdD10aGlzLnRvU3RyaW5nKCksbj1lLmdldCgidHJ1bmNhdGUiLHQsdGhpcykscj1lLmdldCgiZm9ybWF0Iix0LHRoaXMpO3JldHVybiBuJiZyLmxlbmd0aD5uP3Iuc3Vic3RyaW5nKDAsbikrIuKApiI6cn0sdG9Gb3JtYXR0ZWRIcmVmKGUpe3JldHVybiBlLmdldCgiZm9ybWF0SHJlZiIsdGhpcy50b0hyZWYoZS5nZXQoImRlZmF1bHRQcm90b2NvbCIpKSx0aGlzKX0sc3RhcnRJbmRleCgpe3JldHVybiB0aGlzLnRrWzBdLnN9LGVuZEluZGV4KCl7cmV0dXJuIHRoaXMudGtbdGhpcy50ay5sZW5ndGgtMV0uZX0sdG9PYmplY3QoZT1FaS5kZWZhdWx0UHJvdG9jb2wpe3JldHVybnt0eXBlOnRoaXMudCx2YWx1ZTp0aGlzLnRvU3RyaW5nKCksaXNMaW5rOnRoaXMuaXNMaW5rLGhyZWY6dGhpcy50b0hyZWYoZSksc3RhcnQ6dGhpcy5zdGFydEluZGV4KCksZW5kOnRoaXMuZW5kSW5kZXgoKX19LHRvRm9ybWF0dGVkT2JqZWN0KGUpe3JldHVybnt0eXBlOnRoaXMudCx2YWx1ZTp0aGlzLnRvRm9ybWF0dGVkU3RyaW5nKGUpLGlzTGluazp0aGlzLmlzTGluayxocmVmOnRoaXMudG9Gb3JtYXR0ZWRIcmVmKGUpLHN0YXJ0OnRoaXMuc3RhcnRJbmRleCgpLGVuZDp0aGlzLmVuZEluZGV4KCl9fSx2YWxpZGF0ZShlKXtyZXR1cm4gZS5nZXQoInZhbGlkYXRlIix0aGlzLnRvU3RyaW5nKCksdGhpcyl9LHJlbmRlcihlKXtjb25zdCB0PXRoaXMsbj10aGlzLnRvSHJlZihlLmdldCgiZGVmYXVsdFByb3RvY29sIikpLHI9ZS5nZXQoImZvcm1hdEhyZWYiLG4sdGhpcyksbz1lLmdldCgidGFnTmFtZSIsbix0KSxpPXRoaXMudG9Gb3JtYXR0ZWRTdHJpbmcoZSkscz17fSxsPWUuZ2V0KCJjbGFzc05hbWUiLG4sdCksYT1lLmdldCgidGFyZ2V0IixuLHQpLGM9ZS5nZXQoInJlbCIsbix0KSxkPWUuZ2V0T2JqKCJhdHRyaWJ1dGVzIixuLHQpLHA9ZS5nZXRPYmooImV2ZW50cyIsbix0KTtyZXR1cm4gcy5ocmVmPXIsbCYmKHMuY2xhc3M9bCksYSYmKHMudGFyZ2V0PWEpLGMmJihzLnJlbD1jKSxkJiZPYmplY3QuYXNzaWduKHMsZCkse3RhZ05hbWU6byxhdHRyaWJ1dGVzOnMsY29udGVudDppLGV2ZW50TGlzdGVuZXJzOnB9fX07Y29uc3QgTmk9Y3JlYXRlVG9rZW5DbGFzcygiZW1haWwiLHtpc0xpbms6ITAsdG9IcmVmKCl7cmV0dXJuIm1haWx0bzoiK3RoaXMudG9TdHJpbmcoKX19KSxSaT1jcmVhdGVUb2tlbkNsYXNzKCJ0ZXh0IiksRGk9Y3JlYXRlVG9rZW5DbGFzcygibmwiKSxQaT1jcmVhdGVUb2tlbkNsYXNzKCJ1cmwiLHtpc0xpbms6ITAsdG9IcmVmKGU9RWkuZGVmYXVsdFByb3RvY29sKXtyZXR1cm4gdGhpcy5oYXNQcm90b2NvbCgpP3RoaXMudjpgJHtlfTovLyR7dGhpcy52fWB9LGhhc1Byb3RvY29sKCl7Y29uc3QgZT10aGlzLnRrO3JldHVybiBlLmxlbmd0aD49MiYmZVswXS50IT09VG8mJmVbMV0udD09PXRpfX0pLG1ha2VTdGF0ZT1lPT5uZXcgU3RhdGUoZSk7ZnVuY3Rpb24gaW5pdE11bHRpVG9rZW4oZSx0LG4pe2NvbnN0IHI9blswXS5zLG89bltuLmxlbmd0aC0xXS5lO3JldHVybiBuZXcgZSh0LnNsaWNlKHIsbyksbil9Y29uc3QgSWk9InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlJiZjb25zb2xlLndhcm58fCgoKT0+e30pLCRpPXtzY2FubmVyOm51bGwscGFyc2VyOm51bGwsdG9rZW5RdWV1ZTpbXSxwbHVnaW5RdWV1ZTpbXSxjdXN0b21TY2hlbWVzOltdLGluaXRpYWxpemVkOiExfTtmdW5jdGlvbiBpbml0KCl7JGkuc2Nhbm5lcj1mdW5jdGlvbihlPVtdKXtjb25zdCB0PXt9O1N0YXRlLmdyb3Vwcz10O2NvbnN0IG49bmV3IFN0YXRlO251bGw9PUFpJiYoQWk9ZGVjb2RlVGxkcygiYWFhMXJwM2JiMG90dDN2aWU0YzFsZTJvZ2FkbzV1ZGhhYmk3YzBhZGVteTVjZW50dXJlNm91bnRhbnQwczlvMXRvcjRkMHMxdWx0NGUwZzFybzJ0bmE0ZjBsMXJpY2E1ZzBha2hhbjVlbmN5NWkwZzFyYnVzM2ZvcmNlNXRlbDVrZG4zbDBpYmFiYTRwYXk0bGZpbmFuejZzdGF0ZTV5MnNhY2UzdG9tNW0wYXpvbjRlcmljYW5leHByZXNzN2ZhbWlseTExeDJmYW0zaWNhM3N0ZXJkYW04bmFseXRpY3M3ZHJvaWQ1cXVhbjR6Mm8wbDJwYXJ0bWVudHM4cDBsZTRxMHVhcmVsbGU4cjBhYjFtY280Y2hpM215MnBhMnQwZTNzMGRhMmlhMnNvY2lhdGVzOXQwaGxldGE1dG9ybmV5N3UwY3Rpb241ZGkwYmxlM28zc3Bvc3Q1dGhvcjNvMHM0dzBzMngwYTJ6MHVyZTViYTBieTJpZHUzbmFtZXg0ZDFrMnIwY2Vsb25hNWxheWNhcmQ0czVlZm9vdDVnYWluczZzZWJhbGw1a2V0YmFsbDh1aGF1czV5ZXJuNWIwYzF0MXZhM2NnMW4yZDFlMGF0czJ1dHk0ZXIycmxpbjRzdDBidXk1dDJmMWcxaDBhcnRpNWkwYmxlM2Qxa2UybmcwbzNvMXoyajFsYWNrMGZyaWRheTlvY2tidXN0ZXI4ZzFvbWJlcmc3dWUzbTBzMXcybjBwcGFyaWJhczlvMGF0czNlaHJpbmdlcjhmYTJtMW5kMm8wazBpbmc1c2NoMnRpazJvbjR0MXV0aXF1ZTZ4MnIwYWRlc2NvNmlkZ2VzdG9uZTlvYWR3YXk1a2VyM3RoZXI1dXNzZWxzN3MxdDF1aWxkMGVyczZzaW5lc3M2eTF6ejN2MXcxeTF6MGgzY2EwYjFmZTJsMGwxdmlua2xlaW45bTBlcmEzcDJub24zcGV0b3duNWl0YWwwb25lOHIwYXZhbjRkczJlMGVyMHM0czJzYTFlMWgxaW5vNHQwZXJpbmc1aG9saWM3YmExbjFyZTNjMWQxZW50ZXI0bzFybjNmMGExZDJnMWgwYW5lbDJuZWw0cml0eTRzZTJ0MmVhcDNpbnRhaTVyaXN0bWFzNm9tZTR1cmNoNWkwcHJpYW5pNnJjbGU0c2NvM3RhZGVsNGkwYzJ5M2sxbDBhaW1zNGVhbmluZzZpY2sybmljMXF1ZTZvdGhpbmc1dWQzdWIwbWVkNm0xbjFvMGFjaDNkZXMzZmZlZTRsbGVnZTRvZ25lNW0wbWJhbms0dW5pdHk2cGFueTJyZTN1dGVyNXNlYzRuZG9zM3N0cnVjdGlvbjh1bHRpbmc3dGFjdDNyYWN0b3JzOW9raW5nNGwxcDJyc2ljYTV1bnRyeTRwb24wczRyc2VzNnBhMnIwZWRpdDBjYXJkNHVuaW9uOWlja2V0NW93bjNzMXVpc2UwczZ1MGlzaW5lbGxhOXYxdzF4MXkwbXJ1M291M3oyZGFkMW5jZTN0YTFlMWluZzNzdW40eTJjbGszZHMyZTBhbDBlcjJzM2dyZWU0bGl2ZXJ5NWwxb2l0dGU1dGEzbW9jcmF0Nm50YWwyaXN0NXNpMGduNHYyaGwyaWFtb25kczZldDJnaXRhbDVyZWN0MG9yeTdzY291bnQzdmVyNWgyeTJqMWsxbTFucDJvMGNzMXRvcjRnMW1haW5zNXQxd25sb2FkN3JpdmU0dHYydWJhaTNubG9wNHBvbnQ0cmJhbjV2YWcycjJ6MmVhcnRoM3QyYzBvMmRla2EzdTBjYXRpb244ZTFnMW1haWwzZXJjazVuZXJneTRnaW5lZXIwaW5nOXRlcnByaXNlczEwcHNvbjRxdWlwbWVudDhyMGljc3NvbjZuaTNzMHExdGF0ZTV0MXUwcm92aXNpb244czJ2ZW50czV4Y2hhbmdlNnBlcnQzb3NlZDRyZXNzNXRyYXNwYWNlMTBmYWdlMmlsMXJ3aW5kczZ0aDNtaWx5NG4wczJybTBlcnM1c2hpb240dDNlZGV4M2VkYmFjazZycmFyaTNlcm82aTBkZWxpdHk1bzJsbTJuYWwxbmNlMWlhbDdyZTBzdG9uZTZtZGFsZTZzaDBpbmc1dDBuZXNzNmoxazFsaWNrcjNnaHRzNHIyb3Jpc3Q0d2VyczV5Mm0xbzBvMGQxdGJhbGw2cmQxZXgyc2FsZTR1bTN1bmRhdGlvbjh4MnIwZWUxc2VuaXVzN2wxb2dhbnM0bnRpZXI3dHIydWppdHN1NW4wZDJybml0dXJlN3Rib2w1eWkzZ2EwbDBsZXJ5M28xdXA0bWUwczNwMXJkZW40eTJiMGl6M2QwbjJlMGExbnQwaW5nNW9yZ2U1ZjFnMGVlM2gxaTBmdDBzM3ZlczJpbmc1bDBhc3MzZTFvYmFsMm80bTBhaWwzYmgybzF4Mm4xb2RhZGR5NWxkMHBvaW50NmYybzBkeWVhcjVnMGxlNHAxdDF2MnAxcTFyMGFpbmdlcjVwaGljczV0aXM0ZWVuM2lwZTNvY2VyeTR1cDRzMXQxdTBjY2kzZ2UyaWRlMnRhcnM1cnUzdzF5MmhhaXIybWJ1cmc1bmdvdXQ1dXMzYm8yZGZjMGJhbms3ZWFsdGgwY2FyZThscDFzaW5raTZyZTFtZXM1aXBob3A0c2FtaXRzdTd0YWNoaTV2MmswdDJtMW4xb2NrZXk0bGRpbmdzNWlkYXk1bWVkZXBvdDVnb29kczVzMGVuc2U3bmRhM3JzZTNzcGl0YWw1dDBpbmc1dDBlbHMzbWFpbDV1c2UzdzJyMXNiYzN0MXUwZ2hlczV5YXR0M3VuZGFpN2libTJjYmMyZTF1MmQxZTBlZTNmbTJrYW5vNGwxbTBhbWF0NGRiMm1vMGJpbGllbjluMGMxZHVzdHJpZXM4ZmluaXRpNW8yZzFrMXN0aXR1dGU2dXJhbmNlNGU0dDBlcm5hdGlvbmFsMTB1aXQ0dmVzdG1lbnRzMTBvMXBpcmFuZ2E3cTFyMGlzaDRzMG1haWxpNXQwYW5idWw3dDBhdTJ2M2phZ3VhcjR2YTNjYjJlMGVwMnR6dDN3ZWxyeTZpbzJsbDJtMHAybmoybzBiczF1cmc0dDF5MnAwbW9yZ2FuNnJzM3VlZ29zNG5pcGVyN2thdWZlbjVkZGkzZTBycnlob3RlbHM2cHJvcGVydGllczE0ZmgyZzFoMWkwYTFkczJtMW5kbGU0dGNoZW41d2kzbTFuMW9lbG4zbWF0c3U1c2hlcjVwMG1nMm4ycjBkMWVkM3Vva2dyb3VwOHcxeTBvdG80ejJsYTBjYWl4YTVtYm9yZ2hpbmk4ZXIzbmQwcm92ZXI2eGVzczVzYWxsZTV0MGlubzNyb2JlNXcweWVyNWIxYzFkczJlYXNlM2NsZXJjNWZyYWs0Z2FsMm8yeHVzNGdidDNpMGRsMmZlMGluc3VyYW5jZTlzdHlsZTdnaHRpbmc2a2UybGx5M21pdGVkNG8ybmNvbG40azJ2ZTFpbmc1azFsYzFwMm9hbjBzM2NrZXIzdXMzbDFuZG9uNHR0ZTFvM3ZlM3BsMGZpbmFuY2lhbDExcjFzMXQwZDBhM3UwbmRiZWNrNnhlMXVyeTV2MXkybWEwZHJpZDRpZjFzb240a2V1cDRuMGFnZW1lbnQ3Z28zcDFya2V0MGluZzNzNHJpb3R0NXNoYWxsczd0dGVsNWJhMmMwa2luc2V5N2QxZTBkMGlhM2V0Mmxib3VybmU3bWUxb3JpYWw2bjB1MnJja21zZDdnMWgxaWFtaTNjcm9zb2Z0N2wxbmkxdDJ0MHN1YmlzaGk5azFsMGIxczJtMGEybjFvMGJpMGxlNGRhMmUxaTFtMW5hc2gzZXkyc3RlcjVybW9uM3RnYWdlNnNjb3c0dG8wcmN5Y2xlczl2MGllNHAxcTFyMXMwZDJ0MG4xcjJ1MHNldW0zaWM0djF3MXgxeTF6Mm5hMGIxZ295YTRtZTJ2eTNiYTJjMWUwYzF0MGJhbms0ZmxpeDR3b3JrNXVzdGFyNXcwczJ4dDBkaXJlY3Q3dXM0ZjBsMmcwbzJoazJpMGNvMmtlMW9uM25qYTNzc2FuMXk1bDFvMGtpYTNydG9uNHcwcnV6M3R2NHAxcjBhMXcydHQydTF5YzJ6Mm9iaTFzZXJ2ZXI3ZmZpY2U1a2luYXdhNmxheWFuMGdyb3VwOWxvM20wZWdhNG5lMWcxbDBpbmU1b28ycGVuM3JhY2xlM25nZTRnMGFuaWM1aWdpbnM2c2FrYTR0c3VrYTR0MnZoM3BhMGdlMm5hc29uaWM3cmlzMnMxdG5lcnM0czF5M3kyY2N3M2UwdDJmMGl6ZXI1ZzFoMGFybWFjeTZkMWlsaXBzNW9uZTJ0bzBncmFwaHk2czR5c2lvNWljczF0ZXQydXJlczZkMW4wZzFrMm9uZWVyNXp6YTRrMWwwYWNlMnkwc3RhdGlvbjl1bWJpbmc1czNtMW4wYzJvaGwya2VyM2xpdGllNXJuMnN0M3IwYXhpM2VzczNpbWUzbzBkMHVjdGlvbnM4ZjFncmVzc2l2ZThtbzJwZXJ0aWVzM3k1dGVjdGlvbjh1MGRlbnRpYWw5czF0MXViMncwYzJ5MnFhMXBvbjN1ZWJlYzNzdDVyYWNpbmc0ZGlvNGUwYWQxbGVzdGF0ZTZ0b3IyeTRjaXBlczVkMHN0b25lNXVtYnJlbGxhOWhhYjNpc2UwbjN0MmxpYW5jZTZuMHQwYWxzNXBhaXIzb3J0M3VibGljYW44c3QwYXVyYW50OHZpZXcwczV4cm90aDZpY2gwYXJkbGk2b2gzbDFvMXAybzBja3MzZGVvM2dlcnM0b20zczB2cDN1MGdieTNocjJuMncwZTJ5dWt5dTZzYTBhcmxhbmQ2ZmUwdHk0a3VyYTRsZTFvbjNtc2NsdWI0dW5nNW5kdmlrMGNvcm9tYW50MTJvZmk0cDFybDJzMXZlMnhvM2IwaTFzMmMwYjFoYWVmZmxlcjdtaWR0NG9sYXJzaGlwczhvbDN1bGUzd2FyejVpZW5jZTVvdDNkMWUwYXJjaDN0MmN1cmUxaXR5NmVrMmxlY3Q0bmVyM3J2aWNlczZ2ZW4zdzF4MHkzZnIyZzFoMGFuZ3JpbGE2cnAzZWxsM2lhMWtzaGE1b2VzMnAwcGluZzV1amkzdzNpMGxrMm5hMWdsZXM1dGUzajFrMGkwbjJ5MHBlNGwwaW5nNG0wYXJ0M2lsZTRuMGNmM28wY2NlcjNpYWw0ZnRiYW5rNHdhcmU2aHUybGFyMnV0aW9uczduZzF5MnkycGEwY2Uzb3J0MnQzcjBsMnMxdDBhZGEycGxlczRyMXRlYmFuazRmYXJtN2MwZ3JvdXA2b2NraG9sbTZyYWdlM2UzcmVhbTR1ZGlvMnkzeWxlNHUwY2tzM3BwbGllczN5Mm9ydDVyZjFnZXJ5NXp1a2k1djF3YXRjaDRpc3M0eDF5MGRuZXk0c3RlbXM2ejJ0YWIxaXBlaTRsazJvYmFvNHJnZXQ0dGFtb3RvcnM2cjJ0b280eDBpM2MwaTJkMGsyZWFtMmNoMG5vbG9neThsMW1hc2VrNW5uaXM0dmEzZjFnMWgwZDFlYXRlcjJyZTZpYWEyY2tldHM1ZW5kYTRwczJyZXMyb2w0ajBtYXh4NHgyazBtYXh4NWwxbTBhbGw0bjFvMGRheTNreW8zb2xzM3AxcmF5M3NoaWJhNXRhbDN1cnMzd24yeW90YTNzM3IwYWRlMWluZzRpbmluZzV2ZWwwZXJzMGluc3VyYW5jZTE2dXN0M3YydDF1YmUyaTFuZXMzc2h1NHYwczJ3MXoydWExYmFuazNzMmcxazFuaWNvbTN2ZXJzaXR5OG8yb2wycHMyczF5MXoydmEwY2F0aW9uczduYTFndWFyZDdjMWUwZ2FzM250dXJlczZyaXNpZ241bcO2Z2Vuc2JlcmF0ZXIydW5nMTRzaWNoZXJ1bmcxMHQyZzFpMGFqZXM0ZGVvM2cxa2luZzRsbGFzNG4xcDFyZ2luNHNhMWlvbjR2YTFvM2xhYW5kZXJlbjluMW9ka2EzbHZvM3RlMWluZzNvMnlhZ2U1dTJ3YWxlczJtYXJ0NHRlcjRuZzBnb3U1dGNoMGVzNmVhdGhlcjBjaGFubmVsMTJiY2FtM2VyMnNpdGU1ZDBkaW5nNWlibzJyM2YxaG9zd2hvNmllbjJraTJsbGlhbWhpbGw5bjBkb3dzNGUxbmVyczZtZTJvbHRlcnNrbHV3ZXIxMW9kc2lkZTZyazBzMmxkM3cyczF0YzFmM3hib3gzZXJveDRpaHVhbjRuMnh4Mnl6M3lhY2h0czRob28zbWF4dW41bmRleDVlMW9kb2Jhc2hpN2dhMmtvaGFtYTZ1MHR1YmU2dDF1bjN6YTBwcG9zNHJhM2VybzNpcDJtMW9uZTN1ZXJpY2g2dzIiKSksbnVsbD09T2kmJihPaT1kZWNvZGVUbGRzKCLOtc67Mc+FMtCx0LMx0LXQuzPQtNC10YLQuDTQtdGOMtC60LDRgtC+0LvQuNC6NtC+0Lwz0LzQutC0MtC+0L0x0YHQutCy0LA20L7QvdC70LDQudC9NdGA0LMz0YDRg9GBMtGEMtGB0LDQudGCM9GA0LEz0YPQutGAM9Kb0LDQtzPVsNWh1bUz15nXqdeo15DXnDXXp9eV150z2KfYqNmI2LjYqNmKNdix2KfZhdmD2Yg12YTYp9ix2K/ZhjTYqNit2LHZitmGNdis2LLYp9im2LE12LPYudmI2K/ZitipNti52YTZitin2YY12YXYutix2Kg12YXYp9ix2KfYqjXbjNix2KfZhjXYqNin2LHYqjLYstin2LE02YrYqtmDM9q+2KfYsdiqNdiq2YjZhtizNNiz2YjYr9in2YYz2LHZitipNdi02KjZg9ipNNi52LHYp9mCMtioMtmF2KfZhjTZgdmE2LPYt9mK2YY22YLYt9ixM9mD2KfYq9mI2YTZitmDNtmI2YUz2YXYtdixMtmE2YrYs9mK2Kc12YjYsdmK2KrYp9mG2YrYpzfZgti5NNmH2YXYsdin2Yc12b7Yp9qp2LPYqtin2YY32oDYp9ix2Ko04KSV4KWJ4KSuM+CkqOClh+CknzPgpK3gpL7gpLDgpKQw4KSu4KWNM+Cli+CkpDXgpLjgpILgpJfgpKDgpKg14Kas4Ka+4KaC4Kay4Ka+NeCmreCmvuCmsOCmpDLgp7DgpqQ04Kit4Ki+4Kiw4KikNOCqreCqvuCqsOCqpDTgrK3grL7grLDgrKQ04K6H4K6o4K+N4K6k4K6/4K6v4K6+NuCusuCumeCvjeCuleCviDbgrprgrr/grpngr43grpXgrqrgr43grqrgr4LgrrDgr40xMeCwreCwvuCwsOCwpOCxjTXgsq3gsr7gsrDgsqQ04LSt4LS+4LSw4LSk4LSCNeC2veC2guC2muC3jzTguITguK3guKEz4LmE4LiX4LiiM+C6peC6suC6pzPhg5Lhg5Qy44G/44KT44GqM+OCouODnuOCvuODszTjgq/jg6njgqbjg4k044Kw44O844Kw44OrNOOCs+ODoDLjgrnjg4jjgqIz44K744O844OrM+ODleOCoeODg+OCt+ODp+ODszbjg53jgqTjg7Pjg4g05LiW55WMMuS4reS/oTHlm70x5ZyLMeaWh+e9kTPkuprpqazpgIoz5LyB5LiaMuS9m+WxsTLkv6Hmga8y5YGl5bq3MuWFq+WNpjLlhazlj7gx55uKMuWPsOa5vjHngaMy5ZWG5Z+OMeW6lzHmoIcy5ZiJ6YeMMOWkp+mFkuW6lzXlnKjnur8y5aSn5ou/MuWkqeS4u+aVmTPlqLHkuZAy5a626Zu7MuW5v+S4nDLlvq7ljZoy5oWI5ZaEMuaIkeeIseS9oDPmiYvmnLoy5oub6IGYMuaUv+WKoTHlupwy5paw5Yqg5Z2hMumXuzLml7blsJoy5pu457GNMuacuuaehDLmt6HpqazplKEz5ri45oiPMua+s+mWgDLngrnnnIsy56e75YqoMue7hOe7h+acuuaehDTnvZHlnYAx5bqXMeermTHnu5wy6IGU6YCaMuiwt+atjDLotK3niaky6YCa6LKpMumbhuWbojLpm7voqIrnm4jnp5E06aOe5Yip5rWmM+mjn+WTgTLppJDljoUy6aaZ5qC86YeM5ouJM+a4rzLri7frhLcx7Lu0MuyCvOyEsTLtlZzqta0yIikpLHR0KG4sIiciLEdvKSx0dChuLCJ7IixEbyksdHQobiwifSIsUG8pLHR0KG4sIlsiLElvKSx0dChuLCJdIiwkbyksdHQobiwiKCIsTG8pLHR0KG4sIikiLHpvKSx0dChuLCI8IixCbyksdHQobiwiPiIsRm8pLHR0KG4sIu+8iCIsSG8pLHR0KG4sIu+8iSIsVm8pLHR0KG4sIuOAjCIsX28pLHR0KG4sIuOAjSIsam8pLHR0KG4sIuOAjiIscW8pLHR0KG4sIuOAjyIsVW8pLHR0KG4sIu+8nCIsV28pLHR0KG4sIu+8niIsS28pLHR0KG4sIiYiLEpvKSx0dChuLCIqIixYbyksdHQobiwiQCIsUW8pLHR0KG4sImAiLFlvKSx0dChuLCJeIixlaSksdHQobiwiOiIsdGkpLHR0KG4sIiwiLG5pKSx0dChuLCIkIixyaSksdHQobiwiLiIsb2kpLHR0KG4sIj0iLGlpKSx0dChuLCIhIixzaSksdHQobiwiLSIsbGkpLHR0KG4sIiUiLGFpKSx0dChuLCJ8IixjaSksdHQobiwiKyIsZGkpLHR0KG4sIiMiLHBpKSx0dChuLCI/IixoaSksdHQobiwnIicsdWkpLHR0KG4sIi8iLGdpKSx0dChuLCI7IixtaSksdHQobiwifiIseWkpLHR0KG4sIl8iLGtpKSx0dChuLCJcXCIsWm8pLHR0KG4sIuODuyIsZmkpO2NvbnN0IHI9dHIobixDaSxFbyx7W2NvXTohMH0pO3RyKHIsQ2kscik7Y29uc3Qgbz10cihyLHhpLHhvLHtbdW9dOiEwfSksaT10cihyLFNpLFNvLHtbZm9dOiEwfSkscz10cihuLHhpLGJvLHtbcG9dOiEwfSk7dHIocyxDaSxvKSx0cihzLHhpLHMpLHRyKG8sQ2ksbyksdHIobyx4aSxvKTtjb25zdCBsPXRyKG4sU2ksdm8se1tob106ITB9KTt0cihsLHhpKSx0cihsLENpLGkpLHRyKGwsU2ksbCksdHIoaSxDaSxpKSx0cihpLHhpKSx0cihpLFNpLGkpO2NvbnN0IGE9dHQobiwiXG4iLFJvLHtbd29dOiEwfSksYz10dChuLCJcciIsTm8se1t3b106ITB9KSxkPXRyKG4sTWksTm8se1t3b106ITB9KTt0dChuLCLvv7wiLGQpLHR0KGMsIlxuIixhKSx0dChjLCLvv7wiLGQpLHRyKGMsTWksZCksdHQoZCwiXHIiKSx0dChkLCJcbiIpLHRyKGQsTWksZCksdHQoZCwi77+8IixkKTtjb25zdCBwPXRyKG4sVGksd2kse1tnb106ITB9KTt0dChwLCIjIiksdHIocCxUaSxwKSx0dChwLCLvuI8iLHApO2NvbnN0IGY9dHQocCwi4oCNIik7dHQoZiwiIyIpLHRyKGYsVGkscCk7Y29uc3QgbT1bW3hpLHNdLFtDaSxvXV0seT1bW3hpLG51bGxdLFtTaSxsXSxbQ2ksaV1dO2ZvcihsZXQgZT0wO2U8QWkubGVuZ3RoO2UrKylmYXN0dHMobixBaVtlXSxDbyxibyxtKTtmb3IobGV0IGU9MDtlPE9pLmxlbmd0aDtlKyspZmFzdHRzKG4sT2lbZV0sTW8sdm8seSk7YWRkVG9Hcm91cHMoQ28se3RsZDohMCxhc2NpaTohMH0sdCksYWRkVG9Hcm91cHMoTW8se3V0bGQ6ITAsYWxwaGE6ITB9LHQpLGZhc3R0cyhuLCJmaWxlIixBbyxibyxtKSxmYXN0dHMobiwibWFpbHRvIixBbyxibyxtKSxmYXN0dHMobiwiaHR0cCIsT28sYm8sbSksZmFzdHRzKG4sImh0dHBzIixPbyxibyxtKSxmYXN0dHMobiwiZnRwIixPbyxibyxtKSxmYXN0dHMobiwiZnRwcyIsT28sYm8sbSksYWRkVG9Hcm91cHMoQW8se3NjaGVtZTohMCxhc2NpaTohMH0sdCksYWRkVG9Hcm91cHMoT28se3NsYXNoc2NoZW1lOiEwLGFzY2lpOiEwfSx0KSxlPWUuc29ydCgoZSx0KT0+ZVswXT50WzBdPzE6LTEpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCByPWVbdF1bMF0sbz1lW3RdWzFdP3tbeW9dOiEwfTp7W2tvXTohMH07ci5pbmRleE9mKCItIik+PTA/b1ttb109ITA6eGkudGVzdChyKT9DaS50ZXN0KHIpP29bdW9dPSEwOm9bcG9dPSEwOm9bY29dPSEwLHRzKG4scixyLG8pfXJldHVybiB0cyhuLCJsb2NhbGhvc3QiLFRvLHthc2NpaTohMH0pLG4uamQ9bmV3IFN0YXRlKGJpKSx7c3RhcnQ6bix0b2tlbnM6T2JqZWN0LmFzc2lnbih7Z3JvdXBzOnR9LHZpKX19KCRpLmN1c3RvbVNjaGVtZXMpO2ZvcihsZXQgZT0wO2U8JGkudG9rZW5RdWV1ZS5sZW5ndGg7ZSsrKSRpLnRva2VuUXVldWVbZV1bMV0oe3NjYW5uZXI6JGkuc2Nhbm5lcn0pOyRpLnBhcnNlcj1mdW5jdGlvbih7Z3JvdXBzOmV9KXtjb25zdCB0PWUuZG9tYWluLmNvbmNhdChbSm8sWG8sUW8sWm8sWW8sZWkscmksaWksbGksRW8sYWksY2ksZGkscGksZ2ksYmkseWksa2ldKSxuPVtHbyx0aSxuaSxvaSxzaSxhaSxoaSx1aSxtaSxCbyxGbyxEbyxQbywkbyxJbyxMbyx6byxIbyxWbyxfbyxqbyxxbyxVbyxXbyxLb10scj1bSm8sR28sWG8sWm8sWW8sZWkscmksaWksbGksRG8sUG8sYWksY2ksZGkscGksaGksZ2ksYmkseWksa2ldLG89bWFrZVN0YXRlKCksaT10dChvLHlpKTt0YShpLHIsaSksdGEoaSxlLmRvbWFpbixpKTtjb25zdCBzPW1ha2VTdGF0ZSgpLGw9bWFrZVN0YXRlKCksYT1tYWtlU3RhdGUoKTt0YShvLGUuZG9tYWluLHMpLHRhKG8sZS5zY2hlbWUsbCksdGEobyxlLnNsYXNoc2NoZW1lLGEpLHRhKHMscixpKSx0YShzLGUuZG9tYWluLHMpO2NvbnN0IGM9dHQocyxRbyk7dHQoaSxRbyxjKSx0dChsLFFvLGMpLHR0KGEsUW8sYyk7Y29uc3QgZD10dChpLG9pKTt0YShkLHIsaSksdGEoZCxlLmRvbWFpbixpKTtjb25zdCBwPW1ha2VTdGF0ZSgpO3RhKGMsZS5kb21haW4scCksdGEocCxlLmRvbWFpbixwKTtjb25zdCBmPXR0KHAsb2kpO3RhKGYsZS5kb21haW4scCk7Y29uc3QgbT1tYWtlU3RhdGUoTmkpO3RhKGYsZS50bGQsbSksdGEoZixlLnV0bGQsbSksdHQoYyxUbyxtKTtjb25zdCB5PXR0KHAsbGkpO3R0KHksbGkseSksdGEoeSxlLmRvbWFpbixwKSx0YShtLGUuZG9tYWluLHApLHR0KG0sb2ksZiksdHQobSxsaSx5KTtjb25zdCB3PXR0KG0sdGkpO3RhKHcsZS5udW1lcmljLE5pKTtjb25zdCBiPXR0KHMsbGkpLHY9dHQocyxvaSk7dHQoYixsaSxiKSx0YShiLGUuZG9tYWluLHMpLHRhKHYscixpKSx0YSh2LGUuZG9tYWluLHMpO2NvbnN0IHg9bWFrZVN0YXRlKFBpKTt0YSh2LGUudGxkLHgpLHRhKHYsZS51dGxkLHgpLHRhKHgsZS5kb21haW4scyksdGEoeCxyLGkpLHR0KHgsb2ksdiksdHQoeCxsaSxiKSx0dCh4LFFvLGMpO2NvbnN0IFM9dHQoeCx0aSksQz1tYWtlU3RhdGUoUGkpO3RhKFMsZS5udW1lcmljLEMpO2NvbnN0IEE9bWFrZVN0YXRlKFBpKSxPPW1ha2VTdGF0ZSgpO3RhKEEsdCxBKSx0YShBLG4sTyksdGEoTyx0LEEpLHRhKE8sbixPKSx0dCh4LGdpLEEpLHR0KEMsZ2ksQSk7Y29uc3QgRT10dChsLHRpKSxOPXR0KGEsdGkpLFI9dHQoTixnaSksRD10dChSLGdpKTt0YShsLGUuZG9tYWluLHMpLHR0KGwsb2ksdiksdHQobCxsaSxiKSx0YShhLGUuZG9tYWluLHMpLHR0KGEsb2ksdiksdHQoYSxsaSxiKSx0YShFLGUuZG9tYWluLEEpLHR0KEUsZ2ksQSksdHQoRSxoaSxBKSx0YShELGUuZG9tYWluLEEpLHRhKEQsdCxBKSx0dChELGdpLEEpO2NvbnN0IFA9W1tEbyxQb10sW0lvLCRvXSxbTG8sem9dLFtCbyxGb10sW0hvLFZvXSxbX28sam9dLFtxbyxVb10sW1dvLEtvXV07Zm9yKGxldCBlPTA7ZTxQLmxlbmd0aDtlKyspe2NvbnN0W3Isb109UFtlXSxpPXR0KEEscik7dHQoTyxyLGkpLHR0KGksbyxBKTtjb25zdCBzPW1ha2VTdGF0ZShQaSk7dGEoaSx0LHMpO2NvbnN0IGw9bWFrZVN0YXRlKCk7dGEoaSxuKSx0YShzLHQscyksdGEocyxuLGwpLHRhKGwsdCxzKSx0YShsLG4sbCksdHQocyxvLEEpLHR0KGwsbyxBKX1yZXR1cm4gdHQobyxUbyx4KSx0dChvLFJvLERpKSx7c3RhcnQ6byx0b2tlbnM6dml9fSgkaS5zY2FubmVyLnRva2Vucyk7Zm9yKGxldCBlPTA7ZTwkaS5wbHVnaW5RdWV1ZS5sZW5ndGg7ZSsrKSRpLnBsdWdpblF1ZXVlW2VdWzFdKHtzY2FubmVyOiRpLnNjYW5uZXIscGFyc2VyOiRpLnBhcnNlcn0pO3JldHVybiAkaS5pbml0aWFsaXplZD0hMCwkaX1mdW5jdGlvbiB0b2tlbml6ZShlKXtyZXR1cm4gJGkuaW5pdGlhbGl6ZWR8fGluaXQoKSxmdW5jdGlvbihlLHQsbil7bGV0IHI9bi5sZW5ndGgsbz0wLGk9W10scz1bXTtmb3IoO288cjspe2xldCBsPWUsYT1udWxsLGM9bnVsbCxkPTAscD1udWxsLGY9LTE7Zm9yKDtvPHImJiEoYT1sLmdvKG5bb10udCkpOylzLnB1c2gobltvKytdKTtmb3IoO288ciYmKGM9YXx8bC5nbyhuW29dLnQpKTspYT1udWxsLGw9YyxsLmFjY2VwdHMoKT8oZj0wLHA9bCk6Zj49MCYmZisrLG8rKyxkKys7aWYoZjwwKW8tPWQsbzxyJiYocy5wdXNoKG5bb10pLG8rKyk7ZWxzZXtzLmxlbmd0aD4wJiYoaS5wdXNoKGluaXRNdWx0aVRva2VuKFJpLHQscykpLHM9W10pLG8tPWYsZC09Zjtjb25zdCBlPXAudCxyPW4uc2xpY2Uoby1kLG8pO2kucHVzaChpbml0TXVsdGlUb2tlbihlLHQscikpfX1yZXR1cm4gcy5sZW5ndGg+MCYmaS5wdXNoKGluaXRNdWx0aVRva2VuKFJpLHQscykpLGl9KCRpLnBhcnNlci5zdGFydCxlLHJ1biQxKCRpLnNjYW5uZXIuc3RhcnQsZSkpfXRva2VuaXplLnNjYW49cnVuJDE7dmFyIGZpbmRfMT1mdW5jdGlvbihlLHQ9bnVsbCxuPW51bGwpe2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCl7aWYobil0aHJvdyBFcnJvcihgbGlua2lmeWpzOiBJbnZhbGlkIGxpbmsgdHlwZSAke3R9OyBtdXN0IGJlIGEgc3RyaW5nYCk7bj10LHQ9bnVsbH1jb25zdCByPW5ldyBPcHRpb25zKG4pLG89dG9rZW5pemUoZSksaT1bXTtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3Qgbj1vW2VdOyFuLmlzTGlua3x8dCYmbi50IT09dHx8IXIuY2hlY2sobil8fGkucHVzaChuLnRvRm9ybWF0dGVkT2JqZWN0KHIpKX1yZXR1cm4gaX0scmVnaXN0ZXJDdXN0b21Qcm90b2NvbF8xPWZ1bmN0aW9uKGUsdD0hMSl7aWYoJGkuaW5pdGlhbGl6ZWQmJklpKGBsaW5raWZ5anM6IGFscmVhZHkgaW5pdGlhbGl6ZWQgLSB3aWxsIG5vdCByZWdpc3RlciBjdXN0b20gc2NoZW1lICIke2V9IiB1bnRpbCBtYW51YWwgY2FsbCBvZiBsaW5raWZ5LmluaXQoKS4gUmVnaXN0ZXIgYWxsIHNjaGVtZXMgYW5kIHBsdWdpbnMgYmVmb3JlIGludm9raW5nIGxpbmtpZnkgdGhlIGZpcnN0IHRpbWUuYCksIS9eWzAtOWEtel0rKC1bMC05YS16XSspKiQvLnRlc3QoZSkpdGhyb3cgbmV3IEVycm9yKCdsaW5raWZ5anM6IGluY29ycmVjdCBzY2hlbWUgZm9ybWF0LlxuMS4gTXVzdCBvbmx5IGNvbnRhaW4gZGlnaXRzLCBsb3dlcmNhc2UgQVNDSUkgbGV0dGVycyBvciAiLSJcbjIuIENhbm5vdCBzdGFydCBvciBlbmQgd2l0aCAiLSJcbjMuICItIiBjYW5ub3QgcmVwZWF0Jyk7JGkuY3VzdG9tU2NoZW1lcy5wdXNoKFtlLHRdKX0scmVzZXRfMT1mdW5jdGlvbigpe3JldHVybiBTdGF0ZS5ncm91cHM9e30sJGkuc2Nhbm5lcj1udWxsLCRpLnBhcnNlcj1udWxsLCRpLnRva2VuUXVldWU9W10sJGkucGx1Z2luUXVldWU9W10sJGkuY3VzdG9tU2NoZW1lcz1bXSwkaS5pbml0aWFsaXplZD0hMSwkaX0sTGk9dG9rZW5pemUsemk9IltcMC0gwqDhmoDhoI7igIAtXHUyMDI54oGf44CAXSIsQmk9bmV3IFJlZ0V4cCh6aSksRmk9bmV3IFJlZ0V4cChgJHt6aX0kYCksSGk9bmV3IFJlZ0V4cCh6aSwiZyIpO2Z1bmN0aW9uIGlzQWxsb3dlZFVyaShlLHQpe2NvbnN0IG49WyJodHRwIiwiaHR0cHMiLCJmdHAiLCJmdHBzIiwibWFpbHRvIiwidGVsIiwiY2FsbHRvIiwic21zIiwiY2lkIiwieG1wcCJdO3JldHVybiB0JiZ0LmZvckVhY2goZT0+e2NvbnN0IHQ9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5zY2hlbWU7dCYmbi5wdXNoKHQpfSksIWV8fGUucmVwbGFjZShIaSwiIikubWF0Y2gobmV3IFJlZ0V4cChgXig/Oig/OiR7bi5qb2luKCJ8Iil9KTp8W15hLXpdfFthLXowLTkrLi1dKyg/OlteYS16Ky4tOl18JCkpYCwiaSIpKX12YXIgVmk9RnQuY3JlYXRlKHtuYW1lOiJsaW5rIixwcmlvcml0eToxZTMsa2VlcE9uU3BsaXQ6ITEsZXhpdGFibGU6ITAsb25DcmVhdGUoKXt0aGlzLm9wdGlvbnMudmFsaWRhdGUmJiF0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbmsmJih0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbms9dGhpcy5vcHRpb25zLnZhbGlkYXRlLGNvbnNvbGUud2FybigiVGhlIGB2YWxpZGF0ZWAgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFJlbmFtZSB0byB0aGUgYHNob3VsZEF1dG9MaW5rYCBvcHRpb24gaW5zdGVhZC4iKSksdGhpcy5vcHRpb25zLnByb3RvY29scy5mb3JFYWNoKGU9Pnsic3RyaW5nIiE9dHlwZW9mIGU/cmVnaXN0ZXJDdXN0b21Qcm90b2NvbF8xKGUuc2NoZW1lLGUub3B0aW9uYWxTbGFzaGVzKTpyZWdpc3RlckN1c3RvbVByb3RvY29sXzEoZSl9KX0sb25EZXN0cm95KCl7cmVzZXRfMSgpfSxpbmNsdXNpdmUoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmF1dG9saW5rfSxhZGRPcHRpb25zOigpPT4oe29wZW5PbkNsaWNrOiEwLGVuYWJsZUNsaWNrU2VsZWN0aW9uOiExLGxpbmtPblBhc3RlOiEwLGF1dG9saW5rOiEwLHByb3RvY29sczpbXSxkZWZhdWx0UHJvdG9jb2w6Imh0dHAiLEhUTUxBdHRyaWJ1dGVzOnt0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIG5vZm9sbG93IixjbGFzczpudWxsfSxpc0FsbG93ZWRVcmk6KGUsdCk9PiEhaXNBbGxvd2VkVXJpKGUsdC5wcm90b2NvbHMpLHZhbGlkYXRlOmU9PiEhZSxzaG91bGRBdXRvTGluazplPT57Y29uc3QgdD0vXlthLXpdW2EtejAtOSsuLV0qOlwvXC8vaS50ZXN0KGUpLG49L15bYS16XVthLXowLTkrLi1dKjovaS50ZXN0KGUpO2lmKHR8fG4mJiFlLmluY2x1ZGVzKCJAIikpcmV0dXJuITA7Y29uc3Qgcj0oZS5pbmNsdWRlcygiQCIpP2Uuc3BsaXQoIkAiKS5wb3AoKTplKS5zcGxpdCgvWy8/IzpdLylbMF07cmV0dXJuIS9eXGR7MSwzfShcLlxkezEsM30pezN9JC8udGVzdChyKSYmISEvXC4vLnRlc3Qocil9fSksYWRkQXR0cmlidXRlcygpe3JldHVybntocmVmOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJocmVmIil9LHRhcmdldDp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMudGFyZ2V0fSxyZWw6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLnJlbH0sY2xhc3M6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLmNsYXNzfSx0aXRsZTp7ZGVmYXVsdDpudWxsfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJhW2hyZWZdIixnZXRBdHRyczplPT57Y29uc3QgdD1lLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3JldHVybiEoIXR8fCF0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKHQse2RlZmF1bHRWYWxpZGF0ZTplPT4hIWlzQWxsb3dlZFVyaShlLHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSkpJiZudWxsfX1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczplfSl7cmV0dXJuIHRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkoZS5ocmVmLHtkZWZhdWx0VmFsaWRhdGU6ZT0+ISFpc0FsbG93ZWRVcmkoZSx0aGlzLm9wdGlvbnMucHJvdG9jb2xzKSxwcm90b2NvbHM6dGhpcy5vcHRpb25zLnByb3RvY29scyxkZWZhdWx0UHJvdG9jb2w6dGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbH0pP1siYSIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKSwwXTpbImEiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsey4uLmUsaHJlZjoiIn0pLDBdfSxtYXJrZG93blRva2VuTmFtZToibGluayIscGFyc2VNYXJrZG93bjooZSx0KT0+dC5hcHBseU1hcmsoImxpbmsiLHQucGFyc2VJbmxpbmUoZS50b2tlbnN8fFtdKSx7aHJlZjplLmhyZWYsdGl0bGU6ZS50aXRsZXx8bnVsbH0pLHJlbmRlck1hcmtkb3duOihlLHQpPT57dmFyIG4scixvLGk7Y29uc3Qgcz1udWxsIT0ocj1udWxsPT0obj1lLmF0dHJzKT92b2lkIDA6bi5ocmVmKT9yOiIiLGw9bnVsbCE9KGk9bnVsbD09KG89ZS5hdHRycyk/dm9pZCAwOm8udGl0bGUpP2k6IiIsYT10LnJlbmRlckNoaWxkcmVuKGUpO3JldHVybiBsP2BbJHthfV0oJHtzfSAiJHtsfSIpYDpgWyR7YX1dKCR7c30pYH0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0TGluazplPT4oe2NoYWluOnR9KT0+e2NvbnN0e2hyZWY6bn09ZTtyZXR1cm4hIXRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkobix7ZGVmYXVsdFZhbGlkYXRlOmU9PiEhaXNBbGxvd2VkVXJpKGUsdGhpcy5vcHRpb25zLnByb3RvY29scykscHJvdG9jb2xzOnRoaXMub3B0aW9ucy5wcm90b2NvbHMsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2x9KSYmdCgpLnNldE1hcmsodGhpcy5uYW1lLGUpLnNldE1ldGEoInByZXZlbnRBdXRvbGluayIsITApLnJ1bigpfSx0b2dnbGVMaW5rOmU9Pih7Y2hhaW46dH0pPT57Y29uc3R7aHJlZjpufT1lfHx7fTtyZXR1cm4hKG4mJiF0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKG4se2RlZmF1bHRWYWxpZGF0ZTplPT4hIWlzQWxsb3dlZFVyaShlLHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSkpJiZ0KCkudG9nZ2xlTWFyayh0aGlzLm5hbWUsZSx7ZXh0ZW5kRW1wdHlNYXJrUmFuZ2U6ITB9KS5zZXRNZXRhKCJwcmV2ZW50QXV0b2xpbmsiLCEwKS5ydW4oKX0sdW5zZXRMaW5rOigpPT4oe2NoYWluOmV9KT0+ZSgpLnVuc2V0TWFyayh0aGlzLm5hbWUse2V4dGVuZEVtcHR5TWFya1JhbmdlOiEwfSkuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCl9fSxhZGRQYXN0ZVJ1bGVzKCl7cmV0dXJuW21hcmtQYXN0ZVJ1bGUoe2ZpbmQ6ZT0+e2NvbnN0IHQ9W107aWYoZSl7Y29uc3R7cHJvdG9jb2xzOm4sZGVmYXVsdFByb3RvY29sOnJ9PXRoaXMub3B0aW9ucyxvPWZpbmRfMShlKS5maWx0ZXIoZT0+ZS5pc0xpbmsmJnRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkoZS52YWx1ZSx7ZGVmYXVsdFZhbGlkYXRlOmU9PiEhaXNBbGxvd2VkVXJpKGUsbikscHJvdG9jb2xzOm4sZGVmYXVsdFByb3RvY29sOnJ9KSk7by5sZW5ndGgmJm8uZm9yRWFjaChlPT57dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rKGUudmFsdWUpJiZ0LnB1c2goe3RleHQ6ZS52YWx1ZSxkYXRhOntocmVmOmUuaHJlZn0saW5kZXg6ZS5zdGFydH0pfSl9cmV0dXJuIHR9LHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+e3ZhciB0O3JldHVybntocmVmOm51bGw9PSh0PWUuZGF0YSk/dm9pZCAwOnQuaHJlZn19fSldfSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBlPVtdLHtwcm90b2NvbHM6dCxkZWZhdWx0UHJvdG9jb2w6bn09dGhpcy5vcHRpb25zO3ZhciByO3JldHVybiB0aGlzLm9wdGlvbnMuYXV0b2xpbmsmJmUucHVzaCgocj17dHlwZTp0aGlzLnR5cGUsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsdmFsaWRhdGU6ZT0+dGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShlLHtkZWZhdWx0VmFsaWRhdGU6ZT0+ISFpc0FsbG93ZWRVcmkoZSx0KSxwcm90b2NvbHM6dCxkZWZhdWx0UHJvdG9jb2w6bn0pLHNob3VsZEF1dG9MaW5rOnRoaXMub3B0aW9ucy5zaG91bGRBdXRvTGlua30sbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImF1dG9saW5rIiksYXBwZW5kVHJhbnNhY3Rpb246KGUsdCxuKT0+e2NvbnN0IG89ZS5zb21lKGU9PmUuZG9jQ2hhbmdlZCkmJiF0LmRvYy5lcShuLmRvYyksaT1lLnNvbWUoZT0+ZS5nZXRNZXRhKCJwcmV2ZW50QXV0b2xpbmsiKSk7aWYoIW98fGkpcmV0dXJuO2NvbnN0e3RyOnN9PW47cmV0dXJuIGdldENoYW5nZWRSYW5nZXMoY29tYmluZVRyYW5zYWN0aW9uU3RlcHModC5kb2MsWy4uLmVdKSkuZm9yRWFjaCgoe25ld1JhbmdlOmV9KT0+e2NvbnN0IHQ9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9W107cmV0dXJuIGUubm9kZXNCZXR3ZWVuKHQuZnJvbSx0LnRvLChlLHQpPT57bihlKSYmci5wdXNoKHtub2RlOmUscG9zOnR9KX0pLHJ9KG4uZG9jLGUsZT0+ZS5pc1RleHRibG9jayk7bGV0IG8saTtpZih0Lmxlbmd0aD4xKW89dFswXSxpPW4uZG9jLnRleHRCZXR3ZWVuKG8ucG9zLG8ucG9zK28ubm9kZS5ub2RlU2l6ZSx2b2lkIDAsIiAiKTtlbHNlIGlmKHQubGVuZ3RoKXtjb25zdCByPW4uZG9jLnRleHRCZXR3ZWVuKGUuZnJvbSxlLnRvLCIgIiwiICIpO2lmKCFGaS50ZXN0KHIpKXJldHVybjtvPXRbMF0saT1uLmRvYy50ZXh0QmV0d2VlbihvLnBvcyxlLnRvLHZvaWQgMCwiICIpfWlmKG8mJmkpe2NvbnN0IGU9aS5zcGxpdChCaSkuZmlsdGVyKEJvb2xlYW4pO2lmKGUubGVuZ3RoPD0wKXJldHVybiExO2NvbnN0IHQ9ZVtlLmxlbmd0aC0xXSxhPW8ucG9zK2kubGFzdEluZGV4T2YodCk7aWYoIXQpcmV0dXJuITE7Y29uc3QgYz1MaSh0KS5tYXAoZT0+ZS50b09iamVjdChyLmRlZmF1bHRQcm90b2NvbCkpO2lmKCEoMT09PShsPWMpLmxlbmd0aD9sWzBdLmlzTGluazozPT09bC5sZW5ndGgmJmxbMV0uaXNMaW5rJiZbIigpIiwiW10iXS5pbmNsdWRlcyhsWzBdLnZhbHVlK2xbMl0udmFsdWUpKSlyZXR1cm4hMTtjLmZpbHRlcihlPT5lLmlzTGluaykubWFwKGU9Pih7Li4uZSxmcm9tOmErZS5zdGFydCsxLHRvOmErZS5lbmQrMX0pKS5maWx0ZXIoZT0+IW4uc2NoZW1hLm1hcmtzLmNvZGV8fCFuLmRvYy5yYW5nZUhhc01hcmsoZS5mcm9tLGUudG8sbi5zY2hlbWEubWFya3MuY29kZSkpLmZpbHRlcihlPT5yLnZhbGlkYXRlKGUudmFsdWUpKS5maWx0ZXIoZT0+ci5zaG91bGRBdXRvTGluayhlLnZhbHVlKSkuZm9yRWFjaChlPT57Z2V0TWFya3NCZXR3ZWVuKGUuZnJvbSxlLnRvLG4uZG9jKS5zb21lKGU9PmUubWFyay50eXBlPT09ci50eXBlKXx8cy5hZGRNYXJrKGUuZnJvbSxlLnRvLHIudHlwZS5jcmVhdGUoe2hyZWY6ZS5ocmVmfSkpfSl9dmFyIGx9KSxzLnN0ZXBzLmxlbmd0aD9zOnZvaWQgMH19KSkpLGUucHVzaChmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImhhbmRsZUNsaWNrTGluayIpLHByb3BzOntoYW5kbGVDbGljazoodCxuLHIpPT57dmFyIG8saTtpZigwIT09ci5idXR0b24pcmV0dXJuITE7aWYoIXQuZWRpdGFibGUpcmV0dXJuITE7bGV0IHM9bnVsbDtpZihyLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50KXM9ci50YXJnZXQ7ZWxzZXtjb25zdCB0PXIudGFyZ2V0O2lmKCF0KXJldHVybiExO2NvbnN0IG49ZS5lZGl0b3Iudmlldy5kb207cz10LmNsb3Nlc3QoImEiKSxzJiYhbi5jb250YWlucyhzKSYmKHM9bnVsbCl9aWYoIXMpcmV0dXJuITE7bGV0IGw9ITE7aWYoZS5lbmFibGVDbGlja1NlbGVjdGlvbiYmKGw9ZS5lZGl0b3IuY29tbWFuZHMuZXh0ZW5kTWFya1JhbmdlKGUudHlwZS5uYW1lKSksZS5vcGVuT25DbGljayl7Y29uc3Qgbj1nZXRBdHRyaWJ1dGVzKHQuc3RhdGUsZS50eXBlLm5hbWUpLHI9bnVsbCE9KG89cy5ocmVmKT9vOm4uaHJlZixhPW51bGwhPShpPXMudGFyZ2V0KT9pOm4udGFyZ2V0O3ImJih3aW5kb3cub3BlbihyLGEpLGw9ITApfXJldHVybiBsfX19KX0oe3R5cGU6dGhpcy50eXBlLGVkaXRvcjp0aGlzLmVkaXRvcixvcGVuT25DbGljazoid2hlbk5vdEVkaXRhYmxlIj09PXRoaXMub3B0aW9ucy5vcGVuT25DbGlja3x8dGhpcy5vcHRpb25zLm9wZW5PbkNsaWNrLGVuYWJsZUNsaWNrU2VsZWN0aW9uOnRoaXMub3B0aW9ucy5lbmFibGVDbGlja1NlbGVjdGlvbn0pKSx0aGlzLm9wdGlvbnMubGlua09uUGFzdGUmJmUucHVzaChmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFBsdWdpbih7a2V5Om5ldyBQbHVnaW5LZXkoImhhbmRsZVBhc3RlTGluayIpLHByb3BzOntoYW5kbGVQYXN0ZToodCxuLHIpPT57Y29uc3R7c2hvdWxkQXV0b0xpbms6b309ZSx7c3RhdGU6aX09dCx7c2VsZWN0aW9uOnN9PWkse2VtcHR5Omx9PXM7aWYobClyZXR1cm4hMTtsZXQgYT0iIjtyLmNvbnRlbnQuZm9yRWFjaChlPT57YSs9ZS50ZXh0Q29udGVudH0pO2NvbnN0IGM9ZmluZF8xKGEse2RlZmF1bHRQcm90b2NvbDplLmRlZmF1bHRQcm90b2NvbH0pLmZpbmQoZT0+ZS5pc0xpbmsmJmUudmFsdWU9PT1hKTtyZXR1cm4hKCFhfHwhY3x8dm9pZCAwIT09byYmIW8oYy52YWx1ZSkpJiZlLmVkaXRvci5jb21tYW5kcy5zZXRNYXJrKGUudHlwZSx7aHJlZjpjLmhyZWZ9KX19fSl9KHtlZGl0b3I6dGhpcy5lZGl0b3IsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsdHlwZTp0aGlzLnR5cGUsc2hvdWxkQXV0b0xpbms6dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rfSkpLGV9fSksX2k9T2JqZWN0LmRlZmluZVByb3BlcnR5LGppPSJ0ZXh0U3R5bGUiLHFpPS9eXHMqKFstKypdKVxzJC8sVWk9b24uY3JlYXRlKHtuYW1lOiJidWxsZXRMaXN0IixhZGRPcHRpb25zOigpPT4oe2l0ZW1UeXBlTmFtZToibGlzdEl0ZW0iLEhUTUxBdHRyaWJ1dGVzOnt9LGtlZXBNYXJrczohMSxrZWVwQXR0cmlidXRlczohMX0pLGdyb3VwOiJibG9jayBsaXN0Iixjb250ZW50KCl7cmV0dXJuYCR7dGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZX0rYH0scGFyc2VIVE1MOigpPT5be3RhZzoidWwifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsidWwiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJsaXN0IixwYXJzZU1hcmtkb3duOihlLHQpPT4ibGlzdCIhPT1lLnR5cGV8fGUub3JkZXJlZD9bXTp7dHlwZToiYnVsbGV0TGlzdCIsY29udGVudDplLml0ZW1zP3QucGFyc2VDaGlsZHJlbihlLml0ZW1zKTpbXX0scmVuZGVyTWFya2Rvd246KGUsdCk9PmUuY29udGVudD90LnJlbmRlckNoaWxkcmVuKGUuY29udGVudCwiXG4iKToiIixtYXJrZG93bk9wdGlvbnM6e2luZGVudHNDb250ZW50OiEwfSxhZGRDb21tYW5kcygpe3JldHVybnt0b2dnbGVCdWxsZXRMaXN0OigpPT4oe2NvbW1hbmRzOmUsY2hhaW46dH0pPT50aGlzLm9wdGlvbnMua2VlcEF0dHJpYnV0ZXM/dCgpLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcykudXBkYXRlQXR0cmlidXRlcygibGlzdEl0ZW0iLHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoamkpKS5ydW4oKTplLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcyl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LTgiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVCdWxsZXRMaXN0KCl9fSxhZGRJbnB1dFJ1bGVzKCl7bGV0IGU9d3JhcHBpbmdJbnB1dFJ1bGUoe2ZpbmQ6cWksdHlwZTp0aGlzLnR5cGV9KTtyZXR1cm4odGhpcy5vcHRpb25zLmtlZXBNYXJrc3x8dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzKSYmKGU9d3JhcHBpbmdJbnB1dFJ1bGUoe2ZpbmQ6cWksdHlwZTp0aGlzLnR5cGUsa2VlcE1hcmtzOnRoaXMub3B0aW9ucy5rZWVwTWFya3Msa2VlcEF0dHJpYnV0ZXM6dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzLGdldEF0dHJpYnV0ZXM6KCk9PnRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoamkpLGVkaXRvcjp0aGlzLmVkaXRvcn0pKSxbZV19fSksV2k9b24uY3JlYXRlKHtuYW1lOiJsaXN0SXRlbSIsYWRkT3B0aW9uczooKT0+KHtIVE1MQXR0cmlidXRlczp7fSxidWxsZXRMaXN0VHlwZU5hbWU6ImJ1bGxldExpc3QiLG9yZGVyZWRMaXN0VHlwZU5hbWU6Im9yZGVyZWRMaXN0In0pLGNvbnRlbnQ6InBhcmFncmFwaCBibG9jayoiLGRlZmluaW5nOiEwLHBhcnNlSFRNTDooKT0+W3t0YWc6ImxpIn1dLHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bImxpIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdF9pdGVtIixwYXJzZU1hcmtkb3duOihlLHQpPT57dmFyIG47aWYoImxpc3RfaXRlbSIhPT1lLnR5cGUpcmV0dXJuW107Y29uc3Qgcj1udWxsIT0obj10LnBhcnNlQmxvY2tDaGlsZHJlbik/bjp0LnBhcnNlQ2hpbGRyZW47bGV0IG89W107aWYoZS50b2tlbnMmJmUudG9rZW5zLmxlbmd0aD4wKXtpZihlLnRva2Vucy5zb21lKGU9PiJwYXJhZ3JhcGgiPT09ZS50eXBlKSlvPXIoZS50b2tlbnMpO2Vsc2V7Y29uc3Qgbj1lLnRva2Vuc1swXTtpZihuJiYidGV4dCI9PT1uLnR5cGUmJm4udG9rZW5zJiZuLnRva2Vucy5sZW5ndGg+MCl7aWYobz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDp0LnBhcnNlSW5saW5lKG4udG9rZW5zKX1dLGUudG9rZW5zLmxlbmd0aD4xKXtjb25zdCB0PXIoZS50b2tlbnMuc2xpY2UoMSkpO28ucHVzaCguLi50KX19ZWxzZSBvPXIoZS50b2tlbnMpfX1yZXR1cm4gMD09PW8ubGVuZ3RoJiYobz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbXX1dKSx7dHlwZToibGlzdEl0ZW0iLGNvbnRlbnQ6b319LHJlbmRlck1hcmtkb3duOihlLHQsbik9PnJlbmRlck5lc3RlZE1hcmtkb3duQ29udGVudChlLHQsZT0+e3ZhciB0LG47aWYoImJ1bGxldExpc3QiPT09ZS5wYXJlbnRUeXBlKXJldHVybiItICI7aWYoIm9yZGVyZWRMaXN0Ij09PWUucGFyZW50VHlwZSl7cmV0dXJuYCR7KChudWxsPT0obj1udWxsPT0odD1lLm1ldGEpP3ZvaWQgMDp0LnBhcmVudEF0dHJzKT92b2lkIDA6bi5zdGFydCl8fDEpK2UuaW5kZXh9LiBgfXJldHVybiItICJ9LG4pLGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJue0VudGVyOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zcGxpdExpc3RJdGVtKHRoaXMubmFtZSksVGFiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zaW5rTGlzdEl0ZW0odGhpcy5uYW1lKSwiU2hpZnQtVGFiIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMubGlmdExpc3RJdGVtKHRoaXMubmFtZSl9fX0pOygoZSx0KT0+e2Zvcih2YXIgbiBpbiB0KV9pKGUsbix7Z2V0OnRbbl0sZW51bWVyYWJsZTohMH0pfSkoe30se2ZpbmRMaXN0SXRlbVBvczooKT0+ZmluZExpc3RJdGVtUG9zLGdldE5leHRMaXN0RGVwdGg6KCk9PmdldE5leHRMaXN0RGVwdGgsaGFuZGxlQmFja3NwYWNlOigpPT5oYW5kbGVCYWNrc3BhY2UsaGFuZGxlRGVsZXRlOigpPT5oYW5kbGVEZWxldGUsaGFzTGlzdEJlZm9yZTooKT0+aGFzTGlzdEJlZm9yZSxoYXNMaXN0SXRlbUFmdGVyOigpPT5oYXNMaXN0SXRlbUFmdGVyLGhhc0xpc3RJdGVtQmVmb3JlOigpPT5oYXNMaXN0SXRlbUJlZm9yZSxsaXN0SXRlbUhhc1N1Ykxpc3Q6KCk9Pmxpc3RJdGVtSGFzU3ViTGlzdCxuZXh0TGlzdElzRGVlcGVyOigpPT5uZXh0TGlzdElzRGVlcGVyLG5leHRMaXN0SXNIaWdoZXI6KCk9Pm5leHRMaXN0SXNIaWdoZXJ9KTt2YXIgZmluZExpc3RJdGVtUG9zPShlLHQpPT57Y29uc3R7JGZyb206bn09dC5zZWxlY3Rpb24scj1nZXROb2RlVHlwZShlLHQuc2NoZW1hKTtsZXQgbz1udWxsLGk9bi5kZXB0aCxzPW4ucG9zLGw9bnVsbDtmb3IoO2k+MCYmbnVsbD09PWw7KW89bi5ub2RlKGkpLG8udHlwZT09PXI/bD1pOihpLT0xLHMtPTEpO3JldHVybiBudWxsPT09bD9udWxsOnskcG9zOnQuZG9jLnJlc29sdmUocyksZGVwdGg6bH19LGdldE5leHRMaXN0RGVwdGg9KGUsdCk9Pntjb25zdCBuPWZpbmRMaXN0SXRlbVBvcyhlLHQpO2lmKCFuKXJldHVybiExO2NvbnN0WyxyXT0oKGUsdCxuLHI9MjApPT57Y29uc3Qgbz1lLmRvYy5yZXNvbHZlKG4pO2xldCBpPXIscz1udWxsO2Zvcig7aT4wJiZudWxsPT09czspe2NvbnN0IGU9by5ub2RlKGkpOyhudWxsPT1lP3ZvaWQgMDplLnR5cGUubmFtZSk9PT10P3M9ZTppLT0xfXJldHVybltzLGldfSkodCxlLG4uJHBvcy5wb3MrNCk7cmV0dXJuIHJ9LGhhc0xpc3RCZWZvcmU9KGUsdCxuKT0+e2NvbnN0eyRhbmNob3I6cn09ZS5zZWxlY3Rpb24sbz1NYXRoLm1heCgwLHIucG9zLTIpLGk9ZS5kb2MucmVzb2x2ZShvKS5ub2RlKCk7cmV0dXJuISghaXx8IW4uaW5jbHVkZXMoaS50eXBlLm5hbWUpKX0saGFzTGlzdEl0ZW1CZWZvcmU9KGUsdCk9Pnt2YXIgbjtjb25zdHskYW5jaG9yOnJ9PXQuc2VsZWN0aW9uLG89dC5kb2MucmVzb2x2ZShyLnBvcy0yKTtyZXR1cm4gMCE9PW8uaW5kZXgoKSYmKG51bGw9PShuPW8ubm9kZUJlZm9yZSk/dm9pZCAwOm4udHlwZS5uYW1lKT09PWV9LGxpc3RJdGVtSGFzU3ViTGlzdD0oZSx0LG4pPT57aWYoIW4pcmV0dXJuITE7Y29uc3Qgcj1nZXROb2RlVHlwZShlLHQuc2NoZW1hKTtsZXQgbz0hMTtyZXR1cm4gbi5kZXNjZW5kYW50cyhlPT57ZS50eXBlPT09ciYmKG89ITApfSksb30saGFuZGxlQmFja3NwYWNlPShlLHQsbik9PntpZihlLmNvbW1hbmRzLnVuZG9JbnB1dFJ1bGUoKSlyZXR1cm4hMDtpZihlLnN0YXRlLnNlbGVjdGlvbi5mcm9tIT09ZS5zdGF0ZS5zZWxlY3Rpb24udG8pcmV0dXJuITE7aWYoIWlzTm9kZUFjdGl2ZShlLnN0YXRlLHQpJiZoYXNMaXN0QmVmb3JlKGUuc3RhdGUsdCxuKSl7Y29uc3R7JGFuY2hvcjpufT1lLnN0YXRlLnNlbGVjdGlvbixyPWUuc3RhdGUuZG9jLnJlc29sdmUobi5iZWZvcmUoKS0xKSxvPVtdO3Iubm9kZSgpLmRlc2NlbmRhbnRzKChlLG4pPT57ZS50eXBlLm5hbWU9PT10JiZvLnB1c2goe25vZGU6ZSxwb3M6bn0pfSk7Y29uc3QgaT1vLmF0KC0xKTtpZighaSlyZXR1cm4hMTtjb25zdCBzPWUuc3RhdGUuZG9jLnJlc29sdmUoci5zdGFydCgpK2kucG9zKzEpO3JldHVybiBlLmNoYWluKCkuY3V0KHtmcm9tOm4uc3RhcnQoKS0xLHRvOm4uZW5kKCkrMX0scy5lbmQoKSkuam9pbkZvcndhcmQoKS5ydW4oKX1pZighaXNOb2RlQWN0aXZlKGUuc3RhdGUsdCkpcmV0dXJuITE7aWYoIShlPT57Y29uc3R7JGZyb206dCwkdG86bn09ZS5zZWxlY3Rpb247cmV0dXJuISh0LnBhcmVudE9mZnNldD4wfHx0LnBvcyE9PW4ucG9zKX0pKGUuc3RhdGUpKXJldHVybiExO2NvbnN0IHI9ZmluZExpc3RJdGVtUG9zKHQsZS5zdGF0ZSk7aWYoIXIpcmV0dXJuITE7Y29uc3Qgbz1lLnN0YXRlLmRvYy5yZXNvbHZlKHIuJHBvcy5wb3MtMikubm9kZShyLmRlcHRoKSxpPWxpc3RJdGVtSGFzU3ViTGlzdCh0LGUuc3RhdGUsbyk7cmV0dXJuIGhhc0xpc3RJdGVtQmVmb3JlKHQsZS5zdGF0ZSkmJiFpP2UuY29tbWFuZHMuam9pbkl0ZW1CYWNrd2FyZCgpOmUuY2hhaW4oKS5saWZ0TGlzdEl0ZW0odCkucnVuKCl9LG5leHRMaXN0SXNEZWVwZXI9KGUsdCk9Pntjb25zdCBuPWdldE5leHRMaXN0RGVwdGgoZSx0KSxyPWZpbmRMaXN0SXRlbVBvcyhlLHQpO3JldHVybiEoIXJ8fCFuKSYmbj5yLmRlcHRofSxuZXh0TGlzdElzSGlnaGVyPShlLHQpPT57Y29uc3Qgbj1nZXROZXh0TGlzdERlcHRoKGUsdCkscj1maW5kTGlzdEl0ZW1Qb3MoZSx0KTtyZXR1cm4hKCFyfHwhbikmJm48ci5kZXB0aH0saGFuZGxlRGVsZXRlPShlLHQpPT57aWYoIWlzTm9kZUFjdGl2ZShlLnN0YXRlLHQpKXJldHVybiExO2lmKCEoKGUsdCk9Pntjb25zdHskZnJvbTpuLCR0bzpyLCRhbmNob3I6b309ZS5zZWxlY3Rpb247aWYodCl7Y29uc3Qgbj1maW5kUGFyZW50Tm9kZShlPT5lLnR5cGUubmFtZT09PXQpKGUuc2VsZWN0aW9uKTtpZighbilyZXR1cm4hMTtjb25zdCByPWUuZG9jLnJlc29sdmUobi5wb3MrMSk7cmV0dXJuIG8ucG9zKzE9PT1yLmVuZCgpfXJldHVybiEoci5wYXJlbnRPZmZzZXQ8ci5wYXJlbnQubm9kZVNpemUtMnx8bi5wb3MhPT1yLnBvcyl9KShlLnN0YXRlLHQpKXJldHVybiExO2NvbnN0e3NlbGVjdGlvbjpufT1lLnN0YXRlLHskZnJvbTpyLCR0bzpvfT1uO3JldHVybiEoIW4uZW1wdHkmJnIuc2FtZVBhcmVudChvKSkmJihuZXh0TGlzdElzRGVlcGVyKHQsZS5zdGF0ZSk/ZS5jaGFpbigpLmZvY3VzKGUuc3RhdGUuc2VsZWN0aW9uLmZyb20rNCkubGlmdCh0KS5qb2luQmFja3dhcmQoKS5ydW4oKTpuZXh0TGlzdElzSGlnaGVyKHQsZS5zdGF0ZSk/ZS5jaGFpbigpLmpvaW5Gb3J3YXJkKCkuam9pbkJhY2t3YXJkKCkucnVuKCk6ZS5jb21tYW5kcy5qb2luSXRlbUZvcndhcmQoKSl9LGhhc0xpc3RJdGVtQWZ0ZXI9KGUsdCk9Pnt2YXIgbjtjb25zdHskYW5jaG9yOnJ9PXQuc2VsZWN0aW9uLG89dC5kb2MucmVzb2x2ZShyLnBvcy1yLnBhcmVudE9mZnNldC0yKTtyZXR1cm4gby5pbmRleCgpIT09by5wYXJlbnQuY2hpbGRDb3VudC0xJiYobnVsbD09KG49by5ub2RlQWZ0ZXIpP3ZvaWQgMDpuLnR5cGUubmFtZSk9PT1lfSxLaT1qdC5jcmVhdGUoe25hbWU6Imxpc3RLZXltYXAiLGFkZE9wdGlvbnM6KCk9Pih7bGlzdFR5cGVzOlt7aXRlbU5hbWU6Imxpc3RJdGVtIix3cmFwcGVyTmFtZXM6WyJidWxsZXRMaXN0Iiwib3JkZXJlZExpc3QiXX0se2l0ZW1OYW1lOiJ0YXNrSXRlbSIsd3JhcHBlck5hbWVzOlsidGFza0xpc3QiXX1dfSksYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57RGVsZXRlOih7ZWRpdG9yOmV9KT0+e2xldCB0PSExO3JldHVybiB0aGlzLm9wdGlvbnMubGlzdFR5cGVzLmZvckVhY2goKHtpdGVtTmFtZTpufSk9Pnt2b2lkIDAhPT1lLnN0YXRlLnNjaGVtYS5ub2Rlc1tuXSYmaGFuZGxlRGVsZXRlKGUsbikmJih0PSEwKX0pLHR9LCJNb2QtRGVsZXRlIjooe2VkaXRvcjplfSk9PntsZXQgdD0hMTtyZXR1cm4gdGhpcy5vcHRpb25zLmxpc3RUeXBlcy5mb3JFYWNoKCh7aXRlbU5hbWU6bn0pPT57dm9pZCAwIT09ZS5zdGF0ZS5zY2hlbWEubm9kZXNbbl0mJmhhbmRsZURlbGV0ZShlLG4pJiYodD0hMCl9KSx0fSxCYWNrc3BhY2U6KHtlZGl0b3I6ZX0pPT57bGV0IHQ9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOm4sd3JhcHBlck5hbWVzOnJ9KT0+e3ZvaWQgMCE9PWUuc3RhdGUuc2NoZW1hLm5vZGVzW25dJiZoYW5kbGVCYWNrc3BhY2UoZSxuLHIpJiYodD0hMCl9KSx0fSwiTW9kLUJhY2tzcGFjZSI6KHtlZGl0b3I6ZX0pPT57bGV0IHQ9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOm4sd3JhcHBlck5hbWVzOnJ9KT0+e3ZvaWQgMCE9PWUuc3RhdGUuc2NoZW1hLm5vZGVzW25dJiZoYW5kbGVCYWNrc3BhY2UoZSxuLHIpJiYodD0hMCl9KSx0fX19fSksSmk9L14oXHMqKShcZCspXC5ccysoLiopJC8sR2k9L15ccy87ZnVuY3Rpb24gc3BsaXRJdGVtQ29udGVudChlKXtjb25zdCB0PVtdLG49W107bGV0IHI9ITE7cmV0dXJuIGUuZm9yRWFjaChlPT57aWYoIXIpcmV0dXJuIiI9PT1lLnRyaW0oKXx8dC5sZW5ndGg+MCYmZnVuY3Rpb24oZSl7Y29uc3QgdD1lLnRyaW1TdGFydCgpO3JldHVybi9eWy0rKl1ccysvLnRlc3QodCl8fC9eXGQrXC5ccysvLnRlc3QodCl8fC9ePlxzPy8udGVzdCh0KXx8L15gYGAvLnRlc3QodCl8fC9efn5+Ly50ZXN0KHQpfShlKT8ocj0hMCx2b2lkIG4ucHVzaChlKSk6dm9pZCB0LnB1c2goZSk7bi5wdXNoKGUpfSkse3BhcmFncmFwaExpbmVzOnQsYmxvY2tMaW5lczpufX1mdW5jdGlvbiBidWlsZE5lc3RlZFN0cnVjdHVyZShlLHQsbil7Y29uc3Qgcj1bXTtsZXQgbz0wO2Zvcig7bzxlLmxlbmd0aDspe2NvbnN0IGk9ZVtvXTtpZihpLmluZGVudD09PXQpe2NvbnN0e3BhcmFncmFwaExpbmVzOnMsYmxvY2tMaW5lczpsfT1zcGxpdEl0ZW1Db250ZW50KGkuY29udGVudExpbmVzKSxhPXMuam9pbigiXG4iKS50cmltKCksYz1bXTthJiZjLnB1c2goe3R5cGU6InBhcmFncmFwaCIscmF3OmEsdG9rZW5zOm4uaW5saW5lVG9rZW5zKGEpfSk7Y29uc3QgZD1sLmpvaW4oIlxuIikudHJpbSgpO2lmKGQpe2NvbnN0IGU9bi5ibG9ja1Rva2VucyhkKTtjLnB1c2goLi4uZSl9bGV0IHA9bysxO2NvbnN0IGY9W107Zm9yKDtwPGUubGVuZ3RoJiZlW3BdLmluZGVudD50OylmLnB1c2goZVtwXSkscCs9MTtpZihmLmxlbmd0aD4wKXtjb25zdCBlPU1hdGgubWluKC4uLmYubWFwKGU9PmUuaW5kZW50KSksdD1idWlsZE5lc3RlZFN0cnVjdHVyZShmLGUsbik7Yy5wdXNoKHt0eXBlOiJsaXN0IixvcmRlcmVkOiEwLHN0YXJ0OmZbMF0ubnVtYmVyLGl0ZW1zOnQscmF3OmYubWFwKGU9PmUucmF3KS5qb2luKCJcbiIpfSl9ci5wdXNoKHt0eXBlOiJsaXN0X2l0ZW0iLHJhdzppLnJhdyx0b2tlbnM6Y30pLG89cH1lbHNlIG8rPTF9cmV0dXJuIHJ9dmFyIFhpPSJ0ZXh0U3R5bGUiLFFpPS9eKFxkKylcLlxzJC8sWmk9b24uY3JlYXRlKHtuYW1lOiJvcmRlcmVkTGlzdCIsYWRkT3B0aW9uczooKT0+KHtpdGVtVHlwZU5hbWU6Imxpc3RJdGVtIixIVE1MQXR0cmlidXRlczp7fSxrZWVwTWFya3M6ITEsa2VlcEF0dHJpYnV0ZXM6ITF9KSxncm91cDoiYmxvY2sgbGlzdCIsY29udGVudCgpe3JldHVybmAke3RoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWV9K2B9LGFkZEF0dHJpYnV0ZXM6KCk9Pih7c3RhcnQ6e2RlZmF1bHQ6MSxwYXJzZUhUTUw6ZT0+ZS5oYXNBdHRyaWJ1dGUoInN0YXJ0Iik/cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoInN0YXJ0Iil8fCIiLDEwKToxfSx0eXBlOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOmU9PmUuZ2V0QXR0cmlidXRlKCJ0eXBlIil9fSkscGFyc2VIVE1MOigpPT5be3RhZzoib2wifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe2NvbnN0e3N0YXJ0OnQsLi4ubn09ZTtyZXR1cm4gMT09PXQ/WyJvbCIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXTpbIm9sIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdCIscGFyc2VNYXJrZG93bjooZSx0KT0+e2lmKCJsaXN0IiE9PWUudHlwZXx8IWUub3JkZXJlZClyZXR1cm5bXTtjb25zdCBuPWUuc3RhcnR8fDEscj1lLml0ZW1zP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGU9PntpZigibGlzdF9pdGVtIiE9PWUudHlwZSlyZXR1cm4gdC5wYXJzZUNoaWxkcmVuKFtlXSlbMF07Y29uc3Qgbj1bXTtyZXR1cm4gZS50b2tlbnMmJmUudG9rZW5zLmxlbmd0aD4wJiZlLnRva2Vucy5mb3JFYWNoKGU9PntpZigicGFyYWdyYXBoIj09PWUudHlwZXx8Imxpc3QiPT09ZS50eXBlfHwiYmxvY2txdW90ZSI9PT1lLnR5cGV8fCJjb2RlIj09PWUudHlwZSluLnB1c2goLi4udC5wYXJzZUNoaWxkcmVuKFtlXSkpO2Vsc2UgaWYoInRleHQiPT09ZS50eXBlJiZlLnRva2Vucyl7Y29uc3Qgcj10LnBhcnNlQ2hpbGRyZW4oW2VdKTtuLnB1c2goe3R5cGU6InBhcmFncmFwaCIsY29udGVudDpyfSl9ZWxzZXtjb25zdCByPXQucGFyc2VDaGlsZHJlbihbZV0pO3IubGVuZ3RoPjAmJm4ucHVzaCguLi5yKX19KSx7dHlwZToibGlzdEl0ZW0iLGNvbnRlbnQ6bn19KX0oZS5pdGVtcyx0KTpbXTtyZXR1cm4gMSE9PW4/e3R5cGU6Im9yZGVyZWRMaXN0IixhdHRyczp7c3RhcnQ6bn0sY29udGVudDpyfTp7dHlwZToib3JkZXJlZExpc3QiLGNvbnRlbnQ6cn19LHJlbmRlck1hcmtkb3duOihlLHQpPT5lLmNvbnRlbnQ/dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQsIlxuIik6IiIsbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6Im9yZGVyZWRMaXN0IixsZXZlbDoiYmxvY2siLHN0YXJ0OmU9Pntjb25zdCB0PWUubWF0Y2goL14oXHMqKShcZCspXC5ccysvKSxuPW51bGw9PXQ/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PW4/bjotMX0sdG9rZW5pemU6KGUsdCxuKT0+e3ZhciByO2NvbnN0IG89ZS5zcGxpdCgiXG4iKSxbaSxzXT1mdW5jdGlvbihlKXtjb25zdCB0PVtdO2xldCBuPTAscj0wO2Zvcig7bjxlLmxlbmd0aDspe2NvbnN0IG89ZVtuXSxpPW8ubWF0Y2goSmkpO2lmKCFpKWJyZWFrO2NvbnN0WyxzLGwsYV09aSxjPXMubGVuZ3RoLGQ9W2FdO2xldCBwPW4rMTtjb25zdCBmPVtvXTtsZXQgbT0hMTtmb3IoO3A8ZS5sZW5ndGg7KXtjb25zdCB0PWVbcF07aWYodC5tYXRjaChKaSkpYnJlYWs7aWYoIiI9PT10LnRyaW0oKSlmLnB1c2godCksZC5wdXNoKCIiKSxtPSEwLHArPTE7ZWxzZSBpZih0Lm1hdGNoKEdpKSlmLnB1c2godCksZC5wdXNoKHQuc2xpY2UoYysyKSkscCs9MTtlbHNle2lmKG0pYnJlYWs7Zi5wdXNoKHQpLGQucHVzaCh0KSxwKz0xfX10LnB1c2goe2luZGVudDpjLG51bWJlcjpwYXJzZUludChsLDEwKSxjb250ZW50OmQuam9pbigiXG4iKS50cmltKCksY29udGVudExpbmVzOmQscmF3OmYuam9pbigiXG4iKX0pLHI9cCxuPXB9cmV0dXJuW3Qscl19KG8pO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47Y29uc3QgbD1idWlsZE5lc3RlZFN0cnVjdHVyZShpLDAsbik7aWYoMD09PWwubGVuZ3RoKXJldHVybjtyZXR1cm57dHlwZToibGlzdCIsb3JkZXJlZDohMCxzdGFydDoobnVsbD09KHI9aVswXSk/dm9pZCAwOnIubnVtYmVyKXx8MSxpdGVtczpsLHJhdzpvLnNsaWNlKDAscykuam9pbigiXG4iKX19fSxtYXJrZG93bk9wdGlvbnM6e2luZGVudHNDb250ZW50OiEwfSxhZGRDb21tYW5kcygpe3JldHVybnt0b2dnbGVPcmRlcmVkTGlzdDooKT0+KHtjb21tYW5kczplLGNoYWluOnR9KT0+dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzP3QoKS50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lLHRoaXMub3B0aW9ucy5rZWVwTWFya3MpLnVwZGF0ZUF0dHJpYnV0ZXMoImxpc3RJdGVtIix0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFhpKSkucnVuKCk6ZS50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lLHRoaXMub3B0aW9ucy5rZWVwTWFya3MpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC03IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlT3JkZXJlZExpc3QoKX19LGFkZElucHV0UnVsZXMoKXtsZXQgZT13cmFwcGluZ0lucHV0UnVsZSh7ZmluZDpRaSx0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOmU9Pih7c3RhcnQ6K2VbMV19KSxqb2luUHJlZGljYXRlOihlLHQpPT50LmNoaWxkQ291bnQrdC5hdHRycy5zdGFydD09PStlWzFdfSk7cmV0dXJuKHRoaXMub3B0aW9ucy5rZWVwTWFya3N8fHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcykmJihlPXdyYXBwaW5nSW5wdXRSdWxlKHtmaW5kOlFpLHR5cGU6dGhpcy50eXBlLGtlZXBNYXJrczp0aGlzLm9wdGlvbnMua2VlcE1hcmtzLGtlZXBBdHRyaWJ1dGVzOnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcyxnZXRBdHRyaWJ1dGVzOmU9Pih7c3RhcnQ6K2VbMV0sLi4udGhpcy5lZGl0b3IuZ2V0QXR0cmlidXRlcyhYaSl9KSxqb2luUHJlZGljYXRlOihlLHQpPT50LmNoaWxkQ291bnQrdC5hdHRycy5zdGFydD09PStlWzFdLGVkaXRvcjp0aGlzLmVkaXRvcn0pKSxbZV19fSksWWk9L15ccyooXFsoWyggfHhdKT9cXSlccyQvLGVzPW9uLmNyZWF0ZSh7bmFtZToidGFza0l0ZW0iLGFkZE9wdGlvbnM6KCk9Pih7bmVzdGVkOiExLEhUTUxBdHRyaWJ1dGVzOnt9LHRhc2tMaXN0VHlwZU5hbWU6InRhc2tMaXN0IixhMTF5OnZvaWQgMH0pLGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5vcHRpb25zLm5lc3RlZD8icGFyYWdyYXBoIGJsb2NrKiI6InBhcmFncmFwaCsifSxkZWZpbmluZzohMCxhZGRBdHRyaWJ1dGVzOigpPT4oe2NoZWNrZWQ6e2RlZmF1bHQ6ITEsa2VlcE9uU3BsaXQ6ITEscGFyc2VIVE1MOmU9Pntjb25zdCB0PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWNoZWNrZWQiKTtyZXR1cm4iIj09PXR8fCJ0cnVlIj09PXR9LHJlbmRlckhUTUw6ZT0+KHsiZGF0YS1jaGVja2VkIjplLmNoZWNrZWR9KX19KSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzpgbGlbZGF0YS10eXBlPSIke3RoaXMubmFtZX0iXWAscHJpb3JpdHk6NTF9XX0scmVuZGVySFRNTCh7bm9kZTplLEhUTUxBdHRyaWJ1dGVzOnR9KXtyZXR1cm5bImxpIixtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQseyJkYXRhLXR5cGUiOnRoaXMubmFtZX0pLFsibGFiZWwiLFsiaW5wdXQiLHt0eXBlOiJjaGVja2JveCIsY2hlY2tlZDplLmF0dHJzLmNoZWNrZWQ/ImNoZWNrZWQiOm51bGx9XSxbInNwYW4iXV0sWyJkaXYiLDBdXX0scGFyc2VNYXJrZG93bjooZSx0KT0+e2NvbnN0IG49W107aWYoZS50b2tlbnMmJmUudG9rZW5zLmxlbmd0aD4wP24ucHVzaCh0LmNyZWF0ZU5vZGUoInBhcmFncmFwaCIse30sdC5wYXJzZUlubGluZShlLnRva2VucykpKTplLnRleHQ/bi5wdXNoKHQuY3JlYXRlTm9kZSgicGFyYWdyYXBoIix7fSxbdC5jcmVhdGVOb2RlKCJ0ZXh0Iix7dGV4dDplLnRleHR9KV0pKTpuLnB1c2godC5jcmVhdGVOb2RlKCJwYXJhZ3JhcGgiLHt9LFtdKSksZS5uZXN0ZWRUb2tlbnMmJmUubmVzdGVkVG9rZW5zLmxlbmd0aD4wKXtjb25zdCByPXQucGFyc2VDaGlsZHJlbihlLm5lc3RlZFRva2Vucyk7bi5wdXNoKC4uLnIpfXJldHVybiB0LmNyZWF0ZU5vZGUoInRhc2tJdGVtIix7Y2hlY2tlZDplLmNoZWNrZWR8fCExfSxuKX0scmVuZGVyTWFya2Rvd246KGUsdCk9Pnt2YXIgbjtyZXR1cm4gcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50KGUsdCxgLSBbJHsobnVsbD09KG49ZS5hdHRycyk/dm9pZCAwOm4uY2hlY2tlZCk/IngiOiIgIn1dIGApfSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe2NvbnN0IGU9e0VudGVyOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zcGxpdExpc3RJdGVtKHRoaXMubmFtZSksIlNoaWZ0LVRhYiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmxpZnRMaXN0SXRlbSh0aGlzLm5hbWUpfTtyZXR1cm4gdGhpcy5vcHRpb25zLm5lc3RlZD97Li4uZSxUYWI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNpbmtMaXN0SXRlbSh0aGlzLm5hbWUpfTplfSxhZGROb2RlVmlldygpe3JldHVybih7bm9kZTplLEhUTUxBdHRyaWJ1dGVzOnQsZ2V0UG9zOm4sZWRpdG9yOnJ9KT0+e2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIiksbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdXBkYXRlQTExWT1lPT57dmFyIHQsbjtsLmFyaWFMYWJlbD0obnVsbD09KG49bnVsbD09KHQ9dGhpcy5vcHRpb25zLmExMXkpP3ZvaWQgMDp0LmNoZWNrYm94TGFiZWwpP3ZvaWQgMDpuLmNhbGwodCxlLGwuY2hlY2tlZCkpfHxgVGFzayBpdGVtIGNoZWNrYm94IGZvciAke2UudGV4dENvbnRlbnR8fCJlbXB0eSB0YXNrIGl0ZW0ifWB9O3VwZGF0ZUExMVkoZSksaS5jb250ZW50RWRpdGFibGU9ImZhbHNlIixsLnR5cGU9ImNoZWNrYm94IixsLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsZT0+ZS5wcmV2ZW50RGVmYXVsdCgpKSxsLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdD0+e2lmKCFyLmlzRWRpdGFibGUmJiF0aGlzLm9wdGlvbnMub25SZWFkT25seUNoZWNrZWQpcmV0dXJuIHZvaWQobC5jaGVja2VkPSFsLmNoZWNrZWQpO2NvbnN0e2NoZWNrZWQ6b309dC50YXJnZXQ7ci5pc0VkaXRhYmxlJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmci5jaGFpbigpLmZvY3VzKHZvaWQgMCx7c2Nyb2xsSW50b1ZpZXc6ITF9KS5jb21tYW5kKCh7dHI6ZX0pPT57Y29uc3QgdD1uKCk7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiExO2NvbnN0IHI9ZS5kb2Mubm9kZUF0KHQpO3JldHVybiBlLnNldE5vZGVNYXJrdXAodCx2b2lkIDAsey4uLm51bGw9PXI/dm9pZCAwOnIuYXR0cnMsY2hlY2tlZDpvfSksITB9KS5ydW4oKSwhci5pc0VkaXRhYmxlJiZ0aGlzLm9wdGlvbnMub25SZWFkT25seUNoZWNrZWQmJih0aGlzLm9wdGlvbnMub25SZWFkT25seUNoZWNrZWQoZSxvKXx8KGwuY2hlY2tlZD0hbC5jaGVja2VkKSl9KSxPYmplY3QuZW50cmllcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMpLmZvckVhY2goKFtlLHRdKT0+e28uc2V0QXR0cmlidXRlKGUsdCl9KSxvLmRhdGFzZXQuY2hlY2tlZD1lLmF0dHJzLmNoZWNrZWQsbC5jaGVja2VkPWUuYXR0cnMuY2hlY2tlZCxpLmFwcGVuZChsLHMpLG8uYXBwZW5kKGksYSksT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW2UsdF0pPT57by5zZXRBdHRyaWJ1dGUoZSx0KX0pO2xldCBjPW5ldyBTZXQoT2JqZWN0LmtleXModCkpO3JldHVybntkb206byxjb250ZW50RE9NOmEsdXBkYXRlOmU9PntpZihlLnR5cGUhPT10aGlzLnR5cGUpcmV0dXJuITE7by5kYXRhc2V0LmNoZWNrZWQ9ZS5hdHRycy5jaGVja2VkLGwuY2hlY2tlZD1lLmF0dHJzLmNoZWNrZWQsdXBkYXRlQTExWShlKTtjb25zdCB0PWdldFJlbmRlcmVkQXR0cmlidXRlcyhlLHIuZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzKSxuPW5ldyBTZXQoT2JqZWN0LmtleXModCkpLGk9dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzO3JldHVybiBjLmZvckVhY2goZT0+e24uaGFzKGUpfHwoZSBpbiBpP28uc2V0QXR0cmlidXRlKGUsaVtlXSk6by5yZW1vdmVBdHRyaWJ1dGUoZSkpfSksT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW2UsdF0pPT57bnVsbD09dD9lIGluIGk/by5zZXRBdHRyaWJ1dGUoZSxpW2VdKTpvLnJlbW92ZUF0dHJpYnV0ZShlKTpvLnNldEF0dHJpYnV0ZShlLHQpfSksYz1uLCEwfX19fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW3dyYXBwaW5nSW5wdXRSdWxlKHtmaW5kOllpLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtjaGVja2VkOiJ4Ij09PWVbZS5sZW5ndGgtMV19KX0pXX19KSxucz1vbi5jcmVhdGUoe25hbWU6InRhc2tMaXN0IixhZGRPcHRpb25zOigpPT4oe2l0ZW1UeXBlTmFtZToidGFza0l0ZW0iLEhUTUxBdHRyaWJ1dGVzOnt9fSksZ3JvdXA6ImJsb2NrIGxpc3QiLGNvbnRlbnQoKXtyZXR1cm5gJHt0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lfStgfSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzpgdWxbZGF0YS10eXBlPSIke3RoaXMubmFtZX0iXWAscHJpb3JpdHk6NTF9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsidWwiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSx7ImRhdGEtdHlwZSI6dGhpcy5uYW1lfSksMF19LHBhcnNlTWFya2Rvd246KGUsdCk9PnQuY3JlYXRlTm9kZSgidGFza0xpc3QiLHt9LHQucGFyc2VDaGlsZHJlbihlLml0ZW1zfHxbXSkpLHJlbmRlck1hcmtkb3duOihlLHQpPT5lLmNvbnRlbnQ/dC5yZW5kZXJDaGlsZHJlbihlLmNvbnRlbnQsIlxuIik6IiIsbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6InRhc2tMaXN0IixsZXZlbDoiYmxvY2siLHN0YXJ0KGUpe3ZhciB0O2NvbnN0IG49bnVsbD09KHQ9ZS5tYXRjaCgvXlxzKlstKypdXHMrXFsoWyB4WF0pXF1ccysvKSk/dm9pZCAwOnQuaW5kZXg7cmV0dXJuIHZvaWQgMCE9PW4/bjotMX0sdG9rZW5pemUoZSx0LG4pe2NvbnN0IHBhcnNlVGFza0xpc3RDb250ZW50PWU9Pntjb25zdCB0PXBhcnNlSW5kZW50ZWRCbG9ja3MoZSx7aXRlbVBhdHRlcm46L14oXHMqKShbLSsqXSlccytcWyhbIHhYXSlcXVxzKyguKikkLyxleHRyYWN0SXRlbURhdGE6ZT0+KHtpbmRlbnRMZXZlbDplWzFdLmxlbmd0aCxtYWluQ29udGVudDplWzRdLGNoZWNrZWQ6IngiPT09ZVszXS50b0xvd2VyQ2FzZSgpfSksY3JlYXRlVG9rZW46KGUsdCk9Pih7dHlwZToidGFza0l0ZW0iLHJhdzoiIixtYWluQ29udGVudDplLm1haW5Db250ZW50LGluZGVudExldmVsOmUuaW5kZW50TGV2ZWwsY2hlY2tlZDplLmNoZWNrZWQsdGV4dDplLm1haW5Db250ZW50LHRva2VuczpuLmlubGluZVRva2VucyhlLm1haW5Db250ZW50KSxuZXN0ZWRUb2tlbnM6dH0pLGN1c3RvbU5lc3RlZFBhcnNlcjpwYXJzZVRhc2tMaXN0Q29udGVudH0sbik7cmV0dXJuIHQ/W3t0eXBlOiJ0YXNrTGlzdCIscmF3OnQucmF3LGl0ZW1zOnQuaXRlbXN9XTpuLmJsb2NrVG9rZW5zKGUpfSxyPXBhcnNlSW5kZW50ZWRCbG9ja3MoZSx7aXRlbVBhdHRlcm46L14oXHMqKShbLSsqXSlccytcWyhbIHhYXSlcXVxzKyguKikkLyxleHRyYWN0SXRlbURhdGE6ZT0+KHtpbmRlbnRMZXZlbDplWzFdLmxlbmd0aCxtYWluQ29udGVudDplWzRdLGNoZWNrZWQ6IngiPT09ZVszXS50b0xvd2VyQ2FzZSgpfSksY3JlYXRlVG9rZW46KGUsdCk9Pih7dHlwZToidGFza0l0ZW0iLHJhdzoiIixtYWluQ29udGVudDplLm1haW5Db250ZW50LGluZGVudExldmVsOmUuaW5kZW50TGV2ZWwsY2hlY2tlZDplLmNoZWNrZWQsdGV4dDplLm1haW5Db250ZW50LHRva2VuczpuLmlubGluZVRva2VucyhlLm1haW5Db250ZW50KSxuZXN0ZWRUb2tlbnM6dH0pLGN1c3RvbU5lc3RlZFBhcnNlcjpwYXJzZVRhc2tMaXN0Q29udGVudH0sbik7aWYocilyZXR1cm57dHlwZToidGFza0xpc3QiLHJhdzpyLnJhdyxpdGVtczpyLml0ZW1zfX19LG1hcmtkb3duT3B0aW9uczp7aW5kZW50c0NvbnRlbnQ6ITB9LGFkZENvbW1hbmRzKCl7cmV0dXJue3RvZ2dsZVRhc2tMaXN0OigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtOSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZVRhc2tMaXN0KCl9fX0pO2p0LmNyZWF0ZSh7bmFtZToibGlzdEtpdCIsYWRkRXh0ZW5zaW9ucygpe2NvbnN0IGU9W107cmV0dXJuITEhPT10aGlzLm9wdGlvbnMuYnVsbGV0TGlzdCYmZS5wdXNoKFVpLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYnVsbGV0TGlzdCkpLCExIT09dGhpcy5vcHRpb25zLmxpc3RJdGVtJiZlLnB1c2goV2kuY29uZmlndXJlKHRoaXMub3B0aW9ucy5saXN0SXRlbSkpLCExIT09dGhpcy5vcHRpb25zLmxpc3RLZXltYXAmJmUucHVzaChLaS5jb25maWd1cmUodGhpcy5vcHRpb25zLmxpc3RLZXltYXApKSwhMSE9PXRoaXMub3B0aW9ucy5vcmRlcmVkTGlzdCYmZS5wdXNoKFppLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMub3JkZXJlZExpc3QpKSwhMSE9PXRoaXMub3B0aW9ucy50YXNrSXRlbSYmZS5wdXNoKGVzLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMudGFza0l0ZW0pKSwhMSE9PXRoaXMub3B0aW9ucy50YXNrTGlzdCYmZS5wdXNoKG5zLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMudGFza0xpc3QpKSxlfX0pO3ZhciBycz0iJm5ic3A7Iixpcz1vbi5jcmVhdGUoe25hbWU6InBhcmFncmFwaCIscHJpb3JpdHk6MWUzLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxncm91cDoiYmxvY2siLGNvbnRlbnQ6ImlubGluZSoiLHBhcnNlSFRNTDooKT0+W3t0YWc6InAifV0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6ZX0pe3JldHVyblsicCIsbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKSwwXX0scGFyc2VNYXJrZG93bjooZSx0KT0+e2NvbnN0IG49ZS50b2tlbnN8fFtdO2lmKDE9PT1uLmxlbmd0aCYmImltYWdlIj09PW5bMF0udHlwZSlyZXR1cm4gdC5wYXJzZUNoaWxkcmVuKFtuWzBdXSk7Y29uc3Qgcj10LnBhcnNlSW5saW5lKG4pO3JldHVybiEoMT09PW4ubGVuZ3RoJiYidGV4dCI9PT1uWzBdLnR5cGUmJihuWzBdLnJhdz09PXJzfHxuWzBdLnRleHQ9PT1yc3x8IsKgIj09PW5bMF0ucmF3fHwiwqAiPT09blswXS50ZXh0KSl8fDEhPT1yLmxlbmd0aHx8InRleHQiIT09clswXS50eXBlfHxyWzBdLnRleHQhPT1ycyYmIsKgIiE9PXJbMF0udGV4dD90LmNyZWF0ZU5vZGUoInBhcmFncmFwaCIsdm9pZCAwLHIpOnQuY3JlYXRlTm9kZSgicGFyYWdyYXBoIix2b2lkIDAsW10pfSxyZW5kZXJNYXJrZG93bjooZSx0LG4pPT57dmFyIHIsbztpZighZSlyZXR1cm4iIjtjb25zdCBpPUFycmF5LmlzQXJyYXkoZS5jb250ZW50KT9lLmNvbnRlbnQ6W107aWYoMD09PWkubGVuZ3RoKXtjb25zdCBlPUFycmF5LmlzQXJyYXkobnVsbD09KHI9bnVsbD09bj92b2lkIDA6bi5wcmV2aW91c05vZGUpP3ZvaWQgMDpyLmNvbnRlbnQpP24ucHJldmlvdXNOb2RlLmNvbnRlbnQ6W107cmV0dXJuInBhcmFncmFwaCI9PT0obnVsbD09KG89bnVsbD09bj92b2lkIDA6bi5wcmV2aW91c05vZGUpP3ZvaWQgMDpvLnR5cGUpJiYwPT09ZS5sZW5ndGg/cnM6IiJ9cmV0dXJuIHQucmVuZGVyQ2hpbGRyZW4oaSl9LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldFBhcmFncmFwaDooKT0+KHtjb21tYW5kczplfSk9PmUuc2V0Tm9kZSh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1BbHQtMCI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNldFBhcmFncmFwaCgpfX19KSxzcz0vKD86Xnxccykofn4oPyFccyt+fikoKD86W15+XSspKX5+KD8hXHMrfn4pKSQvLGxzPS8oPzpefFxzKSh+fig/IVxzK35+KSgoPzpbXn5dKykpfn4oPyFccyt+fikpL2csYXM9RnQuY3JlYXRlKHtuYW1lOiJzdHJpa2UiLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxwYXJzZUhUTUw6KCk9Plt7dGFnOiJzIn0se3RhZzoiZGVsIn0se3RhZzoic3RyaWtlIn0se3N0eWxlOiJ0ZXh0LWRlY29yYXRpb24iLGNvbnN1bWluZzohMSxnZXRBdHRyczplPT4hIWUuaW5jbHVkZXMoImxpbmUtdGhyb3VnaCIpJiZ7fX1dLHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bInMiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJkZWwiLHBhcnNlTWFya2Rvd246KGUsdCk9PnQuYXBwbHlNYXJrKCJzdHJpa2UiLHQucGFyc2VJbmxpbmUoZS50b2tlbnN8fFtdKSkscmVuZGVyTWFya2Rvd246KGUsdCk9PmB+fiR7dC5yZW5kZXJDaGlsZHJlbihlKX1+fmAsYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0U3RyaWtlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlU3RyaWtlOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRTdHJpa2U6KCk9Pih7Y29tbWFuZHM6ZX0pPT5lLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC1zIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlU3RyaWtlKCl9fSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuW21hcmtJbnB1dFJ1bGUoe2ZpbmQ6c3MsdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bbWFya1Bhc3RlUnVsZSh7ZmluZDpscyx0eXBlOnRoaXMudHlwZX0pXX19KSxjcz1vbi5jcmVhdGUoe25hbWU6InRleHQiLGdyb3VwOiJpbmxpbmUiLHBhcnNlTWFya2Rvd246ZT0+KHt0eXBlOiJ0ZXh0Iix0ZXh0OmUudGV4dHx8IiJ9KSxyZW5kZXJNYXJrZG93bjplPT5lLnRleHR8fCIifSksZHM9RnQuY3JlYXRlKHtuYW1lOiJ1bmRlcmxpbmUiLGFkZE9wdGlvbnM6KCk9Pih7SFRNTEF0dHJpYnV0ZXM6e319KSxwYXJzZUhUTUw6KCk9Plt7dGFnOiJ1In0se3N0eWxlOiJ0ZXh0LWRlY29yYXRpb24iLGNvbnN1bWluZzohMSxnZXRBdHRyczplPT4hIWUuaW5jbHVkZXMoInVuZGVybGluZSIpJiZ7fX1dLHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bInUiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LHBhcnNlTWFya2Rvd24oZSx0KXtyZXR1cm4gdC5hcHBseU1hcmsodGhpcy5uYW1lfHwidW5kZXJsaW5lIix0LnBhcnNlSW5saW5lKGUudG9rZW5zfHxbXSkpfSxyZW5kZXJNYXJrZG93bjooZSx0KT0+YCsrJHt0LnJlbmRlckNoaWxkcmVuKGUpfSsrYCxtYXJrZG93blRva2VuaXplcjp7bmFtZToidW5kZXJsaW5lIixsZXZlbDoiaW5saW5lIixzdGFydDplPT5lLmluZGV4T2YoIisrIiksdG9rZW5pemUoZSx0LG4pe2NvbnN0IHI9L14oXCtcKykoW1xzXFNdKz8pKFwrXCspLy5leGVjKGUpO2lmKCFyKXJldHVybjtjb25zdCBvPXJbMl0udHJpbSgpO3JldHVybnt0eXBlOiJ1bmRlcmxpbmUiLHJhdzpyWzBdLHRleHQ6byx0b2tlbnM6bi5pbmxpbmVUb2tlbnMobyl9fX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0VW5kZXJsaW5lOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlVW5kZXJsaW5lOigpPT4oe2NvbW1hbmRzOmV9KT0+ZS50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRVbmRlcmxpbmU6KCk9Pih7Y29tbWFuZHM6ZX0pPT5lLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC11IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlVW5kZXJsaW5lKCksIk1vZC1VIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlVW5kZXJsaW5lKCl9fX0pLHBzPWp0LmNyZWF0ZSh7bmFtZToic3RhcnRlcktpdCIsYWRkRXh0ZW5zaW9ucygpe3ZhciBlLHQsbixyO2NvbnN0IG89W107cmV0dXJuITEhPT10aGlzLm9wdGlvbnMuYm9sZCYmby5wdXNoKFFyLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYm9sZCkpLCExIT09dGhpcy5vcHRpb25zLmJsb2NrcXVvdGUmJm8ucHVzaChXci5jb25maWd1cmUodGhpcy5vcHRpb25zLmJsb2NrcXVvdGUpKSwhMSE9PXRoaXMub3B0aW9ucy5idWxsZXRMaXN0JiZvLnB1c2goVWkuY29uZmlndXJlKHRoaXMub3B0aW9ucy5idWxsZXRMaXN0KSksITEhPT10aGlzLm9wdGlvbnMuY29kZSYmby5wdXNoKGFuLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZSkpLCExIT09dGhpcy5vcHRpb25zLmNvZGVCbG9jayYmby5wdXNoKGVvLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZUJsb2NrKSksITEhPT10aGlzLm9wdGlvbnMuZG9jdW1lbnQmJm8ucHVzaCh0by5jb25maWd1cmUodGhpcy5vcHRpb25zLmRvY3VtZW50KSksITEhPT10aGlzLm9wdGlvbnMuZHJvcGN1cnNvciYmby5wdXNoKEVuLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZHJvcGN1cnNvcikpLCExIT09dGhpcy5vcHRpb25zLmdhcGN1cnNvciYmby5wdXNoKE5uLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZ2FwY3Vyc29yKSksITEhPT10aGlzLm9wdGlvbnMuaGFyZEJyZWFrJiZvLnB1c2gobm8uY29uZmlndXJlKHRoaXMub3B0aW9ucy5oYXJkQnJlYWspKSwhMSE9PXRoaXMub3B0aW9ucy5oZWFkaW5nJiZvLnB1c2gocm8uY29uZmlndXJlKHRoaXMub3B0aW9ucy5oZWFkaW5nKSksITEhPT10aGlzLm9wdGlvbnMudW5kb1JlZG8mJm8ucHVzaChJbi5jb25maWd1cmUodGhpcy5vcHRpb25zLnVuZG9SZWRvKSksITEhPT10aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFJ1bGUmJm8ucHVzaChkbi5jb25maWd1cmUodGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlKSksITEhPT10aGlzLm9wdGlvbnMuaXRhbGljJiZvLnB1c2goYW8uY29uZmlndXJlKHRoaXMub3B0aW9ucy5pdGFsaWMpKSwhMSE9PXRoaXMub3B0aW9ucy5saXN0SXRlbSYmby5wdXNoKFdpLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKSwhMSE9PXRoaXMub3B0aW9ucy5saXN0S2V5bWFwJiZvLnB1c2goS2kuY29uZmlndXJlKG51bGw9PShlPXRoaXMub3B0aW9ucyk/dm9pZCAwOmUubGlzdEtleW1hcCkpLCExIT09dGhpcy5vcHRpb25zLmxpbmsmJm8ucHVzaChWaS5jb25maWd1cmUobnVsbD09KHQ9dGhpcy5vcHRpb25zKT92b2lkIDA6dC5saW5rKSksITEhPT10aGlzLm9wdGlvbnMub3JkZXJlZExpc3QmJm8ucHVzaChaaS5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSksITEhPT10aGlzLm9wdGlvbnMucGFyYWdyYXBoJiZvLnB1c2goaXMuY29uZmlndXJlKHRoaXMub3B0aW9ucy5wYXJhZ3JhcGgpKSwhMSE9PXRoaXMub3B0aW9ucy5zdHJpa2UmJm8ucHVzaChhcy5jb25maWd1cmUodGhpcy5vcHRpb25zLnN0cmlrZSkpLCExIT09dGhpcy5vcHRpb25zLnRleHQmJm8ucHVzaChjcy5jb25maWd1cmUodGhpcy5vcHRpb25zLnRleHQpKSwhMSE9PXRoaXMub3B0aW9ucy51bmRlcmxpbmUmJm8ucHVzaChkcy5jb25maWd1cmUobnVsbD09KG49dGhpcy5vcHRpb25zKT92b2lkIDA6bi51bmRlcmxpbmUpKSwhMSE9PXRoaXMub3B0aW9ucy50cmFpbGluZ05vZGUmJm8ucHVzaChQbi5jb25maWd1cmUobnVsbD09KHI9dGhpcy5vcHRpb25zKT92b2lkIDA6ci50cmFpbGluZ05vZGUpKSxvfX0pO2Z1bmN0aW9uIHVzZURlYm91bmNlZFJlZihlKXtyZXR1cm4gVygodCxuKT0+KHtnZXQ6KCk9Pih0KCksZSksc2V0KHQpe2U9dCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuKCl9KX0pfX0pKX12YXIgaHM9Y2xhc3MgZXh0ZW5kcyBubntjb25zdHJ1Y3RvcihlPXt9KXtyZXR1cm4gc3VwZXIoZSksdGhpcy5jb250ZW50Q29tcG9uZW50PW51bGwsdGhpcy5hcHBDb250ZXh0PW51bGwsdGhpcy5yZWFjdGl2ZVN0YXRlPXVzZURlYm91bmNlZFJlZih0aGlzLnZpZXcuc3RhdGUpLHRoaXMucmVhY3RpdmVFeHRlbnNpb25TdG9yYWdlPXVzZURlYm91bmNlZFJlZih0aGlzLmV4dGVuc2lvblN0b3JhZ2UpLHRoaXMub24oImJlZm9yZVRyYW5zYWN0aW9uIiwoe25leHRTdGF0ZTplfSk9Pnt0aGlzLnJlYWN0aXZlU3RhdGUudmFsdWU9ZSx0aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZS52YWx1ZT10aGlzLmV4dGVuc2lvblN0b3JhZ2V9KSxxKHRoaXMpfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGU/dGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlOnRoaXMudmlldy5zdGF0ZX1nZXQgc3RvcmFnZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZT90aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZS52YWx1ZTpzdXBlci5zdG9yYWdlfXJlZ2lzdGVyUGx1Z2luKGUsdCl7Y29uc3Qgbj1zdXBlci5yZWdpc3RlclBsdWdpbihlLHQpO3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGUmJih0aGlzLnJlYWN0aXZlU3RhdGUudmFsdWU9biksbn11bnJlZ2lzdGVyUGx1Z2luKGUpe2NvbnN0IHQ9c3VwZXIudW5yZWdpc3RlclBsdWdpbihlKTtyZXR1cm4gdGhpcy5yZWFjdGl2ZVN0YXRlJiZ0JiYodGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlPXQpLHR9fSx1cz1MKHtuYW1lOiJFZGl0b3JDb250ZW50Iixwcm9wczp7ZWRpdG9yOntkZWZhdWx0Om51bGwsdHlwZTpPYmplY3R9fSxzZXR1cChlKXtjb25zdCB0PV8oKSxuPWooKTtyZXR1cm4gQigoKT0+e2NvbnN0IHI9ZS5lZGl0b3I7ciYmci5vcHRpb25zLmVsZW1lbnQmJnQudmFsdWUmJkYoKCk9Pnt2YXIgZTtpZighdC52YWx1ZXx8IShudWxsPT0oZT1yLnZpZXcuZG9tKT92b2lkIDA6ZS5wYXJlbnROb2RlKSlyZXR1cm47Y29uc3Qgbz1IKHQudmFsdWUpO3QudmFsdWUuYXBwZW5kKC4uLnIudmlldy5kb20ucGFyZW50Tm9kZS5jaGlsZE5vZGVzKSxyLmNvbnRlbnRDb21wb25lbnQ9bi5jdHguXyxuJiYoci5hcHBDb250ZXh0PXsuLi5uLmFwcENvbnRleHQscHJvdmlkZXM6bi5wcm92aWRlc30pLHIuc2V0T3B0aW9ucyh7ZWxlbWVudDpvfSksci5jcmVhdGVOb2RlVmlld3MoKX0pfSksJCgoKT0+e2NvbnN0IHQ9ZS5lZGl0b3I7dCYmKHQuY29udGVudENvbXBvbmVudD1udWxsLHQuYXBwQ29udGV4dD1udWxsKX0pLHtyb290RWw6dH19LHJlbmRlcigpe3JldHVybiB6KCJkaXYiLHtyZWY6ZT0+e3RoaXMucm9vdEVsPWV9fSl9fSk7Y29uc3QgZnM9WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSxtcz1bInN0YXJ0IiwiZW5kIl0sZ3M9ZnMucmVkdWNlKChlLHQpPT5lLmNvbmNhdCh0LHQrIi0iK21zWzBdLHQrIi0iK21zWzFdKSxbXSkseXM9TWF0aC5taW4sa3M9TWF0aC5tYXgsd3M9TWF0aC5yb3VuZCxjcmVhdGVDb29yZHM9ZT0+KHt4OmUseTplfSksYnM9e2xlZnQ6InJpZ2h0IixyaWdodDoibGVmdCIsYm90dG9tOiJ0b3AiLHRvcDoiYm90dG9tIn07ZnVuY3Rpb24gY2xhbXAoZSx0LG4pe3JldHVybiBrcyhlLHlzKHQsbikpfWZ1bmN0aW9uIGV2YWx1YXRlKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0KTplfWZ1bmN0aW9uIGdldFNpZGUoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVswXX1mdW5jdGlvbiBnZXRBbGlnbm1lbnQoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVsxXX1mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoZSl7cmV0dXJuIngiPT09ZT8ieSI6IngifWZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoZSl7cmV0dXJuInkiPT09ZT8iaGVpZ2h0Ijoid2lkdGgifWZ1bmN0aW9uIGdldFNpZGVBeGlzKGUpe2NvbnN0IHQ9ZVswXTtyZXR1cm4idCI9PT10fHwiYiI9PT10PyJ5IjoieCJ9ZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhlKXtyZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKGUpKX1mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhlLHQsbil7dm9pZCAwPT09biYmKG49ITEpO2NvbnN0IHI9Z2V0QWxpZ25tZW50KGUpLG89Z2V0QWxpZ25tZW50QXhpcyhlKSxpPWdldEF4aXNMZW5ndGgobyk7bGV0IHM9IngiPT09bz9yPT09KG4/ImVuZCI6InN0YXJ0Iik/InJpZ2h0IjoibGVmdCI6InN0YXJ0Ij09PXI/ImJvdHRvbSI6InRvcCI7cmV0dXJuIHQucmVmZXJlbmNlW2ldPnQuZmxvYXRpbmdbaV0mJihzPWdldE9wcG9zaXRlUGxhY2VtZW50KHMpKSxbcyxnZXRPcHBvc2l0ZVBsYWNlbWVudChzKV19ZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQoZSl7cmV0dXJuIGUuaW5jbHVkZXMoInN0YXJ0Iik/ZS5yZXBsYWNlKCJzdGFydCIsImVuZCIpOmUucmVwbGFjZSgiZW5kIiwic3RhcnQiKX1jb25zdCB2cz1bImxlZnQiLCJyaWdodCJdLHhzPVsicmlnaHQiLCJsZWZ0Il0sU3M9WyJ0b3AiLCJib3R0b20iXSxUcz1bImJvdHRvbSIsInRvcCJdO2Z1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoZSx0LG4scil7Y29uc3Qgbz1nZXRBbGlnbm1lbnQoZSk7bGV0IGk9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaChlKXtjYXNlInRvcCI6Y2FzZSJib3R0b20iOnJldHVybiBuP3Q/eHM6dnM6dD92czp4cztjYXNlImxlZnQiOmNhc2UicmlnaHQiOnJldHVybiB0P1NzOlRzO2RlZmF1bHQ6cmV0dXJuW119fShnZXRTaWRlKGUpLCJzdGFydCI9PT1uLHIpO3JldHVybiBvJiYoaT1pLm1hcChlPT5lKyItIitvKSx0JiYoaT1pLmNvbmNhdChpLm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpKSksaX1mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChlKXtjb25zdCB0PWdldFNpZGUoZSk7cmV0dXJuIGJzW3RdK2Uuc2xpY2UodC5sZW5ndGgpfWZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QoZSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBlP2Z1bmN0aW9uKGUpe3JldHVybnt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MCwuLi5lfX0oZSk6e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfX1mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KGUpe2NvbnN0e3g6dCx5Om4sd2lkdGg6cixoZWlnaHQ6b309ZTtyZXR1cm57d2lkdGg6cixoZWlnaHQ6byx0b3A6bixsZWZ0OnQscmlnaHQ6dCtyLGJvdHRvbTpuK28seDp0LHk6bn19ZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoZSx0LG4pe2xldHtyZWZlcmVuY2U6cixmbG9hdGluZzpvfT1lO2NvbnN0IGk9Z2V0U2lkZUF4aXModCkscz1nZXRBbGlnbm1lbnRBeGlzKHQpLGw9Z2V0QXhpc0xlbmd0aChzKSxhPWdldFNpZGUodCksYz0ieSI9PT1pLGQ9ci54K3Iud2lkdGgvMi1vLndpZHRoLzIscD1yLnkrci5oZWlnaHQvMi1vLmhlaWdodC8yLGY9cltsXS8yLW9bbF0vMjtsZXQgbTtzd2l0Y2goYSl7Y2FzZSJ0b3AiOm09e3g6ZCx5OnIueS1vLmhlaWdodH07YnJlYWs7Y2FzZSJib3R0b20iOm09e3g6ZCx5OnIueStyLmhlaWdodH07YnJlYWs7Y2FzZSJyaWdodCI6bT17eDpyLngrci53aWR0aCx5OnB9O2JyZWFrO2Nhc2UibGVmdCI6bT17eDpyLngtby53aWR0aCx5OnB9O2JyZWFrO2RlZmF1bHQ6bT17eDpyLngseTpyLnl9fXN3aXRjaChnZXRBbGlnbm1lbnQodCkpe2Nhc2Uic3RhcnQiOm1bc10tPWYqKG4mJmM/LTE6MSk7YnJlYWs7Y2FzZSJlbmQiOm1bc10rPWYqKG4mJmM/LTE6MSl9cmV0dXJuIG19YXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD17fSk7Y29uc3R7eDpyLHk6byxwbGF0Zm9ybTppLHJlY3RzOnMsZWxlbWVudHM6bCxzdHJhdGVneTphfT1lLHtib3VuZGFyeTpjPSJjbGlwcGluZ0FuY2VzdG9ycyIscm9vdEJvdW5kYXJ5OmQ9InZpZXdwb3J0IixlbGVtZW50Q29udGV4dDpwPSJmbG9hdGluZyIsYWx0Qm91bmRhcnk6Zj0hMSxwYWRkaW5nOm09MH09ZXZhbHVhdGUodCxlKSx5PWdldFBhZGRpbmdPYmplY3QobSksdz1sW2Y/ImZsb2F0aW5nIj09PXA/InJlZmVyZW5jZSI6ImZsb2F0aW5nIjpwXSxiPXJlY3RUb0NsaWVudFJlY3QoYXdhaXQgaS5nZXRDbGlwcGluZ1JlY3Qoe2VsZW1lbnQ6bnVsbD09KG49YXdhaXQobnVsbD09aS5pc0VsZW1lbnQ/dm9pZCAwOmkuaXNFbGVtZW50KHcpKSl8fG4/dzp3LmNvbnRleHRFbGVtZW50fHxhd2FpdChudWxsPT1pLmdldERvY3VtZW50RWxlbWVudD92b2lkIDA6aS5nZXREb2N1bWVudEVsZW1lbnQobC5mbG9hdGluZykpLGJvdW5kYXJ5OmMscm9vdEJvdW5kYXJ5OmQsc3RyYXRlZ3k6YX0pKSx2PSJmbG9hdGluZyI9PT1wP3t4OnIseTpvLHdpZHRoOnMuZmxvYXRpbmcud2lkdGgsaGVpZ2h0OnMuZmxvYXRpbmcuaGVpZ2h0fTpzLnJlZmVyZW5jZSx4PWF3YWl0KG51bGw9PWkuZ2V0T2Zmc2V0UGFyZW50P3ZvaWQgMDppLmdldE9mZnNldFBhcmVudChsLmZsb2F0aW5nKSksUz1hd2FpdChudWxsPT1pLmlzRWxlbWVudD92b2lkIDA6aS5pc0VsZW1lbnQoeCkpJiZhd2FpdChudWxsPT1pLmdldFNjYWxlP3ZvaWQgMDppLmdldFNjYWxlKHgpKXx8e3g6MSx5OjF9LEM9cmVjdFRvQ2xpZW50UmVjdChpLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IGkuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOmwscmVjdDp2LG9mZnNldFBhcmVudDp4LHN0cmF0ZWd5OmF9KTp2KTtyZXR1cm57dG9wOihiLnRvcC1DLnRvcCt5LnRvcCkvUy55LGJvdHRvbTooQy5ib3R0b20tYi5ib3R0b20reS5ib3R0b20pL1MueSxsZWZ0OihiLmxlZnQtQy5sZWZ0K3kubGVmdCkvUy54LHJpZ2h0OihDLnJpZ2h0LWIucmlnaHQreS5yaWdodCkvUy54fX1mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQoZSl7cmV0dXJuIGZzLnNvbWUodD0+ZVt0XT49MCl9ZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KGUpe2NvbnN0IHQ9eXMoLi4uZS5tYXAoZT0+ZS5sZWZ0KSksbj15cyguLi5lLm1hcChlPT5lLnRvcCkpO3JldHVybnt4OnQseTpuLHdpZHRoOmtzKC4uLmUubWFwKGU9PmUucmlnaHQpKS10LGhlaWdodDprcyguLi5lLm1hcChlPT5lLmJvdHRvbSkpLW59fWNvbnN0IENzPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2Z1bmN0aW9uIGdldE5vZGVOYW1lKGUpe3JldHVybiBpc05vZGUoKT8oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6IiNkb2N1bWVudCJ9ZnVuY3Rpb24gZ2V0V2luZG93KGUpe3ZhciB0O3JldHVybihudWxsPT1lfHxudWxsPT0odD1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8d2luZG93fWZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlKXt2YXIgdDtyZXR1cm4gbnVsbD09KHQ9KGlzTm9kZSgpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8d2luZG93LmRvY3VtZW50KT92b2lkIDA6dC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gaXNOb2RlKGUpe3JldHVybiExfWZ1bmN0aW9uIGlzRWxlbWVudChlKXtyZXR1cm4hMX1mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlKXtjb25zdHtvdmVyZmxvdzp0LG92ZXJmbG93WDpuLG92ZXJmbG93WTpyLGRpc3BsYXk6b309Z2V0Q29tcHV0ZWRTdHlsZSQxKGUpO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KHQrcituKSYmImlubGluZSIhPT1vJiYiY29udGVudHMiIT09b31mdW5jdGlvbiBpc1RvcExheWVyKGUpe3RyeXtpZihlLm1hdGNoZXMoIjpwb3BvdmVyLW9wZW4iKSlyZXR1cm4hMH1jYXRjaChlKXt9dHJ5e3JldHVybiBlLm1hdGNoZXMoIjptb2RhbCIpfWNhdGNoKGUpe3JldHVybiExfX1jb25zdCBNcz0vdHJhbnNmb3JtfHRyYW5zbGF0ZXxzY2FsZXxyb3RhdGV8cGVyc3BlY3RpdmV8ZmlsdGVyLyxBcz0vcGFpbnR8bGF5b3V0fHN0cmljdHxjb250ZW50Lyxpc05vdE5vbmU9ZT0+ISFlJiYibm9uZSIhPT1lO2xldCBPcztmdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlKXtjb25zdCB0PWU7cmV0dXJuIGlzTm90Tm9uZSh0LnRyYW5zZm9ybSl8fGlzTm90Tm9uZSh0LnRyYW5zbGF0ZSl8fGlzTm90Tm9uZSh0LnNjYWxlKXx8aXNOb3ROb25lKHQucm90YXRlKXx8aXNOb3ROb25lKHQucGVyc3BlY3RpdmUpfHwhaXNXZWJLaXQoKSYmKGlzTm90Tm9uZSh0LmJhY2tkcm9wRmlsdGVyKXx8aXNOb3ROb25lKHQuZmlsdGVyKSl8fE1zLnRlc3QodC53aWxsQ2hhbmdlfHwiIil8fEFzLnRlc3QodC5jb250YWlufHwiIil9ZnVuY3Rpb24gaXNXZWJLaXQoKXtyZXR1cm4gbnVsbD09T3MmJihPcz0idW5kZWZpbmVkIiE9dHlwZW9mIENTUyYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoIi13ZWJraXQtYmFja2Ryb3AtZmlsdGVyIiwibm9uZSIpKSxPc31mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoZSl7cmV0dXJuL14oaHRtbHxib2R5fCNkb2N1bWVudCkkLy50ZXN0KGdldE5vZGVOYW1lKGUpKX1mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZSl7cmV0dXJuIGdldFdpbmRvdyhlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZSl7cmV0dXJue3Njcm9sbExlZnQ6ZS5zY3JvbGxYLHNjcm9sbFRvcDplLnNjcm9sbFl9fWZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZSl7aWYoImh0bWwiPT09Z2V0Tm9kZU5hbWUoZSkpcmV0dXJuIGU7Y29uc3QgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxnZXREb2N1bWVudEVsZW1lbnQoZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IoZSl7Y29uc3QgdD1nZXRQYXJlbnROb2RlKGUpO3JldHVybiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk/ZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudC5ib2R5OmUuYm9keTpnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcih0KX1mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlLHQsbil7dmFyIHI7dm9pZCAwPT09dCYmKHQ9W10pO2NvbnN0IG89Z2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IoZSksaT1vPT09KG51bGw9PShyPWUub3duZXJEb2N1bWVudCk/dm9pZCAwOnIuYm9keSkscz1nZXRXaW5kb3cobyk7cmV0dXJuIGk/KGdldEZyYW1lRWxlbWVudChzKSx0LmNvbmNhdChzLHMudmlzdWFsVmlld3BvcnR8fFtdLGlzT3ZlcmZsb3dFbGVtZW50KG8pP286W10sW10pKTp0LmNvbmNhdChvLGdldE92ZXJmbG93QW5jZXN0b3JzKG8sW10pKX1mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQoZSl7cmV0dXJuIGUucGFyZW50JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wYXJlbnQpP2UuZnJhbWVFbGVtZW50Om51bGx9ZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlKXtjb25zdCB0PWdldENvbXB1dGVkU3R5bGUkMShlKTtsZXQgbj1wYXJzZUZsb2F0KHQud2lkdGgpfHwwLHI9cGFyc2VGbG9hdCh0LmhlaWdodCl8fDA7Y29uc3Qgbz1uLGk9cixzPXdzKG4pIT09b3x8d3MocikhPT1pO3JldHVybiBzJiYobj1vLHI9aSkse3dpZHRoOm4saGVpZ2h0OnIsJDpzfX1mdW5jdGlvbiB1bndyYXBFbGVtZW50KGUpe3JldHVybiBlLmNvbnRleHRFbGVtZW50fWZ1bmN0aW9uIGdldFNjYWxlKGUpe3Vud3JhcEVsZW1lbnQoZSk7cmV0dXJuIGNyZWF0ZUNvb3JkcygxKX1jb25zdCBFcz1jcmVhdGVDb29yZHMoMCk7ZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlKXtjb25zdCB0PWdldFdpbmRvdyhlKTtyZXR1cm4gaXNXZWJLaXQoKSYmdC52aXN1YWxWaWV3cG9ydD97eDp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQseTp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcH06RXN9ZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PSExKSx2b2lkIDA9PT1uJiYobj0hMSk7Y29uc3Qgbz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dW53cmFwRWxlbWVudChlKTtsZXQgcz1jcmVhdGVDb29yZHMoMSk7dCYmKHJ8fChzPWdldFNjYWxlKGUpKSk7Y29uc3QgbD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSwhKCFufHx0JiZuIT09Z2V0V2luZG93KGUpKSYmdH0oaSxuLHIpP2dldFZpc3VhbE9mZnNldHMoaSk6Y3JlYXRlQ29vcmRzKDApO2xldCBhPShvLmxlZnQrbC54KS9zLngsYz0oby50b3ArbC55KS9zLnksZD1vLndpZHRoL3MueCxwPW8uaGVpZ2h0L3MueTtpZihpKXtjb25zdCBlPXI7bGV0IHQ9Z2V0V2luZG93KGkpLG49Z2V0RnJhbWVFbGVtZW50KHQpO2Zvcig7biYmciYmZSE9PXQ7KXtjb25zdCBlPWdldFNjYWxlKG4pLHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPWdldENvbXB1dGVkU3R5bGUkMShuKSxpPXIubGVmdCsobi5jbGllbnRMZWZ0K3BhcnNlRmxvYXQoby5wYWRkaW5nTGVmdCkpKmUueCxzPXIudG9wKyhuLmNsaWVudFRvcCtwYXJzZUZsb2F0KG8ucGFkZGluZ1RvcCkpKmUueTthKj1lLngsYyo9ZS55LGQqPWUueCxwKj1lLnksYSs9aSxjKz1zLHQ9Z2V0V2luZG93KG4pLG49Z2V0RnJhbWVFbGVtZW50KHQpfX1yZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7d2lkdGg6ZCxoZWlnaHQ6cCx4OmEseTpjfSl9ZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlLHQpe2NvbnN0IG49Z2V0Tm9kZVNjcm9sbChlKS5zY3JvbGxMZWZ0O3JldHVybiB0P3QubGVmdCtuOmdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZSkpLmxlZnQrbn1mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGUsdCl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt4Om4ubGVmdCt0LnNjcm9sbExlZnQtZ2V0V2luZG93U2Nyb2xsQmFyWChlLG4pLHk6bi50b3ArdC5zY3JvbGxUb3B9fWZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlLHQsbil7bGV0IHI7aWYoInZpZXdwb3J0Ij09PXQpcj1mdW5jdGlvbihlLHQpe2NvbnN0IG49Z2V0V2luZG93KGUpLHI9Z2V0RG9jdW1lbnRFbGVtZW50KGUpLG89bi52aXN1YWxWaWV3cG9ydDtsZXQgaT1yLmNsaWVudFdpZHRoLHM9ci5jbGllbnRIZWlnaHQsbD0wLGE9MDtpZihvKXtpPW8ud2lkdGgscz1vLmhlaWdodDtjb25zdCBlPWlzV2ViS2l0KCk7KCFlfHxlJiYiZml4ZWQiPT09dCkmJihsPW8ub2Zmc2V0TGVmdCxhPW8ub2Zmc2V0VG9wKX1jb25zdCBjPWdldFdpbmRvd1Njcm9sbEJhclgocik7aWYoYzw9MCl7Y29uc3QgZT1yLm93bmVyRG9jdW1lbnQsdD1lLmJvZHksbj1nZXRDb21wdXRlZFN0eWxlKHQpLG89IkNTUzFDb21wYXQiPT09ZS5jb21wYXRNb2RlJiZwYXJzZUZsb2F0KG4ubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChuLm1hcmdpblJpZ2h0KXx8MCxzPU1hdGguYWJzKHIuY2xpZW50V2lkdGgtdC5jbGllbnRXaWR0aC1vKTtzPD0yNSYmKGktPXMpfWVsc2UgYzw9MjUmJihpKz1jKTtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6cyx4OmwseTphfX0oZSxuKTtlbHNlIGlmKCJkb2N1bWVudCI9PT10KXI9ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXREb2N1bWVudEVsZW1lbnQoZSksbj1nZXROb2RlU2Nyb2xsKGUpLHI9ZS5vd25lckRvY3VtZW50LmJvZHksbz1rcyh0LnNjcm9sbFdpZHRoLHQuY2xpZW50V2lkdGgsci5zY3JvbGxXaWR0aCxyLmNsaWVudFdpZHRoKSxpPWtzKHQuc2Nyb2xsSGVpZ2h0LHQuY2xpZW50SGVpZ2h0LHIuc2Nyb2xsSGVpZ2h0LHIuY2xpZW50SGVpZ2h0KTtsZXQgcz0tbi5zY3JvbGxMZWZ0K2dldFdpbmRvd1Njcm9sbEJhclgoZSk7Y29uc3QgbD0tbi5zY3JvbGxUb3A7cmV0dXJuInJ0bCI9PT1nZXRDb21wdXRlZFN0eWxlJDEocikuZGlyZWN0aW9uJiYocys9a3ModC5jbGllbnRXaWR0aCxyLmNsaWVudFdpZHRoKS1vKSx7d2lkdGg6byxoZWlnaHQ6aSx4OnMseTpsfX0oZ2V0RG9jdW1lbnRFbGVtZW50KGUpKTtlbHNle3tjb25zdCBuPWdldFZpc3VhbE9mZnNldHMoZSk7cj17eDp0Lngtbi54LHk6dC55LW4ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fXJldHVybiByZWN0VG9DbGllbnRSZWN0KHIpfWZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlLHQpe2dldFBhcmVudE5vZGUoZSk7cmV0dXJuITF9ZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZSx0LG4pe2NvbnN0IHI9Z2V0RG9jdW1lbnRFbGVtZW50KHQpLG89ImZpeGVkIj09PW4saT1nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSwhMCxvLHQpO2xldCBzPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9O2NvbnN0IGw9Y3JlYXRlQ29vcmRzKDApO2Z1bmN0aW9uIHNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKXtsLng9Z2V0V2luZG93U2Nyb2xsQmFyWChyKX1vfHwoKCJib2R5IiE9PWdldE5vZGVOYW1lKHQpfHxpc092ZXJmbG93RWxlbWVudChyKSkmJihzPWdldE5vZGVTY3JvbGwodCkpLHImJnNldExlZnRSVExTY3JvbGxiYXJPZmZzZXQoKSksbyYmciYmc2V0TGVmdFJUTFNjcm9sbGJhck9mZnNldCgpO2NvbnN0IGE9ciYmIW8/Z2V0SFRNTE9mZnNldChyLHMpOmNyZWF0ZUNvb3JkcygwKTtyZXR1cm57eDppLmxlZnQrcy5zY3JvbGxMZWZ0LWwueC1hLngseTppLnRvcCtzLnNjcm9sbFRvcC1sLnktYS55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX1mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZSl7cmV0dXJuInN0YXRpYyI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkucG9zaXRpb259ZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGUsdCl7Y29uc3Qgbj1nZXRXaW5kb3coZSk7aWYoaXNUb3BMYXllcihlKSlyZXR1cm4gbjt7bGV0IHQ9Z2V0UGFyZW50Tm9kZShlKTtmb3IoO3QmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUodCk7KXtpZihpc0VsZW1lbnQoKSYmIWlzU3RhdGljUG9zaXRpb25lZCh0KSlyZXR1cm4gdDt0PWdldFBhcmVudE5vZGUodCl9cmV0dXJuIG59fWNvbnN0IE5zPXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpmdW5jdGlvbihlKXtsZXR7ZWxlbWVudHM6dCxyZWN0Om4sb2Zmc2V0UGFyZW50OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBpPSJmaXhlZCI9PT1vLHM9Z2V0RG9jdW1lbnRFbGVtZW50KHIpLGw9ISF0JiZpc1RvcExheWVyKHQuZmxvYXRpbmcpO2lmKHI9PT1zfHxsJiZpKXJldHVybiBuO2xldCBhPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LGM9Y3JlYXRlQ29vcmRzKDEpO2NvbnN0IGQ9Y3JlYXRlQ29vcmRzKDApO2l8fCgiYm9keSIhPT1nZXROb2RlTmFtZShyKXx8aXNPdmVyZmxvd0VsZW1lbnQocykpJiYoYT1nZXROb2RlU2Nyb2xsKHIpKTtjb25zdCBwPXMmJiFpP2dldEhUTUxPZmZzZXQocyxhKTpjcmVhdGVDb29yZHMoMCk7cmV0dXJue3dpZHRoOm4ud2lkdGgqYy54LGhlaWdodDpuLmhlaWdodCpjLnkseDpuLngqYy54LWEuc2Nyb2xsTGVmdCpjLngrZC54K3AueCx5Om4ueSpjLnktYS5zY3JvbGxUb3AqYy55K2QueStwLnl9fSxnZXREb2N1bWVudEVsZW1lbnQ6Z2V0RG9jdW1lbnRFbGVtZW50LGdldENsaXBwaW5nUmVjdDpmdW5jdGlvbihlKXtsZXR7ZWxlbWVudDp0LGJvdW5kYXJ5Om4scm9vdEJvdW5kYXJ5OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBpPSJjbGlwcGluZ0FuY2VzdG9ycyI9PT1uP2lzVG9wTGF5ZXIodCk/W106ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXQuZ2V0KGUpO2lmKG4pcmV0dXJuIG47bGV0IHI9Z2V0T3ZlcmZsb3dBbmNlc3RvcnMoZSxbXSkuZmlsdGVyKGU9PiExKSxvPW51bGw7Y29uc3QgaT0iZml4ZWQiPT09Z2V0Q29tcHV0ZWRTdHlsZSQxKGUpLnBvc2l0aW9uO2xldCBzPWk/Z2V0UGFyZW50Tm9kZShlKTplO2Zvcig7aXNFbGVtZW50KCkmJiFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocyk7KXtjb25zdCB0PWdldENvbXB1dGVkU3R5bGUkMShzKSxuPWlzQ29udGFpbmluZ0Jsb2NrKHMpO258fCJmaXhlZCIhPT10LnBvc2l0aW9ufHwobz1udWxsKSwoaT8hbiYmIW86IW4mJiJzdGF0aWMiPT09dC5wb3NpdGlvbiYmbyYmKCJhYnNvbHV0ZSI9PT1vLnBvc2l0aW9ufHwiZml4ZWQiPT09by5wb3NpdGlvbil8fGlzT3ZlcmZsb3dFbGVtZW50KHMpJiYhbiYmaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGUpKT9yPXIuZmlsdGVyKGU9PmUhPT1zKTpvPXQscz1nZXRQYXJlbnROb2RlKHMpfXJldHVybiB0LnNldChlLHIpLHJ9KHQsdGhpcy5fYyk6W10uY29uY2F0KG4pLHM9Wy4uLmkscl0sbD1nZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IodCxzWzBdLG8pO2xldCBhPWwudG9wLGM9bC5yaWdodCxkPWwuYm90dG9tLHA9bC5sZWZ0O2ZvcihsZXQgZT0xO2U8cy5sZW5ndGg7ZSsrKXtjb25zdCBuPWdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3Rvcih0LHNbZV0sbyk7YT1rcyhuLnRvcCxhKSxjPXlzKG4ucmlnaHQsYyksZD15cyhuLmJvdHRvbSxkKSxwPWtzKG4ubGVmdCxwKX1yZXR1cm57d2lkdGg6Yy1wLGhlaWdodDpkLWEseDpwLHk6YX19LGdldE9mZnNldFBhcmVudDpnZXRPZmZzZXRQYXJlbnQsZ2V0RWxlbWVudFJlY3RzOmFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fGdldE9mZnNldFBhcmVudCxuPXRoaXMuZ2V0RGltZW5zaW9ucyxyPWF3YWl0IG4oZS5mbG9hdGluZyk7cmV0dXJue3JlZmVyZW5jZTpnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlLnJlZmVyZW5jZSxhd2FpdCB0KGUuZmxvYXRpbmcpLGUuc3RyYXRlZ3kpLGZsb2F0aW5nOnt4OjAseTowLHdpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0fX19LGdldENsaWVudFJlY3RzOmZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSl9LGdldERpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7Y29uc3R7d2lkdGg6dCxoZWlnaHQ6bn09Z2V0Q3NzRGltZW5zaW9ucyhlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19LGdldFNjYWxlOmdldFNjYWxlLGlzRWxlbWVudDppc0VsZW1lbnQsaXNSVEw6ZnVuY3Rpb24oZSl7cmV0dXJuInJ0bCI9PT1nZXRDb21wdXRlZFN0eWxlJDEoZSkuZGlyZWN0aW9ufX0sb2Zmc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHt4Om8seTppLHBsYWNlbWVudDpzLG1pZGRsZXdhcmVEYXRhOmx9PXQsYT1hd2FpdCBhc3luYyBmdW5jdGlvbihlLHQpe2NvbnN0e3BsYWNlbWVudDpuLHBsYXRmb3JtOnIsZWxlbWVudHM6b309ZSxpPWF3YWl0KG51bGw9PXIuaXNSVEw/dm9pZCAwOnIuaXNSVEwoby5mbG9hdGluZykpLHM9Z2V0U2lkZShuKSxsPWdldEFsaWdubWVudChuKSxhPSJ5Ij09PWdldFNpZGVBeGlzKG4pLGM9Q3MuaGFzKHMpPy0xOjEsZD1pJiZhPy0xOjEscD1ldmFsdWF0ZSh0LGUpO2xldHttYWluQXhpczpmLGNyb3NzQXhpczptLGFsaWdubWVudEF4aXM6eX09Im51bWJlciI9PXR5cGVvZiBwP3ttYWluQXhpczpwLGNyb3NzQXhpczowLGFsaWdubWVudEF4aXM6bnVsbH06e21haW5BeGlzOnAubWFpbkF4aXN8fDAsY3Jvc3NBeGlzOnAuY3Jvc3NBeGlzfHwwLGFsaWdubWVudEF4aXM6cC5hbGlnbm1lbnRBeGlzfTtyZXR1cm4gbCYmIm51bWJlciI9PXR5cGVvZiB5JiYobT0iZW5kIj09PWw/LTEqeTp5KSxhP3t4Om0qZCx5OmYqY306e3g6ZipjLHk6bSpkfX0odCxlKTtyZXR1cm4gcz09PShudWxsPT0obj1sLm9mZnNldCk/dm9pZCAwOm4ucGxhY2VtZW50KSYmbnVsbCE9KHI9bC5hcnJvdykmJnIuYWxpZ25tZW50T2Zmc2V0P3t9Ont4Om8rYS54LHk6aSthLnksZGF0YTp7Li4uYSxwbGFjZW1lbnQ6c319fX19LGF1dG9QbGFjZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToiYXV0b1BsYWNlbWVudCIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLHIsbztjb25zdHtyZWN0czppLG1pZGRsZXdhcmVEYXRhOnMscGxhY2VtZW50OmwscGxhdGZvcm06YSxlbGVtZW50czpjfT10LHtjcm9zc0F4aXM6ZD0hMSxhbGlnbm1lbnQ6cCxhbGxvd2VkUGxhY2VtZW50czpmPWdzLGF1dG9BbGlnbm1lbnQ6bT0hMCwuLi55fT1ldmFsdWF0ZShlLHQpLHc9dm9pZCAwIT09cHx8Zj09PWdzP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4oZT9bLi4ubi5maWx0ZXIodD0+Z2V0QWxpZ25tZW50KHQpPT09ZSksLi4ubi5maWx0ZXIodD0+Z2V0QWxpZ25tZW50KHQpIT09ZSldOm4uZmlsdGVyKGU9PmdldFNpZGUoZSk9PT1lKSkuZmlsdGVyKG49PiFlfHxnZXRBbGlnbm1lbnQobik9PT1lfHwhIXQmJmdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG4pIT09bil9KHB8fG51bGwsbSxmKTpmLGI9YXdhaXQgYS5kZXRlY3RPdmVyZmxvdyh0LHkpLHY9KG51bGw9PShuPXMuYXV0b1BsYWNlbWVudCk/dm9pZCAwOm4uaW5kZXgpfHwwLHg9d1t2XTtpZihudWxsPT14KXJldHVybnt9O2NvbnN0IFM9Z2V0QWxpZ25tZW50U2lkZXMoeCxpLGF3YWl0KG51bGw9PWEuaXNSVEw/dm9pZCAwOmEuaXNSVEwoYy5mbG9hdGluZykpKTtpZihsIT09eClyZXR1cm57cmVzZXQ6e3BsYWNlbWVudDp3WzBdfX07Y29uc3QgQz1bYltnZXRTaWRlKHgpXSxiW1NbMF1dLGJbU1sxXV1dLEE9Wy4uLihudWxsPT0ocj1zLmF1dG9QbGFjZW1lbnQpP3ZvaWQgMDpyLm92ZXJmbG93cyl8fFtdLHtwbGFjZW1lbnQ6eCxvdmVyZmxvd3M6Q31dLE89d1t2KzFdO2lmKE8pcmV0dXJue2RhdGE6e2luZGV4OnYrMSxvdmVyZmxvd3M6QX0scmVzZXQ6e3BsYWNlbWVudDpPfX07Y29uc3QgRT1BLm1hcChlPT57Y29uc3QgdD1nZXRBbGlnbm1lbnQoZS5wbGFjZW1lbnQpO3JldHVybltlLnBsYWNlbWVudCx0JiZkP2Uub3ZlcmZsb3dzLnNsaWNlKDAsMikucmVkdWNlKChlLHQpPT5lK3QsMCk6ZS5vdmVyZmxvd3NbMF0sZS5vdmVyZmxvd3NdfSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKSxOPUUuZmlsdGVyKGU9PmVbMl0uc2xpY2UoMCxnZXRBbGlnbm1lbnQoZVswXSk/MjozKS5ldmVyeShlPT5lPD0wKSksUj0obnVsbD09KG89TlswXSk/dm9pZCAwOm9bMF0pfHxFWzBdWzBdO3JldHVybiBSIT09bD97ZGF0YTp7aW5kZXg6disxLG92ZXJmbG93czpBfSxyZXNldDp7cGxhY2VtZW50OlJ9fTp7fX19fSxzaGlmdD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJzaGlmdCIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50Om8scGxhdGZvcm06aX09dCx7bWFpbkF4aXM6cz0hMCxjcm9zc0F4aXM6bD0hMSxsaW1pdGVyOmE9e2ZuOmU9PntsZXR7eDp0LHk6bn09ZTtyZXR1cm57eDp0LHk6bn19fSwuLi5jfT1ldmFsdWF0ZShlLHQpLGQ9e3g6bix5OnJ9LHA9YXdhaXQgaS5kZXRlY3RPdmVyZmxvdyh0LGMpLGY9Z2V0U2lkZUF4aXMoZ2V0U2lkZShvKSksbT1nZXRPcHBvc2l0ZUF4aXMoZik7bGV0IHk9ZFttXSx3PWRbZl07aWYocyl7Y29uc3QgZT0ieSI9PT1tPyJib3R0b20iOiJyaWdodCI7eT1jbGFtcCh5K3BbInkiPT09bT8idG9wIjoibGVmdCJdLHkseS1wW2VdKX1pZihsKXtjb25zdCBlPSJ5Ij09PWY/ImJvdHRvbSI6InJpZ2h0Ijt3PWNsYW1wKHcrcFsieSI9PT1mPyJ0b3AiOiJsZWZ0Il0sdyx3LXBbZV0pfWNvbnN0IGI9YS5mbih7Li4udCxbbV06eSxbZl06d30pO3JldHVybnsuLi5iLGRhdGE6e3g6Yi54LW4seTpiLnktcixlbmFibGVkOntbbV06cyxbZl06bH19fX19fSxmbGlwPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT17fSkse25hbWU6ImZsaXAiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXt2YXIgbixyO2NvbnN0e3BsYWNlbWVudDpvLG1pZGRsZXdhcmVEYXRhOmkscmVjdHM6cyxpbml0aWFsUGxhY2VtZW50OmwscGxhdGZvcm06YSxlbGVtZW50czpjfT10LHttYWluQXhpczpkPSEwLGNyb3NzQXhpczpwPSEwLGZhbGxiYWNrUGxhY2VtZW50czpmLGZhbGxiYWNrU3RyYXRlZ3k6bT0iYmVzdEZpdCIsZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjp5PSJub25lIixmbGlwQWxpZ25tZW50Onc9ITAsLi4uYn09ZXZhbHVhdGUoZSx0KTtpZihudWxsIT0obj1pLmFycm93KSYmbi5hbGlnbm1lbnRPZmZzZXQpcmV0dXJue307Y29uc3Qgdj1nZXRTaWRlKG8pLHg9Z2V0U2lkZUF4aXMobCksUz1nZXRTaWRlKGwpPT09bCxDPWF3YWl0KG51bGw9PWEuaXNSVEw/dm9pZCAwOmEuaXNSVEwoYy5mbG9hdGluZykpLEE9Znx8KFN8fCF3P1tnZXRPcHBvc2l0ZVBsYWNlbWVudChsKV06ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXRPcHBvc2l0ZVBsYWNlbWVudChlKTtyZXR1cm5bZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQoZSksdCxnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCh0KV19KGwpKSxPPSJub25lIiE9PXk7IWYmJk8mJkEucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGwsdyx5LEMpKTtjb25zdCBFPVtsLC4uLkFdLE49YXdhaXQgYS5kZXRlY3RPdmVyZmxvdyh0LGIpLFI9W107bGV0IEQ9KG51bGw9PShyPWkuZmxpcCk/dm9pZCAwOnIub3ZlcmZsb3dzKXx8W107aWYoZCYmUi5wdXNoKE5bdl0pLHApe2NvbnN0IGU9Z2V0QWxpZ25tZW50U2lkZXMobyxzLEMpO1IucHVzaChOW2VbMF1dLE5bZVsxXV0pfWlmKEQ9Wy4uLkQse3BsYWNlbWVudDpvLG92ZXJmbG93czpSfV0sIVIuZXZlcnkoZT0+ZTw9MCkpe3ZhciBQLCQ7Y29uc3QgZT0oKG51bGw9PShQPWkuZmxpcCk/dm9pZCAwOlAuaW5kZXgpfHwwKSsxLHQ9RVtlXTtpZih0KXtpZighKCJhbGlnbm1lbnQiPT09cCYmeCE9PWdldFNpZGVBeGlzKHQpKXx8RC5ldmVyeShlPT5nZXRTaWRlQXhpcyhlLnBsYWNlbWVudCkhPT14fHxlLm92ZXJmbG93c1swXT4wKSlyZXR1cm57ZGF0YTp7aW5kZXg6ZSxvdmVyZmxvd3M6RH0scmVzZXQ6e3BsYWNlbWVudDp0fX19bGV0IG49bnVsbD09KCQ9RC5maWx0ZXIoZT0+ZS5vdmVyZmxvd3NbMF08PTApLnNvcnQoKGUsdCk9PmUub3ZlcmZsb3dzWzFdLXQub3ZlcmZsb3dzWzFdKVswXSk/dm9pZCAwOiQucGxhY2VtZW50O2lmKCFuKXN3aXRjaChtKXtjYXNlImJlc3RGaXQiOnt2YXIgTDtjb25zdCBlPW51bGw9PShMPUQuZmlsdGVyKGU9PntpZihPKXtjb25zdCB0PWdldFNpZGVBeGlzKGUucGxhY2VtZW50KTtyZXR1cm4gdD09PXh8fCJ5Ij09PXR9cmV0dXJuITB9KS5tYXAoZT0+W2UucGxhY2VtZW50LGUub3ZlcmZsb3dzLmZpbHRlcihlPT5lPjApLnJlZHVjZSgoZSx0KT0+ZSt0LDApXSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKVswXSk/dm9pZCAwOkxbMF07ZSYmKG49ZSk7YnJlYWt9Y2FzZSJpbml0aWFsUGxhY2VtZW50IjpuPWx9aWYobyE9PW4pcmV0dXJue3Jlc2V0OntwbGFjZW1lbnQ6bn19fXJldHVybnt9fX19LHNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx7bmFtZToic2l6ZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLHI7Y29uc3R7cGxhY2VtZW50Om8scmVjdHM6aSxwbGF0Zm9ybTpzLGVsZW1lbnRzOmx9PXQse2FwcGx5OmE9KCk9Pnt9LC4uLmN9PWV2YWx1YXRlKGUsdCksZD1hd2FpdCBzLmRldGVjdE92ZXJmbG93KHQsYykscD1nZXRTaWRlKG8pLGY9Z2V0QWxpZ25tZW50KG8pLG09InkiPT09Z2V0U2lkZUF4aXMobykse3dpZHRoOnksaGVpZ2h0Ond9PWkuZmxvYXRpbmc7bGV0IGIsdjsidG9wIj09PXB8fCJib3R0b20iPT09cD8oYj1wLHY9Zj09PShhd2FpdChudWxsPT1zLmlzUlRMP3ZvaWQgMDpzLmlzUlRMKGwuZmxvYXRpbmcpKT8ic3RhcnQiOiJlbmQiKT8ibGVmdCI6InJpZ2h0Iik6KHY9cCxiPSJlbmQiPT09Zj8idG9wIjoiYm90dG9tIik7Y29uc3QgeD13LWQudG9wLWQuYm90dG9tLFM9eS1kLmxlZnQtZC5yaWdodCxDPXlzKHctZFtiXSx4KSxBPXlzKHktZFt2XSxTKSxPPSF0Lm1pZGRsZXdhcmVEYXRhLnNoaWZ0O2xldCBFPUMsTj1BO2lmKG51bGwhPShuPXQubWlkZGxld2FyZURhdGEuc2hpZnQpJiZuLmVuYWJsZWQueCYmKE49UyksbnVsbCE9KHI9dC5taWRkbGV3YXJlRGF0YS5zaGlmdCkmJnIuZW5hYmxlZC55JiYoRT14KSxPJiYhZil7Y29uc3QgZT1rcyhkLmxlZnQsMCksdD1rcyhkLnJpZ2h0LDApLG49a3MoZC50b3AsMCkscj1rcyhkLmJvdHRvbSwwKTttP049eS0yKigwIT09ZXx8MCE9PXQ/ZSt0OmtzKGQubGVmdCxkLnJpZ2h0KSk6RT13LTIqKDAhPT1ufHwwIT09cj9uK3I6a3MoZC50b3AsZC5ib3R0b20pKX1hd2FpdCBhKHsuLi50LGF2YWlsYWJsZVdpZHRoOk4sYXZhaWxhYmxlSGVpZ2h0OkV9KTtjb25zdCBSPWF3YWl0IHMuZ2V0RGltZW5zaW9ucyhsLmZsb2F0aW5nKTtyZXR1cm4geSE9PVIud2lkdGh8fHchPT1SLmhlaWdodD97cmVzZXQ6e3JlY3RzOiEwfX06e319fX0saGlkZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJoaWRlIixvcHRpb25zOmUsYXN5bmMgZm4odCl7Y29uc3R7cmVjdHM6bixwbGF0Zm9ybTpyfT10LHtzdHJhdGVneTpvPSJyZWZlcmVuY2VIaWRkZW4iLC4uLml9PWV2YWx1YXRlKGUsdCk7c3dpdGNoKG8pe2Nhc2UicmVmZXJlbmNlSGlkZGVuIjp7Y29uc3QgZT1nZXRTaWRlT2Zmc2V0cyhhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmksZWxlbWVudENvbnRleHQ6InJlZmVyZW5jZSJ9KSxuLnJlZmVyZW5jZSk7cmV0dXJue2RhdGE6e3JlZmVyZW5jZUhpZGRlbk9mZnNldHM6ZSxyZWZlcmVuY2VIaWRkZW46aXNBbnlTaWRlRnVsbHlDbGlwcGVkKGUpfX19Y2FzZSJlc2NhcGVkIjp7Y29uc3QgZT1nZXRTaWRlT2Zmc2V0cyhhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmksYWx0Qm91bmRhcnk6ITB9KSxuLmZsb2F0aW5nKTtyZXR1cm57ZGF0YTp7ZXNjYXBlZE9mZnNldHM6ZSxlc2NhcGVkOmlzQW55U2lkZUZ1bGx5Q2xpcHBlZChlKX19fWRlZmF1bHQ6cmV0dXJue319fX19LGFycm93JDE9ZT0+KHtuYW1lOiJhcnJvdyIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50Om8scmVjdHM6aSxwbGF0Zm9ybTpzLGVsZW1lbnRzOmwsbWlkZGxld2FyZURhdGE6YX09dCx7ZWxlbWVudDpjLHBhZGRpbmc6ZD0wfT1ldmFsdWF0ZShlLHQpfHx7fTtpZihudWxsPT1jKXJldHVybnt9O2NvbnN0IHA9Z2V0UGFkZGluZ09iamVjdChkKSxmPXt4Om4seTpyfSxtPWdldEFsaWdubWVudEF4aXMobykseT1nZXRBeGlzTGVuZ3RoKG0pLHc9YXdhaXQgcy5nZXREaW1lbnNpb25zKGMpLGI9InkiPT09bSx2PWI/InRvcCI6ImxlZnQiLHg9Yj8iYm90dG9tIjoicmlnaHQiLFM9Yj8iY2xpZW50SGVpZ2h0IjoiY2xpZW50V2lkdGgiLEM9aS5yZWZlcmVuY2VbeV0raS5yZWZlcmVuY2VbbV0tZlttXS1pLmZsb2F0aW5nW3ldLEE9ZlttXS1pLnJlZmVyZW5jZVttXSxPPWF3YWl0KG51bGw9PXMuZ2V0T2Zmc2V0UGFyZW50P3ZvaWQgMDpzLmdldE9mZnNldFBhcmVudChjKSk7bGV0IEU9Tz9PW1NdOjA7RSYmYXdhaXQobnVsbD09cy5pc0VsZW1lbnQ/dm9pZCAwOnMuaXNFbGVtZW50KE8pKXx8KEU9bC5mbG9hdGluZ1tTXXx8aS5mbG9hdGluZ1t5XSk7Y29uc3QgTj1DLzItQS8yLFI9RS8yLXdbeV0vMi0xLEQ9eXMocFt2XSxSKSxQPXlzKHBbeF0sUiksJD1ELEw9RS13W3ldLVAsej1FLzItd1t5XS8yK04sQj1jbGFtcCgkLHosTCksRj0hYS5hcnJvdyYmbnVsbCE9Z2V0QWxpZ25tZW50KG8pJiZ6IT09QiYmaS5yZWZlcmVuY2VbeV0vMi0oejwkP0Q6UCktd1t5XS8yPDAsSD1GP3o8JD96LSQ6ei1MOjA7cmV0dXJue1ttXTpmW21dK0gsZGF0YTp7W21dOkIsY2VudGVyT2Zmc2V0OnotQi1ILC4uLkYmJnthbGlnbm1lbnRPZmZzZXQ6SH19LHJlc2V0OkZ9fX0pLGlubGluZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e30pLHtuYW1lOiJpbmxpbmUiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixlbGVtZW50czpyLHJlY3RzOm8scGxhdGZvcm06aSxzdHJhdGVneTpzfT10LHtwYWRkaW5nOmw9Mix4OmEseTpjfT1ldmFsdWF0ZShlLHQpLGQ9QXJyYXkuZnJvbShhd2FpdChudWxsPT1pLmdldENsaWVudFJlY3RzP3ZvaWQgMDppLmdldENsaWVudFJlY3RzKHIucmVmZXJlbmNlKSl8fFtdKSxwPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5zbGljZSgpLnNvcnQoKGUsdCk9PmUueS10LnkpLG49W107bGV0IHI9bnVsbDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbz10W2VdOyFyfHxvLnktci55PnIuaGVpZ2h0LzI/bi5wdXNoKFtvXSk6bltuLmxlbmd0aC0xXS5wdXNoKG8pLHI9b31yZXR1cm4gbi5tYXAoZT0+cmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QoZSkpKX0oZCksZj1yZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChkKSksbT1nZXRQYWRkaW5nT2JqZWN0KGwpO2NvbnN0IHk9YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTp7Z2V0Qm91bmRpbmdDbGllbnRSZWN0OmZ1bmN0aW9uKCl7aWYoMj09PXAubGVuZ3RoJiZwWzBdLmxlZnQ+cFsxXS5yaWdodCYmbnVsbCE9YSYmbnVsbCE9YylyZXR1cm4gcC5maW5kKGU9PmE+ZS5sZWZ0LW0ubGVmdCYmYTxlLnJpZ2h0K20ucmlnaHQmJmM+ZS50b3AtbS50b3AmJmM8ZS5ib3R0b20rbS5ib3R0b20pfHxmO2lmKHAubGVuZ3RoPj0yKXtpZigieSI9PT1nZXRTaWRlQXhpcyhuKSl7Y29uc3QgZT1wWzBdLHQ9cFtwLmxlbmd0aC0xXSxyPSJ0b3AiPT09Z2V0U2lkZShuKSxvPWUudG9wLGk9dC5ib3R0b20scz1yP2UubGVmdDp0LmxlZnQsbD1yP2UucmlnaHQ6dC5yaWdodDtyZXR1cm57dG9wOm8sYm90dG9tOmksbGVmdDpzLHJpZ2h0Omwsd2lkdGg6bC1zLGhlaWdodDppLW8seDpzLHk6b319Y29uc3QgZT0ibGVmdCI9PT1nZXRTaWRlKG4pLHQ9a3MoLi4ucC5tYXAoZT0+ZS5yaWdodCkpLHI9eXMoLi4ucC5tYXAoZT0+ZS5sZWZ0KSksbz1wLmZpbHRlcihuPT5lP24ubGVmdD09PXI6bi5yaWdodD09PXQpLGk9b1swXS50b3Ascz1vW28ubGVuZ3RoLTFdLmJvdHRvbTtyZXR1cm57dG9wOmksYm90dG9tOnMsbGVmdDpyLHJpZ2h0OnQsd2lkdGg6dC1yLGhlaWdodDpzLWkseDpyLHk6aX19cmV0dXJuIGZ9fSxmbG9hdGluZzpyLmZsb2F0aW5nLHN0cmF0ZWd5OnN9KTtyZXR1cm4gby5yZWZlcmVuY2UueCE9PXkucmVmZXJlbmNlLnh8fG8ucmVmZXJlbmNlLnkhPT15LnJlZmVyZW5jZS55fHxvLnJlZmVyZW5jZS53aWR0aCE9PXkucmVmZXJlbmNlLndpZHRofHxvLnJlZmVyZW5jZS5oZWlnaHQhPT15LnJlZmVyZW5jZS5oZWlnaHQ/e3Jlc2V0OntyZWN0czp5fX06e319fX0sY29tcHV0ZVBvc2l0aW9uPShlLHQsbik9Pntjb25zdCByPW5ldyBNYXAsbz17cGxhdGZvcm06TnMsLi4ubn0saT17Li4uby5wbGF0Zm9ybSxfYzpyfTtyZXR1cm4oYXN5bmMoZSx0LG4pPT57Y29uc3R7cGxhY2VtZW50OnI9ImJvdHRvbSIsc3RyYXRlZ3k6bz0iYWJzb2x1dGUiLG1pZGRsZXdhcmU6aT1bXSxwbGF0Zm9ybTpzfT1uLGw9cy5kZXRlY3RPdmVyZmxvdz9zOnsuLi5zLGRldGVjdE92ZXJmbG93OmRldGVjdE92ZXJmbG93fSxhPWF3YWl0KG51bGw9PXMuaXNSVEw/dm9pZCAwOnMuaXNSVEwodCkpO2xldCBjPWF3YWl0IHMuZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Om99KSx7eDpkLHk6cH09Y29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoYyxyLGEpLGY9cixtPTA7Y29uc3QgeT17fTtmb3IobGV0IG49MDtuPGkubGVuZ3RoO24rKyl7Y29uc3Qgdz1pW25dO2lmKCF3KWNvbnRpbnVlO2NvbnN0e25hbWU6Yixmbjp2fT13LHt4OngseTpTLGRhdGE6QyxyZXNldDpBfT1hd2FpdCB2KHt4OmQseTpwLGluaXRpYWxQbGFjZW1lbnQ6cixwbGFjZW1lbnQ6ZixzdHJhdGVneTpvLG1pZGRsZXdhcmVEYXRhOnkscmVjdHM6YyxwbGF0Zm9ybTpsLGVsZW1lbnRzOntyZWZlcmVuY2U6ZSxmbG9hdGluZzp0fX0pO2Q9bnVsbCE9eD94OmQscD1udWxsIT1TP1M6cCx5W2JdPXsuLi55W2JdLC4uLkN9LEEmJm08NTAmJihtKyssIm9iamVjdCI9PXR5cGVvZiBBJiYoQS5wbGFjZW1lbnQmJihmPUEucGxhY2VtZW50KSxBLnJlY3RzJiYoYz0hMD09PUEucmVjdHM/YXdhaXQgcy5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pOkEucmVjdHMpLCh7eDpkLHk6cH09Y29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoYyxmLGEpKSksbj0tMSl9cmV0dXJue3g6ZCx5OnAscGxhY2VtZW50OmYsc3RyYXRlZ3k6byxtaWRkbGV3YXJlRGF0YTp5fX0pKGUsdCx7Li4ubyxwbGF0Zm9ybTppfSl9O2xldCBScyxEcztpZigidW5kZWZpbmVkIiE9dHlwZW9mIFdlYWtNYXApe2xldCBlPW5ldyBXZWFrTWFwO1JzPXQ9PmUuZ2V0KHQpLERzPSh0LG4pPT4oZS5zZXQodCxuKSxuKX1lbHNle2NvbnN0IGU9W10sdD0xMDtsZXQgbj0wO1JzPXQ9Pntmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTIpaWYoZVtuXT09dClyZXR1cm4gZVtuKzFdfSxEcz0ocixvKT0+KG49PXQmJihuPTApLGVbbisrXT1yLGVbbisrXT1vKX12YXIgUHM9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy53aWR0aD1lLHRoaXMuaGVpZ2h0PXQsdGhpcy5tYXA9bix0aGlzLnByb2JsZW1zPXJ9ZmluZENlbGwoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm1hcC5sZW5ndGg7dCsrKXtjb25zdCBuPXRoaXMubWFwW3RdO2lmKG4hPWUpY29udGludWU7Y29uc3Qgcj10JXRoaXMud2lkdGgsbz10L3RoaXMud2lkdGh8MDtsZXQgaT1yKzEscz1vKzE7Zm9yKGxldCBlPTE7aTx0aGlzLndpZHRoJiZ0aGlzLm1hcFt0K2VdPT1uO2UrKylpKys7Zm9yKGxldCBlPTE7czx0aGlzLmhlaWdodCYmdGhpcy5tYXBbdCt0aGlzLndpZHRoKmVdPT1uO2UrKylzKys7cmV0dXJue2xlZnQ6cix0b3A6byxyaWdodDppLGJvdHRvbTpzfX10aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCB3aXRoIG9mZnNldCAke2V9IGZvdW5kYCl9Y29sQ291bnQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLm1hcC5sZW5ndGg7dCsrKWlmKHRoaXMubWFwW3RdPT1lKXJldHVybiB0JXRoaXMud2lkdGg7dGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIGNlbGwgd2l0aCBvZmZzZXQgJHtlfSBmb3VuZGApfW5leHRDZWxsKGUsdCxuKXtjb25zdHtsZWZ0OnIscmlnaHQ6byx0b3A6aSxib3R0b206c309dGhpcy5maW5kQ2VsbChlKTtyZXR1cm4iaG9yaXoiPT10PyhuPDA/MD09cjpvPT10aGlzLndpZHRoKT9udWxsOnRoaXMubWFwW2kqdGhpcy53aWR0aCsobjwwP3ItMTpvKV06KG48MD8wPT1pOnM9PXRoaXMuaGVpZ2h0KT9udWxsOnRoaXMubWFwW3IrdGhpcy53aWR0aCoobjwwP2ktMTpzKV19cmVjdEJldHdlZW4oZSx0KXtjb25zdHtsZWZ0Om4scmlnaHQ6cix0b3A6byxib3R0b206aX09dGhpcy5maW5kQ2VsbChlKSx7bGVmdDpzLHJpZ2h0OmwsdG9wOmEsYm90dG9tOmN9PXRoaXMuZmluZENlbGwodCk7cmV0dXJue2xlZnQ6TWF0aC5taW4obixzKSx0b3A6TWF0aC5taW4obyxhKSxyaWdodDpNYXRoLm1heChyLGwpLGJvdHRvbTpNYXRoLm1heChpLGMpfX1jZWxsc0luUmVjdChlKXtjb25zdCB0PVtdLG49e307Zm9yKGxldCByPWUudG9wO3I8ZS5ib3R0b207cisrKWZvcihsZXQgbz1lLmxlZnQ7bzxlLnJpZ2h0O28rKyl7Y29uc3QgaT1yKnRoaXMud2lkdGgrbyxzPXRoaXMubWFwW2ldO25bc118fChuW3NdPSEwLG89PWUubGVmdCYmbyYmdGhpcy5tYXBbaS0xXT09c3x8cj09ZS50b3AmJnImJnRoaXMubWFwW2ktdGhpcy53aWR0aF09PXN8fHQucHVzaChzKSl9cmV0dXJuIHR9cG9zaXRpb25BdChlLHQsbil7Zm9yKGxldCByPTAsbz0wOztyKyspe2NvbnN0IGk9bytuLmNoaWxkKHIpLm5vZGVTaXplO2lmKHI9PWUpe2xldCBuPXQrZSp0aGlzLndpZHRoO2NvbnN0IHI9KGUrMSkqdGhpcy53aWR0aDtmb3IoO248ciYmdGhpcy5tYXBbbl08bzspbisrO3JldHVybiBuPT1yP2ktMTp0aGlzLm1hcFtuXX1vPWl9fXN0YXRpYyBnZXQoZSl7cmV0dXJuIFJzKGUpfHxEcyhlLGZ1bmN0aW9uKGUpe2lmKCJ0YWJsZSIhPWUudHlwZS5zcGVjLnRhYmxlUm9sZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm90IGEgdGFibGUgbm9kZTogIitlLnR5cGUubmFtZSk7Y29uc3QgdD1mdW5jdGlvbihlKXtsZXQgdD0tMSxuPSExO2ZvcihsZXQgcj0wO3I8ZS5jaGlsZENvdW50O3IrKyl7Y29uc3Qgbz1lLmNoaWxkKHIpO2xldCBpPTA7aWYobilmb3IobGV0IHQ9MDt0PHI7dCsrKXtjb25zdCBuPWUuY2hpbGQodCk7Zm9yKGxldCBlPTA7ZTxuLmNoaWxkQ291bnQ7ZSsrKXtjb25zdCBvPW4uY2hpbGQoZSk7dCtvLmF0dHJzLnJvd3NwYW4+ciYmKGkrPW8uYXR0cnMuY29sc3Bhbil9fWZvcihsZXQgZT0wO2U8by5jaGlsZENvdW50O2UrKyl7Y29uc3QgdD1vLmNoaWxkKGUpO2krPXQuYXR0cnMuY29sc3Bhbix0LmF0dHJzLnJvd3NwYW4+MSYmKG49ITApfS0xPT10P3Q9aTp0IT1pJiYodD1NYXRoLm1heCh0LGkpKX1yZXR1cm4gdH0oZSksbj1lLmNoaWxkQ291bnQscj1bXTtsZXQgbz0wLGk9bnVsbDtjb25zdCBzPVtdO2ZvcihsZXQgZT0wLG89dCpuO2U8bztlKyspcltlXT0wO2ZvcihsZXQgbD0wLGE9MDtsPG47bCsrKXtjb25zdCBjPWUuY2hpbGQobCk7YSsrO2ZvcihsZXQgZT0wOztlKyspe2Zvcig7bzxyLmxlbmd0aCYmMCE9cltvXTspbysrO2lmKGU9PWMuY2hpbGRDb3VudClicmVhaztjb25zdCBkPWMuY2hpbGQoZSkse2NvbHNwYW46cCxyb3dzcGFuOmYsY29sd2lkdGg6bX09ZC5hdHRycztmb3IobGV0IGU9MDtlPGY7ZSsrKXtpZihlK2w+PW4peyhpfHwoaT1bXSkpLnB1c2goe3R5cGU6Im92ZXJsb25nX3Jvd3NwYW4iLHBvczphLG46Zi1lfSk7YnJlYWt9Y29uc3QgYz1vK2UqdDtmb3IobGV0IGU9MDtlPHA7ZSsrKXswPT1yW2MrZV0/cltjK2VdPWE6KGl8fChpPVtdKSkucHVzaCh7dHlwZToiY29sbGlzaW9uIixyb3c6bCxwb3M6YSxuOnAtZX0pO2NvbnN0IG49bSYmbVtlXTtpZihuKXtjb25zdCByPShjK2UpJXQqMixvPXNbcl07bnVsbD09b3x8byE9biYmMT09c1tyKzFdPyhzW3JdPW4sc1tyKzFdPTEpOm89PW4mJnNbcisxXSsrfX19bys9cCxhKz1kLm5vZGVTaXplfWNvbnN0IGQ9KGwrMSkqdDtsZXQgcD0wO2Zvcig7bzxkOykwPT1yW28rK10mJnArKztwJiYoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJtaXNzaW5nIixyb3c6bCxuOnB9KSxhKyt9MCE9PXQmJjAhPT1ufHwoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJ6ZXJvX3NpemVkIn0pO2NvbnN0IGw9bmV3IFBzKHQsbixyLGkpO2xldCBhPSExO2ZvcihsZXQgZT0wOyFhJiZlPHMubGVuZ3RoO2UrPTIpbnVsbCE9c1tlXSYmc1tlKzFdPG4mJihhPSEwKTthJiZmdW5jdGlvbihlLHQsbil7ZS5wcm9ibGVtc3x8KGUucHJvYmxlbXM9W10pO2NvbnN0IHI9e307Zm9yKGxldCBvPTA7bzxlLm1hcC5sZW5ndGg7bysrKXtjb25zdCBpPWUubWFwW29dO2lmKHJbaV0pY29udGludWU7cltpXT0hMDtjb25zdCBzPW4ubm9kZUF0KGkpO2lmKCFzKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7aX0gZm91bmRgKTtsZXQgbD1udWxsO2NvbnN0IGE9cy5hdHRycztmb3IobGV0IG49MDtuPGEuY29sc3BhbjtuKyspe2NvbnN0IHI9dFsobytuKSVlLndpZHRoKjJdO251bGw9PXJ8fGEuY29sd2lkdGgmJmEuY29sd2lkdGhbbl09PXJ8fCgobHx8KGw9ZnJlc2hDb2xXaWR0aChhKSkpW25dPXIpfWwmJmUucHJvYmxlbXMudW5zaGlmdCh7dHlwZToiY29sd2lkdGggbWlzbWF0Y2giLHBvczppLGNvbHdpZHRoOmx9KX19KGwscyxlKTtyZXR1cm4gbH0oZSkpfX07ZnVuY3Rpb24gZnJlc2hDb2xXaWR0aChlKXtpZihlLmNvbHdpZHRoKXJldHVybiBlLmNvbHdpZHRoLnNsaWNlKCk7Y29uc3QgdD1bXTtmb3IobGV0IG49MDtuPGUuY29sc3BhbjtuKyspdC5wdXNoKDApO3JldHVybiB0fWZ1bmN0aW9uIHRhYmxlTm9kZVR5cGVzKGUpe2xldCB0PWUuY2FjaGVkLnRhYmxlTm9kZVR5cGVzO2lmKCF0KXt0PWUuY2FjaGVkLnRhYmxlTm9kZVR5cGVzPXt9O2Zvcihjb25zdCBuIGluIGUubm9kZXMpe2NvbnN0IHI9ZS5ub2Rlc1tuXSxvPXIuc3BlYy50YWJsZVJvbGU7byYmKHRbb109cil9fXJldHVybiB0fWZ1bmN0aW9uIGlzSW5UYWJsZShlKXtjb25zdCB0PWUuc2VsZWN0aW9uLiRoZWFkO2ZvcihsZXQgZT10LmRlcHRoO2U+MDtlLS0paWYoInJvdyI9PXQubm9kZShlKS50eXBlLnNwZWMudGFibGVSb2xlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHBvaW50c0F0Q2VsbChlKXtyZXR1cm4icm93Ij09ZS5wYXJlbnQudHlwZS5zcGVjLnRhYmxlUm9sZSYmISFlLm5vZGVBZnRlcn1mdW5jdGlvbiBpblNhbWVUYWJsZShlLHQpe3JldHVybiBlLmRlcHRoPT10LmRlcHRoJiZlLnBvcz49dC5zdGFydCgtMSkmJmUucG9zPD10LmVuZCgtMSl9ZnVuY3Rpb24gbmV4dENlbGwoZSx0LG4pe2NvbnN0IHI9ZS5ub2RlKC0xKSxvPVBzLmdldChyKSxpPWUuc3RhcnQoLTEpLHM9by5uZXh0Q2VsbChlLnBvcy1pLHQsbik7cmV0dXJuIG51bGw9PXM/bnVsbDplLm5vZGUoMCkucmVzb2x2ZShpK3MpfWZ1bmN0aW9uIHJlbW92ZUNvbFNwYW4oZSx0LG49MSl7Y29uc3Qgcj17Li4uZSxjb2xzcGFuOmUuY29sc3Bhbi1ufTtyZXR1cm4gci5jb2x3aWR0aCYmKHIuY29sd2lkdGg9ci5jb2x3aWR0aC5zbGljZSgpLHIuY29sd2lkdGguc3BsaWNlKHQsbiksci5jb2x3aWR0aC5zb21lKGU9PmU+MCl8fChyLmNvbHdpZHRoPW51bGwpKSxyfW5ldyBQbHVnaW5LZXkoInNlbGVjdGluZ0NlbGxzIik7dmFyIElzPWNsYXNzIENlbGxTZWxlY3Rpb24gZXh0ZW5kcyBTZWxlY3Rpb257Y29uc3RydWN0b3IoZSx0PWUpe2NvbnN0IG49ZS5ub2RlKC0xKSxyPVBzLmdldChuKSxvPWUuc3RhcnQoLTEpLGk9ci5yZWN0QmV0d2VlbihlLnBvcy1vLHQucG9zLW8pLHM9ZS5ub2RlKDApLGw9ci5jZWxsc0luUmVjdChpKS5maWx0ZXIoZT0+ZSE9dC5wb3Mtbyk7bC51bnNoaWZ0KHQucG9zLW8pO2NvbnN0IGE9bC5tYXAoZT0+e2NvbnN0IHQ9bi5ub2RlQXQoZSk7aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIGNlbGwgd2l0aCBvZmZzZXQgJHtlfSBmb3VuZGApO2NvbnN0IHI9bytlKzE7cmV0dXJuIG5ldyBTZWxlY3Rpb25SYW5nZShzLnJlc29sdmUocikscy5yZXNvbHZlKHIrdC5jb250ZW50LnNpemUpKX0pO3N1cGVyKGFbMF0uJGZyb20sYVswXS4kdG8sYSksdGhpcy4kYW5jaG9yQ2VsbD1lLHRoaXMuJGhlYWRDZWxsPXR9bWFwKGUsdCl7Y29uc3Qgbj1lLnJlc29sdmUodC5tYXAodGhpcy4kYW5jaG9yQ2VsbC5wb3MpKSxyPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLiRoZWFkQ2VsbC5wb3MpKTtpZihwb2ludHNBdENlbGwobikmJnBvaW50c0F0Q2VsbChyKSYmaW5TYW1lVGFibGUobixyKSl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLm5vZGUoLTEpIT1uLm5vZGUoLTEpO3JldHVybiBlJiZ0aGlzLmlzUm93U2VsZWN0aW9uKCk/Q2VsbFNlbGVjdGlvbi5yb3dTZWxlY3Rpb24obixyKTplJiZ0aGlzLmlzQ29sU2VsZWN0aW9uKCk/Q2VsbFNlbGVjdGlvbi5jb2xTZWxlY3Rpb24obixyKTpuZXcgQ2VsbFNlbGVjdGlvbihuLHIpfXJldHVybiBUZXh0U2VsZWN0aW9uLmJldHdlZW4obixyKX1jb250ZW50KCl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLm5vZGUoLTEpLHQ9UHMuZ2V0KGUpLG49dGhpcy4kYW5jaG9yQ2VsbC5zdGFydCgtMSkscj10LnJlY3RCZXR3ZWVuKHRoaXMuJGFuY2hvckNlbGwucG9zLW4sdGhpcy4kaGVhZENlbGwucG9zLW4pLG89e30saT1bXTtmb3IobGV0IG49ci50b3A7bjxyLmJvdHRvbTtuKyspe2NvbnN0IHM9W107Zm9yKGxldCBpPW4qdC53aWR0aCtyLmxlZnQsbD1yLmxlZnQ7bDxyLnJpZ2h0O2wrKyxpKyspe2NvbnN0IG49dC5tYXBbaV07aWYob1tuXSljb250aW51ZTtvW25dPSEwO2NvbnN0IGw9dC5maW5kQ2VsbChuKTtsZXQgYT1lLm5vZGVBdChuKTtpZighYSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCB3aXRoIG9mZnNldCAke259IGZvdW5kYCk7Y29uc3QgYz1yLmxlZnQtbC5sZWZ0LGQ9bC5yaWdodC1yLnJpZ2h0O2lmKGM+MHx8ZD4wKXtsZXQgZT1hLmF0dHJzO2lmKGM+MCYmKGU9cmVtb3ZlQ29sU3BhbihlLDAsYykpLGQ+MCYmKGU9cmVtb3ZlQ29sU3BhbihlLGUuY29sc3Bhbi1kLGQpKSxsLmxlZnQ8ci5sZWZ0KXtpZihhPWEudHlwZS5jcmVhdGVBbmRGaWxsKGUpLCFhKXRocm93IG5ldyBSYW5nZUVycm9yKGBDb3VsZCBub3QgY3JlYXRlIGNlbGwgd2l0aCBhdHRycyAke0pTT04uc3RyaW5naWZ5KGUpfWApfWVsc2UgYT1hLnR5cGUuY3JlYXRlKGUsYS5jb250ZW50KX1pZihsLnRvcDxyLnRvcHx8bC5ib3R0b20+ci5ib3R0b20pe2NvbnN0IGU9ey4uLmEuYXR0cnMscm93c3BhbjpNYXRoLm1pbihsLmJvdHRvbSxyLmJvdHRvbSktTWF0aC5tYXgobC50b3Asci50b3ApfTthPWwudG9wPHIudG9wP2EudHlwZS5jcmVhdGVBbmRGaWxsKGUpOmEudHlwZS5jcmVhdGUoZSxhLmNvbnRlbnQpfXMucHVzaChhKX1pLnB1c2goZS5jaGlsZChuKS5jb3B5KEZyYWdtZW50LmZyb20ocykpKX1jb25zdCBzPXRoaXMuaXNDb2xTZWxlY3Rpb24oKSYmdGhpcy5pc1Jvd1NlbGVjdGlvbigpP2U6aTtyZXR1cm4gbmV3IFNsaWNlKEZyYWdtZW50LmZyb20ocyksMSwxKX1yZXBsYWNlKGUsdD1TbGljZS5lbXB0eSl7Y29uc3Qgbj1lLnN0ZXBzLmxlbmd0aCxyPXRoaXMucmFuZ2VzO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtjb25zdHskZnJvbTppLCR0bzpzfT1yW29dLGw9ZS5tYXBwaW5nLnNsaWNlKG4pO2UucmVwbGFjZShsLm1hcChpLnBvcyksbC5tYXAocy5wb3MpLG8/U2xpY2UuZW1wdHk6dCl9Y29uc3Qgbz1TZWxlY3Rpb24uZmluZEZyb20oZS5kb2MucmVzb2x2ZShlLm1hcHBpbmcuc2xpY2UobikubWFwKHRoaXMudG8pKSwtMSk7byYmZS5zZXRTZWxlY3Rpb24obyl9cmVwbGFjZVdpdGgoZSx0KXt0aGlzLnJlcGxhY2UoZSxuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbSh0KSwwLDApKX1mb3JFYWNoQ2VsbChlKXtjb25zdCB0PXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSksbj1Qcy5nZXQodCkscj10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxvPW4uY2VsbHNJblJlY3Qobi5yZWN0QmV0d2Vlbih0aGlzLiRhbmNob3JDZWxsLnBvcy1yLHRoaXMuJGhlYWRDZWxsLnBvcy1yKSk7Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspZSh0Lm5vZGVBdChvW25dKSxyK29bbl0pfWlzQ29sU2VsZWN0aW9uKCl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLmluZGV4KC0xKSx0PXRoaXMuJGhlYWRDZWxsLmluZGV4KC0xKTtpZihNYXRoLm1pbihlLHQpPjApcmV0dXJuITE7Y29uc3Qgbj1lK3RoaXMuJGFuY2hvckNlbGwubm9kZUFmdGVyLmF0dHJzLnJvd3NwYW4scj10K3RoaXMuJGhlYWRDZWxsLm5vZGVBZnRlci5hdHRycy5yb3dzcGFuO3JldHVybiBNYXRoLm1heChuLHIpPT10aGlzLiRoZWFkQ2VsbC5ub2RlKC0xKS5jaGlsZENvdW50fXN0YXRpYyBjb2xTZWxlY3Rpb24oZSx0PWUpe2NvbnN0IG49ZS5ub2RlKC0xKSxyPVBzLmdldChuKSxvPWUuc3RhcnQoLTEpLGk9ci5maW5kQ2VsbChlLnBvcy1vKSxzPXIuZmluZENlbGwodC5wb3MtbyksbD1lLm5vZGUoMCk7cmV0dXJuIGkudG9wPD1zLnRvcD8oaS50b3A+MCYmKGU9bC5yZXNvbHZlKG8rci5tYXBbaS5sZWZ0XSkpLHMuYm90dG9tPHIuaGVpZ2h0JiYodD1sLnJlc29sdmUobytyLm1hcFtyLndpZHRoKihyLmhlaWdodC0xKStzLnJpZ2h0LTFdKSkpOihzLnRvcD4wJiYodD1sLnJlc29sdmUobytyLm1hcFtzLmxlZnRdKSksaS5ib3R0b208ci5oZWlnaHQmJihlPWwucmVzb2x2ZShvK3IubWFwW3Iud2lkdGgqKHIuaGVpZ2h0LTEpK2kucmlnaHQtMV0pKSksbmV3IENlbGxTZWxlY3Rpb24oZSx0KX1pc1Jvd1NlbGVjdGlvbigpe2NvbnN0IGU9dGhpcy4kYW5jaG9yQ2VsbC5ub2RlKC0xKSx0PVBzLmdldChlKSxuPXRoaXMuJGFuY2hvckNlbGwuc3RhcnQoLTEpLHI9dC5jb2xDb3VudCh0aGlzLiRhbmNob3JDZWxsLnBvcy1uKSxvPXQuY29sQ291bnQodGhpcy4kaGVhZENlbGwucG9zLW4pO2lmKE1hdGgubWluKHIsbyk+MClyZXR1cm4hMTtjb25zdCBpPXIrdGhpcy4kYW5jaG9yQ2VsbC5ub2RlQWZ0ZXIuYXR0cnMuY29sc3BhbixzPW8rdGhpcy4kaGVhZENlbGwubm9kZUFmdGVyLmF0dHJzLmNvbHNwYW47cmV0dXJuIE1hdGgubWF4KGkscyk9PXQud2lkdGh9ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDZWxsU2VsZWN0aW9uJiZlLiRhbmNob3JDZWxsLnBvcz09dGhpcy4kYW5jaG9yQ2VsbC5wb3MmJmUuJGhlYWRDZWxsLnBvcz09dGhpcy4kaGVhZENlbGwucG9zfXN0YXRpYyByb3dTZWxlY3Rpb24oZSx0PWUpe2NvbnN0IG49ZS5ub2RlKC0xKSxyPVBzLmdldChuKSxvPWUuc3RhcnQoLTEpLGk9ci5maW5kQ2VsbChlLnBvcy1vKSxzPXIuZmluZENlbGwodC5wb3MtbyksbD1lLm5vZGUoMCk7cmV0dXJuIGkubGVmdDw9cy5sZWZ0PyhpLmxlZnQ+MCYmKGU9bC5yZXNvbHZlKG8rci5tYXBbaS50b3Aqci53aWR0aF0pKSxzLnJpZ2h0PHIud2lkdGgmJih0PWwucmVzb2x2ZShvK3IubWFwW3Iud2lkdGgqKHMudG9wKzEpLTFdKSkpOihzLmxlZnQ+MCYmKHQ9bC5yZXNvbHZlKG8rci5tYXBbcy50b3Aqci53aWR0aF0pKSxpLnJpZ2h0PHIud2lkdGgmJihlPWwucmVzb2x2ZShvK3IubWFwW3Iud2lkdGgqKGkudG9wKzEpLTFdKSkpLG5ldyBDZWxsU2VsZWN0aW9uKGUsdCl9dG9KU09OKCl7cmV0dXJue3R5cGU6ImNlbGwiLGFuY2hvcjp0aGlzLiRhbmNob3JDZWxsLnBvcyxoZWFkOnRoaXMuJGhlYWRDZWxsLnBvc319c3RhdGljIGZyb21KU09OKGUsdCl7cmV0dXJuIG5ldyBDZWxsU2VsZWN0aW9uKGUucmVzb2x2ZSh0LmFuY2hvciksZS5yZXNvbHZlKHQuaGVhZCkpfXN0YXRpYyBjcmVhdGUoZSx0LG49dCl7cmV0dXJuIG5ldyBDZWxsU2VsZWN0aW9uKGUucmVzb2x2ZSh0KSxlLnJlc29sdmUobikpfWdldEJvb2ttYXJrKCl7cmV0dXJuIG5ldyAkcyh0aGlzLiRhbmNob3JDZWxsLnBvcyx0aGlzLiRoZWFkQ2VsbC5wb3MpfX07SXMucHJvdG90eXBlLnZpc2libGU9ITEsU2VsZWN0aW9uLmpzb25JRCgiY2VsbCIsSXMpO3ZhciAkcz1jbGFzcyBDZWxsQm9va21hcmt7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmFuY2hvcj1lLHRoaXMuaGVhZD10fW1hcChlKXtyZXR1cm4gbmV3IENlbGxCb29rbWFyayhlLm1hcCh0aGlzLmFuY2hvciksZS5tYXAodGhpcy5oZWFkKSl9cmVzb2x2ZShlKXtjb25zdCB0PWUucmVzb2x2ZSh0aGlzLmFuY2hvciksbj1lLnJlc29sdmUodGhpcy5oZWFkKTtyZXR1cm4icm93Ij09dC5wYXJlbnQudHlwZS5zcGVjLnRhYmxlUm9sZSYmInJvdyI9PW4ucGFyZW50LnR5cGUuc3BlYy50YWJsZVJvbGUmJnQuaW5kZXgoKTx0LnBhcmVudC5jaGlsZENvdW50JiZuLmluZGV4KCk8bi5wYXJlbnQuY2hpbGRDb3VudCYmaW5TYW1lVGFibGUodCxuKT9uZXcgSXModCxuKTpTZWxlY3Rpb24ubmVhcihuLDEpfX07ZnVuY3Rpb24gc2VsZWN0ZWRSZWN0KGUpe2NvbnN0IHQ9ZS5zZWxlY3Rpb24sbj1mdW5jdGlvbihlKXtjb25zdCB0PWUuc2VsZWN0aW9uO2lmKCIkYW5jaG9yQ2VsbCJpbiB0JiZ0LiRhbmNob3JDZWxsKXJldHVybiB0LiRhbmNob3JDZWxsLnBvcz50LiRoZWFkQ2VsbC5wb3M/dC4kYW5jaG9yQ2VsbDp0LiRoZWFkQ2VsbDtpZigibm9kZSJpbiB0JiZ0Lm5vZGUmJiJjZWxsIj09dC5ub2RlLnR5cGUuc3BlYy50YWJsZVJvbGUpcmV0dXJuIHQuJGFuY2hvcjtjb25zdCBuPWZ1bmN0aW9uKGUpe2ZvcihsZXQgdD1lLmRlcHRoLTE7dD4wO3QtLSlpZigicm93Ij09ZS5ub2RlKHQpLnR5cGUuc3BlYy50YWJsZVJvbGUpcmV0dXJuIGUubm9kZSgwKS5yZXNvbHZlKGUuYmVmb3JlKHQrMSkpO3JldHVybiBudWxsfSh0LiRoZWFkKXx8ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PWUubm9kZUFmdGVyLG49ZS5wb3M7dDt0PXQuZmlyc3RDaGlsZCxuKyspe2NvbnN0IHI9dC50eXBlLnNwZWMudGFibGVSb2xlO2lmKCJjZWxsIj09cnx8ImhlYWRlcl9jZWxsIj09cilyZXR1cm4gZS5kb2MucmVzb2x2ZShuKX1mb3IobGV0IHQ9ZS5ub2RlQmVmb3JlLG49ZS5wb3M7dDt0PXQubGFzdENoaWxkLG4tLSl7Y29uc3Qgcj10LnR5cGUuc3BlYy50YWJsZVJvbGU7aWYoImNlbGwiPT1yfHwiaGVhZGVyX2NlbGwiPT1yKXJldHVybiBlLmRvYy5yZXNvbHZlKG4tdC5ub2RlU2l6ZSl9fSh0LiRoZWFkKTtpZihuKXJldHVybiBuO3Rocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIGZvdW5kIGFyb3VuZCBwb3NpdGlvbiAke3QuaGVhZH1gKX0oZSkscj1uLm5vZGUoLTEpLG89bi5zdGFydCgtMSksaT1Qcy5nZXQocik7cmV0dXJuey4uLnQgaW5zdGFuY2VvZiBJcz9pLnJlY3RCZXR3ZWVuKHQuJGFuY2hvckNlbGwucG9zLW8sdC4kaGVhZENlbGwucG9zLW8pOmkuZmluZENlbGwobi5wb3MtbyksdGFibGVTdGFydDpvLG1hcDppLHRhYmxlOnJ9fWZ1bmN0aW9uIGlzSGVhZGVyRW5hYmxlZEJ5VHlwZShlLHQsbil7Y29uc3Qgcj10Lm1hcC5jZWxsc0luUmVjdCh7bGVmdDowLHRvcDowLHJpZ2h0OiJyb3ciPT1lP3QubWFwLndpZHRoOjEsYm90dG9tOiJjb2x1bW4iPT1lP3QubWFwLmhlaWdodDoxfSk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe2NvbnN0IG89dC50YWJsZS5ub2RlQXQocltlXSk7aWYobyYmby50eXBlIT09bi5oZWFkZXJfY2VsbClyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiB0b2dnbGVIZWFkZXIoZSx0KXtyZXR1cm4odD10fHx7dXNlRGVwcmVjYXRlZExvZ2ljOiExfSkudXNlRGVwcmVjYXRlZExvZ2ljP2Z1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCFpc0luVGFibGUodCkpcmV0dXJuITE7aWYobil7Y29uc3Qgcj10YWJsZU5vZGVUeXBlcyh0LnNjaGVtYSksbz1zZWxlY3RlZFJlY3QodCksaT10LnRyLHM9by5tYXAuY2VsbHNJblJlY3QoImNvbHVtbiI9PWU/e2xlZnQ6by5sZWZ0LHRvcDowLHJpZ2h0Om8ucmlnaHQsYm90dG9tOm8ubWFwLmhlaWdodH06InJvdyI9PWU/e2xlZnQ6MCx0b3A6by50b3AscmlnaHQ6by5tYXAud2lkdGgsYm90dG9tOm8uYm90dG9tfTpvKSxsPXMubWFwKGU9Pm8udGFibGUubm9kZUF0KGUpKTtmb3IobGV0IGU9MDtlPHMubGVuZ3RoO2UrKylsW2VdLnR5cGU9PXIuaGVhZGVyX2NlbGwmJmkuc2V0Tm9kZU1hcmt1cChvLnRhYmxlU3RhcnQrc1tlXSxyLmNlbGwsbFtlXS5hdHRycyk7aWYoMD09PWkuc3RlcHMubGVuZ3RoKWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKWkuc2V0Tm9kZU1hcmt1cChvLnRhYmxlU3RhcnQrc1tlXSxyLmhlYWRlcl9jZWxsLGxbZV0uYXR0cnMpO24oaSl9cmV0dXJuITB9fShlKTpmdW5jdGlvbih0LG4pe2lmKCFpc0luVGFibGUodCkpcmV0dXJuITE7aWYobil7Y29uc3Qgcj10YWJsZU5vZGVUeXBlcyh0LnNjaGVtYSksbz1zZWxlY3RlZFJlY3QodCksaT10LnRyLHM9aXNIZWFkZXJFbmFibGVkQnlUeXBlKCJyb3ciLG8sciksbD1pc0hlYWRlckVuYWJsZWRCeVR5cGUoImNvbHVtbiIsbyxyKSxhPSgiY29sdW1uIj09PWU/czoicm93Ij09PWUmJmwpPzE6MCxjPSJjb2x1bW4iPT1lP3tsZWZ0OjAsdG9wOmEscmlnaHQ6MSxib3R0b206by5tYXAuaGVpZ2h0fToicm93Ij09ZT97bGVmdDphLHRvcDowLHJpZ2h0Om8ubWFwLndpZHRoLGJvdHRvbToxfTpvLGQ9ImNvbHVtbiI9PWU/bD9yLmNlbGw6ci5oZWFkZXJfY2VsbDoicm93Ij09ZT9zP3IuY2VsbDpyLmhlYWRlcl9jZWxsOnIuY2VsbDtvLm1hcC5jZWxsc0luUmVjdChjKS5mb3JFYWNoKGU9Pntjb25zdCB0PWUrby50YWJsZVN0YXJ0LG49aS5kb2Mubm9kZUF0KHQpO24mJmkuc2V0Tm9kZU1hcmt1cCh0LGQsbi5hdHRycyl9KSxuKGkpfXJldHVybiEwfX1mdW5jdGlvbiBkZWxldGVDZWxsU2VsZWN0aW9uKGUsdCl7Y29uc3Qgbj1lLnNlbGVjdGlvbjtpZighKG4gaW5zdGFuY2VvZiBJcykpcmV0dXJuITE7aWYodCl7Y29uc3Qgcj1lLnRyLG89dGFibGVOb2RlVHlwZXMoZS5zY2hlbWEpLmNlbGwuY3JlYXRlQW5kRmlsbCgpLmNvbnRlbnQ7bi5mb3JFYWNoQ2VsbCgoZSx0KT0+e2UuY29udGVudC5lcShvKXx8ci5yZXBsYWNlKHIubWFwcGluZy5tYXAodCsxKSxyLm1hcHBpbmcubWFwKHQrZS5ub2RlU2l6ZS0xKSxuZXcgU2xpY2UobywwLDApKX0pLHIuZG9jQ2hhbmdlZCYmdChyKX1yZXR1cm4hMH1mdW5jdGlvbiBtYXliZVNldFNlbGVjdGlvbihlLHQsbil7cmV0dXJuIW4uZXEoZS5zZWxlY3Rpb24pJiYodCYmdChlLnRyLnNldFNlbGVjdGlvbihuKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9ZnVuY3Rpb24gYXJyb3coZSx0KXtyZXR1cm4obixyLG8pPT57aWYoIW8pcmV0dXJuITE7Y29uc3QgaT1uLnNlbGVjdGlvbjtpZihpIGluc3RhbmNlb2YgSXMpcmV0dXJuIG1heWJlU2V0U2VsZWN0aW9uKG4scixTZWxlY3Rpb24ubmVhcihpLiRoZWFkQ2VsbCx0KSk7aWYoImhvcml6IiE9ZSYmIWkuZW1wdHkpcmV0dXJuITE7Y29uc3Qgcz1hdEVuZE9mQ2VsbChvLGUsdCk7aWYobnVsbD09cylyZXR1cm4hMTtpZigiaG9yaXoiPT1lKXJldHVybiBtYXliZVNldFNlbGVjdGlvbihuLHIsU2VsZWN0aW9uLm5lYXIobi5kb2MucmVzb2x2ZShpLmhlYWQrdCksdCkpO3tjb25zdCBvPW4uZG9jLnJlc29sdmUocyksaT1uZXh0Q2VsbChvLGUsdCk7bGV0IGw7cmV0dXJuIGw9aT9TZWxlY3Rpb24ubmVhcihpLDEpOnQ8MD9TZWxlY3Rpb24ubmVhcihuLmRvYy5yZXNvbHZlKG8uYmVmb3JlKC0xKSksLTEpOlNlbGVjdGlvbi5uZWFyKG4uZG9jLnJlc29sdmUoby5hZnRlcigtMSkpLDEpLG1heWJlU2V0U2VsZWN0aW9uKG4scixsKX19fWZ1bmN0aW9uIHNoaWZ0QXJyb3coZSx0KXtyZXR1cm4obixyLG8pPT57aWYoIW8pcmV0dXJuITE7Y29uc3QgaT1uLnNlbGVjdGlvbjtsZXQgcztpZihpIGluc3RhbmNlb2YgSXMpcz1pO2Vsc2V7Y29uc3Qgcj1hdEVuZE9mQ2VsbChvLGUsdCk7aWYobnVsbD09cilyZXR1cm4hMTtzPW5ldyBJcyhuLmRvYy5yZXNvbHZlKHIpKX1jb25zdCBsPW5leHRDZWxsKHMuJGhlYWRDZWxsLGUsdCk7cmV0dXJuISFsJiZtYXliZVNldFNlbGVjdGlvbihuLHIsbmV3IElzKHMuJGFuY2hvckNlbGwsbCkpfX1mdW5jdGlvbiBhdEVuZE9mQ2VsbChlLHQsbil7aWYoIShlLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pKXJldHVybiBudWxsO2NvbnN0eyRoZWFkOnJ9PWUuc3RhdGUuc2VsZWN0aW9uO2ZvcihsZXQgbz1yLmRlcHRoLTE7bz49MDtvLS0pe2NvbnN0IGk9ci5ub2RlKG8pO2lmKChuPDA/ci5pbmRleChvKTpyLmluZGV4QWZ0ZXIobykpIT0objwwPzA6aS5jaGlsZENvdW50KSlyZXR1cm4gbnVsbDtpZigiY2VsbCI9PWkudHlwZS5zcGVjLnRhYmxlUm9sZXx8ImhlYWRlcl9jZWxsIj09aS50eXBlLnNwZWMudGFibGVSb2xlKXtjb25zdCBpPXIuYmVmb3JlKG8pLHM9InZlcnQiPT10P24+MD8iZG93biI6InVwIjpuPjA/InJpZ2h0IjoibGVmdCI7cmV0dXJuIGUuZW5kT2ZUZXh0YmxvY2socyk/aTpudWxsfX1yZXR1cm4gbnVsbH1uZXcgUGx1Z2luS2V5KCJmaXgtdGFibGVzIiksdG9nZ2xlSGVhZGVyKCJyb3ciLHt1c2VEZXByZWNhdGVkTG9naWM6ITB9KSx0b2dnbGVIZWFkZXIoImNvbHVtbiIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pLHRvZ2dsZUhlYWRlcigiY2VsbCIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pLGtleWRvd25IYW5kbGVyKHtBcnJvd0xlZnQ6YXJyb3coImhvcml6IiwtMSksQXJyb3dSaWdodDphcnJvdygiaG9yaXoiLDEpLEFycm93VXA6YXJyb3coInZlcnQiLC0xKSxBcnJvd0Rvd246YXJyb3coInZlcnQiLDEpLCJTaGlmdC1BcnJvd0xlZnQiOnNoaWZ0QXJyb3coImhvcml6IiwtMSksIlNoaWZ0LUFycm93UmlnaHQiOnNoaWZ0QXJyb3coImhvcml6IiwxKSwiU2hpZnQtQXJyb3dVcCI6c2hpZnRBcnJvdygidmVydCIsLTEpLCJTaGlmdC1BcnJvd0Rvd24iOnNoaWZ0QXJyb3coInZlcnQiLDEpLEJhY2tzcGFjZTpkZWxldGVDZWxsU2VsZWN0aW9uLCJNb2QtQmFja3NwYWNlIjpkZWxldGVDZWxsU2VsZWN0aW9uLERlbGV0ZTpkZWxldGVDZWxsU2VsZWN0aW9uLCJNb2QtRGVsZXRlIjpkZWxldGVDZWxsU2VsZWN0aW9ufSksbmV3IFBsdWdpbktleSgidGFibGVDb2x1bW5SZXNpemluZyIpO3ZhciBMcz1jbGFzc3tjb25zdHJ1Y3Rvcih7ZWRpdG9yOmUsZWxlbWVudDp0LHZpZXc6bixwbHVnaW5LZXk6cj0iYnViYmxlTWVudSIsdXBkYXRlRGVsYXk6bz0yNTAscmVzaXplRGVsYXk6aT02MCxzaG91bGRTaG93OnMsYXBwZW5kVG86bCxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6YSxvcHRpb25zOmN9KXt2YXIgZDt0aGlzLnByZXZlbnRIaWRlPSExLHRoaXMuaXNWaXNpYmxlPSExLHRoaXMuc2Nyb2xsVGFyZ2V0PXdpbmRvdyx0aGlzLmZsb2F0aW5nVUlPcHRpb25zPXtzdHJhdGVneToiYWJzb2x1dGUiLHBsYWNlbWVudDoidG9wIixvZmZzZXQ6OCxmbGlwOnt9LHNoaWZ0Ont9LGFycm93OiExLHNpemU6ITEsYXV0b1BsYWNlbWVudDohMSxoaWRlOiExLGlubGluZTohMSxvblNob3c6dm9pZCAwLG9uSGlkZTp2b2lkIDAsb25VcGRhdGU6dm9pZCAwLG9uRGVzdHJveTp2b2lkIDB9LHRoaXMuc2hvdWxkU2hvdz0oe3ZpZXc6ZSxzdGF0ZTp0LGZyb206bix0bzpyfSk9Pntjb25zdHtkb2M6byxzZWxlY3Rpb246aX09dCx7ZW1wdHk6c309aSxsPSFvLnRleHRCZXR3ZWVuKG4scikubGVuZ3RoJiZpc1RleHRTZWxlY3Rpb24odC5zZWxlY3Rpb24pLGE9dGhpcy5lbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO3JldHVybiEoIWUuaGFzRm9jdXMoKSYmIWF8fHN8fGx8fCF0aGlzLmVkaXRvci5pc0VkaXRhYmxlKX0sdGhpcy5tb3VzZWRvd25IYW5kbGVyPSgpPT57dGhpcy5wcmV2ZW50SGlkZT0hMH0sdGhpcy5kcmFnc3RhcnRIYW5kbGVyPSgpPT57dGhpcy5oaWRlKCl9LHRoaXMucmVzaXplSGFuZGxlcj0oKT0+e3RoaXMucmVzaXplRGVib3VuY2VUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplRGVib3VuY2VUaW1lciksdGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy51cGRhdGVQb3NpdGlvbigpfSx0aGlzLnJlc2l6ZURlbGF5KX0sdGhpcy5mb2N1c0hhbmRsZXI9KCk9PntzZXRUaW1lb3V0KCgpPT50aGlzLnVwZGF0ZSh0aGlzLmVkaXRvci52aWV3KSl9LHRoaXMuYmx1ckhhbmRsZXI9KHtldmVudDplfSk9Pnt2YXIgdDt0aGlzLmVkaXRvci5pc0Rlc3Ryb3llZD90aGlzLmRlc3Ryb3koKTp0aGlzLnByZXZlbnRIaWRlP3RoaXMucHJldmVudEhpZGU9ITE6KG51bGw9PWU/dm9pZCAwOmUucmVsYXRlZFRhcmdldCkmJihudWxsPT0odD10aGlzLmVsZW1lbnQucGFyZW50Tm9kZSk/dm9pZCAwOnQuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSl8fChudWxsPT1lP3ZvaWQgMDplLnJlbGF0ZWRUYXJnZXQpIT09dGhpcy5lZGl0b3Iudmlldy5kb20mJnRoaXMuaGlkZSgpfSx0aGlzLmhhbmRsZURlYm91bmNlZFVwZGF0ZT0oZSx0KT0+e2NvbnN0IG49IShudWxsPT10P3ZvaWQgMDp0LnNlbGVjdGlvbi5lcShlLnN0YXRlLnNlbGVjdGlvbikpLHI9IShudWxsPT10P3ZvaWQgMDp0LmRvYy5lcShlLnN0YXRlLmRvYykpOyhufHxyKSYmKHRoaXMudXBkYXRlRGVib3VuY2VUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlRGVib3VuY2VUaW1lciksdGhpcy51cGRhdGVEZWJvdW5jZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy51cGRhdGVIYW5kbGVyKGUsbixyLHQpfSx0aGlzLnVwZGF0ZURlbGF5KSl9LHRoaXMudXBkYXRlSGFuZGxlcj0oZSx0LG4scik9Pntjb25zdHtjb21wb3Npbmc6b309ZTtpZihvfHwhdCYmIW4pcmV0dXJuO3RoaXMuZ2V0U2hvdWxkU2hvdyhyKT8odGhpcy5zaG93KCksdGhpcy51cGRhdGVQb3NpdGlvbigpKTp0aGlzLmhpZGUoKX0sdGhpcy50cmFuc2FjdGlvbkhhbmRsZXI9KHt0cmFuc2FjdGlvbjplfSk9Pntjb25zdCB0PWUuZ2V0TWV0YSh0aGlzLnBsdWdpbktleSk7InVwZGF0ZVBvc2l0aW9uIj09PXQ/dGhpcy51cGRhdGVQb3NpdGlvbigpOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmInVwZGF0ZU9wdGlvbnMiPT09dC50eXBlP3RoaXMudXBkYXRlT3B0aW9ucyh0Lm9wdGlvbnMpOiJoaWRlIj09PXQ/dGhpcy5oaWRlKCk6InNob3ciPT09dCYmKHRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLnNob3coKSl9LHRoaXMuZWRpdG9yPWUsdGhpcy5lbGVtZW50PXQsdGhpcy52aWV3PW4sdGhpcy5wbHVnaW5LZXk9cix0aGlzLnVwZGF0ZURlbGF5PW8sdGhpcy5yZXNpemVEZWxheT1pLHRoaXMuYXBwZW5kVG89bCx0aGlzLnNjcm9sbFRhcmdldD1udWxsIT0oZD1udWxsPT1jP3ZvaWQgMDpjLnNjcm9sbFRhcmdldCk/ZDp3aW5kb3csdGhpcy5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ9YSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zPXsuLi50aGlzLmZsb2F0aW5nVUlPcHRpb25zLC4uLmN9LHRoaXMuZWxlbWVudC50YWJJbmRleD0wLHMmJih0aGlzLnNob3VsZFNob3c9cyksdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5tb3VzZWRvd25IYW5kbGVyLHtjYXB0dXJlOiEwfSksdGhpcy52aWV3LmRvbS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuZHJhZ3N0YXJ0SGFuZGxlciksdGhpcy5lZGl0b3Iub24oImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub24oImJsdXIiLHRoaXMuYmx1ckhhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJ0cmFuc2FjdGlvbiIsdGhpcy50cmFuc2FjdGlvbkhhbmRsZXIpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMudXBkYXRlKG4sbi5zdGF0ZSksdGhpcy5nZXRTaG91bGRTaG93KCkmJih0aGlzLnNob3coKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpfWdldCBtaWRkbGV3YXJlcygpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuZmxpcCYmZS5wdXNoKGZsaXAoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuZmxpcDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0JiZlLnB1c2goc2hpZnQoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdD90aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0JiZlLnB1c2gob2Zmc2V0KCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0P3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXJyb3cmJmUucHVzaChhcnJvdyQxKHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXJyb3cpKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemUmJmUucHVzaChzaXplKCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZT90aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemU6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50JiZlLnB1c2goYXV0b1BsYWNlbWVudCgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQ/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaGlkZSYmZS5wdXNoKGhpZGUoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaGlkZTp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZSYmZS5wdXNoKGlubGluZSgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZT90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZTp2b2lkIDApKSxlfWdldCB2aXJ0dWFsRWxlbWVudCgpe3ZhciBlLHQsbjtjb25zdHtzZWxlY3Rpb246cn09dGhpcy5lZGl0b3Iuc3RhdGUsbz1udWxsPT0oZT10aGlzLmdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudCk/dm9pZCAwOmUuY2FsbCh0aGlzKTtpZihvKXJldHVybiBvO2lmKCEobnVsbD09KG49bnVsbD09KHQ9dGhpcy52aWV3KT92b2lkIDA6dC5kb20pP3ZvaWQgMDpuLnBhcmVudE5vZGUpKXJldHVybjtjb25zdCBpPXBvc1RvRE9NUmVjdCh0aGlzLnZpZXcsci5mcm9tLHIudG8pO2xldCBzPXtnZXRCb3VuZGluZ0NsaWVudFJlY3Q6KCk9PmksZ2V0Q2xpZW50UmVjdHM6KCk9PltpXX07aWYociBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pe2xldCBlPXRoaXMudmlldy5ub2RlRE9NKHIuZnJvbSk7Y29uc3QgdD1lLmRhdGFzZXQubm9kZVZpZXdXcmFwcGVyP2U6ZS5xdWVyeVNlbGVjdG9yKCJbZGF0YS1ub2RlLXZpZXctd3JhcHBlcl0iKTt0JiYoZT10KSxlJiYocz17Z2V0Qm91bmRpbmdDbGllbnRSZWN0OigpPT5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGdldENsaWVudFJlY3RzOigpPT5bZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKV19KX1pZihyIGluc3RhbmNlb2YgSXMpe2NvbnN0eyRhbmNob3JDZWxsOmUsJGhlYWRDZWxsOnR9PXIsbj1lP2UucG9zOnQucG9zLG89dD90LnBvczplLnBvcyxpPXRoaXMudmlldy5ub2RlRE9NKG4pLGw9dGhpcy52aWV3Lm5vZGVET00obyk7aWYoIWl8fCFsKXJldHVybjtjb25zdCBhPWk9PT1sP2kuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6ZnVuY3Rpb24oZSx0KXtjb25zdCBuPU1hdGgubWluKGUudG9wLHQudG9wKSxyPU1hdGgubWF4KGUuYm90dG9tLHQuYm90dG9tKSxvPU1hdGgubWluKGUubGVmdCx0LmxlZnQpLGk9TWF0aC5tYXgoZS5yaWdodCx0LnJpZ2h0KTtyZXR1cm4gbmV3IERPTVJlY3QobyxuLGktbyxyLW4pfShpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3M9e2dldEJvdW5kaW5nQ2xpZW50UmVjdDooKT0+YSxnZXRDbGllbnRSZWN0czooKT0+W2FdfX1yZXR1cm4gc311cGRhdGVQb3NpdGlvbigpe2lmKCF0aGlzLmlzVmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLnZpcnR1YWxFbGVtZW50O2UmJmNvbXB1dGVQb3NpdGlvbihlLHRoaXMuZWxlbWVudCx7cGxhY2VtZW50OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMucGxhY2VtZW50LHN0cmF0ZWd5OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc3RyYXRlZ3ksbWlkZGxld2FyZTp0aGlzLm1pZGRsZXdhcmVzfSkudGhlbigoe3g6ZSx5OnQsc3RyYXRlZ3k6bixtaWRkbGV3YXJlRGF0YTpyfSk9Pnt2YXIgbyxpO3RoaXMuaXNWaXNpYmxlJiYhdGhpcy5lZGl0b3IuaXNEZXN0cm95ZWQmJnRoaXMuZWxlbWVudC5pc0Nvbm5lY3RlZCYmKChudWxsPT0obz1yLmhpZGUpP3ZvaWQgMDpvLnJlZmVyZW5jZUhpZGRlbil8fChudWxsPT0oaT1yLmhpZGUpP3ZvaWQgMDppLmVzY2FwZWQpP3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iOih0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPSJtYXgtY29udGVudCIsdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uPW4sdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQ9YCR7ZX1weGAsdGhpcy5lbGVtZW50LnN0eWxlLnRvcD1gJHt0fXB4YCx0aGlzLmlzVmlzaWJsZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSgpKSl9KX11cGRhdGUoZSx0KXtjb25zdHtzdGF0ZTpufT1lLHI9bi5zZWxlY3Rpb24uZnJvbSE9PW4uc2VsZWN0aW9uLnRvO2lmKHRoaXMudXBkYXRlRGVsYXk+MCYmcilyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZURlYm91bmNlZFVwZGF0ZShlLHQpO2NvbnN0IG89IShudWxsPT10P3ZvaWQgMDp0LnNlbGVjdGlvbi5lcShlLnN0YXRlLnNlbGVjdGlvbikpLGk9IShudWxsPT10P3ZvaWQgMDp0LmRvYy5lcShlLnN0YXRlLmRvYykpO3RoaXMudXBkYXRlSGFuZGxlcihlLG8saSx0KX1nZXRTaG91bGRTaG93KGUpe3ZhciB0O2NvbnN0e3N0YXRlOm59PXRoaXMudmlldyx7c2VsZWN0aW9uOnJ9PW4se3JhbmdlczpvfT1yLGk9TWF0aC5taW4oLi4uby5tYXAoZT0+ZS4kZnJvbS5wb3MpKSxzPU1hdGgubWF4KC4uLm8ubWFwKGU9PmUuJHRvLnBvcykpO3JldHVybihudWxsPT0odD10aGlzLnNob3VsZFNob3cpP3ZvaWQgMDp0LmNhbGwodGhpcyx7ZWRpdG9yOnRoaXMuZWRpdG9yLGVsZW1lbnQ6dGhpcy5lbGVtZW50LHZpZXc6dGhpcy52aWV3LHN0YXRlOm4sb2xkU3RhdGU6ZSxmcm9tOmksdG86c30pKXx8ITF9c2hvdygpe3ZhciBlO2lmKHRoaXMuaXNWaXNpYmxlKXJldHVybjt0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLm9wYWNpdHk9IjEiO2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuYXBwZW5kVG8/dGhpcy5hcHBlbmRUbygpOnRoaXMuYXBwZW5kVG87bnVsbD09KGU9bnVsbCE9dD90OnRoaXMudmlldy5kb20ucGFyZW50RWxlbWVudCl8fGUuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uU2hvdyYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblNob3coKSx0aGlzLmlzVmlzaWJsZT0hMH1oaWRlKCl7dGhpcy5pc1Zpc2libGUmJih0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLmVsZW1lbnQuc3R5bGUub3BhY2l0eT0iMCIsdGhpcy5lbGVtZW50LnJlbW92ZSgpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25IaWRlJiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uSGlkZSgpLHRoaXMuaXNWaXNpYmxlPSExKX11cGRhdGVPcHRpb25zKGUpe3ZhciB0O2lmKHZvaWQgMCE9PWUudXBkYXRlRGVsYXkmJih0aGlzLnVwZGF0ZURlbGF5PWUudXBkYXRlRGVsYXkpLHZvaWQgMCE9PWUucmVzaXplRGVsYXkmJih0aGlzLnJlc2l6ZURlbGF5PWUucmVzaXplRGVsYXkpLHZvaWQgMCE9PWUuYXBwZW5kVG8mJih0aGlzLmFwcGVuZFRvPWUuYXBwZW5kVG8pLHZvaWQgMCE9PWUuZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50JiYodGhpcy5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ9ZS5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQpLHZvaWQgMCE9PWUuc2hvdWxkU2hvdyYmZS5zaG91bGRTaG93JiYodGhpcy5zaG91bGRTaG93PWUuc2hvdWxkU2hvdyksdm9pZCAwIT09ZS5vcHRpb25zKXtjb25zdCBuPW51bGwhPSh0PWUub3B0aW9ucy5zY3JvbGxUYXJnZXQpP3Q6d2luZG93O24hPT10aGlzLnNjcm9sbFRhcmdldCYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldD1uLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5lLm9wdGlvbnN9fX1kZXN0cm95KCl7dGhpcy5oaWRlKCksdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5tb3VzZWRvd25IYW5kbGVyLHtjYXB0dXJlOiEwfSksdGhpcy52aWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuZHJhZ3N0YXJ0SGFuZGxlciksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJmb2N1cyIsdGhpcy5mb2N1c0hhbmRsZXIpLHRoaXMuZWRpdG9yLm9mZigiYmx1ciIsdGhpcy5ibHVySGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJ0cmFuc2FjdGlvbiIsdGhpcy50cmFuc2FjdGlvbkhhbmRsZXIpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25EZXN0cm95JiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uRGVzdHJveSgpfX0senM9TCh7bmFtZToiQnViYmxlTWVudSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntwbHVnaW5LZXk6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxlZGl0b3I6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSx1cGRhdGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDp2b2lkIDB9LHJlc2l6ZURlbGF5Ont0eXBlOk51bWJlcixkZWZhdWx0OnZvaWQgMH0sb3B0aW9uczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYXBwZW5kVG86e3R5cGU6W09iamVjdCxGdW5jdGlvbl0sZGVmYXVsdDp2b2lkIDB9LHNob3VsZFNob3c6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDp2b2lkIDB9fSxzZXR1cChlLHtzbG90czp0LGF0dHJzOm59KXt2YXIgcjtjb25zdCBvPV8obnVsbCksaT1udWxsIT0ocj1lLnBsdWdpbktleSk/cjpuZXcgUGx1Z2luS2V5KCJidWJibGVNZW51Iik7cmV0dXJuIFAoKCk9Pntjb25zdHtlZGl0b3I6dCxvcHRpb25zOm4scmVzaXplRGVsYXk6cixhcHBlbmRUbzpzLHNob3VsZFNob3c6bCxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6YSx1cGRhdGVEZWxheTpjfT1lLGQ9by52YWx1ZTtkJiYoZC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixkLnJlbW92ZSgpLEYoKCk9Pnt0LnJlZ2lzdGVyUGx1Z2luKChlPT5uZXcgUGx1Z2luKHtrZXk6InN0cmluZyI9PXR5cGVvZiBlLnBsdWdpbktleT9uZXcgUGx1Z2luS2V5KGUucGx1Z2luS2V5KTplLnBsdWdpbktleSx2aWV3OnQ9Pm5ldyBMcyh7dmlldzp0LC4uLmV9KX0pKSh7ZWRpdG9yOnQsZWxlbWVudDpkLG9wdGlvbnM6bixwbHVnaW5LZXk6aSxyZXNpemVEZWxheTpyLGFwcGVuZFRvOnMsc2hvdWxkU2hvdzpsLGdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudDphLHVwZGF0ZURlbGF5OmN9KSl9KSl9KSwkKCgpPT57Y29uc3R7ZWRpdG9yOnR9PWU7dC51bnJlZ2lzdGVyUGx1Z2luKGkpfSksKCk9Pnt2YXIgZTtyZXR1cm4geigiZGl2Iix7cmVmOm8sLi4ubn0sbnVsbD09KGU9dC5kZWZhdWx0KT92b2lkIDA6ZS5jYWxsKHQpKX19fSksQnM9Y2xhc3N7Y29uc3RydWN0b3Ioe2VkaXRvcjplLGVsZW1lbnQ6dCx2aWV3Om4scGx1Z2luS2V5OnI9ImZsb2F0aW5nTWVudSIsdXBkYXRlRGVsYXk6bz0yNTAscmVzaXplRGVsYXk6aT02MCxvcHRpb25zOnMsYXBwZW5kVG86bCxzaG91bGRTaG93OmF9KXt2YXIgYzt0aGlzLnByZXZlbnRIaWRlPSExLHRoaXMuaXNWaXNpYmxlPSExLHRoaXMuc2Nyb2xsVGFyZ2V0PXdpbmRvdyx0aGlzLnNob3VsZFNob3c9KHt2aWV3OmUsc3RhdGU6dH0pPT57Y29uc3R7c2VsZWN0aW9uOm59PXQseyRhbmNob3I6cixlbXB0eTpvfT1uLGk9MT09PXIuZGVwdGgscz1yLnBhcmVudC5pc1RleHRibG9jayYmIXIucGFyZW50LnR5cGUuc3BlYy5jb2RlJiYhci5wYXJlbnQudGV4dENvbnRlbnQmJjA9PT1yLnBhcmVudC5jaGlsZENvdW50JiYhdGhpcy5nZXRUZXh0Q29udGVudChyLnBhcmVudCk7cmV0dXJuISEoZS5oYXNGb2N1cygpJiZvJiZpJiZzJiZ0aGlzLmVkaXRvci5pc0VkaXRhYmxlKX0sdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17c3RyYXRlZ3k6ImFic29sdXRlIixwbGFjZW1lbnQ6InJpZ2h0IixvZmZzZXQ6OCxmbGlwOnt9LHNoaWZ0Ont9LGFycm93OiExLHNpemU6ITEsYXV0b1BsYWNlbWVudDohMSxoaWRlOiExLGlubGluZTohMX0sdGhpcy51cGRhdGVIYW5kbGVyPShlLHQsbixyKT0+e2NvbnN0e2NvbXBvc2luZzpvfT1lO2lmKG98fCF0JiYhbilyZXR1cm47dGhpcy5nZXRTaG91bGRTaG93KHIpPyh0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5zaG93KCkpOnRoaXMuaGlkZSgpfSx0aGlzLm1vdXNlZG93bkhhbmRsZXI9KCk9Pnt0aGlzLnByZXZlbnRIaWRlPSEwfSx0aGlzLmZvY3VzSGFuZGxlcj0oKT0+e3NldFRpbWVvdXQoKCk9PnRoaXMudXBkYXRlKHRoaXMuZWRpdG9yLnZpZXcpKX0sdGhpcy5ibHVySGFuZGxlcj0oe2V2ZW50OmV9KT0+e3ZhciB0O3RoaXMucHJldmVudEhpZGU/dGhpcy5wcmV2ZW50SGlkZT0hMToobnVsbD09ZT92b2lkIDA6ZS5yZWxhdGVkVGFyZ2V0KSYmKG51bGw9PSh0PXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKT92b2lkIDA6dC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpKXx8KG51bGw9PWU/dm9pZCAwOmUucmVsYXRlZFRhcmdldCkhPT10aGlzLmVkaXRvci52aWV3LmRvbSYmdGhpcy5oaWRlKCl9LHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyPSh7dHJhbnNhY3Rpb246ZX0pPT57Y29uc3QgdD1lLmdldE1ldGEodGhpcy5wbHVnaW5LZXkpOyJ1cGRhdGVQb3NpdGlvbiI9PT10P3RoaXMudXBkYXRlUG9zaXRpb24oKTp0JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJ1cGRhdGVPcHRpb25zIj09PXQudHlwZT90aGlzLnVwZGF0ZU9wdGlvbnModC5vcHRpb25zKToiaGlkZSI9PT10P3RoaXMuaGlkZSgpOiJzaG93Ij09PXQmJih0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5zaG93KCkpfSx0aGlzLnJlc2l6ZUhhbmRsZXI9KCk9Pnt0aGlzLnJlc2l6ZURlYm91bmNlVGltZXImJmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZURlYm91bmNlVGltZXIpLHRoaXMucmVzaXplRGVib3VuY2VUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMudXBkYXRlUG9zaXRpb24oKX0sdGhpcy5yZXNpemVEZWxheSl9LHRoaXMuZWRpdG9yPWUsdGhpcy5lbGVtZW50PXQsdGhpcy52aWV3PW4sdGhpcy5wbHVnaW5LZXk9cix0aGlzLnVwZGF0ZURlbGF5PW8sdGhpcy5yZXNpemVEZWxheT1pLHRoaXMuYXBwZW5kVG89bCx0aGlzLnNjcm9sbFRhcmdldD1udWxsIT0oYz1udWxsPT1zP3ZvaWQgMDpzLnNjcm9sbFRhcmdldCk/Yzp3aW5kb3csdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5zfSx0aGlzLmVsZW1lbnQudGFiSW5kZXg9MCxhJiYodGhpcy5zaG91bGRTaG93PWEpLHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMubW91c2Vkb3duSGFuZGxlcix7Y2FwdHVyZTohMH0pLHRoaXMuZWRpdG9yLm9uKCJmb2N1cyIsdGhpcy5mb2N1c0hhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vbigidHJhbnNhY3Rpb24iLHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnVwZGF0ZShuLG4uc3RhdGUpLHRoaXMuZ2V0U2hvdWxkU2hvdygpJiYodGhpcy5zaG93KCksdGhpcy51cGRhdGVQb3NpdGlvbigpKX1nZXRUZXh0Q29udGVudChlKXtyZXR1cm4gZ2V0VGV4dChlLHt0ZXh0U2VyaWFsaXplcnM6Z2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYSh0aGlzLmVkaXRvci5zY2hlbWEpfSl9Z2V0IG1pZGRsZXdhcmVzKCl7Y29uc3QgZT1bXTtyZXR1cm4gdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwJiZlLnB1c2goZmxpcCgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXA/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQmJmUucHVzaChzaGlmdCgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0P3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQmJmUucHVzaChvZmZzZXQoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQ/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hcnJvdyYmZS5wdXNoKGFycm93JDEodGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hcnJvdykpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZSYmZS5wdXNoKHNpemUoImJvb2xlYW4iIT10eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaXplP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZTp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQmJmUucHVzaChhdXRvUGxhY2VtZW50KCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXV0b1BsYWNlbWVudD90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlJiZlLnB1c2goaGlkZSgiYm9vbGVhbiIhPXR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGU/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lJiZlLnB1c2goaW5saW5lKCJib29sZWFuIiE9dHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lOnZvaWQgMCkpLGV9Z2V0U2hvdWxkU2hvdyhlKXt2YXIgdDtjb25zdHtzdGF0ZTpufT10aGlzLnZpZXcse3NlbGVjdGlvbjpyfT1uLHtyYW5nZXM6b309cixpPU1hdGgubWluKC4uLm8ubWFwKGU9PmUuJGZyb20ucG9zKSkscz1NYXRoLm1heCguLi5vLm1hcChlPT5lLiR0by5wb3MpKTtyZXR1cm4gbnVsbD09KHQ9dGhpcy5zaG91bGRTaG93KT92b2lkIDA6dC5jYWxsKHRoaXMse2VkaXRvcjp0aGlzLmVkaXRvcix2aWV3OnRoaXMudmlldyxzdGF0ZTpuLG9sZFN0YXRlOmUsZnJvbTppLHRvOnN9KX11cGRhdGVPcHRpb25zKGUpe3ZhciB0O2lmKHZvaWQgMCE9PWUudXBkYXRlRGVsYXkmJih0aGlzLnVwZGF0ZURlbGF5PWUudXBkYXRlRGVsYXkpLHZvaWQgMCE9PWUucmVzaXplRGVsYXkmJih0aGlzLnJlc2l6ZURlbGF5PWUucmVzaXplRGVsYXkpLHZvaWQgMCE9PWUuYXBwZW5kVG8mJih0aGlzLmFwcGVuZFRvPWUuYXBwZW5kVG8pLHZvaWQgMCE9PWUuc2hvdWxkU2hvdyYmZS5zaG91bGRTaG93JiYodGhpcy5zaG91bGRTaG93PWUuc2hvdWxkU2hvdyksdm9pZCAwIT09ZS5vcHRpb25zKXtjb25zdCBuPW51bGwhPSh0PWUub3B0aW9ucy5zY3JvbGxUYXJnZXQpP3Q6d2luZG93O24hPT10aGlzLnNjcm9sbFRhcmdldCYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldD1uLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5lLm9wdGlvbnN9fX11cGRhdGVQb3NpdGlvbigpe2NvbnN0e3NlbGVjdGlvbjplfT10aGlzLmVkaXRvci5zdGF0ZSx0PXBvc1RvRE9NUmVjdCh0aGlzLnZpZXcsZS5mcm9tLGUudG8pO2NvbXB1dGVQb3NpdGlvbih7Z2V0Qm91bmRpbmdDbGllbnRSZWN0OigpPT50LGdldENsaWVudFJlY3RzOigpPT5bdF19LHRoaXMuZWxlbWVudCx7cGxhY2VtZW50OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMucGxhY2VtZW50LHN0cmF0ZWd5OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc3RyYXRlZ3ksbWlkZGxld2FyZTp0aGlzLm1pZGRsZXdhcmVzfSkudGhlbigoe3g6ZSx5OnQsc3RyYXRlZ3k6bixtaWRkbGV3YXJlRGF0YTpyfSk9Pnt2YXIgbyxpOyhudWxsPT0obz1yLmhpZGUpP3ZvaWQgMDpvLnJlZmVyZW5jZUhpZGRlbil8fChudWxsPT0oaT1yLmhpZGUpP3ZvaWQgMDppLmVzY2FwZWQpP3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iOih0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPSJtYXgtY29udGVudCIsdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uPW4sdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQ9YCR7ZX1weGAsdGhpcy5lbGVtZW50LnN0eWxlLnRvcD1gJHt0fXB4YCx0aGlzLmlzVmlzaWJsZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSgpKX0pfXVwZGF0ZShlLHQpe2NvbnN0IG49IShudWxsPT10P3ZvaWQgMDp0LnNlbGVjdGlvbi5lcShlLnN0YXRlLnNlbGVjdGlvbikpLHI9IShudWxsPT10P3ZvaWQgMDp0LmRvYy5lcShlLnN0YXRlLmRvYykpO3RoaXMudXBkYXRlSGFuZGxlcihlLG4scix0KX1zaG93KCl7dmFyIGU7aWYodGhpcy5pc1Zpc2libGUpcmV0dXJuO3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLmVsZW1lbnQuc3R5bGUub3BhY2l0eT0iMSI7Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5hcHBlbmRUbz90aGlzLmFwcGVuZFRvKCk6dGhpcy5hcHBlbmRUbztudWxsPT0oZT1udWxsIT10P3Q6dGhpcy52aWV3LmRvbS5wYXJlbnRFbGVtZW50KXx8ZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25TaG93JiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uU2hvdygpLHRoaXMuaXNWaXNpYmxlPSEwfWhpZGUoKXt0aGlzLmlzVmlzaWJsZSYmKHRoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuZWxlbWVudC5zdHlsZS5vcGFjaXR5PSIwIix0aGlzLmVsZW1lbnQucmVtb3ZlKCksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkhpZGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25IaWRlKCksdGhpcy5pc1Zpc2libGU9ITEpfWRlc3Ryb3koKXt0aGlzLmhpZGUoKSx0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm1vdXNlZG93bkhhbmRsZXIse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoInRyYW5zYWN0aW9uIix0aGlzLnRyYW5zYWN0aW9uSGFuZGxlciksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkRlc3Ryb3kmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25EZXN0cm95KCl9fSxGcz1MKHtuYW1lOiJGbG9hdGluZ01lbnUiLGluaGVyaXRBdHRyczohMSxwcm9wczp7cGx1Z2luS2V5Ont0eXBlOm51bGwsZGVmYXVsdDp2b2lkIDB9LGVkaXRvcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LHVwZGF0ZURlbGF5Ont0eXBlOk51bWJlcixkZWZhdWx0OnZvaWQgMH0scmVzaXplRGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6dm9pZCAwfSxvcHRpb25zOnt0eXBlOk9iamVjdCxkZWZhdWx0OigpPT4oe30pfSxhcHBlbmRUbzp7dHlwZTpbT2JqZWN0LEZ1bmN0aW9uXSxkZWZhdWx0OnZvaWQgMH0sc2hvdWxkU2hvdzp7dHlwZTpGdW5jdGlvbixkZWZhdWx0Om51bGx9fSxzZXR1cChlLHtzbG90czp0LGF0dHJzOm59KXt2YXIgcjtjb25zdCBvPV8obnVsbCksaT1udWxsIT0ocj1lLnBsdWdpbktleSk/cjpuZXcgUGx1Z2luS2V5KCJmbG9hdGluZ01lbnUiKTtyZXR1cm4gUCgoKT0+e2NvbnN0e2VkaXRvcjp0LHVwZGF0ZURlbGF5Om4scmVzaXplRGVsYXk6cixvcHRpb25zOnMsYXBwZW5kVG86bCxzaG91bGRTaG93OmF9PWUsYz1vLnZhbHVlO2MmJihjLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsYy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGMucmVtb3ZlKCksdC5yZWdpc3RlclBsdWdpbigoZT0+bmV3IFBsdWdpbih7a2V5OiJzdHJpbmciPT10eXBlb2YgZS5wbHVnaW5LZXk/bmV3IFBsdWdpbktleShlLnBsdWdpbktleSk6ZS5wbHVnaW5LZXksdmlldzp0PT5uZXcgQnMoe3ZpZXc6dCwuLi5lfSl9KSkoe3BsdWdpbktleTppLGVkaXRvcjp0LGVsZW1lbnQ6Yyx1cGRhdGVEZWxheTpuLHJlc2l6ZURlbGF5OnIsb3B0aW9uczpzLGFwcGVuZFRvOmwsc2hvdWxkU2hvdzphfSkpKX0pLCQoKCk9Pntjb25zdHtlZGl0b3I6dH09ZTt0LnVucmVnaXN0ZXJQbHVnaW4oaSl9KSwoKT0+e3ZhciBlO3JldHVybiB6KCJkaXYiLHtyZWY6bywuLi5ufSxudWxsPT0oZT10LmRlZmF1bHQpP3ZvaWQgMDplLmNhbGwodCkpfX19KTtmdW5jdGlvbiBpc05vZGVUeXBlU2VsZWN0ZWQoZSx0KXtpZighZSlyZXR1cm4hMTtjb25zdHtzZWxlY3Rpb246bn09ZS5zdGF0ZSx7JGZyb206cix0bzpvfT1uO3JldHVybiB0LnNvbWUodD0+ZS5zdGF0ZS5kb2Mubm9kZXNCZXR3ZWVuKHIucG9zLG8sZT0+ZS50eXBlLm5hbWU9PT10KSl9ZnVuY3Rpb24gaXNFeHRlbnNpb25BdmFpbGFibGUoZSx0KXtyZXR1cm4hIWUmJmUuZXh0ZW5zaW9uTWFuYWdlci5leHRlbnNpb25zLnNvbWUoZT0+ZS5uYW1lPT09dCl9ZnVuY3Rpb24gY3JlYXRlVG9nZ2xlSGFuZGxlcihlKXtjb25zdCB0PWB0b2dnbGUke2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtlLnNsaWNlKDEpfWA7cmV0dXJue2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKVt0XSgpLGV4ZWN1dGU6ZT0+ZS5jaGFpbigpLmZvY3VzKClbdF0oKSxpc0FjdGl2ZTp0PT50LmlzQWN0aXZlKGUpLGlzRGlzYWJsZWQ6ZT0+aXNOb2RlVHlwZVNlbGVjdGVkKGUsWyJpbWFnZSJdKXx8ZS5pc0FjdGl2ZSgiY29kZSIpfX1mdW5jdGlvbiBjcmVhdGVTZXRIYW5kbGVyKGUpe2NvbnN0IHQ9YHNldCR7ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke2Uuc2xpY2UoMSl9YDtyZXR1cm57Y2FuRXhlY3V0ZTplPT5lLmNhbigpW3RdKCksZXhlY3V0ZTplPT5lLmNoYWluKCkuZm9jdXMoKVt0XSgpLGlzQWN0aXZlOnQ9PnQuaXNBY3RpdmUoZSksaXNEaXNhYmxlZDplPT5pc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pfHxlLmlzQWN0aXZlKCJjb2RlIil9fWZ1bmN0aW9uIGNyZWF0ZVNpbXBsZUhhbmRsZXIoZSl7cmV0dXJue2NhbkV4ZWN1dGU6dD0+dC5jYW4oKVtlXSgpLGV4ZWN1dGU6dD0+dC5jaGFpbigpW2VdKCksaXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBjcmVhdGVMaXN0SGFuZGxlcihlKXtjb25zdCB0PXtidWxsZXRMaXN0OiJ0b2dnbGVCdWxsZXRMaXN0IixvcmRlcmVkTGlzdDoidG9nZ2xlT3JkZXJlZExpc3QiLHRhc2tMaXN0OiJ0b2dnbGVUYXNrTGlzdCJ9W2VdLG49InRhc2tMaXN0Ij09PWU/InRhc2tJdGVtIjoibGlzdEl0ZW0iLHI9WyJidWxsZXRMaXN0Iiwib3JkZXJlZExpc3QiLCJ0YXNrTGlzdCJdO3JldHVybntjYW5FeGVjdXRlOmU9PmUuY2FuKClbdF0oKXx8ZS5pc0FjdGl2ZSgibGlzdEl0ZW0iKXx8ci5zb21lKHQ9PmlzRXh0ZW5zaW9uQXZhaWxhYmxlKGUsdCkmJmUuaXNBY3RpdmUodCkpLGV4ZWN1dGU6bz0+e2NvbnN0e3N0YXRlOml9PW8se3NlbGVjdGlvbjpzfT1pO2xldCBsPW8uY2hhaW4oKS5mb2N1cygpO2lmKHMubm9kZSl7Y29uc3QgZT1zLm5vZGUsdD1lLmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQsbj1lLmxhc3RDaGlsZD8ubGFzdENoaWxkLHI9dD9zLmZyb20rdC5ub2RlU2l6ZTpzLmZyb20rMSxvPW4/cy50by1uLm5vZGVTaXplOnMudG8tMTtsPWwuc2V0VGV4dFNlbGVjdGlvbih7ZnJvbTpyLHRvOm99KS5jbGVhck5vZGVzKCl9aWYoby5pc0FjdGl2ZShlKSl7bGV0IGU9bC5saWZ0TGlzdEl0ZW0obik7Zm9yKGNvbnN0IHQgb2Ygcilpc0V4dGVuc2lvbkF2YWlsYWJsZShvLHQpJiYoZT1lLmxpZnQodCkpO3JldHVybiBlLnNlbGVjdFRleHRibG9ja0VuZCgpfWlmKHIuc29tZShlPT5pc0V4dGVuc2lvbkF2YWlsYWJsZShvLGUpJiZvLmlzQWN0aXZlKGUpKSl7Y29uc3QgZT1vLmlzQWN0aXZlKCJ0YXNrTGlzdCIpPyJ0YXNrSXRlbSI6Imxpc3RJdGVtIjtsZXQgbj1sLmxpZnRMaXN0SXRlbShlKTtmb3IoY29uc3QgZSBvZiByKWlzRXh0ZW5zaW9uQXZhaWxhYmxlKG8sZSkmJihuPW4ubGlmdChlKSk7cmV0dXJuIG5bdF0oKS5zZWxlY3RUZXh0YmxvY2tFbmQoKX1yZXR1cm4gbFt0XSgpLnNlbGVjdFRleHRibG9ja0VuZCgpfSxpc0FjdGl2ZTp0PT50LmlzQWN0aXZlKGUpLGlzRGlzYWJsZWQ6dD0+IWlzRXh0ZW5zaW9uQXZhaWxhYmxlKHQsZSl8fChpc05vZGVUeXBlU2VsZWN0ZWQodCxbImltYWdlIl0pfHx0LmlzQWN0aXZlKCJjb2RlIikpfX1mdW5jdGlvbiBjcmVhdGVNb3ZlSGFuZGxlcihlKXtyZXR1cm57Y2FuRXhlY3V0ZToodCxuKT0+e2lmKG51bGw9PW4/LnBvcylyZXR1cm4hMTtpZighdC5zdGF0ZS5kb2Mubm9kZUF0KG4ucG9zKSlyZXR1cm4hMTtjb25zdCByPXQuc3RhdGUuZG9jLnJlc29sdmUobi5wb3MpLG89ci5wYXJlbnQsaT1yLmluZGV4KCk7cmV0dXJuInVwIj09PWU/aT4wOmk8by5jaGlsZENvdW50LTF9LGV4ZWN1dGU6KHQsbik9PntpZihudWxsPT1uPy5wb3MpcmV0dXJuIHQuY2hhaW4oKTtjb25zdCByPXQuc3RhdGUuZG9jLm5vZGVBdChuLnBvcyk7aWYoIXIpcmV0dXJuIHQuY2hhaW4oKTtjb25zdCBvPXQuc3RhdGUuZG9jLnJlc29sdmUobi5wb3MpLGk9by5wYXJlbnQscz1vLmluZGV4KCk7aWYoInVwIj09PWUmJnM+MCl7Y29uc3QgZT1pLmNoaWxkKHMtMSksbz1uLnBvcy1lLm5vZGVTaXplO3JldHVybiB0LmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTpuLnBvcyx0bzpuLnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KG8sci50b0pTT04oKSl9aWYoImRvd24iPT09ZSYmczxpLmNoaWxkQ291bnQtMSl7Y29uc3QgZT1pLmNoaWxkKHMrMSksbz1uLnBvcytlLm5vZGVTaXplO3JldHVybiB0LmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTpuLnBvcyx0bzpuLnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KG8sci50b0pTT04oKSl9cmV0dXJuIHQuY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBjcmVhdGVIYW5kbGVycygpe3JldHVybnttYXJrOntjYW5FeGVjdXRlOihlLHQpPT5lLmNhbigpLnRvZ2dsZU1hcmsodC5tYXJrKSxleGVjdXRlOihlLHQpPT5lLmNoYWluKCkuZm9jdXMoKS50b2dnbGVNYXJrKHQubWFyayksaXNBY3RpdmU6KGUsdCk9PmUuaXNBY3RpdmUodC5tYXJrKSxpc0Rpc2FibGVkOihlLHQpPT4hZnVuY3Rpb24oZSx0KXtpZighdD8uc2NoZW1hKXJldHVybiExO2NvbnN0IG49InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5uYW1lO3JldHVybiB2b2lkIDAhPT10LnNjaGVtYS5zcGVjLm1hcmtzLmdldChuKX0odC5tYXJrLGUpfHxpc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pfSx0ZXh0QWxpZ246e2NhbkV4ZWN1dGU6KGUsdCk9PmUuY2FuKCkuc2V0VGV4dEFsaWduKHQuYWxpZ24pLGV4ZWN1dGU6KGUsdCk9PmUuY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbih0LmFsaWduKSxpc0FjdGl2ZTooZSx0KT0+ZS5pc0FjdGl2ZSh7dGV4dEFsaWduOnQuYWxpZ259KSxpc0Rpc2FibGVkOmU9PiFpc0V4dGVuc2lvbkF2YWlsYWJsZShlLCJ0ZXh0QWxpZ24iKXx8aXNOb2RlVHlwZVNlbGVjdGVkKGUsWyJpbWFnZSIsImhvcml6b250YWxSdWxlIl0pfSxoZWFkaW5nOntjYW5FeGVjdXRlOihlLHQpPT5lLmNhbigpLnRvZ2dsZUhlYWRpbmcoe2xldmVsOnQubGV2ZWx9KSxleGVjdXRlOihlLHQpPT5lLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHtsZXZlbDp0LmxldmVsfSksaXNBY3RpdmU6KGUsdCk9PmUuaXNBY3RpdmUoImhlYWRpbmciLHtsZXZlbDp0LmxldmVsfSksaXNEaXNhYmxlZDplPT5pc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pfHxlLmlzQWN0aXZlKCJjb2RlIil9LGxpbms6e2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKS5zZXRMaW5rKHtocmVmOiIifSl8fGUuY2FuKCkudW5zZXRMaW5rKCksZXhlY3V0ZTooZSx0KT0+e2NvbnN0IG49ZS5jaGFpbigpLHI9ZS5nZXRBdHRyaWJ1dGVzKCJsaW5rIikuaHJlZixvPWUuaXNBY3RpdmUoImNvZGUiKTtpZihyKXJldHVybiBuLmZvY3VzKCkudW5zZXRMaW5rKCk7Y29uc3QgaT10Py5ocmVmfHxwcm9tcHQoIkVudGVyIHRoZSBVUkw6Iik7cmV0dXJuIGk/bz9uLmZvY3VzKCkuZXh0ZW5kTWFya1JhbmdlKCJjb2RlIikuc2V0TGluayh7aHJlZjppfSk6bi5mb2N1cygpLnNldExpbmsoe2hyZWY6aX0pOm59LGlzQWN0aXZlOmU9PmUuaXNBY3RpdmUoImxpbmsiKSxpc0Rpc2FibGVkOmU9PntpZighaXNFeHRlbnNpb25BdmFpbGFibGUoZSwibGluayIpfHxpc05vZGVUeXBlU2VsZWN0ZWQoZSxbImltYWdlIl0pKXJldHVybiEwO2NvbnN0e3NlbGVjdGlvbjp0fT1lLnN0YXRlO3JldHVybiB0LmVtcHR5JiYhZS5pc0FjdGl2ZSgibGluayIpfX0saW1hZ2U6e2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKS5zZXRJbWFnZSh7c3JjOiIifSksZXhlY3V0ZTooZSx0KT0+e2NvbnN0IG49ZS5jaGFpbigpLmZvY3VzKCk7aWYodD8uc3JjKXJldHVybiBuLnNldEltYWdlKHtzcmM6dC5zcmN9KTtjb25zdCByPXByb21wdCgiRW50ZXIgdGhlIGltYWdlIFVSTDoiKTtyZXR1cm4gcj9uLnNldEltYWdlKHtzcmM6cn0pOm59LGlzQWN0aXZlOmU9PmUuaXNBY3RpdmUoImltYWdlIiksaXNEaXNhYmxlZDplPT4haXNFeHRlbnNpb25BdmFpbGFibGUoZSwiaW1hZ2UiKX0sYmxvY2txdW90ZTpjcmVhdGVUb2dnbGVIYW5kbGVyKCJibG9ja3F1b3RlIiksYnVsbGV0TGlzdDpjcmVhdGVMaXN0SGFuZGxlcigiYnVsbGV0TGlzdCIpLG9yZGVyZWRMaXN0OmNyZWF0ZUxpc3RIYW5kbGVyKCJvcmRlcmVkTGlzdCIpLHRhc2tMaXN0OmNyZWF0ZUxpc3RIYW5kbGVyKCJ0YXNrTGlzdCIpLGNvZGVCbG9jazpjcmVhdGVUb2dnbGVIYW5kbGVyKCJjb2RlQmxvY2siKSxob3Jpem9udGFsUnVsZTpjcmVhdGVTZXRIYW5kbGVyKCJob3Jpem9udGFsUnVsZSIpLHBhcmFncmFwaDpjcmVhdGVTZXRIYW5kbGVyKCJwYXJhZ3JhcGgiKSx1bmRvOmNyZWF0ZVNpbXBsZUhhbmRsZXIoInVuZG8iKSxyZWRvOmNyZWF0ZVNpbXBsZUhhbmRsZXIoInJlZG8iKSxjbGVhckZvcm1hdHRpbmc6e2NhbkV4ZWN1dGU6KGUsdCk9PntpZihudWxsIT10Py5wb3Mpe3JldHVybiEhZS5zdGF0ZS5kb2Mubm9kZUF0KHQucG9zKX1yZXR1cm4gZS5jYW4oKS5jbGVhck5vZGVzKCl8fGUuY2FuKCkudW5zZXRBbGxNYXJrcygpfSxleGVjdXRlOihlLHQpPT57aWYobnVsbCE9dD8ucG9zKXtjb25zdCBuPWUuc3RhdGUuZG9jLm5vZGVBdCh0LnBvcyk7aWYoIW4pcmV0dXJuIGUuY2hhaW4oKTtjb25zdCByPXQucG9zKzEsbz10LnBvcytuLm5vZGVTaXplLTE7cmV0dXJuIGUuY2hhaW4oKS5mb2N1cygpLnNldFRleHRTZWxlY3Rpb24oe2Zyb206cix0bzpvfSkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX1yZXR1cm4gZS5jaGFpbigpLmZvY3VzKCkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxkdXBsaWNhdGU6e2NhbkV4ZWN1dGU6KGUsdCk9PntpZihudWxsPT10Py5wb3MpcmV0dXJuITE7cmV0dXJuISFlLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpfSxleGVjdXRlOihlLHQpPT57aWYobnVsbD09dD8ucG9zKXJldHVybiBlLmNoYWluKCk7Y29uc3Qgbj1lLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpO3JldHVybiBuP2UuY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnRBdCh0LnBvcytuLm5vZGVTaXplLG4udG9KU09OKCkpOmUuY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxkZWxldGU6e2NhbkV4ZWN1dGU6KGUsdCk9PntpZihudWxsPT10Py5wb3MpcmV0dXJuITE7cmV0dXJuISFlLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpfSxleGVjdXRlOihlLHQpPT57aWYobnVsbD09dD8ucG9zKXJldHVybiBlLmNoYWluKCk7Y29uc3Qgbj1lLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpO3JldHVybiBuP2UuY2hhaW4oKS5mb2N1cygpLmRlbGV0ZVJhbmdlKHtmcm9tOnQucG9zLHRvOnQucG9zK24ubm9kZVNpemV9KTplLmNoYWluKCl9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sbW92ZVVwOmNyZWF0ZU1vdmVIYW5kbGVyKCJ1cCIpLG1vdmVEb3duOmNyZWF0ZU1vdmVIYW5kbGVyKCJkb3duIiksc3VnZ2VzdGlvbjp7Y2FuRXhlY3V0ZTooKT0+ITAsZXhlY3V0ZTooZSx0KT0+e2NvbnN0e3N0YXRlOm59PWUse3NlbGVjdGlvbjpyfT1uLHskZnJvbTpvfT1yO2lmKHZvaWQgMCE9PXQ/LnBvcyl7Y29uc3Qgcj1uLmRvYy5ub2RlQXQodC5wb3MpO2lmKHIpe2NvbnN0IG49dC5wb3Mrci5ub2RlU2l6ZTtyZXR1cm4gZS5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0Q29udGVudEF0KG4se3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6Ii8ifV19KX19Y29uc3QgaT1vLm5vZGUoby5kZXB0aCkscz1vLmJlZm9yZShvLmRlcHRoKStpLm5vZGVTaXplO3JldHVybiBlLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQocyx7dHlwZToicGFyYWdyYXBoIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDoiLyJ9XX0pfSxpc0FjdGl2ZTooKT0+ITEsaXNEaXNhYmxlZDp2b2lkIDB9LG1lbnRpb246e2NhbkV4ZWN1dGU6KCk9PiEwLGV4ZWN1dGU6ZT0+e2NvbnN0e3N0YXRlOnR9PWUse3NlbGVjdGlvbjpufT10LHskZnJvbTpyfT1uLG89ci5wYXJlbnQudGV4dEJldHdlZW4oTWF0aC5tYXgoMCxyLnBhcmVudE9mZnNldC0xKSxyLnBhcmVudE9mZnNldCx2b2lkIDAsIiAiKSxpPW8mJiIgIiE9PW87cmV0dXJuIGUuY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnQoaT8iIEAiOiJAIil9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sZW1vamk6e2NhbkV4ZWN1dGU6KCk9PiEwLGV4ZWN1dGU6ZT0+e2NvbnN0e3N0YXRlOnR9PWUse3NlbGVjdGlvbjpufT10LHskZnJvbTpyfT1uLG89ci5wYXJlbnQudGV4dEJldHdlZW4oTWF0aC5tYXgoMCxyLnBhcmVudE9mZnNldC0xKSxyLnBhcmVudE9mZnNldCx2b2lkIDAsIiAiKSxpPW8mJiIgIiE9PW87cmV0dXJuIGUuY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnQoaT8iIDoiOiI6Iil9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH19fWNvbnN0IEhzPXtzbG90czp7cm9vdDoiIixjb250ZW50OiJyZWxhdGl2ZSBzaXplLWZ1bGwgZmxleC0xIixiYXNlOlsidy1mdWxsIG91dGxpbmUtbm9uZSAqOm15LTUgKjpmaXJzdDptdC0wICo6bGFzdDptYi0wIHNtOnB4LTggc2VsZWN0aW9uOmJnLXByaW1hcnkvMjAiLCJbJl9wXTpsZWFkaW5nLTciLCJbJl9hXTp0ZXh0LXByaW1hcnkgWyZfYV06Ym9yZGVyLWIgWyZfYV06Ym9yZGVyLXRyYW5zcGFyZW50IFsmX2FdOmhvdmVyOmJvcmRlci1wcmltYXJ5IFsmX2FdOmZvbnQtbWVkaXVtIiwiWyZfYV06dHJhbnNpdGlvbi1jb2xvcnMiLCJbJl9hPmNvZGVdOmJvcmRlci1kYXNoZWQgWyZfYTpob3Zlcj5jb2RlXTpib3JkZXItcHJpbWFyeSBbJl9hOmhvdmVyPmNvZGVdOnRleHQtcHJpbWFyeSIsIlsmX2E+Y29kZV06dHJhbnNpdGlvbi1jb2xvcnMiLCJbJl8ubWVudGlvbl06dGV4dC1wcmltYXJ5IFsmXy5tZW50aW9uXTpmb250LW1lZGl1bSIsIlsmXzppcyhoMSxoMixoMyxoNCxoNSxoNildOnRleHQtaGlnaGxpZ2h0ZWQgWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KV06Zm9udC1ib2xkIiwiWyZfaDFdOnRleHQtM3hsIiwiWyZfaDJdOnRleHQtMnhsIiwiWyZfaDNdOnRleHQteGwiLCJbJl9oNF06dGV4dC1sZyIsIlsmX2g1XTp0ZXh0LWJhc2UiLCJbJl9oNl06dGV4dC1iYXNlIiwiWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KT5jb2RlXTpib3JkZXItZGFzaGVkIFsmXzppcyhoMSxoMixoMyxoNCxoNSxoNik+Y29kZV06Zm9udC1ib2xkIiwiWyZfaDI+Y29kZV06dGV4dC14bC82IiwiWyZfaDM+Y29kZV06dGV4dC1sZy81IiwiWyZfYmxvY2txdW90ZV06Ym9yZGVyLXMtNCBbJl9ibG9ja3F1b3RlXTpib3JkZXItYWNjZW50ZWQgWyZfYmxvY2txdW90ZV06cHMtNCBbJl9ibG9ja3F1b3RlXTppdGFsaWMiLCJbJl9bZGF0YS10eXBlPWhvcml6b250YWxSdWxlXV06bXktOCBbJl9bZGF0YS10eXBlPWhvcml6b250YWxSdWxlXV06cHktMiIsIlsmX2hyXTpib3JkZXItdCBbJl9ocl06Ym9yZGVyLWRlZmF1bHQiLCJbJl9wcmVdOnRleHQtc20vNiBbJl9wcmVdOmJvcmRlciBbJl9wcmVdOmJvcmRlci1tdXRlZCBbJl9wcmVdOmJnLW11dGVkIFsmX3ByZV06cm91bmRlZC1tZCBbJl9wcmVdOnB4LTQgWyZfcHJlXTpweS0zIFsmX3ByZV06d2hpdGVzcGFjZS1wcmUtd3JhcCBbJl9wcmVdOmJyZWFrLXdvcmRzIFsmX3ByZV06b3ZlcmZsb3cteC1hdXRvIiwiWyZfcHJlX2NvZGVdOnAtMCBbJl9wcmVfY29kZV06dGV4dC1pbmhlcml0IFsmX3ByZV9jb2RlXTpmb250LWluaGVyaXQgWyZfcHJlX2NvZGVdOnJvdW5kZWQtbm9uZSBbJl9wcmVfY29kZV06aW5saW5lIFsmX3ByZV9jb2RlXTpib3JkZXItMCBbJl9wcmVfY29kZV06YmctdHJhbnNwYXJlbnQiLCJbJl9jb2RlXTpweC0xLjUgWyZfY29kZV06cHktMC41IFsmX2NvZGVdOnRleHQtc20gWyZfY29kZV06Zm9udC1tb25vIFsmX2NvZGVdOmZvbnQtbWVkaXVtIFsmX2NvZGVdOnJvdW5kZWQtbWQgWyZfY29kZV06aW5saW5lLWJsb2NrIFsmX2NvZGVdOmJvcmRlciBbJl9jb2RlXTpib3JkZXItbXV0ZWQgWyZfY29kZV06dGV4dC1oaWdobGlnaHRlZCBbJl9jb2RlXTpiZy1tdXRlZCIsIlsmXzppcyh1bCxvbCldOnBzLTYiLCJbJl91bF06bGlzdC1kaXNjIFsmX3VsXTptYXJrZXI6dGV4dC0oLS11aS1ib3JkZXItYWNjZW50ZWQpIiwiWyZfb2xdOmxpc3QtZGVjaW1hbCBbJl9vbF06bWFya2VyOnRleHQtbXV0ZWQiLCJbJl9saV06bXktMS41IFsmX2xpXTpwcy0xLjUiLCJbJl9pbWddOnJvdW5kZWQtbWQgWyZfaW1nXTpibG9jayBbJl9pbWddOm1heC13LWZ1bGwgWyZfaW1nLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZV06b3V0bGluZS0yIFsmX2ltZy5Qcm9zZU1pcnJvci1zZWxlY3RlZG5vZGVdOm91dGxpbmUtcHJpbWFyeSIsIlsmXy5Qcm9zZU1pcnJvci1zZWxlY3RlZG5vZGU6bm90KGltZyk6bm90KHByZSk6bm90KFtkYXRhLW5vZGUtdmlldy13cmFwcGVyXSldOmJnLXByaW1hcnkvMjAiXX0sdmFyaWFudHM6e3BsYWNlaG9sZGVyTW9kZTp7Zmlyc3RMaW5lOntiYXNlOiJbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkXTpiZWZvcmU6Y29udGVudC1bYXR0cihkYXRhLXBsYWNlaG9sZGVyKV0gWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZF06YmVmb3JlOnRleHQtZGltbWVkIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpmbG9hdC1zdGFydCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkXTpiZWZvcmU6aC0wIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpwb2ludGVyLWV2ZW50cy1ub25lIn0sZXZlcnlMaW5lOntiYXNlOiJbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpjb250ZW50LVthdHRyKGRhdGEtcGxhY2Vob2xkZXIpXSBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTp0ZXh0LWRpbW1lZCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpmbG9hdC1zdGFydCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpoLTAgWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVtcHR5XTpiZWZvcmU6cG9pbnRlci1ldmVudHMtbm9uZSJ9fX0sZGVmYXVsdFZhcmlhbnRzOntwbGFjZWhvbGRlck1vZGU6ImV2ZXJ5TGluZSJ9fSxWcz1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVFZGl0b3IiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbnRlbnRUeXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sc3RhcnRlcktpdDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sbWFya2Rvd246e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpbWFnZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG1lbnRpb246e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxoYW5kbGVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGV4dGVuc2lvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGluamVjdENTUzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpbmplY3ROb25jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6W1N0cmluZyxOdW1iZXIsQm9vbGVhbixudWxsXSxyZXF1aXJlZDohMX0sZWRpdGFibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dERpcmVjdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGVkaXRvclByb3BzOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scGFyc2VPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29yZUV4dGVuc2lvbk9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxlbmFibGVJbnB1dFJ1bGVzOnt0eXBlOltBcnJheSxCb29sZWFuXSxyZXF1aXJlZDohMX0sZW5hYmxlUGFzdGVSdWxlczp7dHlwZTpbQXJyYXksQm9vbGVhbl0scmVxdWlyZWQ6ITF9LGVuYWJsZUNvcmVFeHRlbnNpb25zOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGVuYWJsZUNvbnRlbnRDaGVjazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxlbWl0Q29udGVudEVycm9yOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQmVmb3JlQ3JlYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkNyZWF0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25Nb3VudDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25Vbm1vdW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkNvbnRlbnRFcnJvcjp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25VcGRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uU2VsZWN0aW9uVXBkYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblRyYW5zYWN0aW9uOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkZvY3VzOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkJsdXI6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uRGVzdHJveTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25QYXN0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25Ecm9wOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkRlbGV0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sZW5hYmxlRXh0ZW5zaW9uRGlzcGF0Y2hUcmFuc2FjdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKGUse2V4cG9zZTp0LGVtaXQ6bn0pe2NvbnN0IHI9ZSxvPW4saT1wLnVzZUF0dHJzKCksbD12KCksYT14KCJlZGl0b3IiLHIpLGM9cC5jb21wdXRlZCgoKT0+Uyh7ZXh0ZW5kOlMoSHMpLC4uLmwudWk/LmVkaXRvcnx8e319KSh7cGxhY2Vob2xkZXJNb2RlOiJvYmplY3QiPT10eXBlb2Ygci5wbGFjZWhvbGRlcj9yLnBsYWNlaG9sZGVyLm1vZGU6dm9pZCAwfSkpLGQ9QyhBKHIsInN0YXJ0ZXJLaXQiLCJleHRlbnNpb25zIiwiZWRpdG9yUHJvcHMiLCJjb250ZW50VHlwZSIsImNsYXNzIiwicGxhY2Vob2xkZXIiLCJtYXJrZG93biIsImltYWdlIiwibWVudGlvbiIsImhhbmRsZXJzIikpLGY9cC5jb21wdXRlZCgoKT0+cyhyLmVkaXRvclByb3BzLHthdHRyaWJ1dGVzOnthdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsLi4uaSxjbGFzczpjLnZhbHVlLmJhc2Uoe2NsYXNzOmEudmFsdWU/LmJhc2V9KX19KSksbT1wLmNvbXB1dGVkKCgpPT5yLmNvbnRlbnRUeXBlfHwoInN0cmluZyI9PXR5cGVvZiByLm1vZGVsVmFsdWU/Imh0bWwiOiJqc29uIikpLHk9cC5jb21wdXRlZCgoKT0+cyhyLnN0YXJ0ZXJLaXQse2NvZGU6ITEsaG9yaXpvbnRhbFJ1bGU6ITEsZHJvcGN1cnNvcjp7Y29sb3I6InZhcigtLXVpLXByaW1hcnkpIix3aWR0aDoyfSxsaW5rOntvcGVuT25DbGljazohMX19KSksdz1wLmNvbXB1dGVkKCgpPT57Y29uc3QgZT0ic3RyaW5nIj09dHlwZW9mIHIucGxhY2Vob2xkZXI/e3BsYWNlaG9sZGVyOnIucGxhY2Vob2xkZXJ9OnIucGxhY2Vob2xkZXIse21vZGU6dCwuLi5ufT1lfHx7fTtyZXR1cm4gcyhuLHtzaG93T25seVdoZW5FZGl0YWJsZTohMSxzaG93T25seUN1cnJlbnQ6ITB9KX0pLGI9cC5jb21wdXRlZCgoKT0+cyhyLm1hcmtkb3duLHttYXJrZWRPcHRpb25zOntnZm06ITB9fSkpLEU9cC5jb21wdXRlZCgoKT0+ImJvb2xlYW4iPT10eXBlb2Ygci5pbWFnZT97fTpyLmltYWdlKSxOPXAuY29tcHV0ZWQoKCk9PnMoImJvb2xlYW4iPT10eXBlb2Ygci5tZW50aW9uP3t9OnIubWVudGlvbix7SFRNTEF0dHJpYnV0ZXM6e2NsYXNzOiJtZW50aW9uIn0scmVuZGVyVGV4dDooe25vZGU6ZX0pPT5gJHtlLmF0dHJzLm1lbnRpb25TdWdnZXN0aW9uQ2hhcj8/IkAifSR7ZS5hdHRycy5sYWJlbD8/ZS5hdHRycy5pZH1gLHJlbmRlckhUTUw6KHtvcHRpb25zOmUsbm9kZTp0fSk9Plsic3BhbiIsbWVyZ2VBdHRyaWJ1dGVzKHsiZGF0YS10eXBlIjoibWVudGlvbiJ9LGUuSFRNTEF0dHJpYnV0ZXMpLGAke3QuYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyPz8iQCJ9JHt0LmF0dHJzLmxhYmVsPz90LmF0dHJzLmlkfWBdfSkpLFI9cC5jb21wdXRlZCgoKT0+WyJtYXJrZG93biI9PT1tLnZhbHVlJiZxci5jb25maWd1cmUoYi52YWx1ZSkscHMuY29uZmlndXJlKHkudmFsdWUpLGNuLmV4dGVuZCh7ZXhjbHVkZXM6ImNvZGUifSkscG4uZXh0ZW5kKHtyZW5kZXJIVE1MKCl7cmV0dXJuWyJkaXYiLG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMseyJkYXRhLXR5cGUiOnRoaXMubmFtZX0pLFsiaHIiXV19fSksITEhPT1yLmltYWdlJiZmbi5jb25maWd1cmUoRS52YWx1ZSksITEhPT1yLm1lbnRpb24mJnluLmNvbmZpZ3VyZShOLnZhbHVlKSxyLnBsYWNlaG9sZGVyJiYkbi5jb25maWd1cmUody52YWx1ZSksLi4uci5leHRlbnNpb25zfHxbXV0uZmlsdGVyKGU9PiEhZSkpLEQ9KChlPXt9KT0+e2NvbnN0IHQ9VSgpO3JldHVybiBQKCgpPT57dC52YWx1ZT1uZXcgaHMoZSl9KSwkKCgpPT57dmFyIGUsbixyLG87Y29uc3QgaT1udWxsPT0obj1udWxsPT0oZT10LnZhbHVlKT92b2lkIDA6ZS52aWV3LmRvbSk/dm9pZCAwOm4ucGFyZW50Tm9kZSxzPW51bGw9PWk/dm9pZCAwOmkuY2xvbmVOb2RlKCEwKTtudWxsPT0ocj1udWxsPT1pP3ZvaWQgMDppLnBhcmVudE5vZGUpfHxyLnJlcGxhY2VDaGlsZChzLGkpLG51bGw9PShvPXQudmFsdWUpfHxvLmRlc3Ryb3koKX0pLHR9KSh7Li4uZC52YWx1ZSxjb250ZW50OnIubW9kZWxWYWx1ZSxjb250ZW50VHlwZTptLnZhbHVlLGV4dGVuc2lvbnM6Ui52YWx1ZSxlZGl0b3JQcm9wczpmLnZhbHVlLG9uQ3JlYXRlOih7ZWRpdG9yOmV9KT0+e3IucGxhY2Vob2xkZXImJmUudmlldy5kaXNwYXRjaChlLnN0YXRlLnRyKX0sb25VcGRhdGU6KHtlZGl0b3I6ZX0pPT57bGV0IHQ7dHJ5eyJodG1sIj09PW0udmFsdWU/dD1lLmdldEhUTUwoKToianNvbiI9PT1tLnZhbHVlP3Q9ZS5nZXRKU09OKCk6Im1hcmtkb3duIj09PW0udmFsdWUmJih0PWUuZ2V0TWFya2Rvd24oKSl9Y2F0Y2gobil7dD1lLmdldFRleHQoKX1vKCJ1cGRhdGU6bW9kZWxWYWx1ZSIsdCl9fSk7cC53YXRjaCgoKT0+ci5tb2RlbFZhbHVlLGU9PntpZighRC52YWx1ZXx8bnVsbD09ZSlyZXR1cm47aWYoKCJodG1sIj09PW0udmFsdWU/RC52YWx1ZS5nZXRIVE1MKCk6Impzb24iPT09bS52YWx1ZT9KU09OLnN0cmluZ2lmeShELnZhbHVlLmdldEpTT04oKSk6Im1hcmtkb3duIj09PW0udmFsdWU/RC52YWx1ZS5nZXRNYXJrZG93bigpOkQudmFsdWUuZ2V0VGV4dCgpKSE9PSgianNvbiI9PT1tLnZhbHVlJiYib2JqZWN0Ij09dHlwZW9mIGU/SlNPTi5zdHJpbmdpZnkoZSk6U3RyaW5nKGUpKSl7Y29uc3QgdD1ELnZhbHVlLnN0YXRlLnNlbGVjdGlvbi5mcm9tO0QudmFsdWUuY29tbWFuZHMuc2V0Q29udGVudChlLHtjb250ZW50VHlwZTptLnZhbHVlfSk7dDw9RC52YWx1ZS5zdGF0ZS5kb2MuY29udGVudC5zaXplJiZELnZhbHVlLmNvbW1hbmRzLnNldFRleHRTZWxlY3Rpb24odCl9fSk7Y29uc3QgTD1wLmNvbXB1dGVkKCgpPT4oey4uLmNyZWF0ZUhhbmRsZXJzKCksLi4uci5oYW5kbGVyc30pKTtyZXR1cm4gcC5wcm92aWRlKCJlZGl0b3JIYW5kbGVycyIsTCksdCh7ZWRpdG9yOkR9KSwodCxuLG8saSk9PntuKEsocC51bnJlZihPKSxwLm1lcmdlUHJvcHMoe2FzOmUuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmMudmFsdWUucm9vdCh7Y2xhc3M6W3AudW5yZWYoYSk/LnJvb3Qsci5jbGFzc119KX0saSkse2RlZmF1bHQ6cC53aXRoQ3R4KChlLG4scixvKT0+e2lmKCFuKXJldHVybltwLnVucmVmKEQpPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCx7a2V5OjB9LFtwLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiLHtlZGl0b3I6cC51bnJlZihEKSxoYW5kbGVyczpMLnZhbHVlfSkscC5jcmVhdGVWTm9kZShwLnVucmVmKHVzKSx7cm9sZToicHJlc2VudGF0aW9uIixlZGl0b3I6cC51bnJlZihEKSwiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6Yy52YWx1ZS5jb250ZW50KHtjbGFzczpwLnVucmVmKGEpPy5jb250ZW50fSl9LG51bGwsOCxbImVkaXRvciIsImNsYXNzIl0pXSw2NCkpOnAuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07cC51bnJlZihEKT8obigiXHgzYyEtLVstLVx4M2UiKSxaKHQuJHNsb3RzLCJkZWZhdWx0Iix7ZWRpdG9yOnAudW5yZWYoRCksaGFuZGxlcnM6TC52YWx1ZX0sbnVsbCxuLHIsbyksbihLKHAudW5yZWYodXMpLHtyb2xlOiJwcmVzZW50YXRpb24iLGVkaXRvcjpwLnVucmVmKEQpLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpjLnZhbHVlLmNvbnRlbnQoe2NsYXNzOnAudW5yZWYoYSk/LmNvbnRlbnR9KX0sbnVsbCxyLG8pKSxuKCJceDNjIS0tXS0tXHgzZSIpKTpuKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LG8pKX19fSksX3M9VnMuc2V0dXA7VnMuc2V0dXA9KGUsdCk9Pntjb25zdCBuPXAudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9FZGl0b3IudnVlIiksX3M/X3MoZSx0KTp2b2lkIDB9O2NvbnN0IGpzPXtzbG90czp7cm9vdDoiZm9jdXM6b3V0bGluZS1ub25lIixiYXNlOiJmbGV4IGl0ZW1zLXN0cmV0Y2ggZ2FwLTEuNSIsZ3JvdXA6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0wLjUiLHNlcGFyYXRvcjoidy1weCBzZWxmLXN0cmV0Y2ggYmctYm9yZGVyIn0sdmFyaWFudHM6e2xheW91dDp7YnViYmxlOntiYXNlOiJiZy1kZWZhdWx0IGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIHAtMSJ9LGZsb2F0aW5nOntiYXNlOiJiZy1kZWZhdWx0IGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIHAtMSJ9LGZpeGVkOntiYXNlOiIifX19fSxxcz1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVFZGl0b3JUb29sYmFyIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuZXV0cmFsIn0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imdob3N0In0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJwcmltYXJ5In0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNvZnQifSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic20ifSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxlZGl0b3I6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxheW91dDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZml4ZWQifSxwbHVnaW5LZXk6e3R5cGU6W09iamVjdCxTdHJpbmddLHJlcXVpcmVkOiExfSx1cGRhdGVEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHJlc2l6ZURlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2hvdWxkU2hvdzp7dHlwZTpbRnVuY3Rpb24sbnVsbF0scmVxdWlyZWQ6ITF9LGFwcGVuZFRvOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExLHNraXBDaGVjazohMH0sZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPXYoKSxyPXgoImVkaXRvclRvb2xiYXIiLHQpLG89cC5pbmplY3QoImVkaXRvckhhbmRsZXJzIixwLmNvbXB1dGVkKCgpPT5jcmVhdGVIYW5kbGVycygpKSksaT1wLmNvbXB1dGVkKCgpPT4oe2J1YmJsZTp6cyxmbG9hdGluZzpGcyxmaXhlZDoidGVtcGxhdGUifVt0LmxheW91dF0pKSxsPUMoQSh0LCJhcyIsImNvbG9yIiwidmFyaWFudCIsImFjdGl2ZUNvbG9yIiwiYWN0aXZlVmFyaWFudCIsInNpemUiLCJpdGVtcyIsImxheW91dCIsImVkaXRvciIsImNsYXNzIiwidWkiKSksYT1wLmNvbXB1dGVkKCgpPT5zKHQub3B0aW9ucyx7b2Zmc2V0Ojgsc2hpZnQ6e3BhZGRpbmc6OH19KSksYz1wLmNvbXB1dGVkKCgpPT5TKHtleHRlbmQ6UyhqcyksLi4ubi51aT8uZWRpdG9yVG9vbGJhcnx8e319KSh7bGF5b3V0OnQubGF5b3V0fSkpLGQ9cC5jb21wdXRlZCgoKT0+dC5pdGVtcz8ubGVuZ3RoP0UodC5pdGVtcyk/dC5pdGVtczpbdC5pdGVtc106W10pO2Z1bmN0aW9uIGlzQWN0aXZlKGUpe2lmKCF0LmVkaXRvcj8uaXNFZGl0YWJsZSlyZXR1cm4hMTtpZigiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoKXJldHVybiBlLml0ZW1zPy5zb21lKGU9PmlzQWN0aXZlKGUpKXx8ITE7aWYoISgia2luZCJpbiBlKSlyZXR1cm4gZS5hY3RpdmU/PyExO2NvbnN0IG49bz8udmFsdWU/LltlLmtpbmRdO3JldHVybiBuPy5pc0FjdGl2ZSh0LmVkaXRvcixlKXx8ITF9ZnVuY3Rpb24gaXNEaXNhYmxlZChlKXtpZighdC5lZGl0b3I/LmlzRWRpdGFibGUpcmV0dXJuITA7aWYoIml0ZW1zImluIGUmJmUuaXRlbXM/Lmxlbmd0aCl7Y29uc3QgdD0oRShlLml0ZW1zKT9lLml0ZW1zLmZsYXQoKTplLml0ZW1zKS5maWx0ZXIoZT0+InNlcGFyYXRvciIhPT1lLnR5cGUmJiJsYWJlbCIhPT1lLnR5cGUpO3JldHVybiAwPT09dC5sZW5ndGh8fHQuZXZlcnkoZT0+aXNEaXNhYmxlZChlKSl9aWYoISgia2luZCJpbiBlKSlyZXR1cm4gZS5kaXNhYmxlZD8/ITE7Y29uc3Qgbj1vPy52YWx1ZT8uW2Uua2luZF07cmV0dXJuISFuJiYoISFuLmlzRGlzYWJsZWQ/Lih0LmVkaXRvcixlKXx8IW4uY2FuRXhlY3V0ZSh0LmVkaXRvcixlKSl9ZnVuY3Rpb24gb25DbGljayhlLG4pe2lmKCF0LmVkaXRvcj8uaXNFZGl0YWJsZXx8aXNEaXNhYmxlZChuKSlyZXR1cm47aWYoIml0ZW1zImluIG58fCEoImtpbmQiaW4gbikpe2lmKCJvbkNsaWNrImluIG4pZm9yKGNvbnN0IHQgb2YgQXJyYXkuaXNBcnJheShuLm9uQ2xpY2spP24ub25DbGljazpbbi5vbkNsaWNrXSl0Py4oZSk7cmV0dXJufWNvbnN0IHI9bz8udmFsdWU/LltuLmtpbmRdO3ImJnIuZXhlY3V0ZSh0LmVkaXRvcixuKS5ydW4oKX1mdW5jdGlvbiBnZXRCdXR0b25Qcm9wcyhlKXtjb25zdCBuPVIoZSxbImtpbmQiLCJtYXJrIiwiYWxpZ24iLCJsZXZlbCIsImhyZWYiLCJzcmMiLCJwb3MiLCJpdGVtcyIsInNsb3QiLCJjaGVja2VkSWNvbiIsImxvYWRpbmdJY29uIiwiZXh0ZXJuYWxJY29uIiwiY29udGVudCIsImFycm93IiwicG9ydGFsIiwibW9kYWwiLCJ0b29sdGlwIiwib25DbGljayJdKTtpZigiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoKXtjb25zdCB0PWZ1bmN0aW9uKGUpe2lmKCFlLml0ZW1zKXJldHVybjtyZXR1cm4oRShlLml0ZW1zKT9lLml0ZW1zLmZsYXQoKTplLml0ZW1zKS5maW5kKGU9PiJraW5kImluIGUmJmlzQWN0aXZlKGUpKX0oZSk7dD8uaWNvbiYmKG4uaWNvbj10Lmljb24pLHQ/LmxhYmVsJiZ2b2lkIDAhPT1uLmxhYmVsJiYobi5sYWJlbD10LmxhYmVsKX1yZXR1cm4gcyhuLHtjb2xvcjp0LmNvbG9yLGFjdGl2ZUNvbG9yOnQuYWN0aXZlQ29sb3IsYWN0aXZlVmFyaWFudDp0LmFjdGl2ZVZhcmlhbnQsdmFyaWFudDp0LnZhcmlhbnQsc2l6ZTp0LnNpemV9KX1mdW5jdGlvbiBnZXREcm9wZG93blByb3BzKGUpe2NvbnN0IG49TihlLFsic2l6ZSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJjb250ZW50IiwiYXJyb3ciLCJwb3J0YWwiLCJtb2RhbCIsInVpIl0pO3JldHVybiBzKG4se21vZGFsOiExLHNpemU6dC5zaXplfSl9ZnVuY3Rpb24gbWFwRHJvcGRvd25JdGVtKGUpe2NvbnN0IHQ9ImNoaWxkcmVuImluIGUmJkFycmF5LmlzQXJyYXkoZS5jaGlsZHJlbik/ZS5jaGlsZHJlbi5tYXAobWFwRHJvcGRvd25JdGVtKTp2b2lkIDA7aWYoISgia2luZCJpbiBlKSlyZXR1cm4gdD97Li4uZSxjaGlsZHJlbjp0fTplO2NvbnN0IG49ZTtyZXR1cm57Li4ubiwuLi50JiZ7Y2hpbGRyZW46dH0sYWN0aXZlOmlzQWN0aXZlKG4pLGRpc2FibGVkOmlzRGlzYWJsZWQobiksb25TZWxlY3Q6ZT0+b25DbGljayhlLG4pfX1mdW5jdGlvbiBnZXREcm9wZG93bkl0ZW1zKGUpe3JldHVybiBlLml0ZW1zP0UoZS5pdGVtcyk/ZS5pdGVtcy5tYXAoZT0+ZS5tYXAobWFwRHJvcGRvd25JdGVtKSk6W2UuaXRlbXMubWFwKG1hcERyb3Bkb3duSXRlbSldOltdfXJldHVybihuLG8scyxmKT0+e28oSyhwLnVucmVmKE8pLHAubWVyZ2VQcm9wcyh7YXM6aS52YWx1ZX0sInRlbXBsYXRlIiE9PWkudmFsdWU/e2VkaXRvcjplLmVkaXRvcix0YWJpbmRleDotMSxjbGFzczpjLnZhbHVlLnJvb3Qoe2NsYXNzOnAudW5yZWYocik/LnJvb3R9KSwuLi5wLnVucmVmKGwpLG9wdGlvbnM6YS52YWx1ZSwuLi5uLiRhdHRyc306ey4uLm4uJGF0dHJzfSxmKSx7ZGVmYXVsdDpwLndpdGhDdHgoKG8saSxzLGwpPT57aWYoIWkpcmV0dXJuW3AuY3JlYXRlVk5vZGUocC51bnJlZihPKSx7YXM6ZS5hcyxyb2xlOiJ0b29sYmFyIiwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Yy52YWx1ZS5iYXNlKHtjbGFzczpbcC51bnJlZihyKT8uYmFzZSx0LmNsYXNzXX0pfSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PlsocC5vcGVuQmxvY2soITApLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCxudWxsLHAucmVuZGVyTGlzdChkLnZhbHVlLChlLHQpPT4ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHAuRnJhZ21lbnQse2tleTpgZ3JvdXAtJHt0fWB9LFtwLmNyZWF0ZVZOb2RlKCJkaXYiLHtyb2xlOiJncm91cCIsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpjLnZhbHVlLmdyb3VwKHtjbGFzczpwLnVucmVmKHIpPy5ncm91cH0pfSxbKHAub3BlbkJsb2NrKCEwKSxwLmNyZWF0ZUJsb2NrKHAuRnJhZ21lbnQsbnVsbCxwLnJlbmRlckxpc3QoZSwoZSxyKT0+cC5yZW5kZXJTbG90KG4uJHNsb3RzLGUuc2xvdHx8Iml0ZW0iLHtrZXk6YGdyb3VwLSR7dH0tJHtyfWAsaXRlbTplLGluZGV4OnIsaXNBY3RpdmU6aXNBY3RpdmUsaXNEaXNhYmxlZDppc0Rpc2FibGVkLG9uQ2xpY2s6b25DbGlja30sKCk9PlsiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2sobmUscC5tZXJnZVByb3BzKHtrZXk6MCxyZWZfZm9yOiEwfSxnZXREcm9wZG93blByb3BzKGUpLHtpdGVtczpnZXREcm9wZG93bkl0ZW1zKGUpfSkse2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bZS50b29sdGlwPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socmUscC5tZXJnZVByb3BzKHtrZXk6MCxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sey4uLmUudG9vbHRpcHx8e319KSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltwLmNyZWF0ZVZOb2RlKGIscC5tZXJnZVByb3BzKHthY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHtvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSldKSxfOjJ9LDEwNDAsWyJkaXNhYmxlZCJdKSk6KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhiLHAubWVyZ2VQcm9wcyh7a2V5OjEsYWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7b25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pKV0pLF86Mn0sMTA0MCxbIml0ZW1zIl0pKTplLnRvb2x0aXA/KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhyZSxwLm1lcmdlUHJvcHMoe2tleToxLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSx7Li4uZS50b29sdGlwfHx7fX0pLHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse3VpOmUudWksb25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJ1aSIsIm9uQ2xpY2siXSldKSxfOjJ9LDEwNDAsWyJkaXNhYmxlZCJdKSk6KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhiLHAubWVyZ2VQcm9wcyh7a2V5OjIsYWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7dWk6ZS51aSxvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsInVpIiwib25DbGljayJdKSldKSksMTI4KSldLDIpLHQ8ZC52YWx1ZS5sZW5ndGgtMT8ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHAudW5yZWYodGUpLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpjLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6cC51bnJlZihyKT8uc2VwYXJhdG9yfSksb3JpZW50YXRpb246InZlcnRpY2FsIn0sbnVsbCw4LFsiY2xhc3MiXSkpOnAuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sNjQpKSksMTI4KSldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pXTtpKEsocC51bnJlZihPKSx7YXM6ZS5hcyxyb2xlOiJ0b29sYmFyIiwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Yy52YWx1ZS5iYXNlKHtjbGFzczpbcC51bnJlZihyKT8uYmFzZSx0LmNsYXNzXX0pfSx7ZGVmYXVsdDpwLndpdGhDdHgoKGUsdCxvLGkpPT57aWYoIXQpcmV0dXJuWyhwLm9wZW5CbG9jayghMCkscC5jcmVhdGVCbG9jayhwLkZyYWdtZW50LG51bGwscC5yZW5kZXJMaXN0KGQudmFsdWUsKGUsdCk9PihwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCx7a2V5OmBncm91cC0ke3R9YH0sW3AuY3JlYXRlVk5vZGUoImRpdiIse3JvbGU6Imdyb3VwIiwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOmMudmFsdWUuZ3JvdXAoe2NsYXNzOnAudW5yZWYocik/Lmdyb3VwfSl9LFsocC5vcGVuQmxvY2soITApLHAuY3JlYXRlQmxvY2socC5GcmFnbWVudCxudWxsLHAucmVuZGVyTGlzdChlLChlLHIpPT5wLnJlbmRlclNsb3Qobi4kc2xvdHMsZS5zbG90fHwiaXRlbSIse2tleTpgZ3JvdXAtJHt0fS0ke3J9YCxpdGVtOmUsaW5kZXg6cixpc0FjdGl2ZTppc0FjdGl2ZSxpc0Rpc2FibGVkOmlzRGlzYWJsZWQsb25DbGljazpvbkNsaWNrfSwoKT0+WyJpdGVtcyJpbiBlJiZlLml0ZW1zPy5sZW5ndGg/KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhuZSxwLm1lcmdlUHJvcHMoe2tleTowLHJlZl9mb3I6ITB9LGdldERyb3Bkb3duUHJvcHMoZSkse2l0ZW1zOmdldERyb3Bkb3duSXRlbXMoZSl9KSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltlLnRvb2x0aXA/KHAub3BlbkJsb2NrKCkscC5jcmVhdGVCbG9jayhyZSxwLm1lcmdlUHJvcHMoe2tleTowLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSx7Li4uZS50b29sdGlwfHx7fX0pLHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse29uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwib25DbGljayJdKV0pLF86Mn0sMTA0MCxbImRpc2FibGVkIl0pKToocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKGIscC5tZXJnZVByb3BzKHtrZXk6MSxhY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHtvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkpXSksXzoyfSwxMDQwLFsiaXRlbXMiXSkpOmUudG9vbHRpcD8ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHJlLHAubWVyZ2VQcm9wcyh7a2V5OjEsZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LHsuLi5lLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZShiLHAubWVyZ2VQcm9wcyh7YWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7dWk6ZS51aSxvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwsMTYsWyJhY3RpdmUiLCJkaXNhYmxlZCIsInVpIiwib25DbGljayJdKV0pLF86Mn0sMTA0MCxbImRpc2FibGVkIl0pKToocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKGIscC5tZXJnZVByb3BzKHtrZXk6MixhY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHt1aTplLnVpLG9uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwidWkiLCJvbkNsaWNrIl0pKV0pKSwxMjgpKV0sMiksdDxkLnZhbHVlLmxlbmd0aC0xPyhwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2socC51bnJlZih0ZSkse2tleTowLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmMudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpwLnVucmVmKHIpPy5zZXBhcmF0b3J9KSxvcmllbnRhdGlvbjoidmVydGljYWwifSxudWxsLDgsWyJjbGFzcyJdKSk6cC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSw2NCkpKSwxMjgpKV07dCgiXHgzYyEtLVstLVx4M2UiKSxZKGQudmFsdWUsKGUscyk9Pnt0KGBceDNjIS0tWy0tXHgzZTxkaXYgcm9sZT0iZ3JvdXAiIGRhdGEtc2xvdD0iZ3JvdXAiIGNsYXNzPSIke2VlKGMudmFsdWUuZ3JvdXAoe2NsYXNzOnAudW5yZWYocik/Lmdyb3VwfSkpfSIke2l9Plx4M2MhLS1bLS1ceDNlYCksWShlLChlLHIpPT57WihuLiRzbG90cyxlLnNsb3R8fCJpdGVtIix7aXRlbTplLGluZGV4OnIsaXNBY3RpdmU6aXNBY3RpdmUsaXNEaXNhYmxlZDppc0Rpc2FibGVkLG9uQ2xpY2s6b25DbGlja30sKCk9PnsiaXRlbXMiaW4gZSYmZS5pdGVtcz8ubGVuZ3RoP3QoSyhuZSxwLm1lcmdlUHJvcHMoe3JlZl9mb3I6ITB9LGdldERyb3Bkb3duUHJvcHMoZSkse2l0ZW1zOmdldERyb3Bkb3duSXRlbXMoZSl9KSx7ZGVmYXVsdDpwLndpdGhDdHgoKHQsbixyLG8pPT57aWYoIW4pcmV0dXJuW2UudG9vbHRpcD8ocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHJlLHAubWVyZ2VQcm9wcyh7a2V5OjAsZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LHsuLi5lLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZShiLHAubWVyZ2VQcm9wcyh7YWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7b25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pXSksXzoyfSwxMDQwLFsiZGlzYWJsZWQiXSkpOihwLm9wZW5CbG9jaygpLHAuY3JlYXRlQmxvY2soYixwLm1lcmdlUHJvcHMoe2tleToxLGFjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse29uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwib25DbGljayJdKSldO2UudG9vbHRpcD9uKEsocmUscC5tZXJnZVByb3BzKHtkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sey4uLmUudG9vbHRpcHx8e319KSx7ZGVmYXVsdDpwLndpdGhDdHgoKHQsbixyLG8pPT57aWYoIW4pcmV0dXJuW3AuY3JlYXRlVk5vZGUoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse29uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwib25DbGljayJdKV07bihLKGIscC5tZXJnZVByb3BzKHthY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHtvbkNsaWNrOnQ9Pm9uQ2xpY2sodCxlKX0pLG51bGwscixvKSl9KSxfOjJ9LHIsbykpOm4oSyhiLHAubWVyZ2VQcm9wcyh7YWN0aXZlOmlzQWN0aXZlKGUpLGRpc2FibGVkOmlzRGlzYWJsZWQoZSl9LHtyZWZfZm9yOiEwfSxnZXRCdXR0b25Qcm9wcyhlKSx7b25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLHIsbykpfSksXzoyfSxvLGkpKTplLnRvb2x0aXA/dChLKHJlLHAubWVyZ2VQcm9wcyh7ZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LHsuLi5lLnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6cC53aXRoQ3R4KCh0LG4scixvKT0+e2lmKCFuKXJldHVybltwLmNyZWF0ZVZOb2RlKGIscC5tZXJnZVByb3BzKHthY3RpdmU6aXNBY3RpdmUoZSksZGlzYWJsZWQ6aXNEaXNhYmxlZChlKX0se3JlZl9mb3I6ITB9LGdldEJ1dHRvblByb3BzKGUpLHt1aTplLnVpLG9uQ2xpY2s6dD0+b25DbGljayh0LGUpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwidWkiLCJvbkNsaWNrIl0pXTtuKEsoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse3VpOmUudWksb25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLHIsbykpfSksXzoyfSxvLGkpKTp0KEsoYixwLm1lcmdlUHJvcHMoe2FjdGl2ZTppc0FjdGl2ZShlKSxkaXNhYmxlZDppc0Rpc2FibGVkKGUpfSx7cmVmX2ZvcjohMH0sZ2V0QnV0dG9uUHJvcHMoZSkse3VpOmUudWksb25DbGljazp0PT5vbkNsaWNrKHQsZSl9KSxudWxsLG8saSkpfSx0LG8saSl9KSx0KCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpLHM8ZC52YWx1ZS5sZW5ndGgtMT90KEsocC51bnJlZih0ZSkseyJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOmMudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpwLnVucmVmKHIpPy5zZXBhcmF0b3J9KSxvcmllbnRhdGlvbjoidmVydGljYWwifSxudWxsLG8saSkpOnQoIlx4M2MhLS0tLVx4M2UiKSx0KCJceDNjIS0tXS0tXHgzZSIpfSksdCgiXHgzYyEtLV0tLVx4M2UiKX0pLF86M30scyxsKSl9KSxfOjN9LHMpKX19fSksVXM9cXMuc2V0dXA7cXMuc2V0dXA9KGUsdCk9Pntjb25zdCBuPXAudXNlU1NSQ29udGV4dCgpO3JldHVybihuLm1vZHVsZXN8fChuLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9FZGl0b3JUb29sYmFyLnZ1ZSIpLFVzP1VzKGUsdCk6dm9pZCAwfTtjb25zdCBXcz1sKHthbGxVc2VyczpkKCkuZGVmYXVsdCghMSksb3JnYW5pemF0aW9uSWRzOmEoYygpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSkscm9sZUlkczphKGMoKS5taW4oMSkpLm1heCgxMDApLmRlZmF1bHQoW10pLGVtYWlsczphKGMoKS50cmltKCkudG9Mb3dlckNhc2UoKS5lbWFpbCgpKS5tYXgoMjAwKS5kZWZhdWx0KFtdKX0pLnJlZmluZShlPT5lLmFsbFVzZXJzfHxlLm9yZ2FuaXphdGlvbklkcy5sZW5ndGg+MHx8ZS5yb2xlSWRzLmxlbmd0aD4wfHxlLmVtYWlscy5sZW5ndGg+MCx7bWVzc2FnZToiU2VsZWN0IGF0IGxlYXN0IG9uZSByZWNpcGllbnQgY3JpdGVyaW9uIn0pLEtzPS88W14+XSo+L2csSnM9LyZuYnNwOy9naSxHcz0vPGltZ1xiL2k7ZnVuY3Rpb24gaHRtbEhhc1RleHQoZSl7cmV0dXJuIGUucmVwbGFjZShLcywiIikucmVwbGFjZShKcywiICIpLnRyaW0oKS5sZW5ndGg+MHx8R3MudGVzdChlKX1sKHtmaWx0ZXI6V3Msc3ViamVjdDpjKCkudHJpbSgpLm1pbigxKS5tYXgoMjAwKS5yZWdleCgvXlteXHJcbl0qJC8sIlN1YmplY3QgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MiKSxib2R5OmMoKS50cmltKCkubWluKDEpLm1heCg1ZTQpLnJlZmluZShodG1sSGFzVGV4dCwiQm9keSBjYW5ub3QgYmUgZW1wdHkiKX0pO2NvbnN0IFhzPXAuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlN5c3RlbUVtYWlsRGlzcGF0Y2giLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHMpe2NvbnN0IGw9L1tccyw7XSsvLGE9e2ZldGNoRGlzcGF0Y2hPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIEQoIi9hcGkvc3lzdGVtL2Rpc3BhdGNoL29wdGlvbnMiKX0scHJldmlld0Rpc3BhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiBEKCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9wcmV2aWV3Iix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX0sc2VuZERpc3BhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiBEKCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9zZW5kIix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX19LGM9bSgpLHtkYXRhOmR9PXkoInN5c3RlbS1kaXNwYXRjaC1vcHRpb25zIiwoKT0+YS5mZXRjaERpc3BhdGNoT3B0aW9ucygpLHtkZWZhdWx0OigpPT4oe29yZ2FuaXphdGlvbnM6W10scm9sZXM6W119KX0pLGY9cC5jb21wdXRlZCgoKT0+KGQudmFsdWU/Lm9yZ2FuaXphdGlvbnM/P1tdKS5tYXAoZT0+KHtsYWJlbDplLmxhYmVsLHZhbHVlOmUuaWR9KSkpLHY9cC5jb21wdXRlZCgoKT0+KGQudmFsdWU/LnJvbGVzPz9bXSkubWFwKGU9Pih7bGFiZWw6ZS5sYWJlbCx2YWx1ZTplLmlkfSkpKSx4PXAucmVmKHthbGxVc2VyczohMSxvcmdhbml6YXRpb25JZHM6W10scm9sZUlkczpbXSxlbWFpbHM6W119KSxTPXAucmVmKCIiKTt3KFMscC50b1JlZih4LnZhbHVlLCJlbWFpbHMiKSx7ZGlyZWN0aW9uOiJsdHIiLHRyYW5zZm9ybTp7bHRyOmU9PmUuc3BsaXQobCkubWFwKGU9PmUudHJpbSgpLnRvTG93ZXJDYXNlKCkpLmZpbHRlcihCb29sZWFuKX19KTtjb25zdCBDPXAucmVmKCIiKSxBPXAucmVmKCIiKSxPPVtbe2tpbmQ6Im1hcmsiLG1hcms6ImJvbGQiLGljb246ImktbHVjaWRlLWJvbGQiLHRvb2x0aXA6e3RleHQ6IkJvbGQifX0se2tpbmQ6Im1hcmsiLG1hcms6Iml0YWxpYyIsaWNvbjoiaS1sdWNpZGUtaXRhbGljIix0b29sdGlwOnt0ZXh0OiJJdGFsaWMifX0se2tpbmQ6Im1hcmsiLG1hcms6InN0cmlrZSIsaWNvbjoiaS1sdWNpZGUtc3RyaWtldGhyb3VnaCIsdG9vbHRpcDp7dGV4dDoiU3RyaWtldGhyb3VnaCJ9fV0sW3traW5kOiJoZWFkaW5nIixsZXZlbDoyLGljb246ImktbHVjaWRlLWhlYWRpbmctMiIsdG9vbHRpcDp7dGV4dDoiSGVhZGluZyJ9fSx7a2luZDoiYnVsbGV0TGlzdCIsaWNvbjoiaS1sdWNpZGUtbGlzdCIsdG9vbHRpcDp7dGV4dDoiQnVsbGV0IGxpc3QifX0se2tpbmQ6Im9yZGVyZWRMaXN0IixpY29uOiJpLWx1Y2lkZS1saXN0LW9yZGVyZWQiLHRvb2x0aXA6e3RleHQ6Ik51bWJlcmVkIGxpc3QifX0se2tpbmQ6ImJsb2NrcXVvdGUiLGljb246ImktbHVjaWRlLXF1b3RlIix0b29sdGlwOnt0ZXh0OiJRdW90ZSJ9fV0sW3traW5kOiJsaW5rIixpY29uOiJpLWx1Y2lkZS1saW5rIix0b29sdGlwOnt0ZXh0OiJMaW5rIn19LHtraW5kOiJ1bmRvIixpY29uOiJpLWx1Y2lkZS11bmRvLTIiLHRvb2x0aXA6e3RleHQ6IlVuZG8ifX0se2tpbmQ6InJlZG8iLGljb246ImktbHVjaWRlLXJlZG8tMiIsdG9vbHRpcDp7dGV4dDoiUmVkbyJ9fV1dLEU9cC5yZWYobnVsbCksTj1wLnJlZihudWxsKSxSPXAucmVmKCExKSxQPXAucmVmKCExKSwkPXAucmVmKCExKSxMPXAuY29tcHV0ZWQoKCk9PngudmFsdWUuYWxsVXNlcnN8fHgudmFsdWUub3JnYW5pemF0aW9uSWRzLmxlbmd0aD4wfHx4LnZhbHVlLnJvbGVJZHMubGVuZ3RoPjB8fHgudmFsdWUuZW1haWxzLmxlbmd0aD4wKSx6PXAuY29tcHV0ZWQoKCk9PkwudmFsdWUmJkMudmFsdWUudHJpbSgpLmxlbmd0aD4wJiZodG1sSGFzVGV4dChBLnZhbHVlKSk7ZnVuY3Rpb24gcmVzZXRQcmV2aWV3KCl7RS52YWx1ZT1udWxsLE4udmFsdWU9bnVsbH1hc3luYyBmdW5jdGlvbiBydW5QcmV2aWV3KCl7aWYoTC52YWx1ZSl7Ui52YWx1ZT0hMCxOLnZhbHVlPW51bGw7dHJ5e0UudmFsdWU9YXdhaXQgYS5wcmV2aWV3RGlzcGF0Y2goey4uLngudmFsdWV9KX1jYXRjaChlKXtjb25zdCB0PWU7Yy5hZGQoe3RpdGxlOiJQcmV2aWV3IGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1IudmFsdWU9ITF9fX1mdW5jdGlvbiBvcGVuQ29uZmlybSgpe3oudmFsdWUmJigkLnZhbHVlPSEwKX1hc3luYyBmdW5jdGlvbiBydW5TZW5kKCl7UC52YWx1ZT0hMDt0cnl7Ti52YWx1ZT1hd2FpdCBhLnNlbmREaXNwYXRjaCh7ZmlsdGVyOnsuLi54LnZhbHVlfSxzdWJqZWN0OkMudmFsdWUudHJpbSgpLGJvZHk6QS52YWx1ZX0pLCQudmFsdWU9ITEsRS52YWx1ZT1udWxsLGMuYWRkKHt0aXRsZTpgU2VudCAke04udmFsdWUuc2VudH0gZW1haWwocylgLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IHQ9ZTtjLmFkZCh7dGl0bGU6IkRpc3BhdGNoIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1AudmFsdWU9ITF9fXJldHVybihzLGwsYSxjKT0+e2NvbnN0IGQ9ZSxtPXQseT1uLHc9cixEPW8sQj1pLEY9VnMsSD1xcyxfPWIsaj1vZSxxPWllO2woYDxkaXYke1gocC5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNiJ9LGMpKX0+YCksbChLKGQse3RpdGxlOiJTZW5kIGVtYWlsIixkZXNjcmlwdGlvbjoiQ29tcG9zZSBhIG1lc3NhZ2UgYW5kIGRpc3BhdGNoIGl0IHRvIGEgZmlsdGVyZWQgc2V0IG9mIHVzZXJzLiBSZWNpcGllbnRzIHdobyB0dXJuZWQgb2ZmIGVtYWlsIGFyZSBza2lwcGVkLiIsdmFyaWFudDoibmFrZWQifSxudWxsLGEpKSxsKEsoZCx7dmFyaWFudDoic3VidGxlIix1aTp7Y29udGFpbmVyOiJmbGV4IGZsZXgtY29sIGdhcC00In19LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiQWxsIHVzZXJzIixkZXNjcmlwdGlvbjoiU2VuZCB0byBldmVyeSB1c2VyIChtaW51cyBvcHQtb3V0cykuIixjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIn0se2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOnAudW5yZWYoeCkuYWxsVXNlcnMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLnVucmVmKHgpLmFsbFVzZXJzPWUscmVzZXRQcmV2aWV3XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxwLnVucmVmKHgpLmFsbFVzZXJzP3AuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKToocC5vcGVuQmxvY2soKSxwLmNyZWF0ZUJsb2NrKHAuRnJhZ21lbnQse2tleTowfSxbcC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiT3JnYW5pemF0aW9ucyIsZGVzY3JpcHRpb246Ik1lbWJlcnMgb2YgdGhlIHNlbGVjdGVkIG9yZ2FuaXphdGlvbnMuIn0se2RlZmF1bHQ6cC53aXRoQ3R4KCgpPT5bcC5jcmVhdGVWTm9kZSh3LHttb2RlbFZhbHVlOnAudW5yZWYoeCkub3JnYW5pemF0aW9uSWRzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+cC51bnJlZih4KS5vcmdhbml6YXRpb25JZHM9ZSxyZXNldFByZXZpZXddLGl0ZW1zOnAudW5yZWYoZiksInZhbHVlLWtleSI6InZhbHVlIixtdWx0aXBsZToiIixzZWFyY2hhYmxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgb3JnYW5pemF0aW9ucyIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSxwLmNyZWF0ZVZOb2RlKG0se2xhYmVsOiJSb2xlcyIsZGVzY3JpcHRpb246IlVzZXJzIGFzc2lnbmVkIHRoZSBzZWxlY3RlZCByb2xlcy4ifSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltwLmNyZWF0ZVZOb2RlKHcse21vZGVsVmFsdWU6cC51bnJlZih4KS5yb2xlSWRzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+cC51bnJlZih4KS5yb2xlSWRzPWUscmVzZXRQcmV2aWV3XSxpdGVtczpwLnVucmVmKHYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IHJvbGVzIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLHAuY3JlYXRlVk5vZGUobSx7bGFiZWw6IkVtYWlscyIsZGVzY3JpcHRpb246IlNwZWNpZmljIGFkZHJlc3NlcyAob25lIHBlciBsaW5lIC8gY29tbWEtc2VwYXJhdGVkKS4gT25seSBtYXRjaGluZyB1c2VycyBhcmUgZW1haWxlZC4ifSx7ZGVmYXVsdDpwLndpdGhDdHgoKCk9PltwLmNyZWF0ZVZOb2RlKEQse21vZGVsVmFsdWU6cC51bnJlZihTKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAuaXNSZWYoUyk/Uy52YWx1ZT1lOm51bGwscmVzZXRQcmV2aWV3XSxyb3dzOjMscGxhY2Vob2xkZXI6ImFAZXhhbXBsZS5jb20sIGJAZXhhbXBsZS5jb20iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pXSw2NCkpXTt0KEsobSx7bGFiZWw6IkFsbCB1c2VycyIsZGVzY3JpcHRpb246IlNlbmQgdG8gZXZlcnkgdXNlciAobWludXMgb3B0LW91dHMpLiIsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZSh5LHttb2RlbFZhbHVlOnAudW5yZWYoeCkuYWxsVXNlcnMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLnVucmVmKHgpLmFsbFVzZXJzPWUscmVzZXRQcmV2aWV3XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoSyh5LHttb2RlbFZhbHVlOnAudW5yZWYoeCkuYWxsVXNlcnMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLnVucmVmKHgpLmFsbFVzZXJzPWUscmVzZXRQcmV2aWV3XX0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSkscC51bnJlZih4KS5hbGxVc2Vycz90KCJceDNjIS0tLS1ceDNlIik6KHQoIlx4M2MhLS1bLS1ceDNlIiksdChLKG0se2xhYmVsOiJPcmdhbml6YXRpb25zIixkZXNjcmlwdGlvbjoiTWVtYmVycyBvZiB0aGUgc2VsZWN0ZWQgb3JnYW5pemF0aW9ucy4ifSx7ZGVmYXVsdDpwLndpdGhDdHgoKGUsdCxuLHIpPT57aWYoIXQpcmV0dXJuW3AuY3JlYXRlVk5vZGUodyx7bW9kZWxWYWx1ZTpwLnVucmVmKHgpLm9yZ2FuaXphdGlvbklkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkub3JnYW5pemF0aW9uSWRzPWUscmVzZXRQcmV2aWV3XSxpdGVtczpwLnVucmVmKGYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IG9yZ2FuaXphdGlvbnMiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIl0pXTt0KEsodyx7bW9kZWxWYWx1ZTpwLnVucmVmKHgpLm9yZ2FuaXphdGlvbklkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkub3JnYW5pemF0aW9uSWRzPWUscmVzZXRQcmV2aWV3XSxpdGVtczpwLnVucmVmKGYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IG9yZ2FuaXphdGlvbnMiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLG4scikpfSksXzoxfSxuLHIpKSx0KEsobSx7bGFiZWw6IlJvbGVzIixkZXNjcmlwdGlvbjoiVXNlcnMgYXNzaWduZWQgdGhlIHNlbGVjdGVkIHJvbGVzLiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZSh3LHttb2RlbFZhbHVlOnAudW5yZWYoeCkucm9sZUlkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkucm9sZUlkcz1lLHJlc2V0UHJldmlld10saXRlbXM6cC51bnJlZih2KSwidmFsdWUta2V5IjoidmFsdWUiLG11bHRpcGxlOiIiLHNlYXJjaGFibGU6IiIscGxhY2Vob2xkZXI6IlNlbGVjdCByb2xlcyIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO3QoSyh3LHttb2RlbFZhbHVlOnAudW5yZWYoeCkucm9sZUlkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W2U9PnAudW5yZWYoeCkucm9sZUlkcz1lLHJlc2V0UHJldmlld10saXRlbXM6cC51bnJlZih2KSwidmFsdWUta2V5IjoidmFsdWUiLG11bHRpcGxlOiIiLHNlYXJjaGFibGU6IiIscGxhY2Vob2xkZXI6IlNlbGVjdCByb2xlcyIsY2xhc3M6InctZnVsbCJ9LG51bGwsbixyKSl9KSxfOjF9LG4scikpLHQoSyhtLHtsYWJlbDoiRW1haWxzIixkZXNjcmlwdGlvbjoiU3BlY2lmaWMgYWRkcmVzc2VzIChvbmUgcGVyIGxpbmUgLyBjb21tYS1zZXBhcmF0ZWQpLiBPbmx5IG1hdGNoaW5nIHVzZXJzIGFyZSBlbWFpbGVkLiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShELHttb2RlbFZhbHVlOnAudW5yZWYoUyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLmlzUmVmKFMpP1MudmFsdWU9ZTpudWxsLHJlc2V0UHJldmlld10scm93czozLHBsYWNlaG9sZGVyOiJhQGV4YW1wbGUuY29tLCBiQGV4YW1wbGUuY29tIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoSyhELHttb2RlbFZhbHVlOnAudW5yZWYoUyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5wLmlzUmVmKFMpP1MudmFsdWU9ZTpudWxsLHJlc2V0UHJldmlld10scm93czozLHBsYWNlaG9sZGVyOiJhQGV4YW1wbGUuY29tLCBiQGV4YW1wbGUuY29tIixjbGFzczoidy1mdWxsIn0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSksdCgiXHgzYyEtLV0tLVx4M2UiKSl9KSxfOjF9LGEpKSxsKEsoZCx7dmFyaWFudDoic3VidGxlIix1aTp7Y29udGFpbmVyOiJmbGV4IGZsZXgtY29sIGdhcC00In19LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiU3ViamVjdCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoQix7bW9kZWxWYWx1ZTpwLnVucmVmKEMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5wLmlzUmVmKEMpP0MudmFsdWU9ZTpudWxsLG1heGxlbmd0aDoiMjAwIixwbGFjZWhvbGRlcjoiU3ViamVjdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSkscC5jcmVhdGVWTm9kZShtLHtsYWJlbDoiQm9keSIscmVxdWlyZWQ6IiIsZGVzY3JpcHRpb246IlJpY2ggdGV4dCDigJQgZm9ybWF0dGluZyBpcyBwcmVzZXJ2ZWQgaW4gdGhlIGVtYWlsLiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoKT0+W3AuY3JlYXRlVk5vZGUoRix7bW9kZWxWYWx1ZTpwLnVucmVmKEEpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5wLmlzUmVmKEEpP0EudmFsdWU9ZTpudWxsLCJjb250ZW50LXR5cGUiOiJodG1sIixwbGFjZWhvbGRlcjoiV3JpdGUgeW91ciBtZXNzYWdl4oCmIixjbGFzczoidy1mdWxsIG1pbi1oLTQ4IHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1kZWZhdWx0IFsmXy5Qcm9zZU1pcnJvcl06cHgtNCJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoe2VkaXRvcjplfSk9PltwLmNyZWF0ZVZOb2RlKEgse2VkaXRvcjplLGl0ZW1zOk8sY2xhc3M6Im1iLTIgYm9yZGVyLWIgYm9yZGVyLW11dGVkIHAtMiJ9LG51bGwsOCxbImVkaXRvciJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSldO3QoSyhtLHtsYWJlbDoiU3ViamVjdCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OnAud2l0aEN0eCgoZSx0LG4scik9PntpZighdClyZXR1cm5bcC5jcmVhdGVWTm9kZShCLHttb2RlbFZhbHVlOnAudW5yZWYoQyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnAuaXNSZWYoQyk/Qy52YWx1ZT1lOm51bGwsbWF4bGVuZ3RoOiIyMDAiLHBsYWNlaG9sZGVyOiJTdWJqZWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoSyhCLHttb2RlbFZhbHVlOnAudW5yZWYoQyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PnAuaXNSZWYoQyk/Qy52YWx1ZT1lOm51bGwsbWF4bGVuZ3RoOiIyMDAiLHBsYWNlaG9sZGVyOiJTdWJqZWN0IixjbGFzczoidy1mdWxsIn0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSksdChLKG0se2xhYmVsOiJCb2R5IixyZXF1aXJlZDoiIixkZXNjcmlwdGlvbjoiUmljaCB0ZXh0IOKAlCBmb3JtYXR0aW5nIGlzIHByZXNlcnZlZCBpbiB0aGUgZW1haWwuIn0se2RlZmF1bHQ6cC53aXRoQ3R4KChlLHQsbixyKT0+e2lmKCF0KXJldHVybltwLmNyZWF0ZVZOb2RlKEYse21vZGVsVmFsdWU6cC51bnJlZihBKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cC5pc1JlZihBKT9BLnZhbHVlPWU6bnVsbCwiY29udGVudC10eXBlIjoiaHRtbCIscGxhY2Vob2xkZXI6IldyaXRlIHlvdXIgbWVzc2FnZeKApiIsY2xhc3M6InctZnVsbCBtaW4taC00OCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZGVmYXVsdCBbJl8uUHJvc2VNaXJyb3JdOnB4LTQifSx7ZGVmYXVsdDpwLndpdGhDdHgoKHtlZGl0b3I6ZX0pPT5bcC5jcmVhdGVWTm9kZShILHtlZGl0b3I6ZSxpdGVtczpPLGNsYXNzOiJtYi0yIGJvcmRlci1iIGJvcmRlci1tdXRlZCBwLTIifSxudWxsLDgsWyJlZGl0b3IiXSldKSxfOjF9LDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChLKEYse21vZGVsVmFsdWU6cC51bnJlZihBKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+cC5pc1JlZihBKT9BLnZhbHVlPWU6bnVsbCwiY29udGVudC10eXBlIjoiaHRtbCIscGxhY2Vob2xkZXI6IldyaXRlIHlvdXIgbWVzc2FnZeKApiIsY2xhc3M6InctZnVsbCBtaW4taC00OCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZGVmYXVsdCBbJl8uUHJvc2VNaXJyb3JdOnB4LTQifSx7ZGVmYXVsdDpwLndpdGhDdHgoKHtlZGl0b3I6ZX0sdCxuLHIpPT57aWYoIXQpcmV0dXJuW3AuY3JlYXRlVk5vZGUoSCx7ZWRpdG9yOmUsaXRlbXM6TyxjbGFzczoibWItMiBib3JkZXItYiBib3JkZXItbXV0ZWQgcC0yIn0sbnVsbCw4LFsiZWRpdG9yIl0pXTt0KEsoSCx7ZWRpdG9yOmUsaXRlbXM6TyxjbGFzczoibWItMiBib3JkZXItYiBib3JkZXItbXV0ZWQgcC0yIn0sbnVsbCxuLHIpKX0pLF86MX0sbixyKSl9KSxfOjF9LG4scikpfSksXzoxfSxhKSksbCgnPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMiPicpLGwoSyhfLHtsYWJlbDoiUHJldmlldyByZWNpcGllbnRzIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOnAudW5yZWYoUiksZGlzYWJsZWQ6IXAudW5yZWYoTCksb25DbGljazpydW5QcmV2aWV3fSxudWxsLGEpKSxsKEsoXyx7bGFiZWw6IlNlbmQgZW1haWwiLGljb246ImktbHVjaWRlLXNlbmQiLGRpc2FibGVkOiFwLnVucmVmKHopLG9uQ2xpY2s6b3BlbkNvbmZpcm19LG51bGwsYSkpLGwoIjwvZGl2PiIpLHAudW5yZWYoRSk/bChLKGose2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLXVzZXJzIix0aXRsZTpgJHtwLnVucmVmKEUpLmVuYWJsZWR9IHdpbGwgcmVjZWl2ZSDCtyAke3AudW5yZWYoRSkuc2tpcHBlZH0gc2tpcHBlZCAoZW1haWwgb2ZmKSDCtyAke3AudW5yZWYoRSkudG90YWx9IG1hdGNoZWRgfSxudWxsLGEpKTpsKCJceDNjIS0tLS1ceDNlIikscC51bnJlZihOKT9sKEsoaix7Y29sb3I6cC51bnJlZihOKS5mYWlsZWQ/Indhcm5pbmciOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLW1haWwtY2hlY2siLHRpdGxlOmBTZW50ICR7cC51bnJlZihOKS5zZW50fSwgZmFpbGVkICR7cC51bnJlZihOKS5mYWlsZWR9LCBza2lwcGVkICR7cC51bnJlZihOKS5za2lwcGVkfSBvZiAke3AudW5yZWYoTikudG90YWx9IG1hdGNoZWRgfSxudWxsLGEpKTpsKCJceDNjIS0tLS1ceDNlIiksbChLKHEse29wZW46cC51bnJlZigkKSwib25VcGRhdGU6b3BlbiI6ZT0+cC5pc1JlZigkKT8kLnZhbHVlPWU6bnVsbCx0aXRsZToiU2VuZCB0aGlzIGVtYWlsPyIsdWk6e2Zvb3RlcjoianVzdGlmeS1lbmQifX0se2JvZHk6cC53aXRoQ3R4KChlLHQsbixyKT0+e2lmKCF0KXJldHVybltwLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LFtwLmNyZWF0ZVRleHRWTm9kZSgiIFRoaXMgd2lsbCBlbWFpbCAiKSxwLmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwscC50b0Rpc3BsYXlTdHJpbmcocC51bnJlZihFKT9wLnVucmVmKEUpLmVuYWJsZWQ6InRoZSBtYXRjaGluZyIpLDEpLHAuY3JlYXRlVGV4dFZOb2RlKCIgdXNlcihzKS4gUmVjaXBpZW50cyB3aG8gZGlzYWJsZWQgZW1haWwgbm90aWZpY2F0aW9ucyBhcmUgc2tpcHBlZCBhdXRvbWF0aWNhbGx5LiAiKV0pXTt0KGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7cn0+IFRoaXMgd2lsbCBlbWFpbCA8c3Ryb25nJHtyfT4ke1EocC51bnJlZihFKT9wLnVucmVmKEUpLmVuYWJsZWQ6InRoZSBtYXRjaGluZyIpfTwvc3Ryb25nPiB1c2VyKHMpLiBSZWNpcGllbnRzIHdobyBkaXNhYmxlZCBlbWFpbCBub3RpZmljYXRpb25zIGFyZSBza2lwcGVkIGF1dG9tYXRpY2FsbHkuIDwvcD5gKX0pLGZvb3RlcjpwLndpdGhDdHgoKGUsdCxuLHIpPT57aWYoIXQpcmV0dXJuW3AuY3JlYXRlVk5vZGUoXyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PiQudmFsdWU9ITF9LG51bGwsOCxbIm9uQ2xpY2siXSkscC5jcmVhdGVWTm9kZShfLHtjb2xvcjoicHJpbWFyeSIsbGFiZWw6IlNlbmQiLGxvYWRpbmc6cC51bnJlZihQKSxvbkNsaWNrOnJ1blNlbmR9LG51bGwsOCxbImxvYWRpbmciXSldO3QoSyhfLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6ZT0+JC52YWx1ZT0hMX0sbnVsbCxuLHIpKSx0KEsoXyx7Y29sb3I6InByaW1hcnkiLGxhYmVsOiJTZW5kIixsb2FkaW5nOnAudW5yZWYoUCksb25DbGljazpydW5TZW5kfSxudWxsLG4scikpfSksXzoxfSxhKSksbCgiPC9kaXY+Iil9fX0pLFFzPVhzLnNldHVwO1hzLnNldHVwPShlLHQpPT57Y29uc3Qgbj1wLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obi5tb2R1bGVzfHwobi5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9zeXN0ZW0vYXBwL2NvbXBvbmVudHMvU3lzdGVtL1N5c3RlbUVtYWlsRGlzcGF0Y2gudnVlIiksUXM/UXMoZSx0KTp2b2lkIDB9O2NvbnN0IFpzPU9iamVjdC5hc3NpZ24oWHMse19fbmFtZToiU3lzdGVtRW1haWxEaXNwYXRjaCJ9KSxZcz1wLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJub3RpZmljYXRpb25zIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cDplPT4oZih7dGl0bGU6IlN5c3RlbSDCtyBOb3RpZmljYXRpb25zIn0pLChlLHQsbixyKT0+e3QoSyhacyxyLG51bGwsbikpfSl9KSxlbD1Zcy5zZXR1cDtZcy5zZXR1cD0oZSx0KT0+e2NvbnN0IG49cC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKG4ubW9kdWxlc3x8KG4ubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0vbm90aWZpY2F0aW9ucy52dWUiKSxlbD9lbChlLHQpOnZvaWQgMH07ZXhwb3J0e1lzIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1ub3RpZmljYXRpb25zLUIwbVhVaHZJLm1qcy5tYXAK", "chunks/build/notifications-Bkfp5RaA.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9Td2l0Y2gtQnlXMEJVTGkubWpzIjtpbXBvcnR7XyBhcyBsfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHt2IGFzIG8saCBhcyBuLGEgYXMgaSxpIGFzIHIsXyBhcyBzfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dyBhcyB1fWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIG0sZiBhcyBkLHQgYXMgY31mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0xhYmVsLUJVV0x6eUdMLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9WaXN1YWxseUhpZGRlbklucHV0LUQ3bUdQX0pXLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2NvbnN0IHA9by5kZWZpbmVDb21wb25lbnQoe19fbmFtZToibm90aWZpY2F0aW9ucyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAocCl7Y29uc3QgZj1uKCksYj1pKCksZz17ZW1haWw6ITAscHJvZHVjdF91cGRhdGVzOiEwLHdlZWtseV9kaWdlc3Q6ITEsaW1wb3J0YW50X3VwZGF0ZXM6ITB9LFY9by5yZWYoey4uLmd9KSx5PW8ucmVmKCExKSx7ZGF0YTp4LGVycm9yOnZ9PXIoInVzZXItbm90aWZpY2F0aW9uLXByZWZzIiwoKT0+Zi5mZXRjaFVzZXJOb3RpZmljYXRpb25TZXR0aW5ncygpLHtkZWZhdWx0OigpPT4oey4uLmd9KX0pO28ud2F0Y2goeCxlPT57ZSYmKFYudmFsdWU9ey4uLmV9KX0se2ltbWVkaWF0ZTohMH0pLHUodik7Y29uc3Qgdz1be25hbWU6InByb2R1Y3RfdXBkYXRlcyIsbGFiZWw6IlByb2R1Y3QgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgbWVzc2FnZXMgYWJvdXQgcHJvZHVjdCB1cGRhdGVzLiJ9LHtuYW1lOiJ3ZWVrbHlfZGlnZXN0IixsYWJlbDoiV2Vla2x5IGRpZ2VzdCIsZGVzY3JpcHRpb246IlJlY2VpdmUgYSB3ZWVrbHkgc3VtbWFyeS4ifSx7bmFtZToiaW1wb3J0YW50X3VwZGF0ZXMiLGxhYmVsOiJJbXBvcnRhbnQgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgc2VjdXJpdHkgYW5kIGJpbGxpbmcgdXBkYXRlcy4ifV07YXN5bmMgZnVuY3Rpb24gcGVyc2lzdCgpe3RyeXthd2FpdCBmLnVwZGF0ZVVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyh7Li4uVi52YWx1ZX0pLGIuYWRkKHt0aXRsZToiUHJlZmVyZW5jZXMgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoe2IuYWRkKHt0aXRsZToiRmFpbGVkIHRvIHNhdmUgcHJlZmVyZW5jZXMiLGNvbG9yOiJlcnJvciJ9KX19ZnVuY3Rpb24gb25FbWFpbFRvZ2dsZShlKXtlP3BlcnNpc3QoKTp5LnZhbHVlPSEwfWZ1bmN0aW9uIGNvbmZpcm1EaXNhYmxlKCl7eS52YWx1ZT0hMSxwZXJzaXN0KCl9ZnVuY3Rpb24gY2FuY2VsRGlzYWJsZSgpe1YudmFsdWUuZW1haWw9ITAseS52YWx1ZT0hMX1yZXR1cm4obixpLHIsdSk9Pntjb25zdCBwPWUsZj10LGI9YSxnPWwseD1zO2koYDxkaXYke20oby5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LHUpKX0+YCksaShkKHAse3RpdGxlOiJOb3RpZmljYXRpb25zIixkZXNjcmlwdGlvbjoiTWFuYWdlIHlvdXIgbm90aWZpY2F0aW9uIHNldHRpbmdzLiIsdmFyaWFudDoibmFrZWQiLGNsYXNzOiJtYi00In0sbnVsbCxyKSksaShkKHAse3ZhcmlhbnQ6InN1YnRsZSIsdWk6e2NvbnRhaW5lcjoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX0se2RlZmF1bHQ6by53aXRoQ3R4KChlLHQsYSxsKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKGYse25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwgbm90aWZpY2F0aW9ucyIsZGVzY3JpcHRpb246Ik1hc3RlciBzd2l0Y2guIFR1cm4gb2ZmIHRvIHN0b3AgQUxMIGVtYWlsIOKAlCBpbmNsdWRpbmcgYmlsbGluZyBhbmQgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcy4iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbm90LWxhc3Q6cGItNCBnYXAtMiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoYix7bW9kZWxWYWx1ZTpvLnVucmVmKFYpLmVtYWlsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+by51bnJlZihWKS5lbWFpbD1lLG9uRW1haWxUb2dnbGVdfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLChvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soby5GcmFnbWVudCxudWxsLG8ucmVuZGVyTGlzdCh3LGU9Pm8uY3JlYXRlVk5vZGUoZix7a2V5OmUubmFtZSxuYW1lOmUubmFtZSxsYWJlbDplLmxhYmVsLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24sY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBub3QtbGFzdDpwYi00IHB0LTQgZ2FwLTIifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKGIse21vZGVsVmFsdWU6by51bnJlZihWKVtlLm5hbWVdLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbdD0+by51bnJlZihWKVtlLm5hbWVdPXQscGVyc2lzdF0sZGlzYWJsZWQ6IW8udW5yZWYoVikuZW1haWx9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldKSxfOjJ9LDEwMzIsWyJuYW1lIiwibGFiZWwiLCJkZXNjcmlwdGlvbiJdKSksNjQpKV07dChkKGYse25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwgbm90aWZpY2F0aW9ucyIsZGVzY3JpcHRpb246Ik1hc3RlciBzd2l0Y2guIFR1cm4gb2ZmIHRvIHN0b3AgQUxMIGVtYWlsIOKAlCBpbmNsdWRpbmcgYmlsbGluZyBhbmQgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcy4iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbm90LWxhc3Q6cGItNCBnYXAtMiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGEsbCk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZShiLHttb2RlbFZhbHVlOm8udW5yZWYoVikuZW1haWwsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltlPT5vLnVucmVmKFYpLmVtYWlsPWUsb25FbWFpbFRvZ2dsZV19LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KGQoYix7bW9kZWxWYWx1ZTpvLnVucmVmKFYpLmVtYWlsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbZT0+by51bnJlZihWKS5lbWFpbD1lLG9uRW1haWxUb2dnbGVdfSxudWxsLGEsbCkpfSksXzoxfSxhLGwpKSx0KCJceDNjIS0tWy0tXHgzZSIpLGModyxlPT57dChkKGYse2tleTplLm5hbWUsbmFtZTplLm5hbWUsbGFiZWw6ZS5sYWJlbCxkZXNjcmlwdGlvbjplLmRlc2NyaXB0aW9uLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbm90LWxhc3Q6cGItNCBwdC00IGdhcC0yIn0se2RlZmF1bHQ6by53aXRoQ3R4KCh0LGEsbCxuKT0+e2lmKCFhKXJldHVybltvLmNyZWF0ZVZOb2RlKGIse21vZGVsVmFsdWU6by51bnJlZihWKVtlLm5hbWVdLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbdD0+by51bnJlZihWKVtlLm5hbWVdPXQscGVyc2lzdF0sZGlzYWJsZWQ6IW8udW5yZWYoVikuZW1haWx9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldO2EoZChiLHttb2RlbFZhbHVlOm8udW5yZWYoVilbZS5uYW1lXSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6W3Q9Pm8udW5yZWYoVilbZS5uYW1lXT10LHBlcnNpc3RdLGRpc2FibGVkOiFvLnVucmVmKFYpLmVtYWlsfSxudWxsLGwsbikpfSksXzoyfSxhLGwpKX0pLHQoIlx4M2MhLS1dLS1ceDNlIil9KSxfOjF9LHIpKSxpKGQoZyx7b3BlbjpvLnVucmVmKHkpLCJvblVwZGF0ZTpvcGVuIjplPT5vLmlzUmVmKHkpP3kudmFsdWU9ZTpudWxsLHRpdGxlOiJUdXJuIG9mZiBhbGwgZW1haWw/Iix1aTp7Zm9vdGVyOiJqdXN0aWZ5LWVuZCJ9fSx7Ym9keTpvLndpdGhDdHgoKGUsdCxhLGwpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sW28uY3JlYXRlVGV4dFZOb2RlKCIgWW91IHdpbGwgbm8gbG9uZ2VyIHJlY2VpdmUgIiksby5jcmVhdGVWTm9kZSgic3Ryb25nIixudWxsLCJhbnkiKSxvLmNyZWF0ZVRleHRWTm9kZSgiIGVtYWlsIGZyb20gdXMg4oCUIGluY2x1ZGluZyAiKSxvLmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwsImJpbGxpbmcgbm90aWNlcywgc2VjdXJpdHkgYWxlcnRzLCBhbmQgb3RoZXIgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcyIpLG8uY3JlYXRlVGV4dFZOb2RlKCIuIFlvdSBjYW4gdHVybiBpdCBiYWNrIG9uIGF0IGFueSB0aW1lLiAiKV0pXTt0KGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7bH0+IFlvdSB3aWxsIG5vIGxvbmdlciByZWNlaXZlIDxzdHJvbmcke2x9PmFueTwvc3Ryb25nPiBlbWFpbCBmcm9tIHVzIOKAlCBpbmNsdWRpbmcgPHN0cm9uZyR7bH0+YmlsbGluZyBub3RpY2VzLCBzZWN1cml0eSBhbGVydHMsIGFuZCBvdGhlciBpbXBvcnRhbnQgYWNjb3VudCB1cGRhdGVzPC9zdHJvbmc+LiBZb3UgY2FuIHR1cm4gaXQgYmFjayBvbiBhdCBhbnkgdGltZS4gPC9wPmApfSksZm9vdGVyOm8ud2l0aEN0eCgoZSx0LGEsbCk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSh4LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJLZWVwIGVtYWlsIG9uIixvbkNsaWNrOmNhbmNlbERpc2FibGV9KSxvLmNyZWF0ZVZOb2RlKHgse2NvbG9yOiJlcnJvciIsbGFiZWw6IlR1cm4gb2ZmIGFsbCBlbWFpbCIsbG9hZGluZzohMSxvbkNsaWNrOmNvbmZpcm1EaXNhYmxlfSldO3QoZCh4LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJLZWVwIGVtYWlsIG9uIixvbkNsaWNrOmNhbmNlbERpc2FibGV9LG51bGwsYSxsKSksdChkKHgse2NvbG9yOiJlcnJvciIsbGFiZWw6IlR1cm4gb2ZmIGFsbCBlbWFpbCIsbG9hZGluZzohMSxvbkNsaWNrOmNvbmZpcm1EaXNhYmxlfSxudWxsLGEsbCkpfSksXzoxfSxyKSksaSgiPC9kaXY+Iil9fX0pLGY9cC5zZXR1cDtwLnNldHVwPShlLHQpPT57Y29uc3QgYT1vLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy9ub3RpZmljYXRpb25zLnZ1ZSIpLGY/ZihlLHQpOnZvaWQgMH07ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vdGlmaWNhdGlvbnMtQmtmcDVSYUEubWpzLm1hcAo=", "chunks/build/organization-BZq8z0dr.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyBvfWZyb20iLi9EYXNoYm9hcmRUb29sYmFyLUJ0QUJZektILm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vTmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzIjtpbXBvcnR7diBhcyByLHUgYXMgdCxoIGFzIGEsYWYgYXMgcyxhZyBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBtfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL2lzVmFsdWVFcXVhbE9yRXhpc3QtRG1QeW41Yk4ubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgdT1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJvcmdhbml6YXRpb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHUpe3Qoe3RpdGxlOiJPcmdhbml6YXRpb24ifSk7Y29uc3QgcD1hKCksZD1yLmNvbXB1dGVkKCgpPT5wLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxjPXIuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVt7bGFiZWw6IkdlbmVyYWwiLGljb246ImktbHVjaWRlLWJ1aWxkaW5nIix0bzoiL29yZ2FuaXphdGlvbiIsZXhhY3Q6ITB9LHtsYWJlbDoiTWVtYmVycyIsaWNvbjoiaS1sdWNpZGUtdXNlcnMiLHRvOiIvb3JnYW5pemF0aW9uL21lbWJlcnMifSx7bGFiZWw6IlJvbGVzIixpY29uOiJpLWx1Y2lkZS1zaGllbGQiLHRvOiIvb3JnYW5pemF0aW9uL3JvbGVzIn1dO3JldHVybiBzKGQudmFsdWUsImJpbGxpbmc6cmVhZCIpJiZlLnB1c2goe2xhYmVsOiJJbnZvaWNlIixpY29uOiJpLWx1Y2lkZS1maWxlLXRleHQiLHRvOiIvb3JnYW5pemF0aW9uL2ludm9pY2UifSksW2VdfSk7cmV0dXJuKHQsYSxzLHUpPT57Y29uc3QgcD1vLGQ9aSxnPWw7YShuKGUsci5tZXJnZVByb3BzKHtpZDoib3JnYW5pemF0aW9uIix1aTp7Ym9keToibGc6cHktMTIifX0sdSkse2hlYWRlcjpyLndpdGhDdHgoKGUsbyxpLHQpPT57aWYoIW8pcmV0dXJuW3IuY3JlYXRlVk5vZGUobSx7dGl0bGU6Ik9yZ2FuaXphdGlvbiJ9KSxyLmNyZWF0ZVZOb2RlKHAsbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKCk9PltyLmNyZWF0ZVZOb2RlKGQse2l0ZW1zOnIudW5yZWYoYyksaGlnaGxpZ2h0OiIiLGNsYXNzOiItbXgtMSBmbGV4LTEifSxudWxsLDgsWyJpdGVtcyJdKV0pLF86MX0pXTtvKG4obSx7dGl0bGU6Ik9yZ2FuaXphdGlvbiJ9LG51bGwsaSx0KSksbyhuKHAsbnVsbCx7ZGVmYXVsdDpyLndpdGhDdHgoKGUsbyxpLHQpPT57aWYoIW8pcmV0dXJuW3IuY3JlYXRlVk5vZGUoZCx7aXRlbXM6ci51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXTtvKG4oZCx7aXRlbXM6ci51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsaSx0KSl9KSxfOjF9LGksdCkpfSksYm9keTpyLndpdGhDdHgoKGUsbyxpLHQpPT57aWYoIW8pcmV0dXJuW3IuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC00IHNtOmdhcC02IGxnOmdhcC0xMiB3LWZ1bGwgbGc6bWF4LXctNHhsIG14LWF1dG8ifSxbci5jcmVhdGVWTm9kZShnKV0pXTtvKGA8ZGl2IGNsYXNzPSJmbGV4IGZsZXgtY29sIGdhcC00IHNtOmdhcC02IGxnOmdhcC0xMiB3LWZ1bGwgbGc6bWF4LXctNHhsIG14LWF1dG8iJHt0fT5gKSxvKG4oZyxudWxsLG51bGwsaSx0KSksbygiPC9kaXY+Iil9KSxfOjF9LHMpKX19fSkscD11LnNldHVwO3Uuc2V0dXA9KGUsbyk9Pntjb25zdCBpPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihpLm1vZHVsZXN8fChpLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL2F1dGgvYXBwL3BhZ2VzL29yZ2FuaXphdGlvbi52dWUiKSxwP3AoZSxvKTp2b2lkIDB9O2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1vcmdhbml6YXRpb24tQlpxOHowZHIubWpzLm1hcAo=", "chunks/build/overlay-CjyBzL1C.mjs": "ZnVuY3Rpb24gcG9pbnRlckRvd25PdXRzaWRlKGUsdD17fSl7Y29uc3Qgbj1lLmRldGFpbC5vcmlnaW5hbEV2ZW50LGk9bi50YXJnZXQ7aT8uaXNDb25uZWN0ZWQ/dC5zY3JvbGxhYmxlJiYobi5vZmZzZXRYPmkuY2xpZW50V2lkdGh8fG4ub2Zmc2V0WT5pLmNsaWVudEhlaWdodCkmJmUucHJldmVudERlZmF1bHQoKTplLnByZXZlbnREZWZhdWx0KCl9ZXhwb3J0e3BvaW50ZXJEb3duT3V0c2lkZSBhcyBwfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3ZlcmxheS1DanlCekwxQy5tanMubWFwCg==", "chunks/build/products-Dj-DMVc1.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7diBhcyBsLHUgYXMgdCxhLGkgYXMgcixfIGFzIG8sYiBhcyBufWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBpfWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHt1fWZyb20iLi91c2VQcm9kdWN0QXBpLUJadU5qT2hrLm1qcyI7aW1wb3J0e18gYXMgZH1mcm9tIi4vRm9ybS1DZU5mMUk1cS5tanMiO2ltcG9ydHtfIGFzIHN9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIGN9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgbX1mcm9tIi4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtpbXBvcnR7XyBhcyBwfWZyb20iLi9TZWxlY3QtRGlhaWxmVWMubWpzIjtpbXBvcnR7XyBhcyBmfWZyb20iLi9Ta2VsZXRvbi1CZnRxeUdwMy5tanMiO2ltcG9ydHtfIGFzIHZ9ZnJvbSIuL0JhZGdlLUJCMEtsTVFWLm1qcyI7aW1wb3J0e18gYXMgYn1mcm9tIi4vRHJvcGRvd25NZW51LUNlY1BjZUphLm1qcyI7aW1wb3J0e18gYXMgVn1mcm9tIi4vRGFzaGJvYXJkTmF2YmFyLTJKcFFxd0o3Lm1qcyI7aW1wb3J0e3cgYXMgeX1mcm9tIi4vZXJyb3ItSlhTR3V1SUEubWpzIjtpbXBvcnR7ZiBhcyBfLG8gYXMgZyx0IGFzIGgscSBhcyB3fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0e28gYXMgeCxfIGFzIEMsRyBhcyBOLHMgYXMgVX1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi91c2VEaXJlY3Rpb24tRDJhbU9McUYubWpzIjtpbXBvcnQiLi91c2VGb3JtQ29udHJvbC1CTS1NZldtby5tanMiO2ltcG9ydCIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Sb3ZpbmdGb2N1c0dyb3VwLUJyYXFDWEhfLm1qcyI7aW1wb3J0Ii4vdXRpbHMtREluN0VMWVYubWpzIjtpbXBvcnQiLi91c2VGaWx0ZXItQ2xDWmFvaTgubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmROYXZiYXItcGtJRWFkT0oubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyVG9nZ2xlLUNITU1pYl9XLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLUNRQ1pPdFhILm1qcyI7aW1wb3J0Ii4vdXNlTGF5ZXJSZWdpc3RyeS1DOUNCMjBVSC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBrPVsiVVNEIiwiRVVSIiwiR0JQIiwiVk5EIiwiSlBZIiwiQVVEIiwiQ0FEIl0sUD14KHtuYW1lOlUoKS5taW4oMSkubWF4KDIwMCksZGVzY3JpcHRpb246VSgpLm1heCgyZTMpLm9wdGlvbmFsKCksdHlwZTpDKFsib25lX3RpbWUiLCJyZWN1cnJpbmciXSkuZGVmYXVsdCgib25lX3RpbWUiKSxwcmljZTpOKCkuaW50KCkubWluKDApLHByaWNlX2N1cnJlbmN5OkMoaykuZGVmYXVsdCgiVVNEIiksYmlsbGluZ19pbnRlcnZhbDpDKFsibW9udGgiLCJ5ZWFyIl0pLm9wdGlvbmFsKCksc3RhdHVzOkMoWyJhY3RpdmUiLCJpbmFjdGl2ZSJdKS5kZWZhdWx0KCJhY3RpdmUiKX0pO1AucmVmaW5lKGU9PiJyZWN1cnJpbmciIT09ZS50eXBlfHwhIWUuYmlsbGluZ19pbnRlcnZhbCx7bWVzc2FnZToiYmlsbGluZ19pbnRlcnZhbCBpcyByZXF1aXJlZCBmb3IgcmVjdXJyaW5nIHByb2R1Y3RzIixwYXRoOlsiYmlsbGluZ19pbnRlcnZhbCJdfSksUC5wYXJ0aWFsKCk7Y29uc3Qgaj1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9kdWN0Rm9ybSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2luaXRpYWxWYWx1ZXM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJzdWJtaXQiLCJjYW5jZWwiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBhPWUscj10LG49eCh7bmFtZTpVKCkubWluKDEsIk5hbWUgaXMgcmVxdWlyZWQiKS5tYXgoMjAwKSxkZXNjcmlwdGlvbjpVKCkubWF4KDJlMykub3B0aW9uYWwoKSx0eXBlOkMoWyJvbmVfdGltZSIsInJlY3VycmluZyJdKSxwcmljZTpOKCkuaW50KCkubWluKDAsIlByaWNlIG11c3QgYmUgbm9uLW5lZ2F0aXZlIikscHJpY2VfY3VycmVuY3k6QyhrKSxiaWxsaW5nX2ludGVydmFsOkMoWyJtb250aCIsInllYXIiXSkub3B0aW9uYWwoKSxzdGF0dXM6QyhbImFjdGl2ZSIsImluYWN0aXZlIl0pfSksaT1sLnJlYWN0aXZlKHtuYW1lOmEuaW5pdGlhbFZhbHVlcz8ubmFtZT8/IiIsZGVzY3JpcHRpb246YS5pbml0aWFsVmFsdWVzPy5kZXNjcmlwdGlvbj8/IiIsdHlwZTphLmluaXRpYWxWYWx1ZXM/LnR5cGU/PyJvbmVfdGltZSIscHJpY2U6YS5pbml0aWFsVmFsdWVzPy5wcmljZT8/MCxwcmljZV9jdXJyZW5jeTphLmluaXRpYWxWYWx1ZXM/LnByaWNlX2N1cnJlbmN5Pz8iVVNEIixiaWxsaW5nX2ludGVydmFsOmEuaW5pdGlhbFZhbHVlcz8uYmlsbGluZ19pbnRlcnZhbD8/dm9pZCAwLHN0YXR1czphLmluaXRpYWxWYWx1ZXM/LnN0YXR1cz8/ImFjdGl2ZSJ9KSx1PVt7bGFiZWw6Ik9uZS10aW1lIix2YWx1ZToib25lX3RpbWUifSx7bGFiZWw6IlJlY3VycmluZyIsdmFsdWU6InJlY3VycmluZyJ9XSxmPVt7bGFiZWw6Ik1vbnRobHkiLHZhbHVlOiJtb250aCJ9LHtsYWJlbDoiWWVhcmx5Iix2YWx1ZToieWVhciJ9XSx2PVt7bGFiZWw6IkFjdGl2ZSIsdmFsdWU6ImFjdGl2ZSJ9LHtsYWJlbDoiSW5hY3RpdmUiLHZhbHVlOiJpbmFjdGl2ZSJ9XSxiPWsubWFwKGU9Pih7bGFiZWw6ZSx2YWx1ZTplfSkpO2Z1bmN0aW9uIG9uU3VibWl0KGUpe3IoInN1Ym1pdCIsZS5kYXRhKX1yZXR1cm4gbC53YXRjaCgoKT0+aS50eXBlLGU9Pnsib25lX3RpbWUiPT09ZSYmKGkuYmlsbGluZ19pbnRlcnZhbD12b2lkIDApfSksKHQsYSxWLHkpPT57Y29uc3QgZz1zLGg9Yyx3PW0seD1wLEM9bzthKF8oZCxsLm1lcmdlUHJvcHMoe3NjaGVtYTpsLnVucmVmKG4pLHN0YXRlOmwudW5yZWYoaSksY2xhc3M6InNwYWNlLXktNCIsb25TdWJtaXQ6b25TdWJtaXR9LHkpLHtkZWZhdWx0Omwud2l0aEN0eCgodCxhLG8sbik9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiTmFtZSIsbmFtZToibmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoaCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkubmFtZT1lLHBsYWNlaG9sZGVyOiJQcm9kdWN0IG5hbWUiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IkRlc2NyaXB0aW9uIixuYW1lOiJkZXNjcmlwdGlvbiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUodyx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLmRlc2NyaXB0aW9uLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLmRlc2NyaXB0aW9uPWUscGxhY2Vob2xkZXI6Ik9wdGlvbmFsIGRlc2NyaXB0aW9uIixyb3dzOjMsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQifSxbbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiVHlwZSIsbmFtZToidHlwZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnR5cGUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkudHlwZT1lLGl0ZW1zOnUsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLCJyZWN1cnJpbmciPT09bC51bnJlZihpKS50eXBlPyhsLm9wZW5CbG9jaygpLGwuY3JlYXRlQmxvY2soZyx7a2V5OjAsbGFiZWw6IkJpbGxpbmcgSW50ZXJ2YWwiLG5hbWU6ImJpbGxpbmdfaW50ZXJ2YWwiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpsLndpdGhDdHgoKCk9PltsLmNyZWF0ZVZOb2RlKHgse21vZGVsVmFsdWU6bC51bnJlZihpKS5iaWxsaW5nX2ludGVydmFsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLmJpbGxpbmdfaW50ZXJ2YWw9ZSxpdGVtczpmLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSk6bC5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQifSxbbC5jcmVhdGVWTm9kZShnLHtsYWJlbDoiUHJpY2UiLG5hbWU6InByaWNlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShoLHttb2RlbFZhbHVlOmwudW5yZWYoaSkucHJpY2UsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkucHJpY2U9ZSxtb2RlbE1vZGlmaWVyczp7bnVtYmVyOiEwfSx0eXBlOiJudW1iZXIiLG1pbjoiMCIscGxhY2Vob2xkZXI6IjAiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IkN1cnJlbmN5IixuYW1lOiJwcmljZV9jdXJyZW5jeSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoKT0+W2wuY3JlYXRlVk5vZGUoeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5PWUsaXRlbXM6bC51bnJlZihiKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KV0pLGwuY3JlYXRlVk5vZGUoZyx7bGFiZWw6IlN0YXR1cyIsbmFtZToic3RhdHVzIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkuc3RhdHVzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnN0YXR1cz1lLGl0ZW1zOnYsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIn0sW2wuY3JlYXRlVk5vZGUoQyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnIoImNhbmNlbCIpfSxudWxsLDgsWyJvbkNsaWNrIl0pLGwuY3JlYXRlVk5vZGUoQyx7dHlwZToic3VibWl0IixsYWJlbDoiU2F2ZSIsbG9hZGluZzplLmxvYWRpbmd9LG51bGwsOCxbImxvYWRpbmciXSldKV07YShfKGcse2xhYmVsOiJOYW1lIixuYW1lOiJuYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGgse21vZGVsVmFsdWU6bC51bnJlZihpKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLm5hbWU9ZSxwbGFjZWhvbGRlcjoiUHJvZHVjdCBuYW1lIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoXyhoLHttb2RlbFZhbHVlOmwudW5yZWYoaSkubmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5uYW1lPWUscGxhY2Vob2xkZXI6IlByb2R1Y3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxyKSl9KSxfOjF9LG8sbikpLGEoXyhnLHtsYWJlbDoiRGVzY3JpcHRpb24iLG5hbWU6ImRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHcse21vZGVsVmFsdWU6bC51bnJlZihpKS5kZXNjcmlwdGlvbiwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5kZXNjcmlwdGlvbj1lLHBsYWNlaG9sZGVyOiJPcHRpb25hbCBkZXNjcmlwdGlvbiIscm93czozLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChfKHcse21vZGVsVmFsdWU6bC51bnJlZihpKS5kZXNjcmlwdGlvbiwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5kZXNjcmlwdGlvbj1lLHBsYWNlaG9sZGVyOiJPcHRpb25hbCBkZXNjcmlwdGlvbiIscm93czozLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEscikpfSksXzoxfSxvLG4pKSxhKGA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0yIGdhcC00IiR7bn0+YCksYShfKGcse2xhYmVsOiJUeXBlIixuYW1lOiJ0eXBlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKHgse21vZGVsVmFsdWU6bC51bnJlZihpKS50eXBlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnR5cGU9ZSxpdGVtczp1LCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoXyh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkudHlwZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS50eXBlPWUsaXRlbXM6dSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxyKSl9KSxfOjF9LG8sbikpLCJyZWN1cnJpbmciPT09bC51bnJlZihpKS50eXBlP2EoXyhnLHtsYWJlbDoiQmlsbGluZyBJbnRlcnZhbCIsbmFtZToiYmlsbGluZ19pbnRlcnZhbCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVWTm9kZSh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkuYmlsbGluZ19pbnRlcnZhbCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5iaWxsaW5nX2ludGVydmFsPWUsaXRlbXM6ZiwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KF8oeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLmJpbGxpbmdfaW50ZXJ2YWwsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkuYmlsbGluZ19pbnRlcnZhbD1lLGl0ZW1zOmYsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGEscikpfSksXzoxfSxvLG4pKTphKCJceDNjIS0tLS1ceDNlIiksYShgPC9kaXY+PGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCIke259PmApLGEoXyhnLHtsYWJlbDoiUHJpY2UiLG5hbWU6InByaWNlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGgse21vZGVsVmFsdWU6bC51bnJlZihpKS5wcmljZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC51bnJlZihpKS5wcmljZT1lLG1vZGVsTW9kaWZpZXJzOntudW1iZXI6ITB9LHR5cGU6Im51bWJlciIsbWluOiIwIixwbGFjZWhvbGRlcjoiMCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXTt0KF8oaCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnByaWNlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnByaWNlPWUsbW9kZWxNb2RpZmllcnM6e251bWJlcjohMH0sdHlwZToibnVtYmVyIixtaW46IjAiLHBsYWNlaG9sZGVyOiIwIixjbGFzczoidy1mdWxsIn0sbnVsbCxhLHIpKX0pLF86MX0sbyxuKSksYShfKGcse2xhYmVsOiJDdXJyZW5jeSIsbmFtZToicHJpY2VfY3VycmVuY3kiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpsLndpdGhDdHgoKGUsdCxhLHIpPT57aWYoIXQpcmV0dXJuW2wuY3JlYXRlVk5vZGUoeCx7bW9kZWxWYWx1ZTpsLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnByaWNlX2N1cnJlbmN5PWUsaXRlbXM6bC51bnJlZihiKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiaXRlbXMiXSldO3QoXyh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkucHJpY2VfY3VycmVuY3ksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkucHJpY2VfY3VycmVuY3k9ZSxpdGVtczpsLnVucmVmKGIpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCxhLHIpKX0pLF86MX0sbyxuKSksYSgiPC9kaXY+IiksYShfKGcse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Omwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVWTm9kZSh4LHttb2RlbFZhbHVlOmwudW5yZWYoaSkuc3RhdHVzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5sLnVucmVmKGkpLnN0YXR1cz1lLGl0ZW1zOnYsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChfKHgse21vZGVsVmFsdWU6bC51bnJlZihpKS5zdGF0dXMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwudW5yZWYoaSkuc3RhdHVzPWUsaXRlbXM6diwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsYSxyKSl9KSxfOjF9LG8sbikpLGEoYDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIiJHtufT5gKSxhKF8oQyx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnIoImNhbmNlbCIpfSxudWxsLG8sbikpLGEoXyhDLHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIixsb2FkaW5nOmUubG9hZGluZ30sbnVsbCxvLG4pKSxhKCI8L2Rpdj4iKX0pLF86MX0sVikpfX19KSxTPWouc2V0dXA7ai5zZXR1cD0oZSx0KT0+e2NvbnN0IGE9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvZHVjdC9hcHAvY29tcG9uZW50cy9Qcm9kdWN0L1Byb2R1Y3RGb3JtLnZ1ZSIpLFM/UyhlLHQpOnZvaWQgMH07Y29uc3QgRD1PYmplY3QuYXNzaWduKGose19fbmFtZToiUHJvZHVjdEZvcm0ifSksQj1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9kdWN0SXRlbSIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3Byb2R1Y3Q6e319LGVtaXRzOlsiZWRpdCIsImRlbGV0ZSJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IGE9ZSxyPXQsbj1sLmNvbXB1dGVkKCgpPT5uZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIix7c3R5bGU6ImN1cnJlbmN5IixjdXJyZW5jeTphLnByb2R1Y3QucHJpY2VfY3VycmVuY3ksbWluaW11bUZyYWN0aW9uRGlnaXRzOjB9KS5mb3JtYXQoYS5wcm9kdWN0LnByaWNlKSksaT1sLmNvbXB1dGVkKCgpPT4ib25lX3RpbWUiPT09YS5wcm9kdWN0LnR5cGU/Ik9uZS10aW1lIjoibW9udGgiPT09YS5wcm9kdWN0LmJpbGxpbmdfaW50ZXJ2YWw/Ii9tb250aCI6Ii95ZWFyIiksdT1bW3tsYWJlbDoiRWRpdCIsaWNvbjoiaS1sdWNpZGUtcGVuY2lsIixvblNlbGVjdDooKT0+cigiZWRpdCIsYS5wcm9kdWN0KX0se2xhYmVsOiJEZWxldGUiLGljb246ImktbHVjaWRlLXRyYXNoLTIiLGNvbG9yOiJlcnJvciIsb25TZWxlY3Q6KCk9PnIoImRlbGV0ZSIsYS5wcm9kdWN0KX1dXTtyZXR1cm4odCxhLHIsZCk9Pntjb25zdCBzPXYsYz1iLG09bzthKGA8ZGl2JHtnKGwubWVyZ2VQcm9wcyh7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxkKSl9PjxkaXYgY2xhc3M9ImZsZXgtMSBtaW4tdy0wIj48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiI+PHNwYW4gY2xhc3M9ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQgdHJ1bmNhdGUiPiR7dyhlLnByb2R1Y3QubmFtZSl9PC9zcGFuPmApLGEoXyhzLHtjb2xvcjoiYWN0aXZlIj09PWUucHJvZHVjdC5zdGF0dXM/InN1Y2Nlc3MiOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6bC53aXRoQ3R4KCh0LGEscixvKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVRleHRWTm9kZShsLnRvRGlzcGxheVN0cmluZyhlLnByb2R1Y3Quc3RhdHVzKSwxKV07YShgJHt3KGUucHJvZHVjdC5zdGF0dXMpfWApfSksXzoxfSxyKSksYSgiPC9kaXY+IiksZS5wcm9kdWN0LmRlc2NyaXB0aW9uP2EoYDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMC41IHRydW5jYXRlIj4ke3coZS5wcm9kdWN0LmRlc2NyaXB0aW9uKX08L3A+YCk6YSgiXHgzYyEtLS0tXHgzZSIpLGEoYDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtaGlnaGxpZ2h0ZWQgZm9udC1zZW1pYm9sZCBtdC0xIj4ke3cobC51bnJlZihuKSl9IDxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIGZvbnQtbm9ybWFsIj4ke3cobC51bnJlZihpKSl9PC9zcGFuPjwvcD48L2Rpdj5gKSxhKF8oYyx7aXRlbXM6dX0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKG0se2ljb246ImktbHVjaWRlLWVsbGlwc2lzLXZlcnRpY2FsIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InNtIn0pXTt0KF8obSx7aWNvbjoiaS1sdWNpZGUtZWxsaXBzaXMtdmVydGljYWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToic20ifSxudWxsLGEscikpfSksXzoxfSxyKSksYSgiPC9kaXY+Iil9fX0pLHE9Qi5zZXR1cDtCLnNldHVwPShlLHQpPT57Y29uc3QgYT1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9kdWN0L2FwcC9jb21wb25lbnRzL1Byb2R1Y3QvUHJvZHVjdEl0ZW0udnVlIikscT9xKGUsdCk6dm9pZCAwfTtjb25zdCBSPU9iamVjdC5hc3NpZ24oQix7X19uYW1lOiJQcm9kdWN0SXRlbSJ9KSxJPWwuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlByb2R1Y3RMaXN0IixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7cHJvZHVjdHM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAoZSx7ZW1pdDpsfSl7Y29uc3QgdD1sO3JldHVybihsLGEscixvKT0+e2NvbnN0IGk9Zix1PW47YShgPGRpdiR7ZyhvKX0+YCksZS5sb2FkaW5nPyhhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksaCgzLGU9PnthKF8oaSx7a2V5OmUsY2xhc3M6ImgtMjAgcm91bmRlZC1sZyJ9LG51bGwscikpfSksYSgiXHgzYyEtLV0tLVx4M2U8L2Rpdj4iKSk6MD09PWUucHJvZHVjdHMubGVuZ3RoPyhhKCc8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBweS0xMiB0ZXh0LW11dGVkIj4nKSxhKF8odSx7bmFtZToiaS1sdWNpZGUtcGFja2FnZSIsY2xhc3M6InNpemUtMTAgbXgtYXV0byBtYi0zIG9wYWNpdHktNDAifSxudWxsLHIpKSxhKCI8cD5ObyBwcm9kdWN0cyB5ZXQ8L3A+PC9kaXY+IikpOihhKCc8ZGl2IGNsYXNzPSJzcGFjZS15LTMiPlx4M2MhLS1bLS1ceDNlJyksaChlLnByb2R1Y3RzLGU9PnthKF8oUix7a2V5OmUuaWQscHJvZHVjdDplLG9uRWRpdDplPT50KCJlZGl0IixlKSxvbkRlbGV0ZTplPT50KCJkZWxldGUiLGUpfSxudWxsLHIpKX0pLGEoIlx4M2MhLS1dLS1ceDNlPC9kaXY+IikpLGEoIjwvZGl2PiIpfX19KSxFPUkuc2V0dXA7SS5zZXR1cD0oZSx0KT0+e2NvbnN0IGE9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGEubW9kdWxlc3x8KGEubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvcHJvZHVjdC9hcHAvY29tcG9uZW50cy9Qcm9kdWN0L1Byb2R1Y3RMaXN0LnZ1ZSIpLEU/RShlLHQpOnZvaWQgMH07Y29uc3QgRj1PYmplY3QuYXNzaWduKEkse19fbmFtZToiUHJvZHVjdExpc3QifSksTT1TeW1ib2woInByb2R1Y3RzIiksTD1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJwcm9kdWN0cyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobil7dCh7dGl0bGU6IlByb2R1Y3RzIn0pO2NvbnN0IGQ9dSgpLHM9YSgpLGM9bC5yZWYoITEpLG09bC5yZWYoITEpLHA9bC5yZWYobnVsbCkse2RhdGE6ZixzdGF0dXM6dixlcnJvcjpiLHJlZnJlc2g6Z309cigicHJvZHVjdHMiLCgpPT5kLmZldGNoUHJvZHVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTt5KGIpO2NvbnN0IGg9bC5jb21wdXRlZCgoKT0+InBlbmRpbmciPT09di52YWx1ZSk7ZnVuY3Rpb24gb3BlbkNyZWF0ZSgpe3AudmFsdWU9bnVsbCxtLnZhbHVlPSEwfWZ1bmN0aW9uIG9wZW5FZGl0KGUpe3AudmFsdWU9ZSxtLnZhbHVlPSEwfWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChlKXtjLnZhbHVlPSEwO3RyeXtjb25zdCBsPSEhcC52YWx1ZTtwLnZhbHVlP2F3YWl0IGQudXBkYXRlUHJvZHVjdChwLnZhbHVlLmlkLGUpOmF3YWl0IGQuY3JlYXRlUHJvZHVjdChlKSxhd2FpdCBnKCksbS52YWx1ZT0hMSxzLmFkZCh7dGl0bGU6bD8iUHJvZHVjdCB1cGRhdGVkIjoiUHJvZHVjdCBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChlKXtjb25zdCBsPWU7cy5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246bD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2MudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVByb2R1Y3QoZSl7YXdhaXQgZC5kZWxldGVQcm9kdWN0KGUpLGF3YWl0IGcoKX1hc3luYyBmdW5jdGlvbiBoYW5kbGVEZWxldGUoZSl7dHJ5e2F3YWl0IGRlbGV0ZVByb2R1Y3QoZS5pZCkscy5hZGQoe3RpdGxlOiJQcm9kdWN0IGRlbGV0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2NvbnN0IGw9ZTtzLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1yZXR1cm4gbC5wcm92aWRlKE0se3Byb2R1Y3RzOmYsZmV0Y2hQcm9kdWN0czphc3luYyBmdW5jdGlvbigpe2F3YWl0IGcoKX0sY3JlYXRlUHJvZHVjdDphc3luYyBmdW5jdGlvbihlKXtyZXR1cm4gZC5jcmVhdGVQcm9kdWN0KGUpfSx1cGRhdGVQcm9kdWN0OmFzeW5jIGZ1bmN0aW9uKGUsbCl7cmV0dXJuIGQudXBkYXRlUHJvZHVjdChlLGwpfSxkZWxldGVQcm9kdWN0OmRlbGV0ZVByb2R1Y3R9KSwodCxhLHIsbik9Pntjb25zdCB1PWUsZD1vLHM9aTthKCJceDNjIS0tWy0tXHgzZSIpLGEoXyh1LHtpZDoicHJvZHVjdHMifSx7aGVhZGVyOmwud2l0aEN0eCgoZSx0LGEscik9PntpZighdClyZXR1cm5bbC5jcmVhdGVWTm9kZShWLHt0aXRsZToiUHJvZHVjdHMifSx7cmlnaHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZShkLHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2R1Y3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksXzoxfSldO3QoXyhWLHt0aXRsZToiUHJvZHVjdHMifSx7cmlnaHQ6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKGQse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvZHVjdCIsb25DbGljazplPT5vcGVuQ3JlYXRlKCl9LG51bGwsOCxbIm9uQ2xpY2siXSldO3QoXyhkLHtpY29uOiJpLWx1Y2lkZS1wbHVzIixsYWJlbDoiTmV3IHByb2R1Y3QiLG9uQ2xpY2s6ZT0+b3BlbkNyZWF0ZSgpfSxudWxsLGEscikpfSksXzoxfSxhLHIpKX0pLGJvZHk6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00In0sW2wuY3JlYXRlVk5vZGUoRix7cHJvZHVjdHM6bC51bnJlZihmKSxsb2FkaW5nOmwudW5yZWYoaCksb25FZGl0Om9wZW5FZGl0LG9uRGVsZXRlOmhhbmRsZURlbGV0ZX0sbnVsbCw4LFsicHJvZHVjdHMiLCJsb2FkaW5nIl0pXSldO3QoYDxkaXYgY2xhc3M9Im1heC13LTN4bCBteC1hdXRvIHAtNCIke3J9PmApLHQoXyhGLHtwcm9kdWN0czpsLnVucmVmKGYpLGxvYWRpbmc6bC51bnJlZihoKSxvbkVkaXQ6b3BlbkVkaXQsb25EZWxldGU6aGFuZGxlRGVsZXRlfSxudWxsLGEscikpLHQoIjwvZGl2PiIpfSksXzoxfSxyKSksYShfKHMse29wZW46bC51bnJlZihtKSwib25VcGRhdGU6b3BlbiI6ZT0+bC5pc1JlZihtKT9tLnZhbHVlPWU6bnVsbCx0aXRsZTpsLnVucmVmKHApPyJFZGl0IHByb2R1Y3QiOiJOZXcgcHJvZHVjdCIsdWk6e2JvZHk6Im92ZXJmbG93LXktYXV0byBtYXgtaC1bODB2aF0ifX0se2JvZHk6bC53aXRoQ3R4KChlLHQsYSxyKT0+e2lmKCF0KXJldHVybltsLmNyZWF0ZVZOb2RlKEQseyJpbml0aWFsLXZhbHVlcyI6bC51bnJlZihwKT97Li4ubC51bnJlZihwKSxkZXNjcmlwdGlvbjpsLnVucmVmKHApLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOmwudW5yZWYoYyksb25TdWJtaXQ6aGFuZGxlU3VibWl0LG9uQ2FuY2VsOmU9Pm0udmFsdWU9ITF9LG51bGwsOCxbImluaXRpYWwtdmFsdWVzIiwibG9hZGluZyIsIm9uQ2FuY2VsIl0pXTt0KF8oRCx7ImluaXRpYWwtdmFsdWVzIjpsLnVucmVmKHApP3suLi5sLnVucmVmKHApLGRlc2NyaXB0aW9uOmwudW5yZWYocCkuZGVzY3JpcHRpb24/P3ZvaWQgMH06dm9pZCAwLGxvYWRpbmc6bC51bnJlZihjKSxvblN1Ym1pdDpoYW5kbGVTdWJtaXQsb25DYW5jZWw6ZT0+bS52YWx1ZT0hMX0sbnVsbCxhLHIpKX0pLF86MX0scikpLGEoIlx4M2MhLS1dLS1ceDNlIil9fX0pLE89TC5zZXR1cDtMLnNldHVwPShlLHQpPT57Y29uc3QgYT1sLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oYS5tb2R1bGVzfHwoYS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9wcm9kdWN0L2FwcC9wYWdlcy9wcm9kdWN0cy52dWUiKSxPP08oZSx0KTp2b2lkIDB9O2V4cG9ydHtMIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1wcm9kdWN0cy1Eai1ETVZjMS5tanMubWFwCg==", "chunks/build/referral-BzPn404Q.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmRQYW5lbC1DRktZU3FjNS5tanMiO2ltcG9ydHtfIGFzIHJ9ZnJvbSIuL1BhZ2VDYXJkLUJ3LVc0cXhzLm1qcyI7aW1wb3J0e18gYXMgYX1mcm9tIi4vQ2FyZC1ub3ZncVJvcC5tanMiO2ltcG9ydHtfIGFzIG99ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgbH1mcm9tIi4vVGFibGUtMFVSbkM4T0gubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9QYWdpbmF0aW9uLUN6ckVpUEpkLm1qcyI7aW1wb3J0e3YgYXMgbix1IGFzIGQsaSxhIGFzIGMsYXogYXMgdSxfIGFzIG0sJCBhcyBmfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7dSBhcyBwfWZyb20iLi91cmwtQmZCb3lqSloubWpzIjtpbXBvcnR7XyBhcyB4fWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7dyBhcyBofWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtmIGFzIHYscSBhcyBnLG8gYXMgeX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi9pbmRleC1CMVBPVExtYS5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgYj1uLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJSZWZlcnJhbENhcmQiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntjb2RlOnt9fSxzZXR1cChlKXtjb25zdCB0PWUscj1jKCksYT1wKCkub3JpZ2luLGw9bi5jb21wdXRlZCgoKT0+YCR7YX0vP3JlZj0ke3QuY29kZX1gKSx7Y29weTpzLGNvcGllZDpkfT11KHtzb3VyY2U6bH0pO2Z1bmN0aW9uIG9uQ29weSgpe3MoKSxyLmFkZCh7dGl0bGU6IkNvcGllZCEiLGNvbG9yOiJzdWNjZXNzIn0pfXJldHVybihlLHQscixhKT0+e2NvbnN0IHM9byxpPW07dChgPGRpdiR7eShuLm1lcmdlUHJvcHMoe2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LGEpKX0+YCksdCh2KHMseyJtb2RlbC12YWx1ZSI6bi51bnJlZihsKSxyZWFkb25seToiIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyB0ZXh0LXNtIn0sbnVsbCxyKSksdCh2KGkse2ljb246bi51bnJlZihkKT8iaS1sdWNpZGUtY2hlY2siOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLG9uQ2xpY2s6b25Db3B5fSxudWxsLHIpKSx0KCI8L2Rpdj4iKX19fSksdz1iLnNldHVwO2Iuc2V0dXA9KGUsdCk9Pntjb25zdCByPW4udXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9jb21wb25lbnRzL1JlZmVycmFsL1JlZmVycmFsQ2FyZC52dWUiKSx3P3coZSx0KTp2b2lkIDB9O2NvbnN0IEM9T2JqZWN0LmFzc2lnbihiLHtfX25hbWU6IlJlZmVycmFsQ2FyZCJ9KSxWPTEwLE49bi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToicmVmZXJyYWwiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKGMpe2Qoe3RpdGxlOiJSZWZlcnJhbCJ9KTtjb25zdCB1PXtmZXRjaFJlZmVycmFsU3RhdHM6ZnVuY3Rpb24oKXtyZXR1cm4gZigiL2FwaS9yZWZlcnJhbC9zdGF0cyIpfX0se2RhdGE6bSxlcnJvcjpwfT1pKCJyZWZlcnJhbC1zdGF0cyIsKCk9PnUuZmV0Y2hSZWZlcnJhbFN0YXRzKCkse2RlZmF1bHQ6KCk9Pih7Y29kZToiIixyZWZlcnJlZENvdW50OjAsdG90YWxFYXJuZWQ6MCxyZWZlcnJhbHM6W119KX0pO2gocCk7Y29uc3QgeT1uLnJlZigiIiksYj1uLnJlZigxKSx3PW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPXkudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGU/bS52YWx1ZS5yZWZlcnJhbHMuZmlsdGVyKHQ9PnQuZW1haWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlKSk6bS52YWx1ZS5yZWZlcnJhbHN9KSxOPW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPShiLnZhbHVlLTEpKlY7cmV0dXJuIHcudmFsdWUuc2xpY2UoZSxlK1YpfSk7bi53YXRjaCh5LCgpPT57Yi52YWx1ZT0xfSk7Y29uc3QgXz1be2FjY2Vzc29yS2V5OiJlbWFpbCIsaGVhZGVyOiJFbWFpbCJ9LHthY2Nlc3NvcktleToic291cmNlIixoZWFkZXI6IlNvdXJjZSIsY2VsbDooe3Jvdzp0fSk9Pm4uaChlLHtsYWJlbDoiaW52aXRlIj09PXQub3JpZ2luYWwuc291cmNlPyJJbnZpdGUiOiJMaW5rIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0pfSx7YWNjZXNzb3JLZXk6InJld2FyZF9wYWlkIixoZWFkZXI6IlN0YXR1cyIsY2VsbDooe3Jvdzp0fSk9Pm4uaChlLHtsYWJlbDp0Lm9yaWdpbmFsLnJld2FyZF9wYWlkPyJSZXdhcmRlZCI6IlBlbmRpbmciLGNvbG9yOnQub3JpZ2luYWwucmV3YXJkX3BhaWQ/InN1Y2Nlc3MiOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUifSl9LHthY2Nlc3NvcktleToiY3JlYXRlZF9hdCIsaGVhZGVyOiJEYXRlIixjZWxsOih7cm93OmV9KT0+bmV3IERhdGUoZS5vcmlnaW5hbC5jcmVhdGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKX1dO3JldHVybihlLGQsaSxjKT0+e2NvbnN0IHU9cixmPWEscD1vLGg9bCxSPXM7ZCh2KHQsbi5tZXJnZVByb3BzKHtpZDoicmVmZXJyYWwifSxjKSx7aGVhZGVyOm4ud2l0aEN0eCgoZSx0LHIsYSk9PntpZighdClyZXR1cm5bbi5jcmVhdGVWTm9kZSh4LHt0aXRsZToiUmVmZXJyYWwifSldO3Qodih4LHt0aXRsZToiUmVmZXJyYWwifSxudWxsLHIsYSkpfSksYm9keTpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJwLTYgc3BhY2UteS02In0sW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0yIGdhcC02In0sW24uY3JlYXRlVk5vZGUodSx7dGl0bGU6IllvdXIgcmVmZXJyYWwgbGluayIsZGVzY3JpcHRpb246IlNoYXJlIHRoaXMgbGluayB0byBpbnZpdGUgb3RoZXJzLiBZb3UnbGwgZWFybiBjcmVkaXRzIHdoZW4gdGhleSB0b3AgdXAgZm9yIHRoZSBmaXJzdCB0aW1lLiIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bi53aXRoQ3R4KCgpPT5bbi51bnJlZihtKS5jb2RlPyhuLm9wZW5CbG9jaygpLG4uY3JlYXRlQmxvY2soQyx7a2V5OjAsY29kZTpuLnVucmVmKG0pLmNvZGV9LG51bGwsOCxbImNvZGUiXSkpOm4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLF86MX0pLG4uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC00In0sW24uY3JlYXRlVk5vZGUoZix7Y2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Om4ud2l0aEN0eCgoKT0+W24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIFJlZmVycmVkICIpLG4uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC0zeGwgZm9udC1ib2xkIHRhYnVsYXItbnVtcyJ9LG4udG9EaXNwbGF5U3RyaW5nKG4udW5yZWYobSkucmVmZXJyZWRDb3VudCksMSldKV0pLF86MX0pLG4uY3JlYXRlVk5vZGUoZix7Y2xhc3M6ImZsZXgtMSJ9LHtkZWZhdWx0Om4ud2l0aEN0eCgoKT0+W24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIEVhcm5lZCAiKSxuLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMifSxuLnRvRGlzcGxheVN0cmluZyhuLnVucmVmKG0pLnRvdGFsRWFybmVkLnRvTG9jYWxlU3RyaW5nKCkpLDEpXSldKSxfOjJ9LDEwMjQpXSldKSxuLmNyZWF0ZVZOb2RlKGYse3VpOntib2R5OiJzbTpwLTAiLGZvb3RlcjoicC0wIn19LHtoZWFkZXI6bi53aXRoQ3R4KCgpPT5bbi5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LFtuLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFJlZmVycmFscyAiKSxuLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6bi51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bi5pc1JlZih5KT95LnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJGaWx0ZXIgYnkgZW1haWzigKYiLHNpemU6InNtIixjbGFzczoidy01NiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSldKSxmb290ZXI6bi53aXRoQ3R4KCgpPT5bbi51bnJlZih3KS5sZW5ndGg+Vj8obi5vcGVuQmxvY2soKSxuLmNyZWF0ZUJsb2NrKFIse2tleTowLHBhZ2U6bi51bnJlZihiKSwib25VcGRhdGU6cGFnZSI6ZT0+bi5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCx0b3RhbDpuLnVucmVmKHcpLmxlbmd0aCwiaXRlbXMtcGVyLXBhZ2UiOlZ9LG51bGwsOCxbInBhZ2UiLCJvblVwZGF0ZTpwYWdlIiwidG90YWwiXSkpOm4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLGRlZmF1bHQ6bi53aXRoQ3R4KCgpPT5bbi5jcmVhdGVWTm9kZShoLHtkYXRhOm4udW5yZWYoTiksY29sdW1uczpffSx7ZW1wdHk6bi53aXRoQ3R4KCgpPT5bbi5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InB5LTggdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyByZWZlcnJhbHMgeWV0LiAiKV0pLF86MX0sOCxbImRhdGEiXSldKSxfOjF9KV0pXTt0KGA8ZGl2IGNsYXNzPSJwLTYgc3BhY2UteS02IiR7YX0+PGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMiBnYXAtNiIke2F9PmApLHQodih1LHt0aXRsZToiWW91ciByZWZlcnJhbCBsaW5rIixkZXNjcmlwdGlvbjoiU2hhcmUgdGhpcyBsaW5rIHRvIGludml0ZSBvdGhlcnMuIFlvdSdsbCBlYXJuIGNyZWRpdHMgd2hlbiB0aGV5IHRvcCB1cCBmb3IgdGhlIGZpcnN0IHRpbWUuIix2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24udW5yZWYobSkuY29kZT8obi5vcGVuQmxvY2soKSxuLmNyZWF0ZUJsb2NrKEMse2tleTowLGNvZGU6bi51bnJlZihtKS5jb2RlfSxudWxsLDgsWyJjb2RlIl0pKTpuLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldO24udW5yZWYobSkuY29kZT90KHYoQyx7Y29kZTpuLnVucmVmKG0pLmNvZGV9LG51bGwscixhKSk6dCgiXHgzYyEtLS0tXHgzZSIpfSksXzoxfSxyLGEpKSx0KGA8ZGl2IGNsYXNzPSJmbGV4IGZsZXgtY29sIGdhcC00IiR7YX0+YCksdCh2KGYse2NsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIFJlZmVycmVkICIpLG4uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC0zeGwgZm9udC1ib2xkIHRhYnVsYXItbnVtcyJ9LG4udG9EaXNwbGF5U3RyaW5nKG4udW5yZWYobSkucmVmZXJyZWRDb3VudCksMSldKV07dChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIiR7YX0+PHAgY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1tdXRlZCIke2F9PiBUb3RhbCBSZWZlcnJlZCA8L3A+PHAgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMiJHthfT4ke2cobi51bnJlZihtKS5yZWZlcnJlZENvdW50KX08L3A+PC9kaXY+YCl9KSxfOjF9LHIsYSkpLHQodihmLHtjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6bi53aXRoQ3R4KChlLHQscixhKT0+e2lmKCF0KXJldHVybltuLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIn0sW24uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkIn0sIiBUb3RhbCBFYXJuZWQgIiksbi5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJ0ZXh0LTN4bCBmb250LWJvbGQgdGFidWxhci1udW1zIn0sbi50b0Rpc3BsYXlTdHJpbmcobi51bnJlZihtKS50b3RhbEVhcm5lZC50b0xvY2FsZVN0cmluZygpKSwxKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iJHthfT48cCBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkIiR7YX0+IFRvdGFsIEVhcm5lZCA8L3A+PHAgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMiJHthfT4ke2cobi51bnJlZihtKS50b3RhbEVhcm5lZC50b0xvY2FsZVN0cmluZygpKX08L3A+PC9kaXY+YCl9KSxfOjF9LHIsYSkpLHQoIjwvZGl2PjwvZGl2PiIpLHQodihmLHt1aTp7Ym9keToic206cC0wIixmb290ZXI6InAtMCJ9fSx7aGVhZGVyOm4ud2l0aEN0eCgoZSx0LHIsYSk9PntpZighdClyZXR1cm5bbi5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LFtuLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFJlZmVycmFscyAiKSxuLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6bi51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bi5pc1JlZih5KT95LnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJGaWx0ZXIgYnkgZW1haWzigKYiLHNpemU6InNtIixjbGFzczoidy01NiJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSldO3QoYDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiIke2F9PjxwIGNsYXNzPSJmb250LXNlbWlib2xkIiR7YX0+IFJlZmVycmFscyA8L3A+YCksdCh2KHAse21vZGVsVmFsdWU6bi51bnJlZih5KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bi5pc1JlZih5KT95LnZhbHVlPWU6bnVsbCxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJGaWx0ZXIgYnkgZW1haWzigKYiLHNpemU6InNtIixjbGFzczoidy01NiJ9LG51bGwscixhKSksdCgiPC9kaXY+Iil9KSxmb290ZXI6bi53aXRoQ3R4KChlLHQscixhKT0+e2lmKCF0KXJldHVybltuLnVucmVmKHcpLmxlbmd0aD5WPyhuLm9wZW5CbG9jaygpLG4uY3JlYXRlQmxvY2soUix7a2V5OjAscGFnZTpuLnVucmVmKGIpLCJvblVwZGF0ZTpwYWdlIjplPT5uLmlzUmVmKGIpP2IudmFsdWU9ZTpudWxsLHRvdGFsOm4udW5yZWYodykubGVuZ3RoLCJpdGVtcy1wZXItcGFnZSI6Vn0sbnVsbCw4LFsicGFnZSIsIm9uVXBkYXRlOnBhZ2UiLCJ0b3RhbCJdKSk6bi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtuLnVucmVmKHcpLmxlbmd0aD5WP3QodihSLHtwYWdlOm4udW5yZWYoYiksIm9uVXBkYXRlOnBhZ2UiOmU9Pm4uaXNSZWYoYik/Yi52YWx1ZT1lOm51bGwsdG90YWw6bi51bnJlZih3KS5sZW5ndGgsIml0ZW1zLXBlci1wYWdlIjpWfSxudWxsLHIsYSkpOnQoIlx4M2MhLS0tLVx4M2UiKX0pLGRlZmF1bHQ6bi53aXRoQ3R4KChlLHQscixhKT0+e2lmKCF0KXJldHVybltuLmNyZWF0ZVZOb2RlKGgse2RhdGE6bi51bnJlZihOKSxjb2x1bW5zOl99LHtlbXB0eTpuLndpdGhDdHgoKCk9PltuLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoicHktOCB0ZXh0LWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIE5vIHJlZmVycmFscyB5ZXQuICIpXSksXzoxfSw4LFsiZGF0YSJdKV07dCh2KGgse2RhdGE6bi51bnJlZihOKSxjb2x1bW5zOl99LHtlbXB0eTpuLndpdGhDdHgoKGUsdCxyLGEpPT57aWYoIXQpcmV0dXJuW24uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJweS04IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCJ9LCIgTm8gcmVmZXJyYWxzIHlldC4gIildO3QoYDxkaXYgY2xhc3M9InB5LTggdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIiR7YX0+IE5vIHJlZmVycmFscyB5ZXQuIDwvZGl2PmApfSksXzoxfSxyLGEpKX0pLF86MX0scixhKSksdCgiPC9kaXY+Iil9KSxfOjF9LGkpKX19fSksXz1OLnNldHVwO04uc2V0dXA9KGUsdCk9Pntjb25zdCByPW4udXNlU1NSQ29udGV4dCgpO3JldHVybihyLm1vZHVsZXN8fChyLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3JlZmVycmFsL2FwcC9wYWdlcy9yZWZlcnJhbC52dWUiKSxfP18oZSx0KTp2b2lkIDB9O2V4cG9ydHtOIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1yZWZlcnJhbC1CelBuNDA0US5tanMubWFwCg==", "chunks/build/roles-DJMD-M_t.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7diBhcyBhLHUgYXMgdCxhIGFzIGwsaSBhcyByLF8gYXMgbyx5IGFzIG4sZCBhcyBzLGUgYXMgaSxFIGFzIGQsRiBhcyB1LEggYXMgYyx0IGFzIHAsYiBhcyBtLFAgYXMgZixhRCBhcyB2LE0gYXMgYixTIGFzIHksVSBhcyBoLFEgYXMgayxtIGFzIGcsTiBhcyB4fWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyB3fWZyb20iLi9Nb2RhbC1CMHlXUHhXXy5tanMiO2ltcG9ydHtfIGFzIFZ9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIEN9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e2kgYXMgQn1mcm9tIi4vaXNWYWx1ZUVxdWFsT3JFeGlzdC1EbVB5bjViTi5tanMiO2ltcG9ydHt1IGFzIF99ZnJvbSIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0e1YgYXMgcX1mcm9tIi4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydHt1IGFzIFN9ZnJvbSIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0e2cgYXMgTix3IGFzICQsZiBhcyBSfWZyb20iLi91dGlscy1ESW43RUxZVi5tanMiO2ltcG9ydHtpIGFzIGp9ZnJvbSIuL1JvdmluZ0ZvY3VzR3JvdXAtQnJhcUNYSF8ubWpzIjtpbXBvcnR7TCBhcyBJfWZyb20iLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydHt1IGFzIHp9ZnJvbSIuL3VzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzIjtpbXBvcnR7dyBhcyBVfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtvIGFzIEQsZiBhcyBGLHQgYXMgUCxxIGFzIEssaiBhcyBNLGsgYXMgTyxnIGFzIEV9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnR7YVggYXMgTH1mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vb3ZlcmxheS1DanlCekwxQy5tanMiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjt2YXIgVD1hLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJSb3ZpbmdGb2N1c0l0ZW0iLHByb3BzOnt0YWJTdG9wSWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxmb2N1c2FibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxsb3dTaGlmdEtleTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbD1qKCkscj1TKCksbz1hLmNvbXB1dGVkKCgpPT50LnRhYlN0b3BJZHx8ciksbj1hLmNvbXB1dGVkKCgpPT5sLmN1cnJlbnRUYWJTdG9wSWQudmFsdWU9PT1vLnZhbHVlKSx7Z2V0SXRlbXM6cyxDb2xsZWN0aW9uSXRlbTppfT14KCk7ZnVuY3Rpb24gaGFuZGxlS2V5ZG93bihlKXtpZigiVGFiIj09PWUua2V5JiZlLnNoaWZ0S2V5KXJldHVybiB2b2lkIGwub25JdGVtU2hpZnRUYWIoKTtpZihlLnRhcmdldCE9PWUuY3VycmVudFRhcmdldClyZXR1cm47Y29uc3Qgcj1OKGUsbC5vcmllbnRhdGlvbi52YWx1ZSxsLmRpci52YWx1ZSk7aWYodm9pZCAwIT09cil7aWYoZS5tZXRhS2V5fHxlLmN0cmxLZXl8fGUuYWx0S2V5fHwhdC5hbGxvd1NoaWZ0S2V5JiZlLnNoaWZ0S2V5KXJldHVybjtlLnByZXZlbnREZWZhdWx0KCk7bGV0IG89Wy4uLnMoKS5tYXAoZT0+ZS5yZWYpLmZpbHRlcihlPT4iIiE9PWUuZGF0YXNldC5kaXNhYmxlZCldO2lmKCJsYXN0Ij09PXIpby5yZXZlcnNlKCk7ZWxzZSBpZigicHJldiI9PT1yfHwibmV4dCI9PT1yKXsicHJldiI9PT1yJiZvLnJldmVyc2UoKTtjb25zdCBhPW8uaW5kZXhPZihlLmN1cnJlbnRUYXJnZXQpO289bC5sb29wLnZhbHVlPyQobyxhKzEpOm8uc2xpY2UoYSsxKX1hLm5leHRUaWNrKCgpPT5SKG8pKX19cmV0dXJuKGUsdCk9PihhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soYS51bnJlZihpKSxudWxsLHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoYS51bnJlZihmKSx7dGFiaW5kZXg6bi52YWx1ZT8wOi0xLCJkYXRhLW9yaWVudGF0aW9uIjphLnVucmVmKGwpLm9yaWVudGF0aW9uLnZhbHVlLCJkYXRhLWFjdGl2ZSI6ZS5hY3RpdmU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjplLmZvY3VzYWJsZT92b2lkIDA6IiIsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxvbk1vdXNlZG93bjp0WzBdfHwodFswXT10PT57ZS5mb2N1c2FibGU/YS51bnJlZihsKS5vbkl0ZW1Gb2N1cyhvLnZhbHVlKTp0LnByZXZlbnREZWZhdWx0KCl9KSxvbkZvY3VzOnRbMV18fCh0WzFdPWU9PmEudW5yZWYobCkub25JdGVtRm9jdXMoby52YWx1ZSkpLG9uS2V5ZG93bjpoYW5kbGVLZXlkb3dufSx7ZGVmYXVsdDphLndpdGhDdHgoKCk9PlthLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbInRhYmluZGV4IiwiZGF0YS1vcmllbnRhdGlvbiIsImRhdGEtYWN0aXZlIiwiZGF0YS1kaXNhYmxlZCIsImFzIiwiYXMtY2hpbGQiXSldKSxfOjN9KSl9fSk7Y29uc3RbR109ZygiQ2hlY2tib3hHcm91cFJvb3QiKTtmdW5jdGlvbiBpc0luZGV0ZXJtaW5hdGUoZSl7cmV0dXJuImluZGV0ZXJtaW5hdGUiPT09ZX1mdW5jdGlvbiBnZXRTdGF0ZShlKXtyZXR1cm4gaXNJbmRldGVybWluYXRlKGUpPyJpbmRldGVybWluYXRlIjplPyJjaGVja2VkIjoidW5jaGVja2VkIn1jb25zdFtXLEFdPWcoIkNoZWNrYm94Um9vdCIpO3ZhciBIPWEuZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJDaGVja2JveFJvb3QiLHByb3BzOntkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im9uIn0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0cnVlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT4hMH0sZmFsc2VWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3QgbD1lLHI9dCx7Zm9yd2FyZFJlZjpvLGN1cnJlbnRFbGVtZW50Om59PWIoKSxzPUcobnVsbCksaT15KGwsIm1vZGVsVmFsdWUiLHIse2RlZmF1bHRWYWx1ZTpsLmRlZmF1bHRWYWx1ZT8/bC5mYWxzZVZhbHVlLHBhc3NpdmU6dm9pZCAwPT09bC5tb2RlbFZhbHVlfSksZD1hLmNvbXB1dGVkKCgpPT5zPy5kaXNhYmxlZC52YWx1ZXx8bC5kaXNhYmxlZCksdT1hLmNvbXB1dGVkKCgpPT5MKGkudmFsdWUsbC50cnVlVmFsdWUpKSxjPWEuY29tcHV0ZWQoKCk9Pmgocz8ubW9kZWxWYWx1ZS52YWx1ZSk/ImluZGV0ZXJtaW5hdGUiPT09aS52YWx1ZT8iaW5kZXRlcm1pbmF0ZSI6dS52YWx1ZTpCKHMubW9kZWxWYWx1ZS52YWx1ZSxsLnZhbHVlKSk7ZnVuY3Rpb24gaGFuZGxlQ2xpY2soKXtpZihoKHM/Lm1vZGVsVmFsdWUudmFsdWUpKSJpbmRldGVybWluYXRlIj09PWkudmFsdWU/aS52YWx1ZT1sLnRydWVWYWx1ZTppLnZhbHVlPXUudmFsdWU/bC5mYWxzZVZhbHVlOmwudHJ1ZVZhbHVlO2Vsc2V7Y29uc3QgZT1bLi4ucy5tb2RlbFZhbHVlLnZhbHVlfHxbXV07aWYoQihlLGwudmFsdWUpKXtjb25zdCBhPWUuZmluZEluZGV4KGU9PkwoZSxsLnZhbHVlKSk7ZS5zcGxpY2UoYSwxKX1lbHNlIGUucHVzaChsLnZhbHVlKTtzLm1vZGVsVmFsdWUudmFsdWU9ZX19Y29uc3QgcD1fKG4pLG09YS5jb21wdXRlZCgoKT0+bC5pZCYmbi52YWx1ZT8odm9pZCAwKS5xdWVyeVNlbGVjdG9yKGBbZm9yPSIke2wuaWR9Il1gKT8uaW5uZXJUZXh0OnZvaWQgMCk7cmV0dXJuIEEoe2Rpc2FibGVkOmQsc3RhdGU6Y30pLChlLHQpPT4oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKGEucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoYS51bnJlZihzKT8ucm92aW5nRm9jdXMudmFsdWU/YS51bnJlZihUKTphLnVucmVmKGYpKSxhLm1lcmdlUHJvcHMoZS4kYXR0cnMse2lkOmUuaWQscmVmOmEudW5yZWYobykscm9sZToiY2hlY2tib3giLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLGFzOmUuYXMsdHlwZToiYnV0dG9uIj09PWUuYXM/ImJ1dHRvbiI6dm9pZCAwLCJhcmlhLWNoZWNrZWQiOmEudW5yZWYoaXNJbmRldGVybWluYXRlKShjLnZhbHVlKT8ibWl4ZWQiOmMudmFsdWUsImFyaWEtcmVxdWlyZWQiOmUucmVxdWlyZWQsImFyaWEtbGFiZWwiOmUuJGF0dHJzWyJhcmlhLWxhYmVsIl18fG0udmFsdWUsImRhdGEtc3RhdGUiOmEudW5yZWYoZ2V0U3RhdGUpKGMudmFsdWUpLCJkYXRhLWRpc2FibGVkIjpkLnZhbHVlPyIiOnZvaWQgMCxkaXNhYmxlZDpkLnZhbHVlLGZvY3VzYWJsZTphLnVucmVmKHMpPy5yb3ZpbmdGb2N1cy52YWx1ZT8hZC52YWx1ZTp2b2lkIDAsb25LZXlkb3duOmEud2l0aEtleXMoYS53aXRoTW9kaWZpZXJzKCgpPT57fSxbInByZXZlbnQiXSksWyJlbnRlciJdKSxvbkNsaWNrOmhhbmRsZUNsaWNrfSkse2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTphLnVucmVmKGkpLHN0YXRlOmMudmFsdWV9KSxhLnVucmVmKHApJiZlLm5hbWUmJiFhLnVucmVmKHMpPyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soYS51bnJlZihxKSx7a2V5OjAsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ISFjLnZhbHVlLG5hbWU6ZS5uYW1lLHZhbHVlOmUudmFsdWUsZGlzYWJsZWQ6ZC52YWx1ZSxyZXF1aXJlZDplLnJlcXVpcmVkfSxudWxsLDgsWyJjaGVja2VkIiwibmFtZSIsInZhbHVlIiwiZGlzYWJsZWQiLCJyZXF1aXJlZCJdKSk6YS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0pLF86M30sMTYsWyJpZCIsImFzLWNoaWxkIiwiYXMiLCJ0eXBlIiwiYXJpYS1jaGVja2VkIiwiYXJpYS1yZXF1aXJlZCIsImFyaWEtbGFiZWwiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImRpc2FibGVkIiwiZm9jdXNhYmxlIiwib25LZXlkb3duIl0pKX19KSxRPWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkNoZWNrYm94SW5kaWNhdG9yIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdHtmb3J3YXJkUmVmOnR9PWIoKSxsPVcoKTtyZXR1cm4oZSxyKT0+KGEub3BlbkJsb2NrKCksYS5jcmVhdGVCbG9jayhhLnVucmVmKGspLHtwcmVzZW50OmUuZm9yY2VNb3VudHx8YS51bnJlZihpc0luZGV0ZXJtaW5hdGUpKGEudW5yZWYobCkuc3RhdGUudmFsdWUpfHwhMD09PWEudW5yZWYobCkuc3RhdGUudmFsdWV9LHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoYS51bnJlZihmKSxhLm1lcmdlUHJvcHMoe3JlZjphLnVucmVmKHQpLCJkYXRhLXN0YXRlIjphLnVucmVmKGdldFN0YXRlKShhLnVucmVmKGwpLnN0YXRlLnZhbHVlKSwiZGF0YS1kaXNhYmxlZCI6YS51bnJlZihsKS5kaXNhYmxlZC52YWx1ZT8iIjp2b2lkIDAsc3R5bGU6e3BvaW50ZXJFdmVudHM6Im5vbmUifSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzfSxlLiRhdHRycykse2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJhcy1jaGlsZCIsImFzIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSk7Y29uc3QgWD17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQiLGNvbnRhaW5lcjoiZmxleCBpdGVtcy1jZW50ZXIiLGJhc2U6InJvdW5kZWQtc20gcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgb3ZlcmZsb3ctaGlkZGVuIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiIsaW5kaWNhdG9yOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzaXplLWZ1bGwgdGV4dC1pbnZlcnRlZCIsaWNvbjoic2hyaW5rLTAgc2l6ZS1mdWxsIix3cmFwcGVyOiJ3LWZ1bGwiLGxhYmVsOiJibG9jayBmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtcHJpbWFyeSIsaW5kaWNhdG9yOiJiZy1wcmltYXJ5In0sc2Vjb25kYXJ5OntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5IixpbmRpY2F0b3I6ImJnLXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2Jhc2U6ImZvY3VzLXZpc2libGU6b3V0bGluZS1zdWNjZXNzIixpbmRpY2F0b3I6ImJnLXN1Y2Nlc3MifSxpbmZvOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtaW5mbyIsaW5kaWNhdG9yOiJiZy1pbmZvIn0sd2FybmluZzp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXdhcm5pbmciLGluZGljYXRvcjoiYmctd2FybmluZyJ9LGVycm9yOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtZXJyb3IiLGluZGljYXRvcjoiYmctZXJyb3IifSxuZXV0cmFsOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtaW52ZXJ0ZWQiLGluZGljYXRvcjoiYmctaW52ZXJ0ZWQifX0sdmFyaWFudDp7bGlzdDp7cm9vdDoiIn0sY2FyZDp7cm9vdDoiYm9yZGVyIGJvcmRlci1tdXRlZCByb3VuZGVkLWxnIn19LGluZGljYXRvcjp7c3RhcnQ6e3Jvb3Q6ImZsZXgtcm93Iix3cmFwcGVyOiJtcy0yIn0sZW5kOntyb290OiJmbGV4LXJvdy1yZXZlcnNlIix3cmFwcGVyOiJtZS0yIn0saGlkZGVuOntiYXNlOiJzci1vbmx5Iix3cmFwcGVyOiJ0ZXh0LWNlbnRlciJ9fSxzaXplOnt4czp7YmFzZToic2l6ZS0zIixjb250YWluZXI6ImgtNCIsd3JhcHBlcjoidGV4dC14cyJ9LHNtOntiYXNlOiJzaXplLTMuNSIsY29udGFpbmVyOiJoLTQiLHdyYXBwZXI6InRleHQteHMifSxtZDp7YmFzZToic2l6ZS00Iixjb250YWluZXI6ImgtNSIsd3JhcHBlcjoidGV4dC1zbSJ9LGxnOntiYXNlOiJzaXplLTQuNSIsY29udGFpbmVyOiJoLTUiLHdyYXBwZXI6InRleHQtc20ifSx4bDp7YmFzZToic2l6ZS01Iixjb250YWluZXI6ImgtNiIsd3JhcHBlcjoidGV4dC1iYXNlIn19LHJlcXVpcmVkOnt0cnVlOntsYWJlbDoiYWZ0ZXI6Y29udGVudC1bJyonXSBhZnRlcjptcy0wLjUgYWZ0ZXI6dGV4dC1lcnJvciJ9fSxkaXNhYmxlZDp7dHJ1ZTp7cm9vdDoib3BhY2l0eS03NSIsYmFzZToiY3Vyc29yLW5vdC1hbGxvd2VkIixsYWJlbDoiY3Vyc29yLW5vdC1hbGxvd2VkIixkZXNjcmlwdGlvbjoiY3Vyc29yLW5vdC1hbGxvd2VkIn19LGNoZWNrZWQ6e3RydWU6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7c2l6ZToieHMiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJwLTIuNSJ9fSx7c2l6ZToic20iLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJwLTMifX0se3NpemU6Im1kIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC0zLjUifX0se3NpemU6ImxnIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC00In19LHtzaXplOiJ4bCIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6InAtNC41In19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoiaGFzLWRhdGEtW3N0YXRlPWNoZWNrZWRdOmJvcmRlci13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLWVycm9yIn19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItaW52ZXJ0ZWQifX0se3ZhcmlhbnQ6ImNhcmQiLGRpc2FibGVkOiEwLGNsYXNzOntyb290OiJjdXJzb3Itbm90LWFsbG93ZWQifX1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJsaXN0IixpbmRpY2F0b3I6InN0YXJ0In19LEo9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVQ2hlY2tib3giLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGluZGljYXRvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGluZGV0ZXJtaW5hdGVJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJ1ZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGZhbHNlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiY2hhbmdlIiwidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBsPWUscj1hLnVzZVNsb3RzKCksbz10LG49cygpLHY9aSgiY2hlY2tib3giLGwpLGI9ZCh1KGwsInJlcXVpcmVkIiwidmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJtb2RlbFZhbHVlIiwidHJ1ZVZhbHVlIiwiZmFsc2VWYWx1ZSIpLG8pLHtpZDp5LGVtaXRGb3JtQ2hhbmdlOmgsZW1pdEZvcm1JbnB1dDprLHNpemU6Zyxjb2xvcjp4LG5hbWU6dyxkaXNhYmxlZDpWLGFyaWFBdHRyczpDfT1jKGwpLEI9eS52YWx1ZT8/YS51c2VJZCgpLHt2YXJpYW50Ol99PXooImNoZWNrYm94IixsLFgsWyJ2YXJpYW50Il0pLHE9YS51c2VBdHRycygpLFM9YS5jb21wdXRlZCgoKT0+e2NvbnN0eyJkYXRhLXN0YXRlIjplLC4uLmF9PXE7cmV0dXJuIGF9KSxOPWEuY29tcHV0ZWQoKCk9PnAoe2V4dGVuZDpwKFgpLC4uLm4udWk/LmNoZWNrYm94fHx7fX0pKHtzaXplOmcudmFsdWUsY29sb3I6eC52YWx1ZSx2YXJpYW50Ol8udmFsdWUsaW5kaWNhdG9yOmwuaW5kaWNhdG9yLHJlcXVpcmVkOmwucmVxdWlyZWQsZGlzYWJsZWQ6Vi52YWx1ZX0pKTtmdW5jdGlvbiBvblVwZGF0ZShlKXtjb25zdCBhPW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTplfX0pO28oImNoYW5nZSIsYSksaCgpLGsoKX1yZXR1cm4odCxvLHMsaSk9PntvKEYoYS51bnJlZihmKSxhLm1lcmdlUHJvcHMoe2FzOiJsaXN0Ij09PWEudW5yZWYoXyk/ZS5hczphLnVucmVmKEkpLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpOLnZhbHVlLnJvb3Qoe2NsYXNzOlthLnVucmVmKHYpPy5yb290LGwuY2xhc3NdfSl9LGkpLHtkZWZhdWx0OmEud2l0aEN0eCgobCxvLHMsaSk9PntpZighbylyZXR1cm5bYS5jcmVhdGVWTm9kZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6Ti52YWx1ZS5jb250YWluZXIoe2NsYXNzOmEudW5yZWYodik/LmNvbnRhaW5lcn0pfSxbYS5jcmVhdGVWTm9kZShhLnVucmVmKEgpLGEubWVyZ2VQcm9wcyh7aWQ6YS51bnJlZihCKX0sey4uLmEudW5yZWYoYiksLi4uUy52YWx1ZSwuLi5hLnVucmVmKEMpfSx7bmFtZTphLnVucmVmKHcpLGRpc2FibGVkOmEudW5yZWYoViksImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOk4udmFsdWUuYmFzZSh7Y2xhc3M6YS51bnJlZih2KT8uYmFzZX0pLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvblVwZGF0ZX0pLHtkZWZhdWx0OmEud2l0aEN0eCgoe3N0YXRlOnR9KT0+W2EuY3JlYXRlVk5vZGUoYS51bnJlZihRKSx7ImRhdGEtc2xvdCI6ImluZGljYXRvciIsY2xhc3M6Ti52YWx1ZS5pbmRpY2F0b3Ioe2NsYXNzOmEudW5yZWYodik/LmluZGljYXRvcn0pfSx7ZGVmYXVsdDphLndpdGhDdHgoKCk9PlsiaW5kZXRlcm1pbmF0ZSI9PT10PyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2sobSx7a2V5OjAsbmFtZTplLmluZGV0ZXJtaW5hdGVJY29ufHxhLnVucmVmKG4pLnVpLmljb25zLm1pbnVzLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKG0se2tleToxLG5hbWU6ZS5pY29ufHxhLnVucmVmKG4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXSksXzoxfSwxNixbImlkIiwibmFtZSIsImRpc2FibGVkIiwiY2xhc3MiXSldLDIpLGUubGFiZWx8fHIubGFiZWx8fGUuZGVzY3JpcHRpb258fHIuZGVzY3JpcHRpb24/KGEub3BlbkJsb2NrKCksYS5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOk4udmFsdWUud3JhcHBlcih7Y2xhc3M6YS51bnJlZih2KT8ud3JhcHBlcn0pfSxbZS5sYWJlbHx8ci5sYWJlbD8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKGEucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImxpc3QiPT09YS51bnJlZihfKT9hLnVucmVmKEkpOiJwIikse2tleTowLGZvcjphLnVucmVmKEIpLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Ti52YWx1ZS5sYWJlbCh7Y2xhc3M6YS51bnJlZih2KT8ubGFiZWx9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5yZW5kZXJTbG90KHQuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmUubGFiZWx9LCgpPT5bYS5jcmVhdGVUZXh0Vk5vZGUoYS50b0Rpc3BsYXlTdHJpbmcoZS5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pKTphLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5kZXNjcmlwdGlvbnx8ci5kZXNjcmlwdGlvbj8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpOLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczphLnVucmVmKHYpPy5kZXNjcmlwdGlvbn0pfSxbYS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb259LCgpPT5bYS5jcmVhdGVUZXh0Vk5vZGUoYS50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldKV0sMikpOmEuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOmEuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07byhgPGRpdiBkYXRhLXNsb3Q9ImNvbnRhaW5lciIgY2xhc3M9IiR7TShOLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6YS51bnJlZih2KT8uY29udGFpbmVyfSkpfSIke2l9PmApLG8oRihhLnVucmVmKEgpLGEubWVyZ2VQcm9wcyh7aWQ6YS51bnJlZihCKX0sey4uLmEudW5yZWYoYiksLi4uUy52YWx1ZSwuLi5hLnVucmVmKEMpfSx7bmFtZTphLnVucmVmKHcpLGRpc2FibGVkOmEudW5yZWYoViksImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOk4udmFsdWUuYmFzZSh7Y2xhc3M6YS51bnJlZih2KT8uYmFzZX0pLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvblVwZGF0ZX0pLHtkZWZhdWx0OmEud2l0aEN0eCgoe3N0YXRlOnR9LGwscixvKT0+e2lmKCFsKXJldHVyblthLmNyZWF0ZVZOb2RlKGEudW5yZWYoUSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOk4udmFsdWUuaW5kaWNhdG9yKHtjbGFzczphLnVucmVmKHYpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bImluZGV0ZXJtaW5hdGUiPT09dD8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKG0se2tleTowLG5hbWU6ZS5pbmRldGVybWluYXRlSWNvbnx8YS51bnJlZihuKS51aS5pY29ucy5taW51cywiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6Ti52YWx1ZS5pY29uKHtjbGFzczphLnVucmVmKHYpPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6KGEub3BlbkJsb2NrKCksYS5jcmVhdGVCbG9jayhtLHtrZXk6MSxuYW1lOmUuaWNvbnx8YS51bnJlZihuKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6Ti52YWx1ZS5pY29uKHtjbGFzczphLnVucmVmKHYpPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV07bChGKGEudW5yZWYoUSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOk4udmFsdWUuaW5kaWNhdG9yKHtjbGFzczphLnVucmVmKHYpPy5pbmRpY2F0b3J9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KChsLHIsbyxzKT0+e2lmKCFyKXJldHVyblsiaW5kZXRlcm1pbmF0ZSI9PT10PyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2sobSx7a2V5OjAsbmFtZTplLmluZGV0ZXJtaW5hdGVJY29ufHxhLnVucmVmKG4pLnVpLmljb25zLm1pbnVzLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKG0se2tleToxLG5hbWU6ZS5pY29ufHxhLnVucmVmKG4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKV07cihGKG0sImluZGV0ZXJtaW5hdGUiPT09dD97bmFtZTplLmluZGV0ZXJtaW5hdGVJY29ufHxhLnVucmVmKG4pLnVpLmljb25zLm1pbnVzLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX06e25hbWU6ZS5pY29ufHxhLnVucmVmKG4pLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpOLnZhbHVlLmljb24oe2NsYXNzOmEudW5yZWYodik/Lmljb259KX0sbnVsbCxvLHMpKX0pLF86Mn0scixvKSl9KSxfOjF9LHMsaSkpLG8oIjwvZGl2PiIpLGUubGFiZWx8fHIubGFiZWx8fGUuZGVzY3JpcHRpb258fHIuZGVzY3JpcHRpb24/KG8oYDxkaXYgZGF0YS1zbG90PSJ3cmFwcGVyIiBjbGFzcz0iJHtNKE4udmFsdWUud3JhcHBlcih7Y2xhc3M6YS51bnJlZih2KT8ud3JhcHBlcn0pKX0iJHtpfT5gKSxlLmxhYmVsfHxyLmxhYmVsP08obyxhLmNyZWF0ZVZOb2RlKGEucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoImxpc3QiPT09YS51bnJlZihfKT9hLnVucmVmKEkpOiJwIikse2ZvcjphLnVucmVmKEIpLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6Ti52YWx1ZS5sYWJlbCh7Y2xhc3M6YS51bnJlZih2KT8ubGFiZWx9KX0se2RlZmF1bHQ6YS53aXRoQ3R4KChsLHIsbyxuKT0+e2lmKCFyKXJldHVyblthLnJlbmRlclNsb3QodC4kc2xvdHMsImxhYmVsIix7bGFiZWw6ZS5sYWJlbH0sKCk9PlthLmNyZWF0ZVRleHRWTm9kZShhLnRvRGlzcGxheVN0cmluZyhlLmxhYmVsKSwxKV0pXTtFKHQuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmUubGFiZWx9LCgpPT57cihgJHtLKGUubGFiZWwpfWApfSxyLG8sbil9KSxfOjN9KSxzLGkpOm8oIlx4M2MhLS0tLVx4M2UiKSxlLmRlc2NyaXB0aW9ufHxyLmRlc2NyaXB0aW9uPyhvKGA8cCBkYXRhLXNsb3Q9ImRlc2NyaXB0aW9uIiBjbGFzcz0iJHtNKE4udmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmEudW5yZWYodik/LmRlc2NyaXB0aW9ufSkpfSIke2l9PmApLEUodC4kc2xvdHMsImRlc2NyaXB0aW9uIix7ZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbn0sKCk9PntvKGAke0soZS5kZXNjcmlwdGlvbil9YCl9LG8scyxpKSxvKCI8L3A+IikpOm8oIlx4M2MhLS0tLVx4M2UiKSxvKCI8L2Rpdj4iKSk6bygiXHgzYyEtLS0tXHgzZSIpfSksXzozfSxzKSl9fX0pLFk9Si5zZXR1cDtKLnNldHVwPShlLHQpPT57Y29uc3QgbD1hLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AbnV4dCt1aUA0LjcuMF9lZDA1YmI1MWIwMjFmNzhjZDViYmQ0ZGIyMDNmNjY4Mi9ub2RlX21vZHVsZXMvQG51eHQvdWkvZGlzdC9ydW50aW1lL2NvbXBvbmVudHMvQ2hlY2tib3gudnVlIiksWT9ZKGUsdCk6dm9pZCAwfTtjb25zdCBaPVsicmVhZCIsIndyaXRlIiwiZGVsZXRlIiwibWFuYWdlIl0sZWU9bmV3IFNldChbInVzZXI6aW1wZXJzb25hdGUiLCJzeXN0ZW06bWFuYWdlIiwic3VwcG9ydDptYW5hZ2UiLCJwcm9kdWN0OndyaXRlIiwicHJvZHVjdDpkZWxldGUiLCJwcm9kdWN0Om1hbmFnZSJdKSxhZT1uZXcgU2V0KFsidXNlciIsInByb2plY3QiLCJiaWxsaW5nIiwic2VsZmhvc3QiXS5mbGF0TWFwKGU9PloubWFwKGE9PmAke2V9OiR7YX1gKSkpLHRlPW5ldyBTZXQoW10pLGxlPXtyZWFkOiJWaWV3Iix3cml0ZToiQ3JlYXRlIGFuZCBlZGl0IixkZWxldGU6IkRlbGV0ZSIsbWFuYWdlOiJGdWxsIGNvbnRyb2wgb3ZlciIsaW1wZXJzb25hdGU6IkltcGVyc29uYXRlIn07ZnVuY3Rpb24gb3JnS2luZE9mKGUpe3JldHVybiBlZS5oYXMoZSk/InN5c3RlbSI6InRlbmFudCJ9ZnVuY3Rpb24gZGVmKGUpe2NvbnN0e3N1YmplY3Q6YSxhY3Rpb246dCxzY29wZTpsfT12KGUpLHI9YCR7bGVbdF0/P3R9ICR7YX1gO3JldHVybntrZXk6ZSxzdWJqZWN0OmEsYWN0aW9uOnQsc2NvcGU6bD8/bnVsbCxvcmdfa2luZDpvcmdLaW5kT2YoZSksZGVzY3JpcHRpb246InNlbGYiPT09bD9gJHtyfSAob3duIG9ubHkpYDpyfX1mdW5jdGlvbiBidWlsZFBlcm1pc3Npb25DYXRhbG9nKCl7cmV0dXJuWy4uLmFlLC4uLmVlLC4uLnRlXS5tYXAoZGVmKX1uZXcgU2V0KGJ1aWxkUGVybWlzc2lvbkNhdGFsb2coKS5tYXAoZT0+ZS5rZXkpKTtjb25zdCByZT1hLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJPcmdhbml6YXRpb25Sb2xlTW9kYWwiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW59LHJvbGU6e319LGVtaXRzOlsidXBkYXRlOm9wZW4iLCJzYXZlZCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IHI9ZSxzPXQsaT1uKCksZD1sKCksdT1idWlsZFBlcm1pc3Npb25DYXRhbG9nKCkuZmlsdGVyKGU9PiJ0ZW5hbnQiPT09ZS5vcmdfa2luZCksYz1hLnJlZigiIikscD1hLnJlZigiIiksbT1hLnJlZihbXSksZj1hLnJlZighMSk7ZnVuY3Rpb24gdG9nZ2xlUGVybWlzc2lvbihlLGEpe20udmFsdWU9YT9bLi4ubS52YWx1ZSxlXTptLnZhbHVlLmZpbHRlcihhPT5hIT09ZSl9YXN5bmMgZnVuY3Rpb24gc2F2ZSgpe2YudmFsdWU9ITA7dHJ5e3Iucm9sZT9hd2FpdCBpLnVwZGF0ZVJvbGUoci5yb2xlLmlkLHtuYW1lOmMudmFsdWUsZGVzY3JpcHRpb246cC52YWx1ZXx8dm9pZCAwLHBlcm1pc3Npb25zOm0udmFsdWV9KTphd2FpdCBpLmNyZWF0ZVJvbGUoe25hbWU6Yy52YWx1ZSxkZXNjcmlwdGlvbjpwLnZhbHVlfHx2b2lkIDAscGVybWlzc2lvbnM6bS52YWx1ZX0pLGQuYWRkKHt0aXRsZToiUm9sZSBzYXZlZCIsY29sb3I6InN1Y2Nlc3MifSkscygic2F2ZWQiKSxzKCJ1cGRhdGU6b3BlbiIsITEpfWNhdGNoKGUpe2NvbnN0IGE9ZTtkLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBzYXZlIHJvbGUiLGRlc2NyaXB0aW9uOmE/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtmLnZhbHVlPSExfX1yZXR1cm4gYS53YXRjaCgoKT0+ci5vcGVuLGU9PntlJiYoYy52YWx1ZT1yLnJvbGU/Lm5hbWU/PyIiLHAudmFsdWU9ci5yb2xlPy5kZXNjcmlwdGlvbj8/IiIsbS52YWx1ZT1yLnJvbGU/LnBlcm1pc3Npb25zP1suLi5yLnJvbGUucGVybWlzc2lvbnNdOltdKX0pLCh0LGwscixuKT0+e2NvbnN0IGk9VixkPUMsdj1KLGI9bztsKEYodyxhLm1lcmdlUHJvcHMoe29wZW46ZS5vcGVuLHRpdGxlOmUucm9sZT9gRWRpdCBSb2xlIOKAlCAke2Uucm9sZS5uYW1lfWA6Ik5ldyBSb2xlIiwib25VcGRhdGU6b3BlbiI6ZT0+cygidXBkYXRlOm9wZW4iLGUpfSxuKSx7Ym9keTphLndpdGhDdHgoKHQsbCxyLG8pPT57aWYoIWwpcmV0dXJuW2EuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTQifSxbYS5jcmVhdGVWTm9kZShpLHtsYWJlbDoiTmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoZCx7bW9kZWxWYWx1ZTphLnVucmVmKGMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5hLmlzUmVmKGMpP2MudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOiJlLmcuIEVkaXRvciIsZGlzYWJsZWQ6ISFlLnJvbGU/LmlzX3N5c3RlbSxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJkaXNhYmxlZCJdKV0pLF86MX0pLGEuY3JlYXRlVk5vZGUoaSx7bGFiZWw6IkRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6YS53aXRoQ3R4KCgpPT5bYS5jcmVhdGVWTm9kZShkLHttb2RlbFZhbHVlOmEudW5yZWYocCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYocCk/cC52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6Ik9wdGlvbmFsIGRlc2NyaXB0aW9uIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhLmNyZWF0ZVZOb2RlKGkse2xhYmVsOiJQZXJtaXNzaW9ucyJ9LHtkZWZhdWx0OmEud2l0aEN0eCgoKT0+W2EuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJncmlkIGdyaWQtY29scy0yIGdhcC0yIG1heC1oLTYwIG92ZXJmbG93LXktYXV0byJ9LFsoYS5vcGVuQmxvY2soITApLGEuY3JlYXRlQmxvY2soYS5GcmFnbWVudCxudWxsLGEucmVuZGVyTGlzdChhLnVucmVmKHUpLGU9PihhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2sodix7a2V5OmUua2V5LCJtb2RlbC12YWx1ZSI6YS51bnJlZihtKS5pbmNsdWRlcyhlLmtleSksbGFiZWw6ZS5rZXksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmE9PnRvZ2dsZVBlcm1pc3Npb24oZS5rZXksITA9PT1hKX0sbnVsbCw4LFsibW9kZWwtdmFsdWUiLCJsYWJlbCIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSkpKSwxMjgpKV0pXSksXzoxfSldKV07bChgPGRpdiBjbGFzcz0ic3BhY2UteS00IiR7b30+YCksbChGKGkse2xhYmVsOiJOYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6YS53aXRoQ3R4KCh0LGwscixvKT0+e2lmKCFsKXJldHVyblthLmNyZWF0ZVZOb2RlKGQse21vZGVsVmFsdWU6YS51bnJlZihjKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihjKT9jLnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiZS5nLiBFZGl0b3IiLGRpc2FibGVkOiEhZS5yb2xlPy5pc19zeXN0ZW0sY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldO2woRihkLHttb2RlbFZhbHVlOmEudW5yZWYoYyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYoYyk/Yy52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6ImUuZy4gRWRpdG9yIixkaXNhYmxlZDohIWUucm9sZT8uaXNfc3lzdGVtLGNsYXNzOiJ3LWZ1bGwifSxudWxsLHIsbykpfSksXzoxfSxyLG8pKSxsKEYoaSx7bGFiZWw6IkRlc2NyaXB0aW9uIn0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLHQsbCxyKT0+e2lmKCF0KXJldHVyblthLmNyZWF0ZVZOb2RlKGQse21vZGVsVmFsdWU6YS51bnJlZihwKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihwKT9wLnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKV07dChGKGQse21vZGVsVmFsdWU6YS51bnJlZihwKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihwKT9wLnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLGNsYXNzOiJ3LWZ1bGwifSxudWxsLGwscikpfSksXzoxfSxyLG8pKSxsKEYoaSx7bGFiZWw6IlBlcm1pc3Npb25zIn0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLHQsbCxyKT0+e2lmKCF0KXJldHVyblthLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiBtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8ifSxbKGEub3BlbkJsb2NrKCEwKSxhLmNyZWF0ZUJsb2NrKGEuRnJhZ21lbnQsbnVsbCxhLnJlbmRlckxpc3QoYS51bnJlZih1KSxlPT4oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKHYse2tleTplLmtleSwibW9kZWwtdmFsdWUiOmEudW5yZWYobSkuaW5jbHVkZXMoZS5rZXkpLGxhYmVsOmUua2V5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjphPT50b2dnbGVQZXJtaXNzaW9uKGUua2V5LCEwPT09YSl9LG51bGwsOCxbIm1vZGVsLXZhbHVlIiwibGFiZWwiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pKSksMTI4KSldKV07dChgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiBtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8iJHtyfT5ceDNjIS0tWy0tXHgzZWApLFAoYS51bnJlZih1KSxlPT57dChGKHYse2tleTplLmtleSwibW9kZWwtdmFsdWUiOmEudW5yZWYobSkuaW5jbHVkZXMoZS5rZXkpLGxhYmVsOmUua2V5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjphPT50b2dnbGVQZXJtaXNzaW9uKGUua2V5LCEwPT09YSl9LG51bGwsbCxyKSl9KSx0KCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpfSksXzoxfSxyLG8pKSxsKCI8L2Rpdj4iKX0pLGZvb3RlcjphLndpdGhDdHgoKGUsdCxsLHIpPT57aWYoIXQpcmV0dXJuW2EuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIn0sW2EuY3JlYXRlVk5vZGUoYix7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmU9PnMoInVwZGF0ZTpvcGVuIiwhMSl9LG51bGwsOCxbIm9uQ2xpY2siXSksYS5jcmVhdGVWTm9kZShiLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzphLnVucmVmKGYpLG9uQ2xpY2s6ZT0+c2F2ZSgpfSxudWxsLDgsWyJsb2FkaW5nIiwib25DbGljayJdKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIiR7cn0+YCksdChGKGIse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazplPT5zKCJ1cGRhdGU6b3BlbiIsITEpfSxudWxsLGwscikpLHQoRihiLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzphLnVucmVmKGYpLG9uQ2xpY2s6ZT0+c2F2ZSgpfSxudWxsLGwscikpLHQoIjwvZGl2PiIpfSksXzoxfSxyKSl9fX0pLG9lPXJlLnNldHVwO3JlLnNldHVwPShlLHQpPT57Y29uc3QgbD1hLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9jb21wb25lbnRzL09yZ2FuaXphdGlvbi9Pcmdhbml6YXRpb25Sb2xlTW9kYWwudnVlIiksb2U/b2UoZSx0KTp2b2lkIDB9O2NvbnN0IG5lPU9iamVjdC5hc3NpZ24ocmUse19fbmFtZToiT3JnYW5pemF0aW9uUm9sZU1vZGFsIn0pLHNlPWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6InJvbGVzIixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChzKXt0KHt0aXRsZToiUm9sZXMifSk7Y29uc3QgaT1uKCksZD1sKCkse2RhdGE6dSxyZWZyZXNoOmMsZXJyb3I6cH09cigib3JnLXJvbGVzIiwoKT0+aS5mZXRjaFJvbGVzKCkse2RlZmF1bHQ6KCk9PltdfSk7VShwKTtjb25zdCBtPWEucmVmKCExKSxmPWEucmVmKG51bGwpO2Z1bmN0aW9uIG9wZW5DcmVhdGUoKXtmLnZhbHVlPW51bGwsbS52YWx1ZT0hMH1mdW5jdGlvbiBvcGVuRWRpdChlKXtmLnZhbHVlPWUsbS52YWx1ZT0hMH1hc3luYyBmdW5jdGlvbiBoYW5kbGVEZWxldGVSb2xlKGUpe3RyeXthd2FpdCBpLmRlbGV0ZVJvbGUoZSksYXdhaXQgYygpfWNhdGNoKGUpe2NvbnN0IGE9ZTtkLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBkZWxldGUgcm9sZSIsZGVzY3JpcHRpb246YT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19cmV0dXJuKHQsbCxyLG4pPT57Y29uc3Qgcz1lLGk9bztsKGA8ZGl2JHtEKG4pfT5gKSxsKEYocyx7dGl0bGU6IlJvbGVzIixkZXNjcmlwdGlvbjoiTWFuYWdlIHJvbGVzIGFuZCB0aGVpciBwZXJtaXNzaW9ucy4iLHZhcmlhbnQ6Im5ha2VkIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6Im1iLTQifSx7ZGVmYXVsdDphLndpdGhDdHgoKGUsdCxsLHIpPT57aWYoIXQpcmV0dXJuW2EuY3JlYXRlVk5vZGUoaSx7bGFiZWw6Ik5ldyByb2xlIixpY29uOiJpLWx1Y2lkZS1wbHVzIixjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpvcGVuQ3JlYXRlfSldO3QoRihpLHtsYWJlbDoiTmV3IHJvbGUiLGljb246ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIixvbkNsaWNrOm9wZW5DcmVhdGV9LG51bGwsbCxyKSl9KSxfOjF9LHIpKSxsKEYocyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6YS53aXRoQ3R4KChlLHQsbCxyKT0+e2lmKCF0KXJldHVyblthLnVucmVmKHUpLmxlbmd0aD8oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSxjbGFzczoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxbKGEub3BlbkJsb2NrKCEwKSxhLmNyZWF0ZUJsb2NrKGEuRnJhZ21lbnQsbnVsbCxhLnJlbmRlckxpc3QoYS51bnJlZih1KSxlPT4oYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6ZS5pZCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTMgZ2FwLTQifSxbYS5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFthLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIn0sYS50b0Rpc3BsYXlTdHJpbmcoZS5uYW1lKSwxKSxlLmRlc2NyaXB0aW9uPyhhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soInAiLHtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sYS50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSkpOmEuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxhLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1kaW1tZWQifSxhLnRvRGlzcGxheVN0cmluZyhlLnBlcm1pc3Npb25zLmxlbmd0aCkrIiBwZXJtaXNzaW9uIithLnRvRGlzcGxheVN0cmluZygxIT09ZS5wZXJtaXNzaW9ucy5sZW5ndGg/InMiOiIiKSwxKV0pLGEuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGdhcC0yIHNocmluay0wIn0sW2EuY3JlYXRlVk5vZGUoaSx7c2l6ZToic20iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtcGVuY2lsIixvbkNsaWNrOmE9Pm9wZW5FZGl0KGUpfSxudWxsLDgsWyJvbkNsaWNrIl0pLGUuaXNfc3lzdGVtP2EuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooYS5vcGVuQmxvY2soKSxhLmNyZWF0ZUJsb2NrKGkse2tleTowLHNpemU6InNtIixjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS10cmFzaC0yIixvbkNsaWNrOmE9PmhhbmRsZURlbGV0ZVJvbGUoZS5pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSkpXSldKSkpLDEyOCkpXSkpOihhLm9wZW5CbG9jaygpLGEuY3JlYXRlQmxvY2soImRpdiIse2tleTowLGNsYXNzOiJ0ZXh0LWNlbnRlciBweS04IHRleHQtbXV0ZWQgdGV4dC1zbSJ9LCIgTm8gY3VzdG9tIHJvbGVzIHlldC4gIikpXTthLnVucmVmKHUpLmxlbmd0aD8odChgPGRpdiBjbGFzcz0iZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQiJHtyfT5ceDNjIS0tWy0tXHgzZWApLFAoYS51bnJlZih1KSxlPT57dChgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTMgZ2FwLTQiJHtyfT48ZGl2JHtyfT48cCBjbGFzcz0iZm9udC1tZWRpdW0iJHtyfT4ke0soZS5uYW1lKX08L3A+YCksZS5kZXNjcmlwdGlvbj90KGA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7cn0+JHtLKGUuZGVzY3JpcHRpb24pfTwvcD5gKTp0KCJceDNjIS0tLS1ceDNlIiksdChgPHAgY2xhc3M9InRleHQteHMgdGV4dC1kaW1tZWQiJHtyfT4ke0soZS5wZXJtaXNzaW9ucy5sZW5ndGgpfSBwZXJtaXNzaW9uJHtLKDEhPT1lLnBlcm1pc3Npb25zLmxlbmd0aD8icyI6IiIpfTwvcD48L2Rpdj48ZGl2IGNsYXNzPSJmbGV4IGdhcC0yIHNocmluay0wIiR7cn0+YCksdChGKGkse3NpemU6InNtIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLXBlbmNpbCIsb25DbGljazphPT5vcGVuRWRpdChlKX0sbnVsbCxsLHIpKSxlLmlzX3N5c3RlbT90KCJceDNjIS0tLS1ceDNlIik6dChGKGkse3NpemU6InNtIixjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS10cmFzaC0yIixvbkNsaWNrOmE9PmhhbmRsZURlbGV0ZVJvbGUoZS5pZCl9LG51bGwsbCxyKSksdCgiPC9kaXY+PC9kaXY+Iil9KSx0KCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpKTp0KGA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBweS04IHRleHQtbXV0ZWQgdGV4dC1zbSIke3J9PiBObyBjdXN0b20gcm9sZXMgeWV0LiA8L2Rpdj5gKX0pLF86MX0scikpLGwoRihuZSx7b3BlbjphLnVucmVmKG0pLCJvblVwZGF0ZTpvcGVuIjplPT5hLmlzUmVmKG0pP20udmFsdWU9ZTpudWxsLHJvbGU6YS51bnJlZihmKSxvblNhdmVkOmU9PmEudW5yZWYoYykoKX0sbnVsbCxyKSksbCgiPC9kaXY+Iil9fX0pLGllPXNlLnNldHVwO3NlLnNldHVwPShlLHQpPT57Y29uc3QgbD1hLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4obC5tb2R1bGVzfHwobC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9vcmdhbml6YXRpb24vcm9sZXMudnVlIiksaWU/aWUoZSx0KTp2b2lkIDB9O2V4cG9ydHtzZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm9sZXMtREpNRC1NX3QubWpzLm1hcAo=", "chunks/build/security-Ufzhmy0R.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vUGFnZUNhcmQtQnctVzRxeHMubWpzIjtpbXBvcnR7XyBhcyBhfWZyb20iLi9Gb3JtRmllbGQtQ1ZMSXpSTFkubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9JbnB1dC1ER3l2UVFSZC5tanMiO2ltcG9ydHt2IGFzIGwsaCBhcyBvLGEgYXMgbixfIGFzIHIsYU0gYXMgcyx5IGFzIGR9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtvIGFzIGksZiBhcyB1fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7Y29uc3QgYz1sLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzZWN1cml0eSIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAoYyl7Y29uc3QgbT1vKCkscD1kKCksZj1uKCksdj1sLnJlZihtLmN1cnJlbnRVc2VyPy5wcmltYXJ5X3Bob25lPz8iIiksaD1sLnJlZighMSksZz1sLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gc2F2ZVBob25lKCl7aC52YWx1ZT0hMDt0cnl7YXdhaXQgbS51cGRhdGVQaG9uZU51bWJlcih2LnZhbHVlKSxmLmFkZCh7dGl0bGU6IlBob25lIHVwZGF0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKGUpe2YuYWRkKHt0aXRsZToiRmFpbGVkIHRvIHVwZGF0ZSBwaG9uZSIsZGVzY3JpcHRpb246ZT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IiIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7aC52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gZGVsZXRlQWNjb3VudCgpe2cudmFsdWU9ITA7dHJ5e2F3YWl0IHAuZGVsZXRlQWNjb3VudCgpLGF3YWl0IHMoIi9hdXRoL2xvZ2luIil9Y2F0Y2goZSl7Zi5hZGQoe3RpdGxlOiJDYW5ub3QgZGVsZXRlIGFjY291bnQiLGRlc2NyaXB0aW9uOmU/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyIiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2cudmFsdWU9ITF9fXJldHVybihvLG4scyxkKT0+e2NvbnN0IGM9ZSxtPWEscD10LGY9cjtuKGA8ZGl2JHtpKGwubWVyZ2VQcm9wcyh7Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTYifSxkKSl9PjxkaXY+YCksbih1KGMse3RpdGxlOiJQaG9uZSBudW1iZXIiLGRlc2NyaXB0aW9uOiJVc2VkIGZvciBhY2NvdW50IHJlY292ZXJ5IGFuZCAyRkEuIix2YXJpYW50OiJuYWtlZCIsY2xhc3M6Im1iLTQifSxudWxsLHMpKSxuKHUoYyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxvKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKG0se25hbWU6InBob25lIixsYWJlbDoiUGhvbmUiLGRlc2NyaXB0aW9uOiJGb3JtYXQ6ICsxMjM0NTY3ODkwIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KCgpPT5bbC5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggZ2FwLTIifSxbbC5jcmVhdGVWTm9kZShwLHttb2RlbFZhbHVlOmwudW5yZWYodiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYodik/di52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6IisxMjM0NTY3ODkwIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSksbC5jcmVhdGVWTm9kZShmLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzpsLnVucmVmKGgpLG9uQ2xpY2s6c2F2ZVBob25lfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9KV07YSh1KG0se25hbWU6InBob25lIixsYWJlbDoiUGhvbmUiLGRlc2NyaXB0aW9uOiJGb3JtYXQ6ICsxMjM0NTY3ODkwIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bC53aXRoQ3R4KChlLGEsdCxvKT0+e2lmKCFhKXJldHVybltsLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBnYXAtMiJ9LFtsLmNyZWF0ZVZOb2RlKHAse21vZGVsVmFsdWU6bC51bnJlZih2KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+bC5pc1JlZih2KT92LnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjoiKzEyMzQ1Njc4OTAifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSJdKSxsLmNyZWF0ZVZOb2RlKGYse2xhYmVsOiJTYXZlIixsb2FkaW5nOmwudW5yZWYoaCksb25DbGljazpzYXZlUGhvbmV9LG51bGwsOCxbImxvYWRpbmciXSldKV07YShgPGRpdiBjbGFzcz0iZmxleCBnYXAtMiIke299PmApLGEodShwLHttb2RlbFZhbHVlOmwudW5yZWYodiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmwuaXNSZWYodik/di52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6IisxMjM0NTY3ODkwIn0sbnVsbCx0LG8pKSxhKHUoZix7bGFiZWw6IlNhdmUiLGxvYWRpbmc6bC51bnJlZihoKSxvbkNsaWNrOnNhdmVQaG9uZX0sbnVsbCx0LG8pKSxhKCI8L2Rpdj4iKX0pLF86MX0sdCxvKSl9KSxfOjF9LHMpKSxuKCI8L2Rpdj48ZGl2PiIpLG4odShjLHt0aXRsZToiRGFuZ2VyIHpvbmUiLGRlc2NyaXB0aW9uOiJJcnJldmVyc2libGUgYWNjb3VudCBhY3Rpb25zLiIsdmFyaWFudDoibmFrZWQiLGNsYXNzOiJtYi00In0sbnVsbCxzKSksbih1KGMse3ZhcmlhbnQ6InN1YnRsZSIsdWk6e2NvbnRhaW5lcjoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00In19LHtkZWZhdWx0Omwud2l0aEN0eCgoZSxhLHQsbyk9PntpZighYSlyZXR1cm5bbC5jcmVhdGVWTm9kZSgiZGl2IixudWxsLFtsLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQifSwiIERlbGV0ZSBhY2NvdW50ICIpLGwuY3JlYXRlVk5vZGUoInAiLHtjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBQZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgZGF0YS4gIildKSxsLmNyZWF0ZVZOb2RlKGYse2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsbGFiZWw6IkRlbGV0ZSBhY2NvdW50Iixsb2FkaW5nOmwudW5yZWYoZyksb25DbGljazpkZWxldGVBY2NvdW50fSxudWxsLDgsWyJsb2FkaW5nIl0pXTthKGA8ZGl2JHtvfT48cCBjbGFzcz0iZm9udC1tZWRpdW0gdGV4dC1oaWdobGlnaHRlZCIke299PiBEZWxldGUgYWNjb3VudCA8L3A+PHAgY2xhc3M9InRleHQtc20gdGV4dC1tdXRlZCIke299PiBQZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgZGF0YS4gPC9wPjwvZGl2PmApLGEodShmLHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGxhYmVsOiJEZWxldGUgYWNjb3VudCIsbG9hZGluZzpsLnVucmVmKGcpLG9uQ2xpY2s6ZGVsZXRlQWNjb3VudH0sbnVsbCx0LG8pKX0pLF86MX0scykpLG4oIjwvZGl2PjwvZGl2PiIpfX19KSxtPWMuc2V0dXA7Yy5zZXR1cD0oZSxhKT0+e2NvbnN0IHQ9bC51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHQubW9kdWxlc3x8KHQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvYXV0aC9hcHAvcGFnZXMvc2V0dGluZ3Mvc2VjdXJpdHkudnVlIiksbT9tKGUsYSk6dm9pZCAwfTtleHBvcnR7YyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VjdXJpdHktVWZ6aG15MFIubWpzLm1hcAo=", "chunks/build/self-host-Buf4rlqd.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9BbGVydC1DVkI1WVh1ZS5tanMiO2ltcG9ydHt2IGFzIG8sdSBhcyBsLGEsaSBhcyByLF8gYXMgcywkIGFzIG59ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtfIGFzIGN9ZnJvbSIuL0NhcmQtbm92Z3FSb3AubWpzIjtpbXBvcnR7XyBhcyBkfWZyb20iLi9CYWRnZS1CQjBLbE1RVi5tanMiO2ltcG9ydHtfIGFzIGl9ZnJvbSIuL0Zvcm1GaWVsZC1DVkxJelJMWS5tanMiO2ltcG9ydHtfIGFzIHV9ZnJvbSIuL0lucHV0LURHeXZRUVJkLm1qcyI7aW1wb3J0e18gYXMgcH1mcm9tIi4vU2VsZWN0LURpYWlsZlVjLm1qcyI7aW1wb3J0e2YseiBhcyBtLHEgYXMgaCx0IGFzIHgseX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFJlc2l6ZUhhbmRsZS1CUnVBR0ZFNS5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vXy9zaGFyZWQuZXNtLWJ1bmRsZXIubWpzIjtpbXBvcnQiLi9MYWJlbC1CVVdMenlHTC5tanMiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0Ii4vUG9wcGVyQXJyb3ctQkV5V1VKaVEubWpzIjtpbXBvcnQiLi91dGlscy1CUklqUlNoeC5tanMiO2ltcG9ydCIuL2hhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQtQmtfQVZTU28ubWpzIjtpbXBvcnQiLi91c2VSZXNvbHZlZFZhcmlhbnRzLURoSHU2dlJLLm1qcyI7ZnVuY3Rpb24gdXNlU2VsZmhvc3RBcGkoKXtyZXR1cm57ZmV0Y2hTZWxmaG9zdFN0YXR1czpmdW5jdGlvbigpe3JldHVybiBuKCIvYXBpL3NlbGZob3N0L3N0YXR1cyIpfSxsaXN0Q2xvdWRmbGFyZUFjY291bnRzOmZ1bmN0aW9uKGUpe3JldHVybiBuKCIvYXBpL3NlbGZob3N0L2NmLWFjY291bnRzIix7bWV0aG9kOiJQT1NUIixib2R5Ont0b2tlbjplfX0pfSxkZXBsb3lTZWxmaG9zdDpmdW5jdGlvbihlKXtyZXR1cm4gbigiL2FwaS9zZWxmaG9zdC9kZXBsb3kiLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfSxkaXNjb25uZWN0U2VsZmhvc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbigiL2FwaS9zZWxmaG9zdC9kaXNjb25uZWN0Iix7bWV0aG9kOiJQT1NUIn0pfSxmZXRjaFNlbGZob3N0QXVkaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbigiL2FwaS9zZWxmaG9zdC9hdWRpdCIpfSxmZXRjaFNlbGZob3N0U2VjcmV0czpmdW5jdGlvbigpe3JldHVybiBuKCIvYXBpL3NlbGZob3N0L3NlY3JldHMiKX0scGF0Y2hTZWxmaG9zdFNlY3JldHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oIi9hcGkvc2VsZmhvc3Qvc2VjcmV0cyIse21ldGhvZDoiUEFUQ0giLGJvZHk6e3VwZGF0ZXM6ZX19KX0sdGVzdFNlbGZob3N0RW1haWw6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oIi9hcGkvc2VsZmhvc3QvdGVzdC1lbWFpbCIse21ldGhvZDoiUE9TVCIsYm9keTp7dG86ZX19KX19fWNvbnN0IGs9by5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiU2VsZmhvc3RTZWNyZXRzQ2FyZCIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e3dvcmtlcnNEZXZVcmw6e319LHNldHVwKGUpe2NvbnN0IGw9ZSxuPWEoKSxpPXVzZVNlbGZob3N0QXBpKCkse2RhdGE6cCxyZWZyZXNoOm19PXIoInNlbGZob3N0LXNlY3JldHMiLCgpPT5pLmZldGNoU2VsZmhvc3RTZWNyZXRzKCkse2RlZmF1bHQ6KCk9Pm51bGx9KSxrPW8ucmVhY3RpdmUoe30pLHY9by5yZWYobnVsbCksZz1vLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1wLnZhbHVlPy5pdGVtcz8/W10sdD17c3lzdGVtOltdLG9hdXRoOltdLHNtdHA6W10scGF5bWVudHM6W10sc3VwcG9ydDpbXSxhdXRoOltdfTtmb3IoY29uc3QgbyBvZiBlKXRbby5jYXRlZ29yeV0ucHVzaChvKTtyZXR1cm4gdH0pLFY9e3N5c3RlbToiU3lzdGVtIChhdXRvLWdlbmVyYXRlZCkiLG9hdXRoOiJPQXV0aCBwcm92aWRlcnMiLHNtdHA6IkVtYWlsIChTTVRQKSIscGF5bWVudHM6IlBheW1lbnRzIixzdXBwb3J0OiJTdXBwb3J0IixhdXRoOiJBdXRoZW50aWNhdGlvbiJ9LEM9by5jb21wdXRlZCgoKT0+bC53b3JrZXJzRGV2VXJsP3tnb29nbGU6YCR7bC53b3JrZXJzRGV2VXJsfS9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2tgLGdpdGh1YjpgJHtsLndvcmtlcnNEZXZVcmx9L2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFja2B9Ontnb29nbGU6IiIsZ2l0aHViOiIifSk7YXN5bmMgZnVuY3Rpb24gc2F2ZShlKXtjb25zdCB0PWtbZV0/LnRyaW0oKTtpZih0KXt2LnZhbHVlPWU7dHJ5e2NvbnN0IG89YXdhaXQgaS5wYXRjaFNlbGZob3N0U2VjcmV0cyhbe2tleTplLHZhbHVlOnR9XSk7bi5hZGQoe3RpdGxlOmAke2V9IHNhdmVkYCxkZXNjcmlwdGlvbjpvLnB1c2hlZFRvQ2xvdWRmbGFyZT8iUHVzaGVkIHRvIGRlcGxveWVkIHdvcmtlci4iOiJTdG9yZWQuIFdpbGwgYXBwbHkgb24gbmV4dCBkZXBsb3kuIixjb2xvcjoic3VjY2VzcyJ9KSxrW2VdPSIiLGF3YWl0IG0oKX1jYXRjaChlKXtjb25zdCB0PWU7bi5hZGQoe3RpdGxlOiJTYXZlIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3YudmFsdWU9bnVsbH19ZWxzZSBuLmFkZCh7dGl0bGU6IlZhbHVlIGlzIGVtcHR5Iixjb2xvcjoid2FybmluZyJ9KX1hc3luYyBmdW5jdGlvbiBjb3B5Q2FsbGJhY2soZSl7YXdhaXQodm9pZCAwKS5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLG4uYWRkKHt0aXRsZToiQ2FsbGJhY2sgVVJMIGNvcGllZCIsY29sb3I6InN1Y2Nlc3MifSl9cmV0dXJuKGUsbCxhLHIpPT57Y29uc3Qgbj10LGk9cyxwPWQsbT11O2woZihjLHIse2hlYWRlcjpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgQ29uZmlndXJhdGlvbiAiKSxvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sIiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHNlY3JldHMgb24geW91ciBkZXBsb3llZCBXb3JrZXIuIEF1dG8tZ2VuZXJhdGVkIHZhbHVlcyBhcmUgc3RhYmxlIGFjcm9zcyByZWRlcGxveXMuICIpXTt0KGA8cCBjbGFzcz0iZm9udC1zZW1pYm9sZCIke2F9PiBDb25maWd1cmF0aW9uIDwvcD48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIG10LTEiJHthfT4gRW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCBzZWNyZXRzIG9uIHlvdXIgZGVwbG95ZWQgV29ya2VyLiBBdXRvLWdlbmVyYXRlZCB2YWx1ZXMgYXJlIHN0YWJsZSBhY3Jvc3MgcmVkZXBsb3lzLiA8L3A+YCl9KSxkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InNwYWNlLXktNiJ9LFsoby5vcGVuQmxvY2soITApLG8uY3JlYXRlQmxvY2soby5GcmFnbWVudCxudWxsLG8ucmVuZGVyTGlzdChvLnVucmVmKGcpLChlLHQpPT5vLndpdGhEaXJlY3RpdmVzKChvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soImRpdiIse2tleTp0fSxbby5jcmVhdGVWTm9kZSgiaDMiLHtjbGFzczoidGV4dC1zbSBmb250LXNlbWlib2xkIG1iLTIifSxvLnRvRGlzcGxheVN0cmluZyhWW3RdKSwxKSwib2F1dGgiPT09dCYmKG8udW5yZWYoQykuZ29vZ2xlfHxvLnVucmVmKEMpLmdpdGh1Yik/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhuLHtrZXk6MCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixpY29uOiJpLWx1Y2lkZS1pbmZvIixjbGFzczoibWItMyJ9LHtkZXNjcmlwdGlvbjpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMifSwiIFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6ICIpLG8uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJtdC0yIHNwYWNlLXktMSJ9LFtvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14cyBmb250LW1vbm8ifSxbby5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkdvb2dsZToiKSxvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6ImZsZXgtMSB0cnVuY2F0ZSJ9LG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoQykuZ29vZ2xlKSwxKSxvLmNyZWF0ZVZOb2RlKGkse3NpemU6InhzIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtY29weSIsb25DbGljazplPT5jb3B5Q2FsbGJhY2soby51bnJlZihDKS5nb29nbGUpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJHaXRIdWI6Iiksby5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKEMpLmdpdGh1YiksMSksby5jcmVhdGVWTm9kZShpLHtzaXplOiJ4cyIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLWNvcHkiLG9uQ2xpY2s6ZT0+Y29weUNhbGxiYWNrKG8udW5yZWYoQykuZ2l0aHViKX0sbnVsbCw4LFsib25DbGljayJdKV0pXSldKSxfOjF9KSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTMifSxbKG8ub3BlbkJsb2NrKCEwKSxvLmNyZWF0ZUJsb2NrKG8uRnJhZ21lbnQsbnVsbCxvLnJlbmRlckxpc3QoZSxlPT4oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6ZS5rZXksY2xhc3M6ImJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkIHAtMyJ9LFtvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMifSxbby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXgtMSBtaW4tdy0wIn0sW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6InRleHQteHMgZm9udC1tb25vIn0sby50b0Rpc3BsYXlTdHJpbmcoZS5rZXkpLDEpLGUuaXNTZXQ/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhwLHtrZXk6MCxjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVGV4dFZOb2RlKCIgU2V0ICIpXSksXzoxfSkpOihvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2socCx7a2V5OjEsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToieHMifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZSgiIE5vdCBzZXQgIildKSxfOjF9KSksZS5pc0F1dG8/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhwLHtrZXk6Mixjb2xvcjoiaW5mbyIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVGV4dFZOb2RlKCIgQXV0byAiKV0pLF86MX0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sby50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldKV0pLGUuaXNBdXRvP28uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKTooby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCxjbGFzczoibXQtMyBmbGV4IGdhcC0yIn0sW28uY3JlYXRlVk5vZGUobSx7bW9kZWxWYWx1ZTpvLnVucmVmKGspW2Uua2V5XSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dD0+by51bnJlZihrKVtlLmtleV09dCx0eXBlOiJzZWNyZXRfdGV4dCI9PT1lLnR5cGU/InBhc3N3b3JkIjoidGV4dCIscGxhY2Vob2xkZXI6ZS5pc1NldD8iUGFzdGUgbmV3IHZhbHVlIHRvIG92ZXJ3cml0ZSI6IkVudGVyIHZhbHVlIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uS2V5dXA6by53aXRoS2V5cyh0PT5zYXZlKGUua2V5KSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsInR5cGUiLCJwbGFjZWhvbGRlciIsIm9uS2V5dXAiXSksby5jcmVhdGVWTm9kZShpLHtsb2FkaW5nOm8udW5yZWYodik9PT1lLmtleSxkaXNhYmxlZDohby51bnJlZihrKVtlLmtleV0/LnRyaW0oKSxzaXplOiJzbSIsb25DbGljazp0PT5zYXZlKGUua2V5KX0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoIiBTYXZlICIpXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIiwib25DbGljayJdKV0pKV0pKSksMTI4KSldKV0pKSxbW28udlNob3csZS5sZW5ndGhdXSkpLDEyOCkpXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktNiIke2F9Plx4M2MhLS1bLS1ceDNlYCkseChvLnVucmVmKGcpLChlLHIpPT57dChgPGRpdiBzdHlsZT0iJHt5KGUubGVuZ3RoP251bGw6e2Rpc3BsYXk6Im5vbmUifSl9IiR7YX0+PGgzIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbWItMiIke2F9PiR7aChWW3JdKX08L2gzPmApLCJvYXV0aCI9PT1yJiYoby51bnJlZihDKS5nb29nbGV8fG8udW5yZWYoQykuZ2l0aHViKT90KGYobix7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsaWNvbjoiaS1sdWNpZGUtaW5mbyIsY2xhc3M6Im1iLTMifSx7ZGVzY3JpcHRpb246by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMifSwiIFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6ICIpLG8uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJtdC0yIHNwYWNlLXktMSJ9LFtvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14cyBmb250LW1vbm8ifSxbby5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkdvb2dsZToiKSxvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6ImZsZXgtMSB0cnVuY2F0ZSJ9LG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoQykuZ29vZ2xlKSwxKSxvLmNyZWF0ZVZOb2RlKGkse3NpemU6InhzIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtY29weSIsb25DbGljazplPT5jb3B5Q2FsbGJhY2soby51bnJlZihDKS5nb29nbGUpfSxudWxsLDgsWyJvbkNsaWNrIl0pXSksby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJHaXRIdWI6Iiksby5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKEMpLmdpdGh1YiksMSksby5jcmVhdGVWTm9kZShpLHtzaXplOiJ4cyIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLWNvcHkiLG9uQ2xpY2s6ZT0+Y29weUNhbGxiYWNrKG8udW5yZWYoQykuZ2l0aHViKX0sbnVsbCw4LFsib25DbGljayJdKV0pXSldO3QoYDxwIGNsYXNzPSJ0ZXh0LXhzIiR7YX0+IFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6IDwvcD48ZGl2IGNsYXNzPSJtdC0yIHNwYWNlLXktMSIke2F9PjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIiR7YX0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHthfT5Hb29nbGU6PC9zcGFuPjxjb2RlIGNsYXNzPSJmbGV4LTEgdHJ1bmNhdGUiJHthfT4ke2goby51bnJlZihDKS5nb29nbGUpfTwvY29kZT5gKSx0KGYoaSx7c2l6ZToieHMiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS1jb3B5IixvbkNsaWNrOmU9PmNvcHlDYWxsYmFjayhvLnVucmVmKEMpLmdvb2dsZSl9LG51bGwsbCxhKSksdChgPC9kaXY+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14cyBmb250LW1vbm8iJHthfT48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke2F9PkdpdEh1Yjo8L3NwYW4+PGNvZGUgY2xhc3M9ImZsZXgtMSB0cnVuY2F0ZSIke2F9PiR7aChvLnVucmVmKEMpLmdpdGh1Yil9PC9jb2RlPmApLHQoZihpLHtzaXplOiJ4cyIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLWNvcHkiLG9uQ2xpY2s6ZT0+Y29weUNhbGxiYWNrKG8udW5yZWYoQykuZ2l0aHViKX0sbnVsbCxsLGEpKSx0KCI8L2Rpdj48L2Rpdj4iKX0pLF86Mn0sbCxhKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoYDxkaXYgY2xhc3M9InNwYWNlLXktMyIke2F9Plx4M2MhLS1bLS1ceDNlYCkseChlLGU9Pnt0KGA8ZGl2IGNsYXNzPSJib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZCBwLTMiJHthfT48ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtMyIke2F9PjxkaXYgY2xhc3M9ImZsZXgtMSBtaW4tdy0wIiR7YX0+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiJHthfT48Y29kZSBjbGFzcz0idGV4dC14cyBmb250LW1vbm8iJHthfT4ke2goZS5rZXkpfTwvY29kZT5gKSxlLmlzU2V0P3QoZihwLHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBTZXQgIildO3QoIiBTZXQgIil9KSxfOjJ9LGwsYSkpOnQoZihwLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBOb3Qgc2V0ICIpXTt0KCIgTm90IHNldCAiKX0pLF86Mn0sbCxhKSksZS5pc0F1dG8/dChmKHAse2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVRleHRWTm9kZSgiIEF1dG8gIildO3QoIiBBdXRvICIpfSksXzoyfSxsLGEpKTp0KCJceDNjIS0tLS1ceDNlIiksdChgPC9kaXY+PHAgY2xhc3M9InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIiR7YX0+JHtoKGUuZGVzY3JpcHRpb24pfTwvcD48L2Rpdj48L2Rpdj5gKSxlLmlzQXV0bz90KCJceDNjIS0tLS1ceDNlIik6KHQoYDxkaXYgY2xhc3M9Im10LTMgZmxleCBnYXAtMiIke2F9PmApLHQoZihtLHttb2RlbFZhbHVlOm8udW5yZWYoaylbZS5rZXldLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT5vLnVucmVmKGspW2Uua2V5XT10LHR5cGU6InNlY3JldF90ZXh0Ij09PWUudHlwZT8icGFzc3dvcmQiOiJ0ZXh0IixwbGFjZWhvbGRlcjplLmlzU2V0PyJQYXN0ZSBuZXcgdmFsdWUgdG8gb3ZlcndyaXRlIjoiRW50ZXIgdmFsdWUiLGNsYXNzOiJmbGV4LTEgZm9udC1tb25vIixhdXRvY29tcGxldGU6Im9mZiIsb25LZXl1cDp0PT5zYXZlKGUua2V5KX0sbnVsbCxsLGEpKSx0KGYoaSx7bG9hZGluZzpvLnVucmVmKHYpPT09ZS5rZXksZGlzYWJsZWQ6IW8udW5yZWYoaylbZS5rZXldPy50cmltKCksc2l6ZToic20iLG9uQ2xpY2s6dD0+c2F2ZShlLmtleSl9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBTYXZlICIpXTt0KCIgU2F2ZSAiKX0pLF86Mn0sbCxhKSksdCgiPC9kaXY+IikpLHQoIjwvZGl2PiIpfSksdCgiXHgzYyEtLV0tLVx4M2U8L2Rpdj48L2Rpdj4iKX0pLHQoIlx4M2MhLS1dLS1ceDNlPC9kaXY+Iil9KSxfOjF9LGEpKX19fSksdj1rLnNldHVwO2suc2V0dXA9KGUsdCk9Pntjb25zdCBsPW8udXNlU1NSQ29udGV4dCgpO3JldHVybihsLm1vZHVsZXN8fChsLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3NlbGZob3N0L2FwcC9jb21wb25lbnRzL1NlbGZob3N0L1NlbGZob3N0U2VjcmV0c0NhcmQudnVlIiksdj92KGUsdCk6dm9pZCAwfTtjb25zdCBnPU9iamVjdC5hc3NpZ24oayx7X19uYW1lOiJTZWxmaG9zdFNlY3JldHNDYXJkIn0pLFY9Imh0dHBzOi8vZGFzaC5jbG91ZGZsYXJlLmNvbS9wcm9maWxlL2FwaS10b2tlbnMvY3JlYXRlIixDPW8uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6InNlbGYtaG9zdCIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAobil7bCh7dGl0bGU6IlNlbGYtaG9zdGluZyJ9KTtjb25zdCB4PWEoKSx5PXVzZVNlbGZob3N0QXBpKCksaz1vLnJlZigiIiksdj1vLnJlZighMSksQz1vLnJlZighMSksTj1vLnJlZighMSksdz1vLnJlZihbXSksYj1vLnJlZih2b2lkIDApLHtkYXRhOl8scmVmcmVzaDpTfT1yKCJzZWxmaG9zdC1zdGF0dXMiLCgpPT55LmZldGNoU2VsZmhvc3RTdGF0dXMoKSx7ZGVmYXVsdDooKT0+bnVsbH0pLCQ9by5jb21wdXRlZCgoKT0+e2NvbnN0IGU9Xy52YWx1ZT8uc3RhdHVzO3JldHVybiJkZXBsb3llZCI9PT1lPyJzdWNjZXNzIjoiZmFpbGVkIj09PWU/ImVycm9yIjoid2FybmluZyJ9KSxEPW8uY29tcHV0ZWQoKCk9Pntjb25zdCBlPV8udmFsdWU/LmNmX3Rva2VuX2V4cGlyZXNfYXQ7cmV0dXJuIGU/TWF0aC5mbG9vcigobmV3IERhdGUoZSkuZ2V0VGltZSgpLURhdGUubm93KCkpLzg2NGU1KTpudWxsfSk7YXN5bmMgZnVuY3Rpb24gbG9hZEFjY291bnRzRm9yVG9rZW4oKXtjb25zdCBlPWsudmFsdWUudHJpbSgpO2lmKGUpe04udmFsdWU9ITA7dHJ5e2NvbnN0IHQ9YXdhaXQgeS5saXN0Q2xvdWRmbGFyZUFjY291bnRzKGUpO3cudmFsdWU9dC5hY2NvdW50cyxiLnZhbHVlPTE9PT13LnZhbHVlLmxlbmd0aD93LnZhbHVlWzBdLmlkOnZvaWQgMH1jYXRjaChlKXtjb25zdCB0PWU7eC5hZGQoe3RpdGxlOiJDb3VsZCBub3QgcmVhZCBhY2NvdW50cyBmcm9tIHRoaXMgdG9rZW4iLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJWZXJpZnkgdGhlIHRva2VuIGhhcyBBY2NvdW50IFNldHRpbmdzOiBSZWFkLiIsY29sb3I6ImVycm9yIn0pLHcudmFsdWU9W10sYi52YWx1ZT12b2lkIDB9ZmluYWxseXtOLnZhbHVlPSExfX19YXN5bmMgZnVuY3Rpb24gZGVwbG95KCl7di52YWx1ZT0hMDt0cnl7Y29uc3QgZT1rLnZhbHVlLnRyaW0oKXx8dm9pZCAwO2lmKGUmJncudmFsdWUubGVuZ3RoPjEmJiFiLnZhbHVlKXJldHVybiB2b2lkIHguYWRkKHt0aXRsZToiUGljayBhIENsb3VkZmxhcmUgYWNjb3VudCIsY29sb3I6Indhcm5pbmcifSk7Y29uc3QgdD1hd2FpdCB5LmRlcGxveVNlbGZob3N0KHt0b2tlbjplLGFjY291bnRfaWQ6Yi52YWx1ZX0pO3guYWRkKHt0aXRsZTpgRGVwbG95ZWQgJHt0LnZlcnNpb259YCxkZXNjcmlwdGlvbjp0LnVybCxjb2xvcjoic3VjY2VzcyIsaWNvbjoiaS1sdWNpZGUtY2hlY2stY2lyY2xlIn0pLGsudmFsdWU9IiIsdy52YWx1ZT1bXSxiLnZhbHVlPXZvaWQgMCxhd2FpdCBTKCl9Y2F0Y2goZSl7Y29uc3QgdD1lO2lmKCJtdWx0aXBsZV9hY2NvdW50cyI9PT10Py5kYXRhPy5kYXRhPy5jb2RlJiZ0LmRhdGEuZGF0YS5hY2NvdW50cylyZXR1cm4gdy52YWx1ZT10LmRhdGEuZGF0YS5hY2NvdW50cyxiLnZhbHVlPXZvaWQgMCx2b2lkIHguYWRkKHt0aXRsZToiTXVsdGlwbGUgQ2xvdWRmbGFyZSBhY2NvdW50cyIsZGVzY3JpcHRpb246IlBpY2sgd2hpY2ggYWNjb3VudCB0byBkZXBsb3kgaW50byBiZWxvdywgdGhlbiBjbGljayBEZXBsb3kgYWdhaW4uIixjb2xvcjoid2FybmluZyJ9KTt4LmFkZCh7dGl0bGU6IkRlcGxveSBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/Lm1lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IiLGljb246ImktbHVjaWRlLWFsZXJ0LXRyaWFuZ2xlIn0pfWZpbmFsbHl7di52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdCgpe0MudmFsdWU9ITA7dHJ5e2F3YWl0IHkuZGlzY29ubmVjdFNlbGZob3N0KCkseC5hZGQoe3RpdGxlOiJEaXNjb25uZWN0ZWQiLGNvbG9yOiJzdWNjZXNzIn0pLHcudmFsdWU9W10sYi52YWx1ZT12b2lkIDAsYXdhaXQgUygpfWNhdGNoKGUpe2NvbnN0IHQ9ZTt4LmFkZCh7dGl0bGU6IkRpc2Nvbm5lY3QgZmFpbGVkIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e0MudmFsdWU9ITF9fWNvbnN0IFQ9by5jb21wdXRlZCgoKT0+dy52YWx1ZS5tYXAoZT0+KHtsYWJlbDpgJHtlLm5hbWV9IOKAlCAke2UuaWQuc2xpY2UoMCw4KX3igKZgLHZhbHVlOmUuaWR9KSkpO3JldHVybihsLGEscixuKT0+e2NvbnN0IHg9dCx5PXMsUz1jLEI9ZCxBPWksUj11LFU9cDthKGYoZSxvLm1lcmdlUHJvcHMoe2lkOiJzZWxmLWhvc3QifSxuKSx7aGVhZGVyOm8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InB4LTQgcHktMyBib3JkZXItYiBib3JkZXItZGVmYXVsdCJ9LFtvLmNyZWF0ZVZOb2RlKCJoMSIse2NsYXNzOiJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQifSwiIFNlbGYtaG9zdGluZyAiKSxvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LCIgRGVwbG95IHRoaXMgYXBwbGljYXRpb24gdG8geW91ciBvd24gQ2xvdWRmbGFyZSBhY2NvdW50LiAiKV0pXTt0KGA8ZGl2IGNsYXNzPSJweC00IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQiJHthfT48aDEgY2xhc3M9InRleHQtbGcgZm9udC1zZW1pYm9sZCIke2F9PiBTZWxmLWhvc3RpbmcgPC9oMT48cCBjbGFzcz0idGV4dC1zbSB0ZXh0LW11dGVkIiR7YX0+IERlcGxveSB0aGlzIGFwcGxpY2F0aW9uIHRvIHlvdXIgb3duIENsb3VkZmxhcmUgYWNjb3VudC4gPC9wPjwvZGl2PmApfSksYm9keTpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJtYXgtdy0yeGwgbXgtYXV0byBwLTYgc3BhY2UteS02In0sW28udW5yZWYoXyk/LnVwZGF0ZV9hdmFpbGFibGU/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayh4LHtrZXk6MCxjb2xvcjoid2FybmluZyIsaWNvbjoiaS1sdWNpZGUtcmVmcmVzaC1jdyIsdGl0bGU6IlVwZGF0ZSBhdmFpbGFibGUiLGRlc2NyaXB0aW9uOmBOZXcgdmVyc2lvbiAke28udW5yZWYoXykubGF0ZXN0X3ZlcnNpb259IGlzIGF2YWlsYWJsZSAoZGVwbG95ZWQ6ICR7by51bnJlZihfKS5kZXBsb3llZF92ZXJzaW9ufSlgfSx7YWN0aW9uczpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKHkse2xvYWRpbmc6by51bnJlZih2KSxjb2xvcjoid2FybmluZyIsc2l6ZToic20iLG9uQ2xpY2s6ZGVwbG95fSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZSgiIFVwZGF0ZSAiKV0pLF86MX0sOCxbImxvYWRpbmciXSldKSxfOjF9LDgsWyJkZXNjcmlwdGlvbiJdKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG51bGwhPT1vLnVucmVmKEQpJiZvLnVucmVmKEQpPD0xND8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKHgse2tleToxLGNvbG9yOiJ3YXJuaW5nIixpY29uOiJpLWx1Y2lkZS1jbG9jayIsdGl0bGU6IkNsb3VkZmxhcmUgdG9rZW4gZXhwaXJpbmcgc29vbiIsZGVzY3JpcHRpb246YFlvdXIgc3RvcmVkIHRva2VuIGV4cGlyZXMgaW4gJHtvLnVucmVmKEQpfSBkYXkocykuIFBhc3RlIGEgbmV3IHRva2VuIGFuZCByZWRlcGxveSB0byByZWZyZXNoIGl0LmB9LG51bGwsOCxbImRlc2NyaXB0aW9uIl0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby51bnJlZihfKT8uc3RhdHVzJiYiaWRsZSIhPT1vLnVucmVmKF8pLnN0YXR1cz8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKFMse2tleToyfSx7aGVhZGVyOm8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbby5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIn0sIiBEZXBsb3ltZW50ICIpLG8uY3JlYXRlVk5vZGUoQix7Y29sb3I6by51bnJlZigkKSx2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZShvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKV0pXSksZm9vdGVyOm8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoeSx7bG9hZGluZzpvLnVucmVmKEMpLGNvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsc2l6ZToic20iLG9uQ2xpY2s6ZGlzY29ubmVjdH0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoIiBEaXNjb25uZWN0ICIpXSksXzoxfSw4LFsibG9hZGluZyJdKV0pLGRlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6InNwYWNlLXktMiB0ZXh0LXNtIn0sW28udW5yZWYoXykud29ya2Vyc19kZXZfdXJsPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soInAiLHtrZXk6MH0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJVUkw6Iiksby5jcmVhdGVWTm9kZSgiYSIse2hyZWY6by51bnJlZihfKS53b3JrZXJzX2Rldl91cmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIG1sLTEifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLndvcmtlcnNfZGV2X3VybCksOSxbImhyZWYiXSldKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbj8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjF9LFtvLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVmVyc2lvbjoiKSxvLmNyZWF0ZVRleHRWTm9kZSgiICIrby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS5kZXBsb3llZF92ZXJzaW9uKSwxKV0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby51bnJlZihfKS5jZl9hY2NvdW50X2lkPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soInAiLHtrZXk6Mn0sW28uY3JlYXRlVk5vZGUoInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJDbG91ZGZsYXJlIGFjY291bnQ6Iiksby5jcmVhdGVUZXh0Vk5vZGUoKSxvLmNyZWF0ZVZOb2RlKCJjb2RlIix7Y2xhc3M6InRleHQteHMifSxvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLmNmX2FjY291bnRfaWQpLDEpXSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxvLnVucmVmKF8pLmxhc3RfZXJyb3I/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jaygicCIse2tleTozLGNsYXNzOiJ0ZXh0LWVycm9yIn0sby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS5sYXN0X2Vycm9yKSwxKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjF9KSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jayhnLHtrZXk6Mywid29ya2Vycy1kZXYtdXJsIjpvLnVucmVmKF8pLndvcmtlcnNfZGV2X3VybH0sbnVsbCw4LFsid29ya2Vycy1kZXYtdXJsIl0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby5jcmVhdGVWTm9kZShTLG51bGwse2hlYWRlcjpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSxvLnRvRGlzcGxheVN0cmluZygiZGVwbG95ZWQiPT09by51bnJlZihfKT8uc3RhdHVzPyJSZWRlcGxveSI6IkRlcGxveSB0byB5b3VyIENsb3VkZmxhcmUgYWNjb3VudCIpLDEpXSksZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoic3BhY2UteS00In0sW28uY3JlYXRlVk5vZGUoImRldGFpbHMiLHtjbGFzczoidGV4dC1zbSJ9LFtvLmNyZWF0ZVZOb2RlKCJzdW1tYXJ5Iix7Y2xhc3M6ImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUifSwiIEhvdyBkbyBJIGdldCBhIENsb3VkZmxhcmUgQVBJIHRva2VuPyAiKSxvLmNyZWF0ZVZOb2RlKCJvbCIse2NsYXNzOiJtdC0yIGxpc3QtZGVjaW1hbCBwbC02IHNwYWNlLXktMSB0ZXh0LW11dGVkIn0sW28uY3JlYXRlVk5vZGUoImxpIixudWxsLFtvLmNyZWF0ZVRleHRWTm9kZSgiIEdvIHRvICIpLG8uY3JlYXRlVk5vZGUoImEiLHtocmVmOlYsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIn0sIiBDbG91ZGZsYXJlIOKGkiBNeSBQcm9maWxlIOKGkiBBUEkgVG9rZW5zIOKGkiBDcmVhdGUgVG9rZW4gIildKSxvLmNyZWF0ZVZOb2RlKCJsaSIsbnVsbCxbby5jcmVhdGVUZXh0Vk5vZGUoIkNob29zZSAiKSxvLmNyZWF0ZVZOb2RlKCJzdHJvbmciLG51bGwsIkNyZWF0ZSBDdXN0b20gVG9rZW4iKV0pLG8uY3JlYXRlVk5vZGUoImxpIixudWxsLFtvLmNyZWF0ZVRleHRWTm9kZSgiIEFkZCB0aGVzZSBwZXJtaXNzaW9ucyAoYWxsICIpLG8uY3JlYXRlVk5vZGUoInN0cm9uZyIsbnVsbCwiRWRpdCIpLG8uY3JlYXRlVGV4dFZOb2RlKCIgdW5sZXNzIG5vdGVkKTogV29ya2VycyBTY3JpcHRzLCBXb3JrZXJzIEtWIFN0b3JhZ2UsIFdvcmtlcnMgUjIgU3RvcmFnZSwgRDEsIEFjY291bnQgU2V0dGluZ3MgKFJlYWQpLCBVc2VyIERldGFpbHMgKFJlYWQpICIpXSksby5jcmVhdGVWTm9kZSgibGkiLG51bGwsIkFjY291bnQgUmVzb3VyY2VzOiBpbmNsdWRlIGFsbCBhY2NvdW50cyAob3IgcGljayBvbmUpIiksby5jcmVhdGVWTm9kZSgibGkiLG51bGwsIkNvbnRpbnVlIOKGkiBDcmVhdGUgVG9rZW4g4oaSIGNvcHkgdGhlIHRva2VuIChzaG93biBvbmNlKSIpXSldKSxvLmNyZWF0ZVZOb2RlKEEse2xhYmVsOiJDbG91ZGZsYXJlIEFQSSBUb2tlbiIsaGVscDoiTGVhdmUgYmxhbmsgdG8gcmVkZXBsb3kgdXNpbmcgdGhlIHN0b3JlZCB0b2tlbi4ifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKFIse21vZGVsVmFsdWU6by51bnJlZihrKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihrKT9rLnZhbHVlPWU6bnVsbCx0eXBlOiJwYXNzd29yZCIscGxhY2Vob2xkZXI6IuKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAoiIsY2xhc3M6InctZnVsbCBmb250LW1vbm8iLGF1dG9jb21wbGV0ZToib2ZmIixvbkJsdXI6bG9hZEFjY291bnRzRm9yVG9rZW59LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pXSksXzoxfSksby51bnJlZih3KS5sZW5ndGg+MD8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKEEse2tleTowLGxhYmVsOiJDbG91ZGZsYXJlIGFjY291bnQiLGhlbHA6MT09PW8udW5yZWYodykubGVuZ3RoPyJBdXRvLXNlbGVjdGVkICh0aGlzIHRva2VuIGhhcyBhY2Nlc3MgdG8gb25lIGFjY291bnQpLiI6IlBpY2sgd2hpY2ggYWNjb3VudCB0byBkZXBsb3kgaW50by4ifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVZOb2RlKFUse21vZGVsVmFsdWU6by51bnJlZihiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCxpdGVtczpvLnVucmVmKFQpLGxvYWRpbmc6by51bnJlZihOKSxkaXNhYmxlZDoxPT09by51bnJlZih3KS5sZW5ndGgscGxhY2Vob2xkZXI6IlNlbGVjdCBhbiBhY2NvdW50IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyIsImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pLF86MX0sOCxbImhlbHAiXSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxvLmNyZWF0ZVZOb2RlKHkse2xvYWRpbmc6by51bnJlZih2KSxkaXNhYmxlZDoiZGVwbG95aW5nIj09PW8udW5yZWYoXyk/LnN0YXR1cyxvbkNsaWNrOmRlcGxveX0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoby50b0Rpc3BsYXlTdHJpbmcoImRlcGxveWVkIj09PW8udW5yZWYoXyk/LnN0YXR1cz8iUmVkZXBsb3kiOiJEZXBsb3kiKSwxKV0pLF86MX0sOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pXSksXzoxfSldKV07dChgPGRpdiBjbGFzcz0ibWF4LXctMnhsIG14LWF1dG8gcC02IHNwYWNlLXktNiIke2F9PmApLG8udW5yZWYoXyk/LnVwZGF0ZV9hdmFpbGFibGU/dChmKHgse2NvbG9yOiJ3YXJuaW5nIixpY29uOiJpLWx1Y2lkZS1yZWZyZXNoLWN3Iix0aXRsZToiVXBkYXRlIGF2YWlsYWJsZSIsZGVzY3JpcHRpb246YE5ldyB2ZXJzaW9uICR7by51bnJlZihfKS5sYXRlc3RfdmVyc2lvbn0gaXMgYXZhaWxhYmxlIChkZXBsb3llZDogJHtvLnVucmVmKF8pLmRlcGxveWVkX3ZlcnNpb259KWB9LHthY3Rpb25zOm8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVWTm9kZSh5LHtsb2FkaW5nOm8udW5yZWYodiksY29sb3I6Indhcm5pbmciLHNpemU6InNtIixvbkNsaWNrOmRlcGxveX0se2RlZmF1bHQ6by53aXRoQ3R4KCgpPT5bby5jcmVhdGVUZXh0Vk5vZGUoIiBVcGRhdGUgIildKSxfOjF9LDgsWyJsb2FkaW5nIl0pXTt0KGYoeSx7bG9hZGluZzpvLnVucmVmKHYpLGNvbG9yOiJ3YXJuaW5nIixzaXplOiJzbSIsb25DbGljazpkZXBsb3l9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoIiBVcGRhdGUgIildO3QoIiBVcGRhdGUgIil9KSxfOjF9LGwsYSkpfSksXzoxfSxsLGEpKTp0KCJceDNjIS0tLS1ceDNlIiksbnVsbCE9PW8udW5yZWYoRCkmJm8udW5yZWYoRCk8PTE0P3QoZih4LHtjb2xvcjoid2FybmluZyIsaWNvbjoiaS1sdWNpZGUtY2xvY2siLHRpdGxlOiJDbG91ZGZsYXJlIHRva2VuIGV4cGlyaW5nIHNvb24iLGRlc2NyaXB0aW9uOmBZb3VyIHN0b3JlZCB0b2tlbiBleHBpcmVzIGluICR7by51bnJlZihEKX0gZGF5KHMpLiBQYXN0ZSBhIG5ldyB0b2tlbiBhbmQgcmVkZXBsb3kgdG8gcmVmcmVzaCBpdC5gfSxudWxsLGwsYSkpOnQoIlx4M2MhLS0tLVx4M2UiKSxvLnVucmVmKF8pPy5zdGF0dXMmJiJpZGxlIiE9PW8udW5yZWYoXykuc3RhdHVzP3QoZihTLG51bGwse2hlYWRlcjpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbby5jcmVhdGVWTm9kZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIn0sIiBEZXBsb3ltZW50ICIpLG8uY3JlYXRlVk5vZGUoQix7Y29sb3I6by51bnJlZigkKSx2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZShvLnRvRGlzcGxheVN0cmluZyhvLnVucmVmKF8pLnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKV0pXTt0KGA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iJHthfT48cCBjbGFzcz0iZm9udC1zZW1pYm9sZCIke2F9PiBEZXBsb3ltZW50IDwvcD5gKSx0KGYoQix7Y29sb3I6by51bnJlZigkKSx2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVGV4dFZOb2RlKG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoXykuc3RhdHVzKSwxKV07dChgJHtoKG8udW5yZWYoXykuc3RhdHVzKX1gKX0pLF86MX0sbCxhKSksdCgiPC9kaXY+Iil9KSxmb290ZXI6by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKHkse2xvYWRpbmc6by51bnJlZihDKSxjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLHNpemU6InNtIixvbkNsaWNrOmRpc2Nvbm5lY3R9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVGV4dFZOb2RlKCIgRGlzY29ubmVjdCAiKV0pLF86MX0sOCxbImxvYWRpbmciXSldO3QoZih5LHtsb2FkaW5nOm8udW5yZWYoQyksY29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixzaXplOiJzbSIsb25DbGljazpkaXNjb25uZWN0fSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVGV4dFZOb2RlKCIgRGlzY29ubmVjdCAiKV07dCgiIERpc2Nvbm5lY3QgIil9KSxfOjF9LGwsYSkpfSksZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTIgdGV4dC1zbSJ9LFtvLnVucmVmKF8pLndvcmtlcnNfZGV2X3VybD8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjB9LFtvLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVVJMOiIpLG8uY3JlYXRlVk5vZGUoImEiLHtocmVmOm8udW5yZWYoXykud29ya2Vyc19kZXZfdXJsLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSBtbC0xIn0sby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS53b3JrZXJzX2Rldl91cmwpLDksWyJocmVmIl0pXSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxvLnVucmVmKF8pLmRlcGxveWVkX3ZlcnNpb24/KG8ub3BlbkJsb2NrKCksby5jcmVhdGVCbG9jaygicCIse2tleToxfSxbby5jcmVhdGVWTm9kZSgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIlZlcnNpb246Iiksby5jcmVhdGVUZXh0Vk5vZGUoIiAiK28udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbiksMSldKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8udW5yZWYoXykuY2ZfYWNjb3VudF9pZD8oby5vcGVuQmxvY2soKSxvLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjJ9LFtvLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiQ2xvdWRmbGFyZSBhY2NvdW50OiIpLG8uY3JlYXRlVGV4dFZOb2RlKCksby5jcmVhdGVWTm9kZSgiY29kZSIse2NsYXNzOiJ0ZXh0LXhzIn0sby50b0Rpc3BsYXlTdHJpbmcoby51bnJlZihfKS5jZl9hY2NvdW50X2lkKSwxKV0pKTpvLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksby51bnJlZihfKS5sYXN0X2Vycm9yPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soInAiLHtrZXk6MyxjbGFzczoidGV4dC1lcnJvciJ9LG8udG9EaXNwbGF5U3RyaW5nKG8udW5yZWYoXykubGFzdF9lcnJvciksMSkpOm8uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pXTt0KGA8ZGl2IGNsYXNzPSJzcGFjZS15LTIgdGV4dC1zbSIke2F9PmApLG8udW5yZWYoXykud29ya2Vyc19kZXZfdXJsP3QoYDxwJHthfT48c3BhbiBjbGFzcz0idGV4dC1tdXRlZCIke2F9PlVSTDo8L3NwYW4+PGEke20oImhyZWYiLG8udW5yZWYoXykud29ya2Vyc19kZXZfdXJsKX0gdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGNsYXNzPSJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIG1sLTEiJHthfT4ke2goby51bnJlZihfKS53b3JrZXJzX2Rldl91cmwpfTwvYT48L3A+YCk6dCgiXHgzYyEtLS0tXHgzZSIpLG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbj90KGA8cCR7YX0+PHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiJHthfT5WZXJzaW9uOjwvc3Bhbj4gJHtoKG8udW5yZWYoXykuZGVwbG95ZWRfdmVyc2lvbil9PC9wPmApOnQoIlx4M2MhLS0tLVx4M2UiKSxvLnVucmVmKF8pLmNmX2FjY291bnRfaWQ/dChgPHAke2F9PjxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIiR7YX0+Q2xvdWRmbGFyZSBhY2NvdW50Ojwvc3Bhbj4gPGNvZGUgY2xhc3M9InRleHQteHMiJHthfT4ke2goby51bnJlZihfKS5jZl9hY2NvdW50X2lkKX08L2NvZGU+PC9wPmApOnQoIlx4M2MhLS0tLVx4M2UiKSxvLnVucmVmKF8pLmxhc3RfZXJyb3I/dChgPHAgY2xhc3M9InRleHQtZXJyb3IiJHthfT4ke2goby51bnJlZihfKS5sYXN0X2Vycm9yKX08L3A+YCk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoIjwvZGl2PiIpfSksXzoxfSxsLGEpKTp0KCJceDNjIS0tLS1ceDNlIiksImRlcGxveWVkIj09PW8udW5yZWYoXyk/LnN0YXR1cz90KGYoZyx7IndvcmtlcnMtZGV2LXVybCI6by51bnJlZihfKS53b3JrZXJzX2Rldl91cmx9LG51bGwsbCxhKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoZihTLG51bGwse2hlYWRlcjpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LG8udG9EaXNwbGF5U3RyaW5nKCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/IlJlZGVwbG95IjoiRGVwbG95IHRvIHlvdXIgQ2xvdWRmbGFyZSBhY2NvdW50IiksMSldO3QoYDxwIGNsYXNzPSJmb250LXNlbWlib2xkIiR7YX0+JHtoKCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/IlJlZGVwbG95IjoiRGVwbG95IHRvIHlvdXIgQ2xvdWRmbGFyZSBhY2NvdW50Iil9PC9wPmApfSksZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJzcGFjZS15LTQifSxbby5jcmVhdGVWTm9kZSgiZGV0YWlscyIse2NsYXNzOiJ0ZXh0LXNtIn0sW28uY3JlYXRlVk5vZGUoInN1bW1hcnkiLHtjbGFzczoiY3Vyc29yLXBvaW50ZXIgdGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSJ9LCIgSG93IGRvIEkgZ2V0IGEgQ2xvdWRmbGFyZSBBUEkgdG9rZW4/ICIpLG8uY3JlYXRlVk5vZGUoIm9sIix7Y2xhc3M6Im10LTIgbGlzdC1kZWNpbWFsIHBsLTYgc3BhY2UteS0xIHRleHQtbXV0ZWQifSxbby5jcmVhdGVWTm9kZSgibGkiLG51bGwsW28uY3JlYXRlVGV4dFZOb2RlKCIgR28gdG8gIiksby5jcmVhdGVWTm9kZSgiYSIse2hyZWY6Vix0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciIsY2xhc3M6InRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUifSwiIENsb3VkZmxhcmUg4oaSIE15IFByb2ZpbGUg4oaSIEFQSSBUb2tlbnMg4oaSIENyZWF0ZSBUb2tlbiAiKV0pLG8uY3JlYXRlVk5vZGUoImxpIixudWxsLFtvLmNyZWF0ZVRleHRWTm9kZSgiQ2hvb3NlICIpLG8uY3JlYXRlVk5vZGUoInN0cm9uZyIsbnVsbCwiQ3JlYXRlIEN1c3RvbSBUb2tlbiIpXSksby5jcmVhdGVWTm9kZSgibGkiLG51bGwsW28uY3JlYXRlVGV4dFZOb2RlKCIgQWRkIHRoZXNlIHBlcm1pc3Npb25zIChhbGwgIiksby5jcmVhdGVWTm9kZSgic3Ryb25nIixudWxsLCJFZGl0Iiksby5jcmVhdGVUZXh0Vk5vZGUoIiB1bmxlc3Mgbm90ZWQpOiBXb3JrZXJzIFNjcmlwdHMsIFdvcmtlcnMgS1YgU3RvcmFnZSwgV29ya2VycyBSMiBTdG9yYWdlLCBEMSwgQWNjb3VudCBTZXR0aW5ncyAoUmVhZCksIFVzZXIgRGV0YWlscyAoUmVhZCkgIildKSxvLmNyZWF0ZVZOb2RlKCJsaSIsbnVsbCwiQWNjb3VudCBSZXNvdXJjZXM6IGluY2x1ZGUgYWxsIGFjY291bnRzIChvciBwaWNrIG9uZSkiKSxvLmNyZWF0ZVZOb2RlKCJsaSIsbnVsbCwiQ29udGludWUg4oaSIENyZWF0ZSBUb2tlbiDihpIgY29weSB0aGUgdG9rZW4gKHNob3duIG9uY2UpIildKV0pLG8uY3JlYXRlVk5vZGUoQSx7bGFiZWw6IkNsb3VkZmxhcmUgQVBJIFRva2VuIixoZWxwOiJMZWF2ZSBibGFuayB0byByZWRlcGxveSB1c2luZyB0aGUgc3RvcmVkIHRva2VuLiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoUix7bW9kZWxWYWx1ZTpvLnVucmVmKGspLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLmlzUmVmKGspP2sudmFsdWU9ZTpudWxsLHR5cGU6InBhc3N3b3JkIixwbGFjZWhvbGRlcjoi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCiIixjbGFzczoidy1mdWxsIGZvbnQtbW9ubyIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uQmx1cjpsb2FkQWNjb3VudHNGb3JUb2tlbn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSxfOjF9KSxvLnVucmVmKHcpLmxlbmd0aD4wPyhvLm9wZW5CbG9jaygpLG8uY3JlYXRlQmxvY2soQSx7a2V5OjAsbGFiZWw6IkNsb3VkZmxhcmUgYWNjb3VudCIsaGVscDoxPT09by51bnJlZih3KS5sZW5ndGg/IkF1dG8tc2VsZWN0ZWQgKHRoaXMgdG9rZW4gaGFzIGFjY2VzcyB0byBvbmUgYWNjb3VudCkuIjoiUGljayB3aGljaCBhY2NvdW50IHRvIGRlcGxveSBpbnRvLiJ9LHtkZWZhdWx0Om8ud2l0aEN0eCgoKT0+W28uY3JlYXRlVk5vZGUoVSx7bW9kZWxWYWx1ZTpvLnVucmVmKGIpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLmlzUmVmKGIpP2IudmFsdWU9ZTpudWxsLGl0ZW1zOm8udW5yZWYoVCksbG9hZGluZzpvLnVucmVmKE4pLGRpc2FibGVkOjE9PT1vLnVucmVmKHcpLmxlbmd0aCxwbGFjZWhvbGRlcjoiU2VsZWN0IGFuIGFjY291bnQiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsIml0ZW1zIiwibG9hZGluZyIsImRpc2FibGVkIl0pXSksXzoxfSw4LFsiaGVscCJdKSk6by5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLG8uY3JlYXRlVk5vZGUoeSx7bG9hZGluZzpvLnVucmVmKHYpLGRpc2FibGVkOiJkZXBsb3lpbmciPT09by51bnJlZihfKT8uc3RhdHVzLG9uQ2xpY2s6ZGVwbG95fSx7ZGVmYXVsdDpvLndpdGhDdHgoKCk9PltvLmNyZWF0ZVRleHRWTm9kZShvLnRvRGlzcGxheVN0cmluZygiZGVwbG95ZWQiPT09by51bnJlZihfKT8uc3RhdHVzPyJSZWRlcGxveSI6IkRlcGxveSIpLDEpXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldO3QoYDxkaXYgY2xhc3M9InNwYWNlLXktNCIke2F9PjxkZXRhaWxzIGNsYXNzPSJ0ZXh0LXNtIiR7YX0+PHN1bW1hcnkgY2xhc3M9ImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUiJHthfT4gSG93IGRvIEkgZ2V0IGEgQ2xvdWRmbGFyZSBBUEkgdG9rZW4/IDwvc3VtbWFyeT48b2wgY2xhc3M9Im10LTIgbGlzdC1kZWNpbWFsIHBsLTYgc3BhY2UteS0xIHRleHQtbXV0ZWQiJHthfT48bGkke2F9PiBHbyB0byA8YSR7bSgiaHJlZiIsVil9IHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBjbGFzcz0idGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSIke2F9PiBDbG91ZGZsYXJlIOKGkiBNeSBQcm9maWxlIOKGkiBBUEkgVG9rZW5zIOKGkiBDcmVhdGUgVG9rZW4gPC9hPjwvbGk+PGxpJHthfT5DaG9vc2UgPHN0cm9uZyR7YX0+Q3JlYXRlIEN1c3RvbSBUb2tlbjwvc3Ryb25nPjwvbGk+PGxpJHthfT4gQWRkIHRoZXNlIHBlcm1pc3Npb25zIChhbGwgPHN0cm9uZyR7YX0+RWRpdDwvc3Ryb25nPiB1bmxlc3Mgbm90ZWQpOiBXb3JrZXJzIFNjcmlwdHMsIFdvcmtlcnMgS1YgU3RvcmFnZSwgV29ya2VycyBSMiBTdG9yYWdlLCBEMSwgQWNjb3VudCBTZXR0aW5ncyAoUmVhZCksIFVzZXIgRGV0YWlscyAoUmVhZCkgPC9saT48bGkke2F9PkFjY291bnQgUmVzb3VyY2VzOiBpbmNsdWRlIGFsbCBhY2NvdW50cyAob3IgcGljayBvbmUpPC9saT48bGkke2F9PkNvbnRpbnVlIOKGkiBDcmVhdGUgVG9rZW4g4oaSIGNvcHkgdGhlIHRva2VuIChzaG93biBvbmNlKTwvbGk+PC9vbD48L2RldGFpbHM+YCksdChmKEEse2xhYmVsOiJDbG91ZGZsYXJlIEFQSSBUb2tlbiIsaGVscDoiTGVhdmUgYmxhbmsgdG8gcmVkZXBsb3kgdXNpbmcgdGhlIHN0b3JlZCB0b2tlbi4ifSx7ZGVmYXVsdDpvLndpdGhDdHgoKGUsdCxsLGEpPT57aWYoIXQpcmV0dXJuW28uY3JlYXRlVk5vZGUoUix7bW9kZWxWYWx1ZTpvLnVucmVmKGspLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5vLmlzUmVmKGspP2sudmFsdWU9ZTpudWxsLHR5cGU6InBhc3N3b3JkIixwbGFjZWhvbGRlcjoi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCi4oCiIixjbGFzczoidy1mdWxsIGZvbnQtbW9ubyIsYXV0b2NvbXBsZXRlOiJvZmYiLG9uQmx1cjpsb2FkQWNjb3VudHNGb3JUb2tlbn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldO3QoZihSLHttb2RlbFZhbHVlOm8udW5yZWYoayksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9Pm8uaXNSZWYoayk/ay52YWx1ZT1lOm51bGwsdHlwZToicGFzc3dvcmQiLHBsYWNlaG9sZGVyOiLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKIiLGNsYXNzOiJ3LWZ1bGwgZm9udC1tb25vIixhdXRvY29tcGxldGU6Im9mZiIsb25CbHVyOmxvYWRBY2NvdW50c0ZvclRva2VufSxudWxsLGwsYSkpfSksXzoxfSxsLGEpKSxvLnVucmVmKHcpLmxlbmd0aD4wP3QoZihBLHtsYWJlbDoiQ2xvdWRmbGFyZSBhY2NvdW50IixoZWxwOjE9PT1vLnVucmVmKHcpLmxlbmd0aD8iQXV0by1zZWxlY3RlZCAodGhpcyB0b2tlbiBoYXMgYWNjZXNzIHRvIG9uZSBhY2NvdW50KS4iOiJQaWNrIHdoaWNoIGFjY291bnQgdG8gZGVwbG95IGludG8uIn0se2RlZmF1bHQ6by53aXRoQ3R4KChlLHQsbCxhKT0+e2lmKCF0KXJldHVybltvLmNyZWF0ZVZOb2RlKFUse21vZGVsVmFsdWU6by51bnJlZihiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCxpdGVtczpvLnVucmVmKFQpLGxvYWRpbmc6by51bnJlZihOKSxkaXNhYmxlZDoxPT09by51bnJlZih3KS5sZW5ndGgscGxhY2Vob2xkZXI6IlNlbGVjdCBhbiBhY2NvdW50IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiLCJpdGVtcyIsImxvYWRpbmciLCJkaXNhYmxlZCJdKV07dChmKFUse21vZGVsVmFsdWU6by51bnJlZihiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+by5pc1JlZihiKT9iLnZhbHVlPWU6bnVsbCxpdGVtczpvLnVucmVmKFQpLGxvYWRpbmc6by51bnJlZihOKSxkaXNhYmxlZDoxPT09by51bnJlZih3KS5sZW5ndGgscGxhY2Vob2xkZXI6IlNlbGVjdCBhbiBhY2NvdW50IixjbGFzczoidy1mdWxsIn0sbnVsbCxsLGEpKX0pLF86MX0sbCxhKSk6dCgiXHgzYyEtLS0tXHgzZSIpLHQoZih5LHtsb2FkaW5nOm8udW5yZWYodiksZGlzYWJsZWQ6ImRlcGxveWluZyI9PT1vLnVucmVmKF8pPy5zdGF0dXMsb25DbGljazpkZXBsb3l9LHtkZWZhdWx0Om8ud2l0aEN0eCgoZSx0LGwsYSk9PntpZighdClyZXR1cm5bby5jcmVhdGVUZXh0Vk5vZGUoby50b0Rpc3BsYXlTdHJpbmcoImRlcGxveWVkIj09PW8udW5yZWYoXyk/LnN0YXR1cz8iUmVkZXBsb3kiOiJEZXBsb3kiKSwxKV07dChgJHtoKCJkZXBsb3llZCI9PT1vLnVucmVmKF8pPy5zdGF0dXM/IlJlZGVwbG95IjoiRGVwbG95Iil9YCl9KSxfOjF9LGwsYSkpLHQoIjwvZGl2PiIpfSksXzoxfSxsLGEpKSx0KCI8L2Rpdj4iKX0pLF86MX0scikpfX19KSxOPUMuc2V0dXA7Qy5zZXR1cD0oZSx0KT0+e2NvbnN0IGw9by51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGwubW9kdWxlc3x8KGwubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvc2VsZmhvc3QvYXBwL3BhZ2VzL3NldHRpbmdzL3NlbGYtaG9zdC52dWUiKSxOP04oZSx0KTp2b2lkIDB9O2V4cG9ydHtDIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zZWxmLWhvc3QtQnVmNHJscWQubWpzLm1hcAo=", "chunks/build/server.mjs": "Z2xvYmFsVGhpcy5faW1wb3J0TWV0YV89Z2xvYmFsVGhpcy5faW1wb3J0TWV0YV98fHt1cmw6ImZpbGU6Ly8vX2VudHJ5LmpzIixlbnY6e319O2ltcG9ydHthQyBhcyBlLGFEIGFzIGMsWiBhcyBkLGFFIGFzIGgsYUYgYXMgdixhRyBhcyBiLFkgYXMgeSxhSCBhcyBFLGFJIGFzIGssYUogYXMgXyxhSyBhcyBULGFMIGFzIE4sYU0gYXMgTyxhTiBhcyBSLGF6IGFzIE0sYU8gYXMgRCxhUCBhcyBMLGFyIGFzICQsYVEgYXMgRixhUiBhcyBWLGFTIGFzIHEsYyBhcyBVLGFUIGFzIFcsYVUgYXMgS31mcm9tIi4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e3IgYXMgWSxpIGFzIGVlLGQgYXMgdGUsdyBhcyBuZSxoIGFzIG9lLGMgYXMgcmUsYSBhcyBhZSx1IGFzIGllLHMgYXMgc2UsYiBhcyBsZSxlIGFzIGNlLG4gYXMgdWUscCBhcyBkZSxmIGFzIHBlLGcgYXMgZmUsaiBhcyBtZSxrIGFzIGhlLGwgYXMgZ2UsbSBhcyB2ZSxvIGFzIGJlLHEgYXMgeWUsdCBhcyB4ZSx2IGFzIFNlLHggYXMgRWUseSBhcyB3ZX1mcm9tIi4uL3JvdXRlcy9yZW5kZXJlci5tanMiO2ltcG9ydHtOIGFzIGtlLGcgYXMgQ2UsbiBhcyBfZSx4IGFzIFRlLGEgYXMgTmUsXyBhcyBBZSxJIGFzIE9lLEEgYXMgSWUsRSBhcyBSZSxjIGFzIFBlLEMgYXMgTWUsYiBhcyBEZSxxIGFzIEJlLHogYXMgTGUsVCBhcyBqZSwkIGFzICRlLFcgYXMgRmUsYTAgYXMgVmUsYTEgYXMgemUsbSBhcyBxZSxhMiBhcyBVZSxhMyBhcyBIZX1mcm9tIi4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7dmFyIEdlPXtleHBvcnRzOnt9fSxXZT17fTtjb25zdCBYZT1TeW1ib2woIiIpLEtlPVN5bWJvbCgiIiksSmU9U3ltYm9sKCIiKSxRZT1TeW1ib2woIiIpLFllPVN5bWJvbCgiIiksWmU9U3ltYm9sKCIiKSxldD1TeW1ib2woIiIpLG50PVN5bWJvbCgiIiksb3Q9U3ltYm9sKCIiKSxydD1TeW1ib2woIiIpLGl0PVN5bWJvbCgiIiksc3Q9U3ltYm9sKCIiKSxjdD1TeW1ib2woIiIpLHV0PVN5bWJvbCgiIiksZHQ9U3ltYm9sKCIiKSxwdD1TeW1ib2woIiIpLGZ0PVN5bWJvbCgiIiksbXQ9U3ltYm9sKCIiKSxndD1TeW1ib2woIiIpLHZ0PVN5bWJvbCgiIiksYnQ9U3ltYm9sKCIiKSx5dD1TeW1ib2woIiIpLHh0PVN5bWJvbCgiIiksU3Q9U3ltYm9sKCIiKSxFdD1TeW1ib2woIiIpLHd0PVN5bWJvbCgiIiksa3Q9U3ltYm9sKCIiKSxDdD1TeW1ib2woIiIpLF90PVN5bWJvbCgiIiksVHQ9U3ltYm9sKCIiKSxOdD1TeW1ib2woIiIpLEF0PVN5bWJvbCgiIiksT3Q9U3ltYm9sKCIiKSxJdD1TeW1ib2woIiIpLFJ0PVN5bWJvbCgiIiksUHQ9U3ltYm9sKCIiKSxNdD1TeW1ib2woIiIpLER0PVN5bWJvbCgiIiksQnQ9U3ltYm9sKCIiKSxMdD17W1hlXToiRnJhZ21lbnQiLFtLZV06IlRlbGVwb3J0IixbSmVdOiJTdXNwZW5zZSIsW1FlXToiS2VlcEFsaXZlIixbWWVdOiJCYXNlVHJhbnNpdGlvbiIsW1plXToib3BlbkJsb2NrIixbZXRdOiJjcmVhdGVCbG9jayIsW250XToiY3JlYXRlRWxlbWVudEJsb2NrIixbb3RdOiJjcmVhdGVWTm9kZSIsW3J0XToiY3JlYXRlRWxlbWVudFZOb2RlIixbaXRdOiJjcmVhdGVDb21tZW50Vk5vZGUiLFtzdF06ImNyZWF0ZVRleHRWTm9kZSIsW2N0XToiY3JlYXRlU3RhdGljVk5vZGUiLFt1dF06InJlc29sdmVDb21wb25lbnQiLFtkdF06InJlc29sdmVEeW5hbWljQ29tcG9uZW50IixbcHRdOiJyZXNvbHZlRGlyZWN0aXZlIixbZnRdOiJyZXNvbHZlRmlsdGVyIixbbXRdOiJ3aXRoRGlyZWN0aXZlcyIsW2d0XToicmVuZGVyTGlzdCIsW3Z0XToicmVuZGVyU2xvdCIsW2J0XToiY3JlYXRlU2xvdHMiLFt5dF06InRvRGlzcGxheVN0cmluZyIsW3h0XToibWVyZ2VQcm9wcyIsW1N0XToibm9ybWFsaXplQ2xhc3MiLFtFdF06Im5vcm1hbGl6ZVN0eWxlIixbd3RdOiJub3JtYWxpemVQcm9wcyIsW2t0XToiZ3VhcmRSZWFjdGl2ZVByb3BzIixbQ3RdOiJ0b0hhbmRsZXJzIixbX3RdOiJjYW1lbGl6ZSIsW1R0XToiY2FwaXRhbGl6ZSIsW050XToidG9IYW5kbGVyS2V5IixbQXRdOiJzZXRCbG9ja1RyYWNraW5nIixbT3RdOiJwdXNoU2NvcGVJZCIsW0l0XToicG9wU2NvcGVJZCIsW1J0XToid2l0aEN0eCIsW1B0XToidW5yZWYiLFtNdF06ImlzUmVmIixbRHRdOiJ3aXRoTWVtbyIsW0J0XToiaXNNZW1vU2FtZSJ9O2Z1bmN0aW9uIHJlZ2lzdGVyUnVudGltZUhlbHBlcnMoZSl7T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKS5mb3JFYWNoKGM9PntMdFtjXT1lW2NdfSl9Y29uc3QganQ9e3N0YXJ0OntsaW5lOjEsY29sdW1uOjEsb2Zmc2V0OjB9LGVuZDp7bGluZToxLGNvbHVtbjoxLG9mZnNldDowfSxzb3VyY2U6IiJ9O2Z1bmN0aW9uIGNyZWF0ZVJvb3QoZSxjPSIiKXtyZXR1cm57dHlwZTowLHNvdXJjZTpjLGNoaWxkcmVuOmUsaGVscGVyczpuZXcgU2V0LGNvbXBvbmVudHM6W10sZGlyZWN0aXZlczpbXSxob2lzdHM6W10saW1wb3J0czpbXSxjYWNoZWQ6W10sdGVtcHM6MCxjb2RlZ2VuTm9kZTp2b2lkIDAsbG9jOmp0fX1mdW5jdGlvbiBjcmVhdGVWTm9kZUNhbGwoZSxjLGQsaCx2LGIseSxFPSExLGs9ITEsXz0hMSxUPWp0KXtyZXR1cm4gZSYmKEU/KGUuaGVscGVyKFplKSxlLmhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGUuaW5TU1IsXykpKTplLmhlbHBlcihnZXRWTm9kZUhlbHBlcihlLmluU1NSLF8pKSx5JiZlLmhlbHBlcihtdCkpLHt0eXBlOjEzLHRhZzpjLHByb3BzOmQsY2hpbGRyZW46aCxwYXRjaEZsYWc6dixkeW5hbWljUHJvcHM6YixkaXJlY3RpdmVzOnksaXNCbG9jazpFLGRpc2FibGVUcmFja2luZzprLGlzQ29tcG9uZW50Ol8sbG9jOlR9fWZ1bmN0aW9uIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihlLGM9anQpe3JldHVybnt0eXBlOjE3LGxvYzpjLGVsZW1lbnRzOmV9fWZ1bmN0aW9uIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZSxjPWp0KXtyZXR1cm57dHlwZToxNSxsb2M6Yyxwcm9wZXJ0aWVzOmV9fWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFByb3BlcnR5KGUsYyl7cmV0dXJue3R5cGU6MTYsbG9jOmp0LGtleTpfZShlKT9jcmVhdGVTaW1wbGVFeHByZXNzaW9uKGUsITApOmUsdmFsdWU6Y319ZnVuY3Rpb24gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihlLGM9ITEsZD1qdCxoPTApe3JldHVybnt0eXBlOjQsbG9jOmQsY29udGVudDplLGlzU3RhdGljOmMsY29uc3RUeXBlOmM/MzpofX1mdW5jdGlvbiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oZSxjPWp0KXtyZXR1cm57dHlwZTo4LGxvYzpjLGNoaWxkcmVuOmV9fWZ1bmN0aW9uIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGUsYz1bXSxkPWp0KXtyZXR1cm57dHlwZToxNCxsb2M6ZCxjYWxsZWU6ZSxhcmd1bWVudHM6Y319ZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGUsYz12b2lkIDAsZD0hMSxoPSExLHY9anQpe3JldHVybnt0eXBlOjE4LHBhcmFtczplLHJldHVybnM6YyxuZXdsaW5lOmQsaXNTbG90OmgsbG9jOnZ9fWZ1bmN0aW9uIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihlLGMsZCxoPSEwKXtyZXR1cm57dHlwZToxOSx0ZXN0OmUsY29uc2VxdWVudDpjLGFsdGVybmF0ZTpkLG5ld2xpbmU6aCxsb2M6anR9fWZ1bmN0aW9uIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbihlLGMsZD0hMSxoPSExKXtyZXR1cm57dHlwZToyMCxpbmRleDplLHZhbHVlOmMsbmVlZFBhdXNlVHJhY2tpbmc6ZCxpblZPbmNlOmgsbmVlZEFycmF5U3ByZWFkOiExLGxvYzpqdH19ZnVuY3Rpb24gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoZSl7cmV0dXJue3R5cGU6MjEsYm9keTplLGxvYzpqdH19ZnVuY3Rpb24gZ2V0Vk5vZGVIZWxwZXIoZSxjKXtyZXR1cm4gZXx8Yz9vdDpydH1mdW5jdGlvbiBnZXRWTm9kZUJsb2NrSGVscGVyKGUsYyl7cmV0dXJuIGV8fGM/ZXQ6bnR9ZnVuY3Rpb24gY29udmVydFRvQmxvY2soZSx7aGVscGVyOmMscmVtb3ZlSGVscGVyOmQsaW5TU1I6aH0pe2UuaXNCbG9ja3x8KGUuaXNCbG9jaz0hMCxkKGdldFZOb2RlSGVscGVyKGgsZS5pc0NvbXBvbmVudCkpLGMoWmUpLGMoZ2V0Vk5vZGVCbG9ja0hlbHBlcihoLGUuaXNDb21wb25lbnQpKSl9Y29uc3QgJHQ9bmV3IFVpbnQ4QXJyYXkoWzEyMywxMjNdKSxGdD1uZXcgVWludDhBcnJheShbMTI1LDEyNV0pO2Z1bmN0aW9uIGlzVGFnU3RhcnRDaGFyKGUpe3JldHVybiBlPj05NyYmZTw9MTIyfHxlPj02NSYmZTw9OTB9ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUpe3JldHVybiAzMj09PWV8fDEwPT09ZXx8OT09PWV8fDEyPT09ZXx8MTM9PT1lfWZ1bmN0aW9uIGlzRW5kT2ZUYWdTZWN0aW9uKGUpe3JldHVybiA0Nz09PWV8fDYyPT09ZXx8aXNXaGl0ZXNwYWNlKGUpfWZ1bmN0aW9uIHRvQ2hhckNvZGVzKGUpe2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKWNbZF09ZS5jaGFyQ29kZUF0KGQpO3JldHVybiBjfWNvbnN0IFZ0PXtDZGF0YTpuZXcgVWludDhBcnJheShbNjcsNjgsNjUsODQsNjUsOTFdKSxDZGF0YUVuZDpuZXcgVWludDhBcnJheShbOTMsOTMsNjJdKSxDb21tZW50RW5kOm5ldyBVaW50OEFycmF5KFs0NSw0NSw2Ml0pLFNjcmlwdEVuZDpuZXcgVWludDhBcnJheShbNjAsNDcsMTE1LDk5LDExNCwxMDUsMTEyLDExNl0pLFN0eWxlRW5kOm5ldyBVaW50OEFycmF5KFs2MCw0NywxMTUsMTE2LDEyMSwxMDgsMTAxXSksVGl0bGVFbmQ6bmV3IFVpbnQ4QXJyYXkoWzYwLDQ3LDExNiwxMDUsMTE2LDEwOCwxMDFdKSxUZXh0YXJlYUVuZDpuZXcgVWludDhBcnJheShbNjAsNDcsMTE2LDEwMSwxMjAsMTE2LDk3LDExNCwxMDEsOTddKX07Y29uc3QgenQ9e0NPTVBJTEVSX0lTX09OX0VMRU1FTlQ6e21lc3NhZ2U6J1BsYXRmb3JtLW5hdGl2ZSBlbGVtZW50cyB3aXRoICJpcyIgcHJvcCB3aWxsIG5vIGxvbmdlciBiZSB0cmVhdGVkIGFzIGNvbXBvbmVudHMgaW4gVnVlIDMgdW5sZXNzIHRoZSAiaXMiIHZhbHVlIGlzIGV4cGxpY2l0bHkgcHJlZml4ZWQgd2l0aCAidnVlOiIuJyxsaW5rOiJodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9jdXN0b20tZWxlbWVudHMtaW50ZXJvcC5odG1sIn0sQ09NUElMRVJfVl9CSU5EX1NZTkM6e21lc3NhZ2U6ZT0+YC5zeW5jIG1vZGlmaWVyIGZvciB2LWJpbmQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHYtbW9kZWwgd2l0aCBhcmd1bWVudCBpbnN0ZWFkLiBcYHYtYmluZDoke2V9LnN5bmNcYCBzaG91bGQgYmUgY2hhbmdlZCB0byBcYHYtbW9kZWw6JHtlfVxgLmAsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1tb2RlbC5odG1sIn0sQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUjp7bWVzc2FnZTondi1iaW5kPSJvYmoiIHVzYWdlIGlzIG5vdyBvcmRlciBzZW5zaXRpdmUgYW5kIGJlaGF2ZXMgbGlrZSBKYXZhU2NyaXB0IG9iamVjdCBzcHJlYWQ6IGl0IHdpbGwgbm93IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBub24tbWVyZ2VhYmxlIGF0dHJpYnV0ZSB0aGF0IGFwcGVhcnMgYmVmb3JlIHYtYmluZCBpbiB0aGUgY2FzZSBvZiBjb25mbGljdC4gVG8gcmV0YWluIDIueCBiZWhhdmlvciwgbW92ZSB2LWJpbmQgdG8gbWFrZSBpdCB0aGUgZmlyc3QgYXR0cmlidXRlLiBZb3UgY2FuIGFsc28gc3VwcHJlc3MgdGhpcyB3YXJuaW5nIGlmIHRoZSB1c2FnZSBpcyBpbnRlbmRlZC4nLGxpbms6Imh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtYmluZC5odG1sIn0sQ09NUElMRVJfVl9PTl9OQVRJVkU6e21lc3NhZ2U6Ii5uYXRpdmUgbW9kaWZpZXIgZm9yIHYtb24gaGFzIGJlZW4gcmVtb3ZlZCBhcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LiIsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1vbi1uYXRpdmUtbW9kaWZpZXItcmVtb3ZlZC5odG1sIn0sQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFOnttZXNzYWdlOiJ2LWlmIC8gdi1mb3IgcHJlY2VkZW5jZSB3aGVuIHVzZWQgb24gdGhlIHNhbWUgZWxlbWVudCBoYXMgY2hhbmdlZCBpbiBWdWUgMzogdi1pZiBub3cgdGFrZXMgaGlnaGVyIHByZWNlZGVuY2UgYW5kIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYWNjZXNzIHRvIHYtZm9yIHNjb3BlIHZhcmlhYmxlcy4gSXQgaXMgYmVzdCB0byBhdm9pZCB0aGUgYW1iaWd1aXR5IHdpdGggPHRlbXBsYXRlPiB0YWdzIG9yIHVzZSBhIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgZmlsdGVycyB2LWZvciBkYXRhIHNvdXJjZS4iLGxpbms6Imh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtaWYtdi1mb3IuaHRtbCJ9LENPTVBJTEVSX05BVElWRV9URU1QTEFURTp7bWVzc2FnZToiPHRlbXBsYXRlPiB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0aXZlcyB3aWxsIHJlbmRlciBhcyBhIG5hdGl2ZSB0ZW1wbGF0ZSBlbGVtZW50IGluc3RlYWQgb2YgaXRzIGlubmVyIGNvbnRlbnQgaW4gVnVlIDMuIn0sQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFOnttZXNzYWdlOiciaW5saW5lLXRlbXBsYXRlIiBoYXMgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLicsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvaW5saW5lLXRlbXBsYXRlLWF0dHJpYnV0ZS5odG1sIn0sQ09NUElMRVJfRklMVEVSUzp7bWVzc2FnZTonZmlsdGVycyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBWdWUgMy4gVGhlICJ8IiBzeW1ib2wgd2lsbCBiZSB0cmVhdGVkIGFzIG5hdGl2ZSBKYXZhU2NyaXB0IGJpdHdpc2UgT1Igb3BlcmF0b3IuIFVzZSBtZXRob2QgY2FsbHMgb3IgY29tcHV0ZWQgcHJvcGVydGllcyBpbnN0ZWFkLicsbGluazoiaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvZmlsdGVycy5odG1sIn19O2Z1bmN0aW9uIGdldENvbXBhdFZhbHVlKGUse2NvbXBhdENvbmZpZzpjfSl7Y29uc3QgZD1jJiZjW2VdO3JldHVybiJNT0RFIj09PWU/ZHx8MzpkfWZ1bmN0aW9uIGlzQ29tcGF0RW5hYmxlZChlLGMpe2NvbnN0IGQ9Z2V0Q29tcGF0VmFsdWUoIk1PREUiLGMpLGg9Z2V0Q29tcGF0VmFsdWUoZSxjKTtyZXR1cm4gMz09PWQ/ITA9PT1oOiExIT09aH1mdW5jdGlvbiBjaGVja0NvbXBhdEVuYWJsZWQoZSxjLGQsLi4uaCl7cmV0dXJuIGlzQ29tcGF0RW5hYmxlZChlLGMpfWZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGUpe3Rocm93IGV9ZnVuY3Rpb24gZGVmYXVsdE9uV2FybihlKXt9ZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJFcnJvcihlLGMsZCxoKXtjb25zdCB2PW5ldyBTeW50YXhFcnJvcihTdHJpbmcoYGh0dHBzOi8vdnVlanMub3JnL2Vycm9yLXJlZmVyZW5jZS8jY29tcGlsZXItJHtlfWApKTtyZXR1cm4gdi5jb2RlPWUsdi5sb2M9Yyx2fWNvbnN0IHF0PXswOiJJbGxlZ2FsIGNvbW1lbnQuIiwxOiJDREFUQSBzZWN0aW9uIGlzIGFsbG93ZWQgb25seSBpbiBYTUwgY29udGV4dC4iLDI6IkR1cGxpY2F0ZSBhdHRyaWJ1dGUuIiwzOiJFbmQgdGFnIGNhbm5vdCBoYXZlIGF0dHJpYnV0ZXMuIiw0OiJJbGxlZ2FsICcvJyBpbiB0YWdzLiIsNToiVW5leHBlY3RlZCBFT0YgaW4gdGFnLiIsNjoiVW5leHBlY3RlZCBFT0YgaW4gQ0RBVEEgc2VjdGlvbi4iLDc6IlVuZXhwZWN0ZWQgRU9GIGluIGNvbW1lbnQuIiw4OiJVbmV4cGVjdGVkIEVPRiBpbiBzY3JpcHQuIiw5OiJVbmV4cGVjdGVkIEVPRiBpbiB0YWcuIiwxMDoiSW5jb3JyZWN0bHkgY2xvc2VkIGNvbW1lbnQuIiwxMToiSW5jb3JyZWN0bHkgb3BlbmVkIGNvbW1lbnQuIiwxMjoiSWxsZWdhbCB0YWcgbmFtZS4gVXNlICcmbHQ7JyB0byBwcmludCAnPCcuIiwxMzoiQXR0cmlidXRlIHZhbHVlIHdhcyBleHBlY3RlZC4iLDE0OiJFbmQgdGFnIG5hbWUgd2FzIGV4cGVjdGVkLiIsMTU6IldoaXRlc3BhY2Ugd2FzIGV4cGVjdGVkLiIsMTY6IlVuZXhwZWN0ZWQgJ1x4M2MhLS0nIGluIGNvbW1lbnQuIiwxNzoiQXR0cmlidXRlIG5hbWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoJyksIGFuZCBVKzAwM0MgKDwpLiIsMTg6IlVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSBjYW5ub3QgY29udGFpbiBVKzAwMjIgKFwiKSwgVSswMDI3ICgnKSwgVSswMDNDICg8KSwgVSswMDNEICg9KSwgYW5kIFUrMDA2MCAoYCkuIiwxOToiQXR0cmlidXRlIG5hbWUgY2Fubm90IHN0YXJ0IHdpdGggJz0nLiIsMjE6Iic8PycgaXMgYWxsb3dlZCBvbmx5IGluIFhNTCBjb250ZXh0LiIsMjA6IlVuZXhwZWN0ZWQgbnVsbCBjaGFyYWN0ZXIuIiwyMjoiSWxsZWdhbCAnLycgaW4gdGFncy4iLDIzOiJJbnZhbGlkIGVuZCB0YWcuIiwyNDoiRWxlbWVudCBpcyBtaXNzaW5nIGVuZCB0YWcuIiwyNToiSW50ZXJwb2xhdGlvbiBlbmQgc2lnbiB3YXMgbm90IGZvdW5kLiIsMjc6IkVuZCBicmFja2V0IGZvciBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCB3YXMgbm90IGZvdW5kLiBOb3RlIHRoYXQgZHluYW1pYyBkaXJlY3RpdmUgYXJndW1lbnQgY2Fubm90IGNvbnRhaW4gc3BhY2VzLiIsMjY6IkxlZ2FsIGRpcmVjdGl2ZSBuYW1lIHdhcyBleHBlY3RlZC4iLDI4OiJ2LWlmL3YtZWxzZS1pZiBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiwyOToidi1pZi9lbHNlIGJyYW5jaGVzIG11c3QgdXNlIHVuaXF1ZSBrZXlzLiIsMzA6InYtZWxzZS92LWVsc2UtaWYgaGFzIG5vIGFkamFjZW50IHYtaWYgb3Igdi1lbHNlLWlmLiIsMzE6InYtZm9yIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi4iLDMyOiJ2LWZvciBoYXMgaW52YWxpZCBleHByZXNzaW9uLiIsMzM6Ijx0ZW1wbGF0ZSB2LWZvcj4ga2V5IHNob3VsZCBiZSBwbGFjZWQgb24gdGhlIDx0ZW1wbGF0ZT4gdGFnLiIsMzQ6InYtYmluZCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiw1Mzoidi1iaW5kIHdpdGggc2FtZS1uYW1lIHNob3J0aGFuZCBvbmx5IGFsbG93cyBzdGF0aWMgYXJndW1lbnQuIiwzNToidi1vbiBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiwzNjoiVW5leHBlY3RlZCBjdXN0b20gZGlyZWN0aXZlIG9uIDxzbG90PiBvdXRsZXQuIiwzNzoiTWl4ZWQgdi1zbG90IHVzYWdlIG9uIGJvdGggdGhlIGNvbXBvbmVudCBhbmQgbmVzdGVkIDx0ZW1wbGF0ZT4uIFdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG5hbWVkIHNsb3RzLCBhbGwgc2xvdHMgc2hvdWxkIHVzZSA8dGVtcGxhdGU+IHN5bnRheCB0byBhdm9pZCBzY29wZSBhbWJpZ3VpdHkuIiwzODoiRHVwbGljYXRlIHNsb3QgbmFtZXMgZm91bmQuICIsMzk6IkV4dHJhbmVvdXMgY2hpbGRyZW4gZm91bmQgd2hlbiBjb21wb25lbnQgYWxyZWFkeSBoYXMgZXhwbGljaXRseSBuYW1lZCBkZWZhdWx0IHNsb3QuIFRoZXNlIGNoaWxkcmVuIHdpbGwgYmUgaWdub3JlZC4iLDQwOiJ2LXNsb3QgY2FuIG9ubHkgYmUgdXNlZCBvbiBjb21wb25lbnRzIG9yIDx0ZW1wbGF0ZT4gdGFncy4iLDQxOiJ2LW1vZGVsIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi4iLDQyOiJ2LW1vZGVsIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IG1lbWJlciBleHByZXNzaW9uLiIsNDM6InYtbW9kZWwgY2Fubm90IGJlIHVzZWQgb24gdi1mb3Igb3Igdi1zbG90IHNjb3BlIHZhcmlhYmxlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB3cml0YWJsZS4iLDQ0OiJ2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIGEgcHJvcCwgYmVjYXVzZSBsb2NhbCBwcm9wIGJpbmRpbmdzIGFyZSBub3Qgd3JpdGFibGUuXG5Vc2UgYSB2LWJpbmQgYmluZGluZyBjb21iaW5lZCB3aXRoIGEgdi1vbiBsaXN0ZW5lciB0aGF0IGVtaXRzIHVwZGF0ZTp4IGV2ZW50IGluc3RlYWQuIiw0NToidi1tb2RlbCBjYW5ub3QgYmUgdXNlZCBvbiBhIGNvbnN0IGJpbmRpbmcgYmVjYXVzZSBpdCBpcyBub3Qgd3JpdGFibGUuIiw0NjoiRXJyb3IgcGFyc2luZyBKYXZhU2NyaXB0IGV4cHJlc3Npb246ICIsNDc6IjxLZWVwQWxpdmU+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgY29tcG9uZW50LiIsNTI6IkB2bm9kZS0qIGhvb2tzIGluIHRlbXBsYXRlcyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gVXNlIHRoZSB2dWU6IHByZWZpeCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgQHZub2RlLW1vdW50ZWQgc2hvdWxkIGJlIGNoYW5nZWQgdG8gQHZ1ZTptb3VudGVkLiBAdm5vZGUtKiBob29rcyBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgaW4gMy40LiIsNDg6JyJwcmVmaXhJZGVudGlmaWVycyIgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBjb21waWxlci4nLDQ5OiJFUyBtb2R1bGUgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgY29tcGlsZXIuIiw1MDonImNhY2hlSGFuZGxlcnMiIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSAicHJlZml4SWRlbnRpZmllcnMiIG9wdGlvbiBpcyBlbmFibGVkLicsNTE6JyJzY29wZUlkIiBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgaW4gbW9kdWxlIG1vZGUuJyw1NDoiIn07ZnVuY3Rpb24gd2Fsa0Jsb2NrRGVjbGFyYXRpb25zKGUsYyl7Y29uc3QgZD0iU3dpdGNoQ2FzZSI9PT1lLnR5cGU/ZS5jb25zZXF1ZW50OmUuYm9keTtmb3IoY29uc3QgZSBvZiBkKWlmKCJWYXJpYWJsZURlY2xhcmF0aW9uIj09PWUudHlwZSl7aWYoZS5kZWNsYXJlKWNvbnRpbnVlO2Zvcihjb25zdCBkIG9mIGUuZGVjbGFyYXRpb25zKWZvcihjb25zdCBlIG9mIGV4dHJhY3RJZGVudGlmaWVycyhkLmlkKSljKGUpfWVsc2UgaWYoIkZ1bmN0aW9uRGVjbGFyYXRpb24iPT09ZS50eXBlfHwiQ2xhc3NEZWNsYXJhdGlvbiI9PT1lLnR5cGUpe2lmKGUuZGVjbGFyZXx8IWUuaWQpY29udGludWU7YyhlLmlkKX1lbHNlIGlzRm9yU3RhdGVtZW50KGUpP3dhbGtGb3JTdGF0ZW1lbnQoZSwhMCxjKToiU3dpdGNoU3RhdGVtZW50Ij09PWUudHlwZSYmd2Fsa1N3aXRjaFN0YXRlbWVudChlLCEwLGMpfWZ1bmN0aW9uIGlzRm9yU3RhdGVtZW50KGUpe3JldHVybiJGb3JPZlN0YXRlbWVudCI9PT1lLnR5cGV8fCJGb3JJblN0YXRlbWVudCI9PT1lLnR5cGV8fCJGb3JTdGF0ZW1lbnQiPT09ZS50eXBlfWZ1bmN0aW9uIHdhbGtGb3JTdGF0ZW1lbnQoZSxjLGQpe2NvbnN0IGg9IkZvclN0YXRlbWVudCI9PT1lLnR5cGU/ZS5pbml0OmUubGVmdDtpZihoJiYiVmFyaWFibGVEZWNsYXJhdGlvbiI9PT1oLnR5cGUmJigidmFyIj09PWgua2luZD9jOiFjKSlmb3IoY29uc3QgZSBvZiBoLmRlY2xhcmF0aW9ucylmb3IoY29uc3QgYyBvZiBleHRyYWN0SWRlbnRpZmllcnMoZS5pZCkpZChjKX1mdW5jdGlvbiB3YWxrU3dpdGNoU3RhdGVtZW50KGUsYyxkKXtmb3IoY29uc3QgaCBvZiBlLmNhc2VzKXtmb3IoY29uc3QgZSBvZiBoLmNvbnNlcXVlbnQpaWYoIlZhcmlhYmxlRGVjbGFyYXRpb24iPT09ZS50eXBlJiYoInZhciI9PT1lLmtpbmQ/YzohYykpZm9yKGNvbnN0IGMgb2YgZS5kZWNsYXJhdGlvbnMpZm9yKGNvbnN0IGUgb2YgZXh0cmFjdElkZW50aWZpZXJzKGMuaWQpKWQoZSk7d2Fsa0Jsb2NrRGVjbGFyYXRpb25zKGgsZCl9fWZ1bmN0aW9uIGV4dHJhY3RJZGVudGlmaWVycyhlLGM9W10pe3N3aXRjaChlLnR5cGUpe2Nhc2UiSWRlbnRpZmllciI6Yy5wdXNoKGUpO2JyZWFrO2Nhc2UiTWVtYmVyRXhwcmVzc2lvbiI6bGV0IGQ9ZTtmb3IoOyJNZW1iZXJFeHByZXNzaW9uIj09PWQudHlwZTspZD1kLm9iamVjdDtjLnB1c2goZCk7YnJlYWs7Y2FzZSJPYmplY3RQYXR0ZXJuIjpmb3IoY29uc3QgZCBvZiBlLnByb3BlcnRpZXMpIlJlc3RFbGVtZW50Ij09PWQudHlwZT9leHRyYWN0SWRlbnRpZmllcnMoZC5hcmd1bWVudCxjKTpleHRyYWN0SWRlbnRpZmllcnMoZC52YWx1ZSxjKTticmVhaztjYXNlIkFycmF5UGF0dGVybiI6ZS5lbGVtZW50cy5mb3JFYWNoKGU9PntlJiZleHRyYWN0SWRlbnRpZmllcnMoZSxjKX0pO2JyZWFrO2Nhc2UiUmVzdEVsZW1lbnQiOmV4dHJhY3RJZGVudGlmaWVycyhlLmFyZ3VtZW50LGMpO2JyZWFrO2Nhc2UiQXNzaWdubWVudFBhdHRlcm4iOmV4dHJhY3RJZGVudGlmaWVycyhlLmxlZnQsYyl9cmV0dXJuIGN9Y29uc3QgaXNTdGF0aWNQcm9wZXJ0eT1lPT5lJiYoIk9iamVjdFByb3BlcnR5Ij09PWUudHlwZXx8Ik9iamVjdE1ldGhvZCI9PT1lLnR5cGUpJiYhZS5jb21wdXRlZCxVdD1bIlRTQXNFeHByZXNzaW9uIiwiVFNUeXBlQXNzZXJ0aW9uIiwiVFNOb25OdWxsRXhwcmVzc2lvbiIsIlRTSW5zdGFudGlhdGlvbkV4cHJlc3Npb24iLCJUU1NhdGlzZmllc0V4cHJlc3Npb24iXTtjb25zdCBpc1N0YXRpY0V4cD1lPT40PT09ZS50eXBlJiZlLmlzU3RhdGljO2Z1bmN0aW9uIGlzQ29yZUNvbXBvbmVudChlKXtzd2l0Y2goZSl7Y2FzZSJUZWxlcG9ydCI6Y2FzZSJ0ZWxlcG9ydCI6cmV0dXJuIEtlO2Nhc2UiU3VzcGVuc2UiOmNhc2Uic3VzcGVuc2UiOnJldHVybiBKZTtjYXNlIktlZXBBbGl2ZSI6Y2FzZSJrZWVwLWFsaXZlIjpyZXR1cm4gUWU7Y2FzZSJCYXNlVHJhbnNpdGlvbiI6Y2FzZSJiYXNlLXRyYW5zaXRpb24iOnJldHVybiBZZX19Y29uc3QgSHQ9L14kfF5cZHxbXlwkXHdceEEwLVx1RkZGRl0vLGlzU2ltcGxlSWRlbnRpZmllcj1lPT4hSHQudGVzdChlKSxHdD0vW0EtWmEtel8kXHhBMC1cdUZGRkZdLyxXdD0vW1wuXD9cdyRceEEwLVx1RkZGRl0vLFh0PS9ccytbLltdXHMqfFxzKlsuW11ccysvZyxnZXRFeHBTb3VyY2U9ZT0+ND09PWUudHlwZT9lLmNvbnRlbnQ6ZS5sb2Muc291cmNlLGlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXI9ZT0+e2NvbnN0IGM9Z2V0RXhwU291cmNlKGUpLnRyaW0oKS5yZXBsYWNlKFh0LGU9PmUudHJpbSgpKTtsZXQgZD0wLGg9W10sdj0wLGI9MCx5PW51bGw7Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2NvbnN0IEU9Yy5jaGFyQXQoZSk7c3dpdGNoKGQpe2Nhc2UgMDppZigiWyI9PT1FKWgucHVzaChkKSxkPTEsdisrO2Vsc2UgaWYoIigiPT09RSloLnB1c2goZCksZD0yLGIrKztlbHNlIGlmKCEoMD09PWU/R3Q6V3QpLnRlc3QoRSkpcmV0dXJuITE7YnJlYWs7Y2FzZSAxOiInIj09PUV8fCciJz09PUV8fCJgIj09PUU/KGgucHVzaChkKSxkPTMseT1FKToiWyI9PT1FP3YrKzoiXSI9PT1FJiYoLS12fHwoZD1oLnBvcCgpKSk7YnJlYWs7Y2FzZSAyOmlmKCInIj09PUV8fCciJz09PUV8fCJgIj09PUUpaC5wdXNoKGQpLGQ9Myx5PUU7ZWxzZSBpZigiKCI9PT1FKWIrKztlbHNlIGlmKCIpIj09PUUpe2lmKGU9PT1jLmxlbmd0aC0xKXJldHVybiExOy0tYnx8KGQ9aC5wb3AoKSl9YnJlYWs7Y2FzZSAzOkU9PT15JiYoZD1oLnBvcCgpLHk9bnVsbCl9fXJldHVybiF2JiYhYn0sS3Q9a2UsSnQ9aXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlcixRdD0vXlxzKig/OmFzeW5jXHMqKT8oPzpcKFteKV0qP1wpfFtcdyRfXSspXHMqKD86OltePV0rKT89PnxeXHMqKD86YXN5bmNccyspP2Z1bmN0aW9uKD86XHMrW1x3JF0rKT9ccypcKC8saXNGbkV4cHJlc3Npb25Ccm93c2VyPWU9PlF0LnRlc3QoZ2V0RXhwU291cmNlKGUpKSxZdD1rZSxadD1pc0ZuRXhwcmVzc2lvbkJyb3dzZXI7ZnVuY3Rpb24gYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGUsYyxkPWMubGVuZ3RoKXtsZXQgaD0wLHY9LTE7Zm9yKGxldCBlPTA7ZTxkO2UrKykxMD09PWMuY2hhckNvZGVBdChlKSYmKGgrKyx2PWUpO3JldHVybiBlLm9mZnNldCs9ZCxlLmxpbmUrPWgsZS5jb2x1bW49LTE9PT12P2UuY29sdW1uK2Q6ZC12LGV9ZnVuY3Rpb24gZmluZERpcihlLGMsZD0hMSl7Zm9yKGxldCBoPTA7aDxlLnByb3BzLmxlbmd0aDtoKyspe2NvbnN0IHY9ZS5wcm9wc1toXTtpZig3PT09di50eXBlJiYoZHx8di5leHApJiYoX2UoYyk/di5uYW1lPT09YzpjLnRlc3Qodi5uYW1lKSkpcmV0dXJuIHZ9fWZ1bmN0aW9uIGZpbmRQcm9wKGUsYyxkPSExLGg9ITEpe2ZvcihsZXQgdj0wO3Y8ZS5wcm9wcy5sZW5ndGg7disrKXtjb25zdCBiPWUucHJvcHNbdl07aWYoNj09PWIudHlwZSl7aWYoZCljb250aW51ZTtpZihiLm5hbWU9PT1jJiYoYi52YWx1ZXx8aCkpcmV0dXJuIGJ9ZWxzZSBpZigiYmluZCI9PT1iLm5hbWUmJihiLmV4cHx8aCkmJmlzU3RhdGljQXJnT2YoYi5hcmcsYykpcmV0dXJuIGJ9fWZ1bmN0aW9uIGlzU3RhdGljQXJnT2YoZSxjKXtyZXR1cm4hKCFlfHwhaXNTdGF0aWNFeHAoZSl8fGUuY29udGVudCE9PWMpfWZ1bmN0aW9uIGhhc0R5bmFtaWNLZXlWQmluZChlKXtyZXR1cm4gZS5wcm9wcy5zb21lKGU9PiEoNyE9PWUudHlwZXx8ImJpbmQiIT09ZS5uYW1lfHxlLmFyZyYmND09PWUuYXJnLnR5cGUmJmUuYXJnLmlzU3RhdGljKSl9ZnVuY3Rpb24gaXNUZXh0JDEoZSl7cmV0dXJuIDU9PT1lLnR5cGV8fDI9PT1lLnR5cGV9ZnVuY3Rpb24gaXNWUHJlKGUpe3JldHVybiA3PT09ZS50eXBlJiYicHJlIj09PWUubmFtZX1mdW5jdGlvbiBpc1ZTbG90KGUpe3JldHVybiA3PT09ZS50eXBlJiYic2xvdCI9PT1lLm5hbWV9ZnVuY3Rpb24gaXNUZW1wbGF0ZU5vZGUoZSl7cmV0dXJuIDE9PT1lLnR5cGUmJjM9PT1lLnRhZ1R5cGV9ZnVuY3Rpb24gaXNTbG90T3V0bGV0KGUpe3JldHVybiAxPT09ZS50eXBlJiYyPT09ZS50YWdUeXBlfWNvbnN0IGVuPW5ldyBTZXQoW3d0LGt0XSk7ZnVuY3Rpb24gZ2V0VW5ub3JtYWxpemVkUHJvcHMoZSxjPVtdKXtpZihlJiYhX2UoZSkmJjE0PT09ZS50eXBlKXtjb25zdCBkPWUuY2FsbGVlO2lmKCFfZShkKSYmZW4uaGFzKGQpKXJldHVybiBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhlLmFyZ3VtZW50c1swXSxjLmNvbmNhdChlKSl9cmV0dXJuW2UsY119ZnVuY3Rpb24gaW5qZWN0UHJvcChlLGMsZCl7bGV0IGgsdixiPTEzPT09ZS50eXBlP2UucHJvcHM6ZS5hcmd1bWVudHNbMl0seT1bXTtpZihiJiYhX2UoYikmJjE0PT09Yi50eXBlKXtjb25zdCBlPWdldFVubm9ybWFsaXplZFByb3BzKGIpO2I9ZVswXSx5PWVbMV0sdj15W3kubGVuZ3RoLTFdfWlmKG51bGw9PWJ8fF9lKGIpKWg9Y3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbY10pO2Vsc2UgaWYoMTQ9PT1iLnR5cGUpe2NvbnN0IGU9Yi5hcmd1bWVudHNbMF07X2UoZSl8fDE1IT09ZS50eXBlP2IuY2FsbGVlPT09Q3Q/aD1jcmVhdGVDYWxsRXhwcmVzc2lvbihkLmhlbHBlcih4dCksW2NyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2NdKSxiXSk6Yi5hcmd1bWVudHMudW5zaGlmdChjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtjXSkpOmhhc1Byb3AoYyxlKXx8ZS5wcm9wZXJ0aWVzLnVuc2hpZnQoYyksIWgmJihoPWIpfWVsc2UgMTU9PT1iLnR5cGU/KGhhc1Byb3AoYyxiKXx8Yi5wcm9wZXJ0aWVzLnVuc2hpZnQoYyksaD1iKTooaD1jcmVhdGVDYWxsRXhwcmVzc2lvbihkLmhlbHBlcih4dCksW2NyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2NdKSxiXSksdiYmdi5jYWxsZWU9PT1rdCYmKHY9eVt5Lmxlbmd0aC0yXSkpOzEzPT09ZS50eXBlP3Y/di5hcmd1bWVudHNbMF09aDplLnByb3BzPWg6dj92LmFyZ3VtZW50c1swXT1oOmUuYXJndW1lbnRzWzJdPWh9ZnVuY3Rpb24gaGFzUHJvcChlLGMpe2xldCBkPSExO2lmKDQ9PT1lLmtleS50eXBlKXtjb25zdCBoPWUua2V5LmNvbnRlbnQ7ZD1jLnByb3BlcnRpZXMuc29tZShlPT40PT09ZS5rZXkudHlwZSYmZS5rZXkuY29udGVudD09PWgpfXJldHVybiBkfWZ1bmN0aW9uIHRvVmFsaWRBc3NldElkKGUsYyl7cmV0dXJuYF8ke2N9XyR7ZS5yZXBsYWNlKC9bXlx3XS9nLChjLGQpPT4iLSI9PT1jPyJfIjplLmNoYXJDb2RlQXQoZCkudG9TdHJpbmcoKSl9YH1mdW5jdGlvbiBnZXRNZW1vZWRWTm9kZUNhbGwoZSl7cmV0dXJuIDE0PT09ZS50eXBlJiZlLmNhbGxlZT09PUR0P2UuYXJndW1lbnRzWzFdLnJldHVybnM6ZX1jb25zdCB0bj0vKFtcc1xTXSo/KVxzKyg/OmlufG9mKVxzKyhcU1tcc1xTXSopLztmdW5jdGlvbiBpc0FsbFdoaXRlc3BhY2UoZSl7Zm9yKGxldCBjPTA7YzxlLmxlbmd0aDtjKyspaWYoIWlzV2hpdGVzcGFjZShlLmNoYXJDb2RlQXQoYykpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGlzV2hpdGVzcGFjZVRleHQoZSl7cmV0dXJuIDI9PT1lLnR5cGUmJmlzQWxsV2hpdGVzcGFjZShlLmNvbnRlbnQpfHwxMj09PWUudHlwZSYmaXNXaGl0ZXNwYWNlVGV4dChlLmNvbnRlbnQpfWZ1bmN0aW9uIGlzQ29tbWVudE9yV2hpdGVzcGFjZShlKXtyZXR1cm4gMz09PWUudHlwZXx8aXNXaGl0ZXNwYWNlVGV4dChlKX1jb25zdCBubj17cGFyc2VNb2RlOiJiYXNlIixuczowLGRlbGltaXRlcnM6WyJ7eyIsIn19Il0sZ2V0TmFtZXNwYWNlOigpPT4wLGlzVm9pZFRhZzpUZSxpc1ByZVRhZzpUZSxpc0lnbm9yZU5ld2xpbmVUYWc6VGUsaXNDdXN0b21FbGVtZW50OlRlLG9uRXJyb3I6ZGVmYXVsdE9uRXJyb3Isb25XYXJuOmRlZmF1bHRPbldhcm4sY29tbWVudHM6ITEscHJlZml4SWRlbnRpZmllcnM6ITF9O2xldCBybj1ubixhbj1udWxsLHNuPSIiLGxuPW51bGwsY249bnVsbCx1bj0iIixkbj0tMSxwbj0tMSxtbj0wLGhuPSExLGduPW51bGw7Y29uc3Qgdm49W10sYm49bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUsYyl7dGhpcy5zdGFjaz1lLHRoaXMuY2JzPWMsdGhpcy5zdGF0ZT0xLHRoaXMuYnVmZmVyPSIiLHRoaXMuc2VjdGlvblN0YXJ0PTAsdGhpcy5pbmRleD0wLHRoaXMuZW50aXR5U3RhcnQ9MCx0aGlzLmJhc2VTdGF0ZT0xLHRoaXMuaW5SQ0RBVEE9ITEsdGhpcy5pblhNTD0hMSx0aGlzLmluVlByZT0hMSx0aGlzLm5ld2xpbmVzPVtdLHRoaXMubW9kZT0wLHRoaXMuZGVsaW1pdGVyT3Blbj0kdCx0aGlzLmRlbGltaXRlckNsb3NlPUZ0LHRoaXMuZGVsaW1pdGVySW5kZXg9LTEsdGhpcy5jdXJyZW50U2VxdWVuY2U9dm9pZCAwLHRoaXMuc2VxdWVuY2VJbmRleD0wfWdldCBpblNGQ1Jvb3QoKXtyZXR1cm4gMj09PXRoaXMubW9kZSYmMD09PXRoaXMuc3RhY2subGVuZ3RofXJlc2V0KCl7dGhpcy5zdGF0ZT0xLHRoaXMubW9kZT0wLHRoaXMuYnVmZmVyPSIiLHRoaXMuc2VjdGlvblN0YXJ0PTAsdGhpcy5pbmRleD0wLHRoaXMuYmFzZVN0YXRlPTEsdGhpcy5pblJDREFUQT0hMSx0aGlzLmN1cnJlbnRTZXF1ZW5jZT12b2lkIDAsdGhpcy5uZXdsaW5lcy5sZW5ndGg9MCx0aGlzLmRlbGltaXRlck9wZW49JHQsdGhpcy5kZWxpbWl0ZXJDbG9zZT1GdH1nZXRQb3MoZSl7bGV0IGM9MSxkPWUrMTtjb25zdCBoPXRoaXMubmV3bGluZXMubGVuZ3RoO2xldCB2PS0xO2lmKGg+MTAwKXtsZXQgYz0tMSxkPWg7Zm9yKDtjKzE8ZDspe2NvbnN0IGg9YytkPj4+MTt0aGlzLm5ld2xpbmVzW2hdPGU/Yz1oOmQ9aH12PWN9ZWxzZSBmb3IobGV0IGM9aC0xO2M+PTA7Yy0tKWlmKGU+dGhpcy5uZXdsaW5lc1tjXSl7dj1jO2JyZWFrfXJldHVybiB2Pj0wJiYoYz12KzIsZD1lLXRoaXMubmV3bGluZXNbdl0pLHtjb2x1bW46ZCxsaW5lOmMsb2Zmc2V0OmV9fXBlZWsoKXtyZXR1cm4gdGhpcy5idWZmZXIuY2hhckNvZGVBdCh0aGlzLmluZGV4KzEpfXN0YXRlVGV4dChlKXs2MD09PWU/KHRoaXMuaW5kZXg+dGhpcy5zZWN0aW9uU3RhcnQmJnRoaXMuY2JzLm9udGV4dCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTUsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCk6dGhpcy5pblZQcmV8fGUhPT10aGlzLmRlbGltaXRlck9wZW5bMF18fCh0aGlzLnN0YXRlPTIsdGhpcy5kZWxpbWl0ZXJJbmRleD0wLHRoaXMuc3RhdGVJbnRlcnBvbGF0aW9uT3BlbihlKSl9c3RhdGVJbnRlcnBvbGF0aW9uT3BlbihlKXtpZihlPT09dGhpcy5kZWxpbWl0ZXJPcGVuW3RoaXMuZGVsaW1pdGVySW5kZXhdKWlmKHRoaXMuZGVsaW1pdGVySW5kZXg9PT10aGlzLmRlbGltaXRlck9wZW4ubGVuZ3RoLTEpe2NvbnN0IGU9dGhpcy5pbmRleCsxLXRoaXMuZGVsaW1pdGVyT3Blbi5sZW5ndGg7ZT50aGlzLnNlY3Rpb25TdGFydCYmdGhpcy5jYnMub250ZXh0KHRoaXMuc2VjdGlvblN0YXJ0LGUpLHRoaXMuc3RhdGU9Myx0aGlzLnNlY3Rpb25TdGFydD1lfWVsc2UgdGhpcy5kZWxpbWl0ZXJJbmRleCsrO2Vsc2UgdGhpcy5pblJDREFUQT8odGhpcy5zdGF0ZT0zMix0aGlzLnN0YXRlSW5SQ0RBVEEoZSkpOih0aGlzLnN0YXRlPTEsdGhpcy5zdGF0ZVRleHQoZSkpfXN0YXRlSW50ZXJwb2xhdGlvbihlKXtlPT09dGhpcy5kZWxpbWl0ZXJDbG9zZVswXSYmKHRoaXMuc3RhdGU9NCx0aGlzLmRlbGltaXRlckluZGV4PTAsdGhpcy5zdGF0ZUludGVycG9sYXRpb25DbG9zZShlKSl9c3RhdGVJbnRlcnBvbGF0aW9uQ2xvc2UoZSl7ZT09PXRoaXMuZGVsaW1pdGVyQ2xvc2VbdGhpcy5kZWxpbWl0ZXJJbmRleF0/dGhpcy5kZWxpbWl0ZXJJbmRleD09PXRoaXMuZGVsaW1pdGVyQ2xvc2UubGVuZ3RoLTE/KHRoaXMuY2JzLm9uaW50ZXJwb2xhdGlvbih0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KzEpLHRoaXMuaW5SQ0RBVEE/dGhpcy5zdGF0ZT0zMjp0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTp0aGlzLmRlbGltaXRlckluZGV4Kys6KHRoaXMuc3RhdGU9Myx0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbihlKSl9c3RhdGVTcGVjaWFsU3RhcnRTZXF1ZW5jZShlKXtjb25zdCBjPXRoaXMuc2VxdWVuY2VJbmRleD09PXRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aDtpZihjP2lzRW5kT2ZUYWdTZWN0aW9uKGUpOigzMnxlKT09PXRoaXMuY3VycmVudFNlcXVlbmNlW3RoaXMuc2VxdWVuY2VJbmRleF0pe2lmKCFjKXJldHVybiB2b2lkIHRoaXMuc2VxdWVuY2VJbmRleCsrfWVsc2UgdGhpcy5pblJDREFUQT0hMTt0aGlzLnNlcXVlbmNlSW5kZXg9MCx0aGlzLnN0YXRlPTYsdGhpcy5zdGF0ZUluVGFnTmFtZShlKX1zdGF0ZUluUkNEQVRBKGUpe2lmKHRoaXMuc2VxdWVuY2VJbmRleD09PXRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aCl7aWYoNjI9PT1lfHxpc1doaXRlc3BhY2UoZSkpe2NvbnN0IGM9dGhpcy5pbmRleC10aGlzLmN1cnJlbnRTZXF1ZW5jZS5sZW5ndGg7aWYodGhpcy5zZWN0aW9uU3RhcnQ8Yyl7Y29uc3QgZT10aGlzLmluZGV4O3RoaXMuaW5kZXg9Yyx0aGlzLmNicy5vbnRleHQodGhpcy5zZWN0aW9uU3RhcnQsYyksdGhpcy5pbmRleD1lfXJldHVybiB0aGlzLnNlY3Rpb25TdGFydD1jKzIsdGhpcy5zdGF0ZUluQ2xvc2luZ1RhZ05hbWUoZSksdm9pZCh0aGlzLmluUkNEQVRBPSExKX10aGlzLnNlcXVlbmNlSW5kZXg9MH0oMzJ8ZSk9PT10aGlzLmN1cnJlbnRTZXF1ZW5jZVt0aGlzLnNlcXVlbmNlSW5kZXhdP3RoaXMuc2VxdWVuY2VJbmRleCs9MTowPT09dGhpcy5zZXF1ZW5jZUluZGV4P3RoaXMuY3VycmVudFNlcXVlbmNlPT09VnQuVGl0bGVFbmR8fHRoaXMuY3VycmVudFNlcXVlbmNlPT09VnQuVGV4dGFyZWFFbmQmJiF0aGlzLmluU0ZDUm9vdD90aGlzLmluVlByZXx8ZSE9PXRoaXMuZGVsaW1pdGVyT3BlblswXXx8KHRoaXMuc3RhdGU9Mix0aGlzLmRlbGltaXRlckluZGV4PTAsdGhpcy5zdGF0ZUludGVycG9sYXRpb25PcGVuKGUpKTp0aGlzLmZhc3RGb3J3YXJkVG8oNjApJiYodGhpcy5zZXF1ZW5jZUluZGV4PTEpOnRoaXMuc2VxdWVuY2VJbmRleD1OdW1iZXIoNjA9PT1lKX1zdGF0ZUNEQVRBU2VxdWVuY2UoZSl7ZT09PVZ0LkNkYXRhW3RoaXMuc2VxdWVuY2VJbmRleF0/Kyt0aGlzLnNlcXVlbmNlSW5kZXg9PT1WdC5DZGF0YS5sZW5ndGgmJih0aGlzLnN0YXRlPTI4LHRoaXMuY3VycmVudFNlcXVlbmNlPVZ0LkNkYXRhRW5kLHRoaXMuc2VxdWVuY2VJbmRleD0wLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6KHRoaXMuc2VxdWVuY2VJbmRleD0wLHRoaXMuc3RhdGU9MjMsdGhpcy5zdGF0ZUluRGVjbGFyYXRpb24oZSkpfWZhc3RGb3J3YXJkVG8oZSl7Zm9yKDsrK3RoaXMuaW5kZXg8dGhpcy5idWZmZXIubGVuZ3RoOyl7Y29uc3QgYz10aGlzLmJ1ZmZlci5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpO2lmKDEwPT09YyYmdGhpcy5uZXdsaW5lcy5wdXNoKHRoaXMuaW5kZXgpLGM9PT1lKXJldHVybiEwfXJldHVybiB0aGlzLmluZGV4PXRoaXMuYnVmZmVyLmxlbmd0aC0xLCExfXN0YXRlSW5Db21tZW50TGlrZShlKXtlPT09dGhpcy5jdXJyZW50U2VxdWVuY2VbdGhpcy5zZXF1ZW5jZUluZGV4XT8rK3RoaXMuc2VxdWVuY2VJbmRleD09PXRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aCYmKHRoaXMuY3VycmVudFNlcXVlbmNlPT09VnQuQ2RhdGFFbmQ/dGhpcy5jYnMub25jZGF0YSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4LTIpOnRoaXMuY2JzLm9uY29tbWVudCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4LTIpLHRoaXMuc2VxdWVuY2VJbmRleD0wLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSx0aGlzLnN0YXRlPTEpOjA9PT10aGlzLnNlcXVlbmNlSW5kZXg/dGhpcy5mYXN0Rm9yd2FyZFRvKHRoaXMuY3VycmVudFNlcXVlbmNlWzBdKSYmKHRoaXMuc2VxdWVuY2VJbmRleD0xKTplIT09dGhpcy5jdXJyZW50U2VxdWVuY2VbdGhpcy5zZXF1ZW5jZUluZGV4LTFdJiYodGhpcy5zZXF1ZW5jZUluZGV4PTApfXN0YXJ0U3BlY2lhbChlLGMpe3RoaXMuZW50ZXJSQ0RBVEEoZSxjKSx0aGlzLnN0YXRlPTMxfWVudGVyUkNEQVRBKGUsYyl7dGhpcy5pblJDREFUQT0hMCx0aGlzLmN1cnJlbnRTZXF1ZW5jZT1lLHRoaXMuc2VxdWVuY2VJbmRleD1jfXN0YXRlQmVmb3JlVGFnTmFtZShlKXszMz09PWU/KHRoaXMuc3RhdGU9MjIsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTo2Mz09PWU/KHRoaXMuc3RhdGU9MjQsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTppc1RhZ1N0YXJ0Q2hhcihlKT8odGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCwwPT09dGhpcy5tb2RlP3RoaXMuc3RhdGU9Njp0aGlzLmluU0ZDUm9vdD90aGlzLnN0YXRlPTM0OnRoaXMuaW5YTUw/dGhpcy5zdGF0ZT02OnRoaXMuc3RhdGU9MTE2PT09ZT8zMDoxMTU9PT1lPzI5OjYpOjQ3PT09ZT90aGlzLnN0YXRlPTg6KHRoaXMuc3RhdGU9MSx0aGlzLnN0YXRlVGV4dChlKSl9c3RhdGVJblRhZ05hbWUoZSl7aXNFbmRPZlRhZ1NlY3Rpb24oZSkmJnRoaXMuaGFuZGxlVGFnTmFtZShlKX1zdGF0ZUluU0ZDUm9vdFRhZ05hbWUoZSl7aWYoaXNFbmRPZlRhZ1NlY3Rpb24oZSkpe2NvbnN0IGM9dGhpcy5idWZmZXIuc2xpY2UodGhpcy5zZWN0aW9uU3RhcnQsdGhpcy5pbmRleCk7InRlbXBsYXRlIiE9PWMmJnRoaXMuZW50ZXJSQ0RBVEEodG9DaGFyQ29kZXMoIjwvIitjKSwwKSx0aGlzLmhhbmRsZVRhZ05hbWUoZSl9fWhhbmRsZVRhZ05hbWUoZSl7dGhpcy5jYnMub25vcGVudGFnbmFtZSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnNlY3Rpb25TdGFydD0tMSx0aGlzLnN0YXRlPTExLHRoaXMuc3RhdGVCZWZvcmVBdHRyTmFtZShlKX1zdGF0ZUJlZm9yZUNsb3NpbmdUYWdOYW1lKGUpe2lzV2hpdGVzcGFjZShlKXx8KDYyPT09ZT8odGhpcy5zdGF0ZT0xLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6KHRoaXMuc3RhdGU9aXNUYWdTdGFydENoYXIoZSk/OToyNyx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KSl9c3RhdGVJbkNsb3NpbmdUYWdOYW1lKGUpeyg2Mj09PWV8fGlzV2hpdGVzcGFjZShlKSkmJih0aGlzLmNicy5vbmNsb3NldGFnKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PS0xLHRoaXMuc3RhdGU9MTAsdGhpcy5zdGF0ZUFmdGVyQ2xvc2luZ1RhZ05hbWUoZSkpfXN0YXRlQWZ0ZXJDbG9zaW5nVGFnTmFtZShlKXs2Mj09PWUmJih0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUJlZm9yZUF0dHJOYW1lKGUpezYyPT09ZT8odGhpcy5jYnMub25vcGVudGFnZW5kKHRoaXMuaW5kZXgpLHRoaXMuaW5SQ0RBVEE/dGhpcy5zdGF0ZT0zMjp0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTo0Nz09PWU/dGhpcy5zdGF0ZT03OjYwPT09ZSYmNDc9PT10aGlzLnBlZWsoKT8odGhpcy5jYnMub25vcGVudGFnZW5kKHRoaXMuaW5kZXgpLHRoaXMuc3RhdGU9NSx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KTppc1doaXRlc3BhY2UoZSl8fHRoaXMuaGFuZGxlQXR0clN0YXJ0KGUpfWhhbmRsZUF0dHJTdGFydChlKXsxMTg9PT1lJiY0NT09PXRoaXMucGVlaygpPyh0aGlzLnN0YXRlPTEzLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgpOjQ2PT09ZXx8NTg9PT1lfHw2ND09PWV8fDM1PT09ZT8odGhpcy5jYnMub25kaXJuYW1lKHRoaXMuaW5kZXgsdGhpcy5pbmRleCsxKSx0aGlzLnN0YXRlPTE0LHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6KHRoaXMuc3RhdGU9MTIsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCl9c3RhdGVJblNlbGZDbG9zaW5nVGFnKGUpezYyPT09ZT8odGhpcy5jYnMub25zZWxmY2xvc2luZ3RhZyh0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxLHRoaXMuaW5SQ0RBVEE9ITEpOmlzV2hpdGVzcGFjZShlKXx8KHRoaXMuc3RhdGU9MTEsdGhpcy5zdGF0ZUJlZm9yZUF0dHJOYW1lKGUpKX1zdGF0ZUluQXR0ck5hbWUoZSl7KDYxPT09ZXx8aXNFbmRPZlRhZ1NlY3Rpb24oZSkpJiYodGhpcy5jYnMub25hdHRyaWJuYW1lKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpfXN0YXRlSW5EaXJOYW1lKGUpezYxPT09ZXx8aXNFbmRPZlRhZ1NlY3Rpb24oZSk/KHRoaXMuY2JzLm9uZGlybmFtZSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLmhhbmRsZUF0dHJOYW1lRW5kKGUpKTo1OD09PWU/KHRoaXMuY2JzLm9uZGlybmFtZSh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTE0LHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgrMSk6NDY9PT1lJiYodGhpcy5jYnMub25kaXJuYW1lKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc3RhdGU9MTYsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUluRGlyQXJnKGUpezYxPT09ZXx8aXNFbmRPZlRhZ1NlY3Rpb24oZSk/KHRoaXMuY2JzLm9uZGlyYXJnKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpOjkxPT09ZT90aGlzLnN0YXRlPTE1OjQ2PT09ZSYmKHRoaXMuY2JzLm9uZGlyYXJnKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc3RhdGU9MTYsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUluRHluYW1pY0RpckFyZyhlKXs5Mz09PWU/dGhpcy5zdGF0ZT0xNDooNjE9PT1lfHxpc0VuZE9mVGFnU2VjdGlvbihlKSkmJih0aGlzLmNicy5vbmRpcmFyZyh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KzEpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpfXN0YXRlSW5EaXJNb2RpZmllcihlKXs2MT09PWV8fGlzRW5kT2ZUYWdTZWN0aW9uKGUpPyh0aGlzLmNicy5vbmRpcm1vZGlmaWVyKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoZSkpOjQ2PT09ZSYmKHRoaXMuY2JzLm9uZGlybW9kaWZpZXIodGhpcy5zZWN0aW9uU3RhcnQsdGhpcy5pbmRleCksdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1oYW5kbGVBdHRyTmFtZUVuZChlKXt0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4LHRoaXMuc3RhdGU9MTcsdGhpcy5jYnMub25hdHRyaWJuYW1lZW5kKHRoaXMuaW5kZXgpLHRoaXMuc3RhdGVBZnRlckF0dHJOYW1lKGUpfXN0YXRlQWZ0ZXJBdHRyTmFtZShlKXs2MT09PWU/dGhpcy5zdGF0ZT0xODo0Nz09PWV8fDYyPT09ZT8odGhpcy5jYnMub25hdHRyaWJlbmQoMCx0aGlzLnNlY3Rpb25TdGFydCksdGhpcy5zZWN0aW9uU3RhcnQ9LTEsdGhpcy5zdGF0ZT0xMSx0aGlzLnN0YXRlQmVmb3JlQXR0ck5hbWUoZSkpOmlzV2hpdGVzcGFjZShlKXx8KHRoaXMuY2JzLm9uYXR0cmliZW5kKDAsdGhpcy5zZWN0aW9uU3RhcnQpLHRoaXMuaGFuZGxlQXR0clN0YXJ0KGUpKX1zdGF0ZUJlZm9yZUF0dHJWYWx1ZShlKXszND09PWU/KHRoaXMuc3RhdGU9MTksdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTozOT09PWU/KHRoaXMuc3RhdGU9MjAsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTppc1doaXRlc3BhY2UoZSl8fCh0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4LHRoaXMuc3RhdGU9MjEsdGhpcy5zdGF0ZUluQXR0clZhbHVlTm9RdW90ZXMoZSkpfWhhbmRsZUluQXR0clZhbHVlKGUsYyl7KGU9PT1jfHx0aGlzLmZhc3RGb3J3YXJkVG8oYykpJiYodGhpcy5jYnMub25hdHRyaWJkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PS0xLHRoaXMuY2JzLm9uYXR0cmliZW5kKDM0PT09Yz8zOjIsdGhpcy5pbmRleCsxKSx0aGlzLnN0YXRlPTExKX1zdGF0ZUluQXR0clZhbHVlRG91YmxlUXVvdGVzKGUpe3RoaXMuaGFuZGxlSW5BdHRyVmFsdWUoZSwzNCl9c3RhdGVJbkF0dHJWYWx1ZVNpbmdsZVF1b3RlcyhlKXt0aGlzLmhhbmRsZUluQXR0clZhbHVlKGUsMzkpfXN0YXRlSW5BdHRyVmFsdWVOb1F1b3RlcyhlKXtpc1doaXRlc3BhY2UoZSl8fDYyPT09ZT8odGhpcy5jYnMub25hdHRyaWJkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PS0xLHRoaXMuY2JzLm9uYXR0cmliZW5kKDEsdGhpcy5pbmRleCksdGhpcy5zdGF0ZT0xMSx0aGlzLnN0YXRlQmVmb3JlQXR0ck5hbWUoZSkpOjM5IT09ZSYmNjAhPT1lJiY2MSE9PWUmJjk2IT09ZXx8dGhpcy5jYnMub25lcnIoMTgsdGhpcy5pbmRleCl9c3RhdGVCZWZvcmVEZWNsYXJhdGlvbihlKXs5MT09PWU/KHRoaXMuc3RhdGU9MjYsdGhpcy5zZXF1ZW5jZUluZGV4PTApOnRoaXMuc3RhdGU9NDU9PT1lPzI1OjIzfXN0YXRlSW5EZWNsYXJhdGlvbihlKXsoNjI9PT1lfHx0aGlzLmZhc3RGb3J3YXJkVG8oNjIpKSYmKHRoaXMuc3RhdGU9MSx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KzEpfXN0YXRlSW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSl7KDYyPT09ZXx8dGhpcy5mYXN0Rm9yd2FyZFRvKDYyKSkmJih0aGlzLmNicy5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbih0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUJlZm9yZUNvbW1lbnQoZSl7NDU9PT1lPyh0aGlzLnN0YXRlPTI4LHRoaXMuY3VycmVudFNlcXVlbmNlPVZ0LkNvbW1lbnRFbmQsdGhpcy5zZXF1ZW5jZUluZGV4PTIsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKTp0aGlzLnN0YXRlPTIzfXN0YXRlSW5TcGVjaWFsQ29tbWVudChlKXsoNjI9PT1lfHx0aGlzLmZhc3RGb3J3YXJkVG8oNjIpKSYmKHRoaXMuY2JzLm9uY29tbWVudCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnN0YXRlPTEsdGhpcy5zZWN0aW9uU3RhcnQ9dGhpcy5pbmRleCsxKX1zdGF0ZUJlZm9yZVNwZWNpYWxTKGUpe2U9PT1WdC5TY3JpcHRFbmRbM10/dGhpcy5zdGFydFNwZWNpYWwoVnQuU2NyaXB0RW5kLDQpOmU9PT1WdC5TdHlsZUVuZFszXT90aGlzLnN0YXJ0U3BlY2lhbChWdC5TdHlsZUVuZCw0KToodGhpcy5zdGF0ZT02LHRoaXMuc3RhdGVJblRhZ05hbWUoZSkpfXN0YXRlQmVmb3JlU3BlY2lhbFQoZSl7ZT09PVZ0LlRpdGxlRW5kWzNdP3RoaXMuc3RhcnRTcGVjaWFsKFZ0LlRpdGxlRW5kLDQpOmU9PT1WdC5UZXh0YXJlYUVuZFszXT90aGlzLnN0YXJ0U3BlY2lhbChWdC5UZXh0YXJlYUVuZCw0KToodGhpcy5zdGF0ZT02LHRoaXMuc3RhdGVJblRhZ05hbWUoZSkpfXN0YXJ0RW50aXR5KCl7fXN0YXRlSW5FbnRpdHkoKXt9cGFyc2UoZSl7Zm9yKHRoaXMuYnVmZmVyPWU7dGhpcy5pbmRleDx0aGlzLmJ1ZmZlci5sZW5ndGg7KXtjb25zdCBlPXRoaXMuYnVmZmVyLmNoYXJDb2RlQXQodGhpcy5pbmRleCk7c3dpdGNoKDEwPT09ZSYmMzMhPT10aGlzLnN0YXRlJiZ0aGlzLm5ld2xpbmVzLnB1c2godGhpcy5pbmRleCksdGhpcy5zdGF0ZSl7Y2FzZSAxOnRoaXMuc3RhdGVUZXh0KGUpO2JyZWFrO2Nhc2UgMjp0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbk9wZW4oZSk7YnJlYWs7Y2FzZSAzOnRoaXMuc3RhdGVJbnRlcnBvbGF0aW9uKGUpO2JyZWFrO2Nhc2UgNDp0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbkNsb3NlKGUpO2JyZWFrO2Nhc2UgMzE6dGhpcy5zdGF0ZVNwZWNpYWxTdGFydFNlcXVlbmNlKGUpO2JyZWFrO2Nhc2UgMzI6dGhpcy5zdGF0ZUluUkNEQVRBKGUpO2JyZWFrO2Nhc2UgMjY6dGhpcy5zdGF0ZUNEQVRBU2VxdWVuY2UoZSk7YnJlYWs7Y2FzZSAxOTp0aGlzLnN0YXRlSW5BdHRyVmFsdWVEb3VibGVRdW90ZXMoZSk7YnJlYWs7Y2FzZSAxMjp0aGlzLnN0YXRlSW5BdHRyTmFtZShlKTticmVhaztjYXNlIDEzOnRoaXMuc3RhdGVJbkRpck5hbWUoZSk7YnJlYWs7Y2FzZSAxNDp0aGlzLnN0YXRlSW5EaXJBcmcoZSk7YnJlYWs7Y2FzZSAxNTp0aGlzLnN0YXRlSW5EeW5hbWljRGlyQXJnKGUpO2JyZWFrO2Nhc2UgMTY6dGhpcy5zdGF0ZUluRGlyTW9kaWZpZXIoZSk7YnJlYWs7Y2FzZSAyODp0aGlzLnN0YXRlSW5Db21tZW50TGlrZShlKTticmVhaztjYXNlIDI3OnRoaXMuc3RhdGVJblNwZWNpYWxDb21tZW50KGUpO2JyZWFrO2Nhc2UgMTE6dGhpcy5zdGF0ZUJlZm9yZUF0dHJOYW1lKGUpO2JyZWFrO2Nhc2UgNjp0aGlzLnN0YXRlSW5UYWdOYW1lKGUpO2JyZWFrO2Nhc2UgMzQ6dGhpcy5zdGF0ZUluU0ZDUm9vdFRhZ05hbWUoZSk7YnJlYWs7Y2FzZSA5OnRoaXMuc3RhdGVJbkNsb3NpbmdUYWdOYW1lKGUpO2JyZWFrO2Nhc2UgNTp0aGlzLnN0YXRlQmVmb3JlVGFnTmFtZShlKTticmVhaztjYXNlIDE3OnRoaXMuc3RhdGVBZnRlckF0dHJOYW1lKGUpO2JyZWFrO2Nhc2UgMjA6dGhpcy5zdGF0ZUluQXR0clZhbHVlU2luZ2xlUXVvdGVzKGUpO2JyZWFrO2Nhc2UgMTg6dGhpcy5zdGF0ZUJlZm9yZUF0dHJWYWx1ZShlKTticmVhaztjYXNlIDg6dGhpcy5zdGF0ZUJlZm9yZUNsb3NpbmdUYWdOYW1lKGUpO2JyZWFrO2Nhc2UgMTA6dGhpcy5zdGF0ZUFmdGVyQ2xvc2luZ1RhZ05hbWUoZSk7YnJlYWs7Y2FzZSAyOTp0aGlzLnN0YXRlQmVmb3JlU3BlY2lhbFMoZSk7YnJlYWs7Y2FzZSAzMDp0aGlzLnN0YXRlQmVmb3JlU3BlY2lhbFQoZSk7YnJlYWs7Y2FzZSAyMTp0aGlzLnN0YXRlSW5BdHRyVmFsdWVOb1F1b3RlcyhlKTticmVhaztjYXNlIDc6dGhpcy5zdGF0ZUluU2VsZkNsb3NpbmdUYWcoZSk7YnJlYWs7Y2FzZSAyMzp0aGlzLnN0YXRlSW5EZWNsYXJhdGlvbihlKTticmVhaztjYXNlIDIyOnRoaXMuc3RhdGVCZWZvcmVEZWNsYXJhdGlvbihlKTticmVhaztjYXNlIDI1OnRoaXMuc3RhdGVCZWZvcmVDb21tZW50KGUpO2JyZWFrO2Nhc2UgMjQ6dGhpcy5zdGF0ZUluUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUpO2JyZWFrO2Nhc2UgMzM6dGhpcy5zdGF0ZUluRW50aXR5KCl9dGhpcy5pbmRleCsrfXRoaXMuY2xlYW51cCgpLHRoaXMuZmluaXNoKCl9Y2xlYW51cCgpe3RoaXMuc2VjdGlvblN0YXJ0IT09dGhpcy5pbmRleCYmKDE9PT10aGlzLnN0YXRlfHwzMj09PXRoaXMuc3RhdGUmJjA9PT10aGlzLnNlcXVlbmNlSW5kZXg/KHRoaXMuY2JzLm9udGV4dCh0aGlzLnNlY3Rpb25TdGFydCx0aGlzLmluZGV4KSx0aGlzLnNlY3Rpb25TdGFydD10aGlzLmluZGV4KToxOSE9PXRoaXMuc3RhdGUmJjIwIT09dGhpcy5zdGF0ZSYmMjEhPT10aGlzLnN0YXRlfHwodGhpcy5jYnMub25hdHRyaWJkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LHRoaXMuaW5kZXgpLHRoaXMuc2VjdGlvblN0YXJ0PXRoaXMuaW5kZXgpKX1maW5pc2goKXt0aGlzLmhhbmRsZVRyYWlsaW5nRGF0YSgpLHRoaXMuY2JzLm9uZW5kKCl9aGFuZGxlVHJhaWxpbmdEYXRhKCl7Y29uc3QgZT10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5zZWN0aW9uU3RhcnQ+PWV8fCgyOD09PXRoaXMuc3RhdGU/dGhpcy5jdXJyZW50U2VxdWVuY2U9PT1WdC5DZGF0YUVuZD90aGlzLmNicy5vbmNkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LGUpOnRoaXMuY2JzLm9uY29tbWVudCh0aGlzLnNlY3Rpb25TdGFydCxlKTo2PT09dGhpcy5zdGF0ZXx8MTE9PT10aGlzLnN0YXRlfHwxOD09PXRoaXMuc3RhdGV8fDE3PT09dGhpcy5zdGF0ZXx8MTI9PT10aGlzLnN0YXRlfHwxMz09PXRoaXMuc3RhdGV8fDE0PT09dGhpcy5zdGF0ZXx8MTU9PT10aGlzLnN0YXRlfHwxNj09PXRoaXMuc3RhdGV8fDIwPT09dGhpcy5zdGF0ZXx8MTk9PT10aGlzLnN0YXRlfHwyMT09PXRoaXMuc3RhdGV8fDk9PT10aGlzLnN0YXRlfHx0aGlzLmNicy5vbnRleHQodGhpcy5zZWN0aW9uU3RhcnQsZSkpfWVtaXRDb2RlUG9pbnQoZSxjKXt9fSh2bix7b25lcnI6ZW1pdEVycm9yLG9udGV4dChlLGMpe29uVGV4dChnZXRTbGljZShlLGMpLGUsYyl9LG9udGV4dGVudGl0eShlLGMsZCl7b25UZXh0KGUsYyxkKX0sb25pbnRlcnBvbGF0aW9uKGUsYyl7aWYoaG4pcmV0dXJuIG9uVGV4dChnZXRTbGljZShlLGMpLGUsYyk7bGV0IGQ9ZStibi5kZWxpbWl0ZXJPcGVuLmxlbmd0aCxoPWMtYm4uZGVsaW1pdGVyQ2xvc2UubGVuZ3RoO2Zvcig7aXNXaGl0ZXNwYWNlKHNuLmNoYXJDb2RlQXQoZCkpOylkKys7Zm9yKDtpc1doaXRlc3BhY2Uoc24uY2hhckNvZGVBdChoLTEpKTspaC0tO2xldCB2PWdldFNsaWNlKGQsaCk7di5pbmNsdWRlcygiJiIpJiYodj1ybi5kZWNvZGVFbnRpdGllcyh2LCExKSksYWRkTm9kZSh7dHlwZTo1LGNvbnRlbnQ6Y3JlYXRlRXhwKHYsITEsZ2V0TG9jKGQsaCkpLGxvYzpnZXRMb2MoZSxjKX0pfSxvbm9wZW50YWduYW1lKGUsYyl7Y29uc3QgZD1nZXRTbGljZShlLGMpO2xuPXt0eXBlOjEsdGFnOmQsbnM6cm4uZ2V0TmFtZXNwYWNlKGQsdm5bMF0scm4ubnMpLHRhZ1R5cGU6MCxwcm9wczpbXSxjaGlsZHJlbjpbXSxsb2M6Z2V0TG9jKGUtMSxjKSxjb2RlZ2VuTm9kZTp2b2lkIDB9fSxvbm9wZW50YWdlbmQoZSl7ZW5kT3BlblRhZyhlKX0sb25jbG9zZXRhZyhlLGMpe2NvbnN0IGQ9Z2V0U2xpY2UoZSxjKTtpZighcm4uaXNWb2lkVGFnKGQpKXtsZXQgaD0hMTtmb3IobGV0IGU9MDtlPHZuLmxlbmd0aDtlKyspe2lmKHZuW2VdLnRhZy50b0xvd2VyQ2FzZSgpPT09ZC50b0xvd2VyQ2FzZSgpKXtoPSEwLGU+MCYmZW1pdEVycm9yKDI0LHZuWzBdLmxvYy5zdGFydC5vZmZzZXQpO2ZvcihsZXQgZD0wO2Q8PWU7ZCsrKXtvbkNsb3NlVGFnKHZuLnNoaWZ0KCksYyxkPGUpfWJyZWFrfX1ofHxlbWl0RXJyb3IoMjMsYmFja1RyYWNrKGUsNjApKX19LG9uc2VsZmNsb3Npbmd0YWcoZSl7Y29uc3QgYz1sbi50YWc7bG4uaXNTZWxmQ2xvc2luZz0hMCxlbmRPcGVuVGFnKGUpLHZuWzBdJiZ2blswXS50YWc9PT1jJiZvbkNsb3NlVGFnKHZuLnNoaWZ0KCksZSl9LG9uYXR0cmlibmFtZShlLGMpe2NuPXt0eXBlOjYsbmFtZTpnZXRTbGljZShlLGMpLG5hbWVMb2M6Z2V0TG9jKGUsYyksdmFsdWU6dm9pZCAwLGxvYzpnZXRMb2MoZSl9fSxvbmRpcm5hbWUoZSxjKXtjb25zdCBkPWdldFNsaWNlKGUsYyksaD0iLiI9PT1kfHwiOiI9PT1kPyJiaW5kIjoiQCI9PT1kPyJvbiI6IiMiPT09ZD8ic2xvdCI6ZC5zbGljZSgyKTtpZihobnx8IiIhPT1ofHxlbWl0RXJyb3IoMjYsZSksaG58fCIiPT09aCljbj17dHlwZTo2LG5hbWU6ZCxuYW1lTG9jOmdldExvYyhlLGMpLHZhbHVlOnZvaWQgMCxsb2M6Z2V0TG9jKGUpfTtlbHNlIGlmKGNuPXt0eXBlOjcsbmFtZTpoLHJhd05hbWU6ZCxleHA6dm9pZCAwLGFyZzp2b2lkIDAsbW9kaWZpZXJzOiIuIj09PWQ/W2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oInByb3AiKV06W10sbG9jOmdldExvYyhlKX0sInByZSI9PT1oKXtobj1ibi5pblZQcmU9ITAsZ249bG47Y29uc3QgZT1sbi5wcm9wcztmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKyk3PT09ZVtjXS50eXBlJiYoZVtjXT1kaXJUb0F0dHIoZVtjXSkpfX0sb25kaXJhcmcoZSxjKXtpZihlPT09YylyZXR1cm47Y29uc3QgZD1nZXRTbGljZShlLGMpO2lmKGhuJiYhaXNWUHJlKGNuKSljbi5uYW1lKz1kLHNldExvY0VuZChjbi5uYW1lTG9jLGMpO2Vsc2V7Y29uc3QgaD0iWyIhPT1kWzBdO2NuLmFyZz1jcmVhdGVFeHAoaD9kOmQuc2xpY2UoMSwtMSksaCxnZXRMb2MoZSxjKSxoPzM6MCl9fSxvbmRpcm1vZGlmaWVyKGUsYyl7Y29uc3QgZD1nZXRTbGljZShlLGMpO2lmKGhuJiYhaXNWUHJlKGNuKSljbi5uYW1lKz0iLiIrZCxzZXRMb2NFbmQoY24ubmFtZUxvYyxjKTtlbHNlIGlmKCJzbG90Ij09PWNuLm5hbWUpe2NvbnN0IGU9Y24uYXJnO2UmJihlLmNvbnRlbnQrPSIuIitkLHNldExvY0VuZChlLmxvYyxjKSl9ZWxzZXtjb25zdCBoPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZCwhMCxnZXRMb2MoZSxjKSk7Y24ubW9kaWZpZXJzLnB1c2goaCl9fSxvbmF0dHJpYmRhdGEoZSxjKXt1bis9Z2V0U2xpY2UoZSxjKSxkbjwwJiYoZG49ZSkscG49Y30sb25hdHRyaWJlbnRpdHkoZSxjLGQpe3VuKz1lLGRuPDAmJihkbj1jKSxwbj1kfSxvbmF0dHJpYm5hbWVlbmQoZSl7Y29uc3QgYz1jbi5sb2Muc3RhcnQub2Zmc2V0LGQ9Z2V0U2xpY2UoYyxlKTs3PT09Y24udHlwZSYmKGNuLnJhd05hbWU9ZCksbG4ucHJvcHMuc29tZShlPT4oNz09PWUudHlwZT9lLnJhd05hbWU6ZS5uYW1lKT09PWQpJiZlbWl0RXJyb3IoMixjKX0sb25hdHRyaWJlbmQoZSxjKXtpZihsbiYmY24pe2lmKHNldExvY0VuZChjbi5sb2MsYyksMCE9PWUpaWYodW4uaW5jbHVkZXMoIiYiKSYmKHVuPXJuLmRlY29kZUVudGl0aWVzKHVuLCEwKSksNj09PWNuLnR5cGUpImNsYXNzIj09PWNuLm5hbWUmJih1bj1jb25kZW5zZSh1bikudHJpbSgpKSwxIT09ZXx8dW58fGVtaXRFcnJvcigxMyxjKSxjbi52YWx1ZT17dHlwZToyLGNvbnRlbnQ6dW4sbG9jOjE9PT1lP2dldExvYyhkbixwbik6Z2V0TG9jKGRuLTEscG4rMSl9LGJuLmluU0ZDUm9vdCYmInRlbXBsYXRlIj09PWxuLnRhZyYmImxhbmciPT09Y24ubmFtZSYmdW4mJiJodG1sIiE9PXVuJiZibi5lbnRlclJDREFUQSh0b0NoYXJDb2RlcygiPC90ZW1wbGF0ZSIpLDApO2Vsc2V7bGV0IGU9MDtjbi5leHA9Y3JlYXRlRXhwKHVuLCExLGdldExvYyhkbixwbiksMCxlKSwiZm9yIj09PWNuLm5hbWUmJihjbi5mb3JQYXJzZVJlc3VsdD1mdW5jdGlvbihlKXtjb25zdCBjPWUubG9jLGQ9ZS5jb250ZW50LGg9ZC5tYXRjaCh0bik7aWYoIWgpcmV0dXJuO2NvbnN0Wyx2LGJdPWgsY3JlYXRlQWxpYXNFeHByZXNzaW9uPShlLGQsaD0hMSk9Pntjb25zdCB2PWMuc3RhcnQub2Zmc2V0K2Q7cmV0dXJuIGNyZWF0ZUV4cChlLCExLGdldExvYyh2LHYrZS5sZW5ndGgpLDAsaD8xOjApfSx5PXtzb3VyY2U6Y3JlYXRlQWxpYXNFeHByZXNzaW9uKGIudHJpbSgpLGQuaW5kZXhPZihiLHYubGVuZ3RoKSksdmFsdWU6dm9pZCAwLGtleTp2b2lkIDAsaW5kZXg6dm9pZCAwLGZpbmFsaXplZDohMX07bGV0IEU9di50cmltKCkucmVwbGFjZSh4biwiIikudHJpbSgpO2NvbnN0IGs9di5pbmRleE9mKEUpLF89RS5tYXRjaCh5bik7aWYoXyl7RT1FLnJlcGxhY2UoeW4sIiIpLnRyaW0oKTtjb25zdCBlPV9bMV0udHJpbSgpO2xldCBjO2lmKGUmJihjPWQuaW5kZXhPZihlLGsrRS5sZW5ndGgpLHkua2V5PWNyZWF0ZUFsaWFzRXhwcmVzc2lvbihlLGMsITApKSxfWzJdKXtjb25zdCBoPV9bMl0udHJpbSgpO2gmJih5LmluZGV4PWNyZWF0ZUFsaWFzRXhwcmVzc2lvbihoLGQuaW5kZXhPZihoLHkua2V5P2MrZS5sZW5ndGg6aytFLmxlbmd0aCksITApKX19RSYmKHkudmFsdWU9Y3JlYXRlQWxpYXNFeHByZXNzaW9uKEUsaywhMCkpO3JldHVybiB5fShjbi5leHApKTtsZXQgYz0tMTsiYmluZCI9PT1jbi5uYW1lJiYoYz1jbi5tb2RpZmllcnMuZmluZEluZGV4KGU9PiJzeW5jIj09PWUuY29udGVudCkpPi0xJiZjaGVja0NvbXBhdEVuYWJsZWQoIkNPTVBJTEVSX1ZfQklORF9TWU5DIixybixjbi5sb2MsY24uYXJnLmxvYy5zb3VyY2UpJiYoY24ubmFtZT0ibW9kZWwiLGNuLm1vZGlmaWVycy5zcGxpY2UoYywxKSl9Nz09PWNuLnR5cGUmJiJwcmUiPT09Y24ubmFtZXx8bG4ucHJvcHMucHVzaChjbil9dW49IiIsZG49cG49LTF9LG9uY29tbWVudChlLGMpe3JuLmNvbW1lbnRzJiZhZGROb2RlKHt0eXBlOjMsY29udGVudDpnZXRTbGljZShlLGMpLGxvYzpnZXRMb2MoZS00LGMrMyl9KX0sb25lbmQoKXtjb25zdCBlPXNuLmxlbmd0aDtmb3IobGV0IGM9MDtjPHZuLmxlbmd0aDtjKyspb25DbG9zZVRhZyh2bltjXSxlLTEpLGVtaXRFcnJvcigyNCx2bltjXS5sb2Muc3RhcnQub2Zmc2V0KX0sb25jZGF0YShlLGMpezAhPT12blswXS5ucz9vblRleHQoZ2V0U2xpY2UoZSxjKSxlLGMpOmVtaXRFcnJvcigxLGUtOSl9LG9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKGUpezA9PT0odm5bMF0/dm5bMF0ubnM6cm4ubnMpJiZlbWl0RXJyb3IoMjEsZS0xKX19KSx5bj0vLChbXixcfVxdXSopKD86LChbXixcfVxdXSopKT8kLyx4bj0vXlwofFwpJC9nO2Z1bmN0aW9uIGdldFNsaWNlKGUsYyl7cmV0dXJuIHNuLnNsaWNlKGUsYyl9ZnVuY3Rpb24gZW5kT3BlblRhZyhlKXtibi5pblNGQ1Jvb3QmJihsbi5pbm5lckxvYz1nZXRMb2MoZSsxLGUrMSkpLGFkZE5vZGUobG4pO2NvbnN0e3RhZzpjLG5zOmR9PWxuOzA9PT1kJiZybi5pc1ByZVRhZyhjKSYmbW4rKyxybi5pc1ZvaWRUYWcoYyk/b25DbG9zZVRhZyhsbixlKToodm4udW5zaGlmdChsbiksMSE9PWQmJjIhPT1kfHwoYm4uaW5YTUw9ITApKSxsbj1udWxsfWZ1bmN0aW9uIG9uVGV4dChlLGMsZCl7e2NvbnN0IGM9dm5bMF0mJnZuWzBdLnRhZzsic2NyaXB0IiE9PWMmJiJzdHlsZSIhPT1jJiZlLmluY2x1ZGVzKCImIikmJihlPXJuLmRlY29kZUVudGl0aWVzKGUsITEpKX1jb25zdCBoPXZuWzBdfHxhbix2PWguY2hpbGRyZW5baC5jaGlsZHJlbi5sZW5ndGgtMV07diYmMj09PXYudHlwZT8odi5jb250ZW50Kz1lLHNldExvY0VuZCh2LmxvYyxkKSk6aC5jaGlsZHJlbi5wdXNoKHt0eXBlOjIsY29udGVudDplLGxvYzpnZXRMb2MoYyxkKX0pfWZ1bmN0aW9uIG9uQ2xvc2VUYWcoZSxjLGQ9ITEpe3NldExvY0VuZChlLmxvYyxkP2JhY2tUcmFjayhjLDYwKTpmdW5jdGlvbihlLGMpe2xldCBkPWU7Zm9yKDtzbi5jaGFyQ29kZUF0KGQpIT09YyYmZDxzbi5sZW5ndGgtMTspZCsrO3JldHVybiBkfShjLDYyKSsxKSxibi5pblNGQ1Jvb3QmJihlLmNoaWxkcmVuLmxlbmd0aD9lLmlubmVyTG9jLmVuZD1DZSh7fSxlLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTFdLmxvYy5lbmQpOmUuaW5uZXJMb2MuZW5kPUNlKHt9LGUuaW5uZXJMb2Muc3RhcnQpLGUuaW5uZXJMb2Muc291cmNlPWdldFNsaWNlKGUuaW5uZXJMb2Muc3RhcnQub2Zmc2V0LGUuaW5uZXJMb2MuZW5kLm9mZnNldCkpO2NvbnN0e3RhZzpoLG5zOnYsY2hpbGRyZW46Yn09ZTtpZihobnx8KCJzbG90Ij09PWg/ZS50YWdUeXBlPTI6aXNGcmFnbWVudFRlbXBsYXRlKGUpP2UudGFnVHlwZT0zOmZ1bmN0aW9uKHt0YWc6ZSxwcm9wczpjfSl7aWYocm4uaXNDdXN0b21FbGVtZW50KGUpKXJldHVybiExO2lmKCJjb21wb25lbnQiPT09ZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGU+NjQmJmU8OTF9KGUuY2hhckNvZGVBdCgwKSl8fGlzQ29yZUNvbXBvbmVudChlKXx8cm4uaXNCdWlsdEluQ29tcG9uZW50JiZybi5pc0J1aWx0SW5Db21wb25lbnQoZSl8fHJuLmlzTmF0aXZlVGFnJiYhcm4uaXNOYXRpdmVUYWcoZSkpcmV0dXJuITA7Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2NvbnN0IGQ9Y1tlXTtpZig2PT09ZC50eXBlKXtpZigiaXMiPT09ZC5uYW1lJiZkLnZhbHVlKXtpZihkLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgidnVlOiIpKXJldHVybiEwO2lmKGNoZWNrQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfSVNfT05fRUxFTUVOVCIscm4sZC5sb2MpKXJldHVybiEwfX1lbHNlIGlmKCJiaW5kIj09PWQubmFtZSYmaXNTdGF0aWNBcmdPZihkLmFyZywiaXMiKSYmY2hlY2tDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixybixkLmxvYykpcmV0dXJuITB9cmV0dXJuITF9KGUpJiYoZS50YWdUeXBlPTEpKSxibi5pblJDREFUQXx8KGUuY2hpbGRyZW49Y29uZGVuc2VXaGl0ZXNwYWNlKGIpKSwwPT09diYmcm4uaXNJZ25vcmVOZXdsaW5lVGFnKGgpKXtjb25zdCBlPWJbMF07ZSYmMj09PWUudHlwZSYmKGUuY29udGVudD1lLmNvbnRlbnQucmVwbGFjZSgvXlxyP1xuLywiIikpfTA9PT12JiZybi5pc1ByZVRhZyhoKSYmbW4tLSxnbj09PWUmJihobj1ibi5pblZQcmU9ITEsZ249bnVsbCksYm4uaW5YTUwmJjA9PT0odm5bMF0/dm5bMF0ubnM6cm4ubnMpJiYoYm4uaW5YTUw9ITEpO3tjb25zdCBjPWUucHJvcHM7aWYoIWJuLmluU0ZDUm9vdCYmaXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEUiLHJuKSYmInRlbXBsYXRlIj09PWUudGFnJiYhaXNGcmFnbWVudFRlbXBsYXRlKGUpKXtjb25zdCBjPXZuWzBdfHxhbixkPWMuY2hpbGRyZW4uaW5kZXhPZihlKTtjLmNoaWxkcmVuLnNwbGljZShkLDEsLi4uZS5jaGlsZHJlbil9Y29uc3QgZD1jLmZpbmQoZT0+Nj09PWUudHlwZSYmImlubGluZS10ZW1wbGF0ZSI9PT1lLm5hbWUpO2QmJmNoZWNrQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFIixybixkLmxvYykmJmUuY2hpbGRyZW4ubGVuZ3RoJiYoZC52YWx1ZT17dHlwZToyLGNvbnRlbnQ6Z2V0U2xpY2UoZS5jaGlsZHJlblswXS5sb2Muc3RhcnQub2Zmc2V0LGUuY2hpbGRyZW5bZS5jaGlsZHJlbi5sZW5ndGgtMV0ubG9jLmVuZC5vZmZzZXQpLGxvYzpkLmxvY30pfX1mdW5jdGlvbiBiYWNrVHJhY2soZSxjKXtsZXQgZD1lO2Zvcig7c24uY2hhckNvZGVBdChkKSE9PWMmJmQ+PTA7KWQtLTtyZXR1cm4gZH1jb25zdCBTbj1uZXcgU2V0KFsiaWYiLCJlbHNlIiwiZWxzZS1pZiIsImZvciIsInNsb3QiXSk7ZnVuY3Rpb24gaXNGcmFnbWVudFRlbXBsYXRlKHt0YWc6ZSxwcm9wczpjfSl7aWYoInRlbXBsYXRlIj09PWUpZm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspaWYoNz09PWNbZV0udHlwZSYmU24uaGFzKGNbZV0ubmFtZSkpcmV0dXJuITA7cmV0dXJuITF9Y29uc3QgRW49L1xyXG4vZztmdW5jdGlvbiBjb25kZW5zZVdoaXRlc3BhY2UoZSl7Y29uc3QgYz0icHJlc2VydmUiIT09cm4ud2hpdGVzcGFjZTtsZXQgZD0hMTtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3Qgdj1lW2hdO2lmKDI9PT12LnR5cGUpaWYobW4pdi5jb250ZW50PXYuY29udGVudC5yZXBsYWNlKEVuLCJcbiIpO2Vsc2UgaWYoaXNBbGxXaGl0ZXNwYWNlKHYuY29udGVudCkpe2NvbnN0IGI9ZVtoLTFdJiZlW2gtMV0udHlwZSx5PWVbaCsxXSYmZVtoKzFdLnR5cGU7IWJ8fCF5fHxjJiYoMz09PWImJigzPT09eXx8MT09PXkpfHwxPT09YiYmKDM9PT15fHwxPT09eSYmaGFzTmV3bGluZUNoYXIodi5jb250ZW50KSkpPyhkPSEwLGVbaF09bnVsbCk6di5jb250ZW50PSIgIn1lbHNlIGMmJih2LmNvbnRlbnQ9Y29uZGVuc2Uodi5jb250ZW50KSl9cmV0dXJuIGQ/ZS5maWx0ZXIoQm9vbGVhbik6ZX1mdW5jdGlvbiBoYXNOZXdsaW5lQ2hhcihlKXtmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKyl7Y29uc3QgZD1lLmNoYXJDb2RlQXQoYyk7aWYoMTA9PT1kfHwxMz09PWQpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gY29uZGVuc2UoZSl7bGV0IGM9IiIsZD0hMTtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKylpc1doaXRlc3BhY2UoZS5jaGFyQ29kZUF0KGgpKT9kfHwoYys9IiAiLGQ9ITApOihjKz1lW2hdLGQ9ITEpO3JldHVybiBjfWZ1bmN0aW9uIGFkZE5vZGUoZSl7KHZuWzBdfHxhbikuY2hpbGRyZW4ucHVzaChlKX1mdW5jdGlvbiBnZXRMb2MoZSxjKXtyZXR1cm57c3RhcnQ6Ym4uZ2V0UG9zKGUpLGVuZDpudWxsPT1jP2M6Ym4uZ2V0UG9zKGMpLHNvdXJjZTpudWxsPT1jP2M6Z2V0U2xpY2UoZSxjKX19ZnVuY3Rpb24gc2V0TG9jRW5kKGUsYyl7ZS5lbmQ9Ym4uZ2V0UG9zKGMpLGUuc291cmNlPWdldFNsaWNlKGUuc3RhcnQub2Zmc2V0LGMpfWZ1bmN0aW9uIGRpclRvQXR0cihlKXtjb25zdCBjPXt0eXBlOjYsbmFtZTplLnJhd05hbWUsbmFtZUxvYzpnZXRMb2MoZS5sb2Muc3RhcnQub2Zmc2V0LGUubG9jLnN0YXJ0Lm9mZnNldCtlLnJhd05hbWUubGVuZ3RoKSx2YWx1ZTp2b2lkIDAsbG9jOmUubG9jfTtpZihlLmV4cCl7Y29uc3QgZD1lLmV4cC5sb2M7ZC5lbmQub2Zmc2V0PGUubG9jLmVuZC5vZmZzZXQmJihkLnN0YXJ0Lm9mZnNldC0tLGQuc3RhcnQuY29sdW1uLS0sZC5lbmQub2Zmc2V0KyssZC5lbmQuY29sdW1uKyspLGMudmFsdWU9e3R5cGU6Mixjb250ZW50OmUuZXhwLmNvbnRlbnQsbG9jOmR9fXJldHVybiBjfWZ1bmN0aW9uIGNyZWF0ZUV4cChlLGM9ITEsZCxoPTAsdj0wKXtyZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihlLGMsZCxoKX1mdW5jdGlvbiBlbWl0RXJyb3IoZSxjLGQpe3JuLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihlLGdldExvYyhjLGMpKSl9ZnVuY3Rpb24gYmFzZVBhcnNlKGUsYyl7aWYoYm4ucmVzZXQoKSxsbj1udWxsLGNuPW51bGwsdW49IiIsZG49LTEscG49LTEsdm4ubGVuZ3RoPTAsc249ZSxybj1DZSh7fSxubiksYyl7bGV0IGU7Zm9yKGUgaW4gYyludWxsIT1jW2VdJiYocm5bZV09Y1tlXSl9Ym4ubW9kZT0iaHRtbCI9PT1ybi5wYXJzZU1vZGU/MToic2ZjIj09PXJuLnBhcnNlTW9kZT8yOjAsYm4uaW5YTUw9MT09PXJuLm5zfHwyPT09cm4ubnM7Y29uc3QgZD1jJiZjLmRlbGltaXRlcnM7ZCYmKGJuLmRlbGltaXRlck9wZW49dG9DaGFyQ29kZXMoZFswXSksYm4uZGVsaW1pdGVyQ2xvc2U9dG9DaGFyQ29kZXMoZFsxXSkpO2NvbnN0IGg9YW49Y3JlYXRlUm9vdChbXSxlKTtyZXR1cm4gYm4ucGFyc2Uoc24pLGgubG9jPWdldExvYygwLGUubGVuZ3RoKSxoLmNoaWxkcmVuPWNvbmRlbnNlV2hpdGVzcGFjZShoLmNoaWxkcmVuKSxhbj1udWxsLGh9ZnVuY3Rpb24gY2FjaGVTdGF0aWMoZSxjKXt3YWxrKGUsdm9pZCAwLGMsISFnZXRTaW5nbGVFbGVtZW50Um9vdChlKSl9ZnVuY3Rpb24gZ2V0U2luZ2xlRWxlbWVudFJvb3QoZSl7Y29uc3QgYz1lLmNoaWxkcmVuLmZpbHRlcihlPT4zIT09ZS50eXBlKTtyZXR1cm4gMSE9PWMubGVuZ3RofHwxIT09Y1swXS50eXBlfHxpc1Nsb3RPdXRsZXQoY1swXSk/bnVsbDpjWzBdfWZ1bmN0aW9uIHdhbGsoZSxjLGQsaD0hMSx2PSExKXtjb25zdHtjaGlsZHJlbjpifT1lLHk9W107Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspe2NvbnN0IEU9YltjXTtpZigxPT09RS50eXBlJiYwPT09RS50YWdUeXBlKXtjb25zdCBlPWg/MDpnZXRDb25zdGFudFR5cGUoRSxkKTtpZihlPjApe2lmKGU+PTIpe0UuY29kZWdlbk5vZGUucGF0Y2hGbGFnPS0xLHkucHVzaChFKTtjb250aW51ZX19ZWxzZXtjb25zdCBlPUUuY29kZWdlbk5vZGU7aWYoMTM9PT1lLnR5cGUpe2NvbnN0IGM9ZS5wYXRjaEZsYWc7aWYoKHZvaWQgMD09PWN8fDUxMj09PWN8fDE9PT1jKSYmZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUoRSxkKT49Mil7Y29uc3QgYz1nZXROb2RlUHJvcHMoRSk7YyYmKGUucHJvcHM9ZC5ob2lzdChjKSl9ZS5keW5hbWljUHJvcHMmJihlLmR5bmFtaWNQcm9wcz1kLmhvaXN0KGUuZHluYW1pY1Byb3BzKSl9fX1lbHNlIGlmKDEyPT09RS50eXBlKXtpZigoaD8wOmdldENvbnN0YW50VHlwZShFLGQpKT49Mil7MTQ9PT1FLmNvZGVnZW5Ob2RlLnR5cGUmJkUuY29kZWdlbk5vZGUuYXJndW1lbnRzLmxlbmd0aD4wJiZFLmNvZGVnZW5Ob2RlLmFyZ3VtZW50cy5wdXNoKCItMSIpLHkucHVzaChFKTtjb250aW51ZX19aWYoMT09PUUudHlwZSl7Y29uc3QgYz0xPT09RS50YWdUeXBlO2MmJmQuc2NvcGVzLnZTbG90Kyssd2FsayhFLGUsZCwhMSx2KSxjJiZkLnNjb3Blcy52U2xvdC0tfWVsc2UgaWYoMTE9PT1FLnR5cGUpd2FsayhFLGUsZCwxPT09RS5jaGlsZHJlbi5sZW5ndGgsITApO2Vsc2UgaWYoOT09PUUudHlwZSlmb3IobGV0IGM9MDtjPEUuYnJhbmNoZXMubGVuZ3RoO2MrKyl3YWxrKEUuYnJhbmNoZXNbY10sZSxkLDE9PT1FLmJyYW5jaGVzW2NdLmNoaWxkcmVuLmxlbmd0aCx2KX1sZXQgRT0hMTtpZih5Lmxlbmd0aD09PWIubGVuZ3RoJiYxPT09ZS50eXBlKWlmKDA9PT1lLnRhZ1R5cGUmJmUuY29kZWdlbk5vZGUmJjEzPT09ZS5jb2RlZ2VuTm9kZS50eXBlJiZEZShlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSllLmNvZGVnZW5Ob2RlLmNoaWxkcmVuPWdldENhY2hlRXhwcmVzc2lvbihjcmVhdGVBcnJheUV4cHJlc3Npb24oZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbikpLEU9ITA7ZWxzZSBpZigxPT09ZS50YWdUeXBlJiZlLmNvZGVnZW5Ob2RlJiYxMz09PWUuY29kZWdlbk5vZGUudHlwZSYmZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbiYmIURlKGUuY29kZWdlbk5vZGUuY2hpbGRyZW4pJiYxNT09PWUuY29kZWdlbk5vZGUuY2hpbGRyZW4udHlwZSl7Y29uc3QgYz1nZXRTbG90Tm9kZShlLmNvZGVnZW5Ob2RlLCJkZWZhdWx0Iik7YyYmKGMucmV0dXJucz1nZXRDYWNoZUV4cHJlc3Npb24oY3JlYXRlQXJyYXlFeHByZXNzaW9uKGMucmV0dXJucykpLEU9ITApfWVsc2UgaWYoMz09PWUudGFnVHlwZSYmYyYmMT09PWMudHlwZSYmMT09PWMudGFnVHlwZSYmYy5jb2RlZ2VuTm9kZSYmMTM9PT1jLmNvZGVnZW5Ob2RlLnR5cGUmJmMuY29kZWdlbk5vZGUuY2hpbGRyZW4mJiFEZShjLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSYmMTU9PT1jLmNvZGVnZW5Ob2RlLmNoaWxkcmVuLnR5cGUpe2NvbnN0IGQ9ZmluZERpcihlLCJzbG90IiwhMCksaD1kJiZkLmFyZyYmZ2V0U2xvdE5vZGUoYy5jb2RlZ2VuTm9kZSxkLmFyZyk7aCYmKGgucmV0dXJucz1nZXRDYWNoZUV4cHJlc3Npb24oY3JlYXRlQXJyYXlFeHByZXNzaW9uKGgucmV0dXJucykpLEU9ITApfWlmKCFFKWZvcihjb25zdCBlIG9mIHkpZS5jb2RlZ2VuTm9kZT1kLmNhY2hlKGUuY29kZWdlbk5vZGUpO2Z1bmN0aW9uIGdldENhY2hlRXhwcmVzc2lvbihlKXtjb25zdCBjPWQuY2FjaGUoZSk7cmV0dXJuIGMubmVlZEFycmF5U3ByZWFkPSEwLGN9ZnVuY3Rpb24gZ2V0U2xvdE5vZGUoZSxjKXtpZihlLmNoaWxkcmVuJiYhRGUoZS5jaGlsZHJlbikmJjE1PT09ZS5jaGlsZHJlbi50eXBlKXtjb25zdCBkPWUuY2hpbGRyZW4ucHJvcGVydGllcy5maW5kKGU9PmUua2V5PT09Y3x8ZS5rZXkuY29udGVudD09PWMpO3JldHVybiBkJiZkLnZhbHVlfX15Lmxlbmd0aCYmZC50cmFuc2Zvcm1Ib2lzdCYmZC50cmFuc2Zvcm1Ib2lzdChiLGQsZSl9ZnVuY3Rpb24gZ2V0Q29uc3RhbnRUeXBlKGUsYyl7Y29uc3R7Y29uc3RhbnRDYWNoZTpkfT1jO3N3aXRjaChlLnR5cGUpe2Nhc2UgMTppZigwIT09ZS50YWdUeXBlKXJldHVybiAwO2NvbnN0IGg9ZC5nZXQoZSk7aWYodm9pZCAwIT09aClyZXR1cm4gaDtjb25zdCB2PWUuY29kZWdlbk5vZGU7aWYoMTMhPT12LnR5cGUpcmV0dXJuIDA7aWYodi5pc0Jsb2NrJiYic3ZnIiE9PWUudGFnJiYiZm9yZWlnbk9iamVjdCIhPT1lLnRhZyYmIm1hdGgiIT09ZS50YWcpcmV0dXJuIDA7aWYodm9pZCAwPT09di5wYXRjaEZsYWcpe2xldCBoPTM7Y29uc3QgYj1nZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShlLGMpO2lmKDA9PT1iKXJldHVybiBkLnNldChlLDApLDA7YjxoJiYoaD1iKTtmb3IobGV0IHY9MDt2PGUuY2hpbGRyZW4ubGVuZ3RoO3YrKyl7Y29uc3QgYj1nZXRDb25zdGFudFR5cGUoZS5jaGlsZHJlblt2XSxjKTtpZigwPT09YilyZXR1cm4gZC5zZXQoZSwwKSwwO2I8aCYmKGg9Yil9aWYoaD4xKWZvcihsZXQgdj0wO3Y8ZS5wcm9wcy5sZW5ndGg7disrKXtjb25zdCBiPWUucHJvcHNbdl07aWYoNz09PWIudHlwZSYmImJpbmQiPT09Yi5uYW1lJiZiLmV4cCl7Y29uc3Qgdj1nZXRDb25zdGFudFR5cGUoYi5leHAsYyk7aWYoMD09PXYpcmV0dXJuIGQuc2V0KGUsMCksMDt2PGgmJihoPXYpfX1pZih2LmlzQmxvY2spe2ZvcihsZXQgYz0wO2M8ZS5wcm9wcy5sZW5ndGg7YysrKXtpZig3PT09ZS5wcm9wc1tjXS50eXBlKXJldHVybiBkLnNldChlLDApLDB9Yy5yZW1vdmVIZWxwZXIoWmUpLGMucmVtb3ZlSGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoYy5pblNTUix2LmlzQ29tcG9uZW50KSksdi5pc0Jsb2NrPSExLGMuaGVscGVyKGdldFZOb2RlSGVscGVyKGMuaW5TU1Isdi5pc0NvbXBvbmVudCkpfXJldHVybiBkLnNldChlLGgpLGh9cmV0dXJuIGQuc2V0KGUsMCksMDtjYXNlIDI6Y2FzZSAzOnJldHVybiAzO2Nhc2UgOTpjYXNlIDExOmNhc2UgMTA6ZGVmYXVsdDpyZXR1cm4gMDtjYXNlIDU6Y2FzZSAxMjpyZXR1cm4gZ2V0Q29uc3RhbnRUeXBlKGUuY29udGVudCxjKTtjYXNlIDQ6cmV0dXJuIGUuY29uc3RUeXBlO2Nhc2UgODpsZXQgYj0zO2ZvcihsZXQgZD0wO2Q8ZS5jaGlsZHJlbi5sZW5ndGg7ZCsrKXtjb25zdCBoPWUuY2hpbGRyZW5bZF07aWYoX2UoaCl8fE5lKGgpKWNvbnRpbnVlO2NvbnN0IHY9Z2V0Q29uc3RhbnRUeXBlKGgsYyk7aWYoMD09PXYpcmV0dXJuIDA7djxiJiYoYj12KX1yZXR1cm4gYjtjYXNlIDIwOnJldHVybiAyfX1jb25zdCB3bj1uZXcgU2V0KFtTdCxFdCx3dCxrdF0pO2Z1bmN0aW9uIGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbChlLGMpe2lmKDE0PT09ZS50eXBlJiYhX2UoZS5jYWxsZWUpJiZ3bi5oYXMoZS5jYWxsZWUpKXtjb25zdCBkPWUuYXJndW1lbnRzWzBdO2lmKDQ9PT1kLnR5cGUpcmV0dXJuIGdldENvbnN0YW50VHlwZShkLGMpO2lmKDE0PT09ZC50eXBlKXJldHVybiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwoZCxjKX1yZXR1cm4gMH1mdW5jdGlvbiBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShlLGMpe2xldCBkPTM7Y29uc3QgaD1nZXROb2RlUHJvcHMoZSk7aWYoaCYmMTU9PT1oLnR5cGUpe2NvbnN0e3Byb3BlcnRpZXM6ZX09aDtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3R7a2V5OnYsdmFsdWU6Yn09ZVtoXSx5PWdldENvbnN0YW50VHlwZSh2LGMpO2lmKDA9PT15KXJldHVybiB5O2xldCBFO2lmKHk8ZCYmKGQ9eSksRT00PT09Yi50eXBlP2dldENvbnN0YW50VHlwZShiLGMpOjE0PT09Yi50eXBlP2dldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbChiLGMpOjAsMD09PUUpcmV0dXJuIEU7RTxkJiYoZD1FKX19cmV0dXJuIGR9ZnVuY3Rpb24gZ2V0Tm9kZVByb3BzKGUpe2NvbnN0IGM9ZS5jb2RlZ2VuTm9kZTtpZigxMz09PWMudHlwZSlyZXR1cm4gYy5wcm9wc31mdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0KGUse2ZpbGVuYW1lOmM9IiIscHJlZml4SWRlbnRpZmllcnM6ZD0hMSxob2lzdFN0YXRpYzpoPSExLGhtcjp2PSExLGNhY2hlSGFuZGxlcnM6Yj0hMSxub2RlVHJhbnNmb3Jtczp5PVtdLGRpcmVjdGl2ZVRyYW5zZm9ybXM6RT17fSx0cmFuc2Zvcm1Ib2lzdDprPW51bGwsaXNCdWlsdEluQ29tcG9uZW50Ol89a2UsaXNDdXN0b21FbGVtZW50OlQ9a2UsZXhwcmVzc2lvblBsdWdpbnM6Tj1bXSxzY29wZUlkOk89bnVsbCxzbG90dGVkOlI9ITAsc3NyOk09ITEsaW5TU1I6RD0hMSxzc3JDc3NWYXJzOkw9IiIsYmluZGluZ01ldGFkYXRhOiQ9UmUsaW5saW5lOkY9ITEsaXNUUzpWPSExLG9uRXJyb3I6cT1kZWZhdWx0T25FcnJvcixvbldhcm46VT1kZWZhdWx0T25XYXJuLGNvbXBhdENvbmZpZzpXfSl7Y29uc3QgSz1jLnJlcGxhY2UoL1w/LiokLywiIikubWF0Y2goLyhbXi9cXF0rKVwuXHcrJC8pLFk9e2ZpbGVuYW1lOmMsc2VsZk5hbWU6SyYmT2UoSWUoS1sxXSkpLHByZWZpeElkZW50aWZpZXJzOmQsaG9pc3RTdGF0aWM6aCxobXI6dixjYWNoZUhhbmRsZXJzOmIsbm9kZVRyYW5zZm9ybXM6eSxkaXJlY3RpdmVUcmFuc2Zvcm1zOkUsdHJhbnNmb3JtSG9pc3Q6ayxpc0J1aWx0SW5Db21wb25lbnQ6Xyxpc0N1c3RvbUVsZW1lbnQ6VCxleHByZXNzaW9uUGx1Z2luczpOLHNjb3BlSWQ6TyxzbG90dGVkOlIsc3NyOk0saW5TU1I6RCxzc3JDc3NWYXJzOkwsYmluZGluZ01ldGFkYXRhOiQsaW5saW5lOkYsaXNUUzpWLG9uRXJyb3I6cSxvbldhcm46VSxjb21wYXRDb25maWc6Vyxyb290OmUsaGVscGVyczpuZXcgTWFwLGNvbXBvbmVudHM6bmV3IFNldCxkaXJlY3RpdmVzOm5ldyBTZXQsaG9pc3RzOltdLGltcG9ydHM6W10sY2FjaGVkOltdLGNvbnN0YW50Q2FjaGU6bmV3IFdlYWtNYXAsdGVtcHM6MCxpZGVudGlmaWVyczpPYmplY3QuY3JlYXRlKG51bGwpLHNjb3Blczp7dkZvcjowLHZTbG90OjAsdlByZTowLHZPbmNlOjB9LHBhcmVudDpudWxsLGdyYW5kUGFyZW50Om51bGwsY3VycmVudE5vZGU6ZSxjaGlsZEluZGV4OjAsaW5WT25jZTohMSxoZWxwZXIoZSl7Y29uc3QgYz1ZLmhlbHBlcnMuZ2V0KGUpfHwwO3JldHVybiBZLmhlbHBlcnMuc2V0KGUsYysxKSxlfSxyZW1vdmVIZWxwZXIoZSl7Y29uc3QgYz1ZLmhlbHBlcnMuZ2V0KGUpO2lmKGMpe2NvbnN0IGQ9Yy0xO2Q/WS5oZWxwZXJzLnNldChlLGQpOlkuaGVscGVycy5kZWxldGUoZSl9fSxoZWxwZXJTdHJpbmc6ZT0+YF8ke0x0W1kuaGVscGVyKGUpXX1gLHJlcGxhY2VOb2RlKGUpe1kucGFyZW50LmNoaWxkcmVuW1kuY2hpbGRJbmRleF09WS5jdXJyZW50Tm9kZT1lfSxyZW1vdmVOb2RlKGUpe2NvbnN0IGM9WS5wYXJlbnQuY2hpbGRyZW4sZD1lP2MuaW5kZXhPZihlKTpZLmN1cnJlbnROb2RlP1kuY2hpbGRJbmRleDotMTtlJiZlIT09WS5jdXJyZW50Tm9kZT9ZLmNoaWxkSW5kZXg+ZCYmKFkuY2hpbGRJbmRleC0tLFkub25Ob2RlUmVtb3ZlZCgpKTooWS5jdXJyZW50Tm9kZT1udWxsLFkub25Ob2RlUmVtb3ZlZCgpKSxZLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoZCwxKX0sb25Ob2RlUmVtb3ZlZDprZSxhZGRJZGVudGlmaWVycyhlKXt9LHJlbW92ZUlkZW50aWZpZXJzKGUpe30saG9pc3QoZSl7X2UoZSkmJihlPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZSkpLFkuaG9pc3RzLnB1c2goZSk7Y29uc3QgYz1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfaG9pc3RlZF8ke1kuaG9pc3RzLmxlbmd0aH1gLCExLGUubG9jLDIpO3JldHVybiBjLmhvaXN0ZWQ9ZSxjfSxjYWNoZShlLGM9ITEsZD0hMSl7Y29uc3QgaD1jcmVhdGVDYWNoZUV4cHJlc3Npb24oWS5jYWNoZWQubGVuZ3RoLGUsYyxkKTtyZXR1cm4gWS5jYWNoZWQucHVzaChoKSxofX07cmV0dXJuIFkuZmlsdGVycz1uZXcgU2V0LFl9ZnVuY3Rpb24gdHJhbnNmb3JtKGUsYyl7Y29uc3QgZD1jcmVhdGVUcmFuc2Zvcm1Db250ZXh0KGUsYyk7dHJhdmVyc2VOb2RlKGUsZCksYy5ob2lzdFN0YXRpYyYmY2FjaGVTdGF0aWMoZSxkKSxjLnNzcnx8ZnVuY3Rpb24oZSxjKXtjb25zdHtoZWxwZXI6ZH09Yyx7Y2hpbGRyZW46aH09ZTtpZigxPT09aC5sZW5ndGgpe2NvbnN0IGQ9Z2V0U2luZ2xlRWxlbWVudFJvb3QoZSk7aWYoZCYmZC5jb2RlZ2VuTm9kZSl7Y29uc3QgaD1kLmNvZGVnZW5Ob2RlOzEzPT09aC50eXBlJiZjb252ZXJ0VG9CbG9jayhoLGMpLGUuY29kZWdlbk5vZGU9aH1lbHNlIGUuY29kZWdlbk5vZGU9aFswXX1lbHNlIGlmKGgubGVuZ3RoPjEpe2xldCBoPTY0O2UuY29kZWdlbk5vZGU9Y3JlYXRlVk5vZGVDYWxsKGMsZChYZSksdm9pZCAwLGUuY2hpbGRyZW4saCx2b2lkIDAsdm9pZCAwLCEwLHZvaWQgMCwhMSl9fShlLGQpLGUuaGVscGVycz1uZXcgU2V0KFsuLi5kLmhlbHBlcnMua2V5cygpXSksZS5jb21wb25lbnRzPVsuLi5kLmNvbXBvbmVudHNdLGUuZGlyZWN0aXZlcz1bLi4uZC5kaXJlY3RpdmVzXSxlLmltcG9ydHM9ZC5pbXBvcnRzLGUuaG9pc3RzPWQuaG9pc3RzLGUudGVtcHM9ZC50ZW1wcyxlLmNhY2hlZD1kLmNhY2hlZCxlLnRyYW5zZm9ybWVkPSEwLGUuZmlsdGVycz1bLi4uZC5maWx0ZXJzXX1mdW5jdGlvbiB0cmF2ZXJzZU5vZGUoZSxjKXtjLmN1cnJlbnROb2RlPWU7Y29uc3R7bm9kZVRyYW5zZm9ybXM6ZH09YyxoPVtdO2ZvcihsZXQgdj0wO3Y8ZC5sZW5ndGg7disrKXtjb25zdCBiPWRbdl0oZSxjKTtpZihiJiYoRGUoYik/aC5wdXNoKC4uLmIpOmgucHVzaChiKSksIWMuY3VycmVudE5vZGUpcmV0dXJuO2U9Yy5jdXJyZW50Tm9kZX1zd2l0Y2goZS50eXBlKXtjYXNlIDM6Yy5zc3J8fGMuaGVscGVyKGl0KTticmVhaztjYXNlIDU6Yy5zc3J8fGMuaGVscGVyKHl0KTticmVhaztjYXNlIDk6Zm9yKGxldCBkPTA7ZDxlLmJyYW5jaGVzLmxlbmd0aDtkKyspdHJhdmVyc2VOb2RlKGUuYnJhbmNoZXNbZF0sYyk7YnJlYWs7Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTpjYXNlIDA6IWZ1bmN0aW9uKGUsYyl7bGV0IGQ9MDtjb25zdCBub2RlUmVtb3ZlZD0oKT0+e2QtLX07Zm9yKDtkPGUuY2hpbGRyZW4ubGVuZ3RoO2QrKyl7Y29uc3QgaD1lLmNoaWxkcmVuW2RdO19lKGgpfHwoYy5ncmFuZFBhcmVudD1jLnBhcmVudCxjLnBhcmVudD1lLGMuY2hpbGRJbmRleD1kLGMub25Ob2RlUmVtb3ZlZD1ub2RlUmVtb3ZlZCx0cmF2ZXJzZU5vZGUoaCxjKSl9fShlLGMpfWMuY3VycmVudE5vZGU9ZTtsZXQgdj1oLmxlbmd0aDtmb3IoO3YtLTspaFt2XSgpfWZ1bmN0aW9uIGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oZSxjKXtjb25zdCBkPV9lKGUpP2M9PmM9PT1lOmM9PmUudGVzdChjKTtyZXR1cm4oZSxoKT0+e2lmKDE9PT1lLnR5cGUpe2NvbnN0e3Byb3BzOnZ9PWU7aWYoMz09PWUudGFnVHlwZSYmdi5zb21lKGlzVlNsb3QpKXJldHVybjtjb25zdCBiPVtdO2ZvcihsZXQgeT0wO3k8di5sZW5ndGg7eSsrKXtjb25zdCBFPXZbeV07aWYoNz09PUUudHlwZSYmZChFLm5hbWUpKXt2LnNwbGljZSh5LDEpLHktLTtjb25zdCBkPWMoZSxFLGgpO2QmJmIucHVzaChkKX19cmV0dXJuIGJ9fX1jb25zdCBrbj0iLypAX19QVVJFX18qLyIsYWxpYXNIZWxwZXI9ZT0+YCR7THRbZV19OiBfJHtMdFtlXX1gO2Z1bmN0aW9uIGdlbmVyYXRlKGUsYz17fSl7Y29uc3QgZD1mdW5jdGlvbihlLHttb2RlOmM9ImZ1bmN0aW9uIixwcmVmaXhJZGVudGlmaWVyczpkPSJtb2R1bGUiPT09Yyxzb3VyY2VNYXA6aD0hMSxmaWxlbmFtZTp2PSJ0ZW1wbGF0ZS52dWUuaHRtbCIsc2NvcGVJZDpiPW51bGwsb3B0aW1pemVJbXBvcnRzOnk9ITEscnVudGltZUdsb2JhbE5hbWU6RT0iVnVlIixydW50aW1lTW9kdWxlTmFtZTprPSJ2dWUiLHNzclJ1bnRpbWVNb2R1bGVOYW1lOl89InZ1ZS9zZXJ2ZXItcmVuZGVyZXIiLHNzcjpUPSExLGlzVFM6Tj0hMSxpblNTUjpPPSExfSl7Y29uc3QgUj17bW9kZTpjLHByZWZpeElkZW50aWZpZXJzOmQsc291cmNlTWFwOmgsZmlsZW5hbWU6dixzY29wZUlkOmIsb3B0aW1pemVJbXBvcnRzOnkscnVudGltZUdsb2JhbE5hbWU6RSxydW50aW1lTW9kdWxlTmFtZTprLHNzclJ1bnRpbWVNb2R1bGVOYW1lOl8sc3NyOlQsaXNUUzpOLGluU1NSOk8sc291cmNlOmUuc291cmNlLGNvZGU6IiIsY29sdW1uOjEsbGluZToxLG9mZnNldDowLGluZGVudExldmVsOjAscHVyZTohMSxtYXA6dm9pZCAwLGhlbHBlcjplPT5gXyR7THRbZV19YCxwdXNoKGUsYz0tMixkKXtSLmNvZGUrPWV9LGluZGVudCgpe25ld2xpbmUoKytSLmluZGVudExldmVsKX0sZGVpbmRlbnQoZT0hMSl7ZT8tLVIuaW5kZW50TGV2ZWw6bmV3bGluZSgtLVIuaW5kZW50TGV2ZWwpfSxuZXdsaW5lKCl7bmV3bGluZShSLmluZGVudExldmVsKX19O2Z1bmN0aW9uIG5ld2xpbmUoZSl7Ui5wdXNoKCJcbiIrIiAgIi5yZXBlYXQoZSksMCl9cmV0dXJuIFJ9KGUsYyk7Yy5vbkNvbnRleHRDcmVhdGVkJiZjLm9uQ29udGV4dENyZWF0ZWQoZCk7Y29uc3R7bW9kZTpoLHB1c2g6dixwcmVmaXhJZGVudGlmaWVyczpiLGluZGVudDp5LGRlaW5kZW50OkUsbmV3bGluZTprLHNjb3BlSWQ6Xyxzc3I6VH09ZCxOPUFycmF5LmZyb20oZS5oZWxwZXJzKSxPPU4ubGVuZ3RoPjAsUj0hYiYmIm1vZHVsZSIhPT1oOyFmdW5jdGlvbihlLGMpe2NvbnN0e3NzcjpkLHByZWZpeElkZW50aWZpZXJzOmgscHVzaDp2LG5ld2xpbmU6YixydW50aW1lTW9kdWxlTmFtZTp5LHJ1bnRpbWVHbG9iYWxOYW1lOkUsc3NyUnVudGltZU1vZHVsZU5hbWU6a309YyxfPUUsVD1BcnJheS5mcm9tKGUuaGVscGVycyk7aWYoVC5sZW5ndGg+MCYmKHYoYGNvbnN0IF9WdWUgPSAke199XG5gLC0xKSxlLmhvaXN0cy5sZW5ndGgpKXt2KGBjb25zdCB7ICR7W290LHJ0LGl0LHN0LGN0XS5maWx0ZXIoZT0+VC5pbmNsdWRlcyhlKSkubWFwKGFsaWFzSGVscGVyKS5qb2luKCIsICIpfSB9ID0gX1Z1ZVxuYCwtMSl9KGZ1bmN0aW9uKGUsYyl7aWYoIWUubGVuZ3RoKXJldHVybjtjLnB1cmU9ITA7Y29uc3R7cHVzaDpkLG5ld2xpbmU6aH09YztoKCk7Zm9yKGxldCB2PTA7djxlLmxlbmd0aDt2Kyspe2NvbnN0IGI9ZVt2XTtiJiYoZChgY29uc3QgX2hvaXN0ZWRfJHt2KzF9ID0gYCksZ2VuTm9kZShiLGMpLGgoKSl9Yy5wdXJlPSExfSkoZS5ob2lzdHMsYyksYigpLHYoInJldHVybiAiKX0oZSxkKTtpZih2KGBmdW5jdGlvbiAke1Q/InNzclJlbmRlciI6InJlbmRlciJ9KCR7KFQ/WyJfY3R4IiwiX3B1c2giLCJfcGFyZW50IiwiX2F0dHJzIl06WyJfY3R4IiwiX2NhY2hlIl0pLmpvaW4oIiwgIil9KSB7YCkseSgpLFImJih2KCJ3aXRoIChfY3R4KSB7IikseSgpLE8mJih2KGBjb25zdCB7ICR7Ti5tYXAoYWxpYXNIZWxwZXIpLmpvaW4oIiwgIil9IH0gPSBfVnVlXG5gLC0xKSxrKCkpKSxlLmNvbXBvbmVudHMubGVuZ3RoJiYoZ2VuQXNzZXRzKGUuY29tcG9uZW50cywiY29tcG9uZW50IixkKSwoZS5kaXJlY3RpdmVzLmxlbmd0aHx8ZS50ZW1wcz4wKSYmaygpKSxlLmRpcmVjdGl2ZXMubGVuZ3RoJiYoZ2VuQXNzZXRzKGUuZGlyZWN0aXZlcywiZGlyZWN0aXZlIixkKSxlLnRlbXBzPjAmJmsoKSksZS5maWx0ZXJzJiZlLmZpbHRlcnMubGVuZ3RoJiYoaygpLGdlbkFzc2V0cyhlLmZpbHRlcnMsImZpbHRlciIsZCksaygpKSxlLnRlbXBzPjApe3YoImxldCAiKTtmb3IobGV0IGM9MDtjPGUudGVtcHM7YysrKXYoYCR7Yz4wPyIsICI6IiJ9X3RlbXAke2N9YCl9cmV0dXJuKGUuY29tcG9uZW50cy5sZW5ndGh8fGUuZGlyZWN0aXZlcy5sZW5ndGh8fGUudGVtcHMpJiYodigiXG4iLDApLGsoKSksVHx8digicmV0dXJuICIpLGUuY29kZWdlbk5vZGU/Z2VuTm9kZShlLmNvZGVnZW5Ob2RlLGQpOnYoIm51bGwiKSxSJiYoRSgpLHYoIn0iKSksRSgpLHYoIn0iKSx7YXN0OmUsY29kZTpkLmNvZGUscHJlYW1ibGU6IiIsbWFwOmQubWFwP2QubWFwLnRvSlNPTigpOnZvaWQgMH19ZnVuY3Rpb24gZ2VuQXNzZXRzKGUsYyx7aGVscGVyOmQscHVzaDpoLG5ld2xpbmU6dixpc1RTOmJ9KXtjb25zdCB5PWQoImZpbHRlciI9PT1jP2Z0OiJjb21wb25lbnQiPT09Yz91dDpwdCk7Zm9yKGxldCBkPTA7ZDxlLmxlbmd0aDtkKyspe2xldCBFPWVbZF07Y29uc3Qgaz1FLmVuZHNXaXRoKCJfX3NlbGYiKTtrJiYoRT1FLnNsaWNlKDAsLTYpKSxoKGBjb25zdCAke3RvVmFsaWRBc3NldElkKEUsYyl9ID0gJHt5fSgke0pTT04uc3RyaW5naWZ5KEUpfSR7az8iLCB0cnVlIjoiIn0pJHtiPyIhIjoiIn1gKSxkPGUubGVuZ3RoLTEmJnYoKX19ZnVuY3Rpb24gZ2VuTm9kZUxpc3RBc0FycmF5KGUsYyl7Y29uc3QgZD1lLmxlbmd0aD4zfHwhMTtjLnB1c2goIlsiKSxkJiZjLmluZGVudCgpLGdlbk5vZGVMaXN0KGUsYyxkKSxkJiZjLmRlaW5kZW50KCksYy5wdXNoKCJdIil9ZnVuY3Rpb24gZ2VuTm9kZUxpc3QoZSxjLGQ9ITEsaD0hMCl7Y29uc3R7cHVzaDp2LG5ld2xpbmU6Yn09Yztmb3IobGV0IHk9MDt5PGUubGVuZ3RoO3krKyl7Y29uc3QgRT1lW3ldO19lKEUpP3YoRSwtMyk6RGUoRSk/Z2VuTm9kZUxpc3RBc0FycmF5KEUsYyk6Z2VuTm9kZShFLGMpLHk8ZS5sZW5ndGgtMSYmKGQ/KGgmJnYoIiwiKSxiKCkpOmgmJnYoIiwgIikpfX1mdW5jdGlvbiBnZW5Ob2RlKGUsYyl7aWYoX2UoZSkpYy5wdXNoKGUsLTMpO2Vsc2UgaWYoTmUoZSkpYy5wdXNoKGMuaGVscGVyKGUpKTtlbHNlIHN3aXRjaChlLnR5cGUpe2Nhc2UgMTpjYXNlIDk6Y2FzZSAxMTpjYXNlIDEyOmdlbk5vZGUoZS5jb2RlZ2VuTm9kZSxjKTticmVhaztjYXNlIDI6IWZ1bmN0aW9uKGUsYyl7Yy5wdXNoKEpTT04uc3RyaW5naWZ5KGUuY29udGVudCksLTMsZSl9KGUsYyk7YnJlYWs7Y2FzZSA0OmdlbkV4cHJlc3Npb24oZSxjKTticmVhaztjYXNlIDU6IWZ1bmN0aW9uKGUsYyl7Y29uc3R7cHVzaDpkLGhlbHBlcjpoLHB1cmU6dn09Yzt2JiZkKGtuKTtkKGAke2goeXQpfShgKSxnZW5Ob2RlKGUuY29udGVudCxjKSxkKCIpIil9KGUsYyk7YnJlYWs7Y2FzZSA4OmdlbkNvbXBvdW5kRXhwcmVzc2lvbihlLGMpO2JyZWFrO2Nhc2UgMzohZnVuY3Rpb24oZSxjKXtjb25zdHtwdXNoOmQsaGVscGVyOmgscHVyZTp2fT1jO3YmJmQoa24pO2QoYCR7aChpdCl9KCR7SlNPTi5zdHJpbmdpZnkoZS5jb250ZW50KX0pYCwtMyxlKX0oZSxjKTticmVhaztjYXNlIDEzOiFmdW5jdGlvbihlLGMpe2NvbnN0e3B1c2g6ZCxoZWxwZXI6aCxwdXJlOnZ9PWMse3RhZzpiLHByb3BzOnksY2hpbGRyZW46RSxwYXRjaEZsYWc6ayxkeW5hbWljUHJvcHM6XyxkaXJlY3RpdmVzOlQsaXNCbG9jazpOLGRpc2FibGVUcmFja2luZzpPLGlzQ29tcG9uZW50OlJ9PWU7bGV0IE07ayYmKE09U3RyaW5nKGspKTtUJiZkKGgobXQpKyIoIik7TiYmZChgKCR7aChaZSl9KCR7Tz8idHJ1ZSI6IiJ9KSwgYCk7diYmZChrbik7Y29uc3QgRD1OP2dldFZOb2RlQmxvY2tIZWxwZXIoYy5pblNTUixSKTpnZXRWTm9kZUhlbHBlcihjLmluU1NSLFIpO2QoaChEKSsiKCIsLTIsZSksZ2VuTm9kZUxpc3QoZnVuY3Rpb24oZSl7bGV0IGM9ZS5sZW5ndGg7Zm9yKDtjLS0mJm51bGw9PWVbY107KTtyZXR1cm4gZS5zbGljZSgwLGMrMSkubWFwKGU9PmV8fCJudWxsIil9KFtiLHksRSxNLF9dKSxjKSxkKCIpIiksTiYmZCgiKSIpO1QmJihkKCIsICIpLGdlbk5vZGUoVCxjKSxkKCIpIikpfShlLGMpO2JyZWFrO2Nhc2UgMTQ6IWZ1bmN0aW9uKGUsYyl7Y29uc3R7cHVzaDpkLGhlbHBlcjpoLHB1cmU6dn09YyxiPV9lKGUuY2FsbGVlKT9lLmNhbGxlZTpoKGUuY2FsbGVlKTt2JiZkKGtuKTtkKGIrIigiLC0yLGUpLGdlbk5vZGVMaXN0KGUuYXJndW1lbnRzLGMpLGQoIikiKX0oZSxjKTticmVhaztjYXNlIDE1OiFmdW5jdGlvbihlLGMpe2NvbnN0e3B1c2g6ZCxpbmRlbnQ6aCxkZWluZGVudDp2LG5ld2xpbmU6Yn09Yyx7cHJvcGVydGllczp5fT1lO2lmKCF5Lmxlbmd0aClyZXR1cm4gdm9pZCBkKCJ7fSIsLTIsZSk7Y29uc3QgRT15Lmxlbmd0aD4xfHwhMTtkKEU/InsiOiJ7ICIpLEUmJmgoKTtmb3IobGV0IGU9MDtlPHkubGVuZ3RoO2UrKyl7Y29uc3R7a2V5OmgsdmFsdWU6dn09eVtlXTtnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShoLGMpLGQoIjogIiksZ2VuTm9kZSh2LGMpLGU8eS5sZW5ndGgtMSYmKGQoIiwiKSxiKCkpfUUmJnYoKSxkKEU/In0iOiIgfSIpfShlLGMpO2JyZWFrO2Nhc2UgMTc6IWZ1bmN0aW9uKGUsYyl7Z2VuTm9kZUxpc3RBc0FycmF5KGUuZWxlbWVudHMsYyl9KGUsYyk7YnJlYWs7Y2FzZSAxODohZnVuY3Rpb24oZSxjKXtjb25zdHtwdXNoOmQsaW5kZW50OmgsZGVpbmRlbnQ6dn09Yyx7cGFyYW1zOmIscmV0dXJuczp5LGJvZHk6RSxuZXdsaW5lOmssaXNTbG90Ol99PWU7XyYmZChgXyR7THRbUnRdfShgKTtkKCIoIiwtMixlKSxEZShiKT9nZW5Ob2RlTGlzdChiLGMpOmImJmdlbk5vZGUoYixjKTtkKCIpID0+ICIpLChrfHxFKSYmKGQoInsiKSxoKCkpO3k/KGsmJmQoInJldHVybiAiKSxEZSh5KT9nZW5Ob2RlTGlzdEFzQXJyYXkoeSxjKTpnZW5Ob2RlKHksYykpOkUmJmdlbk5vZGUoRSxjKTsoa3x8RSkmJih2KCksZCgifSIpKTtfJiYoZS5pc05vblNjb3BlZFNsb3QmJmQoIiwgdW5kZWZpbmVkLCB0cnVlIiksZCgiKSIpKX0oZSxjKTticmVhaztjYXNlIDE5OiFmdW5jdGlvbihlLGMpe2NvbnN0e3Rlc3Q6ZCxjb25zZXF1ZW50OmgsYWx0ZXJuYXRlOnYsbmV3bGluZTpifT1lLHtwdXNoOnksaW5kZW50OkUsZGVpbmRlbnQ6ayxuZXdsaW5lOl99PWM7aWYoND09PWQudHlwZSl7Y29uc3QgZT0haXNTaW1wbGVJZGVudGlmaWVyKGQuY29udGVudCk7ZSYmeSgiKCIpLGdlbkV4cHJlc3Npb24oZCxjKSxlJiZ5KCIpIil9ZWxzZSB5KCIoIiksZ2VuTm9kZShkLGMpLHkoIikiKTtiJiZFKCksYy5pbmRlbnRMZXZlbCsrLGJ8fHkoIiAiKSx5KCI/ICIpLGdlbk5vZGUoaCxjKSxjLmluZGVudExldmVsLS0sYiYmXygpLGJ8fHkoIiAiKSx5KCI6ICIpO2NvbnN0IFQ9MTk9PT12LnR5cGU7VHx8Yy5pbmRlbnRMZXZlbCsrO2dlbk5vZGUodixjKSxUfHxjLmluZGVudExldmVsLS07YiYmayghMCl9KGUsYyk7YnJlYWs7Y2FzZSAyMDohZnVuY3Rpb24oZSxjKXtjb25zdHtwdXNoOmQsaGVscGVyOmgsaW5kZW50OnYsZGVpbmRlbnQ6YixuZXdsaW5lOnl9PWMse25lZWRQYXVzZVRyYWNraW5nOkUsbmVlZEFycmF5U3ByZWFkOmt9PWU7ayYmZCgiWy4uLigiKTtkKGBfY2FjaGVbJHtlLmluZGV4fV0gfHwgKGApLEUmJih2KCksZChgJHtoKEF0KX0oLTFgKSxlLmluVk9uY2UmJmQoIiwgdHJ1ZSIpLGQoIiksIikseSgpLGQoIigiKSk7ZChgX2NhY2hlWyR7ZS5pbmRleH1dID0gYCksZ2VuTm9kZShlLnZhbHVlLGMpLEUmJihkKGApLmNhY2hlSW5kZXggPSAke2UuaW5kZXh9LGApLHkoKSxkKGAke2goQXQpfSgxKSxgKSx5KCksZChgX2NhY2hlWyR7ZS5pbmRleH1dYCksYigpKTtkKCIpIiksayYmZCgiKV0iKX0oZSxjKTticmVhaztjYXNlIDIxOmdlbk5vZGVMaXN0KGUuYm9keSxjLCEwLCExKX19ZnVuY3Rpb24gZ2VuRXhwcmVzc2lvbihlLGMpe2NvbnN0e2NvbnRlbnQ6ZCxpc1N0YXRpYzpofT1lO2MucHVzaChoP0pTT04uc3RyaW5naWZ5KGQpOmQsLTMsZSl9ZnVuY3Rpb24gZ2VuQ29tcG91bmRFeHByZXNzaW9uKGUsYyl7Zm9yKGxldCBkPTA7ZDxlLmNoaWxkcmVuLmxlbmd0aDtkKyspe2NvbnN0IGg9ZS5jaGlsZHJlbltkXTtfZShoKT9jLnB1c2goaCwtMyk6Z2VuTm9kZShoLGMpfX1mdW5jdGlvbiBnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShlLGMpe2NvbnN0e3B1c2g6ZH09YztpZig4PT09ZS50eXBlKWQoIlsiKSxnZW5Db21wb3VuZEV4cHJlc3Npb24oZSxjKSxkKCJdIik7ZWxzZSBpZihlLmlzU3RhdGljKXtkKGlzU2ltcGxlSWRlbnRpZmllcihlLmNvbnRlbnQpP2UuY29udGVudDpKU09OLnN0cmluZ2lmeShlLmNvbnRlbnQpLC0yLGUpfWVsc2UgZChgWyR7ZS5jb250ZW50fV1gLC0zLGUpfW5ldyBSZWdFeHAoIlxcYiIrImFyZ3VtZW50cyxhd2FpdCxicmVhayxjYXNlLGNhdGNoLGNsYXNzLGNvbnN0LGNvbnRpbnVlLGRlYnVnZ2VyLGRlZmF1bHQsZGVsZXRlLGRvLGVsc2UsZXhwb3J0LGV4dGVuZHMsZmluYWxseSxmb3IsZnVuY3Rpb24saWYsaW1wb3J0LGxldCxuZXcscmV0dXJuLHN1cGVyLHN3aXRjaCx0aHJvdyx0cnksdmFyLHZvaWQsd2hpbGUsd2l0aCx5aWVsZCIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpO2Z1bmN0aW9uIHByb2Nlc3NFeHByZXNzaW9uKGUsYyxkPSExLGg9ITEsdj1PYmplY3QuY3JlYXRlKGMuaWRlbnRpZmllcnMpKXtyZXR1cm4gZX1jb25zdCBDbj1jcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKC9eKD86aWZ8ZWxzZXxlbHNlLWlmKSQvLChlLGMsZCk9PnByb2Nlc3NJZihlLGMsZCwoZSxjLGgpPT57Y29uc3Qgdj1kLnBhcmVudC5jaGlsZHJlbjtsZXQgYj12LmluZGV4T2YoZSkseT0wO2Zvcig7Yi0tID49MDspe2NvbnN0IGU9dltiXTtlJiY5PT09ZS50eXBlJiYoeSs9ZS5icmFuY2hlcy5sZW5ndGgpfXJldHVybigpPT57aWYoaCllLmNvZGVnZW5Ob2RlPWNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGMseSxkKTtlbHNle2NvbnN0IGg9ZnVuY3Rpb24oZSl7Zm9yKDs7KWlmKDE5PT09ZS50eXBlKXtpZigxOSE9PWUuYWx0ZXJuYXRlLnR5cGUpcmV0dXJuIGU7ZT1lLmFsdGVybmF0ZX1lbHNlIDIwPT09ZS50eXBlJiYoZT1lLnZhbHVlKX0oZS5jb2RlZ2VuTm9kZSk7aC5hbHRlcm5hdGU9Y3JlYXRlQ29kZWdlbk5vZGVGb3JCcmFuY2goYyx5K2UuYnJhbmNoZXMubGVuZ3RoLTEsZCl9fX0pKTtmdW5jdGlvbiBwcm9jZXNzSWYoZSxjLGQsaCl7aWYoISgiZWxzZSI9PT1jLm5hbWV8fGMuZXhwJiZjLmV4cC5jb250ZW50LnRyaW0oKSkpe2NvbnN0IGg9Yy5leHA/Yy5leHAubG9jOmUubG9jO2Qub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDI4LGMubG9jKSksYy5leHA9Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigidHJ1ZSIsITEsaCl9aWYoImlmIj09PWMubmFtZSl7Y29uc3QgYj1jcmVhdGVJZkJyYW5jaChlLGMpLHk9e3R5cGU6OSxsb2M6KHY9ZS5sb2MsZ2V0TG9jKHYuc3RhcnQub2Zmc2V0LHYuZW5kLm9mZnNldCkpLGJyYW5jaGVzOltiXX07aWYoZC5yZXBsYWNlTm9kZSh5KSxoKXJldHVybiBoKHksYiwhMCl9ZWxzZXtjb25zdCB2PWQucGFyZW50LmNoaWxkcmVuO2xldCBiPXYuaW5kZXhPZihlKTtmb3IoO2ItLSA+PS0xOyl7Y29uc3QgeT12W2JdO2lmKCF5fHwhaXNDb21tZW50T3JXaGl0ZXNwYWNlKHkpKXtpZih5JiY5PT09eS50eXBlKXsiZWxzZS1pZiIhPT1jLm5hbWUmJiJlbHNlIiE9PWMubmFtZXx8dm9pZCAwIT09eS5icmFuY2hlc1t5LmJyYW5jaGVzLmxlbmd0aC0xXS5jb25kaXRpb258fGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwLGUubG9jKSksZC5yZW1vdmVOb2RlKCk7Y29uc3Qgdj1jcmVhdGVJZkJyYW5jaChlLGMpO3kuYnJhbmNoZXMucHVzaCh2KTtjb25zdCBiPWgmJmgoeSx2LCExKTt0cmF2ZXJzZU5vZGUodixkKSxiJiZiKCksZC5jdXJyZW50Tm9kZT1udWxsfWVsc2UgZC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAsZS5sb2MpKTticmVha31kLnJlbW92ZU5vZGUoeSl9fXZhciB2fWZ1bmN0aW9uIGNyZWF0ZUlmQnJhbmNoKGUsYyl7Y29uc3QgZD0zPT09ZS50YWdUeXBlO3JldHVybnt0eXBlOjEwLGxvYzplLmxvYyxjb25kaXRpb246ImVsc2UiPT09Yy5uYW1lP3ZvaWQgMDpjLmV4cCxjaGlsZHJlbjpkJiYhZmluZERpcihlLCJmb3IiKT9lLmNoaWxkcmVuOltlXSx1c2VyS2V5OmZpbmRQcm9wKGUsImtleSIpLGlzVGVtcGxhdGVJZjpkfX1mdW5jdGlvbiBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChlLGMsZCl7cmV0dXJuIGUuY29uZGl0aW9uP2NyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihlLmNvbmRpdGlvbixjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGUsYyxkKSxjcmVhdGVDYWxsRXhwcmVzc2lvbihkLmhlbHBlcihpdCksWyciIicsInRydWUiXSkpOmNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoZSxjLGQpfWZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoZSxjLGQpe2NvbnN0e2hlbHBlcjpofT1kLHY9Y3JlYXRlT2JqZWN0UHJvcGVydHkoImtleSIsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgJHtjfWAsITEsanQsMikpLHtjaGlsZHJlbjpifT1lLHk9YlswXTtpZigxIT09Yi5sZW5ndGh8fDEhPT15LnR5cGUpe2lmKDE9PT1iLmxlbmd0aCYmMTE9PT15LnR5cGUpe2NvbnN0IGU9eS5jb2RlZ2VuTm9kZTtyZXR1cm4gaW5qZWN0UHJvcChlLHYsZCksZX17bGV0IGM9NjQ7cmV0dXJuIGNyZWF0ZVZOb2RlQ2FsbChkLGgoWGUpLGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3ZdKSxiLGMsdm9pZCAwLHZvaWQgMCwhMCwhMSwhMSxlLmxvYyl9fXtjb25zdCBlPXkuY29kZWdlbk5vZGUsYz1nZXRNZW1vZWRWTm9kZUNhbGwoZSk7cmV0dXJuIDEzPT09Yy50eXBlJiZjb252ZXJ0VG9CbG9jayhjLGQpLGluamVjdFByb3AoYyx2LGQpLGV9fWNvbnN0IF9uPWNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oImZvciIsKGUsYyxkKT0+e2NvbnN0e2hlbHBlcjpoLHJlbW92ZUhlbHBlcjp2fT1kO3JldHVybiBwcm9jZXNzRm9yKGUsYyxkLGM9Pntjb25zdCBiPWNyZWF0ZUNhbGxFeHByZXNzaW9uKGgoZ3QpLFtjLnNvdXJjZV0pLHk9aXNUZW1wbGF0ZU5vZGUoZSksRT1maW5kRGlyKGUsIm1lbW8iKSxrPWZpbmRQcm9wKGUsImtleSIsITEsITApO2smJmsudHlwZTtsZXQgXz1rJiYoNj09PWsudHlwZT9rLnZhbHVlP2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oay52YWx1ZS5jb250ZW50LCEwKTp2b2lkIDA6ay5leHApO2NvbnN0IFQ9ayYmXz9jcmVhdGVPYmplY3RQcm9wZXJ0eSgia2V5IixfKTpudWxsLE49ND09PWMuc291cmNlLnR5cGUmJmMuc291cmNlLmNvbnN0VHlwZT4wLE89Tj82NDprPzEyODoyNTY7cmV0dXJuIGMuY29kZWdlbk5vZGU9Y3JlYXRlVk5vZGVDYWxsKGQsaChYZSksdm9pZCAwLGIsTyx2b2lkIDAsdm9pZCAwLCEwLCFOLCExLGUubG9jKSwoKT0+e2xldCBrO2NvbnN0e2NoaWxkcmVuOk99PWMsUj0xIT09Ty5sZW5ndGh8fDEhPT1PWzBdLnR5cGUsTT1pc1Nsb3RPdXRsZXQoZSk/ZTp5JiYxPT09ZS5jaGlsZHJlbi5sZW5ndGgmJmlzU2xvdE91dGxldChlLmNoaWxkcmVuWzBdKT9lLmNoaWxkcmVuWzBdOm51bGw7aWYoTT8oaz1NLmNvZGVnZW5Ob2RlLHkmJlQmJmluamVjdFByb3AoayxULGQpKTpSP2s9Y3JlYXRlVk5vZGVDYWxsKGQsaChYZSksVD9jcmVhdGVPYmplY3RFeHByZXNzaW9uKFtUXSk6dm9pZCAwLGUuY2hpbGRyZW4sNjQsdm9pZCAwLHZvaWQgMCwhMCx2b2lkIDAsITEpOihrPU9bMF0uY29kZWdlbk5vZGUseSYmVCYmaW5qZWN0UHJvcChrLFQsZCksay5pc0Jsb2NrIT09IU4mJihrLmlzQmxvY2s/KHYoWmUpLHYoZ2V0Vk5vZGVCbG9ja0hlbHBlcihkLmluU1NSLGsuaXNDb21wb25lbnQpKSk6dihnZXRWTm9kZUhlbHBlcihkLmluU1NSLGsuaXNDb21wb25lbnQpKSksay5pc0Jsb2NrPSFOLGsuaXNCbG9jaz8oaChaZSksaChnZXRWTm9kZUJsb2NrSGVscGVyKGQuaW5TU1Isay5pc0NvbXBvbmVudCkpKTpoKGdldFZOb2RlSGVscGVyKGQuaW5TU1Isay5pc0NvbXBvbmVudCkpKSxFKXtjb25zdCBlPWNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGMucGFyc2VSZXN1bHQsW2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oIl9jYWNoZWQiKV0pKTtlLmJvZHk9Y3JlYXRlQmxvY2tTdGF0ZW1lbnQoW2NyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbImNvbnN0IF9tZW1vID0gKCIsRS5leHAsIikiXSksY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsiaWYgKF9jYWNoZWQgJiYgX2NhY2hlZC5lbCIsLi4uXz9bIiAmJiBfY2FjaGVkLmtleSA9PT0gIixfXTpbXSxgICYmICR7ZC5oZWxwZXJTdHJpbmcoQnQpfShfY2FjaGVkLCBfbWVtbykpIHJldHVybiBfY2FjaGVkYF0pLGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbImNvbnN0IF9pdGVtID0gIixrXSksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiX2l0ZW0ubWVtbyA9IF9tZW1vIiksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigicmV0dXJuIF9pdGVtIildKSxiLmFyZ3VtZW50cy5wdXNoKGUsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiX2NhY2hlIiksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoZC5jYWNoZWQubGVuZ3RoKSkpLGQuY2FjaGVkLnB1c2gobnVsbCl9ZWxzZSBiLmFyZ3VtZW50cy5wdXNoKGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGMucGFyc2VSZXN1bHQpLGssITApKX19KX0pO2Z1bmN0aW9uIHByb2Nlc3NGb3IoZSxjLGQsaCl7aWYoIWMuZXhwKXJldHVybiB2b2lkIGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMxLGMubG9jKSk7Y29uc3Qgdj1jLmZvclBhcnNlUmVzdWx0O2lmKCF2KXJldHVybiB2b2lkIGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMyLGMubG9jKSk7ZmluYWxpemVGb3JQYXJzZVJlc3VsdCh2KTtjb25zdHthZGRJZGVudGlmaWVyczpiLHJlbW92ZUlkZW50aWZpZXJzOnksc2NvcGVzOkV9PWQse3NvdXJjZTprLHZhbHVlOl8sa2V5OlQsaW5kZXg6Tn09dixPPXt0eXBlOjExLGxvYzpjLmxvYyxzb3VyY2U6ayx2YWx1ZUFsaWFzOl8sa2V5QWxpYXM6VCxvYmplY3RJbmRleEFsaWFzOk4scGFyc2VSZXN1bHQ6dixjaGlsZHJlbjppc1RlbXBsYXRlTm9kZShlKT9lLmNoaWxkcmVuOltlXX07ZC5yZXBsYWNlTm9kZShPKSxFLnZGb3IrKztjb25zdCBSPWgmJmgoTyk7cmV0dXJuKCk9PntFLnZGb3ItLSxSJiZSKCl9fWZ1bmN0aW9uIGZpbmFsaXplRm9yUGFyc2VSZXN1bHQoZSxjKXtlLmZpbmFsaXplZHx8KGUuZmluYWxpemVkPSEwKX1mdW5jdGlvbiBjcmVhdGVGb3JMb29wUGFyYW1zKHt2YWx1ZTplLGtleTpjLGluZGV4OmR9LGg9W10pe3JldHVybiBmdW5jdGlvbihlKXtsZXQgYz1lLmxlbmd0aDtmb3IoO2MtLSYmIWVbY107KTtyZXR1cm4gZS5zbGljZSgwLGMrMSkubWFwKChlLGMpPT5lfHxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJfIi5yZXBlYXQoYysxKSwhMSkpfShbZSxjLGQsLi4uaF0pfWNvbnN0IFRuPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oInVuZGVmaW5lZCIsITEpLHRyYWNrU2xvdFNjb3Blcz0oZSxjKT0+e2lmKDE9PT1lLnR5cGUmJigxPT09ZS50YWdUeXBlfHwzPT09ZS50YWdUeXBlKSl7Y29uc3QgZD1maW5kRGlyKGUsInNsb3QiKTtpZihkKXJldHVybiBkLmV4cCxjLnNjb3Blcy52U2xvdCsrLCgpPT57Yy5zY29wZXMudlNsb3QtLX19fSxidWlsZENsaWVudFNsb3RGbj0oZSxjLGQsaCk9PmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihlLGQsITEsITAsZC5sZW5ndGg/ZFswXS5sb2M6aCk7ZnVuY3Rpb24gYnVpbGRTbG90cyhlLGMsZD1idWlsZENsaWVudFNsb3RGbil7Yy5oZWxwZXIoUnQpO2NvbnN0e2NoaWxkcmVuOmgsbG9jOnZ9PWUsYj1bXSx5PVtdO2xldCBFPWMuc2NvcGVzLnZTbG90PjB8fGMuc2NvcGVzLnZGb3I+MDtjb25zdCBrPWZpbmREaXIoZSwic2xvdCIsITApO2lmKGspe2NvbnN0e2FyZzplLGV4cDpjfT1rO2UmJiFpc1N0YXRpY0V4cChlKSYmKEU9ITApLGIucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShlfHxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJkZWZhdWx0IiwhMCksZChjLHZvaWQgMCxoLHYpKSl9bGV0IF89ITEsVD0hMTtjb25zdCBOPVtdLE89bmV3IFNldDtsZXQgUj0wO2ZvcihsZXQgZT0wO2U8aC5sZW5ndGg7ZSsrKXtjb25zdCB2PWhbZV07bGV0IE07aWYoIWlzVGVtcGxhdGVOb2RlKHYpfHwhKE09ZmluZERpcih2LCJzbG90IiwhMCkpKXszIT09di50eXBlJiZOLnB1c2godik7Y29udGludWV9aWYoayl7Yy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzcsTS5sb2MpKTticmVha31fPSEwO2NvbnN0e2NoaWxkcmVuOkQsbG9jOkx9PXYse2FyZzokPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oImRlZmF1bHQiLCEwKSxleHA6Rixsb2M6Vn09TTtsZXQgcTtpc1N0YXRpY0V4cCgkKT9xPSQ/JC5jb250ZW50OiJkZWZhdWx0IjpFPSEwO2NvbnN0IFU9ZmluZERpcih2LCJmb3IiKSxXPWQoRixVLEQsTCk7bGV0IEssWTtpZihLPWZpbmREaXIodiwiaWYiKSlFPSEwLHkucHVzaChjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oSy5leHAsYnVpbGREeW5hbWljU2xvdCgkLFcsUisrKSxUbikpO2Vsc2UgaWYoWT1maW5kRGlyKHYsL15lbHNlKD86LWlmKT8kLywhMCkpe2xldCBkLHY9ZTtmb3IoO3YtLSYmKGQ9aFt2XSxpc0NvbW1lbnRPcldoaXRlc3BhY2UoZCkpOyk7aWYoZCYmaXNUZW1wbGF0ZU5vZGUoZCkmJmZpbmREaXIoZCwvXig/OmVsc2UtKT9pZiQvKSl7bGV0IGU9eVt5Lmxlbmd0aC0xXTtmb3IoOzE5PT09ZS5hbHRlcm5hdGUudHlwZTspZT1lLmFsdGVybmF0ZTtlLmFsdGVybmF0ZT1ZLmV4cD9jcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oWS5leHAsYnVpbGREeW5hbWljU2xvdCgkLFcsUisrKSxUbik6YnVpbGREeW5hbWljU2xvdCgkLFcsUisrKX1lbHNlIGMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwLFkubG9jKSl9ZWxzZSBpZihVKXtFPSEwO2NvbnN0IGU9VS5mb3JQYXJzZVJlc3VsdDtlPyhmaW5hbGl6ZUZvclBhcnNlUmVzdWx0KGUpLHkucHVzaChjcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcihndCksW2Uuc291cmNlLGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGUpLGJ1aWxkRHluYW1pY1Nsb3QoJCxXKSwhMCldKSkpOmMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMyLFUubG9jKSl9ZWxzZXtpZihxKXtpZihPLmhhcyhxKSl7Yy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzgsVikpO2NvbnRpbnVlfU8uYWRkKHEpLCJkZWZhdWx0Ij09PXEmJihUPSEwKX1iLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoJCxXKSl9fWlmKCFrKXtjb25zdCBidWlsZERlZmF1bHRTbG90UHJvcGVydHk9KGUsaCk9Pntjb25zdCBiPWQoZSx2b2lkIDAsaCx2KTtyZXR1cm4gYy5jb21wYXRDb25maWcmJihiLmlzTm9uU2NvcGVkU2xvdD0hMCksY3JlYXRlT2JqZWN0UHJvcGVydHkoImRlZmF1bHQiLGIpfTtfP04ubGVuZ3RoJiYhTi5ldmVyeShpc1doaXRlc3BhY2VUZXh0KSYmKFQ/Yy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzksTlswXS5sb2MpKTpiLnB1c2goYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5KHZvaWQgMCxOKSkpOmIucHVzaChidWlsZERlZmF1bHRTbG90UHJvcGVydHkodm9pZCAwLGgpKX1jb25zdCBNPUU/MjpoYXNGb3J3YXJkZWRTbG90cyhlLmNoaWxkcmVuKT8zOjE7bGV0IEQ9Y3JlYXRlT2JqZWN0RXhwcmVzc2lvbihiLmNvbmNhdChjcmVhdGVPYmplY3RQcm9wZXJ0eSgiXyIsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihNKyIiLCExKSkpLHYpO3JldHVybiB5Lmxlbmd0aCYmKEQ9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oYy5oZWxwZXIoYnQpLFtELGNyZWF0ZUFycmF5RXhwcmVzc2lvbih5KV0pKSx7c2xvdHM6RCxoYXNEeW5hbWljU2xvdHM6RX19ZnVuY3Rpb24gYnVpbGREeW5hbWljU2xvdChlLGMsZCl7Y29uc3QgaD1bY3JlYXRlT2JqZWN0UHJvcGVydHkoIm5hbWUiLGUpLGNyZWF0ZU9iamVjdFByb3BlcnR5KCJmbiIsYyldO3JldHVybiBudWxsIT1kJiZoLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoImtleSIsY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihTdHJpbmcoZCksITApKSksY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihoKX1mdW5jdGlvbiBoYXNGb3J3YXJkZWRTbG90cyhlKXtmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKyl7Y29uc3QgZD1lW2NdO3N3aXRjaChkLnR5cGUpe2Nhc2UgMTppZigyPT09ZC50YWdUeXBlfHxoYXNGb3J3YXJkZWRTbG90cyhkLmNoaWxkcmVuKSlyZXR1cm4hMDticmVhaztjYXNlIDk6aWYoaGFzRm9yd2FyZGVkU2xvdHMoZC5icmFuY2hlcykpcmV0dXJuITA7YnJlYWs7Y2FzZSAxMDpjYXNlIDExOmlmKGhhc0ZvcndhcmRlZFNsb3RzKGQuY2hpbGRyZW4pKXJldHVybiEwfX1yZXR1cm4hMX1jb25zdCBObj1uZXcgV2Vha01hcCx0cmFuc2Zvcm1FbGVtZW50PShlLGMpPT5mdW5jdGlvbigpe2lmKDEhPT0oZT1jLmN1cnJlbnROb2RlKS50eXBlfHwwIT09ZS50YWdUeXBlJiYxIT09ZS50YWdUeXBlKXJldHVybjtjb25zdHt0YWc6ZCxwcm9wczpofT1lLHY9MT09PWUudGFnVHlwZTtsZXQgYj12P3Jlc29sdmVDb21wb25lbnRUeXBlKGUsYyk6YCIke2R9ImA7Y29uc3QgeT1QZShiKSYmYi5jYWxsZWU9PT1kdDtsZXQgRSxrLF8sVCxOLE89MCxSPXl8fGI9PT1LZXx8Yj09PUplfHwhdiYmKCJzdmciPT09ZHx8ImZvcmVpZ25PYmplY3QiPT09ZHx8Im1hdGgiPT09ZCk7aWYoaC5sZW5ndGg+MCl7Y29uc3QgZD1idWlsZFByb3BzKGUsYyx2b2lkIDAsdix5KTtFPWQucHJvcHMsTz1kLnBhdGNoRmxhZyxUPWQuZHluYW1pY1Byb3BOYW1lcztjb25zdCBoPWQuZGlyZWN0aXZlcztOPWgmJmgubGVuZ3RoP2NyZWF0ZUFycmF5RXhwcmVzc2lvbihoLm1hcChlPT5idWlsZERpcmVjdGl2ZUFyZ3MoZSxjKSkpOnZvaWQgMCxkLnNob3VsZFVzZUJsb2NrJiYoUj0hMCl9aWYoZS5jaGlsZHJlbi5sZW5ndGg+MCl7Yj09PVFlJiYoUj0hMCxPfD0xMDI0KTtpZih2JiZiIT09S2UmJmIhPT1RZSl7Y29uc3R7c2xvdHM6ZCxoYXNEeW5hbWljU2xvdHM6aH09YnVpbGRTbG90cyhlLGMpO2s9ZCxoJiYoT3w9MTAyNCl9ZWxzZSBpZigxPT09ZS5jaGlsZHJlbi5sZW5ndGgmJmIhPT1LZSl7Y29uc3QgZD1lLmNoaWxkcmVuWzBdLGg9ZC50eXBlLHY9NT09PWh8fDg9PT1oO3YmJjA9PT1nZXRDb25zdGFudFR5cGUoZCxjKSYmKE98PTEpLGs9dnx8Mj09PWg/ZDplLmNoaWxkcmVufWVsc2Ugaz1lLmNoaWxkcmVufVQmJlQubGVuZ3RoJiYoXz1mdW5jdGlvbihlKXtsZXQgYz0iWyI7Zm9yKGxldCBkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWMrPUpTT04uc3RyaW5naWZ5KGVbZF0pLGQ8aC0xJiYoYys9IiwgIik7cmV0dXJuIGMrIl0ifShUKSksZS5jb2RlZ2VuTm9kZT1jcmVhdGVWTm9kZUNhbGwoYyxiLEUsaywwPT09Tz92b2lkIDA6TyxfLE4sISFSLCExLHYsZS5sb2MpfTtmdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50VHlwZShlLGMsZD0hMSl7bGV0e3RhZzpofT1lO2NvbnN0IHY9aXNDb21wb25lbnRUYWcoaCksYj1maW5kUHJvcChlLCJpcyIsITEsITApO2lmKGIpaWYodnx8aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixjKSl7bGV0IGU7aWYoNj09PWIudHlwZT9lPWIudmFsdWUmJmNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYi52YWx1ZS5jb250ZW50LCEwKTooZT1iLmV4cCxlfHwoZT1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJpcyIsITEsYi5hcmcubG9jKSkpLGUpcmV0dXJuIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKGR0KSxbZV0pfWVsc2UgNj09PWIudHlwZSYmYi52YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoInZ1ZToiKSYmKGg9Yi52YWx1ZS5jb250ZW50LnNsaWNlKDQpKTtjb25zdCB5PWlzQ29yZUNvbXBvbmVudChoKXx8Yy5pc0J1aWx0SW5Db21wb25lbnQoaCk7cmV0dXJuIHk/KGR8fGMuaGVscGVyKHkpLHkpOihjLmhlbHBlcih1dCksYy5jb21wb25lbnRzLmFkZChoKSx0b1ZhbGlkQXNzZXRJZChoLCJjb21wb25lbnQiKSl9ZnVuY3Rpb24gYnVpbGRQcm9wcyhlLGMsZD1lLnByb3BzLGgsdixiPSExKXtjb25zdHt0YWc6eSxsb2M6RSxjaGlsZHJlbjprfT1lO2xldCBfPVtdO2NvbnN0IFQ9W10sTj1bXSxPPWsubGVuZ3RoPjA7bGV0IFI9ITEsTT0wLEQ9ITEsTD0hMSwkPSExLEY9ITEsVj0hMSxxPSExO2NvbnN0IFU9W10scHVzaE1lcmdlQXJnPWU9PntfLmxlbmd0aCYmKFQucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMoXyksRSkpLF89W10pLGUmJlQucHVzaChlKX0scHVzaFJlZlZGb3JNYXJrZXI9KCk9PntjLnNjb3Blcy52Rm9yPjAmJl8ucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJyZWZfZm9yIiwhMCksY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigidHJ1ZSIpKSl9LGFuYWx5emVQYXRjaEZsYWc9KHtrZXk6ZSx2YWx1ZTpkfSk9PntpZihpc1N0YXRpY0V4cChlKSl7Y29uc3QgYj1lLmNvbnRlbnQseT1CZShiKTtpZigheXx8aCYmIXZ8fCJvbmNsaWNrIj09PWIudG9Mb3dlckNhc2UoKXx8Im9uVXBkYXRlOm1vZGVsVmFsdWUiPT09Ynx8TGUoYil8fChGPSEwKSx5JiZMZShiKSYmKHE9ITApLHkmJjE0PT09ZC50eXBlJiYoZD1kLmFyZ3VtZW50c1swXSksMjA9PT1kLnR5cGV8fCg0PT09ZC50eXBlfHw4PT09ZC50eXBlKSYmZ2V0Q29uc3RhbnRUeXBlKGQsYyk+MClyZXR1cm47InJlZiI9PT1iP0Q9ITA6ImNsYXNzIj09PWI/TD0hMDoic3R5bGUiPT09Yj8kPSEwOiJrZXkiPT09Ynx8VS5pbmNsdWRlcyhiKXx8VS5wdXNoKGIpLCFofHwiY2xhc3MiIT09YiYmInN0eWxlIiE9PWJ8fFUuaW5jbHVkZXMoYil8fFUucHVzaChiKX1lbHNlIFY9ITB9O2ZvcihsZXQgdj0wO3Y8ZC5sZW5ndGg7disrKXtjb25zdCBrPWRbdl07aWYoNj09PWsudHlwZSl7Y29uc3R7bG9jOmUsbmFtZTpkLG5hbWVMb2M6aCx2YWx1ZTp2fT1rO2xldCBiPSEwO2lmKCJyZWYiPT09ZCYmKEQ9ITAscHVzaFJlZlZGb3JNYXJrZXIoKSksImlzIj09PWQmJihpc0NvbXBvbmVudFRhZyh5KXx8diYmdi5jb250ZW50LnN0YXJ0c1dpdGgoInZ1ZToiKXx8aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixjKSkpY29udGludWU7Xy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZCwhMCxoKSxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHY/di5jb250ZW50OiIiLGIsdj92LmxvYzplKSkpfWVsc2V7Y29uc3R7bmFtZTpkLGFyZzp2LGV4cDpELGxvYzpMLG1vZGlmaWVyczokfT1rLEY9ImJpbmQiPT09ZCxxPSJvbiI9PT1kO2lmKCJzbG90Ij09PWQpe2h8fGMub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQwLEwpKTtjb250aW51ZX1pZigib25jZSI9PT1kfHwibWVtbyI9PT1kKWNvbnRpbnVlO2lmKCJpcyI9PT1kfHxGJiZpc1N0YXRpY0FyZ09mKHYsImlzIikmJihpc0NvbXBvbmVudFRhZyh5KXx8aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9JU19PTl9FTEVNRU5UIixjKSkpY29udGludWU7aWYocSYmYiljb250aW51ZTtpZigoRiYmaXNTdGF0aWNBcmdPZih2LCJrZXkiKXx8cSYmTyYmaXNTdGF0aWNBcmdPZih2LCJ2dWU6YmVmb3JlLXVwZGF0ZSIpKSYmKFI9ITApLEYmJmlzU3RhdGljQXJnT2YodiwicmVmIikmJnB1c2hSZWZWRm9yTWFya2VyKCksIXYmJihGfHxxKSl7aWYoVj0hMCxEKWlmKEYpe2lmKHB1c2hNZXJnZUFyZygpLGlzQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiIsYykpe1QudW5zaGlmdChEKTtjb250aW51ZX1wdXNoUmVmVkZvck1hcmtlcigpLHB1c2hNZXJnZUFyZygpLFQucHVzaChEKX1lbHNlIHB1c2hNZXJnZUFyZyh7dHlwZToxNCxsb2M6TCxjYWxsZWU6Yy5oZWxwZXIoQ3QpLGFyZ3VtZW50czpoP1tEXTpbRCwidHJ1ZSJdfSk7ZWxzZSBjLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihGPzM0OjM1LEwpKTtjb250aW51ZX1GJiYkLnNvbWUoZT0+InByb3AiPT09ZS5jb250ZW50KSYmKE18PTMyKTtjb25zdCBVPWMuZGlyZWN0aXZlVHJhbnNmb3Jtc1tkXTtpZihVKXtjb25zdHtwcm9wczpkLG5lZWRSdW50aW1lOmh9PVUoayxlLGMpOyFiJiZkLmZvckVhY2goYW5hbHl6ZVBhdGNoRmxhZykscSYmdiYmIWlzU3RhdGljRXhwKHYpP3B1c2hNZXJnZUFyZyhjcmVhdGVPYmplY3RFeHByZXNzaW9uKGQsRSkpOl8ucHVzaCguLi5kKSxoJiYoTi5wdXNoKGspLE5lKGgpJiZObi5zZXQoayxoKSl9ZWxzZSBBZShkKXx8KE4ucHVzaChrKSxPJiYoUj0hMCkpfX1sZXQgVztpZihULmxlbmd0aD8ocHVzaE1lcmdlQXJnKCksVz1ULmxlbmd0aD4xP2NyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKHh0KSxULEUpOlRbMF0pOl8ubGVuZ3RoJiYoVz1jcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMoXyksRSkpLFY/TXw9MTY6KEwmJiFoJiYoTXw9MiksJCYmIWgmJihNfD00KSxVLmxlbmd0aCYmKE18PTgpLEYmJihNfD0zMikpLFJ8fDAhPT1NJiYzMiE9PU18fCEoRHx8cXx8Ti5sZW5ndGg+MCl8fChNfD01MTIpLCFjLmluU1NSJiZXKXN3aXRjaChXLnR5cGUpe2Nhc2UgMTU6bGV0IGU9LTEsZD0tMSxoPSExO2ZvcihsZXQgYz0wO2M8Vy5wcm9wZXJ0aWVzLmxlbmd0aDtjKyspe2NvbnN0IHY9Vy5wcm9wZXJ0aWVzW2NdLmtleTtpc1N0YXRpY0V4cCh2KT8iY2xhc3MiPT09di5jb250ZW50P2U9Yzoic3R5bGUiPT09di5jb250ZW50JiYoZD1jKTp2LmlzSGFuZGxlcktleXx8KGg9ITApfWNvbnN0IHY9Vy5wcm9wZXJ0aWVzW2VdLGI9Vy5wcm9wZXJ0aWVzW2RdO2g/Vz1jcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcih3dCksW1ddKToodiYmIWlzU3RhdGljRXhwKHYudmFsdWUpJiYodi52YWx1ZT1jcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcihTdCksW3YudmFsdWVdKSksYiYmKCR8fDQ9PT1iLnZhbHVlLnR5cGUmJiJbIj09PWIudmFsdWUuY29udGVudC50cmltKClbMF18fDE3PT09Yi52YWx1ZS50eXBlKSYmKGIudmFsdWU9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oYy5oZWxwZXIoRXQpLFtiLnZhbHVlXSkpKTticmVhaztjYXNlIDE0OmJyZWFrO2RlZmF1bHQ6Vz1jcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcih3dCksW2NyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKGt0KSxbV10pXSl9cmV0dXJue3Byb3BzOlcsZGlyZWN0aXZlczpOLHBhdGNoRmxhZzpNLGR5bmFtaWNQcm9wTmFtZXM6VSxzaG91bGRVc2VCbG9jazpSfX1mdW5jdGlvbiBkZWR1cGVQcm9wZXJ0aWVzKGUpe2NvbnN0IGM9bmV3IE1hcCxkPVtdO2ZvcihsZXQgaD0wO2g8ZS5sZW5ndGg7aCsrKXtjb25zdCB2PWVbaF07aWYoOD09PXYua2V5LnR5cGV8fCF2LmtleS5pc1N0YXRpYyl7ZC5wdXNoKHYpO2NvbnRpbnVlfWNvbnN0IGI9di5rZXkuY29udGVudCx5PWMuZ2V0KGIpO3k/KCJzdHlsZSI9PT1ifHwiY2xhc3MiPT09Ynx8QmUoYikpJiZtZXJnZUFzQXJyYXkoeSx2KTooYy5zZXQoYix2KSxkLnB1c2godikpfXJldHVybiBkfWZ1bmN0aW9uIG1lcmdlQXNBcnJheShlLGMpezE3PT09ZS52YWx1ZS50eXBlP2UudmFsdWUuZWxlbWVudHMucHVzaChjLnZhbHVlKTplLnZhbHVlPWNyZWF0ZUFycmF5RXhwcmVzc2lvbihbZS52YWx1ZSxjLnZhbHVlXSxlLmxvYyl9ZnVuY3Rpb24gYnVpbGREaXJlY3RpdmVBcmdzKGUsYyl7Y29uc3QgZD1bXSxoPU5uLmdldChlKTtoP2QucHVzaChjLmhlbHBlclN0cmluZyhoKSk6KGMuaGVscGVyKHB0KSxjLmRpcmVjdGl2ZXMuYWRkKGUubmFtZSksZC5wdXNoKHRvVmFsaWRBc3NldElkKGUubmFtZSwiZGlyZWN0aXZlIikpKTtjb25zdHtsb2M6dn09ZTtpZihlLmV4cCYmZC5wdXNoKGUuZXhwKSxlLmFyZyYmKGUuZXhwfHxkLnB1c2goInZvaWQgMCIpLGQucHVzaChlLmFyZykpLE9iamVjdC5rZXlzKGUubW9kaWZpZXJzKS5sZW5ndGgpe2UuYXJnfHwoZS5leHB8fGQucHVzaCgidm9pZCAwIiksZC5wdXNoKCJ2b2lkIDAiKSk7Y29uc3QgYz1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJ0cnVlIiwhMSx2KTtkLnB1c2goY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihlLm1vZGlmaWVycy5tYXAoZT0+Y3JlYXRlT2JqZWN0UHJvcGVydHkoZSxjKSksdikpfXJldHVybiBjcmVhdGVBcnJheUV4cHJlc3Npb24oZCxlLmxvYyl9ZnVuY3Rpb24gaXNDb21wb25lbnRUYWcoZSl7cmV0dXJuImNvbXBvbmVudCI9PT1lfHwiQ29tcG9uZW50Ij09PWV9Y29uc3QgdHJhbnNmb3JtU2xvdE91dGxldD0oZSxjKT0+e2lmKGlzU2xvdE91dGxldChlKSl7Y29uc3R7Y2hpbGRyZW46ZCxsb2M6aH09ZSx7c2xvdE5hbWU6dixzbG90UHJvcHM6Yn09cHJvY2Vzc1Nsb3RPdXRsZXQoZSxjKSx5PVtjLnByZWZpeElkZW50aWZpZXJzPyJfY3R4LiRzbG90cyI6IiRzbG90cyIsdiwie30iLCJ1bmRlZmluZWQiLCJ0cnVlIl07bGV0IEU9MjtiJiYoeVsyXT1iLEU9MyksZC5sZW5ndGgmJih5WzNdPWNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihbXSxkLCExLCExLGgpLEU9NCksYy5zY29wZUlkJiYhYy5zbG90dGVkJiYoRT01KSx5LnNwbGljZShFKSxlLmNvZGVnZW5Ob2RlPWNyZWF0ZUNhbGxFeHByZXNzaW9uKGMuaGVscGVyKHZ0KSx5LGgpfX07ZnVuY3Rpb24gcHJvY2Vzc1Nsb3RPdXRsZXQoZSxjKXtsZXQgZCxoPSciZGVmYXVsdCInO2NvbnN0IHY9W107Zm9yKGxldCBjPTA7YzxlLnByb3BzLmxlbmd0aDtjKyspe2NvbnN0IGQ9ZS5wcm9wc1tjXTtpZig2PT09ZC50eXBlKWQudmFsdWUmJigibmFtZSI9PT1kLm5hbWU/aD1KU09OLnN0cmluZ2lmeShkLnZhbHVlLmNvbnRlbnQpOihkLm5hbWU9SWUoZC5uYW1lKSx2LnB1c2goZCkpKTtlbHNlIGlmKCJiaW5kIj09PWQubmFtZSYmaXNTdGF0aWNBcmdPZihkLmFyZywibmFtZSIpKXtpZihkLmV4cCloPWQuZXhwO2Vsc2UgaWYoZC5hcmcmJjQ9PT1kLmFyZy50eXBlKXtjb25zdCBlPUllKGQuYXJnLmNvbnRlbnQpO2g9ZC5leHA9Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbihlLCExLGQuYXJnLmxvYyl9fWVsc2UiYmluZCI9PT1kLm5hbWUmJmQuYXJnJiZpc1N0YXRpY0V4cChkLmFyZykmJihkLmFyZy5jb250ZW50PUllKGQuYXJnLmNvbnRlbnQpKSx2LnB1c2goZCl9aWYodi5sZW5ndGg+MCl7Y29uc3R7cHJvcHM6aCxkaXJlY3RpdmVzOmJ9PWJ1aWxkUHJvcHMoZSxjLHYsITEsITEpO2Q9aCxiLmxlbmd0aCYmYy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzYsYlswXS5sb2MpKX1yZXR1cm57c2xvdE5hbWU6aCxzbG90UHJvcHM6ZH19Y29uc3QgdHJhbnNmb3JtT24kMT0oZSxjLGQsaCk9Pntjb25zdHtsb2M6dixtb2RpZmllcnM6Yixhcmc6eX09ZTtsZXQgRTtpZihlLmV4cHx8Yi5sZW5ndGh8fGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM1LHYpKSw0PT09eS50eXBlKWlmKHkuaXNTdGF0aWMpe2xldCBlPXkuY29udGVudDtlLnN0YXJ0c1dpdGgoInZ1ZToiKSYmKGU9YHZub2RlLSR7ZS5zbGljZSg0KX1gKTtFPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oMCE9PWMudGFnVHlwZXx8ZS5zdGFydHNXaXRoKCJ2bm9kZSIpfHwhL1tBLVpdLy50ZXN0KGUpP01lKEllKGUpKTpgb246JHtlfWAsITAseS5sb2MpfWVsc2UgRT1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Ake2QuaGVscGVyU3RyaW5nKE50KX0oYCx5LCIpIl0pO2Vsc2UgRT15LEUuY2hpbGRyZW4udW5zaGlmdChgJHtkLmhlbHBlclN0cmluZyhOdCl9KGApLEUuY2hpbGRyZW4ucHVzaCgiKSIpO2xldCBrPWUuZXhwO2smJiFrLmNvbnRlbnQudHJpbSgpJiYoaz12b2lkIDApO2xldCBfPWQuY2FjaGVIYW5kbGVycyYmIWsmJiFkLmluVk9uY2U7aWYoayl7Y29uc3QgZT1KdChrKSxjPSEoZXx8WnQoaykpLGQ9ay5jb250ZW50LmluY2x1ZGVzKCI7Iik7KGN8fF8mJmUpJiYoaz1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Ake2M/IiRldmVudCI6IiguLi5hcmdzKSJ9ID0+ICR7ZD8ieyI6IigifWAsayxkPyJ9IjoiKSJdKSl9bGV0IFQ9e3Byb3BzOltjcmVhdGVPYmplY3RQcm9wZXJ0eShFLGt8fGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oIigpID0+IHt9IiwhMSx2KSldfTtyZXR1cm4gaCYmKFQ9aChUKSksXyYmKFQucHJvcHNbMF0udmFsdWU9ZC5jYWNoZShULnByb3BzWzBdLnZhbHVlKSksVC5wcm9wcy5mb3JFYWNoKGU9PmUua2V5LmlzSGFuZGxlcktleT0hMCksVH0sdHJhbnNmb3JtQmluZD0oZSxjLGQpPT57Y29uc3R7bW9kaWZpZXJzOmgsbG9jOnZ9PWUsYj1lLmFyZztsZXR7ZXhwOnl9PWU7cmV0dXJuIHkmJjQ9PT15LnR5cGUmJiF5LmNvbnRlbnQudHJpbSgpJiYoeT12b2lkIDApLDQhPT1iLnR5cGU/KGIuY2hpbGRyZW4udW5zaGlmdCgiKCIpLGIuY2hpbGRyZW4ucHVzaCgnKSB8fCAiIicpKTpiLmlzU3RhdGljfHwoYi5jb250ZW50PWIuY29udGVudD9gJHtiLmNvbnRlbnR9IHx8ICIiYDonIiInKSxoLnNvbWUoZT0+ImNhbWVsIj09PWUuY29udGVudCkmJig0PT09Yi50eXBlP2IuaXNTdGF0aWM/Yi5jb250ZW50PUllKGIuY29udGVudCk6Yi5jb250ZW50PWAke2QuaGVscGVyU3RyaW5nKF90KX0oJHtiLmNvbnRlbnR9KWA6KGIuY2hpbGRyZW4udW5zaGlmdChgJHtkLmhlbHBlclN0cmluZyhfdCl9KGApLGIuY2hpbGRyZW4ucHVzaCgiKSIpKSksZC5pblNTUnx8KGguc29tZShlPT4icHJvcCI9PT1lLmNvbnRlbnQpJiZpbmplY3RQcmVmaXgoYiwiLiIpLGguc29tZShlPT4iYXR0ciI9PT1lLmNvbnRlbnQpJiZpbmplY3RQcmVmaXgoYiwiXiIpKSx7cHJvcHM6W2NyZWF0ZU9iamVjdFByb3BlcnR5KGIseSldfX0saW5qZWN0UHJlZml4PShlLGMpPT57ND09PWUudHlwZT9lLmlzU3RhdGljP2UuY29udGVudD1jK2UuY29udGVudDplLmNvbnRlbnQ9YFxgJHtjfVwkeyR7ZS5jb250ZW50fX1cYGA6KGUuY2hpbGRyZW4udW5zaGlmdChgJyR7Y30nICsgKGApLGUuY2hpbGRyZW4ucHVzaCgiKSIpKX0sdHJhbnNmb3JtVGV4dD0oZSxjKT0+e2lmKDA9PT1lLnR5cGV8fDE9PT1lLnR5cGV8fDExPT09ZS50eXBlfHwxMD09PWUudHlwZSlyZXR1cm4oKT0+e2NvbnN0IGQ9ZS5jaGlsZHJlbjtsZXQgaCx2PSExO2ZvcihsZXQgZT0wO2U8ZC5sZW5ndGg7ZSsrKXtjb25zdCBjPWRbZV07aWYoaXNUZXh0JDEoYykpe3Y9ITA7Zm9yKGxldCB2PWUrMTt2PGQubGVuZ3RoO3YrKyl7Y29uc3QgYj1kW3ZdO2lmKCFpc1RleHQkMShiKSl7aD12b2lkIDA7YnJlYWt9aHx8KGg9ZFtlXT1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2NdLGMubG9jKSksaC5jaGlsZHJlbi5wdXNoKCIgKyAiLGIpLGQuc3BsaWNlKHYsMSksdi0tfX19aWYodiYmKDEhPT1kLmxlbmd0aHx8MCE9PWUudHlwZSYmKDEhPT1lLnR5cGV8fDAhPT1lLnRhZ1R5cGV8fGUucHJvcHMuZmluZChlPT43PT09ZS50eXBlJiYhYy5kaXJlY3RpdmVUcmFuc2Zvcm1zW2UubmFtZV0pfHwidGVtcGxhdGUiPT09ZS50YWcpKSlmb3IobGV0IGU9MDtlPGQubGVuZ3RoO2UrKyl7Y29uc3QgaD1kW2VdO2lmKGlzVGV4dCQxKGgpfHw4PT09aC50eXBlKXtjb25zdCB2PVtdOzI9PT1oLnR5cGUmJiIgIj09PWguY29udGVudHx8di5wdXNoKGgpLGMuc3NyfHwwIT09Z2V0Q29uc3RhbnRUeXBlKGgsYyl8fHYucHVzaCgiMSIpLGRbZV09e3R5cGU6MTIsY29udGVudDpoLGxvYzpoLmxvYyxjb2RlZ2VuTm9kZTpjcmVhdGVDYWxsRXhwcmVzc2lvbihjLmhlbHBlcihzdCksdil9fX19fSxBbj1uZXcgV2Vha1NldCx0cmFuc2Zvcm1PbmNlPShlLGMpPT57aWYoMT09PWUudHlwZSYmZmluZERpcihlLCJvbmNlIiwhMCkpe2lmKEFuLmhhcyhlKXx8Yy5pblZPbmNlfHxjLmluU1NSKXJldHVybjtyZXR1cm4gQW4uYWRkKGUpLGMuaW5WT25jZT0hMCxjLmhlbHBlcihBdCksKCk9PntjLmluVk9uY2U9ITE7Y29uc3QgZT1jLmN1cnJlbnROb2RlO2UuY29kZWdlbk5vZGUmJihlLmNvZGVnZW5Ob2RlPWMuY2FjaGUoZS5jb2RlZ2VuTm9kZSwhMCwhMCkpfX19LHRyYW5zZm9ybU1vZGVsJDE9KGUsYyxkKT0+e2NvbnN0e2V4cDpoLGFyZzp2fT1lO2lmKCFoKXJldHVybiBkLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0MSxlLmxvYykpLGNyZWF0ZVRyYW5zZm9ybVByb3BzKCk7Y29uc3QgYj1oLmxvYy5zb3VyY2UudHJpbSgpLHk9ND09PWgudHlwZT9oLmNvbnRlbnQ6YixFPWQuYmluZGluZ01ldGFkYXRhW2JdO2lmKCJwcm9wcyI9PT1FfHwicHJvcHMtYWxpYXNlZCI9PT1FKXJldHVybiBkLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig0NCxoLmxvYykpLGNyZWF0ZVRyYW5zZm9ybVByb3BzKCk7aWYoImxpdGVyYWwtY29uc3QiPT09RXx8InNldHVwLWNvbnN0Ij09PUUpcmV0dXJuIGQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ1LGgubG9jKSksY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtpZigheS50cmltKCl8fCFKdChoKSlyZXR1cm4gZC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDIsaC5sb2MpKSxjcmVhdGVUcmFuc2Zvcm1Qcm9wcygpO2NvbnN0IGs9dnx8Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigibW9kZWxWYWx1ZSIsITApLF89dj9pc1N0YXRpY0V4cCh2KT9gb25VcGRhdGU6JHtJZSh2LmNvbnRlbnQpfWA6Y3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsnIm9uVXBkYXRlOiIgKyAnLHZdKToib25VcGRhdGU6bW9kZWxWYWx1ZSI7bGV0IFQ7VD1jcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Ake2QuaXNUUz8iKCRldmVudDogYW55KSI6IiRldmVudCJ9ID0+ICgoYCxoLCIpID0gJGV2ZW50KSJdKTtjb25zdCBOPVtjcmVhdGVPYmplY3RQcm9wZXJ0eShrLGUuZXhwKSxjcmVhdGVPYmplY3RQcm9wZXJ0eShfLFQpXTtpZihlLm1vZGlmaWVycy5sZW5ndGgmJjE9PT1jLnRhZ1R5cGUpe2NvbnN0IGM9ZS5tb2RpZmllcnMubWFwKGU9PmUuY29udGVudCkubWFwKGU9Pihpc1NpbXBsZUlkZW50aWZpZXIoZSk/ZTpKU09OLnN0cmluZ2lmeShlKSkrIjogdHJ1ZSIpLmpvaW4oIiwgIiksZD12P2lzU3RhdGljRXhwKHYpP2Ake3YuY29udGVudH1Nb2RpZmllcnNgOmNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbdiwnICsgIk1vZGlmaWVycyInXSk6Im1vZGVsTW9kaWZpZXJzIjtOLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoZCxjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB7ICR7Y30gfWAsITEsZS5sb2MsMikpKX1yZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoTil9O2Z1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybVByb3BzKGU9W10pe3JldHVybntwcm9wczplfX1jb25zdCBPbj0vW1x3KS4rXC1fJFxdXS8sdHJhbnNmb3JtRmlsdGVyPShlLGMpPT57aXNDb21wYXRFbmFibGVkKCJDT01QSUxFUl9GSUxURVJTIixjKSYmKDU9PT1lLnR5cGU/cmV3cml0ZUZpbHRlcihlLmNvbnRlbnQsYyk6MT09PWUudHlwZSYmZS5wcm9wcy5mb3JFYWNoKGU9Pns3PT09ZS50eXBlJiYiZm9yIiE9PWUubmFtZSYmZS5leHAmJnJld3JpdGVGaWx0ZXIoZS5leHAsYyl9KSl9O2Z1bmN0aW9uIHJld3JpdGVGaWx0ZXIoZSxjKXtpZig0PT09ZS50eXBlKXBhcnNlRmlsdGVyKGUsYyk7ZWxzZSBmb3IobGV0IGQ9MDtkPGUuY2hpbGRyZW4ubGVuZ3RoO2QrKyl7Y29uc3QgaD1lLmNoaWxkcmVuW2RdOyJvYmplY3QiPT10eXBlb2YgaCYmKDQ9PT1oLnR5cGU/cGFyc2VGaWx0ZXIoaCxjKTo4PT09aC50eXBlP3Jld3JpdGVGaWx0ZXIoZSxjKTo1PT09aC50eXBlJiZyZXdyaXRlRmlsdGVyKGguY29udGVudCxjKSl9fWZ1bmN0aW9uIHBhcnNlRmlsdGVyKGUsYyl7Y29uc3QgZD1lLmNvbnRlbnQ7bGV0IGgsdixiLHksRT0hMSxrPSExLF89ITEsVD0hMSxOPTAsTz0wLFI9MCxNPTAsRD1bXTtmb3IoYj0wO2I8ZC5sZW5ndGg7YisrKWlmKHY9aCxoPWQuY2hhckNvZGVBdChiKSxFKTM5PT09aCYmOTIhPT12JiYoRT0hMSk7ZWxzZSBpZihrKTM0PT09aCYmOTIhPT12JiYoaz0hMSk7ZWxzZSBpZihfKTk2PT09aCYmOTIhPT12JiYoXz0hMSk7ZWxzZSBpZihUKTQ3PT09aCYmOTIhPT12JiYoVD0hMSk7ZWxzZSBpZigxMjQhPT1ofHwxMjQ9PT1kLmNoYXJDb2RlQXQoYisxKXx8MTI0PT09ZC5jaGFyQ29kZUF0KGItMSl8fE58fE98fFIpe3N3aXRjaChoKXtjYXNlIDM0Oms9ITA7YnJlYWs7Y2FzZSAzOTpFPSEwO2JyZWFrO2Nhc2UgOTY6Xz0hMDticmVhaztjYXNlIDQwOlIrKzticmVhaztjYXNlIDQxOlItLTticmVhaztjYXNlIDkxOk8rKzticmVhaztjYXNlIDkzOk8tLTticmVhaztjYXNlIDEyMzpOKys7YnJlYWs7Y2FzZSAxMjU6Ti0tfWlmKDQ3PT09aCl7bGV0IGUsYz1iLTE7Zm9yKDtjPj0wJiYoZT1kLmNoYXJBdChjKSwiICI9PT1lKTtjLS0pO2UmJk9uLnRlc3QoZSl8fChUPSEwKX19ZWxzZSB2b2lkIDA9PT15PyhNPWIrMSx5PWQuc2xpY2UoMCxiKS50cmltKCkpOnB1c2hGaWx0ZXIoKTtmdW5jdGlvbiBwdXNoRmlsdGVyKCl7RC5wdXNoKGQuc2xpY2UoTSxiKS50cmltKCkpLE09YisxfWlmKHZvaWQgMD09PXk/eT1kLnNsaWNlKDAsYikudHJpbSgpOjAhPT1NJiZwdXNoRmlsdGVyKCksRC5sZW5ndGgpe2ZvcihiPTA7YjxELmxlbmd0aDtiKyspeT13cmFwRmlsdGVyKHksRFtiXSxjKTtlLmNvbnRlbnQ9eSxlLmFzdD12b2lkIDB9fWZ1bmN0aW9uIHdyYXBGaWx0ZXIoZSxjLGQpe2QuaGVscGVyKGZ0KTtjb25zdCBoPWMuaW5kZXhPZigiKCIpO2lmKGg8MClyZXR1cm4gZC5maWx0ZXJzLmFkZChjKSxgJHt0b1ZhbGlkQXNzZXRJZChjLCJmaWx0ZXIiKX0oJHtlfSlgO3tjb25zdCB2PWMuc2xpY2UoMCxoKSxiPWMuc2xpY2UoaCsxKTtyZXR1cm4gZC5maWx0ZXJzLmFkZCh2KSxgJHt0b1ZhbGlkQXNzZXRJZCh2LCJmaWx0ZXIiKX0oJHtlfSR7IikiIT09Yj8iLCIrYjpifWB9fWNvbnN0IEluPW5ldyBXZWFrU2V0LHRyYW5zZm9ybU1lbW89KGUsYyk9PntpZigxPT09ZS50eXBlKXtjb25zdCBkPWZpbmREaXIoZSwibWVtbyIpO2lmKCFkfHxJbi5oYXMoZSl8fGMuaW5TU1IpcmV0dXJuO3JldHVybiBJbi5hZGQoZSksKCk9Pntjb25zdCBoPWUuY29kZWdlbk5vZGV8fGMuY3VycmVudE5vZGUuY29kZWdlbk5vZGU7aCYmMTM9PT1oLnR5cGUmJigxIT09ZS50YWdUeXBlJiZjb252ZXJ0VG9CbG9jayhoLGMpLGUuY29kZWdlbk5vZGU9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oYy5oZWxwZXIoRHQpLFtkLmV4cCxjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24odm9pZCAwLGgpLCJfY2FjaGUiLFN0cmluZyhjLmNhY2hlZC5sZW5ndGgpXSksYy5jYWNoZWQucHVzaChudWxsKSl9fX0sdHJhbnNmb3JtVkJpbmRTaG9ydGhhbmQ9KGUsYyk9PntpZigxPT09ZS50eXBlKWZvcihjb25zdCBkIG9mIGUucHJvcHMpaWYoNz09PWQudHlwZSYmImJpbmQiPT09ZC5uYW1lJiYoIWQuZXhwfHw0PT09ZC5leHAudHlwZSYmIWQuZXhwLmNvbnRlbnQudHJpbSgpKSYmZC5hcmcpe2NvbnN0IGU9ZC5hcmc7aWYoND09PWUudHlwZSYmZS5pc1N0YXRpYyl7Y29uc3QgYz1JZShlLmNvbnRlbnQpOyhHdC50ZXN0KGNbMF0pfHwiLSI9PT1jWzBdKSYmKGQuZXhwPWNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYywhMSxlLmxvYykpfWVsc2UgYy5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNTMsZS5sb2MpKSxkLmV4cD1jcmVhdGVTaW1wbGVFeHByZXNzaW9uKCIiLCEwLGUubG9jKX19O2Z1bmN0aW9uIGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQoZSl7cmV0dXJuW1t0cmFuc2Zvcm1WQmluZFNob3J0aGFuZCx0cmFuc2Zvcm1PbmNlLENuLHRyYW5zZm9ybU1lbW8sX24sdHJhbnNmb3JtRmlsdGVyLHRyYW5zZm9ybVNsb3RPdXRsZXQsdHJhbnNmb3JtRWxlbWVudCx0cmFja1Nsb3RTY29wZXMsdHJhbnNmb3JtVGV4dF0se29uOnRyYW5zZm9ybU9uJDEsYmluZDp0cmFuc2Zvcm1CaW5kLG1vZGVsOnRyYW5zZm9ybU1vZGVsJDF9XX1mdW5jdGlvbiBiYXNlQ29tcGlsZShlLGM9e30pe2NvbnN0IGQ9Yy5vbkVycm9yfHxkZWZhdWx0T25FcnJvcixoPSJtb2R1bGUiPT09Yy5tb2RlOyEwPT09Yy5wcmVmaXhJZGVudGlmaWVycz9kKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDgpKTpoJiZkKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDkpKTtjLmNhY2hlSGFuZGxlcnMmJmQoY3JlYXRlQ29tcGlsZXJFcnJvcig1MCkpLGMuc2NvcGVJZCYmIWgmJmQoY3JlYXRlQ29tcGlsZXJFcnJvcig1MSkpO2NvbnN0IHY9Q2Uoe30sYyx7cHJlZml4SWRlbnRpZmllcnM6ITF9KSxiPV9lKGUpP2Jhc2VQYXJzZShlLHYpOmUsW3ksRV09Z2V0QmFzZVRyYW5zZm9ybVByZXNldCgpO3JldHVybiB0cmFuc2Zvcm0oYixDZSh7fSx2LHtub2RlVHJhbnNmb3JtczpbLi4ueSwuLi5jLm5vZGVUcmFuc2Zvcm1zfHxbXV0sZGlyZWN0aXZlVHJhbnNmb3JtczpDZSh7fSxFLGMuZGlyZWN0aXZlVHJhbnNmb3Jtc3x8e30pfSkpLGdlbmVyYXRlKGIsdil9Y29uc3Qgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybT0oKT0+KHtwcm9wczpbXX0pLFJuPVN5bWJvbCgiIiksUG49U3ltYm9sKCIiKSxNbj1TeW1ib2woIiIpLERuPVN5bWJvbCgiIiksQm49U3ltYm9sKCIiKSxMbj1TeW1ib2woIiIpLGpuPVN5bWJvbCgiIiksJG49U3ltYm9sKCIiKSxGbj1TeW1ib2woIiIpLFZuPVN5bWJvbCgiIik7bGV0IHpuO3JlZ2lzdGVyUnVudGltZUhlbHBlcnMoe1tSbl06InZNb2RlbFJhZGlvIixbUG5dOiJ2TW9kZWxDaGVja2JveCIsW01uXToidk1vZGVsVGV4dCIsW0RuXToidk1vZGVsU2VsZWN0IixbQm5dOiJ2TW9kZWxEeW5hbWljIixbTG5dOiJ3aXRoTW9kaWZpZXJzIixbam5dOiJ3aXRoS2V5cyIsWyRuXToidlNob3ciLFtGbl06IlRyYW5zaXRpb24iLFtWbl06IlRyYW5zaXRpb25Hcm91cCJ9KTtjb25zdCBxbj17cGFyc2VNb2RlOiJodG1sIixpc1ZvaWRUYWc6amUsaXNOYXRpdmVUYWc6ZT0+JGUoZSl8fEZlKGUpfHxWZShlKSxpc1ByZVRhZzplPT4icHJlIj09PWUsaXNJZ25vcmVOZXdsaW5lVGFnOmU9PiJwcmUiPT09ZXx8InRleHRhcmVhIj09PWUsZGVjb2RlRW50aXRpZXM6ZnVuY3Rpb24oZSxjPSExKXtyZXR1cm4gem58fCh6bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSksYz8oem4uaW5uZXJIVE1MPWA8ZGl2IGZvbz0iJHtlLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9Ij5gLHpuLmNoaWxkcmVuWzBdLmdldEF0dHJpYnV0ZSgiZm9vIikpOih6bi5pbm5lckhUTUw9ZSx6bi50ZXh0Q29udGVudCl9LGlzQnVpbHRJbkNvbXBvbmVudDplPT4iVHJhbnNpdGlvbiI9PT1lfHwidHJhbnNpdGlvbiI9PT1lP0ZuOiJUcmFuc2l0aW9uR3JvdXAiPT09ZXx8InRyYW5zaXRpb24tZ3JvdXAiPT09ZT9Wbjp2b2lkIDAsZ2V0TmFtZXNwYWNlKGUsYyxkKXtsZXQgaD1jP2MubnM6ZDtpZihjJiYyPT09aClpZigiYW5ub3RhdGlvbi14bWwiPT09Yy50YWcpe2lmKCJzdmciPT09ZSlyZXR1cm4gMTtjLnByb3BzLnNvbWUoZT0+Nj09PWUudHlwZSYmImVuY29kaW5nIj09PWUubmFtZSYmbnVsbCE9ZS52YWx1ZSYmKCJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5jb250ZW50fHwiYXBwbGljYXRpb24veGh0bWwreG1sIj09PWUudmFsdWUuY29udGVudCkpJiYoaD0wKX1lbHNlL15tKD86W2lvbnNdfHRleHQpJC8udGVzdChjLnRhZykmJiJtZ2x5cGgiIT09ZSYmIm1hbGlnbm1hcmsiIT09ZSYmKGg9MCk7ZWxzZSBjJiYxPT09aCYmKCJmb3JlaWduT2JqZWN0IiE9PWMudGFnJiYiZGVzYyIhPT1jLnRhZyYmInRpdGxlIiE9PWMudGFnfHwoaD0wKSk7aWYoMD09PWgpe2lmKCJzdmciPT09ZSlyZXR1cm4gMTtpZigibWF0aCI9PT1lKXJldHVybiAyfXJldHVybiBofX0sdHJhbnNmb3JtU3R5bGU9ZT0+ezE9PT1lLnR5cGUmJmUucHJvcHMuZm9yRWFjaCgoYyxkKT0+ezY9PT1jLnR5cGUmJiJzdHlsZSI9PT1jLm5hbWUmJmMudmFsdWUmJihlLnByb3BzW2RdPXt0eXBlOjcsbmFtZToiYmluZCIsYXJnOmNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oInN0eWxlIiwhMCxjLmxvYyksZXhwOnBhcnNlSW5saW5lQ1NTKGMudmFsdWUuY29udGVudCxjLmxvYyksbW9kaWZpZXJzOltdLGxvYzpjLmxvY30pfSl9LHBhcnNlSW5saW5lQ1NTPShlLGMpPT57Y29uc3QgZD16ZShlKTtyZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihKU09OLnN0cmluZ2lmeShkKSwhMSxjLDMpfTtmdW5jdGlvbiBjcmVhdGVET01Db21waWxlckVycm9yKGUsYyl7cmV0dXJuIGNyZWF0ZUNvbXBpbGVyRXJyb3IoZSxjKX1jb25zdCBVbj17NTQ6InYtaHRtbCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiw1NToidi1odG1sIHdpbGwgb3ZlcnJpZGUgZWxlbWVudCBjaGlsZHJlbi4iLDU2OiJ2LXRleHQgaXMgbWlzc2luZyBleHByZXNzaW9uLiIsNTc6InYtdGV4dCB3aWxsIG92ZXJyaWRlIGVsZW1lbnQgY2hpbGRyZW4uIiw1ODoidi1tb2RlbCBjYW4gb25seSBiZSB1c2VkIG9uIDxpbnB1dD4sIDx0ZXh0YXJlYT4gYW5kIDxzZWxlY3Q+IGVsZW1lbnRzLiIsNTk6InYtbW9kZWwgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZCBvbiBwbGFpbiBlbGVtZW50cy4iLDYwOiJ2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIGZpbGUgaW5wdXRzIHNpbmNlIHRoZXkgYXJlIHJlYWQtb25seS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlzdGVuZXIgaW5zdGVhZC4iLDYxOiJVbm5lY2Vzc2FyeSB2YWx1ZSBiaW5kaW5nIHVzZWQgYWxvbmdzaWRlIHYtbW9kZWwuIEl0IHdpbGwgaW50ZXJmZXJlIHdpdGggdi1tb2RlbCdzIGJlaGF2aW9yLiIsNjI6InYtc2hvdyBpcyBtaXNzaW5nIGV4cHJlc3Npb24uIiw2MzoiPFRyYW5zaXRpb24+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudCBvciBjb21wb25lbnQuIiw2NDoiVGFncyB3aXRoIHNpZGUgZWZmZWN0ICg8c2NyaXB0PiBhbmQgPHN0eWxlPikgYXJlIGlnbm9yZWQgaW4gY2xpZW50IGNvbXBvbmVudCB0ZW1wbGF0ZXMuIn0sSG49cWUoInBhc3NpdmUsb25jZSxjYXB0dXJlIiksR249cWUoInN0b3AscHJldmVudCxzZWxmLGN0cmwsc2hpZnQsYWx0LG1ldGEsZXhhY3QsbWlkZGxlIiksV249cWUoImxlZnQscmlnaHQiKSxYbj1xZSgib25rZXl1cCxvbmtleWRvd24sb25rZXlwcmVzcyIpLHRyYW5zZm9ybUNsaWNrPShlLGMpPT5pc1N0YXRpY0V4cChlKSYmIm9uY2xpY2siPT09ZS5jb250ZW50LnRvTG93ZXJDYXNlKCk/Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjLCEwKTo0IT09ZS50eXBlP2NyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbIigiLGUsYCkgPT09ICJvbkNsaWNrIiA/ICIke2N9IiA6IChgLGUsIikiXSk6ZSxpZ25vcmVTaWRlRWZmZWN0VGFncz0oZSxjKT0+ezEhPT1lLnR5cGV8fDAhPT1lLnRhZ1R5cGV8fCJzY3JpcHQiIT09ZS50YWcmJiJzdHlsZSIhPT1lLnRhZ3x8Yy5yZW1vdmVOb2RlKCl9LEtuPVt0cmFuc2Zvcm1TdHlsZV0sSm49e2Nsb2FrOm5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0saHRtbDooZSxjLGQpPT57Y29uc3R7ZXhwOmgsbG9jOnZ9PWU7cmV0dXJuIGh8fGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU0LHYpKSxjLmNoaWxkcmVuLmxlbmd0aCYmKGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU1LHYpKSxjLmNoaWxkcmVuLmxlbmd0aD0wKSx7cHJvcHM6W2NyZWF0ZU9iamVjdFByb3BlcnR5KGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oImlubmVySFRNTCIsITAsdiksaHx8Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiIiwhMCkpXX19LHRleHQ6KGUsYyxkKT0+e2NvbnN0e2V4cDpoLGxvYzp2fT1lO3JldHVybiBofHxkLm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1Nix2KSksYy5jaGlsZHJlbi5sZW5ndGgmJihkLm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1Nyx2KSksYy5jaGlsZHJlbi5sZW5ndGg9MCkse3Byb3BzOltjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCJ0ZXh0Q29udGVudCIsITApLGg/Z2V0Q29uc3RhbnRUeXBlKGgsZCk+MD9oOmNyZWF0ZUNhbGxFeHByZXNzaW9uKGQuaGVscGVyU3RyaW5nKHl0KSxbaF0sdik6Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbigiIiwhMCkpXX19LG1vZGVsOihlLGMsZCk9Pntjb25zdCBoPXRyYW5zZm9ybU1vZGVsJDEoZSxjLGQpO2lmKCFoLnByb3BzLmxlbmd0aHx8MT09PWMudGFnVHlwZSlyZXR1cm4gaDtlLmFyZyYmZC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTksZS5hcmcubG9jKSk7Y29uc3R7dGFnOnZ9PWMsYj1kLmlzQ3VzdG9tRWxlbWVudCh2KTtpZigiaW5wdXQiPT09dnx8InRleHRhcmVhIj09PXZ8fCJzZWxlY3QiPT09dnx8Yil7bGV0IHk9TW4sRT0hMTtpZigiaW5wdXQiPT09dnx8Yil7Y29uc3QgaD1maW5kUHJvcChjLCJ0eXBlIik7aWYoaCl7aWYoNz09PWgudHlwZSl5PUJuO2Vsc2UgaWYoaC52YWx1ZSlzd2l0Y2goaC52YWx1ZS5jb250ZW50KXtjYXNlInJhZGlvIjp5PVJuO2JyZWFrO2Nhc2UiY2hlY2tib3giOnk9UG47YnJlYWs7Y2FzZSJmaWxlIjpFPSEwLGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDYwLGUubG9jKSl9fWVsc2UgaGFzRHluYW1pY0tleVZCaW5kKGMpJiYoeT1Cbil9ZWxzZSJzZWxlY3QiPT09diYmKHk9RG4pO0V8fChoLm5lZWRSdW50aW1lPWQuaGVscGVyKHkpKX1lbHNlIGQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU4LGUubG9jKSk7cmV0dXJuIGgucHJvcHM9aC5wcm9wcy5maWx0ZXIoZT0+ISg0PT09ZS5rZXkudHlwZSYmIm1vZGVsVmFsdWUiPT09ZS5rZXkuY29udGVudCkpLGh9LG9uOihlLGMsZCk9PnRyYW5zZm9ybU9uJDEoZSxjLGQsYz0+e2NvbnN0e21vZGlmaWVyczpofT1lO2lmKCFoLmxlbmd0aClyZXR1cm4gYztsZXR7a2V5OnYsdmFsdWU6Yn09Yy5wcm9wc1swXTtjb25zdHtrZXlNb2RpZmllcnM6eSxub25LZXlNb2RpZmllcnM6RSxldmVudE9wdGlvbk1vZGlmaWVyczprfT0oKGUsYyxkKT0+e2NvbnN0IGg9W10sdj1bXSxiPVtdO2ZvcihsZXQgeT0wO3k8Yy5sZW5ndGg7eSsrKXtjb25zdCBFPWNbeV0uY29udGVudDsibmF0aXZlIj09PUUmJmNoZWNrQ29tcGF0RW5hYmxlZCgiQ09NUElMRVJfVl9PTl9OQVRJVkUiLGQpfHxIbihFKT9iLnB1c2goRSk6V24oRSk/aXNTdGF0aWNFeHAoZSk/WG4oZS5jb250ZW50LnRvTG93ZXJDYXNlKCkpP2gucHVzaChFKTp2LnB1c2goRSk6KGgucHVzaChFKSx2LnB1c2goRSkpOkduKEUpP3YucHVzaChFKTpoLnB1c2goRSl9cmV0dXJue2tleU1vZGlmaWVyczpoLG5vbktleU1vZGlmaWVyczp2LGV2ZW50T3B0aW9uTW9kaWZpZXJzOmJ9fSkodixoLGQsZS5sb2MpO2lmKEUuaW5jbHVkZXMoInJpZ2h0IikmJih2PXRyYW5zZm9ybUNsaWNrKHYsIm9uQ29udGV4dG1lbnUiKSksRS5pbmNsdWRlcygibWlkZGxlIikmJih2PXRyYW5zZm9ybUNsaWNrKHYsIm9uTW91c2V1cCIpKSxFLmxlbmd0aCYmKGI9Y3JlYXRlQ2FsbEV4cHJlc3Npb24oZC5oZWxwZXIoTG4pLFtiLEpTT04uc3RyaW5naWZ5KEUpXSkpLCF5Lmxlbmd0aHx8aXNTdGF0aWNFeHAodikmJiFYbih2LmNvbnRlbnQudG9Mb3dlckNhc2UoKSl8fChiPWNyZWF0ZUNhbGxFeHByZXNzaW9uKGQuaGVscGVyKGpuKSxbYixKU09OLnN0cmluZ2lmeSh5KV0pKSxrLmxlbmd0aCl7Y29uc3QgZT1rLm1hcChPZSkuam9pbigiIik7dj1pc1N0YXRpY0V4cCh2KT9jcmVhdGVTaW1wbGVFeHByZXNzaW9uKGAke3YuY29udGVudH0ke2V9YCwhMCk6Y3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFsiKCIsdixgKSArICIke2V9ImBdKX1yZXR1cm57cHJvcHM6W2NyZWF0ZU9iamVjdFByb3BlcnR5KHYsYildfX0pLHNob3c6KGUsYyxkKT0+e2NvbnN0e2V4cDpoLGxvYzp2fT1lO3JldHVybiBofHxkLm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig2Mix2KSkse3Byb3BzOltdLG5lZWRSdW50aW1lOmQuaGVscGVyKCRuKX19fTtjb25zdCBRbj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsQkFTRV9UUkFOU0lUSU9OOlllLEJpbmRpbmdUeXBlczp7REFUQToiZGF0YSIsUFJPUFM6InByb3BzIixQUk9QU19BTElBU0VEOiJwcm9wcy1hbGlhc2VkIixTRVRVUF9MRVQ6InNldHVwLWxldCIsU0VUVVBfQ09OU1Q6InNldHVwLWNvbnN0IixTRVRVUF9SRUFDVElWRV9DT05TVDoic2V0dXAtcmVhY3RpdmUtY29uc3QiLFNFVFVQX01BWUJFX1JFRjoic2V0dXAtbWF5YmUtcmVmIixTRVRVUF9SRUY6InNldHVwLXJlZiIsT1BUSU9OUzoib3B0aW9ucyIsTElURVJBTF9DT05TVDoibGl0ZXJhbC1jb25zdCJ9LENBTUVMSVpFOl90LENBUElUQUxJWkU6VHQsQ1JFQVRFX0JMT0NLOmV0LENSRUFURV9DT01NRU5UOml0LENSRUFURV9FTEVNRU5UX0JMT0NLOm50LENSRUFURV9FTEVNRU5UX1ZOT0RFOnJ0LENSRUFURV9TTE9UUzpidCxDUkVBVEVfU1RBVElDOmN0LENSRUFURV9URVhUOnN0LENSRUFURV9WTk9ERTpvdCxDb21waWxlckRlcHJlY2F0aW9uVHlwZXM6e0NPTVBJTEVSX0lTX09OX0VMRU1FTlQ6IkNPTVBJTEVSX0lTX09OX0VMRU1FTlQiLENPTVBJTEVSX1ZfQklORF9TWU5DOiJDT01QSUxFUl9WX0JJTkRfU1lOQyIsQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUjoiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiIsQ09NUElMRVJfVl9PTl9OQVRJVkU6IkNPTVBJTEVSX1ZfT05fTkFUSVZFIixDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0U6IkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRSIsQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFOiJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEUiLENPTVBJTEVSX0lOTElORV9URU1QTEFURToiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFIixDT01QSUxFUl9GSUxURVJTOiJDT01QSUxFUl9GSUxURVJTIn0sQ29uc3RhbnRUeXBlczp7Tk9UX0NPTlNUQU5UOjAsMDoiTk9UX0NPTlNUQU5UIixDQU5fU0tJUF9QQVRDSDoxLDE6IkNBTl9TS0lQX1BBVENIIixDQU5fQ0FDSEU6MiwyOiJDQU5fQ0FDSEUiLENBTl9TVFJJTkdJRlk6MywzOiJDQU5fU1RSSU5HSUZZIn0sRE9NRGlyZWN0aXZlVHJhbnNmb3JtczpKbixET01FcnJvckNvZGVzOntYX1ZfSFRNTF9OT19FWFBSRVNTSU9OOjU0LDU0OiJYX1ZfSFRNTF9OT19FWFBSRVNTSU9OIixYX1ZfSFRNTF9XSVRIX0NISUxEUkVOOjU1LDU1OiJYX1ZfSFRNTF9XSVRIX0NISUxEUkVOIixYX1ZfVEVYVF9OT19FWFBSRVNTSU9OOjU2LDU2OiJYX1ZfVEVYVF9OT19FWFBSRVNTSU9OIixYX1ZfVEVYVF9XSVRIX0NISUxEUkVOOjU3LDU3OiJYX1ZfVEVYVF9XSVRIX0NISUxEUkVOIixYX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UOjU4LDU4OiJYX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UIixYX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlQ6NTksNTk6IlhfVl9NT0RFTF9BUkdfT05fRUxFTUVOVCIsWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVDo2MCw2MDoiWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVCIsWF9WX01PREVMX1VOTkVDRVNTQVJZX1ZBTFVFOjYxLDYxOiJYX1ZfTU9ERUxfVU5ORUNFU1NBUllfVkFMVUUiLFhfVl9TSE9XX05PX0VYUFJFU1NJT046NjIsNjI6IlhfVl9TSE9XX05PX0VYUFJFU1NJT04iLFhfVFJBTlNJVElPTl9JTlZBTElEX0NISUxEUkVOOjYzLDYzOiJYX1RSQU5TSVRJT05fSU5WQUxJRF9DSElMRFJFTiIsWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRzo2NCw2NDoiWF9JR05PUkVEX1NJREVfRUZGRUNUX1RBRyIsX19FWFRFTkRfUE9JTlRfXzo2NSw2NToiX19FWFRFTkRfUE9JTlRfXyJ9LERPTUVycm9yTWVzc2FnZXM6VW4sRE9NTm9kZVRyYW5zZm9ybXM6S24sRWxlbWVudFR5cGVzOntFTEVNRU5UOjAsMDoiRUxFTUVOVCIsQ09NUE9ORU5UOjEsMToiQ09NUE9ORU5UIixTTE9UOjIsMjoiU0xPVCIsVEVNUExBVEU6MywzOiJURU1QTEFURSJ9LEVycm9yQ29kZXM6e0FCUlVQVF9DTE9TSU5HX09GX0VNUFRZX0NPTU1FTlQ6MCwwOiJBQlJVUFRfQ0xPU0lOR19PRl9FTVBUWV9DT01NRU5UIixDREFUQV9JTl9IVE1MX0NPTlRFTlQ6MSwxOiJDREFUQV9JTl9IVE1MX0NPTlRFTlQiLERVUExJQ0FURV9BVFRSSUJVVEU6MiwyOiJEVVBMSUNBVEVfQVRUUklCVVRFIixFTkRfVEFHX1dJVEhfQVRUUklCVVRFUzozLDM6IkVORF9UQUdfV0lUSF9BVFRSSUJVVEVTIixFTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVUzo0LDQ6IkVORF9UQUdfV0lUSF9UUkFJTElOR19TT0xJRFVTIixFT0ZfQkVGT1JFX1RBR19OQU1FOjUsNToiRU9GX0JFRk9SRV9UQUdfTkFNRSIsRU9GX0lOX0NEQVRBOjYsNjoiRU9GX0lOX0NEQVRBIixFT0ZfSU5fQ09NTUVOVDo3LDc6IkVPRl9JTl9DT01NRU5UIixFT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQ6OCw4OiJFT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFQiLEVPRl9JTl9UQUc6OSw5OiJFT0ZfSU5fVEFHIixJTkNPUlJFQ1RMWV9DTE9TRURfQ09NTUVOVDoxMCwxMDoiSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQiLElOQ09SUkVDVExZX09QRU5FRF9DT01NRU5UOjExLDExOiJJTkNPUlJFQ1RMWV9PUEVORURfQ09NTUVOVCIsSU5WQUxJRF9GSVJTVF9DSEFSQUNURVJfT0ZfVEFHX05BTUU6MTIsMTI6IklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FIixNSVNTSU5HX0FUVFJJQlVURV9WQUxVRToxMywxMzoiTUlTU0lOR19BVFRSSUJVVEVfVkFMVUUiLE1JU1NJTkdfRU5EX1RBR19OQU1FOjE0LDE0OiJNSVNTSU5HX0VORF9UQUdfTkFNRSIsTUlTU0lOR19XSElURVNQQUNFX0JFVFdFRU5fQVRUUklCVVRFUzoxNSwxNToiTUlTU0lOR19XSElURVNQQUNFX0JFVFdFRU5fQVRUUklCVVRFUyIsTkVTVEVEX0NPTU1FTlQ6MTYsMTY6Ik5FU1RFRF9DT01NRU5UIixVTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9BVFRSSUJVVEVfTkFNRToxNywxNzoiVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fQVRUUklCVVRFX05BTUUiLFVORVhQRUNURURfQ0hBUkFDVEVSX0lOX1VOUVVPVEVEX0FUVFJJQlVURV9WQUxVRToxOCwxODoiVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fVU5RVU9URURfQVRUUklCVVRFX1ZBTFVFIixVTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRToxOSwxOToiVU5FWFBFQ1RFRF9FUVVBTFNfU0lHTl9CRUZPUkVfQVRUUklCVVRFX05BTUUiLFVORVhQRUNURURfTlVMTF9DSEFSQUNURVI6MjAsMjA6IlVORVhQRUNURURfTlVMTF9DSEFSQUNURVIiLFVORVhQRUNURURfUVVFU1RJT05fTUFSS19JTlNURUFEX09GX1RBR19OQU1FOjIxLDIxOiJVTkVYUEVDVEVEX1FVRVNUSU9OX01BUktfSU5TVEVBRF9PRl9UQUdfTkFNRSIsVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBRzoyMiwyMjoiVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBRyIsWF9JTlZBTElEX0VORF9UQUc6MjMsMjM6IlhfSU5WQUxJRF9FTkRfVEFHIixYX01JU1NJTkdfRU5EX1RBRzoyNCwyNDoiWF9NSVNTSU5HX0VORF9UQUciLFhfTUlTU0lOR19JTlRFUlBPTEFUSU9OX0VORDoyNSwyNToiWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EIixYX01JU1NJTkdfRElSRUNUSVZFX05BTUU6MjYsMjY6IlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRSIsWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORDoyNywyNzoiWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORCIsWF9WX0lGX05PX0VYUFJFU1NJT046MjgsMjg6IlhfVl9JRl9OT19FWFBSRVNTSU9OIixYX1ZfSUZfU0FNRV9LRVk6MjksMjk6IlhfVl9JRl9TQU1FX0tFWSIsWF9WX0VMU0VfTk9fQURKQUNFTlRfSUY6MzAsMzA6IlhfVl9FTFNFX05PX0FESkFDRU5UX0lGIixYX1ZfRk9SX05PX0VYUFJFU1NJT046MzEsMzE6IlhfVl9GT1JfTk9fRVhQUkVTU0lPTiIsWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTjozMiwzMjoiWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiIsWF9WX0ZPUl9URU1QTEFURV9LRVlfUExBQ0VNRU5UOjMzLDMzOiJYX1ZfRk9SX1RFTVBMQVRFX0tFWV9QTEFDRU1FTlQiLFhfVl9CSU5EX05PX0VYUFJFU1NJT046MzQsMzQ6IlhfVl9CSU5EX05PX0VYUFJFU1NJT04iLFhfVl9PTl9OT19FWFBSRVNTSU9OOjM1LDM1OiJYX1ZfT05fTk9fRVhQUkVTU0lPTiIsWF9WX1NMT1RfVU5FWFBFQ1RFRF9ESVJFQ1RJVkVfT05fU0xPVF9PVVRMRVQ6MzYsMzY6IlhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUIixYX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFOjM3LDM3OiJYX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFIixYX1ZfU0xPVF9EVVBMSUNBVEVfU0xPVF9OQU1FUzozOCwzODoiWF9WX1NMT1RfRFVQTElDQVRFX1NMT1RfTkFNRVMiLFhfVl9TTE9UX0VYVFJBTkVPVVNfREVGQVVMVF9TTE9UX0NISUxEUkVOOjM5LDM5OiJYX1ZfU0xPVF9FWFRSQU5FT1VTX0RFRkFVTFRfU0xPVF9DSElMRFJFTiIsWF9WX1NMT1RfTUlTUExBQ0VEOjQwLDQwOiJYX1ZfU0xPVF9NSVNQTEFDRUQiLFhfVl9NT0RFTF9OT19FWFBSRVNTSU9OOjQxLDQxOiJYX1ZfTU9ERUxfTk9fRVhQUkVTU0lPTiIsWF9WX01PREVMX01BTEZPUk1FRF9FWFBSRVNTSU9OOjQyLDQyOiJYX1ZfTU9ERUxfTUFMRk9STUVEX0VYUFJFU1NJT04iLFhfVl9NT0RFTF9PTl9TQ09QRV9WQVJJQUJMRTo0Myw0MzoiWF9WX01PREVMX09OX1NDT1BFX1ZBUklBQkxFIixYX1ZfTU9ERUxfT05fUFJPUFM6NDQsNDQ6IlhfVl9NT0RFTF9PTl9QUk9QUyIsWF9WX01PREVMX09OX0NPTlNUOjQ1LDQ1OiJYX1ZfTU9ERUxfT05fQ09OU1QiLFhfSU5WQUxJRF9FWFBSRVNTSU9OOjQ2LDQ2OiJYX0lOVkFMSURfRVhQUkVTU0lPTiIsWF9LRUVQX0FMSVZFX0lOVkFMSURfQ0hJTERSRU46NDcsNDc6IlhfS0VFUF9BTElWRV9JTlZBTElEX0NISUxEUkVOIixYX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEOjQ4LDQ4OiJYX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEIixYX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURUQ6NDksNDk6IlhfTU9EVUxFX01PREVfTk9UX1NVUFBPUlRFRCIsWF9DQUNIRV9IQU5ETEVSX05PVF9TVVBQT1JURUQ6NTAsNTA6IlhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEIixYX1NDT1BFX0lEX05PVF9TVVBQT1JURUQ6NTEsNTE6IlhfU0NPUEVfSURfTk9UX1NVUFBPUlRFRCIsWF9WTk9ERV9IT09LUzo1Miw1MjoiWF9WTk9ERV9IT09LUyIsWF9WX0JJTkRfSU5WQUxJRF9TQU1FX05BTUVfQVJHVU1FTlQ6NTMsNTM6IlhfVl9CSU5EX0lOVkFMSURfU0FNRV9OQU1FX0FSR1VNRU5UIixfX0VYVEVORF9QT0lOVF9fOjU0LDU0OiJfX0VYVEVORF9QT0lOVF9fIn0sRlJBR01FTlQ6WGUsR1VBUkRfUkVBQ1RJVkVfUFJPUFM6a3QsSVNfTUVNT19TQU1FOkJ0LElTX1JFRjpNdCxLRUVQX0FMSVZFOlFlLE1FUkdFX1BST1BTOnh0LE5PUk1BTElaRV9DTEFTUzpTdCxOT1JNQUxJWkVfUFJPUFM6d3QsTk9STUFMSVpFX1NUWUxFOkV0LE5hbWVzcGFjZXM6e0hUTUw6MCwwOiJIVE1MIixTVkc6MSwxOiJTVkciLE1BVEhfTUw6MiwyOiJNQVRIX01MIn0sTm9kZVR5cGVzOntST09UOjAsMDoiUk9PVCIsRUxFTUVOVDoxLDE6IkVMRU1FTlQiLFRFWFQ6MiwyOiJURVhUIixDT01NRU5UOjMsMzoiQ09NTUVOVCIsU0lNUExFX0VYUFJFU1NJT046NCw0OiJTSU1QTEVfRVhQUkVTU0lPTiIsSU5URVJQT0xBVElPTjo1LDU6IklOVEVSUE9MQVRJT04iLEFUVFJJQlVURTo2LDY6IkFUVFJJQlVURSIsRElSRUNUSVZFOjcsNzoiRElSRUNUSVZFIixDT01QT1VORF9FWFBSRVNTSU9OOjgsODoiQ09NUE9VTkRfRVhQUkVTU0lPTiIsSUY6OSw5OiJJRiIsSUZfQlJBTkNIOjEwLDEwOiJJRl9CUkFOQ0giLEZPUjoxMSwxMToiRk9SIixURVhUX0NBTEw6MTIsMTI6IlRFWFRfQ0FMTCIsVk5PREVfQ0FMTDoxMywxMzoiVk5PREVfQ0FMTCIsSlNfQ0FMTF9FWFBSRVNTSU9OOjE0LDE0OiJKU19DQUxMX0VYUFJFU1NJT04iLEpTX09CSkVDVF9FWFBSRVNTSU9OOjE1LDE1OiJKU19PQkpFQ1RfRVhQUkVTU0lPTiIsSlNfUFJPUEVSVFk6MTYsMTY6IkpTX1BST1BFUlRZIixKU19BUlJBWV9FWFBSRVNTSU9OOjE3LDE3OiJKU19BUlJBWV9FWFBSRVNTSU9OIixKU19GVU5DVElPTl9FWFBSRVNTSU9OOjE4LDE4OiJKU19GVU5DVElPTl9FWFBSRVNTSU9OIixKU19DT05ESVRJT05BTF9FWFBSRVNTSU9OOjE5LDE5OiJKU19DT05ESVRJT05BTF9FWFBSRVNTSU9OIixKU19DQUNIRV9FWFBSRVNTSU9OOjIwLDIwOiJKU19DQUNIRV9FWFBSRVNTSU9OIixKU19CTE9DS19TVEFURU1FTlQ6MjEsMjE6IkpTX0JMT0NLX1NUQVRFTUVOVCIsSlNfVEVNUExBVEVfTElURVJBTDoyMiwyMjoiSlNfVEVNUExBVEVfTElURVJBTCIsSlNfSUZfU1RBVEVNRU5UOjIzLDIzOiJKU19JRl9TVEFURU1FTlQiLEpTX0FTU0lHTk1FTlRfRVhQUkVTU0lPTjoyNCwyNDoiSlNfQVNTSUdOTUVOVF9FWFBSRVNTSU9OIixKU19TRVFVRU5DRV9FWFBSRVNTSU9OOjI1LDI1OiJKU19TRVFVRU5DRV9FWFBSRVNTSU9OIixKU19SRVRVUk5fU1RBVEVNRU5UOjI2LDI2OiJKU19SRVRVUk5fU1RBVEVNRU5UIn0sT1BFTl9CTE9DSzpaZSxQT1BfU0NPUEVfSUQ6SXQsUFVTSF9TQ09QRV9JRDpPdCxSRU5ERVJfTElTVDpndCxSRU5ERVJfU0xPVDp2dCxSRVNPTFZFX0NPTVBPTkVOVDp1dCxSRVNPTFZFX0RJUkVDVElWRTpwdCxSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UOmR0LFJFU09MVkVfRklMVEVSOmZ0LFNFVF9CTE9DS19UUkFDS0lORzpBdCxTVVNQRU5TRTpKZSxURUxFUE9SVDpLZSxUT19ESVNQTEFZX1NUUklORzp5dCxUT19IQU5ETEVSUzpDdCxUT19IQU5ETEVSX0tFWTpOdCxUUkFOU0lUSU9OOkZuLFRSQU5TSVRJT05fR1JPVVA6Vm4sVFNfTk9ERV9UWVBFUzpVdCxVTlJFRjpQdCxWX01PREVMX0NIRUNLQk9YOlBuLFZfTU9ERUxfRFlOQU1JQzpCbixWX01PREVMX1JBRElPOlJuLFZfTU9ERUxfU0VMRUNUOkRuLFZfTU9ERUxfVEVYVDpNbixWX09OX1dJVEhfS0VZUzpqbixWX09OX1dJVEhfTU9ESUZJRVJTOkxuLFZfU0hPVzokbixXSVRIX0NUWDpSdCxXSVRIX0RJUkVDVElWRVM6bXQsV0lUSF9NRU1POkR0LGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZTpmdW5jdGlvbihlLGMsZD1jLmxlbmd0aCl7cmV0dXJuIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbih7b2Zmc2V0OmUub2Zmc2V0LGxpbmU6ZS5saW5lLGNvbHVtbjplLmNvbHVtbn0sYyxkKX0sYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uOmFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbixhc3NlcnQ6ZnVuY3Rpb24oZSxjKXtpZighZSl0aHJvdyBuZXcgRXJyb3IoY3x8InVuZXhwZWN0ZWQgY29tcGlsZXIgY29uZGl0aW9uIil9LGJhc2VDb21waWxlOmJhc2VDb21waWxlLGJhc2VQYXJzZTpiYXNlUGFyc2UsYnVpbGREaXJlY3RpdmVBcmdzOmJ1aWxkRGlyZWN0aXZlQXJncyxidWlsZFByb3BzOmJ1aWxkUHJvcHMsYnVpbGRTbG90czpidWlsZFNsb3RzLGNoZWNrQ29tcGF0RW5hYmxlZDpjaGVja0NvbXBhdEVuYWJsZWQsY29tcGlsZTpmdW5jdGlvbihlLGM9e30pe3JldHVybiBiYXNlQ29tcGlsZShlLENlKHt9LHFuLGMse25vZGVUcmFuc2Zvcm1zOltpZ25vcmVTaWRlRWZmZWN0VGFncywuLi5LbiwuLi5jLm5vZGVUcmFuc2Zvcm1zfHxbXV0sZGlyZWN0aXZlVHJhbnNmb3JtczpDZSh7fSxKbixjLmRpcmVjdGl2ZVRyYW5zZm9ybXN8fHt9KSx0cmFuc2Zvcm1Ib2lzdDpudWxsfSkpfSxjb252ZXJ0VG9CbG9jazpjb252ZXJ0VG9CbG9jayxjcmVhdGVBcnJheUV4cHJlc3Npb246Y3JlYXRlQXJyYXlFeHByZXNzaW9uLGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uOmZ1bmN0aW9uKGUsYyl7cmV0dXJue3R5cGU6MjQsbGVmdDplLHJpZ2h0OmMsbG9jOmp0fX0sY3JlYXRlQmxvY2tTdGF0ZW1lbnQ6Y3JlYXRlQmxvY2tTdGF0ZW1lbnQsY3JlYXRlQ2FjaGVFeHByZXNzaW9uOmNyZWF0ZUNhY2hlRXhwcmVzc2lvbixjcmVhdGVDYWxsRXhwcmVzc2lvbjpjcmVhdGVDYWxsRXhwcmVzc2lvbixjcmVhdGVDb21waWxlckVycm9yOmNyZWF0ZUNvbXBpbGVyRXJyb3IsY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uOmNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbixjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb246Y3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uLGNyZWF0ZURPTUNvbXBpbGVyRXJyb3I6Y3JlYXRlRE9NQ29tcGlsZXJFcnJvcixjcmVhdGVGb3JMb29wUGFyYW1zOmNyZWF0ZUZvckxvb3BQYXJhbXMsY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uOmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbixjcmVhdGVJZlN0YXRlbWVudDpmdW5jdGlvbihlLGMsZCl7cmV0dXJue3R5cGU6MjMsdGVzdDplLGNvbnNlcXVlbnQ6YyxhbHRlcm5hdGU6ZCxsb2M6anR9fSxjcmVhdGVJbnRlcnBvbGF0aW9uOmZ1bmN0aW9uKGUsYyl7cmV0dXJue3R5cGU6NSxsb2M6Yyxjb250ZW50Ol9lKGUpP2NyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZSwhMSxjKTplfX0sY3JlYXRlT2JqZWN0RXhwcmVzc2lvbjpjcmVhdGVPYmplY3RFeHByZXNzaW9uLGNyZWF0ZU9iamVjdFByb3BlcnR5OmNyZWF0ZU9iamVjdFByb3BlcnR5LGNyZWF0ZVJldHVyblN0YXRlbWVudDpmdW5jdGlvbihlKXtyZXR1cm57dHlwZToyNixyZXR1cm5zOmUsbG9jOmp0fX0sY3JlYXRlUm9vdDpjcmVhdGVSb290LGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbjpmdW5jdGlvbihlKXtyZXR1cm57dHlwZToyNSxleHByZXNzaW9uczplLGxvYzpqdH19LGNyZWF0ZVNpbXBsZUV4cHJlc3Npb246Y3JlYXRlU2ltcGxlRXhwcmVzc2lvbixjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtOmNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0sY3JlYXRlVGVtcGxhdGVMaXRlcmFsOmZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOjIyLGVsZW1lbnRzOmUsbG9jOmp0fX0sY3JlYXRlVHJhbnNmb3JtQ29udGV4dDpjcmVhdGVUcmFuc2Zvcm1Db250ZXh0LGNyZWF0ZVZOb2RlQ2FsbDpjcmVhdGVWTm9kZUNhbGwsZXJyb3JNZXNzYWdlczpxdCxleHRyYWN0SWRlbnRpZmllcnM6ZXh0cmFjdElkZW50aWZpZXJzLGZpbmREaXI6ZmluZERpcixmaW5kUHJvcDpmaW5kUHJvcCxmb3JBbGlhc1JFOnRuLGdlbmVyYXRlOmdlbmVyYXRlLGdlbmVyYXRlQ29kZUZyYW1lOlVlLGdldEJhc2VUcmFuc2Zvcm1QcmVzZXQ6Z2V0QmFzZVRyYW5zZm9ybVByZXNldCxnZXRDb25zdGFudFR5cGU6Z2V0Q29uc3RhbnRUeXBlLGdldE1lbW9lZFZOb2RlQ2FsbDpnZXRNZW1vZWRWTm9kZUNhbGwsZ2V0Vk5vZGVCbG9ja0hlbHBlcjpnZXRWTm9kZUJsb2NrSGVscGVyLGdldFZOb2RlSGVscGVyOmdldFZOb2RlSGVscGVyLGhhc0R5bmFtaWNLZXlWQmluZDpoYXNEeW5hbWljS2V5VkJpbmQsaGFzU2NvcGVSZWY6ZnVuY3Rpb24gaGFzU2NvcGVSZWYoZSxjKXtpZighZXx8MD09PU9iamVjdC5rZXlzKGMpLmxlbmd0aClyZXR1cm4hMTtzd2l0Y2goZS50eXBlKXtjYXNlIDE6Zm9yKGxldCBkPTA7ZDxlLnByb3BzLmxlbmd0aDtkKyspe2NvbnN0IGg9ZS5wcm9wc1tkXTtpZig3PT09aC50eXBlJiYoaGFzU2NvcGVSZWYoaC5hcmcsYyl8fGhhc1Njb3BlUmVmKGguZXhwLGMpKSlyZXR1cm4hMH1yZXR1cm4gZS5jaGlsZHJlbi5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgMTE6cmV0dXJuISFoYXNTY29wZVJlZihlLnNvdXJjZSxjKXx8ZS5jaGlsZHJlbi5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgOTpyZXR1cm4gZS5icmFuY2hlcy5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgMTA6cmV0dXJuISFoYXNTY29wZVJlZihlLmNvbmRpdGlvbixjKXx8ZS5jaGlsZHJlbi5zb21lKGU9Pmhhc1Njb3BlUmVmKGUsYykpO2Nhc2UgNDpyZXR1cm4hZS5pc1N0YXRpYyYmaXNTaW1wbGVJZGVudGlmaWVyKGUuY29udGVudCkmJiEhY1tlLmNvbnRlbnRdO2Nhc2UgODpyZXR1cm4gZS5jaGlsZHJlbi5zb21lKGU9PlBlKGUpJiZoYXNTY29wZVJlZihlLGMpKTtjYXNlIDU6Y2FzZSAxMjpyZXR1cm4gaGFzU2NvcGVSZWYoZS5jb250ZW50LGMpO2RlZmF1bHQ6cmV0dXJuITF9fSxoZWxwZXJOYW1lTWFwOkx0LGluamVjdFByb3A6aW5qZWN0UHJvcCxpc0FsbFdoaXRlc3BhY2U6aXNBbGxXaGl0ZXNwYWNlLGlzQ29tbWVudE9yV2hpdGVzcGFjZTppc0NvbW1lbnRPcldoaXRlc3BhY2UsaXNDb3JlQ29tcG9uZW50OmlzQ29yZUNvbXBvbmVudCxpc0ZuRXhwcmVzc2lvbjpadCxpc0ZuRXhwcmVzc2lvbkJyb3dzZXI6aXNGbkV4cHJlc3Npb25Ccm93c2VyLGlzRm5FeHByZXNzaW9uTm9kZTpZdCxpc0Z1bmN0aW9uVHlwZTplPT4vRnVuY3Rpb24oPzpFeHByZXNzaW9ufERlY2xhcmF0aW9uKSR8TWV0aG9kJC8udGVzdChlLnR5cGUpLGlzSW5EZXN0cnVjdHVyZUFzc2lnbm1lbnQ6ZnVuY3Rpb24oZSxjKXtpZihlJiYoIk9iamVjdFByb3BlcnR5Ij09PWUudHlwZXx8IkFycmF5UGF0dGVybiI9PT1lLnR5cGUpKXtsZXQgZT1jLmxlbmd0aDtmb3IoO2UtLTspe2NvbnN0IGQ9Y1tlXTtpZigiQXNzaWdubWVudEV4cHJlc3Npb24iPT09ZC50eXBlKXJldHVybiEwO2lmKCJPYmplY3RQcm9wZXJ0eSIhPT1kLnR5cGUmJiFkLnR5cGUuZW5kc1dpdGgoIlBhdHRlcm4iKSlicmVha319cmV0dXJuITF9LGlzSW5OZXdFeHByZXNzaW9uOmZ1bmN0aW9uKGUpe2xldCBjPWUubGVuZ3RoO2Zvcig7Yy0tOyl7Y29uc3QgZD1lW2NdO2lmKCJOZXdFeHByZXNzaW9uIj09PWQudHlwZSlyZXR1cm4hMDtpZigiTWVtYmVyRXhwcmVzc2lvbiIhPT1kLnR5cGUpYnJlYWt9cmV0dXJuITF9LGlzTWVtYmVyRXhwcmVzc2lvbjpKdCxpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyOmlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXIsaXNNZW1iZXJFeHByZXNzaW9uTm9kZTpLdCxpc1JlZmVyZW5jZWRJZGVudGlmaWVyOmZ1bmN0aW9uKGUsYyxkKXtyZXR1cm4hMX0saXNTaW1wbGVJZGVudGlmaWVyOmlzU2ltcGxlSWRlbnRpZmllcixpc1Nsb3RPdXRsZXQ6aXNTbG90T3V0bGV0LGlzU3RhdGljQXJnT2Y6aXNTdGF0aWNBcmdPZixpc1N0YXRpY0V4cDppc1N0YXRpY0V4cCxpc1N0YXRpY1Byb3BlcnR5OmlzU3RhdGljUHJvcGVydHksaXNTdGF0aWNQcm9wZXJ0eUtleTooZSxjKT0+aXNTdGF0aWNQcm9wZXJ0eShjKSYmYy5rZXk9PT1lLGlzVGVtcGxhdGVOb2RlOmlzVGVtcGxhdGVOb2RlLGlzVGV4dDppc1RleHQkMSxpc1ZQcmU6aXNWUHJlLGlzVlNsb3Q6aXNWU2xvdCxpc1doaXRlc3BhY2VUZXh0OmlzV2hpdGVzcGFjZVRleHQsbG9jU3R1YjpqdCxub29wRGlyZWN0aXZlVHJhbnNmb3JtOm5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0scGFyc2U6ZnVuY3Rpb24oZSxjPXt9KXtyZXR1cm4gYmFzZVBhcnNlKGUsQ2Uoe30scW4sYykpfSxwYXJzZXJPcHRpb25zOnFuLHByb2Nlc3NFeHByZXNzaW9uOnByb2Nlc3NFeHByZXNzaW9uLHByb2Nlc3NGb3I6cHJvY2Vzc0Zvcixwcm9jZXNzSWY6cHJvY2Vzc0lmLHByb2Nlc3NTbG90T3V0bGV0OnByb2Nlc3NTbG90T3V0bGV0LHJlZ2lzdGVyUnVudGltZUhlbHBlcnM6cmVnaXN0ZXJSdW50aW1lSGVscGVycyxyZXNvbHZlQ29tcG9uZW50VHlwZTpyZXNvbHZlQ29tcG9uZW50VHlwZSxzdHJpbmdpZnlFeHByZXNzaW9uOmZ1bmN0aW9uIHN0cmluZ2lmeUV4cHJlc3Npb24oZSl7cmV0dXJuIF9lKGUpP2U6ND09PWUudHlwZT9lLmNvbnRlbnQ6ZS5jaGlsZHJlbi5tYXAoc3RyaW5naWZ5RXhwcmVzc2lvbikuam9pbigiIil9LHRvVmFsaWRBc3NldElkOnRvVmFsaWRBc3NldElkLHRyYWNrU2xvdFNjb3Blczp0cmFja1Nsb3RTY29wZXMsdHJhY2tWRm9yU2xvdFNjb3BlczooZSxjKT0+e2xldCBkO2lmKGlzVGVtcGxhdGVOb2RlKGUpJiZlLnByb3BzLnNvbWUoaXNWU2xvdCkmJihkPWZpbmREaXIoZSwiZm9yIikpKXtjb25zdCBlPWQuZm9yUGFyc2VSZXN1bHQ7aWYoZSl7ZmluYWxpemVGb3JQYXJzZVJlc3VsdChlKTtjb25zdHt2YWx1ZTpkLGtleTpoLGluZGV4OnZ9PWUse2FkZElkZW50aWZpZXJzOmIscmVtb3ZlSWRlbnRpZmllcnM6eX09YztyZXR1cm4gZCYmYihkKSxoJiZiKGgpLHYmJmIodiksKCk9PntkJiZ5KGQpLGgmJnkoaCksdiYmeSh2KX19fX0sdHJhbnNmb3JtOnRyYW5zZm9ybSx0cmFuc2Zvcm1CaW5kOnRyYW5zZm9ybUJpbmQsdHJhbnNmb3JtRWxlbWVudDp0cmFuc2Zvcm1FbGVtZW50LHRyYW5zZm9ybUV4cHJlc3Npb246KGUsYyk9PntpZig1PT09ZS50eXBlKWUuY29udGVudD1wcm9jZXNzRXhwcmVzc2lvbihlLmNvbnRlbnQsYyk7ZWxzZSBpZigxPT09ZS50eXBlKXtjb25zdCBkPWZpbmREaXIoZSwibWVtbyIpO2ZvcihsZXQgaD0wO2g8ZS5wcm9wcy5sZW5ndGg7aCsrKXtjb25zdCB2PWUucHJvcHNbaF07aWYoNz09PXYudHlwZSYmImZvciIhPT12Lm5hbWUpe2NvbnN0IGU9di5leHAsaD12LmFyZzshZXx8NCE9PWUudHlwZXx8Im9uIj09PXYubmFtZSYmaHx8ZCYmaCYmND09PWgudHlwZSYmImtleSI9PT1oLmNvbnRlbnR8fCh2LmV4cD1wcm9jZXNzRXhwcmVzc2lvbihlLGMsInNsb3QiPT09di5uYW1lKSksaCYmND09PWgudHlwZSYmIWguaXNTdGF0aWMmJih2LmFyZz1wcm9jZXNzRXhwcmVzc2lvbihoLGMpKX19fX0sdHJhbnNmb3JtTW9kZWw6dHJhbnNmb3JtTW9kZWwkMSx0cmFuc2Zvcm1Pbjp0cmFuc2Zvcm1PbiQxLHRyYW5zZm9ybVN0eWxlOnRyYW5zZm9ybVN0eWxlLHRyYW5zZm9ybVZCaW5kU2hvcnRoYW5kOnRyYW5zZm9ybVZCaW5kU2hvcnRoYW5kLHRyYXZlcnNlTm9kZTp0cmF2ZXJzZU5vZGUsdW53cmFwVFNOb2RlOmZ1bmN0aW9uIHVud3JhcFRTTm9kZShlKXtyZXR1cm4gVXQuaW5jbHVkZXMoZS50eXBlKT91bndyYXBUU05vZGUoZS5leHByZXNzaW9uKTplfSx2YWxpZEZpcnN0SWRlbnRDaGFyUkU6R3Qsd2Fsa0Jsb2NrRGVjbGFyYXRpb25zOndhbGtCbG9ja0RlY2xhcmF0aW9ucyx3YWxrRnVuY3Rpb25QYXJhbXM6ZnVuY3Rpb24oZSxjKXtmb3IoY29uc3QgZCBvZiBlLnBhcmFtcylmb3IoY29uc3QgZSBvZiBleHRyYWN0SWRlbnRpZmllcnMoZCkpYyhlKX0sd2Fsa0lkZW50aWZpZXJzOmZ1bmN0aW9uKGUsYyxkPSExLGg9W10sdj1PYmplY3QuY3JlYXRlKG51bGwpKXt9LHdhcm5EZXByZWNhdGlvbjpmdW5jdGlvbihlLGMsZCwuLi5oKXtpZigic3VwcHJlc3Mtd2FybmluZyI9PT1nZXRDb21wYXRWYWx1ZShlLGMpKXJldHVybjtjb25zdHttZXNzYWdlOnYsbGluazpifT16dFtlXSx5PWAoZGVwcmVjYXRpb24gJHtlfSkgJHsiZnVuY3Rpb24iPT10eXBlb2Ygdj92KC4uLmgpOnZ9JHtiP2BcbiAgRGV0YWlsczogJHtifWA6IiJ9YCxFPW5ldyBTeW50YXhFcnJvcih5KTtFLmNvZGU9ZSxkJiYoRS5sb2M9ZCksYy5vbldhcm4oRSl9fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpOyFmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGM9UW4sZD1ZLGg9SGU7ZnVuY3Rpb24gX2ludGVyb3BOYW1lc3BhY2VEZWZhdWx0KGUpe3ZhciBjPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSlmb3IodmFyIGQgaW4gZSljW2RdPWVbZF07cmV0dXJuIGMuZGVmYXVsdD1lLE9iamVjdC5mcmVlemUoYyl9dmFyIHY9X2ludGVyb3BOYW1lc3BhY2VEZWZhdWx0KGQpO2NvbnN0IGI9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbihlLGQpe2lmKCFoLmlzU3RyaW5nKGUpKXtpZighZS5ub2RlVHlwZSlyZXR1cm4gaC5OT09QO2U9ZS5pbm5lckhUTUx9Y29uc3QgeT1oLmdlbkNhY2hlS2V5KGUsZCksRT1iW3ldO2lmKEUpcmV0dXJuIEU7aWYoIiMiPT09ZVswXSl7Y29uc3QgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO2U9Yz9jLmlubmVySFRNTDoiIn1jb25zdCBrPWguZXh0ZW5kKHtob2lzdFN0YXRpYzohMCxvbkVycm9yOnZvaWQgMCxvbldhcm46aC5OT09QfSxkKTtrLmlzQ3VzdG9tRWxlbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBjdXN0b21FbGVtZW50c3x8KGsuaXNDdXN0b21FbGVtZW50PWU9PiEhY3VzdG9tRWxlbWVudHMuZ2V0KGUpKTtjb25zdHtjb2RlOl99PWMuY29tcGlsZShlLGspLFQ9bmV3IEZ1bmN0aW9uKCJWdWUiLF8pKHYpO3JldHVybiBULl9yYz0hMCxiW3ldPVR9ZC5yZWdpc3RlclJ1bnRpbWVDb21waWxlcihjb21waWxlVG9GdW5jdGlvbiksZS5jb21waWxlPWNvbXBpbGVUb0Z1bmN0aW9uLE9iamVjdC5rZXlzKGQpLmZvckVhY2goZnVuY3Rpb24oYyl7ImRlZmF1bHQiPT09Y3x8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYyl8fChlW2NdPWRbY10pfSl9KFdlKSxHZS5leHBvcnRzPVdlO3ZhciBZbj1HZS5leHBvcnRzO2NvbnN0IFpuPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ7ZnVuY3Rpb24gaXNSb3V0ZUNvbXBvbmVudChlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGV8fCJkaXNwbGF5TmFtZSJpbiBlfHwicHJvcHMiaW4gZXx8Il9fdmNjT3B0cyJpbiBlfWNvbnN0IGVvPU9iamVjdC5hc3NpZ247ZnVuY3Rpb24gYXBwbHlUb1BhcmFtcyhlLGMpe2NvbnN0IGQ9e307Zm9yKGNvbnN0IGggaW4gYyl7Y29uc3Qgdj1jW2hdO2RbaF09dG8odik/di5tYXAoZSk6ZSh2KX1yZXR1cm4gZH1jb25zdCBub29wJDI9KCk9Pnt9LHRvPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGUsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgaCBpbiBlKWRbaF09aCBpbiBjP2NbaF06ZVtoXTtyZXR1cm4gZH1sZXQgbm89ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5NQVRDSEVSX05PVF9GT1VORD0xXT0iTUFUQ0hFUl9OT1RfRk9VTkQiLGVbZS5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUPTJdPSJOQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUIixlW2UuTkFWSUdBVElPTl9BQk9SVEVEPTRdPSJOQVZJR0FUSU9OX0FCT1JURUQiLGVbZS5OQVZJR0FUSU9OX0NBTkNFTExFRD04XT0iTkFWSUdBVElPTl9DQU5DRUxMRUQiLGVbZS5OQVZJR0FUSU9OX0RVUExJQ0FURUQ9MTZdPSJOQVZJR0FUSU9OX0RVUExJQ0FURUQiLGV9KHt9KTtjb25zdCBvbz1TeW1ib2woIiIpO2Z1bmN0aW9uIGNyZWF0ZVJvdXRlckVycm9yKGUsYyl7cmV0dXJuIGVvKG5ldyBFcnJvcix7dHlwZTplLFtvb106ITB9LGMpfWZ1bmN0aW9uIGlzTmF2aWdhdGlvbkZhaWx1cmUoZSxjKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yJiZvbyBpbiBlJiYobnVsbD09Y3x8ISEoZS50eXBlJmMpKX1uby5NQVRDSEVSX05PVF9GT1VORCxuby5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNULG5vLk5BVklHQVRJT05fQUJPUlRFRCxuby5OQVZJR0FUSU9OX0NBTkNFTExFRCxuby5OQVZJR0FUSU9OX0RVUExJQ0FURUQ7Y29uc3Qgcm89U3ltYm9sKCIiKSxhbz1TeW1ib2woIiIpLGlvPVN5bWJvbCgiIiksc289U3ltYm9sKCIiKSxsbz1TeW1ib2woIiIpO2Z1bmN0aW9uIHVzZVJvdXRlJDEoZSl7cmV0dXJuIGVlKHNvKX1jb25zdCBjbz0vIy9nLHVvPS8mL2cscG89L1wvL2csZm89Lz0vZyxtbz0vXD8vZyxobz0vXCsvZyx2bz0vJTVCL2csYm89LyU1RC9nLHlvPS8lNUUvZyx4bz0vJTYwL2csU289LyU3Qi9nLEVvPS8lN0MvZyx3bz0vJTdEL2csa289LyUyMC9nO2Z1bmN0aW9uIGNvbW1vbkVuY29kZShlKXtyZXR1cm4gbnVsbD09ZT8iIjplbmNvZGVVUkkoIiIrZSkucmVwbGFjZShFbywifCIpLnJlcGxhY2Uodm8sIlsiKS5yZXBsYWNlKGJvLCJdIil9ZnVuY3Rpb24gZW5jb2RlUXVlcnlWYWx1ZShlKXtyZXR1cm4gY29tbW9uRW5jb2RlKGUpLnJlcGxhY2UoaG8sIiUyQiIpLnJlcGxhY2Uoa28sIisiKS5yZXBsYWNlKGNvLCIlMjMiKS5yZXBsYWNlKHVvLCIlMjYiKS5yZXBsYWNlKHhvLCJgIikucmVwbGFjZShTbywieyIpLnJlcGxhY2Uod28sIn0iKS5yZXBsYWNlKHlvLCJeIil9ZnVuY3Rpb24gZW5jb2RlUXVlcnlLZXkoZSl7cmV0dXJuIGVuY29kZVF1ZXJ5VmFsdWUoZSkucmVwbGFjZShmbywiJTNEIil9ZnVuY3Rpb24gZW5jb2RlUGFyYW0oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBjb21tb25FbmNvZGUoZSkucmVwbGFjZShjbywiJTIzIikucmVwbGFjZShtbywiJTNGIil9KGUpLnJlcGxhY2UocG8sIiUyRiIpfWZ1bmN0aW9uIGRlY29kZShlKXtpZihudWxsPT1lKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCIiK2UpfWNhdGNoKGUpe31yZXR1cm4iIitlfWNvbnN0IENvPS9cLyQvO2Z1bmN0aW9uIHBhcnNlVVJMKGUsYyxkPSIvIil7bGV0IGgsdj17fSxiPSIiLHk9IiI7Y29uc3QgRT1jLmluZGV4T2YoIiMiKTtsZXQgaz1jLmluZGV4T2YoIj8iKTtyZXR1cm4gaz1FPj0wJiZrPkU/LTE6ayxrPj0wJiYoaD1jLnNsaWNlKDAsayksYj1jLnNsaWNlKGssRT4wP0U6Yy5sZW5ndGgpLHY9ZShiLnNsaWNlKDEpKSksRT49MCYmKGg9aHx8Yy5zbGljZSgwLEUpLHk9Yy5zbGljZShFLGMubGVuZ3RoKSksaD1mdW5jdGlvbihlLGMpe2lmKGUuc3RhcnRzV2l0aCgiLyIpKXJldHVybiBlO2lmKCFlKXJldHVybiBjO2NvbnN0IGQ9Yy5zcGxpdCgiLyIpLGg9ZS5zcGxpdCgiLyIpLHY9aFtoLmxlbmd0aC0xXTsiLi4iIT09diYmIi4iIT09dnx8aC5wdXNoKCIiKTtsZXQgYix5LEU9ZC5sZW5ndGgtMTtmb3IoYj0wO2I8aC5sZW5ndGg7YisrKWlmKHk9aFtiXSwiLiIhPT15KXtpZigiLi4iIT09eSlicmVhaztFPjEmJkUtLX1yZXR1cm4gZC5zbGljZSgwLEUpLmpvaW4oIi8iKSsiLyIraC5zbGljZShiKS5qb2luKCIvIil9KG51bGwhPWg/aDpjLGQpLHtmdWxsUGF0aDpoK2IreSxwYXRoOmgscXVlcnk6dixoYXNoOmRlY29kZSh5KX19ZnVuY3Rpb24gaXNTYW1lUm91dGVSZWNvcmQoZSxjKXtyZXR1cm4oZS5hbGlhc09mfHxlKT09PShjLmFsaWFzT2Z8fGMpfWZ1bmN0aW9uIGlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXMoZSxjKXtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGghPT1PYmplY3Qua2V5cyhjKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBkIGluIGUpaWYoIWlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXNWYWx1ZShlW2RdLGNbZF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXNWYWx1ZShlLGMpe3JldHVybiB0byhlKT9pc0VxdWl2YWxlbnRBcnJheShlLGMpOnRvKGMpP2lzRXF1aXZhbGVudEFycmF5KGMsZSk6KGUmJmUudmFsdWVPZigpKT09PShjJiZjLnZhbHVlT2YoKSl9ZnVuY3Rpb24gaXNFcXVpdmFsZW50QXJyYXkoZSxjKXtyZXR1cm4gdG8oYyk/ZS5sZW5ndGg9PT1jLmxlbmd0aCYmZS5ldmVyeSgoZSxkKT0+ZT09PWNbZF0pOjE9PT1lLmxlbmd0aCYmZVswXT09PWN9Y29uc3QgX289e3BhdGg6Ii8iLG5hbWU6dm9pZCAwLHBhcmFtczp7fSxxdWVyeTp7fSxoYXNoOiIiLGZ1bGxQYXRoOiIvIixtYXRjaGVkOltdLG1ldGE6e30scmVkaXJlY3RlZEZyb206dm9pZCAwfTtsZXQgVG89ZnVuY3Rpb24oZSl7cmV0dXJuIGUucG9wPSJwb3AiLGUucHVzaD0icHVzaCIsZX0oe30pLE5vPWZ1bmN0aW9uKGUpe3JldHVybiBlLmJhY2s9ImJhY2siLGUuZm9yd2FyZD0iZm9yd2FyZCIsZS51bmtub3duPSIiLGV9KHt9KTtmdW5jdGlvbiBub3JtYWxpemVCYXNlKGUpe2lmKCFlKWlmKFpuKXtjb25zdCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJhc2UiKTtlPShlPWMmJmMuZ2V0QXR0cmlidXRlKCJocmVmIil8fCIvIikucmVwbGFjZSgvXlx3KzpcL1wvW15cL10rLywiIil9ZWxzZSBlPSIvIjtyZXR1cm4iLyIhPT1lWzBdJiYiIyIhPT1lWzBdJiYoZT0iLyIrZSksZS5yZXBsYWNlKENvLCIiKX1jb25zdCBBbz0vXlteI10rIy87ZnVuY3Rpb24gY3JlYXRlSHJlZihlLGMpe3JldHVybiBlLnJlcGxhY2UoQW8sIiMiKStjfWZ1bmN0aW9uIHNjcm9sbFRvUG9zaXRpb24oZSl7bGV0IGM7aWYoImVsImluIGUpe2NvbnN0IGQ9ZS5lbCxoPSJzdHJpbmciPT10eXBlb2YgZCYmZC5zdGFydHNXaXRoKCIjIiksdj0ic3RyaW5nIj09dHlwZW9mIGQ/aD9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChkLnNsaWNlKDEpKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGQpOmQ7aWYoIXYpcmV0dXJuO2M9ZnVuY3Rpb24oZSxjKXtjb25zdCBkPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2JlaGF2aW9yOmMuYmVoYXZpb3IsbGVmdDpoLmxlZnQtZC5sZWZ0LShjLmxlZnR8fDApLHRvcDpoLnRvcC1kLnRvcC0oYy50b3B8fDApfX0odixlKX1lbHNlIGM9ZTsic2Nyb2xsQmVoYXZpb3IiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlP3dpbmRvdy5zY3JvbGxUbyhjKTp3aW5kb3cuc2Nyb2xsVG8obnVsbCE9Yy5sZWZ0P2MubGVmdDp3aW5kb3cuc2Nyb2xsWCxudWxsIT1jLnRvcD9jLnRvcDp3aW5kb3cuc2Nyb2xsWSl9ZnVuY3Rpb24gZ2V0U2Nyb2xsS2V5KGUsYyl7cmV0dXJuKGhpc3Rvcnkuc3RhdGU/aGlzdG9yeS5zdGF0ZS5wb3NpdGlvbi1jOi0xKStlfWNvbnN0IE9vPW5ldyBNYXA7ZnVuY3Rpb24gaXNSb3V0ZU5hbWUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwic3ltYm9sIj09dHlwZW9mIGV9ZnVuY3Rpb24gcGFyc2VRdWVyeShlKXtjb25zdCBjPXt9O2lmKCIiPT09ZXx8Ij8iPT09ZSlyZXR1cm4gYztjb25zdCBkPSgiPyI9PT1lWzBdP2Uuc2xpY2UoMSk6ZSkuc3BsaXQoIiYiKTtmb3IobGV0IGU9MDtlPGQubGVuZ3RoOysrZSl7Y29uc3QgaD1kW2VdLnJlcGxhY2UoaG8sIiAiKSx2PWguaW5kZXhPZigiPSIpLGI9ZGVjb2RlKHY8MD9oOmguc2xpY2UoMCx2KSkseT12PDA/bnVsbDpkZWNvZGUoaC5zbGljZSh2KzEpKTtpZihiIGluIGMpe2xldCBlPWNbYl07dG8oZSl8fChlPWNbYl09W2VdKSxlLnB1c2goeSl9ZWxzZSBjW2JdPXl9cmV0dXJuIGN9ZnVuY3Rpb24gc3RyaW5naWZ5UXVlcnkoZSl7bGV0IGM9IiI7Zm9yKGxldCBkIGluIGUpe2NvbnN0IGg9ZVtkXTtkPWVuY29kZVF1ZXJ5S2V5KGQpLG51bGwhPWg/KHRvKGgpP2gubWFwKGU9PmUmJmVuY29kZVF1ZXJ5VmFsdWUoZSkpOltoJiZlbmNvZGVRdWVyeVZhbHVlKGgpXSkuZm9yRWFjaChlPT57dm9pZCAwIT09ZSYmKGMrPShjLmxlbmd0aD8iJiI6IiIpK2QsbnVsbCE9ZSYmKGMrPSI9IitlKSl9KTp2b2lkIDAhPT1oJiYoYys9KGMubGVuZ3RoPyImIjoiIikrZCl9cmV0dXJuIGN9ZnVuY3Rpb24gbm9ybWFsaXplUXVlcnkoZSl7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBlKXtjb25zdCBoPWVbZF07dm9pZCAwIT09aCYmKGNbZF09dG8oaCk/aC5tYXAoZT0+bnVsbD09ZT9udWxsOiIiK2UpOm51bGw9PWg/aDoiIitoKX1yZXR1cm4gY31mdW5jdGlvbiB1c2VDYWxsYmFja3MoKXtsZXQgZT1bXTtyZXR1cm57YWRkOmZ1bmN0aW9uKGMpe3JldHVybiBlLnB1c2goYyksKCk9Pntjb25zdCBkPWUuaW5kZXhPZihjKTtkPi0xJiZlLnNwbGljZShkLDEpfX0sbGlzdDooKT0+ZS5zbGljZSgpLHJlc2V0OmZ1bmN0aW9uKCl7ZT1bXX19fWZ1bmN0aW9uIGd1YXJkVG9Qcm9taXNlRm4oZSxjLGQsaCx2LGI9ZT0+ZSgpKXtjb25zdCB5PWgmJihoLmVudGVyQ2FsbGJhY2tzW3ZdPWguZW50ZXJDYWxsYmFja3Nbdl18fFtdKTtyZXR1cm4oKT0+bmV3IFByb21pc2UoKEUsayk9Pntjb25zdCBuZXh0PWU9Pnt2YXIgYjshMT09PWU/ayhjcmVhdGVSb3V0ZXJFcnJvcihuby5OQVZJR0FUSU9OX0FCT1JURUQse2Zyb206ZCx0bzpjfSkpOmUgaW5zdGFuY2VvZiBFcnJvcj9rKGUpOiJzdHJpbmciPT10eXBlb2YoYj1lKXx8YiYmIm9iamVjdCI9PXR5cGVvZiBiP2soY3JlYXRlUm91dGVyRXJyb3Iobm8uTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCx7ZnJvbTpjLHRvOmV9KSk6KHkmJmguZW50ZXJDYWxsYmFja3Nbdl09PT15JiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmeS5wdXNoKGUpLEUoKSl9LF89YigoKT0+ZS5jYWxsKGgmJmguaW5zdGFuY2VzW3ZdLGMsZCxuZXh0KSk7bGV0IFQ9UHJvbWlzZS5yZXNvbHZlKF8pO2UubGVuZ3RoPDMmJihUPVQudGhlbihuZXh0KSksVC5jYXRjaChlPT5rKGUpKX0pfWZ1bmN0aW9uIGV4dHJhY3RDb21wb25lbnRzR3VhcmRzKGUsYyxkLGgsdj1lPT5lKCkpe2NvbnN0IGI9W107Zm9yKGNvbnN0IHkgb2YgZSlmb3IoY29uc3QgZSBpbiB5LmNvbXBvbmVudHMpe2xldCBFPXkuY29tcG9uZW50c1tlXTtpZigiYmVmb3JlUm91dGVFbnRlciI9PT1jfHx5Lmluc3RhbmNlc1tlXSlpZihpc1JvdXRlQ29tcG9uZW50KEUpKXtjb25zdCBrPShFLl9fdmNjT3B0c3x8RSlbY107ayYmYi5wdXNoKGd1YXJkVG9Qcm9taXNlRm4oayxkLGgseSxlLHYpKX1lbHNle2xldCBrPUUoKTtiLnB1c2goKCk9PmsudGhlbihiPT57aWYoIWIpdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIGNvbXBvbmVudCAiJHtlfSIgYXQgIiR7eS5wYXRofSJgKTtjb25zdCBFPShrPWIpLl9fZXNNb2R1bGV8fCJNb2R1bGUiPT09a1tTeW1ib2wudG9TdHJpbmdUYWddfHxrLmRlZmF1bHQmJmlzUm91dGVDb21wb25lbnQoay5kZWZhdWx0KT9iLmRlZmF1bHQ6Yjt2YXIgazt5Lm1vZHNbZV09Yix5LmNvbXBvbmVudHNbZV09RTtjb25zdCBfPShFLl9fdmNjT3B0c3x8RSlbY107cmV0dXJuIF8mJmd1YXJkVG9Qcm9taXNlRm4oXyxkLGgseSxlLHYpKCl9KSl9fXJldHVybiBifWZ1bmN0aW9uIGNyZWF0ZU1lbW9yeUhpc3RvcnkoZT0iIil7bGV0IGM9W10sZD1bWyIiLHt9XV0saD0wO2Z1bmN0aW9uIHNldExvY2F0aW9uKGUsYz17fSl7aCsrLGghPT1kLmxlbmd0aCYmZC5zcGxpY2UoaCksZC5wdXNoKFtlLGNdKX1jb25zdCB2PXtsb2NhdGlvbjoiIixzdGF0ZTp7fSxiYXNlOmU9bm9ybWFsaXplQmFzZShlKSxjcmVhdGVIcmVmOmNyZWF0ZUhyZWYuYmluZChudWxsLGUpLHJlcGxhY2UoZSxjKXtkLnNwbGljZShoLS0sMSksc2V0TG9jYXRpb24oZSxjKX0scHVzaChlLGMpe3NldExvY2F0aW9uKGUsYyl9LGxpc3RlbjplPT4oYy5wdXNoKGUpLCgpPT57Y29uc3QgZD1jLmluZGV4T2YoZSk7ZD4tMSYmYy5zcGxpY2UoZCwxKX0pLGRlc3Ryb3koKXtjPVtdLGQ9W1siIix7fV1dLGg9MH0sZ28oZSx2PSEwKXtjb25zdCBiPXRoaXMubG9jYXRpb24seT1lPDA/Tm8uYmFjazpOby5mb3J3YXJkO2g9TWF0aC5tYXgoMCxNYXRoLm1pbihoK2UsZC5sZW5ndGgtMSkpLHYmJmZ1bmN0aW9uKGUsZCx7ZGlyZWN0aW9uOmgsZGVsdGE6dn0pe2NvbnN0IGI9e2RpcmVjdGlvbjpoLGRlbHRhOnYsdHlwZTpUby5wb3B9O2Zvcihjb25zdCBoIG9mIGMpaChlLGQsYil9KHRoaXMubG9jYXRpb24sYix7ZGlyZWN0aW9uOnksZGVsdGE6ZX0pfX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LCJsb2NhdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OigpPT5kW2hdWzBdfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsInN0YXRlIix7ZW51bWVyYWJsZTohMCxnZXQ6KCk9PmRbaF1bMV19KSx2fWxldCBJbz1mdW5jdGlvbihlKXtyZXR1cm4gZVtlLlN0YXRpYz0wXT0iU3RhdGljIixlW2UuUGFyYW09MV09IlBhcmFtIixlW2UuR3JvdXA9Ml09Ikdyb3VwIixlfSh7fSk7dmFyIFJvPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UuU3RhdGljPTBdPSJTdGF0aWMiLGVbZS5QYXJhbT0xXT0iUGFyYW0iLGVbZS5QYXJhbVJlZ0V4cD0yXT0iUGFyYW1SZWdFeHAiLGVbZS5QYXJhbVJlZ0V4cEVuZD0zXT0iUGFyYW1SZWdFeHBFbmQiLGVbZS5Fc2NhcGVOZXh0PTRdPSJFc2NhcGVOZXh0IixlfShSb3x8e30pO2NvbnN0IFBvPXt0eXBlOklvLlN0YXRpYyx2YWx1ZToiIn0sTW89L1thLXpBLVowLTlfXS87Y29uc3QgRG89IlteL10rPyIsQm89e3NlbnNpdGl2ZTohMSxzdHJpY3Q6ITEsc3RhcnQ6ITAsZW5kOiEwfTt2YXIgTG89ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5fbXVsdGlwbGllcj0xMF09Il9tdWx0aXBsaWVyIixlW2UuUm9vdD05MF09IlJvb3QiLGVbZS5TZWdtZW50PTQwXT0iU2VnbWVudCIsZVtlLlN1YlNlZ21lbnQ9MzBdPSJTdWJTZWdtZW50IixlW2UuU3RhdGljPTQwXT0iU3RhdGljIixlW2UuRHluYW1pYz0yMF09IkR5bmFtaWMiLGVbZS5Cb251c0N1c3RvbVJlZ0V4cD0xMF09IkJvbnVzQ3VzdG9tUmVnRXhwIixlW2UuQm9udXNXaWxkY2FyZD0tNTBdPSJCb251c1dpbGRjYXJkIixlW2UuQm9udXNSZXBlYXRhYmxlPS0yMF09IkJvbnVzUmVwZWF0YWJsZSIsZVtlLkJvbnVzT3B0aW9uYWw9LThdPSJCb251c09wdGlvbmFsIixlW2UuQm9udXNTdHJpY3Q9LjcwMDAwMDAwMDAwMDAwMDFdPSJCb251c1N0cmljdCIsZVtlLkJvbnVzQ2FzZVNlbnNpdGl2ZT0uMjVdPSJCb251c0Nhc2VTZW5zaXRpdmUiLGV9KExvfHx7fSk7Y29uc3Qgam89L1suKyo/XiR7fSgpW1xdL1xcXS9nO2Z1bmN0aW9uIGNvbXBhcmVTY29yZUFycmF5KGUsYyl7bGV0IGQ9MDtmb3IoO2Q8ZS5sZW5ndGgmJmQ8Yy5sZW5ndGg7KXtjb25zdCBoPWNbZF0tZVtkXTtpZihoKXJldHVybiBoO2QrK31yZXR1cm4gZS5sZW5ndGg8Yy5sZW5ndGg/MT09PWUubGVuZ3RoJiZlWzBdPT09TG8uU3RhdGljK0xvLlNlZ21lbnQ/LTE6MTplLmxlbmd0aD5jLmxlbmd0aD8xPT09Yy5sZW5ndGgmJmNbMF09PT1Mby5TdGF0aWMrTG8uU2VnbWVudD8xOi0xOjB9ZnVuY3Rpb24gY29tcGFyZVBhdGhQYXJzZXJTY29yZShlLGMpe2xldCBkPTA7Y29uc3QgaD1lLnNjb3JlLHY9Yy5zY29yZTtmb3IoO2Q8aC5sZW5ndGgmJmQ8di5sZW5ndGg7KXtjb25zdCBlPWNvbXBhcmVTY29yZUFycmF5KGhbZF0sdltkXSk7aWYoZSlyZXR1cm4gZTtkKyt9aWYoMT09PU1hdGguYWJzKHYubGVuZ3RoLWgubGVuZ3RoKSl7aWYoaXNMYXN0U2NvcmVOZWdhdGl2ZShoKSlyZXR1cm4gMTtpZihpc0xhc3RTY29yZU5lZ2F0aXZlKHYpKXJldHVybi0xfXJldHVybiB2Lmxlbmd0aC1oLmxlbmd0aH1mdW5jdGlvbiBpc0xhc3RTY29yZU5lZ2F0aXZlKGUpe2NvbnN0IGM9ZVtlLmxlbmd0aC0xXTtyZXR1cm4gZS5sZW5ndGg+MCYmY1tjLmxlbmd0aC0xXTwwfWNvbnN0ICRvPXtzdHJpY3Q6ITEsZW5kOiEwLHNlbnNpdGl2ZTohMX07ZnVuY3Rpb24gY3JlYXRlUm91dGVSZWNvcmRNYXRjaGVyKGUsYyxkKXtjb25zdCBoPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1lbyh7fSxCbyxjKSxoPVtdO2xldCB2PWQuc3RhcnQ/Il4iOiIiO2NvbnN0IGI9W107Zm9yKGNvbnN0IGMgb2YgZSl7Y29uc3QgZT1jLmxlbmd0aD9bXTpbTG8uUm9vdF07ZC5zdHJpY3QmJiFjLmxlbmd0aCYmKHYrPSIvIik7Zm9yKGxldCBoPTA7aDxjLmxlbmd0aDtoKyspe2NvbnN0IHk9Y1toXTtsZXQgRT1Mby5TZWdtZW50KyhkLnNlbnNpdGl2ZT9Mby5Cb251c0Nhc2VTZW5zaXRpdmU6MCk7aWYoeS50eXBlPT09SW8uU3RhdGljKWh8fCh2Kz0iLyIpLHYrPXkudmFsdWUucmVwbGFjZShqbywiXFwkJiIpLEUrPUxvLlN0YXRpYztlbHNlIGlmKHkudHlwZT09PUlvLlBhcmFtKXtjb25zdHt2YWx1ZTplLHJlcGVhdGFibGU6ZCxvcHRpb25hbDprLHJlZ2V4cDpffT15O2IucHVzaCh7bmFtZTplLHJlcGVhdGFibGU6ZCxvcHRpb25hbDprfSk7Y29uc3QgVD1ffHxEbztpZihUIT09RG8pe0UrPUxvLkJvbnVzQ3VzdG9tUmVnRXhwO3RyeXtuZXcgUmVnRXhwKGAoJHtUfSlgKX1jYXRjaChjKXt0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3VzdG9tIFJlZ0V4cCBmb3IgcGFyYW0gIiR7ZX0iICgke1R9KTogYCtjLm1lc3NhZ2UpfX1sZXQgTj1kP2AoKD86JHtUfSkoPzovKD86JHtUfSkpKilgOmAoJHtUfSlgO2h8fChOPWsmJmMubGVuZ3RoPDI/YCg/Oi8ke059KWA6Ii8iK04pLGsmJihOKz0iPyIpLHYrPU4sRSs9TG8uRHluYW1pYyxrJiYoRSs9TG8uQm9udXNPcHRpb25hbCksZCYmKEUrPUxvLkJvbnVzUmVwZWF0YWJsZSksIi4qIj09PVQmJihFKz1Mby5Cb251c1dpbGRjYXJkKX1lLnB1c2goRSl9aC5wdXNoKGUpfWlmKGQuc3RyaWN0JiZkLmVuZCl7Y29uc3QgZT1oLmxlbmd0aC0xO2hbZV1baFtlXS5sZW5ndGgtMV0rPUxvLkJvbnVzU3RyaWN0fWQuc3RyaWN0fHwodis9Ii8/IiksZC5lbmQ/dis9IiQiOmQuc3RyaWN0JiYhdi5lbmRzV2l0aCgiLyIpJiYodis9Iig/Oi98JCkiKTtjb25zdCB5PW5ldyBSZWdFeHAodixkLnNlbnNpdGl2ZT8iIjoiaSIpO3JldHVybntyZTp5LHNjb3JlOmgsa2V5czpiLHBhcnNlOmZ1bmN0aW9uKGUpe2NvbnN0IGM9ZS5tYXRjaCh5KSxkPXt9O2lmKCFjKXJldHVybiBudWxsO2ZvcihsZXQgZT0xO2U8Yy5sZW5ndGg7ZSsrKXtjb25zdCBoPWNbZV18fCIiLHY9YltlLTFdO2Rbdi5uYW1lXT1oJiZ2LnJlcGVhdGFibGU/aC5zcGxpdCgiLyIpOmh9cmV0dXJuIGR9LHN0cmluZ2lmeTpmdW5jdGlvbihjKXtsZXQgZD0iIixoPSExO2Zvcihjb25zdCB2IG9mIGUpe2gmJmQuZW5kc1dpdGgoIi8iKXx8KGQrPSIvIiksaD0hMTtmb3IoY29uc3QgZSBvZiB2KWlmKGUudHlwZT09PUlvLlN0YXRpYylkKz1lLnZhbHVlO2Vsc2UgaWYoZS50eXBlPT09SW8uUGFyYW0pe2NvbnN0e3ZhbHVlOmIscmVwZWF0YWJsZTp5LG9wdGlvbmFsOkV9PWUsaz1iIGluIGM/Y1tiXToiIjtpZih0byhrKSYmIXkpdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlZCBwYXJhbSAiJHtifSIgaXMgYW4gYXJyYXkgYnV0IGl0IGlzIG5vdCByZXBlYXRhYmxlICgqIG9yICsgbW9kaWZpZXJzKWApO2NvbnN0IF89dG8oayk/ay5qb2luKCIvIik6aztpZighXyl7aWYoIUUpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIHBhcmFtICIke2J9ImApO3YubGVuZ3RoPDImJihkLmVuZHNXaXRoKCIvIik/ZD1kLnNsaWNlKDAsLTEpOmg9ITApfWQrPV99fXJldHVybiBkfHwiLyJ9fX0oZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuW1tdXTtpZigiLyI9PT1lKXJldHVybltbUG9dXTtpZighZS5zdGFydHNXaXRoKCIvIikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggIiR7ZX0iYCk7ZnVuY3Rpb24gY3Jhc2goZSl7dGhyb3cgbmV3IEVycm9yKGBFUlIgKCR7Y30pLyIke0V9IjogJHtlfWApfWxldCBjPVJvLlN0YXRpYyxkPWM7Y29uc3QgaD1bXTtsZXQgdjtmdW5jdGlvbiBmaW5hbGl6ZVNlZ21lbnQoKXt2JiZoLnB1c2godiksdj1bXX1sZXQgYix5PTAsRT0iIixrPSIiO2Z1bmN0aW9uIGNvbnN1bWVCdWZmZXIoKXtFJiYoYz09PVJvLlN0YXRpYz92LnB1c2goe3R5cGU6SW8uU3RhdGljLHZhbHVlOkV9KTpjPT09Um8uUGFyYW18fGM9PT1Sby5QYXJhbVJlZ0V4cHx8Yz09PVJvLlBhcmFtUmVnRXhwRW5kPyh2Lmxlbmd0aD4xJiYoIioiPT09Ynx8IisiPT09YikmJmNyYXNoKGBBIHJlcGVhdGFibGUgcGFyYW0gKCR7RX0pIG11c3QgYmUgYWxvbmUgaW4gaXRzIHNlZ21lbnQuIGVnOiAnLzppZHMrLmApLHYucHVzaCh7dHlwZTpJby5QYXJhbSx2YWx1ZTpFLHJlZ2V4cDprLHJlcGVhdGFibGU6IioiPT09Ynx8IisiPT09YixvcHRpb25hbDoiKiI9PT1ifHwiPyI9PT1ifSkpOmNyYXNoKCJJbnZhbGlkIHN0YXRlIHRvIGNvbnN1bWUgYnVmZmVyIiksRT0iIil9ZnVuY3Rpb24gYWRkQ2hhclRvQnVmZmVyKCl7RSs9Yn1mb3IoO3k8ZS5sZW5ndGg7KWlmKGI9ZVt5KytdLCJcXCIhPT1ifHxjPT09Um8uUGFyYW1SZWdFeHApc3dpdGNoKGMpe2Nhc2UgUm8uU3RhdGljOiIvIj09PWI/KEUmJmNvbnN1bWVCdWZmZXIoKSxmaW5hbGl6ZVNlZ21lbnQoKSk6IjoiPT09Yj8oY29uc3VtZUJ1ZmZlcigpLGM9Um8uUGFyYW0pOmFkZENoYXJUb0J1ZmZlcigpO2JyZWFrO2Nhc2UgUm8uRXNjYXBlTmV4dDphZGRDaGFyVG9CdWZmZXIoKSxjPWQ7YnJlYWs7Y2FzZSBSby5QYXJhbToiKCI9PT1iP2M9Um8uUGFyYW1SZWdFeHA6TW8udGVzdChiKT9hZGRDaGFyVG9CdWZmZXIoKTooY29uc3VtZUJ1ZmZlcigpLGM9Um8uU3RhdGljLCIqIiE9PWImJiI/IiE9PWImJiIrIiE9PWImJnktLSk7YnJlYWs7Y2FzZSBSby5QYXJhbVJlZ0V4cDoiKSI9PT1iPyJcXCI9PWtbay5sZW5ndGgtMV0/az1rLnNsaWNlKDAsLTEpK2I6Yz1Sby5QYXJhbVJlZ0V4cEVuZDprKz1iO2JyZWFrO2Nhc2UgUm8uUGFyYW1SZWdFeHBFbmQ6Y29uc3VtZUJ1ZmZlcigpLGM9Um8uU3RhdGljLCIqIiE9PWImJiI/IiE9PWImJiIrIiE9PWImJnktLSxrPSIiO2JyZWFrO2RlZmF1bHQ6Y3Jhc2goIlVua25vd24gc3RhdGUiKX1lbHNlIGQ9YyxjPVJvLkVzY2FwZU5leHQ7cmV0dXJuIGM9PT1Sby5QYXJhbVJlZ0V4cCYmY3Jhc2goYFVuZmluaXNoZWQgY3VzdG9tIFJlZ0V4cCBmb3IgcGFyYW0gIiR7RX0iYCksY29uc3VtZUJ1ZmZlcigpLGZpbmFsaXplU2VnbWVudCgpLGh9KGUucGF0aCksZCksdj1lbyhoLHtyZWNvcmQ6ZSxwYXJlbnQ6YyxjaGlsZHJlbjpbXSxhbGlhczpbXX0pO3JldHVybiBjJiYhdi5yZWNvcmQuYWxpYXNPZj09IWMucmVjb3JkLmFsaWFzT2YmJmMuY2hpbGRyZW4ucHVzaCh2KSx2fWZ1bmN0aW9uIGNyZWF0ZVJvdXRlck1hdGNoZXIoZSxjKXtjb25zdCBkPVtdLGg9bmV3IE1hcDtmdW5jdGlvbiBhZGRSb3V0ZShlLGQsaCl7Y29uc3Qgdj0haCxiPW5vcm1hbGl6ZVJvdXRlUmVjb3JkKGUpO2IuYWxpYXNPZj1oJiZoLnJlY29yZDtjb25zdCB5PW1lcmdlT3B0aW9ucyhjLGUpLEU9W2JdO2lmKCJhbGlhcyJpbiBlKXtjb25zdCBjPSJzdHJpbmciPT10eXBlb2YgZS5hbGlhcz9bZS5hbGlhc106ZS5hbGlhcztmb3IoY29uc3QgZSBvZiBjKUUucHVzaChub3JtYWxpemVSb3V0ZVJlY29yZChlbyh7fSxiLHtjb21wb25lbnRzOmg/aC5yZWNvcmQuY29tcG9uZW50czpiLmNvbXBvbmVudHMscGF0aDplLGFsaWFzT2Y6aD9oLnJlY29yZDpifSkpKX1sZXQgayxfO2Zvcihjb25zdCBjIG9mIEUpe2NvbnN0e3BhdGg6RX09YztpZihkJiYiLyIhPT1FWzBdKXtjb25zdCBlPWQucmVjb3JkLnBhdGgsaD0iLyI9PT1lW2UubGVuZ3RoLTFdPyIiOiIvIjtjLnBhdGg9ZC5yZWNvcmQucGF0aCsoRSYmaCtFKX1pZihrPWNyZWF0ZVJvdXRlUmVjb3JkTWF0Y2hlcihjLGQseSksaD9oLmFsaWFzLnB1c2goayk6KF89X3x8ayxfIT09ayYmXy5hbGlhcy5wdXNoKGspLHYmJmUubmFtZSYmIWlzQWxpYXNSZWNvcmQoaykmJnJlbW92ZVJvdXRlKGUubmFtZSkpLGlzTWF0Y2hhYmxlKGspJiZpbnNlcnRNYXRjaGVyKGspLGIuY2hpbGRyZW4pe2NvbnN0IGU9Yi5jaGlsZHJlbjtmb3IobGV0IGM9MDtjPGUubGVuZ3RoO2MrKylhZGRSb3V0ZShlW2NdLGssaCYmaC5jaGlsZHJlbltjXSl9aD1ofHxrfXJldHVybiBfPygpPT57cmVtb3ZlUm91dGUoXyl9Om5vb3AkMn1mdW5jdGlvbiByZW1vdmVSb3V0ZShlKXtpZihpc1JvdXRlTmFtZShlKSl7Y29uc3QgYz1oLmdldChlKTtjJiYoaC5kZWxldGUoZSksZC5zcGxpY2UoZC5pbmRleE9mKGMpLDEpLGMuY2hpbGRyZW4uZm9yRWFjaChyZW1vdmVSb3V0ZSksYy5hbGlhcy5mb3JFYWNoKHJlbW92ZVJvdXRlKSl9ZWxzZXtjb25zdCBjPWQuaW5kZXhPZihlKTtjPi0xJiYoZC5zcGxpY2UoYywxKSxlLnJlY29yZC5uYW1lJiZoLmRlbGV0ZShlLnJlY29yZC5uYW1lKSxlLmNoaWxkcmVuLmZvckVhY2gocmVtb3ZlUm91dGUpLGUuYWxpYXMuZm9yRWFjaChyZW1vdmVSb3V0ZSkpfX1mdW5jdGlvbiBpbnNlcnRNYXRjaGVyKGUpe2NvbnN0IGM9ZnVuY3Rpb24oZSxjKXtsZXQgZD0wLGg9Yy5sZW5ndGg7Zm9yKDtkIT09aDspe2NvbnN0IHY9ZCtoPj4xO2NvbXBhcmVQYXRoUGFyc2VyU2NvcmUoZSxjW3ZdKTwwP2g9djpkPXYrMX1jb25zdCB2PWZ1bmN0aW9uKGUpe2xldCBjPWU7Zm9yKDtjPWMucGFyZW50OylpZihpc01hdGNoYWJsZShjKSYmMD09PWNvbXBhcmVQYXRoUGFyc2VyU2NvcmUoZSxjKSlyZXR1cm4gY30oZSk7diYmKGg9Yy5sYXN0SW5kZXhPZih2LGgtMSkpO3JldHVybiBofShlLGQpO2Quc3BsaWNlKGMsMCxlKSxlLnJlY29yZC5uYW1lJiYhaXNBbGlhc1JlY29yZChlKSYmaC5zZXQoZS5yZWNvcmQubmFtZSxlKX1yZXR1cm4gYz1tZXJnZU9wdGlvbnMoJG8sYyksZS5mb3JFYWNoKGU9PmFkZFJvdXRlKGUpKSx7YWRkUm91dGU6YWRkUm91dGUscmVzb2x2ZTpmdW5jdGlvbihlLGMpe2xldCB2LGIseSxFPXt9O2lmKCJuYW1lImluIGUmJmUubmFtZSl7aWYodj1oLmdldChlLm5hbWUpLCF2KXRocm93IGNyZWF0ZVJvdXRlckVycm9yKG5vLk1BVENIRVJfTk9UX0ZPVU5ELHtsb2NhdGlvbjplfSk7eT12LnJlY29yZC5uYW1lLEU9ZW8ocGlja1BhcmFtcyhjLnBhcmFtcyx2LmtleXMuZmlsdGVyKGU9PiFlLm9wdGlvbmFsKS5jb25jYXQodi5wYXJlbnQ/di5wYXJlbnQua2V5cy5maWx0ZXIoZT0+ZS5vcHRpb25hbCk6W10pLm1hcChlPT5lLm5hbWUpKSxlLnBhcmFtcyYmcGlja1BhcmFtcyhlLnBhcmFtcyx2LmtleXMubWFwKGU9PmUubmFtZSkpKSxiPXYuc3RyaW5naWZ5KEUpfWVsc2UgaWYobnVsbCE9ZS5wYXRoKWI9ZS5wYXRoLHY9ZC5maW5kKGU9PmUucmUudGVzdChiKSksdiYmKEU9di5wYXJzZShiKSx5PXYucmVjb3JkLm5hbWUpO2Vsc2V7aWYodj1jLm5hbWU/aC5nZXQoYy5uYW1lKTpkLmZpbmQoZT0+ZS5yZS50ZXN0KGMucGF0aCkpLCF2KXRocm93IGNyZWF0ZVJvdXRlckVycm9yKG5vLk1BVENIRVJfTk9UX0ZPVU5ELHtsb2NhdGlvbjplLGN1cnJlbnRMb2NhdGlvbjpjfSk7eT12LnJlY29yZC5uYW1lLEU9ZW8oe30sYy5wYXJhbXMsZS5wYXJhbXMpLGI9di5zdHJpbmdpZnkoRSl9Y29uc3Qgaz1bXTtsZXQgXz12O2Zvcig7Xzspay51bnNoaWZ0KF8ucmVjb3JkKSxfPV8ucGFyZW50O3JldHVybntuYW1lOnkscGF0aDpiLHBhcmFtczpFLG1hdGNoZWQ6ayxtZXRhOm1lcmdlTWV0YUZpZWxkcyhrKX19LHJlbW92ZVJvdXRlOnJlbW92ZVJvdXRlLGNsZWFyUm91dGVzOmZ1bmN0aW9uKCl7ZC5sZW5ndGg9MCxoLmNsZWFyKCl9LGdldFJvdXRlczpmdW5jdGlvbigpe3JldHVybiBkfSxnZXRSZWNvcmRNYXRjaGVyOmZ1bmN0aW9uKGUpe3JldHVybiBoLmdldChlKX19fWZ1bmN0aW9uIHBpY2tQYXJhbXMoZSxjKXtjb25zdCBkPXt9O2Zvcihjb25zdCBoIG9mIGMpaCBpbiBlJiYoZFtoXT1lW2hdKTtyZXR1cm4gZH1mdW5jdGlvbiBub3JtYWxpemVSb3V0ZVJlY29yZChlKXtjb25zdCBjPXtwYXRoOmUucGF0aCxyZWRpcmVjdDplLnJlZGlyZWN0LG5hbWU6ZS5uYW1lLG1ldGE6ZS5tZXRhfHx7fSxhbGlhc09mOmUuYWxpYXNPZixiZWZvcmVFbnRlcjplLmJlZm9yZUVudGVyLHByb3BzOm5vcm1hbGl6ZVJlY29yZFByb3BzKGUpLGNoaWxkcmVuOmUuY2hpbGRyZW58fFtdLGluc3RhbmNlczp7fSxsZWF2ZUd1YXJkczpuZXcgU2V0LHVwZGF0ZUd1YXJkczpuZXcgU2V0LGVudGVyQ2FsbGJhY2tzOnt9LGNvbXBvbmVudHM6ImNvbXBvbmVudHMiaW4gZT9lLmNvbXBvbmVudHN8fG51bGw6ZS5jb21wb25lbnQmJntkZWZhdWx0OmUuY29tcG9uZW50fX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJtb2RzIix7dmFsdWU6e319KSxjfWZ1bmN0aW9uIG5vcm1hbGl6ZVJlY29yZFByb3BzKGUpe2NvbnN0IGM9e30sZD1lLnByb3BzfHwhMTtpZigiY29tcG9uZW50ImluIGUpYy5kZWZhdWx0PWQ7ZWxzZSBmb3IoY29uc3QgaCBpbiBlLmNvbXBvbmVudHMpY1toXT0ib2JqZWN0Ij09dHlwZW9mIGQ/ZFtoXTpkO3JldHVybiBjfWZ1bmN0aW9uIGlzQWxpYXNSZWNvcmQoZSl7Zm9yKDtlOyl7aWYoZS5yZWNvcmQuYWxpYXNPZilyZXR1cm4hMDtlPWUucGFyZW50fXJldHVybiExfWZ1bmN0aW9uIG1lcmdlTWV0YUZpZWxkcyhlKXtyZXR1cm4gZS5yZWR1Y2UoKGUsYyk9PmVvKGUsYy5tZXRhKSx7fSl9ZnVuY3Rpb24gaXNNYXRjaGFibGUoe3JlY29yZDplfSl7cmV0dXJuISEoZS5uYW1lfHxlLmNvbXBvbmVudHMmJk9iamVjdC5rZXlzKGUuY29tcG9uZW50cykubGVuZ3RofHxlLnJlZGlyZWN0KX1mdW5jdGlvbiB1c2VMaW5rKGUpe2NvbnN0IGM9ZWUoaW8pLGQ9ZWUoc28pLGg9cmUoKCk9Pntjb25zdCBkPWllKGUudG8pO3JldHVybiBjLnJlc29sdmUoZCl9KSx2PXJlKCgpPT57Y29uc3R7bWF0Y2hlZDplfT1oLnZhbHVlLHtsZW5ndGg6Y309ZSx2PWVbYy0xXSxiPWQubWF0Y2hlZDtpZighdnx8IWIubGVuZ3RoKXJldHVybi0xO2NvbnN0IHk9Yi5maW5kSW5kZXgoaXNTYW1lUm91dGVSZWNvcmQuYmluZChudWxsLHYpKTtpZih5Pi0xKXJldHVybiB5O2NvbnN0IEU9Z2V0T3JpZ2luYWxQYXRoKGVbYy0yXSk7cmV0dXJuIGM+MSYmZ2V0T3JpZ2luYWxQYXRoKHYpPT09RSYmYltiLmxlbmd0aC0xXS5wYXRoIT09RT9iLmZpbmRJbmRleChpc1NhbWVSb3V0ZVJlY29yZC5iaW5kKG51bGwsZVtjLTJdKSk6eX0pLGI9cmUoKCk9PnYudmFsdWU+LTEmJmZ1bmN0aW9uKGUsYyl7Zm9yKGNvbnN0IGQgaW4gYyl7Y29uc3QgaD1jW2RdLHY9ZVtkXTtpZigic3RyaW5nIj09dHlwZW9mIGgpe2lmKGghPT12KXJldHVybiExfWVsc2UgaWYoIXRvKHYpfHx2Lmxlbmd0aCE9PWgubGVuZ3RofHxoLnNvbWUoKGUsYyk9PmUudmFsdWVPZigpIT09dltjXS52YWx1ZU9mKCkpKXJldHVybiExfXJldHVybiEwfShkLnBhcmFtcyxoLnZhbHVlLnBhcmFtcykpLHk9cmUoKCk9PnYudmFsdWU+LTEmJnYudmFsdWU9PT1kLm1hdGNoZWQubGVuZ3RoLTEmJmlzU2FtZVJvdXRlTG9jYXRpb25QYXJhbXMoZC5wYXJhbXMsaC52YWx1ZS5wYXJhbXMpKTtyZXR1cm57cm91dGU6aCxocmVmOnJlKCgpPT5oLnZhbHVlLmhyZWYpLGlzQWN0aXZlOmIsaXNFeGFjdEFjdGl2ZTp5LG5hdmlnYXRlOmZ1bmN0aW9uKGQ9e30pe2lmKGZ1bmN0aW9uKGUpe2lmKGUubWV0YUtleXx8ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5zaGlmdEtleSlyZXR1cm47aWYoZS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtpZih2b2lkIDAhPT1lLmJ1dHRvbiYmMCE9PWUuYnV0dG9uKXJldHVybjtpZihlLmN1cnJlbnRUYXJnZXQmJmUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUpe2NvbnN0IGM9ZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgidGFyZ2V0Iik7aWYoL1xiX2JsYW5rXGIvaS50ZXN0KGMpKXJldHVybn1lLnByZXZlbnREZWZhdWx0JiZlLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuITB9KGQpKXtjb25zdCBkPWNbaWUoZS5yZXBsYWNlKT8icmVwbGFjZSI6InB1c2giXShpZShlLnRvKSkuY2F0Y2gobm9vcCQyKTtyZXR1cm4gZS52aWV3VHJhbnNpdGlvbiYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmInN0YXJ0Vmlld1RyYW5zaXRpb24iaW4gZG9jdW1lbnQmJmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCk9PmQpLGR9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX19Y29uc3QgRm89dGUoe25hbWU6IlJvdXRlckxpbmsiLGNvbXBhdENvbmZpZzp7TU9ERTozfSxwcm9wczp7dG86e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiEwfSxyZXBsYWNlOkJvb2xlYW4sYWN0aXZlQ2xhc3M6U3RyaW5nLGV4YWN0QWN0aXZlQ2xhc3M6U3RyaW5nLGN1c3RvbTpCb29sZWFuLGFyaWFDdXJyZW50VmFsdWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InBhZ2UifSx2aWV3VHJhbnNpdGlvbjpCb29sZWFufSx1c2VMaW5rOnVzZUxpbmssc2V0dXAoZSx7c2xvdHM6Y30pe2NvbnN0IGQ9Y2UodXNlTGluayhlKSkse29wdGlvbnM6aH09ZWUoaW8pLHY9cmUoKCk9Pih7W2dldExpbmtDbGFzcyhlLmFjdGl2ZUNsYXNzLGgubGlua0FjdGl2ZUNsYXNzLCJyb3V0ZXItbGluay1hY3RpdmUiKV06ZC5pc0FjdGl2ZSxbZ2V0TGlua0NsYXNzKGUuZXhhY3RBY3RpdmVDbGFzcyxoLmxpbmtFeGFjdEFjdGl2ZUNsYXNzLCJyb3V0ZXItbGluay1leGFjdC1hY3RpdmUiKV06ZC5pc0V4YWN0QWN0aXZlfSkpO3JldHVybigpPT57Y29uc3QgaD1jLmRlZmF1bHQmJigxPT09KGI9Yy5kZWZhdWx0KGQpKS5sZW5ndGg/YlswXTpiKTt2YXIgYjtyZXR1cm4gZS5jdXN0b20/aDpvZSgiYSIseyJhcmlhLWN1cnJlbnQiOmQuaXNFeGFjdEFjdGl2ZT9lLmFyaWFDdXJyZW50VmFsdWU6bnVsbCxocmVmOmQuaHJlZixvbkNsaWNrOmQubmF2aWdhdGUsY2xhc3M6di52YWx1ZX0saCl9fX0pO2Z1bmN0aW9uIGdldE9yaWdpbmFsUGF0aChlKXtyZXR1cm4gZT9lLmFsaWFzT2Y/ZS5hbGlhc09mLnBhdGg6ZS5wYXRoOiIifWNvbnN0IGdldExpbmtDbGFzcz0oZSxjLGQpPT5udWxsIT1lP2U6bnVsbCE9Yz9jOmQ7ZnVuY3Rpb24gbm9ybWFsaXplU2xvdCQxKGUsYyl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgZD1lKGMpO3JldHVybiAxPT09ZC5sZW5ndGg/ZFswXTpkfWNvbnN0IFZvPXRlKHtuYW1lOiJSb3V0ZXJWaWV3Iixpbmhlcml0QXR0cnM6ITEscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6ImRlZmF1bHQifSxyb3V0ZTpPYmplY3R9LGNvbXBhdENvbmZpZzp7TU9ERTozfSxzZXR1cChlLHthdHRyczpjLHNsb3RzOmR9KXtjb25zdCBoPWVlKGxvKSx2PXJlKCgpPT5lLnJvdXRlfHxoLnZhbHVlKSxiPWVlKGFvLDApLHk9cmUoKCk9PntsZXQgZT1pZShiKTtjb25zdHttYXRjaGVkOmN9PXYudmFsdWU7bGV0IGQ7Zm9yKDsoZD1jW2VdKSYmIWQuY29tcG9uZW50czspZSsrO3JldHVybiBlfSksRT1yZSgoKT0+di52YWx1ZS5tYXRjaGVkW3kudmFsdWVdKTtkZShhbyxyZSgoKT0+eS52YWx1ZSsxKSksZGUocm8sRSksZGUobG8sdik7Y29uc3Qgaz1hZSgpO3JldHVybiBuZSgoKT0+W2sudmFsdWUsRS52YWx1ZSxlLm5hbWVdLChbZSxjLGRdLFtoLHYsYl0pPT57YyYmKGMuaW5zdGFuY2VzW2RdPWUsdiYmdiE9PWMmJmUmJmU9PT1oJiYoYy5sZWF2ZUd1YXJkcy5zaXplfHwoYy5sZWF2ZUd1YXJkcz12LmxlYXZlR3VhcmRzKSxjLnVwZGF0ZUd1YXJkcy5zaXplfHwoYy51cGRhdGVHdWFyZHM9di51cGRhdGVHdWFyZHMpKSksIWV8fCFjfHx2JiZpc1NhbWVSb3V0ZVJlY29yZChjLHYpJiZofHwoYy5lbnRlckNhbGxiYWNrc1tkXXx8W10pLmZvckVhY2goYz0+YyhlKSl9LHtmbHVzaDoicG9zdCJ9KSwoKT0+e2NvbnN0IGg9di52YWx1ZSxiPWUubmFtZSx5PUUudmFsdWUsXz15JiZ5LmNvbXBvbmVudHNbYl07aWYoIV8pcmV0dXJuIG5vcm1hbGl6ZVNsb3QkMShkLmRlZmF1bHQse0NvbXBvbmVudDpfLHJvdXRlOmh9KTtjb25zdCBUPXkucHJvcHNbYl0sTj1UPyEwPT09VD9oLnBhcmFtczoiZnVuY3Rpb24iPT10eXBlb2YgVD9UKGgpOlQ6bnVsbCxPPW9lKF8sZW8oe30sTixjLHtvblZub2RlVW5tb3VudGVkOmU9PntlLmNvbXBvbmVudC5pc1VubW91bnRlZCYmKHkuaW5zdGFuY2VzW2JdPW51bGwpfSxyZWY6a30pKTtyZXR1cm4gbm9ybWFsaXplU2xvdCQxKGQuZGVmYXVsdCx7Q29tcG9uZW50Ok8scm91dGU6aH0pfHxPfX19KTtmdW5jdGlvbiBjcmVhdGVSb3V0ZXIoZSl7Y29uc3QgYz1jcmVhdGVSb3V0ZXJNYXRjaGVyKGUucm91dGVzLGUpLGQ9ZS5wYXJzZVF1ZXJ5fHxwYXJzZVF1ZXJ5LGg9ZS5zdHJpbmdpZnlRdWVyeXx8c3RyaW5naWZ5UXVlcnksdj1lLmhpc3RvcnksYj11c2VDYWxsYmFja3MoKSx5PXVzZUNhbGxiYWNrcygpLEU9dXNlQ2FsbGJhY2tzKCksaz1sZShfbyk7bGV0IF89X287Wm4mJmUuc2Nyb2xsQmVoYXZpb3ImJiJzY3JvbGxSZXN0b3JhdGlvbiJpbiBoaXN0b3J5JiYoaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbj0ibWFudWFsIik7Y29uc3QgVD1hcHBseVRvUGFyYW1zLmJpbmQobnVsbCxlPT4iIitlKSxOPWFwcGx5VG9QYXJhbXMuYmluZChudWxsLGVuY29kZVBhcmFtKSxPPWFwcGx5VG9QYXJhbXMuYmluZChudWxsLGRlY29kZSk7ZnVuY3Rpb24gcmVzb2x2ZShlLGIpe2lmKGI9ZW8oe30sYnx8ay52YWx1ZSksInN0cmluZyI9PXR5cGVvZiBlKXtjb25zdCBoPXBhcnNlVVJMKGQsZSxiLnBhdGgpLHk9Yy5yZXNvbHZlKHtwYXRoOmgucGF0aH0sYiksRT12LmNyZWF0ZUhyZWYoaC5mdWxsUGF0aCk7cmV0dXJuIGVvKGgseSx7cGFyYW1zOk8oeS5wYXJhbXMpLGhhc2g6ZGVjb2RlKGguaGFzaCkscmVkaXJlY3RlZEZyb206dm9pZCAwLGhyZWY6RX0pfWxldCB5O2lmKG51bGwhPWUucGF0aCl5PWVvKHt9LGUse3BhdGg6cGFyc2VVUkwoZCxlLnBhdGgsYi5wYXRoKS5wYXRofSk7ZWxzZXtjb25zdCBjPWVvKHt9LGUucGFyYW1zKTtmb3IoY29uc3QgZSBpbiBjKW51bGw9PWNbZV0mJmRlbGV0ZSBjW2VdO3k9ZW8oe30sZSx7cGFyYW1zOk4oYyl9KSxiLnBhcmFtcz1OKGIucGFyYW1zKX1jb25zdCBFPWMucmVzb2x2ZSh5LGIpLF89ZS5oYXNofHwiIjtFLnBhcmFtcz1UKE8oRS5wYXJhbXMpKTtjb25zdCBSPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1jLnF1ZXJ5P2UoYy5xdWVyeSk6IiI7cmV0dXJuIGMucGF0aCsoZCYmIj8iKStkKyhjLmhhc2h8fCIiKX0oaCxlbyh7fSxlLHtoYXNoOihNPV8sY29tbW9uRW5jb2RlKE0pLnJlcGxhY2UoU28sInsiKS5yZXBsYWNlKHdvLCJ9IikucmVwbGFjZSh5bywiXiIpKSxwYXRoOkUucGF0aH0pKTt2YXIgTTtjb25zdCBEPXYuY3JlYXRlSHJlZihSKTtyZXR1cm4gZW8oe2Z1bGxQYXRoOlIsaGFzaDpfLHF1ZXJ5Omg9PT1zdHJpbmdpZnlRdWVyeT9ub3JtYWxpemVRdWVyeShlLnF1ZXJ5KTplLnF1ZXJ5fHx7fX0sRSx7cmVkaXJlY3RlZEZyb206dm9pZCAwLGhyZWY6RH0pfWZ1bmN0aW9uIGxvY2F0aW9uQXNPYmplY3QoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3BhcnNlVVJMKGQsZSxrLnZhbHVlLnBhdGgpOmVvKHt9LGUpfWZ1bmN0aW9uIGNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uKGUsYyl7aWYoXyE9PWUpcmV0dXJuIGNyZWF0ZVJvdXRlckVycm9yKG5vLk5BVklHQVRJT05fQ0FOQ0VMTEVELHtmcm9tOmMsdG86ZX0pfWZ1bmN0aW9uIHB1c2goZSl7cmV0dXJuIHB1c2hXaXRoUmVkaXJlY3QoZSl9ZnVuY3Rpb24gaGFuZGxlUmVkaXJlY3RSZWNvcmQoZSxjKXtjb25zdCBkPWUubWF0Y2hlZFtlLm1hdGNoZWQubGVuZ3RoLTFdO2lmKGQmJmQucmVkaXJlY3Qpe2NvbnN0e3JlZGlyZWN0Omh9PWQ7bGV0IHY9ImZ1bmN0aW9uIj09dHlwZW9mIGg/aChlLGMpOmg7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB2JiYodj12LmluY2x1ZGVzKCI/Iil8fHYuaW5jbHVkZXMoIiMiKT92PWxvY2F0aW9uQXNPYmplY3Qodik6e3BhdGg6dn0sdi5wYXJhbXM9e30pLGVvKHtxdWVyeTplLnF1ZXJ5LGhhc2g6ZS5oYXNoLHBhcmFtczpudWxsIT12LnBhdGg/e306ZS5wYXJhbXN9LHYpfX1mdW5jdGlvbiBwdXNoV2l0aFJlZGlyZWN0KGUsYyl7Y29uc3QgZD1fPXJlc29sdmUoZSksdj1rLnZhbHVlLGI9ZS5zdGF0ZSx5PWUuZm9yY2UsRT0hMD09PWUucmVwbGFjZSxUPWhhbmRsZVJlZGlyZWN0UmVjb3JkKGQsdik7aWYoVClyZXR1cm4gcHVzaFdpdGhSZWRpcmVjdChlbyhsb2NhdGlvbkFzT2JqZWN0KFQpLHtzdGF0ZToib2JqZWN0Ij09dHlwZW9mIFQ/ZW8oe30sYixULnN0YXRlKTpiLGZvcmNlOnkscmVwbGFjZTpFfSksY3x8ZCk7Y29uc3QgTj1kO2xldCBPO3JldHVybiBOLnJlZGlyZWN0ZWRGcm9tPWMsIXkmJmZ1bmN0aW9uKGUsYyxkKXtjb25zdCBoPWMubWF0Y2hlZC5sZW5ndGgtMSx2PWQubWF0Y2hlZC5sZW5ndGgtMTtyZXR1cm4gaD4tMSYmaD09PXYmJmlzU2FtZVJvdXRlUmVjb3JkKGMubWF0Y2hlZFtoXSxkLm1hdGNoZWRbdl0pJiZpc1NhbWVSb3V0ZUxvY2F0aW9uUGFyYW1zKGMucGFyYW1zLGQucGFyYW1zKSYmZShjLnF1ZXJ5KT09PWUoZC5xdWVyeSkmJmMuaGFzaD09PWQuaGFzaH0oaCx2LGQpJiYoTz1jcmVhdGVSb3V0ZXJFcnJvcihuby5OQVZJR0FUSU9OX0RVUExJQ0FURUQse3RvOk4sZnJvbTp2fSksaGFuZGxlU2Nyb2xsKHYsdiwhMCwhMSkpLChPP1Byb21pc2UucmVzb2x2ZShPKTpuYXZpZ2F0ZShOLHYpKS5jYXRjaChlPT5pc05hdmlnYXRpb25GYWlsdXJlKGUpP2lzTmF2aWdhdGlvbkZhaWx1cmUoZSxuby5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKT9lOm1hcmtBc1JlYWR5KGUpOnRyaWdnZXJFcnJvcihlLE4sdikpLnRoZW4oZT0+e2lmKGUpe2lmKGlzTmF2aWdhdGlvbkZhaWx1cmUoZSxuby5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKSlyZXR1cm4gcHVzaFdpdGhSZWRpcmVjdChlbyh7cmVwbGFjZTpFfSxsb2NhdGlvbkFzT2JqZWN0KGUudG8pLHtzdGF0ZToib2JqZWN0Ij09dHlwZW9mIGUudG8/ZW8oe30sYixlLnRvLnN0YXRlKTpiLGZvcmNlOnl9KSxjfHxOKX1lbHNlIGU9ZmluYWxpemVOYXZpZ2F0aW9uKE4sdiwhMCxFLGIpO3JldHVybiB0cmlnZ2VyQWZ0ZXJFYWNoKE4sdixlKSxlfSl9ZnVuY3Rpb24gY2hlY2tDYW5jZWxlZE5hdmlnYXRpb25BbmRSZWplY3QoZSxjKXtjb25zdCBkPWNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uKGUsYyk7cmV0dXJuIGQ/UHJvbWlzZS5yZWplY3QoZCk6UHJvbWlzZS5yZXNvbHZlKCl9ZnVuY3Rpb24gcnVuV2l0aENvbnRleHQoZSl7Y29uc3QgYz1GLnZhbHVlcygpLm5leHQoKS52YWx1ZTtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIGMucnVuV2l0aENvbnRleHQ/Yy5ydW5XaXRoQ29udGV4dChlKTplKCl9ZnVuY3Rpb24gbmF2aWdhdGUoZSxjKXtsZXQgZDtjb25zdFtoLHYsRV09ZnVuY3Rpb24oZSxjKXtjb25zdCBkPVtdLGg9W10sdj1bXSxiPU1hdGgubWF4KGMubWF0Y2hlZC5sZW5ndGgsZS5tYXRjaGVkLmxlbmd0aCk7Zm9yKGxldCB5PTA7eTxiO3krKyl7Y29uc3QgYj1jLm1hdGNoZWRbeV07YiYmKGUubWF0Y2hlZC5maW5kKGU9PmlzU2FtZVJvdXRlUmVjb3JkKGUsYikpP2gucHVzaChiKTpkLnB1c2goYikpO2NvbnN0IEU9ZS5tYXRjaGVkW3ldO0UmJihjLm1hdGNoZWQuZmluZChlPT5pc1NhbWVSb3V0ZVJlY29yZChlLEUpKXx8di5wdXNoKEUpKX1yZXR1cm5bZCxoLHZdfShlLGMpO2Q9ZXh0cmFjdENvbXBvbmVudHNHdWFyZHMoaC5yZXZlcnNlKCksImJlZm9yZVJvdXRlTGVhdmUiLGUsYyk7Zm9yKGNvbnN0IHYgb2YgaCl2LmxlYXZlR3VhcmRzLmZvckVhY2goaD0+e2QucHVzaChndWFyZFRvUHJvbWlzZUZuKGgsZSxjKSl9KTtjb25zdCBrPWNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uQW5kUmVqZWN0LmJpbmQobnVsbCxlLGMpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKS50aGVuKCgpPT57ZD1bXTtmb3IoY29uc3QgaCBvZiBiLmxpc3QoKSlkLnB1c2goZ3VhcmRUb1Byb21pc2VGbihoLGUsYykpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLnRoZW4oKCk9PntkPWV4dHJhY3RDb21wb25lbnRzR3VhcmRzKHYsImJlZm9yZVJvdXRlVXBkYXRlIixlLGMpO2Zvcihjb25zdCBoIG9mIHYpaC51cGRhdGVHdWFyZHMuZm9yRWFjaChoPT57ZC5wdXNoKGd1YXJkVG9Qcm9taXNlRm4oaCxlLGMpKX0pO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLnRoZW4oKCk9PntkPVtdO2Zvcihjb25zdCBoIG9mIEUpaWYoaC5iZWZvcmVFbnRlcilpZih0byhoLmJlZm9yZUVudGVyKSlmb3IoY29uc3QgdiBvZiBoLmJlZm9yZUVudGVyKWQucHVzaChndWFyZFRvUHJvbWlzZUZuKHYsZSxjKSk7ZWxzZSBkLnB1c2goZ3VhcmRUb1Byb21pc2VGbihoLmJlZm9yZUVudGVyLGUsYykpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLnRoZW4oKCk9PihlLm1hdGNoZWQuZm9yRWFjaChlPT5lLmVudGVyQ2FsbGJhY2tzPXt9KSxkPWV4dHJhY3RDb21wb25lbnRzR3VhcmRzKEUsImJlZm9yZVJvdXRlRW50ZXIiLGUsYyxydW5XaXRoQ29udGV4dCksZC5wdXNoKGspLHJ1bkd1YXJkUXVldWUoZCkpKS50aGVuKCgpPT57ZD1bXTtmb3IoY29uc3QgaCBvZiB5Lmxpc3QoKSlkLnB1c2goZ3VhcmRUb1Byb21pc2VGbihoLGUsYykpO3JldHVybiBkLnB1c2goaykscnVuR3VhcmRRdWV1ZShkKX0pLmNhdGNoKGU9PmlzTmF2aWdhdGlvbkZhaWx1cmUoZSxuby5OQVZJR0FUSU9OX0NBTkNFTExFRCk/ZTpQcm9taXNlLnJlamVjdChlKSl9ZnVuY3Rpb24gdHJpZ2dlckFmdGVyRWFjaChlLGMsZCl7RS5saXN0KCkuZm9yRWFjaChoPT5ydW5XaXRoQ29udGV4dCgoKT0+aChlLGMsZCkpKX1mdW5jdGlvbiBmaW5hbGl6ZU5hdmlnYXRpb24oZSxjLGQsaCxiKXtjb25zdCB5PWNoZWNrQ2FuY2VsZWROYXZpZ2F0aW9uKGUsYyk7aWYoeSlyZXR1cm4geTtjb25zdCBFPWM9PT1fbyxfPVpuP2hpc3Rvcnkuc3RhdGU6e307ZCYmKGh8fEU/di5yZXBsYWNlKGUuZnVsbFBhdGgsZW8oe3Njcm9sbDpFJiZfJiZfLnNjcm9sbH0sYikpOnYucHVzaChlLmZ1bGxQYXRoLGIpKSxrLnZhbHVlPWUsaGFuZGxlU2Nyb2xsKGUsYyxkLEUpLG1hcmtBc1JlYWR5KCl9bGV0IFI7ZnVuY3Rpb24gc2V0dXBMaXN0ZW5lcnMoKXtSfHwoUj12Lmxpc3RlbigoZSxjLGQpPT57aWYoIVYubGlzdGVuaW5nKXJldHVybjtjb25zdCBoPXJlc29sdmUoZSksYj1oYW5kbGVSZWRpcmVjdFJlY29yZChoLFYuY3VycmVudFJvdXRlLnZhbHVlKTtpZihiKXJldHVybiB2b2lkIHB1c2hXaXRoUmVkaXJlY3QoZW8oYix7cmVwbGFjZTohMCxmb3JjZTohMH0pLGgpLmNhdGNoKG5vb3AkMik7Xz1oO2NvbnN0IHk9ay52YWx1ZTt2YXIgRSxUO1puJiYoRT1nZXRTY3JvbGxLZXkoeS5mdWxsUGF0aCxkLmRlbHRhKSxUPXtsZWZ0OndpbmRvdy5zY3JvbGxYLHRvcDp3aW5kb3cuc2Nyb2xsWX0sT28uc2V0KEUsVCkpLG5hdmlnYXRlKGgseSkuY2F0Y2goZT0+aXNOYXZpZ2F0aW9uRmFpbHVyZShlLG5vLk5BVklHQVRJT05fQUJPUlRFRHxuby5OQVZJR0FUSU9OX0NBTkNFTExFRCk/ZTppc05hdmlnYXRpb25GYWlsdXJlKGUsbm8uTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCk/KHB1c2hXaXRoUmVkaXJlY3QoZW8obG9jYXRpb25Bc09iamVjdChlLnRvKSx7Zm9yY2U6ITB9KSxoKS50aGVuKGU9Pntpc05hdmlnYXRpb25GYWlsdXJlKGUsbm8uTkFWSUdBVElPTl9BQk9SVEVEfG5vLk5BVklHQVRJT05fRFVQTElDQVRFRCkmJiFkLmRlbHRhJiZkLnR5cGU9PT1Uby5wb3AmJnYuZ28oLTEsITEpfSkuY2F0Y2gobm9vcCQyKSxQcm9taXNlLnJlamVjdCgpKTooZC5kZWx0YSYmdi5nbygtZC5kZWx0YSwhMSksdHJpZ2dlckVycm9yKGUsaCx5KSkpLnRoZW4oZT0+eyhlPWV8fGZpbmFsaXplTmF2aWdhdGlvbihoLHksITEpKSYmKGQuZGVsdGEmJiFpc05hdmlnYXRpb25GYWlsdXJlKGUsbm8uTkFWSUdBVElPTl9DQU5DRUxMRUQpP3YuZ28oLWQuZGVsdGEsITEpOmQudHlwZT09PVRvLnBvcCYmaXNOYXZpZ2F0aW9uRmFpbHVyZShlLG5vLk5BVklHQVRJT05fQUJPUlRFRHxuby5OQVZJR0FUSU9OX0RVUExJQ0FURUQpJiZ2LmdvKC0xLCExKSksdHJpZ2dlckFmdGVyRWFjaChoLHksZSl9KS5jYXRjaChub29wJDIpfSkpfWxldCBNLEQ9dXNlQ2FsbGJhY2tzKCksTD11c2VDYWxsYmFja3MoKTtmdW5jdGlvbiB0cmlnZ2VyRXJyb3IoZSxjLGQpe21hcmtBc1JlYWR5KGUpO2NvbnN0IGg9TC5saXN0KCk7cmV0dXJuIGgubGVuZ3RoP2guZm9yRWFjaChoPT5oKGUsYyxkKSk6Y29uc29sZS5lcnJvcihlKSxQcm9taXNlLnJlamVjdChlKX1mdW5jdGlvbiBtYXJrQXNSZWFkeShlKXtyZXR1cm4gTXx8KE09IWUsc2V0dXBMaXN0ZW5lcnMoKSxELmxpc3QoKS5mb3JFYWNoKChbYyxkXSk9PmU/ZChlKTpjKCkpLEQucmVzZXQoKSksZX1mdW5jdGlvbiBoYW5kbGVTY3JvbGwoYyxkLGgsdil7Y29uc3R7c2Nyb2xsQmVoYXZpb3I6Yn09ZTtpZighWm58fCFiKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCB5PSFoJiZmdW5jdGlvbihlKXtjb25zdCBjPU9vLmdldChlKTtyZXR1cm4gT28uZGVsZXRlKGUpLGN9KGdldFNjcm9sbEtleShjLmZ1bGxQYXRoLDApKXx8KHZ8fCFoKSYmaGlzdG9yeS5zdGF0ZSYmaGlzdG9yeS5zdGF0ZS5zY3JvbGx8fG51bGw7cmV0dXJuIHVlKCkudGhlbigoKT0+YihjLGQseSkpLnRoZW4oZT0+ZSYmc2Nyb2xsVG9Qb3NpdGlvbihlKSkuY2F0Y2goZT0+dHJpZ2dlckVycm9yKGUsYyxkKSl9Y29uc3QgZ289ZT0+di5nbyhlKTtsZXQgJDtjb25zdCBGPW5ldyBTZXQsVj17Y3VycmVudFJvdXRlOmssbGlzdGVuaW5nOiEwLGFkZFJvdXRlOmZ1bmN0aW9uKGUsZCl7bGV0IGgsdjtyZXR1cm4gaXNSb3V0ZU5hbWUoZSk/KGg9Yy5nZXRSZWNvcmRNYXRjaGVyKGUpLHY9ZCk6dj1lLGMuYWRkUm91dGUodixoKX0scmVtb3ZlUm91dGU6ZnVuY3Rpb24oZSl7Y29uc3QgZD1jLmdldFJlY29yZE1hdGNoZXIoZSk7ZCYmYy5yZW1vdmVSb3V0ZShkKX0sY2xlYXJSb3V0ZXM6Yy5jbGVhclJvdXRlcyxoYXNSb3V0ZTpmdW5jdGlvbihlKXtyZXR1cm4hIWMuZ2V0UmVjb3JkTWF0Y2hlcihlKX0sZ2V0Um91dGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZ2V0Um91dGVzKCkubWFwKGU9PmUucmVjb3JkKX0scmVzb2x2ZTpyZXNvbHZlLG9wdGlvbnM6ZSxwdXNoOnB1c2gscmVwbGFjZTpmdW5jdGlvbihlKXtyZXR1cm4gcHVzaChlbyhsb2NhdGlvbkFzT2JqZWN0KGUpLHtyZXBsYWNlOiEwfSkpfSxnbzpnbyxiYWNrOigpPT5nbygtMSksZm9yd2FyZDooKT0+Z28oMSksYmVmb3JlRWFjaDpiLmFkZCxiZWZvcmVSZXNvbHZlOnkuYWRkLGFmdGVyRWFjaDpFLmFkZCxvbkVycm9yOkwuYWRkLGlzUmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gTSYmay52YWx1ZSE9PV9vP1Byb21pc2UucmVzb2x2ZSgpOm5ldyBQcm9taXNlKChlLGMpPT57RC5hZGQoW2UsY10pfSl9LGluc3RhbGwoZSl7ZS5jb21wb25lbnQoIlJvdXRlckxpbmsiLEZvKSxlLmNvbXBvbmVudCgiUm91dGVyVmlldyIsVm8pLGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJHJvdXRlcj1WLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCIkcm91dGUiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+aWUoayl9KSxabiYmISQmJmsudmFsdWU9PT1fbyYmKCQ9ITAscHVzaCh2LmxvY2F0aW9uKS5jYXRjaChlPT57fSkpO2NvbnN0IGM9e307Zm9yKGNvbnN0IGUgaW4gX28pT2JqZWN0LmRlZmluZVByb3BlcnR5KGMsZSx7Z2V0OigpPT5rLnZhbHVlW2VdLGVudW1lcmFibGU6ITB9KTtlLnByb3ZpZGUoaW8sViksZS5wcm92aWRlKHNvLHNlKGMpKSxlLnByb3ZpZGUobG8sayk7Y29uc3QgZD1lLnVubW91bnQ7Ri5hZGQoZSksZS51bm1vdW50PWZ1bmN0aW9uKCl7Ri5kZWxldGUoZSksRi5zaXplPDEmJihfPV9vLFImJlIoKSxSPW51bGwsay52YWx1ZT1fbywkPSExLE09ITEpLGQoKX19fTtmdW5jdGlvbiBydW5HdWFyZFF1ZXVlKGUpe3JldHVybiBlLnJlZHVjZSgoZSxjKT0+ZS50aGVuKCgpPT5ydW5XaXRoQ29udGV4dChjKSksUHJvbWlzZS5yZXNvbHZlKCkpfXJldHVybiBWfWNvbnN0IHpvPXt0cmFpbGluZzohMH07ZnVuY3Rpb24gZGVib3VuY2UoZSxjPTI1LGQ9e30pe2lmKGQ9ey4uLnpvLC4uLmR9LCFOdW1iZXIuaXNGaW5pdGUoYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYHdhaXRgIHRvIGJlIGEgZmluaXRlIG51bWJlciIpO2xldCBoLHYsYix5LEU9W107Y29uc3QgYXBwbHlGbj0oYyxoKT0+KGI9YXN5bmMgZnVuY3Rpb24oZSxjLGQpe3JldHVybiBhd2FpdCBlLmFwcGx5KGMsZCl9KGUsYyxoKSxiLmZpbmFsbHkoKCk9PntpZihiPW51bGwsZC50cmFpbGluZyYmeSYmIXYpe2NvbnN0IGU9YXBwbHlGbihjLHkpO3JldHVybiB5PW51bGwsZX19KSxiKSxkZWJvdW5jZWQ9ZnVuY3Rpb24oLi4uZSl7cmV0dXJuIGQudHJhaWxpbmcmJih5PWUpLGJ8fG5ldyBQcm9taXNlKGI9Pntjb25zdCBrPSF2JiZkLmxlYWRpbmc7Y2xlYXJUaW1lb3V0KHYpLHY9c2V0VGltZW91dCgoKT0+e3Y9bnVsbDtjb25zdCBjPWQubGVhZGluZz9oOmFwcGx5Rm4odGhpcyxlKTt5PW51bGw7Zm9yKGNvbnN0IGUgb2YgRSllKGMpO0U9W119LGMpLGs/KGg9YXBwbHlGbih0aGlzLGUpLGIoaCkpOkUucHVzaChiKX0pfSxfY2xlYXJUaW1lb3V0PWU9PntlJiYoY2xlYXJUaW1lb3V0KGUpLHY9bnVsbCl9O3JldHVybiBkZWJvdW5jZWQuaXNQZW5kaW5nPSgpPT4hIXYsZGVib3VuY2VkLmNhbmNlbD0oKT0+e19jbGVhclRpbWVvdXQodiksRT1bXSx5PW51bGx9LGRlYm91bmNlZC5mbHVzaD0oKT0+e2lmKF9jbGVhclRpbWVvdXQodiksIXl8fGIpcmV0dXJuO2NvbnN0IGU9eTtyZXR1cm4geT1udWxsLGFwcGx5Rm4odGhpcyxlKX0sZGVib3VuY2VkfXZhciBxbz17aW5oZXJpdDoiaW5oZXJpdCIsY3VycmVudDoiY3VycmVudGNvbG9yIix0cmFuc3BhcmVudDoidHJhbnNwYXJlbnQiLGJsYWNrOiIjMDAwIix3aGl0ZToiI2ZmZiIsc2xhdGU6ezUwOiJva2xjaCg5OC40JSAwLjAwMyAyNDcuODU4KSIsMTAwOiJva2xjaCg5Ni44JSAwLjAwNyAyNDcuODk2KSIsMjAwOiJva2xjaCg5Mi45JSAwLjAxMyAyNTUuNTA4KSIsMzAwOiJva2xjaCg4Ni45JSAwLjAyMiAyNTIuODk0KSIsNDAwOiJva2xjaCg3MC40JSAwLjA0IDI1Ni43ODgpIiw1MDA6Im9rbGNoKDU1LjQlIDAuMDQ2IDI1Ny40MTcpIiw2MDA6Im9rbGNoKDQ0LjYlIDAuMDQzIDI1Ny4yODEpIiw3MDA6Im9rbGNoKDM3LjIlIDAuMDQ0IDI1Ny4yODcpIiw4MDA6Im9rbGNoKDI3LjklIDAuMDQxIDI2MC4wMzEpIiw5MDA6Im9rbGNoKDIwLjglIDAuMDQyIDI2NS43NTUpIiw5NTA6Im9rbGNoKDEyLjklIDAuMDQyIDI2NC42OTUpIn0sZ3JheTp7NTA6Im9rbGNoKDk4LjUlIDAuMDAyIDI0Ny44MzkpIiwxMDA6Im9rbGNoKDk2LjclIDAuMDAzIDI2NC41NDIpIiwyMDA6Im9rbGNoKDkyLjglIDAuMDA2IDI2NC41MzEpIiwzMDA6Im9rbGNoKDg3LjIlIDAuMDEgMjU4LjMzOCkiLDQwMDoib2tsY2goNzAuNyUgMC4wMjIgMjYxLjMyNSkiLDUwMDoib2tsY2goNTUuMSUgMC4wMjcgMjY0LjM2NCkiLDYwMDoib2tsY2goNDQuNiUgMC4wMyAyNTYuODAyKSIsNzAwOiJva2xjaCgzNy4zJSAwLjAzNCAyNTkuNzMzKSIsODAwOiJva2xjaCgyNy44JSAwLjAzMyAyNTYuODQ4KSIsOTAwOiJva2xjaCgyMSUgMC4wMzQgMjY0LjY2NSkiLDk1MDoib2tsY2goMTMlIDAuMDI4IDI2MS42OTIpIn0semluYzp7NTA6Im9rbGNoKDk4LjUlIDAgMCkiLDEwMDoib2tsY2goOTYuNyUgMC4wMDEgMjg2LjM3NSkiLDIwMDoib2tsY2goOTIlIDAuMDA0IDI4Ni4zMikiLDMwMDoib2tsY2goODcuMSUgMC4wMDYgMjg2LjI4NikiLDQwMDoib2tsY2goNzAuNSUgMC4wMTUgMjg2LjA2NykiLDUwMDoib2tsY2goNTUuMiUgMC4wMTYgMjg1LjkzOCkiLDYwMDoib2tsY2goNDQuMiUgMC4wMTcgMjg1Ljc4NikiLDcwMDoib2tsY2goMzclIDAuMDEzIDI4NS44MDUpIiw4MDA6Im9rbGNoKDI3LjQlIDAuMDA2IDI4Ni4wMzMpIiw5MDA6Im9rbGNoKDIxJSAwLjAwNiAyODUuODg1KSIsOTUwOiJva2xjaCgxNC4xJSAwLjAwNSAyODUuODIzKSJ9LG5ldXRyYWw6ezUwOiJva2xjaCg5OC41JSAwIDApIiwxMDA6Im9rbGNoKDk3JSAwIDApIiwyMDA6Im9rbGNoKDkyLjIlIDAgMCkiLDMwMDoib2tsY2goODclIDAgMCkiLDQwMDoib2tsY2goNzAuOCUgMCAwKSIsNTAwOiJva2xjaCg1NS42JSAwIDApIiw2MDA6Im9rbGNoKDQzLjklIDAgMCkiLDcwMDoib2tsY2goMzcuMSUgMCAwKSIsODAwOiJva2xjaCgyNi45JSAwIDApIiw5MDA6Im9rbGNoKDIwLjUlIDAgMCkiLDk1MDoib2tsY2goMTQuNSUgMCAwKSJ9LHN0b25lOns1MDoib2tsY2goOTguNSUgMC4wMDEgMTA2LjQyMykiLDEwMDoib2tsY2goOTclIDAuMDAxIDEwNi40MjQpIiwyMDA6Im9rbGNoKDkyLjMlIDAuMDAzIDQ4LjcxNykiLDMwMDoib2tsY2goODYuOSUgMC4wMDUgNTYuMzY2KSIsNDAwOiJva2xjaCg3MC45JSAwLjAxIDU2LjI1OSkiLDUwMDoib2tsY2goNTUuMyUgMC4wMTMgNTguMDcxKSIsNjAwOiJva2xjaCg0NC40JSAwLjAxMSA3My42MzkpIiw3MDA6Im9rbGNoKDM3LjQlIDAuMDEgNjcuNTU4KSIsODAwOiJva2xjaCgyNi44JSAwLjAwNyAzNC4yOTgpIiw5MDA6Im9rbGNoKDIxLjYlIDAuMDA2IDU2LjA0MykiLDk1MDoib2tsY2goMTQuNyUgMC4wMDQgNDkuMjUpIn0sbWF1dmU6ezUwOiJva2xjaCg5OC41JSAwIDApIiwxMDA6Im9rbGNoKDk2JSAwLjAwMyAzMjUuNikiLDIwMDoib2tsY2goOTIuMiUgMC4wMDUgMzI1LjYyKSIsMzAwOiJva2xjaCg4Ni41JSAwLjAxMiAzMjUuNjgpIiw0MDA6Im9rbGNoKDcxLjElIDAuMDE5IDMyMy4wMikiLDUwMDoib2tsY2goNTQuMiUgMC4wMzQgMzIyLjUpIiw2MDA6Im9rbGNoKDQzLjUlIDAuMDI5IDMyMS43OCkiLDcwMDoib2tsY2goMzYuNCUgMC4wMjkgMzIzLjg5KSIsODAwOiJva2xjaCgyNi4zJSAwLjAyNCAzMjAuMTIpIiw5MDA6Im9rbGNoKDIxLjIlIDAuMDE5IDMyMi4xMikiLDk1MDoib2tsY2goMTQuNSUgMC4wMDggMzI2KSJ9LG9saXZlOns1MDoib2tsY2goOTguOCUgMC4wMDMgMTA2LjUpIiwxMDA6Im9rbGNoKDk2LjYlIDAuMDA1IDEwNi41KSIsMjAwOiJva2xjaCg5MyUgMC4wMDcgMTA2LjUpIiwzMDA6Im9rbGNoKDg4JSAwLjAxMSAxMDYuNikiLDQwMDoib2tsY2goNzMuNyUgMC4wMjEgMTA2LjkpIiw1MDA6Im9rbGNoKDU4JSAwLjAzMSAxMDcuMykiLDYwMDoib2tsY2goNDYuNiUgMC4wMjUgMTA3LjMpIiw3MDA6Im9rbGNoKDM5LjQlIDAuMDIzIDEwNy40KSIsODAwOiJva2xjaCgyOC42JSAwLjAxNiAxMDcuNCkiLDkwMDoib2tsY2goMjIuOCUgMC4wMTMgMTA3LjQpIiw5NTA6Im9rbGNoKDE1LjMlIDAuMDA2IDEwNy4xKSJ9LG1pc3Q6ezUwOiJva2xjaCg5OC43JSAwLjAwMiAxOTcuMSkiLDEwMDoib2tsY2goOTYuMyUgMC4wMDIgMTk3LjEpIiwyMDA6Im9rbGNoKDkyLjUlIDAuMDA1IDIxNC4zKSIsMzAwOiJva2xjaCg4Ny4yJSAwLjAwNyAyMTkuNikiLDQwMDoib2tsY2goNzIuMyUgMC4wMTQgMjE0LjQpIiw1MDA6Im9rbGNoKDU2JSAwLjAyMSAyMTMuNSkiLDYwMDoib2tsY2goNDUlIDAuMDE3IDIxMy4yKSIsNzAwOiJva2xjaCgzNy44JSAwLjAxNSAyMTYpIiw4MDA6Im9rbGNoKDI3LjUlIDAuMDExIDIxNi45KSIsOTAwOiJva2xjaCgyMS44JSAwLjAwOCAyMjMuOSkiLDk1MDoib2tsY2goMTQuOCUgMC4wMDQgMjI4LjgpIn0sdGF1cGU6ezUwOiJva2xjaCg5OC42JSAwLjAwMiA2Ny44KSIsMTAwOiJva2xjaCg5NiUgMC4wMDIgMTcuMikiLDIwMDoib2tsY2goOTIuMiUgMC4wMDUgMzQuMykiLDMwMDoib2tsY2goODYuOCUgMC4wMDcgMzkuNSkiLDQwMDoib2tsY2goNzEuNCUgMC4wMTQgNDEuMikiLDUwMDoib2tsY2goNTQuNyUgMC4wMjEgNDMuMSkiLDYwMDoib2tsY2goNDMuOCUgMC4wMTcgMzkuMykiLDcwMDoib2tsY2goMzYuNyUgMC4wMTYgMzUuNykiLDgwMDoib2tsY2goMjYuOCUgMC4wMTEgMzYuNSkiLDkwMDoib2tsY2goMjEuNCUgMC4wMDkgNDMuMSkiLDk1MDoib2tsY2goMTQuNyUgMC4wMDQgNDkuMykifSxyZWQ6ezUwOiJva2xjaCg5Ny4xJSAwLjAxMyAxNy4zOCkiLDEwMDoib2tsY2goOTMuNiUgMC4wMzIgMTcuNzE3KSIsMjAwOiJva2xjaCg4OC41JSAwLjA2MiAxOC4zMzQpIiwzMDA6Im9rbGNoKDgwLjglIDAuMTE0IDE5LjU3MSkiLDQwMDoib2tsY2goNzAuNCUgMC4xOTEgMjIuMjE2KSIsNTAwOiJva2xjaCg2My43JSAwLjIzNyAyNS4zMzEpIiw2MDA6Im9rbGNoKDU3LjclIDAuMjQ1IDI3LjMyNSkiLDcwMDoib2tsY2goNTAuNSUgMC4yMTMgMjcuNTE4KSIsODAwOiJva2xjaCg0NC40JSAwLjE3NyAyNi44OTkpIiw5MDA6Im9rbGNoKDM5LjYlIDAuMTQxIDI1LjcyMykiLDk1MDoib2tsY2goMjUuOCUgMC4wOTIgMjYuMDQyKSJ9LG9yYW5nZTp7NTA6Im9rbGNoKDk4JSAwLjAxNiA3My42ODQpIiwxMDA6Im9rbGNoKDk1LjQlIDAuMDM4IDc1LjE2NCkiLDIwMDoib2tsY2goOTAuMSUgMC4wNzYgNzAuNjk3KSIsMzAwOiJva2xjaCg4My43JSAwLjEyOCA2Ni4yOSkiLDQwMDoib2tsY2goNzUlIDAuMTgzIDU1LjkzNCkiLDUwMDoib2tsY2goNzAuNSUgMC4yMTMgNDcuNjA0KSIsNjAwOiJva2xjaCg2NC42JSAwLjIyMiA0MS4xMTYpIiw3MDA6Im9rbGNoKDU1LjMlIDAuMTk1IDM4LjQwMikiLDgwMDoib2tsY2goNDclIDAuMTU3IDM3LjMwNCkiLDkwMDoib2tsY2goNDAuOCUgMC4xMjMgMzguMTcyKSIsOTUwOiJva2xjaCgyNi42JSAwLjA3OSAzNi4yNTkpIn0sYW1iZXI6ezUwOiJva2xjaCg5OC43JSAwLjAyMiA5NS4yNzcpIiwxMDA6Im9rbGNoKDk2LjIlIDAuMDU5IDk1LjYxNykiLDIwMDoib2tsY2goOTIuNCUgMC4xMiA5NS43NDYpIiwzMDA6Im9rbGNoKDg3LjklIDAuMTY5IDkxLjYwNSkiLDQwMDoib2tsY2goODIuOCUgMC4xODkgODQuNDI5KSIsNTAwOiJva2xjaCg3Ni45JSAwLjE4OCA3MC4wOCkiLDYwMDoib2tsY2goNjYuNiUgMC4xNzkgNTguMzE4KSIsNzAwOiJva2xjaCg1NS41JSAwLjE2MyA0OC45OTgpIiw4MDA6Im9rbGNoKDQ3LjMlIDAuMTM3IDQ2LjIwMSkiLDkwMDoib2tsY2goNDEuNCUgMC4xMTIgNDUuOTA0KSIsOTUwOiJva2xjaCgyNy45JSAwLjA3NyA0NS42MzUpIn0seWVsbG93Ons1MDoib2tsY2goOTguNyUgMC4wMjYgMTAyLjIxMikiLDEwMDoib2tsY2goOTcuMyUgMC4wNzEgMTAzLjE5MykiLDIwMDoib2tsY2goOTQuNSUgMC4xMjkgMTAxLjU0KSIsMzAwOiJva2xjaCg5MC41JSAwLjE4MiA5OC4xMTEpIiw0MDA6Im9rbGNoKDg1LjIlIDAuMTk5IDkxLjkzNikiLDUwMDoib2tsY2goNzkuNSUgMC4xODQgODYuMDQ3KSIsNjAwOiJva2xjaCg2OC4xJSAwLjE2MiA3NS44MzQpIiw3MDA6Im9rbGNoKDU1LjQlIDAuMTM1IDY2LjQ0MikiLDgwMDoib2tsY2goNDcuNiUgMC4xMTQgNjEuOTA3KSIsOTAwOiJva2xjaCg0Mi4xJSAwLjA5NSA1Ny43MDgpIiw5NTA6Im9rbGNoKDI4LjYlIDAuMDY2IDUzLjgxMykifSxsaW1lOns1MDoib2tsY2goOTguNiUgMC4wMzEgMTIwLjc1NykiLDEwMDoib2tsY2goOTYuNyUgMC4wNjcgMTIyLjMyOCkiLDIwMDoib2tsY2goOTMuOCUgMC4xMjcgMTI0LjMyMSkiLDMwMDoib2tsY2goODkuNyUgMC4xOTYgMTI2LjY2NSkiLDQwMDoib2tsY2goODQuMSUgMC4yMzggMTI4Ljg1KSIsNTAwOiJva2xjaCg3Ni44JSAwLjIzMyAxMzAuODUpIiw2MDA6Im9rbGNoKDY0LjglIDAuMiAxMzEuNjg0KSIsNzAwOiJva2xjaCg1My4yJSAwLjE1NyAxMzEuNTg5KSIsODAwOiJva2xjaCg0NS4zJSAwLjEyNCAxMzAuOTMzKSIsOTAwOiJva2xjaCg0MC41JSAwLjEwMSAxMzEuMDYzKSIsOTUwOiJva2xjaCgyNy40JSAwLjA3MiAxMzIuMTA5KSJ9LGdyZWVuOns1MDoib2tsY2goOTguMiUgMC4wMTggMTU1LjgyNikiLDEwMDoib2tsY2goOTYuMiUgMC4wNDQgMTU2Ljc0MykiLDIwMDoib2tsY2goOTIuNSUgMC4wODQgMTU1Ljk5NSkiLDMwMDoib2tsY2goODcuMSUgMC4xNSAxNTQuNDQ5KSIsNDAwOiJva2xjaCg3OS4yJSAwLjIwOSAxNTEuNzExKSIsNTAwOiJva2xjaCg3Mi4zJSAwLjIxOSAxNDkuNTc5KSIsNjAwOiJva2xjaCg2Mi43JSAwLjE5NCAxNDkuMjE0KSIsNzAwOiJva2xjaCg1Mi43JSAwLjE1NCAxNTAuMDY5KSIsODAwOiJva2xjaCg0NC44JSAwLjExOSAxNTEuMzI4KSIsOTAwOiJva2xjaCgzOS4zJSAwLjA5NSAxNTIuNTM1KSIsOTUwOiJva2xjaCgyNi42JSAwLjA2NSAxNTIuOTM0KSJ9LGVtZXJhbGQ6ezUwOiJva2xjaCg5Ny45JSAwLjAyMSAxNjYuMTEzKSIsMTAwOiJva2xjaCg5NSUgMC4wNTIgMTYzLjA1MSkiLDIwMDoib2tsY2goOTAuNSUgMC4wOTMgMTY0LjE1KSIsMzAwOiJva2xjaCg4NC41JSAwLjE0MyAxNjQuOTc4KSIsNDAwOiJva2xjaCg3Ni41JSAwLjE3NyAxNjMuMjIzKSIsNTAwOiJva2xjaCg2OS42JSAwLjE3IDE2Mi40OCkiLDYwMDoib2tsY2goNTkuNiUgMC4xNDUgMTYzLjIyNSkiLDcwMDoib2tsY2goNTAuOCUgMC4xMTggMTY1LjYxMikiLDgwMDoib2tsY2goNDMuMiUgMC4wOTUgMTY2LjkxMykiLDkwMDoib2tsY2goMzcuOCUgMC4wNzcgMTY4Ljk0KSIsOTUwOiJva2xjaCgyNi4yJSAwLjA1MSAxNzIuNTUyKSJ9LHRlYWw6ezUwOiJva2xjaCg5OC40JSAwLjAxNCAxODAuNzIpIiwxMDA6Im9rbGNoKDk1LjMlIDAuMDUxIDE4MC44MDEpIiwyMDA6Im9rbGNoKDkxJSAwLjA5NiAxODAuNDI2KSIsMzAwOiJva2xjaCg4NS41JSAwLjEzOCAxODEuMDcxKSIsNDAwOiJva2xjaCg3Ny43JSAwLjE1MiAxODEuOTEyKSIsNTAwOiJva2xjaCg3MC40JSAwLjE0IDE4Mi41MDMpIiw2MDA6Im9rbGNoKDYwJSAwLjExOCAxODQuNzA0KSIsNzAwOiJva2xjaCg1MS4xJSAwLjA5NiAxODYuMzkxKSIsODAwOiJva2xjaCg0My43JSAwLjA3OCAxODguMjE2KSIsOTAwOiJva2xjaCgzOC42JSAwLjA2MyAxODguNDE2KSIsOTUwOiJva2xjaCgyNy43JSAwLjA0NiAxOTIuNTI0KSJ9LGN5YW46ezUwOiJva2xjaCg5OC40JSAwLjAxOSAyMDAuODczKSIsMTAwOiJva2xjaCg5NS42JSAwLjA0NSAyMDMuMzg4KSIsMjAwOiJva2xjaCg5MS43JSAwLjA4IDIwNS4wNDEpIiwzMDA6Im9rbGNoKDg2LjUlIDAuMTI3IDIwNy4wNzgpIiw0MDA6Im9rbGNoKDc4LjklIDAuMTU0IDIxMS41MykiLDUwMDoib2tsY2goNzEuNSUgMC4xNDMgMjE1LjIyMSkiLDYwMDoib2tsY2goNjAuOSUgMC4xMjYgMjIxLjcyMykiLDcwMDoib2tsY2goNTIlIDAuMTA1IDIyMy4xMjgpIiw4MDA6Im9rbGNoKDQ1JSAwLjA4NSAyMjQuMjgzKSIsOTAwOiJva2xjaCgzOS44JSAwLjA3IDIyNy4zOTIpIiw5NTA6Im9rbGNoKDMwLjIlIDAuMDU2IDIyOS42OTUpIn0sc2t5Ons1MDoib2tsY2goOTcuNyUgMC4wMTMgMjM2LjYyKSIsMTAwOiJva2xjaCg5NS4xJSAwLjAyNiAyMzYuODI0KSIsMjAwOiJva2xjaCg5MC4xJSAwLjA1OCAyMzAuOTAyKSIsMzAwOiJva2xjaCg4Mi44JSAwLjExMSAyMzAuMzE4KSIsNDAwOiJva2xjaCg3NC42JSAwLjE2IDIzMi42NjEpIiw1MDA6Im9rbGNoKDY4LjUlIDAuMTY5IDIzNy4zMjMpIiw2MDA6Im9rbGNoKDU4LjglIDAuMTU4IDI0MS45NjYpIiw3MDA6Im9rbGNoKDUwJSAwLjEzNCAyNDIuNzQ5KSIsODAwOiJva2xjaCg0NC4zJSAwLjExIDI0MC43OSkiLDkwMDoib2tsY2goMzkuMSUgMC4wOSAyNDAuODc2KSIsOTUwOiJva2xjaCgyOS4zJSAwLjA2NiAyNDMuMTU3KSJ9LGJsdWU6ezUwOiJva2xjaCg5NyUgMC4wMTQgMjU0LjYwNCkiLDEwMDoib2tsY2goOTMuMiUgMC4wMzIgMjU1LjU4NSkiLDIwMDoib2tsY2goODguMiUgMC4wNTkgMjU0LjEyOCkiLDMwMDoib2tsY2goODAuOSUgMC4xMDUgMjUxLjgxMykiLDQwMDoib2tsY2goNzAuNyUgMC4xNjUgMjU0LjYyNCkiLDUwMDoib2tsY2goNjIuMyUgMC4yMTQgMjU5LjgxNSkiLDYwMDoib2tsY2goNTQuNiUgMC4yNDUgMjYyLjg4MSkiLDcwMDoib2tsY2goNDguOCUgMC4yNDMgMjY0LjM3NikiLDgwMDoib2tsY2goNDIuNCUgMC4xOTkgMjY1LjYzOCkiLDkwMDoib2tsY2goMzcuOSUgMC4xNDYgMjY1LjUyMikiLDk1MDoib2tsY2goMjguMiUgMC4wOTEgMjY3LjkzNSkifSxpbmRpZ286ezUwOiJva2xjaCg5Ni4yJSAwLjAxOCAyNzIuMzE0KSIsMTAwOiJva2xjaCg5MyUgMC4wMzQgMjcyLjc4OCkiLDIwMDoib2tsY2goODclIDAuMDY1IDI3NC4wMzkpIiwzMDA6Im9rbGNoKDc4LjUlIDAuMTE1IDI3NC43MTMpIiw0MDA6Im9rbGNoKDY3LjMlIDAuMTgyIDI3Ni45MzUpIiw1MDA6Im9rbGNoKDU4LjUlIDAuMjMzIDI3Ny4xMTcpIiw2MDA6Im9rbGNoKDUxLjElIDAuMjYyIDI3Ni45NjYpIiw3MDA6Im9rbGNoKDQ1LjclIDAuMjQgMjc3LjAyMykiLDgwMDoib2tsY2goMzkuOCUgMC4xOTUgMjc3LjM2NikiLDkwMDoib2tsY2goMzUuOSUgMC4xNDQgMjc4LjY5NykiLDk1MDoib2tsY2goMjUuNyUgMC4wOSAyODEuMjg4KSJ9LHZpb2xldDp7NTA6Im9rbGNoKDk2LjklIDAuMDE2IDI5My43NTYpIiwxMDA6Im9rbGNoKDk0LjMlIDAuMDI5IDI5NC41ODgpIiwyMDA6Im9rbGNoKDg5LjQlIDAuMDU3IDI5My4yODMpIiwzMDA6Im9rbGNoKDgxLjElIDAuMTExIDI5My41NzEpIiw0MDA6Im9rbGNoKDcwLjIlIDAuMTgzIDI5My41NDEpIiw1MDA6Im9rbGNoKDYwLjYlIDAuMjUgMjkyLjcxNykiLDYwMDoib2tsY2goNTQuMSUgMC4yODEgMjkzLjAwOSkiLDcwMDoib2tsY2goNDkuMSUgMC4yNyAyOTIuNTgxKSIsODAwOiJva2xjaCg0My4yJSAwLjIzMiAyOTIuNzU5KSIsOTAwOiJva2xjaCgzOCUgMC4xODkgMjkzLjc0NSkiLDk1MDoib2tsY2goMjguMyUgMC4xNDEgMjkxLjA4OSkifSxwdXJwbGU6ezUwOiJva2xjaCg5Ny43JSAwLjAxNCAzMDguMjk5KSIsMTAwOiJva2xjaCg5NC42JSAwLjAzMyAzMDcuMTc0KSIsMjAwOiJva2xjaCg5MC4yJSAwLjA2MyAzMDYuNzAzKSIsMzAwOiJva2xjaCg4Mi43JSAwLjExOSAzMDYuMzgzKSIsNDAwOiJva2xjaCg3MS40JSAwLjIwMyAzMDUuNTA0KSIsNTAwOiJva2xjaCg2Mi43JSAwLjI2NSAzMDMuOSkiLDYwMDoib2tsY2goNTUuOCUgMC4yODggMzAyLjMyMSkiLDcwMDoib2tsY2goNDkuNiUgMC4yNjUgMzAxLjkyNCkiLDgwMDoib2tsY2goNDMuOCUgMC4yMTggMzAzLjcyNCkiLDkwMDoib2tsY2goMzguMSUgMC4xNzYgMzA0Ljk4NykiLDk1MDoib2tsY2goMjkuMSUgMC4xNDkgMzAyLjcxNykifSxmdWNoc2lhOns1MDoib2tsY2goOTcuNyUgMC4wMTcgMzIwLjA1OCkiLDEwMDoib2tsY2goOTUuMiUgMC4wMzcgMzE4Ljg1MikiLDIwMDoib2tsY2goOTAuMyUgMC4wNzYgMzE5LjYyKSIsMzAwOiJva2xjaCg4My4zJSAwLjE0NSAzMjEuNDM0KSIsNDAwOiJva2xjaCg3NCUgMC4yMzggMzIyLjE2KSIsNTAwOiJva2xjaCg2Ni43JSAwLjI5NSAzMjIuMTUpIiw2MDA6Im9rbGNoKDU5LjElIDAuMjkzIDMyMi44OTYpIiw3MDA6Im9rbGNoKDUxLjglIDAuMjUzIDMyMy45NDkpIiw4MDA6Im9rbGNoKDQ1LjIlIDAuMjExIDMyNC41OTEpIiw5MDA6Im9rbGNoKDQwLjElIDAuMTcgMzI1LjYxMikiLDk1MDoib2tsY2goMjkuMyUgMC4xMzYgMzI1LjY2MSkifSxwaW5rOns1MDoib2tsY2goOTcuMSUgMC4wMTQgMzQzLjE5OCkiLDEwMDoib2tsY2goOTQuOCUgMC4wMjggMzQyLjI1OCkiLDIwMDoib2tsY2goODkuOSUgMC4wNjEgMzQzLjIzMSkiLDMwMDoib2tsY2goODIuMyUgMC4xMiAzNDYuMDE4KSIsNDAwOiJva2xjaCg3MS44JSAwLjIwMiAzNDkuNzYxKSIsNTAwOiJva2xjaCg2NS42JSAwLjI0MSAzNTQuMzA4KSIsNjAwOiJva2xjaCg1OS4yJSAwLjI0OSAwLjU4NCkiLDcwMDoib2tsY2goNTIuNSUgMC4yMjMgMy45NTgpIiw4MDA6Im9rbGNoKDQ1LjklIDAuMTg3IDMuODE1KSIsOTAwOiJva2xjaCg0MC44JSAwLjE1MyAyLjQzMikiLDk1MDoib2tsY2goMjguNCUgMC4xMDkgMy45MDcpIn0scm9zZTp7NTA6Im9rbGNoKDk2LjklIDAuMDE1IDEyLjQyMikiLDEwMDoib2tsY2goOTQuMSUgMC4wMyAxMi41OCkiLDIwMDoib2tsY2goODkuMiUgMC4wNTggMTAuMDAxKSIsMzAwOiJva2xjaCg4MSUgMC4xMTcgMTEuNjM4KSIsNDAwOiJva2xjaCg3MS4yJSAwLjE5NCAxMy40MjgpIiw1MDA6Im9rbGNoKDY0LjUlIDAuMjQ2IDE2LjQzOSkiLDYwMDoib2tsY2goNTguNiUgMC4yNTMgMTcuNTg1KSIsNzAwOiJva2xjaCg1MS40JSAwLjIyMiAxNi45MzUpIiw4MDA6Im9rbGNoKDQ1LjUlIDAuMTg4IDEzLjY5NykiLDkwMDoib2tsY2goNDElIDAuMTU5IDEwLjI3MikiLDk1MDoib2tsY2goMjcuMSUgMC4xMDUgMTIuMDk0KSJ9fTtjbGFzcyB0e2NvbnN0cnVjdG9yKGUsYyl7dGhpcy5vcGVyYXRvcj1lLHRoaXMudmFsdWU9YyxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidCIse3dyaXRhYmxlOiEwfSl9Z2V0IG5vdGVzKCl7cmV0dXJuIHRoaXMudH1hZGROb3RlKGUpe3RoaXMudD10aGlzLnR8fFtdLHRoaXMudC5wdXNoKGUpfX1sZXQgVW89Y2xhc3MgZXh0ZW5kcyB0e307Y2xhc3MgciBleHRlbmRzIFVve2NvbnN0cnVjdG9yKGUsYyl7aWYoIUFycmF5LmlzQXJyYXkoYykpdGhyb3cgbmV3IEVycm9yKGAiJHtlfSIgb3BlcmF0b3IgZXhwZWN0cyB0byByZWNlaXZlIGFuIGFycmF5IG9mIGNvbmRpdGlvbnNgKTtzdXBlcihlLGMpfX1jb25zdCBIbz0iX19pdHNlbGZfXyI7bGV0IEdvPWNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvcihlLGMsZCl7c3VwZXIoZSxkKSx0aGlzLmZpZWxkPWN9fTtjb25zdCBXbz1uZXcgVW8oIl9fbnVsbF9fIixudWxsKSxYbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtmdW5jdGlvbiBjJDMoZSxjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIHImJmMub3BlcmF0b3I9PT1lfWZ1bmN0aW9uIHUkMihlLGMpe3JldHVybiAxPT09Yy5sZW5ndGg/Y1swXTpuZXcgcihlLGZ1bmN0aW9uIHQoZSxjLGQpe2NvbnN0IGg9ZHx8W107Zm9yKGxldCBkPTAsdj1jLmxlbmd0aDtkPHY7ZCsrKXtjb25zdCB2PWNbZF07YyQzKGUsdik/dChlLHYudmFsdWUsaCk6aC5wdXNoKHYpfXJldHVybiBofShlLGMpKX1jb25zdCBhPWU9PmUsaCQyPSgpPT5PYmplY3QuY3JlYXRlKG51bGwpLEtvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShoJDIoKSwiX19AdHlwZUBfXyIse3ZhbHVlOiJpZ25vcmUgdmFsdWUifSk7ZnVuY3Rpb24gZCQyKGUpe2NvbnN0IGM9W107Zm9yKGNvbnN0IGQgaW4gZSlYbyhlLGQpJiZlW2RdIT09S28mJmMucHVzaChkKTtyZXR1cm4gY31mdW5jdGlvbiBwJDMoZSxjKXtjIT09V28mJmUucHVzaChjKX1jb25zdCB3JDI9ZT0+dSQyKCJhbmQiLGUpLEpvPXtjb21wb3VuZChlLGMsZCl7Y29uc3QgaD0oQXJyYXkuaXNBcnJheShjKT9jOltjXSkubWFwKGU9PmQucGFyc2UoZSkpO3JldHVybiBuZXcgcihlLm5hbWUsaCl9LGZpZWxkOihlLGMsZCk9Pm5ldyBHbyhlLm5hbWUsZC5maWVsZCxjKSxkb2N1bWVudDooZSxjKT0+bmV3IFVvKGUubmFtZSxjKX07bGV0IFFvPWNsYXNze2NvbnN0cnVjdG9yKGUsYz1oJDIoKSl7dGhpcy5vPXZvaWQgMCx0aGlzLnM9dm9pZCAwLHRoaXMuaT12b2lkIDAsdGhpcy51PXZvaWQgMCx0aGlzLmg9dm9pZCAwLHRoaXMucGFyc2U9dGhpcy5wYXJzZS5iaW5kKHRoaXMpLHRoaXMudT17b3BlcmF0b3JUb0NvbmRpdGlvbk5hbWU6Yy5vcGVyYXRvclRvQ29uZGl0aW9uTmFtZXx8YSxkZWZhdWx0T3BlcmF0b3JOYW1lOmMuZGVmYXVsdE9wZXJhdG9yTmFtZXx8ImVxIixtZXJnZUZpbmFsQ29uZGl0aW9uczpjLm1lcmdlRmluYWxDb25kaXRpb25zfHx3JDJ9LHRoaXMubz1PYmplY3Qua2V5cyhlKS5yZWR1Y2UoKGMsZCk9PihjW2RdPU9iamVjdC5hc3NpZ24oe25hbWU6dGhpcy51Lm9wZXJhdG9yVG9Db25kaXRpb25OYW1lKGQpfSxlW2RdKSxjKSx7fSksdGhpcy5zPU9iamVjdC5hc3NpZ24oe30sYy5maWVsZENvbnRleHQse2ZpZWxkOiIiLHF1ZXJ5Ont9LHBhcnNlOnRoaXMucGFyc2UsaGFzT3BlcmF0b3JzOmU9PmZ1bmN0aW9uKGUsYyxkPSExKXtpZighZXx8ZSYmZS5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4hMTtmb3IoY29uc3QgaCBpbiBlKWlmKFhvKGUsaCkmJlhvKGMsaCkmJighZHx8ZVtoXSE9PUtvKSlyZXR1cm4hMDtyZXR1cm4hMX0oZSx0aGlzLm8sYy51c2VJZ25vcmVWYWx1ZSl9KSx0aGlzLmk9T2JqZWN0LmFzc2lnbih7fSxjLmRvY3VtZW50Q29udGV4dCx7cGFyc2U6dGhpcy5wYXJzZSxxdWVyeTp7fX0pLHRoaXMuaD1jLnVzZUlnbm9yZVZhbHVlP2QkMjpPYmplY3Qua2V5c31zZXRQYXJzZShlKXt0aGlzLnBhcnNlPWUsdGhpcy5zLnBhcnNlPWUsdGhpcy5pLnBhcnNlPWV9cGFyc2VGaWVsZChlLGMsZCxoKXtjb25zdCB2PXRoaXMub1tjXTtpZighdil0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG9wZXJhdG9yICIke2N9ImApO2lmKCJmaWVsZCIhPT12LnR5cGUpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkICR7di50eXBlfSBvcGVyYXRvciAiJHtjfSIgYXQgZmllbGQgbGV2ZWxgKTtyZXR1cm4gdGhpcy5zLmZpZWxkPWUsdGhpcy5zLnF1ZXJ5PWgsdGhpcy5wYXJzZUluc3RydWN0aW9uKHYsZCx0aGlzLnMpfXBhcnNlSW5zdHJ1Y3Rpb24oZSxjLGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnZhbGlkYXRlJiZlLnZhbGlkYXRlKGUsYyksKGUucGFyc2V8fEpvW2UudHlwZV0pKGUsYyxkKX1wYXJzZUZpZWxkT3BlcmF0b3JzKGUsYyl7Y29uc3QgZD1bXSxoPXRoaXMuaChjKTtmb3IobGV0IHY9MCxiPWgubGVuZ3RoO3Y8Yjt2Kyspe2NvbnN0IGI9aFt2XTtpZighdGhpcy5vW2JdKXRocm93IG5ldyBFcnJvcihgRmllbGQgcXVlcnkgZm9yICIke2V9IiBtYXkgY29udGFpbiBvbmx5IG9wZXJhdG9ycyBvciBhIHBsYWluIG9iamVjdCBhcyBhIHZhbHVlYCk7cCQzKGQsdGhpcy5wYXJzZUZpZWxkKGUsYixjW2JdLGMpKX1yZXR1cm4gZH1wYXJzZShlKXtjb25zdCBjPVtdLGQ9dGhpcy5oKGUpO3RoaXMuaS5xdWVyeT1lO2ZvcihsZXQgaD0wLHY9ZC5sZW5ndGg7aDx2O2grKyl7Y29uc3Qgdj1kW2hdLGI9ZVt2XSx5PXRoaXMub1t2XTtpZih5KXtpZigiZG9jdW1lbnQiIT09eS50eXBlJiYiY29tcG91bmQiIT09eS50eXBlKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVzZSBwYXJzaW5nIGluc3RydWN0aW9uIGZvciBvcGVyYXRvciAiJHt2fSIgaW4gImRvY3VtZW50IiBjb250ZXh0IGFzIGl0IGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gICIke3kudHlwZX0iIGNvbnRleHRgKTtwJDMoYyx0aGlzLnBhcnNlSW5zdHJ1Y3Rpb24oeSxiLHRoaXMuaSkpfWVsc2UgdGhpcy5zLmhhc09wZXJhdG9ycyhiKT9jLnB1c2goLi4udGhpcy5wYXJzZUZpZWxkT3BlcmF0b3JzKHYsYikpOnAkMyhjLHRoaXMucGFyc2VGaWVsZCh2LHRoaXMudS5kZWZhdWx0T3BlcmF0b3JOYW1lLGIsZSkpfXJldHVybiB0aGlzLnUubWVyZ2VGaW5hbENvbmRpdGlvbnMoYyl9fTtmdW5jdGlvbiBfJDIoZSxjKXtjb25zdCBkPWVbY107aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gaW50ZXJwcmV0ICIke2N9IiBjb25kaXRpb24uIERpZCB5b3UgZm9yZ2V0IHRvIHJlZ2lzdGVyIGludGVycHJldGVyIGZvciBpdD9gKTtyZXR1cm4gZH1mdW5jdGlvbiB5JDIoZSl7cmV0dXJuIGUub3BlcmF0b3J9ZnVuY3Rpb24gcyQxKGUsYyl7aWYoIUFycmF5LmlzQXJyYXkoYykpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIHZhbHVlIHRvIGJlIGFuIGFycmF5YCl9ZnVuY3Rpb24gcCQyKGUsYyl7aWYocyQxKGUsYyksIWMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB0byBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIGFycmF5YCl9Y29uc3QgbCQyPWU9PihjLGQpPT57aWYodHlwZW9mIGQhPT1lKXRocm93IG5ldyBFcnJvcihgIiR7Yy5uYW1lfSIgZXhwZWN0cyB2YWx1ZSB0byBiZSBhICIke2V9ImApfSxZbz17dHlwZToiY29tcG91bmQiLHZhbGlkYXRlOnAkMixwYXJzZShlLGMse3BhcnNlOmR9KXtjb25zdCBoPWMubWFwKGU9PmQoZSkpO3JldHVybiB1JDIoZS5uYW1lLGgpfX0sWm89WW8sZXI9e3R5cGU6ImNvbXBvdW5kIix2YWxpZGF0ZTpwJDJ9LHRyPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGUoZSxjKXtpZighY3x8IShjIGluc3RhbmNlb2YgUmVnRXhwfHxjLmNvbnN0cnVjdG9yPT09T2JqZWN0KSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdG8gcmVjZWl2ZSBlaXRoZXIgcmVndWxhciBleHByZXNzaW9uIG9yIG9iamVjdCBvZiBmaWVsZCBvcGVyYXRvcnNgKX0scGFyc2UoZSxjLGQpe2NvbnN0IGg9YyBpbnN0YW5jZW9mIFJlZ0V4cD9uZXcgR28oInJlZ2V4IixkLmZpZWxkLGMpOmQucGFyc2UoYyxkKTtyZXR1cm4gbmV3IHIoZS5uYW1lLFtoXSl9fSxucj17dHlwZToiZmllbGQiLHZhbGlkYXRlKGUsYyl7aWYoIWN8fGMuY29uc3RydWN0b3IhPT1PYmplY3QpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIHRvIHJlY2VpdmUgYW4gb2JqZWN0IHdpdGggbmVzdGVkIHF1ZXJ5IG9yIGZpZWxkIGxldmVsIG9wZXJhdG9yc2ApfSxwYXJzZShlLGMse3BhcnNlOmQsZmllbGQ6aCxoYXNPcGVyYXRvcnM6dn0pe2NvbnN0IGI9dihjKT9kKGMse2ZpZWxkOkhvfSk6ZChjKTtyZXR1cm4gbmV3IEdvKGUubmFtZSxoLGIpfX0sb3I9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZTpsJDIoIm51bWJlciIpfSxycj17dHlwZToiZmllbGQiLHZhbGlkYXRlOnMkMX0sYXI9cnIsaXI9cnIsc3I9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLGMpe2lmKCFBcnJheS5pc0FycmF5KGMpfHwyIT09Yy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIGFuIGFycmF5IHdpdGggMiBudW1lcmljIGVsZW1lbnRzYCl9fSxscj17dHlwZToiZmllbGQiLHZhbGlkYXRlOmwkMigiYm9vbGVhbiIpfSxjcj17dHlwZToiZmllbGQiLHZhbGlkYXRlOmZ1bmN0aW9uKGUsYyl7aWYoISgic3RyaW5nIj09dHlwZW9mIGN8fCJudW1iZXIiPT10eXBlb2YgY3x8YyBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB2YWx1ZSB0byBiZSBjb21wYXJhYmxlIChpLmUuLCBzdHJpbmcsIG51bWJlciBvciBkYXRlKWApfX0sdXI9Y3IsZHI9dXIscHI9dXIsZnI9e3R5cGU6ImZpZWxkIn0sbXI9ZnIsaHI9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLGMpe2lmKCEoYyBpbnN0YW5jZW9mIFJlZ0V4cCkmJiJzdHJpbmciIT10eXBlb2YgYyl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdmFsdWUgdG8gYmUgYSByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHJlZ3VsYXIgZXhwcmVzc2lvbmApfSxwYXJzZShlLGMsZCl7Y29uc3QgaD0ic3RyaW5nIj09dHlwZW9mIGM/bmV3IFJlZ0V4cChjLGQucXVlcnkuJG9wdGlvbnN8fCIiKTpjO3JldHVybiBuZXcgR28oZS5uYW1lLGQuZmllbGQsaCl9fSxncj17dHlwZToiZmllbGQiLHBhcnNlOigpPT5Xb30sdnI9e3R5cGU6ImRvY3VtZW50Iix2YWxpZGF0ZTpsJDIoImZ1bmN0aW9uIil9O3ZhciBicj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCwkYW5kOllvLCRvcjpabywkbm9yOmVyLCRub3Q6dHIsJGVsZW1NYXRjaDpuciwkc2l6ZTpvciwkaW46cnIsJG5pbjphciwkYWxsOmlyLCRtb2Q6c3IsJGV4aXN0czpsciwkZ3RlOmNyLCRndDp1ciwkbHQ6ZHIsJGx0ZTpwciwkZXE6ZnIsJG5lOm1yLCRyZWdleDpociwkb3B0aW9uczpnciwkd2hlcmU6dnJ9KTtjbGFzcyBQIGV4dGVuZHMgUW97Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7ZGVmYXVsdE9wZXJhdG9yTmFtZToiJGVxIixvcGVyYXRvclRvQ29uZGl0aW9uTmFtZTplPT5lLnNsaWNlKDEpfSl9cGFyc2UoZSxjKXtyZXR1cm4gYyYmYy5maWVsZD93JDIodGhpcy5wYXJzZUZpZWxkT3BlcmF0b3JzKGMuZmllbGQsZSkpOnN1cGVyLnBhcnNlKGUpfX1jb25zdCB5cj1icjtmdW5jdGlvbiBlJDEoZSxjLGQpe2ZvcihsZXQgaD0wLHY9ZS5sZW5ndGg7aDx2O2grKylpZigwPT09ZChlW2hdLGMpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG4oZSxjKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmTnVtYmVyLmlzTmFOKE51bWJlcihjKSl9ZnVuY3Rpb24gbyhlLGMsZCl7aWYoIW4oZSxjKSlyZXR1cm4gZChlLGMpO2xldCBoPVtdO2ZvcihsZXQgdj0wO3Y8ZS5sZW5ndGg7disrKXtjb25zdCBiPWQoZVt2XSxjKTt2b2lkIDAhPT1iJiYoaD1oLmNvbmNhdChiKSl9cmV0dXJuIGh9ZnVuY3Rpb24gdShlKXtyZXR1cm4oYyxkLGgpPT57Y29uc3Qgdj1oLmdldChkLGMuZmllbGQpO3JldHVybiBBcnJheS5pc0FycmF5KHYpP3Yuc29tZShkPT5lKGMsZCxoKSk6ZShjLHYsaCl9fWNvbnN0IHhyPU9iamVjdC5oYXNPd258fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLGkkMT0oZSxjKT0+ZVtjXTtmdW5jdGlvbiBmKGUsYyxkKXtjb25zdCBoPWMubGFzdEluZGV4T2YoIi4iKTtyZXR1cm4tMT09PWg/W2UsY106W2QoZSxjLnNsaWNlKDAsaCkpLGMuc2xpY2UoaCsxKV19ZnVuY3Rpb24gcyhlLGMsZD1pJDEpe2lmKGM9PT1IbylyZXR1cm4gZTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgZmllbGQgIiR7Y30iIG91dCBvZiAke1N0cmluZyhlKX0uYCk7cmV0dXJuIGZ1bmN0aW9uKGUsYyxkKXtpZigtMT09PWMuaW5kZXhPZigiLiIpKXJldHVybiBvKGUsYyxkKTtjb25zdCBoPWMuc3BsaXQoIi4iKTtsZXQgdj1lO2ZvcihsZXQgZT0wLGM9aC5sZW5ndGg7ZTxjO2UrKylpZih2PW8odixoW2VdLGQpLCF2fHwib2JqZWN0IiE9dHlwZW9mIHYpcmV0dXJuIGU8Yy0xP3ZvaWQgMDp2O3JldHVybiB2fShlLGMsZCl9ZnVuY3Rpb24gbCQxKGUsYyl7cmV0dXJuIGU9PT1jPzA6ZT5jPzE6LTF9ZnVuY3Rpb24gcCQxKGUsYz17fSl7cmV0dXJuIGZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1jLGg9ZCYmZC5nZXRJbnRlcnByZXRlck5hbWV8fHkkMjtsZXQgdjtzd2l0Y2goZD9kLm51bWJlck9mQXJndW1lbnRzOjApe2Nhc2UgMTp2PWM9Pntjb25zdCB2PWgoYyxkKTtyZXR1cm4gXyQyKGUsdikoYyxiKX07YnJlYWs7Y2FzZSAzOnY9KGMsdix5KT0+e2NvbnN0IEU9aChjLGQpO3JldHVybiBfJDIoZSxFKShjLHYseSxiKX07YnJlYWs7ZGVmYXVsdDp2PShjLHYpPT57Y29uc3QgeT1oKGMsZCk7cmV0dXJuIF8kMihlLHkpKGMsdixiKX19Y29uc3QgYj1PYmplY3QuYXNzaWduKHt9LGQse2ludGVycHJldDp2fSk7cmV0dXJuIGIuaW50ZXJwcmV0fShlLE9iamVjdC5hc3NpZ24oe2dldDpzLGNvbXBhcmU6bCQxfSxjKSl9Y29uc3QgZz0oZSxjLHtpbnRlcnByZXQ6ZH0pPT5lLnZhbHVlLnNvbWUoZT0+ZChlLGMpKSxtJDE9KGUsYyx7aW50ZXJwcmV0OmR9KT0+ZS52YWx1ZS5ldmVyeShlPT5kKGUsYykpLGo9KGUsYyx7Y29tcGFyZTpkLGdldDpofSk9Pntjb25zdCB2PWgoYyxlLmZpZWxkKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh2KSYmIUFycmF5LmlzQXJyYXkoZS52YWx1ZSk/ZSQxKHYsZS52YWx1ZSxkKTowPT09ZCh2LGUudmFsdWUpfSxBPShlLGMsZCk9PiFqKGUsYyxkKSxTcj11KChlLGMsZCk9Pntjb25zdCBoPWQuY29tcGFyZShjLGUudmFsdWUpO3JldHVybiAwPT09aHx8LTE9PT1ofSksRXI9dSgoZSxjLGQpPT4tMT09PWQuY29tcGFyZShjLGUudmFsdWUpKSx3cj11KChlLGMsZCk9PjE9PT1kLmNvbXBhcmUoYyxlLnZhbHVlKSksa3I9dSgoZSxjLGQpPT57Y29uc3QgaD1kLmNvbXBhcmUoYyxlLnZhbHVlKTtyZXR1cm4gMD09PWh8fDE9PT1ofSksdz0oZSxjLHtnZXQ6ZH0pPT57aWYoZS5maWVsZD09PUhvKXJldHVybiB2b2lkIDAhPT1jO2NvbnN0W2gsdl09ZihjLGUuZmllbGQsZCkscz1jPT5udWxsPT1jP0Jvb2xlYW4oYyk9PT1lLnZhbHVlOnhyKGMsdik9PT1lLnZhbHVlO3JldHVybiBuKGgsdik/aC5zb21lKHMpOnMoaCl9LENyPXUoKGUsYyk9PiJudW1iZXIiPT10eXBlb2YgYyYmYyVlLnZhbHVlWzBdPT09ZS52YWx1ZVsxXSkseD0oZSxjLHtnZXQ6ZH0pPT57Y29uc3RbaCx2XT1mKGMsZS5maWVsZCxkKSxpPWM9Pntjb25zdCBoPWQoYyx2KTtyZXR1cm4gQXJyYXkuaXNBcnJheShoKSYmaC5sZW5ndGg9PT1lLnZhbHVlfTtyZXR1cm4gZS5maWVsZCE9PUhvJiZuKGgsdik/aC5zb21lKGkpOmkoaCl9LF9yPXUoKGUsYyk9PiJzdHJpbmciPT10eXBlb2YgYyYmZS52YWx1ZS50ZXN0KGMpKSxUcj11KChlLGMse2NvbXBhcmU6ZH0pPT5lJDEoZS52YWx1ZSxjLGQpKSxxJDE9KGUsYyxkKT0+IVRyKGUsYyxkKSx6PShlLGMse2NvbXBhcmU6ZCxnZXQ6aH0pPT57Y29uc3Qgdj1oKGMsZS5maWVsZCk7cmV0dXJuIEFycmF5LmlzQXJyYXkodikmJmUudmFsdWUuZXZlcnkoZT0+ZSQxKHYsZSxkKSl9LEIkMT0oZSxjLHtpbnRlcnByZXQ6ZCxnZXQ6aH0pPT57Y29uc3Qgdj1oKGMsZS5maWVsZCk7cmV0dXJuIEFycmF5LmlzQXJyYXkodikmJnYuc29tZShjPT5kKGUudmFsdWUsYykpfTt2YXIgTnI9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsb3I6Zyxub3I6KGUsYyxkKT0+IWcoZSxjLGQpLGFuZDptJDEsbm90OihlLGMse2ludGVycHJldDpkfSk9PiFkKGUudmFsdWVbMF0sYyksZXE6aixuZTpBLGx0ZTpTcixsdDpFcixndDp3cixndGU6a3IsZXhpc3RzOncsbW9kOkNyLHNpemU6eCxyZWdleDpfcix3aXRoaW46VHIsbmluOnEkMSxhbGw6eixlbGVtTWF0Y2g6QiQxLHdoZXJlOihlLGMpPT5lLnZhbHVlLmNhbGwoYyl9KTtjb25zdCBBcj1PYmplY3QuYXNzaWduKHt9LE5yLHtpbjpUcn0pO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/ZTplIGluc3RhbmNlb2YgRGF0ZT9lLmdldFRpbWUoKTplJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50b0pTT04/ZS50b0pTT04oKTplfXAkMShBcik7Y29uc3QgbT0oZSxjKT0+bCQxKGkoZSksaShjKSk7ZnVuY3Rpb24gcChlLGMsZCl7Y29uc3QgaD1uZXcgUChlKSx2PXAkMShjLE9iamVjdC5hc3NpZ24oe2NvbXBhcmU6bX0sZCkpO2lmKGQmJmQuZm9yUHJpbWl0aXZlcyl7Y29uc3QgZT17ZmllbGQ6SG99LGM9aC5wYXJzZTtoLnNldFBhcnNlKGQ9PmMoZCxlKSl9cmV0dXJuIGZ1bmN0aW9uKGUsYyl7cmV0dXJuKGQsLi4uaCk9Pntjb25zdCB2PWUoZCwuLi5oKSxiPWMuYmluZChudWxsLHYpO3JldHVybiBiLmFzdD12LGJ9fShoLnBhcnNlLHYpfXAoeXIsQXIpLHAoWyIkYW5kIiwiJG9yIl0ucmVkdWNlKChlLGMpPT4oZVtjXT1PYmplY3QuYXNzaWduKHt9LGVbY10se3R5cGU6ImZpZWxkIn0pLGUpLE9iamVjdC5hc3NpZ24oe30seXIseyRub3I6T2JqZWN0LmFzc2lnbih7fSx5ci4kbm9yLHt0eXBlOiJmaWVsZCIscGFyc2U6Sm8uY29tcG91bmR9KX0pKSxBcix7Zm9yUHJpbWl0aXZlczohMH0pO2NvbnN0IE9yPU9iamVjdC5oYXNPd258fCgoZSxjKT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYykpO2Z1bmN0aW9uIEMoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Y29uc3QgSXI9Il9fY2FzbFN1YmplY3RUeXBlX18iLFM9ZT0+e2NvbnN0IGM9dHlwZW9mIGU7cmV0dXJuInN0cmluZyI9PT1jfHwiZnVuY3Rpb24iPT09Y307ZnVuY3Rpb24gQihlKXtyZXR1cm4gT3IoZSxJcik/ZVtJcl06KGU9PmUubW9kZWxOYW1lfHxlLm5hbWUpKGUuY29uc3RydWN0b3IpfWNvbnN0IFJyPXtmdW5jdGlvbjplPT5lLmNvbnN0cnVjdG9yLHN0cmluZzpCfTtmdW5jdGlvbiBHKGUsYyxkKXtmb3IobGV0IGg9ZDtoPGMubGVuZ3RoO2grKyllLnB1c2goY1toXSl9ZnVuY3Rpb24gSChlLGMpe2lmKCFlfHwhZS5sZW5ndGgpcmV0dXJuIGN8fFtdO2lmKCFjfHwhYy5sZW5ndGgpcmV0dXJuIGV8fFtdO2xldCBkPTAsaD0wO2NvbnN0IHY9W107Zm9yKDtkPGUubGVuZ3RoJiZoPGMubGVuZ3RoOyllW2RdLnByaW9yaXR5PGNbaF0ucHJpb3JpdHk/KHYucHVzaChlW2RdKSxkKyspOmVbZF0ucHJpb3JpdHk+Y1toXS5wcmlvcml0eT8odi5wdXNoKGNbaF0pLGgrKyk6KHYucHVzaChlW2RdKSxkKyssaCsrKTtyZXR1cm4gRyh2LGUsZCksRyh2LGMsaCksdn1mdW5jdGlvbiBJKGUsYyxkKXtsZXQgaD1lLmdldChjKTtyZXR1cm4gaHx8KGg9ZCgpLGUuc2V0KGMsaCkpLGh9Y29uc3QgSj1lPT5lO2NsYXNzIFF7Y29uc3RydWN0b3IoZSxjLGQ9MCl7IWZ1bmN0aW9uKGUsYyl7aWYoQXJyYXkuaXNBcnJheShlLmZpZWxkcykmJiFlLmZpZWxkcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJgcmF3UnVsZS5maWVsZHNgIGNhbm5vdCBiZSBhbiBlbXB0eSBhcnJheS4gaHR0cHM6Ly9iaXQubHkvMzkwbWlMYSIpO2lmKGUuZmllbGRzJiYhYy5maWVsZE1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBwYXNzICJmaWVsZE1hdGNoZXIiIG9wdGlvbiBpbiBvcmRlciB0byByZXN0cmljdCBhY2Nlc3MgYnkgZmllbGRzJyk7aWYoZS5jb25kaXRpb25zJiYhYy5jb25kaXRpb25zTWF0Y2hlcil0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRvIHBhc3MgImNvbmRpdGlvbnNNYXRjaGVyIiBvcHRpb24gaW4gb3JkZXIgdG8gcmVzdHJpY3QgYWNjZXNzIGJ5IGNvbmRpdGlvbnMnKX0oZSxjKSx0aGlzLmFjdGlvbj1jLnJlc29sdmVBY3Rpb24oZS5hY3Rpb24pLHRoaXMuc3ViamVjdD1lLnN1YmplY3QsdGhpcy5pbnZlcnRlZD0hIWUuaW52ZXJ0ZWQsdGhpcy5jb25kaXRpb25zPWUuY29uZGl0aW9ucyx0aGlzLnJlYXNvbj1lLnJlYXNvbix0aGlzLm9yaWdpbj1lLHRoaXMuZmllbGRzPWUuZmllbGRzP0MoZS5maWVsZHMpOnZvaWQgMCx0aGlzLnByaW9yaXR5PWQsdGhpcy50PWN9aSgpe3JldHVybiB0aGlzLmNvbmRpdGlvbnMmJiF0aGlzLm8mJih0aGlzLm89dGhpcy50LmNvbmRpdGlvbnNNYXRjaGVyKHRoaXMuY29uZGl0aW9ucykpLHRoaXMub31nZXQgYXN0KCl7Y29uc3QgZT10aGlzLmkoKTtyZXR1cm4gZT9lLmFzdDp2b2lkIDB9bWF0Y2hlc0NvbmRpdGlvbnMoZSl7aWYoIXRoaXMuY29uZGl0aW9ucylyZXR1cm4hMDtpZighZXx8UyhlKSlyZXR1cm4hdGhpcy5pbnZlcnRlZDtyZXR1cm4gdGhpcy5pKCkoZSl9bWF0Y2hlc0ZpZWxkKGUpe3JldHVybiF0aGlzLmZpZWxkc3x8KGU/KHRoaXMudXx8KHRoaXMudT10aGlzLnQuZmllbGRNYXRjaGVyKHRoaXMuZmllbGRzKSksdGhpcy51KGUpKTohdGhpcy5pbnZlcnRlZCl9fWNvbnN0IFg9KCk9Pih7cnVsZXM6W10sbWVyZ2VkOiExfSksWj0oKT0+bmV3IE1hcDtjbGFzcyB0dHtjb25zdHJ1Y3RvcihlPVtdLGM9e30pe3RoaXMuaD0hMSx0aGlzLmw9bmV3IE1hcCx0aGlzLnA9e2NvbmRpdGlvbnNNYXRjaGVyOmMuY29uZGl0aW9uc01hdGNoZXIsZmllbGRNYXRjaGVyOmMuZmllbGRNYXRjaGVyLHJlc29sdmVBY3Rpb246Yy5yZXNvbHZlQWN0aW9ufHxKfSx0aGlzLiQ9Yy5hbnlBY3Rpb258fCJtYW5hZ2UiLHRoaXMuQT1jLmFueVN1YmplY3RUeXBlfHwiYWxsIix0aGlzLm09ZSx0aGlzLk09ISFjLmRldGVjdFN1YmplY3RUeXBlLHRoaXMuaj1jLmRldGVjdFN1YmplY3RUeXBlfHxCLHRoaXMudihlKX1nZXQgcnVsZXMoKXtyZXR1cm4gdGhpcy5tfWRldGVjdFN1YmplY3RUeXBlKGUpe3JldHVybiBTKGUpP2U6ZT90aGlzLmooZSk6dGhpcy5BfXVwZGF0ZShlKXtjb25zdCBjPXtydWxlczplLGFiaWxpdHk6dGhpcyx0YXJnZXQ6dGhpc307cmV0dXJuIHRoaXMuXygidXBkYXRlIixjKSx0aGlzLm09ZSx0aGlzLnYoZSksdGhpcy5fKCJ1cGRhdGVkIixjKSx0aGlzfXYoZSl7Y29uc3QgYz1uZXcgTWFwO2xldCBkO2ZvcihsZXQgaD1lLmxlbmd0aC0xO2g+PTA7aC0tKXtjb25zdCB2PWUubGVuZ3RoLWgtMSxiPW5ldyBRKGVbaF0sdGhpcy5wLHYpLHk9QyhiLmFjdGlvbiksRT1DKGIuc3ViamVjdHx8dGhpcy5BKTshdGhpcy5oJiZiLmZpZWxkcyYmKHRoaXMuaD0hMCk7Zm9yKGxldCBlPTA7ZTxFLmxlbmd0aDtlKyspe2NvbnN0IGg9SShjLEVbZV0sWik7dm9pZCAwPT09ZCYmKGQ9dHlwZW9mIEVbZV0pLHR5cGVvZiBFW2VdIT09ZCYmIm1peGVkIiE9PWQmJihkPSJtaXhlZCIpO2ZvcihsZXQgZT0wO2U8eS5sZW5ndGg7ZSsrKUkoaCx5W2VdLFgpLnJ1bGVzLnB1c2goYil9fWlmKHRoaXMubD1jLCJtaXhlZCIhPT1kJiYhdGhpcy5NKXtjb25zdCBlPVJyW2RdfHxSci5zdHJpbmc7dGhpcy5qPWV9fXBvc3NpYmxlUnVsZXNGb3IoZSxjPXRoaXMuQSl7aWYoIVMoYykpdGhyb3cgbmV3IEVycm9yKCcicG9zc2libGVSdWxlc0ZvciIgYWNjZXB0cyBvbmx5IHN1YmplY3QgdHlwZXMgKGkuZS4sIHN0cmluZyBvciBjbGFzcykgYXMgdGhlIDJuZCBwYXJhbWV0ZXInKTtjb25zdCBkPUkodGhpcy5sLGMsWiksaD1JKGQsZSxYKTtpZihoLm1lcmdlZClyZXR1cm4gaC5ydWxlcztjb25zdCB2PWUhPT10aGlzLiQmJmQuaGFzKHRoaXMuJCk/ZC5nZXQodGhpcy4kKS5ydWxlczp2b2lkIDA7bGV0IGI9SChoLnJ1bGVzLHYpO3JldHVybiBjIT09dGhpcy5BJiYoYj1IKGIsdGhpcy5wb3NzaWJsZVJ1bGVzRm9yKGUsdGhpcy5BKSkpLGgucnVsZXM9YixoLm1lcmdlZD0hMCxifXJ1bGVzRm9yKGUsYyxkKXtjb25zdCBoPXRoaXMucG9zc2libGVSdWxlc0ZvcihlLGMpO2lmKGQmJiJzdHJpbmciIT10eXBlb2YgZCl0aHJvdyBuZXcgRXJyb3IoIlRoZSAzcmQsIGBmaWVsZGAgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIGEgc3RyaW5nLiBTZWUgaHR0cHM6Ly9zdGFsbml5LmdpdGh1Yi5pby9jYXNsL2VuL2FwaS9jYXNsLWFiaWxpdHkjY2FuLW9mLXB1cmUtYWJpbGl0eSBmb3IgZGV0YWlscyIpO3JldHVybiB0aGlzLmg/ZnVuY3Rpb24oZSxjKXtsZXQgZDtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3Qgdj1jKGVbaF0pO2QmJnYmJmQucHVzaChlW2hdKSx2fHwoZD8/PWUuc2xpY2UoMCxoKSl9cmV0dXJuIGR8fGV9KGgsZT0+ZS5tYXRjaGVzRmllbGQoZCkpOmh9YWN0aW9uc0ZvcihlKXtpZighUyhlKSl0aHJvdyBuZXcgRXJyb3IoJyJhY3Rpb25zRm9yIiBhY2NlcHRzIG9ubHkgc3ViamVjdCB0eXBlcyAoaS5lLiwgc3RyaW5nIG9yIGNsYXNzKSBhcyBhIHBhcmFtZXRlcicpO2NvbnN0IGM9bmV3IFNldCxkPXRoaXMubC5nZXQoZSk7ZCYmQXJyYXkuZnJvbShkLmtleXMoKSkuZm9yRWFjaChlPT5jLmFkZChlKSk7Y29uc3QgaD1lIT09dGhpcy5BP3RoaXMubC5nZXQodGhpcy5BKTp2b2lkIDA7cmV0dXJuIGgmJkFycmF5LmZyb20oaC5rZXlzKCkpLmZvckVhY2goZT0+Yy5hZGQoZSkpLEFycmF5LmZyb20oYyl9b24oZSxjKXt0aGlzLkY9dGhpcy5GfHxuZXcgTWFwO2NvbnN0IGQ9dGhpcy5GLGg9ZnVuY3Rpb24oZSxjKXtjb25zdCBkPXt2YWx1ZTplLHByZXY6YyxuZXh0Om51bGx9O3JldHVybiBjJiYoYy5uZXh0PWQpLGR9KGMsZC5nZXQoZSl8fG51bGwpO3JldHVybiBkLnNldChlLGgpLCgpPT57Y29uc3QgYz1kLmdldChlKTtoLm5leHR8fGgucHJldnx8YyE9PWg/aD09PWMmJmQuc2V0KGUsaC5wcmV2KTpkLmRlbGV0ZShlKSxmdW5jdGlvbihlKXtlLm5leHQmJihlLm5leHQucHJldj1lLnByZXYpLGUucHJldiYmKGUucHJldi5uZXh0PWUubmV4dCksZS5uZXh0PWUucHJldj1udWxsfShoKX19XyhlLGMpe2lmKCF0aGlzLkYpcmV0dXJuO2xldCBkPXRoaXMuRi5nZXQoZSl8fG51bGw7Y29uc3QgaD1bXTtmb3IoO251bGwhPT1kOyloLnB1c2goZC52YWx1ZSksZD1kLnByZXY7Zm9yKGxldCBlPTA7ZTxoLmxlbmd0aDtlKyspaFtlXShjKX19Y2xhc3MgUHVyZUFiaWxpdHkgZXh0ZW5kcyB0dHtjYW4oZSxjLGQpe2NvbnN0IGg9dGhpcy5yZWxldmFudFJ1bGVGb3IoZSxjLGQpO3JldHVybiEhaCYmIWguaW52ZXJ0ZWR9cmVsZXZhbnRSdWxlRm9yKGUsYyxkKXtjb25zdCBoPXRoaXMuZGV0ZWN0U3ViamVjdFR5cGUoYyksdj10aGlzLnJ1bGVzRm9yKGUsaCxkKTtmb3IobGV0IGU9MCxkPXYubGVuZ3RoO2U8ZDtlKyspaWYodltlXS5tYXRjaGVzQ29uZGl0aW9ucyhjKSlyZXR1cm4gdltlXTtyZXR1cm4gbnVsbH1jYW5ub3QoZSxjLGQpe3JldHVybiF0aGlzLmNhbihlLGMsZCl9fWNvbnN0IFByPXAoeyRlcTpmciwkbmU6bXIsJGx0OmRyLCRsdGU6cHIsJGd0OnVyLCRndGU6Y3IsJGluOnJyLCRuaW46YXIsJGFsbDppciwkc2l6ZTpvciwkcmVnZXg6aHIsJG9wdGlvbnM6Z3IsJGVsZW1NYXRjaDpuciwkZXhpc3RzOmxyfSx7ZXE6aixuZTpBLGx0OkVyLGx0ZTpTcixndDp3cixndGU6a3IsaW46VHIsbmluOnEkMSxhbGw6eixzaXplOngscmVnZXg6X3IsZWxlbU1hdGNoOkIkMSxleGlzdHM6dyxhbmQ6bSQxfSksTXI9L1stL1xcXiQrPy4oKXxbXF17fV0vZyxEcj0vXC4/XCorXC4/L2csQnI9L1wqKy8sTHI9L1wuL2c7ZnVuY3Rpb24gaHQoZSxjLGQpe2NvbnN0IGg9IioiPT09ZFswXXx8Ii4iPT09ZVswXSYmIi4iPT09ZVtlLmxlbmd0aC0xXT8iKyI6IioiLHY9LTE9PT1lLmluZGV4T2YoIioqIik/IlteLl0iOiIuIixiPWUucmVwbGFjZShMciwiXFwkJiIpLnJlcGxhY2UoQnIsditoKTtyZXR1cm4gYytlLmxlbmd0aD09PWQubGVuZ3RoP2AoPzoke2J9KT9gOmJ9ZnVuY3Rpb24gbHQoZSxjLGQpe3JldHVybiIuIiE9PWV8fCIqIiE9PWRbYy0xXSYmIioiIT09ZFtjKzFdP2BcXCR7ZX1gOmV9Y29uc3QgYXQ9ZT0+e2xldCBjO3JldHVybiBkPT4odm9pZCAwPT09YyYmKGM9ZS5ldmVyeShlPT4tMT09PWUuaW5kZXhPZigiKiIpKT9udWxsOmZ1bmN0aW9uKGUpe2NvbnN0IGM9ZS5tYXAoZT0+ZS5yZXBsYWNlKE1yLGx0KS5yZXBsYWNlKERyLGh0KSksZD1jLmxlbmd0aD4xP2AoPzoke2Muam9pbigifCIpfSlgOmNbMF07cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2R9JGApfShlKSksbnVsbD09PWM/LTEhPT1lLmluZGV4T2YoZCk6Yy50ZXN0KGQpKX07Y29uc3QganI9U3ltYm9sKCJhYmlsaXR5Iik7ZnVuY3Rpb24gbChlLGMsZCl7aWYoIShjJiZjIGluc3RhbmNlb2YgUHVyZUFiaWxpdHkpKXRocm93IG5ldyBFcnJvcigiUGxlYXNlIHByb3ZpZGUgYW4gQWJpbGl0eSBpbnN0YW5jZSB0byBhYmlsaXRpZXNQbHVnaW4gcGx1Z2luIik7ZS5wcm92aWRlKGpyLGZ1bmN0aW9uKGUpe2lmKE9iamVjdC5oYXNPd24oZSwicG9zc2libGVSdWxlc0ZvciIpKXJldHVybiBlO2NvbnN0IGM9YWUoITApO2Uub24oInVwZGF0ZWQiLCgpPT57Yy52YWx1ZT0hYy52YWx1ZX0pO2NvbnN0IGQ9ZS5wb3NzaWJsZVJ1bGVzRm9yLmJpbmQoZSk7cmV0dXJuIGUucG9zc2libGVSdWxlc0Zvcj0oZSxoKT0+KGMudmFsdWU9Yy52YWx1ZSxkKGUsaCkpLGUuY2FuPWUuY2FuLmJpbmQoZSksZS5jYW5ub3Q9ZS5jYW5ub3QuYmluZChlKSxlfShjKSksZCYmZC51c2VHbG9iYWxQcm9wZXJ0aWVzJiYoZS5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kYWJpbGl0eT1jLGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJGNhbj1jLmNhbi5iaW5kKGMpKX1jb25zdCBjcmVhdGVDbGFzc1BhcnRPYmplY3Q9KGU9bmV3IE1hcCxjPW51bGwsZCk9Pih7bmV4dFBhcnQ6ZSx2YWxpZGF0b3JzOmMsY2xhc3NHcm91cElkOmR9KSwkcj0iLSIsRnI9W10sY3JlYXRlQ2xhc3NHcm91cFV0aWxzPWU9Pntjb25zdCBjPWNyZWF0ZUNsYXNzTWFwKGUpLHtjb25mbGljdGluZ0NsYXNzR3JvdXBzOmQsY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOmh9PWU7cmV0dXJue2dldENsYXNzR3JvdXBJZDplPT57aWYoZS5zdGFydHNXaXRoKCJbIikmJmUuZW5kc1dpdGgoIl0iKSlyZXR1cm4gZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGUpO2NvbnN0IGQ9ZS5zcGxpdCgkciksaD0iIj09PWRbMF0mJmQubGVuZ3RoPjE/MTowO3JldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShkLGgsYyl9LGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkczooZSxjKT0+e2lmKGMpe2NvbnN0IGM9aFtlXSx2PWRbZV07cmV0dXJuIGM/dj8oKGUsYyk9Pntjb25zdCBkPW5ldyBBcnJheShlLmxlbmd0aCtjLmxlbmd0aCk7Zm9yKGxldCBjPTA7YzxlLmxlbmd0aDtjKyspZFtjXT1lW2NdO2ZvcihsZXQgaD0wO2g8Yy5sZW5ndGg7aCsrKWRbZS5sZW5ndGgraF09Y1toXTtyZXR1cm4gZH0pKHYsYyk6Yzp2fHxGcn1yZXR1cm4gZFtlXXx8RnJ9fX0sZ2V0R3JvdXBSZWN1cnNpdmU9KGUsYyxkKT0+e2lmKDA9PT1lLmxlbmd0aC1jKXJldHVybiBkLmNsYXNzR3JvdXBJZDtjb25zdCBoPWVbY10sdj1kLm5leHRQYXJ0LmdldChoKTtpZih2KXtjb25zdCBkPWdldEdyb3VwUmVjdXJzaXZlKGUsYysxLHYpO2lmKGQpcmV0dXJuIGR9Y29uc3QgYj1kLnZhbGlkYXRvcnM7aWYobnVsbD09PWIpcmV0dXJuO2NvbnN0IHk9MD09PWM/ZS5qb2luKCRyKTplLnNsaWNlKGMpLmpvaW4oJHIpLEU9Yi5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxFO2UrKyl7Y29uc3QgYz1iW2VdO2lmKGMudmFsaWRhdG9yKHkpKXJldHVybiBjLmNsYXNzR3JvdXBJZH19LGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eT1lPT4tMT09PWUuc2xpY2UoMSwtMSkuaW5kZXhPZigiOiIpP3ZvaWQgMDooKCk9Pntjb25zdCBjPWUuc2xpY2UoMSwtMSksZD1jLmluZGV4T2YoIjoiKSxoPWMuc2xpY2UoMCxkKTtyZXR1cm4gaD8iYXJiaXRyYXJ5Li4iK2g6dm9pZCAwfSkoKSxjcmVhdGVDbGFzc01hcD1lPT57Y29uc3R7dGhlbWU6YyxjbGFzc0dyb3VwczpkfT1lO3JldHVybiBwcm9jZXNzQ2xhc3NHcm91cHMoZCxjKX0scHJvY2Vzc0NsYXNzR3JvdXBzPShlLGMpPT57Y29uc3QgZD1jcmVhdGVDbGFzc1BhcnRPYmplY3QoKTtmb3IoY29uc3QgaCBpbiBlKXtjb25zdCB2PWVbaF07cHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSh2LGQsaCxjKX1yZXR1cm4gZH0scHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseT0oZSxjLGQsaCk9Pntjb25zdCB2PWUubGVuZ3RoO2ZvcihsZXQgYj0wO2I8djtiKyspe2NvbnN0IHY9ZVtiXTtwcm9jZXNzQ2xhc3NEZWZpbml0aW9uKHYsYyxkLGgpfX0scHJvY2Vzc0NsYXNzRGVmaW5pdGlvbj0oZSxjLGQsaCk9Pnsic3RyaW5nIiE9dHlwZW9mIGU/ImZ1bmN0aW9uIiE9dHlwZW9mIGU/cHJvY2Vzc09iamVjdERlZmluaXRpb24oZSxjLGQsaCk6cHJvY2Vzc0Z1bmN0aW9uRGVmaW5pdGlvbihlLGMsZCxoKTpwcm9jZXNzU3RyaW5nRGVmaW5pdGlvbihlLGMsZCl9LHByb2Nlc3NTdHJpbmdEZWZpbml0aW9uPShlLGMsZCk9PnsoIiI9PT1lP2M6Z2V0UGFydChjLGUpKS5jbGFzc0dyb3VwSWQ9ZH0scHJvY2Vzc0Z1bmN0aW9uRGVmaW5pdGlvbj0oZSxjLGQsaCk9Pntpc1RoZW1lR2V0dGVyKGUpP3Byb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoZShoKSxjLGQsaCk6KG51bGw9PT1jLnZhbGlkYXRvcnMmJihjLnZhbGlkYXRvcnM9W10pLGMudmFsaWRhdG9ycy5wdXNoKCgoZSxjKT0+KHtjbGFzc0dyb3VwSWQ6ZSx2YWxpZGF0b3I6Y30pKShkLGUpKSl9LHByb2Nlc3NPYmplY3REZWZpbml0aW9uPShlLGMsZCxoKT0+e2NvbnN0IHY9T2JqZWN0LmVudHJpZXMoZSksYj12Lmxlbmd0aDtmb3IobGV0IGU9MDtlPGI7ZSsrKXtjb25zdFtiLHldPXZbZV07cHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSh5LGdldFBhcnQoYyxiKSxkLGgpfX0sZ2V0UGFydD0oZSxjKT0+e2xldCBkPWU7Y29uc3QgaD1jLnNwbGl0KCRyKSx2PWgubGVuZ3RoO2ZvcihsZXQgZT0wO2U8djtlKyspe2NvbnN0IGM9aFtlXTtsZXQgdj1kLm5leHRQYXJ0LmdldChjKTt2fHwodj1jcmVhdGVDbGFzc1BhcnRPYmplY3QoKSxkLm5leHRQYXJ0LnNldChjLHYpKSxkPXZ9cmV0dXJuIGR9LGlzVGhlbWVHZXR0ZXI9ZT0+ImlzVGhlbWVHZXR0ZXIiaW4gZSYmITA9PT1lLmlzVGhlbWVHZXR0ZXIsY3JlYXRlTHJ1Q2FjaGU9ZT0+e2lmKGU8MSlyZXR1cm57Z2V0OigpPT57fSxzZXQ6KCk9Pnt9fTtsZXQgYz0wLGQ9T2JqZWN0LmNyZWF0ZShudWxsKSxoPU9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3QgdXBkYXRlPSh2LGIpPT57ZFt2XT1iLGMrKyxjPmUmJihjPTAsaD1kLGQ9T2JqZWN0LmNyZWF0ZShudWxsKSl9O3JldHVybntnZXQoZSl7bGV0IGM9ZFtlXTtyZXR1cm4gdm9pZCAwIT09Yz9jOnZvaWQgMCE9PShjPWhbZV0pPyh1cGRhdGUoZSxjKSxjKTp2b2lkIDB9LHNldChlLGMpe2UgaW4gZD9kW2VdPWM6dXBkYXRlKGUsYyl9fX0sVnI9W10sY3JlYXRlUmVzdWx0T2JqZWN0PShlLGMsZCxoLHYpPT4oe21vZGlmaWVyczplLGhhc0ltcG9ydGFudE1vZGlmaWVyOmMsYmFzZUNsYXNzTmFtZTpkLG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246aCxpc0V4dGVybmFsOnZ9KSxjcmVhdGVQYXJzZUNsYXNzTmFtZT1lPT57Y29uc3R7cHJlZml4OmMsZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWU6ZH09ZTtsZXQgcGFyc2VDbGFzc05hbWU9ZT0+e2NvbnN0IGM9W107bGV0IGQsaD0wLHY9MCxiPTA7Y29uc3QgeT1lLmxlbmd0aDtmb3IobGV0IEU9MDtFPHk7RSsrKXtjb25zdCB5PWVbRV07aWYoMD09PWgmJjA9PT12KXtpZigiOiI9PT15KXtjLnB1c2goZS5zbGljZShiLEUpKSxiPUUrMTtjb250aW51ZX1pZigiLyI9PT15KXtkPUU7Y29udGludWV9fSJbIj09PXk/aCsrOiJdIj09PXk/aC0tOiIoIj09PXk/disrOiIpIj09PXkmJnYtLX1jb25zdCBFPTA9PT1jLmxlbmd0aD9lOmUuc2xpY2UoYik7bGV0IGs9RSxfPSExO0UuZW5kc1dpdGgoIiEiKT8oaz1FLnNsaWNlKDAsLTEpLF89ITApOkUuc3RhcnRzV2l0aCgiISIpJiYoaz1FLnNsaWNlKDEpLF89ITApO3JldHVybiBjcmVhdGVSZXN1bHRPYmplY3QoYyxfLGssZCYmZD5iP2QtYjp2b2lkIDApfTtpZihjKXtjb25zdCBlPWMrIjoiLGQ9cGFyc2VDbGFzc05hbWU7cGFyc2VDbGFzc05hbWU9Yz0+Yy5zdGFydHNXaXRoKGUpP2QoYy5zbGljZShlLmxlbmd0aCkpOmNyZWF0ZVJlc3VsdE9iamVjdChWciwhMSxjLHZvaWQgMCwhMCl9aWYoZCl7Y29uc3QgZT1wYXJzZUNsYXNzTmFtZTtwYXJzZUNsYXNzTmFtZT1jPT5kKHtjbGFzc05hbWU6YyxwYXJzZUNsYXNzTmFtZTplfSl9cmV0dXJuIHBhcnNlQ2xhc3NOYW1lfSxjcmVhdGVTb3J0TW9kaWZpZXJzPWU9Pntjb25zdCBjPW5ldyBNYXA7cmV0dXJuIGUub3JkZXJTZW5zaXRpdmVNb2RpZmllcnMuZm9yRWFjaCgoZSxkKT0+e2Muc2V0KGUsMWU2K2QpfSksZT0+e2NvbnN0IGQ9W107bGV0IGg9W107Zm9yKGxldCB2PTA7djxlLmxlbmd0aDt2Kyspe2NvbnN0IGI9ZVt2XSx5PSJbIj09PWJbMF0sRT1jLmhhcyhiKTt5fHxFPyhoLmxlbmd0aD4wJiYoaC5zb3J0KCksZC5wdXNoKC4uLmgpLGg9W10pLGQucHVzaChiKSk6aC5wdXNoKGIpfXJldHVybiBoLmxlbmd0aD4wJiYoaC5zb3J0KCksZC5wdXNoKC4uLmgpKSxkfX0senI9L1xzKy8sdG9WYWx1ZT1lPT57aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2xldCBjLGQ9IiI7Zm9yKGxldCBoPTA7aDxlLmxlbmd0aDtoKyspZVtoXSYmKGM9dG9WYWx1ZShlW2hdKSkmJihkJiYoZCs9IiAiKSxkKz1jKTtyZXR1cm4gZH0sY3JlYXRlVGFpbHdpbmRNZXJnZT0oZSwuLi5jKT0+e2xldCBkLGgsdixiO2NvbnN0IHRhaWx3aW5kTWVyZ2U9ZT0+e2NvbnN0IGM9aChlKTtpZihjKXJldHVybiBjO2NvbnN0IGI9KChlLGMpPT57Y29uc3R7cGFyc2VDbGFzc05hbWU6ZCxnZXRDbGFzc0dyb3VwSWQ6aCxnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6dixzb3J0TW9kaWZpZXJzOmJ9PWMseT1bXSxFPWUudHJpbSgpLnNwbGl0KHpyKTtsZXQgaz0iIjtmb3IobGV0IGU9RS5sZW5ndGgtMTtlPj0wO2UtPTEpe2NvbnN0IGM9RVtlXSx7aXNFeHRlcm5hbDpfLG1vZGlmaWVyczpULGhhc0ltcG9ydGFudE1vZGlmaWVyOk4sYmFzZUNsYXNzTmFtZTpPLG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246Un09ZChjKTtpZihfKXtrPWMrKGsubGVuZ3RoPjA/IiAiK2s6ayk7Y29udGludWV9bGV0IE09ISFSLEQ9aChNP08uc3Vic3RyaW5nKDAsUik6Tyk7aWYoIUQpe2lmKCFNKXtrPWMrKGsubGVuZ3RoPjA/IiAiK2s6ayk7Y29udGludWV9aWYoRD1oKE8pLCFEKXtrPWMrKGsubGVuZ3RoPjA/IiAiK2s6ayk7Y29udGludWV9TT0hMX1jb25zdCBMPTA9PT1ULmxlbmd0aD8iIjoxPT09VC5sZW5ndGg/VFswXTpiKFQpLmpvaW4oIjoiKSwkPU4/TCsiISI6TCxGPSQrRDtpZih5LmluZGV4T2YoRik+LTEpY29udGludWU7eS5wdXNoKEYpO2NvbnN0IFY9dihELE0pO2ZvcihsZXQgZT0wO2U8Vi5sZW5ndGg7KytlKXtjb25zdCBjPVZbZV07eS5wdXNoKCQrYyl9az1jKyhrLmxlbmd0aD4wPyIgIitrOmspfXJldHVybiBrfSkoZSxkKTtyZXR1cm4gdihlLGIpLGJ9O3JldHVybiBiPXk9Pntjb25zdCBFPWMucmVkdWNlKChlLGMpPT5jKGUpLGUoKSk7cmV0dXJuIGQ9KGU9Pih7Y2FjaGU6Y3JlYXRlTHJ1Q2FjaGUoZS5jYWNoZVNpemUpLHBhcnNlQ2xhc3NOYW1lOmNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGUpLHNvcnRNb2RpZmllcnM6Y3JlYXRlU29ydE1vZGlmaWVycyhlKSwuLi5jcmVhdGVDbGFzc0dyb3VwVXRpbHMoZSl9KSkoRSksaD1kLmNhY2hlLmdldCx2PWQuY2FjaGUuc2V0LGI9dGFpbHdpbmRNZXJnZSx0YWlsd2luZE1lcmdlKHkpfSwoLi4uZSk9PmIoKCguLi5lKT0+e2xldCBjLGQsaD0wLHY9IiI7Zm9yKDtoPGUubGVuZ3RoOykoYz1lW2grK10pJiYoZD10b1ZhbHVlKGMpKSYmKHYmJih2Kz0iICIpLHYrPWQpO3JldHVybiB2fSkoLi4uZSkpfSxxcj1bXSxmcm9tVGhlbWU9ZT0+e2NvbnN0IHRoZW1lR2V0dGVyPWM9PmNbZV18fHFyO3JldHVybiB0aGVtZUdldHRlci5pc1RoZW1lR2V0dGVyPSEwLHRoZW1lR2V0dGVyfSxVcj0vXlxbKD86KFx3W1x3LV0qKTopPyguKylcXSQvaSxIcj0vXlwoKD86KFx3W1x3LV0qKTopPyguKylcKSQvaSxHcj0vXlxkKyg/OlwuXGQrKT9cL1xkKyg/OlwuXGQrKT8kLyxXcj0vXihcZCsoXC5cZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvLFhyPS9cZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxiKGNhbGN8bWlufG1heHxjbGFtcClcKC4rXCl8XjAkLyxLcj0vXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCl8Y29sb3ItbWl4KVwoLitcKSQvLEpyPS9eKGluc2V0Xyk/LT8oKFxkKyk/XC4/KFxkKylbYS16XSt8MClfLT8oKFxkKyk/XC4/KFxkKylbYS16XSt8MCkvLFFyPS9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXCguK1wpJC8saXNGcmFjdGlvbj1lPT5Hci50ZXN0KGUpLGlzTnVtYmVyJDE9ZT0+ISFlJiYhTnVtYmVyLmlzTmFOKE51bWJlcihlKSksaXNJbnRlZ2VyPWU9PiEhZSYmTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIoZSkpLGlzUGVyY2VudD1lPT5lLmVuZHNXaXRoKCIlIikmJmlzTnVtYmVyJDEoZS5zbGljZSgwLC0xKSksaXNUc2hpcnRTaXplPWU9PldyLnRlc3QoZSksaXNBbnk9KCk9PiEwLGlzTGVuZ3RoT25seT1lPT5Yci50ZXN0KGUpJiYhS3IudGVzdChlKSxpc05ldmVyPSgpPT4hMSxpc1NoYWRvdz1lPT5Kci50ZXN0KGUpLGlzSW1hZ2U9ZT0+UXIudGVzdChlKSxpc0FueU5vbkFyYml0cmFyeT1lPT4haXNBcmJpdHJhcnlWYWx1ZShlKSYmIWlzQXJiaXRyYXJ5VmFyaWFibGUoZSksaXNBcmJpdHJhcnlTaXplPWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsU2l6ZSxpc05ldmVyKSxpc0FyYml0cmFyeVZhbHVlPWU9PlVyLnRlc3QoZSksaXNBcmJpdHJhcnlMZW5ndGg9ZT0+Z2V0SXNBcmJpdHJhcnlWYWx1ZShlLGlzTGFiZWxMZW5ndGgsaXNMZW5ndGhPbmx5KSxpc0FyYml0cmFyeU51bWJlcj1lPT5nZXRJc0FyYml0cmFyeVZhbHVlKGUsaXNMYWJlbE51bWJlcixpc051bWJlciQxKSxpc0FyYml0cmFyeVdlaWdodD1lPT5nZXRJc0FyYml0cmFyeVZhbHVlKGUsaXNMYWJlbFdlaWdodCxpc0FueSksaXNBcmJpdHJhcnlGYW1pbHlOYW1lPWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsRmFtaWx5TmFtZSxpc05ldmVyKSxpc0FyYml0cmFyeVBvc2l0aW9uPWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsUG9zaXRpb24saXNOZXZlciksaXNBcmJpdHJhcnlJbWFnZT1lPT5nZXRJc0FyYml0cmFyeVZhbHVlKGUsaXNMYWJlbEltYWdlLGlzSW1hZ2UpLGlzQXJiaXRyYXJ5U2hhZG93PWU9PmdldElzQXJiaXRyYXJ5VmFsdWUoZSxpc0xhYmVsU2hhZG93LGlzU2hhZG93KSxpc0FyYml0cmFyeVZhcmlhYmxlPWU9PkhyLnRlc3QoZSksaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aD1lPT5nZXRJc0FyYml0cmFyeVZhcmlhYmxlKGUsaXNMYWJlbExlbmd0aCksaXNBcmJpdHJhcnlWYXJpYWJsZUZhbWlseU5hbWU9ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxGYW1pbHlOYW1lKSxpc0FyYml0cmFyeVZhcmlhYmxlUG9zaXRpb249ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxQb3NpdGlvbiksaXNBcmJpdHJhcnlWYXJpYWJsZVNpemU9ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxTaXplKSxpc0FyYml0cmFyeVZhcmlhYmxlSW1hZ2U9ZT0+Z2V0SXNBcmJpdHJhcnlWYXJpYWJsZShlLGlzTGFiZWxJbWFnZSksaXNBcmJpdHJhcnlWYXJpYWJsZVNoYWRvdz1lPT5nZXRJc0FyYml0cmFyeVZhcmlhYmxlKGUsaXNMYWJlbFNoYWRvdywhMCksaXNBcmJpdHJhcnlWYXJpYWJsZVdlaWdodD1lPT5nZXRJc0FyYml0cmFyeVZhcmlhYmxlKGUsaXNMYWJlbFdlaWdodCwhMCksZ2V0SXNBcmJpdHJhcnlWYWx1ZT0oZSxjLGQpPT57Y29uc3QgaD1Vci5leGVjKGUpO3JldHVybiEhaCYmKGhbMV0/YyhoWzFdKTpkKGhbMl0pKX0sZ2V0SXNBcmJpdHJhcnlWYXJpYWJsZT0oZSxjLGQ9ITEpPT57Y29uc3QgaD1Ici5leGVjKGUpO3JldHVybiEhaCYmKGhbMV0/YyhoWzFdKTpkKX0saXNMYWJlbFBvc2l0aW9uPWU9PiJwb3NpdGlvbiI9PT1lfHwicGVyY2VudGFnZSI9PT1lLGlzTGFiZWxJbWFnZT1lPT4iaW1hZ2UiPT09ZXx8InVybCI9PT1lLGlzTGFiZWxTaXplPWU9PiJsZW5ndGgiPT09ZXx8InNpemUiPT09ZXx8ImJnLXNpemUiPT09ZSxpc0xhYmVsTGVuZ3RoPWU9PiJsZW5ndGgiPT09ZSxpc0xhYmVsTnVtYmVyPWU9PiJudW1iZXIiPT09ZSxpc0xhYmVsRmFtaWx5TmFtZT1lPT4iZmFtaWx5LW5hbWUiPT09ZSxpc0xhYmVsV2VpZ2h0PWU9PiJudW1iZXIiPT09ZXx8IndlaWdodCI9PT1lLGlzTGFiZWxTaGFkb3c9ZT0+InNoYWRvdyI9PT1lLGdldERlZmF1bHRDb25maWc9KCk9Pntjb25zdCBlPWZyb21UaGVtZSgiY29sb3IiKSxjPWZyb21UaGVtZSgiZm9udCIpLGQ9ZnJvbVRoZW1lKCJ0ZXh0IiksaD1mcm9tVGhlbWUoImZvbnQtd2VpZ2h0Iiksdj1mcm9tVGhlbWUoInRyYWNraW5nIiksYj1mcm9tVGhlbWUoImxlYWRpbmciKSx5PWZyb21UaGVtZSgiYnJlYWtwb2ludCIpLEU9ZnJvbVRoZW1lKCJjb250YWluZXIiKSxrPWZyb21UaGVtZSgic3BhY2luZyIpLF89ZnJvbVRoZW1lKCJyYWRpdXMiKSxUPWZyb21UaGVtZSgic2hhZG93IiksTj1mcm9tVGhlbWUoImluc2V0LXNoYWRvdyIpLE89ZnJvbVRoZW1lKCJ0ZXh0LXNoYWRvdyIpLFI9ZnJvbVRoZW1lKCJkcm9wLXNoYWRvdyIpLE09ZnJvbVRoZW1lKCJibHVyIiksRD1mcm9tVGhlbWUoInBlcnNwZWN0aXZlIiksTD1mcm9tVGhlbWUoImFzcGVjdCIpLCQ9ZnJvbVRoZW1lKCJlYXNlIiksRj1mcm9tVGhlbWUoImFuaW1hdGUiKSxzY2FsZVBvc2l0aW9uV2l0aEFyYml0cmFyeT0oKT0+WyJjZW50ZXIiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AtbGVmdCIsImxlZnQtdG9wIiwidG9wLXJpZ2h0IiwicmlnaHQtdG9wIiwiYm90dG9tLXJpZ2h0IiwicmlnaHQtYm90dG9tIiwiYm90dG9tLWxlZnQiLCJsZWZ0LWJvdHRvbSIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZVVuYW1iaWd1b3VzU3BhY2luZz0oKT0+W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZSxrXSxzY2FsZUluc2V0PSgpPT5baXNGcmFjdGlvbiwiZnVsbCIsImF1dG8iLC4uLnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCldLHNjYWxlR3JpZFRlbXBsYXRlQ29sc1Jvd3M9KCk9Pltpc0ludGVnZXIsIm5vbmUiLCJzdWJncmlkIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLHNjYWxlR3JpZENvbFJvd1N0YXJ0QW5kRW5kPSgpPT5bImF1dG8iLHtzcGFuOlsiZnVsbCIsaXNJbnRlZ2VyLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19LGlzSW50ZWdlcixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLHNjYWxlR3JpZENvbFJvd1N0YXJ0T3JFbmQ9KCk9Pltpc0ludGVnZXIsImF1dG8iLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVHcmlkQXV0b0NvbHNSb3dzPSgpPT5bImF1dG8iLCJtaW4iLCJtYXgiLCJmciIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZU1hcmdpbj0oKT0+WyJhdXRvIiwuLi5zY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpXSxzY2FsZVNpemluZz0oKT0+W2lzRnJhY3Rpb24sImF1dG8iLCJmdWxsIiwiZHZ3IiwiZHZoIiwibHZ3IiwibHZoIiwic3Z3Iiwic3ZoIiwibWluIiwibWF4IiwiZml0IiwuLi5zY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpXSxzY2FsZVNpemluZ0lubGluZT0oKT0+W2lzRnJhY3Rpb24sInNjcmVlbiIsImZ1bGwiLCJkdnciLCJsdnciLCJzdnciLCJtaW4iLCJtYXgiLCJmaXQiLC4uLnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCldLHNjYWxlU2l6aW5nQmxvY2s9KCk9Pltpc0ZyYWN0aW9uLCJzY3JlZW4iLCJmdWxsIiwibGgiLCJkdmgiLCJsdmgiLCJzdmgiLCJtaW4iLCJtYXgiLCJmaXQiLC4uLnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCldLHNjYWxlQ29sb3I9KCk9PltlLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVCZ1Bvc2l0aW9uPSgpPT5bImNlbnRlciIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsInRvcC1sZWZ0IiwibGVmdC10b3AiLCJ0b3AtcmlnaHQiLCJyaWdodC10b3AiLCJib3R0b20tcmlnaHQiLCJyaWdodC1ib3R0b20iLCJib3R0b20tbGVmdCIsImxlZnQtYm90dG9tIixpc0FyYml0cmFyeVZhcmlhYmxlUG9zaXRpb24saXNBcmJpdHJhcnlQb3NpdGlvbix7cG9zaXRpb246W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxzY2FsZUJnU2l6ZT0oKT0+WyJhdXRvIiwiY292ZXIiLCJjb250YWluIixpc0FyYml0cmFyeVZhcmlhYmxlU2l6ZSxpc0FyYml0cmFyeVNpemUse3NpemU6W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxzY2FsZUdyYWRpZW50U3RvcFBvc2l0aW9uPSgpPT5baXNQZXJjZW50LGlzQXJiaXRyYXJ5VmFyaWFibGVMZW5ndGgsaXNBcmJpdHJhcnlMZW5ndGhdLHNjYWxlUmFkaXVzPSgpPT5bIiIsIm5vbmUiLCJmdWxsIixfLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVCb3JkZXJXaWR0aD0oKT0+WyIiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aCxpc0FyYml0cmFyeUxlbmd0aF0sc2NhbGVNYXNrSW1hZ2VQb3NpdGlvbj0oKT0+W2lzTnVtYmVyJDEsaXNQZXJjZW50LGlzQXJiaXRyYXJ5VmFyaWFibGVQb3NpdGlvbixpc0FyYml0cmFyeVBvc2l0aW9uXSxzY2FsZUJsdXI9KCk9PlsiIiwibm9uZSIsTSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLHNjYWxlUm90YXRlPSgpPT5bIm5vbmUiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZVNjYWxlPSgpPT5bIm5vbmUiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXSxzY2FsZVNrZXc9KCk9Pltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0sc2NhbGVUcmFuc2xhdGU9KCk9Pltpc0ZyYWN0aW9uLCJmdWxsIiwuLi5zY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpXTtyZXR1cm57Y2FjaGVTaXplOjUwMCx0aGVtZTp7YW5pbWF0ZTpbInNwaW4iLCJwaW5nIiwicHVsc2UiLCJib3VuY2UiXSxhc3BlY3Q6WyJ2aWRlbyJdLGJsdXI6W2lzVHNoaXJ0U2l6ZV0sYnJlYWtwb2ludDpbaXNUc2hpcnRTaXplXSxjb2xvcjpbaXNBbnldLGNvbnRhaW5lcjpbaXNUc2hpcnRTaXplXSwiZHJvcC1zaGFkb3ciOltpc1RzaGlydFNpemVdLGVhc2U6WyJpbiIsIm91dCIsImluLW91dCJdLGZvbnQ6W2lzQW55Tm9uQXJiaXRyYXJ5XSwiZm9udC13ZWlnaHQiOlsidGhpbiIsImV4dHJhbGlnaHQiLCJsaWdodCIsIm5vcm1hbCIsIm1lZGl1bSIsInNlbWlib2xkIiwiYm9sZCIsImV4dHJhYm9sZCIsImJsYWNrIl0sImluc2V0LXNoYWRvdyI6W2lzVHNoaXJ0U2l6ZV0sbGVhZGluZzpbIm5vbmUiLCJ0aWdodCIsInNudWciLCJub3JtYWwiLCJyZWxheGVkIiwibG9vc2UiXSxwZXJzcGVjdGl2ZTpbImRyYW1hdGljIiwibmVhciIsIm5vcm1hbCIsIm1pZHJhbmdlIiwiZGlzdGFudCIsIm5vbmUiXSxyYWRpdXM6W2lzVHNoaXJ0U2l6ZV0sc2hhZG93Oltpc1RzaGlydFNpemVdLHNwYWNpbmc6WyJweCIsaXNOdW1iZXIkMV0sdGV4dDpbaXNUc2hpcnRTaXplXSwidGV4dC1zaGFkb3ciOltpc1RzaGlydFNpemVdLHRyYWNraW5nOlsidGlnaHRlciIsInRpZ2h0Iiwibm9ybWFsIiwid2lkZSIsIndpZGVyIiwid2lkZXN0Il19LGNsYXNzR3JvdXBzOnthc3BlY3Q6W3thc3BlY3Q6WyJhdXRvIiwic3F1YXJlIixpc0ZyYWN0aW9uLGlzQXJiaXRyYXJ5VmFsdWUsaXNBcmJpdHJhcnlWYXJpYWJsZSxMXX1dLGNvbnRhaW5lcjpbImNvbnRhaW5lciJdLGNvbHVtbnM6W3tjb2x1bW5zOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFsdWUsaXNBcmJpdHJhcnlWYXJpYWJsZSxFXX1dLCJicmVhay1hZnRlciI6W3siYnJlYWstYWZ0ZXIiOlsiYXV0byIsImF2b2lkIiwiYWxsIiwiYXZvaWQtcGFnZSIsInBhZ2UiLCJsZWZ0IiwicmlnaHQiLCJjb2x1bW4iXX1dLCJicmVhay1iZWZvcmUiOlt7ImJyZWFrLWJlZm9yZSI6WyJhdXRvIiwiYXZvaWQiLCJhbGwiLCJhdm9pZC1wYWdlIiwicGFnZSIsImxlZnQiLCJyaWdodCIsImNvbHVtbiJdfV0sImJyZWFrLWluc2lkZSI6W3siYnJlYWstaW5zaWRlIjpbImF1dG8iLCJhdm9pZCIsImF2b2lkLXBhZ2UiLCJhdm9pZC1jb2x1bW4iXX1dLCJib3gtZGVjb3JhdGlvbiI6W3siYm94LWRlY29yYXRpb24iOlsic2xpY2UiLCJjbG9uZSJdfV0sYm94Olt7Ym94OlsiYm9yZGVyIiwiY29udGVudCJdfV0sZGlzcGxheTpbImJsb2NrIiwiaW5saW5lLWJsb2NrIiwiaW5saW5lIiwiZmxleCIsImlubGluZS1mbGV4IiwidGFibGUiLCJpbmxpbmUtdGFibGUiLCJ0YWJsZS1jYXB0aW9uIiwidGFibGUtY2VsbCIsInRhYmxlLWNvbHVtbiIsInRhYmxlLWNvbHVtbi1ncm91cCIsInRhYmxlLWZvb3Rlci1ncm91cCIsInRhYmxlLWhlYWRlci1ncm91cCIsInRhYmxlLXJvdy1ncm91cCIsInRhYmxlLXJvdyIsImZsb3ctcm9vdCIsImdyaWQiLCJpbmxpbmUtZ3JpZCIsImNvbnRlbnRzIiwibGlzdC1pdGVtIiwiaGlkZGVuIl0sc3I6WyJzci1vbmx5Iiwibm90LXNyLW9ubHkiXSxmbG9hdDpbe2Zsb2F0OlsicmlnaHQiLCJsZWZ0Iiwibm9uZSIsInN0YXJ0IiwiZW5kIl19XSxjbGVhcjpbe2NsZWFyOlsibGVmdCIsInJpZ2h0IiwiYm90aCIsIm5vbmUiLCJzdGFydCIsImVuZCJdfV0saXNvbGF0aW9uOlsiaXNvbGF0ZSIsImlzb2xhdGlvbi1hdXRvIl0sIm9iamVjdC1maXQiOlt7b2JqZWN0OlsiY29udGFpbiIsImNvdmVyIiwiZmlsbCIsIm5vbmUiLCJzY2FsZS1kb3duIl19XSwib2JqZWN0LXBvc2l0aW9uIjpbe29iamVjdDpzY2FsZVBvc2l0aW9uV2l0aEFyYml0cmFyeSgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzpbImF1dG8iLCJoaWRkZW4iLCJjbGlwIiwidmlzaWJsZSIsInNjcm9sbCJdfV0sIm92ZXJmbG93LXgiOlt7Im92ZXJmbG93LXgiOlsiYXV0byIsImhpZGRlbiIsImNsaXAiLCJ2aXNpYmxlIiwic2Nyb2xsIl19XSwib3ZlcmZsb3cteSI6W3sib3ZlcmZsb3cteSI6WyJhdXRvIiwiaGlkZGVuIiwiY2xpcCIsInZpc2libGUiLCJzY3JvbGwiXX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOlsiYXV0byIsImNvbnRhaW4iLCJub25lIl19XSwib3ZlcnNjcm9sbC14IjpbeyJvdmVyc2Nyb2xsLXgiOlsiYXV0byIsImNvbnRhaW4iLCJub25lIl19XSwib3ZlcnNjcm9sbC15IjpbeyJvdmVyc2Nyb2xsLXkiOlsiYXV0byIsImNvbnRhaW4iLCJub25lIl19XSxwb3NpdGlvbjpbInN0YXRpYyIsImZpeGVkIiwiYWJzb2x1dGUiLCJyZWxhdGl2ZSIsInN0aWNreSJdLGluc2V0Olt7aW5zZXQ6c2NhbGVJbnNldCgpfV0sImluc2V0LXgiOlt7Imluc2V0LXgiOnNjYWxlSW5zZXQoKX1dLCJpbnNldC15IjpbeyJpbnNldC15IjpzY2FsZUluc2V0KCl9XSxzdGFydDpbeyJpbnNldC1zIjpzY2FsZUluc2V0KCksc3RhcnQ6c2NhbGVJbnNldCgpfV0sZW5kOlt7Imluc2V0LWUiOnNjYWxlSW5zZXQoKSxlbmQ6c2NhbGVJbnNldCgpfV0sImluc2V0LWJzIjpbeyJpbnNldC1icyI6c2NhbGVJbnNldCgpfV0sImluc2V0LWJlIjpbeyJpbnNldC1iZSI6c2NhbGVJbnNldCgpfV0sdG9wOlt7dG9wOnNjYWxlSW5zZXQoKX1dLHJpZ2h0Olt7cmlnaHQ6c2NhbGVJbnNldCgpfV0sYm90dG9tOlt7Ym90dG9tOnNjYWxlSW5zZXQoKX1dLGxlZnQ6W3tsZWZ0OnNjYWxlSW5zZXQoKX1dLHZpc2liaWxpdHk6WyJ2aXNpYmxlIiwiaW52aXNpYmxlIiwiY29sbGFwc2UiXSx6Olt7ejpbaXNJbnRlZ2VyLCJhdXRvIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sYmFzaXM6W3tiYXNpczpbaXNGcmFjdGlvbiwiZnVsbCIsImF1dG8iLEUsLi4uc2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKV19XSwiZmxleC1kaXJlY3Rpb24iOlt7ZmxleDpbInJvdyIsInJvdy1yZXZlcnNlIiwiY29sIiwiY29sLXJldmVyc2UiXX1dLCJmbGV4LXdyYXAiOlt7ZmxleDpbIm5vd3JhcCIsIndyYXAiLCJ3cmFwLXJldmVyc2UiXX1dLGZsZXg6W3tmbGV4Oltpc051bWJlciQxLGlzRnJhY3Rpb24sImF1dG8iLCJpbml0aWFsIiwibm9uZSIsaXNBcmJpdHJhcnlWYWx1ZV19XSxncm93Olt7Z3JvdzpbIiIsaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sc2hyaW5rOlt7c2hyaW5rOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxvcmRlcjpbe29yZGVyOltpc0ludGVnZXIsImZpcnN0IiwibGFzdCIsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiZ3JpZC1jb2xzIjpbeyJncmlkLWNvbHMiOnNjYWxlR3JpZFRlbXBsYXRlQ29sc1Jvd3MoKX1dLCJjb2wtc3RhcnQtZW5kIjpbe2NvbDpzY2FsZUdyaWRDb2xSb3dTdGFydEFuZEVuZCgpfV0sImNvbC1zdGFydCI6W3siY29sLXN0YXJ0IjpzY2FsZUdyaWRDb2xSb3dTdGFydE9yRW5kKCl9XSwiY29sLWVuZCI6W3siY29sLWVuZCI6c2NhbGVHcmlkQ29sUm93U3RhcnRPckVuZCgpfV0sImdyaWQtcm93cyI6W3siZ3JpZC1yb3dzIjpzY2FsZUdyaWRUZW1wbGF0ZUNvbHNSb3dzKCl9XSwicm93LXN0YXJ0LWVuZCI6W3tyb3c6c2NhbGVHcmlkQ29sUm93U3RhcnRBbmRFbmQoKX1dLCJyb3ctc3RhcnQiOlt7InJvdy1zdGFydCI6c2NhbGVHcmlkQ29sUm93U3RhcnRPckVuZCgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOnNjYWxlR3JpZENvbFJvd1N0YXJ0T3JFbmQoKX1dLCJncmlkLWZsb3ciOlt7ImdyaWQtZmxvdyI6WyJyb3ciLCJjb2wiLCJkZW5zZSIsInJvdy1kZW5zZSIsImNvbC1kZW5zZSJdfV0sImF1dG8tY29scyI6W3siYXV0by1jb2xzIjpzY2FsZUdyaWRBdXRvQ29sc1Jvd3MoKX1dLCJhdXRvLXJvd3MiOlt7ImF1dG8tcm93cyI6c2NhbGVHcmlkQXV0b0NvbHNSb3dzKCl9XSxnYXA6W3tnYXA6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJnYXAteCI6W3siZ2FwLXgiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwiZ2FwLXkiOlt7ImdhcC15IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sImp1c3RpZnktY29udGVudCI6W3tqdXN0aWZ5Olsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSIsIm5vcm1hbCJdfV0sImp1c3RpZnktaXRlbXMiOlt7Imp1c3RpZnktaXRlbXMiOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJzdHJldGNoIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSIsIm5vcm1hbCJdfV0sImp1c3RpZnktc2VsZiI6W3sianVzdGlmeS1zZWxmIjpbImF1dG8iLCJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giLCJjZW50ZXItc2FmZSIsImVuZC1zYWZlIl19XSwiYWxpZ24tY29udGVudCI6W3tjb250ZW50Olsibm9ybWFsIiwic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdfV0sImFsaWduLWl0ZW1zIjpbe2l0ZW1zOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJzdHJldGNoIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSIse2Jhc2VsaW5lOlsiIiwibGFzdCJdfV19XSwiYWxpZ24tc2VsZiI6W3tzZWxmOlsiYXV0byIsInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwic3RyZXRjaCIsImNlbnRlci1zYWZlIiwiZW5kLXNhZmUiLHtiYXNlbGluZTpbIiIsImxhc3QiXX1dfV0sInBsYWNlLWNvbnRlbnQiOlt7InBsYWNlLWNvbnRlbnQiOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdfV0sInBsYWNlLWl0ZW1zIjpbeyJwbGFjZS1pdGVtcyI6WyJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giLCJjZW50ZXItc2FmZSIsImVuZC1zYWZlIiwiYmFzZWxpbmUiXX1dLCJwbGFjZS1zZWxmIjpbeyJwbGFjZS1zZWxmIjpbImF1dG8iLCJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giLCJjZW50ZXItc2FmZSIsImVuZC1zYWZlIl19XSxwOlt7cDpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scHg6W3tweDpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scHk6W3tweTpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scHM6W3twczpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scGU6W3twZTpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0scGJzOlt7cGJzOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSxwYmU6W3twYmU6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHB0Olt7cHQ6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHByOlt7cHI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHBiOlt7cGI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLHBsOlt7cGw6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLG06W3ttOnNjYWxlTWFyZ2luKCl9XSxteDpbe214OnNjYWxlTWFyZ2luKCl9XSxteTpbe215OnNjYWxlTWFyZ2luKCl9XSxtczpbe21zOnNjYWxlTWFyZ2luKCl9XSxtZTpbe21lOnNjYWxlTWFyZ2luKCl9XSxtYnM6W3ttYnM6c2NhbGVNYXJnaW4oKX1dLG1iZTpbe21iZTpzY2FsZU1hcmdpbigpfV0sbXQ6W3ttdDpzY2FsZU1hcmdpbigpfV0sbXI6W3ttcjpzY2FsZU1hcmdpbigpfV0sbWI6W3ttYjpzY2FsZU1hcmdpbigpfV0sbWw6W3ttbDpzY2FsZU1hcmdpbigpfV0sInNwYWNlLXgiOlt7InNwYWNlLXgiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic3BhY2UteC1yZXZlcnNlIjpbInNwYWNlLXgtcmV2ZXJzZSJdLCJzcGFjZS15IjpbeyJzcGFjZS15IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNwYWNlLXktcmV2ZXJzZSI6WyJzcGFjZS15LXJldmVyc2UiXSxzaXplOlt7c2l6ZTpzY2FsZVNpemluZygpfV0sImlubGluZS1zaXplIjpbe2lubGluZTpbImF1dG8iLC4uLnNjYWxlU2l6aW5nSW5saW5lKCldfV0sIm1pbi1pbmxpbmUtc2l6ZSI6W3sibWluLWlubGluZSI6WyJhdXRvIiwuLi5zY2FsZVNpemluZ0lubGluZSgpXX1dLCJtYXgtaW5saW5lLXNpemUiOlt7Im1heC1pbmxpbmUiOlsibm9uZSIsLi4uc2NhbGVTaXppbmdJbmxpbmUoKV19XSwiYmxvY2stc2l6ZSI6W3tibG9jazpbImF1dG8iLC4uLnNjYWxlU2l6aW5nQmxvY2soKV19XSwibWluLWJsb2NrLXNpemUiOlt7Im1pbi1ibG9jayI6WyJhdXRvIiwuLi5zY2FsZVNpemluZ0Jsb2NrKCldfV0sIm1heC1ibG9jay1zaXplIjpbeyJtYXgtYmxvY2siOlsibm9uZSIsLi4uc2NhbGVTaXppbmdCbG9jaygpXX1dLHc6W3t3OltFLCJzY3JlZW4iLC4uLnNjYWxlU2l6aW5nKCldfV0sIm1pbi13IjpbeyJtaW4tdyI6W0UsInNjcmVlbiIsIm5vbmUiLC4uLnNjYWxlU2l6aW5nKCldfV0sIm1heC13IjpbeyJtYXgtdyI6W0UsInNjcmVlbiIsIm5vbmUiLCJwcm9zZSIse3NjcmVlbjpbeV19LC4uLnNjYWxlU2l6aW5nKCldfV0saDpbe2g6WyJzY3JlZW4iLCJsaCIsLi4uc2NhbGVTaXppbmcoKV19XSwibWluLWgiOlt7Im1pbi1oIjpbInNjcmVlbiIsImxoIiwibm9uZSIsLi4uc2NhbGVTaXppbmcoKV19XSwibWF4LWgiOlt7Im1heC1oIjpbInNjcmVlbiIsImxoIiwuLi5zY2FsZVNpemluZygpXX1dLCJmb250LXNpemUiOlt7dGV4dDpbImJhc2UiLGQsaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aCxpc0FyYml0cmFyeUxlbmd0aF19XSwiZm9udC1zbW9vdGhpbmciOlsiYW50aWFsaWFzZWQiLCJzdWJwaXhlbC1hbnRpYWxpYXNlZCJdLCJmb250LXN0eWxlIjpbIml0YWxpYyIsIm5vdC1pdGFsaWMiXSwiZm9udC13ZWlnaHQiOlt7Zm9udDpbaCxpc0FyYml0cmFyeVZhcmlhYmxlV2VpZ2h0LGlzQXJiaXRyYXJ5V2VpZ2h0XX1dLCJmb250LXN0cmV0Y2giOlt7ImZvbnQtc3RyZXRjaCI6WyJ1bHRyYS1jb25kZW5zZWQiLCJleHRyYS1jb25kZW5zZWQiLCJjb25kZW5zZWQiLCJzZW1pLWNvbmRlbnNlZCIsIm5vcm1hbCIsInNlbWktZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhLWV4cGFuZGVkIiwidWx0cmEtZXhwYW5kZWQiLGlzUGVyY2VudCxpc0FyYml0cmFyeVZhbHVlXX1dLCJmb250LWZhbWlseSI6W3tmb250Oltpc0FyYml0cmFyeVZhcmlhYmxlRmFtaWx5TmFtZSxpc0FyYml0cmFyeUZhbWlseU5hbWUsY119XSwiZm9udC1mZWF0dXJlcyI6W3siZm9udC1mZWF0dXJlcyI6W2lzQXJiaXRyYXJ5VmFsdWVdfV0sImZ2bi1ub3JtYWwiOlsibm9ybWFsLW51bXMiXSwiZnZuLW9yZGluYWwiOlsib3JkaW5hbCJdLCJmdm4tc2xhc2hlZC16ZXJvIjpbInNsYXNoZWQtemVybyJdLCJmdm4tZmlndXJlIjpbImxpbmluZy1udW1zIiwib2xkc3R5bGUtbnVtcyJdLCJmdm4tc3BhY2luZyI6WyJwcm9wb3J0aW9uYWwtbnVtcyIsInRhYnVsYXItbnVtcyJdLCJmdm4tZnJhY3Rpb24iOlsiZGlhZ29uYWwtZnJhY3Rpb25zIiwic3RhY2tlZC1mcmFjdGlvbnMiXSx0cmFja2luZzpbe3RyYWNraW5nOlt2LGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwibGluZS1jbGFtcCI6W3sibGluZS1jbGFtcCI6W2lzTnVtYmVyJDEsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlOdW1iZXJdfV0sbGVhZGluZzpbe2xlYWRpbmc6W2IsLi4uc2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKV19XSwibGlzdC1pbWFnZSI6W3sibGlzdC1pbWFnZSI6WyJub25lIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbImluc2lkZSIsIm91dHNpZGUiXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbImRpc2MiLCJkZWNpbWFsIiwibm9uZSIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJ0ZXh0LWFsaWdubWVudCI6W3t0ZXh0OlsibGVmdCIsImNlbnRlciIsInJpZ2h0IiwianVzdGlmeSIsInN0YXJ0IiwiZW5kIl19XSwicGxhY2Vob2xkZXItY29sb3IiOlt7cGxhY2Vob2xkZXI6c2NhbGVDb2xvcigpfV0sInRleHQtY29sb3IiOlt7dGV4dDpzY2FsZUNvbG9yKCl9XSwidGV4dC1kZWNvcmF0aW9uIjpbInVuZGVybGluZSIsIm92ZXJsaW5lIiwibGluZS10aHJvdWdoIiwibm8tdW5kZXJsaW5lIl0sInRleHQtZGVjb3JhdGlvbi1zdHlsZSI6W3tkZWNvcmF0aW9uOlsic29saWQiLCJkYXNoZWQiLCJkb3R0ZWQiLCJkb3VibGUiLCJ3YXZ5Il19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltpc051bWJlciQxLCJmcm9tLWZvbnQiLCJhdXRvIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5TGVuZ3RoXX1dLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiOlt7ZGVjb3JhdGlvbjpzY2FsZUNvbG9yKCl9XSwidW5kZXJsaW5lLW9mZnNldCI6W3sidW5kZXJsaW5lLW9mZnNldCI6W2lzTnVtYmVyJDEsImF1dG8iLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwidGV4dC10cmFuc2Zvcm0iOlsidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsIm5vcm1hbC1jYXNlIl0sInRleHQtb3ZlcmZsb3ciOlsidHJ1bmNhdGUiLCJ0ZXh0LWVsbGlwc2lzIiwidGV4dC1jbGlwIl0sInRleHQtd3JhcCI6W3t0ZXh0Olsid3JhcCIsIm5vd3JhcCIsImJhbGFuY2UiLCJwcmV0dHkiXX1dLGluZGVudDpbe2luZGVudDpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInZlcnRpY2FsLWFsaWduIjpbe2FsaWduOlsiYmFzZWxpbmUiLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iLCJ0ZXh0LXRvcCIsInRleHQtYm90dG9tIiwic3ViIiwic3VwZXIiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSx3aGl0ZXNwYWNlOlt7d2hpdGVzcGFjZTpbIm5vcm1hbCIsIm5vd3JhcCIsInByZSIsInByZS1saW5lIiwicHJlLXdyYXAiLCJicmVhay1zcGFjZXMiXX1dLGJyZWFrOlt7YnJlYWs6WyJub3JtYWwiLCJ3b3JkcyIsImFsbCIsImtlZXAiXX1dLHdyYXA6W3t3cmFwOlsiYnJlYWstd29yZCIsImFueXdoZXJlIiwibm9ybWFsIl19XSxoeXBoZW5zOlt7aHlwaGVuczpbIm5vbmUiLCJtYW51YWwiLCJhdXRvIl19XSxjb250ZW50Olt7Y29udGVudDpbIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmctYXR0YWNobWVudCI6W3tiZzpbImZpeGVkIiwibG9jYWwiLCJzY3JvbGwiXX1dLCJiZy1jbGlwIjpbeyJiZy1jbGlwIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwidGV4dCJdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50Il19XSwiYmctcG9zaXRpb24iOlt7Ymc6c2NhbGVCZ1Bvc2l0aW9uKCl9XSwiYmctcmVwZWF0Ijpbe2JnOlsibm8tcmVwZWF0Iix7cmVwZWF0OlsiIiwieCIsInkiLCJzcGFjZSIsInJvdW5kIl19XX1dLCJiZy1zaXplIjpbe2JnOnNjYWxlQmdTaXplKCl9XSwiYmctaW1hZ2UiOlt7Ymc6WyJub25lIix7bGluZWFyOlt7dG86WyJ0IiwidHIiLCJyIiwiYnIiLCJiIiwiYmwiLCJsIiwidGwiXX0saXNJbnRlZ2VyLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV0scmFkaWFsOlsiIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdLGNvbmljOltpc0ludGVnZXIsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX0saXNBcmJpdHJhcnlWYXJpYWJsZUltYWdlLGlzQXJiaXRyYXJ5SW1hZ2VdfV0sImJnLWNvbG9yIjpbe2JnOnNjYWxlQ29sb3IoKX1dLCJncmFkaWVudC1mcm9tLXBvcyI6W3tmcm9tOnNjYWxlR3JhZGllbnRTdG9wUG9zaXRpb24oKX1dLCJncmFkaWVudC12aWEtcG9zIjpbe3ZpYTpzY2FsZUdyYWRpZW50U3RvcFBvc2l0aW9uKCl9XSwiZ3JhZGllbnQtdG8tcG9zIjpbe3RvOnNjYWxlR3JhZGllbnRTdG9wUG9zaXRpb24oKX1dLCJncmFkaWVudC1mcm9tIjpbe2Zyb206c2NhbGVDb2xvcigpfV0sImdyYWRpZW50LXZpYSI6W3t2aWE6c2NhbGVDb2xvcigpfV0sImdyYWRpZW50LXRvIjpbe3RvOnNjYWxlQ29sb3IoKX1dLHJvdW5kZWQ6W3tyb3VuZGVkOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1zIjpbeyJyb3VuZGVkLXMiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1lIjpbeyJyb3VuZGVkLWUiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC10IjpbeyJyb3VuZGVkLXQiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1yIjpbeyJyb3VuZGVkLXIiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1iIjpbeyJyb3VuZGVkLWIiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1sIjpbeyJyb3VuZGVkLWwiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1zcyI6W3sicm91bmRlZC1zcyI6c2NhbGVSYWRpdXMoKX1dLCJyb3VuZGVkLXNlIjpbeyJyb3VuZGVkLXNlIjpzY2FsZVJhZGl1cygpfV0sInJvdW5kZWQtZWUiOlt7InJvdW5kZWQtZWUiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1lcyI6W3sicm91bmRlZC1lcyI6c2NhbGVSYWRpdXMoKX1dLCJyb3VuZGVkLXRsIjpbeyJyb3VuZGVkLXRsIjpzY2FsZVJhZGl1cygpfV0sInJvdW5kZWQtdHIiOlt7InJvdW5kZWQtdHIiOnNjYWxlUmFkaXVzKCl9XSwicm91bmRlZC1iciI6W3sicm91bmRlZC1iciI6c2NhbGVSYWRpdXMoKX1dLCJyb3VuZGVkLWJsIjpbeyJyb3VuZGVkLWJsIjpzY2FsZVJhZGl1cygpfV0sImJvcmRlci13Ijpbe2JvcmRlcjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXcteCI6W3siYm9yZGVyLXgiOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJib3JkZXItdy15IjpbeyJib3JkZXIteSI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImJvcmRlci13LXMiOlt7ImJvcmRlci1zIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXctZSI6W3siYm9yZGVyLWUiOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJib3JkZXItdy1icyI6W3siYm9yZGVyLWJzIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXctYmUiOlt7ImJvcmRlci1iZSI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImJvcmRlci13LXQiOlt7ImJvcmRlci10IjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiYm9yZGVyLXctciI6W3siYm9yZGVyLXIiOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJib3JkZXItdy1iIjpbeyJib3JkZXItYiI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImJvcmRlci13LWwiOlt7ImJvcmRlci1sIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiZGl2aWRlLXgiOlt7ImRpdmlkZS14IjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiZGl2aWRlLXgtcmV2ZXJzZSI6WyJkaXZpZGUteC1yZXZlcnNlIl0sImRpdmlkZS15IjpbeyJkaXZpZGUteSI6c2NhbGVCb3JkZXJXaWR0aCgpfV0sImRpdmlkZS15LXJldmVyc2UiOlsiZGl2aWRlLXktcmV2ZXJzZSJdLCJib3JkZXItc3R5bGUiOlt7Ym9yZGVyOlsic29saWQiLCJkYXNoZWQiLCJkb3R0ZWQiLCJkb3VibGUiLCJoaWRkZW4iLCJub25lIl19XSwiZGl2aWRlLXN0eWxlIjpbe2RpdmlkZTpbInNvbGlkIiwiZGFzaGVkIiwiZG90dGVkIiwiZG91YmxlIiwiaGlkZGVuIiwibm9uZSJdfV0sImJvcmRlci1jb2xvciI6W3tib3JkZXI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci14IjpbeyJib3JkZXIteCI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci15IjpbeyJib3JkZXIteSI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci1zIjpbeyJib3JkZXItcyI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci1lIjpbeyJib3JkZXItZSI6c2NhbGVDb2xvcigpfV0sImJvcmRlci1jb2xvci1icyI6W3siYm9yZGVyLWJzIjpzY2FsZUNvbG9yKCl9XSwiYm9yZGVyLWNvbG9yLWJlIjpbeyJib3JkZXItYmUiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItdCI6W3siYm9yZGVyLXQiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItciI6W3siYm9yZGVyLXIiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItYiI6W3siYm9yZGVyLWIiOnNjYWxlQ29sb3IoKX1dLCJib3JkZXItY29sb3ItbCI6W3siYm9yZGVyLWwiOnNjYWxlQ29sb3IoKX1dLCJkaXZpZGUtY29sb3IiOlt7ZGl2aWRlOnNjYWxlQ29sb3IoKX1dLCJvdXRsaW5lLXN0eWxlIjpbe291dGxpbmU6WyJzb2xpZCIsImRhc2hlZCIsImRvdHRlZCIsImRvdWJsZSIsIm5vbmUiLCJoaWRkZW4iXX1dLCJvdXRsaW5lLW9mZnNldCI6W3sib3V0bGluZS1vZmZzZXQiOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwib3V0bGluZS13Ijpbe291dGxpbmU6WyIiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZUxlbmd0aCxpc0FyYml0cmFyeUxlbmd0aF19XSwib3V0bGluZS1jb2xvciI6W3tvdXRsaW5lOnNjYWxlQ29sb3IoKX1dLHNoYWRvdzpbe3NoYWRvdzpbIiIsIm5vbmUiLFQsaXNBcmJpdHJhcnlWYXJpYWJsZVNoYWRvdyxpc0FyYml0cmFyeVNoYWRvd119XSwic2hhZG93LWNvbG9yIjpbe3NoYWRvdzpzY2FsZUNvbG9yKCl9XSwiaW5zZXQtc2hhZG93IjpbeyJpbnNldC1zaGFkb3ciOlsibm9uZSIsTixpc0FyYml0cmFyeVZhcmlhYmxlU2hhZG93LGlzQXJiaXRyYXJ5U2hhZG93XX1dLCJpbnNldC1zaGFkb3ctY29sb3IiOlt7Imluc2V0LXNoYWRvdyI6c2NhbGVDb2xvcigpfV0sInJpbmctdyI6W3tyaW5nOnNjYWxlQm9yZGVyV2lkdGgoKX1dLCJyaW5nLXctaW5zZXQiOlsicmluZy1pbnNldCJdLCJyaW5nLWNvbG9yIjpbe3Jpbmc6c2NhbGVDb2xvcigpfV0sInJpbmctb2Zmc2V0LXciOlt7InJpbmctb2Zmc2V0IjpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeUxlbmd0aF19XSwicmluZy1vZmZzZXQtY29sb3IiOlt7InJpbmctb2Zmc2V0IjpzY2FsZUNvbG9yKCl9XSwiaW5zZXQtcmluZy13IjpbeyJpbnNldC1yaW5nIjpzY2FsZUJvcmRlcldpZHRoKCl9XSwiaW5zZXQtcmluZy1jb2xvciI6W3siaW5zZXQtcmluZyI6c2NhbGVDb2xvcigpfV0sInRleHQtc2hhZG93IjpbeyJ0ZXh0LXNoYWRvdyI6WyJub25lIixPLGlzQXJiaXRyYXJ5VmFyaWFibGVTaGFkb3csaXNBcmJpdHJhcnlTaGFkb3ddfV0sInRleHQtc2hhZG93LWNvbG9yIjpbeyJ0ZXh0LXNoYWRvdyI6c2NhbGVDb2xvcigpfV0sb3BhY2l0eTpbe29wYWNpdHk6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJtaXgtYmxlbmQiOlt7Im1peC1ibGVuZCI6WyJub3JtYWwiLCJtdWx0aXBseSIsInNjcmVlbiIsIm92ZXJsYXkiLCJkYXJrZW4iLCJsaWdodGVuIiwiY29sb3ItZG9kZ2UiLCJjb2xvci1idXJuIiwiaGFyZC1saWdodCIsInNvZnQtbGlnaHQiLCJkaWZmZXJlbmNlIiwiZXhjbHVzaW9uIiwiaHVlIiwic2F0dXJhdGlvbiIsImNvbG9yIiwibHVtaW5vc2l0eSIsInBsdXMtZGFya2VyIiwicGx1cy1saWdodGVyIl19XSwiYmctYmxlbmQiOlt7ImJnLWJsZW5kIjpbIm5vcm1hbCIsIm11bHRpcGx5Iiwic2NyZWVuIiwib3ZlcmxheSIsImRhcmtlbiIsImxpZ2h0ZW4iLCJjb2xvci1kb2RnZSIsImNvbG9yLWJ1cm4iLCJoYXJkLWxpZ2h0Iiwic29mdC1saWdodCIsImRpZmZlcmVuY2UiLCJleGNsdXNpb24iLCJodWUiLCJzYXR1cmF0aW9uIiwiY29sb3IiLCJsdW1pbm9zaXR5Il19XSwibWFzay1jbGlwIjpbeyJtYXNrLWNsaXAiOlsiYm9yZGVyIiwicGFkZGluZyIsImNvbnRlbnQiLCJmaWxsIiwic3Ryb2tlIiwidmlldyJdfSwibWFzay1uby1jbGlwIl0sIm1hc2stY29tcG9zaXRlIjpbe21hc2s6WyJhZGQiLCJzdWJ0cmFjdCIsImludGVyc2VjdCIsImV4Y2x1ZGUiXX1dLCJtYXNrLWltYWdlLWxpbmVhci1wb3MiOlt7Im1hc2stbGluZWFyIjpbaXNOdW1iZXIkMV19XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1wb3MiOlt7Im1hc2stbGluZWFyLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpzY2FsZU1hc2tJbWFnZVBvc2l0aW9uKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtbGluZWFyLXRvLWNvbG9yIjpbeyJtYXNrLWxpbmVhci10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtdC1mcm9tLXBvcyI6W3sibWFzay10LWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXQtdG8tcG9zIjpbeyJtYXNrLXQtdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXQtZnJvbS1jb2xvciI6W3sibWFzay10LWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2Utci1mcm9tLXBvcyI6W3sibWFzay1yLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXItdG8tcG9zIjpbeyJtYXNrLXItdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXItZnJvbS1jb2xvciI6W3sibWFzay1yLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXItdG8tY29sb3IiOlt7Im1hc2stci10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtYi1mcm9tLXBvcyI6W3sibWFzay1iLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLWItdG8tY29sb3IiOlt7Im1hc2stYi10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtbC1mcm9tLXBvcyI6W3sibWFzay1sLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWwtdG8tcG9zIjpbeyJtYXNrLWwtdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLWwtZnJvbS1jb2xvciI6W3sibWFzay1sLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UteC1mcm9tLXBvcyI6W3sibWFzay14LWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXgtdG8tcG9zIjpbeyJtYXNrLXgtdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXgtZnJvbS1jb2xvciI6W3sibWFzay14LWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXgtdG8tY29sb3IiOlt7Im1hc2steC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UteS1mcm9tLXBvcyI6W3sibWFzay15LWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLXktdG8tY29sb3IiOlt7Im1hc2steS10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtcmFkaWFsIjpbeyJtYXNrLXJhZGlhbCI6W2lzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1wb3MiOlt7Im1hc2stcmFkaWFsLWZyb20iOnNjYWxlTWFza0ltYWdlUG9zaXRpb24oKX1dLCJtYXNrLWltYWdlLXJhZGlhbC10by1wb3MiOlt7Im1hc2stcmFkaWFsLXRvIjpzY2FsZU1hc2tJbWFnZVBvc2l0aW9uKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1jb2xvciI6W3sibWFzay1yYWRpYWwtZnJvbSI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXRvLWNvbG9yIjpbeyJtYXNrLXJhZGlhbC10byI6c2NhbGVDb2xvcigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6WyJjaXJjbGUiLCJlbGxpcHNlIl19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbInNpZGUiLCJjb3JuZXIiXSxmYXJ0aGVzdDpbInNpZGUiLCJjb3JuZXIiXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOlsiY2VudGVyIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwidG9wLWxlZnQiLCJsZWZ0LXRvcCIsInRvcC1yaWdodCIsInJpZ2h0LXRvcCIsImJvdHRvbS1yaWdodCIsInJpZ2h0LWJvdHRvbSIsImJvdHRvbS1sZWZ0IiwibGVmdC1ib3R0b20iXX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W2lzTnVtYmVyJDFdfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1wb3MiOlt7Im1hc2stY29uaWMtZnJvbSI6c2NhbGVNYXNrSW1hZ2VQb3NpdGlvbigpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tcG9zIjpbeyJtYXNrLWNvbmljLXRvIjpzY2FsZU1hc2tJbWFnZVBvc2l0aW9uKCl9XSwibWFzay1pbWFnZS1jb25pYy1mcm9tLWNvbG9yIjpbeyJtYXNrLWNvbmljLWZyb20iOnNjYWxlQ29sb3IoKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLWNvbG9yIjpbeyJtYXNrLWNvbmljLXRvIjpzY2FsZUNvbG9yKCl9XSwibWFzay1tb2RlIjpbe21hc2s6WyJhbHBoYSIsImx1bWluYW5jZSIsIm1hdGNoIl19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwiZmlsbCIsInN0cm9rZSIsInZpZXciXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6c2NhbGVCZ1Bvc2l0aW9uKCl9XSwibWFzay1yZXBlYXQiOlt7bWFzazpbIm5vLXJlcGVhdCIse3JlcGVhdDpbIiIsIngiLCJ5Iiwic3BhY2UiLCJyb3VuZCJdfV19XSwibWFzay1zaXplIjpbe21hc2s6c2NhbGVCZ1NpemUoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6WyJhbHBoYSIsImx1bWluYW5jZSJdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxmaWx0ZXI6W3tmaWx0ZXI6WyIiLCJub25lIixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sYmx1cjpbe2JsdXI6c2NhbGVCbHVyKCl9XSxicmlnaHRuZXNzOlt7YnJpZ2h0bmVzczpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sY29udHJhc3Q6W3tjb250cmFzdDpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImRyb3Atc2hhZG93IjpbeyJkcm9wLXNoYWRvdyI6WyIiLCJub25lIixSLGlzQXJiaXRyYXJ5VmFyaWFibGVTaGFkb3csaXNBcmJpdHJhcnlTaGFkb3ddfV0sImRyb3Atc2hhZG93LWNvbG9yIjpbeyJkcm9wLXNoYWRvdyI6c2NhbGVDb2xvcigpfV0sZ3JheXNjYWxlOlt7Z3JheXNjYWxlOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiaHVlLXJvdGF0ZSI6W3siaHVlLXJvdGF0ZSI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLGludmVydDpbe2ludmVydDpbIiIsaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sc2F0dXJhdGU6W3tzYXR1cmF0ZTpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sc2VwaWE6W3tzZXBpYTpbIiIsaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImJhY2tkcm9wLWZpbHRlciI6W3siYmFja2Ryb3AtZmlsdGVyIjpbIiIsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmFja2Ryb3AtYmx1ciI6W3siYmFja2Ryb3AtYmx1ciI6c2NhbGVCbHVyKCl9XSwiYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W3siYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1jb250cmFzdCI6W3siYmFja2Ryb3AtY29udHJhc3QiOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmFja2Ryb3AtZ3JheXNjYWxlIjpbeyJiYWNrZHJvcC1ncmF5c2NhbGUiOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W3siYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1pbnZlcnQiOlt7ImJhY2tkcm9wLWludmVydCI6WyIiLGlzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1vcGFjaXR5IjpbeyJiYWNrZHJvcC1vcGFjaXR5IjpbaXNOdW1iZXIkMSxpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sImJhY2tkcm9wLXNhdHVyYXRlIjpbeyJiYWNrZHJvcC1zYXR1cmF0ZSI6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJiYWNrZHJvcC1zZXBpYSI6W3siYmFja2Ryb3Atc2VwaWEiOlsiIixpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiYm9yZGVyLWNvbGxhcHNlIjpbe2JvcmRlcjpbImNvbGxhcHNlIiwic2VwYXJhdGUiXX1dLCJib3JkZXItc3BhY2luZyI6W3siYm9yZGVyLXNwYWNpbmciOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwiYm9yZGVyLXNwYWNpbmcteCI6W3siYm9yZGVyLXNwYWNpbmcteCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJib3JkZXItc3BhY2luZy15IjpbeyJib3JkZXItc3BhY2luZy15IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInRhYmxlLWxheW91dCI6W3t0YWJsZTpbImF1dG8iLCJmaXhlZCJdfV0sY2FwdGlvbjpbe2NhcHRpb246WyJ0b3AiLCJib3R0b20iXX1dLHRyYW5zaXRpb246W3t0cmFuc2l0aW9uOlsiIiwiYWxsIiwiY29sb3JzIiwib3BhY2l0eSIsInNoYWRvdyIsInRyYW5zZm9ybSIsIm5vbmUiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwidHJhbnNpdGlvbi1iZWhhdmlvciI6W3t0cmFuc2l0aW9uOlsibm9ybWFsIiwiZGlzY3JldGUiXX1dLGR1cmF0aW9uOlt7ZHVyYXRpb246W2lzTnVtYmVyJDEsImluaXRpYWwiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxlYXNlOlt7ZWFzZTpbImxpbmVhciIsImluaXRpYWwiLCQsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLGRlbGF5Olt7ZGVsYXk6W2lzTnVtYmVyJDEsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLGFuaW1hdGU6W3thbmltYXRlOlsibm9uZSIsRixpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWVdfV0sYmFja2ZhY2U6W3tiYWNrZmFjZTpbImhpZGRlbiIsInZpc2libGUiXX1dLHBlcnNwZWN0aXZlOlt7cGVyc3BlY3RpdmU6W0QsaXNBcmJpdHJhcnlWYXJpYWJsZSxpc0FyYml0cmFyeVZhbHVlXX1dLCJwZXJzcGVjdGl2ZS1vcmlnaW4iOlt7InBlcnNwZWN0aXZlLW9yaWdpbiI6c2NhbGVQb3NpdGlvbldpdGhBcmJpdHJhcnkoKX1dLHJvdGF0ZTpbe3JvdGF0ZTpzY2FsZVJvdGF0ZSgpfV0sInJvdGF0ZS14IjpbeyJyb3RhdGUteCI6c2NhbGVSb3RhdGUoKX1dLCJyb3RhdGUteSI6W3sicm90YXRlLXkiOnNjYWxlUm90YXRlKCl9XSwicm90YXRlLXoiOlt7InJvdGF0ZS16IjpzY2FsZVJvdGF0ZSgpfV0sc2NhbGU6W3tzY2FsZTpzY2FsZVNjYWxlKCl9XSwic2NhbGUteCI6W3sic2NhbGUteCI6c2NhbGVTY2FsZSgpfV0sInNjYWxlLXkiOlt7InNjYWxlLXkiOnNjYWxlU2NhbGUoKX1dLCJzY2FsZS16IjpbeyJzY2FsZS16IjpzY2FsZVNjYWxlKCl9XSwic2NhbGUtM2QiOlsic2NhbGUtM2QiXSxza2V3Olt7c2tldzpzY2FsZVNrZXcoKX1dLCJza2V3LXgiOlt7InNrZXcteCI6c2NhbGVTa2V3KCl9XSwic2tldy15IjpbeyJza2V3LXkiOnNjYWxlU2tldygpfV0sdHJhbnNmb3JtOlt7dHJhbnNmb3JtOltpc0FyYml0cmFyeVZhcmlhYmxlLGlzQXJiaXRyYXJ5VmFsdWUsIiIsIm5vbmUiLCJncHUiLCJjcHUiXX1dLCJ0cmFuc2Zvcm0tb3JpZ2luIjpbe29yaWdpbjpzY2FsZVBvc2l0aW9uV2l0aEFyYml0cmFyeSgpfV0sInRyYW5zZm9ybS1zdHlsZSI6W3t0cmFuc2Zvcm06WyIzZCIsImZsYXQiXX1dLHRyYW5zbGF0ZTpbe3RyYW5zbGF0ZTpzY2FsZVRyYW5zbGF0ZSgpfV0sInRyYW5zbGF0ZS14IjpbeyJ0cmFuc2xhdGUteCI6c2NhbGVUcmFuc2xhdGUoKX1dLCJ0cmFuc2xhdGUteSI6W3sidHJhbnNsYXRlLXkiOnNjYWxlVHJhbnNsYXRlKCl9XSwidHJhbnNsYXRlLXoiOlt7InRyYW5zbGF0ZS16IjpzY2FsZVRyYW5zbGF0ZSgpfV0sInRyYW5zbGF0ZS1ub25lIjpbInRyYW5zbGF0ZS1ub25lIl0sYWNjZW50Olt7YWNjZW50OnNjYWxlQ29sb3IoKX1dLGFwcGVhcmFuY2U6W3thcHBlYXJhbmNlOlsibm9uZSIsImF1dG8iXX1dLCJjYXJldC1jb2xvciI6W3tjYXJldDpzY2FsZUNvbG9yKCl9XSwiY29sb3Itc2NoZW1lIjpbe3NjaGVtZTpbIm5vcm1hbCIsImRhcmsiLCJsaWdodCIsImxpZ2h0LWRhcmsiLCJvbmx5LWRhcmsiLCJvbmx5LWxpZ2h0Il19XSxjdXJzb3I6W3tjdXJzb3I6WyJhdXRvIiwiZGVmYXVsdCIsInBvaW50ZXIiLCJ3YWl0IiwidGV4dCIsIm1vdmUiLCJoZWxwIiwibm90LWFsbG93ZWQiLCJub25lIiwiY29udGV4dC1tZW51IiwicHJvZ3Jlc3MiLCJjZWxsIiwiY3Jvc3NoYWlyIiwidmVydGljYWwtdGV4dCIsImFsaWFzIiwiY29weSIsIm5vLWRyb3AiLCJncmFiIiwiZ3JhYmJpbmciLCJhbGwtc2Nyb2xsIiwiY29sLXJlc2l6ZSIsInJvdy1yZXNpemUiLCJuLXJlc2l6ZSIsImUtcmVzaXplIiwicy1yZXNpemUiLCJ3LXJlc2l6ZSIsIm5lLXJlc2l6ZSIsIm53LXJlc2l6ZSIsInNlLXJlc2l6ZSIsInN3LXJlc2l6ZSIsImV3LXJlc2l6ZSIsIm5zLXJlc2l6ZSIsIm5lc3ctcmVzaXplIiwibndzZS1yZXNpemUiLCJ6b29tLWluIiwiem9vbS1vdXQiLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSwiZmllbGQtc2l6aW5nIjpbeyJmaWVsZC1zaXppbmciOlsiZml4ZWQiLCJjb250ZW50Il19XSwicG9pbnRlci1ldmVudHMiOlt7InBvaW50ZXItZXZlbnRzIjpbImF1dG8iLCJub25lIl19XSxyZXNpemU6W3tyZXNpemU6WyJub25lIiwiIiwieSIsIngiXX1dLCJzY3JvbGwtYmVoYXZpb3IiOlt7c2Nyb2xsOlsiYXV0byIsInNtb290aCJdfV0sInNjcm9sbC1tIjpbeyJzY3JvbGwtbSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbXgiOlt7InNjcm9sbC1teCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbXkiOlt7InNjcm9sbC1teSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbXMiOlt7InNjcm9sbC1tcyI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbWUiOlt7InNjcm9sbC1tZSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtbWJzIjpbeyJzY3JvbGwtbWJzIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1tYmUiOlt7InNjcm9sbC1tYmUiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW10IjpbeyJzY3JvbGwtbXQiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW1yIjpbeyJzY3JvbGwtbXIiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW1iIjpbeyJzY3JvbGwtbWIiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLW1sIjpbeyJzY3JvbGwtbWwiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLXAiOlt7InNjcm9sbC1wIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1weCI6W3sic2Nyb2xsLXB4IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1weSI6W3sic2Nyb2xsLXB5IjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1wcyI6W3sic2Nyb2xsLXBzIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1wZSI6W3sic2Nyb2xsLXBlIjpzY2FsZVVuYW1iaWd1b3VzU3BhY2luZygpfV0sInNjcm9sbC1wYnMiOlt7InNjcm9sbC1wYnMiOnNjYWxlVW5hbWJpZ3VvdXNTcGFjaW5nKCl9XSwic2Nyb2xsLXBiZSI6W3sic2Nyb2xsLXBiZSI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcHQiOlt7InNjcm9sbC1wdCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcHIiOlt7InNjcm9sbC1wciI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcGIiOlt7InNjcm9sbC1wYiI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzY3JvbGwtcGwiOlt7InNjcm9sbC1wbCI6c2NhbGVVbmFtYmlndW91c1NwYWNpbmcoKX1dLCJzbmFwLWFsaWduIjpbe3NuYXA6WyJzdGFydCIsImVuZCIsImNlbnRlciIsImFsaWduLW5vbmUiXX1dLCJzbmFwLXN0b3AiOlt7c25hcDpbIm5vcm1hbCIsImFsd2F5cyJdfV0sInNuYXAtdHlwZSI6W3tzbmFwOlsibm9uZSIsIngiLCJ5IiwiYm90aCJdfV0sInNuYXAtc3RyaWN0bmVzcyI6W3tzbmFwOlsibWFuZGF0b3J5IiwicHJveGltaXR5Il19XSx0b3VjaDpbe3RvdWNoOlsiYXV0byIsIm5vbmUiLCJtYW5pcHVsYXRpb24iXX1dLCJ0b3VjaC14IjpbeyJ0b3VjaC1wYW4iOlsieCIsImxlZnQiLCJyaWdodCJdfV0sInRvdWNoLXkiOlt7InRvdWNoLXBhbiI6WyJ5IiwidXAiLCJkb3duIl19XSwidG91Y2gtcHoiOlsidG91Y2gtcGluY2gtem9vbSJdLHNlbGVjdDpbe3NlbGVjdDpbIm5vbmUiLCJ0ZXh0IiwiYWxsIiwiYXV0byJdfV0sIndpbGwtY2hhbmdlIjpbeyJ3aWxsLWNoYW5nZSI6WyJhdXRvIiwic2Nyb2xsIiwiY29udGVudHMiLCJ0cmFuc2Zvcm0iLGlzQXJiaXRyYXJ5VmFyaWFibGUsaXNBcmJpdHJhcnlWYWx1ZV19XSxmaWxsOlt7ZmlsbDpbIm5vbmUiLC4uLnNjYWxlQ29sb3IoKV19XSwic3Ryb2tlLXciOlt7c3Ryb2tlOltpc051bWJlciQxLGlzQXJiaXRyYXJ5VmFyaWFibGVMZW5ndGgsaXNBcmJpdHJhcnlMZW5ndGgsaXNBcmJpdHJhcnlOdW1iZXJdfV0sc3Ryb2tlOlt7c3Ryb2tlOlsibm9uZSIsLi4uc2NhbGVDb2xvcigpXX1dLCJmb3JjZWQtY29sb3ItYWRqdXN0IjpbeyJmb3JjZWQtY29sb3ItYWRqdXN0IjpbImF1dG8iLCJub25lIl19XX0sY29uZmxpY3RpbmdDbGFzc0dyb3Vwczp7b3ZlcmZsb3c6WyJvdmVyZmxvdy14Iiwib3ZlcmZsb3cteSJdLG92ZXJzY3JvbGw6WyJvdmVyc2Nyb2xsLXgiLCJvdmVyc2Nyb2xsLXkiXSxpbnNldDpbImluc2V0LXgiLCJpbnNldC15IiwiaW5zZXQtYnMiLCJpbnNldC1iZSIsInN0YXJ0IiwiZW5kIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0sImluc2V0LXgiOlsicmlnaHQiLCJsZWZ0Il0sImluc2V0LXkiOlsidG9wIiwiYm90dG9tIl0sZmxleDpbImJhc2lzIiwiZ3JvdyIsInNocmluayJdLGdhcDpbImdhcC14IiwiZ2FwLXkiXSxwOlsicHgiLCJweSIsInBzIiwicGUiLCJwYnMiLCJwYmUiLCJwdCIsInByIiwicGIiLCJwbCJdLHB4OlsicHIiLCJwbCJdLHB5OlsicHQiLCJwYiJdLG06WyJteCIsIm15IiwibXMiLCJtZSIsIm1icyIsIm1iZSIsIm10IiwibXIiLCJtYiIsIm1sIl0sbXg6WyJtciIsIm1sIl0sbXk6WyJtdCIsIm1iIl0sc2l6ZTpbInciLCJoIl0sImZvbnQtc2l6ZSI6WyJsZWFkaW5nIl0sImZ2bi1ub3JtYWwiOlsiZnZuLW9yZGluYWwiLCJmdm4tc2xhc2hlZC16ZXJvIiwiZnZuLWZpZ3VyZSIsImZ2bi1zcGFjaW5nIiwiZnZuLWZyYWN0aW9uIl0sImZ2bi1vcmRpbmFsIjpbImZ2bi1ub3JtYWwiXSwiZnZuLXNsYXNoZWQtemVybyI6WyJmdm4tbm9ybWFsIl0sImZ2bi1maWd1cmUiOlsiZnZuLW5vcm1hbCJdLCJmdm4tc3BhY2luZyI6WyJmdm4tbm9ybWFsIl0sImZ2bi1mcmFjdGlvbiI6WyJmdm4tbm9ybWFsIl0sImxpbmUtY2xhbXAiOlsiZGlzcGxheSIsIm92ZXJmbG93Il0scm91bmRlZDpbInJvdW5kZWQtcyIsInJvdW5kZWQtZSIsInJvdW5kZWQtdCIsInJvdW5kZWQtciIsInJvdW5kZWQtYiIsInJvdW5kZWQtbCIsInJvdW5kZWQtc3MiLCJyb3VuZGVkLXNlIiwicm91bmRlZC1lZSIsInJvdW5kZWQtZXMiLCJyb3VuZGVkLXRsIiwicm91bmRlZC10ciIsInJvdW5kZWQtYnIiLCJyb3VuZGVkLWJsIl0sInJvdW5kZWQtcyI6WyJyb3VuZGVkLXNzIiwicm91bmRlZC1lcyJdLCJyb3VuZGVkLWUiOlsicm91bmRlZC1zZSIsInJvdW5kZWQtZWUiXSwicm91bmRlZC10IjpbInJvdW5kZWQtdGwiLCJyb3VuZGVkLXRyIl0sInJvdW5kZWQtciI6WyJyb3VuZGVkLXRyIiwicm91bmRlZC1iciJdLCJyb3VuZGVkLWIiOlsicm91bmRlZC1iciIsInJvdW5kZWQtYmwiXSwicm91bmRlZC1sIjpbInJvdW5kZWQtdGwiLCJyb3VuZGVkLWJsIl0sImJvcmRlci1zcGFjaW5nIjpbImJvcmRlci1zcGFjaW5nLXgiLCJib3JkZXItc3BhY2luZy15Il0sImJvcmRlci13IjpbImJvcmRlci13LXgiLCJib3JkZXItdy15IiwiYm9yZGVyLXctcyIsImJvcmRlci13LWUiLCJib3JkZXItdy1icyIsImJvcmRlci13LWJlIiwiYm9yZGVyLXctdCIsImJvcmRlci13LXIiLCJib3JkZXItdy1iIiwiYm9yZGVyLXctbCJdLCJib3JkZXItdy14IjpbImJvcmRlci13LXIiLCJib3JkZXItdy1sIl0sImJvcmRlci13LXkiOlsiYm9yZGVyLXctdCIsImJvcmRlci13LWIiXSwiYm9yZGVyLWNvbG9yIjpbImJvcmRlci1jb2xvci14IiwiYm9yZGVyLWNvbG9yLXkiLCJib3JkZXItY29sb3ItcyIsImJvcmRlci1jb2xvci1lIiwiYm9yZGVyLWNvbG9yLWJzIiwiYm9yZGVyLWNvbG9yLWJlIiwiYm9yZGVyLWNvbG9yLXQiLCJib3JkZXItY29sb3ItciIsImJvcmRlci1jb2xvci1iIiwiYm9yZGVyLWNvbG9yLWwiXSwiYm9yZGVyLWNvbG9yLXgiOlsiYm9yZGVyLWNvbG9yLXIiLCJib3JkZXItY29sb3ItbCJdLCJib3JkZXItY29sb3IteSI6WyJib3JkZXItY29sb3ItdCIsImJvcmRlci1jb2xvci1iIl0sdHJhbnNsYXRlOlsidHJhbnNsYXRlLXgiLCJ0cmFuc2xhdGUteSIsInRyYW5zbGF0ZS1ub25lIl0sInRyYW5zbGF0ZS1ub25lIjpbInRyYW5zbGF0ZSIsInRyYW5zbGF0ZS14IiwidHJhbnNsYXRlLXkiLCJ0cmFuc2xhdGUteiJdLCJzY3JvbGwtbSI6WyJzY3JvbGwtbXgiLCJzY3JvbGwtbXkiLCJzY3JvbGwtbXMiLCJzY3JvbGwtbWUiLCJzY3JvbGwtbWJzIiwic2Nyb2xsLW1iZSIsInNjcm9sbC1tdCIsInNjcm9sbC1tciIsInNjcm9sbC1tYiIsInNjcm9sbC1tbCJdLCJzY3JvbGwtbXgiOlsic2Nyb2xsLW1yIiwic2Nyb2xsLW1sIl0sInNjcm9sbC1teSI6WyJzY3JvbGwtbXQiLCJzY3JvbGwtbWIiXSwic2Nyb2xsLXAiOlsic2Nyb2xsLXB4Iiwic2Nyb2xsLXB5Iiwic2Nyb2xsLXBzIiwic2Nyb2xsLXBlIiwic2Nyb2xsLXBicyIsInNjcm9sbC1wYmUiLCJzY3JvbGwtcHQiLCJzY3JvbGwtcHIiLCJzY3JvbGwtcGIiLCJzY3JvbGwtcGwiXSwic2Nyb2xsLXB4IjpbInNjcm9sbC1wciIsInNjcm9sbC1wbCJdLCJzY3JvbGwtcHkiOlsic2Nyb2xsLXB0Iiwic2Nyb2xsLXBiIl0sdG91Y2g6WyJ0b3VjaC14IiwidG91Y2gteSIsInRvdWNoLXB6Il0sInRvdWNoLXgiOlsidG91Y2giXSwidG91Y2gteSI6WyJ0b3VjaCJdLCJ0b3VjaC1weiI6WyJ0b3VjaCJdfSxjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6eyJmb250LXNpemUiOlsibGVhZGluZyJdfSxvcmRlclNlbnNpdGl2ZU1vZGlmaWVyczpbIioiLCIqKiIsImFmdGVyIiwiYmFja2Ryb3AiLCJiZWZvcmUiLCJkZXRhaWxzLWNvbnRlbnQiLCJmaWxlIiwiZmlyc3QtbGV0dGVyIiwiZmlyc3QtbGluZSIsIm1hcmtlciIsInBsYWNlaG9sZGVyIiwic2VsZWN0aW9uIl19fSxvdmVycmlkZVByb3BlcnR5PShlLGMsZCk9Pnt2b2lkIDAhPT1kJiYoZVtjXT1kKX0sb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzPShlLGMpPT57aWYoYylmb3IoY29uc3QgZCBpbiBjKW92ZXJyaWRlUHJvcGVydHkoZSxkLGNbZF0pfSxtZXJnZUNvbmZpZ1Byb3BlcnRpZXM9KGUsYyk9PntpZihjKWZvcihjb25zdCBkIGluIGMpbWVyZ2VBcnJheVByb3BlcnRpZXMoZSxjLGQpfSxtZXJnZUFycmF5UHJvcGVydGllcz0oZSxjLGQpPT57Y29uc3QgaD1jW2RdO3ZvaWQgMCE9PWgmJihlW2RdPWVbZF0/ZVtkXS5jb25jYXQoaCk6aCl9LGV4dGVuZFRhaWx3aW5kTWVyZ2U9KGUsLi4uYyk9PiJmdW5jdGlvbiI9PXR5cGVvZiBlP2NyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZyxlLC4uLmMpOmNyZWF0ZVRhaWx3aW5kTWVyZ2UoKCk9PigoZSx7Y2FjaGVTaXplOmMscHJlZml4OmQsZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWU6aCxleHRlbmQ6dj17fSxvdmVycmlkZTpiPXt9fSk9PihvdmVycmlkZVByb3BlcnR5KGUsImNhY2hlU2l6ZSIsYyksb3ZlcnJpZGVQcm9wZXJ0eShlLCJwcmVmaXgiLGQpLG92ZXJyaWRlUHJvcGVydHkoZSwiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLGgpLG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhlLnRoZW1lLGIudGhlbWUpLG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhlLmNsYXNzR3JvdXBzLGIuY2xhc3NHcm91cHMpLG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhlLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsYi5jb25mbGljdGluZ0NsYXNzR3JvdXBzKSxvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoZS5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMsYi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMpLG92ZXJyaWRlUHJvcGVydHkoZSwib3JkZXJTZW5zaXRpdmVNb2RpZmllcnMiLGIub3JkZXJTZW5zaXRpdmVNb2RpZmllcnMpLG1lcmdlQ29uZmlnUHJvcGVydGllcyhlLnRoZW1lLHYudGhlbWUpLG1lcmdlQ29uZmlnUHJvcGVydGllcyhlLmNsYXNzR3JvdXBzLHYuY2xhc3NHcm91cHMpLG1lcmdlQ29uZmlnUHJvcGVydGllcyhlLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsdi5jb25mbGljdGluZ0NsYXNzR3JvdXBzKSxtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoZS5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMsdi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMpLG1lcmdlQXJyYXlQcm9wZXJ0aWVzKGUsdiwib3JkZXJTZW5zaXRpdmVNb2RpZmllcnMiKSxlKSkoZ2V0RGVmYXVsdENvbmZpZygpLGUpLC4uLmMpLFlyPWNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZyk7Z2xvYmFsVGhpcy4kZmV0Y2h8fChnbG9iYWxUaGlzLiRmZXRjaD1GLmNyZWF0ZSh7YmFzZVVSTDpWKCl9KSksImdsb2JhbCJpbiBnbG9iYWxUaGlzfHwoZ2xvYmFsVGhpcy5nbG9iYWw9Z2xvYmFsVGhpcyk7Y29uc3QgWnI9ITEsZWE9e2NvbXBvbmVudE5hbWU6Ik51eHRMaW5rIn0sdGE9ITEsbmE9e30sb2E9Im51eHQtYXBwIjtmdW5jdGlvbiBnZXROdXh0QXBwQ3R4KGU9b2Epe3JldHVybiBSKGUse2FzeW5jQ29udGV4dDohMX0pfWNvbnN0IHJhPSJfX251eHRfcGx1Z2luIjtmdW5jdGlvbiByZWdpc3RlclBsdWdpbkhvb2tzKGUsYyl7Yy5ob29rcyYmZS5ob29rcy5hZGRIb29rcyhjLmhvb2tzKX1mdW5jdGlvbiBkZWZpbmVOdXh0UGx1Z2luKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlO2NvbnN0IGM9ZS5fbmFtZXx8ZS5uYW1lO3JldHVybiBkZWxldGUgZS5uYW1lLE9iamVjdC5hc3NpZ24oZS5zZXR1cHx8KCgpPT57fSksZSx7W3JhXTohMCxfbmFtZTpjfSl9Y29uc3QgYWE9ZGVmaW5lTnV4dFBsdWdpbjtmdW5jdGlvbiBjYWxsV2l0aE51eHQoZSxjLGQpe2NvbnN0IGZuPSgpPT5jKCksaD1nZXROdXh0QXBwQ3R4KGUuX2lkKTtyZXR1cm4gZS52dWVBcHAucnVuV2l0aENvbnRleHQoKCk9PmguY2FsbEFzeW5jKGUsZm4pKX1mdW5jdGlvbiB1c2VOdXh0QXBwKGUpe2NvbnN0IGM9ZnVuY3Rpb24oZSl7bGV0IGM7cmV0dXJuIFluLmhhc0luamVjdGlvbkNvbnRleHQoKSYmKGM9WW4uZ2V0Q3VycmVudEluc3RhbmNlKCk/LmFwcENvbnRleHQuYXBwLiRudXh0KSxjfHw9Z2V0TnV4dEFwcEN0eChlKS50cnlVc2UoKSxjfHxudWxsfShlKTtpZighYyl0aHJvdyBuZXcgRXJyb3IoIltudXh0XSBpbnN0YW5jZSB1bmF2YWlsYWJsZSIpO3JldHVybiBjfWZ1bmN0aW9uIHVzZVJ1bnRpbWVDb25maWcoZSl7cmV0dXJuIHVzZU51eHRBcHAoKS4kY29uZmlnfWZ1bmN0aW9uIGRlZmluZUdldHRlcihlLGMsZCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYyx7Z2V0OigpPT5kfSl9Y29uc3QgaWE9U3ltYm9sKCJsYXlvdXQtbWV0YSIpLHNhPVN5bWJvbCgicm91dGUiKTtnbG9iYWxUaGlzLl9pbXBvcnRNZXRhXy51cmwucmVwbGFjZSgvXC9hcHBcLy4qJC8sIi8iKTtjb25zdCB1c2VSb3V0ZXI9KCk9PnVzZU51eHRBcHAoKT8uJHJvdXRlcix1c2VSb3V0ZT0oKT0+WW4uaGFzSW5qZWN0aW9uQ29udGV4dCgpP1luLmluamVjdChzYSx1c2VOdXh0QXBwKCkuX3JvdXRlKTp1c2VOdXh0QXBwKCkuX3JvdXRlO2Z1bmN0aW9uIGRlZmluZU51eHRSb3V0ZU1pZGRsZXdhcmUoZSl7cmV0dXJuIGV9Y29uc3QgbGE9LyIvZyxuYXZpZ2F0ZVRvPShoLHYpPT57aHx8PSIvIjtjb25zdCBiPSJzdHJpbmciPT10eXBlb2YgaD9oOiJwYXRoImluIGg/cmVzb2x2ZVJvdXRlT2JqZWN0KGgpOnVzZVJvdXRlcigpLnJlc29sdmUoaCkuaHJlZix5PWUoYix7YWNjZXB0UmVsYXRpdmU6ITB9KSxrPXY/LmV4dGVybmFsfHx5O2lmKGspe2lmKCF2Py5leHRlcm5hbCl0aHJvdyBuZXcgRXJyb3IoIk5hdmlnYXRpbmcgdG8gYW4gZXh0ZXJuYWwgVVJMIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFVzZSBgbmF2aWdhdGVUbyh1cmwsIHsgZXh0ZXJuYWw6IHRydWUgfSlgLiIpO2NvbnN0e3Byb3RvY29sOmV9PW5ldyBVUkwoYiwiaHR0cDovL2xvY2FsaG9zdCIpO2lmKGUmJmMoZSkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbmF2aWdhdGUgdG8gYSBVUkwgd2l0aCAnJHtlfScgcHJvdG9jb2wuYCl9Y29uc3QgXz0oKCk9Pnt0cnl7aWYodXNlTnV4dEFwcCgpLl9wcm9jZXNzaW5nTWlkZGxld2FyZSlyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hMX0pKCksVD11c2VSb3V0ZXIoKSxOPXVzZU51eHRBcHAoKTtpZihOLnNzckNvbnRleHQpe2NvbnN0IGU9InN0cmluZyI9PXR5cGVvZiBofHxrP2I6VC5yZXNvbHZlKGgpLmZ1bGxQYXRofHwiLyIsYz1rP2I6ZCh1c2VSdW50aW1lQ29uZmlnKCkuYXBwLmJhc2VVUkwsZSkscmVkaXJlY3Q9YXN5bmMgZnVuY3Rpb24oZSl7YXdhaXQgTi5jYWxsSG9vaygiYXBwOnJlZGlyZWN0ZWQiKTtjb25zdCBkPWMucmVwbGFjZShsYSwiJTIyIiksaD1mdW5jdGlvbihlLGM9ITEpe2NvbnN0IGQ9bmV3IFVSTChlLCJodHRwOi8vbG9jYWxob3N0Iik7aWYoIWMpcmV0dXJuIGQucGF0aG5hbWUrZC5zZWFyY2grZC5oYXNoO2lmKGUuc3RhcnRzV2l0aCgiLy8iKSlyZXR1cm4gZC50b1N0cmluZygpLnJlcGxhY2UoZC5wcm90b2NvbCwiIik7cmV0dXJuIGQudG9TdHJpbmcoKX0oYyx5KTtyZXR1cm4gTi5zc3JDb250ZXh0WyJ+cmVuZGVyUmVzcG9uc2UiXT17c3RhdHVzQ29kZTpFKHY/LnJlZGlyZWN0Q29kZXx8MzAyLDMwMiksYm9keTpgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPSR7ZH0iPjwvaGVhZD48L2h0bWw+YCxoZWFkZXJzOntsb2NhdGlvbjpofX0sZX07cmV0dXJuIWsmJl8/KFQuYWZ0ZXJFYWNoKGM9PmMuZnVsbFBhdGg9PT1lP3JlZGlyZWN0KCExKTp2b2lkIDApLGgpOnJlZGlyZWN0KCFfJiZ2b2lkIDApfWlmKGspcmV0dXJuIE4uX3Njb3BlLnN0b3AoKSx2Py5yZXBsYWNlPyh2b2lkIDApLnJlcGxhY2UoYik6KHZvaWQgMCkuaHJlZj1iLF8/ISFOLmlzSHlkcmF0aW5nJiZuZXcgUHJvbWlzZSgoKT0+e30pOlByb21pc2UucmVzb2x2ZSgpO2NvbnN0IE89InN0cmluZyI9PXR5cGVvZiBoP2VuY29kZVJvdXRlUGF0aChoKTpoO3JldHVybiB2Py5yZXBsYWNlP1QucmVwbGFjZShPKTpULnB1c2goTyl9O2Z1bmN0aW9uIHJlc29sdmVSb3V0ZU9iamVjdChlKXtyZXR1cm4geShlLnBhdGh8fCIiLGUucXVlcnl8fHt9KSsoZS5oYXNofHwiIil9ZnVuY3Rpb24gZW5jb2RlUm91dGVQYXRoKGUpe2NvbnN0IGM9ayhlKTtyZXR1cm4gXyhUKGMucGF0aG5hbWUpKStjLnNlYXJjaCtjLmhhc2h9Y29uc3QgY2E9Il9fbnV4dF9lcnJvciIsdXNlRXJyb3I9KCk9PlluLnRvUmVmKHVzZU51eHRBcHAoKS5wYXlsb2FkLCJlcnJvciIpLHNob3dFcnJvcj1lPT57Y29uc3QgYz1jcmVhdGVFcnJvcihlKTt0cnl7Y29uc3QgZT11c2VFcnJvcigpOzAsZS52YWx1ZXx8PWN9Y2F0Y2h7dGhyb3cgY31yZXR1cm4gY30saXNOdXh0RXJyb3I9ZT0+ISFlJiYib2JqZWN0Ij09dHlwZW9mIGUmJmNhIGluIGUsY3JlYXRlRXJyb3I9ZT0+eyJzdHJpbmciIT10eXBlb2YgZSYmZS5zdGF0dXNUZXh0JiYoZS5tZXNzYWdlPz89ZS5zdGF0dXNUZXh0KTtjb25zdCBjPVUoZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLGNhLHt2YWx1ZTohMCxjb25maWd1cmFibGU6ITEsd3JpdGFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYywic3RhdHVzIix7Z2V0OigpPT5jLnN0YXR1c0NvZGUsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGMsInN0YXR1c1RleHQiLHtnZXQ6KCk9PmMuc3RhdHVzTWVzc2FnZSxjb25maWd1cmFibGU6ITB9KSxjfTtsZXQgdWE7Y29uc3Qgc2V0QWN0aXZlUGluaWE9ZT0+dWE9ZSxkYT1TeW1ib2woKTtmdW5jdGlvbiBpc1BsYWluT2JqZWN0JDEoZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvSlNPTn12YXIgcGEsZmE7KGZhPXBhfHwocGE9e30pKS5kaXJlY3Q9ImRpcmVjdCIsZmEucGF0Y2hPYmplY3Q9InBhdGNoIG9iamVjdCIsZmEucGF0Y2hGdW5jdGlvbj0icGF0Y2ggZnVuY3Rpb24iO2NvbnN0IG5vb3AkMT0oKT0+e307ZnVuY3Rpb24gYWRkU3Vic2NyaXB0aW9uKGUsYyxkLGg9bm9vcCQxKXtlLmFkZChjKTtjb25zdCByZW1vdmVTdWJzY3JpcHRpb249KCk9PntlLmRlbGV0ZShjKSYmaCgpfTtyZXR1cm4hZCYmWW4uZ2V0Q3VycmVudFNjb3BlKCkmJlluLm9uU2NvcGVEaXNwb3NlKHJlbW92ZVN1YnNjcmlwdGlvbikscmVtb3ZlU3Vic2NyaXB0aW9ufWZ1bmN0aW9uIHRyaWdnZXJTdWJzY3JpcHRpb25zKGUsLi4uYyl7ZS5mb3JFYWNoKGU9PntlKC4uLmMpfSl9Y29uc3QgZmFsbGJhY2tSdW5XaXRoQ29udGV4dD1lPT5lKCksbWE9U3ltYm9sKCksaGE9U3ltYm9sKCk7ZnVuY3Rpb24gbWVyZ2VSZWFjdGl2ZU9iamVjdHMoZSxjKXtlIGluc3RhbmNlb2YgTWFwJiZjIGluc3RhbmNlb2YgTWFwP2MuZm9yRWFjaCgoYyxkKT0+ZS5zZXQoZCxjKSk6ZSBpbnN0YW5jZW9mIFNldCYmYyBpbnN0YW5jZW9mIFNldCYmYy5mb3JFYWNoKGUuYWRkLGUpO2Zvcihjb25zdCBkIGluIGMpe2lmKCFjLmhhc093blByb3BlcnR5KGQpKWNvbnRpbnVlO2NvbnN0IGg9Y1tkXSx2PWVbZF07aXNQbGFpbk9iamVjdCQxKHYpJiZpc1BsYWluT2JqZWN0JDEoaCkmJmUuaGFzT3duUHJvcGVydHkoZCkmJiFZbi5pc1JlZihoKSYmIVluLmlzUmVhY3RpdmUoaCk/ZVtkXT1tZXJnZVJlYWN0aXZlT2JqZWN0cyh2LGgpOmVbZF09aH1yZXR1cm4gZX1jb25zdCBnYT1TeW1ib2woKTtmdW5jdGlvbiBzaG91bGRIeWRyYXRlKGUpe3JldHVybiFpc1BsYWluT2JqZWN0JDEoZSl8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxnYSl9Y29uc3R7YXNzaWduOnZhfT1PYmplY3Q7ZnVuY3Rpb24gaXNDb21wdXRlZChlKXtyZXR1cm4hKCFZbi5pc1JlZihlKXx8IWUuZWZmZWN0KX1mdW5jdGlvbiBjcmVhdGVTZXR1cFN0b3JlKGUsYyxkPXt9LGgsdixiKXtsZXQgeTtjb25zdCBFPXZhKHthY3Rpb25zOnt9fSxkKSxrPXtkZWVwOiEwfTtsZXQgXyxULE4sTz1uZXcgU2V0LFI9bmV3IFNldDtjb25zdCBNPWguc3RhdGUudmFsdWVbZV07bGV0IEQ7ZnVuY3Rpb24gJHBhdGNoKGMpe2xldCBkO189VD0hMSwiZnVuY3Rpb24iPT10eXBlb2YgYz8oYyhoLnN0YXRlLnZhbHVlW2VdKSxkPXt0eXBlOnBhLnBhdGNoRnVuY3Rpb24sc3RvcmVJZDplLGV2ZW50czpOfSk6KG1lcmdlUmVhY3RpdmVPYmplY3RzKGguc3RhdGUudmFsdWVbZV0sYyksZD17dHlwZTpwYS5wYXRjaE9iamVjdCxwYXlsb2FkOmMsc3RvcmVJZDplLGV2ZW50czpOfSk7Y29uc3Qgdj1EPVN5bWJvbCgpO1luLm5leHRUaWNrKCkudGhlbigoKT0+e0Q9PT12JiYoXz0hMCl9KSxUPSEwLHRyaWdnZXJTdWJzY3JpcHRpb25zKE8sZCxoLnN0YXRlLnZhbHVlW2VdKX1ifHxNfHwoaC5zdGF0ZS52YWx1ZVtlXT17fSksWW4ucmVmKHt9KTtjb25zdCBMPWI/ZnVuY3Rpb24oKXtjb25zdHtzdGF0ZTplfT1kLGM9ZT9lKCk6e307dGhpcy4kcGF0Y2goZT0+e3ZhKGUsYyl9KX06bm9vcCQxO2NvbnN0IGFjdGlvbj0oYyxkPSIiKT0+e2lmKG1hIGluIGMpcmV0dXJuIGNbaGFdPWQsYztjb25zdCB3cmFwcGVkQWN0aW9uPWZ1bmN0aW9uKCl7c2V0QWN0aXZlUGluaWEoaCk7Y29uc3QgZD1BcnJheS5mcm9tKGFyZ3VtZW50cyksdj1uZXcgU2V0LGI9bmV3IFNldDtsZXQgeTt0cmlnZ2VyU3Vic2NyaXB0aW9ucyhSLHthcmdzOmQsbmFtZTp3cmFwcGVkQWN0aW9uW2hhXSxzdG9yZTpGLGFmdGVyOmZ1bmN0aW9uKGUpe3YuYWRkKGUpfSxvbkVycm9yOmZ1bmN0aW9uKGUpe2IuYWRkKGUpfX0pO3RyeXt5PWMuYXBwbHkodGhpcyYmdGhpcy4kaWQ9PT1lP3RoaXM6RixkKX1jYXRjaChlKXt0aHJvdyB0cmlnZ2VyU3Vic2NyaXB0aW9ucyhiLGUpLGV9cmV0dXJuIHkgaW5zdGFuY2VvZiBQcm9taXNlP3kudGhlbihlPT4odHJpZ2dlclN1YnNjcmlwdGlvbnModixlKSxlKSkuY2F0Y2goZT0+KHRyaWdnZXJTdWJzY3JpcHRpb25zKGIsZSksUHJvbWlzZS5yZWplY3QoZSkpKToodHJpZ2dlclN1YnNjcmlwdGlvbnModix5KSx5KX07cmV0dXJuIHdyYXBwZWRBY3Rpb25bbWFdPSEwLHdyYXBwZWRBY3Rpb25baGFdPWQsd3JhcHBlZEFjdGlvbn0sJD17X3A6aCwkaWQ6ZSwkb25BY3Rpb246YWRkU3Vic2NyaXB0aW9uLmJpbmQobnVsbCxSKSwkcGF0Y2g6JHBhdGNoLCRyZXNldDpMLCRzdWJzY3JpYmUoYyxkPXt9KXtjb25zdCB2PWFkZFN1YnNjcmlwdGlvbihPLGMsZC5kZXRhY2hlZCwoKT0+YigpKSxiPXkucnVuKCgpPT5Zbi53YXRjaCgoKT0+aC5zdGF0ZS52YWx1ZVtlXSxoPT57KCJzeW5jIj09PWQuZmx1c2g/VDpfKSYmYyh7c3RvcmVJZDplLHR5cGU6cGEuZGlyZWN0LGV2ZW50czpOfSxoKX0sdmEoe30sayxkKSkpO3JldHVybiB2fSwkZGlzcG9zZTpmdW5jdGlvbigpe3kuc3RvcCgpLE8uY2xlYXIoKSxSLmNsZWFyKCksaC5fcy5kZWxldGUoZSl9fSxGPVluLnJlYWN0aXZlKCQpO2guX3Muc2V0KGUsRik7Y29uc3QgVj0oaC5fYSYmaC5fYS5ydW5XaXRoQ29udGV4dHx8ZmFsbGJhY2tSdW5XaXRoQ29udGV4dCkoKCk9PmguX2UucnVuKCgpPT4oeT1Zbi5lZmZlY3RTY29wZSgpKS5ydW4oKCk9PmMoe2FjdGlvbjphY3Rpb259KSkpKTtmb3IoY29uc3QgYyBpbiBWKXtjb25zdCBkPVZbY107aWYoWW4uaXNSZWYoZCkmJiFpc0NvbXB1dGVkKGQpfHxZbi5pc1JlYWN0aXZlKGQpKWJ8fChNJiZzaG91bGRIeWRyYXRlKGQpJiYoWW4uaXNSZWYoZCk/ZC52YWx1ZT1NW2NdOm1lcmdlUmVhY3RpdmVPYmplY3RzKGQsTVtjXSkpLGguc3RhdGUudmFsdWVbZV1bY109ZCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZCl7Y29uc3QgZT1hY3Rpb24oZCxjKTtWW2NdPWUsRS5hY3Rpb25zW2NdPWR9fXJldHVybiB2YShGLFYpLHZhKFluLnRvUmF3KEYpLFYpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLCIkc3RhdGUiLHtnZXQ6KCk9Pmguc3RhdGUudmFsdWVbZV0sc2V0OmU9PnskcGF0Y2goYz0+e3ZhKGMsZSl9KX19KSxoLl9wLmZvckVhY2goZT0+e3ZhKEYseS5ydW4oKCk9PmUoe3N0b3JlOkYsYXBwOmguX2EscGluaWE6aCxvcHRpb25zOkV9KSkpfSksTSYmYiYmZC5oeWRyYXRlJiZkLmh5ZHJhdGUoRi4kc3RhdGUsTSksXz0hMCxUPSEwLEZ9ZnVuY3Rpb24gZGVmaW5lU3RvcmUoZSxjLGQpe2xldCBoO2NvbnN0IHY9ImZ1bmN0aW9uIj09dHlwZW9mIGM7ZnVuY3Rpb24gdXNlU3RvcmUoZCxiKXtjb25zdCB5PVluLmhhc0luamVjdGlvbkNvbnRleHQoKTsoZD1kfHwoeT9Zbi5pbmplY3QoZGEsbnVsbCk6bnVsbCkpJiZzZXRBY3RpdmVQaW5pYShkKSwoZD11YSkuX3MuaGFzKGUpfHwodj9jcmVhdGVTZXR1cFN0b3JlKGUsYyxoLGQpOmZ1bmN0aW9uKGUsYyxkKXtjb25zdHtzdGF0ZTpoLGFjdGlvbnM6dixnZXR0ZXJzOmJ9PWMseT1kLnN0YXRlLnZhbHVlW2VdO2xldCBFO0U9Y3JlYXRlU2V0dXBTdG9yZShlLGZ1bmN0aW9uKCl7eXx8KGQuc3RhdGUudmFsdWVbZV09aD9oKCk6e30pO2NvbnN0IGM9WW4udG9SZWZzKGQuc3RhdGUudmFsdWVbZV0pO3JldHVybiB2YShjLHYsT2JqZWN0LmtleXMoYnx8e30pLnJlZHVjZSgoYyxoKT0+KGNbaF09WW4ubWFya1JhdyhZbi5jb21wdXRlZCgoKT0+e3NldEFjdGl2ZVBpbmlhKGQpO2NvbnN0IGM9ZC5fcy5nZXQoZSk7cmV0dXJuIGJbaF0uY2FsbChjLGMpfSkpLGMpLHt9KSl9LGMsZCwwLCEwKX0oZSxoLGQpKTtyZXR1cm4gZC5fcy5nZXQoZSl9cmV0dXJuIGg9dj9kOmMsdXNlU3RvcmUuJGlkPWUsdXNlU3RvcmV9ZnVuY3Rpb24gdXNlSGVhZChlLGM9e30pe2NvbnN0IGQ9Yy5oZWFkfHxmdW5jdGlvbihlKXtjb25zdCBjPWV8fHVzZU51eHRBcHAoKTtyZXR1cm4gYy5zc3JDb250ZXh0Py5oZWFkfHxjLnJ1bldpdGhDb250ZXh0KCgpPT57aWYoWW4uaGFzSW5qZWN0aW9uQ29udGV4dCgpKXtjb25zdCBlPVluLmluamVjdCh2ZSk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJbbnV4dF0gW3VuaGVhZF0gTWlzc2luZyBVbmhlYWQgaW5zdGFuY2UuIik7cmV0dXJuIGV9fSl9KGMubnV4dCk7cmV0dXJuIGdlKGUse2hlYWQ6ZCwuLi5jfSl9Y29uc3QgYmE9KCgpPT57Y29uc3QgZT17cmVkaXJlY3Q6Ii9vcmdhbml6YXRpb24vbWVtYmVycyJ9LGM9e307cmV0dXJuKGQsaCk9PntsZXQgdj1bXTs0Nz09PWguY2hhckNvZGVBdChoLmxlbmd0aC0xKSYmKGg9aC5zbGljZSgwLC0xKXx8Ii8iKSwiL3VzZXJzIj09PWg/di51bnNoaWZ0KHtkYXRhOmV9KTooIi9hcGkvcGF5bWVudHMvc2VwYXkvd2ViaG9vayI9PT1ofHwiL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvc2VuZCI9PT1ofHwiL2FwaS9zdXBwb3J0L3RpY2tldHMiPT09aHx8Ii9hcGkvc3lzdGVtL3RpY2tldHMiPT09aCkmJnYudW5zaGlmdCh7ZGF0YTpjfSk7bGV0IGI9aC5zcGxpdCgiLyIpLHk9Yi5sZW5ndGg7cmV0dXJuIHk+MSYmKCJhcGkiPT09YlsxXT8oeT4yJiYoInN5c3RlbSI9PT1iWzJdfHwic3VwcG9ydCI9PT1iWzJdP3k+MyYmInRpY2tldHMiPT09YlszXSYmdi51bnNoaWZ0KHtkYXRhOmMscGFyYW1zOntfOmIuc2xpY2UoNCkuam9pbigiLyIpfX0pOigiYXV0aCI9PT1iWzJdfHwiY3JvbiI9PT1iWzJdKSYmdi51bnNoaWZ0KHtkYXRhOmMscGFyYW1zOntfOmIuc2xpY2UoMykuam9pbigiLyIpfX0pKSx2LnVuc2hpZnQoe2RhdGE6YyxwYXJhbXM6e186Yi5zbGljZSgyKS5qb2luKCIvIil9fSkpOiJfX251eHRfaGludHMiPT09YlsxXSYmdi51bnNoaWZ0KHtkYXRhOmMscGFyYW1zOntfOmIuc2xpY2UoMikuam9pbigiLyIpfX0pKSx2LnVuc2hpZnQoe2RhdGE6YyxwYXJhbXM6e186Yi5zbGljZSgxKS5qb2luKCIvIil9fSksdn19KSgpLF9yb3V0ZVJ1bGVzTWF0Y2hlcj1lPT5oKHt9LC4uLmJhKCIiLGUpLm1hcChlPT5lLmRhdGEpLnJldmVyc2UoKSkseWE9X3JvdXRlUnVsZXNNYXRjaGVyO2Z1bmN0aW9uIGRlZmluZVBheWxvYWRSZWR1Y2VyKGUsYyl7dXNlTnV4dEFwcCgpLnNzckNvbnRleHRbIn5wYXlsb2FkUmVkdWNlcnMiXVtlXT1jfWNvbnN0IHhhPWFhKCgpPT57ZGVmaW5lUGF5bG9hZFJlZHVjZXIoInNraXBIeWRyYXRlIixlPT4hc2hvdWxkSHlkcmF0ZShlKSYmMSl9KSxTYT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJudXh0OmhlYWQiLGVuZm9yY2U6InByZSIsc2V0dXAoZSl7Y29uc3QgYz1lLnNzckNvbnRleHQuaGVhZDtlLnZ1ZUFwcC51c2UoYyl9fSk7ZnVuY3Rpb24gdG9BcnJheSQyKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWNvbnN0IEVhPXtjYW46WyJ1c2VyOnJlYWQiXX0sd2E9e2NhbjpbInN5c3RlbTptYW5hZ2UiXSxtaWRkbGV3YXJlOigpPT5uYXZpZ2F0ZVRvKCIvc3lzdGVtL25vdGlmaWNhdGlvbnMiLHtyZXBsYWNlOiEwfSl9LGthPXtjYW46WyJzeXN0ZW06bWFuYWdlIl19LENhPXttaWRkbGV3YXJlOmRlZmluZU51eHRSb3V0ZU1pZGRsZXdhcmUoKCk9Pm5hdmlnYXRlVG8oIi9kYXNoYm9hcmQiLHtyZXBsYWNlOiEwfSkpfSxfYT1be25hbWU6ImF1dGgtbG9naW4iLHBhdGg6Ii9hdXRoL2xvZ2luIixtZXRhOnt1bmF1dGhlbnRpY2F0ZWRPbmx5OiEwLGxheW91dDoiYXV0aCJ9fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9sb2dpbi1ET1FRX2RZOS5tanMiKX0se25hbWU6InNhbmRib3gtaW1wZXJzb25hdGUiLHBhdGg6Ii9zYW5kYm94L2ltcGVyc29uYXRlIixtZXRhOntjYW46WyJ1c2VyOmltcGVyc29uYXRlIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9pbXBlcnNvbmF0ZS1Dc1k5d3JnZi5tanMiKX0se25hbWU6ImpvaW4tdG9rZW4iLHBhdGg6Ii9qb2luLzp0b2tlbigpIixtZXRhOntwdWJsaWM6ITB9fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9fdG9rZW5fLUJNUnZMOXhDLm1qcyIpfSx7bmFtZToicHJvamVjdHMtaWQiLHBhdGg6Ii9wcm9qZWN0cy86aWQoKSIsbWV0YTp7Y2FuOlsicHJvamVjdDpyZWFkIiwicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9faWRfLUR6ZFZ0WWY1Lm1qcyIpfSx7bmFtZToiZGFzaGJvYXJkIixwYXRoOiIvZGFzaGJvYXJkIixjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9kYXNoYm9hcmQta1RWMkFQLXcubWpzIil9LHtuYW1lOiJmb3JiaWRkZW4iLHBhdGg6Ii9mb3JiaWRkZW4iLG1ldGE6e3B1YmxpYzohMH18fHt9LGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL2ZvcmJpZGRlbi1lSHhzR0xLZi5tanMiKX0se25hbWU6RWE/Lm5hbWUscGF0aDoiL29yZ2FuaXphdGlvbiIsbWV0YTpFYXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vb3JnYW5pemF0aW9uLUJacTh6MGRyLm1qcyIpLGNoaWxkcmVuOlt7bmFtZToib3JnYW5pemF0aW9uLWludm9pY2UiLHBhdGg6Imludm9pY2UiLG1ldGE6e2NhbjpbImJpbGxpbmc6cmVhZCIsImJpbGxpbmc6bWFuYWdlIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9pbnZvaWNlLUQ2cEJMeEtMLm1qcyIpfSx7bmFtZToib3JnYW5pemF0aW9uLW1lbWJlcnMiLHBhdGg6Im1lbWJlcnMiLG1ldGE6e2NhbjpbInVzZXI6cmVhZCJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vbWVtYmVycy1EZ3JIOV9IUS5tanMiKX0se25hbWU6Im9yZ2FuaXphdGlvbi1yb2xlcyIscGF0aDoicm9sZXMiLG1ldGE6e2NhbjpbInVzZXI6cmVhZCJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vcm9sZXMtREpNRC1NX3QubWpzIil9LHtuYW1lOiJvcmdhbml6YXRpb24iLHBhdGg6IiIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vaW5kZXgtQzlnME5WazMubWpzIil9XX0se25hbWU6InByb2R1Y3RzIixwYXRoOiIvcHJvZHVjdHMiLG1ldGE6e2NhbjpbInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0Om1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vcHJvZHVjdHMtRGotRE1WYzEubWpzIil9LHtuYW1lOiJwcm9qZWN0cyIscGF0aDoiL3Byb2plY3RzIixtZXRhOntjYW46WyJwcm9qZWN0OnJlYWQiLCJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXX18fHt9LGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL2luZGV4LUMyUU44Z3pFLm1qcyIpfSx7bmFtZToicmVmZXJyYWwiLHBhdGg6Ii9yZWZlcnJhbCIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vcmVmZXJyYWwtQnpQbjQwNFEubWpzIil9LHtuYW1lOnZvaWQgMCxwYXRoOiIvc2V0dGluZ3MiLGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL3NldHRpbmdzLUQ2bkhIS2NULm1qcyIpLGNoaWxkcmVuOlt7bmFtZToic2V0dGluZ3MtYmlsbGluZyIscGF0aDoiYmlsbGluZyIsbWV0YTp7Y2FuOlsiYmlsbGluZzpyZWFkIl19fHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9iaWxsaW5nLUJ3cThOWU1fLm1qcyIpfSx7bmFtZToic2V0dGluZ3Mtbm90aWZpY2F0aW9ucyIscGF0aDoibm90aWZpY2F0aW9ucyIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vbm90aWZpY2F0aW9ucy1Ca2ZwNVJhQS5tanMiKX0se25hbWU6InNldHRpbmdzLXNlY3VyaXR5IixwYXRoOiJzZWN1cml0eSIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vc2VjdXJpdHktVWZ6aG15MFIubWpzIil9LHtuYW1lOiJzZXR0aW5ncy1zZWxmLWhvc3QiLHBhdGg6InNlbGYtaG9zdCIsbWV0YTp7Y2FuOlsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vc2VsZi1ob3N0LUJ1ZjRybHFkLm1qcyIpfSx7bmFtZToic2V0dGluZ3MiLHBhdGg6IiIsY29tcG9uZW50OigpPT5pbXBvcnQoIi4vaW5kZXgtQnZVUGw4aEQubWpzIil9XX0se25hbWU6InN1cHBvcnQiLHBhdGg6Ii9zdXBwb3J0Iixjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9zdXBwb3J0LUREc3luZ0U1Lm1qcyIpfSx7bmFtZTprYT8ubmFtZSxwYXRoOiIvc3lzdGVtIixtZXRhOmthfHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9zeXN0ZW0tQk44ZTRGb0UubWpzIiksY2hpbGRyZW46W3tuYW1lOiJzeXN0ZW0tbm90aWZpY2F0aW9ucyIscGF0aDoibm90aWZpY2F0aW9ucyIsbWV0YTp7Y2FuOlsic3lzdGVtOm1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vbm90aWZpY2F0aW9ucy1CMG1YVWh2SS5tanMiKX0se25hbWU6InN5c3RlbS10aWNrZXRzIixwYXRoOiJ0aWNrZXRzIixtZXRhOntjYW46WyJzdXBwb3J0Om1hbmFnZSJdfXx8e30sY29tcG9uZW50OigpPT5pbXBvcnQoIi4vdGlja2V0cy1CMXJPcnZMaS5tanMiKX0se25hbWU6InN5c3RlbSIscGF0aDoiIixtZXRhOndhfHx7fSxjb21wb25lbnQ6KCk9PmltcG9ydCgiLi9pbmRleC1ldHFzS1otbS5tanMiKX1dfSx7bmFtZToiaW5kZXgiLHBhdGg6Ii8iLG1ldGE6Q2F8fHt9LGNvbXBvbmVudDooKT0+aW1wb3J0KCIuL2luZGV4LUN5UW1INHN0Lm1qcyIpfSx7bmFtZTp2b2lkIDAscGF0aDoiL3VzZXJzIixjb21wb25lbnQ6e319XSxUYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGlzUGxhaW5PYmplY3Q9ZT0+e3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09KGM9ZSxUYS5jYWxsKGMpKTt2YXIgY30sTmE9Lyg6XHcrKVwoW14pXStcKS9nLEFhPS8oOlx3KylbPysqXS9nLE9hPS86XHcrL2c7ZnVuY3Rpb24gZ2VuZXJhdGVSb3V0ZUtleShlKXtjb25zdCBjPWU/Lm1ldGEua2V5Pz9lLnBhdGgucmVwbGFjZShOYSwiJDEiKS5yZXBsYWNlKEFhLCIkMSIpLnJlcGxhY2UoT2EsYz0+ZS5wYXJhbXNbYy5zbGljZSgxKV0/LnRvU3RyaW5nKCl8fCIiKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYz9jKGUpOmN9ZnVuY3Rpb24gdG9BcnJheSQxKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWZ1bmN0aW9uIF9nZXRIYXNoRWxlbWVudFNjcm9sbE1hcmdpblRvcChlKXt0cnl7Y29uc3QgYz0odm9pZCAwKS5xdWVyeVNlbGVjdG9yKGUpO2lmKGMpcmV0dXJuKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoYykuc2Nyb2xsTWFyZ2luVG9wKXx8MCkrKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoKHZvaWQgMCkuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxQYWRkaW5nVG9wKXx8MCl9Y2F0Y2h7fXJldHVybiAwfWZ1bmN0aW9uIF9jYWxjdWxhdGVQb3NpdGlvbihlLGMsZCxoKXtpZihkKXJldHVybiBkO2NvbnN0IHY9ZnVuY3Rpb24oZSxjKXtyZXR1cm4gZSE9PWMmJmMhPT1fbyYmKGdlbmVyYXRlUm91dGVLZXkoZSkhPT1nZW5lcmF0ZVJvdXRlS2V5KGMpfHwhZS5tYXRjaGVkLmV2ZXJ5KChlLGQpPT5lLmNvbXBvbmVudHMmJmUuY29tcG9uZW50cy5kZWZhdWx0PT09Yy5tYXRjaGVkW2RdPy5jb21wb25lbnRzPy5kZWZhdWx0KSl9KGUsYyk7cmV0dXJuIGUuaGFzaD97ZWw6ZS5oYXNoLHRvcDpfZ2V0SGFzaEVsZW1lbnRTY3JvbGxNYXJnaW5Ub3AoZS5oYXNoKSxiZWhhdmlvcjp2P2g6Imluc3RhbnQifTp7bGVmdDowLHRvcDowfX1jb25zdCBJYT17aGFzaE1vZGU6ITEsc2Nyb2xsQmVoYXZpb3JUeXBlOiJhdXRvIiwuLi57c2Nyb2xsQmVoYXZpb3IoZSxjLGQpe2NvbnN0IGg9dXNlTnV4dEFwcCgpLHY9dXNlUm91dGVyKCkub3B0aW9ucz8uc2Nyb2xsQmVoYXZpb3JUeXBlPz8iYXV0byI7aWYoZS5wYXRoLnJlcGxhY2UoL1wvJC8sIiIpPT09Yy5wYXRoLnJlcGxhY2UoL1wvJC8sIiIpKXJldHVybiBjLmhhc2gmJiFlLmhhc2g/e2xlZnQ6MCx0b3A6MH06ISFlLmhhc2gmJntlbDplLmhhc2gsdG9wOl9nZXRIYXNoRWxlbWVudFNjcm9sbE1hcmdpblRvcChlLmhhc2gpLGJlaGF2aW9yOnZ9O3JldHVybiExIT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlLm1ldGEuc2Nyb2xsVG9Ub3A/ZS5tZXRhLnNjcm9sbFRvVG9wKGUsYyk6ZS5tZXRhLnNjcm9sbFRvVG9wKSYmKGM9PT1fbz9fY2FsY3VsYXRlUG9zaXRpb24oZSxjLGQsdik6bmV3IFByb21pc2UoYj0+e2NvbnN0IGRvU2Nyb2xsPSgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5iKF9jYWxjdWxhdGVQb3NpdGlvbihlLGMsZCx2KSkpfTtoLmhvb2tzLmhvb2tPbmNlKCJwYWdlOmxvYWRpbmc6ZW5kIiwoKT0+e2NvbnN0IGU9aFsifnRyYW5zaXRpb25Qcm9taXNlIl07ZT9lLnRoZW4oZG9TY3JvbGwpOmRvU2Nyb2xsKCl9KX0pKX19fSxSYT1kZWZpbmVOdXh0Um91dGVNaWRkbGV3YXJlKGFzeW5jKGUsYyk9PntsZXQgZCxoO2lmKCFlLm1ldGE/LnZhbGlkYXRlKXJldHVybjtjb25zdCB2PShbZCxoXT1XKCgpPT5Qcm9taXNlLnJlc29sdmUoZS5tZXRhLnZhbGlkYXRlKGUpKSksZD1hd2FpdCBkLGgoKSxkKTtpZighMD09PXYpcmV0dXJuO3JldHVybiBjcmVhdGVFcnJvcih7ZmF0YWw6ITEsc3RhdHVzOnYmJih2LnN0YXR1c3x8di5zdGF0dXNDb2RlKXx8NDA0LHN0YXR1c1RleHQ6diYmKHYuc3RhdHVzVGV4dHx8di5zdGF0dXNNZXNzYWdlKXx8YFBhZ2UgTm90IEZvdW5kOiAke2UuZnVsbFBhdGh9YCxkYXRhOntwYXRoOmUuZnVsbFBhdGh9fSl9KTtmdW5jdGlvbiBjcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGU9e30pe2NvbnN0e2R1cmF0aW9uOmM9MmUzLHRocm90dGxlOmQ9MjAwLGhpZGVEZWxheTpoPTUwMCxyZXNldERlbGF5OnY9NDAwfT1lO2UuZXN0aW1hdGVkUHJvZ3Jlc3M7Y29uc3QgYj11c2VOdXh0QXBwKCkseT1Zbi5zaGFsbG93UmVmKDApLEU9WW4uc2hhbGxvd1JlZighMSksaz1Zbi5zaGFsbG93UmVmKCExKTtmdW5jdGlvbiBzZXQoZT0wLGM9e30pe2lmKCFiLmlzSHlkcmF0aW5nKXtpZihlPj0xMDApcmV0dXJuIGZpbmlzaCh7Zm9yY2U6Yy5mb3JjZX0pO3kudmFsdWU9ZTwwPzA6ZSxjLmZvcmNlLEUudmFsdWU9ITB9fWZ1bmN0aW9uIGZpbmlzaChlPXt9KXt5LnZhbHVlPTEwMCxlLmVycm9yJiYoay52YWx1ZT0hMCksZS5mb3JjZSYmKHkudmFsdWU9MCxFLnZhbHVlPSExKX1yZXR1cm57X2NsZWFudXA6KCk9Pnt9LHByb2dyZXNzOlluLmNvbXB1dGVkKCgpPT55LnZhbHVlKSxpc0xvYWRpbmc6WW4uY29tcHV0ZWQoKCk9PkUudmFsdWUpLGVycm9yOlluLmNvbXB1dGVkKCgpPT5rLnZhbHVlKSxzdGFydDooZT17fSk9PntrLnZhbHVlPSExLHNldCgwLGUpfSxzZXQ6c2V0LGZpbmlzaDpmaW5pc2gsY2xlYXI6ZnVuY3Rpb24oKXt9fX1mdW5jdGlvbiB1c2VSZXF1ZXN0RXZlbnQoZSl7cmV0dXJuIGV8fD11c2VOdXh0QXBwKCksZS5zc3JDb250ZXh0Py5ldmVudH1mdW5jdGlvbiB1c2VSZXF1ZXN0SGVhZGVycyhlKXtjb25zdCBjPXVzZVJlcXVlc3RFdmVudCgpLGQ9Yz9iKGMpOnt9O2lmKCFlfHwhYylyZXR1cm4gZDtjb25zdCBoPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGMgb2YgZSl7Y29uc3QgZT1jLnRvTG93ZXJDYXNlKCksdj1kW2VdO3YmJihoW2VdPXYpfXJldHVybiBofWNvbnN0IFBhPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiU2VydmVyUGxhY2Vob2xkZXIiLHJlbmRlcjooKT0+WW4uY3JlYXRlRWxlbWVudEJsb2NrKCJkaXYiKX0pLE1hPVN5bWJvbC5mb3IoIm51eHQ6Y2xpZW50LW9ubHkiKSxEYT1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IkNsaWVudE9ubHkiLGluaGVyaXRBdHRyczohMSxwcm9wczpbImZhbGxiYWNrIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclRhZyIsImZhbGxiYWNrVGFnIl0sc2V0dXAoZSx7c2xvdHM6YyxhdHRyczpkfSl7Y29uc3QgaD1Zbi5zaGFsbG93UmVmKCExKSx2PVluLmdldEN1cnJlbnRJbnN0YW5jZSgpO3JldHVybiB2JiYodi5fbnV4dENsaWVudE9ubHk9ITApLFluLnByb3ZpZGUoTWEsITApLCgpPT57aWYoaC52YWx1ZSl7Y29uc3QgZT1jLmRlZmF1bHQ/LigpO3JldHVybiBlJiYxPT09ZS5sZW5ndGg/W1luLmNsb25lVk5vZGUoZVswXSxkKV06ZX1jb25zdCB2PWMuZmFsbGJhY2t8fGMucGxhY2Vob2xkZXI7aWYodilyZXR1cm4gWW4uaCh2KTtjb25zdCBiPWUuZmFsbGJhY2t8fGUucGxhY2Vob2xkZXJ8fCIiLHk9ZS5mYWxsYmFja1RhZ3x8ZS5wbGFjZWhvbGRlclRhZ3x8InNwYW4iO3JldHVybiBZbi5jcmVhdGVFbGVtZW50QmxvY2soeSxkLGIpfX19KTtmdW5jdGlvbiBkZWZpbmVLZXllZEZ1bmN0aW9uRmFjdG9yeShlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBbbnV4dF0gXGAke2UubmFtZX1cYCBpcyBhIGNvbXBpbGVyIG1hY3JvIGFuZCBjYW5ub3QgYmUgY2FsbGVkIGF0IHJ1bnRpbWUuYCl9LCJfX251eHRfZmFjdG9yeSIse2VudW1lcmFibGU6ITEsZ2V0OigpPT5lLmZhY3Rvcnl9KX1jb25zdCBCYT1kZWZpbmVLZXllZEZ1bmN0aW9uRmFjdG9yeSh7bmFtZToiY3JlYXRlVXNlQXN5bmNEYXRhIixmYWN0b3J5OihlPXt9KT0+ZnVuY3Rpb24oLi4uYyl7Y29uc3QgZD0ic3RyaW5nIj09dHlwZW9mIGNbYy5sZW5ndGgtMV0/Yy5wb3AoKTp2b2lkIDA7KGZ1bmN0aW9uKGUsYyl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiExO2lmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjKXJldHVybiExO3JldHVybiEwfSkoY1swXSxjWzFdKSYmYy51bnNoaWZ0KGQpO2xldFtoLHYsYj17fV09Yztjb25zdCB5PVluLmNvbXB1dGVkKCgpPT5Zbi50b1ZhbHVlKGgpKTtpZigic3RyaW5nIiE9dHlwZW9mIHkudmFsdWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiW251eHRdIFt1c2VBc3luY0RhdGFdIGtleSBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIltudXh0XSBbdXNlQXN5bmNEYXRhXSBoYW5kbGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtjb25zdCBFPSJmdW5jdGlvbiI9PXR5cGVvZiBlLGs9dXNlTnV4dEFwcCgpLF89RT9lKGIpOmU7aWYoIUUpZm9yKGNvbnN0IGUgaW4gXyl2b2lkIDAhPT1fW2VdJiZ2b2lkIDA9PT1iW2VdJiYoYltlXT1fW2VdKTtpZihiLnNlcnZlcj8/PSEwLGIuZGVmYXVsdD8/PWdldERlZmF1bHQsYi5nZXRDYWNoZWREYXRhPz89Z2V0RGVmYXVsdENhY2hlZERhdGEsYi5sYXp5Pz89ITEsYi5pbW1lZGlhdGU/Pz0hMCxiLmRlZXA/Pz10YSxiLmRlZHVwZT8/PSJjYW5jZWwiLEUpZm9yKGNvbnN0IGUgaW4gXyl2b2lkIDAhPT1fW2VdJiYoYltlXT1fW2VdKTtmdW5jdGlvbiBjcmVhdGVJbml0aWFsRmV0Y2goKXtjb25zdCBlPXtjYXVzZToiaW5pdGlhbCIsZGVkdXBlOmIuZGVkdXBlfTtyZXR1cm4gay5fYXN5bmNEYXRhW3kudmFsdWVdPy5faW5pdHx8KGUuY2FjaGVkRGF0YT1iLmdldENhY2hlZERhdGEoeS52YWx1ZSxrLHtjYXVzZToiaW5pdGlhbCJ9KSxrLl9hc3luY0RhdGFbeS52YWx1ZV09ZnVuY3Rpb24oZSxjLGQsaCx2KXtlLnBheWxvYWQuX2Vycm9yc1tjXT8/PXZvaWQgMDtjb25zdCBiPWguZ2V0Q2FjaGVkRGF0YSE9PWdldERlZmF1bHRDYWNoZWREYXRhLHk9ZCxFPWguZGVlcD9Zbi5yZWY6WW4uc2hhbGxvd1JlZixrPXZvaWQgMCE9PXYsXz1lLmhvb2soImFwcDpkYXRhOnJlZnJlc2giLGFzeW5jIGU9PntlJiYhZS5pbmNsdWRlcyhjKXx8YXdhaXQgVC5leGVjdXRlKHtjYXVzZToicmVmcmVzaDpob29rIn0pfSksVD17ZGF0YTpFKGs/djpoLmRlZmF1bHQoKSkscGVuZGluZzpZbi5jb21wdXRlZCgoKT0+InBlbmRpbmciPT09VC5zdGF0dXMudmFsdWUpLGVycm9yOlluLnRvUmVmKGUucGF5bG9hZC5fZXJyb3JzLGMpLHN0YXR1czpZbi5zaGFsbG93UmVmKCJpZGxlIiksZXhlY3V0ZTooLi4uZCk9Pntjb25zdFt2LGJdPWQsRT12JiZ2b2lkIDA9PT1iJiYib2JqZWN0Ij09dHlwZW9mIHY/djp7fTtpZihlLl9hc3luY0RhdGFQcm9taXNlc1tjXSYmImRlZmVyIj09PShFLmRlZHVwZT8/aC5kZWR1cGUpKXJldHVybiBlLl9hc3luY0RhdGFQcm9taXNlc1tjXTt7Y29uc3QgZD0iY2FjaGVkRGF0YSJpbiBFP0UuY2FjaGVkRGF0YTpoLmdldENhY2hlZERhdGEoYyxlLHtjYXVzZTpFLmNhdXNlPz8icmVmcmVzaDptYW51YWwifSk7aWYodm9pZCAwIT09ZClyZXR1cm4gZS5wYXlsb2FkLmRhdGFbY109VC5kYXRhLnZhbHVlPWQsVC5lcnJvci52YWx1ZT12b2lkIDAsVC5zdGF0dXMudmFsdWU9InN1Y2Nlc3MiLFByb21pc2UucmVzb2x2ZShkKX1ULl9hYm9ydENvbnRyb2xsZXImJlQuX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRE9NRXhjZXB0aW9uKCJBc3luY0RhdGEgcmVxdWVzdCBjYW5jZWxsZWQgYnkgZGVkdXBsaWNhdGlvbiIsIkFib3J0RXJyb3IiKSksVC5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIsVC5zdGF0dXMudmFsdWU9InBlbmRpbmciO2NvbnN0IGs9bmV3IEFib3J0Q29udHJvbGxlcixfPW5ldyBQcm9taXNlKChjLGQpPT57dHJ5e2NvbnN0IHY9RS50aW1lb3V0Pz9oLnRpbWVvdXQsYj1mdW5jdGlvbihlLGMsZCl7Y29uc3QgaD1lLmZpbHRlcihlPT4hIWUpO2lmKCJudW1iZXIiPT10eXBlb2YgZCYmZD49MCl7Y29uc3QgZT1BYm9ydFNpZ25hbC50aW1lb3V0Py4oZCk7ZSYmaC5wdXNoKGUpfWlmKEFib3J0U2lnbmFsLmFueSlyZXR1cm4gQWJvcnRTaWduYWwuYW55KGgpO2NvbnN0IHY9bmV3IEFib3J0Q29udHJvbGxlcjtmb3IoY29uc3QgZSBvZiBoKWlmKGUuYWJvcnRlZCl7Y29uc3QgYz1lLnJlYXNvbj8/bmV3IERPTUV4Y2VwdGlvbigiQWJvcnRlZCIsIkFib3J0RXJyb3IiKTt0cnl7di5hYm9ydChjKX1jYXRjaHt2LmFib3J0KCl9cmV0dXJuIHYuc2lnbmFsfWNvbnN0IG9uQWJvcnQ9KCk9Pntjb25zdCBlPWguZmluZChlPT5lLmFib3J0ZWQpLGM9ZT8ucmVhc29uPz9uZXcgRE9NRXhjZXB0aW9uKCJBYm9ydGVkIiwiQWJvcnRFcnJvciIpO3RyeXt2LmFib3J0KGMpfWNhdGNoe3YuYWJvcnQoKX19O2Zvcihjb25zdCBlIG9mIGgpZS5hZGRFdmVudExpc3RlbmVyPy4oImFib3J0IixvbkFib3J0LHtvbmNlOiEwLHNpZ25hbDpjfSk7cmV0dXJuIHYuc2lnbmFsfShbVC5fYWJvcnRDb250cm9sbGVyPy5zaWduYWwsRT8uc2lnbmFsXSxrLnNpZ25hbCx2KTtpZihiLmFib3J0ZWQpe2NvbnN0IGU9Yi5yZWFzb247cmV0dXJuIHZvaWQgZChlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRE9NRXhjZXB0aW9uKFN0cmluZyhlPz8iQWJvcnRlZCIpLCJBYm9ydEVycm9yIikpfXJldHVybiBiLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NvbnN0IGU9Yi5yZWFzb247ZChlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRE9NRXhjZXB0aW9uKFN0cmluZyhlPz8iQWJvcnRlZCIpLCJBYm9ydEVycm9yIikpfSx7b25jZTohMCxzaWduYWw6ay5zaWduYWx9KSxQcm9taXNlLnJlc29sdmUoeShlLHtzaWduYWw6Yn0pKS50aGVuKGMsZCl9Y2F0Y2goZSl7ZChlKX19KS50aGVuKGFzeW5jIGQ9PntsZXQgdj1kO2gudHJhbnNmb3JtJiYodj1hd2FpdCBoLnRyYW5zZm9ybShkKSksaC5waWNrJiYodj1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9e307Zm9yKGNvbnN0IGggb2YgYylkW2hdPWVbaF07cmV0dXJuIGR9KHYsaC5waWNrKSksZS5wYXlsb2FkLmRhdGFbY109dixULmRhdGEudmFsdWU9dixULmVycm9yLnZhbHVlPXZvaWQgMCxULnN0YXR1cy52YWx1ZT0ic3VjY2VzcyJ9KS5jYXRjaChkPT5lLl9hc3luY0RhdGFQcm9taXNlc1tjXSYmZS5fYXN5bmNEYXRhUHJvbWlzZXNbY10hPT1ffHxULl9hYm9ydENvbnRyb2xsZXI/LnNpZ25hbC5hYm9ydGVkP2UuX2FzeW5jRGF0YVByb21pc2VzW2NdOiJ1bmRlZmluZWQiIT10eXBlb2YgRE9NRXhjZXB0aW9uJiZkIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYiQWJvcnRFcnJvciI9PT1kLm5hbWU/KFQuc3RhdHVzLnZhbHVlPSJpZGxlIixlLl9hc3luY0RhdGFQcm9taXNlc1tjXSk6KFQuZXJyb3IudmFsdWU9Y3JlYXRlRXJyb3IoZCksVC5kYXRhLnZhbHVlPVluLnVucmVmKGguZGVmYXVsdCgpKSx2b2lkKFQuc3RhdHVzLnZhbHVlPSJlcnJvciIpKSkuZmluYWxseSgoKT0+e2suYWJvcnQoKSxkZWxldGUgZS5fYXN5bmNEYXRhUHJvbWlzZXNbY119KTtyZXR1cm4gZS5fYXN5bmNEYXRhUHJvbWlzZXNbY109XyxlLl9hc3luY0RhdGFQcm9taXNlc1tjXX0sX2V4ZWN1dGU6ZGVib3VuY2UoKC4uLmUpPT5ULmV4ZWN1dGUoLi4uZSksMCx7bGVhZGluZzohMH0pLF9kZWZhdWx0OmguZGVmYXVsdCxfZGVwczowLF9pbml0OiEwLF9oYXNoOnZvaWQgMCxfb2ZmOigpPT57XygpLGUuX2FzeW5jRGF0YVtjXT8uX2luaXQmJihlLl9hc3luY0RhdGFbY10uX2luaXQ9ITEpLGJ8fFluLm5leHRUaWNrKCgpPT57ZS5fYXN5bmNEYXRhW2NdPy5faW5pdHx8KGNsZWFyTnV4dERhdGFCeUtleShlLGMpLFQuZXhlY3V0ZT0oKT0+UHJvbWlzZS5yZXNvbHZlKCkpfSl9fTtyZXR1cm4gVH0oayx5LnZhbHVlLHYsYixlLmNhY2hlZERhdGEpKSwoKT0+ay5fYXN5bmNEYXRhW3kudmFsdWVdLmV4ZWN1dGUoZSl9ay5fYXN5bmNEYXRhW3kudmFsdWVdO2NvbnN0IFQ9Y3JlYXRlSW5pdGlhbEZldGNoKCk7aWYoay5fYXN5bmNEYXRhW3kudmFsdWVdLl9kZXBzKyssITEhPT1iLnNlcnZlciYmay5wYXlsb2FkLnNlcnZlclJlbmRlcmVkJiZiLmltbWVkaWF0ZSl7Y29uc3QgZT1UKCk7WW4uZ2V0Q3VycmVudEluc3RhbmNlKCk/WW4ub25TZXJ2ZXJQcmVmZXRjaCgoKT0+ZSk6ay5ob29rKCJhcHA6Y3JlYXRlZCIsYXN5bmMoKT0+e2F3YWl0IGV9KX1jb25zdCBOPXtkYXRhOndyaXRhYmxlQ29tcHV0ZWRSZWYoKCk9PmsuX2FzeW5jRGF0YVt5LnZhbHVlXT8uZGF0YSkscGVuZGluZzp3cml0YWJsZUNvbXB1dGVkUmVmKCgpPT5rLl9hc3luY0RhdGFbeS52YWx1ZV0/LnBlbmRpbmcpLHN0YXR1czp3cml0YWJsZUNvbXB1dGVkUmVmKCgpPT5rLl9hc3luY0RhdGFbeS52YWx1ZV0/LnN0YXR1cyksZXJyb3I6d3JpdGFibGVDb21wdXRlZFJlZigoKT0+ay5fYXN5bmNEYXRhW3kudmFsdWVdPy5lcnJvcikscmVmcmVzaDooLi4uZSk9PntpZighay5fYXN5bmNEYXRhW3kudmFsdWVdPy5faW5pdCl7cmV0dXJuIGNyZWF0ZUluaXRpYWxGZXRjaCgpKCl9cmV0dXJuIGsuX2FzeW5jRGF0YVt5LnZhbHVlXS5leGVjdXRlKC4uLmUpfSxleGVjdXRlOiguLi5lKT0+Ti5yZWZyZXNoKC4uLmUpLGNsZWFyOigpPT57Y29uc3QgZT1rLl9hc3luY0RhdGFbeS52YWx1ZV07aWYoZT8uX2Fib3J0Q29udHJvbGxlcil0cnl7ZS5fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBET01FeGNlcHRpb24oIkFzeW5jRGF0YSBhYm9ydGVkIGJ5IHVzZXIuIiwiQWJvcnRFcnJvciIpKX1maW5hbGx5e2UuX2Fib3J0Q29udHJvbGxlcj12b2lkIDB9Y2xlYXJOdXh0RGF0YUJ5S2V5KGsseS52YWx1ZSl9fSxPPVByb21pc2UucmVzb2x2ZShrLl9hc3luY0RhdGFQcm9taXNlc1t5LnZhbHVlXSkudGhlbigoKT0+Tik7cmV0dXJuIE9iamVjdC5hc3NpZ24oTyxOKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLHt0aGVuOntlbnVtZXJhYmxlOiEwLHZhbHVlOk8udGhlbi5iaW5kKE8pfSxjYXRjaDp7ZW51bWVyYWJsZTohMCx2YWx1ZTpPLmNhdGNoLmJpbmQoTyl9LGZpbmFsbHk6e2VudW1lcmFibGU6ITAsdmFsdWU6Ty5maW5hbGx5LmJpbmQoTyl9fSksT319KSxMYT1CYS5fX251eHRfZmFjdG9yeSgpO2Z1bmN0aW9uIHdyaXRhYmxlQ29tcHV0ZWRSZWYoZSl7cmV0dXJuIFluLmNvbXB1dGVkKHtnZXQ6KCk9PmUoKT8udmFsdWUsc2V0KGMpe2NvbnN0IGQ9ZSgpO2QmJihkLnZhbHVlPWMpfX0pfWFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hOdXh0RGF0YShlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9ZnVuY3Rpb24gY2xlYXJOdXh0RGF0YUJ5S2V5KGUsYyl7YyBpbiBlLnBheWxvYWQuZGF0YSYmKGUucGF5bG9hZC5kYXRhW2NdPXZvaWQgMCksYyBpbiBlLnBheWxvYWQuX2Vycm9ycyYmKGUucGF5bG9hZC5fZXJyb3JzW2NdPXZvaWQgMCksZS5fYXN5bmNEYXRhW2NdJiYoZS5fYXN5bmNEYXRhW2NdLmRhdGEudmFsdWU9WW4udW5yZWYoZS5fYXN5bmNEYXRhW2NdLl9kZWZhdWx0KCkpLGUuX2FzeW5jRGF0YVtjXS5lcnJvci52YWx1ZT12b2lkIDAsZS5fYXN5bmNEYXRhW2NdLnN0YXR1cy52YWx1ZT0iaWRsZSIpLGMgaW4gZS5fYXN5bmNEYXRhUHJvbWlzZXMmJihlLl9hc3luY0RhdGFQcm9taXNlc1tjXT12b2lkIDApfUJhLl9fbnV4dF9mYWN0b3J5KHtsYXp5OiEwLF9mdW5jdGlvbk5hbWU6InVzZUxhenlBc3luY0RhdGEifSk7Y29uc3QgZ2V0RGVmYXVsdD0oKT0+e30sZ2V0RGVmYXVsdENhY2hlZERhdGE9KGUsYyxkKT0+Yy5pc0h5ZHJhdGluZz9jLnBheWxvYWQuZGF0YVtlXToicmVmcmVzaDptYW51YWwiIT09ZC5jYXVzZSYmInJlZnJlc2g6aG9vayIhPT1kLmNhdXNlP2Muc3RhdGljLmRhdGFbZV06dm9pZCAwO2Z1bmN0aW9uIHVzZVN0YXRlKC4uLmUpe2NvbnN0IGM9InN0cmluZyI9PXR5cGVvZiBlW2UubGVuZ3RoLTFdP2UucG9wKCk6dm9pZCAwOyJzdHJpbmciIT10eXBlb2YgZVswXSYmZS51bnNoaWZ0KGMpO2NvbnN0W2QsaF09ZTtpZighZHx8InN0cmluZyIhPXR5cGVvZiBkKXRocm93IG5ldyBUeXBlRXJyb3IoIltudXh0XSBbdXNlU3RhdGVdIGtleSBtdXN0IGJlIGEgc3RyaW5nOiAiK2QpO2lmKHZvaWQgMCE9PWgmJiJmdW5jdGlvbiIhPXR5cGVvZiBoKXRocm93IG5ldyBFcnJvcigiW251eHRdIFt1c2VTdGF0ZV0gaW5pdCBtdXN0IGJlIGEgZnVuY3Rpb246ICIraCk7Y29uc3Qgdj0iJHMiK2QsYj11c2VOdXh0QXBwKCkseT1Zbi50b1JlZihiLnBheWxvYWQuc3RhdGUsdik7aWYoaCYmKGIuX3N0YXRlW3ZdPz89e19kZWZhdWx0Omh9KSx2b2lkIDA9PT15LnZhbHVlJiZoKXtjb25zdCBlPWgoKTtpZihZbi5pc1JlZihlKSlyZXR1cm4gYi5wYXlsb2FkLnN0YXRlW3ZdPWUsZTt5LnZhbHVlPWV9cmV0dXJuIHl9ZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25TZWdtZW50cyhlKXtjb25zdCBjPVtZbi50b1ZhbHVlKGUubWV0aG9kKT8udG9VcHBlckNhc2UoKXx8IkdFVCIsWW4udG9WYWx1ZShlLmJhc2VVUkwpXTtmb3IoY29uc3QgZCBvZltlLnF1ZXJ5fHxlLnBhcmFtc10pe2NvbnN0IGU9WW4udG9WYWx1ZShkKTtpZighZSljb250aW51ZTtjb25zdCBoPXt9O2Zvcihjb25zdFtjLGRdb2YgT2JqZWN0LmVudHJpZXMoZSkpaFtZbi50b1ZhbHVlKGMpXT1Zbi50b1ZhbHVlKGQpO2MucHVzaChoKX1pZihlLmJvZHkpe2NvbnN0IGQ9WW4udG9WYWx1ZShlLmJvZHkpO2lmKGQpaWYoZCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKWMucHVzaChxKE9iamVjdC5mcm9tRW50cmllcyhbLi4ubmV3IFVpbnQ4QXJyYXkoZCkuZW50cmllcygpXS5tYXAoKFtlLGNdKT0+W2UsYy50b1N0cmluZygpXSkpKSk7ZWxzZSBpZihkIGluc3RhbmNlb2YgRm9ybURhdGEpe2NvbnN0IGU9e307Zm9yKGNvbnN0IGMgb2YgZC5lbnRyaWVzKCkpe2NvbnN0W2QsaF09YztlW2RdPWggaW5zdGFuY2VvZiBGaWxlP2gubmFtZTpofWMucHVzaChxKGUpKX1lbHNlIGlmKGlzUGxhaW5PYmplY3QoZCkpYy5wdXNoKHEoWW4ucmVhY3RpdmUoZCkpKTtlbHNlIHRyeXtjLnB1c2gocShkKSl9Y2F0Y2h7fWVsc2UgYy5wdXNoKHEoZCkpfXJldHVybiBjfWNvbnN0IGphPWRlZmluZUtleWVkRnVuY3Rpb25GYWN0b3J5KHtuYW1lOiJjcmVhdGVVc2VGZXRjaCIsZmFjdG9yeTooZT17fSk9PmZ1bmN0aW9uKGMsZCxoKXtjb25zdFt2PXt9LGJdPSJzdHJpbmciPT10eXBlb2YgZD9be30sZF06W2QsaF0seT1Zbi5jb21wdXRlZCgoKT0+WW4udG9WYWx1ZShjKSksRT1Zbi5jb21wdXRlZCgoKT0+WW4udG9WYWx1ZSh2LmtleSl8fCIkZiIrcShbYiwic3RyaW5nIj09dHlwZW9mIHkudmFsdWU/eS52YWx1ZToiIiwuLi5nZW5lcmF0ZU9wdGlvblNlZ21lbnRzKHYpXSkpO2lmKCF2LmJhc2VVUkwmJiJzdHJpbmciPT10eXBlb2YgeS52YWx1ZSYmIi8iPT09eS52YWx1ZVswXSYmIi8iPT09eS52YWx1ZVsxXSl0aHJvdyBuZXcgRXJyb3IoJ1tudXh0XSBbdXNlRmV0Y2hdIHRoZSByZXF1ZXN0IFVSTCBtdXN0IG5vdCBzdGFydCB3aXRoICIvLyIuJyk7Y29uc3Qgaz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHYpOmUse3NlcnZlcjpfLGxhenk6VCxkZWZhdWx0Ok4sdHJhbnNmb3JtOk8scGljazpSLHdhdGNoOk0saW1tZWRpYXRlOkQsZ2V0Q2FjaGVkRGF0YTpMLGRlZXA6JCxkZWR1cGU6Rix0aW1lb3V0OlYsLi4uVX09ey4uLiJmdW5jdGlvbiI9PXR5cGVvZiBlP3t9OmssLi4udiwuLi4iZnVuY3Rpb24iPT10eXBlb2YgZT9rOnt9fSxXPVluLnJlYWN0aXZlKHsuLi5uYSwuLi5VLGNhY2hlOiJib29sZWFuIj09dHlwZW9mIFUuY2FjaGU/dm9pZCAwOlUuY2FjaGV9KSxLPXtzZXJ2ZXI6XyxsYXp5OlQsZGVmYXVsdDpOLHRyYW5zZm9ybTpPLHBpY2s6UixpbW1lZGlhdGU6RCxnZXRDYWNoZWREYXRhOkwsZGVlcDokLGRlZHVwZTpGLHRpbWVvdXQ6Vix3YXRjaDohMT09PU0/W106Wy4uLk18fFtdLFddfTtyZXR1cm4gTGEoITE9PT1NP0UudmFsdWU6RSwoZSx7c2lnbmFsOmN9KT0+e2xldCBkPXYuJGZldGNofHxnbG9iYWxUaGlzLiRmZXRjaDtpZighdi4kZmV0Y2gpeyJzdHJpbmciPT10eXBlb2YgeS52YWx1ZSYmIi8iPT09eS52YWx1ZVswXSYmKCFZbi50b1ZhbHVlKHYuYmFzZVVSTCl8fCIvIj09PVluLnRvVmFsdWUodi5iYXNlVVJMKVswXSkmJihkPXVzZVJlcXVlc3RFdmVudCgpPy4kZmV0Y2h8fGdsb2JhbFRoaXMuJGZldGNoKX1yZXR1cm4gZCh5LnZhbHVlLHtzaWduYWw6YywuLi5XfSl9LEspfX0pO2phLl9fbnV4dF9mYWN0b3J5KCksamEuX19udXh0X2ZhY3Rvcnkoe2xhenk6ITAsX2Z1bmN0aW9uTmFtZToidXNlTGF6eUZldGNoIn0pO2Z1bmN0aW9uIGRlZmluZU51eHRMaW5rKGMpe2NvbnN0IGg9Yy5jb21wb25lbnROYW1lfHwiTnV4dExpbmsiO2Z1bmN0aW9uIGlzSGFzaExpbmtXaXRob3V0SGFzaE1vZGUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiZlLnN0YXJ0c1dpdGgoIiMiKX1mdW5jdGlvbiB1c2VOdXh0TGluayhoKXtjb25zdCB2PXVzZVJvdXRlcigpLGI9dXNlUnVudGltZUNvbmZpZygpLHk9WW4uY29tcHV0ZWQoKCk9PiEhWW4udW5yZWYoaC50YXJnZXQpJiYiX3NlbGYiIT09WW4udW5yZWYoaC50YXJnZXQpKSxFPVluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz1Zbi51bnJlZihoLnRvKXx8WW4udW5yZWYoaC5ocmVmKXx8IiI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjJiZlKGMse2FjY2VwdFJlbGF0aXZlOiEwfSl9KSxrPVluLnJlc29sdmVDb21wb25lbnQoIlJvdXRlckxpbmsiKSxfPWsmJiJzdHJpbmciIT10eXBlb2Ygaz9rLnVzZUxpbms6dm9pZCAwLFQ9WW4uY29tcHV0ZWQoKCk9PntpZihZbi51bnJlZihoLmV4dGVybmFsKSlyZXR1cm4hMDtjb25zdCBlPVluLnVucmVmKGgudG8pfHxZbi51bnJlZihoLmhyZWYpfHwiIjtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGUmJigiIj09PWV8fEUudmFsdWUpfSksTj1Zbi5jb21wdXRlZCgoKT0+e2NvbnN0IGU9WW4udW5yZWYoaC50byl8fFluLnVucmVmKGguaHJlZil8fCIiO3JldHVybiBULnZhbHVlP2U6ZnVuY3Rpb24oZSxkLGgpe2NvbnN0IHY9aD8/Yy50cmFpbGluZ1NsYXNoO2lmKCFlfHwiYXBwZW5kIiE9PXYmJiJyZW1vdmUiIT09dilyZXR1cm4gZTtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGFwcGx5VHJhaWxpbmdTbGFzaEJlaGF2aW9yKGUsdik7Y29uc3QgYj0icGF0aCJpbiBlJiZ2b2lkIDAhPT1lLnBhdGg/ZS5wYXRoOmQoZSkucGF0aDtyZXR1cm57Li4uZSxuYW1lOnZvaWQgMCxwYXRoOmFwcGx5VHJhaWxpbmdTbGFzaEJlaGF2aW9yKGIsdil9fShlLHYucmVzb2x2ZSxZbi51bnJlZihoLnRyYWlsaW5nU2xhc2gpKX0pLE89VC52YWx1ZT92b2lkIDA6Xz8uKHsuLi5oLHRvOk4sdmlld1RyYW5zaXRpb246WW4udW5yZWYoaC52aWV3VHJhbnNpdGlvbil9KSxSPVluLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1Zbi51bnJlZihoLnRyYWlsaW5nU2xhc2gpPz9jLnRyYWlsaW5nU2xhc2g7aWYoIU4udmFsdWV8fEUudmFsdWV8fGlzSGFzaExpbmtXaXRob3V0SGFzaE1vZGUoTi52YWx1ZSkpcmV0dXJuIE4udmFsdWU7aWYoVC52YWx1ZSl7Y29uc3QgYz0ib2JqZWN0Ij09dHlwZW9mIE4udmFsdWUmJiJwYXRoImluIE4udmFsdWU/cmVzb2x2ZVJvdXRlT2JqZWN0KE4udmFsdWUpOk4udmFsdWU7cmV0dXJuIGFwcGx5VHJhaWxpbmdTbGFzaEJlaGF2aW9yKCJvYmplY3QiPT10eXBlb2YgYz92LnJlc29sdmUoYykuaHJlZjpjLGUpfXJldHVybiJvYmplY3QiPT10eXBlb2YgTi52YWx1ZT92LnJlc29sdmUoTi52YWx1ZSk/LmhyZWY/P251bGw6YXBwbHlUcmFpbGluZ1NsYXNoQmVoYXZpb3IoZChiLmFwcC5iYXNlVVJMLE4udmFsdWUpLGUpfSk7cmV0dXJue3RvOk4saGFzVGFyZ2V0OnksaXNBYnNvbHV0ZVVybDpFLGlzRXh0ZXJuYWw6VCxocmVmOlIsaXNBY3RpdmU6Tz8uaXNBY3RpdmU/P1luLmNvbXB1dGVkKCgpPT5OLnZhbHVlPT09di5jdXJyZW50Um91dGUudmFsdWUucGF0aCksaXNFeGFjdEFjdGl2ZTpPPy5pc0V4YWN0QWN0aXZlPz9Zbi5jb21wdXRlZCgoKT0+Ti52YWx1ZT09PXYuY3VycmVudFJvdXRlLnZhbHVlLnBhdGgpLHJvdXRlOk8/LnJvdXRlPz9Zbi5jb21wdXRlZCgoKT0+di5yZXNvbHZlKE4udmFsdWUpKSxhc3luYyBuYXZpZ2F0ZShlKXthd2FpdCBuYXZpZ2F0ZVRvKFIudmFsdWUse3JlcGxhY2U6WW4udW5yZWYoaC5yZXBsYWNlKSxleHRlcm5hbDpULnZhbHVlfHx5LnZhbHVlfSl9fX1yZXR1cm4gWW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOmgscHJvcHM6e3RvOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHRhcmdldDp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LG5vUmVsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHByZWZldGNoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHByZWZldGNoT246e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxub1ByZWZldGNoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LGFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sZXhhY3RBY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHByZWZldGNoZWRDbGFzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHJlcGxhY2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LGV4dGVybmFsOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LGN1c3RvbTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSx0cmFpbGluZ1NsYXNoOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX19LHVzZUxpbms6dXNlTnV4dExpbmssc2V0dXAoZSx7c2xvdHM6ZH0pe2NvbnN0IGg9dXNlUm91dGVyKCkse3RvOnYsaHJlZjpiLG5hdmlnYXRlOnksaXNFeHRlcm5hbDpFLGhhc1RhcmdldDprLGlzQWJzb2x1dGVVcmw6X309dXNlTnV4dExpbmsoZSk7WW4uc2hhbGxvd1JlZighMSk7YXN5bmMgZnVuY3Rpb24gcHJlZmV0Y2goZT11c2VOdXh0QXBwKCkpe31yZXR1cm4oKT0+e2lmKCFFLnZhbHVlJiYhay52YWx1ZSYmIWlzSGFzaExpbmtXaXRob3V0SGFzaE1vZGUodi52YWx1ZSkpe2NvbnN0IGg9e3JlZjp2b2lkIDAsdG86di52YWx1ZSxhY3RpdmVDbGFzczplLmFjdGl2ZUNsYXNzfHxjLmFjdGl2ZUNsYXNzLGV4YWN0QWN0aXZlQ2xhc3M6ZS5leGFjdEFjdGl2ZUNsYXNzfHxjLmV4YWN0QWN0aXZlQ2xhc3MscmVwbGFjZTplLnJlcGxhY2UsYXJpYUN1cnJlbnRWYWx1ZTplLmFyaWFDdXJyZW50VmFsdWUsY3VzdG9tOmUuY3VzdG9tfTtyZXR1cm4gZS5jdXN0b218fChoLnJlbD1lLnJlbHx8dm9pZCAwKSxZbi5oKFluLnJlc29sdmVDb21wb25lbnQoIlJvdXRlckxpbmsiKSxoLGQuZGVmYXVsdCl9Y29uc3QgVD1lLnRhcmdldHx8bnVsbCxPPSgoLi4uZSk9PmUuZmluZChlPT52b2lkIDAhPT1lKSkoZS5ub1JlbD8iIjplLnJlbCxjLmV4dGVybmFsUmVsQXR0cmlidXRlLF8udmFsdWV8fGsudmFsdWU/Im5vb3BlbmVyIG5vcmVmZXJyZXIiOiIiKXx8bnVsbDtyZXR1cm4gZS5jdXN0b20/ZC5kZWZhdWx0P2QuZGVmYXVsdCh7aHJlZjpiLnZhbHVlLG5hdmlnYXRlOnkscHJlZmV0Y2g6cHJlZmV0Y2gsZ2V0IHJvdXRlKCl7aWYoIWIudmFsdWUpcmV0dXJuO2NvbnN0IGU9bmV3IFVSTChiLnZhbHVlLCJodHRwOi8vbG9jYWxob3N0Iik7cmV0dXJue3BhdGg6ZS5wYXRobmFtZSxmdWxsUGF0aDplLnBhdGhuYW1lLGdldCBxdWVyeSgpe3JldHVybiBOKGUuc2VhcmNoKX0saGFzaDplLmhhc2gscGFyYW1zOnt9LG5hbWU6dm9pZCAwLG1hdGNoZWQ6W10scmVkaXJlY3RlZEZyb206dm9pZCAwLG1ldGE6e30saHJlZjpiLnZhbHVlfX0scmVsOk8sdGFyZ2V0OlQsaXNFeHRlcm5hbDpFLnZhbHVlfHxrLnZhbHVlLGlzQWN0aXZlOiExLGlzRXhhY3RBY3RpdmU6ITF9KTpudWxsOlluLmgoImEiLHtyZWY6dm9pZCAwLGhyZWY6Yi52YWx1ZXx8bnVsbCxyZWw6Tyx0YXJnZXQ6VCxvbkNsaWNrOmFzeW5jIGM9PntpZighRS52YWx1ZSYmIWsudmFsdWUpe2MucHJldmVudERlZmF1bHQoKTt0cnl7Y29uc3QgYz1lbmNvZGVSb3V0ZVBhdGgoYi52YWx1ZSk7cmV0dXJuIGF3YWl0KGUucmVwbGFjZT9oLnJlcGxhY2UoYyk6aC5wdXNoKGMpKX1maW5hbGx5e319fX0sZC5kZWZhdWx0Py4oKSl9fX0pfWNvbnN0ICRhPWRlZmluZU51eHRMaW5rKGVhKTtmdW5jdGlvbiBhcHBseVRyYWlsaW5nU2xhc2hCZWhhdmlvcihjLGQpe2NvbnN0IGg9ImFwcGVuZCI9PT1kP0Q6TDtyZXR1cm4gZShjKSYmIWMuc3RhcnRzV2l0aCgiaHR0cCIpP2M6aChjLCEwKX1jb25zdCBGYT1PKHt1aTp7Y29sb3JzOntwcmltYXJ5OiJibHVlIixuZXV0cmFsOiJncmF5In19fSx7bnV4dDp7fSxpY29uOntwcm92aWRlcjoic2VydmVyIixjbGFzczoiIixhbGlhc2VzOnt9LGljb25pZnlBcGlFbmRwb2ludDoiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24iLGxvY2FsQXBpRW5kcG9pbnQ6Ii9hcGkvX251eHRfaWNvbiIsZmFsbGJhY2tUb0FwaTohMCxjc3NTZWxlY3RvclByZWZpeDoiaS0iLGNzc1doZXJlUHNldWRvOiEwLGNzc0xheWVyOiJiYXNlIixtb2RlOiJjc3MiLGF0dHJzOnsiYXJpYS1oaWRkZW4iOiEwfSxjb2xsZWN0aW9uczpbImFjYWRlbWljb25zIiwiYWthci1pY29ucyIsImFudC1kZXNpZ24iLCJhcmN0aWNvbnMiLCJiYXNpbCIsImJpIiwiYml0Y29pbi1pY29ucyIsImJwbW4iLCJicmFuZGljbyIsImJ4IiwiYnhsIiwiYnhzIiwiYnl0ZXNpemUiLCJjYXJib24iLCJjYXRwcHVjY2luIiwiY2JpIiwiY2hhcm0iLCJjaSIsImNpYiIsImNpZiIsImNpbCIsImNpcmNsZS1mbGFncyIsImNpcmN1bSIsImNsYXJpdHkiLCJjb2RleCIsImNvZGljb24iLCJjb3ZpZCIsImNyeXB0b2N1cnJlbmN5IiwiY3J5cHRvY3VycmVuY3ktY29sb3IiLCJjdWlkYSIsImRhc2hpY29ucyIsImRldmljb24iLCJkZXZpY29uLXBsYWluIiwiZGlua2llLWljb25zIiwiZHVvLWljb25zIiwiZWkiLCJlbCIsImVtb2ppb25lIiwiZW1vamlvbmUtbW9ub3RvbmUiLCJlbW9qaW9uZS12MSIsImVudHlwbyIsImVudHlwby1zb2NpYWwiLCJlb3MtaWNvbnMiLCJlcCIsImV0IiwiZXZhIiwiZjciLCJmYSIsImZhLWJyYW5kcyIsImZhLXJlZ3VsYXIiLCJmYS1zb2xpZCIsImZhNi1icmFuZHMiLCJmYTYtcmVndWxhciIsImZhNi1zb2xpZCIsImZhNy1icmFuZHMiLCJmYTctcmVndWxhciIsImZhNy1zb2xpZCIsImZhZCIsImZhbWljb25zIiwiZmUiLCJmZWF0aGVyIiwiZmlsZS1pY29ucyIsImZsYWciLCJmbGFncGFjayIsImZsYXQtY29sb3ItaWNvbnMiLCJmbGF0LXVpIiwiZmxvd2JpdGUiLCJmbHVlbnQiLCJmbHVlbnQtY29sb3IiLCJmbHVlbnQtZW1vamkiLCJmbHVlbnQtZW1vamktZmxhdCIsImZsdWVudC1lbW9qaS1oaWdoLWNvbnRyYXN0IiwiZmx1ZW50LW1kbDIiLCJmb250ZWxpY28iLCJmb250aXN0byIsImZvcm1raXQiLCJmb3VuZGF0aW9uIiwiZnhlbW9qaSIsImdhbGEiLCJnYW1lLWljb25zIiwiZ2FyZGVuIiwiZ2VvIiwiZ2ciLCJnaXMiLCJncmF2aXR5LXVpIiwiZ3JpZGljb25zIiwiZ3JvbW1ldC1pY29ucyIsImd1aWRhbmNlIiwiaGVhbHRoaWNvbnMiLCJoZXJvaWNvbnMiLCJoZXJvaWNvbnMtb3V0bGluZSIsImhlcm9pY29ucy1zb2xpZCIsImh1Z2VpY29ucyIsImh1bWJsZWljb25zIiwiaWMiLCJpY29tb29uLWZyZWUiLCJpY29uLXBhcmsiLCJpY29uLXBhcmstb3V0bGluZSIsImljb24tcGFyay1zb2xpZCIsImljb24tcGFyay10d290b25lIiwiaWNvbmFtb29uIiwiaWNvbm9pciIsImljb25zOCIsImlsIiwiaW9uIiwiaXd3YSIsIml4IiwiamFtIiwibGEiLCJsZXRzLWljb25zIiwibGluZS1tZCIsImxpbmVpY29ucyIsImxvZ29zIiwibHMiLCJsc2ljb24iLCJsdWNpZGUiLCJsdWNpZGUtbGFiIiwibWFnZSIsIm1hamVzdGljb25zIiwibWFraSIsIm1hcCIsIm1hcmtldGVxIiwibWF0ZXJpYWwtaWNvbi10aGVtZSIsIm1hdGVyaWFsLXN5bWJvbHMiLCJtYXRlcmlhbC1zeW1ib2xzLWxpZ2h0IiwibWRpIiwibWRpLWxpZ2h0IiwibWVkaWNhbC1pY29uIiwibWVtb3J5IiwibWV0ZW9jb25zIiwibWV0ZW9yLWljb25zIiwibWkiLCJtaW5nY3V0ZSIsIm1vbm8taWNvbnMiLCJteW5hdWkiLCJuaW1idXMiLCJub25pY29ucyIsIm5vdG8iLCJub3RvLXYxIiwibnJrIiwib2N0aWNvbiIsIm9pIiwib291aSIsIm9wZW5tb2ppIiwib3VpIiwicGFqYW1hcyIsInBlcGljb25zIiwicGVwaWNvbnMtcGVuY2lsIiwicGVwaWNvbnMtcG9wIiwicGVwaWNvbnMtcHJpbnQiLCJwaCIsInBpY29uIiwicGl4ZWwiLCJwaXhlbGFydGljb25zIiwicHJpbWUiLCJwcm9pY29ucyIsInBzIiwicWxlbWVudGluZS1pY29ucyIsInF1aWxsIiwicmFkaXgtaWNvbnMiLCJyYXBoYWVsIiwicmkiLCJyaXZldC1pY29ucyIsInJvZW50Z2VuIiwic2kiLCJzaS1nbHlwaCIsInNpZGVraWNraWNvbnMiLCJzaW1wbGUtaWNvbnMiLCJzaW1wbGUtbGluZS1pY29ucyIsInNraWxsLWljb25zIiwic29sYXIiLCJzdGFzaCIsInN0cmVhbWxpbmUiLCJzdHJlYW1saW5lLWJsb2NrIiwic3RyZWFtbGluZS1jb2xvciIsInN0cmVhbWxpbmUtY3liZXIiLCJzdHJlYW1saW5lLWN5YmVyLWNvbG9yIiwic3RyZWFtbGluZS1lbW9qaXMiLCJzdHJlYW1saW5lLWZsZXgiLCJzdHJlYW1saW5lLWZsZXgtY29sb3IiLCJzdHJlYW1saW5lLWZyZWVoYW5kIiwic3RyZWFtbGluZS1mcmVlaGFuZC1jb2xvciIsInN0cmVhbWxpbmUta2FtZWxlb24tY29sb3IiLCJzdHJlYW1saW5lLWxvZ29zIiwic3RyZWFtbGluZS1waXhlbCIsInN0cmVhbWxpbmUtcGx1bXAiLCJzdHJlYW1saW5lLXBsdW1wLWNvbG9yIiwic3RyZWFtbGluZS1zaGFycCIsInN0cmVhbWxpbmUtc2hhcnAtY29sb3IiLCJzdHJlYW1saW5lLXN0aWNraWVzLWNvbG9yIiwic3RyZWFtbGluZS11bHRpbWF0ZSIsInN0cmVhbWxpbmUtdWx0aW1hdGUtY29sb3IiLCJzdWJ3YXkiLCJzdmctc3Bpbm5lcnMiLCJzeXN0ZW0tdWljb25zIiwidGFibGVyIiwidGRlc2lnbiIsInRlZW55aWNvbnMiLCJ0ZW1ha2kiLCJ0b2tlbiIsInRva2VuLWJyYW5kZWQiLCJ0b3Bjb2F0IiwidHdlbW9qaSIsInR5cGNuIiwidWlsIiwidWltIiwidWlzIiwidWl0IiwidWl3IiwidW5qcyIsInZhYWRpbiIsInZzIiwidnNjb2RlLWljb25zIiwid2Vic3ltYm9sIiwid2V1aSIsIndoaCIsIndpIiwid3BmIiwiem1kaSIsInpvbmRpY29ucyJdLGZldGNoVGltZW91dDoxNTAwfSx1aTp7Y29sb3JzOntwcmltYXJ5OiJncmVlbiIsc2Vjb25kYXJ5OiJibHVlIixzdWNjZXNzOiJncmVlbiIsaW5mbzoiYmx1ZSIsd2FybmluZzoieWVsbG93IixlcnJvcjoicmVkIixuZXV0cmFsOiJzbGF0ZSJ9LGljb25zOnthcnJvd0Rvd246ImktbHVjaWRlLWFycm93LWRvd24iLGFycm93TGVmdDoiaS1sdWNpZGUtYXJyb3ctbGVmdCIsYXJyb3dSaWdodDoiaS1sdWNpZGUtYXJyb3ctcmlnaHQiLGFycm93VXA6ImktbHVjaWRlLWFycm93LXVwIixjYXV0aW9uOiJpLWx1Y2lkZS1jaXJjbGUtYWxlcnQiLGNoZWNrOiJpLWx1Y2lkZS1jaGVjayIsY2hldnJvbkRvdWJsZUxlZnQ6ImktbHVjaWRlLWNoZXZyb25zLWxlZnQiLGNoZXZyb25Eb3VibGVSaWdodDoiaS1sdWNpZGUtY2hldnJvbnMtcmlnaHQiLGNoZXZyb25Eb3duOiJpLWx1Y2lkZS1jaGV2cm9uLWRvd24iLGNoZXZyb25MZWZ0OiJpLWx1Y2lkZS1jaGV2cm9uLWxlZnQiLGNoZXZyb25SaWdodDoiaS1sdWNpZGUtY2hldnJvbi1yaWdodCIsY2hldnJvblVwOiJpLWx1Y2lkZS1jaGV2cm9uLXVwIixjbG9zZToiaS1sdWNpZGUteCIsY29weToiaS1sdWNpZGUtY29weSIsY29weUNoZWNrOiJpLWx1Y2lkZS1jb3B5LWNoZWNrIixkYXJrOiJpLWx1Y2lkZS1tb29uIixkcmFnOiJpLWx1Y2lkZS1ncmlwLXZlcnRpY2FsIixlbGxpcHNpczoiaS1sdWNpZGUtZWxsaXBzaXMiLGVycm9yOiJpLWx1Y2lkZS1jaXJjbGUteCIsZXh0ZXJuYWw6ImktbHVjaWRlLWFycm93LXVwLXJpZ2h0IixleWU6ImktbHVjaWRlLWV5ZSIsZXllT2ZmOiJpLWx1Y2lkZS1leWUtb2ZmIixmaWxlOiJpLWx1Y2lkZS1maWxlIixmb2xkZXI6ImktbHVjaWRlLWZvbGRlciIsZm9sZGVyT3BlbjoiaS1sdWNpZGUtZm9sZGVyLW9wZW4iLGhhc2g6ImktbHVjaWRlLWhhc2giLGluZm86ImktbHVjaWRlLWluZm8iLGxpZ2h0OiJpLWx1Y2lkZS1zdW4iLGxvYWRpbmc6ImktbHVjaWRlLWxvYWRlci1jaXJjbGUiLG1lbnU6ImktbHVjaWRlLW1lbnUiLG1pbnVzOiJpLWx1Y2lkZS1taW51cyIscGFuZWxDbG9zZToiaS1sdWNpZGUtcGFuZWwtbGVmdC1jbG9zZSIscGFuZWxPcGVuOiJpLWx1Y2lkZS1wYW5lbC1sZWZ0LW9wZW4iLHBsdXM6ImktbHVjaWRlLXBsdXMiLHJlbG9hZDoiaS1sdWNpZGUtcm90YXRlLWNjdyIsc2VhcmNoOiJpLWx1Y2lkZS1zZWFyY2giLHN0b3A6ImktbHVjaWRlLXNxdWFyZSIsc3VjY2VzczoiaS1sdWNpZGUtY2lyY2xlLWNoZWNrIixzeXN0ZW06ImktbHVjaWRlLW1vbml0b3IiLHRpcDoiaS1sdWNpZGUtbGlnaHRidWxiIix1cGxvYWQ6ImktbHVjaWRlLXVwbG9hZCIsd2FybmluZzoiaS1sdWNpZGUtdHJpYW5nbGUtYWxlcnQifSx0djp7dHdNZXJnZUNvbmZpZzp7fX19fSk7ZnVuY3Rpb24gdXNlQXBwQ29uZmlnKCl7Y29uc3QgZT11c2VOdXh0QXBwKCk7cmV0dXJuIGUuX2FwcENvbmZpZ3x8PXYoRmEpLGUuX2FwcENvbmZpZ31mdW5jdGlvbiB1c2VDc3JmKCl7Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkucHVibGljLmNzdXJmLmhlYWRlck5hbWU/PyIiO3JldHVybntjc3JmOnVzZU51eHRBcHAoKS5zc3JDb250ZXh0Py5ldmVudD8uY29udGV4dD8uY3NyZlRva2VuLGhlYWRlck5hbWU6ZX19Y29uc3QgVmE9JGZldGNoLmNyZWF0ZSh7b25SZXF1ZXN0KGUpe2NvbnN0e29wdGlvbnM6Y309ZTt2YXIgZCxoO2Muc2lsZW50LCJzdHJpbmciPT10eXBlb2YgZS5yZXF1ZXN0JiZjLnF1ZXJ5JiYoZS5yZXF1ZXN0PShkPWUucmVxdWVzdCxoPWMucXVlcnksZC5yZXBsYWNlKC86KFx3KykvZywoZSxjKT0+e2lmKGMgaW4gaCl7Y29uc3QgZT1oW2NdO3JldHVybiBkZWxldGUgaFtjXSxTdHJpbmcoZSl9cmV0dXJuIGV9KSkpO3tjb25zdCBlPXVzZVJlcXVlc3RIZWFkZXJzKFsiY29va2llIl0pO2MuaGVhZGVycz17Li4uYy5oZWFkZXJzLC4uLmV9fXRyeXtjb25zdCBlPXVzZUNzcmYoKTtlPy5oZWFkZXJOYW1lJiYoYy5oZWFkZXJzPXsuLi5jLmhlYWRlcnMsW2UuaGVhZGVyTmFtZV06ZS5jc3JmfSl9Y2F0Y2h7fX0sb25SZXNwb25zZShlKXtlLm9wdGlvbnMuc2lsZW50LDB9LGFzeW5jIG9uUmVzcG9uc2VFcnJvcihlKXtlLm9wdGlvbnMuc2lsZW50O2NvbnN0IGM9dXNlQXV0aEFwaSgpLGQ9ZT8ucmVzcG9uc2U/LnN0YXR1cztsZXQgaD0hMTt0cnl7aD0hU3RyaW5nKGUucmVzcG9uc2UudXJsKS5zdGFydHNXaXRoKGdldEJhc2VVcmwoKSl9Y2F0Y2h7fWlmKDQwMT09PWQpe2lmKGUucmVxdWVzdC50b1N0cmluZygpLmluY2x1ZGVzKCJhdXRoIil8fGgpcmV0dXJuO3RyeXthd2FpdCBjLmxvZ291dCgpfWNhdGNoe31maW5hbGx5e25hdmlnYXRlVG8oIi9hdXRoL2xvZ2luIil9fX19KTtmdW5jdGlvbiB1c2VBdXRoQXBpKCl7cmV0dXJue2ZldGNoQ3VycmVudFVzZXI6ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvYXV0aC9tZSIpfSx1cGRhdGVDdXJyZW50VXNlcjpmdW5jdGlvbihlKXtyZXR1cm4gVmEoIi9hcGkvdXNlciIse21ldGhvZDoiUEFUQ0giLGJvZHk6ZX0pfSxmZXRjaFVzZXJOb3RpZmljYXRpb25TZXR0aW5nczpmdW5jdGlvbigpe3JldHVybiBWYSgiL2FwaS91c2VyL25vdGlmaWNhdGlvbiIpfSx1cGRhdGVVc2VyTm90aWZpY2F0aW9uU2V0dGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL3VzZXIvbm90aWZpY2F0aW9uIix7bWV0aG9kOiJQQVRDSCIsYm9keTplfSl9LHVwZGF0ZVBob25lTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9hdXRoL3Bob25lIix7bWV0aG9kOiJQQVRDSCIsYm9keTp7cGhvbmU6ZX19KX0sdXBsb2FkQXZhdGFyOmZ1bmN0aW9uKGUpe2NvbnN0IGM9bmV3IEZvcm1EYXRhO3JldHVybiBjLmFwcGVuZCgiZmlsZSIsZSksVmEoIi9hcGkvdXNlci9hdmF0YXIiLHttZXRob2Q6IlBPU1QiLGJvZHk6Y30pfSxmZXRjaEltcGVyc29uYXRpb25DYW5kaWRhdGVzOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3VzZXJzIix7cXVlcnk6ZX0pfSxzdGFydEltcGVyc29uYXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL2F1dGgvaW1wZXJzb25hdGUvc3RhcnQiLHttZXRob2Q6IlBPU1QiLGJvZHk6e3VzZXJfaWQ6ZX19KX0sc3RvcEltcGVyc29uYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdG9wIix7bWV0aG9kOiJQT1NUIn0pfSxsb2dvdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvYXV0aC9sb2dvdXQiKX19fWZ1bmN0aW9uIHVzZU9yZ2FuaXphdGlvbkFwaSgpe3JldHVybntmZXRjaE9yZ2FuaXphdGlvbnM6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbnMiLHtxdWVyeTplfSl9LGNyZWF0ZU9yZ2FuaXphdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gVmEoIi9hcGkvb3JnYW5pemF0aW9ucyIse21ldGhvZDoiUE9TVCIsYm9keTplfSl9LGZldGNoT3JnYW5pemF0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbiIpfSx1cGRhdGVPcmdhbml6YXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbiIse21ldGhvZDoiUEFUQ0giLGJvZHk6ZX0pfSxzd2l0Y2hPcmdhbml6YXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbnMvc3dpdGNoIix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX0scmVmcmVzaFNlc3Npb246ZnVuY3Rpb24oKXtyZXR1cm4gVmEoIi9hcGkvc2Vzc2lvbi9yZWZyZXNoIix7bWV0aG9kOiJQT1NUIn0pfSxmZXRjaE1lbWJlcnM6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7cXVlcnk6ZX0pfSxhZGRNZW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7bWV0aG9kOiJQT1NUIixib2R5OmV9KX0sZmV0Y2hQZXJtaXNzaW9uczpmdW5jdGlvbigpe3JldHVybiBWYSgiL2FwaS9wZXJtaXNzaW9ucyIpfSx1cGRhdGVNZW1iZXJBYmlsaXRpZXM6ZnVuY3Rpb24oZSxjKXtyZXR1cm4gVmEoIi9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvOnVzZXJJZC9hYmlsaXRpZXMiLHttZXRob2Q6IlBBVENIIixib2R5OmMscXVlcnk6e3VzZXJJZDplfX0pfSxyZW1vdmVNZW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzLzp1c2VySWQiLHttZXRob2Q6IkRFTEVURSIscXVlcnk6e3VzZXJJZDplfX0pfSxmZXRjaEludml0YXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKCIvYXBpL29yZ2FuaXphdGlvbi9pbnZpdGF0aW9ucyIpfSxjcmVhdGVJbnZpdGF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfSxyZXZva2VJbnZpdGF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMvOmlkIix7bWV0aG9kOiJERUxFVEUiLHF1ZXJ5OntpZDplfX0pfSxmZXRjaEludml0YXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIFZhKCIvYXBpL2ludml0YXRpb25zLzp0b2tlbiIse3F1ZXJ5Ont0b2tlbjplfX0pfSxhY2NlcHRJbnZpdGF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9pbnZpdGF0aW9ucy86dG9rZW4vYWNjZXB0Iix7bWV0aG9kOiJQT1NUIixxdWVyeTp7dG9rZW46ZX19KX0sZmV0Y2hSb2xlczpmdW5jdGlvbigpe3JldHVybiBWYSgiL2FwaS9yb2xlcyIpfSxjcmVhdGVSb2xlOmZ1bmN0aW9uKGUpe3JldHVybiBWYSgiL2FwaS9yb2xlcyIse21ldGhvZDoiUE9TVCIsYm9keTplfSl9LHVwZGF0ZVJvbGU6ZnVuY3Rpb24oZSxjKXtyZXR1cm4gVmEoYC9hcGkvcm9sZXMvJHtlfWAse21ldGhvZDoiUEFUQ0giLGJvZHk6Y30pfSxkZWxldGVSb2xlOmZ1bmN0aW9uKGUpe3JldHVybiBWYShgL2FwaS9yb2xlcy8ke2V9YCx7bWV0aG9kOiJERUxFVEUifSl9LGFzc2lnbk1lbWJlclJvbGVzOmZ1bmN0aW9uKGUsYyl7cmV0dXJuIFZhKGAvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzLyR7ZX0vcm9sZXNgLHttZXRob2Q6IlBBVENIIixib2R5Ontyb2xlX2lkczpjfX0pfSxkZWxldGVBY2NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIFZhKCIvYXBpL2FjY291bnQiLHttZXRob2Q6IkRFTEVURSJ9KX19fWNvbnN0IHphPWRlZmluZVN0b3JlKCJhdXRoIiwoKT0+e2NvbnN0IGU9dXNlU3RhdGUoInVzZXIiLCgpPT5udWxsKSxjPXVzZUF1dGhBcGkoKSxkPXVzZU9yZ2FuaXphdGlvbkFwaSgpLGg9WW4uY29tcHV0ZWQoKCk9PmUudmFsdWU/LmltcGVyc29uYXRvcj8/bnVsbCksdj1Zbi5jb21wdXRlZCgoKT0+ISFoLnZhbHVlKSxiPVluLmNvbXB1dGVkKCgpPT5lLnZhbHVlPy5hY3RpdmVPcmdhbml6YXRpb25JZD8/bnVsbCk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hDdXJyZW50VXNlcigpe2NvbnN0IGQ9YXdhaXQgYy5mZXRjaEN1cnJlbnRVc2VyKCk7ZS52YWx1ZT1kfXJldHVybntjdXJyZW50VXNlcjplLGltcGVyc29uYXRvcjpoLGlzSW1wZXJzb25hdGluZzp2LGFjdGl2ZU9yZ2FuaXphdGlvbklkOmIsZmV0Y2hDdXJyZW50VXNlcjpmZXRjaEN1cnJlbnRVc2VyLHVwZGF0ZUN1cnJlbnRVc2VyOmFzeW5jIGZ1bmN0aW9uKGUpe2F3YWl0IGMudXBkYXRlQ3VycmVudFVzZXIoZSksYXdhaXQgZmV0Y2hDdXJyZW50VXNlcigpfSx1cGRhdGVBdmF0YXI6YXN5bmMgZnVuY3Rpb24oZCl7Y29uc3R7YXZhdGFyOmh9PWF3YWl0IGMudXBsb2FkQXZhdGFyKGQpO2UudmFsdWUmJihlLnZhbHVlPXsuLi5lLnZhbHVlLGF2YXRhcjpofSl9LGZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZmV0Y2hVc2VyTm90aWZpY2F0aW9uU2V0dGluZ3MoKX0sdXBkYXRlVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBjLnVwZGF0ZVVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyhlKX0sdXBkYXRlUGhvbmVOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGMudXBkYXRlUGhvbmVOdW1iZXIoZSl9LHN3aXRjaE9yZ2FuaXphdGlvbjphc3luYyBmdW5jdGlvbihjKXtjb25zdCBoPWF3YWl0IGQuc3dpdGNoT3JnYW5pemF0aW9uKHtvcmdhbml6YXRpb25faWQ6Y30pO3JldHVybiBlLnZhbHVlPWgsaH0scmVmcmVzaFNlc3Npb246YXN5bmMgZnVuY3Rpb24oKXtjb25zdCBjPWF3YWl0IGQucmVmcmVzaFNlc3Npb24oKTtyZXR1cm4gZS52YWx1ZT1jLGN9LHN0YXJ0SW1wZXJzb25hdGlvbjphc3luYyBmdW5jdGlvbihkKXtjb25zdCBoPWF3YWl0IGMuc3RhcnRJbXBlcnNvbmF0aW9uKGQpO3JldHVybiBlLnZhbHVlPWgsaH0sc3RvcEltcGVyc29uYXRpb246YXN5bmMgZnVuY3Rpb24oKXtjb25zdCBkPWF3YWl0IGMuc3RvcEltcGVyc29uYXRpb24oKTtyZXR1cm4gZS52YWx1ZT1kLGR9LGxvZ291dDphc3luYyBmdW5jdGlvbigpe2F3YWl0IGMubG9nb3V0KCksZS52YWx1ZT1udWxsfX19KSxxYT1kZWZpbmVOdXh0Um91dGVNaWRkbGV3YXJlKGFzeW5jIGU9PntsZXQgYyxkO2NvbnN0IGg9emEoKTtpZighaC5jdXJyZW50VXNlcil0cnl7W2MsZF09VygoKT0+aC5mZXRjaEN1cnJlbnRVc2VyKCkpLGF3YWl0IGMsZCgpfWNhdGNoe31jb25zdCB2PSEhaC5jdXJyZW50VXNlcixiPSEwPT09ZS5tZXRhLnB1YmxpY3x8ITA9PT1lLm1ldGEudW5hdXRoZW50aWNhdGVkT25seTtyZXR1cm4gdiYmZS5tZXRhLnVuYXV0aGVudGljYXRlZE9ubHk/bmF2aWdhdGVUbygiL2Rhc2hib2FyZCIpOnZ8fGI/dm9pZCAwOm5hdmlnYXRlVG8oIi9hdXRoL2xvZ2luIil9KTtmdW5jdGlvbiBwYXJzZUFiaWxpdHkoZSl7Y29uc3RbYz0iIixkPSIiLGhdPWUuc3BsaXQoIjoiKTtyZXR1cm57c3ViamVjdDpjLGFjdGlvbjpkLHNjb3BlOmh9fWNvbnN0IFVhPW5ldyBTZXQoWyJyZWFkIiwid3JpdGUiLCJkZWxldGUiXSk7ZnVuY3Rpb24gc2F0aXNmaWVzQWJpbGl0eShlLGMpe2NvbnN0e3N1YmplY3Q6ZCxhY3Rpb246aCxzY29wZTp2fT1wYXJzZUFiaWxpdHkoYyk7cmV0dXJuIGUuc29tZShlPT57Y29uc3R7c3ViamVjdDpjLGFjdGlvbjpiLHNjb3BlOnl9PXBhcnNlQWJpbGl0eShlKTtyZXR1cm4gYz09PWQmJighKCJtYW5hZ2UiIT09Ynx8eSE9PXZ8fCFVYS5oYXMoaCkpfHxiPT09aCYmeT09PXYpfSl9ZnVuY3Rpb24gcGFnZU1ldGFDYW5DaGVjayhlLGMpe3JldHVybiAwPT09Yy5sZW5ndGh8fGMuc29tZShjPT5mdW5jdGlvbihlLGMpe2NvbnN0e3N1YmplY3Q6ZCxhY3Rpb246aH09cGFyc2VBYmlsaXR5KGMpO3JldHVybiBlLnNvbWUoZT0+e2NvbnN0e3N1YmplY3Q6YyxhY3Rpb246dn09cGFyc2VBYmlsaXR5KGUpO3JldHVybiBjPT09ZCYmKCEoIm1hbmFnZSIhPT12fHwhVWEuaGFzKGgpKXx8dj09PWgpfSl9KGUsYykpfWNvbnN0IEhhPVtSYSxxYSxkZWZpbmVOdXh0Um91dGVNaWRkbGV3YXJlKGU9Pntjb25zdCBjPWUubWV0YS5jYW4/P1tdO2lmKDA9PT1jLmxlbmd0aClyZXR1cm47Y29uc3QgZD16YSgpO3JldHVybiBwYWdlTWV0YUNhbkNoZWNrKGQuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sYyk/dm9pZCAwOm5hdmlnYXRlVG8oIi9mb3JiaWRkZW4iKX0pLGRlZmluZU51eHRSb3V0ZU1pZGRsZXdhcmUoZT0+e30pXSxHYT17fSxXYT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJudXh0OnJvdXRlciIsZW5mb3JjZToicHJlIixhc3luYyBzZXR1cChlKXtsZXQgYyxkLGg9dXNlUnVudGltZUNvbmZpZygpLmFwcC5iYXNlVVJMO2NvbnN0IHY9SWEuaGlzdG9yeT8uKGgpPz9jcmVhdGVNZW1vcnlIaXN0b3J5KGgpLGI9SWEucm91dGVzPyhbYyxkXT1XKCgpPT5JYS5yb3V0ZXMoX2EpKSxjPWF3YWl0IGMsZCgpLGM/P19hKTpfYTtsZXQgeTtjb25zdCBFPWNyZWF0ZVJvdXRlcih7Li4uSWEsc2Nyb2xsQmVoYXZpb3I6KGUsYyxkKT0+e2lmKGMhPT1fbyl7aWYoSWEuc2Nyb2xsQmVoYXZpb3Ipe2lmKEUub3B0aW9ucy5zY3JvbGxCZWhhdmlvcj1JYS5zY3JvbGxCZWhhdmlvciwic2Nyb2xsUmVzdG9yYXRpb24iaW4odm9pZCAwKS5oaXN0b3J5KXtjb25zdCBlPUUuYmVmb3JlRWFjaCgoKT0+e2UoKSwodm9pZCAwKS5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uPSJtYW51YWwifSl9cmV0dXJuIElhLnNjcm9sbEJlaGF2aW9yKGUsX28seXx8ZCl9fWVsc2UgeT1kfSxoaXN0b3J5OnYscm91dGVzOmJ9KTtlLnZ1ZUFwcC51c2UoRSk7Y29uc3Qgaz1Zbi5zaGFsbG93UmVmKEUuY3VycmVudFJvdXRlLnZhbHVlKTtFLmFmdGVyRWFjaCgoZSxjKT0+e2sudmFsdWU9Y30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnZ1ZUFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywicHJldmlvdXNSb3V0ZSIse2dldDooKT0+ay52YWx1ZX0pO2NvbnN0IF89ZS5zc3JDb250ZXh0LnVybCxUPVluLnNoYWxsb3dSZWYoRS5jdXJyZW50Um91dGUudmFsdWUpLHN5bmNDdXJyZW50Um91dGU9KCk9PntULnZhbHVlPUUuY3VycmVudFJvdXRlLnZhbHVlfTtFLmFmdGVyRWFjaCgoZSxjKT0+e2UubWF0Y2hlZC5hdCgtMSk/LmNvbXBvbmVudHM/LmRlZmF1bHQ9PT1jLm1hdGNoZWQuYXQoLTEpPy5jb21wb25lbnRzPy5kZWZhdWx0JiZzeW5jQ3VycmVudFJvdXRlKCl9KTtjb25zdCBOPXtzeW5jOnN5bmNDdXJyZW50Um91dGV9O2Zvcihjb25zdCBlIGluIFQudmFsdWUpT2JqZWN0LmRlZmluZVByb3BlcnR5KE4sZSx7Z2V0OigpPT5ULnZhbHVlW2VdLGVudW1lcmFibGU6ITB9KTtlLl9yb3V0ZT1Zbi5zaGFsbG93UmVhY3RpdmUoTiksZS5fbWlkZGxld2FyZXx8PXtnbG9iYWw6W10sbmFtZWQ6e319O2NvbnN0IE89dXNlRXJyb3IoKTtlLnNzckNvbnRleHQ/LmlzbGFuZENvbnRleHR8fEUuYWZ0ZXJFYWNoKGFzeW5jKGMsZCxoKT0+e2RlbGV0ZSBlLl9wcm9jZXNzaW5nTWlkZGxld2FyZSxoJiZhd2FpdCBlLmNhbGxIb29rKCJwYWdlOmxvYWRpbmc6ZW5kIiksNCE9PWg/LnR5cGUmJmMucmVkaXJlY3RlZEZyb20mJmMuZnVsbFBhdGghPT1fJiZhd2FpdCBlLnJ1bldpdGhDb250ZXh0KCgpPT5uYXZpZ2F0ZVRvKGMuZnVsbFBhdGh8fCIvIikpfSk7dHJ5e1tjLGRdPVcoKCk9PkUucHVzaChfKSksYXdhaXQgYyxkKCksW2MsZF09VygoKT0+RS5pc1JlYWR5KCkpLGF3YWl0IGMsZCgpfWNhdGNoKGgpe1tjLGRdPVcoKCk9PmUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihoKSkpLGF3YWl0IGMsZCgpfWNvbnN0IFI9RS5jdXJyZW50Um91dGUudmFsdWU7aWYoc3luY0N1cnJlbnRSb3V0ZSgpLGUuc3NyQ29udGV4dD8uaXNsYW5kQ29udGV4dClyZXR1cm57cHJvdmlkZTp7cm91dGVyOkV9fTtjb25zdCBNPWUucGF5bG9hZC5zdGF0ZS5fbGF5b3V0O3JldHVybiBFLmJlZm9yZUVhY2goYXN5bmMoYyxkKT0+e2lmKGF3YWl0IGUuY2FsbEhvb2soInBhZ2U6bG9hZGluZzpzdGFydCIpLGMubWV0YT1Zbi5yZWFjdGl2ZShjLm1ldGEpLGUuaXNIeWRyYXRpbmcmJk0mJiFZbi5pc1JlYWRvbmx5KGMubWV0YS5sYXlvdXQpJiYoYy5tZXRhLmxheW91dD1NKSxlLl9wcm9jZXNzaW5nTWlkZGxld2FyZT0hMCwhZS5zc3JDb250ZXh0Py5pc2xhbmRDb250ZXh0KXtjb25zdCBoPW5ldyBTZXQoWy4uLkhhLC4uLmUuX21pZGRsZXdhcmUuZ2xvYmFsXSk7Zm9yKGNvbnN0IGUgb2YgYy5tYXRjaGVkKXtjb25zdCBjPWUubWV0YS5taWRkbGV3YXJlO2lmKGMpZm9yKGNvbnN0IGUgb2YgdG9BcnJheSQyKGMpKWguYWRkKGUpfWNvbnN0IHY9ZnVuY3Rpb24oZSl7Y29uc3QgYz0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnBhdGg7dHJ5e3JldHVybiB5YShjKX1jYXRjaChlKXtyZXR1cm57fX19KHtwYXRoOmMucGF0aH0pO2lmKHYuYXBwTWlkZGxld2FyZSlmb3IoY29uc3QgZSBpbiB2LmFwcE1pZGRsZXdhcmUpdi5hcHBNaWRkbGV3YXJlW2VdP2guYWRkKGUpOmguZGVsZXRlKGUpO2Zvcihjb25zdCB2IG9mIGgpe2NvbnN0IGg9InN0cmluZyI9PXR5cGVvZiB2P2UuX21pZGRsZXdhcmUubmFtZWRbdl18fGF3YWl0KEdhW3ZdPy4oKS50aGVuKGU9PmUuZGVmYXVsdHx8ZSkpOnY7aWYoIWgpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJvdXRlIG1pZGRsZXdhcmU6ICcke3Z9Jy5gKTt0cnl7MDtjb25zdCB2PWF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PmgoYyxkKSk7aWYoITE9PT12fHx2IGluc3RhbmNlb2YgRXJyb3Ipe2NvbnN0IGM9dnx8Y3JlYXRlRXJyb3Ioe3N0YXR1czo0MDQsc3RhdHVzVGV4dDpgUGFnZSBOb3QgRm91bmQ6ICR7X31gfSk7cmV0dXJuIGF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihjKSksITF9aWYoITA9PT12KWNvbnRpbnVlO2lmKCExPT09dilyZXR1cm4gdjtpZih2KXJldHVybiBpc051eHRFcnJvcih2KSYmdi5mYXRhbCYmYXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+c2hvd0Vycm9yKHYpKSx2fWNhdGNoKGMpe2NvbnN0IGQ9Y3JlYXRlRXJyb3IoYyk7cmV0dXJuIGQuZmF0YWwmJmF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihkKSksZH19fX0pLEUub25FcnJvcihhc3luYygpPT57ZGVsZXRlIGUuX3Byb2Nlc3NpbmdNaWRkbGV3YXJlLGF3YWl0IGUuY2FsbEhvb2soInBhZ2U6bG9hZGluZzplbmQiKX0pLEUuYWZ0ZXJFYWNoKGM9PntpZigwPT09Yy5tYXRjaGVkLmxlbmd0aCYmIU8udmFsdWUpcmV0dXJuIGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihjcmVhdGVFcnJvcih7c3RhdHVzOjQwNCxmYXRhbDohMSxzdGF0dXNUZXh0OmBQYWdlIG5vdCBmb3VuZDogJHtjLmZ1bGxQYXRofWAsZGF0YTp7cGF0aDpjLmZ1bGxQYXRofX0pKSl9KSxlLmhvb2tzLmhvb2tPbmNlKCJhcHA6Y3JlYXRlZCIsYXN5bmMoKT0+e3RyeXsibmFtZSJpbiBSJiYoUi5uYW1lPXZvaWQgMCksYXdhaXQgRS5yZXBsYWNlKHsuLi5SLGZvcmNlOiEwfSksRS5vcHRpb25zLnNjcm9sbEJlaGF2aW9yPUlhLnNjcm9sbEJlaGF2aW9yfWNhdGNoKGMpe2F3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PnNob3dFcnJvcihjKSl9fSkse3Byb3ZpZGU6e3JvdXRlcjpFfX19fSksWGE9W1siTnV4dEVycm9yIixlPT5pc051eHRFcnJvcihlKSYmZS50b0pTT04oKV0sWyJFbXB0eVNoYWxsb3dSZWYiLGU9PlluLmlzUmVmKGUpJiZZbi5pc1NoYWxsb3coZSkmJiFlLnZhbHVlJiYoImJpZ2ludCI9PXR5cGVvZiBlLnZhbHVlPyIwbiI6SlNPTi5zdHJpbmdpZnkoZS52YWx1ZSl8fCJfIildLFsiRW1wdHlSZWYiLGU9PlluLmlzUmVmKGUpJiYhZS52YWx1ZSYmKCJiaWdpbnQiPT10eXBlb2YgZS52YWx1ZT8iMG4iOkpTT04uc3RyaW5naWZ5KGUudmFsdWUpfHwiXyIpXSxbIlNoYWxsb3dSZWYiLGU9PlluLmlzUmVmKGUpJiZZbi5pc1NoYWxsb3coZSkmJmUudmFsdWVdLFsiU2hhbGxvd1JlYWN0aXZlIixlPT5Zbi5pc1JlYWN0aXZlKGUpJiZZbi5pc1NoYWxsb3coZSkmJlluLnRvUmF3KGUpXSxbIlJlZiIsZT0+WW4uaXNSZWYoZSkmJmUudmFsdWVdLFsiUmVhY3RpdmUiLGU9PlluLmlzUmVhY3RpdmUoZSkmJlluLnRvUmF3KGUpXV0sS2E9ZGVmaW5lTnV4dFBsdWdpbih7bmFtZToibnV4dDpyZXZpdmUtcGF5bG9hZDpzZXJ2ZXIiLHNldHVwKCl7Zm9yKGNvbnN0W2UsY11vZiBYYSlkZWZpbmVQYXlsb2FkUmVkdWNlcihlLGMpfX0pLEphPWRlZmluZU51eHRQbHVnaW4oe25hbWU6InBpbmlhIixzZXR1cChlKXtjb25zdCBjPWZ1bmN0aW9uKCl7Y29uc3QgZT1Zbi5lZmZlY3RTY29wZSghMCksYz1lLnJ1bigoKT0+WW4ucmVmKHt9KSk7bGV0IGQ9W10saD1bXTtjb25zdCB2PVluLm1hcmtSYXcoe2luc3RhbGwoZSl7c2V0QWN0aXZlUGluaWEodiksdi5fYT1lLGUucHJvdmlkZShkYSx2KSxlLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRwaW5pYT12LGguZm9yRWFjaChlPT5kLnB1c2goZSkpLGg9W119LHVzZShlKXtyZXR1cm4gdGhpcy5fYT9kLnB1c2goZSk6aC5wdXNoKGUpLHRoaXN9LF9wOmQsX2E6bnVsbCxfZTplLF9zOm5ldyBNYXAsc3RhdGU6Y30pO3JldHVybiB2fSgpO3JldHVybiBlLnZ1ZUFwcC51c2UoYyksc2V0QWN0aXZlUGluaWEoYyksZS5wYXlsb2FkJiZlLnBheWxvYWQucGluaWEmJihjLnN0YXRlLnZhbHVlPWUucGF5bG9hZC5waW5pYSkse3Byb3ZpZGU6e3BpbmlhOmN9fX0saG9va3M6eyJhcHA6cmVuZGVyZWQiKCl7Y29uc3QgZT11c2VOdXh0QXBwKCk7ZS5wYXlsb2FkLnBpbmlhPVluLnRvUmF3KGUuJHBpbmlhKS5zdGF0ZS52YWx1ZSxzZXRBY3RpdmVQaW5pYSh2b2lkIDApfX19KSxRYT0ic3lzdGVtIixZYT1kZWZpbmVOdXh0UGx1Z2luKGU9Pntjb25zdCBjPWUuc3NyQ29udGV4dD8uaXNsYW5kQ29udGV4dD9Zbi5yZWYoe30pOnVzZVN0YXRlKCJjb2xvci1tb2RlIiwoKT0+WW4ucmVhY3RpdmUoe3ByZWZlcmVuY2U6UWEsdmFsdWU6UWEsdW5rbm93bjohMCxmb3JjZWQ6ITF9KSkudmFsdWUsZD17fTt1c2VIZWFkKHtodG1sQXR0cnM6ZH0pLHVzZVJvdXRlcigpLmFmdGVyRWFjaChlPT57Y29uc3QgaD1lLm1ldGEuY29sb3JNb2RlO2gmJiJzeXN0ZW0iIT09aCYmKGMudmFsdWU9ZFsiZGF0YS1jb2xvci1tb2RlLWZvcmNlZCJdPWgsYy5mb3JjZWQ9ITApfSksZS5wcm92aWRlKCJjb2xvck1vZGUiLGMpfSksWmE9WW4uZGVmaW5lQXN5bmNDb21wb25lbnQoKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkVsKS50aGVuKGU9PmUuZGVmYXVsdHx8ZS5kZWZhdWx0fHxlKSksZWk9W1siSWNvbiIsWmFdXSx0aT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJudXh0Omdsb2JhbC1jb21wb25lbnRzIixzZXR1cChlKXtmb3IoY29uc3RbYyxkXW9mIGVpKWUudnVlQXBwLmNvbXBvbmVudChjLGQpLGUudnVlQXBwLmNvbXBvbmVudCgiTGF6eSIrYyxkKX19KSxuaT1kZWZpbmVOdXh0UGx1Z2luKCgpPT4oe3Byb3ZpZGU6e2NzcmZGZXRjaDpGLmNyZWF0ZSh7b25SZXF1ZXN0KHtvcHRpb25zOmV9KXtjb25zdHtjc3JmOmMsaGVhZGVyTmFtZTpkfT11c2VDc3JmKCk7ZS5oZWFkZXJzPW5ldyBIZWFkZXJzKGUuaGVhZGVyc3x8e30pLGUuaGVhZGVycy5hcHBlbmQoZCxjKX19KX19KSksb2k9bmV3IFJlZ0V4cCgvR29vZ2xlYm90XC98R29vZ2xlYm90LU1vYmlsZXxHb29nbGVib3QtSW1hZ2V8R29vZ2xlYm90LU5ld3N8R29vZ2xlYm90LVZpZGVvfEFkc0JvdC1Hb29nbGUoW14tXXwkKXxBZHNCb3QtR29vZ2xlLU1vYmlsZXxGZWVkZmV0Y2hlci1Hb29nbGV8TWVkaWFwYXJ0bmVycy1Hb29nbGV8TWVkaWFwYXJ0bmVycyBcKEdvb2dsZWJvdFwpfEFQSXMtR29vZ2xlfEdvb2dsZS1JbnNwZWN0aW9uVG9vbHxTdG9yZWJvdC1Hb29nbGV8R29vZ2xlT3RoZXJ8YmluZ2JvdHxTbHVycHxbd1ddZ2V0fExpbmtlZEluQm90fFB5dGhvbi11cmxsaWJ8cHl0aG9uLXJlcXVlc3RzfGFpb2h0dHB8aHR0cHh8bGlid3d3LXBlcmx8aHR0cHVuaXR8TnV0Y2h8R28taHR0cC1jbGllbnR8cGhwY3Jhd2x8bXNuYm90fGp5eG9ib3R8RkFTVC1XZWJDcmF3bGVyfEZBU1QgRW50ZXJwcmlzZSBDcmF3bGVyfEJJR0xPVFJPTnxUZW9tYXxjb252ZXJhfHNlZWtib3R8R2lnYWJvdHxHaWdhYmxhc3R8ZXhhYm90fGlhX2FyY2hpdmVyfEdpbmdlckNyYXdsZXJ8d2VibW9uIHxIVFRyYWNrfGdydWJcLm9yZ3xVc2luZU5vdXZlbGxlQ3Jhd2xlcnxhbnRpYm90fG5ldHJlc2VhcmNoc2VydmVyfHNwZWVkeXxmbHVmZnl8ZmluZGxpbmt8bXNyYm90fHBhbnNjaWVudHx5YWN5Ym90fEFJU2VhcmNoQm90fGlwcy1hZ2VudHx0YWdvb2JvdHxNSjEyYm90fHdvcmlvYm90fHlhbmdhfGJ1enpib3R8bWxib3R8eWFuZGV4XC5jb21cL2JvdHN8cHVyZWJvdHxMaW5ndWVlIEJvdHxDeWJlclBhdHJvbHx2b2lsYWJvdHxCYWlkdXNwaWRlcnxjaXRlc2Vlcnhib3R8c3Bib3R8dHdlbmdhYm90fHBvc3RyYW5rfFR1cm5pdGlufHNjcmliZGJvdHxwYWdlMnJzc3xzaXRlYm90fGxpbmtkZXh8QWRpZHhib3R8ZXpvb21zfGRvdGJvdHxNYWlsXC5SVV9Cb3R8ZGlzY29ib3R8aGVyaXRyaXh8ZmluZHRoYXRmaWxlfGV1cm9wYXJjaGl2ZVwub3JnfE5lcmRCeU5hdHVyZVwuQm90fChzaXN0cml4fFNJU1RSSVgpIFtjQ11yYXdsZXJ8QWhyZWZzKEJvdHxTaXRlQXVkaXQpfGZ1ZWxib3R8Q3J1bmNoQm90fEluZGVlZEJvdHxtYXBweWRhdGF8d29vYm90fFpvb21pbmZvQm90fFByaXZhY3lBd2FyZUJvdHxNdWx0aXZpZXdib3R8U1dJTUdCb3R8R3JvYmJvdHxlcmlnaHR8QXBlcmNpdGV8c2VtYW50aWNib3R8QWJvdW5kZXh8ZG9tYWluY3Jhd2xlcnx3YnNlYXJjaGJvdHxzdW1taWZ5fENDQm90fGVkaXN0ZXJib3R8U2V6bmFtQm90fGVjMmxpbmtmaW5kZXJ8Z3NsZmJvdHxhaUhpdEJvdHxpbnRlbGl1bV9ib3R8ZmFjZWJvb2tleHRlcm5hbGhpdHxZZXRpfFJldHJldm9QYWdlQW5hbHl6ZXJ8bGItc3BpZGVyfFNvZ291fGxzc2JvdHxjYXJlZXJib3R8d290Ym94fHdvY2JvdHxpY2hpcm98RHVja0R1Y2tCb3R8bHNzcm9ja2V0Y3Jhd2xlcnxkcnVwYWN0fHdlYmNvbXBhbnljcmF3bGVyfGFjb29uYm90fG9wZW5pbmRleHNwaWRlcnxnbmFtIGduYW0gc3BpZGVyfHdlYi1hcmNoaXZlLW5ldFwuY29tXC5ib3R8YmFja2xpbmtjcmF3bGVyfGNvY2NvY3xpbnRlZ3JvbWVkYnxjb250ZW50IGNyYXdsZXIgc3BpZGVyfHRvcGxpc3Rib3R8aXQybWVkaWEtZG9tYWluLWNyYXdsZXJ8aXAtd2ViLWNyYXdsZXJcLmNvbXxzaXRlZXhwbG9yZXJcLmluZm98ZWxpc2Fib3R8cHJveGltaWN8Y2hhbmdlZGV0ZWN0aW9ufGFyYWJvdHxXZVNFRTpTZWFyY2h8bmlraS1ib3R8Q3J5c3RhbFNlbWFudGljc0JvdHxyb2dlcmJvdHwzNjBTcGlkZXJ8cHNib3R8SW50ZXJmYXhTY2FuQm90fENDIE1ldGFkYXRhIFNjYXBlcnxnMDBnMWVcLm5ldHxHcmFwZXNob3RDcmF3bGVyfHVybGFwcGVuZGJvdHxicmFpbm9ib3R8ZnItY3Jhd2xlcnxiaW5sYXJ8U2ltcGxlQ3Jhd2xlcnxUd2l0dGVyYm90fGNYZW5zZWJvdHxzbXRib3R8Ym5mXC5mcl9ib3R8QTYtSW5kZXhlcnxBRG1hbnRYfEZhY2Vib3R8T3JhbmdlQm90XC98bWVtb3J5Ym90fEFkdkJvdHxNZWdhSW5kZXh8U2VtYW50aWNTY2hvbGFyQm90fGx0eDcxfG5lcmR5Ym90fHhvdmlib3R8QlViaU5HfFF3YW50aWZ5fGFyY2hpdmVcLm9yZ19ib3R8QXBwbGVib3R8VHdlZXRtZW1lQm90fGNyYXdsZXI0anxmaW5keGJvdHxTW2VFXVttTV1ydXNoQm90fHlvb3pCb3R8bGlwcGVyaGV5fFkhSnxEb21haW4gUmUtQW5pbWF0b3IgQm90fEFkZFRoaXN8U2NyZWFtaW5nIEZyb2cgU0VPIFNwaWRlcnxNZXRhVVJJfFNjcmFweXxMaXZlbGFwW2JCXW90fE9wZW5Ib3NlQm90fENhcHN1bGVDaGVja2VyfGNvbGxlY3Rpb25AaW5mZWd5XC5jb218SXN0ZWxsYUJvdHxEZXVTdVwvfGJldGFCb3R8Q2xpcXpib3RcL3xNb2plZWtCb3RcL3xuZXRFc3RhdGUgTkUgQ3Jhd2xlcnxTYWZlU2VhcmNoIG1pY3JvZGF0YSBjcmF3bGVyfEdsdXRlbiBGcmVlIENyYXdsZXJcL3xTb25pY3xTeXNvbW9zfFRyb3ZlfGRlYWRsaW5rY2hlY2tlcnxTbGFjay1JbWdQcm94eXxFbWJlZGx5fFJhbmtBY3RpdmVMaW5rQm90fGlza2FuaWV8U2FmZUROU0JvdHxTa3lwZVVyaVByZXZpZXd8VmVvb3pib3R8U2xhY2tib3R8cmVkZGl0Ym90fGRhdGFnbmlvbmJvdHxHb29nbGUtQWR3b3Jkcy1JbnN0YW50fGFkYmVhdF9ib3R8V2hhdHNBcHB8Y29udHhib3R8cGludGVyZXN0XC5jb21cL2JvdHxlbGVjdHJpY21vbmt8R2FybGlrQ3Jhd2xlcnxCaW5nUHJldmlld1wvfHZlYmlkb29ib3R8RmVtdG9zZWFyY2hCb3R8WWFob28gTGluayBQcmV2aWV3fE1ldGFKb2JCb3R8RG9tYWluU3RhdHNCb3R8bWluZFVwQm90fERhdW1cL3xKdWdlbmRzY2h1dHpwcm9ncmFtbS1DcmF3bGVyfFhlbnUgTGluayBTbGV1dGh8UGNvcmUtSFRUUHxtb2F0Ym90fEtvc21pb0JvdHxbcFBdaW5nZG9tfEFwcEluc2lnaHRzfFBoYW50b21KU3xHb3dpa2lib3R8UGlwbEJvdHxEaXNjb3JkYm90fFRlbGVncmFtQm90fEpldHNsaWRlfG5ld3NoYXJlY291bnRzfEphbWVzIEJPVHxCYXJrW3JSXW93bGVyfFRpbkV5ZXxTb2NpYWxSYW5rSU9Cb3R8dHJlbmRpY3Rpb25ib3R8T2NhcmluYWJvdHxlcGljYm90fFByaW1hbGJvdHxEdWNrRHVja0dvLUZhdmljb25zLUJvdHxHbm93aXROZXdzYm90fExlaWtpYm90fExpbmtBcmNoaXZlcnxZYUtcL3xQYXBlckxpQm90fERpZ2cgRGVlcGVyfGRjcmF3bHxTbmFja3Rvcnl8QW5kZXJzUGlua0JvdHxGeXJlYm90fEV2ZXJ5b25lU29jaWFsQm90fE1lZGlhdG9vbGtpdGJvdHxMdW1pbmF0b3Itcm9ib3RzfEV4dExpbmtzQm90fFN1cnZleUJvdHxOSU5HXC98b2todHRwfE51enplbHxvbWdpbGl8UG9ja2V0UGFyc2VyfFlpc291U3BpZGVyfHVtLUxOfFRvdXRpYW9TcGlkZXJ8TXVja1JhY2t8SmFtaWUncyBTcGlkZXJ8QUhDXC98TmV0Y3JhZnRTdXJ2ZXlBZ2VudHxMYXNlcmxpa2Vib3R8XkFwYWNoZS1IdHRwQ2xpZW50fEFwcEVuZ2luZS1Hb29nbGV8SmV0dHl8VXBmbG93fFRoaW5rbGFifFRyYWFja3JcLmNvbXxUd3VybHl8TWFzdG9kb258aHR0cF9nZXR8RG55ekJvdHxib3RpZnl8MDA3YWM5IENyYXdsZXJ8QmVobG9vbEJvdHxCcmFuZFZlcml0eXxjaGVja19odHRwfEJEQ2JvdHxadW1Cb3R8RVpJRHxJQ0MtQ3Jhd2xlcnxBcmNoaXZlQm90fF5MQ0MgfGZpbHRlcmRiXC5pc3NcLm5ldFwvY3Jhd2xlcnxCTFBfYmJvdHxCb21ib3JhQm90fEJ1Y2tcL3xDb21wYW55Ym9vay1DcmF3bGVyfEdlbmllb3xtYWdwaWUtY3Jhd2xlcnxNZWx0d2F0ZXJOZXdzfE1vcmVvdmVyfG5ld3NwYXBlclwvfFNjb3V0SmV0fChefCApc2VudHJ5XC98U3RvcnlnaXplQm90fFVwdGltZVJvYm90fE91dGNsaWNrc0JvdHxzZW9zY2FubmVyc3xIYXRlbmF8R29vZ2xlIFdlYiBQcmV2aWV3fE1hdWlCb3R8QWxwaGFCb3R8U0JMLUJPVHxJQVMgY3Jhd2xlcnxhZHNjYW5uZXJ8TmV0dmliZXN8YWNhcGJvdHxCYWlkdS1ZdW5HdWFuQ2V8Yml0bHlib3R8YmxvZ211cmFCb3R8Qm90XC5BcmFUdXJrYVwuY29tfGJvdC1wZ2VcLmNobG9vZVwuY29tfEJveGNhckJvdHxCVFdlYkNsaWVudHxDb250ZXh0QWQgQm90fERpZ2luY29yZSBib3R8RGlzcXVzfEZlZWRseXxGZXRjaFwvfEZldmVyfEZsYW1pbmdvX1NlYXJjaEVuZ2luZXxGbGlwYm9hcmRQcm94eXxnMnJlYWRlci1ib3R8RzIgV2ViIFNlcnZpY2VzfGltcmJvdHxLN01MV0NCb3R8S2Vtdmlib3R8TGFuZGF1LU1lZGlhLVNwaWRlcnxsaW5rYXBlZGlhYm90fHZrU2hhcmV8U2l0ZWltcHJvdmVcLmNvbXxCTEVYQm90XC98RGFyZUJvb3N0fFp1cGVybGlzdEJvdFwvfE1pbmlmbHV4XC98RmVlZHNwb3R8RGlmZmJvdFwvfFNFT2tpY2tzfHRyYWNlbXlmaWxlfE5pbWJvc3RyYXR1cy1Cb3R8emdyYWJ8UFItQ1lcLlJVfEFkc1R4dENyYXdsZXJ8RGF0YWZlZWR3YXRjaHxaYWJiaXh8VGFuZ2libGVlQm90fGdvb2dsZS14cmF3bGVyfGF4aW9zfEFtYXpvbiBDbG91ZEZyb250fFB1bHNlcG9pbnR8Q2xvdWRGbGFyZS1BbHdheXNPbmxpbmV8Q2xvdWRmbGFyZS1IZWFsdGhjaGVja3N8Q2xvdWRmbGFyZS1UcmFmZmljLU1hbmFnZXJ8Q2xvdWRGbGFyZS1QcmVmZXRjaHxDbG91ZGZsYXJlLVNTTERldGVjdG9yfGh0dHBzOlwvXC9kZXZlbG9wZXJzXC5jbG91ZGZsYXJlXC5jb21cL3NlY3VyaXR5LWNlbnRlclwvfEdvb2dsZS1TdHJ1Y3R1cmVkLURhdGEtVGVzdGluZy1Ub29sfFdvcmR1cEluZm9TZWFyY2h8V2ViRGF0YVN0YXRzfEh0dHBVcmxDb25uZWN0aW9ufFpvb21Cb3R8VmVsZW5QdWJsaWNXZWJDcmF3bGVyfE1vb2RsZUJvdHxqcGctbmV3c2JvdHxvdXRicmFpbnxXM0NfVmFsaWRhdG9yfFZhbGlkYXRvclwubnV8VzNDLWNoZWNrbGlua3xXM0MtbW9iaWxlT0t8VzNDX0kxOG4tQ2hlY2tlcnxGZWVkVmFsaWRhdG9yfFczQ19DU1NfVmFsaWRhdG9yfFczQ19Vbmljb3JufEdvb2dsZS1QaHlzaWNhbFdlYnxCbGFja2JvYXJkfElDQm90XC98QmF6UXV4fFR3aW5nbHl8Uml2dmF8RXhwZXJpYm90fGF3ZXNvbWVjcmF3bGVyfERhdGFwcm92aWRlclwuY29tfEdyb3VwSGlnaFwvfHRoZW9sZHJlYWRlclwuY29tfEFueUV2ZW50fFVwdGltZWJvdFwub3JnfE5tYXAgU2NyaXB0aW5nIEVuZ2luZXwyaXBcLnJ1fENsaWNrYWd5fENhbGlwZXJib3R8TUJDcmF3bGVyfG9ubGluZS13ZWJjZW8tYm90fEIyQiBCb3R8QWRkU2VhcmNoQm90fEdvb2dsZSBGYXZpY29ufEh1YlNwb3R8Q2hyb21lLUxpZ2h0aG91c2V8SGVhZGxlc3NDaHJvbWV8Q2hlY2tNYXJrTmV0d29ya1wvfHd3d1wudXB0aW1lXC5jb218U3RyZWFtbGluZTNCb3RcL3xzZXJwc3RhdGJvdFwvfE1peG5vZGVDYWNoZVwvfF5jdXJsfFNpbXBsZVNjcmFwZXJ8UlNTaW5nQm90fEpvb2JsZWJvdHxmZWRvcmFwbGFuZXR8RnJpZW5kaWNhfE5leHRDbG91ZHxUaW55IFRpbnkgUlNTfFJlZ2lvblN0dXR0Z2FydEJvdHxCeXRlc3BpZGVyfERhdGFueXplfEdvb2dsZS1TaXRlLVZlcmlmaWNhdGlvbnxUcmVuZHNtYXBSZXNvbHZlcnx0d2VldGVkdGltZXN8TlRFTlRib3R8R3dlbmV8U2ltcGxlUGllfFNlYXJjaEF0bGFzfFN1cGVyZmVlZHJ8ZmVlZGJvdHxVVC1Eb3JrYm90fEFtYXpvbmJvdHxTZXJlbmRlcHV0eUJvdHxFeWVvdGFib3R8b2ZmaWNlc3RvcmVib3R8TmV0aWNsZSBDcmF3bGVyfFN1cmRvdGx5Qm90fExpbmtpc0JvdHxBd2FyaW9TbWFydEJvdHxBd2FyaW9Sc3NCb3R8Unl0ZUJvdHxGcmVlV2ViTW9uaXRvcmluZyBTaXRlQ2hlY2tlcnxBc3BpZWdlbEJvdHxOQVZFUiBCbG9nIFJzc2JvdHx6ZW5iYWNrIGJvdHxTZW50aUJvdHxEb21haW5zIFByb2plY3RcL3xQYW5kYWx5dGljc3xWS1JvYm90fGJpZHN3aXRjaGJvdHx0aWdlcmJvdHxOSVhTdGF0c2JvdHxBdG9tIEZlZWQgUm9ib3R8W0NjXXVyZWJvdHxQYWdlUGVla2VyXC98VmlnaWxcL3xyc3Nib3RcL3xzdGFydG1lYm90XC98Sm9iYm9lcnNlQm90fHNlZXdpdGhraWRzfE5JTkpBIGJvdHxDdXRib3R8QnVibHVwQm90fEJyYW5kT05ib3R8UmlkZGVyQm90fFRhYm9vbGFib3R8RHViYm90Ym90fEZpbmRJVEFuc3dlcnNib3R8aW5mb29ib3R8UmVmaW5kYm90fEJsb2dUcmFmZmljXC9cZFwuXGQrIEZlZWQtRmV0Y2hlcnxTZW9iaWxpdHlCb3R8Q2luY3Jhd3xEcmFnb25ib3R8Vm9sdXVtRFNQLWNvbnRlbnQtYm90fEZyZXNoUlNTfEJpdEJvdHxeUEhQLUN1cmwtQ2xhc3N8R29vZ2xlLUNlcnRpZmljYXRlcy1CcmlkZ2V8Y2VudHVyeWJvdHxWaWJlcnxlXC52ZW50dXJlcyBJbnZlc3RtZW50IENyYXdsZXJ8ZXZjLWJhdGNofFBldGFsQm90fHZpcnVzdG90YWx8KF58IClQVFNUXC98bWluaWNyYXdsZXJ8Q29va2llYm90fHRyb3ZpdEJvdHxzZW9zdGFyXC5jb3xJb25DcmF3bHxVcHRpbWUtS3VtYXxTZWVrcG9ydHxGcmVzaHBpbmdCb3R8RmVlZGJpbnxDcml0ZW9Cb3R8U25hcCBVUkwgUHJldmlldyBTZXJ2aWNlfEJldHRlciBVcHRpbWUgQm90fFJ1eGl0U3ludGhldGljfEdvb2dsZS1SZWFkLUFsb3VkfFZhbHZlXC9TdGVhbXxPZGtsQm90XC98R1BUQm90fENoYXRHUFQtVXNlcnxPQUktU2VhcmNoQm90fFlhbmRleFJlbmRlclJlc291cmNlc0JvdFwvfExpZ2h0c3BlZWRTeXN0ZW1zQ3Jhd2xlcnxldi1jcmF3bGVyXC98Qml0U2lnaHRCb3RcL3x3b29yYW5rcmV2aWV3XC98R29vZ2xlLVNhZmV0eXxBd2FyaW9Cb3R8RGF0YUZvclNlb0JvdHxMaW5lc3BpZGVyfFdlbGxLbm93bkJvdHxBIFBhdGVudCBDcmF3bGVyfFN0cmFjdEJvdHxzZWFyY2hcLm1hcmdpbmFsaWFcLm51fFlvdUJvdHxOaWNlY3Jhd2xlcnxOZWV2YWJvdHxCcmlnaHRFZGdlIENyYXdsZXJ8U2l0ZUNoZWNrZXJCb3RDcmF3bGVyfFRvbWJhUHVibGljV2ViQ3Jhd2xlcnxDcmF3bHlQcm9qZWN0Q3Jhd2xlcnxLb21vZGlhQm90fEtTdGFuZEJvdHxDSVNQQSBXZWJjcmF3bGVyfE1UUm9ib3R8aHlzY29yZVwuaW98QWxleGFuZHJpYU9yZ0JvdHwyaXAgYm90fFllbGxvd2JyYW5kcHJvdGVjdGlvbmJvdHxTRU9saXplcnx2dWh1dkJvdHxJTkVUREVYLUJPVHxTeW5hcHNlfHQzdmVyc2lvbnNCb3R8ZGVlcG5vY3xDb2NvbHl6ZWJvdHxoeXBlc3RhdHxSZXZlcnNlRW5naW5lZXJpbmdCb3R8c2VtcGlcLnRlY2h8SWZyYW1lbHl8TWV0YUluc3BlY3Rvcnxub2RlLWZldGNofGw5ZXhwbG9yZXxweXRob24tb3BlbmdyYXBofE9wZW5HcmFwaENoZWNrfGRldmVsb3BlcnNcLmdvb2dsZVwuY29tXC9cK1wvd2ViXC9zbmlwcGV0fFNlbnV0b0JvdHxNYUNvQ3V8TmV3c0JsdXJ8aW5vcmVhZGVyfE5ldFN5c3RlbXNSZXNlYXJjaHxQYWdlVGhpbmd8V29yZFByZXNzXC98UGh4Qm90fEltYWdlc2lmdEJvdHxFeHBhbnNlfEludGVybmV0TWVhc3VyZW1lbnR8XkJXXC98R2VlZG9Cb3R8QXVkaXN0byBDcmF3bGVyfFBlcnBsZXhpdHlCb3RcL3xbY0NdbGF1ZGVbYkJdb3R8TW9uc2lkb2JvdHxHcm91cE1lQm90fFZlcmNlbGJvdHx2ZXJjZWwtc2NyZWVuc2hvdHxmYWNlYm9va2NhdGFsb2dcL3xtZXRhLWV4dGVybmFsYWRzXC98bWV0YS1leHRlcm5hbGFnZW50XC98bWV0YS1leHRlcm5hbGZldGNoZXJcL3xBY2FkZW1pY0JvdFJUVXxLZXliYXNlQm90fExlbW15fENvb2tpZUh1YlNjYW58SHlkcm96ZW5cLmlvfEhUVFAgQmFubmVyIERldGVjdGlvbnxTdW1tYWx5Qm90fE1pY3Jvc29mdFByZXZpZXdcL3xHZWVkb1Byb2R1Y3RTZWFyY2h8VGlrVG9rU3BpZGVyfE9uQ3Jhd2xcL3xzaW5kcmVzb3JodXNcL2dvdHxDZW5zeXNJbnNwZWN0XC98U0JJbnR1aXRpb25zQm90XC98c2l0ZWJ1bGJ8WWV4dEJvdFwvfERhdGFkb2dTeW50aGV0aWNzfEdvb2dsZS1BZHMtQ29udmVyc2lvbnMvKSxyaT0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxGQkFOfEZCQVZ8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxJbnN0YWdyYW18aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWluby9pLGFpPS8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzXC0pfGFpKGtvfHJuKXxhbChhdnxjYXxjbyl8YW1vaXxhbihleHxueXx5dyl8YXB0dXxhcihjaHxnbyl8YXModGV8dXMpfGF0dHd8YXUoZGl8XC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcLShufHUpfGM1NVwvfGNhcGl8Y2N3YXxjZG1cLXxjZWxsfGNodG18Y2xkY3xjbWRcLXxjbyhtcHxuZCl8Y3Jhd3xkYShpdHxsbHxuZyl8ZGJ0ZXxkY1wtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcLXxfKXxnMSB1fGc1NjB8Z2VuZXxnZlwtNXxnXC1tb3xnbyhcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGRcLShtfHB8dCl8aGVpXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1wtY3xodChjKFwtfCB8X3xhfGd8cHxzfHQpfHRwKXxodShhd3x0Yyl8aVwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFwtfFwvKXxpYnJvfGlkZWF8aWcwMXxpa29tfGltMWt8aW5ub3xpcGFxfGlyaXN8amEodHx2KWF8amJyb3xqZW11fGppZ3N8a2RkaXxrZWppfGtndCggfFwvKXxrbG9ufGtwdCB8a3djXC18a3lvKGN8ayl8bGUobm98eGkpfGxnKCBnfFwvKGt8bHx1KXw1MHw1NHxcLVthLXddKXxsaWJ3fGx5bnh8bTFcLXd8bTNnYXxtNTBcL3xtYSh0ZXx1aXx4byl8bWMoMDF8MjF8Y2EpfG1cLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFwtfCB8b3x2KXx6eil8bXQoNTB8cDF8diApfG13YnB8bXl3YXxuMTBbMC0yXXxuMjBbMi0zXXxuMzAoMHwyKXxuNTAoMHwyfDUpfG43KDAoMHwxKXwxMCl8bmUoKGN8bSlcLXxvbnx0Znx3Znx3Z3x3dCl8bm9rKDZ8aSl8bnpwaHxvMmltfG9wKHRpfHd2KXxvcmFufG93ZzF8cDgwMHxwYW4oYXxkfHQpfHBkeGd8cGcoMTN8XC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdFwtZ3xxYVwtYXxxYygwN3wxMnwyMXwzMnw2MHxcLVsyLTddfGlcLSl8cXRla3xyMzgwfHI2MDB8cmFrc3xyaW05fHJvKHZlfHpvKXxzNTVcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFwtfG9vfHBcLSl8c2RrXC98c2UoYyhcLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2hcLXxzaGFyfHNpZShcLXxtKXxza1wtMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoXC18dlwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXC18dGRnXC18dGVsKGl8bSl8dGltXC18dFwtbW98dG8ocGx8c2gpfHRzKDcwfG1cLXxtM3xtNSl8dHhcLTl8dXAoXC5ifGcxfHNpKXx1dHN0fHY0MDB8djc1MHx2ZXJpfHZpKHJnfHRlKXx2ayg0MHw1WzAtM118XC12KXx2bTQwfHZvZGF8dnVsY3x2eCg1Mnw1M3w2MHw2MXw3MHw4MHw4MXw4M3w4NXw5OCl8dzNjKFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXC18eW91cnx6ZXRvfHp0ZVwtL2ksaWk9LyhhbmRyb2lkfGJiXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8RkJBTnxGQkFWfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8SW5zdGFncmFtfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoNHw2KTB8c3ltYmlhbnx0cmVvfHVwXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm98YW5kcm9pZHxpcGFkfHBsYXlib29rfHNpbGsvaSxzaT0vMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1wtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XC0obnx1KXxjNTVcL3xjYXBpfGNjd2F8Y2RtXC18Y2VsbHxjaHRtfGNsZGN8Y21kXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcLTV8Z1wtbW98Z28oXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXC0obXxwfHQpfGhlaVwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcLWN8aHQoYyhcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcLXxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcLyl8a2xvbnxrcHQgfGt3Y1wtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcLyhrfGx8dSl8NTB8NTR8XC1bYS13XSl8bGlid3xseW54fG0xXC13fG0zZ2F8bTUwXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcLWd8cWFcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XC1bMi03XXxpXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcLXxvb3xwXC0pfHNka1wvfHNlKGMoXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXC18c2hhcnxzaWUoXC18bSl8c2tcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFwtfHZcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFwtfHRkZ1wtfHRlbChpfG0pfHRpbVwtfHRcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXC18bTN8bTUpfHR4XC05fHVwKFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1wtfHlvdXJ8emV0b3x6dGVcLS9pO2Z1bmN0aW9uIGlzQW5kcm9pZChlKXtyZXR1cm4vYW5kcm9pZC9pLnRlc3QoZSl9Y29uc3QgbGk9W3tuYW1lOiJTYW1zdW5nIixyZWdleDovU2Ftc3VuZ0Jyb3dzZXIvaX0se25hbWU6IkVkZ2UiLHJlZ2V4Oi9lZGcoPzpbZWFdfGlvcyk/XC8vaX0se25hbWU6IkZpcmVmb3giLHJlZ2V4Oi9maXJlZm94fGljZXdlYXNlbHxmeGlvcy9pfSx7bmFtZToiQ2hyb21lIixyZWdleDovY2hyb21lfGNyaW9zfGNybW8vaX0se25hbWU6IlNhZmFyaSIscmVnZXg6L3NhZmFyaXxhcHBsZXdlYmtpdC9pfV07ZnVuY3Rpb24gZ2VuZXJhdGVGbGFncyhlLGM9e30pe2xldCBkPSExLGg9ITEsdj0hMSxiPSExO2lmKCJBbWF6b24gQ2xvdWRGcm9udCI9PT1lKSJ0cnVlIj09PWNbImNsb3VkZnJvbnQtaXMtbW9iaWxlLXZpZXdlciJdJiYoZD0hMCxoPSEwKSwidHJ1ZSI9PT1jWyJjbG91ZGZyb250LWlzLXRhYmxldC12aWV3ZXIiXSYmKGQ9ITEsaD0hMCksInRydWUiPT09Y1siY2xvdWRmcm9udC1pcy1kZXNrdG9wLXZpZXdlciJdJiYoZD0hMSxoPSExKSwidHJ1ZSI9PT1jWyJjbG91ZGZyb250LWlzLWlvcy12aWV3ZXIiXSYmKHY9ITApLCJ0cnVlIj09PWNbImNsb3VkZnJvbnQtaXMtYW5kcm9pZC12aWV3ZXIiXSYmKGI9ITApO2Vsc2UgaWYoYyYmY1siY2YtZGV2aWNlLXR5cGUiXSlzd2l0Y2goY1siY2YtZGV2aWNlLXR5cGUiXSl7Y2FzZSJtb2JpbGUiOmQ9ITAsaD0hMDticmVhaztjYXNlInRhYmxldCI6ZD0hMSxoPSEwO2JyZWFrO2Nhc2UiZGVza3RvcCI6ZD0hMSxoPSExfWVsc2UgZD1mdW5jdGlvbihlKXtyZXR1cm4gcmkudGVzdChlKXx8YWkudGVzdChlLnNsaWNlKDAsNCkpfShlKSxoPWZ1bmN0aW9uKGUpe3JldHVybiBpaS50ZXN0KGUpfHxzaS50ZXN0KGUuc2xpY2UoMCw0KSl9KGUpLHY9ZnVuY3Rpb24oZSl7cmV0dXJuL2lQYWR8aVBob25lfGlQb2QvLnRlc3QoZSl9KGUpLGI9aXNBbmRyb2lkKGUpO2NvbnN0IHk9ZnVuY3Rpb24oZSl7cmV0dXJuL1dpbmRvd3MvLnRlc3QoZSl9KGUpLEU9ZnVuY3Rpb24oZSl7cmV0dXJuL01hYyBPUyBYLy50ZXN0KGUpfShlKSxrPWZ1bmN0aW9uKGUpe3JldHVybi9MaW51eC9pLnRlc3QoZSkmJiFpc0FuZHJvaWQoZSl9KGUpLF89ZnVuY3Rpb24oZSl7Zm9yKGNvbnN0IGMgb2YgbGkpaWYoYy5yZWdleC50ZXN0KGUpKXJldHVybiBjLm5hbWU7cmV0dXJuIiJ9KGUpO3JldHVybnt1c2VyQWdlbnQ6ZSxpc01vYmlsZTpkLGlzTW9iaWxlT3JUYWJsZXQ6aCxpc1RhYmxldDohZCYmaCxpc0Rlc2t0b3A6IWgsaXNJb3M6dixpc0FuZHJvaWQ6Yixpc1dpbmRvd3M6eSxpc0xpbnV4OmssaXNNYWNPUzpFLGlzQXBwbGU6RXx8dixpc0Rlc2t0b3BPclRhYmxldDohZCxpc1NhZmFyaToiU2FmYXJpIj09PV8saXNGaXJlZm94OiJGaXJlZm94Ij09PV8saXNFZGdlOiJFZGdlIj09PV8saXNDaHJvbWU6IkNocm9tZSI9PT1fLGlzU2Ftc3VuZzoiU2Ftc3VuZyI9PT1fLGlzQ3Jhd2xlcjpvaS50ZXN0KGUpfX1jb25zdCBjaT1kZWZpbmVOdXh0UGx1Z2luKCgpPT57Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkucHVibGljLmRldmljZS5kZWZhdWx0VXNlckFnZW50O2xldCBjO3tjb25zdCBkPXVzZVJlcXVlc3RIZWFkZXJzKCksaD1kWyJ1c2VyLWFnZW50Il18fGU7Yz1Zbi5yZWFjdGl2ZShnZW5lcmF0ZUZsYWdzKGgsZCkpfXJldHVybntwcm92aWRlOntkZXZpY2U6Y319fSksdWk9WzUwLDEwMCwyMDAsMzAwLDQwMCw1MDAsNjAwLDcwMCw4MDAsOTAwLDk1MF07ZnVuY3Rpb24gZ2VuZXJhdGVTaGFkZXMoZSxjLGQpe2NvbnN0IGg9ZD9gJHtkfS1gOiIiO3JldHVybmAke3VpLm1hcChkPT5gLS11aS1jb2xvci0ke2V9LSR7ZH06IHZhcigtLSR7aH1jb2xvci0keyJuZXV0cmFsIj09PWM/Im9sZC1uZXV0cmFsIjpjfS0ke2R9LCAke2Z1bmN0aW9uKGUsYyl7cmV0dXJuIGUgaW4gcW8mJiJvYmplY3QiPT10eXBlb2YgcW9bZV0mJmMgaW4gcW9bZV0/cW9bZV1bY106IiJ9KGMsZCl9KTtgKS5qb2luKCJcbiAgIil9YH1mdW5jdGlvbiBnZW5lcmF0ZUNvbG9yKGUsYyl7cmV0dXJuYC0tdWktJHtlfTogdmFyKC0tdWktY29sb3ItJHtlfS0ke2N9KTtgfWNvbnN0IGRpPWRlZmluZU51eHRQbHVnaW4oKCk9Pntjb25zdCBlPXVzZUFwcENvbmZpZygpO3VzZU51eHRBcHAoKTtjb25zdCBjPVluLmNvbXB1dGVkKCgpPT57Y29uc3R7bmV1dHJhbDpjLC4uLmR9PWUudWkuY29sb3JzLGg9ZS51aS5wcmVmaXg7cmV0dXJuYEBsYXllciB0aGVtZSB7XG4gIDpyb290LCA6aG9zdCB7XG4gICR7T2JqZWN0LmVudHJpZXMoZS51aS5jb2xvcnMpLm1hcCgoW2UsY10pPT5nZW5lcmF0ZVNoYWRlcyhlLGMsaCkpLmpvaW4oIlxuICAiKX1cbiAgfVxuICA6cm9vdCwgOmhvc3QsIC5saWdodCB7XG4gICR7T2JqZWN0LmtleXMoZCkubWFwKGU9PmdlbmVyYXRlQ29sb3IoZSw1MDApKS5qb2luKCJcbiAgIil9XG4gIH1cbiAgLmRhcmsge1xuICAke09iamVjdC5rZXlzKGQpLm1hcChlPT5nZW5lcmF0ZUNvbG9yKGUsNDAwKSkuam9pbigiXG4gICIpfVxuICB9XG59YH0pO3VzZUhlYWQoe3N0eWxlOlt7aW5uZXJIVE1MOigpPT5jLnZhbHVlLHRhZ1ByaW9yaXR5OiJjcml0aWNhbCIsaWQ6Im51eHQtdWktY29sb3JzIn1dfSl9KSxwaT0vXlthLXowLTldKygtW2EtejAtOV0rKSokLyxzdHJpbmdUb0ljb249KGUsYyxkLGg9IiIpPT57Y29uc3Qgdj1lLnNwbGl0KCI6Iik7aWYoIkAiPT09ZS5zbGljZSgwLDEpKXtpZih2Lmxlbmd0aDwyfHx2Lmxlbmd0aD4zKXJldHVybiBudWxsO2g9di5zaGlmdCgpLnNsaWNlKDEpfWlmKHYubGVuZ3RoPjN8fCF2Lmxlbmd0aClyZXR1cm4gbnVsbDtpZih2Lmxlbmd0aD4xKXtjb25zdCBlPXYucG9wKCksZD12LnBvcCgpLGI9e3Byb3ZpZGVyOnYubGVuZ3RoPjA/dlswXTpoLHByZWZpeDpkLG5hbWU6ZX07cmV0dXJuIGMmJiF2YWxpZGF0ZUljb25OYW1lKGIpP251bGw6Yn1jb25zdCBiPXZbMF0seT1iLnNwbGl0KCItIik7aWYoeS5sZW5ndGg+MSl7Y29uc3QgZT17cHJvdmlkZXI6aCxwcmVmaXg6eS5zaGlmdCgpLG5hbWU6eS5qb2luKCItIil9O3JldHVybiBjJiYhdmFsaWRhdGVJY29uTmFtZShlKT9udWxsOmV9aWYoZCYmIiI9PT1oKXtjb25zdCBlPXtwcm92aWRlcjpoLHByZWZpeDoiIixuYW1lOmJ9O3JldHVybiBjJiYhdmFsaWRhdGVJY29uTmFtZShlLGQpP251bGw6ZX1yZXR1cm4gbnVsbH0sdmFsaWRhdGVJY29uTmFtZT0oZSxjKT0+ISFlJiYhKCEoYyYmIiI9PT1lLnByZWZpeHx8ZS5wcmVmaXgpfHwhZS5uYW1lKSxmaT1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksbWk9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxoaT1PYmplY3QuZnJlZXplKHsuLi5maSwuLi5taX0pLGdpPU9iamVjdC5mcmVlemUoey4uLmhpLGJvZHk6IiIsaGlkZGVuOiExfSk7ZnVuY3Rpb24gbWVyZ2VJY29uRGF0YShlLGMpe2NvbnN0IGQ9ZnVuY3Rpb24oZSxjKXtjb25zdCBkPXt9OyFlLmhGbGlwIT0hYy5oRmxpcCYmKGQuaEZsaXA9ITApLCFlLnZGbGlwIT0hYy52RmxpcCYmKGQudkZsaXA9ITApO2NvbnN0IGg9KChlLnJvdGF0ZXx8MCkrKGMucm90YXRlfHwwKSklNDtyZXR1cm4gaCYmKGQucm90YXRlPWgpLGR9KGUsYyk7Zm9yKGNvbnN0IGggaW4gZ2kpaCBpbiBtaT9oIGluIGUmJiEoaCBpbiBkKSYmKGRbaF09bWlbaF0pOmggaW4gYz9kW2hdPWNbaF06aCBpbiBlJiYoZFtoXT1lW2hdKTtyZXR1cm4gZH1mdW5jdGlvbiBpbnRlcm5hbEdldEljb25EYXRhKGUsYyxkKXtjb25zdCBoPWUuaWNvbnMsdj1lLmFsaWFzZXN8fE9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGI9e307ZnVuY3Rpb24gcGFyc2UoZSl7Yj1tZXJnZUljb25EYXRhKGhbZV18fHZbZV0sYil9cmV0dXJuIHBhcnNlKGMpLGQuZm9yRWFjaChwYXJzZSksbWVyZ2VJY29uRGF0YShlLGIpfWZ1bmN0aW9uIHBhcnNlSWNvblNldChlLGMpe2NvbnN0IGQ9W107aWYoIm9iamVjdCIhPXR5cGVvZiBlfHwib2JqZWN0IiE9dHlwZW9mIGUuaWNvbnMpcmV0dXJuIGQ7ZS5ub3RfZm91bmQgaW5zdGFuY2VvZiBBcnJheSYmZS5ub3RfZm91bmQuZm9yRWFjaChlPT57YyhlLG51bGwpLGQucHVzaChlKX0pO2NvbnN0IGg9ZnVuY3Rpb24oZSl7Y29uc3QgYz1lLmljb25zLGQ9ZS5hbGlhc2VzfHxPYmplY3QuY3JlYXRlKG51bGwpLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gT2JqZWN0LmtleXMoYykuY29uY2F0KE9iamVjdC5rZXlzKGQpKS5mb3JFYWNoKGZ1bmN0aW9uIHJlc29sdmUoZSl7aWYoY1tlXSlyZXR1cm4gaFtlXT1bXTtpZighKGUgaW4gaCkpe2hbZV09bnVsbDtjb25zdCBjPWRbZV0mJmRbZV0ucGFyZW50LHY9YyYmcmVzb2x2ZShjKTt2JiYoaFtlXT1bY10uY29uY2F0KHYpKX1yZXR1cm4gaFtlXX0pLGh9KGUpO2Zvcihjb25zdCB2IGluIGgpe2NvbnN0IGI9aFt2XTtiJiYoYyh2LGludGVybmFsR2V0SWNvbkRhdGEoZSx2LGIpKSxkLnB1c2godikpfXJldHVybiBkfWNvbnN0IHZpPXtwcm92aWRlcjoiIixhbGlhc2VzOnt9LG5vdF9mb3VuZDp7fSwuLi5maX07ZnVuY3Rpb24gY2hlY2tPcHRpb25hbFByb3BzKGUsYyl7Zm9yKGNvbnN0IGQgaW4gYylpZihkIGluIGUmJnR5cGVvZiBlW2RdIT10eXBlb2YgY1tkXSlyZXR1cm4hMTtyZXR1cm4hMH1jb25zdCBiaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldFN0b3JhZ2UoZSxjKXtjb25zdCBkPWJpW2VdfHwoYmlbZV09T2JqZWN0LmNyZWF0ZShudWxsKSk7cmV0dXJuIGRbY118fChkW2NdPWZ1bmN0aW9uKGUsYyl7cmV0dXJue3Byb3ZpZGVyOmUscHJlZml4OmMsaWNvbnM6T2JqZWN0LmNyZWF0ZShudWxsKSxtaXNzaW5nOm5ldyBTZXR9fShlLGMpKX1mdW5jdGlvbiBhZGRJY29uU2V0KGUsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIG51bGw7Y29uc3QgYz1lO2lmKCJzdHJpbmciIT10eXBlb2YgYy5wcmVmaXh8fCFlLmljb25zfHwib2JqZWN0IiE9dHlwZW9mIGUuaWNvbnMpcmV0dXJuIG51bGw7aWYoIWNoZWNrT3B0aW9uYWxQcm9wcyhlLHZpKSlyZXR1cm4gbnVsbDtjb25zdCBkPWMuaWNvbnM7Zm9yKGNvbnN0IGUgaW4gZCl7Y29uc3QgYz1kW2VdO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGMuYm9keXx8IWNoZWNrT3B0aW9uYWxQcm9wcyhjLGdpKSlyZXR1cm4gbnVsbH1jb25zdCBoPWMuYWxpYXNlc3x8T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgZSBpbiBoKXtjb25zdCBjPWhbZV0sdj1jLnBhcmVudDtpZighZXx8InN0cmluZyIhPXR5cGVvZiB2fHwhZFt2XSYmIWhbdl18fCFjaGVja09wdGlvbmFsUHJvcHMoYyxnaSkpcmV0dXJuIG51bGx9cmV0dXJuIGN9KGMpP3BhcnNlSWNvblNldChjLChjLGQpPT57ZD9lLmljb25zW2NdPWQ6ZS5taXNzaW5nLmFkZChjKX0pOltdfWxldCB5aT0hMTtmdW5jdGlvbiBhbGxvd1NpbXBsZU5hbWVzKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGUmJih5aT1lKSx5aX1mdW5jdGlvbiBnZXRJY29uRGF0YShlKXtjb25zdCBjPSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0ljb24oZSwhMCx5aSk6ZTtpZihjKXtjb25zdCBlPWdldFN0b3JhZ2UoYy5wcm92aWRlcixjLnByZWZpeCksZD1jLm5hbWU7cmV0dXJuIGUuaWNvbnNbZF18fChlLm1pc3NpbmcuaGFzKGQpP251bGw6dm9pZCAwKX19ZnVuY3Rpb24gZ2V0SWNvbihlKXtjb25zdCBjPWdldEljb25EYXRhKGUpO3JldHVybiBjP3suLi5oaSwuLi5jfTpjfWNvbnN0IHhpPU9iamVjdC5mcmVlemUoe3dpZHRoOm51bGwsaGVpZ2h0Om51bGx9KSxTaT1PYmplY3QuZnJlZXplKHsuLi54aSwuLi5taX0pLEVpPS8oLT9bMC05Ll0qWzAtOV0rWzAtOS5dKikvZyx3aT0vXi0/WzAtOS5dKlswLTldK1swLTkuXSokL2c7ZnVuY3Rpb24gY2FsY3VsYXRlU2l6ZSQxKGUsYyxkKXtpZigxPT09YylyZXR1cm4gZTtpZihkPWR8fDEwMCwibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIE1hdGguY2VpbChlKmMqZCkvZDtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7Y29uc3QgaD1lLnNwbGl0KEVpKTtpZihudWxsPT09aHx8IWgubGVuZ3RoKXJldHVybiBlO2NvbnN0IHY9W107bGV0IGI9aC5zaGlmdCgpLHk9d2kudGVzdChiKTtmb3IoOzspe2lmKHkpe2NvbnN0IGU9cGFyc2VGbG9hdChiKTtpc05hTihlKT92LnB1c2goYik6di5wdXNoKE1hdGguY2VpbChlKmMqZCkvZCl9ZWxzZSB2LnB1c2goYik7aWYoYj1oLnNoaWZ0KCksdm9pZCAwPT09YilyZXR1cm4gdi5qb2luKCIiKTt5PSF5fX1jb25zdCBraT0vXHNpZD0iKFxTKykiL2csQ2k9Ikljb25pZnlJZCIrRGF0ZS5ub3coKS50b1N0cmluZygxNikrKDE2Nzc3MjE2Kk1hdGgucmFuZG9tKCl8MCkudG9TdHJpbmcoMTYpO2xldCBfaT0wO2NvbnN0IFRpPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gc2V0QVBJTW9kdWxlKGUsYyl7VGlbZV09Y31mdW5jdGlvbiBnZXRBUElNb2R1bGUoZSl7cmV0dXJuIFRpW2VdfHxUaVsiIl19ZnVuY3Rpb24gY3JlYXRlQVBJQ29uZmlnKGUpe2xldCBjO2lmKCJzdHJpbmciPT10eXBlb2YgZS5yZXNvdXJjZXMpYz1bZS5yZXNvdXJjZXNdO2Vsc2UgaWYoYz1lLnJlc291cmNlcywhKGMgaW5zdGFuY2VvZiBBcnJheSYmYy5sZW5ndGgpKXJldHVybiBudWxsO3JldHVybntyZXNvdXJjZXM6YyxwYXRoOmUucGF0aHx8Ii8iLG1heFVSTDplLm1heFVSTHx8NTAwLHJvdGF0ZTplLnJvdGF0ZXx8NzUwLHRpbWVvdXQ6ZS50aW1lb3V0fHw1ZTMscmFuZG9tOiEwPT09ZS5yYW5kb20saW5kZXg6ZS5pbmRleHx8MCxkYXRhQWZ0ZXJUaW1lb3V0OiExIT09ZS5kYXRhQWZ0ZXJUaW1lb3V0fX1jb25zdCBOaT1PYmplY3QuY3JlYXRlKG51bGwpLEFpPVsiaHR0cHM6Ly9hcGkuc2ltcGxlc3ZnLmNvbSIsImh0dHBzOi8vYXBpLnVuaXN2Zy5jb20iXSxPaT1bXTtmb3IoO0FpLmxlbmd0aD4wOykxPT09QWkubGVuZ3RofHxNYXRoLnJhbmRvbSgpPi41P09pLnB1c2goQWkuc2hpZnQoKSk6T2kucHVzaChBaS5wb3AoKSk7ZnVuY3Rpb24gZ2V0QVBJQ29uZmlnKGUpe3JldHVybiBOaVtlXX1OaVsiIl09Y3JlYXRlQVBJQ29uZmlnKHtyZXNvdXJjZXM6WyJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbiJdLmNvbmNhdChPaSl9KTtsZXQgSWk9KCgpPT57bGV0IGU7dHJ5e2lmKGU9ZmV0Y2gsImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGV9Y2F0Y2goZSl7fX0pKCk7Y29uc3QgUmk9e3ByZXBhcmU6KGUsYyxkKT0+e2NvbnN0IGg9W10sdj1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9Z2V0QVBJQ29uZmlnKGUpO2lmKCFkKXJldHVybiAwO2xldCBoO2lmKGQubWF4VVJMKXtsZXQgZT0wO2QucmVzb3VyY2VzLmZvckVhY2goYz0+e2NvbnN0IGQ9YztlPU1hdGgubWF4KGUsZC5sZW5ndGgpfSk7Y29uc3Qgdj1jKyIuanNvbj9pY29ucz0iO2g9ZC5tYXhVUkwtZS1kLnBhdGgubGVuZ3RoLXYubGVuZ3RofWVsc2UgaD0wO3JldHVybiBofShlLGMpLGI9Imljb25zIjtsZXQgeT17dHlwZTpiLHByb3ZpZGVyOmUscHJlZml4OmMsaWNvbnM6W119LEU9MDtyZXR1cm4gZC5mb3JFYWNoKChkLGspPT57RSs9ZC5sZW5ndGgrMSxFPj12JiZrPjAmJihoLnB1c2goeSkseT17dHlwZTpiLHByb3ZpZGVyOmUscHJlZml4OmMsaWNvbnM6W119LEU9ZC5sZW5ndGgpLHkuaWNvbnMucHVzaChkKX0pLGgucHVzaCh5KSxofSxzZW5kOihlLGMsZCk9PntpZighSWkpcmV0dXJuIHZvaWQgZCgiYWJvcnQiLDQyNCk7bGV0IGg9ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtjb25zdCBjPWdldEFQSUNvbmZpZyhlKTtpZihjKXJldHVybiBjLnBhdGh9cmV0dXJuIi8ifShjLnByb3ZpZGVyKTtzd2l0Y2goYy50eXBlKXtjYXNlImljb25zIjp7Y29uc3QgZT1jLnByZWZpeCxkPWMuaWNvbnMuam9pbigiLCIpO2grPWUrIi5qc29uPyIrbmV3IFVSTFNlYXJjaFBhcmFtcyh7aWNvbnM6ZH0pLnRvU3RyaW5nKCk7YnJlYWt9Y2FzZSJjdXN0b20iOntjb25zdCBlPWMudXJpO2grPSIvIj09PWUuc2xpY2UoMCwxKT9lLnNsaWNlKDEpOmU7YnJlYWt9ZGVmYXVsdDpyZXR1cm4gdm9pZCBkKCJhYm9ydCIsNDAwKX1sZXQgdj01MDM7SWkoZStoKS50aGVuKGU9Pntjb25zdCBjPWUuc3RhdHVzO2lmKDIwMD09PWMpcmV0dXJuIHY9NTAxLGUuanNvbigpO3NldFRpbWVvdXQoKCk9PntkKGZ1bmN0aW9uKGUpe3JldHVybiA0MDQ9PT1lfShjKT8iYWJvcnQiOiJuZXh0IixjKX0pfSkudGhlbihlPT57Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9zZXRUaW1lb3V0KCgpPT57ZCgic3VjY2VzcyIsZSl9KTpzZXRUaW1lb3V0KCgpPT57NDA0PT09ZT9kKCJhYm9ydCIsZSk6ZCgibmV4dCIsdil9KX0pLmNhdGNoKCgpPT57ZCgibmV4dCIsdil9KX19O2Z1bmN0aW9uIHJlbW92ZUNhbGxiYWNrKGUsYyl7ZS5mb3JFYWNoKGU9Pntjb25zdCBkPWUubG9hZGVyQ2FsbGJhY2tzO2QmJihlLmxvYWRlckNhbGxiYWNrcz1kLmZpbHRlcihlPT5lLmlkIT09YykpfSl9bGV0IFBpPTA7dmFyIE1pPXtyZXNvdXJjZXM6W10saW5kZXg6MCx0aW1lb3V0OjJlMyxyb3RhdGU6NzUwLHJhbmRvbTohMSxkYXRhQWZ0ZXJUaW1lb3V0OiExfTtmdW5jdGlvbiBzZW5kUXVlcnkoZSxjLGQsaCl7Y29uc3Qgdj1lLnJlc291cmNlcy5sZW5ndGgsYj1lLnJhbmRvbT9NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqdik6ZS5pbmRleDtsZXQgeTtpZihlLnJhbmRvbSl7bGV0IGM9ZS5yZXNvdXJjZXMuc2xpY2UoMCk7Zm9yKHk9W107Yy5sZW5ndGg+MTspe2NvbnN0IGU9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmMubGVuZ3RoKTt5LnB1c2goY1tlXSksYz1jLnNsaWNlKDAsZSkuY29uY2F0KGMuc2xpY2UoZSsxKSl9eT15LmNvbmNhdChjKX1lbHNlIHk9ZS5yZXNvdXJjZXMuc2xpY2UoYikuY29uY2F0KGUucmVzb3VyY2VzLnNsaWNlKDAsYikpO2NvbnN0IEU9RGF0ZS5ub3coKTtsZXQgayxfPSJwZW5kaW5nIixUPTAsTj1udWxsLE89W10sUj1bXTtmdW5jdGlvbiByZXNldFRpbWVyKCl7TiYmKGNsZWFyVGltZW91dChOKSxOPW51bGwpfWZ1bmN0aW9uIGFib3J0KCl7InBlbmRpbmciPT09XyYmKF89ImFib3J0ZWQiKSxyZXNldFRpbWVyKCksTy5mb3JFYWNoKGU9PnsicGVuZGluZyI9PT1lLnN0YXR1cyYmKGUuc3RhdHVzPSJhYm9ydGVkIil9KSxPPVtdfWZ1bmN0aW9uIHN1YnNjcmliZShlLGMpe2MmJihSPVtdKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmUi5wdXNoKGUpfWZ1bmN0aW9uIGZhaWxRdWVyeSgpe189ImZhaWxlZCIsUi5mb3JFYWNoKGU9PntlKHZvaWQgMCxrKX0pfWZ1bmN0aW9uIGNsZWFyUXVldWUoKXtPLmZvckVhY2goZT0+eyJwZW5kaW5nIj09PWUuc3RhdHVzJiYoZS5zdGF0dXM9ImFib3J0ZWQiKX0pLE89W119ZnVuY3Rpb24gZXhlY05leHQoKXtpZigicGVuZGluZyIhPT1fKXJldHVybjtyZXNldFRpbWVyKCk7Y29uc3QgaD15LnNoaWZ0KCk7aWYodm9pZCAwPT09aClyZXR1cm4gTy5sZW5ndGg/dm9pZChOPXNldFRpbWVvdXQoKCk9PntyZXNldFRpbWVyKCksInBlbmRpbmciPT09XyYmKGNsZWFyUXVldWUoKSxmYWlsUXVlcnkoKSl9LGUudGltZW91dCkpOnZvaWQgZmFpbFF1ZXJ5KCk7Y29uc3Qgdj17c3RhdHVzOiJwZW5kaW5nIixyZXNvdXJjZTpoLGNhbGxiYWNrOihjLGQpPT57IWZ1bmN0aW9uKGMsZCxoKXtjb25zdCB2PSJzdWNjZXNzIiE9PWQ7c3dpdGNoKE89Ty5maWx0ZXIoZT0+ZSE9PWMpLF8pe2Nhc2UicGVuZGluZyI6YnJlYWs7Y2FzZSJmYWlsZWQiOmlmKHZ8fCFlLmRhdGFBZnRlclRpbWVvdXQpcmV0dXJuO2JyZWFrO2RlZmF1bHQ6cmV0dXJufWlmKCJhYm9ydCI9PT1kKXJldHVybiBrPWgsdm9pZCBmYWlsUXVlcnkoKTtpZih2KXJldHVybiBrPWgsdm9pZChPLmxlbmd0aHx8KHkubGVuZ3RoP2V4ZWNOZXh0KCk6ZmFpbFF1ZXJ5KCkpKTtpZihyZXNldFRpbWVyKCksY2xlYXJRdWV1ZSgpLCFlLnJhbmRvbSl7Y29uc3QgZD1lLnJlc291cmNlcy5pbmRleE9mKGMucmVzb3VyY2UpOy0xIT09ZCYmZCE9PWUuaW5kZXgmJihlLmluZGV4PWQpfV89ImNvbXBsZXRlZCIsUi5mb3JFYWNoKGU9PntlKGgpfSl9KHYsYyxkKX19O08ucHVzaCh2KSxUKyssTj1zZXRUaW1lb3V0KGV4ZWNOZXh0LGUucm90YXRlKSxkKGgsYyx2LmNhbGxiYWNrKX1yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgaCYmUi5wdXNoKGgpLHNldFRpbWVvdXQoZXhlY05leHQpLGZ1bmN0aW9uKCl7cmV0dXJue3N0YXJ0VGltZTpFLHBheWxvYWQ6YyxzdGF0dXM6XyxxdWVyaWVzU2VudDpULHF1ZXJpZXNQZW5kaW5nOk8ubGVuZ3RoLHN1YnNjcmliZTpzdWJzY3JpYmUsYWJvcnQ6YWJvcnR9fX1mdW5jdGlvbiBpbml0UmVkdW5kYW5jeShlKXtjb25zdCBjPXsuLi5NaSwuLi5lfTtsZXQgZD1bXTtmdW5jdGlvbiBjbGVhbnVwKCl7ZD1kLmZpbHRlcihlPT4icGVuZGluZyI9PT1lKCkuc3RhdHVzKX1yZXR1cm57cXVlcnk6ZnVuY3Rpb24oZSxoLHYpe2NvbnN0IGI9c2VuZFF1ZXJ5KGMsZSxoLChlLGMpPT57Y2xlYW51cCgpLHYmJnYoZSxjKX0pO3JldHVybiBkLnB1c2goYiksYn0sZmluZDpmdW5jdGlvbihlKXtyZXR1cm4gZC5maW5kKGM9PmUoYykpfHxudWxsfSxzZXRJbmRleDplPT57Yy5pbmRleD1lfSxnZXRJbmRleDooKT0+Yy5pbmRleCxjbGVhbnVwOmNsZWFudXB9fWZ1bmN0aW9uIGVtcHR5Q2FsbGJhY2skMSgpe31jb25zdCBEaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHNlbmRBUElRdWVyeShlLGMsZCl7bGV0IGgsdjtpZigic3RyaW5nIj09dHlwZW9mIGUpe2NvbnN0IGM9Z2V0QVBJTW9kdWxlKGUpO2lmKCFjKXJldHVybiBkKHZvaWQgMCw0MjQpLGVtcHR5Q2FsbGJhY2skMTt2PWMuc2VuZDtjb25zdCBiPWZ1bmN0aW9uKGUpe2lmKCFEaVtlXSl7Y29uc3QgYz1nZXRBUElDb25maWcoZSk7aWYoIWMpcmV0dXJuO2NvbnN0IGQ9e2NvbmZpZzpjLHJlZHVuZGFuY3k6aW5pdFJlZHVuZGFuY3koYyl9O0RpW2VdPWR9cmV0dXJuIERpW2VdfShlKTtiJiYoaD1iLnJlZHVuZGFuY3kpfWVsc2V7Y29uc3QgYz1jcmVhdGVBUElDb25maWcoZSk7aWYoYyl7aD1pbml0UmVkdW5kYW5jeShjKTtjb25zdCBkPWdldEFQSU1vZHVsZShlLnJlc291cmNlcz9lLnJlc291cmNlc1swXToiIik7ZCYmKHY9ZC5zZW5kKX19cmV0dXJuIGgmJnY/aC5xdWVyeShjLHYsZCkoKS5hYm9ydDooZCh2b2lkIDAsNDI0KSxlbXB0eUNhbGxiYWNrJDEpfWZ1bmN0aW9uIGVtcHR5Q2FsbGJhY2soKXt9ZnVuY3Rpb24gbG9hZGVkTmV3SWNvbnMoZSl7ZS5pY29uc0xvYWRlckZsYWd8fChlLmljb25zTG9hZGVyRmxhZz0hMCxzZXRUaW1lb3V0KCgpPT57ZS5pY29uc0xvYWRlckZsYWc9ITEsZnVuY3Rpb24oZSl7ZS5wZW5kaW5nQ2FsbGJhY2tzRmxhZ3x8KGUucGVuZGluZ0NhbGxiYWNrc0ZsYWc9ITAsc2V0VGltZW91dCgoKT0+e2UucGVuZGluZ0NhbGxiYWNrc0ZsYWc9ITE7Y29uc3QgYz1lLmxvYWRlckNhbGxiYWNrcz9lLmxvYWRlckNhbGxiYWNrcy5zbGljZSgwKTpbXTtpZighYy5sZW5ndGgpcmV0dXJuO2xldCBkPSExO2NvbnN0IGg9ZS5wcm92aWRlcix2PWUucHJlZml4O2MuZm9yRWFjaChjPT57Y29uc3QgYj1jLmljb25zLHk9Yi5wZW5kaW5nLmxlbmd0aDtiLnBlbmRpbmc9Yi5wZW5kaW5nLmZpbHRlcihjPT57aWYoYy5wcmVmaXghPT12KXJldHVybiEwO2NvbnN0IHk9Yy5uYW1lO2lmKGUuaWNvbnNbeV0pYi5sb2FkZWQucHVzaCh7cHJvdmlkZXI6aCxwcmVmaXg6dixuYW1lOnl9KTtlbHNle2lmKCFlLm1pc3NpbmcuaGFzKHkpKXJldHVybiBkPSEwLCEwO2IubWlzc2luZy5wdXNoKHtwcm92aWRlcjpoLHByZWZpeDp2LG5hbWU6eX0pfXJldHVybiExfSksYi5wZW5kaW5nLmxlbmd0aCE9PXkmJihkfHxyZW1vdmVDYWxsYmFjayhbZV0sYy5pZCksYy5jYWxsYmFjayhiLmxvYWRlZC5zbGljZSgwKSxiLm1pc3Npbmcuc2xpY2UoMCksYi5wZW5kaW5nLnNsaWNlKDApLGMuYWJvcnQpKX0pfSkpfShlKX0pKX1mdW5jdGlvbiBwYXJzZUxvYWRlclJlc3BvbnNlKGUsYyxkKXtmdW5jdGlvbiBjaGVja01pc3NpbmcoKXtjb25zdCBkPWUucGVuZGluZ0ljb25zO2MuZm9yRWFjaChjPT57ZCYmZC5kZWxldGUoYyksZS5pY29uc1tjXXx8ZS5taXNzaW5nLmFkZChjKX0pfWlmKGQmJiJvYmplY3QiPT10eXBlb2YgZCl0cnl7aWYoIWFkZEljb25TZXQoZSxkKS5sZW5ndGgpcmV0dXJuIHZvaWQgY2hlY2tNaXNzaW5nKCl9Y2F0Y2goZSl7fWNoZWNrTWlzc2luZygpLGxvYWRlZE5ld0ljb25zKGUpfWZ1bmN0aW9uIHBhcnNlUG9zc2libHlBc3luY1Jlc3BvbnNlKGUsYyl7ZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGU9PntjKGUpfSkuY2F0Y2goKCk9PntjKG51bGwpfSk6YyhlKX1mdW5jdGlvbiBsb2FkTmV3SWNvbnMoZSxjKXtlLmljb25zVG9Mb2FkP2UuaWNvbnNUb0xvYWQ9ZS5pY29uc1RvTG9hZC5jb25jYXQoYykuc29ydCgpOmUuaWNvbnNUb0xvYWQ9YyxlLmljb25zUXVldWVGbGFnfHwoZS5pY29uc1F1ZXVlRmxhZz0hMCxzZXRUaW1lb3V0KCgpPT57ZS5pY29uc1F1ZXVlRmxhZz0hMTtjb25zdHtwcm92aWRlcjpjLHByZWZpeDpkfT1lLGg9ZS5pY29uc1RvTG9hZDtpZihkZWxldGUgZS5pY29uc1RvTG9hZCwhaHx8IWgubGVuZ3RoKXJldHVybjtjb25zdCB2PWUubG9hZEljb247aWYoZS5sb2FkSWNvbnMmJihoLmxlbmd0aD4xfHwhdikpcmV0dXJuIHZvaWQgcGFyc2VQb3NzaWJseUFzeW5jUmVzcG9uc2UoZS5sb2FkSWNvbnMoaCxkLGMpLGM9PntwYXJzZUxvYWRlclJlc3BvbnNlKGUsaCxjKX0pO2lmKHYpcmV0dXJuIHZvaWQgaC5mb3JFYWNoKGg9PntwYXJzZVBvc3NpYmx5QXN5bmNSZXNwb25zZSh2KGgsZCxjKSxjPT57cGFyc2VMb2FkZXJSZXNwb25zZShlLFtoXSxjP3twcmVmaXg6ZCxpY29uczp7W2hdOmN9fTpudWxsKX0pfSk7Y29uc3R7dmFsaWQ6YixpbnZhbGlkOnl9PWZ1bmN0aW9uKGUpe2NvbnN0IGM9W10sZD1bXTtyZXR1cm4gZS5mb3JFYWNoKGU9PnsoZS5tYXRjaChwaSk/YzpkKS5wdXNoKGUpfSkse3ZhbGlkOmMsaW52YWxpZDpkfX0oaCk7aWYoeS5sZW5ndGgmJnBhcnNlTG9hZGVyUmVzcG9uc2UoZSx5LG51bGwpLCFiLmxlbmd0aClyZXR1cm47Y29uc3QgRT1kLm1hdGNoKHBpKT9nZXRBUElNb2R1bGUoYyk6bnVsbDtpZighRSlyZXR1cm4gdm9pZCBwYXJzZUxvYWRlclJlc3BvbnNlKGUsYixudWxsKTtFLnByZXBhcmUoYyxkLGIpLmZvckVhY2goZD0+e3NlbmRBUElRdWVyeShjLGQsYz0+e3BhcnNlTG9hZGVyUmVzcG9uc2UoZSxkLmljb25zLGMpfSl9KX0pKX1jb25zdCBsb2FkSWNvbnM9KGUsYyk9Pntjb25zdCBkPWZ1bmN0aW9uKGUpe2NvbnN0IGM9e2xvYWRlZDpbXSxtaXNzaW5nOltdLHBlbmRpbmc6W119LGQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlLnNvcnQoKGUsYyk9PmUucHJvdmlkZXIhPT1jLnByb3ZpZGVyP2UucHJvdmlkZXIubG9jYWxlQ29tcGFyZShjLnByb3ZpZGVyKTplLnByZWZpeCE9PWMucHJlZml4P2UucHJlZml4LmxvY2FsZUNvbXBhcmUoYy5wcmVmaXgpOmUubmFtZS5sb2NhbGVDb21wYXJlKGMubmFtZSkpO2xldCBoPXtwcm92aWRlcjoiIixwcmVmaXg6IiIsbmFtZToiIn07cmV0dXJuIGUuZm9yRWFjaChlPT57aWYoaC5uYW1lPT09ZS5uYW1lJiZoLnByZWZpeD09PWUucHJlZml4JiZoLnByb3ZpZGVyPT09ZS5wcm92aWRlcilyZXR1cm47aD1lO2NvbnN0IHY9ZS5wcm92aWRlcixiPWUucHJlZml4LHk9ZS5uYW1lLEU9ZFt2XXx8KGRbdl09T2JqZWN0LmNyZWF0ZShudWxsKSksaz1FW2JdfHwoRVtiXT1nZXRTdG9yYWdlKHYsYikpO2xldCBfO189eSBpbiBrLmljb25zP2MubG9hZGVkOiIiPT09Ynx8ay5taXNzaW5nLmhhcyh5KT9jLm1pc3Npbmc6Yy5wZW5kaW5nO2NvbnN0IFQ9e3Byb3ZpZGVyOnYscHJlZml4OmIsbmFtZTp5fTtfLnB1c2goVCl9KSxjfShmdW5jdGlvbihlLGM9ITAsZD0hMSl7Y29uc3QgaD1bXTtyZXR1cm4gZS5mb3JFYWNoKGU9Pntjb25zdCB2PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0ljb24oZSxjLGQpOmU7diYmaC5wdXNoKHYpfSksaH0oZSwhMCxhbGxvd1NpbXBsZU5hbWVzKCkpKTtpZighZC5wZW5kaW5nLmxlbmd0aCl7bGV0IGU9ITA7cmV0dXJuIGMmJnNldFRpbWVvdXQoKCk9PntlJiZjKGQubG9hZGVkLGQubWlzc2luZyxkLnBlbmRpbmcsZW1wdHlDYWxsYmFjayl9KSwoKT0+e2U9ITF9fWNvbnN0IGg9T2JqZWN0LmNyZWF0ZShudWxsKSx2PVtdO2xldCBiLHk7cmV0dXJuIGQucGVuZGluZy5mb3JFYWNoKGU9Pntjb25zdHtwcm92aWRlcjpjLHByZWZpeDpkfT1lO2lmKGQ9PT15JiZjPT09YilyZXR1cm47Yj1jLHk9ZCx2LnB1c2goZ2V0U3RvcmFnZShjLGQpKTtjb25zdCBFPWhbY118fChoW2NdPU9iamVjdC5jcmVhdGUobnVsbCkpO0VbZF18fChFW2RdPVtdKX0pLGQucGVuZGluZy5mb3JFYWNoKGU9Pntjb25zdHtwcm92aWRlcjpjLHByZWZpeDpkLG5hbWU6dn09ZSxiPWdldFN0b3JhZ2UoYyxkKSx5PWIucGVuZGluZ0ljb25zfHwoYi5wZW5kaW5nSWNvbnM9bmV3IFNldCk7eS5oYXModil8fCh5LmFkZCh2KSxoW2NdW2RdLnB1c2godikpfSksdi5mb3JFYWNoKGU9Pntjb25zdCBjPWhbZS5wcm92aWRlcl1bZS5wcmVmaXhdO2MubGVuZ3RoJiZsb2FkTmV3SWNvbnMoZSxjKX0pLGM/ZnVuY3Rpb24oZSxjLGQpe2NvbnN0IGg9UGkrKyx2PXJlbW92ZUNhbGxiYWNrLmJpbmQobnVsbCxkLGgpO2lmKCFjLnBlbmRpbmcubGVuZ3RoKXJldHVybiB2O2NvbnN0IGI9e2lkOmgsaWNvbnM6YyxjYWxsYmFjazplLGFib3J0OnZ9O3JldHVybiBkLmZvckVhY2goZT0+eyhlLmxvYWRlckNhbGxiYWNrc3x8KGUubG9hZGVyQ2FsbGJhY2tzPVtdKSkucHVzaChiKX0pLHZ9KGMsZCx2KTplbXB0eUNhbGxiYWNrfTtmdW5jdGlvbiBzZXRDdXN0b21JY29uc0xvYWRlcihlLGMsZCl7Z2V0U3RvcmFnZSgiIixjKS5sb2FkSWNvbnM9ZX1jb25zdCBCaT0vW1xzLF0rLztmdW5jdGlvbiBmbGlwRnJvbVN0cmluZyhlLGMpe2Muc3BsaXQoQmkpLmZvckVhY2goYz0+e3N3aXRjaChjLnRyaW0oKSl7Y2FzZSJob3Jpem9udGFsIjplLmhGbGlwPSEwO2JyZWFrO2Nhc2UidmVydGljYWwiOmUudkZsaXA9ITB9fSl9ZnVuY3Rpb24gcm90YXRlRnJvbVN0cmluZyhlLGM9MCl7Y29uc3QgZD1lLnJlcGxhY2UoL14tP1swLTkuXSovLCIiKTtmdW5jdGlvbiBjbGVhbnVwKGUpe2Zvcig7ZTwwOyllKz00O3JldHVybiBlJTR9aWYoIiI9PT1kKXtjb25zdCBjPXBhcnNlSW50KGUpO3JldHVybiBpc05hTihjKT8wOmNsZWFudXAoYyl9aWYoZCE9PWUpe2xldCBjPTA7c3dpdGNoKGQpe2Nhc2UiJSI6Yz0yNTticmVhaztjYXNlImRlZyI6Yz05MH1pZihjKXtsZXQgaD1wYXJzZUZsb2F0KGUuc2xpY2UoMCxlLmxlbmd0aC1kLmxlbmd0aCkpO3JldHVybiBpc05hTihoKT8wOihoLz1jLGglMT09MD9jbGVhbnVwKGgpOjApfX1yZXR1cm4gY31jb25zdCBMaT17Li4uU2ksaW5saW5lOiExfSxqaT17eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwieG1sbnM6eGxpbmsiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiYXJpYS1oaWRkZW4iOiEwLHJvbGU6ImltZyJ9LCRpPXtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxGaT17YmFja2dyb3VuZENvbG9yOiJjdXJyZW50Q29sb3IifSxWaT17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCJ9LHppPXtJbWFnZToidmFyKC0tc3ZnKSIsUmVwZWF0OiJuby1yZXBlYXQiLFNpemU6IjEwMCUgMTAwJSJ9LHFpPXt3ZWJraXRNYXNrOkZpLG1hc2s6RmksYmFja2dyb3VuZDpWaX07Zm9yKGNvbnN0IGUgaW4gcWkpe2NvbnN0IGM9cWlbZV07Zm9yKGNvbnN0IGQgaW4gemkpY1tlK2RdPXppW2RdfWNvbnN0IFVpPXt9O2Z1bmN0aW9uIGZpeFNpemUoZSl7cmV0dXJuIGUrKGUubWF0Y2goL15bLTAtOS5dKyQvKT8icHgiOiIiKX1bImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdLmZvckVhY2goZT0+e2NvbnN0IGM9ZS5zbGljZSgwLDEpKyJGbGlwIjtVaVtlKyItZmxpcCJdPWMsVWlbZS5zbGljZSgwLDEpKyItZmxpcCJdPWMsVWlbZSsiRmxpcCJdPWN9KTtjb25zdCByZW5kZXI9KGUsYyk9Pntjb25zdCBkPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD17Li4uZX07Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3QgaD1jW2VdLHY9dHlwZW9mIGg7ZSBpbiB4aT8obnVsbD09PWh8fGgmJigic3RyaW5nIj09PXZ8fCJudW1iZXIiPT09dikpJiYoZFtlXT1oKTp2PT09dHlwZW9mIGRbZV0mJihkW2VdPSJyb3RhdGUiPT09ZT9oJTQ6aCl9cmV0dXJuIGR9KExpLGMpLGg9ey4uLmppfSx2PWMubW9kZXx8InN2ZyIsYj17fSx5PWMuc3R5bGUsRT0ib2JqZWN0IiE9dHlwZW9mIHl8fHkgaW5zdGFuY2VvZiBBcnJheT97fTp5O2ZvcihsZXQgZSBpbiBjKXtjb25zdCB2PWNbZV07aWYodm9pZCAwIT09dilzd2l0Y2goZSl7Y2FzZSJpY29uIjpjYXNlInN0eWxlIjpjYXNlIm9uTG9hZCI6Y2FzZSJtb2RlIjpjYXNlInNzciI6YnJlYWs7Y2FzZSJpbmxpbmUiOmNhc2UiaEZsaXAiOmNhc2UidkZsaXAiOmRbZV09ITA9PT12fHwidHJ1ZSI9PT12fHwxPT09djticmVhaztjYXNlImZsaXAiOiJzdHJpbmciPT10eXBlb2YgdiYmZmxpcEZyb21TdHJpbmcoZCx2KTticmVhaztjYXNlImNvbG9yIjpiLmNvbG9yPXY7YnJlYWs7Y2FzZSJyb3RhdGUiOiJzdHJpbmciPT10eXBlb2Ygdj9kW2VdPXJvdGF0ZUZyb21TdHJpbmcodik6Im51bWJlciI9PXR5cGVvZiB2JiYoZFtlXT12KTticmVhaztjYXNlImFyaWFIaWRkZW4iOmNhc2UiYXJpYS1oaWRkZW4iOiEwIT09diYmInRydWUiIT09diYmZGVsZXRlIGhbImFyaWEtaGlkZGVuIl07YnJlYWs7ZGVmYXVsdDp7Y29uc3QgYz1VaVtlXTtjPyEwIT09diYmInRydWUiIT09diYmMSE9PXZ8fChkW2NdPSEwKTp2b2lkIDA9PT1MaVtlXSYmKGhbZV09dil9fX1jb25zdCBrPWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD17Li4uaGksLi4uZX0saD17Li4uU2ksLi4uY30sdj17bGVmdDpkLmxlZnQsdG9wOmQudG9wLHdpZHRoOmQud2lkdGgsaGVpZ2h0OmQuaGVpZ2h0fTtsZXQgYj1kLmJvZHk7W2QsaF0uZm9yRWFjaChlPT57Y29uc3QgYz1bXSxkPWUuaEZsaXAsaD1lLnZGbGlwO2xldCB5LEU9ZS5yb3RhdGU7c3dpdGNoKGQ/aD9FKz0yOihjLnB1c2goInRyYW5zbGF0ZSgiKyh2LndpZHRoK3YubGVmdCkudG9TdHJpbmcoKSsiICIrKDAtdi50b3ApLnRvU3RyaW5nKCkrIikiKSxjLnB1c2goInNjYWxlKC0xIDEpIiksdi50b3A9di5sZWZ0PTApOmgmJihjLnB1c2goInRyYW5zbGF0ZSgiKygwLXYubGVmdCkudG9TdHJpbmcoKSsiICIrKHYuaGVpZ2h0K3YudG9wKS50b1N0cmluZygpKyIpIiksYy5wdXNoKCJzY2FsZSgxIC0xKSIpLHYudG9wPXYubGVmdD0wKSxFPDAmJihFLT00Kk1hdGguZmxvb3IoRS80KSksRSU9NCxFKXtjYXNlIDE6eT12LmhlaWdodC8yK3YudG9wLGMudW5zaGlmdCgicm90YXRlKDkwICIreS50b1N0cmluZygpKyIgIit5LnRvU3RyaW5nKCkrIikiKTticmVhaztjYXNlIDI6Yy51bnNoaWZ0KCJyb3RhdGUoMTgwICIrKHYud2lkdGgvMit2LmxlZnQpLnRvU3RyaW5nKCkrIiAiKyh2LmhlaWdodC8yK3YudG9wKS50b1N0cmluZygpKyIpIik7YnJlYWs7Y2FzZSAzOnk9di53aWR0aC8yK3YubGVmdCxjLnVuc2hpZnQoInJvdGF0ZSgtOTAgIit5LnRvU3RyaW5nKCkrIiAiK3kudG9TdHJpbmcoKSsiKSIpfUUlMj09MSYmKHYubGVmdCE9PXYudG9wJiYoeT12LmxlZnQsdi5sZWZ0PXYudG9wLHYudG9wPXkpLHYud2lkdGghPT12LmhlaWdodCYmKHk9di53aWR0aCx2LndpZHRoPXYuaGVpZ2h0LHYuaGVpZ2h0PXkpKSxjLmxlbmd0aCYmKGI9ZnVuY3Rpb24oZSxjLGQpe2NvbnN0IGg9ZnVuY3Rpb24oZSxjPSJkZWZzIil7bGV0IGQ9IiI7Y29uc3QgaD1lLmluZGV4T2YoIjwiK2MpO2Zvcig7aD49MDspe2NvbnN0IHY9ZS5pbmRleE9mKCI+IixoKSxiPWUuaW5kZXhPZigiPC8iK2MpO2lmKC0xPT09dnx8LTE9PT1iKWJyZWFrO2NvbnN0IHk9ZS5pbmRleE9mKCI+IixiKTtpZigtMT09PXkpYnJlYWs7ZCs9ZS5zbGljZSh2KzEsYikudHJpbSgpLGU9ZS5zbGljZSgwLGgpLnRyaW0oKStlLnNsaWNlKHkrMSl9cmV0dXJue2RlZnM6ZCxjb250ZW50OmV9fShlKTtyZXR1cm4gdj1oLmRlZnMsYj1jK2guY29udGVudCtkLHY/IjxkZWZzPiIrdisiPC9kZWZzPiIrYjpiO3ZhciB2LGJ9KGIsJzxnIHRyYW5zZm9ybT0iJytjLmpvaW4oIiAiKSsnIj4nLCI8L2c+IikpfSk7Y29uc3QgeT1oLndpZHRoLEU9aC5oZWlnaHQsaz12LndpZHRoLF89di5oZWlnaHQ7bGV0IFQsTjtudWxsPT09eT8oTj1udWxsPT09RT8iMWVtIjoiYXV0byI9PT1FP186RSxUPWNhbGN1bGF0ZVNpemUkMShOLGsvXykpOihUPSJhdXRvIj09PXk/azp5LE49bnVsbD09PUU/Y2FsY3VsYXRlU2l6ZSQxKFQsXy9rKToiYXV0byI9PT1FP186RSk7Y29uc3QgTz17fSxzZXRBdHRyPShlLGMpPT57KGU9PiJ1bnNldCI9PT1lfHwidW5kZWZpbmVkIj09PWV8fCJub25lIj09PWUpKGMpfHwoT1tlXT1jLnRvU3RyaW5nKCkpfTtzZXRBdHRyKCJ3aWR0aCIsVCksc2V0QXR0cigiaGVpZ2h0IixOKTtjb25zdCBSPVt2LmxlZnQsdi50b3AsayxfXTtyZXR1cm4gTy52aWV3Qm94PVIuam9pbigiICIpLHthdHRyaWJ1dGVzOk8sdmlld0JveDpSLGJvZHk6Yn19KGUsZCksXz1rLmF0dHJpYnV0ZXM7aWYoZC5pbmxpbmUmJihiLnZlcnRpY2FsQWxpZ249Ii0wLjEyNWVtIiksInN2ZyI9PT12KXtoLnN0eWxlPXsuLi5iLC4uLkV9LE9iamVjdC5hc3NpZ24oaCxfKTtsZXQgZT0wLGQ9Yy5pZDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQmJihkPWQucmVwbGFjZSgvLS9nLCJfIikpLGguaW5uZXJIVE1MPWZ1bmN0aW9uKGUsYz1DaSl7Y29uc3QgZD1bXTtsZXQgaDtmb3IoO2g9a2kuZXhlYyhlKTspZC5wdXNoKGhbMV0pO2lmKCFkLmxlbmd0aClyZXR1cm4gZTtjb25zdCB2PSJzdWZmaXgiKygxNjc3NzIxNipNYXRoLnJhbmRvbSgpfERhdGUubm93KCkpLnRvU3RyaW5nKDE2KTtyZXR1cm4gZC5mb3JFYWNoKGQ9Pntjb25zdCBoPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2MoZCk6YysoX2krKykudG9TdHJpbmcoKSxiPWQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKTtlPWUucmVwbGFjZShuZXcgUmVnRXhwKCcoWyM7Il0pKCcrYisnKShbIildfFxcLlthLXpdKScsImciKSwiJDEiK2grdisiJDMiKX0pLGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAodiwiZyIpLCIiKX0oay5ib2R5LGQ/KCk9PmQrIklEIitlKys6Imljb25pZnlWdWUiKSxZbi5oKCJzdmciLGgpfWNvbnN0e2JvZHk6VCx3aWR0aDpOLGhlaWdodDpPfT1lLFI9Im1hc2siPT09dnx8ImJnIiE9PXYmJi0xIT09VC5pbmRleE9mKCJjdXJyZW50Q29sb3IiKSxNPWZ1bmN0aW9uKGUsYyl7bGV0IGQ9LTE9PT1lLmluZGV4T2YoInhsaW5rOiIpPyIiOicgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiJztmb3IoY29uc3QgZSBpbiBjKWQrPSIgIitlKyc9IicrY1tlXSsnIic7cmV0dXJuJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIicrZCsiPiIrZSsiPC9zdmc+In0oVCx7Li4uXyx3aWR0aDpOKyIiLGhlaWdodDpPKyIifSk7dmFyIEQ7cmV0dXJuIGguc3R5bGU9ey4uLmIsIi0tc3ZnIjooRD1NLCd1cmwoIicrZnVuY3Rpb24oZSl7cmV0dXJuImRhdGE6aW1hZ2Uvc3ZnK3htbCwiK2Z1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyIvZywiJyIpLnJlcGxhY2UoLyUvZywiJTI1IikucmVwbGFjZSgvIy9nLCIlMjMiKS5yZXBsYWNlKC88L2csIiUzQyIpLnJlcGxhY2UoLz4vZywiJTNFIikucmVwbGFjZSgvXHMrL2csIiAiKX0oZSl9KEQpKyciKScpLHdpZHRoOmZpeFNpemUoXy53aWR0aCksaGVpZ2h0OmZpeFNpemUoXy5oZWlnaHQpLC4uLiRpLC4uLlI/Rmk6VmksLi4uRX0sWW4uaCgic3BhbiIsaCl9O2FsbG93U2ltcGxlTmFtZXMoITApLHNldEFQSU1vZHVsZSgiIixSaSk7Y29uc3QgSGk9ey4uLmhpLGJvZHk6IiJ9LEdpPVluLmRlZmluZUNvbXBvbmVudCgoZSx7ZW1pdDpjfSk9Pntjb25zdCBkPVluLnJlZihudWxsKTtjb25zdCBoPVluLnJlZighIWUuc3NyKSx2PVluLnJlZigiIiksYj1Zbi5zaGFsbG93UmVmKG51bGwpO2Z1bmN0aW9uIGdldEljb24yKCl7Y29uc3QgaD1lLmljb247aWYoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aCYmInN0cmluZyI9PXR5cGVvZiBoLmJvZHkpcmV0dXJuIHYudmFsdWU9IiIse2RhdGE6aH07bGV0IGI7aWYoInN0cmluZyIhPXR5cGVvZiBofHxudWxsPT09KGI9c3RyaW5nVG9JY29uKGgsITEsITApKSlyZXR1cm4gbnVsbDtsZXQgeT1nZXRJY29uRGF0YShiKTtpZigheSl7Y29uc3QgZT1kLnZhbHVlO3JldHVybiBlJiZlLm5hbWU9PT1ofHwoZC52YWx1ZT1udWxsPT09eT97bmFtZTpofTp7bmFtZTpoLGFib3J0OmxvYWRJY29ucyhbYl0sdXBkYXRlSWNvbkRhdGEpfSksbnVsbH1kLnZhbHVlJiYoZC52YWx1ZS5hYm9ydD8uKCksZC52YWx1ZT1udWxsKSx2LnZhbHVlIT09aCYmKHYudmFsdWU9aCxZbi5uZXh0VGljaygoKT0+e2MoImxvYWQiLGgpfSkpO2NvbnN0IEU9ZS5jdXN0b21pc2U7aWYoRSl7eT1PYmplY3QuYXNzaWduKHt9LHkpO2NvbnN0IGU9RSh5LmJvZHksYi5uYW1lLGIucHJlZml4LGIucHJvdmlkZXIpOyJzdHJpbmciPT10eXBlb2YgZSYmKHkuYm9keT1lKX1jb25zdCBrPVsiaWNvbmlmeSJdO3JldHVybiIiIT09Yi5wcmVmaXgmJmsucHVzaCgiaWNvbmlmeS0tIitiLnByZWZpeCksIiIhPT1iLnByb3ZpZGVyJiZrLnB1c2goImljb25pZnktLSIrYi5wcm92aWRlcikse2RhdGE6eSxjbGFzc2VzOmt9fWZ1bmN0aW9uIHVwZGF0ZUljb25EYXRhKCl7Y29uc3QgZT1nZXRJY29uMigpO2U/ZS5kYXRhIT09Yi52YWx1ZT8uZGF0YSYmKGIudmFsdWU9ZSk6Yi52YWx1ZT1udWxsfXJldHVybiBoLnZhbHVlJiZ1cGRhdGVJY29uRGF0YSgpLFluLndhdGNoKCgpPT5lLmljb24sdXBkYXRlSWNvbkRhdGEpLCgpPT57Y29uc3QgYz1iLnZhbHVlO2lmKCFjKXJldHVybiByZW5kZXIoSGksZSk7bGV0IGQ9ZTtyZXR1cm4gYy5jbGFzc2VzJiYoZD17Li4uZSxjbGFzczpjLmNsYXNzZXMuam9pbigiICIpfSkscmVuZGVyKHsuLi5oaSwuLi5jLmRhdGF9LGQpfX0se3Byb3BzOlsiaWNvbiIsIm1vZGUiLCJzc3IiLCJ3aWR0aCIsImhlaWdodCIsInN0eWxlIiwiY29sb3IiLCJpbmxpbmUiLCJyb3RhdGUiLCJoRmxpcCIsImhvcml6b250YWxGbGlwIiwidkZsaXAiLCJ2ZXJ0aWNhbEZsaXAiLCJmbGlwIiwiaWQiLCJhcmlhSGlkZGVuIiwiY3VzdG9taXNlIiwidGl0bGUiXSxlbWl0czpbImxvYWQiXX0pLFdpPXtnZXRBUElDb25maWc6Z2V0QVBJQ29uZmlnLHNldEFQSU1vZHVsZTpzZXRBUElNb2R1bGUsc2VuZEFQSVF1ZXJ5OnNlbmRBUElRdWVyeSxzZXRGZXRjaDpmdW5jdGlvbihlKXtJaT1lfSxnZXRGZXRjaDpmdW5jdGlvbigpe3JldHVybiBJaX0sbGlzdEFQSVByb3ZpZGVyczpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhOaSl9fSxYaT1kZWZpbmVOdXh0UGx1Z2luKHtuYW1lOiJAbnV4dC9pY29uIixzZXR1cCgpe2NvbnN0IGU9dXNlUnVudGltZUNvbmZpZygpLGM9dXNlQXBwQ29uZmlnKCkuaWNvbjtXaS5zZXRGZXRjaCgkZmV0Y2gubmF0aXZlKTtjb25zdCBkPVtdO2lmKCJzZXJ2ZXIiPT09Yy5wcm92aWRlcil7Y29uc3QgaD1lLmFwcD8uYmFzZVVSTD8ucmVwbGFjZSgvXC8kLywiIik/PyIiO2QucHVzaChoKyhjLmxvY2FsQXBpRW5kcG9pbnR8fCIvYXBpL19udXh0X2ljb24iKSksITAhPT1jLmZhbGxiYWNrVG9BcGkmJiJjbGllbnQtb25seSIhPT1jLmZhbGxiYWNrVG9BcGl8fGQucHVzaChjLmljb25pZnlBcGlFbmRwb2ludCl9ZWxzZSJub25lIj09PWMucHJvdmlkZXI/V2kuc2V0RmV0Y2goKCk9PlByb21pc2UucmVzb2x2ZShuZXcgUmVzcG9uc2UpKTpkLnB1c2goYy5pY29uaWZ5QXBpRW5kcG9pbnQpO2FzeW5jIGZ1bmN0aW9uIGN1c3RvbUljb25Mb2FkZXIoZSxjKXt0cnl7Y29uc3QgaD1hd2FpdCAkZmV0Y2goZFswXSsiLyIrYysiLmpzb24iLHtxdWVyeTp7aWNvbnM6ZS5qb2luKCIsIil9fSk7aWYoIWh8fGgucHJlZml4IT09Y3x8IWguaWNvbnMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEiK0pTT04uc3RyaW5naWZ5KGgpKTtyZXR1cm4gaH1jYXRjaChlKXtyZXR1cm4gbnVsbH19IWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1jcmVhdGVBUElDb25maWcoYyk7bnVsbCE9PWQmJihOaVtlXT1kKX0oIiIse3Jlc291cmNlczpkfSk7Zm9yKGNvbnN0IGUgb2YgYy5jdXN0b21Db2xsZWN0aW9uc3x8W10pZSYmc2V0Q3VzdG9tSWNvbnNMb2FkZXIoY3VzdG9tSWNvbkxvYWRlcixlKX19KSxLaT1kZWZpbmVOdXh0UGx1Z2luKGU9Pntjb25zdCBjPWZ1bmN0aW9uKGU9W10sYz17fSl7cmV0dXJuIG5ldyBQdXJlQWJpbGl0eShlLE9iamVjdC5hc3NpZ24oe2NvbmRpdGlvbnNNYXRjaGVyOlByLGZpZWxkTWF0Y2hlcjphdH0sYykpfShbXSk7ZS52dWVBcHAudXNlKGwsYyx7dXNlR2xvYmFsUHJvcGVydGllczohMH0pO2NvbnN0IGQ9emEoKTtyZXR1cm4gWW4ud2F0Y2goKCk9PltkLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLGQuY3VycmVudFVzZXI/LmlkXSwoW2UsZF0pPT57Y29uc3QgaD1mdW5jdGlvbihlLGMpe3JldHVybiBlLm1hcChlPT57Y29uc3R7c3ViamVjdDpkLGFjdGlvbjpoLHNjb3BlOnZ9PXBhcnNlQWJpbGl0eShlKSxiPXthY3Rpb246aCxzdWJqZWN0OmR9O3JldHVybiJzZWxmIj09PXYmJmMmJihiLmNvbmRpdGlvbnM9e3VzZXJfaWQ6Y30pLGJ9KX0oZSxkKTtjLnVwZGF0ZShoKX0se2ltbWVkaWF0ZTohMH0pLHtwcm92aWRlOnthYmlsaXR5OmN9fX0pLEppPVt4YSxTYSxXYSxLYSxKYSxZYSx0aSxuaSxjaSxkaSxYaSxLaV07ZnVuY3Rpb24gY3JlYXRlQ29udGV4dChlLGMpe2NvbnN0IGQ9U3ltYm9sKCJzdHJpbmciIT10eXBlb2YgZXx8Yz9jOmAke2V9Q29udGV4dGApO3JldHVybltjPT57Y29uc3QgaD1Zbi5pbmplY3QoZCxjKTtpZihoKXJldHVybiBoO2lmKG51bGw9PT1oKXJldHVybiBoO3Rocm93IG5ldyBFcnJvcihgSW5qZWN0aW9uIFxgJHtkLnRvU3RyaW5nKCl9XGAgbm90IGZvdW5kLiBDb21wb25lbnQgbXVzdCBiZSB1c2VkIHdpdGhpbiAke0FycmF5LmlzQXJyYXkoZSk/YG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6ICR7ZS5qb2luKCIsICIpfWA6YFxgJHtlfVxgYH1gKX0sZT0+KFluLnByb3ZpZGUoZCxlKSxlKV19ZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudCgpe2xldCBlPSh2b2lkIDApLmFjdGl2ZUVsZW1lbnQ7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPWUmJm51bGwhPWUuc2hhZG93Um9vdCYmbnVsbCE9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7KWU9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGV9ZnVuY3Rpb24gaXNOdWxsaXNoKGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIGNvbXB1dGVkRWFnZXIoZSxjKXt2YXIgZDtjb25zdCBoPVluLnNoYWxsb3dSZWYoKTtyZXR1cm4gWW4ud2F0Y2hFZmZlY3QoKCk9PntoLnZhbHVlPWUoKX0sey4uLmMsZmx1c2g6bnVsbCE9PShkPW51bGw9PWM/dm9pZCAwOmMuZmx1c2gpJiZ2b2lkIDAhPT1kP2Q6InN5bmMifSksWW4ucmVhZG9ubHkoaCl9ZnVuY3Rpb24gdHJ5T25TY29wZURpc3Bvc2UoZSxjKXtyZXR1cm4hIVluLmdldEN1cnJlbnRTY29wZSgpJiYoWW4ub25TY29wZURpc3Bvc2UoZSxjKSwhMCl9ZnVuY3Rpb24gY3JlYXRlRXZlbnRIb29rKCl7Y29uc3QgZT1uZXcgU2V0LG9mZj1jPT57ZS5kZWxldGUoYyl9O3JldHVybntvbjpjPT57ZS5hZGQoYyk7Y29uc3Qgb2ZmRm49KCk9Pm9mZihjKTtyZXR1cm4gdHJ5T25TY29wZURpc3Bvc2Uob2ZmRm4pLHtvZmY6b2ZmRm59fSxvZmY6b2ZmLHRyaWdnZXI6KC4uLmMpPT5Qcm9taXNlLmFsbChBcnJheS5mcm9tKGUpLm1hcChlPT5lKC4uLmMpKSksY2xlYXI6KCk9PntlLmNsZWFyKCl9fX1mdW5jdGlvbiBjcmVhdGVHbG9iYWxTdGF0ZShlKXtsZXQgYyxkPSExO2NvbnN0IGg9WW4uZWZmZWN0U2NvcGUoITApO3JldHVybiguLi52KT0+KGR8fChjPWgucnVuKCgpPT5lKC4uLnYpKSxkPSEwKSxjKX1mdW5jdGlvbiBjcmVhdGVSZWYoZSxjKXtyZXR1cm4hMD09PWM/WW4ucmVmKGUpOlluLnNoYWxsb3dSZWYoZSl9Y29uc3QgUWk9ITE7InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmKGdsb2JhbFRoaXMsV29ya2VyR2xvYmFsU2NvcGUpO2NvbnN0IG5vdE51bGxpc2g9ZT0+bnVsbCE9ZSxZaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLG5vb3A9KCk9Pnt9O2Z1bmN0aW9uIHRvUmVmKC4uLmUpe2lmKDEhPT1lLmxlbmd0aClyZXR1cm4gWW4udG9SZWYoLi4uZSk7Y29uc3QgYz1lWzBdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjP1luLnJlYWRvbmx5KFluLmN1c3RvbVJlZigoKT0+KHtnZXQ6YyxzZXQ6bm9vcH0pKSk6WW4ucmVmKGMpfWZ1bmN0aW9uIGNyZWF0ZUZpbHRlcldyYXBwZXIoZSxjKXtyZXR1cm4gZnVuY3Rpb24oLi4uZCl7cmV0dXJuIG5ldyBQcm9taXNlKChoLHYpPT57UHJvbWlzZS5yZXNvbHZlKGUoKCk9PmMuYXBwbHkodGhpcyxkKSx7Zm46Yyx0aGlzQXJnOnRoaXMsYXJnczpkfSkpLnRoZW4oaCkuY2F0Y2godil9KX19Y29uc3QgYnlwYXNzRmlsdGVyPWU9PmUoKTtmdW5jdGlvbiBkZWJvdW5jZUZpbHRlcihlLGM9e30pe2xldCBkLGgsdj1ub29wO2NvbnN0IF9jbGVhclRpbWVvdXQ9ZT0+e2NsZWFyVGltZW91dChlKSx2KCksdj1ub29wfTtsZXQgYjtyZXR1cm4geT0+e2NvbnN0IEU9WW4udG9WYWx1ZShlKSxrPVluLnRvVmFsdWUoYy5tYXhXYWl0KTtyZXR1cm4gZCYmX2NsZWFyVGltZW91dChkKSxFPD0wfHx2b2lkIDAhPT1rJiZrPD0wPyhoJiYoX2NsZWFyVGltZW91dChoKSxoPXZvaWQgMCksUHJvbWlzZS5yZXNvbHZlKHkoKSkpOm5ldyBQcm9taXNlKChlLF8pPT57dj1jLnJlamVjdE9uQ2FuY2VsP186ZSxiPXksayYmIWgmJihoPXNldFRpbWVvdXQoKCk9PntkJiZfY2xlYXJUaW1lb3V0KGQpLGg9dm9pZCAwLGUoYigpKX0saykpLGQ9c2V0VGltZW91dCgoKT0+e2gmJl9jbGVhclRpbWVvdXQoaCksaD12b2lkIDAsZSh5KCkpfSxFKX0pfX1mdW5jdGlvbiBwYXVzYWJsZUZpbHRlcihlPWJ5cGFzc0ZpbHRlcixjPXt9KXtjb25zdHtpbml0aWFsU3RhdGU6ZD0iYWN0aXZlIn09YyxoPXRvUmVmKCJhY3RpdmUiPT09ZCk7cmV0dXJue2lzQWN0aXZlOlluLnJlYWRvbmx5KGgpLHBhdXNlOmZ1bmN0aW9uKCl7aC52YWx1ZT0hMX0scmVzdW1lOmZ1bmN0aW9uKCl7aC52YWx1ZT0hMH0sZXZlbnRGaWx0ZXI6KC4uLmMpPT57aC52YWx1ZSYmZSguLi5jKX19fWZ1bmN0aW9uIHRvQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Y29uc3QgWmk9Ly0oXHcpL2csZXM9ZnVuY3Rpb24oZSl7Y29uc3QgYz1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBkPT5jW2RdfHwoY1tkXT1lKGQpKX0oZT0+ZS5yZXBsYWNlKFppLChlLGMpPT5jP2MudG9VcHBlckNhc2UoKToiIikpO2Z1bmN0aW9uIGdldExpZmVDeWNsZVRhcmdldChlKXtyZXR1cm4gWW4uZ2V0Q3VycmVudEluc3RhbmNlKCl9ZnVuY3Rpb24gY3JlYXRlU2hhcmVkQ29tcG9zYWJsZShlKXtyZXR1cm4gZX1mdW5jdGlvbiBtYWtlRGVzdHJ1Y3R1cmFibGUoZSxjKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCl7Y29uc3QgZD17Li4uZX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLFN5bWJvbC5pdGVyYXRvcix7ZW51bWVyYWJsZTohMSx2YWx1ZSgpe2xldCBlPTA7cmV0dXJue25leHQ6KCk9Pih7dmFsdWU6Y1tlKytdLGRvbmU6ZT5jLmxlbmd0aH0pfX19KSxkfXJldHVybiBPYmplY3QuYXNzaWduKFsuLi5jXSxlKX1mdW5jdGlvbiByZWFjdGl2ZUNvbXB1dGVkKGUpe3JldHVybiBjPVluLmNvbXB1dGVkKGUpLFluLmlzUmVmKGMpP1luLnJlYWN0aXZlKG5ldyBQcm94eSh7fSx7Z2V0OihlLGQsaCk9PlluLnVucmVmKFJlZmxlY3QuZ2V0KGMudmFsdWUsZCxoKSksc2V0OihlLGQsaCk9PihZbi5pc1JlZihjLnZhbHVlW2RdKSYmIVluLmlzUmVmKGgpP2MudmFsdWVbZF0udmFsdWU9aDpjLnZhbHVlW2RdPWgsITApLGRlbGV0ZVByb3BlcnR5OihlLGQpPT5SZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGMudmFsdWUsZCksaGFzOihlLGQpPT5SZWZsZWN0LmhhcyhjLnZhbHVlLGQpLG93bktleXM6KCk9Pk9iamVjdC5rZXlzKGMudmFsdWUpLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjooKT0+KHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfSkpOlluLnJlYWN0aXZlKGMpO3ZhciBjfWZ1bmN0aW9uIHJlYWN0aXZlT21pdChlLC4uLmMpe2NvbnN0IGQ9Yy5mbGF0KCksaD1kWzBdO3JldHVybiByZWFjdGl2ZUNvbXB1dGVkKCgpPT4iZnVuY3Rpb24iPT10eXBlb2YgaD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoWW4udG9SZWZzKGUpKS5maWx0ZXIoKFtlLGNdKT0+IWgoWW4udG9WYWx1ZShjKSxlKSkpOk9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhZbi50b1JlZnMoZSkpLmZpbHRlcihlPT4hZC5pbmNsdWRlcyhlWzBdKSkpKX1mdW5jdGlvbiByZWFjdGl2ZVBpY2soZSwuLi5jKXtjb25zdCBkPWMuZmxhdCgpLGg9ZFswXTtyZXR1cm4gcmVhY3RpdmVDb21wdXRlZCgoKT0+ImZ1bmN0aW9uIj09dHlwZW9mIGg/T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKFluLnRvUmVmcyhlKSkuZmlsdGVyKChbZSxjXSk9PmgoWW4udG9WYWx1ZShjKSxlKSkpOk9iamVjdC5mcm9tRW50cmllcyhkLm1hcChjPT5bYyx0b1JlZihlLGMpXSkpKX1mdW5jdGlvbiByZWZBdXRvUmVzZXQoZSxjPTFlNCl7cmV0dXJuIFluLmN1c3RvbVJlZigoZCxoKT0+e2xldCB2LGI9WW4udG9WYWx1ZShlKTtyZXR1cm4gdHJ5T25TY29wZURpc3Bvc2UoKCk9PntjbGVhclRpbWVvdXQodil9KSx7Z2V0OigpPT4oZCgpLGIpLHNldChkKXtiPWQsaCgpLGNsZWFyVGltZW91dCh2KSx2PXNldFRpbWVvdXQoKCk9PntiPVluLnRvVmFsdWUoZSksaCgpfSxZbi50b1ZhbHVlKGMpKX19fSl9ZnVuY3Rpb24gdXNlRGVib3VuY2VGbihlLGM9MjAwLGQ9e30pe3JldHVybiBjcmVhdGVGaWx0ZXJXcmFwcGVyKGRlYm91bmNlRmlsdGVyKGMsZCksZSl9ZnVuY3Rpb24gcmVmRGVib3VuY2VkKGUsYz0yMDAsZD17fSl7Y29uc3QgaD1Zbi5yZWYoWW4udG9WYWx1ZShlKSksdj11c2VEZWJvdW5jZUZuKCgpPT57aC52YWx1ZT1lLnZhbHVlfSxjLGQpO3JldHVybiBZbi53YXRjaChlLCgpPT52KCkpLFluLnNoYWxsb3dSZWFkb25seShoKX1mdW5jdGlvbiB1c2VUaHJvdHRsZUZuKGUsYz0yMDAsZD0hMSxoPSEwLHY9ITEpe3JldHVybiBjcmVhdGVGaWx0ZXJXcmFwcGVyKGZ1bmN0aW9uKC4uLmUpe2xldCBjLGQsaCx2LGIseSxFPTAsaz0hMCxfPW5vb3A7WW4uaXNSZWYoZVswXSl8fCJvYmplY3QiIT10eXBlb2YgZVswXT9baCx2PSEwLGI9ITAseT0hMV09ZTooe2RlbGF5OmgsdHJhaWxpbmc6dj0hMCxsZWFkaW5nOmI9ITAscmVqZWN0T25DYW5jZWw6eT0hMX09ZVswXSk7Y29uc3QgY2xlYXI9KCk9PntjJiYoY2xlYXJUaW1lb3V0KGMpLGM9dm9pZCAwLF8oKSxfPW5vb3ApfTtyZXR1cm4gZT0+e2NvbnN0IFQ9WW4udG9WYWx1ZShoKSxOPURhdGUubm93KCktRSxpbnZva2UkMT0oKT0+ZD1lKCk7cmV0dXJuIGNsZWFyKCksVDw9MD8oRT1EYXRlLm5vdygpLGludm9rZSQxKCkpOihOPlQ/KEU9RGF0ZS5ub3coKSwhYiYma3x8aW52b2tlJDEoKSk6diYmKGQ9bmV3IFByb21pc2UoKGUsZCk9PntfPXk/ZDplLGM9c2V0VGltZW91dCgoKT0+e0U9RGF0ZS5ub3coKSxrPSEwLGUoaW52b2tlJDEoKSksY2xlYXIoKX0sTWF0aC5tYXgoMCxULU4pKX0pKSxifHxjfHwoYz1zZXRUaW1lb3V0KCgpPT5rPSEwLFQpKSxrPSExLGQpfX0oYyxkLGgsdiksZSl9ZnVuY3Rpb24gcmVmVGhyb3R0bGVkKGUsYz0yMDAsZD0hMCxoPSEwKXtpZihjPD0wKXJldHVybiBlO2NvbnN0IHY9WW4ucmVmKFluLnRvVmFsdWUoZSkpLGI9dXNlVGhyb3R0bGVGbigoKT0+e3YudmFsdWU9ZS52YWx1ZX0sYyxkLGgpO3JldHVybiBZbi53YXRjaChlLCgpPT5iKCkpLHZ9ZnVuY3Rpb24gd2F0Y2hXaXRoRmlsdGVyKGUsYyxkPXt9KXtjb25zdHtldmVudEZpbHRlcjpoPWJ5cGFzc0ZpbHRlciwuLi52fT1kO3JldHVybiBZbi53YXRjaChlLGNyZWF0ZUZpbHRlcldyYXBwZXIoaCxjKSx2KX1mdW5jdGlvbiB3YXRjaFBhdXNhYmxlKGUsYyxkPXt9KXtjb25zdHtldmVudEZpbHRlcjpoLGluaXRpYWxTdGF0ZTp2PSJhY3RpdmUiLC4uLmJ9PWQse2V2ZW50RmlsdGVyOnkscGF1c2U6RSxyZXN1bWU6ayxpc0FjdGl2ZTpffT1wYXVzYWJsZUZpbHRlcihoLHtpbml0aWFsU3RhdGU6dn0pO3JldHVybntzdG9wOndhdGNoV2l0aEZpbHRlcihlLGMsey4uLmIsZXZlbnRGaWx0ZXI6eX0pLHBhdXNlOkUscmVzdW1lOmssaXNBY3RpdmU6X319ZnVuY3Rpb24gc3luY1JlZihlLGMsLi4uW2RdKXtjb25zdHtmbHVzaDpoPSJzeW5jIixkZWVwOnY9ITEsaW1tZWRpYXRlOmI9ITAsZGlyZWN0aW9uOnk9ImJvdGgiLHRyYW5zZm9ybTpFPXt9fT1kfHx7fSxrPVtdLF89Imx0ciJpbiBFJiZFLmx0cnx8KGU9PmUpLFQ9InJ0bCJpbiBFJiZFLnJ0bHx8KGU9PmUpOyJib3RoIiE9PXkmJiJsdHIiIT09eXx8ay5wdXNoKHdhdGNoUGF1c2FibGUoZSxlPT57ay5mb3JFYWNoKGU9PmUucGF1c2UoKSksYy52YWx1ZT1fKGUpLGsuZm9yRWFjaChlPT5lLnJlc3VtZSgpKX0se2ZsdXNoOmgsZGVlcDp2LGltbWVkaWF0ZTpifSkpLCJib3RoIiE9PXkmJiJydGwiIT09eXx8ay5wdXNoKHdhdGNoUGF1c2FibGUoYyxjPT57ay5mb3JFYWNoKGU9PmUucGF1c2UoKSksZS52YWx1ZT1UKGMpLGsuZm9yRWFjaChlPT5lLnJlc3VtZSgpKX0se2ZsdXNoOmgsZGVlcDp2LGltbWVkaWF0ZTpifSkpO3JldHVybigpPT57ay5mb3JFYWNoKGU9PmUuc3RvcCgpKX19ZnVuY3Rpb24gdHJ5T25CZWZvcmVVbm1vdW50KGUsYyl7Z2V0TGlmZUN5Y2xlVGFyZ2V0KCl9ZnVuY3Rpb24gdHJ5T25Nb3VudGVkKGUsYz0hMCxkKXtnZXRMaWZlQ3ljbGVUYXJnZXQoKXx8KGM/ZSgpOlluLm5leHRUaWNrKGUpKX1mdW5jdGlvbiB1c2VJbnRlcnZhbEZuKGUsYz0xZTMsZD17fSl7Y29uc3R7aW1tZWRpYXRlOmg9ITAsaW1tZWRpYXRlQ2FsbGJhY2s6dj0hMX09ZDtsZXQgYj1udWxsO2NvbnN0IHk9WW4uc2hhbGxvd1JlZighMSk7ZnVuY3Rpb24gY2xlYW4oKXtiJiYoY2xlYXJJbnRlcnZhbChiKSxiPW51bGwpfWZ1bmN0aW9uIHBhdXNlKCl7eS52YWx1ZT0hMSxjbGVhbigpfXJldHVybihZbi5pc1JlZihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpJiZ0cnlPblNjb3BlRGlzcG9zZShZbi53YXRjaChjLCgpPT57eS52YWx1ZSwwfSkpLHRyeU9uU2NvcGVEaXNwb3NlKHBhdXNlKSx7aXNBY3RpdmU6WW4uc2hhbGxvd1JlYWRvbmx5KHkpLHBhdXNlOnBhdXNlLHJlc3VtZTpmdW5jdGlvbigpe2NvbnN0IGQ9WW4udG9WYWx1ZShjKTtkPD0wfHwoeS52YWx1ZT0hMCx2JiZlKCksY2xlYW4oKSx5LnZhbHVlJiYoYj1zZXRJbnRlcnZhbChlLGQpKSl9fX1mdW5jdGlvbiB1c2VUaW1lb3V0Rm4oZSxjLGQ9e30pe2NvbnN0e2ltbWVkaWF0ZTpoPSEwLGltbWVkaWF0ZUNhbGxiYWNrOnY9ITF9PWQsYj1Zbi5zaGFsbG93UmVmKCExKTtsZXQgeTtmdW5jdGlvbiBjbGVhcigpe3kmJihjbGVhclRpbWVvdXQoeSkseT12b2lkIDApfWZ1bmN0aW9uIHN0b3AoKXtiLnZhbHVlPSExLGNsZWFyKCl9cmV0dXJuIGgmJihiLnZhbHVlPSEwKSx0cnlPblNjb3BlRGlzcG9zZShzdG9wKSx7aXNQZW5kaW5nOlluLnNoYWxsb3dSZWFkb25seShiKSxzdGFydDpmdW5jdGlvbiguLi5kKXt2JiZlKCksY2xlYXIoKSxiLnZhbHVlPSEwLHk9c2V0VGltZW91dCgoKT0+e2IudmFsdWU9ITEseT12b2lkIDAsZSguLi5kKX0sWW4udG9WYWx1ZShjKSl9LHN0b3A6c3RvcH19ZnVuY3Rpb24gd2F0Y2hEZWJvdW5jZWQoZSxjLGQ9e30pe2NvbnN0e2RlYm91bmNlOmg9MCxtYXhXYWl0OnYsLi4uYn09ZDtyZXR1cm4gd2F0Y2hXaXRoRmlsdGVyKGUsYyx7Li4uYixldmVudEZpbHRlcjpkZWJvdW5jZUZpbHRlcihoLHttYXhXYWl0OnZ9KX0pfWZ1bmN0aW9uIHdoZW5ldmVyKGUsYyxkKXtyZXR1cm4gWW4ud2F0Y2goZSwoZSxjLGQpPT57fSx7Li4uZCxvbmNlOiExfSl9ZnVuY3Rpb24gY3JlYXRlUmV1c2FibGVUZW1wbGF0ZShlPXt9KXtjb25zdHtpbmhlcml0QXR0cnM6Yz0hMH09ZSxkPVluLnNoYWxsb3dSZWYoKSxoPVluLmRlZmluZUNvbXBvbmVudCh7c2V0dXA6KGUse3Nsb3RzOmN9KT0+KCk9PntkLnZhbHVlPWMuZGVmYXVsdH19KSx2PVluLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOmMscHJvcHM6ZS5wcm9wcyxzZXR1cDooaCx7YXR0cnM6dixzbG90czpifSk9PigpPT57dmFyIHk7aWYoIWQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJbVnVlVXNlXSBGYWlsZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvZiByZXVzYWJsZSB0ZW1wbGF0ZSIpO2NvbnN0IEU9bnVsbD09PSh5PWQudmFsdWUpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LmNhbGwoZCx7Li4ubnVsbD09ZS5wcm9wcz9rZXlzVG9DYW1lbEtlYmFiQ2FzZSh2KTpoLCRzbG90czpifSk7cmV0dXJuIGMmJjE9PT0obnVsbD09RT92b2lkIDA6RS5sZW5ndGgpP0VbMF06RX19KTtyZXR1cm4gbWFrZURlc3RydWN0dXJhYmxlKHtkZWZpbmU6aCxyZXVzZTp2fSxbaCx2XSl9ZnVuY3Rpb24ga2V5c1RvQ2FtZWxLZWJhYkNhc2UoZSl7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBlKWNbZXMoZCldPWVbZF07cmV0dXJuIGN9Y29uc3QgdHM9dm9pZCAwLG5zPXZvaWQgMDtmdW5jdGlvbiB1bnJlZkVsZW1lbnQoZSl7dmFyIGM7Y29uc3QgZD1Zbi50b1ZhbHVlKGUpO3JldHVybiBudWxsIT09KGM9bnVsbD09ZD92b2lkIDA6ZC4kZWwpJiZ2b2lkIDAhPT1jP2M6ZH1mdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyKC4uLmUpe2NvbnN0IGM9WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBjPXRvQXJyYXkoWW4udG9WYWx1ZShlWzBdKSkuZmlsdGVyKGU9Pm51bGwhPWUpO3JldHVybiBjLmV2ZXJ5KGU9PiJzdHJpbmciIT10eXBlb2YgZSk/Yzp2b2lkIDB9KTtyZXR1cm4gZD0oKT0+e3ZhciBkLGg7cmV0dXJuW251bGwhPT0oZD1udWxsPT09KGg9Yy52YWx1ZSl8fHZvaWQgMD09PWg/dm9pZCAwOmgubWFwKGU9PnVucmVmRWxlbWVudChlKSkpJiZ2b2lkIDAhPT1kP2Q6W3RzXS5maWx0ZXIoZT0+bnVsbCE9ZSksdG9BcnJheShZbi50b1ZhbHVlKGMudmFsdWU/ZVsxXTplWzBdKSksdG9BcnJheShZbi51bnJlZihjLnZhbHVlP2VbMl06ZVsxXSkpLFluLnRvVmFsdWUoYy52YWx1ZT9lWzNdOmVbMl0pXX0saD0oW2UsYyxkLGhdLHYsYik9PntpZighKG51bGw9PWU/dm9pZCAwOmUubGVuZ3RoKXx8IShudWxsPT1jP3ZvaWQgMDpjLmxlbmd0aCl8fCEobnVsbD09ZD92b2lkIDA6ZC5sZW5ndGgpKXJldHVybjtjb25zdCB5PShFPWgsIltvYmplY3QgT2JqZWN0XSI9PT1ZaS5jYWxsKEUpP3suLi5ofTpoKTt2YXIgRTtjb25zdCBrPWUuZmxhdE1hcChlPT5jLmZsYXRNYXAoYz0+ZC5tYXAoZD0+KChlLGMsZCxoKT0+KGUuYWRkRXZlbnRMaXN0ZW5lcihjLGQsaCksKCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLGQsaCkpKShlLGMsZCx5KSkpKTtiKCgpPT57ay5mb3JFYWNoKGU9PmUoKSl9KX0sdj17Zmx1c2g6InBvc3QifSxZbi53YXRjaChkLGgsey4uLnYsaW1tZWRpYXRlOiEwfSk7dmFyIGQsaCx2fWZ1bmN0aW9uIHVzZU1vdW50ZWQoKXtjb25zdCBlPVluLnNoYWxsb3dSZWYoITEpO3JldHVybiBZbi5nZXRDdXJyZW50SW5zdGFuY2UoKSxlfWZ1bmN0aW9uIHVzZVN1cHBvcnRlZChlKXtjb25zdCBjPXVzZU1vdW50ZWQoKTtyZXR1cm4gWW4uY29tcHV0ZWQoKCk9PihjLnZhbHVlLEJvb2xlYW4oZSgpKSkpfWZ1bmN0aW9uIHVzZU11dGF0aW9uT2JzZXJ2ZXIoZSxjLGQ9e30pe2NvbnN0e3dpbmRvdzpoPXRzLC4uLnZ9PWQ7bGV0IGI7Y29uc3QgeT11c2VTdXBwb3J0ZWQoKCk9PmgmJiJNdXRhdGlvbk9ic2VydmVyImluIGgpLGNsZWFudXA9KCk9PntiJiYoYi5kaXNjb25uZWN0KCksYj12b2lkIDApfSxFPVluLndhdGNoKFluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz10b0FycmF5KFluLnRvVmFsdWUoZSkpLm1hcCh1bnJlZkVsZW1lbnQpLmZpbHRlcihub3ROdWxsaXNoKTtyZXR1cm4gbmV3IFNldChjKX0pLGU9PntjbGVhbnVwKCkseS52YWx1ZSYmZS5zaXplJiYoYj1uZXcgTXV0YXRpb25PYnNlcnZlcihjKSxlLmZvckVhY2goZT0+Yi5vYnNlcnZlKGUsdikpKX0se2ltbWVkaWF0ZTohMCxmbHVzaDoicG9zdCJ9KSxzdG9wPSgpPT57RSgpLGNsZWFudXAoKX07cmV0dXJuIHRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApLHtpc1N1cHBvcnRlZDp5LHN0b3A6c3RvcCx0YWtlUmVjb3JkczooKT0+bnVsbD09Yj92b2lkIDA6Yi50YWtlUmVjb3JkcygpfX1mdW5jdGlvbiBvbktleVN0cm9rZSguLi5lKXtsZXQgYyxkLGg9e307Mz09PWUubGVuZ3RoPyhjPWVbMF0sZD1lWzFdLGg9ZVsyXSk6Mj09PWUubGVuZ3RoPyJvYmplY3QiPT10eXBlb2YgZVsxXT8oYz0hMCxkPWVbMF0saD1lWzFdKTooYz1lWzBdLGQ9ZVsxXSk6KGM9ITAsZD1lWzBdKTtjb25zdHt0YXJnZXQ6dj10cyxldmVudE5hbWU6Yj0ia2V5ZG93biIscGFzc2l2ZTp5PSExLGRlZHVwZTpFPSExfT1oLGs9ImZ1bmN0aW9uIj09dHlwZW9mKF89Yyk/Xzoic3RyaW5nIj09dHlwZW9mIF8/ZT0+ZS5rZXk9PT1fOkFycmF5LmlzQXJyYXkoXyk/ZT0+Xy5pbmNsdWRlcyhlLmtleSk6KCk9PiEwO3ZhciBfO3JldHVybiB1c2VFdmVudExpc3RlbmVyKHYsYixlPT57ZS5yZXBlYXQmJlluLnRvVmFsdWUoRSl8fGsoZSkmJmQoZSl9LHkpfWZ1bmN0aW9uIHVzZUFjdGl2ZUVsZW1lbnQoZT17fSl7dmFyIGM7Y29uc3R7d2luZG93OmQ9dHMsZGVlcDpoPSEwLHRyaWdnZXJPblJlbW92YWw6dj0hMX09ZSxiPW51bGwhPT0oYz1lLmRvY3VtZW50KSYmdm9pZCAwIT09Yz9jOm51bGw9PWQ/dm9pZCAwOmQuZG9jdW1lbnQseT1Zbi5zaGFsbG93UmVmKCksdHJpZ2dlcj0oKT0+e3kudmFsdWU9KCgpPT57bGV0IGU9bnVsbD09Yj92b2lkIDA6Yi5hY3RpdmVFbGVtZW50O2lmKGgpZm9yKHZhciBjO251bGw9PWU/dm9pZCAwOmUuc2hhZG93Um9vdDspZT1udWxsPT1lfHxudWxsPT09KGM9ZS5zaGFkb3dSb290KXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5hY3RpdmVFbGVtZW50O3JldHVybiBlfSkoKX07aWYoZCl7Y29uc3QgZT17Y2FwdHVyZTohMCxwYXNzaXZlOiEwfTt1c2VFdmVudExpc3RlbmVyKGQsImJsdXIiLGU9PntudWxsPT09ZS5yZWxhdGVkVGFyZ2V0JiZ0cmlnZ2VyKCl9LGUpLHVzZUV2ZW50TGlzdGVuZXIoZCwiZm9jdXMiLHRyaWdnZXIsZSl9cmV0dXJuIHYmJmZ1bmN0aW9uKGUsYyxkPXt9KXtjb25zdHt3aW5kb3c6aD10cyxkb2N1bWVudDp2PShudWxsPT1oP3ZvaWQgMDpoLmRvY3VtZW50KSxmbHVzaDpiPSJzeW5jIn09ZDtpZighaHx8IXYpcmV0dXJuIG5vb3A7bGV0IHk7Y29uc3QgY2xlYW51cEFuZFVwZGF0ZT1lPT57bnVsbD09eXx8eSgpLHk9ZX0sRT1Zbi53YXRjaEVmZmVjdCgoKT0+e2NvbnN0IGQ9dW5yZWZFbGVtZW50KGUpO2lmKGQpe2NvbnN0e3N0b3A6ZX09dXNlTXV0YXRpb25PYnNlcnZlcih2LGU9PntlLm1hcChlPT5bLi4uZS5yZW1vdmVkTm9kZXNdKS5mbGF0KCkuc29tZShlPT5lPT09ZHx8ZS5jb250YWlucyhkKSkmJmMoZSl9LHt3aW5kb3c6aCxjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO2NsZWFudXBBbmRVcGRhdGUoZSl9fSx7Zmx1c2g6Yn0pLHN0b3BIYW5kbGU9KCk9PntFKCksY2xlYW51cEFuZFVwZGF0ZSgpfTt0cnlPblNjb3BlRGlzcG9zZShzdG9wSGFuZGxlKX0oeSx0cmlnZ2VyLHtkb2N1bWVudDpifSksdHJpZ2dlcigpLHl9ZnVuY3Rpb24gdXNlUmFmRm4oZSxjPXt9KXtjb25zdHtpbW1lZGlhdGU6ZD0hMCxmcHNMaW1pdDpoPW51bGwsd2luZG93OnY9dHMsb25jZTpiPSExfT1jLHk9WW4uc2hhbGxvd1JlZighMSksRT1Zbi5jb21wdXRlZCgoKT0+e2NvbnN0IGU9WW4udG9WYWx1ZShoKTtyZXR1cm4gZT8xZTMvZTpudWxsfSk7bGV0IGs9MCxfPW51bGw7ZnVuY3Rpb24gbG9vcChjKXtpZigheS52YWx1ZXx8IXYpcmV0dXJuO2t8fChrPWMpO2NvbnN0IGQ9Yy1rO2lmKEUudmFsdWUmJmQ8RS52YWx1ZSlfPXYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO2Vsc2V7aWYoaz1jLGUoe2RlbHRhOmQsdGltZXN0YW1wOmN9KSxiKXJldHVybiB5LnZhbHVlPSExLHZvaWQoXz1udWxsKTtfPXYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApfX1mdW5jdGlvbiByZXN1bWUoKXsheS52YWx1ZSYmdiYmKHkudmFsdWU9ITAsaz0wLF89di5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCkpfWZ1bmN0aW9uIHBhdXNlKCl7eS52YWx1ZT0hMSxudWxsIT1fJiZ2JiYodi5jYW5jZWxBbmltYXRpb25GcmFtZShfKSxfPW51bGwpfXJldHVybiBkJiZyZXN1bWUoKSx0cnlPblNjb3BlRGlzcG9zZShwYXVzZSkse2lzQWN0aXZlOlluLnJlYWRvbmx5KHkpLHBhdXNlOnBhdXNlLHJlc3VtZTpyZXN1bWV9fWZ1bmN0aW9uIHVzZVBlcm1pc3Npb24oZSxjPXt9KXtjb25zdHtjb250cm9sczpkPSExLG5hdmlnYXRvcjpoPW5zfT1jLHY9dXNlU3VwcG9ydGVkKCgpPT5oJiYicGVybWlzc2lvbnMiaW4gaCksYj1Zbi5zaGFsbG93UmVmKCkseT0ic3RyaW5nIj09dHlwZW9mIGU/e25hbWU6ZX06ZSxFPVluLnNoYWxsb3dSZWYoKSx1cGRhdGU9KCk9Pnt2YXIgZSxjO0UudmFsdWU9bnVsbCE9PShlPW51bGw9PT0oYz1iLnZhbHVlKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdGF0ZSkmJnZvaWQgMCE9PWU/ZToicHJvbXB0In07dXNlRXZlbnRMaXN0ZW5lcihiLCJjaGFuZ2UiLHVwZGF0ZSx7cGFzc2l2ZTohMH0pO2NvbnN0IGs9ZnVuY3Rpb24oZSl7bGV0IGM7ZnVuY3Rpb24gd3JhcHBlcigpe3JldHVybiBjfHwoYz1lKCkpLGN9cmV0dXJuIHdyYXBwZXIucmVzZXQ9YXN5bmMoKT0+e2NvbnN0IGU9YztjPXZvaWQgMCxlJiZhd2FpdCBlfSx3cmFwcGVyfShhc3luYygpPT57aWYodi52YWx1ZSl7aWYoIWIudmFsdWUpdHJ5e2IudmFsdWU9YXdhaXQgaC5wZXJtaXNzaW9ucy5xdWVyeSh5KX1jYXRjaChlKXtiLnZhbHVlPXZvaWQgMH1maW5hbGx5e3VwZGF0ZSgpfXJldHVybiBkP1luLnRvUmF3KGIudmFsdWUpOnZvaWQgMH19KTtyZXR1cm4gaygpLGQ/e3N0YXRlOkUsaXNTdXBwb3J0ZWQ6dixxdWVyeTprfTpFfWZ1bmN0aW9uIHVzZUNsaXBib2FyZChlPXt9KXtjb25zdHtuYXZpZ2F0b3I6Yz1ucyxyZWFkOmQ9ITEsc291cmNlOmgsY29waWVkRHVyaW5nOnY9MTUwMCxsZWdhY3k6Yj0hMX09ZSx5PXVzZVN1cHBvcnRlZCgoKT0+YyYmImNsaXBib2FyZCJpbiBjKSxFPXVzZVBlcm1pc3Npb24oImNsaXBib2FyZC1yZWFkIiksaz11c2VQZXJtaXNzaW9uKCJjbGlwYm9hcmQtd3JpdGUiKSxfPVluLmNvbXB1dGVkKCgpPT55LnZhbHVlfHxiKSxUPVluLnNoYWxsb3dSZWYoIiIpLE49WW4uc2hhbGxvd1JlZighMSksTz11c2VUaW1lb3V0Rm4oKCk9Pk4udmFsdWU9ITEsdix7aW1tZWRpYXRlOiExfSk7ZnVuY3Rpb24gaXNBbGxvd2VkKGUpe3JldHVybiJncmFudGVkIj09PWV8fCJwcm9tcHQiPT09ZX1yZXR1cm4gXy52YWx1ZSYmZCYmdXNlRXZlbnRMaXN0ZW5lcihbImNvcHkiLCJjdXQiXSxhc3luYyBmdW5jdGlvbigpe2xldCBlPSEoeS52YWx1ZSYmaXNBbGxvd2VkKEUudmFsdWUpKTtpZighZSl0cnl7VC52YWx1ZT1hd2FpdCBjLmNsaXBib2FyZC5yZWFkVGV4dCgpfWNhdGNoKGMpe2U9ITB9dmFyIGQsaCx2O2UmJihULnZhbHVlPW51bGwhPT0oZD1udWxsPT09KGg9dm9pZCAwKXx8dm9pZCAwPT09aHx8bnVsbD09PSh2PWguZ2V0U2VsZWN0aW9uKXx8dm9pZCAwPT09dnx8bnVsbD09PSh2PXYuY2FsbChoKSl8fHZvaWQgMD09PXY/dm9pZCAwOnYudG9TdHJpbmcoKSkmJnZvaWQgMCE9PWQ/ZDoiIil9LHtwYXNzaXZlOiEwfSkse2lzU3VwcG9ydGVkOl8sdGV4dDpZbi5yZWFkb25seShUKSxjb3BpZWQ6WW4ucmVhZG9ubHkoTiksY29weTphc3luYyBmdW5jdGlvbihlPVluLnRvVmFsdWUoaCkpe2lmKF8udmFsdWUmJm51bGwhPWUpe2xldCBkPSEoeS52YWx1ZSYmaXNBbGxvd2VkKGsudmFsdWUpKTtpZighZCl0cnl7YXdhaXQgYy5jbGlwYm9hcmQud3JpdGVUZXh0KGUpfWNhdGNoKGUpe2Q9ITB9ZCYmZnVuY3Rpb24oZSl7Y29uc3QgYz0odm9pZCAwKS5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2MudmFsdWU9ZSxjLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYy5zdHlsZS5vcGFjaXR5PSIwIixjLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKSwodm9pZCAwKS5ib2R5LmFwcGVuZENoaWxkKGMpLGMuc2VsZWN0KCksKHZvaWQgMCkuZXhlY0NvbW1hbmQoImNvcHkiKSxjLnJlbW92ZSgpfShlKSxULnZhbHVlPWUsTi52YWx1ZT0hMCxPLnN0YXJ0KCl9fX19Y29uc3Qgb3M9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dm9pZCAwIT09TT9NOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9LHJzPSJfX3Z1ZXVzZV9zc3JfaGFuZGxlcnNfXyIsYXM9Z2V0SGFuZGxlcnMoKTtmdW5jdGlvbiBnZXRIYW5kbGVycygpe3JldHVybiBycyBpbiBvc3x8KG9zW3JzXT1vc1tyc118fHt9KSxvc1tyc119Y29uc3QgaXM9e2Jvb2xlYW46e3JlYWQ6ZT0+InRydWUiPT09ZSx3cml0ZTplPT5TdHJpbmcoZSl9LG9iamVjdDp7cmVhZDplPT5KU09OLnBhcnNlKGUpLHdyaXRlOmU9PkpTT04uc3RyaW5naWZ5KGUpfSxudW1iZXI6e3JlYWQ6ZT0+TnVtYmVyLnBhcnNlRmxvYXQoZSksd3JpdGU6ZT0+U3RyaW5nKGUpfSxhbnk6e3JlYWQ6ZT0+ZSx3cml0ZTplPT5TdHJpbmcoZSl9LHN0cmluZzp7cmVhZDplPT5lLHdyaXRlOmU9PlN0cmluZyhlKX0sbWFwOntyZWFkOmU9Pm5ldyBNYXAoSlNPTi5wYXJzZShlKSksd3JpdGU6ZT0+SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShlLmVudHJpZXMoKSkpfSxzZXQ6e3JlYWQ6ZT0+bmV3IFNldChKU09OLnBhcnNlKGUpKSx3cml0ZTplPT5KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGUpKX0sZGF0ZTp7cmVhZDplPT5uZXcgRGF0ZShlKSx3cml0ZTplPT5lLnRvSVNPU3RyaW5nKCl9fSxzcz0idnVldXNlLXN0b3JhZ2UiO2Z1bmN0aW9uIHVzZVN0b3JhZ2UoZSxjLGQsaD17fSl7dmFyIHY7Y29uc3R7Zmx1c2g6Yj0icHJlIixkZWVwOnk9ITAsbGlzdGVuVG9TdG9yYWdlQ2hhbmdlczpFPSEwLHdyaXRlRGVmYXVsdHM6az0hMCxtZXJnZURlZmF1bHRzOl89ITEsc2hhbGxvdzpULHdpbmRvdzpOPXRzLGV2ZW50RmlsdGVyOk8sb25FcnJvcjpSPWU9Pnt9LGluaXRPbk1vdW50ZWQ6TX09aCxEPShUP1luLnNoYWxsb3dSZWY6WW4ucmVmKSgiZnVuY3Rpb24iPT10eXBlb2YgYz9jKCk6YyksTD1Zbi5jb21wdXRlZCgoKT0+WW4udG9WYWx1ZShlKSk7aWYoIWQpdHJ5e2Q9ZnVuY3Rpb24oZSxjKXtyZXR1cm4gYXNbZV18fGN9KCJnZXREZWZhdWx0U3RvcmFnZSIsKCk9Pm51bGw9PXRzP3ZvaWQgMDp0cy5sb2NhbFN0b3JhZ2UpKCl9Y2F0Y2goZSl7UihlKX1pZighZClyZXR1cm4gRDtjb25zdCAkPVluLnRvVmFsdWUoYyksRj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iYW55IjplIGluc3RhbmNlb2YgU2V0PyJzZXQiOmUgaW5zdGFuY2VvZiBNYXA/Im1hcCI6ZSBpbnN0YW5jZW9mIERhdGU/ImRhdGUiOiJib29sZWFuIj09dHlwZW9mIGU/ImJvb2xlYW4iOiJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoib2JqZWN0Ij09dHlwZW9mIGU/Im9iamVjdCI6TnVtYmVyLmlzTmFOKGUpPyJhbnkiOiJudW1iZXIifSgkKSxWPW51bGwhPT0odj1oLnNlcmlhbGl6ZXIpJiZ2b2lkIDAhPT12P3Y6aXNbRl0se3BhdXNlOnEscmVzdW1lOlV9PXdhdGNoUGF1c2FibGUoRCxlPT5mdW5jdGlvbihlKXt0cnl7Y29uc3QgYz1kLmdldEl0ZW0oTC52YWx1ZSk7aWYobnVsbD09ZSlkaXNwYXRjaFdyaXRlRXZlbnQoYyxudWxsKSxkLnJlbW92ZUl0ZW0oTC52YWx1ZSk7ZWxzZXtjb25zdCBoPVYud3JpdGUoZSk7YyE9PWgmJihkLnNldEl0ZW0oTC52YWx1ZSxoKSxkaXNwYXRjaFdyaXRlRXZlbnQoYyxoKSl9fWNhdGNoKGUpe1IoZSl9fShlKSx7Zmx1c2g6YixkZWVwOnksZXZlbnRGaWx0ZXI6T30pO1luLndhdGNoKEwsKCk9PnVwZGF0ZSgpLHtmbHVzaDpifSk7bGV0IFc9ITE7ZnVuY3Rpb24gZGlzcGF0Y2hXcml0ZUV2ZW50KGUsYyl7aWYoTil7Y29uc3QgaD17a2V5OkwudmFsdWUsb2xkVmFsdWU6ZSxuZXdWYWx1ZTpjLHN0b3JhZ2VBcmVhOmR9O04uZGlzcGF0Y2hFdmVudChkIGluc3RhbmNlb2YgU3RvcmFnZT9uZXcgU3RvcmFnZUV2ZW50KCJzdG9yYWdlIixoKTpuZXcgQ3VzdG9tRXZlbnQoc3Mse2RldGFpbDpofSkpfX1mdW5jdGlvbiB1cGRhdGUoZSl7aWYoIWV8fGUuc3RvcmFnZUFyZWE9PT1kKWlmKGUmJm51bGw9PWUua2V5KUQudmFsdWU9JDtlbHNlIGlmKCFlfHxlLmtleT09PUwudmFsdWUpe3EoKTt0cnl7Y29uc3QgYz1WLndyaXRlKEQudmFsdWUpO3ZvaWQgMCE9PWUmJihudWxsPT1lP3ZvaWQgMDplLm5ld1ZhbHVlKT09PWN8fChELnZhbHVlPWZ1bmN0aW9uKGUpe2NvbnN0IGM9ZT9lLm5ld1ZhbHVlOmQuZ2V0SXRlbShMLnZhbHVlKTtpZihudWxsPT1jKXJldHVybiBrJiZudWxsIT0kJiZkLnNldEl0ZW0oTC52YWx1ZSxWLndyaXRlKCQpKSwkO2lmKCFlJiZfKXtjb25zdCBlPVYucmVhZChjKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgXz9fKGUsJCk6Im9iamVjdCIhPT1GfHxBcnJheS5pc0FycmF5KGUpP2U6ey4uLiQsLi4uZX19cmV0dXJuInN0cmluZyIhPXR5cGVvZiBjP2M6Vi5yZWFkKGMpfShlKSl9Y2F0Y2goZSl7UihlKX1maW5hbGx5e2U/WW4ubmV4dFRpY2soVSk6VSgpfX19cmV0dXJuIE4mJkUmJihkIGluc3RhbmNlb2YgU3RvcmFnZT91c2VFdmVudExpc3RlbmVyKE4sInN0b3JhZ2UiLGU9PntNJiYhV3x8dXBkYXRlKGUpfSx7cGFzc2l2ZTohMH0pOnVzZUV2ZW50TGlzdGVuZXIoTixzcyxlPT57TSYmIVd8fHVwZGF0ZShlLmRldGFpbCl9KSksTT90cnlPbk1vdW50ZWQoKCk9PntXPSEwLHVwZGF0ZSgpfSk6dXBkYXRlKCksRH1mdW5jdGlvbiB1c2VDdXJyZW50RWxlbWVudChlKXtjb25zdCBjPVluLmdldEN1cnJlbnRJbnN0YW5jZSgpLGQ9ZnVuY3Rpb24oZSxjLGQ9e30pe2xldCBoLHYsYix5PSEwO2NvbnN0IHVwZGF0ZT0oKT0+e3k9ITAsYigpfTtZbi53YXRjaChlLHVwZGF0ZSx7Zmx1c2g6InN5bmMiLC4uLmR9KTtjb25zdCBFPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2M6Yy5nZXQsaz0iZnVuY3Rpb24iPT10eXBlb2YgYz92b2lkIDA6Yy5zZXQsXz1Zbi5jdXN0b21SZWYoKGUsYyk9Pih2PWUsYj1jLHtnZXQ6KCk9Pih5JiYoaD1FKGgpLHk9ITEpLHYoKSxoKSxzZXQoZSl7bnVsbD09a3x8ayhlKX19KSk7cmV0dXJuIF8udHJpZ2dlcj11cGRhdGUsX30oKCk9Pm51bGwsKCk9PmMucHJveHkuJGVsKTtyZXR1cm4gZH1mdW5jdGlvbiB1c2VSZXNpemVPYnNlcnZlcihlLGMsZD17fSl7Y29uc3R7d2luZG93Omg9dHMsLi4udn09ZDtsZXQgYjtjb25zdCB5PXVzZVN1cHBvcnRlZCgoKT0+aCYmIlJlc2l6ZU9ic2VydmVyImluIGgpLGNsZWFudXA9KCk9PntiJiYoYi5kaXNjb25uZWN0KCksYj12b2lkIDApfSxFPVluLndhdGNoKFluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz1Zbi50b1ZhbHVlKGUpO3JldHVybiBBcnJheS5pc0FycmF5KGMpP2MubWFwKGU9PnVucmVmRWxlbWVudChlKSk6W3VucmVmRWxlbWVudChjKV19KSxlPT57aWYoY2xlYW51cCgpLHkudmFsdWUmJmgpe2I9bmV3IFJlc2l6ZU9ic2VydmVyKGMpO2Zvcihjb25zdCBjIG9mIGUpYyYmYi5vYnNlcnZlKGMsdil9fSx7aW1tZWRpYXRlOiEwLGZsdXNoOiJwb3N0In0pLHN0b3A9KCk9PntjbGVhbnVwKCksRSgpfTtyZXR1cm4gdHJ5T25TY29wZURpc3Bvc2Uoc3RvcCkse2lzU3VwcG9ydGVkOnksc3RvcDpzdG9wfX1mdW5jdGlvbiB1c2VFbGVtZW50VmlzaWJpbGl0eShlLGM9e30pe2NvbnN0e3dpbmRvdzpkPXRzLHNjcm9sbFRhcmdldDpoLHRocmVzaG9sZDp2PTAscm9vdE1hcmdpbjpiLG9uY2U6eT0hMSxpbml0aWFsVmFsdWU6RT0hMX09YyxrPVluLnNoYWxsb3dSZWYoRSkse3N0b3A6X309ZnVuY3Rpb24oZSxjLGQ9e30pe2NvbnN0e3Jvb3Q6aCxyb290TWFyZ2luOnYsdGhyZXNob2xkOmI9MCx3aW5kb3c6eT10cyxpbW1lZGlhdGU6RT0hMH09ZCxrPXVzZVN1cHBvcnRlZCgoKT0+eSYmIkludGVyc2VjdGlvbk9ic2VydmVyImluIHkpLF89WW4uY29tcHV0ZWQoKCk9PnRvQXJyYXkoWW4udG9WYWx1ZShlKSkubWFwKHVucmVmRWxlbWVudCkuZmlsdGVyKG5vdE51bGxpc2gpKTtsZXQgVD1ub29wO2NvbnN0IE49WW4uc2hhbGxvd1JlZihFKSxPPWsudmFsdWU/WW4ud2F0Y2goKCk9PltfLnZhbHVlLHVucmVmRWxlbWVudChoKSxZbi50b1ZhbHVlKHYpLE4udmFsdWVdLChbZSxkLGhdKT0+e2lmKFQoKSwhTi52YWx1ZSlyZXR1cm47aWYoIWUubGVuZ3RoKXJldHVybjtjb25zdCB2PW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjLHtyb290OnVucmVmRWxlbWVudChkKSxyb290TWFyZ2luOmgsdGhyZXNob2xkOmJ9KTtlLmZvckVhY2goZT0+ZSYmdi5vYnNlcnZlKGUpKSxUPSgpPT57di5kaXNjb25uZWN0KCksVD1ub29wfX0se2ltbWVkaWF0ZTpFLGZsdXNoOiJwb3N0In0pOm5vb3Asc3RvcD0oKT0+e1QoKSxPKCksTi52YWx1ZT0hMX07cmV0dXJuIHRyeU9uU2NvcGVEaXNwb3NlKHN0b3ApLHtpc1N1cHBvcnRlZDprLGlzQWN0aXZlOk4scGF1c2UoKXtUKCksTi52YWx1ZT0hMX0scmVzdW1lKCl7Ti52YWx1ZT0hMH0sc3RvcDpzdG9wfX0oZSxlPT57bGV0IGM9ay52YWx1ZSxkPTA7Zm9yKGNvbnN0IGggb2YgZSloLnRpbWU+PWQmJihkPWgudGltZSxjPWguaXNJbnRlcnNlY3RpbmcpO2sudmFsdWU9Yyx5JiZmdW5jdGlvbihlLGMsZCl7WW4ud2F0Y2goZSxjLHsuLi5kLG9uY2U6ITB9KX0oaywoKT0+e18oKX0pfSx7cm9vdDpoLHdpbmRvdzpkLHRocmVzaG9sZDp2LHJvb3RNYXJnaW46Yn0pO3JldHVybiBrfWNvbnN0IGxzPW5ldyBNYXA7ZnVuY3Rpb24gdXNlRXZlbnRCdXMoZSl7Y29uc3QgYz1Zbi5nZXRDdXJyZW50U2NvcGUoKTtmdW5jdGlvbiBvbihkKXt2YXIgaDtjb25zdCB2PWxzLmdldChlKXx8bmV3IFNldDt2LmFkZChkKSxscy5zZXQoZSx2KTtjb25zdCBfb2ZmPSgpPT5vZmYoZCk7cmV0dXJuIG51bGw9PWN8fG51bGw9PT0oaD1jLmNsZWFudXBzKXx8dm9pZCAwPT09aHx8aC5wdXNoKF9vZmYpLF9vZmZ9ZnVuY3Rpb24gb2ZmKGMpe2NvbnN0IGQ9bHMuZ2V0KGUpO2QmJihkLmRlbGV0ZShjKSxkLnNpemV8fHJlc2V0KCkpfWZ1bmN0aW9uIHJlc2V0KCl7bHMuZGVsZXRlKGUpfXJldHVybntvbjpvbixvbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBvbihmdW5jdGlvbiBfbGlzdGVuZXIoLi4uYyl7b2ZmKF9saXN0ZW5lciksZSguLi5jKX0pfSxvZmY6b2ZmLGVtaXQ6ZnVuY3Rpb24oYyxkKXt2YXIgaDtudWxsPT09KGg9bHMuZ2V0KGUpKXx8dm9pZCAwPT09aHx8aC5mb3JFYWNoKGU9PmUoYyxkKSl9LHJlc2V0OnJlc2V0fX1mdW5jdGlvbiB1c2VJbmZpbml0ZVNjcm9sbChlLGMsZD17fSl7dmFyIGg7Y29uc3R7ZGlyZWN0aW9uOnY9ImJvdHRvbSIsaW50ZXJ2YWw6Yj0xMDAsY2FuTG9hZE1vcmU6eT0oKT0+ITB9PWQsRT1Zbi5yZWFjdGl2ZShmdW5jdGlvbihlLGM9e30pe2NvbnN0e3Rocm90dGxlOmQ9MCxpZGxlOmg9MjAwLG9uU3RvcDp2PW5vb3Asb25TY3JvbGw6Yj1ub29wLG9mZnNldDp5PXtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH0sb2JzZXJ2ZTpFPXttdXRhdGlvbjohMX0sZXZlbnRMaXN0ZW5lck9wdGlvbnM6az17Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSxiZWhhdmlvcjpfPSJhdXRvIix3aW5kb3c6VD10cyxvbkVycm9yOk49ZT0+e319PWMsTz0iYm9vbGVhbiI9PXR5cGVvZiBFP3ttdXRhdGlvbjpFfTpFLFI9WW4uc2hhbGxvd1JlZigwKSxNPVluLnNoYWxsb3dSZWYoMCksRD1Zbi5jb21wdXRlZCh7Z2V0OigpPT5SLnZhbHVlLHNldChlKXtzY3JvbGxUbyhlLHZvaWQgMCl9fSksTD1Zbi5jb21wdXRlZCh7Z2V0OigpPT5NLnZhbHVlLHNldChlKXtzY3JvbGxUbyh2b2lkIDAsZSl9fSk7ZnVuY3Rpb24gc2Nyb2xsVG8oYyxkKXt2YXIgaCx2LGIseTtpZighVClyZXR1cm47Y29uc3QgRT1Zbi50b1ZhbHVlKGUpO2lmKCFFKXJldHVybjtudWxsPT09KGg9RSBpbnN0YW5jZW9mIERvY3VtZW50P1QuZG9jdW1lbnQuYm9keTpFKXx8dm9pZCAwPT09aHx8aC5zY3JvbGxUbyh7dG9wOm51bGwhPT0odj1Zbi50b1ZhbHVlKGQpKSYmdm9pZCAwIT09dj92OkwudmFsdWUsbGVmdDpudWxsIT09KGI9WW4udG9WYWx1ZShjKSkmJnZvaWQgMCE9PWI/YjpELnZhbHVlLGJlaGF2aW9yOlluLnRvVmFsdWUoXyl9KTtjb25zdCBrPShudWxsPT1FfHxudWxsPT09KHk9RS5kb2N1bWVudCl8fHZvaWQgMD09PXk/dm9pZCAwOnkuZG9jdW1lbnRFbGVtZW50KXx8KG51bGw9PUU/dm9pZCAwOkUuZG9jdW1lbnRFbGVtZW50KXx8RTtudWxsIT1EJiYoUi52YWx1ZT1rLnNjcm9sbExlZnQpLG51bGwhPUwmJihNLnZhbHVlPWsuc2Nyb2xsVG9wKX1jb25zdCAkPVluLnNoYWxsb3dSZWYoITEpLEY9WW4ucmVhY3RpdmUoe2xlZnQ6ITAscmlnaHQ6ITEsdG9wOiEwLGJvdHRvbTohMX0pLFY9WW4ucmVhY3RpdmUoe2xlZnQ6ITEscmlnaHQ6ITEsdG9wOiExLGJvdHRvbTohMX0pLG9uU2Nyb2xsRW5kPWU9PnskLnZhbHVlJiYoJC52YWx1ZT0hMSxWLmxlZnQ9ITEsVi5yaWdodD0hMSxWLnRvcD0hMSxWLmJvdHRvbT0hMSx2KGUpKX0scT11c2VEZWJvdW5jZUZuKG9uU2Nyb2xsRW5kLGQraCksc2V0QXJyaXZlZFN0YXRlPWU9Pnt2YXIgYztpZighVClyZXR1cm47Y29uc3QgZD0obnVsbD09ZXx8bnVsbD09PShjPWUuZG9jdW1lbnQpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmRvY3VtZW50RWxlbWVudCl8fChudWxsPT1lP3ZvaWQgMDplLmRvY3VtZW50RWxlbWVudCl8fHVucmVmRWxlbWVudChlKSx7ZGlzcGxheTpoLGZsZXhEaXJlY3Rpb246dixkaXJlY3Rpb246Yn09VC5nZXRDb21wdXRlZFN0eWxlKGQpLEU9InJ0bCI9PT1iPy0xOjEsaz1kLnNjcm9sbExlZnQ7Vi5sZWZ0PWs8Ui52YWx1ZSxWLnJpZ2h0PWs+Ui52YWx1ZTtjb25zdCBfPU1hdGguYWJzKGsqRSk8PSh5LmxlZnR8fDApLE49TWF0aC5hYnMoaypFKStkLmNsaWVudFdpZHRoPj1kLnNjcm9sbFdpZHRoLSh5LnJpZ2h0fHwwKS0xOyJmbGV4Ij09PWgmJiJyb3ctcmV2ZXJzZSI9PT12PyhGLmxlZnQ9TixGLnJpZ2h0PV8pOihGLmxlZnQ9XyxGLnJpZ2h0PU4pLFIudmFsdWU9aztsZXQgTz1kLnNjcm9sbFRvcDtlIT09VC5kb2N1bWVudHx8T3x8KE89VC5kb2N1bWVudC5ib2R5LnNjcm9sbFRvcCksVi50b3A9TzxNLnZhbHVlLFYuYm90dG9tPU8+TS52YWx1ZTtjb25zdCBEPU1hdGguYWJzKE8pPD0oeS50b3B8fDApLEw9TWF0aC5hYnMoTykrZC5jbGllbnRIZWlnaHQ+PWQuc2Nyb2xsSGVpZ2h0LSh5LmJvdHRvbXx8MCktMTsiZmxleCI9PT1oJiYiY29sdW1uLXJldmVyc2UiPT09dj8oRi50b3A9TCxGLmJvdHRvbT1EKTooRi50b3A9RCxGLmJvdHRvbT1MKSxNLnZhbHVlPU99LG9uU2Nyb2xsSGFuZGxlcj1lPT57dmFyIGM7VCYmKHNldEFycml2ZWRTdGF0ZShudWxsIT09KGM9ZS50YXJnZXQuZG9jdW1lbnRFbGVtZW50KSYmdm9pZCAwIT09Yz9jOmUudGFyZ2V0KSwkLnZhbHVlPSEwLHEoZSksYihlKSl9O3JldHVybiB1c2VFdmVudExpc3RlbmVyKGUsInNjcm9sbCIsZD91c2VUaHJvdHRsZUZuKG9uU2Nyb2xsSGFuZGxlcixkLCEwLCExKTpvblNjcm9sbEhhbmRsZXIsayksdHJ5T25Nb3VudGVkKCgpPT57dHJ5e2NvbnN0IGM9WW4udG9WYWx1ZShlKTtpZighYylyZXR1cm47c2V0QXJyaXZlZFN0YXRlKGMpfWNhdGNoKGUpe04oZSl9fSksKG51bGw9PU8/dm9pZCAwOk8ubXV0YXRpb24pJiZudWxsIT1lJiZlIT09VCYmdm9pZCAwIT09ZSYmdXNlTXV0YXRpb25PYnNlcnZlcihlLCgpPT57Y29uc3QgYz1Zbi50b1ZhbHVlKGUpO2MmJnNldEFycml2ZWRTdGF0ZShjKX0se2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSx1c2VFdmVudExpc3RlbmVyKGUsInNjcm9sbGVuZCIsb25TY3JvbGxFbmQsaykse3g6RCx5OkwsaXNTY3JvbGxpbmc6JCxhcnJpdmVkU3RhdGU6RixkaXJlY3Rpb25zOlYsbWVhc3VyZSgpe2NvbnN0IGM9WW4udG9WYWx1ZShlKTtUJiZjJiZzZXRBcnJpdmVkU3RhdGUoYyl9fX0oZSx7Li4uZCxvZmZzZXQ6e1t2XTpudWxsIT09KGg9ZC5kaXN0YW5jZSkmJnZvaWQgMCE9PWg/aDowLC4uLmQub2Zmc2V0fX0pKSxrPVluLnJlZigpLF89WW4uY29tcHV0ZWQoKCk9PiEhay52YWx1ZSksVD1Zbi5jb21wdXRlZCgoKT0+e3JldHVybiBjPVluLnRvVmFsdWUoZSksInVuZGVmaW5lZCIhPXR5cGVvZiBXaW5kb3cmJmMgaW5zdGFuY2VvZiBXaW5kb3c/Yy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6InVuZGVmaW5lZCIhPXR5cGVvZiBEb2N1bWVudCYmYyBpbnN0YW5jZW9mIERvY3VtZW50P2MuZG9jdW1lbnRFbGVtZW50OmM7dmFyIGN9KSxOPXVzZUVsZW1lbnRWaXNpYmlsaXR5KFQpLE89WW4uY29tcHV0ZWQoKCk9PiEhVC52YWx1ZSYmeShULnZhbHVlKSk7ZnVuY3Rpb24gY2hlY2tBbmRMb2FkKCl7aWYoRS5tZWFzdXJlKCksIVQudmFsdWV8fCFOLnZhbHVlfHwhTy52YWx1ZXx8ay52YWx1ZSlyZXR1cm47Y29uc3R7c2Nyb2xsSGVpZ2h0OmUsY2xpZW50SGVpZ2h0OmQsc2Nyb2xsV2lkdGg6aCxjbGllbnRXaWR0aDp5fT1ULnZhbHVlLF89ImJvdHRvbSI9PT12fHwidG9wIj09PXY/ZTw9ZDpoPD15OyhFLmFycml2ZWRTdGF0ZVt2XXx8XykmJihrLnZhbHVlPVByb21pc2UuYWxsKFtjKEUpLG5ldyBQcm9taXNlKGU9PnNldFRpbWVvdXQoZSxiKSldKS5maW5hbGx5KCgpPT57ay52YWx1ZT1udWxsLFluLm5leHRUaWNrKCgpPT5jaGVja0FuZExvYWQoKSl9KSl9cmV0dXJuIFluLndhdGNoKCgpPT5bRS5hcnJpdmVkU3RhdGVbdl0sTi52YWx1ZSxPLnZhbHVlXSxjaGVja0FuZExvYWQse2ltbWVkaWF0ZTohMCxmbHVzaDoicG9zdCJ9KSxnZXRMaWZlQ3ljbGVUYXJnZXQoKSx7aXNMb2FkaW5nOl8scmVzZXQoKXtZbi5uZXh0VGljaygoKT0+Y2hlY2tBbmRMb2FkKCkpfX19Y29uc3QgY3M9e3BhZ2U6ZT0+W2UucGFnZVgsZS5wYWdlWV0sY2xpZW50OmU9PltlLmNsaWVudFgsZS5jbGllbnRZXSxzY3JlZW46ZT0+W2Uuc2NyZWVuWCxlLnNjcmVlblldLG1vdmVtZW50OmU9PmUgaW5zdGFuY2VvZiBNb3VzZUV2ZW50P1tlLm1vdmVtZW50WCxlLm1vdmVtZW50WV06bnVsbH07ZnVuY3Rpb24gdXNlTW91c2VJbkVsZW1lbnQoZSxjPXt9KXtjb25zdHt3aW5kb3dSZXNpemU6ZD0hMCx3aW5kb3dTY3JvbGw6aD0hMCxoYW5kbGVPdXRzaWRlOnY9ITAsd2luZG93OmI9dHN9PWMseT1jLnR5cGV8fCJwYWdlIix7eDpFLHk6ayxzb3VyY2VUeXBlOl99PWZ1bmN0aW9uKGU9e30pe2NvbnN0e3R5cGU6Yz0icGFnZSIsdG91Y2g6ZD0hMCxyZXNldE9uVG91Y2hFbmRzOmg9ITEsaW5pdGlhbFZhbHVlOnY9e3g6MCx5OjB9LHdpbmRvdzpiPXRzLHRhcmdldDp5PWIsc2Nyb2xsOkU9ITAsZXZlbnRGaWx0ZXI6a309ZTtsZXQgXz1udWxsLFQ9MCxOPTA7Y29uc3QgTz1Zbi5zaGFsbG93UmVmKHYueCksUj1Zbi5zaGFsbG93UmVmKHYueSksTT1Zbi5zaGFsbG93UmVmKG51bGwpLEQ9ImZ1bmN0aW9uIj09dHlwZW9mIGM/Yzpjc1tjXSxtb3VzZUhhbmRsZXI9ZT0+e2NvbnN0IGM9RChlKTtfPWUsYyYmKFtPLnZhbHVlLFIudmFsdWVdPWMsTS52YWx1ZT0ibW91c2UiKSxiJiYoVD1iLnNjcm9sbFgsTj1iLnNjcm9sbFkpfSx0b3VjaEhhbmRsZXI9ZT0+e2lmKGUudG91Y2hlcy5sZW5ndGg+MCl7Y29uc3QgYz1EKGUudG91Y2hlc1swXSk7YyYmKFtPLnZhbHVlLFIudmFsdWVdPWMsTS52YWx1ZT0idG91Y2giKX19LHNjcm9sbEhhbmRsZXI9KCk9PntpZighX3x8IWIpcmV0dXJuO2NvbnN0IGU9RChfKTtfIGluc3RhbmNlb2YgTW91c2VFdmVudCYmZSYmKE8udmFsdWU9ZVswXStiLnNjcm9sbFgtVCxSLnZhbHVlPWVbMV0rYi5zY3JvbGxZLU4pfSxyZXNldD0oKT0+e08udmFsdWU9di54LFIudmFsdWU9di55fSxMPWs/ZT0+aygoKT0+bW91c2VIYW5kbGVyKGUpLHt9KTplPT5tb3VzZUhhbmRsZXIoZSksJD1rP2U9PmsoKCk9PnRvdWNoSGFuZGxlcihlKSx7fSk6ZT0+dG91Y2hIYW5kbGVyKGUpLEY9az8oKT0+aygoKT0+c2Nyb2xsSGFuZGxlcigpLHt9KTooKT0+c2Nyb2xsSGFuZGxlcigpO2lmKHkpe2NvbnN0IGU9e3Bhc3NpdmU6ITB9O3VzZUV2ZW50TGlzdGVuZXIoeSxbIm1vdXNlbW92ZSIsImRyYWdvdmVyIl0sTCxlKSxkJiYibW92ZW1lbnQiIT09YyYmKHVzZUV2ZW50TGlzdGVuZXIoeSxbInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiXSwkLGUpLGgmJnVzZUV2ZW50TGlzdGVuZXIoeSwidG91Y2hlbmQiLHJlc2V0LGUpKSxFJiYicGFnZSI9PT1jJiZ1c2VFdmVudExpc3RlbmVyKGIsInNjcm9sbCIsRixlKX1yZXR1cm57eDpPLHk6Uixzb3VyY2VUeXBlOk19fShjKSxUPVluLnNoYWxsb3dSZWYobnVsbCE9ZT9lOm51bGw9PWI/dm9pZCAwOmIuZG9jdW1lbnQuYm9keSksTj1Zbi5zaGFsbG93UmVmKDApLE89WW4uc2hhbGxvd1JlZigwKSxSPVluLnNoYWxsb3dSZWYoMCksTT1Zbi5zaGFsbG93UmVmKDApLEQ9WW4uc2hhbGxvd1JlZigwKSxMPVluLnNoYWxsb3dSZWYoMCksJD1Zbi5zaGFsbG93UmVmKCEwKTtmdW5jdGlvbiB1cGRhdGUoKXtpZighYilyZXR1cm47Y29uc3QgZT11bnJlZkVsZW1lbnQoVCk7aWYoZSYmZSBpbnN0YW5jZW9mIEVsZW1lbnQpZm9yKGNvbnN0IGMgb2YgZS5nZXRDbGllbnRSZWN0cygpKXtjb25zdHtsZWZ0OmUsdG9wOmQsd2lkdGg6aCxoZWlnaHQ6X309YztSLnZhbHVlPWUrKCJwYWdlIj09PXk/Yi5wYWdlWE9mZnNldDowKSxNLnZhbHVlPWQrKCJwYWdlIj09PXk/Yi5wYWdlWU9mZnNldDowKSxELnZhbHVlPV8sTC52YWx1ZT1oO2NvbnN0IFQ9RS52YWx1ZS1SLnZhbHVlLEY9ay52YWx1ZS1NLnZhbHVlO2lmKCQudmFsdWU9MD09PWh8fDA9PT1ffHxUPDB8fEY8MHx8VD5ofHxGPl8sIXYmJiQudmFsdWV8fChOLnZhbHVlPVQsTy52YWx1ZT1GKSwhJC52YWx1ZSlicmVha319Y29uc3QgRj1bXTtpZih0cnlPbk1vdW50ZWQoKCk9Pnt1cGRhdGUoKX0pLGIpe2NvbnN0e3N0b3A6ZX09dXNlUmVzaXplT2JzZXJ2ZXIoVCx1cGRhdGUpLHtzdG9wOmN9PXVzZU11dGF0aW9uT2JzZXJ2ZXIoVCx1cGRhdGUse2F0dHJpYnV0ZUZpbHRlcjpbInN0eWxlIiwiY2xhc3MiXX0pLHY9WW4ud2F0Y2goW1QsRSxrXSx1cGRhdGUpO0YucHVzaChlLGMsdiksdXNlRXZlbnRMaXN0ZW5lcih2b2lkIDAsIm1vdXNlbGVhdmUiLCgpPT4kLnZhbHVlPSEwLHtwYXNzaXZlOiEwfSksaCYmRi5wdXNoKHVzZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdXBkYXRlLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9KSksZCYmRi5wdXNoKHVzZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdXBkYXRlLHtwYXNzaXZlOiEwfSkpfXJldHVybnt4OkUseTprLHNvdXJjZVR5cGU6XyxlbGVtZW50WDpOLGVsZW1lbnRZOk8sZWxlbWVudFBvc2l0aW9uWDpSLGVsZW1lbnRQb3NpdGlvblk6TSxlbGVtZW50SGVpZ2h0OkQsZWxlbWVudFdpZHRoOkwsaXNPdXRzaWRlOiQsc3RvcDpmdW5jdGlvbigpe0YuZm9yRWFjaChlPT5lKCkpLEYubGVuZ3RoPTB9fX1mdW5jdGlvbiB1c2VQYXJlbnRFbGVtZW50KGU9dXNlQ3VycmVudEVsZW1lbnQoKSl7Y29uc3QgYz1Zbi5zaGFsbG93UmVmKCksdXBkYXRlPSgpPT57Y29uc3QgZD11bnJlZkVsZW1lbnQoZSk7ZCYmKGMudmFsdWU9ZC5wYXJlbnRFbGVtZW50KX07cmV0dXJuIHRyeU9uTW91bnRlZCh1cGRhdGUpLFluLndhdGNoKCgpPT5Zbi50b1ZhbHVlKGUpLHVwZGF0ZSksY31mdW5jdGlvbiB1c2VWTW9kZWwoZSxjLGQsaD17fSl7dmFyIHYsYjtjb25zdHtjbG9uZTp5PSExLHBhc3NpdmU6RT0hMSxldmVudE5hbWU6ayxkZWVwOl89ITEsZGVmYXVsdFZhbHVlOlQsc2hvdWxkRW1pdDpOfT1oLE89WW4uZ2V0Q3VycmVudEluc3RhbmNlKCksUj1kfHwobnVsbD09Tz92b2lkIDA6Ty5lbWl0KXx8KG51bGw9PU98fG51bGw9PT0odj1PLiRlbWl0KXx8dm9pZCAwPT09dj92b2lkIDA6di5iaW5kKE8pKXx8KG51bGw9PU98fG51bGw9PT0oYj1PLnByb3h5KXx8dm9pZCAwPT09Ynx8bnVsbD09PShiPWIuJGVtaXQpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLmJpbmQobnVsbD09Tz92b2lkIDA6Ty5wcm94eSkpO2xldCBNPWs7Y3x8KGM9Im1vZGVsVmFsdWUiKSxNPU18fGB1cGRhdGU6JHtjLnRvU3RyaW5nKCl9YDtjb25zdCBjbG9uZUZuPWU9PntyZXR1cm4geT8iZnVuY3Rpb24iPT10eXBlb2YgeT95KGUpOihjPWUsSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjKSkpOmU7dmFyIGN9LGdldFZhbHVlJDE9KCk9PnZvaWQgMCE9PWVbY10/Y2xvbmVGbihlW2NdKTpULHRyaWdnZXJFbWl0PWU9PntOP04oZSkmJlIoTSxlKTpSKE0sZSl9O2lmKEUpe2NvbnN0IGQ9WW4ucmVmKGdldFZhbHVlJDEoKSk7bGV0IGg9ITE7cmV0dXJuIFluLndhdGNoKCgpPT5lW2NdLGU9PntofHwoaD0hMCxkLnZhbHVlPWNsb25lRm4oZSksWW4ubmV4dFRpY2soKCk9Pmg9ITEpKX0pLFluLndhdGNoKGQsZD0+e2h8fGQ9PT1lW2NdJiYhX3x8dHJpZ2dlckVtaXQoZCl9LHtkZWVwOl99KSxkfXJldHVybiBZbi5jb21wdXRlZCh7Z2V0OigpPT5nZXRWYWx1ZSQxKCksc2V0KGUpe3RyaWdnZXJFbWl0KGUpfX0pfWZ1bmN0aW9uIHJlbmRlclNsb3RGcmFnbWVudHMoZSl7cmV0dXJuIGU/ZS5mbGF0TWFwKGU9PmUudHlwZT09PVluLkZyYWdtZW50P3JlbmRlclNsb3RGcmFnbWVudHMoZS5jaGlsZHJlbik6W2VdKTpbXX1jb25zdFt1cyxkc109Y3JlYXRlQ29udGV4dCgiQ29uZmlnUHJvdmlkZXIiKTt2YXIgcHM9WW4uZGVmaW5lQ29tcG9uZW50KHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJDb25maWdQcm92aWRlciIscHJvcHM6e2Rpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoibHRyIn0sbG9jYWxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJlbiJ9LHNjcm9sbEJvZHk6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxub25jZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LHVzZUlkOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sc2V0dXAoZSl7Y29uc3QgYz1lLHtkaXI6ZCxsb2NhbGU6aCxzY3JvbGxCb2R5OnYsbm9uY2U6Yn09WW4udG9SZWZzKGMpO3JldHVybiBkcyh7ZGlyOmQsbG9jYWxlOmgsc2Nyb2xsQm9keTp2LG5vbmNlOmIsdXNlSWQ6Yy51c2VJZH0pLChlLGMpPT5Zbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iil9fSk7ZnVuY3Rpb24gdXNlRW1pdEFzUHJvcHMoZSl7Y29uc3QgYz1Zbi5nZXRDdXJyZW50SW5zdGFuY2UoKSxkPWM/LnR5cGUuZW1pdHMsaD17fTtyZXR1cm4gZD8uZm9yRWFjaChjPT57aFtZbi50b0hhbmRsZXJLZXkoWW4uY2FtZWxpemUoYykpXT0oLi4uZCk9PmUoYywuLi5kKX0pLGh9ZnVuY3Rpb24gdXNlRm9yd2FyZEV4cG9zZSgpe2NvbnN0IGU9WW4uZ2V0Q3VycmVudEluc3RhbmNlKCksYz1Zbi5yZWYoKSxkPVluLmNvbXB1dGVkKCgpPT5jLnZhbHVlJiYiJGVsImluIGMudmFsdWUmJlsiI3RleHQiLCIjY29tbWVudCJdLmluY2x1ZGVzKGMudmFsdWUuJGVsLm5vZGVOYW1lKT9jLnZhbHVlLiRlbC5uZXh0RWxlbWVudFNpYmxpbmc6dW5yZWZFbGVtZW50KGMpKTtjb25zdCBoPU9iamVjdC5hc3NpZ24oe30sZS5leHBvc2VkKSx2PXt9O2Zvcihjb25zdCBjIGluIGUucHJvcHMpT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsYyx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5lLnByb3BzW2NdfSk7aWYoT2JqZWN0LmtleXMoaCkubGVuZ3RoPjApZm9yKGNvbnN0IGUgaW4gaClPYmplY3QuZGVmaW5lUHJvcGVydHkodixlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmhbZV19KTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS52bm9kZS5lbH0pLGUuZXhwb3NlZD12LHtmb3J3YXJkUmVmOmZ1bmN0aW9uKGQpe2lmKGMudmFsdWU9ZCxkJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZCBpbnN0YW5jZW9mIEVsZW1lbnQ/ZDpkLiRlbH0pLCEoZCBpbnN0YW5jZW9mIEVsZW1lbnR8fE9iamVjdC5oYXNPd24oZCwiJGVsIikpKSl7Y29uc3QgYz1kLiQuZXhwb3NlZCxoPU9iamVjdC5hc3NpZ24oe30sdik7Zm9yKGNvbnN0IGUgaW4gYylPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmNbZV19KTtlLmV4cG9zZWQ9aH19LGN1cnJlbnRSZWY6YyxjdXJyZW50RWxlbWVudDpkfX1mdW5jdGlvbiB1c2VGb3J3YXJkUHJvcHMoZSl7Y29uc3QgYz1Zbi5nZXRDdXJyZW50SW5zdGFuY2UoKSxkPU9iamVjdC5rZXlzKGM/LnR5cGUucHJvcHM/P3t9KS5yZWR1Y2UoKGUsZCk9Pntjb25zdCBoPShjPy50eXBlLnByb3BzW2RdKS5kZWZhdWx0O3JldHVybiB2b2lkIDAhPT1oJiYoZVtkXT1oKSxlfSx7fSksaD1Zbi50b1JlZihlKTtyZXR1cm4gWW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPXt9LHY9Yz8udm5vZGUucHJvcHM/P3t9O3JldHVybiBPYmplY3Qua2V5cyh2KS5mb3JFYWNoKGM9PntlW1luLmNhbWVsaXplKGMpXT12W2NdfSksT2JqZWN0LmtleXMoey4uLmQsLi4uZX0pLnJlZHVjZSgoZSxjKT0+KHZvaWQgMCE9PWgudmFsdWVbY10mJihlW2NdPWgudmFsdWVbY10pLGUpLHt9KX0pfWZ1bmN0aW9uIHVzZUZvcndhcmRQcm9wc0VtaXRzKGUsYyl7Y29uc3QgZD11c2VGb3J3YXJkUHJvcHMoZSksaD1jP3VzZUVtaXRBc1Byb3BzKGMpOnt9O3JldHVybiBZbi5jb21wdXRlZCgoKT0+KHsuLi5kLnZhbHVlLC4uLmh9KSl9ZnVuY3Rpb24gdXNlU3RhdGVNYWNoaW5lKGUsYyl7Y29uc3QgZD1Zbi5yZWYoZSk7cmV0dXJue3N0YXRlOmQsZGlzcGF0Y2g6ZT0+e2QudmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGNbZC52YWx1ZV1bZV0/P2QudmFsdWV9KGUpfX19ZnVuY3Rpb24gZ2V0QW5pbWF0aW9uTmFtZShlKXtyZXR1cm4gZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKS5hbmltYXRpb25OYW1lfHwibm9uZSJ9dmFyIGZzPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiUHJlc2VuY2UiLHByb3BzOntwcmVzZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITB9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbn19LHNsb3RzOnt9LHNldHVwKGUse3Nsb3RzOmMsZXhwb3NlOmR9KXtjb25zdHtwcmVzZW50OmgsZm9yY2VNb3VudDp2fT1Zbi50b1JlZnMoZSksYj1Zbi5yZWYoKSx7aXNQcmVzZW50Onl9PWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1Zbi5yZWYoe30pLGg9WW4ucmVmKCJub25lIiksdj1Zbi5yZWYoZSksYj1lLnZhbHVlPyJtb3VudGVkIjoidW5tb3VudGVkIjtsZXQgeTtjb25zdCBFPWMudmFsdWU/Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc/P3RzLHtzdGF0ZTprLGRpc3BhdGNoOl99PXVzZVN0YXRlTWFjaGluZShiLHttb3VudGVkOntVTk1PVU5UOiJ1bm1vdW50ZWQiLEFOSU1BVElPTl9PVVQ6InVubW91bnRTdXNwZW5kZWQifSx1bm1vdW50U3VzcGVuZGVkOntNT1VOVDoibW91bnRlZCIsQU5JTUFUSU9OX0VORDoidW5tb3VudGVkIn0sdW5tb3VudGVkOntNT1VOVDoibW91bnRlZCJ9fSk7WW4ud2F0Y2goZSxhc3luYyhlLHYpPT57Y29uc3QgYj12IT09ZTtpZihhd2FpdCBZbi5uZXh0VGljaygpLGIpe2NvbnN0IGI9aC52YWx1ZSx5PWdldEFuaW1hdGlvbk5hbWUoYy52YWx1ZSk7ZT9fKCJNT1VOVCIpOiJub25lIj09PXl8fCJ1bmRlZmluZWQiPT09eXx8Im5vbmUiPT09ZC52YWx1ZT8uZGlzcGxheT9fKCJVTk1PVU5UIik6Xyh2JiZiIT09eT8iQU5JTUFUSU9OX09VVCI6IlVOTU9VTlQiKX19LHtpbW1lZGlhdGU6ITB9KTtjb25zdCBoYW5kbGVBbmltYXRpb25FbmQ9ZT0+e2NvbnN0IGQ9Z2V0QW5pbWF0aW9uTmFtZShjLnZhbHVlKSxoPWQuaW5jbHVkZXMoQ1NTLmVzY2FwZShlLmFuaW1hdGlvbk5hbWUpKTtpZihrLnZhbHVlLGUudGFyZ2V0PT09Yy52YWx1ZSYmaCYmKF8oIkFOSU1BVElPTl9FTkQiKSwhdi52YWx1ZSkpe2NvbnN0IGU9Yy52YWx1ZS5zdHlsZS5hbmltYXRpb25GaWxsTW9kZTtjLnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPSJmb3J3YXJkcyIseT1FPy5zZXRUaW1lb3V0KCgpPT57ImZvcndhcmRzIj09PWMudmFsdWU/LnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlJiYoYy52YWx1ZS5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT1lKX0pfWUudGFyZ2V0PT09Yy52YWx1ZSYmIm5vbmUiPT09ZCYmXygiQU5JTUFUSU9OX0VORCIpfSxoYW5kbGVBbmltYXRpb25TdGFydD1lPT57ZS50YXJnZXQ9PT1jLnZhbHVlJiYoaC52YWx1ZT1nZXRBbmltYXRpb25OYW1lKGMudmFsdWUpKX07cmV0dXJuIFluLndhdGNoKGMsKGUsYyk9PntlPyhkLnZhbHVlPWdldENvbXB1dGVkU3R5bGUoZSksZS5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsaGFuZGxlQW5pbWF0aW9uU3RhcnQpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uY2FuY2VsIixoYW5kbGVBbmltYXRpb25FbmQpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixoYW5kbGVBbmltYXRpb25FbmQpKTooXygiQU5JTUFUSU9OX0VORCIpLHZvaWQgMCE9PXkmJkU/LmNsZWFyVGltZW91dCh5KSxjPy5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsaGFuZGxlQW5pbWF0aW9uU3RhcnQpLGM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmNhbmNlbCIsaGFuZGxlQW5pbWF0aW9uRW5kKSxjPy5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLGhhbmRsZUFuaW1hdGlvbkVuZCkpfSx7aW1tZWRpYXRlOiEwfSksWW4ud2F0Y2goaywoKT0+e2NvbnN0IGU9Z2V0QW5pbWF0aW9uTmFtZShjLnZhbHVlKTtoLnZhbHVlPSJtb3VudGVkIj09PWsudmFsdWU/ZToibm9uZSJ9KSx7aXNQcmVzZW50OlluLmNvbXB1dGVkKCgpPT5bIm1vdW50ZWQiLCJ1bm1vdW50U3VzcGVuZGVkIl0uaW5jbHVkZXMoay52YWx1ZSkpfX0oaCxiKTtkKHtwcmVzZW50Onl9KTtsZXQgRT1jLmRlZmF1bHQoe3ByZXNlbnQ6eS52YWx1ZX0pO0U9cmVuZGVyU2xvdEZyYWdtZW50cyhFfHxbXSk7Y29uc3Qgaz1Zbi5nZXRDdXJyZW50SW5zdGFuY2UoKTtpZihFJiZFPy5sZW5ndGg+MSl7Y29uc3QgZT1rPy5wYXJlbnQ/LnR5cGUubmFtZT9gPCR7ay5wYXJlbnQudHlwZS5uYW1lfSAvPmA6ImNvbXBvbmVudCI7dGhyb3cgbmV3IEVycm9yKFtgRGV0ZWN0ZWQgYW4gaW52YWxpZCBjaGlsZHJlbiBmb3IgXGAke2V9XGAgZm9yICBcYFByZXNlbmNlXGAgY29tcG9uZW50LmAsIiIsIk5vdGU6IFByZXNlbmNlIHdvcmtzIHNpbWlsYXJseSB0byBgdi1pZmAgZGlyZWN0bHksIGJ1dCBpdCB3YWl0cyBmb3IgYW5pbWF0aW9uL3RyYW5zaXRpb24gdG8gZmluaXNoZWQgYmVmb3JlIHVubW91bnRpbmcuIFNvIGl0IGV4cGVjdCBvbmx5IG9uZSBkaXJlY3QgY2hpbGQgb2YgdmFsaWQgVk5vZGUgdHlwZS4iLCJZb3UgY2FuIGFwcGx5IGEgZmV3IHNvbHV0aW9uczoiLFsiUHJvdmlkZSBhIHNpbmdsZSBjaGlsZCBlbGVtZW50IHNvIHRoYXQgYHByZXNlbmNlYCBkaXJlY3RpdmUgYXR0YWNoIGNvcnJlY3RseS4iLCJFbnN1cmUgdGhlIGZpcnN0IGNoaWxkIGlzIGFuIGFjdHVhbCBlbGVtZW50IGluc3RlYWQgb2YgYSByYXcgdGV4dCBub2RlIG9yIGNvbW1lbnQgbm9kZS4iXS5tYXAoZT0+YCAgLSAke2V9YCkuam9pbigiXG4iKV0uam9pbigiXG4iKSl9cmV0dXJuKCk9PnYudmFsdWV8fGgudmFsdWV8fHkudmFsdWU/WW4uaChjLmRlZmF1bHQoe3ByZXNlbnQ6eS52YWx1ZX0pWzBdLHtyZWY6ZT0+e2NvbnN0IGM9dW5yZWZFbGVtZW50KGUpO3JldHVybiB2b2lkIDA9PT1jPy5oYXNBdHRyaWJ1dGV8fChjPy5oYXNBdHRyaWJ1dGUoImRhdGEtcmVrYS1wb3BwZXItY29udGVudC13cmFwcGVyIik/Yi52YWx1ZT1jLmZpcnN0RWxlbWVudENoaWxkOmIudmFsdWU9YyksY319KTpudWxsfX0pO2NvbnN0IG1zPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiUHJpbWl0aXZlU2xvdCIsaW5oZXJpdEF0dHJzOiExLHNldHVwOihlLHthdHRyczpjLHNsb3RzOmR9KT0+KCk9PntpZighZC5kZWZhdWx0KXJldHVybiBudWxsO2NvbnN0IGU9cmVuZGVyU2xvdEZyYWdtZW50cyhkLmRlZmF1bHQoKSksaD1lLmZpbmRJbmRleChlPT5lLnR5cGUhPT1Zbi5Db21tZW50KTtpZigtMT09PWgpcmV0dXJuIGU7Y29uc3Qgdj1lW2hdO2RlbGV0ZSB2LnByb3BzPy5yZWY7Y29uc3QgYj12LnByb3BzP1luLm1lcmdlUHJvcHMoYyx2LnByb3BzKTpjLHk9WW4uY2xvbmVWTm9kZSh7Li4udixwcm9wczp7fX0sYik7cmV0dXJuIDE9PT1lLmxlbmd0aD95OihlW2hdPXksZSl9fSksaHM9WyJhcmVhIiwiaW1nIiwiaW5wdXQiXSxncz1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IlByaW1pdGl2ZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6ImRpdiJ9fSxzZXR1cChlLHthdHRyczpjLHNsb3RzOmR9KXtjb25zdCBoPWUuYXNDaGlsZD8idGVtcGxhdGUiOmUuYXM7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBoJiZocy5pbmNsdWRlcyhoKT8oKT0+WW4uaChoLGMpOiJ0ZW1wbGF0ZSIhPT1oPygpPT5Zbi5oKGUuYXMsYyx7ZGVmYXVsdDpkLmRlZmF1bHR9KTooKT0+WW4uaChtcyxjLHtkZWZhdWx0OmQuZGVmYXVsdH0pfX0pO2Z1bmN0aW9uIHVzZVByaW1pdGl2ZUVsZW1lbnQoKXtjb25zdCBlPVluLnJlZigpLGM9WW4uY29tcHV0ZWQoKCk9PlsiI3RleHQiLCIjY29tbWVudCJdLmluY2x1ZGVzKGUudmFsdWU/LiRlbC5ub2RlTmFtZSk/ZS52YWx1ZT8uJGVsLm5leHRFbGVtZW50U2libGluZzp1bnJlZkVsZW1lbnQoZSkpO3JldHVybntwcmltaXRpdmVFbGVtZW50OmUsY3VycmVudEVsZW1lbnQ6Y319dmFyIHZzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyQnJhbmNoIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgYz1lLHtmb3J3YXJkUmVmOmR9PXVzZUZvcndhcmRFeHBvc2UoKTtyZXR1cm4oZSxoKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKHtyZWY6WW4udW5yZWYoZCl9LGMpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSk7Y29uc3QgYnM9ImZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Nb3VudCIseXM9ImZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Vbm1vdW50Iix4cz17YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfTtmdW5jdGlvbiBmb2N1c0ZpcnN0KGUse3NlbGVjdDpjPSExfT17fSl7Y29uc3QgZD1nZXRBY3RpdmVFbGVtZW50KCk7Zm9yKGNvbnN0IGggb2YgZSlpZihmb2N1cyhoLHtzZWxlY3Q6Y30pLGdldEFjdGl2ZUVsZW1lbnQoKSE9PWQpcmV0dXJuITB9ZnVuY3Rpb24gZ2V0VGFiYmFibGVFZGdlcyhlKXtjb25zdCBjPWdldFRhYmJhYmxlQ2FuZGlkYXRlcyhlKTtyZXR1cm5bZmluZFZpc2libGUoYyxlKSxmaW5kVmlzaWJsZShjLnJldmVyc2UoKSxlKV19ZnVuY3Rpb24gZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGUpe2NvbnN0IGM9W10sZD0odm9pZCAwKS5jcmVhdGVUcmVlV2Fsa2VyKGUsTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQse2FjY2VwdE5vZGU6ZT0+e2NvbnN0IGM9IklOUFVUIj09PWUudGFnTmFtZSYmImhpZGRlbiI9PT1lLnR5cGU7cmV0dXJuIGUuZGlzYWJsZWR8fGUuaGlkZGVufHxjP05vZGVGaWx0ZXIuRklMVEVSX1NLSVA6ZS50YWJJbmRleD49MD9Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ6Tm9kZUZpbHRlci5GSUxURVJfU0tJUH19KTtmb3IoO2QubmV4dE5vZGUoKTspYy5wdXNoKGQuY3VycmVudE5vZGUpO3JldHVybiBjfWZ1bmN0aW9uIGZpbmRWaXNpYmxlKGUsYyl7Zm9yKGNvbnN0IGQgb2YgZSlpZighaXNIaWRkZW4oZCx7dXBUbzpjfSkpcmV0dXJuIGR9ZnVuY3Rpb24gaXNIaWRkZW4oZSx7dXBUbzpjfSl7aWYoImhpZGRlbiI9PT1nZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHkpcmV0dXJuITA7Zm9yKDtlOyl7aWYodm9pZCAwIT09YyYmZT09PWMpcmV0dXJuITE7aWYoIm5vbmUiPT09Z2V0Q29tcHV0ZWRTdHlsZShlKS5kaXNwbGF5KXJldHVybiEwO2U9ZS5wYXJlbnRFbGVtZW50fXJldHVybiExfWZ1bmN0aW9uIGZvY3VzKGUse3NlbGVjdDpjPSExfT17fSl7aWYoZSYmZS5mb2N1cyl7Y29uc3QgZD1nZXRBY3RpdmVFbGVtZW50KCk7ZS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLGUhPT1kJiZmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQmJiJzZWxlY3QiaW4gZX0oZSkmJmMmJmUuc2VsZWN0KCl9fXZhciBTcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVGVsZXBvcnQiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJvZHkifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPXVzZU1vdW50ZWQoKTtyZXR1cm4oZSxkKT0+WW4udW5yZWYoYyl8fGUuZm9yY2VNb3VudD8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4uVGVsZXBvcnQse2tleTowLHRvOmUudG8sZGlzYWJsZWQ6ZS5kaXNhYmxlZCxkZWZlcjplLmRlZmVyfSxbWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSw4LFsidG8iLCJkaXNhYmxlZCIsImRlZmVyIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KTtjb25zdCBFcz0iZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbSI7ZnVuY3Rpb24gdXNlQ29sbGVjdGlvbihlPXt9KXtjb25zdHtrZXk6Yz0iIixpc1Byb3ZpZGVyOmQ9ITF9PWUsaD1gJHtjfUNvbGxlY3Rpb25Qcm92aWRlcmA7bGV0IHY7aWYoZCl7Y29uc3QgZT1Zbi5yZWYobmV3IE1hcCksYz1Zbi5yZWYoKTt2PXtjb2xsZWN0aW9uUmVmOmMsaXRlbU1hcDplfSxZbi5wcm92aWRlKGgsdil9ZWxzZSB2PVluLmluamVjdChoKTtjb25zdCBiPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiQ29sbGVjdGlvblNsb3QiLGluaGVyaXRBdHRyczohMSxzZXR1cChlLHtzbG90czpjLGF0dHJzOmR9KXtjb25zdHtwcmltaXRpdmVFbGVtZW50OmgsY3VycmVudEVsZW1lbnQ6Yn09dXNlUHJpbWl0aXZlRWxlbWVudCgpO3JldHVybiBZbi53YXRjaChiLCgpPT57di5jb2xsZWN0aW9uUmVmLnZhbHVlPWIudmFsdWV9KSwoKT0+WW4uaChtcyx7cmVmOmgsLi4uZH0sYyl9fSkseT1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IkNvbGxlY3Rpb25JdGVtIixpbmhlcml0QXR0cnM6ITEscHJvcHM6e3ZhbHVlOnt2YWxpZGF0b3I6KCk9PiEwfX0sc2V0dXAoZSx7c2xvdHM6YyxhdHRyczpkfSl7Y29uc3R7cHJpbWl0aXZlRWxlbWVudDpoLGN1cnJlbnRFbGVtZW50OmJ9PXVzZVByaW1pdGl2ZUVsZW1lbnQoKTtyZXR1cm4gWW4ud2F0Y2hFZmZlY3QoYz0+e2lmKGIudmFsdWUpe2NvbnN0IGQ9WW4ubWFya1JhdyhiLnZhbHVlKTt2Lml0ZW1NYXAudmFsdWUuc2V0KGQse3JlZjpiLnZhbHVlLHZhbHVlOmUudmFsdWV9KSxjKCgpPT52Lml0ZW1NYXAudmFsdWUuZGVsZXRlKGQpKX19KSwoKT0+WW4uaChtcyx7Li4uZCxbRXNdOiIiLHJlZjpofSxjKX19KTtyZXR1cm57Z2V0SXRlbXM6KGU9ITEpPT57Y29uc3QgYz12LmNvbGxlY3Rpb25SZWYudmFsdWU7aWYoIWMpcmV0dXJuW107Y29uc3QgZD1BcnJheS5mcm9tKGMucXVlcnlTZWxlY3RvckFsbChgWyR7RXN9XWApKSxoPUFycmF5LmZyb20odi5pdGVtTWFwLnZhbHVlLnZhbHVlcygpKS5zb3J0KChlLGMpPT5kLmluZGV4T2YoZS5yZWYpLWQuaW5kZXhPZihjLnJlZikpO3JldHVybiBlP2g6aC5maWx0ZXIoZT0+IiIhPT1lLnJlZi5kYXRhc2V0LmRpc2FibGVkKX0scmVhY3RpdmVJdGVtczpZbi5jb21wdXRlZCgoKT0+QXJyYXkuZnJvbSh2Lml0ZW1NYXAudmFsdWUudmFsdWVzKCkpKSxpdGVtTWFwU2l6ZTpZbi5jb21wdXRlZCgoKT0+di5pdGVtTWFwLnZhbHVlLnNpemUpLENvbGxlY3Rpb25TbG90OmIsQ29sbGVjdGlvbkl0ZW06eX19dmFyIHdzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJWaXN1YWxseUhpZGRlbiIscHJvcHM6e2ZlYXR1cmU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImZvY3VzYWJsZSJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwOmU9PihlLGMpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoZ3MpLHthczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJhcmlhLWhpZGRlbiI6ImZvY3VzYWJsZSI9PT1lLmZlYXR1cmU/InRydWUiOnZvaWQgMCwiZGF0YS1oaWRkZW4iOiJmdWxseS1oaWRkZW4iPT09ZS5mZWF0dXJlPyIiOnZvaWQgMCx0YWJpbmRleDoiZnVsbHktaGlkZGVuIj09PWUuZmVhdHVyZT8iLTEiOnZvaWQgMCxzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixib3JkZXI6MCx3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCIscGFkZGluZzowLG1hcmdpbjoiLTFweCIsb3ZlcmZsb3c6ImhpZGRlbiIsY2xpcDoicmVjdCgwLCAwLCAwLCAwKSIsY2xpcFBhdGg6Imluc2V0KDUwJSkiLHdoaXRlU3BhY2U6Im5vd3JhcCIsd29yZFdyYXA6Im5vcm1hbCIsdG9wOiItMXB4IixsZWZ0OiItMXB4In19LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiYXJpYS1oaWRkZW4iLCJkYXRhLWhpZGRlbiIsInRhYmluZGV4Il0pKX0pO2NvbnN0W2tzLENzXT1jcmVhdGVDb250ZXh0KCJQcm9ncmVzc1Jvb3QiKSxpc051bWJlcj1lPT4ibnVtYmVyIj09dHlwZW9mIGU7dmFyIF9zPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9ncmVzc1Jvb3QiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOltOdW1iZXIsbnVsbF0scmVxdWlyZWQ6ITF9LG1heDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMDB9LGdldFZhbHVlTGFiZWw6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITEsZGVmYXVsdDooZSxjKT0+aXNOdW1iZXIoZSk/YCR7TWF0aC5yb3VuZChlL2MqMTAwKX0lYDp2b2lkIDB9LGdldFZhbHVlVGV4dDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsInVwZGF0ZTptYXgiXSxzZXR1cChlLHtlbWl0OmN9KXtjb25zdCBkPWUsaD1jO3VzZUZvcndhcmRFeHBvc2UoKTtjb25zdCB2PXVzZVZNb2RlbChkLCJtb2RlbFZhbHVlIixoLHtwYXNzaXZlOnZvaWQgMD09PWQubW9kZWxWYWx1ZX0pLGI9dXNlVk1vZGVsKGQsIm1heCIsaCx7cGFzc2l2ZTp2b2lkIDA9PT1kLm1heH0pO1luLndhdGNoKCgpPT52LnZhbHVlLGFzeW5jIGU9Pntjb25zdCBjPWZ1bmN0aW9uKGUsYyl7cmV0dXJuIGlzTnVsbGlzaChlKXx8aXNOdW1iZXIoZSkmJiFOdW1iZXIuaXNOYU4oZSkmJmU8PWMmJmU+PTA/ZTpudWxsfShlLGQubWF4KTtjIT09ZSYmKGF3YWl0IFluLm5leHRUaWNrKCksdi52YWx1ZT1jKX0se2ltbWVkaWF0ZTohMH0pLFluLndhdGNoKCgpPT5kLm1heCxlPT57Y29uc3QgYz1mdW5jdGlvbihlKXtyZXR1cm4gaXNOdW1iZXIoZSkmJiFOdW1iZXIuaXNOYU4oZSkmJmU+MD9lOjEwMH0oZC5tYXgpO2MhPT1lJiYoYi52YWx1ZT1jKX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IHk9WW4uY29tcHV0ZWQoKCk9PmlzTnVsbGlzaCh2LnZhbHVlKT8iaW5kZXRlcm1pbmF0ZSI6di52YWx1ZT09PWIudmFsdWU/ImNvbXBsZXRlIjoibG9hZGluZyIpO3JldHVybiBDcyh7bW9kZWxWYWx1ZTp2LG1heDpiLHByb2dyZXNzU3RhdGU6eX0pLChlLGMpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoZ3MpLHsiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLCJhcmlhLXZhbHVlbWF4IjpZbi51bnJlZihiKSwiYXJpYS12YWx1ZW1pbiI6MCwiYXJpYS12YWx1ZW5vdyI6aXNOdW1iZXIoWW4udW5yZWYodikpP1luLnVucmVmKHYpOnZvaWQgMCwiYXJpYS12YWx1ZXRleHQiOmUuZ2V0VmFsdWVUZXh0Py4oWW4udW5yZWYodiksWW4udW5yZWYoYikpLCJhcmlhLWxhYmVsIjplLmdldFZhbHVlTGFiZWwoWW4udW5yZWYodiksWW4udW5yZWYoYikpLHJvbGU6InByb2dyZXNzYmFyIiwiZGF0YS1zdGF0ZSI6eS52YWx1ZSwiZGF0YS12YWx1ZSI6WW4udW5yZWYodik/P3ZvaWQgMCwiZGF0YS1tYXgiOlluLnVucmVmKGIpfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6WW4udW5yZWYodil9KV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiLCJhcmlhLXZhbHVlbWF4IiwiYXJpYS12YWx1ZW5vdyIsImFyaWEtdmFsdWV0ZXh0IiwiYXJpYS1sYWJlbCIsImRhdGEtc3RhdGUiLCJkYXRhLXZhbHVlIiwiZGF0YS1tYXgiXSkpfX0pLFRzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJQcm9ncmVzc0luZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSxkPWtzKCk7cmV0dXJuIHVzZUZvcndhcmRFeHBvc2UoKSwoZSxoKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKGMseyJkYXRhLXN0YXRlIjpZbi51bnJlZihkKS5wcm9ncmVzc1N0YXRlLnZhbHVlLCJkYXRhLXZhbHVlIjpZbi51bnJlZihkKS5tb2RlbFZhbHVlPy52YWx1ZT8/dm9pZCAwLCJkYXRhLW1heCI6WW4udW5yZWYoZCkubWF4LnZhbHVlfSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIiwiZGF0YS12YWx1ZSIsImRhdGEtbWF4Il0pKX19KSxOcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RBbm5vdW5jZUV4Y2x1ZGUiLHByb3BzOnthbHRUZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXA6ZT0+KGUsYyk9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihncykse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImRhdGEtcmVrYS10b2FzdC1hbm5vdW5jZS1leGNsdWRlIjoiIiwiZGF0YS1yZWthLXRvYXN0LWFubm91bmNlLWFsdCI6ZS5hbHRUZXh0fHx2b2lkIDB9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1yZWthLXRvYXN0LWFubm91bmNlLWFsdCJdKSl9KTtjb25zdFtBcyxPc109Y3JlYXRlQ29udGV4dCgiVG9hc3RQcm92aWRlciIpO3ZhciBJcz1Zbi5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvYXN0UHJvdmlkZXIiLHByb3BzOntsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiTm90aWZpY2F0aW9uIn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NWUzfSxkaXNhYmxlU3dpcGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3dpcGVEaXJlY3Rpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6InJpZ2h0In0sc3dpcGVUaHJlc2hvbGQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NTB9fSxzZXR1cChlKXtjb25zdCBjPWUse2xhYmVsOmQsZHVyYXRpb246aCxkaXNhYmxlU3dpcGU6dixzd2lwZURpcmVjdGlvbjpiLHN3aXBlVGhyZXNob2xkOnl9PVluLnRvUmVmcyhjKTt1c2VDb2xsZWN0aW9uKHtpc1Byb3ZpZGVyOiEwfSk7Y29uc3QgRT1Zbi5yZWYoKSxrPVluLnJlZigwKSxfPVluLnJlZighMSksVD1Zbi5yZWYoITEpO2lmKGMubGFiZWwmJiJzdHJpbmciPT10eXBlb2YgYy5sYWJlbCYmIWMubGFiZWwudHJpbSgpKXt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcHJvcCBgbGFiZWxgIHN1cHBsaWVkIHRvIGBUb2FzdFByb3ZpZGVyYC4gRXhwZWN0ZWQgbm9uLWVtcHR5IGBzdHJpbmdgLiIpfXJldHVybiBPcyh7bGFiZWw6ZCxkdXJhdGlvbjpoLGRpc2FibGVTd2lwZTp2LHN3aXBlRGlyZWN0aW9uOmIsc3dpcGVUaHJlc2hvbGQ6eSx0b2FzdENvdW50Omssdmlld3BvcnQ6RSxvblZpZXdwb3J0Q2hhbmdlKGUpe0UudmFsdWU9ZX0sb25Ub2FzdEFkZCgpe2sudmFsdWUrK30sb25Ub2FzdFJlbW92ZSgpe2sudmFsdWUtLX0saXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmOl8saXNDbG9zZVBhdXNlZFJlZjpUfSksKGUsYyk9PlluLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKX19KSxScz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RBbm5vdW5jZSIsc2V0dXAoZSl7Y29uc3QgYz1BcygpLGQ9ZnVuY3Rpb24oZT0xZTMsYz17fSl7Y29uc3R7Y29udHJvbHM6ZD0hMSxjYWxsYmFjazpofT1jLHY9dXNlVGltZW91dEZuKG51bGwhPWg/aDpub29wLGUsYyksYj1Zbi5jb21wdXRlZCgoKT0+IXYuaXNQZW5kaW5nLnZhbHVlKTtyZXR1cm4gZD97cmVhZHk6YiwuLi52fTpifSgxZTMpLGg9WW4ucmVmKCExKTtyZXR1cm4gdXNlUmFmRm4oKCk9PntoLnZhbHVlPSEwfSksKGUsdik9PlluLnVucmVmKGQpfHxoLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZih3cykse2tleTowLGZlYXR1cmU6ImZ1bGx5LWhpZGRlbiJ9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVUZXh0Vk5vZGUoWW4udG9EaXNwbGF5U3RyaW5nKFluLnVucmVmKGMpLmxhYmVsLnZhbHVlKSsiICIsMSksWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApfX0pO2NvbnN0IFBzPSJ0b2FzdC52aWV3cG9ydFBhdXNlIixNcz0idG9hc3Qudmlld3BvcnRSZXN1bWUiO2Z1bmN0aW9uIGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoZSxjLGQpe2NvbnN0IGg9ZC5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQsdj1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpkfSk7YyYmaC5hZGRFdmVudExpc3RlbmVyKGUsYyx7b25jZTohMH0pLGguZGlzcGF0Y2hFdmVudCh2KX1mdW5jdGlvbiBpc0RlbHRhSW5EaXJlY3Rpb24oZSxjLGQ9MCl7Y29uc3QgaD1NYXRoLmFicyhlLngpLHY9TWF0aC5hYnMoZS55KSxiPWg+djtyZXR1cm4ibGVmdCI9PT1jfHwicmlnaHQiPT09Yz9iJiZoPmQ6IWImJnY+ZH1mdW5jdGlvbiBnZXRBbm5vdW5jZVRleHRDb250ZW50KGUpe2NvbnN0IGM9W107cmV0dXJuIEFycmF5LmZyb20oZS5jaGlsZE5vZGVzKS5mb3JFYWNoKGU9PntpZihlLm5vZGVUeXBlPT09ZS5URVhUX05PREUmJmUudGV4dENvbnRlbnQmJmMucHVzaChlLnRleHRDb250ZW50KSxmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlVHlwZT09PWUuRUxFTUVOVF9OT0RFfShlKSl7Y29uc3QgZD1lLmFyaWFIaWRkZW58fGUuaGlkZGVufHwibm9uZSI9PT1lLnN0eWxlLmRpc3BsYXksaD0iIj09PWUuZGF0YXNldC5yZWthVG9hc3RBbm5vdW5jZUV4Y2x1ZGU7aWYoIWQpaWYoaCl7Y29uc3QgZD1lLmRhdGFzZXQucmVrYVRvYXN0QW5ub3VuY2VBbHQ7ZCYmYy5wdXNoKGQpfWVsc2UgYy5wdXNoKC4uLmdldEFubm91bmNlVGV4dENvbnRlbnQoZSkpfX0pLGN9Y29uc3RbRHMsQnNdPWNyZWF0ZUNvbnRleHQoIlRvYXN0Um9vdCIpO3ZhciBMcz1Zbi5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvYXN0Um9vdEltcGwiLHByb3BzOnt0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LGVtaXRzOlsiY2xvc2UiLCJlc2NhcGVLZXlEb3duIiwicGF1c2UiLCJyZXN1bWUiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwic3dpcGVDYW5jZWwiLCJzd2lwZUVuZCJdLHNldHVwKGUse2VtaXQ6Y30pe2NvbnN0IGQ9ZSxoPWMse2ZvcndhcmRSZWY6dixjdXJyZW50RWxlbWVudDpifT11c2VGb3J3YXJkRXhwb3NlKCkse0NvbGxlY3Rpb25JdGVtOnl9PXVzZUNvbGxlY3Rpb24oKSxFPUFzKCksaz1Zbi5yZWYobnVsbCksXz1Zbi5yZWYobnVsbCksVD1Zbi5jb21wdXRlZCgoKT0+Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246RS5kdXJhdGlvbi52YWx1ZSksTj1Zbi5yZWYoMCksTz1Zbi5yZWYoVC52YWx1ZSksUj1Zbi5yZWYoMCksTT1Zbi5yZWYoVC52YWx1ZSksRD11c2VSYWZGbigoKT0+e2NvbnN0IGU9RGF0ZS5ub3coKS1OLnZhbHVlO00udmFsdWU9TWF0aC5tYXgoTy52YWx1ZS1lLDApfSx7ZnBzTGltaXQ6NjB9KTtmdW5jdGlvbiBzdGFydFRpbWVyKGUpe2U8PTB8fE51bWJlci5QT1NJVElWRV9JTkZJTklUWX1mdW5jdGlvbiBoYW5kbGVDbG9zZShlKXtjb25zdCBjPSIiPT09ZT8ucG9pbnRlclR5cGUsZD1iLnZhbHVlPy5jb250YWlucyhnZXRBY3RpdmVFbGVtZW50KCkpO2QmJmMmJkUudmlld3BvcnQudmFsdWU/LmZvY3VzKCksYyYmKEUuaXNDbG9zZVBhdXNlZFJlZi52YWx1ZT0hMSksaCgiY2xvc2UiKX1jb25zdCBMPVluLmNvbXB1dGVkKCgpPT5iLnZhbHVlP2dldEFubm91bmNlVGV4dENvbnRlbnQoYi52YWx1ZSk6bnVsbCk7aWYoZC50eXBlJiYhWyJmb3JlZ3JvdW5kIiwiYmFja2dyb3VuZCJdLmluY2x1ZGVzKGQudHlwZSkpe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBwcm9wIGB0eXBlYCBzdXBwbGllZCB0byBgVG9hc3RgLiBFeHBlY3RlZCBgZm9yZWdyb3VuZCB8IGJhY2tncm91bmRgLiIpfXJldHVybiBZbi53YXRjaEVmZmVjdChlPT57Y29uc3QgYz1FLnZpZXdwb3J0LnZhbHVlO2lmKGMpe2NvbnN0IGhhbmRsZVJlc3VtZT0oKT0+e3N0YXJ0VGltZXIoTy52YWx1ZSksRC5yZXN1bWUoKSxoKCJyZXN1bWUiKX0saGFuZGxlUGF1c2U9KCk9Pntjb25zdCBlPURhdGUubm93KCktTi52YWx1ZTtPLnZhbHVlPU8udmFsdWUtZSwodm9pZCAwKS5jbGVhclRpbWVvdXQoUi52YWx1ZSksRC5wYXVzZSgpLGgoInBhdXNlIil9O3JldHVybiBjLmFkZEV2ZW50TGlzdGVuZXIoUHMsaGFuZGxlUGF1c2UpLGMuYWRkRXZlbnRMaXN0ZW5lcihNcyxoYW5kbGVSZXN1bWUpLCgpPT57Yy5yZW1vdmVFdmVudExpc3RlbmVyKFBzLGhhbmRsZVBhdXNlKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoTXMsaGFuZGxlUmVzdW1lKX19fSksWW4ud2F0Y2goKCk9PltkLm9wZW4sVC52YWx1ZV0sKCk9PntPLnZhbHVlPVQudmFsdWUsZC5vcGVuJiYhRS5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlJiZzdGFydFRpbWVyKFQudmFsdWUpfSx7aW1tZWRpYXRlOiEwfSksb25LZXlTdHJva2UoIkVzY2FwZSIsZT0+e2goImVzY2FwZUtleURvd24iLGUpLGUuZGVmYXVsdFByZXZlbnRlZHx8KEUuaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmLnZhbHVlPSEwLGhhbmRsZUNsb3NlKCkpfSksQnMoe29uQ2xvc2U6aGFuZGxlQ2xvc2V9KSwoZSxjKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUVsZW1lbnRCbG9jayhZbi5GcmFnbWVudCxudWxsLFtMLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhScyx7a2V5OjAscm9sZToiYWxlcnQiLCJhcmlhLWxpdmUiOiJmb3JlZ3JvdW5kIj09PWUudHlwZT8iYXNzZXJ0aXZlIjoicG9saXRlIn0se2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoTC52YWx1ZSksMSldKSxfOjF9LDgsWyJhcmlhLWxpdmUiXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgidi1pZiIsITApLFluLnVucmVmKEUpLnZpZXdwb3J0LnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5UZWxlcG9ydCx7a2V5OjEsdG86WW4udW5yZWYoRSkudmlld3BvcnQudmFsdWV9LFtZbi5jcmVhdGVWTm9kZShZbi51bnJlZih5KSxudWxsLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihncyksWW4ubWVyZ2VQcm9wcyh7cmVmOlluLnVucmVmKHYpLHRhYmluZGV4OiIwIn0sZS4kYXR0cnMse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImRhdGEtc3RhdGUiOmUub3Blbj8ib3BlbiI6ImNsb3NlZCIsImRhdGEtc3dpcGUtZGlyZWN0aW9uIjpZbi51bnJlZihFKS5zd2lwZURpcmVjdGlvbi52YWx1ZSxzdHlsZTpZbi51bnJlZihFKS5kaXNhYmxlU3dpcGUudmFsdWU/dm9pZCAwOnt1c2VyU2VsZWN0OiJub25lIix0b3VjaEFjdGlvbjoibm9uZSJ9LG9uUG9pbnRlcmRvd246Y1swXXx8KGNbMF09WW4ud2l0aE1vZGlmaWVycyhlPT57WW4udW5yZWYoRSkuZGlzYWJsZVN3aXBlLnZhbHVlfHwoay52YWx1ZT17eDplLmNsaWVudFgseTplLmNsaWVudFl9KX0sWyJsZWZ0Il0pKSxvblBvaW50ZXJtb3ZlOmNbMV18fChjWzFdPWU9PntpZihZbi51bnJlZihFKS5kaXNhYmxlU3dpcGUudmFsdWV8fCFrLnZhbHVlKXJldHVybjtjb25zdCBjPWUuY2xpZW50WC1rLnZhbHVlLngsZD1lLmNsaWVudFktay52YWx1ZS55LHY9Qm9vbGVhbihfLnZhbHVlKSxiPVsibGVmdCIsInJpZ2h0Il0uaW5jbHVkZXMoWW4udW5yZWYoRSkuc3dpcGVEaXJlY3Rpb24udmFsdWUpLHk9WyJsZWZ0IiwidXAiXS5pbmNsdWRlcyhZbi51bnJlZihFKS5zd2lwZURpcmVjdGlvbi52YWx1ZSk/TWF0aC5taW46TWF0aC5tYXgsVD1iP3koMCxjKTowLE49Yj8wOnkoMCxkKSxPPSJ0b3VjaCI9PT1lLnBvaW50ZXJUeXBlPzEwOjIsUj17eDpULHk6Tn0sTT17b3JpZ2luYWxFdmVudDplLGRlbHRhOlJ9O3Y/KF8udmFsdWU9UixZbi51bnJlZihoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KShZbi51bnJlZigidG9hc3Quc3dpcGVNb3ZlIiksZT0+aCgic3dpcGVNb3ZlIixlKSxNKSk6WW4udW5yZWYoaXNEZWx0YUluRGlyZWN0aW9uKShSLFluLnVucmVmKEUpLnN3aXBlRGlyZWN0aW9uLnZhbHVlLE8pPyhfLnZhbHVlPVIsWW4udW5yZWYoaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCkoWW4udW5yZWYoInRvYXN0LnN3aXBlU3RhcnQiKSxlPT5oKCJzd2lwZVN0YXJ0IixlKSxNKSxlLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCkpOihNYXRoLmFicyhjKT5PfHxNYXRoLmFicyhkKT5PKSYmKGsudmFsdWU9bnVsbCl9KSxvblBvaW50ZXJ1cDpjWzJdfHwoY1syXT1lPT57aWYoWW4udW5yZWYoRSkuZGlzYWJsZVN3aXBlLnZhbHVlKXJldHVybjtjb25zdCBjPV8udmFsdWUsZD1lLnRhcmdldDtpZihkLmhhc1BvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKSYmZC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpLF8udmFsdWU9bnVsbCxrLnZhbHVlPW51bGwsYyl7Y29uc3QgZD1lLmN1cnJlbnRUYXJnZXQsdj17b3JpZ2luYWxFdmVudDplLGRlbHRhOmN9O1luLnVucmVmKGlzRGVsdGFJbkRpcmVjdGlvbikoYyxZbi51bnJlZihFKS5zd2lwZURpcmVjdGlvbi52YWx1ZSxZbi51bnJlZihFKS5zd2lwZVRocmVzaG9sZC52YWx1ZSk/WW4udW5yZWYoaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCkoWW4udW5yZWYoInRvYXN0LnN3aXBlRW5kIiksZT0+aCgic3dpcGVFbmQiLGUpLHYpOlluLnVucmVmKGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQpKFluLnVucmVmKCJ0b2FzdC5zd2lwZUNhbmNlbCIpLGU9PmgoInN3aXBlQ2FuY2VsIixlKSx2KSxkPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZT0+ZS5wcmV2ZW50RGVmYXVsdCgpLHtvbmNlOiEwfSl9fSl9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse3JlbWFpbmluZzpNLnZhbHVlLGR1cmF0aW9uOlQudmFsdWV9KV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1zdGF0ZSIsImRhdGEtc3dpcGUtZGlyZWN0aW9uIiwic3R5bGUiXSldKSxfOjN9KV0sOCxbInRvIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0sNjQpKX19KSxqcz1Mcywkcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RDbG9zZSIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3QgYz1lLGQ9RHMoKSx7Zm9yd2FyZFJlZjpofT11c2VGb3J3YXJkRXhwb3NlKCk7cmV0dXJuKGUsdik9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhOcyx7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVZOb2RlKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKGMse3JlZjpZbi51bnJlZihoKSx0eXBlOiJidXR0b24iPT09ZS5hcz8iYnV0dG9uIjp2b2lkIDAsb25DbGljazpZbi51bnJlZihkKS5vbkNsb3NlfSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIiwib25DbGljayJdKV0pLF86M30pKX19KSxGcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RBY3Rpb24iLHByb3BzOnthbHRUZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7aWYoIWUuYWx0VGV4dCl0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcHJvcCBgYWx0VGV4dGAgZXhwZWN0ZWQgb24gYFRvYXN0QWN0aW9uYCIpO2NvbnN0e2ZvcndhcmRSZWY6Y309dXNlRm9yd2FyZEV4cG9zZSgpO3JldHVybihlLGQpPT5lLmFsdFRleHQ/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKE5zLHtrZXk6MCwiYWx0LXRleHQiOmUuYWx0VGV4dCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUoJHMse3JlZjpZbi51bnJlZihjKSxhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30sOCxbImFsdC10ZXh0Il0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxWcz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3REZXNjcmlwdGlvbiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZTtyZXR1cm4gdXNlRm9yd2FyZEV4cG9zZSgpLChlLGQpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoZ3MpLFluLm5vcm1hbGl6ZVByb3BzKFluLmd1YXJkUmVhY3RpdmVQcm9wcyhjKSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx6cz1Zbi5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiVG9hc3RQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPWU7cmV0dXJuKGUsZCk9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihTcyksWW4ubm9ybWFsaXplUHJvcHMoWW4uZ3VhcmRSZWFjdGl2ZVByb3BzKGMpKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHFzPVluLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJUb2FzdFJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZm9yZWdyb3VuZCJ9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGkifX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicGF1c2UiLCJyZXN1bWUiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwic3dpcGVDYW5jZWwiLCJzd2lwZUVuZCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDpjfSl7Y29uc3QgZD1lLGg9Yyx7Zm9yd2FyZFJlZjp2fT11c2VGb3J3YXJkRXhwb3NlKCksYj11c2VWTW9kZWwoZCwib3BlbiIsaCx7ZGVmYXVsdFZhbHVlOmQuZGVmYXVsdE9wZW4scGFzc2l2ZTp2b2lkIDA9PT1kLm9wZW59KTtyZXR1cm4oZSxjKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGZzKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fFluLnVucmVmKGIpfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUoanMsWW4ubWVyZ2VQcm9wcyh7cmVmOlluLnVucmVmKHYpLG9wZW46WW4udW5yZWYoYiksdHlwZTplLnR5cGUsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxkdXJhdGlvbjplLmR1cmF0aW9ufSxlLiRhdHRycyx7b25DbG9zZTpjWzBdfHwoY1swXT1lPT5iLnZhbHVlPSExKSxvblBhdXNlOmNbMV18fChjWzFdPWU9PmgoInBhdXNlIikpLG9uUmVzdW1lOmNbMl18fChjWzJdPWU9PmgoInJlc3VtZSIpKSxvbkVzY2FwZUtleURvd246Y1szXXx8KGNbM109ZT0+aCgiZXNjYXBlS2V5RG93biIsZSkpLG9uU3dpcGVTdGFydDpjWzRdfHwoY1s0XT1lPT57aCgic3dpcGVTdGFydCIsZSksZS5kZWZhdWx0UHJldmVudGVkfHxlLmN1cnJlbnRUYXJnZXQuc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwic3RhcnQiKX0pLG9uU3dpcGVNb3ZlOmNbNV18fChjWzVdPWU9PntpZihoKCJzd2lwZU1vdmUiLGUpLCFlLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0e3g6Yyx5OmR9PWUuZGV0YWlsLmRlbHRhLGg9ZS5jdXJyZW50VGFyZ2V0O2guc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwibW92ZSIpLGguc3R5bGUuc2V0UHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgiLGAke2N9cHhgKSxoLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15IixgJHtkfXB4YCl9fSksb25Td2lwZUNhbmNlbDpjWzZdfHwoY1s2XT1lPT57aWYoaCgic3dpcGVDYW5jZWwiLGUpLCFlLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0IGM9ZS5jdXJyZW50VGFyZ2V0O2Muc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwiY2FuY2VsIiksYy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteCIpLGMuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXkiKSxjLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXgiKSxjLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXkiKX19KSxvblN3aXBlRW5kOmNbN118fChjWzddPWU9PntpZihoKCJzd2lwZUVuZCIsZSksIWUuZGVmYXVsdFByZXZlbnRlZCl7Y29uc3R7eDpjLHk6ZH09ZS5kZXRhaWwuZGVsdGEsaD1lLmN1cnJlbnRUYXJnZXQ7aC5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGUiLCJlbmQiKSxoLnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS14IiksaC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteSIpLGguc3R5bGUuc2V0UHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1lbmQteCIsYCR7Y31weGApLGguc3R5bGUuc2V0UHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1lbmQteSIsYCR7ZH1weGApLGIudmFsdWU9ITF9fSl9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCh7cmVtYWluaW5nOmMsZHVyYXRpb246ZH0pPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIse3JlbWFpbmluZzpjLGR1cmF0aW9uOmQsb3BlbjpZbi51bnJlZihiKX0pXSksXzozfSwxNixbIm9wZW4iLCJ0eXBlIiwiYXMiLCJhcy1jaGlsZCIsImR1cmF0aW9uIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksVXM9cXMsSHM9WW4uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlRvYXN0VGl0bGUiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPWU7cmV0dXJuIHVzZUZvcndhcmRFeHBvc2UoKSwoZSxkKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKGdzKSxZbi5ub3JtYWxpemVQcm9wcyhZbi5ndWFyZFJlYWN0aXZlUHJvcHMoYykpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksR3M9WW4uZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkZvY3VzUHJveHkiLGVtaXRzOlsiZm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0Il0sc2V0dXAoZSx7ZW1pdDpjfSl7Y29uc3QgZD1jLGg9QXMoKTtyZXR1cm4oZSxjKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKHdzKSx7dGFiaW5kZXg6IjAiLHN0eWxlOntwb3NpdGlvbjoiZml4ZWQifSxvbkZvY3VzOmNbMF18fChjWzBdPWU9Pntjb25zdCBjPWUucmVsYXRlZFRhcmdldDshWW4udW5yZWYoaCkudmlld3BvcnQudmFsdWU/LmNvbnRhaW5zKGMpJiZkKCJmb2N1c0Zyb21PdXRzaWRlVmlld3BvcnQiKX0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpfX0pLFdzPVluLmRlZmluZUNvbXBvbmVudCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiVG9hc3RWaWV3cG9ydCIscHJvcHM6e2hvdGtleTp7dHlwZTpBcnJheSxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT5bIkY4Il19LGxhYmVsOnt0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExLGRlZmF1bHQ6Ik5vdGlmaWNhdGlvbnMgKHtob3RrZXl9KSJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJvbCJ9fSxzZXR1cChlKXtjb25zdCBjPWUse2hvdGtleTpkLGxhYmVsOmh9PVluLnRvUmVmcyhjKSx7Zm9yd2FyZFJlZjp2LGN1cnJlbnRFbGVtZW50OmJ9PXVzZUZvcndhcmRFeHBvc2UoKSx7Q29sbGVjdGlvblNsb3Q6eSxnZXRJdGVtczpFfT11c2VDb2xsZWN0aW9uKCksaz1BcygpLF89WW4uY29tcHV0ZWQoKCk9PmsudG9hc3RDb3VudC52YWx1ZT4wKSxUPVluLnJlZigpLE49WW4ucmVmKCksTz0vS2V5L2csUj0vRGlnaXQvZyxNPVluLmNvbXB1dGVkKCgpPT5kLnZhbHVlLmpvaW4oIisiKS5yZXBsYWNlKE8sIiIpLnJlcGxhY2UoUiwiIikpO2Z1bmN0aW9uIGdldFNvcnRlZFRhYmJhYmxlQ2FuZGlkYXRlcyh7dGFiYmluZ0RpcmVjdGlvbjplfSl7Y29uc3QgYz1FKCkubWFwKGU9PmUucmVmKSxkPWMubWFwKGM9Pntjb25zdCBkPVtjLC4uLmdldFRhYmJhYmxlQ2FuZGlkYXRlcyhjKV07cmV0dXJuImZvcndhcmRzIj09PWU/ZDpkLnJldmVyc2UoKX0pO3JldHVybigiZm9yd2FyZHMiPT09ZT9kLnJldmVyc2UoKTpkKS5mbGF0KCl9cmV0dXJuIG9uS2V5U3Ryb2tlKGQudmFsdWUsKCk9PntiLnZhbHVlLmZvY3VzKCl9KSxZbi53YXRjaEVmZmVjdChlPT57Y29uc3QgYz1iLnZhbHVlO2lmKF8udmFsdWUmJmMpe2NvbnN0IGhhbmRsZVBhdXNlPSgpPT57aWYoIWsuaXNDbG9zZVBhdXNlZFJlZi52YWx1ZSl7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQoUHMpO2MuZGlzcGF0Y2hFdmVudChlKSxrLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWU9ITB9fSxoYW5kbGVSZXN1bWU9KCk9PntpZihrLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWUpe2NvbnN0IGU9bmV3IEN1c3RvbUV2ZW50KE1zKTtjLmRpc3BhdGNoRXZlbnQoZSksay5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlPSExfX0saGFuZGxlRm9jdXNPdXRSZXN1bWU9ZT0+eyFjLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkmJmhhbmRsZVJlc3VtZSgpfSxoYW5kbGVQb2ludGVyTGVhdmVSZXN1bWU9KCk9PntjLmNvbnRhaW5zKGdldEFjdGl2ZUVsZW1lbnQoKSl8fGhhbmRsZVJlc3VtZSgpfSxoYW5kbGVLZXlEb3duPWU9Pntjb25zdCBkPWUuYWx0S2V5fHxlLmN0cmxLZXl8fGUubWV0YUtleTtpZigiVGFiIj09PWUua2V5JiYhZCl7Y29uc3QgZD1nZXRBY3RpdmVFbGVtZW50KCksaD1lLnNoaWZ0S2V5O2lmKGUudGFyZ2V0PT09YyYmaClyZXR1cm4gdm9pZCBULnZhbHVlPy5mb2N1cygpO2NvbnN0IHY9Z2V0U29ydGVkVGFiYmFibGVDYW5kaWRhdGVzKHt0YWJiaW5nRGlyZWN0aW9uOmg/ImJhY2t3YXJkcyI6ImZvcndhcmRzIn0pLGI9di5maW5kSW5kZXgoZT0+ZT09PWQpO2ZvY3VzRmlyc3Qodi5zbGljZShiKzEpKT9lLnByZXZlbnREZWZhdWx0KCk6aD9ULnZhbHVlPy5mb2N1cygpOk4udmFsdWU/LmZvY3VzKCl9fTtjLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGhhbmRsZVBhdXNlKSxjLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixoYW5kbGVGb2N1c091dFJlc3VtZSksYy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUGF1c2UpLGMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVQb2ludGVyTGVhdmVSZXN1bWUpLGMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsaGFuZGxlS2V5RG93biksKHZvaWQgMCkuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsaGFuZGxlUGF1c2UpLCh2b2lkIDApLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixoYW5kbGVSZXN1bWUpLGUoKCk9PntjLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGhhbmRsZVBhdXNlKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixoYW5kbGVGb2N1c091dFJlc3VtZSksYy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsaGFuZGxlUGF1c2UpLGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixoYW5kbGVQb2ludGVyTGVhdmVSZXN1bWUpLGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsaGFuZGxlS2V5RG93biksKHZvaWQgMCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsaGFuZGxlUGF1c2UpLCh2b2lkIDApLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIixoYW5kbGVSZXN1bWUpfSl9fSksKGUsYyk9PihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZih2cykse3JvbGU6InJlZ2lvbiIsImFyaWEtbGFiZWwiOiJzdHJpbmciPT10eXBlb2YgWW4udW5yZWYoaCk/WW4udW5yZWYoaCkucmVwbGFjZSgie2hvdGtleX0iLE0udmFsdWUpOlluLnVucmVmKGgpKE0udmFsdWUpLHRhYmluZGV4OiItMSIsc3R5bGU6WW4ubm9ybWFsaXplU3R5bGUoe3BvaW50ZXJFdmVudHM6Xy52YWx1ZT92b2lkIDA6Im5vbmUifSl9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltfLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhHcyx7a2V5OjAscmVmOmU9PntlJiYoVC52YWx1ZT1Zbi51bnJlZih1bnJlZkVsZW1lbnQpKGUpKX0sb25Gb2N1c0Zyb21PdXRzaWRlVmlld3BvcnQ6Y1swXXx8KGNbMF09KCk9Pntjb25zdCBlPWdldFNvcnRlZFRhYmJhYmxlQ2FuZGlkYXRlcyh7dGFiYmluZ0RpcmVjdGlvbjoiZm9yd2FyZHMifSk7WW4udW5yZWYoZm9jdXNGaXJzdCkoZSl9KX0sbnVsbCw1MTIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKSxZbi5jcmVhdGVWTm9kZShZbi51bnJlZih5KSxudWxsLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihncyksWW4ubWVyZ2VQcm9wcyh7cmVmOlluLnVucmVmKHYpLHRhYmluZGV4OiItMSIsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZH0sZS4kYXR0cnMpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30pLF8udmFsdWU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKEdzLHtrZXk6MSxyZWY6ZT0+e2UmJihOLnZhbHVlPVluLnVucmVmKHVucmVmRWxlbWVudCkoZSkpfSxvbkZvY3VzRnJvbU91dHNpZGVWaWV3cG9ydDpjWzFdfHwoY1sxXT0oKT0+e2NvbnN0IGU9Z2V0U29ydGVkVGFiYmFibGVDYW5kaWRhdGVzKHt0YWJiaW5nRGlyZWN0aW9uOiJiYWNrd2FyZHMifSk7WW4udW5yZWYoZm9jdXNGaXJzdCkoZSl9KX0sbnVsbCw1MTIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKV0pLF86M30sOCxbImFyaWEtbGFiZWwiLCJzdHlsZSJdKSl9fSksWHM9V3M7Y29uc3RbS3MsSnNdPWNyZWF0ZUNvbnRleHQoIlRvb2x0aXBQcm92aWRlciIpO3ZhciBRcz1Zbi5kZWZpbmVDb21wb25lbnQoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvb2x0aXBQcm92aWRlciIscHJvcHM6e2RlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NzAwfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LGRpc2FibGVIb3ZlcmFibGVDb250ZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSx7ZGVsYXlEdXJhdGlvbjpkLHNraXBEZWxheUR1cmF0aW9uOmgsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6dixkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6YixpZ25vcmVOb25LZXlib2FyZEZvY3VzOnksZGlzYWJsZWQ6RSxjb250ZW50Omt9PVluLnRvUmVmcyhjKTt1c2VGb3J3YXJkRXhwb3NlKCk7Y29uc3QgXz1Zbi5yZWYoITApLFQ9WW4ucmVmKCExKSx7c3RhcnQ6TixzdG9wOk99PXVzZVRpbWVvdXRGbigoKT0+e18udmFsdWU9ITB9LGgse2ltbWVkaWF0ZTohMX0pO3JldHVybiBKcyh7aXNPcGVuRGVsYXllZDpfLGRlbGF5RHVyYXRpb246ZCxvbk9wZW4oKXtPKCksXy52YWx1ZT0hMX0sb25DbG9zZSgpe04oKX0saXNQb2ludGVySW5UcmFuc2l0UmVmOlQsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6dixkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6YixkaXNhYmxlZDpFLGlnbm9yZU5vbktleWJvYXJkRm9jdXM6eSxjb250ZW50Omt9KSwoZSxjKT0+WW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIpfX0pO2Z1bmN0aW9uIHNlcmlhbGl6ZShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/YCcke2V9J2A6KG5ldyBZcykuc2VyaWFsaXplKGUpfWNvbnN0IFlzPWZ1bmN0aW9uKCl7Y2xhc3Mgb3sjZT1uZXcgTWFwO2NvbXBhcmUoZSxjKXtjb25zdCBkPXR5cGVvZiBlLGg9dHlwZW9mIGM7cmV0dXJuInN0cmluZyI9PT1kJiYic3RyaW5nIj09PWg/ZS5sb2NhbGVDb21wYXJlKGMpOiJudW1iZXIiPT09ZCYmIm51bWJlciI9PT1oP2UtYzpTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmUuY2FsbCh0aGlzLnNlcmlhbGl6ZShlLCEwKSx0aGlzLnNlcmlhbGl6ZShjLCEwKSl9c2VyaWFsaXplKGUsYyl7aWYobnVsbD09PWUpcmV0dXJuIm51bGwiO3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJzdHJpbmciOnJldHVybiBjP2U6YCcke2V9J2A7Y2FzZSJiaWdpbnQiOnJldHVybmAke2V9bmA7Y2FzZSJvYmplY3QiOnJldHVybiB0aGlzLiRvYmplY3QoZSk7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHRoaXMuJGZ1bmN0aW9uKGUpfXJldHVybiBTdHJpbmcoZSl9c2VyaWFsaXplT2JqZWN0KGUpe2NvbnN0IGM9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO2lmKCJbb2JqZWN0IE9iamVjdF0iIT09YylyZXR1cm4gdGhpcy5zZXJpYWxpemVCdWlsdEluVHlwZShjLmxlbmd0aDwxMD9gdW5rbm93bjoke2N9YDpjLnNsaWNlKDgsLTEpLGUpO2NvbnN0IGQ9ZS5jb25zdHJ1Y3RvcixoPWQ9PT1PYmplY3R8fHZvaWQgMD09PWQ/IiI6ZC5uYW1lO2lmKCIiIT09aCYmZ2xvYmFsVGhpc1toXT09PWQpcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUoaCxlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS50b0pTT04pe2NvbnN0IGM9ZS50b0pTT04oKTtyZXR1cm4gaCsobnVsbCE9PWMmJiJvYmplY3QiPT10eXBlb2YgYz90aGlzLiRvYmplY3QoYyk6YCgke3RoaXMuc2VyaWFsaXplKGMpfSlgKX1yZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKGgsT2JqZWN0LmVudHJpZXMoZSkpfXNlcmlhbGl6ZUJ1aWx0SW5UeXBlKGUsYyl7Y29uc3QgZD10aGlzWyIkIitlXTtpZihkKXJldHVybiBkLmNhbGwodGhpcyxjKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYz8uZW50cmllcylyZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKGUsYy5lbnRyaWVzKCkpO3Rocm93IG5ldyBFcnJvcihgQ2Fubm90IHNlcmlhbGl6ZSAke2V9YCl9c2VyaWFsaXplT2JqZWN0RW50cmllcyhlLGMpe2NvbnN0IGQ9QXJyYXkuZnJvbShjKS5zb3J0KChlLGMpPT50aGlzLmNvbXBhcmUoZVswXSxjWzBdKSk7bGV0IGg9YCR7ZX17YDtmb3IobGV0IGU9MDtlPGQubGVuZ3RoO2UrKyl7Y29uc3RbYyx2XT1kW2VdO2grPWAke3RoaXMuc2VyaWFsaXplKGMsITApfToke3RoaXMuc2VyaWFsaXplKHYpfWAsZTxkLmxlbmd0aC0xJiYoaCs9IiwiKX1yZXR1cm4gaCsifSJ9JG9iamVjdChlKXtsZXQgYz10aGlzLiNlLmdldChlKTtyZXR1cm4gdm9pZCAwPT09YyYmKHRoaXMuI2Uuc2V0KGUsYCMke3RoaXMuI2Uuc2l6ZX1gKSxjPXRoaXMuc2VyaWFsaXplT2JqZWN0KGUpLHRoaXMuI2Uuc2V0KGUsYykpLGN9JGZ1bmN0aW9uKGUpe2NvbnN0IGM9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7cmV0dXJuIltuYXRpdmUgY29kZV0gfSI9PT1jLnNsaWNlKC0xNSk/YCR7ZS5uYW1lfHwiIn0oKVtuYXRpdmVdYDpgJHtlLm5hbWV9KCR7ZS5sZW5ndGh9KSR7Yy5yZXBsYWNlKC9ccypcblxzKi9nLCIiKX1gfSRBcnJheShlKXtsZXQgYz0iWyI7Zm9yKGxldCBkPTA7ZDxlLmxlbmd0aDtkKyspYys9dGhpcy5zZXJpYWxpemUoZVtkXSksZDxlLmxlbmd0aC0xJiYoYys9IiwiKTtyZXR1cm4gYysiXSJ9JERhdGUoZSl7dHJ5e3JldHVybmBEYXRlKCR7ZS50b0lTT1N0cmluZygpfSlgfWNhdGNoe3JldHVybiJEYXRlKG51bGwpIn19JEFycmF5QnVmZmVyKGUpe3JldHVybmBBcnJheUJ1ZmZlclske25ldyBVaW50OEFycmF5KGUpLmpvaW4oIiwiKX1dYH0kU2V0KGUpe3JldHVybmBTZXQke3RoaXMuJEFycmF5KEFycmF5LmZyb20oZSkuc29ydCgoZSxjKT0+dGhpcy5jb21wYXJlKGUsYykpKX1gfSRNYXAoZSl7cmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcygiTWFwIixlLmVudHJpZXMoKSl9fWZvcihjb25zdCBlIG9mWyJFcnJvciIsIlJlZ0V4cCIsIlVSTCJdKW8ucHJvdG90eXBlWyIkIitlXT1mdW5jdGlvbihjKXtyZXR1cm5gJHtlfSgke2N9KWB9O2Zvcihjb25zdCBlIG9mWyJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiLCJJbnQxNkFycmF5IiwiVWludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiVWludDMyQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiXSlvLnByb3RvdHlwZVsiJCIrZV09ZnVuY3Rpb24oYyl7cmV0dXJuYCR7ZX1bJHtjLmpvaW4oIiwiKX1dYH07Zm9yKGNvbnN0IGUgb2ZbIkJpZ0ludDY0QXJyYXkiLCJCaWdVaW50NjRBcnJheSJdKW8ucHJvdG90eXBlWyIkIitlXT1mdW5jdGlvbihjKXtyZXR1cm5gJHtlfVske2Muam9pbigibiwiKX0ke2MubGVuZ3RoPjA/Im4iOiIifV1gfTtyZXR1cm4gb30oKTtmdW5jdGlvbiBpc0VxdWFsJDEoZSxjKXtyZXR1cm4gZT09PWN8fHNlcmlhbGl6ZShlKT09PXNlcmlhbGl6ZShjKX1mdW5jdGlvbiBkaWZmKGUsYyl7cmV0dXJuIF9kaWZmKF90b0hhc2hlZE9iamVjdChlKSxfdG9IYXNoZWRPYmplY3QoYykpfWZ1bmN0aW9uIF9kaWZmKGUsYyl7Y29uc3QgZD1bXSxoPW5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGUucHJvcHN8fHt9KSwuLi5PYmplY3Qua2V5cyhjLnByb3BzfHx7fSldKTtpZihlLnByb3BzJiZjLnByb3BzKWZvcihjb25zdCB2IG9mIGgpe2NvbnN0IGg9ZS5wcm9wc1t2XSxiPWMucHJvcHNbdl07aCYmYj9kLnB1c2goLi4uX2RpZmYoZS5wcm9wcz8uW3ZdLGMucHJvcHM/Llt2XSkpOihofHxiKSYmZC5wdXNoKG5ldyBEaWZmRW50cnkoKGJ8fGgpLmtleSxoPyJyZW1vdmVkIjoiYWRkZWQiLGIsaCkpfXJldHVybiAwPT09aC5zaXplJiZlLmhhc2ghPT1jLmhhc2gmJmQucHVzaChuZXcgRGlmZkVudHJ5KChjfHxlKS5rZXksImNoYW5nZWQiLGMsZSkpLGR9ZnVuY3Rpb24gX3RvSGFzaGVkT2JqZWN0KGUsYz0iIil7aWYoZSYmIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiBuZXcgRGlmZkhhc2hlZE9iamVjdChjLGUsc2VyaWFsaXplKGUpKTtjb25zdCBkPXt9LGg9W107Zm9yKGNvbnN0IHYgaW4gZSlkW3ZdPV90b0hhc2hlZE9iamVjdChlW3ZdLGM/YCR7Y30uJHt2fWA6diksaC5wdXNoKGRbdl0uaGFzaCk7cmV0dXJuIG5ldyBEaWZmSGFzaGVkT2JqZWN0KGMsZSxgeyR7aC5qb2luKCI6Iil9fWAsZCl9Y2xhc3MgRGlmZkVudHJ5e2NvbnN0cnVjdG9yKGUsYyxkLGgpe3RoaXMua2V5PWUsdGhpcy50eXBlPWMsdGhpcy5uZXdWYWx1ZT1kLHRoaXMub2xkVmFsdWU9aH10b1N0cmluZygpe3JldHVybiB0aGlzLnRvSlNPTigpfXRvSlNPTigpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiYWRkZWQiOnJldHVybmBBZGRlZCAgIFxgJHt0aGlzLmtleX1cYGA7Y2FzZSJyZW1vdmVkIjpyZXR1cm5gUmVtb3ZlZCBcYCR7dGhpcy5rZXl9XGBgO2Nhc2UiY2hhbmdlZCI6cmV0dXJuYENoYW5nZWQgXGAke3RoaXMua2V5fVxgIGZyb20gXGAke3RoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCl8fCItIn1cYCB0byBcYCR7dGhpcy5uZXdWYWx1ZS50b1N0cmluZygpfVxgYH19fWNsYXNzIERpZmZIYXNoZWRPYmplY3R7Y29uc3RydWN0b3IoZSxjLGQsaCl7dGhpcy5rZXk9ZSx0aGlzLnZhbHVlPWMsdGhpcy5oYXNoPWQsdGhpcy5wcm9wcz1ofXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJvcHM/YHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oIiwiKX19YDpKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKX10b0pTT04oKXtjb25zdCBlPXRoaXMua2V5fHwiLiI7cmV0dXJuIHRoaXMucHJvcHM/YCR7ZX0oeyR7T2JqZWN0LmtleXModGhpcy5wcm9wcykuam9pbigiLCIpfX0pYDpgJHtlfSgke3RoaXMudmFsdWV9KWB9fWZ1bmN0aW9uIHBpY2soZSxjKXtjb25zdCBkPXt9O2Zvcihjb25zdCBoIG9mIGMpZFtoXT1lW2hdO3JldHVybiBkfWZ1bmN0aW9uIG9taXQoZSxjKXtjb25zdCBkPXsuLi5lfTtmb3IoY29uc3QgZSBvZiBjKWRlbGV0ZSBkW2VdO3JldHVybiBkfWZ1bmN0aW9uIGdldChlLGMsZCl7InN0cmluZyI9PXR5cGVvZiBjJiYoYz1jLnNwbGl0KCIuIikubWFwKGU9Pntjb25zdCBjPU51bWJlcihlKTtyZXR1cm4gTnVtYmVyLmlzTmFOKGMpP2U6Y30pKTtsZXQgaD1lO2Zvcihjb25zdCBlIG9mIGMpe2lmKG51bGw9PWgpcmV0dXJuIGQ7aD1oW2VdfXJldHVybiB2b2lkIDAhPT1oP2g6ZH1mdW5jdGlvbiBsb29zZVRvTnVtYmVyKGUpe2NvbnN0IGM9TnVtYmVyLnBhcnNlRmxvYXQoZSk7cmV0dXJuIE51bWJlci5pc05hTihjKT9lOmN9ZnVuY3Rpb24gY29tcGFyZShlLGMsZCl7cmV0dXJuIHZvaWQgMCE9PWUmJnZvaWQgMCE9PWMmJigic3RyaW5nIj09dHlwZW9mIGU/ZT09PWM6ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZChlLGMpOiJzdHJpbmciPT10eXBlb2YgZD9nZXQoZSxkKT09PWdldChjLGQpOmlzRXF1YWwkMShlLGMpKX1mdW5jdGlvbiBpc0VtcHR5KGUpe2lmKG51bGw9PWUpcmV0dXJuITA7aWYoImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlKXJldHVybiExO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gMD09PWUudHJpbSgpLmxlbmd0aDtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiAwPT09ZS5sZW5ndGg7aWYoZSBpbnN0YW5jZW9mIE1hcHx8ZSBpbnN0YW5jZW9mIFNldClyZXR1cm4gMD09PWUuc2l6ZTtpZihlIGluc3RhbmNlb2YgRGF0ZXx8ZSBpbnN0YW5jZW9mIFJlZ0V4cHx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuITE7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXtmb3IoY29uc3QgYyBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGMpKXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGdldERpc3BsYXlWYWx1ZShlLGMsZD17fSl7Y29uc3R7dmFsdWVLZXk6aCxsYWJlbEtleTp2LGJ5OmJ9PWQseT1lLmZpbmQoZT0+Y29tcGFyZSgib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZoP2dldChlLGgpOmUsYyxiKSk7aWYoaXNFbXB0eShjKSYmeSlyZXR1cm4gdj9nZXQoeSx2KTp2b2lkIDA7aWYoaXNFbXB0eShjKSlyZXR1cm47Y29uc3QgRT15Pz9jO3JldHVybiBudWxsIT1FPyJvYmplY3QiPT10eXBlb2YgRT92P2dldChFLHYpOnZvaWQgMDpTdHJpbmcoRSk6dm9pZCAwfWZ1bmN0aW9uIGlzQXJyYXlPZkFycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGVbMF0pfWZ1bmN0aW9uIG1lcmdlQ2xhc3NlcyhlLGMpe3JldHVybiBlfHxjP1suLi5BcnJheS5pc0FycmF5KGUpP2U6W2VdLGNdLmZpbHRlcihCb29sZWFuKToiIn1mdW5jdGlvbiBnZXRTbG90Q2hpbGRyZW5UZXh0KGUpe3JldHVybiBlLm1hcChlPT5lLmNoaWxkcmVuJiYic3RyaW5nIiE9dHlwZW9mIGUuY2hpbGRyZW4/QXJyYXkuaXNBcnJheShlLmNoaWxkcmVuKT9nZXRTbG90Q2hpbGRyZW5UZXh0KGUuY2hpbGRyZW4pOmUuY2hpbGRyZW4uZGVmYXVsdD9nZXRTbG90Q2hpbGRyZW5UZXh0KGUuY2hpbGRyZW4uZGVmYXVsdCgpKTp2b2lkIDA6ZS5jaGlsZHJlbnx8IiIpLmpvaW4oIiIpfWZ1bmN0aW9uIHRyYW5zZm9ybVVJKGUsYyl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLnJlZHVjZSgoZSxbZCxoXSk9PihlW2RdPSJmdW5jdGlvbiI9PXR5cGVvZiBoP2goe2NsYXNzOmM/LltkXX0pOmgsZSksey4uLmN8fHt9fSl9ZnVuY3Rpb24gYnVpbGRUcmFuc2xhdG9yKGUpe3JldHVybihjLGQpPT5mdW5jdGlvbihlLGMsZCl7Y29uc3QgaD1nZXQoZCxgbWVzc2FnZXMuJHtlfWAsZSk7cmV0dXJuIGgucmVwbGFjZSgvXHsoXHcrKVx9L2csKGUsZCk9PmAke2M/LltkXT8/YHske2R9fWB9YCl9KGMsZCxZbi51bnJlZihlKSl9ZnVuY3Rpb24gZGVmaW5lTG9jYWxlKGUpe3JldHVybiBoKGUse2RpcjoibHRyIn0pfWNvbnN0IFpzPWRlZmluZUxvY2FsZSh7bmFtZToiRW5nbGlzaCIsY29kZToiZW4iLG1lc3NhZ2VzOnthbGVydDp7Y2xvc2U6IkNsb3NlIn0sYXV0aEZvcm06e2hpZGVQYXNzd29yZDoiSGlkZSBwYXNzd29yZCIsc2hvd1Bhc3N3b3JkOiJTaG93IHBhc3N3b3JkIixzdWJtaXQ6IkNvbnRpbnVlIn0sYmFubmVyOntjbG9zZToiQ2xvc2UifSxjYWxlbmRhcjp7bmV4dE1vbnRoOiJOZXh0IG1vbnRoIixuZXh0WWVhcjoiTmV4dCB5ZWFyIixwcmV2TW9udGg6IlByZXZpb3VzIG1vbnRoIixwcmV2WWVhcjoiUHJldmlvdXMgeWVhciJ9LGNhcm91c2VsOntkb3RzOiJDaG9vc2Ugc2xpZGUgdG8gZGlzcGxheSIsZ290bzoiR28gdG8gc2xpZGUge3NsaWRlfSIsbmV4dDoiTmV4dCIscHJldjoiUHJldiJ9LGNoYXRQcm9tcHQ6e3BsYWNlaG9sZGVyOiJUeXBlIHlvdXIgbWVzc2FnZSBoZXJl4oCmIn0sY2hhdFByb21wdFN1Ym1pdDp7bGFiZWw6IlNlbmQgcHJvbXB0In0sY29sb3JNb2RlOntkYXJrOiJEYXJrIixsaWdodDoiTGlnaHQiLHN3aXRjaFRvRGFyazoiU3dpdGNoIHRvIGRhcmsgbW9kZSIsc3dpdGNoVG9MaWdodDoiU3dpdGNoIHRvIGxpZ2h0IG1vZGUiLHN5c3RlbToiU3lzdGVtIn0sY29tbWFuZFBhbGV0dGU6e2JhY2s6IkJhY2siLGNsb3NlOiJDbG9zZSIsbm9EYXRhOiJObyBkYXRhIixub01hdGNoOiJObyBtYXRjaGluZyBkYXRhIixwbGFjZWhvbGRlcjoiVHlwZSBhIGNvbW1hbmQgb3Igc2VhcmNo4oCmIn0sY29udGVudFNlYXJjaDp7bGlua3M6IkxpbmtzIix0aGVtZToiVGhlbWUifSxjb250ZW50U2VhcmNoQnV0dG9uOntsYWJlbDoiU2VhcmNo4oCmIn0sY29udGVudFRvYzp7dGl0bGU6Ik9uIHRoaXMgcGFnZSJ9LGRyb3Bkb3duTWVudTp7bm9NYXRjaDoiTm8gbWF0Y2hpbmcgZGF0YSIsc2VhcmNoOiJTZWFyY2jigKYifSxkYXNoYm9hcmRTZWFyY2g6e3RoZW1lOiJUaGVtZSJ9LGRhc2hib2FyZFNlYXJjaEJ1dHRvbjp7bGFiZWw6IlNlYXJjaOKApiJ9LGRhc2hib2FyZFNpZGViYXJDb2xsYXBzZTp7Y29sbGFwc2U6IkNvbGxhcHNlIHNpZGViYXIiLGV4cGFuZDoiRXhwYW5kIHNpZGViYXIifSxkYXNoYm9hcmRTaWRlYmFyVG9nZ2xlOntjbG9zZToiQ2xvc2Ugc2lkZWJhciIsb3BlbjoiT3BlbiBzaWRlYmFyIn0sZXJyb3I6e2NsZWFyOiJCYWNrIHRvIGhvbWUifSxmaWxlVXBsb2FkOntyZW1vdmVGaWxlOiJSZW1vdmUge2ZpbGVuYW1lfSJ9LGhlYWRlcjp7Y2xvc2U6IkNsb3NlIG1lbnUiLG9wZW46Ik9wZW4gbWVudSJ9LGlucHV0TWVudTp7Y3JlYXRlOidDcmVhdGUgIntsYWJlbH0iJyxub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEifSxpbnB1dE51bWJlcjp7ZGVjcmVtZW50OiJEZWNyZW1lbnQiLGluY3JlbWVudDoiSW5jcmVtZW50In0sbGlzdGJveDp7bm9EYXRhOiJObyBkYXRhIixub01hdGNoOiJObyBtYXRjaGluZyBkYXRhIixzZWFyY2g6IlNlYXJjaOKApiJ9LG1vZGFsOntjbG9zZToiQ2xvc2UifSxwcmljaW5nVGFibGU6e2NhcHRpb246IlByaWNpbmcgcGxhbiBjb21wYXJpc29uIn0scHJvc2U6e2NvZGVDb2xsYXBzZTp7Y2xvc2VUZXh0OiJDb2xsYXBzZSIsbmFtZToiY29kZSIsb3BlblRleHQ6IkV4cGFuZCJ9LGNvbGxhcHNpYmxlOntjbG9zZVRleHQ6IkhpZGUiLG5hbWU6InByb3BlcnRpZXMiLG9wZW5UZXh0OiJTaG93In0scHJlOntjb3B5OiJDb3B5IGNvZGUgdG8gY2xpcGJvYXJkIn0scHJvbXB0Ontjb3B5OiJDb3B5IHByb21wdCIsb3BlbkluOiJPcGVuIGluIHtuYW1lfSJ9fSxjaGF0UmVhc29uaW5nOnt0aGlua2luZzoiVGhpbmtpbmfigKYiLHRob3VnaHQ6IlRob3VnaHQiLHRob3VnaHRGb3I6IlRob3VnaHQgZm9yIHtkdXJhdGlvbn0ifSxzaWRlYmFyOntjbG9zZToiQ2xvc2UiLHRvZ2dsZToiVG9nZ2xlIn0sc2VsZWN0TWVudTp7Y3JlYXRlOidDcmVhdGUgIntsYWJlbH0iJyxub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEiLHNlYXJjaDoiU2VhcmNo4oCmIn0sc2xpZGVvdmVyOntjbG9zZToiQ2xvc2UifSx0YWJsZTp7bm9EYXRhOiJObyBkYXRhIn0sdG9hc3Q6e2Nsb3NlOiJDbG9zZSJ9fX0pLGVsPVN5bWJvbC5mb3IoIm51eHQtdWkubG9jYWxlLWNvbnRleHQiKSx1c2VMb2NhbGU9ZT0+e2NvbnN0IGM9ZXx8WW4udG9SZWYoWW4uaW5qZWN0KGVsLFpzKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybntsYW5nOlluLmNvbXB1dGVkKCgpPT5Zbi51bnJlZihlKS5uYW1lKSxjb2RlOlluLmNvbXB1dGVkKCgpPT5Zbi51bnJlZihlKS5jb2RlKSxkaXI6WW4uY29tcHV0ZWQoKCk9PlluLnVucmVmKGUpLmRpciksbG9jYWxlOlluLmlzUmVmKGUpP2U6WW4ucmVmKGUpLHQ6YnVpbGRUcmFuc2xhdG9yKGUpfX0oWW4uY29tcHV0ZWQoKCk9PmMudmFsdWV8fFpzKSl9LHRsPVN5bWJvbCgibnV4dC11aS5wb3J0YWwtdGFyZ2V0Iik7ZnVuY3Rpb24gdXNlUG9ydGFsKGUpe2NvbnN0IGM9WW4uaW5qZWN0KHRsLHZvaWQgMCksZD1Zbi5jb21wdXRlZCgoKT0+ITA9PT1lLnZhbHVlP2M/LnZhbHVlOmUudmFsdWUpLGg9WW4uY29tcHV0ZWQoKCk9PiJib29sZWFuIj09dHlwZW9mIGQudmFsdWUmJiFkLnZhbHVlKSx2PVluLmNvbXB1dGVkKCgpPT4iYm9vbGVhbiI9PXR5cGVvZiBkLnZhbHVlPyJib2R5IjpkLnZhbHVlKTtyZXR1cm4gWW4uY29tcHV0ZWQoKCk9Pih7dG86di52YWx1ZSxkaXNhYmxlZDpoLnZhbHVlfSkpfWNvbnN0W25sXT1jcmVhdGVDb250ZXh0KCJVVGhlbWUiLCJSb290Q29udGV4dCIpO2Z1bmN0aW9uIHVzZUNvbXBvbmVudFVJKGUsYyl7Y29uc3R7dWk6ZH09bmwoe3VpOlluLmNvbXB1dGVkKCgpPT4oe30pKX0pO3JldHVybiBZbi5jb21wdXRlZCgoKT0+e2NvbnN0IHY9Z2V0KGQudmFsdWUsZSl8fHt9O3JldHVybiBoKGMudWk/P3t9LHYpfSl9Y29uc3Qgb2w9U3ltYm9sKCJudXh0LXVpLnRvYXN0LW1heCIpO2Z1bmN0aW9uIHVzZVRvYXN0KCl7Y29uc3QgZT11c2VTdGF0ZSgidG9hc3RzIiwoKT0+W10pLGM9WW4uaW5qZWN0KG9sLHZvaWQgMCksZD1Zbi5yZWYoITEpLGg9W107cmV0dXJue3RvYXN0czplLGFkZDpmdW5jdGlvbih2KXtjb25zdCBiPXtpZDpgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsOSl9YCxvcGVuOiEwLC4uLnZ9LHk9ZS52YWx1ZS5maW5kSW5kZXgoZT0+ZS5pZD09PWIuaWQpO3JldHVybi0xIT09eT8oZS52YWx1ZVt5XT17Li4uZS52YWx1ZVt5XSwuLi5iLF9kdXBsaWNhdGU6KGUudmFsdWVbeV0uX2R1cGxpY2F0ZXx8MCkrMX0sYik6KGgucHVzaChiKSxhc3luYyBmdW5jdGlvbigpe2lmKCFkLnZhbHVlJiYwIT09aC5sZW5ndGgpe2ZvcihkLnZhbHVlPSEwO2gubGVuZ3RoPjA7KXtjb25zdCBkPWguc2hpZnQoKTthd2FpdCBZbi5uZXh0VGljaygpLGUudmFsdWU9Wy4uLmUudmFsdWUsZF0uc2xpY2UoLShjPy52YWx1ZT8/NSkpfWQudmFsdWU9ITF9fSgpLGIpfSx1cGRhdGU6ZnVuY3Rpb24oYyxkKXtjb25zdCBoPWUudmFsdWUuZmluZEluZGV4KGU9PmUuaWQ9PT1jKTstMSE9PWgmJihlLnZhbHVlW2hdPXsuLi5lLnZhbHVlW2hdLC4uLmQsZHVyYXRpb246ZC5kdXJhdGlvbixvcGVuOiEwLF91cGRhdGVkOiEwfSxZbi5uZXh0VGljaygoKT0+e2NvbnN0IGQ9ZS52YWx1ZS5maW5kSW5kZXgoZT0+ZS5pZD09PWMpOy0xIT09ZCYmZS52YWx1ZVtkXS5fdXBkYXRlZCYmKGUudmFsdWVbZF09ey4uLmUudmFsdWVbZF0sX3VwZGF0ZWQ6dm9pZCAwfSl9KSl9LHJlbW92ZTpmdW5jdGlvbihjKXtjb25zdCBkPWUudmFsdWUuZmluZEluZGV4KGU9PmUuaWQ9PT1jKTstMSE9PWQmJmUudmFsdWVbZF0uX3VwZGF0ZWR8fCgtMSE9PWQmJihlLnZhbHVlW2RdPXsuLi5lLnZhbHVlW2RdLG9wZW46ITF9KSxzZXRUaW1lb3V0KCgpPT57ZS52YWx1ZT1lLnZhbHVlLmZpbHRlcihlPT5lLmlkIT09Yyl9LDIwMCkpfSxjbGVhcjpmdW5jdGlvbigpe2UudmFsdWU9W119fX12YXIgcmw9L1xzKy9nLGN4PSguLi5lKT0+e2NvbnN0IGM9W10sYnVpbGRDbGFzc1N0cmluZz1lPT57aWYoIWUmJjAhPT1lJiYwbiE9PWUpcmV0dXJuO2lmKEFycmF5LmlzQXJyYXkoZSkpe2ZvcihsZXQgYz0wLGQ9ZS5sZW5ndGg7YzxkO2MrKylidWlsZENsYXNzU3RyaW5nKGVbY10pO3JldHVybn1jb25zdCBkPXR5cGVvZiBlO2lmKCJzdHJpbmciPT09ZHx8Im51bWJlciI9PT1kfHwiYmlnaW50Ij09PWQpe2lmKCJudW1iZXIiPT09ZCYmZSE9ZSlyZXR1cm47Yy5wdXNoKFN0cmluZyhlKSl9ZWxzZSBpZigib2JqZWN0Ij09PWQpe2NvbnN0IGQ9T2JqZWN0LmtleXMoZSk7Zm9yKGxldCBoPTAsdj1kLmxlbmd0aDtoPHY7aCsrKXtjb25zdCB2PWRbaF07ZVt2XSYmYy5wdXNoKHYpfX19O2ZvcihsZXQgYz0wLGQ9ZS5sZW5ndGg7YzxkO2MrKyl7Y29uc3QgZD1lW2NdO251bGwhPWQmJmJ1aWxkQ2xhc3NTdHJpbmcoZCl9cmV0dXJuIGMubGVuZ3RoPjA/InN0cmluZyI9PXR5cGVvZihkPWMuam9pbigiICIpKSYmZD9kLnJlcGxhY2UocmwsIiAiKS50cmltKCk6ZDp2b2lkIDA7dmFyIGR9LGZhbHN5VG9TdHJpbmc9ZT0+ITE9PT1lPyJmYWxzZSI6ITA9PT1lPyJ0cnVlIjowPT09ZT8iMCI6ZSxpc0VtcHR5T2JqZWN0PWU9PntpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiEwO2Zvcihjb25zdCBjIGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGZsYXQ9KGUsYyk9Pntmb3IobGV0IGQ9MDtkPGUubGVuZ3RoO2QrKyl7Y29uc3QgaD1lW2RdO0FycmF5LmlzQXJyYXkoaCk/ZmxhdChoLGMpOmgmJmMucHVzaChoKX19LGZsYXRNZXJnZUFycmF5cz0oLi4uZSk9Pntjb25zdCBjPVtdO2ZsYXQoZSxjKTtjb25zdCBkPVtdO2ZvcihsZXQgZT0wO2U8Yy5sZW5ndGg7ZSsrKWNbZV0mJmQucHVzaChjW2VdKTtyZXR1cm4gZH0sbWVyZ2VPYmplY3RzPShlLGMpPT57Y29uc3QgZD17fTtmb3IoY29uc3QgaCBpbiBlKXtjb25zdCB2PWVbaF07aWYoaCBpbiBjKXtjb25zdCBlPWNbaF07QXJyYXkuaXNBcnJheSh2KXx8QXJyYXkuaXNBcnJheShlKT9kW2hdPWZsYXRNZXJnZUFycmF5cyhlLHYpOmRbaF09Im9iamVjdCI9PXR5cGVvZiB2JiYib2JqZWN0Ij09dHlwZW9mIGUmJnYmJmU/bWVyZ2VPYmplY3RzKHYsZSk6ZSsiICIrdn1lbHNlIGRbaF09dn1mb3IoY29uc3QgaCBpbiBjKWggaW4gZXx8KGRbaF09Y1toXSk7cmV0dXJuIGR9LGFsPXt0d01lcmdlOiEwLHR3TWVyZ2VDb25maWc6e319O3ZhciBpbD1mdW5jdGlvbigpe2xldCBlPW51bGwsYz17fSxkPSExO3JldHVybntnZXQgY2FjaGVkVHdNZXJnZSgpe3JldHVybiBlfSxzZXQgY2FjaGVkVHdNZXJnZShjKXtlPWN9LGdldCBjYWNoZWRUd01lcmdlQ29uZmlnKCl7cmV0dXJuIGN9LHNldCBjYWNoZWRUd01lcmdlQ29uZmlnKGUpe2M9ZX0sZ2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2UoKXtyZXR1cm4gZH0sc2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2UoZSl7ZD1lfSxyZXNldCgpe2U9bnVsbCxjPXt9LGQ9ITF9fX0oKSxleGVjdXRlTWVyZ2U9KGUsYyk9Pntjb25zdCBkPWN4KGUpO3JldHVybiBkJiYoYz8udHdNZXJnZT8/MSk/KGlsLmNhY2hlZFR3TWVyZ2UmJiFpbC5kaWRUd01lcmdlQ29uZmlnQ2hhbmdlfHwoaWwuZGlkVHdNZXJnZUNvbmZpZ0NoYW5nZT0hMSxpbC5jYWNoZWRUd01lcmdlPShoPWlsLmNhY2hlZFR3TWVyZ2VDb25maWcsaXNFbXB0eU9iamVjdChoKT9ZcjpleHRlbmRUYWlsd2luZE1lcmdlKHsuLi5oLGV4dGVuZDp7dGhlbWU6aC50aGVtZSxjbGFzc0dyb3VwczpoLmNsYXNzR3JvdXBzLGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczpoLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyxjb25mbGljdGluZ0NsYXNzR3JvdXBzOmguY29uZmxpY3RpbmdDbGFzc0dyb3VwcywuLi5oLmV4dGVuZH19KSkpLGlsLmNhY2hlZFR3TWVyZ2UoZCl8fHZvaWQgMCk6ZDt2YXIgaH0se2NyZWF0ZVRWOnNsfT0oZT0+e2NvbnN0IHR2Mj0oYyxkKT0+e2NvbnN0e2V4dGVuZDpoPW51bGwsc2xvdHM6dj17fSx2YXJpYW50czpiPXt9LGNvbXBvdW5kVmFyaWFudHM6eT1bXSxjb21wb3VuZFNsb3RzOkU9W10sZGVmYXVsdFZhcmlhbnRzOms9e319PWMsXz17Li4uYWwsLi4uZH0sVD1oPy5iYXNlP2N4KGguYmFzZSxjPy5iYXNlKTpjPy5iYXNlLE49aD8udmFyaWFudHMmJiFpc0VtcHR5T2JqZWN0KGgudmFyaWFudHMpP21lcmdlT2JqZWN0cyhiLGgudmFyaWFudHMpOmIsTz1oPy5kZWZhdWx0VmFyaWFudHMmJiFpc0VtcHR5T2JqZWN0KGguZGVmYXVsdFZhcmlhbnRzKT97Li4uaC5kZWZhdWx0VmFyaWFudHMsLi4ua306aztpc0VtcHR5T2JqZWN0KF8udHdNZXJnZUNvbmZpZyl8fCgoZSxjKT0+e2lmKGU9PT1jKXJldHVybiEwO2lmKCFlfHwhYylyZXR1cm4hMTtjb25zdCBkPU9iamVjdC5rZXlzKGUpLGg9T2JqZWN0LmtleXMoYyk7aWYoZC5sZW5ndGghPT1oLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHY9MDt2PGQubGVuZ3RoO3YrKyl7Y29uc3QgYj1kW3ZdO2lmKCFoLmluY2x1ZGVzKGIpKXJldHVybiExO2lmKGVbYl0hPT1jW2JdKXJldHVybiExfXJldHVybiEwfSkoXy50d01lcmdlQ29uZmlnLGlsLmNhY2hlZFR3TWVyZ2VDb25maWcpfHwoaWwuZGlkVHdNZXJnZUNvbmZpZ0NoYW5nZT0hMCxpbC5jYWNoZWRUd01lcmdlQ29uZmlnPV8udHdNZXJnZUNvbmZpZyk7Y29uc3QgUj1pc0VtcHR5T2JqZWN0KGg/LnNsb3RzKSxNPWlzRW1wdHlPYmplY3Qodik/e306e2Jhc2U6Y3goYz8uYmFzZSxSJiZoPy5iYXNlKSwuLi52fSxEPVI/TTooKGUsYyk9Pntmb3IoY29uc3QgZCBpbiBjKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGQpKXtjb25zdCBoPWNbZF07ZVtkXT1kIGluIGU/Y3goZVtkXSxoKTpofXJldHVybiBlfSkoey4uLmg/LnNsb3RzfSxpc0VtcHR5T2JqZWN0KE0pP3tiYXNlOmM/LmJhc2V9Ok0pLEw9aXNFbXB0eU9iamVjdChoPy5jb21wb3VuZFZhcmlhbnRzKT95OmZsYXRNZXJnZUFycmF5cyhoPy5jb21wb3VuZFZhcmlhbnRzLHkpLGNvbXBvbmVudD1jPT57aWYoaXNFbXB0eU9iamVjdChOKSYmaXNFbXB0eU9iamVjdCh2KSYmUilyZXR1cm4gZShULGM/LmNsYXNzLGM/LmNsYXNzTmFtZSkoXyk7aWYoTCYmIUFycmF5LmlzQXJyYXkoTCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJjb21wb3VuZFZhcmlhbnRzIiBwcm9wIG11c3QgYmUgYW4gYXJyYXkuIFJlY2VpdmVkOiAnK3R5cGVvZiBMKTtpZihFJiYhQXJyYXkuaXNBcnJheShFKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImNvbXBvdW5kU2xvdHMiIHByb3AgbXVzdCBiZSBhbiBhcnJheS4gUmVjZWl2ZWQ6ICcrdHlwZW9mIEUpO2NvbnN0IGdldFZhcmlhbnRWYWx1ZT0oZSxkPU4saD1udWxsLHY9bnVsbCk9Pntjb25zdCBiPWRbZV07aWYoIWJ8fGlzRW1wdHlPYmplY3QoYikpcmV0dXJuIG51bGw7Y29uc3QgeT12Py5bZV0/P2M/LltlXTtpZihudWxsPT09eSlyZXR1cm4gbnVsbDtjb25zdCBFPWZhbHN5VG9TdHJpbmcoeSk7aWYoIm9iamVjdCI9PXR5cGVvZiBFKXJldHVybiBudWxsO2NvbnN0IGs9Tz8uW2VdO3JldHVybiBiWyhudWxsIT1FP0U6ZmFsc3lUb1N0cmluZyhrKSl8fCJmYWxzZSJdfSxnZXRWYXJpYW50Q2xhc3NOYW1lc0J5U2xvdEtleT0oZSxjKT0+e2lmKCFOfHwib2JqZWN0IiE9dHlwZW9mIE4pcmV0dXJuIG51bGw7Y29uc3QgZD1bXTtmb3IoY29uc3QgaCBpbiBOKXtjb25zdCB2PWdldFZhcmlhbnRWYWx1ZShoLE4sZSxjKSxiPSJiYXNlIj09PWUmJiJzdHJpbmciPT10eXBlb2Ygdj92OnYmJnZbZV07YiYmZC5wdXNoKGIpfXJldHVybiBkfSxkPXt9O2Zvcihjb25zdCBlIGluIGMpe2NvbnN0IGg9Y1tlXTt2b2lkIDAhPT1oJiYoZFtlXT1oKX1jb25zdCBnZXRDb21wbGV0ZVByb3BzPShlLGgpPT57Y29uc3Qgdj0ib2JqZWN0Ij09dHlwZW9mIGM/LltlXT97W2VdOmNbZV0/LmluaXRpYWx9Ont9O3JldHVybnsuLi5PLC4uLmQsLi4udiwuLi5ofX0sZ2V0Q29tcG91bmRWYXJpYW50c1ZhbHVlPShlPVtdLGMpPT57Y29uc3QgZD1bXSxoPWUubGVuZ3RoO2ZvcihsZXQgdj0wO3Y8aDt2Kyspe2NvbnN0e2NsYXNzOmgsY2xhc3NOYW1lOmIsLi4ueX09ZVt2XTtsZXQgRT0hMDtjb25zdCBrPWdldENvbXBsZXRlUHJvcHMobnVsbCxjKTtmb3IoY29uc3QgZSBpbiB5KXtjb25zdCBjPXlbZV0sZD1rW2VdO2lmKEFycmF5LmlzQXJyYXkoYykpe2lmKCFjLmluY2x1ZGVzKGQpKXtFPSExO2JyZWFrfX1lbHNle2lmKCEobnVsbCE9YyYmITEhPT1jfHxudWxsIT1kJiYhMSE9PWQpKWNvbnRpbnVlO2lmKGQhPT1jKXtFPSExO2JyZWFrfX19RSYmKGgmJmQucHVzaChoKSxiJiZkLnB1c2goYikpfXJldHVybiBkfSxnZXRDb21wb3VuZFZhcmlhbnRDbGFzc05hbWVzQnlTbG90PWM9Pntjb25zdCBkPWdldENvbXBvdW5kVmFyaWFudHNWYWx1ZShMLGMpO2lmKCFBcnJheS5pc0FycmF5KGQpKXJldHVybiBkO2NvbnN0IGg9e30sdj1lO2ZvcihsZXQgZT0wO2U8ZC5sZW5ndGg7ZSsrKXtjb25zdCBjPWRbZV07aWYoInN0cmluZyI9PXR5cGVvZiBjKWguYmFzZT12KGguYmFzZSxjKShfKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgYylmb3IoY29uc3QgZSBpbiBjKWhbZV09dihoW2VdLGNbZV0pKF8pfXJldHVybiBofSxnZXRDb21wb3VuZFNsb3RDbGFzc05hbWVCeVNsb3Q9ZT0+e2lmKEUubGVuZ3RoPDEpcmV0dXJuIG51bGw7Y29uc3QgYz17fSxkPWdldENvbXBsZXRlUHJvcHMobnVsbCxlKTtmb3IobGV0IGU9MDtlPEUubGVuZ3RoO2UrKyl7Y29uc3R7c2xvdHM6aD1bXSxjbGFzczp2LGNsYXNzTmFtZTpiLC4uLnl9PUVbZV07aWYoIWlzRW1wdHlPYmplY3QoeSkpe2xldCBlPSEwO2Zvcihjb25zdCBjIGluIHkpe2NvbnN0IGg9ZFtjXSx2PXlbY107aWYodm9pZCAwPT09aHx8KEFycmF5LmlzQXJyYXkodik/IXYuaW5jbHVkZXMoaCk6diE9PWgpKXtlPSExO2JyZWFrfX1pZighZSljb250aW51ZX1mb3IobGV0IGU9MDtlPGgubGVuZ3RoO2UrKyl7Y29uc3QgZD1oW2VdO2NbZF18fChjW2RdPVtdKSxjW2RdLnB1c2goW3YsYl0pfX1yZXR1cm4gY307aWYoIWlzRW1wdHlPYmplY3Qodil8fCFSKXtjb25zdCBjPXt9O2lmKCJvYmplY3QiPT10eXBlb2YgRCYmIWlzRW1wdHlPYmplY3QoRCkpe2NvbnN0IGQ9ZTtmb3IoY29uc3QgZSBpbiBEKWNbZV09Yz0+e2NvbnN0IGg9Z2V0Q29tcG91bmRWYXJpYW50Q2xhc3NOYW1lc0J5U2xvdChjKSx2PWdldENvbXBvdW5kU2xvdENsYXNzTmFtZUJ5U2xvdChjKTtyZXR1cm4gZChEW2VdLGdldFZhcmlhbnRDbGFzc05hbWVzQnlTbG90S2V5KGUsYyksaD9oW2VdOnZvaWQgMCx2P3ZbZV06dm9pZCAwLGM/LmNsYXNzLGM/LmNsYXNzTmFtZSkoXyl9fXJldHVybiBjfXJldHVybiBlKFQsKCgpPT57aWYoIU4pcmV0dXJuIG51bGw7Y29uc3QgZT1PYmplY3Qua2V5cyhOKSxjPVtdO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtjb25zdCBoPWdldFZhcmlhbnRWYWx1ZShlW2RdLE4pO2gmJmMucHVzaChoKX1yZXR1cm4gY30pKCksZ2V0Q29tcG91bmRWYXJpYW50c1ZhbHVlKEwpLGM/LmNsYXNzLGM/LmNsYXNzTmFtZSkoXyl9O3JldHVybiBjb21wb25lbnQudmFyaWFudEtleXM9KCgpPT57aWYoTiYmIm9iamVjdCI9PXR5cGVvZiBOKXJldHVybiBPYmplY3Qua2V5cyhOKX0pKCksY29tcG9uZW50LmV4dGVuZD1oLGNvbXBvbmVudC5iYXNlPVQsY29tcG9uZW50LnNsb3RzPUQsY29tcG9uZW50LnZhcmlhbnRzPU4sY29tcG9uZW50LmRlZmF1bHRWYXJpYW50cz1PLGNvbXBvbmVudC5jb21wb3VuZFNsb3RzPUUsY29tcG9uZW50LmNvbXBvdW5kVmFyaWFudHM9TCxjb21wb25lbnR9O3JldHVybnt0djp0djIsY3JlYXRlVFY6ZT0+KGMsZCk9PnR2MihjLGQ/bWVyZ2VPYmplY3RzKGUsZCk6ZSl9fSkoKC4uLmUpPT5jPT5leGVjdXRlTWVyZ2UoZSxjKSk7Y29uc3QgbGw9RmEsY2w9c2wobGwudWk/LnR2KSx1bD1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksZGw9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxwbD1PYmplY3QuZnJlZXplKHsuLi51bCwuLi5kbH0pO09iamVjdC5mcmVlemUoey4uLnBsLGJvZHk6IiIsaGlkZGVuOiExfSk7Y29uc3QgZmw9LygtP1swLTkuXSpbMC05XStbMC05Ll0qKS9nLG1sPS9eLT9bMC05Ll0qWzAtOV0rWzAtOS5dKiQvZztmdW5jdGlvbiBjYWxjdWxhdGVTaXplKGUsYyxkKXtpZigxPT09YylyZXR1cm4gZTtpZihkPWR8fDEwMCwibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIE1hdGguY2VpbChlKmMqZCkvZDtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7Y29uc3QgaD1lLnNwbGl0KGZsKTtpZihudWxsPT09aHx8IWgubGVuZ3RoKXJldHVybiBlO2NvbnN0IHY9W107bGV0IGI9aC5zaGlmdCgpLHk9bWwudGVzdChiKTtmb3IoOzspe2lmKHkpe2NvbnN0IGU9cGFyc2VGbG9hdChiKTtpc05hTihlKT92LnB1c2goYik6di5wdXNoKE1hdGguY2VpbChlKmMqZCkvZCl9ZWxzZSB2LnB1c2goYik7aWYoYj1oLnNoaWZ0KCksdm9pZCAwPT09YilyZXR1cm4gdi5qb2luKCIiKTt5PSF5fX1jb25zdCBobD1PYmplY3QuZnJlZXplKHt3aWR0aDpudWxsLGhlaWdodDpudWxsfSksZ2w9T2JqZWN0LmZyZWV6ZSh7Li4uaGwsLi4uZGx9KTtmdW5jdGlvbiBnZXRDb21tb25DU1NSdWxlcyhlKXtjb25zdCBjPXtkaXNwbGF5OiJpbmxpbmUtYmxvY2siLHdpZHRoOiIxZW0iLGhlaWdodDoiMWVtIn0sZD1lLnZhck5hbWU7c3dpdGNoKGUucHNldWRvU2VsZWN0b3ImJihjLmNvbnRlbnQ9IicnIiksZS5tb2RlKXtjYXNlImJhY2tncm91bmQiOmQmJihjWyJiYWNrZ3JvdW5kLWltYWdlIl09InZhcigtLSIrZCsiKSIpLGNbImJhY2tncm91bmQtcmVwZWF0Il09Im5vLXJlcGVhdCIsY1siYmFja2dyb3VuZC1zaXplIl09IjEwMCUgMTAwJSI7YnJlYWs7Y2FzZSJtYXNrIjpjWyJiYWNrZ3JvdW5kLWNvbG9yIl09ImN1cnJlbnRDb2xvciIsZCYmKGNbIm1hc2staW1hZ2UiXT1jWyItd2Via2l0LW1hc2staW1hZ2UiXT0idmFyKC0tIitkKyIpIiksY1sibWFzay1yZXBlYXQiXT1jWyItd2Via2l0LW1hc2stcmVwZWF0Il09Im5vLXJlcGVhdCIsY1sibWFzay1zaXplIl09Y1siLXdlYmtpdC1tYXNrLXNpemUiXT0iMTAwJSAxMDAlIn1yZXR1cm4gY31mdW5jdGlvbiBnZW5lcmF0ZUl0ZW1DU1NSdWxlcyhlLGMpe2NvbnN0IGQ9e30saD1jLnZhck5hbWUsdj1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9ey4uLnBsLC4uLmV9LGg9ey4uLmdsLC4uLmN9LHY9e2xlZnQ6ZC5sZWZ0LHRvcDpkLnRvcCx3aWR0aDpkLndpZHRoLGhlaWdodDpkLmhlaWdodH07bGV0IGI9ZC5ib2R5O1tkLGhdLmZvckVhY2goZT0+e2NvbnN0IGM9W10sZD1lLmhGbGlwLGg9ZS52RmxpcDtsZXQgeSxFPWUucm90YXRlO3N3aXRjaChkP2g/RSs9MjooYy5wdXNoKCJ0cmFuc2xhdGUoIisodi53aWR0aCt2LmxlZnQpLnRvU3RyaW5nKCkrIiAiKygwLXYudG9wKS50b1N0cmluZygpKyIpIiksYy5wdXNoKCJzY2FsZSgtMSAxKSIpLHYudG9wPXYubGVmdD0wKTpoJiYoYy5wdXNoKCJ0cmFuc2xhdGUoIisoMC12LmxlZnQpLnRvU3RyaW5nKCkrIiAiKyh2LmhlaWdodCt2LnRvcCkudG9TdHJpbmcoKSsiKSIpLGMucHVzaCgic2NhbGUoMSAtMSkiKSx2LnRvcD12LmxlZnQ9MCksRTwwJiYoRS09NCpNYXRoLmZsb29yKEUvNCkpLEUlPTQsRSl7Y2FzZSAxOnk9di5oZWlnaHQvMit2LnRvcCxjLnVuc2hpZnQoInJvdGF0ZSg5MCAiK3kudG9TdHJpbmcoKSsiICIreS50b1N0cmluZygpKyIpIik7YnJlYWs7Y2FzZSAyOmMudW5zaGlmdCgicm90YXRlKDE4MCAiKyh2LndpZHRoLzIrdi5sZWZ0KS50b1N0cmluZygpKyIgIisodi5oZWlnaHQvMit2LnRvcCkudG9TdHJpbmcoKSsiKSIpO2JyZWFrO2Nhc2UgMzp5PXYud2lkdGgvMit2LmxlZnQsYy51bnNoaWZ0KCJyb3RhdGUoLTkwICIreS50b1N0cmluZygpKyIgIit5LnRvU3RyaW5nKCkrIikiKX1FJTI9PTEmJih2LmxlZnQhPT12LnRvcCYmKHk9di5sZWZ0LHYubGVmdD12LnRvcCx2LnRvcD15KSx2LndpZHRoIT09di5oZWlnaHQmJih5PXYud2lkdGgsdi53aWR0aD12LmhlaWdodCx2LmhlaWdodD15KSksYy5sZW5ndGgmJihiPWZ1bmN0aW9uKGUsYyxkKXtjb25zdCBoPWZ1bmN0aW9uKGUsYz0iZGVmcyIpe2xldCBkPSIiO2NvbnN0IGg9ZS5pbmRleE9mKCI8IitjKTtmb3IoO2g+PTA7KXtjb25zdCB2PWUuaW5kZXhPZigiPiIsaCksYj1lLmluZGV4T2YoIjwvIitjKTtpZigtMT09PXZ8fC0xPT09YilicmVhaztjb25zdCB5PWUuaW5kZXhPZigiPiIsYik7aWYoLTE9PT15KWJyZWFrO2QrPWUuc2xpY2UodisxLGIpLnRyaW0oKSxlPWUuc2xpY2UoMCxoKS50cmltKCkrZS5zbGljZSh5KzEpfXJldHVybntkZWZzOmQsY29udGVudDplfX0oZSk7cmV0dXJuIHY9aC5kZWZzLGI9YytoLmNvbnRlbnQrZCx2PyI8ZGVmcz4iK3YrIjwvZGVmcz4iK2I6Yjt2YXIgdixifShiLCc8ZyB0cmFuc2Zvcm09IicrYy5qb2luKCIgIikrJyI+JywiPC9nPiIpKX0pO2NvbnN0IHk9aC53aWR0aCxFPWguaGVpZ2h0LGs9di53aWR0aCxfPXYuaGVpZ2h0O2xldCBULE47bnVsbD09PXk/KE49bnVsbD09PUU/IjFlbSI6ImF1dG8iPT09RT9fOkUsVD1jYWxjdWxhdGVTaXplKE4say9fKSk6KFQ9ImF1dG8iPT09eT9rOnksTj1udWxsPT09RT9jYWxjdWxhdGVTaXplKFQsXy9rKToiYXV0byI9PT1FP186RSk7Y29uc3QgTz17fSxzZXRBdHRyPShlLGMpPT57KGU9PiJ1bnNldCI9PT1lfHwidW5kZWZpbmVkIj09PWV8fCJub25lIj09PWUpKGMpfHwoT1tlXT1jLnRvU3RyaW5nKCkpfTtzZXRBdHRyKCJ3aWR0aCIsVCksc2V0QXR0cigiaGVpZ2h0IixOKTtjb25zdCBSPVt2LmxlZnQsdi50b3AsayxfXTtyZXR1cm4gTy52aWV3Qm94PVIuam9pbigiICIpLHthdHRyaWJ1dGVzOk8sdmlld0JveDpSLGJvZHk6Yn19KGUpO2xldCBiPXYudmlld0JveDtiWzJdIT09YlszXSYmKGMuZm9yY2VTcXVhcmU/Yj1mdW5jdGlvbihlKXtjb25zdFtjLGQsaCx2XT1lO2lmKGghPT12KXtjb25zdCBlPU1hdGgubWF4KGgsdik7cmV0dXJuW2MtKGUtaCkvMixkLShlLXYpLzIsZSxlXX1yZXR1cm4gZX0oYik6ZC53aWR0aD1jYWxjdWxhdGVTaXplKCIxZW0iLGJbMl0vYlszXSkpO2NvbnN0IHk9J3VybCgiJytmdW5jdGlvbihlKXtyZXR1cm4iZGF0YTppbWFnZS9zdmcreG1sLCIrZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvIi9nLCInIikucmVwbGFjZSgvJS9nLCIlMjUiKS5yZXBsYWNlKC8jL2csIiUyMyIpLnJlcGxhY2UoLzwvZywiJTNDIikucmVwbGFjZSgvPi9nLCIlM0UiKS5yZXBsYWNlKC9ccysvZywiICIpfShlKX0oZnVuY3Rpb24oZSxjKXtsZXQgZD0tMT09PWUuaW5kZXhPZigieGxpbms6Iik/IiI6JyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayInO2Zvcihjb25zdCBlIGluIGMpZCs9IiAiK2UrJz0iJytjW2VdKyciJztyZXR1cm4nPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciJytkKyI+IitlKyI8L3N2Zz4ifSh2LmJvZHkucmVwbGFjZSgvY3VycmVudENvbG9yL2csYy5jb2xvcnx8ImJsYWNrIikse3ZpZXdCb3g6YCR7YlswXX0gJHtiWzFdfSAke2JbMl19ICR7YlszXX1gLHdpZHRoOmAke2JbMl19YCxoZWlnaHQ6YCR7YlszXX1gfSkpKyciKSc7aWYoaClkWyItLSIraF09eTtlbHNlIHN3aXRjaChjLm1vZGUpe2Nhc2UiYmFja2dyb3VuZCI6ZFsiYmFja2dyb3VuZC1pbWFnZSJdPXk7YnJlYWs7Y2FzZSJtYXNrIjpkWyJtYXNrLWltYWdlIl09ZFsiLXdlYmtpdC1tYXNrLWltYWdlIl09eX1yZXR1cm4gZH1jb25zdCB2bD17c2VsZWN0b3JTdGFydDp7Y29tcHJlc3NlZDoieyIsY29tcGFjdDoiIHsiLGV4cGFuZGVkOiIgeyJ9LHNlbGVjdG9yRW5kOntjb21wcmVzc2VkOiJ9Iixjb21wYWN0OiI7IH1cbiIsZXhwYW5kZWQ6Ijtcbn1cbiJ9LHJ1bGU6e2NvbXByZXNzZWQ6IntrZXl9OiIsY29tcGFjdDoiIHtrZXl9OiAiLGV4cGFuZGVkOiJcbiAge2tleX06ICJ9fTtmdW5jdGlvbiBnZXRJY29uQ1NTKGUsYz17fSl7Y29uc3QgZD1jLmN1c3RvbWlzZT9jLmN1c3RvbWlzZShlLmJvZHkpOmUuYm9keSxoPWMubW9kZXx8KGMuY29sb3J8fCFkLmluY2x1ZGVzKCJjdXJyZW50Q29sb3IiKT8iYmFja2dyb3VuZCI6Im1hc2siKTtsZXQgdj1jLnZhck5hbWU7dm9pZCAwPT09diYmIm1hc2siPT09aCYmKHY9InN2ZyIpO2NvbnN0IGI9ey4uLmMsbW9kZTpoLHZhck5hbWU6dn07ImJhY2tncm91bmQiPT09aCYmZGVsZXRlIGIudmFyTmFtZTtjb25zdCB5PXsuLi5jLnJ1bGVzLC4uLmdldENvbW1vbkNTU1J1bGVzKGIpLC4uLmdlbmVyYXRlSXRlbUNTU1J1bGVzKHsuLi5wbCwuLi5lLGJvZHk6ZH0sYil9O3JldHVybiBmdW5jdGlvbihlLGM9ImV4cGFuZGVkIil7Y29uc3QgZD1bXTtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7Y29uc3R7c2VsZWN0b3I6dixydWxlczpifT1lW2hdO2xldCB5PSh2IGluc3RhbmNlb2YgQXJyYXk/di5qb2luKCJjb21wcmVzc2VkIj09PWM/IiwiOiIsICIpOnYpK3ZsLnNlbGVjdG9yU3RhcnRbY10sRT0hMDtmb3IoY29uc3QgZSBpbiBiKUV8fCh5Kz0iOyIpLHkrPXZsLnJ1bGVbY10ucmVwbGFjZSgie2tleX0iLGUpK2JbZV0sRT0hMTt5Kz12bC5zZWxlY3RvckVuZFtjXSxkLnB1c2goeSl9cmV0dXJuIGQuam9pbigiY29tcHJlc3NlZCI9PT1jPyIiOiJcbiIpfShbe3NlbGVjdG9yOmMuaWNvblNlbGVjdG9yfHwiLmljb24iLHJ1bGVzOnl9XSxiLmZvcm1hdCl9YXN5bmMgZnVuY3Rpb24gbG9hZEljb24oZSxjKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBkPWdldEljb24oZSk7aWYoZClyZXR1cm4gZDtsZXQgaDtjb25zdCB2PShiPWUsbmV3IFByb21pc2UoKGUsYyk9Pntjb25zdCBkPSJzdHJpbmciPT10eXBlb2YgYj9zdHJpbmdUb0ljb24oYiwhMCk6YjtkP2xvYWRJY29ucyhbZHx8Yl0saD0+e2lmKGgubGVuZ3RoJiZkKXtjb25zdCBjPWdldEljb25EYXRhKGQpO2lmKGMpcmV0dXJuIHZvaWQgZSh7Li4uaGksLi4uY30pfWMoYil9KTpjKGIpfSkpLmNhdGNoKCgpPT5udWxsKTt2YXIgYjtyZXR1cm4gYz4wP2F3YWl0IFByb21pc2UucmFjZShbdixuZXcgUHJvbWlzZShlPT57aD1zZXRUaW1lb3V0KCgpPT57ZSgpfSxjKX0pXSkuZmluYWxseSgoKT0+Y2xlYXJUaW1lb3V0KGgpKTphd2FpdCB2LGdldEljb24oZSl9ZnVuY3Rpb24gdXNlUmVzb2x2ZWROYW1lKGUpe2NvbnN0IGM9dXNlQXBwQ29uZmlnKCkuaWNvbixkPShjLmNvbGxlY3Rpb25zfHxbXSkuc29ydCgoZSxjKT0+Yy5sZW5ndGgtZS5sZW5ndGgpO3JldHVybiBZbi5jb21wdXRlZCgoKT0+e2NvbnN0IGg9ZSgpLHY9aC5zdGFydHNXaXRoKGMuY3NzU2VsZWN0b3JQcmVmaXgpP2guc2xpY2UoYy5jc3NTZWxlY3RvclByZWZpeC5sZW5ndGgpOmgsYj1jLmFsaWFzZXM/Llt2XXx8djtpZighYi5pbmNsdWRlcygiOiIpKXtjb25zdCBlPWQuZmluZChlPT5iLnN0YXJ0c1dpdGgoZSsiLSIpKTtyZXR1cm4gZT9lKyI6IitiLnNsaWNlKGUubGVuZ3RoKzEpOmJ9cmV0dXJuIGJ9KX1mdW5jdGlvbiByZXNvbHZlQ3VzdG9taXplRm4oZSxjKXtpZighMSE9PWUpcmV0dXJuITA9PT1lfHxudWxsPT09ZT9jOmV9Y29uc3QgYmw9Ik5VWFRfSUNPTlNfU0VSVkVSX0NTUyI7Y29uc3QgeWw9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0SWNvbkNzcyIscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxjdXN0b21pemU6e3R5cGU6W0Z1bmN0aW9uLEJvb2xlYW4sbnVsbF0sZGVmYXVsdDpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgYz11c2VOdXh0QXBwKCksZD11c2VBcHBDb25maWcoKS5pY29uLGg9WW4uY29tcHV0ZWQoKCk9PmUubmFtZT9kLmNzc1NlbGVjdG9yUHJlZml4K2UubmFtZToiIiksdj1Zbi5jb21wdXRlZCgoKT0+Ii4iK2Z1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbXlx3LV0pL2csIlxcJDEiKX0oaC52YWx1ZSkpO3JldHVybiBZbi5vblNlcnZlclByZWZldGNoKGFzeW5jKCk9Pnt7Y29uc3QgYj11c2VSdW50aW1lQ29uZmlnKCkuaWNvbnx8e307aWYoIWI/LnNlcnZlcktub3duQ3NzQ2xhc3Nlcz8uaW5jbHVkZXMoaC52YWx1ZSkpe2NvbnN0IGg9YXdhaXQgbG9hZEljb24oZS5uYW1lLGQuZmV0Y2hUaW1lb3V0KS5jYXRjaCgoKT0+bnVsbCk7aWYoIWgpcmV0dXJuIG51bGw7bGV0IGI9Yy52dWVBcHAuX2NvbnRleHQucHJvdmlkZXNbYmxdO2lmKGJ8fChiPWMudnVlQXBwLl9jb250ZXh0LnByb3ZpZGVzW2JsXT1uZXcgTWFwLGMucnVuV2l0aENvbnRleHQoKCk9Pnt1c2VIZWFkKHtzdHlsZTpbKCk9PntsZXQgZT1BcnJheS5mcm9tKGIudmFsdWVzKCkpLnNvcnQoKS5qb2luKCIiKTtyZXR1cm4gZC5jc3NMYXllciYmKGU9YEBsYXllciAke2QuY3NzTGF5ZXJ9IHske2V9fWApLHtpbm5lckhUTUw6ZX19XX0se3RhZ1ByaW9yaXR5OiJsb3cifSl9KSksZS5uYW1lJiYhYi5oYXMoZS5uYW1lKSl7Y29uc3QgYz1mdW5jdGlvbihjLGg9ITApe2xldCBiPXYudmFsdWU7ZC5jc3NXaGVyZVBzZXVkbyYmKGI9YDp3aGVyZSgke2J9KWApO2NvbnN0IHk9Z2V0SWNvbkNTUyhjLHtpY29uU2VsZWN0b3I6Yixmb3JtYXQ6ImNvbXByZXNzZWQiLGN1c3RvbWlzZTpyZXNvbHZlQ3VzdG9taXplRm4oZS5jdXN0b21pemUsZC5jdXN0b21pemUpfSk7cmV0dXJuIGQuY3NzTGF5ZXImJmg/YEBsYXllciAke2QuY3NzTGF5ZXJ9IHsgJHt5fSB9YDp5fShoLCExKTtiLnNldChlLm5hbWUsYyl9cmV0dXJuIG51bGx9fX0pLCgpPT5Zbi5oKCJzcGFuIix7Y2xhc3M6WyJpY29uaWZ5IixoLnZhbHVlXX0pfX0pLHhsPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiTnV4dEljb25TdmciLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sY3VzdG9taXplOnt0eXBlOltGdW5jdGlvbixCb29sZWFuLG51bGxdLGRlZmF1bHQ6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUse3Nsb3RzOmN9KXt1c2VOdXh0QXBwKCk7Y29uc3QgZD11c2VBcHBDb25maWcoKS5pY29uLGg9dXNlUmVzb2x2ZWROYW1lKCgpPT5lLm5hbWUpLHY9ImktIitoLnZhbHVlO3JldHVybiBoLnZhbHVlJiZZbi5vblNlcnZlclByZWZldGNoKGFzeW5jKCk9Pnthd2FpdCBMYSh2LGFzeW5jKCk9PmF3YWl0IGxvYWRJY29uKGgudmFsdWUsZC5mZXRjaFRpbWVvdXQpLHtkZWVwOiExfSl9KSwoKT0+WW4uaChHaSx7aWNvbjpoLnZhbHVlLHNzcjohMCxjdXN0b21pc2U6cmVzb2x2ZUN1c3RvbWl6ZUZuKGUuY3VzdG9taXplLGQuY3VzdG9taXplKX0sYyl9fSksU2w9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0SWNvbiIscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxtb2RlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0Om51bGx9LHNpemU6e3R5cGU6W051bWJlcixTdHJpbmddLHJlcXVpcmVkOiExLGRlZmF1bHQ6bnVsbH0sY3VzdG9taXplOnt0eXBlOltGdW5jdGlvbixCb29sZWFuLG51bGxdLGRlZmF1bHQ6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUse3Nsb3RzOmN9KXtjb25zdCBkPXVzZU51eHRBcHAoKSxoPXVzZUFwcENvbmZpZygpLmljb24sdj11c2VSZXNvbHZlZE5hbWUoKCk9PmUubmFtZSksYj1Zbi5jb21wdXRlZCgoKT0+ZC52dWVBcHA/LmNvbXBvbmVudCh2LnZhbHVlKXx8KCJzdmciPT09KGUubW9kZXx8aC5tb2RlKT94bDp5bCkpLHk9WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBjPWUuc2l6ZXx8aC5zaXplO3JldHVybiBjP3tmb250U2l6ZTpOdW1iZXIuaXNOYU4oK2MpP2M6YysicHgifTpudWxsfSk7cmV0dXJuKCk9PlluLmgoYi52YWx1ZSx7Li4uaC5hdHRycyxuYW1lOnYudmFsdWUsY2xhc3M6aC5jbGFzcyxzdHlsZTp5LnZhbHVlLGN1c3RvbWl6ZTplLmN1c3RvbWl6ZX0sYyl9fSksRWw9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGRlZmF1bHQ6U2x9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksd2w9e19fbmFtZToiVUljb24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntuYW1lOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LG1vZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY3VzdG9taXplOnt0eXBlOltGdW5jdGlvbixCb29sZWFuLG51bGxdLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgYz11c2VGb3J3YXJkUHJvcHMocmVhY3RpdmVQaWNrKGUsIm1vZGUiLCJzaXplIiwiY3VzdG9taXplIikpO3JldHVybihkLGgsdixiKT0+e2NvbnN0IHk9U2w7InN0cmluZyI9PXR5cGVvZiBlLm5hbWU/aChwZSh5LFluLm1lcmdlUHJvcHMoe25hbWU6ZS5uYW1lfSxZbi51bnJlZihjKSxiKSxudWxsLHYpKTpoZShoLFluLmNyZWF0ZVZOb2RlKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGUubmFtZSksYixudWxsKSx2KX19fSxrbD13bC5zZXR1cDthc3luYyBmdW5jdGlvbiBpbWFnZU1ldGEoZSxjKXtjb25zdCBkPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUpe3tjb25zdCBjPWF3YWl0IGltcG9ydCgiLi9pbmRleC1tSF8wcHZHUC5tanMiKS50aGVuKGU9PmUuaW1hZ2VNZXRhKSxkPWMoYXdhaXQgZmV0Y2goZSkudGhlbihlPT5lLmJ1ZmZlcigpKSk7aWYoIWQpdGhyb3cgbmV3IEVycm9yKGBObyBtZXRhZGF0YSBjb3VsZCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgXGAke2V9XGAuYCk7Y29uc3R7d2lkdGg6aCxoZWlnaHQ6dn09ZDtyZXR1cm57d2lkdGg6aCxoZWlnaHQ6dixyYXRpbzpoJiZ2P2gvdjp2b2lkIDB9fX0oYykuY2F0Y2goZT0+KHt3aWR0aDowLGhlaWdodDowLHJhdGlvOjB9KSk7cmV0dXJuIGR9ZnVuY3Rpb24gY3JlYXRlTWFwcGVyKGUpe3JldHVybiBjPT52b2lkIDAhPT1jP2VbY118fGM6ZS5taXNzaW5nVmFsdWV9ZnVuY3Rpb24gcGFyc2VTaXplKGU9IiIpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5yZXBsYWNlKCJweCIsIiIpLm1hdGNoKC9eXGQrJC9nKT9OdW1iZXIucGFyc2VJbnQoZSwxMCk6dm9pZCAwfWZ1bmN0aW9uIGNyZWF0ZUltYWdlKGUpe2NvbnN0IGM9e29wdGlvbnM6ZX0sZ2V0SW1hZ2U9KGUsZD17fSk9PnJlc29sdmVJbWFnZShjLGUsZCksJGltZz0oZSxjLGQpPT5nZXRJbWFnZShlLGgoe21vZGlmaWVyczpjfSxkKSkudXJsO2Zvcihjb25zdCBjIGluIGUucHJlc2V0cykkaW1nW2NdPShkLGgsdik9PiRpbWcoZCxoLHsuLi5lLnByZXNldHNbY10sLi4udn0pO3JldHVybiAkaW1nLm9wdGlvbnM9ZSwkaW1nLmdldEltYWdlPWdldEltYWdlLCRpbWcuZ2V0TWV0YT0oZSxkKT0+YXN5bmMgZnVuY3Rpb24oZSxjLGQpe2NvbnN0IGg9cmVzb2x2ZUltYWdlKGUsYyx7Li4uZH0pO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBoLmdldE1ldGE/YXdhaXQgaC5nZXRNZXRhKCk6YXdhaXQgaW1hZ2VNZXRhKDAsaC51cmwpfShjLGUsZCksJGltZy5nZXRTaXplcz0oZSxkKT0+ZnVuY3Rpb24oZSxjLGQpe2NvbnN0IHY9Z2V0UHJlc2V0KGUsZC5wcmVzZXQpLGI9aChkLHYpLHk9cGFyc2VTaXplKGIubW9kaWZpZXJzPy53aWR0aCksRT1wYXJzZVNpemUoYi5tb2RpZmllcnM/LmhlaWdodCksaz1iLnNpemVzP2Z1bmN0aW9uKGUpe2NvbnN0IGM9e307aWYoInN0cmluZyI9PXR5cGVvZiBlKWZvcihjb25zdCBkIG9mIGUuc3BsaXQoL1tccyxdKy8pLmZpbHRlcihlPT5lKSl7Y29uc3QgZT1kLnNwbGl0KCI6Iik7MiE9PWUubGVuZ3RoP2NbIjFweCJdPWVbMF0udHJpbSgpOmNbZVswXS50cmltKCldPWVbMV0udHJpbSgpfWVsc2UgT2JqZWN0LmFzc2lnbihjLGUpO3JldHVybiBjfShiLnNpemVzKTp7fSxfPWIuZGVuc2l0aWVzPy50cmltKCksVD1fP2Z1bmN0aW9uKGU9IiIpe2lmKHZvaWQgMD09PWV8fCFlLmxlbmd0aClyZXR1cm5bXTtjb25zdCBjPW5ldyBTZXQ7Zm9yKGNvbnN0IGQgb2YgZS5zcGxpdCgiICIpKXtjb25zdCBlPU51bWJlci5wYXJzZUludChkLnJlcGxhY2UoIngiLCIiKSk7ZSYmYy5hZGQoZSl9cmV0dXJuIEFycmF5LmZyb20oYyl9KF8pOmUub3B0aW9ucy5kZW5zaXRpZXM7IWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImBkZW5zaXRpZXNgIG11c3Qgbm90IGJlIGVtcHR5LCBjb25maWd1cmUgdG8gYDFgIHRvIHJlbmRlciByZWd1bGFyIHNpemUgb25seSAoRFBSIDEuMCkiKX0oVCk7Y29uc3QgTj15JiZFP0UveTowLE89W10sUj1bXTtpZihPYmplY3Qua2V5cyhrKS5sZW5ndGg+PTEpe2Zvcihjb25zdCBoIGluIGspe2NvbnN0IHY9Z2V0U2l6ZXNWYXJpYW50KGgsU3RyaW5nKGtbaF0pLEUsTixlKTtpZih2b2lkIDAhPT12KXtPLnB1c2goe3NpemU6di5zaXplLHNjcmVlbk1heFdpZHRoOnYuc2NyZWVuTWF4V2lkdGgsbWVkaWE6YChtYXgtd2lkdGg6ICR7di5zY3JlZW5NYXhXaWR0aH1weClgfSk7Zm9yKGNvbnN0IGggb2YgVClSLnB1c2goe3dpZHRoOnYuX2NXaWR0aCpoLHNyYzpnZXRWYXJpYW50U3JjKGUsYyxkLHYsaCl9KX19IWZ1bmN0aW9uKGUpe2Uuc29ydCgoZSxjKT0+ZS5zY3JlZW5NYXhXaWR0aC1jLnNjcmVlbk1heFdpZHRoKTtsZXQgYz1udWxsO2ZvcihsZXQgZD1lLmxlbmd0aC0xO2Q+PTA7ZC0tKXtjb25zdCBoPWVbZF07aC5tZWRpYT09PWMmJmUuc3BsaWNlKGQsMSksYz1oLm1lZGlhfWZvcihsZXQgYz0wO2M8ZS5sZW5ndGg7YysrKWVbY10ubWVkaWE9ZVtjKzFdPy5tZWRpYXx8IiJ9KE8pfWVsc2UgZm9yKGNvbnN0IGggb2YgVCl7Y29uc3Qgdj1PYmplY3Qua2V5cyhrKVswXTtsZXQgYj12P2dldFNpemVzVmFyaWFudCh2LFN0cmluZyhrW3ZdKSxFLE4sZSk6dm9pZCAwO3ZvaWQgMD09PWImJihiPXtzaXplOiIiLHNjcmVlbk1heFdpZHRoOjAsX2NXaWR0aDpkLm1vZGlmaWVycz8ud2lkdGgsX2NIZWlnaHQ6ZC5tb2RpZmllcnM/LmhlaWdodH0pLFIucHVzaCh7d2lkdGg6aCxzcmM6Z2V0VmFyaWFudFNyYyhlLGMsZCxiLGgpfSl9IWZ1bmN0aW9uKGUpe2Uuc29ydCgoZSxjKT0+ZS53aWR0aC1jLndpZHRoKTtsZXQgYz1udWxsO2ZvcihsZXQgZD1lLmxlbmd0aC0xO2Q+PTA7ZC0tKXtjb25zdCBoPWVbZF07aC53aWR0aD09PWMmJmUuc3BsaWNlKGQsMSksYz1oLndpZHRofX0oUik7Y29uc3QgTT1SW1IubGVuZ3RoLTFdLEQ9Ty5sZW5ndGg/Ty5tYXAoZT0+YCR7ZS5tZWRpYT9lLm1lZGlhKyIgIjoiIn0ke2Uuc2l6ZX1gKS5qb2luKCIsICIpOnZvaWQgMCxMPUQ/InciOiJ4IiwkPVIubWFwKGU9PmAke2Uuc3JjfSAke2Uud2lkdGh9JHtMfWApLmpvaW4oIiwgIik7cmV0dXJue3NpemVzOkQsc3Jjc2V0OiQsc3JjOk0/LnNyY319KGMsZSxkKSxjLiRpbWc9JGltZywkaW1nfWZ1bmN0aW9uIHJlc29sdmVJbWFnZShjLHYsYil7aWYodiYmInN0cmluZyIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoYGlucHV0IG11c3QgYmUgYSBzdHJpbmcgKHJlY2VpdmVkICR7dHlwZW9mIHZ9OiAke0pTT04uc3RyaW5naWZ5KHYpfSlgKTtpZighdnx8di5zdGFydHNXaXRoKCJkYXRhOiIpKXJldHVybnt1cmw6dn07Y29uc3R7c2V0dXA6eSxkZWZhdWx0czpFfT1mdW5jdGlvbihlLGMpe2NvbnN0IGQ9ZS5vcHRpb25zLnByb3ZpZGVyc1tjXTtpZighZCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJvdmlkZXI6ICIrYyk7cmV0dXJuIGR9KGMsYi5wcm92aWRlcnx8Yy5vcHRpb25zLnByb3ZpZGVyKSxfPXkoKSxUPWdldFByZXNldChjLGIucHJlc2V0KTtpZih2PWUodik/djokKHYpLCFfLnN1cHBvcnRzQWxpYXMpZm9yKGNvbnN0IGUgaW4gYy5vcHRpb25zLmFsaWFzKWlmKHYuc3RhcnRzV2l0aChlKSl7Y29uc3QgaD1jLm9wdGlvbnMuYWxpYXNbZV07aCYmKHY9ZChoLHYuc2xpY2UoZS5sZW5ndGgpKSl9aWYoXy52YWxpZGF0ZURvbWFpbnMmJmUodikpe2NvbnN0IGU9ayh2KS5ob3N0O2lmKCFjLm9wdGlvbnMuZG9tYWlucy5maW5kKGM9PmM9PT1lKSlyZXR1cm57dXJsOnZ9fWNvbnN0IE49aChiLFQsRSksTz17Li4uTixtb2RpZmllcnM6ey4uLk4ubW9kaWZpZXJzLHdpZHRoOk4ubW9kaWZpZXJzPy53aWR0aD9wYXJzZVNpemUoTi5tb2RpZmllcnMud2lkdGgpOnZvaWQgMCxoZWlnaHQ6Ti5tb2RpZmllcnM/LmhlaWdodD9wYXJzZVNpemUoTi5tb2RpZmllcnMuaGVpZ2h0KTp2b2lkIDB9fSxSPV8uZ2V0SW1hZ2UodixPLGMpO3JldHVybiBSLmZvcm1hdHx8PU8ubW9kaWZpZXJzLmZvcm1hdHx8IiIsUn1mdW5jdGlvbiBnZXRQcmVzZXQoZSxjKXtpZighYylyZXR1cm57fTtpZighZS5vcHRpb25zLnByZXNldHNbY10pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByZXNldDogIitjKTtyZXR1cm4gZS5vcHRpb25zLnByZXNldHNbY119ZnVuY3Rpb24gZ2V0U2l6ZXNWYXJpYW50KGUsYyxkLGgsdil7Y29uc3QgYj12Lm9wdGlvbnMuc2NyZWVucyYmdi5vcHRpb25zLnNjcmVlbnNbZV18fE51bWJlci5wYXJzZUludChlKSx5PWMuZW5kc1dpdGgoInZ3Iik7aWYoIXkmJi9eXGQrJC8udGVzdChjKSYmKGMrPSJweCIpLCF5JiYhYy5lbmRzV2l0aCgicHgiKSlyZXR1cm47bGV0IEU9TnVtYmVyLnBhcnNlSW50KGMpO2lmKCFifHwhRSlyZXR1cm47eSYmKEU9TWF0aC5yb3VuZChFLzEwMCpiKSk7cmV0dXJue3NpemU6YyxzY3JlZW5NYXhXaWR0aDpiLF9jV2lkdGg6RSxfY0hlaWdodDpoP01hdGgucm91bmQoRSpoKTpkfX1mdW5jdGlvbiBnZXRWYXJpYW50U3JjKGUsYyxkLGgsdil7cmV0dXJuIGUuJGltZyhjLHsuLi5kLm1vZGlmaWVycyx3aWR0aDpoLl9jV2lkdGg/aC5fY1dpZHRoKnY6dm9pZCAwLGhlaWdodDpoLl9jSGVpZ2h0P2guX2NIZWlnaHQqdjp2b2lkIDB9LGQpfXdsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0ljb24udnVlIiksa2w/a2woZSxjKTp2b2lkIDB9O2NvbnN0IENsPWZ1bmN0aW9uKGU9e30pe2NvbnN0IGM9ZS5mb3JtYXR0ZXIsZD1lLmtleU1hcCYmImZ1bmN0aW9uIiE9dHlwZW9mIGUua2V5TWFwP2NyZWF0ZU1hcHBlcihlLmtleU1hcCk6ZS5rZXlNYXAsaD17fTtmb3IoY29uc3QgYyBpbiBlLnZhbHVlTWFwKXtjb25zdCBkPWMsdj1lLnZhbHVlTWFwW2RdO2hbZF09Im9iamVjdCI9PXR5cGVvZiB2P2NyZWF0ZU1hcHBlcih2KTp2fXJldHVybiB2PT57Y29uc3QgYj1bXTtmb3IoY29uc3QgZSBpbiB2KXtjb25zdCBjPWU7aWYodm9pZCAwPT09dltjXSljb250aW51ZTtjb25zdCB5PSJmdW5jdGlvbiI9PXR5cGVvZiBoW2NdP2hbY10odltjXSk6dltjXTtiLnB1c2goW2Q/ZChjKTpjLHldKX1yZXR1cm4gYz9iLm1hcChlPT5jKC4uLmUpKS5qb2luKGUuam9pbldpdGg/PyImIik6bmV3IFVSTFNlYXJjaFBhcmFtcyhiKS50b1N0cmluZygpfX0oe2tleU1hcDp7d2lkdGg6InciLGhlaWdodDoiaCIsZHByOiJkcHIiLGZpdDoiZml0IixncmF2aXR5OiJnIixxdWFsaXR5OiJxIixmb3JtYXQ6ImYiLHNoYXJwZW46InNoYXJwZW4ifSx2YWx1ZU1hcDp7Zml0Ontjb3ZlcjoiY292ZXIiLGNvbnRhaW46ImNvbnRhaW4iLGZpbGw6InNjYWxlLWRvd24iLG91dHNpZGU6ImNyb3AiLGluc2lkZToicGFkIn0sZ3Jhdml0eTp7YXV0bzoiYXV0byIsc2lkZToic2lkZSJ9fSxqb2luV2l0aDoiLCIsZm9ybWF0dGVyOihlLGMpPT5LKGUsYyl9KSxfbD17fSxUbD17c2NyZWVuczp7c206NjQwLG1kOjc2OCxsZzoxMDI0LHhsOjEyODAsIjJ4bCI6MTUzNn0scHJlc2V0czp7fSxwcm92aWRlcjoiY2xvdWRmbGFyZSIsZG9tYWluczpbXSxhbGlhczp7fSxkZW5zaXRpZXM6WzEsMl0sZm9ybWF0Olsid2VicCJdLHByb3ZpZGVyOiJjbG91ZGZsYXJlIixwcm92aWRlcnM6e2Nsb3VkZmxhcmU6e3NldHVwOmZ1bmN0aW9uKGUpe2xldCBjO3JldHVybigpPT5jfHwoYz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKCk6ZSxjKX0oe2dldEltYWdlOihlLHttb2RpZmllcnM6YyxiYXNlVVJMOmg9Ii8ifSk9Pntjb25zdCB2PXsuLi5fbCwuLi5jfSxiPUNsKHYpO3JldHVybnt1cmw6Yj9kKGgsImNkbi1jZ2kvaW1hZ2UiLGIsZSk6ZX19fSksZGVmYXVsdHM6e319fX0sdXNlSW1hZ2U9ZT0+e2NvbnN0IGM9dXNlUnVudGltZUNvbmZpZygpLGQ9dXNlTnV4dEFwcCgpO3JldHVybiBkLiRpbWd8fGQuX2ltZ3x8KGQuX2ltZz1jcmVhdGVJbWFnZSh7Li4uVGwsZXZlbnQ6ZC5zc3JDb250ZXh0Py5ldmVudCxudXh0OntiYXNlVVJMOmMuYXBwLmJhc2VVUkx9LHJ1bnRpbWVDb25maWc6Y30pKX0sTmw9e19fbmFtZToiTnV4dEltZyIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2N1c3RvbTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpbQm9vbGVhbixTdHJpbmcsTnVtYmVyLEFycmF5XSxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXJDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNyYzp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGZvcm1hdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHF1YWxpdHk6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxiYWNrZ3JvdW5kOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZml0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kaWZpZXJzOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scHJlc2V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJvdmlkZXI6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxkZW5zaXRpZXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVsb2FkOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHdpZHRoOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0saGVpZ2h0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY3Jvc3NvcmlnaW46e3R5cGU6W1N0cmluZyxCb29sZWFuXSxyZXF1aXJlZDohMX0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJsb2FkIiwiZXJyb3IiXSxzZXR1cChlLHtleHBvc2U6YyxlbWl0OmR9KXtjb25zdCBoPWUsdj11c2VJbWFnZSgpLHtwcm92aWRlck9wdGlvbnM6Yixub3JtYWxpemVkQXR0cnM6eSxpbWFnZU1vZGlmaWVyczpFfT0oZT0+e2NvbnN0IGM9dXNlSW1hZ2UoKTtyZXR1cm57cHJvdmlkZXJPcHRpb25zOlluLmNvbXB1dGVkKCgpPT4oe3Byb3ZpZGVyOmUucHJvdmlkZXIscHJlc2V0OmUucHJlc2V0fSkpLG5vcm1hbGl6ZWRBdHRyczpZbi5jb21wdXRlZCgoKT0+KHt3aWR0aDpwYXJzZVNpemUoZS53aWR0aCksaGVpZ2h0OnBhcnNlU2l6ZShlLmhlaWdodCksY3Jvc3NvcmlnaW46ITA9PT1lLmNyb3Nzb3JpZ2luPyJhbm9ueW1vdXMiOmUuY3Jvc3NvcmlnaW58fHZvaWQgMCxub25jZTplLm5vbmNlfSkpLGltYWdlTW9kaWZpZXJzOlluLmNvbXB1dGVkKCgpPT4oey4uLmUubW9kaWZpZXJzLHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0LGZvcm1hdDplLmZvcm1hdCxxdWFsaXR5OmUucXVhbGl0eXx8Yy5vcHRpb25zLnF1YWxpdHksYmFja2dyb3VuZDplLmJhY2tncm91bmQsZml0OmUuZml0fSkpfX0pKGgpLGs9WW4uY29tcHV0ZWQoKCk9PnYuZ2V0U2l6ZXMoaC5zcmMsey4uLmIudmFsdWUsc2l6ZXM6aC5zaXplcyxkZW5zaXRpZXM6aC5kZW5zaXRpZXMsbW9kaWZpZXJzOkUudmFsdWV9KSksXz1Zbi5yZWYoITEpLFQ9WW4udXNlQXR0cnMoKSxOPVluLmNvbXB1dGVkKCgpPT4oey4uLnkudmFsdWUsImRhdGEtbnV4dC1pbWciOiIiLC4uLiFoLnBsYWNlaG9sZGVyfHxfLnZhbHVlP3tzaXplczprLnZhbHVlLnNpemVzLHNyY3NldDprLnZhbHVlLnNyY3NldH06e30sb25lcnJvcjoidGhpcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtZXJyb3InLCAxKSIsLi4uVH0pKSxPPVluLmNvbXB1dGVkKCgpPT57aWYoXy52YWx1ZSlyZXR1cm4hMTtjb25zdCBlPSIiPT09aC5wbGFjZWhvbGRlcj9bMTAsMTBdOmgucGxhY2Vob2xkZXI7aWYoIWUpcmV0dXJuITE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2NvbnN0W2M9MTAsZD1jLHk9NTAsaz0zXT1BcnJheS5pc0FycmF5KGUpP2U6Im51bWJlciI9PXR5cGVvZiBlP1tlXTpbXTtyZXR1cm4gdihoLnNyYyx7Li4uRS52YWx1ZSx3aWR0aDpjLGhlaWdodDpkLHF1YWxpdHk6eSxibHVyOmt9LGIudmFsdWUpfSksUj1Zbi5jb21wdXRlZCgoKT0+aC5zaXplcz9rLnZhbHVlLnNyYzp2KGguc3JjLEUudmFsdWUsYi52YWx1ZSkpLE09WW4uY29tcHV0ZWQoKCk9Pk8udmFsdWV8fFIudmFsdWUpO2lmKGgucHJlbG9hZCl7Y29uc3QgZT1rLnZhbHVlLnNyY3NldC5pbmNsdWRlcygieCwgIiksYz1lfHwhIWsudmFsdWUuc2l6ZXM7dXNlSGVhZCh7bGluazpbe3JlbDoicHJlbG9hZCIsYXM6ImltYWdlIixub25jZTpoLm5vbmNlLGNyb3Nzb3JpZ2luOnkudmFsdWUuY3Jvc3NvcmlnaW4saHJlZjpjP2sudmFsdWUuc3JjOk0udmFsdWUsLi4uay52YWx1ZS5zaXplcyYme2ltYWdlc2l6ZXM6ay52YWx1ZS5zaXplc30sLi4uZSYme2ltYWdlc3Jjc2V0OmsudmFsdWUuc3Jjc2V0fSwuLi4iYm9vbGVhbiIhPXR5cGVvZiBoLnByZWxvYWQmJmgucHJlbG9hZC5mZXRjaFByaW9yaXR5P3tmZXRjaHByaW9yaXR5OmgucHJlbG9hZC5mZXRjaFByaW9yaXR5fTp7fX1dfSl9dXNlTnV4dEFwcCgpLmlzSHlkcmF0aW5nO2NvbnN0IEQ9WW4udXNlVGVtcGxhdGVSZWYoImltZ0VsIik7cmV0dXJuIGMoe2ltZ0VsOkR9KSwoYyxkLGgsdik9PntlLmN1c3RvbT9mZShjLiRzbG90cywiZGVmYXVsdCIse2ltZ0F0dHJzOk4udmFsdWUsaXNMb2FkZWQ6Xy52YWx1ZSxzcmM6TS52YWx1ZX0sbnVsbCxkLGgpOmQoYDxpbWcke2JlKFluLm1lcmdlUHJvcHMoe3JlZl9rZXk6ImltZ0VsIixyZWY6RCxjbGFzczpPLnZhbHVlP2UucGxhY2Vob2xkZXJDbGFzczp2b2lkIDB9LE4udmFsdWUse3NyYzpNLnZhbHVlfSx2KSl9PmApfX19LEFsPU5sLnNldHVwO05sLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQraW1hZ2VAMi4wLjBfQHVwc3Rhc2grcmVkaXNAMS4zNy4wX2RiMEAwLjMuNF9AbGlic3FsK2NsaWVudEAwLjE3LjNfZHJpenpsZS1vcm1AMC40XzdhMjZiYTk5NmZkMTI5MTRiNGY5NmJmMmQzMGVmZDcxL25vZGVfbW9kdWxlcy9AbnV4dC9pbWFnZS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9OdXh0SW1nLnZ1ZSIpLEFsP0FsKGUsYyk6dm9pZCAwfTtjb25zdCBPbD1PYmplY3QuYXNzaWduKE5sLHtfX25hbWU6Ik51eHRJbWcifSksSWw9U3ltYm9sKCJudXh0LXVpLmF2YXRhci1ncm91cCIpO2Z1bmN0aW9uIHVzZUF2YXRhckdyb3VwKGUpe2NvbnN0IGM9WW4uaW5qZWN0KElsLHZvaWQgMCksZD1Zbi5jb21wdXRlZCgoKT0+ZS5zaXplPz9jPy52YWx1ZS5zaXplKTtyZXR1cm4gWW4ucHJvdmlkZShJbCxZbi5jb21wdXRlZCgoKT0+KHtzaXplOmQudmFsdWV9KSkpLHtzaXplOmR9fWNvbnN0IFJsPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wIixiYXNlOiJyb3VuZGVkLWZ1bGwgcmluZyByaW5nLWJnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtaW52ZXJ0ZWQgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6ImJnLXByaW1hcnkiLHNlY29uZGFyeToiYmctc2Vjb25kYXJ5IixzdWNjZXNzOiJiZy1zdWNjZXNzIixpbmZvOiJiZy1pbmZvIix3YXJuaW5nOiJiZy13YXJuaW5nIixlcnJvcjoiYmctZXJyb3IiLG5ldXRyYWw6ImJnLWludmVydGVkIn0sc2l6ZTp7IjN4cyI6ImgtWzRweF0gbWluLXctWzRweF0gdGV4dC1bNHB4XSIsIjJ4cyI6ImgtWzVweF0gbWluLXctWzVweF0gdGV4dC1bNXB4XSIseHM6ImgtWzZweF0gbWluLXctWzZweF0gdGV4dC1bNnB4XSIsc206ImgtWzdweF0gbWluLXctWzdweF0gdGV4dC1bN3B4XSIsbWQ6ImgtWzhweF0gbWluLXctWzhweF0gdGV4dC1bOHB4XSIsbGc6ImgtWzlweF0gbWluLXctWzlweF0gdGV4dC1bOXB4XSIseGw6ImgtWzEwcHhdIG1pbi13LVsxMHB4XSB0ZXh0LVsxMHB4XSIsIjJ4bCI6ImgtWzExcHhdIG1pbi13LVsxMXB4XSB0ZXh0LVsxMXB4XSIsIjN4bCI6ImgtWzEycHhdIG1pbi13LVsxMnB4XSB0ZXh0LVsxMnB4XSJ9LHBvc2l0aW9uOnsidG9wLXJpZ2h0IjoidG9wLTAgcmlnaHQtMCIsImJvdHRvbS1yaWdodCI6ImJvdHRvbS0wIHJpZ2h0LTAiLCJ0b3AtbGVmdCI6InRvcC0wIGxlZnQtMCIsImJvdHRvbS1sZWZ0IjoiYm90dG9tLTAgbGVmdC0wIn0saW5zZXQ6e2ZhbHNlOiIifSxzdGFuZGFsb25lOntmYWxzZToiYWJzb2x1dGUifX0sY29tcG91bmRWYXJpYW50czpbe3Bvc2l0aW9uOiJ0b3AtcmlnaHQiLGluc2V0OiExLGNsYXNzOiItdHJhbnNsYXRlLXktMS8yIHRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1yaWdodCIsaW5zZXQ6ITEsY2xhc3M6InRyYW5zbGF0ZS15LTEvMiB0cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn0se3Bvc2l0aW9uOiJ0b3AtbGVmdCIsaW5zZXQ6ITEsY2xhc3M6Ii10cmFuc2xhdGUteS0xLzIgLXRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1sZWZ0IixpbnNldDohMSxjbGFzczoidHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iixwb3NpdGlvbjoidG9wLXJpZ2h0In19LFBsPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNoaXAiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOlluLm1lcmdlTW9kZWxzKHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0ZXh0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwb3NpdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHN0YW5kYWxvbmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSx7c2hvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHNob3dNb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpzaG93Il0sc2V0dXAoZSl7Y29uc3QgYz1lLGQ9WW4udXNlTW9kZWwoZSwic2hvdyIse3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSkse3NpemU6aH09dXNlQXZhdGFyR3JvdXAoYyksdj11c2VBcHBDb25maWcoKSxiPXVzZUNvbXBvbmVudFVJKCJjaGlwIixjKSx5PVluLmNvbXB1dGVkKCgpPT5jbCh7ZXh0ZW5kOmNsKFJsKSwuLi52LnVpPy5jaGlwfHx7fX0pKHtjb2xvcjpjLmNvbG9yLHNpemU6aC52YWx1ZSxwb3NpdGlvbjpjLnBvc2l0aW9uLGluc2V0OmMuaW5zZXQsc3RhbmRhbG9uZTpjLnN0YW5kYWxvbmV9KSk7cmV0dXJuKGgsdixFLGspPT57dihwZShZbi51bnJlZihncyksWW4ubWVyZ2VQcm9wcyh7YXM6ZS5hcywiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6eS52YWx1ZS5yb290KHtjbGFzczpbWW4udW5yZWYoYik/LnJvb3QsYy5jbGFzc119KX0saykse2RlZmF1bHQ6WW4ud2l0aEN0eCgoYyx2LEUsayk9PntpZighdilyZXR1cm5bWW4uY3JlYXRlVk5vZGUoWW4udW5yZWYobXMpLGguJGF0dHJzLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGguJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSxkLnZhbHVlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jaygic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczp5LnZhbHVlLmJhc2Uoe2NsYXNzOlluLnVucmVmKGIpPy5iYXNlfSl9LFtZbi5yZW5kZXJTbG90KGguJHNsb3RzLCJjb250ZW50Iix7fSwoKT0+W1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS50ZXh0KSwxKV0pXSwyKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07dihwZShZbi51bnJlZihtcyksaC4kYXR0cnMse2RlZmF1bHQ6WW4ud2l0aEN0eCgoZSxjLGQsdik9PntpZighYylyZXR1cm5bWW4ucmVuZGVyU2xvdChoLiRzbG90cywiZGVmYXVsdCIpXTtmZShoLiRzbG90cywiZGVmYXVsdCIse30sbnVsbCxjLGQsdil9KSxfOjN9LEUsaykpLGQudmFsdWU/KHYoYDxzcGFuIGRhdGEtc2xvdD0iYmFzZSIgY2xhc3M9IiR7bWUoeS52YWx1ZS5iYXNlKHtjbGFzczpZbi51bnJlZihiKT8uYmFzZX0pKX0iJHtrfT5gKSxmZShoLiRzbG90cywiY29udGVudCIse30sKCk9Pnt2KGAke3llKGUudGV4dCl9YCl9LHYsRSxrKSx2KCI8L3NwYW4+IikpOnYoIlx4M2MhLS0tLVx4M2UiKX0pLF86M30sRSkpfX19KSxNbD1QbC5zZXR1cDtQbC5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9DaGlwLnZ1ZSIpLE1sP01sKGUsYyk6dm9pZCAwfTtjb25zdCBEbD17c2xvdHM6e3Jvb3Q6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzaHJpbmstMCBzZWxlY3Qtbm9uZSByb3VuZGVkLWZ1bGwgYWxpZ24tbWlkZGxlIGJnLWVsZXZhdGVkIixpbWFnZToiaC1mdWxsIHctZnVsbCByb3VuZGVkLVtpbmhlcml0XSBvYmplY3QtY292ZXIiLGZhbGxiYWNrOiJmb250LW1lZGl1bSB0ZXh0LW11dGVkIHRydW5jYXRlIixpY29uOiJ0ZXh0LW11dGVkIHNocmluay0wIn0sdmFyaWFudHM6e3NpemU6eyIzeHMiOntyb290OiJzaXplLTQgdGV4dC1bOHB4XSJ9LCIyeHMiOntyb290OiJzaXplLTUgdGV4dC1bMTBweF0ifSx4czp7cm9vdDoic2l6ZS02IHRleHQteHMifSxzbTp7cm9vdDoic2l6ZS03IHRleHQtc20ifSxtZDp7cm9vdDoic2l6ZS04IHRleHQtYmFzZSJ9LGxnOntyb290OiJzaXplLTkgdGV4dC1sZyJ9LHhsOntyb290OiJzaXplLTEwIHRleHQteGwifSwiMnhsIjp7cm9vdDoic2l6ZS0xMSB0ZXh0LVsyMnB4XSJ9LCIzeGwiOntyb290OiJzaXplLTEyIHRleHQtMnhsIn19fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIn19LEJsPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUF2YXRhciIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNyYzp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFsdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGV4dDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hpcDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzdHlsZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBjPWUsZD1Zbi5jb21wdXRlZCgoKT0+InN0cmluZyI9PXR5cGVvZiBjLmFzfHwiZnVuY3Rpb24iPT10eXBlb2YgYy5hcz8ucmVuZGVyP3tyb290OmMuYXN9OmgoYy5hcyx7cm9vdDoic3BhbiJ9KSksdj1Zbi5jb21wdXRlZCgoKT0+Yy50ZXh0fHwoYy5hbHR8fCIiKS5zcGxpdCgiICIpLm1hcChlPT5lLmNoYXJBdCgwKSkuam9pbigiIikuc3Vic3RyaW5nKDAsMikpLGI9dXNlQXBwQ29uZmlnKCkseT11c2VDb21wb25lbnRVSSgiYXZhdGFyIixjKSx7c2l6ZTpFfT11c2VBdmF0YXJHcm91cChjKSxrPVluLmNvbXB1dGVkKCgpPT5jbCh7ZXh0ZW5kOmNsKERsKSwuLi5iLnVpPy5hdmF0YXJ8fHt9fSkoe3NpemU6RS52YWx1ZX0pKSxfPVluLmNvbXB1dGVkKCgpPT5rLnZhbHVlLnJvb3Qoe2NsYXNzOlt5LnZhbHVlPy5yb290LGMuY2xhc3NdfSkpLFQ9WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPV8udmFsdWUuc3BsaXQoIiAiKS5maW5kKGU9Pi9ec2l6ZS1cZCskLy50ZXN0KGUpKTtpZihlKXtjb25zdCBjPU51bWJlci5wYXJzZUZsb2F0KGUuc3BsaXQoIi0iKVsxXT8/IiIpO2lmKCFOdW1iZXIuaXNOYU4oYykpcmV0dXJuIDQqY31yZXR1cm4gbnVsbH0pLE49WW4ucmVmKCExKTtmdW5jdGlvbiBvbkVycm9yKCl7Ti52YWx1ZT0hMH1yZXR1cm4gWW4ud2F0Y2goKCk9PmMuc3JjLCgpPT57Ti52YWx1ZSYmKE4udmFsdWU9ITEpfSksKGgsYixFLE8pPT57aGUoYixZbi5jcmVhdGVWTm9kZShZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChjLmNoaXA/UGw6WW4udW5yZWYoZ3MpKSxZbi5tZXJnZVByb3BzKHthczpkLnZhbHVlLnJvb3R9LGMuY2hpcD8ib2JqZWN0Ij09dHlwZW9mIGMuY2hpcD97aW5zZXQ6ITAsLi4uYy5jaGlwfTp7aW5zZXQ6ITB9Ont9LHsiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6Xy52YWx1ZSxzdHlsZTpjLnN0eWxlfSxPKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChjLGIsRSxfKT0+e2lmKCFiKXJldHVybltlLnNyYyYmIU4udmFsdWU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGQudmFsdWUuaW1nfHxZbi51bnJlZihPbCkpLFluLm1lcmdlUHJvcHMoe2tleTowLHNyYzplLnNyYyxhbHQ6ZS5hbHQsd2lkdGg6VC52YWx1ZSxoZWlnaHQ6VC52YWx1ZX0saC4kYXR0cnMseyJkYXRhLXNsb3QiOiJpbWFnZSIsY2xhc3M6ay52YWx1ZS5pbWFnZSh7Y2xhc3M6WW4udW5yZWYoeSk/LmltYWdlfSksb25FcnJvcjpvbkVycm9yfSksbnVsbCwxNixbInNyYyIsImFsdCIsIndpZHRoIiwiaGVpZ2h0IiwiY2xhc3MiXSkpOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihtcyksWW4ubWVyZ2VQcm9wcyh7a2V5OjF9LGguJGF0dHJzKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChoLiRzbG90cywiZGVmYXVsdCIse30sKCk9PltlLmljb24/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKHdsLHtrZXk6MCxuYW1lOmUuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6ay52YWx1ZS5pY29uKHtjbGFzczpZbi51bnJlZih5KT8uaWNvbn0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jaygic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJmYWxsYmFjayIsY2xhc3M6ay52YWx1ZS5mYWxsYmFjayh7Y2xhc3M6WW4udW5yZWYoeSk/LmZhbGxiYWNrfSl9LFluLnRvRGlzcGxheVN0cmluZyh2LnZhbHVlfHwiwqAiKSwzKSldKV0pLF86M30sMTYpKV07ZS5zcmMmJiFOLnZhbHVlP2hlKGIsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZC52YWx1ZS5pbWd8fFluLnVucmVmKE9sKSksWW4ubWVyZ2VQcm9wcyh7c3JjOmUuc3JjLGFsdDplLmFsdCx3aWR0aDpULnZhbHVlLGhlaWdodDpULnZhbHVlfSxoLiRhdHRycyx7ImRhdGEtc2xvdCI6ImltYWdlIixjbGFzczprLnZhbHVlLmltYWdlKHtjbGFzczpZbi51bnJlZih5KT8uaW1hZ2V9KSxvbkVycm9yOm9uRXJyb3J9KSxudWxsKSxFLF8pOmIocGUoWW4udW5yZWYobXMpLGguJGF0dHJzLHtkZWZhdWx0OlluLndpdGhDdHgoKGMsZCxiLEUpPT57aWYoIWQpcmV0dXJuW1luLnJlbmRlclNsb3QoaC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bZS5pY29uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayh3bCx7a2V5OjAsbmFtZTplLmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOmsudmFsdWUuaWNvbih7Y2xhc3M6WW4udW5yZWYoeSk/Lmljb259KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTooWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiZmFsbGJhY2siLGNsYXNzOmsudmFsdWUuZmFsbGJhY2soe2NsYXNzOlluLnVucmVmKHkpPy5mYWxsYmFja30pfSxZbi50b0Rpc3BsYXlTdHJpbmcodi52YWx1ZXx8IsKgIiksMykpXSldO2ZlKGguJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+e2UuaWNvbj9kKHBlKHdsLHtuYW1lOmUuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6ay52YWx1ZS5pY29uKHtjbGFzczpZbi51bnJlZih5KT8uaWNvbn0pfSxudWxsLGIsRSkpOmQoYDxzcGFuIGRhdGEtc2xvdD0iZmFsbGJhY2siIGNsYXNzPSIke21lKGsudmFsdWUuZmFsbGJhY2soe2NsYXNzOlluLnVucmVmKHkpPy5mYWxsYmFja30pKX0iJHtFfT4ke3llKHYudmFsdWV8fCLCoCIpfTwvc3Bhbj5gKX0sZCxiLEUpfSksXzozfSxFLF8pKX0pLF86M30pLEUpfX19KSxMbD1CbC5zZXR1cDtmdW5jdGlvbiB1c2VDb21wb25lbnRJY29ucyhlKXtjb25zdCBjPXVzZUFwcENvbmZpZygpLGQ9WW4uY29tcHV0ZWQoKCk9PlluLnRvVmFsdWUoZSkpLGg9WW4uY29tcHV0ZWQoKCk9PmQudmFsdWUuaWNvbiYmZC52YWx1ZS5sZWFkaW5nfHxkLnZhbHVlLmljb24mJiFkLnZhbHVlLnRyYWlsaW5nfHxkLnZhbHVlLmxvYWRpbmcmJiFkLnZhbHVlLnRyYWlsaW5nfHwhIWQudmFsdWUubGVhZGluZ0ljb24pLHY9WW4uY29tcHV0ZWQoKCk9PmQudmFsdWUuaWNvbiYmZC52YWx1ZS50cmFpbGluZ3x8ZC52YWx1ZS5sb2FkaW5nJiZkLnZhbHVlLnRyYWlsaW5nfHwhIWQudmFsdWUudHJhaWxpbmdJY29uKSxiPVluLmNvbXB1dGVkKCgpPT5kLnZhbHVlLmxvYWRpbmc/ZC52YWx1ZS5sb2FkaW5nSWNvbnx8Yy51aS5pY29ucy5sb2FkaW5nOmQudmFsdWUubGVhZGluZ0ljb258fGQudmFsdWUuaWNvbikseT1Zbi5jb21wdXRlZCgoKT0+ZC52YWx1ZS5sb2FkaW5nJiYhaC52YWx1ZT9kLnZhbHVlLmxvYWRpbmdJY29ufHxjLnVpLmljb25zLmxvYWRpbmc6ZC52YWx1ZS50cmFpbGluZ0ljb258fGQudmFsdWUuaWNvbik7cmV0dXJue2lzTGVhZGluZzpoLGlzVHJhaWxpbmc6dixsZWFkaW5nSWNvbk5hbWU6Yix0cmFpbGluZ0ljb25OYW1lOnl9fUJsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0F2YXRhci52dWUiKSxMbD9MbChlLGMpOnZvaWQgMH07Y29uc3Qgamw9U3ltYm9sKCJudXh0LXVpLmZpZWxkLWdyb3VwIik7ZnVuY3Rpb24gdXNlRmllbGRHcm91cChlKXtjb25zdCBjPVluLmluamVjdChqbCx2b2lkIDApO3JldHVybntvcmllbnRhdGlvbjpZbi5jb21wdXRlZCgoKT0+Yz8udmFsdWUub3JpZW50YXRpb24pLHNpemU6WW4uY29tcHV0ZWQoKCk9PmU/LnNpemU/P2M/LnZhbHVlLnNpemUpfX1jb25zdCAkbD1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6IkZpZWxkR3JvdXBSZXNldCIsc2V0dXA6KGUse3Nsb3RzOmN9KT0+KFluLnByb3ZpZGUoamwsWW4uY29tcHV0ZWQoKCk9Pih7c2l6ZTp2b2lkIDAsb3JpZW50YXRpb246dm9pZCAwfSkpKSwoKT0+Yy5kZWZhdWx0Py4oKSl9KSxGbD1TeW1ib2woIm51eHQtdWkuZm9ybS1vcHRpb25zIiksVmw9U3ltYm9sKCJudXh0LXVpLmZvcm0tZXZlbnRzIiksemw9U3ltYm9sKCJudXh0LXVpLmZvcm0tc3RhdGUiKSxxbD1TeW1ib2woIm51eHQtdWkuZm9ybS1maWVsZCIpLFVsPVN5bWJvbCgibnV4dC11aS5pbnB1dC1pZCIpLEhsPVN5bWJvbCgibnV4dC11aS5mb3JtLWlucHV0cyIpLEdsPVN5bWJvbCgibnV4dC11aS5mb3JtLWxvYWRpbmciKSxXbD1TeW1ib2woIm51eHQtdWkuZm9ybS1lcnJvcnMiKTtmdW5jdGlvbiB1c2VGb3JtRmllbGQoZSxjKXtjb25zdCBkPVluLmluamVjdChGbCx2b2lkIDApLGg9WW4uaW5qZWN0KFZsLHZvaWQgMCksdj1Zbi5pbmplY3QocWwsdm9pZCAwKSxiPVluLmluamVjdChVbCx2b2lkIDApO2Z1bmN0aW9uIGVtaXRGb3JtRXZlbnQoZSxjLGQpe2gmJnYmJmMmJmguZW1pdCh7dHlwZTplLG5hbWU6YyxlYWdlcjpkfSl9WW4ucHJvdmlkZShxbCx2b2lkIDApLHYmJmImJighMT09PWM/LmJpbmQ/Yi52YWx1ZT12b2lkIDA6ZT8uaWQmJihiLnZhbHVlPWU/LmlkKSk7Y29uc3QgeT11c2VEZWJvdW5jZUZuKCgpPT57ZW1pdEZvcm1FdmVudCgiaW5wdXQiLHY/LnZhbHVlLm5hbWUsIWM/LmRlZmVySW5wdXRWYWxpZGF0aW9ufHx2Py52YWx1ZS5lYWdlclZhbGlkYXRpb24pfSx2Py52YWx1ZS52YWxpZGF0ZU9uSW5wdXREZWxheT8/ZD8udmFsdWUudmFsaWRhdGVPbklucHV0RGVsYXk/PzApO3JldHVybntpZDpZbi5jb21wdXRlZCgoKT0+ZT8uaWQ/P2I/LnZhbHVlKSxuYW1lOlluLmNvbXB1dGVkKCgpPT5lPy5uYW1lPz92Py52YWx1ZS5uYW1lKSxzaXplOlluLmNvbXB1dGVkKCgpPT5lPy5zaXplPz92Py52YWx1ZS5zaXplKSxjb2xvcjpZbi5jb21wdXRlZCgoKT0+dj8udmFsdWUuZXJyb3I/ImVycm9yIjplPy5jb2xvciksaGlnaGxpZ2h0OlluLmNvbXB1dGVkKCgpPT4hIXY/LnZhbHVlLmVycm9yfHxlPy5oaWdobGlnaHQpLGRpc2FibGVkOlluLmNvbXB1dGVkKCgpPT5kPy52YWx1ZS5kaXNhYmxlZHx8ZT8uZGlzYWJsZWQpLGVtaXRGb3JtQmx1cjpmdW5jdGlvbigpe2VtaXRGb3JtRXZlbnQoImJsdXIiLHY/LnZhbHVlLm5hbWUpfSxlbWl0Rm9ybUlucHV0OnksZW1pdEZvcm1DaGFuZ2U6ZnVuY3Rpb24oKXtlbWl0Rm9ybUV2ZW50KCJjaGFuZ2UiLHY/LnZhbHVlLm5hbWUpfSxlbWl0Rm9ybUZvY3VzOmZ1bmN0aW9uKCl7ZW1pdEZvcm1FdmVudCgiZm9jdXMiLHY/LnZhbHVlLm5hbWUpfSxhcmlhQXR0cnM6WW4uY29tcHV0ZWQoKCk9PntpZighdj8udmFsdWUpcmV0dXJuO2NvbnN0IGU9WyJlcnJvciIsImhpbnQiLCJkZXNjcmlwdGlvbiIsImhlbHAiXS5maWx0ZXIoZT0+dj8udmFsdWU/LltlXSkubWFwKGU9PmAke3Y/LnZhbHVlLmFyaWFJZH0tJHtlfWApfHxbXSxjPXsiYXJpYS1pbnZhbGlkIjohIXY/LnZhbHVlLmVycm9yfTtyZXR1cm4gZS5sZW5ndGg+MCYmKGNbImFyaWEtZGVzY3JpYmVkYnkiXT1lLmpvaW4oIiAiKSksY30pfX1jb25zdCBYbD1bImFjdGl2ZSIsImFjdGl2ZUNsYXNzIiwiYXJpYUN1cnJlbnRWYWx1ZSIsImFzIiwiZGlzYWJsZWQiLCJkb3dubG9hZCIsImV4YWN0IiwiZXhhY3RBY3RpdmVDbGFzcyIsImV4YWN0SGFzaCIsImV4YWN0UXVlcnkiLCJleHRlcm5hbCIsImZvcm0iLCJmb3JtYWN0aW9uIiwiZm9ybWVuY3R5cGUiLCJmb3JtbWV0aG9kIiwiZm9ybW5vdmFsaWRhdGUiLCJmb3JtdGFyZ2V0IiwiaHJlZiIsImhyZWZsYW5nIiwiaW5hY3RpdmVDbGFzcyIsIm1lZGlhIiwibm9QcmVmZXRjaCIsIm5vUmVsIiwib25DbGljayIsInBpbmciLCJwcmVmZXRjaCIsInByZWZldGNoT24iLCJwcmVmZXRjaGVkQ2xhc3MiLCJyZWZlcnJlcnBvbGljeSIsInJlbCIsInJlcGxhY2UiLCJ0YXJnZXQiLCJ0aXRsZSIsInRvIiwidHJhaWxpbmdTbGFzaCIsInR5cGUiLCJ2aWV3VHJhbnNpdGlvbiJdO2Z1bmN0aW9uIHBpY2tMaW5rUHJvcHMoZSl7Y29uc3QgYz1PYmplY3Qua2V5cyhlKSxkPWMuZmlsdGVyKGU9PmUuc3RhcnRzV2l0aCgiYXJpYS0iKSksaD1jLmZpbHRlcihlPT5lLnN0YXJ0c1dpdGgoImRhdGEtIikpO3JldHVybiByZWFjdGl2ZVBpY2soZSwuLi5bLi4uWGwsLi4uZCwuLi5oXSl9Y29uc3QgS2w9e19fbmFtZToiVUxpbmtCYXNlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7YXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hdmlnYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSx0YXJnZXQ6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlzRXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZTtmdW5jdGlvbiBvbkNsaWNrV3JhcHBlcihlKXtpZihjLmRpc2FibGVkKXJldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpLHZvaWQgZS5wcmV2ZW50RGVmYXVsdCgpO2lmKGMub25DbGljaylmb3IoY29uc3QgZCBvZiBBcnJheS5pc0FycmF5KGMub25DbGljayk/Yy5vbkNsaWNrOltjLm9uQ2xpY2tdKWQoZSk7Yy5ocmVmJiZjLm5hdmlnYXRlJiYhYy5pc0V4dGVybmFsJiZjLm5hdmlnYXRlKGUpfXJldHVybihjLGQsaCx2KT0+e2QocGUoWW4udW5yZWYoZ3MpLFluLm1lcmdlUHJvcHMoZS5ocmVmP3thczoiYSIsaHJlZjplLmRpc2FibGVkP3ZvaWQgMDplLmhyZWYsImFyaWEtZGlzYWJsZWQiOmUuZGlzYWJsZWQ/InRydWUiOnZvaWQgMCxyb2xlOmUuZGlzYWJsZWQ/ImxpbmsiOnZvaWQgMCx0YWJpbmRleDplLmRpc2FibGVkPy0xOnZvaWQgMH06ImJ1dHRvbiI9PT1lLmFzP3thczplLmFzLHR5cGU6ZS50eXBlLGRpc2FibGVkOmUuZGlzYWJsZWR9OnthczplLmFzfSx7cmVsOmUucmVsLHRhcmdldDplLnRhcmdldCxvbkNsaWNrOm9uQ2xpY2tXcmFwcGVyfSx2KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGQsaCx2KT0+e2lmKCFkKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJkZWZhdWx0IildO2ZlKGMuJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLGQsaCx2KX0pLF86M30saCkpfX19LEpsPUtsLnNldHVwO0tsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0xpbmtCYXNlLnZ1ZSIpLEpsP0psKGUsYyk6dm9pZCAwfTtjb25zdCBRbD17YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkiLHZhcmlhbnRzOnthY3RpdmU6e3RydWU6InRleHQtcHJpbWFyeSIsZmFsc2U6InRleHQtbXV0ZWQifSxkaXNhYmxlZDp7dHJ1ZToiY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNzUifX0sY29tcG91bmRWYXJpYW50czpbe2FjdGl2ZTohMSxkaXNhYmxlZDohMSxjbGFzczpbImhvdmVyOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19XX0sWWw9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVTGluayIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFjdGl2ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxleGFjdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxleGFjdFF1ZXJ5Ont0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITF9LGV4YWN0SGFzaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpbmFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY3VzdG9tOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJhdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxocmVmOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGV4dGVybmFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRhcmdldDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0scmVsOnt0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxub1JlbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaGVkQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaE9uOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sbm9QcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ1NsYXNoOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoicGFnZSJ9LHZpZXdUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlcGxhY2U6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGMpe2NvbnN0IGQ9Yyx2PXVzZVJvdXRlKCksYj11c2VBcHBDb25maWcoKSx5PXVzZU51eHRBcHAoKSxFPXVzZUZvcndhcmRQcm9wcyhyZWFjdGl2ZU9taXQoZCwiYXMiLCJ0eXBlIiwiZGlzYWJsZWQiLCJhY3RpdmUiLCJleGFjdCIsImV4YWN0UXVlcnkiLCJleGFjdEhhc2giLCJhY3RpdmVDbGFzcyIsImluYWN0aXZlQ2xhc3MiLCJ0byIsImhyZWYiLCJyYXciLCJjdXN0b20iLCJjbGFzcyIpKSxrPVluLmNvbXB1dGVkKCgpPT5jbCh7ZXh0ZW5kOmNsKFFsKSwuLi5oKHt2YXJpYW50czp7YWN0aXZlOnt0cnVlOm1lcmdlQ2xhc3NlcyhiLnVpPy5saW5rPy52YXJpYW50cz8uYWN0aXZlPy50cnVlLGQuYWN0aXZlQ2xhc3MpLGZhbHNlOm1lcmdlQ2xhc3NlcyhiLnVpPy5saW5rPy52YXJpYW50cz8uYWN0aXZlPy5mYWxzZSxkLmluYWN0aXZlQ2xhc3MpfX19LGIudWk/Lmxpbmt8fHt9KX0pKSxfPVluLmNvbXB1dGVkKCgpPT57Y29uc3QgYz1kLnRvPz9kLmhyZWY7aWYoIWMpcmV0dXJuIGM7aWYoInN0cmluZyIhPXR5cGVvZiBjKXJldHVybiBjO2lmKGQuZXh0ZXJuYWx8fGUoYyx7YWNjZXB0UmVsYXRpdmU6ITB9KSlyZXR1cm4gYztjb25zdCBoPXkuJGxvY2FsZVBhdGg7cmV0dXJuIGg/aChjKTpjfSksVD1Zbi5jb21wdXRlZCgoKT0+ISFfLnZhbHVlJiYoIWQuZXh0ZXJuYWwmJigic3RyaW5nIiE9dHlwZW9mIF8udmFsdWV8fCFlKF8udmFsdWUse2FjY2VwdFJlbGF0aXZlOiEwfSkmJighZC50YXJnZXR8fCJfc2VsZiI9PT1kLnRhcmdldCkpKSksTj1Zbi5jb21wdXRlZCgoKT0+ZC5ub1JlbD9udWxsOmQucmVsP2QucmVsOiJub29wZW5lciBub3JlZmVycmVyIik7ZnVuY3Rpb24gaXNMaW5rQWN0aXZlKHtyb3V0ZTplLGlzQWN0aXZlOmMsaXNFeGFjdEFjdGl2ZTpofT17fSl7aWYodm9pZCAwIT09ZC5hY3RpdmUpcmV0dXJuIGQuYWN0aXZlO2lmKCFfLnZhbHVlKXJldHVybiExO2lmKCJwYXJ0aWFsIj09PWQuZXhhY3RRdWVyeSl7aWYoIWZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1kaWZmKGUsYykucmVkdWNlKChlLGMpPT4oImFkZGVkIj09PWMudHlwZSYmZS5hZGQoYy5rZXkpLGUpLG5ldyBTZXQpO3JldHVybiBpc0VxdWFsJDEoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW2VdKT0+IWQuaGFzKGUpKSksT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGMpLmZpbHRlcigoW2VdKT0+IWQuaGFzKGUpKSkpfShlLnF1ZXJ5LHYucXVlcnkpKXJldHVybiExfWVsc2UgaWYoITA9PT1kLmV4YWN0UXVlcnkmJiFpc0VxdWFsJDEoZS5xdWVyeSx2LnF1ZXJ5KSlyZXR1cm4hMTtyZXR1cm4oIWQuZXhhY3RIYXNofHxlLmhhc2g9PT12Lmhhc2gpJiYoISghZC5leGFjdHx8IWgpfHwhKGQuZXhhY3R8fCFjKSl9ZnVuY3Rpb24gcmVzb2x2ZUxpbmtDbGFzcyh7cm91dGU6ZSxpc0FjdGl2ZTpjLGlzRXhhY3RBY3RpdmU6aH09e30pe2NvbnN0IHY9aXNMaW5rQWN0aXZlKHtyb3V0ZTplLGlzQWN0aXZlOmMsaXNFeGFjdEFjdGl2ZTpofSk7cmV0dXJuIGQucmF3P1tkLmNsYXNzLHY/ZC5hY3RpdmVDbGFzczpkLmluYWN0aXZlQ2xhc3NdOmsudmFsdWUoe2NsYXNzOmQuY2xhc3MsYWN0aXZlOnYsZGlzYWJsZWQ6ZC5kaXNhYmxlZH0pfXJldHVybihlLGgsdixiKT0+e2NvbnN0IHk9JGE7VC52YWx1ZT9oKHBlKHksWW4ubWVyZ2VQcm9wcyhZbi51bnJlZihFKSx7dG86Xy52YWx1ZSxjdXN0b206IiJ9LGIpLHtkZWZhdWx0OlluLndpdGhDdHgoKHtocmVmOmgsbmF2aWdhdGU6dixyb3V0ZTpiLGlzQWN0aXZlOnksaXNFeGFjdEFjdGl2ZTpFLC4uLmt9LF8sVCxOKT0+e2lmKCFfKXJldHVybltjLmN1c3RvbT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYobXMpLHtrZXk6MH0se2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHsuLi5lLiRhdHRycywuLi5jLmV4YWN0JiZFP3siYXJpYS1jdXJyZW50IjpkLmFyaWFDdXJyZW50VmFsdWV9Ont9LGFzOmMuYXMsdHlwZTpjLnR5cGUsZGlzYWJsZWQ6Yy5kaXNhYmxlZCxocmVmOmgsbmF2aWdhdGU6dixyZWw6ay5yZWwsdGFyZ2V0OmsudGFyZ2V0LGlzRXh0ZXJuYWw6ay5pc0V4dGVybmFsLGFjdGl2ZTppc0xpbmtBY3RpdmUoe3JvdXRlOmIsaXNBY3RpdmU6eSxpc0V4YWN0QWN0aXZlOkV9KX0pXSksXzoyfSwxMDI0KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKEtsLFluLm1lcmdlUHJvcHMoe2tleToxfSx7Li4uZS4kYXR0cnMsLi4uYy5leGFjdCYmRT97ImFyaWEtY3VycmVudCI6ZC5hcmlhQ3VycmVudFZhbHVlfTp7fSxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsaHJlZjpoLG5hdmlnYXRlOnYscmVsOmsucmVsLHRhcmdldDprLnRhcmdldCxpc0V4dGVybmFsOmsuaXNFeHRlcm5hbH0se2NsYXNzOnJlc29sdmVMaW5rQ2xhc3Moe3JvdXRlOmIsaXNBY3RpdmU6eSxpc0V4YWN0QWN0aXZlOkV9KX0pLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldO2MuY3VzdG9tP18ocGUoWW4udW5yZWYobXMpLG51bGwse2RlZmF1bHQ6WW4ud2l0aEN0eCgoXyxULE4sTyk9PntpZighVClyZXR1cm5bWW4ucmVuZGVyU2xvdChlLiRzbG90cywiZGVmYXVsdCIsey4uLmUuJGF0dHJzLC4uLmMuZXhhY3QmJkU/eyJhcmlhLWN1cnJlbnQiOmQuYXJpYUN1cnJlbnRWYWx1ZX06e30sYXM6Yy5hcyx0eXBlOmMudHlwZSxkaXNhYmxlZDpjLmRpc2FibGVkLGhyZWY6aCxuYXZpZ2F0ZTp2LHJlbDprLnJlbCx0YXJnZXQ6ay50YXJnZXQsaXNFeHRlcm5hbDprLmlzRXh0ZXJuYWwsYWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSldO2ZlKGUuJHNsb3RzLCJkZWZhdWx0Iix7Li4uZS4kYXR0cnMsLi4uYy5leGFjdCYmRT97ImFyaWEtY3VycmVudCI6ZC5hcmlhQ3VycmVudFZhbHVlfTp7fSxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsaHJlZjpoLG5hdmlnYXRlOnYscmVsOmsucmVsLHRhcmdldDprLnRhcmdldCxpc0V4dGVybmFsOmsuaXNFeHRlcm5hbCxhY3RpdmU6aXNMaW5rQWN0aXZlKHtyb3V0ZTpiLGlzQWN0aXZlOnksaXNFeGFjdEFjdGl2ZTpFfSl9LG51bGwsVCxOLE8pfSksXzoyfSxULE4pKTpfKHBlKEtsLFluLm1lcmdlUHJvcHMoey4uLmUuJGF0dHJzLC4uLmMuZXhhY3QmJkU/eyJhcmlhLWN1cnJlbnQiOmQuYXJpYUN1cnJlbnRWYWx1ZX06e30sYXM6Yy5hcyx0eXBlOmMudHlwZSxkaXNhYmxlZDpjLmRpc2FibGVkLGhyZWY6aCxuYXZpZ2F0ZTp2LHJlbDprLnJlbCx0YXJnZXQ6ay50YXJnZXQsaXNFeHRlcm5hbDprLmlzRXh0ZXJuYWx9LHtjbGFzczpyZXNvbHZlTGlua0NsYXNzKHtyb3V0ZTpiLGlzQWN0aXZlOnksaXNFeGFjdEFjdGl2ZTpFfSl9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChjLGQsaCx2KT0+e2lmKCFkKXJldHVybltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSldO2ZlKGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmlzTGlua0FjdGl2ZSh7cm91dGU6Yixpc0FjdGl2ZTp5LGlzRXhhY3RBY3RpdmU6RX0pfSxudWxsLGQsaCx2KX0pLF86Mn0sVCxOKSl9KSxfOjN9LHYpKTpjLmN1c3RvbT9oKHBlKFluLnVucmVmKG1zKSxiLHtkZWZhdWx0OlluLndpdGhDdHgoKGgsdixiLHkpPT57aWYoIXYpcmV0dXJuW1luLnJlbmRlclNsb3QoZS4kc2xvdHMsImRlZmF1bHQiLHsuLi5lLiRhdHRycyxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsLi4uXy52YWx1ZT97aHJlZjpTdHJpbmcoXy52YWx1ZSksdGFyZ2V0OmQudGFyZ2V0LHJlbDpOLnZhbHVlLGlzRXh0ZXJuYWw6ITB9Ont9LGFjdGl2ZTpjLmFjdGl2ZT8/ITF9KV07ZmUoZS4kc2xvdHMsImRlZmF1bHQiLHsuLi5lLiRhdHRycyxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsLi4uXy52YWx1ZT97aHJlZjpTdHJpbmcoXy52YWx1ZSksdGFyZ2V0OmQudGFyZ2V0LHJlbDpOLnZhbHVlLGlzRXh0ZXJuYWw6ITB9Ont9LGFjdGl2ZTpjLmFjdGl2ZT8/ITF9LG51bGwsdixiLHkpfSksXzozfSx2KSk6aChwZShLbCxZbi5tZXJnZVByb3BzKHsuLi5lLiRhdHRycyxhczpjLmFzLHR5cGU6Yy50eXBlLGRpc2FibGVkOmMuZGlzYWJsZWQsLi4uXy52YWx1ZT97aHJlZjpTdHJpbmcoXy52YWx1ZSksdGFyZ2V0OmQudGFyZ2V0LHJlbDpOLnZhbHVlLGlzRXh0ZXJuYWw6ITB9Ont9fSx7Y2xhc3M6cmVzb2x2ZUxpbmtDbGFzcygpfSxiKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGUuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmMuYWN0aXZlPz8hMX0pXTtmZShlLiRzbG90cywiZGVmYXVsdCIse2FjdGl2ZTpjLmFjdGl2ZT8/ITF9LG51bGwsaCx2LGIpfSksXzozfSx2KSl9fX0pLFpsPVlsLnNldHVwO1lsLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0xpbmsudnVlIiksWmw/WmwoZSxjKTp2b2lkIDB9O2NvbnN0IGVjPXtzbG90czp7YmFzZTpbInJvdW5kZWQtbWQgZm9udC1tZWRpdW0gaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBhcmlhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IGFyaWEtZGlzYWJsZWQ6b3BhY2l0eS03NSIsInRyYW5zaXRpb24tY29sb3JzIl0sbGFiZWw6InRydW5jYXRlIixsZWFkaW5nSWNvbjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZ0ljb246InNocmluay0wIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sdmFyaWFudDp7c29saWQ6IiIsb3V0bGluZToiIixzb2Z0OiIiLHN1YnRsZToiIixnaG9zdDoiIixsaW5rOiIifSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQteHMgZ2FwLTEiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC14cyBnYXAtMS41IixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LG1kOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtc20gZ2FwLTEuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtc20gZ2FwLTIiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01In0seGw6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LWJhc2UgZ2FwLTIiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sYmxvY2s6e3RydWU6e2Jhc2U6InctZnVsbCBqdXN0aWZ5LWNlbnRlciIsdHJhaWxpbmdJY29uOiJtcy1hdXRvIn19LHNxdWFyZTp7dHJ1ZToiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGFjdGl2ZTp7dHJ1ZTp7YmFzZToiIn0sZmFsc2U6e2Jhc2U6IiJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctcHJpbWFyeSBob3ZlcjpiZy1wcmltYXJ5Lzc1IGFjdGl2ZTpiZy1wcmltYXJ5Lzc1IGRpc2FibGVkOmJnLXByaW1hcnkgYXJpYS1kaXNhYmxlZDpiZy1wcmltYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS83NSBhY3RpdmU6Ymctc2Vjb25kYXJ5Lzc1IGRpc2FibGVkOmJnLXNlY29uZGFyeSBhcmlhLWRpc2FibGVkOmJnLXNlY29uZGFyeSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXN1Y2Nlc3MgaG92ZXI6Ymctc3VjY2Vzcy83NSBhY3RpdmU6Ymctc3VjY2Vzcy83NSBkaXNhYmxlZDpiZy1zdWNjZXNzIGFyaWEtZGlzYWJsZWQ6Ymctc3VjY2VzcyBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbmZvIGhvdmVyOmJnLWluZm8vNzUgYWN0aXZlOmJnLWluZm8vNzUgZGlzYWJsZWQ6YmctaW5mbyBhcmlhLWRpc2FibGVkOmJnLWluZm8gZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctd2FybmluZyBob3ZlcjpiZy13YXJuaW5nLzc1IGFjdGl2ZTpiZy13YXJuaW5nLzc1IGRpc2FibGVkOmJnLXdhcm5pbmcgYXJpYS1kaXNhYmxlZDpiZy13YXJuaW5nIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1lcnJvciBob3ZlcjpiZy1lcnJvci83NSBhY3RpdmU6YmctZXJyb3IvNzUgZGlzYWJsZWQ6YmctZXJyb3IgYXJpYS1kaXNhYmxlZDpiZy1lcnJvciBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS81MCB0ZXh0LXByaW1hcnkgaG92ZXI6YmctcHJpbWFyeS8xMCBhY3RpdmU6YmctcHJpbWFyeS8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzUwIHRleHQtc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS8xMCBhY3RpdmU6Ymctc2Vjb25kYXJ5LzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIHRleHQtc3VjY2VzcyBob3ZlcjpiZy1zdWNjZXNzLzEwIGFjdGl2ZTpiZy1zdWNjZXNzLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW5mby81MCB0ZXh0LWluZm8gaG92ZXI6YmctaW5mby8xMCBhY3RpdmU6YmctaW5mby8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvNTAgdGV4dC13YXJuaW5nIGhvdmVyOmJnLXdhcm5pbmcvMTAgYWN0aXZlOmJnLXdhcm5pbmcvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvNTAgdGV4dC1lcnJvciBob3ZlcjpiZy1lcnJvci8xMCBhY3RpdmU6YmctZXJyb3IvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1wcmltYXJ5IGJnLXByaW1hcnkvMTAgaG92ZXI6YmctcHJpbWFyeS8xNSBhY3RpdmU6YmctcHJpbWFyeS8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1wcmltYXJ5LzE1IGRpc2FibGVkOmJnLXByaW1hcnkvMTAgYXJpYS1kaXNhYmxlZDpiZy1wcmltYXJ5LzEwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBiZy1zZWNvbmRhcnkvMTAgaG92ZXI6Ymctc2Vjb25kYXJ5LzE1IGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc2Vjb25kYXJ5LzE1IGRpc2FibGVkOmJnLXNlY29uZGFyeS8xMCBhcmlhLWRpc2FibGVkOmJnLXNlY29uZGFyeS8xMCJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtc3VjY2VzcyBiZy1zdWNjZXNzLzEwIGhvdmVyOmJnLXN1Y2Nlc3MvMTUgYWN0aXZlOmJnLXN1Y2Nlc3MvMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc3VjY2Vzcy8xNSBkaXNhYmxlZDpiZy1zdWNjZXNzLzEwIGFyaWEtZGlzYWJsZWQ6Ymctc3VjY2Vzcy8xMCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtaW5mbyBiZy1pbmZvLzEwIGhvdmVyOmJnLWluZm8vMTUgYWN0aXZlOmJnLWluZm8vMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmctaW5mby8xNSBkaXNhYmxlZDpiZy1pbmZvLzEwIGFyaWEtZGlzYWJsZWQ6YmctaW5mby8xMCJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtd2FybmluZyBiZy13YXJuaW5nLzEwIGhvdmVyOmJnLXdhcm5pbmcvMTUgYWN0aXZlOmJnLXdhcm5pbmcvMTUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctd2FybmluZy8xNSBkaXNhYmxlZDpiZy13YXJuaW5nLzEwIGFyaWEtZGlzYWJsZWQ6Ymctd2FybmluZy8xMCJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWVycm9yIGJnLWVycm9yLzEwIGhvdmVyOmJnLWVycm9yLzE1IGFjdGl2ZTpiZy1lcnJvci8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1lcnJvci8xNSBkaXNhYmxlZDpiZy1lcnJvci8xMCBhcmlhLWRpc2FibGVkOmJnLWVycm9yLzEwIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgcmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeS8yNSBiZy1wcmltYXJ5LzEwIGhvdmVyOmJnLXByaW1hcnkvMTUgYWN0aXZlOmJnLXByaW1hcnkvMTUgZGlzYWJsZWQ6YmctcHJpbWFyeS8xMCBhcmlhLWRpc2FibGVkOmJnLXByaW1hcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeS8yNSBiZy1zZWNvbmRhcnkvMTAgaG92ZXI6Ymctc2Vjb25kYXJ5LzE1IGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTUgZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIGFyaWEtZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSBiZy1zdWNjZXNzLzEwIGhvdmVyOmJnLXN1Y2Nlc3MvMTUgYWN0aXZlOmJnLXN1Y2Nlc3MvMTUgZGlzYWJsZWQ6Ymctc3VjY2Vzcy8xMCBhcmlhLWRpc2FibGVkOmJnLXN1Y2Nlc3MvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWluZm8gcmluZyByaW5nLWluc2V0IHJpbmctaW5mby8yNSBiZy1pbmZvLzEwIGhvdmVyOmJnLWluZm8vMTUgYWN0aXZlOmJnLWluZm8vMTUgZGlzYWJsZWQ6YmctaW5mby8xMCBhcmlhLWRpc2FibGVkOmJnLWluZm8vMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSBiZy13YXJuaW5nLzEwIGhvdmVyOmJnLXdhcm5pbmcvMTUgYWN0aXZlOmJnLXdhcm5pbmcvMTUgZGlzYWJsZWQ6Ymctd2FybmluZy8xMCBhcmlhLWRpc2FibGVkOmJnLXdhcm5pbmcvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSBiZy1lcnJvci8xMCBob3ZlcjpiZy1lcnJvci8xNSBhY3RpdmU6YmctZXJyb3IvMTUgZGlzYWJsZWQ6YmctZXJyb3IvMTAgYXJpYS1kaXNhYmxlZDpiZy1lcnJvci8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtcHJpbWFyeSBob3ZlcjpiZy1wcmltYXJ5LzEwIGFjdGl2ZTpiZy1wcmltYXJ5LzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXByaW1hcnkvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS8xMCBhY3RpdmU6Ymctc2Vjb25kYXJ5LzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXNlY29uZGFyeS8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtc3VjY2VzcyBob3ZlcjpiZy1zdWNjZXNzLzEwIGFjdGl2ZTpiZy1zdWNjZXNzLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXN1Y2Nlc3MvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LWluZm8gaG92ZXI6YmctaW5mby8xMCBhY3RpdmU6YmctaW5mby8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1pbmZvLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC13YXJuaW5nIGhvdmVyOmJnLXdhcm5pbmcvMTAgYWN0aXZlOmJnLXdhcm5pbmcvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctd2FybmluZy8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LWVycm9yIGhvdmVyOmJnLWVycm9yLzEwIGFjdGl2ZTpiZy1lcnJvci8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1lcnJvci8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJsaW5rIixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOnRleHQtcHJpbWFyeS83NSBhY3RpdmU6dGV4dC1wcmltYXJ5Lzc1IGRpc2FibGVkOnRleHQtcHJpbWFyeSBhcmlhLWRpc2FibGVkOnRleHQtcHJpbWFyeSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBob3Zlcjp0ZXh0LXNlY29uZGFyeS83NSBhY3RpdmU6dGV4dC1zZWNvbmRhcnkvNzUgZGlzYWJsZWQ6dGV4dC1zZWNvbmRhcnkgYXJpYS1kaXNhYmxlZDp0ZXh0LXNlY29uZGFyeSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgaG92ZXI6dGV4dC1zdWNjZXNzLzc1IGFjdGl2ZTp0ZXh0LXN1Y2Nlc3MvNzUgZGlzYWJsZWQ6dGV4dC1zdWNjZXNzIGFyaWEtZGlzYWJsZWQ6dGV4dC1zdWNjZXNzIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LWluZm8gaG92ZXI6dGV4dC1pbmZvLzc1IGFjdGl2ZTp0ZXh0LWluZm8vNzUgZGlzYWJsZWQ6dGV4dC1pbmZvIGFyaWEtZGlzYWJsZWQ6dGV4dC1pbmZvIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgaG92ZXI6dGV4dC13YXJuaW5nLzc1IGFjdGl2ZTp0ZXh0LXdhcm5pbmcvNzUgZGlzYWJsZWQ6dGV4dC13YXJuaW5nIGFyaWEtZGlzYWJsZWQ6dGV4dC13YXJuaW5nIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJsaW5rIixjbGFzczoidGV4dC1lcnJvciBob3Zlcjp0ZXh0LWVycm9yLzc1IGFjdGl2ZTp0ZXh0LWVycm9yLzc1IGRpc2FibGVkOnRleHQtZXJyb3IgYXJpYS1kaXNhYmxlZDp0ZXh0LWVycm9yIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctaW52ZXJ0ZWQgaG92ZXI6YmctaW52ZXJ0ZWQvOTAgYWN0aXZlOmJnLWludmVydGVkLzkwIGRpc2FibGVkOmJnLWludmVydGVkIGFyaWEtZGlzYWJsZWQ6YmctaW52ZXJ0ZWQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1pbnZlcnRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1kZWZhdWx0IGhvdmVyOmJnLWVsZXZhdGVkIGFjdGl2ZTpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1kZWZhdWx0IGFyaWEtZGlzYWJsZWQ6YmctZGVmYXVsdCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1kZWZhdWx0IGJnLWVsZXZhdGVkIGhvdmVyOmJnLWFjY2VudGVkLzc1IGFjdGl2ZTpiZy1hY2NlbnRlZC83NSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1hY2NlbnRlZC83NSBkaXNhYmxlZDpiZy1lbGV2YXRlZCBhcmlhLWRpc2FibGVkOmJnLWVsZXZhdGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCB0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgYWN0aXZlOmJnLWFjY2VudGVkLzc1IGRpc2FibGVkOmJnLWVsZXZhdGVkIGFyaWEtZGlzYWJsZWQ6YmctZWxldmF0ZWQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnZlcnRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgaG92ZXI6YmctZWxldmF0ZWQgYWN0aXZlOmJnLWVsZXZhdGVkIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWVsZXZhdGVkIGhvdmVyOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6aG92ZXI6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgaG92ZXI6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmhvdmVyOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LW11dGVkIGhvdmVyOnRleHQtZGVmYXVsdCBhY3RpdmU6dGV4dC1kZWZhdWx0IGRpc2FibGVkOnRleHQtbXV0ZWQgYXJpYS1kaXNhYmxlZDp0ZXh0LW11dGVkIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se3NpemU6InhzIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9LHtzaXplOiJzbSIsc3F1YXJlOiEwLGNsYXNzOiJwLTEuNSJ9LHtzaXplOiJtZCIsc3F1YXJlOiEwLGNsYXNzOiJwLTEuNSJ9LHtzaXplOiJsZyIsc3F1YXJlOiEwLGNsYXNzOiJwLTIifSx7c2l6ZToieGwiLHNxdWFyZTohMCxjbGFzczoicC0yIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fV0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLHNpemU6Im1kIn19LHRjPXtfX25hbWU6IlVCdXR0b24iLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNxdWFyZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxibG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0UXVlcnk6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMX0sZXhhY3RIYXNoOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGluYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxocmVmOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGV4dGVybmFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRhcmdldDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0scmVsOnt0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxub1JlbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaGVkQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmVmZXRjaE9uOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sbm9QcmVmZXRjaDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ1NsYXNoOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZpZXdUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlcGxhY2U6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSxkPVluLnVzZVNsb3RzKCksdj11c2VBcHBDb25maWcoKSxiPXVzZUNvbXBvbmVudFVJKCJidXR0b24iLGMpLHtvcmllbnRhdGlvbjp5LHNpemU6RX09dXNlRmllbGRHcm91cChjKSxrPXVzZUZvcndhcmRQcm9wcyhwaWNrTGlua1Byb3BzKGMpKSxfPVluLnJlZighMSksVD1Zbi5pbmplY3QoR2wsdm9pZCAwKTthc3luYyBmdW5jdGlvbiBvbkNsaWNrV3JhcHBlcihlKXtfLnZhbHVlPSEwO2NvbnN0IGQ9QXJyYXkuaXNBcnJheShjLm9uQ2xpY2spP2Mub25DbGljazpbYy5vbkNsaWNrXTt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoZC5tYXAoYz0+Yz8uKGUpKSl9ZmluYWxseXtfLnZhbHVlPSExfX1jb25zdCBOPVluLmNvbXB1dGVkKCgpPT5jLmxvYWRpbmd8fGMubG9hZGluZ0F1dG8mJihfLnZhbHVlfHxUPy52YWx1ZSYmInN1Ym1pdCI9PT1jLnR5cGUpKSx7aXNMZWFkaW5nOk8saXNUcmFpbGluZzpSLGxlYWRpbmdJY29uTmFtZTpNLHRyYWlsaW5nSWNvbk5hbWU6RH09dXNlQ29tcG9uZW50SWNvbnMoWW4uY29tcHV0ZWQoKCk9Pih7Li4uYyxsb2FkaW5nOk4udmFsdWV9KSkpLEw9WW4uY29tcHV0ZWQoKCk9PmNsKHtleHRlbmQ6Y2woZWMpLC4uLmgoe3ZhcmlhbnRzOnthY3RpdmU6e3RydWU6e2Jhc2U6bWVyZ2VDbGFzc2VzKHYudWk/LmJ1dHRvbj8udmFyaWFudHM/LmFjdGl2ZT8udHJ1ZT8uYmFzZSxjLmFjdGl2ZUNsYXNzKX0sZmFsc2U6e2Jhc2U6bWVyZ2VDbGFzc2VzKHYudWk/LmJ1dHRvbj8udmFyaWFudHM/LmFjdGl2ZT8uZmFsc2U/LmJhc2UsYy5pbmFjdGl2ZUNsYXNzKX19fX0sdi51aT8uYnV0dG9ufHx7fSl9KSh7Y29sb3I6Yy5jb2xvcix2YXJpYW50OmMudmFyaWFudCxzaXplOkUudmFsdWUsbG9hZGluZzpOLnZhbHVlLGJsb2NrOmMuYmxvY2ssc3F1YXJlOmMuc3F1YXJlfHwhZC5kZWZhdWx0JiYhYy5sYWJlbCxsZWFkaW5nOk8udmFsdWUsdHJhaWxpbmc6Ui52YWx1ZSxmaWVsZEdyb3VwOnkudmFsdWV9KSk7cmV0dXJuKGQsaCx2LHkpPT57aChwZShZbCxZbi5tZXJnZVByb3BzKHt0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkfHxOLnZhbHVlfSxZbi51bnJlZihvbWl0KShZbi51bnJlZihrKSxbInR5cGUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkse2N1c3RvbToiIn0seSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoe2FjdGl2ZTpoLC4uLnZ9LHksRSxrKT0+e2lmKCF5KXJldHVybltZbi5jcmVhdGVWTm9kZShLbCxZbi5tZXJnZVByb3BzKHYseyJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpMLnZhbHVlLmJhc2Uoe2NsYXNzOltZbi51bnJlZihiKT8uYmFzZSxjLmNsYXNzXSxhY3RpdmU6aCwuLi5oJiZlLmFjdGl2ZVZhcmlhbnQ/e3ZhcmlhbnQ6ZS5hY3RpdmVWYXJpYW50fTp7fSwuLi5oJiZlLmFjdGl2ZUNvbG9yP3tjb2xvcjplLmFjdGl2ZUNvbG9yfTp7fX0pLG9uQ2xpY2s6b25DbGlja1dyYXBwZXJ9KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChkLiRzbG90cywibGVhZGluZyIse3VpOkwudmFsdWV9LCgpPT5bWW4udW5yZWYoTykmJlluLnVucmVmKE0pPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayh3bCx7a2V5OjAsbmFtZTpZbi51bnJlZihNKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOkwudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmUuYXZhdGFyPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhCbCxZbi5tZXJnZVByb3BzKHtrZXk6MSxzaXplOlluLnVucmVmKGIpPy5sZWFkaW5nQXZhdGFyU2l6ZXx8TC52YWx1ZS5sZWFkaW5nQXZhdGFyU2l6ZSgpfSxlLmF2YXRhcix7ImRhdGEtc2xvdCI6ImxlYWRpbmdBdmF0YXIiLGNsYXNzOkwudmFsdWUubGVhZGluZ0F2YXRhcih7Y2xhc3M6WW4udW5yZWYoYik/LmxlYWRpbmdBdmF0YXIsYWN0aXZlOmh9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxZbi5yZW5kZXJTbG90KGQuJHNsb3RzLCJkZWZhdWx0Iix7dWk6TC52YWx1ZX0sKCk9Plt2b2lkIDAhPT1lLmxhYmVsJiZudWxsIT09ZS5sYWJlbD8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOkwudmFsdWUubGFiZWwoe2NsYXNzOlluLnVucmVmKGIpPy5sYWJlbCxhY3RpdmU6aH0pfSxZbi50b0Rpc3BsYXlTdHJpbmcoZS5sYWJlbCksMykpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKSxZbi5yZW5kZXJTbG90KGQuJHNsb3RzLCJ0cmFpbGluZyIse3VpOkwudmFsdWV9LCgpPT5bWW4udW5yZWYoUikmJlluLnVucmVmKEQpPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayh3bCx7a2V5OjAsbmFtZTpZbi51bnJlZihEKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczpMLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6WW4udW5yZWYoYik/LnRyYWlsaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXTt5KHBlKEtsLFluLm1lcmdlUHJvcHModix7ImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkwudmFsdWUuYmFzZSh7Y2xhc3M6W1luLnVucmVmKGIpPy5iYXNlLGMuY2xhc3NdLGFjdGl2ZTpoLC4uLmgmJmUuYWN0aXZlVmFyaWFudD97dmFyaWFudDplLmFjdGl2ZVZhcmlhbnR9Ont9LC4uLmgmJmUuYWN0aXZlQ29sb3I/e2NvbG9yOmUuYWN0aXZlQ29sb3J9Ont9fSksb25DbGljazpvbkNsaWNrV3JhcHBlcn0pLHtkZWZhdWx0OlluLndpdGhDdHgoKGMsdix5LEUpPT57aWYoIXYpcmV0dXJuW1luLnJlbmRlclNsb3QoZC4kc2xvdHMsImxlYWRpbmciLHt1aTpMLnZhbHVlfSwoKT0+W1luLnVucmVmKE8pJiZZbi51bnJlZihNKT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sod2wse2tleTowLG5hbWU6WW4udW5yZWYoTSksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpMLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczpZbi51bnJlZihiKT8ubGVhZGluZ0ljb24sYWN0aXZlOmh9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soQmwsWW4ubWVyZ2VQcm9wcyh7a2V5OjEsc2l6ZTpZbi51bnJlZihiKT8ubGVhZGluZ0F2YXRhclNpemV8fEwudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpMLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nQXZhdGFyLGFjdGl2ZTpofSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksWW4ucmVuZGVyU2xvdChkLiRzbG90cywiZGVmYXVsdCIse3VpOkwudmFsdWV9LCgpPT5bdm9pZCAwIT09ZS5sYWJlbCYmbnVsbCE9PWUubGFiZWw/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpMLnZhbHVlLmxhYmVsKHtjbGFzczpZbi51bnJlZihiKT8ubGFiZWwsYWN0aXZlOmh9KX0sWW4udG9EaXNwbGF5U3RyaW5nKGUubGFiZWwpLDMpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSksWW4ucmVuZGVyU2xvdChkLiRzbG90cywidHJhaWxpbmciLHt1aTpMLnZhbHVlfSwoKT0+W1luLnVucmVmKFIpJiZZbi51bnJlZihEKT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sod2wse2tleTowLG5hbWU6WW4udW5yZWYoRCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6TC52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOlluLnVucmVmKGIpPy50cmFpbGluZ0ljb24sYWN0aXZlOmh9KX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldO2ZlKGQuJHNsb3RzLCJsZWFkaW5nIix7dWk6TC52YWx1ZX0sKCk9PntZbi51bnJlZihPKSYmWW4udW5yZWYoTSk/dihwZSh3bCx7bmFtZTpZbi51bnJlZihNKSwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOkwudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLHksRSkpOmUuYXZhdGFyP3YocGUoQmwsWW4ubWVyZ2VQcm9wcyh7c2l6ZTpZbi51bnJlZihiKT8ubGVhZGluZ0F2YXRhclNpemV8fEwudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpMLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOlluLnVucmVmKGIpPy5sZWFkaW5nQXZhdGFyLGFjdGl2ZTpofSl9KSxudWxsLHksRSkpOnYoIlx4M2MhLS0tLVx4M2UiKX0sdix5LEUpLGZlKGQuJHNsb3RzLCJkZWZhdWx0Iix7dWk6TC52YWx1ZX0sKCk9Pnt2b2lkIDAhPT1lLmxhYmVsJiZudWxsIT09ZS5sYWJlbD92KGA8c3BhbiBkYXRhLXNsb3Q9ImxhYmVsIiBjbGFzcz0iJHttZShMLnZhbHVlLmxhYmVsKHtjbGFzczpZbi51bnJlZihiKT8ubGFiZWwsYWN0aXZlOmh9KSl9IiR7RX0+JHt5ZShlLmxhYmVsKX08L3NwYW4+YCk6digiXHgzYyEtLS0tXHgzZSIpfSx2LHksRSksZmUoZC4kc2xvdHMsInRyYWlsaW5nIix7dWk6TC52YWx1ZX0sKCk9PntZbi51bnJlZihSKSYmWW4udW5yZWYoRCk/dihwZSh3bCx7bmFtZTpZbi51bnJlZihEKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczpMLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6WW4udW5yZWYoYik/LnRyYWlsaW5nSWNvbixhY3RpdmU6aH0pfSxudWxsLHksRSkpOnYoIlx4M2MhLS0tLVx4M2UiKX0sdix5LEUpfSksXzoyfSxFLGspKX0pLF86M30sdikpfX19LG5jPXRjLnNldHVwO3RjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL0J1dHRvbi52dWUiKSxuYz9uYyhlLGMpOnZvaWQgMH07Y29uc3Qgb2M9e3Nsb3RzOntyb290OiJnYXAtMiIsYmFzZToicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1hY2NlbnRlZCIsaW5kaWNhdG9yOiJyb3VuZGVkLWZ1bGwgc2l6ZS1mdWxsIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCBlYXNlLW91dCIsc3RhdHVzOiJmbGV4IHRleHQtZGltbWVkIHRyYW5zaXRpb24tW3dpZHRoXSBkdXJhdGlvbi0yMDAiLHN0ZXBzOiJncmlkIGl0ZW1zLWVuZCIsc3RlcDoidHJ1bmNhdGUgdGV4dC1lbmQgcm93LXN0YXJ0LTEgY29sLXN0YXJ0LTEgdHJhbnNpdGlvbi1vcGFjaXR5In0sdmFyaWFudHM6e2FuaW1hdGlvbjp7Y2Fyb3VzZWw6IiIsImNhcm91c2VsLWludmVyc2UiOiIiLHN3aW5nOiIiLGVsYXN0aWM6IiJ9LGNvbG9yOntwcmltYXJ5OntpbmRpY2F0b3I6ImJnLXByaW1hcnkiLHN0ZXBzOiJ0ZXh0LXByaW1hcnkifSxzZWNvbmRhcnk6e2luZGljYXRvcjoiYmctc2Vjb25kYXJ5IixzdGVwczoidGV4dC1zZWNvbmRhcnkifSxzdWNjZXNzOntpbmRpY2F0b3I6ImJnLXN1Y2Nlc3MiLHN0ZXBzOiJ0ZXh0LXN1Y2Nlc3MifSxpbmZvOntpbmRpY2F0b3I6ImJnLWluZm8iLHN0ZXBzOiJ0ZXh0LWluZm8ifSx3YXJuaW5nOntpbmRpY2F0b3I6ImJnLXdhcm5pbmciLHN0ZXBzOiJ0ZXh0LXdhcm5pbmcifSxlcnJvcjp7aW5kaWNhdG9yOiJiZy1lcnJvciIsc3RlcHM6InRleHQtZXJyb3IifSxuZXV0cmFsOntpbmRpY2F0b3I6ImJnLWludmVydGVkIixzdGVwczoidGV4dC1pbnZlcnRlZCJ9fSxzaXplOnsiMnhzIjp7c3RhdHVzOiJ0ZXh0LXhzIixzdGVwczoidGV4dC14cyJ9LHhzOntzdGF0dXM6InRleHQteHMiLHN0ZXBzOiJ0ZXh0LXhzIn0sc206e3N0YXR1czoidGV4dC1zbSIsc3RlcHM6InRleHQtc20ifSxtZDp7c3RhdHVzOiJ0ZXh0LXNtIixzdGVwczoidGV4dC1zbSJ9LGxnOntzdGF0dXM6InRleHQtc20iLHN0ZXBzOiJ0ZXh0LXNtIn0seGw6e3N0YXR1czoidGV4dC1iYXNlIixzdGVwczoidGV4dC1iYXNlIn0sIjJ4bCI6e3N0YXR1czoidGV4dC1iYXNlIixzdGVwczoidGV4dC1iYXNlIn19LHN0ZXA6e2FjdGl2ZTp7c3RlcDoib3BhY2l0eS0xMDAifSxmaXJzdDp7c3RlcDoib3BhY2l0eS0xMDAgdGV4dC1tdXRlZCJ9LG90aGVyOntzdGVwOiJvcGFjaXR5LTAifSxsYXN0OntzdGVwOiIifX0sb3JpZW50YXRpb246e2hvcml6b250YWw6e3Jvb3Q6InctZnVsbCBmbGV4IGZsZXgtY29sIixiYXNlOiJ3LWZ1bGwiLHN0YXR1czoiZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIG1pbi13LWZpdCJ9LHZlcnRpY2FsOntyb290OiJoLWZ1bGwgZmxleCBmbGV4LXJvdy1yZXZlcnNlIixiYXNlOiJoLWZ1bGwiLHN0YXR1czoiZmxleC1jb2wganVzdGlmeS1lbmQgbWluLWgtZml0In19LGludmVydGVkOnt0cnVlOntzdGF0dXM6InNlbGYtZW5kIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7aW52ZXJ0ZWQ6ITAsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOntzdGVwOiJ0ZXh0LXN0YXJ0IixzdGF0dXM6ImZsZXgtcm93LXJldmVyc2UifX0se2ludmVydGVkOiEwLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsY2xhc3M6e3N0ZXBzOiJpdGVtcy1zdGFydCIsc3RhdHVzOiJmbGV4LWNvbC1yZXZlcnNlIn19LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToiMnhzIixjbGFzczoiaC1weCJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToieHMiLGNsYXNzOiJoLTAuNSJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToic20iLGNsYXNzOiJoLTEifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6Im1kIixjbGFzczoiaC0yIn0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJsZyIsY2xhc3M6ImgtMyJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToieGwiLGNsYXNzOiJoLTQifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6IjJ4bCIsY2xhc3M6ImgtNSJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6IjJ4cyIsY2xhc3M6InctcHgifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4cyIsY2xhc3M6InctMC41In0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToic20iLGNsYXNzOiJ3LTEifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJtZCIsY2xhc3M6InctMiJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6ImxnIixjbGFzczoidy0zIn0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToieGwiLGNsYXNzOiJ3LTQifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiIyeGwiLGNsYXNzOiJ3LTUifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoiY2Fyb3VzZWwiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSBkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTpydGw6YW5pbWF0ZS1bY2Fyb3VzZWwtcnRsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixhbmltYXRpb246ImNhcm91c2VsIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtjYXJvdXNlbC12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixhbmltYXRpb246ImNhcm91c2VsLWludmVyc2UiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2VfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIGRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOnJ0bDphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsYW5pbWF0aW9uOiJjYXJvdXNlbC1pbnZlcnNlIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoic3dpbmciLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW3N3aW5nXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixhbmltYXRpb246InN3aW5nIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtzd2luZy12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixhbmltYXRpb246ImVsYXN0aWMiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2VsYXN0aWNfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGFuaW1hdGlvbjoiZWxhc3RpYyIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bZWxhc3RpYy12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX1dLGRlZmF1bHRWYXJpYW50czp7YW5pbWF0aW9uOiJjYXJvdXNlbCIsY29sb3I6InByaW1hcnkiLHNpemU6Im1kIn19LHJjPXtfX25hbWU6IlVQcm9ncmVzcyIsX19zc3JJbmxpbmVSZW5kZXI6ITAscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1heDp7dHlwZTpbTnVtYmVyLEFycmF5XSxyZXF1aXJlZDohMX0sc3RhdHVzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGludmVydGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxhbmltYXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxnZXRWYWx1ZUxhYmVsOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxnZXRWYWx1ZVRleHQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6W051bWJlcixudWxsXSxyZXF1aXJlZDohMSxkZWZhdWx0Om51bGx9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm1heCJdLHNldHVwKGUse2VtaXQ6Y30pe2NvbnN0IGQ9ZSxoPWMsdj1Zbi51c2VTbG90cygpLHtkaXI6Yn09dXNlTG9jYWxlKCkseT11c2VBcHBDb25maWcoKSxFPXVzZUNvbXBvbmVudFVJKCJwcm9ncmVzcyIsZCksaz11c2VGb3J3YXJkUHJvcHNFbWl0cyhyZWFjdGl2ZVBpY2soZCwiZ2V0VmFsdWVMYWJlbCIsImdldFZhbHVlVGV4dCIsIm1vZGVsVmFsdWUiKSxoKSxfPVluLmNvbXB1dGVkKCgpPT5udWxsPT09ay52YWx1ZS5tb2RlbFZhbHVlKSxUPVluLmNvbXB1dGVkKCgpPT5BcnJheS5pc0FycmF5KGQubWF4KSksTj1Zbi5jb21wdXRlZCgoKT0+e2lmKCFfLnZhbHVlJiZkLm1heClyZXR1cm4gQXJyYXkuaXNBcnJheShkLm1heCk/ZC5tYXgubGVuZ3RoLTE6TnVtYmVyKGQubWF4KX0pLE89WW4uY29tcHV0ZWQoKCk9PntpZighXy52YWx1ZSlzd2l0Y2goITApe2Nhc2Ugay52YWx1ZS5tb2RlbFZhbHVlPDA6cmV0dXJuIDA7Y2FzZSBrLnZhbHVlLm1vZGVsVmFsdWU+KE4udmFsdWU/PzEwMCk6cmV0dXJuIDEwMDtkZWZhdWx0OnJldHVybiBNYXRoLnJvdW5kKGsudmFsdWUubW9kZWxWYWx1ZS8oTi52YWx1ZT8/MTAwKSoxMDApfX0pLFI9WW4uY29tcHV0ZWQoKCk9PntpZih2b2lkIDAhPT1PLnZhbHVlKXJldHVybiJ2ZXJ0aWNhbCI9PT1kLm9yaWVudGF0aW9uP3t0cmFuc2Zvcm06YHRyYW5zbGF0ZVkoJHtkLmludmVydGVkPyIiOiItIn0kezEwMC1PLnZhbHVlfSUpYH06InJ0bCI9PT1iLnZhbHVlP3t0cmFuc2Zvcm06YHRyYW5zbGF0ZVgoJHtkLmludmVydGVkPyItIjoiIn0kezEwMC1PLnZhbHVlfSUpYH06e3RyYW5zZm9ybTpgdHJhbnNsYXRlWCgke2QuaW52ZXJ0ZWQ/IiI6Ii0ifSR7MTAwLU8udmFsdWV9JSlgfX0pLE09WW4uY29tcHV0ZWQoKCk9Pntjb25zdCBlPWAke01hdGgubWF4KE8udmFsdWU/PzAsMCl9JWA7cmV0dXJuInZlcnRpY2FsIj09PWQub3JpZW50YXRpb24/e2hlaWdodDplfTp7d2lkdGg6ZX19KTtmdW5jdGlvbiBpc0FjdGl2ZShlKXtyZXR1cm4gZT09PU51bWJlcihkLm1vZGVsVmFsdWUpfWZ1bmN0aW9uIGlzRmlyc3QoZSl7cmV0dXJuIDA9PT1lfWZ1bmN0aW9uIHN0ZXBWYXJpYW50KGUpe3JldHVybiBpc0FjdGl2ZShlPU51bWJlcihlKSkmJiFpc0ZpcnN0KGUpPyJhY3RpdmUiOmlzRmlyc3QoZSkmJmlzQWN0aXZlKGUpPyJmaXJzdCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1OLnZhbHVlfShlKSYmaXNBY3RpdmUoZSk/Imxhc3QiOiJvdGhlciJ9Y29uc3QgRD1Zbi5jb21wdXRlZCgoKT0+Y2woe2V4dGVuZDpjbChvYyksLi4ueS51aT8ucHJvZ3Jlc3N8fHt9fSkoe2FuaW1hdGlvbjpkLmFuaW1hdGlvbixzaXplOmQuc2l6ZSxjb2xvcjpkLmNvbG9yLG9yaWVudGF0aW9uOmQub3JpZW50YXRpb24saW52ZXJ0ZWQ6ZC5pbnZlcnRlZH0pKTtyZXR1cm4oYyxoLGIseSk9PntoKHBlKFluLnVucmVmKGdzKSxZbi5tZXJnZVByb3BzKHthczplLmFzLCJkYXRhLW9yaWVudGF0aW9uIjplLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpELnZhbHVlLnJvb3Qoe2NsYXNzOltZbi51bnJlZihFKT8ucm9vdCxkLmNsYXNzXX0pfSx5KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsYix5KT0+e2lmKCFoKXJldHVybltfLnZhbHVlfHwhZS5zdGF0dXMmJiF2LnN0YXR1cz9Zbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jaygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6InN0YXR1cyIsY2xhc3M6RC52YWx1ZS5zdGF0dXMoe2NsYXNzOlluLnVucmVmKEUpPy5zdGF0dXN9KSxzdHlsZTpNLnZhbHVlfSxbWW4ucmVuZGVyU2xvdChjLiRzbG90cywic3RhdHVzIix7cGVyY2VudDpPLnZhbHVlfSwoKT0+W1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoTy52YWx1ZSkrIiUgIiwxKV0pXSw2KSksWW4uY3JlYXRlVk5vZGUoWW4udW5yZWYoX3MpLFluLm1lcmdlUHJvcHMoWW4udW5yZWYoaykse21heDpOLnZhbHVlLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpELnZhbHVlLmJhc2Uoe2NsYXNzOlluLnVucmVmKEUpPy5iYXNlfSksc3R5bGU6e3RyYW5zZm9ybToidHJhbnNsYXRlWigwKSJ9fSkse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVZOb2RlKFluLnVucmVmKFRzKSx7ImRhdGEtc2xvdCI6ImluZGljYXRvciIsY2xhc3M6RC52YWx1ZS5pbmRpY2F0b3Ioe2NsYXNzOlluLnVucmVmKEUpPy5pbmRpY2F0b3J9KSxzdHlsZTpSLnZhbHVlfSxudWxsLDgsWyJjbGFzcyIsInN0eWxlIl0pXSksXzoxfSwxNixbIm1heCIsImNsYXNzIl0pLFQudmFsdWU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90Ijoic3RlcHMiLGNsYXNzOkQudmFsdWUuc3RlcHMoe2NsYXNzOlluLnVucmVmKEUpPy5zdGVwc30pfSxbKFluLm9wZW5CbG9jayghMCksWW4uY3JlYXRlQmxvY2soWW4uRnJhZ21lbnQsbnVsbCxZbi5yZW5kZXJMaXN0KGUubWF4LChlLGQpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soImRpdiIse2tleTpkLCJkYXRhLXNsb3QiOiJzdGVwIixjbGFzczpELnZhbHVlLnN0ZXAoe2NsYXNzOlluLnVucmVmKEUpPy5zdGVwLHN0ZXA6c3RlcFZhcmlhbnQoZCl9KX0sW1luLnJlbmRlclNsb3QoYy4kc2xvdHMsYHN0ZXAtJHtkfWAse3N0ZXA6ZX0sKCk9PltZbi5jcmVhdGVUZXh0Vk5vZGUoWW4udG9EaXNwbGF5U3RyaW5nKGUpLDEpXSldLDIpKSksMTI4KSldLDIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXTtfLnZhbHVlfHwhZS5zdGF0dXMmJiF2LnN0YXR1cz9oKCJceDNjIS0tLS1ceDNlIik6KGgoYDxkaXYgZGF0YS1zbG90PSJzdGF0dXMiIGNsYXNzPSIke21lKEQudmFsdWUuc3RhdHVzKHtjbGFzczpZbi51bnJlZihFKT8uc3RhdHVzfSkpfSIgc3R5bGU9IiR7d2UoTS52YWx1ZSl9IiR7eX0+YCksZmUoYy4kc2xvdHMsInN0YXR1cyIse3BlcmNlbnQ6Ty52YWx1ZX0sKCk9PntoKGAke3llKE8udmFsdWUpfSUgYCl9LGgsYix5KSxoKCI8L2Rpdj4iKSksaChwZShZbi51bnJlZihfcyksWW4ubWVyZ2VQcm9wcyhZbi51bnJlZihrKSx7bWF4Ok4udmFsdWUsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkQudmFsdWUuYmFzZSh7Y2xhc3M6WW4udW5yZWYoRSk/LmJhc2V9KSxzdHlsZTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVaKDApIn19KSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihUcykseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczpZbi51bnJlZihFKT8uaW5kaWNhdG9yfSksc3R5bGU6Ui52YWx1ZX0sbnVsbCw4LFsiY2xhc3MiLCJzdHlsZSJdKV07YyhwZShZbi51bnJlZihUcykseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkQudmFsdWUuaW5kaWNhdG9yKHtjbGFzczpZbi51bnJlZihFKT8uaW5kaWNhdG9yfSksc3R5bGU6Ui52YWx1ZX0sbnVsbCxkLGgpKX0pLF86MX0sYix5KSksVC52YWx1ZT8oaChgPGRpdiBkYXRhLXNsb3Q9InN0ZXBzIiBjbGFzcz0iJHttZShELnZhbHVlLnN0ZXBzKHtjbGFzczpZbi51bnJlZihFKT8uc3RlcHN9KSl9IiR7eX0+XHgzYyEtLVstLVx4M2VgKSx4ZShlLm1heCwoZSxkKT0+e2goYDxkaXYgZGF0YS1zbG90PSJzdGVwIiBjbGFzcz0iJHttZShELnZhbHVlLnN0ZXAoe2NsYXNzOlluLnVucmVmKEUpPy5zdGVwLHN0ZXA6c3RlcFZhcmlhbnQoZCl9KSl9IiR7eX0+YCksZmUoYy4kc2xvdHMsYHN0ZXAtJHtkfWAse3N0ZXA6ZX0sKCk9PntoKGAke3llKGUpfWApfSxoLGIseSksaCgiPC9kaXY+Iil9KSxoKCJceDNjIS0tXS0tXHgzZTwvZGl2PiIpKTpoKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LGIpKX19fSxhYz1yYy5zZXR1cDtyYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Qcm9ncmVzcy52dWUiKSxhYz9hYyhlLGMpOnZvaWQgMH07Y29uc3QgaWM9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBncm91cCBvdmVyZmxvdy1oaWRkZW4gYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1sZyByaW5nIHJpbmctZGVmYXVsdCBwLTQgZmxleCBnYXAtMi41IGZvY3VzOm91dGxpbmUtbm9uZSIsd3JhcHBlcjoidy0wIGZsZXgtMSBmbGV4IGZsZXgtY29sIix0aXRsZToidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWhpZ2hsaWdodGVkIixkZXNjcmlwdGlvbjoidGV4dC1zbSB0ZXh0LW11dGVkIixpY29uOiJzaHJpbmstMCBzaXplLTUiLGF2YXRhcjoic2hyaW5rLTAiLGF2YXRhclNpemU6IjJ4bCIsYWN0aW9uczoiZmxleCBnYXAtMS41IHNocmluay0wIixwcm9ncmVzczoiYWJzb2x1dGUgaW5zZXQteC0wIGJvdHRvbS0wIixjbG9zZToicC0wIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5Ontyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkiLGljb246InRleHQtcHJpbWFyeSJ9LHNlY29uZGFyeTp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkiLGljb246InRleHQtc2Vjb25kYXJ5In0sc3VjY2Vzczp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIixpY29uOiJ0ZXh0LXN1Y2Nlc3MifSxpbmZvOntyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8iLGljb246InRleHQtaW5mbyJ9LHdhcm5pbmc6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyIsaWNvbjoidGV4dC13YXJuaW5nIn0sZXJyb3I6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IiLGljb246InRleHQtZXJyb3IifSxuZXV0cmFsOntyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIixpY29uOiJ0ZXh0LWhpZ2hsaWdodGVkIn19LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJpdGVtcy1jZW50ZXIiLGFjdGlvbnM6Iml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntyb290OiJpdGVtcy1zdGFydCIsYWN0aW9uczoiaXRlbXMtc3RhcnQgbXQtMi41In19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fX0sZGVmYXVsdFZhcmlhbnRzOntjb2xvcjoicHJpbWFyeSJ9fSxzYz17X19uYW1lOiJVVG9hc3QiLF9fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0aXRsZTp7dHlwZTpbU3RyaW5nLE9iamVjdCxGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOltTdHJpbmcsT2JqZWN0LEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0scHJvZ3Jlc3M6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBhdXNlIiwicmVzdW1lIiwic3dpcGVTdGFydCIsInN3aXBlTW92ZSIsInN3aXBlQ2FuY2VsIiwic3dpcGVFbmQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2V4cG9zZTpjLGVtaXQ6ZH0pe2NvbnN0IGg9ZSx2PWQsYj1Zbi51c2VTbG90cygpLHt0Onl9PXVzZUxvY2FsZSgpLEU9dXNlQXBwQ29uZmlnKCksaz11c2VDb21wb25lbnRVSSgidG9hc3QiLGgpLF89dXNlRm9yd2FyZFByb3BzRW1pdHMocmVhY3RpdmVQaWNrKGgsImFzIiwiZGVmYXVsdE9wZW4iLCJvcGVuIiwiZHVyYXRpb24iLCJ0eXBlIiksdiksVD1Zbi5jb21wdXRlZCgoKT0+Y2woe2V4dGVuZDpjbChpYyksLi4uRS51aT8udG9hc3R8fHt9fSkoe2NvbG9yOmguY29sb3Isb3JpZW50YXRpb246aC5vcmllbnRhdGlvbix0aXRsZTohIWgudGl0bGV8fCEhYi50aXRsZX0pKSxOPVluLnVzZVRlbXBsYXRlUmVmKCJyb290UmVmIiksTz1Zbi5yZWYoMCk7cmV0dXJuIGMoe2hlaWdodDpPfSksKGMsZCx2LFIpPT57ZChwZShZbi51bnJlZihVcyksWW4ubWVyZ2VQcm9wcyh7cmVmX2tleToicm9vdFJlZiIscmVmOk59LFluLnVucmVmKF8pLHsiZGF0YS1vcmllbnRhdGlvbiI6ZS5vcmllbnRhdGlvbiwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6VC52YWx1ZS5yb290KHtjbGFzczpbWW4udW5yZWYoayk/LnJvb3QsaC5jbGFzc119KSxzdHlsZTp7Ii0taGVpZ2h0IjpPLnZhbHVlfX0sUikse2RlZmF1bHQ6WW4ud2l0aEN0eCgoe3JlbWFpbmluZzpkLGR1cmF0aW9uOmgsb3Blbjp2fSxfLE4sTyk9PntpZighXylyZXR1cm5bWW4ucmVuZGVyU2xvdChjLiRzbG90cywibGVhZGluZyIse3VpOlQudmFsdWV9LCgpPT5bZS5hdmF0YXI/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKEJsLFluLm1lcmdlUHJvcHMoe2tleTowLHNpemU6WW4udW5yZWYoayk/LmF2YXRhclNpemV8fFQudmFsdWUuYXZhdGFyU2l6ZSgpfSxlLmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6VC52YWx1ZS5hdmF0YXIoe2NsYXNzOlluLnVucmVmKGspPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuaWNvbj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sod2wse2tleToxLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpULnZhbHVlLmljb24oe2NsYXNzOlluLnVucmVmKGspPy5pY29ufSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0pLFluLmNyZWF0ZVZOb2RlKCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6VC52YWx1ZS53cmFwcGVyKHtjbGFzczpZbi51bnJlZihrKT8ud3JhcHBlcn0pfSxbZS50aXRsZXx8Yi50aXRsZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoSHMpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOlQudmFsdWUudGl0bGUoe2NsYXNzOlluLnVucmVmKGspPy50aXRsZX0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChjLiRzbG90cywidGl0bGUiLHt9LCgpPT5bImZ1bmN0aW9uIj09dHlwZW9mIGUudGl0bGU/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KGUudGl0bGUoKSkse2tleTowfSkpOiJvYmplY3QiPT10eXBlb2YgZS50aXRsZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSkse2tleToxfSkpOihZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5GcmFnbWVudCx7a2V5OjJ9LFtZbi5jcmVhdGVUZXh0Vk5vZGUoWW4udG9EaXNwbGF5U3RyaW5nKGUudGl0bGUpLDEpXSw2NCkpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSxlLmRlc2NyaXB0aW9ufHxiLmRlc2NyaXB0aW9uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi51bnJlZihWcykse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6VC52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6WW4udW5yZWYoayk/LmRlc2NyaXB0aW9ufSl9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PlsiZnVuY3Rpb24iPT10eXBlb2YgZS5kZXNjcmlwdGlvbj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbigpKSx7a2V5OjB9KSk6Im9iamVjdCI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLmRlc2NyaXB0aW9uKSx7a2V5OjF9KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLkZyYWdtZW50LHtrZXk6Mn0sW1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldLDY0KSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApLCJ2ZXJ0aWNhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6VC52YWx1ZS5hY3Rpb25zKHtjbGFzczpZbi51bnJlZihrKT8uYWN0aW9uc30pfSxbWW4ucmVuZGVyU2xvdChjLiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsoWW4ub3BlbkJsb2NrKCEwKSxZbi5jcmVhdGVCbG9jayhZbi5GcmFnbWVudCxudWxsLFluLnJlbmRlckxpc3QoZS5hY3Rpb25zLChjLGQpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoRnMpLHtrZXk6ZCwiYWx0LXRleHQiOmMubGFiZWx8fCJBY3Rpb24iLCJhcy1jaGlsZCI6IiIsb25DbGljazpZbi53aXRoTW9kaWZpZXJzKCgpPT57fSxbInN0b3AiXSl9LHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5jcmVhdGVWTm9kZSh0YyxZbi5tZXJnZVByb3BzKHtzaXplOiJ4cyIsY29sb3I6ZS5jb2xvcn0se3JlZl9mb3I6ITB9LGMpLG51bGwsMTYsWyJjb2xvciJdKV0pLF86Mn0sMTAzMixbImFsdC10ZXh0Iiwib25DbGljayJdKSkpLDEyOCkpXSldLDIpKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSwyKSwiaG9yaXpvbnRhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyl8fGUuY2xvc2U/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6VC52YWx1ZS5hY3Rpb25zKHtjbGFzczpZbi51bnJlZihrKT8uYWN0aW9ucyxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCJ9KX0sWyJob3Jpem9udGFsIj09PWUub3JpZW50YXRpb24mJihlLmFjdGlvbnM/Lmxlbmd0aHx8Yi5hY3Rpb25zKT9Zbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJhY3Rpb25zIix7a2V5OjB9LCgpPT5bKFluLm9wZW5CbG9jayghMCksWW4uY3JlYXRlQmxvY2soWW4uRnJhZ21lbnQsbnVsbCxZbi5yZW5kZXJMaXN0KGUuYWN0aW9ucywoYyxkKT0+KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLnVucmVmKEZzKSx7a2V5OmQsImFsdC10ZXh0IjpjLmxhYmVsfHwiQWN0aW9uIiwiYXMtY2hpbGQiOiIiLG9uQ2xpY2s6WW4ud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUodGMsWW4ubWVyZ2VQcm9wcyh7c2l6ZToieHMiLGNvbG9yOmUuY29sb3J9LHtyZWZfZm9yOiEwfSxjKSxudWxsLDE2LFsiY29sb3IiXSldKSxfOjJ9LDEwMzIsWyJhbHQtdGV4dCIsIm9uQ2xpY2siXSkpKSwxMjgpKV0pOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5jbG9zZXx8Yi5jbG9zZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4udW5yZWYoJHMpLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4ucmVuZGVyU2xvdChjLiRzbG90cywiY2xvc2UiLHt1aTpULnZhbHVlfSwoKT0+W2UuY2xvc2U/KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKHRjLFluLm1lcmdlUHJvcHMoe2tleTowLGljb246ZS5jbG9zZUljb258fFluLnVucmVmKEUpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6WW4udW5yZWYoeSkoInRvYXN0LmNsb3NlIil9LCJvYmplY3QiPT10eXBlb2YgZS5jbG9zZT9lLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOlQudmFsdWUuY2xvc2Uoe2NsYXNzOlluLnVucmVmKGspPy5jbG9zZX0pLG9uQ2xpY2s6WW4ud2l0aE1vZGlmaWVycygoKT0+e30sWyJzdG9wIl0pfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiLCJvbkNsaWNrIl0pKTpZbi5jcmVhdGVDb21tZW50Vk5vZGUoIiIsITApXSldKSxfOjN9KSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV0sMikpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCksZS5wcm9ncmVzcyYmdiYmZD4wJiZoPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhyYyxZbi5tZXJnZVByb3BzKHtrZXk6MSwibW9kZWwtdmFsdWUiOmQvaCoxMDAsY29sb3I6ZS5jb2xvcn0sIm9iamVjdCI9PXR5cGVvZiBlLnByb2dyZXNzP2UucHJvZ3Jlc3M6e30se3NpemU6InNtIiwiZGF0YS1zbG90IjoicHJvZ3Jlc3MiLGNsYXNzOlQudmFsdWUucHJvZ3Jlc3Moe2NsYXNzOlluLnVucmVmKGspPy5wcm9ncmVzc30pfSksbnVsbCwxNixbIm1vZGVsLXZhbHVlIiwiY29sb3IiLCJjbGFzcyJdKSk6WW4uY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKV07ZmUoYy4kc2xvdHMsImxlYWRpbmciLHt1aTpULnZhbHVlfSwoKT0+e2UuYXZhdGFyP18ocGUoQmwsWW4ubWVyZ2VQcm9wcyh7c2l6ZTpZbi51bnJlZihrKT8uYXZhdGFyU2l6ZXx8VC52YWx1ZS5hdmF0YXJTaXplKCl9LGUuYXZhdGFyLHsiZGF0YS1zbG90IjoiYXZhdGFyIixjbGFzczpULnZhbHVlLmF2YXRhcih7Y2xhc3M6WW4udW5yZWYoayk/LmF2YXRhcn0pfSksbnVsbCxOLE8pKTplLmljb24/XyhwZSh3bCx7bmFtZTplLmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOlQudmFsdWUuaWNvbih7Y2xhc3M6WW4udW5yZWYoayk/Lmljb259KX0sbnVsbCxOLE8pKTpfKCJceDNjIS0tLS1ceDNlIil9LF8sTixPKSxfKGA8ZGl2IGRhdGEtc2xvdD0id3JhcHBlciIgY2xhc3M9IiR7bWUoVC52YWx1ZS53cmFwcGVyKHtjbGFzczpZbi51bnJlZihrKT8ud3JhcHBlcn0pKX0iJHtPfT5gKSxlLnRpdGxlfHxiLnRpdGxlP18ocGUoWW4udW5yZWYoSHMpLHsiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOlQudmFsdWUudGl0bGUoe2NsYXNzOlluLnVucmVmKGspPy50aXRsZX0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJ0aXRsZSIse30sKCk9PlsiZnVuY3Rpb24iPT10eXBlb2YgZS50aXRsZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSgpKSx7a2V5OjB9KSk6Im9iamVjdCI9PXR5cGVvZiBlLnRpdGxlPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLnRpdGxlKSx7a2V5OjF9KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLkZyYWdtZW50LHtrZXk6Mn0sW1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS50aXRsZSksMSldLDY0KSldKV07ZmUoYy4kc2xvdHMsInRpdGxlIix7fSwoKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiBlLnRpdGxlP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSgpKSxudWxsLG51bGwpLHYsYik6Im9iamVjdCI9PXR5cGVvZiBlLnRpdGxlP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS50aXRsZSksbnVsbCxudWxsKSx2LGIpOmgoYFx4M2MhLS1bLS1ceDNlJHt5ZShlLnRpdGxlKX1ceDNjIS0tXS0tXHgzZWApfSxoLHYsYil9KSxfOjJ9LE4sTykpOl8oIlx4M2MhLS0tLVx4M2UiKSxlLmRlc2NyaXB0aW9ufHxiLmRlc2NyaXB0aW9uP18ocGUoWW4udW5yZWYoVnMpLHsiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOlQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOlluLnVucmVmKGspPy5kZXNjcmlwdGlvbn0pfSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PlsiZnVuY3Rpb24iPT10eXBlb2YgZS5kZXNjcmlwdGlvbj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbigpKSx7a2V5OjB9KSk6Im9iamVjdCI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uPyhZbi5vcGVuQmxvY2soKSxZbi5jcmVhdGVCbG9jayhZbi5yZXNvbHZlRHluYW1pY0NvbXBvbmVudChlLmRlc2NyaXB0aW9uKSx7a2V5OjF9KSk6KFluLm9wZW5CbG9jaygpLFluLmNyZWF0ZUJsb2NrKFluLkZyYWdtZW50LHtrZXk6Mn0sW1luLmNyZWF0ZVRleHRWTm9kZShZbi50b0Rpc3BsYXlTdHJpbmcoZS5kZXNjcmlwdGlvbiksMSldLDY0KSldKV07ZmUoYy4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbigpKSxudWxsLG51bGwpLHYsYik6Im9iamVjdCI9PXR5cGVvZiBlLmRlc2NyaXB0aW9uP2hlKGgsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5kZXNjcmlwdGlvbiksbnVsbCxudWxsKSx2LGIpOmgoYFx4M2MhLS1bLS1ceDNlJHt5ZShlLmRlc2NyaXB0aW9uKX1ceDNjIS0tXS0tXHgzZWApfSxoLHYsYil9KSxfOjJ9LE4sTykpOl8oIlx4M2MhLS0tLVx4M2UiKSwidmVydGljYWwiPT09ZS5vcmllbnRhdGlvbiYmKGUuYWN0aW9ucz8ubGVuZ3RofHxiLmFjdGlvbnMpPyhfKGA8ZGl2IGRhdGEtc2xvdD0iYWN0aW9ucyIgY2xhc3M9IiR7bWUoVC52YWx1ZS5hY3Rpb25zKHtjbGFzczpZbi51bnJlZihrKT8uYWN0aW9uc30pKX0iJHtPfT5gKSxmZShjLiRzbG90cywiYWN0aW9ucyIse30sKCk9PntfKCJceDNjIS0tWy0tXHgzZSIpLHhlKGUuYWN0aW9ucywoYyxkKT0+e18ocGUoWW4udW5yZWYoRnMpLHtrZXk6ZCwiYWx0LXRleHQiOmMubGFiZWx8fCJBY3Rpb24iLCJhcy1jaGlsZCI6IiIsb25DbGljazooKT0+e319LHtkZWZhdWx0OlluLndpdGhDdHgoKGQsaCx2LGIpPT57aWYoIWgpcmV0dXJuW1luLmNyZWF0ZVZOb2RlKHRjLFluLm1lcmdlUHJvcHMoe3NpemU6InhzIixjb2xvcjplLmNvbG9yfSx7cmVmX2ZvcjohMH0sYyksbnVsbCwxNixbImNvbG9yIl0pXTtoKHBlKHRjLFluLm1lcmdlUHJvcHMoe3NpemU6InhzIixjb2xvcjplLmNvbG9yfSx7cmVmX2ZvcjohMH0sYyksbnVsbCx2LGIpKX0pLF86Mn0sTixPKSl9KSxfKCJceDNjIS0tXS0tXHgzZSIpfSxfLE4sTyksXygiPC9kaXY+IikpOl8oIlx4M2MhLS0tLVx4M2UiKSxfKCI8L2Rpdj4iKSwiaG9yaXpvbnRhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyl8fGUuY2xvc2U/KF8oYDxkaXYgZGF0YS1zbG90PSJhY3Rpb25zIiBjbGFzcz0iJHttZShULnZhbHVlLmFjdGlvbnMoe2NsYXNzOlluLnVucmVmKGspPy5hY3Rpb25zLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIn0pKX0iJHtPfT5gKSwiaG9yaXpvbnRhbCI9PT1lLm9yaWVudGF0aW9uJiYoZS5hY3Rpb25zPy5sZW5ndGh8fGIuYWN0aW9ucyk/ZmUoYy4kc2xvdHMsImFjdGlvbnMiLHt9LCgpPT57XygiXHgzYyEtLVstLVx4M2UiKSx4ZShlLmFjdGlvbnMsKGMsZCk9PntfKHBlKFluLnVucmVmKEZzKSx7a2V5OmQsImFsdC10ZXh0IjpjLmxhYmVsfHwiQWN0aW9uIiwiYXMtY2hpbGQiOiIiLG9uQ2xpY2s6KCk9Pnt9fSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5jcmVhdGVWTm9kZSh0YyxZbi5tZXJnZVByb3BzKHtzaXplOiJ4cyIsY29sb3I6ZS5jb2xvcn0se3JlZl9mb3I6ITB9LGMpLG51bGwsMTYsWyJjb2xvciJdKV07aChwZSh0YyxZbi5tZXJnZVByb3BzKHtzaXplOiJ4cyIsY29sb3I6ZS5jb2xvcn0se3JlZl9mb3I6ITB9LGMpLG51bGwsdixiKSl9KSxfOjJ9LE4sTykpfSksXygiXHgzYyEtLV0tLVx4M2UiKX0sXyxOLE8pOl8oIlx4M2MhLS0tLVx4M2UiKSxlLmNsb3NlfHxiLmNsb3NlP18ocGUoWW4udW5yZWYoJHMpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChkLGgsdixiKT0+e2lmKCFoKXJldHVybltZbi5yZW5kZXJTbG90KGMuJHNsb3RzLCJjbG9zZSIse3VpOlQudmFsdWV9LCgpPT5bZS5jbG9zZT8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2sodGMsWW4ubWVyZ2VQcm9wcyh7a2V5OjAsaWNvbjplLmNsb3NlSWNvbnx8WW4udW5yZWYoRSkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjpZbi51bnJlZih5KSgidG9hc3QuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBlLmNsb3NlP2UuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6VC52YWx1ZS5jbG9zZSh7Y2xhc3M6WW4udW5yZWYoayk/LmNsb3NlfSksb25DbGljazpZbi53aXRoTW9kaWZpZXJzKCgpPT57fSxbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOlluLmNyZWF0ZUNvbW1lbnRWTm9kZSgiIiwhMCldKV07ZmUoYy4kc2xvdHMsImNsb3NlIix7dWk6VC52YWx1ZX0sKCk9PntlLmNsb3NlP2gocGUodGMsWW4ubWVyZ2VQcm9wcyh7aWNvbjplLmNsb3NlSWNvbnx8WW4udW5yZWYoRSkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjpZbi51bnJlZih5KSgidG9hc3QuY2xvc2UiKX0sIm9iamVjdCI9PXR5cGVvZiBlLmNsb3NlP2UuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6VC52YWx1ZS5jbG9zZSh7Y2xhc3M6WW4udW5yZWYoayk/LmNsb3NlfSksb25DbGljazooKT0+e319KSxudWxsLHYsYikpOmgoIlx4M2MhLS0tLVx4M2UiKX0saCx2LGIpfSksXzoyfSxOLE8pKTpfKCJceDNjIS0tLS1ceDNlIiksXygiPC9kaXY+IikpOl8oIlx4M2MhLS0tLVx4M2UiKSxlLnByb2dyZXNzJiZ2JiZkPjAmJmg/XyhwZShyYyxZbi5tZXJnZVByb3BzKHsibW9kZWwtdmFsdWUiOmQvaCoxMDAsY29sb3I6ZS5jb2xvcn0sIm9iamVjdCI9PXR5cGVvZiBlLnByb2dyZXNzP2UucHJvZ3Jlc3M6e30se3NpemU6InNtIiwiZGF0YS1zbG90IjoicHJvZ3Jlc3MiLGNsYXNzOlQudmFsdWUucHJvZ3Jlc3Moe2NsYXNzOlluLnVucmVmKGspPy5wcm9ncmVzc30pfSksbnVsbCxOLE8pKTpfKCJceDNjIS0tLS1ceDNlIil9KSxfOjN9LHYpKX19fSxsYz1zYy5zZXR1cDtzYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9Ub2FzdC52dWUiKSxsYz9sYyhlLGMpOnZvaWQgMH07Y29uc3QgY2M9e3Nsb3RzOnt2aWV3cG9ydDoiZml4ZWQgZmxleCBmbGV4LWNvbCB3LVtjYWxjKDEwMCUtMnJlbSldIHNtOnctOTYgei1bMTAwXSBkYXRhLVtleHBhbmRlZD10cnVlXTpoLSgtLWhlaWdodCkgZm9jdXM6b3V0bGluZS1ub25lIixiYXNlOiJwb2ludGVyLWV2ZW50cy1hdXRvIGFic29sdXRlIGluc2V0LXgtMCB6LSgtLWluZGV4KSB0cmFuc2Zvcm0tKC0tdHJhbnNmb3JtKSBkYXRhLVtleHBhbmRlZD1mYWxzZV06ZGF0YS1bZnJvbnQ9ZmFsc2VdOmgtKC0tZnJvbnQtaGVpZ2h0KSBkYXRhLVtleHBhbmRlZD1mYWxzZV06ZGF0YS1bZnJvbnQ9ZmFsc2VdOio6b3BhY2l0eS0wIGRhdGEtW2Zyb250PWZhbHNlXToqOnRyYW5zaXRpb24tb3BhY2l0eSBkYXRhLVtmcm9udD1mYWxzZV06KjpkdXJhdGlvbi0xMDAgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVt0b2FzdC1jbG9zZWRfMjAwbXNfZWFzZS1pbi1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06ZGF0YS1bZXhwYW5kZWQ9ZmFsc2VdOmRhdGEtW2Zyb250PWZhbHNlXTphbmltYXRlLVt0b2FzdC1jb2xsYXBzZWQtY2xvc2VkXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1vcGVuXTpkYXRhLVtwdWxzaW5nPW9kZF06YW5pbWF0ZS1bdG9hc3QtcHVsc2UtYV8zMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9b3Blbl06ZGF0YS1bcHVsc2luZz1ldmVuXTphbmltYXRlLVt0b2FzdC1wdWxzZS1iXzMwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzd2lwZT1tb3ZlXTp0cmFuc2l0aW9uLW5vbmUgdHJhbnNpdGlvbi1bdHJhbnNmb3JtLHRyYW5zbGF0ZSxoZWlnaHRdIGR1cmF0aW9uLTIwMCBlYXNlLW91dCJ9LHZhcmlhbnRzOntwb3NpdGlvbjp7InRvcC1sZWZ0Ijp7dmlld3BvcnQ6ImxlZnQtNCJ9LCJ0b3AtY2VudGVyIjp7dmlld3BvcnQ6ImxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIn0sInRvcC1yaWdodCI6e3ZpZXdwb3J0OiJyaWdodC00In0sImJvdHRvbS1sZWZ0Ijp7dmlld3BvcnQ6ImxlZnQtNCJ9LCJib3R0b20tY2VudGVyIjp7dmlld3BvcnQ6ImxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIn0sImJvdHRvbS1yaWdodCI6e3ZpZXdwb3J0OiJyaWdodC00In19LHN3aXBlRGlyZWN0aW9uOnt1cDoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS11cF8yMDBtc19lYXNlLW91dF0iLHJpZ2h0OiJkYXRhLVtzd2lwZT1lbmRdOmFuaW1hdGUtW3RvYXN0LXNsaWRlLXJpZ2h0XzIwMG1zX2Vhc2Utb3V0XSIsZG93bjoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS1kb3duXzIwMG1zX2Vhc2Utb3V0XSIsbGVmdDoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS1sZWZ0XzIwMG1zX2Vhc2Utb3V0XSJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7cG9zaXRpb246WyJ0b3AtbGVmdCIsInRvcC1jZW50ZXIiLCJ0b3AtcmlnaHQiXSxjbGFzczp7dmlld3BvcnQ6InRvcC00IixiYXNlOiJ0b3AtMCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVt0b2FzdC1zbGlkZS1pbi1mcm9tLXRvcF8yMDBtc19lYXNlLWluLW91dF0ifX0se3Bvc2l0aW9uOlsiYm90dG9tLWxlZnQiLCJib3R0b20tY2VudGVyIiwiYm90dG9tLXJpZ2h0Il0sY2xhc3M6e3ZpZXdwb3J0OiJib3R0b20tNCIsYmFzZToiYm90dG9tLTAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtaW4tZnJvbS1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRdIn19LHtzd2lwZURpcmVjdGlvbjpbImxlZnQiLCJyaWdodCJdLGNsYXNzOiJkYXRhLVtzd2lwZT1tb3ZlXTp0cmFuc2xhdGUteC0oLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteCkgZGF0YS1bc3dpcGU9ZW5kXTp0cmFuc2xhdGUteC0oLS1yZWthLXRvYXN0LXN3aXBlLWVuZC14KSBkYXRhLVtzd2lwZT1jYW5jZWxdOnRyYW5zbGF0ZS14LTAifSx7c3dpcGVEaXJlY3Rpb246WyJ1cCIsImRvd24iXSxjbGFzczoiZGF0YS1bc3dpcGU9bW92ZV06dHJhbnNsYXRlLXktKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXkpIGRhdGEtW3N3aXBlPWVuZF06dHJhbnNsYXRlLXktKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteSkgZGF0YS1bc3dpcGU9Y2FuY2VsXTp0cmFuc2xhdGUteS0wIn1dLGRlZmF1bHRWYXJpYW50czp7cG9zaXRpb246ImJvdHRvbS1yaWdodCJ9fSx1Yz17bmFtZToiVG9hc3RlciJ9LGRjPU9iamVjdC5hc3NpZ24odWMse19fc3NySW5saW5lUmVuZGVyOiEwLHByb3BzOntwb3NpdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHBhbmQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxwcm9ncmVzczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxtYXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjVlM30sZGlzYWJsZVN3aXBlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN3aXBlVGhyZXNob2xkOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSx7dG9hc3RzOmQscmVtb3ZlOmh9PXVzZVRvYXN0KCksdj11c2VBcHBDb25maWcoKSxiPXVzZUNvbXBvbmVudFVJKCJ0b2FzdGVyIixjKTtZbi5wcm92aWRlKG9sLFluLnRvUmVmKCgpPT5jLm1heCkpO2NvbnN0IHk9dXNlRm9yd2FyZFByb3BzKHJlYWN0aXZlUGljayhjLCJkdXJhdGlvbiIsImxhYmVsIiwic3dpcGVUaHJlc2hvbGQiLCJkaXNhYmxlU3dpcGUiKSksRT11c2VQb3J0YWwoWW4udG9SZWYoKCk9PmMucG9ydGFsKSksaz1Zbi5jb21wdXRlZCgoKT0+e3N3aXRjaChjLnBvc2l0aW9uKXtjYXNlInRvcC1jZW50ZXIiOnJldHVybiJ1cCI7Y2FzZSJ0b3AtcmlnaHQiOmNhc2UiYm90dG9tLXJpZ2h0IjpyZXR1cm4icmlnaHQiO2Nhc2UiYm90dG9tLWNlbnRlciI6cmV0dXJuImRvd24iO2Nhc2UidG9wLWxlZnQiOmNhc2UiYm90dG9tLWxlZnQiOnJldHVybiJsZWZ0In1yZXR1cm4icmlnaHQifSksXz1Zbi5jb21wdXRlZCgoKT0+Y2woe2V4dGVuZDpjbChjYyksLi4udi51aT8udG9hc3Rlcnx8e319KSh7cG9zaXRpb246Yy5wb3NpdGlvbixzd2lwZURpcmVjdGlvbjprLnZhbHVlfSkpO2Z1bmN0aW9uIG9uVXBkYXRlT3BlbihlLGMpe2V8fGgoYyl9Y29uc3QgVD1Zbi5yZWYoITEpLE49WW4uY29tcHV0ZWQoKCk9PmMuZXhwYW5kfHxULnZhbHVlKSxPPVluLnJlZihbXSksUj1Zbi5jb21wdXRlZCgoKT0+Ty52YWx1ZS5yZWR1Y2UoKGUse2hlaWdodDpjfSk9PmUrYysxNiwwKSksTT1Zbi5jb21wdXRlZCgoKT0+Ty52YWx1ZVtPLnZhbHVlLmxlbmd0aC0xXT8uaGVpZ2h0fHwwKTtmdW5jdGlvbiBnZXRPZmZzZXQoZSl7cmV0dXJuIE8udmFsdWUuc2xpY2UoZSsxKS5yZWR1Y2UoKGUse2hlaWdodDpjfSk9PmUrYysxNiwwKX1yZXR1cm4oaCx2LEQsTCk9Pnt2KHBlKFluLnVucmVmKElzKSxZbi5tZXJnZVByb3BzKHsic3dpcGUtZGlyZWN0aW9uIjprLnZhbHVlfSxZbi51bnJlZih5KSxMKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCh2LHksayxEKT0+e2lmKCF5KXJldHVybltZbi5yZW5kZXJTbG90KGguJHNsb3RzLCJkZWZhdWx0IiksKFluLm9wZW5CbG9jayghMCksWW4uY3JlYXRlQmxvY2soWW4uRnJhZ21lbnQsbnVsbCxZbi5yZW5kZXJMaXN0KFluLnVucmVmKGQpLChjLGgpPT4oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soc2MsWW4ubWVyZ2VQcm9wcyh7a2V5OmMuaWQscmVmX2ZvcjohMCxyZWZfa2V5OiJyZWZzIixyZWY6Tyxwcm9ncmVzczplLnByb2dyZXNzfSx7cmVmX2ZvcjohMH0sWW4udW5yZWYob21pdCkoYyxbImlkIiwiY2xvc2UiLCJfZHVwbGljYXRlIiwiX3VwZGF0ZWQiXSkse2Nsb3NlOmMuY2xvc2UsImRhdGEtZXhwYW5kZWQiOk4udmFsdWUsImRhdGEtZnJvbnQiOiFOLnZhbHVlJiZoPT09WW4udW5yZWYoZCkubGVuZ3RoLTEsImRhdGEtcHVsc2luZyI6Yy5fZHVwbGljYXRlP2MuX2R1cGxpY2F0ZSUyPT0wPyJldmVuIjoib2RkIjp2b2lkIDAsc3R5bGU6eyItLWluZGV4IjpoLVluLnVucmVmKGQpLmxlbmd0aCtZbi51bnJlZihkKS5sZW5ndGgsIi0tYmVmb3JlIjpZbi51bnJlZihkKS5sZW5ndGgtMS1oLCItLW9mZnNldCI6Z2V0T2Zmc2V0KGgpLCItLXNjYWxlIjpOLnZhbHVlPyIxIjoiY2FsYygxIC0gdmFyKC0tYmVmb3JlKSAqIHZhcigtLXNjYWxlLWZhY3RvcikpIiwiLS10cmFuc2xhdGUiOk4udmFsdWU/ImNhbGModmFyKC0tb2Zmc2V0KSAqIHZhcigtLXRyYW5zbGF0ZS1mYWN0b3IpKSI6ImNhbGModmFyKC0tYmVmb3JlKSAqIHZhcigtLWdhcCkpIiwiLS10cmFuc2Zvcm0iOiJ0cmFuc2xhdGVZKHZhcigtLXRyYW5zbGF0ZSkpIHNjYWxlKHZhcigtLXNjYWxlKSkifSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Xy52YWx1ZS5iYXNlKHtjbGFzczpbWW4udW5yZWYoYik/LmJhc2UsYy5vbkNsaWNrPyJjdXJzb3ItcG9pbnRlciI6dm9pZCAwXX0pLCJvblVwZGF0ZTpvcGVuIjplPT5vblVwZGF0ZU9wZW4oZSxjLmlkKSxvbkNsaWNrOmU9PmMub25DbGljayYmYy5vbkNsaWNrKGMpfSksbnVsbCwxNixbInByb2dyZXNzIiwiY2xvc2UiLCJkYXRhLWV4cGFuZGVkIiwiZGF0YS1mcm9udCIsImRhdGEtcHVsc2luZyIsInN0eWxlIiwiY2xhc3MiLCJvblVwZGF0ZTpvcGVuIiwib25DbGljayJdKSkpLDEyOCkpLFluLmNyZWF0ZVZOb2RlKFluLnVucmVmKHpzKSxZbi51bnJlZihFKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bWW4uY3JlYXRlVk5vZGUoWW4udW5yZWYoWHMpLHsiZGF0YS1leHBhbmRlZCI6Ti52YWx1ZSwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOl8udmFsdWUudmlld3BvcnQoe2NsYXNzOltZbi51bnJlZihiKT8udmlld3BvcnQsYy5jbGFzc119KSxzdHlsZTp7Ii0tc2NhbGUtZmFjdG9yIjoiMC4wNSIsIi0tdHJhbnNsYXRlLWZhY3RvciI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjFweCI6Ii0xcHgiLCItLWdhcCI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjE2cHgiOiItMTZweCIsIi0tZnJvbnQtaGVpZ2h0IjpgJHtNLnZhbHVlfXB4YCwiLS1oZWlnaHQiOmAke1IudmFsdWV9cHhgfSxvbk1vdXNlZW50ZXI6ZT0+VC52YWx1ZT0hMCxvbk1vdXNlbGVhdmU6ZT0+VC52YWx1ZT0hMX0sbnVsbCw4LFsiZGF0YS1leHBhbmRlZCIsImNsYXNzIiwic3R5bGUiLCJvbk1vdXNlZW50ZXIiLCJvbk1vdXNlbGVhdmUiXSldKSxfOjF9LDE2KV07ZmUoaC4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwseSxrLEQpLHkoIlx4M2MhLS1bLS1ceDNlIikseGUoWW4udW5yZWYoZCksKGMsaCk9Pnt5KHBlKHNjLFluLm1lcmdlUHJvcHMoe2tleTpjLmlkLHJlZl9mb3I6ITAscmVmX2tleToicmVmcyIscmVmOk8scHJvZ3Jlc3M6ZS5wcm9ncmVzc30se3JlZl9mb3I6ITB9LFluLnVucmVmKG9taXQpKGMsWyJpZCIsImNsb3NlIiwiX2R1cGxpY2F0ZSIsIl91cGRhdGVkIl0pLHtjbG9zZTpjLmNsb3NlLCJkYXRhLWV4cGFuZGVkIjpOLnZhbHVlLCJkYXRhLWZyb250IjohTi52YWx1ZSYmaD09PVluLnVucmVmKGQpLmxlbmd0aC0xLCJkYXRhLXB1bHNpbmciOmMuX2R1cGxpY2F0ZT9jLl9kdXBsaWNhdGUlMj09MD8iZXZlbiI6Im9kZCI6dm9pZCAwLHN0eWxlOnsiLS1pbmRleCI6aC1Zbi51bnJlZihkKS5sZW5ndGgrWW4udW5yZWYoZCkubGVuZ3RoLCItLWJlZm9yZSI6WW4udW5yZWYoZCkubGVuZ3RoLTEtaCwiLS1vZmZzZXQiOmdldE9mZnNldChoKSwiLS1zY2FsZSI6Ti52YWx1ZT8iMSI6ImNhbGMoMSAtIHZhcigtLWJlZm9yZSkgKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIsIi0tdHJhbnNsYXRlIjpOLnZhbHVlPyJjYWxjKHZhcigtLW9mZnNldCkgKiB2YXIoLS10cmFuc2xhdGUtZmFjdG9yKSkiOiJjYWxjKHZhcigtLWJlZm9yZSkgKiB2YXIoLS1nYXApKSIsIi0tdHJhbnNmb3JtIjoidHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKSBzY2FsZSh2YXIoLS1zY2FsZSkpIn0sImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOl8udmFsdWUuYmFzZSh7Y2xhc3M6W1luLnVucmVmKGIpPy5iYXNlLGMub25DbGljaz8iY3Vyc29yLXBvaW50ZXIiOnZvaWQgMF19KSwib25VcGRhdGU6b3BlbiI6ZT0+b25VcGRhdGVPcGVuKGUsYy5pZCksb25DbGljazplPT5jLm9uQ2xpY2smJmMub25DbGljayhjKX0pLG51bGwsayxEKSl9KSx5KCJceDNjIS0tXS0tXHgzZSIpLHkocGUoWW4udW5yZWYoenMpLFluLnVucmVmKEUpLHtkZWZhdWx0OlluLndpdGhDdHgoKGQsaCx2LHkpPT57aWYoIWgpcmV0dXJuW1luLmNyZWF0ZVZOb2RlKFluLnVucmVmKFhzKSx7ImRhdGEtZXhwYW5kZWQiOk4udmFsdWUsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpfLnZhbHVlLnZpZXdwb3J0KHtjbGFzczpbWW4udW5yZWYoYik/LnZpZXdwb3J0LGMuY2xhc3NdfSksc3R5bGU6eyItLXNjYWxlLWZhY3RvciI6IjAuMDUiLCItLXRyYW5zbGF0ZS1mYWN0b3IiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxcHgiOiItMXB4IiwiLS1nYXAiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxNnB4IjoiLTE2cHgiLCItLWZyb250LWhlaWdodCI6YCR7TS52YWx1ZX1weGAsIi0taGVpZ2h0IjpgJHtSLnZhbHVlfXB4YH0sb25Nb3VzZWVudGVyOmU9PlQudmFsdWU9ITAsb25Nb3VzZWxlYXZlOmU9PlQudmFsdWU9ITF9LG51bGwsOCxbImRhdGEtZXhwYW5kZWQiLCJjbGFzcyIsInN0eWxlIiwib25Nb3VzZWVudGVyIiwib25Nb3VzZWxlYXZlIl0pXTtoKHBlKFluLnVucmVmKFhzKSx7ImRhdGEtZXhwYW5kZWQiOk4udmFsdWUsImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpfLnZhbHVlLnZpZXdwb3J0KHtjbGFzczpbWW4udW5yZWYoYik/LnZpZXdwb3J0LGMuY2xhc3NdfSksc3R5bGU6eyItLXNjYWxlLWZhY3RvciI6IjAuMDUiLCItLXRyYW5zbGF0ZS1mYWN0b3IiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxcHgiOiItMXB4IiwiLS1nYXAiOmUucG9zaXRpb24/LnN0YXJ0c1dpdGgoInRvcCIpPyIxNnB4IjoiLTE2cHgiLCItLWZyb250LWhlaWdodCI6YCR7TS52YWx1ZX1weGAsIi0taGVpZ2h0IjpgJHtSLnZhbHVlfXB4YH0sb25Nb3VzZWVudGVyOmU9PlQudmFsdWU9ITAsb25Nb3VzZWxlYXZlOmU9PlQudmFsdWU9ITF9LG51bGwsdix5KSl9KSxfOjF9LGssRCkpfSksXzozfSxEKSl9fX0pLHBjPWRjLnNldHVwO2RjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vQG51eHQrdWlANC43LjBfZWQwNWJiNTFiMDIxZjc4Y2Q1YmJkNGRiMjAzZjY2ODIvbm9kZV9tb2R1bGVzL0BudXh0L3VpL2Rpc3QvcnVudGltZS9jb21wb25lbnRzL1RvYXN0ZXIudnVlIikscGM/cGMoZSxjKTp2b2lkIDB9O2NvbnN0IGZjPU9iamVjdC5hc3NpZ24oZGMse19fbmFtZToiVVRvYXN0ZXIifSk7ZnVuY3Rpb24gX3VzZU92ZXJsYXkoKXtjb25zdCBlPVluLnNoYWxsb3dSZWFjdGl2ZShbXSksb3Blbj0oZSxjKT0+e2NvbnN0IGQ9Z2V0T3ZlcmxheShlKTtkLnByb3BzPWM/ey4uLmQub3JpZ2luYWxQcm9wcywuLi5jfTp7Li4uZC5vcmlnaW5hbFByb3BzfSxkLmlzT3Blbj0hMCxkLmlzTW91bnRlZD0hMDtjb25zdCBoPW5ldyBQcm9taXNlKGU9PmQucmVzb2x2ZVByb21pc2U9ZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oaCx7aWQ6ZSxpc01vdW50ZWQ6ZC5pc01vdW50ZWQsaXNPcGVuOmQuaXNPcGVuLHJlc3VsdDpofSl9LGNsb3NlPShlLGMpPT57Y29uc3QgZD1nZXRPdmVybGF5KGUpO2QuaXNPcGVuPSExLGQucmVzb2x2ZVByb21pc2UmJihkLnJlc29sdmVQcm9taXNlKGMpLGQucmVzb2x2ZVByb21pc2U9dm9pZCAwKX0scGF0Y2g9KGUsYyk9Pntjb25zdCBkPWdldE92ZXJsYXkoZSk7ZC5wcm9wcz17Li4uZC5wcm9wcywuLi5jfX0sZ2V0T3ZlcmxheT1jPT57Y29uc3QgZD1lLmZpbmQoZT0+ZS5pZD09PWMpO2lmKCFkKXRocm93IG5ldyBFcnJvcigiT3ZlcmxheSBub3QgZm91bmQiKTtyZXR1cm4gZH07cmV0dXJue292ZXJsYXlzOmUsb3BlbjpvcGVuLGNsb3NlOmNsb3NlLGNsb3NlQWxsOigpPT57ZS5mb3JFYWNoKGU9PmNsb3NlKGUuaWQpKX0sY3JlYXRlOihjLGQpPT57Y29uc3R7cHJvcHM6aCxkZWZhdWx0T3Blbjp2LGRlc3Ryb3lPbkNsb3NlOmJ9PWR8fHt9LHk9WW4ucmVhY3RpdmUoe2lkOlN5bWJvbCgiIiksaXNPcGVuOiEhdixjb21wb25lbnQ6WW4ubWFya1JhdyhjKSxpc01vdW50ZWQ6ISF2LGRlc3Ryb3lPbkNsb3NlOiEhYixvcmlnaW5hbFByb3BzOmh8fHt9LHByb3BzOnsuLi5ofX0pO3JldHVybiBlLnB1c2goeSksey4uLnksb3BlbjplPT5vcGVuKHkuaWQsZSksY2xvc2U6ZT0+Y2xvc2UoeS5pZCxlKSxwYXRjaDplPT5wYXRjaCh5LmlkLGUpfX0scGF0Y2g6cGF0Y2gsdW5tb3VudDpjPT57Y29uc3QgZD1nZXRPdmVybGF5KGMpO2lmKGQuaXNNb3VudGVkPSExLGQuZGVzdHJveU9uQ2xvc2Upe2NvbnN0IGQ9ZS5maW5kSW5kZXgoZT0+ZS5pZD09PWMpO2Uuc3BsaWNlKGQsMSl9fSxpc09wZW46ZT0+Z2V0T3ZlcmxheShlKS5pc09wZW59fWNvbnN0IG1jPWNyZWF0ZVNoYXJlZENvbXBvc2FibGUoX3VzZU92ZXJsYXkpLGhjPXtfX25hbWU6IlVPdmVybGF5UHJvdmlkZXIiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKGUpe2NvbnN0e292ZXJsYXlzOmMsdW5tb3VudDpkLGNsb3NlOmh9PW1jKCksdj1Zbi5jb21wdXRlZCgoKT0+Yy5maWx0ZXIoZT0+ZS5pc01vdW50ZWQpKTtyZXR1cm4oZSxjLGIseSk9PntjKCJceDNjIS0tWy0tXHgzZSIpLHhlKHYudmFsdWUsZT0+e2hlKGMsWW4uY3JlYXRlVk5vZGUoWW4ucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoZS5jb21wb25lbnQpLFluLm1lcmdlUHJvcHMoe2tleTplLmlkfSx7cmVmX2ZvcjohMH0sZS5wcm9wcyx7b3BlbjplLmlzT3Blbiwib25VcGRhdGU6b3BlbiI6Yz0+ZS5pc09wZW49YyxvbkNsb3NlOmM9PigoZSxjKT0+e2goZSxjKX0pKGUuaWQsYyksIm9uQWZ0ZXI6bGVhdmUiOmM9PntyZXR1cm4gdj1lLmlkLGgodiksdm9pZCBkKHYpO3ZhciB2fX0pLG51bGwpLGIpfSksYygiXHgzYyEtLV0tLVx4M2UiKX19fSxnYz1oYy5zZXR1cDtoYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9PdmVybGF5UHJvdmlkZXIudnVlIiksZ2M/Z2MoZSxjKTp2b2lkIDB9O2NvbnN0IHZjPXtuYW1lOiJBcHAifSxiYz1PYmplY3QuYXNzaWduKHZjLHtfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7dG9vbHRpcDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHRvYXN0ZXI6e3R5cGU6W09iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sbG9jYWxlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ImJvZHkifSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzY3JvbGxCb2R5Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LG5vbmNlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSxkPXVzZUZvcndhcmRQcm9wcyhyZWFjdGl2ZVBpY2soYywic2Nyb2xsQm9keSIpKSxoPVluLnRvUmVmKCgpPT5jLnRvb2x0aXApLHY9WW4udG9SZWYoKCk9PmMudG9hc3RlciksYj1Zbi50b1JlZigoKT0+Yy5sb2NhbGUpO1luLnByb3ZpZGUoZWwsYik7Y29uc3QgeT1Zbi50b1JlZigoKT0+Yy5wb3J0YWwpO3JldHVybiBZbi5wcm92aWRlKHRsLHkpLCh5LEUsayxfKT0+e0UocGUoWW4udW5yZWYocHMpLFluLm1lcmdlUHJvcHMoeyJ1c2UtaWQiOigpPT5Zbi51c2VJZCgpLGRpcjpjLmRpcnx8Yi52YWx1ZT8uZGlyLGxvY2FsZTpiLnZhbHVlPy5jb2RlfSxZbi51bnJlZihkKSxfKSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChjLGQsYixFKT0+e2lmKCFkKXJldHVybltZbi5jcmVhdGVWTm9kZShZbi51bnJlZihRcyksaC52YWx1ZSx7ZGVmYXVsdDpZbi53aXRoQ3R4KCgpPT5bbnVsbCE9PWUudG9hc3Rlcj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soZmMsWW4ubWVyZ2VQcm9wcyh7a2V5OjB9LHYudmFsdWUpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KHkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6WW4ucmVuZGVyU2xvdCh5LiRzbG90cywiZGVmYXVsdCIse2tleToxfSksWW4uY3JlYXRlVk5vZGUoaGMpXSksXzozfSwxNildO2QocGUoWW4udW5yZWYoUXMpLGgudmFsdWUse2RlZmF1bHQ6WW4ud2l0aEN0eCgoYyxkLGgsYik9PntpZighZClyZXR1cm5bbnVsbCE9PWUudG9hc3Rlcj8oWW4ub3BlbkJsb2NrKCksWW4uY3JlYXRlQmxvY2soZmMsWW4ubWVyZ2VQcm9wcyh7a2V5OjB9LHYudmFsdWUpLHtkZWZhdWx0OlluLndpdGhDdHgoKCk9PltZbi5yZW5kZXJTbG90KHkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6WW4ucmVuZGVyU2xvdCh5LiRzbG90cywiZGVmYXVsdCIse2tleToxfSksWW4uY3JlYXRlVk5vZGUoaGMpXTtudWxsIT09ZS50b2FzdGVyP2QocGUoZmMsdi52YWx1ZSx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5yZW5kZXJTbG90KHkuJHNsb3RzLCJkZWZhdWx0IildO2ZlKHkuJHNsb3RzLCJkZWZhdWx0Iix7fSxudWxsLGMsZCxoKX0pLF86M30saCxiKSk6ZmUoeS4kc2xvdHMsImRlZmF1bHQiLHt9LG51bGwsZCxoLGIpLGQocGUoaGMsbnVsbCxudWxsLGgsYikpfSksXzozfSxiLEUpKX0pLF86M30saykpfX19KSx5Yz1iYy5zZXR1cDtiYy5zZXR1cD0oZSxjKT0+e2NvbnN0IGQ9WW4udXNlU1NSQ29udGV4dCgpO3JldHVybihkLm1vZHVsZXN8fChkLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BudXh0K3VpQDQuNy4wX2VkMDViYjUxYjAyMWY3OGNkNWJiZDRkYjIwM2Y2NjgyL25vZGVfbW9kdWxlcy9AbnV4dC91aS9kaXN0L3J1bnRpbWUvY29tcG9uZW50cy9BcHAudnVlIikseWM/eWMoZSxjKTp2b2lkIDB9O2NvbnN0IHhjPU9iamVjdC5hc3NpZ24oYmMse19fbmFtZToiVUFwcCJ9KSxTYz1Zbi5kZWZpbmVDb21wb25lbnQoe25hbWU6Ik51eHRMb2FkaW5nSW5kaWNhdG9yIixwcm9wczp7dGhyb3R0bGU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MjAwfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsZGVmYXVsdDoyZTN9LGhpZGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDo1MDB9LHJlc2V0RGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NDAwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6M30sY29sb3I6e3R5cGU6W1N0cmluZyxCb29sZWFuXSxkZWZhdWx0OiJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCMwMGRjODIgMCUsIzM0Y2RmZSA1MCUsIzAwNDdlMSAxMDAlKSJ9LGVycm9yQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsI2Y4NzE3MSAwJSwjZWY0NDQ0IDEwMCUpIn0sZXN0aW1hdGVkUHJvZ3Jlc3M6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czpjLGV4cG9zZTpkfSl7Y29uc3R7cHJvZ3Jlc3M6aCxpc0xvYWRpbmc6dixlcnJvcjpiLHN0YXJ0OnksZmluaXNoOkUsY2xlYXI6a309ZnVuY3Rpb24oZT17fSl7Y29uc3QgYz11c2VOdXh0QXBwKCk7cmV0dXJuIGMuX2xvYWRpbmdJbmRpY2F0b3J8fD1jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGUpfSh7ZHVyYXRpb246ZS5kdXJhdGlvbix0aHJvdHRsZTplLnRocm90dGxlLGhpZGVEZWxheTplLmhpZGVEZWxheSxyZXNldERlbGF5OmUucmVzZXREZWxheSxlc3RpbWF0ZWRQcm9ncmVzczplLmVzdGltYXRlZFByb2dyZXNzfSk7cmV0dXJuIGQoe3Byb2dyZXNzOmgsaXNMb2FkaW5nOnYsZXJyb3I6YixzdGFydDp5LGZpbmlzaDpFLGNsZWFyOmt9KSwoKT0+WW4uaCgiZGl2Iix7Y2xhc3M6Im51eHQtbG9hZGluZy1pbmRpY2F0b3IiLHN0eWxlOntwb3NpdGlvbjoiZml4ZWQiLHRvcDowLHJpZ2h0OjAsbGVmdDowLHBvaW50ZXJFdmVudHM6Im5vbmUiLHdpZHRoOiJhdXRvIixoZWlnaHQ6YCR7ZS5oZWlnaHR9cHhgLG9wYWNpdHk6di52YWx1ZT8xOjAsYmFja2dyb3VuZDpiLnZhbHVlP2UuZXJyb3JDb2xvcjplLmNvbG9yfHx2b2lkIDAsYmFja2dyb3VuZFNpemU6KGgudmFsdWU+MD8xMDAvaC52YWx1ZSoxMDA6MCkrIiUgYXV0byIsdHJhbnNmb3JtOmBzY2FsZVgoJHtoLnZhbHVlfSUpYCx0cmFuc2Zvcm1PcmlnaW46ImxlZnQiLHRyYW5zaXRpb246InRyYW5zZm9ybSAwLjFzLCBoZWlnaHQgMC40cywgb3BhY2l0eSAwLjRzIix6SW5kZXg6OTk5OTk5fX0sYyl9fSksRWM9e2RlZmF1bHQ6WW4uZGVmaW5lQXN5bmNDb21wb25lbnQoKCk9PmltcG9ydCgiLi9kZWZhdWx0LUNSdHRqa2thLm1qcyIpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlKSksYXV0aDpZbi5kZWZpbmVBc3luY0NvbXBvbmVudCgoKT0+aW1wb3J0KCIuL2F1dGgtRFJ0TjdMdVYubWpzIikudGhlbihlPT5lLmRlZmF1bHR8fGUpKX0sd2M9X3JvdXRlUnVsZXNNYXRjaGVyLGtjPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiTGF5b3V0TG9hZGVyIixpbmhlcml0QXR0cnM6ITEscHJvcHM6e25hbWU6U3RyaW5nLGxheW91dFByb3BzOk9iamVjdH0sc2V0dXA6KGUsYyk9PigpPT5Zbi5oKEVjW2UubmFtZV0sZS5sYXlvdXRQcm9wcyxjLnNsb3RzKX0pLENjPXtuYW1lOnt0eXBlOltTdHJpbmcsQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6bnVsbH0sZmFsbGJhY2s6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6bnVsbH19LF9jPVluLmRlZmluZUNvbXBvbmVudCh7bmFtZToiTnV4dExheW91dCIsaW5oZXJpdEF0dHJzOiExLHByb3BzOkNjLHNldHVwKGUsYyl7Y29uc3QgZD11c2VOdXh0QXBwKCksdj1Zbi5pbmplY3Qoc2EpLGI9IXZ8fHY9PT11c2VSb3V0ZSgpP3VzZVJvdXRlJDEoKTp2LHk9WW4uY29tcHV0ZWQoKCk9PntsZXQgYz1Zbi51bnJlZihlLm5hbWUpPz9iPy5tZXRhLmxheW91dD8/d2MoYj8ucGF0aCkuYXBwTGF5b3V0Pz8iZGVmYXVsdCI7cmV0dXJuIGMmJiEoYyBpbiBFYykmJmUuZmFsbGJhY2smJihjPVluLnVucmVmKGUuZmFsbGJhY2spKSxjfSksRT1Zbi5zaGFsbG93UmVmKCk7Yy5leHBvc2Uoe2xheW91dFJlZjpFfSk7Y29uc3Qgaz1kLmRlZmVySHlkcmF0aW9uKCk7bGV0IF87cmV0dXJuKCk9Pntjb25zdCB2PSEheS52YWx1ZSYmeS52YWx1ZSBpbiBFYyYmISFiPy5tZXRhLmxheW91dFRyYW5zaXRpb24sVD0odiYmZnVuY3Rpb24oZSl7Y29uc3QgYz1bXTtmb3IoY29uc3QgZCBvZiBlKWQmJmMucHVzaCh7Li4uZCxvbkFmdGVyTGVhdmU6ZC5vbkFmdGVyTGVhdmU/dG9BcnJheSQxKGQub25BZnRlckxlYXZlKTp2b2lkIDAsb25CZWZvcmVMZWF2ZTpkLm9uQmVmb3JlTGVhdmU/dG9BcnJheSQxKGQub25CZWZvcmVMZWF2ZSk6dm9pZCAwfSk7aCguLi5jKX0oW2I/Lm1ldGEubGF5b3V0VHJhbnNpdGlvbixacix7b25CZWZvcmVMZWF2ZSgpe2RbIn50cmFuc2l0aW9uUHJvbWlzZSJdPW5ldyBQcm9taXNlKGU9PntkWyJ+dHJhbnNpdGlvbkZpbmlzaCJdPWV9KX0sb25BZnRlckxlYXZlKCl7ZFsifnRyYW5zaXRpb25GaW5pc2giXT8uKCksZGVsZXRlIGRbIn50cmFuc2l0aW9uRmluaXNoIl0sZGVsZXRlIGRbIn50cmFuc2l0aW9uUHJvbWlzZSJdfX1dKSxfKTtyZXR1cm4gXz15LnZhbHVlLChOPXtkZWZhdWx0OigpPT5Zbi5oKFluLlN1c3BlbnNlLHtzdXNwZW5zaWJsZTohMCxvblJlc29sdmU6YXN5bmMoKT0+e2F3YWl0IFluLm5leHRUaWNrKGspfX0se2RlZmF1bHQ6KCk9PlluLmgoVGMse2xheW91dFByb3BzOlluLm1lcmdlUHJvcHMoYy5hdHRycyxiLm1ldGEubGF5b3V0UHJvcHM/P3t9LHtyZWY6RX0pLGtleTp5LnZhbHVlfHx2b2lkIDAsbmFtZTp5LnZhbHVlLHNob3VsZFByb3ZpZGU6IWUubmFtZSxpc1JlbmRlcmluZ05ld0xheW91dDplPT5lIT09VCYmZT09PXkudmFsdWUsaGFzVHJhbnNpdGlvbjp2fSxjLnNsb3RzKX0pfSx7ZGVmYXVsdDooKT0+Ti5kZWZhdWx0Py4oKX0pLmRlZmF1bHQoKTt2YXIgTn19fSksVGM9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0TGF5b3V0UHJvdmlkZXIiLGluaGVyaXRBdHRyczohMSxwcm9wczp7bmFtZTp7dHlwZTpbU3RyaW5nLEJvb2xlYW5dfSxsYXlvdXRQcm9wczp7dHlwZTpPYmplY3R9LGhhc1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbn0sc2hvdWxkUHJvdmlkZTp7dHlwZTpCb29sZWFufSxpc1JlbmRlcmluZ05ld0xheW91dDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMH19LHNldHVwKGUsYyl7Y29uc3QgZD1lLm5hbWU7ZS5zaG91bGRQcm92aWRlJiZZbi5wcm92aWRlKGlhLHtpc0N1cnJlbnQ6ZT0+ITE9PT1kfHxkPT09KGUubWV0YS5sYXlvdXQ/P3djKGUucGF0aCkuYXBwTGF5b3V0Pz8iZGVmYXVsdCIpfSk7Y29uc3QgaD1Zbi5pbmplY3Qoc2EpO2lmKGgmJmg9PT11c2VSb3V0ZSgpKXtjb25zdCBjPXVzZVJvdXRlJDEoKSxkPXt9O2Zvcihjb25zdCB2IGluIGMpe2NvbnN0IGI9djtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZS5pc1JlbmRlcmluZ05ld0xheW91dChlLm5hbWUpP2NbYl06aFtiXX0pfVluLnByb3ZpZGUoc2EsWW4uc2hhbGxvd1JlYWN0aXZlKGQpKX1yZXR1cm4oKT0+IWR8fCJzdHJpbmciPT10eXBlb2YgZCYmIShkIGluIEVjKT9jLnNsb3RzLmRlZmF1bHQ/LigpOlluLmgoa2Mse2tleTpkLGxheW91dFByb3BzOmUubGF5b3V0UHJvcHMsbmFtZTpkfSxjLnNsb3RzKX19KSxOYz0oKGU9IlJvdXRlUHJvdmlkZXIiKT0+WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOmUscHJvcHM6e3JvdXRlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sdm5vZGU6T2JqZWN0LHZub2RlUmVmOk9iamVjdCxyZW5kZXJLZXk6U3RyaW5nLHRyYWNrUm9vdE5vZGVzOkJvb2xlYW59LHNldHVwKGUpe2NvbnN0IGM9ZS5yZW5kZXJLZXksZD1lLnJvdXRlLGg9e307Zm9yKGNvbnN0IHYgaW4gZS5yb3V0ZSlPYmplY3QuZGVmaW5lUHJvcGVydHkoaCx2LHtnZXQ6KCk9PmM9PT1lLnJlbmRlcktleT9lLnJvdXRlW3ZdOmRbdl0sZW51bWVyYWJsZTohMH0pO3JldHVybiBZbi5wcm92aWRlKHNhLFluLnNoYWxsb3dSZWFjdGl2ZShoKSksKCk9PmUudm5vZGU/WW4uaChlLnZub2RlLHtyZWY6ZS52bm9kZVJlZn0pOmUudm5vZGV9fSkpKCksQWM9WW4uZGVmaW5lQ29tcG9uZW50KHtuYW1lOiJOdXh0UGFnZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZ30sdHJhbnNpdGlvbjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxrZWVwYWxpdmU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxkZWZhdWx0OnZvaWQgMH0scm91dGU6e3R5cGU6T2JqZWN0fSxwYWdlS2V5Ont0eXBlOltGdW5jdGlvbixTdHJpbmddLGRlZmF1bHQ6bnVsbH19LHNldHVwKGUse2F0dHJzOmMsc2xvdHM6ZCxleHBvc2U6aH0pe2NvbnN0IHY9dXNlTnV4dEFwcCgpLGI9WW4ucmVmKCk7cmV0dXJuIFluLmluamVjdChzYSxudWxsKSxoKHtwYWdlUmVmOmJ9KSxZbi5pbmplY3QoaWEsbnVsbCksdi5kZWZlckh5ZHJhdGlvbigpLCgpPT5Zbi5oKFZvLHtuYW1lOmUubmFtZSxyb3V0ZTplLnJvdXRlLC4uLmN9LHtkZWZhdWx0OmU9PlluLmgoWW4uU3VzcGVuc2Use3N1c3BlbnNpYmxlOiEwfSx7ZGVmYXVsdDooKT0+WW4uaChOYyx7dm5vZGU6ZC5kZWZhdWx0P25vcm1hbGl6ZVNsb3QoZC5kZWZhdWx0LGUpOmUuQ29tcG9uZW50LHJvdXRlOmUucm91dGUsdm5vZGVSZWY6Yn0pfSl9KX19KTtmdW5jdGlvbiBub3JtYWxpemVTbG90KGUsYyl7Y29uc3QgZD1lKGMpO3JldHVybiAxPT09ZC5sZW5ndGg/WW4uaChkWzBdKTpZbi5oKFluLkZyYWdtZW50LHZvaWQgMCxkKX1jb25zdCBfZXhwb3J0X3NmYz0oZSxjKT0+e2NvbnN0IGQ9ZS5fX3ZjY09wdHN8fGU7Zm9yKGNvbnN0W2UsaF1vZiBjKWRbZV09aDtyZXR1cm4gZH0sT2M9e307Y29uc3QgSWM9T2Muc2V0dXA7T2Muc2V0dXA9KGUsYyk9Pntjb25zdCBkPVluLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oZC5tb2R1bGVzfHwoZC5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoImFwcC52dWUiKSxJYz9JYyhlLGMpOnZvaWQgMH07Y29uc3QgUmM9X2V4cG9ydF9zZmMoT2MsW1sic3NyUmVuZGVyIixmdW5jdGlvbihlLGMsZCxoKXtjb25zdCB2PVNjLGI9UGEseT1fYyxFPUFjO2MocGUoeGMsaCx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5jcmVhdGVWTm9kZSh2KSxZbi5jcmVhdGVWTm9kZShiKSxZbi5jcmVhdGVWTm9kZSh5LG51bGwse2RlZmF1bHQ6WW4ud2l0aEN0eCgoKT0+W1luLmNyZWF0ZVZOb2RlKEUpXSksXzoxfSldO2MocGUodixudWxsLG51bGwsZCxoKSksYyhwZShiLG51bGwsbnVsbCxkLGgpKSxjKHBlKHksbnVsbCx7ZGVmYXVsdDpZbi53aXRoQ3R4KChlLGMsZCxoKT0+e2lmKCFjKXJldHVybltZbi5jcmVhdGVWTm9kZShFKV07YyhwZShFLG51bGwsbnVsbCxkLGgpKX0pLF86MX0sZCxoKSl9KSxfOjF9LGQpKX1dXSksUGM9e19fbmFtZToibnV4dC1lcnJvci1wYWdlIixfX3NzcklubGluZVJlbmRlcjohMCxwcm9wczp7ZXJyb3I6T2JqZWN0fSxzZXR1cChlKXtjb25zdCBjPWUuZXJyb3IsZD1OdW1iZXIoYy5zdGF0dXNDb2RlfHw1MDApLGg9NDA0PT09ZCx2PWMuc3RhdHVzTWVzc2FnZT8/KGg/IlBhZ2UgTm90IEZvdW5kIjoiSW50ZXJuYWwgU2VydmVyIEVycm9yIiksYj1jLm1lc3NhZ2V8fGMudG9TdHJpbmcoKSx5PVluLmRlZmluZUFzeW5jQ29tcG9uZW50KCgpPT5pbXBvcnQoIi4vZXJyb3ItNDA0LUN6V2ZMX29ILm1qcyIpKSxFPVluLmRlZmluZUFzeW5jQ29tcG9uZW50KCgpPT5pbXBvcnQoIi4vZXJyb3ItNTAwLUR6SHRzakV1Lm1qcyIpKSxrPWg/eTpFO3JldHVybihlLGMsaCx5KT0+e2MocGUoWW4udW5yZWYoayksWW4ubWVyZ2VQcm9wcyh7c3RhdHVzOlluLnVucmVmKGQpLHN0YXR1c1RleHQ6WW4udW5yZWYodiksc3RhdHVzQ29kZTpZbi51bnJlZihkKSxzdGF0dXNNZXNzYWdlOlluLnVucmVmKHYpLGRlc2NyaXB0aW9uOlluLnVucmVmKGIpLHN0YWNrOlluLnVucmVmKHZvaWQgMCl9LHkpLG51bGwsaCkpfX19LE1jPVBjLnNldHVwO1BjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL251eHQtZXJyb3ItcGFnZS52dWUiKSxNYz9NYyhlLGMpOnZvaWQgMH07Y29uc3QgRGM9e19fbmFtZToibnV4dC1yb290IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChlKXtjb25zdCBJc2xhbmRSZW5kZXJlcj0oKT0+bnVsbCxjPXVzZU51eHRBcHAoKTtjLmRlZmVySHlkcmF0aW9uKCksYy5zc3JDb250ZXh0LnVybDtjb25zdCBkPSExO1luLnByb3ZpZGUoc2EsdXNlUm91dGUoKSksYy5ob29rcy5jYWxsSG9va1dpdGgoZT0+ZS5tYXAoZT0+ZSgpKSwidnVlOnNldHVwIik7Y29uc3QgaD11c2VFcnJvcigpLHY9aC52YWx1ZSYmIWMuc3NyQ29udGV4dC5lcnJvcjtZbi5vbkVycm9yQ2FwdHVyZWQoKGUsZCxoKT0+e2MuaG9va3MuY2FsbEhvb2soInZ1ZTplcnJvciIsZSxkLGgpPy5jYXRjaChlPT57fSk7e2NvbnN0IGQ9Yy5ydW5XaXRoQ29udGV4dCgoKT0+c2hvd0Vycm9yKGUpKTtyZXR1cm4gWW4ub25TZXJ2ZXJQcmVmZXRjaCgoKT0+ZCksITF9fSk7Y29uc3QgYj1jLnNzckNvbnRleHQuaXNsYW5kQ29udGV4dDtyZXR1cm4oZSxjLHksRSk9PntTZShjLHtkZWZhdWx0OigpPT57WW4udW5yZWYodik/YygiPGRpdj48L2Rpdj4iKTpZbi51bnJlZihoKT9jKHBlKFluLnVucmVmKFBjKSx7ZXJyb3I6WW4udW5yZWYoaCl9LG51bGwseSkpOlluLnVucmVmKGIpP2MocGUoWW4udW5yZWYoSXNsYW5kUmVuZGVyZXIpLHtjb250ZXh0OlluLnVucmVmKGIpfSxudWxsLHkpKTpZbi51bnJlZihkKT9oZShjLFluLmNyZWF0ZVZOb2RlKFluLnJlc29sdmVEeW5hbWljQ29tcG9uZW50KFluLnVucmVmKGQpKSxudWxsLG51bGwpLHkpOmMocGUoWW4udW5yZWYoUmMpLG51bGwsbnVsbCx5KSl9fSl9fX0sQmM9RGMuc2V0dXA7bGV0IExjO0RjLnNldHVwPShlLGMpPT57Y29uc3QgZD1Zbi51c2VTU1JDb250ZXh0KCk7cmV0dXJuKGQubW9kdWxlc3x8KGQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL251eHQtcm9vdC52dWUiKSxCYz9CYyhlLGMpOnZvaWQgMH0sTGM9YXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgYz1Zbi5jcmVhdGVBcHAoRGMpLGQ9ZnVuY3Rpb24oZSl7bGV0IGM9MDtjb25zdCBkPXtfaWQ6ZS5pZHx8b2F8fCJudXh0LWFwcCIsX3Njb3BlOlluLmVmZmVjdFNjb3BlKCkscHJvdmlkZTp2b2lkIDAsdmVyc2lvbnM6e2dldCBudXh0KCl7cmV0dXJuIjQuNC4yIn0sZ2V0IHZ1ZSgpe3JldHVybiBkLnZ1ZUFwcC52ZXJzaW9ufX0scGF5bG9hZDpZbi5zaGFsbG93UmVhY3RpdmUoey4uLmUuc3NyQ29udGV4dD8ucGF5bG9hZHx8e30sZGF0YTpZbi5zaGFsbG93UmVhY3RpdmUoe30pLHN0YXRlOlluLnJlYWN0aXZlKHt9KSxvbmNlOm5ldyBTZXQsX2Vycm9yczpZbi5zaGFsbG93UmVhY3RpdmUoe30pfSksc3RhdGljOntkYXRhOnt9fSxydW5XaXRoQ29udGV4dDplPT5kLl9zY29wZS5hY3RpdmUmJiFZbi5nZXRDdXJyZW50U2NvcGUoKT9kLl9zY29wZS5ydW4oKCk9PmNhbGxXaXRoTnV4dChkLGUpKTpjYWxsV2l0aE51eHQoZCxlKSxpc0h5ZHJhdGluZzohMSxkZWZlckh5ZHJhdGlvbigpe2lmKCFkLmlzSHlkcmF0aW5nKXJldHVybigpPT57fTtjKys7bGV0IGU9ITE7cmV0dXJuKCk9PntpZighZSlyZXR1cm4gZT0hMCxjLS0sMD09PWM/KGQuaXNIeWRyYXRpbmc9ITEsZC5jYWxsSG9vaygiYXBwOnN1c3BlbnNlOnJlc29sdmUiKSk6dm9pZCAwfX0sX2FzeW5jRGF0YVByb21pc2VzOnt9LF9hc3luY0RhdGE6WW4uc2hhbGxvd1JlYWN0aXZlKHt9KSxfc3RhdGU6WW4uc2hhbGxvd1JlYWN0aXZlKHt9KSxfcGF5bG9hZFJldml2ZXJzOnt9LC4uLmV9O2QucGF5bG9hZC5zZXJ2ZXJSZW5kZXJlZD0hMCxkLnNzckNvbnRleHQmJihkLnBheWxvYWQucGF0aD1kLnNzckNvbnRleHQudXJsLGQuc3NyQ29udGV4dC5udXh0PWQsZC5zc3JDb250ZXh0LnBheWxvYWQ9ZC5wYXlsb2FkLGQuc3NyQ29udGV4dC5jb25maWc9e3B1YmxpYzpkLnNzckNvbnRleHQucnVudGltZUNvbmZpZy5wdWJsaWMsYXBwOmQuc3NyQ29udGV4dC5ydW50aW1lQ29uZmlnLmFwcH0pLGQuaG9va3M9RWUoKSxkLmhvb2s9ZC5ob29rcy5ob29rO3tjb25zdCBjb250ZXh0Q2FsbGVyPWFzeW5jIGZ1bmN0aW9uKGUsYyl7Zm9yKGNvbnN0IGggb2YgZSlhd2FpdCBkLnJ1bldpdGhDb250ZXh0KCgpPT5oKC4uLmMpKX07ZC5ob29rcy5jYWxsSG9vaz0oZSwuLi5jKT0+ZC5ob29rcy5jYWxsSG9va1dpdGgoY29udGV4dENhbGxlcixlLGMpfWQuY2FsbEhvb2s9ZC5ob29rcy5jYWxsSG9vayxkLnByb3ZpZGU9KGUsYyk9Pntjb25zdCBoPSIkIitlO2RlZmluZUdldHRlcihkLGgsYyksZGVmaW5lR2V0dGVyKGQudnVlQXBwLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLGgsYyl9LGRlZmluZUdldHRlcihkLnZ1ZUFwcCwiJG51eHQiLGQpLGRlZmluZUdldHRlcihkLnZ1ZUFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywiJG51eHQiLGQpO2NvbnN0IGg9ZS5zc3JDb250ZXh0LnJ1bnRpbWVDb25maWc7cmV0dXJuIGQucHJvdmlkZSgiY29uZmlnIixoKSxkfSh7dnVlQXBwOmMsc3NyQ29udGV4dDplfSk7dHJ5e2F3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsYyl7Y29uc3QgZD1uZXcgU2V0LGg9W10sdj1bXTtsZXQgYix5PTA7YXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVBsdWdpbihFKXtjb25zdCBrPUUuZGVwZW5kc09uPy5maWx0ZXIoZT0+Yy5zb21lKGM9PmMuX25hbWU9PT1lKSYmIWQuaGFzKGUpKT8/W107aWYoay5sZW5ndGg+MCloLnB1c2goW25ldyBTZXQoayksRV0pO2Vsc2V7Y29uc3QgYz1hc3luYyBmdW5jdGlvbihlLGMpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjKXtjb25zdHtwcm92aWRlOmR9PWF3YWl0IGUucnVuV2l0aENvbnRleHQoKCk9PmMoZSkpfHx7fTtpZihkJiYib2JqZWN0Ij09dHlwZW9mIGQpZm9yKGNvbnN0IGMgaW4gZCllLnByb3ZpZGUoYyxkW2NdKX19KGUsRSkudGhlbihhc3luYygpPT57RS5fbmFtZSYmKGQuYWRkKEUuX25hbWUpLGF3YWl0IFByb21pc2UuYWxsKGgubWFwKGFzeW5jKFtlLGNdKT0+e2UuaGFzKEUuX25hbWUpJiYoZS5kZWxldGUoRS5fbmFtZSksMD09PWUuc2l6ZSYmKHkrKyxhd2FpdCBleGVjdXRlUGx1Z2luKGMpKSl9KSkpfSkuY2F0Y2goYz0+e2lmKCFFLnBhcmFsbGVsJiYhZS5wYXlsb2FkLmVycm9yKXRocm93IGM7Ynx8PWN9KTtFLnBhcmFsbGVsP3YucHVzaChjKTphd2FpdCBjfX1mb3IoY29uc3QgZCBvZiBjKWUuc3NyQ29udGV4dD8uaXNsYW5kQ29udGV4dCYmITE9PT1kLmVudj8uaXNsYW5kc3x8cmVnaXN0ZXJQbHVnaW5Ib29rcyhlLGQpO2Zvcihjb25zdCBkIG9mIGMpZS5zc3JDb250ZXh0Py5pc2xhbmRDb250ZXh0JiYhMT09PWQuZW52Py5pc2xhbmRzfHxhd2FpdCBleGVjdXRlUGx1Z2luKGQpO2lmKGF3YWl0IFByb21pc2UuYWxsKHYpLHkpZm9yKGxldCBlPTA7ZTx5O2UrKylhd2FpdCBQcm9taXNlLmFsbCh2KTtpZihiKXRocm93IGUucGF5bG9hZC5lcnJvcnx8Yn0oZCxKaSksYXdhaXQgZC5ob29rcy5jYWxsSG9vaygiYXBwOmNyZWF0ZWQiLGMpfWNhdGNoKGUpe2F3YWl0IGQuaG9va3MuY2FsbEhvb2soImFwcDplcnJvciIsZSksZC5wYXlsb2FkLmVycm9yfHw9Y3JlYXRlRXJyb3IoZSl9aWYoZSYmKGVbIn5yZW5kZXJSZXNwb25zZSJdfHxlLl9yZW5kZXJSZXNwb25zZSkpdGhyb3cgbmV3IEVycm9yKCJza2lwcGluZyByZW5kZXIiKTtyZXR1cm4gY307Y29uc3QgamM9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCQ6VmEsQTp1c2VGb3J3YXJkUHJvcHNFbWl0cyxCOnJlYWN0aXZlUGljayxDOnVzZUZvcm1GaWVsZCxEOnBhcnNlQWJpbGl0eSxFOnN5bmNSZWYsRjp1c2VSZXF1ZXN0RXZlbnQsRzp1c2VJbnRlcnZhbEZuLEg6dXNlTG9jYWxlLEk6Y3JlYXRlUmVmLEo6Y3JlYXRlUmV1c2FibGVUZW1wbGF0ZSxLOnVzZUZvcndhcmRQcm9wcyxMOm5hdmlnYXRlVG8sTTpWbCxOOnpsLE86V2wsUDpncyxROkhsLFI6R2wsUzpGbCxUOnVzZUV2ZW50QnVzLFU6cmVmcmVzaE51eHREYXRhLFY6RGEsVzpyZWFjdGl2ZU9taXQsWDppc0FycmF5T2ZBcnJheSxZOnBpY2ssWjpvbWl0LF86X2V4cG9ydF9zZmMsYTokYSxhMDp1c2VQcmltaXRpdmVFbGVtZW50LGExOmNyZWF0ZUV2ZW50SG9vayxhMjpTcyxhMzp1c2VQb3J0YWwsYTQ6dXNlRmllbGRHcm91cCxhNTp1c2VDb21wb25lbnRJY29ucyxhNjpjb21wYXJlLGE3OmdldCxhODpQbCxhOTokbCxhQTpmb2N1cyxhQjp5cyxhQzp4cyxhRDpnZXRUYWJiYWJsZUVkZ2VzLGFFOnVzZUV2ZW50TGlzdGVuZXIsYUY6dXNlRGVib3VuY2VGbixhRzpRaSxhSDpwaWNrTGlua1Byb3BzLGFJOktsLGFKOktzLGFLOnVzZVRpbWVvdXRGbixhTDp0cnlPblNjb3BlRGlzcG9zZSxhTTp1c2VFbWl0QXNQcm9wcyxhTjp3YXRjaERlYm91bmNlZCxhTzp1c2VQYXJlbnRFbGVtZW50LGFQOnRyYW5zZm9ybVVJLGFROnJlZkRlYm91bmNlZCxhUjpyZWZUaHJvdHRsZWQsYVM6dXNlQWN0aXZlRWxlbWVudCxhYTpsb29zZVRvTnVtYmVyLGFiOmdldERpc3BsYXlWYWx1ZSxhYzpwYXVzYWJsZUZpbHRlcixhZDp1c2VNb3VzZUluRWxlbWVudCxhZTpnZXRTbG90Q2hpbGRyZW5UZXh0LGFmOllsLGFnOnVzLGFoOndzLGFpOnVucmVmRWxlbWVudCxhajp1c2VSZXNpemVPYnNlcnZlcixhazpnZXRBY3RpdmVFbGVtZW50LGFsOndoZW5ldmVyLGFtOnVzZU51eHRBcHAsYW46dXNlU3RvcmFnZSxhbzpVbCxhcDpxbCxhcTp1c2VTdGF0ZSxhcjpyZWZBdXRvUmVzZXQsYXM6Y29tcHV0ZWRFYWdlcixhdDp0cnlPbkJlZm9yZVVubW91bnQsYXU6Y3JlYXRlU2hhcmVkQ29tcG9zYWJsZSxhdjpvbktleVN0cm9rZSxhdzpjcmVhdGVHbG9iYWxTdGF0ZSxheDpicyxheTpmb2N1c0ZpcnN0LGF6OmdldFRhYmJhYmxlQ2FuZGlkYXRlcyxiOnVzZVRvYXN0LGM6dGMsZDp3bCxkZWZhdWx0OmU9PkxjKGUpLGU6dXNlUnVudGltZUNvbmZpZyxmOnphLGc6TGEsaDp1c2VBdXRoQXBpLGk6dXNlUm91dGUsajp1c2VSb3V0ZXIsazp1c2VPcmdhbml6YXRpb25BcGksbDpCbCxtOnVzZUFwcENvbmZpZyxuOnVzZUNvbXBvbmVudFVJLG86QWMscDp1c2VJbmZpbml0ZVNjcm9sbCxxOnVzZUNsaXBib2FyZCxyOnVzZUNvbGxlY3Rpb24sczpzYXRpc2ZpZXNBYmlsaXR5LHQ6Y2wsdTp1c2VIZWFkLHY6Y3JlYXRlQ29udGV4dCx3OnVzZUZvcndhcmRFeHBvc2UseDp1c2VWTW9kZWwseTppc051bGxpc2gsejpmc30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtleHBvcnR7VmEgYXMgJCxXbCBhcyBBLEhsIGFzIEIsVWwgYXMgQyxxbCBhcyBELHVzZUZvcndhcmRQcm9wc0VtaXRzIGFzIEUscmVhY3RpdmVQaWNrIGFzIEYsdXNlUG9ydGFsIGFzIEcsdXNlRm9ybUZpZWxkIGFzIEgsaXNBcnJheU9mQXJyYXkgYXMgSSwkbCBhcyBKLGdldCBhcyBLLFBsIGFzIEwsdXNlRm9yd2FyZEV4cG9zZSBhcyBNLHVzZUNvbGxlY3Rpb24gYXMgTixnZXREaXNwbGF5VmFsdWUgYXMgTyxncyBhcyBQLGZzIGFzIFEsbG9vc2VUb051bWJlciBhcyBSLHVzZVZNb2RlbCBhcyBTLFNzIGFzIFQsaXNOdWxsaXNoIGFzIFUsdW5yZWZFbGVtZW50IGFzIFYsdXMgYXMgVyxnZXRBY3RpdmVFbGVtZW50IGFzIFgsd3MgYXMgWSx1c2VSZXNpemVPYnNlcnZlciBhcyBaLHRjIGFzIF8sdXNlVG9hc3QgYXMgYSxEYSBhcyBhMCxyZWZBdXRvUmVzZXQgYXMgYTEsY29tcHV0ZWRFYWdlciBhcyBhMixvbktleVN0cm9rZSBhcyBhMyx0cnlPbkJlZm9yZVVubW91bnQgYXMgYTQsYnMgYXMgYTUsZm9jdXNGaXJzdCBhcyBhNixnZXRUYWJiYWJsZUNhbmRpZGF0ZXMgYXMgYTcsZm9jdXMgYXMgYTgseXMgYXMgYTksY29tcGFyZSBhcyBhQSx3YXRjaERlYm91bmNlZCBhcyBhQix1c2VQYXJlbnRFbGVtZW50IGFzIGFDLHBhcnNlQWJpbGl0eSBhcyBhRCxWbCBhcyBhRSx6bCBhcyBhRixHbCBhcyBhRyxGbCBhcyBhSCx1c2VFdmVudEJ1cyBhcyBhSSxvbWl0IGFzIGFKLCRhIGFzIGFLLHVzZUludGVydmFsRm4gYXMgYUwsbmF2aWdhdGVUbyBhcyBhTSxyZWZyZXNoTnV4dERhdGEgYXMgYU4scGljayBhcyBhTyx0cmFuc2Zvcm1VSSBhcyBhUCxyZWZEZWJvdW5jZWQgYXMgYVEscmVmVGhyb3R0bGVkIGFzIGFSLHVzZUFjdGl2ZUVsZW1lbnQgYXMgYVMsX2V4cG9ydF9zZmMgYXMgYVQsamMgYXMgYVUsY3JlYXRlU2hhcmVkQ29tcG9zYWJsZSBhcyBhYSx4cyBhcyBhYixnZXRUYWJiYWJsZUVkZ2VzIGFzIGFjLGNyZWF0ZUdsb2JhbFN0YXRlIGFzIGFkLHVzZVN0YXRlIGFzIGFlLHNhdGlzZmllc0FiaWxpdHkgYXMgYWYsQWMgYXMgYWcsWWwgYXMgYWgscGlja0xpbmtQcm9wcyBhcyBhaSxLbCBhcyBhaixRaSBhcyBhayx1c2VFdmVudExpc3RlbmVyIGFzIGFsLHVzZURlYm91bmNlRm4gYXMgYW0sc3luY1JlZiBhcyBhbix0cnlPblNjb3BlRGlzcG9zZSBhcyBhbyxjcmVhdGVFdmVudEhvb2sgYXMgYXAsdXNlUHJpbWl0aXZlRWxlbWVudCBhcyBhcSx1c2VFbWl0QXNQcm9wcyBhcyBhcixLcyBhcyBhcyx1c2VUaW1lb3V0Rm4gYXMgYXQscGF1c2FibGVGaWx0ZXIgYXMgYXUsdXNlTW91c2VJbkVsZW1lbnQgYXMgYXYsZ2V0U2xvdENoaWxkcmVuVGV4dCBhcyBhdyxjcmVhdGVSZWYgYXMgYXgsdXNlSW5maW5pdGVTY3JvbGwgYXMgYXksdXNlQ2xpcGJvYXJkIGFzIGF6LHdsIGFzIGIsdXNlUnVudGltZUNvbmZpZyBhcyBjLHVzZUFwcENvbmZpZyBhcyBkLHVzZUNvbXBvbmVudFVJIGFzIGUsdXNlTG9jYWxlIGFzIGYsQmwgYXMgZyx6YSBhcyBoLExhIGFzIGksdXNlQXV0aEFwaSBhcyBqLGNyZWF0ZVJldXNhYmxlVGVtcGxhdGUgYXMgayx1c2VGb3J3YXJkUHJvcHMgYXMgbCxjcmVhdGVDb250ZXh0IGFzIG0sdXNlU3RvcmFnZSBhcyBuLHVzZU51eHRBcHAgYXMgbyx1c2VSZXF1ZXN0RXZlbnQgYXMgcCx1c2VGaWVsZEdyb3VwIGFzIHEscmVhY3RpdmVPbWl0IGFzIHIsdXNlQ29tcG9uZW50SWNvbnMgYXMgcyxjbCBhcyB0LHVzZUhlYWQgYXMgdSxZbiBhcyB2LHVzZVJvdXRlIGFzIHcsdXNlUm91dGVyIGFzIHgsdXNlT3JnYW5pemF0aW9uQXBpIGFzIHksd2hlbmV2ZXIgYXMgen07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlcnZlci5tanMubWFwCg==", "chunks/build/settings-D6nHHKcT.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmRUb29sYmFyLUJ0QUJZektILm1qcyI7aW1wb3J0e18gYXMgaX1mcm9tIi4vTmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzIjtpbXBvcnR7diBhcyBzLHUgYXMgbyxoIGFzIHIsYWYgYXMgYSxhZyBhcyBsfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBtfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL2lzVmFsdWVFcXVhbE9yRXhpc3QtRG1QeW41Yk4ubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgdT1zLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzZXR0aW5ncyIsX19zc3JJbmxpbmVSZW5kZXI6ITAsc2V0dXAodSl7byh7dGl0bGU6IlNldHRpbmdzIn0pO2NvbnN0IHA9cigpLGQ9cy5jb21wdXRlZCgoKT0+cC5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSksYz1zLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1be2xhYmVsOiJHZW5lcmFsIixpY29uOiJpLWx1Y2lkZS11c2VyIix0bzoiL3NldHRpbmdzIixleGFjdDohMH1dO3JldHVybiBlLnB1c2goe2xhYmVsOiJOb3RpZmljYXRpb25zIixpY29uOiJpLWx1Y2lkZS1iZWxsIix0bzoiL3NldHRpbmdzL25vdGlmaWNhdGlvbnMifSksYShkLnZhbHVlLCJiaWxsaW5nOnJlYWQiKSYmZS5wdXNoKHtsYWJlbDoiQmlsbGluZyIsaWNvbjoiaS1sdWNpZGUtY3JlZGl0LWNhcmQiLHRvOiIvc2V0dGluZ3MvYmlsbGluZyJ9KSxlLnB1c2goe2xhYmVsOiJTZWN1cml0eSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkIix0bzoiL3NldHRpbmdzL3NlY3VyaXR5In0pLFtlLFt7bGFiZWw6IkRvY3VtZW50YXRpb24iLGljb246ImktbHVjaWRlLWJvb2stb3BlbiIsdG86Imh0dHBzOi8vdWkubnV4dC5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbGF0aW9uL251eHQiLHRhcmdldDoiX2JsYW5rIn1dXX0pO3JldHVybihvLHIsYSx1KT0+e2NvbnN0IHA9dCxkPWksZz1sO3IobihlLHMubWVyZ2VQcm9wcyh7aWQ6InNldHRpbmdzIix1aTp7Ym9keToibGc6cHktMTIifX0sdSkse2hlYWRlcjpzLndpdGhDdHgoKGUsdCxpLG8pPT57aWYoIXQpcmV0dXJuW3MuY3JlYXRlVk5vZGUobSx7dGl0bGU6IlNldHRpbmdzIn0pLHMuY3JlYXRlVk5vZGUocCxudWxsLHtkZWZhdWx0OnMud2l0aEN0eCgoKT0+W3MuY3JlYXRlVk5vZGUoZCx7aXRlbXM6cy51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXSksXzoxfSldO3QobihtLHt0aXRsZToiU2V0dGluZ3MifSxudWxsLGksbykpLHQobihwLG51bGwse2RlZmF1bHQ6cy53aXRoQ3R4KChlLHQsaSxvKT0+e2lmKCF0KXJldHVybltzLmNyZWF0ZVZOb2RlKGQse2l0ZW1zOnMudW5yZWYoYyksaGlnaGxpZ2h0OiIiLGNsYXNzOiItbXgtMSBmbGV4LTEifSxudWxsLDgsWyJpdGVtcyJdKV07dChuKGQse2l0ZW1zOnMudW5yZWYoYyksaGlnaGxpZ2h0OiIiLGNsYXNzOiItbXgtMSBmbGV4LTEifSxudWxsLGksbykpfSksXzoxfSxpLG8pKX0pLGJvZHk6cy53aXRoQ3R4KChlLHQsaSxvKT0+e2lmKCF0KXJldHVybltzLmNyZWF0ZVZOb2RlKCJkaXYiLHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpnYXAtNiBsZzpnYXAtMTIgdy1mdWxsIGxnOm1heC13LTJ4bCBteC1hdXRvIn0sW3MuY3JlYXRlVk5vZGUoZyldKV07dChgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpnYXAtNiBsZzpnYXAtMTIgdy1mdWxsIGxnOm1heC13LTJ4bCBteC1hdXRvIiR7b30+YCksdChuKGcsbnVsbCxudWxsLGksbykpLHQoIjwvZGl2PiIpfSksXzoxfSxhKSl9fX0pLHA9dS5zZXR1cDt1LnNldHVwPShlLHQpPT57Y29uc3QgaT1zLnVzZVNTUkNvbnRleHQoKTtyZXR1cm4oaS5tb2R1bGVzfHwoaS5tb2R1bGVzPW5ldyBTZXQpKS5hZGQoIi4uL2xheWVycy9hdXRoL2FwcC9wYWdlcy9zZXR0aW5ncy52dWUiKSxwP3AoZSx0KTp2b2lkIDB9O2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zZXR0aW5ncy1ENm5ISEtjVC5tanMubWFwCg==", "chunks/build/styles.mjs": "Y29uc3QgaW50ZXJvcERlZmF1bHQ9ZT0+ZS5kZWZhdWx0fHxlfHxbXSxlPXsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci01MDAudnVlIjooKT0+aW1wb3J0KCIuL2Vycm9yLTUwMC1zdHlsZXMuTTFEY0xzTzYubWpzIikudGhlbihpbnRlcm9wRGVmYXVsdCksIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9udXh0QDQuNC4yXzk1NjhiMDg2NmI0MGNiZTUxNDJiOGJiOWIyNDg3ZDcwL25vZGVfbW9kdWxlcy9udXh0L2Rpc3QvYXBwL2NvbXBvbmVudHMvZXJyb3ItNDA0LnZ1ZSI6KCk9PmltcG9ydCgiLi9lcnJvci00MDQtc3R5bGVzLkNCNHpmaFRQLm1qcyIpLnRoZW4oaW50ZXJvcERlZmF1bHQpLCIuLi9ub2RlX21vZHVsZXMvLnBucG0vbnV4dEA0LjQuMl85NTY4YjA4NjZiNDBjYmU1MTQyYjhiYjliMjQ4N2Q3MC9ub2RlX21vZHVsZXMvbnV4dC9kaXN0L2FwcC9jb21wb25lbnRzL2Vycm9yLTUwMC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZzY29wZWQ9MjQ4NDMxZDImbGFuZy5jc3MiOigpPT5pbXBvcnQoIi4vZXJyb3ItNTAwLXN0eWxlcy5NMURjTHNPNi5tanMiKS50aGVuKGludGVyb3BEZWZhdWx0KSwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL251eHRANC40LjJfOTU2OGIwODY2YjQwY2JlNTE0MmI4YmI5YjI0ODdkNzAvbm9kZV9tb2R1bGVzL251eHQvZGlzdC9hcHAvY29tcG9uZW50cy9lcnJvci00MDQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmc2NvcGVkPTZkN2JhY2ZmJmxhbmcuY3NzIjooKT0+aW1wb3J0KCIuL2Vycm9yLTQwNC1zdHlsZXMuQ0I0emZoVFAubWpzIikudGhlbihpbnRlcm9wRGVmYXVsdCl9O2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zdHlsZXMubWpzLm1hcAo=", "chunks/build/support-DDsyngE5.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyB0fWZyb20iLi9EYXNoYm9hcmROYXZiYXItcGtJRWFkT0oubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9CYWRnZS1CQjBLbE1RVi5tanMiO2ltcG9ydHt2IGFzIHIsdSBhcyBhLGggYXMgbyxhZiBhcyBpLGFNIGFzIG4sdyBhcyBsLGkgYXMgZCxhTiBhcyBjLCQgYXMgdX1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e1MgYXMgcH1mcm9tIi4vU3VwcG9ydENvbnZlcnNhdGlvbi1CWERqdmdDSC5tanMiO2ltcG9ydHt3IGFzIG19ZnJvbSIuL2Vycm9yLUpYU0d1dUlBLm1qcyI7aW1wb3J0e2YsdCBhcyB2LGogYXMgZyxxIGFzIHl9ZnJvbSIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRSZXNpemVIYW5kbGUtQlJ1QUdGRTUubWpzIjtpbXBvcnQiLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4vRGFzaGJvYXJkU2lkZWJhclRvZ2dsZS1DSE1NaWJfVy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL1RleHRhcmVhLUJ5dHBhTVZILm1qcyI7Y29uc3Qgaz1TeW1ib2woInN1cHBvcnRUaWNrZXRzIiksYj1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzdXBwb3J0IixfX3NzcklubGluZVJlbmRlcjohMCxhc3luYyBzZXR1cChiKXtsZXQgeCxoO2Eoe3RpdGxlOiJNeSByZXF1ZXN0cyJ9KTtjb25zdCB3PW8oKSxTPXcuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W107KGkoUywic3VwcG9ydDptYW5hZ2UiKXx8aShTLCJzeXN0ZW06bWFuYWdlIikpJiYoW3gsaF09ci53aXRoQXN5bmNDb250ZXh0KCgpPT5uKCIvc3lzdGVtL3RpY2tldHMiKSksYXdhaXQgeCxoKCkpO2NvbnN0IGo9e2NyZWF0ZVRpY2tldDpmdW5jdGlvbihlKXtyZXR1cm4gdSgiL2FwaS9zdXBwb3J0L3RpY2tldHMiLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfSxmZXRjaFRpY2tldHM6ZnVuY3Rpb24oZT17fSl7cmV0dXJuIHUoIi9hcGkvc3VwcG9ydC90aWNrZXRzIix7cXVlcnk6ey4uLmV9fSl9LGZldGNoVGlja2V0OmZ1bmN0aW9uKGUpe3JldHVybiB1KCIvYXBpL3N1cHBvcnQvdGlja2V0cy86aWQiLHtxdWVyeTp7aWQ6ZX19KX0scG9zdE1lc3NhZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSgiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6ZX0sYm9keTp7Ym9keTp0fX0pfX07bCgpO2NvbnN0e2RhdGE6QixlcnJvcjpUfT1kKCJzdXBwb3J0LXRpY2tldHMiLCgpPT5qLmZldGNoVGlja2V0cyh7bGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSl9KTttKFQpO2NvbnN0IE49ci5jb21wdXRlZCgoKT0+Qi52YWx1ZS5pdGVtcyksQz1yLnJlZihudWxsKSwkPXIucmVmKCExKTthc3luYyBmdW5jdGlvbiBzZWxlY3RUaWNrZXQoZSl7Qy52YWx1ZT1hd2FpdCBqLmZldGNoVGlja2V0KGUpfWFzeW5jIGZ1bmN0aW9uIHNlbmRSZXBseShlKXtpZihDLnZhbHVlKXskLnZhbHVlPSEwO3RyeXtDLnZhbHVlPWF3YWl0IGoucG9zdE1lc3NhZ2UoQy52YWx1ZS5pZCxlKSxhd2FpdCBjKCJzdXBwb3J0LXRpY2tldHMiKX1maW5hbGx5eyQudmFsdWU9ITF9fX1yZXR1cm4gci5wcm92aWRlKGsse3RpY2tldHM6TixzZWxlY3RlZDpDLHNlbGVjdFRpY2tldDpzZWxlY3RUaWNrZXQsc2VuZFJlcGx5OnNlbmRSZXBseX0pLChhLG8saSxuKT0+e2NvbnN0IGw9dCxkPXM7byhmKGUsci5tZXJnZVByb3BzKHtpZDoic3VwcG9ydCJ9LG4pLHtoZWFkZXI6ci53aXRoQ3R4KChlLHQscyxhKT0+e2lmKCF0KXJldHVybltyLmNyZWF0ZVZOb2RlKGwse3RpdGxlOiJNeSByZXF1ZXN0cyJ9KV07dChmKGwse3RpdGxlOiJNeSByZXF1ZXN0cyJ9LG51bGwscyxhKSl9KSxib2R5OnIud2l0aEN0eCgoZSx0LHMsYSk9PntpZighdClyZXR1cm5bci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTEgbGc6Z3JpZC1jb2xzLTMgZ2FwLTQgaC1bY2FsYygxMDB2aC04cmVtKV0ifSxbci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImxnOmNvbC1zcGFuLTEgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3cteS1hdXRvIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In0sWzA9PT1yLnVucmVmKE4pLmxlbmd0aD8oci5vcGVuQmxvY2soKSxyLmNyZWF0ZUJsb2NrKCJwIix7a2V5OjAsY2xhc3M6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIE5vIHJlcXVlc3RzIHlldC4gVXNlIEZlZWRiYWNrIG9yIEhlbHAgJiBTdXBwb3J0IHRvIHN0YXJ0IG9uZS4gIikpOnIuY3JlYXRlQ29tbWVudFZOb2RlKCIiLCEwKSwoci5vcGVuQmxvY2soITApLHIuY3JlYXRlQmxvY2soci5GcmFnbWVudCxudWxsLHIucmVuZGVyTGlzdChyLnVucmVmKE4pLGU9PihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soImJ1dHRvbiIse2tleTplLmlkLHR5cGU6ImJ1dHRvbiIsY2xhc3M6WyJ3LWZ1bGwgdGV4dC1sZWZ0IHAtMyBob3ZlcjpiZy1lbGV2YXRlZC81MCIsci51bnJlZihDKT8uaWQ9PT1lLmlkPyJiZy1lbGV2YXRlZCI6IiJdLG9uQ2xpY2s6dD0+c2VsZWN0VGlja2V0KGUuaWQpfSxbci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LFtyLmNyZWF0ZVZOb2RlKCJzcGFuIix7Y2xhc3M6ImZvbnQtbWVkaXVtIHRydW5jYXRlIn0sci50b0Rpc3BsYXlTdHJpbmcoZS5zdWJqZWN0KSwxKSxyLmNyZWF0ZVZOb2RlKGQse3NpemU6InhzIix2YXJpYW50OiJzdWJ0bGUiLGNvbG9yOiJjbG9zZWQiPT09ZS5zdGF0dXM/Im5ldXRyYWwiOiJhY3RpdmUiPT09ZS5zdGF0dXM/InN1Y2Nlc3MiOiJ3YXJuaW5nIn0se2RlZmF1bHQ6ci53aXRoQ3R4KCgpPT5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZS5zdGF0dXMpLDEpXSksXzoyfSwxMDMyLFsiY29sb3IiXSldKSxyLmNyZWF0ZVZOb2RlKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sci50b0Rpc3BsYXlTdHJpbmcoImZlZWRiYWNrIj09PWUua2luZD8iRmVlZGJhY2siOmUuY2F0ZWdvcnkpLDEpXSwxMCxbIm9uQ2xpY2siXSkpKSwxMjgpKV0pLHIuY3JlYXRlVk5vZGUoImRpdiIse2NsYXNzOiJsZzpjb2wtc3Bhbi0yIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiJ9LFtyLnVucmVmKEMpPyhyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2socCx7a2V5OjAsbWVzc2FnZXM6ci51bnJlZihDKS5tZXNzYWdlcywidmlld2VyLXJvbGUiOiJ1c2VyIiwiY2FuLXJlcGx5IjoiY2xvc2VkIiE9PXIudW5yZWYoQykuc3RhdHVzLHNlbmRpbmc6ci51bnJlZigkKSxvblNlbmQ6c2VuZFJlcGx5fSxudWxsLDgsWyJtZXNzYWdlcyIsImNhbi1yZXBseSIsInNlbmRpbmciXSkpOihyLm9wZW5CbG9jaygpLHIuY3JlYXRlQmxvY2soImRpdiIse2tleToxLGNsYXNzOiJoLWZ1bGwgZ3JpZCBwbGFjZS1pdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBTZWxlY3QgYSByZXF1ZXN0IHRvIHZpZXcgdGhlIGNvbnZlcnNhdGlvbi4gIikpXSldKV07dChgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMyBnYXAtNCBoLVtjYWxjKDEwMHZoLThyZW0pXSIke2F9PjxkaXYgY2xhc3M9ImxnOmNvbC1zcGFuLTEgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3cteS1hdXRvIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IiR7YX0+YCksMD09PXIudW5yZWYoTikubGVuZ3RoP3QoYDxwIGNsYXNzPSJwLTQgdGV4dC1zbSB0ZXh0LW11dGVkIiR7YX0+IE5vIHJlcXVlc3RzIHlldC4gVXNlIEZlZWRiYWNrIG9yIEhlbHAgJmFtcDsgU3VwcG9ydCB0byBzdGFydCBvbmUuIDwvcD5gKTp0KCJceDNjIS0tLS1ceDNlIiksdCgiXHgzYyEtLVstLVx4M2UiKSx2KHIudW5yZWYoTiksZT0+e3QoYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iJHtnKFtyLnVucmVmKEMpPy5pZD09PWUuaWQ/ImJnLWVsZXZhdGVkIjoiIiwidy1mdWxsIHRleHQtbGVmdCBwLTMgaG92ZXI6YmctZWxldmF0ZWQvNTAiXSl9IiR7YX0+PGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIiR7YX0+PHNwYW4gY2xhc3M9ImZvbnQtbWVkaXVtIHRydW5jYXRlIiR7YX0+JHt5KGUuc3ViamVjdCl9PC9zcGFuPmApLHQoZihkLHtzaXplOiJ4cyIsdmFyaWFudDoic3VidGxlIixjb2xvcjoiY2xvc2VkIj09PWUuc3RhdHVzPyJuZXV0cmFsIjoiYWN0aXZlIj09PWUuc3RhdHVzPyJzdWNjZXNzIjoid2FybmluZyJ9LHtkZWZhdWx0OnIud2l0aEN0eCgodCxzLGEsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVUZXh0Vk5vZGUoci50b0Rpc3BsYXlTdHJpbmcoZS5zdGF0dXMpLDEpXTtzKGAke3koZS5zdGF0dXMpfWApfSksXzoyfSxzLGEpKSx0KGA8L2Rpdj48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIG10LTEiJHthfT4ke3koImZlZWRiYWNrIj09PWUua2luZD8iRmVlZGJhY2siOmUuY2F0ZWdvcnkpfTwvcD48L2J1dHRvbj5gKX0pLHQoYFx4M2MhLS1dLS1ceDNlPC9kaXY+PGRpdiBjbGFzcz0ibGc6Y29sLXNwYW4tMiBib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW4iJHthfT5gKSxyLnVucmVmKEMpP3QoZihwLHttZXNzYWdlczpyLnVucmVmKEMpLm1lc3NhZ2VzLCJ2aWV3ZXItcm9sZSI6InVzZXIiLCJjYW4tcmVwbHkiOiJjbG9zZWQiIT09ci51bnJlZihDKS5zdGF0dXMsc2VuZGluZzpyLnVucmVmKCQpLG9uU2VuZDpzZW5kUmVwbHl9LG51bGwscyxhKSk6dChgPGRpdiBjbGFzcz0iaC1mdWxsIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCIke2F9PiBTZWxlY3QgYSByZXF1ZXN0IHRvIHZpZXcgdGhlIGNvbnZlcnNhdGlvbi4gPC9kaXY+YCksdCgiPC9kaXY+PC9kaXY+Iil9KSxfOjF9LGkpKX19fSkseD1iLnNldHVwO2Iuc2V0dXA9KGUsdCk9Pntjb25zdCBzPXIudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N1cHBvcnQvYXBwL3BhZ2VzL3N1cHBvcnQudnVlIikseD94KGUsdCk6dm9pZCAwfTtleHBvcnR7YiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3VwcG9ydC1ERHN5bmdFNS5tanMubWFwCg==", "chunks/build/system-BN8e4FoE.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vRGFzaGJvYXJkUGFuZWwtQ0ZLWVNxYzUubWpzIjtpbXBvcnR7XyBhcyBzfWZyb20iLi9EYXNoYm9hcmRUb29sYmFyLUJ0QUJZektILm1qcyI7aW1wb3J0e18gYXMgdH1mcm9tIi4vTmF2aWdhdGlvbk1lbnUtZE5hRkZobWEubWpzIjtpbXBvcnR7diBhcyByLHUgYXMgbyxoIGFzIGksYWYgYXMgbSxhZyBhcyBhfWZyb20iLi9zZXJ2ZXIubWpzIjtpbXBvcnR7XyBhcyBsfWZyb20iLi9EYXNoYm9hcmROYXZiYXItMkpwUXF3SjcubWpzIjtpbXBvcnR7ZiBhcyBufWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vRGFzaGJvYXJkUmVzaXplSGFuZGxlLUJSdUFHRkU1Lm1qcyI7aW1wb3J0Ii4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydCIuL2lzVmFsdWVFcXVhbE9yRXhpc3QtRG1QeW41Yk4ubWpzIjtpbXBvcnQiLi9LYmQtQVdHSnZlWEsubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vUm92aW5nRm9jdXNHcm91cC1CcmFxQ1hIXy5tanMiO2ltcG9ydCIuL3V0aWxzLURJbjdFTFlWLm1qcyI7aW1wb3J0Ii4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnQiLi9vdmVybGF5LUNqeUJ6TDFDLm1qcyI7aW1wb3J0Ii4vVG9vbHRpcC1CUDh6YjhESy5tanMiO2ltcG9ydCIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZE5hdmJhci1wa0lFYWRPSi5tanMiO2ltcG9ydCIuL0Rhc2hib2FyZFNpZGViYXJUb2dnbGUtQ0hNTWliX1cubWpzIjtpbXBvcnQiLi9EYXNoYm9hcmRTaWRlYmFyQ29sbGFwc2UtQ1FDWk90WEgubWpzIjtpbXBvcnQiLi91c2VMYXllclJlZ2lzdHJ5LUM5Q0IyMFVILm1qcyI7Y29uc3QgcD1yLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJzeXN0ZW0iLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwKHApe28oe3RpdGxlOiJTeXN0ZW0gQWRtaW5pc3RyYXRpb24ifSk7Y29uc3QgdT1pKCksZD1yLmNvbXB1dGVkKCgpPT51LmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxjPXIuY29tcHV0ZWQoKCk9Pntjb25zdCBlPVtdO3JldHVybiBtKGQudmFsdWUsInN5c3RlbTptYW5hZ2UiKSYmZS5wdXNoKHtsYWJlbDoiTm90aWZpY2F0aW9ucyIsaWNvbjoiaS1sdWNpZGUtc2VuZCIsdG86Ii9zeXN0ZW0vbm90aWZpY2F0aW9ucyJ9KSxtKGQudmFsdWUsInN1cHBvcnQ6bWFuYWdlIikmJmUucHVzaCh7bGFiZWw6IlRpY2tldHMiLGljb246ImktbHVjaWRlLXRpY2tldCIsdG86Ii9zeXN0ZW0vdGlja2V0cyJ9KSxbZV19KTtyZXR1cm4obyxpLG0scCk9Pntjb25zdCB1PXMsZD10LGY9YTtpKG4oZSxyLm1lcmdlUHJvcHMoe2lkOiJzeXN0ZW0ifSxwKSx7aGVhZGVyOnIud2l0aEN0eCgoZSxzLHQsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVWTm9kZShsLHt0aXRsZToiU3lzdGVtIEFkbWluaXN0cmF0aW9uIn0pLHIuY3JlYXRlVk5vZGUodSxudWxsLHtkZWZhdWx0OnIud2l0aEN0eCgoKT0+W3IuY3JlYXRlVk5vZGUoZCx7aXRlbXM6ci51bnJlZihjKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXSksXzoxfSldO3MobihsLHt0aXRsZToiU3lzdGVtIEFkbWluaXN0cmF0aW9uIn0sbnVsbCx0LG8pKSxzKG4odSxudWxsLHtkZWZhdWx0OnIud2l0aEN0eCgoZSxzLHQsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVWTm9kZShkLHtpdGVtczpyLnVucmVmKGMpLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCw4LFsiaXRlbXMiXSldO3MobihkLHtpdGVtczpyLnVucmVmKGMpLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCx0LG8pKX0pLF86MX0sdCxvKSl9KSxib2R5OnIud2l0aEN0eCgoZSxzLHQsbyk9PntpZighcylyZXR1cm5bci5jcmVhdGVWTm9kZSgiZGl2Iix7Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCJ9LFtyLmNyZWF0ZVZOb2RlKGYpXSldO3MoYDxkaXYgY2xhc3M9ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCIke299PmApLHMobihmLG51bGwsbnVsbCx0LG8pKSxzKCI8L2Rpdj4iKX0pLF86MX0sbSkpfX19KSx1PXAuc2V0dXA7cC5zZXR1cD0oZSxzKT0+e2NvbnN0IHQ9ci51c2VTU1JDb250ZXh0KCk7cmV0dXJuKHQubW9kdWxlc3x8KHQubW9kdWxlcz1uZXcgU2V0KSkuYWRkKCIuLi9sYXllcnMvc3lzdGVtL2FwcC9wYWdlcy9zeXN0ZW0udnVlIiksdT91KGUscyk6dm9pZCAwfTtleHBvcnR7cCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3lzdGVtLUJOOGU0Rm9FLm1qcy5tYXAK", "chunks/build/tickets-B1rOrvLi.mjs": "aW1wb3J0e18gYXMgZX1mcm9tIi4vU2VsZWN0LURpYWlsZlVjLm1qcyI7aW1wb3J0e18gYXMgdH1mcm9tIi4vU3dpdGNoLUJ5VzBCVUxpLm1qcyI7aW1wb3J0e18gYXMgc31mcm9tIi4vQmFkZ2UtQkIwS2xNUVYubWpzIjtpbXBvcnR7diBhcyBhLHUgYXMgbCxhIGFzIGksaSBhcyByLF8gYXMgbywkIGFzIHV9ZnJvbSIuL3NlcnZlci5tanMiO2ltcG9ydHtTIGFzIG59ZnJvbSIuL1N1cHBvcnRDb252ZXJzYXRpb24tQlhEanZnQ0gubWpzIjtpbXBvcnR7dyBhcyBkfWZyb20iLi9lcnJvci1KWFNHdXVJQS5tanMiO2ltcG9ydHtmIGFzIGMsbyBhcyBtLHQgYXMgcCxqIGFzIGYscSBhcyB2fWZyb20iLi4vcm91dGVzL3JlbmRlcmVyLm1qcyI7aW1wb3J0Ii4vdXNlRGlyZWN0aW9uLUQyYW1PTHFGLm1qcyI7aW1wb3J0Ii4vdXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzIjtpbXBvcnQiLi9Qb3BwZXJBcnJvdy1CRXlXVUppUS5tanMiO2ltcG9ydCIuL3V0aWxzLUJSSWpSU2h4Lm1qcyI7aW1wb3J0Ii4vaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudC1Ca19BVlNTby5tanMiO2ltcG9ydCIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi91c2VSZXNvbHZlZFZhcmlhbnRzLURoSHU2dlJLLm1qcyI7aW1wb3J0Ii4vTGFiZWwtQlVXTHp5R0wubWpzIjtpbXBvcnQiLi9WaXN1YWxseUhpZGRlbklucHV0LUQ3bUdQX0pXLm1qcyI7aW1wb3J0Ii4uL18vc2hhcmVkLmVzbS1idW5kbGVyLm1qcyI7aW1wb3J0Ii4vVGV4dGFyZWEtQnl0cGFNVkgubWpzIjtjb25zdCB4PWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IlN5c3RlbVRpY2tldEluYm94IixfX3NzcklubGluZVJlbmRlcjohMCxzZXR1cChsKXtjb25zdCB4PXtmZXRjaFRpY2tldHM6ZnVuY3Rpb24oZT17fSl7cmV0dXJuIHUoIi9hcGkvc3lzdGVtL3RpY2tldHMiLHtxdWVyeTp7Li4uZX19KX0sZmV0Y2hUaWNrZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoIi9hcGkvc3lzdGVtL3RpY2tldHMvOmlkIix7cXVlcnk6e2lkOmV9fSl9LHBvc3RNZXNzYWdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoIi9hcGkvc3lzdGVtL3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6ZX0sYm9keTp7Ym9keTp0fX0pfSx1cGRhdGVUaWNrZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSgiL2FwaS9zeXN0ZW0vdGlja2V0cy86aWQiLHttZXRob2Q6IlBBVENIIixxdWVyeTp7aWQ6ZX0sYm9keTp0fSl9fSx5PWkoKSxiPWEucmVmKCksZz1hLnJlZigpLGs9YS5yZWYoITEpLFM9W3tsYWJlbDoiQWxsIHN0YXR1c2VzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiT3BlbiIsdmFsdWU6Im9wZW4ifSx7bGFiZWw6IkFjdGl2ZSIsdmFsdWU6ImFjdGl2ZSJ9LHtsYWJlbDoiQ2xvc2VkIix2YWx1ZToiY2xvc2VkIn1dLGo9W3tsYWJlbDoiQWxsIGtpbmRzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiRmVlZGJhY2siLHZhbHVlOiJmZWVkYmFjayJ9LHtsYWJlbDoiU3VwcG9ydCIsdmFsdWU6InN1cHBvcnQifV0se2RhdGE6dyxlcnJvcjpoLHJlZnJlc2g6X309cigic3lzdGVtLXRpY2tldHMiLCgpPT54LmZldGNoVGlja2V0cyh7c3RhdHVzOmIudmFsdWUsa2luZDpnLnZhbHVlLG1pbmVPbmx5OmsudmFsdWUsbGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSksd2F0Y2g6W2IsZyxrXSxzZXJ2ZXI6ITF9KTtkKGgpO2NvbnN0IEM9YS5yZWYobnVsbCksVD1hLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gcmVwbHkoZSl7aWYoQy52YWx1ZSl7VC52YWx1ZT0hMDt0cnl7Qy52YWx1ZT1hd2FpdCB4LnBvc3RNZXNzYWdlKEMudmFsdWUuaWQsZSksYXdhaXQgXygpfWZpbmFsbHl7VC52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIHNldFN0YXR1cyhlKXtDLnZhbHVlJiYoQy52YWx1ZT1hd2FpdCB4LnVwZGF0ZVRpY2tldChDLnZhbHVlLmlkLHtzdGF0dXM6ZX0pLGF3YWl0IF8oKSx5LmFkZCh7dGl0bGU6YE1hcmtlZCAke2V9YCxjb2xvcjoic3VjY2VzcyJ9KSl9cmV0dXJuKGwsaSxyLHUpPT57Y29uc3QgZD1lLHg9dCx5PXMsaD1vO2koYDxkaXYke20oYS5tZXJnZVByb3BzKHtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtMyJ9LHUpKX0+PGRpdiBjbGFzcz0iZmxleCBmbGV4LXdyYXAgZ2FwLTIiPmApLGkoYyhkLHttb2RlbFZhbHVlOmEudW5yZWYoYiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmU9PmEuaXNSZWYoYik/Yi52YWx1ZT1lOm51bGwsaXRlbXM6UywidmFsdWUta2V5IjoidmFsdWUiLGNsYXNzOiJ3LTQwIn0sbnVsbCxyKSksaShjKGQse21vZGVsVmFsdWU6YS51bnJlZihnKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZT0+YS5pc1JlZihnKT9nLnZhbHVlPWU6bnVsbCxpdGVtczpqLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsY2xhc3M6InctNDAifSxudWxsLHIpKSxpKGMoeCx7bW9kZWxWYWx1ZTphLnVucmVmKGspLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplPT5hLmlzUmVmKGspP2sudmFsdWU9ZTpudWxsLGxhYmVsOiJBc3NpZ25lZCB0byBtZSJ9LG51bGwscikpLGkoJzwvZGl2PjxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTEgbGc6Z3JpZC1jb2xzLTMgZ2FwLTQgaC1bY2FsYygxMDB2aC0xNHJlbSldIj48ZGl2IGNsYXNzPSJsZzpjb2wtc3Bhbi0xIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LXktYXV0byBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCI+JyksMD09PWEudW5yZWYodykuaXRlbXMubGVuZ3RoP2koJzxwIGNsYXNzPSJwLTQgdGV4dC1zbSB0ZXh0LW11dGVkIj4gTm8gdGlja2V0cy4gPC9wPicpOmkoIlx4M2MhLS0tLVx4M2UiKSxpKCJceDNjIS0tWy0tXHgzZSIpLHAoYS51bnJlZih3KS5pdGVtcyxlPT57aShgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSIke2YoW2EudW5yZWYoQyk/LmlkPT09ZS5pZD8iYmctZWxldmF0ZWQiOiIiLCJ3LWZ1bGwgdGV4dC1sZWZ0IHAtMyBob3ZlcjpiZy1lbGV2YXRlZC81MCJdKX0iPjxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiI+PHNwYW4gY2xhc3M9ImZvbnQtbWVkaXVtIHRydW5jYXRlIj4ke3YoZS5zdWJqZWN0KX08L3NwYW4+YCksaShjKHkse3NpemU6InhzIix2YXJpYW50OiJzdWJ0bGUiLGNvbG9yOiJjbG9zZWQiPT09ZS5zdGF0dXM/Im5ldXRyYWwiOiJhY3RpdmUiPT09ZS5zdGF0dXM/InN1Y2Nlc3MiOiJ3YXJuaW5nIn0se2RlZmF1bHQ6YS53aXRoQ3R4KCh0LHMsbCxpKT0+e2lmKCFzKXJldHVyblthLmNyZWF0ZVRleHRWTm9kZShhLnRvRGlzcGxheVN0cmluZyhlLnN0YXR1cyksMSldO3MoYCR7dihlLnN0YXR1cyl9YCl9KSxfOjJ9LHIpKSxpKGA8L2Rpdj48cCBjbGFzcz0idGV4dC14cyB0ZXh0LW11dGVkIG10LTEiPiR7digiZmVlZGJhY2siPT09ZS5raW5kPyJGZWVkYmFjayI6ZS5jYXRlZ29yeSl9IGApLGUuYXNzaWduZWRUbz9pKCI8c3Bhbj4gwrcgY2xhaW1lZDwvc3Bhbj4iKTppKCJceDNjIS0tLS1ceDNlIiksaSgiPC9wPjwvYnV0dG9uPiIpfSksaSgnXHgzYyEtLV0tLVx4M2U8L2Rpdj48ZGl2IGNsYXNzPSJsZzpjb2wtc3Bhbi0yIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiBmbGV4IGZsZXgtY29sIj4nKSxhLnVucmVmKEMpPyhpKGBceDNjIS0tWy0tXHgzZTxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCBwLTMiPjxkaXYgY2xhc3M9Im1pbi13LTAiPjxwIGNsYXNzPSJmb250LW1lZGl1bSB0cnVuY2F0ZSI+JHt2KGEudW5yZWYoQykuc3ViamVjdCl9PC9wPjxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtbXV0ZWQgdHJ1bmNhdGUiPiR7dihhLnVucmVmKEMpLnJlcXVlc3Rlcj8ubmFtZT8/YS51bnJlZihDKS5yZXF1ZXN0ZXI/LmVtYWlsKX08L3A+PC9kaXY+PGRpdiBjbGFzcz0iZmxleCBnYXAtMiI+YCksaShjKGgse3NpemU6InhzIix2YXJpYW50OiJzb2Z0IixsYWJlbDoiQWN0aXZlIixkaXNhYmxlZDoiYWN0aXZlIj09PWEudW5yZWYoQykuc3RhdHVzLG9uQ2xpY2s6ZT0+c2V0U3RhdHVzKCJhY3RpdmUiKX0sbnVsbCxyKSksaShjKGgse3NpemU6InhzIix2YXJpYW50OiJzb2Z0Iixjb2xvcjoibmV1dHJhbCIsbGFiZWw6IkNsb3NlIixkaXNhYmxlZDoiY2xvc2VkIj09PWEudW5yZWYoQykuc3RhdHVzLG9uQ2xpY2s6ZT0+c2V0U3RhdHVzKCJjbG9zZWQiKX0sbnVsbCxyKSksaSgiPC9kaXY+PC9kaXY+IiksaShjKG4se2NsYXNzOiJmbGV4LTEiLG1lc3NhZ2VzOmEudW5yZWYoQykubWVzc2FnZXMsInZpZXdlci1yb2xlIjoiYWdlbnQiLCJjYW4tcmVwbHkiOiJjbG9zZWQiIT09YS51bnJlZihDKS5zdGF0dXMsc2VuZGluZzphLnVucmVmKFQpLG9uU2VuZDpyZXBseX0sbnVsbCxyKSksaSgiXHgzYyEtLV0tLVx4M2UiKSk6aSgnPGRpdiBjbGFzcz0iaC1mdWxsIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCI+IFNlbGVjdCBhIHRpY2tldCB0byByZXNwb25kLiA8L2Rpdj4nKSxpKCI8L2Rpdj48L2Rpdj48L2Rpdj4iKX19fSkseT14LnNldHVwO3guc2V0dXA9KGUsdCk9Pntjb25zdCBzPWEudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvY29tcG9uZW50cy9TeXN0ZW0vU3lzdGVtVGlja2V0SW5ib3gudnVlIikseT95KGUsdCk6dm9pZCAwfTtjb25zdCBiPU9iamVjdC5hc3NpZ24oeCx7X19uYW1lOiJTeXN0ZW1UaWNrZXRJbmJveCJ9KSxnPWEuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6InRpY2tldHMiLF9fc3NySW5saW5lUmVuZGVyOiEwLHNldHVwOmU9PihsKHt0aXRsZToiU3lzdGVtIMK3IFRpY2tldHMifSksKGUsdCxzLGEpPT57dChjKGIsYSxudWxsLHMpKX0pfSksaz1nLnNldHVwO2cuc2V0dXA9KGUsdCk9Pntjb25zdCBzPWEudXNlU1NSQ29udGV4dCgpO3JldHVybihzLm1vZHVsZXN8fChzLm1vZHVsZXM9bmV3IFNldCkpLmFkZCgiLi4vbGF5ZXJzL3N5c3RlbS9hcHAvcGFnZXMvc3lzdGVtL3RpY2tldHMudnVlIiksaz9rKGUsdCk6dm9pZCAwfTtleHBvcnR7ZyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGlja2V0cy1CMXJPcnZMaS5tanMubWFwCg==", "chunks/build/url-BfBoyjJZ.mjs": "aW1wb3J0e3AgYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e2FaIGFzIGV9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIHVzZVJlcXVlc3RVUkwocyl7cmV0dXJuIGUocigpLHMpfWV4cG9ydHt1c2VSZXF1ZXN0VVJMIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD11cmwtQmZCb3lqSloubWpzLm1hcAo=", "chunks/build/useBillingApi-Co-bTSKT.mjs": "aW1wb3J0eyQgYXMgbn1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gdXNlQmlsbGluZ0FwaSgpe3JldHVybntmZXRjaEJhbGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbigiL2FwaS9wYXltZW50cy9iaWxsaW5nL2JhbGFuY2UiKX0sZmV0Y2hUcmFuc2FjdGlvbnM6ZnVuY3Rpb24oaT0xLHQ9MjApe3JldHVybiBuKGAvYXBpL3BheW1lbnRzL2JpbGxpbmcvdHJhbnNhY3Rpb25zP3BhZ2U9JHtpfSZsaW1pdD0ke3R9YCl9LGNoZWNrb3V0OmZ1bmN0aW9uKGkpe3JldHVybiBuKCIvYXBpL3BheW1lbnRzL3NlcGF5L2NoZWNrb3V0Iix7bWV0aG9kOiJQT1NUIixib2R5OnthbW91bnQ6aX19KX0sZmV0Y2hUcmFuc2FjdGlvblN0YXR1czpmdW5jdGlvbihpKXtyZXR1cm4gbihgL2FwaS9wYXltZW50cy9zZXBheS9zdGF0dXM/aWQ9JHtpfWApfSxmZXRjaEJpbGxpbmdTZXR0aW5nczpmdW5jdGlvbigpe3JldHVybiBuKCIvYXBpL29yZ2FuaXphdGlvbi9pbnZvaWNlL3NldHRpbmdzIil9LHVwZGF0ZUJpbGxpbmdTZXR0aW5nczpmdW5jdGlvbihpKXtyZXR1cm4gbigiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZS9zZXR0aW5ncyIse21ldGhvZDoiUEFUQ0giLGJvZHk6aX0pfSxmZXRjaEludm9pY2VzOmZ1bmN0aW9uKCl7cmV0dXJuIG4oIi9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2UiKX0sY3JlYXRlSW52b2ljZTpmdW5jdGlvbihpKXtyZXR1cm4gbigiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZSIse21ldGhvZDoiUE9TVCIsYm9keTppfSl9fX1leHBvcnR7dXNlQmlsbGluZ0FwaSBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlQmlsbGluZ0FwaS1Dby1iVFNLVC5tanMubWFwCg==", "chunks/build/useDirection-D2amOLqF.mjs": "aW1wb3J0e1cgYXMgcix2IGFzIGV9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIHVzZURpcmVjdGlvbih0KXtjb25zdCBpPXIoe2RpcjplLnJlZigibHRyIil9KTtyZXR1cm4gZS5jb21wdXRlZCgoKT0+dD8udmFsdWV8fGkuZGlyPy52YWx1ZXx8Imx0ciIpfWV4cG9ydHt1c2VEaXJlY3Rpb24gYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMubWFwCg==", "chunks/build/useFilter-ClCZaoi8.mjs": "aW1wb3J0e3YgYXMgZSxLIGFzIHR9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIHVzZUZpbHRlciQxKHQpe2NvbnN0IHI9ZS5jb21wdXRlZCgoKT0+ZS51bnJlZih0KSksbj1lLmNvbXB1dGVkKCgpPT5uZXcgSW50bC5Db2xsYXRvcigiZW4iLHt1c2FnZToic2VhcmNoIiwuLi5yLnZhbHVlfSkpO3JldHVybntzdGFydHNXaXRoOihlLHQpPT4wPT09dC5sZW5ndGh8fChlPWUubm9ybWFsaXplKCJORkMiKSx0PXQubm9ybWFsaXplKCJORkMiKSwwPT09bi52YWx1ZS5jb21wYXJlKGUuc2xpY2UoMCx0Lmxlbmd0aCksdCkpLGVuZHNXaXRoOihlLHQpPT4wPT09dC5sZW5ndGh8fChlPWUubm9ybWFsaXplKCJORkMiKSx0PXQubm9ybWFsaXplKCJORkMiKSwwPT09bi52YWx1ZS5jb21wYXJlKGUuc2xpY2UoLXQubGVuZ3RoKSx0KSksY29udGFpbnM6KGUsdCk9PntpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7ZT1lLm5vcm1hbGl6ZSgiTkZDIik7bGV0IHI9MDtjb25zdCBvPSh0PXQubm9ybWFsaXplKCJORkMiKSkubGVuZ3RoO2Zvcig7citvPD1lLmxlbmd0aDtyKyspe2NvbnN0IHM9ZS5zbGljZShyLHIrbyk7aWYoMD09PW4udmFsdWUuY29tcGFyZSh0LHMpKXJldHVybiEwfXJldHVybiExfX19ZnVuY3Rpb24gdXNlRmlsdGVyKCl7Y29uc3R7Y29udGFpbnM6ZSxzdGFydHNXaXRoOnJ9PXVzZUZpbHRlciQxKHtzZW5zaXRpdml0eToiYmFzZSJ9KTtmdW5jdGlvbiBzY29yZSh0LG4pe3JldHVybiBlKHQsbik/ZShuLHQpPzA6cih0LG4pPzE6MjpudWxsfWZ1bmN0aW9uIHNjb3JlSXRlbShlLHIsbil7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gc2NvcmUoU3RyaW5nKGUpLHIpO2xldCBvPW51bGw7Zm9yKGNvbnN0IHMgb2Ygbil7Y29uc3Qgbj10KGUscyk7aWYobnVsbD09biljb250aW51ZTtjb25zdCBjPUFycmF5LmlzQXJyYXkobik/bi5tYXAoU3RyaW5nKTpbU3RyaW5nKG4pXTtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PXNjb3JlKGUscik7aWYobnVsbCE9PXQmJihudWxsPT09b3x8dDxvKSYmKG89dCksMD09PW8pcmV0dXJuIDB9fXJldHVybiBvfXJldHVybntzY29yZTpzY29yZSxzY29yZUl0ZW06c2NvcmVJdGVtLGZpbHRlcjpmdW5jdGlvbihlLHQscil7aWYoIXQpcmV0dXJuIGU7Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXtjb25zdCBlPXNjb3JlSXRlbShvLHQscik7bnVsbCE9PWUmJm4ucHVzaCh7aXRlbTpvLHNjb3JlOmV9KX1yZXR1cm4gbi5zb3J0KChlLHQpPT5lLnNjb3JlLXQuc2NvcmUpLG4ubWFwKCh7aXRlbTplfSk9PmUpfSxmaWx0ZXJHcm91cHM6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0P2UubWFwKGU9Pntjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpe2lmKG51bGw9PW8pY29udGludWU7aWYoci5pc1N0cnVjdHVyYWw/LihvKSl7bi5wdXNoKHtpdGVtOm8sc2NvcmU6LTF9KTtjb250aW51ZX1jb25zdCBlPXNjb3JlSXRlbShvLHQsci5maWVsZHMpO251bGwhPT1lJiZuLnB1c2goe2l0ZW06byxzY29yZTplfSl9cmV0dXJuIG4uc29ydCgoZSx0KT0+ZS5zY29yZS10LnNjb3JlKSxuLm1hcCgoe2l0ZW06ZX0pPT5lKX0pLmZpbHRlcihlPT5lLnNvbWUoZT0+IXIuaXNTdHJ1Y3R1cmFsPy4oZSkpKTplfX19ZXhwb3J0e3VzZUZpbHRlciQxIGFzIGEsdXNlRmlsdGVyIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2VGaWx0ZXItQ2xDWmFvaTgubWpzLm1hcAo=", "chunks/build/useFormControl-BM-MfWmo.mjs": "aW1wb3J0e3YgYXMgbyxWIGFzIHJ9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIHVzZUZvcm1Db250cm9sKGUpe3JldHVybiBvLmNvbXB1dGVkKCgpPT4hby50b1ZhbHVlKGUpfHxCb29sZWFuKHIoZSk/LmNsb3Nlc3QoImZvcm0iKSkpfWV4cG9ydHt1c2VGb3JtQ29udHJvbCBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlRm9ybUNvbnRyb2wtQk0tTWZXbW8ubWpzLm1hcAo=", "chunks/build/useInfiniteList-UUgnbSmz.mjs": "aW1wb3J0e3YgYXMgZSxhQiBhcyBhfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VJbmZpbml0ZUxpc3QodCxpPXt9KXtjb25zdCByPWkubGltaXQ/PzIwLHM9ZS5yZWYoW10pLGw9ZS5yZWYoIiIpLG89ZS5yZWYoMCksdT1lLnJlZighMCksbj1lLnJlZighMSk7YXN5bmMgZnVuY3Rpb24gbG9hZE1vcmUoKXtpZighbi52YWx1ZSYmdS52YWx1ZSl7bi52YWx1ZT0hMDt0cnl7Y29uc3QgZT1hd2FpdCB0KHtxOmwudmFsdWUsbGltaXQ6cixvZmZzZXQ6by52YWx1ZX0pO3MudmFsdWUucHVzaCguLi5lLml0ZW1zKSxvLnZhbHVlKz1lLml0ZW1zLmxlbmd0aCx1LnZhbHVlPWUuaGFzTW9yZX1maW5hbGx5e24udmFsdWU9ITF9fX1mdW5jdGlvbiByZXNldCgpe3MudmFsdWU9W10sby52YWx1ZT0wLHUudmFsdWU9ITB9cmV0dXJuIGEobCxhc3luYygpPT57cmVzZXQoKSxhd2FpdCBsb2FkTW9yZSgpfSx7ZGVib3VuY2U6MzAwfSksITEhPT1pLmltbWVkaWF0ZSYmbG9hZE1vcmUoKSx7aXRlbXM6cyxxOmwsaGFzTW9yZTp1LGxvYWRpbmc6bixsb2FkTW9yZTpsb2FkTW9yZSxyZXNldDpyZXNldH19ZXhwb3J0e3VzZUluZmluaXRlTGlzdCBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlSW5maW5pdGVMaXN0LVVVZ25iU216Lm1qcy5tYXAK", "chunks/build/useLayerRegistry-C9CB20UH.mjs": "aW1wb3J0e2FlIGFzIGUsdiBhcyBhfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VMYXllclJlZ2lzdHJ5KCl7Y29uc3QgdD1lKCJsYXllclJlZ2lzdHJ5Lm5hdiIsKCk9PltdKSxuPWUoImxheWVyUmVnaXN0cnkub3ZlcmxheXMiLCgpPT5bXSkscj1lKCJsYXllclJlZ2lzdHJ5Lm5hdmJhciIsKCk9PltdKTtyZXR1cm57bmF2SXRlbXM6dCxvdmVybGF5czpuLG5hdmJhckl0ZW1zOnIsY29udHJpYnV0ZTpmdW5jdGlvbihlKXtpZihlLm5hdkl0ZW1zPy5sZW5ndGgpe2NvbnN0IGE9bmV3IFNldCh0LnZhbHVlLm1hcChlPT5lLmlkKSk7dC52YWx1ZT1bLi4udC52YWx1ZSwuLi5lLm5hdkl0ZW1zLmZpbHRlcihlPT4hYS5oYXMoZS5pZCkpXX1pZihlLm92ZXJsYXlzPy5sZW5ndGgpe2NvbnN0IHQ9bmV3IFNldChuLnZhbHVlLm1hcChlPT5lLmlkKSk7bi52YWx1ZT1bLi4ubi52YWx1ZSwuLi5lLm92ZXJsYXlzLmZpbHRlcihlPT4hdC5oYXMoZS5pZCkpLm1hcChlPT4oey4uLmUsY29tcG9uZW50OmEubWFya1JhdyhlLmNvbXBvbmVudCl9KSldfWlmKGUubmF2YmFySXRlbXM/Lmxlbmd0aCl7Y29uc3QgdD1uZXcgU2V0KHIudmFsdWUubWFwKGU9PmUuaWQpKTtyLnZhbHVlPVsuLi5yLnZhbHVlLC4uLmUubmF2YmFySXRlbXMuZmlsdGVyKGU9PiF0LmhhcyhlLmlkKSkubWFwKGU9Pih7Li4uZSxjb21wb25lbnQ6YS5tYXJrUmF3KGUuY29tcG9uZW50KX0pKV19fX19ZXhwb3J0e3VzZUxheWVyUmVnaXN0cnkgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZUxheWVyUmVnaXN0cnktQzlDQjIwVUgubWpzLm1hcAo=", "chunks/build/useProductApi-BZuNjOhk.mjs": "aW1wb3J0eyQgYXMgdH1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gdXNlUHJvZHVjdEFwaSgpe3JldHVybntmZXRjaFByb2R1Y3RzOmZ1bmN0aW9uKHIpe3JldHVybiB0KCIvYXBpL3Byb2R1Y3RzIix7cXVlcnk6cj97c3RhdHVzOnJ9OnZvaWQgMH0pfSxmZXRjaFByb2R1Y3Q6ZnVuY3Rpb24ocil7cmV0dXJuIHQoYC9hcGkvcHJvZHVjdHMvJHtyfWApfSxjcmVhdGVQcm9kdWN0OmZ1bmN0aW9uKHIpe3JldHVybiB0KCIvYXBpL3Byb2R1Y3RzIix7bWV0aG9kOiJQT1NUIixib2R5OnJ9KX0sdXBkYXRlUHJvZHVjdDpmdW5jdGlvbihyLHUpe3JldHVybiB0KGAvYXBpL3Byb2R1Y3RzLyR7cn1gLHttZXRob2Q6IlBBVENIIixib2R5OnV9KX0sZGVsZXRlUHJvZHVjdDpmdW5jdGlvbihyKXtyZXR1cm4gdChgL2FwaS9wcm9kdWN0cy8ke3J9YCx7bWV0aG9kOiJERUxFVEUifSl9fX1leHBvcnR7dXNlUHJvZHVjdEFwaSBhcyB1fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlUHJvZHVjdEFwaS1CWnVOak9oay5tanMubWFwCg==", "chunks/build/useProjectApi-CTL2K6JV.mjs": "aW1wb3J0eyQgYXMgZX1mcm9tIi4vc2VydmVyLm1qcyI7ZnVuY3Rpb24gdXNlUHJvamVjdEFwaSgpe3JldHVybntmZXRjaFByb2plY3RzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoIi9hcGkvcHJvamVjdHMiKX0sZmV0Y2hQcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBlKGAvYXBpL3Byb2plY3RzLyR7dH1gKX0sY3JlYXRlUHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gZSgiL2FwaS9wcm9qZWN0cyIse21ldGhvZDoiUE9TVCIsYm9keTp0fSl9LHVwZGF0ZVByb2plY3Q6ZnVuY3Rpb24odCxyKXtyZXR1cm4gZShgL2FwaS9wcm9qZWN0cy8ke3R9YCx7bWV0aG9kOiJQQVRDSCIsYm9keTpyfSl9LGRlbGV0ZVByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fWAse21ldGhvZDoiREVMRVRFIn0pfSxhZGRQcm9kdWN0OmZ1bmN0aW9uKHQscil7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fS9wcm9kdWN0c2Ase21ldGhvZDoiUE9TVCIsYm9keTpyfSl9LHJlbW92ZVByb2R1Y3Q6ZnVuY3Rpb24odCxyKXtyZXR1cm4gZShgL2FwaS9wcm9qZWN0cy8ke3R9L3Byb2R1Y3RzLyR7cn1gLHttZXRob2Q6IkRFTEVURSJ9KX0sYWRkTWVtYmVyOmZ1bmN0aW9uKHQscil7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fS9tZW1iZXJzYCx7bWV0aG9kOiJQT1NUIixib2R5OnJ9KX0scmVtb3ZlTWVtYmVyOmZ1bmN0aW9uKHQscil7cmV0dXJuIGUoYC9hcGkvcHJvamVjdHMvJHt0fS9tZW1iZXJzLyR7cn1gLHttZXRob2Q6IkRFTEVURSJ9KX19fWV4cG9ydHt1c2VQcm9qZWN0QXBpIGFzIHV9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2VQcm9qZWN0QXBpLUNUTDJLNkpWLm1qcy5tYXAK", "chunks/build/useResolvedVariants-DhHu6vRK.mjs": "aW1wb3J0e2QgYXMgcyx2IGFzIGEsSyBhcyBlfWZyb20iLi9zZXJ2ZXIubWpzIjtmdW5jdGlvbiB1c2VSZXNvbHZlZFZhcmlhbnRzKHQsbyxyLHUsbil7Y29uc3QgaT1zKCksZD17fTtmb3IoY29uc3QgcyBvZiB1KWRbc109YS5jb21wdXRlZCgoKT0+KHZvaWQgMCE9PW4/LltzXT9hLnRvVmFsdWUobltzXSk6ZShvLHMpKT8/aS51aT8uW3RdPy5kZWZhdWx0VmFyaWFudHM/LltzXT8/ci5kZWZhdWx0VmFyaWFudHM/LltzXSk7cmV0dXJuIGR9ZXhwb3J0e3VzZVJlc29sdmVkVmFyaWFudHMgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZVJlc29sdmVkVmFyaWFudHMtRGhIdTZ2UksubWpzLm1hcAo=", "chunks/build/utils-BRIjRShx.mjs": "aW1wb3J0e3YgYXMgZSxXIGFzIHQsTSBhcyBuLGEzIGFzIHIsVSBhcyBhLFAgYXMgbyxWIGFzIHMsYTQgYXMgdSxYIGFzIGksYTUgYXMgbCxhNiBhcyBjLGE3IGFzIGQsYTggYXMgZixhOSBhcyB2LGFhIGFzIHAsYWIgYXMgeSxhYyBhcyBtLGFkIGFzIGh9ZnJvbSIuL3NlcnZlci5tanMiO2Z1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcj10W25dO2lmKCJzdHJpbmciIT10eXBlb2YgciYmIUFycmF5LmlzQXJyYXkocikpZm9yKGNvbnN0IHQgaW4gcilpZigiZGVmYXVsdCIhPT10JiYhKHQgaW4gZSkpe2NvbnN0IG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLHQpO24mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gclt0XX19KX19cmV0dXJuIE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKX1jb25zdCB3PV9tZXJnZU5hbWVzcGFjZXMoe19fcHJvdG9fXzpudWxsfSxbZV0pLEU9cCgoKT0+e2NvbnN0IG49ZS5yZWYobmV3IE1hcCk7ZS5yZWYoKTtjb25zdCByPWUuY29tcHV0ZWQoKCk9Pntmb3IoY29uc3QgZSBvZiBuLnZhbHVlLnZhbHVlcygpKWlmKGUpcmV0dXJuITA7cmV0dXJuITF9KTtyZXR1cm4gdCh7c2Nyb2xsQm9keTplLnJlZighMCl9KSxlLndhdGNoKHIsKGUsdCk9Pnt9LHtpbW1lZGlhdGU6ITAsZmx1c2g6InN5bmMifSksbn0pO2Z1bmN0aW9uIHVzZUJvZHlTY3JvbGxMb2NrKHQpe2NvbnN0IG49TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsNykscj1FKCk7ci52YWx1ZS5zZXQobix0Pz8hMSk7Y29uc3QgYT1lLmNvbXB1dGVkKHtnZXQ6KCk9PnIudmFsdWUuZ2V0KG4pPz8hMSxzZXQ6ZT0+ci52YWx1ZS5zZXQobixlKX0pO3JldHVybiB1KCksYX12YXIgZz1uZXcgV2Vha01hcCxiPW5ldyBXZWFrTWFwLEE9e30sUD0wLHVud3JhcEhvc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJihlLmhvc3R8fHVud3JhcEhvc3QoZS5wYXJlbnROb2RlKSl9LGFwcGx5QXR0cmlidXRlVG9PdGhlcnM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7aWYoZS5jb250YWlucyh0KSlyZXR1cm4gdDt2YXIgbj11bndyYXBIb3N0KHQpO3JldHVybiBuJiZlLmNvbnRhaW5zKG4pP246bnVsbH0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gQm9vbGVhbihlKX0pfSh0LEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pO0Fbbl18fChBW25dPW5ldyBXZWFrTWFwKTt2YXIgbz1BW25dLHM9W10sdT1uZXcgU2V0LGk9bmV3IFNldChhKSxrZWVwPWZ1bmN0aW9uKGUpe2UmJiF1LmhhcyhlKSYmKHUuYWRkKGUpLGtlZXAoZS5wYXJlbnROb2RlKSl9O2EuZm9yRWFjaChrZWVwKTt2YXIgZGVlcD1mdW5jdGlvbihlKXtlJiYhaS5oYXMoZSkmJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5jaGlsZHJlbixmdW5jdGlvbihlKXtpZih1LmhhcyhlKSlkZWVwKGUpO2Vsc2UgdHJ5e3ZhciB0PWUuZ2V0QXR0cmlidXRlKHIpLGE9bnVsbCE9PXQmJiJmYWxzZSIhPT10LGk9KGcuZ2V0KGUpfHwwKSsxLGw9KG8uZ2V0KGUpfHwwKSsxO2cuc2V0KGUsaSksby5zZXQoZSxsKSxzLnB1c2goZSksMT09PWkmJmEmJmIuc2V0KGUsITApLDE9PT1sJiZlLnNldEF0dHJpYnV0ZShuLCJ0cnVlIiksYXx8ZS5zZXRBdHRyaWJ1dGUociwidHJ1ZSIpfWNhdGNoKGUpe319KX07cmV0dXJuIGRlZXAodCksdS5jbGVhcigpLFArKyxmdW5jdGlvbigpe3MuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1nLmdldChlKS0xLGE9by5nZXQoZSktMTtnLnNldChlLHQpLG8uc2V0KGUsYSksdHx8KGIuaGFzKGUpfHxlLnJlbW92ZUF0dHJpYnV0ZShyKSxiLmRlbGV0ZShlKSksYXx8ZS5yZW1vdmVBdHRyaWJ1dGUobil9KSwtLVB8fChnPW5ldyBXZWFrTWFwLGc9bmV3IFdlYWtNYXAsYj1uZXcgV2Vha01hcCxBPXt9KX19O2Z1bmN0aW9uIHVzZUhpZGVPdGhlcnModCl7bGV0IG47ZS53YXRjaCgoKT0+cyh0KSxlPT57bGV0IHQ9ITE7dHJ5e3Q9ISFlPy5jbG9zZXN0KCJbcG9wb3Zlcl06bm90KDpwb3BvdmVyLW9wZW4pIil9Y2F0Y2h7fWUmJiF0P249ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSJkYXRhLWFyaWEtaGlkZGVuIik7dmFyIHI9QXJyYXkuZnJvbShBcnJheS5pc0FycmF5KGUpP2U6W2VdKSxhPW51bGw7cmV0dXJuIGE/KHIucHVzaC5hcHBseShyLEFycmF5LmZyb20oYS5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1saXZlXSwgc2NyaXB0IikpKSxhcHBseUF0dHJpYnV0ZVRvT3RoZXJzKHIsYSxuLCJhcmlhLWhpZGRlbiIpKTpmdW5jdGlvbigpe3JldHVybiBudWxsfX0oZSk6biYmbigpfSl9bGV0IEQ9MDtmdW5jdGlvbiB1c2VJZChuLHI9InJla2EiKXtpZihuKXJldHVybiBuO2xldCBhO2lmKCJ1c2VJZCJpbiB3KWE9ZS51c2VJZD8uKCk7ZWxzZXtjb25zdCBlPXQoe3VzZUlkOnZvaWQgMH0pO2E9ZS51c2VJZD8uKCk/PyIiKyArK0R9cmV0dXJuIHI/YCR7cn0tJHthfWA6YX1jb25zdCBPPWUucmVhY3RpdmUoe2xheWVyc1Jvb3Q6bmV3IFNldCxsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZDpuZXcgU2V0LG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM6dm9pZCAwLGJyYW5jaGVzOm5ldyBTZXR9KTt2YXIgQz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyIixwcm9wczp7ZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZGlzbWlzcyJdLHNldHVwKHQse2VtaXQ6c30pe2NvbnN0IHU9dCxpPXMse2ZvcndhcmRSZWY6bCxjdXJyZW50RWxlbWVudDpjfT1uKCksZD1lLmNvbXB1dGVkKCgpPT5jLnZhbHVlPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzLmRvY3VtZW50KSxmPWUuY29tcHV0ZWQoKCk9Pk8ubGF5ZXJzUm9vdCksdj1lLmNvbXB1dGVkKCgpPT5jLnZhbHVlP0FycmF5LmZyb20oZi52YWx1ZSkuaW5kZXhPZihjLnZhbHVlKTotMSkscD1lLmNvbXB1dGVkKCgpPT5PLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU+MCkseT1lLmNvbXB1dGVkKCgpPT57Y29uc3QgZT1BcnJheS5mcm9tKGYudmFsdWUpLFt0XT1bLi4uTy5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZF0uc2xpY2UoLTEpLG49ZS5pbmRleE9mKHQpO3JldHVybiB2LnZhbHVlPj1ufSksbT1mdW5jdGlvbih0LG4scj0hMCl7bj8udmFsdWU/Lm93bmVyRG9jdW1lbnQ/P2dsb2JhbFRoaXM7Y29uc3QgYT1lLnJlZighMSk7cmV0dXJuIGUucmVmKCgpPT57fSksZS53YXRjaEVmZmVjdChlPT57fSkse29uUG9pbnRlckRvd25DYXB0dXJlOigpPT57ZS50b1ZhbHVlKHIpJiYoYS52YWx1ZT0hMCl9fX0oMCxjKSxoPWZ1bmN0aW9uKHQsbixyPSEwKXtuPy52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcztjb25zdCBhPWUucmVmKCExKTtyZXR1cm4gZS53YXRjaEVmZmVjdChlPT57fSkse29uRm9jdXNDYXB0dXJlOigpPT57ZS50b1ZhbHVlKHIpJiYoYS52YWx1ZT0hMCl9LG9uQmx1ckNhcHR1cmU6KCk9PntlLnRvVmFsdWUocikmJihhLnZhbHVlPSExKX19fSgwLGMpO3JldHVybiByKCJFc2NhcGUiLGU9Pnt2LnZhbHVlPT09Zi52YWx1ZS5zaXplLTEmJihpKCJlc2NhcGVLZXlEb3duIixlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGkoImRpc21pc3MiKSl9KSxlLndhdGNoRWZmZWN0KGU9PntjLnZhbHVlJiYodS5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMmJigwPT09Ty5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplJiYoTy5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzPWQudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzLGQudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIiksTy5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5hZGQoYy52YWx1ZSkpLGYudmFsdWUuYWRkKGMudmFsdWUpLGUoKCk9Pnt1LmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyYmMT09PU8ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSYmIWEoTy5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzKSYmKGQudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPU8ub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cyl9KSl9KSxlLndhdGNoRWZmZWN0KGU9PntlKCgpPT57Yy52YWx1ZSYmKGYudmFsdWUuZGVsZXRlKGMudmFsdWUpLE8ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuZGVsZXRlKGMudmFsdWUpKX0pfSksKHQsbik9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihvKSx7cmVmOmUudW5yZWYobCksImFzLWNoaWxkIjp0LmFzQ2hpbGQsYXM6dC5hcywiZGF0YS1kaXNtaXNzYWJsZS1sYXllciI6IiIsc3R5bGU6ZS5ub3JtYWxpemVTdHlsZSh7cG9pbnRlckV2ZW50czpwLnZhbHVlP3kudmFsdWU/ImF1dG8iOiJub25lIjp2b2lkIDB9KSxvbkZvY3VzQ2FwdHVyZTplLnVucmVmKGgpLm9uRm9jdXNDYXB0dXJlLG9uQmx1ckNhcHR1cmU6ZS51bnJlZihoKS5vbkJsdXJDYXB0dXJlLG9uUG9pbnRlcmRvd25DYXB0dXJlOmUudW5yZWYobSkub25Qb2ludGVyRG93bkNhcHR1cmV9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyIsInN0eWxlIiwib25Gb2N1c0NhcHR1cmUiLCJvbkJsdXJDYXB0dXJlIiwib25Qb2ludGVyZG93bkNhcHR1cmUiXSkpfX0pO2NvbnN0IGs9aCgoKT0+ZS5yZWYoW10pKTtmdW5jdGlvbiBhcnJheVJlbW92ZShlLHQpe2NvbnN0IG49Wy4uLmVdLHI9bi5pbmRleE9mKHQpO3JldHVybi0xIT09ciYmbi5zcGxpY2UociwxKSxufXZhciBCPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6IkZvY3VzU2NvcGUiLHByb3BzOntsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdHJhcHBlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsibW91bnRBdXRvRm9jdXMiLCJ1bm1vdW50QXV0b0ZvY3VzIl0sc2V0dXAodCx7ZW1pdDpyfSl7Y29uc3QgYT10LHM9cix7Y3VycmVudFJlZjp1LGN1cnJlbnRFbGVtZW50OnB9PW4oKTtlLnJlZihudWxsKTtjb25zdCBoPWZ1bmN0aW9uKCl7Y29uc3QgZT1rKCk7cmV0dXJue2FkZCh0KXtjb25zdCBuPWUudmFsdWVbMF07dCE9PW4mJm4/LnBhdXNlKCksZS52YWx1ZT1hcnJheVJlbW92ZShlLnZhbHVlLHQpLGUudmFsdWUudW5zaGlmdCh0KX0scmVtb3ZlKHQpe2UudmFsdWU9YXJyYXlSZW1vdmUoZS52YWx1ZSx0KSxlLnZhbHVlWzBdPy5yZXN1bWUoKX19fSgpLHc9ZS5yZWFjdGl2ZSh7cGF1c2VkOiExLHBhdXNlKCl7dGhpcy5wYXVzZWQ9ITB9LHJlc3VtZSgpe3RoaXMucGF1c2VkPSExfX0pO2Z1bmN0aW9uIGhhbmRsZUtleURvd24oZSl7aWYoIWEubG9vcCYmIWEudHJhcHBlZClyZXR1cm47aWYody5wYXVzZWQpcmV0dXJuO2NvbnN0IHQ9IlRhYiI9PT1lLmtleSYmIWUuYWx0S2V5JiYhZS5jdHJsS2V5JiYhZS5tZXRhS2V5LG49aSgpO2lmKHQmJm4pe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0LFtyLG9dPW0odCk7ciYmbz9lLnNoaWZ0S2V5fHxuIT09bz9lLnNoaWZ0S2V5JiZuPT09ciYmKGUucHJldmVudERlZmF1bHQoKSxhLmxvb3AmJmYobyx7c2VsZWN0OiEwfSkpOihlLnByZXZlbnREZWZhdWx0KCksYS5sb29wJiZmKHIse3NlbGVjdDohMH0pKTpuPT09dCYmZS5wcmV2ZW50RGVmYXVsdCgpfX1yZXR1cm4gZS53YXRjaEVmZmVjdChlPT57fSksZS53YXRjaEVmZmVjdChhc3luYyB0PT57Y29uc3Qgbj1wLnZhbHVlO2lmKGF3YWl0IGUubmV4dFRpY2soKSwhbilyZXR1cm47aC5hZGQodyk7Y29uc3Qgcj1pKCk7aWYoIW4uY29udGFpbnMocikpe2NvbnN0IGU9bmV3IEN1c3RvbUV2ZW50KGwseSk7bi5hZGRFdmVudExpc3RlbmVyKGwsZT0+cygibW91bnRBdXRvRm9jdXMiLGUpKSxuLmRpc3BhdGNoRXZlbnQoZSksZS5kZWZhdWx0UHJldmVudGVkfHwoYyhkKG4pLHtzZWxlY3Q6ITB9KSxpKCk9PT1yJiZmKG4pKX10KCgpPT57bi5yZW1vdmVFdmVudExpc3RlbmVyKGwsZT0+cygibW91bnRBdXRvRm9jdXMiLGUpKTtjb25zdCBlPW5ldyBDdXN0b21FdmVudCh2LHkpLHVubW91bnRFdmVudEhhbmRsZXI9ZT0+e3MoInVubW91bnRBdXRvRm9jdXMiLGUpfTtuLmFkZEV2ZW50TGlzdGVuZXIodix1bm1vdW50RXZlbnRIYW5kbGVyKSxuLmRpc3BhdGNoRXZlbnQoZSksc2V0VGltZW91dCgoKT0+e2UuZGVmYXVsdFByZXZlbnRlZHx8ZihyPz8odm9pZCAwKS5ib2R5LHtzZWxlY3Q6ITB9KSxuLnJlbW92ZUV2ZW50TGlzdGVuZXIodix1bm1vdW50RXZlbnRIYW5kbGVyKSxoLnJlbW92ZSh3KX0sMCl9KX0pLCh0LG4pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobykse3JlZl9rZXk6ImN1cnJlbnRSZWYiLHJlZjp1LHRhYmluZGV4OiItMSIsImFzLWNoaWxkIjp0LmFzQ2hpbGQsYXM6dC5hcyxvbktleWRvd246aGFuZGxlS2V5RG93bn0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KTtjb25zdCBTPSJtZW51Lml0ZW1TZWxlY3QiLFc9WyJFbnRlciIsIiAiXSxGPVsiQXJyb3dVcCIsIlBhZ2VEb3duIiwiRW5kIl0sXz1bIkFycm93RG93biIsIlBhZ2VVcCIsIkhvbWUiLC4uLkZdLHg9e2x0cjpbLi4uVywiQXJyb3dSaWdodCJdLHJ0bDpbLi4uVywiQXJyb3dMZWZ0Il19LEk9e2x0cjpbIkFycm93TGVmdCJdLHJ0bDpbIkFycm93UmlnaHQiXX07ZnVuY3Rpb24gZ2V0T3BlblN0YXRlKGUpe3JldHVybiBlPyJvcGVuIjoiY2xvc2VkIn1mdW5jdGlvbiBpc0luZGV0ZXJtaW5hdGUoZSl7cmV0dXJuImluZGV0ZXJtaW5hdGUiPT09ZX1mdW5jdGlvbiBnZXRDaGVja2VkU3RhdGUoZSl7cmV0dXJuIGlzSW5kZXRlcm1pbmF0ZShlKT8iaW5kZXRlcm1pbmF0ZSI6ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCJ9ZnVuY3Rpb24gZm9jdXNGaXJzdChlKXtjb25zdCB0PWkoKTtmb3IoY29uc3QgbiBvZiBlKXtpZihuPT09dClyZXR1cm47aWYobi5mb2N1cygpLGkoKSE9PXQpcmV0dXJufX1mdW5jdGlvbiBpc1BvaW50ZXJJbkdyYWNlQXJlYShlLHQpe2lmKCF0KXJldHVybiExO3JldHVybiBmdW5jdGlvbihlLHQpe2NvbnN0e3g6bix5OnJ9PWU7bGV0IGE9ITE7Zm9yKGxldCBlPTAsbz10Lmxlbmd0aC0xO2U8dC5sZW5ndGg7bz1lKyspe2NvbnN0IHM9dFtlXS54LHU9dFtlXS55LGk9dFtvXS54LGw9dFtvXS55O3U+ciE9bD5yJiZuPChpLXMpKihyLXUpLyhsLXUpK3MmJihhPSFhKX1yZXR1cm4gYX0oe3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZfSx0KX1mdW5jdGlvbiBpc01vdXNlRXZlbnQoZSl7cmV0dXJuIm1vdXNlIj09PWUucG9pbnRlclR5cGV9ZXhwb3J0e0MgYXMgRCxCIGFzIEYsUyBhcyBJLEYgYXMgTCxJIGFzIFMsdXNlQm9keVNjcm9sbExvY2sgYXMgYSx1c2VIaWRlT3RoZXJzIGFzIGIsZ2V0Q2hlY2tlZFN0YXRlIGFzIGMsVyBhcyBkLHggYXMgZSxmb2N1c0ZpcnN0IGFzIGYsZ2V0T3BlblN0YXRlIGFzIGcsaXNNb3VzZUV2ZW50IGFzIGgsaXNJbmRldGVybWluYXRlIGFzIGksaXNQb2ludGVySW5HcmFjZUFyZWEgYXMgaixfIGFzIGssdXNlSWQgYXMgdX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLUJSSWpSU2h4Lm1qcy5tYXAK", "chunks/build/utils-DIn7ELYV.mjs": "aW1wb3J0e1ggYXMgcn1mcm9tIi4vc2VydmVyLm1qcyI7Y29uc3QgdD0icm92aW5nRm9jdXNHcm91cC5vbkVudHJ5Rm9jdXMiLG89e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMH0sbj17QXJyb3dMZWZ0OiJwcmV2IixBcnJvd1VwOiJwcmV2IixBcnJvd1JpZ2h0OiJuZXh0IixBcnJvd0Rvd246Im5leHQiLFBhZ2VVcDoiZmlyc3QiLEhvbWU6ImZpcnN0IixQYWdlRG93bjoibGFzdCIsRW5kOiJsYXN0In07ZnVuY3Rpb24gZ2V0Rm9jdXNJbnRlbnQocix0LG8pe2NvbnN0IGU9ZnVuY3Rpb24ocix0KXtyZXR1cm4icnRsIiE9PXQ/cjoiQXJyb3dMZWZ0Ij09PXI/IkFycm93UmlnaHQiOiJBcnJvd1JpZ2h0Ij09PXI/IkFycm93TGVmdCI6cn0oci5rZXksbyk7aWYoISgidmVydGljYWwiPT09dCYmWyJBcnJvd0xlZnQiLCJBcnJvd1JpZ2h0Il0uaW5jbHVkZXMoZSl8fCJob3Jpem9udGFsIj09PXQmJlsiQXJyb3dVcCIsIkFycm93RG93biJdLmluY2x1ZGVzKGUpKSlyZXR1cm4gbltlXX1mdW5jdGlvbiBmb2N1c0ZpcnN0KHQsbz0hMSl7Y29uc3Qgbj1yKCk7Zm9yKGNvbnN0IGUgb2YgdCl7aWYoZT09PW4pcmV0dXJuO2lmKGUuZm9jdXMoe3ByZXZlbnRTY3JvbGw6b30pLHIoKSE9PW4pcmV0dXJufX1mdW5jdGlvbiB3cmFwQXJyYXkocix0KXtyZXR1cm4gci5tYXAoKG8sbik9PnJbKHQrbiklci5sZW5ndGhdKX1leHBvcnR7dCBhcyBFLG4gYXMgTSxvIGFzIGEsZm9jdXNGaXJzdCBhcyBmLGdldEZvY3VzSW50ZW50IGFzIGcsd3JhcEFycmF5IGFzIHd9OwovLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy1ESW43RUxZVi5tanMubWFwCg==", "chunks/build/virtualizer-Byqi0uAK.mjs": "aW1wb3J0e3YgYXMgZSxOIGFzIHQsTSBhcyBhLFAgYXMgbixTIGFzIGksYXEgYXMgbyxhMSBhcyBsLGFDIGFzIHIsWCBhcyB1LEsgYXMgcyxtIGFzIGQsYXAgYXMgY31mcm9tIi4vc2VydmVyLm1qcyI7aW1wb3J0e3UgYXMgdn1mcm9tIi4vdXRpbHMtQlJJalJTaHgubWpzIjtpbXBvcnR7aCBhcyBmfWZyb20iLi9oYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50LUJrX0FWU1NvLm1qcyI7aW1wb3J0e2cgYXMgaCx1IGFzIG19ZnJvbSIuL1BvcHBlckFycm93LUJFeVdVSmlRLm1qcyI7aW1wb3J0e00gYXMgcCxnfWZyb20iLi91dGlscy1ESW43RUxZVi5tanMiO2ltcG9ydHt1IGFzIHl9ZnJvbSIuL3VzZURpcmVjdGlvbi1EMmFtT0xxRi5tanMiO2ltcG9ydHt1IGFzIGJ9ZnJvbSIuL3VzZUZvcm1Db250cm9sLUJNLU1mV21vLm1qcyI7aW1wb3J0e1YgYXMgQ31mcm9tIi4vVmlzdWFsbHlIaWRkZW5JbnB1dC1EN21HUF9KVy5tanMiO2ltcG9ydHt1IGFzIGt9ZnJvbSIuL2luZGV4LUIxUE9UTG1hLm1qcyI7aW1wb3J0e2FYIGFzIHh9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2Z1bmN0aW9uIGZpbmRWYWx1ZXNCZXR3ZWVuKGUsdCxhKXtjb25zdCBuPWUuZmluZEluZGV4KGU9PngoZSx0KSksaT1lLmZpbmRJbmRleChlPT54KGUsYSkpO2lmKC0xPT09bnx8LTE9PT1pKXJldHVybltdO2NvbnN0W28sbF09W24saV0uc29ydCgoZSx0KT0+ZS10KTtyZXR1cm4gZS5zbGljZShvLGwrMSl9ZnVuY3Rpb24gcXVlcnlDaGVja2VkRWxlbWVudChlKXtyZXR1cm4gZT8ucXVlcnlTZWxlY3RvcigiW2RhdGEtc3RhdGU9Y2hlY2tlZF0iKX1mdW5jdGlvbiBjb21wYXJlKGUsdCxhKXtyZXR1cm4gdm9pZCAwIT09ZSYmdm9pZCAwIT09dCYmKCJzdHJpbmciPT10eXBlb2YgZT9lPT09dDoiZnVuY3Rpb24iPT10eXBlb2YgYT9hKGUsdCk6InN0cmluZyI9PXR5cGVvZiBhP2U/LlthXT09PXQ/LlthXTp4KGUsdCkpfWNvbnN0W3csRV09ZCgiTGlzdGJveFJvb3QiKTt2YXIgUz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94Um9vdCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2ZXJ0aWNhbCJ9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNlbGVjdGlvbkJlaGF2aW9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ0b2dnbGUifSxoaWdobGlnaHRPbkhvdmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsImVudHJ5Rm9jdXMiLCJsZWF2ZSJdLHNldHVwKGEse2V4cG9zZTpsLGVtaXQ6cn0pe2NvbnN0IHU9YSxzPXIse211bHRpcGxlOmQsaGlnaGxpZ2h0T25Ib3Zlcjp2LG9yaWVudGF0aW9uOmYsZGlzYWJsZWQ6aCxzZWxlY3Rpb25CZWhhdmlvcjpwLGRpcjprfT1lLnRvUmVmcyh1KSx7Z2V0SXRlbXM6eH09dCh7aXNQcm92aWRlcjohMH0pLHtoYW5kbGVUeXBlYWhlYWRTZWFyY2g6d309bSgpLHtwcmltaXRpdmVFbGVtZW50OlMsY3VycmVudEVsZW1lbnQ6Qn09bygpLEY9e0FMVDoiQWx0IixBUlJPV19ET1dOOiJBcnJvd0Rvd24iLEFSUk9XX0xFRlQ6IkFycm93TGVmdCIsQVJST1dfUklHSFQ6IkFycm93UmlnaHQiLEFSUk9XX1VQOiJBcnJvd1VwIixCQUNLU1BBQ0U6IkJhY2tzcGFjZSIsQ0FQU19MT0NLOiJDYXBzTG9jayIsQ09OVFJPTDoiQ29udHJvbCIsREVMRVRFOiJEZWxldGUiLEVORDoiRW5kIixFTlRFUjoiRW50ZXIiLEVTQ0FQRToiRXNjYXBlIixGMToiRjEiLEYxMDoiRjEwIixGMTE6IkYxMSIsRjEyOiJGMTIiLEYyOiJGMiIsRjM6IkYzIixGNDoiRjQiLEY1OiJGNSIsRjY6IkY2IixGNzoiRjciLEY4OiJGOCIsRjk6IkY5IixIT01FOiJIb21lIixNRVRBOiJNZXRhIixQQUdFX0RPV046IlBhZ2VEb3duIixQQUdFX1VQOiJQYWdlVXAiLFNISUZUOiJTaGlmdCIsU1BBQ0U6IiAiLFRBQjoiVGFiIixDVFJMOiJDb250cm9sIixBU1RFUklTSzoiKiIsU1BBQ0VfQ09ERToiU3BhY2UifSxBPXkoayksVj1iKEIpLHE9ZS5yZWYoKSxLPWUucmVmKCExKSxJPWUucmVmKCEwKSxIPWkodSwibW9kZWxWYWx1ZSIscyx7ZGVmYXVsdFZhbHVlOnUuZGVmYXVsdFZhbHVlPz8oZC52YWx1ZT9bXTp2b2lkIDApLHBhc3NpdmU6dm9pZCAwPT09dS5tb2RlbFZhbHVlLGRlZXA6ITB9KTtjb25zdCBfPWUucmVmKG51bGwpLFQ9ZS5yZWYobnVsbCksTD1lLnJlZighMSksUD1lLnJlZighMSksTj1jKCksRD1jKCksUj1jKCk7ZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkl0ZW0oKXtyZXR1cm4geCgpLm1hcChlPT5lLnJlZikuZmlsdGVyKGU9PiIiIT09ZS5kYXRhc2V0LmRpc2FibGVkKX1mdW5jdGlvbiBjaGFuZ2VIaWdobGlnaHQoZSx0PSEwLGEpe2lmKCFlKXJldHVybjtfLnZhbHVlPWUsKGE/P0kudmFsdWUpJiZfLnZhbHVlLmZvY3VzKCksdCYmXy52YWx1ZS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QifSk7Y29uc3Qgbj14KCkuZmluZCh0PT50LnJlZj09PWUpO3MoImhpZ2hsaWdodCIsbil9ZnVuY3Rpb24gaGlnaGxpZ2h0Rmlyc3RJdGVtKCl7ZS5uZXh0VGljaygoKT0+e29uS2V5ZG93bk5hdmlnYXRpb24obmV3IEtleWJvYXJkRXZlbnQoImtleWRvd24iLHtrZXk6IlBhZ2VVcCJ9KSl9KX1mdW5jdGlvbiBvbkxlYXZlKGUpe2NvbnN0IHQ9Xy52YWx1ZTt0Py5pc0Nvbm5lY3RlZCYmKFQudmFsdWU9dCksXy52YWx1ZT1udWxsLHMoImxlYXZlIixlKX1mdW5jdGlvbiBvbktleWRvd25OYXZpZ2F0aW9uKGUpe2NvbnN0IHQ9ZyhlLGYudmFsdWUsQS52YWx1ZSk7aWYoIXQpcmV0dXJuO2xldCBhPWdldENvbGxlY3Rpb25JdGVtKCk7aWYoXy52YWx1ZSl7aWYoImxhc3QiPT09dClhLnJldmVyc2UoKTtlbHNlIGlmKCJwcmV2Ij09PXR8fCJuZXh0Ij09PXQpeyJwcmV2Ij09PXQmJmEucmV2ZXJzZSgpO2NvbnN0IGU9YS5pbmRleE9mKF8udmFsdWUpO2E9YS5zbGljZShlKzEpfSFmdW5jdGlvbihlLHQpe2lmKEwudmFsdWV8fCJyZXBsYWNlIiE9PXUuc2VsZWN0aW9uQmVoYXZpb3J8fCFkLnZhbHVlfHwhQXJyYXkuaXNBcnJheShILnZhbHVlKSlyZXR1cm47Y29uc3QgYT1lLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXk7aWYoYSYmIWUuc2hpZnRLZXkpcmV0dXJuO2lmKGUuc2hpZnRLZXkpe2NvbnN0IGE9eCgpLmZpbHRlcihlPT4iIiE9PWUucmVmLmRhdGFzZXQuZGlzYWJsZWQpO2xldCBuPWEuZmluZChlPT5lLnJlZj09PXQpPy52YWx1ZTtpZihlLmtleT09PUYuRU5EP249YS5hdCgtMSk/LnZhbHVlOmUua2V5PT09Ri5IT01FJiYobj1hWzBdPy52YWx1ZSksIW58fCFxLnZhbHVlKXJldHVybjtjb25zdCBpPWZpbmRWYWx1ZXNCZXR3ZWVuKGEubWFwKGU9PmUudmFsdWUpLHEudmFsdWUsbik7SC52YWx1ZT1pfX0oZSxhWzBdKX1pZihhLmxlbmd0aCl7Y2hhbmdlSGlnaGxpZ2h0KGFbXy52YWx1ZXx8InByZXYiIT09dD8wOmEubGVuZ3RoLTFdKX1yZXR1cm4gTC52YWx1ZT9ELnRyaWdnZXIoZSk6dm9pZCAwfWFzeW5jIGZ1bmN0aW9uIGhpZ2hsaWdodFNlbGVjdGVkKHQpe2lmKGF3YWl0IGUubmV4dFRpY2soKSxMLnZhbHVlKU4udHJpZ2dlcih0KTtlbHNle2NvbnN0IGU9Z2V0Q29sbGVjdGlvbkl0ZW0oKSx0PWUuZmluZChlPT4iY2hlY2tlZCI9PT1lLmRhdGFzZXQuc3RhdGUpO3Q/Y2hhbmdlSGlnaGxpZ2h0KHQpOmUubGVuZ3RoJiZjaGFuZ2VIaWdobGlnaHQoZVswXSl9fXJldHVybiBlLndhdGNoKEgsKCk9PntLLnZhbHVlfHxlLm5leHRUaWNrKCgpPT57aGlnaGxpZ2h0U2VsZWN0ZWQoKX0pfSx7aW1tZWRpYXRlOiEwLGRlZXA6ITB9KSxsKHtoaWdobGlnaHRlZEVsZW1lbnQ6XyxoaWdobGlnaHRJdGVtOmZ1bmN0aW9uKGUpe2lmKEwudmFsdWUpUi50cmlnZ2VyKGUpO2Vsc2V7Y29uc3QgdD14KCkuZmluZCh0PT5jb21wYXJlKHQudmFsdWUsZSx1LmJ5KSk7dCYmKF8udmFsdWU9dC5yZWYsY2hhbmdlSGlnaGxpZ2h0KHQucmVmKSl9fSxoaWdobGlnaHRGaXJzdEl0ZW06aGlnaGxpZ2h0Rmlyc3RJdGVtLGhpZ2hsaWdodFNlbGVjdGVkOmhpZ2hsaWdodFNlbGVjdGVkLGdldEl0ZW1zOnh9KSxFKHttb2RlbFZhbHVlOkgsb25WYWx1ZUNoYW5nZTpmdW5jdGlvbihlKXtpZihLLnZhbHVlPSEwLHUubXVsdGlwbGUpe2NvbnN0IHQ9QXJyYXkuaXNBcnJheShILnZhbHVlKT9bLi4uSC52YWx1ZV06W10sYT10LmZpbmRJbmRleCh0PT5jb21wYXJlKHQsZSx1LmJ5KSk7InRvZ2dsZSI9PT11LnNlbGVjdGlvbkJlaGF2aW9yPygtMT09PWE/dC5wdXNoKGUpOnQuc3BsaWNlKGEsMSksSC52YWx1ZT10KTooSC52YWx1ZT1bZV0scS52YWx1ZT1lKX1lbHNlInRvZ2dsZSI9PT11LnNlbGVjdGlvbkJlaGF2aW9yJiZjb21wYXJlKEgudmFsdWUsZSx1LmJ5KT9ILnZhbHVlPXZvaWQgMDpILnZhbHVlPWU7c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfSxtdWx0aXBsZTpkLG9yaWVudGF0aW9uOmYsZGlyOkEsZGlzYWJsZWQ6aCxoaWdobGlnaHRPbkhvdmVyOnYsaGlnaGxpZ2h0ZWRFbGVtZW50Ol8saXNWaXJ0dWFsOkwsdmlydHVhbEZvY3VzSG9vazpOLHZpcnR1YWxLZXlkb3duSG9vazpELHZpcnR1YWxIaWdobGlnaHRIb29rOlIsYnk6dS5ieSxmaXJzdFZhbHVlOnEsc2VsZWN0aW9uQmVoYXZpb3I6cCxmb2N1c2FibGU6SSxvbkxlYXZlOm9uTGVhdmUsb25FbnRlcjpmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBDdXN0b21FdmVudCgibGlzdGJveC5lbnRyeUZvY3VzIix7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfSk7aWYoZS5jdXJyZW50VGFyZ2V0Py5kaXNwYXRjaEV2ZW50KHQpLHMoImVudHJ5Rm9jdXMiLHQpLCF0LmRlZmF1bHRQcmV2ZW50ZWQpaWYoVC52YWx1ZSljaGFuZ2VIaWdobGlnaHQoVC52YWx1ZSk7ZWxzZXtjb25zdCBlPWdldENvbGxlY3Rpb25JdGVtKCk/LlswXTtjaGFuZ2VIaWdobGlnaHQoZSl9fSxjaGFuZ2VIaWdobGlnaHQ6Y2hhbmdlSGlnaGxpZ2h0LG9uS2V5ZG93bkVudGVyOmZ1bmN0aW9uKGUpe18udmFsdWUmJl8udmFsdWUuaXNDb25uZWN0ZWQmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxQLnZhbHVlfHxfLnZhbHVlLmNsaWNrKCkpfSxvbktleWRvd25OYXZpZ2F0aW9uOm9uS2V5ZG93bk5hdmlnYXRpb24sb25LZXlkb3duVHlwZUFoZWFkOmZ1bmN0aW9uKGUpe2lmKEkudmFsdWUpe2lmKEsudmFsdWU9ITAsTC52YWx1ZSlELnRyaWdnZXIoZSk7ZWxzZXtjb25zdCB0PWUuYWx0S2V5fHxlLmN0cmxLZXl8fGUubWV0YUtleTtpZih0JiYiYSI9PT1lLmtleSYmZC52YWx1ZSl7Y29uc3QgdD14KCksYT10Lm1hcChlPT5lLnZhbHVlKTtILnZhbHVlPVsuLi5hXSxlLnByZXZlbnREZWZhdWx0KCk7Y29uc3Qgbj10LmF0KC0xKTtuJiZjaGFuZ2VIaWdobGlnaHQobi5yZWYpfWVsc2UgaWYoIXQpe2NvbnN0IHQ9dyhlLmtleSx4KCkpO3QmJmNoYW5nZUhpZ2hsaWdodCh0KX19c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfX0sb25Db21wb3NpdGlvblN0YXJ0OmZ1bmN0aW9uKCl7UC52YWx1ZT0hMH0sb25Db21wb3NpdGlvbkVuZDpmdW5jdGlvbigpe2UubmV4dFRpY2soKCk9PntQLnZhbHVlPSExfSl9LGhpZ2hsaWdodEZpcnN0SXRlbTpoaWdobGlnaHRGaXJzdEl0ZW19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG4pLHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6Uyxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpcjplLnVucmVmKEEpLCJkYXRhLWRpc2FibGVkIjplLnVucmVmKGgpPyIiOnZvaWQgMCxvblBvaW50ZXJsZWF2ZTpvbkxlYXZlLG9uRm9jdXNvdXQ6YVswXXx8KGFbMF09YXN5bmMgdD0+e2NvbnN0IGE9dC5yZWxhdGVkVGFyZ2V0fHx0LnRhcmdldDthd2FpdCBlLm5leHRUaWNrKCksXy52YWx1ZSYmZS51bnJlZihCKSYmIWUudW5yZWYoQikuY29udGFpbnMoYSkmJm9uTGVhdmUodCl9KX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplLnVucmVmKEgpfSksZS51bnJlZihWKSYmdC5uYW1lPyhlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihDKSx7a2V5OjAsbmFtZTp0Lm5hbWUsdmFsdWU6ZS51bnJlZihIKSxkaXNhYmxlZDplLnVucmVmKGgpLHJlcXVpcmVkOnQucmVxdWlyZWR9LG51bGwsOCxbIm5hbWUiLCJ2YWx1ZSIsImRpc2FibGVkIiwicmVxdWlyZWQiXSkpOmUuY3JlYXRlQ29tbWVudFZOb2RlKCJ2LWlmIiwhMCldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGlyIiwiZGF0YS1kaXNhYmxlZCJdKSl9fSksQj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94Q29udGVudCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGEpe2NvbnN0e0NvbGxlY3Rpb25TbG90Oml9PXQoKSxvPXcoKSxyPWwoITEsMTApO3JldHVybih0LGEpPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYoaSksbnVsbCx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLmNyZWF0ZVZOb2RlKGUudW5yZWYobikse3JvbGU6Imxpc3Rib3giLGFzOnQuYXMsImFzLWNoaWxkIjp0LmFzQ2hpbGQsdGFiaW5kZXg6ZS51bnJlZihvKS5mb2N1c2FibGUudmFsdWU/ZS51bnJlZihvKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU/Ii0xIjoiMCI6Ii0xIiwiYXJpYS1vcmllbnRhdGlvbiI6ZS51bnJlZihvKS5vcmllbnRhdGlvbi52YWx1ZSwiYXJpYS1tdWx0aXNlbGVjdGFibGUiOiEhZS51bnJlZihvKS5tdWx0aXBsZS52YWx1ZSwiZGF0YS1vcmllbnRhdGlvbiI6ZS51bnJlZihvKS5vcmllbnRhdGlvbi52YWx1ZSxvbk1vdXNlZG93bjphWzBdfHwoYVswXT1lLndpdGhNb2RpZmllcnMoZT0+ci52YWx1ZT0hMCxbImxlZnQiXSkpLG9uRm9jdXM6YVsxXXx8KGFbMV09dD0+e2UudW5yZWYocil8fGUudW5yZWYobykub25FbnRlcih0KX0pLG9uS2V5ZG93bjpbYVsyXXx8KGFbMl09ZS53aXRoS2V5cyh0PT57KCJ2ZXJ0aWNhbCIhPT1lLnVucmVmKG8pLm9yaWVudGF0aW9uLnZhbHVlfHwiQXJyb3dMZWZ0IiE9PXQua2V5JiYiQXJyb3dSaWdodCIhPT10LmtleSkmJigiaG9yaXpvbnRhbCIhPT1lLnVucmVmKG8pLm9yaWVudGF0aW9uLnZhbHVlfHwiQXJyb3dVcCIhPT10LmtleSYmIkFycm93RG93biIhPT10LmtleSkmJih0LnByZXZlbnREZWZhdWx0KCksZS51bnJlZihvKS5mb2N1c2FibGUudmFsdWUmJmUudW5yZWYobykub25LZXlkb3duTmF2aWdhdGlvbih0KSl9LFsiZG93biIsInVwIiwibGVmdCIsInJpZ2h0IiwiaG9tZSIsImVuZCJdKSksZS53aXRoS2V5cyhlLnVucmVmKG8pLm9uS2V5ZG93bkVudGVyLFsiZW50ZXIiXSksZS51bnJlZihvKS5vbktleWRvd25UeXBlQWhlYWRdfSx7ZGVmYXVsdDplLndpdGhDdHgoKCk9PltlLnJlbmRlclNsb3QodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJ0YWJpbmRleCIsImFyaWEtb3JpZW50YXRpb24iLCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsImRhdGEtb3JpZW50YXRpb24iLCJvbktleWRvd24iXSldKSxfOjN9KSl9fSksRj1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94RmlsdGVyIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaW5wdXQifX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6YX0pe2NvbnN0IGw9dCxyPWkobCwibW9kZWxWYWx1ZSIsYSx7ZGVmYXVsdFZhbHVlOiIiLHBhc3NpdmU6dm9pZCAwPT09bC5tb2RlbFZhbHVlfSksdT13KCkse3ByaW1pdGl2ZUVsZW1lbnQ6c309bygpLGQ9ZS5jb21wdXRlZCgoKT0+bC5kaXNhYmxlZHx8dS5kaXNhYmxlZC52YWx1ZXx8ITEpLGM9ZS5yZWYoKTtyZXR1cm4gZS53YXRjaFN5bmNFZmZlY3QoKCk9PmMudmFsdWU9dS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU/LmlkKSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVCbG9jayhlLnVucmVmKG4pLHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6cyxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLHZhbHVlOmUudW5yZWYociksZGlzYWJsZWQ6ZC52YWx1ZT8iIjp2b2lkIDAsImRhdGEtZGlzYWJsZWQiOmQudmFsdWU/IiI6dm9pZCAwLCJhcmlhLWRpc2FibGVkIjpkLnZhbHVlPz92b2lkIDAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6Yy52YWx1ZSx0eXBlOiJ0ZXh0IixvbktleWRvd246W2Uud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKGUudW5yZWYodSkub25LZXlkb3duTmF2aWdhdGlvbixbInByZXZlbnQiXSksWyJkb3duIiwidXAiLCJob21lIiwiZW5kIl0pLGUud2l0aEtleXMoZS51bnJlZih1KS5vbktleWRvd25FbnRlcixbImVudGVyIl0pXSxvbklucHV0OmFbMF18fChhWzBdPXQ9PntyLnZhbHVlPXQudGFyZ2V0LnZhbHVlLGUudW5yZWYodSkuaGlnaGxpZ2h0Rmlyc3RJdGVtKCl9KSxvbkNvbXBvc2l0aW9uc3RhcnQ6ZS51bnJlZih1KS5vbkNvbXBvc2l0aW9uU3RhcnQsb25Db21wb3NpdGlvbmVuZDplLnVucmVmKHUpLm9uQ29tcG9zaXRpb25FbmR9LHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6ZS51bnJlZihyKX0pXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsInZhbHVlIiwiZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsIm9uS2V5ZG93biIsIm9uQ29tcG9zaXRpb25zdGFydCIsIm9uQ29tcG9zaXRpb25lbmQiXSkpfX0pO2NvbnN0W0EsVl09ZCgiTGlzdGJveEdyb3VwIik7dmFyIHE9ZS5kZWZpbmVDb21wb25lbnQoe19fbmFtZToiTGlzdGJveEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LGk9dih2b2lkIDAsInJla2EtbGlzdGJveC1ncm91cCIpO3JldHVybiBWKHtpZDppfSksKHQsbyk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihuKSxlLm1lcmdlUHJvcHMoe3JvbGU6Imdyb3VwIn0sYSx7ImFyaWEtbGFiZWxsZWRieSI6ZS51bnJlZihpKX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFyaWEtbGFiZWxsZWRieSJdKSl9fSk7Y29uc3RbSyxJXT1kKCJMaXN0Ym94SXRlbSIpO3ZhciBIPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ikxpc3Rib3hJdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRpdiJ9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKGkse2VtaXQ6b30pe2NvbnN0IGw9aSxyPW8sdT12KHZvaWQgMCwicmVrYS1saXN0Ym94LWl0ZW0iKSx7Q29sbGVjdGlvbkl0ZW06c309dCgpLHtmb3J3YXJkUmVmOmQsY3VycmVudEVsZW1lbnQ6Y309YSgpLGg9dygpLG09ZS5jb21wdXRlZCgoKT0+Yy52YWx1ZT09PWguaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlKSxwPWUuY29tcHV0ZWQoKCk9PntyZXR1cm4gZT1oLm1vZGVsVmFsdWUudmFsdWUsdD1sLnZhbHVlLGE9aC5ieSx2b2lkIDAhPT1lJiYoQXJyYXkuaXNBcnJheShlKT9lLnNvbWUoZT0+Y29tcGFyZShlLHQsYSkpOmNvbXBhcmUoZSx0LGEpKTt2YXIgZSx0LGF9KSxnPWUuY29tcHV0ZWQoKCk9PmguZGlzYWJsZWQudmFsdWV8fGwuZGlzYWJsZWQpO2FzeW5jIGZ1bmN0aW9uIGhhbmRsZVNlbGVjdChlKXtyKCJzZWxlY3QiLGUpLGU/LmRlZmF1bHRQcmV2ZW50ZWR8fCFnLnZhbHVlJiZlJiYoaC5vblZhbHVlQ2hhbmdlKGwudmFsdWUpLGguY2hhbmdlSGlnaGxpZ2h0KGMudmFsdWUpKX1mdW5jdGlvbiBoYW5kbGVTZWxlY3RDdXN0b21FdmVudChlKXtjb25zdCB0PXtvcmlnaW5hbEV2ZW50OmUsdmFsdWU6bC52YWx1ZX07ZigibGlzdGJveC5zZWxlY3QiLGhhbmRsZVNlbGVjdCx0KX1yZXR1cm4gSSh7aXNTZWxlY3RlZDpwfSksKHQsYSk9PihlLm9wZW5CbG9jaygpLGUuY3JlYXRlQmxvY2soZS51bnJlZihzKSx7dmFsdWU6dC52YWx1ZX0se2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS53aXRoTWVtbyhbbS52YWx1ZSxwLnZhbHVlXSwoKT0+ZS5jcmVhdGVWTm9kZShlLnVucmVmKG4pLGUubWVyZ2VQcm9wcyh7aWQ6ZS51bnJlZih1KX0sdC4kYXR0cnMse3JlZjplLnVucmVmKGQpLHJvbGU6Im9wdGlvbiIsdGFiaW5kZXg6ZS51bnJlZihoKS5mb2N1c2FibGUudmFsdWU/bS52YWx1ZT8iMCI6Ii0xIjotMSwiYXJpYS1zZWxlY3RlZCI6cC52YWx1ZSxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpc2FibGVkOmcudmFsdWU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjpnLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1oaWdobGlnaHRlZCI6bS52YWx1ZT8iIjp2b2lkIDAsImRhdGEtc3RhdGUiOnAudmFsdWU/ImNoZWNrZWQiOiJ1bmNoZWNrZWQiLG9uQ2xpY2s6aGFuZGxlU2VsZWN0Q3VzdG9tRXZlbnQsb25LZXlkb3duOmUud2l0aEtleXMoZS53aXRoTW9kaWZpZXJzKGhhbmRsZVNlbGVjdEN1c3RvbUV2ZW50LFsicHJldmVudCJdKSxbInNwYWNlIl0pLG9uUG9pbnRlcm1vdmU6YVswXXx8KGFbMF09KCk9PntlLnVucmVmKGgpLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZSE9PWUudW5yZWYoYykmJmUudW5yZWYoaCkuaGlnaGxpZ2h0T25Ib3Zlci52YWx1ZSYmZS51bnJlZihoKS5jaGFuZ2VIaWdobGlnaHQoZS51bnJlZihjKSwhMSwhMSl9KX0pLHtkZWZhdWx0OmUud2l0aEN0eCgoKT0+W2UucmVuZGVyU2xvdCh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwidGFiaW5kZXgiLCJhcmlhLXNlbGVjdGVkIiwiYXMiLCJhcy1jaGlsZCIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtaGlnaGxpZ2h0ZWQiLCJkYXRhLXN0YXRlIiwib25LZXlkb3duIl0pLGEsMSldKSxfOjN9LDgsWyJ2YWx1ZSJdKSl9fSksXz1lLmRlZmluZUNvbXBvbmVudCh7X19uYW1lOiJMaXN0Ym94SXRlbUluZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKHQpe2NvbnN0IGk9dDthKCk7Y29uc3Qgbz1LKCk7cmV0dXJuKHQsYSk9PmUudW5yZWYobykuaXNTZWxlY3RlZC52YWx1ZT8oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUudW5yZWYobiksZS5tZXJnZVByb3BzKHtrZXk6MCwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0saSkse2RlZmF1bHQ6ZS53aXRoQ3R4KCgpPT5bZS5yZW5kZXJTbG90KHQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6ZS5jcmVhdGVDb21tZW50Vk5vZGUoInYtaWYiLCEwKX19KSxUPWUuZGVmaW5lQ29tcG9uZW50KHtfX25hbWU6Ikxpc3Rib3hWaXJ0dWFsaXplciIscHJvcHM6e29wdGlvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITB9LG92ZXJzY2FuOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZXN0aW1hdGVTaXplOnt0eXBlOltOdW1iZXIsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSx0ZXh0Q29udGVudDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX19LHNldHVwKGEpe2NvbnN0IG49YSxpPWUudXNlU2xvdHMoKSxvPXcoKSxzPXIoKSx7Z2V0SXRlbXM6ZH09dCgpO28uaXNWaXJ0dWFsLnZhbHVlPSEwO2NvbnN0IGM9ZS5jb21wdXRlZCgoKT0+e2NvbnN0IGU9cy52YWx1ZTtpZihlKXtjb25zdCB0PSh2b2lkIDApLmdldENvbXB1dGVkU3R5bGUoZSk7cmV0dXJue3N0YXJ0Ok51bWJlci5wYXJzZUZsb2F0KHQucGFkZGluZ0Jsb2NrU3RhcnR8fHQucGFkZGluZ1RvcCksZW5kOk51bWJlci5wYXJzZUZsb2F0KHQucGFkZGluZ0Jsb2NrRW5kfHx0LnBhZGRpbmdCb3R0b20pfX1yZXR1cm57c3RhcnQ6MCxlbmQ6MH19KSx2PWsoe2dldCBzY3JvbGxQYWRkaW5nU3RhcnQoKXtyZXR1cm4gYy52YWx1ZS5zdGFydH0sZ2V0IHNjcm9sbFBhZGRpbmdFbmQoKXtyZXR1cm4gYy52YWx1ZS5lbmR9LGdldCBjb3VudCgpe3JldHVybiBuLm9wdGlvbnMubGVuZ3RofSxnZXQgaG9yaXpvbnRhbCgpe3JldHVybiJob3Jpem9udGFsIj09PW8ub3JpZW50YXRpb24udmFsdWV9LGVzdGltYXRlU2l6ZTplPT4iZnVuY3Rpb24iPT10eXBlb2Ygbi5lc3RpbWF0ZVNpemU/bi5lc3RpbWF0ZVNpemUoZSk6bi5lc3RpbWF0ZVNpemU/PzI4LGdldFNjcm9sbEVsZW1lbnQ6KCk9PnMudmFsdWUsb3ZlcnNjYW46bi5vdmVyc2Nhbj8/MTJ9KSxmPWUuY29tcHV0ZWQoKCk9PnYudmFsdWUuZ2V0VmlydHVhbEl0ZW1zKCkubWFwKHQ9Pntjb25zdCBhPWkuZGVmYXVsdCh7b3B0aW9uOm4ub3B0aW9uc1t0LmluZGV4XSx2aXJ0dWFsaXplcjp2LnZhbHVlLHZpcnR1YWxJdGVtOnR9KVswXSxvPWEudHlwZT09PWUuRnJhZ21lbnQmJkFycmF5LmlzQXJyYXkoYS5jaGlsZHJlbik/YS5jaGlsZHJlbi5maW5kKGU9PiJzeW1ib2wiIT10eXBlb2YgZS50eXBlKTphO3JldHVybntpdGVtOnQsaXM6ZS5jbG9uZVZOb2RlKG8se2tleTpgJHt0LmtleX1gLCJkYXRhLWluZGV4Ijp0LmluZGV4LCJhcmlhLXNldHNpemUiOm4ub3B0aW9ucy5sZW5ndGgsImFyaWEtcG9zaW5zZXQiOnQuaW5kZXgrMSxzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsdHJhbnNmb3JtOmB0cmFuc2xhdGVZKCR7dC5zdGFydH1weClgLG92ZXJmbG93QW5jaG9yOiJub25lIn19KX19KSk7by52aXJ0dWFsRm9jdXNIb29rLm9uKGU9Pntjb25zdCB0PW4ub3B0aW9ucy5maW5kSW5kZXgoZT0+QXJyYXkuaXNBcnJheShvLm1vZGVsVmFsdWUudmFsdWUpP2NvbXBhcmUoZSxvLm1vZGVsVmFsdWUudmFsdWVbMF0sby5ieSk6Y29tcGFyZShlLG8ubW9kZWxWYWx1ZS52YWx1ZSxvLmJ5KSk7LTEhPT10PyhlPy5wcmV2ZW50RGVmYXVsdCgpLHYudmFsdWUuc2Nyb2xsVG9JbmRleCh0LHthbGlnbjoic3RhcnQifSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Y29uc3QgdD1xdWVyeUNoZWNrZWRFbGVtZW50KHMudmFsdWUpO3QmJihvLmNoYW5nZUhpZ2hsaWdodCh0KSxlJiZ0Py5mb2N1cygpKX0pKTpvLmhpZ2hsaWdodEZpcnN0SXRlbSgpfSksby52aXJ0dWFsSGlnaGxpZ2h0SG9vay5vbihlPT57Y29uc3QgdD1uLm9wdGlvbnMuZmluZEluZGV4KHQ9PmNvbXBhcmUodCxlLG8uYnkpKTt2LnZhbHVlLnNjcm9sbFRvSW5kZXgodCx7YWxpZ246InN0YXJ0In0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9cXVlcnlDaGVja2VkRWxlbWVudChzLnZhbHVlKTtlJiZvLmNoYW5nZUhpZ2hsaWdodChlKX0pfSk7Y29uc3QgbT1sKCIiLDFlMyksZz1lLmNvbXB1dGVkKCgpPT57Y29uc3QgcGFyc2VUZXh0Q29udGVudD1lPT5uLnRleHRDb250ZW50P24udGV4dENvbnRlbnQoZSk6ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybiBuLm9wdGlvbnMubWFwKChlLHQpPT4oe2luZGV4OnQsdGV4dENvbnRlbnQ6cGFyc2VUZXh0Q29udGVudChlKX0pKX0pO3JldHVybiBvLnZpcnR1YWxLZXlkb3duSG9vay5vbihlPT57Y29uc3QgdD1lLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXk7aWYoIlRhYiI9PT1lLmtleSYmIXQpcmV0dXJuO2xldCBhPXBbZS5rZXldO2lmKHQmJiJhIj09PWUua2V5JiZvLm11bHRpcGxlLnZhbHVlPyhlLnByZXZlbnREZWZhdWx0KCksby5tb2RlbFZhbHVlLnZhbHVlPVsuLi5uLm9wdGlvbnNdLGE9Imxhc3QiKTplLnNoaWZ0S2V5JiZhJiZmdW5jdGlvbihlLHQpe2lmKCFvLmZpcnN0VmFsdWU/LnZhbHVlfHwhby5tdWx0aXBsZS52YWx1ZXx8IUFycmF5LmlzQXJyYXkoby5tb2RlbFZhbHVlLnZhbHVlKSlyZXR1cm47Y29uc3QgYT1kKCkuZmlsdGVyKGU9PiIiIT09ZS5yZWYuZGF0YXNldC5kaXNhYmxlZCksaT1hLmZpbmQoZT0+ZS5yZWY9PT1vLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZSk/LnZhbHVlO2lmKCFpKXJldHVybjtsZXQgbD1udWxsO3N3aXRjaCh0KXtjYXNlInByZXYiOmNhc2UibmV4dCI6bD1maW5kVmFsdWVzQmV0d2VlbihuLm9wdGlvbnMsby5maXJzdFZhbHVlLnZhbHVlLGkpO2JyZWFrO2Nhc2UiZmlyc3QiOmw9ZmluZFZhbHVlc0JldHdlZW4obi5vcHRpb25zLG8uZmlyc3RWYWx1ZS52YWx1ZSxuLm9wdGlvbnM/LlswXSk7YnJlYWs7Y2FzZSJsYXN0IjpsPWZpbmRWYWx1ZXNCZXR3ZWVuKG4ub3B0aW9ucyxvLmZpcnN0VmFsdWUudmFsdWUsbi5vcHRpb25zLmF0KC0xKSl9by5tb2RlbFZhbHVlLnZhbHVlPWx9KDAsYSksWyJmaXJzdCIsImxhc3QiXS5pbmNsdWRlcyhhKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IHQ9ImZpcnN0Ij09PWE/MDpuLm9wdGlvbnMubGVuZ3RoLTE7di52YWx1ZS5zY3JvbGxUb0luZGV4KHQpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9ZCgpLHQ9ImZpcnN0Ij09PWE/ZVswXTplLmF0KC0xKTt0JiZvLmNoYW5nZUhpZ2hsaWdodCh0LnJlZil9KX1lbHNlIGlmKCFhJiYhdCl7bS52YWx1ZSs9ZS5rZXk7Y29uc3QgdD1OdW1iZXIodSgpPy5nZXRBdHRyaWJ1dGUoImRhdGEtaW5kZXgiKSksYT1nLnZhbHVlW3RdLnRleHRDb250ZW50LG49Zy52YWx1ZS5tYXAoZT0+ZS50ZXh0Q29udGVudD8/IiIpLGk9aChuLG0udmFsdWUsYSksbD1nLnZhbHVlLmZpbmQoZT0+ZS50ZXh0Q29udGVudD09PWkpO2wmJih2LnZhbHVlLnNjcm9sbFRvSW5kZXgobC5pbmRleCx7YWxpZ246InN0YXJ0In0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9cy52YWx1ZS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pbmRleD0iJHtsLmluZGV4fSJdYCk7ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZvLmNoYW5nZUhpZ2hsaWdodChlKX0pKX19KSwodCxhKT0+KGUub3BlbkJsb2NrKCksZS5jcmVhdGVFbGVtZW50QmxvY2soImRpdiIseyJkYXRhLXJla2EtdmlydHVhbGl6ZXIiOiIiLHN0eWxlOmUubm9ybWFsaXplU3R5bGUoe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6IjEwMCUiLGhlaWdodDpgJHtlLnVucmVmKHYpLmdldFRvdGFsU2l6ZSgpfXB4YH0pfSxbKGUub3BlbkJsb2NrKCEwKSxlLmNyZWF0ZUVsZW1lbnRCbG9jayhlLkZyYWdtZW50LG51bGwsZS5yZW5kZXJMaXN0KGYudmFsdWUsKHtpczp0LGl0ZW06YX0pPT4oZS5vcGVuQmxvY2soKSxlLmNyZWF0ZUJsb2NrKGUucmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodCkse2tleTphLmluZGV4fSkpKSwxMjgpKV0sNCkpfX0pO2Z1bmN0aW9uIGdldFNpemUoZSx0KXtyZXR1cm4gdD97eHM6NDQsc206NDgsbWQ6NTIsbGc6NTYseGw6NjB9W2VdOnt4czoyNCxzbToyOCxtZDozMixsZzozNix4bDo0MH1bZV19ZnVuY3Rpb24gZ2V0RXN0aW1hdGVTaXplKGUsdCxhLG4pe2NvbnN0IGk9Z2V0U2l6ZSh0LCEwKSxvPWdldFNpemUodCwhMSk7cmV0dXJuIG4/KCk9Pmk6YT90PT5mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuITE7Y29uc3QgYT1zKGUsdCk7cmV0dXJuIG51bGwhPWEmJiIiIT09YX0oZVt0XSxhKT9pOm86KCk9Pm99ZXhwb3J0e0ggYXMgTCxfIGFzIGEsRiBhcyBiLFQgYXMgYyxxIGFzIGQsUyBhcyBlLEIgYXMgZixnZXRFc3RpbWF0ZVNpemUgYXMgZyxBIGFzIGgsdyBhcyBpfTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmlydHVhbGl6ZXItQnlxaTB1QUsubWpzLm1hcAo=", "chunks/nitro/nitro.mjs": "aW1wb3J0e0J1ZmZlciBhcyBlfWZyb20ibm9kZTpidWZmZXIiO2ltcG9ydCBzIGZyb20ibm9kZTpwcm9jZXNzIjtpbXBvcnR7ZW52IGFzIGR9ZnJvbSJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydHtFdmVudEVtaXR0ZXIgYXMgbX1mcm9tIm5vZGU6ZXZlbnRzIjtpbXBvcnR7c2V0SW1tZWRpYXRlIGFzIGgsY2xlYXJJbW1lZGlhdGUgYXMgZ31mcm9tIm5vZGU6dGltZXJzIjtpbXBvcnR7QXN5bmNMb2NhbFN0b3JhZ2UgYXMgeH1mcm9tIm5vZGU6YXN5bmNfaG9va3MiO2Z1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMoZSxzKXtmb3IodmFyIGQ9MDtkPHMubGVuZ3RoO2QrKyl7Y29uc3QgbT1zW2RdO2lmKCJzdHJpbmciIT10eXBlb2YgbSYmIUFycmF5LmlzQXJyYXkobSkpZm9yKGNvbnN0IHMgaW4gbSlpZigiZGVmYXVsdCIhPT1zJiYhKHMgaW4gZSkpe2NvbnN0IGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLHMpO2QmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHMsZC5nZXQ/ZDp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbVtzXX19KX19cmV0dXJuIE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKX0iZ2xvYmFsImluIGdsb2JhbFRoaXN8fChnbG9iYWxUaGlzLmdsb2JhbD1nbG9iYWxUaGlzKTtjbGFzcyBSZWFkU3RyZWFte2ZkO2lzUmF3PSExO2lzVFRZPSExO2NvbnN0cnVjdG9yKGUpe3RoaXMuZmQ9ZX1zZXRSYXdNb2RlKGUpe3JldHVybiB0aGlzLmlzUmF3PWUsdGhpc319Y2xhc3MgV3JpdGVTdHJlYW17ZmQ7Y29sdW1ucz04MDtyb3dzPTI0O2lzVFRZPSExO2NvbnN0cnVjdG9yKGUpe3RoaXMuZmQ9ZX1jbGVhckxpbmUoZSxzKXtyZXR1cm4gcyYmcygpLCExfWNsZWFyU2NyZWVuRG93bihlKXtyZXR1cm4gZSYmZSgpLCExfWN1cnNvclRvKGUscyxkKXtyZXR1cm4gZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoKSwhMX1tb3ZlQ3Vyc29yKGUscyxkKXtyZXR1cm4gZCYmZCgpLCExfWdldENvbG9yRGVwdGgoZSl7cmV0dXJuIDF9aGFzQ29sb3JzKGUscyl7cmV0dXJuITF9Z2V0V2luZG93U2l6ZSgpe3JldHVyblt0aGlzLmNvbHVtbnMsdGhpcy5yb3dzXX13cml0ZShlLHMsZCl7ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihlPShuZXcgVGV4dERlY29kZXIpLmRlY29kZShlKSk7dHJ5e2NvbnNvbGUubG9nKGUpfWNhdGNoe31yZXR1cm4gZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoKSwhMX19ZnVuY3Rpb24gY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcihlKXtyZXR1cm4gbmV3IEVycm9yKGBbdW5lbnZdICR7ZX0gaXMgbm90IGltcGxlbWVudGVkIHlldCFgKX1mdW5jdGlvbiBub3RJbXBsZW1lbnRlZChlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbigoKT0+e3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoZSl9LHtfX3VuZW52X186ITB9KX1jb25zdCAkPSIyMi4xNC4wIjtjbGFzcyBQcm9jZXNzIGV4dGVuZHMgbXtlbnY7aHJ0aW1lO25leHRUaWNrO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5lbnY9ZS5lbnYsdGhpcy5ocnRpbWU9ZS5ocnRpbWUsdGhpcy5uZXh0VGljaz1lLm5leHRUaWNrO2Zvcihjb25zdCBlIG9mWy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFByb2Nlc3MucHJvdG90eXBlKSwuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtLnByb3RvdHlwZSldKXtjb25zdCBzPXRoaXNbZV07ImZ1bmN0aW9uIj09dHlwZW9mIHMmJih0aGlzW2VdPXMuYmluZCh0aGlzKSl9fWVtaXRXYXJuaW5nKGUscyxkKXtjb25zb2xlLndhcm4oYCR7ZD9gWyR7ZH1dIGA6IiJ9JHtzP2Ake3N9OiBgOiIifSR7ZX1gKX1lbWl0KC4uLmUpe3JldHVybiBzdXBlci5lbWl0KC4uLmUpfWxpc3RlbmVycyhlKXtyZXR1cm4gc3VwZXIubGlzdGVuZXJzKGUpfSNlOyN0OyNuO2dldCBzdGRpbigpe3JldHVybiB0aGlzLiNlPz89bmV3IFJlYWRTdHJlYW0oMCl9Z2V0IHN0ZG91dCgpe3JldHVybiB0aGlzLiN0Pz89bmV3IFdyaXRlU3RyZWFtKDEpfWdldCBzdGRlcnIoKXtyZXR1cm4gdGhpcy4jbj8/PW5ldyBXcml0ZVN0cmVhbSgyKX0jaT0iLyI7Y2hkaXIoZSl7dGhpcy4jaT1lfWN3ZCgpe3JldHVybiB0aGlzLiNpfWFyY2g9IiI7cGxhdGZvcm09IiI7YXJndj1bXTthcmd2MD0iIjtleGVjQXJndj1bXTtleGVjUGF0aD0iIjt0aXRsZT0iIjtwaWQ9MjAwO3BwaWQ9MTAwO2dldCB2ZXJzaW9uKCl7cmV0dXJuYHYkeyR9YH1nZXQgdmVyc2lvbnMoKXtyZXR1cm57bm9kZTokfX1nZXQgYWxsb3dlZE5vZGVFbnZpcm9ubWVudEZsYWdzKCl7cmV0dXJuIG5ldyBTZXR9Z2V0IHNvdXJjZU1hcHNFbmFibGVkKCl7cmV0dXJuITF9Z2V0IGRlYnVnUG9ydCgpe3JldHVybiAwfWdldCB0aHJvd0RlcHJlY2F0aW9uKCl7cmV0dXJuITF9Z2V0IHRyYWNlRGVwcmVjYXRpb24oKXtyZXR1cm4hMX1nZXQgZmVhdHVyZXMoKXtyZXR1cm57fX1nZXQgcmVsZWFzZSgpe3JldHVybnt9fWdldCBjb25uZWN0ZWQoKXtyZXR1cm4hMX1nZXQgY29uZmlnKCl7cmV0dXJue319Z2V0IG1vZHVsZUxvYWRMaXN0KCl7cmV0dXJuW119Y29uc3RyYWluZWRNZW1vcnkoKXtyZXR1cm4gMH1hdmFpbGFibGVNZW1vcnkoKXtyZXR1cm4gMH11cHRpbWUoKXtyZXR1cm4gMH1yZXNvdXJjZVVzYWdlKCl7cmV0dXJue319cmVmKCl7fXVucmVmKCl7fXVtYXNrKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy51bWFzayIpfWdldEJ1aWx0aW5Nb2R1bGUoKXt9Z2V0QWN0aXZlUmVzb3VyY2VzSW5mbygpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuZ2V0QWN0aXZlUmVzb3VyY2VzSW5mbyIpfWV4aXQoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLmV4aXQiKX1yZWFsbHlFeGl0KCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5yZWFsbHlFeGl0Iil9a2lsbCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3Mua2lsbCIpfWFib3J0KCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5hYm9ydCIpfWRsb3Blbigpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuZGxvcGVuIil9c2V0U291cmNlTWFwc0VuYWJsZWQoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLnNldFNvdXJjZU1hcHNFbmFibGVkIil9bG9hZEVudkZpbGUoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLmxvYWRFbnZGaWxlIil9ZGlzY29ubmVjdCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuZGlzY29ubmVjdCIpfWNwdVVzYWdlKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5jcHVVc2FnZSIpfXNldFVuY2F1Z2h0RXhjZXB0aW9uQ2FwdHVyZUNhbGxiYWNrKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5zZXRVbmNhdWdodEV4Y2VwdGlvbkNhcHR1cmVDYWxsYmFjayIpfWhhc1VuY2F1Z2h0RXhjZXB0aW9uQ2FwdHVyZUNhbGxiYWNrKCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigicHJvY2Vzcy5oYXNVbmNhdWdodEV4Y2VwdGlvbkNhcHR1cmVDYWxsYmFjayIpfWluaXRncm91cHMoKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLmluaXRncm91cHMiKX1vcGVuU3RkaW4oKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJwcm9jZXNzLm9wZW5TdGRpbiIpfWFzc2VydCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuYXNzZXJ0Iil9YmluZGluZygpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoInByb2Nlc3MuYmluZGluZyIpfXBlcm1pc3Npb249e2hhczpub3RJbXBsZW1lbnRlZCgicHJvY2Vzcy5wZXJtaXNzaW9uLmhhcyIpfTtyZXBvcnQ9e2RpcmVjdG9yeToiIixmaWxlbmFtZToiIixzaWduYWw6IlNJR1VTUjIiLGNvbXBhY3Q6ITEscmVwb3J0T25GYXRhbEVycm9yOiExLHJlcG9ydE9uU2lnbmFsOiExLHJlcG9ydE9uVW5jYXVnaHRFeGNlcHRpb246ITEsZ2V0UmVwb3J0Om5vdEltcGxlbWVudGVkKCJwcm9jZXNzLnJlcG9ydC5nZXRSZXBvcnQiKSx3cml0ZVJlcG9ydDpub3RJbXBsZW1lbnRlZCgicHJvY2Vzcy5yZXBvcnQud3JpdGVSZXBvcnQiKX07ZmluYWxpemF0aW9uPXtyZWdpc3Rlcjpub3RJbXBsZW1lbnRlZCgicHJvY2Vzcy5maW5hbGl6YXRpb24ucmVnaXN0ZXIiKSx1bnJlZ2lzdGVyOm5vdEltcGxlbWVudGVkKCJwcm9jZXNzLmZpbmFsaXphdGlvbi51bnJlZ2lzdGVyIikscmVnaXN0ZXJCZWZvcmVFeGl0Om5vdEltcGxlbWVudGVkKCJwcm9jZXNzLmZpbmFsaXphdGlvbi5yZWdpc3RlckJlZm9yZUV4aXQiKX07bWVtb3J5VXNhZ2U9T2JqZWN0LmFzc2lnbigoKT0+KHthcnJheUJ1ZmZlcnM6MCxyc3M6MCxleHRlcm5hbDowLGhlYXBUb3RhbDowLGhlYXBVc2VkOjB9KSx7cnNzOigpPT4wfSk7bWFpbk1vZHVsZT12b2lkIDA7ZG9tYWluPXZvaWQgMDtzZW5kPXZvaWQgMDtleGl0Q29kZT12b2lkIDA7Y2hhbm5lbD12b2lkIDA7Z2V0ZWdpZD12b2lkIDA7Z2V0ZXVpZD12b2lkIDA7Z2V0Z2lkPXZvaWQgMDtnZXRncm91cHM9dm9pZCAwO2dldHVpZD12b2lkIDA7c2V0ZWdpZD12b2lkIDA7c2V0ZXVpZD12b2lkIDA7c2V0Z2lkPXZvaWQgMDtzZXRncm91cHM9dm9pZCAwO3NldHVpZD12b2lkIDA7X2V2ZW50cz12b2lkIDA7X2V2ZW50c0NvdW50PXZvaWQgMDtfZXhpdGluZz12b2lkIDA7X21heExpc3RlbmVycz12b2lkIDA7X2RlYnVnRW5kPXZvaWQgMDtfZGVidWdQcm9jZXNzPXZvaWQgMDtfZmF0YWxFeGNlcHRpb249dm9pZCAwO19nZXRBY3RpdmVIYW5kbGVzPXZvaWQgMDtfZ2V0QWN0aXZlUmVxdWVzdHM9dm9pZCAwO19raWxsPXZvaWQgMDtfcHJlbG9hZF9tb2R1bGVzPXZvaWQgMDtfcmF3RGVidWc9dm9pZCAwO19zdGFydFByb2ZpbGVySWRsZU5vdGlmaWVyPXZvaWQgMDtfc3RvcFByb2ZpbGVySWRsZU5vdGlmaWVyPXZvaWQgMDtfdGlja0NhbGxiYWNrPXZvaWQgMDtfZGlzY29ubmVjdD12b2lkIDA7X2hhbmRsZVF1ZXVlPXZvaWQgMDtfcGVuZGluZ01lc3NhZ2U9dm9pZCAwO19jaGFubmVsPXZvaWQgMDtfc2VuZD12b2lkIDA7X2xpbmtlZEJpbmRpbmc9dm9pZCAwfWNvbnN0IFM9T2JqZWN0LmNyZWF0ZShudWxsKSxqPWdsb2JhbFRoaXMucHJvY2VzcyxfZ2V0RW52PWU9Pmdsb2JhbFRoaXMuX19lbnZfX3x8aj8uZW52fHwoZT9TOmdsb2JhbFRoaXMpLHo9bmV3IFByb3h5KFMse2dldDooZSxzKT0+X2dldEVudigpW3NdPz9TW3NdLGhhczooZSxzKT0+cyBpbiBfZ2V0RW52KCl8fHMgaW4gUyxzZXQ6KGUscyxkKT0+KF9nZXRFbnYoITApW3NdPWQsITApLGRlbGV0ZVByb3BlcnR5OihlLHMpPT4oZGVsZXRlIF9nZXRFbnYoITApW3NdLCEwKSxvd25LZXlzKCl7Y29uc3QgZT1fZ2V0RW52KCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxzKXtjb25zdCBkPV9nZXRFbnYoKTtpZihzIGluIGQpcmV0dXJue3ZhbHVlOmRbc10sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9fX0pLEk9T2JqZWN0LmFzc2lnbihmdW5jdGlvbihlKXtjb25zdCBzPURhdGUubm93KCksZD1NYXRoLnRydW5jKHMvMWUzKSxtPXMlMWUzKjFlNjtpZihlKXtsZXQgcz1kLWVbMF0saD1tLWVbMF07cmV0dXJuIGg8MCYmKHMtPTEsaD0xZTkraCksW3MsaF19cmV0dXJuW2QsbV19LHtiaWdpbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gQmlnSW50KDFlNipEYXRlLm5vdygpKX19KTtnbG9iYWxUaGlzLl9fZW52X189ZDtjb25zdCBUPW5ldyBQcm9jZXNzKHtlbnY6eixocnRpbWU6SSxuZXh0VGljazpzLm5leHRUaWNrfSk7Zm9yKGNvbnN0IGUgb2ZbImV4aXQiLCJnZXRCdWlsdGluTW9kdWxlIiwicGxhdGZvcm0iXSllIGluIHMmJihUW2VdPXNbZV0pO3MuZmVhdHVyZXMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJmZWF0dXJlcyIse2dldDooKT0+cy5mZWF0dXJlc30pO2NvbnN0e2Fib3J0OlIsYWRkTGlzdGVuZXI6RSxhbGxvd2VkTm9kZUVudmlyb25tZW50RmxhZ3M6TyxoYXNVbmNhdWdodEV4Y2VwdGlvbkNhcHR1cmVDYWxsYmFjazpOLHNldFVuY2F1Z2h0RXhjZXB0aW9uQ2FwdHVyZUNhbGxiYWNrOlUsbG9hZEVudkZpbGU6Qixzb3VyY2VNYXBzRW5hYmxlZDpWLGFyY2g6SCxhcmd2OkssYXJndjA6ZWUsY2hkaXI6dGUsY29uZmlnOmllLGNvbm5lY3RlZDpyZSxjb25zdHJhaW5lZE1lbW9yeTpvZSxhdmFpbGFibGVNZW1vcnk6YWUsY3B1VXNhZ2U6c2UsY3dkOmxlLGRlYnVnUG9ydDpjZSxkbG9wZW46dWUsZGlzY29ubmVjdDpkZSxlbWl0OnBlLGVtaXRXYXJuaW5nOm1lLGVudjpmZSxldmVudE5hbWVzOmhlLGV4ZWNBcmd2OmdlLGV4ZWNQYXRoOnZlLGV4aXQ6eWUsZmluYWxpemF0aW9uOmJlLGZlYXR1cmVzOl9lLGdldEJ1aWx0aW5Nb2R1bGU6eGUsZ2V0QWN0aXZlUmVzb3VyY2VzSW5mbzp3ZSxnZXRNYXhMaXN0ZW5lcnM6JGUsaHJ0aW1lOlNlLGtpbGw6a2UsbGlzdGVuZXJzOmplLGxpc3RlbmVyQ291bnQ6emUsbWVtb3J5VXNhZ2U6SWUsbmV4dFRpY2s6Q2Usb246VGUsb2ZmOlJlLG9uY2U6RWUscGlkOk9lLHBsYXRmb3JtOlBlLHBwaWQ6TmUscHJlcGVuZExpc3RlbmVyOkRlLHByZXBlbmRPbmNlTGlzdGVuZXI6VWUscmF3TGlzdGVuZXJzOkxlLHJlbGVhc2U6QWUscmVtb3ZlQWxsTGlzdGVuZXJzOnFlLHJlbW92ZUxpc3RlbmVyOkZlLHJlcG9ydDpCZSxyZXNvdXJjZVVzYWdlOlplLHNldE1heExpc3RlbmVyczpNZSxzZXRTb3VyY2VNYXBzRW5hYmxlZDpRZSxzdGRlcnI6VmUsc3RkaW46SGUsc3Rkb3V0OldlLHRpdGxlOkplLHVtYXNrOktlLHVwdGltZTpHZSx2ZXJzaW9uOlhlLHZlcnNpb25zOlllLGRvbWFpbjpldCxpbml0Z3JvdXBzOnR0LG1vZHVsZUxvYWRMaXN0Om50LHJlYWxseUV4aXQ6aXQsb3BlblN0ZGluOnJ0LGFzc2VydDpvdCxiaW5kaW5nOmF0LHNlbmQ6c3QsZXhpdENvZGU6Y3QsY2hhbm5lbDp1dCxnZXRlZ2lkOmR0LGdldGV1aWQ6cHQsZ2V0Z2lkOm10LGdldGdyb3VwczpmdCxnZXR1aWQ6aHQsc2V0ZWdpZDp2dCxzZXRldWlkOnl0LHNldGdpZDpidCxzZXRncm91cHM6X3Qsc2V0dWlkOnh0LHBlcm1pc3Npb246d3QsbWFpbk1vZHVsZTokdCxfZXZlbnRzOlN0LF9ldmVudHNDb3VudDprdCxfZXhpdGluZzpqdCxfbWF4TGlzdGVuZXJzOnp0LF9kZWJ1Z0VuZDpJdCxfZGVidWdQcm9jZXNzOkN0LF9mYXRhbEV4Y2VwdGlvbjpUdCxfZ2V0QWN0aXZlSGFuZGxlczpSdCxfZ2V0QWN0aXZlUmVxdWVzdHM6RXQsX2tpbGw6T3QsX3ByZWxvYWRfbW9kdWxlczpQdCxfcmF3RGVidWc6TnQsX3N0YXJ0UHJvZmlsZXJJZGxlTm90aWZpZXI6RHQsX3N0b3BQcm9maWxlcklkbGVOb3RpZmllcjpVdCxfdGlja0NhbGxiYWNrOkx0LF9kaXNjb25uZWN0OkF0LF9oYW5kbGVRdWV1ZTpxdCxfcGVuZGluZ01lc3NhZ2U6RnQsX2NoYW5uZWw6QnQsX3NlbmQ6WnQsX2xpbmtlZEJpbmRpbmc6TXR9PVQsUXQ9Z2xvYmFsVGhpcy5wcm9jZXNzO2dsb2JhbFRoaXMucHJvY2Vzcz1RdD9uZXcgUHJveHkoUXQse2dldDooZSxzLGQpPT5SZWZsZWN0LmhhcyhlLHMpP1JlZmxlY3QuZ2V0KGUscyxkKTpSZWZsZWN0LmdldChULHMsZCl9KTpULGdsb2JhbFRoaXMuQnVmZmVyfHwoZ2xvYmFsVGhpcy5CdWZmZXI9ZSksZ2xvYmFsVGhpcy5zZXRJbW1lZGlhdGV8fChnbG9iYWxUaGlzLnNldEltbWVkaWF0ZT1oKSxnbG9iYWxUaGlzLmNsZWFySW1tZWRpYXRlfHwoZ2xvYmFsVGhpcy5jbGVhckltbWVkaWF0ZT1nKTtjb25zdCBWdD1nbG9iYWxUaGlzLmNyeXB0byxyYW5kb21VVUlEPSgpPT5WdC5yYW5kb21VVUlEKCksSHQ9LyIoPzpffFxcdTB7Mn01W0ZmXSl7Mn0oPzpwfFxcdTB7Mn03MCkoPzpyfFxcdTB7Mn03MikoPzpvfFxcdTB7Mn02W0ZmXSkoPzp0fFxcdTB7Mn03NCkoPzpvfFxcdTB7Mn02W0ZmXSkoPzpffFxcdTB7Mn01W0ZmXSl7Mn0iXHMqOi8sV3Q9LyIoPzpjfFxcdTAwNjMpKD86b3xcXHUwMDZbRmZdKSg/Om58XFx1MDA2W0VlXSkoPzpzfFxcdTAwNzMpKD86dHxcXHUwMDc0KSg/OnJ8XFx1MDA3MikoPzp1fFxcdTAwNzUpKD86Y3xcXHUwMDYzKSg/OnR8XFx1MDA3NCkoPzpvfFxcdTAwNltGZl0pKD86cnxcXHUwMDcyKSJccyo6LyxKdD0vXlxzKlsiW3tdfF5ccyotP1xkezEsMTZ9KFwuXGR7MSwxN30pPyhbRWVdWystXT9cZCspP1xzKiQvO2Z1bmN0aW9uIGpzb25QYXJzZVRyYW5zZm9ybShlLHMpe2lmKCEoIl9fcHJvdG9fXyI9PT1lfHwiY29uc3RydWN0b3IiPT09ZSYmcyYmIm9iamVjdCI9PXR5cGVvZiBzJiYicHJvdG90eXBlImluIHMpKXJldHVybiBzOyFmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oYFtkZXN0cl0gRHJvcHBpbmcgIiR7ZX0iIGtleSB0byBwcmV2ZW50IHByb3RvdHlwZSBwb2xsdXRpb24uYCl9KGUpfWZ1bmN0aW9uIGRlc3RyKGUscz17fSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKCciJz09PWVbMF0mJiciJz09PWVbZS5sZW5ndGgtMV0mJi0xPT09ZS5pbmRleE9mKCJcXCIpKXJldHVybiBlLnNsaWNlKDEsLTEpO2NvbnN0IGQ9ZS50cmltKCk7aWYoZC5sZW5ndGg8PTkpc3dpdGNoKGQudG9Mb3dlckNhc2UoKSl7Y2FzZSJ0cnVlIjpyZXR1cm4hMDtjYXNlImZhbHNlIjpyZXR1cm4hMTtjYXNlInVuZGVmaW5lZCI6cmV0dXJuO2Nhc2UibnVsbCI6cmV0dXJuIG51bGw7Y2FzZSJuYW4iOnJldHVybiBOdW1iZXIuTmFOO2Nhc2UiaW5maW5pdHkiOnJldHVybiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7Y2FzZSItaW5maW5pdHkiOnJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFl9aWYoIUp0LnRlc3QoZSkpe2lmKHMuc3RyaWN0KXRocm93IG5ldyBTeW50YXhFcnJvcigiW2Rlc3RyXSBJbnZhbGlkIEpTT04iKTtyZXR1cm4gZX10cnl7aWYoSHQudGVzdChlKXx8V3QudGVzdChlKSl7aWYocy5zdHJpY3QpdGhyb3cgbmV3IEVycm9yKCJbZGVzdHJdIFBvc3NpYmxlIHByb3RvdHlwZSBwb2xsdXRpb24iKTtyZXR1cm4gSlNPTi5wYXJzZShlLGpzb25QYXJzZVRyYW5zZm9ybSl9cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZCl7aWYocy5zdHJpY3QpdGhyb3cgZDtyZXR1cm4gZX19Y29uc3QgS3Q9LyMvZyxHdD0vJi9nLFh0PS9cLy9nLFl0PS89L2csdG49L1w/L2csbm49L1wrL2cscm49LyU1ZS9naSxvbj0vJTYwL2dpLGFuPS8lN2MvZ2ksc249LyUyMC9naSxsbj0vJTJmL2dpLGNuPS8lMjUyZi9naTtmdW5jdGlvbiBlbmNvZGUkMihlKXtyZXR1cm4gZW5jb2RlVVJJKCIiK2UpLnJlcGxhY2UoYW4sInwiKX1mdW5jdGlvbiBlbmNvZGVRdWVyeVZhbHVlKGUpe3JldHVybiBlbmNvZGUkMigic3RyaW5nIj09dHlwZW9mIGU/ZTpKU09OLnN0cmluZ2lmeShlKSkucmVwbGFjZShubiwiJTJCIikucmVwbGFjZShzbiwiKyIpLnJlcGxhY2UoS3QsIiUyMyIpLnJlcGxhY2UoR3QsIiUyNiIpLnJlcGxhY2Uob24sImAiKS5yZXBsYWNlKHJuLCJeIikucmVwbGFjZShYdCwiJTJGIil9ZnVuY3Rpb24gZW5jb2RlUXVlcnlLZXkoZSl7cmV0dXJuIGVuY29kZVF1ZXJ5VmFsdWUoZSkucmVwbGFjZShZdCwiJTNEIil9ZnVuY3Rpb24gZW5jb2RlUGF0aChlKXtyZXR1cm4gZW5jb2RlJDIoZSkucmVwbGFjZShLdCwiJTIzIikucmVwbGFjZSh0biwiJTNGIikucmVwbGFjZShjbiwiJTJGIikucmVwbGFjZShHdCwiJTI2IikucmVwbGFjZShubiwiJTJCIil9ZnVuY3Rpb24gZGVjb2RlJDQoZT0iIil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoIiIrZSl9Y2F0Y2h7cmV0dXJuIiIrZX19ZnVuY3Rpb24gZGVjb2RlUGF0aChlKXtyZXR1cm4gZGVjb2RlJDQoZS5yZXBsYWNlKGxuLCIlMjUyRiIpKX1mdW5jdGlvbiBkZWNvZGVRdWVyeUtleShlKXtyZXR1cm4gZGVjb2RlJDQoZS5yZXBsYWNlKG5uLCIgIikpfWZ1bmN0aW9uIGRlY29kZVF1ZXJ5VmFsdWUoZSl7cmV0dXJuIGRlY29kZSQ0KGUucmVwbGFjZShubiwiICIpKX1mdW5jdGlvbiBwYXJzZVF1ZXJ5KGU9IiIpe2NvbnN0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTsiPyI9PT1lWzBdJiYoZT1lLnNsaWNlKDEpKTtmb3IoY29uc3QgZCBvZiBlLnNwbGl0KCImIikpe2NvbnN0IGU9ZC5tYXRjaCgvKFtePV0rKT0/KC4qKS8pfHxbXTtpZihlLmxlbmd0aDwyKWNvbnRpbnVlO2NvbnN0IG09ZGVjb2RlUXVlcnlLZXkoZVsxXSk7aWYoIl9fcHJvdG9fXyI9PT1tfHwiY29uc3RydWN0b3IiPT09bSljb250aW51ZTtjb25zdCBoPWRlY29kZVF1ZXJ5VmFsdWUoZVsyXXx8IiIpO3ZvaWQgMD09PXNbbV0/c1ttXT1oOkFycmF5LmlzQXJyYXkoc1ttXSk/c1ttXS5wdXNoKGgpOnNbbV09W3NbbV0saF19cmV0dXJuIHN9ZnVuY3Rpb24gZW5jb2RlUXVlcnlJdGVtKGUscyl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBzJiYiYm9vbGVhbiIhPXR5cGVvZiBzfHwocz1TdHJpbmcocykpLHM/QXJyYXkuaXNBcnJheShzKT9zLm1hcChzPT5gJHtlbmNvZGVRdWVyeUtleShlKX09JHtlbmNvZGVRdWVyeVZhbHVlKHMpfWApLmpvaW4oIiYiKTpgJHtlbmNvZGVRdWVyeUtleShlKX09JHtlbmNvZGVRdWVyeVZhbHVlKHMpfWA6ZW5jb2RlUXVlcnlLZXkoZSl9Y29uc3QgdW49L15bXHNcd1wwKy4tXXsyLH06KFsvXFxdezEsMn0pLyxkbj0vXltcc1x3XDArLi1dezIsfTooWy9cXF17Mn0pPy8scG49L14oWy9cXF1ccyopezIsfVteL1xcXS8sbW49L15bXHNcMF0qKGJsb2J8ZGF0YXxqYXZhc2NyaXB0fHZic2NyaXB0KTokL2ksZm49L1wvJHxcL1w/fFwvIy8saG49L15cLj9cLy87ZnVuY3Rpb24gaGFzUHJvdG9jb2woZSxzPXt9KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBzJiYocz17YWNjZXB0UmVsYXRpdmU6c30pLHMuc3RyaWN0P3VuLnRlc3QoZSk6ZG4udGVzdChlKXx8ISFzLmFjY2VwdFJlbGF0aXZlJiZwbi50ZXN0KGUpfWZ1bmN0aW9uIGlzU2NyaXB0UHJvdG9jb2woZSl7cmV0dXJuISFlJiZtbi50ZXN0KGUpfWZ1bmN0aW9uIGhhc1RyYWlsaW5nU2xhc2goZT0iIixzKXtyZXR1cm4gcz9mbi50ZXN0KGUpOmUuZW5kc1dpdGgoIi8iKX1mdW5jdGlvbiB3aXRob3V0VHJhaWxpbmdTbGFzaChlPSIiLHMpe2lmKCFzKXJldHVybihoYXNUcmFpbGluZ1NsYXNoKGUpP2Uuc2xpY2UoMCwtMSk6ZSl8fCIvIjtpZighaGFzVHJhaWxpbmdTbGFzaChlLCEwKSlyZXR1cm4gZXx8Ii8iO2xldCBkPWUsbT0iIjtjb25zdCBoPWUuaW5kZXhPZigiIyIpOy0xIT09aCYmKGQ9ZS5zbGljZSgwLGgpLG09ZS5zbGljZShoKSk7Y29uc3RbZywuLi54XT1kLnNwbGl0KCI/Iik7cmV0dXJuKChnLmVuZHNXaXRoKCIvIik/Zy5zbGljZSgwLC0xKTpnKXx8Ii8iKSsoeC5sZW5ndGg+MD9gPyR7eC5qb2luKCI/Iil9YDoiIikrbX1mdW5jdGlvbiB3aXRoVHJhaWxpbmdTbGFzaChlPSIiLHMpe2lmKCFzKXJldHVybiBlLmVuZHNXaXRoKCIvIik/ZTplKyIvIjtpZihoYXNUcmFpbGluZ1NsYXNoKGUsITApKXJldHVybiBlfHwiLyI7bGV0IGQ9ZSxtPSIiO2NvbnN0IGg9ZS5pbmRleE9mKCIjIik7aWYoLTEhPT1oJiYoZD1lLnNsaWNlKDAsaCksbT1lLnNsaWNlKGgpLCFkKSlyZXR1cm4gbTtjb25zdFtnLC4uLnhdPWQuc3BsaXQoIj8iKTtyZXR1cm4gZysiLyIrKHgubGVuZ3RoPjA/YD8ke3guam9pbigiPyIpfWA6IiIpK219ZnVuY3Rpb24gd2l0aExlYWRpbmdTbGFzaChlPSIiKXtyZXR1cm4gZnVuY3Rpb24oZT0iIil7cmV0dXJuIGUuc3RhcnRzV2l0aCgiLyIpfShlKT9lOiIvIitlfWZ1bmN0aW9uIHdpdGhvdXRCYXNlKGUscyl7aWYoaXNFbXB0eVVSTChzKSlyZXR1cm4gZTtjb25zdCBkPXdpdGhvdXRUcmFpbGluZ1NsYXNoKHMpO2lmKCFlLnN0YXJ0c1dpdGgoZCkpcmV0dXJuIGU7Y29uc3QgbT1lW2QubGVuZ3RoXTtpZihtJiYiLyIhPT1tJiYiPyIhPT1tKXJldHVybiBlO2NvbnN0IGg9ZS5zbGljZShkLmxlbmd0aCk7cmV0dXJuIi8iPT09aFswXT9oOiIvIitofWZ1bmN0aW9uIHdpdGhRdWVyeShlLHMpe2NvbnN0IGQ9cGFyc2VVUkwoZSksbT17Li4ucGFyc2VRdWVyeShkLnNlYXJjaCksLi4uc307cmV0dXJuIGQuc2VhcmNoPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5maWx0ZXIocz0+dm9pZCAwIT09ZVtzXSkubWFwKHM9PmVuY29kZVF1ZXJ5SXRlbShzLGVbc10pKS5maWx0ZXIoQm9vbGVhbikuam9pbigiJiIpfShtKSxmdW5jdGlvbihlKXtjb25zdCBzPWUucGF0aG5hbWV8fCIiLGQ9ZS5zZWFyY2g/KGUuc2VhcmNoLnN0YXJ0c1dpdGgoIj8iKT8iIjoiPyIpK2Uuc2VhcmNoOiIiLG09ZS5oYXNofHwiIixoPWUuYXV0aD9lLmF1dGgrIkAiOiIiLGc9ZS5ob3N0fHwiIix4PWUucHJvdG9jb2x8fGVbZ25dPyhlLnByb3RvY29sfHwiIikrIi8vIjoiIjtyZXR1cm4geCtoK2crcytkK219KGQpfWZ1bmN0aW9uIGdldFF1ZXJ5JDEoZSl7cmV0dXJuIHBhcnNlUXVlcnkocGFyc2VVUkwoZSkuc2VhcmNoKX1mdW5jdGlvbiBpc0VtcHR5VVJMKGUpe3JldHVybiFlfHwiLyI9PT1lfWZ1bmN0aW9uIGpvaW5VUkwoZSwuLi5zKXtsZXQgZD1lfHwiIjtmb3IoY29uc3QgZSBvZiBzLmZpbHRlcihlPT5mdW5jdGlvbihlKXtyZXR1cm4gZSYmIi8iIT09ZX0oZSkpKWlmKGQpe2NvbnN0IHM9ZS5yZXBsYWNlKGhuLCIiKTtkPXdpdGhUcmFpbGluZ1NsYXNoKGQpK3N9ZWxzZSBkPWU7cmV0dXJuIGR9ZnVuY3Rpb24gam9pblJlbGF0aXZlVVJMKC4uLmUpe2NvbnN0IHM9L1wvKD8hXC8pLyxkPWUuZmlsdGVyKEJvb2xlYW4pLG09W107bGV0IGg9MDtmb3IoY29uc3QgZSBvZiBkKWlmKGUmJiIvIiE9PWUpZm9yKGNvbnN0W2QsZ11vZiBlLnNwbGl0KHMpLmVudHJpZXMoKSlpZihnJiYiLiIhPT1nKWlmKCIuLiIhPT1nKTE9PT1kJiZtW20ubGVuZ3RoLTFdPy5lbmRzV2l0aCgiOi8iKT9tW20ubGVuZ3RoLTFdKz0iLyIrZzoobS5wdXNoKGcpLGgrKyk7ZWxzZXtpZigxPT09bS5sZW5ndGgmJmhhc1Byb3RvY29sKG1bMF0pKWNvbnRpbnVlO20ucG9wKCksaC0tfWxldCBnPW0uam9pbigiLyIpO3JldHVybiBoPj0wP2RbMF0/LnN0YXJ0c1dpdGgoIi8iKSYmIWcuc3RhcnRzV2l0aCgiLyIpP2c9Ii8iK2c6ZFswXT8uc3RhcnRzV2l0aCgiLi8iKSYmIWcuc3RhcnRzV2l0aCgiLi8iKSYmKGc9Ii4vIitnKTpnPSIuLi8iLnJlcGVhdCgtMSpoKStnLGRbZC5sZW5ndGgtMV0/LmVuZHNXaXRoKCIvIikmJiFnLmVuZHNXaXRoKCIvIikmJihnKz0iLyIpLGd9Y29uc3QgZ249U3ltYm9sLmZvcigidWZvOnByb3RvY29sUmVsYXRpdmUiKTtmdW5jdGlvbiBwYXJzZVVSTChlPSIiLHMpe2NvbnN0IGQ9ZS5tYXRjaCgvXltcc1wwXSooYmxvYjp8ZGF0YTp8amF2YXNjcmlwdDp8dmJzY3JpcHQ6KSguKikvaSk7aWYoZCl7Y29uc3RbLGUscz0iIl09ZDtyZXR1cm57cHJvdG9jb2w6ZS50b0xvd2VyQ2FzZSgpLHBhdGhuYW1lOnMsaHJlZjplK3MsYXV0aDoiIixob3N0OiIiLHNlYXJjaDoiIixoYXNoOiIifX1pZighaGFzUHJvdG9jb2woZSx7YWNjZXB0UmVsYXRpdmU6ITB9KSlyZXR1cm4gcGFyc2VQYXRoKGUpO2NvbnN0WyxtPSIiLGgsZz0iIl09ZS5yZXBsYWNlKC9cXC9nLCIvIikubWF0Y2goL15bXHNcMF0qKFtcdysuLV17Mix9Oik/XC9cLyhbXi9AXStAKT8oLiopLyl8fFtdO2xldFsseD0iIiwkPSIiXT1nLm1hdGNoKC8oW14jLz9dKikoLiopPy8pfHxbXTsiZmlsZToiPT09bSYmKCQ9JC5yZXBsYWNlKC9cLyg/PVtBLVphLXpdOikvLCIiKSk7Y29uc3R7cGF0aG5hbWU6UyxzZWFyY2g6aixoYXNoOnp9PXBhcnNlUGF0aCgkKTtyZXR1cm57cHJvdG9jb2w6bS50b0xvd2VyQ2FzZSgpLGF1dGg6aD9oLnNsaWNlKDAsTWF0aC5tYXgoMCxoLmxlbmd0aC0xKSk6IiIsaG9zdDp4LHBhdGhuYW1lOlMsc2VhcmNoOmosaGFzaDp6LFtnbl06IW19fWZ1bmN0aW9uIHBhcnNlUGF0aChlPSIiKXtjb25zdFtzPSIiLGQ9IiIsbT0iIl09KGUubWF0Y2goLyhbXiM/XSopKFw/W14jXSopPygjLiopPy8pfHxbXSkuc3BsaWNlKDEpO3JldHVybntwYXRobmFtZTpzLHNlYXJjaDpkLGhhc2g6bX19Y29uc3Qgdm49KCgpPT57Y29uc3QgQz1mdW5jdGlvbigpe307cmV0dXJuIEMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobnVsbCksQ30pKCk7ZnVuY3Rpb24gZGVjb2RlJDMoZSl7cmV0dXJuIGUuaW5jbHVkZXMoIiUiKT9kZWNvZGVVUklDb21wb25lbnQoZSk6ZX1mdW5jdGlvbiB0cnlEZWNvZGUkMShlLHMpe3RyeXtyZXR1cm4gcyhlKX1jYXRjaHtyZXR1cm4gZX19Y29uc3QgeW49L15bXHUwMDA5XHUwMDIwLVx1MDA3RVx1MDA4MC1cdTAwRkZdKyQvO2Z1bmN0aW9uIHNlcmlhbGl6ZSQyKGUscyxkKXtjb25zdCBtPWR8fHt9LGg9bS5lbmNvZGV8fGVuY29kZVVSSUNvbXBvbmVudDtpZigiZnVuY3Rpb24iIT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZW5jb2RlIGlzIGludmFsaWQiKTtpZigheW4udGVzdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBuYW1lIGlzIGludmFsaWQiKTtjb25zdCBnPWgocyk7aWYoZyYmIXluLnRlc3QoZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgdmFsIGlzIGludmFsaWQiKTtsZXQgeD1lKyI9IitnO2lmKHZvaWQgMCE9PW0ubWF4QWdlJiZudWxsIT09bS5tYXhBZ2Upe2NvbnN0IGU9bS5tYXhBZ2UtMDtpZihOdW1iZXIuaXNOYU4oZSl8fCFOdW1iZXIuaXNGaW5pdGUoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIG1heEFnZSBpcyBpbnZhbGlkIik7eCs9IjsgTWF4LUFnZT0iK01hdGguZmxvb3IoZSl9aWYobS5kb21haW4pe2lmKCF5bi50ZXN0KG0uZG9tYWluKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZG9tYWluIGlzIGludmFsaWQiKTt4Kz0iOyBEb21haW49IittLmRvbWFpbn1pZihtLnBhdGgpe2lmKCF5bi50ZXN0KG0ucGF0aCkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIHBhdGggaXMgaW52YWxpZCIpO3grPSI7IFBhdGg9IittLnBhdGh9aWYobS5leHBpcmVzKXtpZigkPW0uZXhwaXJlcywhKCJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgkKXx8JCBpbnN0YW5jZW9mIERhdGUpfHxOdW1iZXIuaXNOYU4obS5leHBpcmVzLnZhbHVlT2YoKSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIGV4cGlyZXMgaXMgaW52YWxpZCIpO3grPSI7IEV4cGlyZXM9IittLmV4cGlyZXMudG9VVENTdHJpbmcoKX12YXIgJDtpZihtLmh0dHBPbmx5JiYoeCs9IjsgSHR0cE9ubHkiKSxtLnNlY3VyZSYmKHgrPSI7IFNlY3VyZSIpLG0ucHJpb3JpdHkpe3N3aXRjaCgic3RyaW5nIj09dHlwZW9mIG0ucHJpb3JpdHk/bS5wcmlvcml0eS50b0xvd2VyQ2FzZSgpOm0ucHJpb3JpdHkpe2Nhc2UibG93Ijp4Kz0iOyBQcmlvcml0eT1Mb3ciO2JyZWFrO2Nhc2UibWVkaXVtIjp4Kz0iOyBQcmlvcml0eT1NZWRpdW0iO2JyZWFrO2Nhc2UiaGlnaCI6eCs9IjsgUHJpb3JpdHk9SGlnaCI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gcHJpb3JpdHkgaXMgaW52YWxpZCIpfX1pZihtLnNhbWVTaXRlKXtzd2l0Y2goInN0cmluZyI9PXR5cGVvZiBtLnNhbWVTaXRlP20uc2FtZVNpdGUudG9Mb3dlckNhc2UoKTptLnNhbWVTaXRlKXtjYXNlITA6eCs9IjsgU2FtZVNpdGU9U3RyaWN0IjticmVhaztjYXNlImxheCI6eCs9IjsgU2FtZVNpdGU9TGF4IjticmVhaztjYXNlInN0cmljdCI6eCs9IjsgU2FtZVNpdGU9U3RyaWN0IjticmVhaztjYXNlIm5vbmUiOngrPSI7IFNhbWVTaXRlPU5vbmUiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIHNhbWVTaXRlIGlzIGludmFsaWQiKX19cmV0dXJuIG0ucGFydGl0aW9uZWQmJih4Kz0iOyBQYXJ0aXRpb25lZCIpLHh9ZnVuY3Rpb24gcGFyc2VTZXRDb29raWUoZSxzKXtjb25zdCBkPShlfHwiIikuc3BsaXQoIjsiKS5maWx0ZXIoZT0+InN0cmluZyI9PXR5cGVvZiBlJiYhIWUudHJpbSgpKSxtPWZ1bmN0aW9uKGUpe2xldCBzPSIiLGQ9IiI7Y29uc3QgbT1lLnNwbGl0KCI9Iik7bS5sZW5ndGg+MT8ocz1tLnNoaWZ0KCksZD1tLmpvaW4oIj0iKSk6ZD1lO3JldHVybntuYW1lOnMsdmFsdWU6ZH19KGQuc2hpZnQoKXx8IiIpLGg9bS5uYW1lO2xldCBnPW0udmFsdWU7dHJ5e2c9ITE9PT1zPy5kZWNvZGU/Zzoocz8uZGVjb2RlfHxkZWNvZGVVUklDb21wb25lbnQpKGcpfWNhdGNoe31jb25zdCB4PXtuYW1lOmgsdmFsdWU6Z307Zm9yKGNvbnN0IGUgb2YgZCl7Y29uc3Qgcz1lLnNwbGl0KCI9IiksZD0ocy5zaGlmdCgpfHwiIikudHJpbVN0YXJ0KCkudG9Mb3dlckNhc2UoKSxtPXMuam9pbigiPSIpO3N3aXRjaChkKXtjYXNlImV4cGlyZXMiOnguZXhwaXJlcz1uZXcgRGF0ZShtKTticmVhaztjYXNlIm1heC1hZ2UiOngubWF4QWdlPU51bWJlci5wYXJzZUludChtLDEwKTticmVhaztjYXNlInNlY3VyZSI6eC5zZWN1cmU9ITA7YnJlYWs7Y2FzZSJodHRwb25seSI6eC5odHRwT25seT0hMDticmVhaztjYXNlInNhbWVzaXRlIjp4LnNhbWVTaXRlPW07YnJlYWs7ZGVmYXVsdDp4W2RdPW19fXJldHVybiB4fWNvbnN0IGJuPTAsX249MSx4bj0yO2Z1bmN0aW9uIGNyZWF0ZVJvdXRlciQxKGU9e30pe2NvbnN0IHM9e29wdGlvbnM6ZSxyb290Tm9kZTpjcmVhdGVSYWRpeE5vZGUoKSxzdGF0aWNSb3V0ZXNNYXA6e319LG5vcm1hbGl6ZVRyYWlsaW5nU2xhc2g9cz0+ZS5zdHJpY3RUcmFpbGluZ1NsYXNoP3M6cy5yZXBsYWNlKC9cLyQvLCIiKXx8Ii8iO2lmKGUucm91dGVzKWZvcihjb25zdCBkIGluIGUucm91dGVzKWluc2VydChzLG5vcm1hbGl6ZVRyYWlsaW5nU2xhc2goZCksZS5yb3V0ZXNbZF0pO3JldHVybntjdHg6cyxsb29rdXA6ZT0+ZnVuY3Rpb24oZSxzKXtjb25zdCBkPWUuc3RhdGljUm91dGVzTWFwW3NdO2lmKGQpcmV0dXJuIGQuZGF0YTtjb25zdCBtPXMuc3BsaXQoIi8iKSxoPXt9O2xldCBnPSExLHg9bnVsbCwkPWUucm9vdE5vZGUsUz1udWxsO2ZvcihsZXQgZT0wO2U8bS5sZW5ndGg7ZSsrKXtjb25zdCBzPW1bZV07bnVsbCE9PSQud2lsZGNhcmRDaGlsZE5vZGUmJih4PSQud2lsZGNhcmRDaGlsZE5vZGUsUz1tLnNsaWNlKGUpLmpvaW4oIi8iKSk7Y29uc3QgZD0kLmNoaWxkcmVuLmdldChzKTtpZih2b2lkIDA9PT1kKXtpZigkJiYkLnBsYWNlaG9sZGVyQ2hpbGRyZW4ubGVuZ3RoPjEpe2NvbnN0IHM9bS5sZW5ndGgtZTskPSQucGxhY2Vob2xkZXJDaGlsZHJlbi5maW5kKGU9PmUubWF4RGVwdGg9PT1zKXx8bnVsbH1lbHNlICQ9JC5wbGFjZWhvbGRlckNoaWxkcmVuWzBdfHxudWxsO2lmKCEkKWJyZWFrOyQucGFyYW1OYW1lJiYoaFskLnBhcmFtTmFtZV09cyksZz0hMH1lbHNlICQ9ZH1udWxsIT09JCYmbnVsbCE9PSQuZGF0YXx8bnVsbD09PXh8fCgkPXgsaFskLnBhcmFtTmFtZXx8Il8iXT1TLGc9ITApO2lmKCEkKXJldHVybiBudWxsO2lmKGcpcmV0dXJuey4uLiQuZGF0YSxwYXJhbXM6Zz9oOnZvaWQgMH07cmV0dXJuICQuZGF0YX0ocyxub3JtYWxpemVUcmFpbGluZ1NsYXNoKGUpKSxpbnNlcnQ6KGUsZCk9Pmluc2VydChzLG5vcm1hbGl6ZVRyYWlsaW5nU2xhc2goZSksZCkscmVtb3ZlOmU9PmZ1bmN0aW9uKGUscyl7bGV0IGQ9ITE7Y29uc3QgbT1zLnNwbGl0KCIvIik7bGV0IGg9ZS5yb290Tm9kZTtmb3IoY29uc3QgZSBvZiBtKWlmKGg9aC5jaGlsZHJlbi5nZXQoZSksIWgpcmV0dXJuIGQ7aWYoaC5kYXRhKXtjb25zdCBlPW0uYXQoLTEpfHwiIjtoLmRhdGE9bnVsbCwwPT09T2JqZWN0LmtleXMoaC5jaGlsZHJlbikubGVuZ3RoJiZoLnBhcmVudCYmKGgucGFyZW50LmNoaWxkcmVuLmRlbGV0ZShlKSxoLnBhcmVudC53aWxkY2FyZENoaWxkTm9kZT1udWxsLGgucGFyZW50LnBsYWNlaG9sZGVyQ2hpbGRyZW49W10pLGQ9ITB9cmV0dXJuIGR9KHMsbm9ybWFsaXplVHJhaWxpbmdTbGFzaChlKSl9fWZ1bmN0aW9uIGluc2VydChlLHMsZCl7bGV0IG09ITA7Y29uc3QgaD1zLnNwbGl0KCIvIik7bGV0IGc9ZS5yb290Tm9kZSx4PTA7Y29uc3QgJD1bZ107Zm9yKGNvbnN0IGUgb2YgaCl7bGV0IHM7aWYocz1nLmNoaWxkcmVuLmdldChlKSlnPXM7ZWxzZXtjb25zdCBkPWdldE5vZGVUeXBlKGUpO3M9Y3JlYXRlUmFkaXhOb2RlKHt0eXBlOmQscGFyZW50Omd9KSxnLmNoaWxkcmVuLnNldChlLHMpLGQ9PT14bj8ocy5wYXJhbU5hbWU9IioiPT09ZT8iXyIreCsrOmUuc2xpY2UoMSksZy5wbGFjZWhvbGRlckNoaWxkcmVuLnB1c2gocyksbT0hMSk6ZD09PV9uJiYoZy53aWxkY2FyZENoaWxkTm9kZT1zLHMucGFyYW1OYW1lPWUuc2xpY2UoMyl8fCJfIixtPSExKSwkLnB1c2gocyksZz1zfX1mb3IoY29uc3RbZSxzXW9mICQuZW50cmllcygpKXMubWF4RGVwdGg9TWF0aC5tYXgoJC5sZW5ndGgtZSxzLm1heERlcHRofHwwKTtyZXR1cm4gZy5kYXRhPWQsITA9PT1tJiYoZS5zdGF0aWNSb3V0ZXNNYXBbc109ZyksZ31mdW5jdGlvbiBjcmVhdGVSYWRpeE5vZGUoZT17fSl7cmV0dXJue3R5cGU6ZS50eXBlfHxibixtYXhEZXB0aDowLHBhcmVudDplLnBhcmVudHx8bnVsbCxjaGlsZHJlbjpuZXcgTWFwLGRhdGE6ZS5kYXRhfHxudWxsLHBhcmFtTmFtZTplLnBhcmFtTmFtZXx8bnVsbCx3aWxkY2FyZENoaWxkTm9kZTpudWxsLHBsYWNlaG9sZGVyQ2hpbGRyZW46W119fWZ1bmN0aW9uIGdldE5vZGVUeXBlKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIioqIik/X246IjoiPT09ZVswXXx8IioiPT09ZT94bjpibn1mdW5jdGlvbiB0b1JvdXRlTWF0Y2hlcihlKXtyZXR1cm4gZnVuY3Rpb24oZSxzKXtyZXR1cm57Y3R4Ont0YWJsZTplfSxtYXRjaEFsbDpkPT5fbWF0Y2hSb3V0ZXMoZCxlLHMpfX0oX3JvdXRlck5vZGVUb1RhYmxlKCIiLGUuY3R4LnJvb3ROb2RlKSxlLmN0eC5vcHRpb25zLnN0cmljdFRyYWlsaW5nU2xhc2gpfWZ1bmN0aW9uIF9tYXRjaFJvdXRlcyhlLHMsZCl7ITAhPT1kJiZlLmVuZHNXaXRoKCIvIikmJihlPWUuc2xpY2UoMCwtMSl8fCIvIik7Y29uc3QgbT1bXTtmb3IoY29uc3RbZCxoXW9mIF9zb3J0Um91dGVzTWFwKHMud2lsZGNhcmQpKShlPT09ZHx8ZS5zdGFydHNXaXRoKGQrIi8iKSkmJm0ucHVzaChoKTtmb3IoY29uc3RbZCxoXW9mIF9zb3J0Um91dGVzTWFwKHMuZHluYW1pYykpaWYoZS5zdGFydHNXaXRoKGQrIi8iKSl7Y29uc3Qgcz0iLyIrZS5zbGljZShkLmxlbmd0aCkuc3BsaXQoIi8iKS5zcGxpY2UoMikuam9pbigiLyIpO20ucHVzaCguLi5fbWF0Y2hSb3V0ZXMocyxoKSl9Y29uc3QgaD1zLnN0YXRpYy5nZXQoZSk7cmV0dXJuIGgmJm0ucHVzaChoKSxtLmZpbHRlcihCb29sZWFuKX1mdW5jdGlvbiBfc29ydFJvdXRlc01hcChlKXtyZXR1cm5bLi4uZS5lbnRyaWVzKCldLnNvcnQoKGUscyk9PmVbMF0ubGVuZ3RoLXNbMF0ubGVuZ3RoKX1mdW5jdGlvbiBfcm91dGVyTm9kZVRvVGFibGUoZSxzKXtjb25zdCBkPXtzdGF0aWM6bmV3IE1hcCx3aWxkY2FyZDpuZXcgTWFwLGR5bmFtaWM6bmV3IE1hcH07cmV0dXJuIGZ1bmN0aW9uIF9hZGROb2RlKGUscyl7aWYoZSlpZihzLnR5cGUhPT1ibnx8ZS5pbmNsdWRlcygiKiIpfHxlLmluY2x1ZGVzKCI6Iikpe2lmKHMudHlwZT09PV9uKWQud2lsZGNhcmQuc2V0KGUucmVwbGFjZSgiLyoqIiwiIikscy5kYXRhKTtlbHNlIGlmKHMudHlwZT09PXhuKXtjb25zdCBtPV9yb3V0ZXJOb2RlVG9UYWJsZSgiIixzKTtyZXR1cm4gcy5kYXRhJiZtLnN0YXRpYy5zZXQoIi8iLHMuZGF0YSksdm9pZCBkLmR5bmFtaWMuc2V0KGUucmVwbGFjZSgvXC9cKnxcLzpcdysvLCIiKSxtKX19ZWxzZSBzLmRhdGEmJmQuc3RhdGljLnNldChlLHMuZGF0YSk7Zm9yKGNvbnN0W2QsbV1vZiBzLmNoaWxkcmVuLmVudHJpZXMoKSlfYWRkTm9kZShgJHtlfS8ke2R9YC5yZXBsYWNlKCIvLyIsIi8iKSxtKX0oZSxzKSxkfWZ1bmN0aW9uIGlzUGxhaW5PYmplY3QkMyhlKXtpZihudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2NvbnN0IHM9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybihudWxsPT09c3x8cz09PU9iamVjdC5wcm90b3R5cGV8fG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YocykpJiYoIShTeW1ib2wuaXRlcmF0b3IgaW4gZSkmJighKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBlKXx8IltvYmplY3QgTW9kdWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpKX1mdW5jdGlvbiBfZGVmdSQxKGUscyxkPSIuIixtKXtpZighaXNQbGFpbk9iamVjdCQzKHMpKXJldHVybiBfZGVmdSQxKGUse30sZCxtKTtjb25zdCBoPXsuLi5zfTtmb3IoY29uc3QgcyBvZiBPYmplY3Qua2V5cyhlKSl7aWYoIl9fcHJvdG9fXyI9PT1zfHwiY29uc3RydWN0b3IiPT09cyljb250aW51ZTtjb25zdCBnPWVbc107bnVsbCE9ZyYmKG0mJm0oaCxzLGcsZCl8fChBcnJheS5pc0FycmF5KGcpJiZBcnJheS5pc0FycmF5KGhbc10pP2hbc109Wy4uLmcsLi4uaFtzXV06aXNQbGFpbk9iamVjdCQzKGcpJiZpc1BsYWluT2JqZWN0JDMoaFtzXSk/aFtzXT1fZGVmdSQxKGcsaFtzXSwoZD9gJHtkfS5gOiIiKStzLnRvU3RyaW5nKCksbSk6aFtzXT1nKSl9cmV0dXJuIGh9ZnVuY3Rpb24gY3JlYXRlRGVmdSQxKGUpe3JldHVybiguLi5zKT0+cy5yZWR1Y2UoKHMsZCk9Pl9kZWZ1JDEocyxkLCIiLGUpLHt9KX1jb25zdCB3bj1jcmVhdGVEZWZ1JDEoKSwkbj1jcmVhdGVEZWZ1JDEoKGUscyxkKT0+e2lmKHZvaWQgMCE9PWVbc10mJiJmdW5jdGlvbiI9PXR5cGVvZiBkKXJldHVybiBlW3NdPWQoZVtzXSksITB9KTtmdW5jdGlvbiBvKGUpe3Rocm93IG5ldyBFcnJvcihgJHtlfSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0IWApfWNsYXNzIGkgZXh0ZW5kcyBte19fdW5lbnZfXz17fTtyZWFkYWJsZUVuY29kaW5nPW51bGw7cmVhZGFibGVFbmRlZD0hMDtyZWFkYWJsZUZsb3dpbmc9ITE7cmVhZGFibGVIaWdoV2F0ZXJNYXJrPTA7cmVhZGFibGVMZW5ndGg9MDtyZWFkYWJsZU9iamVjdE1vZGU9ITE7cmVhZGFibGVBYm9ydGVkPSExO3JlYWRhYmxlRGlkUmVhZD0hMTtjbG9zZWQ9ITE7ZXJyb3JlZD1udWxsO3JlYWRhYmxlPSExO2Rlc3Ryb3llZD0hMTtzdGF0aWMgZnJvbShlLHMpe3JldHVybiBuZXcgaShzKX1jb25zdHJ1Y3RvcihlKXtzdXBlcigpfV9yZWFkKGUpe31yZWFkKGUpe31zZXRFbmNvZGluZyhlKXtyZXR1cm4gdGhpc31wYXVzZSgpe3JldHVybiB0aGlzfXJlc3VtZSgpe3JldHVybiB0aGlzfWlzUGF1c2VkKCl7cmV0dXJuITB9dW5waXBlKGUpe3JldHVybiB0aGlzfXVuc2hpZnQoZSxzKXt9d3JhcChlKXtyZXR1cm4gdGhpc31wdXNoKGUscyl7cmV0dXJuITF9X2Rlc3Ryb3koZSxzKXt0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpfWRlc3Ryb3koZSl7cmV0dXJuIHRoaXMuZGVzdHJveWVkPSEwLHRoaXMuX2Rlc3Ryb3koZSksdGhpc31waXBlKGUscyl7cmV0dXJue319Y29tcG9zZShlLHMpe3Rocm93IG5ldyBFcnJvcigiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4iKX1bU3ltYm9sLmFzeW5jRGlzcG9zZV0oKXtyZXR1cm4gdGhpcy5kZXN0cm95KCksUHJvbWlzZS5yZXNvbHZlKCl9YXN5bmMqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpe3Rocm93IG8oIlJlYWRhYmxlLmFzeW5jSXRlcmF0b3IiKX1pdGVyYXRvcihlKXt0aHJvdyBvKCJSZWFkYWJsZS5pdGVyYXRvciIpfW1hcChlLHMpe3Rocm93IG8oIlJlYWRhYmxlLm1hcCIpfWZpbHRlcihlLHMpe3Rocm93IG8oIlJlYWRhYmxlLmZpbHRlciIpfWZvckVhY2goZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5mb3JFYWNoIil9cmVkdWNlKGUscyxkKXt0aHJvdyBvKCJSZWFkYWJsZS5yZWR1Y2UiKX1maW5kKGUscyl7dGhyb3cgbygiUmVhZGFibGUuZmluZCIpfWZpbmRJbmRleChlLHMpe3Rocm93IG8oIlJlYWRhYmxlLmZpbmRJbmRleCIpfXNvbWUoZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5zb21lIil9dG9BcnJheShlKXt0aHJvdyBvKCJSZWFkYWJsZS50b0FycmF5Iil9ZXZlcnkoZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5ldmVyeSIpfWZsYXRNYXAoZSxzKXt0aHJvdyBvKCJSZWFkYWJsZS5mbGF0TWFwIil9ZHJvcChlLHMpe3Rocm93IG8oIlJlYWRhYmxlLmRyb3AiKX10YWtlKGUscyl7dGhyb3cgbygiUmVhZGFibGUudGFrZSIpfWFzSW5kZXhlZFBhaXJzKGUpe3Rocm93IG8oIlJlYWRhYmxlLmFzSW5kZXhlZFBhaXJzIil9fWxldCBTbj1jbGFzcyBleHRlbmRzIG17X191bmVudl9fPXt9O3dyaXRhYmxlPSEwO3dyaXRhYmxlRW5kZWQ9ITE7d3JpdGFibGVGaW5pc2hlZD0hMTt3cml0YWJsZUhpZ2hXYXRlck1hcms9MDt3cml0YWJsZUxlbmd0aD0wO3dyaXRhYmxlT2JqZWN0TW9kZT0hMTt3cml0YWJsZUNvcmtlZD0wO2Nsb3NlZD0hMTtlcnJvcmVkPW51bGw7d3JpdGFibGVOZWVkRHJhaW49ITE7d3JpdGFibGVBYm9ydGVkPSExO2Rlc3Ryb3llZD0hMTtfZGF0YTtfZW5jb2Rpbmc9InV0ZjgiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCl9cGlwZShlLHMpe3JldHVybnt9fV93cml0ZShzLGQsbSl7aWYodGhpcy53cml0YWJsZUVuZGVkKW0mJm0oKTtlbHNle2lmKHZvaWQgMD09PXRoaXMuX2RhdGEpdGhpcy5fZGF0YT1zO2Vsc2V7Y29uc3QgbT0ic3RyaW5nIj09dHlwZW9mIHRoaXMuX2RhdGE/ZS5mcm9tKHRoaXMuX2RhdGEsdGhpcy5fZW5jb2Rpbmd8fGR8fCJ1dGY4Iik6dGhpcy5fZGF0YSxoPSJzdHJpbmciPT10eXBlb2Ygcz9lLmZyb20ocyxkfHx0aGlzLl9lbmNvZGluZ3x8InV0ZjgiKTpzO3RoaXMuX2RhdGE9ZS5jb25jYXQoW20saF0pfXRoaXMuX2VuY29kaW5nPWQsbSYmbSgpfX1fd3JpdGV2KGUscyl7fV9kZXN0cm95KGUscyl7fV9maW5hbChlKXt9d3JpdGUoZSxzLGQpe2NvbnN0IG09InN0cmluZyI9PXR5cGVvZiBzP3RoaXMuX2VuY29kaW5nOiJ1dGY4IixoPSJmdW5jdGlvbiI9PXR5cGVvZiBzP3M6ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZDp2b2lkIDA7cmV0dXJuIHRoaXMuX3dyaXRlKGUsbSxoKSwhMH1zZXREZWZhdWx0RW5jb2RpbmcoZSl7cmV0dXJuIHRoaXN9ZW5kKGUscyxkKXtjb25zdCBtPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ImZ1bmN0aW9uIj09dHlwZW9mIHM/czoiZnVuY3Rpb24iPT10eXBlb2YgZD9kOnZvaWQgMDtpZih0aGlzLndyaXRhYmxlRW5kZWQpcmV0dXJuIG0mJm0oKSx0aGlzO2NvbnN0IGg9ZT09PW0/dm9pZCAwOmU7aWYoaCl7Y29uc3QgZT1zPT09bT92b2lkIDA6czt0aGlzLndyaXRlKGgsZSxtKX1yZXR1cm4gdGhpcy53cml0YWJsZUVuZGVkPSEwLHRoaXMud3JpdGFibGVGaW5pc2hlZD0hMCx0aGlzLmVtaXQoImNsb3NlIiksdGhpcy5lbWl0KCJmaW5pc2giKSx0aGlzfWNvcmsoKXt9dW5jb3JrKCl7fWRlc3Ryb3koZSl7cmV0dXJuIHRoaXMuZGVzdHJveWVkPSEwLGRlbGV0ZSB0aGlzLl9kYXRhLHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpc31jb21wb3NlKGUscyl7dGhyb3cgbmV3IEVycm9yKCJNZXRob2Qgbm90IGltcGxlbWVudGVkLiIpfVtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX19O2NvbnN0IGtuPWNsYXNze2FsbG93SGFsZk9wZW49ITA7X2Rlc3Ryb3k7Y29uc3RydWN0b3IoZT1uZXcgaSxzPW5ldyBTbil7T2JqZWN0LmFzc2lnbih0aGlzLGUpLE9iamVjdC5hc3NpZ24odGhpcyxzKSx0aGlzLl9kZXN0cm95PWZ1bmN0aW9uKC4uLmUpe3JldHVybiBmdW5jdGlvbiguLi5zKXtmb3IoY29uc3QgZCBvZiBlKWQoLi4ucyl9fShlLl9kZXN0cm95LHMuX2Rlc3Ryb3kpfX07Y29uc3Qgam49KE9iamVjdC5hc3NpZ24oa24ucHJvdG90eXBlLGkucHJvdG90eXBlKSxPYmplY3QuYXNzaWduKGtuLnByb3RvdHlwZSxTbi5wcm90b3R5cGUpLGtuKTtsZXQgem49Y2xhc3MgZXh0ZW5kcyBqbntfX3VuZW52X189e307YnVmZmVyU2l6ZT0wO2J5dGVzUmVhZD0wO2J5dGVzV3JpdHRlbj0wO2Nvbm5lY3Rpbmc9ITE7ZGVzdHJveWVkPSExO3BlbmRpbmc9ITE7bG9jYWxBZGRyZXNzPSIiO2xvY2FsUG9ydD0wO3JlbW90ZUFkZHJlc3M9IiI7cmVtb3RlRmFtaWx5PSIiO3JlbW90ZVBvcnQ9MDthdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdGVkQWRkcmVzc2VzPVtdO3JlYWR5U3RhdGU9InJlYWRPbmx5Ijtjb25zdHJ1Y3RvcihlKXtzdXBlcigpfXdyaXRlKGUscyxkKXtyZXR1cm4hMX1jb25uZWN0KGUscyxkKXtyZXR1cm4gdGhpc31lbmQoZSxzLGQpe3JldHVybiB0aGlzfXNldEVuY29kaW5nKGUpe3JldHVybiB0aGlzfXBhdXNlKCl7cmV0dXJuIHRoaXN9cmVzdW1lKCl7cmV0dXJuIHRoaXN9c2V0VGltZW91dChlLHMpe3JldHVybiB0aGlzfXNldE5vRGVsYXkoZSl7cmV0dXJuIHRoaXN9c2V0S2VlcEFsaXZlKGUscyl7cmV0dXJuIHRoaXN9YWRkcmVzcygpe3JldHVybnt9fXVucmVmKCl7cmV0dXJuIHRoaXN9cmVmKCl7cmV0dXJuIHRoaXN9ZGVzdHJveVNvb24oKXt0aGlzLmRlc3Ryb3koKX1yZXNldEFuZERlc3Ryb3koKXtjb25zdCBlPW5ldyBFcnJvcigiRVJSX1NPQ0tFVF9DTE9TRUQiKTtyZXR1cm4gZS5jb2RlPSJFUlJfU09DS0VUX0NMT1NFRCIsdGhpcy5kZXN0cm95KGUpLHRoaXN9fSxJbj1jbGFzcyBleHRlbmRzIGl7YWJvcnRlZD0hMTtodHRwVmVyc2lvbj0iMS4xIjtodHRwVmVyc2lvbk1ham9yPTE7aHR0cFZlcnNpb25NaW5vcj0xO2NvbXBsZXRlPSEwO2Nvbm5lY3Rpb247c29ja2V0O2hlYWRlcnM9e307dHJhaWxlcnM9e307bWV0aG9kPSJHRVQiO3VybD0iLyI7c3RhdHVzQ29kZT0yMDA7c3RhdHVzTWVzc2FnZT0iIjtjbG9zZWQ9ITE7ZXJyb3JlZD1udWxsO3JlYWRhYmxlPSExO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5zb2NrZXQ9dGhpcy5jb25uZWN0aW9uPWV8fG5ldyB6bn1nZXQgcmF3SGVhZGVycygpe2NvbnN0IGU9dGhpcy5oZWFkZXJzLHM9W107Zm9yKGNvbnN0IGQgaW4gZSlpZihBcnJheS5pc0FycmF5KGVbZF0pKWZvcihjb25zdCBtIG9mIGVbZF0pcy5wdXNoKGQsbSk7ZWxzZSBzLnB1c2goZCxlW2RdKTtyZXR1cm4gc31nZXQgcmF3VHJhaWxlcnMoKXtyZXR1cm5bXX1zZXRUaW1lb3V0KGUscyl7cmV0dXJuIHRoaXN9Z2V0IGhlYWRlcnNEaXN0aW5jdCgpe3JldHVybiBwJDModGhpcy5oZWFkZXJzKX1nZXQgdHJhaWxlcnNEaXN0aW5jdCgpe3JldHVybiBwJDModGhpcy50cmFpbGVycyl9fTtmdW5jdGlvbiBwJDMoZSl7Y29uc3Qgcz17fTtmb3IoY29uc3RbZCxtXW9mIE9iamVjdC5lbnRyaWVzKGUpKWQmJihzW2RdPShBcnJheS5pc0FycmF5KG0pP206W21dKS5maWx0ZXIoQm9vbGVhbikpO3JldHVybiBzfWxldCBDbj1jbGFzcyBleHRlbmRzIFNue3N0YXR1c0NvZGU9MjAwO3N0YXR1c01lc3NhZ2U9IiI7dXBncmFkaW5nPSExO2NodW5rZWRFbmNvZGluZz0hMTtzaG91bGRLZWVwQWxpdmU9ITE7dXNlQ2h1bmtlZEVuY29kaW5nQnlEZWZhdWx0PSExO3NlbmREYXRlPSExO2ZpbmlzaGVkPSExO2hlYWRlcnNTZW50PSExO3N0cmljdENvbnRlbnRMZW5ndGg9ITE7Y29ubmVjdGlvbj1udWxsO3NvY2tldD1udWxsO3JlcTtfaGVhZGVycz17fTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMucmVxPWV9YXNzaWduU29ja2V0KGUpe2UuX2h0dHBNZXNzYWdlPXRoaXMsdGhpcy5zb2NrZXQ9ZSx0aGlzLmNvbm5lY3Rpb249ZSx0aGlzLmVtaXQoInNvY2tldCIsZSksdGhpcy5fZmx1c2goKX1fZmx1c2goKXt0aGlzLmZsdXNoSGVhZGVycygpfWRldGFjaFNvY2tldChlKXt9d3JpdGVDb250aW51ZShlKXt9d3JpdGVIZWFkKGUscyxkKXtlJiYodGhpcy5zdGF0dXNDb2RlPWUpLCJzdHJpbmciPT10eXBlb2YgcyYmKHRoaXMuc3RhdHVzTWVzc2FnZT1zLHM9dm9pZCAwKTtjb25zdCBtPWR8fHM7aWYobSYmIUFycmF5LmlzQXJyYXkobSkpZm9yKGNvbnN0IGUgaW4gbSl0aGlzLnNldEhlYWRlcihlLG1bZV0pO3JldHVybiB0aGlzLmhlYWRlcnNTZW50PSEwLHRoaXN9d3JpdGVQcm9jZXNzaW5nKCl7fXNldFRpbWVvdXQoZSxzKXtyZXR1cm4gdGhpc31hcHBlbmRIZWFkZXIoZSxzKXtlPWUudG9Mb3dlckNhc2UoKTtjb25zdCBkPXRoaXMuX2hlYWRlcnNbZV0sbT1bLi4uQXJyYXkuaXNBcnJheShkKT9kOltkXSwuLi5BcnJheS5pc0FycmF5KHMpP3M6W3NdXS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIHRoaXMuX2hlYWRlcnNbZV09bS5sZW5ndGg+MT9tOm1bMF0sdGhpc31zZXRIZWFkZXIoZSxzKXtyZXR1cm4gdGhpcy5faGVhZGVyc1tlLnRvTG93ZXJDYXNlKCldPXMsdGhpc31zZXRIZWFkZXJzKGUpe2Zvcihjb25zdFtzLGRdb2YgT2JqZWN0LmVudHJpZXMoZSkpdGhpcy5zZXRIZWFkZXIocyxkKTtyZXR1cm4gdGhpc31nZXRIZWFkZXIoZSl7cmV0dXJuIHRoaXMuX2hlYWRlcnNbZS50b0xvd2VyQ2FzZSgpXX1nZXRIZWFkZXJzKCl7cmV0dXJuIHRoaXMuX2hlYWRlcnN9Z2V0SGVhZGVyTmFtZXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5faGVhZGVycyl9aGFzSGVhZGVyKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKClpbiB0aGlzLl9oZWFkZXJzfXJlbW92ZUhlYWRlcihlKXtkZWxldGUgdGhpcy5faGVhZGVyc1tlLnRvTG93ZXJDYXNlKCldfWFkZFRyYWlsZXJzKGUpe31mbHVzaEhlYWRlcnMoKXt9d3JpdGVFYXJseUhpbnRzKGUscyl7ImZ1bmN0aW9uIj09dHlwZW9mIHMmJnMoKX19O2NvbnN0IFRuPSgoKT0+e2NvbnN0IG49ZnVuY3Rpb24oKXt9O3JldHVybiBuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpLG59KSgpO2Z1bmN0aW9uIHYkMihlPXt9KXtpZihlIGluc3RhbmNlb2YgSGVhZGVycylyZXR1cm4gZTtjb25zdCBzPW5ldyBIZWFkZXJzO2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMoZSkpaWYodm9pZCAwIT09bSl7aWYoQXJyYXkuaXNBcnJheShtKSl7Zm9yKGNvbnN0IGUgb2YgbSlzLmFwcGVuZChkLFN0cmluZyhlKSk7Y29udGludWV9cy5zZXQoZCxTdHJpbmcobSkpfXJldHVybiBzfWNvbnN0IFJuPW5ldyBTZXQoWzEwMSwyMDQsMjA1LDMwNF0pO2FzeW5jIGZ1bmN0aW9uIGIoZSxzKXtjb25zdCBkPW5ldyBJbixtPW5ldyBDbihkKTtsZXQgaDtpZihkLnVybD1zLnVybD8udG9TdHJpbmcoKXx8Ii8iLCFkLnVybC5zdGFydHNXaXRoKCIvIikpe2NvbnN0IGU9bmV3IFVSTChkLnVybCk7aD1lLmhvc3QsZC51cmw9ZS5wYXRobmFtZStlLnNlYXJjaCtlLmhhc2h9ZC5tZXRob2Q9cy5tZXRob2R8fCJHRVQiLGQuaGVhZGVycz1mdW5jdGlvbihlPXt9KXtjb25zdCBzPW5ldyBUbixkPUFycmF5LmlzQXJyYXkoZSl8fGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlPy5lbnRyaWVzfShlKT9lOk9iamVjdC5lbnRyaWVzKGUpO2Zvcihjb25zdFtlLG1db2YgZClpZihtKXtpZih2b2lkIDA9PT1zW2VdKXtzW2VdPW07Y29udGludWV9c1tlXT1bLi4uQXJyYXkuaXNBcnJheShzW2VdKT9zW2VdOltzW2VdXSwuLi5BcnJheS5pc0FycmF5KG0pP206W21dXX1yZXR1cm4gc30ocy5oZWFkZXJzfHx7fSksZC5oZWFkZXJzLmhvc3R8fChkLmhlYWRlcnMuaG9zdD1zLmhvc3R8fGh8fCJsb2NhbGhvc3QiKSxkLmNvbm5lY3Rpb24uZW5jcnlwdGVkPWQuY29ubmVjdGlvbi5lbmNyeXB0ZWR8fCJodHRwcyI9PT1zLnByb3RvY29sLGQuYm9keT1zLmJvZHl8fG51bGwsZC5fX3VuZW52X189cy5jb250ZXh0LGF3YWl0IGUoZCxtKTtsZXQgZz1tLl9kYXRhOyhSbi5oYXMobS5zdGF0dXNDb2RlKXx8IkhFQUQiPT09ZC5tZXRob2QudG9VcHBlckNhc2UoKSkmJihnPW51bGwsZGVsZXRlIG0uX2hlYWRlcnNbImNvbnRlbnQtbGVuZ3RoIl0pO2NvbnN0IHg9e3N0YXR1czptLnN0YXR1c0NvZGUsc3RhdHVzVGV4dDptLnN0YXR1c01lc3NhZ2UsaGVhZGVyczptLl9oZWFkZXJzLGJvZHk6Z307cmV0dXJuIGQuZGVzdHJveSgpLG0uZGVzdHJveSgpLHh9ZnVuY3Rpb24gaGFzUHJvcChlLHMpe3RyeXtyZXR1cm4gcyBpbiBlfWNhdGNoe3JldHVybiExfX1jbGFzcyBIM0Vycm9yIGV4dGVuZHMgRXJyb3J7c3RhdGljIF9faDNfZXJyb3JfXz0hMDtzdGF0dXNDb2RlPTUwMDtmYXRhbD0hMTt1bmhhbmRsZWQ9ITE7c3RhdHVzTWVzc2FnZTtkYXRhO2NhdXNlO2NvbnN0cnVjdG9yKGUscz17fSl7c3VwZXIoZSxzKSxzLmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9cy5jYXVzZSl9dG9KU09OKCl7Y29uc3QgZT17bWVzc2FnZTp0aGlzLm1lc3NhZ2Usc3RhdHVzQ29kZTpzYW5pdGl6ZVN0YXR1c0NvZGUodGhpcy5zdGF0dXNDb2RlLDUwMCl9O3JldHVybiB0aGlzLnN0YXR1c01lc3NhZ2UmJihlLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKHRoaXMuc3RhdHVzTWVzc2FnZSkpLHZvaWQgMCE9PXRoaXMuZGF0YSYmKGUuZGF0YT10aGlzLmRhdGEpLGV9fWZ1bmN0aW9uIGNyZWF0ZUVycm9yJDEoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBuZXcgSDNFcnJvcihlKTtpZihpc0Vycm9yKGUpKXJldHVybiBlO2NvbnN0IHM9bmV3IEgzRXJyb3IoZS5tZXNzYWdlPz9lLnN0YXR1c01lc3NhZ2U/PyIiLHtjYXVzZTplLmNhdXNlfHxlfSk7aWYoaGFzUHJvcChlLCJzdGFjayIpKXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkocywic3RhY2siLHtnZXQ6KCk9PmUuc3RhY2t9KX1jYXRjaHt0cnl7cy5zdGFjaz1lLnN0YWNrfWNhdGNoe319aWYoZS5kYXRhJiYocy5kYXRhPWUuZGF0YSksZS5zdGF0dXNDb2RlP3Muc3RhdHVzQ29kZT1zYW5pdGl6ZVN0YXR1c0NvZGUoZS5zdGF0dXNDb2RlLHMuc3RhdHVzQ29kZSk6ZS5zdGF0dXMmJihzLnN0YXR1c0NvZGU9c2FuaXRpemVTdGF0dXNDb2RlKGUuc3RhdHVzLHMuc3RhdHVzQ29kZSkpLGUuc3RhdHVzTWVzc2FnZT9zLnN0YXR1c01lc3NhZ2U9ZS5zdGF0dXNNZXNzYWdlOmUuc3RhdHVzVGV4dCYmKHMuc3RhdHVzTWVzc2FnZT1lLnN0YXR1c1RleHQpLHMuc3RhdHVzTWVzc2FnZSl7Y29uc3QgZT1zLnN0YXR1c01lc3NhZ2U7c2FuaXRpemVTdGF0dXNNZXNzYWdlKHMuc3RhdHVzTWVzc2FnZSkhPT1lJiZjb25zb2xlLndhcm4oIltoM10gUGxlYXNlIHByZWZlciB1c2luZyBgbWVzc2FnZWAgZm9yIGxvbmdlciBlcnJvciBtZXNzYWdlcyBpbnN0ZWFkIG9mIGBzdGF0dXNNZXNzYWdlYC4gSW4gdGhlIGZ1dHVyZSwgYHN0YXR1c01lc3NhZ2VgIHdpbGwgYmUgc2FuaXRpemVkIGJ5IGRlZmF1bHQuIil9cmV0dXJuIHZvaWQgMCE9PWUuZmF0YWwmJihzLmZhdGFsPWUuZmF0YWwpLHZvaWQgMCE9PWUudW5oYW5kbGVkJiYocy51bmhhbmRsZWQ9ZS51bmhhbmRsZWQpLHN9ZnVuY3Rpb24gaXNFcnJvcihlKXtyZXR1cm4hMD09PWU/LmNvbnN0cnVjdG9yPy5fX2gzX2Vycm9yX199ZnVuY3Rpb24gcHJvY2VzcyQxKHMsZCl7Y29uc3QgbT17fSxoPWQuZmluZChlPT4iY29udGVudC1kaXNwb3NpdGlvbiI9PT1lWzBdKT8uWzFdfHwiIjtmb3IoY29uc3QgcyBvZiBoLnNwbGl0KCI7Iikpe2NvbnN0IGQ9cy5zcGxpdCgiPSIpO2lmKDIhPT1kLmxlbmd0aCljb250aW51ZTtjb25zdCBoPShkWzBdfHwiIikudHJpbSgpO2lmKCJuYW1lIj09PWh8fCJmaWxlbmFtZSI9PT1oKXtjb25zdCBzPShkWzFdfHwiIikudHJpbSgpLnJlcGxhY2UoLyIvZywiIik7bVtoXT1lLmZyb20ocywibGF0aW4xIikudG9TdHJpbmcoInV0ZjgiKX19Y29uc3QgZz1kLmZpbmQoZT0+ImNvbnRlbnQtdHlwZSI9PT1lWzBdKT8uWzFdfHwiIjtyZXR1cm4gZyYmKG0udHlwZT1nKSxtLmRhdGE9ZS5mcm9tKHMpLG19YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVEYXRhKGUscyl7dHJ5e2NvbnN0IGQ9YXdhaXQgcyhlKTtpZighMT09PWQpdGhyb3cgY3JlYXRlVmFsaWRhdGlvbkVycm9yKCk7cmV0dXJuITA9PT1kP2U6ZD8/ZX1jYXRjaChlKXt0aHJvdyBjcmVhdGVWYWxpZGF0aW9uRXJyb3IoZSl9fWZ1bmN0aW9uIGNyZWF0ZVZhbGlkYXRpb25FcnJvcihlKXt0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDAwLHN0YXR1c01lc3NhZ2U6IlZhbGlkYXRpb24gRXJyb3IiLG1lc3NhZ2U6ZT8ubWVzc2FnZXx8IlZhbGlkYXRpb24gRXJyb3IiLGRhdGE6ZX0pfWZ1bmN0aW9uIGdldFF1ZXJ5KGUpe3JldHVybiBnZXRRdWVyeSQxKGUucGF0aHx8IiIpfWZ1bmN0aW9uIGdldFZhbGlkYXRlZFF1ZXJ5KGUscyl7cmV0dXJuIHZhbGlkYXRlRGF0YShnZXRRdWVyeShlKSxzKX1mdW5jdGlvbiBnZXRSb3V0ZXJQYXJhbXMoZSxzPXt9KXtsZXQgZD1lLmNvbnRleHQucGFyYW1zfHx7fTtpZihzLmRlY29kZSl7ZD17Li4uZH07Zm9yKGNvbnN0IGUgaW4gZClkW2VdPWRlY29kZSQ0KGRbZV0pfXJldHVybiBkfWZ1bmN0aW9uIGdldFZhbGlkYXRlZFJvdXRlclBhcmFtcyhlLHMsZD17fSl7cmV0dXJuIHZhbGlkYXRlRGF0YShnZXRSb3V0ZXJQYXJhbXMoZSxkKSxzKX1mdW5jdGlvbiBnZXRSb3V0ZXJQYXJhbShlLHMsZD17fSl7cmV0dXJuIGdldFJvdXRlclBhcmFtcyhlLGQpW3NdfWZ1bmN0aW9uIGFzc2VydE1ldGhvZChlLHMsZCl7aWYoIWZ1bmN0aW9uKGUscyl7aWYoInN0cmluZyI9PXR5cGVvZiBzKXtpZihlLm1ldGhvZD09PXMpcmV0dXJuITB9ZWxzZSBpZihzLmluY2x1ZGVzKGUubWV0aG9kKSlyZXR1cm4hMDtyZXR1cm4hMX0oZSxzKSl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwNSxzdGF0dXNNZXNzYWdlOiJIVFRQIG1ldGhvZCBpcyBub3QgYWxsb3dlZC4ifSl9ZnVuY3Rpb24gZ2V0UmVxdWVzdEhlYWRlcnMoZSl7Y29uc3Qgcz17fTtmb3IoY29uc3QgZCBpbiBlLm5vZGUucmVxLmhlYWRlcnMpe2NvbnN0IG09ZS5ub2RlLnJlcS5oZWFkZXJzW2RdO3NbZF09QXJyYXkuaXNBcnJheShtKT9tLmZpbHRlcihCb29sZWFuKS5qb2luKCIsICIpOm19cmV0dXJuIHN9ZnVuY3Rpb24gZ2V0UmVxdWVzdEhlYWRlcihlLHMpe3JldHVybiBnZXRSZXF1ZXN0SGVhZGVycyhlKVtzLnRvTG93ZXJDYXNlKCldfWNvbnN0IEVuPWdldFJlcXVlc3RIZWFkZXI7ZnVuY3Rpb24gZ2V0UmVxdWVzdEhvc3QoZSxzPXt9KXtpZihzLnhGb3J3YXJkZWRIb3N0KXtjb25zdCBzPWUubm9kZS5yZXEuaGVhZGVyc1sieC1mb3J3YXJkZWQtaG9zdCJdLGQ9KHN8fCIiKS5zcGxpdCgiLCIpLnNoaWZ0KCk/LnRyaW0oKTtpZihkKXJldHVybiBkfXJldHVybiBlLm5vZGUucmVxLmhlYWRlcnMuaG9zdHx8ImxvY2FsaG9zdCJ9ZnVuY3Rpb24gZ2V0UmVxdWVzdFByb3RvY29sKGUscz17fSl7cmV0dXJuITEhPT1zLnhGb3J3YXJkZWRQcm90byYmImh0dHBzIj09PWUubm9kZS5yZXEuaGVhZGVyc1sieC1mb3J3YXJkZWQtcHJvdG8iXXx8ZS5ub2RlLnJlcS5jb25uZWN0aW9uPy5lbmNyeXB0ZWQ/Imh0dHBzIjoiaHR0cCJ9ZnVuY3Rpb24gZ2V0UmVxdWVzdFVSTChlLHM9e30pe2NvbnN0IGQ9Z2V0UmVxdWVzdEhvc3QoZSxzKSxtPWdldFJlcXVlc3RQcm90b2NvbChlLHMpLGg9KGUubm9kZS5yZXEub3JpZ2luYWxVcmx8fGUucGF0aCkucmVwbGFjZSgvXlsvXFxdKy9nLCIvIik7cmV0dXJuIG5ldyBVUkwoaCxgJHttfTovLyR7ZH1gKX1jb25zdCBPbj1TeW1ib2wuZm9yKCJoM1Jhd0JvZHkiKSxQbj1TeW1ib2wuZm9yKCJoM1BhcnNlZEJvZHkiKSxObj1bIlBBVENIIiwiUE9TVCIsIlBVVCIsIkRFTEVURSJdO2Z1bmN0aW9uIHJlYWRSYXdCb2R5KHMsZD0idXRmOCIpe2Fzc2VydE1ldGhvZChzLE5uKTtjb25zdCBtPXMuX3JlcXVlc3RCb2R5fHxzLndlYj8ucmVxdWVzdD8uYm9keXx8cy5ub2RlLnJlcVtPbl18fHMubm9kZS5yZXEucmF3Qm9keXx8cy5ub2RlLnJlcS5ib2R5O2lmKG0pe2NvbnN0IHM9UHJvbWlzZS5yZXNvbHZlKG0pLnRoZW4ocz0+ZS5pc0J1ZmZlcihzKT9zOiJmdW5jdGlvbiI9PXR5cGVvZiBzLnBpcGVUbz9uZXcgUHJvbWlzZSgoZCxtKT0+e2NvbnN0IGg9W107cy5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKHt3cml0ZShlKXtoLnB1c2goZSl9LGNsb3NlKCl7ZChlLmNvbmNhdChoKSl9LGFib3J0KGUpe20oZSl9fSkpLmNhdGNoKG0pfSk6ImZ1bmN0aW9uIj09dHlwZW9mIHMucGlwZT9uZXcgUHJvbWlzZSgoZCxtKT0+e2NvbnN0IGg9W107cy5vbigiZGF0YSIsZT0+e2gucHVzaChlKX0pLm9uKCJlbmQiLCgpPT57ZChlLmNvbmNhdChoKSl9KS5vbigiZXJyb3IiLG0pfSk6cy5jb25zdHJ1Y3Rvcj09PU9iamVjdD9lLmZyb20oSlNPTi5zdHJpbmdpZnkocykpOnMgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXM/ZS5mcm9tKHMudG9TdHJpbmcoKSk6cyBpbnN0YW5jZW9mIEZvcm1EYXRhP25ldyBSZXNwb25zZShzKS5ieXRlcygpLnRoZW4ocz0+ZS5mcm9tKHMpKTplLmZyb20ocykpO3JldHVybiBkP3MudGhlbihlPT5lLnRvU3RyaW5nKGQpKTpzfWlmKCFOdW1iZXIucGFyc2VJbnQocy5ub2RlLnJlcS5oZWFkZXJzWyJjb250ZW50LWxlbmd0aCJdfHwiIikmJiEvXGJjaHVua2VkXGIvaS50ZXN0KFN0cmluZyhzLm5vZGUucmVxLmhlYWRlcnNbInRyYW5zZmVyLWVuY29kaW5nIl0/PyIiKSkpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2b2lkIDApO2NvbnN0IGg9cy5ub2RlLnJlcVtPbl09bmV3IFByb21pc2UoKGQsbSk9Pntjb25zdCBoPVtdO3Mubm9kZS5yZXEub24oImVycm9yIixlPT57bShlKX0pLm9uKCJkYXRhIixlPT57aC5wdXNoKGUpfSkub24oImVuZCIsKCk9PntkKGUuY29uY2F0KGgpKX0pfSk7cmV0dXJuIGQ/aC50aGVuKGU9PmUudG9TdHJpbmcoZCkpOmh9YXN5bmMgZnVuY3Rpb24gcmVhZEJvZHkoZSxzPXt9KXtjb25zdCBkPWUubm9kZS5yZXE7aWYoaGFzUHJvcChkLFBuKSlyZXR1cm4gZFtQbl07Y29uc3QgbT1kLmhlYWRlcnNbImNvbnRlbnQtdHlwZSJdfHwiIixoPWF3YWl0IHJlYWRSYXdCb2R5KGUpO2xldCBnO3JldHVybiBnPSJhcHBsaWNhdGlvbi9qc29uIj09PW0/X3BhcnNlSlNPTihoLHMuc3RyaWN0Pz8hMCk6bS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT9mdW5jdGlvbihlKXtjb25zdCBzPW5ldyBVUkxTZWFyY2hQYXJhbXMoZSksZD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLG1db2Ygcy5lbnRyaWVzKCkpaGFzUHJvcChkLGUpPyhBcnJheS5pc0FycmF5KGRbZV0pfHwoZFtlXT1bZFtlXV0pLGRbZV0ucHVzaChtKSk6ZFtlXT1tO3JldHVybiBkfShoKTptLnN0YXJ0c1dpdGgoInRleHQvIik/aDpfcGFyc2VKU09OKGgscy5zdHJpY3Q/PyExKSxkW1BuXT1nLGd9YXN5bmMgZnVuY3Rpb24gcmVhZFZhbGlkYXRlZEJvZHkoZSxzKXtyZXR1cm4gdmFsaWRhdGVEYXRhKGF3YWl0IHJlYWRCb2R5KGUse3N0cmljdDohMH0pLHMpfWFzeW5jIGZ1bmN0aW9uIHJlYWRNdWx0aXBhcnRGb3JtRGF0YShlKXtjb25zdCBzPWdldFJlcXVlc3RIZWFkZXIoZSwiY29udGVudC10eXBlIik7aWYoIXN8fCFzLnN0YXJ0c1dpdGgoIm11bHRpcGFydC9mb3JtLWRhdGEiKSlyZXR1cm47Y29uc3QgZD1zLm1hdGNoKC9ib3VuZGFyeT0oW147XSopKDt8JCkvaSk/LlsxXTtpZighZClyZXR1cm47Y29uc3QgbT1hd2FpdCByZWFkUmF3Qm9keShlLCExKTtyZXR1cm4gbT9mdW5jdGlvbihlLHMpe2xldCBkPSIiLG09MCxoPVtdO2NvbnN0IGc9W107bGV0IHg9W107Zm9yKGxldCAkPTA7JDxlLmxlbmd0aDskKyspe2NvbnN0IFM9JD4wP2VbJC0xXTpudWxsLGo9ZVskXTsxMD09PWp8fDEzPT09anx8KGQrPVN0cmluZy5mcm9tQ29kZVBvaW50KGopKTtjb25zdCB6PTEwPT09aiYmMTM9PT1TO2lmKDA9PT1tJiZ6KSItLSIrcz09PWQmJihtPTEpLGQ9IiI7ZWxzZSBpZigxPT09bSYmeil7aWYoZC5sZW5ndGg+MCl7Y29uc3QgZT1kLmluZGV4T2YoIjoiKTtpZihlPjApe2NvbnN0IHM9ZC5zbGljZSgwLGUpLnRvTG93ZXJDYXNlKCksbT1kLnNsaWNlKGUrMSkudHJpbSgpO3gucHVzaChbcyxtXSl9fWVsc2UgbT0yLGg9W107ZD0iIn1lbHNlIGlmKDI9PT1tKXtpZihkLmxlbmd0aD5zLmxlbmd0aCs0JiYoZD0iIiksIi0tIitzPT09ZCl7Y29uc3QgZT1oLmxlbmd0aC1kLmxlbmd0aCxzPWguc2xpY2UoMCxlLTEpO2cucHVzaChwcm9jZXNzJDEocyx4KSksaD1bXSx4PVtdLGQ9IiIsbT0zfWVsc2UgaC5wdXNoKGopO3omJihkPSIiKX1lbHNlIDM9PT1tJiZ6JiYobT0xKX1yZXR1cm4gZ30obSxkKTp2b2lkIDB9YXN5bmMgZnVuY3Rpb24gcmVhZEZvcm1EYXRhKGUpe3JldHVybiBhd2FpdCBmdW5jdGlvbihlKXtyZXR1cm4gZS53ZWI/LnJlcXVlc3R8fG5ldyBSZXF1ZXN0KGdldFJlcXVlc3RVUkwoZSkse2R1cGxleDoiaGFsZiIsbWV0aG9kOmUubWV0aG9kLGhlYWRlcnM6ZS5oZWFkZXJzLGJvZHk6Z2V0UmVxdWVzdFdlYlN0cmVhbShlKX0pfShlKS5mb3JtRGF0YSgpfWZ1bmN0aW9uIGdldFJlcXVlc3RXZWJTdHJlYW0oZSl7aWYoIU5uLmluY2x1ZGVzKGUubWV0aG9kKSlyZXR1cm47Y29uc3Qgcz1lLndlYj8ucmVxdWVzdD8uYm9keXx8ZS5fcmVxdWVzdEJvZHk7aWYocylyZXR1cm4gcztyZXR1cm4gT24gaW4gZS5ub2RlLnJlcXx8InJhd0JvZHkiaW4gZS5ub2RlLnJlcXx8ImJvZHkiaW4gZS5ub2RlLnJlcXx8Il9fdW5lbnZfXyJpbiBlLm5vZGUucmVxP25ldyBSZWFkYWJsZVN0cmVhbSh7YXN5bmMgc3RhcnQocyl7Y29uc3QgZD1hd2FpdCByZWFkUmF3Qm9keShlLCExKTtkJiZzLmVucXVldWUoZCkscy5jbG9zZSgpfX0pOm5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6cz0+e2Uubm9kZS5yZXEub24oImRhdGEiLGU9PntzLmVucXVldWUoZSl9KSxlLm5vZGUucmVxLm9uKCJlbmQiLCgpPT57cy5jbG9zZSgpfSksZS5ub2RlLnJlcS5vbigiZXJyb3IiLGU9PntzLmVycm9yKGUpfSl9fSl9ZnVuY3Rpb24gX3BhcnNlSlNPTihlPSIiLHMpe2lmKGUpdHJ5e3JldHVybiBkZXN0cihlLHtzdHJpY3Q6c30pfWNhdGNoe3Rocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkJhZCBSZXF1ZXN0IixtZXNzYWdlOiJJbnZhbGlkIEpTT04gYm9keSJ9KX19ZnVuY3Rpb24gaGFuZGxlQ2FjaGVIZWFkZXJzKGUscyl7Y29uc3QgZD1bInB1YmxpYyIsLi4ucy5jYWNoZUNvbnRyb2xzfHxbXV07bGV0IG09ITE7aWYodm9pZCAwIT09cy5tYXhBZ2UmJmQucHVzaCgibWF4LWFnZT0iKyArcy5tYXhBZ2UsInMtbWF4YWdlPSIrICtzLm1heEFnZSkscy5tb2RpZmllZFRpbWUpe2NvbnN0IGQ9bmV3IERhdGUocy5tb2RpZmllZFRpbWUpLGg9ZS5ub2RlLnJlcS5oZWFkZXJzWyJpZi1tb2RpZmllZC1zaW5jZSJdO2Uubm9kZS5yZXMuc2V0SGVhZGVyKCJsYXN0LW1vZGlmaWVkIixkLnRvVVRDU3RyaW5nKCkpLGgmJm5ldyBEYXRlKGgpPj1kJiYobT0hMCl9aWYocy5ldGFnKXtlLm5vZGUucmVzLnNldEhlYWRlcigiZXRhZyIscy5ldGFnKTtlLm5vZGUucmVxLmhlYWRlcnNbImlmLW5vbmUtbWF0Y2giXT09PXMuZXRhZyYmKG09ITApfXJldHVybiBlLm5vZGUucmVzLnNldEhlYWRlcigiY2FjaGUtY29udHJvbCIsZC5qb2luKCIsICIpKSwhIW0mJihlLm5vZGUucmVzLnN0YXR1c0NvZGU9MzA0LGUuaGFuZGxlZHx8ZS5ub2RlLnJlcy5lbmQoKSwhMCl9Y29uc3QgRG49e2h0bWw6InRleHQvaHRtbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiJ9LFVuPS9bXlx1MDAwOVx1MDAyMC1cdTAwN0VdL2c7ZnVuY3Rpb24gc2FuaXRpemVTdGF0dXNNZXNzYWdlKGU9IiIpe3JldHVybiBlLnJlcGxhY2UoVW4sIiIpfWZ1bmN0aW9uIHNhbml0aXplU3RhdHVzQ29kZShlLHM9MjAwKXtyZXR1cm4gZT8oInN0cmluZyI9PXR5cGVvZiBlJiYoZT1OdW1iZXIucGFyc2VJbnQoZSwxMCkpLGU8MTAwfHxlPjk5OT9zOmUpOnN9ZnVuY3Rpb24gZ2V0RGlzdGluY3RDb29raWVLZXkoZSxzKXtyZXR1cm5bZSxzLmRvbWFpbnx8IiIscy5wYXRofHwiLyJdLmpvaW4oIjsiKX1mdW5jdGlvbiBwYXJzZUNvb2tpZXMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzdHIgbXVzdCBiZSBhIHN0cmluZyIpO2NvbnN0IHM9bmV3IHZuLGQ9e30sbT1kLmRlY29kZXx8ZGVjb2RlJDM7bGV0IGg9MDtmb3IoO2g8ZS5sZW5ndGg7KXtjb25zdCBnPWUuaW5kZXhPZigiPSIsaCk7aWYoLTE9PT1nKWJyZWFrO2xldCB4PWUuaW5kZXhPZigiOyIsaCk7aWYoLTE9PT14KXg9ZS5sZW5ndGg7ZWxzZSBpZih4PGcpe2g9ZS5sYXN0SW5kZXhPZigiOyIsZy0xKSsxO2NvbnRpbnVlfWNvbnN0ICQ9ZS5zbGljZShoLGcpLnRyaW0oKTtpZighZD8uZmlsdGVyfHxkPy5maWx0ZXIoJCkpe2lmKHZvaWQgMD09PXNbJF0pe2xldCBkPWUuc2xpY2UoZysxLHgpLnRyaW0oKTszND09PWQuY29kZVBvaW50QXQoMCkmJihkPWQuc2xpY2UoMSwtMSkpLHNbJF09dHJ5RGVjb2RlJDEoZCxtKX1oPXgrMX1lbHNlIGg9eCsxfXJldHVybiBzfShlLm5vZGUucmVxLmhlYWRlcnMuY29va2llfHwiIil9ZnVuY3Rpb24gZ2V0Q29va2llKGUscyl7cmV0dXJuIHBhcnNlQ29va2llcyhlKVtzXX1mdW5jdGlvbiBzZXRDb29raWUoZSxzLGQsbT17fSl7bS5wYXRofHwobT17cGF0aDoiLyIsLi4ubX0pO2NvbnN0IGg9c2VyaWFsaXplJDIocyxkLG0pLGc9c3BsaXRDb29raWVzU3RyaW5nKGUubm9kZS5yZXMuZ2V0SGVhZGVyKCJzZXQtY29va2llIikpO2lmKDA9PT1nLmxlbmd0aClyZXR1cm4gdm9pZCBlLm5vZGUucmVzLnNldEhlYWRlcigic2V0LWNvb2tpZSIsaCk7Y29uc3QgeD1nZXREaXN0aW5jdENvb2tpZUtleShzLG0pO2Uubm9kZS5yZXMucmVtb3ZlSGVhZGVyKCJzZXQtY29va2llIik7Zm9yKGNvbnN0IHMgb2YgZyl7Y29uc3QgZD1wYXJzZVNldENvb2tpZShzKTtnZXREaXN0aW5jdENvb2tpZUtleShkLm5hbWUsZCkhPT14JiZlLm5vZGUucmVzLmFwcGVuZEhlYWRlcigic2V0LWNvb2tpZSIscyl9ZS5ub2RlLnJlcy5hcHBlbmRIZWFkZXIoInNldC1jb29raWUiLGgpfWZ1bmN0aW9uIGRlbGV0ZUNvb2tpZShlLHMsZCl7c2V0Q29va2llKGUscywiIix7Li4uZCxtYXhBZ2U6MH0pfWZ1bmN0aW9uIHNwbGl0Q29va2llc1N0cmluZyhlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLmZsYXRNYXAoZT0+c3BsaXRDb29raWVzU3RyaW5nKGUpKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuW107Y29uc3Qgcz1bXTtsZXQgZCxtLGgsZyx4LCQ9MDtjb25zdCBza2lwV2hpdGVzcGFjZT0oKT0+e2Zvcig7JDxlLmxlbmd0aCYmL1xzLy50ZXN0KGUuY2hhckF0KCQpKTspJCs9MTtyZXR1cm4gJDxlLmxlbmd0aH0sbm90U3BlY2lhbENoYXI9KCk9PihtPWUuY2hhckF0KCQpLCI9IiE9PW0mJiI7IiE9PW0mJiIsIiE9PW0pO2Zvcig7JDxlLmxlbmd0aDspe2ZvcihkPSQseD0hMTtza2lwV2hpdGVzcGFjZSgpOylpZihtPWUuY2hhckF0KCQpLCIsIj09PW0pe2ZvcihoPSQsJCs9MSxza2lwV2hpdGVzcGFjZSgpLGc9JDskPGUubGVuZ3RoJiZub3RTcGVjaWFsQ2hhcigpOykkKz0xOyQ8ZS5sZW5ndGgmJiI9Ij09PWUuY2hhckF0KCQpPyh4PSEwLCQ9ZyxzLnB1c2goZS5zbGljZShkLGgpKSxkPSQpOiQ9aCsxfWVsc2UgJCs9MTsoIXh8fCQ+PWUubGVuZ3RoKSYmcy5wdXNoKGUuc2xpY2UoZCkpfXJldHVybiBzfWNvbnN0IExuPXZvaWQgMD09PWg/ZT0+ZSgpOmg7ZnVuY3Rpb24gc2VuZChlLHMsZCl7cmV0dXJuIGQmJmZ1bmN0aW9uKGUscyl7cyYmMzA0IT09ZS5ub2RlLnJlcy5zdGF0dXNDb2RlJiYhZS5ub2RlLnJlcy5nZXRIZWFkZXIoImNvbnRlbnQtdHlwZSIpJiZlLm5vZGUucmVzLnNldEhlYWRlcigiY29udGVudC10eXBlIixzKX0oZSxkKSxuZXcgUHJvbWlzZShkPT57TG4oKCk9PntlLmhhbmRsZWR8fGUubm9kZS5yZXMuZW5kKHMpLGQoKX0pfSl9ZnVuY3Rpb24gc2VuZE5vQ29udGVudChlLHMpe2lmKGUuaGFuZGxlZClyZXR1cm47c3x8MjAwPT09ZS5ub2RlLnJlcy5zdGF0dXNDb2RlfHwocz1lLm5vZGUucmVzLnN0YXR1c0NvZGUpO2NvbnN0IGQ9c2FuaXRpemVTdGF0dXNDb2RlKHMsMjA0KTsyMDQ9PT1kJiZlLm5vZGUucmVzLnJlbW92ZUhlYWRlcigiY29udGVudC1sZW5ndGgiKSxlLm5vZGUucmVzLndyaXRlSGVhZChkKSxlLm5vZGUucmVzLmVuZCgpfWZ1bmN0aW9uIHNldFJlc3BvbnNlU3RhdHVzKGUscyxkKXtzJiYoZS5ub2RlLnJlcy5zdGF0dXNDb2RlPXNhbml0aXplU3RhdHVzQ29kZShzLGUubm9kZS5yZXMuc3RhdHVzQ29kZSkpLGQmJihlLm5vZGUucmVzLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKGQpKX1mdW5jdGlvbiBnZXRSZXNwb25zZVN0YXR1cyhlKXtyZXR1cm4gZS5ub2RlLnJlcy5zdGF0dXNDb2RlfWZ1bmN0aW9uIGdldFJlc3BvbnNlU3RhdHVzVGV4dChlKXtyZXR1cm4gZS5ub2RlLnJlcy5zdGF0dXNNZXNzYWdlfWZ1bmN0aW9uIHNlbmRSZWRpcmVjdChlLHMsZD0zMDIpe2Uubm9kZS5yZXMuc3RhdHVzQ29kZT1zYW5pdGl6ZVN0YXR1c0NvZGUoZCxlLm5vZGUucmVzLnN0YXR1c0NvZGUpLGUubm9kZS5yZXMuc2V0SGVhZGVyKCJsb2NhdGlvbiIscyk7cmV0dXJuIHNlbmQoZSxgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPSR7cy5yZXBsYWNlKC8iL2csIiUyMiIpfSI+PC9oZWFkPjwvaHRtbD5gLERuLmh0bWwpfWZ1bmN0aW9uIGdldFJlc3BvbnNlSGVhZGVyKGUscyl7cmV0dXJuIGUubm9kZS5yZXMuZ2V0SGVhZGVyKHMpfWZ1bmN0aW9uIHNldFJlc3BvbnNlSGVhZGVycyhlLHMpe2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMocykpZS5ub2RlLnJlcy5zZXRIZWFkZXIoZCxtKX1jb25zdCBBbj1zZXRSZXNwb25zZUhlYWRlcnM7ZnVuY3Rpb24gc2V0UmVzcG9uc2VIZWFkZXIoZSxzLGQpe2Uubm9kZS5yZXMuc2V0SGVhZGVyKHMsZCl9Y29uc3QgcW49c2V0UmVzcG9uc2VIZWFkZXI7Y29uc3QgYXBwZW5kSGVhZGVycz1mdW5jdGlvbihlLHMpe2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMocykpYXBwZW5kUmVzcG9uc2VIZWFkZXIoZSxkLG0pfTtmdW5jdGlvbiBhcHBlbmRSZXNwb25zZUhlYWRlcihlLHMsZCl7bGV0IG09ZS5ub2RlLnJlcy5nZXRIZWFkZXIocyk7bT8oQXJyYXkuaXNBcnJheShtKXx8KG09W20udG9TdHJpbmcoKV0pLGUubm9kZS5yZXMuc2V0SGVhZGVyKHMsWy4uLm0sZF0pKTplLm5vZGUucmVzLnNldEhlYWRlcihzLGQpfWZ1bmN0aW9uIHJlbW92ZVJlc3BvbnNlSGVhZGVyKGUscyl7cmV0dXJuIGUubm9kZS5yZXMucmVtb3ZlSGVhZGVyKHMpfWZ1bmN0aW9uIHNlbmRTdHJlYW0oZSxzKXtpZighc3x8Im9iamVjdCIhPXR5cGVvZiBzKXRocm93IG5ldyBFcnJvcigiW2gzXSBJbnZhbGlkIHN0cmVhbSBwcm92aWRlZC4iKTtpZihlLm5vZGUucmVzLl9kYXRhPXMsIWUubm9kZS5yZXMuc29ja2V0KXJldHVybiBlLl9oYW5kbGVkPSEwLFByb21pc2UucmVzb2x2ZSgpO2lmKGhhc1Byb3AocywicGlwZVRvIikmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLnBpcGVUbylyZXR1cm4gcy5waXBlVG8obmV3IFdyaXRhYmxlU3RyZWFtKHt3cml0ZShzKXtlLm5vZGUucmVzLndyaXRlKHMpfX0pKS50aGVuKCgpPT57ZS5ub2RlLnJlcy5lbmQoKX0pO2lmKGhhc1Byb3AocywicGlwZSIpJiYiZnVuY3Rpb24iPT10eXBlb2Ygcy5waXBlKXJldHVybiBuZXcgUHJvbWlzZSgoZCxtKT0+e3MucGlwZShlLm5vZGUucmVzKSxzLm9uJiYocy5vbigiZW5kIiwoKT0+e2Uubm9kZS5yZXMuZW5kKCksZCgpfSkscy5vbigiZXJyb3IiLGU9PnttKGUpfSkpLGUubm9kZS5yZXMub24oImNsb3NlIiwoKT0+e3MuYWJvcnQmJnMuYWJvcnQoKX0pfSk7dGhyb3cgbmV3IEVycm9yKCJbaDNdIEludmFsaWQgb3IgaW5jb21wYXRpYmxlIHN0cmVhbSBwcm92aWRlZC4iKX1mdW5jdGlvbiBzZW5kV2ViUmVzcG9uc2UoZSxzKXtmb3IoY29uc3RbZCxtXW9mIHMuaGVhZGVycykic2V0LWNvb2tpZSI9PT1kP2Uubm9kZS5yZXMuYXBwZW5kSGVhZGVyKGQsc3BsaXRDb29raWVzU3RyaW5nKG0pKTplLm5vZGUucmVzLnNldEhlYWRlcihkLG0pO2lmKHMuc3RhdHVzJiYoZS5ub2RlLnJlcy5zdGF0dXNDb2RlPXNhbml0aXplU3RhdHVzQ29kZShzLnN0YXR1cyxlLm5vZGUucmVzLnN0YXR1c0NvZGUpKSxzLnN0YXR1c1RleHQmJihlLm5vZGUucmVzLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKHMuc3RhdHVzVGV4dCkpLHMucmVkaXJlY3RlZCYmZS5ub2RlLnJlcy5zZXRIZWFkZXIoImxvY2F0aW9uIixzLnVybCkscy5ib2R5KXJldHVybiBzZW5kU3RyZWFtKGUscy5ib2R5KTtlLm5vZGUucmVzLmVuZCgpfWZ1bmN0aW9uIGNyZWF0ZU9yaWdpbkhlYWRlcnMoZSxzKXtjb25zdHtvcmlnaW46ZH09cyxtPWdldFJlcXVlc3RIZWFkZXIoZSwib3JpZ2luIik7cmV0dXJuIG0mJmQmJiIqIiE9PWQ/InN0cmluZyI9PXR5cGVvZiBkP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIjpkLHZhcnk6Im9yaWdpbiJ9OmZ1bmN0aW9uKGUscyl7Y29uc3R7b3JpZ2luOmR9PXM7cmV0dXJuIWV8fCFkfHwiKiI9PT1kfHwibnVsbCI9PT1kfHwoQXJyYXkuaXNBcnJheShkKT9kLnNvbWUocz0+cyBpbnN0YW5jZW9mIFJlZ0V4cD9zLnRlc3QoZSk6ZT09PXMpOmQoZSkpfShtLHMpP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIjptLHZhcnk6Im9yaWdpbiJ9Ont9OnsiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIjoiKiJ9fWZ1bmN0aW9uIGNyZWF0ZUNyZWRlbnRpYWxzSGVhZGVycyhlKXtjb25zdHtjcmVkZW50aWFsczpzfT1lO3JldHVybiBzP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctY3JlZGVudGlhbHMiOiJ0cnVlIn06e319ZnVuY3Rpb24gY3JlYXRlRXhwb3NlSGVhZGVycyhlKXtjb25zdHtleHBvc2VIZWFkZXJzOnN9PWU7cmV0dXJuIHM/IioiPT09cz97ImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFkZXJzIjpzfTp7ImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFkZXJzIjpzLmpvaW4oIiwiKX06e319ZnVuY3Rpb24gYXBwZW5kQ29yc1ByZWZsaWdodEhlYWRlcnMoZSxzKXthcHBlbmRIZWFkZXJzKGUsY3JlYXRlT3JpZ2luSGVhZGVycyhlLHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlQ3JlZGVudGlhbHNIZWFkZXJzKHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlRXhwb3NlSGVhZGVycyhzKSksYXBwZW5kSGVhZGVycyhlLGZ1bmN0aW9uKGUpe2NvbnN0e21ldGhvZHM6c309ZTtyZXR1cm4gcz8iKiI9PT1zP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctbWV0aG9kcyI6IioifTpzLmxlbmd0aD4wP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctbWV0aG9kcyI6cy5qb2luKCIsIil9Ont9Ont9fShzKSksYXBwZW5kSGVhZGVycyhlLGZ1bmN0aW9uKGUscyl7Y29uc3R7YWxsb3dIZWFkZXJzOmR9PXM7aWYoIWR8fCIqIj09PWR8fDA9PT1kLmxlbmd0aCl7Y29uc3Qgcz1nZXRSZXF1ZXN0SGVhZGVyKGUsImFjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycyIpO3JldHVybiBzP3siYWNjZXNzLWNvbnRyb2wtYWxsb3ctaGVhZGVycyI6cyx2YXJ5OiJhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LWhlYWRlcnMifTp7fX1yZXR1cm57ImFjY2Vzcy1jb250cm9sLWFsbG93LWhlYWRlcnMiOmQuam9pbigiLCIpLHZhcnk6ImFjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycyJ9fShlLHMpKX1mdW5jdGlvbiBoYW5kbGVDb3JzKGUscyl7Y29uc3QgZD1mdW5jdGlvbihlPXt9KXtyZXR1cm4gd24oZSx7b3JpZ2luOiIqIixtZXRob2RzOiIqIixhbGxvd0hlYWRlcnM6IioiLGV4cG9zZUhlYWRlcnM6IioiLGNyZWRlbnRpYWxzOiExLG1heEFnZTohMSxwcmVmbGlnaHQ6e3N0YXR1c0NvZGU6MjA0fX0pfShzKTtyZXR1cm4gZnVuY3Rpb24oZSl7Y29uc3Qgcz1nZXRSZXF1ZXN0SGVhZGVyKGUsIm9yaWdpbiIpLGQ9Z2V0UmVxdWVzdEhlYWRlcihlLCJhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LW1ldGhvZCIpO3JldHVybiJPUFRJT05TIj09PWUubWV0aG9kJiYhIXMmJiEhZH0oZSk/KGFwcGVuZENvcnNQcmVmbGlnaHRIZWFkZXJzKGUscyksc2VuZE5vQ29udGVudChlLGQucHJlZmxpZ2h0LnN0YXR1c0NvZGUpLCEwKTooZnVuY3Rpb24oZSxzKXthcHBlbmRIZWFkZXJzKGUsY3JlYXRlT3JpZ2luSGVhZGVycyhlLHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlQ3JlZGVudGlhbHNIZWFkZXJzKHMpKSxhcHBlbmRIZWFkZXJzKGUsY3JlYXRlRXhwb3NlSGVhZGVycyhzKSl9KGUscyksITEpfWNvbnN0IEZuPW5ldyBTZXQoWyJQQVRDSCIsIlBPU1QiLCJQVVQiLCJERUxFVEUiXSksQm49bmV3IFNldChbInRyYW5zZmVyLWVuY29kaW5nIiwiYWNjZXB0LWVuY29kaW5nIiwiY29ubmVjdGlvbiIsImtlZXAtYWxpdmUiLCJ1cGdyYWRlIiwiZXhwZWN0IiwiaG9zdCIsImFjY2VwdCJdKTthc3luYyBmdW5jdGlvbiBwcm94eVJlcXVlc3QoZSxzLGQ9e30pe2xldCBtLGg7Rm4uaGFzKGUubWV0aG9kKSYmKGQuc3RyZWFtUmVxdWVzdD8obT1nZXRSZXF1ZXN0V2ViU3RyZWFtKGUpLGg9ImhhbGYiKTptPWF3YWl0IHJlYWRSYXdCb2R5KGUsITEpLmNhdGNoKCgpPT57fSkpO2NvbnN0IGc9ZC5mZXRjaE9wdGlvbnM/Lm1ldGhvZHx8ZS5tZXRob2QseD1mdW5jdGlvbihlLC4uLnMpe2NvbnN0IGQ9cy5maWx0ZXIoQm9vbGVhbik7aWYoMD09PWQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG09bmV3IEhlYWRlcnMoZSk7Zm9yKGNvbnN0IGUgb2YgZCl7Y29uc3Qgcz1BcnJheS5pc0FycmF5KGUpP2U6ImZ1bmN0aW9uIj09dHlwZW9mIGUuZW50cmllcz9lLmVudHJpZXMoKTpPYmplY3QuZW50cmllcyhlKTtmb3IoY29uc3RbZSxkXW9mIHMpdm9pZCAwIT09ZCYmbS5zZXQoZSxkKX1yZXR1cm4gbX0oZ2V0UHJveHlSZXF1ZXN0SGVhZGVycyhlLHtob3N0OnMuc3RhcnRzV2l0aCgiLyIpfSksZC5mZXRjaE9wdGlvbnM/LmhlYWRlcnMsZC5oZWFkZXJzKTtyZXR1cm4gYXN5bmMgZnVuY3Rpb24oZSxzLGQ9e30pe2xldCBtO3RyeXttPWF3YWl0IF9nZXRGZXRjaChkLmZldGNoKShzLHtoZWFkZXJzOmQuaGVhZGVycyxpZ25vcmVSZXNwb25zZUVycm9yOiEwLC4uLmQuZmV0Y2hPcHRpb25zfSl9Y2F0Y2goZSl7dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjUwMixzdGF0dXNNZXNzYWdlOiJCYWQgR2F0ZXdheSIsY2F1c2U6ZX0pfWUubm9kZS5yZXMuc3RhdHVzQ29kZT1zYW5pdGl6ZVN0YXR1c0NvZGUobS5zdGF0dXMsZS5ub2RlLnJlcy5zdGF0dXNDb2RlKSxlLm5vZGUucmVzLnN0YXR1c01lc3NhZ2U9c2FuaXRpemVTdGF0dXNNZXNzYWdlKG0uc3RhdHVzVGV4dCk7Y29uc3QgaD1bXTtmb3IoY29uc3RbcyxkXW9mIG0uaGVhZGVycy5lbnRyaWVzKCkpImNvbnRlbnQtZW5jb2RpbmciIT09cyYmImNvbnRlbnQtbGVuZ3RoIiE9PXMmJigic2V0LWNvb2tpZSIhPT1zP2Uubm9kZS5yZXMuc2V0SGVhZGVyKHMsZCk6aC5wdXNoKC4uLnNwbGl0Q29va2llc1N0cmluZyhkKSkpO2gubGVuZ3RoPjAmJmUubm9kZS5yZXMuc2V0SGVhZGVyKCJzZXQtY29va2llIixoLm1hcChlPT4oZC5jb29raWVEb21haW5SZXdyaXRlJiYoZT1yZXdyaXRlQ29va2llUHJvcGVydHkoZSxkLmNvb2tpZURvbWFpblJld3JpdGUsImRvbWFpbiIpKSxkLmNvb2tpZVBhdGhSZXdyaXRlJiYoZT1yZXdyaXRlQ29va2llUHJvcGVydHkoZSxkLmNvb2tpZVBhdGhSZXdyaXRlLCJwYXRoIikpLGUpKSk7ZC5vblJlc3BvbnNlJiZhd2FpdCBkLm9uUmVzcG9uc2UoZSxtKTtpZih2b2lkIDAhPT1tLl9kYXRhKXJldHVybiBtLl9kYXRhO2lmKGUuaGFuZGxlZClyZXR1cm47aWYoITE9PT1kLnNlbmRTdHJlYW0pe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbS5hcnJheUJ1ZmZlcigpKTtyZXR1cm4gZS5ub2RlLnJlcy5lbmQocyl9aWYobS5ib2R5KWZvciBhd2FpdChjb25zdCBzIG9mIG0uYm9keSllLm5vZGUucmVzLndyaXRlKHMpO3JldHVybiBlLm5vZGUucmVzLmVuZCgpfShlLHMsey4uLmQsZmV0Y2hPcHRpb25zOnttZXRob2Q6Zyxib2R5Om0sZHVwbGV4OmgsLi4uZC5mZXRjaE9wdGlvbnMsaGVhZGVyczp4fX0pfWZ1bmN0aW9uIGdldFByb3h5UmVxdWVzdEhlYWRlcnMoZSxzKXtjb25zdCBkPU9iamVjdC5jcmVhdGUobnVsbCksbT1nZXRSZXF1ZXN0SGVhZGVycyhlKTtmb3IoY29uc3QgZSBpbiBtKSghQm4uaGFzKGUpfHwiaG9zdCI9PT1lJiZzPy5ob3N0KSYmKGRbZV09bVtlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gZmV0Y2hXaXRoRXZlbnQoZSxzLGQsbSl7cmV0dXJuIF9nZXRGZXRjaChtPy5mZXRjaCkocyx7Li4uZCxjb250ZXh0OmQ/LmNvbnRleHR8fGUuY29udGV4dCxoZWFkZXJzOnsuLi5nZXRQcm94eVJlcXVlc3RIZWFkZXJzKGUse2hvc3Q6InN0cmluZyI9PXR5cGVvZiBzJiZzLnN0YXJ0c1dpdGgoIi8iKX0pLC4uLmQ/LmhlYWRlcnN9fSl9ZnVuY3Rpb24gX2dldEZldGNoKGUpe2lmKGUpcmV0dXJuIGU7aWYoZ2xvYmFsVGhpcy5mZXRjaClyZXR1cm4gZ2xvYmFsVGhpcy5mZXRjaDt0aHJvdyBuZXcgRXJyb3IoImZldGNoIGlzIG5vdCBhdmFpbGFibGUuIFRyeSBpbXBvcnRpbmcgYG5vZGUtZmV0Y2gtbmF0aXZlL3BvbHlmaWxsYCBmb3IgTm9kZS5qcy4iKX1mdW5jdGlvbiByZXdyaXRlQ29va2llUHJvcGVydHkoZSxzLGQpe2NvbnN0IG09InN0cmluZyI9PXR5cGVvZiBzP3siKiI6c306cztyZXR1cm4gZS5yZXBsYWNlKG5ldyBSZWdFeHAoYCg7XFxzKiR7ZH09KShbXjtdKylgLCJnaSIpLChlLHMsZCk9PntsZXQgaDtpZihkIGluIG0paD1tW2RdO2Vsc2V7aWYoISgiKiJpbiBtKSlyZXR1cm4gZTtoPW1bIioiXX1yZXR1cm4gaD9zK2g6IiJ9KX1jbGFzcyBIM0V2ZW50e19faXNfZXZlbnRfXz0hMDtub2RlO3dlYjtjb250ZXh0PXt9O19tZXRob2Q7X3BhdGg7X2hlYWRlcnM7X3JlcXVlc3RCb2R5O19oYW5kbGVkPSExO19vbkJlZm9yZVJlc3BvbnNlQ2FsbGVkO19vbkFmdGVyUmVzcG9uc2VDYWxsZWQ7Y29uc3RydWN0b3IoZSxzKXt0aGlzLm5vZGU9e3JlcTplLHJlczpzfX1nZXQgbWV0aG9kKCl7cmV0dXJuIHRoaXMuX21ldGhvZHx8KHRoaXMuX21ldGhvZD0odGhpcy5ub2RlLnJlcS5tZXRob2R8fCJHRVQiKS50b1VwcGVyQ2FzZSgpKSx0aGlzLl9tZXRob2R9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fcGF0aHx8dGhpcy5ub2RlLnJlcS51cmx8fCIvIn1nZXQgaGVhZGVycygpe3JldHVybiB0aGlzLl9oZWFkZXJzfHwodGhpcy5faGVhZGVycz1mdW5jdGlvbihlKXtjb25zdCBzPW5ldyBIZWFkZXJzO2Zvcihjb25zdFtkLG1db2YgT2JqZWN0LmVudHJpZXMoZSkpaWYoQXJyYXkuaXNBcnJheShtKSlmb3IoY29uc3QgZSBvZiBtKXMuYXBwZW5kKGQsZSk7ZWxzZSBtJiZzLnNldChkLG0pO3JldHVybiBzfSh0aGlzLm5vZGUucmVxLmhlYWRlcnMpKSx0aGlzLl9oZWFkZXJzfWdldCBoYW5kbGVkKCl7cmV0dXJuIHRoaXMuX2hhbmRsZWR8fHRoaXMubm9kZS5yZXMud3JpdGFibGVFbmRlZHx8dGhpcy5ub2RlLnJlcy5oZWFkZXJzU2VudH1yZXNwb25kV2l0aChlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpLnRoZW4oZT0+c2VuZFdlYlJlc3BvbnNlKHRoaXMsZSkpfXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMubWV0aG9kfV0gJHt0aGlzLnBhdGh9YH10b0pTT04oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfWdldCByZXEoKXtyZXR1cm4gdGhpcy5ub2RlLnJlcX1nZXQgcmVzKCl7cmV0dXJuIHRoaXMubm9kZS5yZXN9fWZ1bmN0aW9uIGlzRXZlbnQoZSl7cmV0dXJuIGhhc1Byb3AoZSwiX19pc19ldmVudF9fIil9ZnVuY3Rpb24gY3JlYXRlRXZlbnQoZSxzKXtyZXR1cm4gbmV3IEgzRXZlbnQoZSxzKX1mdW5jdGlvbiBkZWZpbmVFdmVudEhhbmRsZXIoZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGUuX19pc19oYW5kbGVyX189ITAsZTtjb25zdCBzPXtvblJlcXVlc3Q6X25vcm1hbGl6ZUFycmF5KGUub25SZXF1ZXN0KSxvbkJlZm9yZVJlc3BvbnNlOl9ub3JtYWxpemVBcnJheShlLm9uQmVmb3JlUmVzcG9uc2UpfSxfaGFuZGxlcj1kPT5hc3luYyBmdW5jdGlvbihlLHMsZCl7aWYoZC5vblJlcXVlc3QpZm9yKGNvbnN0IHMgb2YgZC5vblJlcXVlc3QpaWYoYXdhaXQgcyhlKSxlLmhhbmRsZWQpcmV0dXJuO2NvbnN0IG09YXdhaXQgcyhlKSxoPXtib2R5Om19O2lmKGQub25CZWZvcmVSZXNwb25zZSlmb3IoY29uc3QgcyBvZiBkLm9uQmVmb3JlUmVzcG9uc2UpYXdhaXQgcyhlLGgpO3JldHVybiBoLmJvZHl9KGQsZS5oYW5kbGVyLHMpO3JldHVybiBfaGFuZGxlci5fX2lzX2hhbmRsZXJfXz0hMCxfaGFuZGxlci5fX3Jlc29sdmVfXz1lLmhhbmRsZXIuX19yZXNvbHZlX18sX2hhbmRsZXIuX193ZWJzb2NrZXRfXz1lLndlYnNvY2tldCxfaGFuZGxlcn1mdW5jdGlvbiBfbm9ybWFsaXplQXJyYXkoZSl7cmV0dXJuIGU/QXJyYXkuaXNBcnJheShlKT9lOltlXTp2b2lkIDB9Y29uc3QgWm49ZGVmaW5lRXZlbnRIYW5kbGVyO2Z1bmN0aW9uIHRvRXZlbnRIYW5kbGVyKGUscyxkKXtyZXR1cm4gZX1jb25zdCBsYXp5RXZlbnRIYW5kbGVyPWZ1bmN0aW9uKGUpe2xldCBzLGQ7Y29uc3QgcmVzb2x2ZUhhbmRsZXI9KCk9PmQ/UHJvbWlzZS5yZXNvbHZlKGQpOihzfHwocz1Qcm9taXNlLnJlc29sdmUoZSgpKS50aGVuKGU9Pntjb25zdCBzPWUuZGVmYXVsdHx8ZTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGxhenkgaGFuZGxlciByZXN1bHQuIEl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uOiIscyk7cmV0dXJuIGQ9e2hhbmRsZXI6dG9FdmVudEhhbmRsZXIoZS5kZWZhdWx0fHxlKX0sZH0pKSxzKSxtPVpuKGU9PmQ/ZC5oYW5kbGVyKGUpOnJlc29sdmVIYW5kbGVyKCkudGhlbihzPT5zLmhhbmRsZXIoZSkpKTtyZXR1cm4gbS5fX3Jlc29sdmVfXz1yZXNvbHZlSGFuZGxlcixtfTtmdW5jdGlvbiBjcmVhdGVBcHAoZT17fSl7Y29uc3Qgcz1bXSxkPWZ1bmN0aW9uKGUscyl7Y29uc3QgZD1zLmRlYnVnPzI6dm9pZCAwO3JldHVybiBabihhc3luYyBtPT57bS5ub2RlLnJlcS5vcmlnaW5hbFVybD1tLm5vZGUucmVxLm9yaWdpbmFsVXJsfHxtLm5vZGUucmVxLnVybHx8Ii8iO2NvbnN0IGg9bS5ub2RlLnJlcS51cmx8fCIvIixnPWZ1bmN0aW9uKGUpe2NvbnN0IHM9ZS5pbmRleE9mKCI/IiksZD0tMT09PXM/ZTplLnNsaWNlKDAscyksbT0tMT09PXM/IiI6ZS5zbGljZShzKTtyZXR1cm4oZC5pbmNsdWRlcygiJTI1Iik/ZGVjb2RlUGF0aChkLnJlcGxhY2UoLyUyNS9nLCIlMjUyNSIpKTpkZWNvZGVQYXRoKGQpKSttfShtLl9wYXRofHxoKTttLl9wYXRoPWc7Y29uc3QgeD1nIT09aDtsZXQgJDtzLm9uUmVxdWVzdCYmYXdhaXQgcy5vblJlcXVlc3QobSk7Zm9yKGNvbnN0IFMgb2YgZSl7aWYoUy5yb3V0ZS5sZW5ndGg+MSl7aWYoIWcuc3RhcnRzV2l0aChTLnJvdXRlKSljb250aW51ZTskPWcuc2xpY2UoUy5yb3V0ZS5sZW5ndGgpfHwiLyJ9ZWxzZSAkPWc7aWYoUy5tYXRjaCYmIVMubWF0Y2goJCxtKSljb250aW51ZTttLl9wYXRoPSQsbS5ub2RlLnJlcS51cmw9eD9TLnJvdXRlLmxlbmd0aD4xP2guc2xpY2UoUy5yb3V0ZS5sZW5ndGgpfHwiLyI6aDokO2NvbnN0IGU9YXdhaXQgUy5oYW5kbGVyKG0pLGo9dm9pZCAwPT09ZT92b2lkIDA6YXdhaXQgZTtpZih2b2lkIDAhPT1qKXtjb25zdCBlPXtib2R5Omp9O3JldHVybiBzLm9uQmVmb3JlUmVzcG9uc2UmJihtLl9vbkJlZm9yZVJlc3BvbnNlQ2FsbGVkPSEwLGF3YWl0IHMub25CZWZvcmVSZXNwb25zZShtLGUpKSxhd2FpdCBoYW5kbGVIYW5kbGVyUmVzcG9uc2UobSxlLmJvZHksZCksdm9pZChzLm9uQWZ0ZXJSZXNwb25zZSYmKG0uX29uQWZ0ZXJSZXNwb25zZUNhbGxlZD0hMCxhd2FpdCBzLm9uQWZ0ZXJSZXNwb25zZShtLGUpKSl9aWYobS5oYW5kbGVkKXJldHVybiB2b2lkKHMub25BZnRlclJlc3BvbnNlJiYobS5fb25BZnRlclJlc3BvbnNlQ2FsbGVkPSEwLGF3YWl0IHMub25BZnRlclJlc3BvbnNlKG0sdm9pZCAwKSkpfWlmKCFtLmhhbmRsZWQpdGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZTpgQ2Fubm90IGZpbmQgYW55IHBhdGggbWF0Y2hpbmcgJHttLnBhdGh8fCIvIn0uYH0pO3Mub25BZnRlclJlc3BvbnNlJiYobS5fb25BZnRlclJlc3BvbnNlQ2FsbGVkPSEwLGF3YWl0IHMub25BZnRlclJlc3BvbnNlKG0sdm9pZCAwKSl9KX0ocyxlKSxtPWZ1bmN0aW9uKGUpe3JldHVybiBhc3luYyBzPT57bGV0IGQ7Zm9yKGNvbnN0IG0gb2YgZSl7aWYoIi8iPT09bS5yb3V0ZSYmIW0uaGFuZGxlci5fX3Jlc29sdmVfXyljb250aW51ZTtpZighcy5zdGFydHNXaXRoKG0ucm91dGUpKWNvbnRpbnVlO2lmKGQ9cy5zbGljZShtLnJvdXRlLmxlbmd0aCl8fCIvIixtLm1hdGNoJiYhbS5tYXRjaChkLHZvaWQgMCkpY29udGludWU7bGV0IGU9e3JvdXRlOm0ucm91dGUsaGFuZGxlcjptLmhhbmRsZXJ9O2lmKGUuaGFuZGxlci5fX3Jlc29sdmVfXyl7Y29uc3Qgcz1hd2FpdCBlLmhhbmRsZXIuX19yZXNvbHZlX18oZCk7aWYoIXMpY29udGludWU7ZT17Li4uZSwuLi5zLHJvdXRlOmpvaW5VUkwoZS5yb3V0ZXx8Ii8iLHMucm91dGV8fCIvIil9fXJldHVybiBlfX19KHMpO2QuX19yZXNvbHZlX189bTtjb25zdCBoPWZ1bmN0aW9uKGUpe2xldCBzO3JldHVybigpPT4oc3x8KHM9ZSgpKSxzKX0oKCk9PntyZXR1cm4gcz1tLHsuLi5lLndlYnNvY2tldCxhc3luYyByZXNvbHZlKGUpe2NvbnN0IGQ9ZS5yZXF1ZXN0Py51cmx8fGUudXJsfHwiLyIse3BhdGhuYW1lOm19PSJzdHJpbmciPT10eXBlb2YgZD9wYXJzZVVSTChkKTpkLGg9YXdhaXQgcyhtKTtyZXR1cm4gaD8uaGFuZGxlcj8uX193ZWJzb2NrZXRfX3x8e319fTt2YXIgc30pLGc9e3VzZTooZSxzLGQpPT51c2UoZyxlLHMsZCkscmVzb2x2ZTptLGhhbmRsZXI6ZCxzdGFjazpzLG9wdGlvbnM6ZSxnZXQgd2Vic29ja2V0KCl7cmV0dXJuIGgoKX19O3JldHVybiBnfWZ1bmN0aW9uIHVzZShlLHMsZCxtKXtpZihBcnJheS5pc0FycmF5KHMpKWZvcihjb25zdCBoIG9mIHMpdXNlKGUsaCxkLG0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShkKSlmb3IoY29uc3QgaCBvZiBkKXVzZShlLHMsaCxtKTtlbHNlInN0cmluZyI9PXR5cGVvZiBzP2Uuc3RhY2sucHVzaChub3JtYWxpemVMYXllcih7Li4ubSxyb3V0ZTpzLGhhbmRsZXI6ZH0pKToiZnVuY3Rpb24iPT10eXBlb2Ygcz9lLnN0YWNrLnB1c2gobm9ybWFsaXplTGF5ZXIoey4uLmQsaGFuZGxlcjpzfSkpOmUuc3RhY2sucHVzaChub3JtYWxpemVMYXllcih7Li4uc30pKTtyZXR1cm4gZX1mdW5jdGlvbiBub3JtYWxpemVMYXllcihlKXtsZXQgcz1lLmhhbmRsZXI7cmV0dXJuIHMuaGFuZGxlciYmKHM9cy5oYW5kbGVyKSxlLmxhenk/cz1sYXp5RXZlbnRIYW5kbGVyKHMpOmZ1bmN0aW9uKGUpe3JldHVybiBoYXNQcm9wKGUsIl9faXNfaGFuZGxlcl9fIil9KHMpfHwocz10b0V2ZW50SGFuZGxlcihzLDAsZS5yb3V0ZSkpLHtyb3V0ZTp3aXRob3V0VHJhaWxpbmdTbGFzaChlLnJvdXRlKSxtYXRjaDplLm1hdGNoLGhhbmRsZXI6c319ZnVuY3Rpb24gaGFuZGxlSGFuZGxlclJlc3BvbnNlKHMsZCxtKXtpZihudWxsPT09ZClyZXR1cm4gc2VuZE5vQ29udGVudChzKTtpZihkKXtpZihoPWQsInVuZGVmaW5lZCIhPXR5cGVvZiBSZXNwb25zZSYmaCBpbnN0YW5jZW9mIFJlc3BvbnNlKXJldHVybiBzZW5kV2ViUmVzcG9uc2UocyxkKTtpZihmdW5jdGlvbihlKXtpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnBpcGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLl9yZWFkKXJldHVybiEwO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmFib3J0KXJldHVybiEwfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBpcGVUb30oZCkpcmV0dXJuIHNlbmRTdHJlYW0ocyxkKTtpZihkLmJ1ZmZlcilyZXR1cm4gc2VuZChzLGQpO2lmKGQuYXJyYXlCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBkLmFycmF5QnVmZmVyKXJldHVybiBkLmFycmF5QnVmZmVyKCkudGhlbihtPT5zZW5kKHMsZS5mcm9tKG0pLGQudHlwZSkpO2lmKGQgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBjcmVhdGVFcnJvciQxKGQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkLmVuZClyZXR1cm4hMH12YXIgaDtjb25zdCBnPXR5cGVvZiBkO2lmKCJzdHJpbmciPT09ZylyZXR1cm4gc2VuZChzLGQsRG4uaHRtbCk7aWYoIm9iamVjdCI9PT1nfHwiYm9vbGVhbiI9PT1nfHwibnVtYmVyIj09PWcpcmV0dXJuIHNlbmQocyxKU09OLnN0cmluZ2lmeShkLHZvaWQgMCxtKSxEbi5qc29uKTtpZigiYmlnaW50Ij09PWcpcmV0dXJuIHNlbmQocyxkLnRvU3RyaW5nKCksRG4uanNvbik7dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo1MDAsc3RhdHVzTWVzc2FnZTpgW2gzXSBDYW5ub3Qgc2VuZCAke2d9IGFzIHJlc3BvbnNlLmB9KX1jb25zdCBNbj1bImNvbm5lY3QiLCJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyIsInBvc3QiLCJwdXQiLCJ0cmFjZSIsInBhdGNoIl07ZnVuY3Rpb24gdG9Ob2RlTGlzdGVuZXIoZSl7cmV0dXJuIGFzeW5jIGZ1bmN0aW9uKHMsZCl7Y29uc3QgbT1jcmVhdGVFdmVudChzLGQpO3RyeXthd2FpdCBlLmhhbmRsZXIobSl9Y2F0Y2gocyl7Y29uc3QgZD1jcmVhdGVFcnJvciQxKHMpO2lmKGlzRXJyb3Iocyl8fChkLnVuaGFuZGxlZD0hMCksc2V0UmVzcG9uc2VTdGF0dXMobSxkLnN0YXR1c0NvZGUsZC5zdGF0dXNNZXNzYWdlKSxlLm9wdGlvbnMub25FcnJvciYmYXdhaXQgZS5vcHRpb25zLm9uRXJyb3IoZCxtKSxtLmhhbmRsZWQpcmV0dXJuOyhkLnVuaGFuZGxlZHx8ZC5mYXRhbCkmJmNvbnNvbGUuZXJyb3IoIltoM10iLGQuZmF0YWw/IltmYXRhbF0iOiJbdW5oYW5kbGVkXSIsZCksZS5vcHRpb25zLm9uQmVmb3JlUmVzcG9uc2UmJiFtLl9vbkJlZm9yZVJlc3BvbnNlQ2FsbGVkJiZhd2FpdCBlLm9wdGlvbnMub25CZWZvcmVSZXNwb25zZShtLHtib2R5OmR9KSxhd2FpdCBmdW5jdGlvbihlLHMsZCl7aWYoZS5oYW5kbGVkKXJldHVybjtjb25zdCBtPWlzRXJyb3Iocyk/czpjcmVhdGVFcnJvciQxKHMpLGg9e3N0YXR1c0NvZGU6bS5zdGF0dXNDb2RlLHN0YXR1c01lc3NhZ2U6bS5zdGF0dXNNZXNzYWdlLHN0YWNrOltdLGRhdGE6bS5kYXRhfTtpZihkJiYoaC5zdGFjaz0obS5zdGFja3x8IiIpLnNwbGl0KCJcbiIpLm1hcChlPT5lLnRyaW0oKSkpLGUuaGFuZGxlZClyZXR1cm47c2V0UmVzcG9uc2VTdGF0dXMoZSxOdW1iZXIucGFyc2VJbnQobS5zdGF0dXNDb2RlKSxtLnN0YXR1c01lc3NhZ2UpLGUubm9kZS5yZXMuc2V0SGVhZGVyKCJjb250ZW50LXR5cGUiLERuLmpzb24pLGUubm9kZS5yZXMuZW5kKEpTT04uc3RyaW5naWZ5KGgsdm9pZCAwLDIpKX0obSxkLCEhZS5vcHRpb25zLmRlYnVnKSxlLm9wdGlvbnMub25BZnRlclJlc3BvbnNlJiYhbS5fb25BZnRlclJlc3BvbnNlQ2FsbGVkJiZhd2FpdCBlLm9wdGlvbnMub25BZnRlclJlc3BvbnNlKG0se2JvZHk6ZH0pfX19ZnVuY3Rpb24gZmxhdEhvb2tzKGUscz17fSxkKXtmb3IoY29uc3QgbSBpbiBlKXtjb25zdCBoPWVbbV0sZz1kP2Ake2R9OiR7bX1gOm07Im9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aD9mbGF0SG9va3MoaCxzLGcpOiJmdW5jdGlvbiI9PXR5cGVvZiBoJiYoc1tnXT1oKX1yZXR1cm4gc31jb25zdCBRbj17cnVuOmU9PmUoKX0sVm49dm9pZCAwIT09Y29uc29sZS5jcmVhdGVUYXNrP2NvbnNvbGUuY3JlYXRlVGFzazooKT0+UW47ZnVuY3Rpb24gc2VyaWFsVGFza0NhbGxlcihlLHMpe2NvbnN0IGQ9cy5zaGlmdCgpLG09Vm4oZCk7cmV0dXJuIGUucmVkdWNlKChlLGQpPT5lLnRoZW4oKCk9Pm0ucnVuKCgpPT5kKC4uLnMpKSksUHJvbWlzZS5yZXNvbHZlKCkpfWZ1bmN0aW9uIHBhcmFsbGVsVGFza0NhbGxlcihlLHMpe2NvbnN0IGQ9cy5zaGlmdCgpLG09Vm4oZCk7cmV0dXJuIFByb21pc2UuYWxsKGUubWFwKGU9Pm0ucnVuKCgpPT5lKC4uLnMpKSkpfWZ1bmN0aW9uIGNhbGxFYWNoV2l0aChlLHMpe2Zvcihjb25zdCBkIG9mWy4uLmVdKWQocyl9Y2xhc3MgSG9va2FibGV7Y29uc3RydWN0b3IoKXt0aGlzLl9ob29rcz17fSx0aGlzLl9iZWZvcmU9dm9pZCAwLHRoaXMuX2FmdGVyPXZvaWQgMCx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXM9dm9pZCAwLHRoaXMuX2RlcHJlY2F0ZWRIb29rcz17fSx0aGlzLmhvb2s9dGhpcy5ob29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9vaz10aGlzLmNhbGxIb29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9va1dpdGg9dGhpcy5jYWxsSG9va1dpdGguYmluZCh0aGlzKX1ob29rKGUscyxkPXt9KXtpZighZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHMpcmV0dXJuKCk9Pnt9O2NvbnN0IG09ZTtsZXQgaDtmb3IoO3RoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXTspaD10aGlzLl9kZXByZWNhdGVkSG9va3NbZV0sZT1oLnRvO2lmKGgmJiFkLmFsbG93RGVwcmVjYXRlZCl7bGV0IGU9aC5tZXNzYWdlO2V8fChlPWAke219IGhvb2sgaGFzIGJlZW4gZGVwcmVjYXRlZGArKGgudG8/YCwgcGxlYXNlIHVzZSAke2gudG99YDoiIikpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlc3x8KHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcz1uZXcgU2V0KSx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXMuaGFzKGUpfHwoY29uc29sZS53YXJuKGUpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5hZGQoZSkpfWlmKCFzLm5hbWUpdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJuYW1lIix7Z2V0OigpPT4iXyIrZS5yZXBsYWNlKC9cVysvZywiXyIpKyJfaG9va19jYiIsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2h7fXJldHVybiB0aGlzLl9ob29rc1tlXT10aGlzLl9ob29rc1tlXXx8W10sdGhpcy5faG9va3NbZV0ucHVzaChzKSwoKT0+e3MmJih0aGlzLnJlbW92ZUhvb2soZSxzKSxzPXZvaWQgMCl9fWhvb2tPbmNlKGUscyl7bGV0IGQsX2Z1bmN0aW9uPSguLi5lKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBkJiZkKCksZD12b2lkIDAsX2Z1bmN0aW9uPXZvaWQgMCxzKC4uLmUpKTtyZXR1cm4gZD10aGlzLmhvb2soZSxfZnVuY3Rpb24pLGR9cmVtb3ZlSG9vayhlLHMpe2lmKHRoaXMuX2hvb2tzW2VdKXtjb25zdCBkPXRoaXMuX2hvb2tzW2VdLmluZGV4T2Yocyk7LTEhPT1kJiZ0aGlzLl9ob29rc1tlXS5zcGxpY2UoZCwxKSwwPT09dGhpcy5faG9va3NbZV0ubGVuZ3RoJiZkZWxldGUgdGhpcy5faG9va3NbZV19fWRlcHJlY2F0ZUhvb2soZSxzKXt0aGlzLl9kZXByZWNhdGVkSG9va3NbZV09InN0cmluZyI9PXR5cGVvZiBzP3t0bzpzfTpzO2NvbnN0IGQ9dGhpcy5faG9va3NbZV18fFtdO2RlbGV0ZSB0aGlzLl9ob29rc1tlXTtmb3IoY29uc3QgcyBvZiBkKXRoaXMuaG9vayhlLHMpfWRlcHJlY2F0ZUhvb2tzKGUpe09iamVjdC5hc3NpZ24odGhpcy5fZGVwcmVjYXRlZEhvb2tzLGUpO2Zvcihjb25zdCBzIGluIGUpdGhpcy5kZXByZWNhdGVIb29rKHMsZVtzXSl9YWRkSG9va3MoZSl7Y29uc3Qgcz1mbGF0SG9va3MoZSksZD1PYmplY3Qua2V5cyhzKS5tYXAoZT0+dGhpcy5ob29rKGUsc1tlXSkpO3JldHVybigpPT57Zm9yKGNvbnN0IGUgb2YgZC5zcGxpY2UoMCxkLmxlbmd0aCkpZSgpfX1yZW1vdmVIb29rcyhlKXtjb25zdCBzPWZsYXRIb29rcyhlKTtmb3IoY29uc3QgZSBpbiBzKXRoaXMucmVtb3ZlSG9vayhlLHNbZV0pfXJlbW92ZUFsbEhvb2tzKCl7Zm9yKGNvbnN0IGUgaW4gdGhpcy5faG9va3MpZGVsZXRlIHRoaXMuX2hvb2tzW2VdfWNhbGxIb29rKGUsLi4ucyl7cmV0dXJuIHMudW5zaGlmdChlKSx0aGlzLmNhbGxIb29rV2l0aChzZXJpYWxUYXNrQ2FsbGVyLGUsLi4ucyl9Y2FsbEhvb2tQYXJhbGxlbChlLC4uLnMpe3JldHVybiBzLnVuc2hpZnQoZSksdGhpcy5jYWxsSG9va1dpdGgocGFyYWxsZWxUYXNrQ2FsbGVyLGUsLi4ucyl9Y2FsbEhvb2tXaXRoKGUscywuLi5kKXtjb25zdCBtPXRoaXMuX2JlZm9yZXx8dGhpcy5fYWZ0ZXI/e25hbWU6cyxhcmdzOmQsY29udGV4dDp7fX06dm9pZCAwO3RoaXMuX2JlZm9yZSYmY2FsbEVhY2hXaXRoKHRoaXMuX2JlZm9yZSxtKTtjb25zdCBoPWUocyBpbiB0aGlzLl9ob29rcz9bLi4udGhpcy5faG9va3Nbc11dOltdLGQpO3JldHVybiBoIGluc3RhbmNlb2YgUHJvbWlzZT9oLmZpbmFsbHkoKCk9Pnt0aGlzLl9hZnRlciYmbSYmY2FsbEVhY2hXaXRoKHRoaXMuX2FmdGVyLG0pfSk6KHRoaXMuX2FmdGVyJiZtJiZjYWxsRWFjaFdpdGgodGhpcy5fYWZ0ZXIsbSksaCl9YmVmb3JlRWFjaChlKXtyZXR1cm4gdGhpcy5fYmVmb3JlPXRoaXMuX2JlZm9yZXx8W10sdGhpcy5fYmVmb3JlLnB1c2goZSksKCk9PntpZih2b2lkIDAhPT10aGlzLl9iZWZvcmUpe2NvbnN0IHM9dGhpcy5fYmVmb3JlLmluZGV4T2YoZSk7LTEhPT1zJiZ0aGlzLl9iZWZvcmUuc3BsaWNlKHMsMSl9fX1hZnRlckVhY2goZSl7cmV0dXJuIHRoaXMuX2FmdGVyPXRoaXMuX2FmdGVyfHxbXSx0aGlzLl9hZnRlci5wdXNoKGUpLCgpPT57aWYodm9pZCAwIT09dGhpcy5fYWZ0ZXIpe2NvbnN0IHM9dGhpcy5fYWZ0ZXIuaW5kZXhPZihlKTstMSE9PXMmJnRoaXMuX2FmdGVyLnNwbGljZShzLDEpfX19fWNvbnN0IEhuPWdsb2JhbFRoaXM7Y2xhc3MgRmV0Y2hFcnJvciBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUscyl7c3VwZXIoZSxzKSx0aGlzLm5hbWU9IkZldGNoRXJyb3IiLHM/LmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9cy5jYXVzZSl9fWNvbnN0IFduPW5ldyBTZXQoT2JqZWN0LmZyZWV6ZShbIlBBVENIIiwiUE9TVCIsIlBVVCIsIkRFTEVURSJdKSk7ZnVuY3Rpb24gaXNQYXlsb2FkTWV0aG9kKGU9IkdFVCIpe3JldHVybiBXbi5oYXMoZS50b1VwcGVyQ2FzZSgpKX1jb25zdCBKbj1uZXcgU2V0KFsiaW1hZ2Uvc3ZnIiwiYXBwbGljYXRpb24veG1sIiwiYXBwbGljYXRpb24veGh0bWwiLCJhcHBsaWNhdGlvbi9odG1sIl0pLEtuPS9eYXBwbGljYXRpb25cLyg/OltcdyEjJCUmKi5eYH4tXSpcKyk/anNvbig7LispPyQvaTtmdW5jdGlvbiByZXNvbHZlRmV0Y2hPcHRpb25zKGUscyxkLG0pe2NvbnN0IGg9ZnVuY3Rpb24oZSxzLGQpe2lmKCFzKXJldHVybiBuZXcgZChlKTtjb25zdCBtPW5ldyBkKHMpO2lmKGUpZm9yKGNvbnN0W3MsaF1vZiBTeW1ib2wuaXRlcmF0b3IgaW4gZXx8QXJyYXkuaXNBcnJheShlKT9lOm5ldyBkKGUpKW0uc2V0KHMsaCk7cmV0dXJuIG19KHM/LmhlYWRlcnM/P2U/LmhlYWRlcnMsZD8uaGVhZGVycyxtKTtsZXQgZztyZXR1cm4oZD8ucXVlcnl8fGQ/LnBhcmFtc3x8cz8ucGFyYW1zfHxzPy5xdWVyeSkmJihnPXsuLi5kPy5wYXJhbXMsLi4uZD8ucXVlcnksLi4ucz8ucGFyYW1zLC4uLnM/LnF1ZXJ5fSksey4uLmQsLi4ucyxxdWVyeTpnLHBhcmFtczpnLGhlYWRlcnM6aH19YXN5bmMgZnVuY3Rpb24gY2FsbEhvb2tzKGUscyl7aWYocylpZihBcnJheS5pc0FycmF5KHMpKWZvcihjb25zdCBkIG9mIHMpYXdhaXQgZChlKTtlbHNlIGF3YWl0IHMoZSl9Y29uc3QgR249bmV3IFNldChbNDA4LDQwOSw0MjUsNDI5LDUwMCw1MDIsNTAzLDUwNF0pLFhuPW5ldyBTZXQoWzEwMSwyMDQsMjA1LDMwNF0pO2Z1bmN0aW9uIGNyZWF0ZUZldGNoKGU9e30pe2NvbnN0e2ZldGNoOnM9Z2xvYmFsVGhpcy5mZXRjaCxIZWFkZXJzOmQ9Z2xvYmFsVGhpcy5IZWFkZXJzLEFib3J0Q29udHJvbGxlcjptPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyfT1lO2FzeW5jIGZ1bmN0aW9uIG9uRXJyb3IoZSl7Y29uc3Qgcz1lLmVycm9yJiYiQWJvcnRFcnJvciI9PT1lLmVycm9yLm5hbWUmJiFlLm9wdGlvbnMudGltZW91dHx8ITE7aWYoITEhPT1lLm9wdGlvbnMucmV0cnkmJiFzKXtsZXQgcztzPSJudW1iZXIiPT10eXBlb2YgZS5vcHRpb25zLnJldHJ5P2Uub3B0aW9ucy5yZXRyeTppc1BheWxvYWRNZXRob2QoZS5vcHRpb25zLm1ldGhvZCk/MDoxO2NvbnN0IGQ9ZS5yZXNwb25zZSYmZS5yZXNwb25zZS5zdGF0dXN8fDUwMDtpZihzPjAmJihBcnJheS5pc0FycmF5KGUub3B0aW9ucy5yZXRyeVN0YXR1c0NvZGVzKT9lLm9wdGlvbnMucmV0cnlTdGF0dXNDb2Rlcy5pbmNsdWRlcyhkKTpHbi5oYXMoZCkpKXtjb25zdCBkPSJmdW5jdGlvbiI9PXR5cGVvZiBlLm9wdGlvbnMucmV0cnlEZWxheT9lLm9wdGlvbnMucmV0cnlEZWxheShlKTplLm9wdGlvbnMucmV0cnlEZWxheXx8MDtyZXR1cm4gZD4wJiZhd2FpdCBuZXcgUHJvbWlzZShlPT5zZXRUaW1lb3V0KGUsZCkpLCRmZXRjaFJhdyhlLnJlcXVlc3Qsey4uLmUub3B0aW9ucyxyZXRyeTpzLTF9KX19Y29uc3QgZD1mdW5jdGlvbihlKXtjb25zdCBzPWUuZXJyb3I/Lm1lc3NhZ2V8fGUuZXJyb3I/LnRvU3RyaW5nKCl8fCIiLGQ9ZS5yZXF1ZXN0Py5tZXRob2R8fGUub3B0aW9ucz8ubWV0aG9kfHwiR0VUIixtPWUucmVxdWVzdD8udXJsfHxTdHJpbmcoZS5yZXF1ZXN0KXx8Ii8iLGg9YFske2R9XSAke0pTT04uc3RyaW5naWZ5KG0pfWAsZz1lLnJlc3BvbnNlP2Ake2UucmVzcG9uc2Uuc3RhdHVzfSAke2UucmVzcG9uc2Uuc3RhdHVzVGV4dH1gOiI8bm8gcmVzcG9uc2U+Iix4PW5ldyBGZXRjaEVycm9yKGAke2h9OiAke2d9JHtzP2AgJHtzfWA6IiJ9YCxlLmVycm9yP3tjYXVzZTplLmVycm9yfTp2b2lkIDApO2Zvcihjb25zdCBzIG9mWyJyZXF1ZXN0Iiwib3B0aW9ucyIsInJlc3BvbnNlIl0pT2JqZWN0LmRlZmluZVByb3BlcnR5KHgscyx7Z2V0OigpPT5lW3NdfSk7Zm9yKGNvbnN0W3MsZF1vZltbImRhdGEiLCJfZGF0YSJdLFsic3RhdHVzIiwic3RhdHVzIl0sWyJzdGF0dXNDb2RlIiwic3RhdHVzIl0sWyJzdGF0dXNUZXh0Iiwic3RhdHVzVGV4dCJdLFsic3RhdHVzTWVzc2FnZSIsInN0YXR1c1RleHQiXV0pT2JqZWN0LmRlZmluZVByb3BlcnR5KHgscyx7Z2V0OigpPT5lLnJlc3BvbnNlJiZlLnJlc3BvbnNlW2RdfSk7cmV0dXJuIHh9KGUpO3Rocm93IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShkLCRmZXRjaFJhdyksZH1jb25zdCAkZmV0Y2hSYXc9YXN5bmMgZnVuY3Rpb24oaCxnPXt9KXtjb25zdCB4PXtyZXF1ZXN0Omgsb3B0aW9uczpyZXNvbHZlRmV0Y2hPcHRpb25zKGgsZyxlLmRlZmF1bHRzLGQpLHJlc3BvbnNlOnZvaWQgMCxlcnJvcjp2b2lkIDB9O2lmKHgub3B0aW9ucy5tZXRob2QmJih4Lm9wdGlvbnMubWV0aG9kPXgub3B0aW9ucy5tZXRob2QudG9VcHBlckNhc2UoKSkseC5vcHRpb25zLm9uUmVxdWVzdCYmKGF3YWl0IGNhbGxIb29rcyh4LHgub3B0aW9ucy5vblJlcXVlc3QpLHgub3B0aW9ucy5oZWFkZXJzIGluc3RhbmNlb2YgZHx8KHgub3B0aW9ucy5oZWFkZXJzPW5ldyBkKHgub3B0aW9ucy5oZWFkZXJzfHx7fSkpKSwic3RyaW5nIj09dHlwZW9mIHgucmVxdWVzdCYmKHgub3B0aW9ucy5iYXNlVVJMJiYoeC5yZXF1ZXN0PWZ1bmN0aW9uKGUscyl7aWYoaXNFbXB0eVVSTChzKXx8aGFzUHJvdG9jb2woZSkpcmV0dXJuIGU7Y29uc3QgZD13aXRob3V0VHJhaWxpbmdTbGFzaChzKTtpZihlLnN0YXJ0c1dpdGgoZCkpe2NvbnN0IHM9ZVtkLmxlbmd0aF07aWYoIXN8fCIvIj09PXN8fCI/Ij09PXMpcmV0dXJuIGV9cmV0dXJuIGpvaW5VUkwoZCxlKX0oeC5yZXF1ZXN0LHgub3B0aW9ucy5iYXNlVVJMKSkseC5vcHRpb25zLnF1ZXJ5JiYoeC5yZXF1ZXN0PXdpdGhRdWVyeSh4LnJlcXVlc3QseC5vcHRpb25zLnF1ZXJ5KSxkZWxldGUgeC5vcHRpb25zLnF1ZXJ5KSwicXVlcnkiaW4geC5vcHRpb25zJiZkZWxldGUgeC5vcHRpb25zLnF1ZXJ5LCJwYXJhbXMiaW4geC5vcHRpb25zJiZkZWxldGUgeC5vcHRpb25zLnBhcmFtcykseC5vcHRpb25zLmJvZHkmJmlzUGF5bG9hZE1ldGhvZCh4Lm9wdGlvbnMubWV0aG9kKSlpZihmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiExO2NvbnN0IHM9dHlwZW9mIGU7cmV0dXJuInN0cmluZyI9PT1zfHwibnVtYmVyIj09PXN8fCJib29sZWFuIj09PXN8fG51bGw9PT1zfHwib2JqZWN0Ij09PXMmJighIUFycmF5LmlzQXJyYXkoZSl8fCFlLmJ1ZmZlciYmIShlIGluc3RhbmNlb2YgRm9ybURhdGF8fGUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpJiYoZS5jb25zdHJ1Y3RvciYmIk9iamVjdCI9PT1lLmNvbnN0cnVjdG9yLm5hbWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvSlNPTikpfSh4Lm9wdGlvbnMuYm9keSkpe2NvbnN0IGU9eC5vcHRpb25zLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKTsic3RyaW5nIiE9dHlwZW9mIHgub3B0aW9ucy5ib2R5JiYoeC5vcHRpb25zLmJvZHk9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI9PT1lP25ldyBVUkxTZWFyY2hQYXJhbXMoeC5vcHRpb25zLmJvZHkpLnRvU3RyaW5nKCk6SlNPTi5zdHJpbmdpZnkoeC5vcHRpb25zLmJvZHkpKSxlfHx4Lm9wdGlvbnMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSx4Lm9wdGlvbnMuaGVhZGVycy5oYXMoImFjY2VwdCIpfHx4Lm9wdGlvbnMuaGVhZGVycy5zZXQoImFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKX1lbHNlKCJwaXBlVG8iaW4geC5vcHRpb25zLmJvZHkmJiJmdW5jdGlvbiI9PXR5cGVvZiB4Lm9wdGlvbnMuYm9keS5waXBlVG98fCJmdW5jdGlvbiI9PXR5cGVvZiB4Lm9wdGlvbnMuYm9keS5waXBlKSYmKCJkdXBsZXgiaW4geC5vcHRpb25zfHwoeC5vcHRpb25zLmR1cGxleD0iaGFsZiIpKTtsZXQgJDtpZigheC5vcHRpb25zLnNpZ25hbCYmeC5vcHRpb25zLnRpbWVvdXQpe2NvbnN0IGU9bmV3IG07JD1zZXRUaW1lb3V0KCgpPT57Y29uc3Qgcz1uZXcgRXJyb3IoIltUaW1lb3V0RXJyb3JdOiBUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aW1lb3V0Iik7cy5uYW1lPSJUaW1lb3V0RXJyb3IiLHMuY29kZT0yMyxlLmFib3J0KHMpfSx4Lm9wdGlvbnMudGltZW91dCkseC5vcHRpb25zLnNpZ25hbD1lLnNpZ25hbH10cnl7eC5yZXNwb25zZT1hd2FpdCBzKHgucmVxdWVzdCx4Lm9wdGlvbnMpfWNhdGNoKGUpe3JldHVybiB4LmVycm9yPWUseC5vcHRpb25zLm9uUmVxdWVzdEVycm9yJiZhd2FpdCBjYWxsSG9va3MoeCx4Lm9wdGlvbnMub25SZXF1ZXN0RXJyb3IpLGF3YWl0IG9uRXJyb3IoeCl9ZmluYWxseXskJiZjbGVhclRpbWVvdXQoJCl9aWYoKHgucmVzcG9uc2UuYm9keXx8eC5yZXNwb25zZS5fYm9keUluaXQpJiYhWG4uaGFzKHgucmVzcG9uc2Uuc3RhdHVzKSYmIkhFQUQiIT09eC5vcHRpb25zLm1ldGhvZCl7Y29uc3QgZT0oeC5vcHRpb25zLnBhcnNlUmVzcG9uc2U/Impzb24iOngub3B0aW9ucy5yZXNwb25zZVR5cGUpfHxmdW5jdGlvbihlPSIiKXtpZighZSlyZXR1cm4ianNvbiI7Y29uc3Qgcz1lLnNwbGl0KCI7Iikuc2hpZnQoKXx8IiI7cmV0dXJuIEtuLnRlc3Qocyk/Impzb24iOiJ0ZXh0L2V2ZW50LXN0cmVhbSI9PT1zPyJzdHJlYW0iOkpuLmhhcyhzKXx8cy5zdGFydHNXaXRoKCJ0ZXh0LyIpPyJ0ZXh0IjoiYmxvYiJ9KHgucmVzcG9uc2UuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpfHwiIik7c3dpdGNoKGUpe2Nhc2UianNvbiI6e2NvbnN0IGU9YXdhaXQgeC5yZXNwb25zZS50ZXh0KCkscz14Lm9wdGlvbnMucGFyc2VSZXNwb25zZXx8ZGVzdHI7eC5yZXNwb25zZS5fZGF0YT1zKGUpO2JyZWFrfWNhc2Uic3RyZWFtIjp4LnJlc3BvbnNlLl9kYXRhPXgucmVzcG9uc2UuYm9keXx8eC5yZXNwb25zZS5fYm9keUluaXQ7YnJlYWs7ZGVmYXVsdDp4LnJlc3BvbnNlLl9kYXRhPWF3YWl0IHgucmVzcG9uc2VbZV0oKX19cmV0dXJuIHgub3B0aW9ucy5vblJlc3BvbnNlJiZhd2FpdCBjYWxsSG9va3MoeCx4Lm9wdGlvbnMub25SZXNwb25zZSksIXgub3B0aW9ucy5pZ25vcmVSZXNwb25zZUVycm9yJiZ4LnJlc3BvbnNlLnN0YXR1cz49NDAwJiZ4LnJlc3BvbnNlLnN0YXR1czw2MDA/KHgub3B0aW9ucy5vblJlc3BvbnNlRXJyb3ImJmF3YWl0IGNhbGxIb29rcyh4LHgub3B0aW9ucy5vblJlc3BvbnNlRXJyb3IpLGF3YWl0IG9uRXJyb3IoeCkpOngucmVzcG9uc2V9LCRmZXRjaD1hc3luYyBmdW5jdGlvbihlLHMpe3JldHVybihhd2FpdCAkZmV0Y2hSYXcoZSxzKSkuX2RhdGF9O3JldHVybiAkZmV0Y2gucmF3PSRmZXRjaFJhdywkZmV0Y2gubmF0aXZlPSguLi5lKT0+cyguLi5lKSwkZmV0Y2guY3JlYXRlPShzPXt9LGQ9e30pPT5jcmVhdGVGZXRjaCh7Li4uZSwuLi5kLGRlZmF1bHRzOnsuLi5lLmRlZmF1bHRzLC4uLmQuZGVmYXVsdHMsLi4uc319KSwkZmV0Y2h9Y29uc3QgWW49ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmKXJldHVybiBzZWxmO2lmKHZvaWQgMCE9PUhuKXJldHVybiBIbjt0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBsb2NhdGUgZ2xvYmFsIG9iamVjdCIpfSgpLGVpPVluLmZldGNoPyguLi5lKT0+WW4uZmV0Y2goLi4uZSk6KCk9PlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiW29mZXRjaF0gZ2xvYmFsLmZldGNoIGlzIG5vdCBzdXBwb3J0ZWQhIikpLHRpPVluLkhlYWRlcnMsbmk9WW4uQWJvcnRDb250cm9sbGVyLGlpPWNyZWF0ZUZldGNoKHtmZXRjaDplaSxIZWFkZXJzOnRpLEFib3J0Q29udHJvbGxlcjpuaX0pO2Z1bmN0aW9uIGFzeW5jQ2FsbChlLC4uLnMpe3RyeXtyZXR1cm4oZD1lKC4uLnMpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGQudGhlbj9kOlByb21pc2UucmVzb2x2ZShkKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9dmFyIGR9ZnVuY3Rpb24gc3RyaW5naWZ5KGUpe2lmKGZ1bmN0aW9uKGUpe2NvbnN0IHM9dHlwZW9mIGU7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9PXMmJiJmdW5jdGlvbiIhPT1zfShlKSlyZXR1cm4gU3RyaW5nKGUpO2lmKGZ1bmN0aW9uKGUpe2NvbnN0IHM9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiFzfHxzLmlzUHJvdG90eXBlT2YoT2JqZWN0KX0oZSl8fEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvSlNPTilyZXR1cm4gc3RyaW5naWZ5KGUudG9KU09OKCkpO3Rocm93IG5ldyBFcnJvcigiW3Vuc3RvcmFnZV0gQ2Fubm90IHN0cmluZ2lmeSB2YWx1ZSEiKX1jb25zdCByaT0iYmFzZTY0OiI7ZnVuY3Rpb24gc2VyaWFsaXplUmF3KHMpe3JldHVybiJzdHJpbmciPT10eXBlb2Ygcz9zOnJpK2Z1bmN0aW9uKHMpe2lmKGdsb2JhbFRoaXMuQnVmZmVyKXJldHVybiBlLmZyb20ocykudG9TdHJpbmcoImJhc2U2NCIpO3JldHVybiBnbG9iYWxUaGlzLmJ0b2EoU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucykpfShzKX1mdW5jdGlvbiBkZXNlcmlhbGl6ZVJhdyhzKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHM/czpzLnN0YXJ0c1dpdGgocmkpP2Z1bmN0aW9uKHMpe2lmKGdsb2JhbFRoaXMuQnVmZmVyKXJldHVybiBlLmZyb20ocywiYmFzZTY0Iik7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShnbG9iYWxUaGlzLmF0b2IocyksZT0+ZS5jb2RlUG9pbnRBdCgwKSl9KHMuc2xpY2UoNykpOnN9Y29uc3Qgb2k9WyJoYXMiLCJoYXNJdGVtIiwiZ2V0IiwiZ2V0SXRlbSIsImdldEl0ZW1SYXciLCJzZXQiLCJzZXRJdGVtIiwic2V0SXRlbVJhdyIsImRlbCIsInJlbW92ZSIsInJlbW92ZUl0ZW0iLCJnZXRNZXRhIiwic2V0TWV0YSIsInJlbW92ZU1ldGEiLCJnZXRLZXlzIiwiY2xlYXIiLCJtb3VudCIsInVubW91bnQiXTtmdW5jdGlvbiBub3JtYWxpemVLZXkkMihlKXtyZXR1cm4gZSYmZS5zcGxpdCgiPyIpWzBdPy5yZXBsYWNlKC9bL1xcXS9nLCI6IikucmVwbGFjZSgvOisvZywiOiIpLnJlcGxhY2UoL146fDokL2csIiIpfHwiIn1mdW5jdGlvbiBqb2luS2V5cyQxKC4uLmUpe3JldHVybiBub3JtYWxpemVLZXkkMihlLmpvaW4oIjoiKSl9ZnVuY3Rpb24gbm9ybWFsaXplQmFzZUtleShlKXtyZXR1cm4oZT1ub3JtYWxpemVLZXkkMihlKSk/ZSsiOiI6IiJ9Y29uc3QgbWVtb3J5PSgpPT57Y29uc3QgZT1uZXcgTWFwO3JldHVybntuYW1lOiJtZW1vcnkiLGdldEluc3RhbmNlOigpPT5lLGhhc0l0ZW06cz0+ZS5oYXMocyksZ2V0SXRlbTpzPT5lLmdldChzKT8/bnVsbCxnZXRJdGVtUmF3OnM9PmUuZ2V0KHMpPz9udWxsLHNldEl0ZW0ocyxkKXtlLnNldChzLGQpfSxzZXRJdGVtUmF3KHMsZCl7ZS5zZXQocyxkKX0scmVtb3ZlSXRlbShzKXtlLmRlbGV0ZShzKX0sZ2V0S2V5czooKT0+Wy4uLmUua2V5cygpXSxjbGVhcigpe2UuY2xlYXIoKX0sZGlzcG9zZSgpe2UuY2xlYXIoKX19fTtmdW5jdGlvbiBjcmVhdGVTdG9yYWdlKGU9e30pe2NvbnN0IHM9e21vdW50czp7IiI6ZS5kcml2ZXJ8fG1lbW9yeSgpfSxtb3VudHBvaW50czpbIiJdLHdhdGNoaW5nOiExLHdhdGNoTGlzdGVuZXJzOltdLHVud2F0Y2g6e319LGdldE1vdW50PWU9Pntmb3IoY29uc3QgZCBvZiBzLm1vdW50cG9pbnRzKWlmKGUuc3RhcnRzV2l0aChkKSlyZXR1cm57YmFzZTpkLHJlbGF0aXZlS2V5OmUuc2xpY2UoZC5sZW5ndGgpLGRyaXZlcjpzLm1vdW50c1tkXX07cmV0dXJue2Jhc2U6IiIscmVsYXRpdmVLZXk6ZSxkcml2ZXI6cy5tb3VudHNbIiJdfX0sZ2V0TW91bnRzPShlLGQpPT5zLm1vdW50cG9pbnRzLmZpbHRlcihzPT5zLnN0YXJ0c1dpdGgoZSl8fGQmJmUuc3RhcnRzV2l0aChzKSkubWFwKGQ9Pih7cmVsYXRpdmVCYXNlOmUubGVuZ3RoPmQubGVuZ3RoP2Uuc2xpY2UoZC5sZW5ndGgpOnZvaWQgMCxtb3VudHBvaW50OmQsZHJpdmVyOnMubW91bnRzW2RdfSkpLG9uQ2hhbmdlPShlLGQpPT57aWYocy53YXRjaGluZyl7ZD1ub3JtYWxpemVLZXkkMihkKTtmb3IoY29uc3QgbSBvZiBzLndhdGNoTGlzdGVuZXJzKW0oZSxkKX19LHN0b3BXYXRjaD1hc3luYygpPT57aWYocy53YXRjaGluZyl7Zm9yKGNvbnN0IGUgaW4gcy51bndhdGNoKWF3YWl0IHMudW53YXRjaFtlXSgpO3MudW53YXRjaD17fSxzLndhdGNoaW5nPSExfX0scnVuQmF0Y2g9KGUscyxkKT0+e2NvbnN0IG09bmV3IE1hcCxnZXRCYXRjaD1lPT57bGV0IHM9bS5nZXQoZS5iYXNlKTtyZXR1cm4gc3x8KHM9e2RyaXZlcjplLmRyaXZlcixiYXNlOmUuYmFzZSxpdGVtczpbXX0sbS5zZXQoZS5iYXNlLHMpKSxzfTtmb3IoY29uc3QgZCBvZiBlKXtjb25zdCBlPSJzdHJpbmciPT10eXBlb2YgZCxtPW5vcm1hbGl6ZUtleSQyKGU/ZDpkLmtleSksaD1lP3ZvaWQgMDpkLnZhbHVlLGc9ZXx8IWQub3B0aW9ucz9zOnsuLi5zLC4uLmQub3B0aW9uc30seD1nZXRNb3VudChtKTtnZXRCYXRjaCh4KS5pdGVtcy5wdXNoKHtrZXk6bSx2YWx1ZTpoLHJlbGF0aXZlS2V5OngucmVsYXRpdmVLZXksb3B0aW9uczpnfSl9cmV0dXJuIFByb21pc2UuYWxsKFsuLi5tLnZhbHVlcygpXS5tYXAoZT0+ZChlKSkpLnRoZW4oZT0+ZS5mbGF0KCkpfSxkPXtoYXNJdGVtKGUscz17fSl7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpkLGRyaXZlcjptfT1nZXRNb3VudChlKTtyZXR1cm4gYXN5bmNDYWxsKG0uaGFzSXRlbSxkLHMpfSxnZXRJdGVtKGUscz17fSl7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpkLGRyaXZlcjptfT1nZXRNb3VudChlKTtyZXR1cm4gYXN5bmNDYWxsKG0uZ2V0SXRlbSxkLHMpLnRoZW4oZT0+ZGVzdHIoZSkpfSxnZXRJdGVtczooZSxzPXt9KT0+cnVuQmF0Y2goZSxzLGU9PmUuZHJpdmVyLmdldEl0ZW1zP2FzeW5jQ2FsbChlLmRyaXZlci5nZXRJdGVtcyxlLml0ZW1zLm1hcChlPT4oe2tleTplLnJlbGF0aXZlS2V5LG9wdGlvbnM6ZS5vcHRpb25zfSkpLHMpLnRoZW4ocz0+cy5tYXAocz0+KHtrZXk6am9pbktleXMkMShlLmJhc2Uscy5rZXkpLHZhbHVlOmRlc3RyKHMudmFsdWUpfSkpKTpQcm9taXNlLmFsbChlLml0ZW1zLm1hcChzPT5hc3luY0NhbGwoZS5kcml2ZXIuZ2V0SXRlbSxzLnJlbGF0aXZlS2V5LHMub3B0aW9ucykudGhlbihlPT4oe2tleTpzLmtleSx2YWx1ZTpkZXN0cihlKX0pKSkpKSxnZXRJdGVtUmF3KGUscz17fSl7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpkLGRyaXZlcjptfT1nZXRNb3VudChlKTtyZXR1cm4gbS5nZXRJdGVtUmF3P2FzeW5jQ2FsbChtLmdldEl0ZW1SYXcsZCxzKTphc3luY0NhbGwobS5nZXRJdGVtLGQscykudGhlbihlPT5kZXNlcmlhbGl6ZVJhdyhlKSl9LGFzeW5jIHNldEl0ZW0oZSxzLG09e30pe2lmKHZvaWQgMD09PXMpcmV0dXJuIGQucmVtb3ZlSXRlbShlKTtlPW5vcm1hbGl6ZUtleSQyKGUpO2NvbnN0e3JlbGF0aXZlS2V5OmgsZHJpdmVyOmd9PWdldE1vdW50KGUpO2cuc2V0SXRlbSYmKGF3YWl0IGFzeW5jQ2FsbChnLnNldEl0ZW0saCxzdHJpbmdpZnkocyksbSksZy53YXRjaHx8b25DaGFuZ2UoInVwZGF0ZSIsZSkpfSxhc3luYyBzZXRJdGVtcyhlLHMpe2F3YWl0IHJ1bkJhdGNoKGUscyxhc3luYyBlPT57aWYoZS5kcml2ZXIuc2V0SXRlbXMpcmV0dXJuIGFzeW5jQ2FsbChlLmRyaXZlci5zZXRJdGVtcyxlLml0ZW1zLm1hcChlPT4oe2tleTplLnJlbGF0aXZlS2V5LHZhbHVlOnN0cmluZ2lmeShlLnZhbHVlKSxvcHRpb25zOmUub3B0aW9uc30pKSxzKTtlLmRyaXZlci5zZXRJdGVtJiZhd2FpdCBQcm9taXNlLmFsbChlLml0ZW1zLm1hcChzPT5hc3luY0NhbGwoZS5kcml2ZXIuc2V0SXRlbSxzLnJlbGF0aXZlS2V5LHN0cmluZ2lmeShzLnZhbHVlKSxzLm9wdGlvbnMpKSl9KX0sYXN5bmMgc2V0SXRlbVJhdyhlLHMsbT17fSl7aWYodm9pZCAwPT09cylyZXR1cm4gZC5yZW1vdmVJdGVtKGUsbSk7ZT1ub3JtYWxpemVLZXkkMihlKTtjb25zdHtyZWxhdGl2ZUtleTpoLGRyaXZlcjpnfT1nZXRNb3VudChlKTtpZihnLnNldEl0ZW1SYXcpYXdhaXQgYXN5bmNDYWxsKGcuc2V0SXRlbVJhdyxoLHMsbSk7ZWxzZXtpZighZy5zZXRJdGVtKXJldHVybjthd2FpdCBhc3luY0NhbGwoZy5zZXRJdGVtLGgsc2VyaWFsaXplUmF3KHMpLG0pfWcud2F0Y2h8fG9uQ2hhbmdlKCJ1cGRhdGUiLGUpfSxhc3luYyByZW1vdmVJdGVtKGUscz17fSl7ImJvb2xlYW4iPT10eXBlb2YgcyYmKHM9e3JlbW92ZU1ldGE6c30pLGU9bm9ybWFsaXplS2V5JDIoZSk7Y29uc3R7cmVsYXRpdmVLZXk6ZCxkcml2ZXI6bX09Z2V0TW91bnQoZSk7bS5yZW1vdmVJdGVtJiYoYXdhaXQgYXN5bmNDYWxsKG0ucmVtb3ZlSXRlbSxkLHMpLChzLnJlbW92ZU1ldGF8fHMucmVtb3ZlTWF0YSkmJmF3YWl0IGFzeW5jQ2FsbChtLnJlbW92ZUl0ZW0sZCsiJCIscyksbS53YXRjaHx8b25DaGFuZ2UoInJlbW92ZSIsZSkpfSxhc3luYyBnZXRNZXRhKGUscz17fSl7ImJvb2xlYW4iPT10eXBlb2YgcyYmKHM9e25hdGl2ZU9ubHk6c30pLGU9bm9ybWFsaXplS2V5JDIoZSk7Y29uc3R7cmVsYXRpdmVLZXk6ZCxkcml2ZXI6bX09Z2V0TW91bnQoZSksaD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKG0uZ2V0TWV0YSYmT2JqZWN0LmFzc2lnbihoLGF3YWl0IGFzeW5jQ2FsbChtLmdldE1ldGEsZCxzKSksIXMubmF0aXZlT25seSl7Y29uc3QgZT1hd2FpdCBhc3luY0NhbGwobS5nZXRJdGVtLGQrIiQiLHMpLnRoZW4oZT0+ZGVzdHIoZSkpO2UmJiJvYmplY3QiPT10eXBlb2YgZSYmKCJzdHJpbmciPT10eXBlb2YgZS5hdGltZSYmKGUuYXRpbWU9bmV3IERhdGUoZS5hdGltZSkpLCJzdHJpbmciPT10eXBlb2YgZS5tdGltZSYmKGUubXRpbWU9bmV3IERhdGUoZS5tdGltZSkpLE9iamVjdC5hc3NpZ24oaCxlKSl9cmV0dXJuIGh9LHNldE1ldGEoZSxzLGQ9e30pe3JldHVybiB0aGlzLnNldEl0ZW0oZSsiJCIscyxkKX0scmVtb3ZlTWV0YShlLHM9e30pe3JldHVybiB0aGlzLnJlbW92ZUl0ZW0oZSsiJCIscyl9LGFzeW5jIGdldEtleXMoZSxzPXt9KXtlPW5vcm1hbGl6ZUJhc2VLZXkoZSk7Y29uc3QgZD1nZXRNb3VudHMoZSwhMCk7bGV0IG09W107Y29uc3QgaD1bXTtsZXQgZz0hMDtmb3IoY29uc3QgZSBvZiBkKXtlLmRyaXZlci5mbGFncz8ubWF4RGVwdGh8fChnPSExKTtjb25zdCBkPWF3YWl0IGFzeW5jQ2FsbChlLmRyaXZlci5nZXRLZXlzLGUucmVsYXRpdmVCYXNlLHMpO2Zvcihjb25zdCBzIG9mIGQpe2NvbnN0IGQ9ZS5tb3VudHBvaW50K25vcm1hbGl6ZUtleSQyKHMpO20uc29tZShlPT5kLnN0YXJ0c1dpdGgoZSkpfHxoLnB1c2goZCl9bT1bZS5tb3VudHBvaW50LC4uLm0uZmlsdGVyKHM9PiFzLnN0YXJ0c1dpdGgoZS5tb3VudHBvaW50KSldfWNvbnN0IHg9dm9pZCAwIT09cy5tYXhEZXB0aCYmIWc7cmV0dXJuIGguZmlsdGVyKGQ9PigheHx8ZnVuY3Rpb24oZSxzKXtpZih2b2lkIDA9PT1zKXJldHVybiEwO2xldCBkPTAsbT1lLmluZGV4T2YoIjoiKTtmb3IoO20+LTE7KWQrKyxtPWUuaW5kZXhPZigiOiIsbSsxKTtyZXR1cm4gZDw9c30oZCxzLm1heERlcHRoKSkmJmZ1bmN0aW9uKGUscyl7cmV0dXJuIHM/ZS5zdGFydHNXaXRoKHMpJiYiJCIhPT1lW2UubGVuZ3RoLTFdOiIkIiE9PWVbZS5sZW5ndGgtMV19KGQsZSkpfSxhc3luYyBjbGVhcihlLHM9e30pe2U9bm9ybWFsaXplQmFzZUtleShlKSxhd2FpdCBQcm9taXNlLmFsbChnZXRNb3VudHMoZSwhMSkubWFwKGFzeW5jIGU9PntpZihlLmRyaXZlci5jbGVhcilyZXR1cm4gYXN5bmNDYWxsKGUuZHJpdmVyLmNsZWFyLGUucmVsYXRpdmVCYXNlLHMpO2lmKGUuZHJpdmVyLnJlbW92ZUl0ZW0pe2NvbnN0IGQ9YXdhaXQgZS5kcml2ZXIuZ2V0S2V5cyhlLnJlbGF0aXZlQmFzZXx8IiIscyk7cmV0dXJuIFByb21pc2UuYWxsKGQubWFwKGQ9PmUuZHJpdmVyLnJlbW92ZUl0ZW0oZCxzKSkpfX0pKX0sYXN5bmMgZGlzcG9zZSgpe2F3YWl0IFByb21pc2UuYWxsKE9iamVjdC52YWx1ZXMocy5tb3VudHMpLm1hcChlPT5kaXNwb3NlKGUpKSl9LHdhdGNoOmFzeW5jIGU9Pihhd2FpdChhc3luYygpPT57aWYoIXMud2F0Y2hpbmcpe3Mud2F0Y2hpbmc9ITA7Zm9yKGNvbnN0IGUgaW4gcy5tb3VudHMpcy51bndhdGNoW2VdPWF3YWl0IHdhdGNoKHMubW91bnRzW2VdLG9uQ2hhbmdlLGUpfX0pKCkscy53YXRjaExpc3RlbmVycy5wdXNoKGUpLGFzeW5jKCk9PntzLndhdGNoTGlzdGVuZXJzPXMud2F0Y2hMaXN0ZW5lcnMuZmlsdGVyKHM9PnMhPT1lKSwwPT09cy53YXRjaExpc3RlbmVycy5sZW5ndGgmJmF3YWl0IHN0b3BXYXRjaCgpfSksYXN5bmMgdW53YXRjaCgpe3Mud2F0Y2hMaXN0ZW5lcnM9W10sYXdhaXQgc3RvcFdhdGNoKCl9LG1vdW50KGUsbSl7aWYoKGU9bm9ybWFsaXplQmFzZUtleShlKSkmJnMubW91bnRzW2VdKXRocm93IG5ldyBFcnJvcihgYWxyZWFkeSBtb3VudGVkIGF0ICR7ZX1gKTtyZXR1cm4gZSYmKHMubW91bnRwb2ludHMucHVzaChlKSxzLm1vdW50cG9pbnRzLnNvcnQoKGUscyk9PnMubGVuZ3RoLWUubGVuZ3RoKSkscy5tb3VudHNbZV09bSxzLndhdGNoaW5nJiZQcm9taXNlLnJlc29sdmUod2F0Y2gobSxvbkNoYW5nZSxlKSkudGhlbihkPT57cy51bndhdGNoW2VdPWR9KS5jYXRjaChjb25zb2xlLmVycm9yKSxkfSxhc3luYyB1bm1vdW50KGUsZD0hMCl7KGU9bm9ybWFsaXplQmFzZUtleShlKSkmJnMubW91bnRzW2VdJiYocy53YXRjaGluZyYmZSBpbiBzLnVud2F0Y2gmJihzLnVud2F0Y2hbZV0/LigpLGRlbGV0ZSBzLnVud2F0Y2hbZV0pLGQmJmF3YWl0IGRpc3Bvc2Uocy5tb3VudHNbZV0pLHMubW91bnRwb2ludHM9cy5tb3VudHBvaW50cy5maWx0ZXIocz0+cyE9PWUpLGRlbGV0ZSBzLm1vdW50c1tlXSl9LGdldE1vdW50KGU9IiIpe2U9bm9ybWFsaXplS2V5JDIoZSkrIjoiO2NvbnN0IHM9Z2V0TW91bnQoZSk7cmV0dXJue2RyaXZlcjpzLmRyaXZlcixiYXNlOnMuYmFzZX19LGdldE1vdW50cyhlPSIiLHM9e30pe2U9bm9ybWFsaXplS2V5JDIoZSk7cmV0dXJuIGdldE1vdW50cyhlLHMucGFyZW50cykubWFwKGU9Pih7ZHJpdmVyOmUuZHJpdmVyLGJhc2U6ZS5tb3VudHBvaW50fSkpfSxrZXlzOihlLHM9e30pPT5kLmdldEtleXMoZSxzKSxnZXQ6KGUscz17fSk9PmQuZ2V0SXRlbShlLHMpLHNldDooZSxzLG09e30pPT5kLnNldEl0ZW0oZSxzLG0pLGhhczooZSxzPXt9KT0+ZC5oYXNJdGVtKGUscyksZGVsOihlLHM9e30pPT5kLnJlbW92ZUl0ZW0oZSxzKSxyZW1vdmU6KGUscz17fSk9PmQucmVtb3ZlSXRlbShlLHMpfTtyZXR1cm4gZH1mdW5jdGlvbiB3YXRjaChlLHMsZCl7cmV0dXJuIGUud2F0Y2g/ZS53YXRjaCgoZSxtKT0+cyhlLGQrbSkpOigpPT57fX1hc3luYyBmdW5jdGlvbiBkaXNwb3NlKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLmRpc3Bvc2UmJmF3YWl0IGFzeW5jQ2FsbChlLmRpc3Bvc2UpfWNvbnN0IGFpPXt9LG5vcm1hbGl6ZUtleSQxPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLnNwbGl0KCI/IilbMF0/LnJlcGxhY2UoL1svXFxdL2csIjoiKS5yZXBsYWNlKC86Ky9nLCI6IikucmVwbGFjZSgvXjp8OiQvZywiIil8fCIifSxzaT17Z2V0S2V5czooKT0+UHJvbWlzZS5yZXNvbHZlKE9iamVjdC5rZXlzKGFpKSksaGFzSXRlbTplPT4oZT1ub3JtYWxpemVLZXkkMShlKSxQcm9taXNlLnJlc29sdmUoZSBpbiBhaSkpLGdldEl0ZW06ZT0+KGU9bm9ybWFsaXplS2V5JDEoZSksUHJvbWlzZS5yZXNvbHZlKGFpW2VdP2FpW2VdLmltcG9ydCgpOm51bGwpKSxnZXRNZXRhOmU9PihlPW5vcm1hbGl6ZUtleSQxKGUpLFByb21pc2UucmVzb2x2ZShhaVtlXT9haVtlXS5tZXRhOnt9KSl9O2Z1bmN0aW9uIGNyZWF0ZUVycm9yKGUscyxkKXtjb25zdCBtPW5ldyBFcnJvcihgW3Vuc3RvcmFnZV0gWyR7ZX1dICR7c31gLGQpO3JldHVybiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UobSxjcmVhdGVFcnJvciksbX1mdW5jdGlvbiBnZXRLVkJpbmRpbmcoZT0iU1RPUkFHRSIpe3JldHVybiBmdW5jdGlvbihlKXtsZXQgcz0iW2JpbmRpbmddIjtpZigic3RyaW5nIj09dHlwZW9mIGUmJihzPWUsZT1nbG9iYWxUaGlzW3NdfHxnbG9iYWxUaGlzLl9fZW52X18/LltzXSksIWUpdGhyb3cgY3JlYXRlRXJyb3IoImNsb3VkZmxhcmUiLGBJbnZhbGlkIGJpbmRpbmcgXGAke3N9XGA6IFxgJHtlfVxgYCk7Zm9yKGNvbnN0IGQgb2ZbImdldCIsInB1dCIsImRlbGV0ZSJdKWlmKCEoZCBpbiBlKSl0aHJvdyBjcmVhdGVFcnJvcigiY2xvdWRmbGFyZSIsYEludmFsaWQgYmluZGluZyBcYCR7c31cYDogXGAke2R9XGAga2V5IGlzIG1pc3NpbmdgKTtyZXR1cm4gZX0oZSl9Y29uc3QgZHJpdmVyPWU9Pntjb25zdCByPShzPSIiKT0+ZS5iYXNlP2Z1bmN0aW9uKC4uLmUpe3JldHVybiBlLm1hcChlPT5mdW5jdGlvbihlLHM9IjoiKXtyZXR1cm4gZT9lLnJlcGxhY2UoL1s6L1xcXS9nLHMpLnJlcGxhY2UoL15bOi9cXF18WzovXFxdJC9nLCIiKToiIn0oZSkpLmZpbHRlcihCb29sZWFuKS5qb2luKCI6Iil9KGUuYmFzZSxzKTpzO2FzeW5jIGZ1bmN0aW9uIGdldEtleXMocz0iIil7cz1yKHMpO2NvbnN0IGQ9Z2V0S1ZCaW5kaW5nKGUuYmluZGluZyksbT1bXTtsZXQgaDtkb3tjb25zdCBlPWF3YWl0IGQubGlzdCh7cHJlZml4OnN8fHZvaWQgMCxjdXJzb3I6aH0pO20ucHVzaCguLi5lLmtleXMpLGg9ZS5saXN0X2NvbXBsZXRlP3ZvaWQgMDplLmN1cnNvcn13aGlsZShoKTtyZXR1cm4gbS5tYXAoZT0+ZS5uYW1lKX1yZXR1cm57bmFtZToiY2xvdWRmbGFyZS1rdi1iaW5kaW5nIixvcHRpb25zOmUsZ2V0SW5zdGFuY2U6KCk9PmdldEtWQmluZGluZyhlLmJpbmRpbmcpLGFzeW5jIGhhc0l0ZW0ocyl7cz1yKHMpO2NvbnN0IGQ9Z2V0S1ZCaW5kaW5nKGUuYmluZGluZyk7cmV0dXJuIG51bGwhPT1hd2FpdCBkLmdldChzKX0sZ2V0SXRlbShzKXtzPXIocyk7cmV0dXJuIGdldEtWQmluZGluZyhlLmJpbmRpbmcpLmdldChzKX0sc2V0SXRlbShzLGQsbSl7cz1yKHMpO3JldHVybiBnZXRLVkJpbmRpbmcoZS5iaW5kaW5nKS5wdXQocyxkLG0/e2V4cGlyYXRpb25UdGw6bT8udHRsP01hdGgubWF4KG0udHRsLGUubWluVFRMPz82MCk6dm9pZCAwLC4uLm19OnZvaWQgMCl9LHJlbW92ZUl0ZW0ocyl7cz1yKHMpO3JldHVybiBnZXRLVkJpbmRpbmcoZS5iaW5kaW5nKS5kZWxldGUocyl9LGdldEtleXM6cz0+Z2V0S2V5cyhzKS50aGVuKHM9PnMubWFwKHM9PmUuYmFzZT9zLnNsaWNlKGUuYmFzZS5sZW5ndGgpOnMpKSxhc3luYyBjbGVhcihzKXtjb25zdCBkPWdldEtWQmluZGluZyhlLmJpbmRpbmcpLG09YXdhaXQgZ2V0S2V5cyhzKTthd2FpdCBQcm9taXNlLmFsbChtLm1hcChlPT5kLmRlbGV0ZShlKSkpfX19LGxpPWdsb2JhbFRoaXMucGVyZm9ybWFuY2U/LnRpbWVPcmlnaW4/P0RhdGUubm93KCksY2k9Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZT8ubm93P2dsb2JhbFRoaXMucGVyZm9ybWFuY2Uubm93LmJpbmQoZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZSk6KCk9PkRhdGUubm93KCktbGksdWk9WyJldmVudCIsIm1hcmsiLCJtZWFzdXJlIiwicmVzb3VyY2UiXTtjbGFzcyBfUGVyZm9ybWFuY2VFbnRyeXtfX3VuZW52X189ITA7ZGV0YWlsO2VudHJ5VHlwZT0iZXZlbnQiO25hbWU7c3RhcnRUaW1lO2NvbnN0cnVjdG9yKGUscyl7dGhpcy5uYW1lPWUsdGhpcy5zdGFydFRpbWU9cz8uc3RhcnRUaW1lfHxjaSgpLHRoaXMuZGV0YWlsPXM/LmRldGFpbH1nZXQgZHVyYXRpb24oKXtyZXR1cm4gY2koKS10aGlzLnN0YXJ0VGltZX10b0pTT04oKXtyZXR1cm57bmFtZTp0aGlzLm5hbWUsZW50cnlUeXBlOnRoaXMuZW50cnlUeXBlLHN0YXJ0VGltZTp0aGlzLnN0YXJ0VGltZSxkdXJhdGlvbjp0aGlzLmR1cmF0aW9uLGRldGFpbDp0aGlzLmRldGFpbH19fWNsYXNzIF9QZXJmb3JtYW5jZU1hcmsgZXh0ZW5kcyBfUGVyZm9ybWFuY2VFbnRyeXtlbnRyeVR5cGU9Im1hcmsifWNsYXNzIF9QZXJmb3JtYW5jZU1lYXN1cmUgZXh0ZW5kcyBfUGVyZm9ybWFuY2VFbnRyeXtlbnRyeVR5cGU9Im1lYXN1cmUifWNsYXNzIF9QZXJmb3JtYW5jZXtfX3VuZW52X189ITA7dGltZU9yaWdpbj1saTtldmVudENvdW50cz1uZXcgTWFwO19lbnRyaWVzPVtdO19yZXNvdXJjZVRpbWluZ0J1ZmZlclNpemU9MDtuYXZpZ2F0aW9uPXZvaWQgMDt0aW1pbmc9dm9pZCAwO29ucmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsPW51bGw7bm93KCl7cmV0dXJuIHRoaXMudGltZU9yaWdpbj09PWxpP2NpKCk6RGF0ZS5ub3coKS10aGlzLnRpbWVPcmlnaW59Y2xlYXJNYXJrcyhlKXt0aGlzLl9lbnRyaWVzPWU/dGhpcy5fZW50cmllcy5maWx0ZXIocz0+cy5uYW1lIT09ZSk6dGhpcy5fZW50cmllcy5maWx0ZXIoZT0+Im1hcmsiIT09ZS5lbnRyeVR5cGUpfWNsZWFyTWVhc3VyZXMoZSl7dGhpcy5fZW50cmllcz1lP3RoaXMuX2VudHJpZXMuZmlsdGVyKHM9PnMubmFtZSE9PWUpOnRoaXMuX2VudHJpZXMuZmlsdGVyKGU9PiJtZWFzdXJlIiE9PWUuZW50cnlUeXBlKX1jbGVhclJlc291cmNlVGltaW5ncygpe3RoaXMuX2VudHJpZXM9dGhpcy5fZW50cmllcy5maWx0ZXIoZT0+InJlc291cmNlIiE9PWUuZW50cnlUeXBlfHwibmF2aWdhdGlvbiIhPT1lLmVudHJ5VHlwZSl9Z2V0RW50cmllcygpe3JldHVybiB0aGlzLl9lbnRyaWVzfWdldEVudHJpZXNCeU5hbWUoZSxzKXtyZXR1cm4gdGhpcy5fZW50cmllcy5maWx0ZXIoZD0+ZC5uYW1lPT09ZSYmKCFzfHxkLmVudHJ5VHlwZT09PXMpKX1nZXRFbnRyaWVzQnlUeXBlKGUpe3JldHVybiB0aGlzLl9lbnRyaWVzLmZpbHRlcihzPT5zLmVudHJ5VHlwZT09PWUpfW1hcmsoZSxzKXtjb25zdCBkPW5ldyBfUGVyZm9ybWFuY2VNYXJrKGUscyk7cmV0dXJuIHRoaXMuX2VudHJpZXMucHVzaChkKSxkfW1lYXN1cmUoZSxzLGQpe2xldCBtLGg7InN0cmluZyI9PXR5cGVvZiBzPyhtPXRoaXMuZ2V0RW50cmllc0J5TmFtZShzLCJtYXJrIilbMF0/LnN0YXJ0VGltZSxoPXRoaXMuZ2V0RW50cmllc0J5TmFtZShkLCJtYXJrIilbMF0/LnN0YXJ0VGltZSk6KG09TnVtYmVyLnBhcnNlRmxvYXQocz8uc3RhcnQpfHx0aGlzLm5vdygpLGg9TnVtYmVyLnBhcnNlRmxvYXQocz8uZW5kKXx8dGhpcy5ub3coKSk7Y29uc3QgZz1uZXcgX1BlcmZvcm1hbmNlTWVhc3VyZShlLHtzdGFydFRpbWU6bSxkZXRhaWw6e3N0YXJ0Om0sZW5kOmh9fSk7cmV0dXJuIHRoaXMuX2VudHJpZXMucHVzaChnKSxnfXNldFJlc291cmNlVGltaW5nQnVmZmVyU2l6ZShlKXt0aGlzLl9yZXNvdXJjZVRpbWluZ0J1ZmZlclNpemU9ZX10b0pTT04oKXtyZXR1cm4gdGhpc31hZGRFdmVudExpc3RlbmVyKGUscyxkKXt0aHJvdyBjcmVhdGVOb3RJbXBsZW1lbnRlZEVycm9yKCJQZXJmb3JtYW5jZS5hZGRFdmVudExpc3RlbmVyIil9cmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHMsZCl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigiUGVyZm9ybWFuY2UucmVtb3ZlRXZlbnRMaXN0ZW5lciIpfWRpc3BhdGNoRXZlbnQoZSl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigiUGVyZm9ybWFuY2UuZGlzcGF0Y2hFdmVudCIpfX1jb25zdCBkaT1nbG9iYWxUaGlzLlBlcmZvcm1hbmNlRW50cnl8fF9QZXJmb3JtYW5jZUVudHJ5LHBpPWdsb2JhbFRoaXMuUGVyZm9ybWFuY2VNYXJrfHxfUGVyZm9ybWFuY2VNYXJrLG1pPWdsb2JhbFRoaXMuUGVyZm9ybWFuY2VNZWFzdXJlfHxfUGVyZm9ybWFuY2VNZWFzdXJlLGZpPWdsb2JhbFRoaXMuUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZ3x8Y2xhc3MgZXh0ZW5kcyBfUGVyZm9ybWFuY2VFbnRyeXtlbnRyeVR5cGU9InJlc291cmNlIjtzZXJ2ZXJUaW1pbmc9W107Y29ubmVjdEVuZD0wO2Nvbm5lY3RTdGFydD0wO2RlY29kZWRCb2R5U2l6ZT0wO2RvbWFpbkxvb2t1cEVuZD0wO2RvbWFpbkxvb2t1cFN0YXJ0PTA7ZW5jb2RlZEJvZHlTaXplPTA7ZmV0Y2hTdGFydD0wO2luaXRpYXRvclR5cGU9IiI7bmFtZT0iIjtuZXh0SG9wUHJvdG9jb2w9IiI7cmVkaXJlY3RFbmQ9MDtyZWRpcmVjdFN0YXJ0PTA7cmVxdWVzdFN0YXJ0PTA7cmVzcG9uc2VFbmQ9MDtyZXNwb25zZVN0YXJ0PTA7c2VjdXJlQ29ubmVjdGlvblN0YXJ0PTA7c3RhcnRUaW1lPTA7dHJhbnNmZXJTaXplPTA7d29ya2VyU3RhcnQ9MDtyZXNwb25zZVN0YXR1cz0wfSxoaT1nbG9iYWxUaGlzLlBlcmZvcm1hbmNlT2JzZXJ2ZXJ8fGNsYXNze19fdW5lbnZfXz0hMDtzdGF0aWMgc3VwcG9ydGVkRW50cnlUeXBlcz11aTtfY2FsbGJhY2s9bnVsbDtjb25zdHJ1Y3RvcihlKXt0aGlzLl9jYWxsYmFjaz1lfXRha2VSZWNvcmRzKCl7cmV0dXJuW119ZGlzY29ubmVjdCgpe3Rocm93IGNyZWF0ZU5vdEltcGxlbWVudGVkRXJyb3IoIlBlcmZvcm1hbmNlT2JzZXJ2ZXIuZGlzY29ubmVjdCIpfW9ic2VydmUoZSl7dGhyb3cgY3JlYXRlTm90SW1wbGVtZW50ZWRFcnJvcigiUGVyZm9ybWFuY2VPYnNlcnZlci5vYnNlcnZlIil9fSxnaT1nbG9iYWxUaGlzLlBlcmZvcm1hbmNlfHxfUGVyZm9ybWFuY2Usdmk9Z2xvYmFsVGhpcy5QZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0fHxjbGFzc3tfX3VuZW52X189ITA7Z2V0RW50cmllcygpe3JldHVybltdfWdldEVudHJpZXNCeU5hbWUoZSxzKXtyZXR1cm5bXX1nZXRFbnRyaWVzQnlUeXBlKGUpe3JldHVybltdfX0seWk9Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZSYmImFkZEV2ZW50TGlzdGVuZXIiaW4gZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZT9nbG9iYWxUaGlzLnBlcmZvcm1hbmNlOm5ldyBfUGVyZm9ybWFuY2U7Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZXx8PXlpLGdsb2JhbFRoaXMuUGVyZm9ybWFuY2V8fD1naSxnbG9iYWxUaGlzLlBlcmZvcm1hbmNlRW50cnl8fD1kaSxnbG9iYWxUaGlzLlBlcmZvcm1hbmNlTWFya3x8PXBpLGdsb2JhbFRoaXMuUGVyZm9ybWFuY2VNZWFzdXJlfHw9bWksZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZU9ic2VydmVyfHw9aGksZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0fHw9dmksZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nfHw9Zmk7Y29uc3QgYmk9Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZTt2YXIgX2k9Im9iamVjdCI9PXR5cGVvZiBiaSYmYmkmJiJmdW5jdGlvbiI9PXR5cGVvZiBiaS5ub3c/Ymk6RGF0ZSx4aT1uZXcgU2V0LHdpPSJvYmplY3QiPT10eXBlb2YgVCYmVD9UOnt9LFUkMz0oZSxzLGQsbSk9PnsiZnVuY3Rpb24iPT10eXBlb2Ygd2kuZW1pdFdhcm5pbmc/d2kuZW1pdFdhcm5pbmcoZSxzLGQsbSk6Y29uc29sZS5lcnJvcihgWyR7ZH1dICR7c306ICR7ZX1gKX0sJGk9Z2xvYmFsVGhpcy5BYm9ydENvbnRyb2xsZXIsU2k9Z2xvYmFsVGhpcy5BYm9ydFNpZ25hbDtpZih0eXBlb2YgJGk+InUiKXtTaT1jbGFzc3tvbmFib3J0O19vbmFib3J0PVtdO3JlYXNvbjthYm9ydGVkPSExO2FkZEV2ZW50TGlzdGVuZXIoZSxzKXt0aGlzLl9vbmFib3J0LnB1c2gocyl9fSwkaT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3QoKX1zaWduYWw9bmV3IFNpO2Fib3J0KGUpe2lmKCF0aGlzLnNpZ25hbC5hYm9ydGVkKXt0aGlzLnNpZ25hbC5yZWFzb249ZSx0aGlzLnNpZ25hbC5hYm9ydGVkPSEwO2ZvcihsZXQgcyBvZiB0aGlzLnNpZ25hbC5fb25hYm9ydClzKGUpO3RoaXMuc2lnbmFsLm9uYWJvcnQ/LihlKX19fTtsZXQgZT0iMSIhPT13aS5lbnY/LkxSVV9DQUNIRV9JR05PUkVfQUNfV0FSTklORyx0PSgpPT57ZSYmKGU9ITEsVSQzKCJBYm9ydENvbnRyb2xsZXIgaXMgbm90IGRlZmluZWQuIElmIHVzaW5nIGxydS1jYWNoZSBpbiBub2RlIDE0LCBsb2FkIGFuIEFib3J0Q29udHJvbGxlciBwb2x5ZmlsbCBmcm9tIHRoZSBgbm9kZS1hYm9ydC1jb250cm9sbGVyYCBwYWNrYWdlLiBBIG1pbmltYWwgcG9seWZpbGwgaXMgcHJvdmlkZWQgZm9yIHVzZSBieSBMUlVDYWNoZS5mZXRjaCgpLCBidXQgaXQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiBpbiBvdGhlciBjb250ZXh0cyAoZWcsIHBhc3NpbmcgaXQgdG8gb3RoZXIgQVBJcyB0aGF0IHVzZSBBYm9ydENvbnRyb2xsZXIvQWJvcnRTaWduYWwgbWlnaHQgaGF2ZSB1bmRlc2lyYWJsZSBlZmZlY3RzKS4gWW91IG1heSBkaXNhYmxlIHRoaXMgd2l0aCBMUlVfQ0FDSEVfSUdOT1JFX0FDX1dBUk5JTkc9MSBpbiB0aGUgZW52LiIsIk5PX0FCT1JUX0NPTlRST0xMRVIiLCJFTk9UU1VQIix0KSl9fXZhciB5JDM9ZT0+ZSYmZT09PU1hdGguZmxvb3IoZSkmJmU+MCYmaXNGaW5pdGUoZSksTSQzPWU9PnkkMyhlKT9lPD1NYXRoLnBvdygyLDgpP1VpbnQ4QXJyYXk6ZTw9TWF0aC5wb3coMiwxNik/VWludDE2QXJyYXk6ZTw9TWF0aC5wb3coMiwzMik/VWludDMyQXJyYXk6ZTw9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/a2k6bnVsbDpudWxsLGtpPWNsYXNzIGV4dGVuZHMgQXJyYXl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5maWxsKDApfX0samk9Y2xhc3MgY3toZWFwO2xlbmd0aDtzdGF0aWMjcj0hMTtzdGF0aWMgY3JlYXRlKGUpe2xldCBzPU0kMyhlKTtpZighcylyZXR1cm5bXTtjLiNyPSEwO2xldCBkPW5ldyBjKGUscyk7cmV0dXJuIGMuI3I9ITEsZH1jb25zdHJ1Y3RvcihlLHMpe2lmKCFjLiNyKXRocm93IG5ldyBUeXBlRXJyb3IoImluc3RhbnRpYXRlIFN0YWNrIHVzaW5nIFN0YWNrLmNyZWF0ZShuKSIpO3RoaXMuaGVhcD1uZXcgcyhlKSx0aGlzLmxlbmd0aD0wfXB1c2goZSl7dGhpcy5oZWFwW3RoaXMubGVuZ3RoKytdPWV9cG9wKCl7cmV0dXJuIHRoaXMuaGVhcFstLXRoaXMubGVuZ3RoXX19LHppPWNsYXNzIGN7I3I7I287I2E7I3M7I2w7I2M7I3U7I2Q7Z2V0IHBlcmYoKXtyZXR1cm4gdGhpcy4jZH10dGw7dHRsUmVzb2x1dGlvbjt0dGxBdXRvcHVyZ2U7dXBkYXRlQWdlT25HZXQ7dXBkYXRlQWdlT25IYXM7YWxsb3dTdGFsZTtub0Rpc3Bvc2VPblNldDtub1VwZGF0ZVRUTDttYXhFbnRyeVNpemU7c2l6ZUNhbGN1bGF0aW9uO25vRGVsZXRlT25GZXRjaFJlamVjdGlvbjtub0RlbGV0ZU9uU3RhbGVHZXQ7YWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDthbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbjtpZ25vcmVGZXRjaEFib3J0OyNwOyNtOyNmOyNoOyNnOyN2OyN5OyNiOyNfOyN4OyN3OyMkOyNTOyNrOyNqOyN6OyNJOyNDOyNUO3N0YXRpYyB1bnNhZmVFeHBvc2VJbnRlcm5hbHMoZSl7cmV0dXJue3N0YXJ0czplLiNTLHR0bHM6ZS4jayxhdXRvcHVyZ2VUaW1lcnM6ZS4jaixzaXplczplLiMkLGtleU1hcDplLiNmLGtleUxpc3Q6ZS4jaCx2YWxMaXN0OmUuI2csbmV4dDplLiN2LHByZXY6ZS4jeSxnZXQgaGVhZCgpe3JldHVybiBlLiNifSxnZXQgdGFpbCgpe3JldHVybiBlLiNffSxmcmVlOmUuI3gsaXNCYWNrZ3JvdW5kRmV0Y2g6cz0+ZS4jUihzKSxiYWNrZ3JvdW5kRmV0Y2g6KHMsZCxtLGgpPT5lLiNFKHMsZCxtLGgpLG1vdmVUb1RhaWw6cz0+ZS4jTyhzKSxpbmRleGVzOnM9PmUuI1AocykscmluZGV4ZXM6cz0+ZS4jTihzKSxpc1N0YWxlOnM9PmUuI0Qocyl9fWdldCBtYXgoKXtyZXR1cm4gdGhpcy4jcn1nZXQgbWF4U2l6ZSgpe3JldHVybiB0aGlzLiNvfWdldCBjYWxjdWxhdGVkU2l6ZSgpe3JldHVybiB0aGlzLiNtfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuI3B9Z2V0IGZldGNoTWV0aG9kKCl7cmV0dXJuIHRoaXMuI2N9Z2V0IG1lbW9NZXRob2QoKXtyZXR1cm4gdGhpcy4jdX1nZXQgZGlzcG9zZSgpe3JldHVybiB0aGlzLiNhfWdldCBvbkluc2VydCgpe3JldHVybiB0aGlzLiNzfWdldCBkaXNwb3NlQWZ0ZXIoKXtyZXR1cm4gdGhpcy4jbH1jb25zdHJ1Y3RvcihlKXtsZXR7bWF4OnM9MCx0dGw6ZCx0dGxSZXNvbHV0aW9uOm09MSx0dGxBdXRvcHVyZ2U6aCx1cGRhdGVBZ2VPbkdldDpnLHVwZGF0ZUFnZU9uSGFzOngsYWxsb3dTdGFsZTokLGRpc3Bvc2U6Uyxvbkluc2VydDpqLGRpc3Bvc2VBZnRlcjp6LG5vRGlzcG9zZU9uU2V0Okksbm9VcGRhdGVUVEw6VCxtYXhTaXplOlI9MCxtYXhFbnRyeVNpemU6RT0wLHNpemVDYWxjdWxhdGlvbjpPLGZldGNoTWV0aG9kOk4sbWVtb01ldGhvZDpVLG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjpCLG5vRGVsZXRlT25TdGFsZUdldDpWLGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uOkgsYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpLLGlnbm9yZUZldGNoQWJvcnQ6ZWUscGVyZjp0ZX09ZTtpZih2b2lkIDAhPT10ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIHRlPy5ub3cpdGhyb3cgbmV3IFR5cGVFcnJvcigicGVyZiBvcHRpb24gbXVzdCBoYXZlIGEgbm93KCkgbWV0aG9kIGlmIHNwZWNpZmllZCIpO2lmKHRoaXMuI2Q9dGU/P19pLDAhPT1zJiYheSQzKHMpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1heCBvcHRpb24gbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiKTtsZXQgaWU9cz9NJDMocyk6QXJyYXk7aWYoIWllKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBtYXggdmFsdWU6ICIrcyk7aWYodGhpcy4jcj1zLHRoaXMuI289Uix0aGlzLm1heEVudHJ5U2l6ZT1FfHx0aGlzLiNvLHRoaXMuc2l6ZUNhbGN1bGF0aW9uPU8sdGhpcy5zaXplQ2FsY3VsYXRpb24pe2lmKCF0aGlzLiNvJiYhdGhpcy5tYXhFbnRyeVNpemUpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2Fubm90IHNldCBzaXplQ2FsY3VsYXRpb24gd2l0aG91dCBzZXR0aW5nIG1heFNpemUgb3IgbWF4RW50cnlTaXplIik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuc2l6ZUNhbGN1bGF0aW9uKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemVDYWxjdWxhdGlvbiBzZXQgdG8gbm9uLWZ1bmN0aW9uIil9aWYodm9pZCAwIT09VSYmImZ1bmN0aW9uIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigibWVtb01ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgZGVmaW5lZCIpO2lmKHRoaXMuI3U9VSx2b2lkIDAhPT1OJiYiZnVuY3Rpb24iIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJmZXRjaE1ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgc3BlY2lmaWVkIik7aWYodGhpcy4jYz1OLHRoaXMuI0k9ISFOLHRoaXMuI2Y9bmV3IE1hcCx0aGlzLiNoPW5ldyBBcnJheShzKS5maWxsKHZvaWQgMCksdGhpcy4jZz1uZXcgQXJyYXkocykuZmlsbCh2b2lkIDApLHRoaXMuI3Y9bmV3IGllKHMpLHRoaXMuI3k9bmV3IGllKHMpLHRoaXMuI2I9MCx0aGlzLiNfPTAsdGhpcy4jeD1qaS5jcmVhdGUocyksdGhpcy4jcD0wLHRoaXMuI209MCwiZnVuY3Rpb24iPT10eXBlb2YgUyYmKHRoaXMuI2E9UyksImZ1bmN0aW9uIj09dHlwZW9mIGomJih0aGlzLiNzPWopLCJmdW5jdGlvbiI9PXR5cGVvZiB6Pyh0aGlzLiNsPXosdGhpcy4jdz1bXSk6KHRoaXMuI2w9dm9pZCAwLHRoaXMuI3c9dm9pZCAwKSx0aGlzLiN6PSEhdGhpcy4jYSx0aGlzLiNUPSEhdGhpcy4jcyx0aGlzLiNDPSEhdGhpcy4jbCx0aGlzLm5vRGlzcG9zZU9uU2V0PSEhSSx0aGlzLm5vVXBkYXRlVFRMPSEhVCx0aGlzLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbj0hIUIsdGhpcy5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbj0hIUgsdGhpcy5hbGxvd1N0YWxlT25GZXRjaEFib3J0PSEhSyx0aGlzLmlnbm9yZUZldGNoQWJvcnQ9ISFlZSwwIT09dGhpcy5tYXhFbnRyeVNpemUpe2lmKDAhPT10aGlzLiNvJiYheSQzKHRoaXMuI28pKXRocm93IG5ldyBUeXBlRXJyb3IoIm1heFNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgaWYgc3BlY2lmaWVkIik7aWYoIXkkMyh0aGlzLm1heEVudHJ5U2l6ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4RW50cnlTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZCIpO3RoaXMuI1UoKX1pZih0aGlzLmFsbG93U3RhbGU9ISEkLHRoaXMubm9EZWxldGVPblN0YWxlR2V0PSEhVix0aGlzLnVwZGF0ZUFnZU9uR2V0PSEhZyx0aGlzLnVwZGF0ZUFnZU9uSGFzPSEheCx0aGlzLnR0bFJlc29sdXRpb249eSQzKG0pfHwwPT09bT9tOjEsdGhpcy50dGxBdXRvcHVyZ2U9ISFoLHRoaXMudHRsPWR8fDAsdGhpcy50dGwpe2lmKCF5JDModGhpcy50dGwpKXRocm93IG5ldyBUeXBlRXJyb3IoInR0bCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWQiKTt0aGlzLiNMKCl9aWYoMD09PXRoaXMuI3ImJjA9PT10aGlzLnR0bCYmMD09PXRoaXMuI28pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXQgbGVhc3Qgb25lIG9mIG1heCwgbWF4U2l6ZSwgb3IgdHRsIGlzIHJlcXVpcmVkIik7aWYoIXRoaXMudHRsQXV0b3B1cmdlJiYhdGhpcy4jciYmIXRoaXMuI28pe2xldCBlPSJMUlVfQ0FDSEVfVU5CT1VOREVEIjsoZT0+IXhpLmhhcyhlKSkoZSkmJih4aS5hZGQoZSksVSQzKCJUVEwgY2FjaGluZyB3aXRob3V0IHR0bEF1dG9wdXJnZSwgbWF4LCBvciBtYXhTaXplIGNhbiByZXN1bHQgaW4gdW5ib3VuZGVkIG1lbW9yeSBjb25zdW1wdGlvbi4iLCJVbmJvdW5kZWRDYWNoZVdhcm5pbmciLGUsYykpfX1nZXRSZW1haW5pbmdUVEwoZSl7cmV0dXJuIHRoaXMuI2YuaGFzKGUpPzEvMDowfSNMKCl7bGV0IGU9bmV3IGtpKHRoaXMuI3IpLHM9bmV3IGtpKHRoaXMuI3IpO3RoaXMuI2s9ZSx0aGlzLiNTPXM7bGV0IGQ9dGhpcy50dGxBdXRvcHVyZ2U/bmV3IEFycmF5KHRoaXMuI3IpOnZvaWQgMDt0aGlzLiNqPWQsdGhpcy4jQT0oZCxoLGc9dGhpcy4jZC5ub3coKSk9PntzW2RdPTAhPT1oP2c6MCxlW2RdPWgsbShkLGgpfSx0aGlzLiNxPWQ9PntzW2RdPTAhPT1lW2RdP3RoaXMuI2Qubm93KCk6MCxtKGQsZVtkXSl9O2xldCBtPXRoaXMudHRsQXV0b3B1cmdlPyhlLHMpPT57aWYoZD8uW2VdJiYoY2xlYXJUaW1lb3V0KGRbZV0pLGRbZV09dm9pZCAwKSxzJiYwIT09cyYmZCl7bGV0IG09c2V0VGltZW91dCgoKT0+e3RoaXMuI0QoZSkmJnRoaXMuI0YodGhpcy4jaFtlXSwiZXhwaXJlIil9LHMrMSk7bS51bnJlZiYmbS51bnJlZigpLGRbZV09bX19OigpPT57fTt0aGlzLiNCPShkLG0pPT57aWYoZVttXSl7bGV0IGc9ZVttXSx4PXNbbV07aWYoIWd8fCF4KXJldHVybjtkLnR0bD1nLGQuc3RhcnQ9eCxkLm5vdz1ofHxvKCk7bGV0ICQ9ZC5ub3cteDtkLnJlbWFpbmluZ1RUTD1nLSR9fTtsZXQgaD0wLG89KCk9PntsZXQgZT10aGlzLiNkLm5vdygpO2lmKHRoaXMudHRsUmVzb2x1dGlvbj4wKXtoPWU7bGV0IHM9c2V0VGltZW91dCgoKT0+aD0wLHRoaXMudHRsUmVzb2x1dGlvbik7cy51bnJlZiYmcy51bnJlZigpfXJldHVybiBlfTt0aGlzLmdldFJlbWFpbmluZ1RUTD1kPT57bGV0IG09dGhpcy4jZi5nZXQoZCk7aWYodm9pZCAwPT09bSlyZXR1cm4gMDtsZXQgZz1lW21dLHg9c1ttXTtyZXR1cm4gZyYmeD9nLSgoaHx8bygpKS14KToxLzB9LHRoaXMuI0Q9ZD0+e2xldCBtPXNbZF0sZz1lW2RdO3JldHVybiEhZyYmISFtJiYoaHx8bygpKS1tPmd9fSNxPSgpPT57fTsjQj0oKT0+e307I0E9KCk9Pnt9OyNEPSgpPT4hMTsjVSgpe2xldCBlPW5ldyBraSh0aGlzLiNyKTt0aGlzLiNtPTAsdGhpcy4jJD1lLHRoaXMuI1o9cz0+e3RoaXMuI20tPWVbc10sZVtzXT0wfSx0aGlzLiNNPShlLHMsZCxtKT0+e2lmKHRoaXMuI1IocykpcmV0dXJuIDA7aWYoIXkkMyhkKSl7aWYoIW0pdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzaXplIHZhbHVlIChtdXN0IGJlIHBvc2l0aXZlIGludGVnZXIpLiBXaGVuIG1heFNpemUgb3IgbWF4RW50cnlTaXplIGlzIHVzZWQsIHNpemVDYWxjdWxhdGlvbiBvciBzaXplIG11c3QgYmUgc2V0LiIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBtKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemVDYWxjdWxhdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTtpZihkPW0ocyxlKSwheSQzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemVDYWxjdWxhdGlvbiByZXR1cm4gaW52YWxpZCAoZXhwZWN0IHBvc2l0aXZlIGludGVnZXIpIil9cmV0dXJuIGR9LHRoaXMuI1E9KHMsZCxtKT0+e2lmKGVbc109ZCx0aGlzLiNvKXtsZXQgZD10aGlzLiNvLWVbc107Zm9yKDt0aGlzLiNtPmQ7KXRoaXMuI1YoITApfXRoaXMuI20rPWVbc10sbSYmKG0uZW50cnlTaXplPWQsbS50b3RhbENhbGN1bGF0ZWRTaXplPXRoaXMuI20pfX0jWj1lPT57fTsjUT0oZSxzLGQpPT57fTsjTT0oZSxzLGQsbSk9PntpZihkfHxtKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbm5vdCBzZXQgc2l6ZSB3aXRob3V0IHNldHRpbmcgbWF4U2l6ZSBvciBtYXhFbnRyeVNpemUgb24gY2FjaGUiKTtyZXR1cm4gMH07KiNQKHthbGxvd1N0YWxlOmU9dGhpcy5hbGxvd1N0YWxlfT17fSl7aWYodGhpcy4jcClmb3IobGV0IHM9dGhpcy4jXzt0aGlzLiNIKHMpJiYoKGV8fCF0aGlzLiNEKHMpKSYmKHlpZWxkIHMpLHMhPT10aGlzLiNiKTspcz10aGlzLiN5W3NdfSojTih7YWxsb3dTdGFsZTplPXRoaXMuYWxsb3dTdGFsZX09e30pe2lmKHRoaXMuI3ApZm9yKGxldCBzPXRoaXMuI2I7dGhpcy4jSChzKSYmKChlfHwhdGhpcy4jRChzKSkmJih5aWVsZCBzKSxzIT09dGhpcy4jXyk7KXM9dGhpcy4jdltzXX0jSChlKXtyZXR1cm4gdm9pZCAwIT09ZSYmdGhpcy4jZi5nZXQodGhpcy4jaFtlXSk9PT1lfSplbnRyaWVzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI1AoKSl2b2lkIDAhPT10aGlzLiNnW2VdJiZ2b2lkIDAhPT10aGlzLiNoW2VdJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkW3RoaXMuI2hbZV0sdGhpcy4jZ1tlXV0pfSpyZW50cmllcygpe2ZvcihsZXQgZSBvZiB0aGlzLiNOKCkpdm9pZCAwIT09dGhpcy4jZ1tlXSYmdm9pZCAwIT09dGhpcy4jaFtlXSYmIXRoaXMuI1IodGhpcy4jZ1tlXSkmJih5aWVsZFt0aGlzLiNoW2VdLHRoaXMuI2dbZV1dKX0qa2V5cygpe2ZvcihsZXQgZSBvZiB0aGlzLiNQKCkpe2xldCBzPXRoaXMuI2hbZV07dm9pZCAwIT09cyYmIXRoaXMuI1IodGhpcy4jZ1tlXSkmJih5aWVsZCBzKX19KnJrZXlzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI04oKSl7bGV0IHM9dGhpcy4jaFtlXTt2b2lkIDAhPT1zJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkIHMpfX0qdmFsdWVzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI1AoKSl2b2lkIDAhPT10aGlzLiNnW2VdJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkIHRoaXMuI2dbZV0pfSpydmFsdWVzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI04oKSl2b2lkIDAhPT10aGlzLiNnW2VdJiYhdGhpcy4jUih0aGlzLiNnW2VdKSYmKHlpZWxkIHRoaXMuI2dbZV0pfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfVtTeW1ib2wudG9TdHJpbmdUYWddPSJMUlVDYWNoZSI7ZmluZChlLHM9e30pe2ZvcihsZXQgZCBvZiB0aGlzLiNQKCkpe2xldCBtPXRoaXMuI2dbZF0saD10aGlzLiNSKG0pP20uX19zdGFsZVdoaWxlRmV0Y2hpbmc6bTtpZih2b2lkIDAhPT1oJiZlKGgsdGhpcy4jaFtkXSx0aGlzKSlyZXR1cm4gdGhpcy5nZXQodGhpcy4jaFtkXSxzKX19Zm9yRWFjaChlLHM9dGhpcyl7Zm9yKGxldCBkIG9mIHRoaXMuI1AoKSl7bGV0IG09dGhpcy4jZ1tkXSxoPXRoaXMuI1IobSk/bS5fX3N0YWxlV2hpbGVGZXRjaGluZzptO3ZvaWQgMCE9PWgmJmUuY2FsbChzLGgsdGhpcy4jaFtkXSx0aGlzKX19cmZvckVhY2goZSxzPXRoaXMpe2ZvcihsZXQgZCBvZiB0aGlzLiNOKCkpe2xldCBtPXRoaXMuI2dbZF0saD10aGlzLiNSKG0pP20uX19zdGFsZVdoaWxlRmV0Y2hpbmc6bTt2b2lkIDAhPT1oJiZlLmNhbGwocyxoLHRoaXMuI2hbZF0sdGhpcyl9fXB1cmdlU3RhbGUoKXtsZXQgZT0hMTtmb3IobGV0IHMgb2YgdGhpcy4jTih7YWxsb3dTdGFsZTohMH0pKXRoaXMuI0QocykmJih0aGlzLiNGKHRoaXMuI2hbc10sImV4cGlyZSIpLGU9ITApO3JldHVybiBlfWluZm8oZSl7bGV0IHM9dGhpcy4jZi5nZXQoZSk7aWYodm9pZCAwPT09cylyZXR1cm47bGV0IGQ9dGhpcy4jZ1tzXSxtPXRoaXMuI1IoZCk/ZC5fX3N0YWxlV2hpbGVGZXRjaGluZzpkO2lmKHZvaWQgMD09PW0pcmV0dXJuO2xldCBoPXt2YWx1ZTptfTtpZih0aGlzLiNrJiZ0aGlzLiNTKXtsZXQgZT10aGlzLiNrW3NdLGQ9dGhpcy4jU1tzXTtpZihlJiZkKXtsZXQgcz1lLSh0aGlzLiNkLm5vdygpLWQpO2gudHRsPXMsaC5zdGFydD1EYXRlLm5vdygpfX1yZXR1cm4gdGhpcy4jJCYmKGguc2l6ZT10aGlzLiMkW3NdKSxofWR1bXAoKXtsZXQgZT1bXTtmb3IobGV0IHMgb2YgdGhpcy4jUCh7YWxsb3dTdGFsZTohMH0pKXtsZXQgZD10aGlzLiNoW3NdLG09dGhpcy4jZ1tzXSxoPXRoaXMuI1IobSk/bS5fX3N0YWxlV2hpbGVGZXRjaGluZzptO2lmKHZvaWQgMD09PWh8fHZvaWQgMD09PWQpY29udGludWU7bGV0IGc9e3ZhbHVlOmh9O2lmKHRoaXMuI2smJnRoaXMuI1Mpe2cudHRsPXRoaXMuI2tbc107bGV0IGU9dGhpcy4jZC5ub3coKS10aGlzLiNTW3NdO2cuc3RhcnQ9TWF0aC5mbG9vcihEYXRlLm5vdygpLWUpfXRoaXMuIyQmJihnLnNpemU9dGhpcy4jJFtzXSksZS51bnNoaWZ0KFtkLGddKX1yZXR1cm4gZX1sb2FkKGUpe3RoaXMuY2xlYXIoKTtmb3IobGV0W3MsZF1vZiBlKXtpZihkLnN0YXJ0KXtsZXQgZT1EYXRlLm5vdygpLWQuc3RhcnQ7ZC5zdGFydD10aGlzLiNkLm5vdygpLWV9dGhpcy5zZXQocyxkLnZhbHVlLGQpfX1zZXQoZSxzLGQ9e30pe2lmKHZvaWQgMD09PXMpcmV0dXJuIHRoaXMuZGVsZXRlKGUpLHRoaXM7bGV0e3R0bDptPXRoaXMudHRsLHN0YXJ0Omgsbm9EaXNwb3NlT25TZXQ6Zz10aGlzLm5vRGlzcG9zZU9uU2V0LHNpemVDYWxjdWxhdGlvbjp4PXRoaXMuc2l6ZUNhbGN1bGF0aW9uLHN0YXR1czokfT1kLHtub1VwZGF0ZVRUTDpTPXRoaXMubm9VcGRhdGVUVEx9PWQsaj10aGlzLiNNKGUscyxkLnNpemV8fDAseCk7aWYodGhpcy5tYXhFbnRyeVNpemUmJmo+dGhpcy5tYXhFbnRyeVNpemUpcmV0dXJuICQmJigkLnNldD0ibWlzcyIsJC5tYXhFbnRyeVNpemVFeGNlZWRlZD0hMCksdGhpcy4jRihlLCJzZXQiKSx0aGlzO2xldCB6PTA9PT10aGlzLiNwP3ZvaWQgMDp0aGlzLiNmLmdldChlKTtpZih2b2lkIDA9PT16KXo9MD09PXRoaXMuI3A/dGhpcy4jXzowIT09dGhpcy4jeC5sZW5ndGg/dGhpcy4jeC5wb3AoKTp0aGlzLiNwPT09dGhpcy4jcj90aGlzLiNWKCExKTp0aGlzLiNwLHRoaXMuI2hbel09ZSx0aGlzLiNnW3pdPXMsdGhpcy4jZi5zZXQoZSx6KSx0aGlzLiN2W3RoaXMuI19dPXosdGhpcy4jeVt6XT10aGlzLiNfLHRoaXMuI189eix0aGlzLiNwKyssdGhpcy4jUSh6LGosJCksJCYmKCQuc2V0PSJhZGQiKSxTPSExLHRoaXMuI1QmJnRoaXMuI3M/LihzLGUsImFkZCIpO2Vsc2V7dGhpcy4jTyh6KTtsZXQgZD10aGlzLiNnW3pdO2lmKHMhPT1kKXtpZih0aGlzLiNJJiZ0aGlzLiNSKGQpKXtkLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcigicmVwbGFjZWQiKSk7bGV0e19fc3RhbGVXaGlsZUZldGNoaW5nOnN9PWQ7dm9pZCAwIT09cyYmIWcmJih0aGlzLiN6JiZ0aGlzLiNhPy4ocyxlLCJzZXQiKSx0aGlzLiNDJiZ0aGlzLiN3Py5wdXNoKFtzLGUsInNldCJdKSl9ZWxzZSBnfHwodGhpcy4jeiYmdGhpcy4jYT8uKGQsZSwic2V0IiksdGhpcy4jQyYmdGhpcy4jdz8ucHVzaChbZCxlLCJzZXQiXSkpO2lmKHRoaXMuI1ooeiksdGhpcy4jUSh6LGosJCksdGhpcy4jZ1t6XT1zLCQpeyQuc2V0PSJyZXBsYWNlIjtsZXQgZT1kJiZ0aGlzLiNSKGQpP2QuX19zdGFsZVdoaWxlRmV0Y2hpbmc6ZDt2b2lkIDAhPT1lJiYoJC5vbGRWYWx1ZT1lKX19ZWxzZSAkJiYoJC5zZXQ9InVwZGF0ZSIpO3RoaXMuI1QmJnRoaXMub25JbnNlcnQ/LihzLGUscz09PWQ/InVwZGF0ZSI6InJlcGxhY2UiKX1pZigwIT09bSYmIXRoaXMuI2smJnRoaXMuI0woKSx0aGlzLiNrJiYoU3x8dGhpcy4jQSh6LG0saCksJCYmdGhpcy4jQigkLHopKSwhZyYmdGhpcy4jQyYmdGhpcy4jdyl7bGV0IGUscz10aGlzLiN3O2Zvcig7ZT1zPy5zaGlmdCgpOyl0aGlzLiNsPy4oLi4uZSl9cmV0dXJuIHRoaXN9cG9wKCl7dHJ5e2Zvcig7dGhpcy4jcDspe2xldCBlPXRoaXMuI2dbdGhpcy4jYl07aWYodGhpcy4jVighMCksdGhpcy4jUihlKSl7aWYoZS5fX3N0YWxlV2hpbGVGZXRjaGluZylyZXR1cm4gZS5fX3N0YWxlV2hpbGVGZXRjaGluZ31lbHNlIGlmKHZvaWQgMCE9PWUpcmV0dXJuIGV9fWZpbmFsbHl7aWYodGhpcy4jQyYmdGhpcy4jdyl7bGV0IGUscz10aGlzLiN3O2Zvcig7ZT1zPy5zaGlmdCgpOyl0aGlzLiNsPy4oLi4uZSl9fX0jVihlKXtsZXQgcz10aGlzLiNiLGQ9dGhpcy4jaFtzXSxtPXRoaXMuI2dbc107cmV0dXJuIHRoaXMuI0kmJnRoaXMuI1IobSk/bS5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoImV2aWN0ZWQiKSk6KHRoaXMuI3p8fHRoaXMuI0MpJiYodGhpcy4jeiYmdGhpcy4jYT8uKG0sZCwiZXZpY3QiKSx0aGlzLiNDJiZ0aGlzLiN3Py5wdXNoKFttLGQsImV2aWN0Il0pKSx0aGlzLiNaKHMpLHRoaXMuI2o/LltzXSYmKGNsZWFyVGltZW91dCh0aGlzLiNqW3NdKSx0aGlzLiNqW3NdPXZvaWQgMCksZSYmKHRoaXMuI2hbc109dm9pZCAwLHRoaXMuI2dbc109dm9pZCAwLHRoaXMuI3gucHVzaChzKSksMT09PXRoaXMuI3A/KHRoaXMuI2I9dGhpcy4jXz0wLHRoaXMuI3gubGVuZ3RoPTApOnRoaXMuI2I9dGhpcy4jdltzXSx0aGlzLiNmLmRlbGV0ZShkKSx0aGlzLiNwLS0sc31oYXMoZSxzPXt9KXtsZXR7dXBkYXRlQWdlT25IYXM6ZD10aGlzLnVwZGF0ZUFnZU9uSGFzLHN0YXR1czptfT1zLGg9dGhpcy4jZi5nZXQoZSk7aWYodm9pZCAwIT09aCl7bGV0IGU9dGhpcy4jZ1toXTtpZih0aGlzLiNSKGUpJiZ2b2lkIDA9PT1lLl9fc3RhbGVXaGlsZUZldGNoaW5nKXJldHVybiExO2lmKCF0aGlzLiNEKGgpKXJldHVybiBkJiZ0aGlzLiNxKGgpLG0mJihtLmhhcz0iaGl0Iix0aGlzLiNCKG0saCkpLCEwO20mJihtLmhhcz0ic3RhbGUiLHRoaXMuI0IobSxoKSl9ZWxzZSBtJiYobS5oYXM9Im1pc3MiKTtyZXR1cm4hMX1wZWVrKGUscz17fSl7bGV0e2FsbG93U3RhbGU6ZD10aGlzLmFsbG93U3RhbGV9PXMsbT10aGlzLiNmLmdldChlKTtpZih2b2lkIDA9PT1tfHwhZCYmdGhpcy4jRChtKSlyZXR1cm47bGV0IGg9dGhpcy4jZ1ttXTtyZXR1cm4gdGhpcy4jUihoKT9oLl9fc3RhbGVXaGlsZUZldGNoaW5nOmh9I0UoZSxzLGQsbSl7bGV0IGg9dm9pZCAwPT09cz92b2lkIDA6dGhpcy4jZ1tzXTtpZih0aGlzLiNSKGgpKXJldHVybiBoO2xldCBnPW5ldyAkaSx7c2lnbmFsOnh9PWQ7eD8uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLCgpPT5nLmFib3J0KHgucmVhc29uKSx7c2lnbmFsOmcuc2lnbmFsfSk7bGV0ICQ9e3NpZ25hbDpnLnNpZ25hbCxvcHRpb25zOmQsY29udGV4dDptfSxhPShtLGg9ITEpPT57bGV0e2Fib3J0ZWQ6eH09Zy5zaWduYWwsaj1kLmlnbm9yZUZldGNoQWJvcnQmJnZvaWQgMCE9PW0sej1kLmlnbm9yZUZldGNoQWJvcnR8fCEoIWQuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydHx8dm9pZCAwPT09bSk7aWYoZC5zdGF0dXMmJih4JiYhaD8oZC5zdGF0dXMuZmV0Y2hBYm9ydGVkPSEwLGQuc3RhdHVzLmZldGNoRXJyb3I9Zy5zaWduYWwucmVhc29uLGomJihkLnN0YXR1cy5mZXRjaEFib3J0SWdub3JlZD0hMCkpOmQuc3RhdHVzLmZldGNoUmVzb2x2ZWQ9ITApLHgmJiFqJiYhaClyZXR1cm4gZihnLnNpZ25hbC5yZWFzb24seik7bGV0IEk9UyxUPXRoaXMuI2dbc107cmV0dXJuKFQ9PT1TfHxqJiZoJiZ2b2lkIDA9PT1UKSYmKHZvaWQgMD09PW0/dm9pZCAwIT09SS5fX3N0YWxlV2hpbGVGZXRjaGluZz90aGlzLiNnW3NdPUkuX19zdGFsZVdoaWxlRmV0Y2hpbmc6dGhpcy4jRihlLCJmZXRjaCIpOihkLnN0YXR1cyYmKGQuc3RhdHVzLmZldGNoVXBkYXRlZD0hMCksdGhpcy5zZXQoZSxtLCQub3B0aW9ucykpKSxtfSxmPShtLGgpPT57bGV0e2Fib3J0ZWQ6eH09Zy5zaWduYWwsJD14JiZkLmFsbG93U3RhbGVPbkZldGNoQWJvcnQsaj0kfHxkLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLHo9anx8ZC5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sST1TO2lmKHRoaXMuI2dbc109PT1TJiYoIXp8fCFoJiZ2b2lkIDA9PT1JLl9fc3RhbGVXaGlsZUZldGNoaW5nP3RoaXMuI0YoZSwiZmV0Y2giKTokfHwodGhpcy4jZ1tzXT1JLl9fc3RhbGVXaGlsZUZldGNoaW5nKSksailyZXR1cm4gZC5zdGF0dXMmJnZvaWQgMCE9PUkuX19zdGFsZVdoaWxlRmV0Y2hpbmcmJihkLnN0YXR1cy5yZXR1cm5lZFN0YWxlPSEwKSxJLl9fc3RhbGVXaGlsZUZldGNoaW5nO2lmKEkuX19yZXR1cm5lZD09PUkpdGhyb3cgbX07ZC5zdGF0dXMmJihkLnN0YXR1cy5mZXRjaERpc3BhdGNoZWQ9ITApO2xldCBTPW5ldyBQcm9taXNlKChzLG0pPT57bGV0IHg9dGhpcy4jYz8uKGUsaCwkKTt4JiZ4IGluc3RhbmNlb2YgUHJvbWlzZSYmeC50aGVuKGU9PnModm9pZCAwPT09ZT92b2lkIDA6ZSksbSksZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLCgpPT57KCFkLmlnbm9yZUZldGNoQWJvcnR8fGQuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCkmJihzKHZvaWQgMCksZC5hbGxvd1N0YWxlT25GZXRjaEFib3J0JiYocz1lPT5hKGUsITApKSl9KX0pLnRoZW4oYSxlPT4oZC5zdGF0dXMmJihkLnN0YXR1cy5mZXRjaFJlamVjdGVkPSEwLGQuc3RhdHVzLmZldGNoRXJyb3I9ZSksZihlLCExKSkpLGo9T2JqZWN0LmFzc2lnbihTLHtfX2Fib3J0Q29udHJvbGxlcjpnLF9fc3RhbGVXaGlsZUZldGNoaW5nOmgsX19yZXR1cm5lZDp2b2lkIDB9KTtyZXR1cm4gdm9pZCAwPT09cz8odGhpcy5zZXQoZSxqLHsuLi4kLm9wdGlvbnMsc3RhdHVzOnZvaWQgMH0pLHM9dGhpcy4jZi5nZXQoZSkpOnRoaXMuI2dbc109aixqfSNSKGUpe2lmKCF0aGlzLiNJKXJldHVybiExO2xldCBzPWU7cmV0dXJuISFzJiZzIGluc3RhbmNlb2YgUHJvbWlzZSYmcy5oYXNPd25Qcm9wZXJ0eSgiX19zdGFsZVdoaWxlRmV0Y2hpbmciKSYmcy5fX2Fib3J0Q29udHJvbGxlciBpbnN0YW5jZW9mICRpfWFzeW5jIGZldGNoKGUscz17fSl7bGV0e2FsbG93U3RhbGU6ZD10aGlzLmFsbG93U3RhbGUsdXBkYXRlQWdlT25HZXQ6bT10aGlzLnVwZGF0ZUFnZU9uR2V0LG5vRGVsZXRlT25TdGFsZUdldDpoPXRoaXMubm9EZWxldGVPblN0YWxlR2V0LHR0bDpnPXRoaXMudHRsLG5vRGlzcG9zZU9uU2V0Ong9dGhpcy5ub0Rpc3Bvc2VPblNldCxzaXplOiQ9MCxzaXplQ2FsY3VsYXRpb246Uz10aGlzLnNpemVDYWxjdWxhdGlvbixub1VwZGF0ZVRUTDpqPXRoaXMubm9VcGRhdGVUVEwsbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uOno9dGhpcy5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb246ST10aGlzLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLGlnbm9yZUZldGNoQWJvcnQ6VD10aGlzLmlnbm9yZUZldGNoQWJvcnQsYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpSPXRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCxjb250ZXh0OkUsZm9yY2VSZWZyZXNoOk89ITEsc3RhdHVzOk4sc2lnbmFsOlV9PXM7aWYoIXRoaXMuI0kpcmV0dXJuIE4mJihOLmZldGNoPSJnZXQiKSx0aGlzLmdldChlLHthbGxvd1N0YWxlOmQsdXBkYXRlQWdlT25HZXQ6bSxub0RlbGV0ZU9uU3RhbGVHZXQ6aCxzdGF0dXM6Tn0pO2xldCBCPXthbGxvd1N0YWxlOmQsdXBkYXRlQWdlT25HZXQ6bSxub0RlbGV0ZU9uU3RhbGVHZXQ6aCx0dGw6Zyxub0Rpc3Bvc2VPblNldDp4LHNpemU6JCxzaXplQ2FsY3VsYXRpb246Uyxub1VwZGF0ZVRUTDpqLG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjp6LGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uOkksYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDpSLGlnbm9yZUZldGNoQWJvcnQ6VCxzdGF0dXM6TixzaWduYWw6VX0sVj10aGlzLiNmLmdldChlKTtpZih2b2lkIDA9PT1WKXtOJiYoTi5mZXRjaD0ibWlzcyIpO2xldCBzPXRoaXMuI0UoZSxWLEIsRSk7cmV0dXJuIHMuX19yZXR1cm5lZD1zfXtsZXQgcz10aGlzLiNnW1ZdO2lmKHRoaXMuI1Iocykpe2xldCBlPWQmJnZvaWQgMCE9PXMuX19zdGFsZVdoaWxlRmV0Y2hpbmc7cmV0dXJuIE4mJihOLmZldGNoPSJpbmZsaWdodCIsZSYmKE4ucmV0dXJuZWRTdGFsZT0hMCkpLGU/cy5fX3N0YWxlV2hpbGVGZXRjaGluZzpzLl9fcmV0dXJuZWQ9c31sZXQgaD10aGlzLiNEKFYpO2lmKCFPJiYhaClyZXR1cm4gTiYmKE4uZmV0Y2g9ImhpdCIpLHRoaXMuI08oViksbSYmdGhpcy4jcShWKSxOJiZ0aGlzLiNCKE4sVikscztsZXQgZz10aGlzLiNFKGUsVixCLEUpLHg9dm9pZCAwIT09Zy5fX3N0YWxlV2hpbGVGZXRjaGluZyYmZDtyZXR1cm4gTiYmKE4uZmV0Y2g9aD8ic3RhbGUiOiJyZWZyZXNoIix4JiZoJiYoTi5yZXR1cm5lZFN0YWxlPSEwKSkseD9nLl9fc3RhbGVXaGlsZUZldGNoaW5nOmcuX19yZXR1cm5lZD1nfX1hc3luYyBmb3JjZUZldGNoKGUscz17fSl7bGV0IGQ9YXdhaXQgdGhpcy5mZXRjaChlLHMpO2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IEVycm9yKCJmZXRjaCgpIHJldHVybmVkIHVuZGVmaW5lZCIpO3JldHVybiBkfW1lbW8oZSxzPXt9KXtsZXQgZD10aGlzLiN1O2lmKCFkKXRocm93IG5ldyBFcnJvcigibm8gbWVtb01ldGhvZCBwcm92aWRlZCB0byBjb25zdHJ1Y3RvciIpO2xldHtjb250ZXh0Om0sZm9yY2VSZWZyZXNoOmgsLi4uZ309cyx4PXRoaXMuZ2V0KGUsZyk7aWYoIWgmJnZvaWQgMCE9PXgpcmV0dXJuIHg7bGV0ICQ9ZChlLHgse29wdGlvbnM6Zyxjb250ZXh0Om19KTtyZXR1cm4gdGhpcy5zZXQoZSwkLGcpLCR9Z2V0KGUscz17fSl7bGV0e2FsbG93U3RhbGU6ZD10aGlzLmFsbG93U3RhbGUsdXBkYXRlQWdlT25HZXQ6bT10aGlzLnVwZGF0ZUFnZU9uR2V0LG5vRGVsZXRlT25TdGFsZUdldDpoPXRoaXMubm9EZWxldGVPblN0YWxlR2V0LHN0YXR1czpnfT1zLHg9dGhpcy4jZi5nZXQoZSk7aWYodm9pZCAwIT09eCl7bGV0IHM9dGhpcy4jZ1t4XSwkPXRoaXMuI1Iocyk7cmV0dXJuIGcmJnRoaXMuI0IoZyx4KSx0aGlzLiNEKHgpPyhnJiYoZy5nZXQ9InN0YWxlIiksJD8oZyYmZCYmdm9pZCAwIT09cy5fX3N0YWxlV2hpbGVGZXRjaGluZyYmKGcucmV0dXJuZWRTdGFsZT0hMCksZD9zLl9fc3RhbGVXaGlsZUZldGNoaW5nOnZvaWQgMCk6KGh8fHRoaXMuI0YoZSwiZXhwaXJlIiksZyYmZCYmKGcucmV0dXJuZWRTdGFsZT0hMCksZD9zOnZvaWQgMCkpOihnJiYoZy5nZXQ9ImhpdCIpLCQ/cy5fX3N0YWxlV2hpbGVGZXRjaGluZzoodGhpcy4jTyh4KSxtJiZ0aGlzLiNxKHgpLHMpKX1nJiYoZy5nZXQ9Im1pc3MiKX0jVyhlLHMpe3RoaXMuI3lbc109ZSx0aGlzLiN2W2VdPXN9I08oZSl7ZSE9PXRoaXMuI18mJihlPT09dGhpcy4jYj90aGlzLiNiPXRoaXMuI3ZbZV06dGhpcy4jVyh0aGlzLiN5W2VdLHRoaXMuI3ZbZV0pLHRoaXMuI1codGhpcy4jXyxlKSx0aGlzLiNfPWUpfWRlbGV0ZShlKXtyZXR1cm4gdGhpcy4jRihlLCJkZWxldGUiKX0jRihlLHMpe2xldCBkPSExO2lmKDAhPT10aGlzLiNwKXtsZXQgbT10aGlzLiNmLmdldChlKTtpZih2b2lkIDAhPT1tKWlmKHRoaXMuI2o/LlttXSYmKGNsZWFyVGltZW91dCh0aGlzLiNqPy5bbV0pLHRoaXMuI2pbbV09dm9pZCAwKSxkPSEwLDE9PT10aGlzLiNwKXRoaXMuI0oocyk7ZWxzZXt0aGlzLiNaKG0pO2xldCBkPXRoaXMuI2dbbV07aWYodGhpcy4jUihkKT9kLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcigiZGVsZXRlZCIpKToodGhpcy4jenx8dGhpcy4jQykmJih0aGlzLiN6JiZ0aGlzLiNhPy4oZCxlLHMpLHRoaXMuI0MmJnRoaXMuI3c/LnB1c2goW2QsZSxzXSkpLHRoaXMuI2YuZGVsZXRlKGUpLHRoaXMuI2hbbV09dm9pZCAwLHRoaXMuI2dbbV09dm9pZCAwLG09PT10aGlzLiNfKXRoaXMuI189dGhpcy4jeVttXTtlbHNlIGlmKG09PT10aGlzLiNiKXRoaXMuI2I9dGhpcy4jdlttXTtlbHNle2xldCBlPXRoaXMuI3lbbV07dGhpcy4jdltlXT10aGlzLiN2W21dO2xldCBzPXRoaXMuI3ZbbV07dGhpcy4jeVtzXT10aGlzLiN5W21dfXRoaXMuI3AtLSx0aGlzLiN4LnB1c2gobSl9fWlmKHRoaXMuI0MmJnRoaXMuI3c/Lmxlbmd0aCl7bGV0IGUscz10aGlzLiN3O2Zvcig7ZT1zPy5zaGlmdCgpOyl0aGlzLiNsPy4oLi4uZSl9cmV0dXJuIGR9Y2xlYXIoKXtyZXR1cm4gdGhpcy4jSigiZGVsZXRlIil9I0ooZSl7Zm9yKGxldCBzIG9mIHRoaXMuI04oe2FsbG93U3RhbGU6ITB9KSl7bGV0IGQ9dGhpcy4jZ1tzXTtpZih0aGlzLiNSKGQpKWQuX19hYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKCJkZWxldGVkIikpO2Vsc2V7bGV0IG09dGhpcy4jaFtzXTt0aGlzLiN6JiZ0aGlzLiNhPy4oZCxtLGUpLHRoaXMuI0MmJnRoaXMuI3c/LnB1c2goW2QsbSxlXSl9fWlmKHRoaXMuI2YuY2xlYXIoKSx0aGlzLiNnLmZpbGwodm9pZCAwKSx0aGlzLiNoLmZpbGwodm9pZCAwKSx0aGlzLiNrJiZ0aGlzLiNTKXt0aGlzLiNrLmZpbGwoMCksdGhpcy4jUy5maWxsKDApO2ZvcihsZXQgZSBvZiB0aGlzLiNqPz9bXSl2b2lkIDAhPT1lJiZjbGVhclRpbWVvdXQoZSk7dGhpcy4jaj8uZmlsbCh2b2lkIDApfWlmKHRoaXMuIyQmJnRoaXMuIyQuZmlsbCgwKSx0aGlzLiNiPTAsdGhpcy4jXz0wLHRoaXMuI3gubGVuZ3RoPTAsdGhpcy4jbT0wLHRoaXMuI3A9MCx0aGlzLiNDJiZ0aGlzLiN3KXtsZXQgZSxzPXRoaXMuI3c7Zm9yKDtlPXM/LnNoaWZ0KCk7KXRoaXMuI2w/LiguLi5lKX19fTtjb25zdCB1bnN0b3JhZ2VfNDdkcml2ZXJzXzQ3bHJ1XzQ1Y2FjaGU9KHM9e30pPT57Y29uc3QgZD1uZXcgemkoe21heDoxZTMsc2l6ZUNhbGN1bGF0aW9uOnMubWF4U2l6ZXx8cy5tYXhFbnRyeVNpemU/KHMsZCk9PmQubGVuZ3RoK2Z1bmN0aW9uKHMpe2lmKHZvaWQgMCE9PWUpdHJ5e3JldHVybiBlLmJ5dGVMZW5ndGgocyl9Y2F0Y2h7fXRyeXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHM/cy5sZW5ndGg6SlNPTi5zdHJpbmdpZnkocykubGVuZ3RofWNhdGNoe31yZXR1cm4gMH0ocyk6dm9pZCAwLC4uLnN9KTtyZXR1cm57bmFtZToibHJ1LWNhY2hlIixvcHRpb25zOnMsZ2V0SW5zdGFuY2U6KCk9PmQsaGFzSXRlbTplPT5kLmhhcyhlKSxnZXRJdGVtOmU9PmQuZ2V0KGUpPz9udWxsLGdldEl0ZW1SYXc6ZT0+ZC5nZXQoZSk/P251bGwsc2V0SXRlbShlLHMpe2Quc2V0KGUscyl9LHNldEl0ZW1SYXcoZSxzKXtkLnNldChlLHMpfSxyZW1vdmVJdGVtKGUpe2QuZGVsZXRlKGUpfSxnZXRLZXlzOigpPT5bLi4uZC5rZXlzKCldLGNsZWFyKCl7ZC5jbGVhcigpfSxkaXNwb3NlKCl7ZC5jbGVhcigpfX19O2NvbnN0IElpPWNyZWF0ZVN0b3JhZ2Uoe30pO2Z1bmN0aW9uIHVzZVN0b3JhZ2UoZT0iIil7cmV0dXJuIGU/ZnVuY3Rpb24oZSxzKXtpZighKHM9bm9ybWFsaXplQmFzZUtleShzKSkpcmV0dXJuIGU7Y29uc3QgZD17Li4uZX07Zm9yKGNvbnN0IG0gb2Ygb2kpZFttXT0oZD0iIiwuLi5oKT0+ZVttXShzK2QsLi4uaCk7cmV0dXJuIGQuZ2V0S2V5cz0oZD0iIiwuLi5tKT0+ZS5nZXRLZXlzKHMrZCwuLi5tKS50aGVuKGU9PmUubWFwKGU9PmUuc2xpY2Uocy5sZW5ndGgpKSksZC5rZXlzPWQuZ2V0S2V5cyxkLmdldEl0ZW1zPWFzeW5jKGQsbSk9Pntjb25zdCBoPWQubWFwKGU9PiJzdHJpbmciPT10eXBlb2YgZT9zK2U6ey4uLmUsa2V5OnMrZS5rZXl9KTtyZXR1cm4oYXdhaXQgZS5nZXRJdGVtcyhoLG0pKS5tYXAoZT0+KHtrZXk6ZS5rZXkuc2xpY2Uocy5sZW5ndGgpLHZhbHVlOmUudmFsdWV9KSl9LGQuc2V0SXRlbXM9YXN5bmMoZCxtKT0+e2NvbnN0IGg9ZC5tYXAoZT0+KHtrZXk6cytlLmtleSx2YWx1ZTplLnZhbHVlLG9wdGlvbnM6ZS5vcHRpb25zfSkpO3JldHVybiBlLnNldEl0ZW1zKGgsbSl9LGR9KElpLGUpOklpfWZ1bmN0aW9uIHNlcmlhbGl6ZSQxKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9gJyR7ZX0nYDoobmV3IENpKS5zZXJpYWxpemUoZSl9SWkubW91bnQoIi9hc3NldHMiLHNpKSxJaS5tb3VudCgiY2FjaGUiLGRyaXZlcih7YmluZGluZzoiQ0FDSEUiLGRyaXZlcjoiY2xvdWRmbGFyZS1rdi1iaW5kaW5nIn0pKSxJaS5tb3VudCgia3YiLGRyaXZlcih7YmluZGluZzoiS1YiLGRyaXZlcjoiY2xvdWRmbGFyZS1rdi1iaW5kaW5nIn0pKSxJaS5tb3VudCgiI3JhdGUtbGltaXRlci1zdG9yYWdlIix1bnN0b3JhZ2VfNDdkcml2ZXJzXzQ3bHJ1XzQ1Y2FjaGUoe2RyaXZlcjoibHJ1LWNhY2hlIn0pKTtjb25zdCBDaT1mdW5jdGlvbigpe2NsYXNzIG97I2c9bmV3IE1hcDtjb21wYXJlKGUscyl7Y29uc3QgZD10eXBlb2YgZSxtPXR5cGVvZiBzO3JldHVybiJzdHJpbmciPT09ZCYmInN0cmluZyI9PT1tP2UubG9jYWxlQ29tcGFyZShzKToibnVtYmVyIj09PWQmJiJudW1iZXIiPT09bT9lLXM6U3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlLmNhbGwodGhpcy5zZXJpYWxpemUoZSwhMCksdGhpcy5zZXJpYWxpemUocywhMCkpfXNlcmlhbGl6ZShlLHMpe2lmKG51bGw9PT1lKXJldHVybiJudWxsIjtzd2l0Y2godHlwZW9mIGUpe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcz9lOmAnJHtlfSdgO2Nhc2UiYmlnaW50IjpyZXR1cm5gJHtlfW5gO2Nhc2Uib2JqZWN0IjpyZXR1cm4gdGhpcy4kb2JqZWN0KGUpO2Nhc2UiZnVuY3Rpb24iOnJldHVybiB0aGlzLiRmdW5jdGlvbihlKX1yZXR1cm4gU3RyaW5nKGUpfXNlcmlhbGl6ZU9iamVjdChlKXtjb25zdCBzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtpZigiW29iamVjdCBPYmplY3RdIiE9PXMpcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUocy5sZW5ndGg8MTA/YHVua25vd246JHtzfWA6cy5zbGljZSg4LC0xKSxlKTtjb25zdCBkPWUuY29uc3RydWN0b3IsbT1kPT09T2JqZWN0fHx2b2lkIDA9PT1kPyIiOmQubmFtZTtpZigiIiE9PW0mJmdsb2JhbFRoaXNbbV09PT1kKXJldHVybiB0aGlzLnNlcmlhbGl6ZUJ1aWx0SW5UeXBlKG0sZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUudG9KU09OKXtjb25zdCBzPWUudG9KU09OKCk7cmV0dXJuIG0rKG51bGwhPT1zJiYib2JqZWN0Ij09dHlwZW9mIHM/dGhpcy4kb2JqZWN0KHMpOmAoJHt0aGlzLnNlcmlhbGl6ZShzKX0pYCl9cmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhtLE9iamVjdC5lbnRyaWVzKGUpKX1zZXJpYWxpemVCdWlsdEluVHlwZShlLHMpe2NvbnN0IGQ9dGhpc1siJCIrZV07aWYoZClyZXR1cm4gZC5jYWxsKHRoaXMscyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHM/LmVudHJpZXMpcmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhlLHMuZW50cmllcygpKTt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgJHtlfWApfXNlcmlhbGl6ZU9iamVjdEVudHJpZXMoZSxzKXtjb25zdCBkPUFycmF5LmZyb20ocykuc29ydCgoZSxzKT0+dGhpcy5jb21wYXJlKGVbMF0sc1swXSkpO2xldCBtPWAke2V9e2A7Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspe2NvbnN0W3MsaF09ZFtlXTttKz1gJHt0aGlzLnNlcmlhbGl6ZShzLCEwKX06JHt0aGlzLnNlcmlhbGl6ZShoKX1gLGU8ZC5sZW5ndGgtMSYmKG0rPSIsIil9cmV0dXJuIG0rIn0ifSRvYmplY3QoZSl7bGV0IHM9dGhpcy4jZy5nZXQoZSk7cmV0dXJuIHZvaWQgMD09PXMmJih0aGlzLiNnLnNldChlLGAjJHt0aGlzLiNnLnNpemV9YCkscz10aGlzLnNlcmlhbGl6ZU9iamVjdChlKSx0aGlzLiNnLnNldChlLHMpKSxzfSRmdW5jdGlvbihlKXtjb25zdCBzPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO3JldHVybiJbbmF0aXZlIGNvZGVdIH0iPT09cy5zbGljZSgtMTUpP2Ake2UubmFtZXx8IiJ9KClbbmF0aXZlXWA6YCR7ZS5uYW1lfSgke2UubGVuZ3RofSkke3MucmVwbGFjZSgvXHMqXG5ccyovZywiIil9YH0kQXJyYXkoZSl7bGV0IHM9IlsiO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXMrPXRoaXMuc2VyaWFsaXplKGVbZF0pLGQ8ZS5sZW5ndGgtMSYmKHMrPSIsIik7cmV0dXJuIHMrIl0ifSREYXRlKGUpe3RyeXtyZXR1cm5gRGF0ZSgke2UudG9JU09TdHJpbmcoKX0pYH1jYXRjaHtyZXR1cm4iRGF0ZShudWxsKSJ9fSRBcnJheUJ1ZmZlcihlKXtyZXR1cm5gQXJyYXlCdWZmZXJbJHtuZXcgVWludDhBcnJheShlKS5qb2luKCIsIil9XWB9JFNldChlKXtyZXR1cm5gU2V0JHt0aGlzLiRBcnJheShBcnJheS5mcm9tKGUpLnNvcnQoKGUscyk9PnRoaXMuY29tcGFyZShlLHMpKSl9YH0kTWFwKGUpe3JldHVybiB0aGlzLnNlcmlhbGl6ZU9iamVjdEVudHJpZXMoIk1hcCIsZS5lbnRyaWVzKCkpfX1mb3IoY29uc3QgZSBvZlsiRXJyb3IiLCJSZWdFeHAiLCJVUkwiXSlvLnByb3RvdHlwZVsiJCIrZV09ZnVuY3Rpb24ocyl7cmV0dXJuYCR7ZX0oJHtzfSlgfTtmb3IoY29uc3QgZSBvZlsiSW50OEFycmF5IiwiVWludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5Il0pby5wcm90b3R5cGVbIiQiK2VdPWZ1bmN0aW9uKHMpe3JldHVybmAke2V9WyR7cy5qb2luKCIsIil9XWB9O2Zvcihjb25zdCBlIG9mWyJCaWdJbnQ2NEFycmF5IiwiQmlnVWludDY0QXJyYXkiXSlvLnByb3RvdHlwZVsiJCIrZV09ZnVuY3Rpb24ocyl7cmV0dXJuYCR7ZX1bJHtzLmpvaW4oIm4sIil9JHtzLmxlbmd0aD4wPyJuIjoiIn1dYH07cmV0dXJuIG99KCk7ZnVuY3Rpb24gaXNFcXVhbChlLHMpe3JldHVybiBlPT09c3x8c2VyaWFsaXplJDEoZSk9PT1zZXJpYWxpemUkMShzKX1jb25zdCBUaT1bMTc3OTAzMzcwMywtMTE1MDgzMzAxOSwxMDEzOTA0MjQyLC0xNTIxNDg2NTM0LDEzNTk4OTMxMTksLTE2OTQxNDQzNzIsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLFJpPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsLTEyNDU2NDM4MjUsLTM3Mzk1NzcyMyw5NjE5ODcxNjMsMTUwODk3MDk5MywtMTg0MTMzMTU0OCwtMTQyNDIwNDA3NSwtNjcwNTg2MjE2LDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LC0yMTMyODg5MDkwLC0xNjgwMDc5MTkzLC0xMDQ2NzQ0NzE2LC00NTk1NzY4OTUsLTI3Mjc0MjUyMiwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwtMTc0MDc0NjQxNCwtMTQ3MzEzMjk0NywtMTM0MTk3MDQ4OCwtMTA4NDY1MzYyNSwtOTU4Mzk1NDA1LC03MTA0Mzg1ODUsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsLTIxMTc5NDA5NDYsLTE4MzgwMTEyNTksLTE1NjQ0ODEzNzUsLTE0NzQ2NjQ4ODUsLTEwMzUyMzY0OTYsLTk0OTIwMjUyNSwtNzc4OTAxNDc5LC02OTQ2MTQ0OTIsLTIwMDM5NTM4NywyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsLTIwNjcyMzY4NDQsLTE5MzMxMTQ4NzIsLTE4NjY1MzA4MjIsLTE1MzgyMzMxMDksLTEwOTA5MzU4MTcsLTk2NTY0MTk5OF0sRWk9W107bGV0IE9pPWNsYXNze19kYXRhPW5ldyBQaTtfaGFzaD1uZXcgUGkoWy4uLlRpXSk7X25EYXRhQnl0ZXM9MDtfbWluQnVmZmVyU2l6ZT0wO2ZpbmFsaXplKGUpe2UmJnRoaXMuX2FwcGVuZChlKTtjb25zdCBzPTgqdGhpcy5fbkRhdGFCeXRlcyxkPTgqdGhpcy5fZGF0YS5zaWdCeXRlcztyZXR1cm4gdGhpcy5fZGF0YS53b3Jkc1tkPj4+NV18PTEyODw8MjQtZCUzMix0aGlzLl9kYXRhLndvcmRzWzE0KyhkKzY0Pj4+OTw8NCldPU1hdGguZmxvb3Iocy80Mjk0OTY3Mjk2KSx0aGlzLl9kYXRhLndvcmRzWzE1KyhkKzY0Pj4+OTw8NCldPXMsdGhpcy5fZGF0YS5zaWdCeXRlcz00KnRoaXMuX2RhdGEud29yZHMubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofV9kb1Byb2Nlc3NCbG9jayhlLHMpe2NvbnN0IGQ9dGhpcy5faGFzaC53b3JkcztsZXQgbT1kWzBdLGg9ZFsxXSxnPWRbMl0seD1kWzNdLCQ9ZFs0XSxTPWRbNV0saj1kWzZdLHo9ZFs3XTtmb3IobGV0IGQ9MDtkPDY0O2QrKyl7aWYoZDwxNilFaVtkXT0wfGVbcytkXTtlbHNle2NvbnN0IGU9RWlbZC0xNV0scz0oZTw8MjV8ZT4+PjcpXihlPDwxNHxlPj4+MTgpXmU+Pj4zLG09RWlbZC0yXSxoPShtPDwxNXxtPj4+MTcpXihtPDwxM3xtPj4+MTkpXm0+Pj4xMDtFaVtkXT1zK0VpW2QtN10raCtFaVtkLTE2XX1jb25zdCBJPW0maF5tJmdeaCZnLFQ9KG08PDMwfG0+Pj4yKV4obTw8MTl8bT4+PjEzKV4obTw8MTB8bT4+PjIyKSxSPXorKCgkPDwyNnwkPj4+NileKCQ8PDIxfCQ+Pj4xMSleKCQ8PDd8JD4+PjI1KSkrKCQmU15+JCZqKStSaVtkXStFaVtkXTt6PWosaj1TLFM9JCwkPXgrUnwwLHg9ZyxnPWgsaD1tLG09UisoVCtJKXwwfWRbMF09ZFswXSttfDAsZFsxXT1kWzFdK2h8MCxkWzJdPWRbMl0rZ3wwLGRbM109ZFszXSt4fDAsZFs0XT1kWzRdKyR8MCxkWzVdPWRbNV0rU3wwLGRbNl09ZFs2XStqfDAsZFs3XT1kWzddK3p8MH1fYXBwZW5kKGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9UGkuZnJvbVV0ZjgoZSkpLHRoaXMuX2RhdGEuY29uY2F0KGUpLHRoaXMuX25EYXRhQnl0ZXMrPWUuc2lnQnl0ZXN9X3Byb2Nlc3MoZSl7bGV0IHMsZD10aGlzLl9kYXRhLnNpZ0J5dGVzLzY0O2Q9ZT9NYXRoLmNlaWwoZCk6TWF0aC5tYXgoKDB8ZCktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTtjb25zdCBtPTE2KmQsaD1NYXRoLm1pbig0Km0sdGhpcy5fZGF0YS5zaWdCeXRlcyk7aWYobSl7Zm9yKGxldCBlPTA7ZTxtO2UrPTE2KXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKHRoaXMuX2RhdGEud29yZHMsZSk7cz10aGlzLl9kYXRhLndvcmRzLnNwbGljZSgwLG0pLHRoaXMuX2RhdGEuc2lnQnl0ZXMtPWh9cmV0dXJuIG5ldyBQaShzLGgpfX0sUGk9Y2xhc3MgbHt3b3JkcztzaWdCeXRlcztjb25zdHJ1Y3RvcihlLHMpe2U9dGhpcy53b3Jkcz1lfHxbXSx0aGlzLnNpZ0J5dGVzPXZvaWQgMD09PXM/NCplLmxlbmd0aDpzfXN0YXRpYyBmcm9tVXRmOChlKXtjb25zdCBzPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSksZD1zLmxlbmd0aCxtPVtdO2ZvcihsZXQgZT0wO2U8ZDtlKyspbVtlPj4+Ml18PSgyNTUmcy5jaGFyQ29kZUF0KGUpKTw8MjQtZSU0Kjg7cmV0dXJuIG5ldyBsKG0sZCl9dG9CYXNlNjQoKXtjb25zdCBlPVtdO2ZvcihsZXQgcz0wO3M8dGhpcy5zaWdCeXRlcztzKz0zKXtjb25zdCBkPSh0aGlzLndvcmRzW3M+Pj4yXT4+PjI0LXMlNCo4JjI1NSk8PDE2fCh0aGlzLndvcmRzW3MrMT4+PjJdPj4+MjQtKHMrMSklNCo4JjI1NSk8PDh8dGhpcy53b3Jkc1tzKzI+Pj4yXT4+PjI0LShzKzIpJTQqOCYyNTU7Zm9yKGxldCBtPTA7bTw0JiY4KnMrNiptPDgqdGhpcy5zaWdCeXRlczttKyspZS5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fIi5jaGFyQXQoZD4+PjYqKDMtbSkmNjMpKX1yZXR1cm4gZS5qb2luKCIiKX1jb25jYXQoZSl7aWYodGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLXRoaXMuc2lnQnl0ZXMlNCo4LHRoaXMud29yZHMubGVuZ3RoPU1hdGguY2VpbCh0aGlzLnNpZ0J5dGVzLzQpLHRoaXMuc2lnQnl0ZXMlNClmb3IobGV0IHM9MDtzPGUuc2lnQnl0ZXM7cysrKXtjb25zdCBkPWUud29yZHNbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O3RoaXMud29yZHNbdGhpcy5zaWdCeXRlcytzPj4+Ml18PWQ8PDI0LSh0aGlzLnNpZ0J5dGVzK3MpJTQqOH1lbHNlIGZvcihsZXQgcz0wO3M8ZS5zaWdCeXRlcztzKz00KXRoaXMud29yZHNbdGhpcy5zaWdCeXRlcytzPj4+Ml09ZS53b3Jkc1tzPj4+Ml07dGhpcy5zaWdCeXRlcys9ZS5zaWdCeXRlc319O2Z1bmN0aW9uIGRpZ2VzdChlKXtyZXR1cm4obmV3IE9pKS5maW5hbGl6ZShlKS50b0Jhc2U2NCgpfWZ1bmN0aW9uIGhhc2gkMihlKXtyZXR1cm4gZGlnZXN0KHNlcmlhbGl6ZSQxKGUpKX1jb25zdCBOaT0oKCk9PntjbGFzcyBIYXNoZXIye2J1ZmY9IiI7I0s9bmV3IE1hcDt3cml0ZShlKXt0aGlzLmJ1ZmYrPWV9ZGlzcGF0Y2goZSl7cmV0dXJuIHRoaXNbbnVsbD09PWU/Im51bGwiOnR5cGVvZiBlXShlKX1vYmplY3Qocyl7aWYocyYmImZ1bmN0aW9uIj09dHlwZW9mIHMudG9KU09OKXJldHVybiB0aGlzLm9iamVjdChzLnRvSlNPTigpKTtjb25zdCBkPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzKTtsZXQgbT0iIjtjb25zdCBoPWQubGVuZ3RoO209aDwxMD8idW5rbm93bjpbIitkKyJdIjpkLnNsaWNlKDgsaC0xKSxtPW0udG9Mb3dlckNhc2UoKTtsZXQgZz1udWxsO2lmKHZvaWQgMCE9PShnPXRoaXMuI0suZ2V0KHMpKSlyZXR1cm4gdGhpcy5kaXNwYXRjaCgiW0NJUkNVTEFSOiIrZysiXSIpO2lmKHRoaXMuI0suc2V0KHMsdGhpcy4jSy5zaXplKSx2b2lkIDAhPT1lJiZlLmlzQnVmZmVyJiZlLmlzQnVmZmVyKHMpKXJldHVybiB0aGlzLndyaXRlKCJidWZmZXI6IiksdGhpcy53cml0ZShzLnRvU3RyaW5nKCJ1dGY4IikpO2lmKCJvYmplY3QiIT09bSYmImZ1bmN0aW9uIiE9PW0mJiJhc3luY2Z1bmN0aW9uIiE9PW0pdGhpc1ttXT90aGlzW21dKHMpOnRoaXMudW5rbm93bihzLG0pO2Vsc2V7Y29uc3QgZT1PYmplY3Qua2V5cyhzKS5zb3J0KCksZD1bXTt0aGlzLndyaXRlKCJvYmplY3Q6IisoZS5sZW5ndGgrZC5sZW5ndGgpKyI6Iik7Y29uc3QgZGlzcGF0Y2hGb3JLZXk9ZT0+e3RoaXMuZGlzcGF0Y2goZSksdGhpcy53cml0ZSgiOiIpLHRoaXMuZGlzcGF0Y2goc1tlXSksdGhpcy53cml0ZSgiLCIpfTtmb3IoY29uc3QgcyBvZiBlKWRpc3BhdGNoRm9yS2V5KHMpO2Zvcihjb25zdCBlIG9mIGQpZGlzcGF0Y2hGb3JLZXkoZSl9fWFycmF5KGUscyl7aWYocz12b2lkIDAhPT1zJiZzLHRoaXMud3JpdGUoImFycmF5OiIrZS5sZW5ndGgrIjoiKSwhc3x8ZS5sZW5ndGg8PTEpe2Zvcihjb25zdCBzIG9mIGUpdGhpcy5kaXNwYXRjaChzKTtyZXR1cm59Y29uc3QgZD1uZXcgTWFwLG09ZS5tYXAoZT0+e2NvbnN0IHM9bmV3IEhhc2hlcjI7cy5kaXNwYXRjaChlKTtmb3IoY29uc3RbZSxtXW9mIHMuI0spZC5zZXQoZSxtKTtyZXR1cm4gcy50b1N0cmluZygpfSk7cmV0dXJuIHRoaXMuI0s9ZCxtLnNvcnQoKSx0aGlzLmFycmF5KG0sITEpfWRhdGUoZSl7cmV0dXJuIHRoaXMud3JpdGUoImRhdGU6IitlLnRvSlNPTigpKX1zeW1ib2woZSl7cmV0dXJuIHRoaXMud3JpdGUoInN5bWJvbDoiK2UudG9TdHJpbmcoKSl9dW5rbm93bihlLHMpe2lmKHRoaXMud3JpdGUocyksZSlyZXR1cm4gdGhpcy53cml0ZSgiOiIpLGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmVudHJpZXM/dGhpcy5hcnJheShbLi4uZS5lbnRyaWVzKCldLCEwKTp2b2lkIDB9ZXJyb3IoZSl7cmV0dXJuIHRoaXMud3JpdGUoImVycm9yOiIrZS50b1N0cmluZygpKX1ib29sZWFuKGUpe3JldHVybiB0aGlzLndyaXRlKCJib29sOiIrZSl9c3RyaW5nKGUpe3RoaXMud3JpdGUoInN0cmluZzoiK2UubGVuZ3RoKyI6IiksdGhpcy53cml0ZShlKX1mdW5jdGlvbihlKXt0aGlzLndyaXRlKCJmbjoiKSwhZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuITE7cmV0dXJuIltuYXRpdmUgY29kZV0gfSI9PT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSgtMTUpfShlKT90aGlzLmRpc3BhdGNoKGUudG9TdHJpbmcoKSk6dGhpcy5kaXNwYXRjaCgiW25hdGl2ZV0iKX1udW1iZXIoZSl7cmV0dXJuIHRoaXMud3JpdGUoIm51bWJlcjoiK2UpfW51bGwoKXtyZXR1cm4gdGhpcy53cml0ZSgiTnVsbCIpfXVuZGVmaW5lZCgpe3JldHVybiB0aGlzLndyaXRlKCJVbmRlZmluZWQiKX1yZWdleHAoZSl7cmV0dXJuIHRoaXMud3JpdGUoInJlZ2V4OiIrZS50b1N0cmluZygpKX1hcnJheWJ1ZmZlcihlKXtyZXR1cm4gdGhpcy53cml0ZSgiYXJyYXlidWZmZXI6IiksdGhpcy5kaXNwYXRjaChuZXcgVWludDhBcnJheShlKSl9dXJsKGUpe3JldHVybiB0aGlzLndyaXRlKCJ1cmw6IitlLnRvU3RyaW5nKCkpfW1hcChlKXt0aGlzLndyaXRlKCJtYXA6Iik7Y29uc3Qgcz1bLi4uZV07cmV0dXJuIHRoaXMuYXJyYXkocywhMSl9c2V0KGUpe3RoaXMud3JpdGUoInNldDoiKTtjb25zdCBzPVsuLi5lXTtyZXR1cm4gdGhpcy5hcnJheShzLCExKX1iaWdpbnQoZSl7cmV0dXJuIHRoaXMud3JpdGUoImJpZ2ludDoiK2UudG9TdHJpbmcoKSl9fWZvcihjb25zdCBlIG9mWyJ1aW50OGFycmF5IiwidWludDhjbGFtcGVkYXJyYXkiLCJ1bnQ4YXJyYXkiLCJ1aW50MTZhcnJheSIsInVudDE2YXJyYXkiLCJ1aW50MzJhcnJheSIsInVudDMyYXJyYXkiLCJmbG9hdDMyYXJyYXkiLCJmbG9hdDY0YXJyYXkiXSlIYXNoZXIyLnByb3RvdHlwZVtlXT1mdW5jdGlvbihzKXtyZXR1cm4gdGhpcy53cml0ZShlKyI6IiksdGhpcy5hcnJheShbLi4uc10sITEpfTtyZXR1cm4gSGFzaGVyMn0pKCk7ZnVuY3Rpb24gaGFzaCQxKGUpe3JldHVybiBkaWdlc3QoInN0cmluZyI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oZSl7Y29uc3Qgcz1uZXcgTmk7cmV0dXJuIHMuZGlzcGF0Y2goZSkscy5idWZmfShlKSkucmVwbGFjZSgvWy1fXS9nLCIiKS5zbGljZSgwLDEwKX1mdW5jdGlvbiBkZWZpbmVDYWNoZWRGdW5jdGlvbihlLHM9e30pe3M9e25hbWU6Il8iLGJhc2U6Ii9jYWNoZSIsc3dyOiEwLG1heEFnZToxLC4uLnN9O2NvbnN0IGQ9e30sbT1zLmdyb3VwfHwibml0cm8vZnVuY3Rpb25zIixoPXMubmFtZXx8ZS5uYW1lfHwiXyIsZz1zLmludGVncml0eXx8aGFzaCQxKFtlLHNdKSx4PXMudmFsaWRhdGV8fChlPT52b2lkIDAhPT1lLnZhbHVlKTtyZXR1cm4gYXN5bmMoLi4uJCk9PntpZihhd2FpdChzLnNob3VsZEJ5cGFzc0NhY2hlPy4oLi4uJCkpKXJldHVybiBlKC4uLiQpO2NvbnN0IFM9YXdhaXQocy5nZXRLZXl8fGdldEtleSkoLi4uJCksaj1hd2FpdChzLnNob3VsZEludmFsaWRhdGVDYWNoZT8uKC4uLiQpKSx6PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsJCxTLGope2NvbnN0IHo9W3MuYmFzZSxtLGgsZSsiLmpzb24iXS5maWx0ZXIoQm9vbGVhbikuam9pbigiOiIpLnJlcGxhY2UoLzpcLyQvLCI6aW5kZXgiKTtsZXQgST1hd2FpdCB1c2VTdG9yYWdlKCkuZ2V0SXRlbSh6KS5jYXRjaChlPT57Y29uc29sZS5lcnJvcigiW2NhY2hlXSBDYWNoZSByZWFkIGVycm9yLiIsZSksdXNlTml0cm9BcHAoKS5jYXB0dXJlRXJyb3IoZSx7ZXZlbnQ6aix0YWdzOlsiY2FjaGUiXX0pfSl8fHt9O2lmKCJvYmplY3QiIT10eXBlb2YgSSl7ST17fTtjb25zdCBlPW5ldyBFcnJvcigiTWFsZm9ybWVkIGRhdGEgcmVhZCBmcm9tIGNhY2hlLiIpO2NvbnNvbGUuZXJyb3IoIltjYWNoZV0iLGUpLHVzZU5pdHJvQXBwKCkuY2FwdHVyZUVycm9yKGUse2V2ZW50OmosdGFnczpbImNhY2hlIl19KX1jb25zdCBUPTFlMyoocy5tYXhBZ2U/PzApO1QmJihJLmV4cGlyZXM9RGF0ZS5ub3coKStUKTtjb25zdCBSPVN8fEkuaW50ZWdyaXR5IT09Z3x8VCYmRGF0ZS5ub3coKS0oSS5tdGltZXx8MCk+VHx8ITE9PT14KEkpLEU9Uj8oYXN5bmMoKT0+e2NvbnN0IG09ZFtlXTttfHwodm9pZCAwIT09SS52YWx1ZSYmKHMuc3RhbGVNYXhBZ2V8fDApPj0wJiYhMT09PXMuc3dyJiYoSS52YWx1ZT12b2lkIDAsSS5pbnRlZ3JpdHk9dm9pZCAwLEkubXRpbWU9dm9pZCAwLEkuZXhwaXJlcz12b2lkIDApLGRbZV09UHJvbWlzZS5yZXNvbHZlKCQoKSkpO3RyeXtJLnZhbHVlPWF3YWl0IGRbZV19Y2F0Y2gocyl7dGhyb3cgbXx8ZGVsZXRlIGRbZV0sc31pZighbSYmKEkubXRpbWU9RGF0ZS5ub3coKSxJLmludGVncml0eT1nLGRlbGV0ZSBkW2VdLCExIT09eChJKSkpe2xldCBlO3MubWF4QWdlJiYhcy5zd3ImJihlPXt0dGw6cy5tYXhBZ2V9KTtjb25zdCBkPXVzZVN0b3JhZ2UoKS5zZXRJdGVtKHosSSxlKS5jYXRjaChlPT57Y29uc29sZS5lcnJvcigiW2NhY2hlXSBDYWNoZSB3cml0ZSBlcnJvci4iLGUpLHVzZU5pdHJvQXBwKCkuY2FwdHVyZUVycm9yKGUse2V2ZW50OmosdGFnczpbImNhY2hlIl19KX0pO2o/LndhaXRVbnRpbCYmai53YWl0VW50aWwoZCl9fSkoKTpQcm9taXNlLnJlc29sdmUoKTtyZXR1cm4gdm9pZCAwPT09SS52YWx1ZT9hd2FpdCBFOlImJmomJmoud2FpdFVudGlsJiZqLndhaXRVbnRpbChFKSxzLnN3ciYmITEhPT14KEkpPyhFLmNhdGNoKGU9Pntjb25zb2xlLmVycm9yKCJbY2FjaGVdIFNXUiBoYW5kbGVyIGVycm9yLiIsZSksdXNlTml0cm9BcHAoKS5jYXB0dXJlRXJyb3IoZSx7ZXZlbnQ6aix0YWdzOlsiY2FjaGUiXX0pfSksSSk6RS50aGVuKCgpPT5JKX0oUywoKT0+ZSguLi4kKSxqLCRbMF0mJmlzRXZlbnQoJFswXSk/JFswXTp2b2lkIDApO2xldCBJPXoudmFsdWU7cmV0dXJuIHMudHJhbnNmb3JtJiYoST1hd2FpdCBzLnRyYW5zZm9ybSh6LC4uLiQpfHxJKSxJfX1mdW5jdGlvbiBnZXRLZXkoLi4uZSl7cmV0dXJuIGUubGVuZ3RoPjA/aGFzaCQxKGUpOiIifWZ1bmN0aW9uIGVzY2FwZUtleShlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoL1xXL2csIiIpfWZ1bmN0aW9uIGRlZmluZUNhY2hlZEV2ZW50SGFuZGxlcihlLHM9e25hbWU6Il8iLGJhc2U6Ii9jYWNoZSIsc3dyOiEwLG1heEFnZToxfSl7Y29uc3QgZD0ocy52YXJpZXN8fFtdKS5maWx0ZXIoQm9vbGVhbikubWFwKGU9PmUudG9Mb3dlckNhc2UoKSkuc29ydCgpLG09ey4uLnMsZ2V0S2V5OmFzeW5jIGU9Pntjb25zdCBtPWF3YWl0KHMuZ2V0S2V5Py4oZSkpO2lmKG0pcmV0dXJuIGVzY2FwZUtleShtKTtjb25zdCBoPWUubm9kZS5yZXEub3JpZ2luYWxVcmx8fGUubm9kZS5yZXEudXJsfHxlLnBhdGg7bGV0IGc7dHJ5e2c9ZXNjYXBlS2V5KGRlY29kZVVSSShwYXJzZVVSTChoKS5wYXRobmFtZSkpLnNsaWNlKDAsMTYpfHwiaW5kZXgifWNhdGNoe2c9Ii0ifXJldHVybltgJHtnfS4ke2hhc2gkMShoKX1gLC4uLmQubWFwKHM9PltzLGUubm9kZS5yZXEuaGVhZGVyc1tzXV0pLm1hcCgoW2Usc10pPT5gJHtlc2NhcGVLZXkoZSl9LiR7aGFzaCQxKHMpfWApXS5qb2luKCI6Iil9LHZhbGlkYXRlOmU9PiEhZS52YWx1ZSYmKCEoZS52YWx1ZS5jb2RlPj00MDApJiYodm9pZCAwIT09ZS52YWx1ZS5ib2R5JiYoInVuZGVmaW5lZCIhPT1lLnZhbHVlLmhlYWRlcnMuZXRhZyYmInVuZGVmaW5lZCIhPT1lLnZhbHVlLmhlYWRlcnNbImxhc3QtbW9kaWZpZWQiXSkpKSxncm91cDpzLmdyb3VwfHwibml0cm8vaGFuZGxlcnMiLGludGVncml0eTpzLmludGVncml0eXx8aGFzaCQxKFtlLHNdKX0saD1mdW5jdGlvbihlLHM9e30pe3JldHVybiBkZWZpbmVDYWNoZWRGdW5jdGlvbihlLHMpfShhc3luYyBoPT57Y29uc3QgZz17fTtmb3IoY29uc3QgZSBvZiBkKXtjb25zdCBzPWgubm9kZS5yZXEuaGVhZGVyc1tlXTt2b2lkIDAhPT1zJiYoZ1tlXT1zKX1jb25zdCB4PWNsb25lV2l0aFByb3h5KGgubm9kZS5yZXEse2hlYWRlcnM6Z30pLCQ9e307bGV0IFM7Y29uc3Qgaj1jcmVhdGVFdmVudCh4LGNsb25lV2l0aFByb3h5KGgubm9kZS5yZXMse3N0YXR1c0NvZGU6MjAwLHdyaXRhYmxlRW5kZWQ6ITEsd3JpdGFibGVGaW5pc2hlZDohMSxoZWFkZXJzU2VudDohMSxjbG9zZWQ6ITEsZ2V0SGVhZGVyOmU9PiRbZV0sc2V0SGVhZGVyKGUscyl7cmV0dXJuICRbZV09cyx0aGlzfSxnZXRIZWFkZXJOYW1lczooKT0+T2JqZWN0LmtleXMoJCksaGFzSGVhZGVyOmU9PmUgaW4gJCxyZW1vdmVIZWFkZXIoZSl7ZGVsZXRlICRbZV19LGdldEhlYWRlcnM6KCk9PiQsZW5kKGUscyxkKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihTPWUpLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiZzKCksImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoKSx0aGlzfSx3cml0ZTooZSxzLGQpPT4oInN0cmluZyI9PXR5cGVvZiBlJiYoUz1lKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmcyh2b2lkIDApLCJmdW5jdGlvbiI9PXR5cGVvZiBkJiZkKCksITApLHdyaXRlSGVhZChlLHMpe2lmKHRoaXMuc3RhdHVzQ29kZT1lLHMpe2lmKEFycmF5LmlzQXJyYXkocyl8fCJzdHJpbmciPT10eXBlb2Ygcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJSYXcgaGVhZGVycyAgaXMgbm90IHN1cHBvcnRlZC4iKTtmb3IoY29uc3QgZSBpbiBzKXtjb25zdCBkPXNbZV07dm9pZCAwIT09ZCYmdGhpcy5zZXRIZWFkZXIoZSxkKX19cmV0dXJuIHRoaXN9fSkpO2ouZmV0Y2g9KGUscyk9PmZldGNoV2l0aEV2ZW50KGosZSxzLHtmZXRjaDp1c2VOaXRyb0FwcCgpLmxvY2FsRmV0Y2h9KSxqLiRmZXRjaD0oZSxzKT0+ZmV0Y2hXaXRoRXZlbnQoaixlLHMse2ZldGNoOmdsb2JhbFRoaXMuJGZldGNofSksai53YWl0VW50aWw9aC53YWl0VW50aWwsai5jb250ZXh0PWguY29udGV4dCxqLmNvbnRleHQuY2FjaGU9e29wdGlvbnM6bX07Y29uc3Qgej1hd2FpdCBlKGopfHxTLEk9ai5ub2RlLnJlcy5nZXRIZWFkZXJzKCk7SS5ldGFnPVN0cmluZyhJLkV0YWd8fEkuZXRhZ3x8YFcvIiR7aGFzaCQxKHopfSJgKSxJWyJsYXN0LW1vZGlmaWVkIl09U3RyaW5nKElbIkxhc3QtTW9kaWZpZWQiXXx8SVsibGFzdC1tb2RpZmllZCJdfHwobmV3IERhdGUpLnRvVVRDU3RyaW5nKCkpO2NvbnN0IFQ9W107cy5zd3I/KHMubWF4QWdlJiZULnB1c2goYHMtbWF4YWdlPSR7cy5tYXhBZ2V9YCkscy5zdGFsZU1heEFnZT9ULnB1c2goYHN0YWxlLXdoaWxlLXJldmFsaWRhdGU9JHtzLnN0YWxlTWF4QWdlfWApOlQucHVzaCgic3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSIpKTpzLm1heEFnZSYmVC5wdXNoKGBtYXgtYWdlPSR7cy5tYXhBZ2V9YCksVC5sZW5ndGg+MCYmKElbImNhY2hlLWNvbnRyb2wiXT1ULmpvaW4oIiwgIikpO3JldHVybntjb2RlOmoubm9kZS5yZXMuc3RhdHVzQ29kZSxoZWFkZXJzOkksYm9keTp6fX0sbSk7cmV0dXJuIGRlZmluZUV2ZW50SGFuZGxlcihhc3luYyBkPT57aWYocy5oZWFkZXJzT25seSl7aWYoaGFuZGxlQ2FjaGVIZWFkZXJzKGQse21heEFnZTpzLm1heEFnZX0pKXJldHVybjtyZXR1cm4gZShkKX1jb25zdCBtPWF3YWl0IGgoZCk7aWYoZC5ub2RlLnJlcy5oZWFkZXJzU2VudHx8ZC5ub2RlLnJlcy53cml0YWJsZUVuZGVkKXJldHVybiBtLmJvZHk7aWYoIWhhbmRsZUNhY2hlSGVhZGVycyhkLHttb2RpZmllZFRpbWU6bmV3IERhdGUobS5oZWFkZXJzWyJsYXN0LW1vZGlmaWVkIl0pLGV0YWc6bS5oZWFkZXJzLmV0YWcsbWF4QWdlOnMubWF4QWdlfSkpe2Qubm9kZS5yZXMuc3RhdHVzQ29kZT1tLmNvZGU7Zm9yKGNvbnN0IGUgaW4gbS5oZWFkZXJzKXtjb25zdCBzPW0uaGVhZGVyc1tlXTsic2V0LWNvb2tpZSI9PT1lP2Qubm9kZS5yZXMuYXBwZW5kSGVhZGVyKGUsc3BsaXRDb29raWVzU3RyaW5nKHMpKTp2b2lkIDAhPT1zJiZkLm5vZGUucmVzLnNldEhlYWRlcihlLHMpfXJldHVybiBtLmJvZHl9fSl9ZnVuY3Rpb24gY2xvbmVXaXRoUHJveHkoZSxzKXtyZXR1cm4gbmV3IFByb3h5KGUse2dldDooZSxkLG0pPT5kIGluIHM/c1tkXTpSZWZsZWN0LmdldChlLGQsbSksc2V0OihlLGQsbSxoKT0+ZCBpbiBzPyhzW2RdPW0sITApOlJlZmxlY3Quc2V0KGUsZCxtLGgpfSl9Y29uc3QgRGk9ZGVmaW5lQ2FjaGVkRXZlbnRIYW5kbGVyO2Z1bmN0aW9uIGtsb25hKGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgcyxkLG09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO2lmKCJbb2JqZWN0IE9iamVjdF0iPT09bSl7aWYoZS5jb25zdHJ1Y3RvciE9PU9iamVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IpZm9yKHMgaW4gZD1uZXcgZS5jb25zdHJ1Y3RvcixlKWUuaGFzT3duUHJvcGVydHkocykmJmRbc10hPT1lW3NdJiYoZFtzXT1rbG9uYShlW3NdKSk7ZWxzZSBmb3IocyBpbiBkPXt9LGUpIl9fcHJvdG9fXyI9PT1zP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHMse3ZhbHVlOmtsb25hKGVbc10pLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtzXT1rbG9uYShlW3NdKTtyZXR1cm4gZH1pZigiW29iamVjdCBBcnJheV0iPT09bSl7Zm9yKHM9ZS5sZW5ndGgsZD1BcnJheShzKTtzLS07KWRbc109a2xvbmEoZVtzXSk7cmV0dXJuIGR9cmV0dXJuIltvYmplY3QgU2V0XSI9PT1tPyhkPW5ldyBTZXQsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2QuYWRkKGtsb25hKGUpKX0pLGQpOiJbb2JqZWN0IE1hcF0iPT09bT8oZD1uZXcgTWFwLGUuZm9yRWFjaChmdW5jdGlvbihlLHMpe2Quc2V0KGtsb25hKHMpLGtsb25hKGUpKX0pLGQpOiJbb2JqZWN0IERhdGVdIj09PW0/bmV3IERhdGUoK2UpOiJbb2JqZWN0IFJlZ0V4cF0iPT09bT8oKGQ9bmV3IFJlZ0V4cChlLnNvdXJjZSxlLmZsYWdzKSkubGFzdEluZGV4PWUubGFzdEluZGV4LGQpOiJbb2JqZWN0IERhdGFWaWV3XSI9PT1tP25ldyBlLmNvbnN0cnVjdG9yKGtsb25hKGUuYnVmZmVyKSk6IltvYmplY3QgQXJyYXlCdWZmZXJdIj09PW0/ZS5zbGljZSgwKToiQXJyYXldIj09PW0uc2xpY2UoLTYpP25ldyBlLmNvbnN0cnVjdG9yKGUpOmV9Y29uc3QgVWk9JG4oe3VpOntjb2xvcnM6e3ByaW1hcnk6ImJsdWUiLG5ldXRyYWw6ImdyYXkifX19LHtudXh0Ont9LGljb246e3Byb3ZpZGVyOiJzZXJ2ZXIiLGNsYXNzOiIiLGFsaWFzZXM6e30saWNvbmlmeUFwaUVuZHBvaW50OiJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbiIsbG9jYWxBcGlFbmRwb2ludDoiL2FwaS9fbnV4dF9pY29uIixmYWxsYmFja1RvQXBpOiEwLGNzc1NlbGVjdG9yUHJlZml4OiJpLSIsY3NzV2hlcmVQc2V1ZG86ITAsY3NzTGF5ZXI6ImJhc2UiLG1vZGU6ImNzcyIsYXR0cnM6eyJhcmlhLWhpZGRlbiI6ITB9LGNvbGxlY3Rpb25zOlsiYWNhZGVtaWNvbnMiLCJha2FyLWljb25zIiwiYW50LWRlc2lnbiIsImFyY3RpY29ucyIsImJhc2lsIiwiYmkiLCJiaXRjb2luLWljb25zIiwiYnBtbiIsImJyYW5kaWNvIiwiYngiLCJieGwiLCJieHMiLCJieXRlc2l6ZSIsImNhcmJvbiIsImNhdHBwdWNjaW4iLCJjYmkiLCJjaGFybSIsImNpIiwiY2liIiwiY2lmIiwiY2lsIiwiY2lyY2xlLWZsYWdzIiwiY2lyY3VtIiwiY2xhcml0eSIsImNvZGV4IiwiY29kaWNvbiIsImNvdmlkIiwiY3J5cHRvY3VycmVuY3kiLCJjcnlwdG9jdXJyZW5jeS1jb2xvciIsImN1aWRhIiwiZGFzaGljb25zIiwiZGV2aWNvbiIsImRldmljb24tcGxhaW4iLCJkaW5raWUtaWNvbnMiLCJkdW8taWNvbnMiLCJlaSIsImVsIiwiZW1vamlvbmUiLCJlbW9qaW9uZS1tb25vdG9uZSIsImVtb2ppb25lLXYxIiwiZW50eXBvIiwiZW50eXBvLXNvY2lhbCIsImVvcy1pY29ucyIsImVwIiwiZXQiLCJldmEiLCJmNyIsImZhIiwiZmEtYnJhbmRzIiwiZmEtcmVndWxhciIsImZhLXNvbGlkIiwiZmE2LWJyYW5kcyIsImZhNi1yZWd1bGFyIiwiZmE2LXNvbGlkIiwiZmE3LWJyYW5kcyIsImZhNy1yZWd1bGFyIiwiZmE3LXNvbGlkIiwiZmFkIiwiZmFtaWNvbnMiLCJmZSIsImZlYXRoZXIiLCJmaWxlLWljb25zIiwiZmxhZyIsImZsYWdwYWNrIiwiZmxhdC1jb2xvci1pY29ucyIsImZsYXQtdWkiLCJmbG93Yml0ZSIsImZsdWVudCIsImZsdWVudC1jb2xvciIsImZsdWVudC1lbW9qaSIsImZsdWVudC1lbW9qaS1mbGF0IiwiZmx1ZW50LWVtb2ppLWhpZ2gtY29udHJhc3QiLCJmbHVlbnQtbWRsMiIsImZvbnRlbGljbyIsImZvbnRpc3RvIiwiZm9ybWtpdCIsImZvdW5kYXRpb24iLCJmeGVtb2ppIiwiZ2FsYSIsImdhbWUtaWNvbnMiLCJnYXJkZW4iLCJnZW8iLCJnZyIsImdpcyIsImdyYXZpdHktdWkiLCJncmlkaWNvbnMiLCJncm9tbWV0LWljb25zIiwiZ3VpZGFuY2UiLCJoZWFsdGhpY29ucyIsImhlcm9pY29ucyIsImhlcm9pY29ucy1vdXRsaW5lIiwiaGVyb2ljb25zLXNvbGlkIiwiaHVnZWljb25zIiwiaHVtYmxlaWNvbnMiLCJpYyIsImljb21vb24tZnJlZSIsImljb24tcGFyayIsImljb24tcGFyay1vdXRsaW5lIiwiaWNvbi1wYXJrLXNvbGlkIiwiaWNvbi1wYXJrLXR3b3RvbmUiLCJpY29uYW1vb24iLCJpY29ub2lyIiwiaWNvbnM4IiwiaWwiLCJpb24iLCJpd3dhIiwiaXgiLCJqYW0iLCJsYSIsImxldHMtaWNvbnMiLCJsaW5lLW1kIiwibGluZWljb25zIiwibG9nb3MiLCJscyIsImxzaWNvbiIsImx1Y2lkZSIsImx1Y2lkZS1sYWIiLCJtYWdlIiwibWFqZXN0aWNvbnMiLCJtYWtpIiwibWFwIiwibWFya2V0ZXEiLCJtYXRlcmlhbC1pY29uLXRoZW1lIiwibWF0ZXJpYWwtc3ltYm9scyIsIm1hdGVyaWFsLXN5bWJvbHMtbGlnaHQiLCJtZGkiLCJtZGktbGlnaHQiLCJtZWRpY2FsLWljb24iLCJtZW1vcnkiLCJtZXRlb2NvbnMiLCJtZXRlb3ItaWNvbnMiLCJtaSIsIm1pbmdjdXRlIiwibW9uby1pY29ucyIsIm15bmF1aSIsIm5pbWJ1cyIsIm5vbmljb25zIiwibm90byIsIm5vdG8tdjEiLCJucmsiLCJvY3RpY29uIiwib2kiLCJvb3VpIiwib3Blbm1vamkiLCJvdWkiLCJwYWphbWFzIiwicGVwaWNvbnMiLCJwZXBpY29ucy1wZW5jaWwiLCJwZXBpY29ucy1wb3AiLCJwZXBpY29ucy1wcmludCIsInBoIiwicGljb24iLCJwaXhlbCIsInBpeGVsYXJ0aWNvbnMiLCJwcmltZSIsInByb2ljb25zIiwicHMiLCJxbGVtZW50aW5lLWljb25zIiwicXVpbGwiLCJyYWRpeC1pY29ucyIsInJhcGhhZWwiLCJyaSIsInJpdmV0LWljb25zIiwicm9lbnRnZW4iLCJzaSIsInNpLWdseXBoIiwic2lkZWtpY2tpY29ucyIsInNpbXBsZS1pY29ucyIsInNpbXBsZS1saW5lLWljb25zIiwic2tpbGwtaWNvbnMiLCJzb2xhciIsInN0YXNoIiwic3RyZWFtbGluZSIsInN0cmVhbWxpbmUtYmxvY2siLCJzdHJlYW1saW5lLWNvbG9yIiwic3RyZWFtbGluZS1jeWJlciIsInN0cmVhbWxpbmUtY3liZXItY29sb3IiLCJzdHJlYW1saW5lLWVtb2ppcyIsInN0cmVhbWxpbmUtZmxleCIsInN0cmVhbWxpbmUtZmxleC1jb2xvciIsInN0cmVhbWxpbmUtZnJlZWhhbmQiLCJzdHJlYW1saW5lLWZyZWVoYW5kLWNvbG9yIiwic3RyZWFtbGluZS1rYW1lbGVvbi1jb2xvciIsInN0cmVhbWxpbmUtbG9nb3MiLCJzdHJlYW1saW5lLXBpeGVsIiwic3RyZWFtbGluZS1wbHVtcCIsInN0cmVhbWxpbmUtcGx1bXAtY29sb3IiLCJzdHJlYW1saW5lLXNoYXJwIiwic3RyZWFtbGluZS1zaGFycC1jb2xvciIsInN0cmVhbWxpbmUtc3RpY2tpZXMtY29sb3IiLCJzdHJlYW1saW5lLXVsdGltYXRlIiwic3RyZWFtbGluZS11bHRpbWF0ZS1jb2xvciIsInN1YndheSIsInN2Zy1zcGlubmVycyIsInN5c3RlbS11aWNvbnMiLCJ0YWJsZXIiLCJ0ZGVzaWduIiwidGVlbnlpY29ucyIsInRlbWFraSIsInRva2VuIiwidG9rZW4tYnJhbmRlZCIsInRvcGNvYXQiLCJ0d2Vtb2ppIiwidHlwY24iLCJ1aWwiLCJ1aW0iLCJ1aXMiLCJ1aXQiLCJ1aXciLCJ1bmpzIiwidmFhZGluIiwidnMiLCJ2c2NvZGUtaWNvbnMiLCJ3ZWJzeW1ib2wiLCJ3ZXVpIiwid2hoIiwid2kiLCJ3cGYiLCJ6bWRpIiwiem9uZGljb25zIl0sZmV0Y2hUaW1lb3V0OjE1MDB9LHVpOntjb2xvcnM6e3ByaW1hcnk6ImdyZWVuIixzZWNvbmRhcnk6ImJsdWUiLHN1Y2Nlc3M6ImdyZWVuIixpbmZvOiJibHVlIix3YXJuaW5nOiJ5ZWxsb3ciLGVycm9yOiJyZWQiLG5ldXRyYWw6InNsYXRlIn0saWNvbnM6e2Fycm93RG93bjoiaS1sdWNpZGUtYXJyb3ctZG93biIsYXJyb3dMZWZ0OiJpLWx1Y2lkZS1hcnJvdy1sZWZ0IixhcnJvd1JpZ2h0OiJpLWx1Y2lkZS1hcnJvdy1yaWdodCIsYXJyb3dVcDoiaS1sdWNpZGUtYXJyb3ctdXAiLGNhdXRpb246ImktbHVjaWRlLWNpcmNsZS1hbGVydCIsY2hlY2s6ImktbHVjaWRlLWNoZWNrIixjaGV2cm9uRG91YmxlTGVmdDoiaS1sdWNpZGUtY2hldnJvbnMtbGVmdCIsY2hldnJvbkRvdWJsZVJpZ2h0OiJpLWx1Y2lkZS1jaGV2cm9ucy1yaWdodCIsY2hldnJvbkRvd246ImktbHVjaWRlLWNoZXZyb24tZG93biIsY2hldnJvbkxlZnQ6ImktbHVjaWRlLWNoZXZyb24tbGVmdCIsY2hldnJvblJpZ2h0OiJpLWx1Y2lkZS1jaGV2cm9uLXJpZ2h0IixjaGV2cm9uVXA6ImktbHVjaWRlLWNoZXZyb24tdXAiLGNsb3NlOiJpLWx1Y2lkZS14Iixjb3B5OiJpLWx1Y2lkZS1jb3B5Iixjb3B5Q2hlY2s6ImktbHVjaWRlLWNvcHktY2hlY2siLGRhcms6ImktbHVjaWRlLW1vb24iLGRyYWc6ImktbHVjaWRlLWdyaXAtdmVydGljYWwiLGVsbGlwc2lzOiJpLWx1Y2lkZS1lbGxpcHNpcyIsZXJyb3I6ImktbHVjaWRlLWNpcmNsZS14IixleHRlcm5hbDoiaS1sdWNpZGUtYXJyb3ctdXAtcmlnaHQiLGV5ZToiaS1sdWNpZGUtZXllIixleWVPZmY6ImktbHVjaWRlLWV5ZS1vZmYiLGZpbGU6ImktbHVjaWRlLWZpbGUiLGZvbGRlcjoiaS1sdWNpZGUtZm9sZGVyIixmb2xkZXJPcGVuOiJpLWx1Y2lkZS1mb2xkZXItb3BlbiIsaGFzaDoiaS1sdWNpZGUtaGFzaCIsaW5mbzoiaS1sdWNpZGUtaW5mbyIsbGlnaHQ6ImktbHVjaWRlLXN1biIsbG9hZGluZzoiaS1sdWNpZGUtbG9hZGVyLWNpcmNsZSIsbWVudToiaS1sdWNpZGUtbWVudSIsbWludXM6ImktbHVjaWRlLW1pbnVzIixwYW5lbENsb3NlOiJpLWx1Y2lkZS1wYW5lbC1sZWZ0LWNsb3NlIixwYW5lbE9wZW46ImktbHVjaWRlLXBhbmVsLWxlZnQtb3BlbiIscGx1czoiaS1sdWNpZGUtcGx1cyIscmVsb2FkOiJpLWx1Y2lkZS1yb3RhdGUtY2N3IixzZWFyY2g6ImktbHVjaWRlLXNlYXJjaCIsc3RvcDoiaS1sdWNpZGUtc3F1YXJlIixzdWNjZXNzOiJpLWx1Y2lkZS1jaXJjbGUtY2hlY2siLHN5c3RlbToiaS1sdWNpZGUtbW9uaXRvciIsdGlwOiJpLWx1Y2lkZS1saWdodGJ1bGIiLHVwbG9hZDoiaS1sdWNpZGUtdXBsb2FkIix3YXJuaW5nOiJpLWx1Y2lkZS10cmlhbmdsZS1hbGVydCJ9LHR2Ont0d01lcmdlQ29uZmlnOnt9fX19KSxMaT0vXGQvLEFpPVsiLSIsIl8iLCIvIiwiLiJdO2Z1bmN0aW9uIGlzVXBwZXJjYXNlKGU9IiIpe2lmKCFMaS50ZXN0KGUpKXJldHVybiBlIT09ZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHVwcGVyRmlyc3QoZSl7cmV0dXJuIGU/ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk6IiJ9ZnVuY3Rpb24ga2ViYWJDYXNlKGUscyl7cmV0dXJuIGU/KEFycmF5LmlzQXJyYXkoZSk/ZTpmdW5jdGlvbihlKXtjb25zdCBzPUFpLGQ9W107aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZDtsZXQgbSxoLGc9IiI7Zm9yKGNvbnN0IHggb2YgZSl7Y29uc3QgZT1zLmluY2x1ZGVzKHgpO2lmKCEwPT09ZSl7ZC5wdXNoKGcpLGc9IiIsbT12b2lkIDA7Y29udGludWV9Y29uc3QgJD1pc1VwcGVyY2FzZSh4KTtpZighMT09PWgpe2lmKCExPT09bSYmITA9PT0kKXtkLnB1c2goZyksZz14LG09JDtjb250aW51ZX1pZighMD09PW0mJiExPT09JCYmZy5sZW5ndGg+MSl7Y29uc3QgZT1nLmF0KC0xKTtkLnB1c2goZy5zbGljZSgwLE1hdGgubWF4KDAsZy5sZW5ndGgtMSkpKSxnPWUreCxtPSQ7Y29udGludWV9fWcrPXgsbT0kLGg9ZX1yZXR1cm4gZC5wdXNoKGcpLGR9KGUpKS5tYXAoZT0+ZS50b0xvd2VyQ2FzZSgpKS5qb2luKHMpOiIifWZ1bmN0aW9uIGdldEVudihlLHMpe2NvbnN0IGQ9KG09ZSxrZWJhYkNhc2UobXx8IiIsIl8iKSkudG9VcHBlckNhc2UoKTt2YXIgbTtyZXR1cm4gZGVzdHIoVC5lbnZbcy5wcmVmaXgrZF0/P1QuZW52W3MuYWx0UHJlZml4K2RdKX1mdW5jdGlvbiBfaXNPYmplY3QoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhcHBseUVudihlLHMsZD0iIil7Zm9yKGNvbnN0IG0gaW4gZSl7Y29uc3QgaD1kP2Ake2R9XyR7bX1gOm0sZz1nZXRFbnYoaCxzKTtfaXNPYmplY3QoZVttXSk/X2lzT2JqZWN0KGcpPyhlW21dPXsuLi5lW21dLC4uLmd9LGFwcGx5RW52KGVbbV0scyxoKSk6dm9pZCAwPT09Zz9hcHBseUVudihlW21dLHMsaCk6ZVttXT1nPz9lW21dOmVbbV09Zz8/ZVttXSxzLmVudkV4cGFuc2lvbiYmInN0cmluZyI9PXR5cGVvZiBlW21dJiYoZVttXT1fZXhwYW5kRnJvbUVudihlW21dKSl9cmV0dXJuIGV9Y29uc3QgcWk9L1x7XHsoW157fV0qKVx9XH0vZztmdW5jdGlvbiBfZXhwYW5kRnJvbUVudihlKXtyZXR1cm4gZS5yZXBsYWNlKHFpLChlLHMpPT5ULmVudltzXXx8ZSl9Y29uc3QgRmk9e2FwcDp7YmFzZVVSTDoiLyIsYnVpbGRJZDoiZTIzOTc0YWEtZjg4ZC00YTQyLTk3NTktMWYxYWU3ODg0ZWY4IixidWlsZEFzc2V0c0RpcjoiL19udXh0LyIsY2RuVVJMOiIifSxuaXRybzp7ZW52UHJlZml4OiJOVVhUXyIscm91dGVSdWxlczp7Ii9fX251eHRfZXJyb3IiOntjYWNoZTohMX0sIi91c2VycyI6e3JlZGlyZWN0Ont0bzoiL29yZ2FuaXphdGlvbi9tZW1iZXJzIixzdGF0dXNDb2RlOjMwN319LCIvYXBpLyoqIjp7Y3N1cmY6ITF9LCIvYXBpL3BheW1lbnRzL3NlcGF5L3dlYmhvb2siOntjb3JzOiExLHNlY3VyaXR5OntyYXRlTGltaXRlcjohMX19LCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9zZW5kIjp7c2VjdXJpdHk6e3hzc1ZhbGlkYXRvcjohMX19LCIvYXBpL3N1cHBvcnQvdGlja2V0cyI6e3NlY3VyaXR5Ont4c3NWYWxpZGF0b3I6ITF9fSwiL2FwaS9zdXBwb3J0L3RpY2tldHMvKioiOntzZWN1cml0eTp7eHNzVmFsaWRhdG9yOiExfX0sIi9hcGkvc3lzdGVtL3RpY2tldHMiOntzZWN1cml0eTp7eHNzVmFsaWRhdG9yOiExfX0sIi9hcGkvc3lzdGVtL3RpY2tldHMvKioiOntzZWN1cml0eTp7eHNzVmFsaWRhdG9yOiExfX0sIi9hcGkvYXV0aC8qKiI6e2NvcnM6ITF9LCIvYXBpL2Nyb24vKioiOntjb3JzOiExfSwiL19fbnV4dF9oaW50cy8qKiI6e2NvcnM6ITEsY3N1cmY6ITF9LCIvKioiOntoZWFkZXJzOnsiUmVmZXJyZXItUG9saWN5Ijoibm8tcmVmZXJyZXIiLCJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IjoibWF4LWFnZT0xNTU1MjAwMDsgaW5jbHVkZVN1YkRvbWFpbnM7IHByZWxvYWQiLCJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIjoibm9zbmlmZiIsIlgtRG93bmxvYWQtT3B0aW9ucyI6Im5vb3BlbiIsIlgtRnJhbWUtT3B0aW9ucyI6IlNBTUVPUklHSU4iLCJYLVBlcm1pdHRlZC1Dcm9zcy1Eb21haW4tUG9saWNpZXMiOiJub25lIiwiWC1YU1MtUHJvdGVjdGlvbiI6IjAifX0sIi9fbnV4dC9idWlsZHMvbWV0YS8qKiI6e2hlYWRlcnM6eyJjYWNoZS1jb250cm9sIjoicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwLCBpbW11dGFibGUifX0sIi9fbnV4dC9idWlsZHMvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0xLCBpbW11dGFibGUifX0sIi9fZm9udHMvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlIn19LCIvX3NjcmlwdHMvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlIn19LCIvX251eHQvKioiOntoZWFkZXJzOnsiY2FjaGUtY29udHJvbCI6InB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlIn19fX0scHVibGljOntzc2xFbmFibGVkOiExLGJhc2VEb21haW46ImxvY2FsaG9zdDozMDAwIixkZW1vTW9kZTohMSwibnV4dC1zY3JpcHRzIjp7dmVyc2lvbjoiIixkZWZhdWx0U2NyaXB0T3B0aW9uczp7dHJpZ2dlcjoib25OdXh0UmVhZHkifX0sZGV2aWNlOntkZWZhdWx0VXNlckFnZW50OiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xM18yKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNjQuMC4zMjgyLjM5IFNhZmFyaS81MzcuMzYifSxodWI6e30sY3N1cmY6e2hlYWRlck5hbWU6ImNzcmYtdG9rZW4ifX0sYXV0aFNlY3JldDoiIix3ZWJob29rU2lnbmluZ1NlY3JldDoiIixnb29nbGVDbGllbnRJZDoiIixnb29nbGVDbGllbnRTZWNyZXQ6IiIsZ2l0aHViQ2xpZW50SWQ6IiIsZ2l0aHViQ2xpZW50U2VjcmV0OiIiLHNtdHBIb3N0OiJsb2NhbGhvc3QiLHNtdHBQb3J0OjEwMjUsc210cFVzZXI6IiIsc210cFBhc3M6IiIsc210cEZyb206Ik51eHQgVGVtcGxhdGUgPG5vcmVwbHlAbG9jYWxob3N0PiIsc2VwYXlUcmFuc2FjdGlvblByZWZpeDoiIixzZXBheUJhbmtOdW1iZXI6IiIsc2VwYXlCYW5rTmFtZToiIix0YXNrU2VjcmV0OiIiLGNyb25TZWNyZXQ6IiIsY3VzdG9tZXJTdXBwb3J0RW1haWw6IiIsZ2l0aHViUmVsZWFzZVJlcG86IiIsZ2l0aHViVG9rZW46IiIsaWNvbjp7c2VydmVyS25vd25Dc3NDbGFzc2VzOltdfSwibnV4dC1zY3JpcHRzIjp7dmVyc2lvbjoiMC4xMy4yIn0saHViOntkaXI6Ii9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS8uZGF0YSIsaG9zdGluZzoiY2xvdWRmbGFyZS1tb2R1bGUiLGJsb2I6e2RyaXZlcjoiY2xvdWRmbGFyZS1yMiIsYnVja2V0TmFtZToibnV4dC10ZW1wbGF0ZS1wcm9kIixiaW5kaW5nOiJCTE9CIn0sY2FjaGU6e2JpbmRpbmc6IkNBQ0hFIixkcml2ZXI6ImNsb3VkZmxhcmUta3YtYmluZGluZyJ9LGRiOnttaWdyYXRpb25zRGlyczpbIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvc3lzdGVtL3NlcnZlci9kYi9taWdyYXRpb25zIiwiL1VzZXJzL2hhb25ndXllbi9Eb2N1bWVudHMvdGhlY29kZW9yaWdpbi9udXh0LXRlbXBsYXRlL2xheWVycy9zdXBwb3J0L3NlcnZlci9kYi9taWdyYXRpb25zIiwiL1VzZXJzL2hhb25ndXllbi9Eb2N1bWVudHMvdGhlY29kZW9yaWdpbi9udXh0LXRlbXBsYXRlL2xheWVycy9zZWxmaG9zdC9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvcmVmZXJyYWwvc2VydmVyL2RiL21pZ3JhdGlvbnMiLCIvVXNlcnMvaGFvbmd1eWVuL0RvY3VtZW50cy90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUvbGF5ZXJzL3Byb2plY3Qvc2VydmVyL2RiL21pZ3JhdGlvbnMiLCIvVXNlcnMvaGFvbmd1eWVuL0RvY3VtZW50cy90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUvbGF5ZXJzL3Byb2R1Y3Qvc2VydmVyL2RiL21pZ3JhdGlvbnMiLCIvVXNlcnMvaGFvbmd1eWVuL0RvY3VtZW50cy90aGVjb2Rlb3JpZ2luL251eHQtdGVtcGxhdGUvbGF5ZXJzL25vdGlmaWNhdGlvbi9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvYmlsbGluZy9zZXJ2ZXIvZGIvbWlncmF0aW9ucyIsIi9Vc2Vycy9oYW9uZ3V5ZW4vRG9jdW1lbnRzL3RoZWNvZGVvcmlnaW4vbnV4dC10ZW1wbGF0ZS9sYXllcnMvYXV0aC9zZXJ2ZXIvZGIvbWlncmF0aW9ucyJdLHF1ZXJpZXNQYXRoczpbXSxhcHBseU1pZ3JhdGlvbnNEdXJpbmdCdWlsZDohMSxhcHBseU1pZ3JhdGlvbnNEdXJpbmdEZXY6ITAsZGlhbGVjdDoic3FsaXRlIixkcml2ZXI6ImQxIixjb25uZWN0aW9uOntkYXRhYmFzZUlkOiIifX0sa3Y6e2JpbmRpbmc6IktWIixkcml2ZXI6ImNsb3VkZmxhcmUta3YtYmluZGluZyJ9fSxwcml2YXRlOntiYXNpY0F1dGg6ITF9LHNlY3VyaXR5OntzdHJpY3Q6ITAsaGVhZGVyczp7Y3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeToic2FtZS1vcmlnaW4iLGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OiJzYW1lLW9yaWdpbiIsY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTohMSxjb250ZW50U2VjdXJpdHlQb2xpY3k6eyJiYXNlLXVyaSI6WyInbm9uZSciXSwiZGVmYXVsdC1zcmMiOlsiJ3NlbGYnIl0sImNvbm5lY3Qtc3JjIjpbIidzZWxmJyIsIndzOiIsIndzczoiLCJodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS8iLCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9yZWNhcHRjaGEvIiwiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20iLCJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZWFwaXMuY29tIiwiaHR0cHM6Ly9pZGVudGl0eXRvb2xraXQuZ29vZ2xlYXBpcy5jb20iLCJodHRwczovL2ZpcmVzdG9yZS5nb29nbGVhcGlzLmNvbSIsImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIl0sImZvbnQtc3JjIjpbIidzZWxmJyIsImh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iXSwiZm9ybS1hY3Rpb24iOlsiJ3NlbGYnIl0sImZyYW1lLWFuY2VzdG9ycyI6WyInc2VsZiciXSwiZnJhbWUtc3JjIjpbIidzZWxmJyIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vIiwiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vcmVjYXB0Y2hhLyIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhLyJdLCJpbWctc3JjIjpbIidzZWxmJyIsImRhdGE6IiwiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvIiwiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vcmVjYXB0Y2hhLyIsImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImh0dHBzOi8vZ2l0aHViLmNvbSIsImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIiwiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS8iLCJodHRwczovL3FyLnNlcGF5LnZuIl0sIm1hbmlmZXN0LXNyYyI6WyInc2VsZiciXSwibWVkaWEtc3JjIjpbIidzZWxmJyJdLCJvYmplY3Qtc3JjIjpbIidub25lJyJdLCJzY3JpcHQtc3JjLWF0dHIiOlsiJ25vbmUnIl0sInN0eWxlLXNyYyI6WyInc2VsZiciLCIndW5zYWZlLWlubGluZSciLCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIl0sInNjcmlwdC1zcmMiOlsiJ3NlbGYnIiwiJ3Vuc2FmZS1pbmxpbmUnIiwiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20iLCJodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS8iLCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9yZWNhcHRjaGEvIl0sInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiOiEwLCJ3b3JrZXItc3JjIjpbIidzZWxmJyJdfSxvcmlnaW5BZ2VudENsdXN0ZXI6Ij8xIixyZWZlcnJlclBvbGljeToibm8tcmVmZXJyZXIiLHN0cmljdFRyYW5zcG9ydFNlY3VyaXR5OnttYXhBZ2U6MTU1NTJlMyxpbmNsdWRlU3ViZG9tYWluczohMCxwcmVsb2FkOiEwfSx4Q29udGVudFR5cGVPcHRpb25zOiJub3NuaWZmIix4RE5TUHJlZmV0Y2hDb250cm9sOiJvZmYiLHhEb3dubG9hZE9wdGlvbnM6Im5vb3BlbiIseEZyYW1lT3B0aW9uczoiU0FNRU9SSUdJTiIseFBlcm1pdHRlZENyb3NzRG9tYWluUG9saWNpZXM6Im5vbmUiLHhYU1NQcm90ZWN0aW9uOiIwIixwZXJtaXNzaW9uc1BvbGljeTp7YWNjZWxlcm9tZXRlcjpbXSxhdXRvcGxheTpbXSxjYW1lcmE6W10sImRpc3BsYXktY2FwdHVyZSI6W10sImVuY3J5cHRlZC1tZWRpYSI6W10sZnVsbHNjcmVlbjpbXSxnZW9sb2NhdGlvbjpbXSxneXJvc2NvcGU6W10sbWFnbmV0b21ldGVyOltdLG1pY3JvcGhvbmU6W10sbWlkaTpbXSxwYXltZW50OltdLCJwaWN0dXJlLWluLXBpY3R1cmUiOltdLCJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IjpbXSwic2NyZWVuLXdha2UtbG9jayI6W10sInN5bmMteGhyIjpbInNlbGYiXSx1c2I6W10sIndlYi1zaGFyZSI6W10sInhyLXNwYXRpYWwtdHJhY2tpbmciOltdfX0scmVxdWVzdFNpemVMaW1pdGVyOnttYXhSZXF1ZXN0U2l6ZUluQnl0ZXM6MjA5NzE1MixtYXhVcGxvYWRGaWxlUmVxdWVzdEluQnl0ZXM6ODM4ODYwOCx0aHJvd0Vycm9yOiEwfSxyYXRlTGltaXRlcjp7dG9rZW5zUGVySW50ZXJ2YWw6MTUwLGludGVydmFsOjNlNSxoZWFkZXJzOiExLGRyaXZlcjp7bmFtZToibHJ1LWNhY2hlIn0sd2hpdGVMaXN0OlsiMTI3LjAuMC4xIiwiOjoxIiwibG9jYWxob3N0Il0saXBIZWFkZXI6IiIsdGhyb3dFcnJvcjohMH0seHNzVmFsaWRhdG9yOnttZXRob2RzOlsiR0VUIiwiUE9TVCJdLHRocm93RXJyb3I6ITB9LGNvcnNIYW5kbGVyOntvcmlnaW46Imh0dHA6Ly9sb2NhbGhvc3Q6MzAwMiIsbWV0aG9kczpbIkdFVCIsIlBPU1QiLCJQVVQiLCJQQVRDSCIsIkRFTEVURSIsIk9QVElPTlMiXSxwcmVmbGlnaHQ6e3N0YXR1c0NvZGU6MjA0fSxhbGxvd0hlYWRlcnM6WyJDb250ZW50LVR5cGUiLCJBdXRob3JpemF0aW9uIl0sY3JlZGVudGlhbHM6ITB9LGFsbG93ZWRNZXRob2RzUmVzdHJpY3Rlcjp7bWV0aG9kczoiKiIsdGhyb3dFcnJvcjohMH0saGlkZVBvd2VyZWRCeTohMCxlbmFibGVkOiEwLGNzcmY6e2VuYWJsZWQ6ITB9LG5vbmNlOiEwLHJlbW92ZUxvZ2dlcnM6ITAsc3NnOnttZXRhOiEwLGhhc2hTY3JpcHRzOiEwLGhhc2hTdHlsZXM6ITEsbml0cm9IZWFkZXJzOiEwLGV4cG9ydFRvUHJlc2V0czohMH0sc3JpOiEwfSxjc3VyZjp7aHR0cHM6ITAsY29va2llS2V5OiJfX0hvc3QtY3NyZiIsY29va2llOntwYXRoOiIvIixodHRwT25seTohMCxzYW1lU2l0ZToic3RyaWN0IixzZWN1cmU6ITB9LGhlYWRlck5hbWU6ImNzcmYtdG9rZW4iLG1ldGhvZHNUb1Byb3RlY3Q6WyJQT1NUIiwiUFVUIiwiUEFUQ0giXSxlbmFibGVkOiEwLGVuY3J5cHRTZWNyZXQ6IjgwZG9UR0RMemIyWmVZN0NoUE03ZHRwOStveER2dz09In0scmVzZW5kOnthcGlLZXk6IiJ9fSxCaT17cHJlZml4OiJOSVRST18iLGFsdFByZWZpeDpGaS5uaXRyby5lbnZQcmVmaXg/P1QuZW52Lk5JVFJPX0VOVl9QUkVGSVg/PyJfIixlbnZFeHBhbnNpb246Rmkubml0cm8uZW52RXhwYW5zaW9uPz9ULmVudi5OSVRST19FTlZfRVhQQU5TSU9OPz8hMX0sWmk9X2RlZXBGcmVlemUoYXBwbHlFbnYoa2xvbmEoRmkpLEJpKSk7ZnVuY3Rpb24gdXNlUnVudGltZUNvbmZpZyhlKXtpZighZSlyZXR1cm4gWmk7aWYoZS5jb250ZXh0Lm5pdHJvLnJ1bnRpbWVDb25maWcpcmV0dXJuIGUuY29udGV4dC5uaXRyby5ydW50aW1lQ29uZmlnO2NvbnN0IHM9a2xvbmEoRmkpO3JldHVybiBhcHBseUVudihzLEJpKSxlLmNvbnRleHQubml0cm8ucnVudGltZUNvbmZpZz1zLHN9Y29uc3QgTWk9X2RlZXBGcmVlemUoa2xvbmEoVWkpKTtmdW5jdGlvbiBfZGVlcEZyZWV6ZShlKXtjb25zdCBzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpO2Zvcihjb25zdCBkIG9mIHMpe2NvbnN0IHM9ZVtkXTtzJiYib2JqZWN0Ij09dHlwZW9mIHMmJl9kZWVwRnJlZXplKHMpfXJldHVybiBPYmplY3QuZnJlZXplKGUpfW5ldyBQcm94eShPYmplY3QuY3JlYXRlKG51bGwpLHtnZXQ6KGUscyk9Pntjb25zb2xlLndhcm4oIlBsZWFzZSB1c2UgYHVzZVJ1bnRpbWVDb25maWcoKWAgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgY29uZmlnIGRpcmVjdGx5LiIpO2NvbnN0IGQ9dXNlUnVudGltZUNvbmZpZygpO2lmKHMgaW4gZClyZXR1cm4gZFtzXX19KTtjb25zdCBRaT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp2b2lkIDAhPT1Ibj9Ibjp7fSxWaT0iX191bmN0eF9fIixIaT1RaVtWaV18fChRaVtWaV09ZnVuY3Rpb24oZT17fSl7Y29uc3Qgcz17fTtyZXR1cm57Z2V0OihkLG09e30pPT4oc1tkXXx8KHNbZF09ZnVuY3Rpb24oZT17fSl7bGV0IHMsZD0hMTtjb25zdCBjaGVja0NvbmZsaWN0PWU9PntpZihzJiZzIT09ZSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgY29uZmxpY3QiKX07bGV0IG07aWYoZS5hc3luY0NvbnRleHQpe2NvbnN0IHM9ZS5Bc3luY0xvY2FsU3RvcmFnZXx8Z2xvYmFsVGhpcy5Bc3luY0xvY2FsU3RvcmFnZTtzP209bmV3IHM6Y29uc29sZS53YXJuKCJbdW5jdHhdIGBBc3luY0xvY2FsU3RvcmFnZWAgaXMgbm90IHByb3ZpZGVkLiIpfWNvbnN0IF9nZXRDdXJyZW50SW5zdGFuY2U9KCk9PntpZihtKXtjb25zdCBlPW0uZ2V0U3RvcmUoKTtpZih2b2lkIDAhPT1lKXJldHVybiBlfXJldHVybiBzfTtyZXR1cm57dXNlOigpPT57Y29uc3QgZT1fZ2V0Q3VycmVudEluc3RhbmNlKCk7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIpO3JldHVybiBlfSx0cnlVc2U6KCk9Pl9nZXRDdXJyZW50SW5zdGFuY2UoKSxzZXQ6KGUsbSk9PnttfHxjaGVja0NvbmZsaWN0KGUpLHM9ZSxkPSEwfSx1bnNldDooKT0+e3M9dm9pZCAwLGQ9ITF9LGNhbGw6KGUsaCk9PntjaGVja0NvbmZsaWN0KGUpLHM9ZTt0cnl7cmV0dXJuIG0/bS5ydW4oZSxoKTpoKCl9ZmluYWxseXtkfHwocz12b2lkIDApfX0sYXN5bmMgY2FsbEFzeW5jKGUsaCl7cz1lO2NvbnN0IG9uUmVzdG9yZT0oKT0+e3M9ZX0sb25MZWF2ZT0oKT0+cz09PWU/b25SZXN0b3JlOnZvaWQgMDtKaS5hZGQob25MZWF2ZSk7dHJ5e2NvbnN0IGc9bT9tLnJ1bihlLGgpOmgoKTtyZXR1cm4gZHx8KHM9dm9pZCAwKSxhd2FpdCBnfWZpbmFsbHl7SmkuZGVsZXRlKG9uTGVhdmUpfX19fSh7Li4uZSwuLi5tfSkpLHNbZF0pfX0oKSksZ2V0Q29udGV4dD0oZSxzPXt9KT0+SGkuZ2V0KGUscyksV2k9Il9fdW5jdHhfYXN5bmNfaGFuZGxlcnNfXyIsSmk9UWlbV2ldfHwoUWlbV2ldPW5ldyBTZXQpO2Z1bmN0aW9uIGV4ZWN1dGVBc3luYyhlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBlIG9mIEppKXtjb25zdCBkPWUoKTtkJiZzLnB1c2goZCl9Y29uc3QgcmVzdG9yZT0oKT0+e2Zvcihjb25zdCBlIG9mIHMpZSgpfTtsZXQgZD1lKCk7cmV0dXJuIGQmJiJvYmplY3QiPT10eXBlb2YgZCYmImNhdGNoImluIGQmJihkPWQuY2F0Y2goZT0+e3Rocm93IHJlc3RvcmUoKSxlfSkpLFtkLHJlc3RvcmVdfWNvbnN0IEtpPWdldENvbnRleHQoIm5pdHJvLWFwcCIse2FzeW5jQ29udGV4dDohMCxBc3luY0xvY2FsU3RvcmFnZTp4fSksR2k9dG9Sb3V0ZU1hdGNoZXIoY3JlYXRlUm91dGVyJDEoe3JvdXRlczp1c2VSdW50aW1lQ29uZmlnKCkubml0cm8ucm91dGVSdWxlc30pKTtmdW5jdGlvbiBnZXRSb3V0ZVJ1bGVzKGUpe3JldHVybiBlLmNvbnRleHQuX25pdHJvPWUuY29udGV4dC5fbml0cm98fHt9LGUuY29udGV4dC5fbml0cm8ucm91dGVSdWxlc3x8KGUuY29udGV4dC5fbml0cm8ucm91dGVSdWxlcz1nZXRSb3V0ZVJ1bGVzRm9yUGF0aCh3aXRob3V0QmFzZShlLnBhdGguc3BsaXQoIj8iKVswXSx1c2VSdW50aW1lQ29uZmlnKCkuYXBwLmJhc2VVUkwpKSksZS5jb250ZXh0Ll9uaXRyby5yb3V0ZVJ1bGVzfWZ1bmN0aW9uIGdldFJvdXRlUnVsZXNGb3JQYXRoKGUpe3JldHVybiB3bih7fSwuLi5HaS5tYXRjaEFsbChlKS5yZXZlcnNlKCkpfWNvbnN0IFhpPS9wb3N0fHB1dHxwYXRjaC9pO2Z1bmN0aW9uIGpvaW5IZWFkZXJzKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Uuam9pbigiLCAiKTpTdHJpbmcoZSl9ZnVuY3Rpb24gbm9ybWFsaXplQ29va2llSGVhZGVyKGU9IiIpe3JldHVybiBzcGxpdENvb2tpZXNTdHJpbmcoam9pbkhlYWRlcnMoZSkpfWZ1bmN0aW9uIG5vcm1hbGl6ZUNvb2tpZUhlYWRlcnMoZSl7Y29uc3Qgcz1uZXcgSGVhZGVycztmb3IoY29uc3RbZCxtXW9mIGUpaWYoInNldC1jb29raWUiPT09ZClmb3IoY29uc3QgZSBvZiBub3JtYWxpemVDb29raWVIZWFkZXIobSkpcy5hcHBlbmQoInNldC1jb29raWUiLGUpO2Vsc2Ugcy5zZXQoZCxqb2luSGVhZGVycyhtKSk7cmV0dXJuIHN9ZnVuY3Rpb24gaGFzUmVxSGVhZGVyKGUscyxkKXtjb25zdCBtPWdldFJlcXVlc3RIZWFkZXIoZSxzKTtyZXR1cm4hKCFtfHwic3RyaW5nIiE9dHlwZW9mIG18fCFtLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZCkpfWNvbnN0IGVycm9ySGFuZGxlciQxPWZ1bmN0aW9uKGUscyl7Y29uc3QgZD1kZWZhdWx0SGFuZGxlcihlLHMpO3JldHVybiBzZXRSZXNwb25zZUhlYWRlcnMocyxkLmhlYWRlcnMpLHNldFJlc3BvbnNlU3RhdHVzKHMsZC5zdGF0dXMsZC5zdGF0dXNUZXh0KSxzZW5kKHMsSlNPTi5zdHJpbmdpZnkoZC5ib2R5LG51bGwsMikpfTtmdW5jdGlvbiBkZWZhdWx0SGFuZGxlcihlLHMsZCl7Y29uc3QgbT1lLnVuaGFuZGxlZHx8ZS5mYXRhbCxoPWUuc3RhdHVzQ29kZXx8NTAwLGc9ZS5zdGF0dXNNZXNzYWdlfHwiU2VydmVyIEVycm9yIix4PWdldFJlcXVlc3RVUkwocyx7eEZvcndhcmRlZEhvc3Q6ITAseEZvcndhcmRlZFByb3RvOiEwfSk7aWYoNDA0PT09aCl7Y29uc3QgZT0iLyI7aWYoL15cL1teL10vLnRlc3QoZSkmJiF4LnBhdGhuYW1lLnN0YXJ0c1dpdGgoZSkpe3JldHVybntzdGF0dXM6MzAyLHN0YXR1c1RleHQ6IkZvdW5kIixoZWFkZXJzOntsb2NhdGlvbjpgJHtlfSR7eC5wYXRobmFtZS5zbGljZSgxKX0ke3guc2VhcmNofWB9LGJvZHk6IlJlZGlyZWN0aW5nLi4uIn19fWlmKG0mJiFkPy5zaWxlbnQpe2NvbnN0IGQ9W2UudW5oYW5kbGVkJiYiW3VuaGFuZGxlZF0iLGUuZmF0YWwmJiJbZmF0YWxdIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKTtjb25zb2xlLmVycm9yKGBbcmVxdWVzdCBlcnJvcl0gJHtkfSBbJHtzLm1ldGhvZH1dICR7eH1cbmAsZSl9Y29uc3QgJD17ImNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJ4LWNvbnRlbnQtdHlwZS1vcHRpb25zIjoibm9zbmlmZiIsIngtZnJhbWUtb3B0aW9ucyI6IkRFTlkiLCJyZWZlcnJlci1wb2xpY3kiOiJuby1yZWZlcnJlciIsImNvbnRlbnQtc2VjdXJpdHktcG9saWN5Ijoic2NyaXB0LXNyYyAnbm9uZSc7IGZyYW1lLWFuY2VzdG9ycyAnbm9uZSc7In07c2V0UmVzcG9uc2VTdGF0dXMocyxoLGcpLDQwNCE9PWgmJmdldFJlc3BvbnNlSGVhZGVyKHMsImNhY2hlLWNvbnRyb2wiKXx8KCRbImNhY2hlLWNvbnRyb2wiXT0ibm8tY2FjaGUiKTtyZXR1cm57c3RhdHVzOmgsc3RhdHVzVGV4dDpnLGhlYWRlcnM6JCxib2R5OntlcnJvcjohMCx1cmw6eC5ocmVmLHN0YXR1c0NvZGU6aCxzdGF0dXNNZXNzYWdlOmcsbWVzc2FnZTptPyJTZXJ2ZXIgRXJyb3IiOmUubWVzc2FnZSxkYXRhOm0/dm9pZCAwOmUuZGF0YX19fWNvbnN0IFlpPVthc3luYyBmdW5jdGlvbihlLHMse2RlZmF1bHRIYW5kbGVyOmR9KXtpZihzLmhhbmRsZWR8fGZ1bmN0aW9uKGUpe3JldHVybiFoYXNSZXFIZWFkZXIoZSwiYWNjZXB0IiwidGV4dC9odG1sIikmJihoYXNSZXFIZWFkZXIoZSwiYWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpfHxoYXNSZXFIZWFkZXIoZSwidXNlci1hZ2VudCIsImN1cmwvIil8fGhhc1JlcUhlYWRlcihlLCJ1c2VyLWFnZW50IiwiaHR0cGllLyIpfHxoYXNSZXFIZWFkZXIoZSwic2VjLWZldGNoLW1vZGUiLCJjb3JzIil8fGUucGF0aC5zdGFydHNXaXRoKCIvYXBpLyIpfHxlLnBhdGguZW5kc1dpdGgoIi5qc29uIikpfShzKSlyZXR1cm47Y29uc3QgbT1hd2FpdCBkKGUscyx7anNvbjohMH0pO2lmKDQwND09PShlLnN0YXR1c3x8ZS5zdGF0dXNDb2RlfHw1MDApJiYzMDI9PT1tLnN0YXR1cylyZXR1cm4gc2V0UmVzcG9uc2VIZWFkZXJzKHMsbS5oZWFkZXJzKSxzZXRSZXNwb25zZVN0YXR1cyhzLG0uc3RhdHVzLG0uc3RhdHVzVGV4dCksc2VuZChzLEpTT04uc3RyaW5naWZ5KG0uYm9keSxudWxsLDIpKTtjb25zdCBoPW0uYm9keSxnPW5ldyBVUkwoaC51cmwpO2gudXJsPXdpdGhvdXRCYXNlKGcucGF0aG5hbWUsdXNlUnVudGltZUNvbmZpZyhzKS5hcHAuYmFzZVVSTCkrZy5zZWFyY2grZy5oYXNoLGgubWVzc2FnZT1lLnVuaGFuZGxlZD9oLm1lc3NhZ2V8fCJTZXJ2ZXIgRXJyb3IiOmUubWVzc2FnZXx8aC5tZXNzYWdlfHwiU2VydmVyIEVycm9yIixoLmRhdGF8fD1lLmRhdGEsaC5zdGF0dXNUZXh0fHw9ZS5zdGF0dXNUZXh0fHxlLnN0YXR1c01lc3NhZ2UsZGVsZXRlIG0uaGVhZGVyc1siY29udGVudC10eXBlIl0sZGVsZXRlIG0uaGVhZGVyc1siY29udGVudC1zZWN1cml0eS1wb2xpY3kiXSxzZXRSZXNwb25zZUhlYWRlcnMocyxtLmhlYWRlcnMpO2NvbnN0IHg9Z2V0UmVxdWVzdEhlYWRlcnMocyksJD1zLnBhdGguc3RhcnRzV2l0aCgiL19fbnV4dF9lcnJvciIpfHwhIXhbIngtbnV4dC1lcnJvciJdP251bGw6YXdhaXQgdXNlTml0cm9BcHAoKS5sb2NhbEZldGNoKHdpdGhRdWVyeShqb2luVVJMKHVzZVJ1bnRpbWVDb25maWcocykuYXBwLmJhc2VVUkwsIi9fX251eHRfZXJyb3IiKSxoKSx7aGVhZGVyczp7Li4ueCwieC1udXh0LWVycm9yIjoidHJ1ZSJ9LHJlZGlyZWN0OiJtYW51YWwifSkuY2F0Y2goKCk9Pm51bGwpO2lmKHMuaGFuZGxlZClyZXR1cm47aWYoISQpe2NvbnN0e3RlbXBsYXRlOmV9PWF3YWl0IGltcG9ydCgiLi4vXy9lcnJvci01MDAubWpzIik7cmV0dXJuIHNldFJlc3BvbnNlSGVhZGVyKHMsIkNvbnRlbnQtVHlwZSIsInRleHQvaHRtbDtjaGFyc2V0PVVURi04Iiksc2VuZChzLGUoaCkpfWNvbnN0IFM9YXdhaXQgJC50ZXh0KCk7Zm9yKGNvbnN0W2UsZF1vZiAkLmhlYWRlcnMuZW50cmllcygpKSJzZXQtY29va2llIiE9PWU/c2V0UmVzcG9uc2VIZWFkZXIocyxlLGQpOmFwcGVuZFJlc3BvbnNlSGVhZGVyKHMsZSxkKTtyZXR1cm4gc2V0UmVzcG9uc2VTdGF0dXMocywkLnN0YXR1cyYmMjAwIT09JC5zdGF0dXM/JC5zdGF0dXM6bS5zdGF0dXMsJC5zdGF0dXNUZXh0fHxtLnN0YXR1c1RleHQpLHNlbmQocyxTKX0sZXJyb3JIYW5kbGVyJDFdO2NvbnN0IGVyPXtmYXRhbDowLGVycm9yOjAsd2FybjoxLGxvZzoyLGluZm86MyxzdWNjZXNzOjMsZmFpbDozLGRlYnVnOjQsdHJhY2U6NSx2ZXJib3NlOk51bWJlci5QT1NJVElWRV9JTkZJTklUWX0sdHI9e3NpbGVudDp7bGV2ZWw6LTF9LGZhdGFsOntsZXZlbDplci5mYXRhbH0sZXJyb3I6e2xldmVsOmVyLmVycm9yfSx3YXJuOntsZXZlbDplci53YXJufSxsb2c6e2xldmVsOmVyLmxvZ30saW5mbzp7bGV2ZWw6ZXIuaW5mb30sc3VjY2Vzczp7bGV2ZWw6ZXIuc3VjY2Vzc30sZmFpbDp7bGV2ZWw6ZXIuZmFpbH0scmVhZHk6e2xldmVsOmVyLmluZm99LHN0YXJ0OntsZXZlbDplci5pbmZvfSxib3g6e2xldmVsOmVyLmluZm99LGRlYnVnOntsZXZlbDplci5kZWJ1Z30sdHJhY2U6e2xldmVsOmVyLnRyYWNlfSx2ZXJib3NlOntsZXZlbDplci52ZXJib3NlfX07ZnVuY3Rpb24gaXNQbGFpbk9iamVjdCQxKGUpe2lmKG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGUpcmV0dXJuITE7Y29uc3Qgcz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuKG51bGw9PT1zfHxzPT09T2JqZWN0LnByb3RvdHlwZXx8bnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihzKSkmJighKFN5bWJvbC5pdGVyYXRvciBpbiBlKSYmKCEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIGUpfHwiW29iamVjdCBNb2R1bGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSkpfWZ1bmN0aW9uIF9kZWZ1KGUscyxkPSIuIixtKXtpZighaXNQbGFpbk9iamVjdCQxKHMpKXJldHVybiBfZGVmdShlLHt9LGQpO2NvbnN0IGg9T2JqZWN0LmFzc2lnbih7fSxzKTtmb3IoY29uc3QgcyBpbiBlKXtpZigiX19wcm90b19fIj09PXN8fCJjb25zdHJ1Y3RvciI9PT1zKWNvbnRpbnVlO2NvbnN0IG09ZVtzXTtudWxsIT1tJiYoQXJyYXkuaXNBcnJheShtKSYmQXJyYXkuaXNBcnJheShoW3NdKT9oW3NdPVsuLi5tLC4uLmhbc11dOmlzUGxhaW5PYmplY3QkMShtKSYmaXNQbGFpbk9iamVjdCQxKGhbc10pP2hbc109X2RlZnUobSxoW3NdLChkP2Ake2R9LmA6IiIpK3MudG9TdHJpbmcoKSk6aFtzXT1tKX1yZXR1cm4gaH1jb25zdCBkZWZ1PSguLi5lKT0+ZS5yZWR1Y2UoKGUscyk9Pl9kZWZ1KGUscywiIikse30pO2Z1bmN0aW9uIGlzTG9nT2JqKGUpe3JldHVybiBzPWUsIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocykmJighKCFlLm1lc3NhZ2UmJiFlLmFyZ3MpJiYhZS5zdGFjayk7dmFyIHN9bGV0IG5yPSExO2NvbnN0IGlyPVtdO2NsYXNzIENvbnNvbGF7b3B0aW9ucztfbGFzdExvZztfbW9ja0ZuO2NvbnN0cnVjdG9yKGU9e30pe2NvbnN0IHM9ZS50eXBlc3x8dHI7dGhpcy5vcHRpb25zPWRlZnUoey4uLmUsZGVmYXVsdHM6ey4uLmUuZGVmYXVsdHN9LGxldmVsOl9ub3JtYWxpemVMb2dMZXZlbChlLmxldmVsLHMpLHJlcG9ydGVyczpbLi4uZS5yZXBvcnRlcnN8fFtdXX0se3R5cGVzOnRyLHRocm90dGxlOjFlMyx0aHJvdHRsZU1pbjo1LGZvcm1hdE9wdGlvbnM6e2RhdGU6ITAsY29sb3JzOiExLGNvbXBhY3Q6ITB9fSk7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgZD17dHlwZTplLC4uLnRoaXMub3B0aW9ucy5kZWZhdWx0cywuLi5zW2VdfTt0aGlzW2VdPXRoaXMuX3dyYXBMb2dGbihkKSx0aGlzW2VdLnJhdz10aGlzLl93cmFwTG9nRm4oZCwhMCl9dGhpcy5vcHRpb25zLm1vY2tGbiYmdGhpcy5tb2NrVHlwZXMoKSx0aGlzLl9sYXN0TG9nPXt9fWdldCBsZXZlbCgpe3JldHVybiB0aGlzLm9wdGlvbnMubGV2ZWx9c2V0IGxldmVsKGUpe3RoaXMub3B0aW9ucy5sZXZlbD1fbm9ybWFsaXplTG9nTGV2ZWwoZSx0aGlzLm9wdGlvbnMudHlwZXMsdGhpcy5vcHRpb25zLmxldmVsKX1wcm9tcHQoZSxzKXtpZighdGhpcy5vcHRpb25zLnByb21wdCl0aHJvdyBuZXcgRXJyb3IoInByb21wdCBpcyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiB0aGlzLm9wdGlvbnMucHJvbXB0KGUscyl9Y3JlYXRlKGUpe2NvbnN0IHM9bmV3IENvbnNvbGEoey4uLnRoaXMub3B0aW9ucywuLi5lfSk7cmV0dXJuIHRoaXMuX21vY2tGbiYmcy5tb2NrVHlwZXModGhpcy5fbW9ja0ZuKSxzfXdpdGhEZWZhdWx0cyhlKXtyZXR1cm4gdGhpcy5jcmVhdGUoey4uLnRoaXMub3B0aW9ucyxkZWZhdWx0czp7Li4udGhpcy5vcHRpb25zLmRlZmF1bHRzLC4uLmV9fSl9d2l0aFRhZyhlKXtyZXR1cm4gdGhpcy53aXRoRGVmYXVsdHMoe3RhZzp0aGlzLm9wdGlvbnMuZGVmYXVsdHMudGFnP3RoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcrIjoiK2U6ZX0pfWFkZFJlcG9ydGVyKGUpe3JldHVybiB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnB1c2goZSksdGhpc31yZW1vdmVSZXBvcnRlcihlKXtpZihlKXtjb25zdCBzPXRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihlKTtpZigtMSE9PXMpcmV0dXJuIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuc3BsaWNlKHMsMSl9ZWxzZSB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZSgwKTtyZXR1cm4gdGhpc31zZXRSZXBvcnRlcnMoZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5yZXBvcnRlcnM9QXJyYXkuaXNBcnJheShlKT9lOltlXSx0aGlzfXdyYXBBbGwoKXt0aGlzLndyYXBDb25zb2xlKCksdGhpcy53cmFwU3RkKCl9cmVzdG9yZUFsbCgpe3RoaXMucmVzdG9yZUNvbnNvbGUoKSx0aGlzLnJlc3RvcmVTdGQoKX13cmFwQ29uc29sZSgpe2Zvcihjb25zdCBlIGluIHRoaXMub3B0aW9ucy50eXBlcyljb25zb2xlWyJfXyIrZV18fChjb25zb2xlWyJfXyIrZV09Y29uc29sZVtlXSksY29uc29sZVtlXT10aGlzW2VdLnJhd31yZXN0b3JlQ29uc29sZSgpe2Zvcihjb25zdCBlIGluIHRoaXMub3B0aW9ucy50eXBlcyljb25zb2xlWyJfXyIrZV0mJihjb25zb2xlW2VdPWNvbnNvbGVbIl9fIitlXSxkZWxldGUgY29uc29sZVsiX18iK2VdKX13cmFwU3RkKCl7dGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3Rkb3V0LCJsb2ciKSx0aGlzLl93cmFwU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRlcnIsImxvZyIpfV93cmFwU3RyZWFtKGUscyl7ZSYmKGUuX193cml0ZXx8KGUuX193cml0ZT1lLndyaXRlKSxlLndyaXRlPWU9Pnt0aGlzW3NdLnJhdyhTdHJpbmcoZSkudHJpbSgpKX0pfXJlc3RvcmVTdGQoKXt0aGlzLl9yZXN0b3JlU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRvdXQpLHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZGVycil9X3Jlc3RvcmVTdHJlYW0oZSl7ZSYmZS5fX3dyaXRlJiYoZS53cml0ZT1lLl9fd3JpdGUsZGVsZXRlIGUuX193cml0ZSl9cGF1c2VMb2dzKCl7bnI9ITB9cmVzdW1lTG9ncygpe25yPSExO2NvbnN0IGU9aXIuc3BsaWNlKDApO2Zvcihjb25zdCBzIG9mIGUpc1swXS5fbG9nRm4oc1sxXSxzWzJdKX1tb2NrVHlwZXMoZSl7Y29uc3Qgcz1lfHx0aGlzLm9wdGlvbnMubW9ja0ZuO2lmKHRoaXMuX21vY2tGbj1zLCJmdW5jdGlvbiI9PXR5cGVvZiBzKWZvcihjb25zdCBlIGluIHRoaXMub3B0aW9ucy50eXBlcyl0aGlzW2VdPXMoZSx0aGlzLm9wdGlvbnMudHlwZXNbZV0pfHx0aGlzW2VdLHRoaXNbZV0ucmF3PXRoaXNbZV19X3dyYXBMb2dGbihlLHMpe3JldHVybiguLi5kKT0+e2lmKCFucilyZXR1cm4gdGhpcy5fbG9nRm4oZSxkLHMpO2lyLnB1c2goW3RoaXMsZSxkLHNdKX19X2xvZ0ZuKGUscyxkKXtpZigoZS5sZXZlbHx8MCk+dGhpcy5sZXZlbClyZXR1cm4hMTtjb25zdCBtPXtkYXRlOm5ldyBEYXRlLGFyZ3M6W10sLi4uZSxsZXZlbDpfbm9ybWFsaXplTG9nTGV2ZWwoZS5sZXZlbCx0aGlzLm9wdGlvbnMudHlwZXMpfTshZCYmMT09PXMubGVuZ3RoJiZpc0xvZ09iaihzWzBdKT9PYmplY3QuYXNzaWduKG0sc1swXSk6bS5hcmdzPVsuLi5zXSxtLm1lc3NhZ2UmJihtLmFyZ3MudW5zaGlmdChtLm1lc3NhZ2UpLGRlbGV0ZSBtLm1lc3NhZ2UpLG0uYWRkaXRpb25hbCYmKEFycmF5LmlzQXJyYXkobS5hZGRpdGlvbmFsKXx8KG0uYWRkaXRpb25hbD1tLmFkZGl0aW9uYWwuc3BsaXQoIlxuIikpLG0uYXJncy5wdXNoKCJcbiIrbS5hZGRpdGlvbmFsLmpvaW4oIlxuIikpLGRlbGV0ZSBtLmFkZGl0aW9uYWwpLG0udHlwZT0ic3RyaW5nIj09dHlwZW9mIG0udHlwZT9tLnR5cGUudG9Mb3dlckNhc2UoKToibG9nIixtLnRhZz0ic3RyaW5nIj09dHlwZW9mIG0udGFnP20udGFnOiIiO2NvbnN0IHJlc29sdmVMb2c9KGU9ITEpPT57Y29uc3Qgcz0odGhpcy5fbGFzdExvZy5jb3VudHx8MCktdGhpcy5vcHRpb25zLnRocm90dGxlTWluO2lmKHRoaXMuX2xhc3RMb2cub2JqZWN0JiZzPjApe2NvbnN0IGU9Wy4uLnRoaXMuX2xhc3RMb2cub2JqZWN0LmFyZ3NdO3M+MSYmZS5wdXNoKGAocmVwZWF0ZWQgJHtzfSB0aW1lcylgKSx0aGlzLl9sb2coey4uLnRoaXMuX2xhc3RMb2cub2JqZWN0LGFyZ3M6ZX0pLHRoaXMuX2xhc3RMb2cuY291bnQ9MX1lJiYodGhpcy5fbGFzdExvZy5vYmplY3Q9bSx0aGlzLl9sb2cobSkpfTtjbGVhclRpbWVvdXQodGhpcy5fbGFzdExvZy50aW1lb3V0KTtjb25zdCBoPXRoaXMuX2xhc3RMb2cudGltZSYmbS5kYXRlP20uZGF0ZS5nZXRUaW1lKCktdGhpcy5fbGFzdExvZy50aW1lLmdldFRpbWUoKTowO2lmKHRoaXMuX2xhc3RMb2cudGltZT1tLmRhdGUsaDx0aGlzLm9wdGlvbnMudGhyb3R0bGUpdHJ5e2NvbnN0IGU9SlNPTi5zdHJpbmdpZnkoW20udHlwZSxtLnRhZyxtLmFyZ3NdKSxzPXRoaXMuX2xhc3RMb2cuc2VyaWFsaXplZD09PWU7aWYodGhpcy5fbGFzdExvZy5zZXJpYWxpemVkPWUscyYmKHRoaXMuX2xhc3RMb2cuY291bnQ9KHRoaXMuX2xhc3RMb2cuY291bnR8fDApKzEsdGhpcy5fbGFzdExvZy5jb3VudD50aGlzLm9wdGlvbnMudGhyb3R0bGVNaW4pKXJldHVybiB2b2lkKHRoaXMuX2xhc3RMb2cudGltZW91dD1zZXRUaW1lb3V0KHJlc29sdmVMb2csdGhpcy5vcHRpb25zLnRocm90dGxlKSl9Y2F0Y2h7fXJlc29sdmVMb2coITApfV9sb2coZSl7Zm9yKGNvbnN0IHMgb2YgdGhpcy5vcHRpb25zLnJlcG9ydGVycylzLmxvZyhlLHtvcHRpb25zOnRoaXMub3B0aW9uc30pfX1mdW5jdGlvbiBfbm9ybWFsaXplTG9nTGV2ZWwoZSxzPXt9LGQ9Myl7cmV0dXJuIHZvaWQgMD09PWU/ZDoibnVtYmVyIj09dHlwZW9mIGU/ZTpzW2VdJiZ2b2lkIDAhPT1zW2VdLmxldmVsP3NbZV0ubGV2ZWw6ZH1Db25zb2xhLnByb3RvdHlwZS5hZGQ9Q29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXIsQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlPUNvbnNvbGEucHJvdG90eXBlLnJlbW92ZVJlcG9ydGVyLENvbnNvbGEucHJvdG90eXBlLmNsZWFyPUNvbnNvbGEucHJvdG90eXBlLnJlbW92ZVJlcG9ydGVyLENvbnNvbGEucHJvdG90eXBlLndpdGhTY29wZT1Db25zb2xhLnByb3RvdHlwZS53aXRoVGFnLENvbnNvbGEucHJvdG90eXBlLm1vY2s9Q29uc29sYS5wcm90b3R5cGUubW9ja1R5cGVzLENvbnNvbGEucHJvdG90eXBlLnBhdXNlPUNvbnNvbGEucHJvdG90eXBlLnBhdXNlTG9ncyxDb25zb2xhLnByb3RvdHlwZS5yZXN1bWU9Q29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztjbGFzcyBCcm93c2VyUmVwb3J0ZXJ7b3B0aW9ucztkZWZhdWx0Q29sb3I7bGV2ZWxDb2xvck1hcDt0eXBlQ29sb3JNYXA7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPXsuLi5lfSx0aGlzLmRlZmF1bHRDb2xvcj0iIzdmOGM4ZCIsdGhpcy5sZXZlbENvbG9yTWFwPXswOiIjYzAzOTJiIiwxOiIjZjM5YzEyIiwzOiIjMDBCQ0Q0In0sdGhpcy50eXBlQ29sb3JNYXA9e3N1Y2Nlc3M6IiMyZWNjNzEifX1fZ2V0TG9nRm4oZSl7cmV0dXJuIGU8MT9jb25zb2xlLl9fZXJyb3J8fGNvbnNvbGUuZXJyb3I6MT09PWU/Y29uc29sZS5fX3dhcm58fGNvbnNvbGUud2Fybjpjb25zb2xlLl9fbG9nfHxjb25zb2xlLmxvZ31sb2coZSl7Y29uc3Qgcz10aGlzLl9nZXRMb2dGbihlLmxldmVsKSxkPSJsb2ciPT09ZS50eXBlPyIiOmUudHlwZSxtPWUudGFnfHwiIixoPWBcbiAgICAgIGJhY2tncm91bmQ6ICR7dGhpcy50eXBlQ29sb3JNYXBbZS50eXBlXXx8dGhpcy5sZXZlbENvbG9yTWFwW2UubGV2ZWxdfHx0aGlzLmRlZmF1bHRDb2xvcn07XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVlbTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZzogMnB4IDAuNWVtO1xuICAgIGAsZz1gJWMke1ttLGRdLmZpbHRlcihCb29sZWFuKS5qb2luKCI6Iil9YDsic3RyaW5nIj09dHlwZW9mIGUuYXJnc1swXT9zKGAke2d9JWMgJHtlLmFyZ3NbMF19YCxoLCIiLC4uLmUuYXJncy5zbGljZSgxKSk6cyhnLGgsLi4uZS5hcmdzKX19Y29uc3QgcnI9ZnVuY3Rpb24oZT17fSl7cmV0dXJuIGZ1bmN0aW9uKGU9e30pe3JldHVybiBuZXcgQ29uc29sYShlKX0oe3JlcG9ydGVyczplLnJlcG9ydGVyc3x8W25ldyBCcm93c2VyUmVwb3J0ZXIoe30pXSxwcm9tcHQ6KGUscz17fSk9PiJjb25maXJtIj09PXMudHlwZT9Qcm9taXNlLnJlc29sdmUoY29uZmlybShlKSk6UHJvbWlzZS5yZXNvbHZlKHByb21wdChlKSksLi4uZX0pfSgpLGFyPS9eW0EtWmEtel06XC8vO2Z1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGU9IiIpe3JldHVybiBlP2UucmVwbGFjZSgvXFwvZywiLyIpLnJlcGxhY2UoYXIsZT0+ZS50b1VwcGVyQ2FzZSgpKTplfWNvbnN0IHNyPS9eWy9cXF0oPyFbL1xcXSl8XlsvXFxdezJ9KD8hXC4pfF5bQS1aYS16XTpbL1xcXS8sbHI9L15bQS1aYS16XTokLyxjcj0vLihcLlteLi9dK3xcLikkLyx1cj0vXlsvXFxdfF5bYS16QS1aXTpbL1xcXS8sZGlybmFtZT1mdW5jdGlvbihlKXtjb25zdCBzPW5vcm1hbGl6ZVdpbmRvd3NQYXRoKGUpLnJlcGxhY2UoL1wvJC8sIiIpLnNwbGl0KCIvIikuc2xpY2UoMCwtMSk7cmV0dXJuIDE9PT1zLmxlbmd0aCYmbHIudGVzdChzWzBdKSYmKHNbMF0rPSIvIikscy5qb2luKCIvIil8fChmdW5jdGlvbihlKXtyZXR1cm4gc3IudGVzdChlKX0oZSk/Ii8iOiIuIil9LGJhc2VuYW1lPWZ1bmN0aW9uKGUscyl7Y29uc3QgZD1ub3JtYWxpemVXaW5kb3dzUGF0aChlKS5zcGxpdCgiLyIpO2xldCBtPSIiO2ZvcihsZXQgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBzPWRbZV07aWYocyl7bT1zO2JyZWFrfX1yZXR1cm4gcyYmbS5lbmRzV2l0aChzKT9tLnNsaWNlKDAsLXMubGVuZ3RoKTptfSxwYXJzZSQzPWZ1bmN0aW9uKGUpe2NvbnN0IHM9dXIuZXhlYyhlKT8uWzBdPy5yZXBsYWNlKC9cXC9nLCIvIil8fCIiLGQ9YmFzZW5hbWUoZSksbT1mdW5jdGlvbihlKXtpZigiLi4iPT09ZSlyZXR1cm4iIjtjb25zdCBzPWNyLmV4ZWMobm9ybWFsaXplV2luZG93c1BhdGgoZSkpO3JldHVybiBzJiZzWzFdfHwiIn0oZCk7cmV0dXJue3Jvb3Q6cyxkaXI6ZGlybmFtZShlKSxiYXNlOmQsZXh0Om0sbmFtZTpkLnNsaWNlKDAsZC5sZW5ndGgtbS5sZW5ndGgpfX07ZnVuY3Rpb24gZGVmaW5lUmVuZGVySGFuZGxlcihlKXtjb25zdCBzPXVzZVJ1bnRpbWVDb25maWcoKTtyZXR1cm4gWm4oYXN5bmMgZD0+e2NvbnN0IG09dXNlTml0cm9BcHAoKSxoPXtldmVudDpkLHJlbmRlcjplLHJlc3BvbnNlOnZvaWQgMH07aWYoYXdhaXQgbS5ob29rcy5jYWxsSG9vaygicmVuZGVyOmJlZm9yZSIsaCksIWgucmVzcG9uc2Upe2lmKGQucGF0aD09PWAke3MuYXBwLmJhc2VVUkx9ZmF2aWNvbi5pY29gKXJldHVybiBzZXRSZXNwb25zZUhlYWRlcihkLCJDb250ZW50LVR5cGUiLCJpbWFnZS94LWljb24iKSxzZW5kKGQsImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyIpO2lmKGgucmVzcG9uc2U9YXdhaXQgaC5yZW5kZXIoZCksIWgucmVzcG9uc2Upe2NvbnN0IGU9Z2V0UmVzcG9uc2VTdGF0dXMoZCk7cmV0dXJuIHNldFJlc3BvbnNlU3RhdHVzKGQsMjAwPT09ZT81MDA6ZSksc2VuZChkLCJObyByZXNwb25zZSByZXR1cm5lZCBmcm9tIHJlbmRlciBoYW5kbGVyOiAiK2QucGF0aCl9fXJldHVybiBhd2FpdCBtLmhvb2tzLmNhbGxIb29rKCJyZW5kZXI6cmVzcG9uc2UiLGgucmVzcG9uc2UsaCksaC5yZXNwb25zZS5oZWFkZXJzJiZzZXRSZXNwb25zZUhlYWRlcnMoZCxoLnJlc3BvbnNlLmhlYWRlcnMpLChoLnJlc3BvbnNlLnN0YXR1c0NvZGV8fGgucmVzcG9uc2Uuc3RhdHVzTWVzc2FnZSkmJnNldFJlc3BvbnNlU3RhdHVzKGQsaC5yZXNwb25zZS5zdGF0dXNDb2RlLGgucmVzcG9uc2Uuc3RhdHVzTWVzc2FnZSksaC5yZXNwb25zZS5ib2R5fSl9Y29uc3QgZHI9W3tjcm9uOiIwICogKiAqICoiLHRhc2tzOlsic3VwcG9ydDpyZW1pbmRTdGFsZSJdfV0scHI9eyJzdXBwb3J0OnJlbWluZFN0YWxlIjp7bWV0YTp7ZGVzY3JpcHRpb246IiJ9LHJlc29sdmU6KCk9PmltcG9ydCgiLi4vdGFza3MvcmVtaW5kU3RhbGUubWpzIikudGhlbihlPT5lLmRlZmF1bHR8fGUpfSwic2VlZDp1c2VycyI6e21ldGE6e2Rlc2NyaXB0aW9uOiIifSxyZXNvbHZlOigpPT5pbXBvcnQoIi4uL3Rhc2tzL3VzZXJzLm1qcyIpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlKX19O2Z1bmN0aW9uIGRlZmluZVRhc2soZSl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGUucnVuJiYoZS5ydW49KCk9Pnt0aHJvdyBuZXcgVHlwZUVycm9yKCJUYXNrIG11c3QgaW1wbGVtZW50IGEgYHJ1bmAgbWV0aG9kISIpfSksZX1jb25zdCBtcj17fTtmdW5jdGlvbiBydW5Dcm9uVGFza3MoZSxzKXtyZXR1cm4gUHJvbWlzZS5hbGwoZnVuY3Rpb24oZSl7cmV0dXJuKGRyfHxbXSkuZmluZChzPT5zLmNyb249PT1lKT8udGFza3N8fFtdfShlKS5tYXAoZT0+YXN5bmMgZnVuY3Rpb24oZSx7cGF5bG9hZDpzPXt9LGNvbnRleHQ6ZD17fX09e30pe2lmKG1yW2VdKXJldHVybiBtcltlXTtpZighKGUgaW4gcHIpKXRocm93IGNyZWF0ZUVycm9yJDEoe21lc3NhZ2U6YFRhc2sgXGAke2V9XGAgaXMgbm90IGF2YWlsYWJsZSFgLHN0YXR1c0NvZGU6NDA0fSk7aWYoIXByW2VdLnJlc29sdmUpdGhyb3cgY3JlYXRlRXJyb3IkMSh7bWVzc2FnZTpgVGFzayBcYCR7ZX1cYCBpcyBub3QgaW1wbGVtZW50ZWQhYCxzdGF0dXNDb2RlOjUwMX0pO2NvbnN0IG09YXdhaXQgcHJbZV0ucmVzb2x2ZSgpLGg9e25hbWU6ZSxwYXlsb2FkOnMsY29udGV4dDpkfTttcltlXT1tLnJ1bihoKTt0cnl7cmV0dXJuIGF3YWl0IG1yW2VdfWZpbmFsbHl7ZGVsZXRlIG1yW2VdfX0oZSxzKSkpfWZ1bmN0aW9uIGJhc2VVUkwoKXtyZXR1cm4gdXNlUnVudGltZUNvbmZpZygpLmFwcC5iYXNlVVJMfWZ1bmN0aW9uIGJ1aWxkQXNzZXRzVVJMKC4uLmUpe3JldHVybiBqb2luUmVsYXRpdmVVUkwocHVibGljQXNzZXRzVVJMKCksdXNlUnVudGltZUNvbmZpZygpLmFwcC5idWlsZEFzc2V0c0RpciwuLi5lKX1mdW5jdGlvbiBwdWJsaWNBc3NldHNVUkwoLi4uZSl7Y29uc3Qgcz11c2VSdW50aW1lQ29uZmlnKCkuYXBwLGQ9cy5jZG5VUkx8fHMuYmFzZVVSTDtyZXR1cm4gZS5sZW5ndGg/am9pblJlbGF0aXZlVVJMKGQsLi4uZSk6ZH1jb25zdCBmcj1bIkIiLCJLQiIsIk1CIiwiR0IiXTtmdW5jdGlvbiBlbnN1cmVCbG9iKGUscz17fSl7aWYoIXMubWF4U2l6ZSYmIXMudHlwZXM/Lmxlbmd0aCl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwMCxtZXNzYWdlOiJlbnN1cmVCbG9iKCkgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIG9mIG1heFNpemUgb3IgdHlwZXMgdG8gYmUgc2V0LiJ9KTtpZihzLm1heFNpemUpe2NvbnN0IGQ9ZnVuY3Rpb24oZSl7Y29uc3Qgcz1uZXcgUmVnRXhwKGBeKFxcZCspKFxcLlxcZCspP1xccyooJHtmci5qb2luKCJ8Iil9KSRgLCJpIiksZD1lLm1hdGNoKHMpO2lmKCFkKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6YEludmFsaWQgZmlsZSBzaXplIGZvcm1hdDogJHtlfWB9KTtjb25zdCBtPU51bWJlci5wYXJzZUZsb2F0KGRbMV0pLGg9ZFszXS50b1VwcGVyQ2FzZSgpO2lmKCFmci5pbmNsdWRlcyhoKSl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwMCxtZXNzYWdlOmBJbnZhbGlkIGZpbGUgc2l6ZSB1bml0OiAke2h9YH0pO2NvbnN0IGc9bSpNYXRoLnBvdygxMDI0LGZyLmluZGV4T2YoaCkpO3JldHVybiBNYXRoLmZsb29yKGcpfShzLm1heFNpemUpO2lmKGUuc2l6ZT5kKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6YEZpbGUgc2l6ZSBtdXN0IGJlIGxlc3MgdGhhbiAke3MubWF4U2l6ZX1gfSl9Y29uc3QgZD1lLnR5cGUuc3BsaXQoIi8iKVswXTtpZihzLnR5cGVzPy5sZW5ndGgmJiFzLnR5cGVzLmluY2x1ZGVzKGUudHlwZSkmJiFzLnR5cGVzLmluY2x1ZGVzKGQpJiYoIXMudHlwZXMuaW5jbHVkZXMoInBkZiIpfHwiYXBwbGljYXRpb24vcGRmIiE9PWUudHlwZSkpdGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDAsbWVzc2FnZTpgRmlsZSB0eXBlIGlzIGludmFsaWQsIG11c3QgYmU6ICR7cy50eXBlcy5qb2luKCIsICIpfWB9KX1jb25zdCBocj1PYmplY3QuZnJlZXplKHtzdGF0dXM6ImFib3J0ZWQifSk7ZnVuY3Rpb24gJGNvbnN0cnVjdG9yKGUscyxkKXtmdW5jdGlvbiBpbml0KGQsbSl7aWYoZC5fem9kfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwiX3pvZCIse3ZhbHVlOntkZWY6bSxjb25zdHI6Xyx0cmFpdHM6bmV3IFNldH0sZW51bWVyYWJsZTohMX0pLGQuX3pvZC50cmFpdHMuaGFzKGUpKXJldHVybjtkLl96b2QudHJhaXRzLmFkZChlKSxzKGQsbSk7Y29uc3QgaD1fLnByb3RvdHlwZSxnPU9iamVjdC5rZXlzKGgpO2ZvcihsZXQgZT0wO2U8Zy5sZW5ndGg7ZSsrKXtjb25zdCBzPWdbZV07cyBpbiBkfHwoZFtzXT1oW3NdLmJpbmQoZCkpfX1jb25zdCBtPWQ/LlBhcmVudD8/T2JqZWN0O2NsYXNzIERlZmluaXRpb24gZXh0ZW5kcyBte31mdW5jdGlvbiBfKGUpe3ZhciBzO2NvbnN0IG09ZD8uUGFyZW50P25ldyBEZWZpbml0aW9uOnRoaXM7aW5pdChtLGUpLChzPW0uX3pvZCkuZGVmZXJyZWQ/PyhzLmRlZmVycmVkPVtdKTtmb3IoY29uc3QgZSBvZiBtLl96b2QuZGVmZXJyZWQpZSgpO3JldHVybiBtfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGVmaW5pdGlvbiwibmFtZSIse3ZhbHVlOmV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoXywiaW5pdCIse3ZhbHVlOmluaXR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoXyxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOnM9PiEhKGQ/LlBhcmVudCYmcyBpbnN0YW5jZW9mIGQuUGFyZW50KXx8cz8uX3pvZD8udHJhaXRzPy5oYXMoZSl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoXywibmFtZSIse3ZhbHVlOmV9KSxffWNvbnN0IGdyPVN5bWJvbCgiem9kX2JyYW5kIik7Y2xhc3MgJFpvZEFzeW5jRXJyb3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJFbmNvdW50ZXJlZCBQcm9taXNlIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZS4gVXNlIC5wYXJzZUFzeW5jKCkgaW5zdGVhZC4iKX19Y2xhc3MgJFpvZEVuY29kZUVycm9yIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke2V9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fWNvbnN0IHZyPXt9O2Z1bmN0aW9uIGNvbmZpZyhlKXtyZXR1cm4gZSYmT2JqZWN0LmFzc2lnbih2cixlKSx2cn1mdW5jdGlvbiBnZXRFbnVtVmFsdWVzKGUpe2NvbnN0IHM9T2JqZWN0LnZhbHVlcyhlKS5maWx0ZXIoZT0+Im51bWJlciI9PXR5cGVvZiBlKSxkPU9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW2UsZF0pPT4tMT09PXMuaW5kZXhPZigrZSkpLm1hcCgoW2Usc10pPT5zKTtyZXR1cm4gZH1mdW5jdGlvbiBqb2luVmFsdWVzKGUscz0ifCIpe3JldHVybiBlLm1hcChlPT5zdHJpbmdpZnlQcmltaXRpdmUoZSkpLmpvaW4ocyl9ZnVuY3Rpb24ganNvblN0cmluZ2lmeVJlcGxhY2VyKGUscyl7cmV0dXJuImJpZ2ludCI9PXR5cGVvZiBzP3MudG9TdHJpbmcoKTpzfWZ1bmN0aW9uIGNhY2hlZChlKXtyZXR1cm57Z2V0IHZhbHVlKCl7e2NvbnN0IHM9ZSgpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmFsdWUiLHt2YWx1ZTpzfSksc319fX1mdW5jdGlvbiBudWxsaXNoJDEoZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gY2xlYW5SZWdleChlKXtjb25zdCBzPWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxkPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHMsZCl9ZnVuY3Rpb24gZmxvYXRTYWZlUmVtYWluZGVyKGUscyl7Y29uc3QgZD0oZS50b1N0cmluZygpLnNwbGl0KCIuIilbMV18fCIiKS5sZW5ndGgsbT1zLnRvU3RyaW5nKCk7bGV0IGg9KG0uc3BsaXQoIi4iKVsxXXx8IiIpLmxlbmd0aDtpZigwPT09aCYmL1xkP2UtXGQ/Ly50ZXN0KG0pKXtjb25zdCBlPW0ubWF0Y2goL1xkP2UtKFxkPykvKTtlPy5bMV0mJihoPU51bWJlci5wYXJzZUludChlWzFdKSl9Y29uc3QgZz1kPmg/ZDpoO3JldHVybiBOdW1iZXIucGFyc2VJbnQoZS50b0ZpeGVkKGcpLnJlcGxhY2UoIi4iLCIiKSklTnVtYmVyLnBhcnNlSW50KHMudG9GaXhlZChnKS5yZXBsYWNlKCIuIiwiIikpLzEwKipnfWNvbnN0IHlyPVN5bWJvbCgiZXZhbHVhdGluZyIpO2Z1bmN0aW9uIGRlZmluZUxhenkoZSxzLGQpe2xldCBtO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHMse2dldCgpe2lmKG0hPT15cilyZXR1cm4gdm9pZCAwPT09bSYmKG09eXIsbT1kKCkpLG19LHNldChkKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxzLHt2YWx1ZTpkfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGFzc2lnblByb3AoZSxzLGQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHMse3ZhbHVlOmQsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBtZXJnZURlZnMoLi4uZSl7Y29uc3Qgcz17fTtmb3IoY29uc3QgZCBvZiBlKXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGQpO09iamVjdC5hc3NpZ24ocyxlKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30scyl9ZnVuY3Rpb24gZXNjKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKX1mdW5jdGlvbiBzbHVnaWZ5KGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgYnI9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gaXNPYmplY3QoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmIUFycmF5LmlzQXJyYXkoZSl9Y29uc3QgX3I9Y2FjaGVkKCgpPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCIiKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KTtmdW5jdGlvbiBpc1BsYWluT2JqZWN0KGUpe2lmKCExPT09aXNPYmplY3QoZSkpcmV0dXJuITE7Y29uc3Qgcz1lLmNvbnN0cnVjdG9yO2lmKHZvaWQgMD09PXMpcmV0dXJuITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHMpcmV0dXJuITA7Y29uc3QgZD1zLnByb3RvdHlwZTtyZXR1cm4hMSE9PWlzT2JqZWN0KGQpJiYhMSE9PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLCJpc1Byb3RvdHlwZU9mIil9ZnVuY3Rpb24gc2hhbGxvd0Nsb25lKGUpe3JldHVybiBpc1BsYWluT2JqZWN0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplfWNvbnN0IHhyPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksd3I9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gZXNjYXBlUmVnZXgoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBjbG9uZShlLHMsZCl7Y29uc3QgbT1uZXcgZS5fem9kLmNvbnN0cihzPz9lLl96b2QuZGVmKTtyZXR1cm4gcyYmIWQ/LnBhcmVudHx8KG0uX3pvZC5wYXJlbnQ9ZSksbX1mdW5jdGlvbiBub3JtYWxpemVQYXJhbXMoZSl7Y29uc3Qgcz1lO2lmKCFzKXJldHVybnt9O2lmKCJzdHJpbmciPT10eXBlb2YgcylyZXR1cm57ZXJyb3I6KCk9PnN9O2lmKHZvaWQgMCE9PXM/Lm1lc3NhZ2Upe2lmKHZvaWQgMCE9PXM/LmVycm9yKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBgbWVzc2FnZWAgYW5kIGBlcnJvcmAgcGFyYW1zIik7cy5lcnJvcj1zLm1lc3NhZ2V9cmV0dXJuIGRlbGV0ZSBzLm1lc3NhZ2UsInN0cmluZyI9PXR5cGVvZiBzLmVycm9yP3suLi5zLGVycm9yOigpPT5zLmVycm9yfTpzfWZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZShlKXtyZXR1cm4iYmlnaW50Ij09dHlwZW9mIGU/ZS50b1N0cmluZygpKyJuIjoic3RyaW5nIj09dHlwZW9mIGU/YCIke2V9ImA6YCR7ZX1gfWZ1bmN0aW9uIG9wdGlvbmFsS2V5cyhlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZmlsdGVyKHM9PiJvcHRpb25hbCI9PT1lW3NdLl96b2Qub3B0aW4mJiJvcHRpb25hbCI9PT1lW3NdLl96b2Qub3B0b3V0KX1jb25zdCAkcj17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sU3I9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIHBpY2skMShlLHMpe2NvbnN0IGQ9ZS5fem9kLmRlZixtPWQuY2hlY2tzO2lmKG0mJm0ubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIucGljaygpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBoPW1lcmdlRGVmcyhlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBlPXt9O2Zvcihjb25zdCBtIGluIHMpe2lmKCEobSBpbiBkLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke219ImApO3NbbV0mJihlW21dPWQuc2hhcGVbbV0pfXJldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixlKSxlfSxjaGVja3M6W119KTtyZXR1cm4gY2xvbmUoZSxoKX1mdW5jdGlvbiBvbWl0KGUscyl7Y29uc3QgZD1lLl96b2QuZGVmLG09ZC5jaGVja3M7aWYobSYmbS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGg9bWVyZ2VEZWZzKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG09ey4uLmUuX3pvZC5kZWYuc2hhcGV9O2Zvcihjb25zdCBlIGluIHMpe2lmKCEoZSBpbiBkLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke2V9ImApO3NbZV0mJmRlbGV0ZSBtW2VdfXJldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixtKSxtfSxjaGVja3M6W119KTtyZXR1cm4gY2xvbmUoZSxoKX1mdW5jdGlvbiBleHRlbmQoZSxzKXtpZighaXNQbGFpbk9iamVjdChzKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IGQ9ZS5fem9kLmRlZi5jaGVja3M7aWYoZCYmZC5sZW5ndGg+MCl7Y29uc3QgZD1lLl96b2QuZGVmLnNoYXBlO2Zvcihjb25zdCBlIGluIHMpaWYodm9pZCAwIT09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGUpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1jb25zdCBtPW1lcmdlRGVmcyhlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBkPXsuLi5lLl96b2QuZGVmLnNoYXBlLC4uLnN9O3JldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixkKSxkfX0pO3JldHVybiBjbG9uZShlLG0pfWZ1bmN0aW9uIHNhZmVFeHRlbmQoZSxzKXtpZighaXNQbGFpbk9iamVjdChzKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCBkPW1lcmdlRGVmcyhlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBkPXsuLi5lLl96b2QuZGVmLnNoYXBlLC4uLnN9O3JldHVybiBhc3NpZ25Qcm9wKHRoaXMsInNoYXBlIixkKSxkfX0pO3JldHVybiBjbG9uZShlLGQpfWZ1bmN0aW9uIG1lcmdlKGUscyl7Y29uc3QgZD1tZXJnZURlZnMoZS5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgZD17Li4uZS5fem9kLmRlZi5zaGFwZSwuLi5zLl96b2QuZGVmLnNoYXBlfTtyZXR1cm4gYXNzaWduUHJvcCh0aGlzLCJzaGFwZSIsZCksZH0sZ2V0IGNhdGNoYWxsKCl7cmV0dXJuIHMuX3pvZC5kZWYuY2F0Y2hhbGx9LGNoZWNrczpbXX0pO3JldHVybiBjbG9uZShlLGQpfWZ1bmN0aW9uIHBhcnRpYWwoZSxzLGQpe2NvbnN0IG09cy5fem9kLmRlZi5jaGVja3M7aWYobSYmbS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5wYXJ0aWFsKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGg9bWVyZ2VEZWZzKHMuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG09cy5fem9kLmRlZi5zaGFwZSxoPXsuLi5tfTtpZihkKWZvcihjb25zdCBzIGluIGQpe2lmKCEocyBpbiBtKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3N9ImApO2Rbc10mJihoW3NdPWU/bmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6bVtzXX0pOm1bc10pfWVsc2UgZm9yKGNvbnN0IHMgaW4gbSloW3NdPWU/bmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6bVtzXX0pOm1bc107cmV0dXJuIGFzc2lnblByb3AodGhpcywic2hhcGUiLGgpLGh9LGNoZWNrczpbXX0pO3JldHVybiBjbG9uZShzLGgpfWZ1bmN0aW9uIHJlcXVpcmVkKGUscyxkKXtjb25zdCBtPW1lcmdlRGVmcyhzLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBtPXMuX3pvZC5kZWYuc2hhcGUsaD17Li4ubX07aWYoZClmb3IoY29uc3QgcyBpbiBkKXtpZighKHMgaW4gaCkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtzfSJgKTtkW3NdJiYoaFtzXT1uZXcgZSh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTptW3NdfSkpfWVsc2UgZm9yKGNvbnN0IHMgaW4gbSloW3NdPW5ldyBlKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOm1bc119KTtyZXR1cm4gYXNzaWduUHJvcCh0aGlzLCJzaGFwZSIsaCksaH19KTtyZXR1cm4gY2xvbmUocyxtKX1mdW5jdGlvbiBhYm9ydGVkKGUscz0wKXtpZighMD09PWUuYWJvcnRlZClyZXR1cm4hMDtmb3IobGV0IGQ9cztkPGUuaXNzdWVzLmxlbmd0aDtkKyspaWYoITAhPT1lLmlzc3Vlc1tkXT8uY29udGludWUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcHJlZml4SXNzdWVzKGUscyl7cmV0dXJuIHMubWFwKHM9Pnt2YXIgZDtyZXR1cm4oZD1zKS5wYXRoPz8oZC5wYXRoPVtdKSxzLnBhdGgudW5zaGlmdChlKSxzfSl9ZnVuY3Rpb24gdW53cmFwTWVzc2FnZShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplPy5tZXNzYWdlfWZ1bmN0aW9uIGZpbmFsaXplSXNzdWUoZSxzLGQpe2NvbnN0IG09ey4uLmUscGF0aDplLnBhdGg/P1tdfTtpZighZS5tZXNzYWdlKXtjb25zdCBoPXVud3JhcE1lc3NhZ2UoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P3Vud3JhcE1lc3NhZ2Uocz8uZXJyb3I/LihlKSk/P3Vud3JhcE1lc3NhZ2UoZC5jdXN0b21FcnJvcj8uKGUpKT8/dW53cmFwTWVzc2FnZShkLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCI7bS5tZXNzYWdlPWh9cmV0dXJuIGRlbGV0ZSBtLmluc3QsZGVsZXRlIG0uY29udGludWUscz8ucmVwb3J0SW5wdXR8fGRlbGV0ZSBtLmlucHV0LG19ZnVuY3Rpb24gZ2V0U2l6YWJsZU9yaWdpbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9ZnVuY3Rpb24gZ2V0TGVuZ3RoYWJsZU9yaWdpbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOiJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gcGFyc2VkVHlwZShlKXtjb25zdCBzPXR5cGVvZiBlO3N3aXRjaChzKXtjYXNlIm51bWJlciI6cmV0dXJuIE51bWJlci5pc05hTihlKT8ibmFuIjoibnVtYmVyIjtjYXNlIm9iamVjdCI6e2lmKG51bGw9PT1lKXJldHVybiJudWxsIjtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiJhcnJheSI7Y29uc3Qgcz1lO2lmKHMmJk9iamVjdC5nZXRQcm90b3R5cGVPZihzKSE9PU9iamVjdC5wcm90b3R5cGUmJiJjb25zdHJ1Y3RvciJpbiBzJiZzLmNvbnN0cnVjdG9yKXJldHVybiBzLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBzfWZ1bmN0aW9uIGlzc3VlKC4uLmUpe2NvbnN0W3MsZCxtXT1lO3JldHVybiJzdHJpbmciPT10eXBlb2Ygcz97bWVzc2FnZTpzLGNvZGU6ImN1c3RvbSIsaW5wdXQ6ZCxpbnN0Om19OnsuLi5zfX1mdW5jdGlvbiBiYXNlNjRUb1VpbnQ4QXJyYXkoZSl7Y29uc3Qgcz1hdG9iKGUpLGQ9bmV3IFVpbnQ4QXJyYXkocy5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKWRbZV09cy5jaGFyQ29kZUF0KGUpO3JldHVybiBkfWZ1bmN0aW9uIHVpbnQ4QXJyYXlUb0Jhc2U2NChlKXtsZXQgcz0iIjtmb3IobGV0IGQ9MDtkPGUubGVuZ3RoO2QrKylzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbZF0pO3JldHVybiBidG9hKHMpfWNvbnN0IGtyPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpTcixDbGFzczpjbGFzc3tjb25zdHJ1Y3RvciguLi5lKXt9fSxOVU1CRVJfRk9STUFUX1JBTkdFUzokcixhYm9ydGVkOmFib3J0ZWQsYWxsb3dzRXZhbDpfcixhc3NlcnQ6ZnVuY3Rpb24oZSl7fSxhc3NlcnRFcXVhbDpmdW5jdGlvbihlKXtyZXR1cm4gZX0sYXNzZXJ0SXM6ZnVuY3Rpb24oZSl7fSxhc3NlcnROZXZlcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfSxhc3NlcnROb3RFcXVhbDpmdW5jdGlvbihlKXtyZXR1cm4gZX0sYXNzaWduUHJvcDphc3NpZ25Qcm9wLGJhc2U2NFRvVWludDhBcnJheTpiYXNlNjRUb1VpbnQ4QXJyYXksYmFzZTY0dXJsVG9VaW50OEFycmF5OmZ1bmN0aW9uKGUpe2NvbnN0IHM9ZS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKTtyZXR1cm4gYmFzZTY0VG9VaW50OEFycmF5KHMrIj0iLnJlcGVhdCgoNC1zLmxlbmd0aCU0KSU0KSl9LGNhY2hlZDpjYWNoZWQsY2FwdHVyZVN0YWNrVHJhY2U6YnIsY2xlYW5FbnVtOmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFtlLHNdKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludChlLDEwKSkpLm1hcChlPT5lWzFdKX0sY2xlYW5SZWdleDpjbGVhblJlZ2V4LGNsb25lOmNsb25lLGNsb25lRGVmOmZ1bmN0aW9uKGUpe3JldHVybiBtZXJnZURlZnMoZS5fem9kLmRlZil9LGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6ZnVuY3Rpb24oZSl7bGV0IHM7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0OihkLG0saCk9PihzPz8ocz1lKCkpLFJlZmxlY3QuZ2V0KHMsbSxoKSksc2V0OihkLG0saCxnKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5zZXQocyxtLGgsZykpLGhhczooZCxtKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5oYXMocyxtKSksZGVsZXRlUHJvcGVydHk6KGQsbSk9PihzPz8ocz1lKCkpLFJlZmxlY3QuZGVsZXRlUHJvcGVydHkocyxtKSksb3duS2V5czpkPT4ocz8/KHM9ZSgpKSxSZWZsZWN0Lm93bktleXMocykpLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjooZCxtKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxtKSksZGVmaW5lUHJvcGVydHk6KGQsbSxoKT0+KHM/PyhzPWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShzLG0saCkpfSl9LGRlZmluZUxhenk6ZGVmaW5lTGF6eSxlc2M6ZXNjLGVzY2FwZVJlZ2V4OmVzY2FwZVJlZ2V4LGV4dGVuZDpleHRlbmQsZmluYWxpemVJc3N1ZTpmaW5hbGl6ZUlzc3VlLGZsb2F0U2FmZVJlbWFpbmRlcjpmbG9hdFNhZmVSZW1haW5kZXIsZ2V0RWxlbWVudEF0UGF0aDpmdW5jdGlvbihlLHMpe3JldHVybiBzP3MucmVkdWNlKChlLHMpPT5lPy5bc10sZSk6ZX0sZ2V0RW51bVZhbHVlczpnZXRFbnVtVmFsdWVzLGdldExlbmd0aGFibGVPcmlnaW46Z2V0TGVuZ3RoYWJsZU9yaWdpbixnZXRQYXJzZWRUeXBlOmU9Pntjb25zdCBzPXR5cGVvZiBlO3N3aXRjaChzKXtjYXNlInVuZGVmaW5lZCI6cmV0dXJuInVuZGVmaW5lZCI7Y2FzZSJzdHJpbmciOnJldHVybiJzdHJpbmciO2Nhc2UibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzTmFOKGUpPyJuYW4iOiJudW1iZXIiO2Nhc2UiYm9vbGVhbiI6cmV0dXJuImJvb2xlYW4iO2Nhc2UiZnVuY3Rpb24iOnJldHVybiJmdW5jdGlvbiI7Y2FzZSJiaWdpbnQiOnJldHVybiJiaWdpbnQiO2Nhc2Uic3ltYm9sIjpyZXR1cm4ic3ltYm9sIjtjYXNlIm9iamVjdCI6cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5IjpudWxsPT09ZT8ibnVsbCI6ZS50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuJiZlLmNhdGNoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYXRjaD8icHJvbWlzZSI6InVuZGVmaW5lZCIhPXR5cGVvZiBNYXAmJmUgaW5zdGFuY2VvZiBNYXA/Im1hcCI6InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJmUgaW5zdGFuY2VvZiBTZXQ/InNldCI6InVuZGVmaW5lZCIhPXR5cGVvZiBEYXRlJiZlIGluc3RhbmNlb2YgRGF0ZT8iZGF0ZSI6InVuZGVmaW5lZCIhPXR5cGVvZiBGaWxlJiZlIGluc3RhbmNlb2YgRmlsZT8iZmlsZSI6Im9iamVjdCI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGF0YSB0eXBlOiAke3N9YCl9fSxnZXRTaXphYmxlT3JpZ2luOmdldFNpemFibGVPcmlnaW4saGV4VG9VaW50OEFycmF5OmZ1bmN0aW9uKGUpe2NvbnN0IHM9ZS5yZXBsYWNlKC9eMHgvLCIiKTtpZihzLmxlbmd0aCUyIT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IGQ9bmV3IFVpbnQ4QXJyYXkocy5sZW5ndGgvMik7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKz0yKWRbZS8yXT1OdW1iZXIucGFyc2VJbnQocy5zbGljZShlLGUrMiksMTYpO3JldHVybiBkfSxpc09iamVjdDppc09iamVjdCxpc1BsYWluT2JqZWN0OmlzUGxhaW5PYmplY3QsaXNzdWU6aXNzdWUsam9pblZhbHVlczpqb2luVmFsdWVzLGpzb25TdHJpbmdpZnlSZXBsYWNlcjpqc29uU3RyaW5naWZ5UmVwbGFjZXIsbWVyZ2U6bWVyZ2UsbWVyZ2VEZWZzOm1lcmdlRGVmcyxub3JtYWxpemVQYXJhbXM6bm9ybWFsaXplUGFyYW1zLG51bGxpc2g6bnVsbGlzaCQxLG51bUtleXM6ZnVuY3Rpb24oZSl7bGV0IHM9MDtmb3IoY29uc3QgZCBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGQpJiZzKys7cmV0dXJuIHN9LG9iamVjdENsb25lOmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9LG9taXQ6b21pdCxvcHRpb25hbEtleXM6b3B0aW9uYWxLZXlzLHBhcnNlZFR5cGU6cGFyc2VkVHlwZSxwYXJ0aWFsOnBhcnRpYWwscGljazpwaWNrJDEscHJlZml4SXNzdWVzOnByZWZpeElzc3VlcyxwcmltaXRpdmVUeXBlczp3cixwcm9taXNlQWxsT2JqZWN0OmZ1bmN0aW9uKGUpe2NvbnN0IHM9T2JqZWN0LmtleXMoZSksZD1zLm1hcChzPT5lW3NdKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCkudGhlbihlPT57Y29uc3QgZD17fTtmb3IobGV0IG09MDttPHMubGVuZ3RoO20rKylkW3NbbV1dPWVbbV07cmV0dXJuIGR9KX0scHJvcGVydHlLZXlUeXBlczp4cixyYW5kb21TdHJpbmc6ZnVuY3Rpb24oZT0xMCl7Y29uc3Qgcz0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO2xldCBkPSIiO2ZvcihsZXQgbT0wO208ZTttKyspZCs9c1tNYXRoLmZsb29yKDI2Kk1hdGgucmFuZG9tKCkpXTtyZXR1cm4gZH0scmVxdWlyZWQ6cmVxdWlyZWQsc2FmZUV4dGVuZDpzYWZlRXh0ZW5kLHNoYWxsb3dDbG9uZTpzaGFsbG93Q2xvbmUsc2x1Z2lmeTpzbHVnaWZ5LHN0cmluZ2lmeVByaW1pdGl2ZTpzdHJpbmdpZnlQcmltaXRpdmUsdWludDhBcnJheVRvQmFzZTY0OnVpbnQ4QXJyYXlUb0Jhc2U2NCx1aW50OEFycmF5VG9CYXNlNjR1cmw6ZnVuY3Rpb24oZSl7cmV0dXJuIHVpbnQ4QXJyYXlUb0Jhc2U2NChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9LHVpbnQ4QXJyYXlUb0hleDpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuZnJvbShlKS5tYXAoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX0sdW53cmFwTWVzc2FnZTp1bndyYXBNZXNzYWdlfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGluaXRpYWxpemVyJDE9KGUscyk9PntlLm5hbWU9IiRab2RFcnJvciIsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl96b2QiLHt2YWx1ZTplLl96b2QsZW51bWVyYWJsZTohMX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJpc3N1ZXMiLHt2YWx1ZTpzLGVudW1lcmFibGU6ITF9KSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkocyxqc29uU3RyaW5naWZ5UmVwbGFjZXIsMiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInRvU3RyaW5nIix7dmFsdWU6KCk9PmUubWVzc2FnZSxlbnVtZXJhYmxlOiExfSl9LGpyPSRjb25zdHJ1Y3RvcigiJFpvZEVycm9yIixpbml0aWFsaXplciQxKSx6cj0kY29uc3RydWN0b3IoIiRab2RFcnJvciIsaW5pdGlhbGl6ZXIkMSx7UGFyZW50OkVycm9yfSk7ZnVuY3Rpb24gZmxhdHRlbkVycm9yKGUscz1lPT5lLm1lc3NhZ2Upe2NvbnN0IGQ9e30sbT1bXTtmb3IoY29uc3QgaCBvZiBlLmlzc3VlcyloLnBhdGgubGVuZ3RoPjA/KGRbaC5wYXRoWzBdXT1kW2gucGF0aFswXV18fFtdLGRbaC5wYXRoWzBdXS5wdXNoKHMoaCkpKTptLnB1c2gocyhoKSk7cmV0dXJue2Zvcm1FcnJvcnM6bSxmaWVsZEVycm9yczpkfX1mdW5jdGlvbiBmb3JtYXRFcnJvcihlLHM9ZT0+ZS5tZXNzYWdlKXtjb25zdCBkPXtfZXJyb3JzOltdfSxwcm9jZXNzRXJyb3I9ZT0+e2Zvcihjb25zdCBtIG9mIGUuaXNzdWVzKWlmKCJpbnZhbGlkX3VuaW9uIj09PW0uY29kZSYmbS5lcnJvcnMubGVuZ3RoKW0uZXJyb3JzLm1hcChlPT5wcm9jZXNzRXJyb3Ioe2lzc3VlczplfSkpO2Vsc2UgaWYoImludmFsaWRfa2V5Ij09PW0uY29kZSlwcm9jZXNzRXJyb3Ioe2lzc3VlczptLmlzc3Vlc30pO2Vsc2UgaWYoImludmFsaWRfZWxlbWVudCI9PT1tLmNvZGUpcHJvY2Vzc0Vycm9yKHtpc3N1ZXM6bS5pc3N1ZXN9KTtlbHNlIGlmKDA9PT1tLnBhdGgubGVuZ3RoKWQuX2Vycm9ycy5wdXNoKHMobSkpO2Vsc2V7bGV0IGU9ZCxoPTA7Zm9yKDtoPG0ucGF0aC5sZW5ndGg7KXtjb25zdCBkPW0ucGF0aFtoXTtoPT09bS5wYXRoLmxlbmd0aC0xPyhlW2RdPWVbZF18fHtfZXJyb3JzOltdfSxlW2RdLl9lcnJvcnMucHVzaChzKG0pKSk6ZVtkXT1lW2RdfHx7X2Vycm9yczpbXX0sZT1lW2RdLGgrK319fTtyZXR1cm4gcHJvY2Vzc0Vycm9yKGUpLGR9ZnVuY3Rpb24gdHJlZWlmeUVycm9yKGUscz1lPT5lLm1lc3NhZ2Upe2NvbnN0IGQ9e2Vycm9yczpbXX0scHJvY2Vzc0Vycm9yPShlLG09W10pPT57dmFyIGgsZztmb3IoY29uc3QgeCBvZiBlLmlzc3VlcylpZigiaW52YWxpZF91bmlvbiI9PT14LmNvZGUmJnguZXJyb3JzLmxlbmd0aCl4LmVycm9ycy5tYXAoZT0+cHJvY2Vzc0Vycm9yKHtpc3N1ZXM6ZX0seC5wYXRoKSk7ZWxzZSBpZigiaW52YWxpZF9rZXkiPT09eC5jb2RlKXByb2Nlc3NFcnJvcih7aXNzdWVzOnguaXNzdWVzfSx4LnBhdGgpO2Vsc2UgaWYoImludmFsaWRfZWxlbWVudCI9PT14LmNvZGUpcHJvY2Vzc0Vycm9yKHtpc3N1ZXM6eC5pc3N1ZXN9LHgucGF0aCk7ZWxzZXtjb25zdCBlPVsuLi5tLC4uLngucGF0aF07aWYoMD09PWUubGVuZ3RoKXtkLmVycm9ycy5wdXNoKHMoeCkpO2NvbnRpbnVlfWxldCAkPWQsUz0wO2Zvcig7UzxlLmxlbmd0aDspe2NvbnN0IGQ9ZVtTXSxtPVM9PT1lLmxlbmd0aC0xOyJzdHJpbmciPT10eXBlb2YgZD8oJC5wcm9wZXJ0aWVzPz8oJC5wcm9wZXJ0aWVzPXt9KSwoaD0kLnByb3BlcnRpZXMpW2RdPz8oaFtkXT17ZXJyb3JzOltdfSksJD0kLnByb3BlcnRpZXNbZF0pOigkLml0ZW1zPz8oJC5pdGVtcz1bXSksKGc9JC5pdGVtcylbZF0/PyhnW2RdPXtlcnJvcnM6W119KSwkPSQuaXRlbXNbZF0pLG0mJiQuZXJyb3JzLnB1c2gocyh4KSksUysrfX19O3JldHVybiBwcm9jZXNzRXJyb3IoZSksZH1mdW5jdGlvbiB0b0RvdFBhdGgoZSl7Y29uc3Qgcz1bXSxkPWUubWFwKGU9PiJvYmplY3QiPT10eXBlb2YgZT9lLmtleTplKTtmb3IoY29uc3QgZSBvZiBkKSJudW1iZXIiPT10eXBlb2YgZT9zLnB1c2goYFske2V9XWApOiJzeW1ib2wiPT10eXBlb2YgZT9zLnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhlKSl9XWApOi9bXlx3JF0vLnRlc3QoZSk/cy5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShlKX1dYCk6KHMubGVuZ3RoJiZzLnB1c2goIi4iKSxzLnB1c2goZSkpO3JldHVybiBzLmpvaW4oIiIpfWZ1bmN0aW9uIHByZXR0aWZ5RXJyb3IoZSl7Y29uc3Qgcz1bXSxkPVsuLi5lLmlzc3Vlc10uc29ydCgoZSxzKT0+KGUucGF0aD8/W10pLmxlbmd0aC0ocy5wYXRoPz9bXSkubGVuZ3RoKTtmb3IoY29uc3QgZSBvZiBkKXMucHVzaChg4pyWICR7ZS5tZXNzYWdlfWApLGUucGF0aD8ubGVuZ3RoJiZzLnB1c2goYCAg4oaSIGF0ICR7dG9Eb3RQYXRoKGUucGF0aCl9YCk7cmV0dXJuIHMuam9pbigiXG4iKX1jb25zdCBfcGFyc2U9ZT0+KHMsZCxtLGgpPT57Y29uc3QgZz1tP09iamVjdC5hc3NpZ24obSx7YXN5bmM6ITF9KTp7YXN5bmM6ITF9LHg9cy5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LGcpO2lmKHggaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyAkWm9kQXN5bmNFcnJvcjtpZih4Lmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHM9bmV3KGg/LkVycj8/ZSkoeC5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxnLGNvbmZpZygpKSkpO3Rocm93IGJyKHMsaD8uY2FsbGVlKSxzfXJldHVybiB4LnZhbHVlfSxJcj1fcGFyc2UoenIpLF9wYXJzZUFzeW5jPWU9PmFzeW5jKHMsZCxtLGgpPT57Y29uc3QgZz1tP09iamVjdC5hc3NpZ24obSx7YXN5bmM6ITB9KTp7YXN5bmM6ITB9O2xldCB4PXMuX3pvZC5ydW4oe3ZhbHVlOmQsaXNzdWVzOltdfSxnKTtpZih4IGluc3RhbmNlb2YgUHJvbWlzZSYmKHg9YXdhaXQgeCkseC5pc3N1ZXMubGVuZ3RoKXtjb25zdCBzPW5ldyhoPy5FcnI/P2UpKHguaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsZyxjb25maWcoKSkpKTt0aHJvdyBicihzLGg/LmNhbGxlZSksc31yZXR1cm4geC52YWx1ZX0sQ3I9X3BhcnNlQXN5bmMoenIpLF9zYWZlUGFyc2U9ZT0+KHMsZCxtKT0+e2NvbnN0IGg9bT97Li4ubSxhc3luYzohMX06e2FzeW5jOiExfSxnPXMuX3pvZC5ydW4oe3ZhbHVlOmQsaXNzdWVzOltdfSxoKTtpZihnIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgJFpvZEFzeW5jRXJyb3I7cmV0dXJuIGcuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcoZT8/anIpKGcuaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsaCxjb25maWcoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTpnLnZhbHVlfX0sVHI9X3NhZmVQYXJzZSh6ciksX3NhZmVQYXJzZUFzeW5jPWU9PmFzeW5jKHMsZCxtKT0+e2NvbnN0IGg9bT9PYmplY3QuYXNzaWduKG0se2FzeW5jOiEwfSk6e2FzeW5jOiEwfTtsZXQgZz1zLl96b2QucnVuKHt2YWx1ZTpkLGlzc3VlczpbXX0saCk7cmV0dXJuIGcgaW5zdGFuY2VvZiBQcm9taXNlJiYoZz1hd2FpdCBnKSxnLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3IGUoZy5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxoLGNvbmZpZygpKSkpfTp7c3VjY2VzczohMCxkYXRhOmcudmFsdWV9fSxScj1fc2FmZVBhcnNlQXN5bmMoenIpLF9lbmNvZGU9ZT0+KHMsZCxtKT0+e2NvbnN0IGg9bT9PYmplY3QuYXNzaWduKG0se2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gX3BhcnNlKGUpKHMsZCxoKX0sRXI9X2VuY29kZSh6ciksX2RlY29kZT1lPT4ocyxkLG0pPT5fcGFyc2UoZSkocyxkLG0pLE9yPV9kZWNvZGUoenIpLF9lbmNvZGVBc3luYz1lPT5hc3luYyhzLGQsbSk9Pntjb25zdCBoPW0/T2JqZWN0LmFzc2lnbihtLHtkaXJlY3Rpb246ImJhY2t3YXJkIn0pOntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIF9wYXJzZUFzeW5jKGUpKHMsZCxoKX0sUHI9X2VuY29kZUFzeW5jKHpyKSxfZGVjb2RlQXN5bmM9ZT0+YXN5bmMocyxkLG0pPT5fcGFyc2VBc3luYyhlKShzLGQsbSksTnI9X2RlY29kZUFzeW5jKHpyKSxfc2FmZUVuY29kZT1lPT4ocyxkLG0pPT57Y29uc3QgaD1tP09iamVjdC5hc3NpZ24obSx7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9KTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBfc2FmZVBhcnNlKGUpKHMsZCxoKX0sRHI9X3NhZmVFbmNvZGUoenIpLF9zYWZlRGVjb2RlPWU9PihzLGQsbSk9Pl9zYWZlUGFyc2UoZSkocyxkLG0pLFVyPV9zYWZlRGVjb2RlKHpyKSxfc2FmZUVuY29kZUFzeW5jPWU9PmFzeW5jKHMsZCxtKT0+e2NvbnN0IGg9bT9PYmplY3QuYXNzaWduKG0se2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gX3NhZmVQYXJzZUFzeW5jKGUpKHMsZCxoKX0sTHI9X3NhZmVFbmNvZGVBc3luYyh6ciksX3NhZmVEZWNvZGVBc3luYz1lPT5hc3luYyhzLGQsbSk9Pl9zYWZlUGFyc2VBc3luYyhlKShzLGQsbSksQXI9X3NhZmVEZWNvZGVBc3luYyh6cikscXI9L15bY0NdW15ccy1dezgsfSQvLEZyPS9eWzAtOWEtel0rJC8sQnI9L15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvLFpyPS9eWzAtOWEtdkEtVl17MjB9JC8sTXI9L15bQS1aYS16MC05XXsyN30kLyxRcj0vXlthLXpBLVowLTlfLV17MjF9JC8sVnI9L15QKD86KFxkK1cpfCg/IS4qVykoPz1cZHxUXGQpKFxkK1kpPyhcZCtNKT8oXGQrRCk/KFQoPz1cZCkoXGQrSCk/KFxkK00pPyhcZCsoWy4sXVxkKyk/Uyk/KT8pJC8sSHI9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLHV1aWQkMT1lPT5lP25ldyBSZWdFeHAoYF4oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tJHtlfVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9KSRgKTovXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS04XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMHxmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYpJC8sV3I9dXVpZCQxKDQpLEpyPXV1aWQkMSg2KSxLcj11dWlkJDEoNyksR3I9L14oPyFcLikoPyEuKlwuXC4pKFtBLVphLXowLTlfJytcLVwuXSopW0EtWmEtejAtOV8rLV1AKFtBLVphLXowLTldW0EtWmEtejAtOVwtXSpcLikrW0EtWmEtel17Mix9JC8sWHI9L15bXlxzQCJdezEsNjR9QFteXHNAXXsxLDI1NX0kL3UsWXI9WHI7ZnVuY3Rpb24gZW1vamkkMSgpe3JldHVybiBuZXcgUmVnRXhwKCJeKFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxccHtFbW9qaV9Db21wb25lbnR9KSskIiwidSIpfWNvbnN0IGVvPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyx0bz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopKSQvLG1hYyQxPWU9Pntjb25zdCBzPWVzY2FwZVJlZ2V4KGU/PyI6Iik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oPzpbMC05QS1GXXsyfSR7c30pezV9WzAtOUEtRl17Mn0kfF4oPzpbMC05YS1mXXsyfSR7c30pezV9WzAtOWEtZl17Mn0kYCl9LG5vPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLyxpbz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxybz0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyxvbz0vXltBLVphLXowLTlfLV0qJC8sYW89L14oPz0uezEsMjUzfVwuPyQpW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlstMC05YS16QS1aXXswLDYxfVswLTlhLXpBLVpdKT8pKlwuPyQvLHNvPS9eKFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pP1wuKStbYS16QS1aXXsyLH0kLyxsbz0vXlwrWzEtOV1cZHs2LDE0fSQvLGNvPSIoPzooPzpcXGRcXGRbMjQ2OF1bMDQ4XXxcXGRcXGRbMTM1NzldWzI2XXxcXGRcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXGR7NH0tKD86KD86MFsxMzU3OF18MVswMl0pLSg/OjBbMS05XXxbMTJdXFxkfDNbMDFdKXwoPzowWzQ2OV18MTEpLSg/OjBbMS05XXxbMTJdXFxkfDMwKXwoPzowMiktKD86MFsxLTldfDFcXGR8MlswLThdKSkpIix1bz1uZXcgUmVnRXhwKGBeJHtjb30kYCk7ZnVuY3Rpb24gdGltZVNvdXJjZShlKXtjb25zdCBzPSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiJudW1iZXIiPT10eXBlb2YgZS5wcmVjaXNpb24/LTE9PT1lLnByZWNpc2lvbj9gJHtzfWA6MD09PWUucHJlY2lzaW9uP2Ake3N9OlswLTVdXFxkYDpgJHtzfTpbMC01XVxcZFxcLlxcZHske2UucHJlY2lzaW9ufX1gOmAke3N9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHRpbWUkMShlKXtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dGltZVNvdXJjZShlKX0kYCl9ZnVuY3Rpb24gZGF0ZXRpbWUkMShlKXtjb25zdCBzPXRpbWVTb3VyY2Uoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pLGQ9WyJaIl07ZS5sb2NhbCYmZC5wdXNoKCIiKSxlLm9mZnNldCYmZC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBtPWAke3N9KD86JHtkLmpvaW4oInwiKX0pYDtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7Y299VCg/OiR7bX0pJGApfWNvbnN0IHN0cmluZyQyPWU9Pm5ldyBSZWdFeHAoYF4ke2U/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIn0kYCkscG89L14tP1xkK24/JC8sbW89L14tP1xkKyQvLGZvPS9eLT9cZCsoPzpcLlxkKyk/JC8saG89L14oPzp0cnVlfGZhbHNlKSQvaSxnbz0vXm51bGwkL2ksdm89L151bmRlZmluZWQkL2kseW89L15bXkEtWl0qJC8sYm89L15bXmEtel0qJC8sX289L15bMC05YS1mQS1GXSokLztmdW5jdGlvbiBmaXhlZEJhc2U2NChlLHMpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOSsvXXske2V9fSR7c30kYCl9ZnVuY3Rpb24gZml4ZWRCYXNlNjR1cmwoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bQS1aYS16MC05Xy1deyR7ZX19JGApfWNvbnN0IHhvPWZpeGVkQmFzZTY0KDIyLCI9PSIpLHdvPWZpeGVkQmFzZTY0dXJsKDIyKSwkbz1maXhlZEJhc2U2NCgyNywiPSIpLFNvPWZpeGVkQmFzZTY0dXJsKDI3KSxrbz1maXhlZEJhc2U2NCg0MywiPSIpLGpvPWZpeGVkQmFzZTY0dXJsKDQzKSx6bz1maXhlZEJhc2U2NCg2NCwiIiksSW89Zml4ZWRCYXNlNjR1cmwoNjQpLENvPWZpeGVkQmFzZTY0KDg2LCI9PSIpLFRvPWZpeGVkQmFzZTY0dXJsKDg2KSxSbz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmFzZTY0OnJvLGJhc2U2NHVybDpvbyxiaWdpbnQ6cG8sYm9vbGVhbjpobyxicm93c2VyRW1haWw6L15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sY2lkcnY0Om5vLGNpZHJ2NjppbyxjdWlkOnFyLGN1aWQyOkZyLGRhdGU6dW8sZGF0ZXRpbWU6ZGF0ZXRpbWUkMSxkb21haW46c28sZHVyYXRpb246VnIsZTE2NDpsbyxlbWFpbDpHcixlbW9qaTplbW9qaSQxLGV4dGVuZGVkRHVyYXRpb246L15bLStdP1AoPyEkKSg/Oig/OlstK10/XGQrWSl8KD86Wy0rXT9cZCtbLixdXGQrWSQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86KD86Wy0rXT9cZCtXKXwoPzpbLStdP1xkK1suLF1cZCtXJCkpPyg/Oig/OlstK10/XGQrRCl8KD86Wy0rXT9cZCtbLixdXGQrRCQpKT8oPzpUKD89W1xkKy1dKSg/Oig/OlstK10/XGQrSCl8KD86Wy0rXT9cZCtbLixdXGQrSCQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86Wy0rXT9cZCsoPzpbLixdXGQrKT9TKT8pPz8kLyxndWlkOkhyLGhleDpfbyxob3N0bmFtZTphbyxodG1sNUVtYWlsOi9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLGlkbkVtYWlsOllyLGludGVnZXI6bW8saXB2NDplbyxpcHY2OnRvLGtzdWlkOk1yLGxvd2VyY2FzZTp5byxtYWM6bWFjJDEsbWQ1X2Jhc2U2NDp4byxtZDVfYmFzZTY0dXJsOndvLG1kNV9oZXg6L15bMC05YS1mQS1GXXszMn0kLyxuYW5vaWQ6UXIsbnVsbDpnbyxudW1iZXI6Zm8scmZjNTMyMkVtYWlsOi9eKChbXjw+KClcW1xdXFwuLDs6XHNAIl0rKFwuW148PigpXFtcXVxcLiw7OlxzQCJdKykqKXwoIi4rIikpQCgoXFtbMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XSl8KChbYS16QS1aXC0wLTldK1wuKStbYS16QS1aXXsyLH0pKSQvLHNoYTFfYmFzZTY0OiRvLHNoYTFfYmFzZTY0dXJsOlNvLHNoYTFfaGV4Oi9eWzAtOWEtZkEtRl17NDB9JC8sc2hhMjU2X2Jhc2U2NDprbyxzaGEyNTZfYmFzZTY0dXJsOmpvLHNoYTI1Nl9oZXg6L15bMC05YS1mQS1GXXs2NH0kLyxzaGEzODRfYmFzZTY0OnpvLHNoYTM4NF9iYXNlNjR1cmw6SW8sc2hhMzg0X2hleDovXlswLTlhLWZBLUZdezk2fSQvLHNoYTUxMl9iYXNlNjQ6Q28sc2hhNTEyX2Jhc2U2NHVybDpUbyxzaGE1MTJfaGV4Oi9eWzAtOWEtZkEtRl17MTI4fSQvLHN0cmluZzpzdHJpbmckMix0aW1lOnRpbWUkMSx1bGlkOkJyLHVuZGVmaW5lZDp2byx1bmljb2RlRW1haWw6WHIsdXBwZXJjYXNlOmJvLHV1aWQ6dXVpZCQxLHV1aWQ0OldyLHV1aWQ2OkpyLHV1aWQ3OktyLHhpZDpacn0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxFbz0kY29uc3RydWN0b3IoIiRab2RDaGVjayIsKGUscyk9Pnt2YXIgZDtlLl96b2Q/PyhlLl96b2Q9e30pLGUuX3pvZC5kZWY9cywoZD1lLl96b2QpLm9uYXR0YWNoPz8oZC5vbmF0dGFjaD1bXSl9KSxPbz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxQbz0kY29uc3RydWN0b3IoIiRab2RDaGVja0xlc3NUaGFuIiwoZSxzKT0+e0VvLmluaXQoZSxzKTtjb25zdCBkPU9vW3R5cGVvZiBzLnZhbHVlXTtlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnLG09KHMuaW5jbHVzaXZlP2QubWF4aW11bTpkLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cy52YWx1ZTxtJiYocy5pbmNsdXNpdmU/ZC5tYXhpbXVtPXMudmFsdWU6ZC5leGNsdXNpdmVNYXhpbXVtPXMudmFsdWUpfSksZS5fem9kLmNoZWNrPW09Pnsocy5pbmNsdXNpdmU/bS52YWx1ZTw9cy52YWx1ZTptLnZhbHVlPHMudmFsdWUpfHxtLmlzc3Vlcy5wdXNoKHtvcmlnaW46ZCxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOiJvYmplY3QiPT10eXBlb2Ygcy52YWx1ZT9zLnZhbHVlLmdldFRpbWUoKTpzLnZhbHVlLGlucHV0Om0udmFsdWUsaW5jbHVzaXZlOnMuaW5jbHVzaXZlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLE5vPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0IGQ9T29bdHlwZW9mIHMudmFsdWVdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBkPWUuX3pvZC5iYWcsbT0ocy5pbmNsdXNpdmU/ZC5taW5pbXVtOmQuZXhjbHVzaXZlTWluaW11bSk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtzLnZhbHVlPm0mJihzLmluY2x1c2l2ZT9kLm1pbmltdW09cy52YWx1ZTpkLmV4Y2x1c2l2ZU1pbmltdW09cy52YWx1ZSl9KSxlLl96b2QuY2hlY2s9bT0+eyhzLmluY2x1c2l2ZT9tLnZhbHVlPj1zLnZhbHVlOm0udmFsdWU+cy52YWx1ZSl8fG0uaXNzdWVzLnB1c2goe29yaWdpbjpkLGNvZGU6InRvb19zbWFsbCIsbWluaW11bToib2JqZWN0Ij09dHlwZW9mIHMudmFsdWU/cy52YWx1ZS5nZXRUaW1lKCk6cy52YWx1ZSxpbnB1dDptLnZhbHVlLGluY2x1c2l2ZTpzLmluY2x1c2l2ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxEbz0kY29uc3RydWN0b3IoIiRab2RDaGVja011bHRpcGxlT2YiLChlLHMpPT57RW8uaW5pdChlLHMpLGUuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pnt2YXIgZDsoZD1lLl96b2QuYmFnKS5tdWx0aXBsZU9mPz8oZC5tdWx0aXBsZU9mPXMudmFsdWUpfSksZS5fem9kLmNoZWNrPWQ9PntpZih0eXBlb2YgZC52YWx1ZSE9dHlwZW9mIHMudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOygiYmlnaW50Ij09dHlwZW9mIGQudmFsdWU/ZC52YWx1ZSVzLnZhbHVlPT09QmlnSW50KDApOjA9PT1mbG9hdFNhZmVSZW1haW5kZXIoZC52YWx1ZSxzLnZhbHVlKSl8fGQuaXNzdWVzLnB1c2goe29yaWdpbjp0eXBlb2YgZC52YWx1ZSxjb2RlOiJub3RfbXVsdGlwbGVfb2YiLGRpdmlzb3I6cy52YWx1ZSxpbnB1dDpkLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLFVvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSxzKT0+e0VvLmluaXQoZSxzKSxzLmZvcm1hdD1zLmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IGQ9cy5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxtPWQ/ImludCI6Im51bWJlciIsW2gsZ109JHJbcy5mb3JtYXRdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBtPWUuX3pvZC5iYWc7bS5mb3JtYXQ9cy5mb3JtYXQsbS5taW5pbXVtPWgsbS5tYXhpbXVtPWcsZCYmKG0ucGF0dGVybj1tbyl9KSxlLl96b2QuY2hlY2s9eD0+e2NvbnN0ICQ9eC52YWx1ZTtpZihkKXtpZighTnVtYmVyLmlzSW50ZWdlcigkKSlyZXR1cm4gdm9pZCB4Lmlzc3Vlcy5wdXNoKHtleHBlY3RlZDptLGZvcm1hdDpzLmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OiQsaW5zdDplfSk7aWYoIU51bWJlci5pc1NhZmVJbnRlZ2VyKCQpKXJldHVybiB2b2lkKCQ+MD94Lmlzc3Vlcy5wdXNoKHtpbnB1dDokLGNvZGU6InRvb19iaWciLG1heGltdW06TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsbm90ZToiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS4iLGluc3Q6ZSxvcmlnaW46bSxpbmNsdXNpdmU6ITAsY29udGludWU6IXMuYWJvcnR9KTp4Lmlzc3Vlcy5wdXNoKHtpbnB1dDokLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjptLGluY2x1c2l2ZTohMCxjb250aW51ZTohcy5hYm9ydH0pKX0kPGgmJnguaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDokLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpoLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSwkPmcmJnguaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDokLGNvZGU6InRvb19iaWciLG1heGltdW06ZyxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksTG89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tCaWdJbnRGb3JtYXQiLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0W2QsbV09U3Jbcy5mb3JtYXRdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBoPWUuX3pvZC5iYWc7aC5mb3JtYXQ9cy5mb3JtYXQsaC5taW5pbXVtPWQsaC5tYXhpbXVtPW19KSxlLl96b2QuY2hlY2s9aD0+e2NvbnN0IGc9aC52YWx1ZTtnPGQmJmguaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpnLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpkLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSxnPm0mJmguaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpnLGNvZGU6InRvb19iaWciLG1heGltdW06bSxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksQW89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tNYXhTaXplIiwoZSxzKT0+e3ZhciBkO0VvLmluaXQoZSxzKSwoZD1lLl96b2QuZGVmKS53aGVuPz8oZC53aGVuPWU9Pntjb25zdCBzPWUudmFsdWU7cmV0dXJuIW51bGxpc2gkMShzKSYmdm9pZCAwIT09cy5zaXplfSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cy5tYXhpbXVtPGQmJihlLl96b2QuYmFnLm1heGltdW09cy5tYXhpbXVtKX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlO20uc2l6ZTw9cy5tYXhpbXVtfHxkLmlzc3Vlcy5wdXNoKHtvcmlnaW46Z2V0U2l6YWJsZU9yaWdpbihtKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnMubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6bSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxxbz0kY29uc3RydWN0b3IoIiRab2RDaGVja01pblNpemUiLChlLHMpPT57dmFyIGQ7RW8uaW5pdChlLHMpLChkPWUuX3pvZC5kZWYpLndoZW4/PyhkLndoZW49ZT0+e2NvbnN0IHM9ZS52YWx1ZTtyZXR1cm4hbnVsbGlzaCQxKHMpJiZ2b2lkIDAhPT1zLnNpemV9KSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtzLm1pbmltdW0+ZCYmKGUuX3pvZC5iYWcubWluaW11bT1zLm1pbmltdW0pfSksZS5fem9kLmNoZWNrPWQ9Pntjb25zdCBtPWQudmFsdWU7bS5zaXplPj1zLm1pbmltdW18fGQuaXNzdWVzLnB1c2goe29yaWdpbjpnZXRTaXphYmxlT3JpZ2luKG0pLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0Om0saW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksRm89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tTaXplRXF1YWxzIiwoZSxzKT0+e3ZhciBkO0VvLmluaXQoZSxzKSwoZD1lLl96b2QuZGVmKS53aGVuPz8oZC53aGVuPWU9Pntjb25zdCBzPWUudmFsdWU7cmV0dXJuIW51bGxpc2gkMShzKSYmdm9pZCAwIT09cy5zaXplfSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZztkLm1pbmltdW09cy5zaXplLGQubWF4aW11bT1zLnNpemUsZC5zaXplPXMuc2l6ZX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlLGg9bS5zaXplO2lmKGg9PT1zLnNpemUpcmV0dXJuO2NvbnN0IGc9aD5zLnNpemU7ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOmdldFNpemFibGVPcmlnaW4obSksLi4uZz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpzLnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cy5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxCbz0kY29uc3RydWN0b3IoIiRab2RDaGVja01heExlbmd0aCIsKGUscyk9Pnt2YXIgZDtFby5pbml0KGUscyksKGQ9ZS5fem9kLmRlZikud2hlbj8/KGQud2hlbj1lPT57Y29uc3Qgcz1lLnZhbHVlO3JldHVybiFudWxsaXNoJDEocykmJnZvaWQgMCE9PXMubGVuZ3RofSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cy5tYXhpbXVtPGQmJihlLl96b2QuYmFnLm1heGltdW09cy5tYXhpbXVtKX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlO2lmKG0ubGVuZ3RoPD1zLm1heGltdW0pcmV0dXJuO2NvbnN0IGg9Z2V0TGVuZ3RoYWJsZU9yaWdpbihtKTtkLmlzc3Vlcy5wdXNoKHtvcmlnaW46aCxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnMubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6bSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxabz0kY29uc3RydWN0b3IoIiRab2RDaGVja01pbkxlbmd0aCIsKGUscyk9Pnt2YXIgZDtFby5pbml0KGUscyksKGQ9ZS5fem9kLmRlZikud2hlbj8/KGQud2hlbj1lPT57Y29uc3Qgcz1lLnZhbHVlO3JldHVybiFudWxsaXNoJDEocykmJnZvaWQgMCE9PXMubGVuZ3RofSksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGQ9ZS5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7cy5taW5pbXVtPmQmJihlLl96b2QuYmFnLm1pbmltdW09cy5taW5pbXVtKX0pLGUuX3pvZC5jaGVjaz1kPT57Y29uc3QgbT1kLnZhbHVlO2lmKG0ubGVuZ3RoPj1zLm1pbmltdW0pcmV0dXJuO2NvbnN0IGg9Z2V0TGVuZ3RoYWJsZU9yaWdpbihtKTtkLmlzc3Vlcy5wdXNoKHtvcmlnaW46aCxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cy5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDptLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLE1vPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrTGVuZ3RoRXF1YWxzIiwoZSxzKT0+e3ZhciBkO0VvLmluaXQoZSxzKSwoZD1lLl96b2QuZGVmKS53aGVuPz8oZC53aGVuPWU9Pntjb25zdCBzPWUudmFsdWU7cmV0dXJuIW51bGxpc2gkMShzKSYmdm9pZCAwIT09cy5sZW5ndGh9KSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnO2QubWluaW11bT1zLmxlbmd0aCxkLm1heGltdW09cy5sZW5ndGgsZC5sZW5ndGg9cy5sZW5ndGh9KSxlLl96b2QuY2hlY2s9ZD0+e2NvbnN0IG09ZC52YWx1ZSxoPW0ubGVuZ3RoO2lmKGg9PT1zLmxlbmd0aClyZXR1cm47Y29uc3QgZz1nZXRMZW5ndGhhYmxlT3JpZ2luKG0pLHg9aD5zLmxlbmd0aDtkLmlzc3Vlcy5wdXNoKHtvcmlnaW46ZywuLi54P3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnMubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnMubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxRbz0kY29uc3RydWN0b3IoIiRab2RDaGVja1N0cmluZ0Zvcm1hdCIsKGUscyk9Pnt2YXIgZCxtO0VvLmluaXQoZSxzKSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgZD1lLl96b2QuYmFnO2QuZm9ybWF0PXMuZm9ybWF0LHMucGF0dGVybiYmKGQucGF0dGVybnM/PyhkLnBhdHRlcm5zPW5ldyBTZXQpLGQucGF0dGVybnMuYWRkKHMucGF0dGVybikpfSkscy5wYXR0ZXJuPyhkPWUuX3pvZCkuY2hlY2s/PyhkLmNoZWNrPWQ9PntzLnBhdHRlcm4ubGFzdEluZGV4PTAscy5wYXR0ZXJuLnRlc3QoZC52YWx1ZSl8fGQuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnMuZm9ybWF0LGlucHV0OmQudmFsdWUsLi4ucy5wYXR0ZXJuP3twYXR0ZXJuOnMucGF0dGVybi50b1N0cmluZygpfTp7fSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX0pOihtPWUuX3pvZCkuY2hlY2s/PyhtLmNoZWNrPSgpPT57fSl9KSxWbz0kY29uc3RydWN0b3IoIiRab2RDaGVja1JlZ2V4IiwoZSxzKT0+e1FvLmluaXQoZSxzKSxlLl96b2QuY2hlY2s9ZD0+e3MucGF0dGVybi5sYXN0SW5kZXg9MCxzLnBhdHRlcm4udGVzdChkLnZhbHVlKXx8ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpkLnZhbHVlLHBhdHRlcm46cy5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksSG89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tMb3dlckNhc2UiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPXlvKSxRby5pbml0KGUscyl9KSxXbz0kY29uc3RydWN0b3IoIiRab2RDaGVja1VwcGVyQ2FzZSIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49Ym8pLFFvLmluaXQoZSxzKX0pLEpvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrSW5jbHVkZXMiLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0IGQ9ZXNjYXBlUmVnZXgocy5pbmNsdWRlcyksbT1uZXcgUmVnRXhwKCJudW1iZXIiPT10eXBlb2Ygcy5wb3NpdGlvbj9gXi57JHtzLnBvc2l0aW9ufX0ke2R9YDpkKTtzLnBhdHRlcm49bSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3Qgcz1lLl96b2QuYmFnO3MucGF0dGVybnM/PyhzLnBhdHRlcm5zPW5ldyBTZXQpLHMucGF0dGVybnMuYWRkKG0pfSksZS5fem9kLmNoZWNrPWQ9PntkLnZhbHVlLmluY2x1ZGVzKHMuaW5jbHVkZXMscy5wb3NpdGlvbil8fGQuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6cy5pbmNsdWRlcyxpbnB1dDpkLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLEtvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrU3RhcnRzV2l0aCIsKGUscyk9PntFby5pbml0KGUscyk7Y29uc3QgZD1uZXcgUmVnRXhwKGBeJHtlc2NhcGVSZWdleChzLnByZWZpeCl9LipgKTtzLnBhdHRlcm4/PyhzLnBhdHRlcm49ZCksZS5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IHM9ZS5fem9kLmJhZztzLnBhdHRlcm5zPz8ocy5wYXR0ZXJucz1uZXcgU2V0KSxzLnBhdHRlcm5zLmFkZChkKX0pLGUuX3pvZC5jaGVjaz1kPT57ZC52YWx1ZS5zdGFydHNXaXRoKHMucHJlZml4KXx8ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6cy5wcmVmaXgsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxHbz0kY29uc3RydWN0b3IoIiRab2RDaGVja0VuZHNXaXRoIiwoZSxzKT0+e0VvLmluaXQoZSxzKTtjb25zdCBkPW5ldyBSZWdFeHAoYC4qJHtlc2NhcGVSZWdleChzLnN1ZmZpeCl9JGApO3MucGF0dGVybj8/KHMucGF0dGVybj1kKSxlLl96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3Qgcz1lLl96b2QuYmFnO3MucGF0dGVybnM/PyhzLnBhdHRlcm5zPW5ldyBTZXQpLHMucGF0dGVybnMuYWRkKGQpfSksZS5fem9kLmNoZWNrPWQ9PntkLnZhbHVlLmVuZHNXaXRoKHMuc3VmZml4KXx8ZC5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnMuc3VmZml4LGlucHV0OmQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSk7ZnVuY3Rpb24gaGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChlLHMsZCl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhkLGUuaXNzdWVzKSl9Y29uc3QgWG89JGNvbnN0cnVjdG9yKCIkWm9kQ2hlY2tQcm9wZXJ0eSIsKGUscyk9PntFby5pbml0KGUscyksZS5fem9kLmNoZWNrPWU9Pntjb25zdCBkPXMuc2NoZW1hLl96b2QucnVuKHt2YWx1ZTplLnZhbHVlW3MucHJvcGVydHldLGlzc3VlczpbXX0se30pO2lmKGQgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBkLnRoZW4oZD0+aGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChkLGUscy5wcm9wZXJ0eSkpO2hhbmRsZUNoZWNrUHJvcGVydHlSZXN1bHQoZCxlLHMucHJvcGVydHkpfX0pLFlvPSRjb25zdHJ1Y3RvcigiJFpvZENoZWNrTWltZVR5cGUiLChlLHMpPT57RW8uaW5pdChlLHMpO2NvbnN0IGQ9bmV3IFNldChzLm1pbWUpO2UuX3pvZC5vbmF0dGFjaC5wdXNoKGU9PntlLl96b2QuYmFnLm1pbWU9cy5taW1lfSksZS5fem9kLmNoZWNrPW09PntkLmhhcyhtLnZhbHVlLnR5cGUpfHxtLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6cy5taW1lLGlucHV0Om0udmFsdWUudHlwZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KSxlYT0kY29uc3RydWN0b3IoIiRab2RDaGVja092ZXJ3cml0ZSIsKGUscyk9PntFby5pbml0KGUscyksZS5fem9kLmNoZWNrPWU9PntlLnZhbHVlPXMudHgoZS52YWx1ZSl9fSk7Y2xhc3MgRG9je2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMmJih0aGlzLmFyZ3M9ZSl9aW5kZW50ZWQoZSl7dGhpcy5pbmRlbnQrPTEsZSh0aGlzKSx0aGlzLmluZGVudC09MX13cml0ZShlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZSh0aGlzLHtleGVjdXRpb246InN5bmMifSksdm9pZCBlKHRoaXMse2V4ZWN1dGlvbjoiYXN5bmMifSk7Y29uc3Qgcz1lLnNwbGl0KCJcbiIpLmZpbHRlcihlPT5lKSxkPU1hdGgubWluKC4uLnMubWFwKGU9PmUubGVuZ3RoLWUudHJpbVN0YXJ0KCkubGVuZ3RoKSksbT1zLm1hcChlPT5lLnNsaWNlKGQpKS5tYXAoZT0+IiAiLnJlcGVhdCgyKnRoaXMuaW5kZW50KStlKTtmb3IoY29uc3QgZSBvZiBtKXRoaXMuY29udGVudC5wdXNoKGUpfWNvbXBpbGUoKXtjb25zdCBlPUZ1bmN0aW9uLHM9dGhpcz8uYXJncyxkPVsuLi4odGhpcz8uY29udGVudD8/WyIiXSkubWFwKGU9PmAgICR7ZX1gKV07cmV0dXJuIG5ldyBlKC4uLnMsZC5qb2luKCJcbiIpKX19Y29uc3QgdGE9e21ham9yOjQsbWlub3I6MyxwYXRjaDo2fSxuYT0kY29uc3RydWN0b3IoIiRab2RUeXBlIiwoZSxzKT0+e3ZhciBkO2U/PyhlPXt9KSxlLl96b2QuZGVmPXMsZS5fem9kLmJhZz1lLl96b2QuYmFnfHx7fSxlLl96b2QudmVyc2lvbj10YTtjb25zdCBtPVsuLi5lLl96b2QuZGVmLmNoZWNrcz8/W11dO2UuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKSYmbS51bnNoaWZ0KGUpO2Zvcihjb25zdCBzIG9mIG0pZm9yKGNvbnN0IGQgb2Ygcy5fem9kLm9uYXR0YWNoKWQoZSk7aWYoMD09PW0ubGVuZ3RoKShkPWUuX3pvZCkuZGVmZXJyZWQ/PyhkLmRlZmVycmVkPVtdKSxlLl96b2QuZGVmZXJyZWQ/LnB1c2goKCk9PntlLl96b2QucnVuPWUuX3pvZC5wYXJzZX0pO2Vsc2V7Y29uc3QgcnVuQ2hlY2tzPShlLHMsZCk9PntsZXQgbSxoPWFib3J0ZWQoZSk7Zm9yKGNvbnN0IGcgb2Ygcyl7aWYoZy5fem9kLmRlZi53aGVuKXtpZighZy5fem9kLmRlZi53aGVuKGUpKWNvbnRpbnVlfWVsc2UgaWYoaCljb250aW51ZTtjb25zdCBzPWUuaXNzdWVzLmxlbmd0aCx4PWcuX3pvZC5jaGVjayhlKTtpZih4IGluc3RhbmNlb2YgUHJvbWlzZSYmITE9PT1kPy5hc3luYyl0aHJvdyBuZXcgJFpvZEFzeW5jRXJyb3I7aWYobXx8eCBpbnN0YW5jZW9mIFByb21pc2UpbT0obT8/UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IHg7ZS5pc3N1ZXMubGVuZ3RoIT09cyYmKGh8fChoPWFib3J0ZWQoZSxzKSkpfSk7ZWxzZXtpZihlLmlzc3Vlcy5sZW5ndGg9PT1zKWNvbnRpbnVlO2h8fChoPWFib3J0ZWQoZSxzKSl9fXJldHVybiBtP20udGhlbigoKT0+ZSk6ZX0saGFuZGxlQ2FuYXJ5UmVzdWx0PShzLGQsaCk9PntpZihhYm9ydGVkKHMpKXJldHVybiBzLmFib3J0ZWQ9ITAscztjb25zdCBnPXJ1bkNoZWNrcyhkLG0saCk7aWYoZyBpbnN0YW5jZW9mIFByb21pc2Upe2lmKCExPT09aC5hc3luYyl0aHJvdyBuZXcgJFpvZEFzeW5jRXJyb3I7cmV0dXJuIGcudGhlbihzPT5lLl96b2QucGFyc2UocyxoKSl9cmV0dXJuIGUuX3pvZC5wYXJzZShnLGgpfTtlLl96b2QucnVuPShzLGQpPT57aWYoZC5za2lwQ2hlY2tzKXJldHVybiBlLl96b2QucGFyc2UocyxkKTtpZigiYmFja3dhcmQiPT09ZC5kaXJlY3Rpb24pe2NvbnN0IG09ZS5fem9kLnBhcnNlKHt2YWx1ZTpzLnZhbHVlLGlzc3VlczpbXX0sey4uLmQsc2tpcENoZWNrczohMH0pO3JldHVybiBtIGluc3RhbmNlb2YgUHJvbWlzZT9tLnRoZW4oZT0+aGFuZGxlQ2FuYXJ5UmVzdWx0KGUscyxkKSk6aGFuZGxlQ2FuYXJ5UmVzdWx0KG0scyxkKX1jb25zdCBoPWUuX3pvZC5wYXJzZShzLGQpO2lmKGggaW5zdGFuY2VvZiBQcm9taXNlKXtpZighMT09PWQuYXN5bmMpdGhyb3cgbmV3ICRab2RBc3luY0Vycm9yO3JldHVybiBoLnRoZW4oZT0+cnVuQ2hlY2tzKGUsbSxkKSl9cmV0dXJuIHJ1bkNoZWNrcyhoLG0sZCl9fWRlZmluZUxhenkoZSwifnN0YW5kYXJkIiwoKT0+KHt2YWxpZGF0ZTpzPT57dHJ5e2NvbnN0IGQ9VHIoZSxzKTtyZXR1cm4gZC5zdWNjZXNzP3t2YWx1ZTpkLmRhdGF9Ontpc3N1ZXM6ZC5lcnJvcj8uaXNzdWVzfX1jYXRjaChkKXtyZXR1cm4gUnIoZSxzKS50aGVuKGU9PmUuc3VjY2Vzcz97dmFsdWU6ZS5kYXRhfTp7aXNzdWVzOmUuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX0pKX0pLHJhPSRjb25zdHJ1Y3RvcigiJFpvZFN0cmluZyIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhdHRlcm49Wy4uLmU/Ll96b2QuYmFnPy5wYXR0ZXJucz8/W11dLnBvcCgpPz9zdHJpbmckMihlLl96b2QuYmFnKSxlLl96b2QucGFyc2U9KGQsbSk9PntpZihzLmNvZXJjZSl0cnl7ZC52YWx1ZT1TdHJpbmcoZC52YWx1ZSl9Y2F0Y2gobSl7fXJldHVybiJzdHJpbmciPT10eXBlb2YgZC52YWx1ZXx8ZC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpkLnZhbHVlLGluc3Q6ZX0pLGR9fSksb2E9JGNvbnN0cnVjdG9yKCIkWm9kU3RyaW5nRm9ybWF0IiwoZSxzKT0+e1FvLmluaXQoZSxzKSxyYS5pbml0KGUscyl9KSxhYT0kY29uc3RydWN0b3IoIiRab2RHVUlEIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Iciksb2EuaW5pdChlLHMpfSksc2E9JGNvbnN0cnVjdG9yKCIkWm9kVVVJRCIsKGUscyk9PntpZihzLnZlcnNpb24pe2NvbnN0IGU9e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bcy52ZXJzaW9uXTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke3MudmVyc2lvbn0iYCk7cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPXV1aWQkMShlKSl9ZWxzZSBzLnBhdHRlcm4/PyhzLnBhdHRlcm49dXVpZCQxKCkpO29hLmluaXQoZSxzKX0pLGxhPSRjb25zdHJ1Y3RvcigiJFpvZEVtYWlsIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Hciksb2EuaW5pdChlLHMpfSksY2E9JGNvbnN0cnVjdG9yKCIkWm9kVVJMIiwoZSxzKT0+e29hLmluaXQoZSxzKSxlLl96b2QuY2hlY2s9ZD0+e3RyeXtjb25zdCBtPWQudmFsdWUudHJpbSgpLGg9bmV3IFVSTChtKTtyZXR1cm4gcy5ob3N0bmFtZSYmKHMuaG9zdG5hbWUubGFzdEluZGV4PTAscy5ob3N0bmFtZS50ZXN0KGguaG9zdG5hbWUpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgaG9zdG5hbWUiLHBhdHRlcm46cy5ob3N0bmFtZS5zb3VyY2UsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSkscy5wcm90b2NvbCYmKHMucHJvdG9jb2wubGFzdEluZGV4PTAscy5wcm90b2NvbC50ZXN0KGgucHJvdG9jb2wuZW5kc1dpdGgoIjoiKT9oLnByb3RvY29sLnNsaWNlKDAsLTEpOmgucHJvdG9jb2wpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgcHJvdG9jb2wiLHBhdHRlcm46cy5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KSksdm9pZChzLm5vcm1hbGl6ZT9kLnZhbHVlPWguaHJlZjpkLnZhbHVlPW0pfWNhdGNoKG0pe2QuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19fSksdWE9JGNvbnN0cnVjdG9yKCIkWm9kRW1vamkiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPWVtb2ppJDEoKSksb2EuaW5pdChlLHMpfSkscGE9JGNvbnN0cnVjdG9yKCIkWm9kTmFub0lEIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Rciksb2EuaW5pdChlLHMpfSksbWE9JGNvbnN0cnVjdG9yKCIkWm9kQ1VJRCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49cXIpLG9hLmluaXQoZSxzKX0pLGZhPSRjb25zdHJ1Y3RvcigiJFpvZENVSUQyIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Gciksb2EuaW5pdChlLHMpfSksaGE9JGNvbnN0cnVjdG9yKCIkWm9kVUxJRCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49QnIpLG9hLmluaXQoZSxzKX0pLGdhPSRjb25zdHJ1Y3RvcigiJFpvZFhJRCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49WnIpLG9hLmluaXQoZSxzKX0pLHZhPSRjb25zdHJ1Y3RvcigiJFpvZEtTVUlEIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Nciksb2EuaW5pdChlLHMpfSksX2E9JGNvbnN0cnVjdG9yKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPWRhdGV0aW1lJDEocykpLG9hLmluaXQoZSxzKX0pLHhhPSRjb25zdHJ1Y3RvcigiJFpvZElTT0RhdGUiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPXVvKSxvYS5pbml0KGUscyl9KSx3YT0kY29uc3RydWN0b3IoIiRab2RJU09UaW1lIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj10aW1lJDEocykpLG9hLmluaXQoZSxzKX0pLCRhPSRjb25zdHJ1Y3RvcigiJFpvZElTT0R1cmF0aW9uIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1Wciksb2EuaW5pdChlLHMpfSksamE9JGNvbnN0cnVjdG9yKCIkWm9kSVB2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49ZW8pLG9hLmluaXQoZSxzKSxlLl96b2QuYmFnLmZvcm1hdD0iaXB2NCJ9KSx6YT0kY29uc3RydWN0b3IoIiRab2RJUHY2IiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj10byksb2EuaW5pdChlLHMpLGUuX3pvZC5iYWcuZm9ybWF0PSJpcHY2IixlLl96b2QuY2hlY2s9ZD0+e3RyeXtuZXcgVVJMKGBodHRwOi8vWyR7ZC52YWx1ZX1dYCl9Y2F0Y2h7ZC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaXB2NiIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19fSksQ2E9JGNvbnN0cnVjdG9yKCIkWm9kTUFDIiwoZSxzKT0+e3MucGF0dGVybj8/KHMucGF0dGVybj1tYWMkMShzLmRlbGltaXRlcikpLG9hLmluaXQoZSxzKSxlLl96b2QuYmFnLmZvcm1hdD0ibWFjIn0pLFRhPSRjb25zdHJ1Y3RvcigiJFpvZENJRFJ2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49bm8pLG9hLmluaXQoZSxzKX0pLFJhPSRjb25zdHJ1Y3RvcigiJFpvZENJRFJ2NiIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49aW8pLG9hLmluaXQoZSxzKSxlLl96b2QuY2hlY2s9ZD0+e2NvbnN0IG09ZC52YWx1ZS5zcGxpdCgiLyIpO3RyeXtpZigyIT09bS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yO2NvbnN0W2Usc109bTtpZighcyl0aHJvdyBuZXcgRXJyb3I7Y29uc3QgZD1OdW1iZXIocyk7aWYoYCR7ZH1gIT09cyl0aHJvdyBuZXcgRXJyb3I7aWYoZDwwfHxkPjEyOCl0aHJvdyBuZXcgRXJyb3I7bmV3IFVSTChgaHR0cDovL1ske2V9XWApfWNhdGNoe2QuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19fSk7ZnVuY3Rpb24gaXNWYWxpZEJhc2U2NChlKXtpZigiIj09PWUpcmV0dXJuITA7aWYoZS5sZW5ndGglNCE9MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEVhPSRjb25zdHJ1Y3RvcigiJFpvZEJhc2U2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49cm8pLG9hLmluaXQoZSxzKSxlLl96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0IixlLl96b2QuY2hlY2s9ZD0+e2lzVmFsaWRCYXNlNjQoZC52YWx1ZSl8fGQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29udGludWU6IXMuYWJvcnR9KX19KTtmdW5jdGlvbiBpc1ZhbGlkQmFzZTY0VVJMKGUpe2lmKCFvby50ZXN0KGUpKXJldHVybiExO2NvbnN0IHM9ZS5yZXBsYWNlKC9bLV9dL2csZT0+Ii0iPT09ZT8iKyI6Ii8iKTtyZXR1cm4gaXNWYWxpZEJhc2U2NChzLnBhZEVuZCg0Kk1hdGguY2VpbChzLmxlbmd0aC80KSwiPSIpKX1jb25zdCBPYT0kY29uc3RydWN0b3IoIiRab2RCYXNlNjRVUkwiLChlLHMpPT57cy5wYXR0ZXJuPz8ocy5wYXR0ZXJuPW9vKSxvYS5pbml0KGUscyksZS5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9ImJhc2U2NHVybCIsZS5fem9kLmNoZWNrPWQ9Pntpc1ZhbGlkQmFzZTY0VVJMKGQudmFsdWUpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0OmQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksUGE9JGNvbnN0cnVjdG9yKCIkWm9kRTE2NCIsKGUscyk9PntzLnBhdHRlcm4/PyhzLnBhdHRlcm49bG8pLG9hLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGlzVmFsaWRKV1QoZSxzPW51bGwpe3RyeXtjb25zdCBkPWUuc3BsaXQoIi4iKTtpZigzIT09ZC5sZW5ndGgpcmV0dXJuITE7Y29uc3RbbV09ZDtpZighbSlyZXR1cm4hMTtjb25zdCBoPUpTT04ucGFyc2UoYXRvYihtKSk7cmV0dXJuKCEoInR5cCJpbiBoKXx8IkpXVCI9PT1oPy50eXApJiYoISFoLmFsZyYmKCFzfHwiYWxnImluIGgmJmguYWxnPT09cykpfWNhdGNoe3JldHVybiExfX1jb25zdCBVYT0kY29uc3RydWN0b3IoIiRab2RKV1QiLChlLHMpPT57b2EuaW5pdChlLHMpLGUuX3pvZC5jaGVjaz1kPT57aXNWYWxpZEpXVChkLnZhbHVlLHMuYWxnKXx8ZC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiand0IixpbnB1dDpkLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohcy5hYm9ydH0pfX0pLExhPSRjb25zdHJ1Y3RvcigiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUscyk9PntvYS5pbml0KGUscyksZS5fem9kLmNoZWNrPWQ9PntzLmZuKGQudmFsdWUpfHxkLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnMuZm9ybWF0LGlucHV0OmQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFzLmFib3J0fSl9fSksQWE9JGNvbnN0cnVjdG9yKCIkWm9kTnVtYmVyIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGF0dGVybj1lLl96b2QuYmFnLnBhdHRlcm4/P2ZvLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2lmKHMuY29lcmNlKXRyeXtkLnZhbHVlPU51bWJlcihkLnZhbHVlKX1jYXRjaChlKXt9Y29uc3QgaD1kLnZhbHVlO2lmKCJudW1iZXIiPT10eXBlb2YgaCYmIU51bWJlci5pc05hTihoKSYmTnVtYmVyLmlzRmluaXRlKGgpKXJldHVybiBkO2NvbnN0IGc9Im51bWJlciI9PXR5cGVvZiBoP051bWJlci5pc05hTihoKT8iTmFOIjpOdW1iZXIuaXNGaW5pdGUoaCk/dm9pZCAwOiJJbmZpbml0eSI6dm9pZCAwO3JldHVybiBkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmgsaW5zdDplLC4uLmc/e3JlY2VpdmVkOmd9Ont9fSksZH19KSxxYT0kY29uc3RydWN0b3IoIiRab2ROdW1iZXJGb3JtYXQiLChlLHMpPT57VW8uaW5pdChlLHMpLEFhLmluaXQoZSxzKX0pLEZhPSRjb25zdHJ1Y3RvcigiJFpvZEJvb2xlYW4iLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXR0ZXJuPWhvLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2lmKHMuY29lcmNlKXRyeXtkLnZhbHVlPUJvb2xlYW4oZC52YWx1ZSl9Y2F0Y2goZSl7fWNvbnN0IGg9ZC52YWx1ZTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBofHxkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYm9vbGVhbiIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpoLGluc3Q6ZX0pLGR9fSksQmE9JGNvbnN0cnVjdG9yKCIkWm9kQmlnSW50IiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGF0dGVybj1wbyxlLl96b2QucGFyc2U9KGQsbSk9PntpZihzLmNvZXJjZSl0cnl7ZC52YWx1ZT1CaWdJbnQoZC52YWx1ZSl9Y2F0Y2goZSl7fXJldHVybiJiaWdpbnQiPT10eXBlb2YgZC52YWx1ZXx8ZC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJpZ2ludCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpkLnZhbHVlLGluc3Q6ZX0pLGR9fSksWmE9JGNvbnN0cnVjdG9yKCIkWm9kQmlnSW50Rm9ybWF0IiwoZSxzKT0+e0xvLmluaXQoZSxzKSxCYS5pbml0KGUscyl9KSxNYT0kY29uc3RydWN0b3IoIiRab2RTeW1ib2wiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0ocyxkKT0+e2NvbnN0IG09cy52YWx1ZTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIG18fHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzeW1ib2wiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6bSxpbnN0OmV9KSxzfX0pLFFhPSRjb25zdHJ1Y3RvcigiJFpvZFVuZGVmaW5lZCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhdHRlcm49dm8sZS5fem9kLnZhbHVlcz1uZXcgU2V0KFt2b2lkIDBdKSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixlLl96b2Qub3B0b3V0PSJvcHRpb25hbCIsZS5fem9kLnBhcnNlPShzLGQpPT57Y29uc3QgbT1zLnZhbHVlO3JldHVybiB2b2lkIDA9PT1tfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidW5kZWZpbmVkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om0saW5zdDplfSksc319KSxWYT0kY29uc3RydWN0b3IoIiRab2ROdWxsIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGF0dGVybj1nbyxlLl96b2QudmFsdWVzPW5ldyBTZXQoW251bGxdKSxlLl96b2QucGFyc2U9KHMsZCk9Pntjb25zdCBtPXMudmFsdWU7cmV0dXJuIG51bGw9PT1tfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVsbCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDptLGluc3Q6ZX0pLHN9fSksSGE9JGNvbnN0cnVjdG9yKCIkWm9kQW55IiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9ZT0+ZX0pLFdhPSRjb25zdHJ1Y3RvcigiJFpvZFVua25vd24iLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT1lPT5lfSksSmE9JGNvbnN0cnVjdG9yKCIkWm9kTmV2ZXIiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0ocyxkKT0+KHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJuZXZlciIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLnZhbHVlLGluc3Q6ZX0pLHMpfSksS2E9JGNvbnN0cnVjdG9yKCIkWm9kVm9pZCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShzLGQpPT57Y29uc3QgbT1zLnZhbHVlO3JldHVybiB2b2lkIDA9PT1tfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidm9pZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDptLGluc3Q6ZX0pLHN9fSksR2E9JGNvbnN0cnVjdG9yKCIkWm9kRGF0ZSIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShkLG0pPT57aWYocy5jb2VyY2UpdHJ5e2QudmFsdWU9bmV3IERhdGUoZC52YWx1ZSl9Y2F0Y2goZSl7fWNvbnN0IGg9ZC52YWx1ZSxnPWggaW5zdGFuY2VvZiBEYXRlO3JldHVybiBnJiYhTnVtYmVyLmlzTmFOKGguZ2V0VGltZSgpKXx8ZC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImRhdGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6aCwuLi5nP3tyZWNlaXZlZDoiSW52YWxpZCBEYXRlIn06e30saW5zdDplfSksZH19KTtmdW5jdGlvbiBoYW5kbGVBcnJheVJlc3VsdChlLHMsZCl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhkLGUuaXNzdWVzKSkscy52YWx1ZVtkXT1lLnZhbHVlfWNvbnN0IFhhPSRjb25zdHJ1Y3RvcigiJFpvZEFycmF5IiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KGQsbSk9Pntjb25zdCBoPWQudmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoaCkpcmV0dXJuIGQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpoLGluc3Q6ZX0pLGQ7ZC52YWx1ZT1BcnJheShoLmxlbmd0aCk7Y29uc3QgZz1bXTtmb3IobGV0IGU9MDtlPGgubGVuZ3RoO2UrKyl7Y29uc3QgeD1oW2VdLCQ9cy5lbGVtZW50Ll96b2QucnVuKHt2YWx1ZTp4LGlzc3VlczpbXX0sbSk7JCBpbnN0YW5jZW9mIFByb21pc2U/Zy5wdXNoKCQudGhlbihzPT5oYW5kbGVBcnJheVJlc3VsdChzLGQsZSkpKTpoYW5kbGVBcnJheVJlc3VsdCgkLGQsZSl9cmV0dXJuIGcubGVuZ3RoP1Byb21pc2UuYWxsKGcpLnRoZW4oKCk9PmQpOmR9fSk7ZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlSZXN1bHQoZSxzLGQsbSxoKXtpZihlLmlzc3Vlcy5sZW5ndGgpe2lmKGgmJiEoZCBpbiBtKSlyZXR1cm47cy5pc3N1ZXMucHVzaCguLi5wcmVmaXhJc3N1ZXMoZCxlLmlzc3VlcykpfXZvaWQgMD09PWUudmFsdWU/ZCBpbiBtJiYocy52YWx1ZVtkXT12b2lkIDApOnMudmFsdWVbZF09ZS52YWx1ZX1mdW5jdGlvbiBub3JtYWxpemVEZWYoZSl7Y29uc3Qgcz1PYmplY3Qua2V5cyhlLnNoYXBlKTtmb3IoY29uc3QgZCBvZiBzKWlmKCFlLnNoYXBlPy5bZF0/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtkfSI6IGV4cGVjdGVkIGEgWm9kIHNjaGVtYWApO2NvbnN0IGQ9b3B0aW9uYWxLZXlzKGUuc2hhcGUpO3JldHVybnsuLi5lLGtleXM6cyxrZXlTZXQ6bmV3IFNldChzKSxudW1LZXlzOnMubGVuZ3RoLG9wdGlvbmFsS2V5czpuZXcgU2V0KGQpfX1mdW5jdGlvbiBoYW5kbGVDYXRjaGFsbChlLHMsZCxtLGgsZyl7Y29uc3QgeD1bXSwkPWgua2V5U2V0LFM9aC5jYXRjaGFsbC5fem9kLGo9Uy5kZWYudHlwZSx6PSJvcHRpb25hbCI9PT1TLm9wdG91dDtmb3IoY29uc3QgaCBpbiBzKXtpZigkLmhhcyhoKSljb250aW51ZTtpZigibmV2ZXIiPT09ail7eC5wdXNoKGgpO2NvbnRpbnVlfWNvbnN0IGc9Uy5ydW4oe3ZhbHVlOnNbaF0saXNzdWVzOltdfSxtKTtnIGluc3RhbmNlb2YgUHJvbWlzZT9lLnB1c2goZy50aGVuKGU9PmhhbmRsZVByb3BlcnR5UmVzdWx0KGUsZCxoLHMseikpKTpoYW5kbGVQcm9wZXJ0eVJlc3VsdChnLGQsaCxzLHopfXJldHVybiB4Lmxlbmd0aCYmZC5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGtleXM6eCxpbnB1dDpzLGluc3Q6Z30pLGUubGVuZ3RoP1Byb21pc2UuYWxsKGUpLnRoZW4oKCk9PmQpOmR9Y29uc3QgWWE9JGNvbnN0cnVjdG9yKCIkWm9kT2JqZWN0IiwoZSxzKT0+e25hLmluaXQoZSxzKTtjb25zdCBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocywic2hhcGUiKTtpZighZD8uZ2V0KXtjb25zdCBlPXMuc2hhcGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsInNoYXBlIix7Z2V0OigpPT57Y29uc3QgZD17Li4uZX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJzaGFwZSIse3ZhbHVlOmR9KSxkfX0pfWNvbnN0IG09Y2FjaGVkKCgpPT5ub3JtYWxpemVEZWYocykpO2RlZmluZUxhenkoZS5fem9kLCJwcm9wVmFsdWVzIiwoKT0+e2NvbnN0IGU9cy5zaGFwZSxkPXt9O2Zvcihjb25zdCBzIGluIGUpe2NvbnN0IG09ZVtzXS5fem9kO2lmKG0udmFsdWVzKXtkW3NdPz8oZFtzXT1uZXcgU2V0KTtmb3IoY29uc3QgZSBvZiBtLnZhbHVlcylkW3NdLmFkZChlKX19cmV0dXJuIGR9KTtjb25zdCBoPWlzT2JqZWN0LGc9cy5jYXRjaGFsbDtsZXQgeDtlLl96b2QucGFyc2U9KHMsZCk9Pnt4Pz8oeD1tLnZhbHVlKTtjb25zdCAkPXMudmFsdWU7aWYoIWgoJCkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6JCxpbnN0OmV9KSxzO3MudmFsdWU9e307Y29uc3QgUz1bXSxqPXguc2hhcGU7Zm9yKGNvbnN0IGUgb2YgeC5rZXlzKXtjb25zdCBtPWpbZV0saD0ib3B0aW9uYWwiPT09bS5fem9kLm9wdG91dCxnPW0uX3pvZC5ydW4oe3ZhbHVlOiRbZV0saXNzdWVzOltdfSxkKTtnIGluc3RhbmNlb2YgUHJvbWlzZT9TLnB1c2goZy50aGVuKGQ9PmhhbmRsZVByb3BlcnR5UmVzdWx0KGQscyxlLCQsaCkpKTpoYW5kbGVQcm9wZXJ0eVJlc3VsdChnLHMsZSwkLGgpfXJldHVybiBnP2hhbmRsZUNhdGNoYWxsKFMsJCxzLGQsbS52YWx1ZSxlKTpTLmxlbmd0aD9Qcm9taXNlLmFsbChTKS50aGVuKCgpPT5zKTpzfX0pLGVzPSRjb25zdHJ1Y3RvcigiJFpvZE9iamVjdEpJVCIsKGUscyk9PntZYS5pbml0KGUscyk7Y29uc3QgZD1lLl96b2QucGFyc2UsbT1jYWNoZWQoKCk9Pm5vcm1hbGl6ZURlZihzKSk7bGV0IGg7Y29uc3QgZz1pc09iamVjdCx4PSF2ci5qaXRsZXNzLCQ9eCYmX3IudmFsdWUsUz1zLmNhdGNoYWxsO2xldCBqO2UuX3pvZC5wYXJzZT0oeixJKT0+e2o/PyhqPW0udmFsdWUpO2NvbnN0IFQ9ei52YWx1ZTtyZXR1cm4gZyhUKT94JiYkJiYhMT09PUk/LmFzeW5jJiYhMCE9PUkuaml0bGVzcz8oaHx8KGg9KGU9Pntjb25zdCBzPW5ldyBEb2MoWyJzaGFwZSIsInBheWxvYWQiLCJjdHgiXSksZD1tLnZhbHVlLHBhcnNlU3RyPWU9Pntjb25zdCBzPWVzYyhlKTtyZXR1cm5gc2hhcGVbJHtzfV0uX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRbJHtzfV0sIGlzc3VlczogW10gfSwgY3R4KWB9O3Mud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBoPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGc9MDtmb3IoY29uc3QgZSBvZiBkLmtleXMpaFtlXT0ia2V5XyIrZysrO3Mud3JpdGUoImNvbnN0IG5ld1Jlc3VsdCA9IHt9OyIpO2Zvcihjb25zdCBtIG9mIGQua2V5cyl7Y29uc3QgZD1oW21dLGc9ZXNjKG0pLHg9ZVttXSwkPSJvcHRpb25hbCI9PT14Py5fem9kPy5vcHRvdXQ7cy53cml0ZShgY29uc3QgJHtkfSA9ICR7cGFyc2VTdHIobSl9O2ApLCQ/cy53cml0ZShgXG4gICAgICAgIGlmICgke2R9Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoJHtnfSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtkfS5pc3N1ZXMubWFwKGlzcyA9PiAoe1xuICAgICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7Z30sIC4uLmlzcy5wYXRoXSA6IFske2d9XVxuICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICgke2R9LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoJHtnfSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgbmV3UmVzdWx0WyR7Z31dID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdSZXN1bHRbJHtnfV0gPSAke2R9LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgYCk6cy53cml0ZShgXG4gICAgICAgIGlmICgke2R9Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke2R9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7XG4gICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske2d9LCAuLi5pc3MucGF0aF0gOiBbJHtnfV1cbiAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoJHtkfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKCR7Z30gaW4gaW5wdXQpIHtcbiAgICAgICAgICAgIG5ld1Jlc3VsdFske2d9XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3UmVzdWx0WyR7Z31dID0gJHtkfS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgIGApfXMud3JpdGUoInBheWxvYWQudmFsdWUgPSBuZXdSZXN1bHQ7Iikscy53cml0ZSgicmV0dXJuIHBheWxvYWQ7Iik7Y29uc3QgeD1zLmNvbXBpbGUoKTtyZXR1cm4ocyxkKT0+eChlLHMsZCl9KShzLnNoYXBlKSksej1oKHosSSksUz9oYW5kbGVDYXRjaGFsbChbXSxULHosSSxqLGUpOnopOmQoeixJKTooei5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpULGluc3Q6ZX0pLHopfX0pO2Z1bmN0aW9uIGhhbmRsZVVuaW9uUmVzdWx0cyhlLHMsZCxtKXtmb3IoY29uc3QgZCBvZiBlKWlmKDA9PT1kLmlzc3Vlcy5sZW5ndGgpcmV0dXJuIHMudmFsdWU9ZC52YWx1ZSxzO2NvbnN0IGg9ZS5maWx0ZXIoZT0+IWFib3J0ZWQoZSkpO3JldHVybiAxPT09aC5sZW5ndGg/KHMudmFsdWU9aFswXS52YWx1ZSxoWzBdKToocy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6cy52YWx1ZSxpbnN0OmQsZXJyb3JzOmUubWFwKGU9PmUuaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsbSxjb25maWcoKSkpKX0pLHMpfWNvbnN0IHRzPSRjb25zdHJ1Y3RvcigiJFpvZFVuaW9uIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLm9wdGlvbnMuc29tZShlPT4ib3B0aW9uYWwiPT09ZS5fem9kLm9wdGluKT8ib3B0aW9uYWwiOnZvaWQgMCksZGVmaW5lTGF6eShlLl96b2QsIm9wdG91dCIsKCk9PnMub3B0aW9ucy5zb21lKGU9PiJvcHRpb25hbCI9PT1lLl96b2Qub3B0b3V0KT8ib3B0aW9uYWwiOnZvaWQgMCksZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9PntpZihzLm9wdGlvbnMuZXZlcnkoZT0+ZS5fem9kLnZhbHVlcykpcmV0dXJuIG5ldyBTZXQocy5vcHRpb25zLmZsYXRNYXAoZT0+QXJyYXkuZnJvbShlLl96b2QudmFsdWVzKSkpfSksZGVmaW5lTGF6eShlLl96b2QsInBhdHRlcm4iLCgpPT57aWYocy5vcHRpb25zLmV2ZXJ5KGU9PmUuX3pvZC5wYXR0ZXJuKSl7Y29uc3QgZT1zLm9wdGlvbnMubWFwKGU9PmUuX3pvZC5wYXR0ZXJuKTtyZXR1cm4gbmV3IFJlZ0V4cChgXigke2UubWFwKGU9PmNsZWFuUmVnZXgoZS5zb3VyY2UpKS5qb2luKCJ8Iil9KSRgKX19KTtjb25zdCBkPTE9PT1zLm9wdGlvbnMubGVuZ3RoLG09cy5vcHRpb25zWzBdLl96b2QucnVuO2UuX3pvZC5wYXJzZT0oaCxnKT0+e2lmKGQpcmV0dXJuIG0oaCxnKTtsZXQgeD0hMTtjb25zdCAkPVtdO2Zvcihjb25zdCBlIG9mIHMub3B0aW9ucyl7Y29uc3Qgcz1lLl96b2QucnVuKHt2YWx1ZTpoLnZhbHVlLGlzc3VlczpbXX0sZyk7aWYocyBpbnN0YW5jZW9mIFByb21pc2UpJC5wdXNoKHMpLHg9ITA7ZWxzZXtpZigwPT09cy5pc3N1ZXMubGVuZ3RoKXJldHVybiBzOyQucHVzaChzKX19cmV0dXJuIHg/UHJvbWlzZS5hbGwoJCkudGhlbihzPT5oYW5kbGVVbmlvblJlc3VsdHMocyxoLGUsZykpOmhhbmRsZVVuaW9uUmVzdWx0cygkLGgsZSxnKX19KTtmdW5jdGlvbiBoYW5kbGVFeGNsdXNpdmVVbmlvblJlc3VsdHMoZSxzLGQsbSl7Y29uc3QgaD1lLmZpbHRlcihlPT4wPT09ZS5pc3N1ZXMubGVuZ3RoKTtyZXR1cm4gMT09PWgubGVuZ3RoPyhzLnZhbHVlPWhbMF0udmFsdWUscyk6KDA9PT1oLmxlbmd0aD9zLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpzLnZhbHVlLGluc3Q6ZCxlcnJvcnM6ZS5tYXAoZT0+ZS5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxtLGNvbmZpZygpKSkpfSk6cy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6cy52YWx1ZSxpbnN0OmQsZXJyb3JzOltdLGluY2x1c2l2ZTohMX0pLHMpfWNvbnN0IG5zPSRjb25zdHJ1Y3RvcigiJFpvZFhvciIsKGUscyk9Pnt0cy5pbml0KGUscykscy5pbmNsdXNpdmU9ITE7Y29uc3QgZD0xPT09cy5vcHRpb25zLmxlbmd0aCxtPXMub3B0aW9uc1swXS5fem9kLnJ1bjtlLl96b2QucGFyc2U9KGgsZyk9PntpZihkKXJldHVybiBtKGgsZyk7bGV0IHg9ITE7Y29uc3QgJD1bXTtmb3IoY29uc3QgZSBvZiBzLm9wdGlvbnMpe2NvbnN0IHM9ZS5fem9kLnJ1bih7dmFsdWU6aC52YWx1ZSxpc3N1ZXM6W119LGcpO3MgaW5zdGFuY2VvZiBQcm9taXNlPygkLnB1c2gocykseD0hMCk6JC5wdXNoKHMpfXJldHVybiB4P1Byb21pc2UuYWxsKCQpLnRoZW4ocz0+aGFuZGxlRXhjbHVzaXZlVW5pb25SZXN1bHRzKHMsaCxlLGcpKTpoYW5kbGVFeGNsdXNpdmVVbmlvblJlc3VsdHMoJCxoLGUsZyl9fSkscnM9JGNvbnN0cnVjdG9yKCIkWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwoZSxzKT0+e3MuaW5jbHVzaXZlPSExLHRzLmluaXQoZSxzKTtjb25zdCBkPWUuX3pvZC5wYXJzZTtkZWZpbmVMYXp5KGUuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pntjb25zdCBlPXt9O2Zvcihjb25zdCBkIG9mIHMub3B0aW9ucyl7Y29uc3QgbT1kLl96b2QucHJvcFZhbHVlcztpZighbXx8MD09PU9iamVjdC5rZXlzKG0pLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggIiR7cy5vcHRpb25zLmluZGV4T2YoZCl9ImApO2Zvcihjb25zdFtzLGRdb2YgT2JqZWN0LmVudHJpZXMobSkpe2Vbc118fChlW3NdPW5ldyBTZXQpO2Zvcihjb25zdCBtIG9mIGQpZVtzXS5hZGQobSl9fXJldHVybiBlfSk7Y29uc3QgbT1jYWNoZWQoKCk9Pntjb25zdCBlPXMub3B0aW9ucyxkPW5ldyBNYXA7Zm9yKGNvbnN0IG0gb2YgZSl7Y29uc3QgZT1tLl96b2QucHJvcFZhbHVlcz8uW3MuZGlzY3JpbWluYXRvcl07aWYoIWV8fDA9PT1lLnNpemUpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3Mub3B0aW9ucy5pbmRleE9mKG0pfSJgKTtmb3IoY29uc3QgcyBvZiBlKXtpZihkLmhhcyhzKSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhzKX0iYCk7ZC5zZXQocyxtKX19cmV0dXJuIGR9KTtlLl96b2QucGFyc2U9KGgsZyk9Pntjb25zdCB4PWgudmFsdWU7aWYoIWlzT2JqZWN0KHgpKXJldHVybiBoLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJvYmplY3QiLGlucHV0OngsaW5zdDplfSksaDtjb25zdCAkPW0udmFsdWUuZ2V0KHg/LltzLmRpc2NyaW1pbmF0b3JdKTtyZXR1cm4gJD8kLl96b2QucnVuKGgsZyk6cy51bmlvbkZhbGxiYWNrP2QoaCxnKTooaC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6cy5kaXNjcmltaW5hdG9yLGlucHV0OngscGF0aDpbcy5kaXNjcmltaW5hdG9yXSxpbnN0OmV9KSxoKX19KSxvcz0kY29uc3RydWN0b3IoIiRab2RJbnRlcnNlY3Rpb24iLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0oZSxkKT0+e2NvbnN0IG09ZS52YWx1ZSxoPXMubGVmdC5fem9kLnJ1bih7dmFsdWU6bSxpc3N1ZXM6W119LGQpLGc9cy5yaWdodC5fem9kLnJ1bih7dmFsdWU6bSxpc3N1ZXM6W119LGQpO3JldHVybiBoIGluc3RhbmNlb2YgUHJvbWlzZXx8ZyBpbnN0YW5jZW9mIFByb21pc2U/UHJvbWlzZS5hbGwoW2gsZ10pLnRoZW4oKFtzLGRdKT0+aGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhlLHMsZCkpOmhhbmRsZUludGVyc2VjdGlvblJlc3VsdHMoZSxoLGcpfX0pO2Z1bmN0aW9uIG1lcmdlVmFsdWVzKGUscyl7aWYoZT09PXMpcmV0dXJue3ZhbGlkOiEwLGRhdGE6ZX07aWYoZSBpbnN0YW5jZW9mIERhdGUmJnMgaW5zdGFuY2VvZiBEYXRlJiYrZT09PStzKXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGlzUGxhaW5PYmplY3QoZSkmJmlzUGxhaW5PYmplY3Qocykpe2NvbnN0IGQ9T2JqZWN0LmtleXMocyksbT1PYmplY3Qua2V5cyhlKS5maWx0ZXIoZT0+LTEhPT1kLmluZGV4T2YoZSkpLGg9ey4uLmUsLi4uc307Zm9yKGNvbnN0IGQgb2YgbSl7Y29uc3QgbT1tZXJnZVZhbHVlcyhlW2RdLHNbZF0pO2lmKCFtLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbZCwuLi5tLm1lcmdlRXJyb3JQYXRoXX07aFtkXT1tLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6aH19aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheShzKSl7aWYoZS5sZW5ndGghPT1zLmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IGQ9W107Zm9yKGxldCBtPTA7bTxlLmxlbmd0aDttKyspe2NvbnN0IGg9bWVyZ2VWYWx1ZXMoZVttXSxzW21dKTtpZighaC52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W20sLi4uaC5tZXJnZUVycm9yUGF0aF19O2QucHVzaChoLmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOmR9fXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX19ZnVuY3Rpb24gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhlLHMsZCl7Y29uc3QgbT1uZXcgTWFwO2xldCBoO2Zvcihjb25zdCBkIG9mIHMuaXNzdWVzKWlmKCJ1bnJlY29nbml6ZWRfa2V5cyI9PT1kLmNvZGUpe2g/PyhoPWQpO2Zvcihjb25zdCBlIG9mIGQua2V5cyltLmhhcyhlKXx8bS5zZXQoZSx7fSksbS5nZXQoZSkubD0hMH1lbHNlIGUuaXNzdWVzLnB1c2goZCk7Zm9yKGNvbnN0IHMgb2YgZC5pc3N1ZXMpaWYoInVucmVjb2duaXplZF9rZXlzIj09PXMuY29kZSlmb3IoY29uc3QgZSBvZiBzLmtleXMpbS5oYXMoZSl8fG0uc2V0KGUse30pLG0uZ2V0KGUpLnI9ITA7ZWxzZSBlLmlzc3Vlcy5wdXNoKHMpO2NvbnN0IGc9Wy4uLm1dLmZpbHRlcigoWyxlXSk9PmUubCYmZS5yKS5tYXAoKFtlXSk9PmUpO2lmKGcubGVuZ3RoJiZoJiZlLmlzc3Vlcy5wdXNoKHsuLi5oLGtleXM6Z30pLGFib3J0ZWQoZSkpcmV0dXJuIGU7Y29uc3QgeD1tZXJnZVZhbHVlcyhzLnZhbHVlLGQudmFsdWUpO2lmKCF4LnZhbGlkKXRocm93IG5ldyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoeC5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuIGUudmFsdWU9eC5kYXRhLGV9Y29uc3QgYXM9JGNvbnN0cnVjdG9yKCIkWm9kVHVwbGUiLChlLHMpPT57bmEuaW5pdChlLHMpO2NvbnN0IGQ9cy5pdGVtcztlLl96b2QucGFyc2U9KG0saCk9Pntjb25zdCBnPW0udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoZykpcmV0dXJuIG0uaXNzdWVzLnB1c2goe2lucHV0OmcsaW5zdDplLGV4cGVjdGVkOiJ0dXBsZSIsY29kZToiaW52YWxpZF90eXBlIn0pLG07bS52YWx1ZT1bXTtjb25zdCB4PVtdLCQ9Wy4uLmRdLnJldmVyc2UoKS5maW5kSW5kZXgoZT0+Im9wdGlvbmFsIiE9PWUuX3pvZC5vcHRpbiksUz0tMT09PSQ/MDpkLmxlbmd0aC0kO2lmKCFzLnJlc3Qpe2NvbnN0IHM9Zy5sZW5ndGg+ZC5sZW5ndGgsaD1nLmxlbmd0aDxTLTE7aWYoc3x8aClyZXR1cm4gbS5pc3N1ZXMucHVzaCh7Li4ucz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpkLmxlbmd0aCxpbmNsdXNpdmU6ITB9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06ZC5sZW5ndGh9LGlucHV0OmcsaW5zdDplLG9yaWdpbjoiYXJyYXkifSksbX1sZXQgaj0tMTtmb3IoY29uc3QgZSBvZiBkKXtpZihqKyssaj49Zy5sZW5ndGgmJmo+PVMpY29udGludWU7Y29uc3Qgcz1lLl96b2QucnVuKHt2YWx1ZTpnW2pdLGlzc3VlczpbXX0saCk7cyBpbnN0YW5jZW9mIFByb21pc2U/eC5wdXNoKHMudGhlbihlPT5oYW5kbGVUdXBsZVJlc3VsdChlLG0saikpKTpoYW5kbGVUdXBsZVJlc3VsdChzLG0sail9aWYocy5yZXN0KXtjb25zdCBlPWcuc2xpY2UoZC5sZW5ndGgpO2Zvcihjb25zdCBkIG9mIGUpe2orKztjb25zdCBlPXMucmVzdC5fem9kLnJ1bih7dmFsdWU6ZCxpc3N1ZXM6W119LGgpO2UgaW5zdGFuY2VvZiBQcm9taXNlP3gucHVzaChlLnRoZW4oZT0+aGFuZGxlVHVwbGVSZXN1bHQoZSxtLGopKSk6aGFuZGxlVHVwbGVSZXN1bHQoZSxtLGopfX1yZXR1cm4geC5sZW5ndGg/UHJvbWlzZS5hbGwoeCkudGhlbigoKT0+bSk6bX19KTtmdW5jdGlvbiBoYW5kbGVUdXBsZVJlc3VsdChlLHMsZCl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhkLGUuaXNzdWVzKSkscy52YWx1ZVtkXT1lLnZhbHVlfWNvbnN0IHNzPSRjb25zdHJ1Y3RvcigiJFpvZFJlY29yZCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShkLG0pPT57Y29uc3QgaD1kLnZhbHVlO2lmKCFpc1BsYWluT2JqZWN0KGgpKXJldHVybiBkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoicmVjb3JkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmgsaW5zdDplfSksZDtjb25zdCBnPVtdLHg9cy5rZXlUeXBlLl96b2QudmFsdWVzO2lmKHgpe2QudmFsdWU9e307Y29uc3QgJD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIHgpaWYoInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGV8fCJzeW1ib2wiPT10eXBlb2YgZSl7JC5hZGQoIm51bWJlciI9PXR5cGVvZiBlP2UudG9TdHJpbmcoKTplKTtjb25zdCB4PXMudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpoW2VdLGlzc3VlczpbXX0sbSk7eCBpbnN0YW5jZW9mIFByb21pc2U/Zy5wdXNoKHgudGhlbihzPT57cy5pc3N1ZXMubGVuZ3RoJiZkLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3VlcyhlLHMuaXNzdWVzKSksZC52YWx1ZVtlXT1zLnZhbHVlfSkpOih4Lmlzc3Vlcy5sZW5ndGgmJmQuaXNzdWVzLnB1c2goLi4ucHJlZml4SXNzdWVzKGUseC5pc3N1ZXMpKSxkLnZhbHVlW2VdPXgudmFsdWUpfWxldCBTO2Zvcihjb25zdCBlIGluIGgpJC5oYXMoZSl8fChTPVM/P1tdLFMucHVzaChlKSk7UyYmUy5sZW5ndGg+MCYmZC5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGlucHV0OmgsaW5zdDplLGtleXM6U30pfWVsc2V7ZC52YWx1ZT17fTtmb3IoY29uc3QgeCBvZiBSZWZsZWN0Lm93bktleXMoaCkpe2lmKCJfX3Byb3RvX18iPT09eCljb250aW51ZTtsZXQgJD1zLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOngsaXNzdWVzOltdfSxtKTtpZigkIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtpZigic3RyaW5nIj09dHlwZW9mIHgmJmZvLnRlc3QoeCkmJiQuaXNzdWVzLmxlbmd0aCl7Y29uc3QgZT1zLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOk51bWJlcih4KSxpc3N1ZXM6W119LG0pO2lmKGUgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpOzA9PT1lLmlzc3Vlcy5sZW5ndGgmJigkPWUpfWlmKCQuaXNzdWVzLmxlbmd0aCl7Imxvb3NlIj09PXMubW9kZT9kLnZhbHVlW3hdPWhbeF06ZC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6JC5pc3N1ZXMubWFwKGU9PmZpbmFsaXplSXNzdWUoZSxtLGNvbmZpZygpKSksaW5wdXQ6eCxwYXRoOlt4XSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBTPXMudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpoW3hdLGlzc3VlczpbXX0sbSk7UyBpbnN0YW5jZW9mIFByb21pc2U/Zy5wdXNoKFMudGhlbihlPT57ZS5pc3N1ZXMubGVuZ3RoJiZkLmlzc3Vlcy5wdXNoKC4uLnByZWZpeElzc3Vlcyh4LGUuaXNzdWVzKSksZC52YWx1ZVskLnZhbHVlXT1lLnZhbHVlfSkpOihTLmlzc3Vlcy5sZW5ndGgmJmQuaXNzdWVzLnB1c2goLi4ucHJlZml4SXNzdWVzKHgsUy5pc3N1ZXMpKSxkLnZhbHVlWyQudmFsdWVdPVMudmFsdWUpfX1yZXR1cm4gZy5sZW5ndGg/UHJvbWlzZS5hbGwoZykudGhlbigoKT0+ZCk6ZH19KSxscz0kY29uc3RydWN0b3IoIiRab2RNYXAiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2NvbnN0IGg9ZC52YWx1ZTtpZighKGggaW5zdGFuY2VvZiBNYXApKXJldHVybiBkLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmgsaW5zdDplfSksZDtjb25zdCBnPVtdO2QudmFsdWU9bmV3IE1hcDtmb3IoY29uc3RbeCwkXW9mIGgpe2NvbnN0IFM9cy5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTp4LGlzc3VlczpbXX0sbSksaj1zLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6JCxpc3N1ZXM6W119LG0pO1MgaW5zdGFuY2VvZiBQcm9taXNlfHxqIGluc3RhbmNlb2YgUHJvbWlzZT9nLnB1c2goUHJvbWlzZS5hbGwoW1Msal0pLnRoZW4oKFtzLGddKT0+e2hhbmRsZU1hcFJlc3VsdChzLGcsZCx4LGgsZSxtKX0pKTpoYW5kbGVNYXBSZXN1bHQoUyxqLGQseCxoLGUsbSl9cmV0dXJuIGcubGVuZ3RoP1Byb21pc2UuYWxsKGcpLnRoZW4oKCk9PmQpOmR9fSk7ZnVuY3Rpb24gaGFuZGxlTWFwUmVzdWx0KGUscyxkLG0saCxnLHgpe2UuaXNzdWVzLmxlbmd0aCYmKHhyLmhhcyh0eXBlb2YgbSk/ZC5pc3N1ZXMucHVzaCguLi5wcmVmaXhJc3N1ZXMobSxlLmlzc3VlcykpOmQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46Im1hcCIsaW5wdXQ6aCxpbnN0OmcsaXNzdWVzOmUuaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUseCxjb25maWcoKSkpfSkpLHMuaXNzdWVzLmxlbmd0aCYmKHhyLmhhcyh0eXBlb2YgbSk/ZC5pc3N1ZXMucHVzaCguLi5wcmVmaXhJc3N1ZXMobSxzLmlzc3VlcykpOmQuaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OmgsaW5zdDpnLGtleTptLGlzc3VlczpzLmlzc3Vlcy5tYXAoZT0+ZmluYWxpemVJc3N1ZShlLHgsY29uZmlnKCkpKX0pKSxkLnZhbHVlLnNldChlLnZhbHVlLHMudmFsdWUpfWNvbnN0IGNzPSRjb25zdHJ1Y3RvcigiJFpvZFNldCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShkLG0pPT57Y29uc3QgaD1kLnZhbHVlO2lmKCEoaCBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIGQuaXNzdWVzLnB1c2goe2lucHV0OmgsaW5zdDplLGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxkO2NvbnN0IGc9W107ZC52YWx1ZT1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIGgpe2NvbnN0IGg9cy52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxtKTtoIGluc3RhbmNlb2YgUHJvbWlzZT9nLnB1c2goaC50aGVuKGU9PmhhbmRsZVNldFJlc3VsdChlLGQpKSk6aGFuZGxlU2V0UmVzdWx0KGgsZCl9cmV0dXJuIGcubGVuZ3RoP1Byb21pc2UuYWxsKGcpLnRoZW4oKCk9PmQpOmR9fSk7ZnVuY3Rpb24gaGFuZGxlU2V0UmVzdWx0KGUscyl7ZS5pc3N1ZXMubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKC4uLmUuaXNzdWVzKSxzLnZhbHVlLmFkZChlLnZhbHVlKX1jb25zdCB1cz0kY29uc3RydWN0b3IoIiRab2RFbnVtIiwoZSxzKT0+e25hLmluaXQoZSxzKTtjb25zdCBkPWdldEVudW1WYWx1ZXMocy5lbnRyaWVzKSxtPW5ldyBTZXQoZCk7ZS5fem9kLnZhbHVlcz1tLGUuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtkLmZpbHRlcihlPT54ci5oYXModHlwZW9mIGUpKS5tYXAoZT0+InN0cmluZyI9PXR5cGVvZiBlP2VzY2FwZVJlZ2V4KGUpOmUudG9TdHJpbmcoKSkuam9pbigifCIpfSkkYCksZS5fem9kLnBhcnNlPShzLGgpPT57Y29uc3QgZz1zLnZhbHVlO3JldHVybiBtLmhhcyhnKXx8cy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOmQsaW5wdXQ6ZyxpbnN0OmV9KSxzfX0pLGRzPSRjb25zdHJ1Y3RvcigiJFpvZExpdGVyYWwiLChlLHMpPT57aWYobmEuaW5pdChlLHMpLDA9PT1zLnZhbHVlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY3JlYXRlIGxpdGVyYWwgc2NoZW1hIHdpdGggbm8gdmFsaWQgdmFsdWVzIik7Y29uc3QgZD1uZXcgU2V0KHMudmFsdWVzKTtlLl96b2QudmFsdWVzPWQsZS5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke3MudmFsdWVzLm1hcChlPT4ic3RyaW5nIj09dHlwZW9mIGU/ZXNjYXBlUmVnZXgoZSk6ZT9lc2NhcGVSZWdleChlLnRvU3RyaW5nKCkpOlN0cmluZyhlKSkuam9pbigifCIpfSkkYCksZS5fem9kLnBhcnNlPShtLGgpPT57Y29uc3QgZz1tLnZhbHVlO3JldHVybiBkLmhhcyhnKXx8bS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnMudmFsdWVzLGlucHV0OmcsaW5zdDplfSksbX19KSxwcz0kY29uc3RydWN0b3IoIiRab2RGaWxlIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KHMsZCk9Pntjb25zdCBtPXMudmFsdWU7cmV0dXJuIG0gaW5zdGFuY2VvZiBGaWxlfHxzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDptLGluc3Q6ZX0pLHN9fSksbXM9JGNvbnN0cnVjdG9yKCIkWm9kVHJhbnNmb3JtIiwoZSxzKT0+e25hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KGQsbSk9PntpZigiYmFja3dhcmQiPT09bS5kaXJlY3Rpb24pdGhyb3cgbmV3ICRab2RFbmNvZGVFcnJvcihlLmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IGg9cy50cmFuc2Zvcm0oZC52YWx1ZSxkKTtpZihtLmFzeW5jKXtyZXR1cm4oaCBpbnN0YW5jZW9mIFByb21pc2U/aDpQcm9taXNlLnJlc29sdmUoaCkpLnRoZW4oZT0+KGQudmFsdWU9ZSxkKSl9aWYoaCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3ICRab2RBc3luY0Vycm9yO3JldHVybiBkLnZhbHVlPWgsZH19KTtmdW5jdGlvbiBoYW5kbGVPcHRpb25hbFJlc3VsdChlLHMpe3JldHVybiBlLmlzc3Vlcy5sZW5ndGgmJnZvaWQgMD09PXM/e2lzc3VlczpbXSx2YWx1ZTp2b2lkIDB9OmV9Y29uc3QgZnM9JGNvbnN0cnVjdG9yKCIkWm9kT3B0aW9uYWwiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLGUuX3pvZC5vcHRvdXQ9Im9wdGlvbmFsIixkZWZpbmVMYXp5KGUuX3pvZCwidmFsdWVzIiwoKT0+cy5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ucy5pbm5lclR5cGUuX3pvZC52YWx1ZXMsdm9pZCAwXSk6dm9pZCAwKSxkZWZpbmVMYXp5KGUuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCBlPXMuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gZT9uZXcgUmVnRXhwKGBeKCR7Y2xlYW5SZWdleChlLnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoIm9wdGlvbmFsIj09PXMuaW5uZXJUeXBlLl96b2Qub3B0aW4pe2NvbnN0IG09cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtyZXR1cm4gbSBpbnN0YW5jZW9mIFByb21pc2U/bS50aGVuKHM9PmhhbmRsZU9wdGlvbmFsUmVzdWx0KHMsZS52YWx1ZSkpOmhhbmRsZU9wdGlvbmFsUmVzdWx0KG0sZS52YWx1ZSl9cmV0dXJuIHZvaWQgMD09PWUudmFsdWU/ZTpzLmlubmVyVHlwZS5fem9kLnJ1bihlLGQpfX0pLGhzPSRjb25zdHJ1Y3RvcigiJFpvZEV4YWN0T3B0aW9uYWwiLChlLHMpPT57ZnMuaW5pdChlLHMpLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZGVmaW5lTGF6eShlLl96b2QsInBhdHRlcm4iLCgpPT5zLmlubmVyVHlwZS5fem9kLnBhdHRlcm4pLGUuX3pvZC5wYXJzZT0oZSxkKT0+cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKX0pLGdzPSRjb25zdHJ1Y3RvcigiJFpvZE51bGxhYmxlIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLmlubmVyVHlwZS5fem9kLm9wdGluKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0b3V0IiwoKT0+cy5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLGRlZmluZUxhenkoZS5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IGU9cy5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiBlP25ldyBSZWdFeHAoYF4oJHtjbGVhblJlZ2V4KGUuc291cmNlKX18bnVsbCkkYCk6dm9pZCAwfSksZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9PnMuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLnMuaW5uZXJUeXBlLl96b2QudmFsdWVzLG51bGxdKTp2b2lkIDApLGUuX3pvZC5wYXJzZT0oZSxkKT0+bnVsbD09PWUudmFsdWU/ZTpzLmlubmVyVHlwZS5fem9kLnJ1bihlLGQpfSksdnM9JGNvbnN0cnVjdG9yKCIkWm9kRGVmYXVsdCIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLm9wdGluPSJvcHRpb25hbCIsZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9PnMuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KGUsZCk9PntpZigiYmFja3dhcmQiPT09ZC5kaXJlY3Rpb24pcmV0dXJuIHMuaW5uZXJUeXBlLl96b2QucnVuKGUsZCk7aWYodm9pZCAwPT09ZS52YWx1ZSlyZXR1cm4gZS52YWx1ZT1zLmRlZmF1bHRWYWx1ZSxlO2NvbnN0IG09cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtyZXR1cm4gbSBpbnN0YW5jZW9mIFByb21pc2U/bS50aGVuKGU9PmhhbmRsZURlZmF1bHRSZXN1bHQoZSxzKSk6aGFuZGxlRGVmYXVsdFJlc3VsdChtLHMpfX0pO2Z1bmN0aW9uIGhhbmRsZURlZmF1bHRSZXN1bHQoZSxzKXtyZXR1cm4gdm9pZCAwPT09ZS52YWx1ZSYmKGUudmFsdWU9cy5kZWZhdWx0VmFsdWUpLGV9Y29uc3QgeXM9JGNvbnN0cnVjdG9yKCIkWm9kUHJlZmF1bHQiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZS5fem9kLnBhcnNlPShlLGQpPT4oImJhY2t3YXJkIj09PWQuZGlyZWN0aW9ufHx2b2lkIDA9PT1lLnZhbHVlJiYoZS52YWx1ZT1zLmRlZmF1bHRWYWx1ZSkscy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKSl9KSxicz0kY29uc3RydWN0b3IoIiRab2ROb25PcHRpb25hbCIsKGUscyk9PntuYS5pbml0KGUscyksZGVmaW5lTGF6eShlLl96b2QsInZhbHVlcyIsKCk9Pntjb25zdCBlPXMuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBlP25ldyBTZXQoWy4uLmVdLmZpbHRlcihlPT52b2lkIDAhPT1lKSk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShkLG0pPT57Y29uc3QgaD1zLmlubmVyVHlwZS5fem9kLnJ1bihkLG0pO3JldHVybiBoIGluc3RhbmNlb2YgUHJvbWlzZT9oLnRoZW4ocz0+aGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQocyxlKSk6aGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQoaCxlKX19KTtmdW5jdGlvbiBoYW5kbGVOb25PcHRpb25hbFJlc3VsdChlLHMpe3JldHVybiBlLmlzc3Vlcy5sZW5ndGh8fHZvaWQgMCE9PWUudmFsdWV8fGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDplLnZhbHVlLGluc3Q6c30pLGV9Y29uc3QgX3M9JGNvbnN0cnVjdG9yKCIkWm9kU3VjY2VzcyIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoImJhY2t3YXJkIj09PWQuZGlyZWN0aW9uKXRocm93IG5ldyAkWm9kRW5jb2RlRXJyb3IoIlpvZFN1Y2Nlc3MiKTtjb25zdCBtPXMuaW5uZXJUeXBlLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihzPT4oZS52YWx1ZT0wPT09cy5pc3N1ZXMubGVuZ3RoLGUpKTooZS52YWx1ZT0wPT09bS5pc3N1ZXMubGVuZ3RoLGUpfX0pLHhzPSRjb25zdHJ1Y3RvcigiJFpvZENhdGNoIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLmlubmVyVHlwZS5fem9kLm9wdGluKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0b3V0IiwoKT0+cy5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoImJhY2t3YXJkIj09PWQuZGlyZWN0aW9uKXJldHVybiBzLmlubmVyVHlwZS5fem9kLnJ1bihlLGQpO2NvbnN0IG09cy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtyZXR1cm4gbSBpbnN0YW5jZW9mIFByb21pc2U/bS50aGVuKG09PihlLnZhbHVlPW0udmFsdWUsbS5pc3N1ZXMubGVuZ3RoJiYoZS52YWx1ZT1zLmNhdGNoVmFsdWUoey4uLmUsZXJyb3I6e2lzc3VlczptLmlzc3Vlcy5tYXAoZT0+ZmluYWxpemVJc3N1ZShlLGQsY29uZmlnKCkpKX0saW5wdXQ6ZS52YWx1ZX0pLGUuaXNzdWVzPVtdKSxlKSk6KGUudmFsdWU9bS52YWx1ZSxtLmlzc3Vlcy5sZW5ndGgmJihlLnZhbHVlPXMuY2F0Y2hWYWx1ZSh7Li4uZSxlcnJvcjp7aXNzdWVzOm0uaXNzdWVzLm1hcChlPT5maW5hbGl6ZUlzc3VlKGUsZCxjb25maWcoKSkpfSxpbnB1dDplLnZhbHVlfSksZS5pc3N1ZXM9W10pLGUpfX0pLHdzPSRjb25zdHJ1Y3RvcigiJFpvZE5hTiIsKGUscyk9PntuYS5pbml0KGUscyksZS5fem9kLnBhcnNlPShzLGQpPT4oIm51bWJlciI9PXR5cGVvZiBzLnZhbHVlJiZOdW1iZXIuaXNOYU4ocy52YWx1ZSl8fHMuaXNzdWVzLnB1c2goe2lucHV0OnMudmFsdWUsaW5zdDplLGV4cGVjdGVkOiJuYW4iLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxzKX0pLCRzPSRjb25zdHJ1Y3RvcigiJFpvZFBpcGUiLChlLHMpPT57bmEuaW5pdChlLHMpLGRlZmluZUxhenkoZS5fem9kLCJ2YWx1ZXMiLCgpPT5zLmluLl96b2QudmFsdWVzKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0aW4iLCgpPT5zLmluLl96b2Qub3B0aW4pLGRlZmluZUxhenkoZS5fem9kLCJvcHRvdXQiLCgpPT5zLm91dC5fem9kLm9wdG91dCksZGVmaW5lTGF6eShlLl96b2QsInByb3BWYWx1ZXMiLCgpPT5zLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShlLGQpPT57aWYoImJhY2t3YXJkIj09PWQuZGlyZWN0aW9uKXtjb25zdCBtPXMub3V0Ll96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVQaXBlUmVzdWx0KGUscy5pbixkKSk6aGFuZGxlUGlwZVJlc3VsdChtLHMuaW4sZCl9Y29uc3QgbT1zLmluLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVQaXBlUmVzdWx0KGUscy5vdXQsZCkpOmhhbmRsZVBpcGVSZXN1bHQobSxzLm91dCxkKX19KTtmdW5jdGlvbiBoYW5kbGVQaXBlUmVzdWx0KGUscyxkKXtyZXR1cm4gZS5pc3N1ZXMubGVuZ3RoPyhlLmFib3J0ZWQ9ITAsZSk6cy5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LGQpfWNvbnN0IFNzPSRjb25zdHJ1Y3RvcigiJFpvZENvZGVjIiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwidmFsdWVzIiwoKT0+cy5pbi5fem9kLnZhbHVlcyksZGVmaW5lTGF6eShlLl96b2QsIm9wdGluIiwoKT0+cy5pbi5fem9kLm9wdGluKSxkZWZpbmVMYXp5KGUuX3pvZCwib3B0b3V0IiwoKT0+cy5vdXQuX3pvZC5vcHRvdXQpLGRlZmluZUxhenkoZS5fem9kLCJwcm9wVmFsdWVzIiwoKT0+cy5pbi5fem9kLnByb3BWYWx1ZXMpLGUuX3pvZC5wYXJzZT0oZSxkKT0+e2lmKCJmb3J3YXJkIj09PShkLmRpcmVjdGlvbnx8ImZvcndhcmQiKSl7Y29uc3QgbT1zLmluLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVDb2RlY0FSZXN1bHQoZSxzLGQpKTpoYW5kbGVDb2RlY0FSZXN1bHQobSxzLGQpfXtjb25zdCBtPXMub3V0Ll96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihlPT5oYW5kbGVDb2RlY0FSZXN1bHQoZSxzLGQpKTpoYW5kbGVDb2RlY0FSZXN1bHQobSxzLGQpfX19KTtmdW5jdGlvbiBoYW5kbGVDb2RlY0FSZXN1bHQoZSxzLGQpe2lmKGUuaXNzdWVzLmxlbmd0aClyZXR1cm4gZS5hYm9ydGVkPSEwLGU7aWYoImZvcndhcmQiPT09KGQuZGlyZWN0aW9ufHwiZm9yd2FyZCIpKXtjb25zdCBtPXMudHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihtPT5oYW5kbGVDb2RlY1R4UmVzdWx0KGUsbSxzLm91dCxkKSk6aGFuZGxlQ29kZWNUeFJlc3VsdChlLG0scy5vdXQsZCl9e2NvbnN0IG09cy5yZXZlcnNlVHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihtPT5oYW5kbGVDb2RlY1R4UmVzdWx0KGUsbSxzLmluLGQpKTpoYW5kbGVDb2RlY1R4UmVzdWx0KGUsbSxzLmluLGQpfX1mdW5jdGlvbiBoYW5kbGVDb2RlY1R4UmVzdWx0KGUscyxkLG0pe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg/KGUuYWJvcnRlZD0hMCxlKTpkLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczplLmlzc3Vlc30sbSl9Y29uc3Qga3M9JGNvbnN0cnVjdG9yKCIkWm9kUmVhZG9ubHkiLChlLHMpPT57bmEuaW5pdChlLHMpLGRlZmluZUxhenkoZS5fem9kLCJwcm9wVmFsdWVzIiwoKT0+cy5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKSxkZWZpbmVMYXp5KGUuX3pvZCwidmFsdWVzIiwoKT0+cy5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGRlZmluZUxhenkoZS5fem9kLCJvcHRpbiIsKCk9PnMuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksZGVmaW5lTGF6eShlLl96b2QsIm9wdG91dCIsKCk9PnMuaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQpLGUuX3pvZC5wYXJzZT0oZSxkKT0+e2lmKCJiYWNrd2FyZCI9PT1kLmRpcmVjdGlvbilyZXR1cm4gcy5pbm5lclR5cGUuX3pvZC5ydW4oZSxkKTtjb25zdCBtPXMuaW5uZXJUeXBlLl96b2QucnVuKGUsZCk7cmV0dXJuIG0gaW5zdGFuY2VvZiBQcm9taXNlP20udGhlbihoYW5kbGVSZWFkb25seVJlc3VsdCk6aGFuZGxlUmVhZG9ubHlSZXN1bHQobSl9fSk7ZnVuY3Rpb24gaGFuZGxlUmVhZG9ubHlSZXN1bHQoZSl7cmV0dXJuIGUudmFsdWU9T2JqZWN0LmZyZWV6ZShlLnZhbHVlKSxlfWNvbnN0IGpzPSRjb25zdHJ1Y3RvcigiJFpvZFRlbXBsYXRlTGl0ZXJhbCIsKGUscyk9PntuYS5pbml0KGUscyk7Y29uc3QgZD1bXTtmb3IoY29uc3QgZSBvZiBzLnBhcnRzKWlmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpe2lmKCFlLl96b2QucGF0dGVybil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0LCBubyBwYXR0ZXJuIGZvdW5kOiAke1suLi5lLl96b2QudHJhaXRzXS5zaGlmdCgpfWApO2NvbnN0IHM9ZS5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHA/ZS5fem9kLnBhdHRlcm4uc291cmNlOmUuX3pvZC5wYXR0ZXJuO2lmKCFzKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7ZS5fem9kLnRyYWl0c31gKTtjb25zdCBtPXMuc3RhcnRzV2l0aCgiXiIpPzE6MCxoPXMuZW5kc1dpdGgoIiQiKT9zLmxlbmd0aC0xOnMubGVuZ3RoO2QucHVzaChzLnNsaWNlKG0saCkpfWVsc2V7aWYobnVsbCE9PWUmJiF3ci5oYXModHlwZW9mIGUpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7ZX1gKTtkLnB1c2goZXNjYXBlUmVnZXgoYCR7ZX1gKSl9ZS5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXiR7ZC5qb2luKCIiKX0kYCksZS5fem9kLnBhcnNlPShkLG0pPT4ic3RyaW5nIiE9dHlwZW9mIGQudmFsdWU/KGQuaXNzdWVzLnB1c2goe2lucHV0OmQudmFsdWUsaW5zdDplLGV4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxkKTooZS5fem9kLnBhdHRlcm4ubGFzdEluZGV4PTAsZS5fem9kLnBhdHRlcm4udGVzdChkLnZhbHVlKXx8ZC5pc3N1ZXMucHVzaCh7aW5wdXQ6ZC52YWx1ZSxpbnN0OmUsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpzLmZvcm1hdD8/InRlbXBsYXRlX2xpdGVyYWwiLHBhdHRlcm46ZS5fem9kLnBhdHRlcm4uc291cmNlfSksZCl9KSx6cz0kY29uc3RydWN0b3IoIiRab2RGdW5jdGlvbiIsKGUscyk9PihuYS5pbml0KGUscyksZS5fZGVmPXMsZS5fem9kLmRlZj1zLGUuaW1wbGVtZW50PXM9PntpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvbiIpO3JldHVybiBmdW5jdGlvbiguLi5kKXtjb25zdCBtPWUuX2RlZi5pbnB1dD9JcihlLl9kZWYuaW5wdXQsZCk6ZCxoPVJlZmxlY3QuYXBwbHkocyx0aGlzLG0pO3JldHVybiBlLl9kZWYub3V0cHV0P0lyKGUuX2RlZi5vdXRwdXQsaCk6aH19LGUuaW1wbGVtZW50QXN5bmM9cz0+e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBzKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gYXN5bmMgZnVuY3Rpb24oLi4uZCl7Y29uc3QgbT1lLl9kZWYuaW5wdXQ/YXdhaXQgQ3IoZS5fZGVmLmlucHV0LGQpOmQsaD1hd2FpdCBSZWZsZWN0LmFwcGx5KHMsdGhpcyxtKTtyZXR1cm4gZS5fZGVmLm91dHB1dD9hd2FpdCBDcihlLl9kZWYub3V0cHV0LGgpOmh9fSxlLl96b2QucGFyc2U9KHMsZCk9PntpZigiZnVuY3Rpb24iIT10eXBlb2Ygcy52YWx1ZSlyZXR1cm4gcy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoiZnVuY3Rpb24iLGlucHV0OnMudmFsdWUsaW5zdDplfSkscztjb25zdCBtPWUuX2RlZi5vdXRwdXQmJiJwcm9taXNlIj09PWUuX2RlZi5vdXRwdXQuX3pvZC5kZWYudHlwZTtyZXR1cm4gcy52YWx1ZT1tP2UuaW1wbGVtZW50QXN5bmMocy52YWx1ZSk6ZS5pbXBsZW1lbnQocy52YWx1ZSksc30sZS5pbnB1dD0oLi4ucyk9Pntjb25zdCBkPWUuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoc1swXSk/bmV3IGQoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcgYXMoe3R5cGU6InR1cGxlIixpdGVtczpzWzBdLHJlc3Q6c1sxXX0pLG91dHB1dDplLl9kZWYub3V0cHV0fSk6bmV3IGQoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpzWzBdLG91dHB1dDplLl9kZWYub3V0cHV0fSl9LGUub3V0cHV0PXM9Pm5ldygwLGUuY29uc3RydWN0b3IpKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6ZS5fZGVmLmlucHV0LG91dHB1dDpzfSksZSkpLElzPSRjb25zdHJ1Y3RvcigiJFpvZFByb21pc2UiLChlLHMpPT57bmEuaW5pdChlLHMpLGUuX3pvZC5wYXJzZT0oZSxkKT0+UHJvbWlzZS5yZXNvbHZlKGUudmFsdWUpLnRoZW4oZT0+cy5pbm5lclR5cGUuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxkKSl9KSxDcz0kY29uc3RydWN0b3IoIiRab2RMYXp5IiwoZSxzKT0+e25hLmluaXQoZSxzKSxkZWZpbmVMYXp5KGUuX3pvZCwiaW5uZXJUeXBlIiwoKT0+cy5nZXR0ZXIoKSksZGVmaW5lTGF6eShlLl96b2QsInBhdHRlcm4iLCgpPT5lLl96b2QuaW5uZXJUeXBlPy5fem9kPy5wYXR0ZXJuKSxkZWZpbmVMYXp5KGUuX3pvZCwicHJvcFZhbHVlcyIsKCk9PmUuX3pvZC5pbm5lclR5cGU/Ll96b2Q/LnByb3BWYWx1ZXMpLGRlZmluZUxhenkoZS5fem9kLCJvcHRpbiIsKCk9PmUuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLGRlZmluZUxhenkoZS5fem9kLCJvcHRvdXQiLCgpPT5lLl96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQ/P3ZvaWQgMCksZS5fem9kLnBhcnNlPShzLGQpPT5lLl96b2QuaW5uZXJUeXBlLl96b2QucnVuKHMsZCl9KSxUcz0kY29uc3RydWN0b3IoIiRab2RDdXN0b20iLChlLHMpPT57RW8uaW5pdChlLHMpLG5hLmluaXQoZSxzKSxlLl96b2QucGFyc2U9KGUscyk9PmUsZS5fem9kLmNoZWNrPWQ9Pntjb25zdCBtPWQudmFsdWUsaD1zLmZuKG0pO2lmKGggaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBoLnRoZW4ocz0+aGFuZGxlUmVmaW5lUmVzdWx0KHMsZCxtLGUpKTtoYW5kbGVSZWZpbmVSZXN1bHQoaCxkLG0sZSl9fSk7ZnVuY3Rpb24gaGFuZGxlUmVmaW5lUmVzdWx0KGUscyxkLG0pe2lmKCFlKXtjb25zdCBlPXtjb2RlOiJjdXN0b20iLGlucHV0OmQsaW5zdDptLHBhdGg6Wy4uLm0uX3pvZC5kZWYucGF0aD8/W11dLGNvbnRpbnVlOiFtLl96b2QuZGVmLmFib3J0fTttLl96b2QuZGVmLnBhcmFtcyYmKGUucGFyYW1zPW0uX3pvZC5kZWYucGFyYW1zKSxzLmlzc3Vlcy5wdXNoKGlzc3VlKGUpKX19Y29uc3QgZXJyb3IkSz0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi2K3YsdmBIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sZmlsZTp7dW5pdDoi2KjYp9mK2KoiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxhcnJheTp7dW5pdDoi2LnZhti12LEiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxzZXQ6e3VuaXQ6Iti52YbYtdixIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi2YXYr9iu2YQiLGVtYWlsOiLYqNix2YrYryDYpdmE2YPYqtix2YjZhtmKIix1cmw6Itix2KfYqNi3IixlbW9qaToi2KXZitmF2YjYrNmKIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLYqtin2LHZitiuINmI2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGRhdGU6Itiq2KfYsdmK2K4g2KjZhdi52YrYp9ixIElTTyIsdGltZToi2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGR1cmF0aW9uOiLZhdiv2Kkg2KjZhdi52YrYp9ixIElTTyIsaXB2NDoi2LnZhtmI2KfZhiBJUHY0IixpcHY2OiLYudmG2YjYp9mGIElQdjYiLGNpZHJ2NDoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjQiLGNpZHJ2Njoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjYiLGJhc2U2NDoi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjQtZW5jb2RlZCIsYmFzZTY0dXJsOiLZhtmO2LUg2KjYqtix2YXZitiyIGJhc2U2NHVybC1lbmNvZGVkIixqc29uX3N0cmluZzoi2YbZjti1INi52YTZiSDZh9mK2KbYqSBKU09OIixlMTY0OiLYsdmC2YUg2YfYp9iq2YEg2KjZhdi52YrYp9ixIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YXYr9iu2YQifSxkPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfdiMINmI2YTZg9mGINiq2YUg2KXYr9iu2KfZhCAke2h9YDpg2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCAke3N92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YNin2K7YqtmK2KfYsSDYutmK2LEg2YXZgtio2YjZhDog2YrYqtmI2YLYuSDYp9mG2KrZgtin2KEg2KPYrdivINmH2LDZhyDYp9mE2K7Zitin2LHYp9iqOiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2Ag2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2Uub3JpZ2luPz8i2KfZhNmC2YrZhdipIn0gJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/Iti52YbYtdixIn1gOmDYo9mD2KjYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDYo9mGINiq2YPZiNmGICR7ZS5vcmlnaW4/PyLYp9mE2YLZitmF2KkifSAke3N9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqNiv2KMg2KjZgCAiJHtlLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YbYqtmH2Yog2KjZgCAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqti22YXZkdmO2YYgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYt9in2KjZgiDYp9mE2YbZhdi3ICR7ZC5wYXR0ZXJufWA6YCR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fSDYutmK2LEg2YXZgtio2YjZhGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYsdmC2YUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YPZiNmGINmF2YYg2YXYttin2LnZgdin2KogJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2YXYudix2YEke2Uua2V5cy5sZW5ndGg+MT8i2KfYqiI6IiJ9INi62LHZitioJHtlLmtleXMubGVuZ3RoPjE/ItipIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsItiMICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNmF2LnYsdmBINi62YrYsSDZhdmC2KjZiNmEINmB2YogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkSj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoic2ltdm9sIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sc2V0Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJvbG1hbMSxZMSxciJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiZW1haWwgYWRkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGV0aW1lIixkYXRlOiJJU08gZGF0ZSIsdGltZToiSVNPIHRpbWUiLGR1cmF0aW9uOiJJU08gZHVyYXRpb24iLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IG51bWJlciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sZD17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRheGlsIG9sYW4gJHtofWA6YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gJHtzfSwgZGF4aWwgb2xhbiAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBZYW5sxLHFnyBzZcOnaW06IGHFn2HEn8SxZGFrxLFsYXJkYW4gYmlyaSBvbG1hbMSxZMSxcjogJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudCJ9YDpgw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2lufSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgw4dveCBracOnaWs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gWWFubMSxxZ8gbcmZdG46ICIke2QucHJlZml4fSIgaWzJmSBiYcWfbGFtYWzEsWTEsXJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFlhbmzEscWfIG3JmXRuOiAiJHtkLnN1ZmZpeH0iIGlsyZkgYml0bcmZbGlkaXJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gWWFubMSxxZ8gbcmZdG46ICIke2QuaW5jbHVkZXN9IiBkYXhpbCBvbG1hbMSxZMSxcmA6InJlZ2V4Ij09PWQuZm9ybWF0P2BZYW5sxLHFnyBtyZl0bjogJHtkLnBhdHRlcm59IMWfYWJsb251bmEgdXnEn3VuIG9sbWFsxLFkxLFyYDpgWWFubMSxxZ8gJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFlhbmzEscWfIMmZZMmZZDogJHtlLmRpdmlzb3J9IGlsyZkgYsO2bMO8bsmZIGJpbMmZbiBvbG1hbMSxZMSxcmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGHDp2FyJHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gYcOnYXJgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iWWFubMSxxZ8gZMmZecmZciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGTJmXnJmXJgfX19O2Z1bmN0aW9uIGdldEJlbGFydXNpYW5QbHVyYWwoZSxzLGQsbSl7Y29uc3QgaD1NYXRoLmFicyhlKSxnPWglMTAseD1oJTEwMDtyZXR1cm4geD49MTEmJng8PTE5P206MT09PWc/czpnPj0yJiZnPD00P2Q6bX1jb25zdCBlcnJvciRJPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OntvbmU6ItGB0ZbQvNCy0LDQuyIsZmV3OiLRgdGW0LzQstCw0LvRiyIsbWFueToi0YHRltC80LLQsNC70LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sYXJyYXk6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxzZXQ6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxmaWxlOnt1bml0OntvbmU6ItCx0LDQudGCIixmZXc6ItCx0LDQudGC0YsiLG1hbnk6ItCx0LDQudGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi0YPQstC+0LQiLGVtYWlsOiJlbWFpbCDQsNC00YDQsNGBIix1cmw6IlVSTCIsZW1vamk6ItGN0LzQvtC00LfRliIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtCwINGWINGH0LDRgSIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0YfQsNGBIixkdXJhdGlvbjoiSVNPINC/0YDQsNGG0Y/Qs9C70LDRgdGG0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LDRgSIsaXB2NjoiSVB2NiDQsNC00YDQsNGBIixjaWRydjQ6IklQdjQg0LTRi9GP0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00YvRj9C/0LDQt9C+0L0iLGJhc2U2NDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjQiLGJhc2U2NHVybDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJKU09OINGA0LDQtNC+0LoiLGUxNjQ6ItC90YPQvNCw0YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLRg9Cy0L7QtCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ItC70ZbQuiIsYXJyYXk6ItC80LDRgdGW0Z4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQsNGC0YDRi9C80LDQvdCwICR7aH1gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNGe0YHRjyAke3N9LCDQsNGC0YDRi9C80LDQvdCwICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0LvQsNGB0Y8gJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LLQsNGA0YvRj9C90YI6INGH0LDQutCw0Z7RgdGPINCw0LTQt9GW0L0g0LcgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEJlbGFydXNpYW5QbHVyYWwoTnVtYmVyKGUubWF4aW11bSksZC51bml0Lm9uZSxkLnVuaXQuZmV3LGQudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0Y3QvdC90LUifSDQv9Cw0LLRltC90L3QsCAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bX1gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfRjdC90L3QtSJ9INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEJlbGFydXNpYW5QbHVyYWwoTnVtYmVyKGUubWluaW11bSksZC51bml0Lm9uZSxkLnVuaXQuZmV3LGQudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2lufSDQv9Cw0LLRltC90L3QsCAke2QudmVyYn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bX1gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQvNCw0LvRizog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0L/QsNGH0YvQvdCw0YbRhtCwINC3ICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQsNC60LDQvdGH0LLQsNGG0YbQsCDQvdCwICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQt9C80Y/RiNGH0LDRhtGMICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INCw0LTQv9Cw0LLRj9C00LDRhtGMINGI0LDQsdC70L7QvdGDICR7ZC5wYXR0ZXJufWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90YsgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LvRltC6OiDQv9Cw0LLRltC90LXQvSDQsdGL0YbRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QsNC30L3QsNC90YsgJHtlLmtleXMubGVuZ3RoPjE/ItC60LvRjtGH0YsiOiLQutC70Y7RhyJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdCw0LUg0LfQvdCw0YfRjdC90L3QtSDRniAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkSD0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxmaWxlOnt1bml0OiLQsdCw0LnRgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLQstGF0L7QtCIsZW1haWw6ItC40LzQtdC50Lsg0LDQtNGA0LXRgSIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC20LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQstGA0LXQvNC1IixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINC/0YDQvtC00YrQu9C20LjRgtC10LvQvdC+0YHRgiIsaXB2NDoiSVB2NCDQsNC00YDQtdGBIixpcHY2OiJJUHY2INCw0LTRgNC10YEiLGNpZHJ2NDoiSVB2NCDQtNC40LDQv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTQuNCw0L/QsNC30L7QvSIsYmFzZTY0OiJiYXNlNjQt0LrQvtC00LjRgNCw0L0g0L3QuNC3IixiYXNlNjR1cmw6ImJhc2U2NHVybC3QutC+0LTQuNGA0LDQvSDQvdC40LciLGpzb25fc3RyaW5nOiJKU09OINC90LjQtyIsZTE2NDoiRS4xNjQg0L3QvtC80LXRgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0YXQvtC0In0sZD17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC9ICR7aH1gOmDQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9ICR7c30sINC/0L7Qu9GD0YfQtdC9ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YNCd0LXQstCw0LvQuNC00L3QsCDQvtC/0YbQuNGPOiDQvtGH0LDQutCy0LDQvdC+INC10LTQvdC+INC+0YIgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g0KLQstGK0YDQtNC1INCz0L7Qu9GP0LzQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbj8/ItGB0YLQvtC50L3QvtGB0YIifSDQtNCwINGB0YrQtNGK0YDQttCwICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ItC10LvQtdC80LXQvdGC0LAifWA6YNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW4/PyLRgdGC0L7QudC90L7RgdGCIn0g0LTQsCDQsdGK0LTQtSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2lufSDQtNCwINGB0YrQtNGK0YDQttCwICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDQotCy0YrRgNC00LUg0LzQsNC70LrQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbn0g0LTQsCDQsdGK0LTQtSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7aWYoInN0YXJ0c193aXRoIj09PWQuZm9ybWF0KXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0L/QvtGH0LLQsCDRgSAiJHtkLnByZWZpeH0iYDtpZigiZW5kc193aXRoIj09PWQuZm9ybWF0KXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0LLRitGA0YjQstCwINGBICIke2Quc3VmZml4fSJgO2lmKCJpbmNsdWRlcyI9PT1kLmZvcm1hdClyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LLQutC70Y7Rh9Cy0LAgIiR7ZC5pbmNsdWRlc30iYDtpZigicmVnZXgiPT09ZC5mb3JtYXQpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQstC/0LDQtNCwINGBICR7ZC5wYXR0ZXJufWA7bGV0IG09ItCd0LXQstCw0LvQuNC00LXQvSI7cmV0dXJuImVtb2ppIj09PWQuZm9ybWF0JiYobT0i0J3QtdCy0LDQu9C40LTQvdC+IiksImRhdGV0aW1lIj09PWQuZm9ybWF0JiYobT0i0J3QtdCy0LDQu9C40LTQvdC+IiksImRhdGUiPT09ZC5mb3JtYXQmJihtPSLQndC10LLQsNC70LjQtNC90LAiKSwidGltZSI9PT1kLmZvcm1hdCYmKG09ItCd0LXQstCw0LvQuNC00L3QviIpLCJkdXJhdGlvbiI9PT1kLmZvcm1hdCYmKG09ItCd0LXQstCw0LvQuNC00L3QsCIpLGAke219ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQsNC70LjQtNC90L4g0YfQuNGB0LvQvjog0YLRgNGP0LHQstCwINC00LAg0LHRitC00LUg0LrRgNCw0YLQvdC+INC90LAgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDQt9C/0L7Qt9C90LDRgiR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItC+0LLQtSI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQutC70Y7RhyDQsiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQvdCwINGB0YLQvtC50L3QvtGB0YIg0LIgJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJEc9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcsOgY3RlcnMiLHZlcmI6ImNvbnRlbmlyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImNvbnRlbmlyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRzIix2ZXJiOiJjb250ZW5pciJ9LHNldDp7dW5pdDoiZWxlbWVudHMiLHZlcmI6ImNvbnRlbmlyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZW50cmFkYSIsZW1haWw6ImFkcmXDp2EgZWxlY3Ryw7JuaWNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgaG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmFkYSBJU08iLGlwdjQ6ImFkcmXDp2EgSVB2NCIsaXB2NjoiYWRyZcOnYSBJUHY2IixjaWRydjQ6InJhbmcgSVB2NCIsY2lkcnY2OiJyYW5nIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcydoYSByZWJ1dCAke2h9YDpgVGlwdXMgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHtzfSwgcydoYSByZWJ1dCAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BWYWxvciBpbnbDoGxpZDogcydlc3BlcmF2YSAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgT3BjacOzIGludsOgbGlkYTogcydlc3BlcmF2YSB1bmEgZGUgJHtqb2luVmFsdWVzKGUudmFsdWVzLCIgbyAiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/ImNvbSBhIG3DoHhpbSI6Im1lbnlzIGRlIixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW4/PyJlbCB2YWxvciJ9IGNvbnRpbmd1w6lzICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50cyJ9YDpgTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbj8/ImVsIHZhbG9yIn0gZm9zICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iY29tIGEgbcOtbmltIjoibcOpcyBkZSIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gY29udGluZ3XDqXMgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmBNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gZm9zICR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvbWVuw6dhciBhbWIgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gRm9ybWF0IGludsOgbGlkOiBoYSBkJ2FjYWJhciBhbWIgIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BGb3JtYXQgaW52w6BsaWQ6IGhhIGQnaW5jbG91cmUgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YEZvcm1hdCBpbnbDoGxpZDogaGEgZGUgY29pbmNpZGlyIGFtYiBlbCBwYXRyw7MgJHtkLnBhdHRlcm59YDpgRm9ybWF0IGludsOgbGlkIHBlciBhICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOgbGlkOiBoYSBkZSBzZXIgbcO6bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsYXUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vIHJlY29uZWd1ZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsYXUgaW52w6BsaWRhIGEgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoGxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gRWxlbWVudCBpbnbDoGxpZCBhICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRGPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJ6bmFrxa8iLHZlcmI6Im3DrXQifSxmaWxlOnt1bml0OiJiYWp0xa8iLHZlcmI6Im3DrXQifSxhcnJheTp7dW5pdDoicHJ2a8WvIix2ZXJiOiJtw610In0sc2V0Ont1bml0OiJwcnZrxa8iLHZlcmI6Im3DrXQifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJyZWd1bMOhcm7DrSB2w71yYXoiLGVtYWlsOiJlLW1haWxvdsOhIGFkcmVzYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0dW0gYSDEjWFzIHZlIGZvcm3DoXR1IElTTyIsZGF0ZToiZGF0dW0gdmUgZm9ybcOhdHUgSVNPIix0aW1lOiLEjWFzIHZlIGZvcm3DoXR1IElTTyIsZHVyYXRpb246ImRvYmEgdHJ2w6Fuw60gSVNPIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoicm96c2FoIElQdjQiLGNpZHJ2Njoicm96c2FoIElQdjYiLGJhc2U2NDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjQiLGJhc2U2NHVybDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLFmWV0xJt6ZWMgdmUgZm9ybcOhdHUgSlNPTiIsZTE2NDoixI3DrXNsbyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InZzdHVwIn0sZD17bmFuOiJOYU4iLG51bWJlcjoixI3DrXNsbyIsc3RyaW5nOiLFmWV0xJt6ZWMiLGZ1bmN0aW9uOiJmdW5rY2UiLGFycmF5OiJwb2xlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb2JkcsW+ZW5vICR7aH1gOmBOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyAke3N9LCBvYmRyxb5lbm8gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YE5lcGxhdG7DoSBtb8W+bm9zdDogb8SNZWvDoXbDoW5hIGplZG5hIHogaG9kbm90ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YEhvZG5vdGEgamUgcMWZw61sacWhIHZlbGvDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIGLDvXQgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BIb2Rub3RhIGplIHDFmcOtbGnFoSBtYWzDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSB6YcSNw61uYXQgbmEgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60ga29uxI1pdCBuYSAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9ic2Fob3ZhdCAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gb2Rwb3bDrWRhdCB2em9ydSAke2QucGF0dGVybn1gOmBOZXBsYXRuw70gZm9ybcOhdCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmVwbGF0bsOpIMSNw61zbG86IG11c8OtIGLDvXQgbsOhc29ia2VtICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lem7DoW3DqSBrbMOtxI1lOiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5lcGxhdG7DvSBrbMOtxI0gdiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJOZXBsYXRuw70gdnN0dXAiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmVwbGF0bsOhIGhvZG5vdGEgdiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkRT0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoidGVnbiIsdmVyYjoiaGF2ZGUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGF2ZGUifSxhcnJheTp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiJpbmRlaG9sZHQifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiaW5kZWhvbGR0In19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLW1haWxhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2zDpnQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2zDpnQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZWQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsc3RyaW5nOiJzdHJlbmciLG51bWJlcjoidGFsIixib29sZWFuOiJib29sZWFuIixhcnJheToibGlzdGUiLG9iamVjdDoib2JqZWt0IixzZXQ6InPDpnQiLGZpbGU6ImZpbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpayAke2h9YDpgVWd5bGRpZ3QgaW5wdXQ6IGZvcnZlbnRlZGUgJHtzfSwgZmlrICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YFVneWxkaWcgdsOmcmRpOiBmb3J2ZW50ZWRlICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlndCB2YWxnOiBmb3J2ZW50ZWRlIGVuIGFmIGbDuGxnZW5kZSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsbT1nZXRTaXppbmcoZS5vcmlnaW4pLGg9ZFtlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBtP2BGb3Igc3RvcjogZm9ydmVudGVkZSAke2g/PyJ2YWx1ZSJ9ICR7bS52ZXJifSAke3N9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bS51bml0Pz8iZWxlbWVudGVyIn1gOmBGb3Igc3RvcjogZm9ydmVudGVkZSAke2g/PyJ2YWx1ZSJ9IGhhdmRlICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixtPWdldFNpemluZyhlLm9yaWdpbiksaD1kW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIG0/YEZvciBsaWxsZTogZm9ydmVudGVkZSAke2h9ICR7bS52ZXJifSAke3N9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bS51bml0fWA6YEZvciBsaWxsZTogZm9ydmVudGVkZSAke2h9IGhhdmRlICR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BVZ3lsZGlnIHN0cmVuZzogc2thbCBzdGFydGUgbWVkICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFVneWxkaWcgc3RyZW5nOiBza2FsIGVuZGUgbWVkICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgaW5kZWhvbGRlICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BVZ3lsZGlnIHN0cmVuZzogc2thbCBtYXRjaGUgbcO4bnN0ZXJldCAke2QucGF0dGVybn1gOmBVZ3lsZGlnICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVZ3lsZGlndCB0YWw6IHNrYWwgdsOmcmUgZGVsZWxpZ3QgbWVkICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2VuZHRlIG7DuGdsZXIiOiJVa2VuZHQgbsO4Z2xlIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVWd5bGRpZyBuw7hnbGUgaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQ6IG1hdGNoZXIgaW5nZW4gYWYgZGUgdGlsbGFkdGUgdHlwZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2w6ZyZGkgaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQifX19O2NvbnN0IGVycm9yJEQ9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IlplaWNoZW4iLHZlcmI6Inp1IGhhYmVuIn0sZmlsZTp7dW5pdDoiQnl0ZXMiLHZlcmI6Inp1IGhhYmVuIn0sYXJyYXk6e3VuaXQ6IkVsZW1lbnRlIix2ZXJiOiJ6dSBoYWJlbiJ9LHNldDp7dW5pdDoiRWxlbWVudGUiLHZlcmI6Inp1IGhhYmVuIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiRWluZ2FiZSIsZW1haWw6IkUtTWFpbC1BZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6IkVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tRGF0dW0gdW5kIC1VaHJ6ZWl0IixkYXRlOiJJU08tRGF0dW0iLHRpbWU6IklTTy1VaHJ6ZWl0IixkdXJhdGlvbjoiSVNPLURhdWVyIixpcHY0OiJJUHY0LUFkcmVzc2UiLGlwdjY6IklQdjYtQWRyZXNzZSIsY2lkcnY0OiJJUHY0LUJlcmVpY2giLGNpZHJ2NjoiSVB2Ni1CZXJlaWNoIixiYXNlNjQ6IkJhc2U2NC1jb2RpZXJ0ZXIgU3RyaW5nIixiYXNlNjR1cmw6IkJhc2U2NC1VUkwtY29kaWVydGVyIFN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04tU3RyaW5nIixlMTY0OiJFLjE2NC1OdW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJFaW5nYWJlIn0sZD17bmFuOiJOYU4iLG51bWJlcjoiWmFobCIsYXJyYXk6IkFycmF5In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBlcmhhbHRlbiAke2h9YDpgVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke3N9LCBlcmhhbHRlbiAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBVbmfDvGx0aWdlIE9wdGlvbjogZXJ3YXJ0ZXQgZWluZSB2b24gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gWnUgZ3Jvw586IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW4/PyJXZXJ0In0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iRWxlbWVudGUifSBoYXRgOmBadSBncm/DnzogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbj8/IldlcnQifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gaXN0YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fSBoYXRgOmBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgIiR7ZC5wcmVmaXh9IiBiZWdpbm5lbmA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCAiJHtkLnN1ZmZpeH0iIGVuZGVuYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyAiJHtkLmluY2x1ZGVzfSIgZW50aGFsdGVuYDoicmVnZXgiPT09ZC5mb3JtYXQ/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBkZW0gTXVzdGVyICR7ZC5wYXR0ZXJufSBlbnRzcHJlY2hlbmA6YFVuZ8O8bHRpZzogJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVuZ8O8bHRpZ2UgWmFobDogbXVzcyBlaW4gVmllbGZhY2hlcyB2b24gJHtlLmRpdmlzb3J9IHNlaW5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVW5iZWthbm50ZSBTY2hsw7xzc2VsIjoiVW5iZWthbm50ZXIgU2NobMO8c3NlbCJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFNjaGzDvHNzZWwgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iVW5nw7xsdGlnZSBFaW5nYWJlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFdlcnQgaW4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJEM9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNoYXJhY3RlcnMiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxtYXA6e3VuaXQ6ImVudHJpZXMiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCk7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7c30sIHJlY2VpdmVkICR7ZFttXT8/bX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGhhdmUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudHMifWA6YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGJlICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVG9vIHNtYWxsOiBleHBlY3RlZCAke2Uub3JpZ2lufSB0byBoYXZlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmBUb28gc21hbGw6IGV4cGVjdGVkICR7ZS5vcmlnaW59IHRvIGJlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YEludmFsaWQgc3RyaW5nOiBtdXN0IHN0YXJ0IHdpdGggIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BJbnZhbGlkIHN0cmluZzogbXVzdCBpbmNsdWRlICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BJbnZhbGlkIHN0cmluZzogbXVzdCBtYXRjaCBwYXR0ZXJuICR7ZC5wYXR0ZXJufWA6YEludmFsaWQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVW5yZWNvZ25pemVkIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iSW52YWxpZCBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJbnZhbGlkIHZhbHVlIGluICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiBlbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRDKCl9fWNvbnN0IGVycm9yJEI9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImthcmFrdHJvam4iLHZlcmI6ImhhdmkifSxmaWxlOnt1bml0OiJiYWp0b2puIix2ZXJiOiJoYXZpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJlbmlnbyIsZW1haWw6InJldGFkcmVzbyIsdXJsOiJVUkwiLGVtb2ppOiJlbW/EnWlvIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tZGF0b3RlbXBvIixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLXRlbXBvIixkdXJhdGlvbjoiSVNPLWRhxa1ybyIsaXB2NDoiSVB2NC1hZHJlc28iLGlwdjY6IklQdjYtYWRyZXNvIixjaWRydjQ6IklQdjQtcmFuZ28iLGNpZHJ2NjoiSVB2Ni1yYW5nbyIsYmFzZTY0OiI2NC11bWUga29kaXRhIGthcmFrdHJhcm8iLGJhc2U2NHVybDoiVVJMLTY0LXVtZSBrb2RpdGEga2FyYWt0cmFybyIsanNvbl9zdHJpbmc6IkpTT04ta2FyYWt0cmFybyIsZTE2NDoiRS4xNjQtbm9tYnJvIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW5pZ28ifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJub21icm8iLGFycmF5OiJ0YWJlbG8iLG51bGw6InNlbnZhbG9yYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2acSdaXMgJHtofWA6YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzICR7c30sIHJpY2V2acSdaXMgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YE5ldmFsaWRhIG9wY2lvOiBhdGVuZGnEnWlzIHVudSBlbCAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm8gZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW4/PyJ2YWxvcm8ifSBoYXZ1ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnRvam4ifWA6YFRybyBncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbj8/InZhbG9ybyJ9IGhhdnUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm8gbWFsZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW59IGhhdnUgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbn0gZXN0dSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb21lbmNpxJ1pIHBlciAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBmaW5pxJ1pIHBlciAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGlua2x1eml2aSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29uZ3J1aSBrdW4gbGEgbW9kZWxvICR7ZC5wYXR0ZXJufWA6YE5ldmFsaWRhICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZhbGlkYSBub21icm86IGRldmFzIGVzdGkgb2JsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWtvbmF0YSR7ZS5rZXlzLmxlbmd0aD4xPyJqIjoiIn0gxZ1sb3NpbG8ke2Uua2V5cy5sZW5ndGg+MT8iaiI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmFsaWRhIMWdbG9zaWxvIGVuICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIk5ldmFsaWRhIGVuaWdvIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmFsaWRhIHZhbG9ybyBlbiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkQT0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlcyIsdmVyYjoidGVuZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVuZXIifSxhcnJheTp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9LHNldDp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImVudHJhZGEiLGVtYWlsOiJkaXJlY2Npw7NuIGRlIGNvcnJlbyBlbGVjdHLDs25pY28iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImZlY2hhIHkgaG9yYSBJU08iLGRhdGU6ImZlY2hhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhY2nDs24gSVNPIixpcHY0OiJkaXJlY2Npw7NuIElQdjQiLGlwdjY6ImRpcmVjY2nDs24gSVB2NiIsY2lkcnY0OiJyYW5nbyBJUHY0IixjaWRydjY6InJhbmdvIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVuIGJhc2U2NCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LGQ9e25hbjoiTmFOIixzdHJpbmc6InRleHRvIixudW1iZXI6Im7Dum1lcm8iLGJvb2xlYW46ImJvb2xlYW5vIixhcnJheToiYXJyZWdsbyIsb2JqZWN0OiJvYmpldG8iLHNldDoiY29uanVudG8iLGZpbGU6ImFyY2hpdm8iLGRhdGU6ImZlY2hhIixiaWdpbnQ6Im7Dum1lcm8gZ3JhbmRlIixzeW1ib2w6InPDrW1ib2xvIix1bmRlZmluZWQ6ImluZGVmaW5pZG8iLG51bGw6Im51bG8iLGZ1bmN0aW9uOiJmdW5jacOzbiIsbWFwOiJtYXBhIixyZWNvcmQ6InJlZ2lzdHJvIix0dXBsZToidHVwbGEiLGVudW06ImVudW1lcmFjacOzbiIsdW5pb246InVuacOzbiIsbGl0ZXJhbDoibGl0ZXJhbCIscHJvbWlzZToicHJvbWVzYSIsdm9pZDoidmFjw61vIixuZXZlcjoibnVuY2EiLHVua25vd246ImRlc2Nvbm9jaWRvIixhbnk6ImN1YWxxdWllcmEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmVjaWJpZG8gJHtofWA6YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSAke3N9LCByZWNpYmlkbyAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YE9wY2nDs24gaW52w6FsaWRhOiBzZSBlc3BlcmFiYSB1bmEgZGUgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLG09Z2V0U2l6aW5nKGUub3JpZ2luKSxoPWRbZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gbT9gRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7aD8/InZhbG9yIn0gdHV2aWVyYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttLnVuaXQ/PyJlbGVtZW50b3MifWA6YERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke2g/PyJ2YWxvciJ9IGZ1ZXJhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLG09Z2V0U2l6aW5nKGUub3JpZ2luKSxoPWRbZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gbT9gRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtofSB0dXZpZXJhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke20udW5pdH1gOmBEZW1hc2lhZG8gcGVxdWXDsW86IHNlIGVzcGVyYWJhIHF1ZSAke2h9IGZ1ZXJhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29tZW56YXIgY29uICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgdGVybWluYXIgZW4gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGluY2x1aXIgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29pbmNpZGlyIGNvbiBlbCBwYXRyw7NuICR7ZC5wYXR0ZXJufWA6YEludsOhbGlkbyAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRlYmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBMbGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29ub2NpZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYExsYXZlIGludsOhbGlkYSBlbiAke2RbZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3IgaW52w6FsaWRvIGVuICR7ZFtlLm9yaWdpbl0/P2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3Ikej0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi2qnYp9ix2Kfaqdiq2LEiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxmaWxlOnt1bml0OiLYqNin24zYqiIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LGFycmF5Ont1bml0OiLYotuM2KrZhSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LHNldDp7dW5pdDoi2KLbjNiq2YUiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLZiNix2YjYr9uMIixlbWFpbDoi2KLYr9ix2LMg2KfbjNmF24zZhCIsdXJsOiJVUkwiLGVtb2ppOiLYp9uM2YXZiNis24wiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Itiq2KfYsduM2K4g2Ygg2LLZhdin2YYg2KfbjNiy2YgiLGRhdGU6Itiq2KfYsduM2K4g2KfbjNiy2YgiLHRpbWU6Itiy2YXYp9mGINin24zYstmIIixkdXJhdGlvbjoi2YXYr9iqINiy2YXYp9mGINin24zYstmIIixpcHY0OiJJUHY0INii2K/YsdizIixpcHY2OiJJUHY2INii2K/YsdizIixjaWRydjQ6IklQdjQg2K/Yp9mF2YbZhyIsY2lkcnY2OiJJUHY2INiv2KfZhdmG2YciLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg2LHYtNiq2YciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2LHYtNiq2YciLGpzb25fc3RyaW5nOiJKU09OINix2LTYqtmHIixlMTY0OiJFLjE2NCDYudiv2K8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9uMIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KLYsdin24zZhyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXbjOKAjNio2YjYr9iMICR7aH0g2K/YsduM2KfZgdiqINi02K9gOmDZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke3N9INmF24zigIzYqNmI2K/YjCAke2h9INiv2LHbjNin2YHYqiDYtNivYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9INmF24zigIzYqNmI2K9gOmDar9iy24zZhtmHINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiDbjNqp24wg2KfYsiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX0g2YXbjOKAjNio2YjYr2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNiu24zZhNuMINio2LLYsdqvOiAke2Uub3JpZ2luPz8i2YXZgtiv2KfYsSJ9INio2KfbjNivICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/Iti52YbYtdixIn0g2KjYp9i02K9gOmDYrtuM2YTbjCDYqNiy2LHarzogJHtlLm9yaWdpbj8/ItmF2YLYr9in2LEifSDYqNin24zYryAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2KjYp9i02K9gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNiu24zZhNuMINqp2YjahtqpOiAke2Uub3JpZ2lufSDYqNin24zYryAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9INio2KfYtNivYDpg2K7bjNmE24wg2qnZiNqG2qk6ICR7ZS5vcmlnaW59INio2KfbjNivICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinICIke2QucHJlZml4fSIg2LTYsdmI2Lkg2LTZiNivYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyAiJHtkLnN1ZmZpeH0iINiq2YXYp9mFINi02YjYr2A6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2LTYp9mF2YQgIiR7ZC5pbmNsdWRlc30iINio2KfYtNivYDoicmVnZXgiPT09ZC5mb3JtYXQ/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinINin2YTar9mI24wgJHtkLnBhdHRlcm59INmF2LfYp9io2YLYqiDYr9in2LTYqtmHINio2KfYtNivYDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfZhdi52KrYqNixYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi52K/YryDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2YXYttix2KggJHtlLmRpdmlzb3J9INio2KfYtNivYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2qnZhNuM2K8ke2Uua2V5cy5sZW5ndGg+MT8i2YfYp9uMIjoiIn0g2YbYp9i02YbYp9izOiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNqp2YTbjNivINmG2KfYtNmG2KfYsyDYr9ixICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuItmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXZgtiv2KfYsSDZhtin2YXYudiq2KjYsSDYr9ixICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciR5PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJtZXJra2nDpCIsc3ViamVjdDoibWVya2tpam9ub24ifSxmaWxlOnt1bml0OiJ0YXZ1YSIsc3ViamVjdDoidGllZG9zdG9uIn0sYXJyYXk6e3VuaXQ6ImFsa2lvdGEiLHN1YmplY3Q6Imxpc3RhbiJ9LHNldDp7dW5pdDoiYWxraW90YSIsc3ViamVjdDoiam91a29uIn0sbnVtYmVyOnt1bml0OiIiLHN1YmplY3Q6Imx1dnVuIn0sYmlnaW50Ont1bml0OiIiLHN1YmplY3Q6InN1dXJlbiBrb2tvbmFpc2x1dnVuIn0saW50Ont1bml0OiIiLHN1YmplY3Q6Imtva29uYWlzbHV2dW4ifSxkYXRlOnt1bml0OiIiLHN1YmplY3Q6InDDpGl2w6Rtw6TDpHLDpG4ifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJzw6TDpG5uw7ZsbGluZW4gbGF1c2VrZSIsZW1haWw6InPDpGhrw7Zwb3N0aW9zb2l0ZSIsdXJsOiJVUkwtb3NvaXRlIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1haWthbGVpbWEiLGRhdGU6IklTTy1ww6RpdsOkbcOkw6Ryw6QiLHRpbWU6IklTTy1haWthIixkdXJhdGlvbjoiSVNPLWtlc3RvIixpcHY0OiJJUHY0LW9zb2l0ZSIsaXB2NjoiSVB2Ni1vc29pdGUiLGNpZHJ2NDoiSVB2NC1hbHVlIixjaWRydjY6IklQdjYtYWx1ZSIsYmFzZTY0OiJiYXNlNjQta29vZGF0dHUgbWVya2tpam9ubyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29vZGF0dHUgbWVya2tpam9ubyIsanNvbl9zdHJpbmc6IkpTT04tbWVya2tpam9ubyIsZTE2NDoiRS4xNjQtbHVrdSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InRlbXBsYWF0dGltZXJra2lqb25vIn0sZD17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9saSAke2h9YDpgVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiAke3N9LCBvbGkgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBvbGxhICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBWaXJoZWVsbGluZW4gdmFsaW50YTogdMOkeXR5eSBvbGxhIHlrc2kgc2V1cmFhdmlzdGE6ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YExpaWFuIHN1dXJpOiAke2Quc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdH1gLnRyaW0oKTpgTGlpYW4gc3V1cmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YExpaWFuIHBpZW5pOiAke2Quc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gLnRyaW0oKTpgTGlpYW4gcGllbmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IGFsa2FhICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgbG9wcHVhICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBzaXPDpGx0w6TDpCAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSB2YXN0YXRhIHPDpMOkbm7DtmxsaXN0w6QgbGF1c2VrZXR0YSAke2QucGF0dGVybn1gOmBWaXJoZWVsbGluZW4gJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFZpcmhlZWxsaW5lbiBsdWt1OiB0w6R5dHl5IG9sbGEgbHV2dW4gJHtlLmRpdmlzb3J9IG1vbmlrZXJ0YWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJUdW50ZW1hdHRvbWF0IGF2YWltZXQiOiJUdW50ZW1hdG9uIGF2YWluIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGF2YWluIHRpZXR1ZWVzc2EiO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlZpcmhlZWxsaW5lbiB1bmlvbmkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGFydm8gam91a29zc2EiO2RlZmF1bHQ6cmV0dXJuIlZpcmhlZWxsaW5lbiBzecO2dGUifX19O2NvbnN0IGVycm9yJHg9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgZS1tYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRlIGV0IGhldXJlIElTTyIsZGF0ZToiZGF0ZSBJU08iLHRpbWU6ImhldXJlIElTTyIsZHVyYXRpb246ImR1csOpZSBJU08iLGlwdjQ6ImFkcmVzc2UgSVB2NCIsaXB2NjoiYWRyZXNzZSBJUHY2IixjaWRydjQ6InBsYWdlIElQdjQiLGNpZHJ2NjoicGxhZ2UgSVB2NiIsYmFzZTY0OiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNoYcOubmUgSlNPTiIsZTE2NDoibnVtw6lybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHLDqWUifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJub21icmUiLGFycmF5OiJ0YWJsZWF1In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0gYXR0ZW5kdSwgJHtofSByZcOndWA6YEVudHLDqWUgaW52YWxpZGUgOiAke3N9IGF0dGVuZHUsICR7aH0gcmXDp3VgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEVudHLDqWUgaW52YWxpZGUgOiAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9IGF0dGVuZHVgOmBPcHRpb24gaW52YWxpZGUgOiB1bmUgdmFsZXVyIHBhcm1pICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfSBhdHRlbmR1ZWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRyb3AgZ3JhbmQgOiAke2Uub3JpZ2luPz8idmFsZXVyIn0gZG9pdCAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iw6lsw6ltZW50KHMpIn1gOmBUcm9wIGdyYW5kIDogJHtlLm9yaWdpbj8/InZhbGV1ciJ9IGRvaXQgw6p0cmUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm9wIHBldGl0IDogJHtlLm9yaWdpbn0gZG9pdCAke2QudmVyYn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFRyb3AgcGV0aXQgOiAke2Uub3JpZ2lufSBkb2l0IMOqdHJlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgc2UgdGVybWluZXIgcGFyICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vZMOobGUgJHtkLnBhdHRlcm59YDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9IGludmFsaWRlYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgw6p0cmUgdW4gbXVsdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2zDqSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm9uIHJlY29ubnVlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSA6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2zDqSBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJHc9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgY291cnJpZWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGUtaGV1cmUgSVNPIixkYXRlOiJkYXRlIElTTyIsdGltZToiaGV1cmUgSVNPIixkdXJhdGlvbjoiZHVyw6llIElTTyIsaXB2NDoiYWRyZXNzZSBJUHY0IixpcHY2OiJhZHJlc3NlIElQdjYiLGNpZHJ2NDoicGxhZ2UgSVB2NCIsY2lkcnY2OiJwbGFnZSBJUHY2IixiYXNlNjQ6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2hhw65uZSBKU09OIixlMTY0OiJudW3DqXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50csOpZSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmXDp3UgJHtofWA6YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7c30sIHJlw6d1ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBPcHRpb24gaW52YWxpZGUgOiBhdHRlbmR1IGwndW5lIGRlcyB2YWxldXJzIHN1aXZhbnRlcyAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/IuKJpCI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW4/PyJsYSB2YWxldXIifSBhaXQgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFRyb3AgZ3JhbmQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2luPz8ibGEgdmFsZXVyIn0gc29pdCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i4omlIjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gYWl0ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmBUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gc29pdCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb21tZW5jZXIgcGFyICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvcnJlc3BvbmRyZSBhdSBtb3RpZiAke2QucGF0dGVybn1gOmAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxldXIgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3Ikdj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiIsZ2VuZGVyOiJmIn0sbnVtYmVyOntsYWJlbDoi157Xodek16giLGdlbmRlcjoibSJ9LGJvb2xlYW46e2xhYmVsOiLXoteo15og15HXldec15nXkNeg15kiLGdlbmRlcjoibSJ9LGJpZ2ludDp7bGFiZWw6IkJpZ0ludCIsZ2VuZGVyOiJtIn0sZGF0ZTp7bGFiZWw6Iteq15DXqNeZ15oiLGdlbmRlcjoibSJ9LGFycmF5OntsYWJlbDoi157Xoteo15oiLGdlbmRlcjoibSJ9LG9iamVjdDp7bGFiZWw6IteQ15XXkdeZ15nXp9eYIixnZW5kZXI6Im0ifSxudWxsOntsYWJlbDoi16LXqNeaINeo15nXpyAobnVsbCkiLGdlbmRlcjoibSJ9LHVuZGVmaW5lZDp7bGFiZWw6Itei16jXmiDXnNeQINee15XXkteT16ggKHVuZGVmaW5lZCkiLGdlbmRlcjoibSJ9LHN5bWJvbDp7bGFiZWw6Iteh15nXnteR15XXnCAoU3ltYm9sKSIsZ2VuZGVyOiJtIn0sZnVuY3Rpb246e2xhYmVsOiLXpNeV16DXp9em15nXlCIsZ2VuZGVyOiJmIn0sbWFwOntsYWJlbDoi157XpNeUIChNYXApIixnZW5kZXI6ImYifSxzZXQ6e2xhYmVsOiLXp9eR15XXpteUIChTZXQpIixnZW5kZXI6ImYifSxmaWxlOntsYWJlbDoi16fXldeR16UiLGdlbmRlcjoibSJ9LHByb21pc2U6e2xhYmVsOiJQcm9taXNlIixnZW5kZXI6Im0ifSxOYU46e2xhYmVsOiJOYU4iLGdlbmRlcjoibSJ9LHVua25vd246e2xhYmVsOiLXoteo15og15zXkCDXmdeT15XXoiIsZ2VuZGVyOiJtIn0sdmFsdWU6e2xhYmVsOiLXoteo15oiLGdlbmRlcjoibSJ9fSxzPXtzdHJpbmc6e3VuaXQ6Iteq15XXldeZ150iLHNob3J0TGFiZWw6Iten16bXqCIsbG9uZ0xhYmVsOiLXkNeo15XXmiJ9LGZpbGU6e3VuaXQ6IteR15nXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sYXJyYXk6e3VuaXQ6Itek16jXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sc2V0Ont1bml0OiLXpNeo15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LG51bWJlcjp7dW5pdDoiIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifX0sdHlwZUVudHJ5PXM9PnM/ZVtzXTp2b2lkIDAsdHlwZUxhYmVsPXM9Pntjb25zdCBkPXR5cGVFbnRyeShzKTtyZXR1cm4gZD9kLmxhYmVsOnM/P2UudW5rbm93bi5sYWJlbH0sd2l0aERlZmluaXRlPWU9PmDXlCR7dHlwZUxhYmVsKGUpfWAsdmVyYkZvcj1lPT57Y29uc3Qgcz10eXBlRW50cnkoZSk7cmV0dXJuImYiPT09KHM/LmdlbmRlcj8/Im0iKT8i16bXqNeZ15vXlCDXnNeU15nXldeqIjoi16bXqNeZ15og15zXlNeZ15XXqiJ9LGdldFNpemluZz1lPT5lP3NbZV0/P251bGw6bnVsbCxkPXtyZWdleDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sZW1haWw6e2xhYmVsOiLXm9eq15XXkdeqINeQ15nXnteZ15nXnCIsZ2VuZGVyOiJmIn0sdXJsOntsYWJlbDoi15vXqteV15HXqiDXqNep16oiLGdlbmRlcjoiZiJ9LGVtb2ppOntsYWJlbDoi15DXmdee15XXkifXmSIsZ2VuZGVyOiJtIn0sdXVpZDp7bGFiZWw6IlVVSUQiLGdlbmRlcjoibSJ9LG5hbm9pZDp7bGFiZWw6Im5hbm9pZCIsZ2VuZGVyOiJtIn0sZ3VpZDp7bGFiZWw6IkdVSUQiLGdlbmRlcjoibSJ9LGN1aWQ6e2xhYmVsOiJjdWlkIixnZW5kZXI6Im0ifSxjdWlkMjp7bGFiZWw6ImN1aWQyIixnZW5kZXI6Im0ifSx1bGlkOntsYWJlbDoiVUxJRCIsZ2VuZGVyOiJtIn0seGlkOntsYWJlbDoiWElEIixnZW5kZXI6Im0ifSxrc3VpZDp7bGFiZWw6IktTVUlEIixnZW5kZXI6Im0ifSxkYXRldGltZTp7bGFiZWw6Iteq15DXqNeZ15og15XXltee158gSVNPIixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiBJU08iLGdlbmRlcjoibSJ9LHRpbWU6e2xhYmVsOiLXltee158gSVNPIixnZW5kZXI6Im0ifSxkdXJhdGlvbjp7bGFiZWw6Itee16nXmiDXltee158gSVNPIixnZW5kZXI6Im0ifSxpcHY0OntsYWJlbDoi15vXqteV15HXqiBJUHY0IixnZW5kZXI6ImYifSxpcHY2OntsYWJlbDoi15vXqteV15HXqiBJUHY2IixnZW5kZXI6ImYifSxjaWRydjQ6e2xhYmVsOiLXmNeV15XXlyBJUHY0IixnZW5kZXI6Im0ifSxjaWRydjY6e2xhYmVsOiLXmNeV15XXlyBJUHY2IixnZW5kZXI6Im0ifSxiYXNlNjQ6e2xhYmVsOiLXnteX16jXldeW16og15HXkdeh15nXoSA2NCIsZ2VuZGVyOiJmIn0sYmFzZTY0dXJsOntsYWJlbDoi157Xl9eo15XXlteqINeR15HXodeZ16EgNjQg15zXm9eq15XXkdeV16og16jXqdeqIixnZW5kZXI6ImYifSxqc29uX3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiBKU09OIixnZW5kZXI6ImYifSxlMTY0OntsYWJlbDoi157Xodek16ggRS4xNjQiLGdlbmRlcjoibSJ9LGp3dDp7bGFiZWw6IkpXVCIsZ2VuZGVyOiJtIn0sZW5kc193aXRoOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxpbmNsdWRlczp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sbG93ZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxzdGFydHNfd2l0aDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sdXBwZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifX0sbT17bmFuOiJOYU4ifTtyZXR1cm4gcz0+e3N3aXRjaChzLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgZD1zLmV4cGVjdGVkLGg9bVtkPz8iIl0/P3R5cGVMYWJlbChkKSxnPXBhcnNlZFR5cGUocy5pbnB1dCkseD1tW2ddPz9lW2ddPy5sYWJlbD8/ZztyZXR1cm4vXltBLVpdLy50ZXN0KHMuZXhwZWN0ZWQpP2DXp9ec15gg15zXkCDXqten15nXnzog16bXqNeZ15og15zXlNeZ15XXqiBpbnN0YW5jZW9mICR7cy5leHBlY3RlZH0sINeU16rXp9eR15wgJHt4fWA6YNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqICR7aH0sINeU16rXp9eR15wgJHt4fWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjp7aWYoMT09PXMudmFsdWVzLmxlbmd0aClyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU16LXqNeaINeX15nXmdeRINec15TXmdeV16ogJHtzdHJpbmdpZnlQcmltaXRpdmUocy52YWx1ZXNbMF0pfWA7Y29uc3QgZT1zLnZhbHVlcy5tYXAoZT0+c3RyaW5naWZ5UHJpbWl0aXZlKGUpKTtpZigyPT09cy52YWx1ZXMubGVuZ3RoKXJldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2VbMF19INeQ15UgJHtlWzFdfWA7Y29uc3QgZD1lW2UubGVuZ3RoLTFdO3JldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2Uuc2xpY2UoMCwtMSkuam9pbigiLCAiKX0g15DXlSAke2R9YH1jYXNlInRvb19iaWciOntjb25zdCBlPWdldFNpemluZyhzLm9yaWdpbiksZD13aXRoRGVmaW5pdGUocy5vcmlnaW4/PyJ2YWx1ZSIpO2lmKCJzdHJpbmciPT09cy5vcmlnaW4pcmV0dXJuYCR7ZT8ubG9uZ0xhYmVsPz8i15DXqNeV15oifSDXnteT15k6ICR7ZH0g16bXqNeZ15vXlCDXnNeU15vXmdecICR7cy5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZT8udW5pdD8/IiJ9ICR7cy5pbmNsdXNpdmU/IteQ15Ug16TXl9eV16oiOiLXnNeb15wg15TXmdeV16rXqCJ9YC50cmltKCk7aWYoIm51bWJlciI9PT1zLm9yaWdpbil7cmV0dXJuYNeS15PXldecINee15PXmTogJHtkfSDXpteo15nXmiDXnNeU15nXldeqICR7cy5pbmNsdXNpdmU/YNen15jXnyDXkNeVINep15XXldeUINecLSR7cy5tYXhpbXVtfWA6YNen15jXnyDXni0ke3MubWF4aW11bX1gfWB9aWYoImFycmF5Ij09PXMub3JpZ2lufHwic2V0Ij09PXMub3JpZ2luKXtyZXR1cm5g15LXk9eV15wg157Xk9eZOiAke2R9ICR7InNldCI9PT1zLm9yaWdpbj8i16bXqNeZ15vXlCI6Item16jXmdeaIn0g15zXlNeb15nXnCAke3MuaW5jbHVzaXZlP2Ake3MubWF4aW11bX0gJHtlPy51bml0Pz8iIn0g15DXlSDXpNeX15XXqmA6YNek15fXldeqINeeLSR7cy5tYXhpbXVtfSAke2U/LnVuaXQ/PyIifWB9YC50cmltKCl9Y29uc3QgbT1zLmluY2x1c2l2ZT8iPD0iOiI8IixoPXZlcmJGb3Iocy5vcmlnaW4/PyJ2YWx1ZSIpO3JldHVybiBlPy51bml0P2Ake2UubG9uZ0xhYmVsfSDXnteT15k6ICR7ZH0gJHtofSAke219JHtzLm1heGltdW0udG9TdHJpbmcoKX0gJHtlLnVuaXR9YDpgJHtlPy5sb25nTGFiZWw/PyLXkteT15XXnCJ9INee15PXmTogJHtkfSAke2h9ICR7bX0ke3MubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBlPWdldFNpemluZyhzLm9yaWdpbiksZD13aXRoRGVmaW5pdGUocy5vcmlnaW4/PyJ2YWx1ZSIpO2lmKCJzdHJpbmciPT09cy5vcmlnaW4pcmV0dXJuYCR7ZT8uc2hvcnRMYWJlbD8/Iten16bXqCJ9INee15PXmTogJHtkfSDXpteo15nXm9eUINec15TXm9eZ15wgJHtzLm1pbmltdW0udG9TdHJpbmcoKX0gJHtlPy51bml0Pz8iIn0gJHtzLmluY2x1c2l2ZT8i15DXlSDXmdeV16rXqCI6Itec16TXl9eV16oifWAudHJpbSgpO2lmKCJudW1iZXIiPT09cy5vcmlnaW4pe3JldHVybmDXp9eY158g157Xk9eZOiAke2R9INem16jXmdeaINec15TXmdeV16ogJHtzLmluY2x1c2l2ZT9g15LXk9eV15wg15DXlSDXqdeV15XXlCDXnC0ke3MubWluaW11bX1gOmDXkteT15XXnCDXni0ke3MubWluaW11bX1gfWB9aWYoImFycmF5Ij09PXMub3JpZ2lufHwic2V0Ij09PXMub3JpZ2luKXtjb25zdCBtPSJzZXQiPT09cy5vcmlnaW4/Item16jXmdeb15QiOiLXpteo15nXmiI7aWYoMT09PXMubWluaW11bSYmcy5pbmNsdXNpdmUpe3JldHVybmDXp9eY158g157Xk9eZOiAke2R9ICR7bX0g15zXlNeb15nXnCAke3Mub3JpZ2luLCLXnNek15fXldeqINek16jXmdeYINeQ15fXkyJ9YH1yZXR1cm5g16fXmNefINee15PXmTogJHtkfSAke219INec15TXm9eZ15wgJHtzLmluY2x1c2l2ZT9gJHtzLm1pbmltdW19ICR7ZT8udW5pdD8/IiJ9INeQ15Ug15nXldeq16hgOmDXmdeV16rXqCDXni0ke3MubWluaW11bX0gJHtlPy51bml0Pz8iIn1gfWAudHJpbSgpfWNvbnN0IG09cy5pbmNsdXNpdmU/Ij49IjoiPiIsaD12ZXJiRm9yKHMub3JpZ2luPz8idmFsdWUiKTtyZXR1cm4gZT8udW5pdD9gJHtlLnNob3J0TGFiZWx9INee15PXmTogJHtkfSAke2h9ICR7bX0ke3MubWluaW11bS50b1N0cmluZygpfSAke2UudW5pdH1gOmAke2U/LnNob3J0TGFiZWw/PyLXp9eY158ifSDXnteT15k6ICR7ZH0gJHtofSAke219JHtzLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBlPXM7aWYoInN0YXJ0c193aXRoIj09PWUuZm9ybWF0KXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteX15nXnCDXkSAiJHtlLnByZWZpeH0iYDtpZigiZW5kc193aXRoIj09PWUuZm9ybWF0KXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXodeq15nXmdedINeRICIke2Uuc3VmZml4fSJgO2lmKCJpbmNsdWRlcyI9PT1lLmZvcm1hdClyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeb15zXldecICIke2UuaW5jbHVkZXN9ImA7aWYoInJlZ2V4Ij09PWUuZm9ybWF0KXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteQ15nXnSDXnNeq15HXoNeZ16ogJHtlLnBhdHRlcm59YDtjb25zdCBtPWRbZS5mb3JtYXRdO3JldHVybmAke20/LmxhYmVsPz9lLmZvcm1hdH0g15zXkCAkeyJmIj09PShtPy5nZW5kZXI/PyJtIik/Iteq16fXmdeg15QiOiLXqten15nXnyJ9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNee16HXpNeoINec15Ag16rXp9eZ1586INeX15nXmdeRINec15TXmdeV16og157Xm9ek15zXlCDXqdecICR7cy5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNee16TXqteXJHtzLmtleXMubGVuZ3RoPjE/IteV16oiOiIifSDXnNeQINee15bXldeUJHtzLmtleXMubGVuZ3RoPjE/IteZ150iOiLXlCJ9OiAke2pvaW5WYWx1ZXMocy5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuItep15PXlCDXnNeQINeq16fXmdefINeR15DXldeR15nXmden15giO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i16fXnNeYINec15Ag16rXp9eZ158iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ158g15Eke3dpdGhEZWZpbml0ZShzLm9yaWdpbj8/ImFycmF5Iil9YH19fTtjb25zdCBlcnJvciR1PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibGVneWVuIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoibGVneWVuIn0sYXJyYXk6e3VuaXQ6ImVsZW0iLHZlcmI6ImxlZ3llbiJ9LHNldDp7dW5pdDoiZWxlbSIsdmVyYjoibGVneWVuIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiYmVtZW5ldCIsZW1haWw6ImVtYWlsIGPDrW0iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBpZMWRYsOpbHllZyIsZGF0ZToiSVNPIGTDoXR1bSIsdGltZToiSVNPIGlkxZEiLGR1cmF0aW9uOiJJU08gaWTFkWludGVydmFsbHVtIixpcHY0OiJJUHY0IGPDrW0iLGlwdjY6IklQdjYgY8OtbSIsY2lkcnY0OiJJUHY0IHRhcnRvbcOhbnkiLGNpZHJ2NjoiSVB2NiB0YXJ0b23DoW55IixiYXNlNjQ6ImJhc2U2NC1rw7Nkb2x0IHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta8OzZG9sdCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgc3rDoW0iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJiZW1lbmV0In0sZD17bmFuOiJOYU4iLG51bWJlcjoic3rDoW0iLGFycmF5OiJ0w7ZtYiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGEga2Fwb3R0IMOpcnTDqWsgJHtofWA6YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7c30sIGEga2Fwb3R0IMOpcnTDqWsgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YMOJcnbDqW55dGVsZW4gb3BjacOzOiB2YWxhbWVseWlrIMOpcnTDqWsgdsOhcnQgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVMO6bCBuYWd5OiAke2Uub3JpZ2luPz8iw6lydMOpayJ9IG3DqXJldGUgdMO6bCBuYWd5ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW0ifWA6YFTDumwgbmFneTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW4/PyLDqXJ0w6lrIn0gdMO6bCBuYWd5OiAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSBtw6lyZXRlIHTDumwga2ljc2kgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSB0w7psIGtpY3NpICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtkLnByZWZpeH0iIMOpcnTDqWtrZWwga2VsbCBrZXpkxZFkbmllYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7ZC5zdWZmaXh9IiDDqXJ0w6lra2VsIGtlbGwgdsOpZ3rFkWRuaWVgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2QuaW5jbHVkZXN9IiDDqXJ0w6lrZXQga2VsbCB0YXJ0YWxtYXpuaWFgOiJyZWdleCI9PT1kLmZvcm1hdD9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICR7ZC5wYXR0ZXJufSBtaW50w6FuYWsga2VsbCBtZWdmZWxlbG5pZWA6YMOJcnbDqW55dGVsZW4gJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYMOJcnbDqW55dGVsZW4gc3rDoW06ICR7ZS5kaXZpc29yfSB0w7ZiYnN6w7Zyw7Zzw6luZWsga2VsbCBsZW5uaWVgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBJc21lcmV0bGVuIGt1bGNzJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDDiXJ2w6lueXRlbGVuIGt1bGNzICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIsOJcnbDqW55dGVsZW4gYmVtZW5ldCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDDiXJ2w6lueXRlbGVuIMOpcnTDqWs6ICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiBnZXRBcm1lbmlhblBsdXJhbChlLHMsZCl7cmV0dXJuIDE9PT1NYXRoLmFicyhlKT9zOmR9ZnVuY3Rpb24gd2l0aERlZmluaXRlQXJ0aWNsZShlKXtpZighZSlyZXR1cm4iIjtjb25zdCBzPWVbZS5sZW5ndGgtMV07cmV0dXJuIGUrKFsi1aEiLCLVpSIsItWoIiwi1asiLCLVuCIsItW41oIiLCLWhSJdLmluY2x1ZGVzKHMpPyLVtiI6ItWoIil9Y29uc3QgZXJyb3IkdD0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDp7b25lOiLVttW31aHVtiIsbWFueToi1bbVt9Wh1bbVttWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LGZpbGU6e3VuaXQ6e29uZToi1aLVodW11akiLG1hbnk6ItWi1aHVtdWp1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sYXJyYXk6e3VuaXQ6e29uZToi1b/VodaA1oAiLG1hbnk6ItW/1aHWgNaA1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sc2V0Ont1bml0OntvbmU6ItW/1aHWgNaAIixtYW55OiLVv9Wh1oDWgNWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ItW01bjWgtW/1oQiLGVtYWlsOiLVp9WsLiDVsNWh1b3WgdWlIix1cmw6IlVSTCIsZW1vamk6ItWn1bTVuNW71asiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDVodW01b3VodWp1avVviDWhyDVqtWh1bQiLGRhdGU6IklTTyDVodW01b3VodWp1avVviIsdGltZToiSVNPINWq1aHVtCIsZHVyYXRpb246IklTTyDVv9aH1bjVstW41oLVqdW11bjWgtW2IixpcHY0OiJJUHY0INWw1aHVvdaB1aUiLGlwdjY6IklQdjYg1bDVodW91oHVpSIsY2lkcnY0OiJJUHY0INW01avVu9Wh1a/VodW11oQiLGNpZHJ2NjoiSVB2NiDVtNWr1bvVodWv1aHVtdaEIixiYXNlNjQ6ImJhc2U2NCDVsdaH1aHVudWh1oPVuNW+INW/1bjVsiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg1bHWh9Wh1bnVodaD1bjVviDVv9W41bIiLGpzb25fc3RyaW5nOiJKU09OINW/1bjVsiIsZTE2NDoiRS4xNjQg1bDVodW01aHWgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItW01bjWgtW/1oQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiLVqdWr1b4iLGFycmF5OiLVptWh1bbVo9W+1aHVriJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINW91b/VodaB1b7VpdWsINWnICR7aH1gOmDVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke3N9LCDVvdW/1aHWgdW+1aXVrCDVpyAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1sxXSl9YDpg1Y3VrdWh1awg1b/VodaA1aLVpdaA1aHVr+KApCDVvdW61aHVvdW+1bjWgtW0INWn1oAg1bDVpdW/1ofVtdWh1azVttWl1oDVq9aBINW01aXVr9Wo1Z0gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEFybWVuaWFuUGx1cmFsKE51bWJlcihlLm1heGltdW0pLGQudW5pdC5vbmUsZC51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHt3aXRoRGVmaW5pdGVBcnRpY2xlKGUub3JpZ2luPz8i1aHWgNWq1aXWhCIpfSDVr9W41oLVttWl1bbVoSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1bTVpdWuINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke3dpdGhEZWZpbml0ZUFydGljbGUoZS5vcmlnaW4/PyLVodaA1arVpdaEIil9INWs1avVttWrICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtpZihkKXtjb25zdCBtPWdldEFybWVuaWFuUGx1cmFsKE51bWJlcihlLm1pbmltdW0pLGQudW5pdC5vbmUsZC51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINaD1bjWhNaAINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke3dpdGhEZWZpbml0ZUFydGljbGUoZS5vcmlnaW4pfSDVr9W41oLVttWl1bbVoSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHttfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1oPVuNaE1oAg1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7d2l0aERlZmluaXRlQXJ0aWNsZShlLm9yaWdpbil9INWs1avVttWrICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVvdWv1b3VvtWrICIke2QucHJlZml4fSIt1bjVvmA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWh1b7VodaA1b/VvtWrICIke2Quc3VmZml4fSIt1bjVvmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1brVodaA1bjWgtW21aHVr9WrICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1bDVodW01aHVutWh1b/VodW91a3VodW21asgJHtkLnBhdHRlcm59INWx1ofVodW51aHWg9Wr1bZgOmDVjdWt1aHVrCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g1Y3VrdWh1awg1anVq9W+4oCkINW61aXVv9aEINWnINWi1aHVptW01aHVutWh1b/Vq9WvINWs1avVttWrICR7ZS5kaXZpc29yfS3Vq2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNWJ1bPVodW21aHVudW+1aHVriDVotWh1bbVodWs1aske2Uua2V5cy5sZW5ndGg+MT8i1bbVpdaAIjoiIn0uICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g1Y3VrdWh1awg1aLVodW21aHVrNWrICR7d2l0aERlZmluaXRlQXJ0aWNsZShlLm9yaWdpbil9LdW41oLVtGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNWN1a3VodWsINWh1oDVqtWl1oQgJHt3aXRoRGVmaW5pdGVBcnRpY2xlKGUub3JpZ2luKX0t1bjWgtW0YH19fTtjb25zdCBlcnJvciRzPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibWVtaWxpa2kifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJtZW1pbGlraSJ9LGFycmF5Ont1bml0OiJpdGVtIix2ZXJiOiJtZW1pbGlraSJ9LHNldDp7dW5pdDoiaXRlbSIsdmVyYjoibWVtaWxpa2kifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFuZ2dhbCBkYW4gd2FrdHUgZm9ybWF0IElTTyIsZGF0ZToidGFuZ2dhbCBmb3JtYXQgSVNPIix0aW1lOiJqYW0gZm9ybWF0IElTTyIsZHVyYXRpb246ImR1cmFzaSBmb3JtYXQgSVNPIixpcHY0OiJhbGFtYXQgSVB2NCIsaXB2NjoiYWxhbWF0IElQdjYiLGNpZHJ2NDoicmVudGFuZyBhbGFtYXQgSVB2NCIsY2lkcnY2OiJyZW50YW5nIGFsYW1hdCBJUHY2IixiYXNlNjQ6InN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoiYW5na2EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtofWA6YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7c30sIGRpdGVyaW1hICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBQaWxpaGFuIHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIHNhbGFoIHNhdHUgZGFyaSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IG1lbWlsaWtpICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbiJ9YDpgVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke2Uub3JpZ2luPz8idmFsdWUifSBtZW5qYWRpICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW1pbGlraSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW5qYWRpICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgZGltdWxhaSBkZW5nYW4gIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBiZXJha2hpciBkZW5nYW4gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIG1lbnllcnRha2FuICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIHNlc3VhaSBwb2xhICR7ZC5wYXR0ZXJufWA6YCR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fSB0aWRhayB2YWxpZGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBBbmdrYSB0aWRhayB2YWxpZDogaGFydXMga2VsaXBhdGFuIGRhcmkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGkgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLdW5jaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJJbnB1dCB0aWRhayB2YWxpZCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3Ikcj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoic3RhZmkiLHZlcmI6ImHDsCBoYWZhIn0sZmlsZTp7dW5pdDoiYsOmdGkiLHZlcmI6ImHDsCBoYWZhIn0sYXJyYXk6e3VuaXQ6ImhsdXRpIix2ZXJiOiJhw7AgaGFmYSJ9LHNldDp7dW5pdDoiaGx1dGkiLHZlcmI6ImHDsCBoYWZhIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZ2lsZGkiLGVtYWlsOiJuZXRmYW5nIix1cmw6InZlZnNsw7PDsCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGFnc2V0bmluZyBvZyB0w61taSIsZGF0ZToiSVNPIGRhZ3NldG5pbmciLHRpbWU6IklTTyB0w61taSIsZHVyYXRpb246IklTTyB0w61tYWxlbmdkIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyZW5ndXIiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyZW5ndXIiLGpzb25fc3RyaW5nOiJKU09OIHN0cmVuZ3VyIixlMTY0OiJFLjE2NCB0w7ZsdWdpbGRpIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lsZGkifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJuw7ptZXIiLGFycmF5OiJmeWxraSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7aH0gw75hciBzZW0gw6EgYcOwIHZlcmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9YDpgUmFuZ3QgZ2lsZGk6IMOew7ogc2zDs3N0IGlubiAke2h9IMO+YXIgc2VtIMOhIGHDsCB2ZXJhICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YFJhbmd0IGdpbGRpOiBnZXJ0IHLDocOwIGZ5cmlyICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDDk2dpbHQgdmFsOiBtw6EgdmVyYSBlaXR0IGFmIGVmdGlyZmFyYW5kaSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW4/PyJnaWxkaSJ9IGhhZmkgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iaGx1dGkifWA6YE9mIHN0w7NydDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbj8/ImdpbGRpIn0gc8OpICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gaGFmaSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gc8OpICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBieXJqYSDDoSAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZW5kYSDDoSAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBpbm5paGFsZGEgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBmeWxnamEgbXluc3RyaSAke2QucGF0dGVybn1gOmBSYW5ndCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gUsO2bmcgdGFsYTogdmVyw7B1ciBhw7AgdmVyYSBtYXJnZmVsZGkgYWYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gw5PDvmVra3QgJHtlLmtleXMubGVuZ3RoPjE/ImlyIGx5a2xhciI6InVyIGx5a2lsbCJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFJhbmd1ciBseWtpbGwgw60gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iUmFuZ3QgZ2lsZGkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gUmFuZ3QgZ2lsZGkgw60gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJHE9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNhcmF0dGVyaSIsdmVyYjoiYXZlcmUifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJhdmVyZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50aSIsdmVyYjoiYXZlcmUifSxzZXQ6e3VuaXQ6ImVsZW1lbnRpIix2ZXJiOiJhdmVyZSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiaW5kaXJpenpvIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGUgb3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6Im9yYSBJU08iLGR1cmF0aW9uOiJkdXJhdGEgSVNPIixpcHY0OiJpbmRpcml6em8gSVB2NCIsaXB2NjoiaW5kaXJpenpvIElQdjYiLGNpZHJ2NDoiaW50ZXJ2YWxsbyBJUHY0IixjaWRydjY6ImludGVydmFsbG8gSVB2NiIsYmFzZTY0OiJzdHJpbmdhIGNvZGlmaWNhdGEgaW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYXRhIGluIGJhc2U2NCIsanNvbl9zdHJpbmc6InN0cmluZ2EgSlNPTiIsZTE2NDoibnVtZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1lcm8iLGFycmF5OiJ2ZXR0b3JlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2dXRvICR7aH1gOmBJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHtzfSwgcmljZXZ1dG8gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBPcHppb25lIG5vbiB2YWxpZGE6IGF0dGVzbyB1bm8gdHJhICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRyb3BwbyBncmFuZGU6ICR7ZS5vcmlnaW4/PyJ2YWxvcmUifSBkZXZlIGF2ZXJlICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnRpIn1gOmBUcm9wcG8gZ3JhbmRlOiAke2Uub3JpZ2luPz8idmFsb3JlIn0gZGV2ZSBlc3NlcmUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BUcm9wcG8gcGljY29sbzogJHtlLm9yaWdpbn0gZGV2ZSBhdmVyZSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgVHJvcHBvIHBpY2NvbG86ICR7ZS5vcmlnaW59IGRldmUgZXNzZXJlICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBpbml6aWFyZSBjb24gIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIHRlcm1pbmFyZSBjb24gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5jbHVkZXJlICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgY29ycmlzcG9uZGVyZSBhbCBwYXR0ZXJuICR7ZC5wYXR0ZXJufWA6YEludmFsaWQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bWVybyBub24gdmFsaWRvOiBkZXZlIGVzc2VyZSB1biBtdWx0aXBsbyBkaSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGlhdiR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiZSJ9IG5vbiByaWNvbm9zY2l1dCR7ZS5rZXlzLmxlbmd0aD4xPyJlIjoiYSJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoaWF2ZSBub24gdmFsaWRhIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIklucHV0IG5vbiB2YWxpZG8iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3JlIG5vbiB2YWxpZG8gaW4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJHA9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IuaWh+WtlyIsdmVyYjoi44Gn44GC44KLIn0sZmlsZTp7dW5pdDoi44OQ44Kk44OIIix2ZXJiOiLjgafjgYLjgosifSxhcnJheTp7dW5pdDoi6KaB57SgIix2ZXJiOiLjgafjgYLjgosifSxzZXQ6e3VuaXQ6Iuimgee0oCIsdmVyYjoi44Gn44GC44KLIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi5YWl5Yqb5YCkIixlbWFpbDoi44Oh44O844Or44Ki44OJ44Os44K5Iix1cmw6IlVSTCIsZW1vamk6Iue1teaWh+WtlyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNP5pel5pmCIixkYXRlOiJJU0/ml6Xku5giLHRpbWU6IklTT+aZguWIuyIsZHVyYXRpb246IklTT+acn+mWkyIsaXB2NDoiSVB2NOOCouODieODrOOCuSIsaXB2NjoiSVB2NuOCouODieODrOOCuSIsY2lkcnY0OiJJUHY056+E5ZuyIixjaWRydjY6IklQdjbnr4Tlm7IiLGJhc2U2NDoiYmFzZTY044Ko44Oz44Kz44O844OJ5paH5a2X5YiXIixiYXNlNjR1cmw6ImJhc2U2NHVybOOCqOODs+OCs+ODvOODieaWh+Wtl+WIlyIsanNvbl9zdHJpbmc6IkpTT07mloflrZfliJciLGUxNjQ6IkUuMTY055Wq5Y+3Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi5YWl5Yqb5YCkIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi5pWw5YCkIixhcnJheToi6YWN5YiXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOeEoeWKueOBquWFpeWKmzogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtofeOBjOWFpeWKm+OBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBquWFpeWKmzogJHtzfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7aH3jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YOeEoeWKueOBquWFpeWKmzogJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBqumBuOaKnjogJHtqb2luVmFsdWVzKGUudmFsdWVzLCLjgIEiKX3jga7jgYTjgZrjgozjgYvjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/IuS7peS4i+OBp+OBguOCiyI6IuOCiOOCiuWwj+OBleOBhCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtkLnVuaXQ/PyLopoHntKAifSR7c33lv4XopoHjgYzjgYLjgorjgb7jgZlgOmDlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtzfeW/heimgeOBjOOBguOCiuOBvuOBmWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyLku6XkuIrjgafjgYLjgosiOiLjgojjgorlpKfjgY3jgYQiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g5bCP44GV44GZ44GO44KL5YCkOiAke2Uub3JpZ2lufeOBryR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtkLnVuaXR9JHtzfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWwj+OBleOBmeOBjuOCi+WApDogJHtlLm9yaWdpbn3jga8ke2UubWluaW11bS50b1N0cmluZygpfSR7c33lv4XopoHjgYzjgYLjgorjgb7jgZlgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DnhKHlirnjgarmloflrZfliJc6ICIke2QucHJlZml4fSLjgaflp4vjgb7jgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7ZC5zdWZmaXh9IuOBp+e1guOCj+OCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DnhKHlirnjgarmloflrZfliJc6ICIke2QuaW5jbHVkZXN9IuOCkuWQq+OCgOW/heimgeOBjOOBguOCiuOBvuOBmWA6InJlZ2V4Ij09PWQuZm9ybWF0P2DnhKHlirnjgarmloflrZfliJc6IOODkeOCv+ODvOODsyR7ZC5wYXR0ZXJufeOBq+S4gOiHtOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6YOeEoeWKueOBqiR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDnhKHlirnjgarmlbDlgKQ6ICR7ZS5kaXZpc29yfeOBruWAjeaVsOOBp+OBguOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOiqjeitmOOBleOCjOOBpuOBhOOBquOBhOOCreODvCR7ZS5rZXlzLmxlbmd0aD4xPyLnvqQiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn3lhoXjga7nhKHlirnjgarjgq3jg7xgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i54Sh5Yq544Gq5YWl5YqbIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq5YCkYH19fTtjb25zdCBlcnJvciRvPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLhg6Hhg5jhg5vhg5Hhg53hg5rhg50iLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxmaWxlOnt1bml0OiLhg5Hhg5Dhg5jhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxhcnJheTp7dW5pdDoi4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sc2V0Ont1bml0OiLhg5Thg5rhg5Thg5vhg5Thg5zhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AiLGVtYWlsOiLhg5Thg5ot4YOk4YOd4YOh4YOi4YOY4YOhIOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsdXJsOiJVUkwiLGVtb2ppOiLhg5Thg5vhg53hg6/hg5giLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuGDl+GDkOGDoOGDmOGDpuGDmC3hg5Phg6Dhg50iLGRhdGU6IuGDl+GDkOGDoOGDmOGDpuGDmCIsdGltZToi4YOT4YOg4YOdIixkdXJhdGlvbjoi4YOu4YOQ4YOc4YOS4YOg4YOr4YOa4YOY4YOV4YOd4YOR4YOQIixpcHY0OiJJUHY0IOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsaXB2NjoiSVB2NiDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLGNpZHJ2NDoiSVB2NCDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGNpZHJ2NjoiSVB2NiDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGJhc2U2NDoiYmFzZTY0LeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5giLGJhc2U2NHVybDoiYmFzZTY0dXJsLeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5giLGpzb25fc3RyaW5nOiJKU09OIOGDoeGDouGDoOGDmOGDnOGDkuGDmCIsZTE2NDoiRS4xNjQg4YOc4YOd4YOb4YOU4YOg4YOYIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi4YOg4YOY4YOq4YOu4YOV4YOYIixzdHJpbmc6IuGDoeGDouGDoOGDmOGDnOGDkuGDmCIsYm9vbGVhbjoi4YOR4YOj4YOa4YOU4YOQ4YOc4YOYIixmdW5jdGlvbjoi4YOk4YOj4YOc4YOl4YOq4YOY4YOQIixhcnJheToi4YOb4YOQ4YOh4YOY4YOV4YOYIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke2h9YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7c30sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Dhg6Dhg5jhg5Dhg5zhg6Lhg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmOGDkCDhg5Thg6Dhg5ct4YOU4YOg4YOX4YOYICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfS3hg5Phg5Dhg5xgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbj8/IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCJ9ICR7ZC52ZXJifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpg4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDk+GDmOGDk+GDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW4/PyLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AifSDhg5jhg6fhg53hg6EgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0gJHtkLnZlcmJ9ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0g4YOY4YOn4YOd4YOhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6zhg6fhg5Thg5Hhg53hg5Phg5Thg6EgIiR7ZC5wcmVmaXh9Ii3hg5jhg5dgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5g6IOGDo+GDnOGDk+GDkCDhg5vhg5fhg5Dhg5Xhg6Dhg5Phg5Thg5Hhg53hg5Phg5Thg6EgIiR7ZC5zdWZmaXh9Ii3hg5jhg5dgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoeGDouGDoOGDmOGDnOGDkuGDmDog4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSAiJHtkLmluY2x1ZGVzfSIt4YOhYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5g6IOGDo+GDnOGDk+GDkCDhg6jhg5Thg5Thg6Hhg5Dhg5Hhg5Dhg5vhg5Thg5Hhg53hg5Phg5Thg6Eg4YOo4YOQ4YOR4YOa4YOd4YOc4YOhICR7ZC5wYXR0ZXJufWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoOGDmOGDquGDruGDleGDmDog4YOj4YOc4YOT4YOQIOGDmOGDp+GDneGDoSAke2UuZGl2aXNvcn0t4YOY4YOhIOGDr+GDlOGDoOGDkOGDk+GDmGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGDo+GDquGDnOGDneGDkeGDmCDhg5Lhg5Dhg6Hhg5Dhg6bhg5Thg5Eke2Uua2V5cy5sZW5ndGg+MT8i4YOU4YOR4YOYIjoi4YOYIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDkuGDkOGDoeGDkOGDpuGDlOGDkeGDmCAke2Uub3JpZ2lufS3hg6jhg5hgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQICR7ZS5vcmlnaW59LeGDqOGDmGB9fX07Y29uc3QgZXJyb3Ikbj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi4Z6P4Z694Z6i4Z6A4Z+S4Z6f4Z6aIix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxmaWxlOnt1bml0OiLhnpThn4MiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LGFycmF5Ont1bml0OiLhnpLhnrbhno/hnrsiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LHNldDp7dW5pdDoi4Z6S4Z624Z6P4Z67Iix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpsiLGVtYWlsOiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpPhnqLhn4rhnrjhnpjhn4LhnpsiLHVybDoiVVJMIixlbW9qaToi4Z6f4Z6J4Z+S4Z6J4Z624Z6i4Z624Z6a4Z6Y4Z+S4Z6Y4Z6O4Z+NIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLhnoDhnrbhnpvhnpThnprhnrfhnoXhn5Lhnobhn4HhnpEg4Z6T4Z634Z6E4Z6Y4Z+J4Z+E4Z6EIElTTyIsZGF0ZToi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIElTTyIsdGltZToi4Z6Y4Z+J4Z+E4Z6EIElTTyIsZHVyYXRpb246IuGemuGemeGfiOGeluGfgeGemyBJU08iLGlwdjQ6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0IixpcHY2OiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsY2lkcnY0OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NCIsY2lkcnY2OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsYmFzZTY0OiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnqLhn4rhnrfhnoDhnrzhnoogYmFzZTY0IixiYXNlNjR1cmw6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGeouGfiuGet+GegOGevOGeiiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnpogSlNPTiIsZTE2NDoi4Z6b4Z+B4Z6BIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi4Z6b4Z+B4Z6BIixhcnJheToi4Z6i4Z624Z6a4Z+BIChBcnJheSkiLG51bGw6IuGeguGfkuGemOGetuGek+Gej+GemOGfkuGem+GfgyAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7aH1gOmDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7c30g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOGeh+GemOGfkuGemuGevuGen+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhnofhnrbhnpjhnr3hnpnhnoDhn5LhnpPhnrvhnoThnoXhn4bhno7hn4ThnpggJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/IuGekuGetuGej+GeuyJ9YDpg4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g4Z6P4Z684Z6F4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2lufSAke3N9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbn0gJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoXhnrbhnpThn4vhnpXhn5Lhno/hnr7hnpjhnorhn4ThnpkgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGelOGeieGfkuGeheGelOGfi+GeiuGfhOGemSAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnpjhnrbhnpMgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnpXhn5LhnoLhnrzhnpXhn5LhnoLhnoThnpPhnrnhnoThnpHhnpjhn5LhnprhnoThn4vhnorhn4LhnpvhnpThnrbhnpPhnoDhn4bhno7hno/hn4sgJHtkLnBhdHRlcm59YDpg4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDhnpvhn4HhnoHhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6P4Z+C4Z6H4Z624Z6W4Z6g4Z674Z6C4Z674Z6O4Z6T4Z+DICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGemuGegOGeg+GevuGeieGen+GfhOGemOGet+Gek+Gen+GfkuGeguGetuGem+Gfi+GfliAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOGen+GfhOGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGek+GfheGegOGfkuGek+Geu+GehCAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiBrbSgpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRuKCl9fWNvbnN0IGVycm9yJG09KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IuusuOyekCIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6IuuwlOydtO2KuCIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiLqsJwiLHZlcmI6InRvIGhhdmUifSxzZXQ6e3VuaXQ6IuqwnCIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6IuyeheugpSIsZW1haWw6IuydtOuplOydvCDso7zshowiLHVybDoiVVJMIixlbW9qaToi7J2066qo7KeAIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g64Kg7Kec7Iuc6rCEIixkYXRlOiJJU08g64Kg7KecIix0aW1lOiJJU08g7Iuc6rCEIixkdXJhdGlvbjoiSVNPIOq4sOqwhCIsaXB2NDoiSVB2NCDso7zshowiLGlwdjY6IklQdjYg7KO87IaMIixjaWRydjQ6IklQdjQg67KU7JyEIixjaWRydjY6IklQdjYg67KU7JyEIixiYXNlNjQ6ImJhc2U2NCDsnbjsvZTrlKkg66y47J6Q7Je0IixiYXNlNjR1cmw6ImJhc2U2NHVybCDsnbjsvZTrlKkg66y47J6Q7Je0Iixqc29uX3N0cmluZzoiSlNPTiDrrLjsnpDsl7QiLGUxNjQ6IkUuMTY0IOuyiO2YuCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuyeheugpSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOyemOuqu+uQnCDsnoXroKU6IOyYiOyDgSDtg4DsnoXsnYAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDrsJvsnYAg7YOA7J6F7J2AICR7aH3snoXri4jri6RgOmDsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AICR7c30sIOuwm+ydgCDtg4DsnoXsnYAgJHtofeyeheuLiOuLpGB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g7J6Y66q765CcIOyeheugpTog6rCS7J2AICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX0g7J207Ja07JW8IO2VqeuLiOuLpGA6YOyemOuqu+uQnCDsmLXshZg6ICR7am9pblZhbHVlcyhlLnZhbHVlcywi65iQ64qUICIpfSDspJEg7ZWY64KY7Jes7JW8IO2VqeuLiOuLpGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i7J207ZWYIjoi66+466eMIixkPSLrr7jrp4wiPT09cz8i7J207Ja07JW8IO2VqeuLiOuLpCI6IuyXrOyVvCDtlanri4jri6QiLG09Z2V0U2l6aW5nKGUub3JpZ2luKSxoPW0/LnVuaXQ/PyLsmpTshowiO3JldHVybiBtP2Ake2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2h9ICR7c30ke2R9YDpgJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDtgb3ri4jri6Q6ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c30ke2R9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/IuydtOyDgSI6Iuy0iOqzvCIsZD0i7J207IOBIj09PXM/IuydtOyWtOyVvCDtlanri4jri6QiOiLsl6zslbwg7ZWp64uI64ukIixtPWdldFNpemluZyhlLm9yaWdpbiksaD1tPy51bml0Pz8i7JqU7IaMIjtyZXR1cm4gbT9gJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDsnpHsirXri4jri6Q6ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtofSAke3N9JHtkfWA6YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7J6R7Iq164uI64ukOiAke2UubWluaW11bS50b1N0cmluZygpfSAke3N9JHtkfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2QucHJlZml4fSIo7Jy8KeuhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtkLnN1ZmZpeH0iKOycvCnroZwg64Gd64KY7JW8IO2VqeuLiOuLpGA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtkLmluY2x1ZGVzfSLsnYQo66W8KSDtj6ztlajtlbTslbwg7ZWp64uI64ukYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOyemOuqu+uQnCDrrLjsnpDsl7Q6IOygleq3nOyLnSAke2QucGF0dGVybn0g7Yyo7YS06rO8IOydvOy5mO2VtOyVvCDtlanri4jri6RgOmDsnpjrqrvrkJwgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOyemOuqu+uQnCDsiKvsnpA6ICR7ZS5kaXZpc29yfeydmCDrsLDsiJjsl6zslbwg7ZWp64uI64ukYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g7J247Iud7ZWgIOyImCDsl4bripQg7YKkOiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOyemOuqu+uQnCDtgqQ6ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g7J6Y66q765CcIOqwkjogJHtlLm9yaWdpbn1gfX19O2NvbnN0IGNhcGl0YWxpemVGaXJzdENoYXJhY3Rlcj1lPT5lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7ZnVuY3Rpb24gZ2V0VW5pdFR5cGVGcm9tTnVtYmVyKGUpe2NvbnN0IHM9TWF0aC5hYnMoZSksZD1zJTEwLG09cyUxMDA7cmV0dXJuIG0+PTExJiZtPD0xOXx8MD09PWQ/Im1hbnkiOjE9PT1kPyJvbmUiOiJmZXcifWNvbnN0IGVycm9yJGw9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6e29uZToic2ltYm9saXMiLGZldzoic2ltYm9saWFpIixtYW55OiJzaW1ib2xpxbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgaWxnZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIHRydW1wZXNuxJcga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIHRydW1wZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIGlsZ2VzbsSXIGthaXAifX19LGZpbGU6e3VuaXQ6e29uZToiYmFpdGFzIixmZXc6ImJhaXRhaSIsbWFueToiYmFpdMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIGRpZGVzbmlzIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBtYcW+ZXNuaXMga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIG1hxb5lc25pcyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgZGlkZXNuaXMga2FpcCJ9fX0sYXJyYXk6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fSxzZXQ6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMsZCxtLGgpe2NvbnN0IGc9ZVtzXT8/bnVsbDtyZXR1cm4gbnVsbD09PWc/Zzp7dW5pdDpnLnVuaXRbZF0sdmVyYjpnLnZlcmJbaF1bbT8iaW5jbHVzaXZlIjoibm90SW5jbHVzaXZlIl19fWNvbnN0IHM9e3JlZ2V4OiLEr3Zlc3RpcyIsZW1haWw6ImVsLiBwYcWhdG8gYWRyZXNhcyIsdXJsOiJVUkwiLGVtb2ppOiJqYXVzdHVrYXMiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRhIGlyIGxhaWthcyIsZGF0ZToiSVNPIGRhdGEiLHRpbWU6IklTTyBsYWlrYXMiLGR1cmF0aW9uOiJJU08gdHJ1a23ElyIsaXB2NDoiSVB2NCBhZHJlc2FzIixpcHY2OiJJUHY2IGFkcmVzYXMiLGNpZHJ2NDoiSVB2NCB0aW5rbG8gcHJlZmlrc2FzIChDSURSKSIsY2lkcnY2OiJJUHY2IHRpbmtsbyBwcmVmaWtzYXMgKENJRFIpIixiYXNlNjQ6ImJhc2U2NCB1xb5rb2R1b3RhIGVpbHV0xJciLGJhc2U2NHVybDoiYmFzZTY0dXJsIHXFvmtvZHVvdGEgZWlsdXTElyIsanNvbl9zdHJpbmc6IkpTT04gZWlsdXTElyIsZTE2NDoiRS4xNjQgbnVtZXJpcyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSvdmVzdGlzIn0sZD17bmFuOiJOYU4iLG51bWJlcjoic2thacSNaXVzIixiaWdpbnQ6InN2ZWlrYXNpcyBza2FpxI1pdXMiLHN0cmluZzoiZWlsdXTElyIsYm9vbGVhbjoibG9naW7ElyByZWlrxaFtxJciLHVuZGVmaW5lZDoibmVhcGlicsSXxb50YSByZWlrxaFtxJciLGZ1bmN0aW9uOiJmdW5rY2lqYSIsc3ltYm9sOiJzaW1ib2xpcyIsYXJyYXk6Im1hc3l2YXMiLG9iamVjdDoib2JqZWt0YXMiLG51bGw6Im51bGluxJcgcmVpa8WhbcSXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdhdXRhcyB0aXBhcyAke2h9LCBvIHRpa8SXdGFzaSAtIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfWA6YEdhdXRhcyB0aXBhcyAke2h9LCBvIHRpa8SXdGFzaSAtICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YFByaXZhbG8gYsWrdGkgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YFByaXZhbG8gYsWrdGkgdmllbmFzIGnFoSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX0gcGFzaXJpbmtpbcWzYDtjYXNlInRvb19iaWciOntjb25zdCBzPWRbZS5vcmlnaW5dPz9lLm9yaWdpbixtPWdldFNpemluZyhlLm9yaWdpbixnZXRVbml0VHlwZUZyb21OdW1iZXIoTnVtYmVyKGUubWF4aW11bSkpLGUuaW5jbHVzaXZlPz8hMSwic21hbGxlciIpO2lmKG0/LnZlcmIpcmV0dXJuYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKHM/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7bS52ZXJifSAke2UubWF4aW11bS50b1N0cmluZygpfSAke20udW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBoPWUuaW5jbHVzaXZlPyJuZSBkaWRlc25pcyBrYWlwIjoibWHFvmVzbmlzIGthaXAiO3JldHVybmAke2NhcGl0YWxpemVGaXJzdENoYXJhY3RlcihzPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGLFq3RpICR7aH0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttPy51bml0fWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWRbZS5vcmlnaW5dPz9lLm9yaWdpbixtPWdldFNpemluZyhlLm9yaWdpbixnZXRVbml0VHlwZUZyb21OdW1iZXIoTnVtYmVyKGUubWluaW11bSkpLGUuaW5jbHVzaXZlPz8hMSwiYmlnZ2VyIik7aWYobT8udmVyYilyZXR1cm5gJHtjYXBpdGFsaXplRmlyc3RDaGFyYWN0ZXIocz8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gJHttLnZlcmJ9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bS51bml0Pz8iZWxlbWVudMWzIn1gO2NvbnN0IGg9ZS5pbmNsdXNpdmU/Im5lIG1hxb5lc25pcyBrYWlwIjoiZGlkZXNuaXMga2FpcCI7cmV0dXJuYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKHM/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtofSAke2UubWluaW11bS50b1N0cmluZygpfSAke20/LnVuaXR9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gRWlsdXTElyBwcml2YWxvIHByYXNpZMSXdGkgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gRWlsdXTElyBwcml2YWxvIHBhc2liYWlndGkgIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BFaWx1dMSXIHByaXZhbG8gxK90cmF1a3RpICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BFaWx1dMSXIHByaXZhbG8gYXRpdGlrdGkgJHtkLnBhdHRlcm59YDpgTmV0ZWlzaW5nYXMgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFNrYWnEjWl1cyBwcml2YWxvIGLFq3RpICR7ZS5kaXZpc29yfSBrYXJ0b3RpbmlzLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lYXRwYcW+aW50JHtlLmtleXMubGVuZ3RoPjE/ImkiOiJhcyJ9IHJha3Qke2Uua2V5cy5sZW5ndGg+MT8iYWkiOiJhcyJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuIlJhc3RhcyBrbGFpZGluZ2FzIHJha3RhcyI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJLbGFpZGluZ2EgxK92ZXN0aXMiO2Nhc2UiaW52YWxpZF9lbGVtZW50Ijp7Y29uc3Qgcz1kW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKHM/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkga2xhaWRpbmfEhSDEr3Zlc3TEr2B9fX19O2NvbnN0IGVycm9yJGs9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ItC30L3QsNGG0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGZpbGU6e3VuaXQ6ItCx0LDRmNGC0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGFycmF5Ont1bml0OiLRgdGC0LDQstC60LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LHNldDp7dW5pdDoi0YHRgtCw0LLQutC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLQstC90LXRgSIsZW1haWw6ItCw0LTRgNC10YHQsCDQvdCwINC1LdC/0L7RiNGC0LAiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0Z/QuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtGD0Lwg0Lgg0LLRgNC10LzQtSIsZGF0ZToiSVNPINC00LDRgtGD0LwiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINCy0YDQtdC80LXRgtGA0LDQtdGa0LUiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgdCwIixpcHY2OiJJUHY2INCw0LTRgNC10YHQsCIsY2lkcnY0OiJJUHY0INC+0L/RgdC10LMiLGNpZHJ2NjoiSVB2NiDQvtC/0YHQtdCzIixiYXNlNjQ6ImJhc2U2NC3QtdC90LrQvtC00LjRgNCw0L3QsCDQvdC40LfQsCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LAiLGpzb25fc3RyaW5nOiJKU09OINC90LjQt9CwIixlMTY0OiJFLjE2NCDQsdGA0L7RmCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0L3QtdGBIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi0LHRgNC+0ZgiLGFycmF5OiLQvdC40LfQsCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQk9GA0LXRiNC10L0g0LLQvdC10YE6INGB0LUg0L7Rh9C10LrRg9Cy0LAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9GA0LjQvNC10L3QviAke2h9YDpg0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwICR7c30sINC/0YDQuNC80LXQvdC+ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDQk9GA0LXRiNCw0L3QsCDQvtC/0YbQuNGY0LA6INGB0LUg0L7Rh9C10LrRg9Cy0LAg0LXQtNC90LAgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW4/PyLQstGA0LXQtNC90L7RgdGC0LAifSDQtNCwINC40LzQsCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLQtdC70LXQvNC10L3RgtC4In1gOmDQn9GA0LXQvNC90L7Qs9GDINCz0L7Qu9C10Lw6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbj8/ItCy0YDQtdC00L3QvtGB0YLQsCJ9INC00LAg0LHQuNC00LUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2lufSDQtNCwINC40LzQsCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpg0J/RgNC10LzQvdC+0LPRgyDQvNCw0Ls6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbn0g0LTQsCDQsdC40LTQtSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LfQsNC/0L7Rh9C90YPQstCwINGB0L4gIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQstGA0YjRg9Cy0LAg0YHQviAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQstC60LvRg9GH0YPQstCwICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0L7QtNCz0L7QsNGA0LAg0L3QsCDQv9Cw0YLQtdGA0L3QvtGCICR7ZC5wYXR0ZXJufWA6YEludmFsaWQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCT0YDQtdGI0LXQvSDQsdGA0L7RmDog0LzQvtGA0LAg0LTQsCDQsdC40LTQtSDQtNC10LvQuNCyINGB0L4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/ItCd0LXQv9GA0LXQv9C+0LfQvdCw0LXQvdC4INC60LvRg9GH0LXQstC4Ijoi0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC9INC60LvRg9GHIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0JPRgNC10YjQtdC9INC60LvRg9GHINCy0L4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0JPRgNC10YjQtdC9INCy0L3QtdGBIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCT0YDQtdGI0L3QsCDQstGA0LXQtNC90L7RgdGCINCy0L4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJGo9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImFrc2FyYSIsdmVyYjoibWVtcHVueWFpIn0sZmlsZTp7dW5pdDoiYmFpdCIsdmVyYjoibWVtcHVueWFpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbiIsdmVyYjoibWVtcHVueWFpIn0sc2V0Ont1bml0OiJlbGVtZW4iLHZlcmI6Im1lbXB1bnlhaSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiYWxhbWF0IGUtbWVsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJ0YXJpa2ggbWFzYSBJU08iLGRhdGU6InRhcmlraCBJU08iLHRpbWU6Im1hc2EgSVNPIixkdXJhdGlvbjoidGVtcG9oIElTTyIsaXB2NDoiYWxhbWF0IElQdjQiLGlwdjY6ImFsYW1hdCBJUHY2IixjaWRydjQ6Imp1bGF0IElQdjQiLGNpZHJ2NjoianVsYXQgSVB2NiIsYmFzZTY0OiJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0IixiYXNlNjR1cmw6InN0cmluZyBkaWtvZGthbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoibm9tYm9yIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJub21ib3IifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRpdGVyaW1hICR7aH1gOmBJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thICR7c30sIGRpdGVyaW1hICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YFBpbGloYW4gdGlkYWsgc2FoOiBkaWphbmdrYSBzYWxhaCBzYXR1IGRhcmlwYWRhICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9ICR7ZC52ZXJifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW4ifWA6YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9IGFkYWxhaCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7ZS5vcmlnaW59ICR7ZC52ZXJifSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtlLm9yaWdpbn0gYWRhbGFoICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcm11bGEgZGVuZ2FuICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcmFraGlyIGRlbmdhbiAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIG1lbmdhbmR1bmdpICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBzZXBhZGFuIGRlbmdhbiBjb3JhayAke2QucGF0dGVybn1gOmAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH0gdGlkYWsgc2FoYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJvciB0aWRhayBzYWg6IHBlcmx1IGdhbmRhYW4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGk6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS3VuY2kgdGlkYWsgc2FoIGRhbGFtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIklucHV0IHRpZGFrIHNhaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJGk9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6InRla2VucyIsdmVyYjoiaGVlZnQifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGVlZnQifSxhcnJheTp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6Imludm9lciIsZW1haWw6ImVtYWlsYWRyZXMiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBlbiB0aWpkIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyB0aWpkIixkdXJhdGlvbjoiSVNPIGR1dXIiLGlwdjQ6IklQdjQtYWRyZXMiLGlwdjY6IklQdjYtYWRyZXMiLGNpZHJ2NDoiSVB2NC1iZXJlaWsiLGNpZHJ2NjoiSVB2Ni1iZXJlaWsiLGJhc2U2NDoiYmFzZTY0LWdlY29kZWVyZGUgdGVrc3QiLGJhc2U2NHVybDoiYmFzZTY0IFVSTC1nZWNvZGVlcmRlIHRla3N0Iixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Imludm9lciJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ImdldGFsIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb250dmluZyAke2h9YDpgT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtzfSwgb250dmluZyAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgT25nZWxkaWdlIG9wdGllOiB2ZXJ3YWNodCDDqcOpbiB2YW4gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKSxtPSJkYXRlIj09PWUub3JpZ2luPyJsYWF0Ijoic3RyaW5nIj09PWUub3JpZ2luPyJsYW5nIjoiZ3Jvb3QiO3JldHVybiBkP2BUZSAke219OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbj8/IndhYXJkZSJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnRlbiJ9ICR7ZC52ZXJifWA6YFRlICR7bX06IHZlcndhY2h0IGRhdCAke2Uub3JpZ2luPz8id2FhcmRlIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pLG09ImRhdGUiPT09ZS5vcmlnaW4/InZyb2VnIjoic3RyaW5nIj09PWUub3JpZ2luPyJrb3J0Ijoia2xlaW4iO3JldHVybiBkP2BUZSAke219OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fSAke2QudmVyYn1gOmBUZSAke219OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG1ldCAiJHtkLnByZWZpeH0iIGJlZ2lubmVuYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3AgIiR7ZC5zdWZmaXh9IiBlaW5kaWdlbmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgIiR7ZC5pbmNsdWRlc30iIGJldmF0dGVuYDoicmVnZXgiPT09ZC5mb3JtYXQ/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvdmVyZWVua29tZW4gbWV0IHBhdHJvb24gJHtkLnBhdHRlcm59YDpgT25nZWxkaWc6ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBPbmdlbGRpZyBnZXRhbDogbW9ldCBlZW4gdmVlbHZvdWQgdmFuICR7ZS5kaXZpc29yfSB6aWpuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gT25iZWtlbmRlIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gT25nZWxkaWdlIGtleSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJPbmdlbGRpZ2UgaW52b2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE9uZ2VsZGlnZSB3YWFyZGUgaW4gJHtlLm9yaWdpbn1gfX19O2NvbnN0IGVycm9yJGg9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6InRlZ24iLHZlcmI6IsOlIGhhIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6IsOlIGhhIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiw6UgaW5uZWhvbGRlIn0sc2V0Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6IsOlIGlubmVob2xkZSJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImlucHV0IixlbWFpbDoiZS1wb3N0YWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdG8tIG9nIGtsb2trZXNsZXR0IixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLWtsb2trZXNsZXR0IixkdXJhdGlvbjoiSVNPLXZhcmlnaGV0IixpcHY0OiJJUHY0LW9tcsOlZGUiLGlwdjY6IklQdjYtb21yw6VkZSIsY2lkcnY0OiJJUHY0LXNwZWt0ZXIiLGNpZHJ2NjoiSVB2Ni1zcGVrdGVyIixiYXNlNjQ6ImJhc2U2NC1lbmtvZGV0IHN0cmVuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJ0YWxsIixhcnJheToibGlzdGUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmlrayAke2h9YDpgVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0ICR7c30sIGZpa2sgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gVWd5bGRpZyB2ZXJkaTogZm9ydmVudGV0ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlnIHZhbGc6IGZvcnZlbnRldCBlbiBhdiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRpbCDDpSBoYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50ZXIifWA6YEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdGlsIMOlIGhhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gRm9yIGxpdGUobik6IGZvcnZlbnRldCAke2Uub3JpZ2lufSB0aWwgw6UgaGEgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbn0gdGlsIMOlIGhhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YFVneWxkaWcgc3RyZW5nOiBtw6Ugc3RhcnRlIG1lZCAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BVZ3lsZGlnIHN0cmVuZzogbcOlIGVuZGUgbWVkICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gVWd5bGRpZyBzdHJlbmc6IG3DpSBpbm5laG9sZGUgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YFVneWxkaWcgc3RyZW5nOiBtw6UgbWF0Y2hlIG3DuG5zdGVyZXQgJHtkLnBhdHRlcm59YDpgVWd5bGRpZyAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZyB0YWxsOiBtw6UgdsOmcmUgZXQgbXVsdGlwbHVtIGF2ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2plbnRlIG7DuGtsZXIiOiJVa2plbnQgbsO4a2tlbCJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4a2tlbCBpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIlVneWxkaWcgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2ZXJkaSBpICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRnPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJoYXJmIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6InVuc3VyIix2ZXJiOiJvbG1hbMSxZMSxciJ9LHNldDp7dW5pdDoidW5zdXIiLHZlcmI6Im9sbWFsxLFkxLFyIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZ2lyZW4iLGVtYWlsOiJlcG9zdGFnw6JoIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaGVuZ8OibcSxIixkYXRlOiJJU08gdGFyaWhpIix0aW1lOiJJU08gemFtYW7EsSIsZHVyYXRpb246IklTTyBtw7xkZGV0aSIsaXB2NDoiSVB2NCBuacWfw6JuxLEiLGlwdjY6IklQdjYgbmnFn8OibsSxIixjaWRydjQ6IklQdjQgbWVuemlsaSIsY2lkcnY2OiJJUHY2IG1lbnppbGkiLGJhc2U2NDoiYmFzZTY0LcWfaWZyZWxpIG1ldGluIixiYXNlNjR1cmw6ImJhc2U2NHVybC3Fn2lmcmVsaSBtZXRpbiIsanNvbl9zdHJpbmc6IkpTT04gbWV0aW4iLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lyZW4ifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1hcmEiLGFycmF5OiJzYWYiLG51bGw6ImdheWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRsOic2l0IGdpcmVuOiB1bXVsYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhbMSxbmFuICR7aH1gOmBGw6JzaXQgZ2lyZW46IHVtdWxhbiAke3N9LCBhbMSxbmFuICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEbDonNpdCBnaXJlbjogdW11bGFuICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBGw6JzaXQgdGVyY2loOiBtw7t0ZWJlcmxlciAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudHMifSBzYWhpcCBvbG1hbMSxeWTEsS5gOmBGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gRmF6bGEga8O8w6fDvGs6ICR7ZS5vcmlnaW59LCAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGvDvMOnw7xrOiAke2Uub3JpZ2lufSwgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YEbDonNpdCBtZXRpbjogIiR7ZC5wcmVmaXh9IiBpbGUgYmHFn2xhbWFsxLEuYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2BGw6JzaXQgbWV0aW46ICIke2Quc3VmZml4fSIgaWxlIGJpdG1lbGkuYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YEbDonNpdCBtZXRpbjogIiR7ZC5pbmNsdWRlc30iIGlodGl2w6IgZXRtZWxpLmA6InJlZ2V4Ij09PWQuZm9ybWF0P2BGw6JzaXQgbWV0aW46ICR7ZC5wYXR0ZXJufSBuYWvFn8SxbmEgdXltYWzEsS5gOmBGw6JzaXQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEbDonNpdCBzYXnEsTogJHtlLmRpdmlzb3J9IGthdMSxIG9sbWFsxLF5ZMSxLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbiB0YW7EsW5tYXlhbiBhbmFodGFyIHZhci5gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkdpcmVuIHRhbsSxbmFtYWTEsS4iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4ga8SxeW1ldCB2YXIuYDtkZWZhdWx0OnJldHVybiJLxLF5bWV0IHRhbsSxbmFtYWTEsS4ifX19O2NvbnN0IGVycm9yJGY9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LGZpbGU6e3VuaXQ6Itio2KfbjNm82LMiLHZlcmI6ItmI2YTYsdmKIn0sYXJyYXk6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LHNldDp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi2YjYsdmI2K/ZiiIsZW1haWw6Itio2LHbjNqa2YbYp9mE24zaqSIsdXJsOiLbjNmIINii2LEg2KfZhCIsZW1vamk6Itin24zZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2YbbjNm82Ycg2KfZiCDZiNiu2KoiLGRhdGU6ItmG25DZvNmHIix0aW1lOiLZiNiu2KoiLGR1cmF0aW9uOiLZhdmI2K/ZhyIsaXB2NDoi2K8gSVB2NCDZvtiq2YciLGlwdjY6ItivIElQdjYg2b7YqtmHIixjaWRydjQ6ItivIElQdjQg2LPYp9it2YciLGNpZHJ2Njoi2K8gSVB2NiDYs9in2K3ZhyIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDZhdiq2YYiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2YXYqtmGIixqc29uX3N0cmluZzoiSlNPTiDZhdiq2YYiLGUxNjQ6ItivIEUuMTY0INi02YXbkNix2YciLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9mKIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KfYsduQIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZiNin24wsINmF2qvYsSAke2h9INiq2LHZhNin2LPZhyDYtNmIYDpg2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gJHtzfSDZiNin24wsINmF2qvYsSAke2h9INiq2LHZhNin2LPZhyDYtNmIYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9INmI2KfbjGA6YNmG2KfYs9mFINin2YbYqtiu2KfYqDog2KjYp9uM2K8g24zZiCDZhNmHICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfSDahdiu2Ycg2YjYp9uMYDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLYudmG2LXYsdmI2YbZhyJ9INmI2YTYsdmKYDpg2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2YjZimB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g2onbjNixINqp2YjahtmG24w6ICR7ZS5vcmlnaW59INio2KfbjNivICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH0g2YjZhNix2YpgOmDaiduM2LEg2qnZiNqG2YbbjDogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INmI2YpgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2QucHJlZml4fSIg2LPYsdmHINm+24zZhCDYtNmKYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2Quc3VmZml4fSIg2LPYsdmHINm+2KfbjCDYqtmHINmI2LHYs9mK2pbZimA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivICIke2QuaW5jbHVkZXN9IiDZiNmE2LHZimA6InJlZ2V4Ij09PWQuZm9ybWF0P2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICR7ZC5wYXR0ZXJufSDYs9ix2Ycg2YXYt9in2KjZgtiqINmI2YTYsdmKYDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfYs9mFINiv24xgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2YbYp9iz2YUg2LnYr9ivOiDYqNin24zYryDYryAke2UuZGl2aXNvcn0g2YXYttix2Kgg2YjZimA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNmG2KfYs9mFICR7ZS5rZXlzLmxlbmd0aD4xPyLaqdmE24zaidmI2YbZhyI6Itqp2YTbjNqJIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2YbYp9iz2YUg2qnZhNuM2okg2b7ZhyAke2Uub3JpZ2lufSDaqduQYDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuItmG2KfYs9mF2Ycg2YjYsdmI2K/ZiiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhtin2LPZhSDYudmG2LXYsSDZvtmHICR7ZS5vcmlnaW59INqp25BgfX19O2NvbnN0IGVycm9yJGU9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6InpuYWvDs3ciLHZlcmI6Im1pZcSHIn0sZmlsZTp7dW5pdDoiYmFqdMOzdyIsdmVyYjoibWllxIcifSxhcnJheTp7dW5pdDoiZWxlbWVudMOzdyIsdmVyYjoibWllxIcifSxzZXQ6e3VuaXQ6ImVsZW1lbnTDs3ciLHZlcmI6Im1pZcSHIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoid3lyYcW8ZW5pZSIsZW1haWw6ImFkcmVzIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgZ29kemluYSB3IGZvcm1hY2llIElTTyIsZGF0ZToiZGF0YSB3IGZvcm1hY2llIElTTyIsdGltZToiZ29kemluYSB3IGZvcm1hY2llIElTTyIsZHVyYXRpb246ImN6YXMgdHJ3YW5pYSBJU08iLGlwdjQ6ImFkcmVzIElQdjQiLGlwdjY6ImFkcmVzIElQdjYiLGNpZHJ2NDoiemFrcmVzIElQdjQiLGNpZHJ2NjoiemFrcmVzIElQdjYiLGJhc2U2NDoiY2nEhWcgem5ha8OzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0IixiYXNlNjR1cmw6ImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNpxIVnIHpuYWvDs3cgdyBmb3JtYWNpZSBKU09OIixlMTY0OiJsaWN6YmEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ3ZWrFm2NpZSJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ImxpY3piYSIsYXJyYXk6InRhYmxpY2EifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb3RyenltYW5vICR7aH1gOmBOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtzfSwgb3RyenltYW5vICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgTmllcHJhd2lkxYJvd2Egb3BjamE6IG9jemVraXdhbm8gamVkbmVqIHogd2FydG/Fm2NpICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFphIGR1xbxhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgZHXFvCh5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFphIG1hxYJhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgbWHFgih5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphY3p5bmHEhyBzacSZIG9kICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kga2/FhGN6ecSHIHNpxJkgbmEgIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphd2llcmHEhyAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSBvZHBvd2lhZGHEhyB3em9yY293aSAke2QucGF0dGVybn1gOmBOaWVwcmF3aWTFgm93KHkvYS9lKSAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmllcHJhd2lkxYJvd2EgbGljemJhOiBtdXNpIGJ5xIcgd2llbG9rcm90bm/Fm2NpxIUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmllcm96cG96bmFuZSBrbHVjemUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5pZXByYXdpZMWCb3d5IGtsdWN6IHcgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pZXByYXdpZMWCb3dhIHdhcnRvxZvEhyB3ICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRkPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmVzIix2ZXJiOiJ0ZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVyIn0sYXJyYXk6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifSxzZXQ6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJwYWRyw6NvIixlbWFpbDoiZW5kZXJlw6dvIGRlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhw6fDo28gSVNPIixpcHY0OiJlbmRlcmXDp28gSVB2NCIsaXB2NjoiZW5kZXJlw6dvIElQdjYiLGNpZHJ2NDoiZmFpeGEgZGUgSVB2NCIsY2lkcnY2OiJmYWl4YSBkZSBJUHY2IixiYXNlNjQ6InRleHRvIGNvZGlmaWNhZG8gZW0gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVtIGJhc2U2NCIsanNvbl9zdHJpbmc6InRleHRvIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sZD17bmFuOiJOYU4iLG51bWJlcjoibsO6bWVybyIsbnVsbDoibnVsbyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZWNlYmlkbyAke2h9YDpgVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvICR7c30sIHJlY2ViaWRvICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YEVudHJhZGEgaW52w6FsaWRhOiBlc3BlcmFkbyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgT3DDp8OjbyBpbnbDoWxpZGE6IGVzcGVyYWRhIHVtYSBkYXMgJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbj8/InZhbG9yIn0gdGl2ZXNzZSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50b3MifWA6YE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW4/PyJ2YWxvciJ9IGZvc3NlICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW59IHRpdmVzc2UgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2lufSBmb3NzZSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BUZXh0byBpbnbDoWxpZG86IGRldmUgY29tZcOnYXIgY29tICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YFRleHRvIGludsOhbGlkbzogZGV2ZSB0ZXJtaW5hciBjb20gIiR7ZC5zdWZmaXh9ImA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2BUZXh0byBpbnbDoWxpZG86IGRldmUgaW5jbHVpciAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGNvcnJlc3BvbmRlciBhbyBwYWRyw6NvICR7ZC5wYXR0ZXJufWA6YCR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnbDoWxpZG9gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRldmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29uaGVjaWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGF2ZSBpbnbDoWxpZGEgZW0gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yIGludsOhbGlkbyBlbSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iQ2FtcG8gaW52w6FsaWRvIn19fTtmdW5jdGlvbiBnZXRSdXNzaWFuUGx1cmFsKGUscyxkLG0pe2NvbnN0IGg9TWF0aC5hYnMoZSksZz1oJTEwLHg9aCUxMDA7cmV0dXJuIHg+PTExJiZ4PD0xOT9tOjE9PT1nP3M6Zz49MiYmZzw9ND9kOm19Y29uc3QgZXJyb3IkYz0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDp7b25lOiLRgdC40LzQstC+0LsiLGZldzoi0YHQuNC80LLQvtC70LAiLG1hbnk6ItGB0LjQvNCy0L7Qu9C+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sZmlsZTp7dW5pdDp7b25lOiLQsdCw0LnRgiIsZmV3OiLQsdCw0LnRgtCwIixtYW55OiLQsdCw0LnRgiJ9LHZlcmI6ItC40LzQtdGC0YwifSxhcnJheTp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtCwIixtYW55OiLRjdC70LXQvNC10L3RgtC+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sc2V0Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0LAiLG1hbnk6ItGN0LvQtdC80LXQvdGC0L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLQstCy0L7QtCIsZW1haWw6ImVtYWlsINCw0LTRgNC10YEiLHVybDoiVVJMIixlbW9qaToi0Y3QvNC+0LTQt9C4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0LAg0Lgg0LLRgNC10LzRjyIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0LLRgNC10LzRjyIsZHVyYXRpb246IklTTyDQtNC70LjRgtC10LvRjNC90L7RgdGC0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgSIsaXB2NjoiSVB2NiDQsNC00YDQtdGBIixjaWRydjQ6IklQdjQg0LTQuNCw0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00LjQsNC/0LDQt9C+0L0iLGJhc2U2NDoi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NCIsYmFzZTY0dXJsOiLRgdGC0YDQvtC60LAg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiSlNPTiDRgdGC0YDQvtC60LAiLGUxNjQ6ItC90L7QvNC10YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstCy0L7QtCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/QvtC70YPRh9C10L3QviAke2h9YDpg0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7c30sINC/0L7Qu9GD0YfQtdC90L4gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDQndC10LLQtdGA0L3Ri9C5INCy0LDRgNC40LDQvdGCOiDQvtC20LjQtNCw0LvQvtGB0Ywg0L7QtNC90L4g0LjQtyAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO2lmKGQpe2NvbnN0IG09Z2V0UnVzc2lhblBsdXJhbChOdW1iZXIoZS5tYXhpbXVtKSxkLnVuaXQub25lLGQudW5pdC5mZXcsZC51bml0Lm1hbnkpO3JldHVybmDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90LjQtSJ9INCx0YPQtNC10YIg0LjQvNC10YLRjCAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHttfWB9cmV0dXJuYNCh0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QuNC1In0g0LHRg9C00LXRgiAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7aWYoZCl7Y29uc3QgbT1nZXRSdXNzaWFuUGx1cmFsKE51bWJlcihlLm1pbmltdW0pLGQudW5pdC5vbmUsZC51bml0LmZldyxkLnVuaXQubWFueSk7cmV0dXJuYNCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2lufSDQsdGD0LTQtdGCINC40LzQtdGC0YwgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bX1gfXJldHVybmDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbn0g0LHRg9C00LXRgiAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINC90LDRh9C40L3QsNGC0YzRgdGPINGBICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0LfQsNC60LDQvdGH0LjQstCw0YLRjNGB0Y8g0L3QsCAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0YHQvtC00LXRgNC20LDRgtGMICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L3RgyAke2QucGF0dGVybn1gOmDQndC10LLQtdGA0L3Ri9C5ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQtdGA0L3QvtC1INGH0LjRgdC70L46INC00L7Qu9C20L3QviDQsdGL0YLRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QvtC30L3QsNC90L0ke2Uua2V5cy5sZW5ndGg+MT8i0YvQtSI6ItGL0LkifSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstC10YDQvdGL0Lkg0LrQu9GO0Ycg0LIgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0J3QtdCy0LXRgNC90YvQtSDQstGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1INCyICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciRiPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJ6bmFrb3YiLHZlcmI6ImltZXRpIn0sZmlsZTp7dW5pdDoiYmFqdG92Iix2ZXJiOiJpbWV0aSJ9LGFycmF5Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn0sc2V0Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoidm5vcyIsZW1haWw6ImUtcG/FoXRuaSBuYXNsb3YiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBpbiDEjWFzIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyDEjWFzIixkdXJhdGlvbjoiSVNPIHRyYWphbmplIixpcHY0OiJJUHY0IG5hc2xvdiIsaXB2NjoiSVB2NiBuYXNsb3YiLGNpZHJ2NDoib2JzZWcgSVB2NCIsY2lkcnY2OiJvYnNlZyBJUHY2IixiYXNlNjQ6ImJhc2U2NCBrb2RpcmFuIG5peiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kaXJhbiBuaXoiLGpzb25fc3RyaW5nOiJKU09OIG5peiIsZTE2NDoiRS4xNjQgxaF0ZXZpbGthIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidm5vcyJ9LGQ9e25hbjoiTmFOIixudW1iZXI6IsWhdGV2aWxvIixhcnJheToidGFiZWxhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcHJlamV0byAke2h9YDpgTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gJHtzfSwgcHJlamV0byAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgTmV2ZWxqYXZuYSBtb8W+bm9zdDogcHJpxI1ha292YW5vIGVubyBpem1lZCAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gaW1lbG8gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8iZWxlbWVudG92In1gOmBQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BQcmVtYWpobm86IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbn0gaW1lbG8gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2lufSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2BOZXZlbGphdmVuIG5pejogbW9yYSBzZSB6YcSNZXRpIHogIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2Uga29uxI1hdGkgeiAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHZzZWJvdmF0aSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdXN0cmV6YXRpIHZ6b3JjdSAke2QucGF0dGVybn1gOmBOZXZlbGphdmVuICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZlbGphdm5vIMWhdGV2aWxvOiBtb3JhIGJpdGkgdmXEjWtyYXRuaWsgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVwcmVwb3puYW4ke2Uua2V5cy5sZW5ndGg+MT8iaSBrbGp1xI1pIjoiIGtsanXEjSJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmVsamF2ZW4ga2xqdcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iTmV2ZWxqYXZlbiB2bm9zIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmVsamF2bmEgdnJlZG5vc3QgdiAke2Uub3JpZ2lufWB9fX07Y29uc3QgZXJyb3IkYT0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoidGVja2VuIix2ZXJiOiJhdHQgaGEifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiYXR0IGhhIn0sYXJyYXk6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifSxzZXQ6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiJyZWd1bGrDpHJ0IHV0dHJ5Y2siLGVtYWlsOiJlLXBvc3RhZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1kYXR1bSBvY2ggdGlkIixkYXRlOiJJU08tZGF0dW0iLHRpbWU6IklTTy10aWQiLGR1cmF0aW9uOiJJU08tdmFyYWt0aWdoZXQiLGlwdjQ6IklQdjQtaW50ZXJ2YWxsIixpcHY2OiJJUHY2LWludGVydmFsbCIsY2lkcnY0OiJJUHY0LXNwZWt0cnVtIixjaWRydjY6IklQdjYtc3Bla3RydW0iLGJhc2U2NDoiYmFzZTY0LWtvZGFkIHN0csOkbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvZGFkIHN0csOkbmciLGpzb25fc3RyaW5nOiJKU09OLXN0csOkbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Im1hbGwtbGl0ZXJhbCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6ImFudGFsIixhcnJheToibGlzdGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmljayAke2h9YDpgT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7c30sIGZpY2sgJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBPZ2lsdGlndCB2YWw6IGbDtnJ2w6RudGFkZSBlbiBhdiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJlbGVtZW50In1gOmBGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGF0ICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fWA6YEbDtnIgbGl0ZSh0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIGLDtnJqYSBtZWQgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgc2x1dGEgbWVkICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgaW5uZWjDpWxsYSAiJHtkLmluY2x1ZGVzfSJgOiJyZWdleCI9PT1kLmZvcm1hdD9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgbWF0Y2hhIG3Dtm5zdHJldCAiJHtkLnBhdHRlcm59ImA6YE9naWx0aWcodCkgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9naWx0aWd0IHRhbDogbcOlc3RlIHZhcmEgZW4gbXVsdGlwZWwgYXYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/Ik9rw6RuZGEgbnlja2xhciI6Ik9rw6RuZCBueWNrZWwifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPZ2lsdGlnIG55Y2tlbCBpICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4iT2dpbHRpZyBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBPZ2lsdGlndCB2w6RyZGUgaSAke2Uub3JpZ2luPz8idsOkcmRldCJ9YH19fTtjb25zdCBlcnJvciQ5PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLgro7grrTgr4HgrqTgr43grqTgr4HgrpXgr43grpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxmaWxlOnt1bml0OiLgrqrgr4jgrp/gr43grp/gr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxhcnJheTp7dW5pdDoi4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sc2V0Ont1bml0OiLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLgrongrrPgr43grrPgr4Dgrp/gr4EiLGVtYWlsOiLgrq7grr/grqngr43grqngrp7gr43grprgrrLgr40g4K6u4K+B4K6V4K614K6w4K6/Iix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g4K6k4K+H4K6k4K6/IOCuqOCvh+CusOCuruCvjSIsZGF0ZToiSVNPIOCupOCvh+CupOCuvyIsdGltZToiSVNPIOCuqOCvh+CusOCuruCvjSIsZHVyYXRpb246IklTTyDgrpXgrr7grrIg4K6F4K6z4K614K+BIixpcHY0OiJJUHY0IOCuruCvgeCuleCuteCusOCuvyIsaXB2NjoiSVB2NiDgrq7gr4HgrpXgrrXgrrDgrr8iLGNpZHJ2NDoiSVB2NCDgrrXgrrDgrq7gr43grqrgr4EiLGNpZHJ2NjoiSVB2NiDgrrXgrrDgrq7gr43grqrgr4EiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg4K6a4K6w4K6u4K+NIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIOCumuCusOCuruCvjSIsanNvbl9zdHJpbmc6IkpTT04g4K6a4K6w4K6u4K+NIixlMTY0OiJFLjE2NCDgro7grqPgr40iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6IuCujuCuo+CvjSIsYXJyYXk6IuCuheCuo+CuvyIsbnVsbDoi4K614K+G4K6x4K+B4K6u4K+IIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2h9YDpg4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7c30sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOCupOCuteCuseCuvuCuqSDgrrXgrr/grrDgr4Hgrqrgr43grqrgrq7gr406IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX0g4K6H4K6y4K+NIOCukuCuqeCvjeCuseCvgWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2luPz8i4K6u4K6k4K6/4K6q4K+N4K6q4K+BIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIn0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpUg4K6q4K+G4K6w4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbj8/IuCuruCupOCuv+CuquCvjeCuquCvgSJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpXgrprgr40g4K6a4K6/4K6x4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7ZC5wcmVmaXh9IiDgrofgrrLgr40g4K6k4K+K4K6f4K6Z4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7ZC5zdWZmaXh9IiDgrofgrrLgr40g4K6u4K+B4K6f4K6/4K614K6f4K+I4K6vIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtkLmluY2x1ZGVzfSIg4K6QIOCuieCus+CvjeCus+Cun+CuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOiJyZWdleCI9PT1kLmZvcm1hdD9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogJHtkLnBhdHRlcm59IOCuruCvgeCuseCviOCuquCuvuCun+CvjeCun+CvgeCun+CuqeCvjSDgrqrgr4rgrrDgr4Hgrqjgr43grqQg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6k4K614K6x4K6+4K6pICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDgrqTgrrXgrrHgrr7grqkg4K6O4K6j4K+NOiAke2UuZGl2aXNvcn0g4K6H4K6p4K+NIOCuquCusuCuruCuvuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4K6F4K6f4K+I4K6v4K6+4K6z4K6u4K+NIOCupOCvhuCusOCuv+Cur+CuvuCupCDgrrXgrr/grprgr4gke2Uua2V5cy5sZW5ndGg+MT8i4K6V4K6z4K+NIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g4K6H4K6y4K+NIOCupOCuteCuseCuvuCuqSDgrrXgrr/grprgr4hgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuruCupOCuv+CuquCvjeCuquCvgWB9fX07Y29uc3QgZXJyb3IkOD0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi4LiV4Lix4Lin4Lit4Lix4LiB4Lip4LijIix2ZXJiOiLguITguKfguKPguKHguLUifSxmaWxlOnt1bml0OiLguYTguJrguJXguYwiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LGFycmF5Ont1bml0OiLguKPguLLguKLguIHguLLguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LHNldDp7dW5pdDoi4Lij4Liy4Lii4LiB4Liy4LijIix2ZXJiOiLguITguKfguKPguKHguLUifX07ZnVuY3Rpb24gZ2V0U2l6aW5nKHMpe3JldHVybiBlW3NdPz9udWxsfWNvbnN0IHM9e3JlZ2V4OiLguILguYnguK3guKHguLnguKXguJfguLXguYjguJvguYnguK3guJkiLGVtYWlsOiLguJfguLXguYjguK3guKLguLnguYjguK3guLXguYDguKHguKUiLHVybDoiVVJMIixlbW9qaToi4Lit4Li04LmC4Lih4LiI4Li0Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLguKfguLHguJnguJfguLXguYjguYDguKfguKXguLLguYHguJrguJogSVNPIixkYXRlOiLguKfguLHguJnguJfguLXguYjguYHguJrguJogSVNPIix0aW1lOiLguYDguKfguKXguLLguYHguJrguJogSVNPIixkdXJhdGlvbjoi4LiK4LmI4Lin4LiH4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsaXB2NDoi4LiX4Li14LmI4Lit4Lii4Li54LmIIElQdjQiLGlwdjY6IuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY2IixjaWRydjQ6IuC4iuC5iOC4p+C4hyBJUCDguYHguJrguJogSVB2NCIsY2lkcnY2OiLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjYiLGJhc2U2NDoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCIsYmFzZTY0dXJsOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogQmFzZTY0IOC4quC4s+C4q+C4o+C4seC4miBVUkwiLGpzb25fc3RyaW5nOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogSlNPTiIsZTE2NDoi4LmA4Lia4Lit4Lij4LmM4LmC4LiX4Lij4Lio4Lix4Lie4LiX4LmM4Lij4Liw4Lir4Lin4LmI4Liy4LiH4Lib4Lij4Liw4LmA4LiX4LioIChFLjE2NCkiLGp3dDoi4LmC4LiX4LmA4LiE4LiZIEpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lib4LmJ4Lit4LiZIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi4LiV4Lix4Lin4LmA4Lil4LiCIixhcnJheToi4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmMIChBcnJheSkiLG51bGw6IuC5hOC4oeC5iOC4oeC4teC4hOC5iOC4siAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IOC5geC4leC5iOC5hOC4lOC5ieC4o+C4seC4miAke2h9YDpg4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtzfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g4LiE4LmI4Liy4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOC4leC4seC4p+C5gOC4peC4t+C4reC4geC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZ4Lir4LiZ4Li24LmI4LiH4LmD4LiZICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i4LmE4Lih4LmI4LmA4LiB4Li04LiZIjoi4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4LiyIixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLguKPguLLguKLguIHguLLguKMifWA6YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8i4Lit4Lii4LmI4Liy4LiH4LiZ4LmJ4Lit4LiiIjoi4Lih4Liy4LiB4LiB4Lin4LmI4LiyIixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbn0g4LiE4Lin4Lij4Lih4Li1JHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDguJnguYnguK3guKLguIHguKfguYjguLLguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4guC4tuC5ieC4meC4leC5ieC4meC4lOC5ieC4p+C4oiAiJHtkLnByZWZpeH0iYDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4peC4h+C4l+C5ieC4suC4ouC4lOC5ieC4p+C4oiAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4Lih4Li1ICIke2QuaW5jbHVkZXN9IiDguK3guKLguLnguYjguYPguJnguILguYnguK3guITguKfguLLguKFgOiJyZWdleCI9PT1kLmZvcm1hdD9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguJXguKPguIfguIHguLHguJrguKPguLnguJvguYHguJrguJrguJfguLXguYjguIHguLPguKvguJnguJQgJHtkLnBhdHRlcm59YDpg4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4LiV4Lix4Lin4LmA4Lil4LiC4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguYDguJvguYfguJnguIjguLPguJnguKfguJnguJfguLXguYjguKvguLLguKPguJTguYnguKfguKIgJHtlLmRpdmlzb3J9IOC5hOC4lOC5ieC4peC4h+C4leC4seC4p2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOC4nuC4muC4hOC4teC4ouC5jOC4l+C4teC5iOC5hOC4oeC5iOC4o+C4ueC5ieC4iOC4seC4gTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDguITguLXguKLguYzguYTguKHguYjguJbguLnguIHguJXguYnguK3guIfguYPguJkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LmE4Lih4LmI4LiV4Lij4LiH4LiB4Lix4Lia4Lij4Li54Lib4LmB4Lia4Lia4Lii4Li54LmA4LiZ4Li14Lii4LiZ4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHIn19fTtjb25zdCBlcnJvciQ3PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoib2xtYWzEsSJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLEifSxhcnJheTp7dW5pdDoiw7bEn2UiLHZlcmI6Im9sbWFsxLEifSxzZXQ6e3VuaXQ6IsO2xJ9lIix2ZXJiOiJvbG1hbMSxIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoiZ2lyZGkiLGVtYWlsOiJlLXBvc3RhIGFkcmVzaSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIHRhcmloIHZlIHNhYXQiLGRhdGU6IklTTyB0YXJpaCIsdGltZToiSVNPIHNhYXQiLGR1cmF0aW9uOiJJU08gc8O8cmUiLGlwdjQ6IklQdjQgYWRyZXNpIixpcHY2OiJJUHY2IGFkcmVzaSIsY2lkcnY0OiJJUHY0IGFyYWzEscSfxLEiLGNpZHJ2NjoiSVB2NiBhcmFsxLHEn8SxIixiYXNlNjQ6ImJhc2U2NCBpbGUgxZ9pZnJlbGVubWnFnyBtZXRpbiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwgaWxlIMWfaWZyZWxlbm1pxZ8gbWV0aW4iLGpzb25fc3RyaW5nOiJKU09OIGRpemVzaSIsZTE2NDoiRS4xNjQgc2F5xLFzxLEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLFnmFibG9uIGRpemVzaSJ9LGQ9e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYWzEsW5hbiAke2h9YDpgR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gJHtzfSwgYWzEsW5hbiAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2BHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgR2XDp2Vyc2l6IHNlw6dlbmVrOiBhxZ9hxJ/EsWRha2lsZXJkZW4gYmlyaSBvbG1hbMSxOiAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DDh29rIGLDvHnDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW4/PyJkZcSfZXIifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLDtsSfZSJ9YDpgw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2Uub3JpZ2luPz8iZGXEn2VyIn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DDh29rIGvDvMOnw7xrOiBiZWtsZW5lbiAke2Uub3JpZ2lufSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gR2XDp2Vyc2l6IG1ldGluOiAiJHtkLnByZWZpeH0iIGlsZSBiYcWfbGFtYWzEsWA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gR2XDp2Vyc2l6IG1ldGluOiAiJHtkLnN1ZmZpeH0iIGlsZSBiaXRtZWxpYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YEdlw6dlcnNpeiBtZXRpbjogIiR7ZC5pbmNsdWRlc30iIGnDp2VybWVsaWA6InJlZ2V4Ij09PWQuZm9ybWF0P2BHZcOnZXJzaXogbWV0aW46ICR7ZC5wYXR0ZXJufSBkZXNlbmluZSB1eW1hbMSxYDpgR2XDp2Vyc2l6ICR7c1tkLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBHZcOnZXJzaXogc2F5xLE6ICR7ZS5kaXZpc29yfSBpbGUgdGFtIGLDtmzDvG5lYmlsbWVsaWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW5kZSBnZcOnZXJzaXogYW5haHRhcmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJHZcOnZXJzaXogZGXEn2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGRlxJ9lcmB9fX07Y29uc3QgZXJyb3IkNj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sZmlsZTp7dW5pdDoi0LHQsNC50YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxhcnJheTp7dW5pdDoi0LXQu9C10LzQtdC90YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIixlbWFpbDoi0LDQtNGA0LXRgdCwINC10LvQtdC60YLRgNC+0L3QvdC+0Zcg0L/QvtGI0YLQuCIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC30ZYiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ItC00LDRgtCwINGC0LAg0YfQsNGBIElTTyIsZGF0ZToi0LTQsNGC0LAgSVNPIix0aW1lOiLRh9Cw0YEgSVNPIixkdXJhdGlvbjoi0YLRgNC40LLQsNC70ZbRgdGC0YwgSVNPIixpcHY0OiLQsNC00YDQtdGB0LAgSVB2NCIsaXB2Njoi0LDQtNGA0LXRgdCwIElQdjYiLGNpZHJ2NDoi0LTRltCw0L/QsNC30L7QvSBJUHY0IixjaWRydjY6ItC00ZbQsNC/0LDQt9C+0L0gSVB2NiIsYmFzZTY0OiLRgNGP0LTQvtC6INGDINC60L7QtNGD0LLQsNC90L3RliBiYXNlNjQiLGJhc2U2NHVybDoi0YDRj9C00L7QuiDRgyDQutC+0LTRg9Cy0LDQvdC90ZYgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi0YDRj9C00L7QuiBKU09OIixlMTY0OiLQvdC+0LzQtdGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIn0sZD17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L7RgtGA0LjQvNCw0L3QviAke2h9YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7c30sINC+0YLRgNC40LzQsNC90L4gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmDQndC10L/RgNCw0LLQuNC70YzQvdCwINC+0L/RhtGW0Y86INC+0YfRltC60YPRlNGC0YzRgdGPINC+0LTQvdC1INC3ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YNCX0LDQvdCw0LTRgtC+INCy0LXQu9C40LrQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC90Y8ifSAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i0LXQu9C10LzQtdC90YLRltCyIn1gOmDQl9Cw0L3QsNC00YLQviDQstC10LvQuNC60LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QvdGPIn0g0LHRg9C00LUgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0gJHtkLnZlcmJ9ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0g0LHRg9C00LUgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC/0L7Rh9C40L3QsNGC0LjRgdGPINC3ICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQt9Cw0LrRltC90YfRg9Cy0LDRgtC40YHRjyDQvdCwICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC80ZbRgdGC0LjRgtC4ICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRiNCw0LHQu9C+0L3RgyAke2QucGF0dGVybn1gOmDQndC10L/RgNCw0LLQuNC70YzQvdC40LkgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0YfQuNGB0LvQvjog0L/QvtCy0LjQvdC90L4g0LHRg9GC0Lgg0LrRgNCw0YLQvdC40LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0L7Qt9C/0ZbQt9C90LDQvdC40Lkg0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0ZYiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZYiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QtSDQt9C90LDRh9C10L3QvdGPINGDICR7ZS5vcmlnaW59YH19fTtmdW5jdGlvbiB1aygpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ2KCl9fWNvbnN0IGVycm9yJDU9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6Itit2LHZiNmBIix2ZXJiOiLbgdmI2YbYpyJ9LGZpbGU6e3VuaXQ6Itio2KfYptm52LMiLHZlcmI6ItuB2YjZhtinIn0sYXJyYXk6e3VuaXQ6Itii2KbZudmF2LIiLHZlcmI6ItuB2YjZhtinIn0sc2V0Ont1bml0OiLYotim2bnZhdiyIix2ZXJiOiLbgdmI2YbYpyJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6Itin2YYg2b7ZuSIsZW1haWw6Itin24wg2YXbjNmEINin24zaiNix24zYsyIsdXJsOiLbjNmIINii2LEg2KfbjNmEIixlbW9qaToi2KfbjNmF2YjYrNuMIix1dWlkOiLbjNmIINuM2Ygg2KLYptuMINqI24wiLHV1aWR2NDoi24zZiCDbjNmIINii2KbbjCDaiNuMINmI24wgNCIsdXVpZHY2OiLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA2IixuYW5vaWQ6ItmG24zZhtmIINii2KbbjCDaiNuMIixndWlkOiLYrNuMINuM2Ygg2KLYptuMINqI24wiLGN1aWQ6Itiz24wg24zZiCDYotim24wg2ojbjCIsY3VpZDI6Itiz24wg24zZiCDYotim24wg2ojbjCAyIix1bGlkOiLbjNmIINin24zZhCDYotim24wg2ojbjCIseGlkOiLYp9uM2qnYsyDYotim24wg2ojbjCIsa3N1aWQ6Itqp25Ig2KfbjNizINuM2Ygg2KLYptuMINqI24wiLGRhdGV0aW1lOiLYotim24wg2KfbjNizINin2Ygg2ojbjNm5INm52KfYptmFIixkYXRlOiLYotim24wg2KfbjNizINin2Ygg2KrYp9ix24zYriIsdGltZToi2KLYptuMINin24zYsyDYp9mIINmI2YLYqiIsZHVyYXRpb246Itii2KbbjCDYp9uM2LMg2KfZiCDZhdiv2KoiLGlwdjQ6Itii2KbbjCDZvtuMINmI24wgNCDYp9uM2ojYsduM2LMiLGlwdjY6Itii2KbbjCDZvtuMINmI24wgNiDYp9uM2ojYsduM2LMiLGNpZHJ2NDoi2KLYptuMINm+24wg2YjbjCA0INix24zZhtisIixjaWRydjY6Itii2KbbjCDZvtuMINmI24wgNiDYsduM2YbYrCIsYmFzZTY0OiLYqNuM2LMgNjQg2KfZhiDaqdmI2ojaiCDYs9m52LHZhtqvIixiYXNlNjR1cmw6Itio24zYsyA2NCDbjNmIINii2LEg2KfbjNmEINin2YYg2qnZiNqI2ogg2LPZudix2YbaryIsanNvbl9zdHJpbmc6Itis25Ig2KfbjNizINin2Ygg2KfbjNmGINiz2bnYsdmG2q8iLGUxNjQ6Itin24wgMTY0INmG2YXYqNixIixqd3Q6Itis25Ig2ojYqNmE24zZiCDZuduMIix0ZW1wbGF0ZV9saXRlcmFsOiLYp9mGINm+2bkifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiLZhtmF2KjYsSIsYXJyYXk6Itii2LHbkiIsbnVsbDoi2YbZhCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DYutmE2Lcg2KfZhiDZvtm5OiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke2h9INmF2YjYtdmI2YQg24HZiNinYDpg2LrZhNi3INin2YYg2b7ZuTogJHtzfSDZhdiq2YjZgti5INiq2r7Yp9iMICR7aH0g2YXZiNi12YjZhCDbgdmI2KdgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YNi62YTYtyDYp9mGINm+2bk6ICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX0g2YXYqtmI2YLYuSDYqtq+2KdgOmDYutmE2Lcg2KLZvti02YY6ICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfSDZhduM2rog2LPbkiDYp9uM2qkg2YXYqtmI2YLYuSDYqtq+2KdgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DYqNuB2Kog2KjakdinOiAke2Uub3JpZ2luPz8i2YjbjNmE24zZiCJ9INqp25IgJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i2LnZhtin2LXYsSJ9INuB2YjZhtuSINmF2KrZiNmC2Lkg2KravtuSYDpg2KjbgdiqINio2pHYpzogJHtlLm9yaWdpbj8/ItmI24zZhNuM2YgifSDaqdinICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g2KjbgdiqINqG2r7ZiNm52Kc6ICR7ZS5vcmlnaW59INqp25IgJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0fSDbgdmI2YbbkiDZhdiq2YjZgti5INiq2r7bkmA6YNio24HYqiDahtq+2YjZudinOiAke2Uub3JpZ2lufSDaqdinICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtkLnByZWZpeH0iINiz25Ig2LTYsdmI2Lkg24HZiNmG2Kcg2obYp9uB24zbkmA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9g2LrZhNi3INiz2bnYsdmG2q86ICIke2Quc3VmZml4fSIg2b7YsSDYrtiq2YUg24HZiNmG2Kcg2obYp9uB24zbkmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DYutmE2Lcg2LPZudix2YbarzogIiR7ZC5pbmNsdWRlc30iINi02KfZhdmEINuB2YjZhtinINqG2KfbgduM25JgOiJyZWdleCI9PT1kLmZvcm1hdD9g2LrZhNi3INiz2bnYsdmG2q86INm+24zZudix2YYgJHtkLnBhdHRlcm59INiz25Ig2YXbjNqGINuB2YjZhtinINqG2KfbgduM25JgOmDYutmE2LcgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi62YTYtyDZhtmF2KjYsTogJHtlLmRpdmlzb3J9INqp2Kcg2YXYttin2LnZgSDbgdmI2YbYpyDahtin24HbjNuSYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2LrbjNixINiq2LPZhNuM2YUg2LTYr9uBINqp24wke2Uua2V5cy5sZW5ndGg+MT8i2LIiOiIifTogJHtqb2luVmFsdWVzKGUua2V5cywi2IwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDaqduMYDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIti62YTYtyDYp9mGINm+2bkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDZiNuM2YTbjNmIYH19fTtjb25zdCBlcnJvciQ0PSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiJiZWxnaSIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxhcnJheTp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LHNldDp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6ImtpcmlzaCIsZW1haWw6ImVsZWt0cm9uIHBvY2h0YSBtYW56aWxpIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gc2FuYSB2YSB2YXF0aSIsZGF0ZToiSVNPIHNhbmEiLHRpbWU6IklTTyB2YXF0IixkdXJhdGlvbjoiSVNPIGRhdm9taXlsaWsiLGlwdjQ6IklQdjQgbWFuemlsIixpcHY2OiJJUHY2IG1hbnppbCIsbWFjOiJNQUMgbWFuemlsIixjaWRydjQ6IklQdjQgZGlhcGF6b24iLGNpZHJ2NjoiSVB2NiBkaWFwYXpvbiIsYmFzZTY0OiJiYXNlNjQga29kbGFuZ2FuIHNhdHIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGxhbmdhbiBzYXRyIixqc29uX3N0cmluZzoiSlNPTiBzYXRyIixlMTY0OiJFLjE2NCByYXFhbSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImtpcmlzaCJ9LGQ9e25hbjoiTmFOIixudW1iZXI6InJhcWFtIixhcnJheToibWFzc2l2In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHFhYnVsIHFpbGluZ2FuICR7aH1gOmBOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHtzfSwgcWFidWwgcWlsaW5nYW4gJHtofWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gMT09PWUudmFsdWVzLmxlbmd0aD9gTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuICR7c3RyaW5naWZ5UHJpbWl0aXZlKGUudmFsdWVzWzBdKX1gOmBOb3Rv4oCYZ+KAmHJpIHZhcmlhbnQ6IHF1eWlkYWdpbGFyZGFuIGJpcmkga3V0aWxnYW4gJHtqb2luVmFsdWVzKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBzPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfSAke2QudW5pdH0gJHtkLnZlcmJ9YDpgSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9gSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH0gJHtkLnZlcmJ9YDpgSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGQ9ZTtyZXR1cm4ic3RhcnRzX3dpdGgiPT09ZC5mb3JtYXQ/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7ZC5wcmVmaXh9IiBiaWxhbiBib3NobGFuaXNoaSBrZXJha2A6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtkLnN1ZmZpeH0iIGJpbGFuIHR1Z2FzaGkga2VyYWtgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtkLmluY2x1ZGVzfSIgbmkgb+KAmHogaWNoaWdhIG9saXNoaSBrZXJha2A6InJlZ2V4Ij09PWQuZm9ybWF0P2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICR7ZC5wYXR0ZXJufSBzaGFibG9uaWdhIG1vcyBrZWxpc2hpIGtlcmFrYDpgTm90b+KAmGfigJhyaSAke3NbZC5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm90b+KAmGfigJhyaSByYXFhbTogJHtlLmRpdmlzb3J9IG5pbmcga2FycmFsaXNpIGJv4oCYbGlzaGkga2VyYWtgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOb21h4oCZbHVtIGthbGl0JHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAke2pvaW5WYWx1ZXMoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRhZ2kga2FsaXQgbm90b+KAmGfigJhyaWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiJOb3Rv4oCYZ+KAmHJpIGtpcmlzaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYSBub3Rv4oCYZ+KAmHJpIHFpeW1hdGB9fX07Y29uc3QgZXJyb3IkMz0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoia8O9IHThu7EiLHZlcmI6ImPDsyJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImPDsyJ9LGFycmF5Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn0sc2V0Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoixJHhuqd1IHbDoG8iLGVtYWlsOiLEkeG7i2EgY2jhu4kgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Im5nw6B5IGdp4budIElTTyIsZGF0ZToibmfDoHkgSVNPIix0aW1lOiJnaeG7nSBJU08iLGR1cmF0aW9uOiJraG/huqNuZyB0aOG7nWkgZ2lhbiBJU08iLGlwdjQ6IsSR4buLYSBjaOG7iSBJUHY0IixpcHY2OiLEkeG7i2EgY2jhu4kgSVB2NiIsY2lkcnY0OiJk4bqjaSBJUHY0IixjaWRydjY6ImThuqNpIElQdjYiLGJhc2U2NDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjQiLGJhc2U2NHVybDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaHXhu5dpIEpTT04iLGUxNjQ6InPhu5EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLEkeG6p3UgdsOgbyJ9LGQ9e25hbjoiTmFOIixudW1iZXI6InPhu5EiLGFycmF5OiJt4bqjbmcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3Qgcz1kW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLG09cGFyc2VkVHlwZShlLmlucHV0KSxoPWRbbV0/P207cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgbmjhuq1uIMSRxrDhu6NjICR7aH1gOmDEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgJHtzfSwgbmjhuq1uIMSRxrDhu6NjICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgVMO5eSBjaOG7jW4ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIG3hu5l0IHRyb25nIGPDoWMgZ2nDoSB0cuG7iyAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2BRdcOhIGzhu5tuOiBtb25nIMSR4bujaSAke2Uub3JpZ2luPz8iZ2nDoSB0cuG7iyJ9ICR7ZC52ZXJifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyJwaOG6p24gdOG7rSJ9YDpgUXXDoSBs4bubbjogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbj8/Imdpw6EgdHLhu4sifSAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW59ICR7ZC52ZXJifSAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpgUXXDoSBuaOG7jzogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGLhuq90IMSR4bqndSBi4bqxbmcgIiR7ZC5wcmVmaXh9ImA6ImVuZHNfd2l0aCI9PT1kLmZvcm1hdD9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGvhur90IHRow7pjIGLhurFuZyAiJHtkLnN1ZmZpeH0iYDoiaW5jbHVkZXMiPT09ZC5mb3JtYXQ/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBiYW8gZ+G7k20gIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBraOG7m3AgduG7m2kgbeG6q3UgJHtkLnBhdHRlcm59YDpgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9IGtow7RuZyBo4bujcCBs4buHYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFPhu5Ega2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBsw6AgYuG7mWkgc+G7kSBj4bunYSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLaMOzYSBraMO0bmcgxJHGsOG7o2Mgbmjhuq1uIGThuqFuZzogJHtqb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLaMOzYSBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBHacOhIHRy4buLIGtow7RuZyBo4bujcCBs4buHIHRyb25nICR7ZS5vcmlnaW59YH19fTtjb25zdCBlcnJvciQyPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLlrZfnrKYiLHZlcmI6IuWMheWQqyJ9LGZpbGU6e3VuaXQ6IuWtl+iKgiIsdmVyYjoi5YyF5ZCrIn0sYXJyYXk6e3VuaXQ6IumhuSIsdmVyYjoi5YyF5ZCrIn0sc2V0Ont1bml0OiLpobkiLHZlcmI6IuWMheWQqyJ9fTtmdW5jdGlvbiBnZXRTaXppbmcocyl7cmV0dXJuIGVbc10/P251bGx9Y29uc3Qgcz17cmVnZXg6Iui+k+WFpSIsZW1haWw6IueUteWtkOmCruS7tiIsdXJsOiJVUkwiLGVtb2ppOiLooajmg4XnrKblj7ciLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTT+aXpeacn+aXtumXtCIsZGF0ZToiSVNP5pel5pyfIix0aW1lOiJJU0/ml7bpl7QiLGR1cmF0aW9uOiJJU0/ml7bplb8iLGlwdjQ6IklQdjTlnLDlnYAiLGlwdjY6IklQdjblnLDlnYAiLGNpZHJ2NDoiSVB2NOe9keautSIsY2lkcnY2OiJJUHY2572R5q61IixiYXNlNjQ6ImJhc2U2NOe8lueggeWtl+espuS4siIsYmFzZTY0dXJsOiJiYXNlNjR1cmznvJbnoIHlrZfnrKbkuLIiLGpzb25fc3RyaW5nOiJKU09O5a2X56ym5LiyIixlMTY0OiJFLjE2NOWPt+eggSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Iui+k+WFpSJ9LGQ9e25hbjoiTmFOIixudW1iZXI6IuaVsOWtlyIsYXJyYXk6IuaVsOe7hCIsbnVsbDoi56m65YC8KG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IHM9ZFtlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxtPXBhcnNlZFR5cGUoZS5pbnB1dCksaD1kW21dPz9tO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOaXoOaViOi+k+WFpe+8muacn+acmyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3vvIzlrp7pmYXmjqXmlLYgJHtofWA6YOaXoOaViOi+k+WFpe+8muacn+acmyAke3N977yM5a6e6ZmF5o6l5pS2ICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YOaXoOaViOi+k+WFpe+8muacn+acmyAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpg5peg5pWI6YCJ6aG577ya5pyf5pyb5Lul5LiL5LmL5LiAICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YOaVsOWAvOi/h+Wkp++8muacn+acmyAke2Uub3JpZ2luPz8i5YC8In0gJHtzfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7ZC51bml0Pz8i5Liq5YWD57SgIn1gOmDmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtlLm9yaWdpbj8/IuWAvCJ9ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g5pWw5YC86L+H5bCP77ya5pyf5pybICR7ZS5vcmlnaW59ICR7c30ke2UubWluaW11bS50b1N0cmluZygpfSAke2QudW5pdH1gOmDmlbDlgLzov4flsI/vvJrmnJ/mnJsgJHtlLm9yaWdpbn0gJHtzfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75LulICIke2QucHJlZml4fSIg5byA5aS0YDoiZW5kc193aXRoIj09PWQuZm9ybWF0P2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgIiR7ZC5zdWZmaXh9IiDnu5PlsL5gOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75YyF5ZCrICIke2QuaW5jbHVkZXN9ImA6InJlZ2V4Ij09PWQuZm9ybWF0P2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvmu6HotrPmraPliJnooajovr7lvI8gJHtkLnBhdHRlcm59YDpg5peg5pWIJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOaXoOaViOaVsOWtl++8muW/hemhu+aYryAke2UuZGl2aXNvcn0g55qE5YCN5pWwYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g5Ye6546w5pyq55+l55qE6ZSuKGtleSk6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit55qE6ZSuKGtleSnml6DmlYhgO2Nhc2UiaW52YWxpZF91bmlvbiI6ZGVmYXVsdDpyZXR1cm4i5peg5pWI6L6T5YWlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reWMheWQq+aXoOaViOWAvCh2YWx1ZSlgfX19O2NvbnN0IGVycm9yJDE9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6IuWtl+WFgyIsdmVyYjoi5pOB5pyJIn0sZmlsZTp7dW5pdDoi5L2N5YWD57WEIix2ZXJiOiLmk4HmnIkifSxhcnJheTp7dW5pdDoi6aCF55uuIix2ZXJiOiLmk4HmnIkifSxzZXQ6e3VuaXQ6IumgheebriIsdmVyYjoi5pOB5pyJIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi6Ly45YWlIixlbWFpbDoi6YO15Lu25Zyw5Z2AIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g5pel5pyf5pmC6ZaTIixkYXRlOiJJU08g5pel5pyfIix0aW1lOiJJU08g5pmC6ZaTIixkdXJhdGlvbjoiSVNPIOacn+mWkyIsaXB2NDoiSVB2NCDkvY3lnYAiLGlwdjY6IklQdjYg5L2N5Z2AIixjaWRydjQ6IklQdjQg56+E5ZyNIixjaWRydjY6IklQdjYg56+E5ZyNIixiYXNlNjQ6ImJhc2U2NCDnt6jnorzlrZfkuLIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIOe3qOeivOWtl+S4siIsanNvbl9zdHJpbmc6IkpTT04g5a2X5LiyIixlMTY0OiJFLjE2NCDmlbjlgLwiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLovLjlhaUifSxkPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR977yM5L2G5pS25YiwICR7aH1gOmDnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtzfe+8jOS9huaUtuWIsCAke2h9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiAxPT09ZS52YWx1ZXMubGVuZ3RoP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtzdHJpbmdpZnlQcmltaXRpdmUoZS52YWx1ZXNbMF0pfWA6YOeEoeaViOeahOmBuOmghe+8mumgkOacn+eCuuS7peS4i+WFtuS4reS5i+S4gCAke2pvaW5WYWx1ZXMoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IHM9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsZD1nZXRTaXppbmcoZS5vcmlnaW4pO3JldHVybiBkP2DmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtlLm9yaWdpbj8/IuWAvCJ9IOaHieeCuiAke3N9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXQ/PyLlgIvlhYPntKAifWA6YOaVuOWAvOmBjuWkp++8mumgkOacnyAke2Uub3JpZ2luPz8i5YC8In0g5oeJ54K6ICR7c30ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBzPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGQ9Z2V0U2l6aW5nKGUub3JpZ2luKTtyZXR1cm4gZD9g5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtkLnVuaXR9YDpg5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke3N9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBkPWU7cmV0dXJuInN0YXJ0c193aXRoIj09PWQuZm9ybWF0P2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjku6UgIiR7ZC5wcmVmaXh9IiDplovpoK1gOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSAiJHtkLnN1ZmZpeH0iIOe1kOWwvmA6ImluY2x1ZGVzIj09PWQuZm9ybWF0P2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjljIXlkKsgIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOespuWQiOagvOW8jyAke2QucGF0dGVybn1gOmDnhKHmlYjnmoQgJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOeEoeaViOeahOaVuOWtl++8muW/hemgiOeCuiAke2UuZGl2aXNvcn0g55qE5YCN5pW4YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g54Sh5rOV6K2Y5Yil55qE6Y215YC8JHtlLmtleXMubGVuZ3RoPjE/IuWAkSI6IiJ977yaJHtqb2luVmFsdWVzKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5pyJ54Sh5pWI55qE6Y215YC8YDtjYXNlImludmFsaWRfdW5pb24iOmRlZmF1bHQ6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTlgLxgfX19O2NvbnN0IGVycm9yPSgpPT57Y29uc3QgZT17c3RyaW5nOnt1bml0OiLDoG1pIix2ZXJiOiJuw60ifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoibsOtIn0sYXJyYXk6e3VuaXQ6Im5rYW4iLHZlcmI6Im7DrSJ9LHNldDp7dW5pdDoibmthbiIsdmVyYjoibsOtIn19O2Z1bmN0aW9uIGdldFNpemluZyhzKXtyZXR1cm4gZVtzXT8/bnVsbH1jb25zdCBzPXtyZWdleDoi4bq5zIBy4buNIMOsYsOhd+G7jWzDqSIsZW1haWw6IsOgZMOtcuG6ucyBc8OsIMOsbeG6ucyBbMOsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLDoGvDs2vDsiBJU08iLGRhdGU6IuG7jWrhu43MgSBJU08iLHRpbWU6IsOga8Oza8OyIElTTyIsZHVyYXRpb246IsOga8Oza8OyIHTDsyBww6kgSVNPIixpcHY0OiLDoGTDrXLhurnMgXPDrCBJUHY0IixpcHY2OiLDoGTDrXLhurnMgXPDrCBJUHY2IixjaWRydjQ6IsOgZ2LDqGdiw6ggSVB2NCIsY2lkcnY2OiLDoGdiw6hnYsOoIElQdjYiLGJhc2U2NDoi4buNzIBy4buNzIAgdMOtIGEga+G7jcyBIG7DrSBiYXNlNjQiLGJhc2U2NHVybDoi4buNzIBy4buNzIAgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4buNzIBy4buNzIAgSlNPTiIsZTE2NDoibuG7jcyBbWLDoCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuG6ucyAcuG7jSDDrGLDoXfhu41sw6kifSxkPXtuYW46Ik5hTiIsbnVtYmVyOiJu4buNzIFtYsOgIixhcnJheToiYWtvcOG7jSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBzPWRbZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsbT1wYXJzZWRUeXBlKGUuaW5wdXQpLGg9ZFttXT8/bTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDDoG3hu43MgCBhIHLDrSAke2h9YDpgw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7c30sIMOgbeG7jcyAIGEgcsOtICR7aH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIDE9PT1lLnZhbHVlcy5sZW5ndGg/YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke3N0cmluZ2lmeVByaW1pdGl2ZShlLnZhbHVlc1swXSl9YDpgw4DhuaPDoHnDoG4gYeG5o8Os4bmjZTogeWFuIOG7jcyAa2FuIGzDoXJhICR7am9pblZhbHVlcyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPD0iOiI8IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YFTDsyBw4buNzIAgasO5OiBhIG7DrSBsw6F0aSBq4bq5zIEgcMOpICR7ZS5vcmlnaW4/PyJpeWUifSAke2QudmVyYn0gJHtzfSR7ZS5tYXhpbXVtfSAke2QudW5pdH1gOmBUw7MgcOG7jcyAIGrDuTogYSBuw60gbMOhdGkgauG6ucyBICR7c30ke2UubWF4aW11bX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3Qgcz1lLmluY2x1c2l2ZT8iPj0iOiI+IixkPWdldFNpemluZyhlLm9yaWdpbik7cmV0dXJuIGQ/YEvDqXLDqSBqdTogYSBuw60gbMOhdGkgauG6ucyBIHDDqSAke2Uub3JpZ2lufSAke2QudmVyYn0gJHtzfSR7ZS5taW5pbXVtfSAke2QudW5pdH1gOmBLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSAke3N9JHtlLm1pbmltdW19YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgZD1lO3JldHVybiJzdGFydHNfd2l0aCI9PT1kLmZvcm1hdD9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBi4bq5zIBy4bq5zIAgcOG6ucyAbMO6ICIke2QucHJlZml4fSJgOiJlbmRzX3dpdGgiPT09ZC5mb3JtYXQ/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgcGFyw60gcOG6ucyAbMO6ICIke2Quc3VmZml4fSJgOiJpbmNsdWRlcyI9PT1kLmZvcm1hdD9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBuw60gIiR7ZC5pbmNsdWRlc30iYDoicmVnZXgiPT09ZC5mb3JtYXQ/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYsOhIMOgcOG6ueG6uXLhurkgbXUgJHtkLnBhdHRlcm59YDpgQeG5o8Os4bmjZTogJHtzW2QuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7hu43MgW1iw6AgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBq4bq5zIEgw6h5w6AgcMOtcMOtbiB0aSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBC4buNdMOsbsOsIMOgw6xt4buNzIA6ICR7am9pblZhbHVlcyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQuG7jXTDrG7DrCBh4bmjw6zhuaNlIG7DrW7DuiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpkZWZhdWx0OnJldHVybiLDjGLDoXfhu41sw6kgYeG5o8Os4bmjZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJeWUgYeG5o8Os4bmjZSBuw61uw7ogJHtlLm9yaWdpbn1gfX19O2NvbnN0IFJzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxhcjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRLKCl9fSxhejpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRKKCl9fSxiZTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRJKCl9fSxiZzpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRIKCl9fSxjYTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRHKCl9fSxjczpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRGKCl9fSxkYTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRFKCl9fSxkZTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciREKCl9fSxlbjplbixlbzpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRCKCl9fSxlczpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRBKCl9fSxmYTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciR6KCl9fSxmaTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciR5KCl9fSxmcjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciR4KCl9fSxmckNBOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHcoKX19LGhlOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHYoKX19LGh1OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHUoKX19LGh5OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHQoKX19LGlkOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHMoKX19LGlzOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHIoKX19LGl0OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHEoKX19LGphOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJHAoKX19LGthOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJG8oKX19LGtoOmZ1bmN0aW9uKCl7cmV0dXJuIGttKCl9LGttOmttLGtvOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJG0oKX19LGx0OmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGwoKX19LG1rOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGsoKX19LG1zOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGooKX19LG5sOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGkoKX19LG5vOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJGgoKX19LG90YTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRnKCl9fSxwbDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRlKCl9fSxwczpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRmKCl9fSxwdDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRkKCl9fSxydTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRjKCl9fSxzbDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRiKCl9fSxzdjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciRhKCl9fSx0YTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ5KCl9fSx0aDpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ4KCl9fSx0cjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ3KCl9fSx1YTpmdW5jdGlvbigpe3JldHVybiB1aygpfSx1azp1ayx1cjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ1KCl9fSx1ejpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQ0KCl9fSx2aTpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQzKCl9fSx5bzpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvcigpfX0semhDTjpmdW5jdGlvbigpe3JldHVybntsb2NhbGVFcnJvcjplcnJvciQyKCl9fSx6aFRXOmZ1bmN0aW9uKCl7cmV0dXJue2xvY2FsZUVycm9yOmVycm9yJDEoKX19fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO3ZhciBFcztjb25zdCBPcz1TeW1ib2woIlpvZE91dHB1dCIpLFBzPVN5bWJvbCgiWm9kSW5wdXQiKTtjbGFzcyAkWm9kUmVnaXN0cnl7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQoZSwuLi5zKXtjb25zdCBkPXNbMF07cmV0dXJuIHRoaXMuX21hcC5zZXQoZSxkKSxkJiYib2JqZWN0Ij09dHlwZW9mIGQmJiJpZCJpbiBkJiZ0aGlzLl9pZG1hcC5zZXQoZC5pZCxlKSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKGUpe2NvbnN0IHM9dGhpcy5fbWFwLmdldChlKTtyZXR1cm4gcyYmIm9iamVjdCI9PXR5cGVvZiBzJiYiaWQiaW4gcyYmdGhpcy5faWRtYXAuZGVsZXRlKHMuaWQpLHRoaXMuX21hcC5kZWxldGUoZSksdGhpc31nZXQoZSl7Y29uc3Qgcz1lLl96b2QucGFyZW50O2lmKHMpe2NvbnN0IGQ9ey4uLnRoaXMuZ2V0KHMpPz97fX07ZGVsZXRlIGQuaWQ7Y29uc3QgbT17Li4uZCwuLi50aGlzLl9tYXAuZ2V0KGUpfTtyZXR1cm4gT2JqZWN0LmtleXMobSkubGVuZ3RoP206dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KGUpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX19ZnVuY3Rpb24gcmVnaXN0cnkoKXtyZXR1cm4gbmV3ICRab2RSZWdpc3RyeX0oRXM9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsUmVnaXN0cnk/PyhFcy5fX3pvZF9nbG9iYWxSZWdpc3RyeT1yZWdpc3RyeSgpKTtjb25zdCBOcz1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5O2Z1bmN0aW9uIF9zdHJpbmcoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2NvZXJjZWRTdHJpbmcoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsY29lcmNlOiEwLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9lbWFpbChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2d1aWQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJndWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWR2NChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NCIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWR2NihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3V1aWR2NyhlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NyIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3VybChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9lbW9qaShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtb2ppIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX25hbm9pZChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jdWlkKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jdWlkMihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQyIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3VsaWQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1bGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3hpZChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InhpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9rc3VpZChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImtzdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2lwdjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2lwdjYoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX21hYyhlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im1hYyIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jaWRydjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfY2lkcnY2KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2Jhc2U2NChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9iYXNlNjR1cmwoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjR1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfZTE2NChlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImUxNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfand0KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiand0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgRHM9e0FueTpudWxsLE1pbnV0ZTotMSxTZWNvbmQ6MCxNaWxsaXNlY29uZDozLE1pY3Jvc2Vjb25kOjZ9O2Z1bmN0aW9uIF9pc29EYXRlVGltZShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGV0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pc29EYXRlKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pc29UaW1lKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pc29EdXJhdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX251bWJlcihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVja3M6W10sLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2NvZXJjZWROdW1iZXIoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY29lcmNlOiEwLGNoZWNrczpbXSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfaW50KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InNhZmVpbnQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9mbG9hdDMyKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0MzIiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9mbG9hdDY0KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9pbnQzMihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX3VpbnQzMihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50MzIiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9ib29sZWFuKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfY29lcmNlZEJvb2xlYW4oZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfYmlnaW50KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9jb2VyY2VkQmlnaW50KGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfaW50NjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF91aW50NjQoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoidWludDY0IiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfc3ltYm9sKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzeW1ib2wiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF91bmRlZmluZWQkMShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToidW5kZWZpbmVkIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfbnVsbCQxKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfYW55KGUpe3JldHVybiBuZXcgZSh7dHlwZToiYW55In0pfWZ1bmN0aW9uIF91bmtub3duKGUpe3JldHVybiBuZXcgZSh7dHlwZToidW5rbm93biJ9KX1mdW5jdGlvbiBfbmV2ZXIoZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im5ldmVyIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfdm9pZCQxKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ2b2lkIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfZGF0ZShlLHMpe3JldHVybiBuZXcgZSh7dHlwZToiZGF0ZSIsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX2NvZXJjZWREYXRlKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJkYXRlIixjb2VyY2U6ITAsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9ZnVuY3Rpb24gX25hbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibmFuIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfbHQoZSxzKXtyZXR1cm4gbmV3IFBvKHtjaGVjazoibGVzc190aGFuIiwuLi5ub3JtYWxpemVQYXJhbXMocyksdmFsdWU6ZSxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiBfbHRlKGUscyl7cmV0dXJuIG5ldyBQbyh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gX2d0KGUscyl7cmV0dXJuIG5ldyBObyh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gX2d0ZShlLHMpe3JldHVybiBuZXcgTm8oe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSx2YWx1ZTplLGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIF9wb3NpdGl2ZShlKXtyZXR1cm4gX2d0KDAsZSl9ZnVuY3Rpb24gX25lZ2F0aXZlKGUpe3JldHVybiBfbHQoMCxlKX1mdW5jdGlvbiBfbm9ucG9zaXRpdmUoZSl7cmV0dXJuIF9sdGUoMCxlKX1mdW5jdGlvbiBfbm9ubmVnYXRpdmUoZSl7cmV0dXJuIF9ndGUoMCxlKX1mdW5jdGlvbiBfbXVsdGlwbGVPZihlLHMpe3JldHVybiBuZXcgRG8oe2NoZWNrOiJtdWx0aXBsZV9vZiIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLHZhbHVlOmV9KX1mdW5jdGlvbiBfbWF4U2l6ZShlLHMpe3JldHVybiBuZXcgQW8oe2NoZWNrOiJtYXhfc2l6ZSIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLG1heGltdW06ZX0pfWZ1bmN0aW9uIF9taW5TaXplKGUscyl7cmV0dXJuIG5ldyBxbyh7Y2hlY2s6Im1pbl9zaXplIiwuLi5ub3JtYWxpemVQYXJhbXMocyksbWluaW11bTplfSl9ZnVuY3Rpb24gX3NpemUoZSxzKXtyZXR1cm4gbmV3IEZvKHtjaGVjazoic2l6ZV9lcXVhbHMiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxzaXplOmV9KX1mdW5jdGlvbiBfbWF4TGVuZ3RoKGUscyl7cmV0dXJuIG5ldyBCbyh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxtYXhpbXVtOmV9KX1mdW5jdGlvbiBfbWluTGVuZ3RoKGUscyl7cmV0dXJuIG5ldyBabyh7Y2hlY2s6Im1pbl9sZW5ndGgiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBfbGVuZ3RoKGUscyl7cmV0dXJuIG5ldyBNbyh7Y2hlY2s6Imxlbmd0aF9lcXVhbHMiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxsZW5ndGg6ZX0pfWZ1bmN0aW9uIF9yZWdleChlLHMpe3JldHVybiBuZXcgVm8oe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IiwuLi5ub3JtYWxpemVQYXJhbXMocykscGF0dGVybjplfSl9ZnVuY3Rpb24gX2xvd2VyY2FzZShlKXtyZXR1cm4gbmV3IEhvKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLm5vcm1hbGl6ZVBhcmFtcyhlKX0pfWZ1bmN0aW9uIF91cHBlcmNhc2UoZSl7cmV0dXJuIG5ldyBXbyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoidXBwZXJjYXNlIiwuLi5ub3JtYWxpemVQYXJhbXMoZSl9KX1mdW5jdGlvbiBfaW5jbHVkZXMoZSxzKXtyZXR1cm4gbmV3IEpvKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsLi4ubm9ybWFsaXplUGFyYW1zKHMpLGluY2x1ZGVzOmV9KX1mdW5jdGlvbiBfc3RhcnRzV2l0aChlLHMpe3JldHVybiBuZXcgS28oe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi5ub3JtYWxpemVQYXJhbXMocykscHJlZml4OmV9KX1mdW5jdGlvbiBfZW5kc1dpdGgoZSxzKXtyZXR1cm4gbmV3IEdvKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKSxzdWZmaXg6ZX0pfWZ1bmN0aW9uIF9wcm9wZXJ0eShlLHMsZCl7cmV0dXJuIG5ldyBYbyh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTplLHNjaGVtYTpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIF9taW1lKGUscyl7cmV0dXJuIG5ldyBZbyh7Y2hlY2s6Im1pbWVfdHlwZSIsbWltZTplLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIF9vdmVyd3JpdGUoZSl7cmV0dXJuIG5ldyBlYSh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6ZX0pfWZ1bmN0aW9uIF9ub3JtYWxpemUoZSl7cmV0dXJuIF9vdmVyd3JpdGUocz0+cy5ub3JtYWxpemUoZSkpfWZ1bmN0aW9uIF90cmltKCl7cmV0dXJuIF9vdmVyd3JpdGUoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIF90b0xvd2VyQ2FzZSgpe3JldHVybiBfb3ZlcndyaXRlKGU9PmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gX3RvVXBwZXJDYXNlKCl7cmV0dXJuIF9vdmVyd3JpdGUoZT0+ZS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBfc2x1Z2lmeSgpe3JldHVybiBfb3ZlcndyaXRlKGU9PnNsdWdpZnkoZSkpfWZ1bmN0aW9uIF9hcnJheShlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJhcnJheSIsZWxlbWVudDpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIF9maWxlKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJmaWxlIiwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBfY3VzdG9tKGUscyxkKXtjb25zdCBtPW5vcm1hbGl6ZVBhcmFtcyhkKTttLmFib3J0Pz8obS5hYm9ydD0hMCk7cmV0dXJuIG5ldyBlKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOnMsLi4ubX0pfWZ1bmN0aW9uIF9yZWZpbmUoZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIF9zdXBlclJlZmluZShlKXtjb25zdCBzPV9jaGVjayhkPT4oZC5hZGRJc3N1ZT1lPT57aWYoInN0cmluZyI9PXR5cGVvZiBlKWQuaXNzdWVzLnB1c2goaXNzdWUoZSxkLnZhbHVlLHMuX3pvZC5kZWYpKTtlbHNle2NvbnN0IG09ZTttLmZhdGFsJiYobS5jb250aW51ZT0hMSksbS5jb2RlPz8obS5jb2RlPSJjdXN0b20iKSxtLmlucHV0Pz8obS5pbnB1dD1kLnZhbHVlKSxtLmluc3Q/PyhtLmluc3Q9cyksbS5jb250aW51ZT8/KG0uY29udGludWU9IXMuX3pvZC5kZWYuYWJvcnQpLGQuaXNzdWVzLnB1c2goaXNzdWUobSkpfX0sZShkLnZhbHVlLGQpKSk7cmV0dXJuIHN9ZnVuY3Rpb24gX2NoZWNrKGUscyl7Y29uc3QgZD1uZXcgRW8oe2NoZWNrOiJjdXN0b20iLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pO3JldHVybiBkLl96b2QuY2hlY2s9ZSxkfWZ1bmN0aW9uIGRlc2NyaWJlJDEoZSl7Y29uc3Qgcz1uZXcgRW8oe2NoZWNrOiJkZXNjcmliZSJ9KTtyZXR1cm4gcy5fem9kLm9uYXR0YWNoPVtzPT57Y29uc3QgZD1Ocy5nZXQocyk/P3t9O05zLmFkZChzLHsuLi5kLGRlc2NyaXB0aW9uOmV9KX1dLHMuX3pvZC5jaGVjaz0oKT0+e30sc31mdW5jdGlvbiBtZXRhJDEoZSl7Y29uc3Qgcz1uZXcgRW8oe2NoZWNrOiJtZXRhIn0pO3JldHVybiBzLl96b2Qub25hdHRhY2g9W3M9Pntjb25zdCBkPU5zLmdldChzKT8/e307TnMuYWRkKHMsey4uLmQsLi4uZX0pfV0scy5fem9kLmNoZWNrPSgpPT57fSxzfWZ1bmN0aW9uIF9zdHJpbmdib29sKGUscyl7Y29uc3QgZD1ub3JtYWxpemVQYXJhbXMocyk7bGV0IG09ZC50cnV0aHk/P1sidHJ1ZSIsIjEiLCJ5ZXMiLCJvbiIsInkiLCJlbmFibGVkIl0saD1kLmZhbHN5Pz9bImZhbHNlIiwiMCIsIm5vIiwib2ZmIiwibiIsImRpc2FibGVkIl07InNlbnNpdGl2ZSIhPT1kLmNhc2UmJihtPW0ubWFwKGU9PiJzdHJpbmciPT10eXBlb2YgZT9lLnRvTG93ZXJDYXNlKCk6ZSksaD1oLm1hcChlPT4ic3RyaW5nIj09dHlwZW9mIGU/ZS50b0xvd2VyQ2FzZSgpOmUpKTtjb25zdCBnPW5ldyBTZXQobSkseD1uZXcgU2V0KGgpLCQ9ZS5Db2RlYz8/U3MsUz1lLkJvb2xlYW4/P0ZhLGo9bmV3ICQoe3R5cGU6InBpcGUiLGluOm5ldyhlLlN0cmluZz8/cmEpKHt0eXBlOiJzdHJpbmciLGVycm9yOmQuZXJyb3J9KSxvdXQ6bmV3IFMoe3R5cGU6ImJvb2xlYW4iLGVycm9yOmQuZXJyb3J9KSx0cmFuc2Zvcm06KGUscyk9PntsZXQgbT1lO3JldHVybiJzZW5zaXRpdmUiIT09ZC5jYXNlJiYobT1tLnRvTG93ZXJDYXNlKCkpLCEhZy5oYXMobSl8fCF4LmhhcyhtKSYmKHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLmcsLi4ueF0saW5wdXQ6cy52YWx1ZSxpbnN0OmosY29udGludWU6ITF9KSx7fSl9LHJldmVyc2VUcmFuc2Zvcm06KGUscyk9PiEwPT09ZT9tWzBdfHwidHJ1ZSI6aFswXXx8ImZhbHNlIixlcnJvcjpkLmVycm9yfSk7cmV0dXJuIGp9ZnVuY3Rpb24gX3N0cmluZ0Zvcm1hdChlLHMsZCxtPXt9KXtjb25zdCBoPW5vcm1hbGl6ZVBhcmFtcyhtKSxnPXsuLi5ub3JtYWxpemVQYXJhbXMobSksY2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0OnMsZm46ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZDplPT5kLnRlc3QoZSksLi4uaH07ZCBpbnN0YW5jZW9mIFJlZ0V4cCYmKGcucGF0dGVybj1kKTtyZXR1cm4gbmV3IGUoZyl9ZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbnRleHQoZSl7bGV0IHM9ZT8udGFyZ2V0Pz8iZHJhZnQtMjAyMC0xMiI7cmV0dXJuImRyYWZ0LTQiPT09cyYmKHM9ImRyYWZ0LTA0IiksImRyYWZ0LTciPT09cyYmKHM9ImRyYWZ0LTA3Iikse3Byb2Nlc3NvcnM6ZS5wcm9jZXNzb3JzPz97fSxtZXRhZGF0YVJlZ2lzdHJ5OmU/Lm1ldGFkYXRhPz9Ocyx0YXJnZXQ6cyx1bnJlcHJlc2VudGFibGU6ZT8udW5yZXByZXNlbnRhYmxlPz8idGhyb3ciLG92ZXJyaWRlOmU/Lm92ZXJyaWRlPz8oKCk9Pnt9KSxpbzplPy5pbz8/Im91dHB1dCIsY291bnRlcjowLHNlZW46bmV3IE1hcCxjeWNsZXM6ZT8uY3ljbGVzPz8icmVmIixyZXVzZWQ6ZT8ucmV1c2VkPz8iaW5saW5lIixleHRlcm5hbDplPy5leHRlcm5hbD8/dm9pZCAwfX1mdW5jdGlvbiBwcm9jZXNzKGUscyxkPXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgbTtjb25zdCBoPWUuX3pvZC5kZWYsZz1zLnNlZW4uZ2V0KGUpO2lmKGcpe2cuY291bnQrKztyZXR1cm4gZC5zY2hlbWFQYXRoLmluY2x1ZGVzKGUpJiYoZy5jeWNsZT1kLnBhdGgpLGcuc2NoZW1hfWNvbnN0IHg9e3NjaGVtYTp7fSxjb3VudDoxLGN5Y2xlOnZvaWQgMCxwYXRoOmQucGF0aH07cy5zZWVuLnNldChlLHgpO2NvbnN0ICQ9ZS5fem9kLnRvSlNPTlNjaGVtYT8uKCk7aWYoJCl4LnNjaGVtYT0kO2Vsc2V7Y29uc3QgbT17Li4uZCxzY2hlbWFQYXRoOlsuLi5kLnNjaGVtYVBhdGgsZV0scGF0aDpkLnBhdGh9O2lmKGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSllLl96b2QucHJvY2Vzc0pTT05TY2hlbWEocyx4LnNjaGVtYSxtKTtlbHNle2NvbnN0IGQ9eC5zY2hlbWEsZz1zLnByb2Nlc3NvcnNbaC50eXBlXTtpZighZyl0aHJvdyBuZXcgRXJyb3IoYFt0b0pTT05TY2hlbWFdOiBOb24tcmVwcmVzZW50YWJsZSB0eXBlIGVuY291bnRlcmVkOiAke2gudHlwZX1gKTtnKGUscyxkLG0pfWNvbnN0IGc9ZS5fem9kLnBhcmVudDtnJiYoeC5yZWZ8fCh4LnJlZj1nKSxwcm9jZXNzKGcscyxtKSxzLnNlZW4uZ2V0KGcpLmlzUGFyZW50PSEwKX1jb25zdCBTPXMubWV0YWRhdGFSZWdpc3RyeS5nZXQoZSk7UyYmT2JqZWN0LmFzc2lnbih4LnNjaGVtYSxTKSwiaW5wdXQiPT09cy5pbyYmaXNUcmFuc2Zvcm1pbmcoZSkmJihkZWxldGUgeC5zY2hlbWEuZXhhbXBsZXMsZGVsZXRlIHguc2NoZW1hLmRlZmF1bHQpLCJpbnB1dCI9PT1zLmlvJiZ4LnNjaGVtYS5fcHJlZmF1bHQmJigobT14LnNjaGVtYSkuZGVmYXVsdD8/KG0uZGVmYXVsdD14LnNjaGVtYS5fcHJlZmF1bHQpKSxkZWxldGUgeC5zY2hlbWEuX3ByZWZhdWx0O3JldHVybiBzLnNlZW4uZ2V0KGUpLnNjaGVtYX1mdW5jdGlvbiBleHRyYWN0RGVmcyhlLHMpe2NvbnN0IGQ9ZS5zZWVuLmdldChzKTtpZighZCl0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3QgbT1uZXcgTWFwO2Zvcihjb25zdCBzIG9mIGUuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IGQ9ZS5tZXRhZGF0YVJlZ2lzdHJ5LmdldChzWzBdKT8uaWQ7aWYoZCl7Y29uc3QgZT1tLmdldChkKTtpZihlJiZlIT09c1swXSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBzY2hlbWEgaWQgIiR7ZH0iIGRldGVjdGVkIGR1cmluZyBKU09OIFNjaGVtYSBjb252ZXJzaW9uLiBUd28gZGlmZmVyZW50IHNjaGVtYXMgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGlkIHdoZW4gY29udmVydGVkIHRvZ2V0aGVyLmApO20uc2V0KGQsc1swXSl9fWNvbnN0IGV4dHJhY3RUb0RlZj1zPT57aWYoc1sxXS5zY2hlbWEuJHJlZilyZXR1cm47Y29uc3QgbT1zWzFdLHtyZWY6aCxkZWZJZDpnfT0ocz0+e2NvbnN0IG09ImRyYWZ0LTIwMjAtMTIiPT09ZS50YXJnZXQ/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2lmKGUuZXh0ZXJuYWwpe2NvbnN0IGQ9ZS5leHRlcm5hbC5yZWdpc3RyeS5nZXQoc1swXSk/LmlkLGg9ZS5leHRlcm5hbC51cmk/PyhlPT5lKTtpZihkKXJldHVybntyZWY6aChkKX07Y29uc3QgZz1zWzFdLmRlZklkPz9zWzFdLnNjaGVtYS5pZD8/InNjaGVtYSIrZS5jb3VudGVyKys7cmV0dXJuIHNbMV0uZGVmSWQ9Zyx7ZGVmSWQ6ZyxyZWY6YCR7aCgiX19zaGFyZWQiKX0jLyR7bX0vJHtnfWB9fWlmKHNbMV09PT1kKXJldHVybntyZWY6IiMifTtjb25zdCBoPWAjLyR7bX0vYCxnPXNbMV0uc2NoZW1hLmlkPz8iX19zY2hlbWEiK2UuY291bnRlcisrO3JldHVybntkZWZJZDpnLHJlZjpoK2d9fSkocyk7bS5kZWY9ey4uLm0uc2NoZW1hfSxnJiYobS5kZWZJZD1nKTtjb25zdCB4PW0uc2NoZW1hO2Zvcihjb25zdCBlIGluIHgpZGVsZXRlIHhbZV07eC4kcmVmPWh9O2lmKCJ0aHJvdyI9PT1lLmN5Y2xlcylmb3IoY29uc3QgcyBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBlPXNbMV07aWYoZS5jeWNsZSl0aHJvdyBuZXcgRXJyb3IoYEN5Y2xlIGRldGVjdGVkOiAjLyR7ZS5jeWNsZT8uam9pbigiLyIpfS88cm9vdD5cblxuU2V0IHRoZSBcYGN5Y2xlc1xgIHBhcmFtZXRlciB0byBcYCJyZWYiXGAgdG8gcmVzb2x2ZSBjeWNsaWNhbCBzY2hlbWFzIHdpdGggZGVmcy5gKX1mb3IoY29uc3QgZCBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBtPWRbMV07aWYocz09PWRbMF0pe2V4dHJhY3RUb0RlZihkKTtjb250aW51ZX1pZihlLmV4dGVybmFsKXtjb25zdCBtPWUuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGRbMF0pPy5pZDtpZihzIT09ZFswXSYmbSl7ZXh0cmFjdFRvRGVmKGQpO2NvbnRpbnVlfX1jb25zdCBoPWUubWV0YWRhdGFSZWdpc3RyeS5nZXQoZFswXSk/LmlkO2g/ZXh0cmFjdFRvRGVmKGQpOihtLmN5Y2xlfHxtLmNvdW50PjEmJiJyZWYiPT09ZS5yZXVzZWQpJiZleHRyYWN0VG9EZWYoZCl9fWZ1bmN0aW9uIGZpbmFsaXplKGUscyl7Y29uc3QgZD1lLnNlZW4uZ2V0KHMpO2lmKCFkKXRocm93IG5ldyBFcnJvcigiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC4iKTtjb25zdCBmbGF0dGVuUmVmPXM9Pntjb25zdCBkPWUuc2Vlbi5nZXQocyk7aWYobnVsbD09PWQucmVmKXJldHVybjtjb25zdCBtPWQuZGVmPz9kLnNjaGVtYSxoPXsuLi5tfSxnPWQucmVmO2lmKGQucmVmPW51bGwsZyl7ZmxhdHRlblJlZihnKTtjb25zdCBkPWUuc2Vlbi5nZXQoZykseD1kLnNjaGVtYTsheC4kcmVmfHwiZHJhZnQtMDciIT09ZS50YXJnZXQmJiJkcmFmdC0wNCIhPT1lLnRhcmdldCYmIm9wZW5hcGktMy4wIiE9PWUudGFyZ2V0P09iamVjdC5hc3NpZ24obSx4KToobS5hbGxPZj1tLmFsbE9mPz9bXSxtLmFsbE9mLnB1c2goeCkpLE9iamVjdC5hc3NpZ24obSxoKTtpZihzLl96b2QucGFyZW50PT09Zylmb3IoY29uc3QgZSBpbiBtKSIkcmVmIiE9PWUmJiJhbGxPZiIhPT1lJiYoZSBpbiBofHxkZWxldGUgbVtlXSk7aWYoeC4kcmVmJiZkLmRlZilmb3IoY29uc3QgZSBpbiBtKSIkcmVmIiE9PWUmJiJhbGxPZiIhPT1lJiZlIGluIGQuZGVmJiZKU09OLnN0cmluZ2lmeShtW2VdKT09PUpTT04uc3RyaW5naWZ5KGQuZGVmW2VdKSYmZGVsZXRlIG1bZV19Y29uc3QgeD1zLl96b2QucGFyZW50O2lmKHgmJnghPT1nKXtmbGF0dGVuUmVmKHgpO2NvbnN0IHM9ZS5zZWVuLmdldCh4KTtpZihzPy5zY2hlbWEuJHJlZiYmKG0uJHJlZj1zLnNjaGVtYS4kcmVmLHMuZGVmKSlmb3IoY29uc3QgZSBpbiBtKSIkcmVmIiE9PWUmJiJhbGxPZiIhPT1lJiZlIGluIHMuZGVmJiZKU09OLnN0cmluZ2lmeShtW2VdKT09PUpTT04uc3RyaW5naWZ5KHMuZGVmW2VdKSYmZGVsZXRlIG1bZV19ZS5vdmVycmlkZSh7em9kU2NoZW1hOnMsanNvblNjaGVtYTptLHBhdGg6ZC5wYXRoPz9bXX0pfTtmb3IoY29uc3QgcyBvZlsuLi5lLnNlZW4uZW50cmllcygpXS5yZXZlcnNlKCkpZmxhdHRlblJlZihzWzBdKTtjb25zdCBtPXt9O2lmKCJkcmFmdC0yMDIwLTEyIj09PWUudGFyZ2V0P20uJHNjaGVtYT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiOiJkcmFmdC0wNyI9PT1lLnRhcmdldD9tLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI6ImRyYWZ0LTA0Ij09PWUudGFyZ2V0P20uJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIjplLnRhcmdldCxlLmV4dGVybmFsPy51cmkpe2NvbnN0IGQ9ZS5leHRlcm5hbC5yZWdpc3RyeS5nZXQocyk/LmlkO2lmKCFkKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYW4gYGlkYCBwcm9wZXJ0eSIpO20uJGlkPWUuZXh0ZXJuYWwudXJpKGQpfU9iamVjdC5hc3NpZ24obSxkLmRlZj8/ZC5zY2hlbWEpO2NvbnN0IGg9ZS5leHRlcm5hbD8uZGVmcz8/e307Zm9yKGNvbnN0IHMgb2YgZS5zZWVuLmVudHJpZXMoKSl7Y29uc3QgZT1zWzFdO2UuZGVmJiZlLmRlZklkJiYoaFtlLmRlZklkXT1lLmRlZil9ZS5leHRlcm5hbHx8T2JqZWN0LmtleXMoaCkubGVuZ3RoPjAmJigiZHJhZnQtMjAyMC0xMiI9PT1lLnRhcmdldD9tLiRkZWZzPWg6bS5kZWZpbml0aW9ucz1oKTt0cnl7Y29uc3QgZD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG0pKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsIn5zdGFuZGFyZCIse3ZhbHVlOnsuLi5zWyJ+c3RhbmRhcmQiXSxqc29uU2NoZW1hOntpbnB1dDpjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QocywiaW5wdXQiLGUucHJvY2Vzc29ycyksb3V0cHV0OmNyZWF0ZVN0YW5kYXJkSlNPTlNjaGVtYU1ldGhvZChzLCJvdXRwdXQiLGUucHJvY2Vzc29ycyl9fSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksZH1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uIil9fWZ1bmN0aW9uIGlzVHJhbnNmb3JtaW5nKGUscyl7Y29uc3QgZD1zPz97c2VlbjpuZXcgU2V0fTtpZihkLnNlZW4uaGFzKGUpKXJldHVybiExO2Quc2Vlbi5hZGQoZSk7Y29uc3QgbT1lLl96b2QuZGVmO2lmKCJ0cmFuc2Zvcm0iPT09bS50eXBlKXJldHVybiEwO2lmKCJhcnJheSI9PT1tLnR5cGUpcmV0dXJuIGlzVHJhbnNmb3JtaW5nKG0uZWxlbWVudCxkKTtpZigic2V0Ij09PW0udHlwZSlyZXR1cm4gaXNUcmFuc2Zvcm1pbmcobS52YWx1ZVR5cGUsZCk7aWYoImxhenkiPT09bS50eXBlKXJldHVybiBpc1RyYW5zZm9ybWluZyhtLmdldHRlcigpLGQpO2lmKCJwcm9taXNlIj09PW0udHlwZXx8Im9wdGlvbmFsIj09PW0udHlwZXx8Im5vbm9wdGlvbmFsIj09PW0udHlwZXx8Im51bGxhYmxlIj09PW0udHlwZXx8InJlYWRvbmx5Ij09PW0udHlwZXx8ImRlZmF1bHQiPT09bS50eXBlfHwicHJlZmF1bHQiPT09bS50eXBlKXJldHVybiBpc1RyYW5zZm9ybWluZyhtLmlubmVyVHlwZSxkKTtpZigiaW50ZXJzZWN0aW9uIj09PW0udHlwZSlyZXR1cm4gaXNUcmFuc2Zvcm1pbmcobS5sZWZ0LGQpfHxpc1RyYW5zZm9ybWluZyhtLnJpZ2h0LGQpO2lmKCJyZWNvcmQiPT09bS50eXBlfHwibWFwIj09PW0udHlwZSlyZXR1cm4gaXNUcmFuc2Zvcm1pbmcobS5rZXlUeXBlLGQpfHxpc1RyYW5zZm9ybWluZyhtLnZhbHVlVHlwZSxkKTtpZigicGlwZSI9PT1tLnR5cGUpcmV0dXJuIGlzVHJhbnNmb3JtaW5nKG0uaW4sZCl8fGlzVHJhbnNmb3JtaW5nKG0ub3V0LGQpO2lmKCJvYmplY3QiPT09bS50eXBlKXtmb3IoY29uc3QgZSBpbiBtLnNoYXBlKWlmKGlzVHJhbnNmb3JtaW5nKG0uc2hhcGVbZV0sZCkpcmV0dXJuITA7cmV0dXJuITF9aWYoInVuaW9uIj09PW0udHlwZSl7Zm9yKGNvbnN0IGUgb2YgbS5vcHRpb25zKWlmKGlzVHJhbnNmb3JtaW5nKGUsZCkpcmV0dXJuITA7cmV0dXJuITF9aWYoInR1cGxlIj09PW0udHlwZSl7Zm9yKGNvbnN0IGUgb2YgbS5pdGVtcylpZihpc1RyYW5zZm9ybWluZyhlLGQpKXJldHVybiEwO3JldHVybiEoIW0ucmVzdHx8IWlzVHJhbnNmb3JtaW5nKG0ucmVzdCxkKSl9cmV0dXJuITF9Y29uc3QgY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kPShlLHM9e30pPT5kPT57Y29uc3QgbT1pbml0aWFsaXplQ29udGV4dCh7Li4uZCxwcm9jZXNzb3JzOnN9KTtyZXR1cm4gcHJvY2VzcyhlLG0pLGV4dHJhY3REZWZzKG0sZSksZmluYWxpemUobSxlKX0sY3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kPShlLHMsZD17fSk9Pm09Pntjb25zdHtsaWJyYXJ5T3B0aW9uczpoLHRhcmdldDpnfT1tPz97fSx4PWluaXRpYWxpemVDb250ZXh0KHsuLi5oPz97fSx0YXJnZXQ6ZyxpbzpzLHByb2Nlc3NvcnM6ZH0pO3JldHVybiBwcm9jZXNzKGUseCksZXh0cmFjdERlZnMoeCxlKSxmaW5hbGl6ZSh4LGUpfSxVcz17Z3VpZDoidXVpZCIsdXJsOiJ1cmkiLGRhdGV0aW1lOiJkYXRlLXRpbWUiLGpzb25fc3RyaW5nOiJqc29uLXN0cmluZyIscmVnZXg6IiJ9LHN0cmluZ1Byb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQ7aC50eXBlPSJzdHJpbmciO2NvbnN0e21pbmltdW06ZyxtYXhpbXVtOngsZm9ybWF0OiQscGF0dGVybnM6Uyxjb250ZW50RW5jb2Rpbmc6an09ZS5fem9kLmJhZztpZigibnVtYmVyIj09dHlwZW9mIGcmJihoLm1pbkxlbmd0aD1nKSwibnVtYmVyIj09dHlwZW9mIHgmJihoLm1heExlbmd0aD14KSwkJiYoaC5mb3JtYXQ9VXNbJF0/PyQsIiI9PT1oLmZvcm1hdCYmZGVsZXRlIGguZm9ybWF0LCJ0aW1lIj09PSQmJmRlbGV0ZSBoLmZvcm1hdCksaiYmKGguY29udGVudEVuY29kaW5nPWopLFMmJlMuc2l6ZT4wKXtjb25zdCBlPVsuLi5TXTsxPT09ZS5sZW5ndGg/aC5wYXR0ZXJuPWVbMF0uc291cmNlOmUubGVuZ3RoPjEmJihoLmFsbE9mPVsuLi5lLm1hcChlPT4oey4uLiJkcmFmdC0wNyI9PT1zLnRhcmdldHx8ImRyYWZ0LTA0Ij09PXMudGFyZ2V0fHwib3BlbmFwaS0zLjAiPT09cy50YXJnZXQ/e3R5cGU6InN0cmluZyJ9Ont9LHBhdHRlcm46ZS5zb3VyY2V9KSldKX19LG51bWJlclByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQse21pbmltdW06ZyxtYXhpbXVtOngsZm9ybWF0OiQsbXVsdGlwbGVPZjpTLGV4Y2x1c2l2ZU1heGltdW06aixleGNsdXNpdmVNaW5pbXVtOnp9PWUuX3pvZC5iYWc7InN0cmluZyI9PXR5cGVvZiAkJiYkLmluY2x1ZGVzKCJpbnQiKT9oLnR5cGU9ImludGVnZXIiOmgudHlwZT0ibnVtYmVyIiwibnVtYmVyIj09dHlwZW9mIHomJigiZHJhZnQtMDQiPT09cy50YXJnZXR8fCJvcGVuYXBpLTMuMCI9PT1zLnRhcmdldD8oaC5taW5pbXVtPXosaC5leGNsdXNpdmVNaW5pbXVtPSEwKTpoLmV4Y2x1c2l2ZU1pbmltdW09eiksIm51bWJlciI9PXR5cGVvZiBnJiYoaC5taW5pbXVtPWcsIm51bWJlciI9PXR5cGVvZiB6JiYiZHJhZnQtMDQiIT09cy50YXJnZXQmJih6Pj1nP2RlbGV0ZSBoLm1pbmltdW06ZGVsZXRlIGguZXhjbHVzaXZlTWluaW11bSkpLCJudW1iZXIiPT10eXBlb2YgaiYmKCJkcmFmdC0wNCI9PT1zLnRhcmdldHx8Im9wZW5hcGktMy4wIj09PXMudGFyZ2V0PyhoLm1heGltdW09aixoLmV4Y2x1c2l2ZU1heGltdW09ITApOmguZXhjbHVzaXZlTWF4aW11bT1qKSwibnVtYmVyIj09dHlwZW9mIHgmJihoLm1heGltdW09eCwibnVtYmVyIj09dHlwZW9mIGomJiJkcmFmdC0wNCIhPT1zLnRhcmdldCYmKGo8PXg/ZGVsZXRlIGgubWF4aW11bTpkZWxldGUgaC5leGNsdXNpdmVNYXhpbXVtKSksIm51bWJlciI9PXR5cGVvZiBTJiYoaC5tdWx0aXBsZU9mPVMpfSxib29sZWFuUHJvY2Vzc29yPShlLHMsZCxtKT0+e2QudHlwZT0iYm9vbGVhbiJ9LGJpZ2ludFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJCaWdJbnQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHN5bWJvbFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxudWxsUHJvY2Vzc29yPShlLHMsZCxtKT0+eyJvcGVuYXBpLTMuMCI9PT1zLnRhcmdldD8oZC50eXBlPSJzdHJpbmciLGQubnVsbGFibGU9ITAsZC5lbnVtPVtudWxsXSk6ZC50eXBlPSJudWxsIn0sdW5kZWZpbmVkUHJvY2Vzc29yPShlLHMsZCxtKT0+e2lmKCJ0aHJvdyI9PT1zLnVucmVwcmVzZW50YWJsZSl0aHJvdyBuZXcgRXJyb3IoIlVuZGVmaW5lZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sdm9pZFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJWb2lkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxuZXZlclByb2Nlc3Nvcj0oZSxzLGQsbSk9PntkLm5vdD17fX0sYW55UHJvY2Vzc29yPShlLHMsZCxtKT0+e30sdW5rbm93blByb2Nlc3Nvcj0oZSxzLGQsbSk9Pnt9LGRhdGVQcm9jZXNzb3I9KGUscyxkLG0pPT57aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiRGF0ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sZW51bVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWdldEVudW1WYWx1ZXMoZS5fem9kLmRlZi5lbnRyaWVzKTtoLmV2ZXJ5KGU9PiJudW1iZXIiPT10eXBlb2YgZSkmJihkLnR5cGU9Im51bWJlciIpLGguZXZlcnkoZT0+InN0cmluZyI9PXR5cGVvZiBlKSYmKGQudHlwZT0ic3RyaW5nIiksZC5lbnVtPWh9LGxpdGVyYWxQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9W107Zm9yKGNvbnN0IGUgb2YgaC52YWx1ZXMpaWYodm9pZCAwPT09ZSl7aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiTGl0ZXJhbCBgdW5kZWZpbmVkYCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX1lbHNlIGlmKCJiaWdpbnQiPT10eXBlb2YgZSl7aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpO2cucHVzaChOdW1iZXIoZSkpfWVsc2UgZy5wdXNoKGUpO2lmKDA9PT1nLmxlbmd0aCk7ZWxzZSBpZigxPT09Zy5sZW5ndGgpe2NvbnN0IGU9Z1swXTtkLnR5cGU9bnVsbD09PWU/Im51bGwiOnR5cGVvZiBlLCJkcmFmdC0wNCI9PT1zLnRhcmdldHx8Im9wZW5hcGktMy4wIj09PXMudGFyZ2V0P2QuZW51bT1bZV06ZC5jb25zdD1lfWVsc2UgZy5ldmVyeShlPT4ibnVtYmVyIj09dHlwZW9mIGUpJiYoZC50eXBlPSJudW1iZXIiKSxnLmV2ZXJ5KGU9PiJzdHJpbmciPT10eXBlb2YgZSkmJihkLnR5cGU9InN0cmluZyIpLGcuZXZlcnkoZT0+ImJvb2xlYW4iPT10eXBlb2YgZSkmJihkLnR5cGU9ImJvb2xlYW4iKSxnLmV2ZXJ5KGU9Pm51bGw9PT1lKSYmKGQudHlwZT0ibnVsbCIpLGQuZW51bT1nfSxuYW5Qcm9jZXNzb3I9KGUscyxkLG0pPT57aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiTmFOIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx0ZW1wbGF0ZUxpdGVyYWxQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1kLGc9ZS5fem9kLnBhdHRlcm47aWYoIWcpdGhyb3cgbmV3IEVycm9yKCJQYXR0ZXJuIG5vdCBmb3VuZCBpbiB0ZW1wbGF0ZSBsaXRlcmFsIik7aC50eXBlPSJzdHJpbmciLGgucGF0dGVybj1nLnNvdXJjZX0sZmlsZVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQsZz17dHlwZToic3RyaW5nIixmb3JtYXQ6ImJpbmFyeSIsY29udGVudEVuY29kaW5nOiJiaW5hcnkifSx7bWluaW11bTp4LG1heGltdW06JCxtaW1lOlN9PWUuX3pvZC5iYWc7dm9pZCAwIT09eCYmKGcubWluTGVuZ3RoPXgpLHZvaWQgMCE9PSQmJihnLm1heExlbmd0aD0kKSxTPzE9PT1TLmxlbmd0aD8oZy5jb250ZW50TWVkaWFUeXBlPVNbMF0sT2JqZWN0LmFzc2lnbihoLGcpKTooT2JqZWN0LmFzc2lnbihoLGcpLGguYW55T2Y9Uy5tYXAoZT0+KHtjb250ZW50TWVkaWFUeXBlOmV9KSkpOk9iamVjdC5hc3NpZ24oaCxnKX0sc3VjY2Vzc1Byb2Nlc3Nvcj0oZSxzLGQsbSk9PntkLnR5cGU9ImJvb2xlYW4ifSxjdXN0b21Qcm9jZXNzb3I9KGUscyxkLG0pPT57aWYoInRocm93Ij09PXMudW5yZXByZXNlbnRhYmxlKXRocm93IG5ldyBFcnJvcigiQ3VzdG9tIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxmdW5jdGlvblByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJGdW5jdGlvbiB0eXBlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sdHJhbnNmb3JtUHJvY2Vzc29yPShlLHMsZCxtKT0+e2lmKCJ0aHJvdyI9PT1zLnVucmVwcmVzZW50YWJsZSl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zZm9ybXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LG1hcFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHNldFByb2Nlc3Nvcj0oZSxzLGQsbSk9PntpZigidGhyb3ciPT09cy51bnJlcHJlc2VudGFibGUpdGhyb3cgbmV3IEVycm9yKCJTZXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGFycmF5UHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZCxnPWUuX3pvZC5kZWYse21pbmltdW06eCxtYXhpbXVtOiR9PWUuX3pvZC5iYWc7Im51bWJlciI9PXR5cGVvZiB4JiYoaC5taW5JdGVtcz14KSwibnVtYmVyIj09dHlwZW9mICQmJihoLm1heEl0ZW1zPSQpLGgudHlwZT0iYXJyYXkiLGguaXRlbXM9cHJvY2VzcyhnLmVsZW1lbnQscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsIml0ZW1zIl19KX0sb2JqZWN0UHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZCxnPWUuX3pvZC5kZWY7aC50eXBlPSJvYmplY3QiLGgucHJvcGVydGllcz17fTtjb25zdCB4PWcuc2hhcGU7Zm9yKGNvbnN0IGUgaW4geCloLnByb3BlcnRpZXNbZV09cHJvY2Vzcyh4W2VdLHMsey4uLm0scGF0aDpbLi4ubS5wYXRoLCJwcm9wZXJ0aWVzIixlXX0pO2NvbnN0ICQ9bmV3IFNldChPYmplY3Qua2V5cyh4KSksUz1uZXcgU2V0KFsuLi4kXS5maWx0ZXIoZT0+e2NvbnN0IGQ9Zy5zaGFwZVtlXS5fem9kO3JldHVybiJpbnB1dCI9PT1zLmlvP3ZvaWQgMD09PWQub3B0aW46dm9pZCAwPT09ZC5vcHRvdXR9KSk7Uy5zaXplPjAmJihoLnJlcXVpcmVkPUFycmF5LmZyb20oUykpLCJuZXZlciI9PT1nLmNhdGNoYWxsPy5fem9kLmRlZi50eXBlP2guYWRkaXRpb25hbFByb3BlcnRpZXM9ITE6Zy5jYXRjaGFsbD9nLmNhdGNoYWxsJiYoaC5hZGRpdGlvbmFsUHJvcGVydGllcz1wcm9jZXNzKGcuY2F0Y2hhbGwscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIl19KSk6Im91dHB1dCI9PT1zLmlvJiYoaC5hZGRpdGlvbmFsUHJvcGVydGllcz0hMSl9LHVuaW9uUHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZS5fem9kLmRlZixnPSExPT09aC5pbmNsdXNpdmUseD1oLm9wdGlvbnMubWFwKChlLGQpPT5wcm9jZXNzKGUscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsZz8ib25lT2YiOiJhbnlPZiIsZF19KSk7Zz9kLm9uZU9mPXg6ZC5hbnlPZj14fSxpbnRlcnNlY3Rpb25Qcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9cHJvY2VzcyhoLmxlZnQscyx7Li4ubSxwYXRoOlsuLi5tLnBhdGgsImFsbE9mIiwwXX0pLHg9cHJvY2VzcyhoLnJpZ2h0LHMsey4uLm0scGF0aDpbLi4ubS5wYXRoLCJhbGxPZiIsMV19KSxpc1NpbXBsZUludGVyc2VjdGlvbj1lPT4iYWxsT2YiaW4gZSYmMT09PU9iamVjdC5rZXlzKGUpLmxlbmd0aCwkPVsuLi5pc1NpbXBsZUludGVyc2VjdGlvbihnKT9nLmFsbE9mOltnXSwuLi5pc1NpbXBsZUludGVyc2VjdGlvbih4KT94LmFsbE9mOlt4XV07ZC5hbGxPZj0kfSx0dXBsZVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWQsZz1lLl96b2QuZGVmO2gudHlwZT0iYXJyYXkiO2NvbnN0IHg9ImRyYWZ0LTIwMjAtMTIiPT09cy50YXJnZXQ/InByZWZpeEl0ZW1zIjoiaXRlbXMiLCQ9ImRyYWZ0LTIwMjAtMTIiPT09cy50YXJnZXR8fCJvcGVuYXBpLTMuMCI9PT1zLnRhcmdldD8iaXRlbXMiOiJhZGRpdGlvbmFsSXRlbXMiLFM9Zy5pdGVtcy5tYXAoKGUsZCk9PnByb2Nlc3MoZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCx4LGRdfSkpLGo9Zy5yZXN0P3Byb2Nlc3MoZy5yZXN0LHMsey4uLm0scGF0aDpbLi4ubS5wYXRoLCQsLi4uIm9wZW5hcGktMy4wIj09PXMudGFyZ2V0P1tnLml0ZW1zLmxlbmd0aF06W11dfSk6bnVsbDsiZHJhZnQtMjAyMC0xMiI9PT1zLnRhcmdldD8oaC5wcmVmaXhJdGVtcz1TLGomJihoLml0ZW1zPWopKToib3BlbmFwaS0zLjAiPT09cy50YXJnZXQ/KGguaXRlbXM9e2FueU9mOlN9LGomJmguaXRlbXMuYW55T2YucHVzaChqKSxoLm1pbkl0ZW1zPVMubGVuZ3RoLGp8fChoLm1heEl0ZW1zPVMubGVuZ3RoKSk6KGguaXRlbXM9UyxqJiYoaC5hZGRpdGlvbmFsSXRlbXM9aikpO2NvbnN0e21pbmltdW06eixtYXhpbXVtOkl9PWUuX3pvZC5iYWc7Im51bWJlciI9PXR5cGVvZiB6JiYoaC5taW5JdGVtcz16KSwibnVtYmVyIj09dHlwZW9mIEkmJihoLm1heEl0ZW1zPUkpfSxyZWNvcmRQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1kLGc9ZS5fem9kLmRlZjtoLnR5cGU9Im9iamVjdCI7Y29uc3QgeD1nLmtleVR5cGUsJD14Ll96b2QuYmFnLFM9JD8ucGF0dGVybnM7aWYoImxvb3NlIj09PWcubW9kZSYmUyYmUy5zaXplPjApe2NvbnN0IGU9cHJvY2VzcyhnLnZhbHVlVHlwZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCwicGF0dGVyblByb3BlcnRpZXMiLCIqIl19KTtoLnBhdHRlcm5Qcm9wZXJ0aWVzPXt9O2Zvcihjb25zdCBzIG9mIFMpaC5wYXR0ZXJuUHJvcGVydGllc1tzLnNvdXJjZV09ZX1lbHNlImRyYWZ0LTA3IiE9PXMudGFyZ2V0JiYiZHJhZnQtMjAyMC0xMiIhPT1zLnRhcmdldHx8KGgucHJvcGVydHlOYW1lcz1wcm9jZXNzKGcua2V5VHlwZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCwicHJvcGVydHlOYW1lcyJdfSkpLGguYWRkaXRpb25hbFByb3BlcnRpZXM9cHJvY2VzcyhnLnZhbHVlVHlwZSxzLHsuLi5tLHBhdGg6Wy4uLm0ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pO2NvbnN0IGo9eC5fem9kLnZhbHVlcztpZihqKXtjb25zdCBlPVsuLi5qXS5maWx0ZXIoZT0+InN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGUpO2UubGVuZ3RoPjAmJihoLnJlcXVpcmVkPWUpfX0sbnVsbGFibGVQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9cHJvY2VzcyhoLmlubmVyVHlwZSxzLG0pLHg9cy5zZWVuLmdldChlKTsib3BlbmFwaS0zLjAiPT09cy50YXJnZXQ/KHgucmVmPWguaW5uZXJUeXBlLGQubnVsbGFibGU9ITApOmQuYW55T2Y9W2cse3R5cGU6Im51bGwifV19LG5vbm9wdGlvbmFsUHJvY2Vzc29yPShlLHMsZCxtKT0+e2NvbnN0IGg9ZS5fem9kLmRlZjtwcm9jZXNzKGguaW5uZXJUeXBlLHMsbSk7cy5zZWVuLmdldChlKS5yZWY9aC5pbm5lclR5cGV9LGRlZmF1bHRQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZSxkLmRlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoLmRlZmF1bHRWYWx1ZSkpfSxwcmVmYXVsdFByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWUuX3pvZC5kZWY7cHJvY2VzcyhoLmlubmVyVHlwZSxzLG0pO3Muc2Vlbi5nZXQoZSkucmVmPWguaW5uZXJUeXBlLCJpbnB1dCI9PT1zLmlvJiYoZC5fcHJlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoLmRlZmF1bHRWYWx1ZSkpKX0sY2F0Y2hQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtsZXQgZztzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZTt0cnl7Zz1oLmNhdGNoVmFsdWUodm9pZCAwKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgY2F0Y2ggdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEpTT04gU2NoZW1hIil9ZC5kZWZhdWx0PWd9LHBpcGVQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmLGc9ImlucHV0Ij09PXMuaW8/InRyYW5zZm9ybSI9PT1oLmluLl96b2QuZGVmLnR5cGU/aC5vdXQ6aC5pbjpoLm91dDtwcm9jZXNzKGcscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1nfSxyZWFkb25seVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWUuX3pvZC5kZWY7cHJvY2VzcyhoLmlubmVyVHlwZSxzLG0pO3Muc2Vlbi5nZXQoZSkucmVmPWguaW5uZXJUeXBlLGQucmVhZE9ubHk9ITB9LHByb21pc2VQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZX0sb3B0aW9uYWxQcm9jZXNzb3I9KGUscyxkLG0pPT57Y29uc3QgaD1lLl96b2QuZGVmO3Byb2Nlc3MoaC5pbm5lclR5cGUscyxtKTtzLnNlZW4uZ2V0KGUpLnJlZj1oLmlubmVyVHlwZX0sbGF6eVByb2Nlc3Nvcj0oZSxzLGQsbSk9Pntjb25zdCBoPWUuX3pvZC5pbm5lclR5cGU7cHJvY2VzcyhoLHMsbSk7cy5zZWVuLmdldChlKS5yZWY9aH0sTHM9e3N0cmluZzpzdHJpbmdQcm9jZXNzb3IsbnVtYmVyOm51bWJlclByb2Nlc3Nvcixib29sZWFuOmJvb2xlYW5Qcm9jZXNzb3IsYmlnaW50OmJpZ2ludFByb2Nlc3NvcixzeW1ib2w6c3ltYm9sUHJvY2Vzc29yLG51bGw6bnVsbFByb2Nlc3Nvcix1bmRlZmluZWQ6dW5kZWZpbmVkUHJvY2Vzc29yLHZvaWQ6dm9pZFByb2Nlc3NvcixuZXZlcjpuZXZlclByb2Nlc3Nvcixhbnk6YW55UHJvY2Vzc29yLHVua25vd246dW5rbm93blByb2Nlc3NvcixkYXRlOmRhdGVQcm9jZXNzb3IsZW51bTplbnVtUHJvY2Vzc29yLGxpdGVyYWw6bGl0ZXJhbFByb2Nlc3NvcixuYW46bmFuUHJvY2Vzc29yLHRlbXBsYXRlX2xpdGVyYWw6dGVtcGxhdGVMaXRlcmFsUHJvY2Vzc29yLGZpbGU6ZmlsZVByb2Nlc3NvcixzdWNjZXNzOnN1Y2Nlc3NQcm9jZXNzb3IsY3VzdG9tOmN1c3RvbVByb2Nlc3NvcixmdW5jdGlvbjpmdW5jdGlvblByb2Nlc3Nvcix0cmFuc2Zvcm06dHJhbnNmb3JtUHJvY2Vzc29yLG1hcDptYXBQcm9jZXNzb3Isc2V0OnNldFByb2Nlc3NvcixhcnJheTphcnJheVByb2Nlc3NvcixvYmplY3Q6b2JqZWN0UHJvY2Vzc29yLHVuaW9uOnVuaW9uUHJvY2Vzc29yLGludGVyc2VjdGlvbjppbnRlcnNlY3Rpb25Qcm9jZXNzb3IsdHVwbGU6dHVwbGVQcm9jZXNzb3IscmVjb3JkOnJlY29yZFByb2Nlc3NvcixudWxsYWJsZTpudWxsYWJsZVByb2Nlc3Nvcixub25vcHRpb25hbDpub25vcHRpb25hbFByb2Nlc3NvcixkZWZhdWx0OmRlZmF1bHRQcm9jZXNzb3IscHJlZmF1bHQ6cHJlZmF1bHRQcm9jZXNzb3IsY2F0Y2g6Y2F0Y2hQcm9jZXNzb3IscGlwZTpwaXBlUHJvY2Vzc29yLHJlYWRvbmx5OnJlYWRvbmx5UHJvY2Vzc29yLHByb21pc2U6cHJvbWlzZVByb2Nlc3NvcixvcHRpb25hbDpvcHRpb25hbFByb2Nlc3NvcixsYXp5OmxhenlQcm9jZXNzb3J9O2Z1bmN0aW9uIHRvSlNPTlNjaGVtYShlLHMpe2lmKCJfaWRtYXAiaW4gZSl7Y29uc3QgZD1lLG09aW5pdGlhbGl6ZUNvbnRleHQoey4uLnMscHJvY2Vzc29yczpMc30pLGg9e307Zm9yKGNvbnN0IGUgb2YgZC5faWRtYXAuZW50cmllcygpKXtjb25zdFtzLGRdPWU7cHJvY2VzcyhkLG0pfWNvbnN0IGc9e30seD17cmVnaXN0cnk6ZCx1cmk6cz8udXJpLGRlZnM6aH07bS5leHRlcm5hbD14O2Zvcihjb25zdCBlIG9mIGQuX2lkbWFwLmVudHJpZXMoKSl7Y29uc3RbcyxkXT1lO2V4dHJhY3REZWZzKG0sZCksZ1tzXT1maW5hbGl6ZShtLGQpfWlmKE9iamVjdC5rZXlzKGgpLmxlbmd0aD4wKXtjb25zdCBlPSJkcmFmdC0yMDIwLTEyIj09PW0udGFyZ2V0PyIkZGVmcyI6ImRlZmluaXRpb25zIjtnLl9fc2hhcmVkPXtbZV06aH19cmV0dXJue3NjaGVtYXM6Z319Y29uc3QgZD1pbml0aWFsaXplQ29udGV4dCh7Li4ucyxwcm9jZXNzb3JzOkxzfSk7cmV0dXJuIHByb2Nlc3MoZSxkKSxleHRyYWN0RGVmcyhkLGUpLGZpbmFsaXplKGQsZSl9Y29uc3QgQXM9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHFzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55OkhhLCRab2RBcnJheTpYYSwkWm9kQXN5bmNFcnJvcjokWm9kQXN5bmNFcnJvciwkWm9kQmFzZTY0OkVhLCRab2RCYXNlNjRVUkw6T2EsJFpvZEJpZ0ludDpCYSwkWm9kQmlnSW50Rm9ybWF0OlphLCRab2RCb29sZWFuOkZhLCRab2RDSURSdjQ6VGEsJFpvZENJRFJ2NjpSYSwkWm9kQ1VJRDptYSwkWm9kQ1VJRDI6ZmEsJFpvZENhdGNoOnhzLCRab2RDaGVjazpFbywkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6TG8sJFpvZENoZWNrRW5kc1dpdGg6R28sJFpvZENoZWNrR3JlYXRlclRoYW46Tm8sJFpvZENoZWNrSW5jbHVkZXM6Sm8sJFpvZENoZWNrTGVuZ3RoRXF1YWxzOk1vLCRab2RDaGVja0xlc3NUaGFuOlBvLCRab2RDaGVja0xvd2VyQ2FzZTpIbywkWm9kQ2hlY2tNYXhMZW5ndGg6Qm8sJFpvZENoZWNrTWF4U2l6ZTpBbywkWm9kQ2hlY2tNaW1lVHlwZTpZbywkWm9kQ2hlY2tNaW5MZW5ndGg6Wm8sJFpvZENoZWNrTWluU2l6ZTpxbywkWm9kQ2hlY2tNdWx0aXBsZU9mOkRvLCRab2RDaGVja051bWJlckZvcm1hdDpVbywkWm9kQ2hlY2tPdmVyd3JpdGU6ZWEsJFpvZENoZWNrUHJvcGVydHk6WG8sJFpvZENoZWNrUmVnZXg6Vm8sJFpvZENoZWNrU2l6ZUVxdWFsczpGbywkWm9kQ2hlY2tTdGFydHNXaXRoOktvLCRab2RDaGVja1N0cmluZ0Zvcm1hdDpRbywkWm9kQ2hlY2tVcHBlckNhc2U6V28sJFpvZENvZGVjOlNzLCRab2RDdXN0b206VHMsJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpMYSwkWm9kRGF0ZTpHYSwkWm9kRGVmYXVsdDp2cywkWm9kRGlzY3JpbWluYXRlZFVuaW9uOnJzLCRab2RFMTY0OlBhLCRab2RFbWFpbDpsYSwkWm9kRW1vamk6dWEsJFpvZEVuY29kZUVycm9yOiRab2RFbmNvZGVFcnJvciwkWm9kRW51bTp1cywkWm9kRXJyb3I6anIsJFpvZEV4YWN0T3B0aW9uYWw6aHMsJFpvZEZpbGU6cHMsJFpvZEZ1bmN0aW9uOnpzLCRab2RHVUlEOmFhLCRab2RJUHY0OmphLCRab2RJUHY2OnphLCRab2RJU09EYXRlOnhhLCRab2RJU09EYXRlVGltZTpfYSwkWm9kSVNPRHVyYXRpb246JGEsJFpvZElTT1RpbWU6d2EsJFpvZEludGVyc2VjdGlvbjpvcywkWm9kSldUOlVhLCRab2RLU1VJRDp2YSwkWm9kTGF6eTpDcywkWm9kTGl0ZXJhbDpkcywkWm9kTUFDOkNhLCRab2RNYXA6bHMsJFpvZE5hTjp3cywkWm9kTmFub0lEOnBhLCRab2ROZXZlcjpKYSwkWm9kTm9uT3B0aW9uYWw6YnMsJFpvZE51bGw6VmEsJFpvZE51bGxhYmxlOmdzLCRab2ROdW1iZXI6QWEsJFpvZE51bWJlckZvcm1hdDpxYSwkWm9kT2JqZWN0OllhLCRab2RPYmplY3RKSVQ6ZXMsJFpvZE9wdGlvbmFsOmZzLCRab2RQaXBlOiRzLCRab2RQcmVmYXVsdDp5cywkWm9kUHJvbWlzZTpJcywkWm9kUmVhZG9ubHk6a3MsJFpvZFJlYWxFcnJvcjp6ciwkWm9kUmVjb3JkOnNzLCRab2RSZWdpc3RyeTokWm9kUmVnaXN0cnksJFpvZFNldDpjcywkWm9kU3RyaW5nOnJhLCRab2RTdHJpbmdGb3JtYXQ6b2EsJFpvZFN1Y2Nlc3M6X3MsJFpvZFN5bWJvbDpNYSwkWm9kVGVtcGxhdGVMaXRlcmFsOmpzLCRab2RUcmFuc2Zvcm06bXMsJFpvZFR1cGxlOmFzLCRab2RUeXBlOm5hLCRab2RVTElEOmhhLCRab2RVUkw6Y2EsJFpvZFVVSUQ6c2EsJFpvZFVuZGVmaW5lZDpRYSwkWm9kVW5pb246dHMsJFpvZFVua25vd246V2EsJFpvZFZvaWQ6S2EsJFpvZFhJRDpnYSwkWm9kWG9yOm5zLCRicmFuZDpnciwkY29uc3RydWN0b3I6JGNvbnN0cnVjdG9yLCRpbnB1dDpQcywkb3V0cHV0Ok9zLERvYzpEb2MsSlNPTlNjaGVtYTpBcyxKU09OU2NoZW1hR2VuZXJhdG9yOmNsYXNze2dldCBtZXRhZGF0YVJlZ2lzdHJ5KCl7cmV0dXJuIHRoaXMuY3R4Lm1ldGFkYXRhUmVnaXN0cnl9Z2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmN0eC50YXJnZXR9Z2V0IHVucmVwcmVzZW50YWJsZSgpe3JldHVybiB0aGlzLmN0eC51bnJlcHJlc2VudGFibGV9Z2V0IG92ZXJyaWRlKCl7cmV0dXJuIHRoaXMuY3R4Lm92ZXJyaWRlfWdldCBpbygpe3JldHVybiB0aGlzLmN0eC5pb31nZXQgY291bnRlcigpe3JldHVybiB0aGlzLmN0eC5jb3VudGVyfXNldCBjb3VudGVyKGUpe3RoaXMuY3R4LmNvdW50ZXI9ZX1nZXQgc2Vlbigpe3JldHVybiB0aGlzLmN0eC5zZWVufWNvbnN0cnVjdG9yKGUpe2xldCBzPWU/LnRhcmdldD8/ImRyYWZ0LTIwMjAtMTIiOyJkcmFmdC00Ij09PXMmJihzPSJkcmFmdC0wNCIpLCJkcmFmdC03Ij09PXMmJihzPSJkcmFmdC0wNyIpLHRoaXMuY3R4PWluaXRpYWxpemVDb250ZXh0KHtwcm9jZXNzb3JzOkxzLHRhcmdldDpzLC4uLmU/Lm1ldGFkYXRhJiZ7bWV0YWRhdGE6ZS5tZXRhZGF0YX0sLi4uZT8udW5yZXByZXNlbnRhYmxlJiZ7dW5yZXByZXNlbnRhYmxlOmUudW5yZXByZXNlbnRhYmxlfSwuLi5lPy5vdmVycmlkZSYme292ZXJyaWRlOmUub3ZlcnJpZGV9LC4uLmU/LmlvJiZ7aW86ZS5pb319KX1wcm9jZXNzKGUscz17cGF0aDpbXSxzY2hlbWFQYXRoOltdfSl7cmV0dXJuIHByb2Nlc3MoZSx0aGlzLmN0eCxzKX1lbWl0KGUscyl7cyYmKHMuY3ljbGVzJiYodGhpcy5jdHguY3ljbGVzPXMuY3ljbGVzKSxzLnJldXNlZCYmKHRoaXMuY3R4LnJldXNlZD1zLnJldXNlZCkscy5leHRlcm5hbCYmKHRoaXMuY3R4LmV4dGVybmFsPXMuZXh0ZXJuYWwpKSxleHRyYWN0RGVmcyh0aGlzLmN0eCxlKTtjb25zdCBkPWZpbmFsaXplKHRoaXMuY3R4LGUpLHsifnN0YW5kYXJkIjptLC4uLmh9PWQ7cmV0dXJuIGh9fSxORVZFUjpocixUaW1lUHJlY2lzaW9uOkRzLF9hbnk6X2FueSxfYXJyYXk6X2FycmF5LF9iYXNlNjQ6X2Jhc2U2NCxfYmFzZTY0dXJsOl9iYXNlNjR1cmwsX2JpZ2ludDpfYmlnaW50LF9ib29sZWFuOl9ib29sZWFuLF9jYXRjaDpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOnMsY2F0Y2hWYWx1ZToiZnVuY3Rpb24iPT10eXBlb2YgZD9kOigpPT5kfSl9LF9jaGVjazpfY2hlY2ssX2NpZHJ2NDpfY2lkcnY0LF9jaWRydjY6X2NpZHJ2NixfY29lcmNlZEJpZ2ludDpfY29lcmNlZEJpZ2ludCxfY29lcmNlZEJvb2xlYW46X2NvZXJjZWRCb29sZWFuLF9jb2VyY2VkRGF0ZTpfY29lcmNlZERhdGUsX2NvZXJjZWROdW1iZXI6X2NvZXJjZWROdW1iZXIsX2NvZXJjZWRTdHJpbmc6X2NvZXJjZWRTdHJpbmcsX2N1aWQ6X2N1aWQsX2N1aWQyOl9jdWlkMixfY3VzdG9tOl9jdXN0b20sX2RhdGU6X2RhdGUsX2RlY29kZTpfZGVjb2RlLF9kZWNvZGVBc3luYzpfZGVjb2RlQXN5bmMsX2RlZmF1bHQ6ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOnMsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkP2QoKTpzaGFsbG93Q2xvbmUoZCl9fSl9LF9kaXNjcmltaW5hdGVkVW5pb246ZnVuY3Rpb24oZSxzLGQsbSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpkLGRpc2NyaW1pbmF0b3I6cywuLi5ub3JtYWxpemVQYXJhbXMobSl9KX0sX2UxNjQ6X2UxNjQsX2VtYWlsOl9lbWFpbCxfZW1vamk6X2Vtb2ppLF9lbmNvZGU6X2VuY29kZSxfZW5jb2RlQXN5bmM6X2VuY29kZUFzeW5jLF9lbmRzV2l0aDpfZW5kc1dpdGgsX2VudW06ZnVuY3Rpb24oZSxzLGQpe2NvbnN0IG09QXJyYXkuaXNBcnJheShzKT9PYmplY3QuZnJvbUVudHJpZXMocy5tYXAoZT0+W2UsZV0pKTpzO3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczptLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfZmlsZTpfZmlsZSxfZmxvYXQzMjpfZmxvYXQzMixfZmxvYXQ2NDpfZmxvYXQ2NCxfZ3Q6X2d0LF9ndGU6X2d0ZSxfZ3VpZDpfZ3VpZCxfaW5jbHVkZXM6X2luY2x1ZGVzLF9pbnQ6X2ludCxfaW50MzI6X2ludDMyLF9pbnQ2NDpfaW50NjQsX2ludGVyc2VjdGlvbjpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJpbnRlcnNlY3Rpb24iLGxlZnQ6cyxyaWdodDpkfSl9LF9pcHY0Ol9pcHY0LF9pcHY2Ol9pcHY2LF9pc29EYXRlOl9pc29EYXRlLF9pc29EYXRlVGltZTpfaXNvRGF0ZVRpbWUsX2lzb0R1cmF0aW9uOl9pc29EdXJhdGlvbixfaXNvVGltZTpfaXNvVGltZSxfand0Ol9qd3QsX2tzdWlkOl9rc3VpZCxfbGF6eTpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibGF6eSIsZ2V0dGVyOnN9KX0sX2xlbmd0aDpfbGVuZ3RoLF9saXRlcmFsOmZ1bmN0aW9uKGUscyxkKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHMpP3M6W3NdLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfbG93ZXJjYXNlOl9sb3dlcmNhc2UsX2x0Ol9sdCxfbHRlOl9sdGUsX21hYzpfbWFjLF9tYXA6ZnVuY3Rpb24oZSxzLGQsbSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJtYXAiLGtleVR5cGU6cyx2YWx1ZVR5cGU6ZCwuLi5ub3JtYWxpemVQYXJhbXMobSl9KX0sX21heDpfbHRlLF9tYXhMZW5ndGg6X21heExlbmd0aCxfbWF4U2l6ZTpfbWF4U2l6ZSxfbWltZTpfbWltZSxfbWluOl9ndGUsX21pbkxlbmd0aDpfbWluTGVuZ3RoLF9taW5TaXplOl9taW5TaXplLF9tdWx0aXBsZU9mOl9tdWx0aXBsZU9mLF9uYW46X25hbixfbmFub2lkOl9uYW5vaWQsX25hdGl2ZUVudW06ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfbmVnYXRpdmU6X25lZ2F0aXZlLF9uZXZlcjpfbmV2ZXIsX25vbm5lZ2F0aXZlOl9ub25uZWdhdGl2ZSxfbm9ub3B0aW9uYWw6ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfbm9ucG9zaXRpdmU6X25vbnBvc2l0aXZlLF9ub3JtYWxpemU6X25vcm1hbGl6ZSxfbnVsbDpfbnVsbCQxLF9udWxsYWJsZTpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToibnVsbGFibGUiLGlubmVyVHlwZTpzfSl9LF9udW1iZXI6X251bWJlcixfb3B0aW9uYWw6ZnVuY3Rpb24oZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c30pfSxfb3ZlcndyaXRlOl9vdmVyd3JpdGUsX3BhcnNlOl9wYXJzZSxfcGFyc2VBc3luYzpfcGFyc2VBc3luYyxfcGlwZTpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJwaXBlIixpbjpzLG91dDpkfSl9LF9wb3NpdGl2ZTpfcG9zaXRpdmUsX3Byb21pc2U6ZnVuY3Rpb24oZSxzKXtyZXR1cm4gbmV3IGUoe3R5cGU6InByb21pc2UiLGlubmVyVHlwZTpzfSl9LF9wcm9wZXJ0eTpfcHJvcGVydHksX3JlYWRvbmx5OmZ1bmN0aW9uKGUscyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOnN9KX0sX3JlY29yZDpmdW5jdGlvbihlLHMsZCxtKXtyZXR1cm4gbmV3IGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTpzLHZhbHVlVHlwZTpkLC4uLm5vcm1hbGl6ZVBhcmFtcyhtKX0pfSxfcmVmaW5lOl9yZWZpbmUsX3JlZ2V4Ol9yZWdleCxfc2FmZURlY29kZTpfc2FmZURlY29kZSxfc2FmZURlY29kZUFzeW5jOl9zYWZlRGVjb2RlQXN5bmMsX3NhZmVFbmNvZGU6X3NhZmVFbmNvZGUsX3NhZmVFbmNvZGVBc3luYzpfc2FmZUVuY29kZUFzeW5jLF9zYWZlUGFyc2U6X3NhZmVQYXJzZSxfc2FmZVBhcnNlQXN5bmM6X3NhZmVQYXJzZUFzeW5jLF9zZXQ6ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToic2V0Iix2YWx1ZVR5cGU6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX0sX3NpemU6X3NpemUsX3NsdWdpZnk6X3NsdWdpZnksX3N0YXJ0c1dpdGg6X3N0YXJ0c1dpdGgsX3N0cmluZzpfc3RyaW5nLF9zdHJpbmdGb3JtYXQ6X3N0cmluZ0Zvcm1hdCxfc3RyaW5nYm9vbDpfc3RyaW5nYm9vbCxfc3VjY2VzczpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToic3VjY2VzcyIsaW5uZXJUeXBlOnN9KX0sX3N1cGVyUmVmaW5lOl9zdXBlclJlZmluZSxfc3ltYm9sOl9zeW1ib2wsX3RlbXBsYXRlTGl0ZXJhbDpmdW5jdGlvbihlLHMsZCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxfdG9Mb3dlckNhc2U6X3RvTG93ZXJDYXNlLF90b1VwcGVyQ2FzZTpfdG9VcHBlckNhc2UsX3RyYW5zZm9ybTpmdW5jdGlvbihlLHMpe3JldHVybiBuZXcgZSh7dHlwZToidHJhbnNmb3JtIix0cmFuc2Zvcm06c30pfSxfdHJpbTpfdHJpbSxfdHVwbGU6ZnVuY3Rpb24oZSxzLGQsbSl7Y29uc3QgaD1kIGluc3RhbmNlb2YgbmE7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0dXBsZSIsaXRlbXM6cyxyZXN0Omg/ZDpudWxsLC4uLm5vcm1hbGl6ZVBhcmFtcyhoP206ZCl9KX0sX3VpbnQzMjpfdWludDMyLF91aW50NjQ6X3VpbnQ2NCxfdWxpZDpfdWxpZCxfdW5kZWZpbmVkOl91bmRlZmluZWQkMSxfdW5pb246ZnVuY3Rpb24oZSxzLGQpe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX0sX3Vua25vd246X3Vua25vd24sX3VwcGVyY2FzZTpfdXBwZXJjYXNlLF91cmw6X3VybCxfdXVpZDpfdXVpZCxfdXVpZHY0Ol91dWlkdjQsX3V1aWR2NjpfdXVpZHY2LF91dWlkdjc6X3V1aWR2Nyxfdm9pZDpfdm9pZCQxLF94aWQ6X3hpZCxfeG9yOmZ1bmN0aW9uKGUscyxkKXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuaW9uIixvcHRpb25zOnMsaW5jbHVzaXZlOiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfSxjbG9uZTpjbG9uZSxjb25maWc6Y29uZmlnLGNyZWF0ZVN0YW5kYXJkSlNPTlNjaGVtYU1ldGhvZDpjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QsY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOmNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZCxkZWNvZGU6T3IsZGVjb2RlQXN5bmM6TnIsZGVzY3JpYmU6ZGVzY3JpYmUkMSxlbmNvZGU6RXIsZW5jb2RlQXN5bmM6UHIsZXh0cmFjdERlZnM6ZXh0cmFjdERlZnMsZmluYWxpemU6ZmluYWxpemUsZmxhdHRlbkVycm9yOmZsYXR0ZW5FcnJvcixmb3JtYXRFcnJvcjpmb3JtYXRFcnJvcixnbG9iYWxDb25maWc6dnIsZ2xvYmFsUmVnaXN0cnk6TnMsaW5pdGlhbGl6ZUNvbnRleHQ6aW5pdGlhbGl6ZUNvbnRleHQsaXNWYWxpZEJhc2U2NDppc1ZhbGlkQmFzZTY0LGlzVmFsaWRCYXNlNjRVUkw6aXNWYWxpZEJhc2U2NFVSTCxpc1ZhbGlkSldUOmlzVmFsaWRKV1QsbG9jYWxlczpScyxtZXRhOm1ldGEkMSxwYXJzZTpJcixwYXJzZUFzeW5jOkNyLHByZXR0aWZ5RXJyb3I6cHJldHRpZnlFcnJvcixwcm9jZXNzOnByb2Nlc3MscmVnZXhlczpSbyxyZWdpc3RyeTpyZWdpc3RyeSxzYWZlRGVjb2RlOlVyLHNhZmVEZWNvZGVBc3luYzpBcixzYWZlRW5jb2RlOkRyLHNhZmVFbmNvZGVBc3luYzpMcixzYWZlUGFyc2U6VHIsc2FmZVBhcnNlQXN5bmM6UnIsdG9Eb3RQYXRoOnRvRG90UGF0aCx0b0pTT05TY2hlbWE6dG9KU09OU2NoZW1hLHRyZWVpZnlFcnJvcjp0cmVlaWZ5RXJyb3IsdXRpbDprcix2ZXJzaW9uOnRhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEZzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbmRzV2l0aDpfZW5kc1dpdGgsZ3Q6X2d0LGd0ZTpfZ3RlLGluY2x1ZGVzOl9pbmNsdWRlcyxsZW5ndGg6X2xlbmd0aCxsb3dlcmNhc2U6X2xvd2VyY2FzZSxsdDpfbHQsbHRlOl9sdGUsbWF4TGVuZ3RoOl9tYXhMZW5ndGgsbWF4U2l6ZTpfbWF4U2l6ZSxtaW1lOl9taW1lLG1pbkxlbmd0aDpfbWluTGVuZ3RoLG1pblNpemU6X21pblNpemUsbXVsdGlwbGVPZjpfbXVsdGlwbGVPZixuZWdhdGl2ZTpfbmVnYXRpdmUsbm9ubmVnYXRpdmU6X25vbm5lZ2F0aXZlLG5vbnBvc2l0aXZlOl9ub25wb3NpdGl2ZSxub3JtYWxpemU6X25vcm1hbGl6ZSxvdmVyd3JpdGU6X292ZXJ3cml0ZSxwb3NpdGl2ZTpfcG9zaXRpdmUscHJvcGVydHk6X3Byb3BlcnR5LHJlZ2V4Ol9yZWdleCxzaXplOl9zaXplLHNsdWdpZnk6X3NsdWdpZnksc3RhcnRzV2l0aDpfc3RhcnRzV2l0aCx0b0xvd2VyQ2FzZTpfdG9Mb3dlckNhc2UsdG9VcHBlckNhc2U6X3RvVXBwZXJDYXNlLHRyaW06X3RyaW0sdXBwZXJjYXNlOl91cHBlcmNhc2V9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksQnM9JGNvbnN0cnVjdG9yKCJab2RJU09EYXRlVGltZSIsKGUscyk9PntfYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gZGF0ZXRpbWUoZSl7cmV0dXJuIF9pc29EYXRlVGltZShCcyxlKX1jb25zdCBacz0kY29uc3RydWN0b3IoIlpvZElTT0RhdGUiLChlLHMpPT57eGEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGRhdGUkMihlKXtyZXR1cm4gX2lzb0RhdGUoWnMsZSl9Y29uc3QgTXM9JGNvbnN0cnVjdG9yKCJab2RJU09UaW1lIiwoZSxzKT0+e3dhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiB0aW1lKGUpe3JldHVybiBfaXNvVGltZShNcyxlKX1jb25zdCBRcz0kY29uc3RydWN0b3IoIlpvZElTT0R1cmF0aW9uIiwoZSxzKT0+eyRhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBkdXJhdGlvbihlKXtyZXR1cm4gX2lzb0R1cmF0aW9uKFFzLGUpfWNvbnN0IFZzPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RJU09EYXRlOlpzLFpvZElTT0RhdGVUaW1lOkJzLFpvZElTT0R1cmF0aW9uOlFzLFpvZElTT1RpbWU6TXMsZGF0ZTpkYXRlJDIsZGF0ZXRpbWU6ZGF0ZXRpbWUsZHVyYXRpb246ZHVyYXRpb24sdGltZTp0aW1lfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGluaXRpYWxpemVyPShlLHMpPT57anIuaW5pdChlLHMpLGUubmFtZT0iWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse2Zvcm1hdDp7dmFsdWU6cz0+Zm9ybWF0RXJyb3IoZSxzKX0sZmxhdHRlbjp7dmFsdWU6cz0+ZmxhdHRlbkVycm9yKGUscyl9LGFkZElzc3VlOnt2YWx1ZTpzPT57ZS5pc3N1ZXMucHVzaChzKSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoZS5pc3N1ZXMsanNvblN0cmluZ2lmeVJlcGxhY2VyLDIpfX0sYWRkSXNzdWVzOnt2YWx1ZTpzPT57ZS5pc3N1ZXMucHVzaCguLi5zKSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoZS5pc3N1ZXMsanNvblN0cmluZ2lmeVJlcGxhY2VyLDIpfX0saXNFbXB0eTp7Z2V0OigpPT4wPT09ZS5pc3N1ZXMubGVuZ3RofX0pfSxIcz0kY29uc3RydWN0b3IoIlpvZEVycm9yIixpbml0aWFsaXplciksV3M9JGNvbnN0cnVjdG9yKCJab2RFcnJvciIsaW5pdGlhbGl6ZXIse1BhcmVudDpFcnJvcn0pLEpzPV9wYXJzZShXcyksS3M9X3BhcnNlQXN5bmMoV3MpLEdzPV9zYWZlUGFyc2UoV3MpLFhzPV9zYWZlUGFyc2VBc3luYyhXcyksWXM9X2VuY29kZShXcyksZWw9X2RlY29kZShXcyksdGw9X2VuY29kZUFzeW5jKFdzKSxubD1fZGVjb2RlQXN5bmMoV3MpLGlsPV9zYWZlRW5jb2RlKFdzKSxybD1fc2FmZURlY29kZShXcyksb2w9X3NhZmVFbmNvZGVBc3luYyhXcyksYWw9X3NhZmVEZWNvZGVBc3luYyhXcyksc2w9JGNvbnN0cnVjdG9yKCJab2RUeXBlIiwoZSxzKT0+KG5hLmluaXQoZSxzKSxPYmplY3QuYXNzaWduKGVbIn5zdGFuZGFyZCJdLHtqc29uU2NoZW1hOntpbnB1dDpjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QoZSwiaW5wdXQiKSxvdXRwdXQ6Y3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kKGUsIm91dHB1dCIpfX0pLGUudG9KU09OU2NoZW1hPWNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZChlLHt9KSxlLmRlZj1zLGUudHlwZT1zLnR5cGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9kZWYiLHt2YWx1ZTpzfSksZS5jaGVjaz0oLi4uZCk9PmUuY2xvbmUobWVyZ2VEZWZzKHMse2NoZWNrczpbLi4ucy5jaGVja3M/P1tdLC4uLmQubWFwKGU9PiJmdW5jdGlvbiI9PXR5cGVvZiBlP3tfem9kOntjaGVjazplLGRlZjp7Y2hlY2s6ImN1c3RvbSJ9LG9uYXR0YWNoOltdfX06ZSldfSkse3BhcmVudDohMH0pLGUud2l0aD1lLmNoZWNrLGUuY2xvbmU9KHMsZCk9PmNsb25lKGUscyxkKSxlLmJyYW5kPSgpPT5lLGUucmVnaXN0ZXI9KHMsZCk9PihzLmFkZChlLGQpLGUpLGUucGFyc2U9KHMsZCk9PkpzKGUscyxkLHtjYWxsZWU6ZS5wYXJzZX0pLGUuc2FmZVBhcnNlPShzLGQpPT5HcyhlLHMsZCksZS5wYXJzZUFzeW5jPWFzeW5jKHMsZCk9PktzKGUscyxkLHtjYWxsZWU6ZS5wYXJzZUFzeW5jfSksZS5zYWZlUGFyc2VBc3luYz1hc3luYyhzLGQpPT5YcyhlLHMsZCksZS5zcGE9ZS5zYWZlUGFyc2VBc3luYyxlLmVuY29kZT0ocyxkKT0+WXMoZSxzLGQpLGUuZGVjb2RlPShzLGQpPT5lbChlLHMsZCksZS5lbmNvZGVBc3luYz1hc3luYyhzLGQpPT50bChlLHMsZCksZS5kZWNvZGVBc3luYz1hc3luYyhzLGQpPT5ubChlLHMsZCksZS5zYWZlRW5jb2RlPShzLGQpPT5pbChlLHMsZCksZS5zYWZlRGVjb2RlPShzLGQpPT5ybChlLHMsZCksZS5zYWZlRW5jb2RlQXN5bmM9YXN5bmMocyxkKT0+b2woZSxzLGQpLGUuc2FmZURlY29kZUFzeW5jPWFzeW5jKHMsZCk9PmFsKGUscyxkKSxlLnJlZmluZT0ocyxkKT0+ZS5jaGVjayhyZWZpbmUocyxkKSksZS5zdXBlclJlZmluZT1zPT5lLmNoZWNrKHN1cGVyUmVmaW5lKHMpKSxlLm92ZXJ3cml0ZT1zPT5lLmNoZWNrKF9vdmVyd3JpdGUocykpLGUub3B0aW9uYWw9KCk9Pm9wdGlvbmFsKGUpLGUuZXhhY3RPcHRpb25hbD0oKT0+ZXhhY3RPcHRpb25hbChlKSxlLm51bGxhYmxlPSgpPT5udWxsYWJsZShlKSxlLm51bGxpc2g9KCk9Pm9wdGlvbmFsKG51bGxhYmxlKGUpKSxlLm5vbm9wdGlvbmFsPXM9Pm5vbm9wdGlvbmFsKGUscyksZS5hcnJheT0oKT0+YXJyYXkoZSksZS5vcj1zPT51bmlvbiQxKFtlLHNdKSxlLmFuZD1zPT5pbnRlcnNlY3Rpb24oZSxzKSxlLnRyYW5zZm9ybT1zPT5waXBlKGUsdHJhbnNmb3JtKHMpKSxlLmRlZmF1bHQ9cz0+X2RlZmF1bHQkMihlLHMpLGUucHJlZmF1bHQ9cz0+cHJlZmF1bHQoZSxzKSxlLmNhdGNoPXM9Pl9jYXRjaChlLHMpLGUucGlwZT1zPT5waXBlKGUscyksZS5yZWFkb25seT0oKT0+cmVhZG9ubHkoZSksZS5kZXNjcmliZT1zPT57Y29uc3QgZD1lLmNsb25lKCk7cmV0dXJuIE5zLmFkZChkLHtkZXNjcmlwdGlvbjpzfSksZH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImRlc2NyaXB0aW9uIix7Z2V0OigpPT5Ocy5nZXQoZSk/LmRlc2NyaXB0aW9uLGNvbmZpZ3VyYWJsZTohMH0pLGUubWV0YT0oLi4ucyk9PntpZigwPT09cy5sZW5ndGgpcmV0dXJuIE5zLmdldChlKTtjb25zdCBkPWUuY2xvbmUoKTtyZXR1cm4gTnMuYWRkKGQsc1swXSksZH0sZS5pc09wdGlvbmFsPSgpPT5lLnNhZmVQYXJzZSh2b2lkIDApLnN1Y2Nlc3MsZS5pc051bGxhYmxlPSgpPT5lLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzLGUuYXBwbHk9cz0+cyhlKSxlKSksbGw9JGNvbnN0cnVjdG9yKCJfWm9kU3RyaW5nIiwoZSxzKT0+e3JhLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnN0cmluZ1Byb2Nlc3NvcihlLHMsZCk7Y29uc3QgZD1lLl96b2QuYmFnO2UuZm9ybWF0PWQuZm9ybWF0Pz9udWxsLGUubWluTGVuZ3RoPWQubWluaW11bT8/bnVsbCxlLm1heExlbmd0aD1kLm1heGltdW0/P251bGwsZS5yZWdleD0oLi4ucyk9PmUuY2hlY2soX3JlZ2V4KC4uLnMpKSxlLmluY2x1ZGVzPSguLi5zKT0+ZS5jaGVjayhfaW5jbHVkZXMoLi4ucykpLGUuc3RhcnRzV2l0aD0oLi4ucyk9PmUuY2hlY2soX3N0YXJ0c1dpdGgoLi4ucykpLGUuZW5kc1dpdGg9KC4uLnMpPT5lLmNoZWNrKF9lbmRzV2l0aCguLi5zKSksZS5taW49KC4uLnMpPT5lLmNoZWNrKF9taW5MZW5ndGgoLi4ucykpLGUubWF4PSguLi5zKT0+ZS5jaGVjayhfbWF4TGVuZ3RoKC4uLnMpKSxlLmxlbmd0aD0oLi4ucyk9PmUuY2hlY2soX2xlbmd0aCguLi5zKSksZS5ub25lbXB0eT0oLi4ucyk9PmUuY2hlY2soX21pbkxlbmd0aCgxLC4uLnMpKSxlLmxvd2VyY2FzZT1zPT5lLmNoZWNrKF9sb3dlcmNhc2UocykpLGUudXBwZXJjYXNlPXM9PmUuY2hlY2soX3VwcGVyY2FzZShzKSksZS50cmltPSgpPT5lLmNoZWNrKF90cmltKCkpLGUubm9ybWFsaXplPSguLi5zKT0+ZS5jaGVjayhfbm9ybWFsaXplKC4uLnMpKSxlLnRvTG93ZXJDYXNlPSgpPT5lLmNoZWNrKF90b0xvd2VyQ2FzZSgpKSxlLnRvVXBwZXJDYXNlPSgpPT5lLmNoZWNrKF90b1VwcGVyQ2FzZSgpKSxlLnNsdWdpZnk9KCk9PmUuY2hlY2soX3NsdWdpZnkoKSl9KSxjbD0kY29uc3RydWN0b3IoIlpvZFN0cmluZyIsKGUscyk9PntyYS5pbml0KGUscyksbGwuaW5pdChlLHMpLGUuZW1haWw9cz0+ZS5jaGVjayhfZW1haWwoZGwscykpLGUudXJsPXM9PmUuY2hlY2soX3VybChmbCxzKSksZS5qd3Q9cz0+ZS5jaGVjayhfand0KFRsLHMpKSxlLmVtb2ppPXM9PmUuY2hlY2soX2Vtb2ppKGhsLHMpKSxlLmd1aWQ9cz0+ZS5jaGVjayhfZ3VpZChwbCxzKSksZS51dWlkPXM9PmUuY2hlY2soX3V1aWQobWwscykpLGUudXVpZHY0PXM9PmUuY2hlY2soX3V1aWR2NChtbCxzKSksZS51dWlkdjY9cz0+ZS5jaGVjayhfdXVpZHY2KG1sLHMpKSxlLnV1aWR2Nz1zPT5lLmNoZWNrKF91dWlkdjcobWwscykpLGUubmFub2lkPXM9PmUuY2hlY2soX25hbm9pZChnbCxzKSksZS5ndWlkPXM9PmUuY2hlY2soX2d1aWQocGwscykpLGUuY3VpZD1zPT5lLmNoZWNrKF9jdWlkKHZsLHMpKSxlLmN1aWQyPXM9PmUuY2hlY2soX2N1aWQyKHlsLHMpKSxlLnVsaWQ9cz0+ZS5jaGVjayhfdWxpZChibCxzKSksZS5iYXNlNjQ9cz0+ZS5jaGVjayhfYmFzZTY0KHpsLHMpKSxlLmJhc2U2NHVybD1zPT5lLmNoZWNrKF9iYXNlNjR1cmwoSWwscykpLGUueGlkPXM9PmUuY2hlY2soX3hpZChfbCxzKSksZS5rc3VpZD1zPT5lLmNoZWNrKF9rc3VpZCh4bCxzKSksZS5pcHY0PXM9PmUuY2hlY2soX2lwdjQod2wscykpLGUuaXB2Nj1zPT5lLmNoZWNrKF9pcHY2KFNsLHMpKSxlLmNpZHJ2ND1zPT5lLmNoZWNrKF9jaWRydjQoa2wscykpLGUuY2lkcnY2PXM9PmUuY2hlY2soX2NpZHJ2NihqbCxzKSksZS5lMTY0PXM9PmUuY2hlY2soX2UxNjQoQ2wscykpLGUuZGF0ZXRpbWU9cz0+ZS5jaGVjayhkYXRldGltZShzKSksZS5kYXRlPXM9PmUuY2hlY2soZGF0ZSQyKHMpKSxlLnRpbWU9cz0+ZS5jaGVjayh0aW1lKHMpKSxlLmR1cmF0aW9uPXM9PmUuY2hlY2soZHVyYXRpb24ocykpfSk7ZnVuY3Rpb24gc3RyaW5nJDEoZSl7cmV0dXJuIF9zdHJpbmcoY2wsZSl9Y29uc3QgdWw9JGNvbnN0cnVjdG9yKCJab2RTdHJpbmdGb3JtYXQiLChlLHMpPT57b2EuaW5pdChlLHMpLGxsLmluaXQoZSxzKX0pLGRsPSRjb25zdHJ1Y3RvcigiWm9kRW1haWwiLChlLHMpPT57bGEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGVtYWlsKGUpe3JldHVybiBfZW1haWwoZGwsZSl9Y29uc3QgcGw9JGNvbnN0cnVjdG9yKCJab2RHVUlEIiwoZSxzKT0+e2FhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBndWlkKGUpe3JldHVybiBfZ3VpZChwbCxlKX1jb25zdCBtbD0kY29uc3RydWN0b3IoIlpvZFVVSUQiLChlLHMpPT57c2EuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIHV1aWQoZSl7cmV0dXJuIF91dWlkKG1sLGUpfWZ1bmN0aW9uIHV1aWR2NChlKXtyZXR1cm4gX3V1aWR2NChtbCxlKX1mdW5jdGlvbiB1dWlkdjYoZSl7cmV0dXJuIF91dWlkdjYobWwsZSl9ZnVuY3Rpb24gdXVpZHY3KGUpe3JldHVybiBfdXVpZHY3KG1sLGUpfWNvbnN0IGZsPSRjb25zdHJ1Y3RvcigiWm9kVVJMIiwoZSxzKT0+e2NhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiB1cmwoZSl7cmV0dXJuIF91cmwoZmwsZSl9ZnVuY3Rpb24gaHR0cFVybChlKXtyZXR1cm4gX3VybChmbCx7cHJvdG9jb2w6L15odHRwcz8kLyxob3N0bmFtZTpzbywuLi5ub3JtYWxpemVQYXJhbXMoZSl9KX1jb25zdCBobD0kY29uc3RydWN0b3IoIlpvZEVtb2ppIiwoZSxzKT0+e3VhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBlbW9qaShlKXtyZXR1cm4gX2Vtb2ppKGhsLGUpfWNvbnN0IGdsPSRjb25zdHJ1Y3RvcigiWm9kTmFub0lEIiwoZSxzKT0+e3BhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBuYW5vaWQoZSl7cmV0dXJuIF9uYW5vaWQoZ2wsZSl9Y29uc3Qgdmw9JGNvbnN0cnVjdG9yKCJab2RDVUlEIiwoZSxzKT0+e21hLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBjdWlkKGUpe3JldHVybiBfY3VpZCh2bCxlKX1jb25zdCB5bD0kY29uc3RydWN0b3IoIlpvZENVSUQyIiwoZSxzKT0+e2ZhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBjdWlkMihlKXtyZXR1cm4gX2N1aWQyKHlsLGUpfWNvbnN0IGJsPSRjb25zdHJ1Y3RvcigiWm9kVUxJRCIsKGUscyk9PntoYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gdWxpZChlKXtyZXR1cm4gX3VsaWQoYmwsZSl9Y29uc3QgX2w9JGNvbnN0cnVjdG9yKCJab2RYSUQiLChlLHMpPT57Z2EuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIHhpZChlKXtyZXR1cm4gX3hpZChfbCxlKX1jb25zdCB4bD0kY29uc3RydWN0b3IoIlpvZEtTVUlEIiwoZSxzKT0+e3ZhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBrc3VpZChlKXtyZXR1cm4gX2tzdWlkKHhsLGUpfWNvbnN0IHdsPSRjb25zdHJ1Y3RvcigiWm9kSVB2NCIsKGUscyk9PntqYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gaXB2NChlKXtyZXR1cm4gX2lwdjQod2wsZSl9Y29uc3QgJGw9JGNvbnN0cnVjdG9yKCJab2RNQUMiLChlLHMpPT57Q2EuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIG1hYyhlKXtyZXR1cm4gX21hYygkbCxlKX1jb25zdCBTbD0kY29uc3RydWN0b3IoIlpvZElQdjYiLChlLHMpPT57emEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGlwdjYoZSl7cmV0dXJuIF9pcHY2KFNsLGUpfWNvbnN0IGtsPSRjb25zdHJ1Y3RvcigiWm9kQ0lEUnY0IiwoZSxzKT0+e1RhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBjaWRydjQoZSl7cmV0dXJuIF9jaWRydjQoa2wsZSl9Y29uc3Qgamw9JGNvbnN0cnVjdG9yKCJab2RDSURSdjYiLChlLHMpPT57UmEuaW5pdChlLHMpLHVsLmluaXQoZSxzKX0pO2Z1bmN0aW9uIGNpZHJ2NihlKXtyZXR1cm4gX2NpZHJ2NihqbCxlKX1jb25zdCB6bD0kY29uc3RydWN0b3IoIlpvZEJhc2U2NCIsKGUscyk9PntFYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gYmFzZTY0KGUpe3JldHVybiBfYmFzZTY0KHpsLGUpfWNvbnN0IElsPSRjb25zdHJ1Y3RvcigiWm9kQmFzZTY0VVJMIiwoZSxzKT0+e09hLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBiYXNlNjR1cmwoZSl7cmV0dXJuIF9iYXNlNjR1cmwoSWwsZSl9Y29uc3QgQ2w9JGNvbnN0cnVjdG9yKCJab2RFMTY0IiwoZSxzKT0+e1BhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBlMTY0KGUpe3JldHVybiBfZTE2NChDbCxlKX1jb25zdCBUbD0kY29uc3RydWN0b3IoIlpvZEpXVCIsKGUscyk9PntVYS5pbml0KGUscyksdWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gand0KGUpe3JldHVybiBfand0KFRsLGUpfWNvbnN0IFJsPSRjb25zdHJ1Y3RvcigiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwoZSxzKT0+e0xhLmluaXQoZSxzKSx1bC5pbml0KGUscyl9KTtmdW5jdGlvbiBzdHJpbmdGb3JtYXQoZSxzLGQ9e30pe3JldHVybiBfc3RyaW5nRm9ybWF0KFJsLGUscyxkKX1mdW5jdGlvbiBob3N0bmFtZShlKXtyZXR1cm4gX3N0cmluZ0Zvcm1hdChSbCwiaG9zdG5hbWUiLGFvLGUpfWZ1bmN0aW9uIGhleChlKXtyZXR1cm4gX3N0cmluZ0Zvcm1hdChSbCwiaGV4IixfbyxlKX1mdW5jdGlvbiBoYXNoKGUscyl7Y29uc3QgZD1gJHtlfV8ke3M/LmVuYz8/ImhleCJ9YCxtPVJvW2RdO2lmKCFtKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGhhc2ggZm9ybWF0OiAke2R9YCk7cmV0dXJuIF9zdHJpbmdGb3JtYXQoUmwsZCxtLHMpfWNvbnN0IEVsPSRjb25zdHJ1Y3RvcigiWm9kTnVtYmVyIiwoZSxzKT0+e0FhLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9Pm51bWJlclByb2Nlc3NvcihlLHMsZCksZS5ndD0ocyxkKT0+ZS5jaGVjayhfZ3QocyxkKSksZS5ndGU9KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLm1pbj0ocyxkKT0+ZS5jaGVjayhfZ3RlKHMsZCkpLGUubHQ9KHMsZCk9PmUuY2hlY2soX2x0KHMsZCkpLGUubHRlPShzLGQpPT5lLmNoZWNrKF9sdGUocyxkKSksZS5tYXg9KHMsZCk9PmUuY2hlY2soX2x0ZShzLGQpKSxlLmludD1zPT5lLmNoZWNrKGludChzKSksZS5zYWZlPXM9PmUuY2hlY2soaW50KHMpKSxlLnBvc2l0aXZlPXM9PmUuY2hlY2soX2d0KDAscykpLGUubm9ubmVnYXRpdmU9cz0+ZS5jaGVjayhfZ3RlKDAscykpLGUubmVnYXRpdmU9cz0+ZS5jaGVjayhfbHQoMCxzKSksZS5ub25wb3NpdGl2ZT1zPT5lLmNoZWNrKF9sdGUoMCxzKSksZS5tdWx0aXBsZU9mPShzLGQpPT5lLmNoZWNrKF9tdWx0aXBsZU9mKHMsZCkpLGUuc3RlcD0ocyxkKT0+ZS5jaGVjayhfbXVsdGlwbGVPZihzLGQpKSxlLmZpbml0ZT0oKT0+ZTtjb25zdCBkPWUuX3pvZC5iYWc7ZS5taW5WYWx1ZT1NYXRoLm1heChkLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSxkLmV4Y2x1c2l2ZU1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSk/P251bGwsZS5tYXhWYWx1ZT1NYXRoLm1pbihkLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxkLmV4Y2x1c2l2ZU1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSk/P251bGwsZS5pc0ludD0oZC5mb3JtYXQ/PyIiKS5pbmNsdWRlcygiaW50Iil8fE51bWJlci5pc1NhZmVJbnRlZ2VyKGQubXVsdGlwbGVPZj8/LjUpLGUuaXNGaW5pdGU9ITAsZS5mb3JtYXQ9ZC5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiBudW1iZXIkMShlKXtyZXR1cm4gX251bWJlcihFbCxlKX1jb25zdCBPbD0kY29uc3RydWN0b3IoIlpvZE51bWJlckZvcm1hdCIsKGUscyk9PntxYS5pbml0KGUscyksRWwuaW5pdChlLHMpfSk7ZnVuY3Rpb24gaW50KGUpe3JldHVybiBfaW50KE9sLGUpfWZ1bmN0aW9uIGZsb2F0MzIoZSl7cmV0dXJuIF9mbG9hdDMyKE9sLGUpfWZ1bmN0aW9uIGZsb2F0NjQoZSl7cmV0dXJuIF9mbG9hdDY0KE9sLGUpfWZ1bmN0aW9uIGludDMyKGUpe3JldHVybiBfaW50MzIoT2wsZSl9ZnVuY3Rpb24gdWludDMyKGUpe3JldHVybiBfdWludDMyKE9sLGUpfWNvbnN0IFBsPSRjb25zdHJ1Y3RvcigiWm9kQm9vbGVhbiIsKGUscyk9PntGYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5ib29sZWFuUHJvY2Vzc29yKDAsMCxzKX0pO2Z1bmN0aW9uIGJvb2xlYW4kMShlKXtyZXR1cm4gX2Jvb2xlYW4oUGwsZSl9Y29uc3QgTmw9JGNvbnN0cnVjdG9yKCJab2RCaWdJbnQiLChlLHMpPT57QmEuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+YmlnaW50UHJvY2Vzc29yKDAsZSksZS5ndGU9KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLm1pbj0ocyxkKT0+ZS5jaGVjayhfZ3RlKHMsZCkpLGUuZ3Q9KHMsZCk9PmUuY2hlY2soX2d0KHMsZCkpLGUuZ3RlPShzLGQpPT5lLmNoZWNrKF9ndGUocyxkKSksZS5taW49KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLmx0PShzLGQpPT5lLmNoZWNrKF9sdChzLGQpKSxlLmx0ZT0ocyxkKT0+ZS5jaGVjayhfbHRlKHMsZCkpLGUubWF4PShzLGQpPT5lLmNoZWNrKF9sdGUocyxkKSksZS5wb3NpdGl2ZT1zPT5lLmNoZWNrKF9ndChCaWdJbnQoMCkscykpLGUubmVnYXRpdmU9cz0+ZS5jaGVjayhfbHQoQmlnSW50KDApLHMpKSxlLm5vbnBvc2l0aXZlPXM9PmUuY2hlY2soX2x0ZShCaWdJbnQoMCkscykpLGUubm9ubmVnYXRpdmU9cz0+ZS5jaGVjayhfZ3RlKEJpZ0ludCgwKSxzKSksZS5tdWx0aXBsZU9mPShzLGQpPT5lLmNoZWNrKF9tdWx0aXBsZU9mKHMsZCkpO2NvbnN0IGQ9ZS5fem9kLmJhZztlLm1pblZhbHVlPWQubWluaW11bT8/bnVsbCxlLm1heFZhbHVlPWQubWF4aW11bT8/bnVsbCxlLmZvcm1hdD1kLmZvcm1hdD8/bnVsbH0pO2Z1bmN0aW9uIGJpZ2ludCQxKGUpe3JldHVybiBfYmlnaW50KE5sLGUpfWNvbnN0IERsPSRjb25zdHJ1Y3RvcigiWm9kQmlnSW50Rm9ybWF0IiwoZSxzKT0+e1phLmluaXQoZSxzKSxObC5pbml0KGUscyl9KTtmdW5jdGlvbiBpbnQ2NChlKXtyZXR1cm4gX2ludDY0KERsLGUpfWZ1bmN0aW9uIHVpbnQ2NChlKXtyZXR1cm4gX3VpbnQ2NChEbCxlKX1jb25zdCBVbD0kY29uc3RydWN0b3IoIlpvZFN5bWJvbCIsKGUscyk9PntNYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5zeW1ib2xQcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIHN5bWJvbChlKXtyZXR1cm4gX3N5bWJvbChVbCxlKX1jb25zdCBMbD0kY29uc3RydWN0b3IoIlpvZFVuZGVmaW5lZCIsKGUscyk9PntRYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT51bmRlZmluZWRQcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIF91bmRlZmluZWQoZSl7cmV0dXJuIF91bmRlZmluZWQkMShMbCxlKX1jb25zdCBBbD0kY29uc3RydWN0b3IoIlpvZE51bGwiLChlLHMpPT57VmEuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+bnVsbFByb2Nlc3NvcigwLGUscyl9KTtmdW5jdGlvbiBfbnVsbChlKXtyZXR1cm4gX251bGwkMShBbCxlKX1jb25zdCBxbD0kY29uc3RydWN0b3IoIlpvZEFueSIsKGUscyk9PntIYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT57fX0pO2Z1bmN0aW9uIGFueSgpe3JldHVybiBfYW55KHFsKX1jb25zdCBGbD0kY29uc3RydWN0b3IoIlpvZFVua25vd24iLChlLHMpPT57V2EuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+e319KTtmdW5jdGlvbiB1bmtub3duKCl7cmV0dXJuIF91bmtub3duKEZsKX1jb25zdCBCbD0kY29uc3RydWN0b3IoIlpvZE5ldmVyIiwoZSxzKT0+e0phLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9Pm5ldmVyUHJvY2Vzc29yKDAsMCxzKX0pO2Z1bmN0aW9uIG5ldmVyKGUpe3JldHVybiBfbmV2ZXIoQmwsZSl9Y29uc3QgWmw9JGNvbnN0cnVjdG9yKCJab2RWb2lkIiwoZSxzKT0+e0thLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9PnZvaWRQcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIF92b2lkKGUpe3JldHVybiBfdm9pZCQxKFpsLGUpfWNvbnN0IE1sPSRjb25zdHJ1Y3RvcigiWm9kRGF0ZSIsKGUscyk9PntHYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5kYXRlUHJvY2Vzc29yKDAsZSksZS5taW49KHMsZCk9PmUuY2hlY2soX2d0ZShzLGQpKSxlLm1heD0ocyxkKT0+ZS5jaGVjayhfbHRlKHMsZCkpO2NvbnN0IGQ9ZS5fem9kLmJhZztlLm1pbkRhdGU9ZC5taW5pbXVtP25ldyBEYXRlKGQubWluaW11bSk6bnVsbCxlLm1heERhdGU9ZC5tYXhpbXVtP25ldyBEYXRlKGQubWF4aW11bSk6bnVsbH0pO2Z1bmN0aW9uIGRhdGUkMShlKXtyZXR1cm4gX2RhdGUoTWwsZSl9Y29uc3QgUWw9JGNvbnN0cnVjdG9yKCJab2RBcnJheSIsKGUscyk9PntYYS5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5hcnJheVByb2Nlc3NvcihlLHMsZCxtKSxlLmVsZW1lbnQ9cy5lbGVtZW50LGUubWluPShzLGQpPT5lLmNoZWNrKF9taW5MZW5ndGgocyxkKSksZS5ub25lbXB0eT1zPT5lLmNoZWNrKF9taW5MZW5ndGgoMSxzKSksZS5tYXg9KHMsZCk9PmUuY2hlY2soX21heExlbmd0aChzLGQpKSxlLmxlbmd0aD0ocyxkKT0+ZS5jaGVjayhfbGVuZ3RoKHMsZCkpLGUudW53cmFwPSgpPT5lLmVsZW1lbnR9KTtmdW5jdGlvbiBhcnJheShlLHMpe3JldHVybiBfYXJyYXkoUWwsZSxzKX1mdW5jdGlvbiBrZXlvZihlKXtjb25zdCBzPWUuX3pvZC5kZWYuc2hhcGU7cmV0dXJuIF9lbnVtKE9iamVjdC5rZXlzKHMpKX1jb25zdCBWbD0kY29uc3RydWN0b3IoIlpvZE9iamVjdCIsKGUscyk9Pntlcy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5vYmplY3RQcm9jZXNzb3IoZSxzLGQsbSksZGVmaW5lTGF6eShlLCJzaGFwZSIsKCk9PnMuc2hhcGUpLGUua2V5b2Y9KCk9Pl9lbnVtKE9iamVjdC5rZXlzKGUuX3pvZC5kZWYuc2hhcGUpKSxlLmNhdGNoYWxsPXM9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6c30pLGUucGFzc3Rocm91Z2g9KCk9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6dW5rbm93bigpfSksZS5sb29zZT0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDp1bmtub3duKCl9KSxlLnN0cmljdD0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDpuZXZlcigpfSksZS5zdHJpcD0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDp2b2lkIDB9KSxlLmV4dGVuZD1zPT5leHRlbmQoZSxzKSxlLnNhZmVFeHRlbmQ9cz0+c2FmZUV4dGVuZChlLHMpLGUubWVyZ2U9cz0+bWVyZ2UoZSxzKSxlLnBpY2s9cz0+cGljayQxKGUscyksZS5vbWl0PXM9Pm9taXQoZSxzKSxlLnBhcnRpYWw9KC4uLnMpPT5wYXJ0aWFsKHVjLGUsc1swXSksZS5yZXF1aXJlZD0oLi4ucyk9PnJlcXVpcmVkKHZjLGUsc1swXSl9KTtmdW5jdGlvbiBvYmplY3QoZSxzKXtjb25zdCBkPXt0eXBlOiJvYmplY3QiLHNoYXBlOmU/P3t9LC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX07cmV0dXJuIG5ldyBWbChkKX1mdW5jdGlvbiBzdHJpY3RPYmplY3QoZSxzKXtyZXR1cm4gbmV3IFZsKHt0eXBlOiJvYmplY3QiLHNoYXBlOmUsY2F0Y2hhbGw6bmV2ZXIoKSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1mdW5jdGlvbiBsb29zZU9iamVjdChlLHMpe3JldHVybiBuZXcgVmwoe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDp1bmtub3duKCksLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgSGw9JGNvbnN0cnVjdG9yKCJab2RVbmlvbiIsKGUscyk9Pnt0cy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT51bmlvblByb2Nlc3NvcihlLHMsZCxtKSxlLm9wdGlvbnM9cy5vcHRpb25zfSk7ZnVuY3Rpb24gdW5pb24kMShlLHMpe3JldHVybiBuZXcgSGwoe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgV2w9JGNvbnN0cnVjdG9yKCJab2RYb3IiLChlLHMpPT57SGwuaW5pdChlLHMpLG5zLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+dW5pb25Qcm9jZXNzb3IoZSxzLGQsbSksZS5vcHRpb25zPXMub3B0aW9uc30pO2Z1bmN0aW9uIHhvcihlLHMpe3JldHVybiBuZXcgV2woe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWNvbnN0IEpsPSRjb25zdHJ1Y3RvcigiWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwoZSxzKT0+e0hsLmluaXQoZSxzKSxycy5pbml0KGUscyl9KTtmdW5jdGlvbiBkaXNjcmltaW5hdGVkVW5pb24oZSxzLGQpe3JldHVybiBuZXcgSmwoe3R5cGU6InVuaW9uIixvcHRpb25zOnMsZGlzY3JpbWluYXRvcjplLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWNvbnN0IEtsPSRjb25zdHJ1Y3RvcigiWm9kSW50ZXJzZWN0aW9uIiwoZSxzKT0+e29zLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmludGVyc2VjdGlvblByb2Nlc3NvcihlLHMsZCxtKX0pO2Z1bmN0aW9uIGludGVyc2VjdGlvbihlLHMpe3JldHVybiBuZXcgS2woe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDplLHJpZ2h0OnN9KX1jb25zdCBHbD0kY29uc3RydWN0b3IoIlpvZFR1cGxlIiwoZSxzKT0+e2FzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnR1cGxlUHJvY2Vzc29yKGUscyxkLG0pLGUucmVzdD1zPT5lLmNsb25lKHsuLi5lLl96b2QuZGVmLHJlc3Q6c30pfSk7ZnVuY3Rpb24gdHVwbGUoZSxzLGQpe2NvbnN0IG09cyBpbnN0YW5jZW9mIG5hO3JldHVybiBuZXcgR2woe3R5cGU6InR1cGxlIixpdGVtczplLHJlc3Q6bT9zOm51bGwsLi4ubm9ybWFsaXplUGFyYW1zKG0/ZDpzKX0pfWNvbnN0IFhsPSRjb25zdHJ1Y3RvcigiWm9kUmVjb3JkIiwoZSxzKT0+e3NzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnJlY29yZFByb2Nlc3NvcihlLHMsZCxtKSxlLmtleVR5cGU9cy5rZXlUeXBlLGUudmFsdWVUeXBlPXMudmFsdWVUeXBlfSk7ZnVuY3Rpb24gcmVjb3JkKGUscyxkKXtyZXR1cm4gbmV3IFhsKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX1mdW5jdGlvbiBwYXJ0aWFsUmVjb3JkKGUscyxkKXtjb25zdCBtPWNsb25lKGUpO3JldHVybiBtLl96b2QudmFsdWVzPXZvaWQgMCxuZXcgWGwoe3R5cGU6InJlY29yZCIsa2V5VHlwZTptLHZhbHVlVHlwZTpzLC4uLm5vcm1hbGl6ZVBhcmFtcyhkKX0pfWZ1bmN0aW9uIGxvb3NlUmVjb3JkKGUscyxkKXtyZXR1cm4gbmV3IFhsKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6cyxtb2RlOiJsb29zZSIsLi4ubm9ybWFsaXplUGFyYW1zKGQpfSl9Y29uc3QgWWw9JGNvbnN0cnVjdG9yKCJab2RNYXAiLChlLHMpPT57bHMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+bWFwUHJvY2Vzc29yKDAsZSksZS5rZXlUeXBlPXMua2V5VHlwZSxlLnZhbHVlVHlwZT1zLnZhbHVlVHlwZSxlLm1pbj0oLi4ucyk9PmUuY2hlY2soX21pblNpemUoLi4ucykpLGUubm9uZW1wdHk9cz0+ZS5jaGVjayhfbWluU2l6ZSgxLHMpKSxlLm1heD0oLi4ucyk9PmUuY2hlY2soX21heFNpemUoLi4ucykpLGUuc2l6ZT0oLi4ucyk9PmUuY2hlY2soX3NpemUoLi4ucykpfSk7ZnVuY3Rpb24gbWFwKGUscyxkKXtyZXR1cm4gbmV3IFlsKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6cywuLi5ub3JtYWxpemVQYXJhbXMoZCl9KX1jb25zdCBlYz0kY29uc3RydWN0b3IoIlpvZFNldCIsKGUscyk9Pntjcy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0oZSxzLGQpPT5zZXRQcm9jZXNzb3IoMCxlKSxlLm1pbj0oLi4ucyk9PmUuY2hlY2soX21pblNpemUoLi4ucykpLGUubm9uZW1wdHk9cz0+ZS5jaGVjayhfbWluU2l6ZSgxLHMpKSxlLm1heD0oLi4ucyk9PmUuY2hlY2soX21heFNpemUoLi4ucykpLGUuc2l6ZT0oLi4ucyk9PmUuY2hlY2soX3NpemUoLi4ucykpfSk7ZnVuY3Rpb24gc2V0KGUscyl7cmV0dXJuIG5ldyBlYyh7dHlwZToic2V0Iix2YWx1ZVR5cGU6ZSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1jb25zdCBpYz0kY29uc3RydWN0b3IoIlpvZEVudW0iLChlLHMpPT57dXMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+ZW51bVByb2Nlc3NvcihlLDAsZCksZS5lbnVtPXMuZW50cmllcyxlLm9wdGlvbnM9T2JqZWN0LnZhbHVlcyhzLmVudHJpZXMpO2NvbnN0IGQ9bmV3IFNldChPYmplY3Qua2V5cyhzLmVudHJpZXMpKTtlLmV4dHJhY3Q9KGUsbSk9Pntjb25zdCBoPXt9O2Zvcihjb25zdCBtIG9mIGUpe2lmKCFkLmhhcyhtKSl0aHJvdyBuZXcgRXJyb3IoYEtleSAke219IG5vdCBmb3VuZCBpbiBlbnVtYCk7aFttXT1zLmVudHJpZXNbbV19cmV0dXJuIG5ldyBpYyh7Li4ucyxjaGVja3M6W10sLi4ubm9ybWFsaXplUGFyYW1zKG0pLGVudHJpZXM6aH0pfSxlLmV4Y2x1ZGU9KGUsbSk9Pntjb25zdCBoPXsuLi5zLmVudHJpZXN9O2Zvcihjb25zdCBzIG9mIGUpe2lmKCFkLmhhcyhzKSl0aHJvdyBuZXcgRXJyb3IoYEtleSAke3N9IG5vdCBmb3VuZCBpbiBlbnVtYCk7ZGVsZXRlIGhbc119cmV0dXJuIG5ldyBpYyh7Li4ucyxjaGVja3M6W10sLi4ubm9ybWFsaXplUGFyYW1zKG0pLGVudHJpZXM6aH0pfX0pO2Z1bmN0aW9uIF9lbnVtKGUscyl7Y29uc3QgZD1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChlPT5bZSxlXSkpOmU7cmV0dXJuIG5ldyBpYyh7dHlwZToiZW51bSIsZW50cmllczpkLC4uLm5vcm1hbGl6ZVBhcmFtcyhzKX0pfWZ1bmN0aW9uIG5hdGl2ZUVudW0oZSxzKXtyZXR1cm4gbmV3IGljKHt0eXBlOiJlbnVtIixlbnRyaWVzOmUsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgYWM9JGNvbnN0cnVjdG9yKCJab2RMaXRlcmFsIiwoZSxzKT0+e2RzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmxpdGVyYWxQcm9jZXNzb3IoZSxzLGQpLGUudmFsdWVzPW5ldyBTZXQocy52YWx1ZXMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ2YWx1ZSIse2dldCgpe2lmKHMudmFsdWVzLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiVGhpcyBzY2hlbWEgY29udGFpbnMgbXVsdGlwbGUgdmFsaWQgbGl0ZXJhbCB2YWx1ZXMuIFVzZSBgLnZhbHVlc2AgaW5zdGVhZC4iKTtyZXR1cm4gcy52YWx1ZXNbMF19fSl9KTtmdW5jdGlvbiBsaXRlcmFsKGUscyl7cmV0dXJuIG5ldyBhYyh7dHlwZToibGl0ZXJhbCIsdmFsdWVzOkFycmF5LmlzQXJyYXkoZSk/ZTpbZV0sLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3Qgc2M9JGNvbnN0cnVjdG9yKCJab2RGaWxlIiwoZSxzKT0+e3BzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmZpbGVQcm9jZXNzb3IoZSwwLGQpLGUubWluPShzLGQpPT5lLmNoZWNrKF9taW5TaXplKHMsZCkpLGUubWF4PShzLGQpPT5lLmNoZWNrKF9tYXhTaXplKHMsZCkpLGUubWltZT0ocyxkKT0+ZS5jaGVjayhfbWltZShBcnJheS5pc0FycmF5KHMpP3M6W3NdLGQpKX0pO2Z1bmN0aW9uIGZpbGUoZSl7cmV0dXJuIF9maWxlKHNjLGUpfWNvbnN0IGNjPSRjb25zdHJ1Y3RvcigiWm9kVHJhbnNmb3JtIiwoZSxzKT0+e21zLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9PnRyYW5zZm9ybVByb2Nlc3NvcigwLGUpLGUuX3pvZC5wYXJzZT0oZCxtKT0+e2lmKCJiYWNrd2FyZCI9PT1tLmRpcmVjdGlvbil0aHJvdyBuZXcgJFpvZEVuY29kZUVycm9yKGUuY29uc3RydWN0b3IubmFtZSk7ZC5hZGRJc3N1ZT1tPT57aWYoInN0cmluZyI9PXR5cGVvZiBtKWQuaXNzdWVzLnB1c2goaXNzdWUobSxkLnZhbHVlLHMpKTtlbHNle2NvbnN0IHM9bTtzLmZhdGFsJiYocy5jb250aW51ZT0hMSkscy5jb2RlPz8ocy5jb2RlPSJjdXN0b20iKSxzLmlucHV0Pz8ocy5pbnB1dD1kLnZhbHVlKSxzLmluc3Q/PyhzLmluc3Q9ZSksZC5pc3N1ZXMucHVzaChpc3N1ZShzKSl9fTtjb25zdCBoPXMudHJhbnNmb3JtKGQudmFsdWUsZCk7cmV0dXJuIGggaW5zdGFuY2VvZiBQcm9taXNlP2gudGhlbihlPT4oZC52YWx1ZT1lLGQpKTooZC52YWx1ZT1oLGQpfX0pO2Z1bmN0aW9uIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IGNjKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3QgdWM9JGNvbnN0cnVjdG9yKCJab2RPcHRpb25hbCIsKGUscyk9Pntmcy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5vcHRpb25hbFByb2Nlc3NvcihlLHMsMCxtKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBvcHRpb25hbChlKXtyZXR1cm4gbmV3IHVjKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmV9KX1jb25zdCBkYz0kY29uc3RydWN0b3IoIlpvZEV4YWN0T3B0aW9uYWwiLChlLHMpPT57aHMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+b3B0aW9uYWxQcm9jZXNzb3IoZSxzLDAsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gZXhhY3RPcHRpb25hbChlKXtyZXR1cm4gbmV3IGRjKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmV9KX1jb25zdCBmYz0kY29uc3RydWN0b3IoIlpvZE51bGxhYmxlIiwoZSxzKT0+e2dzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9Pm51bGxhYmxlUHJvY2Vzc29yKGUscyxkLG0pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIG51bGxhYmxlKGUpe3JldHVybiBuZXcgZmMoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6ZX0pfWZ1bmN0aW9uIG51bGxpc2goZSl7cmV0dXJuIG9wdGlvbmFsKG51bGxhYmxlKGUpKX1jb25zdCBoYz0kY29uc3RydWN0b3IoIlpvZERlZmF1bHQiLChlLHMpPT57dnMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+ZGVmYXVsdFByb2Nlc3NvcihlLHMsZCxtKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGUsZS5yZW1vdmVEZWZhdWx0PWUudW53cmFwfSk7ZnVuY3Rpb24gX2RlZmF1bHQkMihlLHMpe3JldHVybiBuZXcgaGMoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKCk6c2hhbGxvd0Nsb25lKHMpfX0pfWNvbnN0IGdjPSRjb25zdHJ1Y3RvcigiWm9kUHJlZmF1bHQiLChlLHMpPT57eXMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+cHJlZmF1bHRQcm9jZXNzb3IoZSxzLGQsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gcHJlZmF1bHQoZSxzKXtyZXR1cm4gbmV3IGdjKHt0eXBlOiJwcmVmYXVsdCIsaW5uZXJUeXBlOmUsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3MoKTpzaGFsbG93Q2xvbmUocyl9fSl9Y29uc3QgdmM9JGNvbnN0cnVjdG9yKCJab2ROb25PcHRpb25hbCIsKGUscyk9Pnticy5pbml0KGUscyksc2wuaW5pdChlLHMpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocyxkLG0pPT5ub25vcHRpb25hbFByb2Nlc3NvcihlLHMsMCxtKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBub25vcHRpb25hbChlLHMpe3JldHVybiBuZXcgdmMoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6ZSwuLi5ub3JtYWxpemVQYXJhbXMocyl9KX1jb25zdCB5Yz0kY29uc3RydWN0b3IoIlpvZFN1Y2Nlc3MiLChlLHMpPT57X3MuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+c3VjY2Vzc1Byb2Nlc3NvcigwLDAscyksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gc3VjY2VzcyhlKXtyZXR1cm4gbmV3IHljKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6ZX0pfWNvbnN0IGJjPSRjb25zdHJ1Y3RvcigiWm9kQ2F0Y2giLChlLHMpPT57eHMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+Y2F0Y2hQcm9jZXNzb3IoZSxzLGQsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlLGUucmVtb3ZlQ2F0Y2g9ZS51bndyYXB9KTtmdW5jdGlvbiBfY2F0Y2goZSxzKXtyZXR1cm4gbmV3IGJjKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOmUsY2F0Y2hWYWx1ZToiZnVuY3Rpb24iPT10eXBlb2Ygcz9zOigpPT5zfSl9Y29uc3QgX2M9JGNvbnN0cnVjdG9yKCJab2ROYU4iLChlLHMpPT57d3MuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+bmFuUHJvY2Vzc29yKDAsZSl9KTtmdW5jdGlvbiBuYW4oZSl7cmV0dXJuIF9uYW4oX2MsZSl9Y29uc3QgeGM9JGNvbnN0cnVjdG9yKCJab2RQaXBlIiwoZSxzKT0+eyRzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnBpcGVQcm9jZXNzb3IoZSxzLDAsbSksZS5pbj1zLmluLGUub3V0PXMub3V0fSk7ZnVuY3Rpb24gcGlwZShlLHMpe3JldHVybiBuZXcgeGMoe3R5cGU6InBpcGUiLGluOmUsb3V0OnN9KX1jb25zdCB3Yz0kY29uc3RydWN0b3IoIlpvZENvZGVjIiwoZSxzKT0+e3hjLmluaXQoZSxzKSxTcy5pbml0KGUscyl9KTtmdW5jdGlvbiBjb2RlYyhlLHMsZCl7cmV0dXJuIG5ldyB3Yyh7dHlwZToicGlwZSIsaW46ZSxvdXQ6cyx0cmFuc2Zvcm06ZC5kZWNvZGUscmV2ZXJzZVRyYW5zZm9ybTpkLmVuY29kZX0pfWNvbnN0IGtjPSRjb25zdHJ1Y3RvcigiWm9kUmVhZG9ubHkiLChlLHMpPT57a3MuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+cmVhZG9ubHlQcm9jZXNzb3IoZSxzLGQsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gcmVhZG9ubHkoZSl7cmV0dXJuIG5ldyBrYyh7dHlwZToicmVhZG9ubHkiLGlubmVyVHlwZTplfSl9Y29uc3QgemM9JGNvbnN0cnVjdG9yKCJab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHMpPT57anMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHMsZCxtKT0+dGVtcGxhdGVMaXRlcmFsUHJvY2Vzc29yKGUsMCxkKX0pO2Z1bmN0aW9uIHRlbXBsYXRlTGl0ZXJhbChlLHMpe3JldHVybiBuZXcgemMoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOmUsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSl9Y29uc3QgQ2M9JGNvbnN0cnVjdG9yKCJab2RMYXp5IiwoZSxzKT0+e0NzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PmxhenlQcm9jZXNzb3IoZSxzLDAsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuZ2V0dGVyKCl9KTtmdW5jdGlvbiBsYXp5KGUpe3JldHVybiBuZXcgQ2Moe3R5cGU6ImxhenkiLGdldHRlcjplfSl9Y29uc3QgUmM9JGNvbnN0cnVjdG9yKCJab2RQcm9taXNlIiwoZSxzKT0+e0lzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShzLGQsbSk9PnByb21pc2VQcm9jZXNzb3IoZSxzLDAsbSksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gcHJvbWlzZShlKXtyZXR1cm4gbmV3IFJjKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6ZX0pfWNvbnN0IE9jPSRjb25zdHJ1Y3RvcigiWm9kRnVuY3Rpb24iLChlLHMpPT57enMuaW5pdChlLHMpLHNsLmluaXQoZSxzKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KGUscyxkKT0+ZnVuY3Rpb25Qcm9jZXNzb3IoMCxlKX0pO2Z1bmN0aW9uIF9mdW5jdGlvbihlKXtyZXR1cm4gbmV3IE9jKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6QXJyYXkuaXNBcnJheShlPy5pbnB1dCk/dHVwbGUoZT8uaW5wdXQpOmU/LmlucHV0Pz9hcnJheSh1bmtub3duKCkpLG91dHB1dDplPy5vdXRwdXQ/P3Vua25vd24oKX0pfWNvbnN0IFBjPSRjb25zdHJ1Y3RvcigiWm9kQ3VzdG9tIiwoZSxzKT0+e1RzLmluaXQoZSxzKSxzbC5pbml0KGUscyksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShlLHMsZCk9PmN1c3RvbVByb2Nlc3NvcigwLGUpfSk7ZnVuY3Rpb24gY2hlY2soZSl7Y29uc3Qgcz1uZXcgRW8oe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIHMuX3pvZC5jaGVjaz1lLHN9ZnVuY3Rpb24gY3VzdG9tKGUscyl7cmV0dXJuIF9jdXN0b20oUGMsZT8/KCgpPT4hMCkscyl9ZnVuY3Rpb24gcmVmaW5lKGUscz17fSl7cmV0dXJuIF9yZWZpbmUoUGMsZSxzKX1mdW5jdGlvbiBzdXBlclJlZmluZShlKXtyZXR1cm4gX3N1cGVyUmVmaW5lKGUpfWNvbnN0IE5jPWRlc2NyaWJlJDEsRGM9bWV0YSQxO2Z1bmN0aW9uIF9pbnN0YW5jZW9mKGUscz17fSl7Y29uc3QgZD1uZXcgUGMoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46cz0+cyBpbnN0YW5jZW9mIGUsYWJvcnQ6ITAsLi4ubm9ybWFsaXplUGFyYW1zKHMpfSk7cmV0dXJuIGQuX3pvZC5iYWcuQ2xhc3M9ZSxkLl96b2QuY2hlY2s9cz0+e3MudmFsdWUgaW5zdGFuY2VvZiBlfHxzLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOmUubmFtZSxpbnB1dDpzLnZhbHVlLGluc3Q6ZCxwYXRoOlsuLi5kLl96b2QuZGVmLnBhdGg/P1tdXX0pfSxkfWNvbnN0IHN0cmluZ2Jvb2w9KC4uLmUpPT5fc3RyaW5nYm9vbCh7Q29kZWM6d2MsQm9vbGVhbjpQbCxTdHJpbmc6Y2x9LC4uLmUpO2Z1bmN0aW9uIGpzb24oZSl7Y29uc3Qgcz1sYXp5KCgpPT51bmlvbiQxKFtzdHJpbmckMShlKSxudW1iZXIkMSgpLGJvb2xlYW4kMSgpLF9udWxsKCksYXJyYXkocykscmVjb3JkKHN0cmluZyQxKCkscyldKSk7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcHJvY2VzcyhlLHMpe3JldHVybiBwaXBlKHRyYW5zZm9ybShlKSxzKX1jb25zdCBBYz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kQW55OnFsLFpvZEFycmF5OlFsLFpvZEJhc2U2NDp6bCxab2RCYXNlNjRVUkw6SWwsWm9kQmlnSW50Ok5sLFpvZEJpZ0ludEZvcm1hdDpEbCxab2RCb29sZWFuOlBsLFpvZENJRFJ2NDprbCxab2RDSURSdjY6amwsWm9kQ1VJRDp2bCxab2RDVUlEMjp5bCxab2RDYXRjaDpiYyxab2RDb2RlYzp3Yyxab2RDdXN0b206UGMsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlJsLFpvZERhdGU6TWwsWm9kRGVmYXVsdDpoYyxab2REaXNjcmltaW5hdGVkVW5pb246SmwsWm9kRTE2NDpDbCxab2RFbWFpbDpkbCxab2RFbW9qaTpobCxab2RFbnVtOmljLFpvZEV4YWN0T3B0aW9uYWw6ZGMsWm9kRmlsZTpzYyxab2RGdW5jdGlvbjpPYyxab2RHVUlEOnBsLFpvZElQdjQ6d2wsWm9kSVB2NjpTbCxab2RJbnRlcnNlY3Rpb246S2wsWm9kSldUOlRsLFpvZEtTVUlEOnhsLFpvZExhenk6Q2MsWm9kTGl0ZXJhbDphYyxab2RNQUM6JGwsWm9kTWFwOllsLFpvZE5hTjpfYyxab2ROYW5vSUQ6Z2wsWm9kTmV2ZXI6QmwsWm9kTm9uT3B0aW9uYWw6dmMsWm9kTnVsbDpBbCxab2ROdWxsYWJsZTpmYyxab2ROdW1iZXI6RWwsWm9kTnVtYmVyRm9ybWF0Ok9sLFpvZE9iamVjdDpWbCxab2RPcHRpb25hbDp1Yyxab2RQaXBlOnhjLFpvZFByZWZhdWx0OmdjLFpvZFByb21pc2U6UmMsWm9kUmVhZG9ubHk6a2MsWm9kUmVjb3JkOlhsLFpvZFNldDplYyxab2RTdHJpbmc6Y2wsWm9kU3RyaW5nRm9ybWF0OnVsLFpvZFN1Y2Nlc3M6eWMsWm9kU3ltYm9sOlVsLFpvZFRlbXBsYXRlTGl0ZXJhbDp6Yyxab2RUcmFuc2Zvcm06Y2MsWm9kVHVwbGU6R2wsWm9kVHlwZTpzbCxab2RVTElEOmJsLFpvZFVSTDpmbCxab2RVVUlEOm1sLFpvZFVuZGVmaW5lZDpMbCxab2RVbmlvbjpIbCxab2RVbmtub3duOkZsLFpvZFZvaWQ6WmwsWm9kWElEOl9sLFpvZFhvcjpXbCxfWm9kU3RyaW5nOmxsLF9kZWZhdWx0Ol9kZWZhdWx0JDIsX2Z1bmN0aW9uOl9mdW5jdGlvbixhbnk6YW55LGFycmF5OmFycmF5LGJhc2U2NDpiYXNlNjQsYmFzZTY0dXJsOmJhc2U2NHVybCxiaWdpbnQ6YmlnaW50JDEsYm9vbGVhbjpib29sZWFuJDEsY2F0Y2g6X2NhdGNoLGNoZWNrOmNoZWNrLGNpZHJ2NDpjaWRydjQsY2lkcnY2OmNpZHJ2Nixjb2RlYzpjb2RlYyxjdWlkOmN1aWQsY3VpZDI6Y3VpZDIsY3VzdG9tOmN1c3RvbSxkYXRlOmRhdGUkMSxkZXNjcmliZTpOYyxkaXNjcmltaW5hdGVkVW5pb246ZGlzY3JpbWluYXRlZFVuaW9uLGUxNjQ6ZTE2NCxlbWFpbDplbWFpbCxlbW9qaTplbW9qaSxlbnVtOl9lbnVtLGV4YWN0T3B0aW9uYWw6ZXhhY3RPcHRpb25hbCxmaWxlOmZpbGUsZmxvYXQzMjpmbG9hdDMyLGZsb2F0NjQ6ZmxvYXQ2NCxmdW5jdGlvbjpfZnVuY3Rpb24sZ3VpZDpndWlkLGhhc2g6aGFzaCxoZXg6aGV4LGhvc3RuYW1lOmhvc3RuYW1lLGh0dHBVcmw6aHR0cFVybCxpbnN0YW5jZW9mOl9pbnN0YW5jZW9mLGludDppbnQsaW50MzI6aW50MzIsaW50NjQ6aW50NjQsaW50ZXJzZWN0aW9uOmludGVyc2VjdGlvbixpcHY0OmlwdjQsaXB2NjppcHY2LGpzb246anNvbixqd3Q6and0LGtleW9mOmtleW9mLGtzdWlkOmtzdWlkLGxhenk6bGF6eSxsaXRlcmFsOmxpdGVyYWwsbG9vc2VPYmplY3Q6bG9vc2VPYmplY3QsbG9vc2VSZWNvcmQ6bG9vc2VSZWNvcmQsbWFjOm1hYyxtYXA6bWFwLG1ldGE6RGMsbmFuOm5hbixuYW5vaWQ6bmFub2lkLG5hdGl2ZUVudW06bmF0aXZlRW51bSxuZXZlcjpuZXZlcixub25vcHRpb25hbDpub25vcHRpb25hbCxudWxsOl9udWxsLG51bGxhYmxlOm51bGxhYmxlLG51bGxpc2g6bnVsbGlzaCxudW1iZXI6bnVtYmVyJDEsb2JqZWN0Om9iamVjdCxvcHRpb25hbDpvcHRpb25hbCxwYXJ0aWFsUmVjb3JkOnBhcnRpYWxSZWNvcmQscGlwZTpwaXBlLHByZWZhdWx0OnByZWZhdWx0LHByZXByb2Nlc3M6cHJlcHJvY2Vzcyxwcm9taXNlOnByb21pc2UscmVhZG9ubHk6cmVhZG9ubHkscmVjb3JkOnJlY29yZCxyZWZpbmU6cmVmaW5lLHNldDpzZXQsc3RyaWN0T2JqZWN0OnN0cmljdE9iamVjdCxzdHJpbmc6c3RyaW5nJDEsc3RyaW5nRm9ybWF0OnN0cmluZ0Zvcm1hdCxzdHJpbmdib29sOnN0cmluZ2Jvb2wsc3VjY2VzczpzdWNjZXNzLHN1cGVyUmVmaW5lOnN1cGVyUmVmaW5lLHN5bWJvbDpzeW1ib2wsdGVtcGxhdGVMaXRlcmFsOnRlbXBsYXRlTGl0ZXJhbCx0cmFuc2Zvcm06dHJhbnNmb3JtLHR1cGxlOnR1cGxlLHVpbnQzMjp1aW50MzIsdWludDY0OnVpbnQ2NCx1bGlkOnVsaWQsdW5kZWZpbmVkOl91bmRlZmluZWQsdW5pb246dW5pb24kMSx1bmtub3duOnVua25vd24sdXJsOnVybCx1dWlkOnV1aWQsdXVpZHY0OnV1aWR2NCx1dWlkdjY6dXVpZHY2LHV1aWR2Nzp1dWlkdjcsdm9pZDpfdm9pZCx4aWQ6eGlkLHhvcjp4b3J9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7dmFyIHFjO3FjfHwocWM9e30pO2NvbnN0IEJjPXsuLi5BYywuLi5Gcyxpc286VnN9LGV1PW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIGNvbnZlcnRCYXNlU2NoZW1hKGUscyl7aWYodm9pZCAwIT09ZS5ub3Qpe2lmKCJvYmplY3QiPT10eXBlb2YgZS5ub3QmJjA9PT1PYmplY3Qua2V5cyhlLm5vdCkubGVuZ3RoKXJldHVybiBCYy5uZXZlcigpO3Rocm93IG5ldyBFcnJvcigibm90IGlzIG5vdCBzdXBwb3J0ZWQgaW4gWm9kIChleGNlcHQgeyBub3Q6IHt9IH0gZm9yIG5ldmVyKSIpfWlmKHZvaWQgMCE9PWUudW5ldmFsdWF0ZWRJdGVtcyl0aHJvdyBuZXcgRXJyb3IoInVuZXZhbHVhdGVkSXRlbXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHZvaWQgMCE9PWUudW5ldmFsdWF0ZWRQcm9wZXJ0aWVzKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZih2b2lkIDAhPT1lLmlmfHx2b2lkIDAhPT1lLnRoZW58fHZvaWQgMCE9PWUuZWxzZSl0aHJvdyBuZXcgRXJyb3IoIkNvbmRpdGlvbmFsIHNjaGVtYXMgKGlmL3RoZW4vZWxzZSkgYXJlIG5vdCBzdXBwb3J0ZWQiKTtpZih2b2lkIDAhPT1lLmRlcGVuZGVudFNjaGVtYXN8fHZvaWQgMCE9PWUuZGVwZW5kZW50UmVxdWlyZWQpdGhyb3cgbmV3IEVycm9yKCJkZXBlbmRlbnRTY2hlbWFzIGFuZCBkZXBlbmRlbnRSZXF1aXJlZCBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuJHJlZil7Y29uc3QgZD1lLiRyZWY7aWYocy5yZWZzLmhhcyhkKSlyZXR1cm4gcy5yZWZzLmdldChkKTtpZihzLnByb2Nlc3NpbmcuaGFzKGQpKXJldHVybiBCYy5sYXp5KCgpPT57aWYoIXMucmVmcy5oYXMoZCkpdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciByZWZlcmVuY2Ugbm90IHJlc29sdmVkOiAke2R9YCk7cmV0dXJuIHMucmVmcy5nZXQoZCl9KTtzLnByb2Nlc3NpbmcuYWRkKGQpO2NvbnN0IG09ZnVuY3Rpb24oZSxzKXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3QgZD1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gcy5yb290U2NoZW1hO2NvbnN0IG09ImRyYWZ0LTIwMjAtMTIiPT09cy52ZXJzaW9uPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihkWzBdPT09bSl7Y29uc3QgbT1kWzFdO2lmKCFtfHwhcy5kZWZzW21dKXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiBzLmRlZnNbbV19dGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2Ugbm90IGZvdW5kOiAke2V9YCl9KGQscyksaD1jb252ZXJ0U2NoZW1hKG0scyk7cmV0dXJuIHMucmVmcy5zZXQoZCxoKSxzLnByb2Nlc3NpbmcuZGVsZXRlKGQpLGh9aWYodm9pZCAwIT09ZS5lbnVtKXtjb25zdCBkPWUuZW51bTtpZigib3BlbmFwaS0zLjAiPT09cy52ZXJzaW9uJiYhMD09PWUubnVsbGFibGUmJjE9PT1kLmxlbmd0aCYmbnVsbD09PWRbMF0pcmV0dXJuIEJjLm51bGwoKTtpZigwPT09ZC5sZW5ndGgpcmV0dXJuIEJjLm5ldmVyKCk7aWYoMT09PWQubGVuZ3RoKXJldHVybiBCYy5saXRlcmFsKGRbMF0pO2lmKGQuZXZlcnkoZT0+InN0cmluZyI9PXR5cGVvZiBlKSlyZXR1cm4gQmMuZW51bShkKTtjb25zdCBtPWQubWFwKGU9PkJjLmxpdGVyYWwoZSkpO3JldHVybiBtLmxlbmd0aDwyP21bMF06QmMudW5pb24oW21bMF0sbVsxXSwuLi5tLnNsaWNlKDIpXSl9aWYodm9pZCAwIT09ZS5jb25zdClyZXR1cm4gQmMubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBkPWUudHlwZTtpZihBcnJheS5pc0FycmF5KGQpKXtjb25zdCBtPWQubWFwKGQ9PmNvbnZlcnRCYXNlU2NoZW1hKHsuLi5lLHR5cGU6ZH0scykpO3JldHVybiAwPT09bS5sZW5ndGg/QmMubmV2ZXIoKToxPT09bS5sZW5ndGg/bVswXTpCYy51bmlvbihtKX1pZighZClyZXR1cm4gQmMuYW55KCk7bGV0IG07c3dpdGNoKGQpe2Nhc2Uic3RyaW5nIjp7bGV0IHM9QmMuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IGQ9ZS5mb3JtYXQ7ImVtYWlsIj09PWQ/cz1zLmNoZWNrKEJjLmVtYWlsKCkpOiJ1cmkiPT09ZHx8InVyaS1yZWZlcmVuY2UiPT09ZD9zPXMuY2hlY2soQmMudXJsKCkpOiJ1dWlkIj09PWR8fCJndWlkIj09PWQ/cz1zLmNoZWNrKEJjLnV1aWQoKSk6ImRhdGUtdGltZSI9PT1kP3M9cy5jaGVjayhCYy5pc28uZGF0ZXRpbWUoKSk6ImRhdGUiPT09ZD9zPXMuY2hlY2soQmMuaXNvLmRhdGUoKSk6InRpbWUiPT09ZD9zPXMuY2hlY2soQmMuaXNvLnRpbWUoKSk6ImR1cmF0aW9uIj09PWQ/cz1zLmNoZWNrKEJjLmlzby5kdXJhdGlvbigpKToiaXB2NCI9PT1kP3M9cy5jaGVjayhCYy5pcHY0KCkpOiJpcHY2Ij09PWQ/cz1zLmNoZWNrKEJjLmlwdjYoKSk6Im1hYyI9PT1kP3M9cy5jaGVjayhCYy5tYWMoKSk6ImNpZHIiPT09ZD9zPXMuY2hlY2soQmMuY2lkcnY0KCkpOiJjaWRyLXY2Ij09PWQ/cz1zLmNoZWNrKEJjLmNpZHJ2NigpKToiYmFzZTY0Ij09PWQ/cz1zLmNoZWNrKEJjLmJhc2U2NCgpKToiYmFzZTY0dXJsIj09PWQ/cz1zLmNoZWNrKEJjLmJhc2U2NHVybCgpKToiZTE2NCI9PT1kP3M9cy5jaGVjayhCYy5lMTY0KCkpOiJqd3QiPT09ZD9zPXMuY2hlY2soQmMuand0KCkpOiJlbW9qaSI9PT1kP3M9cy5jaGVjayhCYy5lbW9qaSgpKToibmFub2lkIj09PWQ/cz1zLmNoZWNrKEJjLm5hbm9pZCgpKToiY3VpZCI9PT1kP3M9cy5jaGVjayhCYy5jdWlkKCkpOiJjdWlkMiI9PT1kP3M9cy5jaGVjayhCYy5jdWlkMigpKToidWxpZCI9PT1kP3M9cy5jaGVjayhCYy51bGlkKCkpOiJ4aWQiPT09ZD9zPXMuY2hlY2soQmMueGlkKCkpOiJrc3VpZCI9PT1kJiYocz1zLmNoZWNrKEJjLmtzdWlkKCkpKX0ibnVtYmVyIj09dHlwZW9mIGUubWluTGVuZ3RoJiYocz1zLm1pbihlLm1pbkxlbmd0aCkpLCJudW1iZXIiPT10eXBlb2YgZS5tYXhMZW5ndGgmJihzPXMubWF4KGUubWF4TGVuZ3RoKSksZS5wYXR0ZXJuJiYocz1zLnJlZ2V4KG5ldyBSZWdFeHAoZS5wYXR0ZXJuKSkpLG09czticmVha31jYXNlIm51bWJlciI6Y2FzZSJpbnRlZ2VyIjp7bGV0IHM9ImludGVnZXIiPT09ZD9CYy5udW1iZXIoKS5pbnQoKTpCYy5udW1iZXIoKTsibnVtYmVyIj09dHlwZW9mIGUubWluaW11bSYmKHM9cy5taW4oZS5taW5pbXVtKSksIm51bWJlciI9PXR5cGVvZiBlLm1heGltdW0mJihzPXMubWF4KGUubWF4aW11bSkpLCJudW1iZXIiPT10eXBlb2YgZS5leGNsdXNpdmVNaW5pbXVtP3M9cy5ndChlLmV4Y2x1c2l2ZU1pbmltdW0pOiEwPT09ZS5leGNsdXNpdmVNaW5pbXVtJiYibnVtYmVyIj09dHlwZW9mIGUubWluaW11bSYmKHM9cy5ndChlLm1pbmltdW0pKSwibnVtYmVyIj09dHlwZW9mIGUuZXhjbHVzaXZlTWF4aW11bT9zPXMubHQoZS5leGNsdXNpdmVNYXhpbXVtKTohMD09PWUuZXhjbHVzaXZlTWF4aW11bSYmIm51bWJlciI9PXR5cGVvZiBlLm1heGltdW0mJihzPXMubHQoZS5tYXhpbXVtKSksIm51bWJlciI9PXR5cGVvZiBlLm11bHRpcGxlT2YmJihzPXMubXVsdGlwbGVPZihlLm11bHRpcGxlT2YpKSxtPXM7YnJlYWt9Y2FzZSJib29sZWFuIjptPUJjLmJvb2xlYW4oKTticmVhaztjYXNlIm51bGwiOm09QmMubnVsbCgpO2JyZWFrO2Nhc2Uib2JqZWN0Ijp7Y29uc3QgZD17fSxoPWUucHJvcGVydGllc3x8e30sZz1uZXcgU2V0KGUucmVxdWlyZWR8fFtdKTtmb3IoY29uc3RbZSxtXW9mIE9iamVjdC5lbnRyaWVzKGgpKXtjb25zdCBoPWNvbnZlcnRTY2hlbWEobSxzKTtkW2VdPWcuaGFzKGUpP2g6aC5vcHRpb25hbCgpfWlmKGUucHJvcGVydHlOYW1lcyl7Y29uc3QgaD1jb252ZXJ0U2NoZW1hKGUucHJvcGVydHlOYW1lcyxzKSxnPWUuYWRkaXRpb25hbFByb3BlcnRpZXMmJiJvYmplY3QiPT10eXBlb2YgZS5hZGRpdGlvbmFsUHJvcGVydGllcz9jb252ZXJ0U2NoZW1hKGUuYWRkaXRpb25hbFByb3BlcnRpZXMscyk6QmMuYW55KCk7aWYoMD09PU9iamVjdC5rZXlzKGQpLmxlbmd0aCl7bT1CYy5yZWNvcmQoaCxnKTticmVha31jb25zdCB4PUJjLm9iamVjdChkKS5wYXNzdGhyb3VnaCgpLCQ9QmMubG9vc2VSZWNvcmQoaCxnKTttPUJjLmludGVyc2VjdGlvbih4LCQpO2JyZWFrfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxnPU9iamVjdC5rZXlzKGgpLHg9W107Zm9yKGNvbnN0IGUgb2YgZyl7Y29uc3QgZD1jb252ZXJ0U2NoZW1hKGhbZV0scyksbT1CYy5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKGUpKTt4LnB1c2goQmMubG9vc2VSZWNvcmQobSxkKSl9Y29uc3QgJD1bXTtpZihPYmplY3Qua2V5cyhkKS5sZW5ndGg+MCYmJC5wdXNoKEJjLm9iamVjdChkKS5wYXNzdGhyb3VnaCgpKSwkLnB1c2goLi4ueCksMD09PSQubGVuZ3RoKW09QmMub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoMT09PSQubGVuZ3RoKW09JFswXTtlbHNle2xldCBlPUJjLmludGVyc2VjdGlvbigkWzBdLCRbMV0pO2ZvcihsZXQgcz0yO3M8JC5sZW5ndGg7cysrKWU9QmMuaW50ZXJzZWN0aW9uKGUsJFtzXSk7bT1lfWJyZWFrfWNvbnN0IHg9QmMub2JqZWN0KGQpO209ITE9PT1lLmFkZGl0aW9uYWxQcm9wZXJ0aWVzP3guc3RyaWN0KCk6Im9iamVjdCI9PXR5cGVvZiBlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzP3guY2F0Y2hhbGwoY29udmVydFNjaGVtYShlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLHMpKTp4LnBhc3N0aHJvdWdoKCk7YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IGQ9ZS5wcmVmaXhJdGVtcyxoPWUuaXRlbXM7aWYoZCYmQXJyYXkuaXNBcnJheShkKSl7Y29uc3QgZz1kLm1hcChlPT5jb252ZXJ0U2NoZW1hKGUscykpLHg9aCYmIm9iamVjdCI9PXR5cGVvZiBoJiYhQXJyYXkuaXNBcnJheShoKT9jb252ZXJ0U2NoZW1hKGgscyk6dm9pZCAwO209eD9CYy50dXBsZShnKS5yZXN0KHgpOkJjLnR1cGxlKGcpLCJudW1iZXIiPT10eXBlb2YgZS5taW5JdGVtcyYmKG09bS5jaGVjayhCYy5taW5MZW5ndGgoZS5taW5JdGVtcykpKSwibnVtYmVyIj09dHlwZW9mIGUubWF4SXRlbXMmJihtPW0uY2hlY2soQmMubWF4TGVuZ3RoKGUubWF4SXRlbXMpKSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGgpKXtjb25zdCBkPWgubWFwKGU9PmNvbnZlcnRTY2hlbWEoZSxzKSksZz1lLmFkZGl0aW9uYWxJdGVtcyYmIm9iamVjdCI9PXR5cGVvZiBlLmFkZGl0aW9uYWxJdGVtcz9jb252ZXJ0U2NoZW1hKGUuYWRkaXRpb25hbEl0ZW1zLHMpOnZvaWQgMDttPWc/QmMudHVwbGUoZCkucmVzdChnKTpCYy50dXBsZShkKSwibnVtYmVyIj09dHlwZW9mIGUubWluSXRlbXMmJihtPW0uY2hlY2soQmMubWluTGVuZ3RoKGUubWluSXRlbXMpKSksIm51bWJlciI9PXR5cGVvZiBlLm1heEl0ZW1zJiYobT1tLmNoZWNrKEJjLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYodm9pZCAwIT09aCl7Y29uc3QgZD1jb252ZXJ0U2NoZW1hKGgscyk7bGV0IGc9QmMuYXJyYXkoZCk7Im51bWJlciI9PXR5cGVvZiBlLm1pbkl0ZW1zJiYoZz1nLm1pbihlLm1pbkl0ZW1zKSksIm51bWJlciI9PXR5cGVvZiBlLm1heEl0ZW1zJiYoZz1nLm1heChlLm1heEl0ZW1zKSksbT1nfWVsc2UgbT1CYy5hcnJheShCYy5hbnkoKSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHR5cGU6ICR7ZH1gKX1yZXR1cm4gZS5kZXNjcmlwdGlvbiYmKG09bS5kZXNjcmliZShlLmRlc2NyaXB0aW9uKSksdm9pZCAwIT09ZS5kZWZhdWx0JiYobT1tLmRlZmF1bHQoZS5kZWZhdWx0KSksbX1mdW5jdGlvbiBjb252ZXJ0U2NoZW1hKGUscyl7aWYoImJvb2xlYW4iPT10eXBlb2YgZSlyZXR1cm4gZT9CYy5hbnkoKTpCYy5uZXZlcigpO2xldCBkPWNvbnZlcnRCYXNlU2NoZW1hKGUscyk7Y29uc3QgbT1lLnR5cGV8fHZvaWQgMCE9PWUuZW51bXx8dm9pZCAwIT09ZS5jb25zdDtpZihlLmFueU9mJiZBcnJheS5pc0FycmF5KGUuYW55T2YpKXtjb25zdCBoPWUuYW55T2YubWFwKGU9PmNvbnZlcnRTY2hlbWEoZSxzKSksZz1CYy51bmlvbihoKTtkPW0/QmMuaW50ZXJzZWN0aW9uKGQsZyk6Z31pZihlLm9uZU9mJiZBcnJheS5pc0FycmF5KGUub25lT2YpKXtjb25zdCBoPWUub25lT2YubWFwKGU9PmNvbnZlcnRTY2hlbWEoZSxzKSksZz1CYy54b3IoaCk7ZD1tP0JjLmludGVyc2VjdGlvbihkLGcpOmd9aWYoZS5hbGxPZiYmQXJyYXkuaXNBcnJheShlLmFsbE9mKSlpZigwPT09ZS5hbGxPZi5sZW5ndGgpZD1tP2Q6QmMuYW55KCk7ZWxzZXtsZXQgaD1tP2Q6Y29udmVydFNjaGVtYShlLmFsbE9mWzBdLHMpO2ZvcihsZXQgZD1tPzA6MTtkPGUuYWxsT2YubGVuZ3RoO2QrKyloPUJjLmludGVyc2VjdGlvbihoLGNvbnZlcnRTY2hlbWEoZS5hbGxPZltkXSxzKSk7ZD1ofSEwPT09ZS5udWxsYWJsZSYmIm9wZW5hcGktMy4wIj09PXMudmVyc2lvbiYmKGQ9QmMubnVsbGFibGUoZCkpLCEwPT09ZS5yZWFkT25seSYmKGQ9QmMucmVhZG9ubHkoZCkpO2NvbnN0IGg9e30sZz1bIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIl07Zm9yKGNvbnN0IHMgb2YgZylzIGluIGUmJihoW3NdPWVbc10pO2NvbnN0IHg9WyJjb250ZW50RW5jb2RpbmciLCJjb250ZW50TWVkaWFUeXBlIiwiY29udGVudFNjaGVtYSJdO2Zvcihjb25zdCBzIG9mIHgpcyBpbiBlJiYoaFtzXT1lW3NdKTtmb3IoY29uc3QgcyBvZiBPYmplY3Qua2V5cyhlKSlldS5oYXMocyl8fChoW3NdPWVbc10pO3JldHVybiBPYmplY3Qua2V5cyhoKS5sZW5ndGg+MCYmcy5yZWdpc3RyeS5hZGQoZCxoKSxkfWZ1bmN0aW9uIG51bWJlcihlKXtyZXR1cm4gX2NvZXJjZWROdW1iZXIoRWwsZSl9Y29uc3QgdHU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJpZ2ludDpmdW5jdGlvbihlKXtyZXR1cm4gX2NvZXJjZWRCaWdpbnQoTmwsZSl9LGJvb2xlYW46ZnVuY3Rpb24oZSl7cmV0dXJuIF9jb2VyY2VkQm9vbGVhbihQbCxlKX0sZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gX2NvZXJjZWREYXRlKE1sLGUpfSxudW1iZXI6bnVtYmVyLHN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gX2NvZXJjZWRTdHJpbmcoY2wsZSl9fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2NvbmZpZyhlbigpKTtjb25zdCBudT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJGJyYW5kOmdyLCRpbnB1dDpQcywkb3V0cHV0Ok9zLE5FVkVSOmhyLFRpbWVQcmVjaXNpb246RHMsWm9kQW55OnFsLFpvZEFycmF5OlFsLFpvZEJhc2U2NDp6bCxab2RCYXNlNjRVUkw6SWwsWm9kQmlnSW50Ok5sLFpvZEJpZ0ludEZvcm1hdDpEbCxab2RCb29sZWFuOlBsLFpvZENJRFJ2NDprbCxab2RDSURSdjY6amwsWm9kQ1VJRDp2bCxab2RDVUlEMjp5bCxab2RDYXRjaDpiYyxab2RDb2RlYzp3Yyxab2RDdXN0b206UGMsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlJsLFpvZERhdGU6TWwsWm9kRGVmYXVsdDpoYyxab2REaXNjcmltaW5hdGVkVW5pb246SmwsWm9kRTE2NDpDbCxab2RFbWFpbDpkbCxab2RFbW9qaTpobCxab2RFbnVtOmljLFpvZEVycm9yOkhzLFpvZEV4YWN0T3B0aW9uYWw6ZGMsWm9kRmlsZTpzYyxnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIHFjfSxab2RGdW5jdGlvbjpPYyxab2RHVUlEOnBsLFpvZElQdjQ6d2wsWm9kSVB2NjpTbCxab2RJU09EYXRlOlpzLFpvZElTT0RhdGVUaW1lOkJzLFpvZElTT0R1cmF0aW9uOlFzLFpvZElTT1RpbWU6TXMsWm9kSW50ZXJzZWN0aW9uOktsLFpvZElzc3VlQ29kZTp7aW52YWxpZF90eXBlOiJpbnZhbGlkX3R5cGUiLHRvb19iaWc6InRvb19iaWciLHRvb19zbWFsbDoidG9vX3NtYWxsIixpbnZhbGlkX2Zvcm1hdDoiaW52YWxpZF9mb3JtYXQiLG5vdF9tdWx0aXBsZV9vZjoibm90X211bHRpcGxlX29mIix1bnJlY29nbml6ZWRfa2V5czoidW5yZWNvZ25pemVkX2tleXMiLGludmFsaWRfdW5pb246ImludmFsaWRfdW5pb24iLGludmFsaWRfa2V5OiJpbnZhbGlkX2tleSIsaW52YWxpZF9lbGVtZW50OiJpbnZhbGlkX2VsZW1lbnQiLGludmFsaWRfdmFsdWU6ImludmFsaWRfdmFsdWUiLGN1c3RvbToiY3VzdG9tIn0sWm9kSldUOlRsLFpvZEtTVUlEOnhsLFpvZExhenk6Q2MsWm9kTGl0ZXJhbDphYyxab2RNQUM6JGwsWm9kTWFwOllsLFpvZE5hTjpfYyxab2ROYW5vSUQ6Z2wsWm9kTmV2ZXI6QmwsWm9kTm9uT3B0aW9uYWw6dmMsWm9kTnVsbDpBbCxab2ROdWxsYWJsZTpmYyxab2ROdW1iZXI6RWwsWm9kTnVtYmVyRm9ybWF0Ok9sLFpvZE9iamVjdDpWbCxab2RPcHRpb25hbDp1Yyxab2RQaXBlOnhjLFpvZFByZWZhdWx0OmdjLFpvZFByb21pc2U6UmMsWm9kUmVhZG9ubHk6a2MsWm9kUmVhbEVycm9yOldzLFpvZFJlY29yZDpYbCxab2RTZXQ6ZWMsWm9kU3RyaW5nOmNsLFpvZFN0cmluZ0Zvcm1hdDp1bCxab2RTdWNjZXNzOnljLFpvZFN5bWJvbDpVbCxab2RUZW1wbGF0ZUxpdGVyYWw6emMsWm9kVHJhbnNmb3JtOmNjLFpvZFR1cGxlOkdsLFpvZFR5cGU6c2wsWm9kVUxJRDpibCxab2RVUkw6ZmwsWm9kVVVJRDptbCxab2RVbmRlZmluZWQ6TGwsWm9kVW5pb246SGwsWm9kVW5rbm93bjpGbCxab2RWb2lkOlpsLFpvZFhJRDpfbCxab2RYb3I6V2wsX1pvZFN0cmluZzpsbCxfZGVmYXVsdDpfZGVmYXVsdCQyLF9mdW5jdGlvbjpfZnVuY3Rpb24sYW55OmFueSxhcnJheTphcnJheSxiYXNlNjQ6YmFzZTY0LGJhc2U2NHVybDpiYXNlNjR1cmwsYmlnaW50OmJpZ2ludCQxLGJvb2xlYW46Ym9vbGVhbiQxLGNhdGNoOl9jYXRjaCxjaGVjazpjaGVjayxjaWRydjQ6Y2lkcnY0LGNpZHJ2NjpjaWRydjYsY2xvbmU6Y2xvbmUsY29kZWM6Y29kZWMsY29lcmNlOnR1LGNvbmZpZzpjb25maWcsY29yZTpxcyxjdWlkOmN1aWQsY3VpZDI6Y3VpZDIsY3VzdG9tOmN1c3RvbSxkYXRlOmRhdGUkMSxkZWNvZGU6ZWwsZGVjb2RlQXN5bmM6bmwsZGVzY3JpYmU6TmMsZGlzY3JpbWluYXRlZFVuaW9uOmRpc2NyaW1pbmF0ZWRVbmlvbixlMTY0OmUxNjQsZW1haWw6ZW1haWwsZW1vamk6ZW1vamksZW5jb2RlOllzLGVuY29kZUFzeW5jOnRsLGVuZHNXaXRoOl9lbmRzV2l0aCxlbnVtOl9lbnVtLGV4YWN0T3B0aW9uYWw6ZXhhY3RPcHRpb25hbCxmaWxlOmZpbGUsZmxhdHRlbkVycm9yOmZsYXR0ZW5FcnJvcixmbG9hdDMyOmZsb2F0MzIsZmxvYXQ2NDpmbG9hdDY0LGZvcm1hdEVycm9yOmZvcm1hdEVycm9yLGZyb21KU09OU2NoZW1hOmZ1bmN0aW9uKGUscyl7aWYoImJvb2xlYW4iPT10eXBlb2YgZSlyZXR1cm4gZT9CYy5hbnkoKTpCYy5uZXZlcigpO2NvbnN0IGQ9ZnVuY3Rpb24oZSxzKXtjb25zdCBkPWUuJHNjaGVtYTtyZXR1cm4iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPT09ZD8iZHJhZnQtMjAyMC0xMiI6Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI9PT1kPyJkcmFmdC03IjoiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj09PWQ/ImRyYWZ0LTQiOnM/PyJkcmFmdC0yMDIwLTEyIn0oZSxzPy5kZWZhdWx0VGFyZ2V0KTtyZXR1cm4gY29udmVydFNjaGVtYShlLHt2ZXJzaW9uOmQsZGVmczplLiRkZWZzfHxlLmRlZmluaXRpb25zfHx7fSxyZWZzOm5ldyBNYXAscHJvY2Vzc2luZzpuZXcgU2V0LHJvb3RTY2hlbWE6ZSxyZWdpc3RyeTpzPy5yZWdpc3RyeT8/TnN9KX0sZnVuY3Rpb246X2Z1bmN0aW9uLGdldEVycm9yTWFwOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbmZpZygpLmN1c3RvbUVycm9yfSxnbG9iYWxSZWdpc3RyeTpOcyxndDpfZ3QsZ3RlOl9ndGUsZ3VpZDpndWlkLGhhc2g6aGFzaCxoZXg6aGV4LGhvc3RuYW1lOmhvc3RuYW1lLGh0dHBVcmw6aHR0cFVybCxpbmNsdWRlczpfaW5jbHVkZXMsaW5zdGFuY2VvZjpfaW5zdGFuY2VvZixpbnQ6aW50LGludDMyOmludDMyLGludDY0OmludDY0LGludGVyc2VjdGlvbjppbnRlcnNlY3Rpb24saXB2NDppcHY0LGlwdjY6aXB2Nixpc286VnMsanNvbjpqc29uLGp3dDpqd3Qsa2V5b2Y6a2V5b2Ysa3N1aWQ6a3N1aWQsbGF6eTpsYXp5LGxlbmd0aDpfbGVuZ3RoLGxpdGVyYWw6bGl0ZXJhbCxsb2NhbGVzOlJzLGxvb3NlT2JqZWN0Omxvb3NlT2JqZWN0LGxvb3NlUmVjb3JkOmxvb3NlUmVjb3JkLGxvd2VyY2FzZTpfbG93ZXJjYXNlLGx0Ol9sdCxsdGU6X2x0ZSxtYWM6bWFjLG1hcDptYXAsbWF4TGVuZ3RoOl9tYXhMZW5ndGgsbWF4U2l6ZTpfbWF4U2l6ZSxtZXRhOkRjLG1pbWU6X21pbWUsbWluTGVuZ3RoOl9taW5MZW5ndGgsbWluU2l6ZTpfbWluU2l6ZSxtdWx0aXBsZU9mOl9tdWx0aXBsZU9mLG5hbjpuYW4sbmFub2lkOm5hbm9pZCxuYXRpdmVFbnVtOm5hdGl2ZUVudW0sbmVnYXRpdmU6X25lZ2F0aXZlLG5ldmVyOm5ldmVyLG5vbm5lZ2F0aXZlOl9ub25uZWdhdGl2ZSxub25vcHRpb25hbDpub25vcHRpb25hbCxub25wb3NpdGl2ZTpfbm9ucG9zaXRpdmUsbm9ybWFsaXplOl9ub3JtYWxpemUsbnVsbDpfbnVsbCxudWxsYWJsZTpudWxsYWJsZSxudWxsaXNoOm51bGxpc2gsbnVtYmVyOm51bWJlciQxLG9iamVjdDpvYmplY3Qsb3B0aW9uYWw6b3B0aW9uYWwsb3ZlcndyaXRlOl9vdmVyd3JpdGUscGFyc2U6SnMscGFyc2VBc3luYzpLcyxwYXJ0aWFsUmVjb3JkOnBhcnRpYWxSZWNvcmQscGlwZTpwaXBlLHBvc2l0aXZlOl9wb3NpdGl2ZSxwcmVmYXVsdDpwcmVmYXVsdCxwcmVwcm9jZXNzOnByZXByb2Nlc3MscHJldHRpZnlFcnJvcjpwcmV0dGlmeUVycm9yLHByb21pc2U6cHJvbWlzZSxwcm9wZXJ0eTpfcHJvcGVydHkscmVhZG9ubHk6cmVhZG9ubHkscmVjb3JkOnJlY29yZCxyZWZpbmU6cmVmaW5lLHJlZ2V4Ol9yZWdleCxyZWdleGVzOlJvLHJlZ2lzdHJ5OnJlZ2lzdHJ5LHNhZmVEZWNvZGU6cmwsc2FmZURlY29kZUFzeW5jOmFsLHNhZmVFbmNvZGU6aWwsc2FmZUVuY29kZUFzeW5jOm9sLHNhZmVQYXJzZTpHcyxzYWZlUGFyc2VBc3luYzpYcyxzZXQ6c2V0LHNldEVycm9yTWFwOmZ1bmN0aW9uKGUpe2NvbmZpZyh7Y3VzdG9tRXJyb3I6ZX0pfSxzaXplOl9zaXplLHNsdWdpZnk6X3NsdWdpZnksc3RhcnRzV2l0aDpfc3RhcnRzV2l0aCxzdHJpY3RPYmplY3Q6c3RyaWN0T2JqZWN0LHN0cmluZzpzdHJpbmckMSxzdHJpbmdGb3JtYXQ6c3RyaW5nRm9ybWF0LHN0cmluZ2Jvb2w6c3RyaW5nYm9vbCxzdWNjZXNzOnN1Y2Nlc3Msc3VwZXJSZWZpbmU6c3VwZXJSZWZpbmUsc3ltYm9sOnN5bWJvbCx0ZW1wbGF0ZUxpdGVyYWw6dGVtcGxhdGVMaXRlcmFsLHRvSlNPTlNjaGVtYTp0b0pTT05TY2hlbWEsdG9Mb3dlckNhc2U6X3RvTG93ZXJDYXNlLHRvVXBwZXJDYXNlOl90b1VwcGVyQ2FzZSx0cmFuc2Zvcm06dHJhbnNmb3JtLHRyZWVpZnlFcnJvcjp0cmVlaWZ5RXJyb3IsdHJpbTpfdHJpbSx0dXBsZTp0dXBsZSx1aW50MzI6dWludDMyLHVpbnQ2NDp1aW50NjQsdWxpZDp1bGlkLHVuZGVmaW5lZDpfdW5kZWZpbmVkLHVuaW9uOnVuaW9uJDEsdW5rbm93bjp1bmtub3duLHVwcGVyY2FzZTpfdXBwZXJjYXNlLHVybDp1cmwsdXRpbDprcix1dWlkOnV1aWQsdXVpZHY0OnV1aWR2NCx1dWlkdjY6dXVpZHY2LHV1aWR2Nzp1dWlkdjcsdm9pZDpfdm9pZCx4aWQ6eGlkLHhvcjp4b3J9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksaXU9eyJhcHBsaWNhdGlvbi9wcnMuY3d3IjpbImN3dyJdLCJhcHBsaWNhdGlvbi9wcnMueHNmK3htbCI6WyJ4c2YiXSwiYXBwbGljYXRpb24vdm5kLjEwMDBtaW5kcy5kZWNpc2lvbi1tb2RlbCt4bWwiOlsiMWttIl0sImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1sYXJnZSI6WyJwbGIiXSwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsIjpbInBzYiJdLCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyIjpbInB2YiJdLCJhcHBsaWNhdGlvbi92bmQuM2dwcDIudGNhcCI6WyJ0Y2FwIl0sImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzIjpbInB3biJdLCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5hc28iOlsiYXNvIl0sImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmltcCI6WyJpbXAiXSwiYXBwbGljYXRpb24vdm5kLmFjdWNvYm9sIjpbImFjdSJdLCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ycCI6WyJhdGMiLCJhY3V0YyJdLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWlyLWFwcGxpY2F0aW9uLWluc3RhbGxlci1wYWNrYWdlK3ppcCI6WyJhaXIiXSwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZvcm1zY2VudHJhbC5mY2R0IjpbImZjZHQiXSwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cCI6WyJmeHAiLCJmeHBsIl0sImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sIjpbInhkcCJdLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZiI6WyIqeGZkZiJdLCJhcHBsaWNhdGlvbi92bmQuYWdlIjpbImFnZSJdLCJhcHBsaWNhdGlvbi92bmQuYWhlYWQuc3BhY2UiOlsiYWhlYWQiXSwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZiI6WyJhemYiXSwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6cyI6WyJhenMiXSwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9vayI6WyJhenciXSwiYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjIjpbImFjYyJdLCJhcHBsaWNhdGlvbi92bmQuYW1pZ2EuYW1pIjpbImFtaSJdLCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmUiOlsiYXBrIl0sImFwcGxpY2F0aW9uL3ZuZC5hbnNlci13ZWItY2VydGlmaWNhdGUtaXNzdWUtaW5pdGlhdGlvbiI6WyJjaWkiXSwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uIjpbImZ0aSJdLCJhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnQiOlsiYXR4Il0sImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sIjpbIm1wa2ciXSwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmtleW5vdGUiOlsia2V5Il0sImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIjpbIm0zdTgiXSwiYXBwbGljYXRpb24vdm5kLmFwcGxlLm51bWJlcnMiOlsibnVtYmVycyJdLCJhcHBsaWNhdGlvbi92bmQuYXBwbGUucGFnZXMiOlsicGFnZXMiXSwiYXBwbGljYXRpb24vdm5kLmFwcGxlLnBrcGFzcyI6WyJwa3Bhc3MiXSwiYXBwbGljYXRpb24vdm5kLmFyaXN0YW5ldHdvcmtzLnN3aSI6WyJzd2kiXSwiYXBwbGljYXRpb24vdm5kLmFzdHJhZWEtc29mdHdhcmUuaW90YSI6WyJpb3RhIl0sImFwcGxpY2F0aW9uL3ZuZC5hdWRpb2dyYXBoIjpbImFlcCJdLCJhcHBsaWNhdGlvbi92bmQuYXV0b2Rlc2suZmJ4IjpbImZieCJdLCJhcHBsaWNhdGlvbi92bmQuYmFsc2FtaXEuYm1tbCt4bWwiOlsiYm1tbCJdLCJhcHBsaWNhdGlvbi92bmQuYmx1ZWljZS5tdWx0aXBhc3MiOlsibXBtIl0sImFwcGxpY2F0aW9uL3ZuZC5ibWkiOlsiYm1pIl0sImFwcGxpY2F0aW9uL3ZuZC5idXNpbmVzc29iamVjdHMiOlsicmVwIl0sImFwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWwiOlsiY2R4bWwiXSwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kIjpbIm1tZCJdLCJhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYSI6WyJjZHkiXSwiYXBwbGljYXRpb24vdm5kLmNpdGF0aW9uc3R5bGVzLnN0eWxlK3htbCI6WyJjc2wiXSwiYXBwbGljYXRpb24vdm5kLmNsYXltb3JlIjpbImNsYSJdLCJhcHBsaWNhdGlvbi92bmQuY2xvYW50by5ycDkiOlsicnA5Il0sImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwIjpbImM0ZyIsImM0ZCIsImM0ZiIsImM0cCIsImM0dSJdLCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZyI6WyJjMTFhbWMiXSwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnIjpbImMxMWFteiJdLCJhcHBsaWNhdGlvbi92bmQuY29tbW9uc3BhY2UiOlsiY3NwIl0sImFwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2ciOlsiY2RiY21zZyJdLCJhcHBsaWNhdGlvbi92bmQuY29zbW9jYWxsZXIiOlsiY21jIl0sImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyIjpbImNsa3giXSwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIua2V5Ym9hcmQiOlsiY2xrayJdLCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5wYWxldHRlIjpbImNsa3AiXSwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIudGVtcGxhdGUiOlsiY2xrdCJdLCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci53b3JkYmFuayI6WyJjbGt3Il0sImFwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWwiOlsid2JzIl0sImFwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWwiOlsicG1sIl0sImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBwZCI6WyJwcGQiXSwiYXBwbGljYXRpb24vdm5kLmN1cmwuY2FyIjpbImNhciJdLCJhcHBsaWNhdGlvbi92bmQuY3VybC5wY3VybCI6WyJwY3VybCJdLCJhcHBsaWNhdGlvbi92bmQuZGFydCI6WyJkYXJ0Il0sImFwcGxpY2F0aW9uL3ZuZC5kYXRhLXZpc2lvbi5yZHoiOlsicmR6Il0sImFwcGxpY2F0aW9uL3ZuZC5kYmYiOlsiZGJmIl0sImFwcGxpY2F0aW9uL3ZuZC5kY21wK3htbCI6WyJkY21wIl0sImFwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEiOlsidXZmIiwidXZ2ZiIsInV2ZCIsInV2dmQiXSwiYXBwbGljYXRpb24vdm5kLmRlY2UudHRtbCt4bWwiOlsidXZ0IiwidXZ2dCJdLCJhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCI6WyJ1dngiLCJ1dnZ4Il0sImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCI6WyJ1dnoiLCJ1dnZ6Il0sImFwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rIjpbImZlX2xhdW5jaCJdLCJhcHBsaWNhdGlvbi92bmQuZG5hIjpbImRuYSJdLCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubWxwIjpbIm1scCJdLCJhcHBsaWNhdGlvbi92bmQuZHBncmFwaCI6WyJkcGciXSwiYXBwbGljYXRpb24vdm5kLmRyZWFtZmFjdG9yeSI6WyJkZmFjIl0sImFwcGxpY2F0aW9uL3ZuZC5kcy1rZXlwb2ludCI6WyJrcHh4Il0sImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0IjpbImFpdCJdLCJhcHBsaWNhdGlvbi92bmQuZHZiLnNlcnZpY2UiOlsic3ZjIl0sImFwcGxpY2F0aW9uL3ZuZC5keW5hZ2VvIjpbImdlbyJdLCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmNoYXJ0IjpbIm1hZyJdLCJhcHBsaWNhdGlvbi92bmQuZW5saXZlbiI6WyJubWwiXSwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZiI6WyJlc2YiXSwiYXBwbGljYXRpb24vdm5kLmVwc29uLm1zZiI6WyJtc2YiXSwiYXBwbGljYXRpb24vdm5kLmVwc29uLnF1aWNrYW5pbWUiOlsicWFtIl0sImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zYWx0IjpbInNsdCJdLCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmIjpbInNzZiJdLCJhcHBsaWNhdGlvbi92bmQuZXN6aWdubzMreG1sIjpbImVzMyIsImV0MyJdLCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtYWxidW0iOlsiZXoyIl0sImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1wYWNrYWdlIjpbImV6MyJdLCJhcHBsaWNhdGlvbi92bmQuZmRmIjpbIipmZGYiXSwiYXBwbGljYXRpb24vdm5kLmZkc24ubXNlZWQiOlsibXNlZWQiXSwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZCI6WyJzZWVkIiwiZGF0YWxlc3MiXSwiYXBwbGljYXRpb24vdm5kLmZsb2dyYXBoaXQiOlsiZ3BoIl0sImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwIjpbImZ0YyJdLCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlciI6WyJmbSIsImZyYW1lIiwibWFrZXIiLCJib29rIl0sImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmZuYyI6WyJmbmMiXSwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMubHRmIjpbImx0ZiJdLCJhcHBsaWNhdGlvbi92bmQuZnNjLndlYmxhdW5jaCI6WyJmc2MiXSwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMiOlsib2FzIl0sImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzMiI6WyJvYTIiXSwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMzIjpbIm9hMyJdLCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c2dwIjpbImZnNSJdLCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c3BycyI6WyJiaDIiXSwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGQiOlsiZGRkIl0sImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzIjpbInhkdyJdLCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrcy5iaW5kZXIiOlsieGJkIl0sImFwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0IjpbImZ6cyJdLCJhcHBsaWNhdGlvbi92bmQuZ2Vub21hdGl4LnR1eGVkbyI6WyJ0eGQiXSwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLmZpbGUiOlsiZ2diIl0sImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5zbGlkZXMiOlsiZ2dzIl0sImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS50b29sIjpbImdndCJdLCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXIiOlsiZ2V4IiwiZ3JlIl0sImFwcGxpY2F0aW9uL3ZuZC5nZW9uZXh0IjpbImd4dCJdLCJhcHBsaWNhdGlvbi92bmQuZ2VvcGxhbiI6WyJnMnciXSwiYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlIjpbImczdyJdLCJhcHBsaWNhdGlvbi92bmQuZ214IjpbImdteCJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnQiOlsiZ2RvYyJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZHJhd2luZyI6WyJnZHJhdyJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZm9ybSI6WyJnZm9ybSJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuamFtIjpbImdqYW0iXSwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLm1hcCI6WyJnbWFwIl0sImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb24iOlsiZ3NsaWRlcyJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuc2NyaXB0IjpbImdzY3JpcHQiXSwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNpdGUiOlsiZ3NpdGUiXSwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNwcmVhZHNoZWV0IjpbImdzaGVldCJdLCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWwiOlsia21sIl0sImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua216IjpbImtteiJdLCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLnhtbGRhdGFjb250YWluZXIreG1sIjpbInhkY2YiXSwiYXBwbGljYXRpb24vdm5kLmdyYWZlcSI6WyJncWYiLCJncXMiXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50IjpbImdhYyJdLCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWhlbHAiOlsiZ2hmIl0sImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZSI6WyJnaW0iXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pbmplY3RvciI6WyJncnYiXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2UiOlsiZ3RtIl0sImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZSI6WyJ0cGwiXSwiYXBwbGljYXRpb24vdm5kLmdyb292ZS12Y2FyZCI6WyJ2Y2ciXSwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWwiOlsiaGFsIl0sImFwcGxpY2F0aW9uL3ZuZC5oYW5kaGVsZC1lbnRlcnRhaW5tZW50K3htbCI6WyJ6bW0iXSwiYXBwbGljYXRpb24vdm5kLmhiY2kiOlsiaGJjaSJdLCJhcHBsaWNhdGlvbi92bmQuaGhlLmxlc3Nvbi1wbGF5ZXIiOlsibGVzIl0sImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGdsIjpbImhwZ2wiXSwiYXBwbGljYXRpb24vdm5kLmhwLWhwaWQiOlsiaHBpZCJdLCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzIjpbImhwcyJdLCJhcHBsaWNhdGlvbi92bmQuaHAtamx5dCI6WyJqbHQiXSwiYXBwbGljYXRpb24vdm5kLmhwLXBjbCI6WyJwY2wiXSwiYXBwbGljYXRpb24vdm5kLmhwLXBjbHhsIjpbInBjbHhsIl0sImFwcGxpY2F0aW9uL3ZuZC5oeWRyb3N0YXRpeC5zb2YtZGF0YSI6WyJzZmQtaGRzdHgiXSwiYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5IjpbIm1weSJdLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1vZGNhcCI6WyJhZnAiLCJsaXN0YWZwIiwibGlzdDM4MjAiXSwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudCI6WyJpcm0iXSwiYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyIjpbInNjIl0sImFwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlIjpbImljYyIsImljbSJdLCJhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXIiOlsiaWdsIl0sImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnAiOlsiaXZwIl0sImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnUiOlsiaXZ1Il0sImFwcGxpY2F0aW9uL3ZuZC5pbnNvcnMuaWdtIjpbImlnbSJdLCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldCI6WyJ4cHciLCJ4cHgiXSwiYXBwbGljYXRpb24vdm5kLmludGVyZ2VvIjpbImkyZyJdLCJhcHBsaWNhdGlvbi92bmQuaW50dS5xYm8iOlsicWJvIl0sImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeCI6WyJxZngiXSwiYXBwbGljYXRpb24vdm5kLmlwdW5wbHVnZ2VkLnJjcHJvZmlsZSI6WyJyY3Byb2ZpbGUiXSwiYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sIjpbImlycCJdLCJhcHBsaWNhdGlvbi92bmQuaXMteHByIjpbInhwciJdLCJhcHBsaWNhdGlvbi92bmQuaXNhYy5mY3MiOlsiZmNzIl0sImFwcGxpY2F0aW9uL3ZuZC5qYW0iOlsiamFtIl0sImFwcGxpY2F0aW9uL3ZuZC5qY3AuamF2YW1lLm1pZGxldC1ybXMiOlsicm1zIl0sImFwcGxpY2F0aW9uL3ZuZC5qaXNwIjpbImppc3AiXSwiYXBwbGljYXRpb24vdm5kLmpvb3N0LmpvZGEtYXJjaGl2ZSI6WyJqb2RhIl0sImFwcGxpY2F0aW9uL3ZuZC5rYWhvb3R6IjpbImt0eiIsImt0ciJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmthcmJvbiI6WyJrYXJib24iXSwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnQiOlsiY2hydCJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmtmb3JtdWxhIjpbImtmbyJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmtpdmlvIjpbImZsdyJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXIiOlsia29uIl0sImFwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlciI6WyJrcHIiLCJrcHQiXSwiYXBwbGljYXRpb24vdm5kLmtkZS5rc3ByZWFkIjpbImtzcCJdLCJhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkIjpbImt3ZCIsImt3dCJdLCJhcHBsaWNhdGlvbi92bmQua2VuYW1lYWFwcCI6WyJodGtlIl0sImFwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb24iOlsia2lhIl0sImFwcGxpY2F0aW9uL3ZuZC5raW5hciI6WyJrbmUiLCJrbnAiXSwiYXBwbGljYXRpb24vdm5kLmtvYW4iOlsic2twIiwic2tkIiwic2t0Iiwic2ttIl0sImFwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yIjpbInNzZSJdLCJhcHBsaWNhdGlvbi92bmQubGFzLmxhcyt4bWwiOlsibGFzeG1sIl0sImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wIjpbImxiZCJdLCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sIjpbImxiZSJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMiOlsiMTIzIl0sImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1hcHByb2FjaCI6WyJhcHIiXSwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZSI6WyJwcmUiXSwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW5vdGVzIjpbIm5zZiJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtb3JnYW5pemVyIjpbIm9yZyJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtc2NyZWVuY2FtIjpbInNjbSJdLCJhcHBsaWNhdGlvbi92bmQubG90dXMtd29yZHBybyI6WyJsd3AiXSwiYXBwbGljYXRpb24vdm5kLm1hY3BvcnRzLnBvcnRwa2ciOlsicG9ydHBrZyJdLCJhcHBsaWNhdGlvbi92bmQubWFwYm94LXZlY3Rvci10aWxlIjpbIm12dCJdLCJhcHBsaWNhdGlvbi92bmQubWNkIjpbIm1jZCJdLCJhcHBsaWNhdGlvbi92bmQubWVkY2FsY2RhdGEiOlsibWMxIl0sImFwcGxpY2F0aW9uL3ZuZC5tZWRpYXN0YXRpb24uY2RrZXkiOlsiY2RrZXkiXSwiYXBwbGljYXRpb24vdm5kLm1mZXIiOlsibXdmIl0sImFwcGxpY2F0aW9uL3ZuZC5tZm1wIjpbIm1mbSJdLCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG8iOlsiZmxvIl0sImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmlneCI6WyJpZ3giXSwiYXBwbGljYXRpb24vdm5kLm1pZiI6WyJtaWYiXSwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kYWYiOlsiZGFmIl0sImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGlzIjpbImRpcyJdLCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1iayI6WyJtYmsiXSwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXkiOlsibXF5Il0sImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXNsIjpbIm1zbCJdLCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsYyI6WyJwbGMiXSwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGYiOlsidHhmIl0sImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uYXBwbGljYXRpb24iOlsibXBuIl0sImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uY2VydGlmaWNhdGUiOlsibXBjIl0sImFwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWwiOlsieHVsIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeSI6WyJjaWwiXSwiYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkIjpbImNhYiJdLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiOlsieGxzIiwieGxtIiwieGxhIiwieGxjIiwieGx0IiwieGx3Il0sImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb2VuYWJsZWQuMTIiOlsieGxhbSJdLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvZW5hYmxlZC4xMiI6WyJ4bHNiIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb2VuYWJsZWQuMTIiOlsieGxzbSJdLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyIjpbInhsdG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QiOlsiZW90Il0sImFwcGxpY2F0aW9uL3ZuZC5tcy1odG1saGVscCI6WyJjaG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLWltcyI6WyJpbXMiXSwiYXBwbGljYXRpb24vdm5kLm1zLWxybSI6WyJscm0iXSwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZXRoZW1lIjpbInRobXgiXSwiYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2siOlsibXNnIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc2VjY2F0IjpbImNhdCJdLCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnN0bCI6WyIqc3RsIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50IjpbInBwdCIsInBwcyIsInBvdCJdLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb2VuYWJsZWQuMTIiOlsicHBhbSJdLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9lbmFibGVkLjEyIjpbInBwdG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyIjpbInNsZG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvZW5hYmxlZC4xMiI6WyJwcHNtIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMiI6WyJwb3RtIl0sImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0IjpbIiptcHAiLCJtcHQiXSwiYXBwbGljYXRpb24vdm5kLm1zLXZpc2lvLnZpZXdlciI6WyJ2ZHgiXSwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQuZG9jdW1lbnQubWFjcm9lbmFibGVkLjEyIjpbImRvY20iXSwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyIjpbImRvdG0iXSwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzIjpbIndwcyIsIndrcyIsIndjbSIsIndkYiJdLCJhcHBsaWNhdGlvbi92bmQubXMtd3BsIjpbIndwbCJdLCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnQiOlsieHBzIl0sImFwcGxpY2F0aW9uL3ZuZC5tc2VxIjpbIm1zZXEiXSwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuIjpbIm11cyJdLCJhcHBsaWNhdGlvbi92bmQubXV2ZWUuc3R5bGUiOlsibXN0eSJdLCJhcHBsaWNhdGlvbi92bmQubXluZmMiOlsidGFnbGV0Il0sImFwcGxpY2F0aW9uL3ZuZC5uYXRvLmJpbmRpbmdkYXRhb2JqZWN0K3htbCI6WyJiZG8iXSwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1IjpbIm5sdSJdLCJhcHBsaWNhdGlvbi92bmQubml0ZiI6WyJudGYiLCJuaXRmIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1kaXJlY3RvcnkiOlsibm5kIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXIiOlsibm5zIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC13ZWIiOlsibm53Il0sImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuYWMreG1sIjpbIiphYyJdLCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGEiOlsibmdkYXQiXSwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5zeW1iaWFuLmluc3RhbGwiOlsibi1nYWdlIl0sImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXQiOlsicnBzdCJdLCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0cyI6WyJycHNzIl0sImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZG0iOlsiZWRtIl0sImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZHgiOlsiZWR4Il0sImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5leHQiOlsiZXh0Il0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQiOlsib2RjIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQtdGVtcGxhdGUiOlsib3RjIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZGF0YWJhc2UiOlsib2RiIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYSI6WyJvZGYiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlIjpbIm9kZnQiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcyI6WyJvZGciXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcy10ZW1wbGF0ZSI6WyJvdGciXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZSI6WyJvZGkiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZSI6WyJvdGkiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24iOlsib2RwIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlIjpbIm90cCJdLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0IjpbIm9kcyJdLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlIjpbIm90cyJdLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQiOlsib2R0Il0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1tYXN0ZXIiOlsib2RtIl0sImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC10ZW1wbGF0ZSI6WyJvdHQiXSwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXdlYiI6WyJvdGgiXSwiYXBwbGljYXRpb24vdm5kLm9scGMtc3VnYXIiOlsieG8iXSwiYXBwbGljYXRpb24vdm5kLm9tYS5kZDIreG1sIjpbImRkMiJdLCJhcHBsaWNhdGlvbi92bmQub3BlbmJsb3guZ2FtZSt4bWwiOlsib2JneCJdLCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb24iOlsib3h0Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVuc3RyZWV0bWFwLmRhdGEreG1sIjpbIm9zbSJdLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uIjpbInBwdHgiXSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlIjpbInNsZHgiXSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdyI6WyJwcHN4Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZSI6WyJwb3R4Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0IjpbInhsc3giXSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUiOlsieGx0eCJdLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCI6WyJkb2N4Il0sImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlIjpbImRvdHgiXSwiYXBwbGljYXRpb24vdm5kLm9zZ2VvLm1hcGd1aWRlLnBhY2thZ2UiOlsibWdwIl0sImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwIjpbImRwIl0sImFwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbSI6WyJlc2EiXSwiYXBwbGljYXRpb24vdm5kLnBhbG0iOlsicGRiIiwicHFhIiwib3ByYyJdLCJhcHBsaWNhdGlvbi92bmQucGF3YWFmaWxlIjpbInBhdyJdLCJhcHBsaWNhdGlvbi92bmQucGcuZm9ybWF0IjpbInN0ciJdLCJhcHBsaWNhdGlvbi92bmQucGcub3Nhc2xpIjpbImVpNiJdLCJhcHBsaWNhdGlvbi92bmQucGljc2VsIjpbImVmaWYiXSwiYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXQiOlsid2ciXSwiYXBwbGljYXRpb24vdm5kLnBvY2tldGxlYXJuIjpbInBsZiJdLCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNiI6WyJwYmQiXSwiYXBwbGljYXRpb24vdm5kLnByZXZpZXdzeXN0ZW1zLmJveCI6WyJib3giXSwiYXBwbGljYXRpb24vdm5kLnByb2NyYXRlLmJydXNoc2V0IjpbImJydXNoc2V0Il0sImFwcGxpY2F0aW9uL3ZuZC5wcm9jcmVhdGUuYnJ1c2giOlsiYnJ1c2giXSwiYXBwbGljYXRpb24vdm5kLnByb2NyZWF0ZS5kcmVhbSI6WyJkcm0iXSwiYXBwbGljYXRpb24vdm5kLnByb3RldXMubWFnYXppbmUiOlsibWd6Il0sImFwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWUiOlsicXBzIl0sImFwcGxpY2F0aW9uL3ZuZC5wdmkucHRpZDEiOlsicHRpZCJdLCJhcHBsaWNhdGlvbi92bmQucHdnLXhodG1sLXByaW50K3htbCI6WyJ4aHRtIl0sImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcyI6WyJxeGQiLCJxeHQiLCJxd2QiLCJxd3QiLCJxeGwiLCJxeGIiXSwiYXBwbGljYXRpb24vdm5kLnJhciI6WyJyYXIiXSwiYXBwbGljYXRpb24vdm5kLnJlYWx2bmMuYmVkIjpbImJlZCJdLCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sIjpbIm14bCJdLCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sK3htbCI6WyJtdXNpY3htbCJdLCJhcHBsaWNhdGlvbi92bmQucmlnLmNyeXB0b25vdGUiOlsiY3J5cHRvbm90ZSJdLCJhcHBsaWNhdGlvbi92bmQucmltLmNvZCI6WyJjb2QiXSwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYSI6WyJybSJdLCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhLXZiciI6WyJybXZiIl0sImFwcGxpY2F0aW9uL3ZuZC5yb3V0ZTY2Lmxpbms2Nit4bWwiOlsibGluazY2Il0sImFwcGxpY2F0aW9uL3ZuZC5zYWlsaW5ndHJhY2tlci50cmFjayI6WyJzdCJdLCJhcHBsaWNhdGlvbi92bmQuc2VlbWFpbCI6WyJzZWUiXSwiYXBwbGljYXRpb24vdm5kLnNlbWEiOlsic2VtYSJdLCJhcHBsaWNhdGlvbi92bmQuc2VtZCI6WyJzZW1kIl0sImFwcGxpY2F0aW9uL3ZuZC5zZW1mIjpbInNlbWYiXSwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhIjpbImlmbSJdLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybXRlbXBsYXRlIjpbIml0cCJdLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuaW50ZXJjaGFuZ2UiOlsiaWlmIl0sImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlIjpbImlwayJdLCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyIjpbInR3ZCIsInR3ZHMiXSwiYXBwbGljYXRpb24vdm5kLnNtYWYiOlsibW1mIl0sImFwcGxpY2F0aW9uL3ZuZC5zbWFydC50ZWFjaGVyIjpbInRlYWNoZXIiXSwiYXBwbGljYXRpb24vdm5kLnNvZnR3YXJlNjAyLmZpbGxlci5mb3JtK3htbCI6WyJmbyJdLCJhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sIjpbInNka20iLCJzZGtkIl0sImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5keHAiOlsiZHhwIl0sImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5zZnMiOlsic2ZzIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2FsYyI6WyJzZGMiXSwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5kcmF3IjpbInNkYSJdLCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MiOlsic2RkIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWF0aCI6WyJzbWYiXSwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXIiOlsic2R3Iiwidm9yIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyLWdsb2JhbCI6WyJzZ2wiXSwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlIjpbInNtemlwIl0sImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEuc3RlcGNoYXJ0IjpbInNtIl0sImFwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWwiOlsid2FkbCJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjIjpbInN4YyJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBsYXRlIjpbInN0YyJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3IjpbInN4ZCJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlIjpbInN0ZCJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzIjpbInN4aSJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlIjpbInN0aSJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoIjpbInN4bSJdLCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXIiOlsic3h3Il0sImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWwiOlsic3hnIl0sImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZSI6WyJzdHciXSwiYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhciI6WyJzdXMiLCJzdXNwIl0sImFwcGxpY2F0aW9uL3ZuZC5zdmQiOlsic3ZkIl0sImFwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGwiOlsic2lzIiwic2lzeCJdLCJhcHBsaWNhdGlvbi92bmQuc3luY21sK3htbCI6WyJ4c20iXSwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt3YnhtbCI6WyJiZG0iXSwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt4bWwiOlsieGRtIl0sImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYreG1sIjpbImRkZiJdLCJhcHBsaWNhdGlvbi92bmQudGFvLmludGVudC1tb2R1bGUtYXJjaGl2ZSI6WyJ0YW8iXSwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCI6WyJwY2FwIiwiY2FwIiwiZG1wIl0sImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0diI6WyJ0bW8iXSwiYXBwbGljYXRpb24vdm5kLnRyaWQudHB0IjpbInRwdCJdLCJhcHBsaWNhdGlvbi92bmQudHJpc2NhcGUubXhzIjpbIm14cyJdLCJhcHBsaWNhdGlvbi92bmQudHJ1ZWFwcCI6WyJ0cmEiXSwiYXBwbGljYXRpb24vdm5kLnVmZGwiOlsidWZkIiwidWZkbCJdLCJhcHBsaWNhdGlvbi92bmQudWlxLnRoZW1lIjpbInV0eiJdLCJhcHBsaWNhdGlvbi92bmQudW1hamluIjpbInVtaiJdLCJhcHBsaWNhdGlvbi92bmQudW5pdHkiOlsidW5pdHl3ZWIiXSwiYXBwbGljYXRpb24vdm5kLnVvbWwreG1sIjpbInVvbWwiLCJ1byJdLCJhcHBsaWNhdGlvbi92bmQudmN4IjpbInZjeCJdLCJhcHBsaWNhdGlvbi92bmQudmlzaW8iOlsidnNkIiwidnN0IiwidnNzIiwidnN3IiwidnNkeCIsInZ0eCJdLCJhcHBsaWNhdGlvbi92bmQudmlzaW9uYXJ5IjpbInZpcyJdLCJhcHBsaWNhdGlvbi92bmQudnNmIjpbInZzZiJdLCJhcHBsaWNhdGlvbi92bmQud2FwLndieG1sIjpbIndieG1sIl0sImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyI6WyJ3bWxjIl0sImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YyI6WyJ3bWxzYyJdLCJhcHBsaWNhdGlvbi92bmQud2VidHVyYm8iOlsid3RiIl0sImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLnBsYXllciI6WyJuYnAiXSwiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IjpbIndwZCJdLCJhcHBsaWNhdGlvbi92bmQud3FkIjpbIndxZCJdLCJhcHBsaWNhdGlvbi92bmQud3Quc3RmIjpbInN0ZiJdLCJhcHBsaWNhdGlvbi92bmQueGFyYSI6WyJ4YXIiXSwiYXBwbGljYXRpb24vdm5kLnhmZGwiOlsieGZkbCJdLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LWRpYyI6WyJodmQiXSwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1zY3JpcHQiOlsiaHZzIl0sImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2UiOlsiaHZwIl0sImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0IjpbIm9zZiJdLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sIjpbIm9zZnB2ZyJdLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtYXVkaW8iOlsic2FmIl0sImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1waHJhc2UiOlsic3BmIl0sImFwcGxpY2F0aW9uL3ZuZC55ZWxsb3dyaXZlci1jdXN0b20tbWVudSI6WyJjbXAiXSwiYXBwbGljYXRpb24vdm5kLnp1bCI6WyJ6aXIiLCJ6aXJ6Il0sImFwcGxpY2F0aW9uL3ZuZC56emF6ei5kZWNrK3htbCI6WyJ6YXoiXSwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkIjpbIjd6Il0sImFwcGxpY2F0aW9uL3gtYWJpd29yZCI6WyJhYnciXSwiYXBwbGljYXRpb24veC1hY2UtY29tcHJlc3NlZCI6WyJhY2UiXSwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2UiOlsiKmRtZyJdLCJhcHBsaWNhdGlvbi94LWFyaiI6WyJhcmoiXSwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLWJpbiI6WyJhYWIiLCJ4MzIiLCJ1MzIiLCJ2b3giXSwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcCI6WyJhYW0iXSwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLXNlZyI6WyJhYXMiXSwiYXBwbGljYXRpb24veC1iY3BpbyI6WyJiY3BpbyJdLCJhcHBsaWNhdGlvbi94LWJkb2MiOlsiKmJkb2MiXSwiYXBwbGljYXRpb24veC1iaXR0b3JyZW50IjpbInRvcnJlbnQiXSwiYXBwbGljYXRpb24veC1ibGVuZGVyIjpbImJsZW5kIl0sImFwcGxpY2F0aW9uL3gtYmxvcmIiOlsiYmxiIiwiYmxvcmIiXSwiYXBwbGljYXRpb24veC1iemlwIjpbImJ6Il0sImFwcGxpY2F0aW9uL3gtYnppcDIiOlsiYnoyIiwiYm96Il0sImFwcGxpY2F0aW9uL3gtY2JyIjpbImNiciIsImNiYSIsImNidCIsImNieiIsImNiNyJdLCJhcHBsaWNhdGlvbi94LWNkbGluayI6WyJ2Y2QiXSwiYXBwbGljYXRpb24veC1jZnMtY29tcHJlc3NlZCI6WyJjZnMiXSwiYXBwbGljYXRpb24veC1jaGF0IjpbImNoYXQiXSwiYXBwbGljYXRpb24veC1jaGVzcy1wZ24iOlsicGduIl0sImFwcGxpY2F0aW9uL3gtY2hyb21lLWV4dGVuc2lvbiI6WyJjcngiXSwiYXBwbGljYXRpb24veC1jb2NvYSI6WyJjY28iXSwiYXBwbGljYXRpb24veC1jb21wcmVzc2VkIjpbIipyYXIiXSwiYXBwbGljYXRpb24veC1jb25mZXJlbmNlIjpbIm5zYyJdLCJhcHBsaWNhdGlvbi94LWNwaW8iOlsiY3BpbyJdLCJhcHBsaWNhdGlvbi94LWNzaCI6WyJjc2giXSwiYXBwbGljYXRpb24veC1kZWJpYW4tcGFja2FnZSI6WyIqZGViIiwidWRlYiJdLCJhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkIjpbImRnYyJdLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIjpbImRpciIsImRjciIsImR4ciIsImNzdCIsImNjdCIsImN4dCIsInczZCIsImZnZCIsInN3YSJdLCJhcHBsaWNhdGlvbi94LWRvb20iOlsid2FkIl0sImFwcGxpY2F0aW9uL3gtZHRibmN4K3htbCI6WyJuY3giXSwiYXBwbGljYXRpb24veC1kdGJvb2sreG1sIjpbImR0YiJdLCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbCI6WyJyZXMiXSwiYXBwbGljYXRpb24veC1kdmkiOlsiZHZpIl0sImFwcGxpY2F0aW9uL3gtZW52b3kiOlsiZXZ5Il0sImFwcGxpY2F0aW9uL3gtZXZhIjpbImV2YSJdLCJhcHBsaWNhdGlvbi94LWZvbnQtYmRmIjpbImJkZiJdLCJhcHBsaWNhdGlvbi94LWZvbnQtZ2hvc3RzY3JpcHQiOlsiZ3NmIl0sImFwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2YiOlsicHNmIl0sImFwcGxpY2F0aW9uL3gtZm9udC1wY2YiOlsicGNmIl0sImFwcGxpY2F0aW9uL3gtZm9udC1zbmYiOlsic25mIl0sImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMSI6WyJwZmEiLCJwZmIiLCJwZm0iLCJhZm0iXSwiYXBwbGljYXRpb24veC1mcmVlYXJjIjpbImFyYyJdLCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaCI6WyJzcGwiXSwiYXBwbGljYXRpb24veC1nY2EtY29tcHJlc3NlZCI6WyJnY2EiXSwiYXBwbGljYXRpb24veC1nbHVseCI6WyJ1bHgiXSwiYXBwbGljYXRpb24veC1nbnVtZXJpYyI6WyJnbnVtZXJpYyJdLCJhcHBsaWNhdGlvbi94LWdyYW1wcy14bWwiOlsiZ3JhbXBzIl0sImFwcGxpY2F0aW9uL3gtZ3RhciI6WyJndGFyIl0sImFwcGxpY2F0aW9uL3gtaGRmIjpbImhkZiJdLCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocCI6WyJwaHAiXSwiYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9ucyI6WyJpbnN0YWxsIl0sImFwcGxpY2F0aW9uL3gtaXB5bmIranNvbiI6WyJpcHluYiJdLCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2UiOlsiKmlzbyJdLCJhcHBsaWNhdGlvbi94LWl3b3JrLWtleW5vdGUtc2Zma2V5IjpbIiprZXkiXSwiYXBwbGljYXRpb24veC1pd29yay1udW1iZXJzLXNmZm51bWJlcnMiOlsiKm51bWJlcnMiXSwiYXBwbGljYXRpb24veC1pd29yay1wYWdlcy1zZmZwYWdlcyI6WyIqcGFnZXMiXSwiYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUtZGlmZiI6WyJqYXJkaWZmIl0sImFwcGxpY2F0aW9uL3gtamF2YS1qbmxwLWZpbGUiOlsiam5scCJdLCJhcHBsaWNhdGlvbi94LWtlZXBhc3MyIjpbImtkYngiXSwiYXBwbGljYXRpb24veC1sYXRleCI6WyJsYXRleCJdLCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZSI6WyJsdWFjIl0sImFwcGxpY2F0aW9uL3gtbHpoLWNvbXByZXNzZWQiOlsibHpoIiwibGhhIl0sImFwcGxpY2F0aW9uL3gtbWFrZXNlbGYiOlsicnVuIl0sImFwcGxpY2F0aW9uL3gtbWllIjpbIm1pZSJdLCJhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2siOlsiKnByYyIsIm1vYmkiXSwiYXBwbGljYXRpb24veC1tcy1hcHBsaWNhdGlvbiI6WyJhcHBsaWNhdGlvbiJdLCJhcHBsaWNhdGlvbi94LW1zLXNob3J0Y3V0IjpbImxuayJdLCJhcHBsaWNhdGlvbi94LW1zLXdtZCI6WyJ3bWQiXSwiYXBwbGljYXRpb24veC1tcy13bXoiOlsid216Il0sImFwcGxpY2F0aW9uL3gtbXMteGJhcCI6WyJ4YmFwIl0sImFwcGxpY2F0aW9uL3gtbXNhY2Nlc3MiOlsibWRiIl0sImFwcGxpY2F0aW9uL3gtbXNiaW5kZXIiOlsib2JkIl0sImFwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZSI6WyJjcmQiXSwiYXBwbGljYXRpb24veC1tc2NsaXAiOlsiY2xwIl0sImFwcGxpY2F0aW9uL3gtbXNkb3MtcHJvZ3JhbSI6WyIqZXhlIl0sImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCI6WyIqZXhlIiwiKmRsbCIsImNvbSIsImJhdCIsIiptc2kiXSwiYXBwbGljYXRpb24veC1tc21lZGlhdmlldyI6WyJtdmIiLCJtMTMiLCJtMTQiXSwiYXBwbGljYXRpb24veC1tc21ldGFmaWxlIjpbIip3bWYiLCIqd216IiwiKmVtZiIsImVteiJdLCJhcHBsaWNhdGlvbi94LW1zbW9uZXkiOlsibW55Il0sImFwcGxpY2F0aW9uL3gtbXNwdWJsaXNoZXIiOlsicHViIl0sImFwcGxpY2F0aW9uL3gtbXNzY2hlZHVsZSI6WyJzY2QiXSwiYXBwbGljYXRpb24veC1tc3Rlcm1pbmFsIjpbInRybSJdLCJhcHBsaWNhdGlvbi94LW1zd3JpdGUiOlsid3JpIl0sImFwcGxpY2F0aW9uL3gtbmV0Y2RmIjpbIm5jIiwiY2RmIl0sImFwcGxpY2F0aW9uL3gtbnMtcHJveHktYXV0b2NvbmZpZyI6WyJwYWMiXSwiYXBwbGljYXRpb24veC1uemIiOlsibnpiIl0sImFwcGxpY2F0aW9uL3gtcGVybCI6WyJwbCIsInBtIl0sImFwcGxpY2F0aW9uL3gtcGlsb3QiOlsiKnByYyIsIipwZGIiXSwiYXBwbGljYXRpb24veC1wa2NzMTIiOlsicDEyIiwicGZ4Il0sImFwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzIjpbInA3YiIsInNwYyJdLCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRyZXFyZXNwIjpbInA3ciJdLCJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIjpbIipyYXIiXSwiYXBwbGljYXRpb24veC1yZWRoYXQtcGFja2FnZS1tYW5hZ2VyIjpbInJwbSJdLCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtcyI6WyJyaXMiXSwiYXBwbGljYXRpb24veC1zZWEiOlsic2VhIl0sImFwcGxpY2F0aW9uL3gtc2giOlsic2giXSwiYXBwbGljYXRpb24veC1zaGFyIjpbInNoYXIiXSwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giOlsic3dmIl0sImFwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwIjpbInhhcCJdLCJhcHBsaWNhdGlvbi94LXNxbCI6WyIqc3FsIl0sImFwcGxpY2F0aW9uL3gtc3R1ZmZpdCI6WyJzaXQiXSwiYXBwbGljYXRpb24veC1zdHVmZml0eCI6WyJzaXR4Il0sImFwcGxpY2F0aW9uL3gtc3VicmlwIjpbInNydCJdLCJhcHBsaWNhdGlvbi94LXN2NGNwaW8iOlsic3Y0Y3BpbyJdLCJhcHBsaWNhdGlvbi94LXN2NGNyYyI6WyJzdjRjcmMiXSwiYXBwbGljYXRpb24veC10M3ZtLWltYWdlIjpbInQzIl0sImFwcGxpY2F0aW9uL3gtdGFkcyI6WyJnYW0iXSwiYXBwbGljYXRpb24veC10YXIiOlsidGFyIl0sImFwcGxpY2F0aW9uL3gtdGNsIjpbInRjbCIsInRrIl0sImFwcGxpY2F0aW9uL3gtdGV4IjpbInRleCJdLCJhcHBsaWNhdGlvbi94LXRleC10Zm0iOlsidGZtIl0sImFwcGxpY2F0aW9uL3gtdGV4aW5mbyI6WyJ0ZXhpbmZvIiwidGV4aSJdLCJhcHBsaWNhdGlvbi94LXRnaWYiOlsiKm9iaiJdLCJhcHBsaWNhdGlvbi94LXVzdGFyIjpbInVzdGFyIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1oZGQiOlsiaGRkIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmEiOlsib3ZhIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmYiOlsib3ZmIl0sImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94IjpbInZib3giXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZib3gtZXh0cGFjayI6WyJ2Ym94LWV4dHBhY2siXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZkaSI6WyJ2ZGkiXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZoZCI6WyJ2aGQiXSwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZtZGsiOlsidm1kayJdLCJhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlIjpbInNyYyJdLCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvbiI6WyJ3ZWJhcHAiXSwiYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnQiOlsiZGVyIiwiY3J0IiwicGVtIl0sImFwcGxpY2F0aW9uL3gteGZpZyI6WyJmaWciXSwiYXBwbGljYXRpb24veC14bGlmZit4bWwiOlsiKnhsZiJdLCJhcHBsaWNhdGlvbi94LXhwaW5zdGFsbCI6WyJ4cGkiXSwiYXBwbGljYXRpb24veC14eiI6WyJ4eiJdLCJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIjpbIip6aXAiXSwiYXBwbGljYXRpb24veC16bWFjaGluZSI6WyJ6MSIsInoyIiwiejMiLCJ6NCIsIno1IiwiejYiLCJ6NyIsIno4Il0sImF1ZGlvL3ZuZC5kZWNlLmF1ZGlvIjpbInV2YSIsInV2dmEiXSwiYXVkaW8vdm5kLmRpZ2l0YWwtd2luZHMiOlsiZW9sIl0sImF1ZGlvL3ZuZC5kcmEiOlsiZHJhIl0sImF1ZGlvL3ZuZC5kdHMiOlsiZHRzIl0sImF1ZGlvL3ZuZC5kdHMuaGQiOlsiZHRzaGQiXSwiYXVkaW8vdm5kLmx1Y2VudC52b2ljZSI6WyJsdnAiXSwiYXVkaW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weWEiOlsicHlhIl0sImF1ZGlvL3ZuZC5udWVyYS5lY2VscDQ4MDAiOlsiZWNlbHA0ODAwIl0sImF1ZGlvL3ZuZC5udWVyYS5lY2VscDc0NzAiOlsiZWNlbHA3NDcwIl0sImF1ZGlvL3ZuZC5udWVyYS5lY2VscDk2MDAiOlsiZWNlbHA5NjAwIl0sImF1ZGlvL3ZuZC5yaXAiOlsicmlwIl0sImF1ZGlvL3gtYWFjIjpbIiphYWMiXSwiYXVkaW8veC1haWZmIjpbImFpZiIsImFpZmYiLCJhaWZjIl0sImF1ZGlvL3gtY2FmIjpbImNhZiJdLCJhdWRpby94LWZsYWMiOlsiZmxhYyJdLCJhdWRpby94LW00YSI6WyIqbTRhIl0sImF1ZGlvL3gtbWF0cm9za2EiOlsibWthIl0sImF1ZGlvL3gtbXBlZ3VybCI6WyJtM3UiXSwiYXVkaW8veC1tcy13YXgiOlsid2F4Il0sImF1ZGlvL3gtbXMtd21hIjpbIndtYSJdLCJhdWRpby94LXBuLXJlYWxhdWRpbyI6WyJyYW0iLCJyYSJdLCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW4iOlsicm1wIl0sImF1ZGlvL3gtcmVhbGF1ZGlvIjpbIipyYSJdLCJhdWRpby94LXdhdiI6WyIqd2F2Il0sImNoZW1pY2FsL3gtY2R4IjpbImNkeCJdLCJjaGVtaWNhbC94LWNpZiI6WyJjaWYiXSwiY2hlbWljYWwveC1jbWRmIjpbImNtZGYiXSwiY2hlbWljYWwveC1jbWwiOlsiY21sIl0sImNoZW1pY2FsL3gtY3NtbCI6WyJjc21sIl0sImNoZW1pY2FsL3gteHl6IjpbInh5eiJdLCJpbWFnZS9wcnMuYnRpZiI6WyJidGlmIiwiYnRmIl0sImltYWdlL3Bycy5wdGkiOlsicHRpIl0sImltYWdlL3ZuZC5hZG9iZS5waG90b3Nob3AiOlsicHNkIl0sImltYWdlL3ZuZC5haXJ6aXAuYWNjZWxlcmF0b3IuYXp2IjpbImF6diJdLCJpbWFnZS92bmQuYmxvY2tmYWN0LmZhY3RpIjpbImZhY3RpIl0sImltYWdlL3ZuZC5kZWNlLmdyYXBoaWMiOlsidXZpIiwidXZ2aSIsInV2ZyIsInV2dmciXSwiaW1hZ2Uvdm5kLmRqdnUiOlsiZGp2dSIsImRqdiJdLCJpbWFnZS92bmQuZHZiLnN1YnRpdGxlIjpbIipzdWIiXSwiaW1hZ2Uvdm5kLmR3ZyI6WyJkd2ciXSwiaW1hZ2Uvdm5kLmR4ZiI6WyJkeGYiXSwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldCI6WyJmYnMiXSwiaW1hZ2Uvdm5kLmZweCI6WyJmcHgiXSwiaW1hZ2Uvdm5kLmZzdCI6WyJmc3QiXSwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtbW1yIjpbIm1tciJdLCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1ybGMiOlsicmxjIl0sImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiI6WyJpY28iXSwiaW1hZ2Uvdm5kLm1zLWRkcyI6WyJkZHMiXSwiaW1hZ2Uvdm5kLm1zLW1vZGkiOlsibWRpIl0sImltYWdlL3ZuZC5tcy1waG90byI6WyJ3ZHAiXSwiaW1hZ2Uvdm5kLm5ldC1mcHgiOlsibnB4Il0sImltYWdlL3ZuZC5wY28uYjE2IjpbImIxNiJdLCJpbWFnZS92bmQudGVuY2VudC50YXAiOlsidGFwIl0sImltYWdlL3ZuZC52YWx2ZS5zb3VyY2UudGV4dHVyZSI6WyJ2dGYiXSwiaW1hZ2Uvdm5kLndhcC53Ym1wIjpbIndibXAiXSwiaW1hZ2Uvdm5kLnhpZmYiOlsieGlmIl0sImltYWdlL3ZuZC56YnJ1c2gucGN4IjpbInBjeCJdLCJpbWFnZS94LTNkcyI6WyIzZHMiXSwiaW1hZ2UveC1hZG9iZS1kbmciOlsiZG5nIl0sImltYWdlL3gtY211LXJhc3RlciI6WyJyYXMiXSwiaW1hZ2UveC1jbXgiOlsiY214Il0sImltYWdlL3gtZnJlZWhhbmQiOlsiZmgiLCJmaGMiLCJmaDQiLCJmaDUiLCJmaDciXSwiaW1hZ2UveC1pY29uIjpbIippY28iXSwiaW1hZ2UveC1qbmciOlsiam5nIl0sImltYWdlL3gtbXJzaWQtaW1hZ2UiOlsic2lkIl0sImltYWdlL3gtbXMtYm1wIjpbIipibXAiXSwiaW1hZ2UveC1wY3giOlsiKnBjeCJdLCJpbWFnZS94LXBpY3QiOlsicGljIiwicGN0Il0sImltYWdlL3gtcG9ydGFibGUtYW55bWFwIjpbInBubSJdLCJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCI6WyJwYm0iXSwiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIjpbInBnbSJdLCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCI6WyJwcG0iXSwiaW1hZ2UveC1yZ2IiOlsicmdiIl0sImltYWdlL3gtdGdhIjpbInRnYSJdLCJpbWFnZS94LXhiaXRtYXAiOlsieGJtIl0sImltYWdlL3gteHBpeG1hcCI6WyJ4cG0iXSwiaW1hZ2UveC14d2luZG93ZHVtcCI6WyJ4d2QiXSwibWVzc2FnZS92bmQud2ZhLndzYyI6WyJ3c2MiXSwibW9kZWwvdm5kLmJhcnkiOlsiYmFyeSJdLCJtb2RlbC92bmQuY2xkIjpbImNsZCJdLCJtb2RlbC92bmQuY29sbGFkYSt4bWwiOlsiZGFlIl0sIm1vZGVsL3ZuZC5kd2YiOlsiZHdmIl0sIm1vZGVsL3ZuZC5nZGwiOlsiZ2RsIl0sIm1vZGVsL3ZuZC5ndHciOlsiZ3R3Il0sIm1vZGVsL3ZuZC5tdHMiOlsiKm10cyJdLCJtb2RlbC92bmQub3BlbmdleCI6WyJvZ2V4Il0sIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQuYmluYXJ5IjpbInhfYiJdLCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LnRleHQiOlsieF90Il0sIm1vZGVsL3ZuZC5weXRoYS5weW94IjpbInB5byIsInB5b3giXSwibW9kZWwvdm5kLnNhcC52ZHMiOlsidmRzIl0sIm1vZGVsL3ZuZC51c2RhIjpbInVzZGEiXSwibW9kZWwvdm5kLnVzZHoremlwIjpbInVzZHoiXSwibW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXAiOlsiYnNwIl0sIm1vZGVsL3ZuZC52dHUiOlsidnR1Il0sInRleHQvcHJzLmxpbmVzLnRhZyI6WyJkc2MiXSwidGV4dC92bmQuY3VybCI6WyJjdXJsIl0sInRleHQvdm5kLmN1cmwuZGN1cmwiOlsiZGN1cmwiXSwidGV4dC92bmQuY3VybC5tY3VybCI6WyJtY3VybCJdLCJ0ZXh0L3ZuZC5jdXJsLnNjdXJsIjpbInNjdXJsIl0sInRleHQvdm5kLmR2Yi5zdWJ0aXRsZSI6WyJzdWIiXSwidGV4dC92bmQuZmFtaWx5c2VhcmNoLmdlZGNvbSI6WyJnZWQiXSwidGV4dC92bmQuZmx5IjpbImZseSJdLCJ0ZXh0L3ZuZC5mbWkuZmxleHN0b3IiOlsiZmx4Il0sInRleHQvdm5kLmdyYXBodml6IjpbImd2Il0sInRleHQvdm5kLmluM2QuM2RtbCI6WyIzZG1sIl0sInRleHQvdm5kLmluM2Quc3BvdCI6WyJzcG90Il0sInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIjpbImphZCJdLCJ0ZXh0L3ZuZC53YXAud21sIjpbIndtbCJdLCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0IjpbIndtbHMiXSwidGV4dC94LWFzbSI6WyJzIiwiYXNtIl0sInRleHQveC1jIjpbImMiLCJjYyIsImN4eCIsImNwcCIsImgiLCJoaCIsImRpYyJdLCJ0ZXh0L3gtY29tcG9uZW50IjpbImh0YyJdLCJ0ZXh0L3gtZm9ydHJhbiI6WyJmIiwiZm9yIiwiZjc3IiwiZjkwIl0sInRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlIjpbImhicyJdLCJ0ZXh0L3gtamF2YS1zb3VyY2UiOlsiamF2YSJdLCJ0ZXh0L3gtbHVhIjpbImx1YSJdLCJ0ZXh0L3gtbWFya2Rvd24iOlsibWtkIl0sInRleHQveC1uZm8iOlsibmZvIl0sInRleHQveC1vcG1sIjpbIm9wbWwiXSwidGV4dC94LW9yZyI6WyIqb3JnIl0sInRleHQveC1wYXNjYWwiOlsicCIsInBhcyJdLCJ0ZXh0L3gtcHJvY2Vzc2luZyI6WyJwZGUiXSwidGV4dC94LXNhc3MiOlsic2FzcyJdLCJ0ZXh0L3gtc2NzcyI6WyJzY3NzIl0sInRleHQveC1zZXRleHQiOlsiZXR4Il0sInRleHQveC1zZnYiOlsic2Z2Il0sInRleHQveC1zdXNlLXltcCI6WyJ5bXAiXSwidGV4dC94LXV1ZW5jb2RlIjpbInV1Il0sInRleHQveC12Y2FsZW5kYXIiOlsidmNzIl0sInRleHQveC12Y2FyZCI6WyJ2Y2YiXSwidmlkZW8vdm5kLmRlY2UuaGQiOlsidXZoIiwidXZ2aCJdLCJ2aWRlby92bmQuZGVjZS5tb2JpbGUiOlsidXZtIiwidXZ2bSJdLCJ2aWRlby92bmQuZGVjZS5wZCI6WyJ1dnAiLCJ1dnZwIl0sInZpZGVvL3ZuZC5kZWNlLnNkIjpbInV2cyIsInV2dnMiXSwidmlkZW8vdm5kLmRlY2UudmlkZW8iOlsidXZ2IiwidXZ2diJdLCJ2aWRlby92bmQuZHZiLmZpbGUiOlsiZHZiIl0sInZpZGVvL3ZuZC5mdnQiOlsiZnZ0Il0sInZpZGVvL3ZuZC5tcGVndXJsIjpbIm14dSIsIm00dSJdLCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5diI6WyJweXYiXSwidmlkZW8vdm5kLnV2dnUubXA0IjpbInV2dSIsInV2dnUiXSwidmlkZW8vdm5kLnZpdm8iOlsidml2Il0sInZpZGVvL3gtZjR2IjpbImY0diJdLCJ2aWRlby94LWZsaSI6WyJmbGkiXSwidmlkZW8veC1mbHYiOlsiZmx2Il0sInZpZGVvL3gtbTR2IjpbIm00diJdLCJ2aWRlby94LW1hdHJvc2thIjpbIm1rdiIsIm1rM2QiLCJta3MiXSwidmlkZW8veC1tbmciOlsibW5nIl0sInZpZGVvL3gtbXMtYXNmIjpbImFzZiIsImFzeCJdLCJ2aWRlby94LW1zLXZvYiI6WyJ2b2IiXSwidmlkZW8veC1tcy13bSI6WyJ3bSJdLCJ2aWRlby94LW1zLXdtdiI6WyJ3bXYiXSwidmlkZW8veC1tcy13bXgiOlsid214Il0sInZpZGVvL3gtbXMtd3Z4IjpbInd2eCJdLCJ2aWRlby94LW1zdmlkZW8iOlsiYXZpIl0sInZpZGVvL3gtc2dpLW1vdmllIjpbIm1vdmllIl0sInZpZGVvL3gtc212IjpbInNtdiJdLCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsayI6WyJpY2UiXX07T2JqZWN0LmZyZWV6ZShpdSk7Y29uc3QgcnU9eyJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXQiOlsiZXoiXSwiYXBwbGljYXRpb24vYXBwaW5zdGFsbGVyIjpbImFwcGluc3RhbGxlciJdLCJhcHBsaWNhdGlvbi9hcHBsaXh3YXJlIjpbImF3Il0sImFwcGxpY2F0aW9uL2FwcHgiOlsiYXBweCJdLCJhcHBsaWNhdGlvbi9hcHB4YnVuZGxlIjpbImFwcHhidW5kbGUiXSwiYXBwbGljYXRpb24vYXRvbSt4bWwiOlsiYXRvbSJdLCJhcHBsaWNhdGlvbi9hdG9tY2F0K3htbCI6WyJhdG9tY2F0Il0sImFwcGxpY2F0aW9uL2F0b21kZWxldGVkK3htbCI6WyJhdG9tZGVsZXRlZCJdLCJhcHBsaWNhdGlvbi9hdG9tc3ZjK3htbCI6WyJhdG9tc3ZjIl0sImFwcGxpY2F0aW9uL2F0c2MtZHdkK3htbCI6WyJkd2QiXSwiYXBwbGljYXRpb24vYXRzYy1oZWxkK3htbCI6WyJoZWxkIl0sImFwcGxpY2F0aW9uL2F0c2MtcnNhdCt4bWwiOlsicnNhdCJdLCJhcHBsaWNhdGlvbi9hdXRvbWF0aW9ubWwtYW1sK3htbCI6WyJhbWwiXSwiYXBwbGljYXRpb24vYXV0b21hdGlvbm1sLWFtbHgremlwIjpbImFtbHgiXSwiYXBwbGljYXRpb24vYmRvYyI6WyJiZG9jIl0sImFwcGxpY2F0aW9uL2NhbGVuZGFyK3htbCI6WyJ4Y3MiXSwiYXBwbGljYXRpb24vY2N4bWwreG1sIjpbImNjeG1sIl0sImFwcGxpY2F0aW9uL2NkZngreG1sIjpbImNkZngiXSwiYXBwbGljYXRpb24vY2RtaS1jYXBhYmlsaXR5IjpbImNkbWlhIl0sImFwcGxpY2F0aW9uL2NkbWktY29udGFpbmVyIjpbImNkbWljIl0sImFwcGxpY2F0aW9uL2NkbWktZG9tYWluIjpbImNkbWlkIl0sImFwcGxpY2F0aW9uL2NkbWktb2JqZWN0IjpbImNkbWlvIl0sImFwcGxpY2F0aW9uL2NkbWktcXVldWUiOlsiY2RtaXEiXSwiYXBwbGljYXRpb24vY3BsK3htbCI6WyJjcGwiXSwiYXBwbGljYXRpb24vY3Utc2VlbWUiOlsiY3UiXSwiYXBwbGljYXRpb24vY3dsIjpbImN3bCJdLCJhcHBsaWNhdGlvbi9kYXNoK3htbCI6WyJtcGQiXSwiYXBwbGljYXRpb24vZGFzaC1wYXRjaCt4bWwiOlsibXBwIl0sImFwcGxpY2F0aW9uL2Rhdm1vdW50K3htbCI6WyJkYXZtb3VudCJdLCJhcHBsaWNhdGlvbi9kaWNvbSI6WyJkY20iXSwiYXBwbGljYXRpb24vZG9jYm9vayt4bWwiOlsiZGJrIl0sImFwcGxpY2F0aW9uL2Rzc2MrZGVyIjpbImRzc2MiXSwiYXBwbGljYXRpb24vZHNzYyt4bWwiOlsieGRzc2MiXSwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCI6WyJlY21hIl0sImFwcGxpY2F0aW9uL2VtbWEreG1sIjpbImVtbWEiXSwiYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbCI6WyJlbW90aW9ubWwiXSwiYXBwbGljYXRpb24vZXB1Yit6aXAiOlsiZXB1YiJdLCJhcHBsaWNhdGlvbi9leGkiOlsiZXhpIl0sImFwcGxpY2F0aW9uL2V4cHJlc3MiOlsiZXhwIl0sImFwcGxpY2F0aW9uL2ZkZiI6WyJmZGYiXSwiYXBwbGljYXRpb24vZmR0K3htbCI6WyJmZHQiXSwiYXBwbGljYXRpb24vZm9udC10ZHBmciI6WyJwZnIiXSwiYXBwbGljYXRpb24vZ2VvK2pzb24iOlsiZ2VvanNvbiJdLCJhcHBsaWNhdGlvbi9nbWwreG1sIjpbImdtbCJdLCJhcHBsaWNhdGlvbi9ncHgreG1sIjpbImdweCJdLCJhcHBsaWNhdGlvbi9neGYiOlsiZ3hmIl0sImFwcGxpY2F0aW9uL2d6aXAiOlsiZ3oiXSwiYXBwbGljYXRpb24vaGpzb24iOlsiaGpzb24iXSwiYXBwbGljYXRpb24vaHlwZXJzdHVkaW8iOlsic3RrIl0sImFwcGxpY2F0aW9uL2lua21sK3htbCI6WyJpbmsiLCJpbmttbCJdLCJhcHBsaWNhdGlvbi9pcGZpeCI6WyJpcGZpeCJdLCJhcHBsaWNhdGlvbi9pdHMreG1sIjpbIml0cyJdLCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiOlsiamFyIiwid2FyIiwiZWFyIl0sImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3QiOlsic2VyIl0sImFwcGxpY2F0aW9uL2phdmEtdm0iOlsiY2xhc3MiXSwiYXBwbGljYXRpb24vamF2YXNjcmlwdCI6WyIqanMiXSwiYXBwbGljYXRpb24vanNvbiI6WyJqc29uIiwibWFwIl0sImFwcGxpY2F0aW9uL2pzb241IjpbImpzb241Il0sImFwcGxpY2F0aW9uL2pzb25tbCtqc29uIjpbImpzb25tbCJdLCJhcHBsaWNhdGlvbi9sZCtqc29uIjpbImpzb25sZCJdLCJhcHBsaWNhdGlvbi9sZ3IreG1sIjpbImxnciJdLCJhcHBsaWNhdGlvbi9sb3N0K3htbCI6WyJsb3N0eG1sIl0sImFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MCI6WyJocXgiXSwiYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm8iOlsiY3B0Il0sImFwcGxpY2F0aW9uL21hZHMreG1sIjpbIm1hZHMiXSwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvbiI6WyJ3ZWJtYW5pZmVzdCJdLCJhcHBsaWNhdGlvbi9tYXJjIjpbIm1yYyJdLCJhcHBsaWNhdGlvbi9tYXJjeG1sK3htbCI6WyJtcmN4Il0sImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhIjpbIm1hIiwibmIiLCJtYiJdLCJhcHBsaWNhdGlvbi9tYXRobWwreG1sIjpbIm1hdGhtbCJdLCJhcHBsaWNhdGlvbi9tYm94IjpbIm1ib3giXSwiYXBwbGljYXRpb24vbWVkaWEtcG9saWN5LWRhdGFzZXQreG1sIjpbIm1wZiJdLCJhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sIjpbIm1zY21sIl0sImFwcGxpY2F0aW9uL21ldGFsaW5rK3htbCI6WyJtZXRhbGluayJdLCJhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sIjpbIm1ldGE0Il0sImFwcGxpY2F0aW9uL21ldHMreG1sIjpbIm1ldHMiXSwiYXBwbGljYXRpb24vbW10LWFlaSt4bWwiOlsibWFlaSJdLCJhcHBsaWNhdGlvbi9tbXQtdXNkK3htbCI6WyJtdXNkIl0sImFwcGxpY2F0aW9uL21vZHMreG1sIjpbIm1vZHMiXSwiYXBwbGljYXRpb24vbXAyMSI6WyJtMjEiLCJtcDIxIl0sImFwcGxpY2F0aW9uL21wNCI6WyIqbXA0IiwiKm1wZzQiLCJtcDRzIiwibTRwIl0sImFwcGxpY2F0aW9uL21zaXgiOlsibXNpeCJdLCJhcHBsaWNhdGlvbi9tc2l4YnVuZGxlIjpbIm1zaXhidW5kbGUiXSwiYXBwbGljYXRpb24vbXN3b3JkIjpbImRvYyIsImRvdCJdLCJhcHBsaWNhdGlvbi9teGYiOlsibXhmIl0sImFwcGxpY2F0aW9uL24tcXVhZHMiOlsibnEiXSwiYXBwbGljYXRpb24vbi10cmlwbGVzIjpbIm50Il0sImFwcGxpY2F0aW9uL25vZGUiOlsiY2pzIl0sImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI6WyJiaW4iLCJkbXMiLCJscmYiLCJtYXIiLCJzbyIsImRpc3QiLCJkaXN0eiIsInBrZyIsImJwayIsImR1bXAiLCJlbGMiLCJkZXBsb3kiLCJleGUiLCJkbGwiLCJkZWIiLCJkbWciLCJpc28iLCJpbWciLCJtc2kiLCJtc3AiLCJtc20iLCJidWZmZXIiXSwiYXBwbGljYXRpb24vb2RhIjpbIm9kYSJdLCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbCI6WyJvcGYiXSwiYXBwbGljYXRpb24vb2dnIjpbIm9neCJdLCJhcHBsaWNhdGlvbi9vbWRvYyt4bWwiOlsib21kb2MiXSwiYXBwbGljYXRpb24vb25lbm90ZSI6WyJvbmV0b2MiLCJvbmV0b2MyIiwib25ldG1wIiwib25lcGtnIiwib25lIiwib25lYSJdLCJhcHBsaWNhdGlvbi9veHBzIjpbIm94cHMiXSwiYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sIjpbInJlbG8iXSwiYXBwbGljYXRpb24vcGF0Y2gtb3BzLWVycm9yK3htbCI6WyJ4ZXIiXSwiYXBwbGljYXRpb24vcGRmIjpbInBkZiJdLCJhcHBsaWNhdGlvbi9wZ3AtZW5jcnlwdGVkIjpbInBncCJdLCJhcHBsaWNhdGlvbi9wZ3Ata2V5cyI6WyJhc2MiXSwiYXBwbGljYXRpb24vcGdwLXNpZ25hdHVyZSI6WyJzaWciLCIqYXNjIl0sImFwcGxpY2F0aW9uL3BpY3MtcnVsZXMiOlsicHJmIl0sImFwcGxpY2F0aW9uL3BrY3MxMCI6WyJwMTAiXSwiYXBwbGljYXRpb24vcGtjczctbWltZSI6WyJwN20iLCJwN2MiXSwiYXBwbGljYXRpb24vcGtjczctc2lnbmF0dXJlIjpbInA3cyJdLCJhcHBsaWNhdGlvbi9wa2NzOCI6WyJwOCJdLCJhcHBsaWNhdGlvbi9wa2l4LWF0dHItY2VydCI6WyJhYyJdLCJhcHBsaWNhdGlvbi9wa2l4LWNlcnQiOlsiY2VyIl0sImFwcGxpY2F0aW9uL3BraXgtY3JsIjpbImNybCJdLCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGgiOlsicGtpcGF0aCJdLCJhcHBsaWNhdGlvbi9wa2l4Y21wIjpbInBraSJdLCJhcHBsaWNhdGlvbi9wbHMreG1sIjpbInBscyJdLCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IjpbImFpIiwiZXBzIiwicHMiXSwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWwiOlsicHJvdngiXSwiYXBwbGljYXRpb24vcHNrYyt4bWwiOlsicHNrY3htbCJdLCJhcHBsaWNhdGlvbi9yYW1sK3lhbWwiOlsicmFtbCJdLCJhcHBsaWNhdGlvbi9yZGYreG1sIjpbInJkZiIsIm93bCJdLCJhcHBsaWNhdGlvbi9yZWdpbmZvK3htbCI6WyJyaWYiXSwiYXBwbGljYXRpb24vcmVsYXgtbmctY29tcGFjdC1zeW50YXgiOlsicm5jIl0sImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzK3htbCI6WyJybCJdLCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cy1kaWZmK3htbCI6WyJybGQiXSwiYXBwbGljYXRpb24vcmxzLXNlcnZpY2VzK3htbCI6WyJycyJdLCJhcHBsaWNhdGlvbi9yb3V0ZS1hcGQreG1sIjpbInJhcGQiXSwiYXBwbGljYXRpb24vcm91dGUtcy10c2lkK3htbCI6WyJzbHMiXSwiYXBwbGljYXRpb24vcm91dGUtdXNkK3htbCI6WyJydXNkIl0sImFwcGxpY2F0aW9uL3Jwa2ktZ2hvc3RidXN0ZXJzIjpbImdiciJdLCJhcHBsaWNhdGlvbi9ycGtpLW1hbmlmZXN0IjpbIm1mdCJdLCJhcHBsaWNhdGlvbi9ycGtpLXJvYSI6WyJyb2EiXSwiYXBwbGljYXRpb24vcnNkK3htbCI6WyJyc2QiXSwiYXBwbGljYXRpb24vcnNzK3htbCI6WyJyc3MiXSwiYXBwbGljYXRpb24vcnRmIjpbInJ0ZiJdLCJhcHBsaWNhdGlvbi9zYm1sK3htbCI6WyJzYm1sIl0sImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdCI6WyJzY3EiXSwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZSI6WyJzY3MiXSwiYXBwbGljYXRpb24vc2N2cC12cC1yZXF1ZXN0IjpbInNwcSJdLCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlc3BvbnNlIjpbInNwcCJdLCJhcHBsaWNhdGlvbi9zZHAiOlsic2RwIl0sImFwcGxpY2F0aW9uL3Nlbm1sK3htbCI6WyJzZW5tbHgiXSwiYXBwbGljYXRpb24vc2Vuc21sK3htbCI6WyJzZW5zbWx4Il0sImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb24iOlsic2V0cGF5Il0sImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvbiI6WyJzZXRyZWciXSwiYXBwbGljYXRpb24vc2hmK3htbCI6WyJzaGYiXSwiYXBwbGljYXRpb24vc2lldmUiOlsic2l2Iiwic2lldmUiXSwiYXBwbGljYXRpb24vc21pbCt4bWwiOlsic21pIiwic21pbCJdLCJhcHBsaWNhdGlvbi9zcGFycWwtcXVlcnkiOlsicnEiXSwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sIjpbInNyeCJdLCJhcHBsaWNhdGlvbi9zcWwiOlsic3FsIl0sImFwcGxpY2F0aW9uL3NyZ3MiOlsiZ3JhbSJdLCJhcHBsaWNhdGlvbi9zcmdzK3htbCI6WyJncnhtbCJdLCJhcHBsaWNhdGlvbi9zcnUreG1sIjpbInNydSJdLCJhcHBsaWNhdGlvbi9zc2RsK3htbCI6WyJzc2RsIl0sImFwcGxpY2F0aW9uL3NzbWwreG1sIjpbInNzbWwiXSwiYXBwbGljYXRpb24vc3dpZCt4bWwiOlsic3dpZHRhZyJdLCJhcHBsaWNhdGlvbi90ZWkreG1sIjpbInRlaSIsInRlaWNvcnB1cyJdLCJhcHBsaWNhdGlvbi90aHJhdWQreG1sIjpbInRmaSJdLCJhcHBsaWNhdGlvbi90aW1lc3RhbXBlZC1kYXRhIjpbInRzZCJdLCJhcHBsaWNhdGlvbi90b21sIjpbInRvbWwiXSwiYXBwbGljYXRpb24vdHJpZyI6WyJ0cmlnIl0sImFwcGxpY2F0aW9uL3R0bWwreG1sIjpbInR0bWwiXSwiYXBwbGljYXRpb24vdWJqc29uIjpbInViaiJdLCJhcHBsaWNhdGlvbi91cmMtcmVzc2hlZXQreG1sIjpbInJzaGVldCJdLCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWwiOlsidGQiXSwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sIjpbInZ4bWwiXSwiYXBwbGljYXRpb24vd2FzbSI6WyJ3YXNtIl0sImFwcGxpY2F0aW9uL3dhdGNoZXJpbmZvK3htbCI6WyJ3aWYiXSwiYXBwbGljYXRpb24vd2lkZ2V0IjpbIndndCJdLCJhcHBsaWNhdGlvbi93aW5obHAiOlsiaGxwIl0sImFwcGxpY2F0aW9uL3dzZGwreG1sIjpbIndzZGwiXSwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sIjpbIndzcG9saWN5Il0sImFwcGxpY2F0aW9uL3hhbWwreG1sIjpbInhhbWwiXSwiYXBwbGljYXRpb24veGNhcC1hdHQreG1sIjpbInhhdiJdLCJhcHBsaWNhdGlvbi94Y2FwLWNhcHMreG1sIjpbInhjYSJdLCJhcHBsaWNhdGlvbi94Y2FwLWRpZmYreG1sIjpbInhkZiJdLCJhcHBsaWNhdGlvbi94Y2FwLWVsK3htbCI6WyJ4ZWwiXSwiYXBwbGljYXRpb24veGNhcC1ucyt4bWwiOlsieG5zIl0sImFwcGxpY2F0aW9uL3hlbmMreG1sIjpbInhlbmMiXSwiYXBwbGljYXRpb24veGZkZiI6WyJ4ZmRmIl0sImFwcGxpY2F0aW9uL3hodG1sK3htbCI6WyJ4aHRtbCIsInhodCJdLCJhcHBsaWNhdGlvbi94bGlmZit4bWwiOlsieGxmIl0sImFwcGxpY2F0aW9uL3htbCI6WyJ4bWwiLCJ4c2wiLCJ4c2QiLCJybmciXSwiYXBwbGljYXRpb24veG1sLWR0ZCI6WyJkdGQiXSwiYXBwbGljYXRpb24veG9wK3htbCI6WyJ4b3AiXSwiYXBwbGljYXRpb24veHByb2MreG1sIjpbInhwbCJdLCJhcHBsaWNhdGlvbi94c2x0K3htbCI6WyIqeHNsIiwieHNsdCJdLCJhcHBsaWNhdGlvbi94c3BmK3htbCI6WyJ4c3BmIl0sImFwcGxpY2F0aW9uL3h2K3htbCI6WyJteG1sIiwieGh2bWwiLCJ4dm1sIiwieHZtIl0sImFwcGxpY2F0aW9uL3lhbmciOlsieWFuZyJdLCJhcHBsaWNhdGlvbi95aW4reG1sIjpbInlpbiJdLCJhcHBsaWNhdGlvbi96aXAiOlsiemlwIl0sImFwcGxpY2F0aW9uL3ppcCtkb3Rsb3R0aWUiOlsibG90dGllIl0sImF1ZGlvLzNncHAiOlsiKjNncHAiXSwiYXVkaW8vYWFjIjpbImFkdHMiLCJhYWMiXSwiYXVkaW8vYWRwY20iOlsiYWRwIl0sImF1ZGlvL2FtciI6WyJhbXIiXSwiYXVkaW8vYmFzaWMiOlsiYXUiLCJzbmQiXSwiYXVkaW8vbWlkaSI6WyJtaWQiLCJtaWRpIiwia2FyIiwicm1pIl0sImF1ZGlvL21vYmlsZS14bWYiOlsibXhtZiJdLCJhdWRpby9tcDMiOlsiKm1wMyJdLCJhdWRpby9tcDQiOlsibTRhIiwibXA0YSIsIm00YiJdLCJhdWRpby9tcGVnIjpbIm1wZ2EiLCJtcDIiLCJtcDJhIiwibXAzIiwibTJhIiwibTNhIl0sImF1ZGlvL29nZyI6WyJvZ2EiLCJvZ2ciLCJzcHgiLCJvcHVzIl0sImF1ZGlvL3MzbSI6WyJzM20iXSwiYXVkaW8vc2lsayI6WyJzaWwiXSwiYXVkaW8vd2F2IjpbIndhdiJdLCJhdWRpby93YXZlIjpbIip3YXYiXSwiYXVkaW8vd2VibSI6WyJ3ZWJhIl0sImF1ZGlvL3htIjpbInhtIl0sImZvbnQvY29sbGVjdGlvbiI6WyJ0dGMiXSwiZm9udC9vdGYiOlsib3RmIl0sImZvbnQvdHRmIjpbInR0ZiJdLCJmb250L3dvZmYiOlsid29mZiJdLCJmb250L3dvZmYyIjpbIndvZmYyIl0sImltYWdlL2FjZXMiOlsiZXhyIl0sImltYWdlL2FwbmciOlsiYXBuZyJdLCJpbWFnZS9hdmNpIjpbImF2Y2kiXSwiaW1hZ2UvYXZjcyI6WyJhdmNzIl0sImltYWdlL2F2aWYiOlsiYXZpZiJdLCJpbWFnZS9ibXAiOlsiYm1wIiwiZGliIl0sImltYWdlL2NnbSI6WyJjZ20iXSwiaW1hZ2UvZGljb20tcmxlIjpbImRybGUiXSwiaW1hZ2UvZHB4IjpbImRweCJdLCJpbWFnZS9lbWYiOlsiZW1mIl0sImltYWdlL2ZpdHMiOlsiZml0cyJdLCJpbWFnZS9nM2ZheCI6WyJnMyJdLCJpbWFnZS9naWYiOlsiZ2lmIl0sImltYWdlL2hlaWMiOlsiaGVpYyJdLCJpbWFnZS9oZWljLXNlcXVlbmNlIjpbImhlaWNzIl0sImltYWdlL2hlaWYiOlsiaGVpZiJdLCJpbWFnZS9oZWlmLXNlcXVlbmNlIjpbImhlaWZzIl0sImltYWdlL2hlajJrIjpbImhlajIiXSwiaW1hZ2UvaWVmIjpbImllZiJdLCJpbWFnZS9qYWlpIjpbImphaWkiXSwiaW1hZ2UvamFpcyI6WyJqYWlzIl0sImltYWdlL2pscyI6WyJqbHMiXSwiaW1hZ2UvanAyIjpbImpwMiIsImpwZzIiXSwiaW1hZ2UvanBlZyI6WyJqcGciLCJqcGVnIiwianBlIl0sImltYWdlL2pwaCI6WyJqcGgiXSwiaW1hZ2UvanBoYyI6WyJqaGMiXSwiaW1hZ2UvanBtIjpbImpwbSIsImpwZ20iXSwiaW1hZ2UvanB4IjpbImpweCIsImpwZiJdLCJpbWFnZS9qeGwiOlsianhsIl0sImltYWdlL2p4ciI6WyJqeHIiXSwiaW1hZ2UvanhyYSI6WyJqeHJhIl0sImltYWdlL2p4cnMiOlsianhycyJdLCJpbWFnZS9qeHMiOlsianhzIl0sImltYWdlL2p4c2MiOlsianhzYyJdLCJpbWFnZS9qeHNpIjpbImp4c2kiXSwiaW1hZ2UvanhzcyI6WyJqeHNzIl0sImltYWdlL2t0eCI6WyJrdHgiXSwiaW1hZ2Uva3R4MiI6WyJrdHgyIl0sImltYWdlL3BqcGVnIjpbImpmaWYiXSwiaW1hZ2UvcG5nIjpbInBuZyJdLCJpbWFnZS9zZ2kiOlsic2dpIl0sImltYWdlL3N2Zyt4bWwiOlsic3ZnIiwic3ZneiJdLCJpbWFnZS90MzgiOlsidDM4Il0sImltYWdlL3RpZmYiOlsidGlmIiwidGlmZiJdLCJpbWFnZS90aWZmLWZ4IjpbInRmeCJdLCJpbWFnZS93ZWJwIjpbIndlYnAiXSwiaW1hZ2Uvd21mIjpbIndtZiJdLCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbiI6WyJkaXNwb3NpdGlvbi1ub3RpZmljYXRpb24iXSwibWVzc2FnZS9nbG9iYWwiOlsidThtc2ciXSwibWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzIjpbInU4ZHNuIl0sIm1lc3NhZ2UvZ2xvYmFsLWRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbiI6WyJ1OG1kbiJdLCJtZXNzYWdlL2dsb2JhbC1oZWFkZXJzIjpbInU4aGRyIl0sIm1lc3NhZ2UvcmZjODIyIjpbImVtbCIsIm1pbWUiLCJtaHQiLCJtaHRtbCJdLCJtb2RlbC8zbWYiOlsiM21mIl0sIm1vZGVsL2dsdGYranNvbiI6WyJnbHRmIl0sIm1vZGVsL2dsdGYtYmluYXJ5IjpbImdsYiJdLCJtb2RlbC9pZ2VzIjpbImlncyIsImlnZXMiXSwibW9kZWwvanQiOlsianQiXSwibW9kZWwvbWVzaCI6WyJtc2giLCJtZXNoIiwic2lsbyJdLCJtb2RlbC9tdGwiOlsibXRsIl0sIm1vZGVsL29iaiI6WyJvYmoiXSwibW9kZWwvcHJjIjpbInByYyJdLCJtb2RlbC9zdGVwIjpbInN0ZXAiLCJzdHAiLCJzdHBuYyIsInAyMSIsIjIxMCJdLCJtb2RlbC9zdGVwK3htbCI6WyJzdHB4Il0sIm1vZGVsL3N0ZXAremlwIjpbInN0cHoiXSwibW9kZWwvc3RlcC14bWwremlwIjpbInN0cHh6Il0sIm1vZGVsL3N0bCI6WyJzdGwiXSwibW9kZWwvdTNkIjpbInUzZCJdLCJtb2RlbC92cm1sIjpbIndybCIsInZybWwiXSwibW9kZWwveDNkK2JpbmFyeSI6WyIqeDNkYiIsIngzZGJ6Il0sIm1vZGVsL3gzZCtmYXN0aW5mb3NldCI6WyJ4M2RiIl0sIm1vZGVsL3gzZCt2cm1sIjpbIip4M2R2IiwieDNkdnoiXSwibW9kZWwveDNkK3htbCI6WyJ4M2QiLCJ4M2R6Il0sIm1vZGVsL3gzZC12cm1sIjpbIngzZHYiXSwidGV4dC9jYWNoZS1tYW5pZmVzdCI6WyJhcHBjYWNoZSIsIm1hbmlmZXN0Il0sInRleHQvY2FsZW5kYXIiOlsiaWNzIiwiaWZiIl0sInRleHQvY29mZmVlc2NyaXB0IjpbImNvZmZlZSIsImxpdGNvZmZlZSJdLCJ0ZXh0L2NzcyI6WyJjc3MiXSwidGV4dC9jc3YiOlsiY3N2Il0sInRleHQvaHRtbCI6WyJodG1sIiwiaHRtIiwic2h0bWwiXSwidGV4dC9qYWRlIjpbImphZGUiXSwidGV4dC9qYXZhc2NyaXB0IjpbImpzIiwibWpzIl0sInRleHQvanN4IjpbImpzeCJdLCJ0ZXh0L2xlc3MiOlsibGVzcyJdLCJ0ZXh0L21hcmtkb3duIjpbIm1kIiwibWFya2Rvd24iXSwidGV4dC9tYXRobWwiOlsibW1sIl0sInRleHQvbWR4IjpbIm1keCJdLCJ0ZXh0L24zIjpbIm4zIl0sInRleHQvcGxhaW4iOlsidHh0IiwidGV4dCIsImNvbmYiLCJkZWYiLCJsaXN0IiwibG9nIiwiaW4iLCJpbmkiXSwidGV4dC9yaWNodGV4dCI6WyJydHgiXSwidGV4dC9ydGYiOlsiKnJ0ZiJdLCJ0ZXh0L3NnbWwiOlsic2dtbCIsInNnbSJdLCJ0ZXh0L3NoZXgiOlsic2hleCJdLCJ0ZXh0L3NsaW0iOlsic2xpbSIsInNsbSJdLCJ0ZXh0L3NwZHgiOlsic3BkeCJdLCJ0ZXh0L3N0eWx1cyI6WyJzdHlsdXMiLCJzdHlsIl0sInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiOlsidHN2Il0sInRleHQvdHJvZmYiOlsidCIsInRyIiwicm9mZiIsIm1hbiIsIm1lIiwibXMiXSwidGV4dC90dXJ0bGUiOlsidHRsIl0sInRleHQvdXJpLWxpc3QiOlsidXJpIiwidXJpcyIsInVybHMiXSwidGV4dC92Y2FyZCI6WyJ2Y2FyZCJdLCJ0ZXh0L3Z0dCI6WyJ2dHQiXSwidGV4dC93Z3NsIjpbIndnc2wiXSwidGV4dC94bWwiOlsiKnhtbCJdLCJ0ZXh0L3lhbWwiOlsieWFtbCIsInltbCJdLCJ2aWRlby8zZ3BwIjpbIjNncCIsIjNncHAiXSwidmlkZW8vM2dwcDIiOlsiM2cyIl0sInZpZGVvL2gyNjEiOlsiaDI2MSJdLCJ2aWRlby9oMjYzIjpbImgyNjMiXSwidmlkZW8vaDI2NCI6WyJoMjY0Il0sInZpZGVvL2lzby5zZWdtZW50IjpbIm00cyJdLCJ2aWRlby9qcGVnIjpbImpwZ3YiXSwidmlkZW8vanBtIjpbIipqcG0iLCIqanBnbSJdLCJ2aWRlby9tajIiOlsibWoyIiwibWpwMiJdLCJ2aWRlby9tcDJ0IjpbInRzIiwibTJ0IiwibTJ0cyIsIm10cyJdLCJ2aWRlby9tcDQiOlsibXA0IiwibXA0diIsIm1wZzQiXSwidmlkZW8vbXBlZyI6WyJtcGVnIiwibXBnIiwibXBlIiwibTF2IiwibTJ2Il0sInZpZGVvL29nZyI6WyJvZ3YiXSwidmlkZW8vcXVpY2t0aW1lIjpbInF0IiwibW92Il0sInZpZGVvL3dlYm0iOlsid2VibSJdfTtPYmplY3QuZnJlZXplKHJ1KTt2YXIgb3UsYXUsc3UsX19jbGFzc1ByaXZhdGVGaWVsZEdldD1mdW5jdGlvbihlLHMsZCxtKXtpZigiYSI9PT1kJiYhbSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXIiKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcz9lIT09c3x8IW06IXMuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdCIpO3JldHVybiJtIj09PWQ/bToiYSI9PT1kP20uY2FsbChlKTptP20udmFsdWU6cy5nZXQoZSl9O291PW5ldyBXZWFrTWFwLGF1PW5ldyBXZWFrTWFwLHN1PW5ldyBXZWFrTWFwO2NvbnN0IGx1PW5ldyBjbGFzc3tjb25zdHJ1Y3RvciguLi5lKXtvdS5zZXQodGhpcyxuZXcgTWFwKSxhdS5zZXQodGhpcyxuZXcgTWFwKSxzdS5zZXQodGhpcyxuZXcgTWFwKTtmb3IoY29uc3QgcyBvZiBlKXRoaXMuZGVmaW5lKHMpfWRlZmluZShlLHM9ITEpe2ZvcihsZXRbZCxtXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtkPWQudG9Mb3dlckNhc2UoKSxtPW0ubWFwKGU9PmUudG9Mb3dlckNhc2UoKSksX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLHN1LCJmIikuaGFzKGQpfHxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsc3UsImYiKS5zZXQoZCxuZXcgU2V0KTtjb25zdCBlPV9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxzdSwiZiIpLmdldChkKTtsZXQgaD0hMDtmb3IobGV0IGcgb2YgbSl7Y29uc3QgbT1nLnN0YXJ0c1dpdGgoIioiKTtpZihnPW0/Zy5zbGljZSgxKTpnLGU/LmFkZChnKSxoJiZfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsYXUsImYiKS5zZXQoZCxnKSxoPSExLG0pY29udGludWU7Y29uc3QgeD1fX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsb3UsImYiKS5nZXQoZyk7aWYoeCYmeCE9ZCYmIXMpdGhyb3cgbmV3IEVycm9yKGAiJHtkfSAtPiAke2d9IiBjb25mbGljdHMgd2l0aCAiJHt4fSAtPiAke2d9Ii4gUGFzcyBcYGZvcmNlPXRydWVcYCB0byBvdmVycmlkZSB0aGlzIGRlZmluaXRpb24uYCk7X19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLG91LCJmIikuc2V0KGcsZCl9fXJldHVybiB0aGlzfWdldFR5cGUoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO2NvbnN0IHM9ZS5yZXBsYWNlKC9eLipbL1xcXS9zLCIiKS50b0xvd2VyQ2FzZSgpLGQ9cy5yZXBsYWNlKC9eLipcLi9zLCIiKS50b0xvd2VyQ2FzZSgpLG09cy5sZW5ndGg8ZS5sZW5ndGg7cmV0dXJuIShkLmxlbmd0aDxzLmxlbmd0aC0xKSYmbT9udWxsOl9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxvdSwiZiIpLmdldChkKT8/bnVsbH1nZXRFeHRlbnNpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP251bGw6KGU9ZT8uc3BsaXQ/LigiOyIpWzBdLChlJiZfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsYXUsImYiKS5nZXQoZS50cmltKCkudG9Mb3dlckNhc2UoKSkpPz9udWxsKX1nZXRBbGxFeHRlbnNpb25zKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9udWxsOl9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxzdSwiZiIpLmdldChlLnRvTG93ZXJDYXNlKCkpPz9udWxsfV9mcmVlemUoKXt0aGlzLmRlZmluZT0oKT0+e3Rocm93IG5ldyBFcnJvcigiZGVmaW5lKCkgbm90IGFsbG93ZWQgZm9yIGJ1aWx0LWluIE1pbWUgb2JqZWN0cy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9icm9vZmEvbWltZS9ibG9iL21haW4vUkVBRE1FLm1kI2N1c3RvbS1taW1lLWluc3RhbmNlcyIpfSxPYmplY3QuZnJlZXplKHRoaXMpO2Zvcihjb25zdCBlIG9mIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxzdSwiZiIpLnZhbHVlcygpKU9iamVjdC5mcmVlemUoZSk7cmV0dXJuIHRoaXN9X2dldFRlc3RTdGF0ZSgpe3JldHVybnt0eXBlczpfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsb3UsImYiKSxleHRlbnNpb25zOl9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcyxhdSwiZiIpfX19KHJ1LGl1KS5fZnJlZXplKCk7ZnVuY3Rpb24gZ2V0Q29udGVudFR5cGUoZSl7cmV0dXJuIGUmJmx1LmdldFR5cGUoZSl8fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWZ1bmN0aW9uIGNyZWF0ZUdlbmVyaWNNdWx0aXBhcnRVcGxvYWRIYW5kbGVyKGUpe2NvbnN0IGNyZWF0ZUhhbmRsZXI9YXN5bmMocyxkKT0+e2NvbnN0e3BhdGhuYW1lOm19PWF3YWl0IGdldFZhbGlkYXRlZFJvdXRlclBhcmFtcyhzLG9iamVjdCh7cGF0aG5hbWU6c3RyaW5nJDEoKS5taW4oMSl9KS5wYXJzZSk7ZHx8PXt9LEVuKHMsIngtbnV4dGh1Yi1maWxlLWNvbnRlbnQtdHlwZSIpJiYoZC5jb250ZW50VHlwZXx8PUVuKHMsIngtbnV4dGh1Yi1maWxlLWNvbnRlbnQtdHlwZSIpKTt0cnl7Y29uc3Qgcz1hd2FpdCBlLmNyZWF0ZU11bHRpcGFydFVwbG9hZChtLGQpO3JldHVybnt1cGxvYWRJZDpzLnVwbG9hZElkLHBhdGhuYW1lOnMucGF0aG5hbWV9fWNhdGNoKGUpe3Rocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6ZS5tZXNzYWdlfSl9fSx1cGxvYWRIYW5kbGVyPWFzeW5jIHM9Pntjb25zdHtwYXRobmFtZTpkfT1hd2FpdCBnZXRWYWxpZGF0ZWRSb3V0ZXJQYXJhbXMocyxvYmplY3Qoe3BhdGhuYW1lOnN0cmluZyQxKCkubWluKDEpfSkucGFyc2UpLHt1cGxvYWRJZDptLHBhcnROdW1iZXI6aH09YXdhaXQgZ2V0VmFsaWRhdGVkUXVlcnkocyxvYmplY3Qoe3VwbG9hZElkOnN0cmluZyQxKCkscGFydE51bWJlcjpudW1iZXIoKX0pLnBhcnNlKSxnPU51bWJlcihFbihzLCJjb250ZW50LWxlbmd0aCIpfHwiMCIpLHg9Z2V0UmVxdWVzdFdlYlN0cmVhbShzKSwkPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUscyl7Y29uc3QgZD1uZXcgVWludDhBcnJheShzKTtsZXQgbT0wO2NvbnN0IGg9ZS5nZXRSZWFkZXIoKTtmb3IoOzspe2NvbnN0e2RvbmU6ZSx2YWx1ZTpzfT1hd2FpdCBoLnJlYWQoKTtpZihlKWJyZWFrO2Quc2V0KHMsbSksbSs9cy5sZW5ndGh9cmV0dXJuIGR9KHgsZyksUz1hd2FpdCBlLnJlc3VtZU11bHRpcGFydFVwbG9hZChkLG0pO3RyeXtyZXR1cm4gYXdhaXQgUy51cGxvYWRQYXJ0KGgsJCl9Y2F0Y2goZSl7dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwMCxtZXNzYWdlOmUubWVzc2FnZX0pfX0sY29tcGxldGVIYW5kbGVyPWFzeW5jIHM9Pntjb25zdHtwYXRobmFtZTpkfT1hd2FpdCBnZXRWYWxpZGF0ZWRSb3V0ZXJQYXJhbXMocyxvYmplY3Qoe3BhdGhuYW1lOnN0cmluZyQxKCkubWluKDEpfSkucGFyc2UpLHt1cGxvYWRJZDptfT1hd2FpdCBnZXRWYWxpZGF0ZWRRdWVyeShzLG9iamVjdCh7dXBsb2FkSWQ6c3RyaW5nJDEoKS5taW4oMSl9KS5wYXJzZSkse3BhcnRzOmh9PWF3YWl0IHJlYWRWYWxpZGF0ZWRCb2R5KHMsb2JqZWN0KHtwYXJ0czphcnJheShvYmplY3Qoe3BhcnROdW1iZXI6bnVtYmVyJDEoKSxldGFnOnN0cmluZyQxKCl9KSl9KS5wYXJzZSksZz1hd2FpdCBlLnJlc3VtZU11bHRpcGFydFVwbG9hZChkLG0pO3RyeXtyZXR1cm4gYXdhaXQgZy5jb21wbGV0ZShoKX1jYXRjaChlKXt0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDAwLG1lc3NhZ2U6ZS5tZXNzYWdlfSl9fSxhYm9ydEhhbmRsZXI9YXN5bmMgcz0+e2NvbnN0e3BhdGhuYW1lOmR9PWF3YWl0IGdldFZhbGlkYXRlZFJvdXRlclBhcmFtcyhzLG9iamVjdCh7cGF0aG5hbWU6c3RyaW5nJDEoKS5taW4oMSl9KS5wYXJzZSkse3VwbG9hZElkOm19PWF3YWl0IGdldFZhbGlkYXRlZFF1ZXJ5KHMsb2JqZWN0KHt1cGxvYWRJZDpzdHJpbmckMSgpLm1pbigxKX0pLnBhcnNlKSxoPWF3YWl0IGUucmVzdW1lTXVsdGlwYXJ0VXBsb2FkKGQsbSk7dHJ5e2F3YWl0IGguYWJvcnQoKX1jYXRjaChlKXt0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDAwLG1lc3NhZ2U6ZS5tZXNzYWdlfSl9fTtyZXR1cm4gYXN5bmMoZSxzKT0+e2NvbnN0IGQ9YXdhaXQoYXN5bmMoZSxzKT0+e2NvbnN0IGQ9ZS5tZXRob2Qse2FjdGlvbjptfT1hd2FpdCBnZXRWYWxpZGF0ZWRSb3V0ZXJQYXJhbXMoZSxvYmplY3Qoe2FjdGlvbjpfZW51bShbImNyZWF0ZSIsInVwbG9hZCIsImNvbXBsZXRlIiwiYWJvcnQiXSl9KS5wYXJzZSk7aWYoImNyZWF0ZSI9PT1tJiYiUE9TVCI9PT1kKXJldHVybnthY3Rpb246bSxkYXRhOmF3YWl0IGNyZWF0ZUhhbmRsZXIoZSxzKX07aWYoInVwbG9hZCI9PT1tJiYiUFVUIj09PWQpcmV0dXJue2FjdGlvbjptLGRhdGE6YXdhaXQgdXBsb2FkSGFuZGxlcihlKX07aWYoImNvbXBsZXRlIj09PW0mJiJQT1NUIj09PWQpcmV0dXJue2FjdGlvbjptLGRhdGE6YXdhaXQgY29tcGxldGVIYW5kbGVyKGUpfTtpZigiYWJvcnQiPT09bSYmIkRFTEVURSI9PT1kKXJldHVybnthY3Rpb246bSxkYXRhOmF3YWl0IGFib3J0SGFuZGxlcihlKX07dGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwNX0pfSkoZSxzKTtyZXR1cm4gZC5kYXRhP2UucmVzcG9uZFdpdGgoUmVzcG9uc2UuanNvbihkLmRhdGEpKTpzZW5kTm9Db250ZW50KGUpLGR9fWZ1bmN0aW9uIG1hcFIyT2JqZWN0VG9CbG9iKGUpe3JldHVybntwYXRobmFtZTplLmtleSxjb250ZW50VHlwZTplLmh0dHBNZXRhZGF0YT8uY29udGVudFR5cGV8fGdldENvbnRlbnRUeXBlKGUua2V5KSxzaXplOmUuc2l6ZSxodHRwRXRhZzplLmh0dHBFdGFnLHVwbG9hZGVkQXQ6ZS51cGxvYWRlZCxodHRwTWV0YWRhdGE6ZS5odHRwTWV0YWRhdGF8fHt9LGN1c3RvbU1ldGFkYXRhOmUuY3VzdG9tTWV0YWRhdGF8fHt9fX1jb25zdCBjdT1mdW5jdGlvbihlKXtjb25zdCBzPXtkcml2ZXI6ZSxhc3luYyBsaXN0KHMpe2NvbnN0IGQ9d24ocyx7bGltaXQ6MWUzfSk7cmV0dXJuIGUubGlzdChkKX0sYXN5bmMgc2VydmUocyxkKXtkPWRlY29kZVVSSUNvbXBvbmVudChkKTtjb25zdCBtPWF3YWl0IGUuZ2V0QXJyYXlCdWZmZXIoZCk7aWYoIW0pdGhyb3cgY3JlYXRlRXJyb3IkMSh7bWVzc2FnZToiRmlsZSBub3QgZm91bmQiLHN0YXR1c0NvZGU6NDA0fSk7Y29uc3QgaD1hd2FpdCBlLmhlYWQoZCksZz1oPy5jb250ZW50VHlwZXx8Z2V0Q29udGVudFR5cGUoZCk7cmV0dXJuIHFuKHMsIkNvbnRlbnQtVHlwZSIsZykscW4ocywiQ29udGVudC1MZW5ndGgiLG0uYnl0ZUxlbmd0aCksaD8uaHR0cEV0YWcmJnFuKHMsImV0YWciLGguaHR0cEV0YWcpLG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoZSl7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KG0pKSxlLmNsb3NlKCl9fSl9LGdldDphc3luYyBzPT5lLmdldChkZWNvZGVVUklDb21wb25lbnQocykpLGFzeW5jIHB1dChzLGQsbT17fSl7cz1kZWNvZGVVUklDb21wb25lbnQocyk7Y29uc3R7Y29udGVudFR5cGU6aCxjb250ZW50TGVuZ3RoOmcsYWRkUmFuZG9tU3VmZml4OngscHJlZml4OiQsY3VzdG9tTWV0YWRhdGE6UyxhY2Nlc3M6an09bSx6PWh8fGQudHlwZXx8Z2V0Q29udGVudFR5cGUocykse2RpcjpJLGV4dDpULG5hbWU6Un09cGFyc2UkMyhzKTtyZXR1cm4gcz1qb2luVVJMKCIuIj09PUk/IiI6SSx4P2Ake1J9LSR7cmFuZG9tVVVJRCgpLnNwbGl0KCItIilbMF19JHtUfWA6YCR7Un0ke1R9YCksJCYmKHM9am9pblVSTCgkLHMpLnJlcGxhY2UoL1wvKy9nLCIvIikucmVwbGFjZSgvXlwvKy8sIiIpKSxlLnB1dChzLGQse2NvbnRlbnRUeXBlOnosY29udGVudExlbmd0aDpnLGN1c3RvbU1ldGFkYXRhOlMsYWNjZXNzOmp9KX0sYXN5bmMgaGVhZChzKXtzPWRlY29kZVVSSUNvbXBvbmVudChzKTtjb25zdCBkPWF3YWl0IGUuaGVhZChzKTtpZighZCl0aHJvdyBjcmVhdGVFcnJvciQxKHttZXNzYWdlOiJCbG9iIG5vdCBmb3VuZCIsc3RhdHVzQ29kZTo0MDR9KTtyZXR1cm4gZH0sYXN5bmMgZGVsKHMpe2NvbnN0IGQ9QXJyYXkuaXNBcnJheShzKT9zOltzXTthd2FpdCBlLmRlbGV0ZShkLm1hcChlPT5kZWNvZGVVUklDb21wb25lbnQoZSkpKX0sYXN5bmMgZGVsZXRlKGUpe3JldHVybiB0aGlzLmRlbChlKX0sYXN5bmMgY3JlYXRlTXVsdGlwYXJ0VXBsb2FkKHMsZD17fSl7cz1kZWNvZGVVUklDb21wb25lbnQocyk7Y29uc3R7Y29udGVudFR5cGU6bSxhZGRSYW5kb21TdWZmaXg6aCxwcmVmaXg6Z309ZCx4PW18fGdldENvbnRlbnRUeXBlKHMpLHtkaXI6JCxleHQ6UyxuYW1lOmp9PXBhcnNlJDMocyk7cmV0dXJuIHM9am9pblVSTCgiLiI9PT0kPyIiOiQsaD9gJHtqfS0ke3JhbmRvbVVVSUQoKS5zcGxpdCgiLSIpWzBdfSR7U31gOmAke2p9JHtTfWApLGcmJihzPWpvaW5VUkwoZyxzKS5yZXBsYWNlKC9cLysvZywiLyIpLnJlcGxhY2UoL15cLysvLCIiKSksZS5jcmVhdGVNdWx0aXBhcnRVcGxvYWQocyx7Li4uZCxjb250ZW50VHlwZTp4fSl9LHJlc3VtZU11bHRpcGFydFVwbG9hZDphc3luYyhzLGQpPT5lLnJlc3VtZU11bHRpcGFydFVwbG9hZChkZWNvZGVVUklDb21wb25lbnQocyksZCksYXN5bmMgaGFuZGxlVXBsb2FkKGUsZD17fSl7YXNzZXJ0TWV0aG9kKGUsWyJQT1NUIiwiUFVUIiwiUEFUQ0giXSksZD13bihkLHtmb3JtS2V5OiJmaWxlcyIsbXVsdGlwbGU6ITB9KTtjb25zdCBtPShhd2FpdCByZWFkRm9ybURhdGEoZSkpLmdldEFsbChkLmZvcm1LZXkpO2lmKCFtKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAwLG1lc3NhZ2U6Ik1pc3NpbmcgZmlsZXMifSk7aWYoIWQubXVsdGlwbGUmJm0ubGVuZ3RoPjEpdGhyb3cgY3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDAsbWVzc2FnZToiTXVsdGlwbGUgZmlsZXMgYXJlIG5vdCBhbGxvd2VkIn0pO2NvbnN0IGg9W107dHJ5e2lmKGQuZW5zdXJlKWZvcihjb25zdCBlIG9mIG0pZW5zdXJlQmxvYihlLGQuZW5zdXJlKTtmb3IoY29uc3QgZSBvZiBtKXtjb25zdCBtPWF3YWl0IHMucHV0KGUubmFtZSxlLGQucHV0KTtoLnB1c2gobSl9fWNhdGNoKGUpe3Rocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NTAwLG1lc3NhZ2U6YFN0b3JhZ2UgZXJyb3I6ICR7ZS5tZXNzYWdlfWB9KX1yZXR1cm4gaH19O3JldHVybnsuLi5zLGhhbmRsZU11bHRpcGFydFVwbG9hZDplLmhhbmRsZU11bHRpcGFydFVwbG9hZD8/Y3JlYXRlR2VuZXJpY011bHRpcGFydFVwbG9hZEhhbmRsZXIocyl9fShmdW5jdGlvbihlKXtjb25zdCBnZXRCdWNrZXQ9KCk9Pntjb25zdCBzPWUuYmluZGluZ3x8IkJMT0IiLGQ9Z2xvYmFsVGhpc1tzXXx8Z2xvYmFsVGhpcy5fX2Vudl9fPy5bc118fFQuZW52W3NdO2lmKCFkKXRocm93IG5ldyBFcnJvcihgUjIgYmluZGluZyAiJHtlLmJpbmRpbmd9IiBub3QgZm91bmRgKTtyZXR1cm4gZH07cmV0dXJue25hbWU6ImNsb3VkZmxhcmUtcjIiLG9wdGlvbnM6ZSxhc3luYyBsaXN0KGUpe2NvbnN0IHM9Z2V0QnVja2V0KCksZD17bGltaXQ6ZT8ubGltaXQ/PzFlMyxwcmVmaXg6ZT8ucHJlZml4LGN1cnNvcjplPy5jdXJzb3IsZGVsaW1pdGVyOmU/LmZvbGRlZD8iLyI6dm9pZCAwLGluY2x1ZGU6WyJodHRwTWV0YWRhdGEiLCJjdXN0b21NZXRhZGF0YSJdfSxtPWF3YWl0IHMubGlzdChkKTtyZXR1cm57YmxvYnM6bS5vYmplY3RzLm1hcChtYXBSMk9iamVjdFRvQmxvYiksaGFzTW9yZTptLnRydW5jYXRlZCxjdXJzb3I6bS50cnVuY2F0ZWQ/bS5jdXJzb3I6dm9pZCAwLGZvbGRlcnM6ZT8uZm9sZGVkP20uZGVsaW1pdGVkUHJlZml4ZXM6dm9pZCAwfX0sYXN5bmMgZ2V0KGUpe2NvbnN0IHM9Z2V0QnVja2V0KCksZD1hd2FpdCBzLmdldChkZWNvZGVVUklDb21wb25lbnQoZSkpO2lmKCFkKXJldHVybiBudWxsO2NvbnN0IG09YXdhaXQgZC5hcnJheUJ1ZmZlcigpO3JldHVybiBuZXcgQmxvYihbbV0se3R5cGU6ZC5odHRwTWV0YWRhdGE/LmNvbnRlbnRUeXBlfHxnZXRDb250ZW50VHlwZShlKX0pfSxhc3luYyBnZXRBcnJheUJ1ZmZlcihlKXtjb25zdCBzPWdldEJ1Y2tldCgpLGQ9YXdhaXQgcy5nZXQoZGVjb2RlVVJJQ29tcG9uZW50KGUpKTtyZXR1cm4gZD9kLmFycmF5QnVmZmVyKCk6bnVsbH0sYXN5bmMgcHV0KGUscyxkKXtjb25zdCBtPWdldEJ1Y2tldCgpLGg9ZD8uY29udGVudFR5cGV8fChzIGluc3RhbmNlb2YgQmxvYj9zLnR5cGU6dm9pZCAwKXx8Z2V0Q29udGVudFR5cGUoZSk7ZD8uYWNjZXNzJiZjb25zb2xlLndhcm4oIlNldHRpbmcgYWNjZXNzIGxldmVsIGZvciBibG9iIGluIENsb3VkZmxhcmUgUjIgaXMgbm90IHN1cHBvcnRlZCwgaXQgd2lsbCBiZSBpZ25vcmVkIik7cmV0dXJuIG1hcFIyT2JqZWN0VG9CbG9iKGF3YWl0IG0ucHV0KGUscyx7aHR0cE1ldGFkYXRhOntjb250ZW50VHlwZTpofSxjdXN0b21NZXRhZGF0YTpkPy5jdXN0b21NZXRhZGF0YX0pKX0sYXN5bmMgaGVhZChlKXtjb25zdCBzPWdldEJ1Y2tldCgpLGQ9YXdhaXQgcy5oZWFkKGRlY29kZVVSSUNvbXBvbmVudChlKSk7cmV0dXJuIGQ/bWFwUjJPYmplY3RUb0Jsb2IoZCk6bnVsbH0sYXN5bmMgaGFzSXRlbShlKXtjb25zdCBzPWdldEJ1Y2tldCgpO3JldHVybiBudWxsIT09YXdhaXQgcy5oZWFkKGRlY29kZVVSSUNvbXBvbmVudChlKSl9LGFzeW5jIGRlbGV0ZShlKXtjb25zdCBzPWdldEJ1Y2tldCgpLGQ9QXJyYXkuaXNBcnJheShlKT9lOltlXTthd2FpdCBQcm9taXNlLmFsbChkLm1hcChlPT5zLmRlbGV0ZShkZWNvZGVVUklDb21wb25lbnQoZSkpKSl9LGFzeW5jIGNyZWF0ZU11bHRpcGFydFVwbG9hZChlLHMpe2NvbnN0IGQ9Z2V0QnVja2V0KCksbT1hd2FpdCBkLmNyZWF0ZU11bHRpcGFydFVwbG9hZChlLHtodHRwTWV0YWRhdGE6e2NvbnRlbnRUeXBlOnM/LmNvbnRlbnRUeXBlfHxnZXRDb250ZW50VHlwZShlKX0sY3VzdG9tTWV0YWRhdGE6cz8uY3VzdG9tTWV0YWRhdGF8fHt9fSk7cmV0dXJue3BhdGhuYW1lOmUsdXBsb2FkSWQ6bS51cGxvYWRJZCx1cGxvYWRQYXJ0OihlLHMpPT5tLnVwbG9hZFBhcnQoZSxzKSxhc3luYyBhYm9ydCgpe2F3YWl0IG0uYWJvcnQoKX0sY29tcGxldGU6YXN5bmMgZT0+bWFwUjJPYmplY3RUb0Jsb2IoYXdhaXQgbS5jb21wbGV0ZShlKSl9fSxhc3luYyByZXN1bWVNdWx0aXBhcnRVcGxvYWQoZSxzKXtjb25zdCBkPWdldEJ1Y2tldCgpLnJlc3VtZU11bHRpcGFydFVwbG9hZChlLHMpO3JldHVybntwYXRobmFtZTplLHVwbG9hZElkOmQudXBsb2FkSWQsdXBsb2FkUGFydDooZSxzKT0+ZC51cGxvYWRQYXJ0KGUscyksYXN5bmMgYWJvcnQoKXthd2FpdCBkLmFib3J0KCl9LGNvbXBsZXRlOmFzeW5jIGU9Pm1hcFIyT2JqZWN0VG9CbG9iKGF3YWl0IGQuY29tcGxldGUoZSkpfX19fSh7YmluZGluZzoiQkxPQiJ9KSksdXU9U3ltYm9sLmZvcigiZHJpenpsZTplbnRpdHlLaW5kIik7ZnVuY3Rpb24gaXMoZSxzKXtpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiBzKXJldHVybiEwO2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocyx1dSkpdGhyb3cgbmV3IEVycm9yKGBDbGFzcyAiJHtzLm5hbWU/PyI8dW5rbm93bj4ifSIgZG9lc24ndCBsb29rIGxpa2UgYSBEcml6emxlIGVudGl0eS4gSWYgdGhpcyBpcyBpbmNvcnJlY3QgYW5kIHRoZSBjbGFzcyBpcyBwcm92aWRlZCBieSBEcml6emxlLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcuYCk7bGV0IGQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpLmNvbnN0cnVjdG9yO2lmKGQpZm9yKDtkOyl7aWYodXUgaW4gZCYmZFt1dV09PT1zW3V1XSlyZXR1cm4hMDtkPU9iamVjdC5nZXRQcm90b3R5cGVPZihkKX1yZXR1cm4hMX1jbGFzcyBDb25zb2xlTG9nV3JpdGVye3N0YXRpY1t1dV09IkNvbnNvbGVMb2dXcml0ZXIiO3dyaXRlKGUpe2NvbnNvbGUubG9nKGUpfX1jbGFzcyBEZWZhdWx0TG9nZ2Vye3N0YXRpY1t1dV09IkRlZmF1bHRMb2dnZXIiO3dyaXRlcjtjb25zdHJ1Y3RvcihlKXt0aGlzLndyaXRlcj1lPy53cml0ZXI/P25ldyBDb25zb2xlTG9nV3JpdGVyfWxvZ1F1ZXJ5KGUscyl7Y29uc3QgZD1zLm1hcChlPT57dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShlKX1jYXRjaHtyZXR1cm4gU3RyaW5nKGUpfX0pLG09ZC5sZW5ndGg/YCAtLSBwYXJhbXM6IFske2Quam9pbigiLCAiKX1dYDoiIjt0aGlzLndyaXRlci53cml0ZShgUXVlcnk6ICR7ZX0ke219YCl9fWNsYXNzIE5vb3BMb2dnZXJ7c3RhdGljW3V1XT0iTm9vcExvZ2dlciI7bG9nUXVlcnkoKXt9fWNvbnN0IGR1PVN5bWJvbC5mb3IoImRyaXp6bGU6TmFtZSIpLHB1PVN5bWJvbC5mb3IoImRyaXp6bGU6U2NoZW1hIiksbXU9U3ltYm9sLmZvcigiZHJpenpsZTpDb2x1bW5zIiksZnU9U3ltYm9sLmZvcigiZHJpenpsZTpFeHRyYUNvbmZpZ0NvbHVtbnMiKSxodT1TeW1ib2wuZm9yKCJkcml6emxlOk9yaWdpbmFsTmFtZSIpLGd1PVN5bWJvbC5mb3IoImRyaXp6bGU6QmFzZU5hbWUiKSx2dT1TeW1ib2wuZm9yKCJkcml6emxlOklzQWxpYXMiKSx5dT1TeW1ib2wuZm9yKCJkcml6emxlOkV4dHJhQ29uZmlnQnVpbGRlciIpLGJ1PVN5bWJvbC5mb3IoImRyaXp6bGU6SXNEcml6emxlVGFibGUiKTtjbGFzcyBUYWJsZXtzdGF0aWNbdXVdPSJUYWJsZSI7c3RhdGljIFN5bWJvbD17TmFtZTpkdSxTY2hlbWE6cHUsT3JpZ2luYWxOYW1lOmh1LENvbHVtbnM6bXUsRXh0cmFDb25maWdDb2x1bW5zOmZ1LEJhc2VOYW1lOmd1LElzQWxpYXM6dnUsRXh0cmFDb25maWdCdWlsZGVyOnl1fTtbZHVdO1todV07W3B1XTtbbXVdO1tmdV07W2d1XTtbdnVdPSExO1tidV09ITA7W3l1XT12b2lkIDA7Y29uc3RydWN0b3IoZSxzLGQpe3RoaXNbZHVdPXRoaXNbaHVdPWUsdGhpc1twdV09cyx0aGlzW2d1XT1kfX1mdW5jdGlvbiBnZXRUYWJsZU5hbWUoZSl7cmV0dXJuIGVbZHVdfWZ1bmN0aW9uIGdldFRhYmxlVW5pcXVlTmFtZShlKXtyZXR1cm5gJHtlW3B1XT8/InB1YmxpYyJ9LiR7ZVtkdV19YH1jbGFzcyBDb2x1bW57Y29uc3RydWN0b3IoZSxzKXt0aGlzLnRhYmxlPWUsdGhpcy5jb25maWc9cyx0aGlzLm5hbWU9cy5uYW1lLHRoaXMua2V5QXNOYW1lPXMua2V5QXNOYW1lLHRoaXMubm90TnVsbD1zLm5vdE51bGwsdGhpcy5kZWZhdWx0PXMuZGVmYXVsdCx0aGlzLmRlZmF1bHRGbj1zLmRlZmF1bHRGbix0aGlzLm9uVXBkYXRlRm49cy5vblVwZGF0ZUZuLHRoaXMuaGFzRGVmYXVsdD1zLmhhc0RlZmF1bHQsdGhpcy5wcmltYXJ5PXMucHJpbWFyeUtleSx0aGlzLmlzVW5pcXVlPXMuaXNVbmlxdWUsdGhpcy51bmlxdWVOYW1lPXMudW5pcXVlTmFtZSx0aGlzLnVuaXF1ZVR5cGU9cy51bmlxdWVUeXBlLHRoaXMuZGF0YVR5cGU9cy5kYXRhVHlwZSx0aGlzLmNvbHVtblR5cGU9cy5jb2x1bW5UeXBlLHRoaXMuZ2VuZXJhdGVkPXMuZ2VuZXJhdGVkLHRoaXMuZ2VuZXJhdGVkSWRlbnRpdHk9cy5nZW5lcmF0ZWRJZGVudGl0eX1zdGF0aWNbdXVdPSJDb2x1bW4iO25hbWU7a2V5QXNOYW1lO3ByaW1hcnk7bm90TnVsbDtkZWZhdWx0O2RlZmF1bHRGbjtvblVwZGF0ZUZuO2hhc0RlZmF1bHQ7aXNVbmlxdWU7dW5pcXVlTmFtZTt1bmlxdWVUeXBlO2RhdGFUeXBlO2NvbHVtblR5cGU7ZW51bVZhbHVlcz12b2lkIDA7Z2VuZXJhdGVkPXZvaWQgMDtnZW5lcmF0ZWRJZGVudGl0eT12b2lkIDA7Y29uZmlnO21hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4gZX1tYXBUb0RyaXZlclZhbHVlKGUpe3JldHVybiBlfXNob3VsZERpc2FibGVJbnNlcnQoKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5jb25maWcuZ2VuZXJhdGVkJiYiYnlEZWZhdWx0IiE9PXRoaXMuY29uZmlnLmdlbmVyYXRlZC50eXBlfX1jbGFzcyBDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IkNvbHVtbkJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3RvcihlLHMsZCl7dGhpcy5jb25maWc9e25hbWU6ZSxrZXlBc05hbWU6IiI9PT1lLG5vdE51bGw6ITEsZGVmYXVsdDp2b2lkIDAsaGFzRGVmYXVsdDohMSxwcmltYXJ5S2V5OiExLGlzVW5pcXVlOiExLHVuaXF1ZU5hbWU6dm9pZCAwLHVuaXF1ZVR5cGU6dm9pZCAwLGRhdGFUeXBlOnMsY29sdW1uVHlwZTpkLGdlbmVyYXRlZDp2b2lkIDB9fSR0eXBlKCl7cmV0dXJuIHRoaXN9bm90TnVsbCgpe3JldHVybiB0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9ZGVmYXVsdChlKXtyZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdD1lLHRoaXMuY29uZmlnLmhhc0RlZmF1bHQ9ITAsdGhpc30kZGVmYXVsdEZuKGUpe3JldHVybiB0aGlzLmNvbmZpZy5kZWZhdWx0Rm49ZSx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHRoaXN9JGRlZmF1bHQ9dGhpcy4kZGVmYXVsdEZuOyRvblVwZGF0ZUZuKGUpe3JldHVybiB0aGlzLmNvbmZpZy5vblVwZGF0ZUZuPWUsdGhpcy5jb25maWcuaGFzRGVmYXVsdD0hMCx0aGlzfSRvblVwZGF0ZT10aGlzLiRvblVwZGF0ZUZuO3ByaW1hcnlLZXkoKXtyZXR1cm4gdGhpcy5jb25maWcucHJpbWFyeUtleT0hMCx0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9c2V0TmFtZShlKXsiIj09PXRoaXMuY29uZmlnLm5hbWUmJih0aGlzLmNvbmZpZy5uYW1lPWUpfX1jb25zdCBfdT1TeW1ib2wuZm9yKCJkcml6emxlOmlzUGdFbnVtIik7Y2xhc3MgU3VicXVlcnl7c3RhdGljW3V1XT0iU3VicXVlcnkiO2NvbnN0cnVjdG9yKGUscyxkLG09ITEsaD1bXSl7dGhpcy5fPXticmFuZDoiU3VicXVlcnkiLHNxbDplLHNlbGVjdGVkRmllbGRzOnMsYWxpYXM6ZCxpc1dpdGg6bSx1c2VkVGFibGVzOmh9fX1jbGFzcyBXaXRoU3VicXVlcnkgZXh0ZW5kcyBTdWJxdWVyeXtzdGF0aWNbdXVdPSJXaXRoU3VicXVlcnkifWNvbnN0IHh1PXtzdGFydEFjdGl2ZVNwYW46KGUscyk9PnMoKX0sd3U9U3ltYm9sLmZvcigiZHJpenpsZTpWaWV3QmFzZUNvbmZpZyIpO2Z1bmN0aW9uIGlzU1FMV3JhcHBlcihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U1FMfWNsYXNzIFN0cmluZ0NodW5re3N0YXRpY1t1dV09IlN0cmluZ0NodW5rIjt2YWx1ZTtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19Y2xhc3MgU1FMe2NvbnN0cnVjdG9yKGUpe3RoaXMucXVlcnlDaHVua3M9ZTtmb3IoY29uc3QgcyBvZiBlKWlmKGlzKHMsVGFibGUpKXtjb25zdCBlPXNbVGFibGUuU3ltYm9sLlNjaGVtYV07dGhpcy51c2VkVGFibGVzLnB1c2godm9pZCAwPT09ZT9zW1RhYmxlLlN5bWJvbC5OYW1lXTplKyIuIitzW1RhYmxlLlN5bWJvbC5OYW1lXSl9fXN0YXRpY1t1dV09IlNRTCI7ZGVjb2Rlcj0kdTtzaG91bGRJbmxpbmVQYXJhbXM9ITE7dXNlZFRhYmxlcz1bXTthcHBlbmQoZSl7cmV0dXJuIHRoaXMucXVlcnlDaHVua3MucHVzaCguLi5lLnF1ZXJ5Q2h1bmtzKSx0aGlzfXRvUXVlcnkoZSl7cmV0dXJuIHh1LnN0YXJ0QWN0aXZlU3BhbigiZHJpenpsZS5idWlsZFNRTCIscz0+e2NvbnN0IGQ9dGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyh0aGlzLnF1ZXJ5Q2h1bmtzLGUpO3JldHVybiBzPy5zZXRBdHRyaWJ1dGVzKHsiZHJpenpsZS5xdWVyeS50ZXh0IjpkLnNxbCwiZHJpenpsZS5xdWVyeS5wYXJhbXMiOkpTT04uc3RyaW5naWZ5KGQucGFyYW1zKX0pLGR9KX1idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhlLHMpe2NvbnN0IGQ9T2JqZWN0LmFzc2lnbih7fSxzLHtpbmxpbmVQYXJhbXM6cy5pbmxpbmVQYXJhbXN8fHRoaXMuc2hvdWxkSW5saW5lUGFyYW1zLHBhcmFtU3RhcnRJbmRleDpzLnBhcmFtU3RhcnRJbmRleHx8e3ZhbHVlOjB9fSkse2Nhc2luZzptLGVzY2FwZU5hbWU6aCxlc2NhcGVQYXJhbTpnLHByZXBhcmVUeXBpbmc6eCxpbmxpbmVQYXJhbXM6JCxwYXJhbVN0YXJ0SW5kZXg6U309ZDtyZXR1cm4gZnVuY3Rpb24oZSl7Y29uc3Qgcz17c3FsOiIiLHBhcmFtczpbXX07Zm9yKGNvbnN0IGQgb2YgZSlzLnNxbCs9ZC5zcWwscy5wYXJhbXMucHVzaCguLi5kLnBhcmFtcyksZC50eXBpbmdzPy5sZW5ndGgmJihzLnR5cGluZ3N8fChzLnR5cGluZ3M9W10pLHMudHlwaW5ncy5wdXNoKC4uLmQudHlwaW5ncykpO3JldHVybiBzfShlLm1hcChlPT57aWYoaXMoZSxTdHJpbmdDaHVuaykpcmV0dXJue3NxbDplLnZhbHVlLmpvaW4oIiIpLHBhcmFtczpbXX07aWYoaXMoZSxOYW1lKSlyZXR1cm57c3FsOmgoZS52YWx1ZSkscGFyYW1zOltdfTtpZih2b2lkIDA9PT1lKXJldHVybntzcWw6IiIscGFyYW1zOltdfTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBzPVtuZXcgU3RyaW5nQ2h1bmsoIigiKV07Zm9yKGNvbnN0W2QsbV1vZiBlLmVudHJpZXMoKSlzLnB1c2gobSksZDxlLmxlbmd0aC0xJiZzLnB1c2gobmV3IFN0cmluZ0NodW5rKCIsICIpKTtyZXR1cm4gcy5wdXNoKG5ldyBTdHJpbmdDaHVuaygiKSIpKSx0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKHMsZCl9aWYoaXMoZSxTUUwpKXJldHVybiB0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKGUucXVlcnlDaHVua3Msey4uLmQsaW5saW5lUGFyYW1zOiR8fGUuc2hvdWxkSW5saW5lUGFyYW1zfSk7aWYoaXMoZSxUYWJsZSkpe2NvbnN0IHM9ZVtUYWJsZS5TeW1ib2wuU2NoZW1hXSxkPWVbVGFibGUuU3ltYm9sLk5hbWVdO3JldHVybntzcWw6dm9pZCAwPT09c3x8ZVt2dV0/aChkKTpoKHMpKyIuIitoKGQpLHBhcmFtczpbXX19aWYoaXMoZSxDb2x1bW4pKXtjb25zdCBkPW0uZ2V0Q29sdW1uQ2FzaW5nKGUpO2lmKCJpbmRleGVzIj09PXMuaW52b2tlU291cmNlKXJldHVybntzcWw6aChkKSxwYXJhbXM6W119O2NvbnN0IGc9ZS50YWJsZVtUYWJsZS5TeW1ib2wuU2NoZW1hXTtyZXR1cm57c3FsOmUudGFibGVbdnVdfHx2b2lkIDA9PT1nP2goZS50YWJsZVtUYWJsZS5TeW1ib2wuTmFtZV0pKyIuIitoKGQpOmgoZykrIi4iK2goZS50YWJsZVtUYWJsZS5TeW1ib2wuTmFtZV0pKyIuIitoKGQpLHBhcmFtczpbXX19aWYoaXMoZSxWaWV3KSl7Y29uc3Qgcz1lW3d1XS5zY2hlbWEsZD1lW3d1XS5uYW1lO3JldHVybntzcWw6dm9pZCAwPT09c3x8ZVt3dV0uaXNBbGlhcz9oKGQpOmgocykrIi4iK2goZCkscGFyYW1zOltdfX1pZihpcyhlLFBhcmFtKSl7aWYoaXMoZS52YWx1ZSxQbGFjZWhvbGRlcikpcmV0dXJue3NxbDpnKFMudmFsdWUrKyxlKSxwYXJhbXM6W2VdLHR5cGluZ3M6WyJub25lIl19O2NvbnN0IHM9bnVsbD09PWUudmFsdWU/bnVsbDplLmVuY29kZXIubWFwVG9Ecml2ZXJWYWx1ZShlLnZhbHVlKTtpZihpcyhzLFNRTCkpcmV0dXJuIHRoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW3NdLGQpO2lmKCQpcmV0dXJue3NxbDp0aGlzLm1hcElubGluZVBhcmFtKHMsZCkscGFyYW1zOltdfTtsZXQgbT1bIm5vbmUiXTtyZXR1cm4geCYmKG09W3goZS5lbmNvZGVyKV0pLHtzcWw6ZyhTLnZhbHVlKysscykscGFyYW1zOltzXSx0eXBpbmdzOm19fXJldHVybiBpcyhlLFBsYWNlaG9sZGVyKT97c3FsOmcoUy52YWx1ZSsrLGUpLHBhcmFtczpbZV0sdHlwaW5nczpbIm5vbmUiXX06aXMoZSxTUUwuQWxpYXNlZCkmJnZvaWQgMCE9PWUuZmllbGRBbGlhcz97c3FsOmgoZS5maWVsZEFsaWFzKSxwYXJhbXM6W119OmlzKGUsU3VicXVlcnkpP2UuXy5pc1dpdGg/e3NxbDpoKGUuXy5hbGlhcykscGFyYW1zOltdfTp0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKFtuZXcgU3RyaW5nQ2h1bmsoIigiKSxlLl8uc3FsLG5ldyBTdHJpbmdDaHVuaygiKSAiKSxuZXcgTmFtZShlLl8uYWxpYXMpXSxkKTooaj1lKSYmImZ1bmN0aW9uIj09dHlwZW9mIGomJl91IGluIGomJiEwPT09altfdV0/ZS5zY2hlbWE/e3NxbDpoKGUuc2NoZW1hKSsiLiIraChlLmVudW1OYW1lKSxwYXJhbXM6W119OntzcWw6aChlLmVudW1OYW1lKSxwYXJhbXM6W119OmlzU1FMV3JhcHBlcihlKT9lLnNob3VsZE9taXRTUUxQYXJlbnM/LigpP3RoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW2UuZ2V0U1FMKCldLGQpOnRoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW25ldyBTdHJpbmdDaHVuaygiKCIpLGUuZ2V0U1FMKCksbmV3IFN0cmluZ0NodW5rKCIpIildLGQpOiQ/e3NxbDp0aGlzLm1hcElubGluZVBhcmFtKGUsZCkscGFyYW1zOltdfTp7c3FsOmcoUy52YWx1ZSsrLGUpLHBhcmFtczpbZV0sdHlwaW5nczpbIm5vbmUiXX07dmFyIGp9KSl9bWFwSW5saW5lUGFyYW0oZSx7ZXNjYXBlU3RyaW5nOnN9KXtpZihudWxsPT09ZSlyZXR1cm4ibnVsbCI7aWYoIm51bWJlciI9PXR5cGVvZiBlfHwiYm9vbGVhbiI9PXR5cGVvZiBlKXJldHVybiBlLnRvU3RyaW5nKCk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBzKGUpO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Y29uc3QgZD1lLnRvU3RyaW5nKCk7cmV0dXJuIHMoIltvYmplY3QgT2JqZWN0XSI9PT1kP0pTT04uc3RyaW5naWZ5KGUpOmQpfXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBwYXJhbSB2YWx1ZTogIitlKX1nZXRTUUwoKXtyZXR1cm4gdGhpc31hcyhlKXtyZXR1cm4gdm9pZCAwPT09ZT90aGlzOm5ldyBTUUwuQWxpYXNlZCh0aGlzLGUpfW1hcFdpdGgoZSl7cmV0dXJuIHRoaXMuZGVjb2Rlcj0iZnVuY3Rpb24iPT10eXBlb2YgZT97bWFwRnJvbURyaXZlclZhbHVlOmV9OmUsdGhpc31pbmxpbmVQYXJhbXMoKXtyZXR1cm4gdGhpcy5zaG91bGRJbmxpbmVQYXJhbXM9ITAsdGhpc31pZihlKXtyZXR1cm4gZT90aGlzOnZvaWQgMH19Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlPWV9c3RhdGljW3V1XT0iTmFtZSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19Y29uc3QgJHU9e21hcEZyb21Ecml2ZXJWYWx1ZTplPT5lfSxTdT17bWFwVG9Ecml2ZXJWYWx1ZTplPT5lfTtjbGFzcyBQYXJhbXtjb25zdHJ1Y3RvcihlLHM9U3Upe3RoaXMudmFsdWU9ZSx0aGlzLmVuY29kZXI9c31zdGF0aWNbdXVdPSJQYXJhbSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19ZnVuY3Rpb24gc3FsKGUsLi4ucyl7Y29uc3QgZD1bXTsocy5sZW5ndGg+MHx8ZS5sZW5ndGg+MCYmIiIhPT1lWzBdKSYmZC5wdXNoKG5ldyBTdHJpbmdDaHVuayhlWzBdKSk7Zm9yKGNvbnN0W20saF1vZiBzLmVudHJpZXMoKSlkLnB1c2goaCxuZXcgU3RyaW5nQ2h1bmsoZVttKzFdKSk7cmV0dXJuIG5ldyBTUUwoZCl9dmFyIGt1OyhrdT1zcWx8fChzcWw9e30pKS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBuZXcgU1FMKFtdKX0sa3UuZnJvbUxpc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBTUUwoZSl9LGt1LnJhdz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFNRTChbbmV3IFN0cmluZ0NodW5rKGUpXSl9LGt1LmpvaW49ZnVuY3Rpb24oZSxzKXtjb25zdCBkPVtdO2Zvcihjb25zdFttLGhdb2YgZS5lbnRyaWVzKCkpbT4wJiZ2b2lkIDAhPT1zJiZkLnB1c2gocyksZC5wdXNoKGgpO3JldHVybiBuZXcgU1FMKGQpfSxrdS5pZGVudGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTmFtZShlKX0sa3UucGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQbGFjZWhvbGRlcihlKX0sa3UucGFyYW09ZnVuY3Rpb24oZSxzKXtyZXR1cm4gbmV3IFBhcmFtKGUscyl9LChlPT57Y2xhc3MgQWxpYXNlZHtjb25zdHJ1Y3RvcihlLHMpe3RoaXMuc3FsPWUsdGhpcy5maWVsZEFsaWFzPXN9c3RhdGljW3V1XT0iU1FMLkFsaWFzZWQiO2lzU2VsZWN0aW9uRmllbGQ9ITE7Z2V0U1FMKCl7cmV0dXJuIHRoaXMuc3FsfWNsb25lKCl7cmV0dXJuIG5ldyBBbGlhc2VkKHRoaXMuc3FsLHRoaXMuZmllbGRBbGlhcyl9fWUuQWxpYXNlZD1BbGlhc2VkfSkoU1FMfHwoU1FMPXt9KSk7Y2xhc3MgUGxhY2Vob2xkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWV9c3RhdGljW3V1XT0iUGxhY2Vob2xkZXIiO2dldFNRTCgpe3JldHVybiBuZXcgU1FMKFt0aGlzXSl9fWZ1bmN0aW9uIGZpbGxQbGFjZWhvbGRlcnMoZSxzKXtyZXR1cm4gZS5tYXAoZT0+e2lmKGlzKGUsUGxhY2Vob2xkZXIpKXtpZighKGUubmFtZSBpbiBzKSl0aHJvdyBuZXcgRXJyb3IoYE5vIHZhbHVlIGZvciBwbGFjZWhvbGRlciAiJHtlLm5hbWV9IiB3YXMgcHJvdmlkZWRgKTtyZXR1cm4gc1tlLm5hbWVdfWlmKGlzKGUsUGFyYW0pJiZpcyhlLnZhbHVlLFBsYWNlaG9sZGVyKSl7aWYoIShlLnZhbHVlLm5hbWUgaW4gcykpdGhyb3cgbmV3IEVycm9yKGBObyB2YWx1ZSBmb3IgcGxhY2Vob2xkZXIgIiR7ZS52YWx1ZS5uYW1lfSIgd2FzIHByb3ZpZGVkYCk7cmV0dXJuIGUuZW5jb2Rlci5tYXBUb0RyaXZlclZhbHVlKHNbZS52YWx1ZS5uYW1lXSl9cmV0dXJuIGV9KX1jb25zdCBqdT1TeW1ib2wuZm9yKCJkcml6emxlOklzRHJpenpsZVZpZXciKTtjbGFzcyBWaWV3e3N0YXRpY1t1dV09IlZpZXciO1t3dV07W2p1XT0hMDtjb25zdHJ1Y3Rvcih7bmFtZTplLHNjaGVtYTpzLHNlbGVjdGVkRmllbGRzOmQscXVlcnk6bX0pe3RoaXNbd3VdPXtuYW1lOmUsb3JpZ2luYWxOYW1lOmUsc2NoZW1hOnMsc2VsZWN0ZWRGaWVsZHM6ZCxxdWVyeTptLGlzRXhpc3Rpbmc6IW0saXNBbGlhczohMX19Z2V0U1FMKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX19ZnVuY3Rpb24gbWFwUmVzdWx0Um93KGUscyxkKXtjb25zdCBtPXt9LGg9ZS5yZWR1Y2UoKGUse3BhdGg6aCxmaWVsZDpnfSx4KT0+e2xldCAkOyQ9aXMoZyxDb2x1bW4pP2c6aXMoZyxTUUwpP2cuZGVjb2RlcjppcyhnLFN1YnF1ZXJ5KT9nLl8uc3FsLmRlY29kZXI6Zy5zcWwuZGVjb2RlcjtsZXQgUz1lO2Zvcihjb25zdFtlLGpdb2YgaC5lbnRyaWVzKCkpaWYoZTxoLmxlbmd0aC0xKWogaW4gU3x8KFNbal09e30pLFM9U1tqXTtlbHNle2NvbnN0IGU9c1t4XSx6PVNbal09bnVsbD09PWU/bnVsbDokLm1hcEZyb21Ecml2ZXJWYWx1ZShlKTtpZihkJiZpcyhnLENvbHVtbikmJjI9PT1oLmxlbmd0aCl7Y29uc3QgZT1oWzBdO2UgaW4gbT8ic3RyaW5nIj09dHlwZW9mIG1bZV0mJm1bZV0hPT1nZXRUYWJsZU5hbWUoZy50YWJsZSkmJihtW2VdPSExKTptW2VdPW51bGw9PT16JiZnZXRUYWJsZU5hbWUoZy50YWJsZSl9fXJldHVybiBlfSx7fSk7aWYoZCYmT2JqZWN0LmtleXMobSkubGVuZ3RoPjApZm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhtKSkic3RyaW5nIiE9dHlwZW9mIHN8fGRbc118fChoW2VdPW51bGwpO3JldHVybiBofWZ1bmN0aW9uIG9yZGVyU2VsZWN0ZWRGaWVsZHMoZSxzKXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkucmVkdWNlKChlLFtkLG1dKT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZClyZXR1cm4gZTtjb25zdCBoPXM/Wy4uLnMsZF06W2RdO3JldHVybiBpcyhtLENvbHVtbil8fGlzKG0sU1FMKXx8aXMobSxTUUwuQWxpYXNlZCl8fGlzKG0sU3VicXVlcnkpP2UucHVzaCh7cGF0aDpoLGZpZWxkOm19KTppcyhtLFRhYmxlKT9lLnB1c2goLi4ub3JkZXJTZWxlY3RlZEZpZWxkcyhtW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxoKSk6ZS5wdXNoKC4uLm9yZGVyU2VsZWN0ZWRGaWVsZHMobSxoKSksZX0sW10pfWZ1bmN0aW9uIGhhdmVTYW1lS2V5cyhlLHMpe2NvbnN0IGQ9T2JqZWN0LmtleXMoZSksbT1PYmplY3Qua2V5cyhzKTtpZihkLmxlbmd0aCE9PW0ubGVuZ3RoKXJldHVybiExO2Zvcihjb25zdFtlLHNdb2YgZC5lbnRyaWVzKCkpaWYocyE9PW1bZV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbWFwVXBkYXRlU2V0KGUscyl7Y29uc3QgZD1PYmplY3QuZW50cmllcyhzKS5maWx0ZXIoKFssZV0pPT52b2lkIDAhPT1lKS5tYXAoKFtzLGRdKT0+aXMoZCxTUUwpfHxpcyhkLENvbHVtbik/W3MsZF06W3MsbmV3IFBhcmFtKGQsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc11bc10pXSk7aWYoMD09PWQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWVzIHRvIHNldCIpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZCl9ZnVuY3Rpb24gZ2V0VGFibGVMaWtlTmFtZShlKXtyZXR1cm4gaXMoZSxTdWJxdWVyeSk/ZS5fLmFsaWFzOmlzKGUsVmlldyk/ZVt3dV0ubmFtZTppcyhlLFNRTCk/dm9pZCAwOmVbVGFibGUuU3ltYm9sLklzQWxpYXNdP2VbVGFibGUuU3ltYm9sLk5hbWVdOmVbVGFibGUuU3ltYm9sLkJhc2VOYW1lXX1mdW5jdGlvbiBnZXRDb2x1bW5OYW1lQW5kQ29uZmlnKGUscyl7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wP2U6IiIsY29uZmlnOiJvYmplY3QiPT10eXBlb2YgZT9lOnN9fUNvbHVtbi5wcm90b3R5cGUuZ2V0U1FMPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTUUwoW3RoaXNdKX0sVGFibGUucHJvdG90eXBlLmdldFNRTD1mdW5jdGlvbigpe3JldHVybiBuZXcgU1FMKFt0aGlzXSl9LFN1YnF1ZXJ5LnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFNRTChbdGhpc10pfTtjb25zdCB6dT0idW5kZWZpbmVkIj09dHlwZW9mIFRleHREZWNvZGVyP251bGw6bmV3IFRleHREZWNvZGVyLEl1PVN5bWJvbC5mb3IoImRyaXp6bGU6UGdJbmxpbmVGb3JlaWduS2V5cyIpLEN1PVN5bWJvbC5mb3IoImRyaXp6bGU6RW5hYmxlUkxTIik7Y2xhc3MgUGdUYWJsZSBleHRlbmRzIFRhYmxle3N0YXRpY1t1dV09IlBnVGFibGUiO3N0YXRpYyBTeW1ib2w9T2JqZWN0LmFzc2lnbih7fSxUYWJsZS5TeW1ib2wse0lubGluZUZvcmVpZ25LZXlzOkl1LEVuYWJsZVJMUzpDdX0pO1tJdV09W107W0N1XT0hMTtbVGFibGUuU3ltYm9sLkV4dHJhQ29uZmlnQnVpbGRlcl09dm9pZCAwO1tUYWJsZS5TeW1ib2wuRXh0cmFDb25maWdDb2x1bW5zXT17fX1sZXQgVHU9Y2xhc3N7c3RhdGljW3V1XT0iUGdQcmltYXJ5S2V5QnVpbGRlciI7Y29sdW1ucztuYW1lO2NvbnN0cnVjdG9yKGUscyl7dGhpcy5jb2x1bW5zPWUsdGhpcy5uYW1lPXN9YnVpbGQoZSl7cmV0dXJuIG5ldyBSdShlLHRoaXMuY29sdW1ucyx0aGlzLm5hbWUpfX0sUnU9Y2xhc3N7Y29uc3RydWN0b3IoZSxzLGQpe3RoaXMudGFibGU9ZSx0aGlzLmNvbHVtbnM9cyx0aGlzLm5hbWU9ZH1zdGF0aWNbdXVdPSJQZ1ByaW1hcnlLZXkiO2NvbHVtbnM7bmFtZTtnZXROYW1lKCl7cmV0dXJuIHRoaXMubmFtZT8/YCR7dGhpcy50YWJsZVtQZ1RhYmxlLlN5bWJvbC5OYW1lXX1fJHt0aGlzLmNvbHVtbnMubWFwKGU9PmUubmFtZSkuam9pbigiXyIpfV9wa2B9fTtmdW5jdGlvbiBiaW5kSWZQYXJhbShlLHMpe3JldHVybiFmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYibWFwVG9Ecml2ZXJWYWx1ZSJpbiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5tYXBUb0RyaXZlclZhbHVlfShzKXx8aXNTUUxXcmFwcGVyKGUpfHxpcyhlLFBhcmFtKXx8aXMoZSxQbGFjZWhvbGRlcil8fGlzKGUsQ29sdW1uKXx8aXMoZSxUYWJsZSl8fGlzKGUsVmlldyk/ZTpuZXcgUGFyYW0oZSxzKX1jb25zdCBlcT0oZSxzKT0+c3FsYCR7ZX0gPSAke2JpbmRJZlBhcmFtKHMsZSl9YCxuZT0oZSxzKT0+c3FsYCR7ZX0gPD4gJHtiaW5kSWZQYXJhbShzLGUpfWA7ZnVuY3Rpb24gYW5kKC4uLmUpe2NvbnN0IHM9ZS5maWx0ZXIoZT0+dm9pZCAwIT09ZSk7aWYoMCE9PXMubGVuZ3RoKXJldHVybiAxPT09cy5sZW5ndGg/bmV3IFNRTChzKTpuZXcgU1FMKFtuZXcgU3RyaW5nQ2h1bmsoIigiKSxzcWwuam9pbihzLG5ldyBTdHJpbmdDaHVuaygiIGFuZCAiKSksbmV3IFN0cmluZ0NodW5rKCIpIildKX1mdW5jdGlvbiBvciguLi5lKXtjb25zdCBzPWUuZmlsdGVyKGU9PnZvaWQgMCE9PWUpO2lmKDAhPT1zLmxlbmd0aClyZXR1cm4gMT09PXMubGVuZ3RoP25ldyBTUUwocyk6bmV3IFNRTChbbmV3IFN0cmluZ0NodW5rKCIoIiksc3FsLmpvaW4ocyxuZXcgU3RyaW5nQ2h1bmsoIiBvciAiKSksbmV3IFN0cmluZ0NodW5rKCIpIildKX1mdW5jdGlvbiBub3QoZSl7cmV0dXJuIHNxbGBub3QgJHtlfWB9Y29uc3QgZ3Q9KGUscyk9PnNxbGAke2V9ID4gJHtiaW5kSWZQYXJhbShzLGUpfWAsZ3RlPShlLHMpPT5zcWxgJHtlfSA+PSAke2JpbmRJZlBhcmFtKHMsZSl9YCxsdD0oZSxzKT0+c3FsYCR7ZX0gPCAke2JpbmRJZlBhcmFtKHMsZSl9YCxsdGU9KGUscyk9PnNxbGAke2V9IDw9ICR7YmluZElmUGFyYW0ocyxlKX1gO2Z1bmN0aW9uIGluQXJyYXkoZSxzKXtyZXR1cm4gQXJyYXkuaXNBcnJheShzKT8wPT09cy5sZW5ndGg/c3FsYGZhbHNlYDpzcWxgJHtlfSBpbiAke3MubWFwKHM9PmJpbmRJZlBhcmFtKHMsZSkpfWA6c3FsYCR7ZX0gaW4gJHtiaW5kSWZQYXJhbShzLGUpfWB9ZnVuY3Rpb24gbm90SW5BcnJheShlLHMpe3JldHVybiBBcnJheS5pc0FycmF5KHMpPzA9PT1zLmxlbmd0aD9zcWxgdHJ1ZWA6c3FsYCR7ZX0gbm90IGluICR7cy5tYXAocz0+YmluZElmUGFyYW0ocyxlKSl9YDpzcWxgJHtlfSBub3QgaW4gJHtiaW5kSWZQYXJhbShzLGUpfWB9ZnVuY3Rpb24gaXNOdWxsJDIoZSl7cmV0dXJuIHNxbGAke2V9IGlzIG51bGxgfWZ1bmN0aW9uIGlzTm90TnVsbChlKXtyZXR1cm4gc3FsYCR7ZX0gaXMgbm90IG51bGxgfWZ1bmN0aW9uIGV4aXN0cyhlKXtyZXR1cm4gc3FsYGV4aXN0cyAke2V9YH1mdW5jdGlvbiBub3RFeGlzdHMoZSl7cmV0dXJuIHNxbGBub3QgZXhpc3RzICR7ZX1gfWZ1bmN0aW9uIGJldHdlZW4oZSxzLGQpe3JldHVybiBzcWxgJHtlfSBiZXR3ZWVuICR7YmluZElmUGFyYW0ocyxlKX0gYW5kICR7YmluZElmUGFyYW0oZCxlKX1gfWZ1bmN0aW9uIG5vdEJldHdlZW4oZSxzLGQpe3JldHVybiBzcWxgJHtlfSBub3QgYmV0d2VlbiAke2JpbmRJZlBhcmFtKHMsZSl9IGFuZCAke2JpbmRJZlBhcmFtKGQsZSl9YH1mdW5jdGlvbiBsaWtlKGUscyl7cmV0dXJuIHNxbGAke2V9IGxpa2UgJHtzfWB9ZnVuY3Rpb24gbm90TGlrZShlLHMpe3JldHVybiBzcWxgJHtlfSBub3QgbGlrZSAke3N9YH1mdW5jdGlvbiBpbGlrZShlLHMpe3JldHVybiBzcWxgJHtlfSBpbGlrZSAke3N9YH1mdW5jdGlvbiBub3RJbGlrZShlLHMpe3JldHVybiBzcWxgJHtlfSBub3QgaWxpa2UgJHtzfWB9ZnVuY3Rpb24gYXNjKGUpe3JldHVybiBzcWxgJHtlfSBhc2NgfWZ1bmN0aW9uIGRlc2MoZSl7cmV0dXJuIHNxbGAke2V9IGRlc2NgfWNsYXNzIFJlbGF0aW9ue2NvbnN0cnVjdG9yKGUscyxkKXt0aGlzLnNvdXJjZVRhYmxlPWUsdGhpcy5yZWZlcmVuY2VkVGFibGU9cyx0aGlzLnJlbGF0aW9uTmFtZT1kLHRoaXMucmVmZXJlbmNlZFRhYmxlTmFtZT1zW1RhYmxlLlN5bWJvbC5OYW1lXX1zdGF0aWNbdXVdPSJSZWxhdGlvbiI7cmVmZXJlbmNlZFRhYmxlTmFtZTtmaWVsZE5hbWV9Y2xhc3MgUmVsYXRpb25ze2NvbnN0cnVjdG9yKGUscyl7dGhpcy50YWJsZT1lLHRoaXMuY29uZmlnPXN9c3RhdGljW3V1XT0iUmVsYXRpb25zIn1jbGFzcyBPbmUgZXh0ZW5kcyBSZWxhdGlvbntjb25zdHJ1Y3RvcihlLHMsZCxtKXtzdXBlcihlLHMsZD8ucmVsYXRpb25OYW1lKSx0aGlzLmNvbmZpZz1kLHRoaXMuaXNOdWxsYWJsZT1tfXN0YXRpY1t1dV09Ik9uZSI7d2l0aEZpZWxkTmFtZShlKXtjb25zdCBzPW5ldyBPbmUodGhpcy5zb3VyY2VUYWJsZSx0aGlzLnJlZmVyZW5jZWRUYWJsZSx0aGlzLmNvbmZpZyx0aGlzLmlzTnVsbGFibGUpO3JldHVybiBzLmZpZWxkTmFtZT1lLHN9fWNsYXNzIE1hbnkgZXh0ZW5kcyBSZWxhdGlvbntjb25zdHJ1Y3RvcihlLHMsZCl7c3VwZXIoZSxzLGQ/LnJlbGF0aW9uTmFtZSksdGhpcy5jb25maWc9ZH1zdGF0aWNbdXVdPSJNYW55Ijt3aXRoRmllbGROYW1lKGUpe2NvbnN0IHM9bmV3IE1hbnkodGhpcy5zb3VyY2VUYWJsZSx0aGlzLnJlZmVyZW5jZWRUYWJsZSx0aGlzLmNvbmZpZyk7cmV0dXJuIHMuZmllbGROYW1lPWUsc319ZnVuY3Rpb24gcmVsYXRpb25zKGUscyl7cmV0dXJuIG5ldyBSZWxhdGlvbnMoZSxlPT5PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocyhlKSkubWFwKChbZSxzXSk9PltlLHMud2l0aEZpZWxkTmFtZShlKV0pKSl9ZnVuY3Rpb24gY3JlYXRlT25lKGUpe3JldHVybiBmdW5jdGlvbihzLGQpe3JldHVybiBuZXcgT25lKGUscyxkLGQ/LmZpZWxkcy5yZWR1Y2UoKGUscyk9PmUmJnMubm90TnVsbCwhMCk/PyExKX19ZnVuY3Rpb24gY3JlYXRlTWFueShlKXtyZXR1cm4gZnVuY3Rpb24ocyxkKXtyZXR1cm4gbmV3IE1hbnkoZSxzLGQpfX1mdW5jdGlvbiBub3JtYWxpemVSZWxhdGlvbihlLHMsZCl7aWYoaXMoZCxPbmUpJiZkLmNvbmZpZylyZXR1cm57ZmllbGRzOmQuY29uZmlnLmZpZWxkcyxyZWZlcmVuY2VzOmQuY29uZmlnLnJlZmVyZW5jZXN9O2NvbnN0IG09c1tnZXRUYWJsZVVuaXF1ZU5hbWUoZC5yZWZlcmVuY2VkVGFibGUpXTtpZighbSl0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICIke2QucmVmZXJlbmNlZFRhYmxlW1RhYmxlLlN5bWJvbC5OYW1lXX0iIG5vdCBmb3VuZCBpbiBzY2hlbWFgKTtjb25zdCBoPWVbbV07aWYoIWgpdGhyb3cgbmV3IEVycm9yKGBUYWJsZSAiJHttfSIgbm90IGZvdW5kIGluIHNjaGVtYWApO2NvbnN0IGc9ZC5zb3VyY2VUYWJsZSx4PXNbZ2V0VGFibGVVbmlxdWVOYW1lKGcpXTtpZigheCl0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICIke2dbVGFibGUuU3ltYm9sLk5hbWVdfSIgbm90IGZvdW5kIGluIHNjaGVtYWApO2NvbnN0ICQ9W107Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyhoLnJlbGF0aW9ucykpKGQucmVsYXRpb25OYW1lJiZkIT09ZSYmZS5yZWxhdGlvbk5hbWU9PT1kLnJlbGF0aW9uTmFtZXx8IWQucmVsYXRpb25OYW1lJiZlLnJlZmVyZW5jZWRUYWJsZT09PWQuc291cmNlVGFibGUpJiYkLnB1c2goZSk7aWYoJC5sZW5ndGg+MSl0aHJvdyBkLnJlbGF0aW9uTmFtZT9uZXcgRXJyb3IoYFRoZXJlIGFyZSBtdWx0aXBsZSByZWxhdGlvbnMgd2l0aCBuYW1lICIke2QucmVsYXRpb25OYW1lfSIgaW4gdGFibGUgIiR7bX0iYCk6bmV3IEVycm9yKGBUaGVyZSBhcmUgbXVsdGlwbGUgcmVsYXRpb25zIGJldHdlZW4gIiR7bX0iIGFuZCAiJHtkLnNvdXJjZVRhYmxlW1RhYmxlLlN5bWJvbC5OYW1lXX0iLiBQbGVhc2Ugc3BlY2lmeSByZWxhdGlvbiBuYW1lYCk7aWYoJFswXSYmaXMoJFswXSxPbmUpJiYkWzBdLmNvbmZpZylyZXR1cm57ZmllbGRzOiRbMF0uY29uZmlnLnJlZmVyZW5jZXMscmVmZXJlbmNlczokWzBdLmNvbmZpZy5maWVsZHN9O3Rocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgbm90IGVub3VnaCBpbmZvcm1hdGlvbiB0byBpbmZlciByZWxhdGlvbiAiJHt4fS4ke2QuZmllbGROYW1lfSJgKX1mdW5jdGlvbiBjcmVhdGVUYWJsZVJlbGF0aW9uc0hlbHBlcnMoZSl7cmV0dXJue29uZTpjcmVhdGVPbmUoZSksbWFueTpjcmVhdGVNYW55KGUpfX1mdW5jdGlvbiBtYXBSZWxhdGlvbmFsUm93KGUscyxkLG0saD1lPT5lKXtjb25zdCBnPXt9O2Zvcihjb25zdFt4LCRdb2YgbS5lbnRyaWVzKCkpaWYoJC5pc0pzb24pe2NvbnN0IG09cy5yZWxhdGlvbnNbJC50c0tleV0sUz1kW3hdLGo9InN0cmluZyI9PXR5cGVvZiBTP0pTT04ucGFyc2UoUyk6UztnWyQudHNLZXldPWlzKG0sT25lKT9qJiZtYXBSZWxhdGlvbmFsUm93KGUsZVskLnJlbGF0aW9uVGFibGVUc0tleV0saiwkLnNlbGVjdGlvbixoKTpqLm1hcChzPT5tYXBSZWxhdGlvbmFsUm93KGUsZVskLnJlbGF0aW9uVGFibGVUc0tleV0scywkLnNlbGVjdGlvbixoKSl9ZWxzZXtjb25zdCBlPWgoZFt4XSkscz0kLmZpZWxkO2xldCBtO209aXMocyxDb2x1bW4pP3M6aXMocyxTUUwpP3MuZGVjb2RlcjpzLnNxbC5kZWNvZGVyLGdbJC50c0tleV09bnVsbD09PWU/bnVsbDptLm1hcEZyb21Ecml2ZXJWYWx1ZShlKX1yZXR1cm4gZ31jbGFzcyBDb2x1bW5BbGlhc1Byb3h5SGFuZGxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnRhYmxlPWV9c3RhdGljW3V1XT0iQ29sdW1uQWxpYXNQcm94eUhhbmRsZXIiO2dldChlLHMpe3JldHVybiJ0YWJsZSI9PT1zP3RoaXMudGFibGU6ZVtzXX19Y2xhc3MgVGFibGVBbGlhc1Byb3h5SGFuZGxlcntjb25zdHJ1Y3RvcihlLHMpe3RoaXMuYWxpYXM9ZSx0aGlzLnJlcGxhY2VPcmlnaW5hbE5hbWU9c31zdGF0aWNbdXVdPSJUYWJsZUFsaWFzUHJveHlIYW5kbGVyIjtnZXQoZSxzKXtpZihzPT09VGFibGUuU3ltYm9sLklzQWxpYXMpcmV0dXJuITA7aWYocz09PVRhYmxlLlN5bWJvbC5OYW1lKXJldHVybiB0aGlzLmFsaWFzO2lmKHRoaXMucmVwbGFjZU9yaWdpbmFsTmFtZSYmcz09PVRhYmxlLlN5bWJvbC5PcmlnaW5hbE5hbWUpcmV0dXJuIHRoaXMuYWxpYXM7aWYocz09PXd1KXJldHVybnsuLi5lW3d1XSxuYW1lOnRoaXMuYWxpYXMsaXNBbGlhczohMH07aWYocz09PVRhYmxlLlN5bWJvbC5Db2x1bW5zKXtjb25zdCBzPWVbVGFibGUuU3ltYm9sLkNvbHVtbnNdO2lmKCFzKXJldHVybiBzO2NvbnN0IGQ9e307cmV0dXJuIE9iamVjdC5rZXlzKHMpLm1hcChtPT57ZFttXT1uZXcgUHJveHkoc1ttXSxuZXcgQ29sdW1uQWxpYXNQcm94eUhhbmRsZXIobmV3IFByb3h5KGUsdGhpcykpKX0pLGR9Y29uc3QgZD1lW3NdO3JldHVybiBpcyhkLENvbHVtbik/bmV3IFByb3h5KGQsbmV3IENvbHVtbkFsaWFzUHJveHlIYW5kbGVyKG5ldyBQcm94eShlLHRoaXMpKSk6ZH19ZnVuY3Rpb24gYWxpYXNlZFRhYmxlKGUscyl7cmV0dXJuIG5ldyBQcm94eShlLG5ldyBUYWJsZUFsaWFzUHJveHlIYW5kbGVyKHMsITEpKX1mdW5jdGlvbiBhbGlhc2VkVGFibGVDb2x1bW4oZSxzKXtyZXR1cm4gbmV3IFByb3h5KGUsbmV3IENvbHVtbkFsaWFzUHJveHlIYW5kbGVyKG5ldyBQcm94eShlLnRhYmxlLG5ldyBUYWJsZUFsaWFzUHJveHlIYW5kbGVyKHMsITEpKSkpfWZ1bmN0aW9uIG1hcENvbHVtbnNJbkFsaWFzZWRTUUxUb0FsaWFzKGUscyl7cmV0dXJuIG5ldyBTUUwuQWxpYXNlZChtYXBDb2x1bW5zSW5TUUxUb0FsaWFzKGUuc3FsLHMpLGUuZmllbGRBbGlhcyl9ZnVuY3Rpb24gbWFwQ29sdW1uc0luU1FMVG9BbGlhcyhlLHMpe3JldHVybiBzcWwuam9pbihlLnF1ZXJ5Q2h1bmtzLm1hcChlPT5pcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUscyk6aXMoZSxTUUwpP21hcENvbHVtbnNJblNRTFRvQWxpYXMoZSxzKTppcyhlLFNRTC5BbGlhc2VkKT9tYXBDb2x1bW5zSW5BbGlhc2VkU1FMVG9BbGlhcyhlLHMpOmUpKX1jbGFzcyBTZWxlY3Rpb25Qcm94eUhhbmRsZXJ7c3RhdGljW3V1XT0iU2VsZWN0aW9uUHJveHlIYW5kbGVyIjtjb25maWc7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25maWc9ey4uLmV9fWdldChlLHMpe2lmKCJfIj09PXMpcmV0dXJuey4uLmUuXyxzZWxlY3RlZEZpZWxkczpuZXcgUHJveHkoZS5fLnNlbGVjdGVkRmllbGRzLHRoaXMpfTtpZihzPT09d3UpcmV0dXJuey4uLmVbd3VdLHNlbGVjdGVkRmllbGRzOm5ldyBQcm94eShlW3d1XS5zZWxlY3RlZEZpZWxkcyx0aGlzKX07aWYoInN5bWJvbCI9PXR5cGVvZiBzKXJldHVybiBlW3NdO2NvbnN0IGQ9KGlzKGUsU3VicXVlcnkpP2UuXy5zZWxlY3RlZEZpZWxkczppcyhlLFZpZXcpP2Vbd3VdLnNlbGVjdGVkRmllbGRzOmUpW3NdO2lmKGlzKGQsU1FMLkFsaWFzZWQpKXtpZigic3FsIj09PXRoaXMuY29uZmlnLnNxbEFsaWFzZWRCZWhhdmlvciYmIWQuaXNTZWxlY3Rpb25GaWVsZClyZXR1cm4gZC5zcWw7Y29uc3QgZT1kLmNsb25lKCk7cmV0dXJuIGUuaXNTZWxlY3Rpb25GaWVsZD0hMCxlfWlmKGlzKGQsU1FMKSl7aWYoInNxbCI9PT10aGlzLmNvbmZpZy5zcWxCZWhhdmlvcilyZXR1cm4gZDt0aHJvdyBuZXcgRXJyb3IoYFlvdSB0cmllZCB0byByZWZlcmVuY2UgIiR7c30iIGZpZWxkIGZyb20gYSBzdWJxdWVyeSwgd2hpY2ggaXMgYSByYXcgU1FMIGZpZWxkLCBidXQgaXQgZG9lc24ndCBoYXZlIGFuIGFsaWFzIGRlY2xhcmVkLiBQbGVhc2UgYWRkIGFuIGFsaWFzIHRvIHRoZSBmaWVsZCB1c2luZyAiLmFzKCdhbGlhcycpIiBtZXRob2QuYCl9cmV0dXJuIGlzKGQsQ29sdW1uKT90aGlzLmNvbmZpZy5hbGlhcz9uZXcgUHJveHkoZCxuZXcgQ29sdW1uQWxpYXNQcm94eUhhbmRsZXIobmV3IFByb3h5KGQudGFibGUsbmV3IFRhYmxlQWxpYXNQcm94eUhhbmRsZXIodGhpcy5jb25maWcuYWxpYXMsdGhpcy5jb25maWcucmVwbGFjZU9yaWdpbmFsTmFtZT8/ITEpKSkpOmQ6Im9iamVjdCIhPXR5cGVvZiBkfHxudWxsPT09ZD9kOm5ldyBQcm94eShkLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIodGhpcy5jb25maWcpKX19Y2xhc3MgUXVlcnlQcm9taXNle3N0YXRpY1t1dV09IlF1ZXJ5UHJvbWlzZSI7W1N5bWJvbC50b1N0cmluZ1RhZ109IlF1ZXJ5UHJvbWlzZSI7Y2F0Y2goZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9ZmluYWxseShlKXtyZXR1cm4gdGhpcy50aGVuKHM9PihlPy4oKSxzKSxzPT57dGhyb3cgZT8uKCksc30pfXRoZW4oZSxzKXtyZXR1cm4gdGhpcy5leGVjdXRlKCkudGhlbihlLHMpfX1jbGFzcyBGb3JlaWduS2V5QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVGb3JlaWduS2V5QnVpbGRlciI7cmVmZXJlbmNlO19vblVwZGF0ZTtfb25EZWxldGU7Y29uc3RydWN0b3IoZSxzKXt0aGlzLnJlZmVyZW5jZT0oKT0+e2NvbnN0e25hbWU6cyxjb2x1bW5zOmQsZm9yZWlnbkNvbHVtbnM6bX09ZSgpO3JldHVybntuYW1lOnMsY29sdW1uczpkLGZvcmVpZ25UYWJsZTptWzBdLnRhYmxlLGZvcmVpZ25Db2x1bW5zOm19fSxzJiYodGhpcy5fb25VcGRhdGU9cy5vblVwZGF0ZSx0aGlzLl9vbkRlbGV0ZT1zLm9uRGVsZXRlKX1vblVwZGF0ZShlKXtyZXR1cm4gdGhpcy5fb25VcGRhdGU9ZSx0aGlzfW9uRGVsZXRlKGUpe3JldHVybiB0aGlzLl9vbkRlbGV0ZT1lLHRoaXN9YnVpbGQoZSl7cmV0dXJuIG5ldyBGb3JlaWduS2V5KGUsdGhpcyl9fWNsYXNzIEZvcmVpZ25LZXl7Y29uc3RydWN0b3IoZSxzKXt0aGlzLnRhYmxlPWUsdGhpcy5yZWZlcmVuY2U9cy5yZWZlcmVuY2UsdGhpcy5vblVwZGF0ZT1zLl9vblVwZGF0ZSx0aGlzLm9uRGVsZXRlPXMuX29uRGVsZXRlfXN0YXRpY1t1dV09IlNRTGl0ZUZvcmVpZ25LZXkiO3JlZmVyZW5jZTtvblVwZGF0ZTtvbkRlbGV0ZTtnZXROYW1lKCl7Y29uc3R7bmFtZTplLGNvbHVtbnM6cyxmb3JlaWduQ29sdW1uczpkfT10aGlzLnJlZmVyZW5jZSgpLG09cy5tYXAoZT0+ZS5uYW1lKSxoPWQubWFwKGU9PmUubmFtZSksZz1bdGhpcy50YWJsZVtkdV0sLi4ubSxkWzBdLnRhYmxlW2R1XSwuLi5oXTtyZXR1cm4gZT8/YCR7Zy5qb2luKCJfIil9X2ZrYH19Y2xhc3MgU1FMaXRlQ29sdW1uQnVpbGRlciBleHRlbmRzIENvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlQ29sdW1uQnVpbGRlciI7Zm9yZWlnbktleUNvbmZpZ3M9W107cmVmZXJlbmNlcyhlLHM9e30pe3JldHVybiB0aGlzLmZvcmVpZ25LZXlDb25maWdzLnB1c2goe3JlZjplLGFjdGlvbnM6c30pLHRoaXN9dW5pcXVlKGUpe3JldHVybiB0aGlzLmNvbmZpZy5pc1VuaXF1ZT0hMCx0aGlzLmNvbmZpZy51bmlxdWVOYW1lPWUsdGhpc31nZW5lcmF0ZWRBbHdheXNBcyhlLHMpe3JldHVybiB0aGlzLmNvbmZpZy5nZW5lcmF0ZWQ9e2FzOmUsdHlwZToiYWx3YXlzIixtb2RlOnM/Lm1vZGU/PyJ2aXJ0dWFsIn0sdGhpc31idWlsZEZvcmVpZ25LZXlzKGUscyl7cmV0dXJuIHRoaXMuZm9yZWlnbktleUNvbmZpZ3MubWFwKCh7cmVmOmQsYWN0aW9uczptfSk9PigoZCxtKT0+e2NvbnN0IGg9bmV3IEZvcmVpZ25LZXlCdWlsZGVyKCgpPT57Y29uc3Qgcz1kKCk7cmV0dXJue2NvbHVtbnM6W2VdLGZvcmVpZ25Db2x1bW5zOltzXX19KTtyZXR1cm4gbS5vblVwZGF0ZSYmaC5vblVwZGF0ZShtLm9uVXBkYXRlKSxtLm9uRGVsZXRlJiZoLm9uRGVsZXRlKG0ub25EZWxldGUpLGguYnVpbGQocyl9KShkLG0pKX19Y2xhc3MgU1FMaXRlQ29sdW1uIGV4dGVuZHMgQ29sdW1ue2NvbnN0cnVjdG9yKGUscyl7cy51bmlxdWVOYW1lfHwocy51bmlxdWVOYW1lPWZ1bmN0aW9uKGUscyl7cmV0dXJuYCR7ZVtkdV19XyR7cy5qb2luKCJfIil9X3VuaXF1ZWB9KGUsW3MubmFtZV0pKSxzdXBlcihlLHMpLHRoaXMudGFibGU9ZX1zdGF0aWNbdXVdPSJTUUxpdGVDb2x1bW4ifWNsYXNzIFNRTGl0ZUJpZ0ludEJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZUJpZ0ludEJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJpZ2ludCIsIlNRTGl0ZUJpZ0ludCIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlQmlnSW50KGUsdGhpcy5jb25maWcpfX1jbGFzcyBTUUxpdGVCaWdJbnQgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmlnSW50IjtnZXRTUUxUeXBlKCl7cmV0dXJuImJsb2IifW1hcEZyb21Ecml2ZXJWYWx1ZShzKXtpZih2b2lkIDAhPT1lJiZlLmZyb20pe2NvbnN0IGQ9ZS5pc0J1ZmZlcihzKT9zOnMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9lLmZyb20ocyk6cy5idWZmZXI/ZS5mcm9tKHMuYnVmZmVyLHMuYnl0ZU9mZnNldCxzLmJ5dGVMZW5ndGgpOmUuZnJvbShzKTtyZXR1cm4gQmlnSW50KGQudG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEJpZ0ludCh6dS5kZWNvZGUocykpfW1hcFRvRHJpdmVyVmFsdWUocyl7cmV0dXJuIGUuZnJvbShzLnRvU3RyaW5nKCkpfX1jbGFzcyBTUUxpdGVCbG9iSnNvbkJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZUJsb2JKc29uQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwianNvbiIsIlNRTGl0ZUJsb2JKc29uIil9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVCbG9iSnNvbihlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlQmxvYkpzb24gZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmxvYkpzb24iO2dldFNRTFR5cGUoKXtyZXR1cm4iYmxvYiJ9bWFwRnJvbURyaXZlclZhbHVlKHMpe2lmKHZvaWQgMCE9PWUmJmUuZnJvbSl7Y29uc3QgZD1lLmlzQnVmZmVyKHMpP3M6cyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2UuZnJvbShzKTpzLmJ1ZmZlcj9lLmZyb20ocy5idWZmZXIscy5ieXRlT2Zmc2V0LHMuYnl0ZUxlbmd0aCk6ZS5mcm9tKHMpO3JldHVybiBKU09OLnBhcnNlKGQudG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEpTT04ucGFyc2UoenUuZGVjb2RlKHMpKX1tYXBUb0RyaXZlclZhbHVlKHMpe3JldHVybiBlLmZyb20oSlNPTi5zdHJpbmdpZnkocykpfX1jbGFzcyBTUUxpdGVCbG9iQnVmZmVyQnVpbGRlciBleHRlbmRzIFNRTGl0ZUNvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlQmxvYkJ1ZmZlckJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJ1ZmZlciIsIlNRTGl0ZUJsb2JCdWZmZXIiKX1idWlsZChlKXtyZXR1cm4gbmV3IFNRTGl0ZUJsb2JCdWZmZXIoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZUJsb2JCdWZmZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmxvYkJ1ZmZlciI7bWFwRnJvbURyaXZlclZhbHVlKHMpe3JldHVybiBlLmlzQnVmZmVyKHMpP3M6ZS5mcm9tKHMpfWdldFNRTFR5cGUoKXtyZXR1cm4iYmxvYiJ9fWZ1bmN0aW9uIGJsb2IoZSxzKXtjb25zdHtuYW1lOmQsY29uZmlnOm19PWdldENvbHVtbk5hbWVBbmRDb25maWcoZSxzKTtyZXR1cm4ianNvbiI9PT1tPy5tb2RlP25ldyBTUUxpdGVCbG9iSnNvbkJ1aWxkZXIoZCk6ImJpZ2ludCI9PT1tPy5tb2RlP25ldyBTUUxpdGVCaWdJbnRCdWlsZGVyKGQpOm5ldyBTUUxpdGVCbG9iQnVmZmVyQnVpbGRlcihkKX1jbGFzcyBTUUxpdGVDdXN0b21Db2x1bW5CdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVDdXN0b21Db2x1bW5CdWlsZGVyIjtjb25zdHJ1Y3RvcihlLHMsZCl7c3VwZXIoZSwiY3VzdG9tIiwiU1FMaXRlQ3VzdG9tQ29sdW1uIiksdGhpcy5jb25maWcuZmllbGRDb25maWc9cyx0aGlzLmNvbmZpZy5jdXN0b21UeXBlUGFyYW1zPWR9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVDdXN0b21Db2x1bW4oZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZUN1c3RvbUNvbHVtbiBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVDdXN0b21Db2x1bW4iO3NxbE5hbWU7bWFwVG87bWFwRnJvbTtjb25zdHJ1Y3RvcihlLHMpe3N1cGVyKGUscyksdGhpcy5zcWxOYW1lPXMuY3VzdG9tVHlwZVBhcmFtcy5kYXRhVHlwZShzLmZpZWxkQ29uZmlnKSx0aGlzLm1hcFRvPXMuY3VzdG9tVHlwZVBhcmFtcy50b0RyaXZlcix0aGlzLm1hcEZyb209cy5jdXN0b21UeXBlUGFyYW1zLmZyb21Ecml2ZXJ9Z2V0U1FMVHlwZSgpe3JldHVybiB0aGlzLnNxbE5hbWV9bWFwRnJvbURyaXZlclZhbHVlKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm1hcEZyb20/dGhpcy5tYXBGcm9tKGUpOmV9bWFwVG9Ecml2ZXJWYWx1ZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5tYXBUbz90aGlzLm1hcFRvKGUpOmV9fWZ1bmN0aW9uIGN1c3RvbVR5cGUoZSl7cmV0dXJuKHMsZCk9Pntjb25zdHtuYW1lOm0sY29uZmlnOmh9PWdldENvbHVtbk5hbWVBbmRDb25maWcocyxkKTtyZXR1cm4gbmV3IFNRTGl0ZUN1c3RvbUNvbHVtbkJ1aWxkZXIobSxoLGUpfX1jbGFzcyBTUUxpdGVCYXNlSW50ZWdlckJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW5CdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZUJhc2VJbnRlZ2VyQnVpbGRlciI7Y29uc3RydWN0b3IoZSxzLGQpe3N1cGVyKGUscyxkKSx0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSExfXByaW1hcnlLZXkoZSl7cmV0dXJuIGU/LmF1dG9JbmNyZW1lbnQmJih0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSEwKSx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHN1cGVyLnByaW1hcnlLZXkoKX19Y2xhc3MgU1FMaXRlQmFzZUludGVnZXIgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlQmFzZUludGVnZXIiO2F1dG9JbmNyZW1lbnQ9dGhpcy5jb25maWcuYXV0b0luY3JlbWVudDtnZXRTUUxUeXBlKCl7cmV0dXJuImludGVnZXIifX1jbGFzcyBTUUxpdGVJbnRlZ2VyQnVpbGRlciBleHRlbmRzIFNRTGl0ZUJhc2VJbnRlZ2VyQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVJbnRlZ2VyQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwibnVtYmVyIiwiU1FMaXRlSW50ZWdlciIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlSW50ZWdlcihlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlSW50ZWdlciBleHRlbmRzIFNRTGl0ZUJhc2VJbnRlZ2Vye3N0YXRpY1t1dV09IlNRTGl0ZUludGVnZXIifWNsYXNzIFNRTGl0ZVRpbWVzdGFtcEJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVCYXNlSW50ZWdlckJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlVGltZXN0YW1wQnVpbGRlciI7Y29uc3RydWN0b3IoZSxzKXtzdXBlcihlLCJkYXRlIiwiU1FMaXRlVGltZXN0YW1wIiksdGhpcy5jb25maWcubW9kZT1zfWRlZmF1bHROb3coKXtyZXR1cm4gdGhpcy5kZWZhdWx0KHNxbGAoY2FzdCgoanVsaWFuZGF5KCdub3cnKSAtIDI0NDA1ODcuNSkqODY0MDAwMDAgYXMgaW50ZWdlcikpYCl9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVUaW1lc3RhbXAoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVRpbWVzdGFtcCBleHRlbmRzIFNRTGl0ZUJhc2VJbnRlZ2Vye3N0YXRpY1t1dV09IlNRTGl0ZVRpbWVzdGFtcCI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4idGltZXN0YW1wIj09PXRoaXMuY29uZmlnLm1vZGU/bmV3IERhdGUoMWUzKmUpOm5ldyBEYXRlKGUpfW1hcFRvRHJpdmVyVmFsdWUoZSl7Y29uc3Qgcz1lLmdldFRpbWUoKTtyZXR1cm4idGltZXN0YW1wIj09PXRoaXMuY29uZmlnLm1vZGU/TWF0aC5mbG9vcihzLzFlMyk6c319Y2xhc3MgU1FMaXRlQm9vbGVhbkJ1aWxkZXIgZXh0ZW5kcyBTUUxpdGVCYXNlSW50ZWdlckJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlQm9vbGVhbkJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUscyl7c3VwZXIoZSwiYm9vbGVhbiIsIlNRTGl0ZUJvb2xlYW4iKSx0aGlzLmNvbmZpZy5tb2RlPXN9YnVpbGQoZSl7cmV0dXJuIG5ldyBTUUxpdGVCb29sZWFuKGUsdGhpcy5jb25maWcpfX1jbGFzcyBTUUxpdGVCb29sZWFuIGV4dGVuZHMgU1FMaXRlQmFzZUludGVnZXJ7c3RhdGljW3V1XT0iU1FMaXRlQm9vbGVhbiI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4gMT09PU51bWJlcihlKX1tYXBUb0RyaXZlclZhbHVlKGUpe3JldHVybiBlPzE6MH19ZnVuY3Rpb24gaW50ZWdlcihlLHMpe2NvbnN0e25hbWU6ZCxjb25maWc6bX09Z2V0Q29sdW1uTmFtZUFuZENvbmZpZyhlLHMpO3JldHVybiJ0aW1lc3RhbXAiPT09bT8ubW9kZXx8InRpbWVzdGFtcF9tcyI9PT1tPy5tb2RlP25ldyBTUUxpdGVUaW1lc3RhbXBCdWlsZGVyKGQsbS5tb2RlKToiYm9vbGVhbiI9PT1tPy5tb2RlP25ldyBTUUxpdGVCb29sZWFuQnVpbGRlcihkLG0ubW9kZSk6bmV3IFNRTGl0ZUludGVnZXJCdWlsZGVyKGQpfWNsYXNzIFNRTGl0ZU51bWVyaWNCdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3RyaW5nIiwiU1FMaXRlTnVtZXJpYyIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlTnVtZXJpYyhlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlTnVtZXJpYyBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljIjttYXBGcm9tRHJpdmVyVmFsdWUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6U3RyaW5nKGUpfWdldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWNsYXNzIFNRTGl0ZU51bWVyaWNOdW1iZXJCdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljTnVtYmVyQnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwibnVtYmVyIiwiU1FMaXRlTnVtZXJpY051bWJlciIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlTnVtZXJpY051bWJlcihlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlTnVtZXJpY051bWJlciBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljTnVtYmVyIjttYXBGcm9tRHJpdmVyVmFsdWUoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP2U6TnVtYmVyKGUpfW1hcFRvRHJpdmVyVmFsdWU9U3RyaW5nO2dldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWNsYXNzIFNRTGl0ZU51bWVyaWNCaWdJbnRCdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljQmlnSW50QnVpbGRlciI7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYmlnaW50IiwiU1FMaXRlTnVtZXJpY0JpZ0ludCIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlTnVtZXJpY0JpZ0ludChlLHRoaXMuY29uZmlnKX19Y2xhc3MgU1FMaXRlTnVtZXJpY0JpZ0ludCBleHRlbmRzIFNRTGl0ZUNvbHVtbntzdGF0aWNbdXVdPSJTUUxpdGVOdW1lcmljQmlnSW50IjttYXBGcm9tRHJpdmVyVmFsdWU9QmlnSW50O21hcFRvRHJpdmVyVmFsdWU9U3RyaW5nO2dldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWZ1bmN0aW9uIG51bWVyaWMoZSxzKXtjb25zdHtuYW1lOmQsY29uZmlnOm19PWdldENvbHVtbk5hbWVBbmRDb25maWcoZSxzKSxoPW0/Lm1vZGU7cmV0dXJuIm51bWJlciI9PT1oP25ldyBTUUxpdGVOdW1lcmljTnVtYmVyQnVpbGRlcihkKToiYmlnaW50Ij09PWg/bmV3IFNRTGl0ZU51bWVyaWNCaWdJbnRCdWlsZGVyKGQpOm5ldyBTUUxpdGVOdW1lcmljQnVpbGRlcihkKX1jbGFzcyBTUUxpdGVSZWFsQnVpbGRlciBleHRlbmRzIFNRTGl0ZUNvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlUmVhbEJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm51bWJlciIsIlNRTGl0ZVJlYWwiKX1idWlsZChlKXtyZXR1cm4gbmV3IFNRTGl0ZVJlYWwoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVJlYWwgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlUmVhbCI7Z2V0U1FMVHlwZSgpe3JldHVybiJyZWFsIn19ZnVuY3Rpb24gcmVhbChlKXtyZXR1cm4gbmV3IFNRTGl0ZVJlYWxCdWlsZGVyKGU/PyIiKX1jbGFzcyBTUUxpdGVUZXh0QnVpbGRlciBleHRlbmRzIFNRTGl0ZUNvbHVtbkJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlVGV4dEJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUscyl7c3VwZXIoZSwic3RyaW5nIiwiU1FMaXRlVGV4dCIpLHRoaXMuY29uZmlnLmVudW1WYWx1ZXM9cy5lbnVtLHRoaXMuY29uZmlnLmxlbmd0aD1zLmxlbmd0aH1idWlsZChlKXtyZXR1cm4gbmV3IFNRTGl0ZVRleHQoZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVRleHQgZXh0ZW5kcyBTUUxpdGVDb2x1bW57c3RhdGljW3V1XT0iU1FMaXRlVGV4dCI7ZW51bVZhbHVlcz10aGlzLmNvbmZpZy5lbnVtVmFsdWVzO2xlbmd0aD10aGlzLmNvbmZpZy5sZW5ndGg7Y29uc3RydWN0b3IoZSxzKXtzdXBlcihlLHMpfWdldFNRTFR5cGUoKXtyZXR1cm4idGV4dCIrKHRoaXMuY29uZmlnLmxlbmd0aD9gKCR7dGhpcy5jb25maWcubGVuZ3RofSlgOiIiKX19Y2xhc3MgU1FMaXRlVGV4dEpzb25CdWlsZGVyIGV4dGVuZHMgU1FMaXRlQ29sdW1uQnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVUZXh0SnNvbkJ1aWxkZXIiO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImpzb24iLCJTUUxpdGVUZXh0SnNvbiIpfWJ1aWxkKGUpe3JldHVybiBuZXcgU1FMaXRlVGV4dEpzb24oZSx0aGlzLmNvbmZpZyl9fWNsYXNzIFNRTGl0ZVRleHRKc29uIGV4dGVuZHMgU1FMaXRlQ29sdW1ue3N0YXRpY1t1dV09IlNRTGl0ZVRleHRKc29uIjtnZXRTUUxUeXBlKCl7cmV0dXJuInRleHQifW1hcEZyb21Ecml2ZXJWYWx1ZShlKXtyZXR1cm4gSlNPTi5wYXJzZShlKX1tYXBUb0RyaXZlclZhbHVlKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKX19ZnVuY3Rpb24gdGV4dChlLHM9e30pe2NvbnN0e25hbWU6ZCxjb25maWc6bX09Z2V0Q29sdW1uTmFtZUFuZENvbmZpZyhlLHMpO3JldHVybiJqc29uIj09PW0ubW9kZT9uZXcgU1FMaXRlVGV4dEpzb25CdWlsZGVyKGQpOm5ldyBTUUxpdGVUZXh0QnVpbGRlcihkLG0pfWNvbnN0IEV1PVN5bWJvbC5mb3IoImRyaXp6bGU6U1FMaXRlSW5saW5lRm9yZWlnbktleXMiKTtjbGFzcyBTUUxpdGVUYWJsZSBleHRlbmRzIFRhYmxle3N0YXRpY1t1dV09IlNRTGl0ZVRhYmxlIjtzdGF0aWMgU3ltYm9sPU9iamVjdC5hc3NpZ24oe30sVGFibGUuU3ltYm9sLHtJbmxpbmVGb3JlaWduS2V5czpFdX0pO1tUYWJsZS5TeW1ib2wuQ29sdW1uc107W0V1XT1bXTtbVGFibGUuU3ltYm9sLkV4dHJhQ29uZmlnQnVpbGRlcl09dm9pZCAwfWZ1bmN0aW9uIHNxbGl0ZVRhYmxlQmFzZShlLHMsZCxtLGg9ZSl7Y29uc3QgZz1uZXcgU1FMaXRlVGFibGUoZSxtLGgpLHg9ImZ1bmN0aW9uIj09dHlwZW9mIHM/cyh7YmxvYjpibG9iLGN1c3RvbVR5cGU6Y3VzdG9tVHlwZSxpbnRlZ2VyOmludGVnZXIsbnVtZXJpYzpudW1lcmljLHJlYWw6cmVhbCx0ZXh0OnRleHR9KTpzLCQ9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHgpLm1hcCgoW2Usc10pPT57Y29uc3QgZD1zO2Quc2V0TmFtZShlKTtjb25zdCBtPWQuYnVpbGQoZyk7cmV0dXJuIGdbRXVdLnB1c2goLi4uZC5idWlsZEZvcmVpZ25LZXlzKG0sZykpLFtlLG1dfSkpLFM9T2JqZWN0LmFzc2lnbihnLCQpO3JldHVybiBTW1RhYmxlLlN5bWJvbC5Db2x1bW5zXT0kLFNbVGFibGUuU3ltYm9sLkV4dHJhQ29uZmlnQ29sdW1uc109JCxkJiYoU1tTUUxpdGVUYWJsZS5TeW1ib2wuRXh0cmFDb25maWdCdWlsZGVyXT1kKSxTfWNvbnN0IHNxbGl0ZVRhYmxlPShlLHMsZCk9PnNxbGl0ZVRhYmxlQmFzZShlLHMsZCk7Y2xhc3MgSW5kZXhCdWlsZGVyT257Y29uc3RydWN0b3IoZSxzKXt0aGlzLm5hbWU9ZSx0aGlzLnVuaXF1ZT1zfXN0YXRpY1t1dV09IlNRTGl0ZUluZGV4QnVpbGRlck9uIjtvbiguLi5lKXtyZXR1cm4gbmV3IEluZGV4QnVpbGRlcih0aGlzLm5hbWUsZSx0aGlzLnVuaXF1ZSl9fWNsYXNzIEluZGV4QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVJbmRleEJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3RvcihlLHMsZCl7dGhpcy5jb25maWc9e25hbWU6ZSxjb2x1bW5zOnMsdW5pcXVlOmQsd2hlcmU6dm9pZCAwfX13aGVyZShlKXtyZXR1cm4gdGhpcy5jb25maWcud2hlcmU9ZSx0aGlzfWJ1aWxkKGUpe3JldHVybiBuZXcgSW5kZXgodGhpcy5jb25maWcsZSl9fWNsYXNzIEluZGV4e3N0YXRpY1t1dV09IlNRTGl0ZUluZGV4Ijtjb25maWc7Y29uc3RydWN0b3IoZSxzKXt0aGlzLmNvbmZpZz17Li4uZSx0YWJsZTpzfX19ZnVuY3Rpb24gaW5kZXgoZSl7cmV0dXJuIG5ldyBJbmRleEJ1aWxkZXJPbihlLCExKX1mdW5jdGlvbiB1bmlxdWVJbmRleChlKXtyZXR1cm4gbmV3IEluZGV4QnVpbGRlck9uKGUsITApfWZ1bmN0aW9uIHByaW1hcnlLZXkoLi4uZSl7cmV0dXJuIGVbMF0uY29sdW1ucz9uZXcgUHJpbWFyeUtleUJ1aWxkZXIoZVswXS5jb2x1bW5zLGVbMF0ubmFtZSk6bmV3IFByaW1hcnlLZXlCdWlsZGVyKGUpfWNsYXNzIFByaW1hcnlLZXlCdWlsZGVye3N0YXRpY1t1dV09IlNRTGl0ZVByaW1hcnlLZXlCdWlsZGVyIjtjb2x1bW5zO25hbWU7Y29uc3RydWN0b3IoZSxzKXt0aGlzLmNvbHVtbnM9ZSx0aGlzLm5hbWU9c31idWlsZChlKXtyZXR1cm4gbmV3IFByaW1hcnlLZXkoZSx0aGlzLmNvbHVtbnMsdGhpcy5uYW1lKX19Y2xhc3MgUHJpbWFyeUtleXtjb25zdHJ1Y3RvcihlLHMsZCl7dGhpcy50YWJsZT1lLHRoaXMuY29sdW1ucz1zLHRoaXMubmFtZT1kfXN0YXRpY1t1dV09IlNRTGl0ZVByaW1hcnlLZXkiO2NvbHVtbnM7bmFtZTtnZXROYW1lKCl7cmV0dXJuIHRoaXMubmFtZT8/YCR7dGhpcy50YWJsZVtTUUxpdGVUYWJsZS5TeW1ib2wuTmFtZV19XyR7dGhpcy5jb2x1bW5zLm1hcChlPT5lLm5hbWUpLmpvaW4oIl8iKX1fcGtgfX1mdW5jdGlvbiBleHRyYWN0VXNlZFRhYmxlKGUpe3JldHVybiBpcyhlLFNRTGl0ZVRhYmxlKT9bYCR7ZVtUYWJsZS5TeW1ib2wuQmFzZU5hbWVdfWBdOmlzKGUsU3VicXVlcnkpP2UuXy51c2VkVGFibGVzPz9bXTppcyhlLFNRTCk/ZS51c2VkVGFibGVzPz9bXTpbXX1jbGFzcyBTUUxpdGVEZWxldGVCYXNlIGV4dGVuZHMgUXVlcnlQcm9taXNle2NvbnN0cnVjdG9yKGUscyxkLG0pe3N1cGVyKCksdGhpcy50YWJsZT1lLHRoaXMuc2Vzc2lvbj1zLHRoaXMuZGlhbGVjdD1kLHRoaXMuY29uZmlnPXt0YWJsZTplLHdpdGhMaXN0Om19fXN0YXRpY1t1dV09IlNRTGl0ZURlbGV0ZSI7Y29uZmlnO3doZXJlKGUpe3JldHVybiB0aGlzLmNvbmZpZy53aGVyZT1lLHRoaXN9b3JkZXJCeSguLi5lKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZVswXSl7Y29uc3Qgcz1lWzBdKG5ldyBQcm94eSh0aGlzLmNvbmZpZy50YWJsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10sbmV3IFNlbGVjdGlvblByb3h5SGFuZGxlcih7c3FsQWxpYXNlZEJlaGF2aW9yOiJhbGlhcyIsc3FsQmVoYXZpb3I6InNxbCJ9KSkpLGQ9QXJyYXkuaXNBcnJheShzKT9zOltzXTt0aGlzLmNvbmZpZy5vcmRlckJ5PWR9ZWxzZXtjb25zdCBzPWU7dGhpcy5jb25maWcub3JkZXJCeT1zfXJldHVybiB0aGlzfWxpbWl0KGUpe3JldHVybiB0aGlzLmNvbmZpZy5saW1pdD1lLHRoaXN9cmV0dXJuaW5nKGU9dGhpcy50YWJsZVtTUUxpdGVUYWJsZS5TeW1ib2wuQ29sdW1uc10pe3JldHVybiB0aGlzLmNvbmZpZy5yZXR1cm5pbmc9b3JkZXJTZWxlY3RlZEZpZWxkcyhlKSx0aGlzfWdldFNRTCgpe3JldHVybiB0aGlzLmRpYWxlY3QuYnVpbGREZWxldGVRdWVyeSh0aGlzLmNvbmZpZyl9dG9TUUwoKXtjb25zdHt0eXBpbmdzOmUsLi4uc309dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSk7cmV0dXJuIHN9X3ByZXBhcmUoZT0hMCl7cmV0dXJuIHRoaXMuc2Vzc2lvbltlPyJwcmVwYXJlT25lVGltZVF1ZXJ5IjoicHJlcGFyZVF1ZXJ5Il0odGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSksdGhpcy5jb25maWcucmV0dXJuaW5nLHRoaXMuY29uZmlnLnJldHVybmluZz8iYWxsIjoicnVuIiwhMCx2b2lkIDAse3R5cGU6ImRlbGV0ZSIsdGFibGVzOmV4dHJhY3RVc2VkVGFibGUodGhpcy5jb25maWcudGFibGUpfSl9cHJlcGFyZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlKCExKX1ydW49ZT0+dGhpcy5fcHJlcGFyZSgpLnJ1bihlKTthbGw9ZT0+dGhpcy5fcHJlcGFyZSgpLmFsbChlKTtnZXQ9ZT0+dGhpcy5fcHJlcGFyZSgpLmdldChlKTt2YWx1ZXM9ZT0+dGhpcy5fcHJlcGFyZSgpLnZhbHVlcyhlKTthc3luYyBleGVjdXRlKGUpe3JldHVybiB0aGlzLl9wcmVwYXJlKCkuZXhlY3V0ZShlKX0kZHluYW1pYygpe3JldHVybiB0aGlzfX1mdW5jdGlvbiB0b1NuYWtlQ2FzZShlKXtyZXR1cm4oZS5yZXBsYWNlKC9bJ1x1MjAxOV0vZywiIikubWF0Y2goL1tcZGEtel0rfFtBLVpdKyg/IVthLXpdKXxbQS1aXVtcZGEtel0rL2cpPz9bXSkubWFwKGU9PmUudG9Mb3dlckNhc2UoKSkuam9pbigiXyIpfWZ1bmN0aW9uIHRvQ2FtZWxDYXNlKGUpe3JldHVybihlLnJlcGxhY2UoL1snXHUyMDE5XS9nLCIiKS5tYXRjaCgvW1xkYS16XSt8W0EtWl0rKD8hW2Etel0pfFtBLVpdW1xkYS16XSsvZyk/P1tdKS5yZWR1Y2UoKGUscyxkKT0+ZSsoMD09PWQ/cy50b0xvd2VyQ2FzZSgpOmAke3NbMF0udG9VcHBlckNhc2UoKX0ke3Muc2xpY2UoMSl9YCksIiIpfWZ1bmN0aW9uIG5vb3BDYXNlKGUpe3JldHVybiBlfWNsYXNzIENhc2luZ0NhY2hle3N0YXRpY1t1dV09IkNhc2luZ0NhY2hlIjtjYWNoZT17fTtjYWNoZWRUYWJsZXM9e307Y29udmVydDtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbnZlcnQ9InNuYWtlX2Nhc2UiPT09ZT90b1NuYWtlQ2FzZToiY2FtZWxDYXNlIj09PWU/dG9DYW1lbENhc2U6bm9vcENhc2V9Z2V0Q29sdW1uQ2FzaW5nKGUpe2lmKCFlLmtleUFzTmFtZSlyZXR1cm4gZS5uYW1lO2NvbnN0IHM9YCR7ZS50YWJsZVtUYWJsZS5TeW1ib2wuU2NoZW1hXT8/InB1YmxpYyJ9LiR7ZS50YWJsZVtUYWJsZS5TeW1ib2wuT3JpZ2luYWxOYW1lXX0uJHtlLm5hbWV9YDtyZXR1cm4gdGhpcy5jYWNoZVtzXXx8dGhpcy5jYWNoZVRhYmxlKGUudGFibGUpLHRoaXMuY2FjaGVbc119Y2FjaGVUYWJsZShlKXtjb25zdCBzPWAke2VbVGFibGUuU3ltYm9sLlNjaGVtYV0/PyJwdWJsaWMifS4ke2VbVGFibGUuU3ltYm9sLk9yaWdpbmFsTmFtZV19YDtpZighdGhpcy5jYWNoZWRUYWJsZXNbc10pe2Zvcihjb25zdCBkIG9mIE9iamVjdC52YWx1ZXMoZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10pKXtjb25zdCBlPWAke3N9LiR7ZC5uYW1lfWA7dGhpcy5jYWNoZVtlXT10aGlzLmNvbnZlcnQoZC5uYW1lKX10aGlzLmNhY2hlZFRhYmxlc1tzXT0hMH19Y2xlYXJDYWNoZSgpe3RoaXMuY2FjaGU9e30sdGhpcy5jYWNoZWRUYWJsZXM9e319fWNsYXNzIERyaXp6bGVFcnJvciBleHRlbmRzIEVycm9ye3N0YXRpY1t1dV09IkRyaXp6bGVFcnJvciI7Y29uc3RydWN0b3Ioe21lc3NhZ2U6ZSxjYXVzZTpzfSl7c3VwZXIoZSksdGhpcy5uYW1lPSJEcml6emxlRXJyb3IiLHRoaXMuY2F1c2U9c319Y2xhc3MgRHJpenpsZVF1ZXJ5RXJyb3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHMsZCl7c3VwZXIoYEZhaWxlZCBxdWVyeTogJHtlfVxucGFyYW1zOiAke3N9YCksdGhpcy5xdWVyeT1lLHRoaXMucGFyYW1zPXMsdGhpcy5jYXVzZT1kLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsRHJpenpsZVF1ZXJ5RXJyb3IpLGQmJih0aGlzLmNhdXNlPWQpfX1jbGFzcyBUcmFuc2FjdGlvblJvbGxiYWNrRXJyb3IgZXh0ZW5kcyBEcml6emxlRXJyb3J7c3RhdGljW3V1XT0iVHJhbnNhY3Rpb25Sb2xsYmFja0Vycm9yIjtjb25zdHJ1Y3Rvcigpe3N1cGVyKHttZXNzYWdlOiJSb2xsYmFjayJ9KX19ZnVuY3Rpb24gY291bnQoZSl7cmV0dXJuIHNxbGBjb3VudCgke3NxbC5yYXcoIioiKX0pYC5tYXBXaXRoKE51bWJlcil9Y2xhc3MgU1FMaXRlVmlld0Jhc2UgZXh0ZW5kcyBWaWV3e3N0YXRpY1t1dV09IlNRTGl0ZVZpZXdCYXNlIn1jbGFzcyBTUUxpdGVEaWFsZWN0e3N0YXRpY1t1dV09IlNRTGl0ZURpYWxlY3QiO2Nhc2luZztjb25zdHJ1Y3RvcihlKXt0aGlzLmNhc2luZz1uZXcgQ2FzaW5nQ2FjaGUoZT8uY2FzaW5nKX1lc2NhcGVOYW1lKGUpe3JldHVybmAiJHtlLnJlcGxhY2UoLyIvZywnIiInKX0iYH1lc2NhcGVQYXJhbShlKXtyZXR1cm4iPyJ9ZXNjYXBlU3RyaW5nKGUpe3JldHVybmAnJHtlLnJlcGxhY2UoLycvZywiJyciKX0nYH1idWlsZFdpdGhDVEUoZSl7aWYoIWU/Lmxlbmd0aClyZXR1cm47Y29uc3Qgcz1bc3FsYHdpdGggYF07Zm9yKGNvbnN0W2QsbV1vZiBlLmVudHJpZXMoKSlzLnB1c2goc3FsYCR7c3FsLmlkZW50aWZpZXIobS5fLmFsaWFzKX0gYXMgKCR7bS5fLnNxbH0pYCksZDxlLmxlbmd0aC0xJiZzLnB1c2goc3FsYCwgYCk7cmV0dXJuIHMucHVzaChzcWxgIGApLHNxbC5qb2luKHMpfWJ1aWxkRGVsZXRlUXVlcnkoe3RhYmxlOmUsd2hlcmU6cyxyZXR1cm5pbmc6ZCx3aXRoTGlzdDptLGxpbWl0Omgsb3JkZXJCeTpnfSl7cmV0dXJuIHNxbGAke3RoaXMuYnVpbGRXaXRoQ1RFKG0pfWRlbGV0ZSBmcm9tICR7ZX0ke3M/c3FsYCB3aGVyZSAke3N9YDp2b2lkIDB9JHtkP3NxbGAgcmV0dXJuaW5nICR7dGhpcy5idWlsZFNlbGVjdGlvbihkLHtpc1NpbmdsZVRhYmxlOiEwfSl9YDp2b2lkIDB9JHt0aGlzLmJ1aWxkT3JkZXJCeShnKX0ke3RoaXMuYnVpbGRMaW1pdChoKX1gfWJ1aWxkVXBkYXRlU2V0KGUscyl7Y29uc3QgZD1lW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxtPU9iamVjdC5rZXlzKGQpLmZpbHRlcihlPT52b2lkIDAhPT1zW2VdfHx2b2lkIDAhPT1kW2VdPy5vblVwZGF0ZUZuKSxoPW0ubGVuZ3RoO3JldHVybiBzcWwuam9pbihtLmZsYXRNYXAoKGUsbSk9Pntjb25zdCBnPWRbZV0seD1nLm9uVXBkYXRlRm4/LigpLCQ9c1tlXT8/KGlzKHgsU1FMKT94OnNxbC5wYXJhbSh4LGcpKSxTPXNxbGAke3NxbC5pZGVudGlmaWVyKHRoaXMuY2FzaW5nLmdldENvbHVtbkNhc2luZyhnKSl9ID0gJHskfWA7cmV0dXJuIG08aC0xP1tTLHNxbC5yYXcoIiwgIildOltTXX0pKX1idWlsZFVwZGF0ZVF1ZXJ5KHt0YWJsZTplLHNldDpzLHdoZXJlOmQscmV0dXJuaW5nOm0sd2l0aExpc3Q6aCxqb2luczpnLGZyb206eCxsaW1pdDokLG9yZGVyQnk6U30pe2NvbnN0IGo9dGhpcy5idWlsZFdpdGhDVEUoaCksej10aGlzLmJ1aWxkVXBkYXRlU2V0KGUscyksST14JiZzcWwuam9pbihbc3FsLnJhdygiIGZyb20gIiksdGhpcy5idWlsZEZyb21UYWJsZSh4KV0pO3JldHVybiBzcWxgJHtqfXVwZGF0ZSAke2V9IHNldCAke3p9JHtJfSR7dGhpcy5idWlsZEpvaW5zKGcpfSR7ZD9zcWxgIHdoZXJlICR7ZH1gOnZvaWQgMH0ke20/c3FsYCByZXR1cm5pbmcgJHt0aGlzLmJ1aWxkU2VsZWN0aW9uKG0se2lzU2luZ2xlVGFibGU6ITB9KX1gOnZvaWQgMH0ke3RoaXMuYnVpbGRPcmRlckJ5KFMpfSR7dGhpcy5idWlsZExpbWl0KCQpfWB9YnVpbGRTZWxlY3Rpb24oZSx7aXNTaW5nbGVUYWJsZTpzPSExfT17fSl7Y29uc3QgZD1lLmxlbmd0aCxtPWUuZmxhdE1hcCgoe2ZpZWxkOmV9LG0pPT57Y29uc3QgaD1bXTtpZihpcyhlLFNRTC5BbGlhc2VkKSYmZS5pc1NlbGVjdGlvbkZpZWxkKWgucHVzaChzcWwuaWRlbnRpZmllcihlLmZpZWxkQWxpYXMpKTtlbHNlIGlmKGlzKGUsU1FMLkFsaWFzZWQpfHxpcyhlLFNRTCkpe2NvbnN0IGQ9aXMoZSxTUUwuQWxpYXNlZCk/ZS5zcWw6ZTtzP2gucHVzaChuZXcgU1FMKGQucXVlcnlDaHVua3MubWFwKGU9PmlzKGUsQ29sdW1uKT9zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpOmUpKSk6aC5wdXNoKGQpLGlzKGUsU1FMLkFsaWFzZWQpJiZoLnB1c2goc3FsYCBhcyAke3NxbC5pZGVudGlmaWVyKGUuZmllbGRBbGlhcyl9YCl9ZWxzZSBpZihpcyhlLENvbHVtbikpe2NvbnN0IGQ9ZS50YWJsZVtUYWJsZS5TeW1ib2wuTmFtZV07IlNRTGl0ZU51bWVyaWNCaWdJbnQiPT09ZS5jb2x1bW5UeXBlP3M/aC5wdXNoKHNxbGBjYXN0KCR7c3FsLmlkZW50aWZpZXIodGhpcy5jYXNpbmcuZ2V0Q29sdW1uQ2FzaW5nKGUpKX0gYXMgdGV4dClgKTpoLnB1c2goc3FsYGNhc3QoJHtzcWwuaWRlbnRpZmllcihkKX0uJHtzcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpfSBhcyB0ZXh0KWApOnM/aC5wdXNoKHNxbC5pZGVudGlmaWVyKHRoaXMuY2FzaW5nLmdldENvbHVtbkNhc2luZyhlKSkpOmgucHVzaChzcWxgJHtzcWwuaWRlbnRpZmllcihkKX0uJHtzcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpfWApfWVsc2UgaWYoaXMoZSxTdWJxdWVyeSkpe2NvbnN0IHM9T2JqZWN0LmVudHJpZXMoZS5fLnNlbGVjdGVkRmllbGRzKTtpZigxPT09cy5sZW5ndGgpe2NvbnN0IGQ9c1swXVsxXSxtPWlzKGQsU1FMKT9kLmRlY29kZXI6aXMoZCxDb2x1bW4pP3ttYXBGcm9tRHJpdmVyVmFsdWU6ZT0+ZC5tYXBGcm9tRHJpdmVyVmFsdWUoZSl9OmQuc3FsLmRlY29kZXI7bSYmKGUuXy5zcWwuZGVjb2Rlcj1tKX1oLnB1c2goZSl9cmV0dXJuIG08ZC0xJiZoLnB1c2goc3FsYCwgYCksaH0pO3JldHVybiBzcWwuam9pbihtKX1idWlsZEpvaW5zKGUpe2lmKCFlfHwwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IHM9W107aWYoZSlmb3IoY29uc3RbZCxtXW9mIGUuZW50cmllcygpKXswPT09ZCYmcy5wdXNoKHNxbGAgYCk7Y29uc3QgaD1tLnRhYmxlLGc9bS5vbj9zcWxgIG9uICR7bS5vbn1gOnZvaWQgMDtpZihpcyhoLFNRTGl0ZVRhYmxlKSl7Y29uc3QgZT1oW1NRTGl0ZVRhYmxlLlN5bWJvbC5OYW1lXSxkPWhbU1FMaXRlVGFibGUuU3ltYm9sLlNjaGVtYV0seD1oW1NRTGl0ZVRhYmxlLlN5bWJvbC5PcmlnaW5hbE5hbWVdLCQ9ZT09PXg/dm9pZCAwOm0uYWxpYXM7cy5wdXNoKHNxbGAke3NxbC5yYXcobS5qb2luVHlwZSl9IGpvaW4gJHtkP3NxbGAke3NxbC5pZGVudGlmaWVyKGQpfS5gOnZvaWQgMH0ke3NxbC5pZGVudGlmaWVyKHgpfSR7JCYmc3FsYCAke3NxbC5pZGVudGlmaWVyKCQpfWB9JHtnfWApfWVsc2Ugcy5wdXNoKHNxbGAke3NxbC5yYXcobS5qb2luVHlwZSl9IGpvaW4gJHtofSR7Z31gKTtkPGUubGVuZ3RoLTEmJnMucHVzaChzcWxgIGApfXJldHVybiBzcWwuam9pbihzKX1idWlsZExpbWl0KGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlJiZlPj0wP3NxbGAgbGltaXQgJHtlfWA6dm9pZCAwfWJ1aWxkT3JkZXJCeShlKXtjb25zdCBzPVtdO2lmKGUpZm9yKGNvbnN0W2QsbV1vZiBlLmVudHJpZXMoKSlzLnB1c2gobSksZDxlLmxlbmd0aC0xJiZzLnB1c2goc3FsYCwgYCk7cmV0dXJuIHMubGVuZ3RoPjA/c3FsYCBvcmRlciBieSAke3NxbC5qb2luKHMpfWA6dm9pZCAwfWJ1aWxkRnJvbVRhYmxlKGUpe3JldHVybiBpcyhlLFRhYmxlKSYmZVtUYWJsZS5TeW1ib2wuSXNBbGlhc10/c3FsYCR7c3FsYCR7c3FsLmlkZW50aWZpZXIoZVtUYWJsZS5TeW1ib2wuU2NoZW1hXT8/IiIpfS5gLmlmKGVbVGFibGUuU3ltYm9sLlNjaGVtYV0pfSR7c3FsLmlkZW50aWZpZXIoZVtUYWJsZS5TeW1ib2wuT3JpZ2luYWxOYW1lXSl9ICR7c3FsLmlkZW50aWZpZXIoZVtUYWJsZS5TeW1ib2wuTmFtZV0pfWA6ZX1idWlsZFNlbGVjdFF1ZXJ5KHt3aXRoTGlzdDplLGZpZWxkczpzLGZpZWxkc0ZsYXQ6ZCx3aGVyZTptLGhhdmluZzpoLHRhYmxlOmcsam9pbnM6eCxvcmRlckJ5OiQsZ3JvdXBCeTpTLGxpbWl0Omosb2Zmc2V0OnosZGlzdGluY3Q6SSxzZXRPcGVyYXRvcnM6VH0pe2NvbnN0IFI9ZD8/b3JkZXJTZWxlY3RlZEZpZWxkcyhzKTtmb3IoY29uc3QgZSBvZiBSKWlmKGlzKGUuZmllbGQsQ29sdW1uKSYmZ2V0VGFibGVOYW1lKGUuZmllbGQudGFibGUpIT09KGlzKGcsU3VicXVlcnkpP2cuXy5hbGlhczppcyhnLFNRTGl0ZVZpZXdCYXNlKT9nW3d1XS5uYW1lOmlzKGcsU1FMKT92b2lkIDA6Z2V0VGFibGVOYW1lKGcpKSYmIShlPT54Py5zb21lKCh7YWxpYXM6c30pPT5zPT09KGVbVGFibGUuU3ltYm9sLklzQWxpYXNdP2dldFRhYmxlTmFtZShlKTplW1RhYmxlLlN5bWJvbC5CYXNlTmFtZV0pKSkoZS5maWVsZC50YWJsZSkpe2NvbnN0IHM9Z2V0VGFibGVOYW1lKGUuZmllbGQudGFibGUpO3Rocm93IG5ldyBFcnJvcihgWW91ciAiJHtlLnBhdGguam9pbigiLT4iKX0iIGZpZWxkIHJlZmVyZW5jZXMgYSBjb2x1bW4gIiR7c30iLiIke2UuZmllbGQubmFtZX0iLCBidXQgdGhlIHRhYmxlICIke3N9IiBpcyBub3QgcGFydCBvZiB0aGUgcXVlcnkhIERpZCB5b3UgZm9yZ2V0IHRvIGpvaW4gaXQ/YCl9Y29uc3QgRT0heHx8MD09PXgubGVuZ3RoLE89dGhpcy5idWlsZFdpdGhDVEUoZSksTj1JP3NxbGAgZGlzdGluY3RgOnZvaWQgMCxVPXRoaXMuYnVpbGRTZWxlY3Rpb24oUix7aXNTaW5nbGVUYWJsZTpFfSksQj10aGlzLmJ1aWxkRnJvbVRhYmxlKGcpLFY9dGhpcy5idWlsZEpvaW5zKHgpLEg9bT9zcWxgIHdoZXJlICR7bX1gOnZvaWQgMCxLPWg/c3FsYCBoYXZpbmcgJHtofWA6dm9pZCAwLGVlPVtdO2lmKFMpZm9yKGNvbnN0W2Usc11vZiBTLmVudHJpZXMoKSllZS5wdXNoKHMpLGU8Uy5sZW5ndGgtMSYmZWUucHVzaChzcWxgLCBgKTtjb25zdCB0ZT1lZS5sZW5ndGg+MD9zcWxgIGdyb3VwIGJ5ICR7c3FsLmpvaW4oZWUpfWA6dm9pZCAwLGllPXNxbGAke099c2VsZWN0JHtOfSAke1V9IGZyb20gJHtCfSR7Vn0ke0h9JHt0ZX0ke0t9JHt0aGlzLmJ1aWxkT3JkZXJCeSgkKX0ke3RoaXMuYnVpbGRMaW1pdChqKX0ke3o/c3FsYCBvZmZzZXQgJHt6fWA6dm9pZCAwfWA7cmV0dXJuIFQubGVuZ3RoPjA/dGhpcy5idWlsZFNldE9wZXJhdGlvbnMoaWUsVCk6aWV9YnVpbGRTZXRPcGVyYXRpb25zKGUscyl7Y29uc3RbZCwuLi5tXT1zO2lmKCFkKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBhc3MgdW5kZWZpbmVkIHZhbHVlcyB0byBhbnkgc2V0IG9wZXJhdG9yIik7cmV0dXJuIDA9PT1tLmxlbmd0aD90aGlzLmJ1aWxkU2V0T3BlcmF0aW9uUXVlcnkoe2xlZnRTZWxlY3Q6ZSxzZXRPcGVyYXRvcjpkfSk6dGhpcy5idWlsZFNldE9wZXJhdGlvbnModGhpcy5idWlsZFNldE9wZXJhdGlvblF1ZXJ5KHtsZWZ0U2VsZWN0OmUsc2V0T3BlcmF0b3I6ZH0pLG0pfWJ1aWxkU2V0T3BlcmF0aW9uUXVlcnkoe2xlZnRTZWxlY3Q6ZSxzZXRPcGVyYXRvcjp7dHlwZTpzLGlzQWxsOmQscmlnaHRTZWxlY3Q6bSxsaW1pdDpoLG9yZGVyQnk6ZyxvZmZzZXQ6eH19KXtjb25zdCAkPXNxbGAke2UuZ2V0U1FMKCl9IGAsUz1zcWxgJHttLmdldFNRTCgpfWA7bGV0IGo7aWYoZyYmZy5sZW5ndGg+MCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiBnKWlmKGlzKHMsU1FMaXRlQ29sdW1uKSllLnB1c2goc3FsLmlkZW50aWZpZXIocy5uYW1lKSk7ZWxzZSBpZihpcyhzLFNRTCkpe2ZvcihsZXQgZT0wO2U8cy5xdWVyeUNodW5rcy5sZW5ndGg7ZSsrKXtjb25zdCBkPXMucXVlcnlDaHVua3NbZV07aXMoZCxTUUxpdGVDb2x1bW4pJiYocy5xdWVyeUNodW5rc1tlXT1zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZCkpKX1lLnB1c2goc3FsYCR7c31gKX1lbHNlIGUucHVzaChzcWxgJHtzfWApO2o9c3FsYCBvcmRlciBieSAke3NxbC5qb2luKGUsc3FsYCwgYCl9YH1jb25zdCB6PSJvYmplY3QiPT10eXBlb2YgaHx8Im51bWJlciI9PXR5cGVvZiBoJiZoPj0wP3NxbGAgbGltaXQgJHtofWA6dm9pZCAwLEk9c3FsLnJhdyhgJHtzfSAke2Q/ImFsbCAiOiIifWApO3JldHVybiBzcWxgJHskfSR7SX0ke1N9JHtqfSR7en0ke3g/c3FsYCBvZmZzZXQgJHt4fWA6dm9pZCAwfWB9YnVpbGRJbnNlcnRRdWVyeSh7dGFibGU6ZSx2YWx1ZXM6cyxvbkNvbmZsaWN0OmQscmV0dXJuaW5nOm0sd2l0aExpc3Q6aCxzZWxlY3Q6Z30pe2NvbnN0IHg9W10sJD1lW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxTPU9iamVjdC5lbnRyaWVzKCQpLmZpbHRlcigoW2Usc10pPT4hcy5zaG91bGREaXNhYmxlSW5zZXJ0KCkpLGo9Uy5tYXAoKFssZV0pPT5zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpKTtpZihnKXtjb25zdCBlPXM7aXMoZSxTUUwpP3gucHVzaChlKTp4LnB1c2goZS5nZXRTUUwoKSl9ZWxzZXtjb25zdCBlPXM7eC5wdXNoKHNxbC5yYXcoInZhbHVlcyAiKSk7Zm9yKGNvbnN0W3MsZF1vZiBlLmVudHJpZXMoKSl7Y29uc3QgbT1bXTtmb3IoY29uc3RbZSxzXW9mIFMpe2NvbnN0IGg9ZFtlXTtpZih2b2lkIDA9PT1ofHxpcyhoLFBhcmFtKSYmdm9pZCAwPT09aC52YWx1ZSl7bGV0IGU7aWYobnVsbCE9PXMuZGVmYXVsdCYmdm9pZCAwIT09cy5kZWZhdWx0KWU9aXMocy5kZWZhdWx0LFNRTCk/cy5kZWZhdWx0OnNxbC5wYXJhbShzLmRlZmF1bHQscyk7ZWxzZSBpZih2b2lkIDAhPT1zLmRlZmF1bHRGbil7Y29uc3QgZD1zLmRlZmF1bHRGbigpO2U9aXMoZCxTUUwpP2Q6c3FsLnBhcmFtKGQscyl9ZWxzZSBpZihzLmRlZmF1bHR8fHZvaWQgMD09PXMub25VcGRhdGVGbillPXNxbGBudWxsYDtlbHNle2NvbnN0IGQ9cy5vblVwZGF0ZUZuKCk7ZT1pcyhkLFNRTCk/ZDpzcWwucGFyYW0oZCxzKX1tLnB1c2goZSl9ZWxzZSBtLnB1c2goaCl9eC5wdXNoKG0pLHM8ZS5sZW5ndGgtMSYmeC5wdXNoKHNxbGAsIGApfX1jb25zdCB6PXRoaXMuYnVpbGRXaXRoQ1RFKGgpLEk9c3FsLmpvaW4oeCksVD1tP3NxbGAgcmV0dXJuaW5nICR7dGhpcy5idWlsZFNlbGVjdGlvbihtLHtpc1NpbmdsZVRhYmxlOiEwfSl9YDp2b2lkIDAsUj1kPy5sZW5ndGg/c3FsLmpvaW4oZCk6dm9pZCAwO3JldHVybiBzcWxgJHt6fWluc2VydCBpbnRvICR7ZX0gJHtqfSAke0l9JHtSfSR7VH1gfXNxbFRvUXVlcnkoZSxzKXtyZXR1cm4gZS50b1F1ZXJ5KHtjYXNpbmc6dGhpcy5jYXNpbmcsZXNjYXBlTmFtZTp0aGlzLmVzY2FwZU5hbWUsZXNjYXBlUGFyYW06dGhpcy5lc2NhcGVQYXJhbSxlc2NhcGVTdHJpbmc6dGhpcy5lc2NhcGVTdHJpbmcsaW52b2tlU291cmNlOnN9KX1idWlsZFJlbGF0aW9uYWxRdWVyeSh7ZnVsbFNjaGVtYTplLHNjaGVtYTpzLHRhYmxlTmFtZXNNYXA6ZCx0YWJsZTptLHRhYmxlQ29uZmlnOmgscXVlcnlDb25maWc6Zyx0YWJsZUFsaWFzOngsbmVzdGVkUXVlcnlSZWxhdGlvbjokLGpvaW5PbjpTfSl7bGV0IGoseixJLFQ9W10sUj1bXTtjb25zdCBFPVtdO2lmKCEwPT09Zyl7VD1PYmplY3QuZW50cmllcyhoLmNvbHVtbnMpLm1hcCgoW2Usc10pPT4oe2RiS2V5OnMubmFtZSx0c0tleTplLGZpZWxkOmFsaWFzZWRUYWJsZUNvbHVtbihzLHgpLHJlbGF0aW9uVGFibGVUc0tleTp2b2lkIDAsaXNKc29uOiExLHNlbGVjdGlvbjpbXX0pKX1lbHNle2NvbnN0IG09T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGguY29sdW1ucykubWFwKChbZSxzXSk9PltlLGFsaWFzZWRUYWJsZUNvbHVtbihzLHgpXSkpO2lmKGcud2hlcmUpe2NvbnN0IGU9ImZ1bmN0aW9uIj09dHlwZW9mIGcud2hlcmU/Zy53aGVyZShtLHthbmQ6YW5kLGJldHdlZW46YmV0d2VlbixlcTplcSxleGlzdHM6ZXhpc3RzLGd0Omd0LGd0ZTpndGUsaWxpa2U6aWxpa2UsaW5BcnJheTppbkFycmF5LGlzTnVsbDppc051bGwkMixpc05vdE51bGw6aXNOb3ROdWxsLGxpa2U6bGlrZSxsdDpsdCxsdGU6bHRlLG5lOm5lLG5vdDpub3Qsbm90QmV0d2Vlbjpub3RCZXR3ZWVuLG5vdEV4aXN0czpub3RFeGlzdHMsbm90TGlrZTpub3RMaWtlLG5vdElsaWtlOm5vdElsaWtlLG5vdEluQXJyYXk6bm90SW5BcnJheSxvcjpvcixzcWw6c3FsfSk6Zy53aGVyZTtJPWUmJm1hcENvbHVtbnNJblNRTFRvQWxpYXMoZSx4KX1jb25zdCAkPVtdO2xldCBTPVtdO2lmKGcuY29sdW1ucyl7bGV0IGU9ITE7Zm9yKGNvbnN0W3MsZF1vZiBPYmplY3QuZW50cmllcyhnLmNvbHVtbnMpKXZvaWQgMCE9PWQmJnMgaW4gaC5jb2x1bW5zJiYoZXx8ITAhPT1kfHwoZT0hMCksUy5wdXNoKHMpKTtTLmxlbmd0aD4wJiYoUz1lP1MuZmlsdGVyKGU9PiEwPT09Zy5jb2x1bW5zPy5bZV0pOk9iamVjdC5rZXlzKGguY29sdW1ucykuZmlsdGVyKGU9PiFTLmluY2x1ZGVzKGUpKSl9ZWxzZSBTPU9iamVjdC5rZXlzKGguY29sdW1ucyk7Zm9yKGNvbnN0IGUgb2YgUyl7Y29uc3Qgcz1oLmNvbHVtbnNbZV07JC5wdXNoKHt0c0tleTplLHZhbHVlOnN9KX1sZXQgRSxPPVtdO2lmKGcud2l0aCYmKE89T2JqZWN0LmVudHJpZXMoZy53aXRoKS5maWx0ZXIoZT0+ISFlWzFdKS5tYXAoKFtlLHNdKT0+KHt0c0tleTplLHF1ZXJ5Q29uZmlnOnMscmVsYXRpb246aC5yZWxhdGlvbnNbZV19KSkpLGcuZXh0cmFzKXtFPSJmdW5jdGlvbiI9PXR5cGVvZiBnLmV4dHJhcz9nLmV4dHJhcyhtLHtzcWw6c3FsfSk6Zy5leHRyYXM7Zm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhFKSkkLnB1c2goe3RzS2V5OmUsdmFsdWU6bWFwQ29sdW1uc0luQWxpYXNlZFNRTFRvQWxpYXMocyx4KX0pfWZvcihjb25zdHt0c0tleTplLHZhbHVlOnN9b2YgJClULnB1c2goe2RiS2V5OmlzKHMsU1FMLkFsaWFzZWQpP3MuZmllbGRBbGlhczpoLmNvbHVtbnNbZV0ubmFtZSx0c0tleTplLGZpZWxkOmlzKHMsQ29sdW1uKT9hbGlhc2VkVGFibGVDb2x1bW4ocyx4KTpzLHJlbGF0aW9uVGFibGVUc0tleTp2b2lkIDAsaXNKc29uOiExLHNlbGVjdGlvbjpbXX0pO2xldCBOPSJmdW5jdGlvbiI9PXR5cGVvZiBnLm9yZGVyQnk/Zy5vcmRlckJ5KG0se3NxbDpzcWwsYXNjOmFzYyxkZXNjOmRlc2N9KTpnLm9yZGVyQnk/P1tdO0FycmF5LmlzQXJyYXkoTil8fChOPVtOXSksUj1OLm1hcChlPT5pcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUseCk6bWFwQ29sdW1uc0luU1FMVG9BbGlhcyhlLHgpKSxqPWcubGltaXQsej1nLm9mZnNldDtmb3IoY29uc3R7dHNLZXk6bSxxdWVyeUNvbmZpZzpoLHJlbGF0aW9uOmd9b2YgTyl7Y29uc3QgJD1ub3JtYWxpemVSZWxhdGlvbihzLGQsZyksUz1kW2dldFRhYmxlVW5pcXVlTmFtZShnLnJlZmVyZW5jZWRUYWJsZSldLGo9YCR7eH1fJHttfWAsej1hbmQoLi4uJC5maWVsZHMubWFwKChlLHMpPT5lcShhbGlhc2VkVGFibGVDb2x1bW4oJC5yZWZlcmVuY2VzW3NdLGopLGFsaWFzZWRUYWJsZUNvbHVtbihlLHgpKSkpLEk9dGhpcy5idWlsZFJlbGF0aW9uYWxRdWVyeSh7ZnVsbFNjaGVtYTplLHNjaGVtYTpzLHRhYmxlTmFtZXNNYXA6ZCx0YWJsZTplW1NdLHRhYmxlQ29uZmlnOnNbU10scXVlcnlDb25maWc6aXMoZyxPbmUpPyEwPT09aD97bGltaXQ6MX06ey4uLmgsbGltaXQ6MX06aCx0YWJsZUFsaWFzOmosam9pbk9uOnosbmVzdGVkUXVlcnlSZWxhdGlvbjpnfSksUj1zcWxgKCR7SS5zcWx9KWAuYXMobSk7VC5wdXNoKHtkYktleTptLHRzS2V5Om0sZmllbGQ6UixyZWxhdGlvblRhYmxlVHNLZXk6Uyxpc0pzb246ITAsc2VsZWN0aW9uOkkuc2VsZWN0aW9ufSl9fWlmKDA9PT1ULmxlbmd0aCl0aHJvdyBuZXcgRHJpenpsZUVycm9yKHttZXNzYWdlOmBObyBmaWVsZHMgc2VsZWN0ZWQgZm9yIHRhYmxlICIke2gudHNOYW1lfSIgKCIke3h9IikuIFlvdSBuZWVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gImNvbHVtbnMiLCAid2l0aCIgb3IgImV4dHJhcyIuIElmIHlvdSBuZWVkIHRvIHNlbGVjdCBhbGwgY29sdW1ucywgb21pdCB0aGUgImNvbHVtbnMiIGtleSBvciBzZXQgaXQgdG8gdW5kZWZpbmVkLmB9KTtsZXQgTztpZihJPWFuZChTLEkpLCQpe2xldCBlPXNxbGBqc29uX2FycmF5KCR7c3FsLmpvaW4oVC5tYXAoKHtmaWVsZDplfSk9PmlzKGUsU1FMaXRlQ29sdW1uKT9zcWwuaWRlbnRpZmllcih0aGlzLmNhc2luZy5nZXRDb2x1bW5DYXNpbmcoZSkpOmlzKGUsU1FMLkFsaWFzZWQpP2Uuc3FsOmUpLHNxbGAsIGApfSlgO2lzKCQsTWFueSkmJihlPXNxbGBjb2FsZXNjZShqc29uX2dyb3VwX2FycmF5KCR7ZX0pLCBqc29uX2FycmF5KCkpYCk7Y29uc3Qgcz1be2RiS2V5OiJkYXRhIix0c0tleToiZGF0YSIsZmllbGQ6ZS5hcygiZGF0YSIpLGlzSnNvbjohMCxyZWxhdGlvblRhYmxlVHNLZXk6aC50c05hbWUsc2VsZWN0aW9uOlR9XTt2b2lkIDAhPT1qfHx2b2lkIDAhPT16fHxSLmxlbmd0aD4wPyhPPXRoaXMuYnVpbGRTZWxlY3RRdWVyeSh7dGFibGU6YWxpYXNlZFRhYmxlKG0seCksZmllbGRzOnt9LGZpZWxkc0ZsYXQ6W3twYXRoOltdLGZpZWxkOnNxbC5yYXcoIioiKX1dLHdoZXJlOkksbGltaXQ6aixvZmZzZXQ6eixvcmRlckJ5OlIsc2V0T3BlcmF0b3JzOltdfSksST12b2lkIDAsaj12b2lkIDAsej12b2lkIDAsUj12b2lkIDApOk89YWxpYXNlZFRhYmxlKG0seCksTz10aGlzLmJ1aWxkU2VsZWN0UXVlcnkoe3RhYmxlOmlzKE8sU1FMaXRlVGFibGUpP086bmV3IFN1YnF1ZXJ5KE8se30seCksZmllbGRzOnt9LGZpZWxkc0ZsYXQ6cy5tYXAoKHtmaWVsZDplfSk9Pih7cGF0aDpbXSxmaWVsZDppcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUseCk6ZX0pKSxqb2luczpFLHdoZXJlOkksbGltaXQ6aixvZmZzZXQ6eixvcmRlckJ5OlIsc2V0T3BlcmF0b3JzOltdfSl9ZWxzZSBPPXRoaXMuYnVpbGRTZWxlY3RRdWVyeSh7dGFibGU6YWxpYXNlZFRhYmxlKG0seCksZmllbGRzOnt9LGZpZWxkc0ZsYXQ6VC5tYXAoKHtmaWVsZDplfSk9Pih7cGF0aDpbXSxmaWVsZDppcyhlLENvbHVtbik/YWxpYXNlZFRhYmxlQ29sdW1uKGUseCk6ZX0pKSxqb2luczpFLHdoZXJlOkksbGltaXQ6aixvZmZzZXQ6eixvcmRlckJ5OlIsc2V0T3BlcmF0b3JzOltdfSk7cmV0dXJue3RhYmxlVHNLZXk6aC50c05hbWUsc3FsOk8sc2VsZWN0aW9uOlR9fX1jbGFzcyBTUUxpdGVTeW5jRGlhbGVjdCBleHRlbmRzIFNRTGl0ZURpYWxlY3R7c3RhdGljW3V1XT0iU1FMaXRlU3luY0RpYWxlY3QiO21pZ3JhdGUoZSxzLGQpe2NvbnN0IG09dm9pZCAwPT09ZHx8InN0cmluZyI9PXR5cGVvZiBkPyJfX2RyaXp6bGVfbWlncmF0aW9ucyI6ZC5taWdyYXRpb25zVGFibGU/PyJfX2RyaXp6bGVfbWlncmF0aW9ucyIsaD1zcWxgCgkJCUNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICR7c3FsLmlkZW50aWZpZXIobSl9ICgKCQkJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwKCQkJCWhhc2ggdGV4dCBOT1QgTlVMTCwKCQkJCWNyZWF0ZWRfYXQgbnVtZXJpYwoJCQkpCgkJYDtzLnJ1bihoKTtjb25zdCBnPXMudmFsdWVzKHNxbGBTRUxFQ1QgaWQsIGhhc2gsIGNyZWF0ZWRfYXQgRlJPTSAke3NxbC5pZGVudGlmaWVyKG0pfSBPUkRFUiBCWSBjcmVhdGVkX2F0IERFU0MgTElNSVQgMWApWzBdPz92b2lkIDA7cy5ydW4oc3FsYEJFR0lOYCk7dHJ5e2Zvcihjb25zdCBkIG9mIGUpaWYoIWd8fE51bWJlcihnWzJdKTxkLmZvbGRlck1pbGxpcyl7Zm9yKGNvbnN0IGUgb2YgZC5zcWwpcy5ydW4oc3FsLnJhdyhlKSk7cy5ydW4oc3FsYElOU0VSVCBJTlRPICR7c3FsLmlkZW50aWZpZXIobSl9ICgiaGFzaCIsICJjcmVhdGVkX2F0IikgVkFMVUVTKCR7ZC5oYXNofSwgJHtkLmZvbGRlck1pbGxpc30pYCl9cy5ydW4oc3FsYENPTU1JVGApfWNhdGNoKGUpe3Rocm93IHMucnVuKHNxbGBST0xMQkFDS2ApLGV9fX1jbGFzcyBTUUxpdGVBc3luY0RpYWxlY3QgZXh0ZW5kcyBTUUxpdGVEaWFsZWN0e3N0YXRpY1t1dV09IlNRTGl0ZUFzeW5jRGlhbGVjdCI7YXN5bmMgbWlncmF0ZShlLHMsZCl7Y29uc3QgbT12b2lkIDA9PT1kfHwic3RyaW5nIj09dHlwZW9mIGQ/Il9fZHJpenpsZV9taWdyYXRpb25zIjpkLm1pZ3JhdGlvbnNUYWJsZT8/Il9fZHJpenpsZV9taWdyYXRpb25zIixoPXNxbGAKCQkJQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJHtzcWwuaWRlbnRpZmllcihtKX0gKAoJCQkJaWQgU0VSSUFMIFBSSU1BUlkgS0VZLAoJCQkJaGFzaCB0ZXh0IE5PVCBOVUxMLAoJCQkJY3JlYXRlZF9hdCBudW1lcmljCgkJCSkKCQlgO2F3YWl0IHMucnVuKGgpO2NvbnN0IGc9KGF3YWl0IHMudmFsdWVzKHNxbGBTRUxFQ1QgaWQsIGhhc2gsIGNyZWF0ZWRfYXQgRlJPTSAke3NxbC5pZGVudGlmaWVyKG0pfSBPUkRFUiBCWSBjcmVhdGVkX2F0IERFU0MgTElNSVQgMWApKVswXT8/dm9pZCAwO2F3YWl0IHMudHJhbnNhY3Rpb24oYXN5bmMgcz0+e2Zvcihjb25zdCBkIG9mIGUpaWYoIWd8fE51bWJlcihnWzJdKTxkLmZvbGRlck1pbGxpcyl7Zm9yKGNvbnN0IGUgb2YgZC5zcWwpYXdhaXQgcy5ydW4oc3FsLnJhdyhlKSk7YXdhaXQgcy5ydW4oc3FsYElOU0VSVCBJTlRPICR7c3FsLmlkZW50aWZpZXIobSl9ICgiaGFzaCIsICJjcmVhdGVkX2F0IikgVkFMVUVTKCR7ZC5oYXNofSwgJHtkLmZvbGRlck1pbGxpc30pYCl9fSl9fWNsYXNzIFR5cGVkUXVlcnlCdWlsZGVye3N0YXRpY1t1dV09IlR5cGVkUXVlcnlCdWlsZGVyIjtnZXRTZWxlY3RlZEZpZWxkcygpe3JldHVybiB0aGlzLl8uc2VsZWN0ZWRGaWVsZHN9fWNsYXNzIFNRTGl0ZVNlbGVjdEJ1aWxkZXJ7c3RhdGljW3V1XT0iU1FMaXRlU2VsZWN0QnVpbGRlciI7ZmllbGRzO3Nlc3Npb247ZGlhbGVjdDt3aXRoTGlzdDtkaXN0aW5jdDtjb25zdHJ1Y3RvcihlKXt0aGlzLmZpZWxkcz1lLmZpZWxkcyx0aGlzLnNlc3Npb249ZS5zZXNzaW9uLHRoaXMuZGlhbGVjdD1lLmRpYWxlY3QsdGhpcy53aXRoTGlzdD1lLndpdGhMaXN0LHRoaXMuZGlzdGluY3Q9ZS5kaXN0aW5jdH1mcm9tKGUpe2NvbnN0IHM9ISF0aGlzLmZpZWxkcztsZXQgZDtyZXR1cm4gZD10aGlzLmZpZWxkcz90aGlzLmZpZWxkczppcyhlLFN1YnF1ZXJ5KT9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoZS5fLnNlbGVjdGVkRmllbGRzKS5tYXAocz0+W3MsZVtzXV0pKTppcyhlLFNRTGl0ZVZpZXdCYXNlKT9lW3d1XS5zZWxlY3RlZEZpZWxkczppcyhlLFNRTCk/e306ZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10sbmV3IFNRTGl0ZVNlbGVjdEJhc2Uoe3RhYmxlOmUsZmllbGRzOmQsaXNQYXJ0aWFsU2VsZWN0OnMsc2Vzc2lvbjp0aGlzLnNlc3Npb24sZGlhbGVjdDp0aGlzLmRpYWxlY3Qsd2l0aExpc3Q6dGhpcy53aXRoTGlzdCxkaXN0aW5jdDp0aGlzLmRpc3RpbmN0fSl9fWNsYXNzIFNRTGl0ZVNlbGVjdFF1ZXJ5QnVpbGRlckJhc2UgZXh0ZW5kcyBUeXBlZFF1ZXJ5QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVTZWxlY3RRdWVyeUJ1aWxkZXIiO187Y29uZmlnO2pvaW5zTm90TnVsbGFibGVNYXA7dGFibGVOYW1lO2lzUGFydGlhbFNlbGVjdDtzZXNzaW9uO2RpYWxlY3Q7Y2FjaGVDb25maWc9dm9pZCAwO3VzZWRUYWJsZXM9bmV3IFNldDtjb25zdHJ1Y3Rvcih7dGFibGU6ZSxmaWVsZHM6cyxpc1BhcnRpYWxTZWxlY3Q6ZCxzZXNzaW9uOm0sZGlhbGVjdDpoLHdpdGhMaXN0OmcsZGlzdGluY3Q6eH0pe3N1cGVyKCksdGhpcy5jb25maWc9e3dpdGhMaXN0OmcsdGFibGU6ZSxmaWVsZHM6ey4uLnN9LGRpc3RpbmN0Ongsc2V0T3BlcmF0b3JzOltdfSx0aGlzLmlzUGFydGlhbFNlbGVjdD1kLHRoaXMuc2Vzc2lvbj1tLHRoaXMuZGlhbGVjdD1oLHRoaXMuXz17c2VsZWN0ZWRGaWVsZHM6cyxjb25maWc6dGhpcy5jb25maWd9LHRoaXMudGFibGVOYW1lPWdldFRhYmxlTGlrZU5hbWUoZSksdGhpcy5qb2luc05vdE51bGxhYmxlTWFwPSJzdHJpbmciPT10eXBlb2YgdGhpcy50YWJsZU5hbWU/e1t0aGlzLnRhYmxlTmFtZV06ITB9Ont9O2Zvcihjb25zdCBzIG9mIGV4dHJhY3RVc2VkVGFibGUoZSkpdGhpcy51c2VkVGFibGVzLmFkZChzKX1nZXRVc2VkVGFibGVzKCl7cmV0dXJuWy4uLnRoaXMudXNlZFRhYmxlc119Y3JlYXRlSm9pbihlKXtyZXR1cm4ocyxkKT0+e2NvbnN0IG09dGhpcy50YWJsZU5hbWUsaD1nZXRUYWJsZUxpa2VOYW1lKHMpO2Zvcihjb25zdCBlIG9mIGV4dHJhY3RVc2VkVGFibGUocykpdGhpcy51c2VkVGFibGVzLmFkZChlKTtpZigic3RyaW5nIj09dHlwZW9mIGgmJnRoaXMuY29uZmlnLmpvaW5zPy5zb21lKGU9PmUuYWxpYXM9PT1oKSl0aHJvdyBuZXcgRXJyb3IoYEFsaWFzICIke2h9IiBpcyBhbHJlYWR5IHVzZWQgaW4gdGhpcyBxdWVyeWApO2lmKCF0aGlzLmlzUGFydGlhbFNlbGVjdCYmKDE9PT1PYmplY3Qua2V5cyh0aGlzLmpvaW5zTm90TnVsbGFibGVNYXApLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBtJiYodGhpcy5jb25maWcuZmllbGRzPXtbbV06dGhpcy5jb25maWcuZmllbGRzfSksInN0cmluZyI9PXR5cGVvZiBoJiYhaXMocyxTUUwpKSl7Y29uc3QgZT1pcyhzLFN1YnF1ZXJ5KT9zLl8uc2VsZWN0ZWRGaWVsZHM6aXMocyxWaWV3KT9zW3d1XS5zZWxlY3RlZEZpZWxkczpzW1RhYmxlLlN5bWJvbC5Db2x1bW5zXTt0aGlzLmNvbmZpZy5maWVsZHNbaF09ZX1pZigiZnVuY3Rpb24iPT10eXBlb2YgZCYmKGQ9ZChuZXcgUHJveHkodGhpcy5jb25maWcuZmllbGRzLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe3NxbEFsaWFzZWRCZWhhdmlvcjoic3FsIixzcWxCZWhhdmlvcjoic3FsIn0pKSkpLHRoaXMuY29uZmlnLmpvaW5zfHwodGhpcy5jb25maWcuam9pbnM9W10pLHRoaXMuY29uZmlnLmpvaW5zLnB1c2goe29uOmQsdGFibGU6cyxqb2luVHlwZTplLGFsaWFzOmh9KSwic3RyaW5nIj09dHlwZW9mIGgpc3dpdGNoKGUpe2Nhc2UibGVmdCI6dGhpcy5qb2luc05vdE51bGxhYmxlTWFwW2hdPSExO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcD1PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModGhpcy5qb2luc05vdE51bGxhYmxlTWFwKS5tYXAoKFtlXSk9PltlLCExXSkpLHRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcFtoXT0hMDticmVhaztjYXNlImNyb3NzIjpjYXNlImlubmVyIjp0aGlzLmpvaW5zTm90TnVsbGFibGVNYXBbaF09ITA7YnJlYWs7Y2FzZSJmdWxsIjp0aGlzLmpvaW5zTm90TnVsbGFibGVNYXA9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcCkubWFwKChbZV0pPT5bZSwhMV0pKSx0aGlzLmpvaW5zTm90TnVsbGFibGVNYXBbaF09ITF9cmV0dXJuIHRoaXN9fWxlZnRKb2luPXRoaXMuY3JlYXRlSm9pbigibGVmdCIpO3JpZ2h0Sm9pbj10aGlzLmNyZWF0ZUpvaW4oInJpZ2h0Iik7aW5uZXJKb2luPXRoaXMuY3JlYXRlSm9pbigiaW5uZXIiKTtmdWxsSm9pbj10aGlzLmNyZWF0ZUpvaW4oImZ1bGwiKTtjcm9zc0pvaW49dGhpcy5jcmVhdGVKb2luKCJjcm9zcyIpO2NyZWF0ZVNldE9wZXJhdG9yKGUscyl7cmV0dXJuIGQ9Pntjb25zdCBtPSJmdW5jdGlvbiI9PXR5cGVvZiBkP2QoZ2V0U1FMaXRlU2V0T3BlcmF0b3JzKCkpOmQ7aWYoIWhhdmVTYW1lS2V5cyh0aGlzLmdldFNlbGVjdGVkRmllbGRzKCksbS5nZXRTZWxlY3RlZEZpZWxkcygpKSl0aHJvdyBuZXcgRXJyb3IoIlNldCBvcGVyYXRvciBlcnJvciAodW5pb24gLyBpbnRlcnNlY3QgLyBleGNlcHQpOiBzZWxlY3RlZCBmaWVsZHMgYXJlIG5vdCB0aGUgc2FtZSBvciBhcmUgaW4gYSBkaWZmZXJlbnQgb3JkZXIiKTtyZXR1cm4gdGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLnB1c2goe3R5cGU6ZSxpc0FsbDpzLHJpZ2h0U2VsZWN0Om19KSx0aGlzfX11bmlvbj10aGlzLmNyZWF0ZVNldE9wZXJhdG9yKCJ1bmlvbiIsITEpO3VuaW9uQWxsPXRoaXMuY3JlYXRlU2V0T3BlcmF0b3IoInVuaW9uIiwhMCk7aW50ZXJzZWN0PXRoaXMuY3JlYXRlU2V0T3BlcmF0b3IoImludGVyc2VjdCIsITEpO2V4Y2VwdD10aGlzLmNyZWF0ZVNldE9wZXJhdG9yKCJleGNlcHQiLCExKTthZGRTZXRPcGVyYXRvcnMoZSl7cmV0dXJuIHRoaXMuY29uZmlnLnNldE9wZXJhdG9ycy5wdXNoKC4uLmUpLHRoaXN9d2hlcmUoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUobmV3IFByb3h5KHRoaXMuY29uZmlnLmZpZWxkcyxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHtzcWxBbGlhc2VkQmVoYXZpb3I6InNxbCIsc3FsQmVoYXZpb3I6InNxbCJ9KSkpKSx0aGlzLmNvbmZpZy53aGVyZT1lLHRoaXN9aGF2aW5nKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKG5ldyBQcm94eSh0aGlzLmNvbmZpZy5maWVsZHMsbmV3IFNlbGVjdGlvblByb3h5SGFuZGxlcih7c3FsQWxpYXNlZEJlaGF2aW9yOiJzcWwiLHNxbEJlaGF2aW9yOiJzcWwifSkpKSksdGhpcy5jb25maWcuaGF2aW5nPWUsdGhpc31ncm91cEJ5KC4uLmUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlWzBdKXtjb25zdCBzPWVbMF0obmV3IFByb3h5KHRoaXMuY29uZmlnLmZpZWxkcyxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHtzcWxBbGlhc2VkQmVoYXZpb3I6ImFsaWFzIixzcWxCZWhhdmlvcjoic3FsIn0pKSk7dGhpcy5jb25maWcuZ3JvdXBCeT1BcnJheS5pc0FycmF5KHMpP3M6W3NdfWVsc2UgdGhpcy5jb25maWcuZ3JvdXBCeT1lO3JldHVybiB0aGlzfW9yZGVyQnkoLi4uZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGVbMF0pe2NvbnN0IHM9ZVswXShuZXcgUHJveHkodGhpcy5jb25maWcuZmllbGRzLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe3NxbEFsaWFzZWRCZWhhdmlvcjoiYWxpYXMiLHNxbEJlaGF2aW9yOiJzcWwifSkpKSxkPUFycmF5LmlzQXJyYXkocyk/czpbc107dGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLmxlbmd0aD4wP3RoaXMuY29uZmlnLnNldE9wZXJhdG9ycy5hdCgtMSkub3JkZXJCeT1kOnRoaXMuY29uZmlnLm9yZGVyQnk9ZH1lbHNle2NvbnN0IHM9ZTt0aGlzLmNvbmZpZy5zZXRPcGVyYXRvcnMubGVuZ3RoPjA/dGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLmF0KC0xKS5vcmRlckJ5PXM6dGhpcy5jb25maWcub3JkZXJCeT1zfXJldHVybiB0aGlzfWxpbWl0KGUpe3JldHVybiB0aGlzLmNvbmZpZy5zZXRPcGVyYXRvcnMubGVuZ3RoPjA/dGhpcy5jb25maWcuc2V0T3BlcmF0b3JzLmF0KC0xKS5saW1pdD1lOnRoaXMuY29uZmlnLmxpbWl0PWUsdGhpc31vZmZzZXQoZSl7cmV0dXJuIHRoaXMuY29uZmlnLnNldE9wZXJhdG9ycy5sZW5ndGg+MD90aGlzLmNvbmZpZy5zZXRPcGVyYXRvcnMuYXQoLTEpLm9mZnNldD1lOnRoaXMuY29uZmlnLm9mZnNldD1lLHRoaXN9Z2V0U1FMKCl7cmV0dXJuIHRoaXMuZGlhbGVjdC5idWlsZFNlbGVjdFF1ZXJ5KHRoaXMuY29uZmlnKX10b1NRTCgpe2NvbnN0e3R5cGluZ3M6ZSwuLi5zfT10aGlzLmRpYWxlY3Quc3FsVG9RdWVyeSh0aGlzLmdldFNRTCgpKTtyZXR1cm4gc31hcyhlKXtjb25zdCBzPVtdO2lmKHMucHVzaCguLi5leHRyYWN0VXNlZFRhYmxlKHRoaXMuY29uZmlnLnRhYmxlKSksdGhpcy5jb25maWcuam9pbnMpZm9yKGNvbnN0IGUgb2YgdGhpcy5jb25maWcuam9pbnMpcy5wdXNoKC4uLmV4dHJhY3RVc2VkVGFibGUoZS50YWJsZSkpO3JldHVybiBuZXcgUHJveHkobmV3IFN1YnF1ZXJ5KHRoaXMuZ2V0U1FMKCksdGhpcy5jb25maWcuZmllbGRzLGUsITEsWy4uLm5ldyBTZXQocyldKSxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHthbGlhczplLHNxbEFsaWFzZWRCZWhhdmlvcjoiYWxpYXMiLHNxbEJlaGF2aW9yOiJlcnJvciJ9KSl9Z2V0U2VsZWN0ZWRGaWVsZHMoKXtyZXR1cm4gbmV3IFByb3h5KHRoaXMuY29uZmlnLmZpZWxkcyxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHthbGlhczp0aGlzLnRhYmxlTmFtZSxzcWxBbGlhc2VkQmVoYXZpb3I6ImFsaWFzIixzcWxCZWhhdmlvcjoiZXJyb3IifSkpfSRkeW5hbWljKCl7cmV0dXJuIHRoaXN9fWNsYXNzIFNRTGl0ZVNlbGVjdEJhc2UgZXh0ZW5kcyBTUUxpdGVTZWxlY3RRdWVyeUJ1aWxkZXJCYXNle3N0YXRpY1t1dV09IlNRTGl0ZVNlbGVjdCI7X3ByZXBhcmUoZT0hMCl7aWYoIXRoaXMuc2Vzc2lvbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleGVjdXRlIGEgcXVlcnkgb24gYSBxdWVyeSBidWlsZGVyLiBQbGVhc2UgdXNlIGEgZGF0YWJhc2UgaW5zdGFuY2UgaW5zdGVhZC4iKTtjb25zdCBzPW9yZGVyU2VsZWN0ZWRGaWVsZHModGhpcy5jb25maWcuZmllbGRzKSxkPXRoaXMuc2Vzc2lvbltlPyJwcmVwYXJlT25lVGltZVF1ZXJ5IjoicHJlcGFyZVF1ZXJ5Il0odGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSkscywiYWxsIiwhMCx2b2lkIDAse3R5cGU6InNlbGVjdCIsdGFibGVzOlsuLi50aGlzLnVzZWRUYWJsZXNdfSx0aGlzLmNhY2hlQ29uZmlnKTtyZXR1cm4gZC5qb2luc05vdE51bGxhYmxlTWFwPXRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcCxkfSR3aXRoQ2FjaGUoZSl7cmV0dXJuIHRoaXMuY2FjaGVDb25maWc9dm9pZCAwPT09ZT97Y29uZmlnOnt9LGVuYWJsZTohMCxhdXRvSW52YWxpZGF0ZTohMH06ITE9PT1lP3tlbmFibGU6ITF9OntlbmFibGU6ITAsYXV0b0ludmFsaWRhdGU6ITAsLi4uZX0sdGhpc31wcmVwYXJlKCl7cmV0dXJuIHRoaXMuX3ByZXBhcmUoITEpfXJ1bj1lPT50aGlzLl9wcmVwYXJlKCkucnVuKGUpO2FsbD1lPT50aGlzLl9wcmVwYXJlKCkuYWxsKGUpO2dldD1lPT50aGlzLl9wcmVwYXJlKCkuZ2V0KGUpO3ZhbHVlcz1lPT50aGlzLl9wcmVwYXJlKCkudmFsdWVzKGUpO2FzeW5jIGV4ZWN1dGUoKXtyZXR1cm4gdGhpcy5hbGwoKX19ZnVuY3Rpb24gY3JlYXRlU2V0T3BlcmF0b3IoZSxzKXtyZXR1cm4oZCxtLC4uLmgpPT57Y29uc3QgZz1bbSwuLi5oXS5tYXAoZD0+KHt0eXBlOmUsaXNBbGw6cyxyaWdodFNlbGVjdDpkfSkpO2Zvcihjb25zdCBlIG9mIGcpaWYoIWhhdmVTYW1lS2V5cyhkLmdldFNlbGVjdGVkRmllbGRzKCksZS5yaWdodFNlbGVjdC5nZXRTZWxlY3RlZEZpZWxkcygpKSl0aHJvdyBuZXcgRXJyb3IoIlNldCBvcGVyYXRvciBlcnJvciAodW5pb24gLyBpbnRlcnNlY3QgLyBleGNlcHQpOiBzZWxlY3RlZCBmaWVsZHMgYXJlIG5vdCB0aGUgc2FtZSBvciBhcmUgaW4gYSBkaWZmZXJlbnQgb3JkZXIiKTtyZXR1cm4gZC5hZGRTZXRPcGVyYXRvcnMoZyl9fSFmdW5jdGlvbihlLHMpe2Zvcihjb25zdCBkIG9mIHMpZm9yKGNvbnN0IHMgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZC5wcm90b3R5cGUpKSJjb25zdHJ1Y3RvciIhPT1zJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUscyxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQucHJvdG90eXBlLHMpfHxPYmplY3QuY3JlYXRlKG51bGwpKX0oU1FMaXRlU2VsZWN0QmFzZSxbUXVlcnlQcm9taXNlXSk7Y29uc3QgZ2V0U1FMaXRlU2V0T3BlcmF0b3JzPSgpPT4oe3VuaW9uOk91LHVuaW9uQWxsOlB1LGludGVyc2VjdDpOdSxleGNlcHQ6RHV9KSxPdT1jcmVhdGVTZXRPcGVyYXRvcigidW5pb24iLCExKSxQdT1jcmVhdGVTZXRPcGVyYXRvcigidW5pb24iLCEwKSxOdT1jcmVhdGVTZXRPcGVyYXRvcigiaW50ZXJzZWN0IiwhMSksRHU9Y3JlYXRlU2V0T3BlcmF0b3IoImV4Y2VwdCIsITEpO2NsYXNzIFF1ZXJ5QnVpbGRlcntzdGF0aWNbdXVdPSJTUUxpdGVRdWVyeUJ1aWxkZXIiO2RpYWxlY3Q7ZGlhbGVjdENvbmZpZztjb25zdHJ1Y3RvcihlKXt0aGlzLmRpYWxlY3Q9aXMoZSxTUUxpdGVEaWFsZWN0KT9lOnZvaWQgMCx0aGlzLmRpYWxlY3RDb25maWc9aXMoZSxTUUxpdGVEaWFsZWN0KT92b2lkIDA6ZX0kd2l0aD0oZSxzKT0+e2NvbnN0IGQ9dGhpcztyZXR1cm57YXM6bT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBtJiYobT1tKGQpKSxuZXcgUHJveHkobmV3IFdpdGhTdWJxdWVyeShtLmdldFNRTCgpLHM/PygiZ2V0U2VsZWN0ZWRGaWVsZHMiaW4gbT9tLmdldFNlbGVjdGVkRmllbGRzKCk/P3t9Ont9KSxlLCEwKSxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHthbGlhczplLHNxbEFsaWFzZWRCZWhhdmlvcjoiYWxpYXMiLHNxbEJlaGF2aW9yOiJlcnJvciJ9KSkpfX07d2l0aCguLi5lKXtjb25zdCBzPXRoaXM7cmV0dXJue3NlbGVjdDpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczpkPz92b2lkIDAsc2Vzc2lvbjp2b2lkIDAsZGlhbGVjdDpzLmdldERpYWxlY3QoKSx3aXRoTGlzdDplfSl9LHNlbGVjdERpc3RpbmN0OmZ1bmN0aW9uKGQpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmQ/P3ZvaWQgMCxzZXNzaW9uOnZvaWQgMCxkaWFsZWN0OnMuZ2V0RGlhbGVjdCgpLHdpdGhMaXN0OmUsZGlzdGluY3Q6ITB9KX19fXNlbGVjdChlKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczplPz92b2lkIDAsc2Vzc2lvbjp2b2lkIDAsZGlhbGVjdDp0aGlzLmdldERpYWxlY3QoKX0pfXNlbGVjdERpc3RpbmN0KGUpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmU/P3ZvaWQgMCxzZXNzaW9uOnZvaWQgMCxkaWFsZWN0OnRoaXMuZ2V0RGlhbGVjdCgpLGRpc3RpbmN0OiEwfSl9Z2V0RGlhbGVjdCgpe3JldHVybiB0aGlzLmRpYWxlY3R8fCh0aGlzLmRpYWxlY3Q9bmV3IFNRTGl0ZVN5bmNEaWFsZWN0KHRoaXMuZGlhbGVjdENvbmZpZykpLHRoaXMuZGlhbGVjdH19Y2xhc3MgU1FMaXRlSW5zZXJ0QnVpbGRlcntjb25zdHJ1Y3RvcihlLHMsZCxtKXt0aGlzLnRhYmxlPWUsdGhpcy5zZXNzaW9uPXMsdGhpcy5kaWFsZWN0PWQsdGhpcy53aXRoTGlzdD1tfXN0YXRpY1t1dV09IlNRTGl0ZUluc2VydEJ1aWxkZXIiO3ZhbHVlcyhlKXtpZigwPT09KGU9QXJyYXkuaXNBcnJheShlKT9lOltlXSkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigidmFsdWVzKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhdCBsZWFzdCBvbmUgdmFsdWUiKTtjb25zdCBzPWUubWFwKGU9Pntjb25zdCBzPXt9LGQ9dGhpcy50YWJsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc107Zm9yKGNvbnN0IG0gb2YgT2JqZWN0LmtleXMoZSkpe2NvbnN0IGg9ZVttXTtzW21dPWlzKGgsU1FMKT9oOm5ldyBQYXJhbShoLGRbbV0pfXJldHVybiBzfSk7cmV0dXJuIG5ldyBTUUxpdGVJbnNlcnRCYXNlKHRoaXMudGFibGUscyx0aGlzLnNlc3Npb24sdGhpcy5kaWFsZWN0LHRoaXMud2l0aExpc3QpfXNlbGVjdChlKXtjb25zdCBzPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UobmV3IFF1ZXJ5QnVpbGRlcik6ZTtpZighaXMocyxTUUwpJiYhaGF2ZVNhbWVLZXlzKHRoaXMudGFibGVbbXVdLHMuXy5zZWxlY3RlZEZpZWxkcykpdGhyb3cgbmV3IEVycm9yKCJJbnNlcnQgc2VsZWN0IGVycm9yOiBzZWxlY3RlZCBmaWVsZHMgYXJlIG5vdCB0aGUgc2FtZSBvciBhcmUgaW4gYSBkaWZmZXJlbnQgb3JkZXIgY29tcGFyZWQgdG8gdGhlIHRhYmxlIGRlZmluaXRpb24iKTtyZXR1cm4gbmV3IFNRTGl0ZUluc2VydEJhc2UodGhpcy50YWJsZSxzLHRoaXMuc2Vzc2lvbix0aGlzLmRpYWxlY3QsdGhpcy53aXRoTGlzdCwhMCl9fWNsYXNzIFNRTGl0ZUluc2VydEJhc2UgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoLGcpe3N1cGVyKCksdGhpcy5zZXNzaW9uPWQsdGhpcy5kaWFsZWN0PW0sdGhpcy5jb25maWc9e3RhYmxlOmUsdmFsdWVzOnMsd2l0aExpc3Q6aCxzZWxlY3Q6Z319c3RhdGljW3V1XT0iU1FMaXRlSW5zZXJ0Ijtjb25maWc7cmV0dXJuaW5nKGU9dGhpcy5jb25maWcudGFibGVbU1FMaXRlVGFibGUuU3ltYm9sLkNvbHVtbnNdKXtyZXR1cm4gdGhpcy5jb25maWcucmV0dXJuaW5nPW9yZGVyU2VsZWN0ZWRGaWVsZHMoZSksdGhpc31vbkNvbmZsaWN0RG9Ob3RoaW5nKGU9e30pe2lmKHRoaXMuY29uZmlnLm9uQ29uZmxpY3R8fCh0aGlzLmNvbmZpZy5vbkNvbmZsaWN0PVtdKSx2b2lkIDA9PT1lLnRhcmdldCl0aGlzLmNvbmZpZy5vbkNvbmZsaWN0LnB1c2goc3FsYCBvbiBjb25mbGljdCBkbyBub3RoaW5nYCk7ZWxzZXtjb25zdCBzPUFycmF5LmlzQXJyYXkoZS50YXJnZXQpP3NxbGAke2UudGFyZ2V0fWA6c3FsYCR7W2UudGFyZ2V0XX1gLGQ9ZS53aGVyZT9zcWxgIHdoZXJlICR7ZS53aGVyZX1gOnNxbGBgO3RoaXMuY29uZmlnLm9uQ29uZmxpY3QucHVzaChzcWxgIG9uIGNvbmZsaWN0ICR7c30gZG8gbm90aGluZyR7ZH1gKX1yZXR1cm4gdGhpc31vbkNvbmZsaWN0RG9VcGRhdGUoZSl7aWYoZS53aGVyZSYmKGUudGFyZ2V0V2hlcmV8fGUuc2V0V2hlcmUpKXRocm93IG5ldyBFcnJvcignWW91IGNhbm5vdCB1c2UgYm90aCAid2hlcmUiIGFuZCAidGFyZ2V0V2hlcmUiLyJzZXRXaGVyZSIgYXQgdGhlIHNhbWUgdGltZSAtICJ3aGVyZSIgaXMgZGVwcmVjYXRlZCwgdXNlICJ0YXJnZXRXaGVyZSIgb3IgInNldFdoZXJlIiBpbnN0ZWFkLicpO3RoaXMuY29uZmlnLm9uQ29uZmxpY3R8fCh0aGlzLmNvbmZpZy5vbkNvbmZsaWN0PVtdKTtjb25zdCBzPWUud2hlcmU/c3FsYCB3aGVyZSAke2Uud2hlcmV9YDp2b2lkIDAsZD1lLnRhcmdldFdoZXJlP3NxbGAgd2hlcmUgJHtlLnRhcmdldFdoZXJlfWA6dm9pZCAwLG09ZS5zZXRXaGVyZT9zcWxgIHdoZXJlICR7ZS5zZXRXaGVyZX1gOnZvaWQgMCxoPUFycmF5LmlzQXJyYXkoZS50YXJnZXQpP3NxbGAke2UudGFyZ2V0fWA6c3FsYCR7W2UudGFyZ2V0XX1gLGc9dGhpcy5kaWFsZWN0LmJ1aWxkVXBkYXRlU2V0KHRoaXMuY29uZmlnLnRhYmxlLG1hcFVwZGF0ZVNldCh0aGlzLmNvbmZpZy50YWJsZSxlLnNldCkpO3JldHVybiB0aGlzLmNvbmZpZy5vbkNvbmZsaWN0LnB1c2goc3FsYCBvbiBjb25mbGljdCAke2h9JHtkfSBkbyB1cGRhdGUgc2V0ICR7Z30ke3N9JHttfWApLHRoaXN9Z2V0U1FMKCl7cmV0dXJuIHRoaXMuZGlhbGVjdC5idWlsZEluc2VydFF1ZXJ5KHRoaXMuY29uZmlnKX10b1NRTCgpe2NvbnN0e3R5cGluZ3M6ZSwuLi5zfT10aGlzLmRpYWxlY3Quc3FsVG9RdWVyeSh0aGlzLmdldFNRTCgpKTtyZXR1cm4gc31fcHJlcGFyZShlPSEwKXtyZXR1cm4gdGhpcy5zZXNzaW9uW2U/InByZXBhcmVPbmVUaW1lUXVlcnkiOiJwcmVwYXJlUXVlcnkiXSh0aGlzLmRpYWxlY3Quc3FsVG9RdWVyeSh0aGlzLmdldFNRTCgpKSx0aGlzLmNvbmZpZy5yZXR1cm5pbmcsdGhpcy5jb25maWcucmV0dXJuaW5nPyJhbGwiOiJydW4iLCEwLHZvaWQgMCx7dHlwZToiaW5zZXJ0Iix0YWJsZXM6ZXh0cmFjdFVzZWRUYWJsZSh0aGlzLmNvbmZpZy50YWJsZSl9KX1wcmVwYXJlKCl7cmV0dXJuIHRoaXMuX3ByZXBhcmUoITEpfXJ1bj1lPT50aGlzLl9wcmVwYXJlKCkucnVuKGUpO2FsbD1lPT50aGlzLl9wcmVwYXJlKCkuYWxsKGUpO2dldD1lPT50aGlzLl9wcmVwYXJlKCkuZ2V0KGUpO3ZhbHVlcz1lPT50aGlzLl9wcmVwYXJlKCkudmFsdWVzKGUpO2FzeW5jIGV4ZWN1dGUoKXtyZXR1cm4gdGhpcy5jb25maWcucmV0dXJuaW5nP3RoaXMuYWxsKCk6dGhpcy5ydW4oKX0kZHluYW1pYygpe3JldHVybiB0aGlzfX1jbGFzcyBTUUxpdGVVcGRhdGVCdWlsZGVye2NvbnN0cnVjdG9yKGUscyxkLG0pe3RoaXMudGFibGU9ZSx0aGlzLnNlc3Npb249cyx0aGlzLmRpYWxlY3Q9ZCx0aGlzLndpdGhMaXN0PW19c3RhdGljW3V1XT0iU1FMaXRlVXBkYXRlQnVpbGRlciI7c2V0KGUpe3JldHVybiBuZXcgU1FMaXRlVXBkYXRlQmFzZSh0aGlzLnRhYmxlLG1hcFVwZGF0ZVNldCh0aGlzLnRhYmxlLGUpLHRoaXMuc2Vzc2lvbix0aGlzLmRpYWxlY3QsdGhpcy53aXRoTGlzdCl9fWNsYXNzIFNRTGl0ZVVwZGF0ZUJhc2UgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoKXtzdXBlcigpLHRoaXMuc2Vzc2lvbj1kLHRoaXMuZGlhbGVjdD1tLHRoaXMuY29uZmlnPXtzZXQ6cyx0YWJsZTplLHdpdGhMaXN0Omgsam9pbnM6W119fXN0YXRpY1t1dV09IlNRTGl0ZVVwZGF0ZSI7Y29uZmlnO2Zyb20oZSl7cmV0dXJuIHRoaXMuY29uZmlnLmZyb209ZSx0aGlzfWNyZWF0ZUpvaW4oZSl7cmV0dXJuKHMsZCk9Pntjb25zdCBtPWdldFRhYmxlTGlrZU5hbWUocyk7aWYoInN0cmluZyI9PXR5cGVvZiBtJiZ0aGlzLmNvbmZpZy5qb2lucy5zb21lKGU9PmUuYWxpYXM9PT1tKSl0aHJvdyBuZXcgRXJyb3IoYEFsaWFzICIke219IiBpcyBhbHJlYWR5IHVzZWQgaW4gdGhpcyBxdWVyeWApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkKXtjb25zdCBlPXRoaXMuY29uZmlnLmZyb20/aXMocyxTUUxpdGVUYWJsZSk/c1tUYWJsZS5TeW1ib2wuQ29sdW1uc106aXMocyxTdWJxdWVyeSk/cy5fLnNlbGVjdGVkRmllbGRzOmlzKHMsU1FMaXRlVmlld0Jhc2UpP3Nbd3VdLnNlbGVjdGVkRmllbGRzOnZvaWQgMDp2b2lkIDA7ZD1kKG5ldyBQcm94eSh0aGlzLmNvbmZpZy50YWJsZVtUYWJsZS5TeW1ib2wuQ29sdW1uc10sbmV3IFNlbGVjdGlvblByb3h5SGFuZGxlcih7c3FsQWxpYXNlZEJlaGF2aW9yOiJzcWwiLHNxbEJlaGF2aW9yOiJzcWwifSkpLGUmJm5ldyBQcm94eShlLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe3NxbEFsaWFzZWRCZWhhdmlvcjoic3FsIixzcWxCZWhhdmlvcjoic3FsIn0pKSl9cmV0dXJuIHRoaXMuY29uZmlnLmpvaW5zLnB1c2goe29uOmQsdGFibGU6cyxqb2luVHlwZTplLGFsaWFzOm19KSx0aGlzfX1sZWZ0Sm9pbj10aGlzLmNyZWF0ZUpvaW4oImxlZnQiKTtyaWdodEpvaW49dGhpcy5jcmVhdGVKb2luKCJyaWdodCIpO2lubmVySm9pbj10aGlzLmNyZWF0ZUpvaW4oImlubmVyIik7ZnVsbEpvaW49dGhpcy5jcmVhdGVKb2luKCJmdWxsIik7d2hlcmUoZSl7cmV0dXJuIHRoaXMuY29uZmlnLndoZXJlPWUsdGhpc31vcmRlckJ5KC4uLmUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlWzBdKXtjb25zdCBzPWVbMF0obmV3IFByb3h5KHRoaXMuY29uZmlnLnRhYmxlW1RhYmxlLlN5bWJvbC5Db2x1bW5zXSxuZXcgU2VsZWN0aW9uUHJveHlIYW5kbGVyKHtzcWxBbGlhc2VkQmVoYXZpb3I6ImFsaWFzIixzcWxCZWhhdmlvcjoic3FsIn0pKSksZD1BcnJheS5pc0FycmF5KHMpP3M6W3NdO3RoaXMuY29uZmlnLm9yZGVyQnk9ZH1lbHNle2NvbnN0IHM9ZTt0aGlzLmNvbmZpZy5vcmRlckJ5PXN9cmV0dXJuIHRoaXN9bGltaXQoZSl7cmV0dXJuIHRoaXMuY29uZmlnLmxpbWl0PWUsdGhpc31yZXR1cm5pbmcoZT10aGlzLmNvbmZpZy50YWJsZVtTUUxpdGVUYWJsZS5TeW1ib2wuQ29sdW1uc10pe3JldHVybiB0aGlzLmNvbmZpZy5yZXR1cm5pbmc9b3JkZXJTZWxlY3RlZEZpZWxkcyhlKSx0aGlzfWdldFNRTCgpe3JldHVybiB0aGlzLmRpYWxlY3QuYnVpbGRVcGRhdGVRdWVyeSh0aGlzLmNvbmZpZyl9dG9TUUwoKXtjb25zdHt0eXBpbmdzOmUsLi4uc309dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSk7cmV0dXJuIHN9X3ByZXBhcmUoZT0hMCl7cmV0dXJuIHRoaXMuc2Vzc2lvbltlPyJwcmVwYXJlT25lVGltZVF1ZXJ5IjoicHJlcGFyZVF1ZXJ5Il0odGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSksdGhpcy5jb25maWcucmV0dXJuaW5nLHRoaXMuY29uZmlnLnJldHVybmluZz8iYWxsIjoicnVuIiwhMCx2b2lkIDAse3R5cGU6Imluc2VydCIsdGFibGVzOmV4dHJhY3RVc2VkVGFibGUodGhpcy5jb25maWcudGFibGUpfSl9cHJlcGFyZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlKCExKX1ydW49ZT0+dGhpcy5fcHJlcGFyZSgpLnJ1bihlKTthbGw9ZT0+dGhpcy5fcHJlcGFyZSgpLmFsbChlKTtnZXQ9ZT0+dGhpcy5fcHJlcGFyZSgpLmdldChlKTt2YWx1ZXM9ZT0+dGhpcy5fcHJlcGFyZSgpLnZhbHVlcyhlKTthc3luYyBleGVjdXRlKCl7cmV0dXJuIHRoaXMuY29uZmlnLnJldHVybmluZz90aGlzLmFsbCgpOnRoaXMucnVuKCl9JGR5bmFtaWMoKXtyZXR1cm4gdGhpc319Y2xhc3MgU1FMaXRlQ291bnRCdWlsZGVyIGV4dGVuZHMgU1FMe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFNRTGl0ZUNvdW50QnVpbGRlci5idWlsZEVtYmVkZGVkQ291bnQoZS5zb3VyY2UsZS5maWx0ZXJzKS5xdWVyeUNodW5rcyksdGhpcy5wYXJhbXM9ZSx0aGlzLnNlc3Npb249ZS5zZXNzaW9uLHRoaXMuc3FsPVNRTGl0ZUNvdW50QnVpbGRlci5idWlsZENvdW50KGUuc291cmNlLGUuZmlsdGVycyl9c3FsO3N0YXRpY1t1dV09IlNRTGl0ZUNvdW50QnVpbGRlckFzeW5jIjtbU3ltYm9sLnRvU3RyaW5nVGFnXT0iU1FMaXRlQ291bnRCdWlsZGVyQXN5bmMiO3Nlc3Npb247c3RhdGljIGJ1aWxkRW1iZWRkZWRDb3VudChlLHMpe3JldHVybiBzcWxgKHNlbGVjdCBjb3VudCgqKSBmcm9tICR7ZX0ke3NxbC5yYXcoIiB3aGVyZSAiKS5pZihzKX0ke3N9KWB9c3RhdGljIGJ1aWxkQ291bnQoZSxzKXtyZXR1cm4gc3FsYHNlbGVjdCBjb3VudCgqKSBmcm9tICR7ZX0ke3NxbC5yYXcoIiB3aGVyZSAiKS5pZihzKX0ke3N9YH10aGVuKGUscyl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnNlc3Npb24uY291bnQodGhpcy5zcWwpKS50aGVuKGUscyl9Y2F0Y2goZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZSl9ZmluYWxseShlKXtyZXR1cm4gdGhpcy50aGVuKHM9PihlPy4oKSxzKSxzPT57dGhyb3cgZT8uKCksc30pfX1jbGFzcyBSZWxhdGlvbmFsUXVlcnlCdWlsZGVye2NvbnN0cnVjdG9yKGUscyxkLG0saCxnLHgsJCl7dGhpcy5tb2RlPWUsdGhpcy5mdWxsU2NoZW1hPXMsdGhpcy5zY2hlbWE9ZCx0aGlzLnRhYmxlTmFtZXNNYXA9bSx0aGlzLnRhYmxlPWgsdGhpcy50YWJsZUNvbmZpZz1nLHRoaXMuZGlhbGVjdD14LHRoaXMuc2Vzc2lvbj0kfXN0YXRpY1t1dV09IlNRTGl0ZUFzeW5jUmVsYXRpb25hbFF1ZXJ5QnVpbGRlciI7ZmluZE1hbnkoZSl7cmV0dXJuInN5bmMiPT09dGhpcy5tb2RlP25ldyBTUUxpdGVTeW5jUmVsYXRpb25hbFF1ZXJ5KHRoaXMuZnVsbFNjaGVtYSx0aGlzLnNjaGVtYSx0aGlzLnRhYmxlTmFtZXNNYXAsdGhpcy50YWJsZSx0aGlzLnRhYmxlQ29uZmlnLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24sZXx8e30sIm1hbnkiKTpuZXcgU1FMaXRlUmVsYXRpb25hbFF1ZXJ5KHRoaXMuZnVsbFNjaGVtYSx0aGlzLnNjaGVtYSx0aGlzLnRhYmxlTmFtZXNNYXAsdGhpcy50YWJsZSx0aGlzLnRhYmxlQ29uZmlnLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24sZXx8e30sIm1hbnkiKX1maW5kRmlyc3QoZSl7cmV0dXJuInN5bmMiPT09dGhpcy5tb2RlP25ldyBTUUxpdGVTeW5jUmVsYXRpb25hbFF1ZXJ5KHRoaXMuZnVsbFNjaGVtYSx0aGlzLnNjaGVtYSx0aGlzLnRhYmxlTmFtZXNNYXAsdGhpcy50YWJsZSx0aGlzLnRhYmxlQ29uZmlnLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24sZT97Li4uZSxsaW1pdDoxfTp7bGltaXQ6MX0sImZpcnN0Iik6bmV3IFNRTGl0ZVJlbGF0aW9uYWxRdWVyeSh0aGlzLmZ1bGxTY2hlbWEsdGhpcy5zY2hlbWEsdGhpcy50YWJsZU5hbWVzTWFwLHRoaXMudGFibGUsdGhpcy50YWJsZUNvbmZpZyx0aGlzLmRpYWxlY3QsdGhpcy5zZXNzaW9uLGU/ey4uLmUsbGltaXQ6MX06e2xpbWl0OjF9LCJmaXJzdCIpfX1jbGFzcyBTUUxpdGVSZWxhdGlvbmFsUXVlcnkgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoLGcseCwkLFMpe3N1cGVyKCksdGhpcy5mdWxsU2NoZW1hPWUsdGhpcy5zY2hlbWE9cyx0aGlzLnRhYmxlTmFtZXNNYXA9ZCx0aGlzLnRhYmxlPW0sdGhpcy50YWJsZUNvbmZpZz1oLHRoaXMuZGlhbGVjdD1nLHRoaXMuc2Vzc2lvbj14LHRoaXMuY29uZmlnPSQsdGhpcy5tb2RlPVN9c3RhdGljW3V1XT0iU1FMaXRlQXN5bmNSZWxhdGlvbmFsUXVlcnkiO21vZGU7Z2V0U1FMKCl7cmV0dXJuIHRoaXMuZGlhbGVjdC5idWlsZFJlbGF0aW9uYWxRdWVyeSh7ZnVsbFNjaGVtYTp0aGlzLmZ1bGxTY2hlbWEsc2NoZW1hOnRoaXMuc2NoZW1hLHRhYmxlTmFtZXNNYXA6dGhpcy50YWJsZU5hbWVzTWFwLHRhYmxlOnRoaXMudGFibGUsdGFibGVDb25maWc6dGhpcy50YWJsZUNvbmZpZyxxdWVyeUNvbmZpZzp0aGlzLmNvbmZpZyx0YWJsZUFsaWFzOnRoaXMudGFibGVDb25maWcudHNOYW1lfSkuc3FsfV9wcmVwYXJlKGU9ITEpe2NvbnN0e3F1ZXJ5OnMsYnVpbHRRdWVyeTpkfT10aGlzLl90b1NRTCgpO3JldHVybiB0aGlzLnNlc3Npb25bZT8icHJlcGFyZU9uZVRpbWVRdWVyeSI6InByZXBhcmVRdWVyeSJdKGQsdm9pZCAwLCJmaXJzdCI9PT10aGlzLm1vZGU/ImdldCI6ImFsbCIsITAsKGUsZCk9Pntjb25zdCBtPWUubWFwKGU9Pm1hcFJlbGF0aW9uYWxSb3codGhpcy5zY2hlbWEsdGhpcy50YWJsZUNvbmZpZyxlLHMuc2VsZWN0aW9uLGQpKTtyZXR1cm4iZmlyc3QiPT09dGhpcy5tb2RlP21bMF06bX0pfXByZXBhcmUoKXtyZXR1cm4gdGhpcy5fcHJlcGFyZSghMSl9X3RvU1FMKCl7Y29uc3QgZT10aGlzLmRpYWxlY3QuYnVpbGRSZWxhdGlvbmFsUXVlcnkoe2Z1bGxTY2hlbWE6dGhpcy5mdWxsU2NoZW1hLHNjaGVtYTp0aGlzLnNjaGVtYSx0YWJsZU5hbWVzTWFwOnRoaXMudGFibGVOYW1lc01hcCx0YWJsZTp0aGlzLnRhYmxlLHRhYmxlQ29uZmlnOnRoaXMudGFibGVDb25maWcscXVlcnlDb25maWc6dGhpcy5jb25maWcsdGFibGVBbGlhczp0aGlzLnRhYmxlQ29uZmlnLnRzTmFtZX0pO3JldHVybntxdWVyeTplLGJ1aWx0UXVlcnk6dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkoZS5zcWwpfX10b1NRTCgpe3JldHVybiB0aGlzLl90b1NRTCgpLmJ1aWx0UXVlcnl9ZXhlY3V0ZVJhdygpe3JldHVybiJmaXJzdCI9PT10aGlzLm1vZGU/dGhpcy5fcHJlcGFyZSghMSkuZ2V0KCk6dGhpcy5fcHJlcGFyZSghMSkuYWxsKCl9YXN5bmMgZXhlY3V0ZSgpe3JldHVybiB0aGlzLmV4ZWN1dGVSYXcoKX19Y2xhc3MgU1FMaXRlU3luY1JlbGF0aW9uYWxRdWVyeSBleHRlbmRzIFNRTGl0ZVJlbGF0aW9uYWxRdWVyeXtzdGF0aWNbdXVdPSJTUUxpdGVTeW5jUmVsYXRpb25hbFF1ZXJ5IjtzeW5jKCl7cmV0dXJuIHRoaXMuZXhlY3V0ZVJhdygpfX1jbGFzcyBTUUxpdGVSYXcgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSxzLGQsbSxoKXtzdXBlcigpLHRoaXMuZXhlY3V0ZT1lLHRoaXMuZ2V0U1FMPXMsdGhpcy5kaWFsZWN0PW0sdGhpcy5tYXBCYXRjaFJlc3VsdD1oLHRoaXMuY29uZmlnPXthY3Rpb246ZH19c3RhdGljW3V1XT0iU1FMaXRlUmF3Ijtjb25maWc7Z2V0UXVlcnkoKXtyZXR1cm57Li4udGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkodGhpcy5nZXRTUUwoKSksbWV0aG9kOnRoaXMuY29uZmlnLmFjdGlvbn19bWFwUmVzdWx0KGUscyl7cmV0dXJuIHM/dGhpcy5tYXBCYXRjaFJlc3VsdChlKTplfV9wcmVwYXJlKCl7cmV0dXJuIHRoaXN9aXNSZXNwb25zZUluQXJyYXlNb2RlKCl7cmV0dXJuITF9fWNsYXNzIEJhc2VTUUxpdGVEYXRhYmFzZXtjb25zdHJ1Y3RvcihlLHMsZCxtKXt0aGlzLnJlc3VsdEtpbmQ9ZSx0aGlzLmRpYWxlY3Q9cyx0aGlzLnNlc3Npb249ZCx0aGlzLl89bT97c2NoZW1hOm0uc2NoZW1hLGZ1bGxTY2hlbWE6bS5mdWxsU2NoZW1hLHRhYmxlTmFtZXNNYXA6bS50YWJsZU5hbWVzTWFwfTp7c2NoZW1hOnZvaWQgMCxmdWxsU2NoZW1hOnt9LHRhYmxlTmFtZXNNYXA6e319LHRoaXMucXVlcnk9e307Y29uc3QgaD10aGlzLnF1ZXJ5O2lmKHRoaXMuXy5zY2hlbWEpZm9yKGNvbnN0W2cseF1vZiBPYmplY3QuZW50cmllcyh0aGlzLl8uc2NoZW1hKSloW2ddPW5ldyBSZWxhdGlvbmFsUXVlcnlCdWlsZGVyKGUsbS5mdWxsU2NoZW1hLHRoaXMuXy5zY2hlbWEsdGhpcy5fLnRhYmxlTmFtZXNNYXAsbS5mdWxsU2NoZW1hW2ddLHgscyxkKTt0aGlzLiRjYWNoZT17aW52YWxpZGF0ZTphc3luYyBlPT57fX19c3RhdGljW3V1XT0iQmFzZVNRTGl0ZURhdGFiYXNlIjtxdWVyeTskd2l0aD0oZSxzKT0+e2NvbnN0IGQ9dGhpcztyZXR1cm57YXM6bT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBtJiYobT1tKG5ldyBRdWVyeUJ1aWxkZXIoZC5kaWFsZWN0KSkpLG5ldyBQcm94eShuZXcgV2l0aFN1YnF1ZXJ5KG0uZ2V0U1FMKCkscz8/KCJnZXRTZWxlY3RlZEZpZWxkcyJpbiBtP20uZ2V0U2VsZWN0ZWRGaWVsZHMoKT8/e306e30pLGUsITApLG5ldyBTZWxlY3Rpb25Qcm94eUhhbmRsZXIoe2FsaWFzOmUsc3FsQWxpYXNlZEJlaGF2aW9yOiJhbGlhcyIsc3FsQmVoYXZpb3I6ImVycm9yIn0pKSl9fTskY291bnQoZSxzKXtyZXR1cm4gbmV3IFNRTGl0ZUNvdW50QnVpbGRlcih7c291cmNlOmUsZmlsdGVyczpzLHNlc3Npb246dGhpcy5zZXNzaW9ufSl9d2l0aCguLi5lKXtjb25zdCBzPXRoaXM7cmV0dXJue3NlbGVjdDpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczpkPz92b2lkIDAsc2Vzc2lvbjpzLnNlc3Npb24sZGlhbGVjdDpzLmRpYWxlY3Qsd2l0aExpc3Q6ZX0pfSxzZWxlY3REaXN0aW5jdDpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZVNlbGVjdEJ1aWxkZXIoe2ZpZWxkczpkPz92b2lkIDAsc2Vzc2lvbjpzLnNlc3Npb24sZGlhbGVjdDpzLmRpYWxlY3Qsd2l0aExpc3Q6ZSxkaXN0aW5jdDohMH0pfSx1cGRhdGU6ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyBTUUxpdGVVcGRhdGVCdWlsZGVyKGQscy5zZXNzaW9uLHMuZGlhbGVjdCxlKX0saW5zZXJ0OmZ1bmN0aW9uKGQpe3JldHVybiBuZXcgU1FMaXRlSW5zZXJ0QnVpbGRlcihkLHMuc2Vzc2lvbixzLmRpYWxlY3QsZSl9LGRlbGV0ZTpmdW5jdGlvbihkKXtyZXR1cm4gbmV3IFNRTGl0ZURlbGV0ZUJhc2UoZCxzLnNlc3Npb24scy5kaWFsZWN0LGUpfX19c2VsZWN0KGUpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmU/P3ZvaWQgMCxzZXNzaW9uOnRoaXMuc2Vzc2lvbixkaWFsZWN0OnRoaXMuZGlhbGVjdH0pfXNlbGVjdERpc3RpbmN0KGUpe3JldHVybiBuZXcgU1FMaXRlU2VsZWN0QnVpbGRlcih7ZmllbGRzOmU/P3ZvaWQgMCxzZXNzaW9uOnRoaXMuc2Vzc2lvbixkaWFsZWN0OnRoaXMuZGlhbGVjdCxkaXN0aW5jdDohMH0pfXVwZGF0ZShlKXtyZXR1cm4gbmV3IFNRTGl0ZVVwZGF0ZUJ1aWxkZXIoZSx0aGlzLnNlc3Npb24sdGhpcy5kaWFsZWN0KX0kY2FjaGU7aW5zZXJ0KGUpe3JldHVybiBuZXcgU1FMaXRlSW5zZXJ0QnVpbGRlcihlLHRoaXMuc2Vzc2lvbix0aGlzLmRpYWxlY3QpfWRlbGV0ZShlKXtyZXR1cm4gbmV3IFNRTGl0ZURlbGV0ZUJhc2UoZSx0aGlzLnNlc3Npb24sdGhpcy5kaWFsZWN0KX1ydW4oZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24ucnVuKHMpLCgpPT5zLCJydW4iLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd1J1blZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLnJ1bihzKX1hbGwoZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24uYWxsKHMpLCgpPT5zLCJhbGwiLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd0FsbFZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLmFsbChzKX1nZXQoZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24uZ2V0KHMpLCgpPT5zLCJnZXQiLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd0dldFZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLmdldChzKX12YWx1ZXMoZSl7Y29uc3Qgcz0ic3RyaW5nIj09dHlwZW9mIGU/c3FsLnJhdyhlKTplLmdldFNRTCgpO3JldHVybiJhc3luYyI9PT10aGlzLnJlc3VsdEtpbmQ/bmV3IFNRTGl0ZVJhdyhhc3luYygpPT50aGlzLnNlc3Npb24udmFsdWVzKHMpLCgpPT5zLCJ2YWx1ZXMiLHRoaXMuZGlhbGVjdCx0aGlzLnNlc3Npb24uZXh0cmFjdFJhd1ZhbHVlc1ZhbHVlRnJvbUJhdGNoUmVzdWx0LmJpbmQodGhpcy5zZXNzaW9uKSk6dGhpcy5zZXNzaW9uLnZhbHVlcyhzKX10cmFuc2FjdGlvbihlLHMpe3JldHVybiB0aGlzLnNlc3Npb24udHJhbnNhY3Rpb24oZSxzKX19Y2xhc3MgQ2FjaGV7c3RhdGljW3V1XT0iQ2FjaGUifWNsYXNzIE5vb3BDYWNoZSBleHRlbmRzIENhY2hle3N0cmF0ZWd5KCl7cmV0dXJuImFsbCJ9c3RhdGljW3V1XT0iTm9vcENhY2hlIjthc3luYyBnZXQoZSl7fWFzeW5jIHB1dChlLHMsZCxtKXt9YXN5bmMgb25NdXRhdGUoZSl7fX1hc3luYyBmdW5jdGlvbiBoYXNoUXVlcnkoZSxzKXtjb25zdCBkPWAke2V9LSR7SlNPTi5zdHJpbmdpZnkocyl9YCxtPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShkKSxoPWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixtKSxnPVsuLi5uZXcgVWludDhBcnJheShoKV0ubWFwKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIik7cmV0dXJuIGd9Y2xhc3MgRXhlY3V0ZVJlc3VsdFN5bmMgZXh0ZW5kcyBRdWVyeVByb21pc2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLnJlc3VsdENiPWV9c3RhdGljW3V1XT0iRXhlY3V0ZVJlc3VsdFN5bmMiO2FzeW5jIGV4ZWN1dGUoKXtyZXR1cm4gdGhpcy5yZXN1bHRDYigpfXN5bmMoKXtyZXR1cm4gdGhpcy5yZXN1bHRDYigpfX1jbGFzcyBTUUxpdGVQcmVwYXJlZFF1ZXJ5e2NvbnN0cnVjdG9yKGUscyxkLG0saCxnKXt0aGlzLm1vZGU9ZSx0aGlzLmV4ZWN1dGVNZXRob2Q9cyx0aGlzLnF1ZXJ5PWQsdGhpcy5jYWNoZT1tLHRoaXMucXVlcnlNZXRhZGF0YT1oLHRoaXMuY2FjaGVDb25maWc9ZyxtJiYiYWxsIj09PW0uc3RyYXRlZ3koKSYmdm9pZCAwPT09ZyYmKHRoaXMuY2FjaGVDb25maWc9e2VuYWJsZTohMCxhdXRvSW52YWxpZGF0ZTohMH0pLHRoaXMuY2FjaGVDb25maWc/LmVuYWJsZXx8KHRoaXMuY2FjaGVDb25maWc9dm9pZCAwKX1zdGF0aWNbdXVdPSJQcmVwYXJlZFF1ZXJ5Ijtqb2luc05vdE51bGxhYmxlTWFwO2FzeW5jIHF1ZXJ5V2l0aENhY2hlKGUscyxkKXtpZih2b2lkIDA9PT10aGlzLmNhY2hlfHxpcyh0aGlzLmNhY2hlLE5vb3BDYWNoZSl8fHZvaWQgMD09PXRoaXMucXVlcnlNZXRhZGF0YSl0cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfWlmKHRoaXMuY2FjaGVDb25maWcmJiF0aGlzLmNhY2hlQ29uZmlnLmVuYWJsZSl0cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfWlmKCgiaW5zZXJ0Ij09PXRoaXMucXVlcnlNZXRhZGF0YS50eXBlfHwidXBkYXRlIj09PXRoaXMucXVlcnlNZXRhZGF0YS50eXBlfHwiZGVsZXRlIj09PXRoaXMucXVlcnlNZXRhZGF0YS50eXBlKSYmdGhpcy5xdWVyeU1ldGFkYXRhLnRhYmxlcy5sZW5ndGg+MCl0cnl7Y29uc3RbZV09YXdhaXQgUHJvbWlzZS5hbGwoW2QoKSx0aGlzLmNhY2hlLm9uTXV0YXRlKHt0YWJsZXM6dGhpcy5xdWVyeU1ldGFkYXRhLnRhYmxlc30pXSk7cmV0dXJuIGV9Y2F0Y2goZCl7dGhyb3cgbmV3IERyaXp6bGVRdWVyeUVycm9yKGUscyxkKX1pZighdGhpcy5jYWNoZUNvbmZpZyl0cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfWlmKCJzZWxlY3QiPT09dGhpcy5xdWVyeU1ldGFkYXRhLnR5cGUpe2NvbnN0IG09YXdhaXQgdGhpcy5jYWNoZS5nZXQodGhpcy5jYWNoZUNvbmZpZy50YWc/P2F3YWl0IGhhc2hRdWVyeShlLHMpLHRoaXMucXVlcnlNZXRhZGF0YS50YWJsZXMsdm9pZCAwIT09dGhpcy5jYWNoZUNvbmZpZy50YWcsdGhpcy5jYWNoZUNvbmZpZy5hdXRvSW52YWxpZGF0ZSk7aWYodm9pZCAwPT09bSl7bGV0IG07dHJ5e209YXdhaXQgZCgpfWNhdGNoKGQpe3Rocm93IG5ldyBEcml6emxlUXVlcnlFcnJvcihlLHMsZCl9cmV0dXJuIGF3YWl0IHRoaXMuY2FjaGUucHV0KHRoaXMuY2FjaGVDb25maWcudGFnPz9hd2FpdCBoYXNoUXVlcnkoZSxzKSxtLHRoaXMuY2FjaGVDb25maWcuYXV0b0ludmFsaWRhdGU/dGhpcy5xdWVyeU1ldGFkYXRhLnRhYmxlczpbXSx2b2lkIDAhPT10aGlzLmNhY2hlQ29uZmlnLnRhZyx0aGlzLmNhY2hlQ29uZmlnLmNvbmZpZyksbX1yZXR1cm4gbX10cnl7cmV0dXJuIGF3YWl0IGQoKX1jYXRjaChkKXt0aHJvdyBuZXcgRHJpenpsZVF1ZXJ5RXJyb3IoZSxzLGQpfX1nZXRRdWVyeSgpe3JldHVybiB0aGlzLnF1ZXJ5fW1hcFJ1blJlc3VsdChlLHMpe3JldHVybiBlfW1hcEFsbFJlc3VsdChlLHMpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9bWFwR2V0UmVzdWx0KGUscyl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX1leGVjdXRlKGUpe3JldHVybiJhc3luYyI9PT10aGlzLm1vZGU/dGhpc1t0aGlzLmV4ZWN1dGVNZXRob2RdKGUpOm5ldyBFeGVjdXRlUmVzdWx0U3luYygoKT0+dGhpc1t0aGlzLmV4ZWN1dGVNZXRob2RdKGUpKX1tYXBSZXN1bHQoZSxzKXtzd2l0Y2godGhpcy5leGVjdXRlTWV0aG9kKXtjYXNlInJ1biI6cmV0dXJuIHRoaXMubWFwUnVuUmVzdWx0KGUscyk7Y2FzZSJhbGwiOnJldHVybiB0aGlzLm1hcEFsbFJlc3VsdChlLHMpO2Nhc2UiZ2V0IjpyZXR1cm4gdGhpcy5tYXBHZXRSZXN1bHQoZSxzKX19fWNsYXNzIFNRTGl0ZVNlc3Npb257Y29uc3RydWN0b3IoZSl7dGhpcy5kaWFsZWN0PWV9c3RhdGljW3V1XT0iU1FMaXRlU2Vzc2lvbiI7cHJlcGFyZU9uZVRpbWVRdWVyeShlLHMsZCxtLGgsZyx4KXtyZXR1cm4gdGhpcy5wcmVwYXJlUXVlcnkoZSxzLGQsbSxoLGcseCl9cnVuKGUpe2NvbnN0IHM9dGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkoZSk7dHJ5e3JldHVybiB0aGlzLnByZXBhcmVPbmVUaW1lUXVlcnkocyx2b2lkIDAsInJ1biIsITEpLnJ1bigpfWNhdGNoKGUpe3Rocm93IG5ldyBEcml6emxlRXJyb3Ioe2NhdXNlOmUsbWVzc2FnZTpgRmFpbGVkIHRvIHJ1biB0aGUgcXVlcnkgJyR7cy5zcWx9J2B9KX19ZXh0cmFjdFJhd1J1blZhbHVlRnJvbUJhdGNoUmVzdWx0KGUpe3JldHVybiBlfWFsbChlKXtyZXR1cm4gdGhpcy5wcmVwYXJlT25lVGltZVF1ZXJ5KHRoaXMuZGlhbGVjdC5zcWxUb1F1ZXJ5KGUpLHZvaWQgMCwicnVuIiwhMSkuYWxsKCl9ZXh0cmFjdFJhd0FsbFZhbHVlRnJvbUJhdGNoUmVzdWx0KGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9Z2V0KGUpe3JldHVybiB0aGlzLnByZXBhcmVPbmVUaW1lUXVlcnkodGhpcy5kaWFsZWN0LnNxbFRvUXVlcnkoZSksdm9pZCAwLCJydW4iLCExKS5nZXQoKX1leHRyYWN0UmF3R2V0VmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX12YWx1ZXMoZSl7cmV0dXJuIHRoaXMucHJlcGFyZU9uZVRpbWVRdWVyeSh0aGlzLmRpYWxlY3Quc3FsVG9RdWVyeShlKSx2b2lkIDAsInJ1biIsITEpLnZhbHVlcygpfWFzeW5jIGNvdW50KGUpe3JldHVybihhd2FpdCB0aGlzLnZhbHVlcyhlKSlbMF1bMF19ZXh0cmFjdFJhd1ZhbHVlc1ZhbHVlRnJvbUJhdGNoUmVzdWx0KGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9fWNsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVNRTGl0ZURhdGFiYXNle2NvbnN0cnVjdG9yKGUscyxkLG0saD0wKXtzdXBlcihlLHMsZCxtKSx0aGlzLnNjaGVtYT1tLHRoaXMubmVzdGVkSW5kZXg9aH1zdGF0aWNbdXVdPSJTUUxpdGVUcmFuc2FjdGlvbiI7cm9sbGJhY2soKXt0aHJvdyBuZXcgVHJhbnNhY3Rpb25Sb2xsYmFja0Vycm9yfX1jbGFzcyBTUUxpdGVEMVNlc3Npb24gZXh0ZW5kcyBTUUxpdGVTZXNzaW9ue2NvbnN0cnVjdG9yKGUscyxkLG09e30pe3N1cGVyKHMpLHRoaXMuY2xpZW50PWUsdGhpcy5zY2hlbWE9ZCx0aGlzLm9wdGlvbnM9bSx0aGlzLmxvZ2dlcj1tLmxvZ2dlcj8/bmV3IE5vb3BMb2dnZXIsdGhpcy5jYWNoZT1tLmNhY2hlPz9uZXcgTm9vcENhY2hlfXN0YXRpY1t1dV09IlNRTGl0ZUQxU2Vzc2lvbiI7bG9nZ2VyO2NhY2hlO3ByZXBhcmVRdWVyeShlLHMsZCxtLGgsZyx4KXtjb25zdCAkPXRoaXMuY2xpZW50LnByZXBhcmUoZS5zcWwpO3JldHVybiBuZXcgRDFQcmVwYXJlZFF1ZXJ5KCQsZSx0aGlzLmxvZ2dlcix0aGlzLmNhY2hlLGcseCxzLGQsbSxoKX1hc3luYyBiYXRjaChlKXtjb25zdCBzPVtdLGQ9W107Zm9yKGNvbnN0IG0gb2YgZSl7Y29uc3QgZT1tLl9wcmVwYXJlKCksaD1lLmdldFF1ZXJ5KCk7aWYocy5wdXNoKGUpLGgucGFyYW1zLmxlbmd0aD4wKWQucHVzaChlLnN0bXQuYmluZCguLi5oLnBhcmFtcykpO2Vsc2V7Y29uc3Qgcz1lLmdldFF1ZXJ5KCk7ZC5wdXNoKHRoaXMuY2xpZW50LnByZXBhcmUocy5zcWwpLmJpbmQoLi4ucy5wYXJhbXMpKX19cmV0dXJuKGF3YWl0IHRoaXMuY2xpZW50LmJhdGNoKGQpKS5tYXAoKGUsZCk9PnNbZF0ubWFwUmVzdWx0KGUsITApKX1leHRyYWN0UmF3QWxsVmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7cmV0dXJuIGUucmVzdWx0c31leHRyYWN0UmF3R2V0VmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7cmV0dXJuIGUucmVzdWx0c1swXX1leHRyYWN0UmF3VmFsdWVzVmFsdWVGcm9tQmF0Y2hSZXN1bHQoZSl7cmV0dXJuIGQxVG9SYXdNYXBwaW5nKGUucmVzdWx0cyl9YXN5bmMgdHJhbnNhY3Rpb24oZSxzKXtjb25zdCBkPW5ldyBEMVRyYW5zYWN0aW9uKCJhc3luYyIsdGhpcy5kaWFsZWN0LHRoaXMsdGhpcy5zY2hlbWEpO2F3YWl0IHRoaXMucnVuKHNxbC5yYXcoImJlZ2luIisocz8uYmVoYXZpb3I/IiAiK3MuYmVoYXZpb3I6IiIpKSk7dHJ5e2NvbnN0IHM9YXdhaXQgZShkKTtyZXR1cm4gYXdhaXQgdGhpcy5ydW4oc3FsYGNvbW1pdGApLHN9Y2F0Y2goZSl7dGhyb3cgYXdhaXQgdGhpcy5ydW4oc3FsYHJvbGxiYWNrYCksZX19fWNsYXNzIEQxVHJhbnNhY3Rpb24gZXh0ZW5kcyBTUUxpdGVUcmFuc2FjdGlvbntzdGF0aWNbdXVdPSJEMVRyYW5zYWN0aW9uIjthc3luYyB0cmFuc2FjdGlvbihlKXtjb25zdCBzPWBzcCR7dGhpcy5uZXN0ZWRJbmRleH1gLGQ9bmV3IEQxVHJhbnNhY3Rpb24oImFzeW5jIix0aGlzLmRpYWxlY3QsdGhpcy5zZXNzaW9uLHRoaXMuc2NoZW1hLHRoaXMubmVzdGVkSW5kZXgrMSk7YXdhaXQgdGhpcy5zZXNzaW9uLnJ1bihzcWwucmF3KGBzYXZlcG9pbnQgJHtzfWApKTt0cnl7Y29uc3QgbT1hd2FpdCBlKGQpO3JldHVybiBhd2FpdCB0aGlzLnNlc3Npb24ucnVuKHNxbC5yYXcoYHJlbGVhc2Ugc2F2ZXBvaW50ICR7c31gKSksbX1jYXRjaChlKXt0aHJvdyBhd2FpdCB0aGlzLnNlc3Npb24ucnVuKHNxbC5yYXcoYHJvbGxiYWNrIHRvIHNhdmVwb2ludCAke3N9YCkpLGV9fX1mdW5jdGlvbiBkMVRvUmF3TWFwcGluZyhlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBkIG9mIGUpe2NvbnN0IGU9T2JqZWN0LmtleXMoZCkubWFwKGU9PmRbZV0pO3MucHVzaChlKX1yZXR1cm4gc31jbGFzcyBEMVByZXBhcmVkUXVlcnkgZXh0ZW5kcyBTUUxpdGVQcmVwYXJlZFF1ZXJ5e2NvbnN0cnVjdG9yKGUscyxkLG0saCxnLHgsJCxTLGope3N1cGVyKCJhc3luYyIsJCxzLG0saCxnKSx0aGlzLmxvZ2dlcj1kLHRoaXMuX2lzUmVzcG9uc2VJbkFycmF5TW9kZT1TLHRoaXMuY3VzdG9tUmVzdWx0TWFwcGVyPWosdGhpcy5maWVsZHM9eCx0aGlzLnN0bXQ9ZX1zdGF0aWNbdXVdPSJEMVByZXBhcmVkUXVlcnkiO2N1c3RvbVJlc3VsdE1hcHBlcjtmaWVsZHM7c3RtdDthc3luYyBydW4oZSl7Y29uc3Qgcz1maWxsUGxhY2Vob2xkZXJzKHRoaXMucXVlcnkucGFyYW1zLGU/P3t9KTtyZXR1cm4gdGhpcy5sb2dnZXIubG9nUXVlcnkodGhpcy5xdWVyeS5zcWwscyksYXdhaXQgdGhpcy5xdWVyeVdpdGhDYWNoZSh0aGlzLnF1ZXJ5LnNxbCxzLGFzeW5jKCk9PnRoaXMuc3RtdC5iaW5kKC4uLnMpLnJ1bigpKX1hc3luYyBhbGwoZSl7Y29uc3R7ZmllbGRzOnMscXVlcnk6ZCxsb2dnZXI6bSxzdG10OmgsY3VzdG9tUmVzdWx0TWFwcGVyOmd9PXRoaXM7aWYoIXMmJiFnKXtjb25zdCBzPWZpbGxQbGFjZWhvbGRlcnMoZC5wYXJhbXMsZT8/e30pO3JldHVybiBtLmxvZ1F1ZXJ5KGQuc3FsLHMpLGF3YWl0IHRoaXMucXVlcnlXaXRoQ2FjaGUoZC5zcWwscyxhc3luYygpPT5oLmJpbmQoLi4ucykuYWxsKCkudGhlbigoe3Jlc3VsdHM6ZX0pPT50aGlzLm1hcEFsbFJlc3VsdChlKSkpfWNvbnN0IHg9YXdhaXQgdGhpcy52YWx1ZXMoZSk7cmV0dXJuIHRoaXMubWFwQWxsUmVzdWx0KHgpfW1hcEFsbFJlc3VsdChlLHMpe3JldHVybiBzJiYoZT1kMVRvUmF3TWFwcGluZyhlLnJlc3VsdHMpKSx0aGlzLmZpZWxkc3x8dGhpcy5jdXN0b21SZXN1bHRNYXBwZXI/dGhpcy5jdXN0b21SZXN1bHRNYXBwZXI/dGhpcy5jdXN0b21SZXN1bHRNYXBwZXIoZSk6ZS5tYXAoZT0+bWFwUmVzdWx0Um93KHRoaXMuZmllbGRzLGUsdGhpcy5qb2luc05vdE51bGxhYmxlTWFwKSk6ZX1hc3luYyBnZXQoZSl7Y29uc3R7ZmllbGRzOnMsam9pbnNOb3ROdWxsYWJsZU1hcDpkLHF1ZXJ5Om0sbG9nZ2VyOmgsc3RtdDpnLGN1c3RvbVJlc3VsdE1hcHBlcjp4fT10aGlzO2lmKCFzJiYheCl7Y29uc3Qgcz1maWxsUGxhY2Vob2xkZXJzKG0ucGFyYW1zLGU/P3t9KTtyZXR1cm4gaC5sb2dRdWVyeShtLnNxbCxzKSxhd2FpdCB0aGlzLnF1ZXJ5V2l0aENhY2hlKG0uc3FsLHMsYXN5bmMoKT0+Zy5iaW5kKC4uLnMpLmFsbCgpLnRoZW4oKHtyZXN1bHRzOmV9KT0+ZVswXSkpfWNvbnN0ICQ9YXdhaXQgdGhpcy52YWx1ZXMoZSk7aWYoJFswXSlyZXR1cm4geD94KCQpOm1hcFJlc3VsdFJvdyhzLCRbMF0sZCl9bWFwR2V0UmVzdWx0KGUscyl7cmV0dXJuIHMmJihlPWQxVG9SYXdNYXBwaW5nKGUucmVzdWx0cylbMF0pLHRoaXMuZmllbGRzfHx0aGlzLmN1c3RvbVJlc3VsdE1hcHBlcj90aGlzLmN1c3RvbVJlc3VsdE1hcHBlcj90aGlzLmN1c3RvbVJlc3VsdE1hcHBlcihbZV0pOm1hcFJlc3VsdFJvdyh0aGlzLmZpZWxkcyxlLHRoaXMuam9pbnNOb3ROdWxsYWJsZU1hcCk6ZX1hc3luYyB2YWx1ZXMoZSl7Y29uc3Qgcz1maWxsUGxhY2Vob2xkZXJzKHRoaXMucXVlcnkucGFyYW1zLGU/P3t9KTtyZXR1cm4gdGhpcy5sb2dnZXIubG9nUXVlcnkodGhpcy5xdWVyeS5zcWwscyksYXdhaXQgdGhpcy5xdWVyeVdpdGhDYWNoZSh0aGlzLnF1ZXJ5LnNxbCxzLGFzeW5jKCk9PnRoaXMuc3RtdC5iaW5kKC4uLnMpLnJhdygpKX1pc1Jlc3BvbnNlSW5BcnJheU1vZGUoKXtyZXR1cm4gdGhpcy5faXNSZXNwb25zZUluQXJyYXlNb2RlfX1jbGFzcyBEcml6emxlRDFEYXRhYmFzZSBleHRlbmRzIEJhc2VTUUxpdGVEYXRhYmFzZXtzdGF0aWNbdXVdPSJEMURhdGFiYXNlIjthc3luYyBiYXRjaChlKXtyZXR1cm4gdGhpcy5zZXNzaW9uLmJhdGNoKGUpfX1mdW5jdGlvbiBkcml6emxlKGUscz17fSl7Y29uc3QgZD1uZXcgU1FMaXRlQXN5bmNEaWFsZWN0KHtjYXNpbmc6cy5jYXNpbmd9KTtsZXQgbSxoO2lmKCEwPT09cy5sb2dnZXI/bT1uZXcgRGVmYXVsdExvZ2dlcjohMSE9PXMubG9nZ2VyJiYobT1zLmxvZ2dlcikscy5zY2hlbWEpe2NvbnN0IGU9ZnVuY3Rpb24oZSxzKXsxPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoJiYiZGVmYXVsdCJpbiBlJiYhaXMoZS5kZWZhdWx0LFRhYmxlKSYmKGU9ZS5kZWZhdWx0KTtjb25zdCBkPXt9LG09e30saD17fTtmb3IoY29uc3RbZyx4XW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKGlzKHgsVGFibGUpKXtjb25zdCBlPWdldFRhYmxlVW5pcXVlTmFtZSh4KSxzPW1bZV07ZFtlXT1nLGhbZ109e3RzTmFtZTpnLGRiTmFtZTp4W1RhYmxlLlN5bWJvbC5OYW1lXSxzY2hlbWE6eFtUYWJsZS5TeW1ib2wuU2NoZW1hXSxjb2x1bW5zOnhbVGFibGUuU3ltYm9sLkNvbHVtbnNdLHJlbGF0aW9uczpzPy5yZWxhdGlvbnM/P3t9LHByaW1hcnlLZXk6cz8ucHJpbWFyeUtleT8/W119O2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeFtUYWJsZS5TeW1ib2wuQ29sdW1uc10pKWUucHJpbWFyeSYmaFtnXS5wcmltYXJ5S2V5LnB1c2goZSk7Y29uc3QgJD14W1RhYmxlLlN5bWJvbC5FeHRyYUNvbmZpZ0J1aWxkZXJdPy4oeFtUYWJsZS5TeW1ib2wuRXh0cmFDb25maWdDb2x1bW5zXSk7aWYoJClmb3IoY29uc3QgZSBvZiBPYmplY3QudmFsdWVzKCQpKWlzKGUsVHUpJiZoW2ddLnByaW1hcnlLZXkucHVzaCguLi5lLmNvbHVtbnMpfWVsc2UgaWYoaXMoeCxSZWxhdGlvbnMpKXtjb25zdCBlPWdldFRhYmxlVW5pcXVlTmFtZSh4LnRhYmxlKSxnPWRbZV0sJD14LmNvbmZpZyhzKHgudGFibGUpKTtsZXQgUztmb3IoY29uc3RbcyxkXW9mIE9iamVjdC5lbnRyaWVzKCQpKWc/aFtnXS5yZWxhdGlvbnNbc109ZDooZSBpbiBtfHwobVtlXT17cmVsYXRpb25zOnt9LHByaW1hcnlLZXk6U30pLG1bZV0ucmVsYXRpb25zW3NdPWQpfXJldHVybnt0YWJsZXM6aCx0YWJsZU5hbWVzTWFwOmR9fShzLnNjaGVtYSxjcmVhdGVUYWJsZVJlbGF0aW9uc0hlbHBlcnMpO2g9e2Z1bGxTY2hlbWE6cy5zY2hlbWEsc2NoZW1hOmUudGFibGVzLHRhYmxlTmFtZXNNYXA6ZS50YWJsZU5hbWVzTWFwfX1jb25zdCBnPW5ldyBTUUxpdGVEMVNlc3Npb24oZSxkLGgse2xvZ2dlcjptLGNhY2hlOnMuY2FjaGV9KSx4PW5ldyBEcml6emxlRDFEYXRhYmFzZSgiYXN5bmMiLGQsZyxoKTtyZXR1cm4geC4kY2xpZW50PWUseC4kY2FjaGU9cy5jYWNoZSx4LiRjYWNoZSYmKHguJGNhY2hlLmludmFsaWRhdGU9cy5jYWNoZT8ub25NdXRhdGUpLHh9bGV0IFV1PWZ1bmN0aW9uKGUpe3JldHVybiBlLkdPT0dMRT0iZ29vZ2xlIixlLkdJVEhVQj0iZ2l0aHViIixlfSh7fSksTHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuU0lHTl9JTj0iYXV0aDpzaWduX2luIixlLlNJR05fVVA9ImF1dGg6c2lnbl91cCIsZS5JTVBFUlNPTkFURV9TVEFSVD0iYXV0aDppbXBlcnNvbmF0ZV9zdGFydCIsZS5JTVBFUlNPTkFURV9TVE9QPSJhdXRoOmltcGVyc29uYXRlX3N0b3AiLGV9KHt9KTtmdW5jdGlvbiBlbnVtVmFsdWVzJDEoZSl7cmV0dXJuIE9iamVjdC52YWx1ZXMoZSl9Y29uc3QgQXU9c3FsaXRlVGFibGUoInVzZXJzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJuYW1lOnRleHQoInVzZXJuYW1lIiksbmFtZTp0ZXh0KCJuYW1lIikscHJpbWFyeV9lbWFpbDp0ZXh0KCJwcmltYXJ5X2VtYWlsIikudW5pcXVlKCkubm90TnVsbCgpLHByaW1hcnlfcGhvbmU6dGV4dCgicHJpbWFyeV9waG9uZSIpLnVuaXF1ZSgpLGF2YXRhcjp0ZXh0KCJhdmF0YXIiKSx2ZXJpZmllZDppbnRlZ2VyKCJ2ZXJpZmllZCIse21vZGU6ImJvb2xlYW4ifSkuZGVmYXVsdCghMSksZW1haWxfbm90aWZpY2F0aW9uczppbnRlZ2VyKCJlbWFpbF9ub3RpZmljYXRpb25zIix7bW9kZToiYm9vbGVhbiJ9KS5kZWZhdWx0KCEwKSxiaW86dGV4dCgiYmlvIiksbm90aWZpY2F0aW9uX3ByZWZzOnRleHQoIm5vdGlmaWNhdGlvbl9wcmVmcyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5kZWZhdWx0KHtlbWFpbDohMCxwcm9kdWN0X3VwZGF0ZXM6ITAsd2Vla2x5X2RpZ2VzdDohMSxpbXBvcnRhbnRfdXBkYXRlczohMH0pLGN1c3RvbV9kYXRhOnRleHQoImN1c3RvbV9kYXRhIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoe30pLGxhc3Rfc2lnbl9pbl9hdDppbnRlZ2VyKCJsYXN0X3NpZ25faW5fYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksaXNfc3VzcGVuZGVkOmludGVnZXIoImlzX3N1c3BlbmRlZCIse21vZGU6ImJvb2xlYW4ifSkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJ1c2Vyc191c2VybmFtZV9pZHgiKS5vbihlLnVzZXJuYW1lKSxpbmRleCgidXNlcnNfbmFtZV9pZHgiKS5vbihlLm5hbWUpXSkscXU9c3FsaXRlVGFibGUoImlkZW50aXRpZXMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIixvblVwZGF0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscHJvdmlkZXI6dGV4dCgicHJvdmlkZXIiLHtlbnVtOmVudW1WYWx1ZXMkMShVdSl9KS5ub3ROdWxsKCkscHJvdmlkZXJfdXNlcl9pZDp0ZXh0KCJwcm92aWRlcl91c2VyX2lkIikubm90TnVsbCgpLHByb3ZpZGVyX2RhdGE6dGV4dCgicHJvdmlkZXJfZGF0YSIse21vZGU6Impzb24ifSkuJHR5cGUoKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImlkZW50aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpLHVuaXF1ZUluZGV4KCJpZGVudGl0aWVzX3Byb3ZpZGVyX3VuaXF1ZV9pZHgiKS5vbihlLnByb3ZpZGVyLGUucHJvdmlkZXJfdXNlcl9pZCldKSxGdT1zcWxpdGVUYWJsZSgiYWN0aXZpdGllcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhY3Rpb246dGV4dCgiYWN0aW9uIix7ZW51bTplbnVtVmFsdWVzJDEoTHUpfSkubm90TnVsbCgpLGFjdGlvbl9yZWZfaWQ6dGV4dCgiYWN0aW9uX3JlZl9pZCIpLHRlc3Q6dGV4dCgidGVzdCIse21vZGU6Impzb24ifSksbWV0YWRhdGE6dGV4dCgibWV0YWRhdGEiLHttb2RlOiJqc29uIn0pLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImFjdGl2aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpXSksQnU9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksbmFtZTp0ZXh0KCJuYW1lIikubm90TnVsbCgpLHNsdWc6dGV4dCgic2x1ZyIpLm5vdE51bGwoKS51bmlxdWUoKSxvd25lcl9pZDp0ZXh0KCJvd25lcl9pZCIpLnJlZmVyZW5jZXMoKCk9PkF1LmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksaXNfcGVyc29uYWw6aW50ZWdlcigiaXNfcGVyc29uYWwiLHttb2RlOiJib29sZWFuIn0pLm5vdE51bGwoKS5kZWZhdWx0KCExKSxpc19zeXN0ZW06aW50ZWdlcigiaXNfc3lzdGVtIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJvcmdhbml6YXRpb25zX2lzX3N5c3RlbV9pZHgiKS5vbihlLmlzX3N5c3RlbSldKSxadT1zcWxpdGVUYWJsZSgib3JnYW5pemF0aW9uX21lbWJlcnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhYmlsaXRpZXM6dGV4dCgiYWJpbGl0aWVzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bdW5pcXVlSW5kZXgoIm9yZ19tZW1iZXJzX3VzZXJfb3JnX3VuaXF1ZSIpLm9uKGUudXNlcl9pZCxlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoIm9yZ19tZW1iZXJzX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCldKSxNdT1zcWxpdGVUYWJsZSgicGVybWlzc2lvbnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksa2V5OnRleHQoImtleSIpLm5vdE51bGwoKS51bmlxdWUoKSxzdWJqZWN0OnRleHQoInN1YmplY3QiKS5ub3ROdWxsKCksYWN0aW9uOnRleHQoImFjdGlvbiIpLm5vdE51bGwoKSxzY29wZTp0ZXh0KCJzY29wZSIpLG9yZ19raW5kOnRleHQoIm9yZ19raW5kIix7ZW51bTpbInN5c3RlbSIsInRlbmFudCJdfSkubm90TnVsbCgpLGRlc2NyaXB0aW9uOnRleHQoImRlc2NyaXB0aW9uIiksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9PltpbmRleCgicGVybWlzc2lvbnNfc3ViamVjdF9pZHgiKS5vbihlLnN1YmplY3QpXSksUXU9c3FsaXRlVGFibGUoInJvbGVzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDp0ZXh0KCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLG5hbWU6dGV4dCgibmFtZSIpLm5vdE51bGwoKSxkZXNjcmlwdGlvbjp0ZXh0KCJkZXNjcmlwdGlvbiIpLHBlcm1pc3Npb25zOnRleHQoInBlcm1pc3Npb25zIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxpc19zeXN0ZW06aW50ZWdlcigiaXNfc3lzdGVtIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJyb2xlc19vcmdfbmFtZV91bmlxdWUiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCxlLm5hbWUpLGluZGV4KCJyb2xlc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpXSksVnU9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9tZW1iZXJfcm9sZXMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksbWVtYmVyX2lkOnRleHQoIm1lbWJlcl9pZCIpLnJlZmVyZW5jZXMoKCk9Plp1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscm9sZV9pZDp0ZXh0KCJyb2xlX2lkIikucmVmZXJlbmNlcygoKT0+UXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJtZW1iZXJfcm9sZXNfdW5pcXVlIikub24oZS5tZW1iZXJfaWQsZS5yb2xlX2lkKSxpbmRleCgibWVtYmVyX3JvbGVzX21lbWJlcl9pZHgiKS5vbihlLm1lbWJlcl9pZCksaW5kZXgoIm1lbWJlcl9yb2xlc19yb2xlX2lkeCIpLm9uKGUucm9sZV9pZCldKSxIdT1zcWxpdGVUYWJsZSgib3JnYW5pemF0aW9uX2ludml0YXRpb25zIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG9yZ2FuaXphdGlvbl9pZDp0ZXh0KCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGVtYWlsOnRleHQoImVtYWlsIikubm90TnVsbCgpLHJvbGVfaWQ6dGV4dCgicm9sZV9pZCIpLnJlZmVyZW5jZXMoKCk9PlF1LmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksdG9rZW46dGV4dCgidG9rZW4iKS5ub3ROdWxsKCkudW5pcXVlKCksaW52aXRlZF9ieTp0ZXh0KCJpbnZpdGVkX2J5IikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxwcm9qZWN0X2lkczp0ZXh0KCJwcm9qZWN0X2lkcyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5kZWZhdWx0KFtdKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxleHBpcmVzX2F0OmludGVnZXIoImV4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpfSxlPT5baW5kZXgoIm9yZ19pbnZpdGF0aW9uc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpLGluZGV4KCJvcmdfaW52aXRhdGlvbnNfdG9rZW5faWR4Iikub24oZS50b2tlbildKSxXdT1yZWxhdGlvbnMoQXUsKHttYW55OmV9KT0+KHtpZGVudGl0aWVzOmUocXUpLGFjdGl2aXRpZXM6ZShGdSl9KSksSnU9cmVsYXRpb25zKHF1LCh7b25lOmV9KT0+KHt1c2VyOmUoQXUse2ZpZWxkczpbcXUudXNlcl9pZF0scmVmZXJlbmNlczpbQXUuaWRdfSl9KSksS3U9cmVsYXRpb25zKEZ1LCh7b25lOmV9KT0+KHt1c2VyOmUoQXUse2ZpZWxkczpbRnUudXNlcl9pZF0scmVmZXJlbmNlczpbQXUuaWRdfSl9KSksR3U9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9iaWxsaW5nX3NldHRpbmdzIix7b3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSksY29tcGFueV9uYW1lOnRleHQoImNvbXBhbnlfbmFtZSIpLHRheF9pZDp0ZXh0KCJ0YXhfaWQiKSxhZGRyZXNzOnRleHQoImFkZHJlc3MiKSxjaXR5OnRleHQoImNpdHkiKSxjb3VudHJ5OnRleHQoImNvdW50cnkiKS5kZWZhdWx0KCJVUyIpLGN1cnJlbmN5OnRleHQoImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLHVwZGF0ZWRfYXQ6aW50ZWdlcigidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9KSxYdT1zcWxpdGVUYWJsZSgiaW52b2ljZXMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksbnVtYmVyOnRleHQoIm51bWJlciIpLm5vdE51bGwoKS51bmlxdWUoKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTpbImRyYWZ0Iiwic2VudCIsInBhaWQiLCJvdmVyZHVlIiwiY2FuY2VsbGVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgiZHJhZnQiKSxjdXJyZW5jeTp0ZXh0KCJjdXJyZW5jeSIpLm5vdE51bGwoKS5kZWZhdWx0KCJVU0QiKSxzdWJ0b3RhbDppbnRlZ2VyKCJzdWJ0b3RhbCIpLm5vdE51bGwoKS5kZWZhdWx0KDApLHRheDppbnRlZ2VyKCJ0YXgiKS5ub3ROdWxsKCkuZGVmYXVsdCgwKSx0b3RhbDppbnRlZ2VyKCJ0b3RhbCIpLm5vdE51bGwoKS5kZWZhdWx0KDApLGlzc3VlZF9hdDppbnRlZ2VyKCJpc3N1ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksZHVlX2F0OmludGVnZXIoImR1ZV9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxwYWlkX2F0OmludGVnZXIoInBhaWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksbm90ZXM6dGV4dCgibm90ZXMiKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImludm9pY2VzX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoImludm9pY2VzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxZdT1zcWxpdGVUYWJsZSgiaW52b2ljZV9pdGVtcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxpbnZvaWNlX2lkOnRleHQoImludm9pY2VfaWQiKS5yZWZlcmVuY2VzKCgpPT5YdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGRlc2NyaXB0aW9uOnRleHQoImRlc2NyaXB0aW9uIikubm90TnVsbCgpLHF1YW50aXR5OmludGVnZXIoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksdW5pdF9wcmljZTppbnRlZ2VyKCJ1bml0X3ByaWNlIikubm90TnVsbCgpLGN1cnJlbmN5OnRleHQoImN1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGFtb3VudDppbnRlZ2VyKCJhbW91bnQiKS5ub3ROdWxsKCl9LGU9PltpbmRleCgiaW52b2ljZV9pdGVtc19pbnZvaWNlX2lkeCIpLm9uKGUuaW52b2ljZV9pZCldKSx0ZD1zcWxpdGVUYWJsZSgib3JnYW5pemF0aW9uX2NyZWRpdHMiLHtvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxiYWxhbmNlOmludGVnZXIoImJhbGFuY2UiKS5ub3ROdWxsKCkuZGVmYXVsdCgwKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSksbmQ9c3FsaXRlVGFibGUoInRyYW5zYWN0aW9ucyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLHR5cGU6dGV4dCgidHlwZSIse2VudW06WyJ0b3BfdXAiLCJyZWZlcnJhbF9yZXdhcmQiXX0pLm5vdE51bGwoKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTpbInBlbmRpbmciLCJzdWNjZXNzIiwiZmFpbGVkIiwiZXhwaXJlZCJdfSkubm90TnVsbCgpLmRlZmF1bHQoInBlbmRpbmciKSxhbW91bnQ6aW50ZWdlcigiYW1vdW50Iikubm90TnVsbCgpLGdhdGV3YXlfcmVmOnRleHQoImdhdGV3YXlfcmVmIikudW5pcXVlKCksc2VwYXlfZXZlbnRfaWQ6dGV4dCgic2VwYXlfZXZlbnRfaWQiKS51bmlxdWUoKSxtZXRhZGF0YTp0ZXh0KCJtZXRhZGF0YSIse21vZGU6Impzb24ifSkuJHR5cGUoKS5kZWZhdWx0KHt9KSxleHBpcmVzX2F0OmludGVnZXIoImV4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJ0cmFuc2FjdGlvbnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKSxpbmRleCgidHJhbnNhY3Rpb25zX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSxyZD1zcWxpdGVUYWJsZSgibm90aWZpY2F0aW9ucyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHNlbmRlcl9uYW1lOnRleHQoInNlbmRlcl9uYW1lIikubm90TnVsbCgpLGJvZHk6dGV4dCgiYm9keSIpLm5vdE51bGwoKSxpc19yZWFkOmludGVnZXIoImlzX3JlYWQiLHttb2RlOiJib29sZWFuIn0pLm5vdE51bGwoKS5kZWZhdWx0KCExKSxkZWR1cGVfa2V5OnRleHQoImRlZHVwZV9rZXkiKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJub3RpZmljYXRpb25zX3VzZXJfb3JnX2lkeCIpLm9uKGUudXNlcl9pZCxlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoIm5vdGlmaWNhdGlvbnNfY3JlYXRlZF9pZHgiKS5vbihlLmNyZWF0ZWRfYXQpLHVuaXF1ZUluZGV4KCJub3RpZmljYXRpb25zX2RlZHVwZV9pZHgiKS5vbihlLnVzZXJfaWQsZS5vcmdhbml6YXRpb25faWQsZS5kZWR1cGVfa2V5KV0pLG9kPXNxbGl0ZVRhYmxlKCJwcm9kdWN0cyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxuYW1lOnRleHQoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246dGV4dCgiZGVzY3JpcHRpb24iKSx0eXBlOnRleHQoInR5cGUiLHtlbnVtOlsib25lX3RpbWUiLCJyZWN1cnJpbmciXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJvbmVfdGltZSIpLHByaWNlOmludGVnZXIoInByaWNlIikubm90TnVsbCgpLHByaWNlX2N1cnJlbmN5OnRleHQoInByaWNlX2N1cnJlbmN5Iikubm90TnVsbCgpLmRlZmF1bHQoIlVTRCIpLGJpbGxpbmdfaW50ZXJ2YWw6dGV4dCgiYmlsbGluZ19pbnRlcnZhbCIse2VudW06WyJtb250aCIsInllYXIiXX0pLHN0YXR1czp0ZXh0KCJzdGF0dXMiLHtlbnVtOlsiYWN0aXZlIiwiaW5hY3RpdmUiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJhY3RpdmUiKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInByb2R1Y3RzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyksaW5kZXgoInByb2R1Y3RzX3R5cGVfaWR4Iikub24oZS50eXBlKV0pLHNkPXNxbGl0ZVRhYmxlKCJwcm9qZWN0cyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxuYW1lOnRleHQoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246dGV4dCgiZGVzY3JpcHRpb24iKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTpbImFjdGl2ZSIsImFyY2hpdmVkIl19KS5ub3ROdWxsKCkuZGVmYXVsdCgiYWN0aXZlIiksY3JlYXRlZF9ieTp0ZXh0KCJjcmVhdGVkX2J5IikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInByb2plY3RzX29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoInByb2plY3RzX3N0YXR1c19pZHgiKS5vbihlLnN0YXR1cyldKSx1ZD1zcWxpdGVUYWJsZSgicHJvamVjdF9wcm9kdWN0cyIse3Byb2plY3RfaWQ6dGV4dCgicHJvamVjdF9pZCIpLnJlZmVyZW5jZXMoKCk9PnNkLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCkscHJvZHVjdF9pZDp0ZXh0KCJwcm9kdWN0X2lkIikubm90TnVsbCgpLHF1YW50aXR5OmludGVnZXIoInF1YW50aXR5Iikubm90TnVsbCgpLmRlZmF1bHQoMSksYWRkZWRfYXQ6aW50ZWdlcigiYWRkZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W3ByaW1hcnlLZXkoe2NvbHVtbnM6W2UucHJvamVjdF9pZCxlLnByb2R1Y3RfaWRdfSldKSxwZD1zcWxpdGVUYWJsZSgicHJvamVjdF9tZW1iZXJzIix7cHJvamVjdF9pZDp0ZXh0KCJwcm9qZWN0X2lkIikucmVmZXJlbmNlcygoKT0+c2QuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHJvbGU6dGV4dCgicm9sZSIse2VudW06WyJvd25lciIsIm1lbWJlciIsInZpZXdlciJdfSkubm90TnVsbCgpLmRlZmF1bHQoIm1lbWJlciIpLGFkZGVkX2F0OmludGVnZXIoImFkZGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9PltwcmltYXJ5S2V5KHtjb2x1bW5zOltlLnByb2plY3RfaWQsZS51c2VyX2lkXX0pLGluZGV4KCJwcm9qZWN0X21lbWJlcnNfdXNlcl9pZHgiKS5vbihlLnVzZXJfaWQpXSksbWQ9c3FsaXRlVGFibGUoInNlbGZob3N0X2RlcGxveW1lbnRzIix7b3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpPT5CdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSksY2ZfYWNjb3VudF9pZDp0ZXh0KCJjZl9hY2NvdW50X2lkIiksY2Zfc2NyaXB0X25hbWU6dGV4dCgiY2Zfc2NyaXB0X25hbWUiKSx3b3JrZXJzX2Rldl91cmw6dGV4dCgid29ya2Vyc19kZXZfdXJsIiksZGVwbG95ZWRfdmVyc2lvbjp0ZXh0KCJkZXBsb3llZF92ZXJzaW9uIiksZGVwbG95ZWRfYXQ6aW50ZWdlcigiZGVwbG95ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksY2ZfdG9rZW5fY2lwaGVydGV4dDp0ZXh0KCJjZl90b2tlbl9jaXBoZXJ0ZXh0IiksY2ZfdG9rZW5faXY6dGV4dCgiY2ZfdG9rZW5faXYiKSxjZl90b2tlbl9leHBpcmVzX2F0OmludGVnZXIoImNmX3Rva2VuX2V4cGlyZXNfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksc3RhdHVzOnRleHQoInN0YXR1cyIse2VudW06WyJpZGxlIiwiZGVwbG95aW5nIiwiZGVwbG95ZWQiLCJmYWlsZWQiXX0pLm5vdE51bGwoKS5kZWZhdWx0KCJpZGxlIiksbGFzdF9lcnJvcjp0ZXh0KCJsYXN0X2Vycm9yIil9KSx2ZD1zcWxpdGVUYWJsZSgic2VsZmhvc3RfYXVkaXQiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksYWN0b3JfdXNlcl9pZDp0ZXh0KCJhY3Rvcl91c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxhY3Rpb246dGV4dCgiYWN0aW9uIix7ZW51bTpbImRlcGxveSIsInJlZGVwbG95IiwiZGlzY29ubmVjdCJdfSkubm90TnVsbCgpLHN1Y2Nlc3M6aW50ZWdlcigic3VjY2VzcyIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLGNmX2FjY291bnRfaWQ6dGV4dCgiY2ZfYWNjb3VudF9pZCIpLGVycm9yX21lc3NhZ2U6dGV4dCgiZXJyb3JfbWVzc2FnZSIpLHN0YXJ0ZWRfYXQ6aW50ZWdlcigic3RhcnRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLGZpbmlzaGVkX2F0OmludGVnZXIoImZpbmlzaGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pfSxlPT5baW5kZXgoInNlbGZob3N0X2F1ZGl0X29yZ19pZHgiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCksaW5kZXgoInNlbGZob3N0X2F1ZGl0X3N0YXJ0ZWRfaWR4Iikub24oZS5zdGFydGVkX2F0KV0pLHlkPXNxbGl0ZVRhYmxlKCJzZWxmaG9zdF9kZXBsb3ltZW50X3NlY3JldHMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PkJ1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksa2V5OnRleHQoImtleSIpLm5vdE51bGwoKSxjaXBoZXJ0ZXh0OnRleHQoImNpcGhlcnRleHQiKS5ub3ROdWxsKCksaXY6dGV4dCgiaXYiKS5ub3ROdWxsKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJzZWxmaG9zdF9zZWNyZXRzX29yZ19rZXlfdW5pcXVlIikub24oZS5vcmdhbml6YXRpb25faWQsZS5rZXkpXSksX2Q9WyJmZWVkYmFjayIsInN1cHBvcnQiXSx4ZD1bImFjY291bnQiLCJiaWxsaW5nIiwidGVjaG5pY2FsIiwib3RoZXIiXSx3ZD1bIm9wZW4iLCJhY3RpdmUiLCJjbG9zZWQiXSwkZD1bInVzZXIiLCJhZ2VudCJdLFNkPXNxbGl0ZVRhYmxlKCJzdXBwb3J0X3RpY2tldHMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+QnUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxraW5kOnRleHQoImtpbmQiLHtlbnVtOl9kfSkubm90TnVsbCgpLGNhdGVnb3J5OnRleHQoImNhdGVnb3J5Iix7ZW51bTp4ZH0pLHN1YmplY3Q6dGV4dCgic3ViamVjdCIpLm5vdE51bGwoKSxzdGF0dXM6dGV4dCgic3RhdHVzIix7ZW51bTp3ZH0pLm5vdE51bGwoKS5kZWZhdWx0KCJvcGVuIiksYXNzaWduZWRfdG86dGV4dCgiYXNzaWduZWRfdG8iKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGxhc3RfbWVzc2FnZV9hdDppbnRlZ2VyKCJsYXN0X21lc3NhZ2VfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxsYXN0X21lc3NhZ2Vfcm9sZTp0ZXh0KCJsYXN0X21lc3NhZ2Vfcm9sZSIse2VudW06JGR9KS5ub3ROdWxsKCkuZGVmYXVsdCgidXNlciIpLHJlbWluZGVyX3NlbnRfYXQ6aW50ZWdlcigicmVtaW5kZXJfc2VudF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInN1cHBvcnRfdGlja2V0c191c2VyX2lkeCIpLm9uKGUudXNlcl9pZCksaW5kZXgoInN1cHBvcnRfdGlja2V0c19zdGF0dXNfaWR4Iikub24oZS5zdGF0dXMpLGluZGV4KCJzdXBwb3J0X3RpY2tldHNfYXNzaWduZWRfaWR4Iikub24oZS5hc3NpZ25lZF90byksaW5kZXgoInN1cHBvcnRfdGlja2V0c19yZW1pbmRlcl9pZHgiKS5vbihlLmxhc3RfbWVzc2FnZV9yb2xlLGUubGFzdF9tZXNzYWdlX2F0KV0pLHpkPXNxbGl0ZVRhYmxlKCJzdXBwb3J0X3RpY2tldF9tZXNzYWdlcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx0aWNrZXRfaWQ6dGV4dCgidGlja2V0X2lkIikucmVmZXJlbmNlcygoKT0+U2QuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhdXRob3JfaWQ6dGV4dCgiYXV0aG9yX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSxhdXRob3Jfcm9sZTp0ZXh0KCJhdXRob3Jfcm9sZSIse2VudW06JGR9KS5ub3ROdWxsKCksYm9keTp0ZXh0KCJib2R5Iikubm90TnVsbCgpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInN1cHBvcnRfdGlja2V0X21lc3NhZ2VzX3RpY2tldF9pZHgiKS5vbihlLnRpY2tldF9pZCxlLmNyZWF0ZWRfYXQpXSksSWQ9c3FsaXRlVGFibGUoInVzZXJfcmVmZXJyYWxzIix7dXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCk9PkF1LmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxjb2RlOnRleHQoImNvZGUiKS5ub3ROdWxsKCkudW5pcXVlKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9KSxDZD1zcWxpdGVUYWJsZSgicmVmZXJyYWxzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHJlZmVycmVyX2lkOnRleHQoInJlZmVycmVyX2lkIikucmVmZXJlbmNlcygoKT0+QXUuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxyZWZlcmVlX2lkOnRleHQoInJlZmVyZWVfaWQiKS5yZWZlcmVuY2VzKCgpPT5BdS5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHNvdXJjZTp0ZXh0KCJzb3VyY2UiLHtlbnVtOlsibGluayIsImludml0ZSJdfSkubm90TnVsbCgpLmRlZmF1bHQoImxpbmsiKSxyZXdhcmRfcGFpZDppbnRlZ2VyKCJyZXdhcmRfcGFpZCIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bdW5pcXVlSW5kZXgoInJlZmVycmFsc19yZWZlcmVlX3VuaXF1ZSIpLm9uKGUucmVmZXJlZV9pZCksaW5kZXgoInJlZmVycmFsc19yZWZlcnJlcl9pZHgiKS5vbihlLnJlZmVycmVyX2lkKV0pLFRkPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxBY3Rpdml0eUFjdGlvbjpMdSxBdXRoUHJvdmlkZXI6VXUsTUVTU0FHRV9ST0xFUzokZCxUSUNLRVRfQ0FURUdPUklFUzp4ZCxUSUNLRVRfS0lORFM6X2QsVElDS0VUX1NUQVRVU0VTOndkLGFjdGl2aXR5UmVsYXRpb25zOkt1LGFjdGl2aXR5VGFibGU6RnUsaWRlbnRpdHlSZWxhdGlvbnM6SnUsaWRlbnRpdHlUYWJsZTpxdSxpbnZvaWNlSXRlbVRhYmxlOll1LGludm9pY2VUYWJsZTpYdSxub3RpZmljYXRpb25UYWJsZTpyZCxvcmdhbml6YXRpb25CaWxsaW5nU2V0dGluZ3NUYWJsZTpHdSxvcmdhbml6YXRpb25DcmVkaXRUYWJsZTp0ZCxvcmdhbml6YXRpb25JbnZpdGF0aW9uVGFibGU6SHUsb3JnYW5pemF0aW9uTWVtYmVyUm9sZVRhYmxlOlZ1LG9yZ2FuaXphdGlvbk1lbWJlclRhYmxlOlp1LG9yZ2FuaXphdGlvblRhYmxlOkJ1LHBlcm1pc3Npb25UYWJsZTpNdSxwcm9kdWN0VGFibGU6b2QscHJvamVjdE1lbWJlclRhYmxlOnBkLHByb2plY3RQcm9kdWN0VGFibGU6dWQscHJvamVjdFRhYmxlOnNkLHJlZmVycmFsVGFibGU6Q2Qscm9sZVRhYmxlOlF1LHNlbGZob3N0QXVkaXRUYWJsZTp2ZCxzZWxmaG9zdERlcGxveW1lbnRTZWNyZXRUYWJsZTp5ZCxzZWxmaG9zdERlcGxveW1lbnRUYWJsZTptZCxzdXBwb3J0VGlja2V0TWVzc2FnZVRhYmxlOnpkLHN1cHBvcnRUaWNrZXRUYWJsZTpTZCx0cmFuc2FjdGlvblRhYmxlOm5kLHVzZXJSZWZlcnJhbFRhYmxlOklkLHVzZXJSZWxhdGlvbnM6V3UsdXNlclRhYmxlOkF1fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2xldCBSZDtjb25zdCBFZD1uZXcgUHJveHkoe30se2dldDooZSxzKT0+ZnVuY3Rpb24oKXtpZighUmQpdHJ5e2NvbnN0IGU9VC5lbnYuREJ8fGdsb2JhbFRoaXMuX19lbnZfXz8uREJ8fGdsb2JhbFRoaXMuREI7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJEQiBiaW5kaW5nIG5vdCBmb3VuZCIpO1JkPWRyaXp6bGUoZSx7c2NoZW1hOlRkfSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKCJbbnV4dC1odWJdICIrZS5tZXNzYWdlKX1yZXR1cm4gUmR9KClbc119KSxPZD1jcmVhdGVTdG9yYWdlKHtkcml2ZXI6ZHJpdmVyKHtiaW5kaW5nOiJLViJ9KX0pLFBkPWNyZWF0ZURlZnUkMSgoZSxzLGQpPT57aWYoQXJyYXkuaXNBcnJheShlW3NdKXx8QXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZVtzXT1kLCEwfSk7dmFyIE5kPXt9LERkPXt9LFVkPXtleHBvcnRzOnt9fSxMZD17fSxBZD1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IikscWQ9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksRmQ9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxCZD1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLFpkPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksTWQ9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxRZD1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksVmQ9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxIZD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLFdkPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxKZD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksS2Q9U3ltYm9sLml0ZXJhdG9yO3ZhciBHZD17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sWGQ9T2JqZWN0LmFzc2lnbixZZD17fTtmdW5jdGlvbiBFJDIoZSxzLGQpe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9cyx0aGlzLnJlZnM9WWQsdGhpcy51cGRhdGVyPWR8fEdkfWZ1bmN0aW9uIEYkMSgpe31mdW5jdGlvbiBHJDEoZSxzLGQpe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9cyx0aGlzLnJlZnM9WWQsdGhpcy51cGRhdGVyPWR8fEdkfUUkMi5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxFJDIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUscyl7aWYoIm9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcigic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUscywic2V0U3RhdGUiKX0sRSQyLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX0sRiQxLnByb3RvdHlwZT1FJDIucHJvdG90eXBlO3ZhciBlcD1HJDEucHJvdG90eXBlPW5ldyBGJDE7ZXAuY29uc3RydWN0b3I9RyQxLFhkKGVwLEUkMi5wcm90b3R5cGUpLGVwLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciB0cD1BcnJheS5pc0FycmF5LG5wPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksaXA9e2N1cnJlbnQ6bnVsbH0scnA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtmdW5jdGlvbiBNJDIoZSxzLGQpe3ZhciBtLGg9e30sZz1udWxsLHg9bnVsbDtpZihudWxsIT1zKWZvcihtIGluIHZvaWQgMCE9PXMucmVmJiYoeD1zLnJlZiksdm9pZCAwIT09cy5rZXkmJihnPSIiK3Mua2V5KSxzKW5wLmNhbGwocyxtKSYmIXJwLmhhc093blByb3BlcnR5KG0pJiYoaFttXT1zW21dKTt2YXIgJD1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PSQpaC5jaGlsZHJlbj1kO2Vsc2UgaWYoMTwkKXtmb3IodmFyIFM9QXJyYXkoJCksaj0wO2o8JDtqKyspU1tqXT1hcmd1bWVudHNbaisyXTtoLmNoaWxkcmVuPVN9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKG0gaW4gJD1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1oW21dJiYoaFttXT0kW21dKTtyZXR1cm57JCR0eXBlb2Y6QWQsdHlwZTplLGtleTpnLHJlZjp4LHByb3BzOmgsX293bmVyOmlwLmN1cnJlbnR9fWZ1bmN0aW9uIE8kMihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09QWR9dmFyIG9wPS9cLysvZztmdW5jdGlvbiBRJDIoZSxzKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgcz17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVybiIkIitlLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihlKXtyZXR1cm4gc1tlXX0pfSgiIitlLmtleSk6cy50b1N0cmluZygzNil9ZnVuY3Rpb24gUiQyKGUscyxkLG0saCl7dmFyIGc9dHlwZW9mIGU7InVuZGVmaW5lZCIhPT1nJiYiYm9vbGVhbiIhPT1nfHwoZT1udWxsKTt2YXIgeD0hMTtpZihudWxsPT09ZSl4PSEwO2Vsc2Ugc3dpdGNoKGcpe2Nhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6eD0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgQWQ6Y2FzZSBxZDp4PSEwfX1pZih4KXJldHVybiBoPWgoeD1lKSxlPSIiPT09bT8iLiIrUSQyKHgsMCk6bSx0cChoKT8oZD0iIixudWxsIT1lJiYoZD1lLnJlcGxhY2Uob3AsIiQmLyIpKyIvIiksUiQyKGgscyxkLCIiLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpOm51bGwhPWgmJihPJDIoaCkmJihoPWZ1bmN0aW9uKGUscyl7cmV0dXJueyQkdHlwZW9mOkFkLHR5cGU6ZS50eXBlLGtleTpzLHJlZjplLnJlZixwcm9wczplLnByb3BzLF9vd25lcjplLl9vd25lcn19KGgsZCsoIWgua2V5fHx4JiZ4LmtleT09PWgua2V5PyIiOigiIitoLmtleSkucmVwbGFjZShvcCwiJCYvIikrIi8iKStlKSkscy5wdXNoKGgpKSwxO2lmKHg9MCxtPSIiPT09bT8iLiI6bSsiOiIsdHAoZSkpZm9yKHZhciAkPTA7JDxlLmxlbmd0aDskKyspe3ZhciBTPW0rUSQyKGc9ZVskXSwkKTt4Kz1SJDIoZyxzLGQsUyxoKX1lbHNlIGlmKFM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YoZT1LZCYmZVtLZF18fGVbIkBAaXRlcmF0b3IiXSk/ZTpudWxsfShlKSwiZnVuY3Rpb24iPT10eXBlb2YgUylmb3IoZT1TLmNhbGwoZSksJD0wOyEoZz1lLm5leHQoKSkuZG9uZTspeCs9UiQyKGc9Zy52YWx1ZSxzLGQsUz1tK1EkMihnLCQrKyksaCk7ZWxzZSBpZigib2JqZWN0Ij09PWcpdGhyb3cgcz1TdHJpbmcoZSksRXJyb3IoIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogIisoIltvYmplY3QgT2JqZWN0XSI9PT1zPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOnMpKyIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuIik7cmV0dXJuIHh9ZnVuY3Rpb24gUyQyKGUscyxkKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBtPVtdLGg9MDtyZXR1cm4gUiQyKGUsbSwiIiwiIixmdW5jdGlvbihlKXtyZXR1cm4gcy5jYWxsKGQsZSxoKyspfSksbX1mdW5jdGlvbiBUJDIoZSl7aWYoLTE9PT1lLl9zdGF0dXMpe3ZhciBzPWUuX3Jlc3VsdDsocz1zKCkpLnRoZW4oZnVuY3Rpb24ocyl7MCE9PWUuX3N0YXR1cyYmLTEhPT1lLl9zdGF0dXN8fChlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9cyl9LGZ1bmN0aW9uKHMpezAhPT1lLl9zdGF0dXMmJi0xIT09ZS5fc3RhdHVzfHwoZS5fc3RhdHVzPTIsZS5fcmVzdWx0PXMpfSksLTE9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9cyl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBhcD17Y3VycmVudDpudWxsfSxzcD17dHJhbnNpdGlvbjpudWxsfSxscD17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjphcCxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpzcCxSZWFjdEN1cnJlbnRPd25lcjppcH07TGQuQ2hpbGRyZW49e21hcDpTJDIsZm9yRWFjaDpmdW5jdGlvbihlLHMsZCl7UyQyKGUsZnVuY3Rpb24oKXtzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZCl9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciBzPTA7cmV0dXJuIFMkMihlLGZ1bmN0aW9uKCl7cysrfSksc30sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gUyQyKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KXx8W119LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIU8kMihlKSl0aHJvdyBFcnJvcigiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuIik7cmV0dXJuIGV9fSxMZC5Db21wb25lbnQ9RSQyLExkLkZyYWdtZW50PUZkLExkLlByb2ZpbGVyPVpkLExkLlB1cmVDb21wb25lbnQ9RyQxLExkLlN0cmljdE1vZGU9QmQsTGQuU3VzcGVuc2U9SGQsTGQuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9bHAsTGQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUscyxkKXtpZihudWxsPT1lKXRocm93IEVycm9yKCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCAiK2UrIi4iKTt2YXIgbT1YZCh7fSxlLnByb3BzKSxoPWUua2V5LGc9ZS5yZWYseD1lLl9vd25lcjtpZihudWxsIT1zKXtpZih2b2lkIDAhPT1zLnJlZiYmKGc9cy5yZWYseD1pcC5jdXJyZW50KSx2b2lkIDAhPT1zLmtleSYmKGg9IiIrcy5rZXkpLGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgJD1lLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihTIGluIHMpbnAuY2FsbChzLFMpJiYhcnAuaGFzT3duUHJvcGVydHkoUykmJihtW1NdPXZvaWQgMD09PXNbU10mJnZvaWQgMCE9PSQ/JFtTXTpzW1NdKX12YXIgUz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PVMpbS5jaGlsZHJlbj1kO2Vsc2UgaWYoMTxTKXskPUFycmF5KFMpO2Zvcih2YXIgaj0wO2o8UztqKyspJFtqXT1hcmd1bWVudHNbaisyXTttLmNoaWxkcmVuPSR9cmV0dXJueyQkdHlwZW9mOkFkLHR5cGU6ZS50eXBlLGtleTpoLHJlZjpnLHByb3BzOm0sX293bmVyOnh9fSxMZC5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybihlPXskJHR5cGVvZjpRZCxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGwsX2RlZmF1bHRWYWx1ZTpudWxsLF9nbG9iYWxOYW1lOm51bGx9KS5Qcm92aWRlcj17JCR0eXBlb2Y6TWQsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSxMZC5jcmVhdGVFbGVtZW50PU0kMixMZC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciBzPU0kMi5iaW5kKG51bGwsZSk7cmV0dXJuIHMudHlwZT1lLHN9LExkLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSxMZC5mb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpWZCxyZW5kZXI6ZX19LExkLmlzVmFsaWRFbGVtZW50PU8kMixMZC5sYXp5PWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpKZCxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmV9LF9pbml0OlQkMn19LExkLm1lbW89ZnVuY3Rpb24oZSxzKXtyZXR1cm57JCR0eXBlb2Y6V2QsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09cz9udWxsOnN9fSxMZC5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHM9c3AudHJhbnNpdGlvbjtzcC50cmFuc2l0aW9uPXt9O3RyeXtlKCl9ZmluYWxseXtzcC50cmFuc2l0aW9uPXN9fSxMZC51bnN0YWJsZV9hY3Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC4iKX0sTGQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSxzKXtyZXR1cm4gYXAuY3VycmVudC51c2VDYWxsYmFjayhlLHMpfSxMZC51c2VDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBhcC5jdXJyZW50LnVzZUNvbnRleHQoZSl9LExkLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LExkLnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFwLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShlKX0sTGQudXNlRWZmZWN0PWZ1bmN0aW9uKGUscyl7cmV0dXJuIGFwLmN1cnJlbnQudXNlRWZmZWN0KGUscyl9LExkLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlSWQoKX0sTGQudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihlLHMsZCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHMsZCl9LExkLnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihlLHMpe3JldHVybiBhcC5jdXJyZW50LnVzZUluc2VydGlvbkVmZmVjdChlLHMpfSxMZC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSxzKXtyZXR1cm4gYXAuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoZSxzKX0sTGQudXNlTWVtbz1mdW5jdGlvbihlLHMpe3JldHVybiBhcC5jdXJyZW50LnVzZU1lbW8oZSxzKX0sTGQudXNlUmVkdWNlcj1mdW5jdGlvbihlLHMsZCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlUmVkdWNlcihlLHMsZCl9LExkLnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gYXAuY3VycmVudC51c2VSZWYoZSl9LExkLnVzZVN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcC5jdXJyZW50LnVzZVN0YXRlKGUpfSxMZC51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihlLHMsZCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoZSxzLGQpfSxMZC51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGFwLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfSxMZC52ZXJzaW9uPSIxOC4yLjAiLFVkLmV4cG9ydHM9TGQ7dmFyIGNwPVVkLmV4cG9ydHMsdXA9Y3A7ZnVuY3Rpb24gbCQyKGUpe2Zvcih2YXIgcz0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXMrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tkXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIitzKyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIGRwPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscHA9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLyxtcD17fSxmcD17fTtmdW5jdGlvbiBqYSQxKGUpe3JldHVybiEhZHAuY2FsbChmcCxlKXx8IWRwLmNhbGwobXAsZSkmJihwcC50ZXN0KGUpP2ZwW2VdPSEwOihtcFtlXT0hMCwhMSkpfWZ1bmN0aW9uIHIoZSxzLGQsbSxoLGcseCl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PXN8fDM9PT1zfHw0PT09cyx0aGlzLmF0dHJpYnV0ZU5hbWU9bSx0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1oLHRoaXMubXVzdFVzZVByb3BlcnR5PWQsdGhpcy5wcm9wZXJ0eU5hbWU9ZSx0aGlzLnR5cGU9cyx0aGlzLnNhbml0aXplVVJMPWcsdGhpcy5yZW1vdmVFbXB0eVN0cmluZz14fXZhciBocD17fTsiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSwwLCExLGUsbnVsbCwhMSwhMSl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZVswXTtocFtzXT1uZXcgcihzLDEsITEsZVsxXSxudWxsLCExLCExKX0pLFsiY29udGVudEVkaXRhYmxlIiwiZHJhZ2dhYmxlIiwic3BlbGxDaGVjayIsInZhbHVlIl0uZm9yRWFjaChmdW5jdGlvbihlKXtocFtlXT1uZXcgcihlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksWyJhdXRvUmV2ZXJzZSIsImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLCJmb2N1c2FibGUiLCJwcmVzZXJ2ZUFscGhhIl0uZm9yRWFjaChmdW5jdGlvbihlKXtocFtlXT1uZXcgcihlLDIsITEsZSxudWxsLCExLCExKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSwzLCEwLGUsbnVsbCwhMSwhMSl9KSxbImNhcHR1cmUiLCJkb3dubG9hZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7aHBbZV09bmV3IHIoZSw0LCExLGUsbnVsbCwhMSwhMSl9KSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2hwW2VdPW5ldyByKGUsNiwhMSxlLG51bGwsITEsITEpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2hwW2VdPW5ldyByKGUsNSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgZ3A9L1tcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIGxhJDEoZSl7cmV0dXJuIGVbMV0udG9VcHBlckNhc2UoKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcz1lLnJlcGxhY2UoZ3AsbGEkMSk7aHBbc109bmV3IHIocywxLCExLGUsbnVsbCwhMSwhMSl9KSwieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZS5yZXBsYWNlKGdwLGxhJDEpO2hwW3NdPW5ldyByKHMsMSwhMSxlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMSwhMSl9KSxbInhtbDpiYXNlIiwieG1sOmxhbmciLCJ4bWw6c3BhY2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBzPWUucmVwbGFjZShncCxsYSQxKTtocFtzXT1uZXcgcihzLDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwhMSwhMSl9KSxbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2hwW2VdPW5ldyByKGUsMSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KSxocC54bGlua0hyZWY9bmV3IHIoInhsaW5rSHJlZiIsMSwhMSwieGxpbms6aHJlZiIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCEwLCExKSxbInNyYyIsImhyZWYiLCJhY3Rpb24iLCJmb3JtQWN0aW9uIl0uZm9yRWFjaChmdW5jdGlvbihlKXtocFtlXT1uZXcgcihlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7dmFyIHZwPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSx5cD1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKHZwKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3lwLmZvckVhY2goZnVuY3Rpb24ocyl7cz1zK2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSksdnBbc109dnBbZV19KX0pO3ZhciBicD0vWyInJjw+XS87ZnVuY3Rpb24gdihlKXtpZigiYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIiIrZTtlPSIiK2U7dmFyIHM9YnAuZXhlYyhlKTtpZihzKXt2YXIgZCxtPSIiLGg9MDtmb3IoZD1zLmluZGV4O2Q8ZS5sZW5ndGg7ZCsrKXtzd2l0Y2goZS5jaGFyQ29kZUF0KGQpKXtjYXNlIDM0OnM9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpzPSImYW1wOyI7YnJlYWs7Y2FzZSAzOTpzPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cz0iJmx0OyI7YnJlYWs7Y2FzZSA2MjpzPSImZ3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfWghPT1kJiYobSs9ZS5zdWJzdHJpbmcoaCxkKSksaD1kKzEsbSs9c31lPWghPT1kP20rZS5zdWJzdHJpbmcoaCxkKTptfXJldHVybiBlfXZhciBfcD0vKFtBLVpdKS9nLHhwPS9ebXMtLyx3cD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHckMShlLHMpe3JldHVybntpbnNlcnRpb25Nb2RlOmUsc2VsZWN0ZWRWYWx1ZTpzfX12YXIgJHA9bmV3IE1hcDtmdW5jdGlvbiB0YSQxKGUscyxkKXtpZigib2JqZWN0IiE9dHlwZW9mIGQpdGhyb3cgRXJyb3IobCQyKDYyKSk7Zm9yKHZhciBtIGluIHM9ITAsZClpZihkcC5jYWxsKGQsbSkpe3ZhciBoPWRbbV07aWYobnVsbCE9aCYmImJvb2xlYW4iIT10eXBlb2YgaCYmIiIhPT1oKXtpZigwPT09bS5pbmRleE9mKCItLSIpKXt2YXIgZz12KG0pO2g9digoIiIraCkudHJpbSgpKX1lbHNle2c9bTt2YXIgeD0kcC5nZXQoZyk7dm9pZCAwIT09eHx8KHg9dihnLnJlcGxhY2UoX3AsIi0kMSIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSh4cCwiLW1zLSIpKSwkcC5zZXQoZyx4KSksZz14LGg9Im51bWJlciI9PXR5cGVvZiBoPzA9PT1ofHxkcC5jYWxsKHZwLG0pPyIiK2g6aCsicHgiOnYoKCIiK2gpLnRyaW0oKSl9cz8ocz0hMSxlLnB1c2goJyBzdHlsZT0iJyxnLCI6IixoKSk6ZS5wdXNoKCI7IixnLCI6IixoKX19c3x8ZS5wdXNoKCciJyl9ZnVuY3Rpb24geCQxKGUscyxkLG0pe3N3aXRjaChkKXtjYXNlInN0eWxlIjpyZXR1cm4gdm9pZCB0YSQxKGUscyxtKTtjYXNlImRlZmF1bHRWYWx1ZSI6Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6Y2FzZSJpbm5lckhUTUwiOmNhc2Uic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIjpjYXNlInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyI6cmV0dXJufWlmKCEoMjxkLmxlbmd0aCl8fCJvIiE9PWRbMF0mJiJPIiE9PWRbMF18fCJuIiE9PWRbMV0mJiJOIiE9PWRbMV0paWYobnVsbCE9PShzPWhwLmhhc093blByb3BlcnR5KGQpP2hwW2RdOm51bGwpKXtzd2l0Y2godHlwZW9mIG0pe2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjpyZXR1cm47Y2FzZSJib29sZWFuIjppZighcy5hY2NlcHRzQm9vbGVhbnMpcmV0dXJufXN3aXRjaChkPXMuYXR0cmlidXRlTmFtZSxzLnR5cGUpe2Nhc2UgMzptJiZlLnB1c2goIiAiLGQsJz0iIicpO2JyZWFrO2Nhc2UgNDohMD09PW0/ZS5wdXNoKCIgIixkLCc9IiInKTohMSE9PW0mJmUucHVzaCgiICIsZCwnPSInLHYobSksJyInKTticmVhaztjYXNlIDU6aXNOYU4obSl8fGUucHVzaCgiICIsZCwnPSInLHYobSksJyInKTticmVhaztjYXNlIDY6IWlzTmFOKG0pJiYxPD1tJiZlLnB1c2goIiAiLGQsJz0iJyx2KG0pLCciJyk7YnJlYWs7ZGVmYXVsdDpzLnNhbml0aXplVVJMJiYobT0iIittKSxlLnB1c2goIiAiLGQsJz0iJyx2KG0pLCciJyl9fWVsc2UgaWYoamEkMShkKSl7c3dpdGNoKHR5cGVvZiBtKXtjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6cmV0dXJuO2Nhc2UiYm9vbGVhbiI6aWYoImRhdGEtIiE9PShzPWQudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmImFyaWEtIiE9PXMpcmV0dXJufWUucHVzaCgiICIsZCwnPSInLHYobSksJyInKX19ZnVuY3Rpb24geSQxKGUscyxkKXtpZihudWxsIT1zKXtpZihudWxsIT1kKXRocm93IEVycm9yKGwkMig2MCkpO2lmKCJvYmplY3QiIT10eXBlb2Ygc3x8ISgiX19odG1sImluIHMpKXRocm93IEVycm9yKGwkMig2MSkpO251bGwhPShzPXMuX19odG1sKSYmZS5wdXNoKCIiK3MpfX1mdW5jdGlvbiB2YSQxKGUscyxkLG0pe2UucHVzaChBKGQpKTt2YXIgaCxnPWQ9bnVsbDtmb3IoaCBpbiBzKWlmKGRwLmNhbGwocyxoKSl7dmFyIHg9c1toXTtpZihudWxsIT14KXN3aXRjaChoKXtjYXNlImNoaWxkcmVuIjpkPXg7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6Zz14O2JyZWFrO2RlZmF1bHQ6eCQxKGUsbSxoLHgpfX1yZXR1cm4gZS5wdXNoKCI+IikseSQxKGUsZyxkKSwic3RyaW5nIj09dHlwZW9mIGQ/KGUucHVzaCh2KGQpKSxudWxsKTpkfXZhciBTcD0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxrcD1uZXcgTWFwO2Z1bmN0aW9uIEEoZSl7dmFyIHM9a3AuZ2V0KGUpO2lmKHZvaWQgMD09PXMpe2lmKCFTcC50ZXN0KGUpKXRocm93IEVycm9yKGwkMig2NSxlKSk7cz0iPCIrZSxrcC5zZXQoZSxzKX1yZXR1cm4gc31mdW5jdGlvbiB5YSQxKGUscyxkLG0saCl7c3dpdGNoKHMpe2Nhc2Uic2VsZWN0IjplLnB1c2goQSgic2VsZWN0IikpO3ZhciBnPW51bGwseD1udWxsO2Zvcih6IGluIGQpaWYoZHAuY2FsbChkLHopKXt2YXIgJD1kW3pdO2lmKG51bGwhPSQpc3dpdGNoKHope2Nhc2UiY2hpbGRyZW4iOmc9JDticmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp4PSQ7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOmNhc2UidmFsdWUiOmJyZWFrO2RlZmF1bHQ6eCQxKGUsbSx6LCQpfX1yZXR1cm4gZS5wdXNoKCI+IikseSQxKGUseCxnKSxnO2Nhc2Uib3B0aW9uIjp4PWguc2VsZWN0ZWRWYWx1ZSxlLnB1c2goQSgib3B0aW9uIikpO3ZhciBTPSQ9bnVsbCxqPW51bGwsej1udWxsO2ZvcihnIGluIGQpaWYoZHAuY2FsbChkLGcpKXt2YXIgST1kW2ddO2lmKG51bGwhPUkpc3dpdGNoKGcpe2Nhc2UiY2hpbGRyZW4iOiQ9STticmVhaztjYXNlInNlbGVjdGVkIjpqPUk7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6ej1JO2JyZWFrO2Nhc2UidmFsdWUiOlM9STtkZWZhdWx0OngkMShlLG0sZyxJKX19aWYobnVsbCE9eClpZihkPW51bGwhPT1TPyIiK1M6ZnVuY3Rpb24oZSl7dmFyIHM9IiI7cmV0dXJuIHVwLkNoaWxkcmVuLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxsIT1lJiYocys9ZSl9KSxzfSgkKSx3cCh4KSl7Zm9yKG09MDttPHgubGVuZ3RoO20rKylpZigiIit4W21dPT09ZCl7ZS5wdXNoKCcgc2VsZWN0ZWQ9IiInKTticmVha319ZWxzZSIiK3g9PT1kJiZlLnB1c2goJyBzZWxlY3RlZD0iIicpO2Vsc2UgaiYmZS5wdXNoKCcgc2VsZWN0ZWQ9IiInKTtyZXR1cm4gZS5wdXNoKCI+IikseSQxKGUseiwkKSwkO2Nhc2UidGV4dGFyZWEiOmZvcigkIGluIGUucHVzaChBKCJ0ZXh0YXJlYSIpKSx6PXg9Zz1udWxsLGQpaWYoZHAuY2FsbChkLCQpJiZudWxsIT0oUz1kWyRdKSlzd2l0Y2goJCl7Y2FzZSJjaGlsZHJlbiI6ej1TO2JyZWFrO2Nhc2UidmFsdWUiOmc9UzticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6eD1TO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGwkMig5MSkpO2RlZmF1bHQ6eCQxKGUsbSwkLFMpfWlmKG51bGw9PT1nJiZudWxsIT09eCYmKGc9eCksZS5wdXNoKCI+IiksbnVsbCE9eil7aWYobnVsbCE9Zyl0aHJvdyBFcnJvcihsJDIoOTIpKTtpZih3cCh6KSYmMTx6Lmxlbmd0aCl0aHJvdyBFcnJvcihsJDIoOTMpKTtnPSIiK3p9cmV0dXJuInN0cmluZyI9PXR5cGVvZiBnJiYiXG4iPT09Z1swXSYmZS5wdXNoKCJcbiIpLG51bGwhPT1nJiZlLnB1c2godigiIitnKSksbnVsbDtjYXNlImlucHV0Ijpmb3IoeCBpbiBlLnB1c2goQSgiaW5wdXQiKSksUz16PSQ9Zz1udWxsLGQpaWYoZHAuY2FsbChkLHgpJiZudWxsIT0oaj1kW3hdKSlzd2l0Y2goeCl7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IobCQyKDM5OSwiaW5wdXQiKSk7Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6Uz1qO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjokPWo7YnJlYWs7Y2FzZSJjaGVja2VkIjp6PWo7YnJlYWs7Y2FzZSJ2YWx1ZSI6Zz1qO2JyZWFrO2RlZmF1bHQ6eCQxKGUsbSx4LGopfXJldHVybiBudWxsIT09ej94JDEoZSxtLCJjaGVja2VkIix6KTpudWxsIT09UyYmeCQxKGUsbSwiY2hlY2tlZCIsUyksbnVsbCE9PWc/eCQxKGUsbSwidmFsdWUiLGcpOm51bGwhPT0kJiZ4JDEoZSxtLCJ2YWx1ZSIsJCksZS5wdXNoKCIvPiIpLG51bGw7Y2FzZSJtZW51aXRlbSI6Zm9yKHZhciBUIGluIGUucHVzaChBKCJtZW51aXRlbSIpKSxkKWlmKGRwLmNhbGwoZCxUKSYmbnVsbCE9KGc9ZFtUXSkpc3dpdGNoKFQpe2Nhc2UiY2hpbGRyZW4iOmNhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGwkMig0MDApKTtkZWZhdWx0OngkMShlLG0sVCxnKX1yZXR1cm4gZS5wdXNoKCI+IiksbnVsbDtjYXNlInRpdGxlIjpmb3IoSSBpbiBlLnB1c2goQSgidGl0bGUiKSksZz1udWxsLGQpaWYoZHAuY2FsbChkLEkpJiZudWxsIT0oeD1kW0ldKSlzd2l0Y2goSSl7Y2FzZSJjaGlsZHJlbiI6Zz14O2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGwkMig0MzQpKTtkZWZhdWx0OngkMShlLG0sSSx4KX1yZXR1cm4gZS5wdXNoKCI+IiksZztjYXNlImxpc3RpbmciOmNhc2UicHJlIjpmb3IoUyBpbiBlLnB1c2goQShzKSkseD1nPW51bGwsZClpZihkcC5jYWxsKGQsUykmJm51bGwhPSgkPWRbU10pKXN3aXRjaChTKXtjYXNlImNoaWxkcmVuIjpnPSQ7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6eD0kO2JyZWFrO2RlZmF1bHQ6eCQxKGUsbSxTLCQpfWlmKGUucHVzaCgiPiIpLG51bGwhPXgpe2lmKG51bGwhPWcpdGhyb3cgRXJyb3IobCQyKDYwKSk7aWYoIm9iamVjdCIhPXR5cGVvZiB4fHwhKCJfX2h0bWwiaW4geCkpdGhyb3cgRXJyb3IobCQyKDYxKSk7bnVsbCE9KGQ9eC5fX2h0bWwpJiYoInN0cmluZyI9PXR5cGVvZiBkJiYwPGQubGVuZ3RoJiYiXG4iPT09ZFswXT9lLnB1c2goIlxuIixkKTplLnB1c2goIiIrZCkpfXJldHVybiJzdHJpbmciPT10eXBlb2YgZyYmIlxuIj09PWdbMF0mJmUucHVzaCgiXG4iKSxnO2Nhc2UiYXJlYSI6Y2FzZSJiYXNlIjpjYXNlImJyIjpjYXNlImNvbCI6Y2FzZSJlbWJlZCI6Y2FzZSJociI6Y2FzZSJpbWciOmNhc2Uia2V5Z2VuIjpjYXNlImxpbmsiOmNhc2UibWV0YSI6Y2FzZSJwYXJhbSI6Y2FzZSJzb3VyY2UiOmNhc2UidHJhY2siOmNhc2Uid2JyIjpmb3IodmFyIFIgaW4gZS5wdXNoKEEocykpLGQpaWYoZHAuY2FsbChkLFIpJiZudWxsIT0oZz1kW1JdKSlzd2l0Y2goUil7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IobCQyKDM5OSxzKSk7ZGVmYXVsdDp4JDEoZSxtLFIsZyl9cmV0dXJuIGUucHVzaCgiLz4iKSxudWxsO2Nhc2UiYW5ub3RhdGlvbi14bWwiOmNhc2UiY29sb3ItcHJvZmlsZSI6Y2FzZSJmb250LWZhY2UiOmNhc2UiZm9udC1mYWNlLXNyYyI6Y2FzZSJmb250LWZhY2UtdXJpIjpjYXNlImZvbnQtZmFjZS1mb3JtYXQiOmNhc2UiZm9udC1mYWNlLW5hbWUiOmNhc2UibWlzc2luZy1nbHlwaCI6cmV0dXJuIHZhJDEoZSxkLHMsbSk7Y2FzZSJodG1sIjpyZXR1cm4gMD09PWguaW5zZXJ0aW9uTW9kZSYmZS5wdXNoKCI8IURPQ1RZUEUgaHRtbD4iKSx2YSQxKGUsZCxzLG0pO2RlZmF1bHQ6aWYoLTE9PT1zLmluZGV4T2YoIi0iKSYmInN0cmluZyIhPXR5cGVvZiBkLmlzKXJldHVybiB2YSQxKGUsZCxzLG0pO2ZvcihqIGluIGUucHVzaChBKHMpKSx4PWc9bnVsbCxkKWlmKGRwLmNhbGwoZCxqKSYmbnVsbCE9KCQ9ZFtqXSkpc3dpdGNoKGope2Nhc2UiY2hpbGRyZW4iOmc9JDticmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp4PSQ7YnJlYWs7Y2FzZSJzdHlsZSI6dGEkMShlLG0sJCk7YnJlYWs7Y2FzZSJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciOmNhc2Uic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIjpicmVhaztkZWZhdWx0OmphJDEoaikmJiJmdW5jdGlvbiIhPXR5cGVvZiAkJiYic3ltYm9sIiE9dHlwZW9mICQmJmUucHVzaCgiICIsaiwnPSInLHYoJCksJyInKX1yZXR1cm4gZS5wdXNoKCI+IikseSQxKGUseCxnKSxnfX1mdW5jdGlvbiB6YSQxKGUscyxkKXtpZihlLnB1c2goJ1x4M2MhLS0kPy0tXHgzZTx0ZW1wbGF0ZSBpZD0iJyksbnVsbD09PWQpdGhyb3cgRXJyb3IobCQyKDM5NSkpO3JldHVybiBlLnB1c2goZCksZS5wdXNoKCciPjwvdGVtcGxhdGU+Jyl9dmFyIGpwPS9bPFx1MjAyOFx1MjAyOV0vZztmdW5jdGlvbiBEYSQxKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKGpwLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIjwiOnJldHVybiJcXHUwMDNjIjtjYXNlIlx1MjAyOCI6cmV0dXJuIlxcdTIwMjgiO2Nhc2UiXHUyMDI5IjpyZXR1cm4iXFx1MjAyOSI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzIGVuY291bnRlcmVkIGEgbWF0Y2ggaXQgZG9lcyBub3Qga25vdyBob3cgdG8gcmVwbGFjZS4gdGhpcyBtZWFucyB0aGUgbWF0Y2ggcmVnZXggYW5kIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBubyBsb25nZXIgaW4gc3luYy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdCIpfX0pfWZ1bmN0aW9uIEZhJDEoZSxzLGQsbSl7cmV0dXJuIGQuZ2VuZXJhdGVTdGF0aWNNYXJrdXA/KGUucHVzaCh2KHMpKSwhMSk6KCIiPT09cz9lPW06KG0mJmUucHVzaCgiXHgzYyEtLSAtLVx4M2UiKSxlLnB1c2godihzKSksZT0hMCksZSl9dmFyIHpwPU9iamVjdC5hc3NpZ24sSXA9U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLENwPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLFRwPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksUnA9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxFcD1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLE9wPVN5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIiksUHA9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLE5wPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksRHA9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSxVcD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0IiksTHA9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLEFwPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxxcD1TeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpLEZwPVN5bWJvbC5mb3IoInJlYWN0LmRlYnVnX3RyYWNlX21vZGUiKSxCcD1TeW1ib2wuZm9yKCJyZWFjdC5sZWdhY3lfaGlkZGVuIiksWnA9U3ltYm9sLmZvcigicmVhY3QuZGVmYXVsdF92YWx1ZSIpLE1wPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBYYSQxKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7c3dpdGNoKGUpe2Nhc2UgVHA6cmV0dXJuIkZyYWdtZW50IjtjYXNlIENwOnJldHVybiJQb3J0YWwiO2Nhc2UgRXA6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIFJwOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIERwOnJldHVybiJTdXNwZW5zZSI7Y2FzZSBVcDpyZXR1cm4iU3VzcGVuc2VMaXN0In1pZigib2JqZWN0Ij09dHlwZW9mIGUpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgUHA6cmV0dXJuKGUuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSBPcDpyZXR1cm4oZS5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIE5wOnZhciBzPWUucmVuZGVyO3JldHVybihlPWUuZGlzcGxheU5hbWUpfHwoZT0iIiE9PShlPXMuZGlzcGxheU5hbWV8fHMubmFtZXx8IiIpPyJGb3J3YXJkUmVmKCIrZSsiKSI6IkZvcndhcmRSZWYiKSxlO2Nhc2UgTHA6cmV0dXJuIG51bGwhPT0ocz1lLmRpc3BsYXlOYW1lfHxudWxsKT9zOlhhJDEoZS50eXBlKXx8Ik1lbW8iO2Nhc2UgQXA6cz1lLl9wYXlsb2FkLGU9ZS5faW5pdDt0cnl7cmV0dXJuIFhhJDEoZShzKSl9Y2F0Y2goZSl7fX1yZXR1cm4gbnVsbH12YXIgUXA9e307ZnVuY3Rpb24gWmEkMShlLHMpe2lmKCEoZT1lLmNvbnRleHRUeXBlcykpcmV0dXJuIFFwO3ZhciBkLG09e307Zm9yKGQgaW4gZSltW2RdPXNbZF07cmV0dXJuIG19dmFyIFZwPW51bGw7ZnVuY3Rpb24gRihlLHMpe2lmKGUhPT1zKXtlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZTI9ZS5wYXJlbnRWYWx1ZSxlPWUucGFyZW50O3ZhciBkPXMucGFyZW50O2lmKG51bGw9PT1lKXtpZihudWxsIT09ZCl0aHJvdyBFcnJvcihsJDIoNDAxKSl9ZWxzZXtpZihudWxsPT09ZCl0aHJvdyBFcnJvcihsJDIoNDAxKSk7RihlLGQpfXMuY29udGV4dC5fY3VycmVudFZhbHVlMj1zLnZhbHVlfX1mdW5jdGlvbiAkYSQxKGUpe2UuY29udGV4dC5fY3VycmVudFZhbHVlMj1lLnBhcmVudFZhbHVlLG51bGwhPT0oZT1lLnBhcmVudCkmJiRhJDEoZSl9ZnVuY3Rpb24gYWIkMShlKXt2YXIgcz1lLnBhcmVudDtudWxsIT09cyYmYWIkMShzKSxlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZTI9ZS52YWx1ZX1mdW5jdGlvbiBiYiQxKGUscyl7aWYoZS5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPWUucGFyZW50VmFsdWUsbnVsbD09PShlPWUucGFyZW50KSl0aHJvdyBFcnJvcihsJDIoNDAyKSk7ZS5kZXB0aD09PXMuZGVwdGg/RihlLHMpOmJiJDEoZSxzKX1mdW5jdGlvbiBjYiQxKGUscyl7dmFyIGQ9cy5wYXJlbnQ7aWYobnVsbD09PWQpdGhyb3cgRXJyb3IobCQyKDQwMikpO2UuZGVwdGg9PT1kLmRlcHRoP0YoZSxkKTpjYiQxKGUsZCkscy5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPXMudmFsdWV9ZnVuY3Rpb24gRyhlKXt2YXIgcz1WcDtzIT09ZSYmKG51bGw9PT1zP2FiJDEoZSk6bnVsbD09PWU/JGEkMShzKTpzLmRlcHRoPT09ZS5kZXB0aD9GKHMsZSk6cy5kZXB0aD5lLmRlcHRoP2JiJDEocyxlKTpjYiQxKHMsZSksVnA9ZSl9dmFyIEhwPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUscyl7bnVsbCE9PShlPWUuX3JlYWN0SW50ZXJuYWxzKS5xdWV1ZSYmZS5xdWV1ZS5wdXNoKHMpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUscyl7KGU9ZS5fcmVhY3RJbnRlcm5hbHMpLnJlcGxhY2U9ITAsZS5xdWV1ZT1bc119LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIGViJDEoZSxzLGQsbSl7dmFyIGg9dm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGw7ZS51cGRhdGVyPUhwLGUucHJvcHM9ZCxlLnN0YXRlPWg7dmFyIGc9e3F1ZXVlOltdLHJlcGxhY2U6ITF9O2UuX3JlYWN0SW50ZXJuYWxzPWc7dmFyIHg9cy5jb250ZXh0VHlwZTtpZihlLmNvbnRleHQ9Im9iamVjdCI9PXR5cGVvZiB4JiZudWxsIT09eD94Ll9jdXJyZW50VmFsdWUyOm0sImZ1bmN0aW9uIj09dHlwZW9mKHg9cy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpJiYoaD1udWxsPT0oeD14KGQsaCkpP2g6enAoe30saCx4KSxlLnN0YXRlPWgpLCJmdW5jdGlvbiIhPXR5cGVvZiBzLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJigiZnVuY3Rpb24iPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50fHwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQpKWlmKHM9ZS5zdGF0ZSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkscyE9PWUuc3RhdGUmJkhwLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLG51bGwhPT1nLnF1ZXVlJiYwPGcucXVldWUubGVuZ3RoKWlmKHM9Zy5xdWV1ZSx4PWcucmVwbGFjZSxnLnF1ZXVlPW51bGwsZy5yZXBsYWNlPSExLHgmJjE9PT1zLmxlbmd0aCllLnN0YXRlPXNbMF07ZWxzZXtmb3IoZz14P3NbMF06ZS5zdGF0ZSxoPSEwLHg9eD8xOjA7eDxzLmxlbmd0aDt4Kyspe3ZhciAkPXNbeF07bnVsbCE9KCQ9ImZ1bmN0aW9uIj09dHlwZW9mICQ/JC5jYWxsKGUsZyxkLG0pOiQpJiYoaD8oaD0hMSxnPXpwKHt9LGcsJCkpOnpwKGcsJCkpfWUuc3RhdGU9Z31lbHNlIGcucXVldWU9bnVsbH12YXIgV3A9e2lkOjEsb3ZlcmZsb3c6IiJ9O2Z1bmN0aW9uIGdiJDEoZSxzLGQpe3ZhciBtPWUuaWQ7ZT1lLm92ZXJmbG93O3ZhciBoPTMyLUpwKG0pLTE7bSY9figxPDxoKSxkKz0xO3ZhciBnPTMyLUpwKHMpK2g7aWYoMzA8Zyl7dmFyIHg9aC1oJTU7cmV0dXJuIGc9KG0mKDE8PHgpLTEpLnRvU3RyaW5nKDMyKSxtPj49eCxoLT14LHtpZDoxPDwzMi1KcChzKStofGQ8PGh8bSxvdmVyZmxvdzpnK2V9fXJldHVybntpZDoxPDxnfGQ8PGh8bSxvdmVyZmxvdzplfX12YXIgSnA9TWF0aC5jbHozMj9NYXRoLmNsejMyOmZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU+Pj49MCk/MzI6MzEtKEtwKGUpL0dwfDApfDB9LEtwPU1hdGgubG9nLEdwPU1hdGguTE4yO3ZhciBYcD0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpmdW5jdGlvbihlLHMpe3JldHVybiBlPT09cyYmKDAhPT1lfHwxL2U9PTEvcyl8fGUhPWUmJnMhPXN9LFlwPW51bGwsZW09bnVsbCx0bT1udWxsLG5tPW51bGwsaW09ITEscm09ITEsb209MCxhbT1udWxsLHNtPTA7ZnVuY3Rpb24gUSQxKCl7aWYobnVsbD09PVlwKXRocm93IEVycm9yKGwkMigzMjEpKTtyZXR1cm4gWXB9ZnVuY3Rpb24gcGIkMSgpe2lmKDA8c20pdGhyb3cgRXJyb3IobCQyKDMxMikpO3JldHVybnttZW1vaXplZFN0YXRlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIHFiJDEoKXtyZXR1cm4gbnVsbD09PW5tP251bGw9PT10bT8oaW09ITEsdG09bm09cGIkMSgpKTooaW09ITAsbm09dG0pOm51bGw9PT1ubS5uZXh0PyhpbT0hMSxubT1ubS5uZXh0PXBiJDEoKSk6KGltPSEwLG5tPW5tLm5leHQpLG5tfWZ1bmN0aW9uIHJiJDEoKXtlbT1ZcD1udWxsLHJtPSExLHRtPW51bGwsc209MCxubT1hbT1udWxsfWZ1bmN0aW9uIHNiJDEoZSxzKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKGUpOnN9ZnVuY3Rpb24gdGIkMShlLHMsZCl7aWYoWXA9USQxKCksbm09cWIkMSgpLGltKXt2YXIgbT1ubS5xdWV1ZTtpZihzPW0uZGlzcGF0Y2gsbnVsbCE9PWFtJiZ2b2lkIDAhPT0oZD1hbS5nZXQobSkpKXthbS5kZWxldGUobSksbT1ubS5tZW1vaXplZFN0YXRlO2Rve209ZShtLGQuYWN0aW9uKSxkPWQubmV4dH13aGlsZShudWxsIT09ZCk7cmV0dXJuIG5tLm1lbW9pemVkU3RhdGU9bSxbbSxzXX1yZXR1cm5bbm0ubWVtb2l6ZWRTdGF0ZSxzXX1yZXR1cm4gZT1lPT09c2IkMT8iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKCk6czp2b2lkIDAhPT1kP2Qocyk6cyxubS5tZW1vaXplZFN0YXRlPWUsZT0oZT1ubS5xdWV1ZT17bGFzdDpudWxsLGRpc3BhdGNoOm51bGx9KS5kaXNwYXRjaD11YiQxLmJpbmQobnVsbCxZcCxlKSxbbm0ubWVtb2l6ZWRTdGF0ZSxlXX1mdW5jdGlvbiB2YiQxKGUscyl7aWYoWXA9USQxKCkscz12b2lkIDA9PT1zP251bGw6cyxudWxsIT09KG5tPXFiJDEoKSkpe3ZhciBkPW5tLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1zKXt2YXIgbT1kWzFdO2U6aWYobnVsbD09PW0pbT0hMTtlbHNle2Zvcih2YXIgaD0wO2g8bS5sZW5ndGgmJmg8cy5sZW5ndGg7aCsrKWlmKCFYcChzW2hdLG1baF0pKXttPSExO2JyZWFrIGV9bT0hMH1pZihtKXJldHVybiBkWzBdfX1yZXR1cm4gZT1lKCksbm0ubWVtb2l6ZWRTdGF0ZT1bZSxzXSxlfWZ1bmN0aW9uIHViJDEoZSxzLGQpe2lmKDI1PD1zbSl0aHJvdyBFcnJvcihsJDIoMzAxKSk7aWYoZT09PVlwKWlmKHJtPSEwLGU9e2FjdGlvbjpkLG5leHQ6bnVsbH0sbnVsbD09PWFtJiYoYW09bmV3IE1hcCksdm9pZCAwPT09KGQ9YW0uZ2V0KHMpKSlhbS5zZXQocyxlKTtlbHNle2ZvcihzPWQ7bnVsbCE9PXMubmV4dDspcz1zLm5leHQ7cy5uZXh0PWV9fWZ1bmN0aW9uIHdiJDEoKXt0aHJvdyBFcnJvcihsJDIoMzk0KSl9ZnVuY3Rpb24gUiQxKCl7fXZhciBsbT17cmVhZENvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2N1cnJlbnRWYWx1ZTJ9LHVzZUNvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFEkMSgpLGUuX2N1cnJlbnRWYWx1ZTJ9LHVzZU1lbW86dmIkMSx1c2VSZWR1Y2VyOnRiJDEsdXNlUmVmOmZ1bmN0aW9uKGUpe1lwPVEkMSgpO3ZhciBzPShubT1xYiQxKCkpLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGw9PT1zPyhlPXtjdXJyZW50OmV9LG5tLm1lbW9pemVkU3RhdGU9ZSk6c30sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRiJDEoc2IkMSxlKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OlIkMSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oKXt9LHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUscyl7cmV0dXJuIHZiJDEoZnVuY3Rpb24oKXtyZXR1cm4gZX0scyl9LHVzZUltcGVyYXRpdmVIYW5kbGU6UiQxLHVzZUVmZmVjdDpSJDEsdXNlRGVidWdWYWx1ZTpSJDEsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUSQxKCksZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiBRJDEoKSxbITEsd2IkMV19LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGU9ZW0udHJlZUNvbnRleHQscz1lLm92ZXJmbG93O2U9KChlPWUuaWQpJn4oMTw8MzItSnAoZSktMSkpLnRvU3RyaW5nKDMyKStzO3ZhciBkPWNtO2lmKG51bGw9PT1kKXRocm93IEVycm9yKGwkMig0MDQpKTtyZXR1cm4gcz1vbSsrLGU9IjoiK2QuaWRQcmVmaXgrIlIiK2UsMDxzJiYoZSs9IkgiK3MudG9TdHJpbmcoMzIpKSxlKyI6In0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbihlLHMpe3JldHVybiBRJDEoKSxzKGUuX3NvdXJjZSl9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGUscyxkKXtpZih2b2lkIDA9PT1kKXRocm93IEVycm9yKGwkMig0MDcpKTtyZXR1cm4gZCgpfX0sY209bnVsbCx1bT11cC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO2Z1bmN0aW9uIHpiJDEoZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoZSksbnVsbH1mdW5jdGlvbiBUJDEoKXt9ZnVuY3Rpb24gQmIkMShlLHMsZCxtLGgsZyx4LCQpe2UuYWxsUGVuZGluZ1Rhc2tzKyssbnVsbD09PWQ/ZS5wZW5kaW5nUm9vdFRhc2tzKys6ZC5wZW5kaW5nVGFza3MrKzt2YXIgUz17bm9kZTpzLHBpbmc6ZnVuY3Rpb24oKXt2YXIgcz1lLnBpbmdlZFRhc2tzO3MucHVzaChTKSwxPT09cy5sZW5ndGgmJkNiJDEoZSl9LGJsb2NrZWRCb3VuZGFyeTpkLGJsb2NrZWRTZWdtZW50Om0sYWJvcnRTZXQ6aCxsZWdhY3lDb250ZXh0OmcsY29udGV4dDp4LHRyZWVDb250ZXh0OiR9O3JldHVybiBoLmFkZChTKSxTfWZ1bmN0aW9uIFUkMShlLHMsZCxtLGgsZyl7cmV0dXJue3N0YXR1czowLGlkOi0xLGluZGV4OnMscGFyZW50Rmx1c2hlZDohMSxjaHVua3M6W10sY2hpbGRyZW46W10sZm9ybWF0Q29udGV4dDptLGJvdW5kYXJ5OmQsbGFzdFB1c2hlZFRleHQ6aCx0ZXh0RW1iZWRkZWQ6Z319ZnVuY3Rpb24gViQxKGUscyl7aWYobnVsbCE9KGU9ZS5vbkVycm9yKHMpKSYmInN0cmluZyIhPXR5cGVvZiBlKXRocm93IEVycm9yKCdvbkVycm9yIHJldHVybmVkIHNvbWV0aGluZyB3aXRoIGEgdHlwZSBvdGhlciB0aGFuICJzdHJpbmciLiBvbkVycm9yIHNob3VsZCByZXR1cm4gYSBzdHJpbmcgYW5kIG1heSByZXR1cm4gbnVsbCBvciB1bmRlZmluZWQgYnV0IG11c3Qgbm90IHJldHVybiBhbnl0aGluZyBlbHNlLiBJdCByZWNlaXZlZCBzb21ldGhpbmcgb2YgdHlwZSAiJyt0eXBlb2YgZSsnIiBpbnN0ZWFkJyk7cmV0dXJuIGV9ZnVuY3Rpb24gVyQxKGUscyl7dmFyIGQ9ZS5vblNoZWxsRXJyb3I7ZChzKSwoZD1lLm9uRmF0YWxFcnJvcikocyksbnVsbCE9PWUuZGVzdGluYXRpb24/KGUuc3RhdHVzPTIsZS5kZXN0aW5hdGlvbi5kZXN0cm95KHMpKTooZS5zdGF0dXM9MSxlLmZhdGFsRXJyb3I9cyl9ZnVuY3Rpb24gRGIkMShlLHMsZCxtLGgpe2ZvcihZcD17fSxlbT1zLG9tPTAsZT1kKG0saCk7cm07KXJtPSExLG9tPTAsc20rPTEsbm09bnVsbCxlPWQobSxoKTtyZXR1cm4gcmIkMSgpLGV9ZnVuY3Rpb24gRWIkMShlLHMsZCxtKXt2YXIgaD1kLnJlbmRlcigpLGc9bS5jaGlsZENvbnRleHRUeXBlcztpZihudWxsIT1nKXt2YXIgeD1zLmxlZ2FjeUNvbnRleHQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KW09eDtlbHNle2Zvcih2YXIgJCBpbiBkPWQuZ2V0Q2hpbGRDb250ZXh0KCkpaWYoISgkIGluIGcpKXRocm93IEVycm9yKGwkMigxMDgsWGEkMShtKXx8IlVua25vd24iLCQpKTttPXpwKHt9LHgsZCl9cy5sZWdhY3lDb250ZXh0PW0sWCQxKGUscyxoKSxzLmxlZ2FjeUNvbnRleHQ9eH1lbHNlIFgkMShlLHMsaCl9ZnVuY3Rpb24gRmIoZSxzKXtpZihlJiZlLmRlZmF1bHRQcm9wcyl7Zm9yKHZhciBkIGluIHM9enAoe30scyksZT1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1zW2RdJiYoc1tkXT1lW2RdKTtyZXR1cm4gc31yZXR1cm4gc31mdW5jdGlvbiBHYiQxKGUscyxkLG0saCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQpaWYoZC5wcm90b3R5cGUmJmQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpe2g9WmEkMShkLHMubGVnYWN5Q29udGV4dCk7dmFyIGc9ZC5jb250ZXh0VHlwZTtlYiQxKGc9bmV3IGQobSwib2JqZWN0Ij09dHlwZW9mIGcmJm51bGwhPT1nP2cuX2N1cnJlbnRWYWx1ZTI6aCksZCxtLGgpLEViJDEoZSxzLGcsZCl9ZWxzZXtoPURiJDEoZSxzLGQsbSxnPVphJDEoZCxzLmxlZ2FjeUNvbnRleHQpKTt2YXIgeD0wIT09b207aWYoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aCYmImZ1bmN0aW9uIj09dHlwZW9mIGgucmVuZGVyJiZ2b2lkIDA9PT1oLiQkdHlwZW9mKWViJDEoaCxkLG0sZyksRWIkMShlLHMsaCxkKTtlbHNlIGlmKHgpe209cy50cmVlQ29udGV4dCxzLnRyZWVDb250ZXh0PWdiJDEobSwxLDApO3RyeXtYJDEoZSxzLGgpfWZpbmFsbHl7cy50cmVlQ29udGV4dD1tfX1lbHNlIFgkMShlLHMsaCl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGQpe3N3aXRjaChkKXtjYXNlIEJwOmNhc2UgRnA6Y2FzZSBScDpjYXNlIEVwOmNhc2UgVHA6Y2FzZSBVcDpyZXR1cm4gdm9pZCBYJDEoZSxzLG0uY2hpbGRyZW4pO2Nhc2UgcXA6dGhyb3cgRXJyb3IobCQyKDM0MykpO2Nhc2UgRHA6ZTp7ZD1zLmJsb2NrZWRCb3VuZGFyeSxoPXMuYmxvY2tlZFNlZ21lbnQsZz1tLmZhbGxiYWNrLG09bS5jaGlsZHJlbjt2YXIgJD17aWQ6bnVsbCxyb290U2VnbWVudElEOi0xLHBhcmVudEZsdXNoZWQ6ITEscGVuZGluZ1Rhc2tzOjAsZm9yY2VDbGllbnRSZW5kZXI6ITEsY29tcGxldGVkU2VnbWVudHM6W10sYnl0ZVNpemU6MCxmYWxsYmFja0Fib3J0YWJsZVRhc2tzOng9bmV3IFNldCxlcnJvckRpZ2VzdDpudWxsfSxTPVUkMSgwLGguY2h1bmtzLmxlbmd0aCwkLGguZm9ybWF0Q29udGV4dCwhMSwhMSk7aC5jaGlsZHJlbi5wdXNoKFMpLGgubGFzdFB1c2hlZFRleHQ9ITE7dmFyIGo9VSQxKDAsMCxudWxsLGguZm9ybWF0Q29udGV4dCwhMSwhMSk7ai5wYXJlbnRGbHVzaGVkPSEwLHMuYmxvY2tlZEJvdW5kYXJ5PSQscy5ibG9ja2VkU2VnbWVudD1qO3RyeXtpZihIYiQxKGUscyxtKSxlLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fGoubGFzdFB1c2hlZFRleHQmJmoudGV4dEVtYmVkZGVkJiZqLmNodW5rcy5wdXNoKCJceDNjIS0tIC0tXHgzZSIpLGouc3RhdHVzPTEsWSQxKCQsaiksMD09PSQucGVuZGluZ1Rhc2tzKWJyZWFrIGV9Y2F0Y2gocyl7ai5zdGF0dXM9NCwkLmZvcmNlQ2xpZW50UmVuZGVyPSEwLCQuZXJyb3JEaWdlc3Q9ViQxKGUscyl9ZmluYWxseXtzLmJsb2NrZWRCb3VuZGFyeT1kLHMuYmxvY2tlZFNlZ21lbnQ9aH1zPUJiJDEoZSxnLGQsUyx4LHMubGVnYWN5Q29udGV4dCxzLmNvbnRleHQscy50cmVlQ29udGV4dCksZS5waW5nZWRUYXNrcy5wdXNoKHMpfXJldHVybn1pZigib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPT1kKXN3aXRjaChkLiQkdHlwZW9mKXtjYXNlIE5wOmlmKG09RGIkMShlLHMsZC5yZW5kZXIsbSxoKSwwIT09b20pe2Q9cy50cmVlQ29udGV4dCxzLnRyZWVDb250ZXh0PWdiJDEoZCwxLDApO3RyeXtYJDEoZSxzLG0pfWZpbmFsbHl7cy50cmVlQ29udGV4dD1kfX1lbHNlIFgkMShlLHMsbSk7cmV0dXJuO2Nhc2UgTHA6cmV0dXJuIHZvaWQgR2IkMShlLHMsZD1kLnR5cGUsbT1GYihkLG0pLGgpO2Nhc2UgT3A6aWYoaD1tLmNoaWxkcmVuLGQ9ZC5fY29udGV4dCxtPW0udmFsdWUsZz1kLl9jdXJyZW50VmFsdWUyLGQuX2N1cnJlbnRWYWx1ZTI9bSxWcD1tPXtwYXJlbnQ6eD1WcCxkZXB0aDpudWxsPT09eD8wOnguZGVwdGgrMSxjb250ZXh0OmQscGFyZW50VmFsdWU6Zyx2YWx1ZTptfSxzLmNvbnRleHQ9bSxYJDEoZSxzLGgpLG51bGw9PT0oZT1WcCkpdGhyb3cgRXJyb3IobCQyKDQwMykpO3JldHVybiBtPWUucGFyZW50VmFsdWUsZS5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPW09PT1acD9lLmNvbnRleHQuX2RlZmF1bHRWYWx1ZTptLGU9VnA9ZS5wYXJlbnQsdm9pZChzLmNvbnRleHQ9ZSk7Y2FzZSBQcDpyZXR1cm4gdm9pZCBYJDEoZSxzLG09KG09bS5jaGlsZHJlbikoZC5fY3VycmVudFZhbHVlMikpO2Nhc2UgQXA6cmV0dXJuIHZvaWQgR2IkMShlLHMsZD0oaD1kLl9pbml0KShkLl9wYXlsb2FkKSxtPUZiKGQsbSksdm9pZCAwKX10aHJvdyBFcnJvcihsJDIoMTMwLG51bGw9PWQ/ZDp0eXBlb2YgZCwiIikpfXN3aXRjaChnPXlhJDEoKGg9cy5ibG9ja2VkU2VnbWVudCkuY2h1bmtzLGQsbSxlLnJlc3BvbnNlU3RhdGUsaC5mb3JtYXRDb250ZXh0KSxoLmxhc3RQdXNoZWRUZXh0PSExLHg9aC5mb3JtYXRDb250ZXh0LGguZm9ybWF0Q29udGV4dD1mdW5jdGlvbihlLHMsZCl7c3dpdGNoKHMpe2Nhc2Uic2VsZWN0IjpyZXR1cm4gdyQxKDEsbnVsbCE9ZC52YWx1ZT9kLnZhbHVlOmQuZGVmYXVsdFZhbHVlKTtjYXNlInN2ZyI6cmV0dXJuIHckMSgyLG51bGwpO2Nhc2UibWF0aCI6cmV0dXJuIHckMSgzLG51bGwpO2Nhc2UiZm9yZWlnbk9iamVjdCI6cmV0dXJuIHckMSgxLG51bGwpO2Nhc2UidGFibGUiOnJldHVybiB3JDEoNCxudWxsKTtjYXNlInRoZWFkIjpjYXNlInRib2R5IjpjYXNlInRmb290IjpyZXR1cm4gdyQxKDUsbnVsbCk7Y2FzZSJjb2xncm91cCI6cmV0dXJuIHckMSg3LG51bGwpO2Nhc2UidHIiOnJldHVybiB3JDEoNixudWxsKX1yZXR1cm4gNDw9ZS5pbnNlcnRpb25Nb2RlfHwwPT09ZS5pbnNlcnRpb25Nb2RlP3ckMSgxLG51bGwpOmV9KHgsZCxtKSxIYiQxKGUscyxnKSxoLmZvcm1hdENvbnRleHQ9eCxkKXtjYXNlImFyZWEiOmNhc2UiYmFzZSI6Y2FzZSJiciI6Y2FzZSJjb2wiOmNhc2UiZW1iZWQiOmNhc2UiaHIiOmNhc2UiaW1nIjpjYXNlImlucHV0IjpjYXNlImtleWdlbiI6Y2FzZSJsaW5rIjpjYXNlIm1ldGEiOmNhc2UicGFyYW0iOmNhc2Uic291cmNlIjpjYXNlInRyYWNrIjpjYXNlIndiciI6YnJlYWs7ZGVmYXVsdDpoLmNodW5rcy5wdXNoKCI8LyIsZCwiPiIpfWgubGFzdFB1c2hlZFRleHQ9ITF9fWZ1bmN0aW9uIFgkMShlLHMsZCl7aWYocy5ub2RlPWQsIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgSXA6cmV0dXJuIHZvaWQgR2IkMShlLHMsZC50eXBlLGQucHJvcHMsZC5yZWYpO2Nhc2UgQ3A6dGhyb3cgRXJyb3IobCQyKDI1NykpO2Nhc2UgQXA6dmFyIG09ZC5faW5pdDtyZXR1cm4gdm9pZCBYJDEoZSxzLGQ9bShkLl9wYXlsb2FkKSl9aWYod3AoZCkpcmV0dXJuIHZvaWQgSWIkMShlLHMsZCk7aWYobnVsbD09PWR8fCJvYmplY3QiIT10eXBlb2YgZD9tPW51bGw6bT0iZnVuY3Rpb24iPT10eXBlb2YobT1NcCYmZFtNcF18fGRbIkBAaXRlcmF0b3IiXSk/bTpudWxsLG0mJihtPW0uY2FsbChkKSkpe2lmKCEoZD1tLm5leHQoKSkuZG9uZSl7dmFyIGg9W107ZG97aC5wdXNoKGQudmFsdWUpLGQ9bS5uZXh0KCl9d2hpbGUoIWQuZG9uZSk7SWIkMShlLHMsaCl9cmV0dXJufXRocm93IGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLEVycm9yKGwkMigzMSwiW29iamVjdCBPYmplY3RdIj09PWU/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZCkuam9pbigiLCAiKSsifSI6ZSkpfSJzdHJpbmciPT10eXBlb2YgZD8obT1zLmJsb2NrZWRTZWdtZW50KS5sYXN0UHVzaGVkVGV4dD1GYSQxKHMuYmxvY2tlZFNlZ21lbnQuY2h1bmtzLGQsZS5yZXNwb25zZVN0YXRlLG0ubGFzdFB1c2hlZFRleHQpOiJudW1iZXIiPT10eXBlb2YgZCYmKChtPXMuYmxvY2tlZFNlZ21lbnQpLmxhc3RQdXNoZWRUZXh0PUZhJDEocy5ibG9ja2VkU2VnbWVudC5jaHVua3MsIiIrZCxlLnJlc3BvbnNlU3RhdGUsbS5sYXN0UHVzaGVkVGV4dCkpfWZ1bmN0aW9uIEliJDEoZSxzLGQpe2Zvcih2YXIgbT1kLmxlbmd0aCxoPTA7aDxtO2grKyl7dmFyIGc9cy50cmVlQ29udGV4dDtzLnRyZWVDb250ZXh0PWdiJDEoZyxtLGgpO3RyeXtIYiQxKGUscyxkW2hdKX1maW5hbGx5e3MudHJlZUNvbnRleHQ9Z319fWZ1bmN0aW9uIEhiJDEoZSxzLGQpe3ZhciBtPXMuYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dCxoPXMubGVnYWN5Q29udGV4dCxnPXMuY29udGV4dDt0cnl7cmV0dXJuIFgkMShlLHMsZCl9Y2F0Y2goUyl7aWYocmIkMSgpLCJvYmplY3QiIT10eXBlb2YgU3x8bnVsbD09PVN8fCJmdW5jdGlvbiIhPXR5cGVvZiBTLnRoZW4pdGhyb3cgcy5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0PW0scy5sZWdhY3lDb250ZXh0PWgscy5jb250ZXh0PWcsRyhnKSxTO2Q9Uzt2YXIgeD1zLmJsb2NrZWRTZWdtZW50LCQ9VSQxKDAseC5jaHVua3MubGVuZ3RoLG51bGwseC5mb3JtYXRDb250ZXh0LHgubGFzdFB1c2hlZFRleHQsITApO3guY2hpbGRyZW4ucHVzaCgkKSx4Lmxhc3RQdXNoZWRUZXh0PSExLGU9QmIkMShlLHMubm9kZSxzLmJsb2NrZWRCb3VuZGFyeSwkLHMuYWJvcnRTZXQscy5sZWdhY3lDb250ZXh0LHMuY29udGV4dCxzLnRyZWVDb250ZXh0KS5waW5nLGQudGhlbihlLGUpLHMuYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dD1tLHMubGVnYWN5Q29udGV4dD1oLHMuY29udGV4dD1nLEcoZyl9fWZ1bmN0aW9uIEpiJDEoZSl7dmFyIHM9ZS5ibG9ja2VkQm91bmRhcnk7KGU9ZS5ibG9ja2VkU2VnbWVudCkuc3RhdHVzPTMsS2IkMSh0aGlzLHMsZSl9ZnVuY3Rpb24gTGIkMShlLHMsZCl7dmFyIG09ZS5ibG9ja2VkQm91bmRhcnk7ZS5ibG9ja2VkU2VnbWVudC5zdGF0dXM9MyxudWxsPT09bT8ocy5hbGxQZW5kaW5nVGFza3MtLSwyIT09cy5zdGF0dXMmJihzLnN0YXR1cz0yLG51bGwhPT1zLmRlc3RpbmF0aW9uJiZzLmRlc3RpbmF0aW9uLnB1c2gobnVsbCkpKToobS5wZW5kaW5nVGFza3MtLSxtLmZvcmNlQ2xpZW50UmVuZGVyfHwobS5mb3JjZUNsaWVudFJlbmRlcj0hMCxlPXZvaWQgMD09PWQ/RXJyb3IobCQyKDQzMikpOmQsbS5lcnJvckRpZ2VzdD1zLm9uRXJyb3IoZSksbS5wYXJlbnRGbHVzaGVkJiZzLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKG0pKSxtLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gTGIkMShlLHMsZCl9KSxtLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuY2xlYXIoKSxzLmFsbFBlbmRpbmdUYXNrcy0tLDA9PT1zLmFsbFBlbmRpbmdUYXNrcyYmKG09cy5vbkFsbFJlYWR5KSgpKX1mdW5jdGlvbiBZJDEoZSxzKXtpZigwPT09cy5jaHVua3MubGVuZ3RoJiYxPT09cy5jaGlsZHJlbi5sZW5ndGgmJm51bGw9PT1zLmNoaWxkcmVuWzBdLmJvdW5kYXJ5KXt2YXIgZD1zLmNoaWxkcmVuWzBdO2QuaWQ9cy5pZCxkLnBhcmVudEZsdXNoZWQ9ITAsMT09PWQuc3RhdHVzJiZZJDEoZSxkKX1lbHNlIGUuY29tcGxldGVkU2VnbWVudHMucHVzaChzKX1mdW5jdGlvbiBLYiQxKGUscyxkKXtpZihudWxsPT09cyl7aWYoZC5wYXJlbnRGbHVzaGVkKXtpZihudWxsIT09ZS5jb21wbGV0ZWRSb290U2VnbWVudCl0aHJvdyBFcnJvcihsJDIoMzg5KSk7ZS5jb21wbGV0ZWRSb290U2VnbWVudD1kfWUucGVuZGluZ1Jvb3RUYXNrcy0tLDA9PT1lLnBlbmRpbmdSb290VGFza3MmJihlLm9uU2hlbGxFcnJvcj1UJDEsKHM9ZS5vblNoZWxsUmVhZHkpKCkpfWVsc2Ugcy5wZW5kaW5nVGFza3MtLSxzLmZvcmNlQ2xpZW50UmVuZGVyfHwoMD09PXMucGVuZGluZ1Rhc2tzPyhkLnBhcmVudEZsdXNoZWQmJjE9PT1kLnN0YXR1cyYmWSQxKHMsZCkscy5wYXJlbnRGbHVzaGVkJiZlLmNvbXBsZXRlZEJvdW5kYXJpZXMucHVzaChzKSxzLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuZm9yRWFjaChKYiQxLGUpLHMuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpKTpkLnBhcmVudEZsdXNoZWQmJjE9PT1kLnN0YXR1cyYmKFkkMShzLGQpLDE9PT1zLmNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aCYmcy5wYXJlbnRGbHVzaGVkJiZlLnBhcnRpYWxCb3VuZGFyaWVzLnB1c2gocykpKTtlLmFsbFBlbmRpbmdUYXNrcy0tLDA9PT1lLmFsbFBlbmRpbmdUYXNrcyYmKGU9ZS5vbkFsbFJlYWR5KSgpfWZ1bmN0aW9uIENiJDEoZSl7aWYoMiE9PWUuc3RhdHVzKXt2YXIgcz1WcCxkPXVtLmN1cnJlbnQ7dW0uY3VycmVudD1sbTt2YXIgbT1jbTtjbT1lLnJlc3BvbnNlU3RhdGU7dHJ5e3ZhciBoLGc9ZS5waW5nZWRUYXNrcztmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgeD1nW2hdLCQ9ZSxTPXguYmxvY2tlZFNlZ21lbnQ7aWYoMD09PVMuc3RhdHVzKXtHKHguY29udGV4dCk7dHJ5e1gkMSgkLHgseC5ub2RlKSwkLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fFMubGFzdFB1c2hlZFRleHQmJlMudGV4dEVtYmVkZGVkJiZTLmNodW5rcy5wdXNoKCJceDNjIS0tIC0tXHgzZSIpLHguYWJvcnRTZXQuZGVsZXRlKHgpLFMuc3RhdHVzPTEsS2IkMSgkLHguYmxvY2tlZEJvdW5kYXJ5LFMpfWNhdGNoKGUpe2lmKHJiJDEoKSwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuKXt2YXIgaj14LnBpbmc7ZS50aGVuKGosail9ZWxzZXt4LmFib3J0U2V0LmRlbGV0ZSh4KSxTLnN0YXR1cz00O3ZhciB6PXguYmxvY2tlZEJvdW5kYXJ5LEk9ZSxUPVYkMSgkLEkpO2lmKG51bGw9PT16P1ckMSgkLEkpOih6LnBlbmRpbmdUYXNrcy0tLHouZm9yY2VDbGllbnRSZW5kZXJ8fCh6LmZvcmNlQ2xpZW50UmVuZGVyPSEwLHouZXJyb3JEaWdlc3Q9VCx6LnBhcmVudEZsdXNoZWQmJiQuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnB1c2goeikpKSwkLmFsbFBlbmRpbmdUYXNrcy0tLDA9PT0kLmFsbFBlbmRpbmdUYXNrcykoMCwkLm9uQWxsUmVhZHkpKCl9fX19Zy5zcGxpY2UoMCxoKSxudWxsIT09ZS5kZXN0aW5hdGlvbiYmTWIkMShlLGUuZGVzdGluYXRpb24pfWNhdGNoKHMpe1YkMShlLHMpLFckMShlLHMpfWZpbmFsbHl7Y209bSx1bS5jdXJyZW50PWQsZD09PWxtJiZHKHMpfX19ZnVuY3Rpb24gWiQxKGUscyxkKXtzd2l0Y2goZC5wYXJlbnRGbHVzaGVkPSEwLGQuc3RhdHVzKXtjYXNlIDA6dmFyIG09ZC5pZD1lLm5leHRTZWdtZW50SWQrKztyZXR1cm4gZC5sYXN0UHVzaGVkVGV4dD0hMSxkLnRleHRFbWJlZGRlZD0hMSxlPWUucmVzcG9uc2VTdGF0ZSxzLnB1c2goJzx0ZW1wbGF0ZSBpZD0iJykscy5wdXNoKGUucGxhY2Vob2xkZXJQcmVmaXgpLGU9bS50b1N0cmluZygxNikscy5wdXNoKGUpLHMucHVzaCgnIj48L3RlbXBsYXRlPicpO2Nhc2UgMTpkLnN0YXR1cz0yO3ZhciBoPSEwO209ZC5jaHVua3M7dmFyIGc9MDtkPWQuY2hpbGRyZW47Zm9yKHZhciB4PTA7eDxkLmxlbmd0aDt4Kyspe2ZvcihoPWRbeF07ZzxoLmluZGV4O2crKylzLnB1c2gobVtnXSk7aD1OYiQxKGUscyxoKX1mb3IoO2c8bS5sZW5ndGgtMTtnKyspcy5wdXNoKG1bZ10pO3JldHVybiBnPG0ubGVuZ3RoJiYoaD1zLnB1c2gobVtnXSkpLGg7ZGVmYXVsdDp0aHJvdyBFcnJvcihsJDIoMzkwKSl9fWZ1bmN0aW9uIE5iJDEoZSxzLGQpe3ZhciBtPWQuYm91bmRhcnk7aWYobnVsbD09PW0pcmV0dXJuIFokMShlLHMsZCk7aWYobS5wYXJlbnRGbHVzaGVkPSEwLG0uZm9yY2VDbGllbnRSZW5kZXIpcmV0dXJuIGUucmVzcG9uc2VTdGF0ZS5nZW5lcmF0ZVN0YXRpY01hcmt1cHx8KG09bS5lcnJvckRpZ2VzdCxzLnB1c2goIlx4M2MhLS0kIS0tXHgzZSIpLHMucHVzaCgiPHRlbXBsYXRlIiksbSYmKHMucHVzaCgnIGRhdGEtZGdzdD0iJyksbT12KG0pLHMucHVzaChtKSxzLnB1c2goJyInKSkscy5wdXNoKCI+PC90ZW1wbGF0ZT4iKSksWiQxKGUscyxkKSxlPSEhZS5yZXNwb25zZVN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwfHxzLnB1c2goIlx4M2MhLS0vJC0tXHgzZSIpO2lmKDA8bS5wZW5kaW5nVGFza3Mpe20ucm9vdFNlZ21lbnRJRD1lLm5leHRTZWdtZW50SWQrKywwPG0uY29tcGxldGVkU2VnbWVudHMubGVuZ3RoJiZlLnBhcnRpYWxCb3VuZGFyaWVzLnB1c2gobSk7dmFyIGg9ZS5yZXNwb25zZVN0YXRlLGc9aC5uZXh0U3VzcGVuc2VJRCsrO3JldHVybiBoPWguYm91bmRhcnlQcmVmaXgrZy50b1N0cmluZygxNiksbT1tLmlkPWgsemEkMShzLGUucmVzcG9uc2VTdGF0ZSxtKSxaJDEoZSxzLGQpLHMucHVzaCgiXHgzYyEtLS8kLS1ceDNlIil9aWYobS5ieXRlU2l6ZT5lLnByb2dyZXNzaXZlQ2h1bmtTaXplKXJldHVybiBtLnJvb3RTZWdtZW50SUQ9ZS5uZXh0U2VnbWVudElkKyssZS5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2gobSksemEkMShzLGUucmVzcG9uc2VTdGF0ZSxtLmlkKSxaJDEoZSxzLGQpLHMucHVzaCgiXHgzYyEtLS8kLS1ceDNlIik7aWYoZS5yZXNwb25zZVN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwfHxzLnB1c2goIlx4M2MhLS0kLS1ceDNlIiksMSE9PShkPW0uY29tcGxldGVkU2VnbWVudHMpLmxlbmd0aCl0aHJvdyBFcnJvcihsJDIoMzkxKSk7cmV0dXJuIE5iJDEoZSxzLGRbMF0pLGU9ISFlLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fHMucHVzaCgiXHgzYyEtLS8kLS1ceDNlIil9ZnVuY3Rpb24gT2IkMShlLHMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUscyxkLG0pe3N3aXRjaChkLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIGUucHVzaCgnPGRpdiBoaWRkZW4gaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDI6cmV0dXJuIGUucHVzaCgnPHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDM6cmV0dXJuIGUucHVzaCgnPG1hdGggYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGlkPSInKSxlLnB1c2gocy5zZWdtZW50UHJlZml4KSxzPW0udG9TdHJpbmcoMTYpLGUucHVzaChzKSxlLnB1c2goJyI+Jyk7Y2FzZSA0OnJldHVybiBlLnB1c2goJzx0YWJsZSBoaWRkZW4gaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDU6cmV0dXJuIGUucHVzaCgnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDY6cmV0dXJuIGUucHVzaCgnPHRhYmxlIGhpZGRlbj48dHIgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtjYXNlIDc6cmV0dXJuIGUucHVzaCgnPHRhYmxlIGhpZGRlbj48Y29sZ3JvdXAgaWQ9IicpLGUucHVzaChzLnNlZ21lbnRQcmVmaXgpLHM9bS50b1N0cmluZygxNiksZS5wdXNoKHMpLGUucHVzaCgnIj4nKTtkZWZhdWx0OnRocm93IEVycm9yKGwkMigzOTcpKX19KHMsZS5yZXNwb25zZVN0YXRlLGQuZm9ybWF0Q29udGV4dCxkLmlkKSxOYiQxKGUscyxkKSxmdW5jdGlvbihlLHMpe3N3aXRjaChzLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIGUucHVzaCgiPC9kaXY+Iik7Y2FzZSAyOnJldHVybiBlLnB1c2goIjwvc3ZnPiIpO2Nhc2UgMzpyZXR1cm4gZS5wdXNoKCI8L21hdGg+Iik7Y2FzZSA0OnJldHVybiBlLnB1c2goIjwvdGFibGU+Iik7Y2FzZSA1OnJldHVybiBlLnB1c2goIjwvdGJvZHk+PC90YWJsZT4iKTtjYXNlIDY6cmV0dXJuIGUucHVzaCgiPC90cj48L3RhYmxlPiIpO2Nhc2UgNzpyZXR1cm4gZS5wdXNoKCI8L2NvbGdyb3VwPjwvdGFibGU+Iik7ZGVmYXVsdDp0aHJvdyBFcnJvcihsJDIoMzk3KSl9fShzLGQuZm9ybWF0Q29udGV4dCl9ZnVuY3Rpb24gUGIkMShlLHMsZCl7Zm9yKHZhciBtPWQuY29tcGxldGVkU2VnbWVudHMsaD0wO2g8bS5sZW5ndGg7aCsrKVFiJDEoZSxzLGQsbVtoXSk7aWYobS5sZW5ndGg9MCxlPWUucmVzcG9uc2VTdGF0ZSxtPWQuaWQsZD1kLnJvb3RTZWdtZW50SUQscy5wdXNoKGUuc3RhcnRJbmxpbmVTY3JpcHQpLGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj9zLnB1c2goJyRSQygiJyk6KGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj0hMCxzLnB1c2goJ2Z1bmN0aW9uICRSQyhhLGIpe2E9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYik7aWYoYSl7YT1hLnByZXZpb3VzU2libGluZzt2YXIgZj1hLnBhcmVudE5vZGUsYz1hLm5leHRTaWJsaW5nLGU9MDtkb3tpZihjJiY4PT09Yy5ub2RlVHlwZSl7dmFyIGQ9Yy5kYXRhO2lmKCIvJCI9PT1kKWlmKDA9PT1lKWJyZWFrO2Vsc2UgZS0tO2Vsc2UiJCIhPT1kJiYiJD8iIT09ZCYmIiQhIiE9PWR8fGUrK31kPWMubmV4dFNpYmxpbmc7Zi5yZW1vdmVDaGlsZChjKTtjPWR9d2hpbGUoYyk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWYuaW5zZXJ0QmVmb3JlKGIuZmlyc3RDaGlsZCxjKTthLmRhdGE9IiQiO2EuX3JlYWN0UmV0cnkmJmEuX3JlYWN0UmV0cnkoKX19OyRSQygiJykpLG51bGw9PT1tKXRocm93IEVycm9yKGwkMigzOTUpKTtyZXR1cm4gZD1kLnRvU3RyaW5nKDE2KSxzLnB1c2gobSkscy5wdXNoKCciLCInKSxzLnB1c2goZS5zZWdtZW50UHJlZml4KSxzLnB1c2goZCkscy5wdXNoKCciKTxcL3NjcmlwdD4nKX1mdW5jdGlvbiBRYiQxKGUscyxkLG0pe2lmKDI9PT1tLnN0YXR1cylyZXR1cm4hMDt2YXIgaD1tLmlkO2lmKC0xPT09aCl7aWYoLTE9PT0obS5pZD1kLnJvb3RTZWdtZW50SUQpKXRocm93IEVycm9yKGwkMigzOTIpKTtyZXR1cm4gT2IkMShlLHMsbSl9cmV0dXJuIE9iJDEoZSxzLG0pLGU9ZS5yZXNwb25zZVN0YXRlLHMucHVzaChlLnN0YXJ0SW5saW5lU2NyaXB0KSxlLnNlbnRDb21wbGV0ZVNlZ21lbnRGdW5jdGlvbj9zLnB1c2goJyRSUygiJyk6KGUuc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uPSEwLHMucHVzaCgnZnVuY3Rpb24gJFJTKGEsYil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2ZvcihhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk7YS5maXJzdENoaWxkOyliLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEuZmlyc3RDaGlsZCxiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9OyRSUygiJykpLHMucHVzaChlLnNlZ21lbnRQcmVmaXgpLGg9aC50b1N0cmluZygxNikscy5wdXNoKGgpLHMucHVzaCgnIiwiJykscy5wdXNoKGUucGxhY2Vob2xkZXJQcmVmaXgpLHMucHVzaChoKSxzLnB1c2goJyIpPFwvc2NyaXB0PicpfWZ1bmN0aW9uIE1iJDEoZSxzKXt0cnl7dmFyIGQ9ZS5jb21wbGV0ZWRSb290U2VnbWVudDtpZihudWxsIT09ZCYmMD09PWUucGVuZGluZ1Jvb3RUYXNrcyl7TmIkMShlLHMsZCksZS5jb21wbGV0ZWRSb290U2VnbWVudD1udWxsO3ZhciBtPWUucmVzcG9uc2VTdGF0ZS5ib290c3RyYXBDaHVua3M7Zm9yKGQ9MDtkPG0ubGVuZ3RoLTE7ZCsrKXMucHVzaChtW2RdKTtkPG0ubGVuZ3RoJiZzLnB1c2gobVtkXSl9dmFyIGgsZz1lLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcztmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgeD1nW2hdO209czt2YXIgJD1lLnJlc3BvbnNlU3RhdGUsUz14LmlkLGo9eC5lcnJvckRpZ2VzdCx6PXguZXJyb3JNZXNzYWdlLEk9eC5lcnJvckNvbXBvbmVudFN0YWNrO2lmKG0ucHVzaCgkLnN0YXJ0SW5saW5lU2NyaXB0KSwkLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj9tLnB1c2goJyRSWCgiJyk6KCQuc2VudENsaWVudFJlbmRlckZ1bmN0aW9uPSEwLG0ucHVzaCgnZnVuY3Rpb24gJFJYKGIsYyxkLGUpe3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2EmJihiPWEucHJldmlvdXNTaWJsaW5nLGIuZGF0YT0iJCEiLGE9YS5kYXRhc2V0LGMmJihhLmRnc3Q9YyksZCYmKGEubXNnPWQpLGUmJihhLnN0Y2s9ZSksYi5fcmVhY3RSZXRyeSYmYi5fcmVhY3RSZXRyeSgpKX07JFJYKCInKSksbnVsbD09PVMpdGhyb3cgRXJyb3IobCQyKDM5NSkpO2lmKG0ucHVzaChTKSxtLnB1c2goJyInKSxqfHx6fHxJKXttLnB1c2goIiwiKTt2YXIgVD1EYSQxKGp8fCIiKTttLnB1c2goVCl9aWYoenx8SSl7bS5wdXNoKCIsIik7dmFyIFI9RGEkMSh6fHwiIik7bS5wdXNoKFIpfWlmKEkpe20ucHVzaCgiLCIpO3ZhciBFPURhJDEoSSk7bS5wdXNoKEUpfWlmKCFtLnB1c2goIik8XC9zY3JpcHQ+IikpcmV0dXJuIGUuZGVzdGluYXRpb249bnVsbCxoKyssdm9pZCBnLnNwbGljZSgwLGgpfWcuc3BsaWNlKDAsaCk7dmFyIE89ZS5jb21wbGV0ZWRCb3VuZGFyaWVzO2ZvcihoPTA7aDxPLmxlbmd0aDtoKyspaWYoIVBiJDEoZSxzLE9baF0pKXJldHVybiBlLmRlc3RpbmF0aW9uPW51bGwsaCsrLHZvaWQgTy5zcGxpY2UoMCxoKTtPLnNwbGljZSgwLGgpO3ZhciBOPWUucGFydGlhbEJvdW5kYXJpZXM7Zm9yKGg9MDtoPE4ubGVuZ3RoO2grKyl7dmFyIFU9TltoXTtlOntnPWUseD1zO3ZhciBCPVUuY29tcGxldGVkU2VnbWVudHM7Zm9yKCQ9MDskPEIubGVuZ3RoOyQrKylpZighUWIkMShnLHgsVSxCWyRdKSl7JCsrLEIuc3BsaWNlKDAsJCk7dmFyIFY9ITE7YnJlYWsgZX1CLnNwbGljZSgwLCQpLFY9ITB9aWYoIVYpcmV0dXJuIGUuZGVzdGluYXRpb249bnVsbCxoKyssdm9pZCBOLnNwbGljZSgwLGgpfU4uc3BsaWNlKDAsaCk7dmFyIEg9ZS5jb21wbGV0ZWRCb3VuZGFyaWVzO2ZvcihoPTA7aDxILmxlbmd0aDtoKyspaWYoIVBiJDEoZSxzLEhbaF0pKXJldHVybiBlLmRlc3RpbmF0aW9uPW51bGwsaCsrLHZvaWQgSC5zcGxpY2UoMCxoKTtILnNwbGljZSgwLGgpfWZpbmFsbHl7MD09PWUuYWxsUGVuZGluZ1Rhc2tzJiYwPT09ZS5waW5nZWRUYXNrcy5sZW5ndGgmJjA9PT1lLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5sZW5ndGgmJjA9PT1lLmNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoJiZzLnB1c2gobnVsbCl9fWZ1bmN0aW9uIFJiJDEoZSxzKXt0cnl7dmFyIGQ9ZS5hYm9ydGFibGVUYXNrcztkLmZvckVhY2goZnVuY3Rpb24oZCl7cmV0dXJuIExiJDEoZCxlLHMpfSksZC5jbGVhcigpLG51bGwhPT1lLmRlc3RpbmF0aW9uJiZNYiQxKGUsZS5kZXN0aW5hdGlvbil9Y2F0Y2gocyl7ViQxKGUscyksVyQxKGUscyl9fWZ1bmN0aW9uIFNiJDEoKXt9ZnVuY3Rpb24gVGIkMShlLHMsZCxtKXt2YXIgaD0hMSxnPW51bGwseD0iIiwkPXtwdXNoOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmKHgrPWUpLCEwfSxkZXN0cm95OmZ1bmN0aW9uKGUpe2g9ITAsZz1lfX0sUz0hMTtpZihlPWZ1bmN0aW9uKGUscyxkLG0saCxnLHgpe3ZhciAkPVtdLFM9bmV3IFNldDtyZXR1cm4oZD1VJDEocz17ZGVzdGluYXRpb246bnVsbCxyZXNwb25zZVN0YXRlOnMscHJvZ3Jlc3NpdmVDaHVua1NpemU6dm9pZCAwPT09bT8xMjgwMDptLHN0YXR1czowLGZhdGFsRXJyb3I6bnVsbCxuZXh0U2VnbWVudElkOjAsYWxsUGVuZGluZ1Rhc2tzOjAscGVuZGluZ1Jvb3RUYXNrczowLGNvbXBsZXRlZFJvb3RTZWdtZW50Om51bGwsYWJvcnRhYmxlVGFza3M6UyxwaW5nZWRUYXNrczokLGNsaWVudFJlbmRlcmVkQm91bmRhcmllczpbXSxjb21wbGV0ZWRCb3VuZGFyaWVzOltdLHBhcnRpYWxCb3VuZGFyaWVzOltdLG9uRXJyb3I6dm9pZCAwPT09aD96YiQxOmgsb25BbGxSZWFkeTpUJDEsb25TaGVsbFJlYWR5OnZvaWQgMD09PXg/VCQxOngsb25TaGVsbEVycm9yOlQkMSxvbkZhdGFsRXJyb3I6VCQxfSwwLG51bGwsZCwhMSwhMSkpLnBhcmVudEZsdXNoZWQ9ITAsZT1CYiQxKHMsZSxudWxsLGQsUyxRcCxudWxsLFdwKSwkLnB1c2goZSksc30oZSxmdW5jdGlvbihlLHMpe3JldHVybntib290c3RyYXBDaHVua3M6W10sc3RhcnRJbmxpbmVTY3JpcHQ6IjxzY3JpcHQ+IixwbGFjZWhvbGRlclByZWZpeDoocz12b2lkIDA9PT1zPyIiOnMpKyJQOiIsc2VnbWVudFByZWZpeDpzKyJTOiIsYm91bmRhcnlQcmVmaXg6cysiQjoiLGlkUHJlZml4OnMsbmV4dFN1c3BlbnNlSUQ6MCxzZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb246ITEsc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbjohMSxzZW50Q2xpZW50UmVuZGVyRnVuY3Rpb246ITEsZ2VuZXJhdGVTdGF0aWNNYXJrdXA6ZX19KGQscz9zLmlkZW50aWZpZXJQcmVmaXg6dm9pZCAwKSx7aW5zZXJ0aW9uTW9kZToxLHNlbGVjdGVkVmFsdWU6bnVsbH0sMS8wLFNiJDEsMCxmdW5jdGlvbigpe1M9ITB9KSxDYiQxKGUpLFJiJDEoZSxtKSwxPT09ZS5zdGF0dXMpZS5zdGF0dXM9MiwkLmRlc3Ryb3koZS5mYXRhbEVycm9yKTtlbHNlIGlmKDIhPT1lLnN0YXR1cyYmbnVsbD09PWUuZGVzdGluYXRpb24pe2UuZGVzdGluYXRpb249JDt0cnl7TWIkMShlLCQpfWNhdGNoKHMpe1YkMShlLHMpLFckMShlLHMpfX1pZihoKXRocm93IGc7aWYoIVMpdGhyb3cgRXJyb3IobCQyKDQyNikpO3JldHVybiB4fURkLnJlbmRlclRvTm9kZVN0cmVhbT1mdW5jdGlvbigpe3Rocm93IEVycm9yKGwkMigyMDcpKX0sRGQucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZnVuY3Rpb24oZSxzKXtyZXR1cm4gVGIkMShlLHMsITAsJ1RoZSBzZXJ2ZXIgdXNlZCAicmVuZGVyVG9TdGF0aWNNYXJrdXAiIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgU3VzcGVuc2UuIElmIHlvdSBpbnRlbmRlZCB0byBoYXZlIHRoZSBzZXJ2ZXIgd2FpdCBmb3IgdGhlIHN1c3BlbmRlZCBjb21wb25lbnQgcGxlYXNlIHN3aXRjaCB0byAicmVuZGVyVG9SZWFkYWJsZVN0cmVhbSIgd2hpY2ggc3VwcG9ydHMgU3VzcGVuc2Ugb24gdGhlIHNlcnZlcicpfSxEZC5yZW5kZXJUb1N0YXRpY05vZGVTdHJlYW09ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihsJDIoMjA4KSl9LERkLnJlbmRlclRvU3RyaW5nPWZ1bmN0aW9uKGUscyl7cmV0dXJuIFRiJDEoZSxzLCExLCdUaGUgc2VydmVyIHVzZWQgInJlbmRlclRvU3RyaW5nIiB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IFN1c3BlbnNlLiBJZiB5b3UgaW50ZW5kZWQgZm9yIHRoaXMgU3VzcGVuc2UgYm91bmRhcnkgdG8gcmVuZGVyIHRoZSBmYWxsYmFjayBjb250ZW50IG9uIHRoZSBzZXJ2ZXIgY29uc2lkZXIgdGhyb3dpbmcgYW4gRXJyb3Igc29tZXdoZXJlIHdpdGhpbiB0aGUgU3VzcGVuc2UgYm91bmRhcnkuIElmIHlvdSBpbnRlbmRlZCB0byBoYXZlIHRoZSBzZXJ2ZXIgd2FpdCBmb3IgdGhlIHN1c3BlbmRlZCBjb21wb25lbnQgcGxlYXNlIHN3aXRjaCB0byAicmVuZGVyVG9SZWFkYWJsZVN0cmVhbSIgd2hpY2ggc3VwcG9ydHMgU3VzcGVuc2Ugb24gdGhlIHNlcnZlcicpfSxEZC52ZXJzaW9uPSIxOC4yLjAiO3ZhciBkbT17fSxwbT1jcDtmdW5jdGlvbiBrKGUpe2Zvcih2YXIgcz0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXMrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tkXSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIitzKyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIG1tPW51bGwsZm09MDtmdW5jdGlvbiBwKGUscyl7aWYoMCE9PXMubGVuZ3RoKWlmKDUxMjxzLmxlbmd0aCkwPGZtJiYoZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KG1tLmJ1ZmZlciwwLGZtKSksbW09bmV3IFVpbnQ4QXJyYXkoNTEyKSxmbT0wKSxlLmVucXVldWUocyk7ZWxzZXt2YXIgZD1tbS5sZW5ndGgtZm07ZDxzLmxlbmd0aCYmKDA9PT1kP2UuZW5xdWV1ZShtbSk6KG1tLnNldChzLnN1YmFycmF5KDAsZCksZm0pLGUuZW5xdWV1ZShtbSkscz1zLnN1YmFycmF5KGQpKSxtbT1uZXcgVWludDhBcnJheSg1MTIpLGZtPTApLG1tLnNldChzLGZtKSxmbSs9cy5sZW5ndGh9fWZ1bmN0aW9uIHQoZSxzKXtyZXR1cm4gcChlLHMpLCEwfWZ1bmN0aW9uIGJhKGUpe21tJiYwPGZtJiYoZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KG1tLmJ1ZmZlciwwLGZtKSksbW09bnVsbCxmbT0wKX12YXIgaG09bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGhtLmVuY29kZShlKX1mdW5jdGlvbiB3KGUpe3JldHVybiBobS5lbmNvZGUoZSl9ZnVuY3Rpb24gZGEoZSxzKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5lcnJvcj9lLmVycm9yKHMpOmUuY2xvc2UoKX12YXIgZ209T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx2bT0vXls6QS1aX2Etelx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDJGRlx1MDM3MC1cdTAzN0RcdTAzN0YtXHUxRkZGXHUyMDBDLVx1MjAwRFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZEXVs6QS1aX2Etelx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDJGRlx1MDM3MC1cdTAzN0RcdTAzN0YtXHUxRkZGXHUyMDBDLVx1MjAwRFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZEXC0uMC05XHUwMEI3XHUwMzAwLVx1MDM2Rlx1MjAzRi1cdTIwNDBdKiQvLHltPXt9LGJtPXt9O2Z1bmN0aW9uIGlhKGUpe3JldHVybiEhZ20uY2FsbChibSxlKXx8IWdtLmNhbGwoeW0sZSkmJih2bS50ZXN0KGUpP2JtW2VdPSEwOih5bVtlXT0hMCwhMSkpfWZ1bmN0aW9uIHkoZSxzLGQsbSxoLGcseCl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PXN8fDM9PT1zfHw0PT09cyx0aGlzLmF0dHJpYnV0ZU5hbWU9bSx0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1oLHRoaXMubXVzdFVzZVByb3BlcnR5PWQsdGhpcy5wcm9wZXJ0eU5hbWU9ZSx0aGlzLnR5cGU9cyx0aGlzLnNhbml0aXplVVJMPWcsdGhpcy5yZW1vdmVFbXB0eVN0cmluZz14fXZhciBfbT17fTsiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwwLCExLGUsbnVsbCwhMSwhMSl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZVswXTtfbVtzXT1uZXcgeShzLDEsITEsZVsxXSxudWxsLCExLCExKX0pLFsiY29udGVudEVkaXRhYmxlIiwiZHJhZ2dhYmxlIiwic3BlbGxDaGVjayIsInZhbHVlIl0uZm9yRWFjaChmdW5jdGlvbihlKXtfbVtlXT1uZXcgeShlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksWyJhdXRvUmV2ZXJzZSIsImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLCJmb2N1c2FibGUiLCJwcmVzZXJ2ZUFscGhhIl0uZm9yRWFjaChmdW5jdGlvbihlKXtfbVtlXT1uZXcgeShlLDIsITEsZSxudWxsLCExLCExKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwzLCEwLGUsbnVsbCwhMSwhMSl9KSxbImNhcHR1cmUiLCJkb3dubG9hZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSw0LCExLGUsbnVsbCwhMSwhMSl9KSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe19tW2VdPW5ldyB5KGUsNiwhMSxlLG51bGwsITEsITEpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe19tW2VdPW5ldyB5KGUsNSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgeG09L1tcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIGthKGUpe3JldHVybiBlWzFdLnRvVXBwZXJDYXNlKCl9ImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0Ii5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHM9ZS5yZXBsYWNlKHhtLGthKTtfbVtzXT1uZXcgeShzLDEsITEsZSxudWxsLCExLCExKX0pLCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcz1lLnJlcGxhY2UoeG0sa2EpO19tW3NdPW5ldyB5KHMsMSwhMSxlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMSwhMSl9KSxbInhtbDpiYXNlIiwieG1sOmxhbmciLCJ4bWw6c3BhY2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBzPWUucmVwbGFjZSh4bSxrYSk7X21bc109bmV3IHkocywxLCExLGUsImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsITEsITEpfSksWyJ0YWJJbmRleCIsImNyb3NzT3JpZ2luIl0uZm9yRWFjaChmdW5jdGlvbihlKXtfbVtlXT1uZXcgeShlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksX20ueGxpbmtIcmVmPW5ldyB5KCJ4bGlua0hyZWYiLDEsITEsInhsaW5rOmhyZWYiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMCwhMSksWyJzcmMiLCJocmVmIiwiYWN0aW9uIiwiZm9ybUFjdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7X21bZV09bmV3IHkoZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO3ZhciB3bT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sJG09WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyh3bSkuZm9yRWFjaChmdW5jdGlvbihlKXskbS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3M9cytlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc3Vic3RyaW5nKDEpLHdtW3NdPXdtW2VdfSl9KTt2YXIgU209L1siJyY8Pl0vO2Z1bmN0aW9uIEMoZSl7aWYoImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlKXJldHVybiIiK2U7ZT0iIitlO3ZhciBzPVNtLmV4ZWMoZSk7aWYocyl7dmFyIGQsbT0iIixoPTA7Zm9yKGQ9cy5pbmRleDtkPGUubGVuZ3RoO2QrKyl7c3dpdGNoKGUuY2hhckNvZGVBdChkKSl7Y2FzZSAzNDpzPSImcXVvdDsiO2JyZWFrO2Nhc2UgMzg6cz0iJmFtcDsiO2JyZWFrO2Nhc2UgMzk6cz0iJiN4Mjc7IjticmVhaztjYXNlIDYwOnM9IiZsdDsiO2JyZWFrO2Nhc2UgNjI6cz0iJmd0OyI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1oIT09ZCYmKG0rPWUuc3Vic3RyaW5nKGgsZCkpLGg9ZCsxLG0rPXN9ZT1oIT09ZD9tK2Uuc3Vic3RyaW5nKGgsZCk6bX1yZXR1cm4gZX12YXIgam09LyhbQS1aXSkvZyx6bT0vXm1zLS8sSW09QXJyYXkuaXNBcnJheSxDbT13KCI8c2NyaXB0PiIpLFRtPXcoIjxcL3NjcmlwdD4iKSxSbT13KCc8c2NyaXB0IHNyYz0iJyksRW09dygnPHNjcmlwdCB0eXBlPSJtb2R1bGUiIHNyYz0iJyksT209dygnIiBhc3luYz0iIj48XC9zY3JpcHQ+JyksUG09Lyg8XC98PCkocykoY3JpcHQpL2dpO2Z1bmN0aW9uIHlhKGUscyxkLG0pe3JldHVybiBzKygicyI9PT1kPyJcXHUwMDczIjoiXFx1MDA1MyIpK219ZnVuY3Rpb24gRChlLHMpe3JldHVybntpbnNlcnRpb25Nb2RlOmUsc2VsZWN0ZWRWYWx1ZTpzfX12YXIgTm09dygiXHgzYyEtLSAtLVx4M2UiKTtmdW5jdGlvbiBEYShlLHMsZCxtKXtyZXR1cm4iIj09PXM/bToobSYmZS5wdXNoKE5tKSxlLnB1c2godShDKHMpKSksITApfXZhciBEbT1uZXcgTWFwLFVtPXcoJyBzdHlsZT0iJyksTG09dygiOiIpLEFtPXcoIjsiKTtmdW5jdGlvbiBJYShlLHMsZCl7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXRocm93IEVycm9yKGsoNjIpKTtmb3IodmFyIG0gaW4gcz0hMCxkKWlmKGdtLmNhbGwoZCxtKSl7dmFyIGg9ZFttXTtpZihudWxsIT1oJiYiYm9vbGVhbiIhPXR5cGVvZiBoJiYiIiE9PWgpe2lmKDA9PT1tLmluZGV4T2YoIi0tIikpe3ZhciBnPXUoQyhtKSk7aD11KEMoKCIiK2gpLnRyaW0oKSkpfWVsc2V7Zz1tO3ZhciB4PURtLmdldChnKTt2b2lkIDAhPT14fHwoeD13KEMoZy5yZXBsYWNlKGptLCItJDEiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2Uoem0sIi1tcy0iKSkpLERtLnNldChnLHgpKSxnPXgsaD0ibnVtYmVyIj09dHlwZW9mIGg/MD09PWh8fGdtLmNhbGwod20sbSk/dSgiIitoKTp1KGgrInB4Iik6dShDKCgiIitoKS50cmltKCkpKX1zPyhzPSExLGUucHVzaChVbSxnLExtLGgpKTplLnB1c2goQW0sZyxMbSxoKX19c3x8ZS5wdXNoKEJtKX12YXIgcW09dygiICIpLEZtPXcoJz0iJyksQm09dygnIicpLFptPXcoJz0iIicpO2Z1bmN0aW9uIEooZSxzLGQsbSl7c3dpdGNoKGQpe2Nhc2Uic3R5bGUiOnJldHVybiB2b2lkIElhKGUscyxtKTtjYXNlImRlZmF1bHRWYWx1ZSI6Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6Y2FzZSJpbm5lckhUTUwiOmNhc2Uic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIjpjYXNlInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyI6cmV0dXJufWlmKCEoMjxkLmxlbmd0aCl8fCJvIiE9PWRbMF0mJiJPIiE9PWRbMF18fCJuIiE9PWRbMV0mJiJOIiE9PWRbMV0paWYobnVsbCE9PShzPV9tLmhhc093blByb3BlcnR5KGQpP19tW2RdOm51bGwpKXtzd2l0Y2godHlwZW9mIG0pe2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjpyZXR1cm47Y2FzZSJib29sZWFuIjppZighcy5hY2NlcHRzQm9vbGVhbnMpcmV0dXJufXN3aXRjaChkPXUocy5hdHRyaWJ1dGVOYW1lKSxzLnR5cGUpe2Nhc2UgMzptJiZlLnB1c2gocW0sZCxabSk7YnJlYWs7Y2FzZSA0OiEwPT09bT9lLnB1c2gocW0sZCxabSk6ITEhPT1tJiZlLnB1c2gocW0sZCxGbSx1KEMobSkpLEJtKTticmVhaztjYXNlIDU6aXNOYU4obSl8fGUucHVzaChxbSxkLEZtLHUoQyhtKSksQm0pO2JyZWFrO2Nhc2UgNjohaXNOYU4obSkmJjE8PW0mJmUucHVzaChxbSxkLEZtLHUoQyhtKSksQm0pO2JyZWFrO2RlZmF1bHQ6cy5zYW5pdGl6ZVVSTCYmKG09IiIrbSksZS5wdXNoKHFtLGQsRm0sdShDKG0pKSxCbSl9fWVsc2UgaWYoaWEoZCkpe3N3aXRjaCh0eXBlb2YgbSl7Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOnJldHVybjtjYXNlImJvb2xlYW4iOmlmKCJkYXRhLSIhPT0ocz1kLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KSkmJiJhcmlhLSIhPT1zKXJldHVybn1lLnB1c2gocW0sdShkKSxGbSx1KEMobSkpLEJtKX19dmFyIE1tPXcoIj4iKSxRbT13KCIvPiIpO2Z1bmN0aW9uIEwoZSxzLGQpe2lmKG51bGwhPXMpe2lmKG51bGwhPWQpdGhyb3cgRXJyb3Ioayg2MCkpO2lmKCJvYmplY3QiIT10eXBlb2Ygc3x8ISgiX19odG1sImluIHMpKXRocm93IEVycm9yKGsoNjEpKTtudWxsIT0ocz1zLl9faHRtbCkmJmUucHVzaCh1KCIiK3MpKX19dmFyIFZtPXcoJyBzZWxlY3RlZD0iIicpO2Z1bmN0aW9uIE5hKGUscyxkLG0pe2UucHVzaChNKGQpKTt2YXIgaCxnPWQ9bnVsbDtmb3IoaCBpbiBzKWlmKGdtLmNhbGwocyxoKSl7dmFyIHg9c1toXTtpZihudWxsIT14KXN3aXRjaChoKXtjYXNlImNoaWxkcmVuIjpkPXg7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6Zz14O2JyZWFrO2RlZmF1bHQ6SihlLG0saCx4KX19cmV0dXJuIGUucHVzaChNbSksTChlLGcsZCksInN0cmluZyI9PXR5cGVvZiBkPyhlLnB1c2godShDKGQpKSksbnVsbCk6ZH12YXIgSG09dygiXG4iKSxXbT0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxKbT1uZXcgTWFwO2Z1bmN0aW9uIE0oZSl7dmFyIHM9Sm0uZ2V0KGUpO2lmKHZvaWQgMD09PXMpe2lmKCFXbS50ZXN0KGUpKXRocm93IEVycm9yKGsoNjUsZSkpO3M9dygiPCIrZSksSm0uc2V0KGUscyl9cmV0dXJuIHN9dmFyIEttPXcoIjwhRE9DVFlQRSBodG1sPiIpO2Z1bmN0aW9uIFNhKGUscyxkLG0saCl7c3dpdGNoKHMpe2Nhc2Uic2VsZWN0IjplLnB1c2goTSgic2VsZWN0IikpO3ZhciBnPW51bGwseD1udWxsO2Zvcih6IGluIGQpaWYoZ20uY2FsbChkLHopKXt2YXIgJD1kW3pdO2lmKG51bGwhPSQpc3dpdGNoKHope2Nhc2UiY2hpbGRyZW4iOmc9JDticmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp4PSQ7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOmNhc2UidmFsdWUiOmJyZWFrO2RlZmF1bHQ6SihlLG0seiwkKX19cmV0dXJuIGUucHVzaChNbSksTChlLHgsZyksZztjYXNlIm9wdGlvbiI6eD1oLnNlbGVjdGVkVmFsdWUsZS5wdXNoKE0oIm9wdGlvbiIpKTt2YXIgUz0kPW51bGwsaj1udWxsLHo9bnVsbDtmb3IoZyBpbiBkKWlmKGdtLmNhbGwoZCxnKSl7dmFyIEk9ZFtnXTtpZihudWxsIT1JKXN3aXRjaChnKXtjYXNlImNoaWxkcmVuIjokPUk7YnJlYWs7Y2FzZSJzZWxlY3RlZCI6aj1JO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOno9STticmVhaztjYXNlInZhbHVlIjpTPUk7ZGVmYXVsdDpKKGUsbSxnLEkpfX1pZihudWxsIT14KWlmKGQ9bnVsbCE9PVM/IiIrUzpmdW5jdGlvbihlKXt2YXIgcz0iIjtyZXR1cm4gcG0uQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe251bGwhPWUmJihzKz1lKX0pLHN9KCQpLEltKHgpKXtmb3IobT0wO208eC5sZW5ndGg7bSsrKWlmKCIiK3hbbV09PT1kKXtlLnB1c2goVm0pO2JyZWFrfX1lbHNlIiIreD09PWQmJmUucHVzaChWbSk7ZWxzZSBqJiZlLnB1c2goVm0pO3JldHVybiBlLnB1c2goTW0pLEwoZSx6LCQpLCQ7Y2FzZSJ0ZXh0YXJlYSI6Zm9yKCQgaW4gZS5wdXNoKE0oInRleHRhcmVhIikpLHo9eD1nPW51bGwsZClpZihnbS5jYWxsKGQsJCkmJm51bGwhPShTPWRbJF0pKXN3aXRjaCgkKXtjYXNlImNoaWxkcmVuIjp6PVM7YnJlYWs7Y2FzZSJ2YWx1ZSI6Zz1TO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjp4PVM7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3Ioayg5MSkpO2RlZmF1bHQ6SihlLG0sJCxTKX1pZihudWxsPT09ZyYmbnVsbCE9PXgmJihnPXgpLGUucHVzaChNbSksbnVsbCE9eil7aWYobnVsbCE9Zyl0aHJvdyBFcnJvcihrKDkyKSk7aWYoSW0oeikmJjE8ei5sZW5ndGgpdGhyb3cgRXJyb3Ioayg5MykpO2c9IiIren1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGcmJiJcbiI9PT1nWzBdJiZlLnB1c2goSG0pLG51bGwhPT1nJiZlLnB1c2godShDKCIiK2cpKSksbnVsbDtjYXNlImlucHV0Ijpmb3IoeCBpbiBlLnB1c2goTSgiaW5wdXQiKSksUz16PSQ9Zz1udWxsLGQpaWYoZ20uY2FsbChkLHgpJiZudWxsIT0oaj1kW3hdKSlzd2l0Y2goeCl7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IoaygzOTksImlucHV0IikpO2Nhc2UiZGVmYXVsdENoZWNrZWQiOlM9ajticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6JD1qO2JyZWFrO2Nhc2UiY2hlY2tlZCI6ej1qO2JyZWFrO2Nhc2UidmFsdWUiOmc9ajticmVhaztkZWZhdWx0OkooZSxtLHgsail9cmV0dXJuIG51bGwhPT16P0ooZSxtLCJjaGVja2VkIix6KTpudWxsIT09UyYmSihlLG0sImNoZWNrZWQiLFMpLG51bGwhPT1nP0ooZSxtLCJ2YWx1ZSIsZyk6bnVsbCE9PSQmJkooZSxtLCJ2YWx1ZSIsJCksZS5wdXNoKFFtKSxudWxsO2Nhc2UibWVudWl0ZW0iOmZvcih2YXIgVCBpbiBlLnB1c2goTSgibWVudWl0ZW0iKSksZClpZihnbS5jYWxsKGQsVCkmJm51bGwhPShnPWRbVF0pKXN3aXRjaChUKXtjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjp0aHJvdyBFcnJvcihrKDQwMCkpO2RlZmF1bHQ6SihlLG0sVCxnKX1yZXR1cm4gZS5wdXNoKE1tKSxudWxsO2Nhc2UidGl0bGUiOmZvcihJIGluIGUucHVzaChNKCJ0aXRsZSIpKSxnPW51bGwsZClpZihnbS5jYWxsKGQsSSkmJm51bGwhPSh4PWRbSV0pKXN3aXRjaChJKXtjYXNlImNoaWxkcmVuIjpnPXg7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3Ioayg0MzQpKTtkZWZhdWx0OkooZSxtLEkseCl9cmV0dXJuIGUucHVzaChNbSksZztjYXNlImxpc3RpbmciOmNhc2UicHJlIjpmb3IoUyBpbiBlLnB1c2goTShzKSkseD1nPW51bGwsZClpZihnbS5jYWxsKGQsUykmJm51bGwhPSgkPWRbU10pKXN3aXRjaChTKXtjYXNlImNoaWxkcmVuIjpnPSQ7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6eD0kO2JyZWFrO2RlZmF1bHQ6SihlLG0sUywkKX1pZihlLnB1c2goTW0pLG51bGwhPXgpe2lmKG51bGwhPWcpdGhyb3cgRXJyb3Ioayg2MCkpO2lmKCJvYmplY3QiIT10eXBlb2YgeHx8ISgiX19odG1sImluIHgpKXRocm93IEVycm9yKGsoNjEpKTtudWxsIT0oZD14Ll9faHRtbCkmJigic3RyaW5nIj09dHlwZW9mIGQmJjA8ZC5sZW5ndGgmJiJcbiI9PT1kWzBdP2UucHVzaChIbSx1KGQpKTplLnB1c2godSgiIitkKSkpfXJldHVybiJzdHJpbmciPT10eXBlb2YgZyYmIlxuIj09PWdbMF0mJmUucHVzaChIbSksZztjYXNlImFyZWEiOmNhc2UiYmFzZSI6Y2FzZSJiciI6Y2FzZSJjb2wiOmNhc2UiZW1iZWQiOmNhc2UiaHIiOmNhc2UiaW1nIjpjYXNlImtleWdlbiI6Y2FzZSJsaW5rIjpjYXNlIm1ldGEiOmNhc2UicGFyYW0iOmNhc2Uic291cmNlIjpjYXNlInRyYWNrIjpjYXNlIndiciI6Zm9yKHZhciBSIGluIGUucHVzaChNKHMpKSxkKWlmKGdtLmNhbGwoZCxSKSYmbnVsbCE9KGc9ZFtSXSkpc3dpdGNoKFIpe2Nhc2UiY2hpbGRyZW4iOmNhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGsoMzk5LHMpKTtkZWZhdWx0OkooZSxtLFIsZyl9cmV0dXJuIGUucHVzaChRbSksbnVsbDtjYXNlImFubm90YXRpb24teG1sIjpjYXNlImNvbG9yLXByb2ZpbGUiOmNhc2UiZm9udC1mYWNlIjpjYXNlImZvbnQtZmFjZS1zcmMiOmNhc2UiZm9udC1mYWNlLXVyaSI6Y2FzZSJmb250LWZhY2UtZm9ybWF0IjpjYXNlImZvbnQtZmFjZS1uYW1lIjpjYXNlIm1pc3NpbmctZ2x5cGgiOnJldHVybiBOYShlLGQscyxtKTtjYXNlImh0bWwiOnJldHVybiAwPT09aC5pbnNlcnRpb25Nb2RlJiZlLnB1c2goS20pLE5hKGUsZCxzLG0pO2RlZmF1bHQ6aWYoLTE9PT1zLmluZGV4T2YoIi0iKSYmInN0cmluZyIhPXR5cGVvZiBkLmlzKXJldHVybiBOYShlLGQscyxtKTtmb3IoaiBpbiBlLnB1c2goTShzKSkseD1nPW51bGwsZClpZihnbS5jYWxsKGQsaikmJm51bGwhPSgkPWRbal0pKXN3aXRjaChqKXtjYXNlImNoaWxkcmVuIjpnPSQ7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6eD0kO2JyZWFrO2Nhc2Uic3R5bGUiOklhKGUsbSwkKTticmVhaztjYXNlInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyI6Y2FzZSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciOmJyZWFrO2RlZmF1bHQ6aWEoaikmJiJmdW5jdGlvbiIhPXR5cGVvZiAkJiYic3ltYm9sIiE9dHlwZW9mICQmJmUucHVzaChxbSx1KGopLEZtLHUoQygkKSksQm0pfXJldHVybiBlLnB1c2goTW0pLEwoZSx4LGcpLGd9fXZhciBHbT13KCI8LyIpLFhtPXcoIj4iKSxZbT13KCc8dGVtcGxhdGUgaWQ9IicpLGVmPXcoJyI+PC90ZW1wbGF0ZT4nKSx0Zj13KCJceDNjIS0tJC0tXHgzZSIpLG5mPXcoJ1x4M2MhLS0kPy0tXHgzZTx0ZW1wbGF0ZSBpZD0iJykscmY9dygnIj48L3RlbXBsYXRlPicpLG9mPXcoIlx4M2MhLS0kIS0tXHgzZSIpLGFmPXcoIlx4M2MhLS0vJC0tXHgzZSIpLHNmPXcoIjx0ZW1wbGF0ZSIpLGxmPXcoJyInKSxjZj13KCcgZGF0YS1kZ3N0PSInKTt3KCcgZGF0YS1tc2c9IicpLHcoJyBkYXRhLXN0Y2s9IicpO3ZhciB1Zj13KCI+PC90ZW1wbGF0ZT4iKTtmdW5jdGlvbiBmYihlLHMsZCl7aWYocChlLG5mKSxudWxsPT09ZCl0aHJvdyBFcnJvcihrKDM5NSkpO3JldHVybiBwKGUsZCksdChlLHJmKX12YXIgZGY9dygnPGRpdiBoaWRkZW4gaWQ9IicpLHBmPXcoJyI+JyksbWY9dygiPC9kaXY+IiksZmY9dygnPHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgaWQ9IicpLGhmPXcoJyI+JyksZ2Y9dygiPC9zdmc+IiksdmY9dygnPG1hdGggYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGlkPSInKSx5Zj13KCciPicpLGJmPXcoIjwvbWF0aD4iKSxfZj13KCc8dGFibGUgaGlkZGVuIGlkPSInKSx4Zj13KCciPicpLHdmPXcoIjwvdGFibGU+IiksJGY9dygnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9IicpLFNmPXcoJyI+Jyksa2Y9dygiPC90Ym9keT48L3RhYmxlPiIpLGpmPXcoJzx0YWJsZSBoaWRkZW4+PHRyIGlkPSInKSx6Zj13KCciPicpLElmPXcoIjwvdHI+PC90YWJsZT4iKSxDZj13KCc8dGFibGUgaGlkZGVuPjxjb2xncm91cCBpZD0iJyksVGY9dygnIj4nKSxSZj13KCI8L2NvbGdyb3VwPjwvdGFibGU+Iik7dmFyIEVmPXcoJ2Z1bmN0aW9uICRSUyhhLGIpe2E9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtmb3IoYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpO2EuZmlyc3RDaGlsZDspYi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLmZpcnN0Q2hpbGQsYik7Yi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpfTskUlMoIicpLE9mPXcoJyRSUygiJyksUGY9dygnIiwiJyksTmY9dygnIik8XC9zY3JpcHQ+JyksRGY9dygnZnVuY3Rpb24gJFJDKGEsYil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKTtpZihhKXthPWEucHJldmlvdXNTaWJsaW5nO3ZhciBmPWEucGFyZW50Tm9kZSxjPWEubmV4dFNpYmxpbmcsZT0wO2Rve2lmKGMmJjg9PT1jLm5vZGVUeXBlKXt2YXIgZD1jLmRhdGE7aWYoIi8kIj09PWQpaWYoMD09PWUpYnJlYWs7ZWxzZSBlLS07ZWxzZSIkIiE9PWQmJiIkPyIhPT1kJiYiJCEiIT09ZHx8ZSsrfWQ9Yy5uZXh0U2libGluZztmLnJlbW92ZUNoaWxkKGMpO2M9ZH13aGlsZShjKTtmb3IoO2IuZmlyc3RDaGlsZDspZi5pbnNlcnRCZWZvcmUoYi5maXJzdENoaWxkLGMpO2EuZGF0YT0iJCI7YS5fcmVhY3RSZXRyeSYmYS5fcmVhY3RSZXRyeSgpfX07JFJDKCInKSxVZj13KCckUkMoIicpLExmPXcoJyIsIicpLEFmPXcoJyIpPFwvc2NyaXB0PicpLHFmPXcoJ2Z1bmN0aW9uICRSWChiLGMsZCxlKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTthJiYoYj1hLnByZXZpb3VzU2libGluZyxiLmRhdGE9IiQhIixhPWEuZGF0YXNldCxjJiYoYS5kZ3N0PWMpLGQmJihhLm1zZz1kKSxlJiYoYS5zdGNrPWUpLGIuX3JlYWN0UmV0cnkmJmIuX3JlYWN0UmV0cnkoKSl9OyRSWCgiJyksRmY9dygnJFJYKCInKSxCZj13KCciJyksWmY9dygiKTxcL3NjcmlwdD4iKSxNZj13KCIsIiksUWY9L1s8XHUyMDI4XHUyMDI5XS9nO2Z1bmN0aW9uIFNiKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKFFmLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIjwiOnJldHVybiJcXHUwMDNjIjtjYXNlIlx1MjAyOCI6cmV0dXJuIlxcdTIwMjgiO2Nhc2UiXHUyMDI5IjpyZXR1cm4iXFx1MjAyOSI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzIGVuY291bnRlcmVkIGEgbWF0Y2ggaXQgZG9lcyBub3Qga25vdyBob3cgdG8gcmVwbGFjZS4gdGhpcyBtZWFucyB0aGUgbWF0Y2ggcmVnZXggYW5kIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBubyBsb25nZXIgaW4gc3luYy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdCIpfX0pfXZhciBWZj1PYmplY3QuYXNzaWduLEhmPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxXZj1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSxKZj1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLEtmPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksR2Y9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxYZj1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLFlmPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxlaD1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLHRoPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksbmg9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpLGloPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxyaD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iiksb2g9U3ltYm9sLmZvcigicmVhY3Quc2NvcGUiKSxhaD1TeW1ib2wuZm9yKCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlIiksc2g9U3ltYm9sLmZvcigicmVhY3QubGVnYWN5X2hpZGRlbiIpLGxoPVN5bWJvbC5mb3IoInJlYWN0LmRlZmF1bHRfdmFsdWUiKSxjaD1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gamMoZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxudWxsO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtzd2l0Y2goZSl7Y2FzZSBKZjpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgV2Y6cmV0dXJuIlBvcnRhbCI7Y2FzZSBHZjpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgS2Y6cmV0dXJuIlN0cmljdE1vZGUiO2Nhc2UgdGg6cmV0dXJuIlN1c3BlbnNlIjtjYXNlIG5oOnJldHVybiJTdXNwZW5zZUxpc3QifWlmKCJvYmplY3QiPT10eXBlb2YgZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBZZjpyZXR1cm4oZS5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLkNvbnN1bWVyIjtjYXNlIFhmOnJldHVybihlLl9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuUHJvdmlkZXIiO2Nhc2UgZWg6dmFyIHM9ZS5yZW5kZXI7cmV0dXJuKGU9ZS5kaXNwbGF5TmFtZSl8fChlPSIiIT09KGU9cy5kaXNwbGF5TmFtZXx8cy5uYW1lfHwiIik/IkZvcndhcmRSZWYoIitlKyIpIjoiRm9yd2FyZFJlZiIpLGU7Y2FzZSBpaDpyZXR1cm4gbnVsbCE9PShzPWUuZGlzcGxheU5hbWV8fG51bGwpP3M6amMoZS50eXBlKXx8Ik1lbW8iO2Nhc2Ugcmg6cz1lLl9wYXlsb2FkLGU9ZS5faW5pdDt0cnl7cmV0dXJuIGpjKGUocykpfWNhdGNoKGUpe319cmV0dXJuIG51bGx9dmFyIHVoPXt9O2Z1bmN0aW9uIGxjKGUscyl7aWYoIShlPWUuY29udGV4dFR5cGVzKSlyZXR1cm4gdWg7dmFyIGQsbT17fTtmb3IoZCBpbiBlKW1bZF09c1tkXTtyZXR1cm4gbX12YXIgZGg9bnVsbDtmdW5jdGlvbiBQKGUscyl7aWYoZSE9PXMpe2UuY29udGV4dC5fY3VycmVudFZhbHVlPWUucGFyZW50VmFsdWUsZT1lLnBhcmVudDt2YXIgZD1zLnBhcmVudDtpZihudWxsPT09ZSl7aWYobnVsbCE9PWQpdGhyb3cgRXJyb3Ioayg0MDEpKX1lbHNle2lmKG51bGw9PT1kKXRocm93IEVycm9yKGsoNDAxKSk7UChlLGQpfXMuY29udGV4dC5fY3VycmVudFZhbHVlPXMudmFsdWV9fWZ1bmN0aW9uIG1jKGUpe2UuY29udGV4dC5fY3VycmVudFZhbHVlPWUucGFyZW50VmFsdWUsbnVsbCE9PShlPWUucGFyZW50KSYmbWMoZSl9ZnVuY3Rpb24gbmMoZSl7dmFyIHM9ZS5wYXJlbnQ7bnVsbCE9PXMmJm5jKHMpLGUuY29udGV4dC5fY3VycmVudFZhbHVlPWUudmFsdWV9ZnVuY3Rpb24gb2MoZSxzKXtpZihlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZT1lLnBhcmVudFZhbHVlLG51bGw9PT0oZT1lLnBhcmVudCkpdGhyb3cgRXJyb3Ioayg0MDIpKTtlLmRlcHRoPT09cy5kZXB0aD9QKGUscyk6b2MoZSxzKX1mdW5jdGlvbiBwYyhlLHMpe3ZhciBkPXMucGFyZW50O2lmKG51bGw9PT1kKXRocm93IEVycm9yKGsoNDAyKSk7ZS5kZXB0aD09PWQuZGVwdGg/UChlLGQpOnBjKGUsZCkscy5jb250ZXh0Ll9jdXJyZW50VmFsdWU9cy52YWx1ZX1mdW5jdGlvbiBRKGUpe3ZhciBzPWRoO3MhPT1lJiYobnVsbD09PXM/bmMoZSk6bnVsbD09PWU/bWMocyk6cy5kZXB0aD09PWUuZGVwdGg/UChzLGUpOnMuZGVwdGg+ZS5kZXB0aD9vYyhzLGUpOnBjKHMsZSksZGg9ZSl9dmFyIHBoPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUscyl7bnVsbCE9PShlPWUuX3JlYWN0SW50ZXJuYWxzKS5xdWV1ZSYmZS5xdWV1ZS5wdXNoKHMpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUscyl7KGU9ZS5fcmVhY3RJbnRlcm5hbHMpLnJlcGxhY2U9ITAsZS5xdWV1ZT1bc119LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHJjKGUscyxkLG0pe3ZhciBoPXZvaWQgMCE9PWUuc3RhdGU/ZS5zdGF0ZTpudWxsO2UudXBkYXRlcj1waCxlLnByb3BzPWQsZS5zdGF0ZT1oO3ZhciBnPXtxdWV1ZTpbXSxyZXBsYWNlOiExfTtlLl9yZWFjdEludGVybmFscz1nO3ZhciB4PXMuY29udGV4dFR5cGU7aWYoZS5jb250ZXh0PSJvYmplY3QiPT10eXBlb2YgeCYmbnVsbCE9PXg/eC5fY3VycmVudFZhbHVlOm0sImZ1bmN0aW9uIj09dHlwZW9mKHg9cy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpJiYoaD1udWxsPT0oeD14KGQsaCkpP2g6VmYoe30saCx4KSxlLnN0YXRlPWgpLCJmdW5jdGlvbiIhPXR5cGVvZiBzLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJigiZnVuY3Rpb24iPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50fHwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQpKWlmKHM9ZS5zdGF0ZSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkscyE9PWUuc3RhdGUmJnBoLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLG51bGwhPT1nLnF1ZXVlJiYwPGcucXVldWUubGVuZ3RoKWlmKHM9Zy5xdWV1ZSx4PWcucmVwbGFjZSxnLnF1ZXVlPW51bGwsZy5yZXBsYWNlPSExLHgmJjE9PT1zLmxlbmd0aCllLnN0YXRlPXNbMF07ZWxzZXtmb3IoZz14P3NbMF06ZS5zdGF0ZSxoPSEwLHg9eD8xOjA7eDxzLmxlbmd0aDt4Kyspe3ZhciAkPXNbeF07bnVsbCE9KCQ9ImZ1bmN0aW9uIj09dHlwZW9mICQ/JC5jYWxsKGUsZyxkLG0pOiQpJiYoaD8oaD0hMSxnPVZmKHt9LGcsJCkpOlZmKGcsJCkpfWUuc3RhdGU9Z31lbHNlIGcucXVldWU9bnVsbH12YXIgbWg9e2lkOjEsb3ZlcmZsb3c6IiJ9O2Z1bmN0aW9uIHRjKGUscyxkKXt2YXIgbT1lLmlkO2U9ZS5vdmVyZmxvdzt2YXIgaD0zMi1maChtKS0xO20mPX4oMTw8aCksZCs9MTt2YXIgZz0zMi1maChzKStoO2lmKDMwPGcpe3ZhciB4PWgtaCU1O3JldHVybiBnPShtJigxPDx4KS0xKS50b1N0cmluZygzMiksbT4+PXgsaC09eCx7aWQ6MTw8MzItZmgocykraHxkPDxofG0sb3ZlcmZsb3c6ZytlfX1yZXR1cm57aWQ6MTw8Z3xkPDxofG0sb3ZlcmZsb3c6ZX19dmFyIGZoPU1hdGguY2x6MzI/TWF0aC5jbHozMjpmdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPj4+PTApPzMyOjMxLShoaChlKS9naHwwKXwwfSxoaD1NYXRoLmxvZyxnaD1NYXRoLkxOMjt2YXIgdmg9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24oZSxzKXtyZXR1cm4gZT09PXMmJigwIT09ZXx8MS9lPT0xL3MpfHxlIT1lJiZzIT1zfSx5aD1udWxsLGJoPW51bGwsX2g9bnVsbCx4aD1udWxsLHdoPSExLCRoPSExLFNoPTAsa2g9bnVsbCxqaD0wO2Z1bmN0aW9uIFcoKXtpZihudWxsPT09eWgpdGhyb3cgRXJyb3IoaygzMjEpKTtyZXR1cm4geWh9ZnVuY3Rpb24gRWMoKXtpZigwPGpoKXRocm93IEVycm9yKGsoMzEyKSk7cmV0dXJue21lbW9pemVkU3RhdGU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH19ZnVuY3Rpb24gRmMoKXtyZXR1cm4gbnVsbD09PXhoP251bGw9PT1faD8od2g9ITEsX2g9eGg9RWMoKSk6KHdoPSEwLHhoPV9oKTpudWxsPT09eGgubmV4dD8od2g9ITEseGg9eGgubmV4dD1FYygpKTood2g9ITAseGg9eGgubmV4dCkseGh9ZnVuY3Rpb24gR2MoKXtiaD15aD1udWxsLCRoPSExLF9oPW51bGwsamg9MCx4aD1raD1udWxsfWZ1bmN0aW9uIEhjKGUscyl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHM/cyhlKTpzfWZ1bmN0aW9uIEljKGUscyxkKXtpZih5aD1XKCkseGg9RmMoKSx3aCl7dmFyIG09eGgucXVldWU7aWYocz1tLmRpc3BhdGNoLG51bGwhPT1raCYmdm9pZCAwIT09KGQ9a2guZ2V0KG0pKSl7a2guZGVsZXRlKG0pLG09eGgubWVtb2l6ZWRTdGF0ZTtkb3ttPWUobSxkLmFjdGlvbiksZD1kLm5leHR9d2hpbGUobnVsbCE9PWQpO3JldHVybiB4aC5tZW1vaXplZFN0YXRlPW0sW20sc119cmV0dXJuW3hoLm1lbW9pemVkU3RhdGUsc119cmV0dXJuIGU9ZT09PUhjPyJmdW5jdGlvbiI9PXR5cGVvZiBzP3MoKTpzOnZvaWQgMCE9PWQ/ZChzKTpzLHhoLm1lbW9pemVkU3RhdGU9ZSxlPShlPXhoLnF1ZXVlPXtsYXN0Om51bGwsZGlzcGF0Y2g6bnVsbH0pLmRpc3BhdGNoPUpjLmJpbmQobnVsbCx5aCxlKSxbeGgubWVtb2l6ZWRTdGF0ZSxlXX1mdW5jdGlvbiBLYyhlLHMpe2lmKHloPVcoKSxzPXZvaWQgMD09PXM/bnVsbDpzLG51bGwhPT0oeGg9RmMoKSkpe3ZhciBkPXhoLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1zKXt2YXIgbT1kWzFdO2U6aWYobnVsbD09PW0pbT0hMTtlbHNle2Zvcih2YXIgaD0wO2g8bS5sZW5ndGgmJmg8cy5sZW5ndGg7aCsrKWlmKCF2aChzW2hdLG1baF0pKXttPSExO2JyZWFrIGV9bT0hMH1pZihtKXJldHVybiBkWzBdfX1yZXR1cm4gZT1lKCkseGgubWVtb2l6ZWRTdGF0ZT1bZSxzXSxlfWZ1bmN0aW9uIEpjKGUscyxkKXtpZigyNTw9amgpdGhyb3cgRXJyb3IoaygzMDEpKTtpZihlPT09eWgpaWYoJGg9ITAsZT17YWN0aW9uOmQsbmV4dDpudWxsfSxudWxsPT09a2gmJihraD1uZXcgTWFwKSx2b2lkIDA9PT0oZD1raC5nZXQocykpKWtoLnNldChzLGUpO2Vsc2V7Zm9yKHM9ZDtudWxsIT09cy5uZXh0OylzPXMubmV4dDtzLm5leHQ9ZX19ZnVuY3Rpb24gTGMoKXt0aHJvdyBFcnJvcihrKDM5NCkpfWZ1bmN0aW9uIE1jKCl7fXZhciB6aCxJaCxDaD17cmVhZENvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2N1cnJlbnRWYWx1ZX0sdXNlQ29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gVygpLGUuX2N1cnJlbnRWYWx1ZX0sdXNlTWVtbzpLYyx1c2VSZWR1Y2VyOkljLHVzZVJlZjpmdW5jdGlvbihlKXt5aD1XKCk7dmFyIHM9KHhoPUZjKCkpLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGw9PT1zPyhlPXtjdXJyZW50OmV9LHhoLm1lbW9pemVkU3RhdGU9ZSk6c30sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIEljKEhjLGUpfSx1c2VJbnNlcnRpb25FZmZlY3Q6TWMsdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKCl7fSx1c2VDYWxsYmFjazpmdW5jdGlvbihlLHMpe3JldHVybiBLYyhmdW5jdGlvbigpe3JldHVybiBlfSxzKX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpNYyx1c2VFZmZlY3Q6TWMsdXNlRGVidWdWYWx1ZTpNYyx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBXKCksZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybiBXKCksWyExLExjXX0sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgZT1iaC50cmVlQ29udGV4dCxzPWUub3ZlcmZsb3c7ZT0oKGU9ZS5pZCkmfigxPDwzMi1maChlKS0xKSkudG9TdHJpbmcoMzIpK3M7dmFyIGQ9VGg7aWYobnVsbD09PWQpdGhyb3cgRXJyb3Ioayg0MDQpKTtyZXR1cm4gcz1TaCsrLGU9IjoiK2QuaWRQcmVmaXgrIlIiK2UsMDxzJiYoZSs9IkgiK3MudG9TdHJpbmcoMzIpKSxlKyI6In0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbihlLHMpe3JldHVybiBXKCkscyhlLl9zb3VyY2UpfSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihlLHMsZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBFcnJvcihrKDQwNykpO3JldHVybiBkKCl9fSxUaD1udWxsLFJoPXBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudERpc3BhdGNoZXI7ZnVuY3Rpb24gUWMoZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoZSksbnVsbH1mdW5jdGlvbiBYKCl7fWZ1bmN0aW9uIFRjKGUscyxkLG0saCxnLHgsJCl7ZS5hbGxQZW5kaW5nVGFza3MrKyxudWxsPT09ZD9lLnBlbmRpbmdSb290VGFza3MrKzpkLnBlbmRpbmdUYXNrcysrO3ZhciBTPXtub2RlOnMscGluZzpmdW5jdGlvbigpe3ZhciBzPWUucGluZ2VkVGFza3M7cy5wdXNoKFMpLDE9PT1zLmxlbmd0aCYmVWMoZSl9LGJsb2NrZWRCb3VuZGFyeTpkLGJsb2NrZWRTZWdtZW50Om0sYWJvcnRTZXQ6aCxsZWdhY3lDb250ZXh0OmcsY29udGV4dDp4LHRyZWVDb250ZXh0OiR9O3JldHVybiBoLmFkZChTKSxTfWZ1bmN0aW9uIFNjKGUscyxkLG0saCxnKXtyZXR1cm57c3RhdHVzOjAsaWQ6LTEsaW5kZXg6cyxwYXJlbnRGbHVzaGVkOiExLGNodW5rczpbXSxjaGlsZHJlbjpbXSxmb3JtYXRDb250ZXh0Om0sYm91bmRhcnk6ZCxsYXN0UHVzaGVkVGV4dDpoLHRleHRFbWJlZGRlZDpnfX1mdW5jdGlvbiBZKGUscyl7aWYobnVsbCE9KGU9ZS5vbkVycm9yKHMpKSYmInN0cmluZyIhPXR5cGVvZiBlKXRocm93IEVycm9yKCdvbkVycm9yIHJldHVybmVkIHNvbWV0aGluZyB3aXRoIGEgdHlwZSBvdGhlciB0aGFuICJzdHJpbmciLiBvbkVycm9yIHNob3VsZCByZXR1cm4gYSBzdHJpbmcgYW5kIG1heSByZXR1cm4gbnVsbCBvciB1bmRlZmluZWQgYnV0IG11c3Qgbm90IHJldHVybiBhbnl0aGluZyBlbHNlLiBJdCByZWNlaXZlZCBzb21ldGhpbmcgb2YgdHlwZSAiJyt0eXBlb2YgZSsnIiBpbnN0ZWFkJyk7cmV0dXJuIGV9ZnVuY3Rpb24gVmMoZSxzKXt2YXIgZD1lLm9uU2hlbGxFcnJvcjtkKHMpLChkPWUub25GYXRhbEVycm9yKShzKSxudWxsIT09ZS5kZXN0aW5hdGlvbj8oZS5zdGF0dXM9MixkYShlLmRlc3RpbmF0aW9uLHMpKTooZS5zdGF0dXM9MSxlLmZhdGFsRXJyb3I9cyl9ZnVuY3Rpb24gV2MoZSxzLGQsbSxoKXtmb3IoeWg9e30sYmg9cyxTaD0wLGU9ZChtLGgpOyRoOykkaD0hMSxTaD0wLGpoKz0xLHhoPW51bGwsZT1kKG0saCk7cmV0dXJuIEdjKCksZX1mdW5jdGlvbiBYYyhlLHMsZCxtKXt2YXIgaD1kLnJlbmRlcigpLGc9bS5jaGlsZENvbnRleHRUeXBlcztpZihudWxsIT1nKXt2YXIgeD1zLmxlZ2FjeUNvbnRleHQ7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KW09eDtlbHNle2Zvcih2YXIgJCBpbiBkPWQuZ2V0Q2hpbGRDb250ZXh0KCkpaWYoISgkIGluIGcpKXRocm93IEVycm9yKGsoMTA4LGpjKG0pfHwiVW5rbm93biIsJCkpO209VmYoe30seCxkKX1zLmxlZ2FjeUNvbnRleHQ9bSxaKGUscyxoKSxzLmxlZ2FjeUNvbnRleHQ9eH1lbHNlIFooZSxzLGgpfWZ1bmN0aW9uIFljKGUscyl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpe2Zvcih2YXIgZCBpbiBzPVZmKHt9LHMpLGU9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09c1tkXSYmKHNbZF09ZVtkXSk7cmV0dXJuIHN9cmV0dXJuIHN9ZnVuY3Rpb24gWmMoZSxzLGQsbSxoKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZClpZihkLnByb3RvdHlwZSYmZC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCl7aD1sYyhkLHMubGVnYWN5Q29udGV4dCk7dmFyIGc9ZC5jb250ZXh0VHlwZTtyYyhnPW5ldyBkKG0sIm9iamVjdCI9PXR5cGVvZiBnJiZudWxsIT09Zz9nLl9jdXJyZW50VmFsdWU6aCksZCxtLGgpLFhjKGUscyxnLGQpfWVsc2V7aD1XYyhlLHMsZCxtLGc9bGMoZCxzLmxlZ2FjeUNvbnRleHQpKTt2YXIgeD0wIT09U2g7aWYoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT09aCYmImZ1bmN0aW9uIj09dHlwZW9mIGgucmVuZGVyJiZ2b2lkIDA9PT1oLiQkdHlwZW9mKXJjKGgsZCxtLGcpLFhjKGUscyxoLGQpO2Vsc2UgaWYoeCl7bT1zLnRyZWVDb250ZXh0LHMudHJlZUNvbnRleHQ9dGMobSwxLDApO3RyeXtaKGUscyxoKX1maW5hbGx5e3MudHJlZUNvbnRleHQ9bX19ZWxzZSBaKGUscyxoKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgZCl7c3dpdGNoKGQpe2Nhc2Ugc2g6Y2FzZSBhaDpjYXNlIEtmOmNhc2UgR2Y6Y2FzZSBKZjpjYXNlIG5oOnJldHVybiB2b2lkIFooZSxzLG0uY2hpbGRyZW4pO2Nhc2Ugb2g6dGhyb3cgRXJyb3IoaygzNDMpKTtjYXNlIHRoOmU6e2Q9cy5ibG9ja2VkQm91bmRhcnksaD1zLmJsb2NrZWRTZWdtZW50LGc9bS5mYWxsYmFjayxtPW0uY2hpbGRyZW47dmFyICQ9e2lkOm51bGwscm9vdFNlZ21lbnRJRDotMSxwYXJlbnRGbHVzaGVkOiExLHBlbmRpbmdUYXNrczowLGZvcmNlQ2xpZW50UmVuZGVyOiExLGNvbXBsZXRlZFNlZ21lbnRzOltdLGJ5dGVTaXplOjAsZmFsbGJhY2tBYm9ydGFibGVUYXNrczp4PW5ldyBTZXQsZXJyb3JEaWdlc3Q6bnVsbH0sUz1TYygwLGguY2h1bmtzLmxlbmd0aCwkLGguZm9ybWF0Q29udGV4dCwhMSwhMSk7aC5jaGlsZHJlbi5wdXNoKFMpLGgubGFzdFB1c2hlZFRleHQ9ITE7dmFyIGo9U2MoMCwwLG51bGwsaC5mb3JtYXRDb250ZXh0LCExLCExKTtqLnBhcmVudEZsdXNoZWQ9ITAscy5ibG9ja2VkQm91bmRhcnk9JCxzLmJsb2NrZWRTZWdtZW50PWo7dHJ5e2lmKCRjKGUscyxtKSxqLmxhc3RQdXNoZWRUZXh0JiZqLnRleHRFbWJlZGRlZCYmai5jaHVua3MucHVzaChObSksai5zdGF0dXM9MSxhZCgkLGopLDA9PT0kLnBlbmRpbmdUYXNrcylicmVhayBlfWNhdGNoKHMpe2ouc3RhdHVzPTQsJC5mb3JjZUNsaWVudFJlbmRlcj0hMCwkLmVycm9yRGlnZXN0PVkoZSxzKX1maW5hbGx5e3MuYmxvY2tlZEJvdW5kYXJ5PWQscy5ibG9ja2VkU2VnbWVudD1ofXM9VGMoZSxnLGQsUyx4LHMubGVnYWN5Q29udGV4dCxzLmNvbnRleHQscy50cmVlQ29udGV4dCksZS5waW5nZWRUYXNrcy5wdXNoKHMpfXJldHVybn1pZigib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPT1kKXN3aXRjaChkLiQkdHlwZW9mKXtjYXNlIGVoOmlmKG09V2MoZSxzLGQucmVuZGVyLG0saCksMCE9PVNoKXtkPXMudHJlZUNvbnRleHQscy50cmVlQ29udGV4dD10YyhkLDEsMCk7dHJ5e1ooZSxzLG0pfWZpbmFsbHl7cy50cmVlQ29udGV4dD1kfX1lbHNlIFooZSxzLG0pO3JldHVybjtjYXNlIGloOnJldHVybiB2b2lkIFpjKGUscyxkPWQudHlwZSxtPVljKGQsbSksaCk7Y2FzZSBYZjppZihoPW0uY2hpbGRyZW4sZD1kLl9jb250ZXh0LG09bS52YWx1ZSxnPWQuX2N1cnJlbnRWYWx1ZSxkLl9jdXJyZW50VmFsdWU9bSxkaD1tPXtwYXJlbnQ6eD1kaCxkZXB0aDpudWxsPT09eD8wOnguZGVwdGgrMSxjb250ZXh0OmQscGFyZW50VmFsdWU6Zyx2YWx1ZTptfSxzLmNvbnRleHQ9bSxaKGUscyxoKSxudWxsPT09KGU9ZGgpKXRocm93IEVycm9yKGsoNDAzKSk7cmV0dXJuIG09ZS5wYXJlbnRWYWx1ZSxlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZT1tPT09bGg/ZS5jb250ZXh0Ll9kZWZhdWx0VmFsdWU6bSxlPWRoPWUucGFyZW50LHZvaWQocy5jb250ZXh0PWUpO2Nhc2UgWWY6cmV0dXJuIHZvaWQgWihlLHMsbT0obT1tLmNoaWxkcmVuKShkLl9jdXJyZW50VmFsdWUpKTtjYXNlIHJoOnJldHVybiB2b2lkIFpjKGUscyxkPShoPWQuX2luaXQpKGQuX3BheWxvYWQpLG09WWMoZCxtKSx2b2lkIDApfXRocm93IEVycm9yKGsoMTMwLG51bGw9PWQ/ZDp0eXBlb2YgZCwiIikpfXN3aXRjaChnPVNhKChoPXMuYmxvY2tlZFNlZ21lbnQpLmNodW5rcyxkLG0sZS5yZXNwb25zZVN0YXRlLGguZm9ybWF0Q29udGV4dCksaC5sYXN0UHVzaGVkVGV4dD0hMSx4PWguZm9ybWF0Q29udGV4dCxoLmZvcm1hdENvbnRleHQ9ZnVuY3Rpb24oZSxzLGQpe3N3aXRjaChzKXtjYXNlInNlbGVjdCI6cmV0dXJuIEQoMSxudWxsIT1kLnZhbHVlP2QudmFsdWU6ZC5kZWZhdWx0VmFsdWUpO2Nhc2Uic3ZnIjpyZXR1cm4gRCgyLG51bGwpO2Nhc2UibWF0aCI6cmV0dXJuIEQoMyxudWxsKTtjYXNlImZvcmVpZ25PYmplY3QiOnJldHVybiBEKDEsbnVsbCk7Y2FzZSJ0YWJsZSI6cmV0dXJuIEQoNCxudWxsKTtjYXNlInRoZWFkIjpjYXNlInRib2R5IjpjYXNlInRmb290IjpyZXR1cm4gRCg1LG51bGwpO2Nhc2UiY29sZ3JvdXAiOnJldHVybiBEKDcsbnVsbCk7Y2FzZSJ0ciI6cmV0dXJuIEQoNixudWxsKX1yZXR1cm4gNDw9ZS5pbnNlcnRpb25Nb2RlfHwwPT09ZS5pbnNlcnRpb25Nb2RlP0QoMSxudWxsKTplfSh4LGQsbSksJGMoZSxzLGcpLGguZm9ybWF0Q29udGV4dD14LGQpe2Nhc2UiYXJlYSI6Y2FzZSJiYXNlIjpjYXNlImJyIjpjYXNlImNvbCI6Y2FzZSJlbWJlZCI6Y2FzZSJociI6Y2FzZSJpbWciOmNhc2UiaW5wdXQiOmNhc2Uia2V5Z2VuIjpjYXNlImxpbmsiOmNhc2UibWV0YSI6Y2FzZSJwYXJhbSI6Y2FzZSJzb3VyY2UiOmNhc2UidHJhY2siOmNhc2Uid2JyIjpicmVhaztkZWZhdWx0OmguY2h1bmtzLnB1c2goR20sdShkKSxYbSl9aC5sYXN0UHVzaGVkVGV4dD0hMX19ZnVuY3Rpb24gWihlLHMsZCl7aWYocy5ub2RlPWQsIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgSGY6cmV0dXJuIHZvaWQgWmMoZSxzLGQudHlwZSxkLnByb3BzLGQucmVmKTtjYXNlIFdmOnRocm93IEVycm9yKGsoMjU3KSk7Y2FzZSByaDp2YXIgbT1kLl9pbml0O3JldHVybiB2b2lkIFooZSxzLGQ9bShkLl9wYXlsb2FkKSl9aWYoSW0oZCkpcmV0dXJuIHZvaWQgYmQoZSxzLGQpO2lmKG51bGw9PT1kfHwib2JqZWN0IiE9dHlwZW9mIGQ/bT1udWxsOm09ImZ1bmN0aW9uIj09dHlwZW9mKG09Y2gmJmRbY2hdfHxkWyJAQGl0ZXJhdG9yIl0pP206bnVsbCxtJiYobT1tLmNhbGwoZCkpKXtpZighKGQ9bS5uZXh0KCkpLmRvbmUpe3ZhciBoPVtdO2Rve2gucHVzaChkLnZhbHVlKSxkPW0ubmV4dCgpfXdoaWxlKCFkLmRvbmUpO2JkKGUscyxoKX1yZXR1cm59dGhyb3cgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCksRXJyb3IoaygzMSwiW29iamVjdCBPYmplY3RdIj09PWU/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZCkuam9pbigiLCAiKSsifSI6ZSkpfSJzdHJpbmciPT10eXBlb2YgZD8obT1zLmJsb2NrZWRTZWdtZW50KS5sYXN0UHVzaGVkVGV4dD1EYShzLmJsb2NrZWRTZWdtZW50LmNodW5rcyxkLGUucmVzcG9uc2VTdGF0ZSxtLmxhc3RQdXNoZWRUZXh0KToibnVtYmVyIj09dHlwZW9mIGQmJigobT1zLmJsb2NrZWRTZWdtZW50KS5sYXN0UHVzaGVkVGV4dD1EYShzLmJsb2NrZWRTZWdtZW50LmNodW5rcywiIitkLGUucmVzcG9uc2VTdGF0ZSxtLmxhc3RQdXNoZWRUZXh0KSl9ZnVuY3Rpb24gYmQoZSxzLGQpe2Zvcih2YXIgbT1kLmxlbmd0aCxoPTA7aDxtO2grKyl7dmFyIGc9cy50cmVlQ29udGV4dDtzLnRyZWVDb250ZXh0PXRjKGcsbSxoKTt0cnl7JGMoZSxzLGRbaF0pfWZpbmFsbHl7cy50cmVlQ29udGV4dD1nfX19ZnVuY3Rpb24gJGMoZSxzLGQpe3ZhciBtPXMuYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dCxoPXMubGVnYWN5Q29udGV4dCxnPXMuY29udGV4dDt0cnl7cmV0dXJuIFooZSxzLGQpfWNhdGNoKFMpe2lmKEdjKCksIm9iamVjdCIhPXR5cGVvZiBTfHxudWxsPT09U3x8ImZ1bmN0aW9uIiE9dHlwZW9mIFMudGhlbil0aHJvdyBzLmJsb2NrZWRTZWdtZW50LmZvcm1hdENvbnRleHQ9bSxzLmxlZ2FjeUNvbnRleHQ9aCxzLmNvbnRleHQ9ZyxRKGcpLFM7ZD1TO3ZhciB4PXMuYmxvY2tlZFNlZ21lbnQsJD1TYygwLHguY2h1bmtzLmxlbmd0aCxudWxsLHguZm9ybWF0Q29udGV4dCx4Lmxhc3RQdXNoZWRUZXh0LCEwKTt4LmNoaWxkcmVuLnB1c2goJCkseC5sYXN0UHVzaGVkVGV4dD0hMSxlPVRjKGUscy5ub2RlLHMuYmxvY2tlZEJvdW5kYXJ5LCQscy5hYm9ydFNldCxzLmxlZ2FjeUNvbnRleHQscy5jb250ZXh0LHMudHJlZUNvbnRleHQpLnBpbmcsZC50aGVuKGUsZSkscy5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0PW0scy5sZWdhY3lDb250ZXh0PWgscy5jb250ZXh0PWcsUShnKX19ZnVuY3Rpb24gY2QoZSl7dmFyIHM9ZS5ibG9ja2VkQm91bmRhcnk7KGU9ZS5ibG9ja2VkU2VnbWVudCkuc3RhdHVzPTMsZGQodGhpcyxzLGUpfWZ1bmN0aW9uIGVkKGUscyxkKXt2YXIgbT1lLmJsb2NrZWRCb3VuZGFyeTtlLmJsb2NrZWRTZWdtZW50LnN0YXR1cz0zLG51bGw9PT1tPyhzLmFsbFBlbmRpbmdUYXNrcy0tLDIhPT1zLnN0YXR1cyYmKHMuc3RhdHVzPTIsbnVsbCE9PXMuZGVzdGluYXRpb24mJnMuZGVzdGluYXRpb24uY2xvc2UoKSkpOihtLnBlbmRpbmdUYXNrcy0tLG0uZm9yY2VDbGllbnRSZW5kZXJ8fChtLmZvcmNlQ2xpZW50UmVuZGVyPSEwLGU9dm9pZCAwPT09ZD9FcnJvcihrKDQzMikpOmQsbS5lcnJvckRpZ2VzdD1zLm9uRXJyb3IoZSksbS5wYXJlbnRGbHVzaGVkJiZzLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKG0pKSxtLmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZWQoZSxzLGQpfSksbS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCkscy5hbGxQZW5kaW5nVGFza3MtLSwwPT09cy5hbGxQZW5kaW5nVGFza3MmJihtPXMub25BbGxSZWFkeSkoKSl9ZnVuY3Rpb24gYWQoZSxzKXtpZigwPT09cy5jaHVua3MubGVuZ3RoJiYxPT09cy5jaGlsZHJlbi5sZW5ndGgmJm51bGw9PT1zLmNoaWxkcmVuWzBdLmJvdW5kYXJ5KXt2YXIgZD1zLmNoaWxkcmVuWzBdO2QuaWQ9cy5pZCxkLnBhcmVudEZsdXNoZWQ9ITAsMT09PWQuc3RhdHVzJiZhZChlLGQpfWVsc2UgZS5jb21wbGV0ZWRTZWdtZW50cy5wdXNoKHMpfWZ1bmN0aW9uIGRkKGUscyxkKXtpZihudWxsPT09cyl7aWYoZC5wYXJlbnRGbHVzaGVkKXtpZihudWxsIT09ZS5jb21wbGV0ZWRSb290U2VnbWVudCl0aHJvdyBFcnJvcihrKDM4OSkpO2UuY29tcGxldGVkUm9vdFNlZ21lbnQ9ZH1lLnBlbmRpbmdSb290VGFza3MtLSwwPT09ZS5wZW5kaW5nUm9vdFRhc2tzJiYoZS5vblNoZWxsRXJyb3I9WCwocz1lLm9uU2hlbGxSZWFkeSkoKSl9ZWxzZSBzLnBlbmRpbmdUYXNrcy0tLHMuZm9yY2VDbGllbnRSZW5kZXJ8fCgwPT09cy5wZW5kaW5nVGFza3M/KGQucGFyZW50Rmx1c2hlZCYmMT09PWQuc3RhdHVzJiZhZChzLGQpLHMucGFyZW50Rmx1c2hlZCYmZS5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2gocykscy5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goY2QsZSkscy5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCkpOmQucGFyZW50Rmx1c2hlZCYmMT09PWQuc3RhdHVzJiYoYWQocyxkKSwxPT09cy5jb21wbGV0ZWRTZWdtZW50cy5sZW5ndGgmJnMucGFyZW50Rmx1c2hlZCYmZS5wYXJ0aWFsQm91bmRhcmllcy5wdXNoKHMpKSk7ZS5hbGxQZW5kaW5nVGFza3MtLSwwPT09ZS5hbGxQZW5kaW5nVGFza3MmJihlPWUub25BbGxSZWFkeSkoKX1mdW5jdGlvbiBVYyhlKXtpZigyIT09ZS5zdGF0dXMpe3ZhciBzPWRoLGQ9UmguY3VycmVudDtSaC5jdXJyZW50PUNoO3ZhciBtPVRoO1RoPWUucmVzcG9uc2VTdGF0ZTt0cnl7dmFyIGgsZz1lLnBpbmdlZFRhc2tzO2ZvcihoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB4PWdbaF0sJD1lLFM9eC5ibG9ja2VkU2VnbWVudDtpZigwPT09Uy5zdGF0dXMpe1EoeC5jb250ZXh0KTt0cnl7WigkLHgseC5ub2RlKSxTLmxhc3RQdXNoZWRUZXh0JiZTLnRleHRFbWJlZGRlZCYmUy5jaHVua3MucHVzaChObSkseC5hYm9ydFNldC5kZWxldGUoeCksUy5zdGF0dXM9MSxkZCgkLHguYmxvY2tlZEJvdW5kYXJ5LFMpfWNhdGNoKGUpe2lmKEdjKCksIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudGhlbil7dmFyIGo9eC5waW5nO2UudGhlbihqLGopfWVsc2V7eC5hYm9ydFNldC5kZWxldGUoeCksUy5zdGF0dXM9NDt2YXIgej14LmJsb2NrZWRCb3VuZGFyeSxJPWUsVD1ZKCQsSSk7aWYobnVsbD09PXo/VmMoJCxJKTooei5wZW5kaW5nVGFza3MtLSx6LmZvcmNlQ2xpZW50UmVuZGVyfHwoei5mb3JjZUNsaWVudFJlbmRlcj0hMCx6LmVycm9yRGlnZXN0PVQsei5wYXJlbnRGbHVzaGVkJiYkLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKHopKSksJC5hbGxQZW5kaW5nVGFza3MtLSwwPT09JC5hbGxQZW5kaW5nVGFza3MpKDAsJC5vbkFsbFJlYWR5KSgpfX19fWcuc3BsaWNlKDAsaCksbnVsbCE9PWUuZGVzdGluYXRpb24mJmZkKGUsZS5kZXN0aW5hdGlvbil9Y2F0Y2gocyl7WShlLHMpLFZjKGUscyl9ZmluYWxseXtUaD1tLFJoLmN1cnJlbnQ9ZCxkPT09Q2gmJlEocyl9fX1mdW5jdGlvbiBnZChlLHMsZCl7c3dpdGNoKGQucGFyZW50Rmx1c2hlZD0hMCxkLnN0YXR1cyl7Y2FzZSAwOnZhciBtPWQuaWQ9ZS5uZXh0U2VnbWVudElkKys7cmV0dXJuIGQubGFzdFB1c2hlZFRleHQ9ITEsZC50ZXh0RW1iZWRkZWQ9ITEsZT1lLnJlc3BvbnNlU3RhdGUscChzLFltKSxwKHMsZS5wbGFjZWhvbGRlclByZWZpeCkscChzLGU9dShtLnRvU3RyaW5nKDE2KSkpLHQocyxlZik7Y2FzZSAxOmQuc3RhdHVzPTI7dmFyIGg9ITA7bT1kLmNodW5rczt2YXIgZz0wO2Q9ZC5jaGlsZHJlbjtmb3IodmFyIHg9MDt4PGQubGVuZ3RoO3grKyl7Zm9yKGg9ZFt4XTtnPGguaW5kZXg7ZysrKXAocyxtW2ddKTtoPWhkKGUscyxoKX1mb3IoO2c8bS5sZW5ndGgtMTtnKyspcChzLG1bZ10pO3JldHVybiBnPG0ubGVuZ3RoJiYoaD10KHMsbVtnXSkpLGg7ZGVmYXVsdDp0aHJvdyBFcnJvcihrKDM5MCkpfX1mdW5jdGlvbiBoZChlLHMsZCl7dmFyIG09ZC5ib3VuZGFyeTtpZihudWxsPT09bSlyZXR1cm4gZ2QoZSxzLGQpO2lmKG0ucGFyZW50Rmx1c2hlZD0hMCxtLmZvcmNlQ2xpZW50UmVuZGVyKW09bS5lcnJvckRpZ2VzdCx0KHMsb2YpLHAocyxzZiksbSYmKHAocyxjZikscChzLHUoQyhtKSkpLHAocyxsZikpLHQocyx1ZiksZ2QoZSxzLGQpO2Vsc2UgaWYoMDxtLnBlbmRpbmdUYXNrcyl7bS5yb290U2VnbWVudElEPWUubmV4dFNlZ21lbnRJZCsrLDA8bS5jb21wbGV0ZWRTZWdtZW50cy5sZW5ndGgmJmUucGFydGlhbEJvdW5kYXJpZXMucHVzaChtKTt2YXIgaD1lLnJlc3BvbnNlU3RhdGUsZz1oLm5leHRTdXNwZW5zZUlEKys7aD13KGguYm91bmRhcnlQcmVmaXgrZy50b1N0cmluZygxNikpLG09bS5pZD1oLGZiKHMsZS5yZXNwb25zZVN0YXRlLG0pLGdkKGUscyxkKX1lbHNlIGlmKG0uYnl0ZVNpemU+ZS5wcm9ncmVzc2l2ZUNodW5rU2l6ZSltLnJvb3RTZWdtZW50SUQ9ZS5uZXh0U2VnbWVudElkKyssZS5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2gobSksZmIocyxlLnJlc3BvbnNlU3RhdGUsbS5pZCksZ2QoZSxzLGQpO2Vsc2V7aWYodChzLHRmKSwxIT09KGQ9bS5jb21wbGV0ZWRTZWdtZW50cykubGVuZ3RoKXRocm93IEVycm9yKGsoMzkxKSk7aGQoZSxzLGRbMF0pfXJldHVybiB0KHMsYWYpfWZ1bmN0aW9uIGlkKGUscyxkKXtyZXR1cm4gZnVuY3Rpb24oZSxzLGQsbSl7c3dpdGNoKGQuaW5zZXJ0aW9uTW9kZSl7Y2FzZSAwOmNhc2UgMTpyZXR1cm4gcChlLGRmKSxwKGUscy5zZWdtZW50UHJlZml4KSxwKGUsdShtLnRvU3RyaW5nKDE2KSkpLHQoZSxwZik7Y2FzZSAyOnJldHVybiBwKGUsZmYpLHAoZSxzLnNlZ21lbnRQcmVmaXgpLHAoZSx1KG0udG9TdHJpbmcoMTYpKSksdChlLGhmKTtjYXNlIDM6cmV0dXJuIHAoZSx2ZikscChlLHMuc2VnbWVudFByZWZpeCkscChlLHUobS50b1N0cmluZygxNikpKSx0KGUseWYpO2Nhc2UgNDpyZXR1cm4gcChlLF9mKSxwKGUscy5zZWdtZW50UHJlZml4KSxwKGUsdShtLnRvU3RyaW5nKDE2KSkpLHQoZSx4Zik7Y2FzZSA1OnJldHVybiBwKGUsJGYpLHAoZSxzLnNlZ21lbnRQcmVmaXgpLHAoZSx1KG0udG9TdHJpbmcoMTYpKSksdChlLFNmKTtjYXNlIDY6cmV0dXJuIHAoZSxqZikscChlLHMuc2VnbWVudFByZWZpeCkscChlLHUobS50b1N0cmluZygxNikpKSx0KGUsemYpO2Nhc2UgNzpyZXR1cm4gcChlLENmKSxwKGUscy5zZWdtZW50UHJlZml4KSxwKGUsdShtLnRvU3RyaW5nKDE2KSkpLHQoZSxUZik7ZGVmYXVsdDp0aHJvdyBFcnJvcihrKDM5NykpfX0ocyxlLnJlc3BvbnNlU3RhdGUsZC5mb3JtYXRDb250ZXh0LGQuaWQpLGhkKGUscyxkKSxmdW5jdGlvbihlLHMpe3N3aXRjaChzLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIHQoZSxtZik7Y2FzZSAyOnJldHVybiB0KGUsZ2YpO2Nhc2UgMzpyZXR1cm4gdChlLGJmKTtjYXNlIDQ6cmV0dXJuIHQoZSx3Zik7Y2FzZSA1OnJldHVybiB0KGUsa2YpO2Nhc2UgNjpyZXR1cm4gdChlLElmKTtjYXNlIDc6cmV0dXJuIHQoZSxSZik7ZGVmYXVsdDp0aHJvdyBFcnJvcihrKDM5NykpfX0ocyxkLmZvcm1hdENvbnRleHQpfWZ1bmN0aW9uIGpkKGUscyxkKXtmb3IodmFyIG09ZC5jb21wbGV0ZWRTZWdtZW50cyxoPTA7aDxtLmxlbmd0aDtoKyspa2QoZSxzLGQsbVtoXSk7aWYobS5sZW5ndGg9MCxlPWUucmVzcG9uc2VTdGF0ZSxtPWQuaWQsZD1kLnJvb3RTZWdtZW50SUQscChzLGUuc3RhcnRJbmxpbmVTY3JpcHQpLGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj9wKHMsVWYpOihlLnNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb249ITAscChzLERmKSksbnVsbD09PW0pdGhyb3cgRXJyb3IoaygzOTUpKTtyZXR1cm4gZD11KGQudG9TdHJpbmcoMTYpKSxwKHMsbSkscChzLExmKSxwKHMsZS5zZWdtZW50UHJlZml4KSxwKHMsZCksdChzLEFmKX1mdW5jdGlvbiBrZChlLHMsZCxtKXtpZigyPT09bS5zdGF0dXMpcmV0dXJuITA7dmFyIGg9bS5pZDtpZigtMT09PWgpe2lmKC0xPT09KG0uaWQ9ZC5yb290U2VnbWVudElEKSl0aHJvdyBFcnJvcihrKDM5MikpO3JldHVybiBpZChlLHMsbSl9cmV0dXJuIGlkKGUscyxtKSxwKHMsKGU9ZS5yZXNwb25zZVN0YXRlKS5zdGFydElubGluZVNjcmlwdCksZS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb24/cChzLE9mKTooZS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb249ITAscChzLEVmKSkscChzLGUuc2VnbWVudFByZWZpeCkscChzLGg9dShoLnRvU3RyaW5nKDE2KSkpLHAocyxQZikscChzLGUucGxhY2Vob2xkZXJQcmVmaXgpLHAocyxoKSx0KHMsTmYpfWZ1bmN0aW9uIGZkKGUscyl7bW09bmV3IFVpbnQ4QXJyYXkoNTEyKSxmbT0wO3RyeXt2YXIgZD1lLmNvbXBsZXRlZFJvb3RTZWdtZW50O2lmKG51bGwhPT1kJiYwPT09ZS5wZW5kaW5nUm9vdFRhc2tzKXtoZChlLHMsZCksZS5jb21wbGV0ZWRSb290U2VnbWVudD1udWxsO3ZhciBtPWUucmVzcG9uc2VTdGF0ZS5ib290c3RyYXBDaHVua3M7Zm9yKGQ9MDtkPG0ubGVuZ3RoLTE7ZCsrKXAocyxtW2RdKTtkPG0ubGVuZ3RoJiZ0KHMsbVtkXSl9dmFyIGgsZz1lLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcztmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgeD1nW2hdO209czt2YXIgJD1lLnJlc3BvbnNlU3RhdGUsUz14LmlkLGo9eC5lcnJvckRpZ2VzdCx6PXguZXJyb3JNZXNzYWdlLEk9eC5lcnJvckNvbXBvbmVudFN0YWNrO2lmKHAobSwkLnN0YXJ0SW5saW5lU2NyaXB0KSwkLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj9wKG0sRmYpOigkLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj0hMCxwKG0scWYpKSxudWxsPT09Uyl0aHJvdyBFcnJvcihrKDM5NSkpO3AobSxTKSxwKG0sQmYpLChqfHx6fHxJKSYmKHAobSxNZikscChtLHUoU2Ioanx8IiIpKSkpLCh6fHxJKSYmKHAobSxNZikscChtLHUoU2Ioenx8IiIpKSkpLEkmJihwKG0sTWYpLHAobSx1KFNiKEkpKSkpLHQobSxaZil9Zy5zcGxpY2UoMCxoKTt2YXIgVD1lLmNvbXBsZXRlZEJvdW5kYXJpZXM7Zm9yKGg9MDtoPFQubGVuZ3RoO2grKylqZChlLHMsVFtoXSk7VC5zcGxpY2UoMCxoKSxiYShzKSxtbT1uZXcgVWludDhBcnJheSg1MTIpLGZtPTA7dmFyIFI9ZS5wYXJ0aWFsQm91bmRhcmllcztmb3IoaD0wO2g8Ui5sZW5ndGg7aCsrKXt2YXIgRT1SW2hdO2U6e2c9ZSx4PXM7dmFyIE89RS5jb21wbGV0ZWRTZWdtZW50cztmb3IoJD0wOyQ8Ty5sZW5ndGg7JCsrKWlmKCFrZChnLHgsRSxPWyRdKSl7JCsrLE8uc3BsaWNlKDAsJCk7dmFyIE49ITE7YnJlYWsgZX1PLnNwbGljZSgwLCQpLE49ITB9aWYoIU4pcmV0dXJuIGUuZGVzdGluYXRpb249bnVsbCxoKyssdm9pZCBSLnNwbGljZSgwLGgpfVIuc3BsaWNlKDAsaCk7dmFyIFU9ZS5jb21wbGV0ZWRCb3VuZGFyaWVzO2ZvcihoPTA7aDxVLmxlbmd0aDtoKyspamQoZSxzLFVbaF0pO1Uuc3BsaWNlKDAsaCl9ZmluYWxseXtiYShzKSwwPT09ZS5hbGxQZW5kaW5nVGFza3MmJjA9PT1lLnBpbmdlZFRhc2tzLmxlbmd0aCYmMD09PWUuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLmxlbmd0aCYmMD09PWUuY29tcGxldGVkQm91bmRhcmllcy5sZW5ndGgmJnMuY2xvc2UoKX19ZnVuY3Rpb24gbGQoZSxzKXt0cnl7dmFyIGQ9ZS5hYm9ydGFibGVUYXNrcztkLmZvckVhY2goZnVuY3Rpb24oZCl7cmV0dXJuIGVkKGQsZSxzKX0pLGQuY2xlYXIoKSxudWxsIT09ZS5kZXN0aW5hdGlvbiYmZmQoZSxlLmRlc3RpbmF0aW9uKX1jYXRjaChzKXtZKGUscyksVmMoZSxzKX19ZG0ucmVuZGVyVG9SZWFkYWJsZVN0cmVhbT1mdW5jdGlvbihlLHMpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLG0pe3ZhciBoLGcseD1uZXcgUHJvbWlzZShmdW5jdGlvbihlLHMpe2c9ZSxoPXN9KSwkPWZ1bmN0aW9uKGUscyxkLG0saCxnLHgsJCxTKXt2YXIgaj1bXSx6PW5ldyBTZXQ7cmV0dXJuKGQ9U2Mocz17ZGVzdGluYXRpb246bnVsbCxyZXNwb25zZVN0YXRlOnMscHJvZ3Jlc3NpdmVDaHVua1NpemU6dm9pZCAwPT09bT8xMjgwMDptLHN0YXR1czowLGZhdGFsRXJyb3I6bnVsbCxuZXh0U2VnbWVudElkOjAsYWxsUGVuZGluZ1Rhc2tzOjAscGVuZGluZ1Jvb3RUYXNrczowLGNvbXBsZXRlZFJvb3RTZWdtZW50Om51bGwsYWJvcnRhYmxlVGFza3M6eixwaW5nZWRUYXNrczpqLGNsaWVudFJlbmRlcmVkQm91bmRhcmllczpbXSxjb21wbGV0ZWRCb3VuZGFyaWVzOltdLHBhcnRpYWxCb3VuZGFyaWVzOltdLG9uRXJyb3I6dm9pZCAwPT09aD9RYzpoLG9uQWxsUmVhZHk6dm9pZCAwPT09Zz9YOmcsb25TaGVsbFJlYWR5OnZvaWQgMD09PXg/WDp4LG9uU2hlbGxFcnJvcjp2b2lkIDA9PT0kP1g6JCxvbkZhdGFsRXJyb3I6dm9pZCAwPT09Uz9YOlN9LDAsbnVsbCxkLCExLCExKSkucGFyZW50Rmx1c2hlZD0hMCxlPVRjKHMsZSxudWxsLGQseix1aCxudWxsLG1oKSxqLnB1c2goZSksc30oZSxmdW5jdGlvbihlLHMsZCxtLGgpe2U9dm9pZCAwPT09ZT8iIjplLHM9dm9pZCAwPT09cz9DbTp3KCc8c2NyaXB0IG5vbmNlPSInK0MocykrJyI+Jyk7dmFyIGc9W107aWYodm9pZCAwIT09ZCYmZy5wdXNoKHMsdSgoIiIrZCkucmVwbGFjZShQbSx5YSkpLFRtKSx2b2lkIDAhPT1tKWZvcihkPTA7ZDxtLmxlbmd0aDtkKyspZy5wdXNoKFJtLHUoQyhtW2RdKSksT20pO2lmKHZvaWQgMCE9PWgpZm9yKG09MDttPGgubGVuZ3RoO20rKylnLnB1c2goRW0sdShDKGhbbV0pKSxPbSk7cmV0dXJue2Jvb3RzdHJhcENodW5rczpnLHN0YXJ0SW5saW5lU2NyaXB0OnMscGxhY2Vob2xkZXJQcmVmaXg6dyhlKyJQOiIpLHNlZ21lbnRQcmVmaXg6dyhlKyJTOiIpLGJvdW5kYXJ5UHJlZml4OmUrIkI6IixpZFByZWZpeDplLG5leHRTdXNwZW5zZUlEOjAsc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uOiExLHNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb246ITEsc2VudENsaWVudFJlbmRlckZ1bmN0aW9uOiExfX0ocz9zLmlkZW50aWZpZXJQcmVmaXg6dm9pZCAwLHM/cy5ub25jZTp2b2lkIDAscz9zLmJvb3RzdHJhcFNjcmlwdENvbnRlbnQ6dm9pZCAwLHM/cy5ib290c3RyYXBTY3JpcHRzOnZvaWQgMCxzP3MuYm9vdHN0cmFwTW9kdWxlczp2b2lkIDApLGZ1bmN0aW9uKGUpe3JldHVybiBEKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI9PT1lPzI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiPT09ZT8zOjAsbnVsbCl9KHM/cy5uYW1lc3BhY2VVUkk6dm9pZCAwKSxzP3MucHJvZ3Jlc3NpdmVDaHVua1NpemU6dm9pZCAwLHM/cy5vbkVycm9yOnZvaWQgMCxnLGZ1bmN0aW9uKCl7dmFyIGU9bmV3IFJlYWRhYmxlU3RyZWFtKHt0eXBlOiJieXRlcyIscHVsbDpmdW5jdGlvbihlKXtpZigxPT09JC5zdGF0dXMpJC5zdGF0dXM9MixkYShlLCQuZmF0YWxFcnJvcik7ZWxzZSBpZigyIT09JC5zdGF0dXMmJm51bGw9PT0kLmRlc3RpbmF0aW9uKXskLmRlc3RpbmF0aW9uPWU7dHJ5e2ZkKCQsZSl9Y2F0Y2goZSl7WSgkLGUpLFZjKCQsZSl9fX0sY2FuY2VsOmZ1bmN0aW9uKCl7bGQoJCl9fSx7aGlnaFdhdGVyTWFyazowfSk7ZS5hbGxSZWFkeT14LGQoZSl9LGZ1bmN0aW9uKGUpe3guY2F0Y2goZnVuY3Rpb24oKXt9KSxtKGUpfSxoKTtpZihzJiZzLnNpZ25hbCl7dmFyIFM9cy5zaWduYWwscT1mdW5jdGlvbigpe2xkKCQsUy5yZWFzb24pLFMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHEpfTtTLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixxKX1VYygkKX0pfSxkbS52ZXJzaW9uPSIxOC4yLjAiLHpoPURkLEloPWRtO3ZhciBFaD1OZC52ZXJzaW9uPXpoLnZlcnNpb24sT2g9TmQucmVuZGVyVG9TdHJpbmc9emgucmVuZGVyVG9TdHJpbmcsUGg9TmQucmVuZGVyVG9TdGF0aWNNYXJrdXA9emgucmVuZGVyVG9TdGF0aWNNYXJrdXAsTmg9TmQucmVuZGVyVG9Ob2RlU3RyZWFtPXpoLnJlbmRlclRvTm9kZVN0cmVhbSxEaD1OZC5yZW5kZXJUb1N0YXRpY05vZGVTdHJlYW09emgucmVuZGVyVG9TdGF0aWNOb2RlU3RyZWFtLFVoPU5kLnJlbmRlclRvUmVhZGFibGVTdHJlYW09SWgucmVuZGVyVG9SZWFkYWJsZVN0cmVhbTtjb25zdCBMaD1fbWVyZ2VOYW1lc3BhY2VzKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0Ok5kLHJlbmRlclRvTm9kZVN0cmVhbTpOaCxyZW5kZXJUb1JlYWRhYmxlU3RyZWFtOlVoLHJlbmRlclRvU3RhdGljTWFya3VwOlBoLHJlbmRlclRvU3RhdGljTm9kZVN0cmVhbTpEaCxyZW5kZXJUb1N0cmluZzpPaCx2ZXJzaW9uOkVofSxbTmRdKTt2YXIgX19hc3luYyQxPShlLHMsZCk9Pm5ldyBQcm9taXNlKChtLGgpPT57dmFyIGZ1bGZpbGxlZD1lPT57dHJ5e3N0ZXAoZC5uZXh0KGUpKX1jYXRjaChlKXtoKGUpfX0scmVqZWN0ZWQ9ZT0+e3RyeXtzdGVwKGQudGhyb3coZSkpfWNhdGNoKGUpe2goZSl9fSxzdGVwPWU9PmUuZG9uZT9tKGUudmFsdWUpOlByb21pc2UucmVzb2x2ZShlLnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCk7c3RlcCgoZD1kLmFwcGx5KGUscykpLm5leHQoKSl9KSxyZW5kZXJBc3luYz0oZSxzKT0+X19hc3luYyQxKHZvaWQgMCxudWxsLGZ1bmN0aW9uKigpe2NvbnN0IHM9KHlpZWxkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gTGh9KSkuZGVmYXVsdCxkPXMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbXx8cy5yZW5kZXJUb1N0cmluZ3x8cy5yZW5kZXJUb1BpcGVhYmxlU3RyZWFtLG09eWllbGQgZChlKSxoPSJzdHJpbmciPT10eXBlb2YgbT9tOnlpZWxkKGU9Pl9fYXN5bmMkMSh2b2lkIDAsbnVsbCxmdW5jdGlvbiooKXtjb25zdCBzPWUuZ2V0UmVhZGVyKCksZD1bXTtmb3IoOzspe2NvbnN0e3ZhbHVlOmUsZG9uZTptfT15aWVsZCBzLnJlYWQoKTtpZihtKWJyZWFrO2QucHVzaChlKX1yZXR1cm4gZC5tYXAoZT0+bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpLmRlY29kZShlKSkuam9pbigiIil9KSkobSk7cmV0dXJuYDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4ke2h9YH0pLEFoPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxxaD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLEZoPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQmg9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxfX2RlZk5vcm1hbFByb3A9KGUscyxkKT0+cyBpbiBlP0FoKGUscyx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZH0pOmVbc109ZCxfX3NwcmVhZFZhbHVlcz0oZSxzKT0+e2Zvcih2YXIgZCBpbiBzfHwocz17fSkpRmguY2FsbChzLGQpJiZfX2RlZk5vcm1hbFByb3AoZSxkLHNbZF0pO2lmKHFoKWZvcih2YXIgZCBvZiBxaChzKSlCaC5jYWxsKHMsZCkmJl9fZGVmTm9ybWFsUHJvcChlLGQsc1tkXSk7cmV0dXJuIGV9LF9fYXN5bmM9KGUscyxkKT0+bmV3IFByb21pc2UoKG0saCk9Pnt2YXIgZnVsZmlsbGVkPWU9Pnt0cnl7c3RlcChkLm5leHQoZSkpfWNhdGNoKGUpe2goZSl9fSxyZWplY3RlZD1lPT57dHJ5e3N0ZXAoZC50aHJvdyhlKSl9Y2F0Y2goZSl7aChlKX19LHN0ZXA9ZT0+ZS5kb25lP20oZS52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGUudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKTtzdGVwKChkPWQuYXBwbHkoZSxzKSkubmV4dCgpKX0pLFpoPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMucmVzZW5kPWV9Y3JlYXRlKGUpe3JldHVybiBfX2FzeW5jKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKihlLHM9e30pe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5wb3N0KCIvYXBpLWtleXMiLGUscyl9KX1saXN0KCl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5nZXQoIi9hcGkta2V5cyIpfSl9cmVtb3ZlKGUpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZGVsZXRlKGAvYXBpLWtleXMvJHtlfWApfSl9fSxNaD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLnJlc2VuZD1lfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQucG9zdCgiL2F1ZGllbmNlcyIsZSxzKX0pfWxpc3QoKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmdldCgiL2F1ZGllbmNlcyIpfSl9Z2V0KGUpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KGAvYXVkaWVuY2VzLyR7ZX1gKX0pfXJlbW92ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmRlbGV0ZShgL2F1ZGllbmNlcy8ke2V9YCl9KX19LFFoPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMucmVzZW5kPWV9c2VuZChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4gdGhpcy5jcmVhdGUoZSxzKX0pfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtmb3IoY29uc3QgcyBvZiBlKXMucmVhY3QmJihzLmh0bWw9eWllbGQgcmVuZGVyQXN5bmMocy5yZWFjdCksZGVsZXRlIHMucmVhY3QpO3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5wb3N0KCIvZW1haWxzL2JhdGNoIixlLHMpfSl9fSxWaD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLnJlc2VuZD1lfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQucG9zdChgL2F1ZGllbmNlcy8ke2UuYXVkaWVuY2VfaWR9L2NvbnRhY3RzYCxlLHMpfSl9bGlzdChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooe2F1ZGllbmNlX2lkOmV9KXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KGAvYXVkaWVuY2VzLyR7ZX0vY29udGFjdHNgKX0pfWdldChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooe2F1ZGllbmNlX2lkOmUsaWQ6c30pe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5nZXQoYC9hdWRpZW5jZXMvJHtlfS9jb250YWN0cy8ke3N9YCl9KX11cGRhdGUoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5wYXRjaChgL2F1ZGllbmNlcy8ke2UuYXVkaWVuY2VfaWR9L2NvbnRhY3RzLyR7ZS5pZH1gLGUpfSl9cmVtb3ZlKGUpe3JldHVybiBfX2FzeW5jKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKih7YXVkaWVuY2VfaWQ6ZSxpZDpzfSl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmRlbGV0ZShgL2F1ZGllbmNlcy8ke2V9L2NvbnRhY3RzLyR7c31gKX0pfX0sSGg9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5yZXNlbmQ9ZX1jcmVhdGUoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxhcmd1bWVudHMsZnVuY3Rpb24qKGUscz17fSl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLnBvc3QoIi9kb21haW5zIixlLHMpfSl9bGlzdCgpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KCIvZG9tYWlucyIpfSl9Z2V0KGUpe3JldHVybiBfX2FzeW5jKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQuZ2V0KGAvZG9tYWlucy8ke2V9YCl9KX1yZW1vdmUoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlc2VuZC5kZWxldGUoYC9kb21haW5zLyR7ZX1gKX0pfXZlcmlmeShlKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLnBvc3QoYC9kb21haW5zLyR7ZX0vdmVyaWZ5YCl9KX19LFdoPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMucmVzZW5kPWV9c2VuZChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtyZXR1cm4gdGhpcy5jcmVhdGUoZSxzKX0pfWNyZWF0ZShlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtlLnJlYWN0JiYoZS5odG1sPXlpZWxkIHJlbmRlckFzeW5jKGUucmVhY3QpLGRlbGV0ZSBlLnJlYWN0KTtyZXR1cm4geWllbGQgdGhpcy5yZXNlbmQucG9zdCgiL2VtYWlscyIsZSxzKX0pfWdldChlKXtyZXR1cm4gX19hc3luYyh0aGlzLG51bGwsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMucmVzZW5kLmdldChgL2VtYWlscy8ke2V9YCl9KX19LEpoPSJodHRwczovL2FwaS5yZXNlbmQuY29tIixLaD0icmVzZW5kLW5vZGU6Mi4xLjAiLEdoPXZvaWQgMCE9PVQmJlQuZW52JiZULmVudi5SRVNFTkRfQkFTRV9VUkx8fEpoLFhoPXZvaWQgMCE9PVQmJlQuZW52JiZULmVudi5SRVNFTkRfVVNFUl9BR0VOVHx8S2gsWWg9Y2xhc3N7Y29uc3RydWN0b3IoZSl7aWYodGhpcy5rZXk9ZSx0aGlzLmFwaUtleXM9bmV3IFpoKHRoaXMpLHRoaXMuYXVkaWVuY2VzPW5ldyBNaCh0aGlzKSx0aGlzLmJhdGNoPW5ldyBRaCh0aGlzKSx0aGlzLmNvbnRhY3RzPW5ldyBWaCh0aGlzKSx0aGlzLmRvbWFpbnM9bmV3IEhoKHRoaXMpLHRoaXMuZW1haWxzPW5ldyBXaCh0aGlzKSwhZSYmKHZvaWQgMCE9PVQmJlQuZW52JiYodGhpcy5rZXk9VC5lbnYuUkVTRU5EX0FQSV9LRVkpLCF0aGlzLmtleSkpdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEFQSSBrZXkuIFBhc3MgaXQgdG8gdGhlIGNvbnN0cnVjdG9yIGBuZXcgUmVzZW5kKCJyZV8xMjMiKWAnKTt0aGlzLmhlYWRlcnM9bmV3IEhlYWRlcnMoe0F1dGhvcml6YXRpb246YEJlYXJlciAke3RoaXMua2V5fWAsIlVzZXItQWdlbnQiOlhoLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0pfWZldGNoUmVxdWVzdChlKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzPXt9KXtjb25zdCBkPXlpZWxkIGZldGNoKGAke0dofSR7ZX1gLHMpO2lmKCFkLm9rKXtjb25zdCBlPXlpZWxkIGQuanNvbigpO3JldHVybihlPT57aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4hMTtjb25zdCBzPWU7aWYoIm9iamVjdCIhPXR5cGVvZiBzfHxudWxsPT09cylyZXR1cm4hMTtjb25zdHttZXNzYWdlOmQsbmFtZTptfT1zfSkoZSkse2RhdGE6bnVsbCxlcnJvcjplfX1yZXR1cm57ZGF0YTp5aWVsZCBkLmpzb24oKSxlcnJvcjpudWxsfX0pfXBvc3QoZSxzKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzLGQ9e30pe2NvbnN0IG09X19zcHJlYWRWYWx1ZXMoe21ldGhvZDoiUE9TVCIsaGVhZGVyczp0aGlzLmhlYWRlcnMsYm9keTpKU09OLnN0cmluZ2lmeShzKX0sZCk7cmV0dXJuIHRoaXMuZmV0Y2hSZXF1ZXN0KGUsbSl9KX1nZXQoZSl7cmV0dXJuIF9fYXN5bmModGhpcyxhcmd1bWVudHMsZnVuY3Rpb24qKGUscz17fSl7Y29uc3QgZD1fX3NwcmVhZFZhbHVlcyh7bWV0aG9kOiJHRVQiLGhlYWRlcnM6dGhpcy5oZWFkZXJzfSxzKTtyZXR1cm4gdGhpcy5mZXRjaFJlcXVlc3QoZSxkKX0pfXB1dChlLHMpe3JldHVybiBfX2FzeW5jKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKihlLHMsZD17fSl7Y29uc3QgbT1fX3NwcmVhZFZhbHVlcyh7bWV0aG9kOiJQVVQiLGhlYWRlcnM6dGhpcy5oZWFkZXJzLGJvZHk6SlNPTi5zdHJpbmdpZnkocyl9LGQpO3JldHVybiB0aGlzLmZldGNoUmVxdWVzdChlLG0pfSl9cGF0Y2goZSxzKXtyZXR1cm4gX19hc3luYyh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooZSxzLGQ9e30pe2NvbnN0IG09X19zcHJlYWRWYWx1ZXMoe21ldGhvZDoiUEFUQ0giLGhlYWRlcnM6dGhpcy5oZWFkZXJzLGJvZHk6SlNPTi5zdHJpbmdpZnkocyl9LGQpO3JldHVybiB0aGlzLmZldGNoUmVxdWVzdChlLG0pfSl9ZGVsZXRlKGUscyl7cmV0dXJuIF9fYXN5bmModGhpcyxudWxsLGZ1bmN0aW9uKigpe2NvbnN0IGQ9e21ldGhvZDoiREVMRVRFIixoZWFkZXJzOnRoaXMuaGVhZGVycyxib2R5OkpTT04uc3RyaW5naWZ5KHMpfTtyZXR1cm4gdGhpcy5mZXRjaFJlcXVlc3QoZSxkKX0pfX07Y29uc3QgdXNlUmVzZW5kPSgpPT57Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkucmVzZW5kLmFwaUtleTtyZXR1cm4gbmV3IFloKGUpfTtsZXQgcmFuZG9tPWU9PmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoZSkpLGN1c3RvbUFscGhhYmV0PShlLHM9MjEpPT4oKGUscyxkKT0+e2xldCBtPSgyPDxNYXRoLmxvZzIoZS5sZW5ndGgtMSkpLTEsaD0tfigxLjYqbSpzL2UubGVuZ3RoKTtyZXR1cm4oZz1zKT0+e2xldCB4PSIiO2Zvcig7Oyl7bGV0IHM9ZChoKSwkPTB8aDtmb3IoOyQtLTspaWYoeCs9ZVtzWyRdJm1dfHwiIix4Lmxlbmd0aD49ZylyZXR1cm4geH19fSkoZSwwfHMscmFuZG9tKTtmdW5jdGlvbiBzaW1wbGlmeU5hbm9JZChlPTIxKXtyZXR1cm4gY3VzdG9tQWxwaGFiZXQoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsZSkoKX1mdW5jdGlvbiBlc2NhcGVMaWtlKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXCVfXS9nLGU9PmBcXCR7ZX1gKX1mdW5jdGlvbiBzYWZlRXF1YWwoZSxzKXtjb25zdCBkPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSxtPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShzKTtpZihkLmxlbmd0aCE9PW0ubGVuZ3RoKXJldHVybiExO2xldCBoPTA7Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspaHw9ZFtlXV5tW2VdO3JldHVybiAwPT09aH1hc3luYyBmdW5jdGlvbiBnZXRDYWNoZWRPckZldGNoKGUscyxkPTM2MDApe2NvbnN0IG09YXdhaXQgT2QuZ2V0KGUpO2lmKG0pcmV0dXJuIG07Y29uc3QgaD1hd2FpdCBzKCk7cmV0dXJuIGgmJmF3YWl0IE9kLnNldChlLGgse3R0bDpkfSksaH1mdW5jdGlvbiBkZWZpbmVTY2hlZHVsZWRUYXNrKGUscyl7cmV0dXJuIGRlZmluZVRhc2socyl9ZnVuY3Rpb24gdG9CYXNlNjQocyl7cmV0dXJuIGUuZnJvbShzKS50b1N0cmluZygiYmFzZTY0Iil9ZnVuY3Rpb24gZnJvbUJhc2U2NChzKXtyZXR1cm4gVWludDhBcnJheS5mcm9tKGUuZnJvbShzLCJiYXNlNjQiKSl9YXN5bmMgZnVuY3Rpb24ga2V5KCl7Y29uc3QgZT11c2VSdW50aW1lQ29uZmlnKCkuYXV0aFNlY3JldDtpZighZSl0aHJvdyBjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOiJhdXRoU2VjcmV0IG5vdCBjb25maWd1cmVkIn0pO2NvbnN0IHM9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSk7cmV0dXJuIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHMsIkFFUy1HQ00iLCExLFsiZW5jcnlwdCIsImRlY3J5cHQiXSl9YXN5bmMgZnVuY3Rpb24gZW5jcnlwdFNlY3JldChlKXtjb25zdCBzPW5ldyBVaW50OEFycmF5KDEyKTtjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHMpO2NvbnN0IGQ9YXdhaXQgY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiJBRVMtR0NNIixpdjpzfSxhd2FpdCBrZXkoKSwobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoZSkpO3JldHVybntjaXBoZXJ0ZXh0OnRvQmFzZTY0KG5ldyBVaW50OEFycmF5KGQpKSxpdjp0b0Jhc2U2NChzKX19YXN5bmMgZnVuY3Rpb24gZGVjcnlwdFNlY3JldChlKXtjb25zdCBzPWF3YWl0IGNyeXB0by5zdWJ0bGUuZGVjcnlwdCh7bmFtZToiQUVTLUdDTSIsaXY6ZnJvbUJhc2U2NChlLml2KX0sYXdhaXQga2V5KCksZnJvbUJhc2U2NChlLmNpcGhlcnRleHQpKTtyZXR1cm4obmV3IFRleHREZWNvZGVyKS5kZWNvZGUocyl9Y29uc3QgZWc9W3t0eXBlOiJpbWFnZS9wbmciLGV4dDoicG5nIixieXRlczpbMTM3LDgwLDc4LDcxXX0se3R5cGU6ImltYWdlL2pwZWciLGV4dDoianBnIixieXRlczpbMjU1LDIxNiwyNTVdfSx7dHlwZToiaW1hZ2UvZ2lmIixleHQ6ImdpZiIsYnl0ZXM6WzcxLDczLDcwLDU2XX0se3R5cGU6ImltYWdlL3dlYnAiLGV4dDoid2VicCIsYnl0ZXM6WzgyLDczLDcwLDcwXX1dO2Z1bmN0aW9uIHNuaWZmSW1hZ2UoZSl7Zm9yKGNvbnN0IHMgb2YgZWcpaWYocy5ieXRlcy5ldmVyeSgocyxkKT0+ZVtkXT09PXMpKXtpZigiaW1hZ2Uvd2VicCI9PT1zLnR5cGUmJig4NyE9PWVbOF18fDY5IT09ZVs5XXx8NjYhPT1lWzEwXXx8ODAhPT1lWzExXSkpY29udGludWU7cmV0dXJue3R5cGU6cy50eXBlLGV4dDpzLmV4dH19cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ2V0QmFzZVVybChlKXtpZihlKXtyZXR1cm5gJHtnZXRSZXF1ZXN0UHJvdG9jb2woZSl9Oi8vJHtnZXRSZXF1ZXN0SG9zdChlKX1gfWNvbnN0IHM9dXNlUnVudGltZUNvbmZpZygpO3JldHVybmAke3MucHVibGljLnNzbEVuYWJsZWQ/Imh0dHBzIjoiaHR0cCJ9Oi8vJHtzLnB1YmxpYy5iYXNlRG9tYWlufWB9Y29uc3QgX3M2NWEwN0hodDBNazZNdGxHNTFDcTloYmlaMVhoQ09FRFE0UWN6VFRCdWc9YXN5bmMoKT0+e30sdGc9Z2xvYmFsVGhpcy5jcnlwdG8sbmc9dGcuc3VidGxlLGlnPSJBRVMtQ0JDIixjcmVhdGU9YXN5bmMocyxkLG0pPT57Y29uc3QgaD0oZT0+dGcuZ2V0UmFuZG9tVmFsdWVzKGUpKShuZXcgVWludDhBcnJheSgxNikpLGc9YXdhaXQgbmcuZW5jcnlwdCh7bmFtZTptfHxpZyxpdjpofSxkLChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShzKSkseD1lLmZyb20obmV3IFVpbnQ4QXJyYXkoZykpO3JldHVybmAke2UuZnJvbShoKS50b1N0cmluZygiYmFzZTY0Iil9OiR7eC50b1N0cmluZygiYmFzZTY0Iil9YH0scmFuZG9tU2VjcmV0PSgpPT50Zy5yYW5kb21VVUlEKCkscmFuZG9tRW5jcnlwdFNlY3JldD0oKT0+Wy4uLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMTYpKV0ubWFwKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIik7bGV0IHJnO2NvbnN0IHVzZVNlY3JldEtleT1hc3luYyBlPT5yZ3x8KHJnPWF3YWl0KGFzeW5jKGUscyk9Pntjb25zdCBkPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlPz9yYW5kb21FbmNyeXB0U2VjcmV0KCkpO3JldHVybiBhd2FpdCBuZy5pbXBvcnRLZXkoInJhdyIsZCx7bmFtZTpzfHxpZ30sITEsWyJlbmNyeXB0IiwiZGVjcnlwdCJdKX0pKGUuZW5jcnlwdFNlY3JldCxlLmVuY3J5cHRBbGdvcml0aG0pKSxfQTdzV1hyMnExbXF0WXJtbTlMbVl3akRBOWlUa0NkeE9SY3p4akVId1ZvPWU9Pntjb25zdCBzPXVzZVJ1bnRpbWVDb25maWcoKS5jc3VyZixkPXMuY29va2llS2V5O3MuYWRkQ3NyZlRva2VuVG9FdmVudEN0eD8oZS5ob29rcy5ob29rKCJyZXF1ZXN0Iixhc3luYyBlPT57Y29uc3R7Y3N1cmY6bX09Z2V0Um91dGVSdWxlcyhlKSxoPSEoITE9PT1tfHwhMT09PW0/LmVuYWJsZWQpO2xldCBnPWdldENvb2tpZShlLGQpO2d8fChnPXJhbmRvbVNlY3JldCgpLGgmJnNldENvb2tpZShlLGQsZyxzLmNvb2tpZSkpLGUuY29udGV4dC5jc3JmVG9rZW49YXdhaXQgY3JlYXRlKGcsYXdhaXQgdXNlU2VjcmV0S2V5KHMpLHMuZW5jcnlwdEFsZ29yaXRobSl9KSxlLmhvb2tzLmhvb2soInJlbmRlcjpodG1sIixhc3luYyhlLHtldmVudDpzfSk9PntlLmhlYWQucHVzaChgPG1ldGEgbmFtZT0iY3NyZi10b2tlbiIgY29udGVudD0iJHtzLmNvbnRleHQuY3NyZlRva2VufSI+YCl9KSk6ZS5ob29rcy5ob29rKCJyZW5kZXI6aHRtbCIsYXN5bmMoZSx7ZXZlbnQ6bX0pPT57bGV0IGg9Z2V0Q29va2llKG0sZCk7aHx8KGg9cmFuZG9tU2VjcmV0KCksc2V0Q29va2llKG0sZCxoLHMuY29va2llKSk7Y29uc3QgZz1hd2FpdCBjcmVhdGUoaCxhd2FpdCB1c2VTZWNyZXRLZXkocykscy5lbmNyeXB0QWxnb3JpdGhtKTtlLmhlYWQucHVzaChgPG1ldGEgbmFtZT0iY3NyZi10b2tlbiIgY29udGVudD0iJHtnfSI+YCl9KX07YXN5bmMgZnVuY3Rpb24gZ2V0QmFsYW5jZShlKXt2YXIgcztjb25zdCBkPWF3YWl0IEVkLnF1ZXJ5Lm9yZ2FuaXphdGlvbkNyZWRpdFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6ZXEodGQub3JnYW5pemF0aW9uX2lkLGUpLGNvbHVtbnM6e2JhbGFuY2U6ITB9fSk7cmV0dXJuIG51bGwhPShzPW51bGw9PWQ/dm9pZCAwOmQuYmFsYW5jZSk/czowfXZhciBvZz0oZT0+KGUuR09PR0xFPSJnb29nbGUiLGUuR0lUSFVCPSJnaXRodWIiLGUpKShvZ3x8e30pLGFnPShlPT4oZS5TSUdOX0lOPSJhdXRoOnNpZ25faW4iLGUuU0lHTl9VUD0iYXV0aDpzaWduX3VwIixlLklNUEVSU09OQVRFX1NUQVJUPSJhdXRoOmltcGVyc29uYXRlX3N0YXJ0IixlLklNUEVSU09OQVRFX1NUT1A9ImF1dGg6aW1wZXJzb25hdGVfc3RvcCIsZSkpKGFnfHx7fSk7ZnVuY3Rpb24gZW51bVZhbHVlcyhlKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyhlKX1jb25zdCBzZz1zcWxpdGVUYWJsZSgidXNlcnMiLHtpZDp0ZXh0KCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcm5hbWU6dGV4dCgidXNlcm5hbWUiKSxuYW1lOnRleHQoIm5hbWUiKSxwcmltYXJ5X2VtYWlsOnRleHQoInByaW1hcnlfZW1haWwiKS51bmlxdWUoKS5ub3ROdWxsKCkscHJpbWFyeV9waG9uZTp0ZXh0KCJwcmltYXJ5X3Bob25lIikudW5pcXVlKCksYXZhdGFyOnRleHQoImF2YXRhciIpLHZlcmlmaWVkOmludGVnZXIoInZlcmlmaWVkIix7bW9kZToiYm9vbGVhbiJ9KS5kZWZhdWx0KCExKSxlbWFpbF9ub3RpZmljYXRpb25zOmludGVnZXIoImVtYWlsX25vdGlmaWNhdGlvbnMiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITApLGJpbzp0ZXh0KCJiaW8iKSxub3RpZmljYXRpb25fcHJlZnM6dGV4dCgibm90aWZpY2F0aW9uX3ByZWZzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoe2VtYWlsOiEwLHByb2R1Y3RfdXBkYXRlczohMCx3ZWVrbHlfZGlnZXN0OiExLGltcG9ydGFudF91cGRhdGVzOiEwfSksY3VzdG9tX2RhdGE6dGV4dCgiY3VzdG9tX2RhdGEiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdCh7fSksbGFzdF9zaWduX2luX2F0OmludGVnZXIoImxhc3Rfc2lnbl9pbl9hdCIse21vZGU6InRpbWVzdGFtcCJ9KSxpc19zdXNwZW5kZWQ6aW50ZWdlcigiaXNfc3VzcGVuZGVkIix7bW9kZToiYm9vbGVhbiJ9KS5kZWZhdWx0KCExKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInVzZXJzX3VzZXJuYW1lX2lkeCIpLm9uKGUudXNlcm5hbWUpLGluZGV4KCJ1c2Vyc19uYW1lX2lkeCIpLm9uKGUubmFtZSldKTtzcWxpdGVUYWJsZSgiaWRlbnRpdGllcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxwcm92aWRlcjp0ZXh0KCJwcm92aWRlciIse2VudW06ZW51bVZhbHVlcyhvZyl9KS5ub3ROdWxsKCkscHJvdmlkZXJfdXNlcl9pZDp0ZXh0KCJwcm92aWRlcl91c2VyX2lkIikubm90TnVsbCgpLHByb3ZpZGVyX2RhdGE6dGV4dCgicHJvdmlkZXJfZGF0YSIse21vZGU6Impzb24ifSkuJHR5cGUoKSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmludGVnZXIoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoImlkZW50aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpLHVuaXF1ZUluZGV4KCJpZGVudGl0aWVzX3Byb3ZpZGVyX3VuaXF1ZV9pZHgiKS5vbihlLnByb3ZpZGVyLGUucHJvdmlkZXJfdXNlcl9pZCldKSxzcWxpdGVUYWJsZSgiYWN0aXZpdGllcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VyX2lkOnRleHQoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhY3Rpb246dGV4dCgiYWN0aW9uIix7ZW51bTplbnVtVmFsdWVzKGFnKX0pLm5vdE51bGwoKSxhY3Rpb25fcmVmX2lkOnRleHQoImFjdGlvbl9yZWZfaWQiKSx0ZXN0OnRleHQoInRlc3QiLHttb2RlOiJqc29uIn0pLG1ldGFkYXRhOnRleHQoIm1ldGFkYXRhIix7bW9kZToianNvbiJ9KSxjcmVhdGVkX2F0OmludGVnZXIoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W2luZGV4KCJhY3Rpdml0aWVzX3VzZXJfaWRfaWR4Iikub24oZS51c2VyX2lkKV0pO2NvbnN0IGxnPXNxbGl0ZVRhYmxlKCJvcmdhbml6YXRpb25zIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG5hbWU6dGV4dCgibmFtZSIpLm5vdE51bGwoKSxzbHVnOnRleHQoInNsdWciKS5ub3ROdWxsKCkudW5pcXVlKCksb3duZXJfaWQ6dGV4dCgib3duZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGlzX3BlcnNvbmFsOmludGVnZXIoImlzX3BlcnNvbmFsIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksaXNfc3lzdGVtOmludGVnZXIoImlzX3N5c3RlbSIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6aW50ZWdlcigidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9PltpbmRleCgib3JnYW5pemF0aW9uc19pc19zeXN0ZW1faWR4Iikub24oZS5pc19zeXN0ZW0pXSksY2c9c3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9tZW1iZXJzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6dGV4dCgidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnNnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksb3JnYW5pemF0aW9uX2lkOnRleHQoIm9yZ2FuaXphdGlvbl9pZCIpLnJlZmVyZW5jZXMoKCk9PmxnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksYWJpbGl0aWVzOnRleHQoImFiaWxpdGllcyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5ub3ROdWxsKCkuZGVmYXVsdChbXSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDppbnRlZ2VyKCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W3VuaXF1ZUluZGV4KCJvcmdfbWVtYmVyc191c2VyX29yZ191bmlxdWUiKS5vbihlLnVzZXJfaWQsZS5vcmdhbml6YXRpb25faWQpLGluZGV4KCJvcmdfbWVtYmVyc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpXSk7c3FsaXRlVGFibGUoInBlcm1pc3Npb25zIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLGtleTp0ZXh0KCJrZXkiKS5ub3ROdWxsKCkudW5pcXVlKCksc3ViamVjdDp0ZXh0KCJzdWJqZWN0Iikubm90TnVsbCgpLGFjdGlvbjp0ZXh0KCJhY3Rpb24iKS5ub3ROdWxsKCksc2NvcGU6dGV4dCgic2NvcGUiKSxvcmdfa2luZDp0ZXh0KCJvcmdfa2luZCIse2VudW06WyJzeXN0ZW0iLCJ0ZW5hbnQiXX0pLm5vdE51bGwoKSxkZXNjcmlwdGlvbjp0ZXh0KCJkZXNjcmlwdGlvbiIpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5baW5kZXgoInBlcm1pc3Npb25zX3N1YmplY3RfaWR4Iikub24oZS5zdWJqZWN0KV0pO2NvbnN0IHVnPXNxbGl0ZVRhYmxlKCJyb2xlcyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+bGcuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxuYW1lOnRleHQoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246dGV4dCgiZGVzY3JpcHRpb24iKSxwZXJtaXNzaW9uczp0ZXh0KCJwZXJtaXNzaW9ucyIse21vZGU6Impzb24ifSkuJHR5cGUoKS5ub3ROdWxsKCkuZGVmYXVsdChbXSksaXNfc3lzdGVtOmludGVnZXIoImlzX3N5c3RlbSIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6aW50ZWdlcigidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9Plt1bmlxdWVJbmRleCgicm9sZXNfb3JnX25hbWVfdW5pcXVlIikub24oZS5vcmdhbml6YXRpb25faWQsZS5uYW1lKSxpbmRleCgicm9sZXNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKV0pO3NxbGl0ZVRhYmxlKCJvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG1lbWJlcl9pZDp0ZXh0KCJtZW1iZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT5jZy5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHJvbGVfaWQ6dGV4dCgicm9sZV9pZCIpLnJlZmVyZW5jZXMoKCk9PnVnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9Plt1bmlxdWVJbmRleCgibWVtYmVyX3JvbGVzX3VuaXF1ZSIpLm9uKGUubWVtYmVyX2lkLGUucm9sZV9pZCksaW5kZXgoIm1lbWJlcl9yb2xlc19tZW1iZXJfaWR4Iikub24oZS5tZW1iZXJfaWQpLGluZGV4KCJtZW1iZXJfcm9sZXNfcm9sZV9pZHgiKS5vbihlLnJvbGVfaWQpXSksc3FsaXRlVGFibGUoIm9yZ2FuaXphdGlvbl9pbnZpdGF0aW9ucyIse2lkOnRleHQoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSxvcmdhbml6YXRpb25faWQ6dGV4dCgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+bGcuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxlbWFpbDp0ZXh0KCJlbWFpbCIpLm5vdE51bGwoKSxyb2xlX2lkOnRleHQoInJvbGVfaWQiKS5yZWZlcmVuY2VzKCgpPT51Zy5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLHRva2VuOnRleHQoInRva2VuIikubm90TnVsbCgpLnVuaXF1ZSgpLGludml0ZWRfYnk6dGV4dCgiaW52aXRlZF9ieSIpLnJlZmVyZW5jZXMoKCk9PnNnLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSkscHJvamVjdF9pZHM6dGV4dCgicHJvamVjdF9pZHMiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdChbXSksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksZXhwaXJlc19hdDppbnRlZ2VyKCJleHBpcmVzX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKX0sZT0+W2luZGV4KCJvcmdfaW52aXRhdGlvbnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKSxpbmRleCgib3JnX2ludml0YXRpb25zX3Rva2VuX2lkeCIpLm9uKGUudG9rZW4pXSk7Y29uc3QgZGc9c3FsaXRlVGFibGUoInVzZXJfcmVmZXJyYWxzIix7dXNlcl9pZDp0ZXh0KCJ1c2VyX2lkIikucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCk9PnNnLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KSxjb2RlOnRleHQoImNvZGUiKS5ub3ROdWxsKCkudW5pcXVlKCksY3JlYXRlZF9hdDppbnRlZ2VyKCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9KSxwZz1zcWxpdGVUYWJsZSgicmVmZXJyYWxzIix7aWQ6dGV4dCgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHJlZmVycmVyX2lkOnRleHQoInJlZmVycmVyX2lkIikucmVmZXJlbmNlcygoKT0+c2cuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxyZWZlcmVlX2lkOnRleHQoInJlZmVyZWVfaWQiKS5yZWZlcmVuY2VzKCgpPT5zZy5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLHNvdXJjZTp0ZXh0KCJzb3VyY2UiLHtlbnVtOlsibGluayIsImludml0ZSJdfSkubm90TnVsbCgpLmRlZmF1bHQoImxpbmsiKSxyZXdhcmRfcGFpZDppbnRlZ2VyKCJyZXdhcmRfcGFpZCIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6aW50ZWdlcigiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bdW5pcXVlSW5kZXgoInJlZmVycmFsc19yZWZlcmVlX3VuaXF1ZSIpLm9uKGUucmVmZXJlZV9pZCksaW5kZXgoInJlZmVycmFsc19yZWZlcnJlcl9pZHgiKS5vbihlLnJlZmVycmVyX2lkKV0pO2Z1bmN0aW9uIHN1bUJ5KGUscyl7bGV0IGQ9MDtmb3IobGV0IG09MDttPGUubGVuZ3RoO20rKylkKz1zKGVbbV0sbSk7cmV0dXJuIGR9ZnVuY3Rpb24gcGljayhlLHMpe2NvbnN0IGQ9e307Zm9yKGxldCBtPTA7bTxzLmxlbmd0aDttKyspe2NvbnN0IGg9c1ttXTtPYmplY3QuaGFzT3duKGUsaCkmJihkW2hdPWVbaF0pfXJldHVybiBkfWNvbnN0IG1nPS9eW2EtejAtOV17OH0kL2ksZmc9MmU0O2FzeW5jIGZ1bmN0aW9uIGVuc3VyZVJlZmVycmFsQ29kZShlKXtjb25zdCBzPWF3YWl0IEVkLnF1ZXJ5LnVzZXJSZWZlcnJhbFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6ZXEoZGcudXNlcl9pZCxlKX0pO2lmKHMpcmV0dXJuIHMuY29kZTtjb25zdCBkPXNpbXBsaWZ5TmFub0lkKDgpLFttXT1hd2FpdCBFZC5pbnNlcnQoZGcpLnZhbHVlcyh7dXNlcl9pZDplLGNvZGU6ZH0pLm9uQ29uZmxpY3REb05vdGhpbmcoKS5yZXR1cm5pbmcoKTtpZihtKXJldHVybiBtLmNvZGU7cmV0dXJuKGF3YWl0IEVkLnF1ZXJ5LnVzZXJSZWZlcnJhbFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6ZXEoZGcudXNlcl9pZCxlKX0pKS5jb2RlfWFzeW5jIGZ1bmN0aW9uIGdldFJlZmVycmFsU3RhdHMoZSl7Y29uc3Qgcz1hd2FpdCBlbnN1cmVSZWZlcnJhbENvZGUoZSksZD1hd2FpdCBFZC5zZWxlY3Qoe2lkOnBnLmlkLGVtYWlsOkF1LnByaW1hcnlfZW1haWwsc291cmNlOnBnLnNvdXJjZSxyZXdhcmRfcGFpZDpwZy5yZXdhcmRfcGFpZCxjcmVhdGVkX2F0OnBnLmNyZWF0ZWRfYXR9KS5mcm9tKHBnKS5pbm5lckpvaW4oQXUsZXEoQXUuaWQscGcucmVmZXJlZV9pZCkpLndoZXJlKGVxKHBnLnJlZmVycmVyX2lkLGUpKS5vcmRlckJ5KGRlc2MocGcuY3JlYXRlZF9hdCkpO3JldHVybntjb2RlOnMscmVmZXJyZWRDb3VudDpkLmxlbmd0aCx0b3RhbEVhcm5lZDpzdW1CeShkLGU9PmUucmV3YXJkX3BhaWQ/Zmc6MCkscmVmZXJyYWxzOmR9fWNvbnN0IGhnPW5ldyBTZXQoWyJnb29nbGUiLCJnaXRodWIiXSksX3FxSnVYdGtKVGx2TWtFYVdGS2dtdkxOdmJXc3R3TUtpSW1rM0xrcFFNPWU9PntlLmhvb2tzLmhvb2soImF1dGg6dXNlci1jcmVhdGVkIixhc3luYyh7dXNlcjplLHByb3ZpZGVyOnMsZXZlbnQ6ZH0pPT57aWYoYXdhaXQgZW5zdXJlUmVmZXJyYWxDb2RlKGUuaWQpLCFoZy5oYXMocykpcmV0dXJuO2NvbnN0IG09Z2V0Q29va2llKGQsInJlZiIpLGg9Z2V0Q29va2llKGQsInJlZl9pbnZpdGUiKTthd2FpdCBhc3luYyBmdW5jdGlvbihlLHMpe3ZhciBkO2xldCBtPW51bGw7aWYocy5jb2RlJiZtZy50ZXN0KHMuY29kZSkpe2NvbnN0IGU9YXdhaXQgRWQucXVlcnkudXNlclJlZmVycmFsVGFibGUuZmluZEZpcnN0KHt3aGVyZTplcShkZy5jb2RlLHMuY29kZSksY29sdW1uczp7dXNlcl9pZDohMH19KTttPW51bGwhPShkPW51bGw9PWU/dm9pZCAwOmUudXNlcl9pZCk/ZDpudWxsfWVsc2Ugcy5pbnZpdGVySWQmJihtPXMuaW52aXRlcklkKTttJiZtIT09ZSYmYXdhaXQgRWQuaW5zZXJ0KHBnKS52YWx1ZXMoe3JlZmVycmVyX2lkOm0scmVmZXJlZV9pZDplLHNvdXJjZTpzLmNvZGU/ImxpbmsiOiJpbnZpdGUifSkub25Db25mbGljdERvTm90aGluZygpfShlLmlkLHtjb2RlOm0saW52aXRlcklkOmh9KSxkZWxldGVDb29raWUoZCwicmVmIiksZGVsZXRlQ29va2llKGQsInJlZl9pbnZpdGUiKX0pLGUuaG9va3MuaG9vaygiYmlsbGluZzp0b3B1cC1zdWNjZWVkZWQiLGFzeW5jKHt1c2VySWQ6ZSxpc0ZpcnN0VG9wdXA6c30pPT57aWYoIXN8fCFlKXJldHVybjtjb25zdCBkPWF3YWl0IEVkLnF1ZXJ5LnJlZmVycmFsVGFibGUuZmluZEZpcnN0KHt3aGVyZTphbmQoZXEocGcucmVmZXJlZV9pZCxlKSxlcShwZy5yZXdhcmRfcGFpZCwhMSkpfSk7aWYoIWQpcmV0dXJuO2NvbnN0IG09YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSl7dmFyIHM7Y29uc3QgZD1hd2FpdCBFZC5xdWVyeS5vcmdhbml6YXRpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmFuZChlcShCdS5vd25lcl9pZCxlKSxlcShCdS5pc19wZXJzb25hbCwhMCkpLGNvbHVtbnM6e2lkOiEwfX0pO3JldHVybiBudWxsIT0ocz1udWxsPT1kP3ZvaWQgMDpkLmlkKT9zOm51bGx9KGQucmVmZXJyZXJfaWQpO20mJihhd2FpdCBFZC5iYXRjaChbRWQuaW5zZXJ0KG5kKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDptLHVzZXJfaWQ6ZC5yZWZlcnJlcl9pZCx0eXBlOiJyZWZlcnJhbF9yZXdhcmQiLHN0YXR1czoic3VjY2VzcyIsYW1vdW50OmZnLG1ldGFkYXRhOntyZWZlcmVlX2lkOmV9fSksRWQudXBkYXRlKHBnKS5zZXQoe3Jld2FyZF9wYWlkOiEwfSkud2hlcmUoZXEocGcuaWQsZC5pZCkpXSksYXdhaXQgYXN5bmMgZnVuY3Rpb24oZSxzKXthd2FpdCBFZC5pbnNlcnQodGQpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOmUsYmFsYW5jZTpzfSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6dGQub3JnYW5pemF0aW9uX2lkLHNldDp7YmFsYW5jZTpzcWxgJHt0ZC5iYWxhbmNlfSArICR7c31gfX0pfShtLGZnKSl9KX0sZ2c9e307ZnVuY3Rpb24gcmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSl7aWYoZS5jb250ZXh0LnNlY3VyaXR5fHwoZS5jb250ZXh0LnNlY3VyaXR5PXt9KSwhZS5jb250ZXh0LnNlY3VyaXR5LnJ1bGVzKXtjb25zdCBzPXRvUm91dGVNYXRjaGVyKGNyZWF0ZVJvdXRlciQxKHtyb3V0ZXM6c3RydWN0dXJlZENsb25lKGdnKX0pKSxkPWUucGF0aC5zcGxpdCgiPyIpWzBdLG09ZD9zLm1hdGNoQWxsKGQpOltdLGg9UGQoe30sLi4ubS5yZXZlcnNlKCkpO2UuY29udGV4dC5zZWN1cml0eS5ydWxlcz1ofXJldHVybiBlLmNvbnRleHQuc2VjdXJpdHkucnVsZXN9Y29uc3Qgdmc9e2NvbnRlbnRTZWN1cml0eVBvbGljeToiQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiLGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3k6IkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kiLGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OiJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsY3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeToiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSIsb3JpZ2luQWdlbnRDbHVzdGVyOiJPcmlnaW4tQWdlbnQtQ2x1c3RlciIscmVmZXJyZXJQb2xpY3k6IlJlZmVycmVyLVBvbGljeSIsc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IlN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHkiLHhDb250ZW50VHlwZU9wdGlvbnM6IlgtQ29udGVudC1UeXBlLU9wdGlvbnMiLHhETlNQcmVmZXRjaENvbnRyb2w6IlgtRE5TLVByZWZldGNoLUNvbnRyb2wiLHhEb3dubG9hZE9wdGlvbnM6IlgtRG93bmxvYWQtT3B0aW9ucyIseEZyYW1lT3B0aW9uczoiWC1GcmFtZS1PcHRpb25zIix4UGVybWl0dGVkQ3Jvc3NEb21haW5Qb2xpY2llczoiWC1QZXJtaXR0ZWQtQ3Jvc3MtRG9tYWluLVBvbGljaWVzIix4WFNTUHJvdGVjdGlvbjoiWC1YU1MtUHJvdGVjdGlvbiIscGVybWlzc2lvbnNQb2xpY3k6IlBlcm1pc3Npb25zLVBvbGljeSJ9LHlnPU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2ZykubWFwKChbZSxzXSk9PltzLGVdKSk7ZnVuY3Rpb24gaGVhZGVyT2JqZWN0RnJvbVN0cmluZyhlLHMpe2lmKCFzKXJldHVybiExO2lmKCJjb250ZW50U2VjdXJpdHlQb2xpY3kiPT09ZSl7Y29uc3QgZT1zLnNwbGl0KCI7IikubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoZT0+ZSksZD17fTtmb3IoY29uc3QgcyBvZiBlKXtjb25zdFtlLC4uLm1dPXMuc3BsaXQoIiAiKS5tYXAoZT0+ZS50cmltKCkpO2RbZV09InVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiPT09ZXx8bS5qb2luKCIgIil9cmV0dXJuIGR9aWYoInN0cmljdFRyYW5zcG9ydFNlY3VyaXR5Ij09PWUpe2NvbnN0IGU9cy5zcGxpdCgiOyIpLm1hcChlPT5lLnRyaW0oKSkuZmlsdGVyKGU9PmUpLGQ9e307Zm9yKGNvbnN0IHMgb2YgZSl7Y29uc3RbZSxtXT1zLnNwbGl0KCI9IikubWFwKGU9PmUudHJpbSgpKTsibWF4LWFnZSI9PT1lP2QubWF4QWdlPU51bWJlcihtKToiaW5jbHVkZVN1YmRvbWFpbnMiIT09ZSYmInByZWxvYWQiIT09ZXx8KGRbZV09ITApfXJldHVybiBkfWlmKCJwZXJtaXNzaW9uc1BvbGljeSI9PT1lKXtjb25zdCBlPXMuc3BsaXQoIiwiKS5tYXAoZT0+ZS50cmltKCkpLmZpbHRlcihlPT5lKSxkPXt9O2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0W2UsbV09cy5zcGxpdCgiPSIpLm1hcChlPT5lLnRyaW0oKSk7ZFtlXT1tfXJldHVybiBkfXJldHVybiBzfWZ1bmN0aW9uIHN0YW5kYXJkVG9TZWN1cml0eShlKXtpZighZSlyZXR1cm47Y29uc3Qgcz17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW2UsZF0pPT57Y29uc3QgbT1mdW5jdGlvbihlKXtjb25zdFssc109T2JqZWN0LmVudHJpZXMoeWcpLmZpbmQoKFtzXSk9PnMudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKSl8fFtdO3JldHVybiBzfShlKTtpZihtKWlmKCJzdHJpbmciPT10eXBlb2YgZCl7Y29uc3QgZT1oZWFkZXJPYmplY3RGcm9tU3RyaW5nKG0sZCk7c1ttXT1lfWVsc2Ugc1ttXT1kfSksMCE9PU9iamVjdC5rZXlzKHMpLmxlbmd0aD9zOnZvaWQgMH1mdW5jdGlvbiBiYWNrd2FyZHNDb21wYXRpYmxlU2VjdXJpdHkoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHM9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtlLGRdKT0+e2NvbnN0IG09ZTtpZigiY29udGVudFNlY3VyaXR5UG9saWN5IiE9PW0mJiJwZXJtaXNzaW9uc1BvbGljeSIhPT1tJiYic3RyaWN0VHJhbnNwb3J0U2VjdXJpdHkiIT09bXx8InN0cmluZyIhPXR5cGVvZiBkKXNbbV09IiIhPT1kJiZkO2Vsc2V7Y29uc3QgZT1oZWFkZXJPYmplY3RGcm9tU3RyaW5nKG0sZCk7c1ttXT1lfX0pLHN9Y29uc3QgX1pqamh6bW5mcDZrNE5xWHlGcUUyaHlvY0pzN0JYZmdCbE5LN3VDYVhhNVk9YXN5bmMgZT0+e2NvbnN0IHM9Z2csZD11c2VSdW50aW1lQ29uZmlnKCk7Zm9yKGNvbnN0IGUgaW4gZC5uaXRyby5yb3V0ZVJ1bGVzKXtjb25zdCBtPWQubml0cm8ucm91dGVSdWxlc1tlXTtpZighbSljb250aW51ZTtjb25zdHtoZWFkZXJzOmh9PW0sZz1zdGFuZGFyZFRvU2VjdXJpdHkoaCk7ZyYmKHNbZV09e2hlYWRlcnM6Z30pfWNvbnN0IG09ZC5zZWN1cml0eSx7aGVhZGVyczpofT1tLGc9YmFja3dhcmRzQ29tcGF0aWJsZVNlY3VyaXR5KGgpO3NbIi8qKiJdPVBkKHtoZWFkZXJzOmd9LG0sc1siLyoqIl0pO2Zvcihjb25zdCBlIGluIGQubml0cm8ucm91dGVSdWxlcyl7Y29uc3QgbT1kLm5pdHJvLnJvdXRlUnVsZXNbZV07aWYoIW0pY29udGludWU7Y29uc3R7c2VjdXJpdHk6aH09bTtpZihoKXtjb25zdHtoZWFkZXJzOmR9PWgsbT1iYWNrd2FyZHNDb21wYXRpYmxlU2VjdXJpdHkoZCk7c1tlXT1QZCh7aGVhZGVyczptfSxoLHNbZV0pfX1lLmhvb2tzLmhvb2soIm51eHQtc2VjdXJpdHk6aGVhZGVycyIsKHtyb3V0ZTplLGhlYWRlcnM6ZH0pPT57c1tlXT1QZCh7aGVhZGVyczpkfSxzW2VdKX0pLGUuaG9va3MuaG9vaygibnV4dC1zZWN1cml0eTpyZWFkeSIsYXN5bmMoKT0+e2F3YWl0IGUuaG9va3MuY2FsbEhvb2soIm51eHQtc2VjdXJpdHk6cm91dGVSdWxlcyIscyl9KSxhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJudXh0LXNlY3VyaXR5OnJlYWR5Iil9LGJnPXsiL19udXh0L2J1aWxkcy9tZXRhL2UyMzk3NGFhLWY4OGQtNGE0Mi05NzU5LTFmMWFlNzg4NGVmOC5qc29uIjoic2hhMzg0LTBxSTd4NFBqcWpqMEFlRThkSWhRVVRmRWxVcC8ySU14OFZsOFgvY1JFZHlBZkhOd3BiS0N4dHBVSEZidDVwOHciLCIvX251eHQvMURJa0J5TWQuanMiOiJzaGEzODQtVktMaEZXTXEyV25tdnFkK1BmeGlJWmNYYjMyaFNWTEtpYVdjd1luNnJtUmZ1cDNxN2h6aldGNmNRMWljSHRHMyIsIi9fbnV4dC80bEhteUhiSC5qcyI6InNoYTM4NC1pbVY5blJmY3ptZ2wydWRYUU9COGczc1d3QmFpVGE1bjdIY1pZbS95ZTJ3TCs5T0ZMU2g1a1lUWUc0dkdxN2VUIiwiL19udXh0LzdjVlNPQ2N1LmpzIjoic2hhMzg0LWJZdURzaU1GSmZkNlVJY21HTnJNb2dPcWFqbU00MFByZzFWeEtsRk9UOHN5NU1DeCt0QmJ4L0NmRXZsbGlUTEciLCIvX251eHQvQjFNZUxyaTMuanMiOiJzaGEzODQtK2RPUGZ6M0JDTkhHVjlwUjgxR1pNTnFiTlpueUdwb2M1MmNFN01JOTQ4ZVhiSmZDSUd1QkZtak54Qnp1TWVOYSIsIi9fbnV4dC9CN3M1cGpqUi5qcyI6InNoYTM4NC1CSmtPdWZ6ZjZQT3VxVUMwYk95MGdPV1ZxenJYZXpWcEFlY3E5cjRkOUw4aWdiSWIyamdLMVBLUmFkdmNrdi83IiwiL19udXh0L0JBdW5pLXFkLmpzIjoic2hhMzg0LTlqTDdYMTFiNGJRRVQ5K21INnNSL09HYnpKUExBRkZTUSs2RDYvUUZkY3dtR2tROUxsUTlmT1NmWG9TSVlWV0QiLCIvX251eHQvQkZPTm82M1guanMiOiJzaGEzODQtMER6RWJ3eUpHUXVzNFFwWnJjczlmcmV0ZGJVWUhnUmgzbHk0eURBUHdNNmFxcWVSYnVnWHJRK01DaURJL2tpeCIsIi9fbnV4dC9CTXliRzRPay5qcyI6InNoYTM4NC1EMFlmRDJhQ0FtK3hIZVRkelliMVJ4dWk3L2hUazJybjVjY3hRNjJ3eGFxVmZ1VTNNenlwTWZPeTRRbUhRNXRTIiwiL19udXh0L0JTR3QzeFJXLmpzIjoic2hhMzg0LTVaM010dWx4VTdzSk1LblcrNktqYzBJalNUdkJzTlh1a09jbXd3cUNVNk84Szd0ak4zaGZZSFNtNFh0dXJyVFQiLCIvX251eHQvQlNSS3FHclAuanMiOiJzaGEzODQtdUJBYXZQT3E4SGs1RzllWWZMY3JpWUM2U2l0czc1blFyVWVqcWJsWVFYSjEvdWMyaS9rRDZXcktRWktjVW5aQyIsIi9fbnV4dC9CU3kwaTJBZi5qcyI6InNoYTM4NC1CK2pVbVZFdHdlZTdaeUlheHNHOGdnUmY2eVJPbFlLamFnemVheTFHMTdMVVV3cTlOZmhIL29Tdjl2dGM2MExMIiwiL19udXh0L0JXdnFsdzVmLmpzIjoic2hhMzg0LXdYd2NYRHlIREprNFNaVE5aWWc5NUFmWlFNZjRGQ1hKekhpamd2WVRxSDhGZVAwL1lEc1QzMDNjUzIrcmNGcTgiLCIvX251eHQvQlpsTk5mazQuanMiOiJzaGEzODQtZUZYaEtoYkQ2Yk1LMDNpR3JIWEdURjZTSmZBcmhEbVJVYzBiRDBnOXdQRWFKaW01bnh2K1V3MFZhbjRCT3VieiIsIi9fbnV4dC9CZDQtT2MzNi5qcyI6InNoYTM4NC1TRTJWcTViT1JlS1lCL1R3clFlWG9NbDNYbUpibjBnOVJMc3RwYmJjQnZ0MUYwbHBjRGlKTWFmYVg1cksrN05NIiwiL19udXh0L0JkWlg1eGdmLmpzIjoic2hhMzg0LVdrR1lvZ09YQnFuSU9zYlNQcENQSkFhNkIrQ2c2dUs1Q0ZHN3NRVnZFRW92bk1kTVZQNWlEQmQvU2dicW5tNUIiLCIvX251eHQvQmVFTUN5dVouanMiOiJzaGEzODQtYlhnYldkV2lhNjh1TG0yYVNwRmR4bnNVZHZwalBsYU52NXdZNVF0ZnU0NUxxUEFQM2lMZ09oMTYvMFpUK3QzRSIsIi9fbnV4dC9CaFdTMThpNy5qcyI6InNoYTM4NC13WGlsRmxPVkphL3NKT0RuUERoUzNpMHhyeWJwQ3hCeXY3ZHBvd1gyU0N0b05PbFNHSTdMVElzWllmREwvZU51IiwiL19udXh0L0JoYUdvYXpvLmpzIjoic2hhMzg0LVZLTGhGV01xMldubXZxZCtQZnhpSVpjWGIzMmhTVkxLaWFXY3dZbjZybVJmdXAzcTdoempXRjZjUTFpY0h0RzMiLCIvX251eHQvQnJOUlZJQkEuanMiOiJzaGEzODQtZUNHeU9XYmVpc0tpb3Z2VHNidmJYaWRObkdQRnYrelNxL1BwQmRXeDRDanNiTmdJR01NbkVBaldORCtUV0FjTCIsIi9fbnV4dC9CdDhTMGRtbC5qcyI6InNoYTM4NC11Z2dzb3I0N3A0eWl4SmVRRFU0K0pyK3JnN0g2M0hCMnkzMjZxTlZyYnRBRjYrcmZNNVFDejUrVis3YWJDdlNHIiwiL19udXh0L0J1TFN1QThNLmpzIjoic2hhMzg0LWcwbHArRFJqNWdsNXNyekZUNTF5b0RMSHNiYUVURCtFSTg5cDJ4cHJGT3htdXJncXBFVWZ3VjRNTktUWjVxZUciLCIvX251eHQvQzFPUWl5VUQuanMiOiJzaGEzODQtRzZzVXlJeTU2VDZvdEd2aXNZV08wa0NPUUZMdFF4N3VSWVZsWHpGV0Q3WHRpb2dPbVBQTWIrZDhDQURSWGhDSSIsIi9fbnV4dC9DN1l5NnRSMy5qcyI6InNoYTM4NC01ZC9JUFVTQTVmeklrbENpLzdwcjIydXVsazU0TTQxam5CbXAwZGxIRXZkdTJHTUR0cm9TeG5OeTkwOUVUazF4IiwiL19udXh0L0NBVUFYNVZyLmpzIjoic2hhMzg0LVVEZUpDck5JaFREL245TDJpVjlDa2xjNnZDeDBlMC82NkdySk0rRG9OYUdrWlZDUEpyc1p2Y0Y4ZW1sU2hvd0QiLCIvX251eHQvQ0ZCdGNCN28uanMiOiJzaGEzODQtWEZxcDdzVHJTUHE4eDc0Mm9LbE9hUWJqVm5TNEphSjhjWmR2b0xtTXV5bWczUytqNkhmbUFFZCtkYTBoZXZydiIsIi9fbnV4dC9DR1hnU01aaC5qcyI6InNoYTM4NC1XZzZhbldleGFiNUhhbnlyQXJSQ3RWeGRMLzE0OTFLTC9sdm5UZllpVXA1UGRvUHZadk05Rks0S3cwak85dGRDIiwiL19udXh0L0NJQzd2c1o1LmpzIjoic2hhMzg0LVlzS1FIaWNEeFRIOWlXZkE3Nnl2Q3ExbUpDNFlyMy9ZbmRrb01vWWVod1NTdDNOQUFBRWNSZjJpL1I4ZEM2Q1IiLCIvX251eHQvQ1c4ZktuRkUuanMiOiJzaGEzODQtcm5HbkRsZGFUVm1CWDI2UmdqTk1pZFlTVnBmMGh1SjM5dkFXUENseGVIaVZFKzBWOFBrckQ3c1l6OWdKWWtHSiIsIi9fbnV4dC9DWG9jNFVFUi5qcyI6InNoYTM4NC0vRFBDb2FobTlZaWJNMFBPcUZDNjNXNWRKVUhZVDZ6b2JwZC9TOC8rbmpCWjJESUMrY2YybmJHSkp0SkNnMWswIiwiL19udXh0L0NZYW16TG01LmpzIjoic2hhMzg0LWJFMDJXT0tZSjRYQ0VXUS8walluUUIvNCtIKzc5MFkrM1lXWDFhNytEWGMreG12ZHJxU2M1dVEyWnB6c2YwMU4iLCIvX251eHQvQ1ltbE1JWHouanMiOiJzaGEzODQtUzFWRkduYWozcHo4Nzc2SGZFYzhxVlRBa0tWQXpHd2x2UThCMSt3ZVREdnJMeUFtMkhQMXBLOENsMHMxeGpJRiIsIi9fbnV4dC9DYzZ6aWgtUi5qcyI6InNoYTM4NC1lNHpxR3V1cDNZcUhJN1NDZmhkUEhQbjZxWHl5b3YxZXIrOTRUcmZoelRIV2tDUEtQNTdpZktFdWN6TEE5dWJIIiwiL19udXh0L0NjTU1GMWc5LmpzIjoic2hhMzg0LUJ6b3VCK3crVWlUN2dMbjBGSVdXQ1VlT290YXB4ZEFIT05aRlVaRVJXcjMyazQwTmlVVlBYdVZYclJQUjRjUHgiLCIvX251eHQvQ2ZfZncxRTkuanMiOiJzaGEzODQtZmxmaTVaUkxlRjlHM3d4SUtVZ0VqWnN3djh0VGxBNVFXUXZkeE5lYWpoNlhiWkRJdzRWTm1BZ2JOYnp6VXo0ZyIsIi9fbnV4dC9DZmhZRllPWS5qcyI6InNoYTM4NC1sUVg1ZGhRLytoQitRUUhIWUlOTk5hTVZzUC95RDRmcXhYak5hR3FiVUhTeDFZOWl6L0pMTTAzdjltcFRXSmxTIiwiL19udXh0L0NsNGk0clNNLmpzIjoic2hhMzg0LWMyeDJTRUM5UmhGWjJPZ0pMVzBGUTA2TUJJK2FIY09sekxpY1N2SC9kRm5SMlAxV2YwYXl2MmZLY2V3TlpLdkciLCIvX251eHQvQ29JZHo0a2EuanMiOiJzaGEzODQtVCtlTHJZbGlHTGlpVG56RGNHTWNLVTZ2T3BHZk5zdUJKZFJzY0gxVEM2Syt5R25YNDBwUWd1VjlqUXl4UDZTayIsIi9fbnV4dC9DcXlXck5OeC5qcyI6InNoYTM4NC01SGJrMFBtSEJOTDNmYVJEYW15TjVTdWtlY3ovUnhHSG9UY0c4NWJ2OC8ydE1QYytqRHVZd0puaDQ1UHVpOEdkIiwiL19udXh0L0NzSzUxcXRkLmpzIjoic2hhMzg0LVZoWkNEWG9EYVJCbWFsbGFucXFxQ2I3UlVPTlpNWDVKSE85ME9IREdjYklnaTA1RzdHUGdZdzNMSlpxV0lXVmwiLCIvX251eHQvQ3RhMTVzRy0uanMiOiJzaGEzODQtWElBQlAxYjl3NEI0Ymhza2RyUXZXd0xwdUdScEJScmdpdHBUQUVyeElJejlzM1BrSU5DeGdCVENRUjhTbUZxUCIsIi9fbnV4dC9DeGNaclkzVy5qcyI6InNoYTM4NC16U3JSSWFnUUg3aDliNlV0VVZEZ3BtV00xRWg0VXE1MVFkK0dCRFA1NmNPNkZseFZNbjB1VHdybVFFdFQrTUNzIiwiL19udXh0L0RIQ3dFTFdwLmpzIjoic2hhMzg0LUx3TnVWNC96RjgzaVlPbEx3OUY4Qjh0VWN2VjVickxhNzd2bTBNYWZveGM1RFJ2U0JxT3IxMHFHN0FPdDRjY2IiLCIvX251eHQvRE9DRkRUY1kuanMiOiJzaGEzODQtczg2YkVnVUZSMTUxTUVnZmY3WS9HdXFZZFBTTkw5WUh6YVROWU0wNk9QWVN4RElsMFdTMUVIY24vMVBaSkZaTiIsIi9fbnV4dC9EUGZaa2wyZS5qcyI6InNoYTM4NC1HSCttNWVDQW5EQjhoUUdMb01GRmdNYWpoZW9pS3ZoNEZVRk9hWEtPbC85dkNyWC9qSVFidjY4RFpXeTN0K0RYIiwiL19udXh0L0RUVExyNUhyLmpzIjoic2hhMzg0LUpGNzZYTVhOL2ErRGFBVEJaWFVoMFRSazkwejdBTGxYcTArYklENldHRkNSZE9rVmYvS2FYK1lIZUI0aEd6d28iLCIvX251eHQvRFR2WFQtblIuanMiOiJzaGEzODQtYUh0M09mSmI0ZGcxVXBiK096cnRNK2dZYWhiU1JwclhHbi9iRjRJaXBjQnFmU0JMb3kvNzBxVE5GbWI1TUgrMSIsIi9fbnV4dC9EV2ZXcU1KcS5qcyI6InNoYTM4NC11WU5tLy9UUDVGMGFwVUd4MG42cFNZVXRSNktya0ZSRndlc3BFRjVzVUxLaFR5ZGpFM2Q1bHBFQitRYlZZaTdDIiwiL19udXh0L0RZWmxnMC01LmpzIjoic2hhMzg0LUhEMkN0K2JJdkx5S1MrWHNncy9YQmRwWnJSL1Q2czYzWjJTRzVjK3FrNUdMUE03QUpoaUcrdlMyY2x3bnRqOTMiLCIvX251eHQvRF9jdS1xTVIuanMiOiJzaGEzODQtTXJlOERSMjV0ZXFFcEpBSFpWQ3lLQ3ZjODRkdzlGUE1aTXlnRFRrR3laaUxxSU9nSWIwdFZMRnhNUWVkWHB3diIsIi9fbnV4dC9EYkM0cDNRQS5qcyI6InNoYTM4NC04K1dWMFc1S0N1d2VQUytRb0EwamRhQU5rMlFiMGFxc3BJUzQxdnk0dm5IOW93U3U2S1p0NjBTOGxtTysraXQvIiwiL19udXh0L0RjNDZRd0RKLmpzIjoic2hhMzg0LW0rc2orL3VCengvUnFwZ1RvekxBWStoTzJRKzU5TUcvdklpV05uc3NpMHZaQmhGSENVbHZHOVlIekVtWlA3M2oiLCIvX251eHQvRGwtRHptN3ouanMiOiJzaGEzODQtd3pCNWFJc25ndW11N2N1aGVvTlNxaHRPWUVWcmRxTGFURXpOcFp4M2VZdHZSaU5hN3dLUURwaVkxOXU0ZHBYVCIsIi9fbnV4dC9EbTc5NHF4SS5qcyI6InNoYTM4NC13SU8wNVRrQkh2QUtYSXlaQ3pMMTBuSXhaL0lxVEpXZHZmMWQzQVFKdmhmMXlTUm1tNjNlSVB3TVM5dFJBYnJHIiwiL19udXh0L0RwQXZ0TjhnLmpzIjoic2hhMzg0LUlCQldQZnkzdStVekJWaWdwUWlFdzVnckFLcTVsSEpUdEtzK3VNZWR5TlJ1ZUtvSEU5allMZk14WkcyaWN1MTMiLCIvX251eHQvRHRTdGZWbVQuanMiOiJzaGEzODQtbzNTMVVTRG16MXY5cXJ4TFM0QkNvNXFwRW5FT2luOXZNUU0zSTM3SWlrYmdqaTJRdkVCZXN2Q212QXRiL0VzUSIsIi9fbnV4dC9EdUVBZm5ocS5qcyI6InNoYTM4NC1LMjZBQ3FsRnpnaVZMbFRtSWhUNnVIb2FkdUppR0hxTDJ1WHR4VmxhdnZ0R3hWOTB1VHh6Y2Zub3VzTG4wU1VpIiwiL19udXh0L0R2ZGh5cERpLmpzIjoic2hhMzg0LWtvUEVjemF1dmc2d1N1UVhNbkdrWWJIMDlHeU80UW83ZnYxZ0NFd0VBTm9WeWFDOWJnNldaNDJFUURjV0VKNTUiLCIvX251eHQvRHhDV1FzbmwuanMiOiJzaGEzODQtcUpZODhxTFliVHUxY08rQzdmT2s0djhWaThlM1NhcnpCTTJLSnBkTDVpakdPRC9DWnE1Z0c4d2hDd3c1MFprcCIsIi9fbnV4dC9ONkswcnF0Yy5qcyI6InNoYTM4NC1GbklOVW05WStkK0pLamxld3dSbkNUUzFvSmZZdEh4TmcxODRpeXMyT0pGWWNSWDZFSEtpOXhJZWlBVmlnOWFUIiwiL19udXh0L1dtRFhIWUtrLmpzIjoic2hhMzg0LXNSS2ticUlJZ1BqWTVLeloyU3cwQ2VIU09jU3NnN1BGc3hnTUdGczN4djcvV2I4ZXFFNXh2Z0kzanV0NEJFUlciLCIvX251eHQvWkpWazBvbE4uanMiOiJzaGEzODQtaFlRTWprbnVwc0FBanlEZmIveC9hR2lrdS9nNk1lcG5uWkZ5ZG0xQlVqRnpjNUFrakN2azV3TEVHKythSDh1WSIsIi9fbnV4dC9aWnNmUDlLWi5qcyI6InNoYTM4NC1lK1NKQnpSeTVFcnovVFdGTGhTc3NKT3RXQys2K0FSTTl3bkN1K3doUFNXODNhRXBGOUd0YXVzbU9QcWhQd2VPIiwiL19udXh0L18ybFNkcjEzLmpzIjoic2hhMzg0LVNQdUdHOWRyOVBYQnJWTWxKQkZUNGtzWHdTYnZJajg2N2ZGU2NYNCtmaWt3QWc0QkhNR1lwTVRsRnhrT1RpR3IiLCIvX251eHQvY2RLX0E2Tm0uanMiOiJzaGEzODQtS0VvTEpWSGIwd0lkb3ZpVzhyRURBa0ZPOW5iS0lYMHZYMEdmTzl2d0g2VjI1ZWZDL044TkZhQVdqOXJJdFNWdSIsIi9fbnV4dC9kXzBOd1FMVS5qcyI6InNoYTM4NC00QkhTV0NOeHNFYnlKelNRVWNjalFaTHdvZDh3T0ZUZTY4SzBJWTV1bTNpdE0wZWZGc1dHQ1dpSjZRN21BcFEvIiwiL19udXh0L2VudHJ5LnpkVDMxRVk1LmNzcyI6InNoYTM4NC1qOExIaUtibXg5TmF0Q25GcjFrMGVueTNwNWhBVU5RMDY2R2w3WXoxQkV3Zml0M0pSYXpnSVh3bVk0K2ZSOUZNIiwiL19udXh0L2Vycm9yLTQwNC5DRlU1b2dObS5jc3MiOiJzaGEzODQtLzZvUlR1N3hrcGw5V3pXZVVEaXd2YXdRalpzSHg5VDdVU0pyeW5OdHg3ZXpzSGdyL2UzTG9LMS93YVNkOTdmRSIsIi9fbnV4dC9lcnJvci01MDAuQjVhVDRQN1ouY3NzIjoic2hhMzg0LTkzRWYrQ1c3KzgwRkJLYldEQkZDR3B6VSthK0lTdldlUVBHdkJ1K1pmTE1za0F4Mk1JcVRDa2dKekV6RXJ6ak8iLCIvX251eHQvZ2hxWWJJU1QuanMiOiJzaGEzODQtMW5lTGl2WTVLMXhKNUwvenNZM1UrQWs3T1RtQnNYbE9PSlo0bGVyM2k2YnVkVVVIM2NmWmdVbjMrdDRtRGJEaiIsIi9fbnV4dC9tMjBrZEd4VS5qcyI6InNoYTM4NC1mV0FkQUx6OWVBbUVIUkJCaEZSRTFEWVVvRUxXNEozUG1LSXIvZGFVYzZQcVpiTlVsTU9OeURra1Q0bHBLS2ZxIiwiL19udXh0L284dGRfRzBKLmpzIjoic2hhMzg0LWtBZTF2OU9oS2ZtaUhoWEtRNTQ2bTdPeWZCQjFoNW1PZy9McjRqSWpvbkIyTGZjN1BJQ3pGQkZYOGlxRnRjdXAiLCIvX251eHQvczNwMGMwM00uanMiOiJzaGEzODQtUEhBZ1ZOY3hkRHJvQzdmNlJsM0wvNmdaWnFLaSswQy9xT2VaOXpiYWFXUVNMWWcwQkh2ZDgxZ043TjVqVWw4cCIsIi9mYXZpY29uLmljbyI6InNoYTM4NC11ZGJjYlZTb0owanlueFlvK0ZLZGhtY1lEc3QxemU2czZya2dGRXhTWWZwWDZ0QXVHbjV3aHNITmptY1JyNGVVIiwiL3JvYm90cy50eHQiOiJzaGEzODQtMSt6K3hPUFpDMFkvc0NaTzMrbnFYTlF5UldpM3RRa1NtUUUwaUhkV3Y3MVFRQ1RQWlBrOUh5QlRsNkFXcEMyUiJ9LF9nPS88c2NyaXB0KCg/PVtePl0rXGJzcmM9IihbXiJdKykiKSg/IVtePl0rXGJpbnRlZ3JpdHk9IlteIl0rIilbXj5dKykoPzpcLz58PjxcL3NjcmlwdD4pL2cseGc9LzxsaW5rKCg/PVtePl0rXGJyZWw9Iig/OnN0eWxlc2hlZXR8cHJlbG9hZHxtb2R1bGVwcmVsb2FkKSIpKD89W14+XStcYmhyZWY9IihbXiJdKykiKSg/IVtePl0rXGJpbnRlZ3JpdHk9Iltcd1wtKy89XSsiKVtePl0rKT4vZyxfSTdpdmVBRlNUa1VTVnQ1RHVhdEVKNzlOa21rc2h3eW1TVTRoWTFDVFZzPWU9PntlLmhvb2tzLmhvb2soInJlbmRlcjpodG1sIiwoZSx7ZXZlbnQ6c30pPT57Y29uc3QgZD1yZXNvbHZlU2VjdXJpdHlSdWxlcyhzKTtpZighZC5lbmFibGVkfHwhZC5zcmkpcmV0dXJuO2NvbnN0IG09WyJib2R5IiwiYm9keUFwcGVuZCIsImJvZHlQcmVwZW5kIiwiaGVhZCJdO2Zvcihjb25zdCBzIG9mIG0pZVtzXT1lW3NdLm1hcChlPT4oInN0cmluZyIhPXR5cGVvZiBlfHwoZT1lLnJlcGxhY2UoX2csKGUscyxkKT0+e2NvbnN0IG09YmdbZF07aWYobSl7cmV0dXJuYDxzY3JpcHQgaW50ZWdyaXR5PSIke219IiR7c30+PFwvc2NyaXB0PmB9cmV0dXJuIGV9KSxlPWUucmVwbGFjZSh4ZywoZSxzLGQpPT57Y29uc3QgbT1iZ1tkXTtpZihtKXtyZXR1cm5gPGxpbmsgaW50ZWdyaXR5PSIke219IiR7c30+YH1yZXR1cm4gZX0pKSxlKSl9KX07Y29uc3Qgd2c9LzxsaW5rXGIoW14+XSo/PikvZ2ksJGc9L25vbmNlPSJbXiJdKyIvaSxTZz0vPHNjcmlwdFxiKFtePl0qPz4pL2dpLGtnPS88c3R5bGVcYihbXj5dKj8+KS9naSxqZz0vIigoPzpbXiJcXF18XFwuKSopIi9nLHpnPS9fX1FVT1RFX1BMQUNFSE9MREVSXyhcZCspX18vZztmdW5jdGlvbiBpbmplY3ROb25jZVRvVGFncyhlLHMpe2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZTtjb25zdCBkPVtdO2xldCBtPWUucmVwbGFjZShqZyxlPT4oZC5wdXNoKGUpLGBfX1FVT1RFX1BMQUNFSE9MREVSXyR7ZC5sZW5ndGgtMX1fX2ApKTttPW0ucmVwbGFjZSh3ZywoZSxkKT0+JGcudGVzdChkKT9lLnJlcGxhY2UoJGcsYG5vbmNlPSIke3N9ImApOmA8bGluayBub25jZT0iJHtzfSJgK2QpLG09bS5yZXBsYWNlKFNnLChlLGQpPT5gPHNjcmlwdCBub25jZT0iJHtzfSJgK2QpLG09bS5yZXBsYWNlKGtnLChlLGQpPT5gPHN0eWxlIG5vbmNlPSIke3N9ImArZCk7Y29uc3QgaD1tLnJlcGxhY2UoemcsKGUscyk9PmRbcGFyc2VJbnQocywxMCldKTtyZXR1cm4gaH1jb25zdCBfNlU0WmdLY3JORk80clE3X3RJQjFldGNhdWtrdXN3SmlqYmdBSjIzMD1lPT57ZS5ob29rcy5ob29rKCJyZXF1ZXN0IixlPT57aWYoZS5jb250ZXh0LnNlY3VyaXR5Py5ub25jZSlyZXR1cm47Y29uc3Qgcz1yZXNvbHZlU2VjdXJpdHlSdWxlcyhlKTtpZihzLmVuYWJsZWQmJnMubm9uY2Upe2NvbnN0IHM9ZnVuY3Rpb24oKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDE4KTtyZXR1cm4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhlKSxidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZSkpfSgpO2UuY29udGV4dC5zZWN1cml0eS5ub25jZT1zfX0pLGUuaG9va3MuaG9vaygicmVuZGVyOmh0bWwiLChlLHtldmVudDpzfSk9Pntjb25zdCBkPXJlc29sdmVTZWN1cml0eVJ1bGVzKHMpO2lmKCEoZC5lbmFibGVkJiZkLmhlYWRlcnMmJmQuaGVhZGVycy5jb250ZW50U2VjdXJpdHlQb2xpY3kmJmQubm9uY2UpKXJldHVybjtjb25zdCBtPXMuY29udGV4dC5zZWN1cml0eS5ub25jZSxoPVsiYm9keSIsImJvZHlBcHBlbmQiLCJib2R5UHJlcGVuZCIsImhlYWQiXTtmb3IoY29uc3QgcyBvZiBoKWVbc109ZVtzXS5tYXAoZT0+aW5qZWN0Tm9uY2VUb1RhZ3MoZSxtKSl9KX0sX2hhUVhkRHY5a0FEaGs4UUFxTnpOTXhDTzVJSGNZc0RHUExibngzYTdIUGM9ZT0+e2UuaG9va3MuaG9vaygicmVuZGVyOmh0bWwiLChlLHtldmVudDpzfSk9PntpZihlLmlzbGFuZClyZXR1cm47Y29uc3QgZD1yZXNvbHZlU2VjdXJpdHlSdWxlcyhzKTtpZihkLmVuYWJsZWQmJmQuaGVhZGVycyl7Y29uc3QgZT1kLmhlYWRlcnM7aWYoZS5jb250ZW50U2VjdXJpdHlQb2xpY3kpe2NvbnN0IGQ9ZS5jb250ZW50U2VjdXJpdHlQb2xpY3ksbT1zLmNvbnRleHQuc2VjdXJpdHk/Lm5vbmNlLGg9cy5jb250ZXh0LnNlY3VyaXR5Py5oYXNoZXM/LnNjcmlwdCxnPXMuY29udGV4dC5zZWN1cml0eT8uaGFzaGVzPy5zdHlsZTtlLmNvbnRlbnRTZWN1cml0eVBvbGljeT1mdW5jdGlvbihlLHMsZCxtKXtjb25zdCBoPU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5tYXAoKFtlLGhdKT0+e2lmKCJib29sZWFuIj09dHlwZW9mIGgpcmV0dXJuW2UsaF07Y29uc3QgZz0oInN0cmluZyI9PXR5cGVvZiBoP2guc3BsaXQoIiAiKS5tYXAoZT0+ZS50cmltKCkpLmZpbHRlcihlPT5lKTpoKS5maWx0ZXIoZT0+IWUuc3RhcnRzV2l0aCgiJ25vbmNlLSIpfHwiJ25vbmNlLXt7bm9uY2V9fSciPT09ZXx8KGNvbnNvbGUud2FybigiW251eHQtc2VjdXJpdHldIHJlbW92aW5nIHN0YXRpYyBub25jZSBmcm9tIENTUCBoZWFkZXIiKSwhMSkpLm1hcChlPT4iJ25vbmNlLXt7bm9uY2V9fSciPT09ZT9zP2Anbm9uY2UtJHtzfSdgOiIiOmUpLmZpbHRlcihlPT5lKTtyZXR1cm5bInNjcmlwdC1zcmMiLCJzY3JpcHQtc3JjLWVsZW0iXS5pbmNsdWRlcyhlKSYmZCYmZy5wdXNoKC4uLmQpLFsic3R5bGUtc3JjIiwic3R5bGUtc3JjLWVsZW0iXS5pbmNsdWRlcyhlKSYmbSYmZy5wdXNoKC4uLm0pLFtlLGddfSkpO3JldHVybiBofShkLG0saCxnKX19fSl9O2NvbnN0IF9NQlV5bERLVHBzRFVTVkcyUEo2TWdrNGJ0blVXMTEybXBnSkVyb0hWX0k9ZT0+e2UuaG9va3MuaG9vaygicmVuZGVyOnJlc3BvbnNlIiwoZSx7ZXZlbnQ6c30pPT57Y29uc3QgZD1yZXNvbHZlU2VjdXJpdHlSdWxlcyhzKTtpZihkLmVuYWJsZWQmJmQuaGVhZGVycyl7Y29uc3QgZT1kLmhlYWRlcnM7T2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW2UsZF0pPT57Y29uc3QgbT1mdW5jdGlvbihlKXtyZXR1cm4gdmdbZV19KGUpO2lmKCExPT09ZCl7Y29uc3R7aGVhZGVyczplfT1nZXRSb3V0ZVJ1bGVzKHMpLGQ9ZT8uW21dO2Q9PT1nZXRSZXNwb25zZUhlYWRlcihzLG0pJiZyZW1vdmVSZXNwb25zZUhlYWRlcihzLG0pfWVsc2V7Y29uc3QgaD1mdW5jdGlvbihlLHMpe2lmKCExPT09cylyZXR1cm4iIjtpZigiY29udGVudFNlY3VyaXR5UG9saWN5Ij09PWUpe2NvbnN0IGU9cztyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkuZmlsdGVyKChbLGVdKT0+ITEhPT1lKS5tYXAoKFtlLHNdKT0+InVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiPT09ZT8idXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0czsiOmAke2V9ICR7InN0cmluZyI9PXR5cGVvZiBzP3M6cy5tYXAoZT0+ZS50cmltKCkpLmpvaW4oIiAiKX07YCkuam9pbigiICIpfWlmKCJzdHJpY3RUcmFuc3BvcnRTZWN1cml0eSI9PT1lKXtjb25zdCBlPXM7cmV0dXJuW2BtYXgtYWdlPSR7ZS5tYXhBZ2V9YCxlLmluY2x1ZGVTdWJkb21haW5zJiYiaW5jbHVkZVN1YkRvbWFpbnMiLGUucHJlbG9hZCYmInByZWxvYWQiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiOyAiKX1pZigicGVybWlzc2lvbnNQb2xpY3kiPT09ZSl7Y29uc3QgZT1zO3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFssZV0pPT4hMSE9PWUpLm1hcCgoW2Usc10pPT4ic3RyaW5nIj09dHlwZW9mIHM/YCR7ZX09JHtzfWA6YCR7ZX09KCR7cy5qb2luKCIgIil9KWApLmpvaW4oIiwgIil9cmV0dXJuIHN9KGUsZCk7c2V0UmVzcG9uc2VIZWFkZXIocyxtLGgpfX0pfX0pfSxfb1A4emllVjlYVTNXYlljSFE0amoyU3Z6UThPdW15Qm9kRF9wSkxhMXNtYz1lPT57ZS5ob29rcy5ob29rKCJiZWZvcmVSZXNwb25zZSIsZT0+e2NvbnN0IHM9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSk7cy5lbmFibGVkJiZzLmhpZGVQb3dlcmVkQnkmJiFlLm5vZGUucmVzLmhlYWRlcnNTZW50JiZyZW1vdmVSZXNwb25zZUhlYWRlcihlLCJ4LXBvd2VyZWQtYnkiKX0pfSxfaTlKYUIzWXFXdTFBcXdfRzJGTFBYN0NUbWNPcFM1TE1xZGQwVlRUNlQwST1hc3luYyBlPT57e2NvbnN0IHM9YXdhaXQgdXNlU3RvcmFnZSgiYXNzZXRzOm51eHQtc2VjdXJpdHkiKS5nZXRJdGVtKCJoZWFkZXJzLmpzb24iKXx8e307ZS5ob29rcy5ob29rKCJiZWZvcmVSZXNwb25zZSIsZT0+e2NvbnN0IGQ9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSk7aWYoZC5lbmFibGVkJiZkLnNzZyYmZC5zc2cubml0cm9IZWFkZXJzKXtjb25zdCBkPWUucGF0aC5zcGxpdCgiPyIpWzBdO2QmJnNbZF0mJnNldFJlc3BvbnNlSGVhZGVycyhlLHNbZF0pfX0pfX0sSWc9W19zNjVhMDdIaHQwTWs2TXRsRzUxQ3E5aGJpWjFYaENPRURRNFFjelRUQnVnLF9BN3NXWHIycTFtcXRZcm1tOUxtWXdqREE5aVRrQ2R4T1JjenhqRUh3Vm8sZnVuY3Rpb24oZSl7ZS5ob29rcy5ob29rKCJyZW5kZXI6aHRtbCIsZT0+e2UuaGVhZC5wdXNoKCc8c2NyaXB0PiJ1c2Ugc3RyaWN0IjsoKCk9Pntjb25zdCB0PXdpbmRvdyxlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjPVsiZGFyayIsImxpZ2h0Il0sbj1nZXRTdG9yYWdlVmFsdWUoImxvY2FsU3RvcmFnZSIsIm51eHQtY29sb3ItbW9kZSIpfHwic3lzdGVtIjtsZXQgaT1uPT09InN5c3RlbSI/dSgpOm47Y29uc3Qgcj1lLmdldEF0dHJpYnV0ZSgiZGF0YS1jb2xvci1tb2RlLWZvcmNlZCIpO3ImJihpPXIpLGwoaSksdFsiX19OVVhUX0NPTE9SX01PREVfXyJdPXtwcmVmZXJlbmNlOm4sdmFsdWU6aSxnZXRDb2xvclNjaGVtZTp1LGFkZENvbG9yU2NoZW1lOmwscmVtb3ZlQ29sb3JTY2hlbWU6ZH07ZnVuY3Rpb24gbChvKXtjb25zdCBzPSIiK28rIiIsYT0iIjtlLmNsYXNzTGlzdD9lLmNsYXNzTGlzdC5hZGQocyk6ZS5jbGFzc05hbWUrPSIgIitzLGEmJmUuc2V0QXR0cmlidXRlKCJkYXRhLSIrYSxvKX1mdW5jdGlvbiBkKG8pe2NvbnN0IHM9IiIrbysiIixhPSIiO2UuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LnJlbW92ZShzKTplLmNsYXNzTmFtZT1lLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAocywiZyIpLCIiKSxhJiZlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS0iK2EpfWZ1bmN0aW9uIGYobyl7cmV0dXJuIHQubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lIitvKyIpIil9ZnVuY3Rpb24gdSgpe2lmKHQubWF0Y2hNZWRpYSYmZigiIikubWVkaWEhPT0ibm90IGFsbCIpe2Zvcihjb25zdCBvIG9mIGMpaWYoZigiOiIrbykubWF0Y2hlcylyZXR1cm4gb31yZXR1cm4ibGlnaHQifX0pKCk7ZnVuY3Rpb24gZ2V0U3RvcmFnZVZhbHVlKHQsZSl7c3dpdGNoKHQpe2Nhc2UibG9jYWxTdG9yYWdlIjpyZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpO2Nhc2Uic2Vzc2lvblN0b3JhZ2UiOnJldHVybiB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShlKTtjYXNlImNvb2tpZSI6cmV0dXJuIGdldENvb2tpZShlKTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBnZXRDb29raWUodCl7Y29uc3QgYz0oIjsgIit3aW5kb3cuZG9jdW1lbnQuY29va2llKS5zcGxpdCgiOyAiK3QrIj0iKTtpZihjLmxlbmd0aD09PTIpcmV0dXJuIGMucG9wKCk/LnNwbGl0KCI7Iikuc2hpZnQoKX08XC9zY3JpcHQ+Jyl9KX0sX3FxSnVYdGtKVGx2TWtFYVdGS2dtdkxOdmJXc3R3TUtpSW1rM0xrcFFNLF9aampoem1uZnA2azROcVh5RnFFMmh5b2NKczdCWGZnQmxOSzd1Q2FYYTVZLF9JN2l2ZUFGU1RrVVNWdDVEdWF0RUo3OU5rbWtzaHd5bVNVNGhZMUNUVnMsZT0+e30sXzZVNFpnS2NyTkZPNHJRN190SUIxZXRjYXVra3Vzd0ppamJnQUoyMzAsX2hhUVhkRHY5a0FEaGs4UUFxTnpOTXhDTzVJSGNZc0RHUExibngzYTdIUGMsZT0+e30sX01CVXlsREtUcHNEVVNWRzJQSjZNZ2s0YnRuVVcxMTJtcGdKRXJvSFZfSSxfb1A4emllVjlYVTNXYlljSFE0amoyU3Z6UThPdW15Qm9kRF9wSkxhMXNtYyxfaTlKYUIzWXFXdTFBcXdfRzJGTFBYN0NUbWNPcFM1TE1xZGQwVlRUNlQwSV0sQ2c9ZGVmaW5lRXZlbnRIYW5kbGVyKGU9Pntjb25zdCBzPWUucGF0aHx8IiI7aWYocy5zdGFydHNXaXRoKCIvYXBpLyIpfHxzLnN0YXJ0c1dpdGgoIi9fbnV4dCIpfHxzLnN0YXJ0c1dpdGgoIi9pbWFnZXMvIikpcmV0dXJuO2NvbnN0IGQ9Z2V0UXVlcnkoZSkucmVmOyJzdHJpbmciPT10eXBlb2YgZCYmbWcudGVzdChkKSYmKGdldENvb2tpZShlLCJyZWYiKXx8c2V0Q29va2llKGUsInJlZiIsZCx7aHR0cE9ubHk6ITAsc2VjdXJlOiEwLHNhbWVTaXRlOiJsYXgiLG1heEFnZTo2MDQ4MDAscGF0aDoiLyJ9KSl9KSxUZz1kZWZpbmVFdmVudEhhbmRsZXIoKCk9Pnt9KSxSZz1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksRWc9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxPZz1PYmplY3QuZnJlZXplKHsuLi5SZywuLi5FZ30pO09iamVjdC5mcmVlemUoey4uLk9nLGJvZHk6IiIsaGlkZGVuOiExfSk7Y29uc3QgUGc9T2JqZWN0LmtleXMoUmcpLmNvbmNhdChbInByb3ZpZGVyIl0pO2Z1bmN0aW9uIGdldEljb25zKGUscyxkKXtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCksaD1PYmplY3QuY3JlYXRlKG51bGwpLGc9e3ByZWZpeDplLnByZWZpeCxpY29uczptfSx4PWUuaWNvbnMsJD1lLmFsaWFzZXN8fE9iamVjdC5jcmVhdGUobnVsbCk7ZS5sYXN0TW9kaWZpZWQmJihnLmxhc3RNb2RpZmllZD1lLmxhc3RNb2RpZmllZCk7Y29uc3QgUz1mdW5jdGlvbihlLHMpe2NvbnN0IGQ9ZS5pY29ucyxtPWUuYWxpYXNlc3x8T2JqZWN0LmNyZWF0ZShudWxsKSxoPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuKHN8fE9iamVjdC5rZXlzKGQpLmNvbmNhdChPYmplY3Qua2V5cyhtKSkpLmZvckVhY2goZnVuY3Rpb24gcmVzb2x2ZShlKXtpZihkW2VdKXJldHVybiBoW2VdPVtdO2lmKCEoZSBpbiBoKSl7aFtlXT1udWxsO2NvbnN0IHM9bVtlXSYmbVtlXS5wYXJlbnQsZD1zJiZyZXNvbHZlKHMpO2QmJihoW2VdPVtzXS5jb25jYXQoZCkpfXJldHVybiBoW2VdfSksaH0oZSxzKTtsZXQgaj0hMDtmb3IoY29uc3QgZSBpbiBTKVNbZV0mJih4W2VdPyhtW2VdPXsuLi54W2VdfSxqPSExKTooaFtlXT17Li4uJFtlXX0sZy5hbGlhc2VzPWgpKTtyZXR1cm4gUGcuZm9yRWFjaChzPT57cyBpbiBlJiYoZ1tzXT1lW3NdKX0pLGomJiEwIT09ZD9udWxsOmd9ZnVuY3Rpb24gY3JlYXRlUmVtb3RlQ29sbGVjdGlvbihlKXtsZXQgcztyZXR1cm4gYXN5bmMoKT0+e2lmKHMpcmV0dXJuIHM7Y29uc3QgZD1hd2FpdCBmZXRjaChlKS50aGVuKGU9PmUuanNvbigpKTtyZXR1cm4gcz1kLGR9fWNvbnN0IE5nPXthY2FkZW1pY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYWNhZGVtaWNvbnMvaWNvbnMuanNvbiIpLCJha2FyLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYWthci1pY29ucy9pY29ucy5qc29uIiksImFudC1kZXNpZ24iOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9hbnQtZGVzaWduL2ljb25zLmpzb24iKSxhcmN0aWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2FyY3RpY29ucy9pY29ucy5qc29uIiksYmFzaWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Jhc2lsL2ljb25zLmpzb24iKSxiaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYmkvaWNvbnMuanNvbiIpLCJiaXRjb2luLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYml0Y29pbi1pY29ucy9pY29ucy5qc29uIiksYnBtbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYnBtbi9pY29ucy5qc29uIiksYnJhbmRpY286Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2JyYW5kaWNvL2ljb25zLmpzb24iKSxieDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYngvaWNvbnMuanNvbiIpLGJ4bDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vYnhsL2ljb25zLmpzb24iKSxieHM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2J4cy9pY29ucy5qc29uIiksYnl0ZXNpemU6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2J5dGVzaXplL2ljb25zLmpzb24iKSxjYXJib246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NhcmJvbi9pY29ucy5qc29uIiksY2F0cHB1Y2NpbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2F0cHB1Y2Npbi9pY29ucy5qc29uIiksY2JpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jYmkvaWNvbnMuanNvbiIpLGNoYXJtOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jaGFybS9pY29ucy5qc29uIiksY2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NpL2ljb25zLmpzb24iKSxjaWI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NpYi9pY29ucy5qc29uIiksY2lmOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jaWYvaWNvbnMuanNvbiIpLGNpbDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2lsL2ljb25zLmpzb24iKSwiY2lyY2xlLWZsYWdzIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2lyY2xlLWZsYWdzL2ljb25zLmpzb24iKSxjaXJjdW06Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NpcmN1bS9pY29ucy5qc29uIiksY2xhcml0eTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY2xhcml0eS9pY29ucy5qc29uIiksY29kZXg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2NvZGV4L2ljb25zLmpzb24iKSxjb2RpY29uOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jb2RpY29uL2ljb25zLmpzb24iKSxjb3ZpZDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY292aWQvaWNvbnMuanNvbiIpLGNyeXB0b2N1cnJlbmN5OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jcnlwdG9jdXJyZW5jeS9pY29ucy5qc29uIiksImNyeXB0b2N1cnJlbmN5LWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vY3J5cHRvY3VycmVuY3ktY29sb3IvaWNvbnMuanNvbiIpLGN1aWRhOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9jdWlkYS9pY29ucy5qc29uIiksZGFzaGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9kYXNoaWNvbnMvaWNvbnMuanNvbiIpLGRldmljb246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Rldmljb24vaWNvbnMuanNvbiIpLCJkZXZpY29uLXBsYWluIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZGV2aWNvbi1wbGFpbi9pY29ucy5qc29uIiksImRpbmtpZS1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2RpbmtpZS1pY29ucy9pY29ucy5qc29uIiksImR1by1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2R1by1pY29ucy9pY29ucy5qc29uIiksZWk6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2VpL2ljb25zLmpzb24iKSxlbDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZWwvaWNvbnMuanNvbiIpLGVtb2ppb25lOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9lbW9qaW9uZS9pY29ucy5qc29uIiksImVtb2ppb25lLW1vbm90b25lIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZW1vamlvbmUtbW9ub3RvbmUvaWNvbnMuanNvbiIpLCJlbW9qaW9uZS12MSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Vtb2ppb25lLXYxL2ljb25zLmpzb24iKSxlbnR5cG86Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2VudHlwby9pY29ucy5qc29uIiksImVudHlwby1zb2NpYWwiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9lbnR5cG8tc29jaWFsL2ljb25zLmpzb24iKSwiZW9zLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZW9zLWljb25zL2ljb25zLmpzb24iKSxlcDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZXAvaWNvbnMuanNvbiIpLGV0OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ldC9pY29ucy5qc29uIiksZXZhOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ldmEvaWNvbnMuanNvbiIpLGY3OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mNy9pY29ucy5qc29uIiksZmE6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhL2ljb25zLmpzb24iKSwiZmEtYnJhbmRzIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmEtYnJhbmRzL2ljb25zLmpzb24iKSwiZmEtcmVndWxhciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhLXJlZ3VsYXIvaWNvbnMuanNvbiIpLCJmYS1zb2xpZCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhLXNvbGlkL2ljb25zLmpzb24iKSwiZmE2LWJyYW5kcyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNi1icmFuZHMvaWNvbnMuanNvbiIpLCJmYTYtcmVndWxhciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNi1yZWd1bGFyL2ljb25zLmpzb24iKSwiZmE2LXNvbGlkIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmE2LXNvbGlkL2ljb25zLmpzb24iKSwiZmE3LWJyYW5kcyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNy1icmFuZHMvaWNvbnMuanNvbiIpLCJmYTctcmVndWxhciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhNy1yZWd1bGFyL2ljb25zLmpzb24iKSwiZmE3LXNvbGlkIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmE3LXNvbGlkL2ljb25zLmpzb24iKSxmYWQ6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhZC9pY29ucy5qc29uIiksZmFtaWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZhbWljb25zL2ljb25zLmpzb24iKSxmZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmUvaWNvbnMuanNvbiIpLGZlYXRoZXI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZlYXRoZXIvaWNvbnMuanNvbiIpLCJmaWxlLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmlsZS1pY29ucy9pY29ucy5qc29uIiksZmxhZzpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmxhZy9pY29ucy5qc29uIiksZmxhZ3BhY2s6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsYWdwYWNrL2ljb25zLmpzb24iKSwiZmxhdC1jb2xvci1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsYXQtY29sb3ItaWNvbnMvaWNvbnMuanNvbiIpLCJmbGF0LXVpIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmxhdC11aS9pY29ucy5qc29uIiksZmxvd2JpdGU6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2Zsb3diaXRlL2ljb25zLmpzb24iKSxmbHVlbnQ6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC9pY29ucy5qc29uIiksImZsdWVudC1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC1jb2xvci9pY29ucy5qc29uIiksImZsdWVudC1lbW9qaSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC1lbW9qaS9pY29ucy5qc29uIiksImZsdWVudC1lbW9qaS1mbGF0IjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZmx1ZW50LWVtb2ppLWZsYXQvaWNvbnMuanNvbiIpLCJmbHVlbnQtZW1vamktaGlnaC1jb250cmFzdCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ZsdWVudC1lbW9qaS1oaWdoLWNvbnRyYXN0L2ljb25zLmpzb24iKSwiZmx1ZW50LW1kbDIiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mbHVlbnQtbWRsMi9pY29ucy5qc29uIiksZm9udGVsaWNvOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mb250ZWxpY28vaWNvbnMuanNvbiIpLGZvbnRpc3RvOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9mb250aXN0by9pY29ucy5qc29uIiksZm9ybWtpdDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZm9ybWtpdC9pY29ucy5qc29uIiksZm91bmRhdGlvbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZm91bmRhdGlvbi9pY29ucy5qc29uIiksZnhlbW9qaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZnhlbW9qaS9pY29ucy5qc29uIiksZ2FsYTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZ2FsYS9pY29ucy5qc29uIiksImdhbWUtaWNvbnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9nYW1lLWljb25zL2ljb25zLmpzb24iKSxnYXJkZW46Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2dhcmRlbi9pY29ucy5qc29uIiksZ2VvOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9nZW8vaWNvbnMuanNvbiIpLGdnOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9nZy9pY29ucy5qc29uIiksZ2lzOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9naXMvaWNvbnMuanNvbiIpLCJncmF2aXR5LXVpIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZ3Jhdml0eS11aS9pY29ucy5qc29uIiksZ3JpZGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ncmlkaWNvbnMvaWNvbnMuanNvbiIpLCJncm9tbWV0LWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vZ3JvbW1ldC1pY29ucy9pY29ucy5qc29uIiksZ3VpZGFuY2U6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2d1aWRhbmNlL2ljb25zLmpzb24iKSxoZWFsdGhpY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaGVhbHRoaWNvbnMvaWNvbnMuanNvbiIpLGhlcm9pY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaGVyb2ljb25zL2ljb25zLmpzb24iKSwiaGVyb2ljb25zLW91dGxpbmUiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9oZXJvaWNvbnMtb3V0bGluZS9pY29ucy5qc29uIiksImhlcm9pY29ucy1zb2xpZCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2hlcm9pY29ucy1zb2xpZC9pY29ucy5qc29uIiksaHVnZWljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9odWdlaWNvbnMvaWNvbnMuanNvbiIpLGh1bWJsZWljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9odW1ibGVpY29ucy9pY29ucy5qc29uIiksaWM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ljL2ljb25zLmpzb24iKSwiaWNvbW9vbi1mcmVlIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbW9vbi1mcmVlL2ljb25zLmpzb24iKSwiaWNvbi1wYXJrIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbi1wYXJrL2ljb25zLmpzb24iKSwiaWNvbi1wYXJrLW91dGxpbmUiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9pY29uLXBhcmstb3V0bGluZS9pY29ucy5qc29uIiksImljb24tcGFyay1zb2xpZCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ljb24tcGFyay1zb2xpZC9pY29ucy5qc29uIiksImljb24tcGFyay10d290b25lIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbi1wYXJrLXR3b3RvbmUvaWNvbnMuanNvbiIpLGljb25hbW9vbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaWNvbmFtb29uL2ljb25zLmpzb24iKSxpY29ub2lyOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9pY29ub2lyL2ljb25zLmpzb24iKSxpY29uczg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2ljb25zOC9pY29ucy5qc29uIiksaWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2lsL2ljb25zLmpzb24iKSxpb246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2lvbi9pY29ucy5qc29uIiksaXd3YTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vaXd3YS9pY29ucy5qc29uIiksaXg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2l4L2ljb25zLmpzb24iKSxqYW06Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2phbS9pY29ucy5qc29uIiksbGE6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xhL2ljb25zLmpzb24iKSwibGV0cy1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xldHMtaWNvbnMvaWNvbnMuanNvbiIpLCJsaW5lLW1kIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbGluZS1tZC9pY29ucy5qc29uIiksbGluZWljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9saW5laWNvbnMvaWNvbnMuanNvbiIpLGxvZ29zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9sb2dvcy9pY29ucy5qc29uIiksbHM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xzL2ljb25zLmpzb24iKSxsc2ljb246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL2xzaWNvbi9pY29ucy5qc29uIiksbHVjaWRlOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9sdWNpZGUvaWNvbnMuanNvbiIpLCJsdWNpZGUtbGFiIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbHVjaWRlLWxhYi9pY29ucy5qc29uIiksbWFnZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWFnZS9pY29ucy5qc29uIiksbWFqZXN0aWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hamVzdGljb25zL2ljb25zLmpzb24iKSxtYWtpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tYWtpL2ljb25zLmpzb24iKSxtYXA6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hcC9pY29ucy5qc29uIiksbWFya2V0ZXE6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hcmtldGVxL2ljb25zLmpzb24iKSwibWF0ZXJpYWwtaWNvbi10aGVtZSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21hdGVyaWFsLWljb24tdGhlbWUvaWNvbnMuanNvbiIpLCJtYXRlcmlhbC1zeW1ib2xzIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWF0ZXJpYWwtc3ltYm9scy9pY29ucy5qc29uIiksIm1hdGVyaWFsLXN5bWJvbHMtbGlnaHQiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tYXRlcmlhbC1zeW1ib2xzLWxpZ2h0L2ljb25zLmpzb24iKSxtZGk6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21kaS9pY29ucy5qc29uIiksIm1kaS1saWdodCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21kaS1saWdodC9pY29ucy5qc29uIiksIm1lZGljYWwtaWNvbiI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL21lZGljYWwtaWNvbi9pY29ucy5qc29uIiksbWVtb3J5OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tZW1vcnkvaWNvbnMuanNvbiIpLG1ldGVvY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWV0ZW9jb25zL2ljb25zLmpzb24iKSwibWV0ZW9yLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWV0ZW9yLWljb25zL2ljb25zLmpzb24iKSxtaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbWkvaWNvbnMuanNvbiIpLG1pbmdjdXRlOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9taW5nY3V0ZS9pY29ucy5qc29uIiksIm1vbm8taWNvbnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9tb25vLWljb25zL2ljb25zLmpzb24iKSxteW5hdWk6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL215bmF1aS9pY29ucy5qc29uIiksbmltYnVzOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9uaW1idXMvaWNvbnMuanNvbiIpLG5vbmljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ub25pY29ucy9pY29ucy5qc29uIiksbm90bzpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vbm90by9pY29ucy5qc29uIiksIm5vdG8tdjEiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9ub3RvLXYxL2ljb25zLmpzb24iKSxucms6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL25yay9pY29ucy5qc29uIiksb2N0aWNvbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vb2N0aWNvbi9pY29ucy5qc29uIiksb2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL29pL2ljb25zLmpzb24iKSxvb3VpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9vb3VpL2ljb25zLmpzb24iKSxvcGVubW9qaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vb3Blbm1vamkvaWNvbnMuanNvbiIpLG91aTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vb3VpL2ljb25zLmpzb24iKSxwYWphbWFzOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wYWphbWFzL2ljb25zLmpzb24iKSxwZXBpY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcGVwaWNvbnMvaWNvbnMuanNvbiIpLCJwZXBpY29ucy1wZW5jaWwiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wZXBpY29ucy1wZW5jaWwvaWNvbnMuanNvbiIpLCJwZXBpY29ucy1wb3AiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wZXBpY29ucy1wb3AvaWNvbnMuanNvbiIpLCJwZXBpY29ucy1wcmludCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3BlcGljb25zLXByaW50L2ljb25zLmpzb24iKSxwaDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcGgvaWNvbnMuanNvbiIpLHBpY29uOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9waWNvbi9pY29ucy5qc29uIikscGl4ZWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3BpeGVsL2ljb25zLmpzb24iKSxwaXhlbGFydGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9waXhlbGFydGljb25zL2ljb25zLmpzb24iKSxwcmltZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcHJpbWUvaWNvbnMuanNvbiIpLHByb2ljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9wcm9pY29ucy9pY29ucy5qc29uIikscHM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3BzL2ljb25zLmpzb24iKSwicWxlbWVudGluZS1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3FsZW1lbnRpbmUtaWNvbnMvaWNvbnMuanNvbiIpLHF1aWxsOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9xdWlsbC9pY29ucy5qc29uIiksInJhZGl4LWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcmFkaXgtaWNvbnMvaWNvbnMuanNvbiIpLHJhcGhhZWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3JhcGhhZWwvaWNvbnMuanNvbiIpLHJpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9yaS9pY29ucy5qc29uIiksInJpdmV0LWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vcml2ZXQtaWNvbnMvaWNvbnMuanNvbiIpLHJvZW50Z2VuOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9yb2VudGdlbi9pY29ucy5qc29uIiksc2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3NpL2ljb25zLmpzb24iKSwic2ktZ2x5cGgiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zaS1nbHlwaC9pY29ucy5qc29uIiksc2lkZWtpY2tpY29uczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc2lkZWtpY2tpY29ucy9pY29ucy5qc29uIiksInNpbXBsZS1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3NpbXBsZS1pY29ucy9pY29ucy5qc29uIiksInNpbXBsZS1saW5lLWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc2ltcGxlLWxpbmUtaWNvbnMvaWNvbnMuanNvbiIpLCJza2lsbC1pY29ucyI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3NraWxsLWljb25zL2ljb25zLmpzb24iKSxzb2xhcjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc29sYXIvaWNvbnMuanNvbiIpLHN0YXNoOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdGFzaC9pY29ucy5qc29uIiksc3RyZWFtbGluZTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtYmxvY2siOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWJsb2NrL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtY29sb3IvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLWN5YmVyIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1jeWJlci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtY3liZXItY29sb3IiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWN5YmVyLWNvbG9yL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1lbW9qaXMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWVtb2ppcy9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtZmxleCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtZmxleC9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtZmxleC1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtZmxleC1jb2xvci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtZnJlZWhhbmQiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWZyZWVoYW5kL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1mcmVlaGFuZC1jb2xvciI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtZnJlZWhhbmQtY29sb3IvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLWthbWVsZW9uLWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1rYW1lbGVvbi1jb2xvci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtbG9nb3MiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLWxvZ29zL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1waXhlbCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtcGl4ZWwvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLXBsdW1wIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1wbHVtcC9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtcGx1bXAtY29sb3IiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLXBsdW1wLWNvbG9yL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS1zaGFycCI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtc2hhcnAvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLXNoYXJwLWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS1zaGFycC1jb2xvci9pY29ucy5qc29uIiksInN0cmVhbWxpbmUtc3RpY2tpZXMtY29sb3IiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdHJlYW1saW5lLXN0aWNraWVzLWNvbG9yL2ljb25zLmpzb24iKSwic3RyZWFtbGluZS11bHRpbWF0ZSI6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3N0cmVhbWxpbmUtdWx0aW1hdGUvaWNvbnMuanNvbiIpLCJzdHJlYW1saW5lLXVsdGltYXRlLWNvbG9yIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3RyZWFtbGluZS11bHRpbWF0ZS1jb2xvci9pY29ucy5qc29uIiksc3Vid2F5OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdWJ3YXkvaWNvbnMuanNvbiIpLCJzdmctc3Bpbm5lcnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi9zdmctc3Bpbm5lcnMvaWNvbnMuanNvbiIpLCJzeXN0ZW0tdWljb25zIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vc3lzdGVtLXVpY29ucy9pY29ucy5qc29uIiksdGFibGVyOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi90YWJsZXIvaWNvbnMuanNvbiIpLHRkZXNpZ246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3RkZXNpZ24vaWNvbnMuanNvbiIpLHRlZW55aWNvbnM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3RlZW55aWNvbnMvaWNvbnMuanNvbiIpLHRlbWFraTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdGVtYWtpL2ljb25zLmpzb24iKSx0b2tlbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdG9rZW4vaWNvbnMuanNvbiIpLCJ0b2tlbi1icmFuZGVkIjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdG9rZW4tYnJhbmRlZC9pY29ucy5qc29uIiksdG9wY29hdDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdG9wY29hdC9pY29ucy5qc29uIiksdHdlbW9qaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdHdlbW9qaS9pY29ucy5qc29uIiksdHlwY246Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3R5cGNuL2ljb25zLmpzb24iKSx1aWw6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3VpbC9pY29ucy5qc29uIiksdWltOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi91aW0vaWNvbnMuanNvbiIpLHVpczpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdWlzL2ljb25zLmpzb24iKSx1aXQ6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3VpdC9pY29ucy5qc29uIiksdWl3OmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi91aXcvaWNvbnMuanNvbiIpLHVuanM6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3VuanMvaWNvbnMuanNvbiIpLHZhYWRpbjpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdmFhZGluL2ljb25zLmpzb24iKSx2czpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vdnMvaWNvbnMuanNvbiIpLCJ2c2NvZGUtaWNvbnMiOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi92c2NvZGUtaWNvbnMvaWNvbnMuanNvbiIpLHdlYnN5bWJvbDpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vd2Vic3ltYm9sL2ljb25zLmpzb24iKSx3ZXVpOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi93ZXVpL2ljb25zLmpzb24iKSx3aGg6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3doaC9pY29ucy5qc29uIiksd2k6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3dpL2ljb25zLmpzb24iKSx3cGY6Y3JlYXRlUmVtb3RlQ29sbGVjdGlvbigiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaWNvbmlmeS1qc29uL3dwZi9pY29ucy5qc29uIiksem1kaTpjcmVhdGVSZW1vdGVDb2xsZWN0aW9uKCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpY29uaWZ5LWpzb24vem1kaS9pY29ucy5qc29uIiksem9uZGljb25zOmNyZWF0ZVJlbW90ZUNvbGxlY3Rpb24oImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGljb25pZnktanNvbi96b25kaWNvbnMvaWNvbnMuanNvbiIpfSxEZz1kZWZpbmVDYWNoZWRFdmVudEhhbmRsZXIoYXN5bmMgZT0+e2NvbnN0IHM9Z2V0UmVxdWVzdFVSTChlKTtpZighcylyZXR1cm4gY3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwMCxtZXNzYWdlOiJJbnZhbGlkIGljb24gcmVxdWVzdCJ9KTtjb25zdCBkPU1pLmljb24sbT1lLmNvbnRleHQucGFyYW1zPy5jb2xsZWN0aW9uPy5yZXBsYWNlKC9cLmpzb24kLywiIiksaD1tP2F3YWl0KE5nW21dPy4oKSk6bnVsbCxnPWQuaWNvbmlmeUFwaUVuZHBvaW50fHwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24iLHg9cy5zZWFyY2hQYXJhbXMuZ2V0KCJpY29ucyIpPy5zcGxpdCgiLCIpO2lmKGgmJng/Lmxlbmd0aCl7Y29uc3QgZT1nZXRJY29ucyhoLHgpO3JldHVybiByci5kZWJ1ZyhgW0ljb25dIHNlcnZpbmcgJHsoeHx8W10pLm1hcChlPT4iYCIrbSsiOiIrZSsiYCIpLmpvaW4oIiwiKX0gZnJvbSBidW5kbGVkIGNvbGxlY3Rpb25gKSxlfWlmKCEwPT09ZC5mYWxsYmFja1RvQXBpfHwic2VydmVyLW9ubHkiPT09ZC5mYWxsYmFja1RvQXBpKXtjb25zdCBlPW5ldyBVUkwoIi4vIitiYXNlbmFtZShzLnBhdGhuYW1lKStzLnNlYXJjaCxnKTtpZihyci5kZWJ1ZyhgW0ljb25dIGZldGNoaW5nICR7KHh8fFtdKS5tYXAoZT0+ImAiK20rIjoiK2UrImAiKS5qb2luKCIsIil9IGZyb20gaWNvbmlmeSBhcGlgKSxlLmhvc3QhPT1uZXcgVVJMKGcpLmhvc3QpcmV0dXJuIGNyZWF0ZUVycm9yJDEoe3N0YXR1czo0MDAsbWVzc2FnZToiSW52YWxpZCBpY29uIHJlcXVlc3QifSk7dHJ5e3JldHVybiBhd2FpdCAkZmV0Y2goZS5ocmVmKX1jYXRjaChlKXtyZXR1cm4gcnIuZXJyb3IoZSksNDA0PT09ZS5zdGF0dXM/Y3JlYXRlRXJyb3IkMSh7c3RhdHVzOjQwNH0pOmNyZWF0ZUVycm9yJDEoe3N0YXR1czo1MDAsbWVzc2FnZToiRmFpbGVkIHRvIGZldGNoIGZhbGxiYWNrIGljb24ifSl9fXJldHVybiBjcmVhdGVFcnJvciQxKHtzdGF0dXM6NDA0fSl9LHtncm91cDoibnV4dCIsbmFtZToiaWNvbiIsZ2V0S2V5KGUpe2NvbnN0IHM9ZS5jb250ZXh0LnBhcmFtcz8uY29sbGVjdGlvbj8ucmVwbGFjZSgvXC5qc29uJC8sIiIpfHwidW5rbm93biIsZD1TdHJpbmcoZ2V0UXVlcnkoZSkuaWNvbnN8fCIiKTtyZXR1cm5gJHtzfV8ke2Quc3BsaXQoIiwiKVswXX1fJHtkLmxlbmd0aH1fJHtoYXNoJDIoZCl9YH0sc3dyOiEwLG1heEFnZTo2MDQ4MDB9KSxVZz17dGhyb3dFcnJvcjohMH0sZGVmYXVsdFNlY3VyaXR5Q29uZmlnPShlLHMpPT57Y29uc3QgZD17c3RyaWN0OnMsaGVhZGVyczp7Y3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeToic2FtZS1vcmlnaW4iLGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OiJzYW1lLW9yaWdpbiIsY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeToiY3JlZGVudGlhbGxlc3MiLGNvbnRlbnRTZWN1cml0eVBvbGljeTp7ImJhc2UtdXJpIjpbIidub25lJyJdLCJmb250LXNyYyI6WyInc2VsZiciLCJodHRwczoiLCJkYXRhOiJdLCJmb3JtLWFjdGlvbiI6WyInc2VsZiciXSwiZnJhbWUtYW5jZXN0b3JzIjpbIidzZWxmJyJdLCJpbWctc3JjIjpbIidzZWxmJyIsImRhdGE6Il0sIm9iamVjdC1zcmMiOlsiJ25vbmUnIl0sInNjcmlwdC1zcmMtYXR0ciI6WyInbm9uZSciXSwic3R5bGUtc3JjIjpbIidzZWxmJyIsImh0dHBzOiIsIid1bnNhZmUtaW5saW5lJyJdLCJzY3JpcHQtc3JjIjpbIidzZWxmJyIsImh0dHBzOiIsIid1bnNhZmUtaW5saW5lJyIsIidzdHJpY3QtZHluYW1pYyciLCInbm9uY2Ute3tub25jZX19JyJdLCJ1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzIjohMH0sb3JpZ2luQWdlbnRDbHVzdGVyOiI/MSIscmVmZXJyZXJQb2xpY3k6Im5vLXJlZmVycmVyIixzdHJpY3RUcmFuc3BvcnRTZWN1cml0eTp7bWF4QWdlOjE1NTUyZTMsaW5jbHVkZVN1YmRvbWFpbnM6ITB9LHhDb250ZW50VHlwZU9wdGlvbnM6Im5vc25pZmYiLHhETlNQcmVmZXRjaENvbnRyb2w6Im9mZiIseERvd25sb2FkT3B0aW9uczoibm9vcGVuIix4RnJhbWVPcHRpb25zOiJTQU1FT1JJR0lOIix4UGVybWl0dGVkQ3Jvc3NEb21haW5Qb2xpY2llczoibm9uZSIseFhTU1Byb3RlY3Rpb246IjAiLHBlcm1pc3Npb25zUG9saWN5OntjYW1lcmE6W10sImRpc3BsYXktY2FwdHVyZSI6W10sZnVsbHNjcmVlbjpbXSxnZW9sb2NhdGlvbjpbXSxtaWNyb3Bob25lOltdfX0scmVxdWVzdFNpemVMaW1pdGVyOnttYXhSZXF1ZXN0U2l6ZUluQnl0ZXM6MmU2LG1heFVwbG9hZEZpbGVSZXF1ZXN0SW5CeXRlczo4ZTYsLi4uVWd9LHJhdGVMaW1pdGVyOnt0b2tlbnNQZXJJbnRlcnZhbDoxNTAsaW50ZXJ2YWw6M2U1LGhlYWRlcnM6ITEsZHJpdmVyOntuYW1lOiJscnVDYWNoZSJ9LHdoaXRlTGlzdDp2b2lkIDAsaXBIZWFkZXI6dm9pZCAwLC4uLlVnfSx4c3NWYWxpZGF0b3I6e21ldGhvZHM6WyJHRVQiLCJQT1NUIl0sLi4uVWd9LGNvcnNIYW5kbGVyOntvcmlnaW46ZSxtZXRob2RzOlsiR0VUIiwiSEVBRCIsIlBVVCIsIlBBVENIIiwiUE9TVCIsIkRFTEVURSJdLHByZWZsaWdodDp7c3RhdHVzQ29kZToyMDR9fSxhbGxvd2VkTWV0aG9kc1Jlc3RyaWN0ZXI6e21ldGhvZHM6IioiLC4uLlVnfSxoaWRlUG93ZXJlZEJ5OiEwLGJhc2ljQXV0aDohMSxlbmFibGVkOiEwLGNzcmY6ITEsbm9uY2U6ITAscmVtb3ZlTG9nZ2VyczohMCxzc2c6e21ldGE6ITAsaGFzaFNjcmlwdHM6ITAsaGFzaFN0eWxlczohMSxuaXRyb0hlYWRlcnM6ITAsZXhwb3J0VG9QcmVzZXRzOiEwfSxzcmk6ITB9O3JldHVybiBkLmhlYWRlcnMuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeT0icmVxdWlyZS1jb3JwIixkLmhlYWRlcnMuY29udGVudFNlY3VyaXR5UG9saWN5PXsiYmFzZS11cmkiOlsiJ25vbmUnIl0sImRlZmF1bHQtc3JjIjpbIidub25lJyJdLCJjb25uZWN0LXNyYyI6WyInc2VsZiciXSwiZm9udC1zcmMiOlsiJ3NlbGYnIl0sImZvcm0tYWN0aW9uIjpbIidzZWxmJyJdLCJmcmFtZS1hbmNlc3RvcnMiOlsiJ3NlbGYnIl0sImZyYW1lLXNyYyI6WyInc2VsZiciXSwiaW1nLXNyYyI6WyInc2VsZiciXSwibWFuaWZlc3Qtc3JjIjpbIidzZWxmJyJdLCJtZWRpYS1zcmMiOlsiJ3NlbGYnIl0sIm9iamVjdC1zcmMiOlsiJ25vbmUnIl0sInNjcmlwdC1zcmMtYXR0ciI6WyInbm9uZSciXSwic3R5bGUtc3JjIjpbIidzZWxmJyIsIidub25jZS17e25vbmNlfX0nIl0sInNjcmlwdC1zcmMiOlsiJ3NlbGYnIiwiJ3N0cmljdC1keW5hbWljJyIsIidub25jZS17e25vbmNlfX0nIl0sInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMiOiEwLCJ3b3JrZXItc3JjIjpbIidzZWxmJyJdfSxkLnNzZy5oYXNoU3R5bGVzPSEwLGQuaGVhZGVycy5zdHJpY3RUcmFuc3BvcnRTZWN1cml0eT17bWF4QWdlOjMxNTM2ZTMsaW5jbHVkZVN1YmRvbWFpbnM6ITAscHJlbG9hZDohMH0sZC5oZWFkZXJzLnhGcmFtZU9wdGlvbnM9IkRFTlkiLGQuaGVhZGVycy5wZXJtaXNzaW9uc1BvbGljeT17YWNjZWxlcm9tZXRlcjpbXSxhdXRvcGxheTpbXSxjYW1lcmE6W10sImRpc3BsYXktY2FwdHVyZSI6W10sImVuY3J5cHRlZC1tZWRpYSI6W10sZnVsbHNjcmVlbjpbXSxnZW9sb2NhdGlvbjpbXSxneXJvc2NvcGU6W10sbWFnbmV0b21ldGVyOltdLG1pY3JvcGhvbmU6W10sbWlkaTpbXSxwYXltZW50OltdLCJwaWN0dXJlLWluLXBpY3R1cmUiOltdLCJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IjpbXSwic2NyZWVuLXdha2UtbG9jayI6W10sInN5bmMteGhyIjpbInNlbGYiXSx1c2I6W10sIndlYi1zaGFyZSI6W10sInhyLXNwYXRpYWwtdHJhY2tpbmciOltdfSxkfSxMZz1kZWZhdWx0U2VjdXJpdHlDb25maWcoIiIsITApLnJlcXVlc3RTaXplTGltaXRlcixBZz1kZWZpbmVFdmVudEhhbmRsZXIoZT0+e2NvbnN0IHM9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSk7aWYocy5lbmFibGVkJiZzLnJlcXVlc3RTaXplTGltaXRlcil7Y29uc3QgZD13bihzLnJlcXVlc3RTaXplTGltaXRlcixMZyk7aWYoWyJQT1NUIiwiUFVUIiwiREVMRVRFIl0uaW5jbHVkZXMoZS5ub2RlLnJlcS5tZXRob2QpKXtjb25zdCBzPWdldFJlcXVlc3RIZWFkZXIoZSwiY29udGVudC1sZW5ndGgiKSxtPWdldFJlcXVlc3RIZWFkZXIoZSwiY29udGVudC10eXBlIiksaD1tPy5pbmNsdWRlcygibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpLGc9aD9kLm1heFVwbG9hZEZpbGVSZXF1ZXN0SW5CeXRlczpkLm1heFJlcXVlc3RTaXplSW5CeXRlcztpZihwYXJzZUludChzKT49Zyl7Y29uc3QgZT17c3RhdHVzQ29kZTo0MTMsc3RhdHVzTWVzc2FnZToiUGF5bG9hZCBUb28gTGFyZ2UifTtpZighMT09PWQudGhyb3dFcnJvcilyZXR1cm4gZTt0aHJvdyBjcmVhdGVFcnJvciQxKGUpfX19fSkscWc9ZGVmaW5lRXZlbnRIYW5kbGVyKGU9Pntjb25zdCBzPXJlc29sdmVTZWN1cml0eVJ1bGVzKGUpO2lmKHMuZW5hYmxlZCYmcy5jb3JzSGFuZGxlcil7Y29uc3R7Y29yc0hhbmRsZXI6ZH09cztsZXQgbTttPSJzdHJpbmciPT10eXBlb2YgZC5vcmlnaW4mJiIqIiE9PWQub3JpZ2luP1tkLm9yaWdpbl06ZC5vcmlnaW4sbSYmIioiIT09bSYmZC51c2VSZWdFeHAmJihtPW0ubWFwKGU9Pm5ldyBSZWdFeHAoZSwiaSIpKSksaGFuZGxlQ29ycyhlLHtvcmlnaW46bSxtZXRob2RzOmQubWV0aG9kcyxhbGxvd0hlYWRlcnM6ZC5hbGxvd0hlYWRlcnMsZXhwb3NlSGVhZGVyczpkLmV4cG9zZUhlYWRlcnMsY3JlZGVudGlhbHM6ZC5jcmVkZW50aWFscyxtYXhBZ2U6ZC5tYXhBZ2UscHJlZmxpZ2h0OmQucHJlZmxpZ2h0fSl9fSksRmc9ZGVmaW5lRXZlbnRIYW5kbGVyKGU9Pntjb25zdCBzPXJlc29sdmVTZWN1cml0eVJ1bGVzKGUpO2lmKHMuZW5hYmxlZCYmcy5hbGxvd2VkTWV0aG9kc1Jlc3RyaWN0ZXIpe2NvbnN0e2FsbG93ZWRNZXRob2RzUmVzdHJpY3RlcjpkfT1zLG09ZC5tZXRob2RzO2lmKCIqIiE9PW0mJiFtLmluY2x1ZGVzKGUubm9kZS5yZXEubWV0aG9kKSl7Y29uc3QgZT17c3RhdHVzQ29kZTo0MDUsc3RhdHVzTWVzc2FnZToiTWV0aG9kIG5vdCBhbGxvd2VkIn07aWYoITE9PT1kLnRocm93RXJyb3IpcmV0dXJuIGU7dGhyb3cgY3JlYXRlRXJyb3IkMShlKX19fSksQmc9dXNlU3RvcmFnZSgiI3JhdGUtbGltaXRlci1zdG9yYWdlIiksWmc9ZGVmYXVsdFNlY3VyaXR5Q29uZmlnKCIiLCEwKS5yYXRlTGltaXRlcixNZz1kZWZpbmVFdmVudEhhbmRsZXIoYXN5bmMgZT0+e2NvbnN0IHM9cmVzb2x2ZVNlY3VyaXR5UnVsZXMoZSksZD1mdW5jdGlvbihlKXtpZihlLmNvbnRleHQuc2VjdXJpdHl8fChlLmNvbnRleHQuc2VjdXJpdHk9e30pLCFlLmNvbnRleHQuc2VjdXJpdHkucm91dGUpe2NvbnN0IHM9Y3JlYXRlUm91dGVyJDEoe3JvdXRlczpPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZ2cpLm1hcCgoW2VdKT0+W2Use25hbWU6ZX1dKSl9KSxkPWUucGF0aC5zcGxpdCgiPyIpWzBdLG09ZD9zLmxvb2t1cChkKTp2b2lkIDAsaD1tPy5uYW1lPz8iIjtlLmNvbnRleHQuc2VjdXJpdHkucm91dGU9aH1yZXR1cm4gZS5jb250ZXh0LnNlY3VyaXR5LnJvdXRlfShlKTtpZihzLmVuYWJsZWQmJnMucmF0ZUxpbWl0ZXIpe2NvbnN0IG09d24ocy5yYXRlTGltaXRlcixaZyksaD1mdW5jdGlvbihlLHMpe2NvbnN0IGQ9cz9nZXRSZXF1ZXN0SGVhZGVyKGUscyl8fCIiOmZ1bmN0aW9uKGUscz17fSl7aWYoZS5jb250ZXh0LmNsaWVudEFkZHJlc3MpcmV0dXJuIGUuY29udGV4dC5jbGllbnRBZGRyZXNzO2lmKHMueEZvcndhcmRlZEZvcil7Y29uc3Qgcz1nZXRSZXF1ZXN0SGVhZGVyKGUsIngtZm9yd2FyZGVkLWZvciIpPy5zcGxpdCgiLCIpLnNoaWZ0KCk/LnRyaW0oKTtpZihzKXJldHVybiBzfXJldHVybiBlLm5vZGUucmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzP2Uubm9kZS5yZXEuc29ja2V0LnJlbW90ZUFkZHJlc3M6dm9pZCAwfShlLHt4Rm9yd2FyZGVkRm9yOiEwfSl8fCIiO3JldHVybiBkfShlLG0uaXBIZWFkZXIpO2lmKG0ud2hpdGVMaXN0JiZtLndoaXRlTGlzdC5pbmNsdWRlcyhoKSlyZXR1cm47Y29uc3QgZz1oK2Q7bGV0IHg9YXdhaXQgQmcuZ2V0SXRlbShnKTtpZih4KXtpZigib2JqZWN0IiE9dHlwZW9mIHgpcmV0dXJuO2NvbnN0IGQ9eC5kYXRlLGg9eC5kYXRlK051bWJlcihtLmludGVydmFsKTtEYXRlLm5vdygpPj1oJiYoYXdhaXQgc2V0U3RvcmFnZUl0ZW0obSxnKSx4PWF3YWl0IEJnLmdldEl0ZW0oZykpO2lmKGQ8PWgmJjA9PT14LnZhbHVlKXtjb25zdCBkPXtzdGF0dXNDb2RlOjQyOSxzdGF0dXNNZXNzYWdlOiJUb28gTWFueSBSZXF1ZXN0cyJ9O2lmKHMucmF0ZUxpbWl0ZXIuaGVhZGVycyYmKHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlbWFpbmluZyIsMCksc2V0UmVzcG9uc2VIZWFkZXIoZSwieC1yYXRlbGltaXQtbGltaXQiLG0udG9rZW5zUGVySW50ZXJ2YWwpLHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlc2V0IixoKSksITE9PT1tLnRocm93RXJyb3IpcmV0dXJuIGQ7dGhyb3cgY3JlYXRlRXJyb3IkMShkKX1jb25zdCAkPWQ+aD9EYXRlLm5vdygpOnguZGF0ZSxTPXt2YWx1ZTp4LnZhbHVlLTEsZGF0ZTokfTthd2FpdCBCZy5zZXRJdGVtKGcsUyk7Y29uc3Qgaj1hd2FpdCBCZy5nZXRJdGVtKGcpO2omJm0uaGVhZGVycyYmKHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlbWFpbmluZyIsai52YWx1ZSksc2V0UmVzcG9uc2VIZWFkZXIoZSwieC1yYXRlbGltaXQtbGltaXQiLG0udG9rZW5zUGVySW50ZXJ2YWwpLHNldFJlc3BvbnNlSGVhZGVyKGUsIngtcmF0ZWxpbWl0LXJlc2V0IixoKSl9ZWxzZSBhd2FpdCBzZXRTdG9yYWdlSXRlbShtLGcpfX0pO2FzeW5jIGZ1bmN0aW9uIHNldFN0b3JhZ2VJdGVtKGUscyl7Y29uc3QgZD17dmFsdWU6ZS50b2tlbnNQZXJJbnRlcnZhbCxkYXRlOkRhdGUubm93KCl9O2F3YWl0IEJnLnNldEl0ZW0ocyxkKX12YXIgUWc9e2V4cG9ydHM6e319LFZnPXt9LEhnPXtleHBvcnRzOnt9fSxXZz17fTtmdW5jdGlvbiBnZXREZWZhdWx0V2hpdGVMaXN0JDEoKXt2YXIgZT17ImFsaWduLWNvbnRlbnQiOiExLCJhbGlnbi1pdGVtcyI6ITEsImFsaWduLXNlbGYiOiExLCJhbGlnbm1lbnQtYWRqdXN0IjohMSwiYWxpZ25tZW50LWJhc2VsaW5lIjohMSxhbGw6ITEsImFuY2hvci1wb2ludCI6ITEsYW5pbWF0aW9uOiExLCJhbmltYXRpb24tZGVsYXkiOiExLCJhbmltYXRpb24tZGlyZWN0aW9uIjohMSwiYW5pbWF0aW9uLWR1cmF0aW9uIjohMSwiYW5pbWF0aW9uLWZpbGwtbW9kZSI6ITEsImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOiExLCJhbmltYXRpb24tbmFtZSI6ITEsImFuaW1hdGlvbi1wbGF5LXN0YXRlIjohMSwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiI6ITEsYXppbXV0aDohMSwiYmFja2ZhY2UtdmlzaWJpbGl0eSI6ITEsYmFja2dyb3VuZDohMCwiYmFja2dyb3VuZC1hdHRhY2htZW50IjohMCwiYmFja2dyb3VuZC1jbGlwIjohMCwiYmFja2dyb3VuZC1jb2xvciI6ITAsImJhY2tncm91bmQtaW1hZ2UiOiEwLCJiYWNrZ3JvdW5kLW9yaWdpbiI6ITAsImJhY2tncm91bmQtcG9zaXRpb24iOiEwLCJiYWNrZ3JvdW5kLXJlcGVhdCI6ITAsImJhY2tncm91bmQtc2l6ZSI6ITAsImJhc2VsaW5lLXNoaWZ0IjohMSxiaW5kaW5nOiExLGJsZWVkOiExLCJib29rbWFyay1sYWJlbCI6ITEsImJvb2ttYXJrLWxldmVsIjohMSwiYm9va21hcmstc3RhdGUiOiExLGJvcmRlcjohMCwiYm9yZGVyLWJvdHRvbSI6ITAsImJvcmRlci1ib3R0b20tY29sb3IiOiEwLCJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIjohMCwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiOiEwLCJib3JkZXItYm90dG9tLXN0eWxlIjohMCwiYm9yZGVyLWJvdHRvbS13aWR0aCI6ITAsImJvcmRlci1jb2xsYXBzZSI6ITAsImJvcmRlci1jb2xvciI6ITAsImJvcmRlci1pbWFnZSI6ITAsImJvcmRlci1pbWFnZS1vdXRzZXQiOiEwLCJib3JkZXItaW1hZ2UtcmVwZWF0IjohMCwiYm9yZGVyLWltYWdlLXNsaWNlIjohMCwiYm9yZGVyLWltYWdlLXNvdXJjZSI6ITAsImJvcmRlci1pbWFnZS13aWR0aCI6ITAsImJvcmRlci1sZWZ0IjohMCwiYm9yZGVyLWxlZnQtY29sb3IiOiEwLCJib3JkZXItbGVmdC1zdHlsZSI6ITAsImJvcmRlci1sZWZ0LXdpZHRoIjohMCwiYm9yZGVyLXJhZGl1cyI6ITAsImJvcmRlci1yaWdodCI6ITAsImJvcmRlci1yaWdodC1jb2xvciI6ITAsImJvcmRlci1yaWdodC1zdHlsZSI6ITAsImJvcmRlci1yaWdodC13aWR0aCI6ITAsImJvcmRlci1zcGFjaW5nIjohMCwiYm9yZGVyLXN0eWxlIjohMCwiYm9yZGVyLXRvcCI6ITAsImJvcmRlci10b3AtY29sb3IiOiEwLCJib3JkZXItdG9wLWxlZnQtcmFkaXVzIjohMCwiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiOiEwLCJib3JkZXItdG9wLXN0eWxlIjohMCwiYm9yZGVyLXRvcC13aWR0aCI6ITAsImJvcmRlci13aWR0aCI6ITAsYm90dG9tOiExLCJib3gtZGVjb3JhdGlvbi1icmVhayI6ITAsImJveC1zaGFkb3ciOiEwLCJib3gtc2l6aW5nIjohMCwiYm94LXNuYXAiOiEwLCJib3gtc3VwcHJlc3MiOiEwLCJicmVhay1hZnRlciI6ITAsImJyZWFrLWJlZm9yZSI6ITAsImJyZWFrLWluc2lkZSI6ITAsImNhcHRpb24tc2lkZSI6ITEsY2hhaW5zOiExLGNsZWFyOiEwLGNsaXA6ITEsImNsaXAtcGF0aCI6ITEsImNsaXAtcnVsZSI6ITEsY29sb3I6ITAsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyI6ITAsImNvbHVtbi1jb3VudCI6ITEsImNvbHVtbi1maWxsIjohMSwiY29sdW1uLWdhcCI6ITEsImNvbHVtbi1ydWxlIjohMSwiY29sdW1uLXJ1bGUtY29sb3IiOiExLCJjb2x1bW4tcnVsZS1zdHlsZSI6ITEsImNvbHVtbi1ydWxlLXdpZHRoIjohMSwiY29sdW1uLXNwYW4iOiExLCJjb2x1bW4td2lkdGgiOiExLGNvbHVtbnM6ITEsY29udGFpbjohMSxjb250ZW50OiExLCJjb3VudGVyLWluY3JlbWVudCI6ITEsImNvdW50ZXItcmVzZXQiOiExLCJjb3VudGVyLXNldCI6ITEsY3JvcDohMSxjdWU6ITEsImN1ZS1hZnRlciI6ITEsImN1ZS1iZWZvcmUiOiExLGN1cnNvcjohMSxkaXJlY3Rpb246ITEsZGlzcGxheTohMCwiZGlzcGxheS1pbnNpZGUiOiEwLCJkaXNwbGF5LWxpc3QiOiEwLCJkaXNwbGF5LW91dHNpZGUiOiEwLCJkb21pbmFudC1iYXNlbGluZSI6ITEsZWxldmF0aW9uOiExLCJlbXB0eS1jZWxscyI6ITEsZmlsdGVyOiExLGZsZXg6ITEsImZsZXgtYmFzaXMiOiExLCJmbGV4LWRpcmVjdGlvbiI6ITEsImZsZXgtZmxvdyI6ITEsImZsZXgtZ3JvdyI6ITEsImZsZXgtc2hyaW5rIjohMSwiZmxleC13cmFwIjohMSxmbG9hdDohMSwiZmxvYXQtb2Zmc2V0IjohMSwiZmxvb2QtY29sb3IiOiExLCJmbG9vZC1vcGFjaXR5IjohMSwiZmxvdy1mcm9tIjohMSwiZmxvdy1pbnRvIjohMSxmb250OiEwLCJmb250LWZhbWlseSI6ITAsImZvbnQtZmVhdHVyZS1zZXR0aW5ncyI6ITAsImZvbnQta2VybmluZyI6ITAsImZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUiOiEwLCJmb250LXNpemUiOiEwLCJmb250LXNpemUtYWRqdXN0IjohMCwiZm9udC1zdHJldGNoIjohMCwiZm9udC1zdHlsZSI6ITAsImZvbnQtc3ludGhlc2lzIjohMCwiZm9udC12YXJpYW50IjohMCwiZm9udC12YXJpYW50LWFsdGVybmF0ZXMiOiEwLCJmb250LXZhcmlhbnQtY2FwcyI6ITAsImZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIjohMCwiZm9udC12YXJpYW50LWxpZ2F0dXJlcyI6ITAsImZvbnQtdmFyaWFudC1udW1lcmljIjohMCwiZm9udC12YXJpYW50LXBvc2l0aW9uIjohMCwiZm9udC13ZWlnaHQiOiEwLGdyaWQ6ITEsImdyaWQtYXJlYSI6ITEsImdyaWQtYXV0by1jb2x1bW5zIjohMSwiZ3JpZC1hdXRvLWZsb3ciOiExLCJncmlkLWF1dG8tcm93cyI6ITEsImdyaWQtY29sdW1uIjohMSwiZ3JpZC1jb2x1bW4tZW5kIjohMSwiZ3JpZC1jb2x1bW4tc3RhcnQiOiExLCJncmlkLXJvdyI6ITEsImdyaWQtcm93LWVuZCI6ITEsImdyaWQtcm93LXN0YXJ0IjohMSwiZ3JpZC10ZW1wbGF0ZSI6ITEsImdyaWQtdGVtcGxhdGUtYXJlYXMiOiExLCJncmlkLXRlbXBsYXRlLWNvbHVtbnMiOiExLCJncmlkLXRlbXBsYXRlLXJvd3MiOiExLCJoYW5naW5nLXB1bmN0dWF0aW9uIjohMSxoZWlnaHQ6ITAsaHlwaGVuczohMSxpY29uOiExLCJpbWFnZS1vcmllbnRhdGlvbiI6ITEsImltYWdlLXJlc29sdXRpb24iOiExLCJpbWUtbW9kZSI6ITEsImluaXRpYWwtbGV0dGVycyI6ITEsImlubGluZS1ib3gtYWxpZ24iOiExLCJqdXN0aWZ5LWNvbnRlbnQiOiExLCJqdXN0aWZ5LWl0ZW1zIjohMSwianVzdGlmeS1zZWxmIjohMSxsZWZ0OiExLCJsZXR0ZXItc3BhY2luZyI6ITAsImxpZ2h0aW5nLWNvbG9yIjohMCwibGluZS1ib3gtY29udGFpbiI6ITEsImxpbmUtYnJlYWsiOiExLCJsaW5lLWdyaWQiOiExLCJsaW5lLWhlaWdodCI6ITEsImxpbmUtc25hcCI6ITEsImxpbmUtc3RhY2tpbmciOiExLCJsaW5lLXN0YWNraW5nLXJ1YnkiOiExLCJsaW5lLXN0YWNraW5nLXNoaWZ0IjohMSwibGluZS1zdGFja2luZy1zdHJhdGVneSI6ITEsImxpc3Qtc3R5bGUiOiEwLCJsaXN0LXN0eWxlLWltYWdlIjohMCwibGlzdC1zdHlsZS1wb3NpdGlvbiI6ITAsImxpc3Qtc3R5bGUtdHlwZSI6ITAsbWFyZ2luOiEwLCJtYXJnaW4tYm90dG9tIjohMCwibWFyZ2luLWxlZnQiOiEwLCJtYXJnaW4tcmlnaHQiOiEwLCJtYXJnaW4tdG9wIjohMCwibWFya2VyLW9mZnNldCI6ITEsIm1hcmtlci1zaWRlIjohMSxtYXJrczohMSxtYXNrOiExLCJtYXNrLWJveCI6ITEsIm1hc2stYm94LW91dHNldCI6ITEsIm1hc2stYm94LXJlcGVhdCI6ITEsIm1hc2stYm94LXNsaWNlIjohMSwibWFzay1ib3gtc291cmNlIjohMSwibWFzay1ib3gtd2lkdGgiOiExLCJtYXNrLWNsaXAiOiExLCJtYXNrLWltYWdlIjohMSwibWFzay1vcmlnaW4iOiExLCJtYXNrLXBvc2l0aW9uIjohMSwibWFzay1yZXBlYXQiOiExLCJtYXNrLXNpemUiOiExLCJtYXNrLXNvdXJjZS10eXBlIjohMSwibWFzay10eXBlIjohMSwibWF4LWhlaWdodCI6ITAsIm1heC1saW5lcyI6ITEsIm1heC13aWR0aCI6ITAsIm1pbi1oZWlnaHQiOiEwLCJtaW4td2lkdGgiOiEwLCJtb3ZlLXRvIjohMSwibmF2LWRvd24iOiExLCJuYXYtaW5kZXgiOiExLCJuYXYtbGVmdCI6ITEsIm5hdi1yaWdodCI6ITEsIm5hdi11cCI6ITEsIm9iamVjdC1maXQiOiExLCJvYmplY3QtcG9zaXRpb24iOiExLG9wYWNpdHk6ITEsb3JkZXI6ITEsb3JwaGFuczohMSxvdXRsaW5lOiExLCJvdXRsaW5lLWNvbG9yIjohMSwib3V0bGluZS1vZmZzZXQiOiExLCJvdXRsaW5lLXN0eWxlIjohMSwib3V0bGluZS13aWR0aCI6ITEsb3ZlcmZsb3c6ITEsIm92ZXJmbG93LXdyYXAiOiExLCJvdmVyZmxvdy14IjohMSwib3ZlcmZsb3cteSI6ITEscGFkZGluZzohMCwicGFkZGluZy1ib3R0b20iOiEwLCJwYWRkaW5nLWxlZnQiOiEwLCJwYWRkaW5nLXJpZ2h0IjohMCwicGFkZGluZy10b3AiOiEwLHBhZ2U6ITEsInBhZ2UtYnJlYWstYWZ0ZXIiOiExLCJwYWdlLWJyZWFrLWJlZm9yZSI6ITEsInBhZ2UtYnJlYWstaW5zaWRlIjohMSwicGFnZS1wb2xpY3kiOiExLHBhdXNlOiExLCJwYXVzZS1hZnRlciI6ITEsInBhdXNlLWJlZm9yZSI6ITEscGVyc3BlY3RpdmU6ITEsInBlcnNwZWN0aXZlLW9yaWdpbiI6ITEscGl0Y2g6ITEsInBpdGNoLXJhbmdlIjohMSwicGxheS1kdXJpbmciOiExLHBvc2l0aW9uOiExLCJwcmVzZW50YXRpb24tbGV2ZWwiOiExLHF1b3RlczohMSwicmVnaW9uLWZyYWdtZW50IjohMSxyZXNpemU6ITEscmVzdDohMSwicmVzdC1hZnRlciI6ITEsInJlc3QtYmVmb3JlIjohMSxyaWNobmVzczohMSxyaWdodDohMSxyb3RhdGlvbjohMSwicm90YXRpb24tcG9pbnQiOiExLCJydWJ5LWFsaWduIjohMSwicnVieS1tZXJnZSI6ITEsInJ1YnktcG9zaXRpb24iOiExLCJzaGFwZS1pbWFnZS10aHJlc2hvbGQiOiExLCJzaGFwZS1vdXRzaWRlIjohMSwic2hhcGUtbWFyZ2luIjohMSxzaXplOiExLHNwZWFrOiExLCJzcGVhay1hcyI6ITEsInNwZWFrLWhlYWRlciI6ITEsInNwZWFrLW51bWVyYWwiOiExLCJzcGVhay1wdW5jdHVhdGlvbiI6ITEsInNwZWVjaC1yYXRlIjohMSxzdHJlc3M6ITEsInN0cmluZy1zZXQiOiExLCJ0YWItc2l6ZSI6ITEsInRhYmxlLWxheW91dCI6ITEsInRleHQtYWxpZ24iOiEwLCJ0ZXh0LWFsaWduLWxhc3QiOiEwLCJ0ZXh0LWNvbWJpbmUtdXByaWdodCI6ITAsInRleHQtZGVjb3JhdGlvbiI6ITAsInRleHQtZGVjb3JhdGlvbi1jb2xvciI6ITAsInRleHQtZGVjb3JhdGlvbi1saW5lIjohMCwidGV4dC1kZWNvcmF0aW9uLXNraXAiOiEwLCJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiOiEwLCJ0ZXh0LWVtcGhhc2lzIjohMCwidGV4dC1lbXBoYXNpcy1jb2xvciI6ITAsInRleHQtZW1waGFzaXMtcG9zaXRpb24iOiEwLCJ0ZXh0LWVtcGhhc2lzLXN0eWxlIjohMCwidGV4dC1oZWlnaHQiOiEwLCJ0ZXh0LWluZGVudCI6ITAsInRleHQtanVzdGlmeSI6ITAsInRleHQtb3JpZW50YXRpb24iOiEwLCJ0ZXh0LW92ZXJmbG93IjohMCwidGV4dC1zaGFkb3ciOiEwLCJ0ZXh0LXNwYWNlLWNvbGxhcHNlIjohMCwidGV4dC10cmFuc2Zvcm0iOiEwLCJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiI6ITAsInRleHQtd3JhcCI6ITAsdG9wOiExLHRyYW5zZm9ybTohMSwidHJhbnNmb3JtLW9yaWdpbiI6ITEsInRyYW5zZm9ybS1zdHlsZSI6ITEsdHJhbnNpdGlvbjohMSwidHJhbnNpdGlvbi1kZWxheSI6ITEsInRyYW5zaXRpb24tZHVyYXRpb24iOiExLCJ0cmFuc2l0aW9uLXByb3BlcnR5IjohMSwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOiExLCJ1bmljb2RlLWJpZGkiOiExLCJ2ZXJ0aWNhbC1hbGlnbiI6ITEsdmlzaWJpbGl0eTohMSwidm9pY2UtYmFsYW5jZSI6ITEsInZvaWNlLWR1cmF0aW9uIjohMSwidm9pY2UtZmFtaWx5IjohMSwidm9pY2UtcGl0Y2giOiExLCJ2b2ljZS1yYW5nZSI6ITEsInZvaWNlLXJhdGUiOiExLCJ2b2ljZS1zdHJlc3MiOiExLCJ2b2ljZS12b2x1bWUiOiExLHZvbHVtZTohMSwid2hpdGUtc3BhY2UiOiExLHdpZG93czohMSx3aWR0aDohMCwid2lsbC1jaGFuZ2UiOiExLCJ3b3JkLWJyZWFrIjohMCwid29yZC1zcGFjaW5nIjohMCwid29yZC13cmFwIjohMCwid3JhcC1mbG93IjohMSwid3JhcC10aHJvdWdoIjohMSwid3JpdGluZy1tb2RlIjohMSwiei1pbmRleCI6ITF9O3JldHVybiBlfXZhciBKZz0vamF2YXNjcmlwdFxzKlw6L2dpbTtXZy53aGl0ZUxpc3Q9Z2V0RGVmYXVsdFdoaXRlTGlzdCQxKCksV2cuZ2V0RGVmYXVsdFdoaXRlTGlzdD1nZXREZWZhdWx0V2hpdGVMaXN0JDEsV2cub25BdHRyPWZ1bmN0aW9uKGUscyxkKXt9LFdnLm9uSWdub3JlQXR0cj1mdW5jdGlvbihlLHMsZCl7fSxXZy5zYWZlQXR0clZhbHVlPWZ1bmN0aW9uKGUscyl7cmV0dXJuIEpnLnRlc3Qocyk/IiI6c307dmFyIEtnPXtpbmRleE9mOmZ1bmN0aW9uKGUscyl7dmFyIGQsbTtpZihBcnJheS5wcm90b3R5cGUuaW5kZXhPZilyZXR1cm4gZS5pbmRleE9mKHMpO2ZvcihkPTAsbT1lLmxlbmd0aDtkPG07ZCsrKWlmKGVbZF09PT1zKXJldHVybiBkO3JldHVybi0xfSxmb3JFYWNoOmZ1bmN0aW9uKGUscyxkKXt2YXIgbSxoO2lmKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKXJldHVybiBlLmZvckVhY2gocyxkKTtmb3IobT0wLGg9ZS5sZW5ndGg7bTxoO20rKylzLmNhbGwoZCxlW21dLG0sZSl9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoLyheXHMqKXwoXHMqJCkvZywiIil9LHRyaW1SaWdodDpmdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQ/ZS50cmltUmlnaHQoKTplLnJlcGxhY2UoLyhccyokKS9nLCIiKX19LEdnPUtnO3ZhciBwYXJzZXIkMj1mdW5jdGlvbihlLHMpeyI7IiE9PShlPUdnLnRyaW1SaWdodChlKSlbZS5sZW5ndGgtMV0mJihlKz0iOyIpO3ZhciBkPWUubGVuZ3RoLG09ITEsaD0wLGc9MCx4PSIiO2Z1bmN0aW9uIGFkZE5ld0F0dHIoKXtpZighbSl7dmFyIGQ9R2cudHJpbShlLnNsaWNlKGgsZykpLCQ9ZC5pbmRleE9mKCI6Iik7aWYoLTEhPT0kKXt2YXIgUz1HZy50cmltKGQuc2xpY2UoMCwkKSksaj1HZy50cmltKGQuc2xpY2UoJCsxKSk7aWYoUyl7dmFyIHo9cyhoLHgubGVuZ3RoLFMsaixkKTt6JiYoeCs9eisiOyAiKX19fWg9ZysxfWZvcig7ZzxkO2crKyl7dmFyICQ9ZVtnXTtpZigiLyI9PT0kJiYiKiI9PT1lW2crMV0pe3ZhciBTPWUuaW5kZXhPZigiKi8iLGcrMik7aWYoLTE9PT1TKWJyZWFrO2g9KGc9UysxKSsxLG09ITF9ZWxzZSIoIj09PSQ/bT0hMDoiKSI9PT0kP209ITE6IjsiPT09JD9tfHxhZGROZXdBdHRyKCk6IlxuIj09PSQmJmFkZE5ld0F0dHIoKX1yZXR1cm4gR2cudHJpbSh4KX0sWGc9V2csWWc9cGFyc2VyJDI7ZnVuY3Rpb24gaXNOdWxsJDEoZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gRmlsdGVyQ1NTJDIoZSl7ZT1mdW5jdGlvbihlKXt2YXIgcz17fTtmb3IodmFyIGQgaW4gZSlzW2RdPWVbZF07cmV0dXJuIHN9KGV8fHt9KSxlLndoaXRlTGlzdD1lLndoaXRlTGlzdHx8WGcud2hpdGVMaXN0LGUub25BdHRyPWUub25BdHRyfHxYZy5vbkF0dHIsZS5vbklnbm9yZUF0dHI9ZS5vbklnbm9yZUF0dHJ8fFhnLm9uSWdub3JlQXR0cixlLnNhZmVBdHRyVmFsdWU9ZS5zYWZlQXR0clZhbHVlfHxYZy5zYWZlQXR0clZhbHVlLHRoaXMub3B0aW9ucz1lfUZpbHRlckNTUyQyLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0aW9uKGUpe2lmKCEoZT0oZT1lfHwiIikudG9TdHJpbmcoKSkpcmV0dXJuIiI7dmFyIHM9dGhpcy5vcHRpb25zLGQ9cy53aGl0ZUxpc3QsbT1zLm9uQXR0cixoPXMub25JZ25vcmVBdHRyLGc9cy5zYWZlQXR0clZhbHVlLHg9WWcoZSxmdW5jdGlvbihlLHMseCwkLFMpe3ZhciBqPWRbeF0sej0hMTtpZighMD09PWo/ej1qOiJmdW5jdGlvbiI9PXR5cGVvZiBqP3o9aigkKTpqIGluc3RhbmNlb2YgUmVnRXhwJiYoej1qLnRlc3QoJCkpLCEwIT09eiYmKHo9ITEpLCQ9Zyh4LCQpKXt2YXIgSSxUPXtwb3NpdGlvbjpzLHNvdXJjZVBvc2l0aW9uOmUsc291cmNlOlMsaXNXaGl0ZTp6fTtyZXR1cm4gej9pc051bGwkMShJPW0oeCwkLFQpKT94KyI6IiskOkk6aXNOdWxsJDEoST1oKHgsJCxUKSk/dm9pZCAwOkl9fSk7cmV0dXJuIHh9O3ZhciBldj1GaWx0ZXJDU1MkMjshZnVuY3Rpb24oZSxzKXt2YXIgZD1XZyxtPWV2O2Zvcih2YXIgaCBpbihzPWUuZXhwb3J0cz1mdW5jdGlvbihlLHMpe3JldHVybiBuZXcgbShzKS5wcm9jZXNzKGUpfSkuRmlsdGVyQ1NTPW0sZClzW2hdPWRbaF19KEhnLEhnLmV4cG9ydHMpO3ZhciB0dj1IZy5leHBvcnRzLG52PXtpbmRleE9mOmZ1bmN0aW9uKGUscyl7dmFyIGQsbTtpZihBcnJheS5wcm90b3R5cGUuaW5kZXhPZilyZXR1cm4gZS5pbmRleE9mKHMpO2ZvcihkPTAsbT1lLmxlbmd0aDtkPG07ZCsrKWlmKGVbZF09PT1zKXJldHVybiBkO3JldHVybi0xfSxmb3JFYWNoOmZ1bmN0aW9uKGUscyxkKXt2YXIgbSxoO2lmKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKXJldHVybiBlLmZvckVhY2gocyxkKTtmb3IobT0wLGg9ZS5sZW5ndGg7bTxoO20rKylzLmNhbGwoZCxlW21dLG0sZSl9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoLyheXHMqKXwoXHMqJCkvZywiIil9LHNwYWNlSW5kZXg6ZnVuY3Rpb24oZSl7dmFyIHM9L1xzfFxufFx0Ly5leGVjKGUpO3JldHVybiBzP3MuaW5kZXg6LTF9fSxpdj10di5GaWx0ZXJDU1MscnY9dHYuZ2V0RGVmYXVsdFdoaXRlTGlzdCxvdj1udjtmdW5jdGlvbiBnZXREZWZhdWx0V2hpdGVMaXN0KCl7cmV0dXJue2E6WyJ0YXJnZXQiLCJocmVmIiwidGl0bGUiXSxhYmJyOlsidGl0bGUiXSxhZGRyZXNzOltdLGFyZWE6WyJzaGFwZSIsImNvb3JkcyIsImhyZWYiLCJhbHQiXSxhcnRpY2xlOltdLGFzaWRlOltdLGF1ZGlvOlsiYXV0b3BsYXkiLCJjb250cm9scyIsImNyb3Nzb3JpZ2luIiwibG9vcCIsIm11dGVkIiwicHJlbG9hZCIsInNyYyJdLGI6W10sYmRpOlsiZGlyIl0sYmRvOlsiZGlyIl0sYmlnOltdLGJsb2NrcXVvdGU6WyJjaXRlIl0sYnI6W10sY2FwdGlvbjpbXSxjZW50ZXI6W10sY2l0ZTpbXSxjb2RlOltdLGNvbDpbImFsaWduIiwidmFsaWduIiwic3BhbiIsIndpZHRoIl0sY29sZ3JvdXA6WyJhbGlnbiIsInZhbGlnbiIsInNwYW4iLCJ3aWR0aCJdLGRkOltdLGRlbDpbImRhdGV0aW1lIl0sZGV0YWlsczpbIm9wZW4iXSxkaXY6W10sZGw6W10sZHQ6W10sZW06W10sZmlnY2FwdGlvbjpbXSxmaWd1cmU6W10sZm9udDpbImNvbG9yIiwic2l6ZSIsImZhY2UiXSxmb290ZXI6W10saDE6W10saDI6W10saDM6W10saDQ6W10saDU6W10saDY6W10saGVhZGVyOltdLGhyOltdLGk6W10saW1nOlsic3JjIiwiYWx0IiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCIsImxvYWRpbmciXSxpbnM6WyJkYXRldGltZSJdLGtiZDpbXSxsaTpbXSxtYXJrOltdLG5hdjpbXSxvbDpbXSxwOltdLHByZTpbXSxzOltdLHNlY3Rpb246W10sc21hbGw6W10sc3BhbjpbXSxzdWI6W10sc3VtbWFyeTpbXSxzdXA6W10sc3Ryb25nOltdLHN0cmlrZTpbXSx0YWJsZTpbIndpZHRoIiwiYm9yZGVyIiwiYWxpZ24iLCJ2YWxpZ24iXSx0Ym9keTpbImFsaWduIiwidmFsaWduIl0sdGQ6WyJ3aWR0aCIsInJvd3NwYW4iLCJjb2xzcGFuIiwiYWxpZ24iLCJ2YWxpZ24iXSx0Zm9vdDpbImFsaWduIiwidmFsaWduIl0sdGg6WyJ3aWR0aCIsInJvd3NwYW4iLCJjb2xzcGFuIiwiYWxpZ24iLCJ2YWxpZ24iXSx0aGVhZDpbImFsaWduIiwidmFsaWduIl0sdHI6WyJyb3dzcGFuIiwiYWxpZ24iLCJ2YWxpZ24iXSx0dDpbXSx1OltdLHVsOltdLHZpZGVvOlsiYXV0b3BsYXkiLCJjb250cm9scyIsImNyb3Nzb3JpZ2luIiwibG9vcCIsIm11dGVkIiwicGxheXNpbmxpbmUiLCJwb3N0ZXIiLCJwcmVsb2FkIiwic3JjIiwiaGVpZ2h0Iiwid2lkdGgiXX19dmFyIGF2PW5ldyBpdjtmdW5jdGlvbiBlc2NhcGVIdG1sKGUpe3JldHVybiBlLnJlcGxhY2Uoc3YsIiZsdDsiKS5yZXBsYWNlKGx2LCImZ3Q7Iil9dmFyIHN2PS88L2csbHY9Lz4vZyxjdj0vIi9nLHV2PS8mcXVvdDsvZyxkdj0vJiMoW2EtekEtWjAtOV0qKTs/L2dpbSxwdj0vJmNvbG9uOz8vZ2ltLG12PS8mbmV3bGluZTs/L2dpbSxmdj0vKChqXHMqYVxzKnZccyphfHZccypifGxccyppXHMqdlxzKmUpXHMqc1xzKmNccypyXHMqaVxzKnBccyp0XHMqfG1ccypvXHMqY1xzKmhccyphKTovZ2ksaHY9L2Vccyp4XHMqcFxzKnJccyplXHMqc1xzKnNccyppXHMqb1xzKm5ccypcKC4qL2dpLGd2PS91XHMqclxzKmxccypcKC4qL2dpO2Z1bmN0aW9uIGVzY2FwZVF1b3RlKGUpe3JldHVybiBlLnJlcGxhY2UoY3YsIiZxdW90OyIpfWZ1bmN0aW9uIHVuZXNjYXBlUXVvdGUoZSl7cmV0dXJuIGUucmVwbGFjZSh1diwnIicpfWZ1bmN0aW9uIGVzY2FwZUh0bWxFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlKGR2LGZ1bmN0aW9uKGUscyl7cmV0dXJuIngiPT09c1swXXx8IlgiPT09c1swXT9TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHMuc3Vic3RyKDEpLDE2KSk6U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChzLDEwKSl9KX1mdW5jdGlvbiBlc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2UocHYsIjoiKS5yZXBsYWNlKG12LCIgIil9ZnVuY3Rpb24gY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIoZSl7Zm9yKHZhciBzPSIiLGQ9MCxtPWUubGVuZ3RoO2Q8bTtkKyspcys9ZS5jaGFyQ29kZUF0KGQpPDMyPyIgIjplLmNoYXJBdChkKTtyZXR1cm4gb3YudHJpbShzKX1mdW5jdGlvbiBmcmllbmRseUF0dHJWYWx1ZShlKXtyZXR1cm4gZT1jbGVhck5vblByaW50YWJsZUNoYXJhY3RlcihlPWVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMoZT1lc2NhcGVIdG1sRW50aXRpZXMoZT11bmVzY2FwZVF1b3RlKGUpKSkpfWZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShlKXtyZXR1cm4gZT1lc2NhcGVIdG1sKGU9ZXNjYXBlUXVvdGUoZSkpfVZnLndoaXRlTGlzdD17YTpbInRhcmdldCIsImhyZWYiLCJ0aXRsZSJdLGFiYnI6WyJ0aXRsZSJdLGFkZHJlc3M6W10sYXJlYTpbInNoYXBlIiwiY29vcmRzIiwiaHJlZiIsImFsdCJdLGFydGljbGU6W10sYXNpZGU6W10sYXVkaW86WyJhdXRvcGxheSIsImNvbnRyb2xzIiwiY3Jvc3NvcmlnaW4iLCJsb29wIiwibXV0ZWQiLCJwcmVsb2FkIiwic3JjIl0sYjpbXSxiZGk6WyJkaXIiXSxiZG86WyJkaXIiXSxiaWc6W10sYmxvY2txdW90ZTpbImNpdGUiXSxicjpbXSxjYXB0aW9uOltdLGNlbnRlcjpbXSxjaXRlOltdLGNvZGU6W10sY29sOlsiYWxpZ24iLCJ2YWxpZ24iLCJzcGFuIiwid2lkdGgiXSxjb2xncm91cDpbImFsaWduIiwidmFsaWduIiwic3BhbiIsIndpZHRoIl0sZGQ6W10sZGVsOlsiZGF0ZXRpbWUiXSxkZXRhaWxzOlsib3BlbiJdLGRpdjpbXSxkbDpbXSxkdDpbXSxlbTpbXSxmaWdjYXB0aW9uOltdLGZpZ3VyZTpbXSxmb250OlsiY29sb3IiLCJzaXplIiwiZmFjZSJdLGZvb3RlcjpbXSxoMTpbXSxoMjpbXSxoMzpbXSxoNDpbXSxoNTpbXSxoNjpbXSxoZWFkZXI6W10saHI6W10saTpbXSxpbWc6WyJzcmMiLCJhbHQiLCJ0aXRsZSIsIndpZHRoIiwiaGVpZ2h0IiwibG9hZGluZyJdLGluczpbImRhdGV0aW1lIl0sa2JkOltdLGxpOltdLG1hcms6W10sbmF2OltdLG9sOltdLHA6W10scHJlOltdLHM6W10sc2VjdGlvbjpbXSxzbWFsbDpbXSxzcGFuOltdLHN1YjpbXSxzdW1tYXJ5OltdLHN1cDpbXSxzdHJvbmc6W10sc3RyaWtlOltdLHRhYmxlOlsid2lkdGgiLCJib3JkZXIiLCJhbGlnbiIsInZhbGlnbiJdLHRib2R5OlsiYWxpZ24iLCJ2YWxpZ24iXSx0ZDpbIndpZHRoIiwicm93c3BhbiIsImNvbHNwYW4iLCJhbGlnbiIsInZhbGlnbiJdLHRmb290OlsiYWxpZ24iLCJ2YWxpZ24iXSx0aDpbIndpZHRoIiwicm93c3BhbiIsImNvbHNwYW4iLCJhbGlnbiIsInZhbGlnbiJdLHRoZWFkOlsiYWxpZ24iLCJ2YWxpZ24iXSx0cjpbInJvd3NwYW4iLCJhbGlnbiIsInZhbGlnbiJdLHR0OltdLHU6W10sdWw6W10sdmlkZW86WyJhdXRvcGxheSIsImNvbnRyb2xzIiwiY3Jvc3NvcmlnaW4iLCJsb29wIiwibXV0ZWQiLCJwbGF5c2lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJzcmMiLCJoZWlnaHQiLCJ3aWR0aCJdfSxWZy5nZXREZWZhdWx0V2hpdGVMaXN0PWdldERlZmF1bHRXaGl0ZUxpc3QsVmcub25UYWc9ZnVuY3Rpb24oZSxzLGQpe30sVmcub25JZ25vcmVUYWc9ZnVuY3Rpb24oZSxzLGQpe30sVmcub25UYWdBdHRyPWZ1bmN0aW9uKGUscyxkKXt9LFZnLm9uSWdub3JlVGFnQXR0cj1mdW5jdGlvbihlLHMsZCl7fSxWZy5zYWZlQXR0clZhbHVlPWZ1bmN0aW9uKGUscyxkLG0pe2lmKGQ9ZnJpZW5kbHlBdHRyVmFsdWUoZCksImhyZWYiPT09c3x8InNyYyI9PT1zKXtpZigiIyI9PT0oZD1vdi50cmltKGQpKSlyZXR1cm4iIyI7aWYoImh0dHA6Ly8iIT09ZC5zdWJzdHIoMCw3KSYmImh0dHBzOi8vIiE9PWQuc3Vic3RyKDAsOCkmJiJtYWlsdG86IiE9PWQuc3Vic3RyKDAsNykmJiJ0ZWw6IiE9PWQuc3Vic3RyKDAsNCkmJiJkYXRhOmltYWdlLyIhPT1kLnN1YnN0cigwLDExKSYmImZ0cDovLyIhPT1kLnN1YnN0cigwLDYpJiYiLi8iIT09ZC5zdWJzdHIoMCwyKSYmIi4uLyIhPT1kLnN1YnN0cigwLDMpJiYiIyIhPT1kWzBdJiYiLyIhPT1kWzBdKXJldHVybiIifWVsc2UgaWYoImJhY2tncm91bmQiPT09cyl7aWYoZnYubGFzdEluZGV4PTAsZnYudGVzdChkKSlyZXR1cm4iIn1lbHNlIGlmKCJzdHlsZSI9PT1zKXtpZihodi5sYXN0SW5kZXg9MCxodi50ZXN0KGQpKXJldHVybiIiO2lmKGd2Lmxhc3RJbmRleD0wLGd2LnRlc3QoZCkmJihmdi5sYXN0SW5kZXg9MCxmdi50ZXN0KGQpKSlyZXR1cm4iIjshMSE9PW0mJihkPShtPW18fGF2KS5wcm9jZXNzKGQpKX1yZXR1cm4gZD1lc2NhcGVBdHRyVmFsdWUoZCl9LFZnLmVzY2FwZUh0bWw9ZXNjYXBlSHRtbCxWZy5lc2NhcGVRdW90ZT1lc2NhcGVRdW90ZSxWZy51bmVzY2FwZVF1b3RlPXVuZXNjYXBlUXVvdGUsVmcuZXNjYXBlSHRtbEVudGl0aWVzPWVzY2FwZUh0bWxFbnRpdGllcyxWZy5lc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzPWVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMsVmcuY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXI9Y2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIsVmcuZnJpZW5kbHlBdHRyVmFsdWU9ZnJpZW5kbHlBdHRyVmFsdWUsVmcuZXNjYXBlQXR0clZhbHVlPWVzY2FwZUF0dHJWYWx1ZSxWZy5vbklnbm9yZVRhZ1N0cmlwQWxsPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LFZnLlN0cmlwVGFnQm9keT1mdW5jdGlvbihlLHMpeyJmdW5jdGlvbiIhPXR5cGVvZiBzJiYocz1mdW5jdGlvbigpe30pO3ZhciBkPSFBcnJheS5pc0FycmF5KGUpLG09W10saD0hMTtyZXR1cm57b25JZ25vcmVUYWc6ZnVuY3Rpb24oZyx4LCQpe2lmKGZ1bmN0aW9uKHMpe3JldHVybiEhZHx8LTEhPT1vdi5pbmRleE9mKGUscyl9KGcpKXtpZigkLmlzQ2xvc2luZyl7dmFyIFM9IlsvcmVtb3ZlZF0iLGo9JC5wb3NpdGlvbisxMDtyZXR1cm4gbS5wdXNoKFshMSE9PWg/aDokLnBvc2l0aW9uLGpdKSxoPSExLFN9cmV0dXJuIGh8fChoPSQucG9zaXRpb24pLCJbcmVtb3ZlZF0ifXJldHVybiBzKGcseCwkKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciBzPSIiLGQ9MDtyZXR1cm4gb3YuZm9yRWFjaChtLGZ1bmN0aW9uKG0pe3MrPWUuc2xpY2UoZCxtWzBdKSxkPW1bMV19KSxzKz1lLnNsaWNlKGQpfX19LFZnLnN0cmlwQ29tbWVudFRhZz1mdW5jdGlvbihlKXtmb3IodmFyIHM9IiIsZD0wO2Q8ZS5sZW5ndGg7KXt2YXIgbT1lLmluZGV4T2YoIlx4M2MhLS0iLGQpO2lmKC0xPT09bSl7cys9ZS5zbGljZShkKTticmVha31zKz1lLnNsaWNlKGQsbSk7dmFyIGg9ZS5pbmRleE9mKCItLVx4M2UiLG0pO2lmKC0xPT09aClicmVhaztkPWgrM31yZXR1cm4gc30sVmcuc3RyaXBCbGFua0NoYXI9ZnVuY3Rpb24oZSl7dmFyIHM9ZS5zcGxpdCgiIik7cmV0dXJuIHM9cy5maWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHM9ZS5jaGFyQ29kZUF0KDApO3JldHVybiAxMjchPT1zJiYoIShzPD0zMSl8fCgxMD09PXN8fDEzPT09cykpfSkscy5qb2luKCIiKX0sVmcuYXR0cmlidXRlV3JhcFNpZ249JyInLFZnLmNzc0ZpbHRlcj1hdixWZy5nZXREZWZhdWx0Q1NTV2hpdGVMaXN0PXJ2O3ZhciB2dj17fSx5dj1udjtmdW5jdGlvbiBnZXRUYWdOYW1lKGUpe3ZhciBzLGQ9eXYuc3BhY2VJbmRleChlKTtyZXR1cm4gcz0tMT09PWQ/ZS5zbGljZSgxLC0xKTplLnNsaWNlKDEsZCsxKSwiLyI9PT0ocz15di50cmltKHMpLnRvTG93ZXJDYXNlKCkpLnNsaWNlKDAsMSkmJihzPXMuc2xpY2UoMSkpLCIvIj09PXMuc2xpY2UoLTEpJiYocz1zLnNsaWNlKDAsLTEpKSxzfWZ1bmN0aW9uIGlzQ2xvc2luZyhlKXtyZXR1cm4iPC8iPT09ZS5zbGljZSgwLDIpfXZhciBidj0vW15hLXpBLVowLTlcXF86Li1dL2dpbTtmdW5jdGlvbiBmaW5kTmV4dEVxdWFsKGUscyl7Zm9yKDtzPGUubGVuZ3RoO3MrKyl7dmFyIGQ9ZVtzXTtpZigiICIhPT1kKXJldHVybiI9Ij09PWQ/czotMX19ZnVuY3Rpb24gZmluZE5leHRRdW90YXRpb25NYXJrKGUscyl7Zm9yKDtzPGUubGVuZ3RoO3MrKyl7dmFyIGQ9ZVtzXTtpZigiICIhPT1kKXJldHVybiInIj09PWR8fCciJz09PWQ/czotMX19ZnVuY3Rpb24gZmluZEJlZm9yZUVxdWFsKGUscyl7Zm9yKDtzPjA7cy0tKXt2YXIgZD1lW3NdO2lmKCIgIiE9PWQpcmV0dXJuIj0iPT09ZD9zOi0xfX1mdW5jdGlvbiBzdHJpcFF1b3RlV3JhcChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuJyInPT09ZVswXSYmJyInPT09ZVtlLmxlbmd0aC0xXXx8IiciPT09ZVswXSYmIiciPT09ZVtlLmxlbmd0aC0xXX0oZSk/ZS5zdWJzdHIoMSxlLmxlbmd0aC0yKTplfXZ2LnBhcnNlVGFnPWZ1bmN0aW9uKGUscyxkKXt2YXIgbT0iIixoPTAsZz0hMSx4PSExLCQ9MCxTPWUubGVuZ3RoLGo9IiIsej0iIjtlOmZvcigkPTA7JDxTOyQrKyl7dmFyIEk9ZS5jaGFyQXQoJCk7aWYoITE9PT1nKXtpZigiPCI9PT1JKXtnPSQ7Y29udGludWV9fWVsc2UgaWYoITE9PT14KXtpZigiPCI9PT1JKXttKz1kKGUuc2xpY2UoaCwkKSksZz0kLGg9JDtjb250aW51ZX1pZigiPiI9PT1JfHwkPT09Uy0xKXttKz1kKGUuc2xpY2UoaCxnKSksaj1nZXRUYWdOYW1lKHo9ZS5zbGljZShnLCQrMSkpLG0rPXMoZyxtLmxlbmd0aCxqLHosaXNDbG9zaW5nKHopKSxoPSQrMSxnPSExO2NvbnRpbnVlfWlmKCciJz09PUl8fCInIj09PUkpZm9yKHZhciBUPTEsUj1lLmNoYXJBdCgkLVQpOyIiPT09Ui50cmltKCl8fCI9Ij09PVI7KXtpZigiPSI9PT1SKXt4PUk7Y29udGludWUgZX1SPWUuY2hhckF0KCQtKytUKX19ZWxzZSBpZihJPT09eCl7eD0hMTtjb250aW51ZX19cmV0dXJuIGg8UyYmKG0rPWQoZS5zdWJzdHIoaCkpKSxtfSx2di5wYXJzZUF0dHI9ZnVuY3Rpb24oZSxzKXt2YXIgZD0wLG09MCxoPVtdLGc9ITEseD1lLmxlbmd0aDtmdW5jdGlvbiBhZGRBdHRyKGUsZCl7aWYoISgoZT0oZT15di50cmltKGUpKS5yZXBsYWNlKGJ2LCIiKS50b0xvd2VyQ2FzZSgpKS5sZW5ndGg8MSkpe3ZhciBtPXMoZSxkfHwiIik7bSYmaC5wdXNoKG0pfX1mb3IodmFyICQ9MDskPHg7JCsrKXt2YXIgUyxqPWUuY2hhckF0KCQpO2lmKCExIT09Z3x8Ij0iIT09ailpZighMT09PWd8fCQhPT1tKWlmKC9cc3xcbnxcdC8udGVzdChqKSl7aWYoZT1lLnJlcGxhY2UoL1xzfFxufFx0L2csIiAiKSwhMT09PWcpe2lmKC0xPT09KFM9ZmluZE5leHRFcXVhbChlLCQpKSl7YWRkQXR0cih5di50cmltKGUuc2xpY2UoZCwkKSkpLGc9ITEsZD0kKzE7Y29udGludWV9JD1TLTE7Y29udGludWV9aWYoLTE9PT0oUz1maW5kQmVmb3JlRXF1YWwoZSwkLTEpKSl7YWRkQXR0cihnLHN0cmlwUXVvdGVXcmFwKHl2LnRyaW0oZS5zbGljZShkLCQpKSkpLGc9ITEsZD0kKzE7Y29udGludWV9fWVsc2U7ZWxzZXtpZigtMT09PShTPWUuaW5kZXhPZihqLCQrMSkpKWJyZWFrO2FkZEF0dHIoZyx5di50cmltKGUuc2xpY2UobSsxLFMpKSksZz0hMSxkPSgkPVMpKzF9ZWxzZSBnPWUuc2xpY2UoZCwkKSxkPSQrMSxtPSciJz09PWUuY2hhckF0KGQpfHwiJyI9PT1lLmNoYXJBdChkKT9kOmZpbmROZXh0UXVvdGF0aW9uTWFyayhlLCQrMSl9cmV0dXJuIGQ8ZS5sZW5ndGgmJighMT09PWc/YWRkQXR0cihlLnNsaWNlKGQpKTphZGRBdHRyKGcsc3RyaXBRdW90ZVdyYXAoeXYudHJpbShlLnNsaWNlKGQpKSkpKSx5di50cmltKGguam9pbigiICIpKX07dmFyIF92PXR2LkZpbHRlckNTUyx4dj1WZyx3dj12diwkdj13di5wYXJzZVRhZyxTdj13di5wYXJzZUF0dHIsa3Y9bnY7ZnVuY3Rpb24gaXNOdWxsKGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIEZpbHRlclhTUyhlKXtlPWZ1bmN0aW9uKGUpe3ZhciBzPXt9O2Zvcih2YXIgZCBpbiBlKXNbZF09ZVtkXTtyZXR1cm4gc30oZXx8e30pLGUuc3RyaXBJZ25vcmVUYWcmJihlLm9uSWdub3JlVGFnJiZjb25zb2xlLmVycm9yKCdOb3RlczogY2Fubm90IHVzZSB0aGVzZSB0d28gb3B0aW9ucyAic3RyaXBJZ25vcmVUYWciIGFuZCAib25JZ25vcmVUYWciIGF0IHRoZSBzYW1lIHRpbWUnKSxlLm9uSWdub3JlVGFnPXh2Lm9uSWdub3JlVGFnU3RyaXBBbGwpLGUud2hpdGVMaXN0fHxlLmFsbG93TGlzdD9lLndoaXRlTGlzdD1mdW5jdGlvbihlKXt2YXIgcz17fTtmb3IodmFyIGQgaW4gZSlBcnJheS5pc0FycmF5KGVbZF0pP3NbZC50b0xvd2VyQ2FzZSgpXT1lW2RdLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSk6c1tkLnRvTG93ZXJDYXNlKCldPWVbZF07cmV0dXJuIHN9KGUud2hpdGVMaXN0fHxlLmFsbG93TGlzdCk6ZS53aGl0ZUxpc3Q9eHYud2hpdGVMaXN0LHRoaXMuYXR0cmlidXRlV3JhcFNpZ249ITA9PT1lLnNpbmdsZVF1b3RlZEF0dHJpYnV0ZVZhbHVlPyInIjp4di5hdHRyaWJ1dGVXcmFwU2lnbixlLm9uVGFnPWUub25UYWd8fHh2Lm9uVGFnLGUub25UYWdBdHRyPWUub25UYWdBdHRyfHx4di5vblRhZ0F0dHIsZS5vbklnbm9yZVRhZz1lLm9uSWdub3JlVGFnfHx4di5vbklnbm9yZVRhZyxlLm9uSWdub3JlVGFnQXR0cj1lLm9uSWdub3JlVGFnQXR0cnx8eHYub25JZ25vcmVUYWdBdHRyLGUuc2FmZUF0dHJWYWx1ZT1lLnNhZmVBdHRyVmFsdWV8fHh2LnNhZmVBdHRyVmFsdWUsZS5lc2NhcGVIdG1sPWUuZXNjYXBlSHRtbHx8eHYuZXNjYXBlSHRtbCx0aGlzLm9wdGlvbnM9ZSwhMT09PWUuY3NzP3RoaXMuY3NzRmlsdGVyPSExOihlLmNzcz1lLmNzc3x8e30sdGhpcy5jc3NGaWx0ZXI9bmV3IF92KGUuY3NzKSl9RmlsdGVyWFNTLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0aW9uKGUpe2lmKCEoZT0oZT1lfHwiIikudG9TdHJpbmcoKSkpcmV0dXJuIiI7dmFyIHM9dGhpcyxkPXMub3B0aW9ucyxtPWQud2hpdGVMaXN0LGg9ZC5vblRhZyxnPWQub25JZ25vcmVUYWcseD1kLm9uVGFnQXR0ciwkPWQub25JZ25vcmVUYWdBdHRyLFM9ZC5zYWZlQXR0clZhbHVlLGo9ZC5lc2NhcGVIdG1sLHo9cy5hdHRyaWJ1dGVXcmFwU2lnbixJPXMuY3NzRmlsdGVyO2Quc3RyaXBCbGFua0NoYXImJihlPXh2LnN0cmlwQmxhbmtDaGFyKGUpKSxkLmFsbG93Q29tbWVudFRhZ3x8KGU9eHYuc3RyaXBDb21tZW50VGFnKGUpKTt2YXIgVD0hMTtkLnN0cmlwSWdub3JlVGFnQm9keSYmKFQ9eHYuU3RyaXBUYWdCb2R5KGQuc3RyaXBJZ25vcmVUYWdCb2R5LGcpLGc9VC5vbklnbm9yZVRhZyk7dmFyIFI9JHYoZSxmdW5jdGlvbihlLHMsZCxULFIpe3ZhciBFPXtzb3VyY2VQb3NpdGlvbjplLHBvc2l0aW9uOnMsaXNDbG9zaW5nOlIsaXNXaGl0ZTpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobSxkKX0sTz1oKGQsVCxFKTtpZighaXNOdWxsKE8pKXJldHVybiBPO2lmKEUuaXNXaGl0ZSl7aWYoRS5pc0Nsb3NpbmcpcmV0dXJuIjwvIitkKyI+Ijt2YXIgTj1mdW5jdGlvbihlKXt2YXIgcz1rdi5zcGFjZUluZGV4KGUpO2lmKC0xPT09cylyZXR1cm57aHRtbDoiIixjbG9zaW5nOiIvIj09PWVbZS5sZW5ndGgtMl19O3ZhciBkPSIvIj09PShlPWt2LnRyaW0oZS5zbGljZShzKzEsLTEpKSlbZS5sZW5ndGgtMV07cmV0dXJuIGQmJihlPWt2LnRyaW0oZS5zbGljZSgwLC0xKSkpLHtodG1sOmUsY2xvc2luZzpkfX0oVCksVT1tW2RdLEI9U3YoTi5odG1sLGZ1bmN0aW9uKGUscyl7dmFyIG09LTEhPT1rdi5pbmRleE9mKFUsZSksaD14KGQsZSxzLG0pO3JldHVybiBpc051bGwoaCk/bT8ocz1TKGQsZSxzLEkpKT9lKyI9Iit6K3MrejplOmlzTnVsbChoPSQoZCxlLHMsbSkpP3ZvaWQgMDpoOmh9KTtyZXR1cm4gVD0iPCIrZCxCJiYoVCs9IiAiK0IpLE4uY2xvc2luZyYmKFQrPSIgLyIpLFQrPSI+In1yZXR1cm4gaXNOdWxsKE89ZyhkLFQsRSkpP2ooVCk6T30saik7cmV0dXJuIFQmJihSPVQucmVtb3ZlKFIpKSxSfTt2YXIganY9RmlsdGVyWFNTOyFmdW5jdGlvbihlLHMpe3ZhciBkPVZnLG09dnYsaD1qdjtmdW5jdGlvbiBmaWx0ZXJYU1MoZSxzKXtyZXR1cm4gbmV3IGgocykucHJvY2VzcyhlKX0ocz1lLmV4cG9ydHM9ZmlsdGVyWFNTKS5maWx0ZXJYU1M9ZmlsdGVyWFNTLHMuRmlsdGVyWFNTPWgsZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gZClzW2VdPWRbZV07Zm9yKHZhciBoIGluIG0pc1toXT1tW2hdfSgpLCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5cGVvZiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiYoc2VsZi5maWx0ZXJYU1M9ZS5leHBvcnRzKX0oUWcsUWcuZXhwb3J0cyk7dmFyIHp2PVFnLmV4cG9ydHM7Y29uc3QgSXY9ZGVmaW5lRXZlbnRIYW5kbGVyKGFzeW5jIGU9Pntjb25zdCBzPXJlc29sdmVTZWN1cml0eVJ1bGVzKGUpO2lmKHMuZW5hYmxlZCYmcy54c3NWYWxpZGF0b3Ipe2NvbnN0IGQ9ey4uLnMueHNzVmFsaWRhdG9yLGVzY2FwZUh0bWw6dm9pZCAwfTshMT09PXMueHNzVmFsaWRhdG9yLmVzY2FwZUh0bWwmJihkLmVzY2FwZUh0bWw9ZT0+ZSk7Y29uc3QgbT1uZXcgenYuRmlsdGVyWFNTKGQpO2lmKCJyZWFkT25seSIhPT1lLm5vZGUucmVxLnNvY2tldC5yZWFkeVN0YXRlJiZzLnhzc1ZhbGlkYXRvci5tZXRob2RzJiZzLnhzc1ZhbGlkYXRvci5tZXRob2RzLmluY2x1ZGVzKGUubm9kZS5yZXEubWV0aG9kKSl7Y29uc3QgZD0iR0VUIj09PWUubm9kZS5yZXEubWV0aG9kP2dldFF1ZXJ5KGUpOmUubm9kZS5yZXEuaGVhZGVyc1siY29udGVudC10eXBlIl0/LmluY2x1ZGVzKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik/YXdhaXQgcmVhZE11bHRpcGFydEZvcm1EYXRhKGUpOmF3YWl0IHJlYWRCb2R5KGUpO2lmKGQmJk9iamVjdC5rZXlzKGQpLmxlbmd0aCl7aWYoZC5zdGF0dXNNZXNzYWdlJiYiQmFkIFJlcXVlc3QiIT09ZC5zdGF0dXNNZXNzYWdlKXJldHVybjtjb25zdCBlPUpTT04uc3RyaW5naWZ5KGQpO2lmKG0ucHJvY2VzcyhKU09OLnN0cmluZ2lmeShkKSkhPT1lKXtjb25zdCBlPXtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJCYWQgUmVxdWVzdCJ9O2lmKCExPT09cy54c3NWYWxpZGF0b3IudGhyb3dFcnJvcilyZXR1cm4gZTt0aHJvdyBjcmVhdGVFcnJvciQxKGUpfX19fX0pLEN2PWNyZWF0ZURlZnUkMSgoZSxzLGQpPT57aWYoQXJyYXkuaXNBcnJheShlW3NdKXx8QXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZVtzXT1kLCEwfSksVHY9dXNlUnVudGltZUNvbmZpZygpLmNzdXJmLFJ2PWRlZmluZUV2ZW50SGFuZGxlcihhc3luYyBzPT57Y29uc3R7Y3N1cmY6ZH09Z2V0Um91dGVSdWxlcyhzKTtpZighMT09PWR8fCExPT09ZD8uZW5hYmxlZClyZXR1cm47Y29uc3QgbT1DdihkLFR2KSxoPXMubm9kZS5yZXEubWV0aG9kPz8iIjtpZighKG0ubWV0aG9kc1RvUHJvdGVjdD8/W10pLmluY2x1ZGVzKGgpKXJldHVybjtjb25zdCBnPWdldENvb2tpZShzLG0uY29va2llS2V5KT8/IiIseD1FbihzLFR2LmhlYWRlck5hbWUpPz8iIiwkPWF3YWl0KGFzeW5jKHMsZCxtLGgpPT57Y29uc3RbZyx4XT1kLnNwbGl0KCI6Iik7aWYoIWd8fCF4KXJldHVybiExO2xldCAkO3RyeXtjb25zdCBzPWF3YWl0IG5nLmRlY3J5cHQoe25hbWU6aHx8aWcsaXY6ZS5mcm9tKGcsImJhc2U2NCIpfSxtLGUuZnJvbSh4LCJiYXNlNjQiKSk7JD0obmV3IFRleHREZWNvZGVyKS5kZWNvZGUocyl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuICQ9PT1zfSkoZyx4LGF3YWl0IHVzZVNlY3JldEtleShtKSxtLmVuY3J5cHRBbGdvcml0aG0pO2lmKCEkKXRocm93IGNyZWF0ZUVycm9yJDEoe3N0YXR1c0NvZGU6NDAzLG5hbWU6IkVCQURDU1JGVE9LRU4iLHN0YXR1c01lc3NhZ2U6IkNTUkYgVG9rZW4gTWlzbWF0Y2giLG1lc3NhZ2U6Zz94PyJDU1JGIFRva2VuIGludmFsaWQiOiJDU1JGIFRva2VuIG5vdCBmb3VuZCI6IkNTUkYgQ29va2llIG5vdCBmb3VuZCJ9KX0pLF9sYXp5Xzc2VGlZbT0oKT0+aW1wb3J0KCIuLi9yb3V0ZXMvcmVuZGVyZXIubWpzIikudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5IfSksRXY9W3tyb3V0ZToiIixoYW5kbGVyOkNnLGxhenk6ITEsbWlkZGxld2FyZTohMCxtZXRob2Q6dm9pZCAwfSx7cm91dGU6Ii9hcGkvc3lzdGVtL2Rpc3BhdGNoL29wdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvb3B0aW9ucy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3N5c3RlbS9kaXNwYXRjaC9wcmV2aWV3IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL2Rpc3BhdGNoL3ByZXZpZXcucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3N5c3RlbS9kaXNwYXRjaC9zZW5kIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL2Rpc3BhdGNoL3NlbmQucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3N5c3RlbS90aWNrZXRzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3N5c3RlbS90aWNrZXRzL2luZGV4LmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvc3lzdGVtL3RpY2tldHMvOmlkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL3RpY2tldHMvaW5kZXgucGF0Y2gubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicGF0Y2gifSx7cm91dGU6Ii9hcGkvc3lzdGVtL3RpY2tldHMvOmlkL21lc3NhZ2VzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3lzdGVtL3RpY2tldHMvX2lkL21lc3NhZ2VzLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9zeXN0ZW0vdGlja2V0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3N5c3RlbS9pbmRleC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3N1cHBvcnQvdGlja2V0cy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zdXBwb3J0L3RpY2tldHMvaW5kZXguZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkL21lc3NhZ2VzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3VwcG9ydC90aWNrZXRzL19pZC9tZXNzYWdlcy5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvc3VwcG9ydC90aWNrZXRzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc3VwcG9ydC9pbmRleC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3N1cHBvcnQvdGlja2V0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3N1cHBvcnQvaW5kZXgucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L2F1ZGl0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc2VsZmhvc3QvYXVkaXQuZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9zZWxmaG9zdC9jZi1hY2NvdW50cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3NlbGZob3N0L2NmLWFjY291bnRzLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9zZWxmaG9zdC9kZXBsb3kiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC9kZXBsb3kucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L2Rpc2Nvbm5lY3QiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC9kaXNjb25uZWN0LnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9zZWxmaG9zdC9zZWNyZXRzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvc2VsZmhvc3Qvc2VjcmV0cy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L3NlY3JldHMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC9zZWNyZXRzLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3NlbGZob3N0L3N0YXR1cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3NlbGZob3N0L3N0YXR1cy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3NlbGZob3N0L3Rlc3QtZW1haWwiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9zZWxmaG9zdC90ZXN0LWVtYWlsLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9yZWZlcnJhbC9zdGF0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3JlZmVycmFsL3N0YXRzLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcHJvamVjdHMvOmlkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcHJvamVjdHMvX2lkXy5kZWxldGUubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZGVsZXRlIn0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Byb2plY3RzL19pZF8uZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9wcm9qZWN0cy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9qZWN0cy9faWRfLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZC9tZW1iZXJzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcHJvamVjdHMvX2lkL21lbWJlcnMucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZC9tZW1iZXJzLzp1c2VySWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9qZWN0cy9faWQvbWVtYmVycy9fdXNlcklkXy5kZWxldGUubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZGVsZXRlIn0se3JvdXRlOiIvYXBpL3Byb2plY3RzLzppZC9wcm9kdWN0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Byb2plY3RzL19pZC9wcm9kdWN0cy5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvcHJvamVjdHMvOmlkL3Byb2R1Y3RzLzpwcm9kdWN0SWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9qZWN0cy9faWQvcHJvZHVjdHMvX3Byb2R1Y3RJZF8uZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9wcm9qZWN0cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcHJvamVjdHMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvcHJvZHVjdHMvOmlkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcHJvZHVjdHMvX2lkXy5kZWxldGUubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZGVsZXRlIn0se3JvdXRlOiIvYXBpL3Byb2R1Y3RzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Byb2R1Y3RzL19pZF8uZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9wcm9kdWN0cy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wcm9kdWN0cy9faWRfLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3Byb2R1Y3RzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXguZ2V0Mi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcHJvZHVjdHMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5wb3N0Mi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL25vdGlmaWNhdGlvbnMvOmlkL3JlYWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9ub3RpZmljYXRpb25zL19pZC9yZWFkLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL25vdGlmaWNhdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5nZXQzLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9ub3RpZmljYXRpb25zL3VucmVhZC1jb3VudCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL25vdGlmaWNhdGlvbnMvdW5yZWFkLWNvdW50LmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2UiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW5kZXguZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZSIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbi9pbmRleC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2Uvc2V0dGluZ3MiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZS9zZXR0aW5ncy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbi9pbnZvaWNlL3NldHRpbmdzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2Uvc2V0dGluZ3MucGF0Y2gubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicGF0Y2gifSx7cm91dGU6Ii9hcGkvcGF5bWVudHMvYmlsbGluZy9iYWxhbmNlIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcGF5bWVudHMvYmlsbGluZy9iYWxhbmNlLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcGF5bWVudHMvYmlsbGluZy90cmFuc2FjdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wYXltZW50cy9iaWxsaW5nL3RyYW5zYWN0aW9ucy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3BheW1lbnRzL3NlcGF5L2NoZWNrb3V0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvcGF5bWVudHMvc2VwYXkvY2hlY2tvdXQucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3BheW1lbnRzL3NlcGF5L3N0YXR1cyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3BheW1lbnRzL3NlcGF5L3N0YXR1cy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3BheW1lbnRzL3NlcGF5L3dlYmhvb2siLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9wYXltZW50cy9zZXBheS93ZWJob29rLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9hY2NvdW50IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXguZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9hdXRoL2FnZW50IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9hZ2VudC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvZGVtby1sb2dpbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGVtby1sb2dpbi5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvYXV0aC9kZXYtY2xlYW51cCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGV2LWNsZWFudXAucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL2F1dGgvZGV2LWxvZ2luIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9kZXYtbG9naW4ucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL2F1dGgvZGV2LXByb3Zpc2lvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGV2LXByb3Zpc2lvbi5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvYXV0aC9kZXYtc2VlZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZGV2LXNlZWQucG9zdC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL2F1dGgvZ2l0aHViIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9naXRodWIuZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFjayIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2F1dGgvZ2l0aHViL2NhbGxiYWNrLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvYXV0aC9nb29nbGUiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9hdXRoL2dvb2dsZS5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvZ29vZ2xlL2NhbGxiYWNrIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2suZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3N0YXJ0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdGFydC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdG9wIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9pbXBlcnNvbmF0ZS9zdG9wLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3VzZXJzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9pbXBlcnNvbmF0ZS91c2Vycy5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvbG9nb3V0IixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9sb2dvdXQuZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9hdXRoL21lIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvYXV0aC9tZS5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL2F1dGgvcGhvbmUiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9hdXRoL3Bob25lLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL2ludml0YXRpb25zLzp0b2tlbi9hY2NlcHQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbnZpdGF0aW9ucy9fdG9rZW4vYWNjZXB0LnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9pbnZpdGF0aW9ucy86dG9rZW4iLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbnZpdGF0aW9ucy9pbmRleC5nZXQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LmdldDQubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbi9pbnZpdGF0aW9ucy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMvaW5kZXguZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vaW5kZXguZ2V0Mi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL2ludml0YXRpb25zIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL2luZGV4LnBvc3QyLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvOnVzZXJJZC9hYmlsaXRpZXMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy9fdXNlcklkL2FiaWxpdGllcy5wYXRjaC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy86dXNlcklkIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvaW5kZXguZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy86dXNlcklkL3JvbGVzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvX3VzZXJJZC9yb2xlcy5wYXRjaC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbi9pbmRleC5nZXQzLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbi9pbmRleC5wb3N0My5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL29yZ2FuaXphdGlvbnMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5nZXQ1Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb25zIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXgucG9zdDMubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9vcmdhbml6YXRpb25zL3N3aXRjaCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL29yZ2FuaXphdGlvbnMvc3dpdGNoLnBvc3QubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoicG9zdCJ9LHtyb3V0ZToiL2FwaS9wZXJtaXNzaW9ucyIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LmdldDYubWpzIiksbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDoiZ2V0In0se3JvdXRlOiIvYXBpL3JvbGVzLzppZCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3JvbGVzL19pZF8uZGVsZXRlLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImRlbGV0ZSJ9LHtyb3V0ZToiL2FwaS9yb2xlcy86aWQiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9yb2xlcy9faWRfLnBhdGNoLm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBhdGNoIn0se3JvdXRlOiIvYXBpL3JvbGVzIixoYW5kbGVyOigpPT5pbXBvcnQoIi4uL3JvdXRlcy9hcGkvaW5kZXguZ2V0Ny5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvcm9sZXMiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS9pbmRleC5wb3N0NC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwb3N0In0se3JvdXRlOiIvYXBpL3Nlc3Npb24vcmVmcmVzaCIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3Nlc3Npb24vcmVmcmVzaC5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvdXNlci9hdmF0YXIiLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS91c2VyL2F2YXRhci5wb3N0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6InBvc3QifSx7cm91dGU6Ii9hcGkvdXNlciIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL2luZGV4LnBhdGNoMi5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2FwaS91c2VyL25vdGlmaWNhdGlvbiIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvYXBpL3VzZXIvbm90aWZpY2F0aW9uLmdldC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJnZXQifSx7cm91dGU6Ii9hcGkvdXNlci9ub3RpZmljYXRpb24iLGhhbmRsZXI6KCk9PmltcG9ydCgiLi4vcm91dGVzL2FwaS91c2VyL25vdGlmaWNhdGlvbi5wYXRjaC5tanMiKSxsYXp5OiEwLG1pZGRsZXdhcmU6ITEsbWV0aG9kOiJwYXRjaCJ9LHtyb3V0ZToiL2ltYWdlcy8qKjpwYXRobmFtZSIsaGFuZGxlcjooKT0+aW1wb3J0KCIuLi9yb3V0ZXMvaW1hZ2VzL18uLi5wYXRobmFtZV8uZ2V0Lm1qcyIpLGxhenk6ITAsbWlkZGxld2FyZTohMSxtZXRob2Q6ImdldCJ9LHtyb3V0ZToiL19fbnV4dF9lcnJvciIsaGFuZGxlcjpfbGF6eV83NlRpWW0sbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiL19fbnV4dF9pc2xhbmQvKioiLGhhbmRsZXI6VGcsbGF6eTohMSxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiL2FwaS9fbnV4dF9pY29uLzpjb2xsZWN0aW9uIixoYW5kbGVyOkRnLGxhenk6ITEsbWlkZGxld2FyZTohMSxtZXRob2Q6dm9pZCAwfSx7cm91dGU6IiIsaGFuZGxlcjpBZyxsYXp5OiExLG1pZGRsZXdhcmU6ITEsbWV0aG9kOnZvaWQgMH0se3JvdXRlOiIiLGhhbmRsZXI6cWcsbGF6eTohMSxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiIixoYW5kbGVyOkZnLGxhenk6ITEsbWlkZGxld2FyZTohMSxtZXRob2Q6dm9pZCAwfSx7cm91dGU6IiIsaGFuZGxlcjpNZyxsYXp5OiExLG1pZGRsZXdhcmU6ITEsbWV0aG9kOnZvaWQgMH0se3JvdXRlOiIiLGhhbmRsZXI6SXYsbGF6eTohMSxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9LHtyb3V0ZToiIixoYW5kbGVyOlJ2LGxhenk6ITEsbWlkZGxld2FyZTohMSxtZXRob2Q6dm9pZCAwfSx7cm91dGU6Ii8qKiIsaGFuZGxlcjpfbGF6eV83NlRpWW0sbGF6eTohMCxtaWRkbGV3YXJlOiExLG1ldGhvZDp2b2lkIDB9XTtjb25zdCBPdj1mdW5jdGlvbigpe2NvbnN0IGU9dXNlUnVudGltZUNvbmZpZygpLHM9bmV3IEhvb2thYmxlLGNhcHR1cmVFcnJvcj0oZSxkPXt9KT0+e2NvbnN0IG09cy5jYWxsSG9va1BhcmFsbGVsKCJlcnJvciIsZSxkKS5jYXRjaChlPT57Y29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgY2FwdHVyaW5nIGFub3RoZXIgZXJyb3IiLGUpfSk7aWYoZC5ldmVudCYmaXNFdmVudChkLmV2ZW50KSl7Y29uc3Qgcz1kLmV2ZW50LmNvbnRleHQubml0cm8/LmVycm9ycztzJiZzLnB1c2goe2Vycm9yOmUsY29udGV4dDpkfSksZC5ldmVudC53YWl0VW50aWwmJmQuZXZlbnQud2FpdFVudGlsKG0pfX0sZD1jcmVhdGVBcHAoe2RlYnVnOmRlc3RyKCExKSxvbkVycm9yOihlLHMpPT4oY2FwdHVyZUVycm9yKGUse2V2ZW50OnMsdGFnczpbInJlcXVlc3QiXX0pLGFzeW5jIGZ1bmN0aW9uKGUscyl7Zm9yKGNvbnN0IGQgb2YgWWkpdHJ5e2lmKGF3YWl0IGQoZSxzLHtkZWZhdWx0SGFuZGxlcjpkZWZhdWx0SGFuZGxlcn0pLHMuaGFuZGxlZClyZXR1cm59Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19KGUscykpLG9uUmVxdWVzdDphc3luYyBlPT57ZS5jb250ZXh0Lm5pdHJvPWUuY29udGV4dC5uaXRyb3x8e2Vycm9yczpbXX07Y29uc3Qgcz1lLm5vZGUucmVxPy5fX3VuZW52X187cz8uX3BsYXRmb3JtJiYoZS5jb250ZXh0PXtfcGxhdGZvcm06cz8uX3BsYXRmb3JtLC4uLnMuX3BsYXRmb3JtLC4uLmUuY29udGV4dH0pLCFlLmNvbnRleHQud2FpdFVudGlsJiZzPy53YWl0VW50aWwmJihlLmNvbnRleHQud2FpdFVudGlsPXMud2FpdFVudGlsKSxlLmZldGNoPShzLGQpPT5mZXRjaFdpdGhFdmVudChlLHMsZCx7ZmV0Y2g6bG9jYWxGZXRjaH0pLGUuJGZldGNoPShzLGQpPT5mZXRjaFdpdGhFdmVudChlLHMsZCx7ZmV0Y2g6Z30pLGUud2FpdFVudGlsPXM9PntlLmNvbnRleHQubml0cm8uX3dhaXRVbnRpbFByb21pc2VzfHwoZS5jb250ZXh0Lm5pdHJvLl93YWl0VW50aWxQcm9taXNlcz1bXSksZS5jb250ZXh0Lm5pdHJvLl93YWl0VW50aWxQcm9taXNlcy5wdXNoKHMpLGUuY29udGV4dC53YWl0VW50aWwmJmUuY29udGV4dC53YWl0VW50aWwocyl9LGUuY2FwdHVyZUVycm9yPShzLGQpPT57Y2FwdHVyZUVycm9yKHMse2V2ZW50OmUsLi4uZH0pfSxhd2FpdCBPdi5ob29rcy5jYWxsSG9vaygicmVxdWVzdCIsZSkuY2F0Y2gocz0+e2NhcHR1cmVFcnJvcihzLHtldmVudDplLHRhZ3M6WyJyZXF1ZXN0Il19KX0pfSxvbkJlZm9yZVJlc3BvbnNlOmFzeW5jKGUscyk9Pnthd2FpdCBPdi5ob29rcy5jYWxsSG9vaygiYmVmb3JlUmVzcG9uc2UiLGUscykuY2F0Y2gocz0+e2NhcHR1cmVFcnJvcihzLHtldmVudDplLHRhZ3M6WyJyZXF1ZXN0IiwicmVzcG9uc2UiXX0pfSl9LG9uQWZ0ZXJSZXNwb25zZTphc3luYyhlLHMpPT57YXdhaXQgT3YuaG9va3MuY2FsbEhvb2soImFmdGVyUmVzcG9uc2UiLGUscykuY2F0Y2gocz0+e2NhcHR1cmVFcnJvcihzLHtldmVudDplLHRhZ3M6WyJyZXF1ZXN0IiwicmVzcG9uc2UiXX0pfSl9fSksbT1mdW5jdGlvbihlPXt9KXtjb25zdCBzPWNyZWF0ZVJvdXRlciQxKHt9KSxkPXt9O2xldCBtO2NvbnN0IGg9e30sYWRkUm91dGU9KGUsbSxnKT0+e2xldCB4PWRbZV07aWYoeHx8KGRbZV09eD17cGF0aDplLGhhbmRsZXJzOnt9fSxzLmluc2VydChlLHgpKSxBcnJheS5pc0FycmF5KGcpKWZvcihjb25zdCBzIG9mIGcpYWRkUm91dGUoZSxtLHMpO2Vsc2UgeC5oYW5kbGVyc1tnXT10b0V2ZW50SGFuZGxlcihtKTtyZXR1cm4gaH07aC51c2U9aC5hZGQ9KGUscyxkKT0+YWRkUm91dGUoZSxzLGR8fCJhbGwiKTtmb3IoY29uc3QgZSBvZiBNbiloW2VdPShzLGQpPT5oLmFkZChzLGQsZSk7Y29uc3QgbWF0Y2hIYW5kbGVyPShlPSIvIixkPSJnZXQiKT0+e2NvbnN0IGg9ZS5pbmRleE9mKCI/Iik7LTEhPT1oJiYoZT1lLnNsaWNlKDAsTWF0aC5tYXgoMCxoKSkpO2NvbnN0IGc9cy5sb29rdXAoZSk7aWYoIWd8fCFnLmhhbmRsZXJzKXJldHVybntlcnJvcjpjcmVhdGVFcnJvciQxKHtzdGF0dXNDb2RlOjQwNCxuYW1lOiJOb3QgRm91bmQiLHN0YXR1c01lc3NhZ2U6YENhbm5vdCBmaW5kIGFueSByb3V0ZSBtYXRjaGluZyAke2V8fCIvIn0uYH0pfTtsZXQgeD1nLmhhbmRsZXJzW2RdfHxnLmhhbmRsZXJzLmFsbDtpZigheCl7bXx8KG09dG9Sb3V0ZU1hdGNoZXIocykpO2NvbnN0IGg9bS5tYXRjaEFsbChlKS5yZXZlcnNlKCk7Zm9yKGNvbnN0IGUgb2YgaCl7aWYoZS5oYW5kbGVyc1tkXSl7eD1lLmhhbmRsZXJzW2RdLGcuaGFuZGxlcnNbZF09Zy5oYW5kbGVyc1tkXXx8eDticmVha31pZihlLmhhbmRsZXJzLmFsbCl7eD1lLmhhbmRsZXJzLmFsbCxnLmhhbmRsZXJzLmFsbD1nLmhhbmRsZXJzLmFsbHx8eDticmVha319fXJldHVybiB4P3ttYXRjaGVkOmcsaGFuZGxlcjp4fTp7ZXJyb3I6Y3JlYXRlRXJyb3IkMSh7c3RhdHVzQ29kZTo0MDUsbmFtZToiTWV0aG9kIE5vdCBBbGxvd2VkIixzdGF0dXNNZXNzYWdlOmBNZXRob2QgJHtkfSBpcyBub3QgYWxsb3dlZCBvbiB0aGlzIHJvdXRlLmB9KX19LGc9ZS5wcmVlbXB0aXZlfHxlLnByZWVtdGl2ZTtyZXR1cm4gaC5oYW5kbGVyPVpuKGU9Pntjb25zdCBzPW1hdGNoSGFuZGxlcihlLnBhdGgsZS5tZXRob2QudG9Mb3dlckNhc2UoKSk7aWYoImVycm9yImluIHMpe2lmKGcpdGhyb3cgcy5lcnJvcjtyZXR1cm59ZS5jb250ZXh0Lm1hdGNoZWRSb3V0ZT1zLm1hdGNoZWQ7Y29uc3QgZD1zLm1hdGNoZWQucGFyYW1zfHx7fTtyZXR1cm4gZS5jb250ZXh0LnBhcmFtcz1kLFByb21pc2UucmVzb2x2ZShzLmhhbmRsZXIoZSkpLnRoZW4oZT0+dm9pZCAwPT09ZSYmZz9udWxsOmUpfSksaC5oYW5kbGVyLl9fcmVzb2x2ZV9fPWFzeW5jIGU9PntlPXdpdGhMZWFkaW5nU2xhc2goZSk7Y29uc3Qgcz1tYXRjaEhhbmRsZXIoZSk7aWYoImVycm9yImluIHMpcmV0dXJuO2xldCBkPXtyb3V0ZTpzLm1hdGNoZWQucGF0aCxoYW5kbGVyOnMuaGFuZGxlcn07aWYocy5oYW5kbGVyLl9fcmVzb2x2ZV9fKXtjb25zdCBtPWF3YWl0IHMuaGFuZGxlci5fX3Jlc29sdmVfXyhlKTtpZighbSlyZXR1cm47ZD17Li4uZCwuLi5tfX1yZXR1cm4gZH0saH0oe3ByZWVtcHRpdmU6ITB9KSxoPXRvTm9kZUxpc3RlbmVyKGQpLGxvY2FsRmV0Y2g9KGUscyk9PmUudG9TdHJpbmcoKS5zdGFydHNXaXRoKCIvIik/YXN5bmMgZnVuY3Rpb24oZSxzLGQ9e30pe3RyeXtjb25zdCBtPWF3YWl0IGIoZSx7dXJsOnMsLi4uZH0pO3JldHVybiBuZXcgUmVzcG9uc2UobS5ib2R5LHtzdGF0dXM6bS5zdGF0dXMsc3RhdHVzVGV4dDptLnN0YXR1c1RleHQsaGVhZGVyczp2JDIobS5oZWFkZXJzKX0pfWNhdGNoKGUpe3JldHVybiBuZXcgUmVzcG9uc2UoZS50b1N0cmluZygpLHtzdGF0dXM6TnVtYmVyLnBhcnNlSW50KGUuc3RhdHVzQ29kZXx8ZS5jb2RlKXx8NTAwLHN0YXR1c1RleHQ6ZS5zdGF0dXNUZXh0fSl9fShoLGUscykudGhlbihlPT5mdW5jdGlvbihlKXtyZXR1cm4gZS5oZWFkZXJzLmhhcygic2V0LWNvb2tpZSIpP25ldyBSZXNwb25zZShlLmJvZHkse3N0YXR1czplLnN0YXR1cyxzdGF0dXNUZXh0OmUuc3RhdHVzVGV4dCxoZWFkZXJzOm5vcm1hbGl6ZUNvb2tpZUhlYWRlcnMoZS5oZWFkZXJzKX0pOmV9KGUpKTpnbG9iYWxUaGlzLmZldGNoKGUscyksZz1jcmVhdGVGZXRjaCh7ZmV0Y2g6bG9jYWxGZXRjaCxIZWFkZXJzOnRpLGRlZmF1bHRzOntiYXNlVVJMOmUuYXBwLmJhc2VVUkx9fSk7dmFyIHg7Z2xvYmFsVGhpcy4kZmV0Y2g9ZyxkLnVzZSgoeD17bG9jYWxGZXRjaDpsb2NhbEZldGNofSxabihlPT57Y29uc3Qgcz1nZXRSb3V0ZVJ1bGVzKGUpO2lmKHMuaGVhZGVycyYmQW4oZSxzLmhlYWRlcnMpLHMucmVkaXJlY3Qpe2xldCBkPXMucmVkaXJlY3QudG87aWYoZC5lbmRzV2l0aCgiLyoqIikpe2xldCBtPWUucGF0aDtjb25zdCBoPXMucmVkaXJlY3QuX3JlZGlyZWN0U3RyaXBCYXNlO2gmJihtPXdpdGhvdXRCYXNlKG0saCkpLGQ9am9pblVSTChkLnNsaWNlKDAsLTMpLG0pfWVsc2UgZS5wYXRoLmluY2x1ZGVzKCI/IikmJihkPXdpdGhRdWVyeShkLGdldFF1ZXJ5JDEoZS5wYXRoKSkpO3JldHVybiBzZW5kUmVkaXJlY3QoZSxkLHMucmVkaXJlY3Quc3RhdHVzQ29kZSl9aWYocy5wcm94eSl7bGV0IGQ9cy5wcm94eS50bztpZihkLmVuZHNXaXRoKCIvKioiKSl7bGV0IG09ZS5wYXRoO2NvbnN0IGg9cy5wcm94eS5fcHJveHlTdHJpcEJhc2U7aCYmKG09d2l0aG91dEJhc2UobSxoKSksZD1qb2luVVJMKGQuc2xpY2UoMCwtMyksbSl9ZWxzZSBlLnBhdGguaW5jbHVkZXMoIj8iKSYmKGQ9d2l0aFF1ZXJ5KGQsZ2V0UXVlcnkkMShlLnBhdGgpKSk7cmV0dXJuIHByb3h5UmVxdWVzdChlLGQse2ZldGNoOngubG9jYWxGZXRjaCwuLi5zLnByb3h5fSl9fSkpKTtmb3IoY29uc3QgcyBvZiBFdil7bGV0IGg9cy5sYXp5P2xhenlFdmVudEhhbmRsZXIocy5oYW5kbGVyKTpzLmhhbmRsZXI7aWYocy5taWRkbGV3YXJlfHwhcy5yb3V0ZSl7Y29uc3QgbT0oZS5hcHAuYmFzZVVSTCsocy5yb3V0ZXx8Ii8iKSkucmVwbGFjZSgvXC8rL2csIi8iKTtkLnVzZShtLGgpfWVsc2V7Y29uc3QgZT1nZXRSb3V0ZVJ1bGVzRm9yUGF0aChzLnJvdXRlLnJlcGxhY2UoLzpcdyt8XCpcKi9nLCJfIikpO2UuY2FjaGUmJihoPURpKGgse2dyb3VwOiJuaXRyby9yb3V0ZXMiLC4uLmUuY2FjaGV9KSksbS51c2Uocy5yb3V0ZSxoLHMubWV0aG9kKX19ZC51c2UoZS5hcHAuYmFzZVVSTCxtLmhhbmRsZXIpO3tjb25zdCBlPWQuaGFuZGxlcjtkLmhhbmRsZXI9cz0+e2NvbnN0IGQ9e2V2ZW50OnN9O3JldHVybiBLaS5jYWxsQXN5bmMoZCwoKT0+ZShzKSl9fXJldHVybntob29rczpzLGgzQXBwOmQscm91dGVyOm0sbG9jYWxDYWxsOmU9PmIoaCxlKSxsb2NhbEZldGNoOmxvY2FsRmV0Y2gsY2FwdHVyZUVycm9yOmNhcHR1cmVFcnJvcn19KCk7ZnVuY3Rpb24gdXNlTml0cm9BcHAoKXtyZXR1cm4gT3Z9IWZ1bmN0aW9uKGUpe2Zvcihjb25zdCBzIG9mIElnKXRyeXtzKGUpfWNhdGNoKHMpe3Rocm93IGUuY2FwdHVyZUVycm9yKHMse3RhZ3M6WyJwbHVnaW4iXX0pLHN9fShPdik7Y29uc3QgUHY9eyIvZmF2aWNvbi5pY28iOnt0eXBlOiJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLGV0YWc6JyIxMGJlLW44ZWd5RTl0Y2I3c0tHci9wWUNhUTR1V3F4SSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQyMVoiLHNpemU6NDI4NixwYXRoOiIuLi9wdWJsaWMvZmF2aWNvbi5pY28ifSwiL3JvYm90cy50eHQiOnt0eXBlOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTgtajhPSXNMOXFHRG1OWitsSGhwMnR5SDRYdGFFIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDIxWiIsc2l6ZToyNCxwYXRoOiIuLi9wdWJsaWMvcm9ib3RzLnR4dCJ9LCIvX251eHQvMURJa0J5TWQuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI4OC1DODJTRGh1NEwyaCswZ0NrbGFOckJZNFREVTQiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjEzNixwYXRoOiIuLi9wdWJsaWMvX251eHQvMURJa0J5TWQuanMifSwiL19udXh0LzRsSG15SGJILmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNDU2MC0vRHR1ckVTWi9FTGJidWxDVjNENXpXZldyYXMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjE3NzYwLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC80bEhteUhiSC5qcyJ9LCIvX251eHQvN2NWU09DY3UuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJjYjYtamlBWEZNK2hDOEtUMjFoUnFnT2k1dW1hVUFNIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZTozMjU0LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC83Y1ZTT0NjdS5qcyJ9LCIvX251eHQvQjFNZUxyaTMuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIxYWJjLXdyY2J3NVRDZUVnUE96SENwQTZRZlZUNWVmbyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6Njg0NCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQjFNZUxyaTMuanMifSwiL19udXh0L0I3czVwampSLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNjE0LUlPMkRodlh4a0d2ZGVkVjNqOGRVcUwvd2lBcyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6MTU1NixwYXRoOiIuLi9wdWJsaWMvX251eHQvQjdzNXBqalIuanMifSwiL19udXh0L0JBdW5pLXFkLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMWZiLUpQZThUT2JQVWx4QThtRW5GSDBDcUtnUjY0dyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6NTA3LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CQXVuaS1xZC5qcyJ9LCIvX251eHQvQkZPTm82M1guanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJhMjktQnZTWFdyR0I5S2lmdU56UElCMkcvaWtMcjA0IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZToyNjAxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CRk9ObzYzWC5qcyJ9LCIvX251eHQvQk15Ykc0T2suanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJlZmQtQnAxWFZsUTE4bEo3UXV6MG9nMXJPeXFkdUdvIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZTozODM3LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CTXliRzRPay5qcyJ9LCIvX251eHQvQlNHdDN4UlcuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI0OGUtTzJZRFE4ejZBd3ZTTWUwOHJjemtMYW1CdStZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZToxMTY2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CU0d0M3hSVy5qcyJ9LCIvX251eHQvQlNSS3FHclAuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI3YjYtWlNvS29hRUJRQWVqaXhWd3hQa202emxZR2FRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZToxOTc0LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CU1JLcUdyUC5qcyJ9LCIvX251eHQvQlN5MGkyQWYuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJmODAtMkh3dEF1UCswYzdjWG9DTDk1c0thQkFaR25ZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE1WiIsc2l6ZTozOTY4LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CU3kwaTJBZi5qcyJ9LCIvX251eHQvQld2cWx3NWYuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIzYmNkLVo5cHlGb3V2TnEzcENwRVIwMFpGR2Y3dGdDcyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNVoiLHNpemU6MTUzMDkscGF0aDoiLi4vcHVibGljL19udXh0L0JXdnFsdzVmLmpzIn0sIi9fbnV4dC9CWmxOTmZrNC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjZmOC1HdWgxeTVGOGFMeUl6ZkM1bzJ2RUpjcGlVTVUiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjE3ODQscGF0aDoiLi4vcHVibGljL19udXh0L0JabE5OZms0LmpzIn0sIi9fbnV4dC9CZDQtT2MzNi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjI1Ny1zbCtYWTJUTW1ncS9qRjg1Zjg5N2ovenFSQ1kiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjU5OSxwYXRoOiIuLi9wdWJsaWMvX251eHQvQmQ0LU9jMzYuanMifSwiL19udXh0L0JkWlg1eGdmLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjNmNy0rTGNPWTZENHRuTTNLdTVKZi9IWlZkSlFxM0kiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTVaIixzaXplOjkyMDcscGF0aDoiLi4vcHVibGljL19udXh0L0JkWlg1eGdmLmpzIn0sIi9fbnV4dC9CZUVNQ3l1Wi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEzNmMtUjlJZEFPQUtwaURlMFJ0ejlvYlZQVTNtU2FRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZTo0OTcyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CZUVNQ3l1Wi5qcyJ9LCIvX251eHQvQmhXUzE4aTcuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI2ZmMtVndpVnVISGJsTW94VTEyVnQwekNSMGxWSzRjIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxNzg4LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CaFdTMThpNy5qcyJ9LCIvX251eHQvQmhhR29hem8uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI4OC1DODJTRGh1NEwyaCswZ0NrbGFOckJZNFREVTQiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjEzNixwYXRoOiIuLi9wdWJsaWMvX251eHQvQmhhR29hem8uanMifSwiL19udXh0L0JyTlJWSUJBLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNzY5LWQ5MjFSb3NwYXR0SkdPWExRYWxlTmtuZkxqVSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6MTg5NyxwYXRoOiIuLi9wdWJsaWMvX251eHQvQnJOUlZJQkEuanMifSwiL19udXh0L0J0OFMwZG1sLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMmJkLVVLWHVIWjVPWGlickl6VktDUnBha05GUTd5YyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6NzAxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9CdDhTMGRtbC5qcyJ9LCIvX251eHQvQzFPUWl5VUQuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI3M2MtS0NmMDJ5RXVBUUJveDFjK0Z6bG8wU1NpTVA0IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxODUyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DMU9RaXlVRC5qcyJ9LCIvX251eHQvQnVMU3VBOE0uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJmOGViLVJYMm5OMHZRSnlqZ1hBc2xFdGFaK3VIL1BzSSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6NjM3MjMscGF0aDoiLi4vcHVibGljL19udXh0L0J1TFN1QThNLmpzIn0sIi9fbnV4dC9DN1l5NnRSMy5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjNmMmUtVm84NzZKTmJySFF5T0p0YTMwa2NIZjdnUDIwIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxNjE3NCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQzdZeTZ0UjMuanMifSwiL19udXh0L0NBVUFYNVZyLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjA0MC1nUGt6ckZpYlYyTXRMakNEdzZsUlNaRGVoaU0iJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjgyNTYscGF0aDoiLi4vcHVibGljL19udXh0L0NBVUFYNVZyLmpzIn0sIi9fbnV4dC9DR1hnU01aaC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjI1ZC1HK01qRkNKNWp6THh6UHM5cTEzaGJpZTBvZ3ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjYwNSxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ0dYZ1NNWmguanMifSwiL19udXh0L0NGQnRjQjdvLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTkwMGEtdVB1VVN4UWZVVlorUXJaeHBoR1FzaE9ZYk9VIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxMDI0MTAscGF0aDoiLi4vcHVibGljL19udXh0L0NGQnRjQjdvLmpzIn0sIi9fbnV4dC9DSUM3dnNaNS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjc3Yy1nSkF3SGw3TGpvNTlIU3phckFnMHBCZXBuQ2ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjE5MTYscGF0aDoiLi4vcHVibGljL19udXh0L0NJQzd2c1o1LmpzIn0sIi9fbnV4dC9DVzhmS25GRS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEwYzdiLWtVTkV3TDRVY0pCT0cyTjR4cGpFYURtdFF1dyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6Njg3MzEscGF0aDoiLi4vcHVibGljL19udXh0L0NXOGZLbkZFLmpzIn0sIi9fbnV4dC9DWG9jNFVFUi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjJhNmMtQm95SEZ2dVhZTXRjRnRCbmtnNFEwWVp3OEpZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZToxMDg2MCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ1hvYzRVRVIuanMifSwiL19udXh0L0NZbWxNSVh6LmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciYWY2LTJSV2NNUEt4aFpERm84b1hHV3o3V0JOQzFoZyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6MjgwNixwYXRoOiIuLi9wdWJsaWMvX251eHQvQ1ltbE1JWHouanMifSwiL19udXh0L0NjNnppaC1SLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNzE2LTdUZk04RjVvU3IyOW9IL3VzUnVEMFA3M1lFUSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxNloiLHNpemU6MTgxNCxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ2M2emloLVIuanMifSwiL19udXh0L0NZYW16TG01LmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciZTAxNi1NRUE1TXlVZzNmZldraHN5ajNaM05kMUJ0ZFEiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTZaIixzaXplOjU3MzY2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DWWFtekxtNS5qcyJ9LCIvX251eHQvQ2NNTUYxZzkuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIzYWYtV0JoSnZBa0JiZHNVSndoMFBIb0NURVBHRnhNIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE2WiIsc2l6ZTo5NDMscGF0aDoiLi4vcHVibGljL19udXh0L0NjTU1GMWc5LmpzIn0sIi9fbnV4dC9DZl9mdzFFOS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjMyMi0zdm0va29xYi83T05xV0lvalpjbmRKYkdNZnMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjgwMixwYXRoOiIuLi9wdWJsaWMvX251eHQvQ2ZfZncxRTkuanMifSwiL19udXh0L0NmaFlGWU9ZLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMmFhMC0rOEpMejl5eHdiRld5b090TzZsQzB1TFJBUjAiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjEwOTEyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DZmhZRllPWS5qcyJ9LCIvX251eHQvQ2w0aTRyU00uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI2YzQtTGFQV3gzRDNwOFpwUlVFVzF1c1krZDdRVXJRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE3WiIsc2l6ZToxNzMyLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9DbDRpNHJTTS5qcyJ9LCIvX251eHQvQ29JZHo0a2EuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIxN2U1LXB3c3hKZ0NiZ0o3bmhOcTJHNXFuVUgxayt3SSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxN1oiLHNpemU6NjExNyxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ29JZHo0a2EuanMifSwiL19udXh0L0NxeVdyTk54LmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNTk5LVMva1NheTlRekh2UTBhekRYWEJYRUowMG96ayInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxN1oiLHNpemU6MTQzMyxwYXRoOiIuLi9wdWJsaWMvX251eHQvQ3F5V3JOTnguanMifSwiL19udXh0L0NzSzUxcXRkLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNTE2LWpMNXFOc1RRK2ltaHluQ1BHbGtDcjNZdm5tSSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxN1oiLHNpemU6MTMwMixwYXRoOiIuLi9wdWJsaWMvX251eHQvQ3NLNTFxdGQuanMifSwiL19udXh0L0N0YTE1c0ctLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjNhNC0ya28xNEpJTDh6azg0bnhId2hLOUFKaVh2ZVkiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjkxMjQscGF0aDoiLi4vcHVibGljL19udXh0L0N0YTE1c0ctLmpzIn0sIi9fbnV4dC9DeGNaclkzVy5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjg5Ny1Dd0dpekRjV3VzNGoyenBIOXFRZnZTbWcvZU0iJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjIxOTkscGF0aDoiLi4vcHVibGljL19udXh0L0N4Y1pyWTNXLmpzIn0sIi9fbnV4dC9ESEN3RUxXcC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjM4N2EtbFhSRXRjbUx1a1pxd083TXZzdmp2TSsrMDJ3IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE3WiIsc2l6ZToxNDQ1OCxwYXRoOiIuLi9wdWJsaWMvX251eHQvREhDd0VMV3AuanMifSwiL19udXh0L0RPQ0ZEVGNZLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTk4ZS1md0xJblg3cHlvdERnVTJBSDNNbTdaS2dOYmMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjY1NDIscGF0aDoiLi4vcHVibGljL19udXh0L0RPQ0ZEVGNZLmpzIn0sIi9fbnV4dC9EUGZaa2wyZS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonImU5OS1na2hpbGJnT3h0SndXWDBNdTlZUWRMa0llZ2MiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTdaIixzaXplOjM3MzcscGF0aDoiLi4vcHVibGljL19udXh0L0RQZlprbDJlLmpzIn0sIi9fbnV4dC9EVFRMcjVIci5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEwNzgtbVpoTHIrcTJ1ek05bGRFbVFNVXVJd2JNdmZBIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE3WiIsc2l6ZTo0MjE2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9EVFRMcjVIci5qcyJ9LCIvX251eHQvRFdmV3FNSnEuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI0OGQtb3Z6amkyeUhNSFFWcTE5ZFNtSGxuNXR1N0NnIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZToxMTY1LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9EV2ZXcU1KcS5qcyJ9LCIvX251eHQvRFR2WFQtblIuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJjNTNlLUdxU3gzYWZyaDdDM3pmREF3VnVRaXd0TkFqUSInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6NTA0OTQscGF0aDoiLi4vcHVibGljL19udXh0L0RUdlhULW5SLmpzIn0sIi9fbnV4dC9EWVpsZzAtNS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjFjZC1BMVlVd1ZZZmU1ZDNlS09uNVBGSmVHT2lyNDgiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjQ2MSxwYXRoOiIuLi9wdWJsaWMvX251eHQvRFlabGcwLTUuanMifSwiL19udXh0L0RfY3UtcU1SLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciYThkLWlZTXc5RHZ6Ny9wZlFCSXV4dDROMUlSTk9oMCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6MjcwMSxwYXRoOiIuLi9wdWJsaWMvX251eHQvRF9jdS1xTVIuanMifSwiL19udXh0L0RjNDZRd0RKLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMzExLVZFQzRPZ0tYUGxrRTBYUllBTVg4aWZwYUdmMCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6Nzg1LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9EYzQ2UXdESi5qcyJ9LCIvX251eHQvRGwtRHptN3ouanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyJmZC1YeDFLSFc0eG1iNVNHeTBRVldxM3UyWFpRQ2ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjI1MyxwYXRoOiIuLi9wdWJsaWMvX251eHQvRGwtRHptN3ouanMifSwiL19udXh0L0RtNzk0cXhJLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciNWQtZ3ZROEFvZzZFNjVlRHgyQ0lHVHFEaDRKZ29vIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZTo5MyxwYXRoOiIuLi9wdWJsaWMvX251eHQvRG03OTRxeEkuanMifSwiL19udXh0L0RwQXZ0TjhnLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMjFjYy1NUmZHanRPNDJ1TlVkSXRJenk3ZlYxbDFhVWMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjg2NTIscGF0aDoiLi4vcHVibGljL19udXh0L0RwQXZ0TjhnLmpzIn0sIi9fbnV4dC9EdUVBZm5ocS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonImRjZi1lSXJtVDlNeGJlR05yb0ZyN0xYT0ZtaWRlNmsiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjM1MzUscGF0aDoiLi4vcHVibGljL19udXh0L0R1RUFmbmhxLmpzIn0sIi9fbnV4dC9EdFN0ZlZtVC5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjJkZTItdGhLK0lMRmxxdG1RVm9RSUhSTVdoWDBzOTdrIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZToxMTc0NixwYXRoOiIuLi9wdWJsaWMvX251eHQvRHRTdGZWbVQuanMifSwiL19udXh0L0R2ZGh5cERpLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciN2U4LTVqa0xXUGJScm9Dc2VFOWd2dkZ0MVFWZTNHMCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOFoiLHNpemU6MjAyNCxwYXRoOiIuLi9wdWJsaWMvX251eHQvRHZkaHlwRGkuanMifSwiL19udXh0L0R4Q1dRc25sLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciODQtQmthcTBTbXFvNld1VHJIa21jTmJ4UzY0dXZFIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE4WiIsc2l6ZToxMzIscGF0aDoiLi4vcHVibGljL19udXh0L0R4Q1dRc25sLmpzIn0sIi9fbnV4dC9ONkswcnF0Yy5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjEwYzYtRk1JblBhWWNxL2VpZGlCaXoyb1V0LzFJZ3dZIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZTo0Mjk0LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9ONkswcnF0Yy5qcyJ9LCIvX251eHQvWkpWazBvbE4uanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIxN2Q1LUxFZkJrRjdDMytwMHNvY0NtNmtpT0Y5UFZjbyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6NjEwMSxwYXRoOiIuLi9wdWJsaWMvX251eHQvWkpWazBvbE4uanMifSwiL19udXh0L1dtRFhIWUtrLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciOTFlNy1sTnBQeFpFVFc3NElPb3dFUFVCaDlxanYwU2ciJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjM3MzUxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9XbURYSFlLay5qcyJ9LCIvX251eHQvRGJDNHAzUUEuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI3NmY0NC1UMGtEYnZwTGkyNjRwcENNdnNOdnhralJQdUkiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MThaIixzaXplOjQ4NzIzNixwYXRoOiIuLi9wdWJsaWMvX251eHQvRGJDNHAzUUEuanMifSwiL19udXh0L1pac2ZQOUtaLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciZDdiLXZWTjVPK2F1Z0Z0Kzl1bGFjSUx6YWJFY05YOCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6MzQ1MSxwYXRoOiIuLi9wdWJsaWMvX251eHQvWlpzZlA5S1ouanMifSwiL19udXh0L18ybFNkcjEzLmpzIjp7dHlwZToidGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IixldGFnOiciMTVmMi11VVRZWXR5ZGFhdStTalVOMGdVWUpuQm84UDAiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjU2MTgscGF0aDoiLi4vcHVibGljL19udXh0L18ybFNkcjEzLmpzIn0sIi9fbnV4dC9jZEtfQTZObS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjE4NjctWHNtWnpJTHFHci91L3RDNmZHb2s2VVZVcjNjIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZTo2MjQ3LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9jZEtfQTZObS5qcyJ9LCIvX251eHQvZF8wTndRTFUuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI0MzktaXprMCtiWWJ1cHQ2NUFqVTlVL1pjc2ZTNUNnIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZToxMDgxLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9kXzBOd1FMVS5qcyJ9LCIvX251eHQvZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyI6e3R5cGU6InRleHQvY3NzOyBjaGFyc2V0PXV0Zi04IixldGFnOiciOTdlLUR3VUtrOGhTNW9SZlhMOWNhRjJocVRTd1UwcyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6MjQzMCxwYXRoOiIuLi9wdWJsaWMvX251eHQvZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyJ9LCIvX251eHQvZXJyb3ItNTAwLkI1YVQ0UDdaLmNzcyI6e3R5cGU6InRleHQvY3NzOyBjaGFyc2V0PXV0Zi04IixldGFnOiciNzczLWwxQXV6Vy8vWFBLQnN4SHFuN3VkU1I0amVPOCInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQxOVoiLHNpemU6MTkwNyxwYXRoOiIuLi9wdWJsaWMvX251eHQvZXJyb3ItNTAwLkI1YVQ0UDdaLmNzcyJ9LCIvX251eHQvZ2hxWWJJU1QuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI5YWItREZOUE0zalpIWjA1OTlvUTh1Q20vbTZrQTcwIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZToyNDc1LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9naHFZYklTVC5qcyJ9LCIvX251eHQvbTIwa2RHeFUuanMiOnt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyI4NmMtdmpJTmU4NTVLZHhLam05Sm9QVDA0Y0ppK3hRIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDE5WiIsc2l6ZToyMTU2LHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9tMjBrZEd4VS5qcyJ9LCIvX251eHQvZW50cnkuemRUMzFFWTUuY3NzIjp7dHlwZToidGV4dC9jc3M7IGNoYXJzZXQ9dXRmLTgiLGV0YWc6JyIyYjU0Zi1ZKzEzcVJxS29QaWFhTjdKM2toay9CTTRmMHMiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjE3NzQ4NyxwYXRoOiIuLi9wdWJsaWMvX251eHQvZW50cnkuemRUMzFFWTUuY3NzIn0sIi9fbnV4dC9zM3AwYzAzTS5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjRiMi0wR2hqV3FUQ3lzTXJjNkNPTG5ySTdpVktLVlUiJyxtdGltZToiMjAyNi0wNi0wMVQwOTozNzo0MC40MTlaIixzaXplOjEyMDIscGF0aDoiLi4vcHVibGljL19udXh0L3MzcDBjMDNNLmpzIn0sIi9fbnV4dC9idWlsZHMvbGF0ZXN0Lmpzb24iOnt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIixldGFnOiciNDctS2NFRnJka1NIdERMRjB4TUJlUHE2MVpaKzU4IicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDA5WiIsc2l6ZTo3MSxwYXRoOiIuLi9wdWJsaWMvX251eHQvYnVpbGRzL2xhdGVzdC5qc29uIn0sIi9fbnV4dC9vOHRkX0cwSi5qcyI6e3R5cGU6InRleHQvamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCIsZXRhZzonIjk5MWE5LU9rdXBvWWl0SnhHUUNsaGJVY3YxNSs5S0htbyInLG10aW1lOiIyMDI2LTA2LTAxVDA5OjM3OjQwLjQyMFoiLHNpemU6NjI3MTEzLHBhdGg6Ii4uL3B1YmxpYy9fbnV4dC9vOHRkX0cwSi5qcyJ9LCIvX251eHQvYnVpbGRzL21ldGEvZTIzOTc0YWEtZjg4ZC00YTQyLTk3NTktMWYxYWU3ODg0ZWY4Lmpzb24iOnt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIixldGFnOiciNTgtU0dMQThVVzcxcUhGU3prcGtXQ3NSdFV4QVJVIicsbXRpbWU6IjIwMjYtMDYtMDFUMDk6Mzc6NDAuNDA3WiIsc2l6ZTo4OCxwYXRoOiIuLi9wdWJsaWMvX251eHQvYnVpbGRzL21ldGEvZTIzOTc0YWEtZjg4ZC00YTQyLTk3NTktMWYxYWU3ODg0ZWY4Lmpzb24ifX0sTnY9eyIvX251eHQvYnVpbGRzL21ldGEvIjp7bWF4QWdlOjMxNTM2ZTN9LCIvX251eHQvYnVpbGRzLyI6e21heEFnZToxfSwiL19mb250cy8iOnttYXhBZ2U6MzE1MzZlM30sIi9fc2NyaXB0cy8iOnttYXhBZ2U6MzE1MzZlM30sIi9fbnV4dC8iOnttYXhBZ2U6MzE1MzZlM319O2NvbnN0IER2PSgoKT0+e2NvbnN0IEM9ZnVuY3Rpb24oKXt9O3JldHVybiBDLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpLEN9KSgpO2Z1bmN0aW9uIHBhcnNlKGUscyl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHN0ciBtdXN0IGJlIGEgc3RyaW5nIik7Y29uc3QgZD1uZXcgRHYsbT1zfHx7fSxoPW0uZGVjb2RlfHxkZWNvZGU7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtjb25zdCBzPWUuaW5kZXhPZigiPSIsZyk7aWYoLTE9PT1zKWJyZWFrO2xldCB4PWUuaW5kZXhPZigiOyIsZyk7aWYoLTE9PT14KXg9ZS5sZW5ndGg7ZWxzZSBpZih4PHMpe2c9ZS5sYXN0SW5kZXhPZigiOyIscy0xKSsxO2NvbnRpbnVlfWNvbnN0ICQ9ZS5zbGljZShnLHMpLnRyaW0oKTtpZighbT8uZmlsdGVyfHxtPy5maWx0ZXIoJCkpe2lmKHZvaWQgMD09PWRbJF0pe2xldCBtPWUuc2xpY2UocysxLHgpLnRyaW0oKTszND09PW0uY29kZVBvaW50QXQoMCkmJihtPW0uc2xpY2UoMSwtMSkpLGRbJF09dHJ5RGVjb2RlKG0saCl9Zz14KzF9ZWxzZSBnPXgrMX1yZXR1cm4gZH1mdW5jdGlvbiBkZWNvZGUoZSl7cmV0dXJuIGUuaW5jbHVkZXMoIiUiKT9kZWNvZGVVUklDb21wb25lbnQoZSk6ZX1mdW5jdGlvbiB0cnlEZWNvZGUoZSxzKXt0cnl7cmV0dXJuIHMoZSl9Y2F0Y2h7cmV0dXJuIGV9fWNvbnN0IFV2PWZ1bmN0aW9uKHMpe2NvbnN0IGQ9dXNlTml0cm9BcHAoKTtyZXR1cm57YXN5bmMgZmV0Y2gobSxoLGcpe2NvbnN0IHg9e30sJD1uZXcgVVJMKG0udXJsKTtpZihzLmZldGNoKXtjb25zdCBlPWF3YWl0IHMuZmV0Y2gobSxoLGcsJCx4KTtpZihlKXJldHVybiBlfXJldHVybiBhc3luYyBmdW5jdGlvbihzLGQsbSxoPW5ldyBVUkwocy51cmwpLGc9dXNlTml0cm9BcHAoKSx4KXtsZXQgJDsoZnVuY3Rpb24oZSl7cmV0dXJuIFhpLnRlc3QoZS5tZXRob2QpfSkocykmJigkPWUuZnJvbShhd2FpdCBzLmFycmF5QnVmZmVyKCkpKTtyZXR1cm4gZ2xvYmFsVGhpcy5fX2Vudl9fPWQsZy5sb2NhbEZldGNoKGgucGF0aG5hbWUraC5zZWFyY2gse2NvbnRleHQ6e3dhaXRVbnRpbDplPT5tLndhaXRVbnRpbChlKSxfcGxhdGZvcm06e2NmOnMuY2YsY2xvdWRmbGFyZTp7cmVxdWVzdDpzLGVudjpkLGNvbnRleHQ6bSx1cmw6aCwuLi54fX19LGhvc3Q6aC5ob3N0bmFtZSxwcm90b2NvbDpoLnByb3RvY29sLG1ldGhvZDpzLm1ldGhvZCxoZWFkZXJzOnMuaGVhZGVycyxib2R5OiR9KX0obSxoLGcsJCxkLHgpfSxzY2hlZHVsZWQoZSxzLG0pe2dsb2JhbFRoaXMuX19lbnZfXz1zLG0ud2FpdFVudGlsKGQuaG9va3MuY2FsbEhvb2soImNsb3VkZmxhcmU6c2NoZWR1bGVkIix7Y29udHJvbGxlcjplLGVudjpzLGNvbnRleHQ6bX0pKSxtLndhaXRVbnRpbChydW5Dcm9uVGFza3MoZS5jcm9uLHtjb250ZXh0OntjbG91ZGZsYXJlOntlbnY6cyxjb250ZXh0Om19fSxwYXlsb2FkOnt9fSkpfSxlbWFpbChlLHMsbSl7Z2xvYmFsVGhpcy5fX2Vudl9fPXMsbS53YWl0VW50aWwoZC5ob29rcy5jYWxsSG9vaygiY2xvdWRmbGFyZTplbWFpbCIse21lc3NhZ2U6ZSxldmVudDplLGVudjpzLGNvbnRleHQ6bX0pKX0scXVldWUoZSxzLG0pe2dsb2JhbFRoaXMuX19lbnZfXz1zLG0ud2FpdFVudGlsKGQuaG9va3MuY2FsbEhvb2soImNsb3VkZmxhcmU6cXVldWUiLHtiYXRjaDplLGV2ZW50OmUsZW52OnMsY29udGV4dDptfSkpfSx0YWlsKGUscyxtKXtnbG9iYWxUaGlzLl9fZW52X189cyxtLndhaXRVbnRpbChkLmhvb2tzLmNhbGxIb29rKCJjbG91ZGZsYXJlOnRhaWwiLHt0cmFjZXM6ZSxlbnY6cyxjb250ZXh0Om19KSl9LHRyYWNlKGUscyxtKXtnbG9iYWxUaGlzLl9fZW52X189cyxtLndhaXRVbnRpbChkLmhvb2tzLmNhbGxIb29rKCJjbG91ZGZsYXJlOnRyYWNlIix7dHJhY2VzOmUsZW52OnMsY29udGV4dDptfSkpfX19KHtmZXRjaChlLHMsZCxtKXtpZihzLkFTU0VUUyYmZnVuY3Rpb24oZT0iIil7aWYoUHZbZV0pcmV0dXJuITA7Zm9yKGNvbnN0IHMgaW4gTnYpaWYoZS5zdGFydHNXaXRoKHMpKXJldHVybiEwO3JldHVybiExfShtLnBhdGhuYW1lKSlyZXR1cm4gcy5BU1NFVFMuZmV0Y2goZSl9fSk7ZXhwb3J0e2dldEJhc2VVcmwgYXMgJCxpbnRlZ2VyIGFzIEEsdGV4dCBhcyBCLHNnIGFzIEMsdW5pcXVlSW5kZXggYXMgRCxnZXRSZWZlcnJhbFN0YXRzIGFzIEUsYW5kIGFzIEYsbnVtYmVyJDEgYXMgRyxkZWZpbmVFdmVudEhhbmRsZXIgYXMgSCxnZXRDb29raWUgYXMgSSxFbiBhcyBKLEh1IGFzIEssc2ltcGxpZnlOYW5vSWQgYXMgTCxlc2NhcGVMaWtlIGFzIE0sb3IgYXMgTixzcWwgYXMgTyxuZSBhcyBQLHVzZVJlc2VuZCBhcyBRLHNldENvb2tpZSBhcyBSLHJkIGFzIFMsbnVtYmVyIGFzIFQscHJlcHJvY2VzcyBhcyBVLFNkIGFzIFYsemQgYXMgVyxsdCBhcyBYLHdpdGhRdWVyeSBhcyBZLGpvaW5VUkwgYXMgWixfZW51bSBhcyBfLGFycmF5IGFzIGEsbGlrZSBhcyBhMCxkYXRldGltZSBhcyBhMSxwcmltYXJ5S2V5IGFzIGEyLGdldFF1ZXJ5IGFzIGEzLGNvdW50IGFzIGE0LGdldEJhbGFuY2UgYXMgYTUsbmQgYXMgYTYsdW5pb24kMSBhcyBhNyxzYWZlRXF1YWwgYXMgYTgsdGQgYXMgYTksZGVmaW5lU2NoZWR1bGVkVGFzayBhcyBhQSxkZWZpbmVUYXNrIGFzIGFCLGhhc1Byb3RvY29sIGFzIGFDLGlzU2NyaXB0UHJvdG9jb2wgYXMgYUQsd24gYXMgYUUsa2xvbmEgYXMgYUYsZ2V0UmVxdWVzdEhlYWRlcnMgYXMgYUcsc2FuaXRpemVTdGF0dXNDb2RlIGFzIGFILHBhcnNlVVJMIGFzIGFJLGVuY29kZVBhdGggYXMgYUosZGVjb2RlUGF0aCBhcyBhSyxwYXJzZVF1ZXJ5IGFzIGFMLCRuIGFzIGFNLGdldENvbnRleHQgYXMgYU4sd2l0aFRyYWlsaW5nU2xhc2ggYXMgYU8sd2l0aG91dFRyYWlsaW5nU2xhc2ggYXMgYVAsaWkgYXMgYVEsYmFzZVVSTCBhcyBhUixoYXNoJDIgYXMgYVMsZXhlY3V0ZUFzeW5jIGFzIGFULGVuY29kZVF1ZXJ5SXRlbSBhcyBhVSxwYXJzZSBhcyBhVixnZXRSZXF1ZXN0SGVhZGVyIGFzIGFXLGlzRXF1YWwgYXMgYVgsdXBwZXJGaXJzdCBhcyBhWSxnZXRSZXF1ZXN0VVJMIGFzIGFaLFV2IGFzIGFfLHVzZU5pdHJvQXBwIGFzIGFhLGRlbGV0ZUNvb2tpZSBhcyBhYixUIGFzIGFjLEZ1IGFzIGFkLEx1IGFzIGFlLGVtYWlsIGFzIGFmLHNlbmRSZWRpcmVjdCBhcyBhZyxxdSBhcyBhaCx1dWlkIGFzIGFpLHBpY2sgYXMgYWosbnUgYXMgYWssZ2V0VmFsaWRhdGVkUm91dGVyUGFyYW1zIGFzIGFsLE11IGFzIGFtLHJlYWRNdWx0aXBhcnRGb3JtRGF0YSBhcyBhbixzbmlmZkltYWdlIGFzIGFvLGN1IGFzIGFwLFpuIGFzIGFxLHdpdGhMZWFkaW5nU2xhc2ggYXMgYXIsYnVpbGRBc3NldHNVUkwgYXMgYXMsZ2V0UmVzcG9uc2VTdGF0dXNUZXh0IGFzIGF0LGdldFJlc3BvbnNlU3RhdHVzIGFzIGF1LGRlZmluZVJlbmRlckhhbmRsZXIgYXMgYXYscHVibGljQXNzZXRzVVJMIGFzIGF3LGRlc3RyIGFzIGF4LGdldFJvdXRlUnVsZXMgYXMgYXksSG4gYXMgYXosYm9vbGVhbiQxIGFzIGIsY3JlYXRlRXJyb3IkMSBhcyBjLEVkIGFzIGQsQnUgYXMgZSxhc2MgYXMgZixRdSBhcyBnLGVxIGFzIGgsWnUgYXMgaSxpbkFycmF5IGFzIGosT2QgYXMgayxWdSBhcyBsLGdldFJvdXRlclBhcmFtIGFzIG0sZ2V0VmFsaWRhdGVkUXVlcnkgYXMgbixvYmplY3QgYXMgbyxkZXNjIGFzIHAsbGcgYXMgcSxyZWFkVmFsaWRhdGVkQm9keSBhcyByLHN0cmluZyQxIGFzIHMsZGVjcnlwdFNlY3JldCBhcyB0LEF1IGFzIHUsdXNlUnVudGltZUNvbmZpZyBhcyB2LGVuY3J5cHRTZWNyZXQgYXMgdyxnZXRDYWNoZWRPckZldGNoIGFzIHgsc3FsaXRlVGFibGUgYXMgeSxpbmRleCBhcyB6fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bml0cm8ubWpzLm1hcAo=", "chunks/routes/api/auth/agent.get.mjs": "aW1wb3J0e0ggYXMgbyxjIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBzPW8oYXN5bmMgbz0+e3Rocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KX0pO2V4cG9ydHtzIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hZ2VudC5nZXQubWpzLm1hcAo=", "chunks/routes/api/auth/demo-login.post.mjs": "aW1wb3J0e0ggYXMgYSxhYyBhcyBlLGMgYXMgaSxyIGFzIHMsZCBhcyB0LGggYXMgcix1IGFzIG4sYWQgYXMgbyxhZSBhcyBtLGFhIGFzIGQsaSBhcyB1LG8gYXMgXyxfIGFzIGx9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtlIGFzIHAsYSBhcyBjfWZyb20iLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7UyBhcyB3LEQgYXMgZixhIGFzIGcsYiBhcyB2fWZyb20iLi4vLi4vLi4vXy9zZWVkLm1qcyI7aW1wb3J0e3AgYXMgeX1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydHtzIGFzIGgsZiBhcyBqfWZyb20iLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL25vdGlmaWNhdGlvbi5tanMiO2NvbnN0IGI9e2FkbWluOntlbWFpbDoiYWRtaW5AZGVtby5sb2NhbCIsdXNlcm5hbWU6ImRlbW9fYWRtaW4iLG5hbWU6IkFkbWluIEFnZW50In0sdXNlcjp7ZW1haWw6InVzZXJAZGVtby5sb2NhbCIsdXNlcm5hbWU6ImRlbW9fdXNlciIsbmFtZToiVXNlciBBZ2VudCJ9fSxrPV8oe2FnZW50OmwoWyJhZG1pbiIsInVzZXIiXSl9KSxEPWEoYXN5bmMgYT0+e2lmKCJ0cnVlIiE9PWUuZW52Lk5VWFRfREVNT19NT0RFKXRocm93IGkoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KTtjb25zdHthZ2VudDpffT1hd2FpdCBzKGEsay5wYXJzZSksbD1iW19dLEQ9bmV3IERhdGU7bGV0IEk9YXdhaXQgdC5xdWVyeS51c2VyVGFibGUuZmluZEZpcnN0KHt3aGVyZTpyKG4ucHJpbWFyeV9lbWFpbCxsLmVtYWlsKX0pO2lmKEkpe2NvbnN0W2FdPWF3YWl0IHQudXBkYXRlKG4pLnNldCh7dXNlcm5hbWU6bC51c2VybmFtZSxuYW1lOmwubmFtZSx2ZXJpZmllZDohMCxsYXN0X3NpZ25faW5fYXQ6RH0pLndoZXJlKHIobi5pZCxJLmlkKSkucmV0dXJuaW5nKCk7ST1hfWVsc2V7Y29uc3RbZV09YXdhaXQgdC5pbnNlcnQobikudmFsdWVzKHtwcmltYXJ5X2VtYWlsOmwuZW1haWwsdXNlcm5hbWU6bC51c2VybmFtZSxuYW1lOmwubmFtZSx2ZXJpZmllZDohMCxsYXN0X3NpZ25faW5fYXQ6RH0pLnJldHVybmluZygpO0k9ZSxhd2FpdCB0Lmluc2VydChvKS52YWx1ZXMoe3VzZXJfaWQ6SS5pZCxhY3Rpb246bS5TSUdOX1VQfSksYXdhaXQgZCgpLmhvb2tzLmNhbGxIb29rKCJhdXRoOnVzZXItY3JlYXRlZCIse3VzZXI6SSxwcm92aWRlcjoiZGVtbyIsZXZlbnQ6YX0pfWNvbnN0IE49YXdhaXQgcChmLnNsdWcsZi5uYW1lKTtpZihhd2FpdCBjKEkuaWQsTi5pZCwiYWRtaW4iPT09Xz92LmFkbWluOnYubWVtYmVyKSwiYWRtaW4iPT09Xyl7Y29uc3QgYT1hd2FpdCBwKGcuc2x1ZyxnLm5hbWUse2lzX3N5c3RlbTohMH0pO2F3YWl0IHQuaW5zZXJ0KHUpLnZhbHVlcyh7dXNlcl9pZDpJLmlkLG9yZ2FuaXphdGlvbl9pZDphLmlkLGFiaWxpdGllczpbLi4udy5hZG1pbl19KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbdS51c2VyX2lkLHUub3JnYW5pemF0aW9uX2lkXSxzZXQ6e2FiaWxpdGllczpbLi4udy5hZG1pbl19fSl9YXdhaXQgaChJLmlkLE4uaWQpLCJ1c2VyIj09PV8mJmF3YWl0IGooSS5pZCxOLmlkKTtjb25zdHtzZXNzaW9uSWQ6en09YXdhaXQgeShhLEkse3Byb3ZpZGVyOiJkZW1vIixhY3RpdmVPcmdhbml6YXRpb25JZDpOLmlkfSk7cmV0dXJuIGF3YWl0IHQuaW5zZXJ0KG8pLnZhbHVlcyh7dXNlcl9pZDpJLmlkLGFjdGlvbjptLlNJR05fSU59KSx7YWdlbnQ6Xyx1c2VyX2lkOkkuaWQscHJpbWFyeV9lbWFpbDpJLnByaW1hcnlfZW1haWwsc2Vzc2lvbl9pZDp6fX0pO2V4cG9ydHtEIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZW1vLWxvZ2luLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/auth/dev-cleanup.post.mjs": "aW1wb3J0e0ggYXMgcyxjIGFzIG8sbyBhcyB0LGEgYXMgZSxzIGFzIGEsYWYgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO3Qoe2VtYWlsczplKHIoKSkuZGVmYXVsdChbXSksc2Vzc2lvbl9pZHM6ZShhKCkubWluKDEpKS5kZWZhdWx0KFtdKX0pO2NvbnN0IGk9cyhhc3luYyBzPT57dGhyb3cgbyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90IEZvdW5kIn0pfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRldi1jbGVhbnVwLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/auth/dev-login.post.mjs": "aW1wb3J0e0ggYXMgcyxhYyBhcyBhLGMgYXMgZSxyIGFzIHQsZCBhcyBvLGggYXMgaSx1IGFzIHIsYWQgYXMgbixhZSBhcyBkLG8gYXMgbSxhZiBhcyB1fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7cH1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBfPW0oe2VtYWlsOnUoKX0pLGY9cyhhc3luYyBzPT57aWYoInRydWUiIT09YS5lbnYuTlVYVF9ERU1PX01PREUpdGhyb3cgZSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90IEZvdW5kIn0pO2NvbnN0e2VtYWlsOm19PWF3YWl0IHQocyxfLnBhcnNlKSx1PWF3YWl0IG8ucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShyLnByaW1hcnlfZW1haWwsbSl9KTtpZighdSl0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJVc2VyIG5vdCBmb3VuZCJ9KTtjb25zdHtzZXNzaW9uSWQ6Zn09YXdhaXQgcChzLHUse3Byb3ZpZGVyOiJkZXYtbG9naW4ifSk7cmV0dXJuIGF3YWl0IG8udXBkYXRlKHIpLnNldCh7bGFzdF9zaWduX2luX2F0Om5ldyBEYXRlfSkud2hlcmUoaShyLmlkLHUuaWQpKSxhd2FpdCBvLmluc2VydChuKS52YWx1ZXMoe3VzZXJfaWQ6dS5pZCxhY3Rpb246ZC5TSUdOX0lOfSkse3Nlc3Npb25faWQ6Zix1c2VyX2lkOnUuaWR9fSk7ZXhwb3J0e2YgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRldi1sb2dpbi5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/auth/dev-provision.post.mjs": "aW1wb3J0e0ggYXMgbyxjIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBzPW8oYXN5bmMgbz0+e3Rocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KX0pO2V4cG9ydHtzIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZXYtcHJvdmlzaW9uLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/auth/dev-seed.post.mjs": "aW1wb3J0e0ggYXMgbyxhYyBhcyBzLGMgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e3MgYXMgdH1mcm9tIi4uLy4uLy4uL18vc2VlZC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBlPW8oYXN5bmMgbz0+e2lmKCJ0cnVlIiE9PXMuZW52Lk5VWFRfREVNT19NT0RFKXRocm93IHIoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBGb3VuZCJ9KTtyZXR1cm57dXNlcnM6YXdhaXQgdCgpfX0pO2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1kZXYtc2VlZC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/auth/github/callback.get.mjs": "aW1wb3J0e0ggYXMgYSxhMyBhcyBlLEkgYXMgdCxjIGFzIGksYWIgYXMgcyxkIGFzIHIsaCBhcyBvLHUgYXMgbixhZCBhcyBkLGFlIGFzIHUsYWEgYXMgYyxGIGFzIGgsYWggYXMgbCxhZyBhcyBfLHYgYXMgbX1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2MgYXMgcH1mcm9tIi4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3AgYXMgdn1mcm9tIi4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBnPWEoYXN5bmMgYT0+e3ZhciBnO2NvbnN0IHc9bSgpLGY9ZShhKSxiPWYuY29kZSxrPWYuc3RhdGUseT10KGEsImdpdGh1Yl9vYXV0aF9zdGF0ZSIpO2lmKCFifHwha3x8ayE9PXkpdGhyb3cgaSh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiSW52YWxpZCBzdGF0ZSBvciBjb2RlIn0pO3MoYSwiZ2l0aHViX29hdXRoX3N0YXRlIik7Y29uc3QgST1hd2FpdCAkZmV0Y2goImh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aC9hY2Nlc3NfdG9rZW4iLHttZXRob2Q6IlBPU1QiLGJvZHk6e2NsaWVudF9pZDp3LmdpdGh1YkNsaWVudElkLGNsaWVudF9zZWNyZXQ6dy5naXRodWJDbGllbnRTZWNyZXQsY29kZTpifSxoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pO2lmKCFJLmFjY2Vzc190b2tlbil0aHJvdyBpKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJGYWlsZWQgdG8gcmV0cmlldmUgYWNjZXNzIHRva2VuIn0pO2NvbnN0IEM9YXdhaXQgJGZldGNoKCJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXIiLHtoZWFkZXJzOntBdXRob3JpemF0aW9uOmBCZWFyZXIgJHtJLmFjY2Vzc190b2tlbn1gfX0pLFM9KG51bGw9PShnPShhd2FpdCAkZmV0Y2goImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlci9lbWFpbHMiLHtoZWFkZXJzOntBdXRob3JpemF0aW9uOmBCZWFyZXIgJHtJLmFjY2Vzc190b2tlbn1gfX0pKS5maW5kKGE9PmEucHJpbWFyeSYmYS52ZXJpZmllZCkpP3ZvaWQgMDpnLmVtYWlsKXx8Qy5lbWFpbDtpZighUyl0aHJvdyBpKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyB2ZXJpZmllZCBlbWFpbCBmb3VuZCJ9KTtjb25zdCAkPW5ldyBEYXRlO2xldCBqPWF3YWl0IHIucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6byhuLnByaW1hcnlfZW1haWwsUyl9KTtpZihqKXtjb25zdFthXT1hd2FpdCByLnVwZGF0ZShuKS5zZXQoe25hbWU6Qy5uYW1lfHxDLmxvZ2lufHxqLm5hbWUsYXZhdGFyOkMuYXZhdGFyX3VybHx8ai5hdmF0YXIsbGFzdF9zaWduX2luX2F0OiQsdXBkYXRlZF9hdDokfSkud2hlcmUobyhuLmlkLGouaWQpKS5yZXR1cm5pbmcoKTtqPWF9ZWxzZXtjb25zdFtlXT1hd2FpdCByLmluc2VydChuKS52YWx1ZXMoe3ByaW1hcnlfZW1haWw6UyxuYW1lOkMubmFtZXx8Qy5sb2dpbixhdmF0YXI6Qy5hdmF0YXJfdXJsLHVzZXJuYW1lOkMubG9naW4sbGFzdF9zaWduX2luX2F0OiR9KS5yZXR1cm5pbmcoKTtqPWUsYXdhaXQgci5pbnNlcnQoZCkudmFsdWVzKHt1c2VyX2lkOmouaWQsYWN0aW9uOnUuU0lHTl9VUH0pLGF3YWl0IHAoaiksYXdhaXQgYygpLmhvb2tzLmNhbGxIb29rKCJhdXRoOnVzZXItY3JlYXRlZCIse3VzZXI6aixwcm92aWRlcjoiZ2l0aHViIixldmVudDphfSl9Y29uc3QgRj1TdHJpbmcoQy5pZCksTj1hd2FpdCByLnF1ZXJ5LmlkZW50aXR5VGFibGUuZmluZEZpcnN0KHt3aGVyZTpoKG8obC5wcm92aWRlciwiZ2l0aHViIiksbyhsLnByb3ZpZGVyX3VzZXJfaWQsRikpfSk7cmV0dXJuIE4/YXdhaXQgci51cGRhdGUobCkuc2V0KHtwcm92aWRlcl9kYXRhOkMsdXBkYXRlZF9hdDokfSkud2hlcmUobyhsLmlkLE4uaWQpKTphd2FpdCByLmluc2VydChsKS52YWx1ZXMoe3VzZXJfaWQ6ai5pZCxwcm92aWRlcjoiZ2l0aHViIixwcm92aWRlcl91c2VyX2lkOkYscHJvdmlkZXJfZGF0YTpDfSksYXdhaXQgdihhLGose3Byb3ZpZGVyOiJnaXRodWIifSksYXdhaXQgci5pbnNlcnQoZCkudmFsdWVzKHt1c2VyX2lkOmouaWQsYWN0aW9uOnUuU0lHTl9JTn0pLF8oYSwiL2Rhc2hib2FyZCIpfSk7ZXhwb3J0e2cgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbGxiYWNrLmdldC5tanMubWFwCg==", "chunks/routes/api/auth/github.get.mjs": "aW1wb3J0e0ggYXMgdCxMIGFzIGUsUiBhcyBhLGFnIGFzIG8sWSBhcyBzLCQgYXMgaSx2IGFzIHJ9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBuPXQoYXN5bmMgdD0+e2NvbnN0IG49cigpLHU9ZSgpO3JldHVybiBhKHQsImdpdGh1Yl9vYXV0aF9zdGF0ZSIsdSx7aHR0cE9ubHk6ITAsc2VjdXJlOiEwLHNhbWVTaXRlOiJsYXgiLG1heEFnZTo2MDAscGF0aDoiL2FwaS9hdXRoIn0pLG8odCxzKCJodHRwczovL2dpdGh1Yi5jb20vbG9naW4vb2F1dGgvYXV0aG9yaXplIix7Y2xpZW50X2lkOm4uZ2l0aHViQ2xpZW50SWQscmVkaXJlY3RfdXJpOmAke2kodCl9L2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFja2Asc2NvcGU6InVzZXI6ZW1haWwiLHN0YXRlOnV9KSl9KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2l0aHViLmdldC5tanMubWFwCg==", "chunks/routes/api/auth/google/callback.get.mjs": "aW1wb3J0e0ggYXMgZSxhMyBhcyBhLEkgYXMgdCxjIGFzIG8sYWIgYXMgcywkIGFzIGksZCBhcyByLGggYXMgbix1IGFzIGQsYWQgYXMgdSxhZSBhcyBsLGFhIGFzIHAsRiBhcyBjLGFoIGFzIGcsYWcgYXMgXyx2IGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtjIGFzIGh9ZnJvbSIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtwIGFzIHd9ZnJvbSIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3Qgdj1lKGFzeW5jIGU9Pntjb25zdCB2PW0oKSxmPWEoZSksaz1mLmNvZGUseT1mLnN0YXRlLGI9dChlLCJnb29nbGVfb2F1dGhfc3RhdGUiKTtpZigha3x8IXl8fHkhPT1iKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkludmFsaWQgc3RhdGUgb3IgY29kZSJ9KTtzKGUsImdvb2dsZV9vYXV0aF9zdGF0ZSIpO2NvbnN0IEk9YXdhaXQgJGZldGNoKCJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIse21ldGhvZDoiUE9TVCIsYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKHtjb2RlOmssY2xpZW50X2lkOnYuZ29vZ2xlQ2xpZW50SWQsY2xpZW50X3NlY3JldDp2Lmdvb2dsZUNsaWVudFNlY3JldCxyZWRpcmVjdF91cmk6YCR7aShlKX0vYXBpL2F1dGgvZ29vZ2xlL2NhbGxiYWNrYCxncmFudF90eXBlOiJhdXRob3JpemF0aW9uX2NvZGUifSkudG9TdHJpbmcoKSxoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19KTtpZighSS5pZF90b2tlbil0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJNaXNzaW5nIGlkX3Rva2VuIGluIHRva2VuIHJlc3BvbnNlIn0pO2NvbnN0IEM9YXdhaXQgJGZldGNoKCJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbmluZm8iLHtxdWVyeTp7aWRfdG9rZW46SS5pZF90b2tlbn19KTtpZihDLmF1ZCE9PXYuZ29vZ2xlQ2xpZW50SWQpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiSW52YWxpZCB0b2tlbiBhdWRpZW5jZSJ9KTtpZighQy5lbWFpbHx8IUMuc3ViKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkludmFsaWQgdG9rZW4gcGF5bG9hZCJ9KTtjb25zdCBTPW5ldyBEYXRlO2xldCBNPWF3YWl0IHIucXVlcnkudXNlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6bihkLnByaW1hcnlfZW1haWwsQy5lbWFpbCl9KTtpZihNKXtjb25zdFtlXT1hd2FpdCByLnVwZGF0ZShkKS5zZXQoe25hbWU6Qy5uYW1lfHxNLm5hbWUsYXZhdGFyOkMucGljdHVyZXx8TS5hdmF0YXIsbGFzdF9zaWduX2luX2F0OlMsdXBkYXRlZF9hdDpTfSkud2hlcmUobihkLmlkLE0uaWQpKS5yZXR1cm5pbmcoKTtNPWV9ZWxzZXtjb25zdFthXT1hd2FpdCByLmluc2VydChkKS52YWx1ZXMoe3ByaW1hcnlfZW1haWw6Qy5lbWFpbCxuYW1lOkMubmFtZSxhdmF0YXI6Qy5waWN0dXJlLHVzZXJuYW1lOkMuZW1haWwuc3BsaXQoIkAiKVswXSxsYXN0X3NpZ25faW5fYXQ6U30pLnJldHVybmluZygpO009YSxhd2FpdCByLmluc2VydCh1KS52YWx1ZXMoe3VzZXJfaWQ6TS5pZCxhY3Rpb246bC5TSUdOX1VQfSksYXdhaXQgaChNKSxhd2FpdCBwKCkuaG9va3MuY2FsbEhvb2soImF1dGg6dXNlci1jcmVhdGVkIix7dXNlcjpNLHByb3ZpZGVyOiJnb29nbGUiLGV2ZW50OmV9KX1jb25zdCBUPUMuc3ViLCQ9YXdhaXQgci5xdWVyeS5pZGVudGl0eVRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6YyhuKGcucHJvdmlkZXIsImdvb2dsZSIpLG4oZy5wcm92aWRlcl91c2VyX2lkLFQpKX0pO3JldHVybiAkP2F3YWl0IHIudXBkYXRlKGcpLnNldCh7cHJvdmlkZXJfZGF0YTpDLHVwZGF0ZWRfYXQ6U30pLndoZXJlKG4oZy5pZCwkLmlkKSk6YXdhaXQgci5pbnNlcnQoZykudmFsdWVzKHt1c2VyX2lkOk0uaWQscHJvdmlkZXI6Imdvb2dsZSIscHJvdmlkZXJfdXNlcl9pZDpULHByb3ZpZGVyX2RhdGE6Q30pLGF3YWl0IHcoZSxNLHtwcm92aWRlcjoiZ29vZ2xlIn0pLGF3YWl0IHIuaW5zZXJ0KHUpLnZhbHVlcyh7dXNlcl9pZDpNLmlkLGFjdGlvbjpsLlNJR05fSU59KSxfKGUsIi9kYXNoYm9hcmQiKX0pO2V4cG9ydHt2IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jYWxsYmFjay5nZXQubWpzLm1hcAo=", "chunks/routes/api/auth/google.get.mjs": "aW1wb3J0e0ggYXMgbyxMIGFzIGUsUiBhcyB0LGFnIGFzIGEsWSBhcyBzLCQgYXMgcix2IGFzIGl9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBuPW8oYXN5bmMgbz0+e2NvbnN0IG49aSgpLHA9ZSgpO3JldHVybiB0KG8sImdvb2dsZV9vYXV0aF9zdGF0ZSIscCx7aHR0cE9ubHk6ITAsc2VjdXJlOiEwLHNhbWVTaXRlOiJsYXgiLG1heEFnZTo2MDAscGF0aDoiL2FwaS9hdXRoIn0pLGEobyxzKCJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvdjIvYXV0aCIse2NsaWVudF9pZDpuLmdvb2dsZUNsaWVudElkLHJlZGlyZWN0X3VyaTpgJHtyKG8pfS9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2tgLHJlc3BvbnNlX3R5cGU6ImNvZGUiLHNjb3BlOiJlbWFpbCBwcm9maWxlIG9wZW5pZCIsc3RhdGU6cCxhY2Nlc3NfdHlwZToib2ZmbGluZSIscHJvbXB0OiJjb25zZW50In0pKX0pO2V4cG9ydHtuIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1nb29nbGUuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/auth/impersonate/start.post.mjs": "aW1wb3J0e28gYXMgcyxhaSBhcyB0LGMgYXMgYSxyIGFzIGUsSSBhcyBvLEogYXMgaSxkIGFzIHIsdSBhcyBuLGggYXMgZCxrIGFzIG0sYWQgYXMgcCxhZSBhcyB1fWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBmfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2kgYXMgXyxiIGFzIGMsSSBhcyB3fWZyb20iLi4vLi4vLi4vLi4vXy9pbXBlcnNvbmF0ZS5tanMiO2ltcG9ydHtiIGFzIGcsdyBhcyBofWZyb20iLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBsPXMoe3VzZXJfaWQ6dCgpfSksQz1mKFt3XSxhc3luYyhzLHtzZXNzaW9uOnR9KT0+e2lmKHQuaW1wZXJzb25hdG9yKXRocm93IGEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkFscmVhZHkgaW1wZXJzb25hdGluZy4gU3RvcCB0aGUgY3VycmVudCBpbXBlcnNvbmF0aW9uIGZpcnN0LiJ9KTtjb25zdHt1c2VyX2lkOmZ9PWF3YWl0IGUocyxsLnBhcnNlKTtpZihmPT09dC5pZCl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJDYW5ub3QgaW1wZXJzb25hdGUgeW91cnNlbGYuIn0pO2NvbnN0IHc9byhzLCJzZXNzaW9uaWQiKXx8aShzLCJ4LXNlc3Npb24taWQiKTtpZighdyl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7Y29uc3RbQ109YXdhaXQgci5zZWxlY3QoKS5mcm9tKG4pLndoZXJlKGQobi5pZCxmKSkubGltaXQoMSk7aWYoIUMpdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiVGFyZ2V0IHVzZXIgbm90IGZvdW5kLiJ9KTtpZihDLmlzX3N1c3BlbmRlZCl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJDYW5ub3QgaW1wZXJzb25hdGUgYSBzdXNwZW5kZWQgdXNlci4ifSk7Y29uc3Qgaj1fKHQpLE09YXdhaXQgZyhDLHtwcm92aWRlcjoiaW1wZXJzb25hdGlvbiIsaW1wZXJzb25hdG9yOmp9KTtyZXR1cm4gYXdhaXQgbS5zZXQoYyh3KSx0KSxhd2FpdCBoKHcsTSksYXdhaXQgci5pbnNlcnQocCkudmFsdWVzKHt1c2VyX2lkOnQuaWQsYWN0aW9uOnUuSU1QRVJTT05BVEVfU1RBUlQsYWN0aW9uX3JlZl9pZDpDLmlkLG1ldGFkYXRhOnt0YXJnZXRfaWQ6Qy5pZCx0YXJnZXRfZW1haWw6Qy5wcmltYXJ5X2VtYWlsLG9yZ2FuaXphdGlvbl9pZDpNLmFjdGl2ZU9yZ2FuaXphdGlvbklkfX0pLE19KTtleHBvcnR7QyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhcnQucG9zdC5tanMubWFwCg==", "chunks/routes/api/auth/impersonate/stop.post.mjs": "aW1wb3J0e2MgYXMgYSxJIGFzIHMsSiBhcyBpLGsgYXMgdCxkIGFzIG8saCBhcyBlLHUgYXMgcixhZCBhcyBuLGFlIGFzIGR9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7YiBhcyB1fWZyb20iLi4vLi4vLi4vLi4vXy9pbXBlcnNvbmF0ZS5tanMiO2ltcG9ydHtpIGFzIHB9ZnJvbSIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtiIGFzIGcsdyBhcyBjfWZyb20iLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IGY9bShhc3luYyhtLGYpPT57aWYoIWYuaW1wZXJzb25hdG9yKXRocm93IGEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vdCBjdXJyZW50bHkgaW1wZXJzb25hdGluZy4ifSk7Y29uc3QgbD1zKG0sInNlc3Npb25pZCIpfHxpKG0sIngtc2Vzc2lvbi1pZCIpO2lmKCFsKXRocm93IGEoe3N0YXR1c0NvZGU6NDAxLHN0YXR1c01lc3NhZ2U6IlVuYXV0aG9yaXplZCJ9KTtjb25zdCB3PWF3YWl0IHQuZ2V0KHUobCkpO2lmKCF3KXRocm93IGEoe3N0YXR1c0NvZGU6NTAwLHN0YXR1c01lc3NhZ2U6Ik9yaWdpbmFsIHNlc3Npb24gYmFja3VwIG1pc3NpbmcuIFBsZWFzZSBsb2cgaW4gYWdhaW4uIn0pO2NvbnN0IF89YXdhaXQgby5xdWVyeS51c2VyVGFibGUuZmluZEZpcnN0KHt3aGVyZTplKHIuaWQsdy5pZCl9KTtpZighXyl0aHJvdyBhKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOiJPcmlnaW5hbCB1c2VyIG5vIGxvbmdlciBleGlzdHMuIn0pO2NvbnN0IGg9dy5hY3RpdmVPcmdhbml6YXRpb25JZCYmYXdhaXQgcCh3LmlkLHcuYWN0aXZlT3JnYW5pemF0aW9uSWQpP3cuYWN0aXZlT3JnYW5pemF0aW9uSWQ6dm9pZCAwLHY9YXdhaXQgZyhfLHtwcm92aWRlcjp3LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOmh9KTtyZXR1cm4gYXdhaXQgYyhsLHYpLGF3YWl0IHQuZGVsKHUobCkpLGF3YWl0IG8uaW5zZXJ0KG4pLnZhbHVlcyh7dXNlcl9pZDp3LmlkLGFjdGlvbjpkLklNUEVSU09OQVRFX1NUT1AsYWN0aW9uX3JlZl9pZDpmLmlkLG1ldGFkYXRhOnt0YXJnZXRfaWQ6Zi5pZCx0YXJnZXRfZW1haWw6Zi5wcmltYXJ5X2VtYWlsfX0pLHZ9KTtleHBvcnR7ZiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RvcC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/auth/impersonate/users.get.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e0wgYXMgcn1mcm9tIi4uLy4uLy4uLy4uL18vcGFnaW5hdGlvbi5tanMiO2ltcG9ydHtkIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7SSBhcyBtfWZyb20iLi4vLi4vLi4vLi4vXy9pbXBlcnNvbmF0ZS5tanMiO2ltcG9ydHtiIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IGk9cyhbbV0sYXN5bmMocyx7c2Vzc2lvbjptfSk9Pntjb25zdCBpPWF3YWl0IG8ocyxyLnBhcnNlKTtyZXR1cm4gdChtLmlkLGkpfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZXJzLmdldC5tanMubWFwCg==", "chunks/routes/api/auth/logout.get.mjs": "aW1wb3J0e0ggYXMgcyxJIGFzIG8sSiBhcyBlLGsgYXMgcixhYiBhcyBpfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3QgdD1zKGFzeW5jIHM9Pntjb25zdCB0PW8ocywic2Vzc2lvbmlkIil8fGUocywieC1zZXNzaW9uLWlkIik7cmV0dXJuIHQmJmF3YWl0IHIuZGVsKGBzZXNzaW9uOiR7dH1gKSxpKHMsInNlc3Npb25pZCIse3BhdGg6Ii9kYXNoYm9hcmQiLHNlY3VyZTohMCxzYW1lU2l0ZToibGF4In0pLHtzdWNjZXNzOiEwfX0pO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1sb2dvdXQuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/auth/me.get.mjs": "aW1wb3J0e2QgYXMgb31mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgcj1vKChvLHIpPT5yKTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWUuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/auth/phone.patch.mjs": "aW1wb3J0e3IgYXMgdCxrIGFzIGUsYyBhcyBzLGQgYXMgYSx1IGFzIG8saCBhcyByLEkgYXMgaSxKIGFzIG4sYWsgYXMgZH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcH1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtwIGFzIG19ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgdT1kLm9iamVjdCh7cGhvbmU6ZC5zdHJpbmcoKS50cmltKCkucmVnZXgoL15cK1xkezcsMTV9JC8sIkludmFsaWQgcGhvbmUgbnVtYmVyIil9KSxoPXAoYXN5bmMoZCxwKT0+e2NvbnN0IGg9YXdhaXQgdChkLHUucGFyc2UpLGM9YHJhdGVsaW1pdDpwaG9uZS11cGRhdGU6JHtwLmlkfWAsdz1hd2FpdCBlLmdldChjKXx8MDtpZih3Pj01KXRocm93IHMoe3N0YXR1c0NvZGU6NDI5LHN0YXR1c01lc3NhZ2U6IlRvbyBtYW55IHJlcXVlc3RzLiBQbGVhc2UgdHJ5IGFnYWluIGluIDEwIG1pbnV0ZXMuIn0pO2F3YWl0IGUuc2V0KGMsdysxLHt0dGw6NjAwfSk7dHJ5e2NvbnN0IHQ9bmV3IERhdGUsW2VdPWF3YWl0IGEuc2VsZWN0KCkuZnJvbShvKS53aGVyZShyKG8ucHJpbWFyeV9waG9uZSxoLnBob25lKSkubGltaXQoMSk7aWYoZSYmZS5pZCE9PXAuaWQpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiUGhvbmUgbnVtYmVyIGFscmVhZHkgaW4gdXNlIn0pO2NvbnN0W3VdPWF3YWl0IGEudXBkYXRlKG8pLnNldCh7cHJpbWFyeV9waG9uZTpoLnBob25lLHZlcmlmaWVkOiEwLHVwZGF0ZWRfYXQ6dH0pLndoZXJlKHIoby5pZCxwLmlkKSkucmV0dXJuaW5nKCk7aWYoIXUpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiVXNlciBub3QgZm91bmQifSk7Y29uc3QgYz1pKGQsInNlc3Npb25pZCIpfHxuKGQsIngtc2Vzc2lvbi1pZCIpO3JldHVybiBjJiZhd2FpdCBtKGQsdSx7cHJvdmlkZXI6cC5wcm92aWRlcixhY3RpdmVPcmdhbml6YXRpb25JZDpwLmFjdGl2ZU9yZ2FuaXphdGlvbklkLGltcGVyc29uYXRvcjpwLmltcGVyc29uYXRvcixzZXNzaW9uSWQ6Y30pLHtzdWNjZXNzOiEwfX1jYXRjaCh0KXtpZih0LnN0YXR1c0NvZGUpdGhyb3cgdDt0aHJvdyBzKHtzdGF0dXNDb2RlOjUwMCxzdGF0dXNNZXNzYWdlOiJGYWlsZWQgdG8gdXBkYXRlIHBob25lIG51bWJlciJ9KX19KTtleHBvcnR7aCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGhvbmUucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/index.delete.mjs": "aW1wb3J0e2MgYXMgcyxkIGFzIGUsZSBhcyBpLEYgYXMgdCxoIGFzIG8saSBhcyBhLFAgYXMgcix1IGFzIG4sSSBhcyBkLEogYXMgbSxrIGFzIHUsYWIgYXMgY31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbH1mcm9tIi4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtnIGFzIGZ9ZnJvbSIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7Y29uc3QgcD1sKGFzeW5jKGwscCk9PntpZihwLmltcGVyc29uYXRvcil0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJDYW5ub3QgZGVsZXRlIGFuIGFjY291bnQgd2hpbGUgaW1wZXJzb25hdGluZyJ9KTtjb25zdCB3PWF3YWl0IGUuc2VsZWN0KCkuZnJvbShpKS53aGVyZSh0KG8oaS5vd25lcl9pZCxwLmlkKSxvKGkuaXNfcGVyc29uYWwsITEpLG8oaS5pc19zeXN0ZW0sITEpKSk7Zm9yKGNvbnN0IGkgb2Ygdyl7Y29uc3Rbbl09YXdhaXQgZS5zZWxlY3Qoe2lkOmEuaWR9KS5mcm9tKGEpLndoZXJlKHQobyhhLm9yZ2FuaXphdGlvbl9pZCxpLmlkKSxyKGEudXNlcl9pZCxwLmlkKSkpLmxpbWl0KDEpO2lmKG4pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDksc3RhdHVzTWVzc2FnZTpgVHJhbnNmZXIgb3IgZW1wdHkgIiR7aS5uYW1lfSIgYmVmb3JlIGRlbGV0aW5nIHlvdXIgYWNjb3VudGB9KX1jb25zdCBoPWF3YWl0IGYoKTtpZihoKXtjb25zdCBpPShhd2FpdCBlLnNlbGVjdCh7dXNlcl9pZDphLnVzZXJfaWQsYWJpbGl0aWVzOmEuYWJpbGl0aWVzfSkuZnJvbShhKS53aGVyZShvKGEub3JnYW5pemF0aW9uX2lkLGgpKSkuZmlsdGVyKHM9PnMuYWJpbGl0aWVzLmluY2x1ZGVzKCJ1c2VyOmltcGVyc29uYXRlIikpO2lmKGkuc29tZShzPT5zLnVzZXJfaWQ9PT1wLmlkKSYmaS5sZW5ndGg8PTEpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDksc3RhdHVzTWVzc2FnZToiWW91IGFyZSB0aGUgbGFzdCBwbGF0Zm9ybSBhZG1pbjsgZ3JhbnQgYW5vdGhlciBiZWZvcmUgZGVsZXRpbmcgeW91ciBhY2NvdW50In0pfWF3YWl0IGUuZGVsZXRlKGkpLndoZXJlKHQobyhpLm93bmVyX2lkLHAuaWQpLG8oaS5pc19wZXJzb25hbCwhMCkpKSxhd2FpdCBlLmRlbGV0ZShuKS53aGVyZShvKG4uaWQscC5pZCkpO2NvbnN0IF89ZChsLCJzZXNzaW9uaWQiKXx8bShsLCJ4LXNlc3Npb24taWQiKTtyZXR1cm4gXyYmYXdhaXQgdS5kZWwoYHNlc3Npb246JHtffWApLGMobCwic2Vzc2lvbmlkIix7cGF0aDoiLyJ9KSx7c3VjY2VzczohMH19KTtleHBvcnR7cCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZGVsZXRlLm1qcy5tYXAK", "chunks/routes/api/index.get.mjs": "aW1wb3J0e2QgYXMgbyxGIGFzIHIsaCBhcyB0LHAgYXMgZX1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgc31mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIGF9ZnJvbSIuLi8uLi9fL3NjaGVtYTIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBpPXMoWyJwcm9qZWN0OnJlYWQiLCJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXSxhc3luYyhzLHtzZXNzaW9uOml9KT0+e2NvbnN0IG09aS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighbSlyZXR1cm5bXTtyZXR1cm4gYXdhaXQgby5zZWxlY3QoKS5mcm9tKGEpLndoZXJlKHIodChhLm9yZ2FuaXphdGlvbl9pZCxtKSx0KGEuc3RhdHVzLCJhY3RpdmUiKSkpLm9yZGVyQnkoZShhLmNyZWF0ZWRfYXQpKX0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQubWpzLm1hcAo=", "chunks/routes/api/index.get2.mjs": "aW1wb3J0e2EzIGFzIG8sZCBhcyB0LGggYXMgcixwIGFzIHN9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGV9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhfWZyb20iLi4vLi4vXy9zY2hlbWEzLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgaT1lKFsicHJvZHVjdDp3cml0ZSIsInByb2R1Y3Q6bWFuYWdlIl0sYXN5bmMgZT0+e2NvbnN0e3N0YXR1czppfT1vKGUpO3JldHVybiBhd2FpdCB0LnNlbGVjdCgpLmZyb20oYSkud2hlcmUocihhLnN0YXR1cywiaW5hY3RpdmUiPT09aT8iaW5hY3RpdmUiOiJhY3RpdmUiKSkub3JkZXJCeShzKGEuY3JlYXRlZF9hdCkpfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldDIubWpzLm1hcAo=", "chunks/routes/api/index.get3.mjs": "aW1wb3J0e24gYXMgbyxkIGFzIHQsUyBhcyByLEYgYXMgcyxoIGFzIGkscCBhcyBlfWZyb20iLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBhfWZyb20iLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e04gYXMgbix0IGFzIG19ZnJvbSIuLi8uLi9fL25vdGlmaWNhdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgcD1hKGFzeW5jKGEscCk9Pntjb25zdCBkPWEuY29udGV4dC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighZClyZXR1cm57aXRlbXM6W10saGFzTW9yZTohMX07Y29uc3R7b2Zmc2V0OmYsbGltaXQ6Y309YXdhaXQgbyhhLG4ucGFyc2UpLGw9YXdhaXQgdC5zZWxlY3QoKS5mcm9tKHIpLndoZXJlKHMoaShyLnVzZXJfaWQscC5pZCksaShyLm9yZ2FuaXphdGlvbl9pZCxkKSkpLm9yZGVyQnkoZShyLmNyZWF0ZWRfYXQpKS5saW1pdChjKzEpLm9mZnNldChmKSxfPWwubGVuZ3RoPmM7cmV0dXJue2l0ZW1zOmwuc2xpY2UoMCxjKS5tYXAobSksaGFzTW9yZTpffX0pO2V4cG9ydHtwIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQzLm1qcy5tYXAK", "chunks/routes/api/index.get4.mjs": "aW1wb3J0e2MgYXMgcyxkIGFzIG8sZSBhcyB0LGggYXMgZSxhNCBhcyBhLGl9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHJ9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPXIoWyJ1c2VyOnJlYWQiXSxhc3luYyByPT57dmFyIG47Y29uc3QgbT1yLmNvbnRleHQuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIW0pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdFtkXT1hd2FpdCBvLnNlbGVjdCgpLmZyb20odCkud2hlcmUoZSh0LmlkLG0pKS5saW1pdCgxKTtpZighZCl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJPcmdhbml6YXRpb24gbm90IGZvdW5kIn0pO2NvbnN0W3VdPWF3YWl0IG8uc2VsZWN0KHtjb3VudDphKCl9KS5mcm9tKGkpLndoZXJlKGUoaS5vcmdhbml6YXRpb25faWQsbSkpO3JldHVybntpZDpkLmlkLG5hbWU6ZC5uYW1lLHNsdWc6ZC5zbHVnLGlzX3N5c3RlbTpkLmlzX3N5c3RlbSxpc19wZXJzb25hbDpkLmlzX3BlcnNvbmFsLG1lbWJlckNvdW50Om51bGwhPShuPW51bGw9PXU/dm9pZCAwOnUuY291bnQpP246MH19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0NC5tanMubWFwCg==", "chunks/routes/api/index.get5.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e0wgYXMgcn1mcm9tIi4uLy4uL18vcGFnaW5hdGlvbi5tanMiO2ltcG9ydHtkIGFzIHN9ZnJvbSIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7eCBhcyB0fWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IGk9cyhhc3luYyhzLGkpPT57Y29uc3QgbT1hd2FpdCBvKHMsci5wYXJzZSk7cmV0dXJuIHQoaS5pZCxtKX0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQ1Lm1qcy5tYXAK", "chunks/routes/api/index.get6.mjs": "aW1wb3J0e2QgYXMgbyxoIGFzIHIsYW0gYXMgc31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgZX1mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IHQ9ZShbInVzZXI6cmVhZCJdLGFzeW5jKCk9Pm8ucXVlcnkucGVybWlzc2lvblRhYmxlLmZpbmRNYW55KHt3aGVyZTpyKHMub3JnX2tpbmQsInRlbmFudCIpfSkpO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQ2Lm1qcy5tYXAK", "chunks/routes/api/index.get7.mjs": "aW1wb3J0e2MgYXMgbyxkIGFzIHMsaCBhcyByLGcgYXMgaX1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGU9dChbInVzZXI6cmVhZCJdLGFzeW5jKHQse3Nlc3Npb246ZX0pPT57Y29uc3QgYT1lLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFhKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7cmV0dXJuIHMucXVlcnkucm9sZVRhYmxlLmZpbmRNYW55KHt3aGVyZTpyKGkub3JnYW5pemF0aW9uX2lkLGEpLGNvbHVtbnM6e2lkOiEwLG5hbWU6ITAsZGVzY3JpcHRpb246ITAscGVybWlzc2lvbnM6ITAsaXNfc3lzdGVtOiEwfX0pfSk7ZXhwb3J0e2UgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldDcubWpzLm1hcAo=", "chunks/routes/api/index.patch.mjs": "aW1wb3J0e2MgYXMgdCxyIGFzIHMsZCBhcyBvLGUgYXMgYSxoIGFzIGV9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7VSBhcyByfWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24yLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgbj1pKFsidXNlcjptYW5hZ2UiXSxhc3luYyBpPT57Y29uc3Qgbj1pLmNvbnRleHQuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIW4pdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBtPWF3YWl0IHMoaSxyLnBhcnNlKSxbZF09YXdhaXQgby5zZWxlY3QoKS5mcm9tKGEpLndoZXJlKGUoYS5pZCxuKSkubGltaXQoMSk7aWYoIWQpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiT3JnYW5pemF0aW9uIG5vdCBmb3VuZCJ9KTtpZihkLmlzX3N5c3RlbSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJUaGUgc3lzdGVtIG9yZ2FuaXphdGlvbiBjYW5ub3QgYmUgcmVuYW1lZCJ9KTtjb25zdFtwXT1hd2FpdCBvLnVwZGF0ZShhKS5zZXQoe25hbWU6bS5uYW1lfSkud2hlcmUoZShhLmlkLG4pKS5yZXR1cm5pbmcoKTtyZXR1cm57aWQ6cC5pZCxuYW1lOnAubmFtZX19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/index.patch2.mjs": "aW1wb3J0e3IgYXMgcyxkIGFzIGUsdSBhcyBvLEYgYXMgYSxQIGFzIHIsaCBhcyBpLGMgYXMgdCxJIGFzIG4sSiBhcyBtfWZyb20iLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZH1mcm9tIi4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtwIGFzIHV9ZnJvbSIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7VSBhcyBwfWZyb20iLi4vLi4vXy91c2VyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGM9ZChhc3luYyhkLGMpPT57Y29uc3QgZj1hd2FpdCBzKGQscC5wYXJzZSk7aWYoZi51c2VybmFtZSl7Y29uc3Rbc109YXdhaXQgZS5zZWxlY3Qoe2lkOm8uaWR9KS5mcm9tKG8pLndoZXJlKGEoaShvLnVzZXJuYW1lLGYudXNlcm5hbWUpLHIoby5pZCxjLmlkKSkpLmxpbWl0KDEpO2lmKHMpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiVXNlcm5hbWUgYWxyZWFkeSB0YWtlbiJ9KX1jb25zdCB3PXt9O3ZvaWQgMCE9PWYubmFtZSYmKHcubmFtZT1mLm5hbWUpLHZvaWQgMCE9PWYudXNlcm5hbWUmJih3LnVzZXJuYW1lPWYudXNlcm5hbWUpLHZvaWQgMCE9PWYuYmlvJiYody5iaW89Zi5iaW8pO2NvbnN0W3ZdPWF3YWl0IGUudXBkYXRlKG8pLnNldCh3KS53aGVyZShpKG8uaWQsYy5pZCkpLnJldHVybmluZygpO2lmKCF2KXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlVzZXIgbm90IGZvdW5kIn0pO2NvbnN0IGg9bihkLCJzZXNzaW9uaWQiKXx8bShkLCJ4LXNlc3Npb24taWQiKTtyZXR1cm4gaCYmYXdhaXQgdShkLHYse3Byb3ZpZGVyOmMucHJvdmlkZXIsYWN0aXZlT3JnYW5pemF0aW9uSWQ6Yy5hY3RpdmVPcmdhbml6YXRpb25JZCxpbXBlcnNvbmF0b3I6Yy5pbXBlcnNvbmF0b3Isc2Vzc2lvbklkOmh9KSx7c3VjY2VzczohMH19KTtleHBvcnR7YyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucGF0Y2gyLm1qcy5tYXAK", "chunks/routes/api/index.post.mjs": "aW1wb3J0e2MgYXMgbyxyLGQgYXMgdH1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgc31mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIGksYX1mcm9tIi4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydHtDIGFzIGV9ZnJvbSIuLi8uLi9fL3Byb2plY3QubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPXMoWyJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXSxhc3luYyhzLHtzZXNzaW9uOm59KT0+e2NvbnN0IG09bi5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighbSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IHA9YXdhaXQgcihzLGUucGFyc2UpLFtkXT1hd2FpdCB0Lmluc2VydChpKS52YWx1ZXMoey4uLnAsb3JnYW5pemF0aW9uX2lkOm0sY3JlYXRlZF9ieTpuLmlkfSkucmV0dXJuaW5nKCk7cmV0dXJuIGF3YWl0IHQuaW5zZXJ0KGEpLnZhbHVlcyh7cHJvamVjdF9pZDpkLmlkLHVzZXJfaWQ6bi5pZCxyb2xlOiJvd25lciJ9KSxkfSk7ZXhwb3J0e24gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBvc3QubWpzLm1hcAo=", "chunks/routes/api/index.post2.mjs": "aW1wb3J0e3IgYXMgbyxkIGFzIHJ9ZnJvbSIuLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBzfWZyb20iLi4vLi4vXy9zY2hlbWEzLm1qcyI7aW1wb3J0e0MgYXMgbX1mcm9tIi4uLy4uL18vcHJvZHVjdC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGk9dChbInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0Om1hbmFnZSJdLGFzeW5jIHQ9Pntjb25zdCBpPWF3YWl0IG8odCxtLnBhcnNlKSxbYV09YXdhaXQgci5pbnNlcnQocykudmFsdWVzKGkpLnJldHVybmluZygpO3JldHVybiBhfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBvc3QyLm1qcy5tYXAK", "chunks/routes/api/index.post3.mjs": "aW1wb3J0e3IgYXMgb31mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHt5IGFzIHR9ZnJvbSIuLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIHN9ZnJvbSIuLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7QyBhcyBpfWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24yLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IGE9cihhc3luYyhyLGEpPT57Y29uc3R7bmFtZTptfT1hd2FpdCBvKHIsaS5wYXJzZSksbj1hd2FpdCB0KGEuaWQsbSk7cmV0dXJuIGF3YWl0IHMoYS5pZCksbn0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5wb3N0My5tanMubWFwCg==", "chunks/routes/api/index.post4.mjs": "aW1wb3J0e2MgYXMgcyxyIGFzIG8sZCBhcyB0LGcgYXMgYX1mcm9tIi4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHt1IGFzIGksdiBhcyBufWZyb20iLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7QyBhcyBlfWZyb20iLi4vLi4vXy9yb2xlLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vXy9zZXNzaW9uLm1qcyI7Y29uc3QgbT1yKFsidXNlcjptYW5hZ2UiXSxhc3luYyhyLHtzZXNzaW9uOm19KT0+e2NvbnN0IHA9bS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighcCl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IGQ9YXdhaXQgbyhyLGUucGFyc2UpLHU9YXdhaXQgaShtLmlkLHApLGM9bih1LGQucGVybWlzc2lvbnMpO2lmKGMubGVuZ3RoPjApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZTpgQ2Fubm90IGdyYW50OiAke2Muam9pbigiLCAiKX1gfSk7Y29uc3RbZ109YXdhaXQgdC5pbnNlcnQoYSkudmFsdWVzKHtvcmdhbml6YXRpb25faWQ6cCwuLi5kfSkucmV0dXJuaW5nKCk7cmV0dXJuIGd9KTtleHBvcnR7bSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucG9zdDQubWpzLm1hcAo=", "chunks/routes/api/invitations/_token/accept.post.mjs": "aW1wb3J0e20gYXMgYSxjIGFzIGksZCBhcyB0LEYgYXMgbyxoIGFzIHMsaSBhcyBlLGcgYXMgcn1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtmIGFzIGQsaCBhcyBtLGkgYXMgdSxhIGFzIGYsRCBhcyBsLGogYXMgdyxrIGFzIGMsbSBhcyBnfWZyb20iLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7ciBhcyBwfWZyb20iLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0e2EgYXMgX31mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBoPW4oYXN5bmMobixoKT0+e3ZhciB6O2NvbnN0IGo9YShuLCJ0b2tlbiIpO2lmKCFqKXRocm93IGkoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik1pc3NpbmcgdG9rZW4ifSk7Y29uc3QgTT1hd2FpdCBkKGopO2lmKCFNfHxNLmV4cGlyZXNfYXQ8bmV3IERhdGUpdGhyb3cgaSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCJ9KTtjb25zdCBiPWF3YWl0IG0oTS5vcmdhbml6YXRpb25faWQpO2lmKCFiKXRocm93IGkoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik9yZ2FuaXphdGlvbiBub3QgZm91bmQifSk7aWYoTS5lbWFpbCE9PWgucHJpbWFyeV9lbWFpbCl0aHJvdyBpKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJJbnZpdGF0aW9uIHdhcyBpc3N1ZWQgdG8gYSBkaWZmZXJlbnQgZW1haWwgYWRkcmVzcyJ9KTtpZihhd2FpdCB1KGguaWQsTS5vcmdhbml6YXRpb25faWQpKXRocm93IGkoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IllvdSBhcmUgYWxyZWFkeSBhIG1lbWJlciBvZiB0aGlzIG9yZ2FuaXphdGlvbiJ9KTthd2FpdCBmKGguaWQsTS5vcmdhbml6YXRpb25faWQsbCk7Y29uc3QgeT1hd2FpdCB0LnF1ZXJ5Lm9yZ2FuaXphdGlvbk1lbWJlclRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6byhzKGUudXNlcl9pZCxoLmlkKSxzKGUub3JnYW5pemF0aW9uX2lkLE0ub3JnYW5pemF0aW9uX2lkKSksY29sdW1uczp7aWQ6ITB9fSk7aWYoeSlpZihNLnJvbGVfaWQpe2NvbnN0IGE9YXdhaXQgdC5xdWVyeS5yb2xlVGFibGUuZmluZEZpcnN0KHt3aGVyZTpzKHIuaWQsTS5yb2xlX2lkKSxjb2x1bW5zOntpZDohMH19KTthJiZhd2FpdCB3KHkuaWQsYS5pZCl9ZWxzZXtjb25zdCBhPShhd2FpdCBjKE0ub3JnYW5pemF0aW9uX2lkKSkuZmluZChhPT4iTWVtYmVyIj09PWEubmFtZSk7YSYmYXdhaXQgdyh5LmlkLGEuaWQpfXJldHVybihudWxsPT0oej1NLnByb2plY3RfaWRzKT92b2lkIDA6ei5sZW5ndGgpJiZhd2FpdCBhc3luYyBmdW5jdGlvbihhLGkpe2F3YWl0IFByb21pc2UuYWxsKGkubWFwKGk9PnQuaW5zZXJ0KF8pLnZhbHVlcyh7cHJvamVjdF9pZDppLHVzZXJfaWQ6YSxyb2xlOiJtZW1iZXIifSkub25Db25mbGljdERvTm90aGluZygpKSl9KGguaWQsTS5wcm9qZWN0X2lkcyksYXdhaXQgZyhNLmlkKSxhd2FpdCBwKGguaWQpLHtvcmc6e2lkOmIuaWQsbmFtZTpiLm5hbWV9fX0pO2V4cG9ydHtoIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hY2NlcHQucG9zdC5tanMubWFwCg==", "chunks/routes/api/invitations/index.get.mjs": "aW1wb3J0e0ggYXMgdCxtIGFzIGUsYyBhcyBvLGQgYXMgYSxoIGFzIGksZyBhcyBzLFIgYXMgbn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2YgYXMgcixoIGFzIGR9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCBtPXQoYXN5bmMgdD0+e3ZhciBtO2NvbnN0IGw9ZSh0LCJ0b2tlbiIpO2lmKCFsKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik1pc3NpbmcgdG9rZW4ifSk7Y29uc3QgdT1hd2FpdCByKGwpO2lmKCF1fHx1LmV4cGlyZXNfYXQ8bmV3IERhdGUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCJ9KTtjb25zdCBmPWF3YWl0IGQodS5vcmdhbml6YXRpb25faWQpO2lmKCFmKXRocm93IG8oe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik9yZ2FuaXphdGlvbiBub3QgZm91bmQifSk7bGV0IHA9bnVsbDtpZih1LnJvbGVfaWQpe2NvbnN0IHQ9YXdhaXQgYS5xdWVyeS5yb2xlVGFibGUuZmluZEZpcnN0KHt3aGVyZTppKHMuaWQsdS5yb2xlX2lkKSxjb2x1bW5zOntuYW1lOiEwfX0pO3A9bnVsbCE9KG09bnVsbD09dD92b2lkIDA6dC5uYW1lKT9tOm51bGx9cmV0dXJuIHUuaW52aXRlZF9ieSYmbih0LCJyZWZfaW52aXRlIix1Lmludml0ZWRfYnkse2h0dHBPbmx5OiEwLHNlY3VyZTohMCxzYW1lU2l0ZToibGF4IixtYXhBZ2U6NjA0ODAwLHBhdGg6Ii8ifSkse2lkOnUuaWQsZW1haWw6dS5lbWFpbCxyb2xlTmFtZTpwLG9yZzp7aWQ6Zi5pZCxuYW1lOmYubmFtZX19fSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldC5tanMubWFwCg==", "chunks/routes/api/notifications/_id/read.patch.mjs": "aW1wb3J0e20gYXMgdCxjIGFzIG8sZCBhcyBzLFMgYXMgaSxGIGFzIHIsaCBhcyBhfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e3QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBkPWUoYXN5bmMoZSxkKT0+e2NvbnN0IG09ZS5jb250ZXh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkLHA9dChlLCJpZCIpO2lmKCFtfHwhcCl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJCYWQgcmVxdWVzdCJ9KTtjb25zdFt1XT1hd2FpdCBzLnVwZGF0ZShpKS5zZXQoe2lzX3JlYWQ6ITB9KS53aGVyZShyKGEoaS5pZCxwKSxhKGkudXNlcl9pZCxkLmlkKSxhKGkub3JnYW5pemF0aW9uX2lkLG0pKSkucmV0dXJuaW5nKCk7aWYoIXUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90aWZpY2F0aW9uIG5vdCBmb3VuZCJ9KTtyZXR1cm4gbih1KX0pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1yZWFkLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/notifications/unread-count.get.mjs": "aW1wb3J0e2QgYXMgbyxhNCBhcyB0LFMgYXMgcixGIGFzIG4saCBhcyBpfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBzfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBlPXMoYXN5bmMocyxlKT0+e3ZhciBhO2NvbnN0IG09cy5jb250ZXh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFtKXJldHVybntjb3VudDowfTtjb25zdFtkXT1hd2FpdCBvLnNlbGVjdCh7Y291bnQ6dCgpfSkuZnJvbShyKS53aGVyZShuKGkoci51c2VyX2lkLGUuaWQpLGkoci5vcmdhbml6YXRpb25faWQsbSksaShyLmlzX3JlYWQsITEpKSk7cmV0dXJue2NvdW50Om51bGwhPShhPW51bGw9PWQ/dm9pZCAwOmQuY291bnQpP2E6MH19KTtleHBvcnR7ZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dW5yZWFkLWNvdW50LmdldC5tanMubWFwCg==", "chunks/routes/api/organization/index.get.mjs": "aW1wb3J0e2MgYXMgbyxkIGFzIHMsaCBhcyByLHAgYXMgdH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgaX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtpIGFzIGF9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBlPWkoWyJiaWxsaW5nOnJlYWQiLCJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246ZX0pPT57Y29uc3Qgbj1lLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFuKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7cmV0dXJuIHMuc2VsZWN0KCkuZnJvbShhKS53aGVyZShyKGEub3JnYW5pemF0aW9uX2lkLG4pKS5vcmRlckJ5KHQoYS5jcmVhdGVkX2F0KSl9KTtleHBvcnR7ZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0Lm1qcy5tYXAK", "chunks/routes/api/organization/index.get2.mjs": "aW1wb3J0e2MgYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtuIGFzIHN9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IHQ9cihbInVzZXI6cmVhZCJdLGFzeW5jKHIse3Nlc3Npb246dH0pPT57aWYoIXQuYWN0aXZlT3JnYW5pemF0aW9uSWQpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtyZXR1cm4gcyh0LmFjdGl2ZU9yZ2FuaXphdGlvbklkKX0pO2V4cG9ydHt0IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQyLm1qcy5tYXAK", "chunks/routes/api/organization/index.get3.mjs": "aW1wb3J0e2MgYXMgbyxuIGFzIHN9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtMIGFzIHR9ZnJvbSIuLi8uLi8uLi9fL3BhZ2luYXRpb24ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3cgYXMgYX1mcm9tIi4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7Y29uc3QgaT1yKFsidXNlcjpyZWFkIl0sYXN5bmMocix7c2Vzc2lvbjppfSk9Pntjb25zdCBlPWkuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBuPWF3YWl0IHMocix0LnBhcnNlKTtyZXR1cm4gYShlLG4pfSk7ZXhwb3J0e2kgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmdldDMubWpzLm1hcAo=", "chunks/routes/api/organization/index.post.mjs": "aW1wb3J0e2MgYXMgdCxyIGFzIGksZCBhcyBlfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2kgYXMgYSxhIGFzIG99ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTQubWpzIjtpbXBvcnR7QyBhcyBufWZyb20iLi4vLi4vLi4vXy9pbnZvaWNlLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7ZnVuY3Rpb24gZ2VuZXJhdGVJbnZvaWNlTnVtYmVyKCl7Y29uc3QgdD1uZXcgRGF0ZTtyZXR1cm5gSU5WLSR7dC5nZXRGdWxsWWVhcigpfSR7U3RyaW5nKHQuZ2V0TW9udGgoKSsxKS5wYWRTdGFydCgyLCIwIil9LSR7TWF0aC5mbG9vcigxZTQqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9YH1jb25zdCBzPXIoWyJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKHIse3Nlc3Npb246c30pPT57Y29uc3QgbT1zLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFtKXRocm93IHQoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7aXRlbXM6dSwuLi5jfT1hd2FpdCBpKHIsbi5wYXJzZSkscD11LnJlZHVjZSgodCxpKT0+dCtpLnVuaXRfcHJpY2UqaS5xdWFudGl0eSwwKSxkPXAsW19dPWF3YWl0IGUuaW5zZXJ0KGEpLnZhbHVlcyh7Li4uYyxvcmdhbml6YXRpb25faWQ6bSxudW1iZXI6Z2VuZXJhdGVJbnZvaWNlTnVtYmVyKCksc3VidG90YWw6cCx0b3RhbDpkLGR1ZV9hdDpjLmR1ZV9hdD9uZXcgRGF0ZShjLmR1ZV9hdCk6dm9pZCAwfSkucmV0dXJuaW5nKCk7cmV0dXJuIHUubGVuZ3RoPjAmJmF3YWl0IGUuaW5zZXJ0KG8pLnZhbHVlcyh1Lm1hcCh0PT4oe2ludm9pY2VfaWQ6Xy5pZCxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uLHF1YW50aXR5OnQucXVhbnRpdHksdW5pdF9wcmljZTp0LnVuaXRfcHJpY2UsY3VycmVuY3k6dC5jdXJyZW5jeSxhbW91bnQ6dC51bml0X3ByaWNlKnQucXVhbnRpdHl9KSkpLF99KTtleHBvcnR7cyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucG9zdC5tanMubWFwCg==", "chunks/routes/api/organization/index.post2.mjs": "aW1wb3J0e28gYXMgYSxhIGFzIHMscyBhcyBpLGMgYXMgbyxyIGFzIHQsZCBhcyBlLHUgYXMgcixoIGFzIG59ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIG19ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7aSBhcyBkLG4gYXMgbCxvIGFzIHB9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2NvbnN0IHU9YSh7ZW1haWw6aSgpLnRyaW0oKS5lbWFpbCgiSW52YWxpZCBlbWFpbCBhZGRyZXNzIikscm9sZV9pZDppKCkub3B0aW9uYWwoKSxwcm9qZWN0X2lkczpzKGkoKS51dWlkKCkpLm9wdGlvbmFsKCl9KSxjPW0oWyJ1c2VyOm1hbmFnZSJdLGFzeW5jKGEse3Nlc3Npb246c30pPT57Y29uc3QgaT1zLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFpKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7ZW1haWw6bSxyb2xlX2lkOmMscHJvamVjdF9pZHM6Zn09YXdhaXQgdChhLHUucGFyc2UpLFtfXT1hd2FpdCBlLnNlbGVjdCh7aWQ6ci5pZH0pLmZyb20ocikud2hlcmUobihyLnByaW1hcnlfZW1haWwsbSkpLmxpbWl0KDEpO2lmKF8mJmF3YWl0IGQoXy5pZCxpKSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwOSxzdGF0dXNNZXNzYWdlOiJVc2VyIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgdGhpcyBvcmdhbml6YXRpb24ifSk7aWYoKGF3YWl0IGwoaSkpLnNvbWUoYT0+YS5lbWFpbD09PW0pKXRocm93IG8oe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IkFuIGludml0YXRpb24gZm9yIHRoaXMgZW1haWwgaXMgYWxyZWFkeSBwZW5kaW5nIn0pO3JldHVybiBwKGksbSxudWxsIT1jP2M6bnVsbCxzLmlkLG51bGwhPWY/ZjpbXSl9KTtleHBvcnR7YyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgucG9zdDIubWpzLm1hcAo=", "chunks/routes/api/organization/index.post3.mjs": "aW1wb3J0e2MgYXMgYSxyIGFzIHMsZCBhcyBpLHUgYXMgZSxoIGFzIHQsaSBhcyByfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBvfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2kgYXMgbSxEIGFzIG59ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIGR9ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7QSBhcyB1fWZyb20iLi4vLi4vLi4vXy9tZW1iZXIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2NvbnN0IHA9byhbInVzZXI6bWFuYWdlIl0sYXN5bmMobyx7c2Vzc2lvbjpwfSk9Pntjb25zdCBmPXAuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWYpdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdHtlbWFpbDpsfT1hd2FpdCBzKG8sdS5wYXJzZSksW19dPWF3YWl0IGkuc2VsZWN0KCkuZnJvbShlKS53aGVyZSh0KGUucHJpbWFyeV9lbWFpbCxsKSkubGltaXQoMSk7aWYoIV8pdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm8gdXNlciBmb3VuZCB3aXRoIHRoYXQgZW1haWwifSk7aWYoYXdhaXQgbShfLmlkLGYpKXRocm93IGEoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IlVzZXIgaXMgYWxyZWFkeSBhIG1lbWJlciBvZiB0aGlzIG9yZ2FuaXphdGlvbiJ9KTtyZXR1cm4gYXdhaXQgaS5pbnNlcnQocikudmFsdWVzKHt1c2VyX2lkOl8uaWQsb3JnYW5pemF0aW9uX2lkOmYsYWJpbGl0aWVzOlsuLi5uXX0pLGF3YWl0IGQoXy5pZCkse2lkOl8uaWQsbmFtZTpfLm5hbWUsdXNlcm5hbWU6Xy51c2VybmFtZSxwcmltYXJ5X2VtYWlsOl8ucHJpbWFyeV9lbWFpbCxhdmF0YXI6Xy5hdmF0YXIsYWJpbGl0aWVzOlsuLi5uXSxpc19zdXNwZW5kZWQ6Xy5pc19zdXNwZW5kZWR9fSk7ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBvc3QzLm1qcy5tYXAK", "chunks/routes/api/organization/invitations/index.delete.mjs": "aW1wb3J0e2MgYXMgbyxtIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7ciBhcyBpfWZyb20iLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtjb25zdCByPXQoWyJ1c2VyOm1hbmFnZSJdLGFzeW5jKHQse3Nlc3Npb246cn0pPT57Y29uc3QgYT1yLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFhKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3QgZT1zKHQsImlkIik7aWYoIWUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpbnZpdGF0aW9uIGlkIn0pO3JldHVybiBhd2FpdCBpKGUsYSkse29rOiEwfX0pO2V4cG9ydHtyIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/organization/invoice/settings.get.mjs": "aW1wb3J0e2MgYXMgbyxkIGFzIGksaCBhcyB0fWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e28gYXMgc31mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hNC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGE9cihbImJpbGxpbmc6cmVhZCIsImJpbGxpbmc6bWFuYWdlIl0sYXN5bmMocix7c2Vzc2lvbjphfSk9Pntjb25zdCBuPWEuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIW4pdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBlPWF3YWl0IGkucXVlcnkub3JnYW5pemF0aW9uQmlsbGluZ1NldHRpbmdzVGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KHMub3JnYW5pemF0aW9uX2lkLG4pfSk7cmV0dXJuIG51bGwhPWU/ZTp7b3JnYW5pemF0aW9uX2lkOm4sY3VycmVuY3k6IlVTRCJ9fSk7ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNldHRpbmdzLmdldC5tanMubWFwCg==", "chunks/routes/api/organization/invoice/settings.patch.mjs": "aW1wb3J0e2MgYXMgbyxyIGFzIHQsZCBhcyBzfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBpfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e28gYXMgcn1mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hNC5tanMiO2ltcG9ydHtVIGFzIGF9ZnJvbSIuLi8uLi8uLi8uLi9fL2ludm9pY2UubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPWkoWyJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246bn0pPT57Y29uc3QgZT1uLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFlKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3QgbT1hd2FpdCB0KGksYS5wYXJzZSksW3BdPWF3YWl0IHMuaW5zZXJ0KHIpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOmUsLi4ubX0pLm9uQ29uZmxpY3REb1VwZGF0ZSh7dGFyZ2V0OnIub3JnYW5pemF0aW9uX2lkLHNldDptfSkucmV0dXJuaW5nKCk7cmV0dXJuIHB9KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2V0dGluZ3MucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/organization/members/_userId/abilities.patch.mjs": "aW1wb3J0e2MgYXMgcyxtIGFzIHQsciBhcyBhLGQgYXMgaSxpIGFzIGUsRiBhcyBvLGggYXMgcn1mcm9tIi4uLy4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtxIGFzIG0scyBhcyB1LHQgYXMgZCxTIGFzIGx9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIGd9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7VSBhcyBjfWZyb20iLi4vLi4vLi4vLi4vLi4vXy9tZW1iZXIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2NvbnN0IGY9bihbInVzZXI6bWFuYWdlIl0sYXN5bmMobix7c2Vzc2lvbjpmfSk9Pnt2YXIgdztjb25zdCBoPWYuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWgpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBwPXQobiwidXNlcklkIik7aWYoIXApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyB1c2VySWQifSk7aWYocD09PWYuaWQpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiWW91IGNhbm5vdCBlZGl0IHlvdXIgb3duIG1lbWJlcnNoaXAifSk7Y29uc3R7YWJpbGl0aWVzOl99PWF3YWl0IGEobixjLnBhcnNlKSxbYl09YXdhaXQgaS5zZWxlY3QoKS5mcm9tKGUpLndoZXJlKG8ocihlLnVzZXJfaWQsZi5pZCkscihlLm9yZ2FuaXphdGlvbl9pZCxoKSkpLmxpbWl0KDEpLHo9KG51bGwhPSh3PW51bGw9PWI/dm9pZCAwOmIuYWJpbGl0aWVzKT93OltdKS5maWx0ZXIocz0+bSghMSkuaGFzKHMpKSxqPV8uZmlsdGVyKHM9PiF1KHoscykpO2lmKGoubGVuZ3RoPjApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZTpgWW91IGNhbm5vdCBncmFudDogJHtqLmpvaW4oIiwgIil9YH0pO2NvbnN0W0NdPWF3YWl0IGkuc2VsZWN0KCkuZnJvbShlKS53aGVyZShvKHIoZS51c2VyX2lkLHApLHIoZS5vcmdhbml6YXRpb25faWQsaCkpKS5saW1pdCgxKTtpZighQyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJOb3QgYSBtZW1iZXIgb2YgdGhpcyBvcmdhbml6YXRpb24ifSk7aWYoQy5hYmlsaXRpZXMuaW5jbHVkZXMoInVzZXI6bWFuYWdlIikmJiFfLmluY2x1ZGVzKCJ1c2VyOm1hbmFnZSIpJiZhd2FpdCBkKGgpPD0xKXRocm93IHMoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IkNhbm5vdCByZW1vdmUgdGhlIGxhc3Qgb3JnYW5pemF0aW9uIGFkbWluIn0pO2NvbnN0IE09Wy4uLm5ldyBTZXQoWy4uLl8sLi4ubF0pXSxbdl09YXdhaXQgaS51cGRhdGUoZSkuc2V0KHthYmlsaXRpZXM6TX0pLndoZXJlKG8ocihlLnVzZXJfaWQscCkscihlLm9yZ2FuaXphdGlvbl9pZCxoKSkpLnJldHVybmluZygpO3JldHVybiBhd2FpdCBnKHApLHZ9KTtleHBvcnR7ZiBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWJpbGl0aWVzLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/organization/members/_userId/roles.patch.mjs": "aW1wb3J0e2MgYXMgcyxhbCBhcyBlLG8gYXMgYSxzIGFzIG8sciBhcyB0LGQgYXMgaSxoIGFzIHIsZyBhcyBuLEYgYXMgZCxpIGFzIG0sbH1mcm9tIi4uLy4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdX1mcm9tIi4uLy4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHt1IGFzIGYsdiBhcyBnLHQgYXMgY31mcm9tIi4uLy4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3IgYXMgcH1mcm9tIi4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydHtBIGFzIHd9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3JvbGUubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2NvbnN0IGg9dShbInVzZXI6bWFuYWdlIl0sYXN5bmModSx7c2Vzc2lvbjpofSk9Pntjb25zdCBfPWguYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIV8pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdHt1c2VySWQ6dn09YXdhaXQgZSh1LGEoe3VzZXJJZDpvKCl9KS5wYXJzZSksQz1hd2FpdCB0KHUsdy5wYXJzZSksTT1DLnJvbGVfaWRzLmxlbmd0aD4wP2F3YWl0IGkucXVlcnkucm9sZVRhYmxlLmZpbmRNYW55KHt3aGVyZTpyKG4ub3JnYW5pemF0aW9uX2lkLF8pfSk6W10sYj1uZXcgU2V0KE0ubWFwKHM9PnMuaWQpKTtpZihDLnJvbGVfaWRzLmZpbHRlcihzPT4hYi5oYXMocykpLmxlbmd0aD4wKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6IkludmFsaWQgcm9sZSBJRHMifSk7Y29uc3Qgaj1hd2FpdCBmKGguaWQsXyk7Zm9yKGNvbnN0IGUgb2YgTS5maWx0ZXIocz0+Qy5yb2xlX2lkcy5pbmNsdWRlcyhzLmlkKSkpe2NvbnN0IGE9ZyhqLGUucGVybWlzc2lvbnMpO2lmKGEubGVuZ3RoPjApdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZTpgQ2Fubm90IGdyYW50IHJvbGUgIiR7ZS5uYW1lfSI6ICR7YS5qb2luKCIsICIpfWB9KX1jb25zdCB6PWF3YWl0IGkucXVlcnkub3JnYW5pemF0aW9uTWVtYmVyVGFibGUuZmluZEZpcnN0KHt3aGVyZTpkKHIobS51c2VyX2lkLHYpLHIobS5vcmdhbml6YXRpb25faWQsXykpLGNvbHVtbnM6e2lkOiEwfX0pO2lmKCF6KXRocm93IHMoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik1lbWJlciBub3QgZm91bmQifSk7aWYoKGF3YWl0IGYodixfKSkuaW5jbHVkZXMoInVzZXI6bWFuYWdlIikmJiFDLnJvbGVfaWRzLnNvbWUocz0+e3ZhciBlO3JldHVybiBudWxsPT0oZT1NLmZpbmQoZT0+ZS5pZD09PXMpKT92b2lkIDA6ZS5wZXJtaXNzaW9ucy5pbmNsdWRlcygidXNlcjptYW5hZ2UiKX0pKXtpZihhd2FpdCBjKF8pPD0xKXRocm93IHMoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6IkNhbm5vdCByZW1vdmUgdGhlIGxhc3QgYWRtaW4ifSl9cmV0dXJuIGF3YWl0IGkuZGVsZXRlKGwpLndoZXJlKHIobC5tZW1iZXJfaWQsei5pZCkpLEMucm9sZV9pZHMubGVuZ3RoPjAmJmF3YWl0IGkuaW5zZXJ0KGwpLnZhbHVlcyhDLnJvbGVfaWRzLm1hcChzPT4oe21lbWJlcl9pZDp6LmlkLHJvbGVfaWQ6c30pKSkub25Db25mbGljdERvTm90aGluZygpLGF3YWl0IHAodikse29rOiEwfX0pO2V4cG9ydHtoIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1yb2xlcy5wYXRjaC5tanMubWFwCg==", "chunks/routes/api/organization/members/index.delete.mjs": "aW1wb3J0e2MgYXMgcyxtIGFzIHQsZCBhcyBvLGkgYXMgYSxGIGFzIGUsaCBhcyBpfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3QgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3IgYXMgbX1mcm9tIi4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7Y29uc3QgZD1yKFsidXNlcjptYW5hZ2UiXSxhc3luYyhyLHtzZXNzaW9uOmR9KT0+e2NvbnN0IHU9ZC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighdSl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IGM9dChyLCJ1c2VySWQiKTtpZighYyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJNaXNzaW5nIHVzZXJJZCJ9KTtpZihjPT09ZC5pZCl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMyxzdGF0dXNNZXNzYWdlOiJVc2UgbGVhdmUtb3JnYW5pemF0aW9uIHRvIHJlbW92ZSB5b3Vyc2VsZiJ9KTtjb25zdFtmXT1hd2FpdCBvLnNlbGVjdCgpLmZyb20oYSkud2hlcmUoZShpKGEudXNlcl9pZCxjKSxpKGEub3JnYW5pemF0aW9uX2lkLHUpKSkubGltaXQoMSk7aWYoIWYpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiTm90IGEgbWVtYmVyIG9mIHRoaXMgb3JnYW5pemF0aW9uIn0pO2lmKGYuYWJpbGl0aWVzLmluY2x1ZGVzKCJ1c2VyOm1hbmFnZSIpJiZhd2FpdCBuKHUpPD0xKXRocm93IHMoe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6IkNhbm5vdCByZW1vdmUgdGhlIGxhc3Qgb3JnYW5pemF0aW9uIGFkbWluIn0pO3JldHVybiBhd2FpdCBvLmRlbGV0ZShhKS53aGVyZShlKGkoYS51c2VyX2lkLGMpLGkoYS5vcmdhbml6YXRpb25faWQsdSkpKSxhd2FpdCBtKGMpLHtzdWNjZXNzOiEwfX0pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/organizations/switch.post.mjs": "aW1wb3J0e3IgYXMgcyxjIGFzIHQsSSBhcyBvLEogYXMgYSxkIGFzIGksaCBhcyByLHUgYXMgZX1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtnIGFzIG0saSBhcyBkfWZyb20iLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7YiBhcyBwLHcgYXMgdX1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydHtTIGFzIGZ9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbjIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3Qgdz1uKGFzeW5jKG4sdyk9Pntjb25zdHtvcmdhbml6YXRpb25faWQ6Y309YXdhaXQgcyhuLGYucGFyc2UpO2lmKGM9PT1hd2FpdCBtKCkpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiQ2Fubm90IHN3aXRjaCBpbnRvIHRoZSBzeXN0ZW0gb3JnYW5pemF0aW9uIn0pO2lmKCFhd2FpdCBkKHcuaWQsYykpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiTm90IGEgbWVtYmVyIG9mIHRoYXQgb3JnYW5pemF0aW9uIn0pO2NvbnN0IGg9byhuLCJzZXNzaW9uaWQiKXx8YShuLCJ4LXNlc3Npb24taWQiKTtpZighaCl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7Y29uc3QgZz1hd2FpdCBpLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnIoZS5pZCx3LmlkKX0pO2lmKCFnKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlVzZXIgbm90IGZvdW5kIn0pO2NvbnN0IHo9YXdhaXQgcChnLHtwcm92aWRlcjp3LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOmMsaW1wZXJzb25hdG9yOncuaW1wZXJzb25hdG9yfSk7cmV0dXJuIGF3YWl0IHUoaCx6KSx6fSk7ZXhwb3J0e3cgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXN3aXRjaC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/payments/billing/balance.get.mjs": "aW1wb3J0e2MgYXMgbyxhNSBhcyBzfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyB0fWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgcj10KFsiYmlsbGluZzpyZWFkIl0sYXN5bmModCx7c2Vzc2lvbjpyfSk9Pntjb25zdCBpPXIuYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIWkpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtyZXR1cm57YmFsYW5jZTphd2FpdCBzKGkpfX0pO2V4cG9ydHtyIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1iYWxhbmNlLmdldC5tanMubWFwCg==", "chunks/routes/api/payments/billing/transactions.get.mjs": "aW1wb3J0e2MgYXMgdCxhMyBhcyBvLGQgYXMgcyxoIGFzIGEscCBhcyBpfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3QgYXMgZX1mcm9tIi4uLy4uLy4uLy4uL18vc2NoZW1hNC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG09cihbImJpbGxpbmc6cmVhZCJdLGFzeW5jKHIse3Nlc3Npb246bX0pPT57Y29uc3Qgbj1tLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFuKXRocm93IHQoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3QgcD1vKHIpLGQ9TWF0aC5tYXgoMSxOdW1iZXIocC5wYWdlKXx8MSksYz1NYXRoLm1pbig1MCxNYXRoLm1heCgxLE51bWJlcihwLmxpbWl0KXx8MjApKSxmPShkLTEpKmM7cmV0dXJue2l0ZW1zOmF3YWl0IHMuc2VsZWN0KCkuZnJvbShlKS53aGVyZShhKGUub3JnYW5pemF0aW9uX2lkLG4pKS5vcmRlckJ5KGkoZS5jcmVhdGVkX2F0KSkubGltaXQoYykub2Zmc2V0KGYpLHBhZ2U6ZCxsaW1pdDpjfX0pO2V4cG9ydHttIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD10cmFuc2FjdGlvbnMuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/payments/sepay/checkout.post.mjs": "aW1wb3J0e3YgYXMgYSxZIGFzIHQsYyBhcyBuLHIgYXMgZSxMIGFzIG8sZCBhcyByLGE2IGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7QyBhcyBtfWZyb20iLi4vLi4vLi4vLi4vXy9iaWxsaW5nLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7ZnVuY3Rpb24gYnVpbGRTZXBheVFyVXJsKG4sZSl7Y29uc3Qgbz1hKCkscj1vLnNlcGF5VHJhbnNhY3Rpb25QcmVmaXh8fCJTUCI7cmV0dXJuIHQoImh0dHBzOi8vcXIuc2VwYXkudm4vaW1nIix7YWNjOm8uc2VwYXlCYW5rTnVtYmVyLGJhbms6by5zZXBheUJhbmtOYW1lLGFtb3VudDpTdHJpbmcobiksZGVzOmAke3J9JHtlfWAsdGVtcGxhdGU6ImNvbXBhY3QiLGRvd25sb2FkOiJmYWxzZSJ9KX1mdW5jdGlvbiBiYW5rSW5mbygpe2NvbnN0IHQ9YSgpO3JldHVybntiYW5rTmFtZTp0LnNlcGF5QmFua05hbWUsYWNjb3VudE51bWJlcjp0LnNlcGF5QmFua051bWJlcixwcmVmaXg6dC5zZXBheVRyYW5zYWN0aW9uUHJlZml4fHwiU1AifX1jb25zdCBwPWkoWyJiaWxsaW5nOm1hbmFnZSJdLGFzeW5jKGEse3Nlc3Npb246dH0pPT57Y29uc3QgaT10LmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFpKXRocm93IG4oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7YW1vdW50OnB9PWF3YWl0IGUoYSxtLnBhcnNlKSx1PW8oMTIpLGM9bmV3IERhdGUoRGF0ZS5ub3coKSszNmU1KSxbZF09YXdhaXQgci5pbnNlcnQocykudmFsdWVzKHtvcmdhbml6YXRpb25faWQ6aSx1c2VyX2lkOnQuaWQsdHlwZToidG9wX3VwIixzdGF0dXM6InBlbmRpbmciLGFtb3VudDpwLGdhdGV3YXlfcmVmOnUsZXhwaXJlc19hdDpjfSkucmV0dXJuaW5nKCk7cmV0dXJue3RyYW5zYWN0aW9uSWQ6ZC5pZCxvcmRlckNvZGU6dSxhbW91bnQ6cCxxclVybDpidWlsZFNlcGF5UXJVcmwocCx1KSxiYW5rOmJhbmtJbmZvKCksZXhwaXJlc0F0OmN9fSk7ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNoZWNrb3V0LnBvc3QubWpzLm1hcAo=", "chunks/routes/api/payments/sepay/status.get.mjs": "aW1wb3J0e24gYXMgcyxvLGMgYXMgdCxkIGFzIGEsRiBhcyBpLGggYXMgcixhNiBhcyBlLHMgYXMgbn1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2R9ZnJvbSIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG09ZChhc3luYyhkLG0pPT57Y29uc3R7aWQ6cH09YXdhaXQgcyhkLG8oe2lkOm4oKX0pLnBhcnNlKSx1PW0uYWN0aXZlT3JnYW5pemF0aW9uSWQ7aWYoIXUpdGhyb3cgdCh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gYWN0aXZlIG9yZ2FuaXphdGlvbiJ9KTtjb25zdCBjPWF3YWl0IGEucXVlcnkudHJhbnNhY3Rpb25UYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkocihlLmlkLHApLHIoZS5vcmdhbml6YXRpb25faWQsdSkpLGNvbHVtbnM6e2lkOiEwLHN0YXR1czohMH19KTtpZighYyl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJOb3QgZm91bmQifSk7cmV0dXJuIGN9KTtleHBvcnR7bSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdHVzLmdldC5tanMubWFwCg==", "chunks/routes/api/payments/sepay/webhook.post.mjs": "aW1wb3J0e0ggYXMgYSxKIGFzIHQsYTggYXMgZSxjIGFzIHMsciBhcyBuLGQgYXMgbyxoIGFzIGksYTYgYXMgcixGIGFzIHUsUCBhcyBkLGE5IGFzIGMsTyBhcyBwLGFhIGFzIGwsdiBhcyBtfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7UyBhcyBmfWZyb20iLi4vLi4vLi4vLi4vXy9iaWxsaW5nLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2NvbnN0IGs9YShhc3luYyBhPT57dmFyIGssZyx3O2NvbnN0IGg9bSgpLF89bnVsbCE9KGs9dChhLCJhdXRob3JpemF0aW9uIikpP2s6IiI7aWYoIWgud2ViaG9va1NpZ25pbmdTZWNyZXR8fCFlKF8sYEFwaWtleSAke2gud2ViaG9va1NpZ25pbmdTZWNyZXR9YCkpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDEsc3RhdHVzTWVzc2FnZToiVW5hdXRob3JpemVkIn0pO2NvbnN0IHk9YXdhaXQgbihhLGYucGFyc2UpO2lmKCJpbiIhPT15LnRyYW5zZmVyVHlwZSlyZXR1cm57b2s6ITAsc2tpcHBlZDoibm90LWluY29taW5nIn07Y29uc3QgYj1oLnNlcGF5VHJhbnNhY3Rpb25QcmVmaXh8fCJTUCIsej1gJHt5LmNvbnRlbnR9ICR7bnVsbCE9KGc9eS5jb2RlKT9nOiIifWAubWF0Y2gobmV3IFJlZ0V4cChgJHtifShbQS1aYS16MC05XSspYCkpLHg9bnVsbD09ej92b2lkIDA6elsxXTtpZigheClyZXR1cm57b2s6ITAsc2tpcHBlZDoibm8tb3JkZXItY29kZSJ9O2NvbnN0IHY9YXdhaXQgby5xdWVyeS50cmFuc2FjdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShyLmdhdGV3YXlfcmVmLHgpfSk7aWYoIXYpcmV0dXJue29rOiEwLHNraXBwZWQ6InVua25vd24tb3JkZXIifTtpZigic3VjY2VzcyI9PT12LnN0YXR1cylyZXR1cm57b2s6ITAsc2tpcHBlZDoiYWxyZWFkeS1wcm9jZXNzZWQifTtpZih2LmV4cGlyZXNfYXQmJnYuZXhwaXJlc19hdDxuZXcgRGF0ZSlyZXR1cm4gYXdhaXQgby51cGRhdGUocikuc2V0KHtzdGF0dXM6ImV4cGlyZWQifSkud2hlcmUodShpKHIuaWQsdi5pZCksZChyLnN0YXR1cywic3VjY2VzcyIpKSkse29rOiEwLHNraXBwZWQ6ImV4cGlyZWQifTtpZih5LnRyYW5zZmVyQW1vdW50PHYuYW1vdW50KXJldHVybntvazohMCxza2lwcGVkOiJhbW91bnQtbWlzbWF0Y2gifTthd2FpdCBvLmJhdGNoKFtvLnVwZGF0ZShyKS5zZXQoe3N0YXR1czoic3VjY2VzcyIsc2VwYXlfZXZlbnRfaWQ6eS5pZCxtZXRhZGF0YTp7dHJhbnNmZXJBbW91bnQ6eS50cmFuc2ZlckFtb3VudH19KS53aGVyZSh1KGkoci5pZCx2LmlkKSxkKHIuc3RhdHVzLCJzdWNjZXNzIikpKSxvLmluc2VydChjKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDp2Lm9yZ2FuaXphdGlvbl9pZCxiYWxhbmNlOnYuYW1vdW50fSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6Yy5vcmdhbml6YXRpb25faWQsc2V0OntiYWxhbmNlOnBgJHtjLmJhbGFuY2V9ICsgJHt2LmFtb3VudH1gfX0pXSk7Y29uc3QgUz0oYXdhaXQgby5xdWVyeS50cmFuc2FjdGlvblRhYmxlLmZpbmRNYW55KHt3aGVyZTp1KGkoci5vcmdhbml6YXRpb25faWQsdi5vcmdhbml6YXRpb25faWQpLGkoci50eXBlLCJ0b3BfdXAiKSxpKHIuc3RhdHVzLCJzdWNjZXNzIikpLGNvbHVtbnM6e2lkOiEwfX0pKS5sZW5ndGg8PTEsJD17b3JnYW5pemF0aW9uSWQ6di5vcmdhbml6YXRpb25faWQsdXNlcklkOm51bGwhPSh3PXYudXNlcl9pZCk/dzpudWxsLHRyYW5zYWN0aW9uSWQ6di5pZCxhbW91bnQ6di5hbW91bnQsaXNGaXJzdFRvcHVwOlN9O3JldHVybiBhd2FpdCBsKCkuaG9va3MuY2FsbEhvb2soImJpbGxpbmc6dG9wdXAtc3VjY2VlZGVkIiwkKSx7b2s6ITB9fSk7ZXhwb3J0e2sgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdlYmhvb2sucG9zdC5tanMubWFwCg==", "chunks/routes/api/products/_id_.delete.mjs": "aW1wb3J0e20gYXMgbyxkIGFzIHMsaCBhcyB0LGMgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgZX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIG19ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTMubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBhPWUoWyJwcm9kdWN0OmRlbGV0ZSIsInByb2R1Y3Q6bWFuYWdlIl0sYXN5bmMgZT0+e2NvbnN0IGE9byhlLCJpZCIpLFtpXT1hd2FpdCBzLmRlbGV0ZShtKS53aGVyZSh0KG0uaWQsYSkpLnJldHVybmluZygpO2lmKCFpKXRocm93IHIoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2R1Y3Qgbm90IGZvdW5kIn0pO3JldHVybntzdWNjZXNzOiEwfX0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLmRlbGV0ZS5tanMubWFwCg==", "chunks/routes/api/products/_id_.get.mjs": "aW1wb3J0e20gYXMgbyxkIGFzIHIsaCBhcyB0LGMgYXMgc31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgZX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYTMubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBtPWUoWyJwcm9kdWN0OndyaXRlIiwicHJvZHVjdDptYW5hZ2UiXSxhc3luYyBlPT57Y29uc3QgbT1vKGUsImlkIiksYT1hd2FpdCByLnF1ZXJ5LnByb2R1Y3RUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnQoaS5pZCxtKX0pO2lmKCFhKXRocm93IHMoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2R1Y3Qgbm90IGZvdW5kIn0pO3JldHVybiBhfSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8uZ2V0Lm1qcy5tYXAK", "chunks/routes/api/products/_id_.patch.mjs": "aW1wb3J0e20gYXMgbyxyLGQgYXMgdCxoIGFzIHMsYyBhcyBhfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbX1mcm9tIi4uLy4uLy4uL18vc2NoZW1hMy5tanMiO2ltcG9ydHtVIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL3Byb2R1Y3QubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPWUoWyJwcm9kdWN0OndyaXRlIiwicHJvZHVjdDptYW5hZ2UiXSxhc3luYyBlPT57Y29uc3Qgbj1vKGUsImlkIikscD1hd2FpdCByKGUsaS5wYXJzZSksW2RdPWF3YWl0IHQudXBkYXRlKG0pLnNldChwKS53aGVyZShzKG0uaWQsbikpLnJldHVybmluZygpO2lmKCFkKXRocm93IGEoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2R1Y3Qgbm90IGZvdW5kIn0pO3JldHVybiBkfSk7ZXhwb3J0e24gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8ucGF0Y2gubWpzLm1hcAo=", "chunks/routes/api/projects/_id/members/_userId_.delete.mjs": "aW1wb3J0e20gYXMgcyxkIGFzIG8sRiBhcyB0LGggYXMgZSxjIGFzIHJ9ZnJvbSIuLi8uLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhLGEgYXMgbn1mcm9tIi4uLy4uLy4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG09aShbInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246bX0pPT57Y29uc3QgZD1zKGksImlkIikscD1zKGksInVzZXJJZCIpLGM9bS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYXdhaXQgby5xdWVyeS5wcm9qZWN0VGFibGUuZmluZEZpcnN0KHt3aGVyZTp0KGUoYS5pZCxkKSxlKGEub3JnYW5pemF0aW9uX2lkLGMpKX0pKXRocm93IHIoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2plY3Qgbm90IGZvdW5kIn0pO2NvbnN0W3VdPWF3YWl0IG8uZGVsZXRlKG4pLndoZXJlKHQoZShuLnByb2plY3RfaWQsZCksZShuLnVzZXJfaWQscCkpKS5yZXR1cm5pbmcoKTtpZighdSl0aHJvdyByKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJNZW1iZXIgbm90IGZvdW5kIGluIHRoaXMgcHJvamVjdCJ9KTtyZXR1cm57c3VjY2VzczohMH19KTtleHBvcnR7bSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9X3VzZXJJZF8uZGVsZXRlLm1qcy5tYXAK", "chunks/routes/api/projects/_id/members.post.mjs": "aW1wb3J0e20gYXMgbyxyLGQgYXMgdCxGIGFzIHMsaCBhcyBlLGMgYXMgaX1mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgYX1mcm9tIi4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtwIGFzIG4sYSBhcyBtfWZyb20iLi4vLi4vLi4vLi4vXy9zY2hlbWEyLm1qcyI7aW1wb3J0e0EgYXMgcH1mcm9tIi4uLy4uLy4uLy4uL18vcHJvamVjdC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGQ9YShbInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdLGFzeW5jKGEse3Nlc3Npb246ZH0pPT57Y29uc3QgYz1vKGEsImlkIiksaj1kLmFjdGl2ZU9yZ2FuaXphdGlvbklkLHU9YXdhaXQgcihhLHAucGFyc2UpO2lmKCFhd2FpdCB0LnF1ZXJ5LnByb2plY3RUYWJsZS5maW5kRmlyc3Qoe3doZXJlOnMoZShuLmlkLGMpLGUobi5vcmdhbml6YXRpb25faWQsaikpfSkpdGhyb3cgaSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiUHJvamVjdCBub3QgZm91bmQifSk7Y29uc3RbX109YXdhaXQgdC5pbnNlcnQobSkudmFsdWVzKHtwcm9qZWN0X2lkOmMsdXNlcl9pZDp1LnVzZXJfaWQscm9sZTp1LnJvbGV9KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbbS5wcm9qZWN0X2lkLG0udXNlcl9pZF0sc2V0Ontyb2xlOnUucm9sZX19KS5yZXR1cm5pbmcoKTtyZXR1cm4gX30pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1tZW1iZXJzLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/projects/_id/products/_productId_.delete.mjs": "aW1wb3J0e20gYXMgdCxkIGFzIG8sRiBhcyBzLGggYXMgcixjIGFzIGV9ZnJvbSIuLi8uLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhLGIgYXMgbn1mcm9tIi4uLy4uLy4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGQ9aShbInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdLGFzeW5jKGkse3Nlc3Npb246ZH0pPT57Y29uc3QgbT10KGksImlkIiksYz10KGksInByb2R1Y3RJZCIpLHA9ZC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYXdhaXQgby5xdWVyeS5wcm9qZWN0VGFibGUuZmluZEZpcnN0KHt3aGVyZTpzKHIoYS5pZCxtKSxyKGEub3JnYW5pemF0aW9uX2lkLHApKX0pKXRocm93IGUoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlByb2plY3Qgbm90IGZvdW5kIn0pO2NvbnN0W3VdPWF3YWl0IG8uZGVsZXRlKG4pLndoZXJlKHMocihuLnByb2plY3RfaWQsbSkscihuLnByb2R1Y3RfaWQsYykpKS5yZXR1cm5pbmcoKTtpZighdSl0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9kdWN0IG5vdCBsaW5rZWQgdG8gdGhpcyBwcm9qZWN0In0pO3JldHVybntzdWNjZXNzOiEwfX0pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1fcHJvZHVjdElkXy5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/projects/_id/products.post.mjs": "aW1wb3J0e20gYXMgdCxyIGFzIG8sZCBhcyByLEYgYXMgcyxoIGFzIGksYyBhcyBhfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbixiIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL3NjaGVtYTIubWpzIjtpbXBvcnR7YSBhcyBwfWZyb20iLi4vLi4vLi4vLi4vXy9wcm9qZWN0Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgZD1lKFsicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl0sYXN5bmMoZSx7c2Vzc2lvbjpkfSk9Pntjb25zdCBjPXQoZSwiaWQiKSx1PWQuYWN0aXZlT3JnYW5pemF0aW9uSWQsaj1hd2FpdCBvKGUscC5wYXJzZSk7aWYoIWF3YWl0IHIucXVlcnkucHJvamVjdFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6cyhpKG4uaWQsYyksaShuLm9yZ2FuaXphdGlvbl9pZCx1KSl9KSl0aHJvdyBhKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9qZWN0IG5vdCBmb3VuZCJ9KTtjb25zdFtfXT1hd2FpdCByLmluc2VydChtKS52YWx1ZXMoe3Byb2plY3RfaWQ6Yyxwcm9kdWN0X2lkOmoucHJvZHVjdF9pZCxxdWFudGl0eTpqLnF1YW50aXR5fSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6W20ucHJvamVjdF9pZCxtLnByb2R1Y3RfaWRdLHNldDp7cXVhbnRpdHk6ai5xdWFudGl0eX19KS5yZXR1cm5pbmcoKTtyZXR1cm4gX30pO2V4cG9ydHtkIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1wcm9kdWN0cy5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/projects/_id_.delete.mjs": "aW1wb3J0e20gYXMgbyxkIGFzIHMsRiBhcyB0LGggYXMgcixjIGFzIGV9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7cCBhcyBhfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3Qgbj1pKFsicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl0sYXN5bmMoaSx7c2Vzc2lvbjpufSk9Pntjb25zdCBtPW8oaSwiaWQiKSxwPW4uYWN0aXZlT3JnYW5pemF0aW9uSWQsW2RdPWF3YWl0IHMuZGVsZXRlKGEpLndoZXJlKHQocihhLmlkLG0pLHIoYS5vcmdhbml6YXRpb25faWQscCkpKS5yZXR1cm5pbmcoKTtpZighZCl0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9qZWN0IG5vdCBmb3VuZCJ9KTtyZXR1cm57c3VjY2VzczohMH19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9X2lkXy5kZWxldGUubWpzLm1hcAo=", "chunks/routes/api/projects/_id_.get.mjs": "aW1wb3J0e20gYXMgZSxkIGFzIHIsRiBhcyBvLGggYXMgcyxjIGFzIGEsdSBhcyB0fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBpfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbSxhIGFzIG4sYiBhcyBkfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgcD1pKFsicHJvamVjdDpyZWFkIiwicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl0sYXN5bmMoaSx7c2Vzc2lvbjpwfSk9Pntjb25zdCBjPWUoaSwiaWQiKSx1PXAuYWN0aXZlT3JnYW5pemF0aW9uSWQsXz1hd2FpdCByLnF1ZXJ5LnByb2plY3RUYWJsZS5maW5kRmlyc3Qoe3doZXJlOm8ocyhtLmlkLGMpLHMobS5vcmdhbml6YXRpb25faWQsdSkpfSk7aWYoIV8pdGhyb3cgYSh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiUHJvamVjdCBub3QgZm91bmQifSk7Y29uc3RbZixqXT1hd2FpdCBQcm9taXNlLmFsbChbci5zZWxlY3Qoe3VzZXJfaWQ6bi51c2VyX2lkLHJvbGU6bi5yb2xlLGFkZGVkX2F0Om4uYWRkZWRfYXQsbmFtZTp0Lm5hbWUsdXNlcm5hbWU6dC51c2VybmFtZSxhdmF0YXI6dC5hdmF0YXJ9KS5mcm9tKG4pLmxlZnRKb2luKHQscyhuLnVzZXJfaWQsdC5pZCkpLndoZXJlKHMobi5wcm9qZWN0X2lkLGMpKSxyLnNlbGVjdCgpLmZyb20oZCkud2hlcmUocyhkLnByb2plY3RfaWQsYykpXSk7cmV0dXJuey4uLl8sbWVtYmVyczpmLHByb2R1Y3RzOmp9fSk7ZXhwb3J0e3AgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV9pZF8uZ2V0Lm1qcy5tYXAK", "chunks/routes/api/projects/_id_.patch.mjs": "aW1wb3J0e20gYXMgbyxyIGFzIHMsZCBhcyB0LEYgYXMgcixoIGFzIGEsYyBhcyBlfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBpfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3AgYXMgbX1mcm9tIi4uLy4uLy4uL18vc2NoZW1hMi5tanMiO2ltcG9ydHtVIGFzIG59ZnJvbSIuLi8uLi8uLi9fL3Byb2plY3QubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBwPWkoWyJwcm9qZWN0OndyaXRlIiwicHJvamVjdDptYW5hZ2UiXSxhc3luYyhpLHtzZXNzaW9uOnB9KT0+e2NvbnN0IGQ9byhpLCJpZCIpLGM9cC5hY3RpdmVPcmdhbml6YXRpb25JZCxqPWF3YWl0IHMoaSxuLnBhcnNlKSxbZl09YXdhaXQgdC51cGRhdGUobSkuc2V0KGopLndoZXJlKHIoYShtLmlkLGQpLGEobS5vcmdhbml6YXRpb25faWQsYykpKS5yZXR1cm5pbmcoKTtpZighZil0aHJvdyBlKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJQcm9qZWN0IG5vdCBmb3VuZCJ9KTtyZXR1cm4gZn0pO2V4cG9ydHtwIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/referral/stats.get.mjs": "aW1wb3J0e2QgYXMgb31mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtFIGFzIHJ9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3QgdD1vKChvLHQpPT5yKHQuaWQpKTtleHBvcnR7dCBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdHMuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/roles/_id_.delete.mjs": "aW1wb3J0e2MgYXMgcyxhbCBhcyBvLG8gYXMgdCxzIGFzIGEsZCBhcyBlLEYgYXMgaSxoIGFzIHIsZyBhcyBufWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBtfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3ogYXMgZH1mcm9tIi4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0e3IgYXMgcH1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7Y29uc3QgdT1tKFsidXNlcjptYW5hZ2UiXSxhc3luYyhtLHtzZXNzaW9uOnV9KT0+e2NvbnN0IGM9dS5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0e2lkOmZ9PWF3YWl0IG8obSx0KHtpZDphKCl9KS5wYXJzZSksbD1hd2FpdCBlLnF1ZXJ5LnJvbGVUYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkocihuLmlkLGYpLHIobi5vcmdhbml6YXRpb25faWQsYykpfSk7aWYoIWwpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDQsc3RhdHVzTWVzc2FnZToiUm9sZSBub3QgZm91bmQifSk7aWYobC5pc19zeXN0ZW0pdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiU3lzdGVtIHJvbGVzIGNhbm5vdCBiZSBkZWxldGVkIn0pO2NvbnN0IHc9YXdhaXQgZChmKTtyZXR1cm4gYXdhaXQgZS5kZWxldGUobikud2hlcmUocihuLmlkLGYpKSxhd2FpdCBQcm9taXNlLmFsbCh3Lm1hcChzPT5wKHMpKSkse29rOiEwfX0pO2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLmRlbGV0ZS5tanMubWFwCg==", "chunks/routes/api/roles/_id_.patch.mjs": "aW1wb3J0e2MgYXMgcyxhbCBhcyBhLG8gYXMgdCxzIGFzIG8sZCBhcyBlLEYgYXMgaSxoIGFzIHIsZyBhcyBuLHIgYXMgbX1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2R9ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7dSBhcyBwLHYgYXMgdSx6IGFzIGN9ZnJvbSIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydHtyIGFzIGZ9ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnR7VSBhcyB3fWZyb20iLi4vLi4vLi4vXy9yb2xlLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtjb25zdCBnPWQoWyJ1c2VyOm1hbmFnZSJdLGFzeW5jKGQse3Nlc3Npb246Z30pPT57Y29uc3QgbD1nLmFjdGl2ZU9yZ2FuaXphdGlvbklkO2lmKCFsKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBvcmdhbml6YXRpb24ifSk7Y29uc3R7aWQ6aH09YXdhaXQgYShkLHQoe2lkOm8oKX0pLnBhcnNlKSxfPWF3YWl0IGUucXVlcnkucm9sZVRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6aShyKG4uaWQsaCkscihuLm9yZ2FuaXphdGlvbl9pZCxsKSl9KTtpZighXyl0aHJvdyBzKHtzdGF0dXNDb2RlOjQwNCxzdGF0dXNNZXNzYWdlOiJSb2xlIG5vdCBmb3VuZCJ9KTtjb25zdCBqPWF3YWl0IG0oZCx3LnBhcnNlKTtpZihqLnBlcm1pc3Npb25zKXtjb25zdCBhPWF3YWl0IHAoZy5pZCxsKSx0PXUoYSxqLnBlcm1pc3Npb25zKTtpZih0Lmxlbmd0aD4wKXRocm93IHMoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6YENhbm5vdCBncmFudDogJHt0LmpvaW4oIiwgIil9YH0pfWlmKF8uaXNfc3lzdGVtJiZ2b2lkIDAhPT1qLm5hbWUpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDMsc3RhdHVzTWVzc2FnZToiU3lzdGVtIHJvbGUgbmFtZSBjYW5ub3QgYmUgY2hhbmdlZCJ9KTtjb25zdFt2XT1hd2FpdCBlLnVwZGF0ZShuKS5zZXQoey4uLmosdXBkYXRlZF9hdDpuZXcgRGF0ZX0pLndoZXJlKHIobi5pZCxoKSkucmV0dXJuaW5nKCkseT1hd2FpdCBjKGgpO3JldHVybiBhd2FpdCBQcm9taXNlLmFsbCh5Lm1hcChzPT5mKHMpKSksdn0pO2V4cG9ydHtnIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1faWRfLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/selfhost/audit.get.mjs": "aW1wb3J0e2QgYXMgbyxwIGFzIHMsaCBhcyB0fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3MgYXMgaX1mcm9tIi4uLy4uLy4uL18vc2NoZW1hLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgYT1yKFsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdLGFzeW5jKHIse3Nlc3Npb246YX0pPT57Y29uc3QgZT1hLmFjdGl2ZU9yZ2FuaXphdGlvbklkO3JldHVybnthdWRpdHM6YXdhaXQgby5xdWVyeS5zZWxmaG9zdEF1ZGl0VGFibGUuZmluZE1hbnkoe3doZXJlOnQoaS5vcmdhbml6YXRpb25faWQsZSksb3JkZXJCeTpbcyhpLnN0YXJ0ZWRfYXQpXSxsaW1pdDo1MH0pfX0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1hdWRpdC5nZXQubWpzLm1hcAo=", "chunks/routes/api/selfhost/cf-accounts.post.mjs": "aW1wb3J0e3IgYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgcn1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHt2IGFzIHMsbCBhcyB0fWZyb20iLi4vLi4vLi4vXy9jbG91ZGZsYXJlLm1qcyI7aW1wb3J0e0MgYXMgbX1mcm9tIi4uLy4uLy4uL18vZGVwbG95Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgYT1yKFsic2VsZmhvc3Q6bWFuYWdlIl0sYXN5bmMgcj0+e2NvbnN0e3Rva2VuOmF9PWF3YWl0IG8ocixtLnBhcnNlKTthd2FpdCBzKGEpO3JldHVybnthY2NvdW50czphd2FpdCB0KGEpfX0pO2V4cG9ydHthIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1jZi1hY2NvdW50cy5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/selfhost/deploy.post.mjs": "aW1wb3J0e3IgYXMgdCxkIGFzIGUsaCBhcyBhLHEgYXMgcyxjIGFzIG8sayBhcyBpLHQgYXMgbix2IGFzIHIsdyBhcyBkfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBsfWZyb20iLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e2EgYXMgYyxiIGFzIHUscyBhcyBffWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7diBhcyBwLGwgYXMgZixwIGFzIHcsYSBhcyBtLGIgYXMgaCx1IGFzIGcsYyBhcyB5LGUgYXMgdixzIGFzIGt9ZnJvbSIuLi8uLi8uLi9fL2Nsb3VkZmxhcmUubWpzIjtpbXBvcnR7ZyBhcyBifWZyb20iLi4vLi4vLi4vXy9naXRodWIubWpzIjtpbXBvcnR7UyBhcyB4LGcgYXMgen1mcm9tIi4uLy4uLy4uL18vc2VjcmV0cy5tanMiO2ltcG9ydHtEfWZyb20iLi4vLi4vLi4vXy9kZXBsb3kubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBqPWwoWyJzZWxmaG9zdDptYW5hZ2UiXSxhc3luYyhsLHtzZXNzaW9uOmp9KT0+e3ZhciBDLE07Y29uc3QgUj1qLmFjdGl2ZU9yZ2FuaXphdGlvbklkLFQ9YXdhaXQgdChsLEQucGFyc2UpLHE9bmV3IERhdGUsUz1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6YShzLmlkLFIpfSk7aWYoIVN8fFMub3duZXJfaWQhPT1qLmlkKXRocm93IG8oe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6Ik9ubHkgdGhlIG9yZ2FuaXphdGlvbiBvd25lciBjYW4gZGVwbG95IGEgc2VsZi1ob3N0ZWQgaW5zdGFuY2UifSk7Y29uc3QgVT1gc2VsZmhvc3Q6ZGVwbG95LXJsOiR7Un1gO2lmKGF3YWl0IGkuaGFzKFUpKXRocm93IG8oe3N0YXR1c0NvZGU6NDI5LHN0YXR1c01lc3NhZ2U6IkRlcGxveSBhdHRlbXB0ZWQgdG9vIHJlY2VudGx5LiBXYWl0IDYwcy4ifSk7YXdhaXQgaS5zZXQoVSwxLHt0dGw6NjB9KTtjb25zdCAkPWF3YWl0IGUucXVlcnkuc2VsZmhvc3REZXBsb3ltZW50VGFibGUuZmluZEZpcnN0KHt3aGVyZTphKGMub3JnYW5pemF0aW9uX2lkLFIpfSk7aWYoImRlcGxveWluZyI9PT0obnVsbD09JD92b2lkIDA6JC5zdGF0dXMpJiYkLmRlcGxveWVkX2F0JiZEYXRlLm5vdygpLSQuZGVwbG95ZWRfYXQuZ2V0VGltZSgpPDNlNSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwOSxzdGF0dXNNZXNzYWdlOiJBbm90aGVyIGRlcGxveSBpcyBhbHJlYWR5IGluIHByb2dyZXNzIn0pO2xldCBGO2lmKFQudG9rZW4pRj1ULnRva2VuO2Vsc2V7aWYoIShudWxsPT0kP3ZvaWQgMDokLmNmX3Rva2VuX2NpcGhlcnRleHQpfHwhKG51bGw9PSQ/dm9pZCAwOiQuY2ZfdG9rZW5faXYpKXRocm93IG8oe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIHRva2VuIHByb3ZpZGVkIGFuZCBubyBzdG9yZWQgdG9rZW4gZm91bmQifSk7Rj1hd2FpdCBuKHtjaXBoZXJ0ZXh0OiQuY2ZfdG9rZW5fY2lwaGVydGV4dCxpdjokLmNmX3Rva2VuX2l2fSl9Y29uc3QgST0obnVsbD09JD92b2lkIDA6JC5kZXBsb3llZF92ZXJzaW9uKT8icmVkZXBsb3kiOiJkZXBsb3kiO2F3YWl0IGUuaW5zZXJ0KGMpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOlIsc3RhdHVzOiJkZXBsb3lpbmciLGRlcGxveWVkX2F0OnF9KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpjLm9yZ2FuaXphdGlvbl9pZCxzZXQ6e3N0YXR1czoiZGVwbG95aW5nIixsYXN0X2Vycm9yOm51bGwsZGVwbG95ZWRfYXQ6cX19KTtsZXQgTj1udWxsO3RyeXtjb25zdCB0PWF3YWl0IHAoRik7aWYoVC5hY2NvdW50X2lkKXtpZighKGF3YWl0IGYoRikpLnNvbWUodD0+dC5pZD09PVQuYWNjb3VudF9pZCkpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiU2VsZWN0ZWQgYWNjb3VudF9pZCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBwcm92aWRlZCB0b2tlbiJ9KTtOPVQuYWNjb3VudF9pZH1lbHNlIGlmKG51bGw9PSQ/dm9pZCAwOiQuY2ZfYWNjb3VudF9pZClOPSQuY2ZfYWNjb3VudF9pZDtlbHNle2NvbnN0IHQ9YXdhaXQgZihGKTtpZih0Lmxlbmd0aD4xKXRocm93IG8oe3N0YXR1c0NvZGU6NDA5LHN0YXR1c01lc3NhZ2U6Ik11bHRpcGxlIENsb3VkZmxhcmUgYWNjb3VudHMgYXZhaWxhYmxlIOKAlCBjaG9vc2Ugb25lIGJlZm9yZSBkZXBsb3lpbmciLGRhdGE6e2NvZGU6Im11bHRpcGxlX2FjY291bnRzIixhY2NvdW50czp0fX0pO049dFswXS5pZH1jb25zdCBzPWF3YWl0IHcoRixOKTtpZihzLmxlbmd0aCl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOmBUb2tlbiBtaXNzaW5nIHBlcm1pc3Npb25zOiAke3Muam9pbigiLCAiKX1gfSk7Y29uc3QgaT1hd2FpdCBtKEYsTiksbD1yKCkuZ2l0aHViUmVsZWFzZVJlcG87aWYoIWwpdGhyb3cgbyh7c3RhdHVzQ29kZTo1MDAsc3RhdHVzTWVzc2FnZToiZ2l0aHViUmVsZWFzZVJlcG8gcnVudGltZSBjb25maWcgbm90IHNldCJ9KTtjb25zdHt2ZXJzaW9uOkQsYnVuZGxlOkN9PWF3YWl0IGIobCk7YXdhaXQgaChGLE4saS5kYklkLEMubWlncmF0aW9ucyk7Y29uc3QgTT1gbnV4dC10ZW1wbGF0ZS0ke1Iuc2xpY2UoMCw4KX1gLnNsaWNlKDAsNjMpLFM9Qy5hc3NldHM/YXdhaXQgZyhGLE4sTSxDLmFzc2V0cyk6bnVsbDthd2FpdCB5KEYsTixNLEMsaSxELFMpO2NvbnN0IFU9YXdhaXQgdihGLE4sTSksTz17d29ya2Vyc0RldlVybDpVLHJlbGVhc2VSZXBvOmx9O2Zvcihjb25zdCB0IG9mIHgpe2lmKCF0LmF1dG8pY29udGludWU7Y29uc3QgYT16KHQsTyk7aWYoIWEpY29udGludWU7Y29uc3Qgcz1hd2FpdCBkKGEpO2F3YWl0IGUuaW5zZXJ0KHUpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOlIsa2V5OnQua2V5LGNpcGhlcnRleHQ6cy5jaXBoZXJ0ZXh0LGl2OnMuaXZ9KS5vbkNvbmZsaWN0RG9Ob3RoaW5nKHt0YXJnZXQ6W3Uub3JnYW5pemF0aW9uX2lkLHUua2V5XX0pfWNvbnN0IEE9YXdhaXQgZS5xdWVyeS5zZWxmaG9zdERlcGxveW1lbnRTZWNyZXRUYWJsZS5maW5kTWFueSh7d2hlcmU6YSh1Lm9yZ2FuaXphdGlvbl9pZCxSKX0pO2Zvcihjb25zdCB0IG9mIEEpe2NvbnN0IGU9eC5maW5kKGU9PmUua2V5PT09dC5rZXkpO2lmKCFlKWNvbnRpbnVlO2NvbnN0IGE9YXdhaXQgbih7Y2lwaGVydGV4dDp0LmNpcGhlcnRleHQsaXY6dC5pdn0pO2F3YWl0IGsoRixOLE0sdC5rZXksYSxlLnR5cGUpfWNvbnN0IFc9YXdhaXQgZChGKSxCPXQuZXhwaXJlc19vbj9uZXcgRGF0ZSh0LmV4cGlyZXNfb24pOm51bGw7cmV0dXJuIGF3YWl0IGUudXBkYXRlKGMpLnNldCh7Y2ZfYWNjb3VudF9pZDpOLGNmX3NjcmlwdF9uYW1lOk0sd29ya2Vyc19kZXZfdXJsOlUsZGVwbG95ZWRfdmVyc2lvbjpELGRlcGxveWVkX2F0Om5ldyBEYXRlLHN0YXR1czoiZGVwbG95ZWQiLGNmX3Rva2VuX2NpcGhlcnRleHQ6Vy5jaXBoZXJ0ZXh0LGNmX3Rva2VuX2l2OlcuaXYsY2ZfdG9rZW5fZXhwaXJlc19hdDpudWxsIT1CP0I6dm9pZCAwLGxhc3RfZXJyb3I6bnVsbH0pLndoZXJlKGEoYy5vcmdhbml6YXRpb25faWQsUikpLGF3YWl0IGUuaW5zZXJ0KF8pLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOlIsYWN0b3JfdXNlcl9pZDpqLmlkLGFjdGlvbjpJLHN1Y2Nlc3M6ITAsY2ZfYWNjb3VudF9pZDpOLHN0YXJ0ZWRfYXQ6cSxmaW5pc2hlZF9hdDpuZXcgRGF0ZX0pLHt1cmw6VSx2ZXJzaW9uOkR9fWNhdGNoKHQpe2NvbnN0IHM9KG51bGwhPShNPW51bGwhPShDPW51bGw9PXQ/dm9pZCAwOnQuc3RhdHVzTWVzc2FnZSk/QzpudWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpP006IlVua25vd24gZXJyb3IiKS5zbGljZSgwLDUwMCk7dGhyb3cgYXdhaXQgZS51cGRhdGUoYykuc2V0KHtzdGF0dXM6ImZhaWxlZCIsbGFzdF9lcnJvcjpzfSkud2hlcmUoYShjLm9yZ2FuaXphdGlvbl9pZCxSKSksYXdhaXQgZS5pbnNlcnQoXykudmFsdWVzKHtvcmdhbml6YXRpb25faWQ6UixhY3Rvcl91c2VyX2lkOmouaWQsYWN0aW9uOkksc3VjY2VzczohMSxjZl9hY2NvdW50X2lkOk4sZXJyb3JfbWVzc2FnZTpzLHN0YXJ0ZWRfYXQ6cSxmaW5pc2hlZF9hdDpuZXcgRGF0ZX0pLHR9fSk7ZXhwb3J0e2ogYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlcGxveS5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/selfhost/disconnect.post.mjs": "aW1wb3J0e2QgYXMgdCxoIGFzIGV9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHN9ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7YSBhcyBvLGIgYXMgYSxzIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYS5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG49cyhbInNlbGZob3N0Om1hbmFnZSJdLGFzeW5jKHMse3Nlc3Npb246bn0pPT57Y29uc3Qgcj1uLmFjdGl2ZU9yZ2FuaXphdGlvbklkLG09bmV3IERhdGU7cmV0dXJuIGF3YWl0IHQudXBkYXRlKG8pLnNldCh7Y2ZfdG9rZW5fY2lwaGVydGV4dDpudWxsLGNmX3Rva2VuX2l2Om51bGwsY2ZfdG9rZW5fZXhwaXJlc19hdDpudWxsLHN0YXR1czoiaWRsZSJ9KS53aGVyZShlKG8ub3JnYW5pemF0aW9uX2lkLHIpKSxhd2FpdCB0LmRlbGV0ZShhKS53aGVyZShlKGEub3JnYW5pemF0aW9uX2lkLHIpKSxhd2FpdCB0Lmluc2VydChpKS52YWx1ZXMoe29yZ2FuaXphdGlvbl9pZDpyLGFjdG9yX3VzZXJfaWQ6bi5pZCxhY3Rpb246ImRpc2Nvbm5lY3QiLHN1Y2Nlc3M6ITAsc3RhcnRlZF9hdDptLGZpbmlzaGVkX2F0Om5ldyBEYXRlfSkse3N1Y2Nlc3M6ITB9fSk7ZXhwb3J0e24gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRpc2Nvbm5lY3QucG9zdC5tanMubWFwCg==", "chunks/routes/api/selfhost/secrets.get.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIG99ZnJvbSIuLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7YiBhcyBzfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7UyBhcyByfWZyb20iLi4vLi4vLi4vXy9zZWNyZXRzLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgYT1vKFsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdLGFzeW5jKG8se3Nlc3Npb246YX0pPT57Y29uc3QgaT1hLmFjdGl2ZU9yZ2FuaXphdGlvbklkLG09YXdhaXQgZS5xdWVyeS5zZWxmaG9zdERlcGxveW1lbnRTZWNyZXRUYWJsZS5maW5kTWFueSh7d2hlcmU6dChzLm9yZ2FuaXphdGlvbl9pZCxpKSxjb2x1bW5zOntrZXk6ITAsdXBkYXRlZF9hdDohMH19KSxuPW5ldyBNYXAobS5tYXAoZT0+W2Uua2V5LGUudXBkYXRlZF9hdF0pKTtyZXR1cm57aXRlbXM6ci5tYXAoZT0+e3ZhciB0O3JldHVybntrZXk6ZS5rZXksbGFiZWw6ZS5sYWJlbCxkZXNjcmlwdGlvbjplLmRlc2NyaXB0aW9uLGNhdGVnb3J5OmUuY2F0ZWdvcnksdHlwZTplLnR5cGUsaXNBdXRvOiEhZS5hdXRvLGlzU2V0Om4uaGFzKGUua2V5KSx1cGRhdGVkQXQ6bnVsbCE9KHQ9bi5nZXQoZS5rZXkpKT90Om51bGx9fSl9fSk7ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlY3JldHMuZ2V0Lm1qcy5tYXAK", "chunks/routes/api/selfhost/secrets.patch.mjs": "aW1wb3J0e3IgYXMgdCxkIGFzIGUsaCBhcyBvLHEgYXMgcyxjIGFzIGEsdyBhcyBpLHQgYXMgcn1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgbn1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtiIGFzIGMsYSBhcyBkfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7cyBhcyBtfWZyb20iLi4vLi4vLi4vXy9jbG91ZGZsYXJlLm1qcyI7aW1wb3J0e2kgYXMgcCxmfWZyb20iLi4vLi4vLi4vXy9zZWNyZXRzLm1qcyI7aW1wb3J0e1AgYXMgbH1mcm9tIi4uLy4uLy4uL18vc2VjcmV0Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgXz1uKFsic2VsZmhvc3Q6bWFuYWdlIl0sYXN5bmMobix7c2Vzc2lvbjpffSk9Pntjb25zdCB1PV8uYWN0aXZlT3JnYW5pemF0aW9uSWQsaD1hd2FpdCB0KG4sbC5wYXJzZSksdz1hd2FpdCBlLnF1ZXJ5Lm9yZ2FuaXphdGlvblRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6byhzLmlkLHUpfSk7aWYoIXd8fHcub3duZXJfaWQhPT1fLmlkKXRocm93IGEoe3N0YXR1c0NvZGU6NDAzLHN0YXR1c01lc3NhZ2U6Ik9ubHkgdGhlIG9yZ2FuaXphdGlvbiBvd25lciBjYW4gbW9kaWZ5IGRlcGxveW1lbnQgc2VjcmV0cyJ9KTtjb25zdCB5PWgudXBkYXRlcy5maWx0ZXIodD0+IXAodC5rZXkpKS5tYXAodD0+dC5rZXkpO2lmKHkubGVuZ3RoKXRocm93IGEoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6YFVua25vd24gc2VjcmV0IGtleShzKTogJHt5LmpvaW4oIiwgIil9YH0pO2Zvcihjb25zdCB0IG9mIGgudXBkYXRlcyl7Y29uc3Qgbz1hd2FpdCBpKHQudmFsdWUpO2F3YWl0IGUuaW5zZXJ0KGMpLnZhbHVlcyh7b3JnYW5pemF0aW9uX2lkOnUsa2V5OnQua2V5LGNpcGhlcnRleHQ6by5jaXBoZXJ0ZXh0LGl2Om8uaXZ9KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbYy5vcmdhbml6YXRpb25faWQsYy5rZXldLHNldDp7Y2lwaGVydGV4dDpvLmNpcGhlcnRleHQsaXY6by5pdix1cGRhdGVkX2F0Om5ldyBEYXRlfX0pfWNvbnN0IHY9YXdhaXQgZS5xdWVyeS5zZWxmaG9zdERlcGxveW1lbnRUYWJsZS5maW5kRmlyc3Qoe3doZXJlOm8oZC5vcmdhbml6YXRpb25faWQsdSl9KTtsZXQgaz0wO2lmKChudWxsPT12P3ZvaWQgMDp2LmNmX2FjY291bnRfaWQpJiYobnVsbD09dj92b2lkIDA6di5jZl9zY3JpcHRfbmFtZSkmJihudWxsPT12P3ZvaWQgMDp2LmNmX3Rva2VuX2NpcGhlcnRleHQpJiYobnVsbD09dj92b2lkIDA6di5jZl90b2tlbl9pdikpe2NvbnN0IHQ9YXdhaXQgcih7Y2lwaGVydGV4dDp2LmNmX3Rva2VuX2NpcGhlcnRleHQsaXY6di5jZl90b2tlbl9pdn0pO2Zvcihjb25zdCBlIG9mIGgudXBkYXRlcyl7Y29uc3Qgbz1mKGUua2V5KTtvJiYoYXdhaXQgbSh0LHYuY2ZfYWNjb3VudF9pZCx2LmNmX3NjcmlwdF9uYW1lLGUua2V5LGUudmFsdWUsby50eXBlKSxrKyspfX1yZXR1cm57dXBkYXRlZDpoLnVwZGF0ZXMubGVuZ3RoLHB1c2hlZFRvQ2xvdWRmbGFyZTprfX0pO2V4cG9ydHtfIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zZWNyZXRzLnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/selfhost/status.get.mjs": "aW1wb3J0e2QgYXMgZSxoIGFzIG8sdiBhcyBzLHggYXMgdH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgYX1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHthIGFzIHJ9ZnJvbSIuLi8uLi8uLi9fL3NjaGVtYS5tanMiO2ltcG9ydHthIGFzIGl9ZnJvbSIuLi8uLi8uLi9fL2dpdGh1Yi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG49YShbInNlbGZob3N0OnJlYWQiLCJzZWxmaG9zdDptYW5hZ2UiXSxhc3luYyhhLHtzZXNzaW9uOm59KT0+e2NvbnN0IG09bi5hY3RpdmVPcmdhbml6YXRpb25JZCxsPWF3YWl0IGUucXVlcnkuc2VsZmhvc3REZXBsb3ltZW50VGFibGUuZmluZEZpcnN0KHt3aGVyZTpvKHIub3JnYW5pemF0aW9uX2lkLG0pfSksZD1zKCkuZ2l0aHViUmVsZWFzZVJlcG8scD1kP2F3YWl0IHQoInNlbGZob3N0OmxhdGVzdC12ZXJzaW9uIiwoKT0+aShkKSwzNjAwKTpudWxsO2lmKCFsKXJldHVybntzdGF0dXM6ImlkbGUiLGxhdGVzdF92ZXJzaW9uOnAsdXBkYXRlX2F2YWlsYWJsZTohMSxoYXNfc3RvcmVkX3Rva2VuOiExfTtjb25zdHtjZl90b2tlbl9jaXBoZXJ0ZXh0Ol8sY2ZfdG9rZW5faXY6ZiwuLi5ofT1sO3JldHVybnsuLi5oLGxhdGVzdF92ZXJzaW9uOnAsdXBkYXRlX2F2YWlsYWJsZTohKCFwfHwhbC5kZXBsb3llZF92ZXJzaW9ufHxwPT09bC5kZXBsb3llZF92ZXJzaW9uKSxoYXNfc3RvcmVkX3Rva2VuOiEoIV98fCFmKX19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdHVzLmdldC5tanMubWFwCg==", "chunks/routes/api/selfhost/test-email.post.mjs": "aW1wb3J0e3IgYXMgZSxkIGFzIG8saCBhcyByLGMgYXMgc31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHthfWZyb20iLi4vLi4vLi4vXy9zY2hlbWEubWpzIjtpbXBvcnR7VCBhcyBpfWZyb20iLi4vLi4vLi4vXy9zZWNyZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBuPXQoWyJzZWxmaG9zdDptYW5hZ2UiXSxhc3luYyh0LHtzZXNzaW9uOm59KT0+e2F3YWl0IGUodCxpLnBhcnNlKTtjb25zdCBtPW4uYWN0aXZlT3JnYW5pemF0aW9uSWQsZD1hd2FpdCBvLnF1ZXJ5LnNlbGZob3N0RGVwbG95bWVudFRhYmxlLmZpbmRGaXJzdCh7d2hlcmU6cihhLm9yZ2FuaXphdGlvbl9pZCxtKX0pO2lmKCEobnVsbD09ZD92b2lkIDA6ZC53b3JrZXJzX2Rldl91cmwpKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik5vIGFjdGl2ZSBkZXBsb3ltZW50IGZvdW5kIn0pO2NvbnN0IGw9YXdhaXQgZmV0Y2goZC53b3JrZXJzX2Rldl91cmwse21ldGhvZDoiR0VUIixyZWRpcmVjdDoibWFudWFsIn0pO3JldHVybntyZWFjaGFibGU6bC5va3x8MzAyPT09bC5zdGF0dXMsc3RhdHVzOmwuc3RhdHVzLHdvcmtlclVybDpkLndvcmtlcnNfZGV2X3VybCxub3RlOiJUbyB2ZXJpZnkgU01UUCBlbmQtdG8tZW5kLCBzaWduIHVwIG9uIHRoZSBkZXBsb3llZCBVUkwgYWJvdmUgYW5kIGNvbmZpcm0gdGhlIHdlbGNvbWUvdmVyaWZpY2F0aW9uIGVtYWlsIGFycml2ZXMuIn19KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGVzdC1lbWFpbC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/session/refresh.post.mjs": "aW1wb3J0e0kgYXMgcyxKIGFzIG8sYyBhcyB0LGQgYXMgYSxoIGFzIGksdSBhcyByfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e2kgYXMgbixkfWZyb20iLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7YiBhcyBtLHcgYXMgcH1mcm9tIi4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtjb25zdCB1PWUoYXN5bmMoZSx1KT0+e2NvbnN0IGY9cyhlLCJzZXNzaW9uaWQiKXx8byhlLCJ4LXNlc3Npb24taWQiKTtpZighZil0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMSxzdGF0dXNNZXNzYWdlOiJVbmF1dGhvcml6ZWQifSk7Y29uc3QgYz1hd2FpdCBhLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkoci5pZCx1LmlkKX0pO2lmKCFjKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6IlVzZXIgbm90IGZvdW5kIn0pO2xldCB3PXUuYWN0aXZlT3JnYW5pemF0aW9uSWQ7dyYmIWF3YWl0IG4odS5pZCx3KSYmKHc9YXdhaXQgZCh1LmlkKSk7Y29uc3QgaD1hd2FpdCBtKGMse3Byb3ZpZGVyOnUucHJvdmlkZXIsYWN0aXZlT3JnYW5pemF0aW9uSWQ6dyxpbXBlcnNvbmF0b3I6dS5pbXBlcnNvbmF0b3J9KTtyZXR1cm4gYXdhaXQgcChmLGgpLGh9KTtleHBvcnR7dSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVmcmVzaC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/support/index.get.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtUIGFzIHIsZCBhcyBpfWZyb20iLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBzPXQoYXN5bmModCxzKT0+e2NvbnN0e29mZnNldDptLGxpbWl0OmV9PWF3YWl0IG8odCxyLnBhcnNlKTtyZXR1cm4gaShzLmlkLG0sZSl9KTtleHBvcnR7cyBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0Lm1qcy5tYXAK", "chunks/routes/api/support/index.post.mjs": "aW1wb3J0e2MgYXMgbyxyIGFzIHR9ZnJvbSIuLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHJ9ZnJvbSIuLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7QyBhcyBzLGUgYXMgaX1mcm9tIi4uLy4uLy4uL18vdGlja2V0Lm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3QgZT1yKGFzeW5jKHIsZSk9Pntjb25zdCBhPXIuY29udGV4dC5hY3RpdmVPcmdhbml6YXRpb25JZDtpZighYSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBhY3RpdmUgb3JnYW5pemF0aW9uIn0pO2NvbnN0IG49YXdhaXQgdChyLHMucGFyc2UpO3JldHVybiBpKHt1c2VySWQ6ZS5pZCxvcmdhbml6YXRpb25JZDphLGtpbmQ6bi5raW5kLGNhdGVnb3J5Om4uY2F0ZWdvcnksc3ViamVjdDpuLnN1YmplY3QsYm9keTpuLmJvZHl9KX0pO2V4cG9ydHtlIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/support/tickets/_id/messages.post.mjs": "aW1wb3J0e20gYXMgbyxjIGFzIHMsciBhcyB0fWZyb20iLi4vLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e1AgYXMgaSxjIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL25vdGlmaWNhdGlvbi5tanMiO2NvbnN0IGU9cihhc3luYyhyLGUpPT57Y29uc3QgYT1vKHIsImlkIik7aWYoIWEpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpZCJ9KTtjb25zdHtib2R5Om59PWF3YWl0IHQocixpLnBhcnNlKTtyZXR1cm4gbShlLmlkLGEsbil9KTtleHBvcnR7ZSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVzc2FnZXMucG9zdC5tanMubWFwCg==", "chunks/routes/api/support/tickets/index.get.mjs": "aW1wb3J0e20gYXMgbyxjIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnR7YiBhcyBpfWZyb20iLi4vLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCByPXQoYXN5bmModCxyKT0+e2NvbnN0IG09byh0LCJpZCIpO2lmKCFtKXRocm93IHMoe3N0YXR1c0NvZGU6NDAwLHN0YXR1c01lc3NhZ2U6Ik1pc3NpbmcgaWQifSk7cmV0dXJuIGkoci5pZCxtKX0pO2V4cG9ydHtyIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQubWpzLm1hcAo=", "chunks/routes/api/system/dispatch/options.get.mjs": "aW1wb3J0e2QgYXMgb31mcm9tIi4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtnIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL2Rpc3BhdGNoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2NvbnN0IHI9byhbInN5c3RlbTptYW5hZ2UiXSwoKT0+bSgpKTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3B0aW9ucy5nZXQubWpzLm1hcAo=", "chunks/routes/api/system/dispatch/preview.post.mjs": "aW1wb3J0e3IgYXMgb31mcm9tIi4uLy4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgdH1mcm9tIi4uLy4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtyIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9fL2Rpc3BhdGNoLm1qcyI7aW1wb3J0e0QgYXMgcn1mcm9tIi4uLy4uLy4uLy4uL18vZGlzcGF0Y2gyLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL2F1dGgubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9zZXNzaW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2NvbnN0IG09dChbInN5c3RlbTptYW5hZ2UiXSxhc3luYyB0PT57Y29uc3QgbT1hd2FpdCBvKHQsci5wYXJzZSkse2VuYWJsZWQ6ZSxza2lwcGVkQ291bnQ6YSx0b3RhbDppfT1hd2FpdCBzKG0pO3JldHVybnt0b3RhbDppLGVuYWJsZWQ6ZS5sZW5ndGgsc2tpcHBlZDphfX0pO2V4cG9ydHttIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1wcmV2aWV3LnBvc3QubWpzLm1hcAo=", "chunks/routes/api/system/dispatch/send.post.mjs": "aW1wb3J0e3IgYXMgdCxrIGFzIHMsYyBhcyBlfWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBvfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e3MgYXMgYX1mcm9tIi4uLy4uLy4uLy4uL18vdXNlci1lbWFpbC5tanMiO2ltcG9ydHtyIGFzIGksYyBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9kaXNwYXRjaC5tanMiO2ltcG9ydHthIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi9fL2Rpc3BhdGNoMi5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IG49byhbInN5c3RlbTptYW5hZ2UiXSxhc3luYyhvLHtzZXNzaW9uOm59KT0+e2NvbnN0e2ZpbHRlcjpsLHN1YmplY3Q6cCxib2R5OmN9PWF3YWl0IHQobyxtLnBhcnNlKSxkPWByYXRlbGltaXQ6ZGlzcGF0Y2gtc2VuZDoke24uaWR9YCxmPWF3YWl0IHMuZ2V0KGQpfHwwO2lmKGY+PTEwKXRocm93IGUoe3N0YXR1c0NvZGU6NDI5LHN0YXR1c01lc3NhZ2U6IkRpc3BhdGNoIGxpbWl0IHJlYWNoZWQuIFRyeSBhZ2FpbiBsYXRlci4ifSk7Y29uc3R7ZW5hYmxlZDp1LHNraXBwZWRDb3VudDpoLHRvdGFsOnd9PWF3YWl0IGkobCk7aWYoMD09PXcpdGhyb3cgZSh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTm8gcmVjaXBpZW50cyBtYXRjaCB0aGlzIGZpbHRlci4ifSk7aWYodS5sZW5ndGg+NTAwKXRocm93IGUoe3N0YXR1c0NvZGU6NDEzLHN0YXR1c01lc3NhZ2U6YFRvbyBtYW55IHJlY2lwaWVudHMgKCR7dS5sZW5ndGh9KS4gTmFycm93IHRoZSBmaWx0ZXIgdG8gNTAwIG9yIGZld2VyLmB9KTthd2FpdCBzLnNldChkLGYrMSx7dHRsOjM2MDB9KTtjb25zdCBnPXIocCxjKTtsZXQgaj0wLF89MDtmb3IobGV0IHQ9MDt0PHUubGVuZ3RoO3QrPTIwKXtjb25zdCBzPXUuc2xpY2UodCx0KzIwKSxlPWF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChzLm1hcCh0PT5hKHQse3N1YmplY3Q6cCxodG1sOmd9KSkpO2Zvcihjb25zdCB0IG9mIGUpImZ1bGZpbGxlZCI9PT10LnN0YXR1cyYmdC52YWx1ZS5zZW50P2orKzpfKyt9cmV0dXJue3NlbnQ6aixmYWlsZWQ6Xyxza2lwcGVkOmgsdG90YWw6d319KTtleHBvcnR7biBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VuZC5wb3N0Lm1qcy5tYXAK", "chunks/routes/api/system/index.get.mjs": "aW1wb3J0e24gYXMgb31mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgc31mcm9tIi4uLy4uLy4uL18vY2FzbC5tanMiO2ltcG9ydHtBIGFzIHQsbCBhcyBpfWZyb20iLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3Qgcj1zKFsic3VwcG9ydDptYW5hZ2UiXSxhc3luYyhzLHtzZXNzaW9uOnJ9KT0+YXN5bmMgZnVuY3Rpb24ocyxyKXtjb25zdCBtPWF3YWl0IG8ocyx0LnBhcnNlKTtyZXR1cm4gaSh7YWdlbnRJZDpyLG9mZnNldDptLm9mZnNldCxsaW1pdDptLmxpbWl0LHN0YXR1czptLnN0YXR1cyxraW5kOm0ua2luZCxtaW5lT25seTptLm1pbmVPbmx5LHNlYXJjaDptLnNlYXJjaH0pfShzLHIuaWQpKTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZ2V0Lm1qcy5tYXAK", "chunks/routes/api/system/tickets/_id/messages.post.mjs": "aW1wb3J0e20gYXMgcyxjIGFzIG8sciBhcyB0fWZyb20iLi4vLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e1AgYXMgaSxhIGFzIG19ZnJvbSIuLi8uLi8uLi8uLi8uLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBhPXIoWyJzdXBwb3J0Om1hbmFnZSJdLGFzeW5jKHIse3Nlc3Npb246YX0pPT57Y29uc3QgZT1zKHIsImlkIik7aWYoIWUpdGhyb3cgbyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpZCJ9KTtjb25zdHtib2R5Om59PWF3YWl0IHQocixpLnBhcnNlKTtyZXR1cm4gbShhLmlkLGUsbil9KTtleHBvcnR7YSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVzc2FnZXMucG9zdC5tanMubWFwCg==", "chunks/routes/api/system/tickets/index.get.mjs": "aW1wb3J0e20gYXMgbyxjIGFzIHN9ZnJvbSIuLi8uLi8uLi8uLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtkIGFzIHR9ZnJvbSIuLi8uLi8uLi8uLi9fL2Nhc2wubWpzIjtpbXBvcnR7ZyBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy90aWNrZXQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3QgaT10KFsic3VwcG9ydDptYW5hZ2UiXSxhc3luYyB0PT57Y29uc3QgaT1vKHQsImlkIik7aWYoIWkpdGhyb3cgcyh7c3RhdHVzQ29kZTo0MDAsc3RhdHVzTWVzc2FnZToiTWlzc2luZyBpZCJ9KTtyZXR1cm4gcihpKX0pO2V4cG9ydHtpIGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5nZXQubWpzLm1hcAo=", "chunks/routes/api/system/tickets/index.patch.mjs": "aW1wb3J0e20gYXMgcyxjIGFzIG8sciBhcyB0fWZyb20iLi4vLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyByfWZyb20iLi4vLi4vLi4vLi4vXy9jYXNsLm1qcyI7aW1wb3J0e1UgYXMgaSx1IGFzIGF9ZnJvbSIuLi8uLi8uLi8uLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Ii4uLy4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi8uLi9fL3VzZXItZW1haWwubWpzIjtpbXBvcnQiLi4vLi4vLi4vLi4vXy9ub3RpZmljYXRpb24ubWpzIjtjb25zdCBtPXIoWyJzdXBwb3J0Om1hbmFnZSJdLGFzeW5jIHI9Pntjb25zdCBtPXMociwiaWQiKTtpZighbSl0aHJvdyBvKHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJNaXNzaW5nIGlkIn0pO3JldHVybiBhc3luYyBmdW5jdGlvbihzLG8pe2NvbnN0IHI9YXdhaXQgdChzLGkucGFyc2UpO3JldHVybiBhKG8se3N0YXR1czpyLnN0YXR1cyxhc3NpZ25lZFRvOnIuYXNzaWduZWRUb30pfShyLG0pfSk7ZXhwb3J0e20gYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LnBhdGNoLm1qcy5tYXAK", "chunks/routes/api/user/avatar.post.mjs": "aW1wb3J0e2FuIGFzIGEsYyBhcyB0LGFvIGFzIHMsYXAgYXMgZSxkIGFzIG8saCBhcyBpLHUgYXMgcixJIGFzIG4sSiBhcyBkfWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBtfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0e3B9ZnJvbSIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vb3JnYW5pemF0aW9uLm1qcyI7Y29uc3QgdT1tKGFzeW5jKG0sdSk9Pnt2YXIgbDtjb25zdCBjPWF3YWl0IGEobSksdj1udWxsPT1jP3ZvaWQgMDpjLmZpbmQoYT0+ImZpbGUiPT09YS5uYW1lJiZhLmZpbGVuYW1lKTtpZighKG51bGw9PShsPW51bGw9PXY/dm9pZCAwOnYuZGF0YSk/dm9pZCAwOmwubGVuZ3RoKSl0aHJvdyB0KHtzdGF0dXNDb2RlOjQwMCxzdGF0dXNNZXNzYWdlOiJObyBmaWxlIHVwbG9hZGVkIn0pO2lmKHYuZGF0YS5sZW5ndGg+MjA5NzE1Mil0aHJvdyB0KHtzdGF0dXNDb2RlOjQxMyxzdGF0dXNNZXNzYWdlOiJBdmF0YXIgbXVzdCBiZSDiiaQgMk1CIn0pO2NvbnN0IGY9cyh2LmRhdGEpO2lmKCFmKXRocm93IHQoe3N0YXR1c0NvZGU6NDE1LHN0YXR1c01lc3NhZ2U6IlVuc3VwcG9ydGVkIGltYWdlIHR5cGUgKFBORy9KUEVHL0dJRi9XRUJQIG9ubHkpIn0pO2NvbnN0IGc9YGF2YXRhcnMvJHt1LmlkfS8ke2NyeXB0by5yYW5kb21VVUlEKCl9LiR7Zi5leHR9YDthd2FpdCBlLnB1dChnLHYuZGF0YSx7Y29udGVudFR5cGU6Zi50eXBlfSk7Y29uc3QgaD1hd2FpdCBvLnF1ZXJ5LnVzZXJUYWJsZS5maW5kRmlyc3Qoe3doZXJlOmkoci5pZCx1LmlkKSxjb2x1bW5zOnthdmF0YXI6ITB9fSksW3ddPWF3YWl0IG8udXBkYXRlKHIpLnNldCh7YXZhdGFyOmAvaW1hZ2VzLyR7Z31gfSkud2hlcmUoaShyLmlkLHUuaWQpKS5yZXR1cm5pbmcoKSx5PW51bGw9PWg/dm9pZCAwOmguYXZhdGFyOyhudWxsPT15P3ZvaWQgMDp5LnN0YXJ0c1dpdGgoIi9pbWFnZXMvYXZhdGFycy8iKSkmJmF3YWl0IGUuZGVsKHkucmVwbGFjZSgiL2ltYWdlcy8iLCIiKSkuY2F0Y2goKCk9Pnt9KTtjb25zdCBJPW4obSwic2Vzc2lvbmlkIil8fGQobSwieC1zZXNzaW9uLWlkIik7cmV0dXJuIEkmJncmJmF3YWl0IHAobSx3LHtwcm92aWRlcjp1LnByb3ZpZGVyLGFjdGl2ZU9yZ2FuaXphdGlvbklkOnUuYWN0aXZlT3JnYW5pemF0aW9uSWQsaW1wZXJzb25hdG9yOnUuaW1wZXJzb25hdG9yLHNlc3Npb25JZDpJfSkse2F2YXRhcjp3LmF2YXRhcn19KTtleHBvcnR7dSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXZhdGFyLnBvc3QubWpzLm1hcAo=", "chunks/routes/api/user/notification.get.mjs": "aW1wb3J0e2QgYXMgbyx1IGFzIHIsaCBhcyB0fWZyb20iLi4vLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7ZCBhcyBlfWZyb20iLi4vLi4vLi4vXy9hdXRoLm1qcyI7aW1wb3J0Im5vZGU6YnVmZmVyIjtpbXBvcnQibm9kZTpwcm9jZXNzIjtpbXBvcnQiY2xvdWRmbGFyZTp3b3JrZXJzIjtpbXBvcnQibm9kZTpldmVudHMiO2ltcG9ydCJub2RlOnRpbWVycyI7aW1wb3J0Im5vZGU6YXN5bmNfaG9va3MiO2ltcG9ydCIuLi8uLi8uLi9fL3Nlc3Npb24ubWpzIjtpbXBvcnQiLi4vLi4vLi4vXy9vcmdhbml6YXRpb24ubWpzIjtjb25zdCBzPXtlbWFpbDohMCxwcm9kdWN0X3VwZGF0ZXM6ITAsd2Vla2x5X2RpZ2VzdDohMSxpbXBvcnRhbnRfdXBkYXRlczohMH0saT1lKGFzeW5jKGUsaSk9Pnt2YXIgbTtjb25zdFtuXT1hd2FpdCBvLnNlbGVjdCh7cHJlZnM6ci5ub3RpZmljYXRpb25fcHJlZnN9KS5mcm9tKHIpLndoZXJlKHQoci5pZCxpLmlkKSkubGltaXQoMSk7cmV0dXJuey4uLnMsLi4ubnVsbCE9KG09bnVsbD09bj92b2lkIDA6bi5wcmVmcyk/bTp7fX19KTtleHBvcnR7aSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm90aWZpY2F0aW9uLmdldC5tanMubWFwCg==", "chunks/routes/api/user/notification.patch.mjs": "aW1wb3J0e3IgYXMgbyxkIGFzIHIsdSBhcyBzLGggYXMgdH1mcm9tIi4uLy4uLy4uL25pdHJvL25pdHJvLm1qcyI7aW1wb3J0e2QgYXMgaX1mcm9tIi4uLy4uLy4uL18vYXV0aC5tanMiO2ltcG9ydHtOIGFzIGV9ZnJvbSIuLi8uLi8uLi9fL3VzZXIubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7aW1wb3J0Ii4uLy4uLy4uL18vc2Vzc2lvbi5tanMiO2ltcG9ydCIuLi8uLi8uLi9fL29yZ2FuaXphdGlvbi5tanMiO2NvbnN0IGE9aShhc3luYyhpLGEpPT57Y29uc3QgbT1hd2FpdCBvKGksZS5wYXJzZSk7cmV0dXJuIGF3YWl0IHIudXBkYXRlKHMpLnNldCh7bm90aWZpY2F0aW9uX3ByZWZzOm19KS53aGVyZSh0KHMuaWQsYS5pZCkpLG19KTtleHBvcnR7YSBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm90aWZpY2F0aW9uLnBhdGNoLm1qcy5tYXAK", "chunks/routes/images/_...pathname_.get.mjs": "aW1wb3J0e2FxIGFzIG8sbSBhcyBzLGMgYXMgdCxhcCBhcyBlfWZyb20iLi4vLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7Y29uc3Qgcj0vXig/OmF2YXRhcnN8cHVibGljKVwvLyxhPW8oYXN5bmMgbz0+e2NvbnN0IGE9cyhvLCJwYXRobmFtZSIpfHwiIjtpZighci50ZXN0KGEpfHxhLmluY2x1ZGVzKCIuLiIpKXRocm93IHQoe3N0YXR1c0NvZGU6NDA0LHN0YXR1c01lc3NhZ2U6Ik5vdCBmb3VuZCJ9KTtyZXR1cm4gZS5zZXJ2ZShvLGEpfSk7ZXhwb3J0e2EgYXMgZGVmYXVsdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV8uLi5wYXRobmFtZV8uZ2V0Lm1qcy5tYXAK", "chunks/routes/renderer.mjs": "aW1wb3J0e2FyIGFzIGUsdiBhcyB0LGFzIGFzIG4sYXQgYXMgcixhdSBhcyBvLGF2IGFzIHMsYXcgYXMgaSxhMyBhcyBhLGMgYXMgbCxheCBhcyBjLGF5IGFzIHUsWiBhcyBwLGFhIGFzIGR9ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtpIGFzIGYsYSBhcyBnLEUgYXMgbSxiIGFzIHksaCBhcyB2LGQgYXMgXyxjIGFzIGIsZSBhcyBrLGYgYXMgQyx0IGFzIFMsZyBhcyB3LGogYXMgVCxtIGFzIFIsciBhcyBBLGsgYXMgeCxsIGFzIEUsTiBhcyBQLG4gYXMgJCxvIGFzIE8scCBhcyBOLHEgYXMgSCxzIGFzIE0sdSBhcyBWLHYgYXMgaix3IGFzIEkseCBhcyBELHkgYXMgTCx6IGFzIEYsQSBhcyBCLEIgYXMgVSxDIGFzIFcsRCBhcyB6LEYgYXMgcSxHIGFzIEssSCBhcyBKLEkgYXMgRyxKIGFzIFosSyBhcyBYLEwgYXMgWSxNIGFzIFEsTyBhcyBlZSxQIGFzIHRlLFEgYXMgbmUsUiBhcyByZSxTIGFzIG9lLFQgYXMgc2UsVSBhcyBpZSxWIGFzIGFlLFcgYXMgbGUsWCBhcyBjZSxZIGFzIHVlLFogYXMgcGV9ZnJvbSIuLi9fL3NoYXJlZC5lc20tYnVuZGxlci5tanMiO2Z1bmN0aW9uIGdldE1vZHVsZURlcGVuZGVuY2llcyhlLHQpe2lmKHQuX2RlcGVuZGVuY2llc1tlXSlyZXR1cm4gdC5fZGVwZW5kZW5jaWVzW2VdO2NvbnN0IG49dC5fZGVwZW5kZW5jaWVzW2VdPXtzY3JpcHRzOnt9LHN0eWxlczp7fSxwcmVsb2FkOnt9LHByZWZldGNoOnt9fTtpZighdC5tYW5pZmVzdClyZXR1cm4gbjtjb25zdCByPXQubWFuaWZlc3RbZV07aWYoIXIpcmV0dXJuIG47ci5maWxlJiYobi5wcmVsb2FkW2VdPXIsKHIuaXNFbnRyeXx8ci5zaWRlRWZmZWN0cykmJihuLnNjcmlwdHNbZV09cikpO2Zvcihjb25zdCBlIG9mIHIuY3NzfHxbXSluLnN0eWxlc1tlXT1uLnByZWxvYWRbZV09bi5wcmVmZXRjaFtlXT10Lm1hbmlmZXN0W2VdO2Zvcihjb25zdCBlIG9mIHIuYXNzZXRzfHxbXSluLnByZWxvYWRbZV09bi5wcmVmZXRjaFtlXT10Lm1hbmlmZXN0W2VdO2Zvcihjb25zdCBlIG9mIHIuaW1wb3J0c3x8W10pe2NvbnN0IHI9Z2V0TW9kdWxlRGVwZW5kZW5jaWVzKGUsdCk7Zm9yKGNvbnN0IGUgaW4gci5zdHlsZXMpbi5zdHlsZXNbZV09ci5zdHlsZXNbZV07Zm9yKGNvbnN0IGUgaW4gci5wcmVsb2FkKW4ucHJlbG9hZFtlXT1yLnByZWxvYWRbZV07Zm9yKGNvbnN0IGUgaW4gci5wcmVmZXRjaCluLnByZWZldGNoW2VdPXIucHJlZmV0Y2hbZV19Y29uc3Qgbz17fTtmb3IoY29uc3QgZSBpbiBuLnByZWxvYWQpe2NvbnN0IHQ9bi5wcmVsb2FkW2VdO3QucHJlbG9hZCYmKG9bZV09dCl9cmV0dXJuIG4ucHJlbG9hZD1vLG59ZnVuY3Rpb24gZ2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpe2lmKGUuX3JlcXVlc3REZXBlbmRlbmNpZXMpcmV0dXJuIGUuX3JlcXVlc3REZXBlbmRlbmNpZXM7Y29uc3Qgbj1mdW5jdGlvbihlLHQpe2xldCBuPSIiO2NvbnN0IHI9Wy4uLmVdLnNvcnQoKTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyllPjAmJihuKz0iLCIpLG4rPXJbZV07aWYodC5fZGVwZW5kZW5jeVNldHNbbl0pcmV0dXJuIHQuX2RlcGVuZGVuY3lTZXRzW25dO2NvbnN0IG89e3NjcmlwdHM6e30sc3R5bGVzOnt9LHByZWxvYWQ6e30scHJlZmV0Y2g6e319O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9Z2V0TW9kdWxlRGVwZW5kZW5jaWVzKG4sdCk7Zm9yKGNvbnN0IHQgaW4gZS5zY3JpcHRzKW8uc2NyaXB0c1t0XT1lLnNjcmlwdHNbdF07Zm9yKGNvbnN0IHQgaW4gZS5zdHlsZXMpby5zdHlsZXNbdF09ZS5zdHlsZXNbdF07Zm9yKGNvbnN0IHQgaW4gZS5wcmVsb2FkKW8ucHJlbG9hZFt0XT1lLnByZWxvYWRbdF07Zm9yKGNvbnN0IHQgaW4gZS5wcmVmZXRjaClvLnByZWZldGNoW3RdPWUucHJlZmV0Y2hbdF07Zm9yKGNvbnN0IGUgb2YgdC5tYW5pZmVzdD8uW25dPy5keW5hbWljSW1wb3J0c3x8W10pe2NvbnN0IG49Z2V0TW9kdWxlRGVwZW5kZW5jaWVzKGUsdCk7Zm9yKGNvbnN0IGUgaW4gbi5zY3JpcHRzKW8ucHJlZmV0Y2hbZV09bi5zY3JpcHRzW2VdO2Zvcihjb25zdCBlIGluIG4uc3R5bGVzKW8ucHJlZmV0Y2hbZV09bi5zdHlsZXNbZV07Zm9yKGNvbnN0IGUgaW4gbi5wcmVsb2FkKW8ucHJlZmV0Y2hbZV09bi5wcmVsb2FkW2VdfX1jb25zdCBzPXt9O2Zvcihjb25zdCBlIGluIG8ucHJlZmV0Y2gpe2NvbnN0IHQ9by5wcmVmZXRjaFtlXTt0LnByZWZldGNoJiYoc1tlXT10KX1vLnByZWZldGNoPXM7Zm9yKGNvbnN0IGUgaW4gby5wcmVsb2FkKWRlbGV0ZSBvLnByZWZldGNoW2VdO2Zvcihjb25zdCBlIGluIG8uc3R5bGVzKWRlbGV0ZSBvLnByZWxvYWRbZV0sZGVsZXRlIG8ucHJlZmV0Y2hbZV07cmV0dXJuIHQuX2RlcGVuZGVuY3lTZXRzW25dPW8sb30obmV3IFNldChBcnJheS5mcm9tKFsuLi50Ll9lbnRyeXBvaW50cywuLi5lLm1vZHVsZXN8fGUuX3JlZ2lzdGVyZWRDb21wb25lbnRzfHxbXV0pKSx0KTtyZXR1cm4gZS5fcmVxdWVzdERlcGVuZGVuY2llcz1uLG59ZnVuY3Rpb24gcmVuZGVyU3R5bGVzKGUsdCl7Y29uc3R7c3R5bGVzOm59PWdldFJlcXVlc3REZXBlbmRlbmNpZXMoZSx0KTtsZXQgcj0iIjtmb3IoY29uc3QgZSBpbiBuKXtjb25zdCBvPW5bZV07cis9YDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJHt0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9IiBjcm9zc29yaWdpbj5gfXJldHVybiByfWZ1bmN0aW9uIHJlbmRlclJlc291cmNlSGludHMoZSx0KXtjb25zdHtwcmVsb2FkOm4scHJlZmV0Y2g6cn09Z2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpO2xldCBvPSIiO2Zvcihjb25zdCBlIGluIG4pe2NvbnN0IHI9bltlXSxzPXQuYnVpbGRBc3NldHNVUkwoci5maWxlKSxpPXIubW9kdWxlPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCIsYT0ic3R5bGUiPT09ci5yZXNvdXJjZVR5cGV8fCJmb250Ij09PXIucmVzb3VyY2VUeXBlfHwic2NyaXB0Ij09PXIucmVzb3VyY2VUeXBlfHxyLm1vZHVsZT8iIGNyb3Nzb3JpZ2luIjoiIjtyLnJlc291cmNlVHlwZSYmci5taW1lVHlwZT9vKz1gPGxpbmsgcmVsPSIke2l9IiBhcz0iJHtyLnJlc291cmNlVHlwZX0iIHR5cGU9IiR7ci5taW1lVHlwZX0iJHthfSBocmVmPSIke3N9Ij5gOnIucmVzb3VyY2VUeXBlP28rPWA8bGluayByZWw9IiR7aX0iIGFzPSIke3IucmVzb3VyY2VUeXBlfSIke2F9IGhyZWY9IiR7c30iPmA6bys9YDxsaW5rIHJlbD0iJHtpfSIke2F9IGhyZWY9IiR7c30iPmB9Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3Qgbj1yW2VdLHM9dC5idWlsZEFzc2V0c1VSTChuLmZpbGUpLGk9InN0eWxlIj09PW4ucmVzb3VyY2VUeXBlfHwiZm9udCI9PT1uLnJlc291cmNlVHlwZXx8InNjcmlwdCI9PT1uLnJlc291cmNlVHlwZXx8bi5tb2R1bGU/IiBjcm9zc29yaWdpbiI6IiI7bi5yZXNvdXJjZVR5cGUmJm4ubWltZVR5cGU/bys9YDxsaW5rIHJlbD0icHJlZmV0Y2giIGFzPSIke24ucmVzb3VyY2VUeXBlfSIgdHlwZT0iJHtuLm1pbWVUeXBlfSIke2l9IGhyZWY9IiR7c30iPmA6bi5yZXNvdXJjZVR5cGU/bys9YDxsaW5rIHJlbD0icHJlZmV0Y2giIGFzPSIke24ucmVzb3VyY2VUeXBlfSIke2l9IGhyZWY9IiR7c30iPmA6bys9YDxsaW5rIHJlbD0icHJlZmV0Y2giJHtpfSBocmVmPSIke3N9Ij5gfXJldHVybiBvfWZ1bmN0aW9uIHJlbmRlclJlc291cmNlSGVhZGVycyhlLHQpe2NvbnN0e3ByZWxvYWQ6bixwcmVmZXRjaDpyfT1nZXRSZXF1ZXN0RGVwZW5kZW5jaWVzKGUsdCksbz1bXTtmb3IoY29uc3QgZSBpbiBuKXtjb25zdCByPW5bZV07bGV0IHM9YDwke3QuYnVpbGRBc3NldHNVUkwoci5maWxlKX0+OyByZWw9IiR7ci5tb2R1bGU/Im1vZHVsZXByZWxvYWQiOiJwcmVsb2FkIn0iYDtyLnJlc291cmNlVHlwZSYmKHMrPWA7IGFzPSIke3IucmVzb3VyY2VUeXBlfSJgKSxyLm1pbWVUeXBlJiYocys9YDsgdHlwZT0iJHtyLm1pbWVUeXBlfSJgKSwoInN0eWxlIj09PXIucmVzb3VyY2VUeXBlfHwiZm9udCI9PT1yLnJlc291cmNlVHlwZXx8InNjcmlwdCI9PT1yLnJlc291cmNlVHlwZXx8ci5tb2R1bGUpJiYocys9IjsgY3Jvc3NvcmlnaW4iKSxvLnB1c2gocyl9Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3Qgbj1yW2VdO2xldCBzPWA8JHt0LmJ1aWxkQXNzZXRzVVJMKG4uZmlsZSl9PjsgcmVsPSJwcmVmZXRjaCJgO24ucmVzb3VyY2VUeXBlJiYocys9YDsgYXM9IiR7bi5yZXNvdXJjZVR5cGV9ImApLG4ubWltZVR5cGUmJihzKz1gOyB0eXBlPSIke24ubWltZVR5cGV9ImApLCgic3R5bGUiPT09bi5yZXNvdXJjZVR5cGV8fCJmb250Ij09PW4ucmVzb3VyY2VUeXBlfHwic2NyaXB0Ij09PW4ucmVzb3VyY2VUeXBlfHxuLm1vZHVsZSkmJihzKz0iOyBjcm9zc29yaWdpbiIpLG8ucHVzaChzKX1yZXR1cm57bGluazpvLmpvaW4oIiwgIil9fWZ1bmN0aW9uIGdldFByZWxvYWRMaW5rcyhlLHQpe2NvbnN0e3ByZWxvYWQ6bn09Z2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpLHI9W107Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3Qgbz1uW2VdO3IucHVzaCh7cmVsOm8ubW9kdWxlPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCIsYXM6by5yZXNvdXJjZVR5cGUsdHlwZTpvLm1pbWVUeXBlPz9udWxsLGNyb3Nzb3JpZ2luOiJzdHlsZSI9PT1vLnJlc291cmNlVHlwZXx8ImZvbnQiPT09by5yZXNvdXJjZVR5cGV8fCJzY3JpcHQiPT09by5yZXNvdXJjZVR5cGV8fG8ubW9kdWxlPyIiOm51bGwsaHJlZjp0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9KX1yZXR1cm4gcn1mdW5jdGlvbiBnZXRQcmVmZXRjaExpbmtzKGUsdCl7Y29uc3R7cHJlZmV0Y2g6bn09Z2V0UmVxdWVzdERlcGVuZGVuY2llcyhlLHQpLHI9W107Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3Qgbz1uW2VdO3IucHVzaCh7cmVsOiJwcmVmZXRjaCIsYXM6by5yZXNvdXJjZVR5cGUsdHlwZTpvLm1pbWVUeXBlPz9udWxsLGNyb3Nzb3JpZ2luOiJzdHlsZSI9PT1vLnJlc291cmNlVHlwZXx8ImZvbnQiPT09by5yZXNvdXJjZVR5cGV8fCJzY3JpcHQiPT09by5yZXNvdXJjZVR5cGV8fG8ubW9kdWxlPyIiOm51bGwsaHJlZjp0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9KX1yZXR1cm4gcn1mdW5jdGlvbiByZW5kZXJTY3JpcHRzKGUsdCl7Y29uc3R7c2NyaXB0czpufT1nZXRSZXF1ZXN0RGVwZW5kZW5jaWVzKGUsdCk7bGV0IHI9IiI7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3Qgbz1uW2VdO28ubW9kdWxlP3IrPWA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgc3JjPSIke3QuYnVpbGRBc3NldHNVUkwoby5maWxlKX0iIGNyb3Nzb3JpZ2luPjxcL3NjcmlwdD5gOnIrPWA8c2NyaXB0IHNyYz0iJHt0LmJ1aWxkQXNzZXRzVVJMKG8uZmlsZSl9IiBkZWZlciBjcm9zc29yaWdpbj48XC9zY3JpcHQ+YH1yZXR1cm4gcn1mdW5jdGlvbiBjcmVhdGVSZW5kZXJlciQxKHQsbil7Y29uc3Qgcj1mdW5jdGlvbih7bWFuaWZlc3Q6dCxwcmVjb21wdXRlZDpuLGJ1aWxkQXNzZXRzVVJMOnJ9KXtpZighdCYmIW4pdGhyb3cgbmV3IEVycm9yKCJFaXRoZXIgbWFuaWZlc3Qgb3IgcHJlY29tcHV0ZWQgZGF0YSBtdXN0IGJlIHByb3ZpZGVkIik7Y29uc3Qgbz17YnVpbGRBc3NldHNVUkw6cnx8ZSxtYW5pZmVzdDp0LHByZWNvbXB1dGVkOm4sdXBkYXRlTWFuaWZlc3Q6dXBkYXRlTWFuaWZlc3QsX2RlcGVuZGVuY2llczp7fSxfZGVwZW5kZW5jeVNldHM6e30sX2VudHJ5cG9pbnRzOltdfTtmdW5jdGlvbiB1cGRhdGVNYW5pZmVzdChlKXtjb25zdCB0PU9iamVjdC5lbnRyaWVzKGUpO28ubWFuaWZlc3Q9ZSxvLl9kZXBlbmRlbmNpZXM9e30sby5fZGVwZW5kZW5jeVNldHM9e30sby5fZW50cnlwb2ludHM9dC5maWx0ZXIoZT0+ZVsxXS5pc0VudHJ5KS5tYXAoKFtlXSk9PmUpfXJldHVybiBuPyhvLl9kZXBlbmRlbmNpZXM9bi5kZXBlbmRlbmNpZXMsby5fZW50cnlwb2ludHM9bi5lbnRyeXBvaW50cyk6dCYmdXBkYXRlTWFuaWZlc3QodCksb30obik7cmV0dXJue3JlbmRlcmVyQ29udGV4dDpyLGFzeW5jIHJlbmRlclRvU3RyaW5nKGUpe2UuX3JlZ2lzdGVyZWRDb21wb25lbnRzPWUuX3JlZ2lzdGVyZWRDb21wb25lbnRzfHxuZXcgU2V0O2NvbnN0IG89YXdhaXQgUHJvbWlzZS5yZXNvbHZlKHQpLnRoZW4oZT0+ImRlZmF1bHQiaW4gZT9lLmRlZmF1bHQ6ZSkscz1hd2FpdCBvKGUpLHdyYXA9dD0+KCk9PnQoZSxyKTtyZXR1cm57aHRtbDphd2FpdCBuLnJlbmRlclRvU3RyaW5nKHMsZSkscmVuZGVyUmVzb3VyY2VIZWFkZXJzOndyYXAocmVuZGVyUmVzb3VyY2VIZWFkZXJzKSxyZW5kZXJSZXNvdXJjZUhpbnRzOndyYXAocmVuZGVyUmVzb3VyY2VIaW50cykscmVuZGVyU3R5bGVzOndyYXAocmVuZGVyU3R5bGVzKSxyZW5kZXJTY3JpcHRzOndyYXAocmVuZGVyU2NyaXB0cyl9fX19ZnVuY3Rpb24gZmxhdEhvb2tzKGUsdD17fSxuKXtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBvPWVbcl0scz1uP2Ake259OiR7cn1gOnI7Im9iamVjdCI9PXR5cGVvZiBvJiZudWxsIT09bz9mbGF0SG9va3Mobyx0LHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBvJiYodFtzXT1vKX1yZXR1cm4gdH1jb25zdCBkZT0oKCk9PntpZihjb25zb2xlLmNyZWF0ZVRhc2spcmV0dXJuIGNvbnNvbGUuY3JlYXRlVGFzaztjb25zdCBlPXtydW46ZT0+ZSgpfTtyZXR1cm4oKT0+ZX0pKCk7ZnVuY3Rpb24gY2FsbEhvb2tzKGUsdCxuLHIpe2ZvcihsZXQgbz1uO288ZS5sZW5ndGg7bys9MSl0cnl7Y29uc3Qgbj1yP3IucnVuKCgpPT5lW29dKC4uLnQpKTplW29dKC4uLnQpO2lmKG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnRoZW4pcmV0dXJuIFByb21pc2UucmVzb2x2ZShuKS50aGVuKCgpPT5jYWxsSG9va3MoZSx0LG8rMSxyKSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1mdW5jdGlvbiBzZXJpYWxUYXNrQ2FsbGVyKGUsdCxuKXtpZihlLmxlbmd0aD4wKXJldHVybiBjYWxsSG9va3MoZSx0LDAsZGUobikpfWZ1bmN0aW9uIHBhcmFsbGVsVGFza0NhbGxlcihlLHQsbil7aWYoZS5sZW5ndGg+MCl7Y29uc3Qgcj1kZShuKTtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAoZT0+ci5ydW4oKCk9PmUoLi4udCkpKSl9fWZ1bmN0aW9uIGNhbGxFYWNoV2l0aChlLHQpe2Zvcihjb25zdCBuIG9mWy4uLmVdKW4odCl9dmFyIGZlPWNsYXNze19ob29rcztfYmVmb3JlO19hZnRlcjtfZGVwcmVjYXRlZEhvb2tzO19kZXByZWNhdGVkTWVzc2FnZXM7Y29uc3RydWN0b3IoKXt0aGlzLl9ob29rcz17fSx0aGlzLl9iZWZvcmU9dm9pZCAwLHRoaXMuX2FmdGVyPXZvaWQgMCx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXM9dm9pZCAwLHRoaXMuX2RlcHJlY2F0ZWRIb29rcz17fSx0aGlzLmhvb2s9dGhpcy5ob29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9vaz10aGlzLmNhbGxIb29rLmJpbmQodGhpcyksdGhpcy5jYWxsSG9va1dpdGg9dGhpcy5jYWxsSG9va1dpdGguYmluZCh0aGlzKX1ob29rKGUsdCxuPXt9KXtpZighZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuKCk9Pnt9O2NvbnN0IHI9ZTtsZXQgbztmb3IoO3RoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXTspbz10aGlzLl9kZXByZWNhdGVkSG9va3NbZV0sZT1vLnRvO2lmKG8mJiFuLmFsbG93RGVwcmVjYXRlZCl7bGV0IGU9by5tZXNzYWdlO2V8fChlPWAke3J9IGhvb2sgaGFzIGJlZW4gZGVwcmVjYXRlZGArKG8udG8/YCwgcGxlYXNlIHVzZSAke28udG99YDoiIikpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlc3x8KHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcz1uZXcgU2V0KSx0aGlzLl9kZXByZWNhdGVkTWVzc2FnZXMuaGFzKGUpfHwoY29uc29sZS53YXJuKGUpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5hZGQoZSkpfWlmKCF0Lm5hbWUpdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJuYW1lIix7Z2V0OigpPT4iXyIrZS5yZXBsYWNlKC9cVysvZywiXyIpKyJfaG9va19jYiIsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2h7fXJldHVybiB0aGlzLl9ob29rc1tlXT10aGlzLl9ob29rc1tlXXx8W10sdGhpcy5faG9va3NbZV0ucHVzaCh0KSwoKT0+e3QmJih0aGlzLnJlbW92ZUhvb2soZSx0KSx0PXZvaWQgMCl9fWhvb2tPbmNlKGUsdCl7bGV0IG4sX2Z1bmN0aW9uPSguLi5lKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuKCksbj12b2lkIDAsX2Z1bmN0aW9uPXZvaWQgMCx0KC4uLmUpKTtyZXR1cm4gbj10aGlzLmhvb2soZSxfZnVuY3Rpb24pLG59cmVtb3ZlSG9vayhlLHQpe2NvbnN0IG49dGhpcy5faG9va3NbZV07aWYobil7Y29uc3Qgcj1uLmluZGV4T2YodCk7LTEhPT1yJiZuLnNwbGljZShyLDEpLDA9PT1uLmxlbmd0aCYmKHRoaXMuX2hvb2tzW2VdPXZvaWQgMCl9fWNsZWFySG9vayhlKXt0aGlzLl9ob29rc1tlXT12b2lkIDB9ZGVwcmVjYXRlSG9vayhlLHQpe3RoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXT0ic3RyaW5nIj09dHlwZW9mIHQ/e3RvOnR9OnQ7Y29uc3Qgbj10aGlzLl9ob29rc1tlXXx8W107dGhpcy5faG9va3NbZV09dm9pZCAwO2Zvcihjb25zdCB0IG9mIG4pdGhpcy5ob29rKGUsdCl9ZGVwcmVjYXRlSG9va3MoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLmRlcHJlY2F0ZUhvb2sodCxlW3RdKX1hZGRIb29rcyhlKXtjb25zdCB0PWZsYXRIb29rcyhlKSxuPU9iamVjdC5rZXlzKHQpLm1hcChlPT50aGlzLmhvb2soZSx0W2VdKSk7cmV0dXJuKCk9Pntmb3IoY29uc3QgZSBvZiBuKWUoKTtuLmxlbmd0aD0wfX1yZW1vdmVIb29rcyhlKXtjb25zdCB0PWZsYXRIb29rcyhlKTtmb3IoY29uc3QgZSBpbiB0KXRoaXMucmVtb3ZlSG9vayhlLHRbZV0pfXJlbW92ZUFsbEhvb2tzKCl7dGhpcy5faG9va3M9e319Y2FsbEhvb2soZSwuLi50KXtyZXR1cm4gdGhpcy5jYWxsSG9va1dpdGgoc2VyaWFsVGFza0NhbGxlcixlLHQpfWNhbGxIb29rUGFyYWxsZWwoZSwuLi50KXtyZXR1cm4gdGhpcy5jYWxsSG9va1dpdGgocGFyYWxsZWxUYXNrQ2FsbGVyLGUsdCl9Y2FsbEhvb2tXaXRoKGUsdCxuKXtjb25zdCByPXRoaXMuX2JlZm9yZXx8dGhpcy5fYWZ0ZXI/e25hbWU6dCxhcmdzOm4sY29udGV4dDp7fX06dm9pZCAwO3RoaXMuX2JlZm9yZSYmY2FsbEVhY2hXaXRoKHRoaXMuX2JlZm9yZSxyKTtjb25zdCBvPWUodGhpcy5faG9va3NbdF0/Wy4uLnRoaXMuX2hvb2tzW3RdXTpbXSxuLHQpO3JldHVybiBvIGluc3RhbmNlb2YgUHJvbWlzZT9vLmZpbmFsbHkoKCk9Pnt0aGlzLl9hZnRlciYmciYmY2FsbEVhY2hXaXRoKHRoaXMuX2FmdGVyLHIpfSk6KHRoaXMuX2FmdGVyJiZyJiZjYWxsRWFjaFdpdGgodGhpcy5fYWZ0ZXIsciksbyl9YmVmb3JlRWFjaChlKXtyZXR1cm4gdGhpcy5fYmVmb3JlPXRoaXMuX2JlZm9yZXx8W10sdGhpcy5fYmVmb3JlLnB1c2goZSksKCk9PntpZih2b2lkIDAhPT10aGlzLl9iZWZvcmUpe2NvbnN0IHQ9dGhpcy5fYmVmb3JlLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9iZWZvcmUuc3BsaWNlKHQsMSl9fX1hZnRlckVhY2goZSl7cmV0dXJuIHRoaXMuX2FmdGVyPXRoaXMuX2FmdGVyfHxbXSx0aGlzLl9hZnRlci5wdXNoKGUpLCgpPT57aWYodm9pZCAwIT09dGhpcy5fYWZ0ZXIpe2NvbnN0IHQ9dGhpcy5fYWZ0ZXIuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2FmdGVyLnNwbGljZSh0LDEpfX19fTtmdW5jdGlvbiBjcmVhdGVIb29rcygpe3JldHVybiBuZXcgZmV9Y29uc3QgaGU9bmV3IFNldChbIm1ldGEiLCJsaW5rIiwiYmFzZSJdKSxnZT1uZXcgU2V0KFsibGluayIsInN0eWxlIiwic2NyaXB0Iiwibm9zY3JpcHQiXSksbWU9bmV3IFNldChbInRpdGxlIiwidGl0bGVUZW1wbGF0ZSIsInNjcmlwdCIsInN0eWxlIiwibm9zY3JpcHQiXSkseWU9bmV3IFNldChbImJhc2UiLCJtZXRhIiwibGluayIsInN0eWxlIiwic2NyaXB0Iiwibm9zY3JpcHQiXSksdmU9bmV3IFNldChbInRpdGxlIiwiYmFzZSIsImh0bWxBdHRycyIsImJvZHlBdHRycyIsIm1ldGEiLCJsaW5rIiwic3R5bGUiLCJzY3JpcHQiLCJub3NjcmlwdCJdKSxfZT1uZXcgU2V0KFsiYmFzZSIsInRpdGxlIiwidGl0bGVUZW1wbGF0ZSIsImJvZHlBdHRycyIsImh0bWxBdHRycyIsInRlbXBsYXRlUGFyYW1zIl0pLGJlPW5ldyBTZXQoWyJrZXkiLCJ0YWdQb3NpdGlvbiIsInRhZ1ByaW9yaXR5IiwidGFnRHVwbGljYXRlU3RyYXRlZ3kiLCJpbm5lckhUTUwiLCJ0ZXh0Q29udGVudCIsInByb2Nlc3NUZW1wbGF0ZVBhcmFtcyJdKSxrZT1uZXcgU2V0KFsidGVtcGxhdGVQYXJhbXMiLCJodG1sQXR0cnMiLCJib2R5QXR0cnMiXSksQ2U9bmV3IFNldChbInRoZW1lLWNvbG9yIiwiZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiwib2ciLCJhcnRpY2xlIiwiYm9vayIsInByb2ZpbGUiLCJ0d2l0dGVyIiwiYXV0aG9yIl0pLFNlPVsibmFtZSIsInByb3BlcnR5IiwiaHR0cC1lcXVpdiJdLHdlPW5ldyBTZXQoWyJ2aWV3cG9ydCIsImRlc2NyaXB0aW9uIiwia2V5d29yZHMiLCJyb2JvdHMiXSk7ZnVuY3Rpb24gZGVkdXBlS2V5KGUpe2NvbnN0e3Byb3BzOnQsdGFnOm59PWU7aWYoX2UuaGFzKG4pKXJldHVybiBuO2lmKCJsaW5rIj09PW4mJiJjYW5vbmljYWwiPT09dC5yZWwpcmV0dXJuImNhbm9uaWNhbCI7aWYoImxpbmsiPT09biYmImFsdGVybmF0ZSI9PT10LnJlbCl7Y29uc3QgZT10LmhyZWZsYW5nfHx0LnR5cGU7aWYoZSlyZXR1cm5gYWx0ZXJuYXRlOiR7ZX1gfWlmKHQuY2hhcnNldClyZXR1cm4iY2hhcnNldCI7aWYoIm1ldGEiPT09ZS50YWcpZm9yKGNvbnN0IHIgb2YgU2UpaWYodm9pZCAwIT09dFtyXSl7Y29uc3Qgbz10W3JdLHM9byYmInN0cmluZyI9PXR5cGVvZiBvJiZvLmluY2x1ZGVzKCI6IiksaT1vJiZ3ZS5oYXMobyk7cmV0dXJuYCR7bn06JHtvfSR7IShzfHxpKSYmZS5rZXk/YDprZXk6JHtlLmtleX1gOiIifWB9aWYoZS5rZXkpcmV0dXJuYCR7bn06a2V5OiR7ZS5rZXl9YDtpZih0LmlkKXJldHVybmAke259OmlkOiR7dC5pZH1gO2lmKCJsaW5rIj09PW4mJiJhbHRlcm5hdGUiPT09dC5yZWwpcmV0dXJuYGFsdGVybmF0ZToke3QuaHJlZnx8IiJ9YDtpZihtZS5oYXMobikpe2NvbnN0IHQ9ZS50ZXh0Q29udGVudHx8ZS5pbm5lckhUTUw7aWYodClyZXR1cm5gJHtufTpjb250ZW50OiR7dH1gfX1mdW5jdGlvbiBoYXNoVGFnKGUpe2NvbnN0IHQ9ZS5faHx8ZS5fZDtpZih0KXJldHVybiB0O2NvbnN0IG49ZS50ZXh0Q29udGVudHx8ZS5pbm5lckhUTUw7cmV0dXJuIG58fGAke2UudGFnfToke09iamVjdC5lbnRyaWVzKGUucHJvcHMpLm1hcCgoW2UsdF0pPT5gJHtlfToke1N0cmluZyh0KX1gKS5qb2luKCIsIil9YH1mdW5jdGlvbiB3YWxrUmVzb2x2ZXIoZSx0LG4peyJmdW5jdGlvbiI9PT10eXBlb2YgZSYmKG4mJigidGl0bGVUZW1wbGF0ZSI9PT1ufHwibyI9PT1uWzBdJiYibiI9PT1uWzFdKXx8KGU9ZSgpKSk7Y29uc3Qgcj10P3QobixlKTplO2lmKEFycmF5LmlzQXJyYXkocikpcmV0dXJuIHIubWFwKGU9PndhbGtSZXNvbHZlcihlLHQpKTtpZihyPy5jb25zdHJ1Y3Rvcj09PU9iamVjdCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiBPYmplY3Qua2V5cyhyKSllW25dPXdhbGtSZXNvbHZlcihyW25dLHQsbik7cmV0dXJuIGV9cmV0dXJuIHJ9ZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMoZSx0KXtpZihlLnByb3BzPWUucHJvcHN8fHt9LCF0KXJldHVybiBlO2lmKCJ0ZW1wbGF0ZVBhcmFtcyI9PT1lLnRhZylyZXR1cm4gZS5wcm9wcz10LGU7Y29uc3Qgbj15ZS5oYXMoZS50YWcpfHwiaHRtbEF0dHJzIj09PWUudGFnfHwiYm9keUF0dHJzIj09PWUudGFnO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbcixvXSk9PntpZigiX19wcm90b19fIj09PXJ8fCJjb25zdHJ1Y3RvciI9PT1yfHwicHJvdG90eXBlIj09PXIpcmV0dXJuO2lmKG51bGw9PT1vKXJldHVybiB2b2lkKGUucHJvcHNbcl09bnVsbCk7aWYoImNsYXNzIj09PXJ8fCJzdHlsZSI9PT1yKXJldHVybiB2b2lkKGUucHJvcHNbcl09ZnVuY3Rpb24oZSx0KXtjb25zdCBuPSJzdHlsZSI9PT1lP25ldyBNYXA6bmV3IFNldDtmdW5jdGlvbiBwcm9jZXNzVmFsdWUodCl7aWYobnVsbD09dHx8dm9pZCAwPT09dClyZXR1cm47Y29uc3Qgcj1TdHJpbmcodCkudHJpbSgpO2lmKHIpaWYoInN0eWxlIj09PWUpe2NvbnN0W2UsLi4udF09ci5zcGxpdCgiOiIpLm1hcChlPT5lP2UudHJpbSgpOiIiKTtlJiZ0Lmxlbmd0aCYmbi5zZXQoZSx0LmpvaW4oIjoiKSl9ZWxzZSByLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goZT0+bi5hZGQoZSkpfXJldHVybiJzdHJpbmciPT10eXBlb2YgdD8ic3R5bGUiPT09ZT90LnNwbGl0KCI7IikuZm9yRWFjaChwcm9jZXNzVmFsdWUpOnByb2Nlc3NWYWx1ZSh0KTpBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFjaChlPT5wcm9jZXNzVmFsdWUoZSkpOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW3Qscl0pPT57ciYmImZhbHNlIiE9PXImJigic3R5bGUiPT09ZT9uLnNldChTdHJpbmcodCkudHJpbSgpLFN0cmluZyhyKSk6cHJvY2Vzc1ZhbHVlKHQpKX0pLG59KHIsbykpO2lmKGJlLmhhcyhyKSl7aWYoInRleHRDb250ZW50IiE9PXImJiJpbm5lckhUTUwiIT09cnx8Im9iamVjdCIhPXR5cGVvZiBvKWVbcl09bztlbHNle2xldCBuPXQudHlwZTtpZih0LnR5cGV8fChuPSJhcHBsaWNhdGlvbi9qc29uIiksIW4/LmVuZHNXaXRoKCJqc29uIikmJiJzcGVjdWxhdGlvbnJ1bGVzIiE9PW4pcmV0dXJuO3QudHlwZT1uLGUucHJvcHMudHlwZT1uLGVbcl09SlNPTi5zdHJpbmdpZnkobyl9cmV0dXJufWNvbnN0IHM9ci5zdGFydHNXaXRoKCJkYXRhLSIpLGk9biYmIXM/ci50b0xvd2VyQ2FzZSgpOnIsYT1TdHJpbmcobyksbD0ibWV0YSI9PT1lLnRhZyYmImNvbnRlbnQiPT09aTsidHJ1ZSI9PT1hfHwiIj09PWE/ZS5wcm9wc1tpXT0hcyYmIWx8fGE6IW8mJnMmJiJmYWxzZSI9PT1hP2UucHJvcHNbaV09ImZhbHNlIjp2b2lkIDAhPT1vJiYoZS5wcm9wc1tpXT1vKX0pLGV9ZnVuY3Rpb24gbm9ybWFsaXplVGFnKGUsdCl7Y29uc3Qgbj1ub3JtYWxpemVQcm9wcyh7dGFnOmUscHJvcHM6e319LCJvYmplY3QiPT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/dDp7WyJzY3JpcHQiPT09ZXx8Im5vc2NyaXB0Ij09PWV8fCJzdHlsZSI9PT1lPyJpbm5lckhUTUwiOiJ0ZXh0Q29udGVudCJdOnR9KTtyZXR1cm4gbi5rZXkmJmdlLmhhcyhuLnRhZykmJihuLnByb3BzWyJkYXRhLWhpZCJdPW4uX2g9bi5rZXkpLCJzY3JpcHQiPT09bi50YWcmJiJvYmplY3QiPT10eXBlb2Ygbi5pbm5lckhUTUwmJihuLmlubmVySFRNTD1KU09OLnN0cmluZ2lmeShuLmlubmVySFRNTCksbi5wcm9wcy50eXBlPW4ucHJvcHMudHlwZXx8ImFwcGxpY2F0aW9uL2pzb24iKSxBcnJheS5pc0FycmF5KG4ucHJvcHMuY29udGVudCk/bi5wcm9wcy5jb250ZW50Lm1hcChlPT4oey4uLm4scHJvcHM6ey4uLm4ucHJvcHMsY29udGVudDplfX0pKTpufWZ1bmN0aW9uIG5vcm1hbGl6ZUVudHJ5VG9UYWdzKGUsdCl7aWYoIWUpcmV0dXJuW107ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUoKSk7Y29uc3QgcmVzb2x2ZXJzPShlLG4pPT57Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspbj10W3JdKGUsbik7cmV0dXJuIG59O2U9cmVzb2x2ZXJzKHZvaWQgMCxlKTtjb25zdCBuPVtdO3JldHVybiBlPXdhbGtSZXNvbHZlcihlLHJlc29sdmVycyksT2JqZWN0LmVudHJpZXMoZXx8e30pLmZvckVhY2goKFtlLHRdKT0+e2lmKHZvaWQgMCE9PXQpZm9yKGNvbnN0IHIgb2YgQXJyYXkuaXNBcnJheSh0KT90Olt0XSluLnB1c2gobm9ybWFsaXplVGFnKGUscikpfSksbi5mbGF0KCl9Y29uc3Qgc29ydFRhZ3M9KGUsdCk9PmUuX3c9PT10Ll93P2UuX3AtdC5fcDplLl93LXQuX3csVGU9e2Jhc2U6LTEwLHRpdGxlOjEwfSxSZT17Y3JpdGljYWw6LTgsaGlnaDotMSxsb3c6Mn0sQWU9e21ldGE6eyJjb250ZW50LXNlY3VyaXR5LXBvbGljeSI6LTMwLGNoYXJzZXQ6LTIwLHZpZXdwb3J0Oi0xNX0sbGluazp7cHJlY29ubmVjdDoyMCxzdHlsZXNoZWV0OjYwLHByZWxvYWQ6NzAsbW9kdWxlcHJlbG9hZDo3MCxwcmVmZXRjaDo5MCwiZG5zLXByZWZldGNoIjo5MCxwcmVyZW5kZXI6OTB9LHNjcmlwdDp7YXN5bmM6MzAsZGVmZXI6ODAsc3luYzo1MH0sc3R5bGU6e2ltcG9ydGVkOjQwLHN5bmM6NjB9fSx4ZT0vQGltcG9ydC8saXNUcnV0aHk9ZT0+IiI9PT1lfHwhMD09PWU7ZnVuY3Rpb24gdGFnV2VpZ2h0KGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0LnRhZ1ByaW9yaXR5KXJldHVybiB0LnRhZ1ByaW9yaXR5O2xldCBuPTEwMDtjb25zdCByPVJlW3QudGFnUHJpb3JpdHldfHwwLG89ZS5yZXNvbHZlZE9wdGlvbnMuZGlzYWJsZUNhcG9Tb3J0aW5nP3tsaW5rOnt9LHNjcmlwdDp7fSxzdHlsZTp7fX06QWU7aWYodC50YWcgaW4gVGUpbj1UZVt0LnRhZ107ZWxzZSBpZigibWV0YSI9PT10LnRhZyl7Y29uc3QgZT0iY29udGVudC1zZWN1cml0eS1wb2xpY3kiPT09dC5wcm9wc1siaHR0cC1lcXVpdiJdPyJjb250ZW50LXNlY3VyaXR5LXBvbGljeSI6dC5wcm9wcy5jaGFyc2V0PyJjaGFyc2V0Ijoidmlld3BvcnQiPT09dC5wcm9wcy5uYW1lPyJ2aWV3cG9ydCI6bnVsbDtlJiYobj1BZS5tZXRhW2VdKX1lbHNlIGlmKCJsaW5rIj09PXQudGFnJiZ0LnByb3BzLnJlbCluPW8ubGlua1t0LnByb3BzLnJlbF07ZWxzZSBpZigic2NyaXB0Ij09PXQudGFnKXtjb25zdCBlPVN0cmluZyh0LnByb3BzLnR5cGUpO2lzVHJ1dGh5KHQucHJvcHMuYXN5bmMpP249by5zY3JpcHQuYXN5bmM6dC5wcm9wcy5zcmMmJiFpc1RydXRoeSh0LnByb3BzLmRlZmVyKSYmIWlzVHJ1dGh5KHQucHJvcHMuYXN5bmMpJiYibW9kdWxlIiE9PWUmJiFlLmVuZHNXaXRoKCJqc29uIil8fHQuaW5uZXJIVE1MJiYhZS5lbmRzV2l0aCgianNvbiIpP249by5zY3JpcHQuc3luYzooaXNUcnV0aHkodC5wcm9wcy5kZWZlcikmJnQucHJvcHMuc3JjJiYhaXNUcnV0aHkodC5wcm9wcy5hc3luYyl8fCJtb2R1bGUiPT09ZSkmJihuPW8uc2NyaXB0LmRlZmVyKX1lbHNlInN0eWxlIj09PXQudGFnJiYobj10LmlubmVySFRNTCYmeGUudGVzdCh0LmlubmVySFRNTCk/by5zdHlsZS5pbXBvcnRlZDpvLnN0eWxlLnN5bmMpO3JldHVybihufHwxMDApK3J9ZnVuY3Rpb24gcmVnaXN0ZXJQbHVnaW4oZSx0KXtjb25zdCBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoZSk6dCxyPW4ua2V5fHxTdHJpbmcoZS5wbHVnaW5zLnNpemUrMSk7ZS5wbHVnaW5zLmdldChyKXx8KGUucGx1Z2lucy5zZXQocixuKSxlLmhvb2tzLmFkZEhvb2tzKG4uaG9va3N8fHt9KSl9ZnVuY3Rpb24gY3JlYXRlVW5oZWFkKGU9e30pe2NvbnN0IHQ9Y3JlYXRlSG9va3MoKTt0LmFkZEhvb2tzKGUuaG9va3N8fHt9KTtjb25zdCBuPSFlLmRvY3VtZW50LHI9bmV3IE1hcCxvPW5ldyBNYXAscz1uZXcgU2V0LGk9e19lbnRyeUNvdW50OjEscGx1Z2luczpvLGRpcnR5OiExLHJlc29sdmVkT3B0aW9uczplLGhvb2tzOnQsc3NyOm4sZW50cmllczpyLGhlYWRFbnRyaWVzOigpPT5bLi4uci52YWx1ZXMoKV0sdXNlOmU9PnJlZ2lzdGVyUGx1Z2luKGksZSkscHVzaChlLG8pe2NvbnN0IGE9ey4uLm98fHt9fTtkZWxldGUgYS5oZWFkO2NvbnN0IGw9YS5faW5kZXg/P2kuX2VudHJ5Q291bnQrKyxjPXtfaTpsLGlucHV0OmUsb3B0aW9uczphfSx1PXtfcG9sbChlPSExKXtpLmRpcnR5PSEwLCFlJiZzLmFkZChsKSx0LmNhbGxIb29rKCJlbnRyaWVzOnVwZGF0ZWQiLGkpfSxkaXNwb3NlKCl7ci5kZWxldGUobCkmJmkuaW52YWxpZGF0ZSgpfSxwYXRjaChlKXsoIWEubW9kZXx8InNlcnZlciI9PT1hLm1vZGUmJm58fCJjbGllbnQiPT09YS5tb2RlJiYhbikmJihjLmlucHV0PWUsci5zZXQobCxjKSx1Ll9wb2xsKCkpfX07cmV0dXJuIHUucGF0Y2goZSksdX0sYXN5bmMgcmVzb2x2ZVRhZ3MoKXtjb25zdCBuPXt0YWdNYXA6bmV3IE1hcCx0YWdzOltdLGVudHJpZXM6Wy4uLmkuZW50cmllcy52YWx1ZXMoKV19O2Zvcihhd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOnJlc29sdmUiLG4pO3Muc2l6ZTspe2NvbnN0IG49cy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7cy5kZWxldGUobik7Y29uc3Qgbz1yLmdldChuKTtpZihvKXtjb25zdCBuPXt0YWdzOm5vcm1hbGl6ZUVudHJ5VG9UYWdzKG8uaW5wdXQsZS5wcm9wUmVzb2x2ZXJzfHxbXSkubWFwKGU9Pk9iamVjdC5hc3NpZ24oZSxvLm9wdGlvbnMpKSxlbnRyeTpvfTthd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOm5vcm1hbGl6ZSIsbiksby5fdGFncz1uLnRhZ3MubWFwKChlLHQpPT4oZS5fdz10YWdXZWlnaHQoaSxlKSxlLl9wPShvLl9pPDwxMCkrdCxlLl9kPWRlZHVwZUtleShlKSxlLl9kfHwoZS5faD1oYXNoVGFnKGUpKSxlKSl9fWxldCBvPSExO24uZW50cmllcy5mbGF0TWFwKGU9PihlLl90YWdzfHxbXSkubWFwKGU9Pih7Li4uZSxwcm9wczp7Li4uZS5wcm9wc319KSkpLnNvcnQoc29ydFRhZ3MpLnJlZHVjZSgoZSx0KT0+e2NvbnN0IG49dC5fZHx8dC5faDtpZighZS5oYXMobikpcmV0dXJuIGUuc2V0KG4sdCk7Y29uc3Qgcj1lLmdldChuKTtpZigibWVyZ2UiPT09KHQ/LnRhZ0R1cGxpY2F0ZVN0cmF0ZWd5fHwoa2UuaGFzKHQudGFnKT8ibWVyZ2UiOm51bGwpfHwodC5rZXkmJnQua2V5PT09ci5rZXk/Im1lcmdlIjpudWxsKSkpe2NvbnN0IG89ey4uLnIucHJvcHN9O09iamVjdC5lbnRyaWVzKHQucHJvcHMpLmZvckVhY2goKFtlLHRdKT0+b1tlXT0ic3R5bGUiPT09ZT9uZXcgTWFwKFsuLi5yLnByb3BzLnN0eWxlfHxuZXcgTWFwLC4uLnRdKToiY2xhc3MiPT09ZT9uZXcgU2V0KFsuLi5yLnByb3BzLmNsYXNzfHxuZXcgU2V0LC4uLnRdKTp0KSxlLnNldChuLHsuLi50LHByb3BzOm99KX1lbHNlIHQuX3A+PjEwPT1yLl9wPj4xMCYmIm1ldGEiPT09dC50YWcmJmZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5zcGxpdCgiOiIpO3JldHVybiEhdC5sZW5ndGgmJkNlLmhhcyh0WzFdKX0obik/KGUuc2V0KG4sT2JqZWN0LmFzc2lnbihbLi4uQXJyYXkuaXNBcnJheShyKT9yOltyXSx0XSx0KSksbz0hMCk6KHQuX3c9PT1yLl93P3QuX3A+ci5fcDp0Py5fdzxyPy5fdykmJmUuc2V0KG4sdCk7cmV0dXJuIGV9LG4udGFnTWFwKTtjb25zdCBhPW4udGFnTWFwLmdldCgidGl0bGUiKSxsPW4udGFnTWFwLmdldCgidGl0bGVUZW1wbGF0ZSIpO2lmKGkuX3RpdGxlPWE/LnRleHRDb250ZW50LGwpe2NvbnN0IGU9bD8udGV4dENvbnRlbnQ7aWYoaS5fdGl0bGVUZW1wbGF0ZT1lLGUpe2xldCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoYT8udGV4dENvbnRlbnQpOmU7InN0cmluZyIhPXR5cGVvZiB0fHxpLnBsdWdpbnMuaGFzKCJ0ZW1wbGF0ZS1wYXJhbXMiKXx8KHQ9dC5yZXBsYWNlKCIlcyIsYT8udGV4dENvbnRlbnR8fCIiKSksYT9udWxsPT09dD9uLnRhZ01hcC5kZWxldGUoInRpdGxlIik6bi50YWdNYXAuc2V0KCJ0aXRsZSIsey4uLmEsdGV4dENvbnRlbnQ6dH0pOihsLnRhZz0idGl0bGUiLGwudGV4dENvbnRlbnQ9dCl9fW4udGFncz1BcnJheS5mcm9tKG4udGFnTWFwLnZhbHVlcygpKSxvJiYobi50YWdzPW4udGFncy5mbGF0KCkuc29ydChzb3J0VGFncykpLGF3YWl0IHQuY2FsbEhvb2soInRhZ3M6YmVmb3JlUmVzb2x2ZSIsbiksYXdhaXQgdC5jYWxsSG9vaygidGFnczpyZXNvbHZlIixuKSxhd2FpdCB0LmNhbGxIb29rKCJ0YWdzOmFmdGVyUmVzb2x2ZSIsbik7Y29uc3QgYz1bXTtmb3IoY29uc3QgZSBvZiBuLnRhZ3Mpe2NvbnN0e2lubmVySFRNTDp0LHRhZzpuLHByb3BzOnJ9PWU7aWYodmUuaGFzKG4pJiYoKDAhPT1PYmplY3Qua2V5cyhyKS5sZW5ndGh8fGUuaW5uZXJIVE1MfHxlLnRleHRDb250ZW50KSYmKCJtZXRhIiE9PW58fHIuY29udGVudHx8clsiaHR0cC1lcXVpdiJdfHxyLmNoYXJzZXQpKSl7aWYoInNjcmlwdCI9PT1uJiZ0KXtpZihTdHJpbmcoci50eXBlKS5lbmRzV2l0aCgianNvbiIpKXtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgdD90OkpTT04uc3RyaW5naWZ5KHQpO2UuaW5uZXJIVE1MPW4ucmVwbGFjZSgvPC9nLCJcXHUwMDNDIil9ZWxzZSJzdHJpbmciPT10eXBlb2YgdCYmKGUuaW5uZXJIVE1MPXQucmVwbGFjZShuZXcgUmVnRXhwKGA8LyR7bn1gLCJnIiksYDxcXC8ke259YCkpO2UuX2Q9ZGVkdXBlS2V5KGUpfWMucHVzaChlKX19cmV0dXJuIGN9LGludmFsaWRhdGUoKXtmb3IoY29uc3QgZSBvZiByLnZhbHVlcygpKXMuYWRkKGUuX2kpO2kuZGlydHk9ITAsdC5jYWxsSG9vaygiZW50cmllczp1cGRhdGVkIixpKX19O3JldHVybihlPy5wbHVnaW5zfHxbXSkuZm9yRWFjaChlPT5yZWdpc3RlclBsdWdpbihpLGUpKSxpLmhvb2tzLmNhbGxIb29rKCJpbml0IixpKSxlLmluaXQ/LmZvckVhY2goZT0+ZSYmaS5wdXNoKGUpKSxpfWZ1bmN0aW9uIGVuY29kZUF0dHJpYnV0ZShlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9ZnVuY3Rpb24gcHJvcHNUb1N0cmluZyhlKXtsZXQgdD0iIjtmb3IoY29uc3QgbiBpbiBlKXtpZighT2JqZWN0Lmhhc093bihlLG4pKWNvbnRpbnVlO2xldCByPWVbbl07ImNsYXNzIiE9PW4mJiJzdHlsZSIhPT1ufHwic3RyaW5nIj09dHlwZW9mIHJ8fChyPSJjbGFzcyI9PT1uP0FycmF5LmZyb20ocikuam9pbigiICIpOkFycmF5LmZyb20ocikubWFwKChbZSx0XSk9PmAke2V9OiR7dH1gKS5qb2luKCI7IikpLCExIT09ciYmbnVsbCE9PXImJih0Kz0hMD09PXI/YCAke259YDpgICR7bn09IiR7ZW5jb2RlQXR0cmlidXRlKHIpfSJgKX1yZXR1cm4gdH1mdW5jdGlvbiB0YWdUb1N0cmluZyhlKXtjb25zdCB0PXByb3BzVG9TdHJpbmcoZS5wcm9wcyksbj1gPCR7ZS50YWd9JHt0fT5gO2lmKCFtZS5oYXMoZS50YWcpKXJldHVybiBoZS5oYXMoZS50YWcpP246YCR7bn08LyR7ZS50YWd9PmA7bGV0IHI9U3RyaW5nKGUudGV4dENvbnRlbnR8fGUuaW5uZXJIVE1MfHwiIik7cmV0dXJuIHI9InRpdGxlIj09PWUudGFnP3IucmVwbGFjZSgvWyY8PiInL10vZyxlPT57c3dpdGNoKGUpe2Nhc2UiJiI6cmV0dXJuIiZhbXA7IjtjYXNlIjwiOnJldHVybiImbHQ7IjtjYXNlIj4iOnJldHVybiImZ3Q7IjtjYXNlJyInOnJldHVybiImcXVvdDsiO2Nhc2UiJyI6cmV0dXJuIiYjeDI3OyI7Y2FzZSIvIjpyZXR1cm4iJiN4MkY7IjtkZWZhdWx0OnJldHVybiBlfX0pOnIucmVwbGFjZShuZXcgUmVnRXhwKGA8LyR7ZS50YWd9YCwiZ2kiKSxgPFxcLyR7ZS50YWd9YCksaGUuaGFzKGUudGFnKT9uOmAke259JHtyfTwvJHtlLnRhZ30+YH1hc3luYyBmdW5jdGlvbiByZW5kZXJTU1JIZWFkKGUsdCl7Y29uc3Qgbj17c2hvdWxkUmVuZGVyOiEwfTtpZihhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJzc3I6YmVmb3JlUmVuZGVyIixuKSwhbi5zaG91bGRSZW5kZXIpcmV0dXJue2hlYWRUYWdzOiIiLGJvZHlUYWdzOiIiLGJvZHlUYWdzT3BlbjoiIixodG1sQXR0cnM6IiIsYm9keUF0dHJzOiIifTtjb25zdCByPXt0YWdzOnQ/LnJlc29sdmVkVGFnc3x8YXdhaXQgZS5yZXNvbHZlVGFncygpfTthd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJzc3I6cmVuZGVyIixyKTtjb25zdCBvPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9e2h0bWxBdHRyczp7fSxib2R5QXR0cnM6e30sdGFnczp7aGVhZDoiIixib2R5Q2xvc2U6IiIsYm9keU9wZW46IiJ9fTtmb3IoY29uc3QgbiBvZiBlKXtpZigiaHRtbEF0dHJzIj09PW4udGFnfHwiYm9keUF0dHJzIj09PW4udGFnKXtPYmplY3QuYXNzaWduKHRbbi50YWddLG4ucHJvcHMpO2NvbnRpbnVlfWNvbnN0IGU9dGFnVG9TdHJpbmcobikscj1uLnRhZ1Bvc2l0aW9ufHwiaGVhZCI7dC50YWdzW3JdKz10LnRhZ3Nbcl0/YCR7ZX1gOmV9cmV0dXJue2hlYWRUYWdzOnQudGFncy5oZWFkLGJvZHlUYWdzOnQudGFncy5ib2R5Q2xvc2UsYm9keVRhZ3NPcGVuOnQudGFncy5ib2R5T3BlbixodG1sQXR0cnM6cHJvcHNUb1N0cmluZyh0Lmh0bWxBdHRycyksYm9keUF0dHJzOnByb3BzVG9TdHJpbmcodC5ib2R5QXR0cnMpfX0oci50YWdzKSxzPXt0YWdzOnIudGFncyxodG1sOm99O3JldHVybiBhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJzc3I6cmVuZGVyZWQiLHMpLHMuaHRtbH1sZXQgRWUsUGU7Y2xhc3MgRWZmZWN0U2NvcGV7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5kZXRhY2hlZD1lLHRoaXMuX2FjdGl2ZT0hMCx0aGlzLl9vbj0wLHRoaXMuZWZmZWN0cz1bXSx0aGlzLmNsZWFudXBzPVtdLHRoaXMuX2lzUGF1c2VkPSExLHRoaXMuX192X3NraXA9ITAsdGhpcy5wYXJlbnQ9RWUsIWUmJkVlJiYodGhpcy5pbmRleD0oRWUuc2NvcGVzfHwoRWUuc2NvcGVzPVtdKSkucHVzaCh0aGlzKS0xKX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX1wYXVzZSgpe2lmKHRoaXMuX2FjdGl2ZSl7bGV0IGUsdDtpZih0aGlzLl9pc1BhdXNlZD0hMCx0aGlzLnNjb3Blcylmb3IoZT0wLHQ9dGhpcy5zY29wZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5zY29wZXNbZV0ucGF1c2UoKTtmb3IoZT0wLHQ9dGhpcy5lZmZlY3RzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuZWZmZWN0c1tlXS5wYXVzZSgpfX1yZXN1bWUoKXtpZih0aGlzLl9hY3RpdmUmJnRoaXMuX2lzUGF1c2VkKXtsZXQgZSx0O2lmKHRoaXMuX2lzUGF1c2VkPSExLHRoaXMuc2NvcGVzKWZvcihlPTAsdD10aGlzLnNjb3Blcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLnNjb3Blc1tlXS5yZXN1bWUoKTtmb3IoZT0wLHQ9dGhpcy5lZmZlY3RzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuZWZmZWN0c1tlXS5yZXN1bWUoKX19cnVuKGUpe2lmKHRoaXMuX2FjdGl2ZSl7Y29uc3QgdD1FZTt0cnl7cmV0dXJuIEVlPXRoaXMsZSgpfWZpbmFsbHl7RWU9dH19fW9uKCl7MT09PSsrdGhpcy5fb24mJih0aGlzLnByZXZTY29wZT1FZSxFZT10aGlzKX1vZmYoKXt0aGlzLl9vbj4wJiYwPT09LS10aGlzLl9vbiYmKEVlPXRoaXMucHJldlNjb3BlLHRoaXMucHJldlNjb3BlPXZvaWQgMCl9c3RvcChlKXtpZih0aGlzLl9hY3RpdmUpe2xldCB0LG47Zm9yKHRoaXMuX2FjdGl2ZT0hMSx0PTAsbj10aGlzLmVmZmVjdHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5lZmZlY3RzW3RdLnN0b3AoKTtmb3IodGhpcy5lZmZlY3RzLmxlbmd0aD0wLHQ9MCxuPXRoaXMuY2xlYW51cHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5jbGVhbnVwc1t0XSgpO2lmKHRoaXMuY2xlYW51cHMubGVuZ3RoPTAsdGhpcy5zY29wZXMpe2Zvcih0PTAsbj10aGlzLnNjb3Blcy5sZW5ndGg7dDxuO3QrKyl0aGlzLnNjb3Blc1t0XS5zdG9wKCEwKTt0aGlzLnNjb3Blcy5sZW5ndGg9MH1pZighdGhpcy5kZXRhY2hlZCYmdGhpcy5wYXJlbnQmJiFlKXtjb25zdCBlPXRoaXMucGFyZW50LnNjb3Blcy5wb3AoKTtlJiZlIT09dGhpcyYmKHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XT1lLGUuaW5kZXg9dGhpcy5pbmRleCl9dGhpcy5wYXJlbnQ9dm9pZCAwfX19ZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCl7cmV0dXJuIEVlfWNvbnN0ICRlPW5ldyBXZWFrU2V0O2NsYXNzIFJlYWN0aXZlRWZmZWN0e2NvbnN0cnVjdG9yKGUpe3RoaXMuZm49ZSx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9NSx0aGlzLm5leHQ9dm9pZCAwLHRoaXMuY2xlYW51cD12b2lkIDAsdGhpcy5zY2hlZHVsZXI9dm9pZCAwLEVlJiZFZS5hY3RpdmUmJkVlLmVmZmVjdHMucHVzaCh0aGlzKX1wYXVzZSgpe3RoaXMuZmxhZ3N8PTY0fXJlc3VtZSgpezY0JnRoaXMuZmxhZ3MmJih0aGlzLmZsYWdzJj0tNjUsJGUuaGFzKHRoaXMpJiYoJGUuZGVsZXRlKHRoaXMpLHRoaXMudHJpZ2dlcigpKSl9bm90aWZ5KCl7MiZ0aGlzLmZsYWdzJiYhKDMyJnRoaXMuZmxhZ3MpfHw4JnRoaXMuZmxhZ3N8fGJhdGNoKHRoaXMpfXJ1bigpe2lmKCEoMSZ0aGlzLmZsYWdzKSlyZXR1cm4gdGhpcy5mbigpO3RoaXMuZmxhZ3N8PTIsY2xlYW51cEVmZmVjdCh0aGlzKSxwcmVwYXJlRGVwcyh0aGlzKTtjb25zdCBlPVBlLHQ9TWU7UGU9dGhpcyxNZT0hMDt0cnl7cmV0dXJuIHRoaXMuZm4oKX1maW5hbGx5e2NsZWFudXBEZXBzKHRoaXMpLFBlPWUsTWU9dCx0aGlzLmZsYWdzJj0tM319c3RvcCgpe2lmKDEmdGhpcy5mbGFncyl7Zm9yKGxldCBlPXRoaXMuZGVwcztlO2U9ZS5uZXh0RGVwKXJlbW92ZVN1YihlKTt0aGlzLmRlcHM9dGhpcy5kZXBzVGFpbD12b2lkIDAsY2xlYW51cEVmZmVjdCh0aGlzKSx0aGlzLm9uU3RvcCYmdGhpcy5vblN0b3AoKSx0aGlzLmZsYWdzJj0tMn19dHJpZ2dlcigpezY0JnRoaXMuZmxhZ3M/JGUuYWRkKHRoaXMpOnRoaXMuc2NoZWR1bGVyP3RoaXMuc2NoZWR1bGVyKCk6dGhpcy5ydW5JZkRpcnR5KCl9cnVuSWZEaXJ0eSgpe2lzRGlydHkodGhpcykmJnRoaXMucnVuKCl9Z2V0IGRpcnR5KCl7cmV0dXJuIGlzRGlydHkodGhpcyl9fWxldCBPZSxOZSxIZT0wO2Z1bmN0aW9uIGJhdGNoKGUsdD0hMSl7aWYoZS5mbGFnc3w9OCx0KXJldHVybiBlLm5leHQ9TmUsdm9pZChOZT1lKTtlLm5leHQ9T2UsT2U9ZX1mdW5jdGlvbiBzdGFydEJhdGNoKCl7SGUrK31mdW5jdGlvbiBlbmRCYXRjaCgpe2lmKC0tSGU+MClyZXR1cm47aWYoTmUpe2xldCBlPU5lO2ZvcihOZT12b2lkIDA7ZTspe2NvbnN0IHQ9ZS5uZXh0O2UubmV4dD12b2lkIDAsZS5mbGFncyY9LTksZT10fX1sZXQgZTtmb3IoO09lOyl7bGV0IHQ9T2U7Zm9yKE9lPXZvaWQgMDt0Oyl7Y29uc3Qgbj10Lm5leHQ7aWYodC5uZXh0PXZvaWQgMCx0LmZsYWdzJj0tOSwxJnQuZmxhZ3MpdHJ5e3QudHJpZ2dlcigpfWNhdGNoKHQpe2V8fChlPXQpfXQ9bn19aWYoZSl0aHJvdyBlfWZ1bmN0aW9uIHByZXBhcmVEZXBzKGUpe2ZvcihsZXQgdD1lLmRlcHM7dDt0PXQubmV4dERlcCl0LnZlcnNpb249LTEsdC5wcmV2QWN0aXZlTGluaz10LmRlcC5hY3RpdmVMaW5rLHQuZGVwLmFjdGl2ZUxpbms9dH1mdW5jdGlvbiBjbGVhbnVwRGVwcyhlKXtsZXQgdCxuPWUuZGVwc1RhaWwscj1uO2Zvcig7cjspe2NvbnN0IGU9ci5wcmV2RGVwOy0xPT09ci52ZXJzaW9uPyhyPT09biYmKG49ZSkscmVtb3ZlU3ViKHIpLHJlbW92ZURlcChyKSk6dD1yLHIuZGVwLmFjdGl2ZUxpbms9ci5wcmV2QWN0aXZlTGluayxyLnByZXZBY3RpdmVMaW5rPXZvaWQgMCxyPWV9ZS5kZXBzPXQsZS5kZXBzVGFpbD1ufWZ1bmN0aW9uIGlzRGlydHkoZSl7Zm9yKGxldCB0PWUuZGVwczt0O3Q9dC5uZXh0RGVwKWlmKHQuZGVwLnZlcnNpb24hPT10LnZlcnNpb258fHQuZGVwLmNvbXB1dGVkJiYocmVmcmVzaENvbXB1dGVkKHQuZGVwLmNvbXB1dGVkKXx8dC5kZXAudmVyc2lvbiE9PXQudmVyc2lvbikpcmV0dXJuITA7cmV0dXJuISFlLl9kaXJ0eX1mdW5jdGlvbiByZWZyZXNoQ29tcHV0ZWQoZSl7aWYoNCZlLmZsYWdzJiYhKDE2JmUuZmxhZ3MpKXJldHVybjtpZihlLmZsYWdzJj0tMTcsZS5nbG9iYWxWZXJzaW9uPT09amUpcmV0dXJuO2lmKGUuZ2xvYmFsVmVyc2lvbj1qZSwhZS5pc1NTUiYmMTI4JmUuZmxhZ3MmJighZS5kZXBzJiYhZS5fZGlydHl8fCFpc0RpcnR5KGUpKSlyZXR1cm47ZS5mbGFnc3w9Mjtjb25zdCB0PWUuZGVwLG49UGUscj1NZTtQZT1lLE1lPSEwO3RyeXtwcmVwYXJlRGVwcyhlKTtjb25zdCBuPWUuZm4oZS5fdmFsdWUpOygwPT09dC52ZXJzaW9ufHxrKG4sZS5fdmFsdWUpKSYmKGUuZmxhZ3N8PTEyOCxlLl92YWx1ZT1uLHQudmVyc2lvbisrKX1jYXRjaChlKXt0aHJvdyB0LnZlcnNpb24rKyxlfWZpbmFsbHl7UGU9bixNZT1yLGNsZWFudXBEZXBzKGUpLGUuZmxhZ3MmPS0zfX1mdW5jdGlvbiByZW1vdmVTdWIoZSx0PSExKXtjb25zdHtkZXA6bixwcmV2U3ViOnIsbmV4dFN1YjpvfT1lO2lmKHImJihyLm5leHRTdWI9byxlLnByZXZTdWI9dm9pZCAwKSxvJiYoby5wcmV2U3ViPXIsZS5uZXh0U3ViPXZvaWQgMCksbi5zdWJzPT09ZSYmKG4uc3Vicz1yLCFyJiZuLmNvbXB1dGVkKSl7bi5jb21wdXRlZC5mbGFncyY9LTU7Zm9yKGxldCBlPW4uY29tcHV0ZWQuZGVwcztlO2U9ZS5uZXh0RGVwKXJlbW92ZVN1YihlLCEwKX10fHwtLW4uc2N8fCFuLm1hcHx8bi5tYXAuZGVsZXRlKG4ua2V5KX1mdW5jdGlvbiByZW1vdmVEZXAoZSl7Y29uc3R7cHJldkRlcDp0LG5leHREZXA6bn09ZTt0JiYodC5uZXh0RGVwPW4sZS5wcmV2RGVwPXZvaWQgMCksbiYmKG4ucHJldkRlcD10LGUubmV4dERlcD12b2lkIDApfWxldCBNZT0hMDtjb25zdCBWZT1bXTtmdW5jdGlvbiBwYXVzZVRyYWNraW5nKCl7VmUucHVzaChNZSksTWU9ITF9ZnVuY3Rpb24gcmVzZXRUcmFja2luZygpe2NvbnN0IGU9VmUucG9wKCk7TWU9dm9pZCAwPT09ZXx8ZX1mdW5jdGlvbiBjbGVhbnVwRWZmZWN0KGUpe2NvbnN0e2NsZWFudXA6dH09ZTtpZihlLmNsZWFudXA9dm9pZCAwLHQpe2NvbnN0IGU9UGU7UGU9dm9pZCAwO3RyeXt0KCl9ZmluYWxseXtQZT1lfX19bGV0IGplPTA7Y2xhc3MgTGlua3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3ViPWUsdGhpcy5kZXA9dCx0aGlzLnZlcnNpb249dC52ZXJzaW9uLHRoaXMubmV4dERlcD10aGlzLnByZXZEZXA9dGhpcy5uZXh0U3ViPXRoaXMucHJldlN1Yj10aGlzLnByZXZBY3RpdmVMaW5rPXZvaWQgMH19Y2xhc3MgRGVwe2NvbnN0cnVjdG9yKGUpe3RoaXMuY29tcHV0ZWQ9ZSx0aGlzLnZlcnNpb249MCx0aGlzLmFjdGl2ZUxpbms9dm9pZCAwLHRoaXMuc3Vicz12b2lkIDAsdGhpcy5tYXA9dm9pZCAwLHRoaXMua2V5PXZvaWQgMCx0aGlzLnNjPTAsdGhpcy5fX3Zfc2tpcD0hMH10cmFjayhlKXtpZighUGV8fCFNZXx8UGU9PT10aGlzLmNvbXB1dGVkKXJldHVybjtsZXQgdD10aGlzLmFjdGl2ZUxpbms7aWYodm9pZCAwPT09dHx8dC5zdWIhPT1QZSl0PXRoaXMuYWN0aXZlTGluaz1uZXcgTGluayhQZSx0aGlzKSxQZS5kZXBzPyh0LnByZXZEZXA9UGUuZGVwc1RhaWwsUGUuZGVwc1RhaWwubmV4dERlcD10LFBlLmRlcHNUYWlsPXQpOlBlLmRlcHM9UGUuZGVwc1RhaWw9dCxhZGRTdWIodCk7ZWxzZSBpZigtMT09PXQudmVyc2lvbiYmKHQudmVyc2lvbj10aGlzLnZlcnNpb24sdC5uZXh0RGVwKSl7Y29uc3QgZT10Lm5leHREZXA7ZS5wcmV2RGVwPXQucHJldkRlcCx0LnByZXZEZXAmJih0LnByZXZEZXAubmV4dERlcD1lKSx0LnByZXZEZXA9UGUuZGVwc1RhaWwsdC5uZXh0RGVwPXZvaWQgMCxQZS5kZXBzVGFpbC5uZXh0RGVwPXQsUGUuZGVwc1RhaWw9dCxQZS5kZXBzPT09dCYmKFBlLmRlcHM9ZSl9cmV0dXJuIHR9dHJpZ2dlcihlKXt0aGlzLnZlcnNpb24rKyxqZSsrLHRoaXMubm90aWZ5KGUpfW5vdGlmeShlKXtzdGFydEJhdGNoKCk7dHJ5ezA7Zm9yKGxldCBlPXRoaXMuc3VicztlO2U9ZS5wcmV2U3ViKWUuc3ViLm5vdGlmeSgpJiZlLnN1Yi5kZXAubm90aWZ5KCl9ZmluYWxseXtlbmRCYXRjaCgpfX19ZnVuY3Rpb24gYWRkU3ViKGUpe2lmKGUuZGVwLnNjKyssNCZlLnN1Yi5mbGFncyl7Y29uc3QgdD1lLmRlcC5jb21wdXRlZDtpZih0JiYhZS5kZXAuc3Vicyl7dC5mbGFnc3w9MjA7Zm9yKGxldCBlPXQuZGVwcztlO2U9ZS5uZXh0RGVwKWFkZFN1YihlKX1jb25zdCBuPWUuZGVwLnN1YnM7biE9PWUmJihlLnByZXZTdWI9bixuJiYobi5uZXh0U3ViPWUpKSxlLmRlcC5zdWJzPWV9fWNvbnN0IEllPW5ldyBXZWFrTWFwLERlPVN5bWJvbCgiIiksTGU9U3ltYm9sKCIiKSxGZT1TeW1ib2woIiIpO2Z1bmN0aW9uIHRyYWNrKGUsdCxuKXtpZihNZSYmUGUpe2xldCB0PUllLmdldChlKTt0fHxJZS5zZXQoZSx0PW5ldyBNYXApO2xldCByPXQuZ2V0KG4pO3J8fCh0LnNldChuLHI9bmV3IERlcCksci5tYXA9dCxyLmtleT1uKSxyLnRyYWNrKCl9fWZ1bmN0aW9uIHRyaWdnZXIoZSx0LG4scixvLHMpe2NvbnN0IGk9SWUuZ2V0KGUpO2lmKCFpKXJldHVybiB2b2lkIGplKys7Y29uc3QgcnVuPWU9PntlJiZlLnRyaWdnZXIoKX07aWYoc3RhcnRCYXRjaCgpLCJjbGVhciI9PT10KWkuZm9yRWFjaChydW4pO2Vsc2V7Y29uc3Qgbz15KGUpLHM9byYmVChuKTtpZihvJiYibGVuZ3RoIj09PW4pe2NvbnN0IGU9TnVtYmVyKHIpO2kuZm9yRWFjaCgodCxuKT0+eygibGVuZ3RoIj09PW58fG49PT1GZXx8IWcobikmJm4+PWUpJiZydW4odCl9KX1lbHNlIHN3aXRjaCgodm9pZCAwIT09bnx8aS5oYXModm9pZCAwKSkmJnJ1bihpLmdldChuKSkscyYmcnVuKGkuZ2V0KEZlKSksdCl7Y2FzZSJhZGQiOm8/cyYmcnVuKGkuZ2V0KCJsZW5ndGgiKSk6KHJ1bihpLmdldChEZSkpLEMoZSkmJnJ1bihpLmdldChMZSkpKTticmVhaztjYXNlImRlbGV0ZSI6b3x8KHJ1bihpLmdldChEZSkpLEMoZSkmJnJ1bihpLmdldChMZSkpKTticmVhaztjYXNlInNldCI6QyhlKSYmcnVuKGkuZ2V0KERlKSl9fWVuZEJhdGNoKCl9ZnVuY3Rpb24gcmVhY3RpdmVSZWFkQXJyYXkoZSl7Y29uc3QgdD10b1JhdyhlKTtyZXR1cm4gdD09PWU/dDoodHJhY2sodCwwLEZlKSxpc1NoYWxsb3coZSk/dDp0Lm1hcCh0b1JlYWN0aXZlKSl9ZnVuY3Rpb24gc2hhbGxvd1JlYWRBcnJheShlKXtyZXR1cm4gdHJhY2soZT10b1JhdyhlKSwwLEZlKSxlfWZ1bmN0aW9uIHRvV3JhcHBlZChlLHQpe3JldHVybiBpc1JlYWRvbmx5KGUpP2lzUmVhY3RpdmUoZSk/dG9SZWFkb25seSh0b1JlYWN0aXZlKHQpKTp0b1JlYWRvbmx5KHQpOnRvUmVhY3RpdmUodCl9Y29uc3QgQmU9e19fcHJvdG9fXzpudWxsLFtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGl0ZXJhdG9yKHRoaXMsU3ltYm9sLml0ZXJhdG9yLGU9PnRvV3JhcHBlZCh0aGlzLGUpKX0sY29uY2F0KC4uLmUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS5jb25jYXQoLi4uZS5tYXAoZT0+eShlKT9yZWFjdGl2ZVJlYWRBcnJheShlKTplKSl9LGVudHJpZXMoKXtyZXR1cm4gaXRlcmF0b3IodGhpcywiZW50cmllcyIsZT0+KGVbMV09dG9XcmFwcGVkKHRoaXMsZVsxXSksZSkpfSxldmVyeShlLHQpe3JldHVybiBhcHBseSh0aGlzLCJldmVyeSIsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxmaWx0ZXIoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywiZmlsdGVyIixlLHQsZT0+ZS5tYXAoZT0+dG9XcmFwcGVkKHRoaXMsZSkpLGFyZ3VtZW50cyl9LGZpbmQoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywiZmluZCIsZSx0LGU9PnRvV3JhcHBlZCh0aGlzLGUpLGFyZ3VtZW50cyl9LGZpbmRJbmRleChlLHQpe3JldHVybiBhcHBseSh0aGlzLCJmaW5kSW5kZXgiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZmluZExhc3QoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywiZmluZExhc3QiLGUsdCxlPT50b1dyYXBwZWQodGhpcyxlKSxhcmd1bWVudHMpfSxmaW5kTGFzdEluZGV4KGUsdCl7cmV0dXJuIGFwcGx5KHRoaXMsImZpbmRMYXN0SW5kZXgiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZm9yRWFjaChlLHQpe3JldHVybiBhcHBseSh0aGlzLCJmb3JFYWNoIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGluY2x1ZGVzKC4uLmUpe3JldHVybiBzZWFyY2hQcm94eSh0aGlzLCJpbmNsdWRlcyIsZSl9LGluZGV4T2YoLi4uZSl7cmV0dXJuIHNlYXJjaFByb3h5KHRoaXMsImluZGV4T2YiLGUpfSxqb2luKGUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS5qb2luKGUpfSxsYXN0SW5kZXhPZiguLi5lKXtyZXR1cm4gc2VhcmNoUHJveHkodGhpcywibGFzdEluZGV4T2YiLGUpfSxtYXAoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywibWFwIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LHBvcCgpe3JldHVybiBub1RyYWNraW5nKHRoaXMsInBvcCIpfSxwdXNoKC4uLmUpe3JldHVybiBub1RyYWNraW5nKHRoaXMsInB1c2giLGUpfSxyZWR1Y2UoZSwuLi50KXtyZXR1cm4gcmVkdWNlKHRoaXMsInJlZHVjZSIsZSx0KX0scmVkdWNlUmlnaHQoZSwuLi50KXtyZXR1cm4gcmVkdWNlKHRoaXMsInJlZHVjZVJpZ2h0IixlLHQpfSxzaGlmdCgpe3JldHVybiBub1RyYWNraW5nKHRoaXMsInNoaWZ0Iil9LHNvbWUoZSx0KXtyZXR1cm4gYXBwbHkodGhpcywic29tZSIsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxzcGxpY2UoLi4uZSl7cmV0dXJuIG5vVHJhY2tpbmcodGhpcywic3BsaWNlIixlKX0sdG9SZXZlcnNlZCgpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS50b1JldmVyc2VkKCl9LHRvU29ydGVkKGUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS50b1NvcnRlZChlKX0sdG9TcGxpY2VkKC4uLmUpe3JldHVybiByZWFjdGl2ZVJlYWRBcnJheSh0aGlzKS50b1NwbGljZWQoLi4uZSl9LHVuc2hpZnQoLi4uZSl7cmV0dXJuIG5vVHJhY2tpbmcodGhpcywidW5zaGlmdCIsZSl9LHZhbHVlcygpe3JldHVybiBpdGVyYXRvcih0aGlzLCJ2YWx1ZXMiLGU9PnRvV3JhcHBlZCh0aGlzLGUpKX19O2Z1bmN0aW9uIGl0ZXJhdG9yKGUsdCxuKXtjb25zdCByPXNoYWxsb3dSZWFkQXJyYXkoZSksbz1yW3RdKCk7cmV0dXJuIHI9PT1lfHxpc1NoYWxsb3coZSl8fChvLl9uZXh0PW8ubmV4dCxvLm5leHQ9KCk9Pntjb25zdCBlPW8uX25leHQoKTtyZXR1cm4gZS5kb25lfHwoZS52YWx1ZT1uKGUudmFsdWUpKSxlfSksb31jb25zdCBVZT1BcnJheS5wcm90b3R5cGU7ZnVuY3Rpb24gYXBwbHkoZSx0LG4scixvLHMpe2NvbnN0IGk9c2hhbGxvd1JlYWRBcnJheShlKSxhPWkhPT1lJiYhaXNTaGFsbG93KGUpLGw9aVt0XTtpZihsIT09VWVbdF0pe2NvbnN0IHQ9bC5hcHBseShlLHMpO3JldHVybiBhP3RvUmVhY3RpdmUodCk6dH1sZXQgYz1uO2khPT1lJiYoYT9jPWZ1bmN0aW9uKHQscil7cmV0dXJuIG4uY2FsbCh0aGlzLHRvV3JhcHBlZChlLHQpLHIsZSl9Om4ubGVuZ3RoPjImJihjPWZ1bmN0aW9uKHQscil7cmV0dXJuIG4uY2FsbCh0aGlzLHQscixlKX0pKTtjb25zdCB1PWwuY2FsbChpLGMscik7cmV0dXJuIGEmJm8/byh1KTp1fWZ1bmN0aW9uIHJlZHVjZShlLHQsbixyKXtjb25zdCBvPXNoYWxsb3dSZWFkQXJyYXkoZSkscz1vIT09ZSYmIWlzU2hhbGxvdyhlKTtsZXQgaT1uLGE9ITE7byE9PWUmJihzPyhhPTA9PT1yLmxlbmd0aCxpPWZ1bmN0aW9uKHQscixvKXtyZXR1cm4gYSYmKGE9ITEsdD10b1dyYXBwZWQoZSx0KSksbi5jYWxsKHRoaXMsdCx0b1dyYXBwZWQoZSxyKSxvLGUpfSk6bi5sZW5ndGg+MyYmKGk9ZnVuY3Rpb24odCxyLG8pe3JldHVybiBuLmNhbGwodGhpcyx0LHIsbyxlKX0pKTtjb25zdCBsPW9bdF0oaSwuLi5yKTtyZXR1cm4gYT90b1dyYXBwZWQoZSxsKTpsfWZ1bmN0aW9uIHNlYXJjaFByb3h5KGUsdCxuKXtjb25zdCByPXRvUmF3KGUpO3RyYWNrKHIsMCxGZSk7Y29uc3Qgbz1yW3RdKC4uLm4pO3JldHVybi0xIT09byYmITEhPT1vfHwhaXNQcm94eShuWzBdKT9vOihuWzBdPXRvUmF3KG5bMF0pLHJbdF0oLi4ubikpfWZ1bmN0aW9uIG5vVHJhY2tpbmcoZSx0LG49W10pe3BhdXNlVHJhY2tpbmcoKSxzdGFydEJhdGNoKCk7Y29uc3Qgcj10b1JhdyhlKVt0XS5hcHBseShlLG4pO3JldHVybiBlbmRCYXRjaCgpLHJlc2V0VHJhY2tpbmcoKSxyfWNvbnN0IFdlPVIoIl9fcHJvdG9fXyxfX3ZfaXNSZWYsX19pc1Z1ZSIpLHplPW5ldyBTZXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKS5maWx0ZXIoZT0+ImFyZ3VtZW50cyIhPT1lJiYiY2FsbGVyIiE9PWUpLm1hcChlPT5TeW1ib2xbZV0pLmZpbHRlcihnKSk7ZnVuY3Rpb24gaGFzT3duUHJvcGVydHkoZSl7ZyhlKXx8KGU9U3RyaW5nKGUpKTtjb25zdCB0PXRvUmF3KHRoaXMpO3JldHVybiB0cmFjayh0LDAsZSksdC5oYXNPd25Qcm9wZXJ0eShlKX1jbGFzcyBCYXNlUmVhY3RpdmVIYW5kbGVye2NvbnN0cnVjdG9yKGU9ITEsdD0hMSl7dGhpcy5faXNSZWFkb25seT1lLHRoaXMuX2lzU2hhbGxvdz10fWdldChlLHQsbil7aWYoIl9fdl9za2lwIj09PXQpcmV0dXJuIGUuX192X3NraXA7Y29uc3Qgcj10aGlzLl9pc1JlYWRvbmx5LG89dGhpcy5faXNTaGFsbG93O2lmKCJfX3ZfaXNSZWFjdGl2ZSI9PT10KXJldHVybiFyO2lmKCJfX3ZfaXNSZWFkb25seSI9PT10KXJldHVybiByO2lmKCJfX3ZfaXNTaGFsbG93Ij09PXQpcmV0dXJuIG87aWYoIl9fdl9yYXciPT09dClyZXR1cm4gbj09PShyP28/cnQ6bnQ6bz90dDpldCkuZ2V0KGUpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik/ZTp2b2lkIDA7Y29uc3Qgcz15KGUpO2lmKCFyKXtsZXQgZTtpZihzJiYoZT1CZVt0XSkpcmV0dXJuIGU7aWYoImhhc093blByb3BlcnR5Ij09PXQpcmV0dXJuIGhhc093blByb3BlcnR5fWNvbnN0IGk9UmVmbGVjdC5nZXQoZSx0LGlzUmVmKGUpP2U6bik7aWYoZyh0KT96ZS5oYXModCk6V2UodCkpcmV0dXJuIGk7aWYocnx8dHJhY2soZSwwLHQpLG8pcmV0dXJuIGk7aWYoaXNSZWYoaSkpe2NvbnN0IGU9cyYmVCh0KT9pOmkudmFsdWU7cmV0dXJuIHImJmIoZSk/cmVhZG9ubHkoZSk6ZX1yZXR1cm4gYihpKT9yP3JlYWRvbmx5KGkpOnJlYWN0aXZlKGkpOml9fWNsYXNzIE11dGFibGVSZWFjdGl2ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlUmVhY3RpdmVIYW5kbGVye2NvbnN0cnVjdG9yKGU9ITEpe3N1cGVyKCExLGUpfXNldChlLHQsbixyKXtsZXQgbz1lW3RdO2NvbnN0IHM9eShlKSYmVCh0KTtpZighdGhpcy5faXNTaGFsbG93KXtjb25zdCBlPWlzUmVhZG9ubHkobyk7aWYoaXNTaGFsbG93KG4pfHxpc1JlYWRvbmx5KG4pfHwobz10b1JhdyhvKSxuPXRvUmF3KG4pKSwhcyYmaXNSZWYobykmJiFpc1JlZihuKSlyZXR1cm4gZXx8KG8udmFsdWU9biksITB9Y29uc3QgaT1zP051bWJlcih0KTxlLmxlbmd0aDp2KGUsdCksYT1SZWZsZWN0LnNldChlLHQsbixpc1JlZihlKT9lOnIpO3JldHVybiBlPT09dG9SYXcocikmJihpP2sobixvKSYmdHJpZ2dlcihlLCJzZXQiLHQsbik6dHJpZ2dlcihlLCJhZGQiLHQsbikpLGF9ZGVsZXRlUHJvcGVydHkoZSx0KXtjb25zdCBuPXYoZSx0KTtlW3RdO2NvbnN0IHI9UmVmbGVjdC5kZWxldGVQcm9wZXJ0eShlLHQpO3JldHVybiByJiZuJiZ0cmlnZ2VyKGUsImRlbGV0ZSIsdCx2b2lkIDApLHJ9aGFzKGUsdCl7Y29uc3Qgbj1SZWZsZWN0LmhhcyhlLHQpO3JldHVybiBnKHQpJiZ6ZS5oYXModCl8fHRyYWNrKGUsMCx0KSxufW93bktleXMoZSl7cmV0dXJuIHRyYWNrKGUsMCx5KGUpPyJsZW5ndGgiOkRlKSxSZWZsZWN0Lm93bktleXMoZSl9fWNsYXNzIFJlYWRvbmx5UmVhY3RpdmVIYW5kbGVyIGV4dGVuZHMgQmFzZVJlYWN0aXZlSGFuZGxlcntjb25zdHJ1Y3RvcihlPSExKXtzdXBlcighMCxlKX1zZXQoZSx0KXtyZXR1cm4hMH1kZWxldGVQcm9wZXJ0eShlLHQpe3JldHVybiEwfX1jb25zdCBxZT1uZXcgTXV0YWJsZVJlYWN0aXZlSGFuZGxlcixLZT1uZXcgUmVhZG9ubHlSZWFjdGl2ZUhhbmRsZXIsSmU9bmV3IE11dGFibGVSZWFjdGl2ZUhhbmRsZXIoITApLEdlPW5ldyBSZWFkb25seVJlYWN0aXZlSGFuZGxlcighMCksdG9TaGFsbG93PWU9PmUsZ2V0UHJvdG89ZT0+UmVmbGVjdC5nZXRQcm90b3R5cGVPZihlKTtmdW5jdGlvbiBjcmVhdGVSZWFkb25seU1ldGhvZChlKXtyZXR1cm4gZnVuY3Rpb24oLi4udCl7cmV0dXJuImRlbGV0ZSIhPT1lJiYoImNsZWFyIj09PWU/dm9pZCAwOnRoaXMpfX1mdW5jdGlvbiBjcmVhdGVJbnN0cnVtZW50YXRpb25zKGUsdCl7Y29uc3Qgbj17Z2V0KG4pe2NvbnN0IHI9dGhpcy5fX3ZfcmF3LG89dG9SYXcocikscz10b1JhdyhuKTtlfHwoayhuLHMpJiZ0cmFjayhvLDAsbiksdHJhY2sobywwLHMpKTtjb25zdHtoYXM6aX09Z2V0UHJvdG8obyksYT10P3RvU2hhbGxvdzplP3RvUmVhZG9ubHk6dG9SZWFjdGl2ZTtyZXR1cm4gaS5jYWxsKG8sbik/YShyLmdldChuKSk6aS5jYWxsKG8scyk/YShyLmdldChzKSk6dm9pZChyIT09byYmci5nZXQobikpfSxnZXQgc2l6ZSgpe2NvbnN0IHQ9dGhpcy5fX3ZfcmF3O3JldHVybiFlJiZ0cmFjayh0b1Jhdyh0KSwwLERlKSx0LnNpemV9LGhhcyh0KXtjb25zdCBuPXRoaXMuX192X3JhdyxyPXRvUmF3KG4pLG89dG9SYXcodCk7cmV0dXJuIGV8fChrKHQsbykmJnRyYWNrKHIsMCx0KSx0cmFjayhyLDAsbykpLHQ9PT1vP24uaGFzKHQpOm4uaGFzKHQpfHxuLmhhcyhvKX0sZm9yRWFjaChuLHIpe2NvbnN0IG89dGhpcyxzPW8uX192X3JhdyxpPXRvUmF3KHMpLGE9dD90b1NoYWxsb3c6ZT90b1JlYWRvbmx5OnRvUmVhY3RpdmU7cmV0dXJuIWUmJnRyYWNrKGksMCxEZSkscy5mb3JFYWNoKChlLHQpPT5uLmNhbGwocixhKGUpLGEodCksbykpfX07dyhuLGU/e2FkZDpjcmVhdGVSZWFkb25seU1ldGhvZCgiYWRkIiksc2V0OmNyZWF0ZVJlYWRvbmx5TWV0aG9kKCJzZXQiKSxkZWxldGU6Y3JlYXRlUmVhZG9ubHlNZXRob2QoImRlbGV0ZSIpLGNsZWFyOmNyZWF0ZVJlYWRvbmx5TWV0aG9kKCJjbGVhciIpfTp7YWRkKGUpe2NvbnN0IG49dG9SYXcodGhpcykscj1nZXRQcm90byhuKSxvPXRvUmF3KGUpLHM9dHx8aXNTaGFsbG93KGUpfHxpc1JlYWRvbmx5KGUpP2U6bztyZXR1cm4gci5oYXMuY2FsbChuLHMpfHxrKGUscykmJnIuaGFzLmNhbGwobixlKXx8ayhvLHMpJiZyLmhhcy5jYWxsKG4sbyl8fChuLmFkZChzKSx0cmlnZ2VyKG4sImFkZCIscyxzKSksdGhpc30sc2V0KGUsbil7dHx8aXNTaGFsbG93KG4pfHxpc1JlYWRvbmx5KG4pfHwobj10b1JhdyhuKSk7Y29uc3Qgcj10b1Jhdyh0aGlzKSx7aGFzOm8sZ2V0OnN9PWdldFByb3RvKHIpO2xldCBpPW8uY2FsbChyLGUpO2l8fChlPXRvUmF3KGUpLGk9by5jYWxsKHIsZSkpO2NvbnN0IGE9cy5jYWxsKHIsZSk7cmV0dXJuIHIuc2V0KGUsbiksaT9rKG4sYSkmJnRyaWdnZXIociwic2V0IixlLG4pOnRyaWdnZXIociwiYWRkIixlLG4pLHRoaXN9LGRlbGV0ZShlKXtjb25zdCB0PXRvUmF3KHRoaXMpLHtoYXM6bixnZXQ6cn09Z2V0UHJvdG8odCk7bGV0IG89bi5jYWxsKHQsZSk7b3x8KGU9dG9SYXcoZSksbz1uLmNhbGwodCxlKSksciYmci5jYWxsKHQsZSk7Y29uc3Qgcz10LmRlbGV0ZShlKTtyZXR1cm4gbyYmdHJpZ2dlcih0LCJkZWxldGUiLGUsdm9pZCAwKSxzfSxjbGVhcigpe2NvbnN0IGU9dG9SYXcodGhpcyksdD0wIT09ZS5zaXplLG49ZS5jbGVhcigpO3JldHVybiB0JiZ0cmlnZ2VyKGUsImNsZWFyIix2b2lkIDAsdm9pZCAwKSxufX0pO3JldHVyblsia2V5cyIsInZhbHVlcyIsImVudHJpZXMiLFN5bWJvbC5pdGVyYXRvcl0uZm9yRWFjaChyPT57bltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe2NvbnN0IG89dGhpcy5fX3ZfcmF3LHM9dG9SYXcobyksaT1DKHMpLGE9ImVudHJpZXMiPT09ZXx8ZT09PVN5bWJvbC5pdGVyYXRvciYmaSxsPSJrZXlzIj09PWUmJmksYz1vW2VdKC4uLnIpLHU9bj90b1NoYWxsb3c6dD90b1JlYWRvbmx5OnRvUmVhY3RpdmU7cmV0dXJuIXQmJnRyYWNrKHMsMCxsP0xlOkRlKSx3KE9iamVjdC5jcmVhdGUoYykse25leHQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09Yy5uZXh0KCk7cmV0dXJuIHQ/e3ZhbHVlOmUsZG9uZTp0fTp7dmFsdWU6YT9bdShlWzBdKSx1KGVbMV0pXTp1KGUpLGRvbmU6dH19fSl9fShyLGUsdCl9KSxufWZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihlLHQpe2NvbnN0IG49Y3JlYXRlSW5zdHJ1bWVudGF0aW9ucyhlLHQpO3JldHVybih0LHIsbyk9PiJfX3ZfaXNSZWFjdGl2ZSI9PT1yPyFlOiJfX3ZfaXNSZWFkb25seSI9PT1yP2U6Il9fdl9yYXciPT09cj90OlJlZmxlY3QuZ2V0KHYobixyKSYmciBpbiB0P246dCxyLG8pfWNvbnN0IFplPXtnZXQ6Y3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKCExLCExKX0sWGU9e2dldDpjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIoITEsITApfSxZZT17Z2V0OmNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcighMCwhMSl9LFFlPXtnZXQ6Y3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKCEwLCEwKX0sZXQ9bmV3IFdlYWtNYXAsdHQ9bmV3IFdlYWtNYXAsbnQ9bmV3IFdlYWtNYXAscnQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcmVhY3RpdmUoZSl7cmV0dXJuIGlzUmVhZG9ubHkoZSk/ZTpjcmVhdGVSZWFjdGl2ZU9iamVjdChlLCExLHFlLFplLGV0KX1mdW5jdGlvbiBzaGFsbG93UmVhY3RpdmUoZSl7cmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KGUsITEsSmUsWGUsdHQpfWZ1bmN0aW9uIHJlYWRvbmx5KGUpe3JldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdChlLCEwLEtlLFllLG50KX1mdW5jdGlvbiBzaGFsbG93UmVhZG9ubHkoZSl7cmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KGUsITAsR2UsUWUscnQpfWZ1bmN0aW9uIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KGUsdCxuLHIsbyl7aWYoIWIoZSkpcmV0dXJuIGU7aWYoZS5fX3ZfcmF3JiYoIXR8fCFlLl9fdl9pc1JlYWN0aXZlKSlyZXR1cm4gZTtjb25zdCBzPShpPWUpLl9fdl9za2lwfHwhT2JqZWN0LmlzRXh0ZW5zaWJsZShpKT8wOmZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIk9iamVjdCI6Y2FzZSJBcnJheSI6cmV0dXJuIDE7Y2FzZSJNYXAiOmNhc2UiU2V0IjpjYXNlIldlYWtNYXAiOmNhc2UiV2Vha1NldCI6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19KFMoaSkpO3ZhciBpO2lmKDA9PT1zKXJldHVybiBlO2NvbnN0IGE9by5nZXQoZSk7aWYoYSlyZXR1cm4gYTtjb25zdCBsPW5ldyBQcm94eShlLDI9PT1zP3I6bik7cmV0dXJuIG8uc2V0KGUsbCksbH1mdW5jdGlvbiBpc1JlYWN0aXZlKGUpe3JldHVybiBpc1JlYWRvbmx5KGUpP2lzUmVhY3RpdmUoZS5fX3ZfcmF3KTohKCFlfHwhZS5fX3ZfaXNSZWFjdGl2ZSl9ZnVuY3Rpb24gaXNSZWFkb25seShlKXtyZXR1cm4hKCFlfHwhZS5fX3ZfaXNSZWFkb25seSl9ZnVuY3Rpb24gaXNTaGFsbG93KGUpe3JldHVybiEoIWV8fCFlLl9fdl9pc1NoYWxsb3cpfWZ1bmN0aW9uIGlzUHJveHkoZSl7cmV0dXJuISFlJiYhIWUuX192X3Jhd31mdW5jdGlvbiB0b1JhdyhlKXtjb25zdCB0PWUmJmUuX192X3JhdztyZXR1cm4gdD90b1Jhdyh0KTplfWZ1bmN0aW9uIG1hcmtSYXcoZSl7cmV0dXJuIXYoZSwiX192X3NraXAiKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmXyhlLCJfX3Zfc2tpcCIsITApLGV9Y29uc3QgdG9SZWFjdGl2ZT1lPT5iKGUpP3JlYWN0aXZlKGUpOmUsdG9SZWFkb25seT1lPT5iKGUpP3JlYWRvbmx5KGUpOmU7ZnVuY3Rpb24gaXNSZWYoZSl7cmV0dXJuISFlJiYhMD09PWUuX192X2lzUmVmfWZ1bmN0aW9uIHJlZihlKXtyZXR1cm4gY3JlYXRlUmVmKGUsITEpfWZ1bmN0aW9uIHNoYWxsb3dSZWYoZSl7cmV0dXJuIGNyZWF0ZVJlZihlLCEwKX1mdW5jdGlvbiBjcmVhdGVSZWYoZSx0KXtyZXR1cm4gaXNSZWYoZSk/ZTpuZXcgUmVmSW1wbChlLHQpfWNsYXNzIFJlZkltcGx7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRlcD1uZXcgRGVwLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzU2hhbGxvdz0hMSx0aGlzLl9yYXdWYWx1ZT10P2U6dG9SYXcoZSksdGhpcy5fdmFsdWU9dD9lOnRvUmVhY3RpdmUoZSksdGhpcy5fX3ZfaXNTaGFsbG93PXR9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGVwLnRyYWNrKCksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5fcmF3VmFsdWUsbj10aGlzLl9fdl9pc1NoYWxsb3d8fGlzU2hhbGxvdyhlKXx8aXNSZWFkb25seShlKTtlPW4/ZTp0b1JhdyhlKSxrKGUsdCkmJih0aGlzLl9yYXdWYWx1ZT1lLHRoaXMuX3ZhbHVlPW4/ZTp0b1JlYWN0aXZlKGUpLHRoaXMuZGVwLnRyaWdnZXIoKSl9fWZ1bmN0aW9uIHVucmVmKGUpe3JldHVybiBpc1JlZihlKT9lLnZhbHVlOmV9ZnVuY3Rpb24gdG9WYWx1ZShlKXtyZXR1cm4gZihlKT9lKCk6dW5yZWYoZSl9Y29uc3Qgb3Q9e2dldDooZSx0LG4pPT4iX192X3JhdyI9PT10P2U6dW5yZWYoUmVmbGVjdC5nZXQoZSx0LG4pKSxzZXQ6KGUsdCxuLHIpPT57Y29uc3Qgbz1lW3RdO3JldHVybiBpc1JlZihvKSYmIWlzUmVmKG4pPyhvLnZhbHVlPW4sITApOlJlZmxlY3Quc2V0KGUsdCxuLHIpfX07ZnVuY3Rpb24gcHJveHlSZWZzKGUpe3JldHVybiBpc1JlYWN0aXZlKGUpP2U6bmV3IFByb3h5KGUsb3QpfWNsYXNzIEN1c3RvbVJlZkltcGx7Y29uc3RydWN0b3IoZSl7dGhpcy5fX3ZfaXNSZWY9ITAsdGhpcy5fdmFsdWU9dm9pZCAwO2NvbnN0IHQ9dGhpcy5kZXA9bmV3IERlcCx7Z2V0Om4sc2V0OnJ9PWUodC50cmFjay5iaW5kKHQpLHQudHJpZ2dlci5iaW5kKHQpKTt0aGlzLl9nZXQ9bix0aGlzLl9zZXQ9cn1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWU9dGhpcy5fZ2V0KCl9c2V0IHZhbHVlKGUpe3RoaXMuX3NldChlKX19ZnVuY3Rpb24gY3VzdG9tUmVmKGUpe3JldHVybiBuZXcgQ3VzdG9tUmVmSW1wbChlKX1jbGFzcyBPYmplY3RSZWZJbXBse2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl9vYmplY3Q9ZSx0aGlzLl9kZWZhdWx0VmFsdWU9bix0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLl92YWx1ZT12b2lkIDAsdGhpcy5fa2V5PWcodCk/dDpTdHJpbmcodCksdGhpcy5fcmF3PXRvUmF3KGUpO2xldCByPSEwLG89ZTtpZigheShlKXx8Zyh0aGlzLl9rZXkpfHwhVCh0aGlzLl9rZXkpKWRve3I9IWlzUHJveHkobyl8fGlzU2hhbGxvdyhvKX13aGlsZShyJiYobz1vLl9fdl9yYXcpKTt0aGlzLl9zaGFsbG93PXJ9Z2V0IHZhbHVlKCl7bGV0IGU9dGhpcy5fb2JqZWN0W3RoaXMuX2tleV07cmV0dXJuIHRoaXMuX3NoYWxsb3cmJihlPXVucmVmKGUpKSx0aGlzLl92YWx1ZT12b2lkIDA9PT1lP3RoaXMuX2RlZmF1bHRWYWx1ZTplfXNldCB2YWx1ZShlKXtpZih0aGlzLl9zaGFsbG93JiZpc1JlZih0aGlzLl9yYXdbdGhpcy5fa2V5XSkpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0W3RoaXMuX2tleV07aWYoaXNSZWYodCkpcmV0dXJuIHZvaWQodC52YWx1ZT1lKX10aGlzLl9vYmplY3RbdGhpcy5fa2V5XT1lfWdldCBkZXAoKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtjb25zdCBuPUllLmdldChlKTtyZXR1cm4gbiYmbi5nZXQodCl9KHRoaXMuX3Jhdyx0aGlzLl9rZXkpfX1jbGFzcyBHZXR0ZXJSZWZJbXBse2NvbnN0cnVjdG9yKGUpe3RoaXMuX2dldHRlcj1lLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzUmVhZG9ubHk9ITAsdGhpcy5fdmFsdWU9dm9pZCAwfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXR0ZXIoKX19ZnVuY3Rpb24gcHJvcGVydHlUb1JlZihlLHQsbil7cmV0dXJuIG5ldyBPYmplY3RSZWZJbXBsKGUsdCxuKX1jbGFzcyBDb21wdXRlZFJlZkltcGx7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuZm49ZSx0aGlzLnNldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLmRlcD1uZXcgRGVwKHRoaXMpLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuZGVwcz12b2lkIDAsdGhpcy5kZXBzVGFpbD12b2lkIDAsdGhpcy5mbGFncz0xNix0aGlzLmdsb2JhbFZlcnNpb249amUtMSx0aGlzLm5leHQ9dm9pZCAwLHRoaXMuZWZmZWN0PXRoaXMsdGhpcy5fX3ZfaXNSZWFkb25seT0hdCx0aGlzLmlzU1NSPW59bm90aWZ5KCl7aWYodGhpcy5mbGFnc3w9MTYsISg4JnRoaXMuZmxhZ3MpJiZQZSE9PXRoaXMpcmV0dXJuIGJhdGNoKHRoaXMsITApLCEwfWdldCB2YWx1ZSgpe2NvbnN0IGU9dGhpcy5kZXAudHJhY2soKTtyZXR1cm4gcmVmcmVzaENvbXB1dGVkKHRoaXMpLGUmJihlLnZlcnNpb249dGhpcy5kZXAudmVyc2lvbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe3RoaXMuc2V0dGVyJiZ0aGlzLnNldHRlcihlKX19Y29uc3Qgc3Q9e30saXQ9bmV3IFdlYWtNYXA7bGV0IGF0O2Z1bmN0aW9uIG9uV2F0Y2hlckNsZWFudXAoZSx0PSExLG49YXQpe2lmKG4pe2xldCB0PWl0LmdldChuKTt0fHxpdC5zZXQobix0PVtdKSx0LnB1c2goZSl9fWZ1bmN0aW9uIHRyYXZlcnNlKGUsdD0xLzAsbil7aWYodDw9MHx8IWIoZSl8fGUuX192X3NraXApcmV0dXJuIGU7aWYoKChuPW58fG5ldyBNYXApLmdldChlKXx8MCk+PXQpcmV0dXJuIGU7aWYobi5zZXQoZSx0KSx0LS0saXNSZWYoZSkpdHJhdmVyc2UoZS52YWx1ZSx0LG4pO2Vsc2UgaWYoeShlKSlmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl0cmF2ZXJzZShlW3JdLHQsbik7ZWxzZSBpZih4KGUpfHxDKGUpKWUuZm9yRWFjaChlPT57dHJhdmVyc2UoZSx0LG4pfSk7ZWxzZSBpZihFKGUpKXtmb3IoY29uc3QgciBpbiBlKXRyYXZlcnNlKGVbcl0sdCxuKTtmb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpKU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiZ0cmF2ZXJzZShlW3JdLHQsbil9cmV0dXJuIGV9Y29uc3QgbHQ9W107Y29uc3QgY3Q9e3NwOiJzZXJ2ZXJQcmVmZXRjaCBob29rIixiYzoiYmVmb3JlQ3JlYXRlIGhvb2siLGM6ImNyZWF0ZWQgaG9vayIsYm06ImJlZm9yZU1vdW50IGhvb2siLG06Im1vdW50ZWQgaG9vayIsYnU6ImJlZm9yZVVwZGF0ZSBob29rIix1OiJ1cGRhdGVkIixidW06ImJlZm9yZVVubW91bnQgaG9vayIsdW06InVubW91bnRlZCBob29rIixhOiJhY3RpdmF0ZWQgaG9vayIsZGE6ImRlYWN0aXZhdGVkIGhvb2siLGVjOiJlcnJvckNhcHR1cmVkIGhvb2siLHJ0YzoicmVuZGVyVHJhY2tlZCBob29rIixydGc6InJlbmRlclRyaWdnZXJlZCBob29rIiwwOiJzZXR1cCBmdW5jdGlvbiIsMToicmVuZGVyIGZ1bmN0aW9uIiwyOiJ3YXRjaGVyIGdldHRlciIsMzoid2F0Y2hlciBjYWxsYmFjayIsNDoid2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uIiw1OiJuYXRpdmUgZXZlbnQgaGFuZGxlciIsNjoiY29tcG9uZW50IGV2ZW50IGhhbmRsZXIiLDc6InZub2RlIGhvb2siLDg6ImRpcmVjdGl2ZSBob29rIiw5OiJ0cmFuc2l0aW9uIGhvb2siLDEwOiJhcHAgZXJyb3JIYW5kbGVyIiwxMToiYXBwIHdhcm5IYW5kbGVyIiwxMjoicmVmIGZ1bmN0aW9uIiwxMzoiYXN5bmMgY29tcG9uZW50IGxvYWRlciIsMTQ6InNjaGVkdWxlciBmbHVzaCIsMTU6ImNvbXBvbmVudCB1cGRhdGUiLDE2OiJhcHAgdW5tb3VudCBjbGVhbnVwIGZ1bmN0aW9uIn07ZnVuY3Rpb24gY2FsbFdpdGhFcnJvckhhbmRsaW5nKGUsdCxuLHIpe3RyeXtyZXR1cm4gcj9lKC4uLnIpOmUoKX1jYXRjaChlKXtoYW5kbGVFcnJvcihlLHQsbil9fWZ1bmN0aW9uIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGUsdCxuLHIpe2lmKGYoZSkpe2NvbnN0IG89Y2FsbFdpdGhFcnJvckhhbmRsaW5nKGUsdCxuLHIpO3JldHVybiBvJiZWKG8pJiZvLmNhdGNoKGU9PntoYW5kbGVFcnJvcihlLHQsbil9KSxvfWlmKHkoZSkpe2NvbnN0IG89W107Zm9yKGxldCBzPTA7czxlLmxlbmd0aDtzKyspby5wdXNoKGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGVbc10sdCxuLHIpKTtyZXR1cm4gb319ZnVuY3Rpb24gaGFuZGxlRXJyb3IoZSx0LG4scj0hMCl7dCYmdC52bm9kZTtjb25zdHtlcnJvckhhbmRsZXI6byx0aHJvd1VuaGFuZGxlZEVycm9ySW5Qcm9kdWN0aW9uOnN9PXQmJnQuYXBwQ29udGV4dC5jb25maWd8fG07aWYodCl7bGV0IHI9dC5wYXJlbnQ7Y29uc3Qgcz10LnByb3h5LGk9YGh0dHBzOi8vdnVlanMub3JnL2Vycm9yLXJlZmVyZW5jZS8jcnVudGltZS0ke259YDtmb3IoO3I7KXtjb25zdCB0PXIuZWM7aWYodClmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZighMT09PXRbbl0oZSxzLGkpKXJldHVybjtyPXIucGFyZW50fWlmKG8pcmV0dXJuIHBhdXNlVHJhY2tpbmcoKSxjYWxsV2l0aEVycm9ySGFuZGxpbmcobyxudWxsLDEwLFtlLHMsaV0pLHZvaWQgcmVzZXRUcmFja2luZygpfSFmdW5jdGlvbihlLHQsbixyPSEwLG89ITEpe2lmKG8pdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfShlLDAsMCxyLHMpfWNvbnN0IHV0PVtdO2xldCBwdD0tMTtjb25zdCBkdD1bXTtsZXQgZnQ9bnVsbCxodD0wO2NvbnN0IGd0PVByb21pc2UucmVzb2x2ZSgpO2xldCBtdD1udWxsO2Z1bmN0aW9uIG5leHRUaWNrKGUpe2NvbnN0IHQ9bXR8fGd0O3JldHVybiBlP3QudGhlbih0aGlzP2UuYmluZCh0aGlzKTplKTp0fWZ1bmN0aW9uIHF1ZXVlSm9iKGUpe2lmKCEoMSZlLmZsYWdzKSl7Y29uc3QgdD1nZXRJZChlKSxuPXV0W3V0Lmxlbmd0aC0xXTshbnx8ISgyJmUuZmxhZ3MpJiZ0Pj1nZXRJZChuKT91dC5wdXNoKGUpOnV0LnNwbGljZShmdW5jdGlvbihlKXtsZXQgdD1wdCsxLG49dXQubGVuZ3RoO2Zvcig7dDxuOyl7Y29uc3Qgcj10K24+Pj4xLG89dXRbcl0scz1nZXRJZChvKTtzPGV8fHM9PT1lJiYyJm8uZmxhZ3M/dD1yKzE6bj1yfXJldHVybiB0fSh0KSwwLGUpLGUuZmxhZ3N8PTEscXVldWVGbHVzaCgpfX1mdW5jdGlvbiBxdWV1ZUZsdXNoKCl7bXR8fChtdD1ndC50aGVuKGZsdXNoSm9icykpfWZ1bmN0aW9uIHF1ZXVlUG9zdEZsdXNoQ2IoZSl7eShlKT9kdC5wdXNoKC4uLmUpOmZ0JiYtMT09PWUuaWQ/ZnQuc3BsaWNlKGh0KzEsMCxlKToxJmUuZmxhZ3N8fChkdC5wdXNoKGUpLGUuZmxhZ3N8PTEpLHF1ZXVlRmx1c2goKX1mdW5jdGlvbiBmbHVzaFByZUZsdXNoQ2JzKGUsdCxuPXB0KzEpe2Zvcig7bjx1dC5sZW5ndGg7bisrKXtjb25zdCB0PXV0W25dO2lmKHQmJjImdC5mbGFncyl7aWYoZSYmdC5pZCE9PWUudWlkKWNvbnRpbnVlO3V0LnNwbGljZShuLDEpLG4tLSw0JnQuZmxhZ3MmJih0LmZsYWdzJj0tMiksdCgpLDQmdC5mbGFnc3x8KHQuZmxhZ3MmPS0yKX19fWZ1bmN0aW9uIGZsdXNoUG9zdEZsdXNoQ2JzKGUpe2lmKGR0Lmxlbmd0aCl7Y29uc3QgZT1bLi4ubmV3IFNldChkdCldLnNvcnQoKGUsdCk9PmdldElkKGUpLWdldElkKHQpKTtpZihkdC5sZW5ndGg9MCxmdClyZXR1cm4gdm9pZCBmdC5wdXNoKC4uLmUpO2ZvcihmdD1lLGh0PTA7aHQ8ZnQubGVuZ3RoO2h0Kyspe2NvbnN0IGU9ZnRbaHRdOzQmZS5mbGFncyYmKGUuZmxhZ3MmPS0yKSw4JmUuZmxhZ3N8fGUoKSxlLmZsYWdzJj0tMn1mdD1udWxsLGh0PTB9fWNvbnN0IGdldElkPWU9Pm51bGw9PWUuaWQ/MiZlLmZsYWdzPy0xOjEvMDplLmlkO2Z1bmN0aW9uIGZsdXNoSm9icyhlKXt0cnl7Zm9yKHB0PTA7cHQ8dXQubGVuZ3RoO3B0Kyspe2NvbnN0IGU9dXRbcHRdOyFlfHw4JmUuZmxhZ3N8fCg0JmUuZmxhZ3MmJihlLmZsYWdzJj0tMiksY2FsbFdpdGhFcnJvckhhbmRsaW5nKGUsZS5pLGUuaT8xNToxNCksNCZlLmZsYWdzfHwoZS5mbGFncyY9LTIpKX19ZmluYWxseXtmb3IoO3B0PHV0Lmxlbmd0aDtwdCsrKXtjb25zdCBlPXV0W3B0XTtlJiYoZS5mbGFncyY9LTIpfXB0PS0xLHV0Lmxlbmd0aD0wLGZsdXNoUG9zdEZsdXNoQ2JzKCksbXQ9bnVsbCwodXQubGVuZ3RofHxkdC5sZW5ndGgpJiZmbHVzaEpvYnMoKX19bGV0IHl0LHZ0PVtdO2xldCBfdD1udWxsLGJ0PW51bGw7ZnVuY3Rpb24gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEoZSl7Y29uc3QgdD1fdDtyZXR1cm4gX3Q9ZSxidD1lJiZlLnR5cGUuX19zY29wZUlkfHxudWxsLHR9ZnVuY3Rpb24gd2l0aEN0eChlLHQ9X3Qsbil7aWYoIXQpcmV0dXJuIGU7aWYoZS5fbilyZXR1cm4gZTtjb25zdCByZW5kZXJGbldpdGhDb250ZXh0PSguLi5uKT0+e3JlbmRlckZuV2l0aENvbnRleHQuX2QmJnNldEJsb2NrVHJhY2tpbmcoLTEpO2NvbnN0IHI9c2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEodCk7bGV0IG87dHJ5e289ZSguLi5uKX1maW5hbGx5e3NldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSQxKHIpLHJlbmRlckZuV2l0aENvbnRleHQuX2QmJnNldEJsb2NrVHJhY2tpbmcoMSl9cmV0dXJuIG99O3JldHVybiByZW5kZXJGbldpdGhDb250ZXh0Ll9uPSEwLHJlbmRlckZuV2l0aENvbnRleHQuX2M9ITAscmVuZGVyRm5XaXRoQ29udGV4dC5fZD0hMCxyZW5kZXJGbldpdGhDb250ZXh0fWZ1bmN0aW9uIGludm9rZURpcmVjdGl2ZUhvb2soZSx0LG4scil7Y29uc3Qgbz1lLmRpcnMscz10JiZ0LmRpcnM7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspe2NvbnN0IGE9b1tpXTtzJiYoYS5vbGRWYWx1ZT1zW2ldLnZhbHVlKTtsZXQgbD1hLmRpcltyXTtsJiYocGF1c2VUcmFja2luZygpLGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGwsbiw4LFtlLmVsLGEsZSx0XSkscmVzZXRUcmFja2luZygpKX19ZnVuY3Rpb24gcHJvdmlkZShlLHQpe2lmKHluKXtsZXQgbj15bi5wcm92aWRlcztjb25zdCByPXluLnBhcmVudCYmeW4ucGFyZW50LnByb3ZpZGVzO3I9PT1uJiYobj15bi5wcm92aWRlcz1PYmplY3QuY3JlYXRlKHIpKSxuW2VdPXR9fWZ1bmN0aW9uIGluamVjdChlLHQsbj0hMSl7Y29uc3Qgcj1nZXRDdXJyZW50SW5zdGFuY2UoKTtpZihyfHxlbil7bGV0IG89ZW4/ZW4uX2NvbnRleHQucHJvdmlkZXM6cj9udWxsPT1yLnBhcmVudHx8ci5jZT9yLnZub2RlLmFwcENvbnRleHQmJnIudm5vZGUuYXBwQ29udGV4dC5wcm92aWRlczpyLnBhcmVudC5wcm92aWRlczp2b2lkIDA7aWYobyYmZSBpbiBvKXJldHVybiBvW2VdO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlyZXR1cm4gbiYmZih0KT90LmNhbGwociYmci5wcm94eSk6dH19ZnVuY3Rpb24gaGFzSW5qZWN0aW9uQ29udGV4dCgpe3JldHVybiEoIWdldEN1cnJlbnRJbnN0YW5jZSgpJiYhZW4pfWNvbnN0IGt0PVN5bWJvbC5mb3IoInYtc2N4IiksdXNlU1NSQ29udGV4dD0oKT0+aW5qZWN0KGt0KTtmdW5jdGlvbiB3YXRjaEVmZmVjdChlLHQpe3JldHVybiBkb1dhdGNoKGUsbnVsbCx0KX1mdW5jdGlvbiB3YXRjaFN5bmNFZmZlY3QoZSx0KXtyZXR1cm4gZG9XYXRjaChlLG51bGwse2ZsdXNoOiJzeW5jIn0pfWZ1bmN0aW9uIHdhdGNoKGUsdCxuKXtyZXR1cm4gZG9XYXRjaChlLHQsbil9ZnVuY3Rpb24gZG9XYXRjaChlLHQsbj1tKXtjb25zdHtpbW1lZGlhdGU6cixkZWVwOm8sZmx1c2g6cyxvbmNlOml9PW4sYT13KHt9LG4pLGw9dCYmcnx8IXQmJiJwb3N0IiE9PXM7bGV0IGM7aWYoQ24paWYoInN5bmMiPT09cyl7Y29uc3QgZT11c2VTU1JDb250ZXh0KCk7Yz1lLl9fd2F0Y2hlckhhbmRsZXN8fChlLl9fd2F0Y2hlckhhbmRsZXM9W10pfWVsc2UgaWYoIWwpe2NvbnN0IHdhdGNoU3RvcEhhbmRsZT0oKT0+e307cmV0dXJuIHdhdGNoU3RvcEhhbmRsZS5zdG9wPVAsd2F0Y2hTdG9wSGFuZGxlLnJlc3VtZT1QLHdhdGNoU3RvcEhhbmRsZS5wYXVzZT1QLHdhdGNoU3RvcEhhbmRsZX1jb25zdCB1PXluO2EuY2FsbD0oZSx0LG4pPT5jYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhlLHUsdCxuKTtsZXQgcD0hMTsicG9zdCI9PT1zP2Euc2NoZWR1bGVyPWU9PntvbihlLHUmJnUuc3VzcGVuc2UpfToic3luYyIhPT1zJiYocD0hMCxhLnNjaGVkdWxlcj0oZSx0KT0+e3Q/ZSgpOnF1ZXVlSm9iKGUpfSksYS5hdWdtZW50Sm9iPWU9Pnt0JiYoZS5mbGFnc3w9NCkscCYmKGUuZmxhZ3N8PTIsdSYmKGUuaWQ9dS51aWQsZS5pPXUpKX07Y29uc3QgZD1mdW5jdGlvbihlLHQsbj1tKXtjb25zdHtpbW1lZGlhdGU6cixkZWVwOm8sb25jZTpzLHNjaGVkdWxlcjppLGF1Z21lbnRKb2I6YSxjYWxsOmx9PW4scmVhY3RpdmVHZXR0ZXI9ZT0+bz9lOmlzU2hhbGxvdyhlKXx8ITE9PT1vfHwwPT09bz90cmF2ZXJzZShlLDEpOnRyYXZlcnNlKGUpO2xldCBjLHUscCxkLGc9ITEsdj0hMTtpZihpc1JlZihlKT8odT0oKT0+ZS52YWx1ZSxnPWlzU2hhbGxvdyhlKSk6aXNSZWFjdGl2ZShlKT8odT0oKT0+cmVhY3RpdmVHZXR0ZXIoZSksZz0hMCk6eShlKT8odj0hMCxnPWUuc29tZShlPT5pc1JlYWN0aXZlKGUpfHxpc1NoYWxsb3coZSkpLHU9KCk9PmUubWFwKGU9PmlzUmVmKGUpP2UudmFsdWU6aXNSZWFjdGl2ZShlKT9yZWFjdGl2ZUdldHRlcihlKTpmKGUpP2w/bChlLDIpOmUoKTp2b2lkIDApKTp1PWYoZSk/dD9sPygpPT5sKGUsMik6ZTooKT0+e2lmKHApe3BhdXNlVHJhY2tpbmcoKTt0cnl7cCgpfWZpbmFsbHl7cmVzZXRUcmFja2luZygpfX1jb25zdCB0PWF0O2F0PWM7dHJ5e3JldHVybiBsP2woZSwzLFtkXSk6ZShkKX1maW5hbGx5e2F0PXR9fTpQLHQmJm8pe2NvbnN0IGU9dSx0PSEwPT09bz8xLzA6bzt1PSgpPT50cmF2ZXJzZShlKCksdCl9Y29uc3QgXz1nZXRDdXJyZW50U2NvcGUoKSx3YXRjaEhhbmRsZT0oKT0+e2Muc3RvcCgpLF8mJl8uYWN0aXZlJiZBKF8uZWZmZWN0cyxjKX07aWYocyYmdCl7Y29uc3QgZT10O3Q9KC4uLnQpPT57ZSguLi50KSx3YXRjaEhhbmRsZSgpfX1sZXQgYj12P25ldyBBcnJheShlLmxlbmd0aCkuZmlsbChzdCk6c3Q7Y29uc3Qgam9iPWU9PntpZigxJmMuZmxhZ3MmJihjLmRpcnR5fHxlKSlpZih0KXtjb25zdCBlPWMucnVuKCk7aWYob3x8Z3x8KHY/ZS5zb21lKChlLHQpPT5rKGUsYlt0XSkpOmsoZSxiKSkpe3AmJnAoKTtjb25zdCBuPWF0O2F0PWM7dHJ5e2NvbnN0IG49W2UsYj09PXN0P3ZvaWQgMDp2JiZiWzBdPT09c3Q/W106YixkXTtiPWUsbD9sKHQsMyxuKTp0KC4uLm4pfWZpbmFsbHl7YXQ9bn19fWVsc2UgYy5ydW4oKX07cmV0dXJuIGEmJmEoam9iKSxjPW5ldyBSZWFjdGl2ZUVmZmVjdCh1KSxjLnNjaGVkdWxlcj1pPygpPT5pKGpvYiwhMSk6am9iLGQ9ZT0+b25XYXRjaGVyQ2xlYW51cChlLCExLGMpLHA9Yy5vblN0b3A9KCk9Pntjb25zdCBlPWl0LmdldChjKTtpZihlKXtpZihsKWwoZSw0KTtlbHNlIGZvcihjb25zdCB0IG9mIGUpdCgpO2l0LmRlbGV0ZShjKX19LHQ/cj9qb2IoITApOmI9Yy5ydW4oKTppP2koam9iLmJpbmQobnVsbCwhMCksITApOmMucnVuKCksd2F0Y2hIYW5kbGUucGF1c2U9Yy5wYXVzZS5iaW5kKGMpLHdhdGNoSGFuZGxlLnJlc3VtZT1jLnJlc3VtZS5iaW5kKGMpLHdhdGNoSGFuZGxlLnN0b3A9d2F0Y2hIYW5kbGUsd2F0Y2hIYW5kbGV9KGUsdCxhKTtyZXR1cm4gQ24mJihjP2MucHVzaChkKTpsJiZkKCkpLGR9ZnVuY3Rpb24gaW5zdGFuY2VXYXRjaChlLHQsbil7Y29uc3Qgcj10aGlzLnByb3h5LG89JChlKT9lLmluY2x1ZGVzKCIuIik/Y3JlYXRlUGF0aEdldHRlcihyLGUpOigpPT5yW2VdOmUuYmluZChyLHIpO2xldCBzO2YodCk/cz10OihzPXQuaGFuZGxlcixuPXQpO2NvbnN0IGk9c2V0Q3VycmVudEluc3RhbmNlKHRoaXMpLGE9ZG9XYXRjaChvLHMuYmluZChyKSxuKTtyZXR1cm4gaSgpLGF9ZnVuY3Rpb24gY3JlYXRlUGF0aEdldHRlcihlLHQpe2NvbnN0IG49dC5zcGxpdCgiLiIpO3JldHVybigpPT57bGV0IHQ9ZTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoJiZ0O2UrKyl0PXRbbltlXV07cmV0dXJuIHR9fWNvbnN0IEN0PW5ldyBXZWFrTWFwLFN0PVN5bWJvbCgiX3Z0ZSIpLGlzVGVsZXBvcnQ9ZT0+ZS5fX2lzVGVsZXBvcnQsaXNUZWxlcG9ydERpc2FibGVkPWU9PmUmJihlLmRpc2FibGVkfHwiIj09PWUuZGlzYWJsZWQpLGlzVGFyZ2V0U1ZHPWU9PiJ1bmRlZmluZWQiIT10eXBlb2YgU1ZHRWxlbWVudCYmZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQsaXNUYXJnZXRNYXRoTUw9ZT0+ImZ1bmN0aW9uIj09dHlwZW9mIE1hdGhNTEVsZW1lbnQmJmUgaW5zdGFuY2VvZiBNYXRoTUxFbGVtZW50LHJlc29sdmVUYXJnZXQ9KGUsdCk9Pntjb25zdCBuPWUmJmUudG87aWYoJChuKSl7aWYodCl7cmV0dXJuIHQobil9cmV0dXJuIG51bGx9cmV0dXJuIG59O2Z1bmN0aW9uIG1vdmVUZWxlcG9ydChlLHQsbix7bzp7aW5zZXJ0OnJ9LG06b30scz0yKXswPT09cyYmcihlLnRhcmdldEFuY2hvcix0LG4pO2NvbnN0e2VsOmksYW5jaG9yOmEsc2hhcGVGbGFnOmwsY2hpbGRyZW46Yyxwcm9wczp1fT1lLHA9Mj09PXM7aWYocCYmcihpLHQsbiksKCFwfHxpc1RlbGVwb3J0RGlzYWJsZWQodSkpJiYxNiZsKWZvcihsZXQgZT0wO2U8Yy5sZW5ndGg7ZSsrKW8oY1tlXSx0LG4sMik7cCYmcihhLHQsbil9Y29uc3Qgd3Q9e25hbWU6IlRlbGVwb3J0IixfX2lzVGVsZXBvcnQ6ITAscHJvY2VzcyhlLHQsbixyLG8scyxpLGEsbCxjKXtjb25zdHttYzp1LHBjOnAscGJjOmQsbzp7aW5zZXJ0OmYscXVlcnlTZWxlY3RvcjpnLGNyZWF0ZVRleHQ6bSxjcmVhdGVDb21tZW50Onl9fT1jLHY9aXNUZWxlcG9ydERpc2FibGVkKHQucHJvcHMpO2xldHtkeW5hbWljQ2hpbGRyZW46X309dDtjb25zdCBtb3VudD0oZSx0LG4pPT57MTYmZS5zaGFwZUZsYWcmJnUoZS5jaGlsZHJlbix0LG4sbyxzLGksYSxsKX0sbW91bnRUb1RhcmdldD0oZT10KT0+e2NvbnN0IG49aXNUZWxlcG9ydERpc2FibGVkKGUucHJvcHMpLHI9ZS50YXJnZXQ9cmVzb2x2ZVRhcmdldChlLnByb3BzLGcpLHM9cHJlcGFyZUFuY2hvcihyLGUsbSxmKTtyJiYoInN2ZyIhPT1pJiZpc1RhcmdldFNWRyhyKT9pPSJzdmciOiJtYXRobWwiIT09aSYmaXNUYXJnZXRNYXRoTUwocikmJihpPSJtYXRobWwiKSxvJiZvLmlzQ0UmJihvLmNlLl90ZWxlcG9ydFRhcmdldHN8fChvLmNlLl90ZWxlcG9ydFRhcmdldHM9bmV3IFNldCkpLmFkZChyKSxufHwobW91bnQoZSxyLHMpLHVwZGF0ZUNzc1ZhcnMoZSwhMSkpKX0scXVldWVQZW5kaW5nTW91bnQ9ZT0+e2NvbnN0IG1vdW50Sm9iPSgpPT57Q3QuZ2V0KGUpPT09bW91bnRKb2ImJihDdC5kZWxldGUoZSksaXNUZWxlcG9ydERpc2FibGVkKGUucHJvcHMpJiYobW91bnQoZSxuLGUuYW5jaG9yKSx1cGRhdGVDc3NWYXJzKGUsITApKSxtb3VudFRvVGFyZ2V0KGUpKX07Q3Quc2V0KGUsbW91bnRKb2IpLG9uKG1vdW50Sm9iLHMpfTtpZihudWxsPT1lKXtjb25zdCBlPXQuZWw9bSgiIiksbz10LmFuY2hvcj1tKCIiKTtpZihmKGUsbixyKSxmKG8sbixyKSwoYj10LnByb3BzKSYmKGIuZGVmZXJ8fCIiPT09Yi5kZWZlcil8fHMmJnMucGVuZGluZ0JyYW5jaClyZXR1cm4gdm9pZCBxdWV1ZVBlbmRpbmdNb3VudCh0KTt2JiYobW91bnQodCxuLG8pLHVwZGF0ZUNzc1ZhcnModCwhMCkpLG1vdW50VG9UYXJnZXQoKX1lbHNle3QuZWw9ZS5lbDtjb25zdCByPXQuYW5jaG9yPWUuYW5jaG9yLHU9Q3QuZ2V0KGUpO2lmKHUpcmV0dXJuIHUuZmxhZ3N8PTgsQ3QuZGVsZXRlKGUpLHZvaWQgcXVldWVQZW5kaW5nTW91bnQodCk7dC50YXJnZXRTdGFydD1lLnRhcmdldFN0YXJ0O2NvbnN0IGY9dC50YXJnZXQ9ZS50YXJnZXQsbT10LnRhcmdldEFuY2hvcj1lLnRhcmdldEFuY2hvcix5PWlzVGVsZXBvcnREaXNhYmxlZChlLnByb3BzKSxiPXk/bjpmLGs9eT9yOm07aWYoInN2ZyI9PT1pfHxpc1RhcmdldFNWRyhmKT9pPSJzdmciOigibWF0aG1sIj09PWl8fGlzVGFyZ2V0TWF0aE1MKGYpKSYmKGk9Im1hdGhtbCIpLF8/KGQoZS5keW5hbWljQ2hpbGRyZW4sXyxiLG8scyxpLGEpLHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4oZSx0LCEwKSk6bHx8cChlLHQsYixrLG8scyxpLGEsITEpLHYpeT90LnByb3BzJiZlLnByb3BzJiZ0LnByb3BzLnRvIT09ZS5wcm9wcy50byYmKHQucHJvcHMudG89ZS5wcm9wcy50byk6bW92ZVRlbGVwb3J0KHQsbixyLGMsMSk7ZWxzZSBpZigodC5wcm9wcyYmdC5wcm9wcy50bykhPT0oZS5wcm9wcyYmZS5wcm9wcy50bykpe2NvbnN0IGU9dC50YXJnZXQ9cmVzb2x2ZVRhcmdldCh0LnByb3BzLGcpO2UmJm1vdmVUZWxlcG9ydCh0LGUsbnVsbCxjLDApfWVsc2UgeSYmbW92ZVRlbGVwb3J0KHQsZixtLGMsMSk7dXBkYXRlQ3NzVmFycyh0LHYpfXZhciBifSxyZW1vdmUoZSx0LG4se3VtOnIsbzp7cmVtb3ZlOm99fSxzKXtjb25zdHtzaGFwZUZsYWc6aSxjaGlsZHJlbjphLGFuY2hvcjpsLHRhcmdldFN0YXJ0OmMsdGFyZ2V0QW5jaG9yOnUsdGFyZ2V0OnAscHJvcHM6ZH09ZTtsZXQgZj1zfHwhaXNUZWxlcG9ydERpc2FibGVkKGQpO2NvbnN0IGc9Q3QuZ2V0KGUpO2lmKGcmJihnLmZsYWdzfD04LEN0LmRlbGV0ZShlKSxmPSExKSxwJiYobyhjKSxvKHUpKSxzJiZvKGwpLDE2JmkpZm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2NvbnN0IG89YVtlXTtyKG8sdCxuLGYsISFvLmR5bmFtaWNDaGlsZHJlbil9fSxtb3ZlOm1vdmVUZWxlcG9ydCxoeWRyYXRlOmZ1bmN0aW9uKGUsdCxuLHIsbyxzLHtvOntuZXh0U2libGluZzppLHBhcmVudE5vZGU6YSxxdWVyeVNlbGVjdG9yOmwsaW5zZXJ0OmMsY3JlYXRlVGV4dDp1fX0scCl7ZnVuY3Rpb24gaHlkcmF0ZUFuY2hvcihlLG4pe2xldCByPW47Zm9yKDtyOyl7aWYociYmOD09PXIubm9kZVR5cGUpaWYoInRlbGVwb3J0IHN0YXJ0IGFuY2hvciI9PT1yLmRhdGEpdC50YXJnZXRTdGFydD1yO2Vsc2UgaWYoInRlbGVwb3J0IGFuY2hvciI9PT1yLmRhdGEpe3QudGFyZ2V0QW5jaG9yPXIsZS5fbHBhPXQudGFyZ2V0QW5jaG9yJiZpKHQudGFyZ2V0QW5jaG9yKTticmVha31yPWkocil9fWZ1bmN0aW9uIGh5ZHJhdGVEaXNhYmxlZFRlbGVwb3J0KGUsdCl7dC5hbmNob3I9cChpKGUpLHQsYShlKSxuLHIsbyxzKX1jb25zdCBkPXQudGFyZ2V0PXJlc29sdmVUYXJnZXQodC5wcm9wcyxsKSxmPWlzVGVsZXBvcnREaXNhYmxlZCh0LnByb3BzKTtpZihkKXtjb25zdCBsPWQuX2xwYXx8ZC5maXJzdENoaWxkOzE2JnQuc2hhcGVGbGFnJiYoZj8oaHlkcmF0ZURpc2FibGVkVGVsZXBvcnQoZSx0KSxoeWRyYXRlQW5jaG9yKGQsbCksdC50YXJnZXRBbmNob3J8fHByZXBhcmVBbmNob3IoZCx0LHUsYyxhKGUpPT09ZD9lOm51bGwpKToodC5hbmNob3I9aShlKSxoeWRyYXRlQW5jaG9yKGQsbCksdC50YXJnZXRBbmNob3J8fHByZXBhcmVBbmNob3IoZCx0LHUsYykscChsJiZpKGwpLHQsZCxuLHIsbyxzKSkpLHVwZGF0ZUNzc1ZhcnModCxmKX1lbHNlIGYmJjE2JnQuc2hhcGVGbGFnJiYoaHlkcmF0ZURpc2FibGVkVGVsZXBvcnQoZSx0KSx0LnRhcmdldFN0YXJ0PWUsdC50YXJnZXRBbmNob3I9aShlKSk7cmV0dXJuIHQuYW5jaG9yJiZpKHQuYW5jaG9yKX19O2Z1bmN0aW9uIHVwZGF0ZUNzc1ZhcnMoZSx0KXtjb25zdCBuPWUuY3R4O2lmKG4mJm4udXQpe2xldCByLG87Zm9yKHQ/KHI9ZS5lbCxvPWUuYW5jaG9yKToocj1lLnRhcmdldFN0YXJ0LG89ZS50YXJnZXRBbmNob3IpO3ImJnIhPT1vOykxPT09ci5ub2RlVHlwZSYmci5zZXRBdHRyaWJ1dGUoImRhdGEtdi1vd25lciIsbi51aWQpLHI9ci5uZXh0U2libGluZztuLnV0KCl9fWZ1bmN0aW9uIHByZXBhcmVBbmNob3IoZSx0LG4scixvPW51bGwpe2NvbnN0IHM9dC50YXJnZXRTdGFydD1uKCIiKSxpPXQudGFyZ2V0QW5jaG9yPW4oIiIpO3JldHVybiBzW1N0XT1pLGUmJihyKHMsZSxvKSxyKGksZSxvKSksaX1jb25zdCBUdD1TeW1ib2woIl9sZWF2ZUNiIiksUnQ9U3ltYm9sKCJfZW50ZXJDYiIpO2Z1bmN0aW9uIHVzZVRyYW5zaXRpb25TdGF0ZSgpe2NvbnN0IGU9e2lzTW91bnRlZDohMSxpc0xlYXZpbmc6ITEsaXNVbm1vdW50aW5nOiExLGxlYXZpbmdWTm9kZXM6bmV3IE1hcH07cmV0dXJuIEl0KCgpPT57ZS5pc01vdW50ZWQ9ITB9KSxGdCgoKT0+e2UuaXNVbm1vdW50aW5nPSEwfSksZX1jb25zdCBBdD1bRnVuY3Rpb24sQXJyYXldLHh0PXttb2RlOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixwZXJzaXN0ZWQ6Qm9vbGVhbixvbkJlZm9yZUVudGVyOkF0LG9uRW50ZXI6QXQsb25BZnRlckVudGVyOkF0LG9uRW50ZXJDYW5jZWxsZWQ6QXQsb25CZWZvcmVMZWF2ZTpBdCxvbkxlYXZlOkF0LG9uQWZ0ZXJMZWF2ZTpBdCxvbkxlYXZlQ2FuY2VsbGVkOkF0LG9uQmVmb3JlQXBwZWFyOkF0LG9uQXBwZWFyOkF0LG9uQWZ0ZXJBcHBlYXI6QXQsb25BcHBlYXJDYW5jZWxsZWQ6QXR9LHJlY3Vyc2l2ZUdldFN1YnRyZWU9ZT0+e2NvbnN0IHQ9ZS5zdWJUcmVlO3JldHVybiB0LmNvbXBvbmVudD9yZWN1cnNpdmVHZXRTdWJ0cmVlKHQuY29tcG9uZW50KTp0fTtmdW5jdGlvbiBmaW5kTm9uQ29tbWVudENoaWxkKGUpe2xldCB0PWVbMF07aWYoZS5sZW5ndGg+MSlmb3IoY29uc3QgbiBvZiBlKWlmKG4udHlwZSE9PXVuKXt0PW47YnJlYWt9cmV0dXJuIHR9Y29uc3QgRXQ9e25hbWU6IkJhc2VUcmFuc2l0aW9uIixwcm9wczp4dCxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1nZXRDdXJyZW50SW5zdGFuY2UoKSxyPXVzZVRyYW5zaXRpb25TdGF0ZSgpO3JldHVybigpPT57Y29uc3Qgbz10LmRlZmF1bHQmJmdldFRyYW5zaXRpb25SYXdDaGlsZHJlbih0LmRlZmF1bHQoKSwhMCk7aWYoIW98fCFvLmxlbmd0aClyZXR1cm47Y29uc3Qgcz1maW5kTm9uQ29tbWVudENoaWxkKG8pLGk9dG9SYXcoZSkse21vZGU6YX09aTtpZihyLmlzTGVhdmluZylyZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihzKTtjb25zdCBsPWdldElubmVyQ2hpbGQkMShzKTtpZighbClyZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihzKTtsZXQgYz1yZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGwsaSxyLG4sZT0+Yz1lKTtsLnR5cGUhPT11biYmc2V0VHJhbnNpdGlvbkhvb2tzKGwsYyk7bGV0IHU9bi5zdWJUcmVlJiZnZXRJbm5lckNoaWxkJDEobi5zdWJUcmVlKTtpZih1JiZ1LnR5cGUhPT11biYmIWlzU2FtZVZOb2RlVHlwZSh1LGwpJiZyZWN1cnNpdmVHZXRTdWJ0cmVlKG4pLnR5cGUhPT11bil7bGV0IGU9cmVzb2x2ZVRyYW5zaXRpb25Ib29rcyh1LGkscixuKTtpZihzZXRUcmFuc2l0aW9uSG9va3ModSxlKSwib3V0LWluIj09PWEmJmwudHlwZSE9PXVuKXJldHVybiByLmlzTGVhdmluZz0hMCxlLmFmdGVyTGVhdmU9KCk9PntyLmlzTGVhdmluZz0hMSw4Jm4uam9iLmZsYWdzfHxuLnVwZGF0ZSgpLGRlbGV0ZSBlLmFmdGVyTGVhdmUsdT12b2lkIDB9LGVtcHR5UGxhY2Vob2xkZXIocyk7ImluLW91dCI9PT1hJiZsLnR5cGUhPT11bj9lLmRlbGF5TGVhdmU9KGUsdCxuKT0+e2dldExlYXZpbmdOb2Rlc0ZvclR5cGUocix1KVtTdHJpbmcodS5rZXkpXT11LGVbVHRdPSgpPT57dCgpLGVbVHRdPXZvaWQgMCxkZWxldGUgYy5kZWxheWVkTGVhdmUsdT12b2lkIDB9LGMuZGVsYXllZExlYXZlPSgpPT57bigpLGRlbGV0ZSBjLmRlbGF5ZWRMZWF2ZSx1PXZvaWQgMH19OnU9dm9pZCAwfWVsc2UgdSYmKHU9dm9pZCAwKTtyZXR1cm4gc319fTtmdW5jdGlvbiBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKGUsdCl7Y29uc3R7bGVhdmluZ1ZOb2RlczpufT1lO2xldCByPW4uZ2V0KHQudHlwZSk7cmV0dXJuIHJ8fChyPU9iamVjdC5jcmVhdGUobnVsbCksbi5zZXQodC50eXBlLHIpKSxyfWZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uSG9va3MoZSx0LG4scixvKXtjb25zdHthcHBlYXI6cyxtb2RlOmkscGVyc2lzdGVkOmE9ITEsb25CZWZvcmVFbnRlcjpsLG9uRW50ZXI6YyxvbkFmdGVyRW50ZXI6dSxvbkVudGVyQ2FuY2VsbGVkOnAsb25CZWZvcmVMZWF2ZTpkLG9uTGVhdmU6ZixvbkFmdGVyTGVhdmU6ZyxvbkxlYXZlQ2FuY2VsbGVkOm0sb25CZWZvcmVBcHBlYXI6dixvbkFwcGVhcjpfLG9uQWZ0ZXJBcHBlYXI6YixvbkFwcGVhckNhbmNlbGxlZDprfT10LEM9U3RyaW5nKGUua2V5KSxTPWdldExlYXZpbmdOb2Rlc0ZvclR5cGUobixlKSxjYWxsSG9vaz0oZSx0KT0+e2UmJmNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGUsciw5LHQpfSxjYWxsQXN5bmNIb29rPShlLHQpPT57Y29uc3Qgbj10WzFdO2NhbGxIb29rKGUsdCkseShlKT9lLmV2ZXJ5KGU9PmUubGVuZ3RoPD0xKSYmbigpOmUubGVuZ3RoPD0xJiZuKCl9LHc9e21vZGU6aSxwZXJzaXN0ZWQ6YSxiZWZvcmVFbnRlcih0KXtsZXQgcj1sO2lmKCFuLmlzTW91bnRlZCl7aWYoIXMpcmV0dXJuO3I9dnx8bH10W1R0XSYmdFtUdF0oITApO2NvbnN0IG89U1tDXTtvJiZpc1NhbWVWTm9kZVR5cGUoZSxvKSYmby5lbFtUdF0mJm8uZWxbVHRdKCksY2FsbEhvb2socixbdF0pfSxlbnRlcih0KXtpZihTW0NdPT09ZSlyZXR1cm47bGV0IHI9YyxvPXUsaT1wO2lmKCFuLmlzTW91bnRlZCl7aWYoIXMpcmV0dXJuO3I9X3x8YyxvPWJ8fHUsaT1rfHxwfWxldCBhPSExO3RbUnRdPWU9PnthfHwoYT0hMCxjYWxsSG9vayhlP2k6byxbdF0pLHcuZGVsYXllZExlYXZlJiZ3LmRlbGF5ZWRMZWF2ZSgpLHRbUnRdPXZvaWQgMCl9O2NvbnN0IGw9dFtSdF0uYmluZChudWxsLCExKTtyP2NhbGxBc3luY0hvb2socixbdCxsXSk6bCgpfSxsZWF2ZSh0LHIpe2NvbnN0IG89U3RyaW5nKGUua2V5KTtpZih0W1J0XSYmdFtSdF0oITApLG4uaXNVbm1vdW50aW5nKXJldHVybiByKCk7Y2FsbEhvb2soZCxbdF0pO2xldCBzPSExO3RbVHRdPW49PntzfHwocz0hMCxyKCksY2FsbEhvb2sobj9tOmcsW3RdKSx0W1R0XT12b2lkIDAsU1tvXT09PWUmJmRlbGV0ZSBTW29dKX07Y29uc3QgaT10W1R0XS5iaW5kKG51bGwsITEpO1Nbb109ZSxmP2NhbGxBc3luY0hvb2soZixbdCxpXSk6aSgpfSxjbG9uZShlKXtjb25zdCBzPXJlc29sdmVUcmFuc2l0aW9uSG9va3MoZSx0LG4scixvKTtyZXR1cm4gbyYmbyhzKSxzfX07cmV0dXJuIHd9ZnVuY3Rpb24gZW1wdHlQbGFjZWhvbGRlcihlKXtpZihpc0tlZXBBbGl2ZShlKSlyZXR1cm4oZT1jbG9uZVZOb2RlKGUpKS5jaGlsZHJlbj1udWxsLGV9ZnVuY3Rpb24gZ2V0SW5uZXJDaGlsZCQxKGUpe2lmKCFpc0tlZXBBbGl2ZShlKSlyZXR1cm4gaXNUZWxlcG9ydChlLnR5cGUpJiZlLmNoaWxkcmVuP2ZpbmROb25Db21tZW50Q2hpbGQoZS5jaGlsZHJlbik6ZTtpZihlLmNvbXBvbmVudClyZXR1cm4gZS5jb21wb25lbnQuc3ViVHJlZTtjb25zdHtzaGFwZUZsYWc6dCxjaGlsZHJlbjpufT1lO2lmKG4pe2lmKDE2JnQpcmV0dXJuIG5bMF07aWYoMzImdCYmZihuLmRlZmF1bHQpKXJldHVybiBuLmRlZmF1bHQoKX19ZnVuY3Rpb24gc2V0VHJhbnNpdGlvbkhvb2tzKGUsdCl7NiZlLnNoYXBlRmxhZyYmZS5jb21wb25lbnQ/KGUudHJhbnNpdGlvbj10LHNldFRyYW5zaXRpb25Ib29rcyhlLmNvbXBvbmVudC5zdWJUcmVlLHQpKToxMjgmZS5zaGFwZUZsYWc/KGUuc3NDb250ZW50LnRyYW5zaXRpb249dC5jbG9uZShlLnNzQ29udGVudCksZS5zc0ZhbGxiYWNrLnRyYW5zaXRpb249dC5jbG9uZShlLnNzRmFsbGJhY2spKTplLnRyYW5zaXRpb249dH1mdW5jdGlvbiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oZSx0PSExLG4pe2xldCByPVtdLG89MDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtjb25zdCBhPW51bGw9PW4/aS5rZXk6U3RyaW5nKG4pK1N0cmluZyhudWxsIT1pLmtleT9pLmtleTpzKTtpLnR5cGU9PT1sbj8oMTI4JmkucGF0Y2hGbGFnJiZvKysscj1yLmNvbmNhdChnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oaS5jaGlsZHJlbix0LGEpKSk6KHR8fGkudHlwZSE9PXVuKSYmci5wdXNoKG51bGwhPWE/Y2xvbmVWTm9kZShpLHtrZXk6YX0pOmkpfWlmKG8+MSlmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKylyW2VdLnBhdGNoRmxhZz0tMjtyZXR1cm4gcn1mdW5jdGlvbiBkZWZpbmVDb21wb25lbnQoZSx0KXtyZXR1cm4gZihlKT8oKCk9Pncoe25hbWU6ZS5uYW1lfSx0LHtzZXR1cDplfSkpKCk6ZX1mdW5jdGlvbiBtYXJrQXN5bmNCb3VuZGFyeShlKXtlLmlkcz1bZS5pZHNbMF0rZS5pZHNbMl0rKysiLSIsMCwwXX1mdW5jdGlvbiBpc1RlbXBsYXRlUmVmS2V5KGUsdCl7bGV0IG47cmV0dXJuISghKG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpKXx8bi5jb25maWd1cmFibGUpfWNvbnN0IFB0PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHNldFJlZihlLHQsbixyLG89ITEpe2lmKHkoZSkpcmV0dXJuIHZvaWQgZS5mb3JFYWNoKChlLHMpPT5zZXRSZWYoZSx0JiYoeSh0KT90W3NdOnQpLG4scixvKSk7aWYoaXNBc3luY1dyYXBwZXIocikmJiFvKXJldHVybiB2b2lkKDUxMiZyLnNoYXBlRmxhZyYmci50eXBlLl9fYXN5bmNSZXNvbHZlZCYmci5jb21wb25lbnQuc3ViVHJlZS5jb21wb25lbnQmJnNldFJlZihlLHQsbixyLmNvbXBvbmVudC5zdWJUcmVlKSk7Y29uc3Qgcz00JnIuc2hhcGVGbGFnP2dldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKHIuY29tcG9uZW50KTpyLmVsLGk9bz9udWxsOnMse2k6YSxyOmx9PWUsYz10JiZ0LnIsdT1hLnJlZnM9PT1tP2EucmVmcz17fTphLnJlZnMscD1hLnNldHVwU3RhdGUsZD10b1JhdyhwKSxnPXA9PT1tP0Q6ZT0+IWlzVGVtcGxhdGVSZWZLZXkodSxlKSYmdihkLGUpLGNhblNldFJlZj0oZSx0KT0+IXR8fCFpc1RlbXBsYXRlUmVmS2V5KHUsdCk7aWYobnVsbCE9YyYmYyE9PWwpaWYoaW52YWxpZGF0ZVBlbmRpbmdTZXRSZWYodCksJChjKSl1W2NdPW51bGwsZyhjKSYmKHBbY109bnVsbCk7ZWxzZSBpZihpc1JlZihjKSl7Y29uc3QgZT10O2NhblNldFJlZigwLGUuaykmJihjLnZhbHVlPW51bGwpLGUuayYmKHVbZS5rXT1udWxsKX1pZihmKGwpKWNhbGxXaXRoRXJyb3JIYW5kbGluZyhsLGEsMTIsW2ksdV0pO2Vsc2V7Y29uc3QgdD0kKGwpLHI9aXNSZWYobCk7aWYodHx8cil7Y29uc3QgZG9TZXQ9KCk9PntpZihlLmYpe2NvbnN0IG49dD9nKGwpP3BbbF06dVtsXTpjYW5TZXRSZWYoKXx8IWUuaz9sLnZhbHVlOnVbZS5rXTtpZihvKXkobikmJkEobixzKTtlbHNlIGlmKHkobikpbi5pbmNsdWRlcyhzKXx8bi5wdXNoKHMpO2Vsc2UgaWYodCl1W2xdPVtzXSxnKGwpJiYocFtsXT11W2xdKTtlbHNle2NvbnN0IHQ9W3NdO2NhblNldFJlZigwLGUuaykmJihsLnZhbHVlPXQpLGUuayYmKHVbZS5rXT10KX19ZWxzZSB0Pyh1W2xdPWksZyhsKSYmKHBbbF09aSkpOnImJihjYW5TZXRSZWYoMCxlLmspJiYobC52YWx1ZT1pKSxlLmsmJih1W2Uua109aSkpfTtpZihpKXtjb25zdCBqb2I9KCk9Pntkb1NldCgpLFB0LmRlbGV0ZShlKX07am9iLmlkPS0xLFB0LnNldChlLGpvYiksb24oam9iLG4pfWVsc2UgaW52YWxpZGF0ZVBlbmRpbmdTZXRSZWYoZSksZG9TZXQoKX19fWZ1bmN0aW9uIGludmFsaWRhdGVQZW5kaW5nU2V0UmVmKGUpe2NvbnN0IHQ9UHQuZ2V0KGUpO3QmJih0LmZsYWdzfD04LFB0LmRlbGV0ZShlKSl9bGV0ICR0PSExO2NvbnN0IGxvZ01pc21hdGNoRXJyb3I9KCk9PnskdHx8KGNvbnNvbGUuZXJyb3IoIkh5ZHJhdGlvbiBjb21wbGV0ZWQgYnV0IGNvbnRhaW5zIG1pc21hdGNoZXMuIiksJHQ9ITApfSxnZXRDb250YWluZXJUeXBlPWU9PntpZigxPT09ZS5ub2RlVHlwZSlyZXR1cm4oZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoInN2ZyIpJiYiZm9yZWlnbk9iamVjdCIhPT1lLnRhZ05hbWUpKGUpPyJzdmciOihlPT5lLm5hbWVzcGFjZVVSSS5pbmNsdWRlcygiTWF0aE1MIikpKGUpPyJtYXRobWwiOnZvaWQgMH0saXNDb21tZW50JDE9ZT0+OD09PWUubm9kZVR5cGU7ZnVuY3Rpb24gY3JlYXRlSHlkcmF0aW9uRnVuY3Rpb25zKGUpe2NvbnN0e210OnQscDpuLG86e3BhdGNoUHJvcDpyLGNyZWF0ZVRleHQ6byxuZXh0U2libGluZzpzLHBhcmVudE5vZGU6aSxyZW1vdmU6YSxpbnNlcnQ6bCxjcmVhdGVDb21tZW50OmN9fT1lLGh5ZHJhdGVOb2RlPShuLHIsYSxjLHUscD0hMSk9PntwPXB8fCEhci5keW5hbWljQ2hpbGRyZW47Y29uc3QgZD1pc0NvbW1lbnQkMShuKSYmIlsiPT09bi5kYXRhLG9uTWlzbWF0Y2g9KCk9PmhhbmRsZU1pc21hdGNoKG4scixhLGMsdSxkKSx7dHlwZTpmLHJlZjpnLHNoYXBlRmxhZzptLHBhdGNoRmxhZzp5fT1yO2xldCB2PW4ubm9kZVR5cGU7ci5lbD1uLC0yPT09eSYmKHA9ITEsci5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0IF89bnVsbDtzd2l0Y2goZil7Y2FzZSBjbjozIT09dj8iIj09PXIuY2hpbGRyZW4/KGwoci5lbD1vKCIiKSxpKG4pLG4pLF89bik6Xz1vbk1pc21hdGNoKCk6KG4uZGF0YSE9PXIuY2hpbGRyZW4mJihsb2dNaXNtYXRjaEVycm9yKCksbi5kYXRhPXIuY2hpbGRyZW4pLF89cyhuKSk7YnJlYWs7Y2FzZSB1bjppc1RlbXBsYXRlTm9kZShuKT8oXz1zKG4pLHJlcGxhY2VOb2RlKHIuZWw9bi5jb250ZW50LmZpcnN0Q2hpbGQsbixhKSk6Xz04IT09dnx8ZD9vbk1pc21hdGNoKCk6cyhuKTticmVhaztjYXNlIHBuOmlmKGQmJih2PShuPXMobikpLm5vZGVUeXBlKSwxPT09dnx8Mz09PXYpe189bjtjb25zdCBlPSFyLmNoaWxkcmVuLmxlbmd0aDtmb3IobGV0IHQ9MDt0PHIuc3RhdGljQ291bnQ7dCsrKWUmJihyLmNoaWxkcmVuKz0xPT09Xy5ub2RlVHlwZT9fLm91dGVySFRNTDpfLmRhdGEpLHQ9PT1yLnN0YXRpY0NvdW50LTEmJihyLmFuY2hvcj1fKSxfPXMoXyk7cmV0dXJuIGQ/cyhfKTpffW9uTWlzbWF0Y2goKTticmVhaztjYXNlIGxuOl89ZD9oeWRyYXRlRnJhZ21lbnQobixyLGEsYyx1LHApOm9uTWlzbWF0Y2goKTticmVhaztkZWZhdWx0OmlmKDEmbSlfPTE9PT12JiZyLnR5cGUudG9Mb3dlckNhc2UoKT09PW4udGFnTmFtZS50b0xvd2VyQ2FzZSgpfHxpc1RlbXBsYXRlTm9kZShuKT9oeWRyYXRlRWxlbWVudChuLHIsYSxjLHUscCk6b25NaXNtYXRjaCgpO2Vsc2UgaWYoNiZtKXtyLnNsb3RTY29wZUlkcz11O2NvbnN0IGU9aShuKTtpZihfPWQ/bG9jYXRlQ2xvc2luZ0FuY2hvcihuKTppc0NvbW1lbnQkMShuKSYmInRlbGVwb3J0IHN0YXJ0Ij09PW4uZGF0YT9sb2NhdGVDbG9zaW5nQW5jaG9yKG4sbi5kYXRhLCJ0ZWxlcG9ydCBlbmQiKTpzKG4pLHQocixlLG51bGwsYSxjLGdldENvbnRhaW5lclR5cGUoZSkscCksaXNBc3luY1dyYXBwZXIocikmJiFyLnR5cGUuX19hc3luY1Jlc29sdmVkKXtsZXQgdDtkPyh0PWNyZWF0ZVZOb2RlKGxuKSx0LmFuY2hvcj1fP18ucHJldmlvdXNTaWJsaW5nOmUubGFzdENoaWxkKTp0PTM9PT1uLm5vZGVUeXBlP2NyZWF0ZVRleHRWTm9kZSgiIik6Y3JlYXRlVk5vZGUoImRpdiIpLHQuZWw9bixyLmNvbXBvbmVudC5zdWJUcmVlPXR9fWVsc2UgNjQmbT9fPTghPT12P29uTWlzbWF0Y2goKTpyLnR5cGUuaHlkcmF0ZShuLHIsYSxjLHUscCxlLGh5ZHJhdGVDaGlsZHJlbik6MTI4Jm0mJihfPXIudHlwZS5oeWRyYXRlKG4scixhLGMsZ2V0Q29udGFpbmVyVHlwZShpKG4pKSx1LHAsZSxoeWRyYXRlTm9kZSkpfXJldHVybiBudWxsIT1nJiZzZXRSZWYoZyxudWxsLGMsciksX30saHlkcmF0ZUVsZW1lbnQ9KGUsdCxuLG8scyxpKT0+e2k9aXx8ISF0LmR5bmFtaWNDaGlsZHJlbjtjb25zdHt0eXBlOmwscHJvcHM6YyxwYXRjaEZsYWc6dSxzaGFwZUZsYWc6cCxkaXJzOmQsdHJhbnNpdGlvbjpmfT10LGc9ImlucHV0Ij09PWx8fCJvcHRpb24iPT09bDtpZihnfHwtMSE9PXUpe2QmJmludm9rZURpcmVjdGl2ZUhvb2sodCxudWxsLG4sImNyZWF0ZWQiKTtsZXQgbCxtPSExO2lmKGlzVGVtcGxhdGVOb2RlKGUpKXttPW5lZWRUcmFuc2l0aW9uKG51bGwsZikmJm4mJm4udm5vZGUucHJvcHMmJm4udm5vZGUucHJvcHMuYXBwZWFyO2NvbnN0IHI9ZS5jb250ZW50LmZpcnN0Q2hpbGQ7aWYobSl7Y29uc3QgZT1yLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTtlJiYoci4kY2xzPWUpLGYuYmVmb3JlRW50ZXIocil9cmVwbGFjZU5vZGUocixlLG4pLHQuZWw9ZT1yfWlmKDE2JnAmJighY3x8IWMuaW5uZXJIVE1MJiYhYy50ZXh0Q29udGVudCkpe2xldCByPWh5ZHJhdGVDaGlsZHJlbihlLmZpcnN0Q2hpbGQsdCxlLG4sbyxzLGkpO2Zvcig7cjspe2lzTWlzbWF0Y2hBbGxvd2VkKGUsMSl8fGxvZ01pc21hdGNoRXJyb3IoKTtjb25zdCB0PXI7cj1yLm5leHRTaWJsaW5nLGEodCl9fWVsc2UgaWYoOCZwKXtsZXQgbj10LmNoaWxkcmVuOyJcbiIhPT1uWzBdfHwiUFJFIiE9PWUudGFnTmFtZSYmIlRFWFRBUkVBIiE9PWUudGFnTmFtZXx8KG49bi5zbGljZSgxKSk7Y29uc3R7dGV4dENvbnRlbnQ6cn09ZTtyIT09biYmciE9PW4ucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpJiYoaXNNaXNtYXRjaEFsbG93ZWQoZSwwKXx8bG9nTWlzbWF0Y2hFcnJvcigpLGUudGV4dENvbnRlbnQ9dC5jaGlsZHJlbil9aWYoYylpZihnfHwhaXx8NDgmdSl7Y29uc3QgdD1lLnRhZ05hbWUuaW5jbHVkZXMoIi0iKTtmb3IoY29uc3QgbyBpbiBjKShnJiYoby5lbmRzV2l0aCgidmFsdWUiKXx8ImluZGV0ZXJtaW5hdGUiPT09byl8fEgobykmJiFGKG8pfHwiLiI9PT1vWzBdfHx0JiYhRihvKSkmJnIoZSxvLG51bGwsY1tvXSx2b2lkIDAsbil9ZWxzZSBpZihjLm9uQ2xpY2spcihlLCJvbkNsaWNrIixudWxsLGMub25DbGljayx2b2lkIDAsbik7ZWxzZSBpZig0JnUmJmlzUmVhY3RpdmUoYy5zdHlsZSkpZm9yKGNvbnN0IGUgaW4gYy5zdHlsZSljLnN0eWxlW2VdOyhsPWMmJmMub25Wbm9kZUJlZm9yZU1vdW50KSYmaW52b2tlVk5vZGVIb29rKGwsbix0KSxkJiZpbnZva2VEaXJlY3RpdmVIb29rKHQsbnVsbCxuLCJiZWZvcmVNb3VudCIpLCgobD1jJiZjLm9uVm5vZGVNb3VudGVkKXx8ZHx8bSkmJnF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlKCgpPT57bCYmaW52b2tlVk5vZGVIb29rKGwsbix0KSxtJiZmLmVudGVyKGUpLGQmJmludm9rZURpcmVjdGl2ZUhvb2sodCxudWxsLG4sIm1vdW50ZWQiKX0sbyl9cmV0dXJuIGUubmV4dFNpYmxpbmd9LGh5ZHJhdGVDaGlsZHJlbj0oZSx0LHIsaSxhLGMsdSk9Pnt1PXV8fCEhdC5keW5hbWljQ2hpbGRyZW47Y29uc3QgcD10LmNoaWxkcmVuLGQ9cC5sZW5ndGg7Zm9yKGxldCB0PTA7dDxkO3QrKyl7Y29uc3QgZj11P3BbdF06cFt0XT1ub3JtYWxpemVWTm9kZSQxKHBbdF0pLGc9Zi50eXBlPT09Y247ZT8oZyYmIXUmJnQrMTxkJiZub3JtYWxpemVWTm9kZSQxKHBbdCsxXSkudHlwZT09PWNuJiYobChvKGUuZGF0YS5zbGljZShmLmNoaWxkcmVuLmxlbmd0aCkpLHIscyhlKSksZS5kYXRhPWYuY2hpbGRyZW4pLGU9aHlkcmF0ZU5vZGUoZSxmLGksYSxjLHUpKTpnJiYhZi5jaGlsZHJlbj9sKGYuZWw9bygiIikscik6KGlzTWlzbWF0Y2hBbGxvd2VkKHIsMSl8fGxvZ01pc21hdGNoRXJyb3IoKSxuKG51bGwsZixyLG51bGwsaSxhLGdldENvbnRhaW5lclR5cGUociksYykpfXJldHVybiBlfSxoeWRyYXRlRnJhZ21lbnQ9KGUsdCxuLHIsbyxhKT0+e2NvbnN0e3Nsb3RTY29wZUlkczp1fT10O3UmJihvPW8/by5jb25jYXQodSk6dSk7Y29uc3QgcD1pKGUpLGQ9aHlkcmF0ZUNoaWxkcmVuKHMoZSksdCxwLG4scixvLGEpO3JldHVybiBkJiZpc0NvbW1lbnQkMShkKSYmIl0iPT09ZC5kYXRhP3ModC5hbmNob3I9ZCk6KGxvZ01pc21hdGNoRXJyb3IoKSxsKHQuYW5jaG9yPWMoIl0iKSxwLGQpLGQpfSxoYW5kbGVNaXNtYXRjaD0oZSx0LHIsbyxsLGMpPT57aWYoaXNNaXNtYXRjaEFsbG93ZWQoZS5wYXJlbnRFbGVtZW50LDEpfHxsb2dNaXNtYXRjaEVycm9yKCksdC5lbD1udWxsLGMpe2NvbnN0IHQ9bG9jYXRlQ2xvc2luZ0FuY2hvcihlKTtmb3IoOzspe2NvbnN0IG49cyhlKTtpZighbnx8bj09PXQpYnJlYWs7YShuKX19Y29uc3QgdT1zKGUpLHA9aShlKTtyZXR1cm4gYShlKSxuKG51bGwsdCxwLHUscixvLGdldENvbnRhaW5lclR5cGUocCksbCksciYmKHIudm5vZGUuZWw9dC5lbCx1cGRhdGVIT0NIb3N0RWwocix0LmVsKSksdX0sbG9jYXRlQ2xvc2luZ0FuY2hvcj0oZSx0PSJbIixuPSJdIik9PntsZXQgcj0wO2Zvcig7ZTspaWYoKGU9cyhlKSkmJmlzQ29tbWVudCQxKGUpJiYoZS5kYXRhPT09dCYmcisrLGUuZGF0YT09PW4pKXtpZigwPT09cilyZXR1cm4gcyhlKTtyLS19cmV0dXJuIGV9LHJlcGxhY2VOb2RlPShlLHQsbik9Pntjb25zdCByPXQucGFyZW50Tm9kZTtyJiZyLnJlcGxhY2VDaGlsZChlLHQpO2xldCBvPW47Zm9yKDtvOylvLnZub2RlLmVsPT09dCYmKG8udm5vZGUuZWw9by5zdWJUcmVlLmVsPWUpLG89by5wYXJlbnR9LGlzVGVtcGxhdGVOb2RlPWU9PjE9PT1lLm5vZGVUeXBlJiYiVEVNUExBVEUiPT09ZS50YWdOYW1lO3JldHVyblsoZSx0KT0+e2lmKCF0Lmhhc0NoaWxkTm9kZXMoKSlyZXR1cm4gbihudWxsLGUsdCksZmx1c2hQb3N0Rmx1c2hDYnMoKSx2b2lkKHQuX3Zub2RlPWUpO2h5ZHJhdGVOb2RlKHQuZmlyc3RDaGlsZCxlLG51bGwsbnVsbCxudWxsKSxmbHVzaFBvc3RGbHVzaENicygpLHQuX3Zub2RlPWV9LGh5ZHJhdGVOb2RlXX1jb25zdCBPdD0iZGF0YS1hbGxvdy1taXNtYXRjaCIsTnQ9ezA6InRleHQiLDE6ImNoaWxkcmVuIiwyOiJjbGFzcyIsMzoic3R5bGUiLDQ6ImF0dHJpYnV0ZSJ9O2Z1bmN0aW9uIGlzTWlzbWF0Y2hBbGxvd2VkKGUsdCl7aWYoMD09PXR8fDE9PT10KWZvcig7ZSYmIWUuaGFzQXR0cmlidXRlKE90KTspZT1lLnBhcmVudEVsZW1lbnQ7Y29uc3Qgbj1lJiZlLmdldEF0dHJpYnV0ZShPdCk7aWYobnVsbD09bilyZXR1cm4hMTtpZigiIj09PW4pcmV0dXJuITA7e2NvbnN0IGU9bi5zcGxpdCgiLCIpO3JldHVybiEoMCE9PXR8fCFlLmluY2x1ZGVzKCJjaGlsZHJlbiIpKXx8ZS5pbmNsdWRlcyhOdFt0XSl9fWNvbnN0IEh0PWooKS5yZXF1ZXN0SWRsZUNhbGxiYWNrfHwoZT0+c2V0VGltZW91dChlLDEpKSxNdD1qKCkuY2FuY2VsSWRsZUNhbGxiYWNrfHwoZT0+Y2xlYXJUaW1lb3V0KGUpKTtjb25zdCBpc0FzeW5jV3JhcHBlcj1lPT4hIWUudHlwZS5fX2FzeW5jTG9hZGVyO2Z1bmN0aW9uIGNyZWF0ZUlubmVyQ29tcChlLHQpe2NvbnN0e3JlZjpuLHByb3BzOnIsY2hpbGRyZW46byxjZTpzfT10LnZub2RlLGk9Y3JlYXRlVk5vZGUoZSxyLG8pO3JldHVybiBpLnJlZj1uLGkuY2U9cyxkZWxldGUgdC52bm9kZS5jZSxpfWNvbnN0IGlzS2VlcEFsaXZlPWU9PmUudHlwZS5fX2lzS2VlcEFsaXZlLFZ0PXtuYW1lOiJLZWVwQWxpdmUiLF9faXNLZWVwQWxpdmU6ITAscHJvcHM6e2luY2x1ZGU6W1N0cmluZyxSZWdFeHAsQXJyYXldLGV4Y2x1ZGU6W1N0cmluZyxSZWdFeHAsQXJyYXldLG1heDpbU3RyaW5nLE51bWJlcl19LHNldHVwKGUse3Nsb3RzOnR9KXtjb25zdCBuPWdldEN1cnJlbnRJbnN0YW5jZSgpLHI9bi5jdHg7aWYoIXIucmVuZGVyZXIpcmV0dXJuKCk9Pntjb25zdCBlPXQuZGVmYXVsdCYmdC5kZWZhdWx0KCk7cmV0dXJuIGUmJjE9PT1lLmxlbmd0aD9lWzBdOmV9O2NvbnN0IG89bmV3IE1hcCxzPW5ldyBTZXQ7bGV0IGk9bnVsbDtjb25zdCBhPW4uc3VzcGVuc2Use3JlbmRlcmVyOntwOmwsbTpjLHVtOnUsbzp7Y3JlYXRlRWxlbWVudDpwfX19PXIsZD1wKCJkaXYiKTtmdW5jdGlvbiB1bm1vdW50KGUpe3Jlc2V0U2hhcGVGbGFnKGUpLHUoZSxuLGEsITApfWZ1bmN0aW9uIHBydW5lQ2FjaGUoZSl7by5mb3JFYWNoKCh0LG4pPT57Y29uc3Qgcj1nZXRDb21wb25lbnROYW1lKGlzQXN5bmNXcmFwcGVyKHQpP3QudHlwZS5fX2FzeW5jUmVzb2x2ZWR8fHt9OnQudHlwZSk7ciYmIWUocikmJnBydW5lQ2FjaGVFbnRyeShuKX0pfWZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeShlKXtjb25zdCB0PW8uZ2V0KGUpOyF0fHxpJiZpc1NhbWVWTm9kZVR5cGUodCxpKT9pJiZyZXNldFNoYXBlRmxhZyhpKTp1bm1vdW50KHQpLG8uZGVsZXRlKGUpLHMuZGVsZXRlKGUpfXIuYWN0aXZhdGU9KGUsdCxuLHIsbyk9Pntjb25zdCBzPWUuY29tcG9uZW50O2MoZSx0LG4sMCxhKSxsKHMudm5vZGUsZSx0LG4scyxhLHIsZS5zbG90U2NvcGVJZHMsbyksb24oKCk9PntzLmlzRGVhY3RpdmF0ZWQ9ITEscy5hJiZJKHMuYSk7Y29uc3QgdD1lLnByb3BzJiZlLnByb3BzLm9uVm5vZGVNb3VudGVkO3QmJmludm9rZVZOb2RlSG9vayh0LHMucGFyZW50LGUpfSxhKX0sci5kZWFjdGl2YXRlPWU9Pntjb25zdCB0PWUuY29tcG9uZW50O2ludmFsaWRhdGVNb3VudCh0Lm0pLGludmFsaWRhdGVNb3VudCh0LmEpLGMoZSxkLG51bGwsMSxhKSxvbigoKT0+e3QuZGEmJkkodC5kYSk7Y29uc3Qgbj1lLnByb3BzJiZlLnByb3BzLm9uVm5vZGVVbm1vdW50ZWQ7biYmaW52b2tlVk5vZGVIb29rKG4sdC5wYXJlbnQsZSksdC5pc0RlYWN0aXZhdGVkPSEwfSxhKX0sd2F0Y2goKCk9PltlLmluY2x1ZGUsZS5leGNsdWRlXSwoW2UsdF0pPT57ZSYmcHJ1bmVDYWNoZSh0PT5tYXRjaGVzKGUsdCkpLHQmJnBydW5lQ2FjaGUoZT0+IW1hdGNoZXModCxlKSl9LHtmbHVzaDoicG9zdCIsZGVlcDohMH0pO2xldCBmPW51bGw7Y29uc3QgY2FjaGVTdWJ0cmVlPSgpPT57bnVsbCE9ZiYmKGlzU3VzcGVuc2Uobi5zdWJUcmVlLnR5cGUpP29uKCgpPT57by5zZXQoZixnZXRJbm5lckNoaWxkKG4uc3ViVHJlZSkpfSxuLnN1YlRyZWUuc3VzcGVuc2UpOm8uc2V0KGYsZ2V0SW5uZXJDaGlsZChuLnN1YlRyZWUpKSl9O3JldHVybiBJdChjYWNoZVN1YnRyZWUpLEx0KGNhY2hlU3VidHJlZSksRnQoKCk9PntvLmZvckVhY2goZT0+e2NvbnN0e3N1YlRyZWU6dCxzdXNwZW5zZTpyfT1uLG89Z2V0SW5uZXJDaGlsZCh0KTtpZihlLnR5cGU9PT1vLnR5cGUmJmUua2V5PT09by5rZXkpe3Jlc2V0U2hhcGVGbGFnKG8pO2NvbnN0IGU9by5jb21wb25lbnQuZGE7cmV0dXJuIHZvaWQoZSYmb24oZSxyKSl9dW5tb3VudChlKX0pfSksKCk9PntpZihmPW51bGwsIXQuZGVmYXVsdClyZXR1cm4gaT1udWxsO2NvbnN0IG49dC5kZWZhdWx0KCkscj1uWzBdO2lmKG4ubGVuZ3RoPjEpcmV0dXJuIGk9bnVsbCxuO2lmKCEoaXNWTm9kZSQyKHIpJiYoNCZyLnNoYXBlRmxhZ3x8MTI4JnIuc2hhcGVGbGFnKSkpcmV0dXJuIGk9bnVsbCxyO2xldCBhPWdldElubmVyQ2hpbGQocik7aWYoYS50eXBlPT09dW4pcmV0dXJuIGk9bnVsbCxhO2NvbnN0IGw9YS50eXBlLGM9Z2V0Q29tcG9uZW50TmFtZShpc0FzeW5jV3JhcHBlcihhKT9hLnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTpsKSx7aW5jbHVkZTp1LGV4Y2x1ZGU6cCxtYXg6ZH09ZTtpZih1JiYoIWN8fCFtYXRjaGVzKHUsYykpfHxwJiZjJiZtYXRjaGVzKHAsYykpcmV0dXJuIGEuc2hhcGVGbGFnJj0tMjU3LGk9YSxyO2NvbnN0IGc9bnVsbD09YS5rZXk/bDphLmtleSxtPW8uZ2V0KGcpO3JldHVybiBhLmVsJiYoYT1jbG9uZVZOb2RlKGEpLDEyOCZyLnNoYXBlRmxhZyYmKHIuc3NDb250ZW50PWEpKSxmPWcsbT8oYS5lbD1tLmVsLGEuY29tcG9uZW50PW0uY29tcG9uZW50LGEudHJhbnNpdGlvbiYmc2V0VHJhbnNpdGlvbkhvb2tzKGEsYS50cmFuc2l0aW9uKSxhLnNoYXBlRmxhZ3w9NTEyLHMuZGVsZXRlKGcpLHMuYWRkKGcpKToocy5hZGQoZyksZCYmcy5zaXplPnBhcnNlSW50KGQsMTApJiZwcnVuZUNhY2hlRW50cnkocy52YWx1ZXMoKS5uZXh0KCkudmFsdWUpKSxhLnNoYXBlRmxhZ3w9MjU2LGk9YSxpc1N1c3BlbnNlKHIudHlwZSk/cjphfX19O2Z1bmN0aW9uIG1hdGNoZXMoZSx0KXtyZXR1cm4geShlKT9lLnNvbWUoZT0+bWF0Y2hlcyhlLHQpKTokKGUpP2Uuc3BsaXQoIiwiKS5pbmNsdWRlcyh0KTohIUsoZSkmJihlLmxhc3RJbmRleD0wLGUudGVzdCh0KSl9ZnVuY3Rpb24gb25BY3RpdmF0ZWQoZSx0KXtyZWdpc3RlcktlZXBBbGl2ZUhvb2soZSwiYSIsdCl9ZnVuY3Rpb24gb25EZWFjdGl2YXRlZChlLHQpe3JlZ2lzdGVyS2VlcEFsaXZlSG9vayhlLCJkYSIsdCl9ZnVuY3Rpb24gcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGUsdCxuPXluKXtjb25zdCByPWUuX193ZGN8fChlLl9fd2RjPSgpPT57bGV0IHQ9bjtmb3IoO3Q7KXtpZih0LmlzRGVhY3RpdmF0ZWQpcmV0dXJuO3Q9dC5wYXJlbnR9cmV0dXJuIGUoKX0pO2lmKGluamVjdEhvb2sodCxyLG4pLG4pe2xldCBlPW4ucGFyZW50O2Zvcig7ZSYmZS5wYXJlbnQ7KWlzS2VlcEFsaXZlKGUucGFyZW50LnZub2RlKSYmaW5qZWN0VG9LZWVwQWxpdmVSb290KHIsdCxuLGUpLGU9ZS5wYXJlbnR9fWZ1bmN0aW9uIGluamVjdFRvS2VlcEFsaXZlUm9vdChlLHQsbixyKXtjb25zdCBvPWluamVjdEhvb2sodCxlLHIsITApO0J0KCgpPT57QShyW3RdLG8pfSxuKX1mdW5jdGlvbiByZXNldFNoYXBlRmxhZyhlKXtlLnNoYXBlRmxhZyY9LTI1NyxlLnNoYXBlRmxhZyY9LTUxM31mdW5jdGlvbiBnZXRJbm5lckNoaWxkKGUpe3JldHVybiAxMjgmZS5zaGFwZUZsYWc/ZS5zc0NvbnRlbnQ6ZX1mdW5jdGlvbiBpbmplY3RIb29rKGUsdCxuPXluLHI9ITEpe2lmKG4pe2NvbnN0IG89bltlXXx8KG5bZV09W10pLHM9dC5fX3dlaHx8KHQuX193ZWg9KC4uLnIpPT57cGF1c2VUcmFja2luZygpO2NvbnN0IG89c2V0Q3VycmVudEluc3RhbmNlKG4pLHM9Y2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcodCxuLGUscik7cmV0dXJuIG8oKSxyZXNldFRyYWNraW5nKCksc30pO3JldHVybiByP28udW5zaGlmdChzKTpvLnB1c2gocyksc319Y29uc3QgY3JlYXRlSG9vaz1lPT4odCxuPXluKT0+e0NuJiYic3AiIT09ZXx8aW5qZWN0SG9vayhlLCguLi5lKT0+dCguLi5lKSxuKX0sanQ9Y3JlYXRlSG9vaygiYm0iKSxJdD1jcmVhdGVIb29rKCJtIiksRHQ9Y3JlYXRlSG9vaygiYnUiKSxMdD1jcmVhdGVIb29rKCJ1IiksRnQ9Y3JlYXRlSG9vaygiYnVtIiksQnQ9Y3JlYXRlSG9vaygidW0iKSxVdD1jcmVhdGVIb29rKCJzcCIpLFd0PWNyZWF0ZUhvb2soInJ0ZyIpLHp0PWNyZWF0ZUhvb2soInJ0YyIpO2Z1bmN0aW9uIG9uRXJyb3JDYXB0dXJlZChlLHQ9eW4pe2luamVjdEhvb2soImVjIixlLHQpfWNvbnN0IHF0PSJjb21wb25lbnRzIjtjb25zdCBLdD1TeW1ib2wuZm9yKCJ2LW5kYyIpO2Z1bmN0aW9uIHJlc29sdmVBc3NldChlLHQsbj0hMCxyPSExKXtjb25zdCBvPV90fHx5bjtpZihvKXtjb25zdCBuPW8udHlwZTtpZihlPT09cXQpe2NvbnN0IGU9Z2V0Q29tcG9uZW50TmFtZShuLCExKTtpZihlJiYoZT09PXR8fGU9PT1CKHQpfHxlPT09RyhCKHQpKSkpcmV0dXJuIG59Y29uc3Qgcz1yZXNvbHZlKG9bZV18fG5bZV0sdCl8fHJlc29sdmUoby5hcHBDb250ZXh0W2VdLHQpO3JldHVybiFzJiZyP246c319ZnVuY3Rpb24gcmVzb2x2ZShlLHQpe3JldHVybiBlJiYoZVt0XXx8ZVtCKHQpXXx8ZVtHKEIodCkpXSl9ZnVuY3Rpb24gZW5zdXJlVmFsaWRWTm9kZSQxKGUpe3JldHVybiBlLnNvbWUoZT0+IWlzVk5vZGUkMihlKXx8ZS50eXBlIT09dW4mJiEoZS50eXBlPT09bG4mJiFlbnN1cmVWYWxpZFZOb2RlJDEoZS5jaGlsZHJlbikpKT9lOm51bGx9Y29uc3QgZ2V0UHVibGljSW5zdGFuY2U9ZT0+ZT9pc1N0YXRlZnVsQ29tcG9uZW50KGUpP2dldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKGUpOmdldFB1YmxpY0luc3RhbmNlKGUucGFyZW50KTpudWxsLEp0PXcoT2JqZWN0LmNyZWF0ZShudWxsKSx7JDplPT5lLCRlbDplPT5lLnZub2RlLmVsLCRkYXRhOmU9PmUuZGF0YSwkcHJvcHM6ZT0+ZS5wcm9wcywkYXR0cnM6ZT0+ZS5hdHRycywkc2xvdHM6ZT0+ZS5zbG90cywkcmVmczplPT5lLnJlZnMsJHBhcmVudDplPT5nZXRQdWJsaWNJbnN0YW5jZShlLnBhcmVudCksJHJvb3Q6ZT0+Z2V0UHVibGljSW5zdGFuY2UoZS5yb290KSwkaG9zdDplPT5lLmNlLCRlbWl0OmU9PmUuZW1pdCwkb3B0aW9uczplPT5yZXNvbHZlTWVyZ2VkT3B0aW9ucyhlKSwkZm9yY2VVcGRhdGU6ZT0+ZS5mfHwoZS5mPSgpPT57cXVldWVKb2IoZS51cGRhdGUpfSksJG5leHRUaWNrOmU9PmUubnx8KGUubj1uZXh0VGljay5iaW5kKGUucHJveHkpKSwkd2F0Y2g6ZT0+aW5zdGFuY2VXYXRjaC5iaW5kKGUpfSksaGFzU2V0dXBCaW5kaW5nPShlLHQpPT5lIT09bSYmIWUuX19pc1NjcmlwdFNldHVwJiZ2KGUsdCksR3Q9e2dldCh7XzplfSx0KXtpZigiX192X3NraXAiPT09dClyZXR1cm4hMDtjb25zdHtjdHg6bixzZXR1cFN0YXRlOnIsZGF0YTpvLHByb3BzOnMsYWNjZXNzQ2FjaGU6aSx0eXBlOmEsYXBwQ29udGV4dDpsfT1lO2lmKCIkIiE9PXRbMF0pe2NvbnN0IGU9aVt0XTtpZih2b2lkIDAhPT1lKXN3aXRjaChlKXtjYXNlIDE6cmV0dXJuIHJbdF07Y2FzZSAyOnJldHVybiBvW3RdO2Nhc2UgNDpyZXR1cm4gblt0XTtjYXNlIDM6cmV0dXJuIHNbdF19ZWxzZXtpZihoYXNTZXR1cEJpbmRpbmcocix0KSlyZXR1cm4gaVt0XT0xLHJbdF07aWYobyE9PW0mJnYobyx0KSlyZXR1cm4gaVt0XT0yLG9bdF07aWYodihzLHQpKXJldHVybiBpW3RdPTMsc1t0XTtpZihuIT09bSYmdihuLHQpKXJldHVybiBpW3RdPTQsblt0XTtYdCYmKGlbdF09MCl9fWNvbnN0IGM9SnRbdF07bGV0IHUscDtyZXR1cm4gYz8oIiRhdHRycyI9PT10JiZ0cmFjayhlLmF0dHJzLDAsIiIpLGMoZSkpOih1PWEuX19jc3NNb2R1bGVzKSYmKHU9dVt0XSk/dTpuIT09bSYmdihuLHQpPyhpW3RdPTQsblt0XSk6KHA9bC5jb25maWcuZ2xvYmFsUHJvcGVydGllcyx2KHAsdCk/cFt0XTp2b2lkIDApfSxzZXQoe186ZX0sdCxuKXtjb25zdHtkYXRhOnIsc2V0dXBTdGF0ZTpvLGN0eDpzfT1lO3JldHVybiBoYXNTZXR1cEJpbmRpbmcobyx0KT8ob1t0XT1uLCEwKTpyIT09bSYmdihyLHQpPyhyW3RdPW4sITApOiF2KGUucHJvcHMsdCkmJigoIiQiIT09dFswXXx8ISh0LnNsaWNlKDEpaW4gZSkpJiYoc1t0XT1uLCEwKSl9LGhhcyh7Xzp7ZGF0YTplLHNldHVwU3RhdGU6dCxhY2Nlc3NDYWNoZTpuLGN0eDpyLGFwcENvbnRleHQ6byxwcm9wczpzLHR5cGU6aX19LGEpe2xldCBsO3JldHVybiEhKG5bYV18fGUhPT1tJiYiJCIhPT1hWzBdJiZ2KGUsYSl8fGhhc1NldHVwQmluZGluZyh0LGEpfHx2KHMsYSl8fHYocixhKXx8dihKdCxhKXx8dihvLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLGEpfHwobD1pLl9fY3NzTW9kdWxlcykmJmxbYV0pfSxkZWZpbmVQcm9wZXJ0eShlLHQsbil7cmV0dXJuIG51bGwhPW4uZ2V0P2UuXy5hY2Nlc3NDYWNoZVt0XT0wOnYobiwidmFsdWUiKSYmdGhpcy5zZXQoZSx0LG4udmFsdWUsbnVsbCksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbil9fSxadD13KHt9LEd0LHtnZXQoZSx0KXtpZih0IT09U3ltYm9sLnVuc2NvcGFibGVzKXJldHVybiBHdC5nZXQoZSx0LGUpfSxoYXM6KGUsdCk9PiJfIiE9PXRbMF0mJiFaKHQpfSk7ZnVuY3Rpb24gZ2V0Q29udGV4dChlKXtjb25zdCB0PWdldEN1cnJlbnRJbnN0YW5jZSgpO3JldHVybiB0LnNldHVwQ29udGV4dHx8KHQuc2V0dXBDb250ZXh0PWNyZWF0ZVNldHVwQ29udGV4dCh0KSl9ZnVuY3Rpb24gbm9ybWFsaXplUHJvcHNPckVtaXRzKGUpe3JldHVybiB5KGUpP2UucmVkdWNlKChlLHQpPT4oZVt0XT1udWxsLGUpLHt9KTplfWxldCBYdD0hMDtmdW5jdGlvbiBhcHBseU9wdGlvbnMoZSl7Y29uc3QgdD1yZXNvbHZlTWVyZ2VkT3B0aW9ucyhlKSxuPWUucHJveHkscj1lLmN0eDtYdD0hMSx0LmJlZm9yZUNyZWF0ZSYmY2FsbEhvb2skMSh0LmJlZm9yZUNyZWF0ZSxlLCJiYyIpO2NvbnN0e2RhdGE6byxjb21wdXRlZDpzLG1ldGhvZHM6aSx3YXRjaDphLHByb3ZpZGU6bCxpbmplY3Q6YyxjcmVhdGVkOnUsYmVmb3JlTW91bnQ6cCxtb3VudGVkOmQsYmVmb3JlVXBkYXRlOmcsdXBkYXRlZDptLGFjdGl2YXRlZDp2LGRlYWN0aXZhdGVkOl8sYmVmb3JlRGVzdHJveTprLGJlZm9yZVVubW91bnQ6QyxkZXN0cm95ZWQ6Uyx1bm1vdW50ZWQ6dyxyZW5kZXI6VCxyZW5kZXJUcmFja2VkOlIscmVuZGVyVHJpZ2dlcmVkOkEsZXJyb3JDYXB0dXJlZDp4LHNlcnZlclByZWZldGNoOkUsZXhwb3NlOiQsaW5oZXJpdEF0dHJzOk8sY29tcG9uZW50czpOLGRpcmVjdGl2ZXM6SCxmaWx0ZXJzOk19PXQ7aWYoYyYmZnVuY3Rpb24oZSx0KXt5KGUpJiYoZT1ub3JtYWxpemVJbmplY3QoZSkpO2Zvcihjb25zdCBuIGluIGUpe2NvbnN0IHI9ZVtuXTtsZXQgbztvPWIocik/ImRlZmF1bHQiaW4gcj9pbmplY3Qoci5mcm9tfHxuLHIuZGVmYXVsdCwhMCk6aW5qZWN0KHIuZnJvbXx8bik6aW5qZWN0KHIpLGlzUmVmKG8pP09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+by52YWx1ZSxzZXQ6ZT0+by52YWx1ZT1lfSk6dFtuXT1vfX0oYyxyLG51bGwpLGkpZm9yKGNvbnN0IGUgaW4gaSl7Y29uc3QgdD1pW2VdO2YodCkmJihyW2VdPXQuYmluZChuKSl9aWYobyl7Y29uc3QgdD1vLmNhbGwobixuKTtiKHQpJiYoZS5kYXRhPXJlYWN0aXZlKHQpKX1pZihYdD0hMCxzKWZvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXSxvPWYodCk/dC5iaW5kKG4sbik6Zih0LmdldCk/dC5nZXQuYmluZChuLG4pOlAsaT0hZih0KSYmZih0LnNldCk/dC5zZXQuYmluZChuKTpQLGE9Y29tcHV0ZWQoe2dldDpvLHNldDppfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5hLnZhbHVlLHNldDplPT5hLnZhbHVlPWV9KX1pZihhKWZvcihjb25zdCBlIGluIGEpY3JlYXRlV2F0Y2hlcihhW2VdLHIsbixlKTtpZihsKXtjb25zdCBlPWYobCk/bC5jYWxsKG4pOmw7UmVmbGVjdC5vd25LZXlzKGUpLmZvckVhY2godD0+e3Byb3ZpZGUodCxlW3RdKX0pfWZ1bmN0aW9uIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhlLHQpe3kodCk/dC5mb3JFYWNoKHQ9PmUodC5iaW5kKG4pKSk6dCYmZSh0LmJpbmQobikpfWlmKHUmJmNhbGxIb29rJDEodSxlLCJjIikscmVnaXN0ZXJMaWZlY3ljbGVIb29rKGp0LHApLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhJdCxkKSxyZWdpc3RlckxpZmVjeWNsZUhvb2soRHQsZykscmVnaXN0ZXJMaWZlY3ljbGVIb29rKEx0LG0pLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkFjdGl2YXRlZCx2KSxyZWdpc3RlckxpZmVjeWNsZUhvb2sob25EZWFjdGl2YXRlZCxfKSxyZWdpc3RlckxpZmVjeWNsZUhvb2sob25FcnJvckNhcHR1cmVkLHgpLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayh6dCxSKSxyZWdpc3RlckxpZmVjeWNsZUhvb2soV3QsQSkscmVnaXN0ZXJMaWZlY3ljbGVIb29rKEZ0LEMpLHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhCdCx3KSxyZWdpc3RlckxpZmVjeWNsZUhvb2soVXQsRSkseSgkKSlpZigkLmxlbmd0aCl7Y29uc3QgdD1lLmV4cG9zZWR8fChlLmV4cG9zZWQ9e30pOyQuZm9yRWFjaChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OigpPT5uW2VdLHNldDp0PT5uW2VdPXQsZW51bWVyYWJsZTohMH0pfSl9ZWxzZSBlLmV4cG9zZWR8fChlLmV4cG9zZWQ9e30pO1QmJmUucmVuZGVyPT09UCYmKGUucmVuZGVyPVQpLG51bGwhPU8mJihlLmluaGVyaXRBdHRycz1PKSxOJiYoZS5jb21wb25lbnRzPU4pLEgmJihlLmRpcmVjdGl2ZXM9SCksRSYmbWFya0FzeW5jQm91bmRhcnkoZSl9ZnVuY3Rpb24gY2FsbEhvb2skMShlLHQsbil7Y2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoeShlKT9lLm1hcChlPT5lLmJpbmQodC5wcm94eSkpOmUuYmluZCh0LnByb3h5KSx0LG4pfWZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIoZSx0LG4scil7bGV0IG89ci5pbmNsdWRlcygiLiIpP2NyZWF0ZVBhdGhHZXR0ZXIobixyKTooKT0+bltyXTtpZigkKGUpKXtjb25zdCBuPXRbZV07ZihuKSYmd2F0Y2gobyxuKX1lbHNlIGlmKGYoZSkpd2F0Y2gobyxlLmJpbmQobikpO2Vsc2UgaWYoYihlKSlpZih5KGUpKWUuZm9yRWFjaChlPT5jcmVhdGVXYXRjaGVyKGUsdCxuLHIpKTtlbHNle2NvbnN0IHI9ZihlLmhhbmRsZXIpP2UuaGFuZGxlci5iaW5kKG4pOnRbZS5oYW5kbGVyXTtmKHIpJiZ3YXRjaChvLHIsZSl9fWZ1bmN0aW9uIHJlc29sdmVNZXJnZWRPcHRpb25zKGUpe2NvbnN0IHQ9ZS50eXBlLHttaXhpbnM6bixleHRlbmRzOnJ9PXQse21peGluczpvLG9wdGlvbnNDYWNoZTpzLGNvbmZpZzp7b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOml9fT1lLmFwcENvbnRleHQsYT1zLmdldCh0KTtsZXQgbDtyZXR1cm4gYT9sPWE6by5sZW5ndGh8fG58fHI/KGw9e30sby5sZW5ndGgmJm8uZm9yRWFjaChlPT5tZXJnZU9wdGlvbnMobCxlLGksITApKSxtZXJnZU9wdGlvbnMobCx0LGkpKTpsPXQsYih0KSYmcy5zZXQodCxsKSxsfWZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhlLHQsbixyPSExKXtjb25zdHttaXhpbnM6byxleHRlbmRzOnN9PXQ7cyYmbWVyZ2VPcHRpb25zKGUscyxuLCEwKSxvJiZvLmZvckVhY2godD0+bWVyZ2VPcHRpb25zKGUsdCxuLCEwKSk7Zm9yKGNvbnN0IG8gaW4gdClpZihyJiYiZXhwb3NlIj09PW8pO2Vsc2V7Y29uc3Qgcj1ZdFtvXXx8biYmbltvXTtlW29dPXI/cihlW29dLHRbb10pOnRbb119cmV0dXJuIGV9Y29uc3QgWXQ9e2RhdGE6bWVyZ2VEYXRhRm4scHJvcHM6bWVyZ2VFbWl0c09yUHJvcHNPcHRpb25zLGVtaXRzOm1lcmdlRW1pdHNPclByb3BzT3B0aW9ucyxtZXRob2RzOm1lcmdlT2JqZWN0T3B0aW9ucyxjb21wdXRlZDptZXJnZU9iamVjdE9wdGlvbnMsYmVmb3JlQ3JlYXRlOm1lcmdlQXNBcnJheSxjcmVhdGVkOm1lcmdlQXNBcnJheSxiZWZvcmVNb3VudDptZXJnZUFzQXJyYXksbW91bnRlZDptZXJnZUFzQXJyYXksYmVmb3JlVXBkYXRlOm1lcmdlQXNBcnJheSx1cGRhdGVkOm1lcmdlQXNBcnJheSxiZWZvcmVEZXN0cm95Om1lcmdlQXNBcnJheSxiZWZvcmVVbm1vdW50Om1lcmdlQXNBcnJheSxkZXN0cm95ZWQ6bWVyZ2VBc0FycmF5LHVubW91bnRlZDptZXJnZUFzQXJyYXksYWN0aXZhdGVkOm1lcmdlQXNBcnJheSxkZWFjdGl2YXRlZDptZXJnZUFzQXJyYXksZXJyb3JDYXB0dXJlZDptZXJnZUFzQXJyYXksc2VydmVyUHJlZmV0Y2g6bWVyZ2VBc0FycmF5LGNvbXBvbmVudHM6bWVyZ2VPYmplY3RPcHRpb25zLGRpcmVjdGl2ZXM6bWVyZ2VPYmplY3RPcHRpb25zLHdhdGNoOmZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIHQ7aWYoIXQpcmV0dXJuIGU7Y29uc3Qgbj13KE9iamVjdC5jcmVhdGUobnVsbCksZSk7Zm9yKGNvbnN0IHIgaW4gdCluW3JdPW1lcmdlQXNBcnJheShlW3JdLHRbcl0pO3JldHVybiBufSxwcm92aWRlOm1lcmdlRGF0YUZuLGluamVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBtZXJnZU9iamVjdE9wdGlvbnMobm9ybWFsaXplSW5qZWN0KGUpLG5vcm1hbGl6ZUluamVjdCh0KSl9fTtmdW5jdGlvbiBtZXJnZURhdGFGbihlLHQpe3JldHVybiB0P2U/ZnVuY3Rpb24oKXtyZXR1cm4gdyhmKGUpP2UuY2FsbCh0aGlzLHRoaXMpOmUsZih0KT90LmNhbGwodGhpcyx0aGlzKTp0KX06dDplfWZ1bmN0aW9uIG5vcm1hbGl6ZUluamVjdChlKXtpZih5KGUpKXtjb25zdCB0PXt9O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXRbZVtuXV09ZVtuXTtyZXR1cm4gdH1yZXR1cm4gZX1mdW5jdGlvbiBtZXJnZUFzQXJyYXkoZSx0KXtyZXR1cm4gZT9bLi4ubmV3IFNldChbXS5jb25jYXQoZSx0KSldOnR9ZnVuY3Rpb24gbWVyZ2VPYmplY3RPcHRpb25zKGUsdCl7cmV0dXJuIGU/dyhPYmplY3QuY3JlYXRlKG51bGwpLGUsdCk6dH1mdW5jdGlvbiBtZXJnZUVtaXRzT3JQcm9wc09wdGlvbnMoZSx0KXtyZXR1cm4gZT95KGUpJiZ5KHQpP1suLi5uZXcgU2V0KFsuLi5lLC4uLnRdKV06dyhPYmplY3QuY3JlYXRlKG51bGwpLG5vcm1hbGl6ZVByb3BzT3JFbWl0cyhlKSxub3JtYWxpemVQcm9wc09yRW1pdHMobnVsbCE9dD90Ont9KSk6dH1mdW5jdGlvbiBjcmVhdGVBcHBDb250ZXh0KCl7cmV0dXJue2FwcDpudWxsLGNvbmZpZzp7aXNOYXRpdmVUYWc6RCxwZXJmb3JtYW5jZTohMSxnbG9iYWxQcm9wZXJ0aWVzOnt9LG9wdGlvbk1lcmdlU3RyYXRlZ2llczp7fSxlcnJvckhhbmRsZXI6dm9pZCAwLHdhcm5IYW5kbGVyOnZvaWQgMCxjb21waWxlck9wdGlvbnM6e319LG1peGluczpbXSxjb21wb25lbnRzOnt9LGRpcmVjdGl2ZXM6e30scHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxvcHRpb25zQ2FjaGU6bmV3IFdlYWtNYXAscHJvcHNDYWNoZTpuZXcgV2Vha01hcCxlbWl0c0NhY2hlOm5ldyBXZWFrTWFwfX1sZXQgUXQ9MDtmdW5jdGlvbiBjcmVhdGVBcHBBUEkoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyPW51bGwpe2Yobil8fChuPXcoe30sbikpLG51bGw9PXJ8fGIocil8fChyPW51bGwpO2NvbnN0IG89Y3JlYXRlQXBwQ29udGV4dCgpLHM9bmV3IFdlYWtTZXQsaT1bXTtsZXQgYT0hMTtjb25zdCBsPW8uYXBwPXtfdWlkOlF0KyssX2NvbXBvbmVudDpuLF9wcm9wczpyLF9jb250YWluZXI6bnVsbCxfY29udGV4dDpvLF9pbnN0YW5jZTpudWxsLHZlcnNpb246d24sZ2V0IGNvbmZpZygpe3JldHVybiBvLmNvbmZpZ30sc2V0IGNvbmZpZyhlKXt9LHVzZTooZSwuLi50KT0+KHMuaGFzKGUpfHwoZSYmZihlLmluc3RhbGwpPyhzLmFkZChlKSxlLmluc3RhbGwobCwuLi50KSk6ZihlKSYmKHMuYWRkKGUpLGUobCwuLi50KSkpLGwpLG1peGluOmU9PihvLm1peGlucy5pbmNsdWRlcyhlKXx8by5taXhpbnMucHVzaChlKSxsKSxjb21wb25lbnQ6KGUsdCk9PnQ/KG8uY29tcG9uZW50c1tlXT10LGwpOm8uY29tcG9uZW50c1tlXSxkaXJlY3RpdmU6KGUsdCk9PnQ/KG8uZGlyZWN0aXZlc1tlXT10LGwpOm8uZGlyZWN0aXZlc1tlXSxtb3VudChzLGksYyl7aWYoIWEpe2NvbnN0IHU9bC5fY2VWTm9kZXx8Y3JlYXRlVk5vZGUobixyKTtyZXR1cm4gdS5hcHBDb250ZXh0PW8sITA9PT1jP2M9InN2ZyI6ITE9PT1jJiYoYz12b2lkIDApLGkmJnQ/dCh1LHMpOmUodSxzLGMpLGE9ITAsbC5fY29udGFpbmVyPXMscy5fX3Z1ZV9hcHBfXz1sLGdldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKHUuY29tcG9uZW50KX19LG9uVW5tb3VudChlKXtpLnB1c2goZSl9LHVubW91bnQoKXthJiYoY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaSxsLl9pbnN0YW5jZSwxNiksZShudWxsLGwuX2NvbnRhaW5lciksZGVsZXRlIGwuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXyl9LHByb3ZpZGU6KGUsdCk9PihvLnByb3ZpZGVzW2VdPXQsbCkscnVuV2l0aENvbnRleHQoZSl7Y29uc3QgdD1lbjtlbj1sO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7ZW49dH19fTtyZXR1cm4gbH19bGV0IGVuPW51bGw7Y29uc3QgZ2V0TW9kZWxNb2RpZmllcnM9KGUsdCk9PiJtb2RlbFZhbHVlIj09PXR8fCJtb2RlbC12YWx1ZSI9PT10P2UubW9kZWxNb2RpZmllcnM6ZVtgJHt0fU1vZGlmaWVyc2BdfHxlW2Ake0IodCl9TW9kaWZpZXJzYF18fGVbYCR7eih0KX1Nb2RpZmllcnNgXTtmdW5jdGlvbiBlbWl0KGUsdCwuLi5uKXtpZihlLmlzVW5tb3VudGVkKXJldHVybjtjb25zdCByPWUudm5vZGUucHJvcHN8fG07bGV0IG89bjtjb25zdCBzPXQuc3RhcnRzV2l0aCgidXBkYXRlOiIpLGk9cyYmZ2V0TW9kZWxNb2RpZmllcnMocix0LnNsaWNlKDcpKTtsZXQgYTtpJiYoaS50cmltJiYobz1uLm1hcChlPT4kKGUpP2UudHJpbSgpOmUpKSxpLm51bWJlciYmKG89bi5tYXAoVSkpKTtsZXQgbD1yW2E9Vyh0KV18fHJbYT1XKEIodCkpXTshbCYmcyYmKGw9clthPVcoeih0KSldKSxsJiZjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhsLGUsNixvKTtjb25zdCBjPXJbYSsiT25jZSJdO2lmKGMpe2lmKGUuZW1pdHRlZCl7aWYoZS5lbWl0dGVkW2FdKXJldHVybn1lbHNlIGUuZW1pdHRlZD17fTtlLmVtaXR0ZWRbYV09ITAsY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoYyxlLDYsbyl9fWNvbnN0IHRuPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhlLHQsbj0hMSl7Y29uc3Qgcj1uP3RuOnQuZW1pdHNDYWNoZSxvPXIuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG87Y29uc3Qgcz1lLmVtaXRzO2xldCBpPXt9LGE9ITE7aWYoIWYoZSkpe2NvbnN0IGV4dGVuZEVtaXRzPWU9Pntjb25zdCBuPW5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhlLHQsITApO24mJihhPSEwLHcoaSxuKSl9OyFuJiZ0Lm1peGlucy5sZW5ndGgmJnQubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpLGUuZXh0ZW5kcyYmZXh0ZW5kRW1pdHMoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChleHRlbmRFbWl0cyl9cmV0dXJuIHN8fGE/KHkocyk/cy5mb3JFYWNoKGU9PmlbZV09bnVsbCk6dyhpLHMpLGIoZSkmJnIuc2V0KGUsaSksaSk6KGIoZSkmJnIuc2V0KGUsbnVsbCksbnVsbCl9ZnVuY3Rpb24gaXNFbWl0TGlzdGVuZXIoZSx0KXtyZXR1cm4hKCFlfHwhSCh0KSkmJih0PXQuc2xpY2UoMikucmVwbGFjZSgvT25jZSQvLCIiKSx2KGUsdFswXS50b0xvd2VyQ2FzZSgpK3Quc2xpY2UoMSkpfHx2KGUseih0KSl8fHYoZSx0KSl9ZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50Um9vdCQxKGUpe2NvbnN0e3R5cGU6dCx2bm9kZTpuLHByb3h5OnIsd2l0aFByb3h5Om8scHJvcHNPcHRpb25zOltzXSxzbG90czppLGF0dHJzOmEsZW1pdDpsLHJlbmRlcjpjLHJlbmRlckNhY2hlOnUscHJvcHM6cCxkYXRhOmQsc2V0dXBTdGF0ZTpmLGN0eDpnLGluaGVyaXRBdHRyczptfT1lLHk9c2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEoZSk7bGV0IHYsXzt0cnl7aWYoNCZuLnNoYXBlRmxhZyl7Y29uc3QgZT1vfHxyLHQ9ZTt2PW5vcm1hbGl6ZVZOb2RlJDEoYy5jYWxsKHQsZSx1LHAsZixkLGcpKSxfPWF9ZWxzZXtjb25zdCBlPXQ7MCx2PW5vcm1hbGl6ZVZOb2RlJDEoZS5sZW5ndGg+MT9lKHAse2F0dHJzOmEsc2xvdHM6aSxlbWl0Omx9KTplKHAsbnVsbCkpLF89dC5wcm9wcz9hOmdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaChhKX19Y2F0Y2godCl7ZG4ubGVuZ3RoPTAsaGFuZGxlRXJyb3IodCxlLDEpLHY9Y3JlYXRlVk5vZGUodW4pfWxldCBiPXY7aWYoXyYmITEhPT1tKXtjb25zdCBlPU9iamVjdC5rZXlzKF8pLHtzaGFwZUZsYWc6dH09YjtlLmxlbmd0aCYmNyZ0JiYocyYmZS5zb21lKE0pJiYoXz1maWx0ZXJNb2RlbExpc3RlbmVycyhfLHMpKSxiPWNsb25lVk5vZGUoYixfLCExLCEwKSl9cmV0dXJuIG4uZGlycyYmKGI9Y2xvbmVWTm9kZShiLG51bGwsITEsITApLGIuZGlycz1iLmRpcnM/Yi5kaXJzLmNvbmNhdChuLmRpcnMpOm4uZGlycyksbi50cmFuc2l0aW9uJiZzZXRUcmFuc2l0aW9uSG9va3MoYixuLnRyYW5zaXRpb24pLHY9YixzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UkMSh5KSx2fWNvbnN0IGdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaD1lPT57bGV0IHQ7Zm9yKGNvbnN0IG4gaW4gZSkoImNsYXNzIj09PW58fCJzdHlsZSI9PT1ufHxIKG4pKSYmKCh0fHwodD17fSkpW25dPWVbbl0pO3JldHVybiB0fSxmaWx0ZXJNb2RlbExpc3RlbmVycz0oZSx0KT0+e2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSlNKHIpJiZyLnNsaWNlKDkpaW4gdHx8KG5bcl09ZVtyXSk7cmV0dXJuIG59O2Z1bmN0aW9uIGhhc1Byb3BzQ2hhbmdlZChlLHQsbil7Y29uc3Qgcj1PYmplY3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9PU9iamVjdC5rZXlzKGUpLmxlbmd0aClyZXR1cm4hMDtmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyl7Y29uc3Qgcz1yW29dO2lmKGhhc1Byb3BWYWx1ZUNoYW5nZWQodCxlLHMpJiYhaXNFbWl0TGlzdGVuZXIobixzKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBoYXNQcm9wVmFsdWVDaGFuZ2VkKGUsdCxuKXtjb25zdCByPWVbbl0sbz10W25dO3JldHVybiJzdHlsZSI9PT1uJiZiKHIpJiZiKG8pPyFxKHIsbyk6ciE9PW99ZnVuY3Rpb24gdXBkYXRlSE9DSG9zdEVsKHt2bm9kZTplLHBhcmVudDp0LHN1c3BlbnNlOm59LHIpe2Zvcig7dDspe2NvbnN0IG49dC5zdWJUcmVlO2lmKG4uc3VzcGVuc2UmJm4uc3VzcGVuc2UuYWN0aXZlQnJhbmNoPT09ZSYmKG4uc3VzcGVuc2Uudm5vZGUuZWw9bi5lbD1yLGU9biksbiE9PWUpYnJlYWs7KGU9dC52bm9kZSkuZWw9cix0PXQucGFyZW50fW4mJm4uYWN0aXZlQnJhbmNoPT09ZSYmKG4udm5vZGUuZWw9cil9Y29uc3Qgbm49e30sY3JlYXRlSW50ZXJuYWxPYmplY3Q9KCk9Pk9iamVjdC5jcmVhdGUobm4pLGlzSW50ZXJuYWxPYmplY3Q9ZT0+T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bm47ZnVuY3Rpb24gc2V0RnVsbFByb3BzKGUsdCxuLHIpe2NvbnN0W28sc109ZS5wcm9wc09wdGlvbnM7bGV0IGksYT0hMTtpZih0KWZvcihsZXQgbCBpbiB0KXtpZihGKGwpKWNvbnRpbnVlO2NvbnN0IGM9dFtsXTtsZXQgdTtvJiZ2KG8sdT1CKGwpKT9zJiZzLmluY2x1ZGVzKHUpPyhpfHwoaT17fSkpW3VdPWM6blt1XT1jOmlzRW1pdExpc3RlbmVyKGUuZW1pdHNPcHRpb25zLGwpfHxsIGluIHImJmM9PT1yW2xdfHwocltsXT1jLGE9ITApfWlmKHMpe2NvbnN0IHQ9dG9SYXcobikscj1pfHxtO2ZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKXtjb25zdCBhPXNbaV07blthXT1yZXNvbHZlUHJvcFZhbHVlKG8sdCxhLHJbYV0sZSwhdihyLGEpKX19cmV0dXJuIGF9ZnVuY3Rpb24gcmVzb2x2ZVByb3BWYWx1ZShlLHQsbixyLG8scyl7Y29uc3QgaT1lW25dO2lmKG51bGwhPWkpe2NvbnN0IGU9dihpLCJkZWZhdWx0Iik7aWYoZSYmdm9pZCAwPT09cil7Y29uc3QgZT1pLmRlZmF1bHQ7aWYoaS50eXBlIT09RnVuY3Rpb24mJiFpLnNraXBGYWN0b3J5JiZmKGUpKXtjb25zdHtwcm9wc0RlZmF1bHRzOnN9PW87aWYobiBpbiBzKXI9c1tuXTtlbHNle2NvbnN0IGk9c2V0Q3VycmVudEluc3RhbmNlKG8pO3I9c1tuXT1lLmNhbGwobnVsbCx0KSxpKCl9fWVsc2Ugcj1lO28uY2UmJm8uY2UuX3NldFByb3AobixyKX1pWzBdJiYocyYmIWU/cj0hMTohaVsxXXx8IiIhPT1yJiZyIT09eihuKXx8KHI9ITApKX1yZXR1cm4gcn1jb25zdCBybj1uZXcgV2Vha01hcDtmdW5jdGlvbiBub3JtYWxpemVQcm9wc09wdGlvbnMoZSx0LG49ITEpe2NvbnN0IHI9bj9ybjp0LnByb3BzQ2FjaGUsbz1yLmdldChlKTtpZihvKXJldHVybiBvO2NvbnN0IHM9ZS5wcm9wcyxpPXt9LGE9W107bGV0IGw9ITE7aWYoIWYoZSkpe2NvbnN0IGV4dGVuZFByb3BzPWU9PntsPSEwO2NvbnN0W24scl09bm9ybWFsaXplUHJvcHNPcHRpb25zKGUsdCwhMCk7dyhpLG4pLHImJmEucHVzaCguLi5yKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyksZS5leHRlbmRzJiZleHRlbmRQcm9wcyhlLmV4dGVuZHMpLGUubWl4aW5zJiZlLm1peGlucy5mb3JFYWNoKGV4dGVuZFByb3BzKX1pZighcyYmIWwpcmV0dXJuIGIoZSkmJnIuc2V0KGUsTCksTDtpZih5KHMpKWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXtjb25zdCB0PUIoc1tlXSk7dmFsaWRhdGVQcm9wTmFtZSh0KSYmKGlbdF09bSl9ZWxzZSBpZihzKWZvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9QihlKTtpZih2YWxpZGF0ZVByb3BOYW1lKHQpKXtjb25zdCBuPXNbZV0scj1pW3RdPXkobil8fGYobik/e3R5cGU6bn06dyh7fSxuKSxvPXIudHlwZTtsZXQgbD0hMSxjPSEwO2lmKHkobykpZm9yKGxldCBlPTA7ZTxvLmxlbmd0aDsrK2Upe2NvbnN0IHQ9b1tlXSxuPWYodCkmJnQubmFtZTtpZigiQm9vbGVhbiI9PT1uKXtsPSEwO2JyZWFrfSJTdHJpbmciPT09biYmKGM9ITEpfWVsc2UgbD1mKG8pJiYiQm9vbGVhbiI9PT1vLm5hbWU7clswXT1sLHJbMV09YywobHx8dihyLCJkZWZhdWx0IikpJiZhLnB1c2godCl9fWNvbnN0IGM9W2ksYV07cmV0dXJuIGIoZSkmJnIuc2V0KGUsYyksY31mdW5jdGlvbiB2YWxpZGF0ZVByb3BOYW1lKGUpe3JldHVybiIkIiE9PWVbMF0mJiFGKGUpfWNvbnN0IGlzSW50ZXJuYWxLZXk9ZT0+Il8iPT09ZXx8Il9jdHgiPT09ZXx8IiRzdGFibGUiPT09ZSxub3JtYWxpemVTbG90VmFsdWU9ZT0+eShlKT9lLm1hcChub3JtYWxpemVWTm9kZSQxKTpbbm9ybWFsaXplVk5vZGUkMShlKV0sbm9ybWFsaXplU2xvdD0oZSx0LG4pPT57aWYodC5fbilyZXR1cm4gdDtjb25zdCByPXdpdGhDdHgoKC4uLmUpPT5ub3JtYWxpemVTbG90VmFsdWUodCguLi5lKSksbik7cmV0dXJuIHIuX2M9ITEscn0sbm9ybWFsaXplT2JqZWN0U2xvdHM9KGUsdCxuKT0+e2NvbnN0IHI9ZS5fY3R4O2Zvcihjb25zdCBuIGluIGUpe2lmKGlzSW50ZXJuYWxLZXkobikpY29udGludWU7Y29uc3Qgbz1lW25dO2lmKGYobykpdFtuXT1ub3JtYWxpemVTbG90KDAsbyxyKTtlbHNlIGlmKG51bGwhPW8pe2NvbnN0IGU9bm9ybWFsaXplU2xvdFZhbHVlKG8pO3Rbbl09KCk9PmV9fX0sbm9ybWFsaXplVk5vZGVTbG90cz0oZSx0KT0+e2NvbnN0IG49bm9ybWFsaXplU2xvdFZhbHVlKHQpO2Uuc2xvdHMuZGVmYXVsdD0oKT0+bn0sYXNzaWduU2xvdHM9KGUsdCxuKT0+e2Zvcihjb25zdCByIGluIHQpIW4mJmlzSW50ZXJuYWxLZXkocil8fChlW3JdPXRbcl0pfSxvbj1xdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZTtmdW5jdGlvbiBjcmVhdGVSZW5kZXJlcihlKXtyZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKGUpfWZ1bmN0aW9uIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyKGUpe3JldHVybiBiYXNlQ3JlYXRlUmVuZGVyZXIoZSxjcmVhdGVIeWRyYXRpb25GdW5jdGlvbnMpfWZ1bmN0aW9uIGJhc2VDcmVhdGVSZW5kZXJlcihlLHQpe2ooKS5fX1ZVRV9fPSEwO2NvbnN0e2luc2VydDpuLHJlbW92ZTpyLHBhdGNoUHJvcDpvLGNyZWF0ZUVsZW1lbnQ6cyxjcmVhdGVUZXh0OmksY3JlYXRlQ29tbWVudDphLHNldFRleHQ6bCxzZXRFbGVtZW50VGV4dDpjLHBhcmVudE5vZGU6dSxuZXh0U2libGluZzpwLHNldFNjb3BlSWQ6ZD1QLGluc2VydFN0YXRpY0NvbnRlbnQ6Zn09ZSxwYXRjaD0oZSx0LG4scj1udWxsLG89bnVsbCxzPW51bGwsaT12b2lkIDAsYT1udWxsLGw9ISF0LmR5bmFtaWNDaGlsZHJlbik9PntpZihlPT09dClyZXR1cm47ZSYmIWlzU2FtZVZOb2RlVHlwZShlLHQpJiYocj1nZXROZXh0SG9zdE5vZGUoZSksdW5tb3VudChlLG8scywhMCksZT1udWxsKSwtMj09PXQucGF0Y2hGbGFnJiYobD0hMSx0LmR5bmFtaWNDaGlsZHJlbj1udWxsKTtjb25zdHt0eXBlOmMscmVmOnUsc2hhcGVGbGFnOnB9PXQ7c3dpdGNoKGMpe2Nhc2UgY246cHJvY2Vzc1RleHQoZSx0LG4scik7YnJlYWs7Y2FzZSB1bjpwcm9jZXNzQ29tbWVudE5vZGUoZSx0LG4scik7YnJlYWs7Y2FzZSBwbjpudWxsPT1lJiZtb3VudFN0YXRpY05vZGUodCxuLHIsaSk7YnJlYWs7Y2FzZSBsbjpwcm9jZXNzRnJhZ21lbnQoZSx0LG4scixvLHMsaSxhLGwpO2JyZWFrO2RlZmF1bHQ6MSZwP3Byb2Nlc3NFbGVtZW50KGUsdCxuLHIsbyxzLGksYSxsKTo2JnA/cHJvY2Vzc0NvbXBvbmVudChlLHQsbixyLG8scyxpLGEsbCk6KDY0JnB8fDEyOCZwKSYmYy5wcm9jZXNzKGUsdCxuLHIsbyxzLGksYSxsLHkpfW51bGwhPXUmJm8/c2V0UmVmKHUsZSYmZS5yZWYscyx0fHxlLCF0KTpudWxsPT11JiZlJiZudWxsIT1lLnJlZiYmc2V0UmVmKGUucmVmLG51bGwscyxlLCEwKX0scHJvY2Vzc1RleHQ9KGUsdCxyLG8pPT57aWYobnVsbD09ZSluKHQuZWw9aSh0LmNoaWxkcmVuKSxyLG8pO2Vsc2V7Y29uc3Qgbj10LmVsPWUuZWw7dC5jaGlsZHJlbiE9PWUuY2hpbGRyZW4mJmwobix0LmNoaWxkcmVuKX19LHByb2Nlc3NDb21tZW50Tm9kZT0oZSx0LHIsbyk9PntudWxsPT1lP24odC5lbD1hKHQuY2hpbGRyZW58fCIiKSxyLG8pOnQuZWw9ZS5lbH0sbW91bnRTdGF0aWNOb2RlPShlLHQsbixyKT0+e1tlLmVsLGUuYW5jaG9yXT1mKGUuY2hpbGRyZW4sdCxuLHIsZS5lbCxlLmFuY2hvcil9LHByb2Nlc3NFbGVtZW50PShlLHQsbixyLG8scyxpLGEsbCk9PntpZigic3ZnIj09PXQudHlwZT9pPSJzdmciOiJtYXRoIj09PXQudHlwZSYmKGk9Im1hdGhtbCIpLG51bGw9PWUpbW91bnRFbGVtZW50KHQsbixyLG8scyxpLGEsbCk7ZWxzZXtjb25zdCBuPWUuZWwmJmUuZWwuX2lzVnVlQ0U/ZS5lbDpudWxsO3RyeXtuJiZuLl9iZWdpblBhdGNoKCkscGF0Y2hFbGVtZW50KGUsdCxvLHMsaSxhLGwpfWZpbmFsbHl7biYmbi5fZW5kUGF0Y2goKX19fSxtb3VudEVsZW1lbnQ9KGUsdCxyLGksYSxsLHUscCk9PntsZXQgZCxmO2NvbnN0e3Byb3BzOmcsc2hhcGVGbGFnOm0sdHJhbnNpdGlvbjp5LGRpcnM6dn09ZTtpZihkPWUuZWw9cyhlLnR5cGUsbCxnJiZnLmlzLGcpLDgmbT9jKGQsZS5jaGlsZHJlbik6MTYmbSYmbW91bnRDaGlsZHJlbihlLmNoaWxkcmVuLGQsbnVsbCxpLGEscmVzb2x2ZUNoaWxkcmVuTmFtZXNwYWNlKGUsbCksdSxwKSx2JiZpbnZva2VEaXJlY3RpdmVIb29rKGUsbnVsbCxpLCJjcmVhdGVkIiksc2V0U2NvcGVJZChkLGUsZS5zY29wZUlkLHUsaSksZyl7Zm9yKGNvbnN0IGUgaW4gZykidmFsdWUiPT09ZXx8RihlKXx8byhkLGUsbnVsbCxnW2VdLGwsaSk7InZhbHVlImluIGcmJm8oZCwidmFsdWUiLG51bGwsZy52YWx1ZSxsKSwoZj1nLm9uVm5vZGVCZWZvcmVNb3VudCkmJmludm9rZVZOb2RlSG9vayhmLGksZSl9diYmaW52b2tlRGlyZWN0aXZlSG9vayhlLG51bGwsaSwiYmVmb3JlTW91bnQiKTtjb25zdCBfPW5lZWRUcmFuc2l0aW9uKGEseSk7XyYmeS5iZWZvcmVFbnRlcihkKSxuKGQsdCxyKSwoKGY9ZyYmZy5vblZub2RlTW91bnRlZCl8fF98fHYpJiZvbigoKT0+e3RyeXtmJiZpbnZva2VWTm9kZUhvb2soZixpLGUpLF8mJnkuZW50ZXIoZCksdiYmaW52b2tlRGlyZWN0aXZlSG9vayhlLG51bGwsaSwibW91bnRlZCIpfWZpbmFsbHl7fX0sYSl9LHNldFNjb3BlSWQ9KGUsdCxuLHIsbyk9PntpZihuJiZkKGUsbikscilmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylkKGUsclt0XSk7aWYobyl7bGV0IG49by5zdWJUcmVlO2lmKHQ9PT1ufHxpc1N1c3BlbnNlKG4udHlwZSkmJihuLnNzQ29udGVudD09PXR8fG4uc3NGYWxsYmFjaz09PXQpKXtjb25zdCB0PW8udm5vZGU7c2V0U2NvcGVJZChlLHQsdC5zY29wZUlkLHQuc2xvdFNjb3BlSWRzLG8ucGFyZW50KX19fSxtb3VudENoaWxkcmVuPShlLHQsbixyLG8scyxpLGEsbD0wKT0+e2ZvcihsZXQgYz1sO2M8ZS5sZW5ndGg7YysrKXtjb25zdCBsPWVbY109YT9jbG9uZUlmTW91bnRlZChlW2NdKTpub3JtYWxpemVWTm9kZSQxKGVbY10pO3BhdGNoKG51bGwsbCx0LG4scixvLHMsaSxhKX19LHBhdGNoRWxlbWVudD0oZSx0LG4scixzLGksYSk9Pntjb25zdCBsPXQuZWw9ZS5lbDtsZXR7cGF0Y2hGbGFnOnUsZHluYW1pY0NoaWxkcmVuOnAsZGlyczpkfT10O3V8PTE2JmUucGF0Y2hGbGFnO2NvbnN0IGY9ZS5wcm9wc3x8bSxnPXQucHJvcHN8fG07bGV0IHk7aWYobiYmdG9nZ2xlUmVjdXJzZShuLCExKSwoeT1nLm9uVm5vZGVCZWZvcmVVcGRhdGUpJiZpbnZva2VWTm9kZUhvb2soeSxuLHQsZSksZCYmaW52b2tlRGlyZWN0aXZlSG9vayh0LGUsbiwiYmVmb3JlVXBkYXRlIiksbiYmdG9nZ2xlUmVjdXJzZShuLCEwKSwoZi5pbm5lckhUTUwmJm51bGw9PWcuaW5uZXJIVE1MfHxmLnRleHRDb250ZW50JiZudWxsPT1nLnRleHRDb250ZW50KSYmYyhsLCIiKSxwP3BhdGNoQmxvY2tDaGlsZHJlbihlLmR5bmFtaWNDaGlsZHJlbixwLGwsbixyLHJlc29sdmVDaGlsZHJlbk5hbWVzcGFjZSh0LHMpLGkpOmF8fHBhdGNoQ2hpbGRyZW4oZSx0LGwsbnVsbCxuLHIscmVzb2x2ZUNoaWxkcmVuTmFtZXNwYWNlKHQscyksaSwhMSksdT4wKXtpZigxNiZ1KXBhdGNoUHJvcHMobCxmLGcsbixzKTtlbHNlIGlmKDImdSYmZi5jbGFzcyE9PWcuY2xhc3MmJm8obCwiY2xhc3MiLG51bGwsZy5jbGFzcyxzKSw0JnUmJm8obCwic3R5bGUiLGYuc3R5bGUsZy5zdHlsZSxzKSw4JnUpe2NvbnN0IGU9dC5keW5hbWljUHJvcHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IHI9ZVt0XSxpPWZbcl0sYT1nW3JdO2E9PT1pJiYidmFsdWUiIT09cnx8byhsLHIsaSxhLHMsbil9fTEmdSYmZS5jaGlsZHJlbiE9PXQuY2hpbGRyZW4mJmMobCx0LmNoaWxkcmVuKX1lbHNlIGF8fG51bGwhPXB8fHBhdGNoUHJvcHMobCxmLGcsbixzKTsoKHk9Zy5vblZub2RlVXBkYXRlZCl8fGQpJiZvbigoKT0+e3kmJmludm9rZVZOb2RlSG9vayh5LG4sdCxlKSxkJiZpbnZva2VEaXJlY3RpdmVIb29rKHQsZSxuLCJ1cGRhdGVkIil9LHIpfSxwYXRjaEJsb2NrQ2hpbGRyZW49KGUsdCxuLHIsbyxzLGkpPT57Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspe2NvbnN0IGw9ZVthXSxjPXRbYV0scD1sLmVsJiYobC50eXBlPT09bG58fCFpc1NhbWVWTm9kZVR5cGUobCxjKXx8MTk4Jmwuc2hhcGVGbGFnKT91KGwuZWwpOm47cGF0Y2gobCxjLHAsbnVsbCxyLG8scyxpLCEwKX19LHBhdGNoUHJvcHM9KGUsdCxuLHIscyk9PntpZih0IT09bil7aWYodCE9PW0pZm9yKGNvbnN0IGkgaW4gdClGKGkpfHxpIGluIG58fG8oZSxpLHRbaV0sbnVsbCxzLHIpO2Zvcihjb25zdCBpIGluIG4pe2lmKEYoaSkpY29udGludWU7Y29uc3QgYT1uW2ldLGw9dFtpXTthIT09bCYmInZhbHVlIiE9PWkmJm8oZSxpLGwsYSxzLHIpfSJ2YWx1ZSJpbiBuJiZvKGUsInZhbHVlIix0LnZhbHVlLG4udmFsdWUscyl9fSxwcm9jZXNzRnJhZ21lbnQ9KGUsdCxyLG8scyxhLGwsYyx1KT0+e2NvbnN0IHA9dC5lbD1lP2UuZWw6aSgiIiksZD10LmFuY2hvcj1lP2UuYW5jaG9yOmkoIiIpO2xldHtwYXRjaEZsYWc6ZixkeW5hbWljQ2hpbGRyZW46ZyxzbG90U2NvcGVJZHM6bX09dDttJiYoYz1jP2MuY29uY2F0KG0pOm0pLG51bGw9PWU/KG4ocCxyLG8pLG4oZCxyLG8pLG1vdW50Q2hpbGRyZW4odC5jaGlsZHJlbnx8W10scixkLHMsYSxsLGMsdSkpOmY+MCYmNjQmZiYmZyYmZS5keW5hbWljQ2hpbGRyZW4mJmUuZHluYW1pY0NoaWxkcmVuLmxlbmd0aD09PWcubGVuZ3RoPyhwYXRjaEJsb2NrQ2hpbGRyZW4oZS5keW5hbWljQ2hpbGRyZW4sZyxyLHMsYSxsLGMpLChudWxsIT10LmtleXx8cyYmdD09PXMuc3ViVHJlZSkmJnRyYXZlcnNlU3RhdGljQ2hpbGRyZW4oZSx0LCEwKSk6cGF0Y2hDaGlsZHJlbihlLHQscixkLHMsYSxsLGMsdSl9LHByb2Nlc3NDb21wb25lbnQ9KGUsdCxuLHIsbyxzLGksYSxsKT0+e3Quc2xvdFNjb3BlSWRzPWEsbnVsbD09ZT81MTImdC5zaGFwZUZsYWc/by5jdHguYWN0aXZhdGUodCxuLHIsaSxsKTptb3VudENvbXBvbmVudCh0LG4scixvLHMsaSxsKTp1cGRhdGVDb21wb25lbnQoZSx0LGwpfSxtb3VudENvbXBvbmVudD0oZSx0LG4scixvLHMsaSk9Pntjb25zdCBhPWUuY29tcG9uZW50PWNyZWF0ZUNvbXBvbmVudEluc3RhbmNlJDEoZSxyLG8pO2lmKGlzS2VlcEFsaXZlKGUpJiYoYS5jdHgucmVuZGVyZXI9eSksc2V0dXBDb21wb25lbnQkMShhLCExLGkpLGEuYXN5bmNEZXApe2lmKG8mJm8ucmVnaXN0ZXJEZXAoYSxzZXR1cFJlbmRlckVmZmVjdCxpKSwhZS5lbCl7Y29uc3Qgcj1hLnN1YlRyZWU9Y3JlYXRlVk5vZGUodW4pO3Byb2Nlc3NDb21tZW50Tm9kZShudWxsLHIsdCxuKSxlLnBsYWNlaG9sZGVyPXIuZWx9fWVsc2Ugc2V0dXBSZW5kZXJFZmZlY3QoYSxlLHQsbixvLHMsaSl9LHVwZGF0ZUNvbXBvbmVudD0oZSx0LG4pPT57Y29uc3Qgcj10LmNvbXBvbmVudD1lLmNvbXBvbmVudDtpZihmdW5jdGlvbihlLHQsbil7Y29uc3R7cHJvcHM6cixjaGlsZHJlbjpvLGNvbXBvbmVudDpzfT1lLHtwcm9wczppLGNoaWxkcmVuOmEscGF0Y2hGbGFnOmx9PXQsYz1zLmVtaXRzT3B0aW9ucztpZih0LmRpcnN8fHQudHJhbnNpdGlvbilyZXR1cm4hMDtpZighKG4mJmw+PTApKXJldHVybiEoIW8mJiFhfHxhJiZhLiRzdGFibGUpfHxyIT09aSYmKHI/IWl8fGhhc1Byb3BzQ2hhbmdlZChyLGksYyk6ISFpKTtpZigxMDI0JmwpcmV0dXJuITA7aWYoMTYmbClyZXR1cm4gcj9oYXNQcm9wc0NoYW5nZWQocixpLGMpOiEhaTtpZig4Jmwpe2NvbnN0IGU9dC5keW5hbWljUHJvcHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtpZihoYXNQcm9wVmFsdWVDaGFuZ2VkKGkscixuKSYmIWlzRW1pdExpc3RlbmVyKGMsbikpcmV0dXJuITB9fXJldHVybiExfShlLHQsbikpe2lmKHIuYXN5bmNEZXAmJiFyLmFzeW5jUmVzb2x2ZWQpcmV0dXJuIHZvaWQgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyKHIsdCxuKTtyLm5leHQ9dCxyLnVwZGF0ZSgpfWVsc2UgdC5lbD1lLmVsLHIudm5vZGU9dH0sc2V0dXBSZW5kZXJFZmZlY3Q9KGUsdCxuLHIsbyxzLGkpPT57ZS5zY29wZS5vbigpO2NvbnN0IGE9ZS5lZmZlY3Q9bmV3IFJlYWN0aXZlRWZmZWN0KCgpPT57aWYoZS5pc01vdW50ZWQpe2xldHtuZXh0OnQsYnU6bix1OnIscGFyZW50OmEsdm5vZGU6Y309ZTt7Y29uc3Qgbj1sb2NhdGVOb25IeWRyYXRlZEFzeW5jUm9vdChlKTtpZihuKXJldHVybiB0JiYodC5lbD1jLmVsLHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcihlLHQsaSkpLHZvaWQgbi5hc3luY0RlcC50aGVuKCgpPT57b24oKCk9PntlLmlzVW5tb3VudGVkfHxsKCl9LG8pfSl9bGV0IHAsZD10O3RvZ2dsZVJlY3Vyc2UoZSwhMSksdD8odC5lbD1jLmVsLHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcihlLHQsaSkpOnQ9YyxuJiZJKG4pLChwPXQucHJvcHMmJnQucHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkmJmludm9rZVZOb2RlSG9vayhwLGEsdCxjKSx0b2dnbGVSZWN1cnNlKGUsITApO2NvbnN0IGY9cmVuZGVyQ29tcG9uZW50Um9vdCQxKGUpLGc9ZS5zdWJUcmVlO2Uuc3ViVHJlZT1mLHBhdGNoKGcsZix1KGcuZWwpLGdldE5leHRIb3N0Tm9kZShnKSxlLG8scyksdC5lbD1mLmVsLG51bGw9PT1kJiZ1cGRhdGVIT0NIb3N0RWwoZSxmLmVsKSxyJiZvbihyLG8pLChwPXQucHJvcHMmJnQucHJvcHMub25Wbm9kZVVwZGF0ZWQpJiZvbigoKT0+aW52b2tlVk5vZGVIb29rKHAsYSx0LGMpLG8pfWVsc2V7bGV0IGk7Y29uc3R7ZWw6YSxwcm9wczpsfT10LHtibTpjLG06dSxwYXJlbnQ6cCxyb290OmQsdHlwZTpmfT1lLGc9aXNBc3luY1dyYXBwZXIodCk7aWYodG9nZ2xlUmVjdXJzZShlLCExKSxjJiZJKGMpLCFnJiYoaT1sJiZsLm9uVm5vZGVCZWZvcmVNb3VudCkmJmludm9rZVZOb2RlSG9vayhpLHAsdCksdG9nZ2xlUmVjdXJzZShlLCEwKSxhJiZiKXtjb25zdCBoeWRyYXRlU3ViVHJlZT0oKT0+e2Uuc3ViVHJlZT1yZW5kZXJDb21wb25lbnRSb290JDEoZSksYihhLGUuc3ViVHJlZSxlLG8sbnVsbCl9O2cmJmYuX19hc3luY0h5ZHJhdGU/Zi5fX2FzeW5jSHlkcmF0ZShhLGUsaHlkcmF0ZVN1YlRyZWUpOmh5ZHJhdGVTdWJUcmVlKCl9ZWxzZXtkLmNlJiZkLmNlLl9oYXNTaGFkb3dSb290KCkmJmQuY2UuX2luamVjdENoaWxkU3R5bGUoZixlLnBhcmVudD9lLnBhcmVudC50eXBlOnZvaWQgMCk7Y29uc3QgaT1lLnN1YlRyZWU9cmVuZGVyQ29tcG9uZW50Um9vdCQxKGUpO3BhdGNoKG51bGwsaSxuLHIsZSxvLHMpLHQuZWw9aS5lbH1pZih1JiZvbih1LG8pLCFnJiYoaT1sJiZsLm9uVm5vZGVNb3VudGVkKSl7Y29uc3QgZT10O29uKCgpPT5pbnZva2VWTm9kZUhvb2soaSxwLGUpLG8pfSgyNTYmdC5zaGFwZUZsYWd8fHAmJmlzQXN5bmNXcmFwcGVyKHAudm5vZGUpJiYyNTYmcC52bm9kZS5zaGFwZUZsYWcpJiZlLmEmJm9uKGUuYSxvKSxlLmlzTW91bnRlZD0hMCx0PW49cj1udWxsfX0pO2Uuc2NvcGUub2ZmKCk7Y29uc3QgbD1lLnVwZGF0ZT1hLnJ1bi5iaW5kKGEpLGM9ZS5qb2I9YS5ydW5JZkRpcnR5LmJpbmQoYSk7Yy5pPWUsYy5pZD1lLnVpZCxhLnNjaGVkdWxlcj0oKT0+cXVldWVKb2IoYyksdG9nZ2xlUmVjdXJzZShlLCEwKSxsKCl9LHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcj0oZSx0LG4pPT57dC5jb21wb25lbnQ9ZTtjb25zdCByPWUudm5vZGUucHJvcHM7ZS52bm9kZT10LGUubmV4dD1udWxsLGZ1bmN0aW9uKGUsdCxuLHIpe2NvbnN0e3Byb3BzOm8sYXR0cnM6cyx2bm9kZTp7cGF0Y2hGbGFnOml9fT1lLGE9dG9SYXcobyksW2xdPWUucHJvcHNPcHRpb25zO2xldCBjPSExO2lmKCEocnx8aT4wKXx8MTYmaSl7bGV0IHI7c2V0RnVsbFByb3BzKGUsdCxvLHMpJiYoYz0hMCk7Zm9yKGNvbnN0IHMgaW4gYSl0JiYodih0LHMpfHwocj16KHMpKSE9PXMmJnYodCxyKSl8fChsPyFufHx2b2lkIDA9PT1uW3NdJiZ2b2lkIDA9PT1uW3JdfHwob1tzXT1yZXNvbHZlUHJvcFZhbHVlKGwsYSxzLHZvaWQgMCxlLCEwKSk6ZGVsZXRlIG9bc10pO2lmKHMhPT1hKWZvcihjb25zdCBlIGluIHMpdCYmdih0LGUpfHwoZGVsZXRlIHNbZV0sYz0hMCl9ZWxzZSBpZig4Jmkpe2NvbnN0IG49ZS52bm9kZS5keW5hbWljUHJvcHM7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2xldCBpPW5bcl07aWYoaXNFbWl0TGlzdGVuZXIoZS5lbWl0c09wdGlvbnMsaSkpY29udGludWU7Y29uc3QgdT10W2ldO2lmKGwpaWYodihzLGkpKXUhPT1zW2ldJiYoc1tpXT11LGM9ITApO2Vsc2V7Y29uc3QgdD1CKGkpO29bdF09cmVzb2x2ZVByb3BWYWx1ZShsLGEsdCx1LGUsITEpfWVsc2UgdSE9PXNbaV0mJihzW2ldPXUsYz0hMCl9fWMmJnRyaWdnZXIoZS5hdHRycywic2V0IiwiIil9KGUsdC5wcm9wcyxyLG4pLCgoZSx0LG4pPT57Y29uc3R7dm5vZGU6cixzbG90czpvfT1lO2xldCBzPSEwLGk9bTtpZigzMiZyLnNoYXBlRmxhZyl7Y29uc3QgZT10Ll87ZT9uJiYxPT09ZT9zPSExOmFzc2lnblNsb3RzKG8sdCxuKToocz0hdC4kc3RhYmxlLG5vcm1hbGl6ZU9iamVjdFNsb3RzKHQsbykpLGk9dH1lbHNlIHQmJihub3JtYWxpemVWTm9kZVNsb3RzKGUsdCksaT17ZGVmYXVsdDoxfSk7aWYocylmb3IoY29uc3QgZSBpbiBvKWlzSW50ZXJuYWxLZXkoZSl8fG51bGwhPWlbZV18fGRlbGV0ZSBvW2VdfSkoZSx0LmNoaWxkcmVuLG4pLHBhdXNlVHJhY2tpbmcoKSxmbHVzaFByZUZsdXNoQ2JzKGUpLHJlc2V0VHJhY2tpbmcoKX0scGF0Y2hDaGlsZHJlbj0oZSx0LG4scixvLHMsaSxhLGw9ITEpPT57Y29uc3QgdT1lJiZlLmNoaWxkcmVuLHA9ZT9lLnNoYXBlRmxhZzowLGQ9dC5jaGlsZHJlbix7cGF0Y2hGbGFnOmYsc2hhcGVGbGFnOmd9PXQ7aWYoZj4wKXtpZigxMjgmZilyZXR1cm4gdm9pZCBwYXRjaEtleWVkQ2hpbGRyZW4odSxkLG4scixvLHMsaSxhLGwpO2lmKDI1NiZmKXJldHVybiB2b2lkIHBhdGNoVW5rZXllZENoaWxkcmVuKHUsZCxuLHIsbyxzLGksYSxsKX04Jmc/KDE2JnAmJnVubW91bnRDaGlsZHJlbih1LG8scyksZCE9PXUmJmMobixkKSk6MTYmcD8xNiZnP3BhdGNoS2V5ZWRDaGlsZHJlbih1LGQsbixyLG8scyxpLGEsbCk6dW5tb3VudENoaWxkcmVuKHUsbyxzLCEwKTooOCZwJiZjKG4sIiIpLDE2JmcmJm1vdW50Q2hpbGRyZW4oZCxuLHIsbyxzLGksYSxsKSl9LHBhdGNoVW5rZXllZENoaWxkcmVuPShlLHQsbixyLG8scyxpLGEsbCk9Pnt0PXR8fEw7Y29uc3QgYz0oZT1lfHxMKS5sZW5ndGgsdT10Lmxlbmd0aCxwPU1hdGgubWluKGMsdSk7bGV0IGQ7Zm9yKGQ9MDtkPHA7ZCsrKXtjb25zdCByPXRbZF09bD9jbG9uZUlmTW91bnRlZCh0W2RdKTpub3JtYWxpemVWTm9kZSQxKHRbZF0pO3BhdGNoKGVbZF0scixuLG51bGwsbyxzLGksYSxsKX1jPnU/dW5tb3VudENoaWxkcmVuKGUsbyxzLCEwLCExLHApOm1vdW50Q2hpbGRyZW4odCxuLHIsbyxzLGksYSxsLHApfSxwYXRjaEtleWVkQ2hpbGRyZW49KGUsdCxuLHIsbyxzLGksYSxsKT0+e2xldCBjPTA7Y29uc3QgdT10Lmxlbmd0aDtsZXQgcD1lLmxlbmd0aC0xLGQ9dS0xO2Zvcig7Yzw9cCYmYzw9ZDspe2NvbnN0IHI9ZVtjXSx1PXRbY109bD9jbG9uZUlmTW91bnRlZCh0W2NdKTpub3JtYWxpemVWTm9kZSQxKHRbY10pO2lmKCFpc1NhbWVWTm9kZVR5cGUocix1KSlicmVhaztwYXRjaChyLHUsbixudWxsLG8scyxpLGEsbCksYysrfWZvcig7Yzw9cCYmYzw9ZDspe2NvbnN0IHI9ZVtwXSxjPXRbZF09bD9jbG9uZUlmTW91bnRlZCh0W2RdKTpub3JtYWxpemVWTm9kZSQxKHRbZF0pO2lmKCFpc1NhbWVWTm9kZVR5cGUocixjKSlicmVhaztwYXRjaChyLGMsbixudWxsLG8scyxpLGEsbCkscC0tLGQtLX1pZihjPnApe2lmKGM8PWQpe2NvbnN0IGU9ZCsxLHA9ZTx1P3RbZV0uZWw6cjtmb3IoO2M8PWQ7KXBhdGNoKG51bGwsdFtjXT1sP2Nsb25lSWZNb3VudGVkKHRbY10pOm5vcm1hbGl6ZVZOb2RlJDEodFtjXSksbixwLG8scyxpLGEsbCksYysrfX1lbHNlIGlmKGM+ZClmb3IoO2M8PXA7KXVubW91bnQoZVtjXSxvLHMsITApLGMrKztlbHNle2NvbnN0IGY9YyxnPWMsbT1uZXcgTWFwO2ZvcihjPWc7Yzw9ZDtjKyspe2NvbnN0IGU9dFtjXT1sP2Nsb25lSWZNb3VudGVkKHRbY10pOm5vcm1hbGl6ZVZOb2RlJDEodFtjXSk7bnVsbCE9ZS5rZXkmJm0uc2V0KGUua2V5LGMpfWxldCB5LHY9MDtjb25zdCBfPWQtZysxO2xldCBiPSExLGs9MDtjb25zdCBDPW5ldyBBcnJheShfKTtmb3IoYz0wO2M8XztjKyspQ1tjXT0wO2ZvcihjPWY7Yzw9cDtjKyspe2NvbnN0IHI9ZVtjXTtpZih2Pj1fKXt1bm1vdW50KHIsbyxzLCEwKTtjb250aW51ZX1sZXQgdTtpZihudWxsIT1yLmtleSl1PW0uZ2V0KHIua2V5KTtlbHNlIGZvcih5PWc7eTw9ZDt5KyspaWYoMD09PUNbeS1nXSYmaXNTYW1lVk5vZGVUeXBlKHIsdFt5XSkpe3U9eTticmVha312b2lkIDA9PT11P3VubW91bnQocixvLHMsITApOihDW3UtZ109YysxLHU+PWs/az11OmI9ITAscGF0Y2gocix0W3VdLG4sbnVsbCxvLHMsaSxhLGwpLHYrKyl9Y29uc3QgUz1iP2Z1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5zbGljZSgpLG49WzBdO2xldCByLG8scyxpLGE7Y29uc3QgbD1lLmxlbmd0aDtmb3Iocj0wO3I8bDtyKyspe2NvbnN0IGw9ZVtyXTtpZigwIT09bCl7aWYobz1uW24ubGVuZ3RoLTFdLGVbb108bCl7dFtyXT1vLG4ucHVzaChyKTtjb250aW51ZX1mb3Iocz0wLGk9bi5sZW5ndGgtMTtzPGk7KWE9cytpPj4xLGVbblthXV08bD9zPWErMTppPWE7bDxlW25bc11dJiYocz4wJiYodFtyXT1uW3MtMV0pLG5bc109cil9fXM9bi5sZW5ndGgsaT1uW3MtMV07Zm9yKDtzLS0gPjA7KW5bc109aSxpPXRbaV07cmV0dXJuIG59KEMpOkw7Zm9yKHk9Uy5sZW5ndGgtMSxjPV8tMTtjPj0wO2MtLSl7Y29uc3QgZT1nK2MscD10W2VdLGQ9dFtlKzFdLGY9ZSsxPHU/ZC5lbHx8cmVzb2x2ZUFzeW5jQ29tcG9uZW50UGxhY2Vob2xkZXIoZCk6cjswPT09Q1tjXT9wYXRjaChudWxsLHAsbixmLG8scyxpLGEsbCk6YiYmKHk8MHx8YyE9PVNbeV0/bW92ZShwLG4sZiwyKTp5LS0pfX19LG1vdmU9KGUsdCxvLHMsaT1udWxsKT0+e2NvbnN0e2VsOmEsdHlwZTpsLHRyYW5zaXRpb246YyxjaGlsZHJlbjp1LHNoYXBlRmxhZzpkfT1lO2lmKDYmZClyZXR1cm4gdm9pZCBtb3ZlKGUuY29tcG9uZW50LnN1YlRyZWUsdCxvLHMpO2lmKDEyOCZkKXJldHVybiB2b2lkIGUuc3VzcGVuc2UubW92ZSh0LG8scyk7aWYoNjQmZClyZXR1cm4gdm9pZCBsLm1vdmUoZSx0LG8seSk7aWYobD09PWxuKXtuKGEsdCxvKTtmb3IobGV0IGU9MDtlPHUubGVuZ3RoO2UrKyltb3ZlKHVbZV0sdCxvLHMpO3JldHVybiB2b2lkIG4oZS5hbmNob3IsdCxvKX1pZihsPT09cG4pcmV0dXJuIHZvaWQoKHtlbDplLGFuY2hvcjp0fSxyLG8pPT57bGV0IHM7Zm9yKDtlJiZlIT09dDspcz1wKGUpLG4oZSxyLG8pLGU9cztuKHQscixvKX0pKGUsdCxvKTtpZigyIT09cyYmMSZkJiZjKWlmKDA9PT1zKWMuYmVmb3JlRW50ZXIoYSksbihhLHQsbyksb24oKCk9PmMuZW50ZXIoYSksaSk7ZWxzZXtjb25zdHtsZWF2ZTpzLGRlbGF5TGVhdmU6aSxhZnRlckxlYXZlOmx9PWMscmVtb3ZlMj0oKT0+e2UuY3R4LmlzVW5tb3VudGVkP3IoYSk6bihhLHQsbyl9LHBlcmZvcm1MZWF2ZT0oKT0+e2EuX2lzTGVhdmluZyYmYVtUdF0oITApLHMoYSwoKT0+e3JlbW92ZTIoKSxsJiZsKCl9KX07aT9pKGEscmVtb3ZlMixwZXJmb3JtTGVhdmUpOnBlcmZvcm1MZWF2ZSgpfWVsc2UgbihhLHQsbyl9LHVubW91bnQ9KGUsdCxuLHI9ITEsbz0hMSk9Pntjb25zdHt0eXBlOnMscHJvcHM6aSxyZWY6YSxjaGlsZHJlbjpsLGR5bmFtaWNDaGlsZHJlbjpjLHNoYXBlRmxhZzp1LHBhdGNoRmxhZzpwLGRpcnM6ZCxjYWNoZUluZGV4OmYsbWVtbzpnfT1lO2lmKC0yPT09cCYmKG89ITEpLG51bGwhPWEmJihwYXVzZVRyYWNraW5nKCksc2V0UmVmKGEsbnVsbCxuLGUsITApLHJlc2V0VHJhY2tpbmcoKSksbnVsbCE9ZiYmKHQucmVuZGVyQ2FjaGVbZl09dm9pZCAwKSwyNTYmdSlyZXR1cm4gdm9pZCB0LmN0eC5kZWFjdGl2YXRlKGUpO2NvbnN0IG09MSZ1JiZkLHY9IWlzQXN5bmNXcmFwcGVyKGUpO2xldCBfO2lmKHYmJihfPWkmJmkub25Wbm9kZUJlZm9yZVVubW91bnQpJiZpbnZva2VWTm9kZUhvb2soXyx0LGUpLDYmdSl1bm1vdW50Q29tcG9uZW50KGUuY29tcG9uZW50LG4scik7ZWxzZXtpZigxMjgmdSlyZXR1cm4gdm9pZCBlLnN1c3BlbnNlLnVubW91bnQobixyKTttJiZpbnZva2VEaXJlY3RpdmVIb29rKGUsbnVsbCx0LCJiZWZvcmVVbm1vdW50IiksNjQmdT9lLnR5cGUucmVtb3ZlKGUsdCxuLHkscik6YyYmIWMuaGFzT25jZSYmKHMhPT1sbnx8cD4wJiY2NCZwKT91bm1vdW50Q2hpbGRyZW4oYyx0LG4sITEsITApOihzPT09bG4mJjM4NCZwfHwhbyYmMTYmdSkmJnVubW91bnRDaGlsZHJlbihsLHQsbiksciYmcmVtb3ZlKGUpfWNvbnN0IGI9bnVsbCE9ZyYmbnVsbD09ZjsodiYmKF89aSYmaS5vblZub2RlVW5tb3VudGVkKXx8bXx8YikmJm9uKCgpPT57XyYmaW52b2tlVk5vZGVIb29rKF8sdCxlKSxtJiZpbnZva2VEaXJlY3RpdmVIb29rKGUsbnVsbCx0LCJ1bm1vdW50ZWQiKSxiJiYoZS5lbD1udWxsKX0sbil9LHJlbW92ZT1lPT57Y29uc3R7dHlwZTp0LGVsOm4sYW5jaG9yOm8sdHJhbnNpdGlvbjpzfT1lO2lmKHQ9PT1sbilyZXR1cm4gdm9pZCByZW1vdmVGcmFnbWVudChuLG8pO2lmKHQ9PT1wbilyZXR1cm4gdm9pZCgoe2VsOmUsYW5jaG9yOnR9KT0+e2xldCBuO2Zvcig7ZSYmZSE9PXQ7KW49cChlKSxyKGUpLGU9bjtyKHQpfSkoZSk7Y29uc3QgcGVyZm9ybVJlbW92ZT0oKT0+e3IobikscyYmIXMucGVyc2lzdGVkJiZzLmFmdGVyTGVhdmUmJnMuYWZ0ZXJMZWF2ZSgpfTtpZigxJmUuc2hhcGVGbGFnJiZzJiYhcy5wZXJzaXN0ZWQpe2NvbnN0e2xlYXZlOnQsZGVsYXlMZWF2ZTpyfT1zLHBlcmZvcm1MZWF2ZT0oKT0+dChuLHBlcmZvcm1SZW1vdmUpO3I/cihlLmVsLHBlcmZvcm1SZW1vdmUscGVyZm9ybUxlYXZlKTpwZXJmb3JtTGVhdmUoKX1lbHNlIHBlcmZvcm1SZW1vdmUoKX0scmVtb3ZlRnJhZ21lbnQ9KGUsdCk9PntsZXQgbjtmb3IoO2UhPT10OyluPXAoZSkscihlKSxlPW47cih0KX0sdW5tb3VudENvbXBvbmVudD0oZSx0LG4pPT57Y29uc3R7YnVtOnIsc2NvcGU6byxqb2I6cyxzdWJUcmVlOmksdW06YSxtOmwsYTpjfT1lO2ludmFsaWRhdGVNb3VudChsKSxpbnZhbGlkYXRlTW91bnQoYyksciYmSShyKSxvLnN0b3AoKSxzJiYocy5mbGFnc3w9OCx1bm1vdW50KGksZSx0LG4pKSxhJiZvbihhLHQpLG9uKCgpPT57ZS5pc1VubW91bnRlZD0hMH0sdCl9LHVubW91bnRDaGlsZHJlbj0oZSx0LG4scj0hMSxvPSExLHM9MCk9Pntmb3IobGV0IGk9cztpPGUubGVuZ3RoO2krKyl1bm1vdW50KGVbaV0sdCxuLHIsbyl9LGdldE5leHRIb3N0Tm9kZT1lPT57aWYoNiZlLnNoYXBlRmxhZylyZXR1cm4gZ2V0TmV4dEhvc3ROb2RlKGUuY29tcG9uZW50LnN1YlRyZWUpO2lmKDEyOCZlLnNoYXBlRmxhZylyZXR1cm4gZS5zdXNwZW5zZS5uZXh0KCk7Y29uc3QgdD1wKGUuYW5jaG9yfHxlLmVsKSxuPXQmJnRbU3RdO3JldHVybiBuP3Aobik6dH07bGV0IGc9ITE7Y29uc3QgcmVuZGVyPShlLHQsbik9PntsZXQgcjtudWxsPT1lP3QuX3Zub2RlJiYodW5tb3VudCh0Ll92bm9kZSxudWxsLG51bGwsITApLHI9dC5fdm5vZGUuY29tcG9uZW50KTpwYXRjaCh0Ll92bm9kZXx8bnVsbCxlLHQsbnVsbCxudWxsLG51bGwsbiksdC5fdm5vZGU9ZSxnfHwoZz0hMCxmbHVzaFByZUZsdXNoQ2JzKHIpLGZsdXNoUG9zdEZsdXNoQ2JzKCksZz0hMSl9LHk9e3A6cGF0Y2gsdW06dW5tb3VudCxtOm1vdmUscjpyZW1vdmUsbXQ6bW91bnRDb21wb25lbnQsbWM6bW91bnRDaGlsZHJlbixwYzpwYXRjaENoaWxkcmVuLHBiYzpwYXRjaEJsb2NrQ2hpbGRyZW4sbjpnZXROZXh0SG9zdE5vZGUsbzplfTtsZXQgXyxiO3JldHVybiB0JiYoW18sYl09dCh5KSkse3JlbmRlcjpyZW5kZXIsaHlkcmF0ZTpfLGNyZWF0ZUFwcDpjcmVhdGVBcHBBUEkocmVuZGVyLF8pfX1mdW5jdGlvbiByZXNvbHZlQ2hpbGRyZW5OYW1lc3BhY2Uoe3R5cGU6ZSxwcm9wczp0fSxuKXtyZXR1cm4ic3ZnIj09PW4mJiJmb3JlaWduT2JqZWN0Ij09PWV8fCJtYXRobWwiPT09biYmImFubm90YXRpb24teG1sIj09PWUmJnQmJnQuZW5jb2RpbmcmJnQuZW5jb2RpbmcuaW5jbHVkZXMoImh0bWwiKT92b2lkIDA6bn1mdW5jdGlvbiB0b2dnbGVSZWN1cnNlKHtlZmZlY3Q6ZSxqb2I6dH0sbil7bj8oZS5mbGFnc3w9MzIsdC5mbGFnc3w9NCk6KGUuZmxhZ3MmPS0zMyx0LmZsYWdzJj0tNSl9ZnVuY3Rpb24gbmVlZFRyYW5zaXRpb24oZSx0KXtyZXR1cm4oIWV8fGUmJiFlLnBlbmRpbmdCcmFuY2gpJiZ0JiYhdC5wZXJzaXN0ZWR9ZnVuY3Rpb24gdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihlLHQsbj0hMSl7Y29uc3Qgcj1lLmNoaWxkcmVuLG89dC5jaGlsZHJlbjtpZih5KHIpJiZ5KG8pKWZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXtjb25zdCB0PXJbZV07bGV0IHM9b1tlXTsxJnMuc2hhcGVGbGFnJiYhcy5keW5hbWljQ2hpbGRyZW4mJigocy5wYXRjaEZsYWc8PTB8fDMyPT09cy5wYXRjaEZsYWcpJiYocz1vW2VdPWNsb25lSWZNb3VudGVkKG9bZV0pLHMuZWw9dC5lbCksbnx8LTI9PT1zLnBhdGNoRmxhZ3x8dHJhdmVyc2VTdGF0aWNDaGlsZHJlbih0LHMpKSxzLnR5cGU9PT1jbiYmKC0xPT09cy5wYXRjaEZsYWcmJihzPW9bZV09Y2xvbmVJZk1vdW50ZWQocykpLHMuZWw9dC5lbCkscy50eXBlIT09dW58fHMuZWx8fChzLmVsPXQuZWwpfX1mdW5jdGlvbiBsb2NhdGVOb25IeWRyYXRlZEFzeW5jUm9vdChlKXtjb25zdCB0PWUuc3ViVHJlZS5jb21wb25lbnQ7aWYodClyZXR1cm4gdC5hc3luY0RlcCYmIXQuYXN5bmNSZXNvbHZlZD90OmxvY2F0ZU5vbkh5ZHJhdGVkQXN5bmNSb290KHQpfWZ1bmN0aW9uIGludmFsaWRhdGVNb3VudChlKXtpZihlKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0uZmxhZ3N8PTh9ZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50UGxhY2Vob2xkZXIoZSl7aWYoZS5wbGFjZWhvbGRlcilyZXR1cm4gZS5wbGFjZWhvbGRlcjtjb25zdCB0PWUuY29tcG9uZW50O3JldHVybiB0P3Jlc29sdmVBc3luY0NvbXBvbmVudFBsYWNlaG9sZGVyKHQuc3ViVHJlZSk6bnVsbH1jb25zdCBpc1N1c3BlbnNlPWU9PmUuX19pc1N1c3BlbnNlO2xldCBzbj0wO2NvbnN0IGFuPXtuYW1lOiJTdXNwZW5zZSIsX19pc1N1c3BlbnNlOiEwLHByb2Nlc3MoZSx0LG4scixvLHMsaSxhLGwsYyl7aWYobnVsbD09ZSkhZnVuY3Rpb24oZSx0LG4scixvLHMsaSxhLGwpe2NvbnN0e3A6YyxvOntjcmVhdGVFbGVtZW50OnV9fT1sLHA9dSgiZGl2IiksZD1lLnN1c3BlbnNlPWNyZWF0ZVN1c3BlbnNlQm91bmRhcnkoZSxvLHIsdCxwLG4scyxpLGEsbCk7YyhudWxsLGQucGVuZGluZ0JyYW5jaD1lLnNzQ29udGVudCxwLG51bGwscixkLHMsaSksZC5kZXBzPjA/KHRyaWdnZXJFdmVudChlLCJvblBlbmRpbmciKSx0cmlnZ2VyRXZlbnQoZSwib25GYWxsYmFjayIpLGMobnVsbCxlLnNzRmFsbGJhY2ssdCxuLHIsbnVsbCxzLGkpLHNldEFjdGl2ZUJyYW5jaChkLGUuc3NGYWxsYmFjaykpOmQucmVzb2x2ZSghMSwhMCl9KHQsbixyLG8scyxpLGEsbCxjKTtlbHNle2lmKHMmJnMuZGVwcz4wJiYhZS5zdXNwZW5zZS5pc0luRmFsbGJhY2spcmV0dXJuIHQuc3VzcGVuc2U9ZS5zdXNwZW5zZSx0LnN1c3BlbnNlLnZub2RlPXQsdm9pZCh0LmVsPWUuZWwpOyFmdW5jdGlvbihlLHQsbixyLG8scyxpLGEse3A6bCx1bTpjLG86e2NyZWF0ZUVsZW1lbnQ6dX19KXtjb25zdCBwPXQuc3VzcGVuc2U9ZS5zdXNwZW5zZTtwLnZub2RlPXQsdC5lbD1lLmVsO2NvbnN0IGQ9dC5zc0NvbnRlbnQsZj10LnNzRmFsbGJhY2sse2FjdGl2ZUJyYW5jaDpnLHBlbmRpbmdCcmFuY2g6bSxpc0luRmFsbGJhY2s6eSxpc0h5ZHJhdGluZzp2fT1wO2lmKG0pcC5wZW5kaW5nQnJhbmNoPWQsaXNTYW1lVk5vZGVUeXBlKG0sZCk/KGwobSxkLHAuaGlkZGVuQ29udGFpbmVyLG51bGwsbyxwLHMsaSxhKSxwLmRlcHM8PTA/cC5yZXNvbHZlKCk6eSYmKHZ8fChsKGcsZixuLHIsbyxudWxsLHMsaSxhKSxzZXRBY3RpdmVCcmFuY2gocCxmKSkpKToocC5wZW5kaW5nSWQ9c24rKyx2PyhwLmlzSHlkcmF0aW5nPSExLHAuYWN0aXZlQnJhbmNoPW0pOmMobSxvLHApLHAuZGVwcz0wLHAuZWZmZWN0cy5sZW5ndGg9MCxwLmhpZGRlbkNvbnRhaW5lcj11KCJkaXYiKSx5PyhsKG51bGwsZCxwLmhpZGRlbkNvbnRhaW5lcixudWxsLG8scCxzLGksYSkscC5kZXBzPD0wP3AucmVzb2x2ZSgpOihsKGcsZixuLHIsbyxudWxsLHMsaSxhKSxzZXRBY3RpdmVCcmFuY2gocCxmKSkpOmcmJmlzU2FtZVZOb2RlVHlwZShnLGQpPyhsKGcsZCxuLHIsbyxwLHMsaSxhKSxwLnJlc29sdmUoITApKToobChudWxsLGQscC5oaWRkZW5Db250YWluZXIsbnVsbCxvLHAscyxpLGEpLHAuZGVwczw9MCYmcC5yZXNvbHZlKCkpKTtlbHNlIGlmKGcmJmlzU2FtZVZOb2RlVHlwZShnLGQpKWwoZyxkLG4scixvLHAscyxpLGEpLHNldEFjdGl2ZUJyYW5jaChwLGQpO2Vsc2UgaWYodHJpZ2dlckV2ZW50KHQsIm9uUGVuZGluZyIpLHAucGVuZGluZ0JyYW5jaD1kLDUxMiZkLnNoYXBlRmxhZz9wLnBlbmRpbmdJZD1kLmNvbXBvbmVudC5zdXNwZW5zZUlkOnAucGVuZGluZ0lkPXNuKyssbChudWxsLGQscC5oaWRkZW5Db250YWluZXIsbnVsbCxvLHAscyxpLGEpLHAuZGVwczw9MClwLnJlc29sdmUoKTtlbHNle2NvbnN0e3RpbWVvdXQ6ZSxwZW5kaW5nSWQ6dH09cDtlPjA/c2V0VGltZW91dCgoKT0+e3AucGVuZGluZ0lkPT09dCYmcC5mYWxsYmFjayhmKX0sZSk6MD09PWUmJnAuZmFsbGJhY2soZil9fShlLHQsbixyLG8saSxhLGwsYyl9fSxoeWRyYXRlOmZ1bmN0aW9uKGUsdCxuLHIsbyxzLGksYSxsKXtjb25zdCBjPXQuc3VzcGVuc2U9Y3JlYXRlU3VzcGVuc2VCb3VuZGFyeSh0LHIsbixlLnBhcmVudE5vZGUsZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksbnVsbCxvLHMsaSxhLCEwKSx1PWwoZSxjLnBlbmRpbmdCcmFuY2g9dC5zc0NvbnRlbnQsbixjLHMsaSk7MD09PWMuZGVwcyYmYy5yZXNvbHZlKCExLCEwKTtyZXR1cm4gdX0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2NvbnN0e3NoYXBlRmxhZzp0LGNoaWxkcmVuOm59PWUscj0zMiZ0O2Uuc3NDb250ZW50PW5vcm1hbGl6ZVN1c3BlbnNlU2xvdChyP24uZGVmYXVsdDpuKSxlLnNzRmFsbGJhY2s9cj9ub3JtYWxpemVTdXNwZW5zZVNsb3Qobi5mYWxsYmFjayk6Y3JlYXRlVk5vZGUodW4pfX07ZnVuY3Rpb24gdHJpZ2dlckV2ZW50KGUsdCl7Y29uc3Qgbj1lLnByb3BzJiZlLnByb3BzW3RdO2YobikmJm4oKX1mdW5jdGlvbiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KGUsdCxuLHIsbyxzLGksYSxsLGMsdT0hMSl7Y29uc3R7cDpwLG06ZCx1bTpmLG46ZyxvOntwYXJlbnROb2RlOm0scmVtb3ZlOnl9fT1jO2xldCB2O2NvbnN0IF89ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLnByb3BzJiZlLnByb3BzLnN1c3BlbnNpYmxlO3JldHVybiBudWxsIT10JiYhMSE9PXR9KGUpO18mJnQmJnQucGVuZGluZ0JyYW5jaCYmKHY9dC5wZW5kaW5nSWQsdC5kZXBzKyspO2NvbnN0IGI9ZS5wcm9wcz9KKGUucHJvcHMudGltZW91dCk6dm9pZCAwLGs9cyxDPXt2bm9kZTplLHBhcmVudDp0LHBhcmVudENvbXBvbmVudDpuLG5hbWVzcGFjZTppLGNvbnRhaW5lcjpyLGhpZGRlbkNvbnRhaW5lcjpvLGRlcHM6MCxwZW5kaW5nSWQ6c24rKyx0aW1lb3V0OiJudW1iZXIiPT10eXBlb2YgYj9iOi0xLGFjdGl2ZUJyYW5jaDpudWxsLGlzRmFsbGJhY2tNb3VudFBlbmRpbmc6ITEscGVuZGluZ0JyYW5jaDpudWxsLGlzSW5GYWxsYmFjazohdSxpc0h5ZHJhdGluZzp1LGlzVW5tb3VudGVkOiExLGVmZmVjdHM6W10scmVzb2x2ZShlPSExLG49ITEpe2NvbnN0e3Zub2RlOnIsYWN0aXZlQnJhbmNoOm8scGVuZGluZ0JyYW5jaDppLHBlbmRpbmdJZDphLGVmZmVjdHM6bCxwYXJlbnRDb21wb25lbnQ6Yyxjb250YWluZXI6dSxpc0luRmFsbGJhY2s6cH09QztsZXQgeT0hMTtDLmlzSHlkcmF0aW5nP0MuaXNIeWRyYXRpbmc9ITE6ZXx8KHk9byYmaS50cmFuc2l0aW9uJiYib3V0LWluIj09PWkudHJhbnNpdGlvbi5tb2RlLHkmJihvLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZT0oKT0+e2E9PT1DLnBlbmRpbmdJZCYmKGQoaSx1LHM9PT1rP2cobyk6cywwKSxxdWV1ZVBvc3RGbHVzaENiKGwpLHAmJnIuc3NGYWxsYmFjayYmKHIuc3NGYWxsYmFjay5lbD1udWxsKSl9KSxvJiYhQy5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nJiYobShvLmVsKT09PXUmJihzPWcobykpLGYobyxjLEMsITApLCF5JiZwJiZyLnNzRmFsbGJhY2smJm9uKCgpPT5yLnNzRmFsbGJhY2suZWw9bnVsbCxDKSkseXx8ZChpLHUscywwKSksQy5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nPSExLHNldEFjdGl2ZUJyYW5jaChDLGkpLEMucGVuZGluZ0JyYW5jaD1udWxsLEMuaXNJbkZhbGxiYWNrPSExO2xldCBiPUMucGFyZW50LFM9ITE7Zm9yKDtiOyl7aWYoYi5wZW5kaW5nQnJhbmNoKXtiLmVmZmVjdHMucHVzaCguLi5sKSxTPSEwO2JyZWFrfWI9Yi5wYXJlbnR9U3x8eXx8cXVldWVQb3N0Rmx1c2hDYihsKSxDLmVmZmVjdHM9W10sXyYmdCYmdC5wZW5kaW5nQnJhbmNoJiZ2PT09dC5wZW5kaW5nSWQmJih0LmRlcHMtLSwwIT09dC5kZXBzfHxufHx0LnJlc29sdmUoKSksdHJpZ2dlckV2ZW50KHIsIm9uUmVzb2x2ZSIpfSxmYWxsYmFjayhlKXtpZighQy5wZW5kaW5nQnJhbmNoKXJldHVybjtjb25zdHt2bm9kZTp0LGFjdGl2ZUJyYW5jaDpuLHBhcmVudENvbXBvbmVudDpyLGNvbnRhaW5lcjpvLG5hbWVzcGFjZTpzfT1DO3RyaWdnZXJFdmVudCh0LCJvbkZhbGxiYWNrIik7Y29uc3QgaT1nKG4pLG1vdW50RmFsbGJhY2s9KCk9PntDLmlzRmFsbGJhY2tNb3VudFBlbmRpbmc9ITEsQy5pc0luRmFsbGJhY2smJihwKG51bGwsZSxvLGkscixudWxsLHMsYSxsKSxzZXRBY3RpdmVCcmFuY2goQyxlKSl9LGM9ZS50cmFuc2l0aW9uJiYib3V0LWluIj09PWUudHJhbnNpdGlvbi5tb2RlO2MmJihDLmlzRmFsbGJhY2tNb3VudFBlbmRpbmc9ITAsbi50cmFuc2l0aW9uLmFmdGVyTGVhdmU9bW91bnRGYWxsYmFjayksQy5pc0luRmFsbGJhY2s9ITAsZihuLHIsbnVsbCwhMCksY3x8bW91bnRGYWxsYmFjaygpfSxtb3ZlKGUsdCxuKXtDLmFjdGl2ZUJyYW5jaCYmZChDLmFjdGl2ZUJyYW5jaCxlLHQsbiksQy5jb250YWluZXI9ZX0sbmV4dDooKT0+Qy5hY3RpdmVCcmFuY2gmJmcoQy5hY3RpdmVCcmFuY2gpLHJlZ2lzdGVyRGVwKGUsdCxuKXtjb25zdCByPSEhQy5wZW5kaW5nQnJhbmNoO3ImJkMuZGVwcysrO2NvbnN0IG89ZS52bm9kZS5lbDtlLmFzeW5jRGVwLmNhdGNoKHQ9PntoYW5kbGVFcnJvcih0LGUsMCl9KS50aGVuKHM9PntpZihlLmlzVW5tb3VudGVkfHxDLmlzVW5tb3VudGVkfHxDLnBlbmRpbmdJZCE9PWUuc3VzcGVuc2VJZClyZXR1cm47dW5zZXRDdXJyZW50SW5zdGFuY2UoKSxlLmFzeW5jUmVzb2x2ZWQ9ITA7Y29uc3R7dm5vZGU6YX09ZTtoYW5kbGVTZXR1cFJlc3VsdChlLHMsITEpLG8mJihhLmVsPW8pO2NvbnN0IGw9IW8mJmUuc3ViVHJlZS5lbDt0KGUsYSxtKG98fGUuc3ViVHJlZS5lbCksbz9udWxsOmcoZS5zdWJUcmVlKSxDLGksbiksbCYmKGEucGxhY2Vob2xkZXI9bnVsbCx5KGwpKSx1cGRhdGVIT0NIb3N0RWwoZSxhLmVsKSxyJiYwPT09LS1DLmRlcHMmJkMucmVzb2x2ZSgpfSl9LHVubW91bnQoZSx0KXtDLmlzVW5tb3VudGVkPSEwLEMuYWN0aXZlQnJhbmNoJiZmKEMuYWN0aXZlQnJhbmNoLG4sZSx0KSxDLnBlbmRpbmdCcmFuY2gmJmYoQy5wZW5kaW5nQnJhbmNoLG4sZSx0KX19O3JldHVybiBDfWZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlU2xvdChlKXtsZXQgdDtpZihmKGUpKXtjb25zdCBuPWhuJiZlLl9jO24mJihlLl9kPSExLG9wZW5CbG9jaygpKSxlPWUoKSxuJiYoZS5fZD0hMCx0PWZuLGNsb3NlQmxvY2soKSl9aWYoeShlKSl7Y29uc3QgdD1mdW5jdGlvbihlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lW25dO2lmKCFpc1ZOb2RlJDIocikpcmV0dXJuO2lmKHIudHlwZSE9PXVufHwidi1pZiI9PT1yLmNoaWxkcmVuKXtpZih0KXJldHVybjt0PXJ9fXJldHVybiB0fShlKTtlPXR9cmV0dXJuIGU9bm9ybWFsaXplVk5vZGUkMShlKSx0JiYhZS5keW5hbWljQ2hpbGRyZW4mJihlLmR5bmFtaWNDaGlsZHJlbj10LmZpbHRlcih0PT50IT09ZSkpLGV9ZnVuY3Rpb24gcXVldWVFZmZlY3RXaXRoU3VzcGVuc2UoZSx0KXt0JiZ0LnBlbmRpbmdCcmFuY2g/eShlKT90LmVmZmVjdHMucHVzaCguLi5lKTp0LmVmZmVjdHMucHVzaChlKTpxdWV1ZVBvc3RGbHVzaENiKGUpfWZ1bmN0aW9uIHNldEFjdGl2ZUJyYW5jaChlLHQpe2UuYWN0aXZlQnJhbmNoPXQ7Y29uc3R7dm5vZGU6bixwYXJlbnRDb21wb25lbnQ6cn09ZTtsZXQgbz10LmVsO2Zvcig7IW8mJnQuY29tcG9uZW50OylvPSh0PXQuY29tcG9uZW50LnN1YlRyZWUpLmVsO24uZWw9byxyJiZyLnN1YlRyZWU9PT1uJiYoci52bm9kZS5lbD1vLHVwZGF0ZUhPQ0hvc3RFbChyLG8pKX1jb25zdCBsbj1TeW1ib2wuZm9yKCJ2LWZndCIpLGNuPVN5bWJvbC5mb3IoInYtdHh0IiksdW49U3ltYm9sLmZvcigidi1jbXQiKSxwbj1TeW1ib2wuZm9yKCJ2LXN0YyIpLGRuPVtdO2xldCBmbj1udWxsO2Z1bmN0aW9uIG9wZW5CbG9jayhlPSExKXtkbi5wdXNoKGZuPWU/bnVsbDpbXSl9ZnVuY3Rpb24gY2xvc2VCbG9jaygpe2RuLnBvcCgpLGZuPWRuW2RuLmxlbmd0aC0xXXx8bnVsbH1sZXQgaG49MTtmdW5jdGlvbiBzZXRCbG9ja1RyYWNraW5nKGUsdD0hMSl7aG4rPWUsZTwwJiZmbiYmdCYmKGZuLmhhc09uY2U9ITApfWZ1bmN0aW9uIHNldHVwQmxvY2soZSl7cmV0dXJuIGUuZHluYW1pY0NoaWxkcmVuPWhuPjA/Zm58fEw6bnVsbCxjbG9zZUJsb2NrKCksaG4+MCYmZm4mJmZuLnB1c2goZSksZX1mdW5jdGlvbiBjcmVhdGVCbG9jayhlLHQsbixyLG8pe3JldHVybiBzZXR1cEJsb2NrKGNyZWF0ZVZOb2RlKGUsdCxuLHIsbywhMCkpfWZ1bmN0aW9uIGlzVk5vZGUkMihlKXtyZXR1cm4hIWUmJiEwPT09ZS5fX3ZfaXNWTm9kZX1mdW5jdGlvbiBpc1NhbWVWTm9kZVR5cGUoZSx0KXtyZXR1cm4gZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fWNvbnN0IG5vcm1hbGl6ZUtleT0oe2tleTplfSk9Pm51bGwhPWU/ZTpudWxsLG5vcm1hbGl6ZVJlZj0oe3JlZjplLHJlZl9rZXk6dCxyZWZfZm9yOm59KT0+KCJudW1iZXIiPT10eXBlb2YgZSYmKGU9IiIrZSksbnVsbCE9ZT8kKGUpfHxpc1JlZihlKXx8ZihlKT97aTpfdCxyOmUsazp0LGY6ISFufTplOm51bGwpO2Z1bmN0aW9uIGNyZWF0ZUJhc2VWTm9kZShlLHQ9bnVsbCxuPW51bGwscj0wLG89bnVsbCxzPShlPT09bG4/MDoxKSxpPSExLGE9ITEpe2NvbnN0IGw9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZSxwcm9wczp0LGtleTp0JiZub3JtYWxpemVLZXkodCkscmVmOnQmJm5vcm1hbGl6ZVJlZih0KSxzY29wZUlkOmJ0LHNsb3RTY29wZUlkczpudWxsLGNoaWxkcmVuOm4sY29tcG9uZW50Om51bGwsc3VzcGVuc2U6bnVsbCxzc0NvbnRlbnQ6bnVsbCxzc0ZhbGxiYWNrOm51bGwsZGlyczpudWxsLHRyYW5zaXRpb246bnVsbCxlbDpudWxsLGFuY2hvcjpudWxsLHRhcmdldDpudWxsLHRhcmdldFN0YXJ0Om51bGwsdGFyZ2V0QW5jaG9yOm51bGwsc3RhdGljQ291bnQ6MCxzaGFwZUZsYWc6cyxwYXRjaEZsYWc6cixkeW5hbWljUHJvcHM6byxkeW5hbWljQ2hpbGRyZW46bnVsbCxhcHBDb250ZXh0Om51bGwsY3R4Ol90fTtyZXR1cm4gYT8obm9ybWFsaXplQ2hpbGRyZW4obCxuKSwxMjgmcyYmZS5ub3JtYWxpemUobCkpOm4mJihsLnNoYXBlRmxhZ3w9JChuKT84OjE2KSxobj4wJiYhaSYmZm4mJihsLnBhdGNoRmxhZz4wfHw2JnMpJiYzMiE9PWwucGF0Y2hGbGFnJiZmbi5wdXNoKGwpLGx9Y29uc3QgY3JlYXRlVk5vZGU9ZnVuY3Rpb24oZSx0PW51bGwsbj1udWxsLHI9MCxvPW51bGwscz0hMSl7ZSYmZSE9PUt0fHwoZT11bik7aWYoaXNWTm9kZSQyKGUpKXtjb25zdCByPWNsb25lVk5vZGUoZSx0LCEwKTtyZXR1cm4gbiYmbm9ybWFsaXplQ2hpbGRyZW4ocixuKSxobj4wJiYhcyYmZm4mJig2JnIuc2hhcGVGbGFnP2ZuW2ZuLmluZGV4T2YoZSldPXI6Zm4ucHVzaChyKSksci5wYXRjaEZsYWc9LTIscn1pPWUsZihpKSYmIl9fdmNjT3B0cyJpbiBpJiYoZT1lLl9fdmNjT3B0cyk7dmFyIGk7aWYodCl7dD1ndWFyZFJlYWN0aXZlUHJvcHModCk7bGV0e2NsYXNzOmUsc3R5bGU6bn09dDtlJiYhJChlKSYmKHQuY2xhc3M9TyhlKSksYihuKSYmKGlzUHJveHkobikmJiF5KG4pJiYobj13KHt9LG4pKSx0LnN0eWxlPU4obikpfWNvbnN0IGE9JChlKT8xOmlzU3VzcGVuc2UoZSk/MTI4OmlzVGVsZXBvcnQoZSk/NjQ6YihlKT80OmYoZSk/MjowO3JldHVybiBjcmVhdGVCYXNlVk5vZGUoZSx0LG4scixvLGEscywhMCl9O2Z1bmN0aW9uIGd1YXJkUmVhY3RpdmVQcm9wcyhlKXtyZXR1cm4gZT9pc1Byb3h5KGUpfHxpc0ludGVybmFsT2JqZWN0KGUpP3coe30sZSk6ZTpudWxsfWZ1bmN0aW9uIGNsb25lVk5vZGUoZSx0LG49ITEscj0hMSl7Y29uc3R7cHJvcHM6byxyZWY6cyxwYXRjaEZsYWc6aSxjaGlsZHJlbjphLHRyYW5zaXRpb246bH09ZSxjPXQ/bWVyZ2VQcm9wcyhvfHx7fSx0KTpvLHU9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZS50eXBlLHByb3BzOmMsa2V5OmMmJm5vcm1hbGl6ZUtleShjKSxyZWY6dCYmdC5yZWY/biYmcz95KHMpP3MuY29uY2F0KG5vcm1hbGl6ZVJlZih0KSk6W3Msbm9ybWFsaXplUmVmKHQpXTpub3JtYWxpemVSZWYodCk6cyxzY29wZUlkOmUuc2NvcGVJZCxzbG90U2NvcGVJZHM6ZS5zbG90U2NvcGVJZHMsY2hpbGRyZW46YSx0YXJnZXQ6ZS50YXJnZXQsdGFyZ2V0U3RhcnQ6ZS50YXJnZXRTdGFydCx0YXJnZXRBbmNob3I6ZS50YXJnZXRBbmNob3Isc3RhdGljQ291bnQ6ZS5zdGF0aWNDb3VudCxzaGFwZUZsYWc6ZS5zaGFwZUZsYWcscGF0Y2hGbGFnOnQmJmUudHlwZSE9PWxuPy0xPT09aT8xNjoxNnxpOmksZHluYW1pY1Byb3BzOmUuZHluYW1pY1Byb3BzLGR5bmFtaWNDaGlsZHJlbjplLmR5bmFtaWNDaGlsZHJlbixhcHBDb250ZXh0OmUuYXBwQ29udGV4dCxkaXJzOmUuZGlycyx0cmFuc2l0aW9uOmwsY29tcG9uZW50OmUuY29tcG9uZW50LHN1c3BlbnNlOmUuc3VzcGVuc2Usc3NDb250ZW50OmUuc3NDb250ZW50JiZjbG9uZVZOb2RlKGUuc3NDb250ZW50KSxzc0ZhbGxiYWNrOmUuc3NGYWxsYmFjayYmY2xvbmVWTm9kZShlLnNzRmFsbGJhY2spLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZWw6ZS5lbCxhbmNob3I6ZS5hbmNob3IsY3R4OmUuY3R4LGNlOmUuY2V9O3JldHVybiBsJiZyJiZzZXRUcmFuc2l0aW9uSG9va3ModSxsLmNsb25lKHUpKSx1fWZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZShlPSIgIix0PTApe3JldHVybiBjcmVhdGVWTm9kZShjbixudWxsLGUsdCl9ZnVuY3Rpb24gbm9ybWFsaXplVk5vZGUkMShlKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9jcmVhdGVWTm9kZSh1bik6eShlKT9jcmVhdGVWTm9kZShsbixudWxsLGUuc2xpY2UoKSk6aXNWTm9kZSQyKGUpP2Nsb25lSWZNb3VudGVkKGUpOmNyZWF0ZVZOb2RlKGNuLG51bGwsU3RyaW5nKGUpKX1mdW5jdGlvbiBjbG9uZUlmTW91bnRlZChlKXtyZXR1cm4gbnVsbD09PWUuZWwmJi0xIT09ZS5wYXRjaEZsYWd8fGUubWVtbz9lOmNsb25lVk5vZGUoZSl9ZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4oZSx0KXtsZXQgbj0wO2NvbnN0e3NoYXBlRmxhZzpyfT1lO2lmKG51bGw9PXQpdD1udWxsO2Vsc2UgaWYoeSh0KSluPTE2O2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiB0KXtpZig2NSZyKXtjb25zdCBuPXQuZGVmYXVsdDtyZXR1cm4gdm9pZChuJiYobi5fYyYmKG4uX2Q9ITEpLG5vcm1hbGl6ZUNoaWxkcmVuKGUsbigpKSxuLl9jJiYobi5fZD0hMCkpKX17bj0zMjtjb25zdCByPXQuXztyfHxpc0ludGVybmFsT2JqZWN0KHQpPzM9PT1yJiZfdCYmKDE9PT1fdC5zbG90cy5fP3QuXz0xOih0Ll89MixlLnBhdGNoRmxhZ3w9MTAyNCkpOnQuX2N0eD1fdH19ZWxzZSBmKHQpPyh0PXtkZWZhdWx0OnQsX2N0eDpfdH0sbj0zMik6KHQ9U3RyaW5nKHQpLDY0JnI/KG49MTYsdD1bY3JlYXRlVGV4dFZOb2RlKHQpXSk6bj04KTtlLmNoaWxkcmVuPXQsZS5zaGFwZUZsYWd8PW59ZnVuY3Rpb24gbWVyZ2VQcm9wcyguLi5lKXtjb25zdCB0PXt9O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWVbbl07Zm9yKGNvbnN0IGUgaW4gcilpZigiY2xhc3MiPT09ZSl0LmNsYXNzIT09ci5jbGFzcyYmKHQuY2xhc3M9TyhbdC5jbGFzcyxyLmNsYXNzXSkpO2Vsc2UgaWYoInN0eWxlIj09PWUpdC5zdHlsZT1OKFt0LnN0eWxlLHIuc3R5bGVdKTtlbHNlIGlmKEgoZSkpe2NvbnN0IG49dFtlXSxvPXJbZV07IW98fG49PT1vfHx5KG4pJiZuLmluY2x1ZGVzKG8pP251bGwhPW98fG51bGwhPW58fE0oZSl8fCh0W2VdPW8pOnRbZV09bj9bXS5jb25jYXQobixvKTpvfWVsc2UiIiE9PWUmJih0W2VdPXJbZV0pfXJldHVybiB0fWZ1bmN0aW9uIGludm9rZVZOb2RlSG9vayhlLHQsbixyPW51bGwpe2NhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGUsdCw3LFtuLHJdKX1jb25zdCBnbj1jcmVhdGVBcHBDb250ZXh0KCk7bGV0IG1uPTA7ZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UkMShlLHQsbil7Y29uc3Qgcj1lLnR5cGUsbz0odD90LmFwcENvbnRleHQ6ZS5hcHBDb250ZXh0KXx8Z24scz17dWlkOm1uKyssdm5vZGU6ZSx0eXBlOnIscGFyZW50OnQsYXBwQ29udGV4dDpvLHJvb3Q6bnVsbCxuZXh0Om51bGwsc3ViVHJlZTpudWxsLGVmZmVjdDpudWxsLHVwZGF0ZTpudWxsLGpvYjpudWxsLHNjb3BlOm5ldyBFZmZlY3RTY29wZSghMCkscmVuZGVyOm51bGwscHJveHk6bnVsbCxleHBvc2VkOm51bGwsZXhwb3NlUHJveHk6bnVsbCx3aXRoUHJveHk6bnVsbCxwcm92aWRlczp0P3QucHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShvLnByb3ZpZGVzKSxpZHM6dD90LmlkczpbIiIsMCwwXSxhY2Nlc3NDYWNoZTpudWxsLHJlbmRlckNhY2hlOltdLGNvbXBvbmVudHM6bnVsbCxkaXJlY3RpdmVzOm51bGwscHJvcHNPcHRpb25zOm5vcm1hbGl6ZVByb3BzT3B0aW9ucyhyLG8pLGVtaXRzT3B0aW9uczpub3JtYWxpemVFbWl0c09wdGlvbnMocixvKSxlbWl0Om51bGwsZW1pdHRlZDpudWxsLHByb3BzRGVmYXVsdHM6bSxpbmhlcml0QXR0cnM6ci5pbmhlcml0QXR0cnMsY3R4Om0sZGF0YTptLHByb3BzOm0sYXR0cnM6bSxzbG90czptLHJlZnM6bSxzZXR1cFN0YXRlOm0sc2V0dXBDb250ZXh0Om51bGwsc3VzcGVuc2U6bixzdXNwZW5zZUlkOm4/bi5wZW5kaW5nSWQ6MCxhc3luY0RlcDpudWxsLGFzeW5jUmVzb2x2ZWQ6ITEsaXNNb3VudGVkOiExLGlzVW5tb3VudGVkOiExLGlzRGVhY3RpdmF0ZWQ6ITEsYmM6bnVsbCxjOm51bGwsYm06bnVsbCxtOm51bGwsYnU6bnVsbCx1Om51bGwsdW06bnVsbCxidW06bnVsbCxkYTpudWxsLGE6bnVsbCxydGc6bnVsbCxydGM6bnVsbCxlYzpudWxsLHNwOm51bGx9O3JldHVybiBzLmN0eD17XzpzfSxzLnJvb3Q9dD90LnJvb3Q6cyxzLmVtaXQ9ZW1pdC5iaW5kKG51bGwscyksZS5jZSYmZS5jZShzKSxzfWxldCB5bj1udWxsO2NvbnN0IGdldEN1cnJlbnRJbnN0YW5jZT0oKT0+eW58fF90O2xldCB2bixfbjt7Y29uc3QgZT1qKCkscmVnaXN0ZXJHbG9iYWxTZXR0ZXI9KHQsbik9PntsZXQgcjtyZXR1cm4ocj1lW3RdKXx8KHI9ZVt0XT1bXSksci5wdXNoKG4pLGU9PntyLmxlbmd0aD4xP3IuZm9yRWFjaCh0PT50KGUpKTpyWzBdKGUpfX07dm49cmVnaXN0ZXJHbG9iYWxTZXR0ZXIoIl9fVlVFX0lOU1RBTkNFX1NFVFRFUlNfXyIsZT0+eW49ZSksX249cmVnaXN0ZXJHbG9iYWxTZXR0ZXIoIl9fVlVFX1NTUl9TRVRURVJTX18iLGU9PkNuPWUpfWNvbnN0IHNldEN1cnJlbnRJbnN0YW5jZT1lPT57Y29uc3QgdD15bjtyZXR1cm4gdm4oZSksZS5zY29wZS5vbigpLCgpPT57ZS5zY29wZS5vZmYoKSx2bih0KX19LHVuc2V0Q3VycmVudEluc3RhbmNlPSgpPT57eW4mJnluLnNjb3BlLm9mZigpLHZuKG51bGwpfTtmdW5jdGlvbiBpc1N0YXRlZnVsQ29tcG9uZW50KGUpe3JldHVybiA0JmUudm5vZGUuc2hhcGVGbGFnfWxldCBibixrbixDbj0hMTtmdW5jdGlvbiBzZXR1cENvbXBvbmVudCQxKGUsdD0hMSxuPSExKXt0JiZfbih0KTtjb25zdHtwcm9wczpyLGNoaWxkcmVuOm99PWUudm5vZGUscz1pc1N0YXRlZnVsQ29tcG9uZW50KGUpOyFmdW5jdGlvbihlLHQsbixyPSExKXtjb25zdCBvPXt9LHM9Y3JlYXRlSW50ZXJuYWxPYmplY3QoKTtlLnByb3BzRGVmYXVsdHM9T2JqZWN0LmNyZWF0ZShudWxsKSxzZXRGdWxsUHJvcHMoZSx0LG8scyk7Zm9yKGNvbnN0IHQgaW4gZS5wcm9wc09wdGlvbnNbMF0pdCBpbiBvfHwob1t0XT12b2lkIDApO24/ZS5wcm9wcz1yP286c2hhbGxvd1JlYWN0aXZlKG8pOmUudHlwZS5wcm9wcz9lLnByb3BzPW86ZS5wcm9wcz1zLGUuYXR0cnM9c30oZSxyLHMsdCksKChlLHQsbik9Pntjb25zdCByPWUuc2xvdHM9Y3JlYXRlSW50ZXJuYWxPYmplY3QoKTtpZigzMiZlLnZub2RlLnNoYXBlRmxhZyl7Y29uc3QgZT10Ll87ZT8oYXNzaWduU2xvdHMocix0LG4pLG4mJl8ociwiXyIsZSwhMCkpOm5vcm1hbGl6ZU9iamVjdFNsb3RzKHQscil9ZWxzZSB0JiZub3JtYWxpemVWTm9kZVNsb3RzKGUsdCl9KShlLG8sbnx8dCk7Y29uc3QgaT1zP2Z1bmN0aW9uKGUsdCl7Y29uc3Qgbj1lLnR5cGU7ZS5hY2Nlc3NDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLGUucHJveHk9bmV3IFByb3h5KGUuY3R4LEd0KTtjb25zdHtzZXR1cDpyfT1uO2lmKHIpe3BhdXNlVHJhY2tpbmcoKTtjb25zdCBuPWUuc2V0dXBDb250ZXh0PXIubGVuZ3RoPjE/Y3JlYXRlU2V0dXBDb250ZXh0KGUpOm51bGwsbz1zZXRDdXJyZW50SW5zdGFuY2UoZSkscz1jYWxsV2l0aEVycm9ySGFuZGxpbmcocixlLDAsW2UucHJvcHMsbl0pLGk9VihzKTtpZihyZXNldFRyYWNraW5nKCksbygpLCFpJiYhZS5zcHx8aXNBc3luY1dyYXBwZXIoZSl8fG1hcmtBc3luY0JvdW5kYXJ5KGUpLGkpe2lmKHMudGhlbih1bnNldEN1cnJlbnRJbnN0YW5jZSx1bnNldEN1cnJlbnRJbnN0YW5jZSksdClyZXR1cm4gcy50aGVuKG49PntoYW5kbGVTZXR1cFJlc3VsdChlLG4sdCl9KS5jYXRjaCh0PT57aGFuZGxlRXJyb3IodCxlLDApfSk7ZS5hc3luY0RlcD1zfWVsc2UgaGFuZGxlU2V0dXBSZXN1bHQoZSxzLHQpfWVsc2UgZmluaXNoQ29tcG9uZW50U2V0dXAoZSx0KX0oZSx0KTp2b2lkIDA7cmV0dXJuIHQmJl9uKCExKSxpfWZ1bmN0aW9uIGhhbmRsZVNldHVwUmVzdWx0KGUsdCxuKXtmKHQpP2UudHlwZS5fX3NzcklubGluZVJlbmRlcj9lLnNzclJlbmRlcj10OmUucmVuZGVyPXQ6Yih0KSYmKGUuc2V0dXBTdGF0ZT1wcm94eVJlZnModCkpLGZpbmlzaENvbXBvbmVudFNldHVwKGUsbil9ZnVuY3Rpb24gZmluaXNoQ29tcG9uZW50U2V0dXAoZSx0LG4pe2NvbnN0IHI9ZS50eXBlO2lmKCFlLnJlbmRlcil7aWYoIXQmJmJuJiYhci5yZW5kZXIpe2NvbnN0IHQ9ci50ZW1wbGF0ZXx8cmVzb2x2ZU1lcmdlZE9wdGlvbnMoZSkudGVtcGxhdGU7aWYodCl7Y29uc3R7aXNDdXN0b21FbGVtZW50Om4sY29tcGlsZXJPcHRpb25zOm99PWUuYXBwQ29udGV4dC5jb25maWcse2RlbGltaXRlcnM6cyxjb21waWxlck9wdGlvbnM6aX09cixhPXcodyh7aXNDdXN0b21FbGVtZW50Om4sZGVsaW1pdGVyczpzfSxvKSxpKTtyLnJlbmRlcj1ibih0LGEpfX1lLnJlbmRlcj1yLnJlbmRlcnx8UCxrbiYma24oZSl9e2NvbnN0IHQ9c2V0Q3VycmVudEluc3RhbmNlKGUpO3BhdXNlVHJhY2tpbmcoKTt0cnl7YXBwbHlPcHRpb25zKGUpfWZpbmFsbHl7cmVzZXRUcmFja2luZygpLHQoKX19fWNvbnN0IFNuPXtnZXQ6KGUsdCk9Pih0cmFjayhlLDAsIiIpLGVbdF0pfTtmdW5jdGlvbiBjcmVhdGVTZXR1cENvbnRleHQoZSl7Y29uc3QgZXhwb3NlPXQ9PntlLmV4cG9zZWQ9dHx8e319O3JldHVybnthdHRyczpuZXcgUHJveHkoZS5hdHRycyxTbiksc2xvdHM6ZS5zbG90cyxlbWl0OmUuZW1pdCxleHBvc2U6ZXhwb3NlfX1mdW5jdGlvbiBnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZShlKXtyZXR1cm4gZS5leHBvc2VkP2UuZXhwb3NlUHJveHl8fChlLmV4cG9zZVByb3h5PW5ldyBQcm94eShwcm94eVJlZnMobWFya1JhdyhlLmV4cG9zZWQpKSx7Z2V0Oih0LG4pPT5uIGluIHQ/dFtuXTpuIGluIEp0P0p0W25dKGUpOnZvaWQgMCxoYXM6KGUsdCk9PnQgaW4gZXx8dCBpbiBKdH0pKTplLnByb3h5fWZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUoZSx0PSEwKXtyZXR1cm4gZihlKT9lLmRpc3BsYXlOYW1lfHxlLm5hbWU6ZS5uYW1lfHx0JiZlLl9fbmFtZX1jb25zdCBjb21wdXRlZD0oZSx0KT0+e2NvbnN0IG49ZnVuY3Rpb24oZSx0LG49ITEpe2xldCByLG87cmV0dXJuIGYoZSk/cj1lOihyPWUuZ2V0LG89ZS5zZXQpLG5ldyBDb21wdXRlZFJlZkltcGwocixvLG4pfShlLDAsQ24pO3JldHVybiBufTtmdW5jdGlvbiBoKGUsdCxuKXt0cnl7c2V0QmxvY2tUcmFja2luZygtMSk7Y29uc3Qgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiAyPT09cj9iKHQpJiYheSh0KT9pc1ZOb2RlJDIodCk/Y3JlYXRlVk5vZGUoZSxudWxsLFt0XSk6Y3JlYXRlVk5vZGUoZSx0KTpjcmVhdGVWTm9kZShlLG51bGwsdCk6KHI+Mz9uPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTozPT09ciYmaXNWTm9kZSQyKG4pJiYobj1bbl0pLGNyZWF0ZVZOb2RlKGUsdCxuKSl9ZmluYWxseXtzZXRCbG9ja1RyYWNraW5nKDEpfX1mdW5jdGlvbiBpc01lbW9TYW1lKGUsdCl7Y29uc3Qgbj1lLm1lbW87aWYobi5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKGsobltlXSx0W2VdKSlyZXR1cm4hMTtyZXR1cm4gaG4+MCYmZm4mJmZuLnB1c2goZSksITB9Y29uc3Qgd249IjMuNS4zMiIsVG49UCxSbj1jdCxBbj15dCxzZXREZXZ0b29sc0hvb2s9ZnVuY3Rpb24oZSx0KXt5dD1lLHl0Pyh5dC5lbmFibGVkPSEwLHZ0LmZvckVhY2goKHtldmVudDplLGFyZ3M6dH0pPT55dC5lbWl0KGUsLi4udCkpLHZ0PVtdKTp2dD1bXX0seG49e2NyZWF0ZUNvbXBvbmVudEluc3RhbmNlOmNyZWF0ZUNvbXBvbmVudEluc3RhbmNlJDEsc2V0dXBDb21wb25lbnQ6c2V0dXBDb21wb25lbnQkMSxyZW5kZXJDb21wb25lbnRSb290OnJlbmRlckNvbXBvbmVudFJvb3QkMSxzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U6c2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlJDEsaXNWTm9kZTppc1ZOb2RlJDIsbm9ybWFsaXplVk5vZGU6bm9ybWFsaXplVk5vZGUkMSxnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZTpnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZSxlbnN1cmVWYWxpZFZOb2RlOmVuc3VyZVZhbGlkVk5vZGUkMSxwdXNoV2FybmluZ0NvbnRleHQ6ZnVuY3Rpb24oZSl7bHQucHVzaChlKX0scG9wV2FybmluZ0NvbnRleHQ6ZnVuY3Rpb24oKXtsdC5wb3AoKX19LEVuPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6bnVsbCxQbj1FbiYmRW4uY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKSwkbj17aW5zZXJ0OihlLHQsbik9Pnt0Lmluc2VydEJlZm9yZShlLG58fG51bGwpfSxyZW1vdmU6ZT0+e2NvbnN0IHQ9ZS5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQoZSl9LGNyZWF0ZUVsZW1lbnQ6KGUsdCxuLHIpPT57Y29uc3Qgbz0ic3ZnIj09PXQ/RW4uY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZSk6Im1hdGhtbCI9PT10P0VuLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsZSk6bj9Fbi5jcmVhdGVFbGVtZW50KGUse2lzOm59KTpFbi5jcmVhdGVFbGVtZW50KGUpO3JldHVybiJzZWxlY3QiPT09ZSYmciYmbnVsbCE9ci5tdWx0aXBsZSYmby5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIixyLm11bHRpcGxlKSxvfSxjcmVhdGVUZXh0OmU9PkVuLmNyZWF0ZVRleHROb2RlKGUpLGNyZWF0ZUNvbW1lbnQ6ZT0+RW4uY3JlYXRlQ29tbWVudChlKSxzZXRUZXh0OihlLHQpPT57ZS5ub2RlVmFsdWU9dH0sc2V0RWxlbWVudFRleHQ6KGUsdCk9PntlLnRleHRDb250ZW50PXR9LHBhcmVudE5vZGU6ZT0+ZS5wYXJlbnROb2RlLG5leHRTaWJsaW5nOmU9PmUubmV4dFNpYmxpbmcscXVlcnlTZWxlY3RvcjplPT5Fbi5xdWVyeVNlbGVjdG9yKGUpLHNldFNjb3BlSWQoZSx0KXtlLnNldEF0dHJpYnV0ZSh0LCIiKX0saW5zZXJ0U3RhdGljQ29udGVudChlLHQsbixyLG8scyl7Y29uc3QgaT1uP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkO2lmKG8mJihvPT09c3x8by5uZXh0U2libGluZykpZm9yKDt0Lmluc2VydEJlZm9yZShvLmNsb25lTm9kZSghMCksbiksbyE9PXMmJihvPW8ubmV4dFNpYmxpbmcpOyk7ZWxzZXtQbi5pbm5lckhUTUw9InN2ZyI9PT1yP2A8c3ZnPiR7ZX08L3N2Zz5gOiJtYXRobWwiPT09cj9gPG1hdGg+JHtlfTwvbWF0aD5gOmU7Y29uc3Qgbz1Qbi5jb250ZW50O2lmKCJzdmciPT09cnx8Im1hdGhtbCI9PT1yKXtjb25zdCBlPW8uZmlyc3RDaGlsZDtmb3IoO2UuZmlyc3RDaGlsZDspby5hcHBlbmRDaGlsZChlLmZpcnN0Q2hpbGQpO28ucmVtb3ZlQ2hpbGQoZSl9dC5pbnNlcnRCZWZvcmUobyxuKX1yZXR1cm5baT9pLm5leHRTaWJsaW5nOnQuZmlyc3RDaGlsZCxuP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkXX19LE9uPSJ0cmFuc2l0aW9uIixObj0iYW5pbWF0aW9uIixIbj1TeW1ib2woIl92dGMiKSxNbj17bmFtZTpTdHJpbmcsdHlwZTpTdHJpbmcsY3NzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sZHVyYXRpb246W1N0cmluZyxOdW1iZXIsT2JqZWN0XSxlbnRlckZyb21DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxhcHBlYXJGcm9tQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxsZWF2ZUZyb21DbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZ30sVm49dyh7fSx4dCxNbiksam49KGU9PihlLmRpc3BsYXlOYW1lPSJUcmFuc2l0aW9uIixlLnByb3BzPVZuLGUpKSgoZSx7c2xvdHM6dH0pPT5oKEV0LHJlc29sdmVUcmFuc2l0aW9uUHJvcHMoZSksdCkpLGNhbGxIb29rPShlLHQ9W10pPT57eShlKT9lLmZvckVhY2goZT0+ZSguLi50KSk6ZSYmZSguLi50KX0saGFzRXhwbGljaXRDYWxsYmFjaz1lPT4hIWUmJih5KGUpP2Uuc29tZShlPT5lLmxlbmd0aD4xKTplLmxlbmd0aD4xKTtmdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvblByb3BzKGUpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IG4gaW4gZSluIGluIE1ufHwodFtuXT1lW25dKTtpZighMT09PWUuY3NzKXJldHVybiB0O2NvbnN0e25hbWU6bj0idiIsdHlwZTpyLGR1cmF0aW9uOm8sZW50ZXJGcm9tQ2xhc3M6cz1gJHtufS1lbnRlci1mcm9tYCxlbnRlckFjdGl2ZUNsYXNzOmk9YCR7bn0tZW50ZXItYWN0aXZlYCxlbnRlclRvQ2xhc3M6YT1gJHtufS1lbnRlci10b2AsYXBwZWFyRnJvbUNsYXNzOmw9cyxhcHBlYXJBY3RpdmVDbGFzczpjPWksYXBwZWFyVG9DbGFzczp1PWEsbGVhdmVGcm9tQ2xhc3M6cD1gJHtufS1sZWF2ZS1mcm9tYCxsZWF2ZUFjdGl2ZUNsYXNzOmQ9YCR7bn0tbGVhdmUtYWN0aXZlYCxsZWF2ZVRvQ2xhc3M6Zj1gJHtufS1sZWF2ZS10b2B9PWUsZz1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiBudWxsO2lmKGIoZSkpcmV0dXJuW051bWJlck9mKGUuZW50ZXIpLE51bWJlck9mKGUubGVhdmUpXTt7Y29uc3QgdD1OdW1iZXJPZihlKTtyZXR1cm5bdCx0XX19KG8pLG09ZyYmZ1swXSx5PWcmJmdbMV0se29uQmVmb3JlRW50ZXI6dixvbkVudGVyOl8sb25FbnRlckNhbmNlbGxlZDprLG9uTGVhdmU6QyxvbkxlYXZlQ2FuY2VsbGVkOlMsb25CZWZvcmVBcHBlYXI6VD12LG9uQXBwZWFyOlI9XyxvbkFwcGVhckNhbmNlbGxlZDpBPWt9PXQsZmluaXNoRW50ZXI9KGUsdCxuLHIpPT57ZS5fZW50ZXJDYW5jZWxsZWQ9cixyZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZSx0P3U6YSkscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUsdD9jOmkpLG4mJm4oKX0sZmluaXNoTGVhdmU9KGUsdCk9PntlLl9pc0xlYXZpbmc9ITEscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUscCkscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUsZikscmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGUsZCksdCYmdCgpfSxtYWtlRW50ZXJIb29rPWU9Pih0LG4pPT57Y29uc3Qgbz1lP1I6XyxyZXNvbHZlPSgpPT5maW5pc2hFbnRlcih0LGUsbik7Y2FsbEhvb2sobyxbdCxyZXNvbHZlXSksbmV4dEZyYW1lKCgpPT57cmVtb3ZlVHJhbnNpdGlvbkNsYXNzKHQsZT9sOnMpLGFkZFRyYW5zaXRpb25DbGFzcyh0LGU/dTphKSxoYXNFeHBsaWNpdENhbGxiYWNrKG8pfHx3aGVuVHJhbnNpdGlvbkVuZHModCxyLG0scmVzb2x2ZSl9KX07cmV0dXJuIHcodCx7b25CZWZvcmVFbnRlcihlKXtjYWxsSG9vayh2LFtlXSksYWRkVHJhbnNpdGlvbkNsYXNzKGUscyksYWRkVHJhbnNpdGlvbkNsYXNzKGUsaSl9LG9uQmVmb3JlQXBwZWFyKGUpe2NhbGxIb29rKFQsW2VdKSxhZGRUcmFuc2l0aW9uQ2xhc3MoZSxsKSxhZGRUcmFuc2l0aW9uQ2xhc3MoZSxjKX0sb25FbnRlcjptYWtlRW50ZXJIb29rKCExKSxvbkFwcGVhcjptYWtlRW50ZXJIb29rKCEwKSxvbkxlYXZlKGUsdCl7ZS5faXNMZWF2aW5nPSEwO2NvbnN0IHJlc29sdmU9KCk9PmZpbmlzaExlYXZlKGUsdCk7YWRkVHJhbnNpdGlvbkNsYXNzKGUscCksZS5fZW50ZXJDYW5jZWxsZWQ/KGFkZFRyYW5zaXRpb25DbGFzcyhlLGQpLGZvcmNlUmVmbG93KGUpKTooZm9yY2VSZWZsb3coZSksYWRkVHJhbnNpdGlvbkNsYXNzKGUsZCkpLG5leHRGcmFtZSgoKT0+e2UuX2lzTGVhdmluZyYmKHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlLHApLGFkZFRyYW5zaXRpb25DbGFzcyhlLGYpLGhhc0V4cGxpY2l0Q2FsbGJhY2soQyl8fHdoZW5UcmFuc2l0aW9uRW5kcyhlLHIseSxyZXNvbHZlKSl9KSxjYWxsSG9vayhDLFtlLHJlc29sdmVdKX0sb25FbnRlckNhbmNlbGxlZChlKXtmaW5pc2hFbnRlcihlLCExLHZvaWQgMCwhMCksY2FsbEhvb2soayxbZV0pfSxvbkFwcGVhckNhbmNlbGxlZChlKXtmaW5pc2hFbnRlcihlLCEwLHZvaWQgMCwhMCksY2FsbEhvb2soQSxbZV0pfSxvbkxlYXZlQ2FuY2VsbGVkKGUpe2ZpbmlzaExlYXZlKGUpLGNhbGxIb29rKFMsW2VdKX19KX1mdW5jdGlvbiBOdW1iZXJPZihlKXtyZXR1cm4gSihlKX1mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKHQ9PnQmJmUuY2xhc3NMaXN0LmFkZCh0KSksKGVbSG5dfHwoZVtIbl09bmV3IFNldCkpLmFkZCh0KX1mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKHQ9PnQmJmUuY2xhc3NMaXN0LnJlbW92ZSh0KSk7Y29uc3Qgbj1lW0huXTtuJiYobi5kZWxldGUodCksbi5zaXplfHwoZVtIbl09dm9pZCAwKSl9ZnVuY3Rpb24gbmV4dEZyYW1lKGUpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZShlKX0pfWxldCBJbj0wO2Z1bmN0aW9uIHdoZW5UcmFuc2l0aW9uRW5kcyhlLHQsbixyKXtjb25zdCBvPWUuX2VuZElkPSsrSW4scmVzb2x2ZUlmTm90U3RhbGU9KCk9PntvPT09ZS5fZW5kSWQmJnIoKX07aWYobnVsbCE9bilyZXR1cm4gc2V0VGltZW91dChyZXNvbHZlSWZOb3RTdGFsZSxuKTtjb25zdHt0eXBlOnMsdGltZW91dDppLHByb3BDb3VudDphfT1nZXRUcmFuc2l0aW9uSW5mbyhlLHQpO2lmKCFzKXJldHVybiByKCk7Y29uc3QgbD1zKyJlbmQiO2xldCBjPTA7Y29uc3QgZW5kPSgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKGwsb25FbmQpLHJlc29sdmVJZk5vdFN0YWxlKCl9LG9uRW5kPXQ9Pnt0LnRhcmdldD09PWUmJisrYz49YSYmZW5kKCl9O3NldFRpbWVvdXQoKCk9PntjPGEmJmVuZCgpfSxpKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihsLG9uRW5kKX1mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyhlLHQpe2NvbnN0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksZ2V0U3R5bGVQcm9wZXJ0aWVzPWU9PihuW2VdfHwiIikuc3BsaXQoIiwgIikscj1nZXRTdHlsZVByb3BlcnRpZXMoYCR7T259RGVsYXlgKSxvPWdldFN0eWxlUHJvcGVydGllcyhgJHtPbn1EdXJhdGlvbmApLHM9Z2V0VGltZW91dChyLG8pLGk9Z2V0U3R5bGVQcm9wZXJ0aWVzKGAke05ufURlbGF5YCksYT1nZXRTdHlsZVByb3BlcnRpZXMoYCR7Tm59RHVyYXRpb25gKSxsPWdldFRpbWVvdXQoaSxhKTtsZXQgYz1udWxsLHU9MCxwPTA7dD09PU9uP3M+MCYmKGM9T24sdT1zLHA9by5sZW5ndGgpOnQ9PT1Obj9sPjAmJihjPU5uLHU9bCxwPWEubGVuZ3RoKToodT1NYXRoLm1heChzLGwpLGM9dT4wP3M+bD9PbjpObjpudWxsLHA9Yz9jPT09T24/by5sZW5ndGg6YS5sZW5ndGg6MCk7cmV0dXJue3R5cGU6Yyx0aW1lb3V0OnUscHJvcENvdW50OnAsaGFzVHJhbnNmb3JtOmM9PT1PbiYmL1xiKD86dHJhbnNmb3JtfGFsbCkoPzosfCQpLy50ZXN0KGdldFN0eWxlUHJvcGVydGllcyhgJHtPbn1Qcm9wZXJ0eWApLnRvU3RyaW5nKCkpfX1mdW5jdGlvbiBnZXRUaW1lb3V0KGUsdCl7Zm9yKDtlLmxlbmd0aDx0Lmxlbmd0aDspZT1lLmNvbmNhdChlKTtyZXR1cm4gTWF0aC5tYXgoLi4udC5tYXAoKHQsbik9PnRvTXModCkrdG9NcyhlW25dKSkpfWZ1bmN0aW9uIHRvTXMoZSl7cmV0dXJuImF1dG8iPT09ZT8wOjFlMypOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKCIsIiwiLiIpKX1mdW5jdGlvbiBmb3JjZVJlZmxvdyhlKXtyZXR1cm4oZT9lLm93bmVyRG9jdW1lbnQ6ZG9jdW1lbnQpLmJvZHkub2Zmc2V0SGVpZ2h0fWNvbnN0IERuPVN5bWJvbCgiX3ZvZCIpLExuPVN5bWJvbCgiX3ZzaCIpLEZuPXtuYW1lOiJzaG93IixiZWZvcmVNb3VudChlLHt2YWx1ZTp0fSx7dHJhbnNpdGlvbjpufSl7ZVtEbl09Im5vbmUiPT09ZS5zdHlsZS5kaXNwbGF5PyIiOmUuc3R5bGUuZGlzcGxheSxuJiZ0P24uYmVmb3JlRW50ZXIoZSk6c2V0RGlzcGxheShlLHQpfSxtb3VudGVkKGUse3ZhbHVlOnR9LHt0cmFuc2l0aW9uOm59KXtuJiZ0JiZuLmVudGVyKGUpfSx1cGRhdGVkKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0se3RyYW5zaXRpb246cn0peyF0IT0hbiYmKHI/dD8oci5iZWZvcmVFbnRlcihlKSxzZXREaXNwbGF5KGUsITApLHIuZW50ZXIoZSkpOnIubGVhdmUoZSwoKT0+e3NldERpc3BsYXkoZSwhMSl9KTpzZXREaXNwbGF5KGUsdCkpfSxiZWZvcmVVbm1vdW50KGUse3ZhbHVlOnR9KXtzZXREaXNwbGF5KGUsdCl9fTtmdW5jdGlvbiBzZXREaXNwbGF5KGUsdCl7ZS5zdHlsZS5kaXNwbGF5PXQ/ZVtEbl06Im5vbmUiLGVbTG5dPSF0fWNvbnN0IEJuPVN5bWJvbCgiIik7ZnVuY3Rpb24gc2V0VmFyc09uVk5vZGUoZSx0KXtpZigxMjgmZS5zaGFwZUZsYWcpe2NvbnN0IG49ZS5zdXNwZW5zZTtlPW4uYWN0aXZlQnJhbmNoLG4ucGVuZGluZ0JyYW5jaCYmIW4uaXNIeWRyYXRpbmcmJm4uZWZmZWN0cy5wdXNoKCgpPT57c2V0VmFyc09uVk5vZGUobi5hY3RpdmVCcmFuY2gsdCl9KX1mb3IoO2UuY29tcG9uZW50OyllPWUuY29tcG9uZW50LnN1YlRyZWU7aWYoMSZlLnNoYXBlRmxhZyYmZS5lbClzZXRWYXJzT25Ob2RlKGUuZWwsdCk7ZWxzZSBpZihlLnR5cGU9PT1sbillLmNoaWxkcmVuLmZvckVhY2goZT0+c2V0VmFyc09uVk5vZGUoZSx0KSk7ZWxzZSBpZihlLnR5cGU9PT1wbil7bGV0e2VsOm4sYW5jaG9yOnJ9PWU7Zm9yKDtuJiYoc2V0VmFyc09uTm9kZShuLHQpLG4hPT1yKTspbj1uLm5leHRTaWJsaW5nfX1mdW5jdGlvbiBzZXRWYXJzT25Ob2RlKGUsdCl7aWYoMT09PWUubm9kZVR5cGUpe2NvbnN0IG49ZS5zdHlsZTtsZXQgcj0iIjtmb3IoY29uc3QgZSBpbiB0KXtjb25zdCBvPWVlKHRbZV0pO24uc2V0UHJvcGVydHkoYC0tJHtlfWAsbykscis9YC0tJHtlfTogJHtvfTtgfW5bQm5dPXJ9fWNvbnN0IFVuPS8oPzpefDspXHMqZGlzcGxheVxzKjovO2NvbnN0IFduPS9ccyohaW1wb3J0YW50JC87ZnVuY3Rpb24gc2V0U3R5bGUoZSx0LG4pe2lmKHkobikpbi5mb3JFYWNoKG49PnNldFN0eWxlKGUsdCxuKSk7ZWxzZSBpZihudWxsPT1uJiYobj0iIiksdC5zdGFydHNXaXRoKCItLSIpKWUuc2V0UHJvcGVydHkodCxuKTtlbHNle2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXFuW3RdO2lmKG4pcmV0dXJuIG47bGV0IHI9Qih0KTtpZigiZmlsdGVyIiE9PXImJnIgaW4gZSlyZXR1cm4gcW5bdF09cjtyPUcocik7Zm9yKGxldCBuPTA7bjx6bi5sZW5ndGg7bisrKXtjb25zdCBvPXpuW25dK3I7aWYobyBpbiBlKXJldHVybiBxblt0XT1vfXJldHVybiB0fShlLHQpO1duLnRlc3Qobik/ZS5zZXRQcm9wZXJ0eSh6KHIpLG4ucmVwbGFjZShXbiwiIiksImltcG9ydGFudCIpOmVbcl09bn19Y29uc3Qgem49WyJXZWJraXQiLCJNb3oiLCJtcyJdLHFuPXt9O2NvbnN0IEtuPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjtmdW5jdGlvbiBwYXRjaEF0dHIoZSx0LG4scixvLHM9WSh0KSl7ciYmdC5zdGFydHNXaXRoKCJ4bGluazoiKT9udWxsPT1uP2UucmVtb3ZlQXR0cmlidXRlTlMoS24sdC5zbGljZSg2LHQubGVuZ3RoKSk6ZS5zZXRBdHRyaWJ1dGVOUyhLbix0LG4pOm51bGw9PW58fHMmJiFYKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQscz8iIjpnKG4pP1N0cmluZyhuKTpuKX1mdW5jdGlvbiBwYXRjaERPTVByb3AoZSx0LG4scixvKXtpZigiaW5uZXJIVE1MIj09PXR8fCJ0ZXh0Q29udGVudCI9PT10KXJldHVybiB2b2lkKG51bGwhPW4mJihlW3RdPW4pKTtjb25zdCBzPWUudGFnTmFtZTtpZigidmFsdWUiPT09dCYmIlBST0dSRVNTIiE9PXMmJiFzLmluY2x1ZGVzKCItIikpe2NvbnN0IHI9Ik9QVElPTiI9PT1zP2UuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfHwiIjplLnZhbHVlLG89bnVsbD09bj8iY2hlY2tib3giPT09ZS50eXBlPyJvbiI6IiI6U3RyaW5nKG4pO3JldHVybiByPT09byYmIl92YWx1ZSJpbiBlfHwoZS52YWx1ZT1vKSxudWxsPT1uJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KSx2b2lkKGUuX3ZhbHVlPW4pfWxldCBpPSExO2lmKCIiPT09bnx8bnVsbD09bil7Y29uc3Qgcj10eXBlb2YgZVt0XTsiYm9vbGVhbiI9PT1yP249WChuKTpudWxsPT1uJiYic3RyaW5nIj09PXI/KG49IiIsaT0hMCk6Im51bWJlciI9PT1yJiYobj0wLGk9ITApfXRyeXtlW3RdPW59Y2F0Y2goZSl7fWkmJmUucmVtb3ZlQXR0cmlidXRlKG98fHQpfWZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoZSx0LG4scil7ZS5hZGRFdmVudExpc3RlbmVyKHQsbixyKX1jb25zdCBKbj1TeW1ib2woIl92ZWkiKTtmdW5jdGlvbiBwYXRjaEV2ZW50KGUsdCxuLHIsbz1udWxsKXtjb25zdCBzPWVbSm5dfHwoZVtKbl09e30pLGk9c1t0XTtpZihyJiZpKWkudmFsdWU9cjtlbHNle2NvbnN0W24sYV09ZnVuY3Rpb24oZSl7bGV0IHQ7aWYoR24udGVzdChlKSl7bGV0IG47Zm9yKHQ9e307bj1lLm1hdGNoKEduKTspZT1lLnNsaWNlKDAsZS5sZW5ndGgtblswXS5sZW5ndGgpLHRbblswXS50b0xvd2VyQ2FzZSgpXT0hMH1jb25zdCBuPSI6Ij09PWVbMl0/ZS5zbGljZSgzKTp6KGUuc2xpY2UoMikpO3JldHVybltuLHRdfSh0KTtpZihyKXtjb25zdCBpPXNbdF09ZnVuY3Rpb24oZSx0KXtjb25zdCBpbnZva2VyPWU9PntpZihlLl92dHMpe2lmKGUuX3Z0czw9aW52b2tlci5hdHRhY2hlZClyZXR1cm59ZWxzZSBlLl92dHM9RGF0ZS5ub3coKTtjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhmdW5jdGlvbihlLHQpe2lmKHkodCkpe2NvbnN0IG49ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247cmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPSgpPT57bi5jYWxsKGUpLGUuX3N0b3BwZWQ9ITB9LHQubWFwKGU9PnQ9PiF0Ll9zdG9wcGVkJiZlJiZlKHQpKX1yZXR1cm4gdH0oZSxpbnZva2VyLnZhbHVlKSx0LDUsW2VdKX07cmV0dXJuIGludm9rZXIudmFsdWU9ZSxpbnZva2VyLmF0dGFjaGVkPWdldE5vdygpLGludm9rZXJ9KHIsbyk7YWRkRXZlbnRMaXN0ZW5lcihlLG4saSxhKX1lbHNlIGkmJighZnVuY3Rpb24oZSx0LG4scil7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKX0oZSxuLGksYSksc1t0XT12b2lkIDApfX1jb25zdCBHbj0vKD86T25jZXxQYXNzaXZlfENhcHR1cmUpJC87bGV0IFpuPTA7Y29uc3QgWG49UHJvbWlzZS5yZXNvbHZlKCksZ2V0Tm93PSgpPT5abnx8KFhuLnRoZW4oKCk9PlpuPTApLFpuPURhdGUubm93KCkpO2NvbnN0IGlzTmF0aXZlT249ZT0+MTExPT09ZS5jaGFyQ29kZUF0KDApJiYxMTA9PT1lLmNoYXJDb2RlQXQoMSkmJmUuY2hhckNvZGVBdCgyKT45NiYmZS5jaGFyQ29kZUF0KDIpPDEyMyxwYXRjaFByb3A9KGUsdCxuLHIsbyxzKT0+e2NvbnN0IGk9InN2ZyI9PT1vOyJjbGFzcyI9PT10P2Z1bmN0aW9uKGUsdCxuKXtjb25zdCByPWVbSG5dO3ImJih0PSh0P1t0LC4uLnJdOlsuLi5yXSkuam9pbigiICIpKSxudWxsPT10P2UucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpOm4/ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0KTplLmNsYXNzTmFtZT10fShlLHIsaSk6InN0eWxlIj09PXQ/ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9ZS5zdHlsZSxvPSQobik7bGV0IHM9ITE7aWYobiYmIW8pe2lmKHQpaWYoJCh0KSlmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCI7Iikpe2NvbnN0IHQ9ZS5zbGljZSgwLGUuaW5kZXhPZigiOiIpKS50cmltKCk7bnVsbD09blt0XSYmc2V0U3R5bGUocix0LCIiKX1lbHNlIGZvcihjb25zdCBlIGluIHQpbnVsbD09bltlXSYmc2V0U3R5bGUocixlLCIiKTtmb3IoY29uc3QgZSBpbiBuKSJkaXNwbGF5Ij09PWUmJihzPSEwKSxzZXRTdHlsZShyLGUsbltlXSl9ZWxzZSBpZihvKXtpZih0IT09bil7Y29uc3QgZT1yW0JuXTtlJiYobis9IjsiK2UpLHIuY3NzVGV4dD1uLHM9VW4udGVzdChuKX19ZWxzZSB0JiZlLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKTtEbiBpbiBlJiYoZVtEbl09cz9yLmRpc3BsYXk6IiIsZVtMbl0mJihyLmRpc3BsYXk9Im5vbmUiKSl9KGUsbixyKTpIKHQpP00odCl8fHBhdGNoRXZlbnQoZSx0LDAscixzKTooIi4iPT09dFswXT8odD10LnNsaWNlKDEpLDEpOiJeIj09PXRbMF0/KHQ9dC5zbGljZSgxKSwwKTpmdW5jdGlvbihlLHQsbixyKXtpZihyKXJldHVybiJpbm5lckhUTUwiPT09dHx8InRleHRDb250ZW50Ij09PXR8fCEhKHQgaW4gZSYmaXNOYXRpdmVPbih0KSYmZihuKSk7aWYoInNwZWxsY2hlY2siPT09dHx8ImRyYWdnYWJsZSI9PT10fHwidHJhbnNsYXRlIj09PXR8fCJhdXRvY29ycmVjdCI9PT10KXJldHVybiExO2lmKCJzYW5kYm94Ij09PXQmJiJJRlJBTUUiPT09ZS50YWdOYW1lKXJldHVybiExO2lmKCJmb3JtIj09PXQpcmV0dXJuITE7aWYoImxpc3QiPT09dCYmIklOUFVUIj09PWUudGFnTmFtZSlyZXR1cm4hMTtpZigidHlwZSI9PT10JiYiVEVYVEFSRUEiPT09ZS50YWdOYW1lKXJldHVybiExO2lmKCJ3aWR0aCI9PT10fHwiaGVpZ2h0Ij09PXQpe2NvbnN0IHQ9ZS50YWdOYW1lO2lmKCJJTUciPT09dHx8IlZJREVPIj09PXR8fCJDQU5WQVMiPT09dHx8IlNPVVJDRSI9PT10KXJldHVybiExfWlmKGlzTmF0aXZlT24odCkmJiQobikpcmV0dXJuITE7cmV0dXJuIHQgaW4gZX0oZSx0LHIsaSkpPyhwYXRjaERPTVByb3AoZSx0LHIpLGUudGFnTmFtZS5pbmNsdWRlcygiLSIpfHwidmFsdWUiIT09dCYmImNoZWNrZWQiIT09dCYmInNlbGVjdGVkIiE9PXR8fHBhdGNoQXR0cihlLHQscixpLDAsInZhbHVlIiE9PXQpKTplLl9pc1Z1ZUNFJiYoZnVuY3Rpb24oZSx0KXtjb25zdCBuPWUuX2RlZi5wcm9wcztpZighbilyZXR1cm4hMTtjb25zdCByPUIodCk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5zb21lKGU9PkIoZSk9PT1yKTpPYmplY3Qua2V5cyhuKS5zb21lKGU9PkIoZSk9PT1yKX0oZSx0KXx8ZS5fZGVmLl9fYXN5bmNMb2FkZXImJigvW0EtWl0vLnRlc3QodCl8fCEkKHIpKSk/cGF0Y2hET01Qcm9wKGUsQih0KSxyLDAsdCk6KCJ0cnVlLXZhbHVlIj09PXQ/ZS5fdHJ1ZVZhbHVlPXI6ImZhbHNlLXZhbHVlIj09PXQmJihlLl9mYWxzZVZhbHVlPXIpLHBhdGNoQXR0cihlLHQscixpKSl9O2NvbnN0IFluPXt9O2Z1bmN0aW9uIGRlZmluZUN1c3RvbUVsZW1lbnQoZSx0LG4pe2xldCByPWRlZmluZUNvbXBvbmVudChlLHQpO0UocikmJihyPXcoe30scix0KSk7Y2xhc3MgVnVlQ3VzdG9tRWxlbWVudCBleHRlbmRzIFZ1ZUVsZW1lbnR7Y29uc3RydWN0b3IoZSl7c3VwZXIocixlLG4pfX1yZXR1cm4gVnVlQ3VzdG9tRWxlbWVudC5kZWY9cixWdWVDdXN0b21FbGVtZW50fWNvbnN0IFFuPSJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEVsZW1lbnQ/SFRNTEVsZW1lbnQ6Y2xhc3N7fTtjbGFzcyBWdWVFbGVtZW50IGV4dGVuZHMgUW57Y29uc3RydWN0b3IoZSx0PXt9LG49Y3JlYXRlQXBwKXtzdXBlcigpLHRoaXMuX2RlZj1lLHRoaXMuX3Byb3BzPXQsdGhpcy5fY3JlYXRlQXBwPW4sdGhpcy5faXNWdWVDRT0hMCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2FwcD1udWxsLHRoaXMuX25vbmNlPXRoaXMuX2RlZi5ub25jZSx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5fcmVzb2x2ZWQ9ITEsdGhpcy5fcGF0Y2hpbmc9ITEsdGhpcy5fZGlydHk9ITEsdGhpcy5fbnVtYmVyUHJvcHM9bnVsbCx0aGlzLl9zdHlsZUNoaWxkcmVuPW5ldyBXZWFrU2V0LHRoaXMuX3N0eWxlQW5jaG9ycz1uZXcgV2Vha01hcCx0aGlzLl9vYj1udWxsLHRoaXMuc2hhZG93Um9vdCYmbiE9PWNyZWF0ZUFwcD90aGlzLl9yb290PXRoaXMuc2hhZG93Um9vdDohMSE9PWUuc2hhZG93Um9vdD8odGhpcy5hdHRhY2hTaGFkb3codyh7fSxlLnNoYWRvd1Jvb3RPcHRpb25zLHttb2RlOiJvcGVuIn0pKSx0aGlzLl9yb290PXRoaXMuc2hhZG93Um9vdCk6dGhpcy5fcm9vdD10aGlzfWNvbm5lY3RlZENhbGxiYWNrKCl7aWYoIXRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuO3RoaXMuc2hhZG93Um9vdHx8dGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3BhcnNlU2xvdHMoKSx0aGlzLl9jb25uZWN0ZWQ9ITA7bGV0IGU9dGhpcztmb3IoO2U9ZSYmKGUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGV8fGUuaG9zdCk7KWlmKGUgaW5zdGFuY2VvZiBWdWVFbGVtZW50KXt0aGlzLl9wYXJlbnQ9ZTticmVha310aGlzLl9pbnN0YW5jZXx8KHRoaXMuX3Jlc29sdmVkP3RoaXMuX21vdW50KHRoaXMuX2RlZik6ZSYmZS5fcGVuZGluZ1Jlc29sdmU/dGhpcy5fcGVuZGluZ1Jlc29sdmU9ZS5fcGVuZGluZ1Jlc29sdmUudGhlbigoKT0+e3RoaXMuX3BlbmRpbmdSZXNvbHZlPXZvaWQgMCx0aGlzLl9yZXNvbHZlRGVmKCl9KTp0aGlzLl9yZXNvbHZlRGVmKCkpfV9zZXRQYXJlbnQoZT10aGlzLl9wYXJlbnQpe2UmJih0aGlzLl9pbnN0YW5jZS5wYXJlbnQ9ZS5faW5zdGFuY2UsdGhpcy5faW5oZXJpdFBhcmVudENvbnRleHQoZSkpfV9pbmhlcml0UGFyZW50Q29udGV4dChlPXRoaXMuX3BhcmVudCl7ZSYmdGhpcy5fYXBwJiZPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcy5fYXBwLl9jb250ZXh0LnByb3ZpZGVzLGUuX2luc3RhbmNlLnByb3ZpZGVzKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX2Nvbm5lY3RlZD0hMSxuZXh0VGljaygoKT0+e3RoaXMuX2Nvbm5lY3RlZHx8KHRoaXMuX29iJiYodGhpcy5fb2IuZGlzY29ubmVjdCgpLHRoaXMuX29iPW51bGwpLHRoaXMuX2FwcCYmdGhpcy5fYXBwLnVubW91bnQoKSx0aGlzLl9pbnN0YW5jZSYmKHRoaXMuX2luc3RhbmNlLmNlPXZvaWQgMCksdGhpcy5fYXBwPXRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5fdGVsZXBvcnRUYXJnZXRzJiYodGhpcy5fdGVsZXBvcnRUYXJnZXRzLmNsZWFyKCksdGhpcy5fdGVsZXBvcnRUYXJnZXRzPXZvaWQgMCkpfSl9X3Byb2Nlc3NNdXRhdGlvbnMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLl9zZXRBdHRyKHQuYXR0cmlidXRlTmFtZSl9X3Jlc29sdmVEZWYoKXtpZih0aGlzLl9wZW5kaW5nUmVzb2x2ZSlyZXR1cm47Zm9yKGxldCBlPTA7ZTx0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoO2UrKyl0aGlzLl9zZXRBdHRyKHRoaXMuYXR0cmlidXRlc1tlXS5uYW1lKTt0aGlzLl9vYj1uZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLl9wcm9jZXNzTXV0YXRpb25zLmJpbmQodGhpcykpLHRoaXMuX29iLm9ic2VydmUodGhpcyx7YXR0cmlidXRlczohMH0pO2NvbnN0IHJlc29sdmU9KGUsdD0hMSk9Pnt0aGlzLl9yZXNvbHZlZD0hMCx0aGlzLl9wZW5kaW5nUmVzb2x2ZT12b2lkIDA7Y29uc3R7cHJvcHM6bixzdHlsZXM6cn09ZTtsZXQgbztpZihuJiYheShuKSlmb3IoY29uc3QgZSBpbiBuKXtjb25zdCB0PW5bZV07KHQ9PT1OdW1iZXJ8fHQmJnQudHlwZT09PU51bWJlcikmJihlIGluIHRoaXMuX3Byb3BzJiYodGhpcy5fcHJvcHNbZV09Sih0aGlzLl9wcm9wc1tlXSkpLChvfHwobz1PYmplY3QuY3JlYXRlKG51bGwpKSlbQihlKV09ITApfXRoaXMuX251bWJlclByb3BzPW8sdGhpcy5fcmVzb2x2ZVByb3BzKGUpLHRoaXMuc2hhZG93Um9vdCYmdGhpcy5fYXBwbHlTdHlsZXMociksdGhpcy5fbW91bnQoZSl9LGU9dGhpcy5fZGVmLl9fYXN5bmNMb2FkZXI7ZT90aGlzLl9wZW5kaW5nUmVzb2x2ZT1lKCkudGhlbihlPT57ZS5jb25maWd1cmVBcHA9dGhpcy5fZGVmLmNvbmZpZ3VyZUFwcCxyZXNvbHZlKHRoaXMuX2RlZj1lLCEwKX0pOnJlc29sdmUodGhpcy5fZGVmKX1fbW91bnQoZSl7dGhpcy5fYXBwPXRoaXMuX2NyZWF0ZUFwcChlKSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dCgpLGUuY29uZmlndXJlQXBwJiZlLmNvbmZpZ3VyZUFwcCh0aGlzLl9hcHApLHRoaXMuX2FwcC5fY2VWTm9kZT10aGlzLl9jcmVhdGVWTm9kZSgpLHRoaXMuX2FwcC5tb3VudCh0aGlzLl9yb290KTtjb25zdCB0PXRoaXMuX2luc3RhbmNlJiZ0aGlzLl9pbnN0YW5jZS5leHBvc2VkO2lmKHQpZm9yKGNvbnN0IGUgaW4gdCl2KHRoaXMsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2dldDooKT0+dW5yZWYodFtlXSl9KX1fcmVzb2x2ZVByb3BzKGUpe2NvbnN0e3Byb3BzOnR9PWUsbj15KHQpP3Q6T2JqZWN0LmtleXModHx8e30pO2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKHRoaXMpKSJfIiE9PWVbMF0mJm4uaW5jbHVkZXMoZSkmJnRoaXMuX3NldFByb3AoZSx0aGlzW2VdKTtmb3IoY29uc3QgZSBvZiBuLm1hcChCKSlPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxlLHtnZXQoKXtyZXR1cm4gdGhpcy5fZ2V0UHJvcChlKX0sc2V0KHQpe3RoaXMuX3NldFByb3AoZSx0LCEwLCF0aGlzLl9wYXRjaGluZyl9fSl9X3NldEF0dHIoZSl7aWYoZS5zdGFydHNXaXRoKCJkYXRhLXYtIikpcmV0dXJuO2NvbnN0IHQ9dGhpcy5oYXNBdHRyaWJ1dGUoZSk7bGV0IG49dD90aGlzLmdldEF0dHJpYnV0ZShlKTpZbjtjb25zdCByPUIoZSk7dCYmdGhpcy5fbnVtYmVyUHJvcHMmJnRoaXMuX251bWJlclByb3BzW3JdJiYobj1KKG4pKSx0aGlzLl9zZXRQcm9wKHIsbiwhMSwhMCl9X2dldFByb3AoZSl7cmV0dXJuIHRoaXMuX3Byb3BzW2VdfV9zZXRQcm9wKGUsdCxuPSEwLHI9ITEpe2lmKHQhPT10aGlzLl9wcm9wc1tlXSYmKHRoaXMuX2RpcnR5PSEwLHQ9PT1Zbj9kZWxldGUgdGhpcy5fcHJvcHNbZV06KHRoaXMuX3Byb3BzW2VdPXQsImtleSI9PT1lJiZ0aGlzLl9hcHAmJih0aGlzLl9hcHAuX2NlVk5vZGUua2V5PXQpKSxyJiZ0aGlzLl9pbnN0YW5jZSYmdGhpcy5fdXBkYXRlKCksbikpe2NvbnN0IG49dGhpcy5fb2I7biYmKHRoaXMuX3Byb2Nlc3NNdXRhdGlvbnMobi50YWtlUmVjb3JkcygpKSxuLmRpc2Nvbm5lY3QoKSksITA9PT10P3RoaXMuc2V0QXR0cmlidXRlKHooZSksIiIpOiJzdHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0P3RoaXMuc2V0QXR0cmlidXRlKHooZSksdCsiIik6dHx8dGhpcy5yZW1vdmVBdHRyaWJ1dGUoeihlKSksbiYmbi5vYnNlcnZlKHRoaXMse2F0dHJpYnV0ZXM6ITB9KX19X3VwZGF0ZSgpe2NvbnN0IGU9dGhpcy5fY3JlYXRlVk5vZGUoKTt0aGlzLl9hcHAmJihlLmFwcENvbnRleHQ9dGhpcy5fYXBwLl9jb250ZXh0KSxyZW5kZXIoZSx0aGlzLl9yb290KX1fY3JlYXRlVk5vZGUoKXtjb25zdCBlPXt9O3RoaXMuc2hhZG93Um9vdHx8KGUub25Wbm9kZU1vdW50ZWQ9ZS5vblZub2RlVXBkYXRlZD10aGlzLl9yZW5kZXJTbG90cy5iaW5kKHRoaXMpKTtjb25zdCB0PWNyZWF0ZVZOb2RlKHRoaXMuX2RlZix3KGUsdGhpcy5fcHJvcHMpKTtyZXR1cm4gdGhpcy5faW5zdGFuY2V8fCh0LmNlPWU9Pnt0aGlzLl9pbnN0YW5jZT1lLGUuY2U9dGhpcyxlLmlzQ0U9ITA7Y29uc3QgZGlzcGF0Y2g9KGUsdCk9Pnt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGUsRSh0WzBdKT93KHtkZXRhaWw6dH0sdFswXSk6e2RldGFpbDp0fSkpfTtlLmVtaXQ9KGUsLi4udCk9PntkaXNwYXRjaChlLHQpLHooZSkhPT1lJiZkaXNwYXRjaCh6KGUpLHQpfSx0aGlzLl9zZXRQYXJlbnQoKX0pLHR9X2FwcGx5U3R5bGVzKGUsdCxuKXtpZighZSlyZXR1cm47aWYodCl7aWYodD09PXRoaXMuX2RlZnx8dGhpcy5fc3R5bGVDaGlsZHJlbi5oYXModCkpcmV0dXJuO3RoaXMuX3N0eWxlQ2hpbGRyZW4uYWRkKHQpfWNvbnN0IHI9dGhpcy5fbm9uY2Usbz10aGlzLnNoYWRvd1Jvb3Qscz1uP3RoaXMuX2dldFN0eWxlQW5jaG9yKG4pfHx0aGlzLl9nZXRTdHlsZUFuY2hvcih0aGlzLl9kZWYpOnRoaXMuX2dldFJvb3RTdHlsZUluc2VydGlvbkFuY2hvcihvKTtsZXQgaT1udWxsO2ZvcihsZXQgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKXtjb25zdCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ciYmbC5zZXRBdHRyaWJ1dGUoIm5vbmNlIixyKSxsLnRleHRDb250ZW50PWVbYV0sby5pbnNlcnRCZWZvcmUobCxpfHxzKSxpPWwsMD09PWEmJihufHx0aGlzLl9zdHlsZUFuY2hvcnMuc2V0KHRoaXMuX2RlZixsKSx0JiZ0aGlzLl9zdHlsZUFuY2hvcnMuc2V0KHQsbCkpfX1fZ2V0U3R5bGVBbmNob3IoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLl9zdHlsZUFuY2hvcnMuZ2V0KGUpO3JldHVybiB0JiZ0LnBhcmVudE5vZGU9PT10aGlzLnNoYWRvd1Jvb3Q/dDoodCYmdGhpcy5fc3R5bGVBbmNob3JzLmRlbGV0ZShlKSxudWxsKX1fZ2V0Um9vdFN0eWxlSW5zZXJ0aW9uQW5jaG9yKGUpe2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZE5vZGVzLmxlbmd0aDt0Kyspe2NvbnN0IG49ZS5jaGlsZE5vZGVzW3RdO2lmKCEobiBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpKXJldHVybiBufXJldHVybiBudWxsfV9wYXJzZVNsb3RzKCl7Y29uc3QgZT10aGlzLl9zbG90cz17fTtsZXQgdDtmb3IoO3Q9dGhpcy5maXJzdENoaWxkOyl7Y29uc3Qgbj0xPT09dC5ub2RlVHlwZSYmdC5nZXRBdHRyaWJ1dGUoInNsb3QiKXx8ImRlZmF1bHQiOyhlW25dfHwoZVtuXT1bXSkpLnB1c2godCksdGhpcy5yZW1vdmVDaGlsZCh0KX19X3JlbmRlclNsb3RzKCl7Y29uc3QgZT10aGlzLl9nZXRTbG90cygpLHQ9dGhpcy5faW5zdGFuY2UudHlwZS5fX3Njb3BlSWQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZVtuXSxvPXIuZ2V0QXR0cmlidXRlKCJuYW1lIil8fCJkZWZhdWx0IixzPXRoaXMuX3Nsb3RzW29dLGk9ci5wYXJlbnROb2RlO2lmKHMpZm9yKGNvbnN0IGUgb2Ygcyl7aWYodCYmMT09PWUubm9kZVR5cGUpe2NvbnN0IG49dCsiLXMiLHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLDEpO2xldCBvO2ZvcihlLnNldEF0dHJpYnV0ZShuLCIiKTtvPXIubmV4dE5vZGUoKTspby5zZXRBdHRyaWJ1dGUobiwiIil9aS5pbnNlcnRCZWZvcmUoZSxyKX1lbHNlIGZvcig7ci5maXJzdENoaWxkOylpLmluc2VydEJlZm9yZShyLmZpcnN0Q2hpbGQscik7aS5yZW1vdmVDaGlsZChyKX19X2dldFNsb3RzKCl7Y29uc3QgZT1bdGhpc107dGhpcy5fdGVsZXBvcnRUYXJnZXRzJiZlLnB1c2goLi4udGhpcy5fdGVsZXBvcnRUYXJnZXRzKTtjb25zdCB0PW5ldyBTZXQ7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uLnF1ZXJ5U2VsZWN0b3JBbGwoInNsb3QiKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0LmFkZChlW25dKX1yZXR1cm4gQXJyYXkuZnJvbSh0KX1faW5qZWN0Q2hpbGRTdHlsZShlLHQpe3RoaXMuX2FwcGx5U3R5bGVzKGUuc3R5bGVzLGUsdCl9X2JlZ2luUGF0Y2goKXt0aGlzLl9wYXRjaGluZz0hMCx0aGlzLl9kaXJ0eT0hMX1fZW5kUGF0Y2goKXt0aGlzLl9wYXRjaGluZz0hMSx0aGlzLl9kaXJ0eSYmdGhpcy5faW5zdGFuY2UmJnRoaXMuX3VwZGF0ZSgpfV9oYXNTaGFkb3dSb290KCl7cmV0dXJuITEhPT10aGlzLl9kZWYuc2hhZG93Um9vdH1fcmVtb3ZlQ2hpbGRTdHlsZShlKXt9fWZ1bmN0aW9uIHVzZUhvc3QoZSl7Y29uc3QgdD1nZXRDdXJyZW50SW5zdGFuY2UoKSxuPXQmJnQuY2U7cmV0dXJuIG58fG51bGx9Y29uc3QgZXI9bmV3IFdlYWtNYXAsdHI9bmV3IFdlYWtNYXAsbnI9U3ltYm9sKCJfbW92ZUNiIikscnI9U3ltYm9sKCJfZW50ZXJDYiIpLG9yPShlPT4oZGVsZXRlIGUucHJvcHMubW9kZSxlKSkoe25hbWU6IlRyYW5zaXRpb25Hcm91cCIscHJvcHM6dyh7fSxWbix7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSksc2V0dXAoZSx7c2xvdHM6dH0pe2NvbnN0IG49Z2V0Q3VycmVudEluc3RhbmNlKCkscj11c2VUcmFuc2l0aW9uU3RhdGUoKTtsZXQgbyxzO3JldHVybiBMdCgoKT0+e2lmKCFvLmxlbmd0aClyZXR1cm47Y29uc3QgdD1lLm1vdmVDbGFzc3x8YCR7ZS5uYW1lfHwidiJ9LW1vdmVgO2lmKCFmdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1lLmNsb25lTm9kZSgpLG89ZVtIbl07byYmby5mb3JFYWNoKGU9PntlLnNwbGl0KC9ccysvKS5mb3JFYWNoKGU9PmUmJnIuY2xhc3NMaXN0LnJlbW92ZShlKSl9KTtuLnNwbGl0KC9ccysvKS5mb3JFYWNoKGU9PmUmJnIuY2xhc3NMaXN0LmFkZChlKSksci5zdHlsZS5kaXNwbGF5PSJub25lIjtjb25zdCBzPTE9PT10Lm5vZGVUeXBlP3Q6dC5wYXJlbnROb2RlO3MuYXBwZW5kQ2hpbGQocik7Y29uc3R7aGFzVHJhbnNmb3JtOml9PWdldFRyYW5zaXRpb25JbmZvKHIpO3JldHVybiBzLnJlbW92ZUNoaWxkKHIpLGl9KG9bMF0uZWwsbi52bm9kZS5lbCx0KSlyZXR1cm4gdm9pZChvPVtdKTtvLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpLG8uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7Y29uc3Qgcj1vLmZpbHRlcihhcHBseVRyYW5zbGF0aW9uKTtmb3JjZVJlZmxvdyhuLnZub2RlLmVsKSxyLmZvckVhY2goZT0+e2NvbnN0IG49ZS5lbCxyPW4uc3R5bGU7YWRkVHJhbnNpdGlvbkNsYXNzKG4sdCksci50cmFuc2Zvcm09ci53ZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249IiI7Y29uc3Qgbz1uW25yXT1lPT57ZSYmZS50YXJnZXQhPT1ufHxlJiYhZS5wcm9wZXJ0eU5hbWUuZW5kc1dpdGgoInRyYW5zZm9ybSIpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixvKSxuW25yXT1udWxsLHJlbW92ZVRyYW5zaXRpb25DbGFzcyhuLHQpKX07bi5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixvKX0pLG89W119KSwoKT0+e2NvbnN0IGk9dG9SYXcoZSksYT1yZXNvbHZlVHJhbnNpdGlvblByb3BzKGkpO2xldCBsPWkudGFnfHxsbjtpZihvPVtdLHMpZm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspe2NvbnN0IHQ9c1tlXTt0LmVsJiZ0LmVsIGluc3RhbmNlb2YgRWxlbWVudCYmKG8ucHVzaCh0KSxzZXRUcmFuc2l0aW9uSG9va3ModCxyZXNvbHZlVHJhbnNpdGlvbkhvb2tzKHQsYSxyLG4pKSxlci5zZXQodCxnZXRQb3NpdGlvbih0LmVsKSkpfXM9dC5kZWZhdWx0P2dldFRyYW5zaXRpb25SYXdDaGlsZHJlbih0LmRlZmF1bHQoKSk6W107Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspe2NvbnN0IHQ9c1tlXTtudWxsIT10LmtleSYmc2V0VHJhbnNpdGlvbkhvb2tzKHQscmVzb2x2ZVRyYW5zaXRpb25Ib29rcyh0LGEscixuKSl9cmV0dXJuIGNyZWF0ZVZOb2RlKGwsbnVsbCxzKX19fSk7ZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMoZSl7Y29uc3QgdD1lLmVsO3RbbnJdJiZ0W25yXSgpLHRbcnJdJiZ0W3JyXSgpfWZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uKGUpe3RyLnNldChlLGdldFBvc2l0aW9uKGUuZWwpKX1mdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uKGUpe2NvbnN0IHQ9ZXIuZ2V0KGUpLG49dHIuZ2V0KGUpLHI9dC5sZWZ0LW4ubGVmdCxvPXQudG9wLW4udG9wO2lmKHJ8fG8pe2NvbnN0IHQ9ZS5lbCxuPXQuc3R5bGUscz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBpPTEsYT0xO3JldHVybiB0Lm9mZnNldFdpZHRoJiYoaT1zLndpZHRoL3Qub2Zmc2V0V2lkdGgpLHQub2Zmc2V0SGVpZ2h0JiYoYT1zLmhlaWdodC90Lm9mZnNldEhlaWdodCksTnVtYmVyLmlzRmluaXRlKGkpJiYwIT09aXx8KGk9MSksTnVtYmVyLmlzRmluaXRlKGEpJiYwIT09YXx8KGE9MSksTWF0aC5hYnMoaS0xKTwuMDEmJihpPTEpLE1hdGguYWJzKGEtMSk8LjAxJiYoYT0xKSxuLnRyYW5zZm9ybT1uLndlYmtpdFRyYW5zZm9ybT1gdHJhbnNsYXRlKCR7ci9pfXB4LCR7by9hfXB4KWAsbi50cmFuc2l0aW9uRHVyYXRpb249IjBzIixlfX1mdW5jdGlvbiBnZXRQb3NpdGlvbihlKXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2xlZnQ6dC5sZWZ0LHRvcDp0LnRvcH19Y29uc3QgZ2V0TW9kZWxBc3NpZ25lcj1lPT57Y29uc3QgdD1lLnByb3BzWyJvblVwZGF0ZTptb2RlbFZhbHVlIl18fCExO3JldHVybiB5KHQpP2U9PkkodCxlKTp0fTtmdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQoZSl7Y29uc3QgdD1lLnRhcmdldDt0LmNvbXBvc2luZyYmKHQuY29tcG9zaW5nPSExLHQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImlucHV0IikpKX1jb25zdCBzcj1TeW1ib2woIl9hc3NpZ24iKTtmdW5jdGlvbiBjYXN0VmFsdWUoZSx0LG4pe3JldHVybiB0JiYoZT1lLnRyaW0oKSksbiYmKGU9VShlKSksZX1jb25zdCBpcj17Y3JlYXRlZChlLHttb2RpZmllcnM6e2xhenk6dCx0cmltOm4sbnVtYmVyOnJ9fSxvKXtlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKG8pO2NvbnN0IHM9cnx8by5wcm9wcyYmIm51bWJlciI9PT1vLnByb3BzLnR5cGU7YWRkRXZlbnRMaXN0ZW5lcihlLHQ/ImNoYW5nZSI6ImlucHV0Iix0PT57dC50YXJnZXQuY29tcG9zaW5nfHxlW3NyXShjYXN0VmFsdWUoZS52YWx1ZSxuLHMpKX0pLChufHxzKSYmYWRkRXZlbnRMaXN0ZW5lcihlLCJjaGFuZ2UiLCgpPT57ZS52YWx1ZT1jYXN0VmFsdWUoZS52YWx1ZSxuLHMpfSksdHx8KGFkZEV2ZW50TGlzdGVuZXIoZSwiY29tcG9zaXRpb25zdGFydCIsb25Db21wb3NpdGlvblN0YXJ0KSxhZGRFdmVudExpc3RlbmVyKGUsImNvbXBvc2l0aW9uZW5kIixvbkNvbXBvc2l0aW9uRW5kKSxhZGRFdmVudExpc3RlbmVyKGUsImNoYW5nZSIsb25Db21wb3NpdGlvbkVuZCkpfSxtb3VudGVkKGUse3ZhbHVlOnR9KXtlLnZhbHVlPW51bGw9PXQ/IiI6dH0sYmVmb3JlVXBkYXRlKGUse3ZhbHVlOnQsb2xkVmFsdWU6bixtb2RpZmllcnM6e2xhenk6cix0cmltOm8sbnVtYmVyOnN9fSxpKXtpZihlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKGkpLGUuY29tcG9zaW5nKXJldHVybjtjb25zdCBhPW51bGw9PXQ/IiI6dDtpZigoIXMmJiJudW1iZXIiIT09ZS50eXBlfHwvXjBcZC8udGVzdChlLnZhbHVlKT9lLnZhbHVlOlUoZS52YWx1ZSkpPT09YSlyZXR1cm47Y29uc3QgbD1lLmdldFJvb3ROb2RlKCk7aWYoKGwgaW5zdGFuY2VvZiBEb2N1bWVudHx8bCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpJiZsLmFjdGl2ZUVsZW1lbnQ9PT1lJiYicmFuZ2UiIT09ZS50eXBlKXtpZihyJiZ0PT09bilyZXR1cm47aWYobyYmZS52YWx1ZS50cmltKCk9PT1hKXJldHVybn1lLnZhbHVlPWF9fSxhcj17ZGVlcDohMCxjcmVhdGVkKGUsdCxuKXtlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKG4pLGFkZEV2ZW50TGlzdGVuZXIoZSwiY2hhbmdlIiwoKT0+e2NvbnN0IHQ9ZS5fbW9kZWxWYWx1ZSxuPWdldFZhbHVlKGUpLHI9ZS5jaGVja2VkLG89ZVtzcl07aWYoeSh0KSl7Y29uc3QgZT1RKHQsbikscz0tMSE9PWU7aWYociYmIXMpbyh0LmNvbmNhdChuKSk7ZWxzZSBpZighciYmcyl7Y29uc3Qgbj1bLi4udF07bi5zcGxpY2UoZSwxKSxvKG4pfX1lbHNlIGlmKHgodCkpe2NvbnN0IGU9bmV3IFNldCh0KTtyP2UuYWRkKG4pOmUuZGVsZXRlKG4pLG8oZSl9ZWxzZSBvKGdldENoZWNrYm94VmFsdWUoZSxyKSl9KX0sbW91bnRlZDpzZXRDaGVja2VkLGJlZm9yZVVwZGF0ZShlLHQsbil7ZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihuKSxzZXRDaGVja2VkKGUsdCxuKX19O2Z1bmN0aW9uIHNldENoZWNrZWQoZSx7dmFsdWU6dCxvbGRWYWx1ZTpufSxyKXtsZXQgbztpZihlLl9tb2RlbFZhbHVlPXQseSh0KSlvPVEodCxyLnByb3BzLnZhbHVlKT4tMTtlbHNlIGlmKHgodCkpbz10LmhhcyhyLnByb3BzLnZhbHVlKTtlbHNle2lmKHQ9PT1uKXJldHVybjtvPXEodCxnZXRDaGVja2JveFZhbHVlKGUsITApKX1lLmNoZWNrZWQhPT1vJiYoZS5jaGVja2VkPW8pfWNvbnN0IGxyPXtjcmVhdGVkKGUse3ZhbHVlOnR9LG4pe2UuY2hlY2tlZD1xKHQsbi5wcm9wcy52YWx1ZSksZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihuKSxhZGRFdmVudExpc3RlbmVyKGUsImNoYW5nZSIsKCk9PntlW3NyXShnZXRWYWx1ZShlKSl9KX0sYmVmb3JlVXBkYXRlKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0scil7ZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihyKSx0IT09biYmKGUuY2hlY2tlZD1xKHQsci5wcm9wcy52YWx1ZSkpfX0sY3I9e2RlZXA6ITAsY3JlYXRlZChlLHt2YWx1ZTp0LG1vZGlmaWVyczp7bnVtYmVyOm59fSxyKXtjb25zdCBvPXgodCk7YWRkRXZlbnRMaXN0ZW5lcihlLCJjaGFuZ2UiLCgpPT57Y29uc3QgdD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoZS5vcHRpb25zLGU9PmUuc2VsZWN0ZWQpLm1hcChlPT5uP1UoZ2V0VmFsdWUoZSkpOmdldFZhbHVlKGUpKTtlW3NyXShlLm11bHRpcGxlP28/bmV3IFNldCh0KTp0OnRbMF0pLGUuX2Fzc2lnbmluZz0hMCxuZXh0VGljaygoKT0+e2UuX2Fzc2lnbmluZz0hMX0pfSksZVtzcl09Z2V0TW9kZWxBc3NpZ25lcihyKX0sbW91bnRlZChlLHt2YWx1ZTp0fSl7c2V0U2VsZWN0ZWQoZSx0KX0sYmVmb3JlVXBkYXRlKGUsdCxuKXtlW3NyXT1nZXRNb2RlbEFzc2lnbmVyKG4pfSx1cGRhdGVkKGUse3ZhbHVlOnR9KXtlLl9hc3NpZ25pbmd8fHNldFNlbGVjdGVkKGUsdCl9fTtmdW5jdGlvbiBzZXRTZWxlY3RlZChlLHQpe2NvbnN0IG49ZS5tdWx0aXBsZSxyPXkodCk7aWYoIW58fHJ8fHgodCkpe2ZvcihsZXQgbz0wLHM9ZS5vcHRpb25zLmxlbmd0aDtvPHM7bysrKXtjb25zdCBzPWUub3B0aW9uc1tvXSxpPWdldFZhbHVlKHMpO2lmKG4paWYocil7Y29uc3QgZT10eXBlb2YgaTtzLnNlbGVjdGVkPSJzdHJpbmciPT09ZXx8Im51bWJlciI9PT1lP3Quc29tZShlPT5TdHJpbmcoZSk9PT1TdHJpbmcoaSkpOlEodCxpKT4tMX1lbHNlIHMuc2VsZWN0ZWQ9dC5oYXMoaSk7ZWxzZSBpZihxKGdldFZhbHVlKHMpLHQpKXJldHVybiB2b2lkKGUuc2VsZWN0ZWRJbmRleCE9PW8mJihlLnNlbGVjdGVkSW5kZXg9bykpfW58fC0xPT09ZS5zZWxlY3RlZEluZGV4fHwoZS5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gZ2V0VmFsdWUoZSl7cmV0dXJuIl92YWx1ZSJpbiBlP2UuX3ZhbHVlOmUudmFsdWV9ZnVuY3Rpb24gZ2V0Q2hlY2tib3hWYWx1ZShlLHQpe2NvbnN0IG49dD8iX3RydWVWYWx1ZSI6Il9mYWxzZVZhbHVlIjtyZXR1cm4gbiBpbiBlP2Vbbl06dH1jb25zdCB1cj17Y3JlYXRlZChlLHQsbil7Y2FsbE1vZGVsSG9vayhlLHQsbixudWxsLCJjcmVhdGVkIil9LG1vdW50ZWQoZSx0LG4pe2NhbGxNb2RlbEhvb2soZSx0LG4sbnVsbCwibW91bnRlZCIpfSxiZWZvcmVVcGRhdGUoZSx0LG4scil7Y2FsbE1vZGVsSG9vayhlLHQsbixyLCJiZWZvcmVVcGRhdGUiKX0sdXBkYXRlZChlLHQsbixyKXtjYWxsTW9kZWxIb29rKGUsdCxuLHIsInVwZGF0ZWQiKX19O2Z1bmN0aW9uIHJlc29sdmVEeW5hbWljTW9kZWwoZSx0KXtzd2l0Y2goZSl7Y2FzZSJTRUxFQ1QiOnJldHVybiBjcjtjYXNlIlRFWFRBUkVBIjpyZXR1cm4gaXI7ZGVmYXVsdDpzd2l0Y2godCl7Y2FzZSJjaGVja2JveCI6cmV0dXJuIGFyO2Nhc2UicmFkaW8iOnJldHVybiBscjtkZWZhdWx0OnJldHVybiBpcn19fWZ1bmN0aW9uIGNhbGxNb2RlbEhvb2soZSx0LG4scixvKXtjb25zdCBzPXJlc29sdmVEeW5hbWljTW9kZWwoZS50YWdOYW1lLG4ucHJvcHMmJm4ucHJvcHMudHlwZSlbb107cyYmcyhlLHQsbixyKX1jb25zdCBwcj1bImN0cmwiLCJzaGlmdCIsImFsdCIsIm1ldGEiXSxkcj17c3RvcDplPT5lLnN0b3BQcm9wYWdhdGlvbigpLHByZXZlbnQ6ZT0+ZS5wcmV2ZW50RGVmYXVsdCgpLHNlbGY6ZT0+ZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQsY3RybDplPT4hZS5jdHJsS2V5LHNoaWZ0OmU9PiFlLnNoaWZ0S2V5LGFsdDplPT4hZS5hbHRLZXksbWV0YTplPT4hZS5tZXRhS2V5LGxlZnQ6ZT0+ImJ1dHRvbiJpbiBlJiYwIT09ZS5idXR0b24sbWlkZGxlOmU9PiJidXR0b24iaW4gZSYmMSE9PWUuYnV0dG9uLHJpZ2h0OmU9PiJidXR0b24iaW4gZSYmMiE9PWUuYnV0dG9uLGV4YWN0OihlLHQpPT5wci5zb21lKG49PmVbYCR7bn1LZXlgXSYmIXQuaW5jbHVkZXMobikpfSxmcj17ZXNjOiJlc2NhcGUiLHNwYWNlOiIgIix1cDoiYXJyb3ctdXAiLGxlZnQ6ImFycm93LWxlZnQiLHJpZ2h0OiJhcnJvdy1yaWdodCIsZG93bjoiYXJyb3ctZG93biIsZGVsZXRlOiJiYWNrc3BhY2UifSxocj13KHtwYXRjaFByb3A6cGF0Y2hQcm9wfSwkbik7bGV0IGdyLG1yPSExO2Z1bmN0aW9uIGVuc3VyZVJlbmRlcmVyKCl7cmV0dXJuIGdyfHwoZ3I9Y3JlYXRlUmVuZGVyZXIoaHIpKX1mdW5jdGlvbiBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpe3JldHVybiBncj1tcj9ncjpjcmVhdGVIeWRyYXRpb25SZW5kZXJlcihociksbXI9ITAsZ3J9Y29uc3QgcmVuZGVyPSguLi5lKT0+e2Vuc3VyZVJlbmRlcmVyKCkucmVuZGVyKC4uLmUpfSxjcmVhdGVBcHA9KC4uLmUpPT57Y29uc3QgdD1lbnN1cmVSZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1lPT57Y29uc3Qgcj1ub3JtYWxpemVDb250YWluZXIoZSk7aWYoIXIpcmV0dXJuO2NvbnN0IG89dC5fY29tcG9uZW50O2Yobyl8fG8ucmVuZGVyfHxvLnRlbXBsYXRlfHwoby50ZW1wbGF0ZT1yLmlubmVySFRNTCksMT09PXIubm9kZVR5cGUmJihyLnRleHRDb250ZW50PSIiKTtjb25zdCBzPW4ociwhMSxyZXNvbHZlUm9vdE5hbWVzcGFjZShyKSk7cmV0dXJuIHIgaW5zdGFuY2VvZiBFbGVtZW50JiYoci5yZW1vdmVBdHRyaWJ1dGUoInYtY2xvYWsiKSxyLnNldEF0dHJpYnV0ZSgiZGF0YS12LWFwcCIsIiIpKSxzfSx0fSxjcmVhdGVTU1JBcHA9KC4uLmUpPT57Y29uc3QgdD1lbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1lPT57Y29uc3QgdD1ub3JtYWxpemVDb250YWluZXIoZSk7aWYodClyZXR1cm4gbih0LCEwLHJlc29sdmVSb290TmFtZXNwYWNlKHQpKX0sdH07ZnVuY3Rpb24gcmVzb2x2ZVJvb3ROYW1lc3BhY2UoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50PyJzdmciOiJmdW5jdGlvbiI9PXR5cGVvZiBNYXRoTUxFbGVtZW50JiZlIGluc3RhbmNlb2YgTWF0aE1MRWxlbWVudD8ibWF0aG1sIjp2b2lkIDB9ZnVuY3Rpb24gbm9ybWFsaXplQ29udGFpbmVyKGUpe2lmKCQoZSkpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpfXJldHVybiBlfWxldCB5cj0hMTtjb25zdCBpbml0RGlyZWN0aXZlc0ZvclNTUj0oKT0+e3lyfHwoeXI9ITAsaXIuZ2V0U1NSUHJvcHM9KHt2YWx1ZTplfSk9Pih7dmFsdWU6ZX0pLGxyLmdldFNTUlByb3BzPSh7dmFsdWU6ZX0sdCk9PntpZih0LnByb3BzJiZxKHQucHJvcHMudmFsdWUsZSkpcmV0dXJue2NoZWNrZWQ6ITB9fSxhci5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9LHQpPT57aWYoeShlKSl7aWYodC5wcm9wcyYmUShlLHQucHJvcHMudmFsdWUpPi0xKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKHgoZSkpe2lmKHQucHJvcHMmJmUuaGFzKHQucHJvcHMudmFsdWUpKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKGUpcmV0dXJue2NoZWNrZWQ6ITB9fSx1ci5nZXRTU1JQcm9wcz0oZSx0KT0+e2lmKCJzdHJpbmciIT10eXBlb2YgdC50eXBlKXJldHVybjtjb25zdCBuPXJlc29sdmVEeW5hbWljTW9kZWwodC50eXBlLnRvVXBwZXJDYXNlKCksdC5wcm9wcyYmdC5wcm9wcy50eXBlKTtyZXR1cm4gbi5nZXRTU1JQcm9wcz9uLmdldFNTUlByb3BzKGUsdCk6dm9pZCAwfSxGbi5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9KT0+e2lmKCFlKXJldHVybntzdHlsZTp7ZGlzcGxheToibm9uZSJ9fX0pfSx2cj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsQmFzZVRyYW5zaXRpb246RXQsQmFzZVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnM6eHQsQ29tbWVudDp1bixEZXByZWNhdGlvblR5cGVzOm51bGwsRWZmZWN0U2NvcGU6RWZmZWN0U2NvcGUsRXJyb3JDb2Rlczp7U0VUVVBfRlVOQ1RJT046MCwwOiJTRVRVUF9GVU5DVElPTiIsUkVOREVSX0ZVTkNUSU9OOjEsMToiUkVOREVSX0ZVTkNUSU9OIixOQVRJVkVfRVZFTlRfSEFORExFUjo1LDU6Ik5BVElWRV9FVkVOVF9IQU5ETEVSIixDT01QT05FTlRfRVZFTlRfSEFORExFUjo2LDY6IkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSIixWTk9ERV9IT09LOjcsNzoiVk5PREVfSE9PSyIsRElSRUNUSVZFX0hPT0s6OCw4OiJESVJFQ1RJVkVfSE9PSyIsVFJBTlNJVElPTl9IT09LOjksOToiVFJBTlNJVElPTl9IT09LIixBUFBfRVJST1JfSEFORExFUjoxMCwxMDoiQVBQX0VSUk9SX0hBTkRMRVIiLEFQUF9XQVJOX0hBTkRMRVI6MTEsMTE6IkFQUF9XQVJOX0hBTkRMRVIiLEZVTkNUSU9OX1JFRjoxMiwxMjoiRlVOQ1RJT05fUkVGIixBU1lOQ19DT01QT05FTlRfTE9BREVSOjEzLDEzOiJBU1lOQ19DT01QT05FTlRfTE9BREVSIixTQ0hFRFVMRVI6MTQsMTQ6IlNDSEVEVUxFUiIsQ09NUE9ORU5UX1VQREFURToxNSwxNToiQ09NUE9ORU5UX1VQREFURSIsQVBQX1VOTU9VTlRfQ0xFQU5VUDoxNiwxNjoiQVBQX1VOTU9VTlRfQ0xFQU5VUCJ9LEVycm9yVHlwZVN0cmluZ3M6Um4sRnJhZ21lbnQ6bG4sS2VlcEFsaXZlOlZ0LFJlYWN0aXZlRWZmZWN0OlJlYWN0aXZlRWZmZWN0LFN0YXRpYzpwbixTdXNwZW5zZTphbixUZWxlcG9ydDp3dCxUZXh0OmNuLFRyYWNrT3BUeXBlczp7R0VUOiJnZXQiLEhBUzoiaGFzIixJVEVSQVRFOiJpdGVyYXRlIn0sVHJhbnNpdGlvbjpqbixUcmFuc2l0aW9uR3JvdXA6b3IsVHJpZ2dlck9wVHlwZXM6e1NFVDoic2V0IixBREQ6ImFkZCIsREVMRVRFOiJkZWxldGUiLENMRUFSOiJjbGVhciJ9LFZ1ZUVsZW1lbnQ6VnVlRWxlbWVudCxhc3NlcnROdW1iZXI6ZnVuY3Rpb24oZSx0KXt9LGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nOmNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nLGNhbGxXaXRoRXJyb3JIYW5kbGluZzpjYWxsV2l0aEVycm9ySGFuZGxpbmcsY2FtZWxpemU6QixjYXBpdGFsaXplOkcsY2xvbmVWTm9kZTpjbG9uZVZOb2RlLGNvbXBhdFV0aWxzOm51bGwsY29tcHV0ZWQ6Y29tcHV0ZWQsY3JlYXRlQXBwOmNyZWF0ZUFwcCxjcmVhdGVCbG9jazpjcmVhdGVCbG9jayxjcmVhdGVDb21tZW50Vk5vZGU6ZnVuY3Rpb24oZT0iIix0PSExKXtyZXR1cm4gdD8ob3BlbkJsb2NrKCksY3JlYXRlQmxvY2sodW4sbnVsbCxlKSk6Y3JlYXRlVk5vZGUodW4sbnVsbCxlKX0sY3JlYXRlRWxlbWVudEJsb2NrOmZ1bmN0aW9uKGUsdCxuLHIsbyxzKXtyZXR1cm4gc2V0dXBCbG9jayhjcmVhdGVCYXNlVk5vZGUoZSx0LG4scixvLHMsITApKX0sY3JlYXRlRWxlbWVudFZOb2RlOmNyZWF0ZUJhc2VWTm9kZSxjcmVhdGVIeWRyYXRpb25SZW5kZXJlcjpjcmVhdGVIeWRyYXRpb25SZW5kZXJlcixjcmVhdGVQcm9wc1Jlc3RQcm94eTpmdW5jdGlvbihlLHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSl0LmluY2x1ZGVzKHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZVtyXX0pO3JldHVybiBufSxjcmVhdGVSZW5kZXJlcjpjcmVhdGVSZW5kZXJlcixjcmVhdGVTU1JBcHA6Y3JlYXRlU1NSQXBwLGNyZWF0ZVNsb3RzOmZ1bmN0aW9uKGUsdCl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9dFtuXTtpZih5KHIpKWZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWVbclt0XS5uYW1lXT1yW3RdLmZuO2Vsc2UgciYmKGVbci5uYW1lXT1yLmtleT8oLi4uZSk9Pntjb25zdCB0PXIuZm4oLi4uZSk7cmV0dXJuIHQmJih0LmtleT1yLmtleSksdH06ci5mbil9cmV0dXJuIGV9LGNyZWF0ZVN0YXRpY1ZOb2RlOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1jcmVhdGVWTm9kZShwbixudWxsLGUpO3JldHVybiBuLnN0YXRpY0NvdW50PXQsbn0sY3JlYXRlVGV4dFZOb2RlOmNyZWF0ZVRleHRWTm9kZSxjcmVhdGVWTm9kZTpjcmVhdGVWTm9kZSxjdXN0b21SZWY6Y3VzdG9tUmVmLGRlZmluZUFzeW5jQ29tcG9uZW50OmZ1bmN0aW9uKGUpe2YoZSkmJihlPXtsb2FkZXI6ZX0pO2NvbnN0e2xvYWRlcjp0LGxvYWRpbmdDb21wb25lbnQ6bixlcnJvckNvbXBvbmVudDpyLGRlbGF5Om89MjAwLGh5ZHJhdGU6cyx0aW1lb3V0Omksc3VzcGVuc2libGU6YT0hMCxvbkVycm9yOmx9PWU7bGV0IGMsdT1udWxsLHA9MDtjb25zdCBsb2FkPSgpPT57bGV0IGU7cmV0dXJuIHV8fChlPXU9dCgpLmNhdGNoKGU9PntpZihlPWUgaW5zdGFuY2VvZiBFcnJvcj9lOm5ldyBFcnJvcihTdHJpbmcoZSkpLGwpcmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57bChlLCgpPT50KChwKyssdT1udWxsLGxvYWQoKSkpLCgpPT5uKGUpLHArMSl9KTt0aHJvdyBlfSkudGhlbih0PT5lIT09dSYmdT91Oih0JiYodC5fX2VzTW9kdWxlfHwiTW9kdWxlIj09PXRbU3ltYm9sLnRvU3RyaW5nVGFnXSkmJih0PXQuZGVmYXVsdCksYz10LHQpKSl9O3JldHVybiBkZWZpbmVDb21wb25lbnQoe25hbWU6IkFzeW5jQ29tcG9uZW50V3JhcHBlciIsX19hc3luY0xvYWRlcjpsb2FkLF9fYXN5bmNIeWRyYXRlKGUsdCxuKXtsZXQgcj0hMTsodC5idXx8KHQuYnU9W10pKS5wdXNoKCgpPT5yPSEwKTtjb25zdCBwZXJmb3JtSHlkcmF0ZT0oKT0+e3J8fG4oKX0sbz1zPygpPT57Y29uc3Qgbj1zKHBlcmZvcm1IeWRyYXRlLHQ9PmZ1bmN0aW9uKGUsdCl7aWYoaXNDb21tZW50JDEoZSkmJiJbIj09PWUuZGF0YSl7bGV0IG49MSxyPWUubmV4dFNpYmxpbmc7Zm9yKDtyOyl7aWYoMT09PXIubm9kZVR5cGUpe2lmKCExPT09dChyKSlicmVha31lbHNlIGlmKGlzQ29tbWVudCQxKHIpKWlmKCJdIj09PXIuZGF0YSl7aWYoMD09PS0tbilicmVha31lbHNlIlsiPT09ci5kYXRhJiZuKys7cj1yLm5leHRTaWJsaW5nfX1lbHNlIHQoZSl9KGUsdCkpO24mJih0LmJ1bXx8KHQuYnVtPVtdKSkucHVzaChuKX06cGVyZm9ybUh5ZHJhdGU7Yz9vKCk6bG9hZCgpLnRoZW4oKCk9PiF0LmlzVW5tb3VudGVkJiZvKCkpfSxnZXQgX19hc3luY1Jlc29sdmVkKCl7cmV0dXJuIGN9LHNldHVwKCl7Y29uc3QgZT15bjtpZihtYXJrQXN5bmNCb3VuZGFyeShlKSxjKXJldHVybigpPT5jcmVhdGVJbm5lckNvbXAoYyxlKTtjb25zdCBvbkVycm9yPXQ9Pnt1PW51bGwsaGFuZGxlRXJyb3IodCxlLDEzLCFyKX07aWYoYSYmZS5zdXNwZW5zZXx8Q24pcmV0dXJuIGxvYWQoKS50aGVuKHQ9PigpPT5jcmVhdGVJbm5lckNvbXAodCxlKSkuY2F0Y2goZT0+KG9uRXJyb3IoZSksKCk9PnI/Y3JlYXRlVk5vZGUocix7ZXJyb3I6ZX0pOm51bGwpKTtjb25zdCB0PXJlZighMSkscz1yZWYoKSxsPXJlZighIW8pO3JldHVybiBvJiZzZXRUaW1lb3V0KCgpPT57bC52YWx1ZT0hMX0sbyksbnVsbCE9aSYmc2V0VGltZW91dCgoKT0+e2lmKCF0LnZhbHVlJiYhcy52YWx1ZSl7Y29uc3QgZT1uZXcgRXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHtpfW1zLmApO29uRXJyb3IoZSkscy52YWx1ZT1lfX0saSksbG9hZCgpLnRoZW4oKCk9Pnt0LnZhbHVlPSEwLGUucGFyZW50JiZpc0tlZXBBbGl2ZShlLnBhcmVudC52bm9kZSkmJmUucGFyZW50LnVwZGF0ZSgpfSkuY2F0Y2goZT0+e29uRXJyb3IoZSkscy52YWx1ZT1lfSksKCk9PnQudmFsdWUmJmM/Y3JlYXRlSW5uZXJDb21wKGMsZSk6cy52YWx1ZSYmcj9jcmVhdGVWTm9kZShyLHtlcnJvcjpzLnZhbHVlfSk6biYmIWwudmFsdWU/Y3JlYXRlSW5uZXJDb21wKG4sZSk6dm9pZCAwfX0pfSxkZWZpbmVDb21wb25lbnQ6ZGVmaW5lQ29tcG9uZW50LGRlZmluZUN1c3RvbUVsZW1lbnQ6ZGVmaW5lQ3VzdG9tRWxlbWVudCxkZWZpbmVFbWl0czpmdW5jdGlvbigpe3JldHVybiBudWxsfSxkZWZpbmVFeHBvc2U6ZnVuY3Rpb24oZSl7fSxkZWZpbmVNb2RlbDpmdW5jdGlvbigpe30sZGVmaW5lT3B0aW9uczpmdW5jdGlvbihlKXt9LGRlZmluZVByb3BzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGRlZmluZVNTUkN1c3RvbUVsZW1lbnQ6KGUsdCk9PmRlZmluZUN1c3RvbUVsZW1lbnQoZSx0LGNyZWF0ZVNTUkFwcCksZGVmaW5lU2xvdHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZGV2dG9vbHM6QW4sZWZmZWN0OmZ1bmN0aW9uKGUsdCl7ZS5lZmZlY3QgaW5zdGFuY2VvZiBSZWFjdGl2ZUVmZmVjdCYmKGU9ZS5lZmZlY3QuZm4pO2NvbnN0IG49bmV3IFJlYWN0aXZlRWZmZWN0KGUpO3QmJncobix0KTt0cnl7bi5ydW4oKX1jYXRjaChlKXt0aHJvdyBuLnN0b3AoKSxlfWNvbnN0IHI9bi5ydW4uYmluZChuKTtyZXR1cm4gci5lZmZlY3Q9bixyfSxlZmZlY3RTY29wZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEVmZmVjdFNjb3BlKGUpfSxnZXRDdXJyZW50SW5zdGFuY2U6Z2V0Q3VycmVudEluc3RhbmNlLGdldEN1cnJlbnRTY29wZTpnZXRDdXJyZW50U2NvcGUsZ2V0Q3VycmVudFdhdGNoZXI6ZnVuY3Rpb24oKXtyZXR1cm4gYXR9LGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbjpnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4sZ3VhcmRSZWFjdGl2ZVByb3BzOmd1YXJkUmVhY3RpdmVQcm9wcyxoOmgsaGFuZGxlRXJyb3I6aGFuZGxlRXJyb3IsaGFzSW5qZWN0aW9uQ29udGV4dDpoYXNJbmplY3Rpb25Db250ZXh0LGh5ZHJhdGU6KC4uLmUpPT57ZW5zdXJlSHlkcmF0aW9uUmVuZGVyZXIoKS5oeWRyYXRlKC4uLmUpfSxoeWRyYXRlT25JZGxlOihlPTFlNCk9PnQ9Pntjb25zdCBuPUh0KHQse3RpbWVvdXQ6ZX0pO3JldHVybigpPT5NdChuKX0saHlkcmF0ZU9uSW50ZXJhY3Rpb246KGU9W10pPT4odCxuKT0+eyQoZSkmJihlPVtlXSk7bGV0IHI9ITE7Y29uc3QgZG9IeWRyYXRlPWU9PntyfHwocj0hMCx0ZWFyZG93bigpLHQoKSxlLnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBlLmNvbnN0cnVjdG9yKGUudHlwZSxlKSkpfSx0ZWFyZG93bj0oKT0+e24odD0+e2Zvcihjb25zdCBuIG9mIGUpdC5yZW1vdmVFdmVudExpc3RlbmVyKG4sZG9IeWRyYXRlKX0pfTtyZXR1cm4gbih0PT57Zm9yKGNvbnN0IG4gb2YgZSl0LmFkZEV2ZW50TGlzdGVuZXIobixkb0h5ZHJhdGUse29uY2U6ITB9KX0pLHRlYXJkb3dufSxoeWRyYXRlT25NZWRpYVF1ZXJ5OmU9PnQ9PntpZihlKXtjb25zdCBuPW1hdGNoTWVkaWEoZSk7aWYoIW4ubWF0Y2hlcylyZXR1cm4gbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHQse29uY2U6ITB9KSwoKT0+bi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHQpO3QoKX19LGh5ZHJhdGVPblZpc2libGU6ZT0+KHQsbik9Pntjb25zdCByPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IG4gb2YgZSlpZihuLmlzSW50ZXJzZWN0aW5nKXtyLmRpc2Nvbm5lY3QoKSx0KCk7YnJlYWt9fSxlKTtyZXR1cm4gbihlPT57aWYoZSBpbnN0YW5jZW9mIEVsZW1lbnQpcmV0dXJuIGZ1bmN0aW9uKGUpe2NvbnN0e3RvcDp0LGxlZnQ6bixib3R0b206cixyaWdodDpvfT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHtpbm5lckhlaWdodDpzLGlubmVyV2lkdGg6aX09d2luZG93O3JldHVybih0PjAmJnQ8c3x8cj4wJiZyPHMpJiYobj4wJiZuPGl8fG8+MCYmbzxpKX0oZSk/KHQoKSxyLmRpc2Nvbm5lY3QoKSwhMSk6dm9pZCByLm9ic2VydmUoZSl9KSwoKT0+ci5kaXNjb25uZWN0KCl9LGluaXRDdXN0b21Gb3JtYXR0ZXI6ZnVuY3Rpb24oKXt9LGluaXREaXJlY3RpdmVzRm9yU1NSOmluaXREaXJlY3RpdmVzRm9yU1NSLGluamVjdDppbmplY3QsaXNNZW1vU2FtZTppc01lbW9TYW1lLGlzUHJveHk6aXNQcm94eSxpc1JlYWN0aXZlOmlzUmVhY3RpdmUsaXNSZWFkb25seTppc1JlYWRvbmx5LGlzUmVmOmlzUmVmLGlzUnVudGltZU9ubHk6KCk9PiFibixpc1NoYWxsb3c6aXNTaGFsbG93LGlzVk5vZGU6aXNWTm9kZSQyLG1hcmtSYXc6bWFya1JhdyxtZXJnZURlZmF1bHRzOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1ub3JtYWxpemVQcm9wc09yRW1pdHMoZSk7Zm9yKGNvbnN0IGUgaW4gdCl7aWYoZS5zdGFydHNXaXRoKCJfX3NraXAiKSljb250aW51ZTtsZXQgcj1uW2VdO3I/eShyKXx8ZihyKT9yPW5bZV09e3R5cGU6cixkZWZhdWx0OnRbZV19OnIuZGVmYXVsdD10W2VdOm51bGw9PT1yJiYocj1uW2VdPXtkZWZhdWx0OnRbZV19KSxyJiZ0W2BfX3NraXBfJHtlfWBdJiYoci5za2lwRmFjdG9yeT0hMCl9cmV0dXJuIG59LG1lcmdlTW9kZWxzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnQ/eShlKSYmeSh0KT9lLmNvbmNhdCh0KTp3KHt9LG5vcm1hbGl6ZVByb3BzT3JFbWl0cyhlKSxub3JtYWxpemVQcm9wc09yRW1pdHModCkpOmV8fHR9LG1lcmdlUHJvcHM6bWVyZ2VQcm9wcyxuZXh0VGljazpuZXh0VGljayxub2RlT3BzOiRuLG5vcm1hbGl6ZUNsYXNzOk8sbm9ybWFsaXplUHJvcHM6dGUsbm9ybWFsaXplU3R5bGU6TixvbkFjdGl2YXRlZDpvbkFjdGl2YXRlZCxvbkJlZm9yZU1vdW50Omp0LG9uQmVmb3JlVW5tb3VudDpGdCxvbkJlZm9yZVVwZGF0ZTpEdCxvbkRlYWN0aXZhdGVkOm9uRGVhY3RpdmF0ZWQsb25FcnJvckNhcHR1cmVkOm9uRXJyb3JDYXB0dXJlZCxvbk1vdW50ZWQ6SXQsb25SZW5kZXJUcmFja2VkOnp0LG9uUmVuZGVyVHJpZ2dlcmVkOld0LG9uU2NvcGVEaXNwb3NlOmZ1bmN0aW9uKGUsdD0hMSl7RWUmJkVlLmNsZWFudXBzLnB1c2goZSl9LG9uU2VydmVyUHJlZmV0Y2g6VXQsb25Vbm1vdW50ZWQ6QnQsb25VcGRhdGVkOkx0LG9uV2F0Y2hlckNsZWFudXA6b25XYXRjaGVyQ2xlYW51cCxvcGVuQmxvY2s6b3BlbkJsb2NrLHBhdGNoUHJvcDpwYXRjaFByb3AscG9wU2NvcGVJZDpmdW5jdGlvbigpe2J0PW51bGx9LHByb3ZpZGU6cHJvdmlkZSxwcm94eVJlZnM6cHJveHlSZWZzLHB1c2hTY29wZUlkOmZ1bmN0aW9uKGUpe2J0PWV9LHF1ZXVlUG9zdEZsdXNoQ2I6cXVldWVQb3N0Rmx1c2hDYixyZWFjdGl2ZTpyZWFjdGl2ZSxyZWFkb25seTpyZWFkb25seSxyZWY6cmVmLHJlZ2lzdGVyUnVudGltZUNvbXBpbGVyOmZ1bmN0aW9uKGUpe2JuPWUsa249ZT0+e2UucmVuZGVyLl9yYyYmKGUud2l0aFByb3h5PW5ldyBQcm94eShlLmN0eCxadCkpfX0scmVuZGVyOnJlbmRlcixyZW5kZXJMaXN0OmZ1bmN0aW9uKGUsdCxuLHIpe2xldCBvO2NvbnN0IHM9biYmbltyXSxpPXkoZSk7aWYoaXx8JChlKSl7bGV0IG49ITEscj0hMTtpJiZpc1JlYWN0aXZlKGUpJiYobj0haXNTaGFsbG93KGUpLHI9aXNSZWFkb25seShlKSxlPXNoYWxsb3dSZWFkQXJyYXkoZSkpLG89bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspb1tpXT10KG4/cj90b1JlYWRvbmx5KHRvUmVhY3RpdmUoZVtpXSkpOnRvUmVhY3RpdmUoZVtpXSk6ZVtpXSxpLHZvaWQgMCxzJiZzW2ldKX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSl7bz1uZXcgQXJyYXkoZSk7Zm9yKGxldCBuPTA7bjxlO24rKylvW25dPXQobisxLG4sdm9pZCAwLHMmJnNbbl0pfWVsc2UgaWYoYihlKSlpZihlW1N5bWJvbC5pdGVyYXRvcl0pbz1BcnJheS5mcm9tKGUsKGUsbik9PnQoZSxuLHZvaWQgMCxzJiZzW25dKSk7ZWxzZXtjb25zdCBuPU9iamVjdC5rZXlzKGUpO289bmV3IEFycmF5KG4ubGVuZ3RoKTtmb3IobGV0IHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9bltyXTtvW3JdPXQoZVtpXSxpLHIscyYmc1tyXSl9fWVsc2Ugbz1bXTtyZXR1cm4gbiYmKG5bcl09byksb30scmVuZGVyU2xvdDpmdW5jdGlvbihlLHQsbj17fSxyLG8pe2lmKF90LmNlfHxfdC5wYXJlbnQmJmlzQXN5bmNXcmFwcGVyKF90LnBhcmVudCkmJl90LnBhcmVudC5jZSl7Y29uc3QgZT1PYmplY3Qua2V5cyhuKS5sZW5ndGg+MDtyZXR1cm4iZGVmYXVsdCIhPT10JiYobi5uYW1lPXQpLG9wZW5CbG9jaygpLGNyZWF0ZUJsb2NrKGxuLG51bGwsW2NyZWF0ZVZOb2RlKCJzbG90IixuLHImJnIoKSldLGU/LTI6NjQpfWxldCBzPWVbdF07cyYmcy5fYyYmKHMuX2Q9ITEpLG9wZW5CbG9jaygpO2NvbnN0IGk9cyYmZW5zdXJlVmFsaWRWTm9kZSQxKHMobikpLGE9bi5rZXl8fGkmJmkua2V5LGw9Y3JlYXRlQmxvY2sobG4se2tleTooYSYmIWcoYSk/YTpgXyR7dH1gKSsoIWkmJnI/Il9mYiI6IiIpfSxpfHwocj9yKCk6W10pLGkmJjE9PT1lLl8/NjQ6LTIpO3JldHVybiFvJiZsLnNjb3BlSWQmJihsLnNsb3RTY29wZUlkcz1bbC5zY29wZUlkKyItcyJdKSxzJiZzLl9jJiYocy5fZD0hMCksbH0scmVzb2x2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe3JldHVybiByZXNvbHZlQXNzZXQocXQsZSwhMCx0KXx8ZX0scmVzb2x2ZURpcmVjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4gcmVzb2x2ZUFzc2V0KCJkaXJlY3RpdmVzIixlKX0scmVzb2x2ZUR5bmFtaWNDb21wb25lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQoZSk/cmVzb2x2ZUFzc2V0KHF0LGUsITEpfHxlOmV8fEt0fSxyZXNvbHZlRmlsdGVyOm51bGwscmVzb2x2ZVRyYW5zaXRpb25Ib29rczpyZXNvbHZlVHJhbnNpdGlvbkhvb2tzLHNldEJsb2NrVHJhY2tpbmc6c2V0QmxvY2tUcmFja2luZyxzZXREZXZ0b29sc0hvb2s6c2V0RGV2dG9vbHNIb29rLHNldFRyYW5zaXRpb25Ib29rczpzZXRUcmFuc2l0aW9uSG9va3Msc2hhbGxvd1JlYWN0aXZlOnNoYWxsb3dSZWFjdGl2ZSxzaGFsbG93UmVhZG9ubHk6c2hhbGxvd1JlYWRvbmx5LHNoYWxsb3dSZWY6c2hhbGxvd1JlZixzc3JDb250ZXh0S2V5Omt0LHNzclV0aWxzOnhuLHN0b3A6ZnVuY3Rpb24oZSl7ZS5lZmZlY3Quc3RvcCgpfSx0b0Rpc3BsYXlTdHJpbmc6bmUsdG9IYW5kbGVyS2V5OlcsdG9IYW5kbGVyczpmdW5jdGlvbihlLHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSluW3QmJi9bQS1aXS8udGVzdChyKT9gb246JHtyfWA6VyhyKV09ZVtyXTtyZXR1cm4gbn0sdG9SYXc6dG9SYXcsdG9SZWY6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBpc1JlZihlKT9lOmYoZSk/bmV3IEdldHRlclJlZkltcGwoZSk6YihlKSYmYXJndW1lbnRzLmxlbmd0aD4xP3Byb3BlcnR5VG9SZWYoZSx0LG4pOnJlZihlKX0sdG9SZWZzOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9eShlKT9uZXcgQXJyYXkoZS5sZW5ndGgpOnt9O2Zvcihjb25zdCBuIGluIGUpdFtuXT1wcm9wZXJ0eVRvUmVmKGUsbik7cmV0dXJuIHR9LHRvVmFsdWU6dG9WYWx1ZSx0cmFuc2Zvcm1WTm9kZUFyZ3M6ZnVuY3Rpb24oZSl7fSx0cmlnZ2VyUmVmOmZ1bmN0aW9uKGUpe2UuZGVwJiZlLmRlcC50cmlnZ2VyKCl9LHVucmVmOnVucmVmLHVzZUF0dHJzOmZ1bmN0aW9uKCl7cmV0dXJuIGdldENvbnRleHQoKS5hdHRyc30sdXNlQ3NzTW9kdWxlOmZ1bmN0aW9uKGU9IiRzdHlsZSIpe3tjb25zdCB0PWdldEN1cnJlbnRJbnN0YW5jZSgpO2lmKCF0KXJldHVybiBtO2NvbnN0IG49dC50eXBlLl9fY3NzTW9kdWxlcztpZighbilyZXR1cm4gbTtjb25zdCByPW5bZV07cmV0dXJuIHJ8fG19fSx1c2VDc3NWYXJzOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudEluc3RhbmNlKCk7aWYoIXQpcmV0dXJuO2NvbnN0IG49dC51dD0obj1lKHQucHJveHkpKT0+e0FycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtdi1vd25lcj0iJHt0LnVpZH0iXWApKS5mb3JFYWNoKGU9PnNldFZhcnNPbk5vZGUoZSxuKSl9LHNldFZhcnM9KCk9Pntjb25zdCByPWUodC5wcm94eSk7dC5jZT9zZXRWYXJzT25Ob2RlKHQuY2Uscik6c2V0VmFyc09uVk5vZGUodC5zdWJUcmVlLHIpLG4ocil9O0R0KCgpPT57cXVldWVQb3N0Rmx1c2hDYihzZXRWYXJzKX0pLEl0KCgpPT57d2F0Y2goc2V0VmFycyxQLHtmbHVzaDoicG9zdCJ9KTtjb25zdCBlPW5ldyBNdXRhdGlvbk9ic2VydmVyKHNldFZhcnMpO2Uub2JzZXJ2ZSh0LnN1YlRyZWUuZWwucGFyZW50Tm9kZSx7Y2hpbGRMaXN0OiEwfSksQnQoKCk9PmUuZGlzY29ubmVjdCgpKX0pfSx1c2VIb3N0OnVzZUhvc3QsdXNlSWQ6ZnVuY3Rpb24oKXtjb25zdCBlPWdldEN1cnJlbnRJbnN0YW5jZSgpO3JldHVybiBlPyhlLmFwcENvbnRleHQuY29uZmlnLmlkUHJlZml4fHwidiIpKyItIitlLmlkc1swXStlLmlkc1sxXSsrOiIifSx1c2VNb2RlbDpmdW5jdGlvbihlLHQsbj1tKXtjb25zdCByPWdldEN1cnJlbnRJbnN0YW5jZSgpLG89Qih0KSxzPXoodCksaT1nZXRNb2RlbE1vZGlmaWVycyhlLG8pLGE9Y3VzdG9tUmVmKChpLGEpPT57bGV0IGwsYyx1PW07cmV0dXJuIHdhdGNoU3luY0VmZmVjdCgoKT0+e2NvbnN0IHQ9ZVtvXTtrKGwsdCkmJihsPXQsYSgpKX0pLHtnZXQ6KCk9PihpKCksbi5nZXQ/bi5nZXQobCk6bCksc2V0KGUpe2NvbnN0IGk9bi5zZXQ/bi5zZXQoZSk6ZTtpZighKGsoaSxsKXx8dSE9PW0mJmsoZSx1KSkpcmV0dXJuO2NvbnN0IHA9ci52bm9kZS5wcm9wcztwJiYodCBpbiBwfHxvIGluIHB8fHMgaW4gcCkmJihgb25VcGRhdGU6JHt0fWBpbiBwfHxgb25VcGRhdGU6JHtvfWBpbiBwfHxgb25VcGRhdGU6JHtzfWBpbiBwKXx8KGw9ZSxhKCkpLHIuZW1pdChgdXBkYXRlOiR7dH1gLGkpLGsoZSxpKSYmayhlLHUpJiYhayhpLGMpJiZhKCksdT1lLGM9aX19fSk7cmV0dXJuIGFbU3ltYm9sLml0ZXJhdG9yXT0oKT0+e2xldCBlPTA7cmV0dXJue25leHQ6KCk9PmU8Mj97dmFsdWU6ZSsrP2l8fG06YSxkb25lOiExfTp7ZG9uZTohMH19fSxhfSx1c2VTU1JDb250ZXh0OnVzZVNTUkNvbnRleHQsdXNlU2hhZG93Um9vdDpmdW5jdGlvbigpe2NvbnN0IGU9dXNlSG9zdCgpO3JldHVybiBlJiZlLnNoYWRvd1Jvb3R9LHVzZVNsb3RzOmZ1bmN0aW9uKCl7cmV0dXJuIGdldENvbnRleHQoKS5zbG90c30sdXNlVGVtcGxhdGVSZWY6ZnVuY3Rpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50SW5zdGFuY2UoKSxuPXNoYWxsb3dSZWYobnVsbCk7aWYodCl7Y29uc3Qgcj10LnJlZnM9PT1tP3QucmVmcz17fTp0LnJlZnM7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZSx7ZW51bWVyYWJsZTohMCxnZXQ6KCk9Pm4udmFsdWUsc2V0OmU9Pm4udmFsdWU9ZX0pfXJldHVybiBufSx1c2VUcmFuc2l0aW9uU3RhdGU6dXNlVHJhbnNpdGlvblN0YXRlLHZNb2RlbENoZWNrYm94OmFyLHZNb2RlbER5bmFtaWM6dXIsdk1vZGVsUmFkaW86bHIsdk1vZGVsU2VsZWN0OmNyLHZNb2RlbFRleHQ6aXIsdlNob3c6Rm4sdmVyc2lvbjp3bix3YXJuOlRuLHdhdGNoOndhdGNoLHdhdGNoRWZmZWN0OndhdGNoRWZmZWN0LHdhdGNoUG9zdEVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBkb1dhdGNoKGUsbnVsbCx7Zmx1c2g6InBvc3QifSl9LHdhdGNoU3luY0VmZmVjdDp3YXRjaFN5bmNFZmZlY3Qsd2l0aEFzeW5jQ29udGV4dDpmdW5jdGlvbihlKXtjb25zdCB0PWdldEN1cnJlbnRJbnN0YW5jZSgpLG49Q247bGV0IHI9ZSgpO3Vuc2V0Q3VycmVudEluc3RhbmNlKCksbiYmX24oITEpO2NvbnN0IHJlc3RvcmU9KCk9PntzZXRDdXJyZW50SW5zdGFuY2UodCksbiYmX24oITApfSxjbGVhbnVwPSgpPT57Z2V0Q3VycmVudEluc3RhbmNlKCkhPT10JiZ0LnNjb3BlLm9mZigpLHVuc2V0Q3VycmVudEluc3RhbmNlKCksbiYmX24oITEpfTtyZXR1cm4gVihyKSYmKHI9ci5jYXRjaChlPT57dGhyb3cgcmVzdG9yZSgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oY2xlYW51cCkpLGV9KSksW3IsKCk9PntyZXN0b3JlKCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihjbGVhbnVwKX1dfSx3aXRoQ3R4OndpdGhDdHgsd2l0aERlZmF1bHRzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGx9LHdpdGhEaXJlY3RpdmVzOmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09PV90KXJldHVybiBlO2NvbnN0IG49Z2V0Q29tcG9uZW50UHVibGljSW5zdGFuY2UoX3QpLHI9ZS5kaXJzfHwoZS5kaXJzPVtdKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0W28scyxpLGE9bV09dFtlXTtvJiYoZihvKSYmKG89e21vdW50ZWQ6byx1cGRhdGVkOm99KSxvLmRlZXAmJnRyYXZlcnNlKHMpLHIucHVzaCh7ZGlyOm8saW5zdGFuY2U6bix2YWx1ZTpzLG9sZFZhbHVlOnZvaWQgMCxhcmc6aSxtb2RpZmllcnM6YX0pKX1yZXR1cm4gZX0sd2l0aEtleXM6KGUsdCk9Pntjb25zdCBuPWUuX3dpdGhLZXlzfHwoZS5fd2l0aEtleXM9e30pLHI9dC5qb2luKCIuIik7cmV0dXJuIG5bcl18fChuW3JdPW49PntpZighKCJrZXkiaW4gbikpcmV0dXJuO2NvbnN0IHI9eihuLmtleSk7cmV0dXJuIHQuc29tZShlPT5lPT09cnx8ZnJbZV09PT1yKT9lKG4pOnZvaWQgMH0pfSx3aXRoTWVtbzpmdW5jdGlvbihlLHQsbixyKXtjb25zdCBvPW5bcl07aWYobyYmaXNNZW1vU2FtZShvLGUpKXJldHVybiBvO2NvbnN0IHM9dCgpO3JldHVybiBzLm1lbW89ZS5zbGljZSgpLHMuY2FjaGVJbmRleD1yLG5bcl09c30sd2l0aE1vZGlmaWVyczooZSx0KT0+e2lmKCFlKXJldHVybiBlO2NvbnN0IG49ZS5fd2l0aE1vZHN8fChlLl93aXRoTW9kcz17fSkscj10LmpvaW4oIi4iKTtyZXR1cm4gbltyXXx8KG5bcl09KG4sLi4ucik9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgcj1kclt0W2VdXTtpZihyJiZyKG4sdCkpcmV0dXJufXJldHVybiBlKG4sLi4ucil9KX0sd2l0aFNjb3BlSWQ6ZT0+d2l0aEN0eH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxWdWVSZXNvbHZlcj0oZSx0KT0+aXNSZWYodCk/dG9WYWx1ZSh0KTp0LF9yPSJ1c2VoZWFkIjtmdW5jdGlvbiBpbmplY3RIZWFkKCl7aWYoaGFzSW5qZWN0aW9uQ29udGV4dCgpKXtjb25zdCBlPWluamVjdChfcik7aWYoZSlyZXR1cm4gZX10aHJvdyBuZXcgRXJyb3IoInVzZUhlYWQoKSB3YXMgY2FsbGVkIHdpdGhvdXQgcHJvdmlkZSBjb250ZXh0LCBlbnN1cmUgeW91IGNhbGwgaXQgdGhyb3VnaCB0aGUgc2V0dXAoKSBmdW5jdGlvbi4iKX1mdW5jdGlvbiB1c2VIZWFkKGUsdD17fSl7Y29uc3Qgbj10LmhlYWR8fGluamVjdEhlYWQoKTtyZXR1cm4gbi5zc3I/bi5wdXNoKGV8fHt9LHQpOmZ1bmN0aW9uKGUsdCxuPXt9KXtjb25zdCByPXJlZighMSk7bGV0IG87d2F0Y2hFZmZlY3QoKCk9Pntjb25zdCBzPXIudmFsdWU/e306d2Fsa1Jlc29sdmVyKHQsVnVlUmVzb2x2ZXIpO28/by5wYXRjaChzKTpvPWUucHVzaChzLG4pfSk7Z2V0Q3VycmVudEluc3RhbmNlKCkmJihGdCgoKT0+e28uZGlzcG9zZSgpfSksb25EZWFjdGl2YXRlZCgoKT0+e3IudmFsdWU9ITB9KSxvbkFjdGl2YXRlZCgoKT0+e3IudmFsdWU9ITF9KSk7cmV0dXJuIG99KG4sZSx0KX1mdW5jdGlvbiBjcmVhdGVIZWFkKGU9e30pe2NvbnN0IHQ9ZnVuY3Rpb24oZT17fSl7Y29uc3QgdD1jcmVhdGVVbmhlYWQoey4uLmUsZG9jdW1lbnQ6ITEscHJvcFJlc29sdmVyczpbLi4uZS5wcm9wUmVzb2x2ZXJzfHxbXSwoZSx0KT0+ZSYmZS5zdGFydHNXaXRoKCJvbiIpJiYiZnVuY3Rpb24iPT10eXBlb2YgdD9gdGhpcy5kYXRhc2V0LiR7ZX1maXJlZCA9IHRydWVgOnRdLGluaXQ6W2UuZGlzYWJsZURlZmF1bHRzP3ZvaWQgMDp7aHRtbEF0dHJzOntsYW5nOiJlbiJ9LG1ldGE6W3tjaGFyc2V0OiJ1dGYtOCJ9LHtuYW1lOiJ2aWV3cG9ydCIsY29udGVudDoid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEifV19LC4uLmUuaW5pdHx8W11dfSk7cmV0dXJuIHQuX3NzclBheWxvYWQ9e30sdC51c2Uoe2tleToic2VydmVyIixob29rczp7InRhZ3M6cmVzb2x2ZSI6ZnVuY3Rpb24oZSl7Y29uc3Qgbj1lLnRhZ01hcC5nZXQoInRpdGxlIikscj1lLnRhZ01hcC5nZXQoInRpdGxlVGVtcGxhdGUiKTtsZXQgbz17dGl0bGU6InNlcnZlciI9PT1uPy5tb2RlP3QuX3RpdGxlOnZvaWQgMCx0aXRsZVRlbXBsYXRlOiJzZXJ2ZXIiPT09cj8ubW9kZT90Ll90aXRsZVRlbXBsYXRlOnZvaWQgMH07T2JqZWN0LmtleXModC5fc3NyUGF5bG9hZHx8e30pLmxlbmd0aD4wJiYobz17Li4udC5fc3NyUGF5bG9hZCwuLi5vfSksT2JqZWN0LnZhbHVlcyhvKS5zb21lKEJvb2xlYW4pJiZlLnRhZ3MucHVzaCh7dGFnOiJzY3JpcHQiLGlubmVySFRNTDpKU09OLnN0cmluZ2lmeShvKSxwcm9wczp7aWQ6InVuaGVhZDpwYXlsb2FkIix0eXBlOiJhcHBsaWNhdGlvbi9qc29uIn19KX19fSksdH0oey4uLmUscHJvcFJlc29sdmVyczpbVnVlUmVzb2x2ZXJdfSk7cmV0dXJuIHQuaW5zdGFsbD1mdW5jdGlvbihlKXtyZXR1cm57aW5zdGFsbCh0KXt0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiR1bmhlYWQ9ZSx0LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRoZWFkPWUsdC5wcm92aWRlKF9yLGUpfX0uaW5zdGFsbH0odCksdH1jb25zdCBicj1SKCIsa2V5LHJlZixpbm5lckhUTUwsdGV4dENvbnRlbnQscmVmX2tleSxyZWZfZm9yIik7ZnVuY3Rpb24gc3NyUmVuZGVyQXR0cnMoZSx0KXtsZXQgbj0iIjtmb3IobGV0IHIgaW4gZSl7aWYoYnIocil8fEgocil8fCJ0ZXh0YXJlYSI9PT10JiYidmFsdWUiPT09cnx8ci5zdGFydHNXaXRoKCIuIikpY29udGludWU7Y29uc3Qgbz1lW3JdO3Iuc3RhcnRzV2l0aCgiXiIpJiYocj1yLnNsaWNlKDEpKSwiY2xhc3MiPT09cj9uKz1gIGNsYXNzPSIke3NzclJlbmRlckNsYXNzKG8pfSJgOiJzdHlsZSI9PT1yP24rPWAgc3R5bGU9IiR7c3NyUmVuZGVyU3R5bGUobyl9ImA6ImNsYXNzTmFtZSI9PT1yP251bGwhPW8mJihuKz1gIGNsYXNzPSIke3JlKFN0cmluZyhvKSl9ImApOm4rPXNzclJlbmRlckR5bmFtaWNBdHRyKHIsbyx0KX1yZXR1cm4gbn1mdW5jdGlvbiBzc3JSZW5kZXJEeW5hbWljQXR0cihlLHQsbil7aWYoIWFlKHQpKXJldHVybiIiO2NvbnN0IHI9biYmKG4uaW5kZXhPZigiLSIpPjB8fGxlKG4pKT9lOmNlW2VdfHxlLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHVlKHIpP1godCk/YCAke3J9YDoiIjpwZShyKT8iIj09PXQ/YCAke3J9YDpgICR7cn09IiR7cmUodCl9ImA6KGNvbnNvbGUud2FybihgW0B2dWUvc2VydmVyLXJlbmRlcmVyXSBTa2lwcGVkIHJlbmRlcmluZyB1bnNhZmUgYXR0cmlidXRlIG5hbWU6ICR7cn1gKSwiIil9ZnVuY3Rpb24gc3NyUmVuZGVyQXR0cihlLHQpe3JldHVybiBhZSh0KT9gICR7ZX09IiR7cmUodCl9ImA6IiJ9ZnVuY3Rpb24gc3NyUmVuZGVyQ2xhc3MoZSl7cmV0dXJuIHJlKE8oZSkpfWZ1bmN0aW9uIHNzclJlbmRlclN0eWxlKGUpe2lmKCFlKXJldHVybiIiO2lmKCQoZSkpcmV0dXJuIHJlKGUpO2NvbnN0IHQ9TihmdW5jdGlvbihlKXtpZigheShlKSYmYihlKSl7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBpbiBlKW4uc3RhcnRzV2l0aCgiOi0tIik/dFtuLnNsaWNlKDEpXT1lZShlW25dKTp0W25dPWVbbl07cmV0dXJuIHR9cmV0dXJuIGV9KGUpKTtyZXR1cm4gcmUoaWUodCkpfWZ1bmN0aW9uIHNzclJlbmRlckNvbXBvbmVudChlLHQ9bnVsbCxuPW51bGwscj1udWxsLG8pe3JldHVybiByZW5kZXJDb21wb25lbnRWTm9kZShjcmVhdGVWTm9kZShlLHQsbikscixvKX1jb25zdHtlbnN1cmVWYWxpZFZOb2RlOmtyfT14bjtmdW5jdGlvbiBzc3JSZW5kZXJTbG90KGUsdCxuLHIsbyxzLGkpe28oIlx4M2MhLS1bLS1ceDNlIiksZnVuY3Rpb24oZSx0LG4scixvLHMsaSl7Y29uc3QgYT1lW3RdO2lmKGEpe2NvbnN0IGU9W10sdD1hKG4sdD0+e2UucHVzaCh0KX0scyxpPyIgIitpOiIiKTtpZih5KHQpKXtjb25zdCBlPWtyKHQpO2U/cmVuZGVyVk5vZGVDaGlsZHJlbihvLGUscyxpKTpyJiZyKCl9ZWxzZXtsZXQgdD0hMDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylpZighaXNDb21tZW50KGVbbl0pKXt0PSExO2JyZWFrfWlmKHQpciYmcigpO2Vsc2V7bGV0IHQ9MCxuPWUubGVuZ3RoO2lmKHQ8bilmb3IobGV0IHI9dDtyPG47cisrKW8oZVtyXSl9fX1lbHNlIHImJnIoKX0oZSx0LG4scixvLHMsaSksbygiXHgzYyEtLV0tLVx4M2UiKX1jb25zdCBDcj0vXjwhLS1bXHNcU10qLS0+JC8sU3I9LzwhLS1bXl0qPy0tPi9nbTtmdW5jdGlvbiBpc0NvbW1lbnQoZSl7cmV0dXJuISgic3RyaW5nIiE9dHlwZW9mIGV8fCFDci50ZXN0KGUpKSYmKGUubGVuZ3RoPD04fHwhZS5yZXBsYWNlKFNyLCIiKS50cmltKCkpfWZ1bmN0aW9uIHNzckludGVycG9sYXRlKGUpe3JldHVybiByZShuZShlKSl9e2NvbnN0IGU9aigpLHJlZ2lzdGVyR2xvYmFsU2V0dGVyPSh0LG4pPT57bGV0IHI7cmV0dXJuKHI9ZVt0XSl8fChyPWVbdF09W10pLHIucHVzaChuKSxlPT57ci5sZW5ndGg+MT9yLmZvckVhY2godD0+dChlKSk6clswXShlKX19O3JlZ2lzdGVyR2xvYmFsU2V0dGVyKCJfX1ZVRV9JTlNUQU5DRV9TRVRURVJTX18iLGU9PmUpLHJlZ2lzdGVyR2xvYmFsU2V0dGVyKCJfX1ZVRV9TU1JfU0VUVEVSU19fIixlPT5lKX1mdW5jdGlvbiBzc3JSZW5kZXJMaXN0KGUsdCl7aWYoeShlKXx8JChlKSlmb3IobGV0IG49MCxyPWUubGVuZ3RoO248cjtuKyspdChlW25dLG4pO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKWZvcihsZXQgbj0wO248ZTtuKyspdChuKzEsbik7ZWxzZSBpZihiKGUpKWlmKGVbU3ltYm9sLml0ZXJhdG9yXSl7Y29uc3Qgbj1BcnJheS5mcm9tKGUpO2ZvcihsZXQgZT0wLHI9bi5sZW5ndGg7ZTxyO2UrKyl0KG5bZV0sZSl9ZWxzZXtjb25zdCBuPU9iamVjdC5rZXlzKGUpO2ZvcihsZXQgcj0wLG89bi5sZW5ndGg7cjxvO3IrKyl7Y29uc3Qgbz1uW3JdO3QoZVtvXSxvLHIpfX19YXN5bmMgZnVuY3Rpb24gc3NyUmVuZGVyU3VzcGVuc2UoZSx7ZGVmYXVsdDp0fSl7dD90KCk6ZSgiXHgzYyEtLS0tXHgzZSIpfWNvbnN0e2NyZWF0ZUNvbXBvbmVudEluc3RhbmNlOndyLHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTpUcixzZXR1cENvbXBvbmVudDpScixyZW5kZXJDb21wb25lbnRSb290OkFyLG5vcm1hbGl6ZVZOb2RlOnhyLHB1c2hXYXJuaW5nQ29udGV4dDpFcixwb3BXYXJuaW5nQ29udGV4dDpQcn09eG47ZnVuY3Rpb24gY3JlYXRlQnVmZmVyKCl7bGV0IGU9ITE7Y29uc3QgdD1bXTtyZXR1cm57Z2V0QnVmZmVyOigpPT50LHB1c2gobil7Y29uc3Qgcj0kKG4pO2UmJnI/dFt0Lmxlbmd0aC0xXSs9bjoodC5wdXNoKG4pLGU9ciwoVihuKXx8eShuKSYmbi5oYXNBc3luYykmJih0Lmhhc0FzeW5jPSEwKSl9fX1mdW5jdGlvbiByZW5kZXJDb21wb25lbnRWTm9kZShlLHQ9bnVsbCxuKXtjb25zdCByPWUuY29tcG9uZW50PXdyKGUsdCxudWxsKSxvPVJyKHIsITApLHM9VihvKTtsZXQgaT1yLnNwO2lmKHN8fGkpe3JldHVybiBQcm9taXNlLnJlc29sdmUobykudGhlbigoKT0+e2lmKHMmJihpPXIuc3ApLGkpcmV0dXJuIFByb21pc2UuYWxsKGkubWFwKGU9PmUuY2FsbChyLnByb3h5KSkpfSkuY2F0Y2goUCkudGhlbigoKT0+cmVuZGVyQ29tcG9uZW50U3ViVHJlZShyLG4pKX1yZXR1cm4gcmVuZGVyQ29tcG9uZW50U3ViVHJlZShyLG4pfWZ1bmN0aW9uIHJlbmRlckNvbXBvbmVudFN1YlRyZWUoZSx0KXtjb25zdCBuPWUudHlwZSx7Z2V0QnVmZmVyOnIscHVzaDpvfT1jcmVhdGVCdWZmZXIoKTtpZihmKG4pKXtsZXQgcj1BcihlKTtpZighbi5wcm9wcylmb3IoY29uc3QgdCBpbiBlLmF0dHJzKXQuc3RhcnRzV2l0aCgiZGF0YS12LSIpJiYoKHIucHJvcHN8fChyLnByb3BzPXt9KSlbdF09IiIpO3JlbmRlclZOb2RlKG8sZS5zdWJUcmVlPXIsZSx0KX1lbHNle2UucmVuZGVyJiZlLnJlbmRlciE9PVB8fGUuc3NyUmVuZGVyfHxuLnNzclJlbmRlcnx8ISQobi50ZW1wbGF0ZSl8fChuLnNzclJlbmRlcj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiT24tdGhlLWZseSB0ZW1wbGF0ZSBjb21waWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBFU00gYnVpbGQgb2YgQHZ1ZS9zZXJ2ZXItcmVuZGVyZXIuIEFsbCB0ZW1wbGF0ZXMgbXVzdCBiZSBwcmUtY29tcGlsZWQgaW50byByZW5kZXIgZnVuY3Rpb25zLiIpfShuLnRlbXBsYXRlKSk7Y29uc3Qgcj1lLnNzclJlbmRlcnx8bi5zc3JSZW5kZXI7aWYocil7bGV0IG49ITEhPT1lLmluaGVyaXRBdHRycz9lLmF0dHJzOnZvaWQgMCxzPSExLGk9ZTtmb3IoOzspe2NvbnN0IGU9aS52bm9kZS5zY29wZUlkO2UmJihzfHwobj17Li4ubn0scz0hMCksbltlXT0iIik7Y29uc3QgdD1pLnBhcmVudDtpZighdHx8IXQuc3ViVHJlZXx8dC5zdWJUcmVlIT09aS52bm9kZSlicmVhaztpPXR9aWYodCl7c3x8KG49ey4uLm59KTtjb25zdCBlPXQudHJpbSgpLnNwbGl0KCIgIik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspbltlW3RdXT0iIn1jb25zdCBhPVRyKGUpO3RyeXtyKGUucHJveHksbyxlLG4sZS5wcm9wcyxlLnNldHVwU3RhdGUsZS5kYXRhLGUuY3R4KX1maW5hbGx5e1RyKGEpfX1lbHNlIGUucmVuZGVyJiZlLnJlbmRlciE9PVA/cmVuZGVyVk5vZGUobyxlLnN1YlRyZWU9QXIoZSksZSx0KToobi5uYW1lfHxuLl9fZmlsZSxvKCJceDNjIS0tLS1ceDNlIikpfXJldHVybiByKCl9ZnVuY3Rpb24gcmVuZGVyVk5vZGUoZSx0LG4scil7Y29uc3R7dHlwZTpvLHNoYXBlRmxhZzpzLGNoaWxkcmVuOmksZGlyczphLHByb3BzOmx9PXQ7c3dpdGNoKGEmJih0LnByb3BzPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCByPVtdO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBvPW5bdF0se2Rpcjp7Z2V0U1NSUHJvcHM6c319PW87aWYocyl7Y29uc3QgdD1zKG8sZSk7dCYmci5wdXNoKHQpfX1yZXR1cm4gbWVyZ2VQcm9wcyh0fHx7fSwuLi5yKX0odCxsLGEpKSxvKXtjYXNlIGNuOmUocmUoaSkpO2JyZWFrO2Nhc2UgdW46ZShpP2BceDNjIS0tJHtvZShpKX0tLVx4M2VgOiJceDNjIS0tLS1ceDNlIik7YnJlYWs7Y2FzZSBwbjplKGkpO2JyZWFrO2Nhc2UgbG46dC5zbG90U2NvcGVJZHMmJihyPShyP3IrIiAiOiIiKSt0LnNsb3RTY29wZUlkcy5qb2luKCIgIikpLGUoIlx4M2MhLS1bLS1ceDNlIikscmVuZGVyVk5vZGVDaGlsZHJlbihlLGksbixyKSxlKCJceDNjIS0tXS0tXHgzZSIpO2JyZWFrO2RlZmF1bHQ6MSZzP2Z1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89dC50eXBlO2xldHtwcm9wczpzLGNoaWxkcmVuOmksc2hhcGVGbGFnOmEsc2NvcGVJZDpsfT10LGM9YDwke299YDtzJiYoYys9c3NyUmVuZGVyQXR0cnMocyxvKSk7bCYmKGMrPWAgJHtsfWApO2xldCB1PW4scD10O2Zvcig7dSYmcD09PXUuc3ViVHJlZTspcD11LnZub2RlLHAuc2NvcGVJZCYmKGMrPWAgJHtwLnNjb3BlSWR9YCksdT11LnBhcmVudDtyJiYoYys9YCAke3J9YCk7aWYoZShjKyI+IiksIXNlKG8pKXtsZXQgdD0hMTtzJiYocy5pbm5lckhUTUw/KHQ9ITAsZShzLmlubmVySFRNTCkpOnMudGV4dENvbnRlbnQ/KHQ9ITAsZShyZShzLnRleHRDb250ZW50KSkpOiJ0ZXh0YXJlYSI9PT1vJiZzLnZhbHVlJiYodD0hMCxlKHJlKHMudmFsdWUpKSkpLHR8fCg4JmE/ZShyZShpKSk6MTYmYSYmcmVuZGVyVk5vZGVDaGlsZHJlbihlLGksbixyKSksZShgPC8ke299PmApfX0oZSx0LG4scik6NiZzP2UocmVuZGVyQ29tcG9uZW50Vk5vZGUodCxuLHIpKTo2NCZzP2Z1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89dC5wcm9wcyYmdC5wcm9wcy50byxzPXQucHJvcHMmJnQucHJvcHMuZGlzYWJsZWQ7aWYoIW8pcmV0dXJuW107aWYoISQobykpcmV0dXJuW107IWZ1bmN0aW9uKGUsdCxuLHIsbyl7ZSgiXHgzYyEtLXRlbGVwb3J0IHN0YXJ0LS1ceDNlIik7Y29uc3Qgcz1vLmFwcENvbnRleHQucHJvdmlkZXNba3RdLGk9cy5fX3RlbGVwb3J0QnVmZmVyc3x8KHMuX190ZWxlcG9ydEJ1ZmZlcnM9e30pLGE9aVtuXXx8KGlbbl09W10pLGw9YS5sZW5ndGg7bGV0IGM7aWYocil0KGUpLGM9Ilx4M2MhLS10ZWxlcG9ydCBzdGFydCBhbmNob3ItLVx4M2VceDNjIS0tdGVsZXBvcnQgYW5jaG9yLS1ceDNlIjtlbHNle2NvbnN0e2dldEJ1ZmZlcjplLHB1c2g6bn09Y3JlYXRlQnVmZmVyKCk7bigiXHgzYyEtLXRlbGVwb3J0IHN0YXJ0IGFuY2hvci0tXHgzZSIpLHQobiksbigiXHgzYyEtLXRlbGVwb3J0IGFuY2hvci0tXHgzZSIpLGM9ZSgpfWEuc3BsaWNlKGwsMCxjKSxlKCJceDNjIS0tdGVsZXBvcnQgZW5kLS1ceDNlIil9KGUsZT0+e3JlbmRlclZOb2RlQ2hpbGRyZW4oZSx0LmNoaWxkcmVuLG4scil9LG8sc3x8IiI9PT1zLG4pfShlLHQsbixyKToxMjgmcyYmcmVuZGVyVk5vZGUoZSx0LnNzQ29udGVudCxuLHIpfX1mdW5jdGlvbiByZW5kZXJWTm9kZUNoaWxkcmVuKGUsdCxuLHIpe2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXJlbmRlclZOb2RlKGUseHIodFtvXSksbixyKX1jb25zdHtpc1ZOb2RlOiRyfT14bjtmdW5jdGlvbiBuZXN0ZWRVbnJvbGxCdWZmZXIoZSx0LG4pe2lmKCFlLmhhc0FzeW5jKXJldHVybiB0K3Vucm9sbEJ1ZmZlclN5bmMkMShlKTtsZXQgcj10O2ZvcihsZXQgdD1uO3Q8ZS5sZW5ndGg7dCs9MSl7Y29uc3Qgbj1lW3RdO2lmKCQobikpe3IrPW47Y29udGludWV9aWYoVihuKSlyZXR1cm4gbi50aGVuKG49PihlW3RdPW4sbmVzdGVkVW5yb2xsQnVmZmVyKGUscix0KSkpO2NvbnN0IG89bmVzdGVkVW5yb2xsQnVmZmVyKG4sciwwKTtpZihWKG8pKXJldHVybiBvLnRoZW4obj0+KGVbdF09bixuZXN0ZWRVbnJvbGxCdWZmZXIoZSwiIix0KSkpO3I9b31yZXR1cm4gcn1mdW5jdGlvbiB1bnJvbGxCdWZmZXIkMShlKXtyZXR1cm4gbmVzdGVkVW5yb2xsQnVmZmVyKGUsIiIsMCl9ZnVuY3Rpb24gdW5yb2xsQnVmZmVyU3luYyQxKGUpe2xldCB0PSIiO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgcj1lW25dOyQocik/dCs9cjp0Kz11bnJvbGxCdWZmZXJTeW5jJDEocil9cmV0dXJuIHR9YXN5bmMgZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoZSx0PXt9KXtpZigkcihlKSlyZXR1cm4gcmVuZGVyVG9TdHJpbmcoY3JlYXRlQXBwKHtyZW5kZXI6KCk9PmV9KSx0KTtjb25zdCBuPWNyZWF0ZVZOb2RlKGUuX2NvbXBvbmVudCxlLl9wcm9wcyk7bi5hcHBDb250ZXh0PWUuX2NvbnRleHQsZS5wcm92aWRlKGt0LHQpO2NvbnN0IHI9YXdhaXQgcmVuZGVyQ29tcG9uZW50Vk5vZGUobiksbz1hd2FpdCB1bnJvbGxCdWZmZXIkMShyKTtpZihhd2FpdCBhc3luYyBmdW5jdGlvbihlKXtpZihlLl9fdGVsZXBvcnRCdWZmZXJzKXtlLnRlbGVwb3J0cz1lLnRlbGVwb3J0c3x8e307Zm9yKGNvbnN0IHQgaW4gZS5fX3RlbGVwb3J0QnVmZmVycyllLnRlbGVwb3J0c1t0XT1hd2FpdCB1bnJvbGxCdWZmZXIkMShhd2FpdCBQcm9taXNlLmFsbChbZS5fX3RlbGVwb3J0QnVmZmVyc1t0XV0pKX19KHQpLHQuX193YXRjaGVySGFuZGxlcylmb3IoY29uc3QgZSBvZiB0Ll9fd2F0Y2hlckhhbmRsZXMpZSgpO3JldHVybiBvfWNvbnN0e2lzVk5vZGU6T3J9PXhuO2luaXREaXJlY3RpdmVzRm9yU1NSKCk7Y29uc3QgTnI9e21ldGE6W3tuYW1lOiJ2aWV3cG9ydCIsY29udGVudDoid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEifSx7Y2hhcnNldDoidXRmLTgifV0sbGluazpbXSxzdHlsZTpbXSxzY3JpcHQ6W10sbm9zY3JpcHQ6W10saHRtbEF0dHJzOntsYW5nOiJlbiJ9fSxIcj17aWQ6InRlbGVwb3J0cyJ9LE1yPXtpZDoiX19udXh0LWxvYWRlciJ9LFZyPWA8ZGl2JHtwcm9wc1RvU3RyaW5nKHtpZDoiX19udXh0IixjbGFzczoiaXNvbGF0ZSJ9KX0+YCxqcj0iPC9kaXY+IixnZXRQcmVjb21wdXRlZERlcGVuZGVuY2llcz0oKT0+aW1wb3J0KCIuLi9idWlsZC9jbGllbnQucHJlY29tcHV0ZWQubWpzIikudGhlbihlPT5lLmRlZmF1bHR8fGUpLnRoZW4oZT0+ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmUpLElyPWxhenlDYWNoZWRGdW5jdGlvbihhc3luYygpPT57Y29uc3QgZT1hd2FpdCBpbXBvcnQoIi4uL2J1aWxkL3NlcnZlci5tanMiKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFVfSkudGhlbihlPT5lLmRlZmF1bHR8fGUpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiU2VydmVyIGJ1bmRsZSBpcyBub3QgYXZhaWxhYmxlIik7cmV0dXJuIGNyZWF0ZVJlbmRlcmVyJDEoZSx7cHJlY29tcHV0ZWQ6YXdhaXQgZ2V0UHJlY29tcHV0ZWREZXBlbmRlbmNpZXMoKSxtYW5pZmVzdDp2b2lkIDAscmVuZGVyVG9TdHJpbmc6YXN5bmMgZnVuY3Rpb24oZSx0KXtjb25zdCBuPWF3YWl0IHJlbmRlclRvU3RyaW5nKGUsdCk7cmV0dXJuIFZyK24ranJ9LGJ1aWxkQXNzZXRzVVJMOm59KX0pLERyPWxhenlDYWNoZWRGdW5jdGlvbihhc3luYygpPT57Y29uc3QgZT1hd2FpdCBnZXRQcmVjb21wdXRlZERlcGVuZGVuY2llcygpLHI9YXdhaXQgaW1wb3J0KCIuLi92aXJ0dWFsL192aXJ0dWFsX3NwYS10ZW1wbGF0ZS5tanMiKS50aGVuKGU9PmUudGVtcGxhdGUpLmNhdGNoKCgpPT4iIikudGhlbihlPT57e2NvbnN0IHQ9YDxkaXYke3Byb3BzVG9TdHJpbmcoTXIpfT5gO3JldHVybiBWcitqcisoZT90K2UrIjwvZGl2PiI6IiIpfX0pLG89Y3JlYXRlUmVuZGVyZXIkMSgoKT0+KCk9Pnt9LHtwcmVjb21wdXRlZDplLG1hbmlmZXN0OnZvaWQgMCxyZW5kZXJUb1N0cmluZzooKT0+cixidWlsZEFzc2V0c1VSTDpufSkscz1hd2FpdCBvLnJlbmRlclRvU3RyaW5nKHt9KTtyZXR1cm57cmVuZGVyZXJDb250ZXh0Om8ucmVuZGVyZXJDb250ZXh0LHJlbmRlclRvU3RyaW5nOmU9Pntjb25zdCBuPXQoZS5ldmVudCk7cmV0dXJuIGUubW9kdWxlc3x8PW5ldyBTZXQsZS5wYXlsb2FkLnNlcnZlclJlbmRlcmVkPSExLGUuY29uZmlnPXtwdWJsaWM6bi5wdWJsaWMsYXBwOm4uYXBwfSxQcm9taXNlLnJlc29sdmUocyl9fX0pO2Z1bmN0aW9uIGxhenlDYWNoZWRGdW5jdGlvbihlKXtsZXQgdD1udWxsO3JldHVybigpPT4obnVsbD09PXQmJih0PWUoKS5jYXRjaChlPT57dGhyb3cgdD1udWxsLGV9KSksdCl9Y29uc3QgTHI9bGF6eUNhY2hlZEZ1bmN0aW9uKCgpPT5pbXBvcnQoIi4uL2J1aWxkL3N0eWxlcy5tanMiKS50aGVuKGU9PmUuZGVmYXVsdHx8ZSkpLEZyPXsiPCI6IlxcdTAwM0MiLCJcXCI6IlxcXFwiLCJcYiI6IlxcYiIsIlxmIjoiXFxmIiwiXG4iOiJcXG4iLCJcciI6IlxcciIsIlx0IjoiXFx0IiwiXHUyMDI4IjoiXFx1MjAyOCIsIlx1MjAyOSI6IlxcdTIwMjkifTtjbGFzcyBEZXZhbHVlRXJyb3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlKSx0aGlzLm5hbWU9IkRldmFsdWVFcnJvciIsdGhpcy5wYXRoPXQuam9pbigiIiksdGhpcy52YWx1ZT1uLHRoaXMucm9vdD1yfX1mdW5jdGlvbiBpc19wcmltaXRpdmUoZSl7cmV0dXJuIE9iamVjdChlKSE9PWV9Y29uc3QgQnI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkuc29ydCgpLmpvaW4oIlwwIik7ZnVuY3Rpb24gaXNfcGxhaW5fb2JqZWN0KGUpe2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiB0PT09T2JqZWN0LnByb3RvdHlwZXx8bnVsbD09PXR8fG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCl8fE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLnNvcnQoKS5qb2luKCJcMCIpPT09QnJ9ZnVuY3Rpb24gZ2V0X3R5cGUoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKX1mdW5jdGlvbiBnZXRfZXNjYXBlZF9jaGFyKGUpe3N3aXRjaChlKXtjYXNlJyInOnJldHVybidcXCInO2Nhc2UiPCI6cmV0dXJuIlxcdTAwM0MiO2Nhc2UiXFwiOnJldHVybiJcXFxcIjtjYXNlIlxuIjpyZXR1cm4iXFxuIjtjYXNlIlxyIjpyZXR1cm4iXFxyIjtjYXNlIlx0IjpyZXR1cm4iXFx0IjtjYXNlIlxiIjpyZXR1cm4iXFxiIjtjYXNlIlxmIjpyZXR1cm4iXFxmIjtjYXNlIlx1MjAyOCI6cmV0dXJuIlxcdTIwMjgiO2Nhc2UiXHUyMDI5IjpyZXR1cm4iXFx1MjAyOSI7ZGVmYXVsdDpyZXR1cm4gZTwiICI/YFxcdSR7ZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg0LCIwIil9YDoiIn19ZnVuY3Rpb24gc3RyaW5naWZ5X3N0cmluZyhlKXtsZXQgdD0iIixuPTA7Y29uc3Qgcj1lLmxlbmd0aDtmb3IobGV0IG89MDtvPHI7bys9MSl7Y29uc3Qgcj1nZXRfZXNjYXBlZF9jaGFyKGVbb10pO3ImJih0Kz1lLnNsaWNlKG4sbykrcixuPW8rMSl9cmV0dXJuYCIkezA9PT1uP2U6dCtlLnNsaWNlKG4pfSJgfWZ1bmN0aW9uIGVudW1lcmFibGVfc3ltYm9scyhlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKS5maWx0ZXIodD0+T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGUpfWNvbnN0IFVyPS9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qJC87ZnVuY3Rpb24gc3RyaW5naWZ5X2tleShlKXtyZXR1cm4gVXIudGVzdChlKT8iLiIrZToiWyIrSlNPTi5zdHJpbmdpZnkoZSkrIl0ifWZ1bmN0aW9uIGlzX3ZhbGlkX2FycmF5X2luZGV4KGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4hMTtpZihlLmxlbmd0aD4xJiY0OD09PWUuY2hhckNvZGVBdCgwKSlyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQodCk7aWYobjw0OHx8bj41NylyZXR1cm4hMX1jb25zdCB0PStlO3JldHVybiEodD49MioqMzItMSkmJiEodDwwKX1mdW5jdGlvbiB2YWxpZF9hcnJheV9pbmRpY2VzKGUpe2NvbnN0IHQ9T2JqZWN0LmtleXMoZSk7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MCYmIWlzX3ZhbGlkX2FycmF5X2luZGV4KHRbbl0pO24tLSk7cmV0dXJuIHQubGVuZ3RoPW4rMSx0fWNvbnN0IFdyPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXyQiLHpyPS9bPFxiXGZcblxyXHRcMFx1MjAyOFx1MjAyOV0vZyxxcj0vXig/OmRvfGlmfGlufGZvcnxpbnR8bGV0fG5ld3x0cnl8dmFyfGJ5dGV8Y2FzZXxjaGFyfGVsc2V8ZW51bXxnb3RvfGxvbmd8dGhpc3x2b2lkfHdpdGh8YXdhaXR8YnJlYWt8Y2F0Y2h8Y2xhc3N8Y29uc3R8ZmluYWx8ZmxvYXR8c2hvcnR8c3VwZXJ8dGhyb3d8d2hpbGV8eWllbGR8ZGVsZXRlfGRvdWJsZXxleHBvcnR8aW1wb3J0fG5hdGl2ZXxyZXR1cm58c3dpdGNofHRocm93c3x0eXBlb2Z8Ym9vbGVhbnxkZWZhdWx0fGV4dGVuZHN8ZmluYWxseXxwYWNrYWdlfHByaXZhdGV8YWJzdHJhY3R8Y29udGludWV8ZGVidWdnZXJ8ZnVuY3Rpb258dm9sYXRpbGV8aW50ZXJmYWNlfHByb3RlY3RlZHx0cmFuc2llbnR8aW1wbGVtZW50c3xpbnN0YW5jZW9mfHN5bmNocm9uaXplZCkkLztmdW5jdGlvbiB1bmV2YWwoZSx0KXtjb25zdCBuPW5ldyBNYXAscj1bXSxvPW5ldyBNYXA7IWZ1bmN0aW9uIHdhbGsodCl7aWYoIWlzX3ByaW1pdGl2ZSh0KSl7aWYobi5oYXModCkpcmV0dXJuIHZvaWQgbi5zZXQodCxuLmdldCh0KSsxKTtpZihuLnNldCh0LDEpLCJmdW5jdGlvbiI9PXR5cGVvZiB0KXRocm93IG5ldyBEZXZhbHVlRXJyb3IoIkNhbm5vdCBzdHJpbmdpZnkgYSBmdW5jdGlvbiIscix0LGUpO3N3aXRjaChnZXRfdHlwZSh0KSl7Y2FzZSJOdW1iZXIiOmNhc2UiQmlnSW50IjpjYXNlIlN0cmluZyI6Y2FzZSJCb29sZWFuIjpjYXNlIkRhdGUiOmNhc2UiUmVnRXhwIjpjYXNlIlVSTCI6Y2FzZSJVUkxTZWFyY2hQYXJhbXMiOmNhc2UiQXJyYXlCdWZmZXIiOmNhc2UiVGVtcG9yYWwuRHVyYXRpb24iOmNhc2UiVGVtcG9yYWwuSW5zdGFudCI6Y2FzZSJUZW1wb3JhbC5QbGFpbkRhdGUiOmNhc2UiVGVtcG9yYWwuUGxhaW5UaW1lIjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZVRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5Nb250aERheSI6Y2FzZSJUZW1wb3JhbC5QbGFpblllYXJNb250aCI6Y2FzZSJUZW1wb3JhbC5ab25lZERhdGVUaW1lIjpyZXR1cm47Y2FzZSJBcnJheSI6dC5mb3JFYWNoKChlLHQpPT57ci5wdXNoKGBbJHt0fV1gKSx3YWxrKGUpLHIucG9wKCl9KTticmVhaztjYXNlIlNldCI6QXJyYXkuZnJvbSh0KS5mb3JFYWNoKHdhbGspO2JyZWFrO2Nhc2UiTWFwIjpmb3IoY29uc3RbZSxuXW9mIHQpci5wdXNoKGAuZ2V0KCR7aXNfcHJpbWl0aXZlKGUpP3N0cmluZ2lmeV9wcmltaXRpdmUkMShlKToiLi4uIn0pYCksd2FsayhuKSxyLnBvcCgpO2JyZWFrO2Nhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQmlnSW50NjRBcnJheSI6Y2FzZSJCaWdVaW50NjRBcnJheSI6cmV0dXJuIHZvaWQgd2Fsayh0LmJ1ZmZlcik7ZGVmYXVsdDppZighaXNfcGxhaW5fb2JqZWN0KHQpKXRocm93IG5ldyBEZXZhbHVlRXJyb3IoIkNhbm5vdCBzdHJpbmdpZnkgYXJiaXRyYXJ5IG5vbi1QT0pPcyIscix0LGUpO2lmKGVudW1lcmFibGVfc3ltYm9scyh0KS5sZW5ndGg+MCl0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IFBPSk9zIHdpdGggc3ltYm9saWMga2V5cyIscix0LGUpO2Zvcihjb25zdCBuIG9mIE9iamVjdC5rZXlzKHQpKXtpZigiX19wcm90b19fIj09PW4pdGhyb3cgbmV3IERldmFsdWVFcnJvcigiQ2Fubm90IHN0cmluZ2lmeSBvYmplY3RzIHdpdGggX19wcm90b19fIGtleXMiLHIsdCxlKTtyLnB1c2goc3RyaW5naWZ5X2tleShuKSksd2Fsayh0W25dKSxyLnBvcCgpfX19fShlKTtjb25zdCBzPW5ldyBNYXA7ZnVuY3Rpb24gc3RyaW5naWZ5KGUpe2lmKHMuaGFzKGUpKXJldHVybiBzLmdldChlKTtpZihpc19wcmltaXRpdmUoZSkpcmV0dXJuIHN0cmluZ2lmeV9wcmltaXRpdmUkMShlKTtpZihvLmhhcyhlKSlyZXR1cm4gby5nZXQoZSk7Y29uc3QgdD1nZXRfdHlwZShlKTtzd2l0Y2godCl7Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjpjYXNlIkJvb2xlYW4iOnJldHVybmBPYmplY3QoJHtzdHJpbmdpZnkoZS52YWx1ZU9mKCkpfSlgO2Nhc2UiUmVnRXhwIjpyZXR1cm5gbmV3IFJlZ0V4cCgke3N0cmluZ2lmeV9zdHJpbmcoZS5zb3VyY2UpfSwgIiR7ZS5mbGFnc30iKWA7Y2FzZSJEYXRlIjpyZXR1cm5gbmV3IERhdGUoJHtlLmdldFRpbWUoKX0pYDtjYXNlIlVSTCI6cmV0dXJuYG5ldyBVUkwoJHtzdHJpbmdpZnlfc3RyaW5nKGUudG9TdHJpbmcoKSl9KWA7Y2FzZSJVUkxTZWFyY2hQYXJhbXMiOnJldHVybmBuZXcgVVJMU2VhcmNoUGFyYW1zKCR7c3RyaW5naWZ5X3N0cmluZyhlLnRvU3RyaW5nKCkpfSlgO2Nhc2UiQXJyYXkiOntsZXQgdD0hMSxuPSJbIjtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrPTEpaWYocj4wJiYobis9IiwiKSxPYmplY3QuaGFzT3duKGUscikpbis9c3RyaW5naWZ5KGVbcl0pO2Vsc2UgaWYoIXQpe2NvbnN0IG49dmFsaWRfYXJyYXlfaW5kaWNlcyhlKSxvPW4ubGVuZ3RoLHM9U3RyaW5nKGUubGVuZ3RoKS5sZW5ndGg7aWYoZS5sZW5ndGgrMj4yNStzK28qKHMrMikpe2NvbnN0IHQ9bi5tYXAodD0+YCR7dH06JHtzdHJpbmdpZnkoZVt0XSl9YCkuam9pbigiLCIpO3JldHVybmBPYmplY3QuYXNzaWduKEFycmF5KCR7ZS5sZW5ndGh9KSx7JHt0fX0pYH10PSEwLHItPTF9cmV0dXJuIG4rKDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgtMSBpbiBlPyIiOiIsIikrIl0ifWNhc2UiU2V0IjpjYXNlIk1hcCI6cmV0dXJuYG5ldyAke3R9KFske0FycmF5LmZyb20oZSkubWFwKHN0cmluZ2lmeSkuam9pbigiLCIpfV0pYDtjYXNlIkludDhBcnJheSI6Y2FzZSJVaW50OEFycmF5IjpjYXNlIlVpbnQ4Q2xhbXBlZEFycmF5IjpjYXNlIkludDE2QXJyYXkiOmNhc2UiVWludDE2QXJyYXkiOmNhc2UiSW50MzJBcnJheSI6Y2FzZSJVaW50MzJBcnJheSI6Y2FzZSJGbG9hdDMyQXJyYXkiOmNhc2UiRmxvYXQ2NEFycmF5IjpjYXNlIkJpZ0ludDY0QXJyYXkiOmNhc2UiQmlnVWludDY0QXJyYXkiOntsZXQgcj1gbmV3ICR7dH1gO2lmKDE9PT1uLmdldChlLmJ1ZmZlcikpe3IrPWAoWyR7bmV3IGUuY29uc3RydWN0b3IoZS5idWZmZXIpfV0pYH1lbHNlIHIrPWAoWyR7c3RyaW5naWZ5KGUuYnVmZmVyKX1dKWA7Y29uc3Qgbz1lLmJ5dGVPZmZzZXQscz1vK2UuYnl0ZUxlbmd0aDtpZihvPjB8fHMhPT1lLmJ1ZmZlci5ieXRlTGVuZ3RoKXtjb25zdCBlPSsvKFxkKykvLmV4ZWModClbMV0vODtyKz1gLnN1YmFycmF5KCR7by9lfSwke3MvZX0pYH1yZXR1cm4gcn1jYXNlIkFycmF5QnVmZmVyIjpyZXR1cm5gbmV3IFVpbnQ4QXJyYXkoWyR7bmV3IFVpbnQ4QXJyYXkoZSkudG9TdHJpbmcoKX1dKS5idWZmZXJgO2Nhc2UiVGVtcG9yYWwuRHVyYXRpb24iOmNhc2UiVGVtcG9yYWwuSW5zdGFudCI6Y2FzZSJUZW1wb3JhbC5QbGFpbkRhdGUiOmNhc2UiVGVtcG9yYWwuUGxhaW5UaW1lIjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZVRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5Nb250aERheSI6Y2FzZSJUZW1wb3JhbC5QbGFpblllYXJNb250aCI6Y2FzZSJUZW1wb3JhbC5ab25lZERhdGVUaW1lIjpyZXR1cm5gJHt0fS5mcm9tKCR7c3RyaW5naWZ5X3N0cmluZyhlLnRvU3RyaW5nKCkpfSlgO2RlZmF1bHQ6Y29uc3Qgcj1PYmplY3Qua2V5cyhlKSxvPXIubWFwKHQ9PmAke2Z1bmN0aW9uKGUpe3JldHVybi9eW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJC8udGVzdChlKT9lOmVzY2FwZV91bnNhZmVfY2hhcnMoSlNPTi5zdHJpbmdpZnkoZSkpfSh0KX06JHtzdHJpbmdpZnkoZVt0XSl9YCkuam9pbigiLCIpO3JldHVybiBudWxsPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpP3IubGVuZ3RoPjA/YHske299LF9fcHJvdG9fXzpudWxsfWA6IntfX3Byb3RvX186bnVsbH0iOmB7JHtvfX1gfX1BcnJheS5mcm9tKG4pLmZpbHRlcihlPT5lWzFdPjEpLnNvcnQoKGUsdCk9PnRbMV0tZVsxXSkuZm9yRWFjaCgoZSx0KT0+e3Muc2V0KGVbMF0sZnVuY3Rpb24oZSl7bGV0IHQ9IiI7ZG97dD1XcltlJTU0XSt0LGU9fn4oZS81NCktMX13aGlsZShlPj0wKTtyZXR1cm4gcXIudGVzdCh0KT9gJHt0fTBgOnR9KHQpKX0pO2NvbnN0IGk9c3RyaW5naWZ5KGUpO2lmKHMuc2l6ZSl7Y29uc3QgZT1bXSx0PVtdLG49W107cmV0dXJuIHMuZm9yRWFjaCgocixzKT0+e2lmKGUucHVzaChyKSxvLmhhcyhzKSlyZXR1cm4gdm9pZCBuLnB1c2goby5nZXQocykpO2lmKGlzX3ByaW1pdGl2ZShzKSlyZXR1cm4gdm9pZCBuLnB1c2goc3RyaW5naWZ5X3ByaW1pdGl2ZSQxKHMpKTtzd2l0Y2goZ2V0X3R5cGUocykpe2Nhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6Y2FzZSJCb29sZWFuIjpuLnB1c2goYE9iamVjdCgke3N0cmluZ2lmeShzLnZhbHVlT2YoKSl9KWApO2JyZWFrO2Nhc2UiUmVnRXhwIjpuLnB1c2gocy50b1N0cmluZygpKTticmVhaztjYXNlIkRhdGUiOm4ucHVzaChgbmV3IERhdGUoJHtzLmdldFRpbWUoKX0pYCk7YnJlYWs7Y2FzZSJBcnJheSI6bi5wdXNoKGBBcnJheSgke3MubGVuZ3RofSlgKSxzLmZvckVhY2goKGUsbik9Pnt0LnB1c2goYCR7cn1bJHtufV09JHtzdHJpbmdpZnkoZSl9YCl9KTticmVhaztjYXNlIlNldCI6bi5wdXNoKCJuZXcgU2V0IiksdC5wdXNoKGAke3J9LiR7QXJyYXkuZnJvbShzKS5tYXAoZT0+YGFkZCgke3N0cmluZ2lmeShlKX0pYCkuam9pbigiLiIpfWApO2JyZWFrO2Nhc2UiTWFwIjpuLnB1c2goIm5ldyBNYXAiKSx0LnB1c2goYCR7cn0uJHtBcnJheS5mcm9tKHMpLm1hcCgoW2UsdF0pPT5gc2V0KCR7c3RyaW5naWZ5KGUpfSwgJHtzdHJpbmdpZnkodCl9KWApLmpvaW4oIi4iKX1gKTticmVhaztjYXNlIkFycmF5QnVmZmVyIjpuLnB1c2goYG5ldyBVaW50OEFycmF5KFske25ldyBVaW50OEFycmF5KHMpLmpvaW4oIiwiKX1dKS5idWZmZXJgKTticmVhaztkZWZhdWx0Om4ucHVzaChudWxsPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHMpPyJPYmplY3QuY3JlYXRlKG51bGwpIjoie30iKSxPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGU9Pnt0LnB1c2goYCR7cn0ke2Z1bmN0aW9uKGUpe3JldHVybi9eW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJC8udGVzdChlKT9gLiR7ZX1gOmBbJHtlc2NhcGVfdW5zYWZlX2NoYXJzKEpTT04uc3RyaW5naWZ5KGUpKX1dYH0oZSl9PSR7c3RyaW5naWZ5KHNbZV0pfWApfSl9fSksdC5wdXNoKGByZXR1cm4gJHtpfWApLGAoZnVuY3Rpb24oJHtlLmpvaW4oIiwiKX0peyR7dC5qb2luKCI7Iil9fSgke24uam9pbigiLCIpfSkpYH1yZXR1cm4gaX1mdW5jdGlvbiBlc2NhcGVfdW5zYWZlX2NoYXIoZSl7cmV0dXJuIEZyW2VdfHxlfWZ1bmN0aW9uIGVzY2FwZV91bnNhZmVfY2hhcnMoZSl7cmV0dXJuIGUucmVwbGFjZSh6cixlc2NhcGVfdW5zYWZlX2NoYXIpfWZ1bmN0aW9uIHN0cmluZ2lmeV9wcmltaXRpdmUkMShlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHN0cmluZ2lmeV9zdHJpbmcoZSk7aWYodm9pZCAwPT09ZSlyZXR1cm4idm9pZCAwIjtpZigwPT09ZSYmMS9lPDApcmV0dXJuIi0wIjtjb25zdCB0PVN0cmluZyhlKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dC5yZXBsYWNlKC9eKC0pPzBcLi8sIiQxLiIpOiJiaWdpbnQiPT10eXBlb2YgZT9lKyJuIjp0fWZ1bmN0aW9uIGVuY29kZTY0KGUpe2NvbnN0IHQ9bmV3IERhdGFWaWV3KGUpO2xldCBuPSIiO2ZvcihsZXQgcj0wO3I8ZS5ieXRlTGVuZ3RoO3IrKyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDgocikpO3JldHVybiBmdW5jdGlvbihlKXtsZXQgdD0iIjtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTMpe2NvbnN0IHI9W3ZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMF07clswXT1lLmNoYXJDb2RlQXQobik+PjIsclsxXT0oMyZlLmNoYXJDb2RlQXQobikpPDw0LGUubGVuZ3RoPm4rMSYmKHJbMV18PWUuY2hhckNvZGVBdChuKzEpPj40LHJbMl09KDE1JmUuY2hhckNvZGVBdChuKzEpKTw8MiksZS5sZW5ndGg+bisyJiYoclsyXXw9ZS5jaGFyQ29kZUF0KG4rMik+PjYsclszXT02MyZlLmNoYXJDb2RlQXQobisyKSk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspdm9pZCAwPT09cltlXT90Kz0iPSI6dCs9S3JbcltlXV19cmV0dXJuIHR9KG4pfWNvbnN0IEtyPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjtmdW5jdGlvbiBzdHJpbmdpZnkoZSx0KXtjb25zdCBuPVtdLHI9bmV3IE1hcCxvPVtdO2lmKHQpZm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkpby5wdXNoKHtrZXk6ZSxmbjp0W2VdfSk7Y29uc3Qgcz1bXTtsZXQgaT0wO2NvbnN0IGE9ZnVuY3Rpb24gZmxhdHRlbih0KXtpZih2b2lkIDA9PT10KXJldHVybi0xO2lmKE51bWJlci5pc05hTih0KSlyZXR1cm4tMztpZih0PT09MS8wKXJldHVybi00O2lmKHQ9PT0tMS8wKXJldHVybi01O2lmKDA9PT10JiYxL3Q8MClyZXR1cm4tNjtpZihyLmhhcyh0KSlyZXR1cm4gci5nZXQodCk7Y29uc3QgYT1pKys7ci5zZXQodCxhKTtmb3IoY29uc3R7a2V5OmUsZm46cn1vZiBvKXtjb25zdCBvPXIodCk7aWYobylyZXR1cm4gblthXT1gWyIke2V9Iiwke2ZsYXR0ZW4obyl9XWAsYX1pZigiZnVuY3Rpb24iPT10eXBlb2YgdCl0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IGEgZnVuY3Rpb24iLHMsdCxlKTtsZXQgbD0iIjtpZihpc19wcmltaXRpdmUodCkpbD1zdHJpbmdpZnlfcHJpbWl0aXZlKHQpO2Vsc2V7Y29uc3Qgbj1nZXRfdHlwZSh0KTtzd2l0Y2gobil7Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjpjYXNlIkJvb2xlYW4iOmw9YFsiT2JqZWN0Iiwke3N0cmluZ2lmeV9wcmltaXRpdmUodCl9XWA7YnJlYWs7Y2FzZSJCaWdJbnQiOmw9YFsiQmlnSW50Iiwke3R9XWA7YnJlYWs7Y2FzZSJEYXRlIjpsPWBbIkRhdGUiLCIkeyFpc05hTih0LmdldERhdGUoKSk/dC50b0lTT1N0cmluZygpOiIifSJdYDticmVhaztjYXNlIlVSTCI6bD1gWyJVUkwiLCR7c3RyaW5naWZ5X3N0cmluZyh0LnRvU3RyaW5nKCkpfV1gO2JyZWFrO2Nhc2UiVVJMU2VhcmNoUGFyYW1zIjpsPWBbIlVSTFNlYXJjaFBhcmFtcyIsJHtzdHJpbmdpZnlfc3RyaW5nKHQudG9TdHJpbmcoKSl9XWA7YnJlYWs7Y2FzZSJSZWdFeHAiOmNvbnN0e3NvdXJjZTpyLGZsYWdzOm99PXQ7bD1vP2BbIlJlZ0V4cCIsJHtzdHJpbmdpZnlfc3RyaW5nKHIpfSwiJHtvfSJdYDpgWyJSZWdFeHAiLCR7c3RyaW5naWZ5X3N0cmluZyhyKX1dYDticmVhaztjYXNlIkFycmF5Ijp7bGV0IGU9ITE7bD0iWyI7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz0xKWlmKG4+MCYmKGwrPSIsIiksT2JqZWN0Lmhhc093bih0LG4pKXMucHVzaChgWyR7bn1dYCksbCs9ZmxhdHRlbih0W25dKSxzLnBvcCgpO2Vsc2UgaWYoZSlsKz0tMjtlbHNle2NvbnN0IG49dmFsaWRfYXJyYXlfaW5kaWNlcyh0KSxyPW4ubGVuZ3RoLG89U3RyaW5nKHQubGVuZ3RoKS5sZW5ndGg7aWYoMyoodC5sZW5ndGgtcik+NCtvK3IqKG8rMSkpe2w9IlstNywiK3QubGVuZ3RoO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtjb25zdCByPW5bZV07cy5wdXNoKGBbJHtyfV1gKSxsKz0iLCIrcisiLCIrZmxhdHRlbih0W3JdKSxzLnBvcCgpfWJyZWFrfWU9ITAsbCs9LTJ9bCs9Il0iO2JyZWFrfWNhc2UiU2V0IjpsPSdbIlNldCInO2Zvcihjb25zdCBlIG9mIHQpbCs9YCwke2ZsYXR0ZW4oZSl9YDtsKz0iXSI7YnJlYWs7Y2FzZSJNYXAiOmw9J1siTWFwIic7Zm9yKGNvbnN0W2Usbl1vZiB0KXMucHVzaChgLmdldCgke2lzX3ByaW1pdGl2ZShlKT9zdHJpbmdpZnlfcHJpbWl0aXZlKGUpOiIuLi4ifSlgKSxsKz1gLCR7ZmxhdHRlbihlKX0sJHtmbGF0dGVuKG4pfWAscy5wb3AoKTtsKz0iXSI7YnJlYWs7Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIkludDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQzMkFycmF5IjpjYXNlIkZsb2F0NjRBcnJheSI6Y2FzZSJCaWdJbnQ2NEFycmF5IjpjYXNlIkJpZ1VpbnQ2NEFycmF5Ijp7Y29uc3QgZT10O2w9J1siJytuKyciLCcrZmxhdHRlbihlLmJ1ZmZlcik7Y29uc3Qgcj10LmJ5dGVPZmZzZXQsbz1yK3QuYnl0ZUxlbmd0aDtpZihyPjB8fG8hPT1lLmJ1ZmZlci5ieXRlTGVuZ3RoKXtjb25zdCBlPSsvKFxkKykvLmV4ZWMobilbMV0vODtsKz1gLCR7ci9lfSwke28vZX1gfWwrPSJdIjticmVha31jYXNlIkFycmF5QnVmZmVyIjpsPWBbIkFycmF5QnVmZmVyIiwiJHtlbmNvZGU2NCh0KX0iXWA7YnJlYWs7Y2FzZSJUZW1wb3JhbC5EdXJhdGlvbiI6Y2FzZSJUZW1wb3JhbC5JbnN0YW50IjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZSI6Y2FzZSJUZW1wb3JhbC5QbGFpblRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5EYXRlVGltZSI6Y2FzZSJUZW1wb3JhbC5QbGFpbk1vbnRoRGF5IjpjYXNlIlRlbXBvcmFsLlBsYWluWWVhck1vbnRoIjpjYXNlIlRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUiOmw9YFsiJHtufSIsJHtzdHJpbmdpZnlfc3RyaW5nKHQudG9TdHJpbmcoKSl9XWA7YnJlYWs7ZGVmYXVsdDppZighaXNfcGxhaW5fb2JqZWN0KHQpKXRocm93IG5ldyBEZXZhbHVlRXJyb3IoIkNhbm5vdCBzdHJpbmdpZnkgYXJiaXRyYXJ5IG5vbi1QT0pPcyIscyx0LGUpO2lmKGVudW1lcmFibGVfc3ltYm9scyh0KS5sZW5ndGg+MCl0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IFBPSk9zIHdpdGggc3ltYm9saWMga2V5cyIscyx0LGUpO2lmKG51bGw9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpe2w9J1sibnVsbCInO2Zvcihjb25zdCBuIG9mIE9iamVjdC5rZXlzKHQpKXtpZigiX19wcm90b19fIj09PW4pdGhyb3cgbmV3IERldmFsdWVFcnJvcigiQ2Fubm90IHN0cmluZ2lmeSBvYmplY3RzIHdpdGggX19wcm90b19fIGtleXMiLHMsdCxlKTtzLnB1c2goc3RyaW5naWZ5X2tleShuKSksbCs9YCwke3N0cmluZ2lmeV9zdHJpbmcobil9LCR7ZmxhdHRlbih0W25dKX1gLHMucG9wKCl9bCs9Il0ifWVsc2V7bD0ieyI7bGV0IG49ITE7Zm9yKGNvbnN0IHIgb2YgT2JqZWN0LmtleXModCkpe2lmKCJfX3Byb3RvX18iPT09cil0aHJvdyBuZXcgRGV2YWx1ZUVycm9yKCJDYW5ub3Qgc3RyaW5naWZ5IG9iamVjdHMgd2l0aCBfX3Byb3RvX18ga2V5cyIscyx0LGUpO24mJihsKz0iLCIpLG49ITAscy5wdXNoKHN0cmluZ2lmeV9rZXkocikpLGwrPWAke3N0cmluZ2lmeV9zdHJpbmcocil9OiR7ZmxhdHRlbih0W3JdKX1gLHMucG9wKCl9bCs9In0ifX19cmV0dXJuIG5bYV09bCxhfShlKTtyZXR1cm4gYTwwP2Ake2F9YDpgWyR7bi5qb2luKCIsIil9XWB9ZnVuY3Rpb24gc3RyaW5naWZ5X3ByaW1pdGl2ZShlKXtjb25zdCB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT09dD9zdHJpbmdpZnlfc3RyaW5nKGUpOmUgaW5zdGFuY2VvZiBTdHJpbmc/c3RyaW5naWZ5X3N0cmluZyhlLnRvU3RyaW5nKCkpOnZvaWQgMD09PWU/KC0xKS50b1N0cmluZygpOjA9PT1lJiYxL2U8MD8oLTYpLnRvU3RyaW5nKCk6ImJpZ2ludCI9PT10P2BbIkJpZ0ludCIsIiR7ZX0iXWA6U3RyaW5nKGUpfWZ1bmN0aW9uIHJlbmRlclBheWxvYWRKc29uU2NyaXB0KGUpe2NvbnN0IHQ9e3R5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGlubmVySFRNTDplLmRhdGE/ZW5jb2RlRm9yd2FyZFNsYXNoZXMoc3RyaW5naWZ5KGUuZGF0YSxlLnNzckNvbnRleHRbIn5wYXlsb2FkUmVkdWNlcnMiXSkpOiIiLCJkYXRhLW51eHQtZGF0YSI6Im51eHQtYXBwIiwiZGF0YS1zc3IiOiFlLnNzckNvbnRleHQubm9TU1IsaWQ6Il9fTlVYVF9EQVRBX18ifTtlLnNyYyYmKHRbImRhdGEtc3JjIl09ZS5zcmMpO3JldHVyblt0LHtpbm5lckhUTUw6YHdpbmRvdy5fX05VWFRfXz17fTt3aW5kb3cuX19OVVhUX18uY29uZmlnPSR7dW5ldmFsKGUuc3NyQ29udGV4dC5jb25maWcpfWB9XX1mdW5jdGlvbiBlbmNvZGVGb3J3YXJkU2xhc2hlcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKCIvIiwiXFx1MDAyRiIpfWZ1bmN0aW9uIHNwbGl0UGF5bG9hZChlKXtjb25zdHtkYXRhOnQscHJlcmVuZGVyZWRBdDpuLC4uLnJ9PWUucGF5bG9hZDtyZXR1cm57aW5pdGlhbDp7Li4ucixwcmVyZW5kZXJlZEF0Om59LHBheWxvYWQ6e2RhdGE6dCxwcmVyZW5kZXJlZEF0Om59fX1jb25zdCBKcj17ZGlzYWJsZURlZmF1bHRzOiEwfTtjb25zdCBHcj17fSxacj1bXTtnbG9iYWxUaGlzLl9fYnVpbGRBc3NldHNVUkw9bixnbG9iYWxUaGlzLl9fcHVibGljQXNzZXRzVVJMPWk7Y29uc3QgWHI9ISFIci5pZCxZcj1Ycj9gPGRpdiR7cHJvcHNUb1N0cmluZyhIcil9PmA6IiIsUXI9WHI/IjwvZGl2PiI6IiIsZW89L15bXj9dKlwvX3BheWxvYWQuanNvbig/Olw/LiopPyQvLHRvPXMoYXN5bmMgZT0+e2NvbnN0IG49ZCgpLHM9ZS5wYXRoLnN0YXJ0c1dpdGgoIi9fX251eHRfZXJyb3IiKT9hKGUpOm51bGw7aWYocyYmISgiX191bmVudl9fImluIGUubm9kZS5yZXEpKXRocm93IGwoe3N0YXR1czo0MDQsc3RhdHVzVGV4dDoiUGFnZSBOb3QgRm91bmQ6IC9fX251eHRfZXJyb3IiLG1lc3NhZ2U6IlBhZ2UgTm90IEZvdW5kOiAvX19udXh0X2Vycm9yIn0pO2NvbnN0IGk9ZnVuY3Rpb24oZSl7cmV0dXJue3VybDplLnBhdGgsZXZlbnQ6ZSxydW50aW1lQ29uZmlnOnQoZSksbm9TU1I6ZS5jb250ZXh0Lm51eHQ/Lm5vU1NSfHwhMSxoZWFkOmNyZWF0ZUhlYWQoSnIpLGVycm9yOiExLG51eHQ6dm9pZCAwLHBheWxvYWQ6e30sIn5wYXlsb2FkUmVkdWNlcnMiOk9iamVjdC5jcmVhdGUobnVsbCksbW9kdWxlczpuZXcgU2V0fX0oZSksZj17bW9kZToic2VydmVyIn07aWYoaS5oZWFkLnB1c2goTnIsZikscyl7Y29uc3QgZT1zLnN0YXR1c3x8cy5zdGF0dXNDb2RlO2lmKGUmJihzLnN0YXR1cz1zLnN0YXR1c0NvZGU9TnVtYmVyLnBhcnNlSW50KGUpKSwic3RyaW5nIj09dHlwZW9mIHMuZGF0YSl0cnl7cy5kYXRhPWMocy5kYXRhKX1jYXRjaHt9IWZ1bmN0aW9uKGUsdCl7ZS5lcnJvcj0hMCxlLnBheWxvYWQ9e2Vycm9yOnR9LGUudXJsPXQudXJsfShpLHMpfWNvbnN0IGc9dShlKSxtPSFpLm5vU1NSJiZmYWxzZSx5PSFtfHxmYWxzZSx2PSEhbSYmZW8udGVzdChpLnVybCk7aWYodil7Y29uc3QgdD1pLnVybC5zdWJzdHJpbmcoMCxpLnVybC5sYXN0SW5kZXhPZigiLyIpKXx8Ii8iO2kudXJsPXQsZS5fcGF0aD1lLm5vZGUucmVxLnVybD10fSExPT09Zy5zc3ImJihpLm5vU1NSPSEwKTtjb25zdCBfPW0/cChpLnJ1bnRpbWVDb25maWcuYXBwLmNkblVSTHx8aS5ydW50aW1lQ29uZmlnLmFwcC5iYXNlVVJMLGkudXJsLnJlcGxhY2UoL1w/LiokLywiIiksIl9wYXlsb2FkLmpzb24iKSsiPyIraS5ydW50aW1lQ29uZmlnLmFwcC5idWlsZElkOnZvaWQgMCxiPWF3YWl0IGZ1bmN0aW9uKGUpe3JldHVybiBlLm5vU1NSP0RyKCk6SXIoKX0oaSk7Zm9yKGNvbnN0IGUgb2YgWnIpaS5tb2R1bGVzLmFkZChlKTtjb25zdCBrPWF3YWl0IGIucmVuZGVyVG9TdHJpbmcoaSkuY2F0Y2goYXN5bmMgZT0+e2lmKChpWyJ+cmVuZGVyUmVzcG9uc2UiXXx8aS5fcmVuZGVyUmVzcG9uc2UpJiYic2tpcHBpbmcgcmVuZGVyIj09PWUubWVzc2FnZSlyZXR1cm57fTtjb25zdCB0PSFzJiZpLnBheWxvYWQ/LmVycm9yfHxlO3Rocm93IGF3YWl0KGkubnV4dD8uaG9va3MuY2FsbEhvb2soImFwcDplcnJvciIsdCkpLHR9KSxDPWlbIn5yZW5kZXJSZXNwb25zZSJdfHxpLl9yZW5kZXJSZXNwb25zZXx8dj9bXTphd2FpdCBhc3luYyBmdW5jdGlvbihlKXtjb25zdCB0PWF3YWl0IExyKCksbj1uZXcgU2V0O2Zvcihjb25zdCByIG9mIGUpaWYociBpbiB0JiZ0W3JdKWZvcihjb25zdCBlIG9mIGF3YWl0IHRbcl0oKSluLmFkZChlKTtyZXR1cm4gQXJyYXkuZnJvbShuKS5tYXAoZT0+KHtpbm5lckhUTUw6ZX0pKX0oaS5tb2R1bGVzPz9bXSk7aWYoYXdhaXQoaS5udXh0Py5ob29rcy5jYWxsSG9vaygiYXBwOnJlbmRlcmVkIix7c3NyQ29udGV4dDppLHJlbmRlclJlc3VsdDprfSkpLGlbIn5yZW5kZXJSZXNwb25zZSJdfHxpLl9yZW5kZXJSZXNwb25zZSlyZXR1cm4gaVsifnJlbmRlclJlc3BvbnNlIl18fGkuX3JlbmRlclJlc3BvbnNlO2lmKGkucGF5bG9hZD8uZXJyb3ImJiFzKXRocm93IGkucGF5bG9hZC5lcnJvcjtpZih2KXtjb25zdCBlPWZ1bmN0aW9uKGUpe3JldHVybntib2R5OmVuY29kZUZvcndhcmRTbGFzaGVzKHN0cmluZ2lmeShzcGxpdFBheWxvYWQoZSkucGF5bG9hZCxlWyJ+cGF5bG9hZFJlZHVjZXJzIl0pKSxzdGF0dXNDb2RlOm8oZS5ldmVudCksc3RhdHVzTWVzc2FnZTpyKGUuZXZlbnQpLGhlYWRlcnM6eyJjb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgiLCJ4LXBvd2VyZWQtYnkiOiJOdXh0In19fShpKTtyZXR1cm4gZX1jb25zdCBTPWcubm9TY3JpcHRzLHtzdHlsZXM6dyxzY3JpcHRzOlR9PWdldFJlcXVlc3REZXBlbmRlbmNpZXMoaSxiLnJlbmRlcmVyQ29udGV4dCk7IW18fHl8fFN8fGkuaGVhZC5wdXNoKHtsaW5rOlt7cmVsOiJwcmVsb2FkIixhczoiZmV0Y2giLGNyb3Nzb3JpZ2luOiJhbm9ueW1vdXMiLGhyZWY6X31dfSxmKSxDLmxlbmd0aCYmaS5oZWFkLnB1c2goe3N0eWxlOkN9KTtjb25zdCBSPVtdO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModykpUi5wdXNoKHtyZWw6InN0eWxlc2hlZXQiLGhyZWY6Yi5yZW5kZXJlckNvbnRleHQuYnVpbGRBc3NldHNVUkwoZS5maWxlKSxjcm9zc29yaWdpbjoiIn0pO2lmKFIubGVuZ3RoJiZpLmhlYWQucHVzaCh7bGluazpSfSxmKSwhUyl7aWYoaVsifmxhenlIeWRyYXRlZE1vZHVsZXMiXSlmb3IoY29uc3QgZSBvZiBpWyJ+bGF6eUh5ZHJhdGVkTW9kdWxlcyJdKWkubW9kdWxlcz8uZGVsZXRlKGUpO2kuaGVhZC5wdXNoKHtsaW5rOmdldFByZWxvYWRMaW5rcyhpLGIucmVuZGVyZXJDb250ZXh0KX0sZiksaS5oZWFkLnB1c2goe2xpbms6Z2V0UHJlZmV0Y2hMaW5rcyhpLGIucmVuZGVyZXJDb250ZXh0KX0sZiksaS5oZWFkLnB1c2goe3NjcmlwdDpyZW5kZXJQYXlsb2FkSnNvblNjcmlwdCh5P3tzc3JDb250ZXh0OmksZGF0YTppLnBheWxvYWR9Ontzc3JDb250ZXh0OmksZGF0YTpzcGxpdFBheWxvYWQoaSkuaW5pdGlhbCxzcmM6X30pfSx7Li4uZix0YWdQb3NpdGlvbjoiYm9keUNsb3NlIix0YWdQcmlvcml0eToiaGlnaCJ9KX1pZighZy5ub1NjcmlwdHMpe2NvbnN0IGU9ImhlYWQiO2kuaGVhZC5wdXNoKHtzY3JpcHQ6T2JqZWN0LnZhbHVlcyhUKS5tYXAodD0+KHt0eXBlOnQubW9kdWxlPyJtb2R1bGUiOm51bGwsc3JjOmIucmVuZGVyZXJDb250ZXh0LmJ1aWxkQXNzZXRzVVJMKHQuZmlsZSksZGVmZXI6IXQubW9kdWxlfHxudWxsLHRhZ1Bvc2l0aW9uOmUsY3Jvc3NvcmlnaW46IiJ9KSl9LGYpfWNvbnN0e2hlYWRUYWdzOkEsYm9keVRhZ3M6eCxib2R5VGFnc09wZW46RSxodG1sQXR0cnM6UCxib2R5QXR0cnM6JH09YXdhaXQgcmVuZGVyU1NSSGVhZChpLmhlYWQsR3IpLE89e2h0bWxBdHRyczpQP1tQXTpbXSxoZWFkOm5vcm1hbGl6ZUNodW5rcyhbQV0pLGJvZHlBdHRyczokP1skXTpbXSxib2R5UHJlcGVuZDpub3JtYWxpemVDaHVua3MoW0UsaS50ZWxlcG9ydHM/LmJvZHldKSxib2R5OltrLmh0bWwsWXIrKFhyP2pvaW5UYWdzKFtpLnRlbGVwb3J0cz8uW2AjJHtIci5pZH1gXV0pOiIiKStRcl0sYm9keUFwcGVuZDpbeF19O3JldHVybiBhd2FpdCBuLmhvb2tzLmNhbGxIb29rKCJyZW5kZXI6aHRtbCIsTyx7ZXZlbnQ6ZX0pLHtib2R5OihOPU8sYDwhRE9DVFlQRSBodG1sPjxodG1sJHtqb2luQXR0cnMoTi5odG1sQXR0cnMpfT48aGVhZD4ke2pvaW5UYWdzKE4uaGVhZCl9PC9oZWFkPjxib2R5JHtqb2luQXR0cnMoTi5ib2R5QXR0cnMpfT4ke2pvaW5UYWdzKE4uYm9keVByZXBlbmQpfSR7am9pblRhZ3MoTi5ib2R5KX0ke2pvaW5UYWdzKE4uYm9keUFwcGVuZCl9PC9ib2R5PjwvaHRtbD5gKSxzdGF0dXNDb2RlOm8oZSksc3RhdHVzTWVzc2FnZTpyKGUpLGhlYWRlcnM6eyJjb250ZW50LXR5cGUiOiJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIsIngtcG93ZXJlZC1ieSI6Ik51eHQifX07dmFyIE59KTtmdW5jdGlvbiBub3JtYWxpemVDaHVua3MoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPW4/LnRyaW0oKTtlJiZ0LnB1c2goZSl9cmV0dXJuIHR9ZnVuY3Rpb24gam9pblRhZ3MoZSl7cmV0dXJuIGUuam9pbigiIil9ZnVuY3Rpb24gam9pbkF0dHJzKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/IiI6IiAiK2Uuam9pbigiICIpfWNvbnN0IG5vPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OnRvfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2V4cG9ydHtpc1JlZiBhcyBBLHdhdGNoRWZmZWN0IGFzIEIsSXQgYXMgQyxGdCBhcyBELGdldEN1cnJlbnRJbnN0YW5jZSBhcyBFLG1hcmtSYXcgYXMgRixjdXN0b21SZWYgYXMgRyxubyBhcyBILHJlZiBhcyBhLHNoYWxsb3dSZWYgYXMgYixjb21wdXRlZCBhcyBjLGRlZmluZUNvbXBvbmVudCBhcyBkLHJlYWN0aXZlIGFzIGUsc3NyUmVuZGVyQ29tcG9uZW50IGFzIGYsc3NyUmVuZGVyU2xvdCBhcyBnLGgsaW5qZWN0IGFzIGksc3NyUmVuZGVyQ2xhc3MgYXMgaixyZW5kZXJWTm9kZSBhcyBrLHVzZUhlYWQgYXMgbCxfciBhcyBtLG5leHRUaWNrIGFzIG4sc3NyUmVuZGVyQXR0cnMgYXMgbyxwcm92aWRlIGFzIHAsc3NySW50ZXJwb2xhdGUgYXMgcSx2ciBhcyByLHNoYWxsb3dSZWFjdGl2ZSBhcyBzLHNzclJlbmRlckxpc3QgYXMgdCx1bnJlZiBhcyB1LHNzclJlbmRlclN1c3BlbnNlIGFzIHYsd2F0Y2ggYXMgdyxjcmVhdGVIb29rcyBhcyB4LHNzclJlbmRlclN0eWxlIGFzIHksc3NyUmVuZGVyQXR0ciBhcyB6fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVuZGVyZXIubWpzLm1hcAo=", "chunks/tasks/remindStale.mjs": "aW1wb3J0e2FBIGFzIG99ZnJvbSIuLi9uaXRyby9uaXRyby5tanMiO2ltcG9ydHtoIGFzIHR9ZnJvbSIuLi9fL3RpY2tldC5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjtpbXBvcnQiLi4vXy91c2VyLWVtYWlsLm1qcyI7aW1wb3J0Ii4uL18vbm90aWZpY2F0aW9uLm1qcyI7Y29uc3Qgcj1vKCIwICogKiAqICoiLHttZXRhOntuYW1lOiJzdXBwb3J0OnJlbWluZFN0YWxlIixkZXNjcmlwdGlvbjoiRW1haWwgdXNlcnMgd2hvIGhhdmUgbm90IHJlcGxpZWQgdG8gYSBzdXBwb3J0IGFnZW50IGluIDI0aC4ifSxydW46YXN5bmMoKT0+KHtyZXN1bHQ6YXdhaXQgdCgpfSl9KTtleHBvcnR7ciBhcyBkZWZhdWx0fTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVtaW5kU3RhbGUubWpzLm1hcAo=", "chunks/tasks/users.mjs": "aW1wb3J0e2QgYXMgZSxhbSBhcyBzLGUgYXMgaSxoIGFzIHQsdSBhcyBhLGkgYXMgcixhQiBhcyBvfWZyb20iLi4vbml0cm8vbml0cm8ubWpzIjtpbXBvcnR7QSBhcyBufWZyb20iLi4vXy9vcmdhbml6YXRpb24ubWpzIjtpbXBvcnR7UyBhcyBtLGIgYXMgZCxzIGFzIGN9ZnJvbSIuLi9fL3NlZWQubWpzIjtpbXBvcnQibm9kZTpidWZmZXIiO2ltcG9ydCJub2RlOnByb2Nlc3MiO2ltcG9ydCJjbG91ZGZsYXJlOndvcmtlcnMiO2ltcG9ydCJub2RlOmV2ZW50cyI7aW1wb3J0Im5vZGU6dGltZXJzIjtpbXBvcnQibm9kZTphc3luY19ob29rcyI7YXN5bmMgZnVuY3Rpb24gZW5zdXJlT3JnKHMsYSxyPXt9KXtjb25zdFtvXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oaSkud2hlcmUodChpLnNsdWcscykpLmxpbWl0KDEpO2lmKG8pcmV0dXJuIG87Y29uc3Rbbl09YXdhaXQgZS5pbnNlcnQoaSkudmFsdWVzKHtzbHVnOnMsbmFtZTphLGlzX3N5c3RlbTohIXIuaXNfc3lzdGVtfSkucmV0dXJuaW5nKCk7cmV0dXJuIG59YXN5bmMgZnVuY3Rpb24gdXBzZXJ0TWVtYmVyKHMsaSxvKXtjb25zdFtuXT1hd2FpdCBlLnNlbGVjdCgpLmZyb20oYSkud2hlcmUodChhLnByaW1hcnlfZW1haWwscykpLmxpbWl0KDEpO24mJmF3YWl0IGUuaW5zZXJ0KHIpLnZhbHVlcyh7dXNlcl9pZDpuLmlkLG9yZ2FuaXphdGlvbl9pZDppLGFiaWxpdGllczpbLi4ub119KS5vbkNvbmZsaWN0RG9VcGRhdGUoe3RhcmdldDpbci51c2VyX2lkLHIub3JnYW5pemF0aW9uX2lkXSxzZXQ6e2FiaWxpdGllczpbLi4ub119fSl9Y29uc3QgdT1vKHttZXRhOntuYW1lOiJzZWVkOnVzZXJzIixkZXNjcmlwdGlvbjoiU2VlZCBjYXRhbG9nLCB1c2Vycywgc3lzdGVtIG9yZywgYW5kIERlbW8gb3JnLiJ9LHJ1bjphc3luYygpPT57Y29uc3QgaT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe2NvbnN0IGk9bigpO2Zvcihjb25zdCB0IG9mIGkpYXdhaXQgZS5pbnNlcnQocykudmFsdWVzKHtrZXk6dC5rZXksc3ViamVjdDp0LnN1YmplY3QsYWN0aW9uOnQuYWN0aW9uLHNjb3BlOnQuc2NvcGUsb3JnX2tpbmQ6dC5vcmdfa2luZCxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufSkub25Db25mbGljdERvVXBkYXRlKHt0YXJnZXQ6cy5rZXksc2V0OntzdWJqZWN0OnQuc3ViamVjdCxhY3Rpb246dC5hY3Rpb24sc2NvcGU6dC5zY29wZSxvcmdfa2luZDp0Lm9yZ19raW5kLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb259fSk7cmV0dXJuIGkubGVuZ3RofSgpLHQ9YXdhaXQgYygpLGE9YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtjb25zdCBlPWF3YWl0IGVuc3VyZU9yZygic3lzdGVtIiwiU3lzdGVtIix7aXNfc3lzdGVtOiEwfSk7cmV0dXJuIGF3YWl0IHVwc2VydE1lbWJlcigiYWRtaW5Ac2VlZC5sb2NhbCIsZS5pZCxtLmFkbWluKSxhd2FpdCB1cHNlcnRNZW1iZXIoImFkbWluQGRlbW8ubG9jYWwiLGUuaWQsbS5hZG1pbiksZS5pZH0oKSxyPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1hd2FpdCBlbnN1cmVPcmcoImRlbW8iLCJEZW1vIE9yZ2FuaXphdGlvbiIpO3JldHVybiBhd2FpdCB1cHNlcnRNZW1iZXIoImFkbWluQHNlZWQubG9jYWwiLGUuaWQsZC5hZG1pbiksYXdhaXQgdXBzZXJ0TWVtYmVyKCJhbGljZUBzZWVkLmxvY2FsIixlLmlkLGQubWVtYmVyKSxhd2FpdCB1cHNlcnRNZW1iZXIoImJvYkBzZWVkLmxvY2FsIixlLmlkLGQuZ3Vlc3QpLGF3YWl0IHVwc2VydE1lbWJlcigiYWRtaW5AZGVtby5sb2NhbCIsZS5pZCxkLmFkbWluKSxhd2FpdCB1cHNlcnRNZW1iZXIoInVzZXJAZGVtby5sb2NhbCIsZS5pZCxkLm1lbWJlciksZS5pZH0oKTtyZXR1cm57cmVzdWx0OiJvayIscGVybWlzc2lvbnM6aSx1c2Vyczp0Lm1hcChlPT5lLnByaW1hcnlfZW1haWwpLHN5c3RlbU9yZ0lkOmEsZGVtb09yZ0lkOnJ9fX0pO2V4cG9ydHt1IGFzIGRlZmF1bHR9OwovLyMgc291cmNlTWFwcGluZ1VSTD11c2Vycy5tanMubWFwCg==", "chunks/virtual/_virtual_spa-template.mjs": "Y29uc3Qgbz0iIjtleHBvcnR7byBhcyB0ZW1wbGF0ZX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPV92aXJ0dWFsX3NwYS10ZW1wbGF0ZS5tanMubWFwCg==", "index.mjs": "Z2xvYmFsVGhpcy5faW1wb3J0TWV0YV89e3VybDoiZmlsZTovLy9fZW50cnkuanMiLGVudjp7fX07ZXhwb3J0e2FfIGFzIGRlZmF1bHR9ZnJvbSIuL2NodW5rcy9uaXRyby9uaXRyby5tanMiO2ltcG9ydCJub2RlOmJ1ZmZlciI7aW1wb3J0Im5vZGU6cHJvY2VzcyI7aW1wb3J0ImNsb3VkZmxhcmU6d29ya2VycyI7aW1wb3J0Im5vZGU6ZXZlbnRzIjtpbXBvcnQibm9kZTp0aW1lcnMiO2ltcG9ydCJub2RlOmFzeW5jX2hvb2tzIjsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcAo=" }, "assets": { "/_headers": "L19udXh0L2J1aWxkcy9tZXRhLyoKICBjYWNoZS1jb250cm9sOiBwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDAsIGltbXV0YWJsZQovX251eHQvYnVpbGRzLyoKICBjYWNoZS1jb250cm9sOiBwdWJsaWMsIG1heC1hZ2U9MSwgaW1tdXRhYmxlCi9fZm9udHMvKgogIGNhY2hlLWNvbnRyb2w6IHB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCwgaW1tdXRhYmxlCi9fc2NyaXB0cy8qCiAgY2FjaGUtY29udHJvbDogcHVibGljLCBtYXgtYWdlPTMxNTM2MDAwLCBpbW11dGFibGUKL19udXh0LyoKICBjYWNoZS1jb250cm9sOiBwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDAsIGltbXV0YWJsZQovKgogIFJlZmVycmVyLVBvbGljeTogbm8tcmVmZXJyZXIKICBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5OiBtYXgtYWdlPTE1NTUyMDAwOyBpbmNsdWRlU3ViRG9tYWluczsgcHJlbG9hZAogIFgtQ29udGVudC1UeXBlLU9wdGlvbnM6IG5vc25pZmYKICBYLURvd25sb2FkLU9wdGlvbnM6IG5vb3BlbgogIFgtRnJhbWUtT3B0aW9uczogU0FNRU9SSUdJTgogIFgtUGVybWl0dGVkLUNyb3NzLURvbWFpbi1Qb2xpY2llczogbm9uZQogIFgtWFNTLVByb3RlY3Rpb246IDA=", "/_nuxt/1DIkByMd.js": "aW1wb3J0e2YgYXMgZSxvIGFzIG4sYyBhcyBvfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3Qgcz1lKHtfX25hbWU6ImluZGV4IixzZXR1cCh0KXtyZXR1cm4oYSxjKT0+KG4oKSxvKCJkaXYiKSl9fSk7ZXhwb3J0e3MgYXMgZGVmYXVsdH07Cg==", "/_nuxt/4lHmyHbH.js": "aW1wb3J0e2FoIGFzIHRlLGF4IGFzIG9lLEogYXMgYWUsYnEgYXMgZGUsYUYgYXMgTSxhaSBhcyBpZSxhWCBhcyB1ZSxhQiBhcyBjZSxvIGFzIHIsYyBhcyBiLGIgYXMgdSx3IGFzIG4sTCBhcyBmLGggYXMgZCxrIGFzIFMsTSBhcyBvLGksSSBhcyBnZSxhYSBhcyB5LHYgYXMgcCxidCBhcyBJLGEgYXMgWixkIGFzIEUsdCBhcyBSLEYgYXMgTyxxIGFzIEssYnYgYXMgZmUsYWMgYXMgbWUsSCBhcyBiZSxhYiBhcyB5ZSxBIGFzIGxlLGJDIGFzIHBlLGJWIGFzIGhlLGJXIGFzIHhlLGF2IGFzIEcsYXcgYXMgSCxsIGFzIFQsYUcgYXMgSixiOCBhcyByZSxyIGFzIHZlLGI2IGFzIEllLFUgYXMga2UsSyBhcyBMZSxhaiBhcyBUZSxXIGFzIF8sTiBhcyBlZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIHFlLEQgYXMgZyxiIGFzIHdlLGMgYXMgemUsZCBhcyBTZX1mcm9tIi4vQ1lhbXpMbTUuanMiO2ltcG9ydHthIGFzIE9lfWZyb20iLi9CN3M1cGpqUi5qcyI7Y29uc3Qgc2U9e19fbmFtZToiVURyb3Bkb3duTWVudUNvbnRlbnQiLHByb3BzOntpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITB9LHN1Yjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkZXNjcmlwdGlvbktleTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxjaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbEljb246e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITB9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZmlsdGVyOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGZpbHRlckZpZWxkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saWdub3JlRmlsdGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNlYXJjaFRlcm06e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSx1aU92ZXJyaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTpzZWFyY2hUZXJtIiwiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDpWfSl7Y29uc3QgbD1lLCQ9Vix2PXRlKCkse3Q6cSxkaXI6VX09b2UoKSxoPWFlKCkse2ZpbHRlckdyb3VwczpOfT1PZSgpLEI9dmUoIiIpLG09VCh7Z2V0OigpPT5sLnNlYXJjaFRlcm0/P0IudmFsdWUsc2V0OnM9PntCLnZhbHVlPXMsJCgidXBkYXRlOnNlYXJjaFRlcm0iLHMpfX0pLFc9TSgoKT0+SihsLmZpbHRlcix7cGxhY2Vob2xkZXI6cSgiZHJvcGRvd25NZW51LnNlYXJjaCIpLHZhcmlhbnQ6Im5vbmUifSkpLHc9ZGUoTSgoKT0+bC5wb3J0YWwpKSxGPWllKHVlKGwsInN1YiIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWxLZXkiLCJkZXNjcmlwdGlvbktleSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJzaXplIiwiZmlsdGVyIiwiZmlsdGVyRmllbGRzIiwiaWdub3JlRmlsdGVyIiwic2VhcmNoVGVybSIsImNsYXNzIiwidWkiLCJ1aU92ZXJyaWRlIiksJCksQT0oKT0+cmUodixbImRlZmF1bHQiXSksW2osa109Y2UoKSxQPVQoKCk9PlUudmFsdWU9PT0icnRsIj9oLnVpLmljb25zLmNoZXZyb25MZWZ0OmgudWkuaWNvbnMuY2hldnJvblJpZ2h0KSxDPVQoKCk9PmwuaXRlbXM/Lmxlbmd0aD9JZShsLml0ZW1zKT9sLml0ZW1zOltsLml0ZW1zXTpbXSksWD1zPT4hIXMudHlwZSYmWyJsYWJlbCIsInNlcGFyYXRvciJdLmluY2x1ZGVzKHMudHlwZSksUT1UKCgpPT57aWYoIWwuZmlsdGVyfHxsLmlnbm9yZUZpbHRlcnx8IW0udmFsdWUpcmV0dXJuIEMudmFsdWU7Y29uc3Qgcz1BcnJheS5pc0FycmF5KGwuZmlsdGVyRmllbGRzKSYmbC5maWx0ZXJGaWVsZHMubGVuZ3RoP2wuZmlsdGVyRmllbGRzOltsLmxhYmVsS2V5XTtyZXR1cm4gTihDLnZhbHVlLG0udmFsdWUse2ZpZWxkczpzLGlzU3RydWN0dXJhbDpYfSl9KSxZPVQoKCk9PlEudmFsdWUuc29tZShzPT5zLnNvbWUoTD0+IVgoTCkpKSk7cmV0dXJuKHMsTCk9PihyKCksYihPLG51bGwsW3UoaShqKSxudWxsLHtkZWZhdWx0Om4oKHtpdGVtOnQsYWN0aXZlOmMsaW5kZXg6YX0pPT5bZihzLiRzbG90cyx0LnNsb3R8fCJpdGVtIix7aXRlbTp0LGluZGV4OmEsdWk6ZS51aX0sKCk9PltmKHMuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOnQsYWN0aXZlOmMsaW5kZXg6YSx1aTplLnVpfSwoKT0+W3QubG9hZGluZz8ocigpLGQoUyx7a2V5OjAsbmFtZTplLmxvYWRpbmdJY29ufHxpKGgpLnVpLmljb25zLmxvYWRpbmcsImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nSWNvbiIsY2xhc3M6byhlLnVpLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbUxlYWRpbmdJY29uLHQudWk/Lml0ZW1MZWFkaW5nSWNvbl0sY29sb3I6dD8uY29sb3IsbG9hZGluZzohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTp0Lmljb24/KHIoKSxkKFMse2tleToxLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOm8oZS51aS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nSWNvbix0LnVpPy5pdGVtTGVhZGluZ0ljb25dLGNvbG9yOnQ/LmNvbG9yLGFjdGl2ZTpjfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnQuYXZhdGFyPyhyKCksZChnZSx5KHtrZXk6MixzaXplOnQudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZS51aU92ZXJyaWRlPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUudWkuaXRlbUxlYWRpbmdBdmF0YXJTaXplKCl9LHQuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOmUudWkuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MZWFkaW5nQXZhdGFyLHQudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXSxhY3RpdmU6Y30pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6cCgiIiwhMCldKSxpKEkpKHQsbC5sYWJlbEtleSl8fHZbdC5zbG90P2Ake3Quc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fGkoSSkodCxsLmRlc2NyaXB0aW9uS2V5KXx8dlt0LnNsb3Q/YCR7dC5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8ocigpLGIoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOm8oZS51aS5pdGVtV3JhcHBlcih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbVdyYXBwZXIsdC51aT8uaXRlbVdyYXBwZXJdfSkpfSxbWigic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOm8oZS51aS5pdGVtTGFiZWwoe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MYWJlbCx0LnVpPy5pdGVtTGFiZWxdLGFjdGl2ZTpjfSkpfSxbZihzLiRzbG90cyx0LnNsb3Q/YCR7dC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOnQsYWN0aXZlOmMsaW5kZXg6YX0sKCk9PltFKFIoaShJKSh0LGwubGFiZWxLZXkpKSwxKV0pLHQudGFyZ2V0PT09Il9ibGFuayImJmUuZXh0ZXJuYWxJY29uIT09ITE/KHIoKSxkKFMse2tleTowLG5hbWU6dHlwZW9mIGUuZXh0ZXJuYWxJY29uPT0ic3RyaW5nIj9lLmV4dGVybmFsSWNvbjppKGgpLnVpLmljb25zLmV4dGVybmFsLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxFeHRlcm5hbEljb24iLGNsYXNzOm8oZS51aS5pdGVtTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1MYWJlbEV4dGVybmFsSWNvbix0LnVpPy5pdGVtTGFiZWxFeHRlcm5hbEljb25dLGNvbG9yOnQ/LmNvbG9yLGFjdGl2ZTpjfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnAoIiIsITApXSwyKSxpKEkpKHQsbC5kZXNjcmlwdGlvbktleSl8fHZbdC5zbG90P2Ake3Quc2xvdH0tZGVzY3JpcHRpb25gOiJpdGVtLWRlc2NyaXB0aW9uIl0/KHIoKSxiKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6byhlLnVpLml0ZW1EZXNjcmlwdGlvbih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbURlc2NyaXB0aW9uLHQudWk/Lml0ZW1EZXNjcmlwdGlvbl19KSl9LFtmKHMuJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiIse2l0ZW06dCxhY3RpdmU6YyxpbmRleDphfSwoKT0+W0UoUihpKEkpKHQsbC5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTpwKCIiLCEwKV0sMikpOnAoIiIsITApLFooInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczpvKGUudWkuaXRlbVRyYWlsaW5nKHtjbGFzczpbZS51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmcsdC51aT8uaXRlbVRyYWlsaW5nXX0pKX0sW2Yocy4kc2xvdHMsdC5zbG90P2Ake3Quc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTp0LGFjdGl2ZTpjLGluZGV4OmEsdWk6ZS51aX0sKCk9Plt0LmNoaWxkcmVuPy5sZW5ndGg/KHIoKSxkKFMse2tleTowLG5hbWU6UC52YWx1ZSwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6byhlLnVpLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW1UcmFpbGluZ0ljb24sdC51aT8uaXRlbVRyYWlsaW5nSWNvbl0sY29sb3I6dD8uY29sb3IsYWN0aXZlOmN9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6dC5rYmRzPy5sZW5ndGg/KHIoKSxiKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0tiZHMiLGNsYXNzOm8oZS51aS5pdGVtVHJhaWxpbmdLYmRzKHtjbGFzczpbZS51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdLYmRzLHQudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSkpfSxbKHIoITApLGIoTyxudWxsLEsodC5rYmRzLCh4LHopPT4ocigpLGQocWUseSh7a2V5Onosc2l6ZTp0LnVpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ZS51aU92ZXJyaWRlPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8ZS51aS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sdHlwZW9mIHg9PSJzdHJpbmciP3t2YWx1ZTp4fTp4KSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6cCgiIiwhMCldKSx1KGkoZykuSXRlbUluZGljYXRvcix7ImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6bigoKT0+W3UoUyx7bmFtZTplLmNoZWNrZWRJY29ufHxpKGgpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczpvKGUudWkuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbVRyYWlsaW5nSWNvbix0LnVpPy5pdGVtVHJhaWxpbmdJY29uXSxjb2xvcjp0Py5jb2xvcn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86M30pLHUoaShnKS5Qb3J0YWwsRyhIKGkodykpKSx7ZGVmYXVsdDpuKCgpPT5bdShpKGZlKSxudWxsLHtkZWZhdWx0Om4oKCk9PlsocigpLGQobWUoZS5zdWI/aShnKS5TdWJDb250ZW50OmkoZykuQ29udGVudCkseSh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOmUudWkuY29udGVudCh7Y2xhc3M6W2UudWlPdmVycmlkZT8uY29udGVudCxsLmNsYXNzXX0pfSxpKEYpKSx7ZGVmYXVsdDpuKCgpPT5bZS5maWx0ZXI/KHIoKSxkKGkoZykuRmlsdGVyLHtrZXk6MCxtb2RlbFZhbHVlOm0udmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOkxbMV18fChMWzFdPXQ9Pm0udmFsdWU9dCksImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6bigoKT0+W3UoYmUseSh7YXV0b2ZvY3VzOiIiLGF1dG9jb21wbGV0ZToib2ZmIixzaXplOmUuc2l6ZX0sVy52YWx1ZSx7ImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczplLnVpLmlucHV0KHtjbGFzczplLnVpT3ZlcnJpZGU/LmlucHV0fSksb25DaGFuZ2U6TFswXXx8KExbMF09eWUoKCk9Pnt9LFsic3RvcCJdKSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pXSksXzoxfSw4LFsibW9kZWxWYWx1ZSJdKSk6cCgiIiwhMCksZihzLiRzbG90cywiY29udGVudC10b3AiLHtzdWI6ZS5zdWI/PyExfSksIW0udmFsdWV8fFkudmFsdWU/KHIoKSxiKCJkaXYiLHtrZXk6MSxyb2xlOiJwcmVzZW50YXRpb24iLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydCIsY2xhc3M6byhlLnVpLnZpZXdwb3J0KHtjbGFzczplLnVpT3ZlcnJpZGU/LnZpZXdwb3J0fSkpfSxbKHIoITApLGIoTyxudWxsLEsoUS52YWx1ZSwodCxjKT0+KHIoKSxkKGkoZykuR3JvdXAse2tleTpgZ3JvdXAtJHtjfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpvKGUudWkuZ3JvdXAoe2NsYXNzOmUudWlPdmVycmlkZT8uZ3JvdXB9KSl9LHtkZWZhdWx0Om4oKCk9PlsocighMCksYihPLG51bGwsSyh0LChhLHgpPT4ocigpLGIoTyx7a2V5OmBncm91cC0ke2N9LSR7eH1gfSxbYS50eXBlPT09ImxhYmVsIj8ocigpLGQoaShnKS5MYWJlbCx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpvKGUudWkubGFiZWwoe2NsYXNzOltlLnVpT3ZlcnJpZGU/LmxhYmVsLGEudWk/LmxhYmVsLGEuY2xhc3NdfSkpfSx7ZGVmYXVsdDpuKCgpPT5bdShpKGspLHtpdGVtOmEsaW5kZXg6eH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmEudHlwZT09PSJzZXBhcmF0b3IiPyhyKCksZChpKGcpLlNlcGFyYXRvcix7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6byhlLnVpLnNlcGFyYXRvcih7Y2xhc3M6W2UudWlPdmVycmlkZT8uc2VwYXJhdG9yLGEudWk/LnNlcGFyYXRvcixhLmNsYXNzXX0pKX0sbnVsbCw4LFsiY2xhc3MiXSkpOmE/LmNoaWxkcmVuPy5sZW5ndGg/KHIoKSxkKGkoZykuU3ViLHtrZXk6MixvcGVuOmEub3BlbiwiZGVmYXVsdC1vcGVuIjphLmRlZmF1bHRPcGVufSx7ZGVmYXVsdDpuKCgpPT5bdShpKGcpLlN1YlRyaWdnZXIse2FzOiJidXR0b24iLHR5cGU6ImJ1dHRvbiIsZGlzYWJsZWQ6YS5kaXNhYmxlZCwidGV4dC12YWx1ZSI6aShJKShhLGwubGFiZWxLZXkpLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpvKGUudWkuaXRlbSh7Y2xhc3M6W2UudWlPdmVycmlkZT8uaXRlbSxhLnVpPy5pdGVtLGEuY2xhc3NdLGNvbG9yOmE/LmNvbG9yfSkpfSx7ZGVmYXVsdDpuKCgpPT5bdShpKGspLHtpdGVtOmEsaW5kZXg6eH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoyfSwxMDMyLFsiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiXSksdShzZSx5KHtzdWI6IiIsY2xhc3M6YS51aT8uY29udGVudCx1aTplLnVpLCJ1aS1vdmVycmlkZSI6ZS51aU92ZXJyaWRlLHBvcnRhbDplLnBvcnRhbCxpdGVtczphLmNoaWxkcmVuLGFsaWduOiJzdGFydCIsImFsaWduLW9mZnNldCI6LTQsInNpZGUtb2Zmc2V0IjozLCJsYWJlbC1rZXkiOmUubGFiZWxLZXksImRlc2NyaXB0aW9uLWtleSI6ZS5kZXNjcmlwdGlvbktleSwiY2hlY2tlZC1pY29uIjplLmNoZWNrZWRJY29uLCJsb2FkaW5nLWljb24iOmUubG9hZGluZ0ljb24sImV4dGVybmFsLWljb24iOmUuZXh0ZXJuYWxJY29uLHNpemU6ZS5zaXplLGZpbHRlcjphLmZpbHRlciwiZmlsdGVyLWZpZWxkcyI6YS5maWx0ZXJGaWVsZHN8fGUuZmlsdGVyRmllbGRzLCJpZ25vcmUtZmlsdGVyIjphLmlnbm9yZUZpbHRlcj8/ZS5pZ25vcmVGaWx0ZXJ9LHtyZWZfZm9yOiEwfSxhLmNvbnRlbnQpLGxlKHtfOjJ9LFtLKEEoKSwoeixEKT0+KHtuYW1lOkQsZm46bihuZT0+W2Yocy4kc2xvdHMsRCx5KHtyZWZfZm9yOiEwfSxuZSkpXSl9KSldKSwxMDQwLFsiY2xhc3MiLCJ1aSIsInVpLW92ZXJyaWRlIiwicG9ydGFsIiwiaXRlbXMiLCJsYWJlbC1rZXkiLCJkZXNjcmlwdGlvbi1rZXkiLCJjaGVja2VkLWljb24iLCJsb2FkaW5nLWljb24iLCJleHRlcm5hbC1pY29uIiwic2l6ZSIsImZpbHRlciIsImZpbHRlci1maWVsZHMiLCJpZ25vcmUtZmlsdGVyIl0pXSksXzoyfSwxMDMyLFsib3BlbiIsImRlZmF1bHQtb3BlbiJdKSk6YS50eXBlPT09ImNoZWNrYm94Ij8ocigpLGQoaShnKS5DaGVja2JveEl0ZW0se2tleTozLCJtb2RlbC12YWx1ZSI6YS5jaGVja2VkLGRpc2FibGVkOmEuZGlzYWJsZWQsInRleHQtdmFsdWUiOmkoSSkoYSxsLmxhYmVsS2V5KSwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6byhlLnVpLml0ZW0oe2NsYXNzOltlLnVpT3ZlcnJpZGU/Lml0ZW0sYS51aT8uaXRlbSxhLmNsYXNzXSxjb2xvcjphPy5jb2xvcn0pKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YS5vblVwZGF0ZUNoZWNrZWQsb25TZWxlY3Q6YS5vblNlbGVjdH0se2RlZmF1bHQ6bigoKT0+W3UoaShrKSx7aXRlbTphLGluZGV4Onh9LG51bGwsOCxbIml0ZW0iLCJpbmRleCJdKV0pLF86Mn0sMTAzMixbIm1vZGVsLXZhbHVlIiwiZGlzYWJsZWQiLCJ0ZXh0LXZhbHVlIiwiY2xhc3MiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwib25TZWxlY3QiXSkpOihyKCksZChwZSx5KHtrZXk6NCxyZWZfZm9yOiEwfSxpKGhlKShhKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6bigoe2FjdGl2ZTp6LC4uLkR9KT0+W3UoaShnKS5JdGVtLHsiYXMtY2hpbGQiOiIiLGRpc2FibGVkOmEuZGlzYWJsZWQsInRleHQtdmFsdWUiOmkoSSkoYSxsLmxhYmVsS2V5KSxvblNlbGVjdDphLm9uU2VsZWN0fSx7ZGVmYXVsdDpuKCgpPT5bdSh4ZSx5KHtyZWZfZm9yOiEwfSxELHsiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6ZS51aS5pdGVtKHtjbGFzczpbZS51aU92ZXJyaWRlPy5pdGVtLGEudWk/Lml0ZW0sYS5jbGFzc10sY29sb3I6YT8uY29sb3IsYWN0aXZlOnp9KX0pLHtkZWZhdWx0Om4oKCk9Plt1KGkoaykse2l0ZW06YSxhY3RpdmU6eixpbmRleDp4fSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImRpc2FibGVkIiwidGV4dC12YWx1ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKSldLDY0KSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOnAoIiIsITApLG0udmFsdWUmJiFZLnZhbHVlPyhyKCksYigiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpvKGUudWkuZW1wdHkoe2NsYXNzOmUudWlPdmVycmlkZT8uZW1wdHl9KSl9LFtmKHMuJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06bS52YWx1ZX0sKCk9PltFKFIoaShxKSgiZHJvcGRvd25NZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOm0udmFsdWV9KSksMSldKV0sMikpOnAoIiIsITApLGYocy4kc2xvdHMsImRlZmF1bHQiKSxmKHMuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIse3N1YjplLnN1Yj8/ITF9KV0pLF86M30sMTYsWyJjbGFzcyJdKSldKSxfOjN9KV0pLF86M30sMTYpXSw2NCkpfX0sS2U9e3Nsb3RzOntjb250ZW50OiJtaW4tdy0zMiBiZy1kZWZhdWx0IHNoYWRvdy1sZyByb3VuZGVkLW1kIHJpbmcgcmluZy1kZWZhdWx0IG92ZXJmbG93LWhpZGRlbiBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzY2FsZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pbl0gb3JpZ2luLSgtLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIGZsZXggZmxleC1jb2wiLGlucHV0OiJib3JkZXItYiBib3JkZXItZGVmYXVsdCIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLHZpZXdwb3J0OiJyZWxhdGl2ZSBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCBzY3JvbGwtcHktMSBvdmVyZmxvdy15LWF1dG8gZmxleC0xIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsZ3JvdXA6InAtMSBpc29sYXRlIixsYWJlbDoidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsc2VwYXJhdG9yOiItbXgtMSBteS0xIGgtcHggYmctYm9yZGVyIixpdGVtOiJncm91cCByZWxhdGl2ZSB3LWZ1bGwgZmxleCBpdGVtcy1zdGFydCBzZWxlY3Qtbm9uZSBvdXRsaW5lLW5vbmUgYmVmb3JlOmFic29sdXRlIGJlZm9yZTp6LVstMV0gYmVmb3JlOmluc2V0LXB4IGJlZm9yZTpyb3VuZGVkLW1kIGRhdGEtZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRhdGEtZGlzYWJsZWQ6b3BhY2l0eS03NSIsaXRlbUxlYWRpbmdJY29uOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdBdmF0YXI6InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhclNpemU6IiIsaXRlbVRyYWlsaW5nOiJtcy1hdXRvIGlubGluZS1mbGV4IGdhcC0xLjUgaXRlbXMtY2VudGVyIixpdGVtVHJhaWxpbmdJY29uOiJzaHJpbmstMCIsaXRlbVRyYWlsaW5nS2JkczoiaGlkZGVuIGxnOmlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzaHJpbmstMCIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6IiIsaXRlbVdyYXBwZXI6ImZsZXgtMSBmbGV4IGZsZXgtY29sIHRleHQtc3RhcnQgbWluLXctMCIsaXRlbUxhYmVsOiJ0cnVuY2F0ZSIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIixpdGVtTGFiZWxFeHRlcm5hbEljb246ImlubGluZS1ibG9jayBzaXplLTMgYWxpZ24tdG9wIHRleHQtZGltbWVkIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSxhY3RpdmU6e3RydWU6e2l0ZW06InRleHQtaGlnaGxpZ2h0ZWQgYmVmb3JlOmJnLWVsZXZhdGVkIixpdGVtTGVhZGluZ0ljb246InRleHQtZGVmYXVsdCJ9LGZhbHNlOntpdGVtOlsidGV4dC1kZWZhdWx0IGRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1oaWdobGlnaHRlZCBkYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWhpZ2hsaWdodGVkIGRhdGEtaGlnaGxpZ2h0ZWQ6YmVmb3JlOmJnLWVsZXZhdGVkLzUwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1lbGV2YXRlZC81MCIsInRyYW5zaXRpb24tY29sb3JzIGJlZm9yZTp0cmFuc2l0aW9uLWNvbG9ycyJdLGl0ZW1MZWFkaW5nSWNvbjpbInRleHQtZGltbWVkIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6dGV4dC1kZWZhdWx0IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl19fSxsb2FkaW5nOnt0cnVlOntpdGVtTGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSxzaXplOnt4czp7bGFiZWw6InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsZW1wdHk6InAtMiB0ZXh0LXhzIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6InNtIn0sc206e2xhYmVsOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW06InAtMS41IHRleHQteHMgZ2FwLTEuNSIsZW1wdHk6InAtMi41IHRleHQteHMiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToic20ifSxtZDp7bGFiZWw6InAtMS41IHRleHQtc20gZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC1zbSBnYXAtMS41IixlbXB0eToicC0yLjUgdGV4dC1zbSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTUiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiMnhzIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJtZCJ9LGxnOntsYWJlbDoicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW06InAtMiB0ZXh0LXNtIGdhcC0yIixlbXB0eToicC0zIHRleHQtc20iLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6Im1kIn0seGw6e2xhYmVsOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixlbXB0eToicC0zIHRleHQtYmFzZSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTYiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToieHMiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNiIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTEiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJsZyJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5IixhY3RpdmU6ITEsY2xhc3M6e2l0ZW06InRleHQtcHJpbWFyeSBkYXRhLWhpZ2hsaWdodGVkOnRleHQtcHJpbWFyeSBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1wcmltYXJ5LzEwIGRhdGEtW3N0YXRlPW9wZW5dOmJlZm9yZTpiZy1wcmltYXJ5LzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtcHJpbWFyeS83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtcHJpbWFyeSBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLGFjdGl2ZTohMSxjbGFzczp7aXRlbToidGV4dC1zZWNvbmRhcnkgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXNlY29uZGFyeSBkYXRhLWhpZ2hsaWdodGVkOmJlZm9yZTpiZy1zZWNvbmRhcnkvMTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLXNlY29uZGFyeS8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXNlY29uZGFyeS83NSBncm91cC1kYXRhLWhpZ2hsaWdodGVkOnRleHQtc2Vjb25kYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LXN1Y2Nlc3MgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXN1Y2Nlc3MgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6Ymctc3VjY2Vzcy8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6Ymctc3VjY2Vzcy8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXN1Y2Nlc3MvNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXN1Y2Nlc3MgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1zdWNjZXNzIn19LHtjb2xvcjoiaW5mbyIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LWluZm8gZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWluZm8gZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6YmctaW5mby8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctaW5mby8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LWluZm8vNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWluZm8gZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsYWN0aXZlOiExLGNsYXNzOntpdGVtOiJ0ZXh0LXdhcm5pbmcgZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXdhcm5pbmcgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6Ymctd2FybmluZy8xMCBkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6Ymctd2FybmluZy8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXdhcm5pbmcvNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LXdhcm5pbmcgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLGFjdGl2ZTohMSxjbGFzczp7aXRlbToidGV4dC1lcnJvciBkYXRhLWhpZ2hsaWdodGVkOnRleHQtZXJyb3IgZGF0YS1oaWdobGlnaHRlZDpiZWZvcmU6YmctZXJyb3IvMTAgZGF0YS1bc3RhdGU9b3Blbl06YmVmb3JlOmJnLWVycm9yLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtZXJyb3IvNzUgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDp0ZXh0LWVycm9yIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZXJyb3IifX0se2NvbG9yOiJwcmltYXJ5IixhY3RpdmU6ITAsY2xhc3M6e2l0ZW06InRleHQtcHJpbWFyeSBiZWZvcmU6YmctcHJpbWFyeS8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1zZWNvbmRhcnkgYmVmb3JlOmJnLXNlY29uZGFyeS8xMCIsaXRlbUxlYWRpbmdJY29uOiJ0ZXh0LXNlY29uZGFyeSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1zdWNjZXNzIGJlZm9yZTpiZy1zdWNjZXNzLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC1pbmZvIGJlZm9yZTpiZy1pbmZvLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtaW5mbyJ9fSx7Y29sb3I6Indhcm5pbmciLGFjdGl2ZTohMCxjbGFzczp7aXRlbToidGV4dC13YXJuaW5nIGJlZm9yZTpiZy13YXJuaW5nLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtd2FybmluZyJ9fSx7Y29sb3I6ImVycm9yIixhY3RpdmU6ITAsY2xhc3M6e2l0ZW06InRleHQtZXJyb3IgYmVmb3JlOmJnLWVycm9yLzEwIixpdGVtTGVhZGluZ0ljb246InRleHQtZXJyb3IifX1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQifX0sQWU9e19fbmFtZToiVURyb3Bkb3duTWVudSIscHJvcHM6Xyh7c2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbEljb246e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkZXNjcmlwdGlvbiJ9LGZpbHRlcjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGZpbHRlckZpZWxkczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saWdub3JlRmlsdGVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LHtzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxzZWFyY2hUZXJtTW9kaWZpZXJzOnt9fSksZW1pdHM6XyhbInVwZGF0ZTpvcGVuIl0sWyJ1cGRhdGU6c2VhcmNoVGVybSJdKSxzZXR1cChlLHtlbWl0OlZ9KXtjb25zdCBsPWUsJD1WLHY9dGUoKSxxPWtlKGUsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSksVT1hZSgpLGg9TGUoImRyb3Bkb3duTWVudSIsbCksTj1pZShUZShsLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJtb2RhbCIpLCQpLEI9TSgoKT0+SihsLmNvbnRlbnQse3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDo4LGNvbGxpc2lvblBhZGRpbmc6OH0pKSxtPU0oKCk9PkoobC5hcnJvdyx7cm91bmRlZDohMH0pKSxXPSgpPT5yZSh2LFsiZGVmYXVsdCJdKSx3PVQoKCk9PmVlKHtleHRlbmQ6ZWUoS2UpLC4uLlUudWk/LmRyb3Bkb3duTWVudXx8e319KSh7c2l6ZTpsLnNpemV9KSk7cmV0dXJuKEYsQSk9PihyKCksZChpKFNlKSxHKEgoaShOKSkpLHtkZWZhdWx0Om4oKHtvcGVuOmp9KT0+W3YuZGVmYXVsdD8ocigpLGQoaSh3ZSkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6byhsLmNsYXNzKSxkaXNhYmxlZDplLmRpc2FibGVkfSx7ZGVmYXVsdDpuKCgpPT5bZihGLiRzbG90cywiZGVmYXVsdCIse29wZW46an0pXSksXzoyfSwxMDMyLFsiY2xhc3MiLCJkaXNhYmxlZCJdKSk6cCgiIiwhMCksdShzZSx5KHsic2VhcmNoLXRlcm0iOnEudmFsdWUsIm9uVXBkYXRlOnNlYXJjaFRlcm0iOkFbMF18fChBWzBdPWs9PnEudmFsdWU9ayksY2xhc3M6dy52YWx1ZS5jb250ZW50KHtjbGFzczpbIXYuZGVmYXVsdCYmbC5jbGFzcyxpKGgpPy5jb250ZW50XX0pLHVpOncudmFsdWUsInVpLW92ZXJyaWRlIjppKGgpfSxCLnZhbHVlLHtpdGVtczplLml0ZW1zLHBvcnRhbDplLnBvcnRhbCwibGFiZWwta2V5IjplLmxhYmVsS2V5LCJkZXNjcmlwdGlvbi1rZXkiOmUuZGVzY3JpcHRpb25LZXksImNoZWNrZWQtaWNvbiI6ZS5jaGVja2VkSWNvbiwibG9hZGluZy1pY29uIjplLmxvYWRpbmdJY29uLCJleHRlcm5hbC1pY29uIjplLmV4dGVybmFsSWNvbixzaXplOmUuc2l6ZSxmaWx0ZXI6ZS5maWx0ZXIsImZpbHRlci1maWVsZHMiOmUuZmlsdGVyRmllbGRzLCJpZ25vcmUtZmlsdGVyIjplLmlnbm9yZUZpbHRlcn0pLGxlKHtkZWZhdWx0Om4oKCk9PltlLmFycm93PyhyKCksZChpKHplKSx5KHtrZXk6MH0sbS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczp3LnZhbHVlLmFycm93KHtjbGFzczppKGgpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTpwKCIiLCEwKV0pLF86Mn0sW0soVygpLChrLFApPT4oe25hbWU6UCxmbjpuKEM9PltmKEYuJHNsb3RzLFAsRyhIKEMpKSldKX0pKV0pLDEwNDAsWyJzZWFyY2gtdGVybSIsImNsYXNzIiwidWkiLCJ1aS1vdmVycmlkZSIsIml0ZW1zIiwicG9ydGFsIiwibGFiZWwta2V5IiwiZGVzY3JpcHRpb24ta2V5IiwiY2hlY2tlZC1pY29uIiwibG9hZGluZy1pY29uIiwiZXh0ZXJuYWwtaWNvbiIsInNpemUiLCJmaWx0ZXIiLCJmaWx0ZXItZmllbGRzIiwiaWdub3JlLWZpbHRlciJdKV0pLF86M30sMTYpKX19O2V4cG9ydHtBZSBhcyBffTsK", "/_nuxt/7cVSOCcu.js": "aW1wb3J0e2FoIGFzIHosSiBhcyB4LEsgYXMgeSxhRCBhcyBoLGFqIGFzIGcsbyBhcyB0LGggYXMgaSx3IGFzIGssYSBhcyBuLE0gYXMgbCxpIGFzIHIsYyBhcyBkLEYgYXMgcSxMIGFzIHcsdCBhcyBTLGsgYXMgQyxJIGFzIEIsYWEgYXMgYyx2IGFzIHUsbCBhcyBQLE4gYXMgYn1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtTIGFzIFZ9ZnJvbSIuL2RfME53UUxVLmpzIjtjb25zdCBGPXtzbG90czp7cm9vdDoiZmxleCBpdGVtcy1jZW50ZXIgYWxpZ24tY2VudGVyIHRleHQtY2VudGVyIixib3JkZXI6IiIsY29udGFpbmVyOiJmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQgZmxleCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IixhdmF0YXI6InNocmluay0wIixhdmF0YXJTaXplOiIyeHMiLGxhYmVsOiJ0ZXh0LXNtIn0sdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5Ontib3JkZXI6ImJvcmRlci1wcmltYXJ5In0sc2Vjb25kYXJ5Ontib3JkZXI6ImJvcmRlci1zZWNvbmRhcnkifSxzdWNjZXNzOntib3JkZXI6ImJvcmRlci1zdWNjZXNzIn0saW5mbzp7Ym9yZGVyOiJib3JkZXItaW5mbyJ9LHdhcm5pbmc6e2JvcmRlcjoiYm9yZGVyLXdhcm5pbmcifSxlcnJvcjp7Ym9yZGVyOiJib3JkZXItZXJyb3IifSxuZXV0cmFsOntib3JkZXI6ImJvcmRlci1kZWZhdWx0In19LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJ3LWZ1bGwgZmxleC1yb3ciLGJvcmRlcjoidy1mdWxsIixjb250YWluZXI6Im14LTMgd2hpdGVzcGFjZS1ub3dyYXAifSx2ZXJ0aWNhbDp7cm9vdDoiaC1mdWxsIGZsZXgtY29sIixib3JkZXI6ImgtZnVsbCIsY29udGFpbmVyOiJteS0yIn19LHNpemU6e3hzOiIiLHNtOiIiLG1kOiIiLGxnOiIiLHhsOiIifSx0eXBlOntzb2xpZDp7Ym9yZGVyOiJib3JkZXItc29saWQifSxkYXNoZWQ6e2JvcmRlcjoiYm9yZGVyLWRhc2hlZCJ9LGRvdHRlZDp7Ym9yZGVyOiJib3JkZXItZG90dGVkIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhzIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdCJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InNtIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bMnB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bM3B4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6ImxnIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNHB4XSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6InhsIixjbGFzczp7Ym9yZGVyOiJib3JkZXItdC1bNXB4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4cyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToic20iLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVsycHhdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6Im1kIixjbGFzczp7Ym9yZGVyOiJib3JkZXItcy1bM3B4XSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJsZyIsY2xhc3M6e2JvcmRlcjoiYm9yZGVyLXMtWzRweF0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToieGwiLGNsYXNzOntib3JkZXI6ImJvcmRlci1zLVs1cHhdIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJuZXV0cmFsIixzaXplOiJ4cyIsdHlwZToic29saWQifX0sRD17X19uYW1lOiJVU2VwYXJhdG9yIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWNvcmF0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBzPWUsZj16KCkscD14KCksbz15KCJzZXBhcmF0b3IiLHMpLHY9aChnKHMsImFzIiwiZGVjb3JhdGl2ZSIsIm9yaWVudGF0aW9uIikpLGE9UCgoKT0+Yih7ZXh0ZW5kOmIoRiksLi4ucC51aT8uc2VwYXJhdG9yfHx7fX0pKHtjb2xvcjpzLmNvbG9yLG9yaWVudGF0aW9uOnMub3JpZW50YXRpb24sc2l6ZTpzLnNpemUsdHlwZTpzLnR5cGV9KSk7cmV0dXJuKG0sTik9Pih0KCksaShyKFYpLGMocih2KSx7ImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmEudmFsdWUucm9vdCh7Y2xhc3M6W3Iobyk/LnJvb3Qscy5jbGFzc119KX0pLHtkZWZhdWx0OmsoKCk9PltuKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9yZGVyIixjbGFzczpsKGEudmFsdWUuYm9yZGVyKHtjbGFzczpyKG8pPy5ib3JkZXJ9KSl9LG51bGwsMiksZS5sYWJlbHx8ZS5pY29ufHxlLmF2YXRhcnx8Zi5kZWZhdWx0Pyh0KCksZChxLHtrZXk6MH0sW24oImRpdiIseyJkYXRhLXNsb3QiOiJjb250YWluZXIiLGNsYXNzOmwoYS52YWx1ZS5jb250YWluZXIoe2NsYXNzOnIobyk/LmNvbnRhaW5lcn0pKX0sW3cobS4kc2xvdHMsImRlZmF1bHQiLHt1aTphLnZhbHVlfSwoKT0+W2UubGFiZWw/KHQoKSxkKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpsKGEudmFsdWUubGFiZWwoe2NsYXNzOnIobyk/LmxhYmVsfSkpfSxTKGUubGFiZWwpLDMpKTplLmljb24/KHQoKSxpKEMse2tleToxLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpsKGEudmFsdWUuaWNvbih7Y2xhc3M6cihvKT8uaWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8odCgpLGkoQixjKHtrZXk6MixzaXplOnIobyk/LmF2YXRhclNpemV8fGEudmFsdWUuYXZhdGFyU2l6ZSgpfSxlLmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6YS52YWx1ZS5hdmF0YXIoe2NsYXNzOnIobyk/LmF2YXRhcn0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6dSgiIiwhMCldKV0sMiksbigiZGl2Iix7ImRhdGEtc2xvdCI6ImJvcmRlciIsY2xhc3M6bChhLnZhbHVlLmJvcmRlcih7Y2xhc3M6cihvKT8uYm9yZGVyfSkpfSxudWxsLDIpXSw2NCkpOnUoIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pKX19O2V4cG9ydHtEIGFzIF99Owo=", "/_nuxt/B1MeLri3.js": "aW1wb3J0e2FoIGFzIFMsYkEgYXMgeixKIGFzIEksSyBhcyBQLGJCIGFzIFYsUiBhcyBGLG8gYXMgcyxoLHcgYXMgQyxjLE0gYXMgbixpIGFzIHIsdiBhcyBnLGEgYXMgeCxMIGFzIGQsayBhcyBOLGQgYXMgayx0IGFzIHEsYkMgYXMgVCxhYSBhcyBqLGFFIGFzIEEsUCBhcyBFLGwgYXMgcCxOIGFzIHcsYkQgYXMgTyxyIGFzIFJ9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBEPXtzbG90czp7cm9vdDoicmVsYXRpdmUgZmxleCByb3VuZGVkLWxnIixzcG90bGlnaHQ6ImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1baW5oZXJpdF0gcG9pbnRlci1ldmVudHMtbm9uZSBiZy1kZWZhdWx0LzkwIixjb250YWluZXI6InJlbGF0aXZlIGZsZXggZmxleC1jb2wgZmxleC0xIGxnOmdyaWQgZ2FwLXgtOCBnYXAteS00IHAtNCBzbTpwLTYiLHdyYXBwZXI6ImZsZXggZmxleC1jb2wgZmxleC0xIGl0ZW1zLXN0YXJ0IixoZWFkZXI6Im1iLTQiLGJvZHk6ImZsZXgtMSIsZm9vdGVyOiJwdC00IG10LWF1dG8iLGxlYWRpbmc6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUgc2hyaW5rLTAgdGV4dC1wcmltYXJ5Iix0aXRsZToidGV4dC1iYXNlIHRleHQtcHJldHR5IGZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsZGVzY3JpcHRpb246InRleHQtWzE1cHhdIHRleHQtcHJldHR5In0sdmFyaWFudHM6e29yaWVudGF0aW9uOntob3Jpem9udGFsOntjb250YWluZXI6ImxnOmdyaWQtY29scy0yIGxnOml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntjb250YWluZXI6IiJ9fSxyZXZlcnNlOnt0cnVlOnt3cmFwcGVyOiJvcmRlci1sYXN0In19LHZhcmlhbnQ6e3NvbGlkOntyb290OiJiZy1pbnZlcnRlZCB0ZXh0LWludmVydGVkIix0aXRsZToidGV4dC1pbnZlcnRlZCIsZGVzY3JpcHRpb246InRleHQtZGltbWVkIn0sb3V0bGluZTp7cm9vdDoiYmctZGVmYXVsdCByaW5nIHJpbmctZGVmYXVsdCIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQifSxzb2Z0Ontyb290OiJiZy1lbGV2YXRlZC81MCIsZGVzY3JpcHRpb246InRleHQtdG9uZWQifSxzdWJ0bGU6e3Jvb3Q6ImJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1kZWZhdWx0IixkZXNjcmlwdGlvbjoidGV4dC10b25lZCJ9LGdob3N0OntkZXNjcmlwdGlvbjoidGV4dC1tdXRlZCJ9LG5ha2VkOntjb250YWluZXI6InAtMCBzbTpwLTAiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIn19LHRvOnt0cnVlOntyb290OlsiaGFzLWZvY3VzLXZpc2libGU6cmluZy0yIGhhcy1mb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSIsInRyYW5zaXRpb24iXX19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fSxoaWdobGlnaHQ6e3RydWU6e3Jvb3Q6InJpbmctMiJ9fSxoaWdobGlnaHRDb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sc3BvdGxpZ2h0Ont0cnVlOntyb290OiJbLS1zcG90bGlnaHQtc2l6ZTo0MDBweF0gYmVmb3JlOmFic29sdXRlIGJlZm9yZTotaW5zZXQtcHggYmVmb3JlOnBvaW50ZXItZXZlbnRzLW5vbmUgYmVmb3JlOnJvdW5kZWQtW2luaGVyaXRdIGJlZm9yZTpiZy1bcmFkaWFsLWdyYWRpZW50KHZhcigtLXNwb3RsaWdodC1zaXplKV92YXIoLS1zcG90bGlnaHQtc2l6ZSlfYXRfY2FsYyh2YXIoLS1zcG90bGlnaHQteCwwcHgpKV9jYWxjKHZhcigtLXNwb3RsaWdodC15LDBweCkpLHZhcigtLXNwb3RsaWdodC1jb2xvciksdHJhbnNwYXJlbnRfNzAlKV0ifX0sc3BvdGxpZ2h0Q29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7dmFyaWFudDoic29saWQiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1pbnZlcnRlZC85MCJ9fSx7dmFyaWFudDoib3V0bGluZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkLzUwIn19LHt2YXJpYW50OiJzb2Z0Iix0bzohMCxjbGFzczp7cm9vdDoiaG92ZXI6YmctZWxldmF0ZWQifX0se3ZhcmlhbnQ6InN1YnRsZSIsdG86ITAsY2xhc3M6e3Jvb3Q6ImhvdmVyOmJnLWVsZXZhdGVkIn19LHt2YXJpYW50OiJzdWJ0bGUiLHRvOiEwLGhpZ2hsaWdodDohMSxjbGFzczp7cm9vdDoiaG92ZXI6cmluZy1hY2NlbnRlZCJ9fSx7dmFyaWFudDoiZ2hvc3QiLHRvOiEwLGNsYXNzOntyb290OiJob3ZlcjpiZy1lbGV2YXRlZC81MCJ9fSx7aGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1wcmltYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctc2Vjb25kYXJ5In19LHtoaWdobGlnaHRDb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOntyb290OiJyaW5nLXN1Y2Nlc3MifX0se2hpZ2hsaWdodENvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6InJpbmctaW5mbyJ9fSx7aGlnaGxpZ2h0Q29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy13YXJuaW5nIn19LHtoaWdobGlnaHRDb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1lcnJvciJ9fSx7aGlnaGxpZ2h0Q29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczp7cm9vdDoicmluZy1pbnZlcnRlZCJ9fSx7c3BvdGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLXByaW1hcnkpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6InNlY29uZGFyeSIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KV0ifX0se3Nwb3RsaWdodENvbG9yOiJzdWNjZXNzIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKV0ifX0se3Nwb3RsaWdodENvbG9yOiJpbmZvIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1pbmZvKV0ifX0se3Nwb3RsaWdodENvbG9yOiJ3YXJuaW5nIixzcG90bGlnaHQ6ITAsY2xhc3M6e3Jvb3Q6IlstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKV0ifX0se3Nwb3RsaWdodENvbG9yOiJlcnJvciIsc3BvdGxpZ2h0OiEwLGNsYXNzOntyb290OiJbLS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktZXJyb3IpXSJ9fSx7c3BvdGxpZ2h0Q29sb3I6Im5ldXRyYWwiLHNwb3RsaWdodDohMCxjbGFzczp7cm9vdDoiWy0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKV0ifX1dLGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDoib3V0bGluZSIsaGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLHNwb3RsaWdodENvbG9yOiJwcmltYXJ5In19LE09T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVUGFnZUNhcmQiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0scmV2ZXJzZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Q29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3BvdGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNwb3RsaWdodENvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBvPXQsZT1TKCksdj1SKCksdT16KCksJD1JKCksbD1QKCJwYWdlQ2FyZCIsbykse2VsZW1lbnRYOmYsZWxlbWVudFk6eX09Vih2LHtldmVudEZpbHRlcjp1LmV2ZW50RmlsdGVyfSksbT1wKCgpPT5vLnNwb3RsaWdodCYmKGYudmFsdWUhPT0wfHx5LnZhbHVlIT09MCkpO0YoKCk9Pm8uc3BvdGxpZ2h0LGE9PnthP3UucmVzdW1lKCk6dS5wYXVzZSgpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgaT1wKCgpPT53KHtleHRlbmQ6dyhEKSwuLi4kLnVpPy5wYWdlQ2FyZHx8e319KSh7b3JpZW50YXRpb246by5vcmllbnRhdGlvbixyZXZlcnNlOm8ucmV2ZXJzZSx2YXJpYW50Om8udmFyaWFudCx0bzohIW8udG98fCEhby5vbkNsaWNrLHRpdGxlOiEhby50aXRsZXx8ISFlLnRpdGxlLGhpZ2hsaWdodDpvLmhpZ2hsaWdodCxoaWdobGlnaHRDb2xvcjpvLmhpZ2hsaWdodENvbG9yLHNwb3RsaWdodDptLnZhbHVlLHNwb3RsaWdodENvbG9yOm8uc3BvdGxpZ2h0Q29sb3J9KSksQj1wKCgpPT4oZS50aXRsZSYmTyhlLnRpdGxlKCkpfHxvLnRpdGxlfHwiQ2FyZCBsaW5rIikudHJpbSgpKTtyZXR1cm4oYSxiKT0+KHMoKSxoKHIoRSkse3JlZl9rZXk6ImNhcmRSZWYiLHJlZjp2LGFzOnQuYXMsImRhdGEtb3JpZW50YXRpb24iOnQub3JpZW50YXRpb24sImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOm4oaS52YWx1ZS5yb290KHtjbGFzczpbcihsKT8ucm9vdCxvLmNsYXNzXX0pKSxzdHlsZTpBKG0udmFsdWUmJnsiLS1zcG90bGlnaHQteCI6YCR7cihmKX1weGAsIi0tc3BvdGxpZ2h0LXkiOmAke3IoeSl9cHhgfSksb25DbGljazp0Lm9uQ2xpY2t9LHtkZWZhdWx0OkMoKCk9PltvLnNwb3RsaWdodD8ocygpLGMoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJzcG90bGlnaHQiLGNsYXNzOm4oaS52YWx1ZS5zcG90bGlnaHQoe2NsYXNzOnIobCk/LnNwb3RsaWdodH0pKX0sbnVsbCwyKSk6ZygiIiwhMCkseCgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6bihpLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6cihsKT8uY29udGFpbmVyfSkpfSxbZS5oZWFkZXJ8fHQuaWNvbnx8ZS5sZWFkaW5nfHxlLmJvZHl8fHQudGl0bGV8fGUudGl0bGV8fHQuZGVzY3JpcHRpb258fGUuZGVzY3JpcHRpb258fGUuZm9vdGVyPyhzKCksYygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOm4oaS52YWx1ZS53cmFwcGVyKHtjbGFzczpyKGwpPy53cmFwcGVyfSkpfSxbZS5oZWFkZXI/KHMoKSxjKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpuKGkudmFsdWUuaGVhZGVyKHtjbGFzczpyKGwpPy5oZWFkZXJ9KSl9LFtkKGEuJHNsb3RzLCJoZWFkZXIiKV0sMikpOmcoIiIsITApLHQuaWNvbnx8ZS5sZWFkaW5nPyhzKCksYygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOm4oaS52YWx1ZS5sZWFkaW5nKHtjbGFzczpyKGwpPy5sZWFkaW5nfSkpfSxbZChhLiRzbG90cywibGVhZGluZyIse3VpOmkudmFsdWV9LCgpPT5bdC5pY29uPyhzKCksaChOLHtrZXk6MCxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoibGVhZGluZ0ljb24iLGNsYXNzOm4oaS52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6cihsKT8ubGVhZGluZ0ljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZygiIiwhMCldKV0sMikpOmcoIiIsITApLGUuYm9keXx8dC50aXRsZXx8ZS50aXRsZXx8dC5kZXNjcmlwdGlvbnx8ZS5kZXNjcmlwdGlvbj8ocygpLGMoImRpdiIse2tleToyLCJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpuKGkudmFsdWUuYm9keSh7Y2xhc3M6cihsKT8uYm9keX0pKX0sW2QoYS4kc2xvdHMsImJvZHkiLHt9LCgpPT5bdC50aXRsZXx8ZS50aXRsZT8ocygpLGMoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ0aXRsZSIsY2xhc3M6bihpLnZhbHVlLnRpdGxlKHtjbGFzczpyKGwpPy50aXRsZX0pKX0sW2QoYS4kc2xvdHMsInRpdGxlIix7fSwoKT0+W2socSh0LnRpdGxlKSwxKV0pXSwyKSk6ZygiIiwhMCksdC5kZXNjcmlwdGlvbnx8ZS5kZXNjcmlwdGlvbj8ocygpLGMoImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6bihpLnZhbHVlLmRlc2NyaXB0aW9uKHtjbGFzczpyKGwpPy5kZXNjcmlwdGlvbn0pKX0sW2QoYS4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W2socSh0LmRlc2NyaXB0aW9uKSwxKV0pXSwyKSk6ZygiIiwhMCldKV0sMikpOmcoIiIsITApLGUuZm9vdGVyPyhzKCksYygiZGl2Iix7a2V5OjMsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6bihpLnZhbHVlLmZvb3Rlcih7Y2xhc3M6cihsKT8uZm9vdGVyfSkpfSxbZChhLiRzbG90cywiZm9vdGVyIildLDIpKTpnKCIiLCEwKV0sMikpOmcoIiIsITApLGQoYS4kc2xvdHMsImRlZmF1bHQiKV0sMiksdC50bz8ocygpLGgoVCxqKHtrZXk6MSwiYXJpYS1sYWJlbCI6Qi52YWx1ZX0se3RvOnQudG8sdGFyZ2V0OnQudGFyZ2V0LC4uLmEuJGF0dHJzfSx7Y2xhc3M6ImZvY3VzOm91dGxpbmUtbm9uZSBwZWVyIixyYXc6IiJ9KSx7ZGVmYXVsdDpDKCgpPT5bLi4uYlswXXx8KGJbMF09W3goInNwYW4iLHtjbGFzczoiYWJzb2x1dGUgaW5zZXQtMCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LG51bGwsLTEpXSldKSxfOjF9LDE2LFsiYXJpYS1sYWJlbCJdKSk6ZygiIiwhMCldKSxfOjN9LDgsWyJhcyIsImRhdGEtb3JpZW50YXRpb24iLCJjbGFzcyIsInN0eWxlIiwib25DbGljayJdKSl9fSk7ZXhwb3J0e00gYXMgX307Cg==", "/_nuxt/B7s5pjjR.js": "aW1wb3J0e2wgYXMgaCxpIGFzIEYsYnQgYXMgdn1mcm9tIi4vbzh0ZF9HMEouanMiO2Z1bmN0aW9uIEMoaSl7Y29uc3Qgcz1oKCgpPT5GKGkpKSxjPWgoKCk9Pm5ldyBJbnRsLkNvbGxhdG9yKCJlbiIse3VzYWdlOiJzZWFyY2giLC4uLnMudmFsdWV9KSk7cmV0dXJue3N0YXJ0c1dpdGg6KHQsZSk9PmUubGVuZ3RoPT09MD8hMDoodD10Lm5vcm1hbGl6ZSgiTkZDIiksZT1lLm5vcm1hbGl6ZSgiTkZDIiksYy52YWx1ZS5jb21wYXJlKHQuc2xpY2UoMCxlLmxlbmd0aCksZSk9PT0wKSxlbmRzV2l0aDoodCxlKT0+ZS5sZW5ndGg9PT0wPyEwOih0PXQubm9ybWFsaXplKCJORkMiKSxlPWUubm9ybWFsaXplKCJORkMiKSxjLnZhbHVlLmNvbXBhcmUodC5zbGljZSgtZS5sZW5ndGgpLGUpPT09MCksY29udGFpbnM6KHQsZSk9PntpZihlLmxlbmd0aD09PTApcmV0dXJuITA7dD10Lm5vcm1hbGl6ZSgiTkZDIiksZT1lLm5vcm1hbGl6ZSgiTkZDIik7bGV0IGw9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7bCtyPD10Lmxlbmd0aDtsKyspe2NvbnN0IG89dC5zbGljZShsLGwrcik7aWYoYy52YWx1ZS5jb21wYXJlKGUsbyk9PT0wKXJldHVybiEwfXJldHVybiExfX19ZnVuY3Rpb24gTigpe2NvbnN0e2NvbnRhaW5zOmksc3RhcnRzV2l0aDpzfT1DKHtzZW5zaXRpdml0eToiYmFzZSJ9KTtmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGkodCxlKT9pKGUsdCk/MDpzKHQsZSk/MToyOm51bGx9ZnVuY3Rpb24gZih0LGUsbCl7aWYodHlwZW9mIHQhPSJvYmplY3QifHx0PT09bnVsbClyZXR1cm4gYyhTdHJpbmcodCksZSk7bGV0IHI9bnVsbDtmb3IoY29uc3QgbyBvZiBsKXtjb25zdCBuPXYodCxvKTtpZihuPT1udWxsKWNvbnRpbnVlO2NvbnN0IHU9QXJyYXkuaXNBcnJheShuKT9uLm1hcChTdHJpbmcpOltTdHJpbmcobildO2Zvcihjb25zdCBkIG9mIHUpe2NvbnN0IGE9YyhkLGUpO2lmKGEhPT1udWxsJiYocj09PW51bGx8fGE8cikmJihyPWEpLHI9PT0wKXJldHVybiAwfX1yZXR1cm4gcn1mdW5jdGlvbiBwKHQsZSxsKXtpZighZSlyZXR1cm4gdDtjb25zdCByPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0IG49ZihvLGUsbCk7biE9PW51bGwmJnIucHVzaCh7aXRlbTpvLHNjb3JlOm59KX1yZXR1cm4gci5zb3J0KChvLG4pPT5vLnNjb3JlLW4uc2NvcmUpLHIubWFwKCh7aXRlbTpvfSk9Pm8pfWZ1bmN0aW9uIG0odCxlLGwpe3JldHVybiBlP3QubWFwKHI9Pntjb25zdCBvPVtdO2Zvcihjb25zdCBuIG9mIHIpe2lmKG49PW51bGwpY29udGludWU7aWYobC5pc1N0cnVjdHVyYWw/LihuKSl7by5wdXNoKHtpdGVtOm4sc2NvcmU6LTF9KTtjb250aW51ZX1jb25zdCB1PWYobixlLGwuZmllbGRzKTt1IT09bnVsbCYmby5wdXNoKHtpdGVtOm4sc2NvcmU6dX0pfXJldHVybiBvLnNvcnQoKG4sdSk9Pm4uc2NvcmUtdS5zY29yZSksby5tYXAoKHtpdGVtOm59KT0+bil9KS5maWx0ZXIocj0+ci5zb21lKG89PiFsLmlzU3RydWN0dXJhbD8uKG8pKSk6dH1yZXR1cm57c2NvcmU6YyxzY29yZUl0ZW06ZixmaWx0ZXI6cCxmaWx0ZXJHcm91cHM6bX19ZXhwb3J0e04gYXMgYSxDIGFzIHV9Owo=", "/_nuxt/BAuni-qd.js": "aW1wb3J0e2IkIGFzIHYsciBhcyBlfWZyb20iLi9vOHRkX0cwSi5qcyI7ZnVuY3Rpb24gZChmLG89e30pe2NvbnN0IGM9by5saW1pdD8/MjAscz1lKFtdKSx1PWUoIiIpLG49ZSgwKSxhPWUoITApLHQ9ZSghMSk7YXN5bmMgZnVuY3Rpb24gbCgpe2lmKCEodC52YWx1ZXx8IWEudmFsdWUpKXt0LnZhbHVlPSEwO3RyeXtjb25zdCBpPWF3YWl0IGYoe3E6dS52YWx1ZSxsaW1pdDpjLG9mZnNldDpuLnZhbHVlfSk7cy52YWx1ZS5wdXNoKC4uLmkuaXRlbXMpLG4udmFsdWUrPWkuaXRlbXMubGVuZ3RoLGEudmFsdWU9aS5oYXNNb3JlfWZpbmFsbHl7dC52YWx1ZT0hMX19fWZ1bmN0aW9uIHIoKXtzLnZhbHVlPVtdLG4udmFsdWU9MCxhLnZhbHVlPSEwfXJldHVybiB2KHUsYXN5bmMoKT0+e3IoKSxhd2FpdCBsKCl9LHtkZWJvdW5jZTozMDB9KSxvLmltbWVkaWF0ZSE9PSExJiZsKCkse2l0ZW1zOnMscTp1LGhhc01vcmU6YSxsb2FkaW5nOnQsbG9hZE1vcmU6bCxyZXNldDpyfX1leHBvcnR7ZCBhcyB1fTsK", "/_nuxt/BFONo63X.js": "aW1wb3J0e18gYXMgcX1mcm9tIi4vZ2hxWWJJU1QuanMiO2ltcG9ydHtfIGFzIE19ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnR7XyBhcyBVfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e2YgYXMgQSx1IGFzIEIsbiBhcyBELFEgYXMgeSxhUyBhcyBGLHggYXMgVixwIGFzICQseixhNCBhcyBILG8saCBhcyBnLHcgYXMgcCxhIGFzIHIsaSBhcyBhLGMgYXMgaSx2IGFzIGosRiBhcyBFLHEgYXMgUixNIGFzIEssdCBhcyBtLGIsZCBhcyBMLGFUIGFzIFAsbCBhcyBRLHIgYXMgayxhVSBhcyBHLGFIIGFzIEksYTEgYXMgSn1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtTIGFzIE99ZnJvbSIuL0JabE5OZms0LmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2NvbnN0IFc9U3ltYm9sKCJzdXBwb3J0VGlja2V0cyIpLFg9e2NsYXNzOiJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0zIGdhcC00IGgtW2NhbGMoMTAwdmgtOHJlbSldIn0sWT17Y2xhc3M6ImxnOmNvbC1zcGFuLTEgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3cteS1hdXRvIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In0sWj17a2V5OjAsY2xhc3M6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQifSxlZT1bIm9uQ2xpY2siXSx0ZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LHNlPXtjbGFzczoiZm9udC1tZWRpdW0gdHJ1bmNhdGUifSxhZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sb2U9e2NsYXNzOiJsZzpjb2wtc3Bhbi0yIGJvcmRlciBib3JkZXItZGVmYXVsdCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiJ9LHJlPXtrZXk6MSxjbGFzczoiaC1mdWxsIGdyaWQgcGxhY2UtaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZCJ9LHZlPUEoe19fbmFtZToic3VwcG9ydCIsYXN5bmMgc2V0dXAobmUpe2xldCBfLGY7Qih7dGl0bGU6Ik15IHJlcXVlc3RzIn0pO2NvbnN0IHY9RCgpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdOyh5KHYsInN1cHBvcnQ6bWFuYWdlIil8fHkodiwic3lzdGVtOm1hbmFnZSIpKSYmKFtfLGZdPUYoKCk9PkkoIi9zeXN0ZW0vdGlja2V0cyIpKSxhd2FpdCBfLGYoKSk7Y29uc3QgYz1QKCkseD1WKCkse2RhdGE6dyxlcnJvcjpTfT0kKCJzdXBwb3J0LXRpY2tldHMiLCgpPT5jLmZldGNoVGlja2V0cyh7bGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSl9KTt6KFMpO2NvbnN0IG49USgoKT0+dy52YWx1ZS5pdGVtcyksZT1rKG51bGwpLGw9ayghMSk7YXN5bmMgZnVuY3Rpb24gZChzKXtlLnZhbHVlPWF3YWl0IGMuZmV0Y2hUaWNrZXQocyl9YXN5bmMgZnVuY3Rpb24gaChzKXtpZihlLnZhbHVlKXtsLnZhbHVlPSEwO3RyeXtlLnZhbHVlPWF3YWl0IGMucG9zdE1lc3NhZ2UoZS52YWx1ZS5pZCxzKSxhd2FpdCBHKCJzdXBwb3J0LXRpY2tldHMiKX1maW5hbGx5e2wudmFsdWU9ITF9fX1yZXR1cm4gSCgoKT0+e2NvbnN0IHM9eC5xdWVyeS50aWNrZXQsdT1uLnZhbHVlWzBdPy5pZDsoc3x8dSkmJmQocz8/dSl9KSxKKFcse3RpY2tldHM6bixzZWxlY3RlZDplLHNlbGVjdFRpY2tldDpkLHNlbmRSZXBseTpofSksKHMsdSk9Pntjb25zdCBDPXEsVD1NLE49VTtyZXR1cm4gbygpLGcoTix7aWQ6InN1cHBvcnQifSx7aGVhZGVyOnAoKCk9PltiKEMse3RpdGxlOiJNeSByZXF1ZXN0cyJ9KV0pLGJvZHk6cCgoKT0+W3IoImRpdiIsWCxbcigiZGl2IixZLFthKG4pLmxlbmd0aD09PTA/KG8oKSxpKCJwIixaLCIgTm8gcmVxdWVzdHMgeWV0LiBVc2UgRmVlZGJhY2sgb3IgSGVscCAmIFN1cHBvcnQgdG8gc3RhcnQgb25lLiAiKSk6aigiIiwhMCksKG8oITApLGkoRSxudWxsLFIoYShuKSx0PT4obygpLGkoImJ1dHRvbiIse2tleTp0LmlkLHR5cGU6ImJ1dHRvbiIsY2xhc3M6SyhbInctZnVsbCB0ZXh0LWxlZnQgcC0zIGhvdmVyOmJnLWVsZXZhdGVkLzUwIixhKGUpPy5pZD09PXQuaWQ/ImJnLWVsZXZhdGVkIjoiIl0pLG9uQ2xpY2s6Y2U9PmQodC5pZCl9LFtyKCJkaXYiLHRlLFtyKCJzcGFuIixzZSxtKHQuc3ViamVjdCksMSksYihULHtzaXplOiJ4cyIsdmFyaWFudDoic3VidGxlIixjb2xvcjp0LnN0YXR1cz09PSJjbG9zZWQiPyJuZXV0cmFsIjp0LnN0YXR1cz09PSJhY3RpdmUiPyJzdWNjZXNzIjoid2FybmluZyJ9LHtkZWZhdWx0OnAoKCk9PltMKG0odC5zdGF0dXMpLDEpXSksXzoyfSwxMDMyLFsiY29sb3IiXSldKSxyKCJwIixhZSxtKHQua2luZD09PSJmZWVkYmFjayI/IkZlZWRiYWNrIjp0LmNhdGVnb3J5KSwxKV0sMTAsZWUpKSksMTI4KSldKSxyKCJkaXYiLG9lLFthKGUpPyhvKCksZyhPLHtrZXk6MCxtZXNzYWdlczphKGUpLm1lc3NhZ2VzLCJ2aWV3ZXItcm9sZSI6InVzZXIiLCJjYW4tcmVwbHkiOmEoZSkuc3RhdHVzIT09ImNsb3NlZCIsc2VuZGluZzphKGwpLG9uU2VuZDpofSxudWxsLDgsWyJtZXNzYWdlcyIsImNhbi1yZXBseSIsInNlbmRpbmciXSkpOihvKCksaSgiZGl2IixyZSwiIFNlbGVjdCBhIHJlcXVlc3QgdG8gdmlldyB0aGUgY29udmVyc2F0aW9uLiAiKSldKV0pXSksXzoxfSl9fX0pO2V4cG9ydHt2ZSBhcyBkZWZhdWx0fTsK", "/_nuxt/BMybG4Ok.js": "aW1wb3J0e2YgYXMgQSxuIGFzIEIsZyBhcyBDLHIgYXMgcCxvIGFzIFAsaCBhcyBTLHcgYXMgbyxiIGFzIGUsaiBhcyBJLGkgYXMgdCxEIGFzIE0sSCBhcyBxLGEgYXMgeSxJIGFzIHosYXIgYXMgRn1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIE59ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBFfWZyb20iLi83Y1ZTT0NjdS5qcyI7aW1wb3J0e18gYXMgR31mcm9tIi4vRE9DRkRUY1kuanMiO2ltcG9ydHtvIGFzIHcscyBhcyBVLGIgYXMgX31mcm9tIi4vQnVMU3VBOE0uanMiO2ltcG9ydCIuL2RfME53UUxVLmpzIjtjb25zdCBUPXcoe25hbWU6VSgpLnRyaW0oKS5taW4oMSkubWF4KDEwMCkub3B0aW9uYWwoKSx1c2VybmFtZTpVKCkudHJpbSgpLm1pbigzKS5tYXgoNTApLnJlZ2V4KC9eXHcrJC8sIkxldHRlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmUiKS5vcHRpb25hbCgpLGJpbzpVKCkudHJpbSgpLm1heCg1MDApLm9wdGlvbmFsKCl9KS5yZWZpbmUoeD0+T2JqZWN0LmtleXMoeCkubGVuZ3RoPjAse21lc3NhZ2U6IkF0IGxlYXN0IG9uZSBmaWVsZCBpcyByZXF1aXJlZCJ9KTt3KHtlbWFpbDpfKCkscHJvZHVjdF91cGRhdGVzOl8oKSx3ZWVrbHlfZGlnZXN0Ol8oKSxpbXBvcnRhbnRfdXBkYXRlczpfKCl9KTtjb25zdCBMPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxZPUEoe19fbmFtZToiaW5kZXgiLHNldHVwKHgpe2NvbnN0IHM9QigpLHI9QygpLG49cCh7bmFtZTpzLmN1cnJlbnRVc2VyPy5uYW1lPz8iIix1c2VybmFtZTpzLmN1cnJlbnRVc2VyPy51c2VybmFtZT8/IiIsYmlvOnMuY3VycmVudFVzZXI/LmJpbz8/IiJ9KSxnPXAoITEpLG09cChudWxsKSxiPXAoITEpO2FzeW5jIGZ1bmN0aW9uIGgoKXtnLnZhbHVlPSEwO3RyeXthd2FpdCBzLnVwZGF0ZUN1cnJlbnRVc2VyKHtuYW1lOm4udmFsdWUubmFtZSx1c2VybmFtZTpuLnZhbHVlLnVzZXJuYW1lLGJpbzpuLnZhbHVlLmJpb30pLHIuYWRkKHt0aXRsZToiUHJvZmlsZSB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaCh1KXtjb25zdCBhPXU7ci5hZGQoe3RpdGxlOiJVcGRhdGUgZmFpbGVkIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Zy52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gVih1KXtjb25zdCBhPXUudGFyZ2V0LmZpbGVzPy5bMF07aWYoYSl7aWYoYS5zaXplPjIqMTAyNCoxMDI0KXtyLmFkZCh7dGl0bGU6IkF2YXRhciBtdXN0IGJlIOKJpCAyTUIiLGNvbG9yOiJlcnJvciJ9KTtyZXR1cm59Yi52YWx1ZT0hMDt0cnl7YXdhaXQgcy51cGRhdGVBdmF0YXIoYSksci5hZGQoe3RpdGxlOiJBdmF0YXIgdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goYyl7Y29uc3QgZD1jO3IuYWRkKHt0aXRsZToiVXBsb2FkIGZhaWxlZCIsZGVzY3JpcHRpb246ZD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2IudmFsdWU9ITEsbS52YWx1ZSYmKG0udmFsdWUudmFsdWU9IiIpfX19cmV0dXJuKHUsYSk9Pntjb25zdCBjPUksZD1OLHY9cSxpPU0sZj1FLGs9eiwkPUYsaj1HO3JldHVybiBQKCksUyhqLHtzY2hlbWE6dChUKSxzdGF0ZTp0KG4pLG9uU3VibWl0Omh9LHtkZWZhdWx0Om8oKCk9PltlKGQse3RpdGxlOiJQcm9maWxlIixkZXNjcmlwdGlvbjoiVGhlc2UgaW5mb3JtYXRpb25zIHdpbGwgYmUgZGlzcGxheWVkIHB1YmxpY2x5LiIsdmFyaWFudDoibmFrZWQiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczoibWItNCJ9LHtkZWZhdWx0Om8oKCk9PltlKGMse3R5cGU6InN1Ym1pdCIsbGFiZWw6IlNhdmUgY2hhbmdlcyIsbG9hZGluZzp0KGcpLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIn0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0pLGUoZCx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6bygoKT0+W2UoaSx7bmFtZToibmFtZSIsbGFiZWw6Ik5hbWUiLGRlc2NyaXB0aW9uOiJXaWxsIGFwcGVhciBvbiByZWNlaXB0cywgaW52b2ljZXMsIGFuZCBvdGhlciBjb21tdW5pY2F0aW9uLiIscmVxdWlyZWQ6IiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKHYse21vZGVsVmFsdWU6dChuKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzBdfHwoYVswXT1sPT50KG4pLm5hbWU9bCksYXV0b2NvbXBsZXRlOiJvZmYifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSksZShmKSxlKGkse25hbWU6ImVtYWlsIixsYWJlbDoiRW1haWwiLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHNpZ24gaW4sIGZvciBlbWFpbCByZWNlaXB0cyBhbmQgcHJvZHVjdCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKHYseyJtb2RlbC12YWx1ZSI6dChzKS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbCxkaXNhYmxlZDoiIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSldKSxfOjF9KSxlKGYpLGUoaSx7bmFtZToidXNlcm5hbWUiLGxhYmVsOiJVc2VybmFtZSIsZGVzY3JpcHRpb246IllvdXIgdW5pcXVlIHVzZXJuYW1lIGZvciBsb2dnaW5nIGluIGFuZCB5b3VyIHByb2ZpbGUgVVJMLiIscmVxdWlyZWQ6IiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKHYse21vZGVsVmFsdWU6dChuKS51c2VybmFtZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVsxXXx8KGFbMV09bD0+dChuKS51c2VybmFtZT1sKX0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGUoZiksZShpLHtuYW1lOiJhdmF0YXIiLGxhYmVsOiJBdmF0YXIiLGRlc2NyaXB0aW9uOiJQTkcsIEpQRUcsIEdJRiBvciBXRUJQLiBNYXggMk1CLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBzbTppdGVtcy1jZW50ZXIgZ2FwLTQifSx7ZGVmYXVsdDpvKCgpPT5beSgiZGl2IixMLFtlKGsse3NyYzp0KHMpLmN1cnJlbnRVc2VyPy5hdmF0YXI/P3ZvaWQgMCxhbHQ6dChzKS5jdXJyZW50VXNlcj8ubmFtZT8/IiIsc2l6ZToibGcifSxudWxsLDgsWyJzcmMiLCJhbHQiXSksZShjLHtsYWJlbDoiQ2hhbmdlIixpY29uOiJpLWx1Y2lkZS11cGxvYWQiLHZhcmlhbnQ6Im91dGxpbmUiLGxvYWRpbmc6dChiKSxvbkNsaWNrOmFbMl18fChhWzJdPWw9PnQobSk/LmNsaWNrKCkpfSxudWxsLDgsWyJsb2FkaW5nIl0pLHkoImlucHV0Iix7cmVmX2tleToiZmlsZUlucHV0IixyZWY6bSx0eXBlOiJmaWxlIixhY2NlcHQ6ImltYWdlL3BuZyxpbWFnZS9qcGVnLGltYWdlL2dpZixpbWFnZS93ZWJwIixjbGFzczoiaGlkZGVuIixvbkNoYW5nZTpWfSxudWxsLDU0NCldKV0pLF86MX0pLGUoZiksZShpLHtuYW1lOiJiaW8iLGxhYmVsOiJCaW8iLGRlc2NyaXB0aW9uOiJCcmllZiBkZXNjcmlwdGlvbiBmb3IgeW91ciBwcm9maWxlLiIsY2xhc3M6ImZsZXggbWF4LXNtOmZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBnYXAtNCJ9LHtkZWZhdWx0Om8oKCk9PltlKCQse21vZGVsVmFsdWU6dChuKS5iaW8sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbM118fChhWzNdPWw9PnQobikuYmlvPWwpLHJvd3M6NCxhdXRvcmVzaXplOiIiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSldKSxfOjF9KV0pLF86MX0sOCxbInNjaGVtYSIsInN0YXRlIl0pfX19KTtleHBvcnR7WSBhcyBkZWZhdWx0fTsK", "/_nuxt/BSGt3xRW.js": "aW1wb3J0e18gYXMgcH1mcm9tIi4vRFR2WFQtblIuanMiO2ltcG9ydHtfIGFzIHV9ZnJvbSIuL0NjTU1GMWc5LmpzIjtpbXBvcnR7Zix1IGFzIGQsbiBhcyBoLG8gYXMgYixoIGFzIGcsdyBhcyBlLGEgYXMgeCxiIGFzIHMsTyBhcyB5LGkgYXMgayxsIGFzIGksUSBhcyBhfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgTn1mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtfIGFzIHZ9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9EeENXUXNubC5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vXzJsU2RyMTMuanMiO2ltcG9ydCIuL0NYb2M0VUVSLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgQT17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCJ9LEU9Zih7X19uYW1lOiJzeXN0ZW0iLHNldHVwKFMpe2Qoe3RpdGxlOiJTeXN0ZW0gQWRtaW5pc3RyYXRpb24ifSk7Y29uc3Qgbj1oKCksbz1pKCgpPT5uLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxtPWkoKCk9Pntjb25zdCB0PVtdO3JldHVybiBhKG8udmFsdWUsInN5c3RlbTptYW5hZ2UiKSYmdC5wdXNoKHtsYWJlbDoiTm90aWZpY2F0aW9ucyIsaWNvbjoiaS1sdWNpZGUtc2VuZCIsdG86Ii9zeXN0ZW0vbm90aWZpY2F0aW9ucyJ9KSxhKG8udmFsdWUsInN1cHBvcnQ6bWFuYWdlIikmJnQucHVzaCh7bGFiZWw6IlRpY2tldHMiLGljb246ImktbHVjaWRlLXRpY2tldCIsdG86Ii9zeXN0ZW0vdGlja2V0cyJ9KSxbdF19KTtyZXR1cm4odCxVKT0+e2NvbnN0IHI9cCxjPXUsXz15LGw9TjtyZXR1cm4gYigpLGcobCx7aWQ6InN5c3RlbSJ9LHtoZWFkZXI6ZSgoKT0+W3Modix7dGl0bGU6IlN5c3RlbSBBZG1pbmlzdHJhdGlvbiJ9KSxzKGMsbnVsbCx7ZGVmYXVsdDplKCgpPT5bcyhyLHtpdGVtczprKG0pLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCw4LFsiaXRlbXMiXSldKSxfOjF9KV0pLGJvZHk6ZSgoKT0+W3goImRpdiIsQSxbcyhfKV0pXSksXzoxfSl9fX0pO2V4cG9ydHtFIGFzIGRlZmF1bHR9Owo=", "/_nuxt/BSRKqGrP.js": "aW1wb3J0e2FoIGFzIHksSiBhcyBnLEsgYXMgaCxvLGggYXMgYix3IGFzIGssYyBhcyByLE0gYXMgbCxpIGFzIHMsTCBhcyBuLGQgYXMgdix0IGFzIGYsdiBhcyB1LFAgYXMgeCxsIGFzIEMsTiBhcyBwfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgcT17c2xvdHM6e3Jvb3Q6InJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuIixoZWFkZXI6InAtNCBzbTpweC02Iix0aXRsZToidGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIixkZXNjcmlwdGlvbjoibXQtMSB0ZXh0LW11dGVkIHRleHQtc20iLGJvZHk6InAtNCBzbTpwLTYiLGZvb3RlcjoicC00IHNtOnB4LTYifSx2YXJpYW50czp7dmFyaWFudDp7c29saWQ6e3Jvb3Q6ImJnLWludmVydGVkIHRleHQtaW52ZXJ0ZWQiLHRpdGxlOiJ0ZXh0LWludmVydGVkIixkZXNjcmlwdGlvbjoidGV4dC1kaW1tZWQifSxvdXRsaW5lOntyb290OiJiZy1kZWZhdWx0IHJpbmcgcmluZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In0sc29mdDp7cm9vdDoiYmctZWxldmF0ZWQvNTAgZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxzdWJ0bGU6e3Jvb3Q6ImJnLWVsZXZhdGVkLzUwIHJpbmcgcmluZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0In19fSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6Im91dGxpbmUifX0sdz17X19uYW1lOiJVQ2FyZCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IGM9ZSx0PXkoKSxtPWcoKSxhPWgoImNhcmQiLGMpLGk9QygoKT0+cCh7ZXh0ZW5kOnAocSksLi4ubS51aT8uY2FyZHx8e319KSh7dmFyaWFudDpjLnZhcmlhbnR9KSk7cmV0dXJuKGQsUyk9PihvKCksYihzKHgpLHthczplLmFzLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpsKGkudmFsdWUucm9vdCh7Y2xhc3M6W3MoYSk/LnJvb3QsYy5jbGFzc119KSl9LHtkZWZhdWx0OmsoKCk9Plt0LmhlYWRlcnx8ZS50aXRsZXx8dC50aXRsZXx8ZS5kZXNjcmlwdGlvbnx8dC5kZXNjcmlwdGlvbj8obygpLHIoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOmwoaS52YWx1ZS5oZWFkZXIoe2NsYXNzOnMoYSk/LmhlYWRlcn0pKX0sW24oZC4kc2xvdHMsImhlYWRlciIse30sKCk9PltlLnRpdGxlfHx0LnRpdGxlPyhvKCkscigiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpsKGkudmFsdWUudGl0bGUoe2NsYXNzOnMoYSk/LnRpdGxlfSkpfSxbbihkLiRzbG90cywidGl0bGUiLHt9LCgpPT5bdihmKGUudGl0bGUpLDEpXSldLDIpKTp1KCIiLCEwKSxlLmRlc2NyaXB0aW9ufHx0LmRlc2NyaXB0aW9uPyhvKCkscigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpsKGkudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOnMoYSk/LmRlc2NyaXB0aW9ufSkpfSxbbihkLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bdihmKGUuZGVzY3JpcHRpb24pLDEpXSldLDIpKTp1KCIiLCEwKV0pXSwyKSk6dSgiIiwhMCksdC5kZWZhdWx0PyhvKCkscigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOmwoaS52YWx1ZS5ib2R5KHtjbGFzczpzKGEpPy5ib2R5fSkpfSxbbihkLiRzbG90cywiZGVmYXVsdCIpXSwyKSk6dSgiIiwhMCksdC5mb290ZXI/KG8oKSxyKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpsKGkudmFsdWUuZm9vdGVyKHtjbGFzczpzKGEpPy5mb290ZXJ9KSl9LFtuKGQuJHNsb3RzLCJmb290ZXIiKV0sMikpOnUoIiIsITApXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fTtleHBvcnR7dyBhcyBffTsK", "/_nuxt/BSy0i2Af.js": "aW1wb3J0e18gYXMgUn1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIEJ9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBLfWZyb20iLi9CU1JLcUdyUC5qcyI7aW1wb3J0e2FzIGFzIE4sZiBhcyBTLGcgYXMgUCxZIGFzIFQsbyBhcyBmLGMgYXMgeixiIGFzIG8saSBhcyByLEggYXMgRCxqIGFzIEEsbCBhcyB5LHUgYXMgSSxwIGFzIFkseiBhcyBxLFIgYXMgSCxoIGFzIHgsdyBhcyBzLGEsdiBhcyB3LHQgYXMgQyxHIGFzICQsciBhcyBVLCQgYXMga31mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIEZ9ZnJvbSIuL0NXOGZLbkZFLmpzIjtpbXBvcnR7XyBhcyBHfWZyb20iLi9CZFpYNXhnZi5qcyI7aW1wb3J0e18gYXMgT31mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHt1IGFzIEp9ZnJvbSIuL0RtNzk0cXhJLmpzIjtpbXBvcnR7XyBhcyBNfWZyb20iLi9CZDQtT2MzNi5qcyI7aW1wb3J0Ii4vQzdZeTZ0UjMuanMiO2ltcG9ydCIuL0N0YTE1c0ctLmpzIjtpbXBvcnQiLi9DYzZ6aWgtUi5qcyI7aW1wb3J0Ii4vZ2hxWWJJU1QuanMiO2ltcG9ydCIuL0JoV1MxOGk3LmpzIjtmdW5jdGlvbiBRKCl7ZnVuY3Rpb24gZCgpe3JldHVybiBOKCIvYXBpL3JlZmVycmFsL3N0YXRzIil9cmV0dXJue2ZldGNoUmVmZXJyYWxTdGF0czpkfX1jb25zdCBXPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxYPVMoe19fbmFtZToiUmVmZXJyYWxDYXJkIixwcm9wczp7Y29kZTp7fX0sc2V0dXAoZCl7Y29uc3QgbT1kLG49UCgpLHA9SigpLm9yaWdpbixsPXkoKCk9PmAke3B9Lz9yZWY9JHttLmNvZGV9YCkse2NvcHk6aSxjb3BpZWQ6Y309VCh7c291cmNlOmx9KTtmdW5jdGlvbiBfKCl7aSgpLG4uYWRkKHt0aXRsZToiQ29waWVkISIsY29sb3I6InN1Y2Nlc3MifSl9cmV0dXJuKGIsdCk9Pntjb25zdCBlPUQsZz1BO3JldHVybiBmKCkseigiZGl2IixXLFtvKGUseyJtb2RlbC12YWx1ZSI6cihsKSxyZWFkb25seToiIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyB0ZXh0LXNtIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSksbyhnLHtpY29uOnIoYyk/ImktbHVjaWRlLWNoZWNrIjoiaS1sdWNpZGUtY29weSIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixvbkNsaWNrOl99LG51bGwsOCxbImljb24iXSldKX19fSksWj1PYmplY3QuYXNzaWduKFgse19fbmFtZToiUmVmZXJyYWxDYXJkIn0pLGVlPXtjbGFzczoicC02IHNwYWNlLXktNiJ9LHRlPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMiBnYXAtNiJ9LGFlPXtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LHJlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIn0sc2U9e2NsYXNzOiJ0ZXh0LTN4bCBmb250LWJvbGQgdGFidWxhci1udW1zIn0sb2U9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxuZT17Y2xhc3M6InRleHQtM3hsIGZvbnQtYm9sZCB0YWJ1bGFyLW51bXMifSxsZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiJ9LHU9MTAsUmU9Uyh7X19uYW1lOiJyZWZlcnJhbCIsc2V0dXAoZCl7SSh7dGl0bGU6IlJlZmVycmFsIn0pO2NvbnN0IG09USgpLHtkYXRhOm4sZXJyb3I6cH09WSgicmVmZXJyYWwtc3RhdHMiLCgpPT5tLmZldGNoUmVmZXJyYWxTdGF0cygpLHtkZWZhdWx0OigpPT4oe2NvZGU6IiIscmVmZXJyZWRDb3VudDowLHRvdGFsRWFybmVkOjAscmVmZXJyYWxzOltdfSl9KTtxKHApO2NvbnN0IGw9VSgiIiksaT1VKDEpLGM9eSgoKT0+e2NvbnN0IHQ9bC52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD9uLnZhbHVlLnJlZmVycmFscy5maWx0ZXIoZT0+ZS5lbWFpbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHQpKTpuLnZhbHVlLnJlZmVycmFsc30pLF89eSgoKT0+e2NvbnN0IHQ9KGkudmFsdWUtMSkqdTtyZXR1cm4gYy52YWx1ZS5zbGljZSh0LHQrdSl9KTtIKGwsKCk9PntpLnZhbHVlPTF9KTtjb25zdCBiPVt7YWNjZXNzb3JLZXk6ImVtYWlsIixoZWFkZXI6IkVtYWlsIn0se2FjY2Vzc29yS2V5OiJzb3VyY2UiLGhlYWRlcjoiU291cmNlIixjZWxsOih7cm93OnR9KT0+ayhSLHtsYWJlbDp0Lm9yaWdpbmFsLnNvdXJjZT09PSJpbnZpdGUiPyJJbnZpdGUiOiJMaW5rIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0pfSx7YWNjZXNzb3JLZXk6InJld2FyZF9wYWlkIixoZWFkZXI6IlN0YXR1cyIsY2VsbDooe3Jvdzp0fSk9PmsoUix7bGFiZWw6dC5vcmlnaW5hbC5yZXdhcmRfcGFpZD8iUmV3YXJkZWQiOiJQZW5kaW5nIixjb2xvcjp0Lm9yaWdpbmFsLnJld2FyZF9wYWlkPyJzdWNjZXNzIjoid2FybmluZyIsdmFyaWFudDoic3VidGxlIn0pfSx7YWNjZXNzb3JLZXk6ImNyZWF0ZWRfYXQiLGhlYWRlcjoiRGF0ZSIsY2VsbDooe3Jvdzp0fSk9Pm5ldyBEYXRlKHQub3JpZ2luYWwuY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9XTtyZXR1cm4odCxlKT0+e2NvbnN0IGc9QixoPUssRT1ELEw9RixWPUcsaj1PO3JldHVybiBmKCkseChqLHtpZDoicmVmZXJyYWwifSx7aGVhZGVyOnMoKCk9PltvKE0se3RpdGxlOiJSZWZlcnJhbCJ9KV0pLGJvZHk6cygoKT0+W2EoImRpdiIsZWUsW2EoImRpdiIsdGUsW28oZyx7dGl0bGU6IllvdXIgcmVmZXJyYWwgbGluayIsZGVzY3JpcHRpb246IlNoYXJlIHRoaXMgbGluayB0byBpbnZpdGUgb3RoZXJzLiBZb3UnbGwgZWFybiBjcmVkaXRzIHdoZW4gdGhleSB0b3AgdXAgZm9yIHRoZSBmaXJzdCB0aW1lLiIsdmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6cygoKT0+W3IobikuY29kZT8oZigpLHgoWix7a2V5OjAsY29kZTpyKG4pLmNvZGV9LG51bGwsOCxbImNvZGUiXSkpOncoIiIsITApXSksXzoxfSksYSgiZGl2IixhZSxbbyhoLHtjbGFzczoiZmxleC0xIn0se2RlZmF1bHQ6cygoKT0+W2EoImRpdiIscmUsW2VbMl18fChlWzJdPWEoInAiLHtjbGFzczoidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkIn0sIiBUb3RhbCBSZWZlcnJlZCAiLC0xKSksYSgicCIsc2UsQyhyKG4pLnJlZmVycmVkQ291bnQpLDEpXSldKSxfOjF9KSxvKGgse2NsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpzKCgpPT5bYSgiZGl2IixvZSxbZVszXXx8KGVbM109YSgicCIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQifSwiIFRvdGFsIEVhcm5lZCAiLC0xKSksYSgicCIsbmUsQyhyKG4pLnRvdGFsRWFybmVkLnRvTG9jYWxlU3RyaW5nKCkpLDEpXSldKSxfOjF9KV0pXSksbyhoLHt1aTp7Ym9keToic206cC0wIixmb290ZXI6InAtMCJ9fSx7aGVhZGVyOnMoKCk9PlthKCJkaXYiLGxlLFtlWzRdfHwoZVs0XT1hKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFJlZmVycmFscyAiLC0xKSksbyhFLHttb2RlbFZhbHVlOnIobCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMF18fChlWzBdPXY9PiQobCk/bC52YWx1ZT12Om51bGwpLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IkZpbHRlciBieSBlbWFpbOKApiIsc2l6ZToic20iLGNsYXNzOiJ3LTU2In0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pXSksZm9vdGVyOnMoKCk9PltyKGMpLmxlbmd0aD51PyhmKCkseChWLHtrZXk6MCxwYWdlOnIoaSksIm9uVXBkYXRlOnBhZ2UiOmVbMV18fChlWzFdPXY9PiQoaSk/aS52YWx1ZT12Om51bGwpLHRvdGFsOnIoYykubGVuZ3RoLCJpdGVtcy1wZXItcGFnZSI6dX0sbnVsbCw4LFsicGFnZSIsInRvdGFsIl0pKTp3KCIiLCEwKV0pLGRlZmF1bHQ6cygoKT0+W28oTCx7ZGF0YTpyKF8pLGNvbHVtbnM6Yn0se2VtcHR5OnMoKCk9PlsuLi5lWzVdfHwoZVs1XT1bYSgiZGl2Iix7Y2xhc3M6InB5LTggdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBObyByZWZlcnJhbHMgeWV0LiAiLC0xKV0pXSksXzoxfSw4LFsiZGF0YSJdKV0pLF86MX0pXSldKSxfOjF9KX19fSk7ZXhwb3J0e1JlIGFzIGRlZmF1bHR9Owo=", "/_nuxt/BWvqlw5f.js": "aW1wb3J0e2YgYXMgQixhMiBhcyBpZSxhMyBhcyBkZSxhNCBhcyB1ZSxhNSBhcyBjZSxvIGFzIGYsaCBhcyB3LHcgYXMgZyxiIGFzIGgsaSBhcyBlLFAgYXMgQSxMIGFzIHosbCBhcyBxLGE2IGFzIHBlLGE3IGFzIFosYTggYXMgUSxhOSBhcyBmZSx2IGFzIFIsYWEgYXMgTSxaIGFzIG1lLGFiIGFzIHZlLGFjIGFzIFcsYWQgYXMgaixhZSBhcyBQLGFmIGFzIGJlLGFnIGFzIHllLGFoIGFzIGhlLEogYXMgZ2UsSyBhcyBrZSxhaSBhcyB3ZSxhaiBhcyBfZSxhayBhcyB4ZSxhbCBhcyBDZSxhbSBhcyBxZSxhbiBhcyBWZSxhIGFzIFYsTSBhcyBDLGsgYXMgRCxjIGFzIHgsYW8gYXMgTCxkIGFzIFksdCBhcyBJLE4gYXMgRyxhcCBhcyBJZSxnIGFzIFgsUiBhcyBTZSxqIGFzIGVlLEQgYXMgUmUsSCBhcyAkZSxHIGFzIEssRiBhcyBhZSxxIGFzIHRlLFYgYXMgRmUsciBhcyBTLEIgYXMgc2UsdSBhcyB6ZSxwIGFzIEJlLHogYXMgRWV9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBUZX1mcm9tIi4vQjFNZUxyaTMuanMiO2ltcG9ydHtpIGFzIEh9ZnJvbSIuL0R4Q1dRc25sLmpzIjtpbXBvcnR7ViBhcyBBZX1mcm9tIi4vbTIwa2RHeFUuanMiO2ltcG9ydHtnIGFzIFVlLHcgYXMgTmUsZiBhcyBLZX1mcm9tIi4vQnQ4UzBkbWwuanMiO2ltcG9ydHtpIGFzIE1lfWZyb20iLi9EdmRoeXBEaS5qcyI7dmFyIE9lPUIoe19fbmFtZToiUm92aW5nRm9jdXNJdGVtIixwcm9wczp7dGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZm9jdXNhYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsbG93U2hpZnRLZXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgcD10LGE9TWUoKSxyPWllKCksYj1xKCgpPT5wLnRhYlN0b3BJZHx8ciksaz1xKCgpPT5hLmN1cnJlbnRUYWJTdG9wSWQudmFsdWU9PT1iLnZhbHVlKSx7Z2V0SXRlbXM6bCxDb2xsZWN0aW9uSXRlbTp1fT1kZSgpO3VlKCgpPT57cC5mb2N1c2FibGUmJmEub25Gb2N1c2FibGVJdGVtQWRkKCl9KSxjZSgoKT0+e3AuZm9jdXNhYmxlJiZhLm9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpfSk7ZnVuY3Rpb24geShvKXtpZihvLmtleT09PSJUYWIiJiZvLnNoaWZ0S2V5KXthLm9uSXRlbVNoaWZ0VGFiKCk7cmV0dXJufWlmKG8udGFyZ2V0IT09by5jdXJyZW50VGFyZ2V0KXJldHVybjtjb25zdCBuPVVlKG8sYS5vcmllbnRhdGlvbi52YWx1ZSxhLmRpci52YWx1ZSk7aWYobiE9PXZvaWQgMCl7aWYoby5tZXRhS2V5fHxvLmN0cmxLZXl8fG8uYWx0S2V5fHwhcC5hbGxvd1NoaWZ0S2V5JiZvLnNoaWZ0S2V5KXJldHVybjtvLnByZXZlbnREZWZhdWx0KCk7bGV0IGM9Wy4uLmwoKS5tYXAobT0+bS5yZWYpLmZpbHRlcihtPT5tLmRhdGFzZXQuZGlzYWJsZWQhPT0iIildO2lmKG49PT0ibGFzdCIpYy5yZXZlcnNlKCk7ZWxzZSBpZihuPT09InByZXYifHxuPT09Im5leHQiKXtuPT09InByZXYiJiZjLnJldmVyc2UoKTtjb25zdCBtPWMuaW5kZXhPZihvLmN1cnJlbnRUYXJnZXQpO2M9YS5sb29wLnZhbHVlP05lKGMsbSsxKTpjLnNsaWNlKG0rMSl9cGUoKCk9PktlKGMpKX19cmV0dXJuKG8sbik9PihmKCksdyhlKHUpLG51bGwse2RlZmF1bHQ6ZygoKT0+W2goZShBKSx7dGFiaW5kZXg6ay52YWx1ZT8wOi0xLCJkYXRhLW9yaWVudGF0aW9uIjplKGEpLm9yaWVudGF0aW9uLnZhbHVlLCJkYXRhLWFjdGl2ZSI6by5hY3RpdmU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjpvLmZvY3VzYWJsZT92b2lkIDA6IiIsYXM6by5hcywiYXMtY2hpbGQiOm8uYXNDaGlsZCxvbk1vdXNlZG93bjpuWzBdfHwoblswXT1jPT57by5mb2N1c2FibGU/ZShhKS5vbkl0ZW1Gb2N1cyhiLnZhbHVlKTpjLnByZXZlbnREZWZhdWx0KCl9KSxvbkZvY3VzOm5bMV18fChuWzFdPWM9PmUoYSkub25JdGVtRm9jdXMoYi52YWx1ZSkpLG9uS2V5ZG93bjp5fSx7ZGVmYXVsdDpnKCgpPT5beihvLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidGFiaW5kZXgiLCJkYXRhLW9yaWVudGF0aW9uIiwiZGF0YS1hY3RpdmUiLCJkYXRhLWRpc2FibGVkIiwiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30pKX19KSxqZT1PZTtjb25zdFtQZV09WigiQ2hlY2tib3hHcm91cFJvb3QiKTtmdW5jdGlvbiBPKHQpe3JldHVybiB0PT09ImluZGV0ZXJtaW5hdGUifWZ1bmN0aW9uIG9lKHQpe3JldHVybiBPKHQpPyJpbmRldGVybWluYXRlIjp0PyJjaGVja2VkIjoidW5jaGVja2VkIn1jb25zdFtEZSxMZV09WigiQ2hlY2tib3hSb290Iik7dmFyIFllPUIoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IkNoZWNrYm94Um9vdCIscHJvcHM6e2RlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoib24ifSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHRydWVWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9PiEwfSxmYWxzZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cCh0LHtlbWl0OnB9KXtjb25zdCBhPXQscj1wLHtmb3J3YXJkUmVmOmIsY3VycmVudEVsZW1lbnQ6a309USgpLGw9UGUobnVsbCksdT1mZShhLCJtb2RlbFZhbHVlIixyLHtkZWZhdWx0VmFsdWU6YS5kZWZhdWx0VmFsdWU/P2EuZmFsc2VWYWx1ZSxwYXNzaXZlOmEubW9kZWxWYWx1ZT09PXZvaWQgMH0pLHk9cSgoKT0+bD8uZGlzYWJsZWQudmFsdWV8fGEuZGlzYWJsZWQpLG89cSgoKT0+UCh1LnZhbHVlLGEudHJ1ZVZhbHVlKSksbj1xKCgpPT5qKGw/Lm1vZGVsVmFsdWUudmFsdWUpP3UudmFsdWU9PT0iaW5kZXRlcm1pbmF0ZSI/ImluZGV0ZXJtaW5hdGUiOm8udmFsdWU6SChsLm1vZGVsVmFsdWUudmFsdWUsYS52YWx1ZSkpO2Z1bmN0aW9uIGMoKXtpZihqKGw/Lm1vZGVsVmFsdWUudmFsdWUpKXUudmFsdWU9PT0iaW5kZXRlcm1pbmF0ZSI/dS52YWx1ZT1hLnRydWVWYWx1ZTp1LnZhbHVlPW8udmFsdWU/YS5mYWxzZVZhbHVlOmEudHJ1ZVZhbHVlO2Vsc2V7Y29uc3Qgcz1bLi4ubC5tb2RlbFZhbHVlLnZhbHVlfHxbXV07aWYoSChzLGEudmFsdWUpKXtjb25zdCBpPXMuZmluZEluZGV4KF89PlAoXyxhLnZhbHVlKSk7cy5zcGxpY2UoaSwxKX1lbHNlIHMucHVzaChhLnZhbHVlKTtsLm1vZGVsVmFsdWUudmFsdWU9c319Y29uc3QgbT1iZShrKSx2PXEoKCk9PmEuaWQmJmsudmFsdWU/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2Zvcj0iJHthLmlkfSJdYCk/LmlubmVyVGV4dDp2b2lkIDApO3JldHVybiBMZSh7ZGlzYWJsZWQ6eSxzdGF0ZTpufSksKHMsaSk9PihmKCksdyhXKGUobCk/LnJvdmluZ0ZvY3VzLnZhbHVlP2UoamUpOmUoQSkpLE0ocy4kYXR0cnMse2lkOnMuaWQscmVmOmUoYikscm9sZToiY2hlY2tib3giLCJhcy1jaGlsZCI6cy5hc0NoaWxkLGFzOnMuYXMsdHlwZTpzLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLCJhcmlhLWNoZWNrZWQiOmUoTykobi52YWx1ZSk/Im1peGVkIjpuLnZhbHVlLCJhcmlhLXJlcXVpcmVkIjpzLnJlcXVpcmVkLCJhcmlhLWxhYmVsIjpzLiRhdHRyc1siYXJpYS1sYWJlbCJdfHx2LnZhbHVlLCJkYXRhLXN0YXRlIjplKG9lKShuLnZhbHVlKSwiZGF0YS1kaXNhYmxlZCI6eS52YWx1ZT8iIjp2b2lkIDAsZGlzYWJsZWQ6eS52YWx1ZSxmb2N1c2FibGU6ZShsKT8ucm92aW5nRm9jdXMudmFsdWU/IXkudmFsdWU6dm9pZCAwLG9uS2V5ZG93bjptZSh2ZSgoKT0+e30sWyJwcmV2ZW50Il0pLFsiZW50ZXIiXSksb25DbGljazpjfSkse2RlZmF1bHQ6ZygoKT0+W3oocy4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOmUodSksc3RhdGU6bi52YWx1ZX0pLGUobSkmJnMubmFtZSYmIWUobCk/KGYoKSx3KGUoQWUpLHtrZXk6MCx0eXBlOiJjaGVja2JveCIsY2hlY2tlZDohIW4udmFsdWUsbmFtZTpzLm5hbWUsdmFsdWU6cy52YWx1ZSxkaXNhYmxlZDp5LnZhbHVlLHJlcXVpcmVkOnMucmVxdWlyZWR9LG51bGwsOCxbImNoZWNrZWQiLCJuYW1lIiwidmFsdWUiLCJkaXNhYmxlZCIsInJlcXVpcmVkIl0pKTpSKCJ2LWlmIiwhMCldKSxfOjN9LDE2LFsiaWQiLCJhcy1jaGlsZCIsImFzIiwidHlwZSIsImFyaWEtY2hlY2tlZCIsImFyaWEtcmVxdWlyZWQiLCJhcmlhLWxhYmVsIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkaXNhYmxlZCIsImZvY3VzYWJsZSIsIm9uS2V5ZG93biJdKSl9fSksR2U9WWUsSGU9Qih7X19uYW1lOiJDaGVja2JveEluZGljYXRvciIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3R7Zm9yd2FyZFJlZjpwfT1RKCksYT1EZSgpO3JldHVybihyLGIpPT4oZigpLHcoZSh5ZSkse3ByZXNlbnQ6ci5mb3JjZU1vdW50fHxlKE8pKGUoYSkuc3RhdGUudmFsdWUpfHxlKGEpLnN0YXRlLnZhbHVlPT09ITB9LHtkZWZhdWx0OmcoKCk9PltoKGUoQSksTSh7cmVmOmUocCksImRhdGEtc3RhdGUiOmUob2UpKGUoYSkuc3RhdGUudmFsdWUpLCJkYXRhLWRpc2FibGVkIjplKGEpLmRpc2FibGVkLnZhbHVlPyIiOnZvaWQgMCxzdHlsZTp7cG9pbnRlckV2ZW50czoibm9uZSJ9LCJhcy1jaGlsZCI6ci5hc0NoaWxkLGFzOnIuYXN9LHIuJGF0dHJzKSx7ZGVmYXVsdDpnKCgpPT5beihyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiYXMtY2hpbGQiLCJhcyJdKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEplPUhlO2NvbnN0IEo9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0Iixjb250YWluZXI6ImZsZXggaXRlbXMtY2VudGVyIixiYXNlOiJyb3VuZGVkLXNtIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIG92ZXJmbG93LWhpZGRlbiBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIiLGluZGljYXRvcjoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc2l6ZS1mdWxsIHRleHQtaW52ZXJ0ZWQiLGljb246InNocmluay0wIHNpemUtZnVsbCIsd3JhcHBlcjoidy1mdWxsIixsYWJlbDoiYmxvY2sgZm9udC1tZWRpdW0gdGV4dC1kZWZhdWx0IixkZXNjcmlwdGlvbjoidGV4dC1tdXRlZCJ9LHZhcmlhbnRzOntjb2xvcjp7cHJpbWFyeTp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkiLGluZGljYXRvcjoiYmctcHJpbWFyeSJ9LHNlY29uZGFyeTp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXNlY29uZGFyeSIsaW5kaWNhdG9yOiJiZy1zZWNvbmRhcnkifSxzdWNjZXNzOntiYXNlOiJmb2N1cy12aXNpYmxlOm91dGxpbmUtc3VjY2VzcyIsaW5kaWNhdG9yOiJiZy1zdWNjZXNzIn0saW5mbzp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZm8iLGluZGljYXRvcjoiYmctaW5mbyJ9LHdhcm5pbmc6e2Jhc2U6ImZvY3VzLXZpc2libGU6b3V0bGluZS13YXJuaW5nIixpbmRpY2F0b3I6ImJnLXdhcm5pbmcifSxlcnJvcjp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWVycm9yIixpbmRpY2F0b3I6ImJnLWVycm9yIn0sbmV1dHJhbDp7YmFzZToiZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWludmVydGVkIixpbmRpY2F0b3I6ImJnLWludmVydGVkIn19LHZhcmlhbnQ6e2xpc3Q6e3Jvb3Q6IiJ9LGNhcmQ6e3Jvb3Q6ImJvcmRlciBib3JkZXItbXV0ZWQgcm91bmRlZC1sZyJ9fSxpbmRpY2F0b3I6e3N0YXJ0Ontyb290OiJmbGV4LXJvdyIsd3JhcHBlcjoibXMtMiJ9LGVuZDp7cm9vdDoiZmxleC1yb3ctcmV2ZXJzZSIsd3JhcHBlcjoibWUtMiJ9LGhpZGRlbjp7YmFzZToic3Itb25seSIsd3JhcHBlcjoidGV4dC1jZW50ZXIifX0sc2l6ZTp7eHM6e2Jhc2U6InNpemUtMyIsY29udGFpbmVyOiJoLTQiLHdyYXBwZXI6InRleHQteHMifSxzbTp7YmFzZToic2l6ZS0zLjUiLGNvbnRhaW5lcjoiaC00Iix3cmFwcGVyOiJ0ZXh0LXhzIn0sbWQ6e2Jhc2U6InNpemUtNCIsY29udGFpbmVyOiJoLTUiLHdyYXBwZXI6InRleHQtc20ifSxsZzp7YmFzZToic2l6ZS00LjUiLGNvbnRhaW5lcjoiaC01Iix3cmFwcGVyOiJ0ZXh0LXNtIn0seGw6e2Jhc2U6InNpemUtNSIsY29udGFpbmVyOiJoLTYiLHdyYXBwZXI6InRleHQtYmFzZSJ9fSxyZXF1aXJlZDp7dHJ1ZTp7bGFiZWw6ImFmdGVyOmNvbnRlbnQtWycqJ10gYWZ0ZXI6bXMtMC41IGFmdGVyOnRleHQtZXJyb3IifX0sZGlzYWJsZWQ6e3RydWU6e3Jvb3Q6Im9wYWNpdHktNzUiLGJhc2U6ImN1cnNvci1ub3QtYWxsb3dlZCIsbGFiZWw6ImN1cnNvci1ub3QtYWxsb3dlZCIsZGVzY3JpcHRpb246ImN1cnNvci1ub3QtYWxsb3dlZCJ9fSxjaGVja2VkOnt0cnVlOiIifX0sY29tcG91bmRWYXJpYW50czpbe3NpemU6InhzIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC0yLjUifX0se3NpemU6InNtIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoicC0zIn19LHtzaXplOiJtZCIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6InAtMy41In19LHtzaXplOiJsZyIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6InAtNCJ9fSx7c2l6ZToieGwiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJwLTQuNSJ9fSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLXNlY29uZGFyeSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoiaGFzLWRhdGEtW3N0YXRlPWNoZWNrZWRdOmJvcmRlci1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoiY2FyZCIsY2xhc3M6e3Jvb3Q6Imhhcy1kYXRhLVtzdGF0ZT1jaGVja2VkXTpib3JkZXItd2FybmluZyJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJjYXJkIixjbGFzczp7cm9vdDoiaGFzLWRhdGEtW3N0YXRlPWNoZWNrZWRdOmJvcmRlci1lcnJvciJ9fSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImNhcmQiLGNsYXNzOntyb290OiJoYXMtZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ym9yZGVyLWludmVydGVkIn19LHt2YXJpYW50OiJjYXJkIixkaXNhYmxlZDohMCxjbGFzczp7cm9vdDoiY3Vyc29yLW5vdC1hbGxvd2VkIn19XSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIixjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoibGlzdCIsaW5kaWNhdG9yOiJzdGFydCJ9fSxaZT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVDaGVja2JveCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saW5kaWNhdG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saW5kZXRlcm1pbmF0ZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cnVlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZmFsc2VWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjaGFuZ2UiLCJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6cH0pe2NvbnN0IGE9dCxyPWhlKCksYj1wLGs9Z2UoKSxsPWtlKCJjaGVja2JveCIsYSksdT13ZShfZShhLCJyZXF1aXJlZCIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwibW9kZWxWYWx1ZSIsInRydWVWYWx1ZSIsImZhbHNlVmFsdWUiKSxiKSx7aWQ6eSxlbWl0Rm9ybUNoYW5nZTpvLGVtaXRGb3JtSW5wdXQ6bixzaXplOmMsY29sb3I6bSxuYW1lOnYsZGlzYWJsZWQ6cyxhcmlhQXR0cnM6aX09eGUoYSksXz15LnZhbHVlPz9DZSgpLHt2YXJpYW50OiR9PXFlKCJjaGVja2JveCIsYSxKLFsidmFyaWFudCJdKSxFPVZlKCksVT1xKCgpPT57Y29uc3R7ImRhdGEtc3RhdGUiOkYsLi4uVH09RTtyZXR1cm4gVH0pLGQ9cSgoKT0+Ryh7ZXh0ZW5kOkcoSiksLi4uay51aT8uY2hlY2tib3h8fHt9fSkoe3NpemU6Yy52YWx1ZSxjb2xvcjptLnZhbHVlLHZhcmlhbnQ6JC52YWx1ZSxpbmRpY2F0b3I6YS5pbmRpY2F0b3IscmVxdWlyZWQ6YS5yZXF1aXJlZCxkaXNhYmxlZDpzLnZhbHVlfSkpO2Z1bmN0aW9uIE4oRil7Y29uc3QgVD1uZXcgRXZlbnQoImNoYW5nZSIse3RhcmdldDp7dmFsdWU6Rn19KTtiKCJjaGFuZ2UiLFQpLG8oKSxuKCl9cmV0dXJuKEYsVCk9PihmKCksdyhlKEEpLHthczplKCQpPT09Imxpc3QiP3QuYXM6ZShMKSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6QyhkLnZhbHVlLnJvb3Qoe2NsYXNzOltlKGwpPy5yb290LGEuY2xhc3NdfSkpfSx7ZGVmYXVsdDpnKCgpPT5bVigiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6QyhkLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZShsKT8uY29udGFpbmVyfSkpfSxbaChlKEdlKSxNKHtpZDplKF8pfSx7Li4uZSh1KSwuLi5VLnZhbHVlLC4uLmUoaSl9LHtuYW1lOmUodiksZGlzYWJsZWQ6ZShzKSwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6ZC52YWx1ZS5iYXNlKHtjbGFzczplKGwpPy5iYXNlfSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOk59KSx7ZGVmYXVsdDpnKCh7c3RhdGU6bmV9KT0+W2goZShKZSkseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOkMoZC52YWx1ZS5pbmRpY2F0b3Ioe2NsYXNzOmUobCk/LmluZGljYXRvcn0pKX0se2RlZmF1bHQ6ZygoKT0+W25lPT09ImluZGV0ZXJtaW5hdGUiPyhmKCksdyhELHtrZXk6MCxuYW1lOnQuaW5kZXRlcm1pbmF0ZUljb258fGUoaykudWkuaWNvbnMubWludXMsImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOkMoZC52YWx1ZS5pY29uKHtjbGFzczplKGwpPy5pY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOihmKCksdyhELHtrZXk6MSxuYW1lOnQuaWNvbnx8ZShrKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6QyhkLnZhbHVlLmljb24oe2NsYXNzOmUobCk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV0pLF86MX0sMTYsWyJpZCIsIm5hbWUiLCJkaXNhYmxlZCIsImNsYXNzIl0pXSwyKSx0LmxhYmVsfHxyLmxhYmVsfHx0LmRlc2NyaXB0aW9ufHxyLmRlc2NyaXB0aW9uPyhmKCkseCgiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOkMoZC52YWx1ZS53cmFwcGVyKHtjbGFzczplKGwpPy53cmFwcGVyfSkpfSxbdC5sYWJlbHx8ci5sYWJlbD8oZigpLHcoVyhlKCQpPT09Imxpc3QiP2UoTCk6InAiKSx7a2V5OjAsZm9yOmUoXyksImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpDKGQudmFsdWUubGFiZWwoe2NsYXNzOmUobCk/LmxhYmVsfSkpfSx7ZGVmYXVsdDpnKCgpPT5beihGLiRzbG90cywibGFiZWwiLHtsYWJlbDp0LmxhYmVsfSwoKT0+W1koSSh0LmxhYmVsKSwxKV0pXSksXzozfSw4LFsiZm9yIiwiY2xhc3MiXSkpOlIoIiIsITApLHQuZGVzY3JpcHRpb258fHIuZGVzY3JpcHRpb24/KGYoKSx4KCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpDKGQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUobCk/LmRlc2NyaXB0aW9ufSkpfSxbeihGLiRzbG90cywiZGVzY3JpcHRpb24iLHtkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufSwoKT0+W1koSSh0LmRlc2NyaXB0aW9uKSwxKV0pXSwyKSk6UigiIiwhMCldLDIpKTpSKCIiLCEwKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX0pLFFlPVsidXNlciIsInByb2plY3QiLCJiaWxsaW5nIiwic2VsZmhvc3QiXSxXZT1bInJlYWQiLCJ3cml0ZSIsImRlbGV0ZSIsIm1hbmFnZSJdLGxlPW5ldyBTZXQoWyJ1c2VyOmltcGVyc29uYXRlIiwic3lzdGVtOm1hbmFnZSIsInN1cHBvcnQ6bWFuYWdlIiwicHJvZHVjdDp3cml0ZSIsInByb2R1Y3Q6ZGVsZXRlIiwicHJvZHVjdDptYW5hZ2UiXSksWGU9bmV3IFNldChRZS5mbGF0TWFwKHQ9PldlLm1hcChwPT5gJHt0fToke3B9YCkpKSxlYT1uZXcgU2V0KFtdKSxhYT17cmVhZDoiVmlldyIsd3JpdGU6IkNyZWF0ZSBhbmQgZWRpdCIsZGVsZXRlOiJEZWxldGUiLG1hbmFnZToiRnVsbCBjb250cm9sIG92ZXIiLGltcGVyc29uYXRlOiJJbXBlcnNvbmF0ZSJ9O2Z1bmN0aW9uIHRhKHQpe3JldHVybiBsZS5oYXModCk/InN5c3RlbSI6InRlbmFudCJ9ZnVuY3Rpb24gc2EodCl7Y29uc3R7c3ViamVjdDpwLGFjdGlvbjphLHNjb3BlOnJ9PUllKHQpLGI9YCR7YWFbYV0/P2F9ICR7cH1gO3JldHVybntrZXk6dCxzdWJqZWN0OnAsYWN0aW9uOmEsc2NvcGU6cj8/bnVsbCxvcmdfa2luZDp0YSh0KSxkZXNjcmlwdGlvbjpyPT09InNlbGYiP2Ake2J9IChvd24gb25seSlgOmJ9fWZ1bmN0aW9uIHJlKCl7cmV0dXJuWy4uLlhlLC4uLmxlLC4uLmVhXS5tYXAoc2EpfW5ldyBTZXQocmUoKS5tYXAodD0+dC5rZXkpKTtjb25zdCBvYT17Y2xhc3M6InNwYWNlLXktNCJ9LGxhPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtMiBtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8ifSxyYT17Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxuYT1CKHtfX25hbWU6Ik9yZ2FuaXphdGlvblJvbGVNb2RhbCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbn0scm9sZTp7fX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiIsInNhdmVkIl0sc2V0dXAodCx7ZW1pdDpwfSl7Y29uc3QgYT10LHI9cCxiPXNlKCksaz1YKCksbD1yZSgpLmZpbHRlcih2PT52Lm9yZ19raW5kPT09InRlbmFudCIpLHU9UygiIikseT1TKCIiKSxvPVMoW10pLG49UyghMSk7U2UoKCk9PmEub3Blbix2PT57diYmKHUudmFsdWU9YS5yb2xlPy5uYW1lPz8iIix5LnZhbHVlPWEucm9sZT8uZGVzY3JpcHRpb24/PyIiLG8udmFsdWU9YS5yb2xlPy5wZXJtaXNzaW9ucz9bLi4uYS5yb2xlLnBlcm1pc3Npb25zXTpbXSl9KTtmdW5jdGlvbiBjKHYscyl7cz9vLnZhbHVlPVsuLi5vLnZhbHVlLHZdOm8udmFsdWU9by52YWx1ZS5maWx0ZXIoaT0+aSE9PXYpfWFzeW5jIGZ1bmN0aW9uIG0oKXtuLnZhbHVlPSEwO3RyeXthLnJvbGU/YXdhaXQgYi51cGRhdGVSb2xlKGEucm9sZS5pZCx7bmFtZTp1LnZhbHVlLGRlc2NyaXB0aW9uOnkudmFsdWV8fHZvaWQgMCxwZXJtaXNzaW9uczpvLnZhbHVlfSk6YXdhaXQgYi5jcmVhdGVSb2xlKHtuYW1lOnUudmFsdWUsZGVzY3JpcHRpb246eS52YWx1ZXx8dm9pZCAwLHBlcm1pc3Npb25zOm8udmFsdWV9KSxrLmFkZCh7dGl0bGU6IlJvbGUgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pLHIoInNhdmVkIikscigidXBkYXRlOm9wZW4iLCExKX1jYXRjaCh2KXtjb25zdCBzPXY7ay5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gc2F2ZSByb2xlIixkZXNjcmlwdGlvbjpzPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7bi52YWx1ZT0hMX19cmV0dXJuKHYscyk9Pntjb25zdCBpPSRlLF89UmUsJD1aZSxFPWVlLFU9RmU7cmV0dXJuIGYoKSx3KFUse29wZW46dC5vcGVuLHRpdGxlOnQucm9sZT9gRWRpdCBSb2xlIOKAlCAke3Qucm9sZS5uYW1lfWA6Ik5ldyBSb2xlIiwib25VcGRhdGU6b3BlbiI6c1s0XXx8KHNbNF09ZD0+cigidXBkYXRlOm9wZW4iLGQpKX0se2JvZHk6ZygoKT0+W1YoImRpdiIsb2EsW2goXyx7bGFiZWw6Ik5hbWUiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpnKCgpPT5baChpLHttb2RlbFZhbHVlOmUodSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnNbMF18fChzWzBdPWQ9PksodSk/dS52YWx1ZT1kOm51bGwpLHBsYWNlaG9sZGVyOiJlLmcuIEVkaXRvciIsZGlzYWJsZWQ6ISF0LnJvbGU/LmlzX3N5c3RlbSxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsImRpc2FibGVkIl0pXSksXzoxfSksaChfLHtsYWJlbDoiRGVzY3JpcHRpb24ifSx7ZGVmYXVsdDpnKCgpPT5baChpLHttb2RlbFZhbHVlOmUoeSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnNbMV18fChzWzFdPWQ9PksoeSk/eS52YWx1ZT1kOm51bGwpLHBsYWNlaG9sZGVyOiJPcHRpb25hbCBkZXNjcmlwdGlvbiIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxoKF8se2xhYmVsOiJQZXJtaXNzaW9ucyJ9LHtkZWZhdWx0OmcoKCk9PltWKCJkaXYiLGxhLFsoZighMCkseChhZSxudWxsLHRlKGUobCksZD0+KGYoKSx3KCQse2tleTpkLmtleSwibW9kZWwtdmFsdWUiOmUobykuaW5jbHVkZXMoZC5rZXkpLGxhYmVsOmQua2V5LCJvblVwZGF0ZTptb2RlbFZhbHVlIjpOPT5jKGQua2V5LE49PT0hMCl9LG51bGwsOCxbIm1vZGVsLXZhbHVlIiwibGFiZWwiLCJvblVwZGF0ZTptb2RlbFZhbHVlIl0pKSksMTI4KSldKV0pLF86MX0pXSldKSxmb290ZXI6ZygoKT0+W1YoImRpdiIscmEsW2goRSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOnNbMl18fChzWzJdPWQ9PnIoInVwZGF0ZTpvcGVuIiwhMSkpfSksaChFLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzplKG4pLG9uQ2xpY2s6c1szXXx8KHNbM109ZD0+bSgpKX0sbnVsbCw4LFsibG9hZGluZyJdKV0pXSksXzoxfSw4LFsib3BlbiIsInRpdGxlIl0pfX19KSxpYT1PYmplY3QuYXNzaWduKG5hLHtfX25hbWU6Ik9yZ2FuaXphdGlvblJvbGVNb2RhbCJ9KSxkYT17a2V5OjAsY2xhc3M6InRleHQtY2VudGVyIHB5LTggdGV4dC1tdXRlZCB0ZXh0LXNtIn0sdWE9e2tleToxLGNsYXNzOiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9LGNhPXtjbGFzczoiZm9udC1tZWRpdW0ifSxwYT17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LGZhPXtjbGFzczoidGV4dC14cyB0ZXh0LWRpbW1lZCJ9LG1hPXtjbGFzczoiZmxleCBnYXAtMiBzaHJpbmstMCJ9LHdhPUIoe19fbmFtZToicm9sZXMiLHNldHVwKHQpe3plKHt0aXRsZToiUm9sZXMifSk7Y29uc3QgcD1zZSgpLGE9WCgpLHtkYXRhOnIscmVmcmVzaDpiLGVycm9yOmt9PUJlKCJvcmctcm9sZXMiLCgpPT5wLmZldGNoUm9sZXMoKSx7ZGVmYXVsdDooKT0+W119KTtFZShrKTtjb25zdCBsPVMoITEpLHU9UyhudWxsKTtmdW5jdGlvbiB5KCl7dS52YWx1ZT1udWxsLGwudmFsdWU9ITB9ZnVuY3Rpb24gbyhjKXt1LnZhbHVlPWMsbC52YWx1ZT0hMH1hc3luYyBmdW5jdGlvbiBuKGMpe3RyeXthd2FpdCBwLmRlbGV0ZVJvbGUoYyksYXdhaXQgYigpfWNhdGNoKG0pe2NvbnN0IHY9bTthLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBkZWxldGUgcm9sZSIsZGVzY3JpcHRpb246dj8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19cmV0dXJuKGMsbSk9Pntjb25zdCB2PWVlLHM9VGU7cmV0dXJuIGYoKSx4KCJkaXYiLG51bGwsW2gocyx7dGl0bGU6IlJvbGVzIixkZXNjcmlwdGlvbjoiTWFuYWdlIHJvbGVzIGFuZCB0aGVpciBwZXJtaXNzaW9ucy4iLHZhcmlhbnQ6Im5ha2VkIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6Im1iLTQifSx7ZGVmYXVsdDpnKCgpPT5baCh2LHtsYWJlbDoiTmV3IHJvbGUiLGljb246ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJ3LWZpdCBsZzptcy1hdXRvIixvbkNsaWNrOnl9KV0pLF86MX0pLGgocyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6ZygoKT0+W2UocikubGVuZ3RoPyhmKCkseCgiZGl2Iix1YSxbKGYoITApLHgoYWUsbnVsbCx0ZShlKHIpLGk9PihmKCkseCgiZGl2Iix7a2V5OmkuaWQsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweS0zIGdhcC00In0sW1YoImRpdiIsbnVsbCxbVigicCIsY2EsSShpLm5hbWUpLDEpLGkuZGVzY3JpcHRpb24/KGYoKSx4KCJwIixwYSxJKGkuZGVzY3JpcHRpb24pLDEpKTpSKCIiLCEwKSxWKCJwIixmYSxJKGkucGVybWlzc2lvbnMubGVuZ3RoKSsiIHBlcm1pc3Npb24iK0koaS5wZXJtaXNzaW9ucy5sZW5ndGghPT0xPyJzIjoiIiksMSldKSxWKCJkaXYiLG1hLFtoKHYse3NpemU6InNtIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGljb246ImktbHVjaWRlLXBlbmNpbCIsb25DbGljazpfPT5vKGkpfSxudWxsLDgsWyJvbkNsaWNrIl0pLGkuaXNfc3lzdGVtP1IoIiIsITApOihmKCksdyh2LHtrZXk6MCxzaXplOiJzbSIsY29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsb25DbGljazpfPT5uKGkuaWQpfSxudWxsLDgsWyJvbkNsaWNrIl0pKV0pXSkpKSwxMjgpKV0pKTooZigpLHgoImRpdiIsZGEsIiBObyBjdXN0b20gcm9sZXMgeWV0LiAiKSldKSxfOjF9KSxoKGlhLHtvcGVuOmUobCksIm9uVXBkYXRlOm9wZW4iOm1bMF18fChtWzBdPWk9PksobCk/bC52YWx1ZT1pOm51bGwpLHJvbGU6ZSh1KSxvblNhdmVkOm1bMV18fChtWzFdPWk9PmUoYikoKSl9LG51bGwsOCxbIm9wZW4iLCJyb2xlIl0pXSl9fX0pO2V4cG9ydHt3YSBhcyBkZWZhdWx0fTsK", "/_nuxt/BZlNNfk4.js": "aW1wb3J0e2YgYXMgaCxvIGFzIGksYyBhcyBsLGEgYXMgZCxGIGFzIHcscSBhcyBSLE0gYXMgZix0IGFzIGMsYWIgYXMgbSxiIGFzIF8sWiBhcyBTLEcgYXMgQixpIGFzIGcsYXIgYXMgQyxqIGFzIE0sdiBhcyBWLHIgYXMgan1mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0IGs9e2NsYXNzOiJmbGV4IGZsZXgtY29sIGgtZnVsbCJ9LCQ9e2NsYXNzOiJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTMgcC00In0sRD17Y2xhc3M6IndoaXRlc3BhY2UtcHJlLXdyYXAgYnJlYWstd29yZHMifSxLPXtjbGFzczoibXQtMSB0ZXh0LVsxMHB4XSBvcGFjaXR5LTcwIn0sTj1oKHtfX25hbWU6IlN1cHBvcnRDb252ZXJzYXRpb24iLHByb3BzOnttZXNzYWdlczp7fSx2aWV3ZXJSb2xlOnt9LGNhblJlcGx5Ont0eXBlOkJvb2xlYW59LHNlbmRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic2VuZCJdLHNldHVwKHkse2VtaXQ6eH0pe2NvbnN0IG49eSx2PXgsbz1qKCIiKTtmdW5jdGlvbiB1KCl7Y29uc3QgdD1vLnZhbHVlLnRyaW0oKTshdHx8bi5zZW5kaW5nfHwodigic2VuZCIsdCksby52YWx1ZT0iIil9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdC5hdXRob3JSb2xlPT09bi52aWV3ZXJSb2xlfWZ1bmN0aW9uIGIodCl7Y29uc3Qgcj1EYXRlLm5vdygpLW5ldyBEYXRlKHQpLmdldFRpbWUoKSxzPU1hdGguZmxvb3Ioci82ZTQpO2lmKHM8MSlyZXR1cm4ianVzdCBub3ciO2lmKHM8NjApcmV0dXJuYCR7c31tIGFnb2A7Y29uc3QgYT1NYXRoLmZsb29yKHMvNjApO3JldHVybiBhPDI0P2Ake2F9aCBhZ29gOmAke01hdGguZmxvb3IoYS8yNCl9ZCBhZ29gfXJldHVybih0LHIpPT57Y29uc3Qgcz1DLGE9TTtyZXR1cm4gaSgpLGwoImRpdiIsayxbZCgiZGl2IiwkLFsoaSghMCksbCh3LG51bGwsUihuLm1lc3NhZ2VzLGU9PihpKCksbCgiZGl2Iix7a2V5OmUuaWQsY2xhc3M6ZihbImZsZXgiLHAoZSk/Imp1c3RpZnktZW5kIjoianVzdGlmeS1zdGFydCJdKX0sW2QoImRpdiIse2NsYXNzOmYoWyJtYXgtdy1bODAlXSByb3VuZGVkLWxnIHB4LTMgcHktMiB0ZXh0LXNtIixwKGUpPyJiZy1wcmltYXJ5IHRleHQtaW52ZXJ0ZWQiOiJiZy1lbGV2YXRlZCB0ZXh0LWRlZmF1bHQiXSl9LFtkKCJwIixELGMoZS5ib2R5KSwxKSxkKCJwIixLLGMoZS5hdXRob3JSb2xlPT09ImFnZW50Ij8iU3VwcG9ydCI6IllvdSIpKyIgwrcgIitjKGIoZS5jcmVhdGVkQXQpKSwxKV0sMildLDIpKSksMTI4KSldKSxuLmNhblJlcGx5PyhpKCksbCgiZm9ybSIse2tleTowLGNsYXNzOiJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTMgZmxleCBpdGVtcy1lbmQgZ2FwLTIiLG9uU3VibWl0Om0odSxbInByZXZlbnQiXSl9LFtfKHMse21vZGVsVmFsdWU6ZyhvKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6clswXXx8KHJbMF09ZT0+QihvKT9vLnZhbHVlPWU6bnVsbCkscm93czoyLGF1dG9yZXNpemU6IiIscGxhY2Vob2xkZXI6IldyaXRlIGEgcmVwbHnigKYiLGNsYXNzOiJmbGV4LTEiLG9uS2V5ZG93bjpTKG0odSxbImV4YWN0IiwicHJldmVudCJdKSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25LZXlkb3duIl0pLF8oYSx7dHlwZToic3VibWl0IixpY29uOiJpLWx1Y2lkZS1zZW5kIixsb2FkaW5nOm4uc2VuZGluZyxkaXNhYmxlZDohZyhvKS50cmltKCl9LG51bGwsOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0sMzIpKTpWKCIiLCEwKV0pfX19KSx6PU9iamVjdC5hc3NpZ24oTix7X19uYW1lOiJTdXBwb3J0Q29udmVyc2F0aW9uIn0pO2V4cG9ydHt6IGFzIFN9Owo=", "/_nuxt/Bd4-Oc36.js": "aW1wb3J0e18gYXMgZH1mcm9tIi4vQ2M2emloLVIuanMiO2ltcG9ydHtmIGFzIHUsYVYgYXMgZixvIGFzIHQsaCBhcyBzLHcgYXMgYSxMIGFzIGIsYiBhcyBuLGMgYXMgaCxxIGFzIHksYWMgYXMgZyxpIGFzIHYsRiBhcyBDLGFXIGFzIGssbCBhcyBEfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgTn1mcm9tIi4vZ2hxWWJJU1QuanMiO2NvbnN0ICQ9dSh7X19uYW1lOiJEYXNoYm9hcmROYXZiYXIiLHByb3BzOnt0aXRsZTp7fX0sc2V0dXAoYyl7Y29uc3QgaT1mKCksXz1EKCgpPT5bLi4uaS5uYXZiYXJJdGVtcy52YWx1ZV0uc29ydCgoZSxvKT0+ZS5wcmlvcml0eS1vLnByaW9yaXR5KSk7cmV0dXJuKGUsbyk9Pntjb25zdCBsPWQsbT1rLHA9TjtyZXR1cm4gdCgpLHMocCx7dGl0bGU6Yy50aXRsZX0se2xlYWRpbmc6YSgoKT0+W24obCldKSxyaWdodDphKCgpPT5bYihlLiRzbG90cywicmlnaHQiKSxuKG0sbnVsbCx7ZGVmYXVsdDphKCgpPT5bKHQoITApLGgoQyxudWxsLHkodihfKSxyPT4odCgpLHMoZyhyLmNvbXBvbmVudCkse2tleTpyLmlkfSkpKSwxMjgpKV0pLF86MX0pXSksXzozfSw4LFsidGl0bGUiXSl9fX0pO2V4cG9ydHskIGFzIF99Owo=", "/_nuxt/BdZX5xgf.js": "aW1wb3J0e2YgYXMgbSxhOCBhcyBoLG8gYXMgdSxoIGFzIGYsdyBhcyBkLEwgYXMgYyxkIGFzIFIsYWEgYXMgUCxpIGFzIGwsUCBhcyBxLGF1IGFzIEEsYTkgYXMgVSxsIGFzIHAsYTcgYXMgSixhdiBhcyBLLGF3IGFzIE8sdCBhcyBULGFoIGFzIEcsYXggYXMgSCxKIGFzIFEsSyBhcyBXLGFpIGFzIFgsYWogYXMgWSxiIGFzIHgsTSBhcyBfLGogYXMgTCx2IGFzIGssYyBhcyBTLEYgYXMgVixxIGFzIFosTiBhcyBEfWZyb20iLi9vOHRkX0cwSi5qcyI7dmFyIGVlPW0oe19fbmFtZToiUGFnaW5hdGlvbkVsbGlwc2lzIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3Qgcz1lO3JldHVybiBoKCksKGEsaSk9Pih1KCksZihsKHEpLFAocyx7ImRhdGEtdHlwZSI6ImVsbGlwc2lzIn0pLHtkZWZhdWx0OmQoKCk9PltjKGEuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2lbMF18fChpWzBdPVIoIuKApiIpKV0pXSksXzozfSwxNikpfX0pLGFlPWVlO2NvbnN0WyQsdGVdPUooIlBhZ2luYXRpb25Sb290Iik7dmFyIGxlPW0oe19fbmFtZToiUGFnaW5hdGlvblJvb3QiLHByb3BzOntwYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFBhZ2U6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MX0saXRlbXNQZXJQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMH0sdG90YWw6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sc2libGluZ0NvdW50Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNob3dFZGdlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuYXYifX0sZW1pdHM6WyJ1cGRhdGU6cGFnZSJdLHNldHVwKGUse2VtaXQ6c30pe2NvbnN0IGE9ZSxpPXMse3NpYmxpbmdDb3VudDpuLGRpc2FibGVkOnQsc2hvd0VkZ2VzOm99PUEoYSk7aCgpO2NvbnN0IHI9VShhLCJwYWdlIixpLHtkZWZhdWx0VmFsdWU6YS5kZWZhdWx0UGFnZSxwYXNzaXZlOmEucGFnZT09PXZvaWQgMH0pLHk9cCgoKT0+TWF0aC5tYXgoMSxNYXRoLmNlaWwoYS50b3RhbC8oYS5pdGVtc1BlclBhZ2V8fDEpKSkpO3JldHVybiB0ZSh7cGFnZTpyLG9uUGFnZUNoYW5nZShnKXtyLnZhbHVlPWd9LHBhZ2VDb3VudDp5LHNpYmxpbmdDb3VudDpuLGRpc2FibGVkOnQsc2hvd0VkZ2VzOm99KSwoZyxOKT0+KHUoKSxmKGwocSkse2FzOmcuYXMsImFzLWNoaWxkIjpnLmFzQ2hpbGR9LHtkZWZhdWx0OmQoKCk9PltjKGcuJHNsb3RzLCJkZWZhdWx0Iix7cGFnZTpsKHIpLHBhZ2VDb3VudDp5LnZhbHVlfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIl0pKX19KSxzZT1sZSxpZT1tKHtfX25hbWU6IlBhZ2luYXRpb25GaXJzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lLGE9JCgpO2goKTtjb25zdCBpPXAoKCk9PmEucGFnZS52YWx1ZT09PTF8fGEuZGlzYWJsZWQudmFsdWUpO3JldHVybihuLHQpPT4odSgpLGYobChxKSxQKHMseyJhcmlhLWxhYmVsIjoiRmlyc3QgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UoMSkpfSkse2RlZmF1bHQ6ZCgoKT0+W2Mobi4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bdFsxXXx8KHRbMV09UigiRmlyc3QgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSksbmU9aWUsb2U9bSh7X19uYW1lOiJQYWdpbmF0aW9uTGFzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lLGE9JCgpO2goKTtjb25zdCBpPXAoKCk9PmEucGFnZS52YWx1ZT09PWEucGFnZUNvdW50LnZhbHVlfHxhLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4obix0KT0+KHUoKSxmKGwocSksUChzLHsiYXJpYS1sYWJlbCI6Ikxhc3QgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UobChhKS5wYWdlQ291bnQudmFsdWUpKX0pLHtkZWZhdWx0OmQoKCk9PltjKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3RbMV18fCh0WzFdPVIoIkxhc3QgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSkscmU9b2U7ZnVuY3Rpb24gYihlLHMpe2NvbnN0IGE9cy1lKzE7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDphfSwoaSxuKT0+bitlKX1mdW5jdGlvbiB1ZShlKXtyZXR1cm4gZS5tYXAocz0+dHlwZW9mIHM9PSJudW1iZXIiP3t0eXBlOiJwYWdlIix2YWx1ZTpzfTp7dHlwZToiZWxsaXBzaXMifSl9Y29uc3QgQj0iZWxsaXBzaXMiO2Z1bmN0aW9uIGRlKGUscyxhLGkpe2NvbnN0IHQ9cyxvPU1hdGgubWF4KGUtYSwxKSxyPU1hdGgubWluKGUrYSx0KTtpZihpKXtjb25zdCBnPU1hdGgubWluKDIqYSs1LHMpLTIsTj1vPjMmJk1hdGguYWJzKHQtZy0xKzEpPjImJk1hdGguYWJzKG8tMSk+Mix3PXI8dC0yJiZNYXRoLmFicyh0LWcpPjImJk1hdGguYWJzKHQtcik+MjtpZighTiYmdylyZXR1cm5bLi4uYigxLGcpLEIsdF07aWYoTiYmIXcpe2NvbnN0IHY9Yih0LWcrMSx0KTtyZXR1cm5bMSxCLC4uLnZdfWlmKE4mJncpe2NvbnN0IHY9YihvLHIpO3JldHVyblsxLEIsLi4udixCLHRdfXJldHVybiBiKDEsdCl9ZWxzZXtjb25zdCB5PWEqMisxO3JldHVybiBzPHk/YigxLHQpOmU8PWErMT9iKDEseSk6cy1lPD1hP2Iocy15KzEsdCk6YihvLHIpfX12YXIgdmU9bSh7X19uYW1lOiJQYWdpbmF0aW9uTGlzdCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHM9ZTtoKCk7Y29uc3QgYT0kKCksaT1wKCgpPT51ZShkZShhLnBhZ2UudmFsdWUsYS5wYWdlQ291bnQudmFsdWUsYS5zaWJsaW5nQ291bnQudmFsdWUsYS5zaG93RWRnZXMudmFsdWUpKSk7cmV0dXJuKG4sdCk9Pih1KCksZihsKHEpLEsoTyhzKSkse2RlZmF1bHQ6ZCgoKT0+W2Mobi4kc2xvdHMsImRlZmF1bHQiLHtpdGVtczppLnZhbHVlfSldKSxfOjN9LDE2KSl9fSksZmU9dmUsY2U9bSh7X19uYW1lOiJQYWdpbmF0aW9uTGlzdEl0ZW0iLHByb3BzOnt2YWx1ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lO2goKTtjb25zdCBhPSQoKSxpPXAoKCk9PmEucGFnZS52YWx1ZT09PXMudmFsdWUpLG49cCgoKT0+YS5kaXNhYmxlZC52YWx1ZSk7cmV0dXJuKHQsbyk9Pih1KCksZihsKHEpLFAocyx7ImRhdGEtdHlwZSI6InBhZ2UiLCJhcmlhLWxhYmVsIjpgUGFnZSAke3QudmFsdWV9YCwiYXJpYS1jdXJyZW50IjppLnZhbHVlPyJwYWdlIjp2b2lkIDAsImRhdGEtc2VsZWN0ZWQiOmkudmFsdWU/InRydWUiOnZvaWQgMCxkaXNhYmxlZDpuLnZhbHVlLHR5cGU6dC5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCxvbkNsaWNrOm9bMF18fChvWzBdPXI9PiFuLnZhbHVlJiZsKGEpLm9uUGFnZUNoYW5nZSh0LnZhbHVlKSl9KSx7ZGVmYXVsdDpkKCgpPT5bYyh0LiRzbG90cywiZGVmYXVsdCIse30sKCk9PltSKFQodC52YWx1ZSksMSldKV0pLF86M30sMTYsWyJhcmlhLWxhYmVsIiwiYXJpYS1jdXJyZW50IiwiZGF0YS1zZWxlY3RlZCIsImRpc2FibGVkIiwidHlwZSJdKSl9fSkscGU9Y2UsZ2U9bSh7X19uYW1lOiJQYWdpbmF0aW9uTmV4dCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lO2goKTtjb25zdCBhPSQoKSxpPXAoKCk9PmEucGFnZS52YWx1ZT09PWEucGFnZUNvdW50LnZhbHVlfHxhLmRpc2FibGVkLnZhbHVlKTtyZXR1cm4obix0KT0+KHUoKSxmKGwocSksUChzLHsiYXJpYS1sYWJlbCI6Ik5leHQgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UobChhKS5wYWdlLnZhbHVlKzEpKX0pLHtkZWZhdWx0OmQoKCk9PltjKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3RbMV18fCh0WzFdPVIoIk5leHQgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSkseWU9Z2UsYmU9bSh7X19uYW1lOiJQYWdpbmF0aW9uUHJldiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3Qgcz1lO2goKTtjb25zdCBhPSQoKSxpPXAoKCk9PmEucGFnZS52YWx1ZT09PTF8fGEuZGlzYWJsZWQudmFsdWUpO3JldHVybihuLHQpPT4odSgpLGYobChxKSxQKHMseyJhcmlhLWxhYmVsIjoiUHJldmlvdXMgUGFnZSIsdHlwZTpuLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGRpc2FibGVkOmkudmFsdWUsb25DbGljazp0WzBdfHwodFswXT1vPT4haS52YWx1ZSYmbChhKS5vblBhZ2VDaGFuZ2UobChhKS5wYWdlLnZhbHVlLTEpKX0pLHtkZWZhdWx0OmQoKCk9PltjKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W3RbMV18fCh0WzFdPVIoIlByZXYgcGFnZSIpKV0pXSksXzozfSwxNixbInR5cGUiLCJkaXNhYmxlZCJdKSl9fSksUGU9YmU7Y29uc3QgbWU9e3Nsb3RzOntyb290OiIiLGxpc3Q6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIixlbGxpcHNpczoicG9pbnRlci1ldmVudHMtbm9uZSIsbGFiZWw6Im1pbi13LTUgdGV4dC1jZW50ZXIiLGZpcnN0OiIiLHByZXY6IiIsaXRlbToiIixuZXh0OiIiLGxhc3Q6IiJ9fSxDZT17X19uYW1lOiJVUGFnaW5hdGlvbiIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGZpcnN0SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwcmV2SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuZXh0SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYXN0SWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxlbGxpcHNpc0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJuZXV0cmFsIn0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im91dGxpbmUifSxhY3RpdmVDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InByaW1hcnkifSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic29saWQifSxzaG93Q29udHJvbHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRvOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGRlZmF1bHRQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saXRlbXNQZXJQYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxwYWdlOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2hvd0VkZ2VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sc2libGluZ0NvdW50Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjJ9LHRvdGFsOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9fSxlbWl0czpbInVwZGF0ZTpwYWdlIl0sc2V0dXAoZSx7ZW1pdDpzfSl7Y29uc3QgYT1lLGk9cyxuPUcoKSx7ZGlyOnR9PUgoKSxvPVEoKSxyPVcoInBhZ2luYXRpb24iLGEpLHk9WChZKGEsImFzIiwiZGVmYXVsdFBhZ2UiLCJkaXNhYmxlZCIsIml0ZW1zUGVyUGFnZSIsInBhZ2UiLCJzaG93RWRnZXMiLCJzaWJsaW5nQ291bnQiLCJ0b3RhbCIpLGkpLGc9cCgoKT0+YS5maXJzdEljb258fCh0LnZhbHVlPT09InJ0bCI/by51aS5pY29ucy5jaGV2cm9uRG91YmxlUmlnaHQ6by51aS5pY29ucy5jaGV2cm9uRG91YmxlTGVmdCkpLE49cCgoKT0+YS5wcmV2SWNvbnx8KHQudmFsdWU9PT0icnRsIj9vLnVpLmljb25zLmNoZXZyb25SaWdodDpvLnVpLmljb25zLmNoZXZyb25MZWZ0KSksdz1wKCgpPT5hLm5leHRJY29ufHwodC52YWx1ZT09PSJydGwiP28udWkuaWNvbnMuY2hldnJvbkxlZnQ6by51aS5pY29ucy5jaGV2cm9uUmlnaHQpKSxNPXAoKCk9PmEubGFzdEljb258fCh0LnZhbHVlPT09InJ0bCI/by51aS5pY29ucy5jaGV2cm9uRG91YmxlTGVmdDpvLnVpLmljb25zLmNoZXZyb25Eb3VibGVSaWdodCkpLHY9cCgoKT0+RCh7ZXh0ZW5kOkQobWUpLC4uLm8udWk/LnBhZ2luYXRpb258fHt9fSkoKSk7cmV0dXJuKHosaGUpPT4odSgpLGYobChzZSksUChsKHkpLHsiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6di52YWx1ZS5yb290KHtjbGFzczpbbChyKT8ucm9vdCxhLmNsYXNzXX0pfSkse2RlZmF1bHQ6ZCgoe3BhZ2U6QyxwYWdlQ291bnQ6RX0pPT5beChsKGZlKSx7ImRhdGEtc2xvdCI6Imxpc3QiLGNsYXNzOl8odi52YWx1ZS5saXN0KHtjbGFzczpsKHIpPy5saXN0fSkpfSx7ZGVmYXVsdDpkKCh7aXRlbXM6an0pPT5bZS5zaG93Q29udHJvbHN8fG4uZmlyc3Q/KHUoKSxmKGwobmUpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJmaXJzdCIsY2xhc3M6Xyh2LnZhbHVlLmZpcnN0KHtjbGFzczpsKHIpPy5maXJzdH0pKX0se2RlZmF1bHQ6ZCgoKT0+W2Moei4kc2xvdHMsImZpcnN0Iix7fSwoKT0+W3goTCx7Y29sb3I6ZS5jb2xvcix2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZSxpY29uOmcudmFsdWUsdG86ZS50bz8uKDEpfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiIsInRvIl0pXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6aygiIiwhMCksZS5zaG93Q29udHJvbHN8fG4ucHJldj8odSgpLGYobChQZSkse2tleToxLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6InByZXYiLGNsYXNzOl8odi52YWx1ZS5wcmV2KHtjbGFzczpsKHIpPy5wcmV2fSkpfSx7ZGVmYXVsdDpkKCgpPT5bYyh6LiRzbG90cywicHJldiIse30sKCk9Plt4KEwse2NvbG9yOmUuY29sb3IsdmFyaWFudDplLnZhcmlhbnQsc2l6ZTplLnNpemUsaWNvbjpOLnZhbHVlLHRvOkM+MT9lLnRvPy4oQy0xKTp2b2lkIDB9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTprKCIiLCEwKSwodSghMCksUyhWLG51bGwsWihqLChJLEYpPT4odSgpLFMoVix7a2V5OkZ9LFtJLnR5cGU9PT0icGFnZSI/KHUoKSxmKGwocGUpLHtrZXk6MCwiYXMtY2hpbGQiOiIiLHZhbHVlOkkudmFsdWUsImRhdGEtc2xvdCI6Iml0ZW0iLGNsYXNzOl8odi52YWx1ZS5pdGVtKHtjbGFzczpsKHIpPy5pdGVtfSkpfSx7ZGVmYXVsdDpkKCgpPT5bYyh6LiRzbG90cywiaXRlbSIsUCh7cmVmX2ZvcjohMH0se2l0ZW06SSxpbmRleDpGLHBhZ2U6QyxwYWdlQ291bnQ6RX0pLCgpPT5beChMLHtjb2xvcjpDPT09SS52YWx1ZT9lLmFjdGl2ZUNvbG9yOmUuY29sb3IsdmFyaWFudDpDPT09SS52YWx1ZT9lLmFjdGl2ZVZhcmlhbnQ6ZS52YXJpYW50LHNpemU6ZS5zaXplLGxhYmVsOlN0cmluZyhJLnZhbHVlKSx1aTp7bGFiZWw6di52YWx1ZS5sYWJlbCgpfSx0bzplLnRvPy4oSS52YWx1ZSksc3F1YXJlOiIifSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwibGFiZWwiLCJ1aSIsInRvIl0pXSldKSxfOjJ9LDEwMzIsWyJ2YWx1ZSIsImNsYXNzIl0pKToodSgpLGYobChhZSkse2tleToxLCJhcy1jaGlsZCI6IiIsImRhdGEtc2xvdCI6ImVsbGlwc2lzIixjbGFzczpfKHYudmFsdWUuZWxsaXBzaXMoe2NsYXNzOmwocik/LmVsbGlwc2lzfSkpfSx7ZGVmYXVsdDpkKCgpPT5bYyh6LiRzbG90cywiZWxsaXBzaXMiLHt1aTp2LnZhbHVlfSwoKT0+W3goTCx7YXM6ImRpdiIsY29sb3I6ZS5jb2xvcix2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZSxpY29uOmUuZWxsaXBzaXNJY29ufHxsKG8pLnVpLmljb25zLmVsbGlwc2lzfSxudWxsLDgsWyJjb2xvciIsInZhcmlhbnQiLCJzaXplIiwiaWNvbiJdKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpXSw2NCkpKSwxMjgpKSxlLnNob3dDb250cm9sc3x8bi5uZXh0Pyh1KCksZihsKHllKSx7a2V5OjIsImFzLWNoaWxkIjoiIiwiZGF0YS1zbG90IjoibmV4dCIsY2xhc3M6Xyh2LnZhbHVlLm5leHQoe2NsYXNzOmwocik/Lm5leHR9KSl9LHtkZWZhdWx0OmQoKCk9PltjKHouJHNsb3RzLCJuZXh0Iix7fSwoKT0+W3goTCx7Y29sb3I6ZS5jb2xvcix2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZSxpY29uOncudmFsdWUsdG86QzxFP2UudG8/LihDKzEpOnZvaWQgMH0sbnVsbCw4LFsiY29sb3IiLCJ2YXJpYW50Iiwic2l6ZSIsImljb24iLCJ0byJdKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOmsoIiIsITApLGUuc2hvd0NvbnRyb2xzfHxuLmxhc3Q/KHUoKSxmKGwocmUpLHtrZXk6MywiYXMtY2hpbGQiOiIiLCJkYXRhLXNsb3QiOiJsYXN0IixjbGFzczpfKHYudmFsdWUubGFzdCh7Y2xhc3M6bChyKT8ubGFzdH0pKX0se2RlZmF1bHQ6ZCgoKT0+W2Moei4kc2xvdHMsImxhc3QiLHt9LCgpPT5beChMLHtjb2xvcjplLmNvbG9yLHZhcmlhbnQ6ZS52YXJpYW50LHNpemU6ZS5zaXplLGljb246TS52YWx1ZSx0bzplLnRvPy4oRSl9LG51bGwsOCxbImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJpY29uIiwidG8iXSldKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTprKCIiLCEwKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pXSksXzozfSwxNixbImNsYXNzIl0pKX19O2V4cG9ydHtDZSBhcyBffTsK", "/_nuxt/BeEMCyuZ.js": "aW1wb3J0e2YgYXMgRixnIGFzIE8sYXQgYXMgUCxSLG8gYXMgcCxoIGFzIEEsdyBhcyBnLGEgYXMgbixiIGFzIG8saixpIGFzIHQsdiBhcyB6LGMgYXMgXyxrIGFzIHEsZCBhcyBDLHQgYXMgayxGIGFzIEUscSBhcyBHLFYgYXMgUSxyIGFzIGMsdSBhcyBILHAgYXMgRCx6IGFzIGgsRCBhcyBXLEcgYXMgTX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIFl9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBKfWZyb20iLi9fMmxTZHIxMy5qcyI7aW1wb3J0e18gYXMgWH1mcm9tIi4vQ1c4ZktuRkUuanMiO2ltcG9ydHtfIGFzIFp9ZnJvbSIuL0JkWlg1eGdmLmpzIjtpbXBvcnR7dSBhcyBJfWZyb20iLi9EYzQ2UXdESi5qcyI7aW1wb3J0Ii4vQzdZeTZ0UjMuanMiO2NvbnN0IGVlPXtrZXk6MCxjbGFzczoidGV4dC1jZW50ZXIgcHktNiJ9LHRlPXtrZXk6MSxjbGFzczoic3BhY2UteS00In0sbmU9e2NsYXNzOiJ0ZXh0LWNlbnRlciJ9LGFlPVsic3JjIl0sc2U9e2NsYXNzOiJ0ZXh0LXNtIHNwYWNlLXktMSBiZy1lbGV2YXRlZCByb3VuZGVkIHAtMyJ9LG9lPXtjbGFzczoiZm9udC1tb25vIn0sbGU9e2tleToyLGNsYXNzOiJzcGFjZS15LTQifSxpZT17Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTIifSxjZT17Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxyZT1GKHtfX25hbWU6IkJpbGxpbmdNb2RhbCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsidXBkYXRlOm9wZW4iLCJzdWNjZXNzIl0sc2V0dXAodyx7ZW1pdDokfSl7Y29uc3QgTj13LGI9JCxCPUkoKSxsPU8oKSxyPVs1ZTQsMWU1LDJlNSw1ZTVdLHk9YyhyWzFdKSx1PWMoITEpLGY9YyghMSksaT1jKG51bGwpLHM9YyhudWxsKSxtPWMobnVsbCksdj1jKG51bGwpLHtwYXVzZTp4LHJlc3VtZTpUfT1QKGFzeW5jKCk9PntpZihpLnZhbHVlKXRyeXtjb25zdHtzdGF0dXM6YX09YXdhaXQgQi5mZXRjaFRyYW5zYWN0aW9uU3RhdHVzKGkudmFsdWUpO2E9PT0ic3VjY2VzcyImJih4KCksZi52YWx1ZT0hMCxiKCJzdWNjZXNzIikpfWNhdGNoe319LDNlMyx7aW1tZWRpYXRlOiExfSk7YXN5bmMgZnVuY3Rpb24gUygpe3UudmFsdWU9ITA7dHJ5e2NvbnN0IGE9YXdhaXQgQi5jaGVja291dCh5LnZhbHVlKTtpLnZhbHVlPWEudHJhbnNhY3Rpb25JZCxzLnZhbHVlPWEucXJVcmwsbS52YWx1ZT1hLmJhbmssdi52YWx1ZT1hLm9yZGVyQ29kZSxUKCksc2V0VGltZW91dCh4LDMwMCoxZTMpfWNhdGNoKGEpe2NvbnN0IGU9YTtsLmFkZCh7dGl0bGU6IkNoZWNrb3V0IGZhaWxlZCIsZGVzY3JpcHRpb246ZT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3UudmFsdWU9ITF9fWZ1bmN0aW9uIFUoKXt4KCksaS52YWx1ZT1udWxsLHMudmFsdWU9bnVsbCxtLnZhbHVlPW51bGwsdi52YWx1ZT1udWxsLGYudmFsdWU9ITEsYigidXBkYXRlOm9wZW4iLCExKX1yZXR1cm4gUigoKT0+Ti5vcGVuLGE9PnthfHxVKCl9KSwoYSxlKT0+e2NvbnN0IEs9cSxWPWosTD1RO3JldHVybiBwKCksQShMLHtvcGVuOncub3Blbix0aXRsZToiVG9wIHVwIGJhbGFuY2UiLCJvblVwZGF0ZTpvcGVuIjplWzJdfHwoZVsyXT1kPT5iKCJ1cGRhdGU6b3BlbiIsZCkpfSx7Ym9keTpnKCgpPT5bdChmKT8ocCgpLF8oImRpdiIsZWUsW28oSyx7bmFtZToiaS1sdWNpZGUtY2lyY2xlLWNoZWNrIixjbGFzczoic2l6ZS0xMiB0ZXh0LXN1Y2Nlc3MgbXgtYXV0byBtYi0zIn0pLGVbM118fChlWzNdPW4oInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCB0ZXh0LWxnIn0sIiBQYXltZW50IHJlY2VpdmVkISAiLC0xKSksZVs0XXx8KGVbNF09bigicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSJ9LCIgWW91ciBiYWxhbmNlIGhhcyBiZWVuIHVwZGF0ZWQuICIsLTEpKV0pKTp0KHMpPyhwKCksXygiZGl2Iix0ZSxbbigiZGl2IixuZSxbbigiaW1nIix7c3JjOnQocyksYWx0OiJTZVBheSBRUiBjb2RlIixjbGFzczoibXgtYXV0byBtYXgtdy1bMjAwcHhdIHJvdW5kZWQifSxudWxsLDgsYWUpXSksbigiZGl2IixzZSxbbigicCIsbnVsbCxbZVs1XXx8KGVbNV09bigic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkJhbms6IiwtMSkpLEMoIiAiK2sodChtKT8uYmFua05hbWUpLDEpXSksbigicCIsbnVsbCxbZVs2XXx8KGVbNl09bigic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkFjY291bnQ6IiwtMSkpLEMoIiAiK2sodChtKT8uYWNjb3VudE51bWJlciksMSldKSxuKCJwIixudWxsLFtlWzddfHwoZVs3XT1uKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiTWVtbzoiLC0xKSksZVs4XXx8KGVbOF09QygpKSxuKCJjb2RlIixvZSxrKHQobSk/LnByZWZpeCkrayh0KHYpKSwxKV0pXSksZVs5XXx8KGVbOV09bigicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIifSwiIFdhaXRpbmcgZm9yIHBheW1lbnQgY29uZmlybWF0aW9u4oCmICIsLTEpKV0pKToocCgpLF8oImRpdiIsbGUsW2VbMTBdfHwoZVsxMF09bigicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFNlbGVjdCB0aGUgYW1vdW50IHRvIHRvcCB1cDogIiwtMSkpLG4oImRpdiIsaWUsWyhwKCksXyhFLG51bGwsRyhyLGQ9Pm8oVix7a2V5OmQsdmFyaWFudDp0KHkpPT09ZD8ic29saWQiOiJvdXRsaW5lIixjb2xvcjoibmV1dHJhbCIsYmxvY2s6IiIsb25DbGljazptZT0+eS52YWx1ZT1kfSx7ZGVmYXVsdDpnKCgpPT5bQyhrKGQudG9Mb2NhbGVTdHJpbmcoInZpLVZOIikpKyIg4oKrICIsMSldKSxfOjJ9LDEwMzIsWyJ2YXJpYW50Iiwib25DbGljayJdKSksNjQpKV0pXSkpXSksZm9vdGVyOmcoKCk9PltuKCJkaXYiLGNlLFtvKFYse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNsb3NlIixvbkNsaWNrOmVbMF18fChlWzBdPWQ9PlUoKSl9KSwhdChzKSYmIXQoZik/KHAoKSxBKFYse2tleTowLGxhYmVsOiJHZW5lcmF0ZSBRUiIsbG9hZGluZzp0KHUpLG9uQ2xpY2s6ZVsxXXx8KGVbMV09ZD0+UygpKX0sbnVsbCw4LFsibG9hZGluZyJdKSk6eigiIiwhMCldKV0pLF86MX0sOCxbIm9wZW4iXSl9fX0pLHVlPU9iamVjdC5hc3NpZ24ocmUse19fbmFtZToiQmlsbGluZ01vZGFsIn0pLGRlPXtjbGFzczoic3BhY2UteS02In0scGU9e2tleTowLGNsYXNzOiJtdC0zIGZsZXgganVzdGlmeS1lbmQifSxrZT1GKHtfX25hbWU6ImJpbGxpbmciLHNldHVwKHcpe0goe3RpdGxlOiJCaWxsaW5nIn0pO2NvbnN0ICQ9SSgpLHtkYXRhOk4scmVmcmVzaDpiLGVycm9yOkJ9PUQoImJpbGxpbmctYmFsYW5jZSIsKCk9PiQuZmV0Y2hCYWxhbmNlKCkse2RlZmF1bHQ6KCk9Pih7YmFsYW5jZTowfSl9KTtoKEIpO2NvbnN0IGw9YygxKSx7ZGF0YTpyLGVycm9yOnl9PUQoKCk9PmBiaWxsaW5nLXRyYW5zYWN0aW9ucy0ke2wudmFsdWV9YCwoKT0+JC5mZXRjaFRyYW5zYWN0aW9ucyhsLnZhbHVlKSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxwYWdlOjEsbGltaXQ6MjB9KSx3YXRjaDpbbF19KTtoKHkpO2NvbnN0IHU9YyghMSksZj1be2FjY2Vzc29yS2V5OiJ0eXBlIixoZWFkZXI6IlR5cGUifSx7YWNjZXNzb3JLZXk6InN0YXR1cyIsaGVhZGVyOiJTdGF0dXMifSx7YWNjZXNzb3JLZXk6ImFtb3VudCIsaGVhZGVyOiJBbW91bnQiLGNlbGw6KHtyb3c6aX0pPT5uZXcgSW50bC5OdW1iZXJGb3JtYXQoInZpLVZOIix7c3R5bGU6ImN1cnJlbmN5IixjdXJyZW5jeToiVk5EIn0pLmZvcm1hdChpLm9yaWdpbmFsLmFtb3VudCl9LHthY2Nlc3NvcktleToiY3JlYXRlZF9hdCIsaGVhZGVyOiJEYXRlIixjZWxsOih7cm93Oml9KT0+bmV3IERhdGUoaS5vcmlnaW5hbC5jcmVhdGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKX1dO3JldHVybihpLHMpPT57Y29uc3QgbT1qLHY9WSx4PUosVD1XLFM9WCxVPVo7cmV0dXJuIHAoKSxfKCJkaXYiLGRlLFtvKHYse3RpdGxlOiJCaWxsaW5nIixkZXNjcmlwdGlvbjoiT3JnYW5pemF0aW9uIGNyZWRpdCBiYWxhbmNlIGFuZCB0b3AtdXAuIix2YXJpYW50OiJuYWtlZCIsb3JpZW50YXRpb246Imhvcml6b250YWwifSx7ZGVmYXVsdDpnKCgpPT5bbyhtLHtsYWJlbDoiVG9wIHVwIixpY29uOiJpLWx1Y2lkZS1wbHVzIixjbGFzczoidy1maXQgbGc6bXMtYXV0byIsb25DbGljazpzWzBdfHwoc1swXT1hPT51LnZhbHVlPSEwKX0pXSksXzoxfSksbyh2LHt2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpnKCgpPT5bbyhULHtsYWJlbDoiQ3JlZGl0IGJhbGFuY2UiLGNsYXNzOiJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTQifSx7ZGVmYXVsdDpnKCgpPT5bbyh4LHtsYWJlbDpgJHt0KE4pLmJhbGFuY2UudG9Mb2NhbGVTdHJpbmcoInZpLVZOIil9IOKCq2AsY29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToibGcifSxudWxsLDgsWyJsYWJlbCJdKV0pLF86MX0pXSksXzoxfSksbigiZGl2IixudWxsLFtzWzRdfHwoc1s0XT1uKCJoMyIse2NsYXNzOiJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbWItMyB0ZXh0LW11dGVkIn0sIiBUcmFuc2FjdGlvbnMgIiwtMSkpLG8oUyx7ZGF0YTp0KHIpPy5pdGVtcz8/W10sY29sdW1uczpmfSxudWxsLDgsWyJkYXRhIl0pLCh0KHIpPy5pdGVtcz8ubGVuZ3RoPz8wKT09PXQocik/LmxpbWl0PyhwKCksXygiZGl2IixwZSxbbyhVLHtwYWdlOnQobCksIm9uVXBkYXRlOnBhZ2UiOnNbMV18fChzWzFdPWE9Pk0obCk/bC52YWx1ZT1hOm51bGwpLHRvdGFsOnQobCkqdChyKS5saW1pdCsxLCJwYWdlLWNvdW50Ijp0KHIpLmxpbWl0fSxudWxsLDgsWyJwYWdlIiwidG90YWwiLCJwYWdlLWNvdW50Il0pXSkpOnooIiIsITApXSksbyh1ZSx7b3Blbjp0KHUpLCJvblVwZGF0ZTpvcGVuIjpzWzJdfHwoc1syXT1hPT5NKHUpP3UudmFsdWU9YTpudWxsKSxvblN1Y2Nlc3M6c1szXXx8KHNbM109YT0+dChiKSgpKX0sbnVsbCw4LFsib3BlbiJdKV0pfX19KTtleHBvcnR7a2UgYXMgZGVmYXVsdH07Cg==", "/_nuxt/BhWS18i7.js": "aW1wb3J0e2FEIGFzIHAsYVggYXMgZixheCBhcyBnLEogYXMgeSxLIGFzIHEsciBhcyBiLG8gYXMgaCxoIGFzIG0sYWEgYXMgdixpIGFzIGUsaiBhcyBCLGwgYXMgUyxOIGFzIGl9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7dSBhcyBDfWZyb20iLi9DdGExNXNHLS5qcyI7Y29uc3QgXz17YmFzZToibGc6aGlkZGVuIix2YXJpYW50czp7c2lkZTp7bGVmdDoiIixyaWdodDoiIn19fSxBPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNpZGViYXJUb2dnbGUiLHByb3BzOntjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZ2hvc3QifSxzaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZVZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYmxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25DbGljazp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmlld1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKG8pe2NvbnN0IGE9byx0PXAoZihhLCJpY29uIiwic2lkZSIsImNsYXNzIikpLHt0OnN9PWcoKSxyPXkoKSxuPXEoImRhc2hib2FyZFNpZGViYXJUb2dnbGUiLGEpLHtzaWRlYmFyT3BlbjpsLHRvZ2dsZVNpZGViYXI6dX09Qyh7c2lkZWJhck9wZW46YighMSksdG9nZ2xlU2lkZWJhcjooKT0+e319KSxkPVMoKCk9Pmkoe2V4dGVuZDppKF8pLC4uLnIudWk/LmRhc2hib2FyZFNpZGViYXJUb2dnbGV8fHt9fSkpO3JldHVybihjLGspPT4oaCgpLG0oQix2KHsuLi5lKHQpLGljb246YS5pY29ufHwoZShsKT9lKHIpLnVpLmljb25zLmNsb3NlOmUocikudWkuaWNvbnMubWVudSksImFyaWEtbGFiZWwiOmUobCk/ZShzKSgiZGFzaGJvYXJkU2lkZWJhclRvZ2dsZS5jbG9zZSIpOmUocykoImRhc2hib2FyZFNpZGViYXJUb2dnbGUub3BlbiIpLC4uLmMuJGF0dHJzfSx7Y2xhc3M6ZC52YWx1ZSh7Y2xhc3M6W2Uobik/LmJhc2UsYS5jbGFzc10sc2lkZTphLnNpZGV9KSxvbkNsaWNrOmUodSl9KSxudWxsLDE2LFsiY2xhc3MiLCJvbkNsaWNrIl0pKX19KTtleHBvcnR7QSBhcyBffTsK", "/_nuxt/BhaGoazo.js": "aW1wb3J0e2YgYXMgZSxvIGFzIG4sYyBhcyBvfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3Qgcz1lKHtfX25hbWU6ImluZGV4IixzZXR1cCh0KXtyZXR1cm4oYSxjKT0+KG4oKSxvKCJkaXYiKSl9fSk7ZXhwb3J0e3MgYXMgZGVmYXVsdH07Cg==", "/_nuxt/BrNRVIBA.js": "aW1wb3J0e18gYXMgeH1mcm9tIi4vQjFNZUxyaTMuanMiO2ltcG9ydHtmIGFzIHksbiBhcyBQLGcgYXMgdyxyIGFzIGksbyBhcyBVLGMgYXMgayxhLGIgYXMgZSx3IGFzIHUsRCBhcyBBLEggYXMgQyxHIGFzIEIsaSBhcyBkLGogYXMgRixhSCBhcyBWLEIgYXMgRH1mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0ICQ9e2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC02In0saj17Y2xhc3M6ImZsZXggZ2FwLTIifSxIPXkoe19fbmFtZToic2VjdXJpdHkiLHNldHVwKE4pe2NvbnN0IG09UCgpLGY9RCgpLGw9dygpLHQ9aShtLmN1cnJlbnRVc2VyPy5wcmltYXJ5X3Bob25lPz8iIiksYz1pKCExKSxyPWkoITEpO2FzeW5jIGZ1bmN0aW9uIF8oKXtjLnZhbHVlPSEwO3RyeXthd2FpdCBtLnVwZGF0ZVBob25lTnVtYmVyKHQudmFsdWUpLGwuYWRkKHt0aXRsZToiUGhvbmUgdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2gobil7bC5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gdXBkYXRlIHBob25lIixkZXNjcmlwdGlvbjpuPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtjLnZhbHVlPSExfX1hc3luYyBmdW5jdGlvbiB2KCl7ci52YWx1ZT0hMDt0cnl7YXdhaXQgZi5kZWxldGVBY2NvdW50KCksYXdhaXQgVigiL2F1dGgvbG9naW4iKX1jYXRjaChuKXtsLmFkZCh7dGl0bGU6IkNhbm5vdCBkZWxldGUgYWNjb3VudCIsZGVzY3JpcHRpb246bj8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IiIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7ci52YWx1ZT0hMX19cmV0dXJuKG4sbyk9Pntjb25zdCBzPXgsZz1DLHA9RixoPUE7cmV0dXJuIFUoKSxrKCJkaXYiLCQsW2EoImRpdiIsbnVsbCxbZShzLHt0aXRsZToiUGhvbmUgbnVtYmVyIixkZXNjcmlwdGlvbjoiVXNlZCBmb3IgYWNjb3VudCByZWNvdmVyeSBhbmQgMkZBLiIsdmFyaWFudDoibmFrZWQiLGNsYXNzOiJtYi00In0pLGUocyx7dmFyaWFudDoic3VidGxlIn0se2RlZmF1bHQ6dSgoKT0+W2UoaCx7bmFtZToicGhvbmUiLGxhYmVsOiJQaG9uZSIsZGVzY3JpcHRpb246IkZvcm1hdDogKzEyMzQ1Njc4OTAiLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDp1KCgpPT5bYSgiZGl2IixqLFtlKGcse21vZGVsVmFsdWU6ZCh0KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b1swXXx8KG9bMF09Yj0+Qih0KT90LnZhbHVlPWI6bnVsbCkscGxhY2Vob2xkZXI6IisxMjM0NTY3ODkwIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKSxlKHAse2xhYmVsOiJTYXZlIixsb2FkaW5nOmQoYyksb25DbGljazpffSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9KV0pLF86MX0pXSksYSgiZGl2IixudWxsLFtlKHMse3RpdGxlOiJEYW5nZXIgem9uZSIsZGVzY3JpcHRpb246IklycmV2ZXJzaWJsZSBhY2NvdW50IGFjdGlvbnMuIix2YXJpYW50OiJuYWtlZCIsY2xhc3M6Im1iLTQifSksZShzLHt2YXJpYW50OiJzdWJ0bGUiLHVpOntjb250YWluZXI6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNCJ9fSx7ZGVmYXVsdDp1KCgpPT5bb1sxXXx8KG9bMV09YSgiZGl2IixudWxsLFthKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQifSwiIERlbGV0ZSBhY2NvdW50ICIpLGEoInAiLHtjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIn0sIiBQZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgZGF0YS4gIildLC0xKSksZShwLHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGxhYmVsOiJEZWxldGUgYWNjb3VudCIsbG9hZGluZzpkKHIpLG9uQ2xpY2s6dn0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0pXSldKX19fSk7ZXhwb3J0e0ggYXMgZGVmYXVsdH07Cg==", "/_nuxt/Bt8S0dml.js": "aW1wb3J0e2JrIGFzIG59ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBmPSJyb3ZpbmdGb2N1c0dyb3VwLm9uRW50cnlGb2N1cyIsdT17YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfSxzPXtBcnJvd0xlZnQ6InByZXYiLEFycm93VXA6InByZXYiLEFycm93UmlnaHQ6Im5leHQiLEFycm93RG93bjoibmV4dCIsUGFnZVVwOiJmaXJzdCIsSG9tZToiZmlyc3QiLFBhZ2VEb3duOiJsYXN0IixFbmQ6Imxhc3QifTtmdW5jdGlvbiBpKHIsdCl7cmV0dXJuIHQhPT0icnRsIj9yOnI9PT0iQXJyb3dMZWZ0Ij8iQXJyb3dSaWdodCI6cj09PSJBcnJvd1JpZ2h0Ij8iQXJyb3dMZWZ0IjpyfWZ1bmN0aW9uIGEocix0LGUpe2NvbnN0IG89aShyLmtleSxlKTtpZighKHQ9PT0idmVydGljYWwiJiZbIkFycm93TGVmdCIsIkFycm93UmlnaHQiXS5pbmNsdWRlcyhvKSkmJiEodD09PSJob3Jpem9udGFsIiYmWyJBcnJvd1VwIiwiQXJyb3dEb3duIl0uaW5jbHVkZXMobykpKXJldHVybiBzW29dfWZ1bmN0aW9uIHcocix0PSExKXtjb25zdCBlPW4oKTtmb3IoY29uc3QgbyBvZiByKWlmKG89PT1lfHwoby5mb2N1cyh7cHJldmVudFNjcm9sbDp0fSksbigpIT09ZSkpcmV0dXJufWZ1bmN0aW9uIEEocix0KXtyZXR1cm4gci5tYXAoKGUsbyk9PnJbKHQrbyklci5sZW5ndGhdKX1leHBvcnR7ZiBhcyBFLHMgYXMgTSx1IGFzIGEsdyBhcyBmLGEgYXMgZyxBIGFzIHd9Owo=", "/_nuxt/BuLSuA8M.js": "ZnVuY3Rpb24gdShlLG4sdCl7ZnVuY3Rpb24gcihjLGEpe2lmKGMuX3pvZHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl96b2QiLHt2YWx1ZTp7ZGVmOmEsY29uc3RyOmksdHJhaXRzOm5ldyBTZXR9LGVudW1lcmFibGU6ITF9KSxjLl96b2QudHJhaXRzLmhhcyhlKSlyZXR1cm47Yy5fem9kLnRyYWl0cy5hZGQoZSksbihjLGEpO2NvbnN0IGY9aS5wcm90b3R5cGUsbD1PYmplY3Qua2V5cyhmKTtmb3IobGV0IG09MDttPGwubGVuZ3RoO20rKyl7Y29uc3QgcD1sW21dO3AgaW4gY3x8KGNbcF09ZltwXS5iaW5kKGMpKX19Y29uc3Qgbz10Py5QYXJlbnQ/P09iamVjdDtjbGFzcyBzIGV4dGVuZHMgb3t9T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIm5hbWUiLHt2YWx1ZTplfSk7ZnVuY3Rpb24gaShjKXt2YXIgYTtjb25zdCBmPXQ/LlBhcmVudD9uZXcgczp0aGlzO3IoZixjKSwoYT1mLl96b2QpLmRlZmVycmVkPz8oYS5kZWZlcnJlZD1bXSk7Zm9yKGNvbnN0IGwgb2YgZi5fem9kLmRlZmVycmVkKWwoKTtyZXR1cm4gZn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksImluaXQiLHt2YWx1ZTpyfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpjPT50Py5QYXJlbnQmJmMgaW5zdGFuY2VvZiB0LlBhcmVudD8hMDpjPy5fem9kPy50cmFpdHM/LmhhcyhlKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJuYW1lIix7dmFsdWU6ZX0pLGl9Y2xhc3MgUiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkVuY291bnRlcmVkIFByb21pc2UgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlLiBVc2UgLnBhcnNlQXN5bmMoKSBpbnN0ZWFkLiIpfX1jbGFzcyBqZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4pe3N1cGVyKGBFbmNvdW50ZXJlZCB1bmlkaXJlY3Rpb25hbCB0cmFuc2Zvcm0gZHVyaW5nIGVuY29kZTogJHtufWApLHRoaXMubmFtZT0iWm9kRW5jb2RlRXJyb3IifX1jb25zdCBBZT17fTtmdW5jdGlvbiBOKGUpe3JldHVybiBBZX1mdW5jdGlvbiBDZShlKXtjb25zdCBuPU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKHI9PnR5cGVvZiByPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW3Isb10pPT5uLmluZGV4T2YoK3IpPT09LTEpLm1hcCgoW3Isb10pPT5vKX1mdW5jdGlvbiBuZShlLG4pe3JldHVybiB0eXBlb2Ygbj09ImJpZ2ludCI/bi50b1N0cmluZygpOm59ZnVuY3Rpb24gb2UoZSl7cmV0dXJue2dldCB2YWx1ZSgpe3tjb25zdCBuPWUoKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInZhbHVlIix7dmFsdWU6bn0pLG59fX19ZnVuY3Rpb24gaWUoZSl7cmV0dXJuIGU9PW51bGx9ZnVuY3Rpb24gc2UoZSl7Y29uc3Qgbj1lLnN0YXJ0c1dpdGgoIl4iKT8xOjAsdD1lLmVuZHNXaXRoKCIkIik/ZS5sZW5ndGgtMTplLmxlbmd0aDtyZXR1cm4gZS5zbGljZShuLHQpfWZ1bmN0aW9uIHBuKGUsbil7Y29uc3QgdD0oZS50b1N0cmluZygpLnNwbGl0KCIuIilbMV18fCIiKS5sZW5ndGgscj1uLnRvU3RyaW5nKCk7bGV0IG89KHIuc3BsaXQoIi4iKVsxXXx8IiIpLmxlbmd0aDtpZihvPT09MCYmL1xkP2UtXGQ/Ly50ZXN0KHIpKXtjb25zdCBhPXIubWF0Y2goL1xkP2UtKFxkPykvKTthPy5bMV0mJihvPU51bWJlci5wYXJzZUludChhWzFdKSl9Y29uc3Qgcz10Pm8/dDpvLGk9TnVtYmVyLnBhcnNlSW50KGUudG9GaXhlZChzKS5yZXBsYWNlKCIuIiwiIikpLGM9TnVtYmVyLnBhcnNlSW50KG4udG9GaXhlZChzKS5yZXBsYWNlKCIuIiwiIikpO3JldHVybiBpJWMvMTAqKnN9Y29uc3QgbGU9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gXyhlLG4sdCl7bGV0IHI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0KCl7aWYociE9PWxlKXJldHVybiByPT09dm9pZCAwJiYocj1sZSxyPXQoKSkscn0sc2V0KG8pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se3ZhbHVlOm99KX0sY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gQShlLG4sdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7dmFsdWU6dCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIFAoLi4uZSl7Y29uc3Qgbj17fTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpO09iamVjdC5hc3NpZ24obixyKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sbil9ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIGhuKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgUmU9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gVyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbCYmIUFycmF5LmlzQXJyYXkoZSl9Y29uc3QgbW49b2UoKCk9PntpZih0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yPy51c2VyQWdlbnQ/LmluY2x1ZGVzKCJDbG91ZGZsYXJlIikpcmV0dXJuITE7dHJ5e2NvbnN0IGU9RnVuY3Rpb247cmV0dXJuIG5ldyBlKCIiKSwhMH1jYXRjaHtyZXR1cm4hMX19KTtmdW5jdGlvbiBVKGUpe2lmKFcoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCBuPWUuY29uc3RydWN0b3I7aWYobj09PXZvaWQgMHx8dHlwZW9mIG4hPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3QgdD1uLnByb3RvdHlwZTtyZXR1cm4hKFcodCk9PT0hMXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsImlzUHJvdG90eXBlT2YiKT09PSExKX1mdW5jdGlvbiBEZShlKXtyZXR1cm4gVShlKT97Li4uZX06QXJyYXkuaXNBcnJheShlKT9bLi4uZV06ZX1jb25zdCBfbj1uZXcgU2V0KFsic3RyaW5nIiwibnVtYmVyIiwic3ltYm9sIl0pO2Z1bmN0aW9uIFkoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBUKGUsbix0KXtjb25zdCByPW5ldyBlLl96b2QuY29uc3RyKG4/P2UuX3pvZC5kZWYpO3JldHVybighbnx8dD8ucGFyZW50KSYmKHIuX3pvZC5wYXJlbnQ9ZSkscn1mdW5jdGlvbiBkKGUpe2NvbnN0IG49ZTtpZighbilyZXR1cm57fTtpZih0eXBlb2Ygbj09InN0cmluZyIpcmV0dXJue2Vycm9yOigpPT5ufTtpZihuPy5tZXNzYWdlIT09dm9pZCAwKXtpZihuPy5lcnJvciE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGJvdGggYG1lc3NhZ2VgIGFuZCBgZXJyb3JgIHBhcmFtcyIpO24uZXJyb3I9bi5tZXNzYWdlfXJldHVybiBkZWxldGUgbi5tZXNzYWdlLHR5cGVvZiBuLmVycm9yPT0ic3RyaW5nIj97Li4ubixlcnJvcjooKT0+bi5lcnJvcn06bn1mdW5jdGlvbiBnbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZmlsdGVyKG49PmVbbl0uX3pvZC5vcHRpbj09PSJvcHRpb25hbCImJmVbbl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCB2bj17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX07ZnVuY3Rpb24gem4oZSxuKXtjb25zdCB0PWUuX3pvZC5kZWYscj10LmNoZWNrcztpZihyJiZyLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLnBpY2soKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3Qgcz1QKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGk9e307Zm9yKGNvbnN0IGMgaW4gbil7aWYoIShjIGluIHQuc2hhcGUpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7Y30iYCk7bltjXSYmKGlbY109dC5zaGFwZVtjXSl9cmV0dXJuIEEodGhpcywic2hhcGUiLGkpLGl9LGNoZWNrczpbXX0pO3JldHVybiBUKGUscyl9ZnVuY3Rpb24gYm4oZSxuKXtjb25zdCB0PWUuX3pvZC5kZWYscj10LmNoZWNrcztpZihyJiZyLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLm9taXQoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3Qgcz1QKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGk9ey4uLmUuX3pvZC5kZWYuc2hhcGV9O2Zvcihjb25zdCBjIGluIG4pe2lmKCEoYyBpbiB0LnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke2N9ImApO25bY10mJmRlbGV0ZSBpW2NdfXJldHVybiBBKHRoaXMsInNoYXBlIixpKSxpfSxjaGVja3M6W119KTtyZXR1cm4gVChlLHMpfWZ1bmN0aW9uIHluKGUsbil7aWYoIVUobikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IHRvIGV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCB0PWUuX3pvZC5kZWYuY2hlY2tzO2lmKHQmJnQubGVuZ3RoPjApe2NvbnN0IHM9ZS5fem9kLmRlZi5zaGFwZTtmb3IoY29uc3QgaSBpbiBuKWlmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxpKSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBvdmVyd3JpdGUga2V5cyBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzLiBVc2UgYC5zYWZlRXh0ZW5kKClgIGluc3RlYWQuIil9Y29uc3Qgbz1QKGUuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IHM9ey4uLmUuX3pvZC5kZWYuc2hhcGUsLi4ubn07cmV0dXJuIEEodGhpcywic2hhcGUiLHMpLHN9fSk7cmV0dXJuIFQoZSxvKX1mdW5jdGlvbiB3bihlLG4pe2lmKCFVKG4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCB0byBzYWZlRXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHQ9UChlLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCByPXsuLi5lLl96b2QuZGVmLnNoYXBlLC4uLm59O3JldHVybiBBKHRoaXMsInNoYXBlIixyKSxyfX0pO3JldHVybiBUKGUsdCl9ZnVuY3Rpb24ga24oZSxuKXtjb25zdCB0PVAoZS5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgcj17Li4uZS5fem9kLmRlZi5zaGFwZSwuLi5uLl96b2QuZGVmLnNoYXBlfTtyZXR1cm4gQSh0aGlzLCJzaGFwZSIscikscn0sZ2V0IGNhdGNoYWxsKCl7cmV0dXJuIG4uX3pvZC5kZWYuY2F0Y2hhbGx9LGNoZWNrczpbXX0pO3JldHVybiBUKGUsdCl9ZnVuY3Rpb24gJG4oZSxuLHQpe2NvbnN0IG89bi5fem9kLmRlZi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5wYXJ0aWFsKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9UChuLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBjPW4uX3pvZC5kZWYuc2hhcGUsYT17Li4uY307aWYodClmb3IoY29uc3QgZiBpbiB0KXtpZighKGYgaW4gYykpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtmfSJgKTt0W2ZdJiYoYVtmXT1lP25ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmNbZl19KTpjW2ZdKX1lbHNlIGZvcihjb25zdCBmIGluIGMpYVtmXT1lP25ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmNbZl19KTpjW2ZdO3JldHVybiBBKHRoaXMsInNoYXBlIixhKSxhfSxjaGVja3M6W119KTtyZXR1cm4gVChuLGkpfWZ1bmN0aW9uIFpuKGUsbix0KXtjb25zdCByPVAobi5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgbz1uLl96b2QuZGVmLnNoYXBlLHM9ey4uLm99O2lmKHQpZm9yKGNvbnN0IGkgaW4gdCl7aWYoIShpIGluIHMpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7aX0iYCk7dFtpXSYmKHNbaV09bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6b1tpXX0pKX1lbHNlIGZvcihjb25zdCBpIGluIG8pc1tpXT1uZXcgZSh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTpvW2ldfSk7cmV0dXJuIEEodGhpcywic2hhcGUiLHMpLHN9fSk7cmV0dXJuIFQobixyKX1mdW5jdGlvbiBDKGUsbj0wKXtpZihlLmFib3J0ZWQ9PT0hMClyZXR1cm4hMDtmb3IobGV0IHQ9bjt0PGUuaXNzdWVzLmxlbmd0aDt0KyspaWYoZS5pc3N1ZXNbdF0/LmNvbnRpbnVlIT09ITApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24geGUoZSxuKXtyZXR1cm4gbi5tYXAodD0+e3ZhciByO3JldHVybihyPXQpLnBhdGg/PyhyLnBhdGg9W10pLHQucGF0aC51bnNoaWZ0KGUpLHR9KX1mdW5jdGlvbiBNKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/ZTplPy5tZXNzYWdlfWZ1bmN0aW9uIGooZSxuLHQpe2NvbnN0IHI9ey4uLmUscGF0aDplLnBhdGg/P1tdfTtpZighZS5tZXNzYWdlKXtjb25zdCBvPU0oZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P00obj8uZXJyb3I/LihlKSk/P00odC5jdXN0b21FcnJvcj8uKGUpKT8/TSh0LmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCI7ci5tZXNzYWdlPW99cmV0dXJuIGRlbGV0ZSByLmluc3QsZGVsZXRlIHIuY29udGludWUsbj8ucmVwb3J0SW5wdXR8fGRlbGV0ZSByLmlucHV0LHJ9ZnVuY3Rpb24gY2UoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5Ijp0eXBlb2YgZT09InN0cmluZyI/InN0cmluZyI6InVua25vd24ifWZ1bmN0aW9uIEYoLi4uZSl7Y29uc3Rbbix0LHJdPWU7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj97bWVzc2FnZTpuLGNvZGU6ImN1c3RvbSIsaW5wdXQ6dCxpbnN0OnJ9OnsuLi5ufX1jb25zdCBVZT0oZSxuKT0+e2UubmFtZT0iJFpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImlzc3VlcyIse3ZhbHVlOm4sZW51bWVyYWJsZTohMX0pLGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShuLG5lLDIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0b1N0cmluZyIse3ZhbHVlOigpPT5lLm1lc3NhZ2UsZW51bWVyYWJsZTohMX0pfSxGZT11KCIkWm9kRXJyb3IiLFVlKSxKZT11KCIkWm9kRXJyb3IiLFVlLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBPbihlLG49dD0+dC5tZXNzYWdlKXtjb25zdCB0PXt9LHI9W107Zm9yKGNvbnN0IG8gb2YgZS5pc3N1ZXMpby5wYXRoLmxlbmd0aD4wPyh0W28ucGF0aFswXV09dFtvLnBhdGhbMF1dfHxbXSx0W28ucGF0aFswXV0ucHVzaChuKG8pKSk6ci5wdXNoKG4obykpO3JldHVybntmb3JtRXJyb3JzOnIsZmllbGRFcnJvcnM6dH19ZnVuY3Rpb24gU24oZSxuPXQ9PnQubWVzc2FnZSl7Y29uc3QgdD17X2Vycm9yczpbXX0scj1vPT57Zm9yKGNvbnN0IHMgb2Ygby5pc3N1ZXMpaWYocy5jb2RlPT09ImludmFsaWRfdW5pb24iJiZzLmVycm9ycy5sZW5ndGgpcy5lcnJvcnMubWFwKGk9PnIoe2lzc3VlczppfSkpO2Vsc2UgaWYocy5jb2RlPT09ImludmFsaWRfa2V5IilyKHtpc3N1ZXM6cy5pc3N1ZXN9KTtlbHNlIGlmKHMuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKXIoe2lzc3VlczpzLmlzc3Vlc30pO2Vsc2UgaWYocy5wYXRoLmxlbmd0aD09PTApdC5fZXJyb3JzLnB1c2gobihzKSk7ZWxzZXtsZXQgaT10LGM9MDtmb3IoO2M8cy5wYXRoLmxlbmd0aDspe2NvbnN0IGE9cy5wYXRoW2NdO2M9PT1zLnBhdGgubGVuZ3RoLTE/KGlbYV09aVthXXx8e19lcnJvcnM6W119LGlbYV0uX2Vycm9ycy5wdXNoKG4ocykpKTppW2FdPWlbYV18fHtfZXJyb3JzOltdfSxpPWlbYV0sYysrfX19O3JldHVybiByKGUpLHR9Y29uc3QgdWU9ZT0+KG4sdCxyLG8pPT57Y29uc3Qgcz1yP09iamVjdC5hc3NpZ24ocix7YXN5bmM6ITF9KTp7YXN5bmM6ITF9LGk9bi5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LHMpO2lmKGkgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBSO2lmKGkuaXNzdWVzLmxlbmd0aCl7Y29uc3QgYz1uZXcobz8uRXJyPz9lKShpLmlzc3Vlcy5tYXAoYT0+aihhLHMsTigpKSkpO3Rocm93IFJlKGMsbz8uY2FsbGVlKSxjfXJldHVybiBpLnZhbHVlfSxhZT1lPT5hc3luYyhuLHQscixvKT0+e2NvbnN0IHM9cj9PYmplY3QuYXNzaWduKHIse2FzeW5jOiEwfSk6e2FzeW5jOiEwfTtsZXQgaT1uLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0scyk7aWYoaSBpbnN0YW5jZW9mIFByb21pc2UmJihpPWF3YWl0IGkpLGkuaXNzdWVzLmxlbmd0aCl7Y29uc3QgYz1uZXcobz8uRXJyPz9lKShpLmlzc3Vlcy5tYXAoYT0+aihhLHMsTigpKSkpO3Rocm93IFJlKGMsbz8uY2FsbGVlKSxjfXJldHVybiBpLnZhbHVlfSxYPWU9PihuLHQscik9Pntjb25zdCBvPXI/ey4uLnIsYXN5bmM6ITF9Onthc3luYzohMX0scz1uLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbyk7aWYocyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IFI7cmV0dXJuIHMuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcoZT8/RmUpKHMuaXNzdWVzLm1hcChpPT5qKGksbyxOKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6cy52YWx1ZX19LEluPVgoSmUpLHE9ZT0+YXN5bmMobix0LHIpPT57Y29uc3Qgbz1yP09iamVjdC5hc3NpZ24ocix7YXN5bmM6ITB9KTp7YXN5bmM6ITB9O2xldCBzPW4uX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcgZShzLmlzc3Vlcy5tYXAoaT0+aihpLG8sTigpKSkpfTp7c3VjY2VzczohMCxkYXRhOnMudmFsdWV9fSxFbj1xKEplKSxQbj1lPT4obix0LHIpPT57Y29uc3Qgbz1yP09iamVjdC5hc3NpZ24ocix7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9KTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB1ZShlKShuLHQsbyl9LFRuPWU9PihuLHQscik9PnVlKGUpKG4sdCxyKSxObj1lPT5hc3luYyhuLHQscik9Pntjb25zdCBvPXI/T2JqZWN0LmFzc2lnbihyLHtkaXJlY3Rpb246ImJhY2t3YXJkIn0pOntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIGFlKGUpKG4sdCxvKX0sam49ZT0+YXN5bmMobix0LHIpPT5hZShlKShuLHQsciksQW49ZT0+KG4sdCxyKT0+e2NvbnN0IG89cj9PYmplY3QuYXNzaWduKHIse2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gWChlKShuLHQsbyl9LENuPWU9PihuLHQscik9PlgoZSkobix0LHIpLFJuPWU9PmFzeW5jKG4sdCxyKT0+e2NvbnN0IG89cj9PYmplY3QuYXNzaWduKHIse2RpcmVjdGlvbjoiYmFja3dhcmQifSk6e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gcShlKShuLHQsbyl9LERuPWU9PmFzeW5jKG4sdCxyKT0+cShlKShuLHQscikseG49L15bY0NdW15ccy1dezgsfSQvLFVuPS9eWzAtOWEtel0rJC8sRm49L15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvLEpuPS9eWzAtOWEtdkEtVl17MjB9JC8sTW49L15bQS1aYS16MC05XXsyN30kLyxMbj0vXlthLXpBLVowLTlfLV17MjF9JC8sVm49L15QKD86KFxkK1cpfCg/IS4qVykoPz1cZHxUXGQpKFxkK1kpPyhcZCtNKT8oXGQrRCk/KFQoPz1cZCkoXGQrSCk/KFxkK00pPyhcZCsoWy4sXVxkKyk/Uyk/KT8pJC8sV249L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLHBlPWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxCbj0vXig/IVwuKSg/IS4qXC5cLikoW0EtWmEtejAtOV8nK1wtXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxHbj0iXihcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXHB7RW1vamlfQ29tcG9uZW50fSkrJCI7ZnVuY3Rpb24gS24oKXtyZXR1cm4gbmV3IFJlZ0V4cChHbiwidSIpfWNvbnN0IFluPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxYbj0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopKSQvLHFuPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLyxIbj0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxRbj0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyxNZT0vXltBLVphLXowLTlfLV0qJC8sZXQ9L15cK1sxLTldXGR7NiwxNH0kLyxMZT0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSIsbnQ9bmV3IFJlZ0V4cChgXiR7TGV9JGApO2Z1bmN0aW9uIFZlKGUpe2NvbnN0IG49Iig/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCI7cmV0dXJuIHR5cGVvZiBlLnByZWNpc2lvbj09Im51bWJlciI/ZS5wcmVjaXNpb249PT0tMT9gJHtufWA6ZS5wcmVjaXNpb249PT0wP2Ake259OlswLTVdXFxkYDpgJHtufTpbMC01XVxcZFxcLlxcZHske2UucHJlY2lzaW9ufX1gOmAke259KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHR0KGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHtWZShlKX0kYCl9ZnVuY3Rpb24gcnQoZSl7Y29uc3Qgbj1WZSh7cHJlY2lzaW9uOmUucHJlY2lzaW9ufSksdD1bIloiXTtlLmxvY2FsJiZ0LnB1c2goIiIpLGUub2Zmc2V0JiZ0LnB1c2goIihbKy1dKD86WzAxXVxcZHwyWzAtM10pOlswLTVdXFxkKSIpO2NvbnN0IHI9YCR7bn0oPzoke3Quam9pbigifCIpfSlgO3JldHVybiBuZXcgUmVnRXhwKGBeJHtMZX1UKD86JHtyfSkkYCl9Y29uc3Qgb3Q9ZT0+e2NvbnN0IG49ZT9gW1xcc1xcU117JHtlPy5taW5pbXVtPz8wfSwke2U/Lm1heGltdW0/PyIifX1gOiJbXFxzXFxTXSoiO3JldHVybiBuZXcgUmVnRXhwKGBeJHtufSRgKX0saXQ9L14tP1xkKyQvLHN0PS9eLT9cZCsoPzpcLlxkKyk/JC8sY3Q9L14oPzp0cnVlfGZhbHNlKSQvaSx1dD0vXlteQS1aXSokLyxhdD0vXlteYS16XSokLyxPPXUoIiRab2RDaGVjayIsKGUsbik9Pnt2YXIgdDtlLl96b2Q/PyhlLl96b2Q9e30pLGUuX3pvZC5kZWY9biwodD1lLl96b2QpLm9uYXR0YWNoPz8odC5vbmF0dGFjaD1bXSl9KSxXZT17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxCZT11KCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsbik9PntPLmluaXQoZSxuKTtjb25zdCB0PVdlW3R5cGVvZiBuLnZhbHVlXTtlLl96b2Qub25hdHRhY2gucHVzaChyPT57Y29uc3Qgbz1yLl96b2QuYmFnLHM9KG4uaW5jbHVzaXZlP28ubWF4aW11bTpvLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi52YWx1ZTxzJiYobi5pbmNsdXNpdmU/by5tYXhpbXVtPW4udmFsdWU6by5leGNsdXNpdmVNYXhpbXVtPW4udmFsdWUpfSksZS5fem9kLmNoZWNrPXI9Pnsobi5pbmNsdXNpdmU/ci52YWx1ZTw9bi52YWx1ZTpyLnZhbHVlPG4udmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtvcmlnaW46dCxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnR5cGVvZiBuLnZhbHVlPT0ib2JqZWN0Ij9uLnZhbHVlLmdldFRpbWUoKTpuLnZhbHVlLGlucHV0OnIudmFsdWUsaW5jbHVzaXZlOm4uaW5jbHVzaXZlLGluc3Q6ZSxjb250aW51ZTohbi5hYm9ydH0pfX0pLEdlPXUoIiRab2RDaGVja0dyZWF0ZXJUaGFuIiwoZSxuKT0+e08uaW5pdChlLG4pO2NvbnN0IHQ9V2VbdHlwZW9mIG4udmFsdWVdO2UuX3pvZC5vbmF0dGFjaC5wdXNoKHI9Pntjb25zdCBvPXIuX3pvZC5iYWcscz0obi5pbmNsdXNpdmU/by5taW5pbXVtOm8uZXhjbHVzaXZlTWluaW11bSk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLnZhbHVlPnMmJihuLmluY2x1c2l2ZT9vLm1pbmltdW09bi52YWx1ZTpvLmV4Y2x1c2l2ZU1pbmltdW09bi52YWx1ZSl9KSxlLl96b2QuY2hlY2s9cj0+eyhuLmluY2x1c2l2ZT9yLnZhbHVlPj1uLnZhbHVlOnIudmFsdWU+bi52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe29yaWdpbjp0LGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0eXBlb2Ygbi52YWx1ZT09Im9iamVjdCI/bi52YWx1ZS5nZXRUaW1lKCk6bi52YWx1ZSxpbnB1dDpyLnZhbHVlLGluY2x1c2l2ZTpuLmluY2x1c2l2ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxmdD11KCIkWm9kQ2hlY2tNdWx0aXBsZU9mIiwoZSxuKT0+e08uaW5pdChlLG4pLGUuX3pvZC5vbmF0dGFjaC5wdXNoKHQ9Pnt2YXIgcjsocj10Ll96b2QuYmFnKS5tdWx0aXBsZU9mPz8oci5tdWx0aXBsZU9mPW4udmFsdWUpfSksZS5fem9kLmNoZWNrPXQ9PntpZih0eXBlb2YgdC52YWx1ZSE9dHlwZW9mIG4udmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2YgdC52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSVuLnZhbHVlPT09QmlnSW50KDApOnBuKHQudmFsdWUsbi52YWx1ZSk9PT0wKXx8dC5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiB0LnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjpuLnZhbHVlLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSksbHQ9dSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSxuKT0+e08uaW5pdChlLG4pLG4uZm9ybWF0PW4uZm9ybWF0fHwiZmxvYXQ2NCI7Y29uc3QgdD1uLmZvcm1hdD8uaW5jbHVkZXMoImludCIpLHI9dD8iaW50IjoibnVtYmVyIixbbyxzXT12bltuLmZvcm1hdF07ZS5fem9kLm9uYXR0YWNoLnB1c2goaT0+e2NvbnN0IGM9aS5fem9kLmJhZztjLmZvcm1hdD1uLmZvcm1hdCxjLm1pbmltdW09byxjLm1heGltdW09cyx0JiYoYy5wYXR0ZXJuPWl0KX0pLGUuX3pvZC5jaGVjaz1pPT57Y29uc3QgYz1pLnZhbHVlO2lmKHQpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGMpKXtpLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpyLGZvcm1hdDpuLmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmMsaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihjKSl7Yz4wP2kuaXNzdWVzLnB1c2goe2lucHV0OmMsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpyLGluY2x1c2l2ZTohMCxjb250aW51ZTohbi5hYm9ydH0pOmkuaXNzdWVzLnB1c2goe2lucHV0OmMsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOnIsaW5jbHVzaXZlOiEwLGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufX1jPG8mJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpjLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpvLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KSxjPnMmJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpjLGNvZGU6InRvb19iaWciLG1heGltdW06cyxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSksZHQ9dSgiJFpvZENoZWNrTWF4TGVuZ3RoIiwoZSxuKT0+e3ZhciB0O08uaW5pdChlLG4pLCh0PWUuX3pvZC5kZWYpLndoZW4/Pyh0LndoZW49cj0+e2NvbnN0IG89ci52YWx1ZTtyZXR1cm4haWUobykmJm8ubGVuZ3RoIT09dm9pZCAwfSksZS5fem9kLm9uYXR0YWNoLnB1c2gocj0+e2NvbnN0IG89ci5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi5tYXhpbXVtPG8mJihyLl96b2QuYmFnLm1heGltdW09bi5tYXhpbXVtKX0pLGUuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlO2lmKG8ubGVuZ3RoPD1uLm1heGltdW0pcmV0dXJuO2NvbnN0IGk9Y2Uobyk7ci5pc3N1ZXMucHVzaCh7b3JpZ2luOmksY29kZToidG9vX2JpZyIsbWF4aW11bTpuLm1heGltdW0saW5jbHVzaXZlOiEwLGlucHV0Om8saW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSkscHQ9dSgiJFpvZENoZWNrTWluTGVuZ3RoIiwoZSxuKT0+e3ZhciB0O08uaW5pdChlLG4pLCh0PWUuX3pvZC5kZWYpLndoZW4/Pyh0LndoZW49cj0+e2NvbnN0IG89ci52YWx1ZTtyZXR1cm4haWUobykmJm8ubGVuZ3RoIT09dm9pZCAwfSksZS5fem9kLm9uYXR0YWNoLnB1c2gocj0+e2NvbnN0IG89ci5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5taW5pbXVtPm8mJihyLl96b2QuYmFnLm1pbmltdW09bi5taW5pbXVtKX0pLGUuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlO2lmKG8ubGVuZ3RoPj1uLm1pbmltdW0pcmV0dXJuO2NvbnN0IGk9Y2Uobyk7ci5pc3N1ZXMucHVzaCh7b3JpZ2luOmksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6byxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxodD11KCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLG4pPT57dmFyIHQ7Ty5pbml0KGUsbiksKHQ9ZS5fem9kLmRlZikud2hlbj8/KHQud2hlbj1yPT57Y29uc3Qgbz1yLnZhbHVlO3JldHVybiFpZShvKSYmby5sZW5ndGghPT12b2lkIDB9KSxlLl96b2Qub25hdHRhY2gucHVzaChyPT57Y29uc3Qgbz1yLl96b2QuYmFnO28ubWluaW11bT1uLmxlbmd0aCxvLm1heGltdW09bi5sZW5ndGgsby5sZW5ndGg9bi5sZW5ndGh9KSxlLl96b2QuY2hlY2s9cj0+e2NvbnN0IG89ci52YWx1ZSxzPW8ubGVuZ3RoO2lmKHM9PT1uLmxlbmd0aClyZXR1cm47Y29uc3QgaT1jZShvKSxjPXM+bi5sZW5ndGg7ci5pc3N1ZXMucHVzaCh7b3JpZ2luOmksLi4uYz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpuLmxlbmd0aH06e2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLmxlbmd0aH0saW5jbHVzaXZlOiEwLGV4YWN0OiEwLGlucHV0OnIudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSksSD11KCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLG4pPT57dmFyIHQscjtPLmluaXQoZSxuKSxlLl96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3Qgcz1vLl96b2QuYmFnO3MuZm9ybWF0PW4uZm9ybWF0LG4ucGF0dGVybiYmKHMucGF0dGVybnM/PyhzLnBhdHRlcm5zPW5ldyBTZXQpLHMucGF0dGVybnMuYWRkKG4ucGF0dGVybikpfSksbi5wYXR0ZXJuPyh0PWUuX3pvZCkuY2hlY2s/Pyh0LmNoZWNrPW89PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KG8udmFsdWUpJiZvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdCxpbnB1dDpvLnZhbHVlLC4uLm4ucGF0dGVybj97cGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9KToocj1lLl96b2QpLmNoZWNrPz8oci5jaGVjaz0oKT0+e30pfSksbXQ9dSgiJFpvZENoZWNrUmVnZXgiLChlLG4pPT57SC5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KHQudmFsdWUpJiZ0Lmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoicmVnZXgiLGlucHV0OnQudmFsdWUscGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxfdD11KCIkWm9kQ2hlY2tMb3dlckNhc2UiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXV0KSxILmluaXQoZSxuKX0pLGd0PXUoIiRab2RDaGVja1VwcGVyQ2FzZSIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49YXQpLEguaW5pdChlLG4pfSksdnQ9dSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLG4pPT57Ty5pbml0KGUsbik7Y29uc3QgdD1ZKG4uaW5jbHVkZXMpLHI9bmV3IFJlZ0V4cCh0eXBlb2Ygbi5wb3NpdGlvbj09Im51bWJlciI/YF4ueyR7bi5wb3NpdGlvbn19JHt0fWA6dCk7bi5wYXR0ZXJuPXIsZS5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IHM9by5fem9kLmJhZztzLnBhdHRlcm5zPz8ocy5wYXR0ZXJucz1uZXcgU2V0KSxzLnBhdHRlcm5zLmFkZChyKX0pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5pbmNsdWRlcyhuLmluY2x1ZGVzLG4ucG9zaXRpb24pfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaW5jbHVkZXMiLGluY2x1ZGVzOm4uaW5jbHVkZXMsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSx6dD11KCIkWm9kQ2hlY2tTdGFydHNXaXRoIiwoZSxuKT0+e08uaW5pdChlLG4pO2NvbnN0IHQ9bmV3IFJlZ0V4cChgXiR7WShuLnByZWZpeCl9LipgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49dCksZS5fem9kLm9uYXR0YWNoLnB1c2gocj0+e2NvbnN0IG89ci5fem9kLmJhZztvLnBhdHRlcm5zPz8oby5wYXR0ZXJucz1uZXcgU2V0KSxvLnBhdHRlcm5zLmFkZCh0KX0pLGUuX3pvZC5jaGVjaz1yPT57ci52YWx1ZS5zdGFydHNXaXRoKG4ucHJlZml4KXx8ci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6bi5wcmVmaXgsaW5wdXQ6ci52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxidD11KCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsbik9PntPLmluaXQoZSxuKTtjb25zdCB0PW5ldyBSZWdFeHAoYC4qJHtZKG4uc3VmZml4KX0kYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXQpLGUuX3pvZC5vbmF0dGFjaC5wdXNoKHI9Pntjb25zdCBvPXIuX3pvZC5iYWc7by5wYXR0ZXJucz8/KG8ucGF0dGVybnM9bmV3IFNldCksby5wYXR0ZXJucy5hZGQodCl9KSxlLl96b2QuY2hlY2s9cj0+e3IudmFsdWUuZW5kc1dpdGgobi5zdWZmaXgpfHxyLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIixzdWZmaXg6bi5zdWZmaXgsaW5wdXQ6ci52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSx5dD11KCIkWm9kQ2hlY2tPdmVyd3JpdGUiLChlLG4pPT57Ty5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9Pnt0LnZhbHVlPW4udHgodC52YWx1ZSl9fSk7Y2xhc3Mgd3R7Y29uc3RydWN0b3Iobj1bXSl7dGhpcy5jb250ZW50PVtdLHRoaXMuaW5kZW50PTAsdGhpcyYmKHRoaXMuYXJncz1uKX1pbmRlbnRlZChuKXt0aGlzLmluZGVudCs9MSxuKHRoaXMpLHRoaXMuaW5kZW50LT0xfXdyaXRlKG4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXtuKHRoaXMse2V4ZWN1dGlvbjoic3luYyJ9KSxuKHRoaXMse2V4ZWN1dGlvbjoiYXN5bmMifSk7cmV0dXJufWNvbnN0IHI9bi5zcGxpdChgCmApLmZpbHRlcihpPT5pKSxvPU1hdGgubWluKC4uLnIubWFwKGk9PmkubGVuZ3RoLWkudHJpbVN0YXJ0KCkubGVuZ3RoKSkscz1yLm1hcChpPT5pLnNsaWNlKG8pKS5tYXAoaT0+IiAiLnJlcGVhdCh0aGlzLmluZGVudCoyKStpKTtmb3IoY29uc3QgaSBvZiBzKXRoaXMuY29udGVudC5wdXNoKGkpfWNvbXBpbGUoKXtjb25zdCBuPUZ1bmN0aW9uLHQ9dGhpcz8uYXJncyxvPVsuLi4odGhpcz8uY29udGVudD8/WyIiXSkubWFwKHM9PmAgICR7c31gKV07cmV0dXJuIG5ldyBuKC4uLnQsby5qb2luKGAKYCkpfX1jb25zdCBrdD17bWFqb3I6NCxtaW5vcjozLHBhdGNoOjZ9LHo9dSgiJFpvZFR5cGUiLChlLG4pPT57dmFyIHQ7ZT8/KGU9e30pLGUuX3pvZC5kZWY9bixlLl96b2QuYmFnPWUuX3pvZC5iYWd8fHt9LGUuX3pvZC52ZXJzaW9uPWt0O2NvbnN0IHI9Wy4uLmUuX3pvZC5kZWYuY2hlY2tzPz9bXV07ZS5fem9kLnRyYWl0cy5oYXMoIiRab2RDaGVjayIpJiZyLnVuc2hpZnQoZSk7Zm9yKGNvbnN0IG8gb2Ygcilmb3IoY29uc3QgcyBvZiBvLl96b2Qub25hdHRhY2gpcyhlKTtpZihyLmxlbmd0aD09PTApKHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZD8ucHVzaCgoKT0+e2UuX3pvZC5ydW49ZS5fem9kLnBhcnNlfSk7ZWxzZXtjb25zdCBvPShpLGMsYSk9PntsZXQgZj1DKGkpLGw7Zm9yKGNvbnN0IG0gb2YgYyl7aWYobS5fem9kLmRlZi53aGVuKXtpZighbS5fem9kLmRlZi53aGVuKGkpKWNvbnRpbnVlfWVsc2UgaWYoZiljb250aW51ZTtjb25zdCBwPWkuaXNzdWVzLmxlbmd0aCxoPW0uX3pvZC5jaGVjayhpKTtpZihoIGluc3RhbmNlb2YgUHJvbWlzZSYmYT8uYXN5bmM9PT0hMSl0aHJvdyBuZXcgUjtpZihsfHxoIGluc3RhbmNlb2YgUHJvbWlzZSlsPShsPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgaCxpLmlzc3Vlcy5sZW5ndGghPT1wJiYoZnx8KGY9QyhpLHApKSl9KTtlbHNle2lmKGkuaXNzdWVzLmxlbmd0aD09PXApY29udGludWU7Znx8KGY9QyhpLHApKX19cmV0dXJuIGw/bC50aGVuKCgpPT5pKTppfSxzPShpLGMsYSk9PntpZihDKGkpKXJldHVybiBpLmFib3J0ZWQ9ITAsaTtjb25zdCBmPW8oYyxyLGEpO2lmKGYgaW5zdGFuY2VvZiBQcm9taXNlKXtpZihhLmFzeW5jPT09ITEpdGhyb3cgbmV3IFI7cmV0dXJuIGYudGhlbihsPT5lLl96b2QucGFyc2UobCxhKSl9cmV0dXJuIGUuX3pvZC5wYXJzZShmLGEpfTtlLl96b2QucnVuPShpLGMpPT57aWYoYy5za2lwQ2hlY2tzKXJldHVybiBlLl96b2QucGFyc2UoaSxjKTtpZihjLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpe2NvbnN0IGY9ZS5fem9kLnBhcnNlKHt2YWx1ZTppLnZhbHVlLGlzc3VlczpbXX0sey4uLmMsc2tpcENoZWNrczohMH0pO3JldHVybiBmIGluc3RhbmNlb2YgUHJvbWlzZT9mLnRoZW4obD0+cyhsLGksYykpOnMoZixpLGMpfWNvbnN0IGE9ZS5fem9kLnBhcnNlKGksYyk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2Upe2lmKGMuYXN5bmM9PT0hMSl0aHJvdyBuZXcgUjtyZXR1cm4gYS50aGVuKGY9Pm8oZixyLGMpKX1yZXR1cm4gbyhhLHIsYyl9fV8oZSwifnN0YW5kYXJkIiwoKT0+KHt2YWxpZGF0ZTpvPT57dHJ5e2NvbnN0IHM9SW4oZSxvKTtyZXR1cm4gcy5zdWNjZXNzP3t2YWx1ZTpzLmRhdGF9Ontpc3N1ZXM6cy5lcnJvcj8uaXNzdWVzfX1jYXRjaHtyZXR1cm4gRW4oZSxvKS50aGVuKGk9Pmkuc3VjY2Vzcz97dmFsdWU6aS5kYXRhfTp7aXNzdWVzOmkuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX0pKX0pLGZlPXUoIiRab2RTdHJpbmciLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhdHRlcm49Wy4uLmU/Ll96b2QuYmFnPy5wYXR0ZXJucz8/W11dLnBvcCgpPz9vdChlLl96b2QuYmFnKSxlLl96b2QucGFyc2U9KHQscik9PntpZihuLmNvZXJjZSl0cnl7dC52YWx1ZT1TdHJpbmcodC52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2YgdC52YWx1ZT09InN0cmluZyJ8fHQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6dC52YWx1ZSxpbnN0OmV9KSx0fX0pLGc9dSgiJFpvZFN0cmluZ0Zvcm1hdCIsKGUsbik9PntILmluaXQoZSxuKSxmZS5pbml0KGUsbil9KSwkdD11KCIkWm9kR1VJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49V24pLGcuaW5pdChlLG4pfSksWnQ9dSgiJFpvZFVVSUQiLChlLG4pPT57aWYobi52ZXJzaW9uKXtjb25zdCByPXt2MToxLHYyOjIsdjM6Myx2NDo0LHY1OjUsdjY6Nix2Nzo3LHY4Ojh9W24udmVyc2lvbl07aWYocj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVVVJRCB2ZXJzaW9uOiAiJHtuLnZlcnNpb259ImApO24ucGF0dGVybj8/KG4ucGF0dGVybj1wZShyKSl9ZWxzZSBuLnBhdHRlcm4/PyhuLnBhdHRlcm49cGUoKSk7Zy5pbml0KGUsbil9KSxPdD11KCIkWm9kRW1haWwiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPUJuKSxnLmluaXQoZSxuKX0pLFN0PXUoIiRab2RVUkwiLChlLG4pPT57Zy5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9Pnt0cnl7Y29uc3Qgcj10LnZhbHVlLnRyaW0oKSxvPW5ldyBVUkwocik7bi5ob3N0bmFtZSYmKG4uaG9zdG5hbWUubGFzdEluZGV4PTAsbi5ob3N0bmFtZS50ZXN0KG8uaG9zdG5hbWUpfHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgaG9zdG5hbWUiLHBhdHRlcm46bi5ob3N0bmFtZS5zb3VyY2UsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KSksbi5wcm90b2NvbCYmKG4ucHJvdG9jb2wubGFzdEluZGV4PTAsbi5wcm90b2NvbC50ZXN0KG8ucHJvdG9jb2wuZW5kc1dpdGgoIjoiKT9vLnByb3RvY29sLnNsaWNlKDAsLTEpOm8ucHJvdG9jb2wpfHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgcHJvdG9jb2wiLHBhdHRlcm46bi5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KSksbi5ub3JtYWxpemU/dC52YWx1ZT1vLmhyZWY6dC52YWx1ZT1yO3JldHVybn1jYXRjaHt0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pLEl0PXUoIiRab2RFbW9qaSIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49S24oKSksZy5pbml0KGUsbil9KSxFdD11KCIkWm9kTmFub0lEIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1MbiksZy5pbml0KGUsbil9KSxQdD11KCIkWm9kQ1VJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49eG4pLGcuaW5pdChlLG4pfSksVHQ9dSgiJFpvZENVSUQyIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1VbiksZy5pbml0KGUsbil9KSxOdD11KCIkWm9kVUxJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49Rm4pLGcuaW5pdChlLG4pfSksanQ9dSgiJFpvZFhJRCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49Sm4pLGcuaW5pdChlLG4pfSksQXQ9dSgiJFpvZEtTVUlEIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1NbiksZy5pbml0KGUsbil9KSxDdD11KCIkWm9kSVNPRGF0ZVRpbWUiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXJ0KG4pKSxnLmluaXQoZSxuKX0pLFJ0PXUoIiRab2RJU09EYXRlIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1udCksZy5pbml0KGUsbil9KSxEdD11KCIkWm9kSVNPVGltZSIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49dHQobikpLGcuaW5pdChlLG4pfSkseHQ9dSgiJFpvZElTT0R1cmF0aW9uIiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1WbiksZy5pbml0KGUsbil9KSxVdD11KCIkWm9kSVB2NCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49WW4pLGcuaW5pdChlLG4pLGUuX3pvZC5iYWcuZm9ybWF0PSJpcHY0In0pLEZ0PXUoIiRab2RJUHY2IiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1YbiksZy5pbml0KGUsbiksZS5fem9kLmJhZy5mb3JtYXQ9ImlwdjYiLGUuX3pvZC5jaGVjaz10PT57dHJ5e25ldyBVUkwoYGh0dHA6Ly9bJHt0LnZhbHVlfV1gKX1jYXRjaHt0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDp0LnZhbHVlLGluc3Q6ZSxjb250aW51ZTohbi5hYm9ydH0pfX19KSxKdD11KCIkWm9kQ0lEUnY0IiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1xbiksZy5pbml0KGUsbil9KSxNdD11KCIkWm9kQ0lEUnY2IiwoZSxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1IbiksZy5pbml0KGUsbiksZS5fem9kLmNoZWNrPXQ9Pntjb25zdCByPXQudmFsdWUuc3BsaXQoIi8iKTt0cnl7aWYoci5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcjtjb25zdFtvLHNdPXI7aWYoIXMpdGhyb3cgbmV3IEVycm9yO2NvbnN0IGk9TnVtYmVyKHMpO2lmKGAke2l9YCE9PXMpdGhyb3cgbmV3IEVycm9yO2lmKGk8MHx8aT4xMjgpdGhyb3cgbmV3IEVycm9yO25ldyBVUkwoYGh0dHA6Ly9bJHtvfV1gKX1jYXRjaHt0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJjaWRydjYiLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pO2Z1bmN0aW9uIEtlKGUpe2lmKGU9PT0iIilyZXR1cm4hMDtpZihlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEx0PXUoIiRab2RCYXNlNjQiLChlLG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVFuKSxnLmluaXQoZSxuKSxlLl96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0IixlLl96b2QuY2hlY2s9dD0+e0tlKHQudmFsdWUpfHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjQiLGlucHV0OnQudmFsdWUsaW5zdDplLGNvbnRpbnVlOiFuLmFib3J0fSl9fSk7ZnVuY3Rpb24gVnQoZSl7aWYoIU1lLnRlc3QoZSkpcmV0dXJuITE7Y29uc3Qgbj1lLnJlcGxhY2UoL1stX10vZyxyPT5yPT09Ii0iPyIrIjoiLyIpLHQ9bi5wYWRFbmQoTWF0aC5jZWlsKG4ubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gS2UodCl9Y29uc3QgV3Q9dSgiJFpvZEJhc2U2NFVSTCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49TWUpLGcuaW5pdChlLG4pLGUuX3pvZC5iYWcuY29udGVudEVuY29kaW5nPSJiYXNlNjR1cmwiLGUuX3pvZC5jaGVjaz10PT57VnQodC52YWx1ZSl8fHQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NHVybCIsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxCdD11KCIkWm9kRTE2NCIsKGUsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49ZXQpLGcuaW5pdChlLG4pfSk7ZnVuY3Rpb24gR3QoZSxuPW51bGwpe3RyeXtjb25zdCB0PWUuc3BsaXQoIi4iKTtpZih0Lmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbcl09dDtpZighcilyZXR1cm4hMTtjb25zdCBvPUpTT04ucGFyc2UoYXRvYihyKSk7cmV0dXJuISgidHlwImluIG8mJm8/LnR5cCE9PSJKV1QifHwhby5hbGd8fG4mJighKCJhbGciaW4gbyl8fG8uYWxnIT09bikpfWNhdGNoe3JldHVybiExfX1jb25zdCBLdD11KCIkWm9kSldUIiwoZSxuKT0+e2cuaW5pdChlLG4pLGUuX3pvZC5jaGVjaz10PT57R3QodC52YWx1ZSxuLmFsZyl8fHQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6Imp3dCIsaW5wdXQ6dC52YWx1ZSxpbnN0OmUsY29udGludWU6IW4uYWJvcnR9KX19KSxZZT11KCIkWm9kTnVtYmVyIiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXR0ZXJuPWUuX3pvZC5iYWcucGF0dGVybj8/c3QsZS5fem9kLnBhcnNlPSh0LHIpPT57aWYobi5jb2VyY2UpdHJ5e3QudmFsdWU9TnVtYmVyKHQudmFsdWUpfWNhdGNoe31jb25zdCBvPXQudmFsdWU7aWYodHlwZW9mIG89PSJudW1iZXIiJiYhTnVtYmVyLmlzTmFOKG8pJiZOdW1iZXIuaXNGaW5pdGUobykpcmV0dXJuIHQ7Y29uc3Qgcz10eXBlb2Ygbz09Im51bWJlciI/TnVtYmVyLmlzTmFOKG8pPyJOYU4iOk51bWJlci5pc0Zpbml0ZShvKT92b2lkIDA6IkluZmluaXR5Ijp2b2lkIDA7cmV0dXJuIHQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudW1iZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6byxpbnN0OmUsLi4ucz97cmVjZWl2ZWQ6c306e319KSx0fX0pLFl0PXUoIiRab2ROdW1iZXJGb3JtYXQiLChlLG4pPT57bHQuaW5pdChlLG4pLFllLmluaXQoZSxuKX0pLFh0PXUoIiRab2RCb29sZWFuIiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXR0ZXJuPWN0LGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKG4uY29lcmNlKXRyeXt0LnZhbHVlPSEhdC52YWx1ZX1jYXRjaHt9Y29uc3Qgbz10LnZhbHVlO3JldHVybiB0eXBlb2Ygbz09ImJvb2xlYW4ifHx0Lmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYm9vbGVhbiIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpvLGluc3Q6ZX0pLHR9fSkscXQ9dSgiJFpvZFVua25vd24iLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhcnNlPXQ9PnR9KSxIdD11KCIkWm9kTmV2ZXIiLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhcnNlPSh0LHIpPT4odC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnQudmFsdWUsaW5zdDplfSksdCl9KTtmdW5jdGlvbiBoZShlLG4sdCl7ZS5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnhlKHQsZS5pc3N1ZXMpKSxuLnZhbHVlW3RdPWUudmFsdWV9Y29uc3QgUXQ9dSgiJFpvZEFycmF5IiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXJzZT0odCxyKT0+e2NvbnN0IG89dC52YWx1ZTtpZighQXJyYXkuaXNBcnJheShvKSlyZXR1cm4gdC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImFycmF5Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om8saW5zdDplfSksdDt0LnZhbHVlPUFycmF5KG8ubGVuZ3RoKTtjb25zdCBzPVtdO2ZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKXtjb25zdCBjPW9baV0sYT1uLmVsZW1lbnQuX3pvZC5ydW4oe3ZhbHVlOmMsaXNzdWVzOltdfSxyKTthIGluc3RhbmNlb2YgUHJvbWlzZT9zLnB1c2goYS50aGVuKGY9PmhlKGYsdCxpKSkpOmhlKGEsdCxpKX1yZXR1cm4gcy5sZW5ndGg/UHJvbWlzZS5hbGwocykudGhlbigoKT0+dCk6dH19KTtmdW5jdGlvbiBCKGUsbix0LHIsbyl7aWYoZS5pc3N1ZXMubGVuZ3RoKXtpZihvJiYhKHQgaW4gcikpcmV0dXJuO24uaXNzdWVzLnB1c2goLi4ueGUodCxlLmlzc3VlcykpfWUudmFsdWU9PT12b2lkIDA/dCBpbiByJiYobi52YWx1ZVt0XT12b2lkIDApOm4udmFsdWVbdF09ZS52YWx1ZX1mdW5jdGlvbiBYZShlKXtjb25zdCBuPU9iamVjdC5rZXlzKGUuc2hhcGUpO2Zvcihjb25zdCByIG9mIG4paWYoIWUuc2hhcGU/LltyXT8uX3pvZD8udHJhaXRzPy5oYXMoIiRab2RUeXBlIikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgYXQga2V5ICIke3J9IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3QgdD1nbihlLnNoYXBlKTtyZXR1cm57Li4uZSxrZXlzOm4sa2V5U2V0Om5ldyBTZXQobiksbnVtS2V5czpuLmxlbmd0aCxvcHRpb25hbEtleXM6bmV3IFNldCh0KX19ZnVuY3Rpb24gcWUoZSxuLHQscixvLHMpe2NvbnN0IGk9W10sYz1vLmtleVNldCxhPW8uY2F0Y2hhbGwuX3pvZCxmPWEuZGVmLnR5cGUsbD1hLm9wdG91dD09PSJvcHRpb25hbCI7Zm9yKGNvbnN0IG0gaW4gbil7aWYoYy5oYXMobSkpY29udGludWU7aWYoZj09PSJuZXZlciIpe2kucHVzaChtKTtjb250aW51ZX1jb25zdCBwPWEucnVuKHt2YWx1ZTpuW21dLGlzc3VlczpbXX0scik7cCBpbnN0YW5jZW9mIFByb21pc2U/ZS5wdXNoKHAudGhlbihoPT5CKGgsdCxtLG4sbCkpKTpCKHAsdCxtLG4sbCl9cmV0dXJuIGkubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsa2V5czppLGlucHV0Om4saW5zdDpzfSksZS5sZW5ndGg/UHJvbWlzZS5hbGwoZSkudGhlbigoKT0+dCk6dH1jb25zdCBlcj11KCIkWm9kT2JqZWN0IiwoZSxuKT0+e2lmKHouaW5pdChlLG4pLCFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sInNoYXBlIik/LmdldCl7Y29uc3QgYz1uLnNoYXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzaGFwZSIse2dldDooKT0+e2NvbnN0IGE9ey4uLmN9O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic2hhcGUiLHt2YWx1ZTphfSksYX19KX1jb25zdCByPW9lKCgpPT5YZShuKSk7XyhlLl96b2QsInByb3BWYWx1ZXMiLCgpPT57Y29uc3QgYz1uLnNoYXBlLGE9e307Zm9yKGNvbnN0IGYgaW4gYyl7Y29uc3QgbD1jW2ZdLl96b2Q7aWYobC52YWx1ZXMpe2FbZl0/PyhhW2ZdPW5ldyBTZXQpO2Zvcihjb25zdCBtIG9mIGwudmFsdWVzKWFbZl0uYWRkKG0pfX1yZXR1cm4gYX0pO2NvbnN0IG89VyxzPW4uY2F0Y2hhbGw7bGV0IGk7ZS5fem9kLnBhcnNlPShjLGEpPT57aT8/KGk9ci52YWx1ZSk7Y29uc3QgZj1jLnZhbHVlO2lmKCFvKGYpKXJldHVybiBjLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoib2JqZWN0Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmYsaW5zdDplfSksYztjLnZhbHVlPXt9O2NvbnN0IGw9W10sbT1pLnNoYXBlO2Zvcihjb25zdCBwIG9mIGkua2V5cyl7Y29uc3QgaD1tW3BdLGs9aC5fem9kLm9wdG91dD09PSJvcHRpb25hbCIseT1oLl96b2QucnVuKHt2YWx1ZTpmW3BdLGlzc3VlczpbXX0sYSk7eSBpbnN0YW5jZW9mIFByb21pc2U/bC5wdXNoKHkudGhlbihKPT5CKEosYyxwLGYsaykpKTpCKHksYyxwLGYsayl9cmV0dXJuIHM/cWUobCxmLGMsYSxyLnZhbHVlLGUpOmwubGVuZ3RoP1Byb21pc2UuYWxsKGwpLnRoZW4oKCk9PmMpOmN9fSksbnI9dSgiJFpvZE9iamVjdEpJVCIsKGUsbik9Pntlci5pbml0KGUsbik7Y29uc3QgdD1lLl96b2QucGFyc2Uscj1vZSgoKT0+WGUobikpLG89cD0+e2NvbnN0IGg9bmV3IHd0KFsic2hhcGUiLCJwYXlsb2FkIiwiY3R4Il0pLGs9ci52YWx1ZSx5PUU9Pntjb25zdCBaPWRlKEUpO3JldHVybmBzaGFwZVske1p9XS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFske1p9XSwgaXNzdWVzOiBbXSB9LCBjdHgpYH07aC53cml0ZSgiY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlOyIpO2NvbnN0IEo9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZm49MDtmb3IoY29uc3QgRSBvZiBrLmtleXMpSltFXT1ga2V5XyR7Zm4rK31gO2gud3JpdGUoImNvbnN0IG5ld1Jlc3VsdCA9IHt9OyIpO2Zvcihjb25zdCBFIG9mIGsua2V5cyl7Y29uc3QgWj1KW0VdLEk9ZGUoRSksZG49cFtFXT8uX3pvZD8ub3B0b3V0PT09Im9wdGlvbmFsIjtoLndyaXRlKGBjb25zdCAke1p9ID0gJHt5KEUpfTtgKSxkbj9oLndyaXRlKGAKICAgICAgICBpZiAoJHtafS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBpZiAoJHtJfSBpbiBpbnB1dCkgewogICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke1p9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7SX0sIC4uLmlzcy5wYXRoXSA6IFske0l9XQogICAgICAgICAgICB9KSkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtafS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtJfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtJfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0l9XSA9ICR7Wn0udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTpoLndyaXRlKGAKICAgICAgICBpZiAoJHtafS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke1p9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtJfSwgLi4uaXNzLnBhdGhdIDogWyR7SX1dCiAgICAgICAgICB9KSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtafS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtJfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtJfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0l9XSA9ICR7Wn0udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKX1oLndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLGgud3JpdGUoInJldHVybiBwYXlsb2FkOyIpO2NvbnN0IGxuPWguY29tcGlsZSgpO3JldHVybihFLFopPT5sbihwLEUsWil9O2xldCBzO2NvbnN0IGk9VyxjPSFBZS5qaXRsZXNzLGY9YyYmbW4udmFsdWUsbD1uLmNhdGNoYWxsO2xldCBtO2UuX3pvZC5wYXJzZT0ocCxoKT0+e20/PyhtPXIudmFsdWUpO2NvbnN0IGs9cC52YWx1ZTtyZXR1cm4gaShrKT9jJiZmJiZoPy5hc3luYz09PSExJiZoLmppdGxlc3MhPT0hMD8oc3x8KHM9byhuLnNoYXBlKSkscD1zKHAsaCksbD9xZShbXSxrLHAsaCxtLGUpOnApOnQocCxoKToocC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDprLGluc3Q6ZX0pLHApfX0pO2Z1bmN0aW9uIG1lKGUsbix0LHIpe2Zvcihjb25zdCBzIG9mIGUpaWYocy5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gbi52YWx1ZT1zLnZhbHVlLG47Y29uc3Qgbz1lLmZpbHRlcihzPT4hQyhzKSk7cmV0dXJuIG8ubGVuZ3RoPT09MT8obi52YWx1ZT1vWzBdLnZhbHVlLG9bMF0pOihuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6dCxlcnJvcnM6ZS5tYXAocz0+cy5pc3N1ZXMubWFwKGk9PmooaSxyLE4oKSkpKX0pLG4pfWNvbnN0IHRyPXUoIiRab2RVbmlvbiIsKGUsbik9Pnt6LmluaXQoZSxuKSxfKGUuX3pvZCwib3B0aW4iLCgpPT5uLm9wdGlvbnMuc29tZShvPT5vLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksXyhlLl96b2QsIm9wdG91dCIsKCk9Pm4ub3B0aW9ucy5zb21lKG89Pm8uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksXyhlLl96b2QsInZhbHVlcyIsKCk9PntpZihuLm9wdGlvbnMuZXZlcnkobz0+by5fem9kLnZhbHVlcykpcmV0dXJuIG5ldyBTZXQobi5vcHRpb25zLmZsYXRNYXAobz0+QXJyYXkuZnJvbShvLl96b2QudmFsdWVzKSkpfSksXyhlLl96b2QsInBhdHRlcm4iLCgpPT57aWYobi5vcHRpb25zLmV2ZXJ5KG89Pm8uX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgbz1uLm9wdGlvbnMubWFwKHM9PnMuX3pvZC5wYXR0ZXJuKTtyZXR1cm4gbmV3IFJlZ0V4cChgXigke28ubWFwKHM9PnNlKHMuc291cmNlKSkuam9pbigifCIpfSkkYCl9fSk7Y29uc3QgdD1uLm9wdGlvbnMubGVuZ3RoPT09MSxyPW4ub3B0aW9uc1swXS5fem9kLnJ1bjtlLl96b2QucGFyc2U9KG8scyk9PntpZih0KXJldHVybiByKG8scyk7bGV0IGk9ITE7Y29uc3QgYz1bXTtmb3IoY29uc3QgYSBvZiBuLm9wdGlvbnMpe2NvbnN0IGY9YS5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LHMpO2lmKGYgaW5zdGFuY2VvZiBQcm9taXNlKWMucHVzaChmKSxpPSEwO2Vsc2V7aWYoZi5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gZjtjLnB1c2goZil9fXJldHVybiBpP1Byb21pc2UuYWxsKGMpLnRoZW4oYT0+bWUoYSxvLGUscykpOm1lKGMsbyxlLHMpfX0pLHJyPXUoIiRab2RJbnRlcnNlY3Rpb24iLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLnBhcnNlPSh0LHIpPT57Y29uc3Qgbz10LnZhbHVlLHM9bi5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpvLGlzc3VlczpbXX0sciksaT1uLnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpvLGlzc3VlczpbXX0scik7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlfHxpIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbcyxpXSkudGhlbigoW2EsZl0pPT5fZSh0LGEsZikpOl9lKHQscyxpKX19KTtmdW5jdGlvbiB0ZShlLG4pe2lmKGU9PT1uKXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZuIGluc3RhbmNlb2YgRGF0ZSYmK2U9PStuKXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKFUoZSkmJlUobikpe2NvbnN0IHQ9T2JqZWN0LmtleXMobikscj1PYmplY3Qua2V5cyhlKS5maWx0ZXIocz0+dC5pbmRleE9mKHMpIT09LTEpLG89ey4uLmUsLi4ubn07Zm9yKGNvbnN0IHMgb2Ygcil7Y29uc3QgaT10ZShlW3NdLG5bc10pO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbcywuLi5pLm1lcmdlRXJyb3JQYXRoXX07b1tzXT1pLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6b319aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheShuKSl7aWYoZS5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IHQ9W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG89ZVtyXSxzPW5bcl0saT10ZShvLHMpO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbciwuLi5pLm1lcmdlRXJyb3JQYXRoXX07dC5wdXNoKGkuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6dH19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiBfZShlLG4sdCl7Y29uc3Qgcj1uZXcgTWFwO2xldCBvO2Zvcihjb25zdCBjIG9mIG4uaXNzdWVzKWlmKGMuY29kZT09PSJ1bnJlY29nbml6ZWRfa2V5cyIpe28/PyhvPWMpO2Zvcihjb25zdCBhIG9mIGMua2V5cylyLmhhcyhhKXx8ci5zZXQoYSx7fSksci5nZXQoYSkubD0hMH1lbHNlIGUuaXNzdWVzLnB1c2goYyk7Zm9yKGNvbnN0IGMgb2YgdC5pc3N1ZXMpaWYoYy5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIilmb3IoY29uc3QgYSBvZiBjLmtleXMpci5oYXMoYSl8fHIuc2V0KGEse30pLHIuZ2V0KGEpLnI9ITA7ZWxzZSBlLmlzc3Vlcy5wdXNoKGMpO2NvbnN0IHM9Wy4uLnJdLmZpbHRlcigoWyxjXSk9PmMubCYmYy5yKS5tYXAoKFtjXSk9PmMpO2lmKHMubGVuZ3RoJiZvJiZlLmlzc3Vlcy5wdXNoKHsuLi5vLGtleXM6c30pLEMoZSkpcmV0dXJuIGU7Y29uc3QgaT10ZShuLnZhbHVlLHQudmFsdWUpO2lmKCFpLnZhbGlkKXRocm93IG5ldyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoaS5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuIGUudmFsdWU9aS5kYXRhLGV9Y29uc3Qgb3I9dSgiJFpvZEVudW0iLChlLG4pPT57ei5pbml0KGUsbik7Y29uc3QgdD1DZShuLmVudHJpZXMpLHI9bmV3IFNldCh0KTtlLl96b2QudmFsdWVzPXIsZS5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke3QuZmlsdGVyKG89Pl9uLmhhcyh0eXBlb2YgbykpLm1hcChvPT50eXBlb2Ygbz09InN0cmluZyI/WShvKTpvLnRvU3RyaW5nKCkpLmpvaW4oInwiKX0pJGApLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IGk9by52YWx1ZTtyZXR1cm4gci5oYXMoaSl8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczp0LGlucHV0OmksaW5zdDplfSksb319KSxpcj11KCIkWm9kVHJhbnNmb3JtIiwoZSxuKT0+e3ouaW5pdChlLG4pLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgamUoZS5jb25zdHJ1Y3Rvci5uYW1lKTtjb25zdCBvPW4udHJhbnNmb3JtKHQudmFsdWUsdCk7aWYoci5hc3luYylyZXR1cm4obyBpbnN0YW5jZW9mIFByb21pc2U/bzpQcm9taXNlLnJlc29sdmUobykpLnRoZW4oaT0+KHQudmFsdWU9aSx0KSk7aWYobyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IFI7cmV0dXJuIHQudmFsdWU9byx0fX0pO2Z1bmN0aW9uIGdlKGUsbil7cmV0dXJuIGUuaXNzdWVzLmxlbmd0aCYmbj09PXZvaWQgMD97aXNzdWVzOltdLHZhbHVlOnZvaWQgMH06ZX1jb25zdCBIZT11KCIkWm9kT3B0aW9uYWwiLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLm9wdGluPSJvcHRpb25hbCIsZS5fem9kLm9wdG91dD0ib3B0aW9uYWwiLF8oZS5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyx2b2lkIDBdKTp2b2lkIDApLF8oZS5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IHQ9bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiB0P25ldyBSZWdFeHAoYF4oJHtzZSh0LnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksZS5fem9kLnBhcnNlPSh0LHIpPT57aWYobi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpe2NvbnN0IG89bi5pbm5lclR5cGUuX3pvZC5ydW4odCxyKTtyZXR1cm4gbyBpbnN0YW5jZW9mIFByb21pc2U/by50aGVuKHM9PmdlKHMsdC52YWx1ZSkpOmdlKG8sdC52YWx1ZSl9cmV0dXJuIHQudmFsdWU9PT12b2lkIDA/dDpuLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpfX0pLHNyPXUoIiRab2RFeGFjdE9wdGlvbmFsIiwoZSxuKT0+e0hlLmluaXQoZSxuKSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLF8oZS5fem9kLCJwYXR0ZXJuIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxlLl96b2QucGFyc2U9KHQscik9Pm4uaW5uZXJUeXBlLl96b2QucnVuKHQscil9KSxjcj11KCIkWm9kTnVsbGFibGUiLChlLG4pPT57ei5pbml0KGUsbiksXyhlLl96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRpbiksXyhlLl96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxfKGUuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCB0PW4uaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gdD9uZXcgUmVnRXhwKGBeKCR7c2UodC5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ubi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsbnVsbF0pOnZvaWQgMCksZS5fem9kLnBhcnNlPSh0LHIpPT50LnZhbHVlPT09bnVsbD90Om4uaW5uZXJUeXBlLl96b2QucnVuKHQscil9KSx1cj11KCIkWm9kRGVmYXVsdCIsKGUsbik9Pnt6LmluaXQoZSxuKSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4odCxyKTtpZih0LnZhbHVlPT09dm9pZCAwKXJldHVybiB0LnZhbHVlPW4uZGVmYXVsdFZhbHVlLHQ7Y29uc3Qgbz1uLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpO3JldHVybiBvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4ocz0+dmUocyxuKSk6dmUobyxuKX19KTtmdW5jdGlvbiB2ZShlLG4pe3JldHVybiBlLnZhbHVlPT09dm9pZCAwJiYoZS52YWx1ZT1uLmRlZmF1bHRWYWx1ZSksZX1jb25zdCBhcj11KCIkWm9kUHJlZmF1bHQiLChlLG4pPT57ei5pbml0KGUsbiksZS5fem9kLm9wdGluPSJvcHRpb25hbCIsXyhlLl96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KHQscik9PihyLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fHQudmFsdWU9PT12b2lkIDAmJih0LnZhbHVlPW4uZGVmYXVsdFZhbHVlKSxuLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpKX0pLGZyPXUoIiRab2ROb25PcHRpb25hbCIsKGUsbik9Pnt6LmluaXQoZSxuKSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+e2NvbnN0IHQ9bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIHQ/bmV3IFNldChbLi4udF0uZmlsdGVyKHI9PnIhPT12b2lkIDApKTp2b2lkIDB9KSxlLl96b2QucGFyc2U9KHQscik9Pntjb25zdCBvPW4uaW5uZXJUeXBlLl96b2QucnVuKHQscik7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT56ZShzLGUpKTp6ZShvLGUpfX0pO2Z1bmN0aW9uIHplKGUsbil7cmV0dXJuIWUuaXNzdWVzLmxlbmd0aCYmZS52YWx1ZT09PXZvaWQgMCYmZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoibm9ub3B0aW9uYWwiLGlucHV0OmUudmFsdWUsaW5zdDpufSksZX1jb25zdCBscj11KCIkWm9kQ2F0Y2giLChlLG4pPT57ei5pbml0KGUsbiksXyhlLl96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRpbiksXyhlLl96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxfKGUuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4odCxyKTtjb25zdCBvPW4uaW5uZXJUeXBlLl96b2QucnVuKHQscik7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT4odC52YWx1ZT1zLnZhbHVlLHMuaXNzdWVzLmxlbmd0aCYmKHQudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi50LGVycm9yOntpc3N1ZXM6cy5pc3N1ZXMubWFwKGk9PmooaSxyLE4oKSkpfSxpbnB1dDp0LnZhbHVlfSksdC5pc3N1ZXM9W10pLHQpKToodC52YWx1ZT1vLnZhbHVlLG8uaXNzdWVzLmxlbmd0aCYmKHQudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi50LGVycm9yOntpc3N1ZXM6by5pc3N1ZXMubWFwKHM9PmoocyxyLE4oKSkpfSxpbnB1dDp0LnZhbHVlfSksdC5pc3N1ZXM9W10pLHQpfX0pLGRyPXUoIiRab2RQaXBlIiwoZSxuKT0+e3ouaW5pdChlLG4pLF8oZS5fem9kLCJ2YWx1ZXMiLCgpPT5uLmluLl96b2QudmFsdWVzKSxfKGUuX3pvZCwib3B0aW4iLCgpPT5uLmluLl96b2Qub3B0aW4pLF8oZS5fem9kLCJvcHRvdXQiLCgpPT5uLm91dC5fem9kLm9wdG91dCksXyhlLl96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPSh0LHIpPT57aWYoci5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCBzPW4ub3V0Ll96b2QucnVuKHQscik7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihpPT5MKGksbi5pbixyKSk6TChzLG4uaW4scil9Y29uc3Qgbz1uLmluLl96b2QucnVuKHQscik7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT5MKHMsbi5vdXQscikpOkwobyxuLm91dCxyKX19KTtmdW5jdGlvbiBMKGUsbix0KXtyZXR1cm4gZS5pc3N1ZXMubGVuZ3RoPyhlLmFib3J0ZWQ9ITAsZSk6bi5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LHQpfWNvbnN0IHByPXUoIiRab2RSZWFkb25seSIsKGUsbik9Pnt6LmluaXQoZSxuKSxfKGUuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksXyhlLl96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxfKGUuX3pvZCwib3B0aW4iLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0aW4pLF8oZS5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSxlLl96b2QucGFyc2U9KHQscik9PntpZihyLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHQscik7Y29uc3Qgbz1uLmlubmVyVHlwZS5fem9kLnJ1bih0LHIpO3JldHVybiBvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4oYmUpOmJlKG8pfX0pO2Z1bmN0aW9uIGJlKGUpe3JldHVybiBlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSksZX1jb25zdCBocj11KCIkWm9kQ3VzdG9tIiwoZSxuKT0+e08uaW5pdChlLG4pLHouaW5pdChlLG4pLGUuX3pvZC5wYXJzZT0odCxyKT0+dCxlLl96b2QuY2hlY2s9dD0+e2NvbnN0IHI9dC52YWx1ZSxvPW4uZm4ocik7aWYobyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIG8udGhlbihzPT55ZShzLHQscixlKSk7eWUobyx0LHIsZSl9fSk7ZnVuY3Rpb24geWUoZSxuLHQscil7aWYoIWUpe2NvbnN0IG89e2NvZGU6ImN1c3RvbSIsaW5wdXQ6dCxpbnN0OnIscGF0aDpbLi4uci5fem9kLmRlZi5wYXRoPz9bXV0sY29udGludWU6IXIuX3pvZC5kZWYuYWJvcnR9O3IuX3pvZC5kZWYucGFyYW1zJiYoby5wYXJhbXM9ci5fem9kLmRlZi5wYXJhbXMpLG4uaXNzdWVzLnB1c2goRihvKSl9fXZhciB3ZTtjbGFzcyBtcntjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwfWFkZChuLC4uLnQpe2NvbnN0IHI9dFswXTtyZXR1cm4gdGhpcy5fbWFwLnNldChuLHIpLHImJnR5cGVvZiByPT0ib2JqZWN0IiYmImlkImluIHImJnRoaXMuX2lkbWFwLnNldChyLmlkLG4pLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXAsdGhpc31yZW1vdmUobil7Y29uc3QgdD10aGlzLl9tYXAuZ2V0KG4pO3JldHVybiB0JiZ0eXBlb2YgdD09Im9iamVjdCImJiJpZCJpbiB0JiZ0aGlzLl9pZG1hcC5kZWxldGUodC5pZCksdGhpcy5fbWFwLmRlbGV0ZShuKSx0aGlzfWdldChuKXtjb25zdCB0PW4uX3pvZC5wYXJlbnQ7aWYodCl7Y29uc3Qgcj17Li4udGhpcy5nZXQodCk/P3t9fTtkZWxldGUgci5pZDtjb25zdCBvPXsuLi5yLC4uLnRoaXMuX21hcC5nZXQobil9O3JldHVybiBPYmplY3Qua2V5cyhvKS5sZW5ndGg/bzp2b2lkIDB9cmV0dXJuIHRoaXMuX21hcC5nZXQobil9aGFzKG4pe3JldHVybiB0aGlzLl9tYXAuaGFzKG4pfX1mdW5jdGlvbiBfcigpe3JldHVybiBuZXcgbXJ9KHdlPWdsb2JhbFRoaXMpLl9fem9kX2dsb2JhbFJlZ2lzdHJ5Pz8od2UuX196b2RfZ2xvYmFsUmVnaXN0cnk9X3IoKSk7Y29uc3QgeD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5O2Z1bmN0aW9uIGdyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLC4uLmQobil9KX1mdW5jdGlvbiB2cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIGtlKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiB6cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gYnIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLmQobil9KX1mdW5jdGlvbiB5cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4uZChuKX0pfWZ1bmN0aW9uIHdyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi5kKG4pfSl9ZnVuY3Rpb24ga3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gJHIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBacihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBPcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gU3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBJcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gRXIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gUHIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBUcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5kKG4pfSl9ZnVuY3Rpb24gTnIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIGpyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIEFyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIENyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIFJyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uZChuKX0pfWZ1bmN0aW9uIERyKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiB4cihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmQobil9KX1mdW5jdGlvbiBVcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGV0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLmQobil9KX1mdW5jdGlvbiBGcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5kKG4pfSl9ZnVuY3Rpb24gSnIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIscHJlY2lzaW9uOm51bGwsLi4uZChuKX0pfWZ1bmN0aW9uIE1yKGUsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZHVyYXRpb24iLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5kKG4pfSl9ZnVuY3Rpb24gTHIoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2tzOltdLC4uLmQobil9KX1mdW5jdGlvbiBWcihlLG4pe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi5kKG4pfSl9ZnVuY3Rpb24gV3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLC4uLmQobil9KX1mdW5jdGlvbiBCcihlKXtyZXR1cm4gbmV3IGUoe3R5cGU6InVua25vd24ifSl9ZnVuY3Rpb24gR3IoZSxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6Im5ldmVyIiwuLi5kKG4pfSl9ZnVuY3Rpb24gJGUoZSxuKXtyZXR1cm4gbmV3IEJlKHtjaGVjazoibGVzc190aGFuIiwuLi5kKG4pLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gUShlLG4pe3JldHVybiBuZXcgQmUoe2NoZWNrOiJsZXNzX3RoYW4iLC4uLmQobiksdmFsdWU6ZSxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiBaZShlLG4pe3JldHVybiBuZXcgR2Uoe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmQobiksdmFsdWU6ZSxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiBlZShlLG4pe3JldHVybiBuZXcgR2Uoe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmQobiksdmFsdWU6ZSxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiBPZShlLG4pe3JldHVybiBuZXcgZnQoe2NoZWNrOiJtdWx0aXBsZV9vZiIsLi4uZChuKSx2YWx1ZTplfSl9ZnVuY3Rpb24gUWUoZSxuKXtyZXR1cm4gbmV3IGR0KHtjaGVjazoibWF4X2xlbmd0aCIsLi4uZChuKSxtYXhpbXVtOmV9KX1mdW5jdGlvbiBHKGUsbil7cmV0dXJuIG5ldyBwdCh7Y2hlY2s6Im1pbl9sZW5ndGgiLC4uLmQobiksbWluaW11bTplfSl9ZnVuY3Rpb24gZW4oZSxuKXtyZXR1cm4gbmV3IGh0KHtjaGVjazoibGVuZ3RoX2VxdWFscyIsLi4uZChuKSxsZW5ndGg6ZX0pfWZ1bmN0aW9uIEtyKGUsbil7cmV0dXJuIG5ldyBtdCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoicmVnZXgiLC4uLmQobikscGF0dGVybjplfSl9ZnVuY3Rpb24gWXIoZSl7cmV0dXJuIG5ldyBfdCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoibG93ZXJjYXNlIiwuLi5kKGUpfSl9ZnVuY3Rpb24gWHIoZSl7cmV0dXJuIG5ldyBndCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoidXBwZXJjYXNlIiwuLi5kKGUpfSl9ZnVuY3Rpb24gcXIoZSxuKXtyZXR1cm4gbmV3IHZ0KHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsLi4uZChuKSxpbmNsdWRlczplfSl9ZnVuY3Rpb24gSHIoZSxuKXtyZXR1cm4gbmV3IHp0KHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJzdGFydHNfd2l0aCIsLi4uZChuKSxwcmVmaXg6ZX0pfWZ1bmN0aW9uIFFyKGUsbil7cmV0dXJuIG5ldyBidCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIiwuLi5kKG4pLHN1ZmZpeDplfSl9ZnVuY3Rpb24gRChlKXtyZXR1cm4gbmV3IHl0KHtjaGVjazoib3ZlcndyaXRlIix0eDplfSl9ZnVuY3Rpb24gZW8oZSl7cmV0dXJuIEQobj0+bi5ub3JtYWxpemUoZSkpfWZ1bmN0aW9uIG5vKCl7cmV0dXJuIEQoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIHRvKCl7cmV0dXJuIEQoZT0+ZS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBybygpe3JldHVybiBEKGU9PmUudG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gb28oKXtyZXR1cm4gRChlPT5obihlKSl9ZnVuY3Rpb24gaW8oZSxuLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6biwuLi5kKHQpfSl9ZnVuY3Rpb24gc28oZSxuLHQpe3JldHVybiBuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpuLC4uLmQodCl9KX1mdW5jdGlvbiBjbyhlKXtjb25zdCBuPXVvKHQ9Pih0LmFkZElzc3VlPXI9PntpZih0eXBlb2Ygcj09InN0cmluZyIpdC5pc3N1ZXMucHVzaChGKHIsdC52YWx1ZSxuLl96b2QuZGVmKSk7ZWxzZXtjb25zdCBvPXI7by5mYXRhbCYmKG8uY29udGludWU9ITEpLG8uY29kZT8/KG8uY29kZT0iY3VzdG9tIiksby5pbnB1dD8/KG8uaW5wdXQ9dC52YWx1ZSksby5pbnN0Pz8oby5pbnN0PW4pLG8uY29udGludWU/PyhvLmNvbnRpbnVlPSFuLl96b2QuZGVmLmFib3J0KSx0Lmlzc3Vlcy5wdXNoKEYobykpfX0sZSh0LnZhbHVlLHQpKSk7cmV0dXJuIG59ZnVuY3Rpb24gdW8oZSxuKXtjb25zdCB0PW5ldyBPKHtjaGVjazoiY3VzdG9tIiwuLi5kKG4pfSk7cmV0dXJuIHQuX3pvZC5jaGVjaz1lLHR9ZnVuY3Rpb24gbm4oZSl7bGV0IG49ZT8udGFyZ2V0Pz8iZHJhZnQtMjAyMC0xMiI7cmV0dXJuIG49PT0iZHJhZnQtNCImJihuPSJkcmFmdC0wNCIpLG49PT0iZHJhZnQtNyImJihuPSJkcmFmdC0wNyIpLHtwcm9jZXNzb3JzOmUucHJvY2Vzc29ycz8/e30sbWV0YWRhdGFSZWdpc3RyeTplPy5tZXRhZGF0YT8/eCx0YXJnZXQ6bix1bnJlcHJlc2VudGFibGU6ZT8udW5yZXByZXNlbnRhYmxlPz8idGhyb3ciLG92ZXJyaWRlOmU/Lm92ZXJyaWRlPz8oKCk9Pnt9KSxpbzplPy5pbz8/Im91dHB1dCIsY291bnRlcjowLHNlZW46bmV3IE1hcCxjeWNsZXM6ZT8uY3ljbGVzPz8icmVmIixyZXVzZWQ6ZT8ucmV1c2VkPz8iaW5saW5lIixleHRlcm5hbDplPy5leHRlcm5hbD8/dm9pZCAwfX1mdW5jdGlvbiB3KGUsbix0PXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgcjtjb25zdCBvPWUuX3pvZC5kZWYscz1uLnNlZW4uZ2V0KGUpO2lmKHMpcmV0dXJuIHMuY291bnQrKyx0LnNjaGVtYVBhdGguaW5jbHVkZXMoZSkmJihzLmN5Y2xlPXQucGF0aCkscy5zY2hlbWE7Y29uc3QgaT17c2NoZW1hOnt9LGNvdW50OjEsY3ljbGU6dm9pZCAwLHBhdGg6dC5wYXRofTtuLnNlZW4uc2V0KGUsaSk7Y29uc3QgYz1lLl96b2QudG9KU09OU2NoZW1hPy4oKTtpZihjKWkuc2NoZW1hPWM7ZWxzZXtjb25zdCBsPXsuLi50LHNjaGVtYVBhdGg6Wy4uLnQuc2NoZW1hUGF0aCxlXSxwYXRoOnQucGF0aH07aWYoZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hKWUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYShuLGkuc2NoZW1hLGwpO2Vsc2V7Y29uc3QgcD1pLnNjaGVtYSxoPW4ucHJvY2Vzc29yc1tvLnR5cGVdO2lmKCFoKXRocm93IG5ldyBFcnJvcihgW3RvSlNPTlNjaGVtYV06IE5vbi1yZXByZXNlbnRhYmxlIHR5cGUgZW5jb3VudGVyZWQ6ICR7by50eXBlfWApO2goZSxuLHAsbCl9Y29uc3QgbT1lLl96b2QucGFyZW50O20mJihpLnJlZnx8KGkucmVmPW0pLHcobSxuLGwpLG4uc2Vlbi5nZXQobSkuaXNQYXJlbnQ9ITApfWNvbnN0IGE9bi5tZXRhZGF0YVJlZ2lzdHJ5LmdldChlKTtyZXR1cm4gYSYmT2JqZWN0LmFzc2lnbihpLnNjaGVtYSxhKSxuLmlvPT09ImlucHV0IiYmJChlKSYmKGRlbGV0ZSBpLnNjaGVtYS5leGFtcGxlcyxkZWxldGUgaS5zY2hlbWEuZGVmYXVsdCksbi5pbz09PSJpbnB1dCImJmkuc2NoZW1hLl9wcmVmYXVsdCYmKChyPWkuc2NoZW1hKS5kZWZhdWx0Pz8oci5kZWZhdWx0PWkuc2NoZW1hLl9wcmVmYXVsdCkpLGRlbGV0ZSBpLnNjaGVtYS5fcHJlZmF1bHQsbi5zZWVuLmdldChlKS5zY2hlbWF9ZnVuY3Rpb24gdG4oZSxuKXtjb25zdCB0PWUuc2Vlbi5nZXQobik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJVbnByb2Nlc3NlZCBzY2hlbWEuIFRoaXMgaXMgYSBidWcgaW4gWm9kLiIpO2NvbnN0IHI9bmV3IE1hcDtmb3IoY29uc3QgaSBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBjPWUubWV0YWRhdGFSZWdpc3RyeS5nZXQoaVswXSk/LmlkO2lmKGMpe2NvbnN0IGE9ci5nZXQoYyk7aWYoYSYmYSE9PWlbMF0pdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgc2NoZW1hIGlkICIke2N9IiBkZXRlY3RlZCBkdXJpbmcgSlNPTiBTY2hlbWEgY29udmVyc2lvbi4gVHdvIGRpZmZlcmVudCBzY2hlbWFzIGNhbm5vdCBzaGFyZSB0aGUgc2FtZSBpZCB3aGVuIGNvbnZlcnRlZCB0b2dldGhlci5gKTtyLnNldChjLGlbMF0pfX1jb25zdCBvPWk9Pntjb25zdCBjPWUudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihlLmV4dGVybmFsKXtjb25zdCBtPWUuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGlbMF0pPy5pZCxwPWUuZXh0ZXJuYWwudXJpPz8oaz0+ayk7aWYobSlyZXR1cm57cmVmOnAobSl9O2NvbnN0IGg9aVsxXS5kZWZJZD8/aVsxXS5zY2hlbWEuaWQ/P2BzY2hlbWEke2UuY291bnRlcisrfWA7cmV0dXJuIGlbMV0uZGVmSWQ9aCx7ZGVmSWQ6aCxyZWY6YCR7cCgiX19zaGFyZWQiKX0jLyR7Y30vJHtofWB9fWlmKGlbMV09PT10KXJldHVybntyZWY6IiMifTtjb25zdCBmPWAjLyR7Y30vYCxsPWlbMV0uc2NoZW1hLmlkPz9gX19zY2hlbWEke2UuY291bnRlcisrfWA7cmV0dXJue2RlZklkOmwscmVmOmYrbH19LHM9aT0+e2lmKGlbMV0uc2NoZW1hLiRyZWYpcmV0dXJuO2NvbnN0IGM9aVsxXSx7cmVmOmEsZGVmSWQ6Zn09byhpKTtjLmRlZj17Li4uYy5zY2hlbWF9LGYmJihjLmRlZklkPWYpO2NvbnN0IGw9Yy5zY2hlbWE7Zm9yKGNvbnN0IG0gaW4gbClkZWxldGUgbFttXTtsLiRyZWY9YX07aWYoZS5jeWNsZXM9PT0idGhyb3ciKWZvcihjb25zdCBpIG9mIGUuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IGM9aVsxXTtpZihjLmN5Y2xlKXRocm93IG5ldyBFcnJvcihgQ3ljbGUgZGV0ZWN0ZWQ6ICMvJHtjLmN5Y2xlPy5qb2luKCIvIil9Lzxyb290PgoKU2V0IHRoZSBcYGN5Y2xlc1xgIHBhcmFtZXRlciB0byBcYCJyZWYiXGAgdG8gcmVzb2x2ZSBjeWNsaWNhbCBzY2hlbWFzIHdpdGggZGVmcy5gKX1mb3IoY29uc3QgaSBvZiBlLnNlZW4uZW50cmllcygpKXtjb25zdCBjPWlbMV07aWYobj09PWlbMF0pe3MoaSk7Y29udGludWV9aWYoZS5leHRlcm5hbCl7Y29uc3QgZj1lLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChpWzBdKT8uaWQ7aWYobiE9PWlbMF0mJmYpe3MoaSk7Y29udGludWV9fWlmKGUubWV0YWRhdGFSZWdpc3RyeS5nZXQoaVswXSk/LmlkKXtzKGkpO2NvbnRpbnVlfWlmKGMuY3ljbGUpe3MoaSk7Y29udGludWV9aWYoYy5jb3VudD4xJiZlLnJldXNlZD09PSJyZWYiKXtzKGkpO2NvbnRpbnVlfX19ZnVuY3Rpb24gcm4oZSxuKXtjb25zdCB0PWUuc2Vlbi5nZXQobik7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJVbnByb2Nlc3NlZCBzY2hlbWEuIFRoaXMgaXMgYSBidWcgaW4gWm9kLiIpO2NvbnN0IHI9aT0+e2NvbnN0IGM9ZS5zZWVuLmdldChpKTtpZihjLnJlZj09PW51bGwpcmV0dXJuO2NvbnN0IGE9Yy5kZWY/P2Muc2NoZW1hLGY9ey4uLmF9LGw9Yy5yZWY7aWYoYy5yZWY9bnVsbCxsKXtyKGwpO2NvbnN0IHA9ZS5zZWVuLmdldChsKSxoPXAuc2NoZW1hO2lmKGguJHJlZiYmKGUudGFyZ2V0PT09ImRyYWZ0LTA3Inx8ZS50YXJnZXQ9PT0iZHJhZnQtMDQifHxlLnRhcmdldD09PSJvcGVuYXBpLTMuMCIpPyhhLmFsbE9mPWEuYWxsT2Y/P1tdLGEuYWxsT2YucHVzaChoKSk6T2JqZWN0LmFzc2lnbihhLGgpLE9iamVjdC5hc3NpZ24oYSxmKSxpLl96b2QucGFyZW50PT09bClmb3IoY29uc3QgeSBpbiBhKXk9PT0iJHJlZiJ8fHk9PT0iYWxsT2YifHx5IGluIGZ8fGRlbGV0ZSBhW3ldO2lmKGguJHJlZiYmcC5kZWYpZm9yKGNvbnN0IHkgaW4gYSl5PT09IiRyZWYifHx5PT09ImFsbE9mInx8eSBpbiBwLmRlZiYmSlNPTi5zdHJpbmdpZnkoYVt5XSk9PT1KU09OLnN0cmluZ2lmeShwLmRlZlt5XSkmJmRlbGV0ZSBhW3ldfWNvbnN0IG09aS5fem9kLnBhcmVudDtpZihtJiZtIT09bCl7cihtKTtjb25zdCBwPWUuc2Vlbi5nZXQobSk7aWYocD8uc2NoZW1hLiRyZWYmJihhLiRyZWY9cC5zY2hlbWEuJHJlZixwLmRlZikpZm9yKGNvbnN0IGggaW4gYSloPT09IiRyZWYifHxoPT09ImFsbE9mInx8aCBpbiBwLmRlZiYmSlNPTi5zdHJpbmdpZnkoYVtoXSk9PT1KU09OLnN0cmluZ2lmeShwLmRlZltoXSkmJmRlbGV0ZSBhW2hdfWUub3ZlcnJpZGUoe3pvZFNjaGVtYTppLGpzb25TY2hlbWE6YSxwYXRoOmMucGF0aD8/W119KX07Zm9yKGNvbnN0IGkgb2ZbLi4uZS5zZWVuLmVudHJpZXMoKV0ucmV2ZXJzZSgpKXIoaVswXSk7Y29uc3Qgbz17fTtpZihlLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj9vLiRzY2hlbWE9Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hIjplLnRhcmdldD09PSJkcmFmdC0wNyI/by4kc2NoZW1hPSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSMiOmUudGFyZ2V0PT09ImRyYWZ0LTA0Ij9vLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyI6ZS50YXJnZXQsZS5leHRlcm5hbD8udXJpKXtjb25zdCBpPWUuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KG4pPy5pZDtpZighaSl0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGFuIGBpZGAgcHJvcGVydHkiKTtvLiRpZD1lLmV4dGVybmFsLnVyaShpKX1PYmplY3QuYXNzaWduKG8sdC5kZWY/P3Quc2NoZW1hKTtjb25zdCBzPWUuZXh0ZXJuYWw/LmRlZnM/P3t9O2Zvcihjb25zdCBpIG9mIGUuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IGM9aVsxXTtjLmRlZiYmYy5kZWZJZCYmKHNbYy5kZWZJZF09Yy5kZWYpfWUuZXh0ZXJuYWx8fE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiYoZS50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/by4kZGVmcz1zOm8uZGVmaW5pdGlvbnM9cyk7dHJ5e2NvbnN0IGk9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJ+c3RhbmRhcmQiLHt2YWx1ZTp7Li4ublsifnN0YW5kYXJkIl0sanNvblNjaGVtYTp7aW5wdXQ6SyhuLCJpbnB1dCIsZS5wcm9jZXNzb3JzKSxvdXRwdXQ6SyhuLCJvdXRwdXQiLGUucHJvY2Vzc29ycyl9fSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksaX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uIil9fWZ1bmN0aW9uICQoZSxuKXtjb25zdCB0PW4/P3tzZWVuOm5ldyBTZXR9O2lmKHQuc2Vlbi5oYXMoZSkpcmV0dXJuITE7dC5zZWVuLmFkZChlKTtjb25zdCByPWUuX3pvZC5kZWY7aWYoci50eXBlPT09InRyYW5zZm9ybSIpcmV0dXJuITA7aWYoci50eXBlPT09ImFycmF5IilyZXR1cm4gJChyLmVsZW1lbnQsdCk7aWYoci50eXBlPT09InNldCIpcmV0dXJuICQoci52YWx1ZVR5cGUsdCk7aWYoci50eXBlPT09ImxhenkiKXJldHVybiAkKHIuZ2V0dGVyKCksdCk7aWYoci50eXBlPT09InByb21pc2UifHxyLnR5cGU9PT0ib3B0aW9uYWwifHxyLnR5cGU9PT0ibm9ub3B0aW9uYWwifHxyLnR5cGU9PT0ibnVsbGFibGUifHxyLnR5cGU9PT0icmVhZG9ubHkifHxyLnR5cGU9PT0iZGVmYXVsdCJ8fHIudHlwZT09PSJwcmVmYXVsdCIpcmV0dXJuICQoci5pbm5lclR5cGUsdCk7aWYoci50eXBlPT09ImludGVyc2VjdGlvbiIpcmV0dXJuICQoci5sZWZ0LHQpfHwkKHIucmlnaHQsdCk7aWYoci50eXBlPT09InJlY29yZCJ8fHIudHlwZT09PSJtYXAiKXJldHVybiAkKHIua2V5VHlwZSx0KXx8JChyLnZhbHVlVHlwZSx0KTtpZihyLnR5cGU9PT0icGlwZSIpcmV0dXJuICQoci5pbix0KXx8JChyLm91dCx0KTtpZihyLnR5cGU9PT0ib2JqZWN0Iil7Zm9yKGNvbnN0IG8gaW4gci5zaGFwZSlpZigkKHIuc2hhcGVbb10sdCkpcmV0dXJuITA7cmV0dXJuITF9aWYoci50eXBlPT09InVuaW9uIil7Zm9yKGNvbnN0IG8gb2Ygci5vcHRpb25zKWlmKCQobyx0KSlyZXR1cm4hMDtyZXR1cm4hMX1pZihyLnR5cGU9PT0idHVwbGUiKXtmb3IoY29uc3QgbyBvZiByLml0ZW1zKWlmKCQobyx0KSlyZXR1cm4hMDtyZXR1cm4hIShyLnJlc3QmJiQoci5yZXN0LHQpKX1yZXR1cm4hMX1jb25zdCBhbz0oZSxuPXt9KT0+dD0+e2NvbnN0IHI9bm4oey4uLnQscHJvY2Vzc29yczpufSk7cmV0dXJuIHcoZSxyKSx0bihyLGUpLHJuKHIsZSl9LEs9KGUsbix0PXt9KT0+cj0+e2NvbnN0e2xpYnJhcnlPcHRpb25zOm8sdGFyZ2V0OnN9PXI/P3t9LGk9bm4oey4uLm8/P3t9LHRhcmdldDpzLGlvOm4scHJvY2Vzc29yczp0fSk7cmV0dXJuIHcoZSxpKSx0bihpLGUpLHJuKGksZSl9LGZvPXtndWlkOiJ1dWlkIix1cmw6InVyaSIsZGF0ZXRpbWU6ImRhdGUtdGltZSIsanNvbl9zdHJpbmc6Impzb24tc3RyaW5nIixyZWdleDoiIn0sbG89KGUsbix0LHIpPT57Y29uc3Qgbz10O28udHlwZT0ic3RyaW5nIjtjb25zdHttaW5pbXVtOnMsbWF4aW11bTppLGZvcm1hdDpjLHBhdHRlcm5zOmEsY29udGVudEVuY29kaW5nOmZ9PWUuX3pvZC5iYWc7aWYodHlwZW9mIHM9PSJudW1iZXIiJiYoby5taW5MZW5ndGg9cyksdHlwZW9mIGk9PSJudW1iZXIiJiYoby5tYXhMZW5ndGg9aSksYyYmKG8uZm9ybWF0PWZvW2NdPz9jLG8uZm9ybWF0PT09IiImJmRlbGV0ZSBvLmZvcm1hdCxjPT09InRpbWUiJiZkZWxldGUgby5mb3JtYXQpLGYmJihvLmNvbnRlbnRFbmNvZGluZz1mKSxhJiZhLnNpemU+MCl7Y29uc3QgbD1bLi4uYV07bC5sZW5ndGg9PT0xP28ucGF0dGVybj1sWzBdLnNvdXJjZTpsLmxlbmd0aD4xJiYoby5hbGxPZj1bLi4ubC5tYXAobT0+KHsuLi5uLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3t0eXBlOiJzdHJpbmcifTp7fSxwYXR0ZXJuOm0uc291cmNlfSkpXSl9fSxwbz0oZSxuLHQscik9Pntjb25zdCBvPXQse21pbmltdW06cyxtYXhpbXVtOmksZm9ybWF0OmMsbXVsdGlwbGVPZjphLGV4Y2x1c2l2ZU1heGltdW06ZixleGNsdXNpdmVNaW5pbXVtOmx9PWUuX3pvZC5iYWc7dHlwZW9mIGM9PSJzdHJpbmciJiZjLmluY2x1ZGVzKCJpbnQiKT9vLnR5cGU9ImludGVnZXIiOm8udHlwZT0ibnVtYmVyIix0eXBlb2YgbD09Im51bWJlciImJihuLnRhcmdldD09PSJkcmFmdC0wNCJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oby5taW5pbXVtPWwsby5leGNsdXNpdmVNaW5pbXVtPSEwKTpvLmV4Y2x1c2l2ZU1pbmltdW09bCksdHlwZW9mIHM9PSJudW1iZXIiJiYoby5taW5pbXVtPXMsdHlwZW9mIGw9PSJudW1iZXIiJiZuLnRhcmdldCE9PSJkcmFmdC0wNCImJihsPj1zP2RlbGV0ZSBvLm1pbmltdW06ZGVsZXRlIG8uZXhjbHVzaXZlTWluaW11bSkpLHR5cGVvZiBmPT0ibnVtYmVyIiYmKG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhvLm1heGltdW09ZixvLmV4Y2x1c2l2ZU1heGltdW09ITApOm8uZXhjbHVzaXZlTWF4aW11bT1mKSx0eXBlb2YgaT09Im51bWJlciImJihvLm1heGltdW09aSx0eXBlb2YgZj09Im51bWJlciImJm4udGFyZ2V0IT09ImRyYWZ0LTA0IiYmKGY8PWk/ZGVsZXRlIG8ubWF4aW11bTpkZWxldGUgby5leGNsdXNpdmVNYXhpbXVtKSksdHlwZW9mIGE9PSJudW1iZXIiJiYoby5tdWx0aXBsZU9mPWEpfSxobz0oZSxuLHQscik9Pnt0LnR5cGU9ImJvb2xlYW4ifSxtbz0oZSxuLHQscik9Pnt0Lm5vdD17fX0sX289KGUsbix0LHIpPT57fSxnbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz1DZShvLmVudHJpZXMpO3MuZXZlcnkoaT0+dHlwZW9mIGk9PSJudW1iZXIiKSYmKHQudHlwZT0ibnVtYmVyIikscy5ldmVyeShpPT50eXBlb2YgaT09InN0cmluZyIpJiYodC50eXBlPSJzdHJpbmciKSx0LmVudW09c30sdm89KGUsbix0LHIpPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQ3VzdG9tIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx6bz0oZSxuLHQscik9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxibz0oZSxuLHQscik9Pntjb25zdCBvPXQscz1lLl96b2QuZGVmLHttaW5pbXVtOmksbWF4aW11bTpjfT1lLl96b2QuYmFnO3R5cGVvZiBpPT0ibnVtYmVyIiYmKG8ubWluSXRlbXM9aSksdHlwZW9mIGM9PSJudW1iZXIiJiYoby5tYXhJdGVtcz1jKSxvLnR5cGU9ImFycmF5IixvLml0ZW1zPXcocy5lbGVtZW50LG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJpdGVtcyJdfSl9LHlvPShlLG4sdCxyKT0+e2NvbnN0IG89dCxzPWUuX3pvZC5kZWY7by50eXBlPSJvYmplY3QiLG8ucHJvcGVydGllcz17fTtjb25zdCBpPXMuc2hhcGU7Zm9yKGNvbnN0IGYgaW4gaSlvLnByb3BlcnRpZXNbZl09dyhpW2ZdLG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJwcm9wZXJ0aWVzIixmXX0pO2NvbnN0IGM9bmV3IFNldChPYmplY3Qua2V5cyhpKSksYT1uZXcgU2V0KFsuLi5jXS5maWx0ZXIoZj0+e2NvbnN0IGw9cy5zaGFwZVtmXS5fem9kO3JldHVybiBuLmlvPT09ImlucHV0Ij9sLm9wdGluPT09dm9pZCAwOmwub3B0b3V0PT09dm9pZCAwfSkpO2Euc2l6ZT4wJiYoby5yZXF1aXJlZD1BcnJheS5mcm9tKGEpKSxzLmNhdGNoYWxsPy5fem9kLmRlZi50eXBlPT09Im5ldmVyIj9vLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExOnMuY2F0Y2hhbGw/cy5jYXRjaGFsbCYmKG8uYWRkaXRpb25hbFByb3BlcnRpZXM9dyhzLmNhdGNoYWxsLG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJhZGRpdGlvbmFsUHJvcGVydGllcyJdfSkpOm4uaW89PT0ib3V0cHV0IiYmKG8uYWRkaXRpb25hbFByb3BlcnRpZXM9ITEpfSx3bz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz1vLmluY2x1c2l2ZT09PSExLGk9by5vcHRpb25zLm1hcCgoYyxhKT0+dyhjLG4sey4uLnIscGF0aDpbLi4uci5wYXRoLHM/Im9uZU9mIjoiYW55T2YiLGFdfSkpO3M/dC5vbmVPZj1pOnQuYW55T2Y9aX0sa289KGUsbix0LHIpPT57Y29uc3Qgbz1lLl96b2QuZGVmLHM9dyhvLmxlZnQsbix7Li4ucixwYXRoOlsuLi5yLnBhdGgsImFsbE9mIiwwXX0pLGk9dyhvLnJpZ2h0LG4sey4uLnIscGF0aDpbLi4uci5wYXRoLCJhbGxPZiIsMV19KSxjPWY9PiJhbGxPZiJpbiBmJiZPYmplY3Qua2V5cyhmKS5sZW5ndGg9PT0xLGE9Wy4uLmMocyk/cy5hbGxPZjpbc10sLi4uYyhpKT9pLmFsbE9mOltpXV07dC5hbGxPZj1hfSwkbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz13KG8uaW5uZXJUeXBlLG4sciksaT1uLnNlZW4uZ2V0KGUpO24udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oaS5yZWY9by5pbm5lclR5cGUsdC5udWxsYWJsZT0hMCk6dC5hbnlPZj1bcyx7dHlwZToibnVsbCJ9XX0sWm89KGUsbix0LHIpPT57Y29uc3Qgbz1lLl96b2QuZGVmO3coby5pbm5lclR5cGUsbixyKTtjb25zdCBzPW4uc2Vlbi5nZXQoZSk7cy5yZWY9by5pbm5lclR5cGV9LE9vPShlLG4sdCxyKT0+e2NvbnN0IG89ZS5fem9kLmRlZjt3KG8uaW5uZXJUeXBlLG4scik7Y29uc3Qgcz1uLnNlZW4uZ2V0KGUpO3MucmVmPW8uaW5uZXJUeXBlLHQuZGVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8uZGVmYXVsdFZhbHVlKSl9LFNvPShlLG4sdCxyKT0+e2NvbnN0IG89ZS5fem9kLmRlZjt3KG8uaW5uZXJUeXBlLG4scik7Y29uc3Qgcz1uLnNlZW4uZ2V0KGUpO3MucmVmPW8uaW5uZXJUeXBlLG4uaW89PT0iaW5wdXQiJiYodC5fcHJlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvLmRlZmF1bHRWYWx1ZSkpKX0sSW89KGUsbix0LHIpPT57Y29uc3Qgbz1lLl96b2QuZGVmO3coby5pbm5lclR5cGUsbixyKTtjb25zdCBzPW4uc2Vlbi5nZXQoZSk7cy5yZWY9by5pbm5lclR5cGU7bGV0IGk7dHJ5e2k9by5jYXRjaFZhbHVlKHZvaWQgMCl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJEeW5hbWljIGNhdGNoIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBKU09OIFNjaGVtYSIpfXQuZGVmYXVsdD1pfSxFbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWYscz1uLmlvPT09ImlucHV0Ij9vLmluLl96b2QuZGVmLnR5cGU9PT0idHJhbnNmb3JtIj9vLm91dDpvLmluOm8ub3V0O3cocyxuLHIpO2NvbnN0IGk9bi5zZWVuLmdldChlKTtpLnJlZj1zfSxQbz0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWY7dyhvLmlubmVyVHlwZSxuLHIpO2NvbnN0IHM9bi5zZWVuLmdldChlKTtzLnJlZj1vLmlubmVyVHlwZSx0LnJlYWRPbmx5PSEwfSxvbj0oZSxuLHQscik9Pntjb25zdCBvPWUuX3pvZC5kZWY7dyhvLmlubmVyVHlwZSxuLHIpO2NvbnN0IHM9bi5zZWVuLmdldChlKTtzLnJlZj1vLmlubmVyVHlwZX0sVG89dSgiWm9kSVNPRGF0ZVRpbWUiLChlLG4pPT57Q3QuaW5pdChlLG4pLHYuaW5pdChlLG4pfSk7ZnVuY3Rpb24gTm8oZSl7cmV0dXJuIFVyKFRvLGUpfWNvbnN0IGpvPXUoIlpvZElTT0RhdGUiLChlLG4pPT57UnQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSk7ZnVuY3Rpb24gQW8oZSl7cmV0dXJuIEZyKGpvLGUpfWNvbnN0IENvPXUoIlpvZElTT1RpbWUiLChlLG4pPT57RHQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSk7ZnVuY3Rpb24gUm8oZSl7cmV0dXJuIEpyKENvLGUpfWNvbnN0IERvPXUoIlpvZElTT0R1cmF0aW9uIiwoZSxuKT0+e3h0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pO2Z1bmN0aW9uIHhvKGUpe3JldHVybiBNcihEbyxlKX1jb25zdCBVbz0oZSxuKT0+e0ZlLmluaXQoZSxuKSxlLm5hbWU9IlpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtmb3JtYXQ6e3ZhbHVlOnQ9PlNuKGUsdCl9LGZsYXR0ZW46e3ZhbHVlOnQ9Pk9uKGUsdCl9LGFkZElzc3VlOnt2YWx1ZTp0PT57ZS5pc3N1ZXMucHVzaCh0KSxlLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoZS5pc3N1ZXMsbmUsMil9fSxhZGRJc3N1ZXM6e3ZhbHVlOnQ9PntlLmlzc3Vlcy5wdXNoKC4uLnQpLGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmlzc3VlcyxuZSwyKX19LGlzRW1wdHk6e2dldCgpe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg9PT0wfX19KX0sUz11KCJab2RFcnJvciIsVW8se1BhcmVudDpFcnJvcn0pLEZvPXVlKFMpLEpvPWFlKFMpLE1vPVgoUyksTG89cShTKSxWbz1QbihTKSxXbz1UbihTKSxCbz1ObihTKSxHbz1qbihTKSxLbz1BbihTKSxZbz1DbihTKSxYbz1SbihTKSxxbz1EbihTKSxiPXUoIlpvZFR5cGUiLChlLG4pPT4oei5pbml0KGUsbiksT2JqZWN0LmFzc2lnbihlWyJ+c3RhbmRhcmQiXSx7anNvblNjaGVtYTp7aW5wdXQ6SyhlLCJpbnB1dCIpLG91dHB1dDpLKGUsIm91dHB1dCIpfX0pLGUudG9KU09OU2NoZW1hPWFvKGUse30pLGUuZGVmPW4sZS50eXBlPW4udHlwZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX2RlZiIse3ZhbHVlOm59KSxlLmNoZWNrPSguLi50KT0+ZS5jbG9uZShQKG4se2NoZWNrczpbLi4ubi5jaGVja3M/P1tdLC4uLnQubWFwKHI9PnR5cGVvZiByPT0iZnVuY3Rpb24iP3tfem9kOntjaGVjazpyLGRlZjp7Y2hlY2s6ImN1c3RvbSJ9LG9uYXR0YWNoOltdfX06cildfSkse3BhcmVudDohMH0pLGUud2l0aD1lLmNoZWNrLGUuY2xvbmU9KHQscik9PlQoZSx0LHIpLGUuYnJhbmQ9KCk9PmUsZS5yZWdpc3Rlcj0oKHQscik9Pih0LmFkZChlLHIpLGUpKSxlLnBhcnNlPSh0LHIpPT5GbyhlLHQscix7Y2FsbGVlOmUucGFyc2V9KSxlLnNhZmVQYXJzZT0odCxyKT0+TW8oZSx0LHIpLGUucGFyc2VBc3luYz1hc3luYyh0LHIpPT5KbyhlLHQscix7Y2FsbGVlOmUucGFyc2VBc3luY30pLGUuc2FmZVBhcnNlQXN5bmM9YXN5bmModCxyKT0+TG8oZSx0LHIpLGUuc3BhPWUuc2FmZVBhcnNlQXN5bmMsZS5lbmNvZGU9KHQscik9PlZvKGUsdCxyKSxlLmRlY29kZT0odCxyKT0+V28oZSx0LHIpLGUuZW5jb2RlQXN5bmM9YXN5bmModCxyKT0+Qm8oZSx0LHIpLGUuZGVjb2RlQXN5bmM9YXN5bmModCxyKT0+R28oZSx0LHIpLGUuc2FmZUVuY29kZT0odCxyKT0+S28oZSx0LHIpLGUuc2FmZURlY29kZT0odCxyKT0+WW8oZSx0LHIpLGUuc2FmZUVuY29kZUFzeW5jPWFzeW5jKHQscik9PlhvKGUsdCxyKSxlLnNhZmVEZWNvZGVBc3luYz1hc3luYyh0LHIpPT5xbyhlLHQsciksZS5yZWZpbmU9KHQscik9PmUuY2hlY2soV2kodCxyKSksZS5zdXBlclJlZmluZT10PT5lLmNoZWNrKEJpKHQpKSxlLm92ZXJ3cml0ZT10PT5lLmNoZWNrKEQodCkpLGUub3B0aW9uYWw9KCk9PlBlKGUpLGUuZXhhY3RPcHRpb25hbD0oKT0+TmkoZSksZS5udWxsYWJsZT0oKT0+VGUoZSksZS5udWxsaXNoPSgpPT5QZShUZShlKSksZS5ub25vcHRpb25hbD10PT54aShlLHQpLGUuYXJyYXk9KCk9PndpKGUpLGUub3I9dD0+WmkoW2UsdF0pLGUuYW5kPXQ9PlNpKGUsdCksZS50cmFuc2Zvcm09dD0+TmUoZSxQaSh0KSksZS5kZWZhdWx0PXQ9PkNpKGUsdCksZS5wcmVmYXVsdD10PT5EaShlLHQpLGUuY2F0Y2g9dD0+RmkoZSx0KSxlLnBpcGU9dD0+TmUoZSx0KSxlLnJlYWRvbmx5PSgpPT5MaShlKSxlLmRlc2NyaWJlPXQ9Pntjb25zdCByPWUuY2xvbmUoKTtyZXR1cm4geC5hZGQocix7ZGVzY3JpcHRpb246dH0pLHJ9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJkZXNjcmlwdGlvbiIse2dldCgpe3JldHVybiB4LmdldChlKT8uZGVzY3JpcHRpb259LGNvbmZpZ3VyYWJsZTohMH0pLGUubWV0YT0oLi4udCk9PntpZih0Lmxlbmd0aD09PTApcmV0dXJuIHguZ2V0KGUpO2NvbnN0IHI9ZS5jbG9uZSgpO3JldHVybiB4LmFkZChyLHRbMF0pLHJ9LGUuaXNPcHRpb25hbD0oKT0+ZS5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzLGUuaXNOdWxsYWJsZT0oKT0+ZS5zYWZlUGFyc2UobnVsbCkuc3VjY2VzcyxlLmFwcGx5PXQ9PnQoZSksZSkpLHNuPXUoIl9ab2RTdHJpbmciLChlLG4pPT57ZmUuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLHMpPT5sbyhlLHIsbyk7Y29uc3QgdD1lLl96b2QuYmFnO2UuZm9ybWF0PXQuZm9ybWF0Pz9udWxsLGUubWluTGVuZ3RoPXQubWluaW11bT8/bnVsbCxlLm1heExlbmd0aD10Lm1heGltdW0/P251bGwsZS5yZWdleD0oLi4ucik9PmUuY2hlY2soS3IoLi4ucikpLGUuaW5jbHVkZXM9KC4uLnIpPT5lLmNoZWNrKHFyKC4uLnIpKSxlLnN0YXJ0c1dpdGg9KC4uLnIpPT5lLmNoZWNrKEhyKC4uLnIpKSxlLmVuZHNXaXRoPSguLi5yKT0+ZS5jaGVjayhRciguLi5yKSksZS5taW49KC4uLnIpPT5lLmNoZWNrKEcoLi4ucikpLGUubWF4PSguLi5yKT0+ZS5jaGVjayhRZSguLi5yKSksZS5sZW5ndGg9KC4uLnIpPT5lLmNoZWNrKGVuKC4uLnIpKSxlLm5vbmVtcHR5PSguLi5yKT0+ZS5jaGVjayhHKDEsLi4ucikpLGUubG93ZXJjYXNlPXI9PmUuY2hlY2soWXIocikpLGUudXBwZXJjYXNlPXI9PmUuY2hlY2soWHIocikpLGUudHJpbT0oKT0+ZS5jaGVjayhubygpKSxlLm5vcm1hbGl6ZT0oLi4ucik9PmUuY2hlY2soZW8oLi4ucikpLGUudG9Mb3dlckNhc2U9KCk9PmUuY2hlY2sodG8oKSksZS50b1VwcGVyQ2FzZT0oKT0+ZS5jaGVjayhybygpKSxlLnNsdWdpZnk9KCk9PmUuY2hlY2sob28oKSl9KSxIbz11KCJab2RTdHJpbmciLChlLG4pPT57ZmUuaW5pdChlLG4pLHNuLmluaXQoZSxuKSxlLmVtYWlsPXQ9PmUuY2hlY2sodnIoUW8sdCkpLGUudXJsPXQ9PmUuY2hlY2soa3IoZWksdCkpLGUuand0PXQ9PmUuY2hlY2soeHIobWksdCkpLGUuZW1vamk9dD0+ZS5jaGVjaygkcihuaSx0KSksZS5ndWlkPXQ9PmUuY2hlY2soa2UoU2UsdCkpLGUudXVpZD10PT5lLmNoZWNrKHpyKFYsdCkpLGUudXVpZHY0PXQ9PmUuY2hlY2soYnIoVix0KSksZS51dWlkdjY9dD0+ZS5jaGVjayh5cihWLHQpKSxlLnV1aWR2Nz10PT5lLmNoZWNrKHdyKFYsdCkpLGUubmFub2lkPXQ9PmUuY2hlY2soWnIodGksdCkpLGUuZ3VpZD10PT5lLmNoZWNrKGtlKFNlLHQpKSxlLmN1aWQ9dD0+ZS5jaGVjayhPcihyaSx0KSksZS5jdWlkMj10PT5lLmNoZWNrKFNyKG9pLHQpKSxlLnVsaWQ9dD0+ZS5jaGVjayhJcihpaSx0KSksZS5iYXNlNjQ9dD0+ZS5jaGVjayhDcihkaSx0KSksZS5iYXNlNjR1cmw9dD0+ZS5jaGVjayhScihwaSx0KSksZS54aWQ9dD0+ZS5jaGVjayhFcihzaSx0KSksZS5rc3VpZD10PT5lLmNoZWNrKFByKGNpLHQpKSxlLmlwdjQ9dD0+ZS5jaGVjayhUcih1aSx0KSksZS5pcHY2PXQ9PmUuY2hlY2soTnIoYWksdCkpLGUuY2lkcnY0PXQ9PmUuY2hlY2soanIoZmksdCkpLGUuY2lkcnY2PXQ9PmUuY2hlY2soQXIobGksdCkpLGUuZTE2ND10PT5lLmNoZWNrKERyKGhpLHQpKSxlLmRhdGV0aW1lPXQ9PmUuY2hlY2soTm8odCkpLGUuZGF0ZT10PT5lLmNoZWNrKEFvKHQpKSxlLnRpbWU9dD0+ZS5jaGVjayhSbyh0KSksZS5kdXJhdGlvbj10PT5lLmNoZWNrKHhvKHQpKX0pO2Z1bmN0aW9uIEtpKGUpe3JldHVybiBncihIbyxlKX1jb25zdCB2PXUoIlpvZFN0cmluZ0Zvcm1hdCIsKGUsbik9PntnLmluaXQoZSxuKSxzbi5pbml0KGUsbil9KSxRbz11KCJab2RFbWFpbCIsKGUsbik9PntPdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxTZT11KCJab2RHVUlEIiwoZSxuKT0+eyR0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLFY9dSgiWm9kVVVJRCIsKGUsbik9PntadC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxlaT11KCJab2RVUkwiLChlLG4pPT57U3QuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksbmk9dSgiWm9kRW1vamkiLChlLG4pPT57SXQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksdGk9dSgiWm9kTmFub0lEIiwoZSxuKT0+e0V0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLHJpPXUoIlpvZENVSUQiLChlLG4pPT57UHQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksb2k9dSgiWm9kQ1VJRDIiLChlLG4pPT57VHQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksaWk9dSgiWm9kVUxJRCIsKGUsbik9PntOdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxzaT11KCJab2RYSUQiLChlLG4pPT57anQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksY2k9dSgiWm9kS1NVSUQiLChlLG4pPT57QXQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksdWk9dSgiWm9kSVB2NCIsKGUsbik9PntVdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxhaT11KCJab2RJUHY2IiwoZSxuKT0+e0Z0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLGZpPXUoIlpvZENJRFJ2NCIsKGUsbik9PntKdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxsaT11KCJab2RDSURSdjYiLChlLG4pPT57TXQuaW5pdChlLG4pLHYuaW5pdChlLG4pfSksZGk9dSgiWm9kQmFzZTY0IiwoZSxuKT0+e0x0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLHBpPXUoIlpvZEJhc2U2NFVSTCIsKGUsbik9PntXdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxoaT11KCJab2RFMTY0IiwoZSxuKT0+e0J0LmluaXQoZSxuKSx2LmluaXQoZSxuKX0pLG1pPXUoIlpvZEpXVCIsKGUsbik9PntLdC5pbml0KGUsbiksdi5pbml0KGUsbil9KSxjbj11KCJab2ROdW1iZXIiLChlLG4pPT57WWUuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLHMpPT5wbyhlLHIsbyksZS5ndD0ocixvKT0+ZS5jaGVjayhaZShyLG8pKSxlLmd0ZT0ocixvKT0+ZS5jaGVjayhlZShyLG8pKSxlLm1pbj0ocixvKT0+ZS5jaGVjayhlZShyLG8pKSxlLmx0PShyLG8pPT5lLmNoZWNrKCRlKHIsbykpLGUubHRlPShyLG8pPT5lLmNoZWNrKFEocixvKSksZS5tYXg9KHIsbyk9PmUuY2hlY2soUShyLG8pKSxlLmludD1yPT5lLmNoZWNrKEllKHIpKSxlLnNhZmU9cj0+ZS5jaGVjayhJZShyKSksZS5wb3NpdGl2ZT1yPT5lLmNoZWNrKFplKDAscikpLGUubm9ubmVnYXRpdmU9cj0+ZS5jaGVjayhlZSgwLHIpKSxlLm5lZ2F0aXZlPXI9PmUuY2hlY2soJGUoMCxyKSksZS5ub25wb3NpdGl2ZT1yPT5lLmNoZWNrKFEoMCxyKSksZS5tdWx0aXBsZU9mPShyLG8pPT5lLmNoZWNrKE9lKHIsbykpLGUuc3RlcD0ocixvKT0+ZS5jaGVjayhPZShyLG8pKSxlLmZpbml0ZT0oKT0+ZTtjb25zdCB0PWUuX3pvZC5iYWc7ZS5taW5WYWx1ZT1NYXRoLm1heCh0Lm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSx0LmV4Y2x1c2l2ZU1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSk/P251bGwsZS5tYXhWYWx1ZT1NYXRoLm1pbih0Lm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSx0LmV4Y2x1c2l2ZU1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSk/P251bGwsZS5pc0ludD0odC5mb3JtYXQ/PyIiKS5pbmNsdWRlcygiaW50Iil8fE51bWJlci5pc1NhZmVJbnRlZ2VyKHQubXVsdGlwbGVPZj8/LjUpLGUuaXNGaW5pdGU9ITAsZS5mb3JtYXQ9dC5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiBZaShlKXtyZXR1cm4gTHIoY24sZSl9Y29uc3QgX2k9dSgiWm9kTnVtYmVyRm9ybWF0IiwoZSxuKT0+e1l0LmluaXQoZSxuKSxjbi5pbml0KGUsbil9KTtmdW5jdGlvbiBJZShlKXtyZXR1cm4gVnIoX2ksZSl9Y29uc3QgZ2k9dSgiWm9kQm9vbGVhbiIsKGUsbik9PntYdC5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PmhvKGUsdCxyKX0pO2Z1bmN0aW9uIFhpKGUpe3JldHVybiBXcihnaSxlKX1jb25zdCB2aT11KCJab2RVbmtub3duIiwoZSxuKT0+e3F0LmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+X28oKX0pO2Z1bmN0aW9uIEVlKCl7cmV0dXJuIEJyKHZpKX1jb25zdCB6aT11KCJab2ROZXZlciIsKGUsbik9PntIdC5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9Pm1vKGUsdCxyKX0pO2Z1bmN0aW9uIGJpKGUpe3JldHVybiBHcih6aSxlKX1jb25zdCB5aT11KCJab2RBcnJheSIsKGUsbik9PntRdC5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PmJvKGUsdCxyLG8pLGUuZWxlbWVudD1uLmVsZW1lbnQsZS5taW49KHQscik9PmUuY2hlY2soRyh0LHIpKSxlLm5vbmVtcHR5PXQ9PmUuY2hlY2soRygxLHQpKSxlLm1heD0odCxyKT0+ZS5jaGVjayhRZSh0LHIpKSxlLmxlbmd0aD0odCxyKT0+ZS5jaGVjayhlbih0LHIpKSxlLnVud3JhcD0oKT0+ZS5lbGVtZW50fSk7ZnVuY3Rpb24gd2koZSxuKXtyZXR1cm4gaW8oeWksZSxuKX1jb25zdCBraT11KCJab2RPYmplY3QiLChlLG4pPT57bnIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT55byhlLHQscixvKSxfKGUsInNoYXBlIiwoKT0+bi5zaGFwZSksZS5rZXlvZj0oKT0+SWkoT2JqZWN0LmtleXMoZS5fem9kLmRlZi5zaGFwZSkpLGUuY2F0Y2hhbGw9dD0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDp0fSksZS5wYXNzdGhyb3VnaD0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDpFZSgpfSksZS5sb29zZT0oKT0+ZS5jbG9uZSh7Li4uZS5fem9kLmRlZixjYXRjaGFsbDpFZSgpfSksZS5zdHJpY3Q9KCk9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6YmkoKX0pLGUuc3RyaXA9KCk9PmUuY2xvbmUoey4uLmUuX3pvZC5kZWYsY2F0Y2hhbGw6dm9pZCAwfSksZS5leHRlbmQ9dD0+eW4oZSx0KSxlLnNhZmVFeHRlbmQ9dD0+d24oZSx0KSxlLm1lcmdlPXQ9PmtuKGUsdCksZS5waWNrPXQ9PnpuKGUsdCksZS5vbWl0PXQ9PmJuKGUsdCksZS5wYXJ0aWFsPSguLi50KT0+JG4odW4sZSx0WzBdKSxlLnJlcXVpcmVkPSguLi50KT0+Wm4oYW4sZSx0WzBdKX0pO2Z1bmN0aW9uIHFpKGUsbil7Y29uc3QgdD17dHlwZToib2JqZWN0IixzaGFwZTplPz97fSwuLi5kKG4pfTtyZXR1cm4gbmV3IGtpKHQpfWNvbnN0ICRpPXUoIlpvZFVuaW9uIiwoZSxuKT0+e3RyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+d28oZSx0LHIsbyksZS5vcHRpb25zPW4ub3B0aW9uc30pO2Z1bmN0aW9uIFppKGUsbil7cmV0dXJuIG5ldyAkaSh7dHlwZToidW5pb24iLG9wdGlvbnM6ZSwuLi5kKG4pfSl9Y29uc3QgT2k9dSgiWm9kSW50ZXJzZWN0aW9uIiwoZSxuKT0+e3JyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+a28oZSx0LHIsbyl9KTtmdW5jdGlvbiBTaShlLG4pe3JldHVybiBuZXcgT2koe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDplLHJpZ2h0Om59KX1jb25zdCByZT11KCJab2RFbnVtIiwoZSxuKT0+e29yLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxzKT0+Z28oZSxyLG8pLGUuZW51bT1uLmVudHJpZXMsZS5vcHRpb25zPU9iamVjdC52YWx1ZXMobi5lbnRyaWVzKTtjb25zdCB0PW5ldyBTZXQoT2JqZWN0LmtleXMobi5lbnRyaWVzKSk7ZS5leHRyYWN0PShyLG8pPT57Y29uc3Qgcz17fTtmb3IoY29uc3QgaSBvZiByKWlmKHQuaGFzKGkpKXNbaV09bi5lbnRyaWVzW2ldO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtpfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgcmUoey4uLm4sY2hlY2tzOltdLC4uLmQobyksZW50cmllczpzfSl9LGUuZXhjbHVkZT0ocixvKT0+e2NvbnN0IHM9ey4uLm4uZW50cmllc307Zm9yKGNvbnN0IGkgb2YgcilpZih0LmhhcyhpKSlkZWxldGUgc1tpXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7aX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IHJlKHsuLi5uLGNoZWNrczpbXSwuLi5kKG8pLGVudHJpZXM6c30pfX0pO2Z1bmN0aW9uIElpKGUsbil7Y29uc3QgdD1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChyPT5bcixyXSkpOmU7cmV0dXJuIG5ldyByZSh7dHlwZToiZW51bSIsZW50cmllczp0LC4uLmQobil9KX1jb25zdCBFaT11KCJab2RUcmFuc2Zvcm0iLChlLG4pPT57aXIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT56byhlLHQpLGUuX3pvZC5wYXJzZT0odCxyKT0+e2lmKHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgamUoZS5jb25zdHJ1Y3Rvci5uYW1lKTt0LmFkZElzc3VlPXM9PntpZih0eXBlb2Ygcz09InN0cmluZyIpdC5pc3N1ZXMucHVzaChGKHMsdC52YWx1ZSxuKSk7ZWxzZXtjb25zdCBpPXM7aS5mYXRhbCYmKGkuY29udGludWU9ITEpLGkuY29kZT8/KGkuY29kZT0iY3VzdG9tIiksaS5pbnB1dD8/KGkuaW5wdXQ9dC52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PWUpLHQuaXNzdWVzLnB1c2goRihpKSl9fTtjb25zdCBvPW4udHJhbnNmb3JtKHQudmFsdWUsdCk7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihzPT4odC52YWx1ZT1zLHQpKToodC52YWx1ZT1vLHQpfX0pO2Z1bmN0aW9uIFBpKGUpe3JldHVybiBuZXcgRWkoe3R5cGU6InRyYW5zZm9ybSIsdHJhbnNmb3JtOmV9KX1jb25zdCB1bj11KCJab2RPcHRpb25hbCIsKGUsbik9PntIZS5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9Pm9uKGUsdCxyLG8pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFBlKGUpe3JldHVybiBuZXcgdW4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IFRpPXUoIlpvZEV4YWN0T3B0aW9uYWwiLChlLG4pPT57c3IuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT5vbihlLHQscixvKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBOaShlKXtyZXR1cm4gbmV3IFRpKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOmV9KX1jb25zdCBqaT11KCJab2ROdWxsYWJsZSIsKGUsbik9Pntjci5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PiRvKGUsdCxyLG8pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFRlKGUpe3JldHVybiBuZXcgamkoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6ZX0pfWNvbnN0IEFpPXUoIlpvZERlZmF1bHQiLChlLG4pPT57dXIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT5PbyhlLHQscixvKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGUsZS5yZW1vdmVEZWZhdWx0PWUudW53cmFwfSk7ZnVuY3Rpb24gQ2koZSxuKXtyZXR1cm4gbmV3IEFpKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpEZShuKX19KX1jb25zdCBSaT11KCJab2RQcmVmYXVsdCIsKGUsbik9Pnthci5pbml0KGUsbiksYi5pbml0KGUsbiksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPSh0LHIsbyk9PlNvKGUsdCxyLG8pLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIERpKGUsbil7cmV0dXJuIG5ldyBSaSh7dHlwZToicHJlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bigpOkRlKG4pfX0pfWNvbnN0IGFuPXUoIlpvZE5vbk9wdGlvbmFsIiwoZSxuKT0+e2ZyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+Wm8oZSx0LHIsbyksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24geGkoZSxuKXtyZXR1cm4gbmV3IGFuKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmUsLi4uZChuKX0pfWNvbnN0IFVpPXUoIlpvZENhdGNoIiwoZSxuKT0+e2xyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+SW8oZSx0LHIsbyksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlLGUucmVtb3ZlQ2F0Y2g9ZS51bndyYXB9KTtmdW5jdGlvbiBGaShlLG4pe3JldHVybiBuZXcgVWkoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6ZSxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246KCk9Pm59KX1jb25zdCBKaT11KCJab2RQaXBlIiwoZSxuKT0+e2RyLmluaXQoZSxuKSxiLmluaXQoZSxuKSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHQscixvKT0+RW8oZSx0LHIsbyksZS5pbj1uLmluLGUub3V0PW4ub3V0fSk7ZnVuY3Rpb24gTmUoZSxuKXtyZXR1cm4gbmV3IEppKHt0eXBlOiJwaXBlIixpbjplLG91dDpufSl9Y29uc3QgTWk9dSgiWm9kUmVhZG9ubHkiLChlLG4pPT57cHIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT5QbyhlLHQscixvKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBMaShlKXtyZXR1cm4gbmV3IE1pKHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOmV9KX1jb25zdCBWaT11KCJab2RDdXN0b20iLChlLG4pPT57aHIuaW5pdChlLG4pLGIuaW5pdChlLG4pLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0odCxyLG8pPT52byhlLHQpfSk7ZnVuY3Rpb24gV2koZSxuPXt9KXtyZXR1cm4gc28oVmksZSxuKX1mdW5jdGlvbiBCaShlKXtyZXR1cm4gY28oZSl9ZXhwb3J0e0lpIGFzIF8sd2kgYXMgYSxYaSBhcyBiLFlpIGFzIG4scWkgYXMgbyxLaSBhcyBzfTsK", "/_nuxt/C1OQiyUD.js": "aW1wb3J0e0ogYXMgeixLIGFzICQsYWwgYXMgayxvIGFzIHAsYyBhcyB3LGEgYXMgaCxMIGFzIHMsTSBhcyBiLGkgYXMgZSxhYSBhcyBELGggYXMgQyx2IGFzIHEsRiBhcyBTLGwgYXMgTixOIGFzIG0sYUYgYXMgeH1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHt1IGFzIEIsYSBhcyBNLF8gYXMgUH1mcm9tIi4vQ3RhMTVzRy0uanMiO2NvbnN0IF89e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIG1pbi13LTAgbWluLWgtc3ZoIGxnOm5vdC1sYXN0OmJvcmRlci1lIGxnOm5vdC1sYXN0OmJvcmRlci1kZWZhdWx0IHNocmluay0wIixib2R5OiJmbGV4IGZsZXgtY29sIGdhcC00IHNtOmdhcC02IGZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcC00IHNtOnAtNiIsaGFuZGxlOiIifSx2YXJpYW50czp7c2l6ZTp7dHJ1ZTp7cm9vdDoidy1mdWxsIGxnOnctKC0td2lkdGgpIn0sZmFsc2U6e3Jvb3Q6ImZsZXgtMSJ9fX19LFQ9WyJkYXRhLWRyYWdnaW5nIl0sQT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVEYXNoYm9hcmRQYW5lbCIscHJvcHM6e2NsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtaW5TaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjE1fSxtYXhTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGVmYXVsdFNpemU6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyZXNpemFibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfX0sc2V0dXAoaSl7Y29uc3Qgbz1pLGc9eigpLGw9JCgiZGFzaGJvYXJkUGFuZWwiLG8pLHQ9Qih7c3RvcmFnZUtleToiZGFzaGJvYXJkIix1bml0OiIlIn0pLHI9YCR7dC5zdG9yYWdlS2V5fS1wYW5lbC0ke28uaWR8fGsoKX1gLHtlbDp5LHNpemU6bixpc0RyYWdnaW5nOnYsb25Nb3VzZURvd246dSxvblRvdWNoU3RhcnQ6YyxvbkRvdWJsZUNsaWNrOmZ9PU0ocix4KCgpPT4oey4uLnQsLi4ub30pKSksZD1OKCgpPT5tKHtleHRlbmQ6bShfKSwuLi5nLnVpPy5kYXNoYm9hcmRQYW5lbHx8e319KSh7c2l6ZTohIW4udmFsdWV9KSk7cmV0dXJuKGEsRik9PihwKCksdyhTLG51bGwsW2goImRpdiIsRCh7aWQ6cixyZWZfa2V5OiJlbCIscmVmOnl9LGEuJGF0dHJzLHsiZGF0YS1kcmFnZ2luZyI6ZSh2KSwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6ZC52YWx1ZS5yb290KHtjbGFzczpbZShsKT8ucm9vdCxvLmNsYXNzXX0pLHN0eWxlOltlKG4pP3siLS13aWR0aCI6YCR7ZShuKX0ke2UodCkudW5pdH1gfTp2b2lkIDBdfSksW3MoYS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bcyhhLiRzbG90cywiaGVhZGVyIiksaCgiZGl2Iix7ImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOmIoZC52YWx1ZS5ib2R5KHtjbGFzczplKGwpPy5ib2R5fSkpfSxbcyhhLiRzbG90cywiYm9keSIpXSwyKSxzKGEuJHNsb3RzLCJmb290ZXIiKV0pXSwxNixUKSxzKGEuJHNsb3RzLCJyZXNpemUtaGFuZGxlIix7b25Nb3VzZURvd246ZSh1KSxvblRvdWNoU3RhcnQ6ZShjKSxvbkRvdWJsZUNsaWNrOmUoZil9LCgpPT5baS5yZXNpemFibGU/KHAoKSxDKFAse2tleTowLCJhcmlhLWNvbnRyb2xzIjpyLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOmIoZC52YWx1ZS5oYW5kbGUoe2NsYXNzOmUobCk/LmhhbmRsZX0pKSxvbk1vdXNlZG93bjplKHUpLG9uVG91Y2hzdGFydDplKGMpLG9uRGJsY2xpY2s6ZShmKX0sbnVsbCw4LFsiY2xhc3MiLCJvbk1vdXNlZG93biIsIm9uVG91Y2hzdGFydCIsIm9uRGJsY2xpY2siXSkpOnEoIiIsITApXSldLDY0KSl9fSk7ZXhwb3J0e0EgYXMgX307Cg==", "/_nuxt/C7Yy6tR3.js": "aW1wb3J0e2kgYXMgTSxSIGFzIEksY2UgYXMgQyxiRiBhcyBULGF5IGFzIFcsbCBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7ZnVuY3Rpb24gUyhvLHIsZSl7bGV0IHM9ZS5pbml0aWFsRGVwcz8/W10sdCxuPSEwO2Z1bmN0aW9uIGwoKXt2YXIgaSxhLHU7bGV0IGM7ZS5rZXkmJigoaT1lLmRlYnVnKSE9bnVsbCYmaS5jYWxsKGUpKSYmKGM9RGF0ZS5ub3coKSk7Y29uc3QgZD1vKCk7aWYoIShkLmxlbmd0aCE9PXMubGVuZ3RofHxkLnNvbWUoKGYsYik9PnNbYl0hPT1mKSkpcmV0dXJuIHQ7cz1kO2xldCBoO2lmKGUua2V5JiYoKGE9ZS5kZWJ1ZykhPW51bGwmJmEuY2FsbChlKSkmJihoPURhdGUubm93KCkpLHQ9ciguLi5kKSxlLmtleSYmKCh1PWUuZGVidWcpIT1udWxsJiZ1LmNhbGwoZSkpKXtjb25zdCBmPU1hdGgucm91bmQoKERhdGUubm93KCktYykqMTAwKS8xMDAsZz1NYXRoLnJvdW5kKChEYXRlLm5vdygpLWgpKjEwMCkvMTAwLzE2LHg9KG0sRSk9Pntmb3IobT1TdHJpbmcobSk7bS5sZW5ndGg8RTspbT0iICIrbTtyZXR1cm4gbX19cmV0dXJuIGU/Lm9uQ2hhbmdlJiYhKG4mJmUuc2tpcEluaXRpYWxPbkNoYW5nZSkmJmUub25DaGFuZ2UodCksbj0hMSx0fXJldHVybiBsLnVwZGF0ZURlcHM9aT0+e3M9aX0sbH1mdW5jdGlvbiB6KG8scil7aWYobz09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdW5kZWZpbmVkIik7cmV0dXJuIG99Y29uc3QgRD0obyxyKT0+TWF0aC5hYnMoby1yKTwxLjAxLEw9KG8scixlKT0+e2xldCBzO3JldHVybiBmdW5jdGlvbiguLi50KXtvLmNsZWFyVGltZW91dChzKSxzPW8uc2V0VGltZW91dCgoKT0+ci5hcHBseSh0aGlzLHQpLGUpfX0seT1vPT57Y29uc3R7b2Zmc2V0V2lkdGg6cixvZmZzZXRIZWlnaHQ6ZX09bztyZXR1cm57d2lkdGg6cixoZWlnaHQ6ZX19LGo9bz0+byxQPW89Pntjb25zdCByPU1hdGgubWF4KG8uc3RhcnRJbmRleC1vLm92ZXJzY2FuLDApLGU9TWF0aC5taW4oby5lbmRJbmRleCtvLm92ZXJzY2FuLG8uY291bnQtMSkscz1bXTtmb3IobGV0IHQ9cjt0PD1lO3QrKylzLnB1c2godCk7cmV0dXJuIHN9LE49KG8scik9Pntjb25zdCBlPW8uc2Nyb2xsRWxlbWVudDtpZighZSlyZXR1cm47Y29uc3Qgcz1vLnRhcmdldFdpbmRvdztpZighcylyZXR1cm47Y29uc3QgdD1sPT57Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09bDtyKHt3aWR0aDpNYXRoLnJvdW5kKGkpLGhlaWdodDpNYXRoLnJvdW5kKGEpfSl9O2lmKHQoeShlKSksIXMuUmVzaXplT2JzZXJ2ZXIpcmV0dXJuKCk9Pnt9O2NvbnN0IG49bmV3IHMuUmVzaXplT2JzZXJ2ZXIobD0+e2NvbnN0IGk9KCk9Pntjb25zdCBhPWxbMF07aWYoYT8uYm9yZGVyQm94U2l6ZSl7Y29uc3QgdT1hLmJvcmRlckJveFNpemVbMF07aWYodSl7dCh7d2lkdGg6dS5pbmxpbmVTaXplLGhlaWdodDp1LmJsb2NrU2l6ZX0pO3JldHVybn19dCh5KGUpKX07by5vcHRpb25zLnVzZUFuaW1hdGlvbkZyYW1lV2l0aFJlc2l6ZU9ic2VydmVyP3JlcXVlc3RBbmltYXRpb25GcmFtZShpKTppKCl9KTtyZXR1cm4gbi5vYnNlcnZlKGUse2JveDoiYm9yZGVyLWJveCJ9KSwoKT0+e24udW5vYnNlcnZlKGUpfX0sQT17cGFzc2l2ZTohMH0sRj10eXBlb2Ygd2luZG93PiJ1Ij8hMDoib25zY3JvbGxlbmQiaW4gd2luZG93LEI9KG8scik9Pntjb25zdCBlPW8uc2Nyb2xsRWxlbWVudDtpZighZSlyZXR1cm47Y29uc3Qgcz1vLnRhcmdldFdpbmRvdztpZighcylyZXR1cm47bGV0IHQ9MDtjb25zdCBuPW8ub3B0aW9ucy51c2VTY3JvbGxlbmRFdmVudCYmRj8oKT0+e306TChzLCgpPT57cih0LCExKX0sby5vcHRpb25zLmlzU2Nyb2xsaW5nUmVzZXREZWxheSksbD1jPT4oKT0+e2NvbnN0e2hvcml6b250YWw6ZCxpc1J0bDp2fT1vLm9wdGlvbnM7dD1kP2Uuc2Nyb2xsTGVmdCoodiYmLTF8fDEpOmUuc2Nyb2xsVG9wLG4oKSxyKHQsYyl9LGk9bCghMCksYT1sKCExKTtlLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsaSxBKTtjb25zdCB1PW8ub3B0aW9ucy51c2VTY3JvbGxlbmRFdmVudCYmRjtyZXR1cm4gdSYmZS5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGxlbmQiLGEsQSksKCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsaSksdSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGxlbmQiLGEpfX0sVj0obyxyLGUpPT57aWYocj8uYm9yZGVyQm94U2l6ZSl7Y29uc3Qgcz1yLmJvcmRlckJveFNpemVbMF07aWYocylyZXR1cm4gTWF0aC5yb3VuZChzW2Uub3B0aW9ucy5ob3Jpem9udGFsPyJpbmxpbmVTaXplIjoiYmxvY2tTaXplIl0pfXJldHVybiBvW2Uub3B0aW9ucy5ob3Jpem9udGFsPyJvZmZzZXRXaWR0aCI6Im9mZnNldEhlaWdodCJdfSxIPShvLHthZGp1c3RtZW50czpyPTAsYmVoYXZpb3I6ZX0scyk9Pnt2YXIgdCxuO2NvbnN0IGw9bytyOyhuPSh0PXMuc2Nyb2xsRWxlbWVudCk9PW51bGw/dm9pZCAwOnQuc2Nyb2xsVG8pPT1udWxsfHxuLmNhbGwodCx7W3Mub3B0aW9ucy5ob3Jpem9udGFsPyJsZWZ0IjoidG9wIl06bCxiZWhhdmlvcjplfSl9O2NsYXNzIFV7Y29uc3RydWN0b3Iocil7dGhpcy51bnN1YnM9W10sdGhpcy5zY3JvbGxFbGVtZW50PW51bGwsdGhpcy50YXJnZXRXaW5kb3c9bnVsbCx0aGlzLmlzU2Nyb2xsaW5nPSExLHRoaXMuc2Nyb2xsU3RhdGU9bnVsbCx0aGlzLm1lYXN1cmVtZW50c0NhY2hlPVtdLHRoaXMuaXRlbVNpemVDYWNoZT1uZXcgTWFwLHRoaXMubGFuZUFzc2lnbm1lbnRzPW5ldyBNYXAsdGhpcy5wZW5kaW5nTWVhc3VyZWRDYWNoZUluZGV4ZXM9W10sdGhpcy5wcmV2TGFuZXM9dm9pZCAwLHRoaXMubGFuZXNDaGFuZ2VkRmxhZz0hMSx0aGlzLmxhbmVzU2V0dGxpbmc9ITEsdGhpcy5zY3JvbGxSZWN0PW51bGwsdGhpcy5zY3JvbGxPZmZzZXQ9bnVsbCx0aGlzLnNjcm9sbERpcmVjdGlvbj1udWxsLHRoaXMuc2Nyb2xsQWRqdXN0bWVudHM9MCx0aGlzLmVsZW1lbnRzQ2FjaGU9bmV3IE1hcCx0aGlzLm5vdz0oKT0+e3ZhciBlLHMsdDtyZXR1cm4oKHQ9KHM9KGU9dGhpcy50YXJnZXRXaW5kb3cpPT1udWxsP3ZvaWQgMDplLnBlcmZvcm1hbmNlKT09bnVsbD92b2lkIDA6cy5ub3cpPT1udWxsP3ZvaWQgMDp0LmNhbGwocykpPz9EYXRlLm5vdygpfSx0aGlzLm9ic2VydmVyPSgoKT0+e2xldCBlPW51bGw7Y29uc3Qgcz0oKT0+ZXx8KCF0aGlzLnRhcmdldFdpbmRvd3x8IXRoaXMudGFyZ2V0V2luZG93LlJlc2l6ZU9ic2VydmVyP251bGw6ZT1uZXcgdGhpcy50YXJnZXRXaW5kb3cuUmVzaXplT2JzZXJ2ZXIodD0+e3QuZm9yRWFjaChuPT57Y29uc3QgbD0oKT0+e2NvbnN0IGk9bi50YXJnZXQsYT10aGlzLmluZGV4RnJvbUVsZW1lbnQoaSk7aWYoIWkuaXNDb25uZWN0ZWQpe3RoaXMub2JzZXJ2ZXIudW5vYnNlcnZlKGkpO3JldHVybn10aGlzLnNob3VsZE1lYXN1cmVEdXJpbmdTY3JvbGwoYSkmJnRoaXMucmVzaXplSXRlbShhLHRoaXMub3B0aW9ucy5tZWFzdXJlRWxlbWVudChpLG4sdGhpcykpfTt0aGlzLm9wdGlvbnMudXNlQW5pbWF0aW9uRnJhbWVXaXRoUmVzaXplT2JzZXJ2ZXI/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGwpOmwoKX0pfSkpO3JldHVybntkaXNjb25uZWN0OigpPT57dmFyIHQ7KHQ9cygpKT09bnVsbHx8dC5kaXNjb25uZWN0KCksZT1udWxsfSxvYnNlcnZlOnQ9Pnt2YXIgbjtyZXR1cm4obj1zKCkpPT1udWxsP3ZvaWQgMDpuLm9ic2VydmUodCx7Ym94OiJib3JkZXItYm94In0pfSx1bm9ic2VydmU6dD0+e3ZhciBuO3JldHVybihuPXMoKSk9PW51bGw/dm9pZCAwOm4udW5vYnNlcnZlKHQpfX19KSgpLHRoaXMucmFuZ2U9bnVsbCx0aGlzLnNldE9wdGlvbnM9ZT0+e09iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtzLHRdKT0+e3R5cGVvZiB0PiJ1IiYmZGVsZXRlIGVbc119KSx0aGlzLm9wdGlvbnM9e2RlYnVnOiExLGluaXRpYWxPZmZzZXQ6MCxvdmVyc2NhbjoxLHBhZGRpbmdTdGFydDowLHBhZGRpbmdFbmQ6MCxzY3JvbGxQYWRkaW5nU3RhcnQ6MCxzY3JvbGxQYWRkaW5nRW5kOjAsaG9yaXpvbnRhbDohMSxnZXRJdGVtS2V5OmoscmFuZ2VFeHRyYWN0b3I6UCxvbkNoYW5nZTooKT0+e30sbWVhc3VyZUVsZW1lbnQ6Vixpbml0aWFsUmVjdDp7d2lkdGg6MCxoZWlnaHQ6MH0sc2Nyb2xsTWFyZ2luOjAsZ2FwOjAsaW5kZXhBdHRyaWJ1dGU6ImRhdGEtaW5kZXgiLGluaXRpYWxNZWFzdXJlbWVudHNDYWNoZTpbXSxsYW5lczoxLGlzU2Nyb2xsaW5nUmVzZXREZWxheToxNTAsZW5hYmxlZDohMCxpc1J0bDohMSx1c2VTY3JvbGxlbmRFdmVudDohMSx1c2VBbmltYXRpb25GcmFtZVdpdGhSZXNpemVPYnNlcnZlcjohMSxsYW5lQXNzaWdubWVudE1vZGU6ImVzdGltYXRlIiwuLi5lfX0sdGhpcy5ub3RpZnk9ZT0+e3ZhciBzLHQ7KHQ9KHM9dGhpcy5vcHRpb25zKS5vbkNoYW5nZSk9PW51bGx8fHQuY2FsbChzLHRoaXMsZSl9LHRoaXMubWF5YmVOb3RpZnk9UygoKT0+KHRoaXMuY2FsY3VsYXRlUmFuZ2UoKSxbdGhpcy5pc1Njcm9sbGluZyx0aGlzLnJhbmdlP3RoaXMucmFuZ2Uuc3RhcnRJbmRleDpudWxsLHRoaXMucmFuZ2U/dGhpcy5yYW5nZS5lbmRJbmRleDpudWxsXSksZT0+e3RoaXMubm90aWZ5KGUpfSx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWcsaW5pdGlhbERlcHM6W3RoaXMuaXNTY3JvbGxpbmcsdGhpcy5yYW5nZT90aGlzLnJhbmdlLnN0YXJ0SW5kZXg6bnVsbCx0aGlzLnJhbmdlP3RoaXMucmFuZ2UuZW5kSW5kZXg6bnVsbF19KSx0aGlzLmNsZWFudXA9KCk9Pnt0aGlzLnVuc3Vicy5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaChlPT5lKCkpLHRoaXMudW5zdWJzPVtdLHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMucmFmSWQhPW51bGwmJnRoaXMudGFyZ2V0V2luZG93JiYodGhpcy50YXJnZXRXaW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yYWZJZCksdGhpcy5yYWZJZD1udWxsKSx0aGlzLnNjcm9sbFN0YXRlPW51bGwsdGhpcy5zY3JvbGxFbGVtZW50PW51bGwsdGhpcy50YXJnZXRXaW5kb3c9bnVsbH0sdGhpcy5fZGlkTW91bnQ9KCk9PigpPT57dGhpcy5jbGVhbnVwKCl9LHRoaXMuX3dpbGxVcGRhdGU9KCk9Pnt2YXIgZTtjb25zdCBzPXRoaXMub3B0aW9ucy5lbmFibGVkP3RoaXMub3B0aW9ucy5nZXRTY3JvbGxFbGVtZW50KCk6bnVsbDtpZih0aGlzLnNjcm9sbEVsZW1lbnQhPT1zKXtpZih0aGlzLmNsZWFudXAoKSwhcyl7dGhpcy5tYXliZU5vdGlmeSgpO3JldHVybn10aGlzLnNjcm9sbEVsZW1lbnQ9cyx0aGlzLnNjcm9sbEVsZW1lbnQmJiJvd25lckRvY3VtZW50ImluIHRoaXMuc2Nyb2xsRWxlbWVudD90aGlzLnRhcmdldFdpbmRvdz10aGlzLnNjcm9sbEVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp0aGlzLnRhcmdldFdpbmRvdz0oKGU9dGhpcy5zY3JvbGxFbGVtZW50KT09bnVsbD92b2lkIDA6ZS53aW5kb3cpPz9udWxsLHRoaXMuZWxlbWVudHNDYWNoZS5mb3JFYWNoKHQ9Pnt0aGlzLm9ic2VydmVyLm9ic2VydmUodCl9KSx0aGlzLnVuc3Vicy5wdXNoKHRoaXMub3B0aW9ucy5vYnNlcnZlRWxlbWVudFJlY3QodGhpcyx0PT57dGhpcy5zY3JvbGxSZWN0PXQsdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMudW5zdWJzLnB1c2godGhpcy5vcHRpb25zLm9ic2VydmVFbGVtZW50T2Zmc2V0KHRoaXMsKHQsbik9Pnt0aGlzLnNjcm9sbEFkanVzdG1lbnRzPTAsdGhpcy5zY3JvbGxEaXJlY3Rpb249bj90aGlzLmdldFNjcm9sbE9mZnNldCgpPHQ/ImZvcndhcmQiOiJiYWNrd2FyZCI6bnVsbCx0aGlzLnNjcm9sbE9mZnNldD10LHRoaXMuaXNTY3JvbGxpbmc9bix0aGlzLnNjcm9sbFN0YXRlJiZ0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCksdGhpcy5tYXliZU5vdGlmeSgpfSkpLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCkse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjp2b2lkIDB9KX19LHRoaXMucmFmSWQ9bnVsbCx0aGlzLmdldFNpemU9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbFJlY3Q9dGhpcy5zY3JvbGxSZWN0Pz90aGlzLm9wdGlvbnMuaW5pdGlhbFJlY3QsdGhpcy5zY3JvbGxSZWN0W3RoaXMub3B0aW9ucy5ob3Jpem9udGFsPyJ3aWR0aCI6ImhlaWdodCJdKToodGhpcy5zY3JvbGxSZWN0PW51bGwsMCksdGhpcy5nZXRTY3JvbGxPZmZzZXQ9KCk9PnRoaXMub3B0aW9ucy5lbmFibGVkPyh0aGlzLnNjcm9sbE9mZnNldD10aGlzLnNjcm9sbE9mZnNldD8/KHR5cGVvZiB0aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldD09ImZ1bmN0aW9uIj90aGlzLm9wdGlvbnMuaW5pdGlhbE9mZnNldCgpOnRoaXMub3B0aW9ucy5pbml0aWFsT2Zmc2V0KSx0aGlzLnNjcm9sbE9mZnNldCk6KHRoaXMuc2Nyb2xsT2Zmc2V0PW51bGwsMCksdGhpcy5nZXRGdXJ0aGVzdE1lYXN1cmVtZW50PShlLHMpPT57Y29uc3QgdD1uZXcgTWFwLG49bmV3IE1hcDtmb3IobGV0IGw9cy0xO2w+PTA7bC0tKXtjb25zdCBpPWVbbF07aWYodC5oYXMoaS5sYW5lKSljb250aW51ZTtjb25zdCBhPW4uZ2V0KGkubGFuZSk7aWYoYT09bnVsbHx8aS5lbmQ+YS5lbmQ/bi5zZXQoaS5sYW5lLGkpOmkuZW5kPGEuZW5kJiZ0LnNldChpLmxhbmUsITApLHQuc2l6ZT09PXRoaXMub3B0aW9ucy5sYW5lcylicmVha31yZXR1cm4gbi5zaXplPT09dGhpcy5vcHRpb25zLmxhbmVzP0FycmF5LmZyb20obi52YWx1ZXMoKSkuc29ydCgobCxpKT0+bC5lbmQ9PT1pLmVuZD9sLmluZGV4LWkuaW5kZXg6bC5lbmQtaS5lbmQpWzBdOnZvaWQgMH0sdGhpcy5nZXRNZWFzdXJlbWVudE9wdGlvbnM9UygoKT0+W3RoaXMub3B0aW9ucy5jb3VudCx0aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0LHRoaXMub3B0aW9ucy5zY3JvbGxNYXJnaW4sdGhpcy5vcHRpb25zLmdldEl0ZW1LZXksdGhpcy5vcHRpb25zLmVuYWJsZWQsdGhpcy5vcHRpb25zLmxhbmVzLHRoaXMub3B0aW9ucy5sYW5lQXNzaWdubWVudE1vZGVdLChlLHMsdCxuLGwsaSxhKT0+KHRoaXMucHJldkxhbmVzIT09dm9pZCAwJiZ0aGlzLnByZXZMYW5lcyE9PWkmJih0aGlzLmxhbmVzQ2hhbmdlZEZsYWc9ITApLHRoaXMucHJldkxhbmVzPWksdGhpcy5wZW5kaW5nTWVhc3VyZWRDYWNoZUluZGV4ZXM9W10se2NvdW50OmUscGFkZGluZ1N0YXJ0OnMsc2Nyb2xsTWFyZ2luOnQsZ2V0SXRlbUtleTpuLGVuYWJsZWQ6bCxsYW5lczppLGxhbmVBc3NpZ25tZW50TW9kZTphfSkse2tleTohMX0pLHRoaXMuZ2V0TWVhc3VyZW1lbnRzPVMoKCk9Plt0aGlzLmdldE1lYXN1cmVtZW50T3B0aW9ucygpLHRoaXMuaXRlbVNpemVDYWNoZV0sKHtjb3VudDplLHBhZGRpbmdTdGFydDpzLHNjcm9sbE1hcmdpbjp0LGdldEl0ZW1LZXk6bixlbmFibGVkOmwsbGFuZXM6aSxsYW5lQXNzaWdubWVudE1vZGU6YX0sdSk9PntpZighbClyZXR1cm4gdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLFtdO2lmKHRoaXMubGFuZUFzc2lnbm1lbnRzLnNpemU+ZSlmb3IoY29uc3QgaCBvZiB0aGlzLmxhbmVBc3NpZ25tZW50cy5rZXlzKCkpaD49ZSYmdGhpcy5sYW5lQXNzaWdubWVudHMuZGVsZXRlKGgpO3RoaXMubGFuZXNDaGFuZ2VkRmxhZyYmKHRoaXMubGFuZXNDaGFuZ2VkRmxhZz0hMSx0aGlzLmxhbmVzU2V0dGxpbmc9ITAsdGhpcy5tZWFzdXJlbWVudHNDYWNoZT1bXSx0aGlzLml0ZW1TaXplQ2FjaGUuY2xlYXIoKSx0aGlzLmxhbmVBc3NpZ25tZW50cy5jbGVhcigpLHRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzPVtdKSx0aGlzLm1lYXN1cmVtZW50c0NhY2hlLmxlbmd0aD09PTAmJiF0aGlzLmxhbmVzU2V0dGxpbmcmJih0aGlzLm1lYXN1cmVtZW50c0NhY2hlPXRoaXMub3B0aW9ucy5pbml0aWFsTWVhc3VyZW1lbnRzQ2FjaGUsdGhpcy5tZWFzdXJlbWVudHNDYWNoZS5mb3JFYWNoKGg9Pnt0aGlzLml0ZW1TaXplQ2FjaGUuc2V0KGgua2V5LGguc2l6ZSl9KSk7Y29uc3QgYz10aGlzLmxhbmVzU2V0dGxpbmc/MDp0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcy5sZW5ndGg+MD9NYXRoLm1pbiguLi50aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcyk6MDt0aGlzLnBlbmRpbmdNZWFzdXJlZENhY2hlSW5kZXhlcz1bXSx0aGlzLmxhbmVzU2V0dGxpbmcmJnRoaXMubWVhc3VyZW1lbnRzQ2FjaGUubGVuZ3RoPT09ZSYmKHRoaXMubGFuZXNTZXR0bGluZz0hMSk7Y29uc3QgZD10aGlzLm1lYXN1cmVtZW50c0NhY2hlLnNsaWNlKDAsYyksdj1uZXcgQXJyYXkoaSkuZmlsbCh2b2lkIDApO2ZvcihsZXQgaD0wO2g8YztoKyspe2NvbnN0IGY9ZFtoXTtmJiYodltmLmxhbmVdPWgpfWZvcihsZXQgaD1jO2g8ZTtoKyspe2NvbnN0IGY9bihoKSxiPXRoaXMubGFuZUFzc2lnbm1lbnRzLmdldChoKTtsZXQgZyx4O2NvbnN0IG09YT09PSJlc3RpbWF0ZSJ8fHUuaGFzKGYpO2lmKGIhPT12b2lkIDAmJnRoaXMub3B0aW9ucy5sYW5lcz4xKXtnPWI7Y29uc3QgcD12W2ddLE89cCE9PXZvaWQgMD9kW3BdOnZvaWQgMDt4PU8/Ty5lbmQrdGhpcy5vcHRpb25zLmdhcDpzK3R9ZWxzZXtjb25zdCBwPXRoaXMub3B0aW9ucy5sYW5lcz09PTE/ZFtoLTFdOnRoaXMuZ2V0RnVydGhlc3RNZWFzdXJlbWVudChkLGgpO3g9cD9wLmVuZCt0aGlzLm9wdGlvbnMuZ2FwOnMrdCxnPXA/cC5sYW5lOmgldGhpcy5vcHRpb25zLmxhbmVzLHRoaXMub3B0aW9ucy5sYW5lcz4xJiZtJiZ0aGlzLmxhbmVBc3NpZ25tZW50cy5zZXQoaCxnKX1jb25zdCBFPXUuZ2V0KGYpLHc9dHlwZW9mIEU9PSJudW1iZXIiP0U6dGhpcy5vcHRpb25zLmVzdGltYXRlU2l6ZShoKSxfPXgrdztkW2hdPXtpbmRleDpoLHN0YXJ0Ongsc2l6ZTp3LGVuZDpfLGtleTpmLGxhbmU6Z30sdltnXT1ofXJldHVybiB0aGlzLm1lYXN1cmVtZW50c0NhY2hlPWQsZH0se2tleTohMSxkZWJ1ZzooKT0+dGhpcy5vcHRpb25zLmRlYnVnfSksdGhpcy5jYWxjdWxhdGVSYW5nZT1TKCgpPT5bdGhpcy5nZXRNZWFzdXJlbWVudHMoKSx0aGlzLmdldFNpemUoKSx0aGlzLmdldFNjcm9sbE9mZnNldCgpLHRoaXMub3B0aW9ucy5sYW5lc10sKGUscyx0LG4pPT50aGlzLnJhbmdlPWUubGVuZ3RoPjAmJnM+MD8kKHttZWFzdXJlbWVudHM6ZSxvdXRlclNpemU6cyxzY3JvbGxPZmZzZXQ6dCxsYW5lczpufSk6bnVsbCx7a2V5OiExLGRlYnVnOigpPT50aGlzLm9wdGlvbnMuZGVidWd9KSx0aGlzLmdldFZpcnR1YWxJbmRleGVzPVMoKCk9PntsZXQgZT1udWxsLHM9bnVsbDtjb25zdCB0PXRoaXMuY2FsY3VsYXRlUmFuZ2UoKTtyZXR1cm4gdCYmKGU9dC5zdGFydEluZGV4LHM9dC5lbmRJbmRleCksdGhpcy5tYXliZU5vdGlmeS51cGRhdGVEZXBzKFt0aGlzLmlzU2Nyb2xsaW5nLGUsc10pLFt0aGlzLm9wdGlvbnMucmFuZ2VFeHRyYWN0b3IsdGhpcy5vcHRpb25zLm92ZXJzY2FuLHRoaXMub3B0aW9ucy5jb3VudCxlLHNdfSwoZSxzLHQsbixsKT0+bj09PW51bGx8fGw9PT1udWxsP1tdOmUoe3N0YXJ0SW5kZXg6bixlbmRJbmRleDpsLG92ZXJzY2FuOnMsY291bnQ6dH0pLHtrZXk6ITEsZGVidWc6KCk9PnRoaXMub3B0aW9ucy5kZWJ1Z30pLHRoaXMuaW5kZXhGcm9tRWxlbWVudD1lPT57Y29uc3Qgcz10aGlzLm9wdGlvbnMuaW5kZXhBdHRyaWJ1dGUsdD1lLmdldEF0dHJpYnV0ZShzKTtyZXR1cm4gdD9wYXJzZUludCh0LDEwKTotMX0sdGhpcy5zaG91bGRNZWFzdXJlRHVyaW5nU2Nyb2xsPWU9Pnt2YXIgcztpZighdGhpcy5zY3JvbGxTdGF0ZXx8dGhpcy5zY3JvbGxTdGF0ZS5iZWhhdmlvciE9PSJzbW9vdGgiKXJldHVybiEwO2NvbnN0IHQ9dGhpcy5zY3JvbGxTdGF0ZS5pbmRleD8/KChzPXRoaXMuZ2V0VmlydHVhbEl0ZW1Gb3JPZmZzZXQodGhpcy5zY3JvbGxTdGF0ZS5sYXN0VGFyZ2V0T2Zmc2V0KSk9PW51bGw/dm9pZCAwOnMuaW5kZXgpO2lmKHQhPT12b2lkIDAmJnRoaXMucmFuZ2Upe2NvbnN0IG49TWF0aC5tYXgodGhpcy5vcHRpb25zLm92ZXJzY2FuLE1hdGguY2VpbCgodGhpcy5yYW5nZS5lbmRJbmRleC10aGlzLnJhbmdlLnN0YXJ0SW5kZXgpLzIpKSxsPU1hdGgubWF4KDAsdC1uKSxpPU1hdGgubWluKHRoaXMub3B0aW9ucy5jb3VudC0xLHQrbik7cmV0dXJuIGU+PWwmJmU8PWl9cmV0dXJuITB9LHRoaXMubWVhc3VyZUVsZW1lbnQ9ZT0+e2lmKCFlKXt0aGlzLmVsZW1lbnRzQ2FjaGUuZm9yRWFjaCgobCxpKT0+e2wuaXNDb25uZWN0ZWR8fCh0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZShsKSx0aGlzLmVsZW1lbnRzQ2FjaGUuZGVsZXRlKGkpKX0pO3JldHVybn1jb25zdCBzPXRoaXMuaW5kZXhGcm9tRWxlbWVudChlKSx0PXRoaXMub3B0aW9ucy5nZXRJdGVtS2V5KHMpLG49dGhpcy5lbGVtZW50c0NhY2hlLmdldCh0KTtuIT09ZSYmKG4mJnRoaXMub2JzZXJ2ZXIudW5vYnNlcnZlKG4pLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShlKSx0aGlzLmVsZW1lbnRzQ2FjaGUuc2V0KHQsZSkpLCghdGhpcy5pc1Njcm9sbGluZ3x8dGhpcy5zY3JvbGxTdGF0ZSkmJnRoaXMuc2hvdWxkTWVhc3VyZUR1cmluZ1Njcm9sbChzKSYmdGhpcy5yZXNpemVJdGVtKHMsdGhpcy5vcHRpb25zLm1lYXN1cmVFbGVtZW50KGUsdm9pZCAwLHRoaXMpKX0sdGhpcy5yZXNpemVJdGVtPShlLHMpPT57dmFyIHQ7Y29uc3Qgbj10aGlzLm1lYXN1cmVtZW50c0NhY2hlW2VdO2lmKCFuKXJldHVybjtjb25zdCBsPXRoaXMuaXRlbVNpemVDYWNoZS5nZXQobi5rZXkpPz9uLnNpemUsaT1zLWw7aSE9PTAmJigoKHQ9dGhpcy5zY3JvbGxTdGF0ZSk9PW51bGw/dm9pZCAwOnQuYmVoYXZpb3IpIT09InNtb290aCImJih0aGlzLnNob3VsZEFkanVzdFNjcm9sbFBvc2l0aW9uT25JdGVtU2l6ZUNoYW5nZSE9PXZvaWQgMD90aGlzLnNob3VsZEFkanVzdFNjcm9sbFBvc2l0aW9uT25JdGVtU2l6ZUNoYW5nZShuLGksdGhpcyk6bi5zdGFydDx0aGlzLmdldFNjcm9sbE9mZnNldCgpK3RoaXMuc2Nyb2xsQWRqdXN0bWVudHMpJiZ0aGlzLl9zY3JvbGxUb09mZnNldCh0aGlzLmdldFNjcm9sbE9mZnNldCgpLHthZGp1c3RtZW50czp0aGlzLnNjcm9sbEFkanVzdG1lbnRzKz1pLGJlaGF2aW9yOnZvaWQgMH0pLHRoaXMucGVuZGluZ01lYXN1cmVkQ2FjaGVJbmRleGVzLnB1c2gobi5pbmRleCksdGhpcy5pdGVtU2l6ZUNhY2hlPW5ldyBNYXAodGhpcy5pdGVtU2l6ZUNhY2hlLnNldChuLmtleSxzKSksdGhpcy5ub3RpZnkoITEpKX0sdGhpcy5nZXRWaXJ0dWFsSXRlbXM9UygoKT0+W3RoaXMuZ2V0VmlydHVhbEluZGV4ZXMoKSx0aGlzLmdldE1lYXN1cmVtZW50cygpXSwoZSxzKT0+e2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsbD1lLmxlbmd0aDtuPGw7bisrKXtjb25zdCBpPWVbbl0sYT1zW2ldO3QucHVzaChhKX1yZXR1cm4gdH0se2tleTohMSxkZWJ1ZzooKT0+dGhpcy5vcHRpb25zLmRlYnVnfSksdGhpcy5nZXRWaXJ0dWFsSXRlbUZvck9mZnNldD1lPT57Y29uc3Qgcz10aGlzLmdldE1lYXN1cmVtZW50cygpO2lmKHMubGVuZ3RoIT09MClyZXR1cm4geihzW1IoMCxzLmxlbmd0aC0xLHQ9Pnooc1t0XSkuc3RhcnQsZSldKX0sdGhpcy5nZXRNYXhTY3JvbGxPZmZzZXQ9KCk9PntpZighdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybiAwO2lmKCJzY3JvbGxIZWlnaHQiaW4gdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybiB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbD90aGlzLnNjcm9sbEVsZW1lbnQuc2Nyb2xsV2lkdGgtdGhpcy5zY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoOnRoaXMuc2Nyb2xsRWxlbWVudC5zY3JvbGxIZWlnaHQtdGhpcy5zY3JvbGxFbGVtZW50LmNsaWVudEhlaWdodDt7Y29uc3QgZT10aGlzLnNjcm9sbEVsZW1lbnQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbD9lLnNjcm9sbFdpZHRoLXRoaXMuc2Nyb2xsRWxlbWVudC5pbm5lcldpZHRoOmUuc2Nyb2xsSGVpZ2h0LXRoaXMuc2Nyb2xsRWxlbWVudC5pbm5lckhlaWdodH19LHRoaXMuZ2V0T2Zmc2V0Rm9yQWxpZ25tZW50PShlLHMsdD0wKT0+e2lmKCF0aGlzLnNjcm9sbEVsZW1lbnQpcmV0dXJuIDA7Y29uc3Qgbj10aGlzLmdldFNpemUoKSxsPXRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCk7cz09PSJhdXRvIiYmKHM9ZT49bCtuPyJlbmQiOiJzdGFydCIpLHM9PT0iY2VudGVyIj9lKz0odC1uKS8yOnM9PT0iZW5kIiYmKGUtPW4pO2NvbnN0IGk9dGhpcy5nZXRNYXhTY3JvbGxPZmZzZXQoKTtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4oaSxlKSwwKX0sdGhpcy5nZXRPZmZzZXRGb3JJbmRleD0oZSxzPSJhdXRvIik9PntlPU1hdGgubWF4KDAsTWF0aC5taW4oZSx0aGlzLm9wdGlvbnMuY291bnQtMSkpO2NvbnN0IHQ9dGhpcy5nZXRTaXplKCksbj10aGlzLmdldFNjcm9sbE9mZnNldCgpLGw9dGhpcy5tZWFzdXJlbWVudHNDYWNoZVtlXTtpZighbClyZXR1cm47aWYocz09PSJhdXRvIilpZihsLmVuZD49bit0LXRoaXMub3B0aW9ucy5zY3JvbGxQYWRkaW5nRW5kKXM9ImVuZCI7ZWxzZSBpZihsLnN0YXJ0PD1uK3RoaXMub3B0aW9ucy5zY3JvbGxQYWRkaW5nU3RhcnQpcz0ic3RhcnQiO2Vsc2UgcmV0dXJuW24sc107aWYocz09PSJlbmQiJiZlPT09dGhpcy5vcHRpb25zLmNvdW50LTEpcmV0dXJuW3RoaXMuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCksc107Y29uc3QgaT1zPT09ImVuZCI/bC5lbmQrdGhpcy5vcHRpb25zLnNjcm9sbFBhZGRpbmdFbmQ6bC5zdGFydC10aGlzLm9wdGlvbnMuc2Nyb2xsUGFkZGluZ1N0YXJ0O3JldHVyblt0aGlzLmdldE9mZnNldEZvckFsaWdubWVudChpLHMsbC5zaXplKSxzXX0sdGhpcy5zY3JvbGxUb09mZnNldD0oZSx7YWxpZ246cz0ic3RhcnQiLGJlaGF2aW9yOnQ9ImF1dG8ifT17fSk9Pntjb25zdCBuPXRoaXMuZ2V0T2Zmc2V0Rm9yQWxpZ25tZW50KGUscyksbD10aGlzLm5vdygpO3RoaXMuc2Nyb2xsU3RhdGU9e2luZGV4Om51bGwsYWxpZ246cyxiZWhhdmlvcjp0LHN0YXJ0ZWRBdDpsLGxhc3RUYXJnZXRPZmZzZXQ6bixzdGFibGVGcmFtZXM6MH0sdGhpcy5fc2Nyb2xsVG9PZmZzZXQobix7YWRqdXN0bWVudHM6dm9pZCAwLGJlaGF2aW9yOnR9KSx0aGlzLnNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl9LHRoaXMuc2Nyb2xsVG9JbmRleD0oZSx7YWxpZ246cz0iYXV0byIsYmVoYXZpb3I6dD0iYXV0byJ9PXt9KT0+e2U9TWF0aC5tYXgoMCxNYXRoLm1pbihlLHRoaXMub3B0aW9ucy5jb3VudC0xKSk7Y29uc3Qgbj10aGlzLmdldE9mZnNldEZvckluZGV4KGUscyk7aWYoIW4pcmV0dXJuO2NvbnN0W2wsaV09bixhPXRoaXMubm93KCk7dGhpcy5zY3JvbGxTdGF0ZT17aW5kZXg6ZSxhbGlnbjppLGJlaGF2aW9yOnQsc3RhcnRlZEF0OmEsbGFzdFRhcmdldE9mZnNldDpsLHN0YWJsZUZyYW1lczowfSx0aGlzLl9zY3JvbGxUb09mZnNldChsLHthZGp1c3RtZW50czp2b2lkIDAsYmVoYXZpb3I6dH0pLHRoaXMuc2NoZWR1bGVTY3JvbGxSZWNvbmNpbGUoKX0sdGhpcy5zY3JvbGxCeT0oZSx7YmVoYXZpb3I6cz0iYXV0byJ9PXt9KT0+e2NvbnN0IHQ9dGhpcy5nZXRTY3JvbGxPZmZzZXQoKStlLG49dGhpcy5ub3coKTt0aGlzLnNjcm9sbFN0YXRlPXtpbmRleDpudWxsLGFsaWduOiJzdGFydCIsYmVoYXZpb3I6cyxzdGFydGVkQXQ6bixsYXN0VGFyZ2V0T2Zmc2V0OnQsc3RhYmxlRnJhbWVzOjB9LHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHQse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjpzfSksdGhpcy5zY2hlZHVsZVNjcm9sbFJlY29uY2lsZSgpfSx0aGlzLmdldFRvdGFsU2l6ZT0oKT0+e3ZhciBlO2NvbnN0IHM9dGhpcy5nZXRNZWFzdXJlbWVudHMoKTtsZXQgdDtpZihzLmxlbmd0aD09PTApdD10aGlzLm9wdGlvbnMucGFkZGluZ1N0YXJ0O2Vsc2UgaWYodGhpcy5vcHRpb25zLmxhbmVzPT09MSl0PSgoZT1zW3MubGVuZ3RoLTFdKT09bnVsbD92b2lkIDA6ZS5lbmQpPz8wO2Vsc2V7Y29uc3Qgbj1BcnJheSh0aGlzLm9wdGlvbnMubGFuZXMpLmZpbGwobnVsbCk7bGV0IGw9cy5sZW5ndGgtMTtmb3IoO2w+PTAmJm4uc29tZShpPT5pPT09bnVsbCk7KXtjb25zdCBpPXNbbF07bltpLmxhbmVdPT09bnVsbCYmKG5baS5sYW5lXT1pLmVuZCksbC0tfXQ9TWF0aC5tYXgoLi4ubi5maWx0ZXIoaT0+aSE9PW51bGwpKX1yZXR1cm4gTWF0aC5tYXgodC10aGlzLm9wdGlvbnMuc2Nyb2xsTWFyZ2luK3RoaXMub3B0aW9ucy5wYWRkaW5nRW5kLDApfSx0aGlzLl9zY3JvbGxUb09mZnNldD0oZSx7YWRqdXN0bWVudHM6cyxiZWhhdmlvcjp0fSk9Pnt0aGlzLm9wdGlvbnMuc2Nyb2xsVG9GbihlLHtiZWhhdmlvcjp0LGFkanVzdG1lbnRzOnN9LHRoaXMpfSx0aGlzLm1lYXN1cmU9KCk9Pnt0aGlzLml0ZW1TaXplQ2FjaGU9bmV3IE1hcCx0aGlzLmxhbmVBc3NpZ25tZW50cz1uZXcgTWFwLHRoaXMubm90aWZ5KCExKX0sdGhpcy5zZXRPcHRpb25zKHIpfXNjaGVkdWxlU2Nyb2xsUmVjb25jaWxlKCl7aWYoIXRoaXMudGFyZ2V0V2luZG93KXt0aGlzLnNjcm9sbFN0YXRlPW51bGw7cmV0dXJufXRoaXMucmFmSWQ9PW51bGwmJih0aGlzLnJhZklkPXRoaXMudGFyZ2V0V2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMucmFmSWQ9bnVsbCx0aGlzLnJlY29uY2lsZVNjcm9sbCgpfSkpfXJlY29uY2lsZVNjcm9sbCgpe2lmKCF0aGlzLnNjcm9sbFN0YXRlfHwhdGhpcy5zY3JvbGxFbGVtZW50KXJldHVybjtpZih0aGlzLm5vdygpLXRoaXMuc2Nyb2xsU3RhdGUuc3RhcnRlZEF0PjVlMyl7dGhpcy5zY3JvbGxTdGF0ZT1udWxsO3JldHVybn1jb25zdCBzPXRoaXMuc2Nyb2xsU3RhdGUuaW5kZXghPW51bGw/dGhpcy5nZXRPZmZzZXRGb3JJbmRleCh0aGlzLnNjcm9sbFN0YXRlLmluZGV4LHRoaXMuc2Nyb2xsU3RhdGUuYWxpZ24pOnZvaWQgMCx0PXM/c1swXTp0aGlzLnNjcm9sbFN0YXRlLmxhc3RUYXJnZXRPZmZzZXQsbj0xLGw9dCE9PXRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldDtpZighbCYmRCh0LHRoaXMuZ2V0U2Nyb2xsT2Zmc2V0KCkpKXtpZih0aGlzLnNjcm9sbFN0YXRlLnN0YWJsZUZyYW1lcysrLHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzPj1uKXt0aGlzLnNjcm9sbFN0YXRlPW51bGw7cmV0dXJufX1lbHNlIHRoaXMuc2Nyb2xsU3RhdGUuc3RhYmxlRnJhbWVzPTAsbCYmKHRoaXMuc2Nyb2xsU3RhdGUubGFzdFRhcmdldE9mZnNldD10LHRoaXMuc2Nyb2xsU3RhdGUuYmVoYXZpb3I9ImF1dG8iLHRoaXMuX3Njcm9sbFRvT2Zmc2V0KHQse2FkanVzdG1lbnRzOnZvaWQgMCxiZWhhdmlvcjoiYXV0byJ9KSk7dGhpcy5zY2hlZHVsZVNjcm9sbFJlY29uY2lsZSgpfX1jb25zdCBSPShvLHIsZSxzKT0+e2Zvcig7bzw9cjspe2NvbnN0IHQ9KG8rcikvMnwwLG49ZSh0KTtpZihuPHMpbz10KzE7ZWxzZSBpZihuPnMpcj10LTE7ZWxzZSByZXR1cm4gdH1yZXR1cm4gbz4wP28tMTowfTtmdW5jdGlvbiAkKHttZWFzdXJlbWVudHM6byxvdXRlclNpemU6cixzY3JvbGxPZmZzZXQ6ZSxsYW5lczpzfSl7Y29uc3QgdD1vLmxlbmd0aC0xLG49YT0+b1thXS5zdGFydDtpZihvLmxlbmd0aDw9cylyZXR1cm57c3RhcnRJbmRleDowLGVuZEluZGV4OnR9O2xldCBsPVIoMCx0LG4sZSksaT1sO2lmKHM9PT0xKWZvcig7aTx0JiZvW2ldLmVuZDxlK3I7KWkrKztlbHNlIGlmKHM+MSl7Y29uc3QgYT1BcnJheShzKS5maWxsKDApO2Zvcig7aTx0JiZhLnNvbWUoYz0+YzxlK3IpOyl7Y29uc3QgYz1vW2ldO2FbYy5sYW5lXT1jLmVuZCxpKyt9Y29uc3QgdT1BcnJheShzKS5maWxsKGUrcik7Zm9yKDtsPj0wJiZ1LnNvbWUoYz0+Yz49ZSk7KXtjb25zdCBjPW9bbF07dVtjLmxhbmVdPWMuc3RhcnQsbC0tfWw9TWF0aC5tYXgoMCxsLWwlcyksaT1NYXRoLm1pbih0LGkrKHMtMS1pJXMpKX1yZXR1cm57c3RhcnRJbmRleDpsLGVuZEluZGV4Oml9fWZ1bmN0aW9uIHEobyl7Y29uc3Qgcj1uZXcgVShNKG8pKSxlPVcocikscz1yLl9kaWRNb3VudCgpO3JldHVybiBJKCgpPT5NKG8pLmdldFNjcm9sbEVsZW1lbnQoKSx0PT57dCYmci5fd2lsbFVwZGF0ZSgpfSx7aW1tZWRpYXRlOiEwfSksSSgoKT0+TShvKSx0PT57ci5zZXRPcHRpb25zKHsuLi50LG9uQ2hhbmdlOihuLGwpPT57dmFyIGk7QyhlKSwoaT10Lm9uQ2hhbmdlKT09bnVsbHx8aS5jYWxsKHQsbixsKX19KSxyLl93aWxsVXBkYXRlKCksQyhlKX0se2ltbWVkaWF0ZTohMH0pLFQocyksZX1mdW5jdGlvbiBYKG8pe3JldHVybiBxKGsoKCk9Pih7b2JzZXJ2ZUVsZW1lbnRSZWN0Ok4sb2JzZXJ2ZUVsZW1lbnRPZmZzZXQ6QixzY3JvbGxUb0ZuOkgsLi4uTShvKX0pKSl9ZXhwb3J0e1ggYXMgdX07Cg==", "/_nuxt/CAUAX5Vr.js": "aW1wb3J0e2YgYXMgaixhdSBhcyBMLGE5IGFzIE0sYTggYXMgQSxvIGFzIHIsaCBhcyBvLHcgYXMgcCxMIGFzIHksaSBhcyBlLHYgYXMgaCxhYSBhcyBFLFogYXMgTyxhYiBhcyBELFAgYXMgQyxsIGFzIGcsYWYgYXMgSCxhNyBhcyBKLGFoIGFzIFosSiBhcyBHLEsgYXMgUSxhaSBhcyBXLGFqIGFzIFgsYWsgYXMgWSxhbCBhcyBfLGFuIGFzIGVlLGEgYXMgYWUsTSBhcyBkLGIgYXMgRixrIGFzIHgsYyBhcyBTLEYgYXMgdGUsYW8gYXMgc2UsZCBhcyBSLHQgYXMgJCxOIGFzIFB9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7ViBhcyBsZX1mcm9tIi4vbTIwa2RHeFUuanMiO2NvbnN0W3JlLGllXT1KKCJTd2l0Y2hSb290Iik7dmFyIGRlPWooe19fbmFtZToiU3dpdGNoUm9vdCIscHJvcHM6e2RlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im9uIn0sdHJ1ZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+ITB9LGZhbHNlVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT4hMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHQse2VtaXQ6Y30pe2NvbnN0IGE9dCx1PWMse2Rpc2FibGVkOm59PUwoYSksZj1NKGEsIm1vZGVsVmFsdWUiLHUse2RlZmF1bHRWYWx1ZTphLmRlZmF1bHRWYWx1ZT8/YS5mYWxzZVZhbHVlLHBhc3NpdmU6YS5tb2RlbFZhbHVlPT09dm9pZCAwfSkscz1nKCgpPT5mLnZhbHVlPT09YS50cnVlVmFsdWUpO2Z1bmN0aW9uIGIoKXtuLnZhbHVlfHwoZi52YWx1ZT1zLnZhbHVlP2EuZmFsc2VWYWx1ZTphLnRydWVWYWx1ZSl9Y29uc3R7Zm9yd2FyZFJlZjpxLGN1cnJlbnRFbGVtZW50OnZ9PUEoKSx3PUgodiksVj1nKCgpPT5hLmlkJiZ2LnZhbHVlP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmb3I9IiR7YS5pZH0iXWApPy5pbm5lclRleHQ6dm9pZCAwKTtyZXR1cm4gaWUoe2NoZWNrZWQ6cyx0b2dnbGVDaGVjazpiLGRpc2FibGVkOm59KSwobCx6KT0+KHIoKSxvKGUoQyksRShsLiRhdHRycyx7aWQ6bC5pZCxyZWY6ZShxKSxyb2xlOiJzd2l0Y2giLHR5cGU6bC5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCx2YWx1ZTpsLnZhbHVlLCJhcmlhLWxhYmVsIjpsLiRhdHRyc1siYXJpYS1sYWJlbCJdfHxWLnZhbHVlLCJhcmlhLWNoZWNrZWQiOnMudmFsdWUsImFyaWEtcmVxdWlyZWQiOmwucmVxdWlyZWQsImRhdGEtc3RhdGUiOnMudmFsdWU/ImNoZWNrZWQiOiJ1bmNoZWNrZWQiLCJkYXRhLWRpc2FibGVkIjplKG4pPyIiOnZvaWQgMCwiYXMtY2hpbGQiOmwuYXNDaGlsZCxhczpsLmFzLGRpc2FibGVkOmUobiksb25DbGljazpiLG9uS2V5ZG93bjpPKEQoYixbInByZXZlbnQiXSksWyJlbnRlciJdKX0pLHtkZWZhdWx0OnAoKCk9Plt5KGwuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplKGYpLGNoZWNrZWQ6cy52YWx1ZX0pLGUodykmJmwubmFtZT8ocigpLG8oZShsZSkse2tleTowLHR5cGU6ImNoZWNrYm94IixuYW1lOmwubmFtZSxkaXNhYmxlZDplKG4pLHJlcXVpcmVkOmwucmVxdWlyZWQsdmFsdWU6bC52YWx1ZSxjaGVja2VkOnMudmFsdWV9LG51bGwsOCxbIm5hbWUiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwidmFsdWUiLCJjaGVja2VkIl0pKTpoKCJ2LWlmIiwhMCldKSxfOjN9LDE2LFsiaWQiLCJ0eXBlIiwidmFsdWUiLCJhcmlhLWxhYmVsIiwiYXJpYS1jaGVja2VkIiwiYXJpYS1yZXF1aXJlZCIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiYXMtY2hpbGQiLCJhcyIsImRpc2FibGVkIiwib25LZXlkb3duIl0pKX19KSxuZT1kZSxvZT1qKHtfX25hbWU6IlN3aXRjaFRodW1iIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAodCl7Y29uc3QgYz1yZSgpO3JldHVybiBBKCksKGEsdSk9PihyKCksbyhlKEMpLHsiZGF0YS1zdGF0ZSI6ZShjKS5jaGVja2VkLnZhbHVlPyJjaGVja2VkIjoidW5jaGVja2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShjKS5kaXNhYmxlZC52YWx1ZT8iIjp2b2lkIDAsImFzLWNoaWxkIjphLmFzQ2hpbGQsYXM6YS5hc30se2RlZmF1bHQ6cCgoKT0+W3koYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwiYXMtY2hpbGQiLCJhcyJdKSl9fSksdWU9b2U7Y29uc3QgY2U9e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0IixiYXNlOlsiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNocmluay0wIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06YmctYWNjZW50ZWQiLCJ0cmFuc2l0aW9uLVtiYWNrZ3JvdW5kXSBkdXJhdGlvbi0yMDAiXSxjb250YWluZXI6ImZsZXggaXRlbXMtY2VudGVyIix0aHVtYjoiZ3JvdXAgcG9pbnRlci1ldmVudHMtbm9uZSByb3VuZGVkLWZ1bGwgYmctZGVmYXVsdCBzaGFkb3ctbGcgcmluZy0wIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnRyYW5zbGF0ZS14LTAgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiLGljb246WyJhYnNvbHV0ZSBzaHJpbmstMCBncm91cC1kYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnRleHQtZGltbWVkIG9wYWNpdHktMCBzaXplLTEwLzEyIiwidHJhbnNpdGlvbi1bY29sb3Isb3BhY2l0eV0gZHVyYXRpb24tMjAwIl0sd3JhcHBlcjoibXMtMiIsbGFiZWw6ImJsb2NrIGZvbnQtbWVkaXVtIHRleHQtZGVmYXVsdCIsZGVzY3JpcHRpb246InRleHQtbXV0ZWQifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXByaW1hcnkgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXByaW1hcnkiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtcHJpbWFyeSJ9LHNlY29uZGFyeTp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ymctc2Vjb25kYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS1zZWNvbmRhcnkiLGljb246Imdyb3VwLWRhdGEtW3N0YXRlPWNoZWNrZWRdOnRleHQtc2Vjb25kYXJ5In0sc3VjY2Vzczp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ymctc3VjY2VzcyBmb2N1cy12aXNpYmxlOm91dGxpbmUtc3VjY2VzcyIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1zdWNjZXNzIn0saW5mbzp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06YmctaW5mbyBmb2N1cy12aXNpYmxlOm91dGxpbmUtaW5mbyIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1pbmZvIn0sd2FybmluZzp7YmFzZToiZGF0YS1bc3RhdGU9Y2hlY2tlZF06Ymctd2FybmluZyBmb2N1cy12aXNpYmxlOm91dGxpbmUtd2FybmluZyIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC13YXJuaW5nIn0sZXJyb3I6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLWVycm9yIGZvY3VzLXZpc2libGU6b3V0bGluZS1lcnJvciIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1lcnJvciJ9LG5ldXRyYWw6e2Jhc2U6ImRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLWludmVydGVkIGZvY3VzLXZpc2libGU6b3V0bGluZS1pbnZlcnRlZCIsaWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1oaWdobGlnaHRlZCJ9fSxzaXplOnt4czp7YmFzZToidy03Iixjb250YWluZXI6ImgtNCIsdGh1bWI6InNpemUtMyBkYXRhLVtzdGF0ZT1jaGVja2VkXTp0cmFuc2xhdGUteC0zIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnJ0bDotdHJhbnNsYXRlLXgtMyIsd3JhcHBlcjoidGV4dC14cyJ9LHNtOntiYXNlOiJ3LTgiLGNvbnRhaW5lcjoiaC00Iix0aHVtYjoic2l6ZS0zLjUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtMy41IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnJ0bDotdHJhbnNsYXRlLXgtMy41Iix3cmFwcGVyOiJ0ZXh0LXhzIn0sbWQ6e2Jhc2U6InctOSIsY29udGFpbmVyOiJoLTUiLHRodW1iOiJzaXplLTQgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTQiLHdyYXBwZXI6InRleHQtc20ifSxsZzp7YmFzZToidy0xMCIsY29udGFpbmVyOiJoLTUiLHRodW1iOiJzaXplLTQuNSBkYXRhLVtzdGF0ZT1jaGVja2VkXTp0cmFuc2xhdGUteC00LjUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cnRsOi10cmFuc2xhdGUteC00LjUiLHdyYXBwZXI6InRleHQtc20ifSx4bDp7YmFzZToidy0xMSIsY29udGFpbmVyOiJoLTYiLHRodW1iOiJzaXplLTUgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dHJhbnNsYXRlLXgtNSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpydGw6LXRyYW5zbGF0ZS14LTUiLHdyYXBwZXI6InRleHQtYmFzZSJ9fSxjaGVja2VkOnt0cnVlOntpY29uOiJncm91cC1kYXRhLVtzdGF0ZT1jaGVja2VkXTpvcGFjaXR5LTEwMCJ9fSx1bmNoZWNrZWQ6e3RydWU6e2ljb246Imdyb3VwLWRhdGEtW3N0YXRlPXVuY2hlY2tlZF06b3BhY2l0eS0xMDAifX0sbG9hZGluZzp7dHJ1ZTp7aWNvbjoiYW5pbWF0ZS1zcGluIn19LHJlcXVpcmVkOnt0cnVlOntsYWJlbDoiYWZ0ZXI6Y29udGVudC1bJyonXSBhZnRlcjptcy0wLjUgYWZ0ZXI6dGV4dC1lcnJvciJ9fSxkaXNhYmxlZDp7dHJ1ZTp7cm9vdDoib3BhY2l0eS03NSIsYmFzZToiY3Vyc29yLW5vdC1hbGxvd2VkIixsYWJlbDoiY3Vyc29yLW5vdC1hbGxvd2VkIixkZXNjcmlwdGlvbjoiY3Vyc29yLW5vdC1hbGxvd2VkIn19fSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5IixzaXplOiJtZCJ9fSxwZT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVTd2l0Y2giLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hlY2tlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdW5jaGVja2VkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRydWVWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxmYWxzZVZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImNoYW5nZSIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAodCx7ZW1pdDpjfSl7Y29uc3QgYT10LHU9WigpLG49YyxmPUcoKSxzPVEoInN3aXRjaCIsYSksYj1XKFgoYSwicmVxdWlyZWQiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIm1vZGVsVmFsdWUiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiksbikse2lkOnEsZW1pdEZvcm1DaGFuZ2U6dixlbWl0Rm9ybUlucHV0Oncsc2l6ZTpWLGNvbG9yOmwsbmFtZTp6LGRpc2FibGVkOkksYXJpYUF0dHJzOk59PVkoYSksQj1xLnZhbHVlPz9fKCksVD1lZSgpLEs9ZygoKT0+e2NvbnN0eyJkYXRhLXN0YXRlIjptLC4uLmt9PVQ7cmV0dXJuIGt9KSxpPWcoKCk9PlAoe2V4dGVuZDpQKGNlKSwuLi5mLnVpPy5zd2l0Y2h8fHt9fSkoe3NpemU6Vi52YWx1ZSxjb2xvcjpsLnZhbHVlLHJlcXVpcmVkOmEucmVxdWlyZWQsbG9hZGluZzphLmxvYWRpbmcsZGlzYWJsZWQ6SS52YWx1ZXx8YS5sb2FkaW5nfSkpO2Z1bmN0aW9uIFUobSl7Y29uc3Qgaz1uZXcgRXZlbnQoImNoYW5nZSIse3RhcmdldDp7dmFsdWU6bX19KTtuKCJjaGFuZ2UiLGspLHYoKSx3KCl9cmV0dXJuKG0sayk9PihyKCksbyhlKEMpLHthczp0LmFzLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpkKGkudmFsdWUucm9vdCh7Y2xhc3M6W2Uocyk/LnJvb3QsYS5jbGFzc119KSl9LHtkZWZhdWx0OnAoKCk9PlthZSgiZGl2Iix7ImRhdGEtc2xvdCI6ImNvbnRhaW5lciIsY2xhc3M6ZChpLnZhbHVlLmNvbnRhaW5lcih7Y2xhc3M6ZShzKT8uY29udGFpbmVyfSkpfSxbRihlKG5lKSxFKHtpZDplKEIpfSx7Li4uZShiKSwuLi5LLnZhbHVlLC4uLmUoTil9LHtuYW1lOmUoeiksZGlzYWJsZWQ6ZShJKXx8dC5sb2FkaW5nLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczppLnZhbHVlLmJhc2Uoe2NsYXNzOmUocyk/LmJhc2V9KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6VX0pLHtkZWZhdWx0OnAoKCk9PltGKGUodWUpLHsiZGF0YS1zbG90IjoidGh1bWIiLGNsYXNzOmQoaS52YWx1ZS50aHVtYih7Y2xhc3M6ZShzKT8udGh1bWJ9KSl9LHtkZWZhdWx0OnAoKCk9Plt0LmxvYWRpbmc/KHIoKSxvKHgse2tleTowLG5hbWU6dC5sb2FkaW5nSWNvbnx8ZShmKS51aS5pY29ucy5sb2FkaW5nLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpkKGkudmFsdWUuaWNvbih7Y2xhc3M6ZShzKT8uaWNvbixjaGVja2VkOiEwLHVuY2hlY2tlZDohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKToocigpLFModGUse2tleToxfSxbdC5jaGVja2VkSWNvbj8ocigpLG8oeCx7a2V5OjAsbmFtZTp0LmNoZWNrZWRJY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczpkKGkudmFsdWUuaWNvbih7Y2xhc3M6ZShzKT8uaWNvbixjaGVja2VkOiEwfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmgoIiIsITApLHQudW5jaGVja2VkSWNvbj8ocigpLG8oeCx7a2V5OjEsbmFtZTp0LnVuY2hlY2tlZEljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOmQoaS52YWx1ZS5pY29uKHtjbGFzczplKHMpPy5pY29uLHVuY2hlY2tlZDohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpoKCIiLCEwKV0sNjQpKV0pLF86MX0sOCxbImNsYXNzIl0pXSksXzoxfSwxNixbImlkIiwibmFtZSIsImRpc2FibGVkIiwiY2xhc3MiXSldLDIpLHQubGFiZWx8fHUubGFiZWx8fHQuZGVzY3JpcHRpb258fHUuZGVzY3JpcHRpb24/KHIoKSxTKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6ZChpLnZhbHVlLndyYXBwZXIoe2NsYXNzOmUocyk/LndyYXBwZXJ9KSl9LFt0LmxhYmVsfHx1LmxhYmVsPyhyKCksbyhlKHNlKSx7a2V5OjAsZm9yOmUoQiksImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpkKGkudmFsdWUubGFiZWwoe2NsYXNzOmUocyk/LmxhYmVsfSkpfSx7ZGVmYXVsdDpwKCgpPT5beShtLiRzbG90cywibGFiZWwiLHtsYWJlbDp0LmxhYmVsfSwoKT0+W1IoJCh0LmxhYmVsKSwxKV0pXSksXzozfSw4LFsiZm9yIiwiY2xhc3MiXSkpOmgoIiIsITApLHQuZGVzY3JpcHRpb258fHUuZGVzY3JpcHRpb24/KHIoKSxTKCJwIix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpkKGkudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUocyk/LmRlc2NyaXB0aW9ufSkpfSxbeShtLiRzbG90cywiZGVzY3JpcHRpb24iLHtkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufSwoKT0+W1IoJCh0LmRlc2NyaXB0aW9uKSwxKV0pXSwyKSk6aCgiIiwhMCldLDIpKTpoKCIiLCEwKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX0pO2V4cG9ydHtwZSBhcyBffTsK", "/_nuxt/CFBtcB7o.js": "aW1wb3J0e2JFIGFzIFh0LGJGIGFzIE9hLGYgYXMgbWUsbyBhcyB3LGggYXMgRSx3IGFzIEMsTCBhcyBSLGFhIGFzIFksaSBhcyBsLFAgYXMgUXQsYWggYXMgTGUsYUIgYXMgWGUsYUQgYXMgZHQsYVggYXMgX2EsYXggYXMgYXQsSiBhcyBFZSxLIGFzIE9lLGMgYXMgeixiIGFzIEQsaiBhcyBDZSxiRyBhcyBKdCxBIGFzIHh0LGEgYXMgWCxNIGFzIFAsRiBhcyBwZSxxIGFzIGdlLHYgYXMgSyxhdiBhcyBEZSxhdyBhcyBUZSxsIGFzIEYsTiBhcyBkZSxiOCBhcyBRZSxhRiBhcyBNZSxhRyBhcyBQZSxiSCBhcyB6YSxheiBhcyBTdCxhYiBhcyBGYSxhRSBhcyBQYSxiSSBhcyBxYSxyIGFzIF8sYWkgYXMga3QsYXUgYXMgUmEsYkogYXMgTmEsYTcgYXMgS2EsUiBhcyB1ZSxhNiBhcyBadCxiOSBhcyBVYSxhNCBhcyBJdCxhWSBhcyBqYSxhNSBhcyBIYSxhaiBhcyBKZSxicSBhcyBXYSxiSyBhcyBWYSxiTCBhcyBHYSxidiBhcyBZYSxiTSBhcyBYYSxiTiBhcyBRYSxiTyBhcyBsdCxkIGFzIEFlLHQgYXMgY2UsYlAgYXMgb3QsYWMgYXMgZWEsYlEgYXMgSmEsVSBhcyBxZSx4IGFzIFphLGFsIGFzIGVuLFcgYXMgWmUsViBhcyBBdCxiUiBhcyB0bixiUyBhcyB2ZSxiVCBhcyBhbixiVSBhcyBubixhQyBhcyB0YSxiQyBhcyBzbixiViBhcyBsbixidCBhcyBoZSxiVyBhcyBvbixrIGFzIGtlLEkgYXMgcm4sYnUgYXMgdW4sSCBhcyAkdCxaIGFzIGFhLGJYIGFzIGNuLGJZIGFzIGRuLGJaIGFzIGZuLGJfIGFzIHBuLG4gYXMgbnQsZyBhcyBzdCxYIGFzIG5hLEcgYXMgJGUscyBhcyBobixRIGFzIHNhLHkgYXMgbW4sRCBhcyB2bixCIGFzIGduLGFIIGFzIHluLGFWIGFzIGJuLGFXIGFzIHdufWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e3UgYXMgaWEsYSBhcyB4bixfIGFzIFNuLHAgYXMga24sYiBhcyBJbn1mcm9tIi4vQ3RhMTVzRy0uanMiO2ltcG9ydHtfIGFzIGxhLHUgYXMgQW59ZnJvbSIuL0NZYW16TG01LmpzIjtpbXBvcnR7XyBhcyAkbn1mcm9tIi4vQ1hvYzRVRVIuanMiO2ltcG9ydHthIGFzIG9hLF8gYXMgQm59ZnJvbSIuL0RUdlhULW5SLmpzIjtpbXBvcnR7XyBhcyBDbn1mcm9tIi4vQmhXUzE4aTcuanMiO2ltcG9ydHtoIGFzIERuLGQgYXMgVG4sZSBhcyBNbixjIGFzIExuLGEgYXMgRW4sZiBhcyBPbixiIGFzIF9uLEwgYXMgem4sZyBhcyBGbn1mcm9tIi4vREhDd0VMV3AuanMiO2ltcG9ydHtfIGFzIHJhfWZyb20iLi80bEhteUhiSC5qcyI7aW1wb3J0e3UgYXMgdWF9ZnJvbSIuL0JBdW5pLXFkLmpzIjtpbXBvcnQiLi9EdmRoeXBEaS5qcyI7aW1wb3J0Ii4vQnQ4UzBkbWwuanMiO2ltcG9ydCIuL0R4Q1dRc25sLmpzIjtpbXBvcnQiLi9fMmxTZHIxMy5qcyI7aW1wb3J0Ii4vbTIwa2RHeFUuanMiO2ltcG9ydCIuL0M3WXk2dFIzLmpzIjtpbXBvcnQiLi9CN3M1cGpqUi5qcyI7ZnVuY3Rpb24gZnQodCxlKXtjb25zdCBzPVh0KCkuaG9vayh0LGUpO09hKHMpfXZhciBQbj1tZSh7X19uYW1lOiJMaXN0Ym94R3JvdXBMYWJlbCIscHJvcHM6e2Zvcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAodCl7Y29uc3QgZT10LGE9RG4oe2lkOiIifSk7cmV0dXJuKHMsbik9Pih3KCksRShsKFF0KSxZKGUse2lkOmwoYSkuaWR9KSx7ZGVmYXVsdDpDKCgpPT5bUihzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxxbj1Qbjtjb25zdCBSbj17c2xvdHM6e2Jhc2U6IiIsbGFiZWw6IiIsdHJhaWxpbmc6ImhpZGRlbiBsZzpmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMC41IG1zLWF1dG8ifSx2YXJpYW50czp7Y29sbGFwc2VkOnt0cnVlOntsYWJlbDoiaGlkZGVuIix0cmFpbGluZzoibGc6aGlkZGVuIn19fX0sTm49T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVRGFzaGJvYXJkU2VhcmNoQnV0dG9uIixwcm9wczp7aWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGFwc2VkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdG9vbHRpcDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGtiZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+WyJtZXRhIiwiayJdfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZUNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFjdGl2ZVZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYmxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0F1dG86e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25DbGljazp7dHlwZTpbRnVuY3Rpb24sQXJyYXldLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3RBY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZpZXdUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBlPXQsYT1MZSgpLFtzLG5dPVhlKCksaT0oKT0+UWUoYSxbInRyYWlsaW5nIl0pLGM9ZHQoX2EoZSwiaWNvbiIsImxhYmVsIiwidmFyaWFudCIsImNvbGxhcHNlZCIsInRvb2x0aXAiLCJrYmRzIiwiY2xhc3MiLCJ1aSIpKSxkPU1lKCgpPT5QZSh0eXBlb2YgZS50b29sdGlwPT0iYm9vbGVhbiI/e306ZS50b29sdGlwLHtkZWxheUR1cmF0aW9uOjAsY29udGVudDp7c2lkZToicmlnaHQifX0pKSx7dDpyfT1hdCgpLG09RWUoKSxwPU9lKCJkYXNoYm9hcmRTZWFyY2hCdXR0b24iLGUpLHt0b2dnbGVTZWFyY2g6aH09aWEoe3RvZ2dsZVNlYXJjaDooKT0+e319KSxvPUYoKCk9PmRlKHtleHRlbmQ6ZGUoUm4pLC4uLm0udWk/LmRhc2hib2FyZFNlYXJjaEJ1dHRvbnx8e319KSh7Y29sbGFwc2VkOmUuY29sbGFwc2VkfSkpO3JldHVybih1LGcpPT4odygpLHoocGUsbnVsbCxbRChsKHMpLG51bGwse2RlZmF1bHQ6QygoKT0+W0QoQ2UsWSh7aWNvbjp0Lmljb258fGwobSkudWkuaWNvbnMuc2VhcmNoLGxhYmVsOnQubGFiZWx8fGwocikoImRhc2hib2FyZFNlYXJjaEJ1dHRvbi5sYWJlbCIpLHZhcmlhbnQ6dC52YXJpYW50fHwodC5jb2xsYXBzZWQ/Imdob3N0Ijoib3V0bGluZSIpfSx7Li4ubChjKSwuLi50LmNvbGxhcHNlZD97c3F1YXJlOiEwLCJhcmlhLWxhYmVsIjp0LmxhYmVsfHxsKHIpKCJkYXNoYm9hcmRTZWFyY2hCdXR0b24ubGFiZWwiKX06e30sLi4udS4kYXR0cnN9LHtjbGFzczpvLnZhbHVlLmJhc2Uoe2NsYXNzOltsKHApPy5iYXNlLGUuY2xhc3NdfSksdWk6bChKdCkoby52YWx1ZSxsKHApKSxvbkNsaWNrOmwoaCl9KSx4dCh7dHJhaWxpbmc6Qygoe3VpOnZ9KT0+W1goInNwYW4iLHsiZGF0YS1zbG90IjoidHJhaWxpbmciLGNsYXNzOlAoby52YWx1ZS50cmFpbGluZyh7Y2xhc3M6bChwKT8udHJhaWxpbmd9KSl9LFtSKHUuJHNsb3RzLCJ0cmFpbGluZyIse3VpOnZ9LCgpPT5bdC5rYmRzPy5sZW5ndGg/KHcoITApLHoocGUse2tleTowfSxnZSh0LmtiZHMsKHgsSSk9Pih3KCksRShsYSxZKHtrZXk6SSx2YXJpYW50OiJzdWJ0bGUifSx7cmVmX2ZvcjohMH0sdHlwZW9mIHg9PSJzdHJpbmciP3t2YWx1ZTp4fTp4KSxudWxsLDE2KSkpLDEyOCkpOksoIiIsITApXSldLDIpXSksXzoyfSxbZ2UoaSgpLCh2LHgpPT4oe25hbWU6eCxmbjpDKEk9PltSKHUuJHNsb3RzLHgsRGUoVGUoSSkpKV0pfSkpXSksMTA0MCxbImljb24iLCJsYWJlbCIsInZhcmlhbnQiLCJjbGFzcyIsInVpIiwib25DbGljayJdKV0pLF86M30pLHQuY29sbGFwc2VkJiZ0LnRvb2x0aXA/KHcoKSxFKCRuLFkoe2tleTowLHRleHQ6dC5sYWJlbHx8bChyKSgiZGFzaGJvYXJkU2VhcmNoQnV0dG9uLmxhYmVsIil9LGQudmFsdWUpLHtkZWZhdWx0OkMoKCk9PltEKGwobikpXSksXzoxfSwxNixbInRleHQiXSkpOih3KCksRShsKG4pLHtrZXk6MX0pKV0sNjQpKX19KTsoZnVuY3Rpb24oKXt2YXIgdDt0cnl7aWYodHlwZW9mIGRvY3VtZW50PCJ1Iil7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtlLm5vbmNlPSh0PWRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcigibWV0YVtwcm9wZXJ0eT1jc3Atbm9uY2VdIikpPT1udWxsP3ZvaWQgMDp0LmNvbnRlbnQsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnW2RhdGEtdmF1bC1kcmF3ZXJde3RvdWNoLWFjdGlvbjpub25lO3dpbGwtY2hhbmdlOnRyYW5zZm9ybTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMgY3ViaWMtYmV6aWVyKC4zMiwuNzIsMCwxKTthbmltYXRpb24tZHVyYXRpb246LjVzO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4zMiwuNzIsMCwxKX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPWZhbHNlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1ib3R0b21dW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6c2xpZGVGcm9tQm90dG9tfVtkYXRhLXZhdWwtZHJhd2VyXVtkYXRhLXZhdWwtc25hcC1wb2ludHM9ZmFsc2VdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPWJvdHRvbV1bZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbi1uYW1lOnNsaWRlVG9Cb3R0b219W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249dG9wXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbi1uYW1lOnNsaWRlRnJvbVRvcH1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPWZhbHNlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj10b3BdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb24tbmFtZTpzbGlkZVRvVG9wfVtkYXRhLXZhdWwtZHJhd2VyXVtkYXRhLXZhdWwtc25hcC1wb2ludHM9ZmFsc2VdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPWxlZnRdW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6c2xpZGVGcm9tTGVmdH1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPWZhbHNlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1sZWZ0XVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uLW5hbWU6c2xpZGVUb0xlZnR9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRdW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6c2xpZGVGcm9tUmlnaHR9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb24tbmFtZTpzbGlkZVRvUmlnaHR9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz10cnVlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1ib3R0b21de3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLHZhcigtLWluaXRpYWwtdHJhbnNmb3JtLCAxMDAlKSwwKX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPXRvcF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCl9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1zbmFwLXBvaW50cz10cnVlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1sZWZ0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCwwKX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPXJpZ2h0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QodmFyKC0taW5pdGlhbC10cmFuc2Zvcm0sIDEwMCUpLDAsMCl9W2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1kZWxheWVkLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPXRvcF0sW2RhdGEtdmF1bC1kcmF3ZXJdW2RhdGEtdmF1bC1kZWxheWVkLXNuYXAtcG9pbnRzPXRydWVdW2RhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uPWJvdHRvbV17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsdmFyKC0tc25hcC1wb2ludC1oZWlnaHQsIDApLDApfVtkYXRhLXZhdWwtZHJhd2VyXVtkYXRhLXZhdWwtZGVsYXllZC1zbmFwLXBvaW50cz10cnVlXVtkYXRhLXZhdWwtZHJhd2VyLWRpcmVjdGlvbj1sZWZ0XSxbZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRlbGF5ZWQtc25hcC1wb2ludHM9dHJ1ZV1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRde3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS1zbmFwLXBvaW50LWhlaWdodCwgMCksMCwwKX1bZGF0YS12YXVsLW92ZXJsYXldW2RhdGEtdmF1bC1zbmFwLXBvaW50cz1mYWxzZV17YW5pbWF0aW9uLWR1cmF0aW9uOi41czthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMzIsLjcyLDAsMSl9W2RhdGEtdmF1bC1vdmVybGF5XVtkYXRhLXZhdWwtc25hcC1wb2ludHM9ZmFsc2VdW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uLW5hbWU6ZmFkZUlufVtkYXRhLXZhdWwtb3ZlcmxheV1bZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbi1uYW1lOmZhZGVPdXR9W2RhdGEtdmF1bC1hbmltYXRlPWZhbHNlXXthbmltYXRpb246bm9uZSFpbXBvcnRhbnR9W2RhdGEtdmF1bC1vdmVybGF5XVtkYXRhLXZhdWwtc25hcC1wb2ludHM9dHJ1ZV17b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuNXMgY3ViaWMtYmV6aWVyKC4zMiwuNzIsMCwxKX1bZGF0YS12YXVsLW92ZXJsYXldW2RhdGEtdmF1bC1zbmFwLXBvaW50cz10cnVlXXtvcGFjaXR5OjF9W2RhdGEtdmF1bC1kcmF3ZXJdOm5vdChbZGF0YS12YXVsLWN1c3RvbS1jb250YWluZXI9dHJ1ZV0pOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDppbmhlcml0O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdH1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249dG9wXTphZnRlcnt0b3A6aW5pdGlhbDtib3R0b206MTAwJTtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6MjAwJX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249Ym90dG9tXTphZnRlcnt0b3A6MTAwJTtib3R0b206aW5pdGlhbDtsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6MjAwJX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249bGVmdF06YWZ0ZXJ7bGVmdDppbml0aWFsO3JpZ2h0OjEwMCU7dG9wOjA7Ym90dG9tOjA7d2lkdGg6MjAwJX1bZGF0YS12YXVsLWRyYXdlcl1bZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb249cmlnaHRdOmFmdGVye2xlZnQ6MTAwJTtyaWdodDppbml0aWFsO3RvcDowO2JvdHRvbTowO3dpZHRoOjIwMCV9W2RhdGEtdmF1bC1vdmVybGF5XVtkYXRhLXZhdWwtc25hcC1wb2ludHM9dHJ1ZV06bm90KFtkYXRhLXZhdWwtc25hcC1wb2ludHMtb3ZlcmxheT10cnVlXSk6bm90KFtkYXRhLXN0YXRlPWNsb3NlZF0pe29wYWNpdHk6MH1bZGF0YS12YXVsLW92ZXJsYXldW2RhdGEtdmF1bC1zbmFwLXBvaW50cy1vdmVybGF5PXRydWVde29wYWNpdHk6MX1bZGF0YS12YXVsLWhhbmRsZV17ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvcGFjaXR5Oi43O2JhY2tncm91bmQ6I2UyZTJlNDttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO2hlaWdodDo1cHg7d2lkdGg6MzJweDtib3JkZXItcmFkaXVzOjFyZW07dG91Y2gtYWN0aW9uOnBhbi15fVtkYXRhLXZhdWwtaGFuZGxlXTpob3ZlcixbZGF0YS12YXVsLWhhbmRsZV06YWN0aXZle29wYWNpdHk6MX1bZGF0YS12YXVsLWhhbmRsZS1oaXRhcmVhXXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt3aWR0aDptYXgoMTAwJSwyLjc1cmVtKTtoZWlnaHQ6bWF4KDEwMCUsMi43NXJlbSk7dG91Y2gtYWN0aW9uOmluaGVyaXR9QG1lZGlhIChob3ZlcjogaG92ZXIpIGFuZCAocG9pbnRlcjogZmluZSl7W2RhdGEtdmF1bC1kcmF3ZXJdey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfX1AbWVkaWEgKHBvaW50ZXI6IGZpbmUpe1tkYXRhLXZhdWwtaGFuZGxlLWhpdGFyZWFdOnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfX1Aa2V5ZnJhbWVzIGZhZGVJbnswJXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGVPdXR7dG97b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHNsaWRlRnJvbUJvdHRvbXswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCx2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSksMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fUBrZXlmcmFtZXMgc2xpZGVUb0JvdHRvbXt0b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCx2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSksMCl9fUBrZXlmcmFtZXMgc2xpZGVGcm9tVG9wezAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLGNhbGModmFyKC0taW5pdGlhbC10cmFuc2Zvcm0sIDEwMCUpICogLTEpLDApfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfX1Aa2V5ZnJhbWVzIHNsaWRlVG9Ub3B7dG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCl9fUBrZXlmcmFtZXMgc2xpZGVGcm9tTGVmdHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCwwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX19QGtleWZyYW1lcyBzbGlkZVRvTGVmdHt0b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoY2FsYyh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSkgKiAtMSksMCwwKX19QGtleWZyYW1lcyBzbGlkZUZyb21SaWdodHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QodmFyKC0taW5pdGlhbC10cmFuc2Zvcm0sIDEwMCUpLDAsMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fUBrZXlmcmFtZXMgc2xpZGVUb1JpZ2h0e3Rve3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS1pbml0aWFsLXRyYW5zZm9ybSwgMTAwJSksMCwwKX19JykpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZSl9fWNhdGNoe319KSgpO2NvbnN0IEtuPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiO3R5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJmdsb2JhbFRoaXMgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZTtjb25zdCBVbj10PT50eXBlb2YgdDwidSI7ZnVuY3Rpb24gam4odCl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodCkpfWZ1bmN0aW9uIHF0KHQsZSxhLHM9e30pe3ZhciBuLGksYztjb25zdHtjbG9uZTpkPSExLHBhc3NpdmU6cj0hMSxldmVudE5hbWU6bSxkZWVwOnA9ITEsZGVmYXVsdFZhbHVlOmgsc2hvdWxkRW1pdDpvfT1zLHU9VWEoKSxnPWF8fHU/LmVtaXR8fCgobj11Py4kZW1pdCk9PW51bGw/dm9pZCAwOm4uYmluZCh1KSl8fCgoYz0oaT11Py5wcm94eSk9PW51bGw/dm9pZCAwOmkuJGVtaXQpPT1udWxsP3ZvaWQgMDpjLmJpbmQodT8ucHJveHkpKTtsZXQgdj1tO2V8fChlPSJtb2RlbFZhbHVlIiksdj12fHxgdXBkYXRlOiR7ZS50b1N0cmluZygpfWA7Y29uc3QgeD1iPT5kP3R5cGVvZiBkPT0iZnVuY3Rpb24iP2QoYik6am4oYik6YixJPSgpPT5Vbih0W2VdKT94KHRbZV0pOmgsUz1iPT57bz9vKGIpJiZnKHYsYik6Zyh2LGIpfTtpZihyKXtjb25zdCBiPUkoKSx5PV8oYik7bGV0IGs9ITE7cmV0dXJuIHVlKCgpPT50W2VdLEI9PntrfHwoaz0hMCx5LnZhbHVlPXgoQiksWnQoKCk9Pms9ITEpKX0pLHVlKHksQj0+eyFrJiYoQiE9PXRbZV18fHApJiZTKEIpfSx7ZGVlcDpwfSkseX1lbHNlIHJldHVybiBGKHtnZXQoKXtyZXR1cm4gSSgpfSxzZXQoYil7UyhiKX19KX1jb25zdFtOZSxIbl09S2EoIkRyYXdlclJvb3QiKSxjYT1uZXcgV2Vha01hcDtmdW5jdGlvbiBhZSh0LGUsYT0hMSl7aWYoIXR8fCEodCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXx8IWUpcmV0dXJuO2NvbnN0IHM9e307T2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoW24saV0pPT57aWYobi5zdGFydHNXaXRoKCItLSIpKXt0LnN0eWxlLnNldFByb3BlcnR5KG4saSk7cmV0dXJufXNbbl09dC5zdHlsZVtuXSx0LnN0eWxlW25dPWl9KSwhYSYmY2Euc2V0KHQscyl9ZnVuY3Rpb24gV24odCxlKXtpZighdHx8ISh0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXJldHVybjtjb25zdCBhPWNhLmdldCh0KTthJiZPYmplY3QuZW50cmllcyhhKS5mb3JFYWNoKChbcyxuXSk9Pnt0LnN0eWxlW3NdPW59KX1mdW5jdGlvbiBXZSh0LGUpe2NvbnN0IGE9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkscz1hLnRyYW5zZm9ybXx8YS53ZWJraXRUcmFuc2Zvcm18fGEubW96VHJhbnNmb3JtO2xldCBuPXMubWF0Y2goL15tYXRyaXgzZFwoKC4rKVwpJC8pO3JldHVybiBuP051bWJlci5wYXJzZUZsb2F0KG5bMV0uc3BsaXQoIiwgIilbWihlKT8xMzoxMl0pOihuPXMubWF0Y2goL15tYXRyaXhcKCguKylcKSQvKSxuP051bWJlci5wYXJzZUZsb2F0KG5bMV0uc3BsaXQoIiwgIilbWihlKT81OjRdKTpudWxsKX1mdW5jdGlvbiBWbih0KXtyZXR1cm4gOCooTWF0aC5sb2codCsxKS0yKX1mdW5jdGlvbiBaKHQpe3N3aXRjaCh0KXtjYXNlInRvcCI6Y2FzZSJib3R0b20iOnJldHVybiEwO2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gcnQodCxlKXtpZighdClyZXR1cm4oKT0+e307Y29uc3QgYT10LnN0eWxlLmNzc1RleHQ7cmV0dXJuIE9iamVjdC5hc3NpZ24odC5zdHlsZSxlKSwoKT0+e3Quc3R5bGUuY3NzVGV4dD1hfX1mdW5jdGlvbiBHbiguLi50KXtyZXR1cm4oLi4uZSk9Pntmb3IoY29uc3QgYSBvZiB0KXR5cGVvZiBhPT0iZnVuY3Rpb24iJiZhKC4uLmUpfX1jb25zdCBHPXtEVVJBVElPTjouNSxFQVNFOlsuMzIsLjcyLDAsMV19LGRhPS40LFluPS4yNSxYbj0xMDAsZmE9OCxWZT0xNixwYT0yNixSdD0idmF1bC1kcmFnZ2luZyI7ZnVuY3Rpb24gUW4oe2FjdGl2ZVNuYXBQb2ludDp0LHNuYXBQb2ludHM6ZSxkcmF3ZXJSZWY6YSxvdmVybGF5UmVmOnMsZmFkZUZyb21JbmRleDpuLG9uU25hcFBvaW50Q2hhbmdlOmksZGlyZWN0aW9uOmN9KXtjb25zdCBkPV8odHlwZW9mIHdpbmRvdzwidSI/e2lubmVyV2lkdGg6d2luZG93LmlubmVyV2lkdGgsaW5uZXJIZWlnaHQ6d2luZG93LmlubmVySGVpZ2h0fTp2b2lkIDApO2Z1bmN0aW9uIHIoKXtkLnZhbHVlPXtpbm5lcldpZHRoOndpbmRvdy5pbm5lcldpZHRoLGlubmVySGVpZ2h0OndpbmRvdy5pbm5lckhlaWdodH19SXQoKCk9Pnt0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIscil9KSxqYSgoKT0+e3R5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixyKX0pO2NvbnN0IG09RigoKT0+KGUudmFsdWUmJnQudmFsdWU9PT1lLnZhbHVlW2UudmFsdWUubGVuZ3RoLTFdKT8/bnVsbCkscD1GKCgpPT5lLnZhbHVlJiZlLnZhbHVlLmxlbmd0aD4wJiYobj8udmFsdWV8fG4/LnZhbHVlPT09MCkmJiFOdW1iZXIuaXNOYU4obj8udmFsdWUpJiZlLnZhbHVlW24/LnZhbHVlPz8tMV09PT10LnZhbHVlfHwhZS52YWx1ZSksaD1GKCgpPT57dmFyIFM7cmV0dXJuKChTPWUudmFsdWUpPT1udWxsP3ZvaWQgMDpTLmZpbmRJbmRleChiPT5iPT09dC52YWx1ZSkpPz9udWxsfSksbz1GKCgpPT57dmFyIFM7cmV0dXJuKChTPWUudmFsdWUpPT1udWxsP3ZvaWQgMDpTLm1hcChiPT57Y29uc3QgeT10eXBlb2YgYj09InN0cmluZyI7bGV0IGs9MDtpZih5JiYoaz1OdW1iZXIucGFyc2VJbnQoYiwxMCkpLFooYy52YWx1ZSkpe2NvbnN0ICQ9eT9rOmQudmFsdWU/YipkLnZhbHVlLmlubmVySGVpZ2h0OjA7cmV0dXJuIGQudmFsdWU/Yy52YWx1ZT09PSJib3R0b20iP2QudmFsdWUuaW5uZXJIZWlnaHQtJDotZC52YWx1ZS5pbm5lckhlaWdodCskOiR9Y29uc3QgQj15P2s6ZC52YWx1ZT9iKmQudmFsdWUuaW5uZXJXaWR0aDowO3JldHVybiBkLnZhbHVlP2MudmFsdWU9PT0icmlnaHQiP2QudmFsdWUuaW5uZXJXaWR0aC1COi1kLnZhbHVlLmlubmVyV2lkdGgrQjpCfSkpPz9bXX0pLHU9RigoKT0+e3ZhciBTO3JldHVybiBoLnZhbHVlIT09bnVsbD8oUz1vLnZhbHVlKT09bnVsbD92b2lkIDA6U1toLnZhbHVlXTpudWxsfSksZz1TPT57dmFyIGIseSxrLEI7Y29uc3QgJD0oKGI9by52YWx1ZSk9PW51bGw/dm9pZCAwOmIuZmluZEluZGV4KHE9PnE9PT1TKSk/P251bGw7WnQoKCk9Pnt2YXIgcTtpKCQsby52YWx1ZSksYWUoKHE9YS52YWx1ZSk9PW51bGw/dm9pZCAwOnEuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06WihjLnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHtTfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7U31weCwgMCwgMClgfSl9KSxvLnZhbHVlJiYkIT09by52YWx1ZS5sZW5ndGgtMSYmJCE9PW4/LnZhbHVlP2FlKCh5PXMudmFsdWUpPT1udWxsP3ZvaWQgMDp5LiRlbCx7dHJhbnNpdGlvbjpgb3BhY2l0eSAke0cuRFVSQVRJT059cyBjdWJpYy1iZXppZXIoJHtHLkVBU0Uuam9pbigiLCIpfSlgLG9wYWNpdHk6IjAifSk6YWUoKGs9cy52YWx1ZSk9PW51bGw/dm9pZCAwOmsuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7Ry5EVVJBVElPTn1zIGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWAsb3BhY2l0eToiMSJ9KSx0LnZhbHVlPSQhPT1udWxsPygoQj1lLnZhbHVlKT09bnVsbD92b2lkIDA6QlskXSk/P251bGw6bnVsbH07dWUoW3QsbyxlXSwoKT0+e3ZhciBTO2lmKHQudmFsdWUpe2NvbnN0IGI9KChTPWUudmFsdWUpPT1udWxsP3ZvaWQgMDpTLmZpbmRJbmRleCh5PT55PT09dC52YWx1ZSkpPz8tMTtvLnZhbHVlJiZiIT09LTEmJnR5cGVvZiBvLnZhbHVlW2JdPT0ibnVtYmVyIiYmZyhvLnZhbHVlW2JdKX19LHtpbW1lZGlhdGU6ITB9KTtmdW5jdGlvbiB2KHtkcmFnZ2VkRGlzdGFuY2U6UyxjbG9zZURyYXdlcjpiLHZlbG9jaXR5OnksZGlzbWlzc2libGU6a30pe3ZhciBCLCQscTtpZihuLnZhbHVlPT09dm9pZCAwKXJldHVybjtjb25zdCBqPWMudmFsdWU9PT0iYm90dG9tInx8Yy52YWx1ZT09PSJyaWdodCI/KHUudmFsdWU/PzApLVM6KHUudmFsdWU/PzApK1MsSD1oLnZhbHVlPT09bi52YWx1ZS0xLE09aC52YWx1ZT09PTAsVT1TPjA7aWYoSCYmYWUoKEI9cy52YWx1ZSk9PW51bGw/dm9pZCAwOkIuJGVsLHt0cmFuc2l0aW9uOmBvcGFjaXR5ICR7Ry5EVVJBVElPTn1zIGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWB9KSx5PjImJiFVKXtrP2IoKTpnKG8udmFsdWVbMF0pO3JldHVybn1pZih5PjImJlUmJm8mJmUudmFsdWUpe2coby52YWx1ZVtlLnZhbHVlLmxlbmd0aC0xXSk7cmV0dXJufWNvbnN0IGVlPSgkPW8udmFsdWUpPT1udWxsP3ZvaWQgMDokLnJlZHVjZSgoTixmKT0+dHlwZW9mIE4hPSJudW1iZXIifHx0eXBlb2YgZiE9Im51bWJlciI/TjpNYXRoLmFicyhmLWopPE1hdGguYWJzKE4taik/ZjpOKSxPPVooYy52YWx1ZSk/d2luZG93LmlubmVySGVpZ2h0OndpbmRvdy5pbm5lcldpZHRoO2lmKHk+ZGEmJk1hdGguYWJzKFMpPE8qLjQpe2NvbnN0IE49VT8xOi0xO2lmKE4+MCYmbSl7ZyhvLnZhbHVlWygoKHE9ZS52YWx1ZSk9PW51bGw/dm9pZCAwOnEubGVuZ3RoKT8/MCktMV0pO3JldHVybn1pZihNJiZOPDAmJmsmJmIoKSxoLnZhbHVlPT09bnVsbClyZXR1cm47ZyhvLnZhbHVlW2gudmFsdWUrTl0pO3JldHVybn1nKGVlKX1mdW5jdGlvbiB4KHtkcmFnZ2VkRGlzdGFuY2U6U30pe3ZhciBiO2lmKHUudmFsdWU9PT1udWxsKXJldHVybjtjb25zdCB5PWMudmFsdWU9PT0iYm90dG9tInx8Yy52YWx1ZT09PSJyaWdodCI/dS52YWx1ZS1TOnUudmFsdWUrUzsoYy52YWx1ZT09PSJib3R0b20ifHxjLnZhbHVlPT09InJpZ2h0IikmJnk8by52YWx1ZVtvLnZhbHVlLmxlbmd0aC0xXXx8KGMudmFsdWU9PT0idG9wInx8Yy52YWx1ZT09PSJsZWZ0IikmJnk+by52YWx1ZVtvLnZhbHVlLmxlbmd0aC0xXXx8YWUoKGI9YS52YWx1ZSk9PW51bGw/dm9pZCAwOmIuJGVsLHt0cmFuc2Zvcm06WihjLnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHt5fXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7eX1weCwgMCwgMClgfSl9ZnVuY3Rpb24gSShTLGIpe2lmKCFlLnZhbHVlfHx0eXBlb2YgaC52YWx1ZSE9Im51bWJlciJ8fCFvLnZhbHVlfHxuLnZhbHVlPT09dm9pZCAwKXJldHVybiBudWxsO2NvbnN0IHk9aC52YWx1ZT09PW4udmFsdWUtMTtpZihoLnZhbHVlPj1uLnZhbHVlJiZiKXJldHVybiAwO2lmKHkmJiFiKXJldHVybiAxO2lmKCFwLnZhbHVlJiYheSlyZXR1cm4gbnVsbDtjb25zdCBrPXk/aC52YWx1ZSsxOmgudmFsdWUtMSxCPXk/by52YWx1ZVtrXS1vLnZhbHVlW2stMV06by52YWx1ZVtrKzFdLW8udmFsdWVba10sJD1TL01hdGguYWJzKEIpO3JldHVybiB5PzEtJDokfXJldHVybntpc0xhc3RTbmFwUG9pbnQ6bSxzaG91bGRGYWRlOnAsZ2V0UGVyY2VudGFnZURyYWdnZWQ6SSxhY3RpdmVTbmFwUG9pbnRJbmRleDpoLG9uUmVsZWFzZTp2LG9uRHJhZzp4LHNuYXBQb2ludHNPZmZzZXQ6b319ZnVuY3Rpb24gTnQoKXtyZXR1cm4vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfWxldCBGZT1udWxsO2Z1bmN0aW9uIEpuKHQpe2NvbnN0e2lzT3BlbjplLG1vZGFsOmEsbmVzdGVkOnMsaGFzQmVlbk9wZW5lZDpuLHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjppLG5vQm9keVN0eWxlczpjfT10LGQ9Xyh0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cubG9jYXRpb24uaHJlZjoiIikscj1fKDApO2Z1bmN0aW9uIG0oKXtpZihOdCgpJiZGZT09PW51bGwmJmUudmFsdWUmJiFjLnZhbHVlKXtGZT17cG9zaXRpb246ZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbix0b3A6ZG9jdW1lbnQuYm9keS5zdHlsZS50b3AsbGVmdDpkb2N1bWVudC5ib2R5LnN0eWxlLmxlZnQsaGVpZ2h0OmRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0fTtjb25zdHtzY3JvbGxYOmgsaW5uZXJIZWlnaHQ6b309d2luZG93O2RvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInBvc2l0aW9uIiwiZml4ZWQiLCJpbXBvcnRhbnQiKSxPYmplY3QuYXNzaWduKGRvY3VtZW50LmJvZHkuc3R5bGUse3RvcDpgJHstci52YWx1ZX1weGAsbGVmdDpgJHstaH1weGAscmlnaHQ6IjBweCIsaGVpZ2h0OiJhdXRvIn0pLHNldFRpbWVvdXQoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pntjb25zdCB1PW8td2luZG93LmlubmVySGVpZ2h0O3UmJnIudmFsdWU+PW8mJihkb2N1bWVudC5ib2R5LnN0eWxlLnRvcD1gLSR7ci52YWx1ZSt1fXB4YCl9KX0sMzAwKX19ZnVuY3Rpb24gcCgpe2lmKE50KCkmJkZlIT09bnVsbCYmIWMudmFsdWUpe2NvbnN0IGg9LU51bWJlci5wYXJzZUludChkb2N1bWVudC5ib2R5LnN0eWxlLnRvcCwxMCksbz0tTnVtYmVyLnBhcnNlSW50KGRvY3VtZW50LmJvZHkuc3R5bGUubGVmdCwxMCk7T2JqZWN0LmFzc2lnbihkb2N1bWVudC5ib2R5LnN0eWxlLEZlKSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57aWYoaS52YWx1ZSYmZC52YWx1ZSE9PXdpbmRvdy5sb2NhdGlvbi5ocmVmKXtkLnZhbHVlPXdpbmRvdy5sb2NhdGlvbi5ocmVmO3JldHVybn13aW5kb3cuc2Nyb2xsVG8obyxoKX0pLEZlPW51bGx9fXJldHVybiBJdCgoKT0+e2Z1bmN0aW9uIGgoKXtyLnZhbHVlPXdpbmRvdy5zY3JvbGxZfWgoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixoKSxIYSgoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGgpfSl9KSx1ZShbZSxuLGRdLCgpPT57cy52YWx1ZXx8IW4udmFsdWV8fChlLnZhbHVlPyh3aW5kb3cubWF0Y2hNZWRpYSgiKGRpc3BsYXktbW9kZTogc3RhbmRhbG9uZSkiKS5tYXRjaGVzfHxtKCksYS52YWx1ZXx8c2V0VGltZW91dCgoKT0+e3AoKX0sNTAwKSk6cCgpKX0pLHtyZXN0b3JlUG9zaXRpb25TZXR0aW5nOnB9fWZ1bmN0aW9uIFpuKHQsZSl7cmV0dXJuIHQmJnQudmFsdWU/dDplfWZ1bmN0aW9uIGVzKHQpe2NvbnN0e2VtaXREcmFnOmUsZW1pdFJlbGVhc2U6YSxlbWl0Q2xvc2U6cyxlbWl0T3BlbkNoYW5nZTpuLG9wZW46aSxkaXNtaXNzaWJsZTpjLG5lc3RlZDpkLG1vZGFsOnIsc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOm0sc2V0QmFja2dyb3VuZENvbG9yT25TY2FsZTpwLHNjcm9sbExvY2tUaW1lb3V0OmgsY2xvc2VUaHJlc2hvbGQ6byxhY3RpdmVTbmFwUG9pbnQ6dSxmYWRlRnJvbUluZGV4OmcsZGlyZWN0aW9uOnYsbm9Cb2R5U3R5bGVzOngsaGFuZGxlT25seTpJLHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjpTfT10LGI9XyhpLnZhbHVlPz8hMSkseT1fKCExKSxrPV8oITEpLEI9XyghMSksJD1fKG51bGwpLHE9XyhudWxsKSxqPV8obnVsbCksSD1fKG51bGwpLE09XyhudWxsKSxVPV8oITEpLGVlPV8obnVsbCksTz1fKDApLE49XyghMSksZj1fKG51bGwpLEo9RigoKT0+e3ZhciBMO3JldHVybigoTD1mLnZhbHVlKT09bnVsbD92b2lkIDA6TC4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KXx8MH0pLEE9Wm4odC5zbmFwUG9pbnRzLF8odm9pZCAwKSksVz1GKCgpPT57dmFyIEw7cmV0dXJuIEEmJigoKEw9QS52YWx1ZSk9PW51bGw/dm9pZCAwOkwubGVuZ3RoKT8/MCk+MH0pLG9lPV8obnVsbCkse2FjdGl2ZVNuYXBQb2ludEluZGV4OnNlLG9uUmVsZWFzZTpfZSxzbmFwUG9pbnRzT2Zmc2V0OmthLG9uRHJhZzpJYSxzaG91bGRGYWRlOkx0LGdldFBlcmNlbnRhZ2VEcmFnZ2VkOkFhfT1Rbih7c25hcFBvaW50czpBLGFjdGl2ZVNuYXBQb2ludDp1LGRyYXdlclJlZjpmLGZhZGVGcm9tSW5kZXg6ZyxvdmVybGF5UmVmOiQsb25TbmFwUG9pbnRDaGFuZ2U6JGEsZGlyZWN0aW9uOnZ9KTtmdW5jdGlvbiAkYShMLFEpe0EudmFsdWUmJkw9PT1RLmxlbmd0aC0xJiYocS52YWx1ZT1uZXcgRGF0ZSl9Sm4oe2lzT3BlbjpiLG1vZGFsOnIsbmVzdGVkOmQsaGFzQmVlbk9wZW5lZDp5LG5vQm9keVN0eWxlczp4LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjpTfSk7ZnVuY3Rpb24gS2UoKXtyZXR1cm4od2luZG93LmlubmVyV2lkdGgtcGEpL3dpbmRvdy5pbm5lcldpZHRofWZ1bmN0aW9uIEV0KEwsUSl7dmFyIHRlO2lmKCFMKXJldHVybiExO2xldCBWPUw7Y29uc3QgbmU9KHRlPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSk9PW51bGw/dm9pZCAwOnRlLnRvU3RyaW5nKCksaWU9Zi52YWx1ZT9XZShmLnZhbHVlLiRlbCx2LnZhbHVlKTpudWxsLGZlPW5ldyBEYXRlO2lmKFYuaGFzQXR0cmlidXRlKCJkYXRhLXZhdWwtbm8tZHJhZyIpfHxWLmNsb3Nlc3QoIltkYXRhLXZhdWwtbm8tZHJhZ10iKSlyZXR1cm4hMTtpZih2LnZhbHVlPT09InJpZ2h0Inx8di52YWx1ZT09PSJsZWZ0IilyZXR1cm4hMDtpZihxLnZhbHVlJiZmZS5nZXRUaW1lKCktcS52YWx1ZS5nZXRUaW1lKCk8NTAwKXJldHVybiExO2lmKGllIT09bnVsbCYmKHYudmFsdWU9PT0iYm90dG9tIj9pZT4wOmllPDApKXJldHVybiEwO2lmKG5lJiZuZS5sZW5ndGg+MClyZXR1cm4hMTtpZihNLnZhbHVlJiZmZS5nZXRUaW1lKCktTS52YWx1ZS5nZXRUaW1lKCk8aC52YWx1ZSYmaWU9PT0wfHxRKXJldHVybiBNLnZhbHVlPWZlLCExO2Zvcig7Vjspe2lmKFYuc2Nyb2xsSGVpZ2h0PlYuY2xpZW50SGVpZ2h0KXtpZihWLnNjcm9sbFRvcCE9PTApcmV0dXJuIE0udmFsdWU9bmV3IERhdGUsITE7aWYoVi5nZXRBdHRyaWJ1dGUoInJvbGUiKT09PSJkaWFsb2ciKXJldHVybiEwfVY9Vi5wYXJlbnROb2RlfXJldHVybiEwfWZ1bmN0aW9uIEJhKEwpeyFjLnZhbHVlJiYhQS52YWx1ZXx8Zi52YWx1ZSYmIWYudmFsdWUuJGVsLmNvbnRhaW5zKEwudGFyZ2V0KXx8KGsudmFsdWU9ITAsai52YWx1ZT1uZXcgRGF0ZSxMLnRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShMLnBvaW50ZXJJZCksTy52YWx1ZT1aKHYudmFsdWUpP0wuY2xpZW50WTpMLmNsaWVudFgpfWZ1bmN0aW9uIENhKEwpe3ZhciBRLHRlLFYsbmUsaWUsZmU7aWYoZi52YWx1ZSYmay52YWx1ZSl7Y29uc3QgQmU9di52YWx1ZT09PSJib3R0b20ifHx2LnZhbHVlPT09InJpZ2h0Ij8xOi0xLFVlPShPLnZhbHVlLShaKHYudmFsdWUpP0wuY2xpZW50WTpMLmNsaWVudFgpKSpCZSxqZT1VZT4wLF90PUEudmFsdWUmJiFjLnZhbHVlJiYhamU7aWYoX3QmJnNlLnZhbHVlPT09MClyZXR1cm47Y29uc3QgaXQ9TWF0aC5hYnMoVWUpLHp0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXZhdWwtZHJhd2VyLXdyYXBwZXJdIil8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIlt2YXVsLWRyYXdlci13cmFwcGVyXSIpO2xldCB4ZT1pdC9KLnZhbHVlO2NvbnN0IEZ0PUFhKGl0LGplKTtpZihGdCE9PW51bGwmJih4ZT1GdCksX3QmJnhlPj0xfHwhVS52YWx1ZSYmIUV0KEwudGFyZ2V0LGplKSlyZXR1cm47aWYoKFE9Zj8udmFsdWUpPT1udWxsfHxRLiRlbC5jbGFzc0xpc3QuYWRkKFJ0KSxVLnZhbHVlPSEwLGFlKCh0ZT1mLnZhbHVlKT09bnVsbD92b2lkIDA6dGUuJGVsLHt0cmFuc2l0aW9uOiJub25lIn0pLGFlKChWPSQudmFsdWUpPT1udWxsP3ZvaWQgMDpWLiRlbCx7dHJhbnNpdGlvbjoibm9uZSJ9KSxBLnZhbHVlJiZJYSh7ZHJhZ2dlZERpc3RhbmNlOlVlfSksamUmJiFBLnZhbHVlKXtjb25zdCBTZT1WbihVZSksSGU9TWF0aC5taW4oU2UqLTEsMCkqQmU7YWUoKG5lPWYudmFsdWUpPT1udWxsP3ZvaWQgMDpuZS4kZWwse3RyYW5zZm9ybTpaKHYudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke0hlfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7SGV9cHgsIDAsIDApYH0pO3JldHVybn1jb25zdCBFYT0xLXhlO2lmKChMdC52YWx1ZXx8Zy52YWx1ZSYmc2UudmFsdWU9PT1nLnZhbHVlLTEpJiYoZSh4ZSksYWUoKGllPSQudmFsdWUpPT1udWxsP3ZvaWQgMDppZS4kZWwse29wYWNpdHk6YCR7RWF9YCx0cmFuc2l0aW9uOiJub25lIn0sITApKSx6dCYmJC52YWx1ZSYmbS52YWx1ZSl7Y29uc3QgU2U9TWF0aC5taW4oS2UoKSt4ZSooMS1LZSgpKSwxKSxIZT04LXhlKjgsUHQ9TWF0aC5tYXgoMCwxNC14ZSoxNCk7YWUoenQse2JvcmRlclJhZGl1czpgJHtIZX1weGAsdHJhbnNmb3JtOloodi52YWx1ZSk/YHNjYWxlKCR7U2V9KSB0cmFuc2xhdGUzZCgwLCAke1B0fXB4LCAwKWA6YHNjYWxlKCR7U2V9KSB0cmFuc2xhdGUzZCgke1B0fXB4LCAwLCAwKWAsdHJhbnNpdGlvbjoibm9uZSJ9LCEwKX1pZighQS52YWx1ZSl7Y29uc3QgU2U9aXQqQmU7YWUoKGZlPWYudmFsdWUpPT1udWxsP3ZvaWQgMDpmZS4kZWwse3RyYW5zZm9ybTpaKHYudmFsdWUpP2B0cmFuc2xhdGUzZCgwLCAke1NlfXB4LCAwKWA6YHRyYW5zbGF0ZTNkKCR7U2V9cHgsIDAsIDApYH0pfX19ZnVuY3Rpb24gT3QoKXt2YXIgTDtpZighZi52YWx1ZSlyZXR1cm47Y29uc3QgUT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS12YXVsLWRyYXdlci13cmFwcGVyXSIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbdmF1bC1kcmF3ZXItd3JhcHBlcl0iKSx0ZT1XZShmLnZhbHVlLiRlbCx2LnZhbHVlKTthZShmLnZhbHVlLiRlbCx7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgwLCAwLCAwKSIsdHJhbnNpdGlvbjpgdHJhbnNmb3JtICR7Ry5EVVJBVElPTn1zIGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWB9KSxhZSgoTD0kLnZhbHVlKT09bnVsbD92b2lkIDA6TC4kZWwse3RyYW5zaXRpb246YG9wYWNpdHkgJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCxvcGFjaXR5OiIxIn0pLG0udmFsdWUmJnRlJiZ0ZT4wJiZiLnZhbHVlJiZhZShRLHtib3JkZXJSYWRpdXM6YCR7ZmF9cHhgLG92ZXJmbG93OiJoaWRkZW4iLC4uLloodi52YWx1ZSk/e3RyYW5zZm9ybTpgc2NhbGUoJHtLZSgpfSkgdHJhbnNsYXRlM2QoMCwgY2FsYyhlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgKyAxNHB4KSwgMClgLHRyYW5zZm9ybU9yaWdpbjoidG9wIn06e3RyYW5zZm9ybTpgc2NhbGUoJHtLZSgpfSkgdHJhbnNsYXRlM2QoY2FsYyhlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgKyAxNHB4KSwgMCwgMClgLHRyYW5zZm9ybU9yaWdpbjoibGVmdCJ9LHRyYW5zaXRpb25Qcm9wZXJ0eToidHJhbnNmb3JtLCBib3JkZXItcmFkaXVzIix0cmFuc2l0aW9uRHVyYXRpb246YCR7Ry5EVVJBVElPTn1zYCx0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246YGN1YmljLWJlemllcigke0cuRUFTRS5qb2luKCIsIil9KWB9LCEwKX1mdW5jdGlvbiB6ZShMKXtmLnZhbHVlJiYocygpLEx8fChiLnZhbHVlPSExKSx3aW5kb3cuc2V0VGltZW91dCgoKT0+e0EudmFsdWUmJih1LnZhbHVlPUEudmFsdWVbMF0pfSxHLkRVUkFUSU9OKjFlMykpfVN0KCgpPT57aWYoIWIudmFsdWUmJm0udmFsdWUmJktuKXtjb25zdCBMPXNldFRpbWVvdXQoKCk9PntXbihkb2N1bWVudC5ib2R5KX0sMjAwKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KEwpfX0pLHVlKGksKCk9PntiLnZhbHVlPWkudmFsdWUsaS52YWx1ZXx8emUoKX0pO2Z1bmN0aW9uIERhKEwpe2lmKCFrLnZhbHVlfHwhZi52YWx1ZSlyZXR1cm47Zi52YWx1ZS4kZWwuY2xhc3NMaXN0LnJlbW92ZShSdCksVS52YWx1ZT0hMSxrLnZhbHVlPSExLEgudmFsdWU9bmV3IERhdGU7Y29uc3QgUT1XZShmLnZhbHVlLiRlbCx2LnZhbHVlKTtpZighRXQoTC50YXJnZXQsITEpfHwhUXx8TnVtYmVyLmlzTmFOKFEpfHxqLnZhbHVlPT09bnVsbClyZXR1cm47Y29uc3QgdGU9SC52YWx1ZS5nZXRUaW1lKCktai52YWx1ZS5nZXRUaW1lKCksVj1PLnZhbHVlLShaKHYudmFsdWUpP0wuY2xpZW50WTpMLmNsaWVudFgpLG5lPU1hdGguYWJzKFYpL3RlO2lmKG5lPi4wNSYmKEIudmFsdWU9ITAsd2luZG93LnNldFRpbWVvdXQoKCk9PntCLnZhbHVlPSExfSwyMDApKSxBLnZhbHVlKXtjb25zdCBmZT12LnZhbHVlPT09ImJvdHRvbSJ8fHYudmFsdWU9PT0icmlnaHQiPzE6LTE7X2Uoe2RyYWdnZWREaXN0YW5jZTpWKmZlLGNsb3NlRHJhd2VyOnplLHZlbG9jaXR5Om5lLGRpc21pc3NpYmxlOmMudmFsdWV9KSxhKCEwKTtyZXR1cm59aWYodi52YWx1ZT09PSJib3R0b20ifHx2LnZhbHVlPT09InJpZ2h0Ij9WPjA6VjwwKXtPdCgpLGEoITApO3JldHVybn1pZihuZT5kYSl7emUoKSxhKCExKTtyZXR1cm59Y29uc3QgaWU9TWF0aC5taW4oZi52YWx1ZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0Pz8wLHdpbmRvdy5pbm5lckhlaWdodCk7aWYoUT49aWUqby52YWx1ZSl7emUoKSxhKCExKTtyZXR1cm59YSghMCksT3QoKX11ZShiLEw9PntMJiYocS52YWx1ZT1uZXcgRGF0ZSksbihMKX0se2ltbWVkaWF0ZTohMH0pO2Z1bmN0aW9uIFRhKEwpe3ZhciBRLHRlO2NvbnN0IFY9TD8od2luZG93LmlubmVyV2lkdGgtVmUpL3dpbmRvdy5pbm5lcldpZHRoOjEsbmU9TD8tMTY6MDtlZS52YWx1ZSYmd2luZG93LmNsZWFyVGltZW91dChlZS52YWx1ZSksYWUoKFE9Zi52YWx1ZSk9PW51bGw/dm9pZCAwOlEuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06YHNjYWxlKCR7Vn0pIHRyYW5zbGF0ZTNkKDAsICR7bmV9cHgsIDApYH0pLCFMJiYodGU9Zi52YWx1ZSkhPW51bGwmJnRlLiRlbCYmKGVlLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dmFyIGllLGZlO2NvbnN0IEJlPVdlKChpZT1mLnZhbHVlKT09bnVsbD92b2lkIDA6aWUuJGVsLHYudmFsdWUpO2FlKChmZT1mLnZhbHVlKT09bnVsbD92b2lkIDA6ZmUuJGVsLHt0cmFuc2l0aW9uOiJub25lIix0cmFuc2Zvcm06Wih2LnZhbHVlKT9gdHJhbnNsYXRlM2QoMCwgJHtCZX1weCwgMClgOmB0cmFuc2xhdGUzZCgke0JlfXB4LCAwLCAwKWB9KX0sNTAwKSl9ZnVuY3Rpb24gTWEoTCl7dmFyIFE7aWYoTDwwKXJldHVybjtjb25zdCB0ZT1aKHYudmFsdWUpP3dpbmRvdy5pbm5lckhlaWdodDp3aW5kb3cuaW5uZXJXaWR0aCxWPSh0ZS1WZSkvdGUsbmU9VitMKigxLVYpLGllPS0xNitMKlZlO2FlKChRPWYudmFsdWUpPT1udWxsP3ZvaWQgMDpRLiRlbCx7dHJhbnNmb3JtOloodi52YWx1ZSk/YHNjYWxlKCR7bmV9KSB0cmFuc2xhdGUzZCgwLCAke2llfXB4LCAwKWA6YHNjYWxlKCR7bmV9KSB0cmFuc2xhdGUzZCgke2llfXB4LCAwLCAwKWAsdHJhbnNpdGlvbjoibm9uZSJ9KX1mdW5jdGlvbiBMYShMKXt2YXIgUTtjb25zdCB0ZT1aKHYudmFsdWUpP3dpbmRvdy5pbm5lckhlaWdodDp3aW5kb3cuaW5uZXJXaWR0aCxWPUw/KHRlLVZlKS90ZToxLG5lPUw/LTE2OjA7TCYmYWUoKFE9Zi52YWx1ZSk9PW51bGw/dm9pZCAwOlEuJGVsLHt0cmFuc2l0aW9uOmB0cmFuc2Zvcm0gJHtHLkRVUkFUSU9OfXMgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYCx0cmFuc2Zvcm06Wih2LnZhbHVlKT9gc2NhbGUoJHtWfSkgdHJhbnNsYXRlM2QoMCwgJHtuZX1weCwgMClgOmBzY2FsZSgke1Z9KSB0cmFuc2xhdGUzZCgke25lfXB4LCAwLCAwKWB9KX1yZXR1cm57b3BlbjppLGlzT3BlbjpiLG1vZGFsOnIsa2V5Ym9hcmRJc09wZW46TixoYXNCZWVuT3BlbmVkOnksZHJhd2VyUmVmOmYsZHJhd2VySGVpZ2h0UmVmOkosb3ZlcmxheVJlZjokLGhhbmRsZVJlZjpvZSxpc0RyYWdnaW5nOmssZHJhZ1N0YXJ0VGltZTpqLGlzQWxsb3dlZFRvRHJhZzpVLHNuYXBQb2ludHM6QSxhY3RpdmVTbmFwUG9pbnQ6dSxoYXNTbmFwUG9pbnRzOlcscG9pbnRlclN0YXJ0Ok8sZGlzbWlzc2libGU6YyxzbmFwUG9pbnRzT2Zmc2V0OmthLGRpcmVjdGlvbjp2LHNob3VsZEZhZGU6THQsZmFkZUZyb21JbmRleDpnLHNob3VsZFNjYWxlQmFja2dyb3VuZDptLHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6cCxvblByZXNzOkJhLG9uRHJhZzpDYSxvblJlbGVhc2U6RGEsY2xvc2VEcmF3ZXI6emUsb25OZXN0ZWREcmFnOk1hLG9uTmVzdGVkUmVsZWFzZTpMYSxvbk5lc3RlZE9wZW5DaGFuZ2U6VGEsZW1pdENsb3NlOnMsZW1pdERyYWc6ZSxlbWl0UmVsZWFzZTphLGVtaXRPcGVuQ2hhbmdlOm4sbmVzdGVkOmQsaGFuZGxlT25seTpJLG5vQm9keVN0eWxlczp4fX1jb25zdCBoYT1tZSh7X19uYW1lOiJEcmF3ZXJSb290Iixwcm9wczp7YWN0aXZlU25hcFBvaW50OntkZWZhdWx0OnZvaWQgMH0sY2xvc2VUaHJlc2hvbGQ6e2RlZmF1bHQ6WW59LHNob3VsZFNjYWxlQmFja2dyb3VuZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwfSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sc2Nyb2xsTG9ja1RpbWVvdXQ6e2RlZmF1bHQ6WG59LGZpeGVkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LGRpc21pc3NpYmxlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sbW9kYWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSxvcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDB9LG5lc3RlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGRpcmVjdGlvbjp7ZGVmYXVsdDoiYm90dG9tIn0sbm9Cb2R5U3R5bGVzOnt0eXBlOkJvb2xlYW59LGhhbmRsZU9ubHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwcmV2ZW50U2Nyb2xsUmVzdG9yYXRpb246e3R5cGU6Qm9vbGVhbn0sc25hcFBvaW50czp7ZGVmYXVsdDp2b2lkIDB9LGZhZGVGcm9tSW5kZXg6e2RlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJkcmFnIiwicmVsZWFzZSIsImNsb3NlIiwidXBkYXRlOm9wZW4iLCJ1cGRhdGU6YWN0aXZlU25hcFBvaW50IiwiYW5pbWF0aW9uRW5kIl0sc2V0dXAodCx7ZXhwb3NlOmUsZW1pdDphfSl7Y29uc3Qgcz10LG49YTtMZSgpO2NvbnN0IGk9RigoKT0+cy5mYWRlRnJvbUluZGV4Pz8ocy5zbmFwUG9pbnRzJiZzLnNuYXBQb2ludHMubGVuZ3RoLTEpKSxjPXF0KHMsIm9wZW4iLG4se2RlZmF1bHRWYWx1ZTpzLmRlZmF1bHRPcGVuLHBhc3NpdmU6cy5vcGVuPT09dm9pZCAwfSksZD1xdChzLCJhY3RpdmVTbmFwUG9pbnQiLG4se3Bhc3NpdmU6cy5hY3RpdmVTbmFwUG9pbnQ9PT12b2lkIDB9KSxyPXtlbWl0RHJhZzpnPT5uKCJkcmFnIixnKSxlbWl0UmVsZWFzZTpnPT5uKCJyZWxlYXNlIixnKSxlbWl0Q2xvc2U6KCk9Pm4oImNsb3NlIiksZW1pdE9wZW5DaGFuZ2U6Zz0+e24oInVwZGF0ZTpvcGVuIixnKSxzZXRUaW1lb3V0KCgpPT57bigiYW5pbWF0aW9uRW5kIixnKX0sRy5EVVJBVElPTioxZTMpfX0se2Nsb3NlRHJhd2VyOm0saGFzQmVlbk9wZW5lZDpwLG1vZGFsOmgsaXNPcGVuOm99PUhuKGVzKHsuLi5yLC4uLlJhKHMpLGFjdGl2ZVNuYXBQb2ludDpkLGZhZGVGcm9tSW5kZXg6aSxvcGVuOmN9KSk7ZnVuY3Rpb24gdShnKXtpZihjLnZhbHVlIT09dm9pZCAwKXtyLmVtaXRPcGVuQ2hhbmdlKGcpO3JldHVybn1vLnZhbHVlPWcsZz9wLnZhbHVlPSEwOm0oKX1yZXR1cm4gZSh7b3BlbjpvfSksKGcsdik9Pih3KCksRShsKE5hKSx7b3BlbjpsKG8pLG1vZGFsOmwoaCksIm9uVXBkYXRlOm9wZW4iOnV9LHtkZWZhdWx0OkMoKCk9PltSKGcuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjpsKG8pfSldKSxfOjN9LDgsWyJvcGVuIiwibW9kYWwiXSkpfX0pLHRzPW1lKHtfX25hbWU6IkRyYXdlclJvb3ROZXN0ZWQiLHByb3BzOnthY3RpdmVTbmFwUG9pbnQ6e30sY2xvc2VUaHJlc2hvbGQ6e30sc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOnt0eXBlOkJvb2xlYW59LHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6e3R5cGU6Qm9vbGVhbn0sc2Nyb2xsTG9ja1RpbWVvdXQ6e30sZml4ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbn0sbW9kYWw6e3R5cGU6Qm9vbGVhbn0sb3Blbjp7dHlwZTpCb29sZWFufSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFufSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbn0sZGlyZWN0aW9uOnt9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFufSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW59LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjp7dHlwZTpCb29sZWFufSxzbmFwUG9pbnRzOnt9LGZhZGVGcm9tSW5kZXg6e319LGVtaXRzOlsiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2VtaXQ6ZX0pe2NvbnN0IGE9dCxzPWUse29uTmVzdGVkRHJhZzpuLG9uTmVzdGVkT3BlbkNoYW5nZTppLG9uTmVzdGVkUmVsZWFzZTpjfT1OZSgpO2Z1bmN0aW9uIGQoKXtpKCExKX1mdW5jdGlvbiByKGgpe24oaCl9ZnVuY3Rpb24gbShoKXtoJiZpKGgpLHMoInVwZGF0ZTpvcGVuIixoKX1jb25zdCBwPWt0KGEscyk7cmV0dXJuKGgsbyk9Pih3KCksRShoYSxZKGwocCkse25lc3RlZDoiIixvbkNsb3NlOmQsb25EcmFnOnIsb25SZWxlYXNlOmwoYyksIm9uVXBkYXRlOm9wZW4iOm19KSx7ZGVmYXVsdDpDKCgpPT5bUihoLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbIm9uUmVsZWFzZSJdKSl9fSksYXM9bWUoe19fbmFtZToiRHJhd2VyT3ZlcmxheSIsc2V0dXAodCl7Y29uc3R7b3ZlcmxheVJlZjplLGhhc1NuYXBQb2ludHM6YSxpc09wZW46cyxzaG91bGRGYWRlOm59PU5lKCk7cmV0dXJuKGksYyk9Pih3KCksRShsKHphKSx7cmVmX2tleToib3ZlcmxheVJlZiIscmVmOmUsImRhdGEtdmF1bC1vdmVybGF5IjoiIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzIjpsKHMpJiZsKGEpPyJ0cnVlIjoiZmFsc2UiLCJkYXRhLXZhdWwtc25hcC1wb2ludHMtb3ZlcmxheSI6bChzKSYmbChuKT8idHJ1ZSI6ImZhbHNlIn0sbnVsbCw4LFsiZGF0YS12YXVsLXNuYXAtcG9pbnRzIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzLW92ZXJsYXkiXSkpfX0pLG5zPSgpPT4oKT0+e307ZnVuY3Rpb24gc3MoKXtjb25zdHtkaXJlY3Rpb246dCxpc09wZW46ZSxzaG91bGRTY2FsZUJhY2tncm91bmQ6YSxzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlOnMsbm9Cb2R5U3R5bGVzOm59PU5lKCksaT1fKG51bGwpLGM9Xyhkb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmRDb2xvcik7ZnVuY3Rpb24gZCgpe3JldHVybih3aW5kb3cuaW5uZXJXaWR0aC1wYSkvd2luZG93LmlubmVyV2lkdGh9U3Qocj0+e2lmKGUudmFsdWUmJmEudmFsdWUpe2kudmFsdWUmJmNsZWFyVGltZW91dChpLnZhbHVlKTtjb25zdCBtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXZhdWwtZHJhd2VyLXdyYXBwZXJdIil8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIlt2YXVsLWRyYXdlci13cmFwcGVyXSIpO2lmKCFtKXJldHVybjtHbihzLnZhbHVlJiYhbi52YWx1ZT9ydChkb2N1bWVudC5ib2R5LHtiYWNrZ3JvdW5kOiJibGFjayJ9KTpucyxydChtLHt0cmFuc2Zvcm1PcmlnaW46Wih0LnZhbHVlKT8idG9wIjoibGVmdCIsdHJhbnNpdGlvblByb3BlcnR5OiJ0cmFuc2Zvcm0sIGJvcmRlci1yYWRpdXMiLHRyYW5zaXRpb25EdXJhdGlvbjpgJHtHLkRVUkFUSU9OfXNgLHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjpgY3ViaWMtYmV6aWVyKCR7Ry5FQVNFLmpvaW4oIiwiKX0pYH0pKTtjb25zdCBwPXJ0KG0se2JvcmRlclJhZGl1czpgJHtmYX1weGAsb3ZlcmZsb3c6ImhpZGRlbiIsLi4uWih0LnZhbHVlKT97dHJhbnNmb3JtOmBzY2FsZSgke2QoKX0pIHRyYW5zbGF0ZTNkKDAsIGNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC10b3ApICsgMTRweCksIDApYH06e3RyYW5zZm9ybTpgc2NhbGUoJHtkKCl9KSB0cmFuc2xhdGUzZChjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSArIDE0cHgpLCAwLCAwKWB9fSk7cigoKT0+e3AoKSxpLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57Yy52YWx1ZT9kb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmQ9Yy52YWx1ZTpkb2N1bWVudC5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJiYWNrZ3JvdW5kIil9LEcuRFVSQVRJT04qMWUzKX0pfX0se2ZsdXNoOiJwcmUifSl9Y29uc3QgaXM9bWUoe19fbmFtZToiRHJhd2VyQ29udGVudCIsc2V0dXAodCl7Y29uc3R7b3BlbjplLGlzT3BlbjphLHNuYXBQb2ludHNPZmZzZXQ6cyxoYXNTbmFwUG9pbnRzOm4sZHJhd2VyUmVmOmksb25QcmVzczpjLG9uRHJhZzpkLG9uUmVsZWFzZTpyLG1vZGFsOm0sZW1pdE9wZW5DaGFuZ2U6cCxkaXNtaXNzaWJsZTpoLGtleWJvYXJkSXNPcGVuOm8sY2xvc2VEcmF3ZXI6dSxkaXJlY3Rpb246ZyxoYW5kbGVPbmx5OnZ9PU5lKCk7c3MoKTtjb25zdCB4PV8oITEpLEk9RigoKT0+cy52YWx1ZSYmcy52YWx1ZS5sZW5ndGg+MD9gJHtzLnZhbHVlWzBdfXB4YDoiMCIpO2Z1bmN0aW9uIFMoayl7aWYoIW0udmFsdWV8fGsuZGVmYXVsdFByZXZlbnRlZCl7ay5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1vLnZhbHVlJiYoby52YWx1ZT0hMSksaC52YWx1ZT9wKCExKTprLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gYihrKXt2LnZhbHVlfHxjKGspfWZ1bmN0aW9uIHkoayl7di52YWx1ZXx8ZChrKX1yZXR1cm4gU3QoKCk9PntuLnZhbHVlJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57eC52YWx1ZT0hMH0pfSksKGssQik9Pih3KCksRShsKHFhKSx7cmVmX2tleToiZHJhd2VyUmVmIixyZWY6aSwiZGF0YS12YXVsLWRyYXdlciI6IiIsImRhdGEtdmF1bC1kcmF3ZXItZGlyZWN0aW9uIjpsKGcpLCJkYXRhLXZhdWwtZGVsYXllZC1zbmFwLXBvaW50cyI6eC52YWx1ZT8idHJ1ZSI6ImZhbHNlIiwiZGF0YS12YXVsLXNuYXAtcG9pbnRzIjpsKGEpJiZsKG4pPyJ0cnVlIjoiZmFsc2UiLHN0eWxlOlBhKHsiLS1zbmFwLXBvaW50LWhlaWdodCI6SS52YWx1ZX0pLG9uUG9pbnRlcmRvd246YixvblBvaW50ZXJtb3ZlOnksb25Qb2ludGVydXA6bChyKSxvblBvaW50ZXJEb3duT3V0c2lkZTpTLG9uT3BlbkF1dG9Gb2N1czpCWzBdfHwoQlswXT1GYSgoKT0+e30sWyJwcmV2ZW50Il0pKSxvbkVzY2FwZUtleURvd246QlsxXXx8KEJbMV09JD0+e2woaCl8fCQucHJldmVudERlZmF1bHQoKX0pfSx7ZGVmYXVsdDpDKCgpPT5bUihrLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiZGF0YS12YXVsLWRyYXdlci1kaXJlY3Rpb24iLCJkYXRhLXZhdWwtZGVsYXllZC1zbmFwLXBvaW50cyIsImRhdGEtdmF1bC1zbmFwLXBvaW50cyIsInN0eWxlIiwib25Qb2ludGVydXAiXSkpfX0pLGxzPVsiZGF0YS12YXVsLWRyYXdlci12aXNpYmxlIl0sb3M9eyJkYXRhLXZhdWwtaGFuZGxlLWhpdGFyZWEiOiIiLCJhcmlhLWhpZGRlbiI6InRydWUifSxycz0yNTAsdXM9MTIwLGNzPW1lKHtfX25hbWU6IkRyYXdlckhhbmRsZSIscHJvcHM6e3ByZXZlbnRDeWNsZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxzZXR1cCh0KXtjb25zdCBlPXQse29uUHJlc3M6YSxvbkRyYWc6cyxoYW5kbGVSZWY6bixoYW5kbGVPbmx5OmksaXNPcGVuOmMsc25hcFBvaW50czpkLGFjdGl2ZVNuYXBQb2ludDpyLGlzRHJhZ2dpbmc6bSxkaXNtaXNzaWJsZTpwLGNsb3NlRHJhd2VyOmh9PU5lKCksbz1fKG51bGwpLHU9XyghMSk7ZnVuY3Rpb24gZygpe2lmKHUudmFsdWUpe0koKTtyZXR1cm59d2luZG93LnNldFRpbWVvdXQoKCk9Pnt2KCl9LHVzKX1mdW5jdGlvbiB2KCl7aWYobS52YWx1ZXx8ZS5wcmV2ZW50Q3ljbGV8fHUudmFsdWUpe0koKTtyZXR1cm59aWYoSSgpLCFkLnZhbHVlfHxkLnZhbHVlLmxlbmd0aD09PTApe3AudmFsdWV8fGgoKTtyZXR1cm59Y29uc3QgeT1yLnZhbHVlPT09ZC52YWx1ZVtkLnZhbHVlLmxlbmd0aC0xXTtpZih5JiZwLnZhbHVlKXtoKCk7cmV0dXJufWNvbnN0IGs9ZC52YWx1ZS5maW5kSW5kZXgoJD0+JD09PXIudmFsdWUpO2lmKGs9PT0tMSlyZXR1cm47Y29uc3QgQj15PzA6aysxO3IudmFsdWU9ZC52YWx1ZVtCXX1mdW5jdGlvbiB4KCl7by52YWx1ZT13aW5kb3cuc2V0VGltZW91dCgoKT0+e3UudmFsdWU9ITB9LHJzKX1mdW5jdGlvbiBJKCl7by52YWx1ZSYmd2luZG93LmNsZWFyVGltZW91dChvLnZhbHVlKSx1LnZhbHVlPSExfWZ1bmN0aW9uIFMoeSl7aS52YWx1ZSYmYSh5KSx4KCl9ZnVuY3Rpb24gYih5KXtpLnZhbHVlJiZzKHkpfXJldHVybih5LGspPT4odygpLHooImRpdiIse3JlZl9rZXk6ImhhbmRsZVJlZiIscmVmOm4sImRhdGEtdmF1bC1kcmF3ZXItdmlzaWJsZSI6bChjKT8idHJ1ZSI6ImZhbHNlIiwiZGF0YS12YXVsLWhhbmRsZSI6IiIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsb25DbGljazpnLG9uUG9pbnRlcmNhbmNlbDpJLG9uUG9pbnRlcmRvd246UyxvblBvaW50ZXJtb3ZlOmJ9LFtYKCJzcGFuIixvcyxbUih5LiRzbG90cywiZGVmYXVsdCIpXSldLDQwLGxzKSl9fSksZHM9e3Nsb3RzOntvdmVybGF5OiJmaXhlZCBpbnNldC0wIGJnLWVsZXZhdGVkLzc1Iixjb250ZW50OiJmaXhlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1kZWZhdWx0IGZsZXggZm9jdXM6b3V0bGluZS1ub25lIixoYW5kbGU6WyJzaHJpbmstMCAhYmctYWNjZW50ZWQiLCJ0cmFuc2l0aW9uLW9wYWNpdHkiXSxjb250YWluZXI6InctZnVsbCBmbGV4IGZsZXgtY29sIGdhcC00IHAtNCBvdmVyZmxvdy15LWF1dG8iLGhlYWRlcjoiIix0aXRsZToidGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIixkZXNjcmlwdGlvbjoibXQtMSB0ZXh0LW11dGVkIHRleHQtc20iLGJvZHk6ImZsZXgtMSIsZm9vdGVyOiJmbGV4IGZsZXgtY29sIGdhcC0xLjUifSx2YXJpYW50czp7ZGlyZWN0aW9uOnt0b3A6e2NvbnRlbnQ6Im1iLTI0IGZsZXgtY29sLXJldmVyc2UiLGhhbmRsZToibWItNCJ9LHJpZ2h0Ontjb250ZW50OiJmbGV4LXJvdyIsaGFuZGxlOiIhbWwtNCJ9LGJvdHRvbTp7Y29udGVudDoibXQtMjQgZmxleC1jb2wiLGhhbmRsZToibXQtNCJ9LGxlZnQ6e2NvbnRlbnQ6ImZsZXgtcm93LXJldmVyc2UiLGhhbmRsZToiIW1yLTQifX0saW5zZXQ6e3RydWU6e2NvbnRlbnQ6InJvdW5kZWQtbGcgYWZ0ZXI6aGlkZGVuIG92ZXJmbG93LWhpZGRlbiBbLS1pbml0aWFsLXRyYW5zZm9ybTpjYWxjKDEwMCUrMS41cmVtKV0ifX0sc25hcFBvaW50czp7dHJ1ZToiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tkaXJlY3Rpb246WyJ0b3AiLCJib3R0b20iXSxjbGFzczp7Y29udGVudDoiaC1hdXRvIG1heC1oLVs5NiVdIixoYW5kbGU6IiF3LTEyICFoLTEuNSBteC1hdXRvIn19LHtkaXJlY3Rpb246WyJ0b3AiLCJib3R0b20iXSxzbmFwUG9pbnRzOiEwLGNsYXNzOntjb250ZW50OiJoLWZ1bGwifX0se2RpcmVjdGlvbjpbInJpZ2h0IiwibGVmdCJdLGNsYXNzOntjb250ZW50OiJ3LWF1dG8gbWF4LXctW2NhbGMoMTAwJS0ycmVtKV0iLGhhbmRsZToiIWgtMTIgIXctMS41IG10LWF1dG8gbWItYXV0byJ9fSx7ZGlyZWN0aW9uOlsicmlnaHQiLCJsZWZ0Il0sc25hcFBvaW50czohMCxjbGFzczp7Y29udGVudDoidy1mdWxsIn19LHtkaXJlY3Rpb246InRvcCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXgtNCB0b3AtNCJ9fSx7ZGlyZWN0aW9uOiJ0b3AiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJpbnNldC14LTAgdG9wLTAgcm91bmRlZC1iLWxnIn19LHtkaXJlY3Rpb246ImJvdHRvbSIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXgtNCBib3R0b20tNCJ9fSx7ZGlyZWN0aW9uOiJib3R0b20iLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJpbnNldC14LTAgYm90dG9tLTAgcm91bmRlZC10LWxnIn19LHtkaXJlY3Rpb246ImxlZnQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJpbnNldC15LTQgbGVmdC00In19LHtkaXJlY3Rpb246ImxlZnQiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJpbnNldC15LTAgbGVmdC0wIHJvdW5kZWQtci1sZyJ9fSx7ZGlyZWN0aW9uOiJyaWdodCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Imluc2V0LXktNCByaWdodC00In19LHtkaXJlY3Rpb246InJpZ2h0IixpbnNldDohMSxjbGFzczp7Y29udGVudDoiaW5zZXQteS0wIHJpZ2h0LTAgcm91bmRlZC1sLWxnIn19XX0sZnM9e19fbmFtZToiVURyYXdlciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3ZlcmxheTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGhhbmRsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSxuZXN0ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhY3RpdmVTbmFwUG9pbnQ6e3R5cGU6W051bWJlcixTdHJpbmcsbnVsbF0scmVxdWlyZWQ6ITF9LGNsb3NlVGhyZXNob2xkOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2hvdWxkU2NhbGVCYWNrZ3JvdW5kOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNldEJhY2tncm91bmRDb2xvck9uU2NhbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2Nyb2xsTG9ja1RpbWVvdXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxmaXhlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNtaXNzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXJlY3Rpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJvdHRvbSJ9LG5vQm9keVN0eWxlczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoYW5kbGVPbmx5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByZXZlbnRTY3JvbGxSZXN0b3JhdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzbmFwUG9pbnRzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjbG9zZTpwcmV2ZW50IiwiZHJhZyIsInJlbGVhc2UiLCJjbG9zZSIsInVwZGF0ZTpvcGVuIiwidXBkYXRlOmFjdGl2ZVNuYXBQb2ludCIsImFuaW1hdGlvbkVuZCJdLHNldHVwKHQse2VtaXQ6ZX0pe2NvbnN0IGE9dCxzPWUsbj1MZSgpLGk9RWUoKSxjPU9lKCJkcmF3ZXIiLGEpLGQ9a3QoSmUoYSwiYWN0aXZlU25hcFBvaW50IiwiY2xvc2VUaHJlc2hvbGQiLCJzaG91bGRTY2FsZUJhY2tncm91bmQiLCJzZXRCYWNrZ3JvdW5kQ29sb3JPblNjYWxlIiwic2Nyb2xsTG9ja1RpbWVvdXQiLCJmaXhlZCIsImRpc21pc3NpYmxlIiwibW9kYWwiLCJvcGVuIiwiZGVmYXVsdE9wZW4iLCJuZXN0ZWQiLCJkaXJlY3Rpb24iLCJub0JvZHlTdHlsZXMiLCJoYW5kbGVPbmx5IiwicHJldmVudFNjcm9sbFJlc3RvcmF0aW9uIiwic25hcFBvaW50cyIpLHMpLHI9V2EoTWUoKCk9PmEucG9ydGFsKSksbT1NZSgoKT0+YS5jb250ZW50KSxwPUYoKCk9PmEuZGlzbWlzc2libGU/e3BvaW50ZXJEb3duT3V0c2lkZTpKYX06WyJpbnRlcmFjdE91dHNpZGUiLCJlc2NhcGVLZXlEb3duIl0ucmVkdWNlKCh1LGcpPT4odVtnXT12PT57di5wcmV2ZW50RGVmYXVsdCgpLHMoImNsb3NlOnByZXZlbnQiKX0sdSkse30pKSxoPUYoKCk9PmRlKHtleHRlbmQ6ZGUoZHMpLC4uLmkudWk/LmRyYXdlcnx8e319KSh7ZGlyZWN0aW9uOmEuZGlyZWN0aW9uLGluc2V0OmEuaW5zZXQsc25hcFBvaW50czphLnNuYXBQb2ludHMmJmEuc25hcFBvaW50cy5sZW5ndGg+MH0pKTtyZXR1cm4obyx1KT0+KHcoKSxFKGVhKHQubmVzdGVkP2wodHMpOmwoaGEpKSxEZShUZShsKGQpKSkse2RlZmF1bHQ6QygoKT0+W24uZGVmYXVsdD8odygpLEUobChWYSkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6UChhLmNsYXNzKX0se2RlZmF1bHQ6QygoKT0+W1Ioby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImNsYXNzIl0pKTpLKCIiLCEwKSxEKGwoR2EpLERlKFRlKGwocikpKSx7ZGVmYXVsdDpDKCgpPT5bRChsKFlhKSxudWxsLHtkZWZhdWx0OkMoKCk9Plt0Lm92ZXJsYXk/KHcoKSxFKGwoYXMpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6UChoLnZhbHVlLm92ZXJsYXkoe2NsYXNzOmwoYyk/Lm92ZXJsYXl9KSl9LG51bGwsOCxbImNsYXNzIl0pKTpLKCIiLCEwKSxEKGwoaXMpLFkoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpoLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshbi5kZWZhdWx0JiZhLmNsYXNzLGwoYyk/LmNvbnRlbnRdfSl9LG0udmFsdWUsWGEocC52YWx1ZSkpLHtkZWZhdWx0OkMoKCk9Plt0LmhhbmRsZT8odygpLEUobChjcykse2tleTowLCJkYXRhLXNsb3QiOiJoYW5kbGUiLGNsYXNzOlAoaC52YWx1ZS5oYW5kbGUoe2NsYXNzOmwoYyk/LmhhbmRsZX0pKX0sbnVsbCw4LFsiY2xhc3MiXSkpOksoIiIsITApLCF0LnRpdGxlJiYhbi50aXRsZXx8IXQuZGVzY3JpcHRpb24mJiFuLmRlc2NyaXB0aW9ufHxuLmNvbnRlbnQ/KHcoKSxFKGwoUWEpLHtrZXk6MX0se2RlZmF1bHQ6QygoKT0+WyF0LnRpdGxlJiYhbi50aXRsZT8odygpLEUobChsdCkse2tleTowfSkpOm4uY29udGVudD8odygpLEUobChsdCkse2tleToxfSx7ZGVmYXVsdDpDKCgpPT5bUihvLiRzbG90cywidGl0bGUiLHt9LCgpPT5bQWUoY2UodC50aXRsZSksMSldKV0pLF86M30pKTpLKCIiLCEwKSwhdC5kZXNjcmlwdGlvbiYmIW4uZGVzY3JpcHRpb24/KHcoKSxFKGwob3QpLHtrZXk6Mn0pKTpuLmNvbnRlbnQ/KHcoKSxFKGwob3QpLHtrZXk6M30se2RlZmF1bHQ6QygoKT0+W1Ioby4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W0FlKGNlKHQuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6SygiIiwhMCldKSxfOjN9KSk6SygiIiwhMCksUihvLiRzbG90cywiY29udGVudCIse30sKCk9PltYKCJkaXYiLHsiZGF0YS1zbG90IjoiY29udGFpbmVyIixjbGFzczpQKGgudmFsdWUuY29udGFpbmVyKHtjbGFzczpsKGMpPy5jb250YWluZXJ9KSl9LFtuLmhlYWRlcnx8dC50aXRsZXx8bi50aXRsZXx8dC5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8odygpLHooImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOlAoaC52YWx1ZS5oZWFkZXIoe2NsYXNzOmwoYyk/LmhlYWRlcn0pKX0sW1Ioby4kc2xvdHMsImhlYWRlciIse30sKCk9Plt0LnRpdGxlfHxuLnRpdGxlPyh3KCksRShsKGx0KSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpQKGgudmFsdWUudGl0bGUoe2NsYXNzOmwoYyk/LnRpdGxlfSkpfSx7ZGVmYXVsdDpDKCgpPT5bUihvLiRzbG90cywidGl0bGUiLHt9LCgpPT5bQWUoY2UodC50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpLKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uPyh3KCksRShsKG90KSx7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpQKGgudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmwoYyk/LmRlc2NyaXB0aW9ufSkpfSx7ZGVmYXVsdDpDKCgpPT5bUihvLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bQWUoY2UodC5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpLKCIiLCEwKV0pXSwyKSk6SygiIiwhMCksbi5ib2R5Pyh3KCkseigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImJvZHkiLGNsYXNzOlAoaC52YWx1ZS5ib2R5KHtjbGFzczpsKGMpPy5ib2R5fSkpfSxbUihvLiRzbG90cywiYm9keSIpXSwyKSk6SygiIiwhMCksbi5mb290ZXI/KHcoKSx6KCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpQKGgudmFsdWUuZm9vdGVyKHtjbGFzczpsKGMpPy5mb290ZXJ9KSl9LFtSKG8uJHNsb3RzLCJmb290ZXIiKV0sMikpOksoIiIsITApXSwyKV0pXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldKSxfOjN9LDE2KV0pLF86M30sMTYpKX19LHBzPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaGlkZGVuIGxnOmZsZXggZmxleC1jb2wgbWluLWgtc3ZoIG1pbi13LTE2IHctKC0td2lkdGgpIHNocmluay0wIixoZWFkZXI6ImgtKC0tdWktaGVhZGVyLWhlaWdodCkgc2hyaW5rLTAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBweC00Iixib2R5OiJmbGV4IGZsZXgtY29sIGdhcC00IGZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcHgtNCBweS0yIixmb290ZXI6InNocmluay0wIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtNCBweS0yIix0b2dnbGU6IiIsaGFuZGxlOiIiLGNvbnRlbnQ6ImxnOmhpZGRlbiIsb3ZlcmxheToibGc6aGlkZGVuIn0sdmFyaWFudHM6e21lbnU6e3RydWU6e2hlYWRlcjoic206cHgtNiIsYm9keToic206cHgtNiIsZm9vdGVyOiJzbTpweC02In19LHNpZGU6e2xlZnQ6e3Jvb3Q6ImJvcmRlci1lIGJvcmRlci1kZWZhdWx0In0scmlnaHQ6e3Jvb3Q6IiJ9fSx0b2dnbGVTaWRlOntsZWZ0Ont0b2dnbGU6IiJ9LHJpZ2h0Ont0b2dnbGU6Im1zLWF1dG8ifX19fSxocz1bImRhdGEtY29sbGFwc2VkIiwiZGF0YS1kcmFnZ2luZyJdLG1zPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZFNpZGViYXIiLHByb3BzOlplKHttb2RlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic2xpZGVvdmVyIn0sbWVudTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0b2dnbGU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0b2dnbGVTaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sYXV0b0Nsb3NlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxlZnQifSxtaW5TaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxtYXhTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjIwfSxkZWZhdWx0U2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxNX0scmVzaXphYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sY29sbGFwc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjb2xsYXBzZWRTaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9fSx7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LG9wZW5Nb2RpZmllcnM6e30sY29sbGFwc2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY29sbGFwc2VkTW9kaWZpZXJzOnt9fSksZW1pdHM6WyJ1cGRhdGU6b3BlbiIsInVwZGF0ZTpjb2xsYXBzZWQiXSxzZXR1cCh0KXtjb25zdCBlPXQsYT1MZSgpLHM9cWUodCwib3BlbiIse3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSksbj1xZSh0LCJjb2xsYXBzZWQiLHt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0pLGk9WmEoKSx7dDpjfT1hdCgpLGQ9RWUoKSxyPU9lKCJkYXNoYm9hcmRTaWRlYmFyIixlKSxtPWlhKHtzdG9yYWdlS2V5OiJkYXNoYm9hcmQiLHVuaXQ6IiUiLHNpZGViYXJPcGVuOl8oITEpLHNpZGViYXJDb2xsYXBzZWQ6XyghMSl9KSxwPWAke20uc3RvcmFnZUtleX0tc2lkZWJhci0ke2UuaWR8fGVuKCl9YCx7ZWw6aCxzaXplOm8sY29sbGFwc2U6dSxpc0NvbGxhcHNlZDpnLGlzRHJhZ2dpbmc6dixvbk1vdXNlRG93bjp4LG9uVG91Y2hTdGFydDpJLG9uRG91YmxlQ2xpY2s6U309eG4ocCxNZSgoKT0+KHsuLi5tLC4uLmV9KSkse2NvbGxhcHNlZDpufSksW2IseV09WGUoKSxbayxCXT1YZSgpO2Z0KCJkYXNoYm9hcmQ6c2lkZWJhcjp0b2dnbGUiLCgpPT57cy52YWx1ZT0hcy52YWx1ZX0pLGZ0KCJkYXNoYm9hcmQ6c2lkZWJhcjpjb2xsYXBzZSIsTT0+e2cudmFsdWU9TX0pLHVlKHMsKCk9Pm0uc2lkZWJhck9wZW4udmFsdWU9cy52YWx1ZSx7aW1tZWRpYXRlOiEwfSksdWUoZywoKT0+bS5zaWRlYmFyQ29sbGFwc2VkLnZhbHVlPWcudmFsdWUse2ltbWVkaWF0ZTohMH0pLHVlKCgpPT5pLmZ1bGxQYXRoLCgpPT57ZS5hdXRvQ2xvc2UmJihzLnZhbHVlPSExKX0pO2NvbnN0ICQ9RigoKT0+ZGUoe2V4dGVuZDpkZShwcyksLi4uZC51aT8uZGFzaGJvYXJkU2lkZWJhcnx8e319KSh7c2lkZTplLnNpZGV9KSkscT1GKCgpPT4oe3NsaWRlb3Zlcjp0bixtb2RhbDpBdCxkcmF3ZXI6ZnN9KVtlLm1vZGVdKSxqPU1lKCgpPT5QZShlLm1lbnUse30sZS5tb2RlPT09Im1vZGFsIj97ZnVsbHNjcmVlbjohMCx0cmFuc2l0aW9uOiExfTplLm1vZGU9PT0ic2xpZGVvdmVyIj97c2lkZToibGVmdCJ9Ont9KSk7ZnVuY3Rpb24gSCgpe3MudmFsdWU9IXMudmFsdWV9cmV0dXJuKE0sVSk9Pih3KCkseihwZSxudWxsLFtEKGwoYiksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bUihNLiRzbG90cywidG9nZ2xlIix7b3BlbjpzLnZhbHVlLHRvZ2dsZTpILHVpOiQudmFsdWV9LCgpPT5bdC50b2dnbGU/KHcoKSxFKENuLFkoe2tleTowfSx0eXBlb2YgdC50b2dnbGU9PSJvYmplY3QiP3QudG9nZ2xlOnt9LHtzaWRlOnQudG9nZ2xlU2lkZSwiZGF0YS1zbG90IjoidG9nZ2xlIixjbGFzczokLnZhbHVlLnRvZ2dsZSh7Y2xhc3M6bChyKT8udG9nZ2xlLHRvZ2dsZVNpZGU6dC50b2dnbGVTaWRlfSl9KSxudWxsLDE2LFsic2lkZSIsImNsYXNzIl0pKTpLKCIiLCEwKV0pXSksXzozfSksRChsKGspLG51bGwse2RlZmF1bHQ6QygoKT0+W1IoTS4kc2xvdHMsInJlc2l6ZS1oYW5kbGUiLHtvbk1vdXNlRG93bjpsKHgpLG9uVG91Y2hTdGFydDpsKEkpLG9uRG91YmxlQ2xpY2s6bChTKSx1aTokLnZhbHVlfSwoKT0+W3QucmVzaXphYmxlPyh3KCksRShTbix7a2V5OjAsImFyaWEtY29udHJvbHMiOnAsImRhdGEtc2xvdCI6ImhhbmRsZSIsY2xhc3M6UCgkLnZhbHVlLmhhbmRsZSh7Y2xhc3M6bChyKT8uaGFuZGxlfSkpLG9uTW91c2Vkb3duOmwoeCksb25Ub3VjaHN0YXJ0OmwoSSksb25EYmxjbGljazpsKFMpfSxudWxsLDgsWyJjbGFzcyIsIm9uTW91c2Vkb3duIiwib25Ub3VjaHN0YXJ0Iiwib25EYmxjbGljayJdKSk6SygiIiwhMCldKV0pLF86M30pLHQuc2lkZT09PSJyaWdodCI/KHcoKSxFKGwoQikse2tleTowfSkpOksoIiIsITApLFgoImRpdiIsWSh7aWQ6cCxyZWZfa2V5OiJlbCIscmVmOmh9LE0uJGF0dHJzLHsiZGF0YS1jb2xsYXBzZWQiOmwoZyksImRhdGEtZHJhZ2dpbmciOmwodiksImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOiQudmFsdWUucm9vdCh7Y2xhc3M6W2wocik/LnJvb3QsZS5jbGFzc119KSxzdHlsZTp7Ii0td2lkdGgiOmAke2wobyl8fDB9JHtsKG0pLnVuaXR9YH19KSxbYS5oZWFkZXI/KHcoKSx6KCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczpQKCQudmFsdWUuaGVhZGVyKHtjbGFzczpsKHIpPy5oZWFkZXJ9KSl9LFtSKE0uJHNsb3RzLCJoZWFkZXIiLHtjb2xsYXBzZWQ6bChnKSxjb2xsYXBzZTpsKHUpfSldLDIpKTpLKCIiLCEwKSxYKCJkaXYiLHsiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6UCgkLnZhbHVlLmJvZHkoe2NsYXNzOmwocik/LmJvZHl9KSl9LFtSKE0uJHNsb3RzLCJkZWZhdWx0Iix7Y29sbGFwc2VkOmwoZyksY29sbGFwc2U6bCh1KX0pXSwyKSxhLmZvb3Rlcj8odygpLHooImRpdiIse2tleToxLCJkYXRhLXNsb3QiOiJmb290ZXIiLGNsYXNzOlAoJC52YWx1ZS5mb290ZXIoe2NsYXNzOmwocik/LmZvb3Rlcn0pKX0sW1IoTS4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDpsKGcpLGNvbGxhcHNlOmwodSl9KV0sMikpOksoIiIsITApXSwxNixocyksdC5zaWRlPT09ImxlZnQiPyh3KCksRShsKEIpLHtrZXk6MX0pKTpLKCIiLCEwKSxEKGwocSksWSh7b3BlbjpzLnZhbHVlLCJvblVwZGF0ZTpvcGVuIjpVWzBdfHwoVVswXT1lZT0+cy52YWx1ZT1lZSksdGl0bGU6bChjKSgiZGFzaGJvYXJkU2lkZWJhci50aXRsZSIpLGRlc2NyaXB0aW9uOmwoYykoImRhc2hib2FyZFNpZGViYXIuZGVzY3JpcHRpb24iKX0sai52YWx1ZSx7dWk6e292ZXJsYXk6JC52YWx1ZS5vdmVybGF5KHtjbGFzczpsKHIpPy5vdmVybGF5fSksY29udGVudDokLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmwocik/LmNvbnRlbnR9KX19KSx7Y29udGVudDpDKGVlPT5bUihNLiRzbG90cywiY29udGVudCIsRGUoVGUoZWUpKSwoKT0+W2EuaGVhZGVyfHx0Lm1vZGUhPT0iZHJhd2VyIj8odygpLHooImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOlAoJC52YWx1ZS5oZWFkZXIoe2NsYXNzOmwocik/LmhlYWRlcixtZW51OiEwfSkpfSxbdC5tb2RlIT09ImRyYXdlciImJnQudG9nZ2xlU2lkZT09PSJsZWZ0Ij8odygpLEUobCh5KSx7a2V5OjB9KSk6SygiIiwhMCksUihNLiRzbG90cywiaGVhZGVyIix7Y29sbGFwc2VkOiExLGNvbGxhcHNlOigpPT57fX0pLHQubW9kZSE9PSJkcmF3ZXIiJiZ0LnRvZ2dsZVNpZGU9PT0icmlnaHQiPyh3KCksRShsKHkpLHtrZXk6MX0pKTpLKCIiLCEwKV0sMikpOksoIiIsITApLFgoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczpQKCQudmFsdWUuYm9keSh7Y2xhc3M6bChyKT8uYm9keSxtZW51OiEwfSkpfSxbUihNLiRzbG90cywiZGVmYXVsdCIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319KV0sMiksYS5mb290ZXI/KHcoKSx6KCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczpQKCQudmFsdWUuZm9vdGVyKHtjbGFzczpsKHIpPy5mb290ZXIsbWVudTohMH0pKX0sW1IoTS4kc2xvdHMsImZvb3RlciIse2NvbGxhcHNlZDohMSxjb2xsYXBzZTooKT0+e319KV0sMikpOksoIiIsITApXSldKSxfOjN9LDE2LFsib3BlbiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJ1aSJdKV0sNjQpKX19KTtmdW5jdGlvbiB5ZSh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5KHQpOnZhKHQpPT09IltvYmplY3QgQXJyYXldIn1mdW5jdGlvbiB2cyh0KXtpZih0eXBlb2YgdD09InN0cmluZyIpcmV0dXJuIHQ7aWYodHlwZW9mIHQ9PSJiaWdpbnQiKXJldHVybiB0LnRvU3RyaW5nKCk7Y29uc3QgZT10KyIiO3JldHVybiBlPT0iMCImJjEvdD09LTEvMD8iLTAiOmV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIHQ9PW51bGw/IiI6dnModCl9ZnVuY3Rpb24gbGUodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIn1mdW5jdGlvbiBZZSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIifWZ1bmN0aW9uIGdzKHQpe3JldHVybiB0PT09ITB8fHQ9PT0hMXx8eXModCkmJnZhKHQpPT0iW29iamVjdCBCb29sZWFuXSJ9ZnVuY3Rpb24gbWEodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0In1mdW5jdGlvbiB5cyh0KXtyZXR1cm4gbWEodCkmJnQhPT1udWxsfWZ1bmN0aW9uIHJlKHQpe3JldHVybiB0IT1udWxsfWZ1bmN0aW9uIEdlKHQpe3JldHVybiF0LnRyaW0oKS5sZW5ndGh9ZnVuY3Rpb24gdmEodCl7cmV0dXJuIHQ9PW51bGw/dD09PXZvaWQgMD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNvbnN0IGJzPSJJbmNvcnJlY3QgJ2luZGV4JyB0eXBlIix3cz10PT5gSW52YWxpZCB2YWx1ZSBmb3Iga2V5ICR7dH1gLHhzPXQ9PmBQYXR0ZXJuIGxlbmd0aCBleGNlZWRzIG1heCBvZiAke3R9LmAsU3M9dD0+YE1pc3NpbmcgJHt0fSBwcm9wZXJ0eSBpbiBrZXlgLGtzPXQ9PmBQcm9wZXJ0eSAnd2VpZ2h0JyBpbiBrZXkgJyR7dH0nIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyYCxLdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NsYXNzIElze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2tleXM9W10sdGhpcy5fa2V5TWFwPXt9O2xldCBhPTA7ZS5mb3JFYWNoKHM9Pntjb25zdCBuPWdhKHMpO3RoaXMuX2tleXMucHVzaChuKSx0aGlzLl9rZXlNYXBbbi5pZF09bixhKz1uLndlaWdodH0pLHRoaXMuX2tleXMuZm9yRWFjaChzPT57cy53ZWlnaHQvPWF9KX1nZXQoZSl7cmV0dXJuIHRoaXMuX2tleU1hcFtlXX1rZXlzKCl7cmV0dXJuIHRoaXMuX2tleXN9dG9KU09OKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuX2tleXMpfX1mdW5jdGlvbiBnYSh0KXtsZXQgZT1udWxsLGE9bnVsbCxzPW51bGwsbj0xLGk9bnVsbDtpZihsZSh0KXx8eWUodCkpcz10LGU9VXQodCksYT1odCh0KTtlbHNle2lmKCFLdC5jYWxsKHQsIm5hbWUiKSl0aHJvdyBuZXcgRXJyb3IoU3MoIm5hbWUiKSk7Y29uc3QgYz10Lm5hbWU7aWYocz1jLEt0LmNhbGwodCwid2VpZ2h0IikmJihuPXQud2VpZ2h0LG48PTApKXRocm93IG5ldyBFcnJvcihrcyhjKSk7ZT1VdChjKSxhPWh0KGMpLGk9dC5nZXRGbn1yZXR1cm57cGF0aDplLGlkOmEsd2VpZ2h0Om4sc3JjOnMsZ2V0Rm46aX19ZnVuY3Rpb24gVXQodCl7cmV0dXJuIHllKHQpP3Q6dC5zcGxpdCgiLiIpfWZ1bmN0aW9uIGh0KHQpe3JldHVybiB5ZSh0KT90LmpvaW4oIi4iKTp0fWZ1bmN0aW9uIEFzKHQsZSl7Y29uc3QgYT1bXTtsZXQgcz0hMTtjb25zdCBuPShpLGMsZCxyKT0+e2lmKHJlKGkpKWlmKCFjW2RdKWEucHVzaChyIT09dm9pZCAwP3t2OmksaTpyfTppKTtlbHNle2NvbnN0IG09Y1tkXSxwPWlbbV07aWYoIXJlKHApKXJldHVybjtpZihkPT09Yy5sZW5ndGgtMSYmKGxlKHApfHxZZShwKXx8Z3MocCl8fHR5cGVvZiBwPT0iYmlnaW50IikpYS5wdXNoKHIhPT12b2lkIDA/e3Y6cHQocCksaTpyfTpwdChwKSk7ZWxzZSBpZih5ZShwKSl7cz0hMDtmb3IobGV0IGg9MCxvPXAubGVuZ3RoO2g8bztoKz0xKW4ocFtoXSxjLGQrMSxoKX1lbHNlIGMubGVuZ3RoJiZuKHAsYyxkKzEscil9fTtyZXR1cm4gbih0LGxlKGUpP2Uuc3BsaXQoIi4iKTplLDApLHM/YTphWzBdfWNvbnN0ICRzPXtpbmNsdWRlTWF0Y2hlczohMSxmaW5kQWxsTWF0Y2hlczohMSxtaW5NYXRjaENoYXJMZW5ndGg6MX0sQnM9e2lzQ2FzZVNlbnNpdGl2ZTohMSxpZ25vcmVEaWFjcml0aWNzOiExLGluY2x1ZGVTY29yZTohMSxrZXlzOltdLHNob3VsZFNvcnQ6ITAsc29ydEZuOih0LGUpPT50LnNjb3JlPT09ZS5zY29yZT90LmlkeDxlLmlkeD8tMToxOnQuc2NvcmU8ZS5zY29yZT8tMToxfSxDcz17bG9jYXRpb246MCx0aHJlc2hvbGQ6LjYsZGlzdGFuY2U6MTAwfSxEcz17dXNlRXh0ZW5kZWRTZWFyY2g6ITEsdXNlVG9rZW5TZWFyY2g6ITEsZ2V0Rm46QXMsaWdub3JlTG9jYXRpb246ITEsaWdub3JlRmllbGROb3JtOiExLGZpZWxkTm9ybVdlaWdodDoxfSxUPU9iamVjdC5mcmVlemUoey4uLkJzLC4uLiRzLC4uLkNzLC4uLkRzfSksVHM9L1teIF0rL2c7ZnVuY3Rpb24gTXModD0xLGU9Myl7Y29uc3QgYT1uZXcgTWFwLHM9TWF0aC5wb3coMTAsZSk7cmV0dXJue2dldChuKXtjb25zdCBpPW4ubWF0Y2goVHMpLmxlbmd0aDtpZihhLmhhcyhpKSlyZXR1cm4gYS5nZXQoaSk7Y29uc3QgYz0xL01hdGgucG93KGksLjUqdCksZD1wYXJzZUZsb2F0KE1hdGgucm91bmQoYypzKS9zKTtyZXR1cm4gYS5zZXQoaSxkKSxkfSxjbGVhcigpe2EuY2xlYXIoKX19fWNsYXNzIEJ0e2NvbnN0cnVjdG9yKHtnZXRGbjplPVQuZ2V0Rm4sZmllbGROb3JtV2VpZ2h0OmE9VC5maWVsZE5vcm1XZWlnaHR9PXt9KXt0aGlzLm5vcm09TXMoYSwzKSx0aGlzLmdldEZuPWUsdGhpcy5pc0NyZWF0ZWQ9ITEsdGhpcy5kb2NzPVtdLHRoaXMua2V5cz1bXSx0aGlzLl9rZXlzTWFwPXt9LHRoaXMuc2V0SW5kZXhSZWNvcmRzKCl9c2V0U291cmNlcyhlPVtdKXt0aGlzLmRvY3M9ZX1zZXRJbmRleFJlY29yZHMoZT1bXSl7dGhpcy5yZWNvcmRzPWV9c2V0S2V5cyhlPVtdKXt0aGlzLmtleXM9ZSx0aGlzLl9rZXlzTWFwPXt9LGUuZm9yRWFjaCgoYSxzKT0+e3RoaXMuX2tleXNNYXBbYS5pZF09c30pfWNyZWF0ZSgpe3RoaXMuaXNDcmVhdGVkfHwhdGhpcy5kb2NzLmxlbmd0aHx8KHRoaXMuaXNDcmVhdGVkPSEwLGxlKHRoaXMuZG9jc1swXSk/dGhpcy5kb2NzLmZvckVhY2goKGUsYSk9Pnt0aGlzLl9hZGRTdHJpbmcoZSxhKX0pOnRoaXMuZG9jcy5mb3JFYWNoKChlLGEpPT57dGhpcy5fYWRkT2JqZWN0KGUsYSl9KSx0aGlzLm5vcm0uY2xlYXIoKSl9YWRkKGUpe2NvbnN0IGE9dGhpcy5zaXplKCk7bGUoZSk/dGhpcy5fYWRkU3RyaW5nKGUsYSk6dGhpcy5fYWRkT2JqZWN0KGUsYSl9cmVtb3ZlQXQoZSl7dGhpcy5yZWNvcmRzLnNwbGljZShlLDEpO2ZvcihsZXQgYT1lLHM9dGhpcy5zaXplKCk7YTxzO2ErPTEpdGhpcy5yZWNvcmRzW2FdLmktPTF9cmVtb3ZlQWxsKGUpe2ZvcihsZXQgYT1lLmxlbmd0aC0xO2E+PTA7YS09MSl0aGlzLnJlY29yZHMuc3BsaWNlKGVbYV0sMSk7Zm9yKGxldCBhPTAscz10aGlzLnJlY29yZHMubGVuZ3RoO2E8czthKz0xKXRoaXMucmVjb3Jkc1thXS5pPWF9Z2V0VmFsdWVGb3JJdGVtQXRLZXlJZChlLGEpe3JldHVybiBlW3RoaXMuX2tleXNNYXBbYV1dfXNpemUoKXtyZXR1cm4gdGhpcy5yZWNvcmRzLmxlbmd0aH1fYWRkU3RyaW5nKGUsYSl7aWYoIXJlKGUpfHxHZShlKSlyZXR1cm47Y29uc3Qgcz17djplLGk6YSxuOnRoaXMubm9ybS5nZXQoZSl9O3RoaXMucmVjb3Jkcy5wdXNoKHMpfV9hZGRPYmplY3QoZSxhKXtjb25zdCBzPXtpOmEsJDp7fX07dGhpcy5rZXlzLmZvckVhY2goKG4saSk9Pntjb25zdCBjPW4uZ2V0Rm4/bi5nZXRGbihlKTp0aGlzLmdldEZuKGUsbi5wYXRoKTtpZihyZShjKSl7aWYoeWUoYykpe2NvbnN0IGQ9W107Zm9yKGxldCByPTAsbT1jLmxlbmd0aDtyPG07cis9MSl7Y29uc3QgcD1jW3JdO2lmKHJlKHApKXtpZihsZShwKSl7aWYoIUdlKHApKXtjb25zdCBoPXt2OnAsaTpyLG46dGhpcy5ub3JtLmdldChwKX07ZC5wdXNoKGgpfX1lbHNlIGlmKHJlKHAudikpe2NvbnN0IGg9bGUocC52KT9wLnY6cHQocC52KTtpZighR2UoaCkpe2NvbnN0IG89e3Y6aCxpOnAuaSxuOnRoaXMubm9ybS5nZXQoaCl9O2QucHVzaChvKX19fX1zLiRbaV09ZH1lbHNlIGlmKGxlKGMpJiYhR2UoYykpe2NvbnN0IGQ9e3Y6YyxuOnRoaXMubm9ybS5nZXQoYyl9O3MuJFtpXT1kfX19KSx0aGlzLnJlY29yZHMucHVzaChzKX10b0pTT04oKXtyZXR1cm57a2V5czp0aGlzLmtleXMubWFwKCh7Z2V0Rm46ZSwuLi5hfSk9PmEpLHJlY29yZHM6dGhpcy5yZWNvcmRzfX19ZnVuY3Rpb24geWEodCxlLHtnZXRGbjphPVQuZ2V0Rm4sZmllbGROb3JtV2VpZ2h0OnM9VC5maWVsZE5vcm1XZWlnaHR9PXt9KXtjb25zdCBuPW5ldyBCdCh7Z2V0Rm46YSxmaWVsZE5vcm1XZWlnaHQ6c30pO3JldHVybiBuLnNldEtleXModC5tYXAoZ2EpKSxuLnNldFNvdXJjZXMoZSksbi5jcmVhdGUoKSxufWZ1bmN0aW9uIExzKHQse2dldEZuOmU9VC5nZXRGbixmaWVsZE5vcm1XZWlnaHQ6YT1ULmZpZWxkTm9ybVdlaWdodH09e30pe2NvbnN0e2tleXM6cyxyZWNvcmRzOm59PXQsaT1uZXcgQnQoe2dldEZuOmUsZmllbGROb3JtV2VpZ2h0OmF9KTtyZXR1cm4gaS5zZXRLZXlzKHMpLGkuc2V0SW5kZXhSZWNvcmRzKG4pLGl9ZnVuY3Rpb24gRXModD1bXSxlPVQubWluTWF0Y2hDaGFyTGVuZ3RoKXtjb25zdCBhPVtdO2xldCBzPS0xLG49LTEsaT0wO2ZvcihsZXQgYz10Lmxlbmd0aDtpPGM7aSs9MSl7Y29uc3QgZD10W2ldO2QmJnM9PT0tMT9zPWk6IWQmJnMhPT0tMSYmKG49aS0xLG4tcysxPj1lJiZhLnB1c2goW3Msbl0pLHM9LTEpfXJldHVybiB0W2ktMV0mJmktcz49ZSYmYS5wdXNoKFtzLGktMV0pLGF9Y29uc3QgSWU9MzI7ZnVuY3Rpb24gT3ModCxlLGEse2xvY2F0aW9uOnM9VC5sb2NhdGlvbixkaXN0YW5jZTpuPVQuZGlzdGFuY2UsdGhyZXNob2xkOmk9VC50aHJlc2hvbGQsZmluZEFsbE1hdGNoZXM6Yz1ULmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpkPVQubWluTWF0Y2hDaGFyTGVuZ3RoLGluY2x1ZGVNYXRjaGVzOnI9VC5pbmNsdWRlTWF0Y2hlcyxpZ25vcmVMb2NhdGlvbjptPVQuaWdub3JlTG9jYXRpb259PXt9KXtpZihlLmxlbmd0aD5JZSl0aHJvdyBuZXcgRXJyb3IoeHMoSWUpKTtjb25zdCBwPWUubGVuZ3RoLGg9dC5sZW5ndGgsbz1NYXRoLm1heCgwLE1hdGgubWluKHMsaCkpO2xldCB1PWksZz1vO2NvbnN0IHY9KHEsaik9Pntjb25zdCBIPXEvcDtpZihtKXJldHVybiBIO2NvbnN0IE09TWF0aC5hYnMoby1qKTtyZXR1cm4gbj9IK00vbjpNPzE6SH0seD1kPjF8fHIsST14P0FycmF5KGgpOltdO2xldCBTO2Zvcig7KFM9dC5pbmRleE9mKGUsZykpPi0xOyl7Y29uc3QgcT12KDAsUyk7aWYodT1NYXRoLm1pbihxLHUpLGc9UytwLHgpe2xldCBqPTA7Zm9yKDtqPHA7KUlbUytqXT0xLGorPTF9fWc9LTE7bGV0IGI9W10seT0xLGs9cCtoO2NvbnN0IEI9MTw8cC0xO2ZvcihsZXQgcT0wO3E8cDtxKz0xKXtsZXQgaj0wLEg9aztmb3IoO2o8SDspdihxLG8rSCk8PXU/aj1IOms9SCxIPU1hdGguZmxvb3IoKGstaikvMitqKTtrPUg7bGV0IE09TWF0aC5tYXgoMSxvLUgrMSk7Y29uc3QgVT1jP2g6TWF0aC5taW4obytILGgpK3AsZWU9QXJyYXkoVSsyKTtlZVtVKzFdPSgxPDxxKS0xO2ZvcihsZXQgTj1VO04+PU07Ti09MSl7Y29uc3QgZj1OLTEsSj1hW3RbZl1dO2lmKHgmJihJW2ZdPSshIUopLGVlW05dPShlZVtOKzFdPDwxfDEpJkoscSYmKGVlW05dfD0oYltOKzFdfGJbTl0pPDwxfDF8YltOKzFdKSxlZVtOXSZCJiYoeT12KHEsZikseTw9dSkpe2lmKHU9eSxnPWYsZzw9bylicmVhaztNPU1hdGgubWF4KDEsMipvLWcpfX1pZih2KHErMSxvKT51KWJyZWFrO2I9ZWV9Y29uc3QgJD17aXNNYXRjaDpnPj0wLHNjb3JlOk1hdGgubWF4KC4wMDEseSl9O2lmKHgpe2NvbnN0IHE9RXMoSSxkKTtxLmxlbmd0aD9yJiYoJC5pbmRpY2VzPXEpOiQuaXNNYXRjaD0hMX1yZXR1cm4gJH1mdW5jdGlvbiBfcyh0KXtjb25zdCBlPXt9O2ZvcihsZXQgYT0wLHM9dC5sZW5ndGg7YTxzO2ErPTEpe2NvbnN0IG49dC5jaGFyQXQoYSk7ZVtuXT0oZVtuXXx8MCl8MTw8cy1hLTF9cmV0dXJuIGV9ZnVuY3Rpb24gQ3QodCl7aWYodC5sZW5ndGg8PTEpcmV0dXJuIHQ7dC5zb3J0KChhLHMpPT5hWzBdLXNbMF18fGFbMV0tc1sxXSk7Y29uc3QgZT1bdFswXV07Zm9yKGxldCBhPTEscz10Lmxlbmd0aDthPHM7YSs9MSl7Y29uc3Qgbj1lW2UubGVuZ3RoLTFdLGk9dFthXTtpWzBdPD1uWzFdKzE/blsxXT1NYXRoLm1heChuWzFdLGlbMV0pOmUucHVzaChpKX1yZXR1cm4gZX1jb25zdCBiYT17xYI6ImwiLMWBOiJMIizEkToiZCIsxJA6IkQiLMO4OiJvIizDmDoiTyIsxKc6ImgiLMSmOiJIIizFpzoidCIsxaY6IlQiLMSxOiJpIizDnzoic3MifSx6cz1uZXcgUmVnRXhwKCJbIitPYmplY3Qua2V5cyhiYSkuam9pbigiIikrIl0iLCJnIiksUmU9U3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemU/dD0+dC5ub3JtYWxpemUoIk5GRCIpLnJlcGxhY2UoL1tcdTAzMDAtXHUwMzZGXHUwNDgzLVx1MDQ4OVx1MDU5MS1cdTA1QkRcdTA1QkZcdTA1QzFcdTA1QzJcdTA1QzRcdTA1QzVcdTA1QzdcdTA2MTAtXHUwNjFBXHUwNjRCLVx1MDY1Rlx1MDY3MFx1MDZENi1cdTA2RENcdTA2REYtXHUwNkU0XHUwNkU3XHUwNkU4XHUwNkVBLVx1MDZFRFx1MDcxMVx1MDczMC1cdTA3NEFcdTA3QTYtXHUwN0IwXHUwN0VCLVx1MDdGM1x1MDdGRFx1MDgxNi1cdTA4MTlcdTA4MUItXHUwODIzXHUwODI1LVx1MDgyN1x1MDgyOS1cdTA4MkRcdTA4NTktXHUwODVCXHUwOEQzLVx1MDhFMVx1MDhFMy1cdTA5MDNcdTA5M0EtXHUwOTNDXHUwOTNFLVx1MDk0Rlx1MDk1MS1cdTA5NTdcdTA5NjJcdTA5NjNcdTA5ODEtXHUwOTgzXHUwOUJDXHUwOUJFLVx1MDlDNFx1MDlDN1x1MDlDOFx1MDlDQi1cdTA5Q0RcdTA5RDdcdTA5RTJcdTA5RTNcdTA5RkVcdTBBMDEtXHUwQTAzXHUwQTNDXHUwQTNFLVx1MEE0Mlx1MEE0N1x1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTFcdTBBNzBcdTBBNzFcdTBBNzVcdTBBODEtXHUwQTgzXHUwQUJDXHUwQUJFLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUUyXHUwQUUzXHUwQUZBLVx1MEFGRlx1MEIwMS1cdTBCMDNcdTBCM0NcdTBCM0UtXHUwQjQ0XHUwQjQ3XHUwQjQ4XHUwQjRCLVx1MEI0RFx1MEI1Nlx1MEI1N1x1MEI2Mlx1MEI2M1x1MEI4Mlx1MEJCRS1cdTBCQzJcdTBCQzYtXHUwQkM4XHUwQkNBLVx1MEJDRFx1MEJEN1x1MEMwMC1cdTBDMDRcdTBDM0UtXHUwQzQ0XHUwQzQ2LVx1MEM0OFx1MEM0QS1cdTBDNERcdTBDNTVcdTBDNTZcdTBDNjJcdTBDNjNcdTBDODEtXHUwQzgzXHUwQ0JDXHUwQ0JFLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1XHUwQ0Q2XHUwQ0UyXHUwQ0UzXHUwRDAwLVx1MEQwM1x1MEQzQlx1MEQzQ1x1MEQzRS1cdTBENDRcdTBENDYtXHUwRDQ4XHUwRDRBLVx1MEQ0RFx1MEQ1N1x1MEQ2Mlx1MEQ2M1x1MEQ4Mlx1MEQ4M1x1MERDQVx1MERDRi1cdTBERDRcdTBERDZcdTBERDgtXHUwRERGXHUwREYyXHUwREYzXHUwRTMxXHUwRTM0LVx1MEUzQVx1MEU0Ny1cdTBFNEVcdTBFQjFcdTBFQjQtXHUwRUI5XHUwRUJCXHUwRUJDXHUwRUM4LVx1MEVDRFx1MEYxOFx1MEYxOVx1MEYzNVx1MEYzN1x1MEYzOVx1MEYzRVx1MEYzRlx1MEY3MS1cdTBGODRcdTBGODZcdTBGODdcdTBGOEQtXHUwRjk3XHUwRjk5LVx1MEZCQ1x1MEZDNlx1MTAyQi1cdTEwM0VcdTEwNTYtXHUxMDU5XHUxMDVFLVx1MTA2MFx1MTA2Mi1cdTEwNjRcdTEwNjctXHUxMDZEXHUxMDcxLVx1MTA3NFx1MTA4Mi1cdTEwOERcdTEwOEZcdTEwOUEtXHUxMDlEXHUxMzVELVx1MTM1Rlx1MTcxMi1cdTE3MTRcdTE3MzItXHUxNzM0XHUxNzUyXHUxNzUzXHUxNzcyXHUxNzczXHUxN0I0LVx1MTdEM1x1MTdERFx1MTgwQi1cdTE4MERcdTE4ODVcdTE4ODZcdTE4QTlcdTE5MjAtXHUxOTJCXHUxOTMwLVx1MTkzQlx1MUExNy1cdTFBMUJcdTFBNTUtXHUxQTVFXHUxQTYwLVx1MUE3Q1x1MUE3Rlx1MUFCMC1cdTFBQkVcdTFCMDAtXHUxQjA0XHUxQjM0LVx1MUI0NFx1MUI2Qi1cdTFCNzNcdTFCODAtXHUxQjgyXHUxQkExLVx1MUJBRFx1MUJFNi1cdTFCRjNcdTFDMjQtXHUxQzM3XHUxQ0QwLVx1MUNEMlx1MUNENC1cdTFDRThcdTFDRURcdTFDRjItXHUxQ0Y0XHUxQ0Y3LVx1MUNGOVx1MURDMC1cdTFERjlcdTFERkItXHUxREZGXHUyMEQwLVx1MjBGMFx1MkNFRi1cdTJDRjFcdTJEN0ZcdTJERTAtXHUyREZGXHUzMDJBLVx1MzAyRlx1MzA5OVx1MzA5QVx1QTY2Ri1cdUE2NzJcdUE2NzQtXHVBNjdEXHVBNjlFXHVBNjlGXHVBNkYwXHVBNkYxXHVBODAyXHVBODA2XHVBODBCXHVBODIzLVx1QTgyN1x1QTg4MFx1QTg4MVx1QThCNC1cdUE4QzVcdUE4RTAtXHVBOEYxXHVBOEZGXHVBOTI2LVx1QTkyRFx1QTk0Ny1cdUE5NTNcdUE5ODAtXHVBOTgzXHVBOUIzLVx1QTlDMFx1QTlFNVx1QUEyOS1cdUFBMzZcdUFBNDNcdUFBNENcdUFBNERcdUFBN0ItXHVBQTdEXHVBQUIwXHVBQUIyLVx1QUFCNFx1QUFCN1x1QUFCOFx1QUFCRVx1QUFCRlx1QUFDMVx1QUFFQi1cdUFBRUZcdUFBRjVcdUFBRjZcdUFCRTMtXHVBQkVBXHVBQkVDXHVBQkVEXHVGQjFFXHVGRTAwLVx1RkUwRlx1RkUyMC1cdUZFMkZdL2csIiIpLnJlcGxhY2UoenMsZT0+YmFbZV0pOnQ9PnQ7Y2xhc3MgRHR7Y29uc3RydWN0b3IoZSx7bG9jYXRpb246YT1ULmxvY2F0aW9uLHRocmVzaG9sZDpzPVQudGhyZXNob2xkLGRpc3RhbmNlOm49VC5kaXN0YW5jZSxpbmNsdWRlTWF0Y2hlczppPVQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6Yz1ULmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpkPVQubWluTWF0Y2hDaGFyTGVuZ3RoLGlzQ2FzZVNlbnNpdGl2ZTpyPVQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6bT1ULmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246cD1ULmlnbm9yZUxvY2F0aW9ufT17fSl7aWYodGhpcy5vcHRpb25zPXtsb2NhdGlvbjphLHRocmVzaG9sZDpzLGRpc3RhbmNlOm4saW5jbHVkZU1hdGNoZXM6aSxmaW5kQWxsTWF0Y2hlczpjLG1pbk1hdGNoQ2hhckxlbmd0aDpkLGlzQ2FzZVNlbnNpdGl2ZTpyLGlnbm9yZURpYWNyaXRpY3M6bSxpZ25vcmVMb2NhdGlvbjpwfSxlPXI/ZTplLnRvTG93ZXJDYXNlKCksZT1tP1JlKGUpOmUsdGhpcy5wYXR0ZXJuPWUsdGhpcy5jaHVua3M9W10sIXRoaXMucGF0dGVybi5sZW5ndGgpcmV0dXJuO2NvbnN0IGg9KHUsZyk9Pnt0aGlzLmNodW5rcy5wdXNoKHtwYXR0ZXJuOnUsYWxwaGFiZXQ6X3ModSksc3RhcnRJbmRleDpnfSl9LG89dGhpcy5wYXR0ZXJuLmxlbmd0aDtpZihvPkllKXtsZXQgdT0wO2NvbnN0IGc9byVJZSx2PW8tZztmb3IoO3U8djspaCh0aGlzLnBhdHRlcm4uc3Vic3RyKHUsSWUpLHUpLHUrPUllO2lmKGcpe2NvbnN0IHg9by1JZTtoKHRoaXMucGF0dGVybi5zdWJzdHIoeCkseCl9fWVsc2UgaCh0aGlzLnBhdHRlcm4sMCl9c2VhcmNoSW4oZSl7Y29uc3R7aXNDYXNlU2Vuc2l0aXZlOmEsaWdub3JlRGlhY3JpdGljczpzLGluY2x1ZGVNYXRjaGVzOm59PXRoaXMub3B0aW9ucztpZihlPWE/ZTplLnRvTG93ZXJDYXNlKCksZT1zP1JlKGUpOmUsdGhpcy5wYXR0ZXJuPT09ZSl7Y29uc3Qgdj17aXNNYXRjaDohMCxzY29yZTowfTtyZXR1cm4gbiYmKHYuaW5kaWNlcz1bWzAsZS5sZW5ndGgtMV1dKSx2fWNvbnN0e2xvY2F0aW9uOmksZGlzdGFuY2U6Yyx0aHJlc2hvbGQ6ZCxmaW5kQWxsTWF0Y2hlczpyLG1pbk1hdGNoQ2hhckxlbmd0aDptLGlnbm9yZUxvY2F0aW9uOnB9PXRoaXMub3B0aW9ucyxoPVtdO2xldCBvPTAsdT0hMTt0aGlzLmNodW5rcy5mb3JFYWNoKCh7cGF0dGVybjp2LGFscGhhYmV0Ongsc3RhcnRJbmRleDpJfSk9Pntjb25zdHtpc01hdGNoOlMsc2NvcmU6YixpbmRpY2VzOnl9PU9zKGUsdix4LHtsb2NhdGlvbjppK0ksZGlzdGFuY2U6Yyx0aHJlc2hvbGQ6ZCxmaW5kQWxsTWF0Y2hlczpyLG1pbk1hdGNoQ2hhckxlbmd0aDptLGluY2x1ZGVNYXRjaGVzOm4saWdub3JlTG9jYXRpb246cH0pO1MmJih1PSEwKSxvKz1iLFMmJnkmJmgucHVzaCguLi55KX0pO2NvbnN0IGc9e2lzTWF0Y2g6dSxzY29yZTp1P28vdGhpcy5jaHVua3MubGVuZ3RoOjF9O3JldHVybiB1JiZuJiYoZy5pbmRpY2VzPUN0KGgpKSxnfX1jbGFzcyBiZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnBhdHRlcm49ZX1zdGF0aWMgaXNNdWx0aU1hdGNoKGUpe3JldHVybiBqdChlLHRoaXMubXVsdGlSZWdleCl9c3RhdGljIGlzU2luZ2xlTWF0Y2goZSl7cmV0dXJuIGp0KGUsdGhpcy5zaW5nbGVSZWdleCl9c2VhcmNoKGUpe3JldHVybntpc01hdGNoOiExLHNjb3JlOjF9fX1mdW5jdGlvbiBqdCh0LGUpe2NvbnN0IGE9dC5tYXRjaChlKTtyZXR1cm4gYT9hWzFdOm51bGx9Y2xhc3MgRnMgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9ePSIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXj0oLiopJC99c2VhcmNoKGUpe2NvbnN0IGE9ZT09PXRoaXMucGF0dGVybjtyZXR1cm57aXNNYXRjaDphLHNjb3JlOmE/MDoxLGluZGljZXM6WzAsdGhpcy5wYXR0ZXJuLmxlbmd0aC0xXX19fWNsYXNzIFBzIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImludmVyc2UtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eISIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXiEoLiopJC99c2VhcmNoKGUpe2NvbnN0IHM9ZS5pbmRleE9mKHRoaXMucGF0dGVybik9PT0tMTtyZXR1cm57aXNNYXRjaDpzLHNjb3JlOnM/MDoxLGluZGljZXM6WzAsZS5sZW5ndGgtMV19fX1jbGFzcyBxcyBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfXN0YXRpYyBnZXQgdHlwZSgpe3JldHVybiJwcmVmaXgtZXhhY3QifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eXF4iKC4qKSIkL31zdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCl7cmV0dXJuL15cXiguKikkL31zZWFyY2goZSl7Y29uc3QgYT1lLnN0YXJ0c1dpdGgodGhpcy5wYXR0ZXJuKTtyZXR1cm57aXNNYXRjaDphLHNjb3JlOmE/MDoxLGluZGljZXM6WzAsdGhpcy5wYXR0ZXJuLmxlbmd0aC0xXX19fWNsYXNzIFJzIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImludmVyc2UtcHJlZml4LWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiFcXiIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXiFcXiguKikkL31zZWFyY2goZSl7Y29uc3QgYT0hZS5zdGFydHNXaXRoKHRoaXMucGF0dGVybik7cmV0dXJue2lzTWF0Y2g6YSxzY29yZTphPzA6MSxpbmRpY2VzOlswLGUubGVuZ3RoLTFdfX19Y2xhc3MgTnMgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4ic3VmZml4LWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiIoLiopIlwkJC99c3RhdGljIGdldCBzaW5nbGVSZWdleCgpe3JldHVybi9eKC4qKVwkJC99c2VhcmNoKGUpe2NvbnN0IGE9ZS5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOmEsc2NvcmU6YT8wOjEsaW5kaWNlczpbZS5sZW5ndGgtdGhpcy5wYXR0ZXJuLmxlbmd0aCxlLmxlbmd0aC0xXX19fWNsYXNzIEtzIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImludmVyc2Utc3VmZml4LWV4YWN0In1zdGF0aWMgZ2V0IG11bHRpUmVnZXgoKXtyZXR1cm4vXiEiKC4qKSJcJCQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXiEoLiopXCQkL31zZWFyY2goZSl7Y29uc3QgYT0hZS5lbmRzV2l0aCh0aGlzLnBhdHRlcm4pO3JldHVybntpc01hdGNoOmEsc2NvcmU6YT8wOjEsaW5kaWNlczpbMCxlLmxlbmd0aC0xXX19fWNsYXNzIHdhIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSx7bG9jYXRpb246YT1ULmxvY2F0aW9uLHRocmVzaG9sZDpzPVQudGhyZXNob2xkLGRpc3RhbmNlOm49VC5kaXN0YW5jZSxpbmNsdWRlTWF0Y2hlczppPVQuaW5jbHVkZU1hdGNoZXMsZmluZEFsbE1hdGNoZXM6Yz1ULmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDpkPVQubWluTWF0Y2hDaGFyTGVuZ3RoLGlzQ2FzZVNlbnNpdGl2ZTpyPVQuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6bT1ULmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246cD1ULmlnbm9yZUxvY2F0aW9ufT17fSl7c3VwZXIoZSksdGhpcy5fYml0YXBTZWFyY2g9bmV3IER0KGUse2xvY2F0aW9uOmEsdGhyZXNob2xkOnMsZGlzdGFuY2U6bixpbmNsdWRlTWF0Y2hlczppLGZpbmRBbGxNYXRjaGVzOmMsbWluTWF0Y2hDaGFyTGVuZ3RoOmQsaXNDYXNlU2Vuc2l0aXZlOnIsaWdub3JlRGlhY3JpdGljczptLGlnbm9yZUxvY2F0aW9uOnB9KX1zdGF0aWMgZ2V0IHR5cGUoKXtyZXR1cm4iZnV6enkifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eIiguKikiJC99c3RhdGljIGdldCBzaW5nbGVSZWdleCgpe3JldHVybi9eKC4qKSQvfXNlYXJjaChlKXtyZXR1cm4gdGhpcy5fYml0YXBTZWFyY2guc2VhcmNoSW4oZSl9fWNsYXNzIHhhIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSl9c3RhdGljIGdldCB0eXBlKCl7cmV0dXJuImluY2x1ZGUifXN0YXRpYyBnZXQgbXVsdGlSZWdleCgpe3JldHVybi9eJyIoLiopIiQvfXN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKXtyZXR1cm4vXicoLiopJC99c2VhcmNoKGUpe2xldCBhPTAscztjb25zdCBuPVtdLGk9dGhpcy5wYXR0ZXJuLmxlbmd0aDtmb3IoOyhzPWUuaW5kZXhPZih0aGlzLnBhdHRlcm4sYSkpPi0xOylhPXMraSxuLnB1c2goW3MsYS0xXSk7Y29uc3QgYz0hIW4ubGVuZ3RoO3JldHVybntpc01hdGNoOmMsc2NvcmU6Yz8wOjEsaW5kaWNlczpufX19Y29uc3QgbXQ9W0ZzLHhhLHFzLFJzLEtzLE5zLFBzLHdhXSxIdD1tdC5sZW5ndGgsVXM9IlwwIixqcz0ifCI7ZnVuY3Rpb24gSHModCl7Y29uc3QgZT1bXSxhPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPGE7KXtmb3IoO3M8YSYmdFtzXT09PSIgIjspcysrO2lmKHM+PWEpYnJlYWs7bGV0IG49cztmb3IoO248YSYmdFtuXSE9PSIgIiYmdFtuXSE9PSciJzspbisrO2lmKG48YSYmdFtuXT09PSciJyl7Zm9yKG4rKztuPGE7KXtpZih0W25dPT09JyInKXtjb25zdCBpPW4rMTtpZihpPj1hfHx0W2ldPT09IiAiKXtuKys7YnJlYWt9aWYodFtpXT09PSIkIiYmKGkrMT49YXx8dFtpKzFdPT09IiAiKSl7bis9MjticmVha319bisrfWUucHVzaCh0LnN1YnN0cmluZyhzLG4pKSxzPW59ZWxzZXtmb3IoO248YSYmdFtuXSE9PSIgIjspbisrO2UucHVzaCh0LnN1YnN0cmluZyhzLG4pKSxzPW59fXJldHVybiBlfWZ1bmN0aW9uIFdzKHQsZT17fSl7cmV0dXJuIHQucmVwbGFjZSgvXFxcfC9nLFVzKS5zcGxpdChqcykubWFwKHM9Pntjb25zdCBuPXMucmVwbGFjZSgvXHUwMDAwL2csInwiKSxpPUhzKG4udHJpbSgpKS5maWx0ZXIoZD0+ZCYmISFkLnRyaW0oKSksYz1bXTtmb3IobGV0IGQ9MCxyPWkubGVuZ3RoO2Q8cjtkKz0xKXtjb25zdCBtPWlbZF07bGV0IHA9ITEsaD0tMTtmb3IoOyFwJiYrK2g8SHQ7KXtjb25zdCBvPW10W2hdLHU9by5pc011bHRpTWF0Y2gobSk7dSYmKGMucHVzaChuZXcgbyh1LGUpKSxwPSEwKX1pZighcClmb3IoaD0tMTsrK2g8SHQ7KXtjb25zdCBvPW10W2hdLHU9by5pc1NpbmdsZU1hdGNoKG0pO2lmKHUpe2MucHVzaChuZXcgbyh1LGUpKTticmVha319fXJldHVybiBjfSl9Y29uc3QgVnM9bmV3IFNldChbd2EudHlwZSx4YS50eXBlXSk7Y2xhc3MgR3N7Y29uc3RydWN0b3IoZSx7aXNDYXNlU2Vuc2l0aXZlOmE9VC5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczpzPVQuaWdub3JlRGlhY3JpdGljcyxpbmNsdWRlTWF0Y2hlczpuPVQuaW5jbHVkZU1hdGNoZXMsbWluTWF0Y2hDaGFyTGVuZ3RoOmk9VC5taW5NYXRjaENoYXJMZW5ndGgsaWdub3JlTG9jYXRpb246Yz1ULmlnbm9yZUxvY2F0aW9uLGZpbmRBbGxNYXRjaGVzOmQ9VC5maW5kQWxsTWF0Y2hlcyxsb2NhdGlvbjpyPVQubG9jYXRpb24sdGhyZXNob2xkOm09VC50aHJlc2hvbGQsZGlzdGFuY2U6cD1ULmRpc3RhbmNlfT17fSl7dGhpcy5xdWVyeT1udWxsLHRoaXMub3B0aW9ucz17aXNDYXNlU2Vuc2l0aXZlOmEsaWdub3JlRGlhY3JpdGljczpzLGluY2x1ZGVNYXRjaGVzOm4sbWluTWF0Y2hDaGFyTGVuZ3RoOmksZmluZEFsbE1hdGNoZXM6ZCxpZ25vcmVMb2NhdGlvbjpjLGxvY2F0aW9uOnIsdGhyZXNob2xkOm0sZGlzdGFuY2U6cH0sZT1hP2U6ZS50b0xvd2VyQ2FzZSgpLGU9cz9SZShlKTplLHRoaXMucGF0dGVybj1lLHRoaXMucXVlcnk9V3ModGhpcy5wYXR0ZXJuLHRoaXMub3B0aW9ucyl9c3RhdGljIGNvbmRpdGlvbihlLGEpe3JldHVybiBhLnVzZUV4dGVuZGVkU2VhcmNofXNlYXJjaEluKGUpe2NvbnN0IGE9dGhpcy5xdWVyeTtpZighYSlyZXR1cm57aXNNYXRjaDohMSxzY29yZToxfTtjb25zdHtpbmNsdWRlTWF0Y2hlczpzLGlzQ2FzZVNlbnNpdGl2ZTpuLGlnbm9yZURpYWNyaXRpY3M6aX09dGhpcy5vcHRpb25zO2U9bj9lOmUudG9Mb3dlckNhc2UoKSxlPWk/UmUoZSk6ZTtsZXQgYz0wO2NvbnN0IGQ9W107bGV0IHI9MCxtPSExO2ZvcihsZXQgcD0wLGg9YS5sZW5ndGg7cDxoO3ArPTEpe2NvbnN0IG89YVtwXTtkLmxlbmd0aD0wLGM9MCxtPSExO2ZvcihsZXQgdT0wLGc9by5sZW5ndGg7dTxnO3UrPTEpe2NvbnN0IHY9b1t1XSx7aXNNYXRjaDp4LGluZGljZXM6SSxzY29yZTpTfT12LnNlYXJjaChlKTtpZih4KXtjKz0xLHIrPVM7Y29uc3QgYj12LmNvbnN0cnVjdG9yLnR5cGU7Yi5zdGFydHNXaXRoKCJpbnZlcnNlIikmJihtPSEwKSxzJiYoVnMuaGFzKGIpP2QucHVzaCguLi5JKTpkLnB1c2goSSkpfWVsc2V7cj0wLGM9MCxkLmxlbmd0aD0wLG09ITE7YnJlYWt9fWlmKGMpe2NvbnN0IHU9e2lzTWF0Y2g6ITAsc2NvcmU6ci9jfTtyZXR1cm4gbSYmKHUuaGFzSW52ZXJzZT0hMCkscyYmKHUuaW5kaWNlcz1DdChkKSksdX19cmV0dXJue2lzTWF0Y2g6ITEsc2NvcmU6MX19fWNvbnN0IHZ0PVtdO2Z1bmN0aW9uIFR0KC4uLnQpe3Z0LnB1c2goLi4udCl9ZnVuY3Rpb24gZXQodCxlKXtmb3IobGV0IGE9MCxzPXZ0Lmxlbmd0aDthPHM7YSs9MSl7Y29uc3Qgbj12dFthXTtpZihuLmNvbmRpdGlvbih0LGUpKXJldHVybiBuZXcgbih0LGUpfXJldHVybiBuZXcgRHQodCxlKX1jb25zdCB0dD17QU5EOiIkYW5kIixPUjoiJG9yIn0sZ3Q9e1BBVEg6IiRwYXRoIixQQVRURVJOOiIkdmFsIn0seXQ9dD0+ISEodFt0dC5BTkRdfHx0W3R0Lk9SXSksWXM9dD0+ISF0W2d0LlBBVEhdLFhzPXQ9PiF5ZSh0KSYmbWEodCkmJiF5dCh0KSxXdD10PT4oe1t0dC5BTkRdOk9iamVjdC5rZXlzKHQpLm1hcChlPT4oe1tlXTp0W2VdfSkpfSk7ZnVuY3Rpb24gU2EodCxlLHthdXRvOmE9ITB9PXt9KXtjb25zdCBzPW49PntpZihsZShuKSl7Y29uc3Qgcj17a2V5SWQ6bnVsbCxwYXR0ZXJuOm59O3JldHVybiBhJiYoci5zZWFyY2hlcj1ldChuLGUpKSxyfWNvbnN0IGk9T2JqZWN0LmtleXMobiksYz1ZcyhuKTtpZighYyYmaS5sZW5ndGg+MSYmIXl0KG4pKXJldHVybiBzKFd0KG4pKTtpZihYcyhuKSl7Y29uc3Qgcj1jP25bZ3QuUEFUSF06aVswXSxtPWM/bltndC5QQVRURVJOXTpuW3JdO2lmKCFsZShtKSl0aHJvdyBuZXcgRXJyb3Iod3MocikpO2NvbnN0IHA9e2tleUlkOmh0KHIpLHBhdHRlcm46bX07cmV0dXJuIGEmJihwLnNlYXJjaGVyPWV0KG0sZSkpLHB9Y29uc3QgZD17Y2hpbGRyZW46W10sb3BlcmF0b3I6aVswXX07cmV0dXJuIGkuZm9yRWFjaChyPT57Y29uc3QgbT1uW3JdO3llKG0pJiZtLmZvckVhY2gocD0+e2QuY2hpbGRyZW4ucHVzaChzKHApKX0pfSksZH07cmV0dXJuIHl0KHQpfHwodD1XdCh0KSkscyh0KX1mdW5jdGlvbiBidCh0LHtpZ25vcmVGaWVsZE5vcm06ZT1ULmlnbm9yZUZpZWxkTm9ybX0pe2xldCBhPTE7cmV0dXJuIHQuZm9yRWFjaCgoe2tleTpzLG5vcm06bixzY29yZTppfSk9Pntjb25zdCBjPXM/cy53ZWlnaHQ6bnVsbDthKj1NYXRoLnBvdyhpPT09MCYmYz9OdW1iZXIuRVBTSUxPTjppLChjfHwxKSooZT8xOm4pKX0pLGF9ZnVuY3Rpb24gUXModCx7aWdub3JlRmllbGROb3JtOmU9VC5pZ25vcmVGaWVsZE5vcm19KXt0LmZvckVhY2goYT0+e2Euc2NvcmU9YnQoYS5tYXRjaGVzLHtpZ25vcmVGaWVsZE5vcm06ZX0pfSl9Y2xhc3MgSnN7Y29uc3RydWN0b3IoZSl7dGhpcy5saW1pdD1lLHRoaXMuaGVhcD1bXX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLmhlYXAubGVuZ3RofXNob3VsZEluc2VydChlKXtyZXR1cm4gdGhpcy5zaXplPHRoaXMubGltaXR8fGU8dGhpcy5oZWFwWzBdLnNjb3JlfWluc2VydChlKXt0aGlzLnNpemU8dGhpcy5saW1pdD8odGhpcy5oZWFwLnB1c2goZSksdGhpcy5fYnViYmxlVXAodGhpcy5zaXplLTEpKTplLnNjb3JlPHRoaXMuaGVhcFswXS5zY29yZSYmKHRoaXMuaGVhcFswXT1lLHRoaXMuX3NpbmtEb3duKDApKX1leHRyYWN0U29ydGVkKGUpe3JldHVybiB0aGlzLmhlYXAuc29ydChlKX1fYnViYmxlVXAoZSl7Y29uc3QgYT10aGlzLmhlYXA7Zm9yKDtlPjA7KXtjb25zdCBzPWUtMT4+MTtpZihhW2VdLnNjb3JlPD1hW3NdLnNjb3JlKWJyZWFrO2NvbnN0IG49YVtlXTthW2VdPWFbc10sYVtzXT1uLGU9c319X3NpbmtEb3duKGUpe2NvbnN0IGE9dGhpcy5oZWFwLHM9YS5sZW5ndGg7bGV0IG49ZTtkb3tlPW47Y29uc3QgaT0yKmUrMSxjPTIqZSsyO2lmKGk8cyYmYVtpXS5zY29yZT5hW25dLnNjb3JlJiYobj1pKSxjPHMmJmFbY10uc2NvcmU+YVtuXS5zY29yZSYmKG49YyksbiE9PWUpe2NvbnN0IGQ9YVtlXTthW2VdPWFbbl0sYVtuXT1kfX13aGlsZShuIT09ZSl9fWZ1bmN0aW9uIFpzKHQsZSl7Y29uc3QgYT10Lm1hdGNoZXM7ZS5tYXRjaGVzPVtdLHJlKGEpJiZhLmZvckVhY2gocz0+e2lmKCFyZShzLmluZGljZXMpfHwhcy5pbmRpY2VzLmxlbmd0aClyZXR1cm47Y29uc3R7aW5kaWNlczpuLHZhbHVlOml9PXMsYz17aW5kaWNlczpuLHZhbHVlOml9O3Mua2V5JiYoYy5rZXk9cy5rZXkuc3JjKSxzLmlkeD4tMSYmKGMucmVmSW5kZXg9cy5pZHgpLGUubWF0Y2hlcy5wdXNoKGMpfSl9ZnVuY3Rpb24gZWkodCxlKXtlLnNjb3JlPXQuc2NvcmV9ZnVuY3Rpb24gdGkodCxlLHtpbmNsdWRlTWF0Y2hlczphPVQuaW5jbHVkZU1hdGNoZXMsaW5jbHVkZVNjb3JlOnM9VC5pbmNsdWRlU2NvcmV9PXt9KXtjb25zdCBuPVtdO3JldHVybiBhJiZuLnB1c2goWnMpLHMmJm4ucHVzaChlaSksdC5tYXAoaT0+e2NvbnN0e2lkeDpjfT1pLGQ9e2l0ZW06ZVtjXSxyZWZJbmRleDpjfTtyZXR1cm4gbi5sZW5ndGgmJm4uZm9yRWFjaChyPT57cihpLGQpfSksZH0pfWNvbnN0IGFpPS9cYlx3K1xiL2c7ZnVuY3Rpb24gd3Qoe2lzQ2FzZVNlbnNpdGl2ZTp0PSExLGlnbm9yZURpYWNyaXRpY3M6ZT0hMX09e30pe3JldHVybnt0b2tlbml6ZShhKXtyZXR1cm4gdHx8KGE9YS50b0xvd2VyQ2FzZSgpKSxlJiYoYT1SZShhKSksYS5tYXRjaChhaSl8fFtdfX19ZnVuY3Rpb24gbmkodCxlLGEpe2NvbnN0IHM9bmV3IE1hcCxuPW5ldyBNYXA7bGV0IGk9MDtmdW5jdGlvbiBjKGQscixtLHApe2NvbnN0IGg9YS50b2tlbml6ZShkKTtpZighaC5sZW5ndGgpcmV0dXJuO2krKztjb25zdCBvPW5ldyBNYXA7Zm9yKGNvbnN0IHUgb2YgaClvLnNldCh1LChvLmdldCh1KXx8MCkrMSk7Zm9yKGNvbnN0W3UsZ11vZiBvKXtjb25zdCB2PXtkb2NJZHg6cixrZXlJZHg6bSxzdWJJZHg6cCx0ZjpnfTtsZXQgeD1zLmdldCh1KTt4fHwoeD1bXSxzLnNldCh1LHgpKSx4LnB1c2godiksbi5zZXQodSwobi5nZXQodSl8fDApKzEpfX1mb3IoY29uc3QgZCBvZiB0KXtjb25zdHtpOnIsdjptLCQ6cH09ZDtpZihtIT09dm9pZCAwKXtjKG0sciwtMSwtMSk7Y29udGludWV9aWYocClmb3IobGV0IGg9MDtoPGU7aCsrKXtjb25zdCBvPXBbaF07aWYobylpZihBcnJheS5pc0FycmF5KG8pKWZvcihjb25zdCB1IG9mIG8pYyh1LnYscixoLHUuaT8/LTEpO2Vsc2UgYyhvLnYscixoLC0xKX19cmV0dXJue3Rlcm1zOnMsZmllbGRDb3VudDppLGRmOm59fWZ1bmN0aW9uIHNpKHQsZSxhLHMpe2NvbnN0e2k6bix2OmksJDpjfT1lO2Z1bmN0aW9uIGQocixtLHApe2NvbnN0IGg9cy50b2tlbml6ZShyKTtpZighaC5sZW5ndGgpcmV0dXJuO3QuZmllbGRDb3VudCsrO2NvbnN0IG89bmV3IE1hcDtmb3IoY29uc3QgdSBvZiBoKW8uc2V0KHUsKG8uZ2V0KHUpfHwwKSsxKTtmb3IoY29uc3RbdSxnXW9mIG8pe2NvbnN0IHY9e2RvY0lkeDpuLGtleUlkeDptLHN1YklkeDpwLHRmOmd9O2xldCB4PXQudGVybXMuZ2V0KHUpO3h8fCh4PVtdLHQudGVybXMuc2V0KHUseCkpLHgucHVzaCh2KSx0LmRmLnNldCh1LCh0LmRmLmdldCh1KXx8MCkrMSl9fWlmKGkhPT12b2lkIDApe2QoaSwtMSwtMSk7cmV0dXJufWlmKGMpZm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgbT1jW3JdO2lmKG0paWYoQXJyYXkuaXNBcnJheShtKSlmb3IoY29uc3QgcCBvZiBtKWQocC52LHIscC5pPz8tMSk7ZWxzZSBkKG0udixyLC0xKX19ZnVuY3Rpb24gVnQodCxlKXtmb3IoY29uc3RbYSxzXW9mIHQudGVybXMpe2NvbnN0IG49cy5maWx0ZXIoYz0+Yy5kb2NJZHghPT1lKSxpPXMubGVuZ3RoLW4ubGVuZ3RoO2k+MCYmKHQuZmllbGRDb3VudC09aSx0LmRmLnNldChhLCh0LmRmLmdldChhKXx8MCktaSksbi5sZW5ndGg9PT0wPyh0LnRlcm1zLmRlbGV0ZShhKSx0LmRmLmRlbGV0ZShhKSk6dC50ZXJtcy5zZXQoYSxuKSl9fWNsYXNzIHdle2NvbnN0cnVjdG9yKGUsYSxzKXt0aGlzLm9wdGlvbnM9ey4uLlQsLi4uYX0sdGhpcy5vcHRpb25zLnVzZUV4dGVuZGVkU2VhcmNoLHRoaXMub3B0aW9ucy51c2VUb2tlblNlYXJjaCx0aGlzLl9rZXlTdG9yZT1uZXcgSXModGhpcy5vcHRpb25zLmtleXMpLHRoaXMuX2RvY3M9ZSx0aGlzLl9teUluZGV4PW51bGwsdGhpcy5faW52ZXJ0ZWRJbmRleD1udWxsLHRoaXMuc2V0Q29sbGVjdGlvbihlLHMpLHRoaXMuX2xhc3RRdWVyeT1udWxsLHRoaXMuX2xhc3RTZWFyY2hlcj1udWxsfV9nZXRTZWFyY2hlcihlKXtpZih0aGlzLl9sYXN0UXVlcnk9PT1lKXJldHVybiB0aGlzLl9sYXN0U2VhcmNoZXI7Y29uc3QgYT10aGlzLl9pbnZlcnRlZEluZGV4P3suLi50aGlzLm9wdGlvbnMsX2ludmVydGVkSW5kZXg6dGhpcy5faW52ZXJ0ZWRJbmRleH06dGhpcy5vcHRpb25zLHM9ZXQoZSxhKTtyZXR1cm4gdGhpcy5fbGFzdFF1ZXJ5PWUsdGhpcy5fbGFzdFNlYXJjaGVyPXMsc31zZXRDb2xsZWN0aW9uKGUsYSl7aWYodGhpcy5fZG9jcz1lLGEmJiEoYSBpbnN0YW5jZW9mIEJ0KSl0aHJvdyBuZXcgRXJyb3IoYnMpO2lmKHRoaXMuX215SW5kZXg9YXx8eWEodGhpcy5vcHRpb25zLmtleXMsdGhpcy5fZG9jcyx7Z2V0Rm46dGhpcy5vcHRpb25zLmdldEZuLGZpZWxkTm9ybVdlaWdodDp0aGlzLm9wdGlvbnMuZmllbGROb3JtV2VpZ2h0fSksdGhpcy5vcHRpb25zLnVzZVRva2VuU2VhcmNoKXtjb25zdCBzPXd0KHtpc0Nhc2VTZW5zaXRpdmU6dGhpcy5vcHRpb25zLmlzQ2FzZVNlbnNpdGl2ZSxpZ25vcmVEaWFjcml0aWNzOnRoaXMub3B0aW9ucy5pZ25vcmVEaWFjcml0aWNzfSk7dGhpcy5faW52ZXJ0ZWRJbmRleD1uaSh0aGlzLl9teUluZGV4LnJlY29yZHMsdGhpcy5fbXlJbmRleC5rZXlzLmxlbmd0aCxzKX19YWRkKGUpe2lmKHJlKGUpJiYodGhpcy5fZG9jcy5wdXNoKGUpLHRoaXMuX215SW5kZXguYWRkKGUpLHRoaXMuX2ludmVydGVkSW5kZXgpKXtjb25zdCBhPXRoaXMuX215SW5kZXgucmVjb3Jkc1t0aGlzLl9teUluZGV4LnJlY29yZHMubGVuZ3RoLTFdLHM9d3Qoe2lzQ2FzZVNlbnNpdGl2ZTp0aGlzLm9wdGlvbnMuaXNDYXNlU2Vuc2l0aXZlLGlnbm9yZURpYWNyaXRpY3M6dGhpcy5vcHRpb25zLmlnbm9yZURpYWNyaXRpY3N9KTtzaSh0aGlzLl9pbnZlcnRlZEluZGV4LGEsdGhpcy5fbXlJbmRleC5rZXlzLmxlbmd0aCxzKX19cmVtb3ZlKGU9KCk9PiExKXtjb25zdCBhPVtdLHM9W107Zm9yKGxldCBuPTAsaT10aGlzLl9kb2NzLmxlbmd0aDtuPGk7bis9MSllKHRoaXMuX2RvY3Nbbl0sbikmJihhLnB1c2godGhpcy5fZG9jc1tuXSkscy5wdXNoKG4pKTtpZihzLmxlbmd0aCl7aWYodGhpcy5faW52ZXJ0ZWRJbmRleClmb3IoY29uc3QgbiBvZiBzKVZ0KHRoaXMuX2ludmVydGVkSW5kZXgsbik7Zm9yKGxldCBuPXMubGVuZ3RoLTE7bj49MDtuLT0xKXRoaXMuX2RvY3Muc3BsaWNlKHNbbl0sMSk7dGhpcy5fbXlJbmRleC5yZW1vdmVBbGwocyl9cmV0dXJuIGF9cmVtb3ZlQXQoZSl7dGhpcy5faW52ZXJ0ZWRJbmRleCYmVnQodGhpcy5faW52ZXJ0ZWRJbmRleCxlKTtjb25zdCBhPXRoaXMuX2RvY3Muc3BsaWNlKGUsMSlbMF07cmV0dXJuIHRoaXMuX215SW5kZXgucmVtb3ZlQXQoZSksYX1nZXRJbmRleCgpe3JldHVybiB0aGlzLl9teUluZGV4fXNlYXJjaChlLGEpe2NvbnN0e2xpbWl0OnM9LTF9PWF8fHt9LHtpbmNsdWRlTWF0Y2hlczpuLGluY2x1ZGVTY29yZTppLHNob3VsZFNvcnQ6Yyxzb3J0Rm46ZCxpZ25vcmVGaWVsZE5vcm06cn09dGhpcy5vcHRpb25zO2lmKGxlKGUpJiYhZS50cmltKCkpe2xldCBoPXRoaXMuX2RvY3MubWFwKChvLHUpPT4oe2l0ZW06byxyZWZJbmRleDp1fSkpO3JldHVybiBZZShzKSYmcz4tMSYmKGg9aC5zbGljZSgwLHMpKSxofWNvbnN0IG09WWUocykmJnM+MCYmbGUoZSk7bGV0IHA7aWYobSl7Y29uc3QgaD1uZXcgSnMocyk7bGUodGhpcy5fZG9jc1swXSk/dGhpcy5fc2VhcmNoU3RyaW5nTGlzdChlLHtoZWFwOmgsaWdub3JlRmllbGROb3JtOnJ9KTp0aGlzLl9zZWFyY2hPYmplY3RMaXN0KGUse2hlYXA6aCxpZ25vcmVGaWVsZE5vcm06cn0pLHA9aC5leHRyYWN0U29ydGVkKGQpfWVsc2UgcD1sZShlKT9sZSh0aGlzLl9kb2NzWzBdKT90aGlzLl9zZWFyY2hTdHJpbmdMaXN0KGUpOnRoaXMuX3NlYXJjaE9iamVjdExpc3QoZSk6dGhpcy5fc2VhcmNoTG9naWNhbChlKSxRcyhwLHtpZ25vcmVGaWVsZE5vcm06cn0pLGMmJnAuc29ydChkKSxZZShzKSYmcz4tMSYmKHA9cC5zbGljZSgwLHMpKTtyZXR1cm4gdGkocCx0aGlzLl9kb2NzLHtpbmNsdWRlTWF0Y2hlczpuLGluY2x1ZGVTY29yZTppfSl9X3NlYXJjaFN0cmluZ0xpc3QoZSx7aGVhcDphLGlnbm9yZUZpZWxkTm9ybTpzfT17fSl7Y29uc3Qgbj10aGlzLl9nZXRTZWFyY2hlcihlKSx7cmVjb3JkczppfT10aGlzLl9teUluZGV4LGM9YT9udWxsOltdO3JldHVybiBpLmZvckVhY2goKHt2OmQsaTpyLG46bX0pPT57aWYoIXJlKGQpKXJldHVybjtjb25zdHtpc01hdGNoOnAsc2NvcmU6aCxpbmRpY2VzOm99PW4uc2VhcmNoSW4oZCk7aWYocCl7Y29uc3QgdT17aXRlbTpkLGlkeDpyLG1hdGNoZXM6W3tzY29yZTpoLHZhbHVlOmQsbm9ybTptLGluZGljZXM6b31dfTthPyh1LnNjb3JlPWJ0KHUubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOnN9KSxhLnNob3VsZEluc2VydCh1LnNjb3JlKSYmYS5pbnNlcnQodSkpOmMucHVzaCh1KX19KSxjfV9zZWFyY2hMb2dpY2FsKGUpe2NvbnN0IGE9U2EoZSx0aGlzLm9wdGlvbnMpLHM9KGQscixtKT0+e2lmKCEoImNoaWxkcmVuImluIGQpKXtjb25zdHtrZXlJZDp1LHNlYXJjaGVyOmd9PWQ7bGV0IHY7cmV0dXJuIHU9PT1udWxsPyh2PVtdLHRoaXMuX215SW5kZXgua2V5cy5mb3JFYWNoKCh4LEkpPT57di5wdXNoKC4uLnRoaXMuX2ZpbmRNYXRjaGVzKHtrZXk6eCx2YWx1ZTpyW0ldLHNlYXJjaGVyOmd9KSl9KSk6dj10aGlzLl9maW5kTWF0Y2hlcyh7a2V5OnRoaXMuX2tleVN0b3JlLmdldCh1KSx2YWx1ZTp0aGlzLl9teUluZGV4LmdldFZhbHVlRm9ySXRlbUF0S2V5SWQocix1KSxzZWFyY2hlcjpnfSksdiYmdi5sZW5ndGg/W3tpZHg6bSxpdGVtOnIsbWF0Y2hlczp2fV06W119Y29uc3R7Y2hpbGRyZW46cCxvcGVyYXRvcjpofT1kLG89W107Zm9yKGxldCB1PTAsZz1wLmxlbmd0aDt1PGc7dSs9MSl7Y29uc3Qgdj1wW3VdLHg9cyh2LHIsbSk7aWYoeC5sZW5ndGgpby5wdXNoKC4uLngpO2Vsc2UgaWYoaD09PXR0LkFORClyZXR1cm5bXX1yZXR1cm4gb30sbj10aGlzLl9teUluZGV4LnJlY29yZHMsaT1uZXcgTWFwLGM9W107cmV0dXJuIG4uZm9yRWFjaCgoeyQ6ZCxpOnJ9KT0+e2lmKHJlKGQpKXtjb25zdCBtPXMoYSxkLHIpO20ubGVuZ3RoJiYoaS5oYXMocil8fChpLnNldChyLHtpZHg6cixpdGVtOmQsbWF0Y2hlczpbXX0pLGMucHVzaChpLmdldChyKSkpLG0uZm9yRWFjaCgoe21hdGNoZXM6cH0pPT57aS5nZXQocikubWF0Y2hlcy5wdXNoKC4uLnApfSkpfX0pLGN9X3NlYXJjaE9iamVjdExpc3QoZSx7aGVhcDphLGlnbm9yZUZpZWxkTm9ybTpzfT17fSl7Y29uc3Qgbj10aGlzLl9nZXRTZWFyY2hlcihlKSx7a2V5czppLHJlY29yZHM6Y309dGhpcy5fbXlJbmRleCxkPWE/bnVsbDpbXTtyZXR1cm4gYy5mb3JFYWNoKCh7JDpyLGk6bX0pPT57aWYoIXJlKHIpKXJldHVybjtjb25zdCBwPVtdO2xldCBoPSExLG89ITE7aWYoaS5mb3JFYWNoKCh1LGcpPT57Y29uc3Qgdj10aGlzLl9maW5kTWF0Y2hlcyh7a2V5OnUsdmFsdWU6cltnXSxzZWFyY2hlcjpufSk7di5sZW5ndGg/KHAucHVzaCguLi52KSx2WzBdLmhhc0ludmVyc2UmJihvPSEwKSk6aD0hMH0pLCEobyYmaCkmJnAubGVuZ3RoKXtjb25zdCB1PXtpZHg6bSxpdGVtOnIsbWF0Y2hlczpwfTthPyh1LnNjb3JlPWJ0KHUubWF0Y2hlcyx7aWdub3JlRmllbGROb3JtOnN9KSxhLnNob3VsZEluc2VydCh1LnNjb3JlKSYmYS5pbnNlcnQodSkpOmQucHVzaCh1KX19KSxkfV9maW5kTWF0Y2hlcyh7a2V5OmUsdmFsdWU6YSxzZWFyY2hlcjpzfSl7aWYoIXJlKGEpKXJldHVybltdO2NvbnN0IG49W107aWYoeWUoYSkpYS5mb3JFYWNoKCh7djppLGk6YyxuOmR9KT0+e2lmKCFyZShpKSlyZXR1cm47Y29uc3R7aXNNYXRjaDpyLHNjb3JlOm0saW5kaWNlczpwLGhhc0ludmVyc2U6aH09cy5zZWFyY2hJbihpKTtyJiZuLnB1c2goe3Njb3JlOm0sa2V5OmUsdmFsdWU6aSxpZHg6Yyxub3JtOmQsaW5kaWNlczpwLGhhc0ludmVyc2U6aH0pfSk7ZWxzZXtjb25zdHt2OmksbjpjfT1hLHtpc01hdGNoOmQsc2NvcmU6cixpbmRpY2VzOm0saGFzSW52ZXJzZTpwfT1zLnNlYXJjaEluKGkpO2QmJm4ucHVzaCh7c2NvcmU6cixrZXk6ZSx2YWx1ZTppLG5vcm06YyxpbmRpY2VzOm0saGFzSW52ZXJzZTpwfSl9cmV0dXJuIG59fWNsYXNzIGlpe3N0YXRpYyBjb25kaXRpb24oZSxhKXtyZXR1cm4gYS51c2VUb2tlblNlYXJjaH1jb25zdHJ1Y3RvcihlLGEpe3RoaXMub3B0aW9ucz1hLHRoaXMuYW5hbHl6ZXI9d3Qoe2lzQ2FzZVNlbnNpdGl2ZTphLmlzQ2FzZVNlbnNpdGl2ZSxpZ25vcmVEaWFjcml0aWNzOmEuaWdub3JlRGlhY3JpdGljc30pO2NvbnN0IHM9dGhpcy5hbmFseXplci50b2tlbml6ZShlKSxuPWEuX2ludmVydGVkSW5kZXgse2RmOmksZmllbGRDb3VudDpjfT1uO3RoaXMudGVybVNlYXJjaGVycz1bXSx0aGlzLmlkZldlaWdodHM9W107Zm9yKGNvbnN0IGQgb2Ygcyl7dGhpcy50ZXJtU2VhcmNoZXJzLnB1c2gobmV3IER0KGQse2xvY2F0aW9uOmEubG9jYXRpb24sdGhyZXNob2xkOmEudGhyZXNob2xkLGRpc3RhbmNlOmEuZGlzdGFuY2UsaW5jbHVkZU1hdGNoZXM6YS5pbmNsdWRlTWF0Y2hlcyxmaW5kQWxsTWF0Y2hlczphLmZpbmRBbGxNYXRjaGVzLG1pbk1hdGNoQ2hhckxlbmd0aDphLm1pbk1hdGNoQ2hhckxlbmd0aCxpc0Nhc2VTZW5zaXRpdmU6YS5pc0Nhc2VTZW5zaXRpdmUsaWdub3JlRGlhY3JpdGljczphLmlnbm9yZURpYWNyaXRpY3MsaWdub3JlTG9jYXRpb246ITB9KSk7Y29uc3Qgcj1pLmdldChkKXx8MCxtPU1hdGgubG9nKDErKGMtcisuNSkvKHIrLjUpKTt0aGlzLmlkZldlaWdodHMucHVzaChtKX19c2VhcmNoSW4oZSl7aWYoIXRoaXMudGVybVNlYXJjaGVycy5sZW5ndGgpcmV0dXJue2lzTWF0Y2g6ITEsc2NvcmU6MX07Y29uc3QgYT1bXTtsZXQgcz0wLG49MCxpPTA7Zm9yKGxldCByPTA7cjx0aGlzLnRlcm1TZWFyY2hlcnMubGVuZ3RoO3IrKyl7Y29uc3QgbT10aGlzLnRlcm1TZWFyY2hlcnNbcl0uc2VhcmNoSW4oZSkscD10aGlzLmlkZldlaWdodHNbcl07bis9cCxtLmlzTWF0Y2gmJihpKysscys9cCooMS1tLnNjb3JlKSxtLmluZGljZXMmJmEucHVzaCguLi5tLmluZGljZXMpKX1pZihpPT09MClyZXR1cm57aXNNYXRjaDohMSxzY29yZToxfTtjb25zdCBjPW4+MD8xLXMvbjowLGQ9e2lzTWF0Y2g6ITAsc2NvcmU6TWF0aC5tYXgoLjAwMSxjKX07cmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlTWF0Y2hlcyYmYS5sZW5ndGgmJihkLmluZGljZXM9Q3QoYSkpLGR9fXdlLnZlcnNpb249IjcuMy4wIjt3ZS5jcmVhdGVJbmRleD15YTt3ZS5wYXJzZUluZGV4PUxzO3dlLmNvbmZpZz1UO3dlLm1hdGNoPWZ1bmN0aW9uKHQsZSxhKXtyZXR1cm4gZXQodCx7Li4uVCwuLi5hfSkuc2VhcmNoSW4oZSl9O3dlLnBhcnNlUXVlcnk9U2E7VHQoR3MpO1R0KGlpKTt3ZS51c2U9ZnVuY3Rpb24oLi4udCl7dC5mb3JFYWNoKGU9PlR0KGUpKX07ZnVuY3Rpb24gbGkodCxlLGEpe2NvbnN0IHM9KCk9Pnt2YXIgaSxjO3JldHVybiBuZXcgd2UoKGk9dmUoZSkpIT09bnVsbCYmaSE9PXZvaWQgMD9pOltdLChjPXZlKGEpKT09PW51bGx8fGM9PT12b2lkIDA/dm9pZCAwOmMuZnVzZU9wdGlvbnMpfSxuPV8ocygpKTtyZXR1cm4gdWUoKCk9Pnt2YXIgaTtyZXR1cm4oaT12ZShhKSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmZ1c2VPcHRpb25zfSwoKT0+e24udmFsdWU9cygpfSx7ZGVlcDohMH0pLHVlKCgpPT52ZShlKSxpPT57bi52YWx1ZS5zZXRDb2xsZWN0aW9uKGkpfSx7ZGVlcDohMH0pLHtmdXNlOm4scmVzdWx0czpGKCgpPT57Y29uc3QgaT12ZShhKTtpZihpPy5tYXRjaEFsbFdoZW5TZWFyY2hFbXB0eSYmIXZlKHQpKXJldHVybiB2ZShlKS5tYXAoKGQscik9Pih7aXRlbTpkLHJlZkluZGV4OnJ9KSk7Y29uc3QgYz1pPy5yZXN1bHRMaW1pdDtyZXR1cm4gbi52YWx1ZS5zZWFyY2godmUodCksYz97bGltaXQ6Y306dm9pZCAwKX0pfX1jb25zdCBvaT17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In07ZnVuY3Rpb24gcmkodCl7cmV0dXJuIHQucmVwbGFjZSgvWyY8PiInXS9nLGU9Pm9pW2VdKX1mdW5jdGlvbiB1aSh0KXtyZXR1cm4vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7Ly50ZXN0KHQpfWZ1bmN0aW9uIHV0KHQpe3JldHVybiB1aSh0KT90OnJpKHQpfWZ1bmN0aW9uIGNpKHQsZSl7bGV0IGE9IiIscz0wLG49ITE7Zm9yKGxldCBpPXQubGVuZ3RoLTE7aT49MDtpLS0pe2lmKHRbaV09PT0iPiIpbj0hMDtlbHNlIGlmKHRbaV09PT0iPCIpe249ITEsYT10W2ldK2E7Y29udGludWV9aWYobnx8cysrLHM8PWUpYT10W2ldK2E7ZWxzZXthPSIuLi4iK2E7YnJlYWt9fXJldHVybiBhfWZ1bmN0aW9uIEd0KHQsZSxhLHMpe2Z1bmN0aW9uIG4oaSxjPVtdKXtpPWl8fCIiO2xldCBkPSIiLHI9MDtjLmZvckVhY2gocD0+e2lmKHAubGVuZ3RoPT09MiYmcFswXT09PXBbMV0pcmV0dXJuO2NvbnN0IGg9cFsxXSsxLG89aC1wWzBdPj1lLmxlbmd0aDtkKz1bdXQoaS5zdWJzdHJpbmcocixwWzBdKSksbyYmIjxtYXJrPiIsdXQoaS5zdWJzdHJpbmcocFswXSxoKSksbyYmIjwvbWFyaz4iXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIikscj1ofSksZCs9dXQoaS5zdWJzdHJpbmcocikpO2NvbnN0IG09ZC5pbmRleE9mKCI8bWFyaz4iKTtyZXR1cm4gbSE9PS0xJiYoZD1jaShkLGQubGVuZ3RoLW0pKSxkfWlmKHQubWF0Y2hlcz8ubGVuZ3RoKXtmb3IoY29uc3QgaSBvZiB0Lm1hdGNoZXMpaWYoIShhJiZpLmtleSE9PWEpJiYhcz8uaW5jbHVkZXMoaS5rZXkpKXJldHVybiBuKGkudmFsdWUsaS5pbmRpY2VzKX19Y29uc3QgZGk9e3Nsb3RzOntyb290OiJmbGV4IGZsZXgtY29sIG1pbi1oLTAgbWluLXctMCBkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCIsaW5wdXQ6IiIsY2xvc2U6IiIsYmFjazoicC0wIixjb250ZW50OiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gZmxleCBmbGV4LWNvbCIsZm9vdGVyOiJwLTEiLHZpZXdwb3J0OiJyZWxhdGl2ZSBzY3JvbGwtcHktMSBvdmVyZmxvdy15LWF1dG8gZmxleC0xIGZvY3VzOm91dGxpbmUtbm9uZSIsZ3JvdXA6InAtMSBpc29sYXRlIixlbXB0eToidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCIsbGFiZWw6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCIsaXRlbToiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtc3RhcnQgc2VsZWN0LW5vbmUgb3V0bGluZS1ub25lIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6ei1bLTFdIGJlZm9yZTppbnNldC1weCBiZWZvcmU6cm91bmRlZC1tZCBkYXRhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNzUiLGl0ZW1MZWFkaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIiLGl0ZW1MZWFkaW5nQ2hpcDoic2hyaW5rLTAiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6IiIsaXRlbVRyYWlsaW5nOiJtcy1hdXRvIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsaXRlbVRyYWlsaW5nSWNvbjoic2hyaW5rLTAiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQgaGlkZGVuIGdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWQ6aW5saW5lLWZsZXgiLGl0ZW1UcmFpbGluZ0tiZHM6ImhpZGRlbiBsZzppbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiIiLGl0ZW1XcmFwcGVyOiJmbGV4LTEgZmxleCBmbGV4LWNvbCB0ZXh0LXN0YXJ0IG1pbi13LTAiLGl0ZW1MYWJlbDoidHJ1bmNhdGUgc3BhY2UteC0xIHRleHQtZGltbWVkIixpdGVtRGVzY3JpcHRpb246InRydW5jYXRlIHRleHQtbXV0ZWQiLGl0ZW1MYWJlbEJhc2U6InRleHQtaGlnaGxpZ2h0ZWQgWyY+bWFya106dGV4dC1pbnZlcnRlZCBbJj5tYXJrXTpiZy1wcmltYXJ5IixpdGVtTGFiZWxQcmVmaXg6InRleHQtZGVmYXVsdCIsaXRlbUxhYmVsU3VmZml4OiJ0ZXh0LWRpbW1lZCBbJj5tYXJrXTp0ZXh0LWludmVydGVkIFsmPm1hcmtdOmJnLXByaW1hcnkifSx2YXJpYW50czp7dmlydHVhbGl6ZTp7dHJ1ZTp7dmlld3BvcnQ6InAtMSBpc29sYXRlIn0sZmFsc2U6e3ZpZXdwb3J0OiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9fSxzaXplOnt4czp7aW5wdXQ6IlsmPmlucHV0XTpoLTEwIixlbXB0eToicHktMyB0ZXh0LXhzIixsYWJlbDoicC0xIHRleHQtWzEwcHhdLzMgZ2FwLTEiLGl0ZW06InAtMSB0ZXh0LXhzIGdhcC0xIixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nOiJnYXAtMSIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNCIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6InNtIn0sc206e2lucHV0OiJbJj5pbnB1dF06aC0xMSIsZW1wdHk6InB5LTQgdGV4dC14cyIsbGFiZWw6InAtMS41IHRleHQtWzEwcHhdLzMgZ2FwLTEuNSIsaXRlbToicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtTGVhZGluZ0ljb246InNpemUtNCIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS00IixpdGVtTGVhZGluZ0NoaXBTaXplOiJzbSIsaXRlbVRyYWlsaW5nOiJnYXAtMS41IixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2l6ZS00IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToic20ifSxtZDp7aW5wdXQ6IlsmPmlucHV0XTpoLTEyIixlbXB0eToicHktNiB0ZXh0LXNtIixsYWJlbDoicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmc6ImdhcC0xLjUiLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNSIsaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0tiZHM6ImdhcC0wLjUiLGl0ZW1UcmFpbGluZ0tiZHNTaXplOiJtZCJ9LGxnOntpbnB1dDoiWyY+aW5wdXRdOmgtMTMiLGVtcHR5OiJweS03IHRleHQtc20iLGxhYmVsOiJwLTIgdGV4dC14cyBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmc6ImdhcC0yIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGl0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbjoic2l6ZS01IixpdGVtVHJhaWxpbmdLYmRzOiJnYXAtMC41IixpdGVtVHJhaWxpbmdLYmRzU2l6ZToibWQifSx4bDp7aW5wdXQ6IlsmPmlucHV0XTpoLTE0IixlbXB0eToicHktOCB0ZXh0LWJhc2UiLGxhYmVsOiJwLTIgdGV4dC1zbSBnYXAtMiIsaXRlbToicC0yIHRleHQtYmFzZSBnYXAtMiIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTYiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToieHMiLGl0ZW1MZWFkaW5nQ2hpcDoic2l6ZS02IixpdGVtTGVhZGluZ0NoaXBTaXplOiJsZyIsaXRlbVRyYWlsaW5nOiJnYXAtMiIsaXRlbVRyYWlsaW5nSWNvbjoic2l6ZS02IixpdGVtVHJhaWxpbmdIaWdobGlnaHRlZEljb246InNpemUtNiIsaXRlbVRyYWlsaW5nS2JkczoiZ2FwLTAuNSIsaXRlbVRyYWlsaW5nS2Jkc1NpemU6ImxnIn19LGFjdGl2ZTp7dHJ1ZTp7aXRlbToidGV4dC1oaWdobGlnaHRlZCBiZWZvcmU6YmctZWxldmF0ZWQiLGl0ZW1MZWFkaW5nSWNvbjoidGV4dC1kZWZhdWx0In0sZmFsc2U6e2l0ZW06WyJ0ZXh0LWRlZmF1bHQgZGF0YS1oaWdobGlnaHRlZDpub3QtZGF0YS1kaXNhYmxlZDp0ZXh0LWhpZ2hsaWdodGVkIGRhdGEtaGlnaGxpZ2h0ZWQ6bm90LWRhdGEtZGlzYWJsZWQ6YmVmb3JlOmJnLWVsZXZhdGVkLzUwIiwidHJhbnNpdGlvbi1jb2xvcnMgYmVmb3JlOnRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdJY29uOlsidGV4dC1kaW1tZWQgZ3JvdXAtZGF0YS1oaWdobGlnaHRlZDpub3QtZ3JvdXAtZGF0YS1kaXNhYmxlZDp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0sbG9hZGluZzp7dHJ1ZTp7aXRlbUxlYWRpbmdJY29uOiJhbmltYXRlLXNwaW4ifX19LGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQifX0sZmk9WyJpbm5lckhUTUwiXSxwaT1bImlubmVySFRNTCJdLGhpPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNvbW1hbmRQYWxldHRlIixwcm9wczpaZSh7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzZWxlY3RlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2hpbGRyZW5JY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGJhY2s6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxiYWNrSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpbnB1dDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGdyb3Vwczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sZnVzZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHZpcnR1YWxpemU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiExfSx2YWx1ZUtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sZGVzY3JpcHRpb25LZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkZXNjcmlwdGlvbiJ9LHByZXNlcnZlR3JvdXBPcmRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHNlYXJjaERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saGlnaGxpZ2h0T25Ib3Zlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHNlbGVjdGlvbkJlaGF2aW9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYnk6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHtzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxzZWFyY2hUZXJtTW9kaWZpZXJzOnt9fSksZW1pdHM6WmUoWyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsImVudHJ5Rm9jdXMiLCJsZWF2ZSIsInVwZGF0ZTpvcGVuIl0sWyJ1cGRhdGU6c2VhcmNoVGVybSJdKSxzZXR1cCh0LHtlbWl0OmV9KXtjb25zdCBhPXQscz1lLG49TGUoKSxpPXFlKHQsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSkse3Q6Y309YXQoKSxkPUVlKCkscj1PZSgiY29tbWFuZFBhbGV0dGUiLGEpLG09a3QoSmUoYSwiYXMiLCJkaXNhYmxlZCIsIm11bHRpcGxlIiwibW9kZWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImhpZ2hsaWdodE9uSG92ZXIiLCJieSIpLHMpLHA9TWUoKCk9PmEudmlydHVhbGl6ZT9QZSh0eXBlb2YgYS52aXJ0dWFsaXplPT0iYm9vbGVhbiI/e306YS52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6Rm4ocS52YWx1ZSwibWQiLGEuZGVzY3JpcHRpb25LZXksISFuWyJpdGVtLWRlc2NyaXB0aW9uIl0pfSk6ITEpLFtoLG9dPVhlKHtwcm9wczp7aXRlbTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LGdyb3VwOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saW5kZXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfX19KSx1PUYoKCk9PmRlKHtleHRlbmQ6ZGUoZGkpLC4uLmQudWk/LmNvbW1hbmRQYWxldHRlfHx7fX0pKHtzaXplOmEuc2l6ZSx2aXJ0dWFsaXplOiEhYS52aXJ0dWFsaXplfSkpLGc9RigoKT0+UGUoe30sYS5mdXNlLHtmdXNlT3B0aW9uczp7aWdub3JlTG9jYXRpb246ITAsdGhyZXNob2xkOi4xLGtleXM6W2EubGFiZWxLZXksInN1ZmZpeCJdfSxyZXN1bHRMaW1pdDoxMixtYXRjaEFsbFdoZW5TZWFyY2hFbXB0eTohMH0pKSx2PV8oW10pLHg9RigoKT0+di52YWx1ZVt2LnZhbHVlLmxlbmd0aC0xXT8ucGxhY2Vob2xkZXJ8fGEucGxhY2Vob2xkZXJ8fGMoImNvbW1hbmRQYWxldHRlLnBsYWNlaG9sZGVyIikpLEk9RigoKT0+di52YWx1ZT8ubGVuZ3RoP1t2LnZhbHVlW3YudmFsdWUubGVuZ3RoLTFdXTphLmdyb3VwcyksUz1GKCgpPT5JLnZhbHVlPy5maWx0ZXIoTz0+ISghTy5pZHx8Ty5pZ25vcmVGaWx0ZXIpKT8uZmxhdE1hcChPPT5PLml0ZW1zPy5tYXAoTj0+KHsuLi5OLGdyb3VwOk8uaWR9KSl8fFtdKXx8W10pLGI9YW4oaSwoKT0+YS5zZWFyY2hEZWxheSkse3Jlc3VsdHM6eX09bGkoYixTLGcpLGs9bm4oeSwxNiwhMCk7ZnVuY3Rpb24gQihPLE4pe2xldCBmPU47cmV0dXJuIE8/LnBvc3RGaWx0ZXImJnR5cGVvZiBPLnBvc3RGaWx0ZXI9PSJmdW5jdGlvbiImJihmPU8ucG9zdEZpbHRlcihiLnZhbHVlLGYpKSx7Li4uTyxpdGVtczpmLnNsaWNlKDAsZy52YWx1ZS5yZXN1bHRMaW1pdCkubWFwKEo9Pih7Li4uSixsYWJlbEh0bWw6R3QoSixiLnZhbHVlLGEubGFiZWxLZXkpLHN1ZmZpeEh0bWw6R3QoSixiLnZhbHVlLHZvaWQgMCxbYS5sYWJlbEtleV0pfSkpfX1jb25zdCAkPUYoKCk9Pntjb25zdCBPPUkudmFsdWUsTj1rLnZhbHVlLnJlZHVjZSgoQSxXKT0+e2NvbnN0e2l0ZW06b2UsbWF0Y2hlczpzZX09VztyZXR1cm4gb2UuZ3JvdXAmJihBW29lLmdyb3VwXXx8PVtdLEFbb2UuZ3JvdXBdPy5wdXNoKHsuLi5vZSxtYXRjaGVzOnNlfSkpLEF9LHt9KTtpZihhLnByZXNlcnZlR3JvdXBPcmRlcil7Y29uc3QgQT1bXTtmb3IoY29uc3QgVyBvZiBPfHxbXSl7aWYoIVcuaXRlbXM/Lmxlbmd0aCljb250aW51ZTtjb25zdCBvZT1XLmlnbm9yZUZpbHRlcj9XLml0ZW1zOk5bVy5pZF07aWYoIW9lPy5sZW5ndGgpY29udGludWU7Y29uc3Qgc2U9QihXLG9lKTtzZS5pdGVtcz8ubGVuZ3RoJiZBLnB1c2goc2UpfXJldHVybiBBfWNvbnN0IGY9T2JqZWN0LmVudHJpZXMoTikubWFwKChbQSxXXSk9Pntjb25zdCBvZT1PPy5maW5kKF9lPT5fZS5pZD09PUEpO2lmKCFvZSlyZXR1cm47Y29uc3Qgc2U9QihvZSxXKTtyZXR1cm4gc2UuaXRlbXM/Lmxlbmd0aD9zZTp2b2lkIDB9KS5maWx0ZXIoQT0+ISFBKTtyZXR1cm4oTz8ubWFwKChBLFcpPT4oey4uLkEsaW5kZXg6V30pKT8uZmlsdGVyKEE9PkEuaWdub3JlRmlsdGVyJiZBLml0ZW1zPy5sZW5ndGgpPy5tYXAoQT0+KHsuLi5CKEEsQS5pdGVtc3x8W10pLGluZGV4OkEuaW5kZXh9KSk/LmZpbHRlcihBPT5BLml0ZW1zPy5sZW5ndGgpfHxbXSkucmVkdWNlKChBLFcpPT4oQS5zcGxpY2UoVy5pbmRleCwwLFcpLEEpLFsuLi5mXSl9KSxxPUYoKCk9PiQudmFsdWUuZmxhdE1hcChPPT5PLml0ZW1zfHxbXSkpLGo9dGEoInJvb3RSZWYiKTtmdW5jdGlvbiBIKE8pe08uY2hpbGRyZW4/Lmxlbmd0aCYmKHYudmFsdWUucHVzaCh7aWQ6YGhpc3RvcnktJHt2LnZhbHVlLmxlbmd0aH1gLGxhYmVsOk8ubGFiZWwsc2xvdDpPLnNsb3QscGxhY2Vob2xkZXI6Ty5wbGFjZWhvbGRlcixpdGVtczpPLmNoaWxkcmVufSksaS52YWx1ZT0iIixqLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9ZnVuY3Rpb24gTSgpe3YudmFsdWUubGVuZ3RoJiYodi52YWx1ZS5wb3AoKSxpLnZhbHVlPSIiLGoudmFsdWU/LmhpZ2hsaWdodEZpcnN0SXRlbSgpKX1mdW5jdGlvbiBVKCl7aS52YWx1ZXx8TSgpfWZ1bmN0aW9uIGVlKE8sTil7Ti5jaGlsZHJlbj8ubGVuZ3RoPyhPLnByZXZlbnREZWZhdWx0KCksSChOKSk6Ti5vblNlbGVjdD8uKE8pfXJldHVybihPLE4pPT4odygpLHoocGUsbnVsbCxbRChsKGgpLG51bGwse2RlZmF1bHQ6Qygoe2l0ZW06ZixpbmRleDpKLGdyb3VwOkF9KT0+W0Qoc24sWShsKGxuKShmKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6Qygoe2FjdGl2ZTpXLC4uLm9lfSk9PltEKGwoVG4pLHt2YWx1ZTphLnZhbHVlS2V5P2woaGUpKGYsYS52YWx1ZUtleSk6bChRZSkoZixbIm1hdGNoZXMiLCJncm91cCIsIm9uU2VsZWN0IiwibGFiZWxIdG1sIiwic3VmZml4SHRtbCIsImNoaWxkcmVuIl0pLGRpc2FibGVkOmYuZGlzYWJsZWQsImFzLWNoaWxkIjoiIixvblNlbGVjdDpzZT0+ZWUoc2UsZil9LHtkZWZhdWx0OkMoKCk9PltEKG9uLFkob2UseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczp1LnZhbHVlLml0ZW0oe2NsYXNzOltsKHIpPy5pdGVtLGYudWk/Lml0ZW0sZi5jbGFzc10sYWN0aXZlOld8fGYuYWN0aXZlfSl9KSx7ZGVmYXVsdDpDKCgpPT5bUihPLiRzbG90cyxmLnNsb3R8fEE/LnNsb3R8fCJpdGVtIix7aXRlbTpmLGluZGV4OkosdWk6dS52YWx1ZX0sKCk9PltSKE8uJHNsb3RzLGYuc2xvdD9gJHtmLnNsb3R9LWxlYWRpbmdgOkE/LnNsb3Q/YCR7QS5zbG90fS1sZWFkaW5nYDoiaXRlbS1sZWFkaW5nIix7aXRlbTpmLGluZGV4OkosdWk6dS52YWx1ZX0sKCk9PltmLmxvYWRpbmc/KHcoKSxFKGtlLHtrZXk6MCxuYW1lOnQubG9hZGluZ0ljb258fGwoZCkudWkuaWNvbnMubG9hZGluZywiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpQKHUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbbChyKT8uaXRlbUxlYWRpbmdJY29uLGYudWk/Lml0ZW1MZWFkaW5nSWNvbl0sbG9hZGluZzohMH0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpmLmljb24/KHcoKSxFKGtlLHtrZXk6MSxuYW1lOmYuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczpQKHUudmFsdWUuaXRlbUxlYWRpbmdJY29uKHtjbGFzczpbbChyKT8uaXRlbUxlYWRpbmdJY29uLGYudWk/Lml0ZW1MZWFkaW5nSWNvbl0sYWN0aXZlOld8fGYuYWN0aXZlfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmYuYXZhdGFyPyh3KCksRShybixZKHtrZXk6MixzaXplOmYudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8bChyKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHx1LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSxmLmF2YXRhcix7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQXZhdGFyIixjbGFzczp1LnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyKHtjbGFzczpbbChyKT8uaXRlbUxlYWRpbmdBdmF0YXIsZi51aT8uaXRlbUxlYWRpbmdBdmF0YXJdLGFjdGl2ZTpXfHxmLmFjdGl2ZX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6Zi5jaGlwPyh3KCksRSh1bixZKHtrZXk6MyxzaXplOmYudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGwocik/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fHUudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGYuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6dS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltsKHIpPy5pdGVtTGVhZGluZ0NoaXAsZi51aT8uaXRlbUxlYWRpbmdDaGlwXSxhY3RpdmU6V3x8Zi5hY3RpdmV9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOksoIiIsITApXSksZi5wcmVmaXh8fGYubGFiZWxIdG1sfHxsKGhlKShmLGEubGFiZWxLZXkpfHxmLnN1ZmZpeEh0bWx8fGYuc3VmZml4fHxuW2Yuc2xvdD9gJHtmLnNsb3R9LWxhYmVsYDpBPy5zbG90P2Ake0Euc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl18fGwoaGUpKGYsYS5kZXNjcmlwdGlvbktleSl8fG5bZi5zbG90P2Ake2Yuc2xvdH0tZGVzY3JpcHRpb25gOkE/LnNsb3Q/YCR7QS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iXT8odygpLHooInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbVdyYXBwZXIiLGNsYXNzOlAodS52YWx1ZS5pdGVtV3JhcHBlcih7Y2xhc3M6W2wocik/Lml0ZW1XcmFwcGVyLGYudWk/Lml0ZW1XcmFwcGVyXX0pKX0sW1goInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczpQKHUudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbbChyKT8uaXRlbUxhYmVsLGYudWk/Lml0ZW1MYWJlbF0sYWN0aXZlOld8fGYuYWN0aXZlfSkpfSxbUihPLiRzbG90cyxmLnNsb3Q/YCR7Zi5zbG90fS1sYWJlbGA6QT8uc2xvdD9gJHtBLnNsb3R9LWxhYmVsYDoiaXRlbS1sYWJlbCIse2l0ZW06ZixpbmRleDpKLHVpOnUudmFsdWV9LCgpPT5bZi5wcmVmaXg/KHcoKSx6KCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1MYWJlbFByZWZpeCIsY2xhc3M6UCh1LnZhbHVlLml0ZW1MYWJlbFByZWZpeCh7Y2xhc3M6W2wocik/Lml0ZW1MYWJlbFByZWZpeCxmLnVpPy5pdGVtTGFiZWxQcmVmaXhdfSkpfSxjZShmLnByZWZpeCksMykpOksoIiIsITApLGYubGFiZWxIdG1sPyh3KCkseigic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczpQKHUudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2wocik/Lml0ZW1MYWJlbEJhc2UsZi51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOld8fGYuYWN0aXZlfSkpLGlubmVySFRNTDpmLmxhYmVsSHRtbH0sbnVsbCwxMCxmaSkpOih3KCkseigic3BhbiIse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxCYXNlIixjbGFzczpQKHUudmFsdWUuaXRlbUxhYmVsQmFzZSh7Y2xhc3M6W2wocik/Lml0ZW1MYWJlbEJhc2UsZi51aT8uaXRlbUxhYmVsQmFzZV0sYWN0aXZlOld8fGYuYWN0aXZlfSkpfSxjZShsKGhlKShmLGEubGFiZWxLZXkpKSwzKSksZi5zdWZmaXhIdG1sPyh3KCkseigic3BhbiIse2tleTozLCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOlAodS52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltsKHIpPy5pdGVtTGFiZWxTdWZmaXgsZi51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6V3x8Zi5hY3RpdmV9KSksaW5uZXJIVE1MOmYuc3VmZml4SHRtbH0sbnVsbCwxMCxwaSkpOmYuc3VmZml4Pyh3KCkseigic3BhbiIse2tleTo0LCJkYXRhLXNsb3QiOiJpdGVtTGFiZWxTdWZmaXgiLGNsYXNzOlAodS52YWx1ZS5pdGVtTGFiZWxTdWZmaXgoe2NsYXNzOltsKHIpPy5pdGVtTGFiZWxTdWZmaXgsZi51aT8uaXRlbUxhYmVsU3VmZml4XSxhY3RpdmU6V3x8Zi5hY3RpdmV9KSl9LGNlKGYuc3VmZml4KSwzKSk6SygiIiwhMCldKV0sMiksbChoZSkoZixhLmRlc2NyaXB0aW9uS2V5KXx8bltmLnNsb3Q/YCR7Zi5zbG90fS1kZXNjcmlwdGlvbmA6QT8uc2xvdD9gJHtBLnNsb3R9LWRlc2NyaXB0aW9uYDoiaXRlbS1kZXNjcmlwdGlvbiJdPyh3KCkseigic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJpdGVtRGVzY3JpcHRpb24iLGNsYXNzOlAodS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltsKHIpPy5pdGVtRGVzY3JpcHRpb24sZi51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0sW1IoTy4kc2xvdHMsZi5zbG90P2Ake2Yuc2xvdH0tZGVzY3JpcHRpb25gOkE/LnNsb3Q/YCR7QS5zbG90fS1kZXNjcmlwdGlvbmA6Iml0ZW0tZGVzY3JpcHRpb24iLHtpdGVtOmYsaW5kZXg6Six1aTp1LnZhbHVlfSwoKT0+W0FlKGNlKGwoaGUpKGYsYS5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTpLKCIiLCEwKV0sMikpOksoIiIsITApLFgoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczpQKHUudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbbChyKT8uaXRlbVRyYWlsaW5nLGYudWk/Lml0ZW1UcmFpbGluZ119KSl9LFtSKE8uJHNsb3RzLGYuc2xvdD9gJHtmLnNsb3R9LXRyYWlsaW5nYDpBPy5zbG90P2Ake0Euc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIix7aXRlbTpmLGluZGV4OkosdWk6dS52YWx1ZX0sKCk9PltmLmNoaWxkcmVuJiZmLmNoaWxkcmVuLmxlbmd0aD4wPyh3KCksRShrZSx7a2V5OjAsbmFtZTp0LmNoaWxkcmVuSWNvbnx8bChkKS51aS5pY29ucy5jaGV2cm9uUmlnaHQsImRhdGEtc2xvdCI6Iml0ZW1UcmFpbGluZ0ljb24iLGNsYXNzOlAodS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbbChyKT8uaXRlbVRyYWlsaW5nSWNvbixmLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpmLmtiZHM/Lmxlbmd0aD8odygpLHooInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nS2JkcyIsY2xhc3M6UCh1LnZhbHVlLml0ZW1UcmFpbGluZ0tiZHMoe2NsYXNzOltsKHIpPy5pdGVtVHJhaWxpbmdLYmRzLGYudWk/Lml0ZW1UcmFpbGluZ0tiZHNdfSkpfSxbKHcoITApLHoocGUsbnVsbCxnZShmLmtiZHMsKHNlLF9lKT0+KHcoKSxFKGxhLFkoe2tleTpfZSxzaXplOmYudWk/Lml0ZW1UcmFpbGluZ0tiZHNTaXplfHxsKHIpPy5pdGVtVHJhaWxpbmdLYmRzU2l6ZXx8dS52YWx1ZS5pdGVtVHJhaWxpbmdLYmRzU2l6ZSgpfSx7cmVmX2ZvcjohMH0sdHlwZW9mIHNlPT0ic3RyaW5nIj97dmFsdWU6c2V9OnNlKSxudWxsLDE2LFsic2l6ZSJdKSkpLDEyOCkpXSwyKSk6QT8uaGlnaGxpZ2h0ZWRJY29uPyh3KCksRShrZSx7a2V5OjIsbmFtZTpBLmhpZ2hsaWdodGVkSWNvbiwiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uIixjbGFzczpQKHUudmFsdWUuaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uKHtjbGFzczpbbChyKT8uaXRlbVRyYWlsaW5nSGlnaGxpZ2h0ZWRJY29uLGYudWk/Lml0ZW1UcmFpbGluZ0hpZ2hsaWdodGVkSWNvbl19KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6SygiIiwhMCldKSxmLmNoaWxkcmVuPy5sZW5ndGg/SygiIiwhMCk6KHcoKSxFKGwoTW4pLHtrZXk6MCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpDKCgpPT5bRChrZSx7bmFtZTp0LnNlbGVjdGVkSWNvbnx8bChkKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6UCh1LnZhbHVlLml0ZW1UcmFpbGluZ0ljb24oe2NsYXNzOltsKHIpPy5pdGVtVHJhaWxpbmdJY29uLGYudWk/Lml0ZW1UcmFpbGluZ0ljb25dfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwMjQpKV0sMildKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDMyLFsidmFsdWUiLCJkaXNhYmxlZCIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0pLF86M30pLEQobCh6biksWSh7Li4ubChtKSwuLi5PLiRhdHRyc30se3JlZl9rZXk6InJvb3RSZWYiLHJlZjpqLCJzZWxlY3Rpb24tYmVoYXZpb3IiOnQuc2VsZWN0aW9uQmVoYXZpb3IsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnUudmFsdWUucm9vdCh7Y2xhc3M6W2wocik/LnJvb3QsYS5jbGFzc119KX0pLHtkZWZhdWx0OkMoKCk9Plt0LmlucHV0Pyh3KCksRShsKExuKSx7a2V5OjAsbW9kZWxWYWx1ZTppLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpOWzFdfHwoTlsxXT1mPT5pLnZhbHVlPWYpLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OkMoKCk9PltEKCR0LFkoe3ZhcmlhbnQ6Im5vbmUiLHNpemU6dC5zaXplfSx0eXBlb2YgYS5pbnB1dD09Im9iamVjdCI/YS5pbnB1dDp7fSx7cGxhY2Vob2xkZXI6eC52YWx1ZSxhdXRvZm9jdXM6dC5hdXRvZm9jdXMsbG9hZGluZzp0LmxvYWRpbmcsImxvYWRpbmctaWNvbiI6dC5sb2FkaW5nSWNvbiwidHJhaWxpbmctaWNvbiI6dC50cmFpbGluZ0ljb24saWNvbjp0Lmljb258fGwoZCkudWkuaWNvbnMuc2VhcmNoLCJkYXRhLXNsb3QiOiJpbnB1dCIsY2xhc3M6dS52YWx1ZS5pbnB1dCh7Y2xhc3M6bChyKT8uaW5wdXR9KSxvbktleWRvd246YWEoVSxbImJhY2tzcGFjZSJdKX0pLHh0KHtfOjJ9LFt2LnZhbHVlPy5sZW5ndGgmJih0LmJhY2t8fG4uYmFjayk/e25hbWU6ImxlYWRpbmciLGZuOkMoKCk9PltSKE8uJHNsb3RzLCJiYWNrIix7dWk6dS52YWx1ZX0sKCk9PltEKENlLFkoe3NpemU6dC5zaXplLGljb246dC5iYWNrSWNvbnx8bChkKS51aS5pY29ucy5hcnJvd0xlZnQsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6ImxpbmsiLCJhcmlhLWxhYmVsIjpsKGMpKCJjb21tYW5kUGFsZXR0ZS5iYWNrIil9LHR5cGVvZiB0LmJhY2s9PSJvYmplY3QiP3QuYmFjazp7fSx7ImRhdGEtc2xvdCI6ImJhY2siLGNsYXNzOnUudmFsdWUuYmFjayh7Y2xhc3M6bChyKT8uYmFja30pLG9uQ2xpY2s6TX0pLG51bGwsMTYsWyJzaXplIiwiaWNvbiIsImFyaWEtbGFiZWwiLCJjbGFzcyJdKV0pXSksa2V5OiIwIn06dm9pZCAwLHQuY2xvc2V8fG4uY2xvc2U/e25hbWU6InRyYWlsaW5nIixmbjpDKCgpPT5bUihPLiRzbG90cywiY2xvc2UiLHt1aTp1LnZhbHVlfSwoKT0+W3QuY2xvc2U/KHcoKSxFKENlLFkoe2tleTowLHNpemU6dC5zaXplLGljb246dC5jbG9zZUljb258fGwoZCkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6bChjKSgiY29tbWFuZFBhbGV0dGUuY2xvc2UiKX0sdHlwZW9mIHQuY2xvc2U9PSJvYmplY3QiP3QuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6dS52YWx1ZS5jbG9zZSh7Y2xhc3M6bChyKT8uY2xvc2V9KSxvbkNsaWNrOk5bMF18fChOWzBdPWY9PnMoInVwZGF0ZTpvcGVuIiwhMSkpfSksbnVsbCwxNixbInNpemUiLCJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTpLKCIiLCEwKV0pXSksa2V5OiIxIn06dm9pZCAwXSksMTA0MCxbInNpemUiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImxvYWRpbmciLCJsb2FkaW5nLWljb24iLCJ0cmFpbGluZy1pY29uIiwiaWNvbiIsImNsYXNzIl0pXSksXzozfSw4LFsibW9kZWxWYWx1ZSJdKSk6SygiIiwhMCksRChsKEVuKSx7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOlAodS52YWx1ZS5jb250ZW50KHtjbGFzczpsKHIpPy5jb250ZW50fSkpfSx7ZGVmYXVsdDpDKCgpPT5bJC52YWx1ZT8ubGVuZ3RoPyh3KCkseigiZGl2Iix7a2V5OjAscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOlAodS52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6bChyKT8udmlld3BvcnR9KSl9LFt0LnZpcnR1YWxpemU/KHcoKSxFKGwoT24pLFkoe2tleTowLG9wdGlvbnM6cS52YWx1ZSwidGV4dC1jb250ZW50IjpmPT5sKGhlKShmLGEubGFiZWxLZXkpfSxwLnZhbHVlKSx7ZGVmYXVsdDpDKCh7b3B0aW9uOmYsdmlydHVhbEl0ZW06Sn0pPT5bRChsKG8pLHtpdGVtOmYsaW5kZXg6Si5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSkpOih3KCEwKSx6KHBlLHtrZXk6MX0sZ2UoJC52YWx1ZSxmPT4odygpLEUobChfbikse2tleTpgZ3JvdXAtJHtmLmlkfWAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczpQKHUudmFsdWUuZ3JvdXAoe2NsYXNzOmwocik/Lmdyb3VwfSkpfSx7ZGVmYXVsdDpDKCgpPT5bbChoZSkoZixhLmxhYmVsS2V5KXx8bltmLnNsb3Q/YCR7Zi5zbG90fS1ncm91cC1sYWJlbGA6Imdyb3VwLWxhYmVsIl0/KHcoKSxFKGwocW4pLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOlAodS52YWx1ZS5sYWJlbCh7Y2xhc3M6bChyKT8ubGFiZWx9KSl9LHtkZWZhdWx0OkMoKCk9PltSKE8uJHNsb3RzLGYuc2xvdD9gJHtmLnNsb3R9LWdyb3VwLWxhYmVsYDoiZ3JvdXAtbGFiZWwiLHtncm91cDpmLGxhYmVsOmwoaGUpKGYsYS5sYWJlbEtleSksdWk6dS52YWx1ZX0sKCk9PltBZShjZShsKGhlKShmLGEubGFiZWxLZXkpKSwxKV0pXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOksoIiIsITApLCh3KCEwKSx6KHBlLG51bGwsZ2UoZi5pdGVtcywoSixBKT0+KHcoKSxFKGwobykse2tleTpgZ3JvdXAtJHtmLmlkfS0ke0F9YCxpdGVtOkosaW5kZXg6QSxncm91cDpmfSxudWxsLDgsWyJpdGVtIiwiaW5kZXgiLCJncm91cCJdKSkpLDEyOCkpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpKSwxMjgpKV0sMikpOih3KCkseigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImVtcHR5IixjbGFzczpQKHUudmFsdWUuZW1wdHkoe2NsYXNzOmwocik/LmVtcHR5fSkpfSxbUihPLiRzbG90cywiZW1wdHkiLHtzZWFyY2hUZXJtOmkudmFsdWV9LCgpPT5bQWUoY2UoaS52YWx1ZT9sKGMpKCJjb21tYW5kUGFsZXR0ZS5ub01hdGNoIix7c2VhcmNoVGVybTppLnZhbHVlfSk6bChjKSgiY29tbWFuZFBhbGV0dGUubm9EYXRhIikpLDEpXSldLDIpKV0pLF86M30sOCxbImNsYXNzIl0pLG4uZm9vdGVyPyh3KCkseigiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImZvb3RlciIsY2xhc3M6UCh1LnZhbHVlLmZvb3Rlcih7Y2xhc3M6bChyKT8uZm9vdGVyfSkpfSxbUihPLiRzbG90cywiZm9vdGVyIix7dWk6dS52YWx1ZX0pXSwyKSk6SygiIiwhMCldKSxfOjN9LDE2LFsic2VsZWN0aW9uLWJlaGF2aW9yIiwiY2xhc3MiXSldLDY0KSl9fSksbWk9e3Nsb3RzOnttb2RhbDoiIixpbnB1dDoiIn0sdmFyaWFudHM6e2Z1bGxzY3JlZW46e2ZhbHNlOnttb2RhbDoic206bWF4LXctM3hsIGgtZnVsbCBzbTpoLVsyOHJlbV0ifX0sc2l6ZTp7eHM6e30sc206e30sbWQ6e30sbGc6e30seGw6e319fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIn19LE10PSgpPT5jbigiY29sb3ItbW9kZSIpLnZhbHVlLHZpPS9eW14tXSsuKi0uKlteLV0rJC8sZ2k9L15bXl9dKy4qXy4qW15fXSskLyxZdD1bImFycm93bGVmdCIsImFycm93cmlnaHQiLCJhcnJvd3VwIiwiYXJyb3dyaWdodCIsInRhYiIsImVzY2FwZSIsImVudGVyIiwiYmFja3NwYWNlIl07ZnVuY3Rpb24gY3QodCl7cmV0dXJuL15bYS16XSQvaS50ZXN0KHQpP2BLZXkke3QudG9VcHBlckNhc2UoKX1gOi9eXGQkLy50ZXN0KHQpP2BEaWdpdCR7dH1gOi9eZlxkKyQvaS50ZXN0KHQpP3QudG9VcHBlckNhc2UoKTp7c3BhY2U6IlNwYWNlIixlbnRlcjoiRW50ZXIiLGVzY2FwZToiRXNjYXBlIix0YWI6IlRhYiIsYmFja3NwYWNlOiJCYWNrc3BhY2UiLGRlbGV0ZToiRGVsZXRlIixhcnJvd3VwOiJBcnJvd1VwIixhcnJvd2Rvd246IkFycm93RG93biIsYXJyb3dsZWZ0OiJBcnJvd0xlZnQiLGFycm93cmlnaHQ6IkFycm93UmlnaHQifVt0LnRvTG93ZXJDYXNlKCldfHx0fWZ1bmN0aW9uIHlpKHQsZT17fSl7Y29uc3QgYT1fKFtdKSxzPSgpPT57YS52YWx1ZS5zcGxpY2UoMCxhLnZhbHVlLmxlbmd0aCl9LG49ZG4ocyxlLmNoYWluRGVsYXk/PzgwMCkse21hY09TOml9PUFuKCksYz1wbigpLGQ9ZS5sYXlvdXRJbmRlcGVuZGVudD8/ITEscj1ZdC5tYXAobz0+Y3QobykpLG09bz0+e2lmKCFvLmtleSlyZXR1cm47Y29uc3QgdT1kPy9eS2V5W0EtWl0kL2kudGVzdChvLmNvZGUpOi9eW2Etel17MX0kL2kudGVzdChvLmtleSksZz1kP3IuaW5jbHVkZXMoby5jb2RlKTpZdC5pbmNsdWRlcyhvLmtleS50b0xvd2VyQ2FzZSgpKTtsZXQgdjtpZihhLnZhbHVlLnB1c2goZD9vLmNvZGU6by5rZXkpLGEudmFsdWUubGVuZ3RoPj0yKXt2PWEudmFsdWUuc2xpY2UoLTIpLmpvaW4oIi0iKTtmb3IoY29uc3QgeCBvZiBoLnZhbHVlLmZpbHRlcihJPT5JLmNoYWluZWQpKWlmKHgua2V5PT09dil7eC5lbmFibGVkJiYoby5wcmV2ZW50RGVmYXVsdCgpLHguaGFuZGxlcihvKSkscygpO3JldHVybn19Zm9yKGNvbnN0IHggb2YgaC52YWx1ZS5maWx0ZXIoST0+IUkuY2hhaW5lZCkpe2lmKGQpe2lmKG8uY29kZSE9PXgua2V5KWNvbnRpbnVlfWVsc2UgaWYoby5rZXkudG9Mb3dlckNhc2UoKSE9PXgua2V5KWNvbnRpbnVlO2lmKG8ubWV0YUtleT09PXgubWV0YUtleSYmby5jdHJsS2V5PT09eC5jdHJsS2V5JiZvLmFsdEtleT09PXguYWx0S2V5JiYhKCh1fHxnfHx4LnNoaWZ0S2V5fHxvLnNoaWZ0S2V5JiYoby5tZXRhS2V5fHxvLmN0cmxLZXkpKSYmby5zaGlmdEtleSE9PXguc2hpZnRLZXkpKXt4LmVuYWJsZWQmJihvLnByZXZlbnREZWZhdWx0KCkseC5oYW5kbGVyKG8pKSxzKCk7cmV0dXJufX1uKCl9LHA9RigoKT0+e2NvbnN0IG89Yy52YWx1ZT8udGFnTmFtZSx1PWMudmFsdWU/LmNvbnRlbnRFZGl0YWJsZTtyZXR1cm4gbz09PSJJTlBVVCJ8fG89PT0iVEVYVEFSRUEifHx1PT09InRydWUifHx1PT09InBsYWludGV4dC1vbmx5Ij9jLnZhbHVlPy5uYW1lfHwhMDohMX0pLGg9RigoKT0+T2JqZWN0LmVudHJpZXModmUodCkpLm1hcCgoW28sdV0pPT57aWYoIXUpcmV0dXJuIG51bGw7bGV0IGc7by5pbmNsdWRlcygiLSIpJiZvIT09Ii0iJiYhby5pbmNsdWRlcygiXyIpJiZvLm1hdGNoKHZpKT8ubGVuZ3RoLG8uaW5jbHVkZXMoIl8iKSYmbyE9PSJfIiYmby5tYXRjaChnaSk/Lmxlbmd0aDtjb25zdCB2PW8uaW5jbHVkZXMoIi0iKSYmbyE9PSItIiYmIW8uaW5jbHVkZXMoIl8iKTtpZih2KWQ/Zz17a2V5Om8uc3BsaXQoIi0iKS5tYXAoUz0+Y3QoUykpLmpvaW4oIi0iKSxtZXRhS2V5OiExLGN0cmxLZXk6ITEsc2hpZnRLZXk6ITEsYWx0S2V5OiExfTpnPXtrZXk6by50b0xvd2VyQ2FzZSgpLG1ldGFLZXk6ITEsY3RybEtleTohMSxzaGlmdEtleTohMSxhbHRLZXk6ITF9O2Vsc2V7Y29uc3QgST1vLnRvTG93ZXJDYXNlKCkuc3BsaXQoIl8iKS5tYXAoYj0+Yik7bGV0IFM9SS5maWx0ZXIoYj0+IVsibWV0YSIsImNvbW1hbmQiLCJjdHJsIiwic2hpZnQiLCJhbHQiLCJvcHRpb24iXS5pbmNsdWRlcyhiKSkuam9pbigiXyIpO2QmJihTPWN0KFMpKSxnPXtrZXk6UyxtZXRhS2V5OkkuaW5jbHVkZXMoIm1ldGEiKXx8SS5pbmNsdWRlcygiY29tbWFuZCIpLGN0cmxLZXk6SS5pbmNsdWRlcygiY3RybCIpLHNoaWZ0S2V5OkkuaW5jbHVkZXMoInNoaWZ0IiksYWx0S2V5OkkuaW5jbHVkZXMoImFsdCIpfHxJLmluY2x1ZGVzKCJvcHRpb24iKX19aWYoZy5jaGFpbmVkPXYsIWkudmFsdWUmJmcubWV0YUtleSYmIWcuY3RybEtleSYmKGcubWV0YUtleT0hMSxnLmN0cmxLZXk9ITApLHR5cGVvZiB1PT0iZnVuY3Rpb24iP2cuaGFuZGxlcj11OnR5cGVvZiB1PT0ib2JqZWN0IiYmKGc9ey4uLmcsaGFuZGxlcjp1LmhhbmRsZXJ9KSwhZy5oYW5kbGVyKXJldHVybiBudWxsO2xldCB4PSEwO3JldHVybiB1LnVzaW5nSW5wdXQ/dHlwZW9mIHUudXNpbmdJbnB1dD09InN0cmluZyImJih4PXAudmFsdWU9PT11LnVzaW5nSW5wdXQpOng9IXAudmFsdWUsZy5lbmFibGVkPXgsZ30pLmZpbHRlcihCb29sZWFuKSk7cmV0dXJuIGZuKCJrZXlkb3duIixtKX1jb25zdCBiaT17X19uYW1lOiJVRGFzaGJvYXJkU2VhcmNoIixwcm9wczpaZSh7c2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbG9zZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHNob3J0Y3V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJtZXRhX2sifSxzZWFyY2hEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMDB9LGNvbG9yTW9kZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG92ZXJsYXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMH0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsb3NlSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxncm91cHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGZ1c2U6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0se29wZW46e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxvcGVuTW9kaWZpZXJzOnt9LHNlYXJjaFRlcm06e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9LHNlYXJjaFRlcm1Nb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpvcGVuIiwidXBkYXRlOnNlYXJjaFRlcm0iXSxzZXR1cCh0LHtleHBvc2U6ZX0pe2NvbnN0IGE9dCxzPUxlKCksbj1xZSh0LCJvcGVuIix7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9KSxpPXFlKHQsInNlYXJjaFRlcm0iLHt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSk7ZnQoImRhc2hib2FyZDpzZWFyY2g6dG9nZ2xlIiwoKT0+e24udmFsdWU9IW4udmFsdWV9KTtjb25zdHt0OmN9PWF0KCksZD1NdCgpLHI9RWUoKSxtPU9lKCJkYXNoYm9hcmRTZWFyY2giLGEpLHA9ZHQoSmUoYSwic2l6ZSIsImljb24iLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImxvYWRpbmciLCJsb2FkaW5nSWNvbiIsImNsb3NlIiwiY2xvc2VJY29uIiwic2VhcmNoRGVsYXkiKSksaD1kdChKZShhLCJvdmVybGF5IiwidHJhbnNpdGlvbiIsImNvbnRlbnQiLCJkaXNtaXNzaWJsZSIsImZ1bGxzY3JlZW4iLCJtb2RhbCIsInBvcnRhbCIpKSxvPSgpPT5RZShzLFsiY29udGVudCJdKSx1PUYoKCk9PlBlKHt9LGEuZnVzZSx7ZnVzZU9wdGlvbnM6e319KSksZz1GKCgpPT5kZSh7ZXh0ZW5kOmRlKG1pKSwuLi5yLnVpPy5kYXNoYm9hcmRTZWFyY2h8fHt9fSkoe3NpemU6YS5zaXplLGZ1bGxzY3JlZW46YS5mdWxsc2NyZWVufSkpLHY9RigoKT0+e2NvbnN0IFM9W107cmV0dXJuIFMucHVzaCguLi5hLmdyb3Vwc3x8W10pLGEuY29sb3JNb2RlJiYhZD8uZm9yY2VkJiZTLnB1c2goe2lkOiJ0aGVtZSIsbGFiZWw6YygiZGFzaGJvYXJkU2VhcmNoLnRoZW1lIiksaXRlbXM6W3tsYWJlbDpjKCJjb2xvck1vZGUuc3lzdGVtIiksaWNvbjpyLnVpLmljb25zLnN5c3RlbSxhY3RpdmU6ZC5wcmVmZXJlbmNlPT09InN5c3RlbSIsb25TZWxlY3Q6KCk9PntkLnByZWZlcmVuY2U9InN5c3RlbSJ9fSx7bGFiZWw6YygiY29sb3JNb2RlLmxpZ2h0IiksaWNvbjpyLnVpLmljb25zLmxpZ2h0LGFjdGl2ZTpkLnByZWZlcmVuY2U9PT0ibGlnaHQiLG9uU2VsZWN0OigpPT57ZC5wcmVmZXJlbmNlPSJsaWdodCJ9fSx7bGFiZWw6YygiY29sb3JNb2RlLmRhcmsiKSxpY29uOnIudWkuaWNvbnMuZGFyayxhY3RpdmU6ZC5wcmVmZXJlbmNlPT09ImRhcmsiLG9uU2VsZWN0OigpPT57ZC5wcmVmZXJlbmNlPSJkYXJrIn19XX0pLFN9KSx4PXRhKCJjb21tYW5kUGFsZXR0ZVJlZiIpO2Z1bmN0aW9uIEkoUyl7Uy5kaXNhYmxlZHx8KG4udmFsdWU9ITEsaS52YWx1ZT0iIil9cmV0dXJuIHlpKHtbYS5zaG9ydGN1dF06e3VzaW5nSW5wdXQ6ITAsaGFuZGxlcjooKT0+bi52YWx1ZT0hbi52YWx1ZX19KSxlKHtjb21tYW5kUGFsZXR0ZVJlZjp4fSksKFMsYik9Pih3KCksRShBdCxZKHtvcGVuOm4udmFsdWUsIm9uVXBkYXRlOm9wZW4iOmJbMl18fChiWzJdPXk9Pm4udmFsdWU9eSksdGl0bGU6dC50aXRsZXx8bChjKSgiZGFzaGJvYXJkU2VhcmNoLnRpdGxlIiksZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvbnx8bChjKSgiZGFzaGJvYXJkU2VhcmNoLmRlc2NyaXB0aW9uIil9LGwoaCkseyJkYXRhLXNsb3QiOiJtb2RhbCIsY2xhc3M6Zy52YWx1ZS5tb2RhbCh7Y2xhc3M6W2wobSk/Lm1vZGFsLGEuY2xhc3NdfSl9KSx7Y29udGVudDpDKHk9PltSKFMuJHNsb3RzLCJjb250ZW50IixEZShUZSh5KSksKCk9PltEKGhpLFkoe3JlZl9rZXk6ImNvbW1hbmRQYWxldHRlUmVmIixyZWY6eCwic2VhcmNoLXRlcm0iOmkudmFsdWUsIm9uVXBkYXRlOnNlYXJjaFRlcm0iOmJbMF18fChiWzBdPWs9PmkudmFsdWU9ayl9LGwocCkse2dyb3Vwczp2LnZhbHVlLGZ1c2U6dS52YWx1ZSxpbnB1dDp7Zml4ZWQ6ITB9LHVpOmwoSnQpKGwoUWUpKGcudmFsdWUsWyJtb2RhbCJdKSxsKG0pKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6SSwib25VcGRhdGU6b3BlbiI6YlsxXXx8KGJbMV09az0+bi52YWx1ZT1rKX0pLHh0KHtfOjJ9LFtnZShvKCksKGssQik9Pih7bmFtZTpCLGZuOkMoJD0+W1IoUy4kc2xvdHMsQixEZShUZSgkKSkpXSl9KSldKSwxMDQwLFsic2VhcmNoLXRlcm0iLCJncm91cHMiLCJmdXNlIiwidWkiXSldKV0pLF86M30sMTYsWyJvcGVuIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImNsYXNzIl0pKX19LHdpPXtiYXNlOiJmaXhlZCBpbnNldC0wIGZsZXggb3ZlcmZsb3ctaGlkZGVuIn0seGk9e19fbmFtZToiVURhc2hib2FyZEdyb3VwIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxzdG9yYWdlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJjb29raWUifSxzdG9yYWdlS2V5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJkYXNoYm9hcmQifSxwZXJzaXN0ZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sdW5pdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiJSJ9fSxzZXR1cCh0KXtjb25zdCBlPXQsYT1YdCgpLHM9RWUoKSxuPU9lKCJkYXNoYm9hcmRHcm91cCIsZSksaT1GKCgpPT5kZSh7ZXh0ZW5kOmRlKHdpKSwuLi5zLnVpPy5kYXNoYm9hcmRHcm91cHx8e319KSksYz1fKCExKSxkPV8oITEpO3JldHVybiBrbih7c3RvcmFnZTplLnN0b3JhZ2Usc3RvcmFnZUtleTplLnN0b3JhZ2VLZXkscGVyc2lzdGVudDplLnBlcnNpc3RlbnQsdW5pdDplLnVuaXQsc2lkZWJhck9wZW46Yyx0b2dnbGVTaWRlYmFyOigpPT57YS5ob29rcy5jYWxsSG9vaygiZGFzaGJvYXJkOnNpZGViYXI6dG9nZ2xlIil9LHNpZGViYXJDb2xsYXBzZWQ6ZCxjb2xsYXBzZVNpZGViYXI6cj0+e2EuaG9va3MuY2FsbEhvb2soImRhc2hib2FyZDpzaWRlYmFyOmNvbGxhcHNlIixyKX0sdG9nZ2xlU2VhcmNoOigpPT57YS5ob29rcy5jYWxsSG9vaygiZGFzaGJvYXJkOnNlYXJjaDp0b2dnbGUiKX19KSwocixtKT0+KHcoKSxFKGwoUXQpLHthczp0LmFzLGNsYXNzOlAoaS52YWx1ZSh7Y2xhc3M6W2wobik/LmJhc2UsZS5jbGFzc119KSl9LHtkZWZhdWx0OkMoKCk9PltSKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19LFNpPXtrZXk6MH0sa2k9e2NsYXNzOiJwLTIgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQifSxJaT1bImRpc2FibGVkIiwib25DbGljayJdLEFpPXtjbGFzczoidHJ1bmNhdGUifSwkaT17a2V5OjAsY2xhc3M6InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCJ9LEJpPXtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sQ2k9e2tleToyLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0yIHB5LTIiLCJkYXRhLXRlc3RpZCI6ImJyYW5kLW1hcmsifSxEaT17a2V5OjAsY2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LFRpPXtrZXk6MSxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiBweS0yIiwiZGF0YS10ZXN0aWQiOiJicmFuZC1tYXJrIn0sTWk9e2tleTowLGNsYXNzOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSxMaT1tZSh7X19uYW1lOiJJbXBlcnNvbmF0ZU1lbnUiLHByb3BzOntjb2xsYXBzZWQ6e3R5cGU6Qm9vbGVhbn19LHNldHVwKHQpe2NvbnN0IGU9aG4oKSxhPW50KCkscz1zdCgpLG49RigoKT0+KGEuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10pLmluY2x1ZGVzKCJ1c2VyOmltcGVyc29uYXRlIil8fGEuaXNJbXBlcnNvbmF0aW5nKSxpPUYoKCk9PnNhKGEuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6cmVhZCIpKSxjPUYoKCk9Pm4udmFsdWV8fGkudmFsdWUpLGQ9XyghMSkscj1fKG51bGwpLG09XyghMSkse2l0ZW1zOnAscTpoLGhhc01vcmU6byxsb2FkaW5nOnUsbG9hZE1vcmU6ZyxyZXNldDp2fT11YShrPT5lLmZldGNoSW1wZXJzb25hdGlvbkNhbmRpZGF0ZXMoaykudGhlbihCPT5CKSx7aW1tZWRpYXRlOiExfSk7bmEocixnLHtkaXN0YW5jZTo4MCxjYW5Mb2FkTW9yZTooKT0+by52YWx1ZX0pLHVlKGQsaz0+e2smJih2KCksZygpKX0pO2FzeW5jIGZ1bmN0aW9uIHgoayxCKXttLnZhbHVlPSEwLGQudmFsdWU9ITE7dHJ5e2F3YWl0IGEuc3RhcnRJbXBlcnNvbmF0aW9uKGspLHMuYWRkKHt0aXRsZTpgTm93IGltcGVyc29uYXRpbmcgJHtCfWAsY29sb3I6InN1Y2Nlc3MifSksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfWNhdGNoKCQpe2NvbnN0IHE9JDtzLmFkZCh7dGl0bGU6IkltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjpxPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz9xPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7bS52YWx1ZT0hMX19YXN5bmMgZnVuY3Rpb24gSSgpe20udmFsdWU9ITA7dHJ5e2F3YWl0IGEuc3RvcEltcGVyc29uYXRpb24oKSxzLmFkZCh7dGl0bGU6IlN0b3BwZWQgaW1wZXJzb25hdGlvbiIsY29sb3I6InN1Y2Nlc3MifSksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfWNhdGNoKGspe2NvbnN0IEI9aztzLmFkZCh7dGl0bGU6IlN0b3AgaW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOkI/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P0I/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXttLnZhbHVlPSExfX1jb25zdCBTPUYoKCk9PmEuaXNJbXBlcnNvbmF0aW5nP2EuY3VycmVudFVzZXI/Lm5hbWU/P2EuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWw6YS5jdXJyZW50VXNlcj8ubmFtZT8/YS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbD8/Imd1ZXN0IiksYj1GKCgpPT5hLmlzSW1wZXJzb25hdGluZz8iaS1sdWNpZGUtdXNlci1jb2ciOiJpLWx1Y2lkZS1jdWJvaWQiKSx5PUYoKCk9Pltbe2xhYmVsOmBSZWFsIHVzZXI6ICR7YS5pbXBlcnNvbmF0b3I/Lm5hbWU/P2EuaW1wZXJzb25hdG9yPy5wcmltYXJ5X2VtYWlsfWAsaWNvbjoiaS1sdWNpZGUtc2hpZWxkIixkaXNhYmxlZDohMH0se2xhYmVsOiJTdG9wIGltcGVyc29uYXRpbmciLGljb246ImktbHVjaWRlLWxvZy1vdXQiLGNvbG9yOiJ3YXJuaW5nIixvblNlbGVjdDooKT0+e0koKX19XV0pO3JldHVybihrLEIpPT57Y29uc3QgJD1DZSxxPXJhLGo9JHQsSD1rZSxNPW9hO3JldHVybiBsKGMpPyh3KCkseigiZGl2IixTaSxbbChhKS5pc0ltcGVyc29uYXRpbmc/KHcoKSxFKHEse2tleTowLGl0ZW1zOmwoeSksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn0sdWk6e2NvbnRlbnQ6dC5jb2xsYXBzZWQ/InctNTYiOiJ3LSgtLXJla2EtZHJvcGRvd24tbWVudS10cmlnZ2VyLXdpZHRoKSJ9fSx7ZGVmYXVsdDpDKCgpPT5bRCgkLHtpY29uOmwoYiksbGFiZWw6dC5jb2xsYXBzZWQ/dm9pZCAwOmwoUyksInRyYWlsaW5nLWljb24iOnQuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGJsb2NrOiIiLHNxdWFyZTp0LmNvbGxhcHNlZCxjbGFzczoiZGF0YS1bc3RhdGU9b3Blbl06YmctZWxldmF0ZWQgcHktMiIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJpbXBlcnNvbmF0ZS1tZW51LXRyaWdnZXIifSxudWxsLDgsWyJpY29uIiwibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXSksXzoxfSw4LFsiaXRlbXMiLCJ1aSJdKSk6bChuKT8odygpLEUoTSx7a2V5OjEsb3BlbjpsKGQpLCJvblVwZGF0ZTpvcGVuIjpCWzFdfHwoQlsxXT1VPT4kZShkKT9kLnZhbHVlPVU6bnVsbCksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn19LHtjb250ZW50OkMoKCk9PltYKCJkaXYiLHtjbGFzczpQKCh0LmNvbGxhcHNlZCwidy01NiIpKX0sW1goImRpdiIsa2ksW0Qoaix7bW9kZWxWYWx1ZTpsKGgpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpCWzBdfHwoQlswXT1VPT4kZShoKT9oLnZhbHVlPVU6bnVsbCksaWNvbjoiaS1sdWNpZGUtc2VhcmNoIixwbGFjZWhvbGRlcjoiU2VhcmNoIHVzZXJz4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksWCgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjpyLGNsYXNzOiJtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8gcHktMSJ9LFsodyghMCkseihwZSxudWxsLGdlKGwocCksVT0+KHcoKSx6KCJidXR0b24iLHtrZXk6VS5pZCx0eXBlOiJidXR0b24iLGRpc2FibGVkOiEhVS5pc19zdXNwZW5kZWR8fGwobSksY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCIsb25DbGljazplZT0+eChVLmlkLFUubmFtZT8/VS5wcmltYXJ5X2VtYWlsKX0sW0QoSCx7bmFtZToiaS1sdWNpZGUtdXNlciIsY2xhc3M6InNpemUtNCBzaHJpbmstMCJ9KSxYKCJzcGFuIixBaSxjZShVLm5hbWU/P1UudXNlcm5hbWU/P1UucHJpbWFyeV9lbWFpbCksMSldLDgsSWkpKSksMTI4KSksbCh1KT8odygpLHooImRpdiIsJGksIiBMb2FkaW5n4oCmICIpKTpsKHApLmxlbmd0aD09PTA/KHcoKSx6KCJkaXYiLEJpLCIgTm8gdXNlcnMgYXZhaWxhYmxlLiAiKSk6SygiIiwhMCldLDUxMildLDIpXSksZGVmYXVsdDpDKCgpPT5bRCgkLHtpY29uOmwoYiksbGFiZWw6dC5jb2xsYXBzZWQ/dm9pZCAwOmwoUyksInRyYWlsaW5nLWljb24iOnQuY29sbGFwc2VkP3ZvaWQgMDoiaS1sdWNpZGUtY2hldnJvbnMtdXAtZG93biIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixibG9jazoiIixzcXVhcmU6dC5jb2xsYXBzZWQsY2xhc3M6ImRhdGEtW3N0YXRlPW9wZW5dOmJnLWVsZXZhdGVkIHB5LTIiLHVpOnt0cmFpbGluZ0ljb246InRleHQtZGltbWVkIn0sImRhdGEtdGVzdGlkIjoiaW1wZXJzb25hdGUtbWVudS10cmlnZ2VyIn0sbnVsbCw4LFsiaWNvbiIsImxhYmVsIiwidHJhaWxpbmctaWNvbiIsInNxdWFyZSJdKV0pLF86MX0sOCxbIm9wZW4iXSkpOih3KCkseigiZGl2IixDaSxbRChILHtuYW1lOiJpLWx1Y2lkZS1jdWJvaWQiLGNsYXNzOiJzaXplLTUgdGV4dC1wcmltYXJ5In0pLHQuY29sbGFwc2VkP0soIiIsITApOih3KCkseigic3BhbiIsRGksIk51eHQgVGVtcGxhdGUiKSldKSldKSk6KHcoKSx6KCJkaXYiLFRpLFtEKEgse25hbWU6ImktbHVjaWRlLWN1Ym9pZCIsY2xhc3M6InNpemUtNSB0ZXh0LXByaW1hcnkifSksdC5jb2xsYXBzZWQ/SygiIiwhMCk6KHcoKSx6KCJzcGFuIixNaSwiTnV4dCBUZW1wbGF0ZSIpKV0pKX19fSksRWk9T2JqZWN0LmFzc2lnbihMaSx7X19uYW1lOiJJbXBlcnNvbmF0ZU1lbnUifSksT2k9e2NsYXNzOiJ3LTU2IGZsZXggZmxleC1jb2wifSxfaT17Y2xhc3M6InAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCJ9LHppPVsib25DbGljayJdLEZpPXtjbGFzczoidHJ1bmNhdGUifSxQaT17a2V5OjAsY2xhc3M6InB4LTMgcHktMS41IHRleHQtc20gdGV4dC1tdXRlZCJ9LHFpPXtrZXk6MSxjbGFzczoicHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkIn0sUmk9e2NsYXNzOiJib3JkZXItdCBib3JkZXItZGVmYXVsdCBwLTEifSxOaT17Y2xhc3M6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIifSxLaT1tZSh7X19uYW1lOiJPcmdhbml6YXRpb25NZW51Iixwcm9wczp7Y29sbGFwc2VkOnt0eXBlOkJvb2xlYW59fSxzZXR1cCh0KXtjb25zdCBlPW50KCksYT1nbigpLHM9c3QoKSxuPW1uKCksaT1fKG51bGwpLHtpdGVtczpjLHE6ZCxoYXNNb3JlOnIsbG9hZGluZzptLGxvYWRNb3JlOnAscmVzZXQ6aH09dWEoYj0+YS5mZXRjaE9yZ2FuaXphdGlvbnMoYikudGhlbih5PT55KSx7aW1tZWRpYXRlOiExfSk7bmEoaSxwLHtkaXN0YW5jZTo4MCxjYW5Mb2FkTW9yZTooKT0+ci52YWx1ZX0pO2NvbnN0IG89XyghMSksdT1fKCExKSxnPV8oITEpLHY9XygiIik7dWUobyxiPT57YiYmKGgoKSxwKCkpfSksdWUodSxiPT57Ynx8KHYudmFsdWU9IiIpfSk7YXN5bmMgZnVuY3Rpb24geChiKXtiIT09ZS5hY3RpdmVPcmdhbml6YXRpb25JZCYmKG8udmFsdWU9ITEsYXdhaXQgZS5zd2l0Y2hPcmdhbml6YXRpb24oYiksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpKX1hc3luYyBmdW5jdGlvbiBJKCl7Y29uc3QgYj12LnZhbHVlLnRyaW0oKTtpZihiKXtnLnZhbHVlPSEwO3RyeXtjb25zdCB5PWF3YWl0IGEuY3JlYXRlT3JnYW5pemF0aW9uKHtuYW1lOmJ9KTtzLmFkZCh7dGl0bGU6Ik9yZ2FuaXphdGlvbiBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KSx1LnZhbHVlPSExLG8udmFsdWU9ITEsYXdhaXQgZS5zd2l0Y2hPcmdhbml6YXRpb24oeS5pZCksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfWNhdGNoKHkpe2NvbnN0IGs9eTtzLmFkZCh7dGl0bGU6IkZhaWxlZCB0byBjcmVhdGUgb3JnYW5pemF0aW9uIixkZXNjcmlwdGlvbjprPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7Zy52YWx1ZT0hMX19fWNvbnN0IFM9RigoKT0+Yy52YWx1ZS5maW5kKGI9PmIuaWQ9PT1lLmFjdGl2ZU9yZ2FuaXphdGlvbklkKT8ubmFtZT8/ZS5jdXJyZW50VXNlcj8ubmFtZT8/Ik9yZ2FuaXphdGlvbiIpO3JldHVybihiLHkpPT57Y29uc3Qgaz1DZSxCPSR0LCQ9a2UscT1vYSxqPXZuLEg9QXQ7cmV0dXJuIHcoKSx6KHBlLG51bGwsW0QocSx7b3BlbjpsKG8pLCJvblVwZGF0ZTpvcGVuIjp5WzNdfHwoeVszXT1NPT4kZShvKT9vLnZhbHVlPU06bnVsbCksY29udGVudDp7YWxpZ246ImNlbnRlciIsY29sbGlzaW9uUGFkZGluZzoxMn19LHtjb250ZW50OkMoKCk9PltYKCJkaXYiLE9pLFtYKCJkaXYiLF9pLFtEKEIse21vZGVsVmFsdWU6bChkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6eVswXXx8KHlbMF09TT0+JGUoZCk/ZC52YWx1ZT1NOm51bGwpLGljb246ImktbHVjaWRlLXNlYXJjaCIscGxhY2Vob2xkZXI6IlNlYXJjaCBvcmdhbml6YXRpb25z4oCmIixzaXplOiJzbSIsYXV0b2ZvY3VzOiIifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksWCgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjppLGNsYXNzOiJtYXgtaC02MCBvdmVyZmxvdy15LWF1dG8gcHktMSJ9LFsodyghMCkseihwZSxudWxsLGdlKGwoYyksTT0+KHcoKSx6KCJidXR0b24iLHtrZXk6TS5pZCx0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQiLG9uQ2xpY2s6VT0+eChNLmlkKX0sW0QoJCx7bmFtZTpNLmlkPT09bChlKS5hY3RpdmVPcmdhbml6YXRpb25JZD8iaS1sdWNpZGUtY2hlY2siOiJpLWx1Y2lkZS1idWlsZGluZyIsY2xhc3M6InNpemUtNCBzaHJpbmstMCJ9LG51bGwsOCxbIm5hbWUiXSksWCgic3BhbiIsRmksY2UoTS5uYW1lKSwxKV0sOCx6aSkpKSwxMjgpKSxsKG0pPyh3KCkseigiZGl2IixQaSwiIExvYWRpbmfigKYgIikpOmwoYykubGVuZ3RoPT09MCYmIWwobSk/KHcoKSx6KCJkaXYiLHFpLCIgTm8gb3JnYW5pemF0aW9ucyBmb3VuZC4gIikpOksoIiIsITApXSw1MTIpLFgoImRpdiIsUmksW1goImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LXNtIGhvdmVyOmJnLWVsZXZhdGVkIGN1cnNvci1wb2ludGVyIHRleHQtbGVmdCByb3VuZGVkIixvbkNsaWNrOnlbMV18fCh5WzFdPU09PntvLnZhbHVlPSExLGwobikucHVzaCgiL29yZ2FuaXphdGlvbiIpfSl9LFtEKCQse25hbWU6ImktbHVjaWRlLXNldHRpbmdzIixjbGFzczoic2l6ZS00IHNocmluay0wIHRleHQtbXV0ZWQifSkseVs3XXx8KHlbN109WCgic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIk1hbmFnZSBvcmdhbml6YXRpb24iLC0xKSldKSxYKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwgcHgtMyBweS0xLjUgdGV4dC1zbSBob3ZlcjpiZy1lbGV2YXRlZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWxlZnQgcm91bmRlZCIsb25DbGljazp5WzJdfHwoeVsyXT1NPT57by52YWx1ZT0hMSx1LnZhbHVlPSEwfSl9LFtEKCQse25hbWU6ImktbHVjaWRlLXBsdXMiLGNsYXNzOiJzaXplLTQgc2hyaW5rLTAgdGV4dC1tdXRlZCJ9KSx5WzhdfHwoeVs4XT1YKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiQ3JlYXRlIG9yZ2FuaXphdGlvbiIsLTEpKV0pXSldKV0pLGRlZmF1bHQ6QygoKT0+W0Qoayx7bGFiZWw6dC5jb2xsYXBzZWQ/dm9pZCAwOmwoUyksaWNvbjoiaS1sdWNpZGUtYnVpbGRpbmciLCJ0cmFpbGluZy1pY29uIjp0LmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOnQuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifX0sbnVsbCw4LFsibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXSksXzoxfSw4LFsib3BlbiJdKSxEKEgse29wZW46bCh1KSwib25VcGRhdGU6b3BlbiI6eVs2XXx8KHlbNl09TT0+JGUodSk/dS52YWx1ZT1NOm51bGwpLHRpdGxlOiJDcmVhdGUgb3JnYW5pemF0aW9uIn0se2JvZHk6QygoKT0+W0Qoaix7bGFiZWw6Ik5hbWUiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpDKCgpPT5bRChCLHttb2RlbFZhbHVlOmwodiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnlbNF18fCh5WzRdPU09PiRlKHYpP3YudmFsdWU9TTpudWxsKSxwbGFjZWhvbGRlcjoiZS5nLiBBY21lIENvcnAiLGNsYXNzOiJ3LWZ1bGwiLGF1dG9mb2N1czoiIixvbktleWRvd246YWEoSSxbImVudGVyIl0pfSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSldKSxmb290ZXI6QygoKT0+W1goImRpdiIsTmksW0Qoayx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOnlbNV18fCh5WzVdPU09PnUudmFsdWU9ITEpfSksRChrLHtsYWJlbDoiQ3JlYXRlIixsb2FkaW5nOmwoZyksZGlzYWJsZWQ6IWwodikudHJpbSgpLG9uQ2xpY2s6SX0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldKSxfOjF9LDgsWyJvcGVuIl0pXSw2NCl9fX0pLFVpPU9iamVjdC5hc3NpZ24oS2kse19fbmFtZToiT3JnYW5pemF0aW9uTWVudSJ9KSxqaT1tZSh7X19uYW1lOiJVc2VyTWVudSIscHJvcHM6e2NvbGxhcHNlZDp7dHlwZTpCb29sZWFufX0sc2V0dXAodCl7Y29uc3QgZT1NdCgpLGE9bnQoKSxzPXN0KCksbj1GKCgpPT4oe25hbWU6YS5jdXJyZW50VXNlcj8ubmFtZT8/YS5jdXJyZW50VXNlcj8ucHJpbWFyeV9lbWFpbD8/Ikd1ZXN0IixlbWFpbDphLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsPz8iIixhdmF0YXI6YS5jdXJyZW50VXNlcj8uYXZhdGFyP3tzcmM6YS5jdXJyZW50VXNlci5hdmF0YXIsYWx0OmEuY3VycmVudFVzZXIubmFtZT8/IiJ9OnZvaWQgMH0pKTthc3luYyBmdW5jdGlvbiBpKCl7dHJ5e2F3YWl0IGEubG9nb3V0KCl9ZmluYWxseXthd2FpdCB5bigiL2F1dGgvbG9naW4iKX19YXN5bmMgZnVuY3Rpb24gYygpe3RyeXthd2FpdCBhLnN0b3BJbXBlcnNvbmF0aW9uKCkscy5hZGQoe3RpdGxlOiJTdG9wcGVkIGltcGVyc29uYXRpb24iLGNvbG9yOiJzdWNjZXNzIn0pLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX1jYXRjaChyKXtjb25zdCBtPXI7cy5hZGQoe3RpdGxlOiJTdG9wIGltcGVyc29uYXRpb24gZmFpbGVkIixkZXNjcmlwdGlvbjptPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz9tPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1jb25zdCBkPUYoKCk9Pntjb25zdCByPVtdO3JldHVybiByLnB1c2goW3t0eXBlOiJsYWJlbCIsbGFiZWw6bi52YWx1ZS5uYW1lLGF2YXRhcjpuLnZhbHVlLmF2YXRhcn1dKSxhLmlzSW1wZXJzb25hdGluZyYmci5wdXNoKFt7bGFiZWw6YEJhY2sgdG8gJHthLmltcGVyc29uYXRvcj8ubmFtZT8/YS5pbXBlcnNvbmF0b3I/LnByaW1hcnlfZW1haWw/PyJhZG1pbiJ9YCxpY29uOiJpLWx1Y2lkZS1zaGllbGQiLGNvbG9yOiJ3YXJuaW5nIixvblNlbGVjdDooKT0+e2MoKX19XSksci5wdXNoKFt7bGFiZWw6IlByb2ZpbGUiLGljb246ImktbHVjaWRlLXVzZXIiLHRvOiIvc2V0dGluZ3MifV0pLHIucHVzaChbe2xhYmVsOiJBcHBlYXJhbmNlIixpY29uOiJpLWx1Y2lkZS1zdW4tbW9vbiIsY2hpbGRyZW46W3tsYWJlbDoiTGlnaHQiLGljb246ImktbHVjaWRlLXN1biIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ZS52YWx1ZT09PSJsaWdodCIsb25TZWxlY3QobSl7bS5wcmV2ZW50RGVmYXVsdCgpLGUucHJlZmVyZW5jZT0ibGlnaHQifX0se2xhYmVsOiJEYXJrIixpY29uOiJpLWx1Y2lkZS1tb29uIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDplLnZhbHVlPT09ImRhcmsiLG9uU2VsZWN0KG0pe20ucHJldmVudERlZmF1bHQoKSxlLnByZWZlcmVuY2U9ImRhcmsifX0se2xhYmVsOiJTeXN0ZW0iLGljb246ImktbHVjaWRlLWxhcHRvcCIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ZS5wcmVmZXJlbmNlPT09InN5c3RlbSIsb25TZWxlY3QobSl7bS5wcmV2ZW50RGVmYXVsdCgpLGUucHJlZmVyZW5jZT0ic3lzdGVtIn19XX1dKSxyLnB1c2goW3tsYWJlbDoiRG9jdW1lbnRhdGlvbiIsaWNvbjoiaS1sdWNpZGUtYm9vay1vcGVuIix0bzoiaHR0cHM6Ly91aS5udXh0LmNvbS9kb2NzL2dldHRpbmctc3RhcnRlZC9pbnN0YWxsYXRpb24vbnV4dCIsdGFyZ2V0OiJfYmxhbmsifSx7bGFiZWw6IkdpdEh1YiByZXBvc2l0b3J5IixpY29uOiJpLXNpbXBsZS1pY29ucy1naXRodWIiLHRvOiJodHRwczovL2dpdGh1Yi5jb20vdGhlY29kZW9yaWdpbi9udXh0LXRlbXBsYXRlIix0YXJnZXQ6Il9ibGFuayJ9LHtsYWJlbDoiTG9nIG91dCIsaWNvbjoiaS1sdWNpZGUtbG9nLW91dCIsb25TZWxlY3Q6KCk9PntpKCl9fV0pLHJ9KTtyZXR1cm4ocixtKT0+e2NvbnN0IHA9Q2UsaD1yYTtyZXR1cm4gdygpLEUoaCx7aXRlbXM6bChkKSxjb250ZW50OnthbGlnbjoiY2VudGVyIixjb2xsaXNpb25QYWRkaW5nOjEyfSx1aTp7Y29udGVudDp0LmNvbGxhcHNlZD8idy01NiI6InctKC0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgpIn19LHtkZWZhdWx0OkMoKCk9PltEKHAsWShsKG4pLmF2YXRhcj97YXZhdGFyOmwobikuYXZhdGFyfTp7aWNvbjoiaS1sdWNpZGUtdXNlciJ9LHtsYWJlbDp0LmNvbGxhcHNlZD92b2lkIDA6bChuKS5uYW1lLCJ0cmFpbGluZy1pY29uIjp0LmNvbGxhcHNlZD92b2lkIDA6ImktbHVjaWRlLWNoZXZyb25zLXVwLWRvd24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsYmxvY2s6IiIsc3F1YXJlOnQuY29sbGFwc2VkLGNsYXNzOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZy1lbGV2YXRlZCIsdWk6e3RyYWlsaW5nSWNvbjoidGV4dC1kaW1tZWQifSwiZGF0YS10ZXN0aWQiOiJ1c2VyLW1lbnUtdHJpZ2dlciJ9KSxudWxsLDE2LFsibGFiZWwiLCJ0cmFpbGluZy1pY29uIiwic3F1YXJlIl0pXSksXzoxfSw4LFsiaXRlbXMiLCJ1aSJdKX19fSksSGk9T2JqZWN0LmFzc2lnbihqaSx7X19uYW1lOiJVc2VyTWVudSJ9KTtmdW5jdGlvbiBXaSgpe2NvbnN0IHQ9SW4oImNvb2tpZS1jb25zZW50Iix7ZGVmYXVsdDooKT0+bnVsbCxtYXhBZ2U6MzE1MzZlMyxzYW1lU2l0ZToibGF4In0pLGU9c3QoKTtmdW5jdGlvbiBhKCl7dC52YWx1ZXx8ZS5hZGQoe2lkOiJjb29raWUtY29uc2VudCIsdGl0bGU6IldlIHVzZSBmaXJzdC1wYXJ0eSBjb29raWVzIHRvIGVuaGFuY2UgeW91ciBleHBlcmllbmNlIG9uIG91ciB3ZWJzaXRlLiIsZHVyYXRpb246MCxjbG9zZTohMSxhY3Rpb25zOlt7bGFiZWw6IkFjY2VwdCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLG9uQ2xpY2s6KCk9Pnt0LnZhbHVlPSJhY2NlcHRlZCJ9fSx7bGFiZWw6Ik9wdCBvdXQiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsb25DbGljazooKT0+e3QudmFsdWU9Im9wdGVkLW91dCJ9fV19KX1yZXR1cm57Y29uc2VudDp0LHByb21wdDphfX1jb25zdCB1bD1tZSh7X19uYW1lOiJkZWZhdWx0IixzZXR1cCh0KXtjb25zdCBlPV8oITEpLGE9TXQoKSxzPW50KCksbj1ibigpO0l0KCgpPT57V2koKS5wcm9tcHQoKX0pO2Z1bmN0aW9uIGkoKXtlLnZhbHVlPSExfWZ1bmN0aW9uIGMobyl7YS5wcmVmZXJlbmNlPW99Y29uc3QgZD1GKCgpPT5zLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKTtmdW5jdGlvbiByKG8pe3JldHVybiBvLmFiaWxpdHk/KEFycmF5LmlzQXJyYXkoby5hYmlsaXR5KT9vLmFiaWxpdHk6W28uYWJpbGl0eV0pLnNvbWUoZz0+c2EoZC52YWx1ZSxnKSk6ITB9ZnVuY3Rpb24gbShvKXtyZXR1cm57bGFiZWw6by5sYWJlbCxpY29uOm8uaWNvbix0bzpvLnRvLHR5cGU6by50eXBlLGRlZmF1bHRPcGVuOm8uZGVmYXVsdE9wZW4sY2hpbGRyZW46by5jaGlsZHJlbj8uZmlsdGVyKHIpLm1hcChtKSxvblNlbGVjdCgpe28ub25TZWxlY3Q/LigpLG8uY2hpbGRyZW4/Lmxlbmd0aHx8aSgpfX19Y29uc3QgcD1GKCgpPT57Y29uc3Qgbz1bLi4ubi5uYXZJdGVtcy52YWx1ZV0uc29ydCgoSSxTKT0+SS5wcmlvcml0eS1TLnByaW9yaXR5KSx1PW8uZmlsdGVyKEk9Pkkuc2VjdGlvbj09PSJtYWluIiYmcihJKSkubWFwKG0pLHY9e2xhYmVsOiJTZXR0aW5ncyIsaWNvbjoiaS1sdWNpZGUtc2V0dGluZ3MiLGRlZmF1bHRPcGVuOiEwLHR5cGU6InRyaWdnZXIiLGNoaWxkcmVuOm8uZmlsdGVyKEk9Pkkuc2VjdGlvbj09PSJzZXR0aW5ncyImJnIoSSkpLm1hcChtKX0seD1vLmZpbHRlcihJPT5JLnNlY3Rpb249PT0ic3ViIiYmcihJKSkubWFwKG0pO3JldHVybltbLi4udSx2XSx4XX0pLGg9RigoKT0+W3tpZDoiZ290byIsbGFiZWw6IkdvIHRvIixpdGVtczpwLnZhbHVlLmZsYXQoKS5mbGF0TWFwKG89Pm8uY2hpbGRyZW4/Lmxlbmd0aD9vLmNoaWxkcmVuOltvXSl9LHtpZDoidGhlbWUiLGxhYmVsOiJUaGVtZSIsaXRlbXM6W3tsYWJlbDoiU3lzdGVtIixpY29uOiJpLWx1Y2lkZS1tb25pdG9yIixvblNlbGVjdDooKT0+Yygic3lzdGVtIil9LHtsYWJlbDoiTGlnaHQiLGljb246ImktbHVjaWRlLXN1biIsb25TZWxlY3Q6KCk9PmMoImxpZ2h0Iil9LHtsYWJlbDoiRGFyayIsaWNvbjoiaS1sdWNpZGUtbW9vbiIsb25TZWxlY3Q6KCk9PmMoImRhcmsiKX1dfV0pO3JldHVybihvLHUpPT57Y29uc3QgZz1Obix2PUJuLHg9d24sST1tcyxTPWJpLGI9eGk7cmV0dXJuIHcoKSxFKGIse3VuaXQ6InJlbSJ9LHtkZWZhdWx0OkMoKCk9PltEKEkse2lkOiJkZWZhdWx0IixvcGVuOmwoZSksIm9uVXBkYXRlOm9wZW4iOnVbMF18fCh1WzBdPXk9PiRlKGUpP2UudmFsdWU9eTpudWxsKSxjb2xsYXBzaWJsZToiIixyZXNpemFibGU6IiIsY2xhc3M6ImJnLWVsZXZhdGVkLzI1Iix1aTp7aGVhZGVyOiJsZzpib3JkZXItYiBsZzpib3JkZXItZGVmYXVsdCIsZm9vdGVyOiJsZzpib3JkZXItdCBsZzpib3JkZXItZGVmYXVsdCIsYm9keToiZ2FwLTIgcHktNCJ9fSx7aGVhZGVyOkMoKHtjb2xsYXBzZWQ6eX0pPT5bRChVaSx7Y29sbGFwc2VkOnl9LG51bGwsOCxbImNvbGxhcHNlZCJdKV0pLGRlZmF1bHQ6Qygoe2NvbGxhcHNlZDp5fSk9PltEKGcse2NvbGxhcHNlZDp5LGNsYXNzOiJiZy10cmFuc3BhcmVudCByaW5nLWRlZmF1bHQifSxudWxsLDgsWyJjb2xsYXBzZWQiXSksRChFaSx7Y29sbGFwc2VkOnl9LG51bGwsOCxbImNvbGxhcHNlZCJdKSxEKHgsbnVsbCx7ZGVmYXVsdDpDKCgpPT5bRCh2LHtjb2xsYXBzZWQ6eSxpdGVtczpsKHApWzBdLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsdG9vbHRpcDoiIixwb3BvdmVyOiIifSxudWxsLDgsWyJjb2xsYXBzZWQiLCJpdGVtcyJdKSxEKHYse2NvbGxhcHNlZDp5LGl0ZW1zOmwocClbMV0sb3JpZW50YXRpb246InZlcnRpY2FsIix0b29sdGlwOiIiLHBvcG92ZXI6IiIsY2xhc3M6Im10LWF1dG8ifSxudWxsLDgsWyJjb2xsYXBzZWQiLCJpdGVtcyJdKV0pLF86Mn0sMTAyNCldKSxmb290ZXI6Qygoe2NvbGxhcHNlZDp5fSk9PltEKEhpLHtjb2xsYXBzZWQ6eX0sbnVsbCw4LFsiY29sbGFwc2VkIl0pXSksXzoxfSw4LFsib3BlbiJdKSxEKFMse2dyb3VwczpsKGgpfSxudWxsLDgsWyJncm91cHMiXSksUihvLiRzbG90cywiZGVmYXVsdCIpLEQoeCxudWxsLHtkZWZhdWx0OkMoKCk9PlsodyghMCkseihwZSxudWxsLGdlKGwobikub3ZlcmxheXMudmFsdWUseT0+KHcoKSxFKGVhKHkuY29tcG9uZW50KSx7a2V5OnkuaWR9KSkpLDEyOCkpXSksXzoxfSldKSxfOjN9KX19fSk7ZXhwb3J0e3VsIGFzIGRlZmF1bHR9Owo=", "/_nuxt/CGXgSMZh.js": "aW1wb3J0e0ogYXMgaSxLIGFzIHUsbyBhcyBjLGggYXMgcCx3IGFzIGQsTCBhcyBtLE0gYXMgZixpIGFzIGEsUCBhcyBiLGwgYXMgayxOIGFzIHR9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCB2PXtiYXNlOiJhbmltYXRlLXB1bHNlIHJvdW5kZWQtbWQgYmctZWxldmF0ZWQifSxnPXtfX25hbWU6IlVTa2VsZXRvbiIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHM9ZSxsPWkoKSxvPXUoInNrZWxldG9uIixzKSxyPWsoKCk9PnQoe2V4dGVuZDp0KHYpLC4uLmwudWk/LnNrZWxldG9ufHx7fX0pKTtyZXR1cm4obixDKT0+KGMoKSxwKGEoYikse2FzOmUuYXMsImFyaWEtYnVzeSI6InRydWUiLCJhcmlhLWxhYmVsIjoibG9hZGluZyIsImFyaWEtbGl2ZSI6InBvbGl0ZSIscm9sZToiYWxlcnQiLGNsYXNzOmYoci52YWx1ZSh7Y2xhc3M6W2Eobyk/LmJhc2Uscy5jbGFzc119KSl9LHtkZWZhdWx0OmQoKCk9PlttKG4uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19O2V4cG9ydHtnIGFzIF99Owo=", "/_nuxt/CIC7vsZ5.js": "aW1wb3J0e2YgYXMgeixuIGFzICQsZyBhcyBrLHAgYXMgQix6IGFzIEMsciBhcyBwLGFxIGFzIEEsbyBhcyBnLGMgYXMgUyxiIGFzIGUsdyBhcyBuLGkgYXMgYSxoIGFzIFYsaix2IGFzIE8sRCBhcyBSLEggYXMgRSxHIGFzIE0sQiBhcyBOLGwgYXMgRCxRIGFzIEZ9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBHfWZyb20iLi9CMU1lTHJpMy5qcyI7aW1wb3J0e18gYXMgcX1mcm9tIi4vN2NWU09DY3UuanMiO2ltcG9ydHtfIGFzIEh9ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnQiLi9kXzBOd1FMVS5qcyI7Y29uc3QgSj16KHtfX25hbWU6ImluZGV4IixzZXR1cChJKXtjb25zdCBiPSQoKSxpPU4oKSxjPWsoKSx7ZGF0YTp0LHJlZnJlc2g6dixlcnJvcjp5fT1CKCJhY3RpdmUtb3JnIiwoKT0+aS5mZXRjaE9yZ2FuaXphdGlvbigpKTtDKHkpO2NvbnN0IG09RCgoKT0+RihiLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdLCJ1c2VyOm1hbmFnZSIpKSxzPXAodC52YWx1ZT8ubmFtZT8/IiIpO0EodCxzLHtkaXJlY3Rpb246Imx0ciIsdHJhbnNmb3JtOntsdHI6bz0+bz8ubmFtZT8/IiJ9fSk7Y29uc3QgbD1wKCExKTthc3luYyBmdW5jdGlvbiB4KCl7bC52YWx1ZT0hMDt0cnl7YXdhaXQgaS51cGRhdGVPcmdhbml6YXRpb24oe25hbWU6cy52YWx1ZX0pLGF3YWl0IHYoKSxjLmFkZCh7dGl0bGU6Ik9yZ2FuaXphdGlvbiB1cGRhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChvKXtjLmFkZCh7dGl0bGU6IlVwZGF0ZSBmYWlsZWQiLGRlc2NyaXB0aW9uOm8/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyIiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2wudmFsdWU9ITF9fXJldHVybihvLHUpPT57Y29uc3QgVT1qLGQ9RyxmPUUscj1SLF89cSxoPUg7cmV0dXJuIGcoKSxTKCJkaXYiLG51bGwsW2UoZCx7dGl0bGU6IkdlbmVyYWwiLGRlc2NyaXB0aW9uOiJZb3VyIG9yZ2FuaXphdGlvbiBkZXRhaWxzLiIsdmFyaWFudDoibmFrZWQiLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixjbGFzczoibWItNCJ9LHtkZWZhdWx0Om4oKCk9PlthKG0pJiYhYSh0KT8uaXNfc3lzdGVtPyhnKCksVihVLHtrZXk6MCxsYWJlbDoiU2F2ZSBjaGFuZ2VzIixsb2FkaW5nOmEobCksY2xhc3M6InctZml0IGxnOm1zLWF1dG8iLG9uQ2xpY2s6eH0sbnVsbCw4LFsibG9hZGluZyJdKSk6TygiIiwhMCldKSxfOjF9KSxlKGQse3ZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0Om4oKCk9PltlKHIse2xhYmVsOiJOYW1lIixjbGFzczoiZmxleCBtYXgtc206ZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IGdhcC00In0se2RlZmF1bHQ6bigoKT0+W2UoZix7bW9kZWxWYWx1ZTphKHMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp1WzBdfHwodVswXT13PT5NKHMpP3MudmFsdWU9dzpudWxsKSxkaXNhYmxlZDohYShtKXx8YSh0KT8uaXNfc3lzdGVtfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiZGlzYWJsZWQiXSldKSxfOjF9KSxlKF8pLGUocix7bGFiZWw6IlNsdWciLGRlc2NyaXB0aW9uOiJVc2VkIGluIFVSTHMuIFJlYWQtb25seS4iLGNsYXNzOiJmbGV4IG1heC1zbTpmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTQifSx7ZGVmYXVsdDpuKCgpPT5bZShmLHsibW9kZWwtdmFsdWUiOmEodCk/LnNsdWcsZGlzYWJsZWQ6IiJ9LG51bGwsOCxbIm1vZGVsLXZhbHVlIl0pXSksXzoxfSksZShfKSxlKHIse2xhYmVsOiJNZW1iZXJzIixjbGFzczoiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC00In0se2RlZmF1bHQ6bigoKT0+W2UoaCx7bGFiZWw6YCR7YSh0KT8ubWVtYmVyQ291bnQ/PzB9YCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIn0sbnVsbCw4LFsibGFiZWwiXSldKSxfOjF9KV0pLF86MX0pXSl9fX0pO2V4cG9ydHtKIGFzIGRlZmF1bHR9Owo=", "/_nuxt/CW8fKnFE.js": "aW1wb3J0e0cgYXMgcHQsYXkgYXMgbXQsUiBhcyB0dCxyIGFzIFN0LGF6IGFzIHZ0LGYgYXMgQ3QsJCBhcyB3dCxpIGFzIHksYWggYXMgUnQsYXggYXMgaHQsSiBhcyBGdCxLIGFzIHl0LGFBIGFzIF90LGFCIGFzIFhlLFUgYXMgRyxhQyBhcyBLZSxhRCBhcyAkdCxhaiBhcyB4dCxvIGFzIF8sYyBhcyBJLGIgYXMgbGUsdyBhcyBSZSxhIGFzIHEsYUUgYXMgSixNIGFzIEQsRiBhcyBILHEgYXMgYixMIGFzIE4sYWEgYXMgZ2UsdiBhcyBYLGQgYXMgV2UsdCBhcyBKZSxoIGFzIGVlLFAgYXMgUHQsVyBhcyBWdCxsIGFzIGssYUYgYXMgSXQsYUcgYXMgTXQsTiBhcyBZZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHt1IGFzIER0fWZyb20iLi9DN1l5NnRSMy5qcyI7ZnVuY3Rpb24gQXQoZSl7cmV0dXJuIGU/ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk6IiJ9ZnVuY3Rpb24gSyhlLG8pe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj9lKG8pOmV9ZnVuY3Rpb24gTChlLG8pe3JldHVybiB0PT57by5zZXRTdGF0ZShuPT4oey4uLm4sW2VdOksodCxuW2VdKX0pKX19ZnVuY3Rpb24gbWUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBGdW5jdGlvbn1mdW5jdGlvbiB6dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeShvPT50eXBlb2Ygbz09Im51bWJlciIpfWZ1bmN0aW9uIE90KGUsbyl7Y29uc3QgdD1bXSxuPWk9PntpLmZvckVhY2gocj0+e3QucHVzaChyKTtjb25zdCBsPW8ocik7bCE9bnVsbCYmbC5sZW5ndGgmJm4obCl9KX07cmV0dXJuIG4oZSksdH1mdW5jdGlvbiBDKGUsbyx0KXtsZXQgbj1bXSxpO3JldHVybiByPT57bGV0IGw7dC5rZXkmJnQuZGVidWcmJihsPURhdGUubm93KCkpO2NvbnN0IHU9ZShyKTtpZighKHUubGVuZ3RoIT09bi5sZW5ndGh8fHUuc29tZSgoYyxwKT0+bltwXSE9PWMpKSlyZXR1cm4gaTtuPXU7bGV0IGc7aWYodC5rZXkmJnQuZGVidWcmJihnPURhdGUubm93KCkpLGk9byguLi51KSx0PT1udWxsfHx0Lm9uQ2hhbmdlPT1udWxsfHx0Lm9uQ2hhbmdlKGkpLHQua2V5JiZ0LmRlYnVnJiZ0IT1udWxsJiZ0LmRlYnVnKCkpe2NvbnN0IGM9TWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1sKSoxMDApLzEwMCxkPU1hdGgucm91bmQoKERhdGUubm93KCktZykqMTAwKS8xMDAvMTYscz0oZixtKT0+e2ZvcihmPVN0cmluZyhmKTtmLmxlbmd0aDxtOylmPSIgIitmO3JldHVybiBmfX1yZXR1cm4gaX19ZnVuY3Rpb24gdyhlLG8sdCxuKXtyZXR1cm57ZGVidWc6KCk9Pnt2YXIgaTtyZXR1cm4oaT1lPy5kZWJ1Z0FsbCkhPW51bGw/aTplW29dfSxrZXk6ITEsb25DaGFuZ2U6bn19ZnVuY3Rpb24gRXQoZSxvLHQsbil7Y29uc3QgaT0oKT0+e3ZhciBsO3JldHVybihsPXIuZ2V0VmFsdWUoKSkhPW51bGw/bDplLm9wdGlvbnMucmVuZGVyRmFsbGJhY2tWYWx1ZX0scj17aWQ6YCR7by5pZH1fJHt0LmlkfWAscm93Om8sY29sdW1uOnQsZ2V0VmFsdWU6KCk9Pm8uZ2V0VmFsdWUobikscmVuZGVyVmFsdWU6aSxnZXRDb250ZXh0OkMoKCk9PltlLHQsbyxyXSwobCx1LGEsZyk9Pih7dGFibGU6bCxjb2x1bW46dSxyb3c6YSxjZWxsOmcsZ2V0VmFsdWU6Zy5nZXRWYWx1ZSxyZW5kZXJWYWx1ZTpnLnJlbmRlclZhbHVlfSksdyhlLm9wdGlvbnMsImRlYnVnQ2VsbHMiKSl9O3JldHVybiBlLl9mZWF0dXJlcy5mb3JFYWNoKGw9PntsLmNyZWF0ZUNlbGw9PW51bGx8fGwuY3JlYXRlQ2VsbChyLHQsbyxlKX0se30pLHJ9ZnVuY3Rpb24gR3QoZSxvLHQsbil7dmFyIGkscjtjb25zdCB1PXsuLi5lLl9nZXREZWZhdWx0Q29sdW1uRGVmKCksLi4ub30sYT11LmFjY2Vzc29yS2V5O2xldCBnPShpPShyPXUuaWQpIT1udWxsP3I6YT90eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsPT0iZnVuY3Rpb24iP2EucmVwbGFjZUFsbCgiLiIsIl8iKTphLnJlcGxhY2UoL1wuL2csIl8iKTp2b2lkIDApIT1udWxsP2k6dHlwZW9mIHUuaGVhZGVyPT0ic3RyaW5nIj91LmhlYWRlcjp2b2lkIDAsYztpZih1LmFjY2Vzc29yRm4/Yz11LmFjY2Vzc29yRm46YSYmKGEuaW5jbHVkZXMoIi4iKT9jPWQ9PntsZXQgcz1kO2Zvcihjb25zdCBtIG9mIGEuc3BsaXQoIi4iKSl7dmFyIGY7cz0oZj1zKT09bnVsbD92b2lkIDA6ZlttXX1yZXR1cm4gc306Yz1kPT5kW3UuYWNjZXNzb3JLZXldKSwhZyl0aHJvdyBuZXcgRXJyb3I7bGV0IHA9e2lkOmAke1N0cmluZyhnKX1gLGFjY2Vzc29yRm46YyxwYXJlbnQ6bixkZXB0aDp0LGNvbHVtbkRlZjp1LGNvbHVtbnM6W10sZ2V0RmxhdENvbHVtbnM6QygoKT0+WyEwXSwoKT0+e3ZhciBkO3JldHVybltwLC4uLihkPXAuY29sdW1ucyk9PW51bGw/dm9pZCAwOmQuZmxhdE1hcChzPT5zLmdldEZsYXRDb2x1bW5zKCkpXX0sdyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxnZXRMZWFmQ29sdW1uczpDKCgpPT5bZS5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sZD0+e3ZhciBzO2lmKChzPXAuY29sdW1ucykhPW51bGwmJnMubGVuZ3RoKXtsZXQgZj1wLmNvbHVtbnMuZmxhdE1hcChtPT5tLmdldExlYWZDb2x1bW5zKCkpO3JldHVybiBkKGYpfXJldHVybltwXX0sdyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKX07Zm9yKGNvbnN0IGQgb2YgZS5fZmVhdHVyZXMpZC5jcmVhdGVDb2x1bW49PW51bGx8fGQuY3JlYXRlQ29sdW1uKHAsZSk7cmV0dXJuIHB9Y29uc3QgQT0iZGVidWdIZWFkZXJzIjtmdW5jdGlvbiBRZShlLG8sdCl7dmFyIG47bGV0IHI9e2lkOihuPXQuaWQpIT1udWxsP246by5pZCxjb2x1bW46byxpbmRleDp0LmluZGV4LGlzUGxhY2Vob2xkZXI6ISF0LmlzUGxhY2Vob2xkZXIscGxhY2Vob2xkZXJJZDp0LnBsYWNlaG9sZGVySWQsZGVwdGg6dC5kZXB0aCxzdWJIZWFkZXJzOltdLGNvbFNwYW46MCxyb3dTcGFuOjAsaGVhZGVyR3JvdXA6bnVsbCxnZXRMZWFmSGVhZGVyczooKT0+e2NvbnN0IGw9W10sdT1hPT57YS5zdWJIZWFkZXJzJiZhLnN1YkhlYWRlcnMubGVuZ3RoJiZhLnN1YkhlYWRlcnMubWFwKHUpLGwucHVzaChhKX07cmV0dXJuIHUociksbH0sZ2V0Q29udGV4dDooKT0+KHt0YWJsZTplLGhlYWRlcjpyLGNvbHVtbjpvfSl9O3JldHVybiBlLl9mZWF0dXJlcy5mb3JFYWNoKGw9PntsLmNyZWF0ZUhlYWRlcj09bnVsbHx8bC5jcmVhdGVIZWFkZXIocixlKX0pLHJ9Y29uc3QgSHQ9e2NyZWF0ZVRhYmxlOmU9PntlLmdldEhlYWRlckdyb3Vwcz1DKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwobyx0LG4saSk9Pnt2YXIgcixsO2NvbnN0IHU9KHI9bj8ubWFwKHA9PnQuZmluZChkPT5kLmlkPT09cCkpLmZpbHRlcihCb29sZWFuKSkhPW51bGw/cjpbXSxhPShsPWk/Lm1hcChwPT50LmZpbmQoZD0+ZC5pZD09PXApKS5maWx0ZXIoQm9vbGVhbikpIT1udWxsP2w6W10sZz10LmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocC5pZCkpJiYhKGkhPW51bGwmJmkuaW5jbHVkZXMocC5pZCkpKTtyZXR1cm4gZGUobyxbLi4udSwuLi5nLC4uLmFdLGUpfSx3KGUub3B0aW9ucyxBKSksZS5nZXRDZW50ZXJIZWFkZXJHcm91cHM9QygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKG8sdCxuLGkpPT4odD10LmZpbHRlcihyPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMoci5pZCkpJiYhKGkhPW51bGwmJmkuaW5jbHVkZXMoci5pZCkpKSxkZShvLHQsZSwiY2VudGVyIikpLHcoZS5vcHRpb25zLEEpKSxlLmdldExlZnRIZWFkZXJHcm91cHM9QygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdF0sKG8sdCxuKT0+e3ZhciBpO2NvbnN0IHI9KGk9bj8ubWFwKGw9PnQuZmluZCh1PT51LmlkPT09bCkpLmZpbHRlcihCb29sZWFuKSkhPW51bGw/aTpbXTtyZXR1cm4gZGUobyxyLGUsImxlZnQiKX0sdyhlLm9wdGlvbnMsQSkpLGUuZ2V0UmlnaHRIZWFkZXJHcm91cHM9QygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLChvLHQsbik9Pnt2YXIgaTtjb25zdCByPShpPW4/Lm1hcChsPT50LmZpbmQodT0+dS5pZD09PWwpKS5maWx0ZXIoQm9vbGVhbikpIT1udWxsP2k6W107cmV0dXJuIGRlKG8scixlLCJyaWdodCIpfSx3KGUub3B0aW9ucyxBKSksZS5nZXRGb290ZXJHcm91cHM9QygoKT0+W2UuZ2V0SGVhZGVyR3JvdXBzKCldLG89PlsuLi5vXS5yZXZlcnNlKCksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0TGVmdEZvb3Rlckdyb3Vwcz1DKCgpPT5bZS5nZXRMZWZ0SGVhZGVyR3JvdXBzKCldLG89PlsuLi5vXS5yZXZlcnNlKCksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0Q2VudGVyRm9vdGVyR3JvdXBzPUMoKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxvPT5bLi4ub10ucmV2ZXJzZSgpLHcoZS5vcHRpb25zLEEpKSxlLmdldFJpZ2h0Rm9vdGVyR3JvdXBzPUMoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLG89PlsuLi5vXS5yZXZlcnNlKCksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0RmxhdEhlYWRlcnM9QygoKT0+W2UuZ2V0SGVhZGVyR3JvdXBzKCldLG89Pm8ubWFwKHQ9PnQuaGVhZGVycykuZmxhdCgpLHcoZS5vcHRpb25zLEEpKSxlLmdldExlZnRGbGF0SGVhZGVycz1DKCgpPT5bZS5nZXRMZWZ0SGVhZGVyR3JvdXBzKCldLG89Pm8ubWFwKHQ9PnQuaGVhZGVycykuZmxhdCgpLHcoZS5vcHRpb25zLEEpKSxlLmdldENlbnRlckZsYXRIZWFkZXJzPUMoKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxvPT5vLm1hcCh0PT50LmhlYWRlcnMpLmZsYXQoKSx3KGUub3B0aW9ucyxBKSksZS5nZXRSaWdodEZsYXRIZWFkZXJzPUMoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLG89Pm8ubWFwKHQ9PnQuaGVhZGVycykuZmxhdCgpLHcoZS5vcHRpb25zLEEpKSxlLmdldENlbnRlckxlYWZIZWFkZXJzPUMoKCk9PltlLmdldENlbnRlckZsYXRIZWFkZXJzKCldLG89Pm8uZmlsdGVyKHQ9Pnt2YXIgbjtyZXR1cm4hKChuPXQuc3ViSGVhZGVycykhPW51bGwmJm4ubGVuZ3RoKX0pLHcoZS5vcHRpb25zLEEpKSxlLmdldExlZnRMZWFmSGVhZGVycz1DKCgpPT5bZS5nZXRMZWZ0RmxhdEhlYWRlcnMoKV0sbz0+by5maWx0ZXIodD0+e3ZhciBuO3JldHVybiEoKG49dC5zdWJIZWFkZXJzKSE9bnVsbCYmbi5sZW5ndGgpfSksdyhlLm9wdGlvbnMsQSkpLGUuZ2V0UmlnaHRMZWFmSGVhZGVycz1DKCgpPT5bZS5nZXRSaWdodEZsYXRIZWFkZXJzKCldLG89Pm8uZmlsdGVyKHQ9Pnt2YXIgbjtyZXR1cm4hKChuPXQuc3ViSGVhZGVycykhPW51bGwmJm4ubGVuZ3RoKX0pLHcoZS5vcHRpb25zLEEpKSxlLmdldExlYWZIZWFkZXJzPUMoKCk9PltlLmdldExlZnRIZWFkZXJHcm91cHMoKSxlLmdldENlbnRlckhlYWRlckdyb3VwcygpLGUuZ2V0UmlnaHRIZWFkZXJHcm91cHMoKV0sKG8sdCxuKT0+e3ZhciBpLHIsbCx1LGEsZztyZXR1cm5bLi4uKGk9KHI9b1swXSk9PW51bGw/dm9pZCAwOnIuaGVhZGVycykhPW51bGw/aTpbXSwuLi4obD0odT10WzBdKT09bnVsbD92b2lkIDA6dS5oZWFkZXJzKSE9bnVsbD9sOltdLC4uLihhPShnPW5bMF0pPT1udWxsP3ZvaWQgMDpnLmhlYWRlcnMpIT1udWxsP2E6W11dLm1hcChjPT5jLmdldExlYWZIZWFkZXJzKCkpLmZsYXQoKX0sdyhlLm9wdGlvbnMsQSkpfX07ZnVuY3Rpb24gZGUoZSxvLHQsbil7dmFyIGkscjtsZXQgbD0wO2NvbnN0IHU9ZnVuY3Rpb24oZCxzKXtzPT09dm9pZCAwJiYocz0xKSxsPU1hdGgubWF4KGwscyksZC5maWx0ZXIoZj0+Zi5nZXRJc1Zpc2libGUoKSkuZm9yRWFjaChmPT57dmFyIG07KG09Zi5jb2x1bW5zKSE9bnVsbCYmbS5sZW5ndGgmJnUoZi5jb2x1bW5zLHMrMSl9LDApfTt1KGUpO2xldCBhPVtdO2NvbnN0IGc9KGQscyk9Pntjb25zdCBmPXtkZXB0aDpzLGlkOltuLGAke3N9YF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIl8iKSxoZWFkZXJzOltdfSxtPVtdO2QuZm9yRWFjaChoPT57Y29uc3QgUj1bLi4ubV0ucmV2ZXJzZSgpWzBdLHg9aC5jb2x1bW4uZGVwdGg9PT1mLmRlcHRoO2xldCBQLHo9ITE7aWYoeCYmaC5jb2x1bW4ucGFyZW50P1A9aC5jb2x1bW4ucGFyZW50OihQPWguY29sdW1uLHo9ITApLFImJlI/LmNvbHVtbj09PVApUi5zdWJIZWFkZXJzLnB1c2goaCk7ZWxzZXtjb25zdCBNPVFlKHQsUCx7aWQ6W24scyxQLmlkLGg/LmlkXS5maWx0ZXIoQm9vbGVhbikuam9pbigiXyIpLGlzUGxhY2Vob2xkZXI6eixwbGFjZWhvbGRlcklkOno/YCR7bS5maWx0ZXIoVD0+VC5jb2x1bW49PT1QKS5sZW5ndGh9YDp2b2lkIDAsZGVwdGg6cyxpbmRleDptLmxlbmd0aH0pO00uc3ViSGVhZGVycy5wdXNoKGgpLG0ucHVzaChNKX1mLmhlYWRlcnMucHVzaChoKSxoLmhlYWRlckdyb3VwPWZ9KSxhLnB1c2goZikscz4wJiZnKG0scy0xKX0sYz1vLm1hcCgoZCxzKT0+UWUodCxkLHtkZXB0aDpsLGluZGV4OnN9KSk7ZyhjLGwtMSksYS5yZXZlcnNlKCk7Y29uc3QgcD1kPT5kLmZpbHRlcihmPT5mLmNvbHVtbi5nZXRJc1Zpc2libGUoKSkubWFwKGY9PntsZXQgbT0wLGg9MCxSPVswXTtmLnN1YkhlYWRlcnMmJmYuc3ViSGVhZGVycy5sZW5ndGg/KFI9W10scChmLnN1YkhlYWRlcnMpLmZvckVhY2goUD0+e2xldHtjb2xTcGFuOnoscm93U3BhbjpNfT1QO20rPXosUi5wdXNoKE0pfSkpOm09MTtjb25zdCB4PU1hdGgubWluKC4uLlIpO3JldHVybiBoPWgreCxmLmNvbFNwYW49bSxmLnJvd1NwYW49aCx7Y29sU3BhbjptLHJvd1NwYW46aH19KTtyZXR1cm4gcCgoaT0ocj1hWzBdKT09bnVsbD92b2lkIDA6ci5oZWFkZXJzKSE9bnVsbD9pOltdKSxhfWNvbnN0IEVlPShlLG8sdCxuLGkscixsKT0+e2xldCB1PXtpZDpvLGluZGV4Om4sb3JpZ2luYWw6dCxkZXB0aDppLHBhcmVudElkOmwsX3ZhbHVlc0NhY2hlOnt9LF91bmlxdWVWYWx1ZXNDYWNoZTp7fSxnZXRWYWx1ZTphPT57aWYodS5fdmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkoYSkpcmV0dXJuIHUuX3ZhbHVlc0NhY2hlW2FdO2NvbnN0IGc9ZS5nZXRDb2x1bW4oYSk7aWYoZyE9bnVsbCYmZy5hY2Nlc3NvckZuKXJldHVybiB1Ll92YWx1ZXNDYWNoZVthXT1nLmFjY2Vzc29yRm4odS5vcmlnaW5hbCxuKSx1Ll92YWx1ZXNDYWNoZVthXX0sZ2V0VW5pcXVlVmFsdWVzOmE9PntpZih1Ll91bmlxdWVWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4gdS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV07Y29uc3QgZz1lLmdldENvbHVtbihhKTtpZihnIT1udWxsJiZnLmFjY2Vzc29yRm4pcmV0dXJuIGcuY29sdW1uRGVmLmdldFVuaXF1ZVZhbHVlcz8odS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV09Zy5jb2x1bW5EZWYuZ2V0VW5pcXVlVmFsdWVzKHUub3JpZ2luYWwsbiksdS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV0pOih1Ll91bmlxdWVWYWx1ZXNDYWNoZVthXT1bdS5nZXRWYWx1ZShhKV0sdS5fdW5pcXVlVmFsdWVzQ2FjaGVbYV0pfSxyZW5kZXJWYWx1ZTphPT57dmFyIGc7cmV0dXJuKGc9dS5nZXRWYWx1ZShhKSkhPW51bGw/ZzplLm9wdGlvbnMucmVuZGVyRmFsbGJhY2tWYWx1ZX0sc3ViUm93czpbXSxnZXRMZWFmUm93czooKT0+T3QodS5zdWJSb3dzLGE9PmEuc3ViUm93cyksZ2V0UGFyZW50Um93OigpPT51LnBhcmVudElkP2UuZ2V0Um93KHUucGFyZW50SWQsITApOnZvaWQgMCxnZXRQYXJlbnRSb3dzOigpPT57bGV0IGE9W10sZz11O2Zvcig7Oyl7Y29uc3QgYz1nLmdldFBhcmVudFJvdygpO2lmKCFjKWJyZWFrO2EucHVzaChjKSxnPWN9cmV0dXJuIGEucmV2ZXJzZSgpfSxnZXRBbGxDZWxsczpDKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpXSxhPT5hLm1hcChnPT5FdChlLHUsZyxnLmlkKSksdyhlLm9wdGlvbnMsImRlYnVnUm93cyIpKSxfZ2V0QWxsQ2VsbHNCeUNvbHVtbklkOkMoKCk9Plt1LmdldEFsbENlbGxzKCldLGE9PmEucmVkdWNlKChnLGMpPT4oZ1tjLmNvbHVtbi5pZF09YyxnKSx7fSksdyhlLm9wdGlvbnMsImRlYnVnUm93cyIpKX07Zm9yKGxldCBhPTA7YTxlLl9mZWF0dXJlcy5sZW5ndGg7YSsrKXtjb25zdCBnPWUuX2ZlYXR1cmVzW2FdO2c9PW51bGx8fGcuY3JlYXRlUm93PT1udWxsfHxnLmNyZWF0ZVJvdyh1LGUpfXJldHVybiB1fSxMdD17Y3JlYXRlQ29sdW1uOihlLG8pPT57ZS5fZ2V0RmFjZXRlZFJvd01vZGVsPW8ub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwmJm8ub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwobyxlLmlkKSxlLmdldEZhY2V0ZWRSb3dNb2RlbD0oKT0+ZS5fZ2V0RmFjZXRlZFJvd01vZGVsP2UuX2dldEZhY2V0ZWRSb3dNb2RlbCgpOm8uZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbCgpLGUuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXM9by5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMmJm8ub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKG8sZS5pZCksZS5nZXRGYWNldGVkVW5pcXVlVmFsdWVzPSgpPT5lLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzP2UuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoKTpuZXcgTWFwLGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXM9by5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXMmJm8ub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzKG8sZS5pZCksZS5nZXRGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcygpfX19LG50PShlLG8sdCk9Pnt2YXIgbixpO2NvbnN0IHI9dD09bnVsbHx8KG49dC50b1N0cmluZygpKT09bnVsbD92b2lkIDA6bi50b0xvd2VyQ2FzZSgpO3JldHVybiEhKCEoKGk9ZS5nZXRWYWx1ZShvKSk9PW51bGx8fChpPWkudG9TdHJpbmcoKSk9PW51bGx8fChpPWkudG9Mb3dlckNhc2UoKSk9PW51bGwpJiZpLmluY2x1ZGVzKHIpKX07bnQuYXV0b1JlbW92ZT1lPT5CKGUpO2NvbnN0IG90PShlLG8sdCk9Pnt2YXIgbjtyZXR1cm4hISghKChuPWUuZ2V0VmFsdWUobykpPT1udWxsfHwobj1uLnRvU3RyaW5nKCkpPT1udWxsKSYmbi5pbmNsdWRlcyh0KSl9O290LmF1dG9SZW1vdmU9ZT0+QihlKTtjb25zdCBpdD0oZSxvLHQpPT57dmFyIG47cmV0dXJuKChuPWUuZ2V0VmFsdWUobykpPT1udWxsfHwobj1uLnRvU3RyaW5nKCkpPT1udWxsP3ZvaWQgMDpuLnRvTG93ZXJDYXNlKCkpPT09dD8udG9Mb3dlckNhc2UoKX07aXQuYXV0b1JlbW92ZT1lPT5CKGUpO2NvbnN0IHJ0PShlLG8sdCk9Pnt2YXIgbjtyZXR1cm4obj1lLmdldFZhbHVlKG8pKT09bnVsbD92b2lkIDA6bi5pbmNsdWRlcyh0KX07cnQuYXV0b1JlbW92ZT1lPT5CKGUpO2NvbnN0IGx0PShlLG8sdCk9PiF0LnNvbWUobj0+e3ZhciBpO3JldHVybiEoKGk9ZS5nZXRWYWx1ZShvKSkhPW51bGwmJmkuaW5jbHVkZXMobikpfSk7bHQuYXV0b1JlbW92ZT1lPT5CKGUpfHwhKGUhPW51bGwmJmUubGVuZ3RoKTtjb25zdCBzdD0oZSxvLHQpPT50LnNvbWUobj0+e3ZhciBpO3JldHVybihpPWUuZ2V0VmFsdWUobykpPT1udWxsP3ZvaWQgMDppLmluY2x1ZGVzKG4pfSk7c3QuYXV0b1JlbW92ZT1lPT5CKGUpfHwhKGUhPW51bGwmJmUubGVuZ3RoKTtjb25zdCB1dD0oZSxvLHQpPT5lLmdldFZhbHVlKG8pPT09dDt1dC5hdXRvUmVtb3ZlPWU9PkIoZSk7Y29uc3QgYXQ9KGUsbyx0KT0+ZS5nZXRWYWx1ZShvKT09dDthdC5hdXRvUmVtb3ZlPWU9PkIoZSk7Y29uc3QgR2U9KGUsbyx0KT0+e2xldFtuLGldPXQ7Y29uc3Qgcj1lLmdldFZhbHVlKG8pO3JldHVybiByPj1uJiZyPD1pfTtHZS5yZXNvbHZlRmlsdGVyVmFsdWU9ZT0+e2xldFtvLHRdPWUsbj10eXBlb2YgbyE9Im51bWJlciI/cGFyc2VGbG9hdChvKTpvLGk9dHlwZW9mIHQhPSJudW1iZXIiP3BhcnNlRmxvYXQodCk6dCxyPW89PT1udWxsfHxOdW1iZXIuaXNOYU4obik/LTEvMDpuLGw9dD09PW51bGx8fE51bWJlci5pc05hTihpKT8xLzA6aTtpZihyPmwpe2NvbnN0IHU9cjtyPWwsbD11fXJldHVybltyLGxdfTtHZS5hdXRvUmVtb3ZlPWU9PkIoZSl8fEIoZVswXSkmJkIoZVsxXSk7Y29uc3QgVT17aW5jbHVkZXNTdHJpbmc6bnQsaW5jbHVkZXNTdHJpbmdTZW5zaXRpdmU6b3QsZXF1YWxzU3RyaW5nOml0LGFyckluY2x1ZGVzOnJ0LGFyckluY2x1ZGVzQWxsOmx0LGFyckluY2x1ZGVzU29tZTpzdCxlcXVhbHM6dXQsd2Vha0VxdWFsczphdCxpbk51bWJlclJhbmdlOkdlfTtmdW5jdGlvbiBCKGUpe3JldHVybiBlPT1udWxsfHxlPT09IiJ9Y29uc3QgcXQ9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9Pih7ZmlsdGVyRm46ImF1dG8ifSksZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uRmlsdGVyczpbXSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtbkZpbHRlcnNDaGFuZ2U6TCgiY29sdW1uRmlsdGVycyIsZSksZmlsdGVyRnJvbUxlYWZSb3dzOiExLG1heExlYWZSb3dGaWx0ZXJEZXB0aDoxMDB9KSxjcmVhdGVDb2x1bW46KGUsbyk9PntlLmdldEF1dG9GaWx0ZXJGbj0oKT0+e2NvbnN0IHQ9by5nZXRDb3JlUm93TW9kZWwoKS5mbGF0Um93c1swXSxuPXQ/LmdldFZhbHVlKGUuaWQpO3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/VS5pbmNsdWRlc1N0cmluZzp0eXBlb2Ygbj09Im51bWJlciI/VS5pbk51bWJlclJhbmdlOnR5cGVvZiBuPT0iYm9vbGVhbiJ8fG4hPT1udWxsJiZ0eXBlb2Ygbj09Im9iamVjdCI/VS5lcXVhbHM6QXJyYXkuaXNBcnJheShuKT9VLmFyckluY2x1ZGVzOlUud2Vha0VxdWFsc30sZS5nZXRGaWx0ZXJGbj0oKT0+e3ZhciB0LG47cmV0dXJuIG1lKGUuY29sdW1uRGVmLmZpbHRlckZuKT9lLmNvbHVtbkRlZi5maWx0ZXJGbjplLmNvbHVtbkRlZi5maWx0ZXJGbj09PSJhdXRvIj9lLmdldEF1dG9GaWx0ZXJGbigpOih0PShuPW8ub3B0aW9ucy5maWx0ZXJGbnMpPT1udWxsP3ZvaWQgMDpuW2UuY29sdW1uRGVmLmZpbHRlckZuXSkhPW51bGw/dDpVW2UuY29sdW1uRGVmLmZpbHRlckZuXX0sZS5nZXRDYW5GaWx0ZXI9KCk9Pnt2YXIgdCxuLGk7cmV0dXJuKCh0PWUuY29sdW1uRGVmLmVuYWJsZUNvbHVtbkZpbHRlcikhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlQ29sdW1uRmlsdGVycykhPW51bGw/bjohMCkmJigoaT1vLm9wdGlvbnMuZW5hYmxlRmlsdGVycykhPW51bGw/aTohMCkmJiEhZS5hY2Nlc3NvckZufSxlLmdldElzRmlsdGVyZWQ9KCk9PmUuZ2V0RmlsdGVySW5kZXgoKT4tMSxlLmdldEZpbHRlclZhbHVlPSgpPT57dmFyIHQ7cmV0dXJuKHQ9by5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMpPT1udWxsfHwodD10LmZpbmQobj0+bi5pZD09PWUuaWQpKT09bnVsbD92b2lkIDA6dC52YWx1ZX0sZS5nZXRGaWx0ZXJJbmRleD0oKT0+e3ZhciB0LG47cmV0dXJuKHQ9KG49by5nZXRTdGF0ZSgpLmNvbHVtbkZpbHRlcnMpPT1udWxsP3ZvaWQgMDpuLmZpbmRJbmRleChpPT5pLmlkPT09ZS5pZCkpIT1udWxsP3Q6LTF9LGUuc2V0RmlsdGVyVmFsdWU9dD0+e28uc2V0Q29sdW1uRmlsdGVycyhuPT57Y29uc3QgaT1lLmdldEZpbHRlckZuKCkscj1uPy5maW5kKGM9PmMuaWQ9PT1lLmlkKSxsPUsodCxyP3IudmFsdWU6dm9pZCAwKTtpZihaZShpLGwsZSkpe3ZhciB1O3JldHVybih1PW4/LmZpbHRlcihjPT5jLmlkIT09ZS5pZCkpIT1udWxsP3U6W119Y29uc3QgYT17aWQ6ZS5pZCx2YWx1ZTpsfTtpZihyKXt2YXIgZztyZXR1cm4oZz1uPy5tYXAoYz0+Yy5pZD09PWUuaWQ/YTpjKSkhPW51bGw/ZzpbXX1yZXR1cm4gbiE9bnVsbCYmbi5sZW5ndGg/Wy4uLm4sYV06W2FdfSl9fSxjcmVhdGVSb3c6KGUsbyk9PntlLmNvbHVtbkZpbHRlcnM9e30sZS5jb2x1bW5GaWx0ZXJzTWV0YT17fX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uRmlsdGVycz1vPT57Y29uc3QgdD1lLmdldEFsbExlYWZDb2x1bW5zKCksbj1pPT57dmFyIHI7cmV0dXJuKHI9SyhvLGkpKT09bnVsbD92b2lkIDA6ci5maWx0ZXIobD0+e2NvbnN0IHU9dC5maW5kKGE9PmEuaWQ9PT1sLmlkKTtpZih1KXtjb25zdCBhPXUuZ2V0RmlsdGVyRm4oKTtpZihaZShhLGwudmFsdWUsdSkpcmV0dXJuITF9cmV0dXJuITB9KX07ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZT09bnVsbHx8ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZShuKX0sZS5yZXNldENvbHVtbkZpbHRlcnM9bz0+e3ZhciB0LG47ZS5zZXRDb2x1bW5GaWx0ZXJzKG8/W106KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLmNvbHVtbkZpbHRlcnMpIT1udWxsP3Q6W10pfSxlLmdldFByZUZpbHRlcmVkUm93TW9kZWw9KCk9PmUuZ2V0Q29yZVJvd01vZGVsKCksZS5nZXRGaWx0ZXJlZFJvd01vZGVsPSgpPT4oIWUuX2dldEZpbHRlcmVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRGaWx0ZXJlZFJvd01vZGVsJiYoZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RmlsdGVyZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEZpbHRlcmluZ3x8IWUuX2dldEZpbHRlcmVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbCgpKX19O2Z1bmN0aW9uIFplKGUsbyx0KXtyZXR1cm4oZSYmZS5hdXRvUmVtb3ZlP2UuYXV0b1JlbW92ZShvLHQpOiExKXx8dHlwZW9mIG8+InUifHx0eXBlb2Ygbz09InN0cmluZyImJiFvfWNvbnN0IGt0PShlLG8sdCk9PnQucmVkdWNlKChuLGkpPT57Y29uc3Qgcj1pLmdldFZhbHVlKGUpO3JldHVybiBuKyh0eXBlb2Ygcj09Im51bWJlciI/cjowKX0sMCksQnQ9KGUsbyx0KT0+e2xldCBuO3JldHVybiB0LmZvckVhY2goaT0+e2NvbnN0IHI9aS5nZXRWYWx1ZShlKTtyIT1udWxsJiYobj5yfHxuPT09dm9pZCAwJiZyPj1yKSYmKG49cil9KSxufSxUdD0oZSxvLHQpPT57bGV0IG47cmV0dXJuIHQuZm9yRWFjaChpPT57Y29uc3Qgcj1pLmdldFZhbHVlKGUpO3IhPW51bGwmJihuPHJ8fG49PT12b2lkIDAmJnI+PXIpJiYobj1yKX0pLG59LGp0PShlLG8sdCk9PntsZXQgbixpO3JldHVybiB0LmZvckVhY2gocj0+e2NvbnN0IGw9ci5nZXRWYWx1ZShlKTtsIT1udWxsJiYobj09PXZvaWQgMD9sPj1sJiYobj1pPWwpOihuPmwmJihuPWwpLGk8bCYmKGk9bCkpKX0pLFtuLGldfSxidD0oZSxvKT0+e2xldCB0PTAsbj0wO2lmKG8uZm9yRWFjaChpPT57bGV0IHI9aS5nZXRWYWx1ZShlKTtyIT1udWxsJiYocj0rcik+PXImJigrK3Qsbis9cil9KSx0KXJldHVybiBuL3R9LE50PShlLG8pPT57aWYoIW8ubGVuZ3RoKXJldHVybjtjb25zdCB0PW8ubWFwKHI9PnIuZ2V0VmFsdWUoZSkpO2lmKCF6dCh0KSlyZXR1cm47aWYodC5sZW5ndGg9PT0xKXJldHVybiB0WzBdO2NvbnN0IG49TWF0aC5mbG9vcih0Lmxlbmd0aC8yKSxpPXQuc29ydCgocixsKT0+ci1sKTtyZXR1cm4gdC5sZW5ndGglMiE9PTA/aVtuXTooaVtuLTFdK2lbbl0pLzJ9LFV0PShlLG8pPT5BcnJheS5mcm9tKG5ldyBTZXQoby5tYXAodD0+dC5nZXRWYWx1ZShlKSkpLnZhbHVlcygpKSxYdD0oZSxvKT0+bmV3IFNldChvLm1hcCh0PT50LmdldFZhbHVlKGUpKSkuc2l6ZSxLdD0oZSxvKT0+by5sZW5ndGgsaGU9e3N1bTprdCxtaW46QnQsbWF4OlR0LGV4dGVudDpqdCxtZWFuOmJ0LG1lZGlhbjpOdCx1bmlxdWU6VXQsdW5pcXVlQ291bnQ6WHQsY291bnQ6S3R9LFd0PXtnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe2FnZ3JlZ2F0ZWRDZWxsOmU9Pnt2YXIgbyx0O3JldHVybihvPSh0PWUuZ2V0VmFsdWUoKSk9PW51bGx8fHQudG9TdHJpbmc9PW51bGw/dm9pZCAwOnQudG9TdHJpbmcoKSkhPW51bGw/bzpudWxsfSxhZ2dyZWdhdGlvbkZuOiJhdXRvIn0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2dyb3VwaW5nOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR3JvdXBpbmdDaGFuZ2U6TCgiZ3JvdXBpbmciLGUpLGdyb3VwZWRDb2x1bW5Nb2RlOiJyZW9yZGVyIn0pLGNyZWF0ZUNvbHVtbjooZSxvKT0+e2UudG9nZ2xlR3JvdXBpbmc9KCk9PntvLnNldEdyb3VwaW5nKHQ9PnQhPW51bGwmJnQuaW5jbHVkZXMoZS5pZCk/dC5maWx0ZXIobj0+biE9PWUuaWQpOlsuLi50Pz9bXSxlLmlkXSl9LGUuZ2V0Q2FuR3JvdXA9KCk9Pnt2YXIgdCxuO3JldHVybigodD1lLmNvbHVtbkRlZi5lbmFibGVHcm91cGluZykhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlR3JvdXBpbmcpIT1udWxsP246ITApJiYoISFlLmFjY2Vzc29yRm58fCEhZS5jb2x1bW5EZWYuZ2V0R3JvdXBpbmdWYWx1ZSl9LGUuZ2V0SXNHcm91cGVkPSgpPT57dmFyIHQ7cmV0dXJuKHQ9by5nZXRTdGF0ZSgpLmdyb3VwaW5nKT09bnVsbD92b2lkIDA6dC5pbmNsdWRlcyhlLmlkKX0sZS5nZXRHcm91cGVkSW5kZXg9KCk9Pnt2YXIgdDtyZXR1cm4odD1vLmdldFN0YXRlKCkuZ3JvdXBpbmcpPT1udWxsP3ZvaWQgMDp0LmluZGV4T2YoZS5pZCl9LGUuZ2V0VG9nZ2xlR3JvdXBpbmdIYW5kbGVyPSgpPT57Y29uc3QgdD1lLmdldENhbkdyb3VwKCk7cmV0dXJuKCk9Pnt0JiZlLnRvZ2dsZUdyb3VwaW5nKCl9fSxlLmdldEF1dG9BZ2dyZWdhdGlvbkZuPSgpPT57Y29uc3QgdD1vLmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdLG49dD8uZ2V0VmFsdWUoZS5pZCk7aWYodHlwZW9mIG49PSJudW1iZXIiKXJldHVybiBoZS5zdW07aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pPT09IltvYmplY3QgRGF0ZV0iKXJldHVybiBoZS5leHRlbnR9LGUuZ2V0QWdncmVnYXRpb25Gbj0oKT0+e3ZhciB0LG47aWYoIWUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBtZShlLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuKT9lLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuOmUuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm49PT0iYXV0byI/ZS5nZXRBdXRvQWdncmVnYXRpb25GbigpOih0PShuPW8ub3B0aW9ucy5hZ2dyZWdhdGlvbkZucyk9PW51bGw/dm9pZCAwOm5bZS5jb2x1bW5EZWYuYWdncmVnYXRpb25Gbl0pIT1udWxsP3Q6aGVbZS5jb2x1bW5EZWYuYWdncmVnYXRpb25Gbl19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRHcm91cGluZz1vPT5lLm9wdGlvbnMub25Hcm91cGluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uR3JvdXBpbmdDaGFuZ2UobyksZS5yZXNldEdyb3VwaW5nPW89Pnt2YXIgdCxuO2Uuc2V0R3JvdXBpbmcobz9bXToodD0obj1lLmluaXRpYWxTdGF0ZSk9PW51bGw/dm9pZCAwOm4uZ3JvdXBpbmcpIT1udWxsP3Q6W10pfSxlLmdldFByZUdyb3VwZWRSb3dNb2RlbD0oKT0+ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCksZS5nZXRHcm91cGVkUm93TW9kZWw9KCk9PighZS5fZ2V0R3JvdXBlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0R3JvdXBlZFJvd01vZGVsJiYoZS5fZ2V0R3JvdXBlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRHcm91cGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxHcm91cGluZ3x8IWUuX2dldEdyb3VwZWRSb3dNb2RlbD9lLmdldFByZUdyb3VwZWRSb3dNb2RlbCgpOmUuX2dldEdyb3VwZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLG8pPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PiEhZS5ncm91cGluZ0NvbHVtbklkLGUuZ2V0R3JvdXBpbmdWYWx1ZT10PT57aWYoZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVt0XTtjb25zdCBuPW8uZ2V0Q29sdW1uKHQpO3JldHVybiBuIT1udWxsJiZuLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlPyhlLl9ncm91cGluZ1ZhbHVlc0NhY2hlW3RdPW4uY29sdW1uRGVmLmdldEdyb3VwaW5nVmFsdWUoZS5vcmlnaW5hbCksZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVt0XSk6ZS5nZXRWYWx1ZSh0KX0sZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZT17fX0sY3JlYXRlQ2VsbDooZSxvLHQsbik9PntlLmdldElzR3JvdXBlZD0oKT0+by5nZXRJc0dyb3VwZWQoKSYmby5pZD09PXQuZ3JvdXBpbmdDb2x1bW5JZCxlLmdldElzUGxhY2Vob2xkZXI9KCk9PiFlLmdldElzR3JvdXBlZCgpJiZvLmdldElzR3JvdXBlZCgpLGUuZ2V0SXNBZ2dyZWdhdGVkPSgpPT57dmFyIGk7cmV0dXJuIWUuZ2V0SXNHcm91cGVkKCkmJiFlLmdldElzUGxhY2Vob2xkZXIoKSYmISEoKGk9dC5zdWJSb3dzKSE9bnVsbCYmaS5sZW5ndGgpfX19O2Z1bmN0aW9uIEp0KGUsbyx0KXtpZighKG8hPW51bGwmJm8ubGVuZ3RoKXx8IXQpcmV0dXJuIGU7Y29uc3Qgbj1lLmZpbHRlcihyPT4hby5pbmNsdWRlcyhyLmlkKSk7cmV0dXJuIHQ9PT0icmVtb3ZlIj9uOlsuLi5vLm1hcChyPT5lLmZpbmQobD0+bC5pZD09PXIpKS5maWx0ZXIoQm9vbGVhbiksLi4ubl19Y29uc3QgWXQ9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbk9yZGVyOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uT3JkZXJDaGFuZ2U6TCgiY29sdW1uT3JkZXIiLGUpfSksY3JlYXRlQ29sdW1uOihlLG8pPT57ZS5nZXRJbmRleD1DKHQ9PlthZShvLHQpXSx0PT50LmZpbmRJbmRleChuPT5uLmlkPT09ZS5pZCksdyhvLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldElzRmlyc3RDb2x1bW49dD0+e3ZhciBuO3JldHVybigobj1hZShvLHQpWzBdKT09bnVsbD92b2lkIDA6bi5pZCk9PT1lLmlkfSxlLmdldElzTGFzdENvbHVtbj10PT57dmFyIG47Y29uc3QgaT1hZShvLHQpO3JldHVybigobj1pW2kubGVuZ3RoLTFdKT09bnVsbD92b2lkIDA6bi5pZCk9PT1lLmlkfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uT3JkZXI9bz0+ZS5vcHRpb25zLm9uQ29sdW1uT3JkZXJDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtbk9yZGVyQ2hhbmdlKG8pLGUucmVzZXRDb2x1bW5PcmRlcj1vPT57dmFyIHQ7ZS5zZXRDb2x1bW5PcmRlcihvP1tdOih0PWUuaW5pdGlhbFN0YXRlLmNvbHVtbk9yZGVyKSE9bnVsbD90OltdKX0sZS5fZ2V0T3JkZXJDb2x1bW5zRm49QygoKT0+W2UuZ2V0U3RhdGUoKS5jb2x1bW5PcmRlcixlLmdldFN0YXRlKCkuZ3JvdXBpbmcsZS5vcHRpb25zLmdyb3VwZWRDb2x1bW5Nb2RlXSwobyx0LG4pPT5pPT57bGV0IHI9W107aWYoIShvIT1udWxsJiZvLmxlbmd0aCkpcj1pO2Vsc2V7Y29uc3QgbD1bLi4ub10sdT1bLi4uaV07Zm9yKDt1Lmxlbmd0aCYmbC5sZW5ndGg7KXtjb25zdCBhPWwuc2hpZnQoKSxnPXUuZmluZEluZGV4KGM9PmMuaWQ9PT1hKTtnPi0xJiZyLnB1c2godS5zcGxpY2UoZywxKVswXSl9cj1bLi4uciwuLi51XX1yZXR1cm4gSnQocix0LG4pfSx3KGUub3B0aW9ucywiZGVidWdUYWJsZSIpKX19LEZlPSgpPT4oe2xlZnQ6W10scmlnaHQ6W119KSxRdD17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uUGlubmluZzpGZSgpLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uUGlubmluZ0NoYW5nZTpMKCJjb2x1bW5QaW5uaW5nIixlKX0pLGNyZWF0ZUNvbHVtbjooZSxvKT0+e2UucGluPXQ9Pntjb25zdCBuPWUuZ2V0TGVhZkNvbHVtbnMoKS5tYXAoaT0+aS5pZCkuZmlsdGVyKEJvb2xlYW4pO28uc2V0Q29sdW1uUGlubmluZyhpPT57dmFyIHIsbDtpZih0PT09InJpZ2h0Iil7dmFyIHUsYTtyZXR1cm57bGVmdDooKHU9aT8ubGVmdCkhPW51bGw/dTpbXSkuZmlsdGVyKHA9PiEobiE9bnVsbCYmbi5pbmNsdWRlcyhwKSkpLHJpZ2h0OlsuLi4oKGE9aT8ucmlnaHQpIT1udWxsP2E6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKSwuLi5uXX19aWYodD09PSJsZWZ0Iil7dmFyIGcsYztyZXR1cm57bGVmdDpbLi4uKChnPWk/LmxlZnQpIT1udWxsP2c6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKSwuLi5uXSxyaWdodDooKGM9aT8ucmlnaHQpIT1udWxsP2M6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKX19cmV0dXJue2xlZnQ6KChyPWk/LmxlZnQpIT1udWxsP3I6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKSxyaWdodDooKGw9aT8ucmlnaHQpIT1udWxsP2w6W10pLmZpbHRlcihwPT4hKG4hPW51bGwmJm4uaW5jbHVkZXMocCkpKX19KX0sZS5nZXRDYW5QaW49KCk9PmUuZ2V0TGVhZkNvbHVtbnMoKS5zb21lKG49Pnt2YXIgaSxyLGw7cmV0dXJuKChpPW4uY29sdW1uRGVmLmVuYWJsZVBpbm5pbmcpIT1udWxsP2k6ITApJiYoKHI9KGw9by5vcHRpb25zLmVuYWJsZUNvbHVtblBpbm5pbmcpIT1udWxsP2w6by5vcHRpb25zLmVuYWJsZVBpbm5pbmcpIT1udWxsP3I6ITApfSksZS5nZXRJc1Bpbm5lZD0oKT0+e2NvbnN0IHQ9ZS5nZXRMZWFmQ29sdW1ucygpLm1hcCh1PT51LmlkKSx7bGVmdDpuLHJpZ2h0Oml9PW8uZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLHI9dC5zb21lKHU9Pm4/LmluY2x1ZGVzKHUpKSxsPXQuc29tZSh1PT5pPy5pbmNsdWRlcyh1KSk7cmV0dXJuIHI/ImxlZnQiOmw/InJpZ2h0IjohMX0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e3ZhciB0LG47Y29uc3QgaT1lLmdldElzUGlubmVkKCk7cmV0dXJuIGk/KHQ9KG49by5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcpPT1udWxsfHwobj1uW2ldKT09bnVsbD92b2lkIDA6bi5pbmRleE9mKGUuaWQpKSE9bnVsbD90Oi0xOjB9fSxjcmVhdGVSb3c6KGUsbyk9PntlLmdldENlbnRlclZpc2libGVDZWxscz1DKCgpPT5bZS5fZ2V0QWxsVmlzaWJsZUNlbGxzKCksby5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxvLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKHQsbixpKT0+e2NvbnN0IHI9Wy4uLm4/P1tdLC4uLmk/P1tdXTtyZXR1cm4gdC5maWx0ZXIobD0+IXIuaW5jbHVkZXMobC5jb2x1bW4uaWQpKX0sdyhvLm9wdGlvbnMsImRlYnVnUm93cyIpKSxlLmdldExlZnRWaXNpYmxlQ2VsbHM9QygoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLG8uZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLCh0LG4pPT4obj8/W10pLm1hcChyPT50LmZpbmQobD0+bC5jb2x1bW4uaWQ9PT1yKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChyPT4oey4uLnIscG9zaXRpb246ImxlZnQifSkpLHcoby5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRSaWdodFZpc2libGVDZWxscz1DKCgpPT5bZS5fZ2V0QWxsVmlzaWJsZUNlbGxzKCksby5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLCh0LG4pPT4obj8/W10pLm1hcChyPT50LmZpbmQobD0+bC5jb2x1bW4uaWQ9PT1yKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChyPT4oey4uLnIscG9zaXRpb246InJpZ2h0In0pKSx3KG8ub3B0aW9ucywiZGVidWdSb3dzIikpfSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5QaW5uaW5nPW89PmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2UobyksZS5yZXNldENvbHVtblBpbm5pbmc9bz0+e3ZhciB0LG47cmV0dXJuIGUuc2V0Q29sdW1uUGlubmluZyhvP0ZlKCk6KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLmNvbHVtblBpbm5pbmcpIT1udWxsP3Q6RmUoKSl9LGUuZ2V0SXNTb21lQ29sdW1uc1Bpbm5lZD1vPT57dmFyIHQ7Y29uc3Qgbj1lLmdldFN0YXRlKCkuY29sdW1uUGlubmluZztpZighbyl7dmFyIGkscjtyZXR1cm4hISgoaT1uLmxlZnQpIT1udWxsJiZpLmxlbmd0aHx8KHI9bi5yaWdodCkhPW51bGwmJnIubGVuZ3RoKX1yZXR1cm4hISgodD1uW29dKSE9bnVsbCYmdC5sZW5ndGgpfSxlLmdldExlZnRMZWFmQ29sdW1ucz1DKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChvLHQpPT4odD8/W10pLm1hcChuPT5vLmZpbmQoaT0+aS5pZD09PW4pKS5maWx0ZXIoQm9vbGVhbiksdyhlLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldFJpZ2h0TGVhZkNvbHVtbnM9QygoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKG8sdCk9Pih0Pz9bXSkubWFwKG49Pm8uZmluZChpPT5pLmlkPT09bikpLmZpbHRlcihCb29sZWFuKSx3KGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUuZ2V0Q2VudGVyTGVhZkNvbHVtbnM9QygoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwobyx0LG4pPT57Y29uc3QgaT1bLi4udD8/W10sLi4ubj8/W11dO3JldHVybiBvLmZpbHRlcihyPT4haS5pbmNsdWRlcyhyLmlkKSl9LHcoZS5vcHRpb25zLCJkZWJ1Z0NvbHVtbnMiKSl9fTtmdW5jdGlvbiBadChlKXtyZXR1cm4gZXx8KHR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQ6bnVsbCl9Y29uc3QgY2U9e3NpemU6MTUwLG1pblNpemU6MjAsbWF4U2l6ZTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0seWU9KCk9Pih7c3RhcnRPZmZzZXQ6bnVsbCxzdGFydFNpemU6bnVsbCxkZWx0YU9mZnNldDpudWxsLGRlbHRhUGVyY2VudGFnZTpudWxsLGlzUmVzaXppbmdDb2x1bW46ITEsY29sdW1uU2l6aW5nU3RhcnQ6W119KSxlbj17Z2V0RGVmYXVsdENvbHVtbkRlZjooKT0+Y2UsZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uU2l6aW5nOnt9LGNvbHVtblNpemluZ0luZm86eWUoKSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtjb2x1bW5SZXNpemVNb2RlOiJvbkVuZCIsY29sdW1uUmVzaXplRGlyZWN0aW9uOiJsdHIiLG9uQ29sdW1uU2l6aW5nQ2hhbmdlOkwoImNvbHVtblNpemluZyIsZSksb25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlOkwoImNvbHVtblNpemluZ0luZm8iLGUpfSksY3JlYXRlQ29sdW1uOihlLG8pPT57ZS5nZXRTaXplPSgpPT57dmFyIHQsbixpO2NvbnN0IHI9by5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ1tlLmlkXTtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoKHQ9ZS5jb2x1bW5EZWYubWluU2l6ZSkhPW51bGw/dDpjZS5taW5TaXplLChuPXI/P2UuY29sdW1uRGVmLnNpemUpIT1udWxsP246Y2Uuc2l6ZSksKGk9ZS5jb2x1bW5EZWYubWF4U2l6ZSkhPW51bGw/aTpjZS5tYXhTaXplKX0sZS5nZXRTdGFydD1DKHQ9Plt0LGFlKG8sdCksby5nZXRTdGF0ZSgpLmNvbHVtblNpemluZ10sKHQsbik9Pm4uc2xpY2UoMCxlLmdldEluZGV4KHQpKS5yZWR1Y2UoKGkscik9Pmkrci5nZXRTaXplKCksMCksdyhvLm9wdGlvbnMsImRlYnVnQ29sdW1ucyIpKSxlLmdldEFmdGVyPUModD0+W3QsYWUobyx0KSxvLmdldFN0YXRlKCkuY29sdW1uU2l6aW5nXSwodCxuKT0+bi5zbGljZShlLmdldEluZGV4KHQpKzEpLnJlZHVjZSgoaSxyKT0+aStyLmdldFNpemUoKSwwKSx3KG8ub3B0aW9ucywiZGVidWdDb2x1bW5zIikpLGUucmVzZXRTaXplPSgpPT57by5zZXRDb2x1bW5TaXppbmcodD0+e2xldHtbZS5pZF06biwuLi5pfT10O3JldHVybiBpfSl9LGUuZ2V0Q2FuUmVzaXplPSgpPT57dmFyIHQsbjtyZXR1cm4oKHQ9ZS5jb2x1bW5EZWYuZW5hYmxlUmVzaXppbmcpIT1udWxsP3Q6ITApJiYoKG49by5vcHRpb25zLmVuYWJsZUNvbHVtblJlc2l6aW5nKSE9bnVsbD9uOiEwKX0sZS5nZXRJc1Jlc2l6aW5nPSgpPT5vLmdldFN0YXRlKCkuY29sdW1uU2l6aW5nSW5mby5pc1Jlc2l6aW5nQ29sdW1uPT09ZS5pZH0sY3JlYXRlSGVhZGVyOihlLG8pPT57ZS5nZXRTaXplPSgpPT57bGV0IHQ9MDtjb25zdCBuPWk9PntpZihpLnN1YkhlYWRlcnMubGVuZ3RoKWkuc3ViSGVhZGVycy5mb3JFYWNoKG4pO2Vsc2V7dmFyIHI7dCs9KHI9aS5jb2x1bW4uZ2V0U2l6ZSgpKSE9bnVsbD9yOjB9fTtyZXR1cm4gbihlKSx0fSxlLmdldFN0YXJ0PSgpPT57aWYoZS5pbmRleD4wKXtjb25zdCB0PWUuaGVhZGVyR3JvdXAuaGVhZGVyc1tlLmluZGV4LTFdO3JldHVybiB0LmdldFN0YXJ0KCkrdC5nZXRTaXplKCl9cmV0dXJuIDB9LGUuZ2V0UmVzaXplSGFuZGxlcj10PT57Y29uc3Qgbj1vLmdldENvbHVtbihlLmNvbHVtbi5pZCksaT1uPy5nZXRDYW5SZXNpemUoKTtyZXR1cm4gcj0+e2lmKCFufHwhaXx8KHIucGVyc2lzdD09bnVsbHx8ci5wZXJzaXN0KCksX2UocikmJnIudG91Y2hlcyYmci50b3VjaGVzLmxlbmd0aD4xKSlyZXR1cm47Y29uc3QgbD1lLmdldFNpemUoKSx1PWU/ZS5nZXRMZWFmSGVhZGVycygpLm1hcChSPT5bUi5jb2x1bW4uaWQsUi5jb2x1bW4uZ2V0U2l6ZSgpXSk6W1tuLmlkLG4uZ2V0U2l6ZSgpXV0sYT1fZShyKT9NYXRoLnJvdW5kKHIudG91Y2hlc1swXS5jbGllbnRYKTpyLmNsaWVudFgsZz17fSxjPShSLHgpPT57dHlwZW9mIHg9PSJudW1iZXIiJiYoby5zZXRDb2x1bW5TaXppbmdJbmZvKFA9Pnt2YXIgeixNO2NvbnN0IFQ9by5vcHRpb25zLmNvbHVtblJlc2l6ZURpcmVjdGlvbj09PSJydGwiPy0xOjEsWT0oeC0oKHo9UD8uc3RhcnRPZmZzZXQpIT1udWxsP3o6MCkpKlQsUT1NYXRoLm1heChZLygoTT1QPy5zdGFydFNpemUpIT1udWxsP006MCksLS45OTk5OTkpO3JldHVybiBQLmNvbHVtblNpemluZ1N0YXJ0LmZvckVhY2godGU9PntsZXRbbmUsWl09dGU7Z1tuZV09TWF0aC5yb3VuZChNYXRoLm1heChaK1oqUSwwKSoxMDApLzEwMH0pLHsuLi5QLGRlbHRhT2Zmc2V0OlksZGVsdGFQZXJjZW50YWdlOlF9fSksKG8ub3B0aW9ucy5jb2x1bW5SZXNpemVNb2RlPT09Im9uQ2hhbmdlInx8Uj09PSJlbmQiKSYmby5zZXRDb2x1bW5TaXppbmcoUD0+KHsuLi5QLC4uLmd9KSkpfSxwPVI9PmMoIm1vdmUiLFIpLGQ9Uj0+e2MoImVuZCIsUiksby5zZXRDb2x1bW5TaXppbmdJbmZvKHg9Pih7Li4ueCxpc1Jlc2l6aW5nQ29sdW1uOiExLHN0YXJ0T2Zmc2V0Om51bGwsc3RhcnRTaXplOm51bGwsZGVsdGFPZmZzZXQ6bnVsbCxkZWx0YVBlcmNlbnRhZ2U6bnVsbCxjb2x1bW5TaXppbmdTdGFydDpbXX0pKX0scz1adCh0KSxmPXttb3ZlSGFuZGxlcjpSPT5wKFIuY2xpZW50WCksdXBIYW5kbGVyOlI9PntzPy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGYubW92ZUhhbmRsZXIpLHM/LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGYudXBIYW5kbGVyKSxkKFIuY2xpZW50WCl9fSxtPXttb3ZlSGFuZGxlcjpSPT4oUi5jYW5jZWxhYmxlJiYoUi5wcmV2ZW50RGVmYXVsdCgpLFIuc3RvcFByb3BhZ2F0aW9uKCkpLHAoUi50b3VjaGVzWzBdLmNsaWVudFgpLCExKSx1cEhhbmRsZXI6Uj0+e3ZhciB4O3M/LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsbS5tb3ZlSGFuZGxlcikscz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLG0udXBIYW5kbGVyKSxSLmNhbmNlbGFibGUmJihSLnByZXZlbnREZWZhdWx0KCksUi5zdG9wUHJvcGFnYXRpb24oKSksZCgoeD1SLnRvdWNoZXNbMF0pPT1udWxsP3ZvaWQgMDp4LmNsaWVudFgpfX0saD10bigpP3twYXNzaXZlOiExfTohMTtfZShyKT8ocz8uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixtLm1vdmVIYW5kbGVyLGgpLHM/LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixtLnVwSGFuZGxlcixoKSk6KHM/LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZi5tb3ZlSGFuZGxlcixoKSxzPy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixmLnVwSGFuZGxlcixoKSksby5zZXRDb2x1bW5TaXppbmdJbmZvKFI9Pih7Li4uUixzdGFydE9mZnNldDphLHN0YXJ0U2l6ZTpsLGRlbHRhT2Zmc2V0OjAsZGVsdGFQZXJjZW50YWdlOjAsY29sdW1uU2l6aW5nU3RhcnQ6dSxpc1Jlc2l6aW5nQ29sdW1uOm4uaWR9KSl9fX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uU2l6aW5nPW89PmUub3B0aW9ucy5vbkNvbHVtblNpemluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uU2l6aW5nQ2hhbmdlKG8pLGUuc2V0Q29sdW1uU2l6aW5nSW5mbz1vPT5lLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlKG8pLGUucmVzZXRDb2x1bW5TaXppbmc9bz0+e3ZhciB0O2Uuc2V0Q29sdW1uU2l6aW5nKG8/e306KHQ9ZS5pbml0aWFsU3RhdGUuY29sdW1uU2l6aW5nKSE9bnVsbD90Ont9KX0sZS5yZXNldEhlYWRlclNpemVJbmZvPW89Pnt2YXIgdDtlLnNldENvbHVtblNpemluZ0luZm8obz95ZSgpOih0PWUuaW5pdGlhbFN0YXRlLmNvbHVtblNpemluZ0luZm8pIT1udWxsP3Q6eWUoKSl9LGUuZ2V0VG90YWxTaXplPSgpPT57dmFyIG8sdDtyZXR1cm4obz0odD1lLmdldEhlYWRlckdyb3VwcygpWzBdKT09bnVsbD92b2lkIDA6dC5oZWFkZXJzLnJlZHVjZSgobixpKT0+bitpLmdldFNpemUoKSwwKSkhPW51bGw/bzowfSxlLmdldExlZnRUb3RhbFNpemU9KCk9Pnt2YXIgbyx0O3JldHVybihvPSh0PWUuZ2V0TGVmdEhlYWRlckdyb3VwcygpWzBdKT09bnVsbD92b2lkIDA6dC5oZWFkZXJzLnJlZHVjZSgobixpKT0+bitpLmdldFNpemUoKSwwKSkhPW51bGw/bzowfSxlLmdldENlbnRlclRvdGFsU2l6ZT0oKT0+e3ZhciBvLHQ7cmV0dXJuKG89KHQ9ZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKVswXSk9PW51bGw/dm9pZCAwOnQuaGVhZGVycy5yZWR1Y2UoKG4saSk9Pm4raS5nZXRTaXplKCksMCkpIT1udWxsP286MH0sZS5nZXRSaWdodFRvdGFsU2l6ZT0oKT0+e3ZhciBvLHQ7cmV0dXJuKG89KHQ9ZS5nZXRSaWdodEhlYWRlckdyb3VwcygpWzBdKT09bnVsbD92b2lkIDA6dC5oZWFkZXJzLnJlZHVjZSgobixpKT0+bitpLmdldFNpemUoKSwwKSkhPW51bGw/bzowfX19O2xldCBmZT1udWxsO2Z1bmN0aW9uIHRuKCl7aWYodHlwZW9mIGZlPT0iYm9vbGVhbiIpcmV0dXJuIGZlO2xldCBlPSExO3RyeXtjb25zdCBvPXtnZXQgcGFzc2l2ZSgpe3JldHVybiBlPSEwLCExfX0sdD0oKT0+e307d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHQsbyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLHQpfWNhdGNoe2U9ITF9cmV0dXJuIGZlPWUsZmV9ZnVuY3Rpb24gX2UoZSl7cmV0dXJuIGUudHlwZT09PSJ0b3VjaHN0YXJ0In1jb25zdCBubj17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uVmlzaWJpbGl0eTp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkNvbHVtblZpc2liaWxpdHlDaGFuZ2U6TCgiY29sdW1uVmlzaWJpbGl0eSIsZSl9KSxjcmVhdGVDb2x1bW46KGUsbyk9PntlLnRvZ2dsZVZpc2liaWxpdHk9dD0+e2UuZ2V0Q2FuSGlkZSgpJiZvLnNldENvbHVtblZpc2liaWxpdHkobj0+KHsuLi5uLFtlLmlkXTp0Pz8hZS5nZXRJc1Zpc2libGUoKX0pKX0sZS5nZXRJc1Zpc2libGU9KCk9Pnt2YXIgdCxuO2NvbnN0IGk9ZS5jb2x1bW5zO3JldHVybih0PWkubGVuZ3RoP2kuc29tZShyPT5yLmdldElzVmlzaWJsZSgpKToobj1vLmdldFN0YXRlKCkuY29sdW1uVmlzaWJpbGl0eSk9PW51bGw/dm9pZCAwOm5bZS5pZF0pIT1udWxsP3Q6ITB9LGUuZ2V0Q2FuSGlkZT0oKT0+e3ZhciB0LG47cmV0dXJuKCh0PWUuY29sdW1uRGVmLmVuYWJsZUhpZGluZykhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlSGlkaW5nKSE9bnVsbD9uOiEwKX0sZS5nZXRUb2dnbGVWaXNpYmlsaXR5SGFuZGxlcj0oKT0+dD0+e2UudG9nZ2xlVmlzaWJpbGl0eT09bnVsbHx8ZS50b2dnbGVWaXNpYmlsaXR5KHQudGFyZ2V0LmNoZWNrZWQpfX0sY3JlYXRlUm93OihlLG8pPT57ZS5fZ2V0QWxsVmlzaWJsZUNlbGxzPUMoKCk9PltlLmdldEFsbENlbGxzKCksby5nZXRTdGF0ZSgpLmNvbHVtblZpc2liaWxpdHldLHQ9PnQuZmlsdGVyKG49Pm4uY29sdW1uLmdldElzVmlzaWJsZSgpKSx3KG8ub3B0aW9ucywiZGVidWdSb3dzIikpLGUuZ2V0VmlzaWJsZUNlbGxzPUMoKCk9PltlLmdldExlZnRWaXNpYmxlQ2VsbHMoKSxlLmdldENlbnRlclZpc2libGVDZWxscygpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHMoKV0sKHQsbixpKT0+Wy4uLnQsLi4ubiwuLi5pXSx3KG8ub3B0aW9ucywiZGVidWdSb3dzIikpfSxjcmVhdGVUYWJsZTplPT57Y29uc3Qgbz0odCxuKT0+QygoKT0+W24oKSxuKCkuZmlsdGVyKGk9PmkuZ2V0SXNWaXNpYmxlKCkpLm1hcChpPT5pLmlkKS5qb2luKCJfIildLGk9PmkuZmlsdGVyKHI9PnIuZ2V0SXNWaXNpYmxlPT1udWxsP3ZvaWQgMDpyLmdldElzVmlzaWJsZSgpKSx3KGUub3B0aW9ucywiZGVidWdDb2x1bW5zIikpO2UuZ2V0VmlzaWJsZUZsYXRDb2x1bW5zPW8oImdldFZpc2libGVGbGF0Q29sdW1ucyIsKCk9PmUuZ2V0QWxsRmxhdENvbHVtbnMoKSksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0VmlzaWJsZUxlYWZDb2x1bW5zIiwoKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpKSxlLmdldExlZnRWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1ucyIsKCk9PmUuZ2V0TGVmdExlYWZDb2x1bW5zKCkpLGUuZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnMiLCgpPT5lLmdldFJpZ2h0TGVhZkNvbHVtbnMoKSksZS5nZXRDZW50ZXJWaXNpYmxlTGVhZkNvbHVtbnM9bygiZ2V0Q2VudGVyVmlzaWJsZUxlYWZDb2x1bW5zIiwoKT0+ZS5nZXRDZW50ZXJMZWFmQ29sdW1ucygpKSxlLnNldENvbHVtblZpc2liaWxpdHk9dD0+ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uVmlzaWJpbGl0eT10PT57dmFyIG47ZS5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ/e306KG49ZS5pbml0aWFsU3RhdGUuY29sdW1uVmlzaWJpbGl0eSkhPW51bGw/bjp7fSl9LGUudG9nZ2xlQWxsQ29sdW1uc1Zpc2libGU9dD0+e3ZhciBuO3Q9KG49dCkhPW51bGw/bjohZS5nZXRJc0FsbENvbHVtbnNWaXNpYmxlKCksZS5zZXRDb2x1bW5WaXNpYmlsaXR5KGUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5yZWR1Y2UoKGkscik9Pih7Li4uaSxbci5pZF06dHx8IShyLmdldENhbkhpZGUhPW51bGwmJnIuZ2V0Q2FuSGlkZSgpKX0pLHt9KSl9LGUuZ2V0SXNBbGxDb2x1bW5zVmlzaWJsZT0oKT0+IWUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5zb21lKHQ9PiEodC5nZXRJc1Zpc2libGUhPW51bGwmJnQuZ2V0SXNWaXNpYmxlKCkpKSxlLmdldElzU29tZUNvbHVtbnNWaXNpYmxlPSgpPT5lLmdldEFsbExlYWZDb2x1bW5zKCkuc29tZSh0PT50LmdldElzVmlzaWJsZT09bnVsbD92b2lkIDA6dC5nZXRJc1Zpc2libGUoKSksZS5nZXRUb2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eUhhbmRsZXI9KCk9PnQ9Pnt2YXIgbjtlLnRvZ2dsZUFsbENvbHVtbnNWaXNpYmxlKChuPXQudGFyZ2V0KT09bnVsbD92b2lkIDA6bi5jaGVja2VkKX19fTtmdW5jdGlvbiBhZShlLG8pe3JldHVybiBvP289PT0iY2VudGVyIj9lLmdldENlbnRlclZpc2libGVMZWFmQ29sdW1ucygpOm89PT0ibGVmdCI/ZS5nZXRMZWZ0VmlzaWJsZUxlYWZDb2x1bW5zKCk6ZS5nZXRSaWdodFZpc2libGVMZWFmQ29sdW1ucygpOmUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCl9Y29uc3Qgb249e2NyZWF0ZVRhYmxlOmU9PntlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9ZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbChlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw9KCk9PmUub3B0aW9ucy5tYW51YWxGaWx0ZXJpbmd8fCFlLl9nZXRHbG9iYWxGYWNldGVkUm93TW9kZWw/ZS5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCk6ZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsKCksZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz1lLm9wdGlvbnMuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcyYmZS5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoZSwiX19nbG9iYWxfXyIpLGUuZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz0oKT0+ZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcz9lLl9nZXRHbG9iYWxGYWNldGVkVW5pcXVlVmFsdWVzKCk6bmV3IE1hcCxlLl9nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPWUub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzJiZlLm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyhlLCJfX2dsb2JhbF9fIiksZS5nZXRHbG9iYWxGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcygpfX19LHJuPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtnbG9iYWxGaWx0ZXI6dm9pZCAwLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR2xvYmFsRmlsdGVyQ2hhbmdlOkwoImdsb2JhbEZpbHRlciIsZSksZ2xvYmFsRmlsdGVyRm46ImF1dG8iLGdldENvbHVtbkNhbkdsb2JhbEZpbHRlcjpvPT57dmFyIHQ7Y29uc3Qgbj0odD1lLmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdKT09bnVsbHx8KHQ9dC5fZ2V0QWxsQ2VsbHNCeUNvbHVtbklkKClbby5pZF0pPT1udWxsP3ZvaWQgMDp0LmdldFZhbHVlKCk7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nInx8dHlwZW9mIG49PSJudW1iZXIifX0pLGNyZWF0ZUNvbHVtbjooZSxvKT0+e2UuZ2V0Q2FuR2xvYmFsRmlsdGVyPSgpPT57dmFyIHQsbixpLHI7cmV0dXJuKCh0PWUuY29sdW1uRGVmLmVuYWJsZUdsb2JhbEZpbHRlcikhPW51bGw/dDohMCkmJigobj1vLm9wdGlvbnMuZW5hYmxlR2xvYmFsRmlsdGVyKSE9bnVsbD9uOiEwKSYmKChpPW8ub3B0aW9ucy5lbmFibGVGaWx0ZXJzKSE9bnVsbD9pOiEwKSYmKChyPW8ub3B0aW9ucy5nZXRDb2x1bW5DYW5HbG9iYWxGaWx0ZXI9PW51bGw/dm9pZCAwOm8ub3B0aW9ucy5nZXRDb2x1bW5DYW5HbG9iYWxGaWx0ZXIoZSkpIT1udWxsP3I6ITApJiYhIWUuYWNjZXNzb3JGbn19LGNyZWF0ZVRhYmxlOmU9PntlLmdldEdsb2JhbEF1dG9GaWx0ZXJGbj0oKT0+VS5pbmNsdWRlc1N0cmluZyxlLmdldEdsb2JhbEZpbHRlckZuPSgpPT57dmFyIG8sdDtjb25zdHtnbG9iYWxGaWx0ZXJGbjpufT1lLm9wdGlvbnM7cmV0dXJuIG1lKG4pP246bj09PSJhdXRvIj9lLmdldEdsb2JhbEF1dG9GaWx0ZXJGbigpOihvPSh0PWUub3B0aW9ucy5maWx0ZXJGbnMpPT1udWxsP3ZvaWQgMDp0W25dKSE9bnVsbD9vOlVbbl19LGUuc2V0R2xvYmFsRmlsdGVyPW89PntlLm9wdGlvbnMub25HbG9iYWxGaWx0ZXJDaGFuZ2U9PW51bGx8fGUub3B0aW9ucy5vbkdsb2JhbEZpbHRlckNoYW5nZShvKX0sZS5yZXNldEdsb2JhbEZpbHRlcj1vPT57ZS5zZXRHbG9iYWxGaWx0ZXIobz92b2lkIDA6ZS5pbml0aWFsU3RhdGUuZ2xvYmFsRmlsdGVyKX19fSxsbj17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7ZXhwYW5kZWQ6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25FeHBhbmRlZENoYW5nZTpMKCJleHBhbmRlZCIsZSkscGFnaW5hdGVFeHBhbmRlZFJvd3M6ITB9KSxjcmVhdGVUYWJsZTplPT57bGV0IG89ITEsdD0hMTtlLl9hdXRvUmVzZXRFeHBhbmRlZD0oKT0+e3ZhciBuLGk7aWYoIW8pe2UuX3F1ZXVlKCgpPT57bz0hMH0pO3JldHVybn1pZigobj0oaT1lLm9wdGlvbnMuYXV0b1Jlc2V0QWxsKSE9bnVsbD9pOmUub3B0aW9ucy5hdXRvUmVzZXRFeHBhbmRlZCkhPW51bGw/bjohZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZyl7aWYodClyZXR1cm47dD0hMCxlLl9xdWV1ZSgoKT0+e2UucmVzZXRFeHBhbmRlZCgpLHQ9ITF9KX19LGUuc2V0RXhwYW5kZWQ9bj0+ZS5vcHRpb25zLm9uRXhwYW5kZWRDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkV4cGFuZGVkQ2hhbmdlKG4pLGUudG9nZ2xlQWxsUm93c0V4cGFuZGVkPW49PntuPz8hZS5nZXRJc0FsbFJvd3NFeHBhbmRlZCgpP2Uuc2V0RXhwYW5kZWQoITApOmUuc2V0RXhwYW5kZWQoe30pfSxlLnJlc2V0RXhwYW5kZWQ9bj0+e3ZhciBpLHI7ZS5zZXRFeHBhbmRlZChuP3t9OihpPShyPWUuaW5pdGlhbFN0YXRlKT09bnVsbD92b2lkIDA6ci5leHBhbmRlZCkhPW51bGw/aTp7fSl9LGUuZ2V0Q2FuU29tZVJvd3NFeHBhbmQ9KCk9PmUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsKCkuZmxhdFJvd3Muc29tZShuPT5uLmdldENhbkV4cGFuZCgpKSxlLmdldFRvZ2dsZUFsbFJvd3NFeHBhbmRlZEhhbmRsZXI9KCk9Pm49PntuLnBlcnNpc3Q9PW51bGx8fG4ucGVyc2lzdCgpLGUudG9nZ2xlQWxsUm93c0V4cGFuZGVkKCl9LGUuZ2V0SXNTb21lUm93c0V4cGFuZGVkPSgpPT57Y29uc3Qgbj1lLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuIG49PT0hMHx8T2JqZWN0LnZhbHVlcyhuKS5zb21lKEJvb2xlYW4pfSxlLmdldElzQWxsUm93c0V4cGFuZGVkPSgpPT57Y29uc3Qgbj1lLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuIHR5cGVvZiBuPT0iYm9vbGVhbiI/bj09PSEwOiEoIU9iamVjdC5rZXlzKG4pLmxlbmd0aHx8ZS5nZXRSb3dNb2RlbCgpLmZsYXRSb3dzLnNvbWUoaT0+IWkuZ2V0SXNFeHBhbmRlZCgpKSl9LGUuZ2V0RXhwYW5kZWREZXB0aD0oKT0+e2xldCBuPTA7cmV0dXJuKGUuZ2V0U3RhdGUoKS5leHBhbmRlZD09PSEwP09iamVjdC5rZXlzKGUuZ2V0Um93TW9kZWwoKS5yb3dzQnlJZCk6T2JqZWN0LmtleXMoZS5nZXRTdGF0ZSgpLmV4cGFuZGVkKSkuZm9yRWFjaChyPT57Y29uc3QgbD1yLnNwbGl0KCIuIik7bj1NYXRoLm1heChuLGwubGVuZ3RoKX0pLG59LGUuZ2V0UHJlRXhwYW5kZWRSb3dNb2RlbD0oKT0+ZS5nZXRTb3J0ZWRSb3dNb2RlbCgpLGUuZ2V0RXhwYW5kZWRSb3dNb2RlbD0oKT0+KCFlLl9nZXRFeHBhbmRlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0RXhwYW5kZWRSb3dNb2RlbCYmKGUuX2dldEV4cGFuZGVkUm93TW9kZWw9ZS5vcHRpb25zLmdldEV4cGFuZGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxFeHBhbmRpbmd8fCFlLl9nZXRFeHBhbmRlZFJvd01vZGVsP2UuZ2V0UHJlRXhwYW5kZWRSb3dNb2RlbCgpOmUuX2dldEV4cGFuZGVkUm93TW9kZWwoKSl9LGNyZWF0ZVJvdzooZSxvKT0+e2UudG9nZ2xlRXhwYW5kZWQ9dD0+e28uc2V0RXhwYW5kZWQobj0+e3ZhciBpO2NvbnN0IHI9bj09PSEwPyEwOiEhKG4hPW51bGwmJm5bZS5pZF0pO2xldCBsPXt9O2lmKG49PT0hMD9PYmplY3Qua2V5cyhvLmdldFJvd01vZGVsKCkucm93c0J5SWQpLmZvckVhY2godT0+e2xbdV09ITB9KTpsPW4sdD0oaT10KSE9bnVsbD9pOiFyLCFyJiZ0KXJldHVybnsuLi5sLFtlLmlkXTohMH07aWYociYmIXQpe2NvbnN0e1tlLmlkXTp1LC4uLmF9PWw7cmV0dXJuIGF9cmV0dXJuIG59KX0sZS5nZXRJc0V4cGFuZGVkPSgpPT57dmFyIHQ7Y29uc3Qgbj1vLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuISEoKHQ9by5vcHRpb25zLmdldElzUm93RXhwYW5kZWQ9PW51bGw/dm9pZCAwOm8ub3B0aW9ucy5nZXRJc1Jvd0V4cGFuZGVkKGUpKSE9bnVsbD90Om49PT0hMHx8bj8uW2UuaWRdKX0sZS5nZXRDYW5FeHBhbmQ9KCk9Pnt2YXIgdCxuLGk7cmV0dXJuKHQ9by5vcHRpb25zLmdldFJvd0NhbkV4cGFuZD09bnVsbD92b2lkIDA6by5vcHRpb25zLmdldFJvd0NhbkV4cGFuZChlKSkhPW51bGw/dDooKG49by5vcHRpb25zLmVuYWJsZUV4cGFuZGluZykhPW51bGw/bjohMCkmJiEhKChpPWUuc3ViUm93cykhPW51bGwmJmkubGVuZ3RoKX0sZS5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZD0oKT0+e2xldCB0PSEwLG49ZTtmb3IoO3QmJm4ucGFyZW50SWQ7KW49by5nZXRSb3cobi5wYXJlbnRJZCwhMCksdD1uLmdldElzRXhwYW5kZWQoKTtyZXR1cm4gdH0sZS5nZXRUb2dnbGVFeHBhbmRlZEhhbmRsZXI9KCk9Pntjb25zdCB0PWUuZ2V0Q2FuRXhwYW5kKCk7cmV0dXJuKCk9Pnt0JiZlLnRvZ2dsZUV4cGFuZGVkKCl9fX19LE1lPTAsRGU9MTAsJGU9KCk9Pih7cGFnZUluZGV4Ok1lLHBhZ2VTaXplOkRlfSksc249e2dldEluaXRpYWxTdGF0ZTplPT4oey4uLmUscGFnaW5hdGlvbjp7Li4uJGUoKSwuLi5lPy5wYWdpbmF0aW9ufX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25QYWdpbmF0aW9uQ2hhbmdlOkwoInBhZ2luYXRpb24iLGUpfSksY3JlYXRlVGFibGU6ZT0+e2xldCBvPSExLHQ9ITE7ZS5fYXV0b1Jlc2V0UGFnZUluZGV4PSgpPT57dmFyIG4saTtpZighbyl7ZS5fcXVldWUoKCk9PntvPSEwfSk7cmV0dXJufWlmKChuPShpPWUub3B0aW9ucy5hdXRvUmVzZXRBbGwpIT1udWxsP2k6ZS5vcHRpb25zLmF1dG9SZXNldFBhZ2VJbmRleCkhPW51bGw/bjohZS5vcHRpb25zLm1hbnVhbFBhZ2luYXRpb24pe2lmKHQpcmV0dXJuO3Q9ITAsZS5fcXVldWUoKCk9PntlLnJlc2V0UGFnZUluZGV4KCksdD0hMX0pfX0sZS5zZXRQYWdpbmF0aW9uPW49Pntjb25zdCBpPXI9PksobixyKTtyZXR1cm4gZS5vcHRpb25zLm9uUGFnaW5hdGlvbkNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uUGFnaW5hdGlvbkNoYW5nZShpKX0sZS5yZXNldFBhZ2luYXRpb249bj0+e3ZhciBpO2Uuc2V0UGFnaW5hdGlvbihuPyRlKCk6KGk9ZS5pbml0aWFsU3RhdGUucGFnaW5hdGlvbikhPW51bGw/aTokZSgpKX0sZS5zZXRQYWdlSW5kZXg9bj0+e2Uuc2V0UGFnaW5hdGlvbihpPT57bGV0IHI9SyhuLGkucGFnZUluZGV4KTtjb25zdCBsPXR5cGVvZiBlLm9wdGlvbnMucGFnZUNvdW50PiJ1Inx8ZS5vcHRpb25zLnBhZ2VDb3VudD09PS0xP051bWJlci5NQVhfU0FGRV9JTlRFR0VSOmUub3B0aW9ucy5wYWdlQ291bnQtMTtyZXR1cm4gcj1NYXRoLm1heCgwLE1hdGgubWluKHIsbCkpLHsuLi5pLHBhZ2VJbmRleDpyfX0pfSxlLnJlc2V0UGFnZUluZGV4PW49Pnt2YXIgaSxyO2Uuc2V0UGFnZUluZGV4KG4/TWU6KGk9KHI9ZS5pbml0aWFsU3RhdGUpPT1udWxsfHwocj1yLnBhZ2luYXRpb24pPT1udWxsP3ZvaWQgMDpyLnBhZ2VJbmRleCkhPW51bGw/aTpNZSl9LGUucmVzZXRQYWdlU2l6ZT1uPT57dmFyIGkscjtlLnNldFBhZ2VTaXplKG4/RGU6KGk9KHI9ZS5pbml0aWFsU3RhdGUpPT1udWxsfHwocj1yLnBhZ2luYXRpb24pPT1udWxsP3ZvaWQgMDpyLnBhZ2VTaXplKSE9bnVsbD9pOkRlKX0sZS5zZXRQYWdlU2l6ZT1uPT57ZS5zZXRQYWdpbmF0aW9uKGk9Pntjb25zdCByPU1hdGgubWF4KDEsSyhuLGkucGFnZVNpemUpKSxsPWkucGFnZVNpemUqaS5wYWdlSW5kZXgsdT1NYXRoLmZsb29yKGwvcik7cmV0dXJuey4uLmkscGFnZUluZGV4OnUscGFnZVNpemU6cn19KX0sZS5zZXRQYWdlQ291bnQ9bj0+ZS5zZXRQYWdpbmF0aW9uKGk9Pnt2YXIgcjtsZXQgbD1LKG4sKHI9ZS5vcHRpb25zLnBhZ2VDb3VudCkhPW51bGw/cjotMSk7cmV0dXJuIHR5cGVvZiBsPT0ibnVtYmVyIiYmKGw9TWF0aC5tYXgoLTEsbCkpLHsuLi5pLHBhZ2VDb3VudDpsfX0pLGUuZ2V0UGFnZU9wdGlvbnM9QygoKT0+W2UuZ2V0UGFnZUNvdW50KCldLG49PntsZXQgaT1bXTtyZXR1cm4gbiYmbj4wJiYoaT1bLi4ubmV3IEFycmF5KG4pXS5maWxsKG51bGwpLm1hcCgocixsKT0+bCkpLGl9LHcoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIikpLGUuZ2V0Q2FuUHJldmlvdXNQYWdlPSgpPT5lLmdldFN0YXRlKCkucGFnaW5hdGlvbi5wYWdlSW5kZXg+MCxlLmdldENhbk5leHRQYWdlPSgpPT57Y29uc3R7cGFnZUluZGV4Om59PWUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uLGk9ZS5nZXRQYWdlQ291bnQoKTtyZXR1cm4gaT09PS0xPyEwOmk9PT0wPyExOm48aS0xfSxlLnByZXZpb3VzUGFnZT0oKT0+ZS5zZXRQYWdlSW5kZXgobj0+bi0xKSxlLm5leHRQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChuPT5uKzEpLGUuZmlyc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleCgwKSxlLmxhc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlLmdldFBhZ2VDb3VudCgpLTEpLGUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsPSgpPT5lLmdldEV4cGFuZGVkUm93TW9kZWwoKSxlLmdldFBhZ2luYXRpb25Sb3dNb2RlbD0oKT0+KCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwmJmUub3B0aW9ucy5nZXRQYWdpbmF0aW9uUm93TW9kZWwmJihlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw9ZS5vcHRpb25zLmdldFBhZ2luYXRpb25Sb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFBhZ2luYXRpb258fCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTplLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwoKSksZS5nZXRQYWdlQ291bnQ9KCk9Pnt2YXIgbjtyZXR1cm4obj1lLm9wdGlvbnMucGFnZUNvdW50KSE9bnVsbD9uOk1hdGguY2VpbChlLmdldFJvd0NvdW50KCkvZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemUpfSxlLmdldFJvd0NvdW50PSgpPT57dmFyIG47cmV0dXJuKG49ZS5vcHRpb25zLnJvd0NvdW50KSE9bnVsbD9uOmUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsKCkucm93cy5sZW5ndGh9fX0seGU9KCk9Pih7dG9wOltdLGJvdHRvbTpbXX0pLHVuPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dQaW5uaW5nOnhlKCksLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Sb3dQaW5uaW5nQ2hhbmdlOkwoInJvd1Bpbm5pbmciLGUpfSksY3JlYXRlUm93OihlLG8pPT57ZS5waW49KHQsbixpKT0+e2NvbnN0IHI9bj9lLmdldExlYWZSb3dzKCkubWFwKGE9PntsZXR7aWQ6Z309YTtyZXR1cm4gZ30pOltdLGw9aT9lLmdldFBhcmVudFJvd3MoKS5tYXAoYT0+e2xldHtpZDpnfT1hO3JldHVybiBnfSk6W10sdT1uZXcgU2V0KFsuLi5sLGUuaWQsLi4ucl0pO28uc2V0Um93UGlubmluZyhhPT57dmFyIGcsYztpZih0PT09ImJvdHRvbSIpe3ZhciBwLGQ7cmV0dXJue3RvcDooKHA9YT8udG9wKSE9bnVsbD9wOltdKS5maWx0ZXIobT0+ISh1IT1udWxsJiZ1LmhhcyhtKSkpLGJvdHRvbTpbLi4uKChkPWE/LmJvdHRvbSkhPW51bGw/ZDpbXSkuZmlsdGVyKG09PiEodSE9bnVsbCYmdS5oYXMobSkpKSwuLi5BcnJheS5mcm9tKHUpXX19aWYodD09PSJ0b3AiKXt2YXIgcyxmO3JldHVybnt0b3A6Wy4uLigocz1hPy50b3ApIT1udWxsP3M6W10pLmZpbHRlcihtPT4hKHUhPW51bGwmJnUuaGFzKG0pKSksLi4uQXJyYXkuZnJvbSh1KV0sYm90dG9tOigoZj1hPy5ib3R0b20pIT1udWxsP2Y6W10pLmZpbHRlcihtPT4hKHUhPW51bGwmJnUuaGFzKG0pKSl9fXJldHVybnt0b3A6KChnPWE/LnRvcCkhPW51bGw/ZzpbXSkuZmlsdGVyKG09PiEodSE9bnVsbCYmdS5oYXMobSkpKSxib3R0b206KChjPWE/LmJvdHRvbSkhPW51bGw/YzpbXSkuZmlsdGVyKG09PiEodSE9bnVsbCYmdS5oYXMobSkpKX19KX0sZS5nZXRDYW5QaW49KCk9Pnt2YXIgdDtjb25zdHtlbmFibGVSb3dQaW5uaW5nOm4sZW5hYmxlUGlubmluZzppfT1vLm9wdGlvbnM7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oZSk6KHQ9bj8/aSkhPW51bGw/dDohMH0sZS5nZXRJc1Bpbm5lZD0oKT0+e2NvbnN0IHQ9W2UuaWRdLHt0b3A6bixib3R0b206aX09by5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcscj10LnNvbWUodT0+bj8uaW5jbHVkZXModSkpLGw9dC5zb21lKHU9Pmk/LmluY2x1ZGVzKHUpKTtyZXR1cm4gcj8idG9wIjpsPyJib3R0b20iOiExfSxlLmdldFBpbm5lZEluZGV4PSgpPT57dmFyIHQsbjtjb25zdCBpPWUuZ2V0SXNQaW5uZWQoKTtpZighaSlyZXR1cm4tMTtjb25zdCByPSh0PWk9PT0idG9wIj9vLmdldFRvcFJvd3MoKTpvLmdldEJvdHRvbVJvd3MoKSk9PW51bGw/dm9pZCAwOnQubWFwKGw9PntsZXR7aWQ6dX09bDtyZXR1cm4gdX0pO3JldHVybihuPXI/LmluZGV4T2YoZS5pZCkpIT1udWxsP246LTF9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dQaW5uaW5nPW89PmUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vblJvd1Bpbm5pbmdDaGFuZ2UobyksZS5yZXNldFJvd1Bpbm5pbmc9bz0+e3ZhciB0LG47cmV0dXJuIGUuc2V0Um93UGlubmluZyhvP3hlKCk6KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLnJvd1Bpbm5pbmcpIT1udWxsP3Q6eGUoKSl9LGUuZ2V0SXNTb21lUm93c1Bpbm5lZD1vPT57dmFyIHQ7Y29uc3Qgbj1lLmdldFN0YXRlKCkucm93UGlubmluZztpZighbyl7dmFyIGkscjtyZXR1cm4hISgoaT1uLnRvcCkhPW51bGwmJmkubGVuZ3RofHwocj1uLmJvdHRvbSkhPW51bGwmJnIubGVuZ3RoKX1yZXR1cm4hISgodD1uW29dKSE9bnVsbCYmdC5sZW5ndGgpfSxlLl9nZXRQaW5uZWRSb3dzPShvLHQsbik9Pnt2YXIgaTtyZXR1cm4oKGk9ZS5vcHRpb25zLmtlZXBQaW5uZWRSb3dzKT09bnVsbHx8aT8odD8/W10pLm1hcChsPT57Y29uc3QgdT1lLmdldFJvdyhsLCEwKTtyZXR1cm4gdS5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZCgpP3U6bnVsbH0pOih0Pz9bXSkubWFwKGw9Pm8uZmluZCh1PT51LmlkPT09bCkpKS5maWx0ZXIoQm9vbGVhbikubWFwKGw9Pih7Li4ubCxwb3NpdGlvbjpufSkpfSxlLmdldFRvcFJvd3M9QygoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLnRvcF0sKG8sdCk9PmUuX2dldFBpbm5lZFJvd3Mobyx0LCJ0b3AiKSx3KGUub3B0aW9ucywiZGVidWdSb3dzIikpLGUuZ2V0Qm90dG9tUm93cz1DKCgpPT5bZS5nZXRSb3dNb2RlbCgpLnJvd3MsZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcuYm90dG9tXSwobyx0KT0+ZS5fZ2V0UGlubmVkUm93cyhvLHQsImJvdHRvbSIpLHcoZS5vcHRpb25zLCJkZWJ1Z1Jvd3MiKSksZS5nZXRDZW50ZXJSb3dzPUMoKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3AsZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcuYm90dG9tXSwobyx0LG4pPT57Y29uc3QgaT1uZXcgU2V0KFsuLi50Pz9bXSwuLi5uPz9bXV0pO3JldHVybiBvLmZpbHRlcihyPT4haS5oYXMoci5pZCkpfSx3KGUub3B0aW9ucywiZGVidWdSb3dzIikpfX0sYW49e2dldEluaXRpYWxTdGF0ZTplPT4oe3Jvd1NlbGVjdGlvbjp7fSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1NlbGVjdGlvbkNoYW5nZTpMKCJyb3dTZWxlY3Rpb24iLGUpLGVuYWJsZVJvd1NlbGVjdGlvbjohMCxlbmFibGVNdWx0aVJvd1NlbGVjdGlvbjohMCxlbmFibGVTdWJSb3dTZWxlY3Rpb246ITB9KSxjcmVhdGVUYWJsZTplPT57ZS5zZXRSb3dTZWxlY3Rpb249bz0+ZS5vcHRpb25zLm9uUm93U2VsZWN0aW9uQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Sb3dTZWxlY3Rpb25DaGFuZ2UobyksZS5yZXNldFJvd1NlbGVjdGlvbj1vPT57dmFyIHQ7cmV0dXJuIGUuc2V0Um93U2VsZWN0aW9uKG8/e306KHQ9ZS5pbml0aWFsU3RhdGUucm93U2VsZWN0aW9uKSE9bnVsbD90Ont9KX0sZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQ9bz0+e2Uuc2V0Um93U2VsZWN0aW9uKHQ9PntvPXR5cGVvZiBvPCJ1Ij9vOiFlLmdldElzQWxsUm93c1NlbGVjdGVkKCk7Y29uc3Qgbj17Li4udH0saT1lLmdldFByZUdyb3VwZWRSb3dNb2RlbCgpLmZsYXRSb3dzO3JldHVybiBvP2kuZm9yRWFjaChyPT57ci5nZXRDYW5TZWxlY3QoKSYmKG5bci5pZF09ITApfSk6aS5mb3JFYWNoKHI9PntkZWxldGUgbltyLmlkXX0pLG59KX0sZS50b2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkPW89PmUuc2V0Um93U2VsZWN0aW9uKHQ9Pntjb25zdCBuPXR5cGVvZiBvPCJ1Ij9vOiFlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZCgpLGk9ey4uLnR9O3JldHVybiBlLmdldFJvd01vZGVsKCkucm93cy5mb3JFYWNoKHI9PntBZShpLHIuaWQsbiwhMCxlKX0pLGl9KSxlLmdldFByZVNlbGVjdGVkUm93TW9kZWw9KCk9PmUuZ2V0Q29yZVJvd01vZGVsKCksZS5nZXRTZWxlY3RlZFJvd01vZGVsPUMoKCk9PltlLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLGUuZ2V0Q29yZVJvd01vZGVsKCldLChvLHQpPT5PYmplY3Qua2V5cyhvKS5sZW5ndGg/UGUoZSx0KTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWw9QygoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCldLChvLHQpPT5PYmplY3Qua2V5cyhvKS5sZW5ndGg/UGUoZSx0KTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRHcm91cGVkU2VsZWN0ZWRSb3dNb2RlbD1DKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldFNvcnRlZFJvd01vZGVsKCldLChvLHQpPT5PYmplY3Qua2V5cyhvKS5sZW5ndGg/UGUoZSx0KTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSksZS5nZXRJc0FsbFJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IG89ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3Mse3Jvd1NlbGVjdGlvbjp0fT1lLmdldFN0YXRlKCk7bGV0IG49ISEoby5sZW5ndGgmJk9iamVjdC5rZXlzKHQpLmxlbmd0aCk7cmV0dXJuIG4mJm8uc29tZShpPT5pLmdldENhblNlbGVjdCgpJiYhdFtpLmlkXSkmJihuPSExKSxufSxlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IG89ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5maWx0ZXIoaT0+aS5nZXRDYW5TZWxlY3QoKSkse3Jvd1NlbGVjdGlvbjp0fT1lLmdldFN0YXRlKCk7bGV0IG49ISFvLmxlbmd0aDtyZXR1cm4gbiYmby5zb21lKGk9PiF0W2kuaWRdKSYmKG49ITEpLG59LGUuZ2V0SXNTb21lUm93c1NlbGVjdGVkPSgpPT57dmFyIG87Y29uc3QgdD1PYmplY3Qua2V5cygobz1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uKSE9bnVsbD9vOnt9KS5sZW5ndGg7cmV0dXJuIHQ+MCYmdDxlLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cy5sZW5ndGh9LGUuZ2V0SXNTb21lUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2NvbnN0IG89ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4gZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKT8hMTpvLmZpbHRlcih0PT50LmdldENhblNlbGVjdCgpKS5zb21lKHQ9PnQuZ2V0SXNTZWxlY3RlZCgpfHx0LmdldElzU29tZVNlbGVjdGVkKCkpfSxlLmdldFRvZ2dsZUFsbFJvd3NTZWxlY3RlZEhhbmRsZXI9KCk9Pm89PntlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZChvLnRhcmdldC5jaGVja2VkKX0sZS5nZXRUb2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkSGFuZGxlcj0oKT0+bz0+e2UudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZChvLnRhcmdldC5jaGVja2VkKX19LGNyZWF0ZVJvdzooZSxvKT0+e2UudG9nZ2xlU2VsZWN0ZWQ9KHQsbik9Pntjb25zdCBpPWUuZ2V0SXNTZWxlY3RlZCgpO28uc2V0Um93U2VsZWN0aW9uKHI9Pnt2YXIgbDtpZih0PXR5cGVvZiB0PCJ1Ij90OiFpLGUuZ2V0Q2FuU2VsZWN0KCkmJmk9PT10KXJldHVybiByO2NvbnN0IHU9ey4uLnJ9O3JldHVybiBBZSh1LGUuaWQsdCwobD1uPy5zZWxlY3RDaGlsZHJlbikhPW51bGw/bDohMCxvKSx1fSl9LGUuZ2V0SXNTZWxlY3RlZD0oKT0+e2NvbnN0e3Jvd1NlbGVjdGlvbjp0fT1vLmdldFN0YXRlKCk7cmV0dXJuIEhlKGUsdCl9LGUuZ2V0SXNTb21lU2VsZWN0ZWQ9KCk9Pntjb25zdHtyb3dTZWxlY3Rpb246dH09by5nZXRTdGF0ZSgpO3JldHVybiB6ZShlLHQpPT09InNvbWUifSxlLmdldElzQWxsU3ViUm93c1NlbGVjdGVkPSgpPT57Y29uc3R7cm93U2VsZWN0aW9uOnR9PW8uZ2V0U3RhdGUoKTtyZXR1cm4gemUoZSx0KT09PSJhbGwifSxlLmdldENhblNlbGVjdD0oKT0+e3ZhciB0O3JldHVybiB0eXBlb2Ygby5vcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbj09ImZ1bmN0aW9uIj9vLm9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uKGUpOih0PW8ub3B0aW9ucy5lbmFibGVSb3dTZWxlY3Rpb24pIT1udWxsP3Q6ITB9LGUuZ2V0Q2FuU2VsZWN0U3ViUm93cz0oKT0+e3ZhciB0O3JldHVybiB0eXBlb2Ygby5vcHRpb25zLmVuYWJsZVN1YlJvd1NlbGVjdGlvbj09ImZ1bmN0aW9uIj9vLm9wdGlvbnMuZW5hYmxlU3ViUm93U2VsZWN0aW9uKGUpOih0PW8ub3B0aW9ucy5lbmFibGVTdWJSb3dTZWxlY3Rpb24pIT1udWxsP3Q6ITB9LGUuZ2V0Q2FuTXVsdGlTZWxlY3Q9KCk9Pnt2YXIgdDtyZXR1cm4gdHlwZW9mIG8ub3B0aW9ucy5lbmFibGVNdWx0aVJvd1NlbGVjdGlvbj09ImZ1bmN0aW9uIj9vLm9wdGlvbnMuZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb24oZSk6KHQ9by5vcHRpb25zLmVuYWJsZU11bHRpUm93U2VsZWN0aW9uKSE9bnVsbD90OiEwfSxlLmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5TZWxlY3QoKTtyZXR1cm4gbj0+e3ZhciBpO3QmJmUudG9nZ2xlU2VsZWN0ZWQoKGk9bi50YXJnZXQpPT1udWxsP3ZvaWQgMDppLmNoZWNrZWQpfX19fSxBZT0oZSxvLHQsbixpKT0+e3ZhciByO2NvbnN0IGw9aS5nZXRSb3cobywhMCk7dD8obC5nZXRDYW5NdWx0aVNlbGVjdCgpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKHU9PmRlbGV0ZSBlW3VdKSxsLmdldENhblNlbGVjdCgpJiYoZVtvXT0hMCkpOmRlbGV0ZSBlW29dLG4mJihyPWwuc3ViUm93cykhPW51bGwmJnIubGVuZ3RoJiZsLmdldENhblNlbGVjdFN1YlJvd3MoKSYmbC5zdWJSb3dzLmZvckVhY2godT0+QWUoZSx1LmlkLHQsbixpKSl9O2Z1bmN0aW9uIFBlKGUsbyl7Y29uc3QgdD1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLG49W10saT17fSxyPWZ1bmN0aW9uKGwsdSl7cmV0dXJuIGwubWFwKGE9Pnt2YXIgZztjb25zdCBjPUhlKGEsdCk7aWYoYyYmKG4ucHVzaChhKSxpW2EuaWRdPWEpLChnPWEuc3ViUm93cykhPW51bGwmJmcubGVuZ3RoJiYoYT17Li4uYSxzdWJSb3dzOnIoYS5zdWJSb3dzKX0pLGMpcmV0dXJuIGF9KS5maWx0ZXIoQm9vbGVhbil9O3JldHVybntyb3dzOnIoby5yb3dzKSxmbGF0Um93czpuLHJvd3NCeUlkOml9fWZ1bmN0aW9uIEhlKGUsbyl7dmFyIHQ7cmV0dXJuKHQ9b1tlLmlkXSkhPW51bGw/dDohMX1mdW5jdGlvbiB6ZShlLG8sdCl7dmFyIG47aWYoISgobj1lLnN1YlJvd3MpIT1udWxsJiZuLmxlbmd0aCkpcmV0dXJuITE7bGV0IGk9ITAscj0hMTtyZXR1cm4gZS5zdWJSb3dzLmZvckVhY2gobD0+e2lmKCEociYmIWkpJiYobC5nZXRDYW5TZWxlY3QoKSYmKEhlKGwsbyk/cj0hMDppPSExKSxsLnN1YlJvd3MmJmwuc3ViUm93cy5sZW5ndGgpKXtjb25zdCB1PXplKGwsbyk7dT09PSJhbGwiP3I9ITA6KHU9PT0ic29tZSImJihyPSEwKSxpPSExKX19KSxpPyJhbGwiOnI/InNvbWUiOiExfWNvbnN0IE9lPS8oWzAtOV0rKS9nbSxnbj0oZSxvLHQpPT5ndChXKGUuZ2V0VmFsdWUodCkpLnRvTG93ZXJDYXNlKCksVyhvLmdldFZhbHVlKHQpKS50b0xvd2VyQ2FzZSgpKSxkbj0oZSxvLHQpPT5ndChXKGUuZ2V0VmFsdWUodCkpLFcoby5nZXRWYWx1ZSh0KSkpLGNuPShlLG8sdCk9PkxlKFcoZS5nZXRWYWx1ZSh0KSkudG9Mb3dlckNhc2UoKSxXKG8uZ2V0VmFsdWUodCkpLnRvTG93ZXJDYXNlKCkpLGZuPShlLG8sdCk9PkxlKFcoZS5nZXRWYWx1ZSh0KSksVyhvLmdldFZhbHVlKHQpKSkscG49KGUsbyx0KT0+e2NvbnN0IG49ZS5nZXRWYWx1ZSh0KSxpPW8uZ2V0VmFsdWUodCk7cmV0dXJuIG4+aT8xOm48aT8tMTowfSxtbj0oZSxvLHQpPT5MZShlLmdldFZhbHVlKHQpLG8uZ2V0VmFsdWUodCkpO2Z1bmN0aW9uIExlKGUsbyl7cmV0dXJuIGU9PT1vPzA6ZT5vPzE6LTF9ZnVuY3Rpb24gVyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJudW1iZXIiP2lzTmFOKGUpfHxlPT09MS8wfHxlPT09LTEvMD8iIjpTdHJpbmcoZSk6dHlwZW9mIGU9PSJzdHJpbmciP2U6IiJ9ZnVuY3Rpb24gZ3QoZSxvKXtjb25zdCB0PWUuc3BsaXQoT2UpLmZpbHRlcihCb29sZWFuKSxuPW8uc3BsaXQoT2UpLmZpbHRlcihCb29sZWFuKTtmb3IoO3QubGVuZ3RoJiZuLmxlbmd0aDspe2NvbnN0IGk9dC5zaGlmdCgpLHI9bi5zaGlmdCgpLGw9cGFyc2VJbnQoaSwxMCksdT1wYXJzZUludChyLDEwKSxhPVtsLHVdLnNvcnQoKTtpZihpc05hTihhWzBdKSl7aWYoaT5yKXJldHVybiAxO2lmKHI+aSlyZXR1cm4tMTtjb250aW51ZX1pZihpc05hTihhWzFdKSlyZXR1cm4gaXNOYU4obCk/LTE6MTtpZihsPnUpcmV0dXJuIDE7aWYodT5sKXJldHVybi0xfXJldHVybiB0Lmxlbmd0aC1uLmxlbmd0aH1jb25zdCBzZT17YWxwaGFudW1lcmljOmduLGFscGhhbnVtZXJpY0Nhc2VTZW5zaXRpdmU6ZG4sdGV4dDpjbix0ZXh0Q2FzZVNlbnNpdGl2ZTpmbixkYXRldGltZTpwbixiYXNpYzptbn0sU249e2dldEluaXRpYWxTdGF0ZTplPT4oe3NvcnRpbmc6W10sLi4uZX0pLGdldERlZmF1bHRDb2x1bW5EZWY6KCk9Pih7c29ydGluZ0ZuOiJhdXRvIixzb3J0VW5kZWZpbmVkOjF9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uU29ydGluZ0NoYW5nZTpMKCJzb3J0aW5nIixlKSxpc011bHRpU29ydEV2ZW50Om89Pm8uc2hpZnRLZXl9KSxjcmVhdGVDb2x1bW46KGUsbyk9PntlLmdldEF1dG9Tb3J0aW5nRm49KCk9Pntjb25zdCB0PW8uZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLmZsYXRSb3dzLnNsaWNlKDEwKTtsZXQgbj0hMTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCByPWk/LmdldFZhbHVlKGUuaWQpO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKT09PSJbb2JqZWN0IERhdGVdIilyZXR1cm4gc2UuZGF0ZXRpbWU7aWYodHlwZW9mIHI9PSJzdHJpbmciJiYobj0hMCxyLnNwbGl0KE9lKS5sZW5ndGg+MSkpcmV0dXJuIHNlLmFscGhhbnVtZXJpY31yZXR1cm4gbj9zZS50ZXh0OnNlLmJhc2ljfSxlLmdldEF1dG9Tb3J0RGlyPSgpPT57Y29uc3QgdD1vLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93c1swXTtyZXR1cm4gdHlwZW9mIHQ/LmdldFZhbHVlKGUuaWQpPT0ic3RyaW5nIj8iYXNjIjoiZGVzYyJ9LGUuZ2V0U29ydGluZ0ZuPSgpPT57dmFyIHQsbjtpZighZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIG1lKGUuY29sdW1uRGVmLnNvcnRpbmdGbik/ZS5jb2x1bW5EZWYuc29ydGluZ0ZuOmUuY29sdW1uRGVmLnNvcnRpbmdGbj09PSJhdXRvIj9lLmdldEF1dG9Tb3J0aW5nRm4oKToodD0obj1vLm9wdGlvbnMuc29ydGluZ0Zucyk9PW51bGw/dm9pZCAwOm5bZS5jb2x1bW5EZWYuc29ydGluZ0ZuXSkhPW51bGw/dDpzZVtlLmNvbHVtbkRlZi5zb3J0aW5nRm5dfSxlLnRvZ2dsZVNvcnRpbmc9KHQsbik9Pntjb25zdCBpPWUuZ2V0TmV4dFNvcnRpbmdPcmRlcigpLHI9dHlwZW9mIHQ8InUiJiZ0IT09bnVsbDtvLnNldFNvcnRpbmcobD0+e2NvbnN0IHU9bD8uZmluZChzPT5zLmlkPT09ZS5pZCksYT1sPy5maW5kSW5kZXgocz0+cy5pZD09PWUuaWQpO2xldCBnPVtdLGMscD1yP3Q6aT09PSJkZXNjIjtpZihsIT1udWxsJiZsLmxlbmd0aCYmZS5nZXRDYW5NdWx0aVNvcnQoKSYmbj91P2M9InRvZ2dsZSI6Yz0iYWRkIjpsIT1udWxsJiZsLmxlbmd0aCYmYSE9PWwubGVuZ3RoLTE/Yz0icmVwbGFjZSI6dT9jPSJ0b2dnbGUiOmM9InJlcGxhY2UiLGM9PT0idG9nZ2xlIiYmKHJ8fGl8fChjPSJyZW1vdmUiKSksYz09PSJhZGQiKXt2YXIgZDtnPVsuLi5sLHtpZDplLmlkLGRlc2M6cH1dLGcuc3BsaWNlKDAsZy5sZW5ndGgtKChkPW8ub3B0aW9ucy5tYXhNdWx0aVNvcnRDb2xDb3VudCkhPW51bGw/ZDpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpfWVsc2UgYz09PSJ0b2dnbGUiP2c9bC5tYXAocz0+cy5pZD09PWUuaWQ/ey4uLnMsZGVzYzpwfTpzKTpjPT09InJlbW92ZSI/Zz1sLmZpbHRlcihzPT5zLmlkIT09ZS5pZCk6Zz1be2lkOmUuaWQsZGVzYzpwfV07cmV0dXJuIGd9KX0sZS5nZXRGaXJzdFNvcnREaXI9KCk9Pnt2YXIgdCxuO3JldHVybigodD0obj1lLmNvbHVtbkRlZi5zb3J0RGVzY0ZpcnN0KSE9bnVsbD9uOm8ub3B0aW9ucy5zb3J0RGVzY0ZpcnN0KSE9bnVsbD90OmUuZ2V0QXV0b1NvcnREaXIoKT09PSJkZXNjIik/ImRlc2MiOiJhc2MifSxlLmdldE5leHRTb3J0aW5nT3JkZXI9dD0+e3ZhciBuLGk7Y29uc3Qgcj1lLmdldEZpcnN0U29ydERpcigpLGw9ZS5nZXRJc1NvcnRlZCgpO3JldHVybiBsP2whPT1yJiYoKG49by5vcHRpb25zLmVuYWJsZVNvcnRpbmdSZW1vdmFsKT09bnVsbHx8bikmJighKHQmJihpPW8ub3B0aW9ucy5lbmFibGVNdWx0aVJlbW92ZSkhPW51bGwpfHxpKT8hMTpsPT09ImRlc2MiPyJhc2MiOiJkZXNjIjpyfSxlLmdldENhblNvcnQ9KCk9Pnt2YXIgdCxuO3JldHVybigodD1lLmNvbHVtbkRlZi5lbmFibGVTb3J0aW5nKSE9bnVsbD90OiEwKSYmKChuPW8ub3B0aW9ucy5lbmFibGVTb3J0aW5nKSE9bnVsbD9uOiEwKSYmISFlLmFjY2Vzc29yRm59LGUuZ2V0Q2FuTXVsdGlTb3J0PSgpPT57dmFyIHQsbjtyZXR1cm4odD0obj1lLmNvbHVtbkRlZi5lbmFibGVNdWx0aVNvcnQpIT1udWxsP246by5vcHRpb25zLmVuYWJsZU11bHRpU29ydCkhPW51bGw/dDohIWUuYWNjZXNzb3JGbn0sZS5nZXRJc1NvcnRlZD0oKT0+e3ZhciB0O2NvbnN0IG49KHQ9by5nZXRTdGF0ZSgpLnNvcnRpbmcpPT1udWxsP3ZvaWQgMDp0LmZpbmQoaT0+aS5pZD09PWUuaWQpO3JldHVybiBuP24uZGVzYz8iZGVzYyI6ImFzYyI6ITF9LGUuZ2V0U29ydEluZGV4PSgpPT57dmFyIHQsbjtyZXR1cm4odD0obj1vLmdldFN0YXRlKCkuc29ydGluZyk9PW51bGw/dm9pZCAwOm4uZmluZEluZGV4KGk9PmkuaWQ9PT1lLmlkKSkhPW51bGw/dDotMX0sZS5jbGVhclNvcnRpbmc9KCk9PntvLnNldFNvcnRpbmcodD0+dCE9bnVsbCYmdC5sZW5ndGg/dC5maWx0ZXIobj0+bi5pZCE9PWUuaWQpOltdKX0sZS5nZXRUb2dnbGVTb3J0aW5nSGFuZGxlcj0oKT0+e2NvbnN0IHQ9ZS5nZXRDYW5Tb3J0KCk7cmV0dXJuIG49Pnt0JiYobi5wZXJzaXN0PT1udWxsfHxuLnBlcnNpc3QoKSxlLnRvZ2dsZVNvcnRpbmc9PW51bGx8fGUudG9nZ2xlU29ydGluZyh2b2lkIDAsZS5nZXRDYW5NdWx0aVNvcnQoKT9vLm9wdGlvbnMuaXNNdWx0aVNvcnRFdmVudD09bnVsbD92b2lkIDA6by5vcHRpb25zLmlzTXVsdGlTb3J0RXZlbnQobik6ITEpKX19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRTb3J0aW5nPW89PmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2UobyksZS5yZXNldFNvcnRpbmc9bz0+e3ZhciB0LG47ZS5zZXRTb3J0aW5nKG8/W106KHQ9KG49ZS5pbml0aWFsU3RhdGUpPT1udWxsP3ZvaWQgMDpuLnNvcnRpbmcpIT1udWxsP3Q6W10pfSxlLmdldFByZVNvcnRlZFJvd01vZGVsPSgpPT5lLmdldEdyb3VwZWRSb3dNb2RlbCgpLGUuZ2V0U29ydGVkUm93TW9kZWw9KCk9PighZS5fZ2V0U29ydGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbCYmKGUuX2dldFNvcnRlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRTb3J0ZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFNvcnRpbmd8fCFlLl9nZXRTb3J0ZWRSb3dNb2RlbD9lLmdldFByZVNvcnRlZFJvd01vZGVsKCk6ZS5fZ2V0U29ydGVkUm93TW9kZWwoKSl9fSx2bj1bSHQsbm4sWXQsUXQsTHQscXQsb24scm4sU24sV3QsbG4sc24sdW4sYW4sZW5dO2Z1bmN0aW9uIENuKGUpe3ZhciBvLHQ7Y29uc3Qgbj1bLi4udm4sLi4uKG89ZS5fZmVhdHVyZXMpIT1udWxsP286W11dO2xldCBpPXtfZmVhdHVyZXM6bn07Y29uc3Qgcj1pLl9mZWF0dXJlcy5yZWR1Y2UoKGQscyk9Pk9iamVjdC5hc3NpZ24oZCxzLmdldERlZmF1bHRPcHRpb25zPT1udWxsP3ZvaWQgMDpzLmdldERlZmF1bHRPcHRpb25zKGkpKSx7fSksbD1kPT5pLm9wdGlvbnMubWVyZ2VPcHRpb25zP2kub3B0aW9ucy5tZXJnZU9wdGlvbnMocixkKTp7Li4uciwuLi5kfTtsZXQgYT17Li4ue30sLi4uKHQ9ZS5pbml0aWFsU3RhdGUpIT1udWxsP3Q6e319O2kuX2ZlYXR1cmVzLmZvckVhY2goZD0+e3ZhciBzO2E9KHM9ZC5nZXRJbml0aWFsU3RhdGU9PW51bGw/dm9pZCAwOmQuZ2V0SW5pdGlhbFN0YXRlKGEpKSE9bnVsbD9zOmF9KTtjb25zdCBnPVtdO2xldCBjPSExO2NvbnN0IHA9e19mZWF0dXJlczpuLG9wdGlvbnM6ey4uLnIsLi4uZX0saW5pdGlhbFN0YXRlOmEsX3F1ZXVlOmQ9PntnLnB1c2goZCksY3x8KGM9ITAsUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2Zvcig7Zy5sZW5ndGg7KWcuc2hpZnQoKSgpO2M9ITF9KS5jYXRjaChzPT5zZXRUaW1lb3V0KCgpPT57dGhyb3cgc30pKSl9LHJlc2V0OigpPT57aS5zZXRTdGF0ZShpLmluaXRpYWxTdGF0ZSl9LHNldE9wdGlvbnM6ZD0+e2NvbnN0IHM9SyhkLGkub3B0aW9ucyk7aS5vcHRpb25zPWwocyl9LGdldFN0YXRlOigpPT5pLm9wdGlvbnMuc3RhdGUsc2V0U3RhdGU6ZD0+e2kub3B0aW9ucy5vblN0YXRlQ2hhbmdlPT1udWxsfHxpLm9wdGlvbnMub25TdGF0ZUNoYW5nZShkKX0sX2dldFJvd0lkOihkLHMsZik9Pnt2YXIgbTtyZXR1cm4obT1pLm9wdGlvbnMuZ2V0Um93SWQ9PW51bGw/dm9pZCAwOmkub3B0aW9ucy5nZXRSb3dJZChkLHMsZikpIT1udWxsP206YCR7Zj9bZi5pZCxzXS5qb2luKCIuIik6c31gfSxnZXRDb3JlUm93TW9kZWw6KCk9PihpLl9nZXRDb3JlUm93TW9kZWx8fChpLl9nZXRDb3JlUm93TW9kZWw9aS5vcHRpb25zLmdldENvcmVSb3dNb2RlbChpKSksaS5fZ2V0Q29yZVJvd01vZGVsKCkpLGdldFJvd01vZGVsOigpPT5pLmdldFBhZ2luYXRpb25Sb3dNb2RlbCgpLGdldFJvdzooZCxzKT0+e2xldCBmPShzP2kuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsKCk6aS5nZXRSb3dNb2RlbCgpKS5yb3dzQnlJZFtkXTtpZighZiYmKGY9aS5nZXRDb3JlUm93TW9kZWwoKS5yb3dzQnlJZFtkXSwhZikpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmfSxfZ2V0RGVmYXVsdENvbHVtbkRlZjpDKCgpPT5baS5vcHRpb25zLmRlZmF1bHRDb2x1bW5dLGQ9Pnt2YXIgcztyZXR1cm4gZD0ocz1kKSE9bnVsbD9zOnt9LHtoZWFkZXI6Zj0+e2NvbnN0IG09Zi5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtyZXR1cm4gbS5hY2Nlc3NvcktleT9tLmFjY2Vzc29yS2V5Om0uYWNjZXNzb3JGbj9tLmlkOm51bGx9LGNlbGw6Zj0+e3ZhciBtLGg7cmV0dXJuKG09KGg9Zi5yZW5kZXJWYWx1ZSgpKT09bnVsbHx8aC50b1N0cmluZz09bnVsbD92b2lkIDA6aC50b1N0cmluZygpKSE9bnVsbD9tOm51bGx9LC4uLmkuX2ZlYXR1cmVzLnJlZHVjZSgoZixtKT0+T2JqZWN0LmFzc2lnbihmLG0uZ2V0RGVmYXVsdENvbHVtbkRlZj09bnVsbD92b2lkIDA6bS5nZXREZWZhdWx0Q29sdW1uRGVmKCkpLHt9KSwuLi5kfX0sdyhlLCJkZWJ1Z0NvbHVtbnMiKSksX2dldENvbHVtbkRlZnM6KCk9Pmkub3B0aW9ucy5jb2x1bW5zLGdldEFsbENvbHVtbnM6QygoKT0+W2kuX2dldENvbHVtbkRlZnMoKV0sZD0+e2NvbnN0IHM9ZnVuY3Rpb24oZixtLGgpe3JldHVybiBoPT09dm9pZCAwJiYoaD0wKSxmLm1hcChSPT57Y29uc3QgeD1HdChpLFIsaCxtKSxQPVI7cmV0dXJuIHguY29sdW1ucz1QLmNvbHVtbnM/cyhQLmNvbHVtbnMseCxoKzEpOltdLHh9KX07cmV0dXJuIHMoZCl9LHcoZSwiZGVidWdDb2x1bW5zIikpLGdldEFsbEZsYXRDb2x1bW5zOkMoKCk9PltpLmdldEFsbENvbHVtbnMoKV0sZD0+ZC5mbGF0TWFwKHM9PnMuZ2V0RmxhdENvbHVtbnMoKSksdyhlLCJkZWJ1Z0NvbHVtbnMiKSksX2dldEFsbEZsYXRDb2x1bW5zQnlJZDpDKCgpPT5baS5nZXRBbGxGbGF0Q29sdW1ucygpXSxkPT5kLnJlZHVjZSgocyxmKT0+KHNbZi5pZF09ZixzKSx7fSksdyhlLCJkZWJ1Z0NvbHVtbnMiKSksZ2V0QWxsTGVhZkNvbHVtbnM6QygoKT0+W2kuZ2V0QWxsQ29sdW1ucygpLGkuX2dldE9yZGVyQ29sdW1uc0ZuKCldLChkLHMpPT57bGV0IGY9ZC5mbGF0TWFwKG09Pm0uZ2V0TGVhZkNvbHVtbnMoKSk7cmV0dXJuIHMoZil9LHcoZSwiZGVidWdDb2x1bW5zIikpLGdldENvbHVtbjpkPT5pLl9nZXRBbGxGbGF0Q29sdW1uc0J5SWQoKVtkXX07T2JqZWN0LmFzc2lnbihpLHApO2ZvcihsZXQgZD0wO2Q8aS5fZmVhdHVyZXMubGVuZ3RoO2QrKyl7Y29uc3Qgcz1pLl9mZWF0dXJlc1tkXTtzPT1udWxsfHxzLmNyZWF0ZVRhYmxlPT1udWxsfHxzLmNyZWF0ZVRhYmxlKGkpfXJldHVybiBpfWZ1bmN0aW9uIHduKCl7cmV0dXJuIGU9PkMoKCk9PltlLm9wdGlvbnMuZGF0YV0sbz0+e2NvbnN0IHQ9e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LG49ZnVuY3Rpb24oaSxyLGwpe3I9PT12b2lkIDAmJihyPTApO2NvbnN0IHU9W107Zm9yKGxldCBnPTA7ZzxpLmxlbmd0aDtnKyspe2NvbnN0IGM9RWUoZSxlLl9nZXRSb3dJZChpW2ddLGcsbCksaVtnXSxnLHIsdm9pZCAwLGw/LmlkKTtpZih0LmZsYXRSb3dzLnB1c2goYyksdC5yb3dzQnlJZFtjLmlkXT1jLHUucHVzaChjKSxlLm9wdGlvbnMuZ2V0U3ViUm93cyl7dmFyIGE7Yy5vcmlnaW5hbFN1YlJvd3M9ZS5vcHRpb25zLmdldFN1YlJvd3MoaVtnXSxnKSwoYT1jLm9yaWdpbmFsU3ViUm93cykhPW51bGwmJmEubGVuZ3RoJiYoYy5zdWJSb3dzPW4oYy5vcmlnaW5hbFN1YlJvd3MscisxLGMpKX19cmV0dXJuIHV9O3JldHVybiB0LnJvd3M9bihvKSx0fSx3KGUub3B0aW9ucywiZGVidWdUYWJsZSIsImdldFJvd01vZGVsIiwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiBSbigpe3JldHVybiBlPT5DKCgpPT5bZS5nZXRTdGF0ZSgpLmV4cGFuZGVkLGUuZ2V0UHJlRXhwYW5kZWRSb3dNb2RlbCgpLGUub3B0aW9ucy5wYWdpbmF0ZUV4cGFuZGVkUm93c10sKG8sdCxuKT0+IXQucm93cy5sZW5ndGh8fG8hPT0hMCYmIU9iamVjdC5rZXlzKG8/P3t9KS5sZW5ndGh8fCFuP3Q6aG4odCksdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiKSl9ZnVuY3Rpb24gaG4oZSl7Y29uc3Qgbz1bXSx0PW49Pnt2YXIgaTtvLnB1c2gobiksKGk9bi5zdWJSb3dzKSE9bnVsbCYmaS5sZW5ndGgmJm4uZ2V0SXNFeHBhbmRlZCgpJiZuLnN1YlJvd3MuZm9yRWFjaCh0KX07cmV0dXJuIGUucm93cy5mb3JFYWNoKHQpLHtyb3dzOm8sZmxhdFJvd3M6ZS5mbGF0Um93cyxyb3dzQnlJZDplLnJvd3NCeUlkfX1mdW5jdGlvbiBGbihlLG8sdCl7cmV0dXJuIHQub3B0aW9ucy5maWx0ZXJGcm9tTGVhZlJvd3M/eW4oZSxvLHQpOl9uKGUsbyx0KX1mdW5jdGlvbiB5bihlLG8sdCl7dmFyIG47Y29uc3QgaT1bXSxyPXt9LGw9KG49dC5vcHRpb25zLm1heExlYWZSb3dGaWx0ZXJEZXB0aCkhPW51bGw/bjoxMDAsdT1mdW5jdGlvbihhLGcpe2c9PT12b2lkIDAmJihnPTApO2NvbnN0IGM9W107Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBwO2xldCBzPWFbZF07Y29uc3QgZj1FZSh0LHMuaWQscy5vcmlnaW5hbCxzLmluZGV4LHMuZGVwdGgsdm9pZCAwLHMucGFyZW50SWQpO2lmKGYuY29sdW1uRmlsdGVycz1zLmNvbHVtbkZpbHRlcnMsKHA9cy5zdWJSb3dzKSE9bnVsbCYmcC5sZW5ndGgmJmc8bCl7aWYoZi5zdWJSb3dzPXUocy5zdWJSb3dzLGcrMSkscz1mLG8ocykmJiFmLnN1YlJvd3MubGVuZ3RoKXtjLnB1c2gocykscltzLmlkXT1zLGkucHVzaChzKTtjb250aW51ZX1pZihvKHMpfHxmLnN1YlJvd3MubGVuZ3RoKXtjLnB1c2gocykscltzLmlkXT1zLGkucHVzaChzKTtjb250aW51ZX19ZWxzZSBzPWYsbyhzKSYmKGMucHVzaChzKSxyW3MuaWRdPXMsaS5wdXNoKHMpKX1yZXR1cm4gY307cmV0dXJue3Jvd3M6dShlKSxmbGF0Um93czppLHJvd3NCeUlkOnJ9fWZ1bmN0aW9uIF9uKGUsbyx0KXt2YXIgbjtjb25zdCBpPVtdLHI9e30sbD0obj10Lm9wdGlvbnMubWF4TGVhZlJvd0ZpbHRlckRlcHRoKSE9bnVsbD9uOjEwMCx1PWZ1bmN0aW9uKGEsZyl7Zz09PXZvaWQgMCYmKGc9MCk7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IHM9YVtkXTtpZihvKHMpKXt2YXIgcDtpZigocD1zLnN1YlJvd3MpIT1udWxsJiZwLmxlbmd0aCYmZzxsKXtjb25zdCBtPUVlKHQscy5pZCxzLm9yaWdpbmFsLHMuaW5kZXgscy5kZXB0aCx2b2lkIDAscy5wYXJlbnRJZCk7bS5zdWJSb3dzPXUocy5zdWJSb3dzLGcrMSkscz1tfWMucHVzaChzKSxpLnB1c2gocykscltzLmlkXT1zfX1yZXR1cm4gY307cmV0dXJue3Jvd3M6dShlKSxmbGF0Um93czppLHJvd3NCeUlkOnJ9fWZ1bmN0aW9uICRuKCl7cmV0dXJuIGU9PkMoKCk9PltlLmdldFByZUZpbHRlcmVkUm93TW9kZWwoKSxlLmdldFN0YXRlKCkuY29sdW1uRmlsdGVycyxlLmdldFN0YXRlKCkuZ2xvYmFsRmlsdGVyXSwobyx0LG4pPT57aWYoIW8ucm93cy5sZW5ndGh8fCEodCE9bnVsbCYmdC5sZW5ndGgpJiYhbil7Zm9yKGxldCBkPTA7ZDxvLmZsYXRSb3dzLmxlbmd0aDtkKyspby5mbGF0Um93c1tkXS5jb2x1bW5GaWx0ZXJzPXt9LG8uZmxhdFJvd3NbZF0uY29sdW1uRmlsdGVyc01ldGE9e307cmV0dXJuIG99Y29uc3QgaT1bXSxyPVtdOyh0Pz9bXSkuZm9yRWFjaChkPT57dmFyIHM7Y29uc3QgZj1lLmdldENvbHVtbihkLmlkKTtpZighZilyZXR1cm47Y29uc3QgbT1mLmdldEZpbHRlckZuKCk7bSYmaS5wdXNoKHtpZDpkLmlkLGZpbHRlckZuOm0scmVzb2x2ZWRWYWx1ZToocz1tLnJlc29sdmVGaWx0ZXJWYWx1ZT09bnVsbD92b2lkIDA6bS5yZXNvbHZlRmlsdGVyVmFsdWUoZC52YWx1ZSkpIT1udWxsP3M6ZC52YWx1ZX0pfSk7Y29uc3QgbD0odD8/W10pLm1hcChkPT5kLmlkKSx1PWUuZ2V0R2xvYmFsRmlsdGVyRm4oKSxhPWUuZ2V0QWxsTGVhZkNvbHVtbnMoKS5maWx0ZXIoZD0+ZC5nZXRDYW5HbG9iYWxGaWx0ZXIoKSk7biYmdSYmYS5sZW5ndGgmJihsLnB1c2goIl9fZ2xvYmFsX18iKSxhLmZvckVhY2goZD0+e3ZhciBzO3IucHVzaCh7aWQ6ZC5pZCxmaWx0ZXJGbjp1LHJlc29sdmVkVmFsdWU6KHM9dS5yZXNvbHZlRmlsdGVyVmFsdWU9PW51bGw/dm9pZCAwOnUucmVzb2x2ZUZpbHRlclZhbHVlKG4pKSE9bnVsbD9zOm59KX0pKTtsZXQgZyxjO2ZvcihsZXQgZD0wO2Q8by5mbGF0Um93cy5sZW5ndGg7ZCsrKXtjb25zdCBzPW8uZmxhdFJvd3NbZF07aWYocy5jb2x1bW5GaWx0ZXJzPXt9LGkubGVuZ3RoKWZvcihsZXQgZj0wO2Y8aS5sZW5ndGg7ZisrKXtnPWlbZl07Y29uc3QgbT1nLmlkO3MuY29sdW1uRmlsdGVyc1ttXT1nLmZpbHRlckZuKHMsbSxnLnJlc29sdmVkVmFsdWUsaD0+e3MuY29sdW1uRmlsdGVyc01ldGFbbV09aH0pfWlmKHIubGVuZ3RoKXtmb3IobGV0IGY9MDtmPHIubGVuZ3RoO2YrKyl7Yz1yW2ZdO2NvbnN0IG09Yy5pZDtpZihjLmZpbHRlckZuKHMsbSxjLnJlc29sdmVkVmFsdWUsaD0+e3MuY29sdW1uRmlsdGVyc01ldGFbbV09aH0pKXtzLmNvbHVtbkZpbHRlcnMuX19nbG9iYWxfXz0hMDticmVha319cy5jb2x1bW5GaWx0ZXJzLl9fZ2xvYmFsX18hPT0hMCYmKHMuY29sdW1uRmlsdGVycy5fX2dsb2JhbF9fPSExKX19Y29uc3QgcD1kPT57Zm9yKGxldCBzPTA7czxsLmxlbmd0aDtzKyspaWYoZC5jb2x1bW5GaWx0ZXJzW2xbc11dPT09ITEpcmV0dXJuITE7cmV0dXJuITB9O3JldHVybiBGbihvLnJvd3MscCxlKX0sdyhlLm9wdGlvbnMsImRlYnVnVGFibGUiLCJnZXRGaWx0ZXJlZFJvd01vZGVsIiwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiB4bigpe3JldHVybiBlPT5DKCgpPT5bZS5nZXRTdGF0ZSgpLnNvcnRpbmcsZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpXSwobyx0KT0+e2lmKCF0LnJvd3MubGVuZ3RofHwhKG8hPW51bGwmJm8ubGVuZ3RoKSlyZXR1cm4gdDtjb25zdCBuPWUuZ2V0U3RhdGUoKS5zb3J0aW5nLGk9W10scj1uLmZpbHRlcihhPT57dmFyIGc7cmV0dXJuKGc9ZS5nZXRDb2x1bW4oYS5pZCkpPT1udWxsP3ZvaWQgMDpnLmdldENhblNvcnQoKX0pLGw9e307ci5mb3JFYWNoKGE9Pntjb25zdCBnPWUuZ2V0Q29sdW1uKGEuaWQpO2cmJihsW2EuaWRdPXtzb3J0VW5kZWZpbmVkOmcuY29sdW1uRGVmLnNvcnRVbmRlZmluZWQsaW52ZXJ0U29ydGluZzpnLmNvbHVtbkRlZi5pbnZlcnRTb3J0aW5nLHNvcnRpbmdGbjpnLmdldFNvcnRpbmdGbigpfSl9KTtjb25zdCB1PWE9Pntjb25zdCBnPWEubWFwKGM9Pih7Li4uY30pKTtyZXR1cm4gZy5zb3J0KChjLHApPT57Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKz0xKXt2YXIgZDtjb25zdCBmPXJbc10sbT1sW2YuaWRdLGg9bS5zb3J0VW5kZWZpbmVkLFI9KGQ9Zj8uZGVzYykhPW51bGw/ZDohMTtsZXQgeD0wO2lmKGgpe2NvbnN0IFA9Yy5nZXRWYWx1ZShmLmlkKSx6PXAuZ2V0VmFsdWUoZi5pZCksTT1QPT09dm9pZCAwLFQ9ej09PXZvaWQgMDtpZihNfHxUKXtpZihoPT09ImZpcnN0IilyZXR1cm4gTT8tMToxO2lmKGg9PT0ibGFzdCIpcmV0dXJuIE0/MTotMTt4PU0mJlQ/MDpNP2g6LWh9fWlmKHg9PT0wJiYoeD1tLnNvcnRpbmdGbihjLHAsZi5pZCkpLHghPT0wKXJldHVybiBSJiYoeCo9LTEpLG0uaW52ZXJ0U29ydGluZyYmKHgqPS0xKSx4fXJldHVybiBjLmluZGV4LXAuaW5kZXh9KSxnLmZvckVhY2goYz0+e3ZhciBwO2kucHVzaChjKSwocD1jLnN1YlJvd3MpIT1udWxsJiZwLmxlbmd0aCYmKGMuc3ViUm93cz11KGMuc3ViUm93cykpfSksZ307cmV0dXJue3Jvd3M6dSh0LnJvd3MpLGZsYXRSb3dzOmkscm93c0J5SWQ6dC5yb3dzQnlJZH19LHcoZS5vcHRpb25zLCJkZWJ1Z1RhYmxlIiwiZ2V0U29ydGVkUm93TW9kZWwiLCgpPT5lLl9hdXRvUmVzZXRQYWdlSW5kZXgoKSkpfWZ1bmN0aW9uIHBlKCl7cmV0dXJuITB9Y29uc3QgUG49U3ltYm9sKCJtZXJnZS1wcm94eSIpLFZuPXtnZXQoZSxvLHQpe3JldHVybiBvPT09UG4/dDplLmdldChvKX0saGFzKGUsbyl7cmV0dXJuIGUuaGFzKG8pfSxzZXQ6cGUsZGVsZXRlUHJvcGVydHk6cGUsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbyl7cmV0dXJue2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBlLmdldChvKX0sc2V0OnBlLGRlbGV0ZVByb3BlcnR5OnBlfX0sb3duS2V5cyhlKXtyZXR1cm4gZS5rZXlzKCl9fTtmdW5jdGlvbiBWZShlKXtyZXR1cm4idmFsdWUiaW4gZT9lLnZhbHVlOmV9ZnVuY3Rpb24gdWUoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheShlKSx0PTA7dDxlO3QrKylvW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gbmV3IFByb3h5KHtnZXQobil7Zm9yKGxldCBpPW8ubGVuZ3RoLTE7aT49MDtpLS0pe2NvbnN0IHI9VmUob1tpXSlbbl07aWYociE9PXZvaWQgMClyZXR1cm4gcn19LGhhcyhuKXtmb3IobGV0IGk9by5sZW5ndGgtMTtpPj0wO2ktLSlpZihuIGluIFZlKG9baV0pKXJldHVybiEwO3JldHVybiExfSxrZXlzKCl7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MDtpPG8ubGVuZ3RoO2krKyluLnB1c2goLi4uT2JqZWN0LmtleXMoVmUob1tpXSkpKTtyZXR1cm5bLi4uQXJyYXkuZnJvbShuZXcgU2V0KG4pKV19fSxWbil9Y29uc3QgSWU9Q3Qoe3Byb3BzOlsicmVuZGVyIiwicHJvcHMiXSxzZXR1cDplPT4oKT0+dHlwZW9mIGUucmVuZGVyPT0iZnVuY3Rpb24ifHx0eXBlb2YgZS5yZW5kZXI9PSJvYmplY3QiP3d0KGUucmVuZGVyLGUucHJvcHMpOmUucmVuZGVyfSk7ZnVuY3Rpb24gZXQoZSl7cmV0dXJuIHVlKGUse2RhdGE6eShlLmRhdGEpfSl9ZnVuY3Rpb24gSW4oZSl7Y29uc3Qgbz1wdChlLmRhdGEpLHQ9dWUoe3N0YXRlOnt9LG9uU3RhdGVDaGFuZ2U6KCk9Pnt9LHJlbmRlckZhbGxiYWNrVmFsdWU6bnVsbCxtZXJnZU9wdGlvbnMocixsKXtyZXR1cm4gbz97Li4uciwuLi5sfTp1ZShyLGwpfX0sbz9ldChlKTplKSxuPUNuKHQpO2lmKG8pe2NvbnN0IHI9bXQoZS5kYXRhKTt0dChyLCgpPT57bi5zZXRTdGF0ZShsPT4oey4uLmwsZGF0YTpyLnZhbHVlfSkpfSx7aW1tZWRpYXRlOiEwfSl9Y29uc3QgaT1TdChuLmluaXRpYWxTdGF0ZSk7cmV0dXJuIHZ0KCgpPT57bi5zZXRPcHRpb25zKHI9Pnt2YXIgbDtjb25zdCB1PW5ldyBQcm94eSh7fSx7Z2V0OihhLGcpPT5pLnZhbHVlW2ddfSk7cmV0dXJuIHVlKHIsbz9ldChlKTplLHtzdGF0ZTp1ZSh1LChsPWUuc3RhdGUpIT1udWxsP2w6e30pLG9uU3RhdGVDaGFuZ2U6YT0+e2EgaW5zdGFuY2VvZiBGdW5jdGlvbj9pLnZhbHVlPWEoaS52YWx1ZSk6aS52YWx1ZT1hLGUub25TdGF0ZUNoYW5nZT09bnVsbHx8ZS5vblN0YXRlQ2hhbmdlKGEpfX0pfSl9KSxufWNvbnN0IE1uPXtzbG90czp7cm9vdDoicmVsYXRpdmUgb3ZlcmZsb3ctYXV0byIsYmFzZToibWluLXctZnVsbCBvdmVyZmxvdy1jbGlwIixjYXB0aW9uOiJzci1vbmx5Iix0aGVhZDoicmVsYXRpdmUiLHRib2R5OiJpc29sYXRlIFsmPnRyXTpkYXRhLVtzZWxlY3RhYmxlPXRydWVdOmhvdmVyOmJnLWVsZXZhdGVkLzUwIFsmPnRyXTpkYXRhLVtzZWxlY3RhYmxlPXRydWVdOmZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0Iix0Zm9vdDoicmVsYXRpdmUiLHRyOiJkYXRhLVtzZWxlY3RlZD10cnVlXTpiZy1lbGV2YXRlZC81MCIsdGg6InB4LTQgcHktMy41IHRleHQtc20gdGV4dC1oaWdobGlnaHRlZCB0ZXh0LWxlZnQgcnRsOnRleHQtcmlnaHQgZm9udC1zZW1pYm9sZCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cGUtMCIsdGQ6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQgd2hpdGVzcGFjZS1ub3dyYXAgWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnBlLTAiLHNlcGFyYXRvcjoiYWJzb2x1dGUgei0xIGxlZnQtMCB3LWZ1bGwgaC1weCBiZy0oLS11aS1ib3JkZXItYWNjZW50ZWQpIixlbXB0eToicHktNiB0ZXh0LWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQiLGxvYWRpbmc6InB5LTYgdGV4dC1jZW50ZXIifSx2YXJpYW50czp7cGlubmVkOnt0cnVlOnt0aDoic3RpY2t5IGJnLWRlZmF1bHQvNzUgei0xIix0ZDoic3RpY2t5IGJnLWRlZmF1bHQvNzUgei0xIn19LHN0aWNreTp7dHJ1ZTp7dGhlYWQ6InN0aWNreSB0b3AtMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSIsdGZvb3Q6InN0aWNreSBib3R0b20tMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSJ9LGhlYWRlcjp7dGhlYWQ6InN0aWNreSB0b3AtMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSJ9LGZvb3Rlcjp7dGZvb3Q6InN0aWNreSBib3R0b20tMCBpbnNldC14LTAgYmctZGVmYXVsdC83NSBiYWNrZHJvcC1ibHVyIHotMSJ9fSxsb2FkaW5nOnt0cnVlOnt0aGVhZDoiYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6ei0xIGFmdGVyOmgtcHgifX0sbG9hZGluZ0FuaW1hdGlvbjp7Y2Fyb3VzZWw6IiIsImNhcm91c2VsLWludmVyc2UiOiIiLHN3aW5nOiIiLGVsYXN0aWM6IiJ9LGxvYWRpbmdDb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn19LGNvbXBvdW5kVmFyaWFudHM6W3tsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoicHJpbWFyeSIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1wcmltYXJ5In19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoic2Vjb25kYXJ5IixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLXNlY29uZGFyeSJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6InN1Y2Nlc3MiLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6Ymctc3VjY2VzcyJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6ImluZm8iLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6YmctaW5mbyJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6Indhcm5pbmciLGNsYXNzOnt0aGVhZDoiYWZ0ZXI6Ymctd2FybmluZyJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQ29sb3I6ImVycm9yIixjbGFzczp7dGhlYWQ6ImFmdGVyOmJnLWVycm9yIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdDb2xvcjoibmV1dHJhbCIsY2xhc3M6e3RoZWFkOiJhZnRlcjpiZy1pbnZlcnRlZCJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQW5pbWF0aW9uOiJjYXJvdXNlbCIsY2xhc3M6e3RoZWFkOiJhZnRlcjphbmltYXRlLVtjYXJvdXNlbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0gcnRsOmFmdGVyOmFuaW1hdGUtW2Nhcm91c2VsLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se2xvYWRpbmc6ITAsbG9hZGluZ0FuaW1hdGlvbjoiY2Fyb3VzZWwtaW52ZXJzZSIsY2xhc3M6e3RoZWFkOiJhZnRlcjphbmltYXRlLVtjYXJvdXNlbC1pbnZlcnNlXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSBydGw6YWZ0ZXI6YW5pbWF0ZS1bY2Fyb3VzZWwtaW52ZXJzZS1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtsb2FkaW5nOiEwLGxvYWRpbmdBbmltYXRpb246InN3aW5nIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW3N3aW5nXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7bG9hZGluZzohMCxsb2FkaW5nQW5pbWF0aW9uOiJlbGFzdGljIixjbGFzczp7dGhlYWQ6ImFmdGVyOmFuaW1hdGUtW2VsYXN0aWNfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19XSxkZWZhdWx0VmFyaWFudHM6e2xvYWRpbmdDb2xvcjoicHJpbWFyeSIsbG9hZGluZ0FuaW1hdGlvbjoiY2Fyb3VzZWwifX0sRG49WyJkYXRhLXNlbGVjdGVkIiwiZGF0YS1zZWxlY3RhYmxlIiwiZGF0YS1leHBhbmRlZCIsImRhdGEtcGlubmVkIiwicm9sZSIsInRhYmluZGV4Iiwib25DbGljayIsIm9uUG9pbnRlcmVudGVyIiwib25Db250ZXh0bWVudSJdLEFuPVsiZGF0YS1waW5uZWQiLCJjb2xzcGFuIiwicm93c3BhbiJdLHpuPVsiY29sc3BhbiJdLE9uPVsiZGF0YS1waW5uZWQiLCJzY29wZSIsImNvbHNwYW4iLCJyb3dzcGFuIl0sRW49WyJjb2xzcGFuIl0sR249WyJjb2xzcGFuIl0sSG49e2tleToxfSxMbj1bImNvbHNwYW4iXSxxbj17a2V5OjJ9LGtuPVsiY29sc3BhbiJdLEJuPVsiZGF0YS1waW5uZWQiLCJjb2xzcGFuIiwicm93c3BhbiJdLGJuPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVRhYmxlIixwcm9wczpWdCh7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGF0YTp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY29sdW1uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY2FwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG1ldGE6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSx2aXJ0dWFsaXplOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZW1wdHk6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZ0FuaW1hdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx3YXRjaE9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExLGRlZmF1bHQ6KCk9Pih7ZGVlcDohMH0pfSxnbG9iYWxGaWx0ZXJPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29sdW1uRmlsdGVyc09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb2x1bW5QaW5uaW5nT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbHVtblNpemluZ09wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSx2aXNpYmlsaXR5T3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHNvcnRpbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZ3JvdXBpbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZXhwYW5kZWRPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scm93U2VsZWN0aW9uT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LHJvd1Bpbm5pbmdPcHRpb25zOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scGFnaW5hdGlvbk9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxmYWNldGVkT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9uU2VsZWN0Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkhvdmVyOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkNvbnRleHRtZW51Ont0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sc3RhdGU6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvblN0YXRlQ2hhbmdlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxyZW5kZXJGYWxsYmFja1ZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LF9mZWF0dXJlczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sYXV0b1Jlc2V0QWxsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnQWxsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnQ2VsbHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdDb2x1bW5zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlYnVnSGVhZGVyczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWJ1Z1Jvd3M6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVidWdUYWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0Q29sdW1uOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZ2V0Um93SWQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LGdldFN1YlJvd3M6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LGluaXRpYWxTdGF0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG1lcmdlT3B0aW9uczp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX19LHtnbG9iYWxGaWx0ZXI6e3R5cGU6U3RyaW5nfSxnbG9iYWxGaWx0ZXJNb2RpZmllcnM6e30sY29sdW1uRmlsdGVyczp7dHlwZTpBcnJheX0sY29sdW1uRmlsdGVyc01vZGlmaWVyczp7fSxjb2x1bW5PcmRlcjp7dHlwZTpBcnJheX0sY29sdW1uT3JkZXJNb2RpZmllcnM6e30sY29sdW1uVmlzaWJpbGl0eTp7dHlwZTpPYmplY3R9LGNvbHVtblZpc2liaWxpdHlNb2RpZmllcnM6e30sY29sdW1uUGlubmluZzp7dHlwZTpPYmplY3R9LGNvbHVtblBpbm5pbmdNb2RpZmllcnM6e30sY29sdW1uU2l6aW5nOnt0eXBlOk9iamVjdH0sY29sdW1uU2l6aW5nTW9kaWZpZXJzOnt9LGNvbHVtblNpemluZ0luZm86e3R5cGU6T2JqZWN0fSxjb2x1bW5TaXppbmdJbmZvTW9kaWZpZXJzOnt9LHJvd1NlbGVjdGlvbjp7dHlwZTpPYmplY3R9LHJvd1NlbGVjdGlvbk1vZGlmaWVyczp7fSxyb3dQaW5uaW5nOnt0eXBlOk9iamVjdH0scm93UGlubmluZ01vZGlmaWVyczp7fSxzb3J0aW5nOnt0eXBlOkFycmF5fSxzb3J0aW5nTW9kaWZpZXJzOnt9LGdyb3VwaW5nOnt0eXBlOkFycmF5fSxncm91cGluZ01vZGlmaWVyczp7fSxleHBhbmRlZDp7dHlwZTpbQm9vbGVhbixPYmplY3RdfSxleHBhbmRlZE1vZGlmaWVyczp7fSxwYWdpbmF0aW9uOnt0eXBlOk9iamVjdH0scGFnaW5hdGlvbk1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOmdsb2JhbEZpbHRlciIsInVwZGF0ZTpjb2x1bW5GaWx0ZXJzIiwidXBkYXRlOmNvbHVtbk9yZGVyIiwidXBkYXRlOmNvbHVtblZpc2liaWxpdHkiLCJ1cGRhdGU6Y29sdW1uUGlubmluZyIsInVwZGF0ZTpjb2x1bW5TaXppbmciLCJ1cGRhdGU6Y29sdW1uU2l6aW5nSW5mbyIsInVwZGF0ZTpyb3dTZWxlY3Rpb24iLCJ1cGRhdGU6cm93UGlubmluZyIsInVwZGF0ZTpzb3J0aW5nIiwidXBkYXRlOmdyb3VwaW5nIiwidXBkYXRlOmV4cGFuZGVkIiwidXBkYXRlOnBhZ2luYXRpb24iXSxzZXR1cChlLHtleHBvc2U6b30pe2NvbnN0IHQ9ZSxuPVJ0KCkse3Q6aX09aHQoKSxyPUZ0KCksbD15dCgidGFibGUiLHQpLHU9X3QodC5kYXRhPz9bXSx0LndhdGNoT3B0aW9ucz8uZGVlcCE9PSExKSxhPWsoKCk9PnQubWV0YT8/e30pLGc9aygoKT0+Yyh0LmNvbHVtbnM/P09iamVjdC5rZXlzKHUudmFsdWVbMF0/P3t9KS5tYXAoUz0+KHthY2Nlc3NvcktleTpTLGhlYWRlcjpBdChTKX0pKSkpO2Z1bmN0aW9uIGMoUyl7cmV0dXJuIFMubWFwKFY9Pntjb25zdCB2PXsuLi5WfTtyZXR1cm4iY29sdW1ucyJpbiB2JiZ2LmNvbHVtbnMmJih2LmNvbHVtbnM9Yyh2LmNvbHVtbnMpKSx2LmNlbGx8fCh2LmNlbGw9KHtnZXRWYWx1ZTpGfSk9Pntjb25zdCAkPUYoKTtyZXR1cm4gJD09PSIifHwkPT09bnVsbHx8JD09PXZvaWQgMD8iwqAiOlN0cmluZygkKX0pLHZ9KX1jb25zdCBwPWsoKCk9PlllKHtleHRlbmQ6WWUoTW4pLC4uLnIudWk/LnRhYmxlfHx7fX0pKHtzdGlja3k6dC5zdGlja3ksbG9hZGluZzp0LmxvYWRpbmcsbG9hZGluZ0NvbG9yOnQubG9hZGluZ0NvbG9yLGxvYWRpbmdBbmltYXRpb246dC5sb2FkaW5nQW5pbWF0aW9ufSkpLFtkLHNdPVhlKCksW2YsbV09WGUoe3Byb3BzOntyb3c6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSxzdHlsZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fX0pLGg9aygoKT0+e2Z1bmN0aW9uIFMoVil7Zm9yKGNvbnN0IHYgb2YgVilpZigiZm9vdGVyImluIHZ8fCJjb2x1bW5zImluIHYmJlModi5jb2x1bW5zKSlyZXR1cm4hMDtyZXR1cm4hMX1yZXR1cm4gUyhnLnZhbHVlKX0pLFI9RyhlLCJnbG9iYWxGaWx0ZXIiKSx4PUcoZSwiY29sdW1uRmlsdGVycyIpLFA9RyhlLCJjb2x1bW5PcmRlciIpLHo9RyhlLCJjb2x1bW5WaXNpYmlsaXR5IiksTT1HKGUsImNvbHVtblBpbm5pbmciKSxUPUcoZSwiY29sdW1uU2l6aW5nIiksWT1HKGUsImNvbHVtblNpemluZ0luZm8iKSxRPUcoZSwicm93U2VsZWN0aW9uIiksdGU9RyhlLCJyb3dQaW5uaW5nIiksbmU9RyhlLCJzb3J0aW5nIiksWj1HKGUsImdyb3VwaW5nIiksU2U9RyhlLCJleHBhbmRlZCIpLHZlPUcoZSwicGFnaW5hdGlvbiIpLENlPUtlKCJyb290UmVmIikscWU9S2UoInRhYmxlUmVmIiksZHQ9JHQoeHQodCwiX2ZlYXR1cmVzIiwiYXV0b1Jlc2V0QWxsIiwiZGVidWdBbGwiLCJkZWJ1Z0NlbGxzIiwiZGVidWdDb2x1bW5zIiwiZGVidWdIZWFkZXJzIiwiZGVidWdSb3dzIiwiZGVidWdUYWJsZSIsImRlZmF1bHRDb2x1bW4iLCJnZXRSb3dJZCIsImdldFN1YlJvd3MiLCJpbml0aWFsU3RhdGUiLCJtZXJnZU9wdGlvbnMiLCJyZW5kZXJGYWxsYmFja1ZhbHVlIikpLE89SW4oey4uLmR0LnZhbHVlLGdldCBkYXRhKCl7cmV0dXJuIHUudmFsdWV9LGdldCBjb2x1bW5zKCl7cmV0dXJuIGcudmFsdWV9LG1ldGE6YS52YWx1ZSxnZXRDb3JlUm93TW9kZWw6d24oKSwuLi50Lmdsb2JhbEZpbHRlck9wdGlvbnN8fHt9LC4uLlIudmFsdWUhPT12b2lkIDAmJntvbkdsb2JhbEZpbHRlckNoYW5nZTpTPT5FKFMsUil9LC4uLnQuY29sdW1uRmlsdGVyc09wdGlvbnN8fHt9LGdldEZpbHRlcmVkUm93TW9kZWw6JG4oKSwuLi54LnZhbHVlIT09dm9pZCAwJiZ7b25Db2x1bW5GaWx0ZXJzQ2hhbmdlOlM9PkUoUyx4KX0sLi4uUC52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uT3JkZXJDaGFuZ2U6Uz0+RShTLFApfSwuLi50LnZpc2liaWxpdHlPcHRpb25zfHx7fSwuLi56LnZhbHVlIT09dm9pZCAwJiZ7b25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlOlM9PkUoUyx6KX0sLi4udC5jb2x1bW5QaW5uaW5nT3B0aW9uc3x8e30sLi4uTS52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uUGlubmluZ0NoYW5nZTpTPT5FKFMsTSl9LC4uLnQuY29sdW1uU2l6aW5nT3B0aW9uc3x8e30sLi4uVC52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uU2l6aW5nQ2hhbmdlOlM9PkUoUyxUKX0sLi4uWS52YWx1ZSE9PXZvaWQgMCYme29uQ29sdW1uU2l6aW5nSW5mb0NoYW5nZTpTPT5FKFMsWSl9LC4uLnQucm93U2VsZWN0aW9uT3B0aW9uc3x8e30sLi4uUS52YWx1ZSE9PXZvaWQgMCYme29uUm93U2VsZWN0aW9uQ2hhbmdlOlM9PkUoUyxRKX0sLi4udC5yb3dQaW5uaW5nT3B0aW9uc3x8e30sLi4udGUudmFsdWUhPT12b2lkIDAmJntvblJvd1Bpbm5pbmdDaGFuZ2U6Uz0+RShTLHRlKX0sLi4udC5zb3J0aW5nT3B0aW9uc3x8e30sZ2V0U29ydGVkUm93TW9kZWw6eG4oKSwuLi5uZS52YWx1ZSE9PXZvaWQgMCYme29uU29ydGluZ0NoYW5nZTpTPT5FKFMsbmUpfSwuLi50Lmdyb3VwaW5nT3B0aW9uc3x8e30sLi4uWi52YWx1ZSE9PXZvaWQgMCYme29uR3JvdXBpbmdDaGFuZ2U6Uz0+RShTLFopfSwuLi50LmV4cGFuZGVkT3B0aW9uc3x8e30sZ2V0RXhwYW5kZWRSb3dNb2RlbDpSbigpLC4uLlNlLnZhbHVlIT09dm9pZCAwJiZ7b25FeHBhbmRlZENoYW5nZTpTPT5FKFMsU2UpfSwuLi50LnBhZ2luYXRpb25PcHRpb25zfHx7fSwuLi52ZS52YWx1ZSE9PXZvaWQgMCYme29uUGFnaW5hdGlvbkNoYW5nZTpTPT5FKFMsdmUpfSwuLi50LmZhY2V0ZWRPcHRpb25zfHx7fSxzdGF0ZTp7Z2V0IGdsb2JhbEZpbHRlcigpe3JldHVybiBSLnZhbHVlfSxnZXQgY29sdW1uRmlsdGVycygpe3JldHVybiB4LnZhbHVlfSxnZXQgY29sdW1uT3JkZXIoKXtyZXR1cm4gUC52YWx1ZX0sZ2V0IGNvbHVtblZpc2liaWxpdHkoKXtyZXR1cm4gei52YWx1ZX0sZ2V0IGNvbHVtblBpbm5pbmcoKXtyZXR1cm4gTS52YWx1ZX0sZ2V0IGV4cGFuZGVkKCl7cmV0dXJuIFNlLnZhbHVlfSxnZXQgcm93U2VsZWN0aW9uKCl7cmV0dXJuIFEudmFsdWV9LGdldCBzb3J0aW5nKCl7cmV0dXJuIG5lLnZhbHVlfSxnZXQgZ3JvdXBpbmcoKXtyZXR1cm4gWi52YWx1ZX0sZ2V0IHJvd1Bpbm5pbmcoKXtyZXR1cm4gdGUudmFsdWV9LGdldCBjb2x1bW5TaXppbmcoKXtyZXR1cm4gVC52YWx1ZX0sZ2V0IGNvbHVtblNpemluZ0luZm8oKXtyZXR1cm4gWS52YWx1ZX0sZ2V0IHBhZ2luYXRpb24oKXtyZXR1cm4gdmUudmFsdWV9fX0pLGtlPWsoKCk9Pk8uZ2V0Um93TW9kZWwoKS5yb3dzKSxCZT1rKCgpPT50LnZpcnR1YWxpemU/W106Ty5nZXRUb3BSb3dzKCkpLFRlPWsoKCk9PnQudmlydHVhbGl6ZT9bXTpPLmdldEJvdHRvbVJvd3MoKSksb2U9aygoKT0+QmUudmFsdWUubGVuZ3RofHxUZS52YWx1ZS5sZW5ndGg/Ty5nZXRDZW50ZXJSb3dzKCk6a2UudmFsdWUpLGplPUl0KCgpPT5NdCh0eXBlb2YgdC52aXJ0dWFsaXplPT0iYm9vbGVhbiI/e306dC52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6NjUsb3ZlcnNjYW46MTJ9KSksaWU9ISF0LnZpcnR1YWxpemUmJkR0KHsuLi5qZS52YWx1ZSxnZXQgY291bnQoKXtyZXR1cm4gb2UudmFsdWUubGVuZ3RofSxnZXRTY3JvbGxFbGVtZW50OigpPT5DZS52YWx1ZT8uJGVsLGVzdGltYXRlU2l6ZTpTPT57Y29uc3QgVj1qZS52YWx1ZS5lc3RpbWF0ZVNpemU7cmV0dXJuIHR5cGVvZiBWPT0iZnVuY3Rpb24iP1YoUyk6Vn19KSxyZT1rKCgpPT5pZT9pZS52YWx1ZS5nZXRWaXJ0dWFsSXRlbXMoKTpbXSksYmU9aygoKT0+cmUudmFsdWVbMF0/LnN0YXJ0Pz8wKSxOZT1rKCgpPT4haWV8fCFyZS52YWx1ZS5sZW5ndGg/MDppZS52YWx1ZS5nZXRUb3RhbFNpemUoKS0ocmUudmFsdWVbcmUudmFsdWUubGVuZ3RoLTFdPy5lbmQ/PzApKTtmdW5jdGlvbiBFKFMsVil7Vi52YWx1ZT10eXBlb2YgUz09ImZ1bmN0aW9uIj9TKFYudmFsdWUpOlN9ZnVuY3Rpb24gY3QoUyxWKXtpZighdC5vblNlbGVjdClyZXR1cm47Y29uc3Qgdj1TLnRhcmdldDt2LmNsb3Nlc3QoImJ1dHRvbiIpfHx2LmNsb3Nlc3QoImEiKXx8KFMucHJldmVudERlZmF1bHQoKSxTLnN0b3BQcm9wYWdhdGlvbigpLHQub25TZWxlY3QoUyxWKSl9ZnVuY3Rpb24gVWUoUyxWKXt0Lm9uSG92ZXImJnQub25Ib3ZlcihTLFYpfWZ1bmN0aW9uIGZ0KFMsVil7dC5vbkNvbnRleHRtZW51JiYoQXJyYXkuaXNBcnJheSh0Lm9uQ29udGV4dG1lbnUpP3Qub25Db250ZXh0bWVudS5mb3JFYWNoKHY9PnYoUyxWKSk6dC5vbkNvbnRleHRtZW51KFMsVikpfWZ1bmN0aW9uIGooUyxWKXtyZXR1cm4gdHlwZW9mIFM9PSJmdW5jdGlvbiI/UyhWKTpTfWZ1bmN0aW9uIHdlKFMpe2NvbnN0IFY9e30sdj1TLmdldElzUGlubmVkKCk7cmV0dXJuIHY9PT0ibGVmdCI/Vi5sZWZ0PWAke1MuZ2V0U3RhcnQoImxlZnQiKX1weGA6dj09PSJyaWdodCImJihWLnJpZ2h0PWAke1MuZ2V0QWZ0ZXIoInJpZ2h0Iil9cHhgKSxWfXJldHVybiB0dCgoKT0+dC5kYXRhLCgpPT57dS52YWx1ZT10LmRhdGE/Wy4uLnQuZGF0YV06W119LHQud2F0Y2hPcHRpb25zKSxvKHtnZXQgJGVsKCl7cmV0dXJuIENlLnZhbHVlPy4kZWx9LHRhYmxlUmVmOnFlLHRhYmxlQXBpOk99KSwoUyxWKT0+KF8oKSxJKEgsbnVsbCxbbGUoeShmKSxudWxsLHtkZWZhdWx0OlJlKCh7cm93OnYsc3R5bGU6Rn0pPT5bcSgidHIiLHsiZGF0YS1zZWxlY3RlZCI6di5nZXRJc1NlbGVjdGVkKCksImRhdGEtc2VsZWN0YWJsZSI6ISF0Lm9uU2VsZWN0fHwhIXQub25Ib3Zlcnx8ISF0Lm9uQ29udGV4dG1lbnUsImRhdGEtZXhwYW5kZWQiOnYuZ2V0SXNFeHBhbmRlZCgpLCJkYXRhLXBpbm5lZCI6di5nZXRJc1Bpbm5lZCgpfHx2b2lkIDAscm9sZTp0Lm9uU2VsZWN0PyJidXR0b24iOnZvaWQgMCx0YWJpbmRleDp0Lm9uU2VsZWN0PzA6dm9pZCAwLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6RChwLnZhbHVlLnRyKHtjbGFzczpbeShsKT8udHIsaih5KE8pLm9wdGlvbnMubWV0YT8uY2xhc3M/LnRyLHYpXX0pKSxzdHlsZTpKKFtqKHkoTykub3B0aW9ucy5tZXRhPy5zdHlsZT8udHIsdiksRl0pLG9uQ2xpY2s6JD0+Y3QoJCx2KSxvblBvaW50ZXJlbnRlcjokPT5VZSgkLHYpLG9uUG9pbnRlcmxlYXZlOlZbMF18fChWWzBdPSQ9PlVlKCQsbnVsbCkpLG9uQ29udGV4dG1lbnU6JD0+ZnQoJCx2KX0sWyhfKCEwKSxJKEgsbnVsbCxiKHYuZ2V0VmlzaWJsZUNlbGxzKCksJD0+KF8oKSxJKCJ0ZCIse2tleTokLmlkLCJkYXRhLXBpbm5lZCI6JC5jb2x1bW4uZ2V0SXNQaW5uZWQoKSxjb2xzcGFuOmooJC5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNvbHNwYW4/LnRkLCQpLHJvd3NwYW46aigkLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8ucm93c3Bhbj8udGQsJCksImRhdGEtc2xvdCI6InRkIixjbGFzczpEKHAudmFsdWUudGQoe2NsYXNzOlt5KGwpPy50ZCxqKCQuY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5jbGFzcz8udGQsJCldLHBpbm5lZDohISQuY29sdW1uLmdldElzUGlubmVkKCl9KSksc3R5bGU6Sihbd2UoJC5jb2x1bW4pLGooJC5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LnN0eWxlPy50ZCwkKV0pfSxbTihTLiRzbG90cyxgJHskLmNvbHVtbi5pZH0tY2VsbGAsZ2Uoe3JlZl9mb3I6ITB9LCQuZ2V0Q29udGV4dCgpKSwoKT0+W2xlKHkoSWUpLHtyZW5kZXI6JC5jb2x1bW4uY29sdW1uRGVmLmNlbGwscHJvcHM6JC5nZXRDb250ZXh0KCl9LG51bGwsOCxbInJlbmRlciIsInByb3BzIl0pXSldLDE0LEFuKSkpLDEyOCkpXSw0NixEbiksdi5nZXRJc0V4cGFuZGVkKCk/KF8oKSxJKCJ0ciIse2tleTowLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6RChwLnZhbHVlLnRyKHtjbGFzczpbeShsKT8udHJdfSkpfSxbcSgidGQiLHtjb2xzcGFuOnYuZ2V0QWxsQ2VsbHMoKS5sZW5ndGgsImRhdGEtc2xvdCI6InRkIixjbGFzczpEKHAudmFsdWUudGQoe2NsYXNzOlt5KGwpPy50ZF19KSl9LFtOKFMuJHNsb3RzLCJleHBhbmRlZCIse3Jvdzp2fSldLDEwLHpuKV0sMikpOlgoIiIsITApXSksXzozfSksbGUoeShkKSxudWxsLHtkZWZhdWx0OlJlKCgpPT5bcSgidGFibGUiLHtyZWZfa2V5OiJ0YWJsZVJlZiIscmVmOnFlLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpEKHAudmFsdWUuYmFzZSh7Y2xhc3M6W3kobCk/LmJhc2VdfSkpfSxbZS5jYXB0aW9ufHxuLmNhcHRpb24/KF8oKSxJKCJjYXB0aW9uIix7a2V5OjAsImRhdGEtc2xvdCI6ImNhcHRpb24iLGNsYXNzOkQocC52YWx1ZS5jYXB0aW9uKHtjbGFzczpbeShsKT8uY2FwdGlvbl19KSl9LFtOKFMuJHNsb3RzLCJjYXB0aW9uIix7fSwoKT0+W1dlKEplKGUuY2FwdGlvbiksMSldKV0sMikpOlgoIiIsITApLHEoInRoZWFkIix7ImRhdGEtc2xvdCI6InRoZWFkIixjbGFzczpEKHAudmFsdWUudGhlYWQoe2NsYXNzOlt5KGwpPy50aGVhZF19KSl9LFsoXyghMCksSShILG51bGwsYih5KE8pLmdldEhlYWRlckdyb3VwcygpLHY9PihfKCksSSgidHIiLHtrZXk6di5pZCwiZGF0YS1zbG90IjoidHIiLGNsYXNzOkQocC52YWx1ZS50cih7Y2xhc3M6W3kobCk/LnRyXX0pKX0sWyhfKCEwKSxJKEgsbnVsbCxiKHYuaGVhZGVycyxGPT4oXygpLEkoInRoIix7a2V5OkYuaWQsImRhdGEtcGlubmVkIjpGLmNvbHVtbi5nZXRJc1Bpbm5lZCgpLHNjb3BlOkYuY29sU3Bhbj4xPyJjb2xncm91cCI6ImNvbCIsY29sc3BhbjpGLmNvbFNwYW4+MT9GLmNvbFNwYW46dm9pZCAwLHJvd3NwYW46Ri5yb3dTcGFuPjE/Ri5yb3dTcGFuOnZvaWQgMCwiZGF0YS1zbG90IjoidGgiLGNsYXNzOkQocC52YWx1ZS50aCh7Y2xhc3M6W3kobCk/LnRoLGooRi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxGKV0scGlubmVkOiEhRi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKSxzdHlsZTpKKFt3ZShGLmNvbHVtbiksaihGLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uc3R5bGU/LnRoLEYpXSl9LFtOKFMuJHNsb3RzLGAke0YuaWR9LWhlYWRlcmAsZ2Uoe3JlZl9mb3I6ITB9LEYuZ2V0Q29udGV4dCgpKSwoKT0+W0YuaXNQbGFjZWhvbGRlcj9YKCIiLCEwKTooXygpLGVlKHkoSWUpLHtrZXk6MCxyZW5kZXI6Ri5jb2x1bW4uY29sdW1uRGVmLmhlYWRlcixwcm9wczpGLmdldENvbnRleHQoKX0sbnVsbCw4LFsicmVuZGVyIiwicHJvcHMiXSkpXSldLDE0LE9uKSkpLDEyOCkpXSwyKSkpLDEyOCkpLHEoInRyIix7ImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6RChwLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W3kobCk/LnNlcGFyYXRvcl19KSl9LG51bGwsMildLDIpLHEoInRib2R5Iix7ImRhdGEtc2xvdCI6InRib2R5IixjbGFzczpEKHAudmFsdWUudGJvZHkoe2NsYXNzOlt5KGwpPy50Ym9keV19KSl9LFtOKFMuJHNsb3RzLCJib2R5LXRvcCIpLGtlLnZhbHVlLmxlbmd0aD8oXygpLEkoSCx7a2V5OjB9LFsoXyghMCksSShILG51bGwsYihCZS52YWx1ZSx2PT4oXygpLGVlKHkobSkse2tleTp2LmlkLHJvdzp2fSxudWxsLDgsWyJyb3ciXSkpKSwxMjgpKSx5KGllKT8oXygpLEkoSCx7a2V5OjB9LFtiZS52YWx1ZT4wPyhfKCksSSgidHIiLHtrZXk6MCxzdHlsZTpKKHtoZWlnaHQ6YCR7YmUudmFsdWV9cHhgfSksImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LFtxKCJ0ZCIse2NvbHNwYW46eShPKS5nZXRBbGxMZWFmQ29sdW1ucygpLmxlbmd0aH0sbnVsbCw4LEVuKV0sNCkpOlgoIiIsITApLChfKCEwKSxJKEgsbnVsbCxiKHJlLnZhbHVlLHY9PihfKCksSShILHtrZXk6b2UudmFsdWVbdi5pbmRleF0/LmlkPz9gdmlydHVhbC0ke3YuaW5kZXh9YH0sW29lLnZhbHVlW3YuaW5kZXhdPyhfKCksZWUoeShtKSx7a2V5OjAscm93Om9lLnZhbHVlW3YuaW5kZXhdLHN0eWxlOkooe2hlaWdodDpgJHt2LnNpemV9cHhgfSl9LG51bGwsOCxbInJvdyIsInN0eWxlIl0pKTpYKCIiLCEwKV0sNjQpKSksMTI4KSksTmUudmFsdWU+MD8oXygpLEkoInRyIix7a2V5OjEsc3R5bGU6Sih7aGVpZ2h0OmAke05lLnZhbHVlfXB4YH0pLCJhcmlhLWhpZGRlbiI6InRydWUifSxbcSgidGQiLHtjb2xzcGFuOnkoTykuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGh9LG51bGwsOCxHbildLDQpKTpYKCIiLCEwKV0sNjQpKTooXyghMCksSShILHtrZXk6MX0sYihvZS52YWx1ZSx2PT4oXygpLGVlKHkobSkse2tleTp2LmlkLHJvdzp2fSxudWxsLDgsWyJyb3ciXSkpKSwxMjgpKSwoXyghMCksSShILG51bGwsYihUZS52YWx1ZSx2PT4oXygpLGVlKHkobSkse2tleTp2LmlkLHJvdzp2fSxudWxsLDgsWyJyb3ciXSkpKSwxMjgpKV0sNjQpKTplLmxvYWRpbmcmJm4ubG9hZGluZz8oXygpLEkoInRyIixIbixbcSgidGQiLHtjb2xzcGFuOnkoTykuZ2V0QWxsTGVhZkNvbHVtbnMoKS5sZW5ndGgsImRhdGEtc2xvdCI6ImxvYWRpbmciLGNsYXNzOkQocC52YWx1ZS5sb2FkaW5nKHtjbGFzczp5KGwpPy5sb2FkaW5nfSkpfSxbTihTLiRzbG90cywibG9hZGluZyIpXSwxMCxMbildKSk6KF8oKSxJKCJ0ciIscW4sW3EoInRkIix7Y29sc3Bhbjp5KE8pLmdldEFsbExlYWZDb2x1bW5zKCkubGVuZ3RoLCJkYXRhLXNsb3QiOiJlbXB0eSIsY2xhc3M6RChwLnZhbHVlLmVtcHR5KHtjbGFzczp5KGwpPy5lbXB0eX0pKX0sW04oUy4kc2xvdHMsImVtcHR5Iix7fSwoKT0+W1dlKEplKGUuZW1wdHl8fHkoaSkoInRhYmxlLm5vRGF0YSIpKSwxKV0pXSwxMCxrbildKSksTihTLiRzbG90cywiYm9keS1ib3R0b20iKV0sMiksaC52YWx1ZT8oXygpLEkoInRmb290Iix7a2V5OjEsImRhdGEtc2xvdCI6InRmb290IixjbGFzczpEKHAudmFsdWUudGZvb3Qoe2NsYXNzOlt5KGwpPy50Zm9vdF19KSl9LFtxKCJ0ciIseyJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOkQocC52YWx1ZS5zZXBhcmF0b3Ioe2NsYXNzOlt5KGwpPy5zZXBhcmF0b3JdfSkpfSxudWxsLDIpLChfKCEwKSxJKEgsbnVsbCxiKHkoTykuZ2V0Rm9vdGVyR3JvdXBzKCksdj0+KF8oKSxJKCJ0ciIse2tleTp2LmlkLCJkYXRhLXNsb3QiOiJ0ciIsY2xhc3M6RChwLnZhbHVlLnRyKHtjbGFzczpbeShsKT8udHJdfSkpfSxbKF8oITApLEkoSCxudWxsLGIodi5oZWFkZXJzLEY9PihfKCksSSgidGgiLHtrZXk6Ri5pZCwiZGF0YS1waW5uZWQiOkYuY29sdW1uLmdldElzUGlubmVkKCksY29sc3BhbjpGLmNvbFNwYW4+MT9GLmNvbFNwYW46dm9pZCAwLHJvd3NwYW46Ri5yb3dTcGFuPjE/Ri5yb3dTcGFuOnZvaWQgMCwiZGF0YS1zbG90IjoidGgiLGNsYXNzOkQocC52YWx1ZS50aCh7Y2xhc3M6W3kobCk/LnRoLGooRi5jb2x1bW4uY29sdW1uRGVmLm1ldGE/LmNsYXNzPy50aCxGKV0scGlubmVkOiEhRi5jb2x1bW4uZ2V0SXNQaW5uZWQoKX0pKSxzdHlsZTpKKFt3ZShGLmNvbHVtbiksaihGLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uc3R5bGU/LnRoLEYpXSl9LFtOKFMuJHNsb3RzLGAke0YuaWR9LWZvb3RlcmAsZ2Uoe3JlZl9mb3I6ITB9LEYuZ2V0Q29udGV4dCgpKSwoKT0+W0YuaXNQbGFjZWhvbGRlcj9YKCIiLCEwKTooXygpLGVlKHkoSWUpLHtrZXk6MCxyZW5kZXI6Ri5jb2x1bW4uY29sdW1uRGVmLmZvb3Rlcixwcm9wczpGLmdldENvbnRleHQoKX0sbnVsbCw4LFsicmVuZGVyIiwicHJvcHMiXSkpXSldLDE0LEJuKSkpLDEyOCkpXSwyKSkpLDEyOCkpXSwyKSk6WCgiIiwhMCldLDIpXSksXzozfSksbGUoeShQdCksZ2Uoe3JlZl9rZXk6InJvb3RSZWYiLHJlZjpDZSxhczplLmFzfSxTLiRhdHRycyx7ImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnAudmFsdWUucm9vdCh7Y2xhc3M6W3kobCk/LnJvb3QsdC5jbGFzc119KX0pLHtkZWZhdWx0OlJlKCgpPT5bbGUoeShzKSldKSxfOjF9LDE2LFsiYXMiLCJjbGFzcyJdKV0sNjQpKX19KTtleHBvcnR7Ym4gYXMgX307Cg==", "/_nuxt/CXoc4UER.js": "aW1wb3J0e2YgYXMgVCxhOCBhcyBQLG8gYXMgdSxoIGFzIHYsdyBhcyBpLEwgYXMgcSxhdiBhcyBMLGF3IGFzIEksaSBhcyB0LGJvIGFzIEcsY2YgYXMgTyxhOSBhcyBVLFIgYXMgSixjZyBhcyBaLGJkIGFzIFEsbCBhcyBiLHIgYXMgeCxhNyBhcyBYLGE0IGFzIEEsYlogYXMgJCxiIGFzIHcsYm4gYXMgWSxhYSBhcyBfLGJOIGFzIGVlLGQgYXMgdGUsdCBhcyBNLGFiIGFzIGFlLGJtIGFzIHJlLGFHIGFzIEUsYUQgYXMgb2UsYWkgYXMgaixhYyBhcyBzZSxhZyBhcyBsZSxicCBhcyBuZSxhMiBhcyBpZSxQIGFzIHVlLGJNIGFzIGRlLGJnIGFzIHBlLGFoIGFzIGZlLEogYXMgY2UsSyBhcyBnZSxhaiBhcyB2ZSxicSBhcyB5ZSxhRiBhcyBSLHYgYXMgTixidiBhcyBiZSxjIGFzIEYsTSBhcyBILEYgYXMgbWUscSBhcyBfZSxOIGFzIEt9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7ZSBhcyBxZSxfIGFzIENlfWZyb20iLi9DWWFtekxtNS5qcyI7dmFyIGhlPVQoe19fbmFtZToiVG9vbHRpcEFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1fSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHIpe2NvbnN0IGQ9cjtyZXR1cm4gUCgpLChlLHApPT4odSgpLHYodChHKSxMKEkoZCkpLHtkZWZhdWx0OmkoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksVGU9aGU7Y29uc3Qgej0idG9vbHRpcC5vcGVuIixbUyx3ZV09WCgiVG9vbHRpcFJvb3QiKTt2YXIgUGU9VCh7X19uYW1lOiJUb29sdGlwUm9vdCIscHJvcHM6e2RlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0OmR9KXtjb25zdCBlPXIscD1kO1AoKTtjb25zdCBhPU8oKSxnPWIoKCk9PmUuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ/P2EuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQudmFsdWUpLG49YigoKT0+ZS5kaXNhYmxlQ2xvc2luZ1RyaWdnZXI/P2EuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlKSxmPWIoKCk9PmUuZGlzYWJsZWQ/P2EuZGlzYWJsZWQudmFsdWUpLHk9YigoKT0+ZS5kZWxheUR1cmF0aW9uPz9hLmRlbGF5RHVyYXRpb24udmFsdWUpLG09YigoKT0+ZS5pZ25vcmVOb25LZXlib2FyZEZvY3VzPz9hLmlnbm9yZU5vbktleWJvYXJkRm9jdXMudmFsdWUpLG89VShlLCJvcGVuIixwLHtkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0T3BlbixwYXNzaXZlOmUub3Blbj09PXZvaWQgMH0pO0oobyxCPT57YS5vbkNsb3NlJiYoQj8oYS5vbk9wZW4oKSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCh6KSkpOmEub25DbG9zZSgpKX0pO2NvbnN0IHM9eCghMSksbD14KCksQz1iKCgpPT5vLnZhbHVlP3MudmFsdWU/ImRlbGF5ZWQtb3BlbiI6Imluc3RhbnQtb3BlbiI6ImNsb3NlZCIpLHtzdGFydDpELHN0b3A6aH09WigoKT0+e3MudmFsdWU9ITAsby52YWx1ZT0hMH0seSx7aW1tZWRpYXRlOiExfSk7ZnVuY3Rpb24gYygpe2goKSxzLnZhbHVlPSExLG8udmFsdWU9ITB9ZnVuY3Rpb24gaygpe2goKSxvLnZhbHVlPSExfWZ1bmN0aW9uIFcoKXtEKCl9cmV0dXJuIHdlKHtjb250ZW50SWQ6IiIsb3BlbjpvLHN0YXRlQXR0cmlidXRlOkMsdHJpZ2dlcjpsLG9uVHJpZ2dlckNoYW5nZShCKXtsLnZhbHVlPUJ9LG9uVHJpZ2dlckVudGVyKCl7YS5pc09wZW5EZWxheWVkLnZhbHVlP1coKTpjKCl9LG9uVHJpZ2dlckxlYXZlKCl7Zy52YWx1ZT9rKCk6aCgpfSxvbk9wZW46YyxvbkNsb3NlOmssZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6ZyxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6bixkaXNhYmxlZDpmLGlnbm9yZU5vbktleWJvYXJkRm9jdXM6bX0pLChCLEllKT0+KHUoKSx2KHQoUSksbnVsbCx7ZGVmYXVsdDppKCgpPT5bcShCLiRzbG90cywiZGVmYXVsdCIse29wZW46dChvKX0pXSksXzozfSkpfX0pLGtlPVBlLEJlPVQoe19fbmFtZToiVG9vbHRpcENvbnRlbnRJbXBsIixwcm9wczp7YXJpYUxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiXSxzZXR1cChyLHtlbWl0OmR9KXtjb25zdCBlPXIscD1kLGE9UygpLGc9TygpLHtmb3J3YXJkUmVmOm4sY3VycmVudEVsZW1lbnQ6Zn09UCgpLHk9YigoKT0+ZS5hcmlhTGFiZWx8fGYudmFsdWU/LnRleHRDb250ZW50KSxtPWIoKCk9Pntjb25zdHthcmlhTGFiZWw6bywuLi5zfT1lO3JldHVybiBFKHMsZy5jb250ZW50LnZhbHVlPz97fSx7c2lkZToidG9wIixzaWRlT2Zmc2V0OjAsYWxpZ246ImNlbnRlciIsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OltdLGNvbGxpc2lvblBhZGRpbmc6MCxhcnJvd1BhZGRpbmc6MCxzdGlja3k6InBhcnRpYWwiLGhpZGVXaGVuRGV0YWNoZWQ6ITF9KX0pO3JldHVybiBBKCgpPT57JCh3aW5kb3csInNjcm9sbCIsbz0+e28udGFyZ2V0Py5jb250YWlucyhhLnRyaWdnZXIudmFsdWUpJiZhLm9uQ2xvc2UoKX0se2NhcHR1cmU6ITB9KSwkKHdpbmRvdyx6LGEub25DbG9zZSl9KSwobyxzKT0+KHUoKSx2KHQocmUpLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiExLG9uRXNjYXBlS2V5RG93bjpzWzBdfHwoc1swXT1sPT5wKCJlc2NhcGVLZXlEb3duIixsKSksb25Qb2ludGVyRG93bk91dHNpZGU6c1sxXXx8KHNbMV09bD0+e3QoYSkuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlJiZ0KGEpLnRyaWdnZXIudmFsdWU/LmNvbnRhaW5zKGwudGFyZ2V0KSYmbC5wcmV2ZW50RGVmYXVsdCgpLHAoInBvaW50ZXJEb3duT3V0c2lkZSIsbCl9KSxvbkZvY3VzT3V0c2lkZTpzWzJdfHwoc1syXT1hZSgoKT0+e30sWyJwcmV2ZW50Il0pKSxvbkRpc21pc3M6c1szXXx8KHNbM109bD0+dChhKS5vbkNsb3NlKCkpfSx7ZGVmYXVsdDppKCgpPT5bdyh0KFkpLF8oe3JlZjp0KG4pLCJkYXRhLXN0YXRlIjp0KGEpLnN0YXRlQXR0cmlidXRlLnZhbHVlfSx7Li4uby4kYXR0cnMsLi4ubS52YWx1ZX0se3N0eWxlOnsiLS1yZWthLXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS10b29sdGlwLXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6aSgoKT0+W3Eoby4kc2xvdHMsImRlZmF1bHQiKSx3KHQoZWUpLHtpZDp0KGEpLmNvbnRlbnRJZCxyb2xlOiJ0b29sdGlwIn0se2RlZmF1bHQ6aSgoKT0+W3RlKE0oeS52YWx1ZSksMSldKSxfOjF9LDgsWyJpZCJdKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIl0pXSksXzozfSkpfX0pLFY9QmUsT2U9VCh7X19uYW1lOiJUb29sdGlwQ29udGVudEhvdmVyYWJsZSIscHJvcHM6e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3QgZT1vZShyKSx7Zm9yd2FyZFJlZjpwLGN1cnJlbnRFbGVtZW50OmF9PVAoKSx7dHJpZ2dlcjpnLG9uQ2xvc2U6bn09UygpLGY9TygpLHtpc1BvaW50ZXJJblRyYW5zaXQ6eSxvblBvaW50ZXJFeGl0Om19PXFlKGcsYSk7cmV0dXJuIGYuaXNQb2ludGVySW5UcmFuc2l0UmVmPXksbSgoKT0+e24oKX0pLChvLHMpPT4odSgpLHYoVixfKHtyZWY6dChwKX0sdChlKSkse2RlZmF1bHQ6aSgoKT0+W3Eoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxEZT1PZSxOZT1UKHtfX25hbWU6IlRvb2x0aXBDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhcmlhTGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSJdLHNldHVwKHIse2VtaXQ6ZH0pe2NvbnN0IGU9cixwPWQsYT1TKCksZz1qKGUscCkse2ZvcndhcmRSZWY6bn09UCgpO3JldHVybihmLHkpPT4odSgpLHYodChsZSkse3ByZXNlbnQ6Zi5mb3JjZU1vdW50fHx0KGEpLm9wZW4udmFsdWV9LHtkZWZhdWx0OmkoKCk9PlsodSgpLHYoc2UodChhKS5kaXNhYmxlSG92ZXJhYmxlQ29udGVudC52YWx1ZT9WOkRlKSxfKHtyZWY6dChuKX0sdChnKSkse2RlZmF1bHQ6aSgoKT0+W3EoZi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLHhlPU5lLFNlPVQoe19fbmFtZToiVG9vbHRpcFBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IGQ9cjtyZXR1cm4oZSxwKT0+KHUoKSx2KHQobmUpLEwoSShkKSkse2RlZmF1bHQ6aSgoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxSZT1TZSxGZT1UKHtfX25hbWU6IlRvb2x0aXBUcmlnZ2VyIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAocil7Y29uc3QgZD1yLGU9UygpLHA9TygpO2UuY29udGVudElkfHw9aWUodm9pZCAwLCJyZWthLXRvb2x0aXAtY29udGVudCIpO2NvbnN0e2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpnfT1QKCksbj14KCExKSxmPXgoITEpLHk9YigoKT0+ZS5kaXNhYmxlZC52YWx1ZT97fTp7Y2xpY2s6aCxmb2N1czpDLHBvaW50ZXJtb3ZlOnMscG9pbnRlcmxlYXZlOmwscG9pbnRlcmRvd246byxibHVyOkR9KTtBKCgpPT57ZS5vblRyaWdnZXJDaGFuZ2UoZy52YWx1ZSl9KTtmdW5jdGlvbiBtKCl7c2V0VGltZW91dCgoKT0+e24udmFsdWU9ITF9LDEpfWZ1bmN0aW9uIG8oKXtlLm9wZW4mJiFlLmRpc2FibGVDbG9zaW5nVHJpZ2dlci52YWx1ZSYmZS5vbkNsb3NlKCksbi52YWx1ZT0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLG0se29uY2U6ITB9KX1mdW5jdGlvbiBzKGMpe2MucG9pbnRlclR5cGUhPT0idG91Y2giJiYhZi52YWx1ZSYmIXAuaXNQb2ludGVySW5UcmFuc2l0UmVmLnZhbHVlJiYoZS5vblRyaWdnZXJFbnRlcigpLGYudmFsdWU9ITApfWZ1bmN0aW9uIGwoKXtlLm9uVHJpZ2dlckxlYXZlKCksZi52YWx1ZT0hMX1mdW5jdGlvbiBDKGMpe24udmFsdWV8fGUuaWdub3JlTm9uS2V5Ym9hcmRGb2N1cy52YWx1ZSYmIWMudGFyZ2V0Lm1hdGNoZXM/LigiOmZvY3VzLXZpc2libGUiKXx8ZS5vbk9wZW4oKX1mdW5jdGlvbiBEKCl7ZS5vbkNsb3NlKCl9ZnVuY3Rpb24gaCgpe2UuZGlzYWJsZUNsb3NpbmdUcmlnZ2VyLnZhbHVlfHxlLm9uQ2xvc2UoKX1yZXR1cm4oYyxrKT0+KHUoKSx2KHQocGUpLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTpjLnJlZmVyZW5jZX0se2RlZmF1bHQ6aSgoKT0+W3codCh1ZSksXyh7cmVmOnQoYSksImFyaWEtZGVzY3JpYmVkYnkiOnQoZSkub3Blbi52YWx1ZT90KGUpLmNvbnRlbnRJZDp2b2lkIDAsImRhdGEtc3RhdGUiOnQoZSkuc3RhdGVBdHRyaWJ1dGUudmFsdWUsYXM6Yy5hcywiYXMtY2hpbGQiOmQuYXNDaGlsZCwiZGF0YS1ncmFjZS1hcmVhLXRyaWdnZXIiOiIifSxkZSh5LnZhbHVlKSkse2RlZmF1bHQ6aSgoKT0+W3EoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcmlhLWRlc2NyaWJlZGJ5IiwiZGF0YS1zdGF0ZSIsImFzIiwiYXMtY2hpbGQiXSldKSxfOjN9LDgsWyJyZWZlcmVuY2UiXSkpfX0pLEVlPUZlO2NvbnN0IExlPXtzbG90czp7Y29udGVudDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgYmctZGVmYXVsdCB0ZXh0LWhpZ2hsaWdodGVkIHNoYWRvdy1zbSByb3VuZGVkLXNtIHJpbmcgcmluZy1kZWZhdWx0IGgtNiBweC0yLjUgcHktMSB0ZXh0LXhzIHNlbGVjdC1ub25lIGRhdGEtW3N0YXRlPWRlbGF5ZWQtb3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzEwMG1zX2Vhc2UtaW5dIG9yaWdpbi0oLS1yZWthLXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSBwb2ludGVyLWV2ZW50cy1hdXRvIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCIsdGV4dDoidHJ1bmNhdGUiLGtiZHM6ImhpZGRlbiBsZzppbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTAuNSBub3QtZmlyc3Qtb2YtdHlwZTpiZWZvcmU6Y29udGVudC1bJ8K3J10gbm90LWZpcnN0LW9mLXR5cGU6YmVmb3JlOm1lLTAuNSIsa2Jkc1NpemU6InNtIn19LEtlPXtfX25hbWU6IlVUb29sdGlwIixwcm9wczp7dGV4dDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGtiZHM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0OmR9KXtjb25zdCBlPXIscD1kLGE9ZmUoKSxnPWNlKCksbj1nZSgidG9vbHRpcCIsZSksZj1PKCkseT1qKHZlKGUsImRlZmF1bHRPcGVuIiwib3BlbiIsImRlbGF5RHVyYXRpb24iLCJkaXNhYmxlSG92ZXJhYmxlQ29udGVudCIsImRpc2FibGVDbG9zaW5nVHJpZ2dlciIsImlnbm9yZU5vbktleWJvYXJkRm9jdXMiKSxwKSxtPXllKFIoKCk9PmUucG9ydGFsKSksbz1SKCgpPT5FKGUuY29udGVudCxmLmNvbnRlbnQudmFsdWUse3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDo4LGNvbGxpc2lvblBhZGRpbmc6OH0pKSxzPVIoKCk9PkUoZS5hcnJvdyx7cm91bmRlZDohMH0pKSxsPWIoKCk9Pksoe2V4dGVuZDpLKExlKSwuLi5nLnVpPy50b29sdGlwfHx7fX0pKHtzaWRlOm8udmFsdWUuc2lkZX0pKTtyZXR1cm4oQyxEKT0+KHUoKSx2KHQoa2UpLF8odCh5KSx7ZGlzYWJsZWQ6IShyLnRleHR8fHIua2Jkcz8ubGVuZ3RofHxhLmNvbnRlbnQpfHxlLmRpc2FibGVkfSkse2RlZmF1bHQ6aSgoe29wZW46aH0pPT5bYS5kZWZhdWx0fHxyLnJlZmVyZW5jZT8odSgpLHYodChFZSksXyh7a2V5OjB9LEMuJGF0dHJzLHsiYXMtY2hpbGQiOiIiLHJlZmVyZW5jZTpyLnJlZmVyZW5jZSxjbGFzczplLmNsYXNzfSkse2RlZmF1bHQ6aSgoKT0+W3EoQy4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmh9KV0pLF86Mn0sMTA0MCxbInJlZmVyZW5jZSIsImNsYXNzIl0pKTpOKCIiLCEwKSx3KHQoUmUpLEwoSSh0KG0pKSkse2RlZmF1bHQ6aSgoKT0+W3codChiZSksbnVsbCx7ZGVmYXVsdDppKCgpPT5bdyh0KHhlKSxfKG8udmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpsLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshYS5kZWZhdWx0JiZlLmNsYXNzLHQobik/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDppKCgpPT5bcShDLiRzbG90cywiY29udGVudCIse3VpOmwudmFsdWV9LCgpPT5bci50ZXh0Pyh1KCksRigic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJ0ZXh0IixjbGFzczpIKGwudmFsdWUudGV4dCh7Y2xhc3M6dChuKT8udGV4dH0pKX0sTShyLnRleHQpLDMpKTpOKCIiLCEwKSxyLmtiZHM/Lmxlbmd0aD8odSgpLEYoInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90Ijoia2JkcyIsY2xhc3M6SChsLnZhbHVlLmtiZHMoe2NsYXNzOnQobik/LmtiZHN9KSl9LFsodSghMCksRihtZSxudWxsLF9lKHIua2JkcywoYyxrKT0+KHUoKSx2KENlLF8oe2tleTprLHNpemU6dChuKT8ua2Jkc1NpemV8fGwudmFsdWUua2Jkc1NpemUoKX0se3JlZl9mb3I6ITB9LHR5cGVvZiBjPT0ic3RyaW5nIj97dmFsdWU6Y306YyksbnVsbCwxNixbInNpemUiXSkpKSwxMjgpKV0sMikpOk4oIiIsITApXSksci5hcnJvdz8odSgpLHYodChUZSksXyh7a2V5OjB9LHMudmFsdWUseyJkYXRhLXNsb3QiOiJhcnJvdyIsY2xhc3M6bC52YWx1ZS5hcnJvdyh7Y2xhc3M6dChuKT8uYXJyb3d9KX0pLG51bGwsMTYsWyJjbGFzcyJdKSk6TigiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldKSxfOjN9KV0pLF86M30sMTYpXSksXzozfSwxNixbImRpc2FibGVkIl0pKX19O2V4cG9ydHtLZSBhcyBffTsK", "/_nuxt/CYamzLm5.js": "aW1wb3J0e2MwIGFzIHR0LGNoIGFzIHJ0LGF6IGFzIGFlLHIgYXMgdyxiZiBhcyBvdCxmIGFzIGgsbyBhcyBfLGggYXMgbSx3IGFzIGYsTCBhcyBxLGF2IGFzIFMsYXcgYXMgTyxpIGFzIHQsYmcgYXMgc2UsYm8gYXMgeWUsY2kgYXMga2UsYTQgYXMgaixiWiBhcyBwZSxhdSBhcyB6LGJjIGFzIEllLGJkIGFzIGxlLGE5IGFzIE4sYTcgYXMgVCxiaSBhcyB4ZSxiaCBhcyBSZSxhOCBhcyBDLGM3IGFzIGF0LFIgYXMgbmUsYTUgYXMgWSxiayBhcyBvZSxiIGFzIGssYm0gYXMgdmUsYm4gYXMgZ2UsY2ogYXMgQWUsYmwgYXMgRmUsY2sgYXMgbnQsY2wgYXMgc3QsY20gYXMgbHQsY24gYXMgdXQsY28gYXMgaXQsY3AgYXMgZHQsY3EgYXMgVSxhMyBhcyBwdCxQIGFzIFIsYWEgYXMgTSxhNiBhcyBLLGwgYXMgWixjciBhcyBmdCxjcyBhcyBjdCxjdCBhcyBfZSxjdSBhcyBmZSxhZyBhcyBKLGFYIGFzIHVlLGFEIGFzIFEsYWkgYXMgQSxiaiBhcyBFZSxhYiBhcyBILGEyIGFzICQsYnAgYXMgbWUsY3YgYXMgeXQsY3cgYXMgdnQsY3ggYXMgZ3QsYWMgYXMgX3QsY3kgYXMgcWUsRyBhcyBUZSxjOCBhcyBtdCxiZSBhcyBxdCxaIGFzIGh0LGFxIGFzIGJ0LFMgYXMgd3QsSiBhcyBDdCxLIGFzIEJ0LGQgYXMgUHQsdCBhcyBTdCxNIGFzIE10LE4gYXMgT2V9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7UiBhcyBPdH1mcm9tIi4vRHZkaHlwRGkuanMiO2NvbnN0IER0PVsiSU5QVVQiLCJURVhUQVJFQSJdO2Z1bmN0aW9uIERlKHIsbyxlLGE9e30pe2lmKCFvfHxhLmVuYWJsZUlnbm9yZWRFbGVtZW50JiZEdC5pbmNsdWRlcyhvLm5vZGVOYW1lKSlyZXR1cm4gbnVsbDtjb25zdHthcnJvd0tleU9wdGlvbnM6bD0iYm90aCIsYXR0cmlidXRlTmFtZTpzPSJbZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbV0iLGl0ZW1zQXJyYXk6bj1bXSxsb29wOnU9ITAsZGlyOmQ9Imx0ciIscHJldmVudFNjcm9sbDpwPSEwLGZvY3VzOmk9ITF9PWEsW2MsdixiLGcsUCxJXT1bci5rZXk9PT0iQXJyb3dSaWdodCIsci5rZXk9PT0iQXJyb3dMZWZ0IixyLmtleT09PSJBcnJvd1VwIixyLmtleT09PSJBcnJvd0Rvd24iLHIua2V5PT09IkhvbWUiLHIua2V5PT09IkVuZCJdLEY9Ynx8ZyxFPWN8fHY7aWYoIVAmJiFJJiYoIUYmJiFFfHxsPT09InZlcnRpY2FsIiYmRXx8bD09PSJob3Jpem9udGFsIiYmRikpcmV0dXJuIG51bGw7Y29uc3QgRz1lP0FycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKHMpKTpuO2lmKCFHLmxlbmd0aClyZXR1cm4gbnVsbDtwJiZyLnByZXZlbnREZWZhdWx0KCk7bGV0IHg9bnVsbDtyZXR1cm4gRXx8Rj94PU5lKEcsbyx7Z29Gb3J3YXJkOkY/ZzpkPT09Imx0ciI/Yzp2LGxvb3A6dX0pOlA/eD1HLmF0KDApfHxudWxsOkkmJih4PUcuYXQoLTEpfHxudWxsKSxpJiZ4Py5mb2N1cygpLHh9ZnVuY3Rpb24gTmUocixvLGUsYT1yLmluY2x1ZGVzKG8pP3IubGVuZ3RoOnIubGVuZ3RoKzEpe2lmKC0tYT09PTApcmV0dXJuIG51bGw7Y29uc3QgbD1yLmluZGV4T2Yobyk7bGV0IHM7aWYobD09PS0xP3M9ZS5nb0ZvcndhcmQ/MDpyLmxlbmd0aC0xOnM9ZS5nb0ZvcndhcmQ/bCsxOmwtMSwhZS5sb29wJiYoczwwfHxzPj1yLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3Qgbj0ocytyLmxlbmd0aCklci5sZW5ndGgsdT1yW25dO3JldHVybiB1P3UuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpJiZ1LmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSE9PSJmYWxzZSI/TmUocix1LGUsYSk6dTpudWxsfWZ1bmN0aW9uIGt0KHIsbyl7Y29uc3QgZT10dCghMSwzMDApO3J0KCgpPT57ZS52YWx1ZT0hMX0pO2NvbnN0IGE9dyhudWxsKSxsPW90KCk7ZnVuY3Rpb24gcygpe2EudmFsdWU9bnVsbCxlLnZhbHVlPSExfWZ1bmN0aW9uIG4odSxkKXtpZighZClyZXR1cm47Y29uc3QgcD11LmN1cnJlbnRUYXJnZXQsaT17eDp1LmNsaWVudFgseTp1LmNsaWVudFl9LGM9SXQoaSxwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSx2PXh0KGksYywxKSxiPVJ0KGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGc9RnQoWy4uLnYsLi4uYl0pO2EudmFsdWU9ZyxlLnZhbHVlPSEwfXJldHVybiBhZSh1PT57aWYoci52YWx1ZSYmby52YWx1ZSl7Y29uc3QgZD1pPT5uKGksby52YWx1ZSkscD1pPT5uKGksci52YWx1ZSk7ci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLGQpLG8udmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixwKSx1KCgpPT57ci52YWx1ZT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixkKSxvLnZhbHVlPy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHApfSl9fSksYWUodT0+e2lmKGEudmFsdWUpe2NvbnN0IGQ9cD0+e2lmKCFhLnZhbHVlfHwhKHAudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCkpcmV0dXJuO2NvbnN0IGk9cC50YXJnZXQsYz17eDpwLmNsaWVudFgseTpwLmNsaWVudFl9LHY9ci52YWx1ZT8uY29udGFpbnMoaSl8fG8udmFsdWU/LmNvbnRhaW5zKGkpLGI9IUF0KGMsYS52YWx1ZSksZz0hIWkuY2xvc2VzdCgiW2RhdGEtZ3JhY2UtYXJlYS10cmlnZ2VyXSIpO3Y/cygpOihifHxnKSYmKHMoKSxsLnRyaWdnZXIoKSl9O3IudmFsdWU/Lm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGQpLHUoKCk9PnIudmFsdWU/Lm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGQpKX19KSx7aXNQb2ludGVySW5UcmFuc2l0OmUsb25Qb2ludGVyRXhpdDpsLm9ufX1mdW5jdGlvbiBJdChyLG8pe2NvbnN0IGU9TWF0aC5hYnMoby50b3Atci55KSxhPU1hdGguYWJzKG8uYm90dG9tLXIueSksbD1NYXRoLmFicyhvLnJpZ2h0LXIueCkscz1NYXRoLmFicyhvLmxlZnQtci54KTtzd2l0Y2goTWF0aC5taW4oZSxhLGwscykpe2Nhc2UgczpyZXR1cm4ibGVmdCI7Y2FzZSBsOnJldHVybiJyaWdodCI7Y2FzZSBlOnJldHVybiJ0b3AiO2Nhc2UgYTpyZXR1cm4iYm90dG9tIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24geHQocixvLGU9NSl7Y29uc3QgYT1bXTtzd2l0Y2gobyl7Y2FzZSJ0b3AiOmEucHVzaCh7eDpyLngtZSx5OnIueStlfSx7eDpyLngrZSx5OnIueStlfSk7YnJlYWs7Y2FzZSJib3R0b20iOmEucHVzaCh7eDpyLngtZSx5OnIueS1lfSx7eDpyLngrZSx5OnIueS1lfSk7YnJlYWs7Y2FzZSJsZWZ0IjphLnB1c2goe3g6ci54K2UseTpyLnktZX0se3g6ci54K2UseTpyLnkrZX0pO2JyZWFrO2Nhc2UicmlnaHQiOmEucHVzaCh7eDpyLngtZSx5OnIueS1lfSx7eDpyLngtZSx5OnIueStlfSk7YnJlYWt9cmV0dXJuIGF9ZnVuY3Rpb24gUnQocil7Y29uc3R7dG9wOm8scmlnaHQ6ZSxib3R0b206YSxsZWZ0Omx9PXI7cmV0dXJuW3t4OmwseTpvfSx7eDplLHk6b30se3g6ZSx5OmF9LHt4OmwseTphfV19ZnVuY3Rpb24gQXQocixvKXtjb25zdHt4OmUseTphfT1yO2xldCBsPSExO2ZvcihsZXQgcz0wLG49by5sZW5ndGgtMTtzPG8ubGVuZ3RoO249cysrKXtjb25zdCB1PW9bc10ueCxkPW9bc10ueSxwPW9bbl0ueCxpPW9bbl0ueTtkPmEhPWk+YSYmZTwocC11KSooYS1kKS8oaS1kKSt1JiYobD0hbCl9cmV0dXJuIGx9ZnVuY3Rpb24gRnQocil7Y29uc3Qgbz1yLnNsaWNlKCk7cmV0dXJuIG8uc29ydCgoZSxhKT0+ZS54PGEueD8tMTplLng+YS54PzE6ZS55PGEueT8tMTplLnk+YS55PzE6MCksRXQobyl9ZnVuY3Rpb24gRXQocil7aWYoci5sZW5ndGg8PTEpcmV0dXJuIHIuc2xpY2UoKTtjb25zdCBvPVtdO2ZvcihsZXQgYT0wO2E8ci5sZW5ndGg7YSsrKXtjb25zdCBsPXJbYV07Zm9yKDtvLmxlbmd0aD49Mjspe2NvbnN0IHM9by5hdCgtMSksbj1vW28ubGVuZ3RoLTJdO2lmKChzLngtbi54KSoobC55LW4ueSk+PShzLnktbi55KSoobC54LW4ueCkpby5wb3AoKTtlbHNlIGJyZWFrfW8ucHVzaChsKX1vLnBvcCgpO2NvbnN0IGU9W107Zm9yKGxldCBhPXIubGVuZ3RoLTE7YT49MDthLS0pe2NvbnN0IGw9clthXTtmb3IoO2UubGVuZ3RoPj0yOyl7Y29uc3Qgcz1lLmF0KC0xKSxuPWVbZS5sZW5ndGgtMl07aWYoKHMueC1uLngpKihsLnktbi55KT49KHMueS1uLnkpKihsLngtbi54KSllLnBvcCgpO2Vsc2UgYnJlYWt9ZS5wdXNoKGwpfXJldHVybiBlLnBvcCgpLG8ubGVuZ3RoPT09MSYmZS5sZW5ndGg9PT0xJiZvWzBdLng9PT1lWzBdLngmJm9bMF0ueT09PWVbMF0ueT9vOm8uY29uY2F0KGUpfXZhciBUdD1oKHtfX25hbWU6Ik1lbnVBbmNob3IiLHByb3BzOntyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChzZSksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEtlPVR0LE50PWgoe19fbmFtZToiTWVudUFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4oZSxhKT0+KF8oKSxtKHQoeWUpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxLdD1OdDtmdW5jdGlvbiAkdCgpe2NvbnN0IHI9dyghMSk7cmV0dXJuIGooKCk9PntwZSgia2V5ZG93biIsKCk9PntyLnZhbHVlPSEwfSx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSkscGUoWyJwb2ludGVyZG93biIsInBvaW50ZXJtb3ZlIl0sKCk9PntyLnZhbHVlPSExfSx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9KSxyfWNvbnN0IFZ0PWtlKCR0KSxbViwkZV09VChbIk1lbnVSb290IiwiTWVudVN1YiJdLCJNZW51Q29udGV4dCIpLFtXLEx0XT1UKCJNZW51Um9vdCIpO3ZhciBHdD1oKHtfX25hbWU6Ik1lbnVSb290Iixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLHttb2RhbDpsLGRpcjpzfT16KGUpLG49SWUocyksdT1OKGUsIm9wZW4iLGEpLGQ9dygpLHA9VnQoKTtyZXR1cm4gJGUoe29wZW46dSxvbk9wZW5DaGFuZ2U6aT0+e3UudmFsdWU9aX0sY29udGVudDpkLG9uQ29udGVudENoYW5nZTppPT57ZC52YWx1ZT1pfX0pLEx0KHtvbkNsb3NlOigpPT57dS52YWx1ZT0hMX0saXNVc2luZ0tleWJvYXJkUmVmOnAsZGlyOm4sbW9kYWw6bH0pLChpLGMpPT4oXygpLG0odChsZSksbnVsbCx7ZGVmYXVsdDpmKCgpPT5bcShpLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSkpfX0pLFV0PUd0O2NvbnN0W2VlLEh0XT1UKCJNZW51Q29udGVudCIpO3ZhciBqdD1oKHtfX25hbWU6Ik1lbnVDb250ZW50SW1wbCIscHJvcHM6bnQoe2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlU2Nyb2xsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYXBGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sey4uLnN0fSksZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyIsImRpc21pc3MiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9VigpLHM9VygpLHt0cmFwRm9jdXM6bixkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6dSxsb29wOmR9PXooZSk7eGUoKSxSZSh1LnZhbHVlKTtjb25zdCBwPXcoIiIpLGk9dygwKSxjPXcoMCksdj13KG51bGwpLGI9dygicmlnaHQiKSxnPXcoMCksUD13KG51bGwpLEk9dygpLHtmb3J3YXJkUmVmOkYsY3VycmVudEVsZW1lbnQ6RX09QygpLHtoYW5kbGVUeXBlYWhlYWRTZWFyY2g6R309YXQoKSx4PXcoKTtmdW5jdGlvbiBCZSh5KXtjb25zdCBCPURlKHkseC52YWx1ZXx8b2UoKSxFLnZhbHVlLHtsb29wOmQudmFsdWUsYXJyb3dLZXlPcHRpb25zOiJ2ZXJ0aWNhbCIsZGlyOnM/LmRpci52YWx1ZSxmb2N1czohMSxhdHRyaWJ1dGVOYW1lOiJbZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbV06bm90KFtkYXRhLWRpc2FibGVkXSkifSk7QiYmKHgudmFsdWU9QixCLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCJ9KSl9ZnVuY3Rpb24gamUoKXt4LnZhbHVlJiZ4LnZhbHVlLmNsaWNrKCl9Y29uc3QgdGU9dygpLFg9dygpO25lKHgseT0+e1gudmFsdWUmJih5PT09dm9pZCAwfHx5IT09WC52YWx1ZS50cmlnZ2VyLnZhbHVlKSYmKFgudmFsdWUub25PcGVuQ2hhbmdlKCExKSxYLnZhbHVlPXZvaWQgMCl9KSxuZShFLHk9PntsLm9uQ29udGVudENoYW5nZSh5KX0pLFkoKCk9Pnt3aW5kb3cuY2xlYXJUaW1lb3V0KGkudmFsdWUpfSk7ZnVuY3Rpb24gaWUoeSl7cmV0dXJuIGIudmFsdWU9PT12LnZhbHVlPy5zaWRlJiZsdCh5LHYudmFsdWU/LmFyZWEpfWFzeW5jIGZ1bmN0aW9uIHplKHkpe2EoIm9wZW5BdXRvRm9jdXMiLHkpLCF5LmRlZmF1bHRQcmV2ZW50ZWQmJih5LnByZXZlbnREZWZhdWx0KCksRS52YWx1ZT8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSl9ZnVuY3Rpb24gV2UoeSl7aWYoeS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCBCPXkudGFyZ2V0LEQ9Qi5jbG9zZXN0KCJbZGF0YS1yZWthLW1lbnUtY29udGVudF0iKT09PXkuY3VycmVudFRhcmdldCxkZT1bImlucHV0IiwidGV4dGFyZWEiXS5pbmNsdWRlcyhCLnRhZ05hbWUudG9Mb3dlckNhc2UoKSksSmU9eS5jdHJsS2V5fHx5LmFsdEtleXx8eS5tZXRhS2V5LFFlPXkua2V5Lmxlbmd0aD09PTEsUGU9RGUoeSxvZSgpLEUudmFsdWUse2xvb3A6ZC52YWx1ZSxhcnJvd0tleU9wdGlvbnM6InZlcnRpY2FsIixkaXI6cz8uZGlyLnZhbHVlLGZvY3VzOiEwLGF0dHJpYnV0ZU5hbWU6IltkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXTpub3QoW2RhdGEtZGlzYWJsZWRdKSJ9KTtpZihQZSlyZXR1cm4gUGU/LmZvY3VzKCk7aWYoeS5jb2RlPT09IlNwYWNlIilyZXR1cm47Y29uc3QgU2U9SS52YWx1ZT8uZ2V0SXRlbXMoKT8/W107aWYoRCYmKHkua2V5PT09IlRhYiImJnkucHJldmVudERlZmF1bHQoKSwhSmUmJlFlJiYhZGUmJkcoeS5rZXksU2UpKSx5LnRhcmdldCE9PUUudmFsdWV8fCF1dC5pbmNsdWRlcyh5LmtleSkpcmV0dXJuO3kucHJldmVudERlZmF1bHQoKTtjb25zdCBNZT1bLi4uU2UubWFwKGV0PT5ldC5yZWYpXTtpdC5pbmNsdWRlcyh5LmtleSkmJk1lLnJldmVyc2UoKSxkdChNZSl9ZnVuY3Rpb24gWGUoeSl7eT8uY3VycmVudFRhcmdldD8uY29udGFpbnM/Lih5LnRhcmdldCl8fCh3aW5kb3cuY2xlYXJUaW1lb3V0KGkudmFsdWUpLHAudmFsdWU9IiIpfWZ1bmN0aW9uIFllKHkpe2lmKCFVKHkpKXJldHVybjtjb25zdCBCPXkudGFyZ2V0LEQ9Zy52YWx1ZSE9PXkuY2xpZW50WDtpZih5Py5jdXJyZW50VGFyZ2V0Py5jb250YWlucyhCKSYmRCl7Y29uc3QgZGU9eS5jbGllbnRYPmcudmFsdWU/InJpZ2h0IjoibGVmdCI7Yi52YWx1ZT1kZSxnLnZhbHVlPXkuY2xpZW50WH19ZnVuY3Rpb24gWmUoeSl7VSh5KSYmdGUudmFsdWUmJnRlLnZhbHVlLmZvY3VzKCl9cmV0dXJuIEh0KHtvbkl0ZW1FbnRlcjp5PT4hIWllKHkpLG9uSXRlbUxlYXZlOnk9PntpZihpZSh5KSlyZXR1cm47WyJJTlBVVCIsIlRFWFRBUkVBIl0uaW5jbHVkZXMob2UoKT8udGFnTmFtZXx8IiIpfHxFLnZhbHVlPy5mb2N1cygpLFAudmFsdWU9bnVsbH0sb25UcmlnZ2VyTGVhdmU6eT0+ISFpZSh5KSxzZWFyY2hSZWY6cCxoaWdobGlnaHRlZEVsZW1lbnQ6eCxvbktleWRvd25OYXZpZ2F0aW9uOkJlLG9uS2V5ZG93bkVudGVyOmplLGZpbHRlckVsZW1lbnQ6dGUsb25GaWx0ZXJFbGVtZW50Q2hhbmdlOnk9Pnt0ZS52YWx1ZT15fSxhY3RpdmVTdWJtZW51Q29udGV4dDpYLHBvaW50ZXJHcmFjZVRpbWVyUmVmOmMsb25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2U6eT0+e3YudmFsdWU9eX19KSwoeSxCKT0+KF8oKSxtKHQoRmUpLHsiYXMtY2hpbGQiOiIiLHRyYXBwZWQ6dChuKSxvbk1vdW50QXV0b0ZvY3VzOnplLG9uVW5tb3VudEF1dG9Gb2N1czpCWzddfHwoQls3XT1EPT5hKCJjbG9zZUF1dG9Gb2N1cyIsRCkpfSx7ZGVmYXVsdDpmKCgpPT5bayh0KHZlKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0KHUpLG9uRXNjYXBlS2V5RG93bjpCWzJdfHwoQlsyXT1EPT5hKCJlc2NhcGVLZXlEb3duIixEKSksb25Qb2ludGVyRG93bk91dHNpZGU6QlszXXx8KEJbM109RD0+YSgicG9pbnRlckRvd25PdXRzaWRlIixEKSksb25Gb2N1c091dHNpZGU6Qls0XXx8KEJbNF09RD0+YSgiZm9jdXNPdXRzaWRlIixEKSksb25JbnRlcmFjdE91dHNpZGU6Qls1XXx8KEJbNV09RD0+YSgiaW50ZXJhY3RPdXRzaWRlIixEKSksb25EaXNtaXNzOkJbNl18fChCWzZdPUQ9PmEoImRpc21pc3MiKSl9LHtkZWZhdWx0OmYoKCk9PltrKHQoT3QpLHtyZWZfa2V5OiJyb3ZpbmdGb2N1c0dyb3VwUmVmIixyZWY6SSwiY3VycmVudC10YWItc3RvcC1pZCI6UC52YWx1ZSwib25VcGRhdGU6Y3VycmVudFRhYlN0b3BJZCI6QlswXXx8KEJbMF09RD0+UC52YWx1ZT1EKSwiYXMtY2hpbGQiOiIiLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsZGlyOnQocykuZGlyLnZhbHVlLGxvb3A6dChkKSxvbkVudHJ5Rm9jdXM6QlsxXXx8KEJbMV09RD0+e2EoImVudHJ5Rm9jdXMiLEQpLHQocykuaXNVc2luZ0tleWJvYXJkUmVmLnZhbHVlfHxELnByZXZlbnREZWZhdWx0KCl9KX0se2RlZmF1bHQ6ZigoKT0+W2sodChnZSkse3JlZjp0KEYpLHJvbGU6Im1lbnUiLGFzOnkuYXMsImFzLWNoaWxkIjp5LmFzQ2hpbGQsImFyaWEtb3JpZW50YXRpb24iOiJ2ZXJ0aWNhbCIsImRhdGEtcmVrYS1tZW51LWNvbnRlbnQiOiIiLCJkYXRhLXN0YXRlIjp0KEFlKSh0KGwpLm9wZW4udmFsdWUpLGRpcjp0KHMpLmRpci52YWx1ZSxzaWRlOnkuc2lkZSwic2lkZS1vZmZzZXQiOnkuc2lkZU9mZnNldCxhbGlnbjp5LmFsaWduLCJhbGlnbi1vZmZzZXQiOnkuYWxpZ25PZmZzZXQsImF2b2lkLWNvbGxpc2lvbnMiOnkuYXZvaWRDb2xsaXNpb25zLCJjb2xsaXNpb24tYm91bmRhcnkiOnkuY29sbGlzaW9uQm91bmRhcnksImNvbGxpc2lvbi1wYWRkaW5nIjp5LmNvbGxpc2lvblBhZGRpbmcsImFycm93LXBhZGRpbmciOnkuYXJyb3dQYWRkaW5nLCJwcmlvcml0aXplLXBvc2l0aW9uIjp5LnByaW9yaXRpemVQb3NpdGlvbiwicG9zaXRpb24tc3RyYXRlZ3kiOnkucG9zaXRpb25TdHJhdGVneSwidXBkYXRlLXBvc2l0aW9uLXN0cmF0ZWd5Ijp5LnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3ksc3RpY2t5Onkuc3RpY2t5LCJoaWRlLXdoZW4tZGV0YWNoZWQiOnkuaGlkZVdoZW5EZXRhY2hlZCxyZWZlcmVuY2U6eS5yZWZlcmVuY2Usb25LZXlkb3duOldlLG9uQmx1cjpYZSxvblBvaW50ZXJtb3ZlOlllLG9uUG9pbnRlcmVudGVyOlplfSx7ZGVmYXVsdDpmKCgpPT5bcSh5LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkaXIiLCJzaWRlIiwic2lkZS1vZmZzZXQiLCJhbGlnbiIsImFsaWduLW9mZnNldCIsImF2b2lkLWNvbGxpc2lvbnMiLCJjb2xsaXNpb24tYm91bmRhcnkiLCJjb2xsaXNpb24tcGFkZGluZyIsImFycm93LXBhZGRpbmciLCJwcmlvcml0aXplLXBvc2l0aW9uIiwicG9zaXRpb24tc3RyYXRlZ3kiLCJ1cGRhdGUtcG9zaXRpb24tc3RyYXRlZ3kiLCJzdGlja3kiLCJoaWRlLXdoZW4tZGV0YWNoZWQiLCJyZWZlcmVuY2UiXSldKSxfOjN9LDgsWyJjdXJyZW50LXRhYi1zdG9wLWlkIiwiZGlyIiwibG9vcCJdKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLGhlPWp0LHp0PWgoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik1lbnVJdGVtSW1wbCIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cixlPWVlKCkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpsfT1DKCkse0NvbGxlY3Rpb25JdGVtOnN9PXB0KCksbj13KCExKSx1PVooKCk9Pm4udmFsdWV8fGUuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPT09bC52YWx1ZSk7YXN5bmMgZnVuY3Rpb24gZChpKXtpZighKGkuZGVmYXVsdFByZXZlbnRlZHx8IVUoaSkpKXtpZihvLmRpc2FibGVkKWUub25JdGVtTGVhdmUoaSk7ZWxzZSBpZighZS5vbkl0ZW1FbnRlcihpKSl7Y29uc3Qgdj1pLmN1cnJlbnRUYXJnZXQ7ZS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU9dixbIklOUFVUIiwiVEVYVEFSRUEiXS5pbmNsdWRlcyhvZSgpPy50YWdOYW1lfHwiIil8fHYuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX19fWFzeW5jIGZ1bmN0aW9uIHAoaSl7YXdhaXQgSygpLCFpLmRlZmF1bHRQcmV2ZW50ZWQmJlUoaSkmJmUub25JdGVtTGVhdmUoaSl9cmV0dXJuKGksYyk9PihfKCksbSh0KHMpLHt2YWx1ZTp7dGV4dFZhbHVlOmkudGV4dFZhbHVlfX0se2RlZmF1bHQ6ZigoKT0+W2sodChSKSxNKHtyZWY6dChhKSxyb2xlOiJtZW51aXRlbSIsdGFiaW5kZXg6Ii0xIn0saS4kYXR0cnMse2FzOmkuYXMsImFzLWNoaWxkIjppLmFzQ2hpbGQsImFyaWEtZGlzYWJsZWQiOmkuZGlzYWJsZWR8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6aS5kaXNhYmxlZD8iIjp2b2lkIDAsImRhdGEtaGlnaGxpZ2h0ZWQiOnUudmFsdWU/IiI6dm9pZCAwLG9uUG9pbnRlcm1vdmU6ZCxvblBvaW50ZXJsZWF2ZTpwLG9uRm9jdXM6Y1swXXx8KGNbMF09YXN5bmMgdj0+e2F3YWl0IEsoKSwhKHYuZGVmYXVsdFByZXZlbnRlZHx8aS5kaXNhYmxlZCkmJihuLnZhbHVlPSEwLHQoZSkuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPXYuY3VycmVudFRhcmdldCl9KSxvbkJsdXI6Y1sxXXx8KGNbMV09YXN5bmMgdj0+e2F3YWl0IEsoKSwhdi5kZWZhdWx0UHJldmVudGVkJiYobi52YWx1ZT0hMSl9KX0pLHtkZWZhdWx0OmYoKCk9PltxKGkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMiLCJhcy1jaGlsZCIsImFyaWEtZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiZGF0YS1oaWdobGlnaHRlZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxWZT16dCxXdD1oKHtfX25hbWU6Ik1lbnVJdGVtIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLHtmb3J3YXJkUmVmOmwsY3VycmVudEVsZW1lbnQ6c309QygpLG49VygpLHU9ZWUoKSxkPXcoITEpO2FzeW5jIGZ1bmN0aW9uIHAoKXtjb25zdCBpPXMudmFsdWU7aWYoIWUuZGlzYWJsZWQmJmkpe2NvbnN0IGM9bmV3IEN1c3RvbUV2ZW50KGN0LHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTthKCJzZWxlY3QiLGMpLGF3YWl0IEsoKSxjLmRlZmF1bHRQcmV2ZW50ZWQ/ZC52YWx1ZT0hMTpuLm9uQ2xvc2UoKX19cmV0dXJuKGksYyk9PihfKCksbShWZSxNKGUse3JlZjp0KGwpLG9uQ2xpY2s6cCxvblBvaW50ZXJkb3duOmNbMF18fChjWzBdPSgpPT57ZC52YWx1ZT0hMH0pLG9uUG9pbnRlcnVwOmNbMV18fChjWzFdPWFzeW5jIHY9Pnthd2FpdCBLKCksIXYuZGVmYXVsdFByZXZlbnRlZCYmKGQudmFsdWV8fHYuY3VycmVudFRhcmdldD8uY2xpY2soKSl9KSxvbktleWRvd246Y1syXXx8KGNbMl09YXN5bmMgdj0+e2NvbnN0IGI9dCh1KS5zZWFyY2hSZWYudmFsdWUhPT0iIjtpLmRpc2FibGVkfHxiJiZ2LmtleT09PSIgInx8dChmdCkuaW5jbHVkZXModi5rZXkpJiYodi5jdXJyZW50VGFyZ2V0Py5jbGljaygpLHYucHJldmVudERlZmF1bHQoKSl9KX0pLHtkZWZhdWx0OmYoKCk9PltxKGkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksYmU9V3Q7Y29uc3RbWHQsTGVdPVQoWyJNZW51Q2hlY2tib3hJdGVtIiwiTWVudVJhZGlvSXRlbSJdLCJNZW51SXRlbUluZGljYXRvckNvbnRleHQiKTt2YXIgWXQ9aCh7X19uYW1lOiJNZW51SXRlbUluZGljYXRvciIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAocil7Y29uc3Qgbz1YdCh7bW9kZWxWYWx1ZTp3KCExKX0pO3JldHVybihlLGEpPT4oXygpLG0odChKKSx7cHJlc2VudDplLmZvcmNlTW91bnR8fHQoZmUpKHQobykubW9kZWxWYWx1ZS52YWx1ZSl8fHQobykubW9kZWxWYWx1ZS52YWx1ZT09PSEwfSx7ZGVmYXVsdDpmKCgpPT5bayh0KFIpLHthczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJkYXRhLXN0YXRlIjp0KF9lKSh0KG8pLm1vZGVsVmFsdWUudmFsdWUpfSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxadD1ZdCxKdD1oKHtfX25hbWU6Ik1lbnVDaGVja2JveEl0ZW0iLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiLCJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD11ZShlLFsibW9kZWxWYWx1ZSJdKSxzPVEobCksbj1OKGUsIm1vZGVsVmFsdWUiLGEpO3JldHVybiBMZSh7bW9kZWxWYWx1ZTpufSksKHUsZCk9PihfKCksbShiZSxNKHtyb2xlOiJtZW51aXRlbWNoZWNrYm94In0sdChzKSx7ImFyaWEtY2hlY2tlZCI6dChmZSkodChuKSk/Im1peGVkIjp0KG4pLCJkYXRhLXN0YXRlIjp0KF9lKSh0KG4pKSxvblNlbGVjdDpkWzBdfHwoZFswXT1hc3luYyBwPT57YSgic2VsZWN0IixwKSx0KGZlKSh0KG4pKT9uLnZhbHVlPSEwOm4udmFsdWU9IXQobil9KX0pLHtkZWZhdWx0OmYoKCk9PltxKHUuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTp0KG4pfSldKSxfOjN9LDE2LFsiYXJpYS1jaGVja2VkIiwiZGF0YS1zdGF0ZSJdKSl9fSksUXQ9SnQsZXI9aCh7X19uYW1lOiJNZW51Um9vdENvbnRlbnRNb2RhbCIscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImVudHJ5Rm9jdXMiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9QShlLGEpLHM9VigpLHtmb3J3YXJkUmVmOm4sY3VycmVudEVsZW1lbnQ6dX09QygpO3JldHVybiBFZSh1KSwoZCxwKT0+KF8oKSxtKGhlLE0odChsKSx7cmVmOnQobiksInRyYXAtZm9jdXMiOnQocykub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjp0KHMpLm9wZW4udmFsdWUsImRpc2FibGUtb3V0c2lkZS1zY3JvbGwiOiEwLG9uRGlzbWlzczpwWzBdfHwocFswXT1pPT50KHMpLm9uT3BlbkNoYW5nZSghMSkpLG9uRm9jdXNPdXRzaWRlOnBbMV18fChwWzFdPUgoaT0+YSgiZm9jdXNPdXRzaWRlIixpKSxbInByZXZlbnQiXSkpfSkse2RlZmF1bHQ6ZigoKT0+W3EoZC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIl0pKX19KSx0cj1lcixycj1oKHtfX25hbWU6Ik1lbnVSb290Q29udGVudE5vbk1vZGFsIixwcm9wczp7bG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGw9QShyLG8pLHM9VigpO3JldHVybihuLHUpPT4oXygpLG0oaGUsTSh0KGwpLHsidHJhcC1mb2N1cyI6ITEsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6ITEsImRpc2FibGUtb3V0c2lkZS1zY3JvbGwiOiExLG9uRGlzbWlzczp1WzBdfHwodVswXT1kPT50KHMpLm9uT3BlbkNoYW5nZSghMSkpfSkse2RlZmF1bHQ6ZigoKT0+W3Eobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxvcj1ycixhcj1oKHtfX25hbWU6Ik1lbnVDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJlbnRyeUZvY3VzIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgbD1BKHIsbykscz1WKCksbj1XKCk7cmV0dXJuKHUsZCk9PihfKCksbSh0KEopLHtwcmVzZW50OnUuZm9yY2VNb3VudHx8dChzKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpmKCgpPT5bdChuKS5tb2RhbC52YWx1ZT8oXygpLG0odHIsUyhNKHtrZXk6MH0sey4uLnUuJGF0dHJzLC4uLnQobCl9KSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooXygpLG0ob3IsUyhNKHtrZXk6MX0sey4uLnUuJGF0dHJzLC4uLnQobCl9KSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLG5yPWFyO2NvbnN0W3NyLGxyXT1UKCJNZW51R3JvdXAiKTt2YXIgdXI9aCh7X19uYW1lOiJNZW51R3JvdXAiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXIsZT0kKHZvaWQgMCwicmVrYS1tZW51LWdyb3VwIik7cmV0dXJuIGxyKHtpZDplfSksKGEsbCk9PihfKCksbSh0KFIpLE0oe3JvbGU6Imdyb3VwIn0sbyx7ImFyaWEtbGFiZWxsZWRieSI6dChlKX0pLHtkZWZhdWx0OmYoKCk9PltxKGEuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxHZT11cixpcj1oKHtfX25hbWU6Ik1lbnVMYWJlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJkaXYifX0sc2V0dXAocil7Y29uc3Qgbz1yLGU9c3Ioe2lkOiIifSk7cmV0dXJuKGEsbCk9PihfKCksbSh0KFIpLE0obyx7aWQ6dChlKS5pZHx8dm9pZCAwfSkse2RlZmF1bHQ6ZigoKT0+W3EoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCJdKSl9fSksZHI9aXIscHI9aCh7X19uYW1lOiJNZW51UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChtZSksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGZyPXByO2NvbnN0W2NyLHlyXT1UKCJNZW51UmFkaW9Hcm91cCIpO3ZhciB2cj1oKHtfX25hbWU6Ik1lbnVSYWRpb0dyb3VwIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6IiJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9dWUoZSxbIm1vZGVsVmFsdWUiXSkscz1RKGwpLG49TihlLCJtb2RlbFZhbHVlIixhKTtyZXR1cm4geXIoe21vZGVsVmFsdWU6bixvblZhbHVlQ2hhbmdlOnU9PntuLnZhbHVlPXV9fSksKHUsZCk9PihfKCksbShHZSxTKE8odChzKSkpLHtkZWZhdWx0OmYoKCk9PltxKHUuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTp0KG4pfSldKSxfOjN9LDE2KSl9fSksZ3I9dnIsX3I9aCh7X19uYW1lOiJNZW51UmFkaW9JdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLGw9dWUoZSxbInZhbHVlIl0pLHM9UShsKSx7dmFsdWU6bn09eihlKSx1PWNyKCksZD1aKCgpPT51Lm1vZGVsVmFsdWUudmFsdWU9PT1uPy52YWx1ZSk7cmV0dXJuIExlKHttb2RlbFZhbHVlOmR9KSwocCxpKT0+KF8oKSxtKGJlLE0oe3JvbGU6Im1lbnVpdGVtcmFkaW8ifSx0KHMpLHsiYXJpYS1jaGVja2VkIjpkLnZhbHVlLCJkYXRhLXN0YXRlIjp0KF9lKShkLnZhbHVlKSxvblNlbGVjdDppWzBdfHwoaVswXT1hc3luYyBjPT57YSgic2VsZWN0IixjKSx0KHUpLm9uVmFsdWVDaGFuZ2UodChuKSl9KX0pLHtkZWZhdWx0OmYoKCk9PltxKHAuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1jaGVja2VkIiwiZGF0YS1zdGF0ZSJdKSl9fSksbXI9X3IscXI9aCh7X19uYW1lOiJNZW51U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChSKSxNKG8se3JvbGU6InNlcGFyYXRvciIsImFyaWEtb3JpZW50YXRpb24iOiJob3Jpem9udGFsIn0pLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksaHI9cXI7Y29uc3Rbd2UsYnJdPVQoIk1lbnVTdWIiKTt2YXIgd3I9aCh7X19uYW1lOiJNZW51U3ViIixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixsPU4oZSwib3BlbiIsbyx7ZGVmYXVsdFZhbHVlOiExLHBhc3NpdmU6ZS5vcGVuPT09dm9pZCAwfSkscz1WKCksbj13KCksdT13KCk7cmV0dXJuIGFlKGQ9PntzPy5vcGVuLnZhbHVlPT09ITEmJihsLnZhbHVlPSExKSxkKCgpPT5sLnZhbHVlPSExKX0pLCRlKHtvcGVuOmwsb25PcGVuQ2hhbmdlOmQ9PntsLnZhbHVlPWR9LGNvbnRlbnQ6dSxvbkNvbnRlbnRDaGFuZ2U6ZD0+e3UudmFsdWU9ZH19KSxicih7dHJpZ2dlcklkOiIiLGNvbnRlbnRJZDoiIix0cmlnZ2VyOm4sb25UcmlnZ2VyQ2hhbmdlOmQ9PntuLnZhbHVlPWR9fSksKGQscCk9PihfKCksbSh0KGxlKSxudWxsLHtkZWZhdWx0OmYoKCk9PltxKGQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9KSl9fSksQ3I9d3IsQnI9aCh7X19uYW1lOiJNZW51U3ViQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGw9QShyLG8pLHM9VigpLG49VygpLHU9d2UoKSxkPWVlKCkse2ZvcndhcmRSZWY6cCxjdXJyZW50RWxlbWVudDppfT1DKCk7cmV0dXJuIHUuY29udGVudElkfHw9JCh2b2lkIDAsInJla2EtbWVudS1zdWItY29udGVudCIpLChjLHYpPT4oXygpLG0odChKKSx7cHJlc2VudDpjLmZvcmNlTW91bnR8fHQocykub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZigoKT0+W2soaGUsTSh0KGwpLHtpZDp0KHUpLmNvbnRlbnRJZCxyZWY6dChwKSwiYXJpYS1sYWJlbGxlZGJ5Ijp0KHUpLnRyaWdnZXJJZCxhbGlnbjoic3RhcnQiLHNpZGU6dChuKS5kaXIudmFsdWU9PT0icnRsIj8ibGVmdCI6InJpZ2h0IiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMSwiZGlzYWJsZS1vdXRzaWRlLXNjcm9sbCI6ITEsInRyYXAtZm9jdXMiOiExLG9uT3BlbkF1dG9Gb2N1czp2WzBdfHwodlswXT1IKGI9Pnt0KG4pLmlzVXNpbmdLZXlib2FyZFJlZi52YWx1ZSYmdChpKT8uZm9jdXMoKX0sWyJwcmV2ZW50Il0pKSxvbkNsb3NlQXV0b0ZvY3VzOnZbMV18fCh2WzFdPUgoKCk9Pnt9LFsicHJldmVudCJdKSksb25Gb2N1c091dHNpZGU6dlsyXXx8KHZbMl09Yj0+e2lmKGIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47Y29uc3QgZz10KGQpLmZpbHRlckVsZW1lbnQudmFsdWU/LmNvbnRhaW5zKGIudGFyZ2V0KTtiLnRhcmdldCE9PXQodSkudHJpZ2dlci52YWx1ZSYmIWcmJnQocykub25PcGVuQ2hhbmdlKCExKX0pLG9uRXNjYXBlS2V5RG93bjp2WzNdfHwodlszXT1iPT57dChuKS5vbkNsb3NlKCksYi5wcmV2ZW50RGVmYXVsdCgpfSksb25LZXlkb3duOnZbNF18fCh2WzRdPWI9Pntjb25zdCBnPWIuY3VycmVudFRhcmdldD8uY29udGFpbnMoYi50YXJnZXQpLFA9dCh5dClbdChuKS5kaXIudmFsdWVdLmluY2x1ZGVzKGIua2V5KTtnJiZQJiYodChzKS5vbk9wZW5DaGFuZ2UoITEpLHQoZCkuZmlsdGVyRWxlbWVudC52YWx1ZT8odChkKS5maWx0ZXJFbGVtZW50LnZhbHVlLmZvY3VzKCksdChkKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWU9dCh1KS50cmlnZ2VyLnZhbHVlLHQodSkudHJpZ2dlci52YWx1ZT8uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0In0pKTp0KHUpLnRyaWdnZXIudmFsdWU/LmZvY3VzKCksYi5wcmV2ZW50RGVmYXVsdCgpKX0pfSkse2RlZmF1bHQ6ZigoKT0+W3EoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsInNpZGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxQcj1CcixTcj1oKHtfX25hbWU6Ik1lbnVTdWJUcmlnZ2VyIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yLGU9VigpLGE9VygpLGw9d2UoKSxzPWVlKCk7bmUoZS5vcGVuLGM9PntjP3MuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9e29uT3BlbkNoYW5nZTplLm9uT3BlbkNoYW5nZSx0cmlnZ2VyOmwudHJpZ2dlcn06cy5hY3RpdmVTdWJtZW51Q29udGV4dC52YWx1ZT8udHJpZ2dlci52YWx1ZT09PWwudHJpZ2dlci52YWx1ZSYmKHMuYWN0aXZlU3VibWVudUNvbnRleHQudmFsdWU9dm9pZCAwKX0pO2NvbnN0IG49dyhudWxsKTtsLnRyaWdnZXJJZHx8PSQodm9pZCAwLCJyZWthLW1lbnUtc3ViLXRyaWdnZXIiKTtmdW5jdGlvbiB1KCl7bi52YWx1ZSYmd2luZG93LmNsZWFyVGltZW91dChuLnZhbHVlKSxuLnZhbHVlPW51bGx9WSgoKT0+e3UoKX0pO2Z1bmN0aW9uIGQoYyl7IVUoYyl8fHMub25JdGVtRW50ZXIoYyl8fCFvLmRpc2FibGVkJiYhZS5vcGVuLnZhbHVlJiYhbi52YWx1ZSYmKHMub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCksbi52YWx1ZT13aW5kb3cuc2V0VGltZW91dCgoKT0+e2Uub25PcGVuQ2hhbmdlKCEwKSx1KCl9LDEwMCkpfWFzeW5jIGZ1bmN0aW9uIHAoYyl7aWYoIVUoYykpcmV0dXJuO3UoKTtjb25zdCB2PWUuY29udGVudC52YWx1ZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYodj8ud2lkdGgpe2NvbnN0IGI9ZS5jb250ZW50LnZhbHVlPy5kYXRhc2V0LnNpZGUsZz1iPT09InJpZ2h0IixQPWc/LTU6NSxJPXZbZz8ibGVmdCI6InJpZ2h0Il0sRj12W2c/InJpZ2h0IjoibGVmdCJdO3Mub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2Uoe2FyZWE6W3t4OmMuY2xpZW50WCtQLHk6Yy5jbGllbnRZfSx7eDpJLHk6di50b3B9LHt4OkYseTp2LnRvcH0se3g6Rix5OnYuYm90dG9tfSx7eDpJLHk6di5ib3R0b219XSxzaWRlOmJ9KSx3aW5kb3cuY2xlYXJUaW1lb3V0KHMucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWUpLHMucG9pbnRlckdyYWNlVGltZXJSZWYudmFsdWU9d2luZG93LnNldFRpbWVvdXQoKCk9PnMub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCksMzAwKX1lbHNle2lmKHMub25UcmlnZ2VyTGVhdmUoYykpcmV0dXJuO3Mub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCl9fWFzeW5jIGZ1bmN0aW9uIGkoYyl7Y29uc3Qgdj1zLnNlYXJjaFJlZi52YWx1ZSE9PSIiO28uZGlzYWJsZWR8fHYmJmMua2V5PT09IiAifHx2dFthLmRpci52YWx1ZV0uaW5jbHVkZXMoYy5rZXkpJiYoZS5vbk9wZW5DaGFuZ2UoITApLGF3YWl0IEsoKSxlLmNvbnRlbnQudmFsdWU/LmZvY3VzKCksYy5wcmV2ZW50RGVmYXVsdCgpKX1yZXR1cm4oYyx2KT0+KF8oKSxtKEtlLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpmKCgpPT5bayhWZSxNKG8se2lkOnQobCkudHJpZ2dlcklkLHJlZjpiPT57YiYmdChsKT8ub25UcmlnZ2VyQ2hhbmdlKGI/LiRlbCl9LCJhcmlhLWhhc3BvcHVwIjoibWVudSIsImFyaWEtZXhwYW5kZWQiOnQoZSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6dChsKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOnQoQWUpKHQoZSkub3Blbi52YWx1ZSksb25DbGljazp2WzBdfHwodlswXT1hc3luYyBiPT57by5kaXNhYmxlZHx8Yi5kZWZhdWx0UHJldmVudGVkfHwoYi5jdXJyZW50VGFyZ2V0Py5mb2N1cygpLHQoZSkub3Blbi52YWx1ZXx8dChlKS5vbk9wZW5DaGFuZ2UoITApKX0pLG9uUG9pbnRlcm1vdmU6ZCxvblBvaW50ZXJsZWF2ZTpwLG9uS2V5ZG93bjppfSkse2RlZmF1bHQ6ZigoKT0+W3EoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSJdKV0pLF86M30pKX19KSxNcj1Tcjtjb25zdFtMLE9yXT1UKCJQb3BvdmVyUm9vdCIpO3ZhciBEcj1oKHtfX25hbWU6IlBvcG92ZXJSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBlPXIsYT1vLHttb2RhbDpsfT16KGUpLHM9TihlLCJvcGVuIixhLHtkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0T3BlbixwYXNzaXZlOmUub3Blbj09PXZvaWQgMH0pLG49dygpLHU9dyghMSk7cmV0dXJuIE9yKHtjb250ZW50SWQ6IiIsdHJpZ2dlcklkOiIiLG1vZGFsOmwsb3BlbjpzLG9uT3BlbkNoYW5nZTpkPT57cy52YWx1ZT1kfSxvbk9wZW5Ub2dnbGU6KCk9PntzLnZhbHVlPSFzLnZhbHVlfSx0cmlnZ2VyRWxlbWVudDpuLGhhc0N1c3RvbUFuY2hvcjp1fSksKGQscCk9PihfKCksbSh0KGxlKSxudWxsLHtkZWZhdWx0OmYoKCk9PltxKGQuJHNsb3RzLCJkZWZhdWx0Iix7b3Blbjp0KHMpLGNsb3NlOigpPT5zLnZhbHVlPSExfSldKSxfOjN9KSl9fSksa3I9RHIsSXI9aCh7X19uYW1lOiJQb3BvdmVyQW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtDKCk7Y29uc3QgZT1MKCk7cmV0dXJuIGd0KCgpPT57ZS5oYXNDdXN0b21BbmNob3IudmFsdWU9ITB9KSxZKCgpPT57ZS5oYXNDdXN0b21BbmNob3IudmFsdWU9ITF9KSwoYSxsKT0+KF8oKSxtKHQoc2UpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx4cj1JcixScj1oKHtfX25hbWU6IlBvcG92ZXJBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4gQygpLChlLGEpPT4oXygpLG0odCh5ZSksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEFyPVJyLEZyPWgoe19fbmFtZToiUG9wb3ZlckNsb3NlIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChyKXtjb25zdCBvPXI7QygpO2NvbnN0IGU9TCgpO3JldHVybihhLGwpPT4oXygpLG0odChSKSx7dHlwZTphLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLGFzOmEuYXMsImFzLWNoaWxkIjpvLmFzQ2hpbGQsb25DbGljazpsWzBdfHwobFswXT1zPT50KGUpLm9uT3BlbkNoYW5nZSghMSkpfSx7ZGVmYXVsdDpmKCgpPT5bcShhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidHlwZSIsImFzIiwiYXMtY2hpbGQiXSkpfX0pLEVyPUZyLFRyPWgoe19fbmFtZToiUG9wb3ZlckNvbnRlbnRJbXBsIixwcm9wczp7dHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGE9byxsPVEodWUoZSwidHJhcEZvY3VzIiwiZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzIikpLHtmb3J3YXJkUmVmOnN9PUMoKSxuPUwoKTtyZXR1cm4geGUoKSwodSxkKT0+KF8oKSxtKHQoRmUpLHsiYXMtY2hpbGQiOiIiLGxvb3A6IiIsdHJhcHBlZDp1LnRyYXBGb2N1cyxvbk1vdW50QXV0b0ZvY3VzOmRbNV18fChkWzVdPXA9PmEoIm9wZW5BdXRvRm9jdXMiLHApKSxvblVubW91bnRBdXRvRm9jdXM6ZFs2XXx8KGRbNl09cD0+YSgiY2xvc2VBdXRvRm9jdXMiLHApKX0se2RlZmF1bHQ6ZigoKT0+W2sodCh2ZSkseyJhcy1jaGlsZCI6IiIsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6dS5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsb25Qb2ludGVyRG93bk91dHNpZGU6ZFswXXx8KGRbMF09cD0+YSgicG9pbnRlckRvd25PdXRzaWRlIixwKSksb25JbnRlcmFjdE91dHNpZGU6ZFsxXXx8KGRbMV09cD0+YSgiaW50ZXJhY3RPdXRzaWRlIixwKSksb25Fc2NhcGVLZXlEb3duOmRbMl18fChkWzJdPXA9PmEoImVzY2FwZUtleURvd24iLHApKSxvbkZvY3VzT3V0c2lkZTpkWzNdfHwoZFszXT1wPT5hKCJmb2N1c091dHNpZGUiLHApKSxvbkRpc21pc3M6ZFs0XXx8KGRbNF09cD0+dChuKS5vbk9wZW5DaGFuZ2UoITEpKX0se2RlZmF1bHQ6ZigoKT0+W2sodChnZSksTSh0KGwpLHtpZDp0KG4pLmNvbnRlbnRJZCxyZWY6dChzKSwiZGF0YS1zdGF0ZSI6dChuKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiYXJpYS1sYWJlbGxlZGJ5Ijp0KG4pLnRyaWdnZXJJZCxzdHlsZTp7Ii0tcmVrYS1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbiI6InZhcigtLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pIiwiLS1yZWthLXBvcG92ZXItY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLXBvcG92ZXItY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCkiLCItLXJla2EtcG9wb3Zlci10cmlnZ2VyLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLXdpZHRoKSIsIi0tcmVrYS1wb3BvdmVyLXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifSxyb2xlOiJkaWFsb2cifSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImRhdGEtc3RhdGUiLCJhcmlhLWxhYmVsbGVkYnkiXSldKSxfOjN9LDgsWyJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSldKSxfOjN9LDgsWyJ0cmFwcGVkIl0pKX19KSxVZT1UcixOcj1oKHtfX25hbWU6IlBvcG92ZXJDb250ZW50TW9kYWwiLHByb3BzOntzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD1MKCkscz13KCExKTtSZSghMCk7Y29uc3Qgbj1BKGUsYSkse2ZvcndhcmRSZWY6dSxjdXJyZW50RWxlbWVudDpkfT1DKCk7cmV0dXJuIEVlKGQpLChwLGkpPT4oXygpLG0oVWUsTSh0KG4pLHtyZWY6dCh1KSwidHJhcC1mb2N1cyI6dChsKS5vcGVuLnZhbHVlLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOiIiLG9uQ2xvc2VBdXRvRm9jdXM6aVswXXx8KGlbMF09SChjPT57YSgiY2xvc2VBdXRvRm9jdXMiLGMpLHMudmFsdWV8fHQobCkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCl9LFsicHJldmVudCJdKSksb25Qb2ludGVyRG93bk91dHNpZGU6aVsxXXx8KGlbMV09Yz0+e2EoInBvaW50ZXJEb3duT3V0c2lkZSIsYyk7Y29uc3Qgdj1jLmRldGFpbC5vcmlnaW5hbEV2ZW50LGI9di5idXR0b249PT0wJiZ2LmN0cmxLZXk9PT0hMCxnPXYuYnV0dG9uPT09Mnx8YjtzLnZhbHVlPWd9KSxvbkZvY3VzT3V0c2lkZTppWzJdfHwoaVsyXT1IKCgpPT57fSxbInByZXZlbnQiXSkpfSkse2RlZmF1bHQ6ZigoKT0+W3EocC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxLcj1Ociwkcj1oKHtfX25hbWU6IlBvcG92ZXJDb250ZW50Tm9uTW9kYWwiLHByb3BzOntzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD1MKCkscz13KCExKSxuPXcoITEpLHU9QShlLGEpO3JldHVybihkLHApPT4oXygpLG0oVWUsTSh0KHUpLHsidHJhcC1mb2N1cyI6ITEsImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyI6ITEsb25DbG9zZUF1dG9Gb2N1czpwWzBdfHwocFswXT1pPT57YSgiY2xvc2VBdXRvRm9jdXMiLGkpLGkuZGVmYXVsdFByZXZlbnRlZHx8KHMudmFsdWV8fHQobCkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCksaS5wcmV2ZW50RGVmYXVsdCgpKSxzLnZhbHVlPSExLG4udmFsdWU9ITF9KSxvbkludGVyYWN0T3V0c2lkZTpwWzFdfHwocFsxXT1hc3luYyBpPT57YSgiaW50ZXJhY3RPdXRzaWRlIixpKSxpLmRlZmF1bHRQcmV2ZW50ZWR8fChzLnZhbHVlPSEwLGkuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZT09PSJwb2ludGVyZG93biImJihuLnZhbHVlPSEwKSk7Y29uc3QgYz1pLnRhcmdldDt0KGwpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyhjKSYmaS5wcmV2ZW50RGVmYXVsdCgpLGkuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZT09PSJmb2N1c2luIiYmbi52YWx1ZSYmaS5wcmV2ZW50RGVmYXVsdCgpfSl9KSx7ZGVmYXVsdDpmKCgpPT5bcShkLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFZyPSRyLExyPWgoe19fbmFtZToiUG9wb3ZlckNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGE9byxsPUwoKSxzPUEoZSxhKSx7Zm9yd2FyZFJlZjpufT1DKCk7cmV0dXJuIGwuY29udGVudElkfHw9JCh2b2lkIDAsInJla2EtcG9wb3Zlci1jb250ZW50IiksKHUsZCk9PihfKCksbSh0KEopLHtwcmVzZW50OnUuZm9yY2VNb3VudHx8dChsKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpmKCgpPT5bdChsKS5tb2RhbC52YWx1ZT8oXygpLG0oS3IsTSh7a2V5OjB9LHQocykse3JlZjp0KG4pfSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooXygpLG0oVnIsTSh7a2V5OjF9LHQocykse3JlZjp0KG4pfSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLEdyPUxyLFVyPWgoe19fbmFtZToiUG9wb3ZlclBvcnRhbCIscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4oZSxhKT0+KF8oKSxtKHQobWUpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxIcj1Vcixqcj1oKHtfX25hbWU6IlBvcG92ZXJUcmlnZ2VyIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChyKXtjb25zdCBvPXIsZT1MKCkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpsfT1DKCk7cmV0dXJuIGUudHJpZ2dlcklkfHw9JCh2b2lkIDAsInJla2EtcG9wb3Zlci10cmlnZ2VyIiksaigoKT0+e2UudHJpZ2dlckVsZW1lbnQudmFsdWU9bC52YWx1ZX0pLChzLG4pPT4oXygpLG0oX3QodChlKS5oYXNDdXN0b21BbmNob3IudmFsdWU/dChSKTp0KHNlKSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmYoKCk9PltrKHQoUikse2lkOnQoZSkudHJpZ2dlcklkLHJlZjp0KGEpLHR5cGU6cy5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXJpYS1oYXNwb3B1cCI6ImRpYWxvZyIsImFyaWEtZXhwYW5kZWQiOnQoZSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6dChlKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOnQoZSkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsYXM6cy5hcywiYXMtY2hpbGQiOm8uYXNDaGlsZCxvbkNsaWNrOnQoZSkub25PcGVuVG9nZ2xlfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiaWQiLCJ0eXBlIiwiYXJpYS1leHBhbmRlZCIsImFyaWEtY29udHJvbHMiLCJkYXRhLXN0YXRlIiwiYXMiLCJhcy1jaGlsZCIsIm9uQ2xpY2siXSldKSxfOjN9KSl9fSksenI9anIsV3I9aCh7X19uYW1lOiJEcm9wZG93bk1lbnVBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4gQygpLChlLGEpPT4oXygpLG0odChLdCksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFhyPVdyLFlyPWgoe19fbmFtZToiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCIsInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGw9cWUobyk7cmV0dXJuIEMoKSwocyxuKT0+KF8oKSxtKHQoUXQpLFMoTyh7Li4uZSwuLi50KGwpfSkpLHtkZWZhdWx0OmYoKCk9PltxKHMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksWnI9WXI7Y29uc3RbSGUsSnJdPVQoIkRyb3Bkb3duTWVudVJvb3QiKTt2YXIgUXI9aCh7X19uYW1lOiJEcm9wZG93bk1lbnVSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGE9bztDKCk7Y29uc3QgbD1OKGUsIm9wZW4iLGEse2RlZmF1bHRWYWx1ZTplLmRlZmF1bHRPcGVuLHBhc3NpdmU6ZS5vcGVuPT09dm9pZCAwfSkscz13KCkse21vZGFsOm4sZGlyOnV9PXooZSksZD1JZSh1KTtyZXR1cm4gSnIoe29wZW46bCxvbk9wZW5DaGFuZ2U6cD0+e2wudmFsdWU9cH0sb25PcGVuVG9nZ2xlOigpPT57bC52YWx1ZT0hbC52YWx1ZX0sdHJpZ2dlcklkOiIiLHRyaWdnZXJFbGVtZW50OnMsY29udGVudElkOiIiLG1vZGFsOm4sZGlyOmR9KSwocCxpKT0+KF8oKSxtKHQoVXQpLHtvcGVuOnQobCksIm9uVXBkYXRlOm9wZW4iOmlbMF18fChpWzBdPWM9PlRlKGwpP2wudmFsdWU9YzpudWxsKSxkaXI6dChkKSxtb2RhbDp0KG4pfSx7ZGVmYXVsdDpmKCgpPT5bcShwLiRzbG90cywiZGVmYXVsdCIse29wZW46dChsKX0pXSksXzozfSw4LFsib3BlbiIsImRpciIsIm1vZGFsIl0pKX19KSxlbz1Rcix0bz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudUNvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgbD1BKHIsbyk7QygpO2NvbnN0IHM9SGUoKSxuPXcoITEpO2Z1bmN0aW9uIHUoZCl7ZC5kZWZhdWx0UHJldmVudGVkfHwobi52YWx1ZXx8c2V0VGltZW91dCgoKT0+e3MudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKCl9LDApLG4udmFsdWU9ITEsZC5wcmV2ZW50RGVmYXVsdCgpKX1yZXR1cm4gcy5jb250ZW50SWR8fD0kKHZvaWQgMCwicmVrYS1kcm9wZG93bi1tZW51LWNvbnRlbnQiKSwoZCxwKT0+KF8oKSxtKHQobnIpLE0odChsKSx7aWQ6dChzKS5jb250ZW50SWQsImFyaWEtbGFiZWxsZWRieSI6dChzKT8udHJpZ2dlcklkLHN0eWxlOnsiLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9LG9uQ2xvc2VBdXRvRm9jdXM6dSxvbkludGVyYWN0T3V0c2lkZTpwWzBdfHwocFswXT1pPT57aWYoaS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCBjPWkuZGV0YWlsLm9yaWdpbmFsRXZlbnQsdj1jLmJ1dHRvbj09PTAmJmMuY3RybEtleT09PSEwLGI9Yy5idXR0b249PT0yfHx2OyghdChzKS5tb2RhbC52YWx1ZXx8YikmJihuLnZhbHVlPSEwKSx0KHMpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5jb250YWlucyhpLnRhcmdldCkmJmkucHJldmVudERlZmF1bHQoKX0pfSkse2RlZmF1bHQ6ZigoKT0+W3EoZC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSJdKSl9fSkscm89dG8sb289aCh7X19uYW1lOiJEcm9wZG93bk1lbnVGaWx0ZXIiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbnB1dCJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGw9TihlLCJtb2RlbFZhbHVlIixvLHtkZWZhdWx0VmFsdWU6IiIscGFzc2l2ZTplLm1vZGVsVmFsdWU9PT12b2lkIDB9KSxzPVcoKSxuPWVlKCksdT13ZShudWxsKTtuZShsLGc9PntuLnNlYXJjaFJlZi52YWx1ZT1nPz8iIn0se2ltbWVkaWF0ZTohMH0pO2NvbnN0e3ByaW1pdGl2ZUVsZW1lbnQ6ZCxjdXJyZW50RWxlbWVudDpwfT1xdCgpLGk9WigoKT0+ZS5kaXNhYmxlZHx8ITEpLGM9dygpO210KCgpPT5jLnZhbHVlPW4uaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPy5pZCksaigoKT0+e24ub25GaWx0ZXJFbGVtZW50Q2hhbmdlKHAudmFsdWUpLHNldFRpbWVvdXQoKCk9PntlLmF1dG9Gb2N1cyYmKCF1fHxzLmlzVXNpbmdLZXlib2FyZFJlZi52YWx1ZSkmJnAudmFsdWU/LmZvY3VzKCl9LDEpfSksWSgoKT0+e24ub25GaWx0ZXJFbGVtZW50Q2hhbmdlKHZvaWQgMCksbi5zZWFyY2hSZWYudmFsdWU9IiJ9KTtmdW5jdGlvbiB2KGcpe2lmKGkudmFsdWUpcmV0dXJuO2NvbnN0IFA9Zy50YXJnZXQ7bC52YWx1ZT1QLnZhbHVlLG4uc2VhcmNoUmVmLnZhbHVlPVAudmFsdWV9ZnVuY3Rpb24gYihnKXtpLnZhbHVlfHwoWyJBcnJvd0Rvd24iLCJBcnJvd1VwIiwiSG9tZSIsIkVuZCJdLmluY2x1ZGVzKGcua2V5KT8oZy5wcmV2ZW50RGVmYXVsdCgpLG4ub25LZXlkb3duTmF2aWdhdGlvbihnKSk6Zy5rZXk9PT0iRW50ZXIiPyhnLnByZXZlbnREZWZhdWx0KCksbi5vbktleWRvd25FbnRlcihnKSk6Zy5rZXk9PT0iRXNjYXBlIiYmbC52YWx1ZSYmKGcuc3RvcFByb3BhZ2F0aW9uKCksbC52YWx1ZT0iIixuLnNlYXJjaFJlZi52YWx1ZT0iIikpfXJldHVybihnLFApPT4oXygpLG0odChSKSx7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOmQsYXM6Zy5hcywiYXMtY2hpbGQiOmcuYXNDaGlsZCx2YWx1ZTp0KGwpLGRpc2FibGVkOmkudmFsdWU/IiI6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjppLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1kaXNhYmxlZCI6aS52YWx1ZT8hMDp2b2lkIDAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6Yy52YWx1ZSx0eXBlOiJ0ZXh0Iixyb2xlOiJzZWFyY2hib3giLG9uSW5wdXQ6dixvbktleWRvd246Yn0se2RlZmF1bHQ6ZigoKT0+W3EoZy4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOnQobCl9KV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiLCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiXSkpfX0pLGFvPW9vLG5vPWgoe19fbmFtZToiRHJvcGRvd25NZW51R3JvdXAiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuIEMoKSwoZSxhKT0+KF8oKSxtKHQoR2UpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxzbz1ubyxsbz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudUl0ZW0iLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInNlbGVjdCJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixsPXFlKG8pO3JldHVybiBDKCksKHMsbik9PihfKCksbSh0KGJlKSxTKE8oey4uLmUsLi4udChsKX0pKSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHVvPWxvLGlvPWgoe19fbmFtZToiRHJvcGRvd25NZW51SXRlbUluZGljYXRvciIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybiBDKCksKGUsYSk9PihfKCksbSh0KFp0KSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSkscG89aW8sZm89aCh7X19uYW1lOiJEcm9wZG93bk1lbnVMYWJlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IG89cjtyZXR1cm4gQygpLChlLGEpPT4oXygpLG0odChkciksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLGNvPWZvLHlvPWgoe19fbmFtZToiRHJvcGRvd25NZW51UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybihlLGEpPT4oXygpLG0odChmciksUyhPKG8pKSx7ZGVmYXVsdDpmKCgpPT5bcShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHZvPXlvLGdvPWgoe19fbmFtZToiRHJvcGRvd25NZW51UmFkaW9Hcm91cCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixsPXFlKG8pO3JldHVybiBDKCksKHMsbik9PihfKCksbSh0KGdyKSxTKE8oey4uLmUsLi4udChsKX0pKSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLF9vPWdvLG1vPWgoe19fbmFtZToiRHJvcGRvd25NZW51UmFkaW9JdGVtIixwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJzZWxlY3QiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBsPUEocixvKTtyZXR1cm4gQygpLChzLG4pPT4oXygpLG0odChtciksUyhPKHQobCkpKSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHFvPW1vLGhvPWgoe19fbmFtZToiRHJvcGRvd25NZW51U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybiBDKCksKGUsYSk9PihfKCksbSh0KGhyKSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksYm89aG8sd289aCh7X19uYW1lOiJEcm9wZG93bk1lbnVTdWIiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAocix7ZW1pdDpvfSl7Y29uc3QgZT1yLGw9TihlLCJvcGVuIixvLHtwYXNzaXZlOmUub3Blbj09PXZvaWQgMCxkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0T3Blbj8/ITF9KTtyZXR1cm4gQygpLChzLG4pPT4oXygpLG0odChDcikse29wZW46dChsKSwib25VcGRhdGU6b3BlbiI6blswXXx8KG5bMF09dT0+VGUobCk/bC52YWx1ZT11Om51bGwpfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIse29wZW46dChsKX0pXSksXzozfSw4LFsib3BlbiJdKSl9fSksQ289d28sQm89aCh7X19uYW1lOiJEcm9wZG93bk1lbnVTdWJDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZW50cnlGb2N1cyIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGw9QShyLG8pO3JldHVybiBDKCksKHMsbik9PihfKCksbSh0KFByKSxNKHQobCkse3N0eWxlOnsiLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9fSkse2RlZmF1bHQ6ZigoKT0+W3Eocy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxQbz1CbyxTbz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudVN1YlRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuIEMoKSwoZSxhKT0+KF8oKSxtKHQoTXIpLFMoTyhvKSkse2RlZmF1bHQ6ZigoKT0+W3EoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxNbz1TbyxPbz1oKHtfX25hbWU6IkRyb3Bkb3duTWVudVRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKHIpe2NvbnN0IG89cixlPUhlKCkse2ZvcndhcmRSZWY6YSxjdXJyZW50RWxlbWVudDpsfT1DKCk7cmV0dXJuIGooKCk9PntlLnRyaWdnZXJFbGVtZW50PWx9KSxlLnRyaWdnZXJJZHx8PSQodm9pZCAwLCJyZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlciIpLChzLG4pPT4oXygpLG0odChLZSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmYoKCk9PltrKHQoUikse2lkOnQoZSkudHJpZ2dlcklkLHJlZjp0KGEpLHR5cGU6cy5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXMtY2hpbGQiOm8uYXNDaGlsZCxhczpzLmFzLCJhcmlhLWhhc3BvcHVwIjoibWVudSIsImFyaWEtZXhwYW5kZWQiOnQoZSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6dChlKS5vcGVuLnZhbHVlP3QoZSkuY29udGVudElkOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6cy5kaXNhYmxlZD8iIjp2b2lkIDAsZGlzYWJsZWQ6cy5kaXNhYmxlZCwiZGF0YS1zdGF0ZSI6dChlKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIixvbkNsaWNrOm5bMF18fChuWzBdPWFzeW5jIHU9Pnshcy5kaXNhYmxlZCYmdS5idXR0b249PT0wJiZ1LmN0cmxLZXk9PT0hMSYmKHQoZSk/Lm9uT3BlblRvZ2dsZSgpLGF3YWl0IEsoKSx0KGUpLm9wZW4udmFsdWUmJnUucHJldmVudERlZmF1bHQoKSl9KSxvbktleWRvd246blsxXXx8KG5bMV09aHQodT0+e3MuZGlzYWJsZWR8fChbIkVudGVyIiwiICJdLmluY2x1ZGVzKHUua2V5KSYmdChlKS5vbk9wZW5Ub2dnbGUoKSx1LmtleT09PSJBcnJvd0Rvd24iJiZ0KGUpLm9uT3BlbkNoYW5nZSghMCksWyJFbnRlciIsIiAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyh1LmtleSkmJnUucHJldmVudERlZmF1bHQoKSl9LFsiZW50ZXIiLCJzcGFjZSIsImFycm93LWRvd24iXSkpfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiaWQiLCJ0eXBlIiwiYXMtY2hpbGQiLCJhcyIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1kaXNhYmxlZCIsImRpc2FibGVkIiwiZGF0YS1zdGF0ZSJdKV0pLF86M30pKX19KSxEbz1Pbyxrbz1oKHtfX25hbWU6IkhvdmVyQ2FyZEFycm93Iixwcm9wczp7d2lkdGg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1fSxyb3VuZGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzdmcifX0sc2V0dXAocil7Y29uc3Qgbz1yO3JldHVybiBDKCksKGUsYSk9PihfKCksbSh0KHllKSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksSW89a287Y29uc3RbQ2UseG9dPVQoIkhvdmVyQ2FyZFJvb3QiKTt2YXIgUm89aCh7X19uYW1lOiJIb3ZlckNhcmRSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LG9wZW5EZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo3MDB9LGNsb3NlRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MzAwfX0sZW1pdHM6WyJ1cGRhdGU6b3BlbiJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8se29wZW5EZWxheTpsLGNsb3NlRGVsYXk6c309eihlKTtDKCk7Y29uc3Qgbj1OKGUsIm9wZW4iLGEse2RlZmF1bHRWYWx1ZTplLmRlZmF1bHRPcGVuLHBhc3NpdmU6ZS5vcGVuPT09dm9pZCAwfSksdT13KDApLGQ9dygwKSxwPXcoITEpLGk9dyghMSksYz13KCExKSx2PXcoKTtmdW5jdGlvbiBiKCl7Y2xlYXJUaW1lb3V0KGQudmFsdWUpLHUudmFsdWU9d2luZG93LnNldFRpbWVvdXQoKCk9Pm4udmFsdWU9ITAsbC52YWx1ZSl9ZnVuY3Rpb24gZygpe2NsZWFyVGltZW91dCh1LnZhbHVlKSwhcC52YWx1ZSYmIWkudmFsdWUmJihkLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT5uLnZhbHVlPSExLHMudmFsdWUpKX1mdW5jdGlvbiBQKCl7bi52YWx1ZT0hMX1yZXR1cm4geG8oe29wZW46bixvbk9wZW5DaGFuZ2UoSSl7bi52YWx1ZT1JfSxvbk9wZW46YixvbkNsb3NlOmcsb25EaXNtaXNzOlAsaGFzU2VsZWN0aW9uUmVmOnAsaXNQb2ludGVyRG93bk9uQ29udGVudFJlZjppLGlzUG9pbnRlckluVHJhbnNpdFJlZjpjLHRyaWdnZXJFbGVtZW50OnZ9KSwoSSxGKT0+KF8oKSxtKHQobGUpLG51bGwse2RlZmF1bHQ6ZigoKT0+W3EoSS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnQobil9KV0pLF86M30pKX19KSxBbz1SbztmdW5jdGlvbiBjZShyKXtyZXR1cm4gbz0+by5wb2ludGVyVHlwZT09PSJ0b3VjaCI/dm9pZCAwOnIoKX1mdW5jdGlvbiBGbyhyKXtjb25zdCBvPVtdLGU9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyLE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULHthY2NlcHROb2RlOmE9PmEudGFiSW5kZXg+PTA/Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOk5vZGVGaWx0ZXIuRklMVEVSX1NLSVB9KTtmb3IoO2UubmV4dE5vZGUoKTspby5wdXNoKGUuY3VycmVudE5vZGUpO3JldHVybiBvfXZhciBFbz1oKHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnRJbXBsIixwcm9wczp7c2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKHIse2VtaXQ6b30pe2NvbnN0IGU9cixhPW8sbD1RKGUpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6bn09QygpLHU9Q2UoKSx7aXNQb2ludGVySW5UcmFuc2l0OmQsb25Qb2ludGVyRXhpdDpwfT1rdCh1LnRyaWdnZXJFbGVtZW50LG4pO2J0KHUuaXNQb2ludGVySW5UcmFuc2l0UmVmLGQse2RpcmVjdGlvbjoicnRsIn0pLHAoKCk9Pnt1Lm9uQ2xvc2UoKX0pO2NvbnN0IGk9dyghMSk7bGV0IGM7YWUoYj0+e2lmKGkudmFsdWUpe2NvbnN0IGc9ZG9jdW1lbnQuYm9keTtjPWcuc3R5bGUudXNlclNlbGVjdHx8Zy5zdHlsZS53ZWJraXRVc2VyU2VsZWN0LGcuc3R5bGUudXNlclNlbGVjdD0ibm9uZSIsZy5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PSJub25lIixiKCgpPT57Zy5zdHlsZS51c2VyU2VsZWN0PWMsZy5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PWN9KX19KTtmdW5jdGlvbiB2KCl7aS52YWx1ZT0hMSx1LmlzUG9pbnRlckRvd25PbkNvbnRlbnRSZWYudmFsdWU9ITEsSygoKT0+e2RvY3VtZW50LmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpIT09IiImJih1Lmhhc1NlbGVjdGlvblJlZi52YWx1ZT0hMCl9KX1yZXR1cm4gaigoKT0+e24udmFsdWUmJihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHYpLEZvKG4udmFsdWUpLmZvckVhY2goZz0+Zy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSkpLHBlKHdpbmRvdywic2Nyb2xsIixiPT57Yi50YXJnZXQ/LmNvbnRhaW5zKHUudHJpZ2dlckVsZW1lbnQudmFsdWUpJiZ1Lm9uRGlzbWlzcygpfSx7Y2FwdHVyZTohMH0pfSksWSgoKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdiksdS5oYXNTZWxlY3Rpb25SZWYudmFsdWU9ITEsdS5pc1BvaW50ZXJEb3duT25Db250ZW50UmVmLnZhbHVlPSExfSksKGIsZyk9PihfKCksbSh0KHZlKSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMSxvbkVzY2FwZUtleURvd246Z1sxXXx8KGdbMV09UD0+YSgiZXNjYXBlS2V5RG93biIsUCkpLG9uUG9pbnRlckRvd25PdXRzaWRlOmdbMl18fChnWzJdPVA9PmEoInBvaW50ZXJEb3duT3V0c2lkZSIsUCkpLG9uRm9jdXNPdXRzaWRlOmdbM118fChnWzNdPUgoUD0+YSgiZm9jdXNPdXRzaWRlIixQKSxbInByZXZlbnQiXSkpLG9uRGlzbWlzczp0KHUpLm9uRGlzbWlzc30se2RlZmF1bHQ6ZigoKT0+W2sodChnZSksTSh7Li4udChsKSwuLi5iLiRhdHRyc30se3JlZjp0KHMpLCJkYXRhLXN0YXRlIjp0KHUpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLHN0eWxlOnt1c2VyU2VsZWN0OmkudmFsdWU/InRleHQiOnZvaWQgMCxXZWJraXRVc2VyU2VsZWN0OmkudmFsdWU/InRleHQiOnZvaWQgMCwiLS1yZWthLWhvdmVyLWNhcmQtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtaG92ZXItY2FyZC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCkiLCItLXJla2EtaG92ZXItY2FyZC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmVrYS1ob3Zlci1jYXJkLXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWhvdmVyLWNhcmQtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0KSJ9LG9uUG9pbnRlcmRvd246Z1swXXx8KGdbMF09UD0+e1AuY3VycmVudFRhcmdldC5jb250YWlucyhQLnRhcmdldCkmJihpLnZhbHVlPSEwKSx0KHUpLmhhc1NlbGVjdGlvblJlZi52YWx1ZT0hMSx0KHUpLmlzUG9pbnRlckRvd25PbkNvbnRlbnRSZWYudmFsdWU9ITB9KX0pLHtkZWZhdWx0OmYoKCk9PltxKGIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsInN0eWxlIl0pXSksXzozfSw4LFsib25EaXNtaXNzIl0pKX19KSxUbz1FbyxObz1oKHtfX25hbWU6IkhvdmVyQ2FyZENvbnRlbnQiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cChyLHtlbWl0Om99KXtjb25zdCBsPUEocixvKSx7Zm9yd2FyZFJlZjpzfT1DKCksbj1DZSgpO3JldHVybih1LGQpPT4oXygpLG0odChKKSx7cHJlc2VudDp1LmZvcmNlTW91bnR8fHQobikub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZigoKT0+W2soVG8sTSh0KGwpLHtyZWY6dChzKSxvblBvaW50ZXJlbnRlcjpkWzBdfHwoZFswXT1wPT50KGNlKSh0KG4pLm9uT3BlbikocCkpfSkse2RlZmF1bHQ6ZigoKT0+W3EodS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksS289Tm8sJG89aCh7X19uYW1lOiJIb3ZlckNhcmRQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBvPXI7cmV0dXJuKGUsYSk9PihfKCksbSh0KG1lKSxTKE8obykpLHtkZWZhdWx0OmYoKCk9PltxKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksVm89JG8sTG89aCh7X19uYW1lOiJIb3ZlckNhcmRUcmlnZ2VyIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJhIn19LHNldHVwKHIpe2NvbnN0e2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDplfT1DKCksYT1DZSgpO2EudHJpZ2dlckVsZW1lbnQ9ZTtmdW5jdGlvbiBsKCl7c2V0VGltZW91dCgoKT0+eyFhLmlzUG9pbnRlckluVHJhbnNpdFJlZi52YWx1ZSYmIWEub3Blbi52YWx1ZSYmYS5vbkNsb3NlKCl9LDApfXJldHVybihzLG4pPT4oXygpLG0odChzZSkseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOnMucmVmZXJlbmNlfSx7ZGVmYXVsdDpmKCgpPT5bayh0KFIpLHtyZWY6dChvKSwiYXMtY2hpbGQiOnMuYXNDaGlsZCxhczpzLmFzLCJkYXRhLXN0YXRlIjp0KGEpLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLCJkYXRhLWdyYWNlLWFyZWEtdHJpZ2dlciI6IiIsb25Qb2ludGVyZW50ZXI6blswXXx8KG5bMF09dT0+dChjZSkodChhKS5vbk9wZW4pKHUpKSxvblBvaW50ZXJsZWF2ZTpuWzFdfHwoblsxXT11PT50KGNlKShsKSh1KSksb25Gb2N1czpuWzJdfHwoblsyXT11PT50KGEpLm9uT3BlbigpKSxvbkJsdXI6blszXXx8KG5bM109dT0+dChhKS5vbkNsb3NlKCkpfSx7ZGVmYXVsdDpmKCgpPT5bcShzLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyIsImRhdGEtc3RhdGUiXSldKSxfOjN9LDgsWyJyZWZlcmVuY2UiXSkpfX0pLEdvPUxvO2NvbnN0IFhvPXtSb290OmVvLFRyaWdnZXI6RG8sUG9ydGFsOnZvLENvbnRlbnQ6cm8sQXJyb3c6WHIsSXRlbTp1byxHcm91cDpzbyxTZXBhcmF0b3I6Ym8sQ2hlY2tib3hJdGVtOlpyLEl0ZW1JbmRpY2F0b3I6cG8sTGFiZWw6Y28sUmFkaW9Hcm91cDpfbyxSYWRpb0l0ZW06cW8sU3ViOkNvLFN1YkNvbnRlbnQ6UG8sU3ViVHJpZ2dlcjpNbyxGaWx0ZXI6YW99LFlvPXtSb290OkFvLFRyaWdnZXI6R28sUG9ydGFsOlZvLENvbnRlbnQ6S28sQXJyb3c6SW99LFpvPXtSb290OmtyLFRyaWdnZXI6enIsUG9ydGFsOkhyLENvbnRlbnQ6R3IsQXJyb3c6QXIsQ2xvc2U6RXIsQW5jaG9yOnhyfSxyZT17bWV0YToiIixjdHJsOiIiLGFsdDoiIix3aW46IuKKniIsY29tbWFuZDoi4oyYIixzaGlmdDoi4oenIixjb250cm9sOiLijIMiLG9wdGlvbjoi4oylIixlbnRlcjoi4oa1IixkZWxldGU6IuKMpiIsYmFja3NwYWNlOiLijKsiLGVzY2FwZToiRXNjIix0YWI6IuKHpSIsY2Fwc2xvY2s6IuKHqiIsYXJyb3d1cDoi4oaRIixhcnJvd3JpZ2h0OiLihpIiLGFycm93ZG93bjoi4oaTIixhcnJvd2xlZnQ6IuKGkCIscGFnZXVwOiLih54iLHBhZ2Vkb3duOiLih58iLGhvbWU6IuKGliIsZW5kOiLihpgifSxVbz0oKT0+e2NvbnN0IHI9WigoKT0+bmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9NYWNpbnRvc2g7LykpLG89d3Qoe21ldGE6IiAiLGFsdDoiICIsY3RybDoiICJ9KTtqKCgpPT57by5tZXRhPXIudmFsdWU/cmUuY29tbWFuZDoiQ3RybCIsby5jdHJsPXIudmFsdWU/cmUuY29udHJvbDoiQ3RybCIsby5hbHQ9ci52YWx1ZT9yZS5vcHRpb246IkFsdCJ9KTtmdW5jdGlvbiBlKGEpe2lmKGEpcmV0dXJuWyJtZXRhIiwiYWx0IiwiY3RybCJdLmluY2x1ZGVzKGEpP29bYV06cmVbYV18fGF9cmV0dXJue21hY09TOnIsZ2V0S2JkS2V5OmV9fSxIbz1rZShVbyksam89e2Jhc2U6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0xIHJvdW5kZWQtc20gZm9udC1tZWRpdW0gZm9udC1zYW5zIHVwcGVyY2FzZSIsdmFyaWFudHM6e2NvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIifSxzaXplOntzbToiaC00IG1pbi13LVsxNnB4XSB0ZXh0LVsxMHB4XSIsbWQ6ImgtNSBtaW4tdy1bMjBweF0gdGV4dC1bMTFweF0iLGxnOiJoLTYgbWluLXctWzI0cHhdIHRleHQtWzEycHhdIn19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvNTAgdGV4dC1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAgdGV4dC1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIHRleHQtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vNTAgdGV4dC1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCB0ZXh0LXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvNTAgdGV4dC1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtcHJpbWFyeSBiZy1wcmltYXJ5LzEwIn0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSBiZy1zZWNvbmRhcnkvMTAifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgYmctc3VjY2Vzcy8xMCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtaW5mbyBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC13YXJuaW5nIGJnLXdhcm5pbmcvMTAifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1lcnJvciBiZy1lcnJvci8xMCJ9LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvMjUgYmctcHJpbWFyeS8xMCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUgYmctc2Vjb25kYXJ5LzEwIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSBiZy1zdWNjZXNzLzEwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWluZm8gcmluZyByaW5nLWluc2V0IHJpbmctaW5mby8yNSBiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy8yNSBiZy13YXJuaW5nLzEwIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1lcnJvciByaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci8yNSBiZy1lcnJvci8xMCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9XSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6Im91dGxpbmUiLGNvbG9yOiJuZXV0cmFsIixzaXplOiJtZCJ9fSxKbz17X19uYW1lOiJVS2JkIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJrYmQifSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAocil7Y29uc3Qgbz1yLHtnZXRLYmRLZXk6ZX09SG8oKSxhPUN0KCksbD1CdCgia2JkIixvKSxzPVooKCk9Pk9lKHtleHRlbmQ6T2Uoam8pLC4uLmEudWk/LmtiZHx8e319KSk7cmV0dXJuKG4sdSk9PihfKCksbSh0KFIpLHthczpyLmFzLGNsYXNzOk10KHMudmFsdWUoe2NsYXNzOlt0KGwpPy5iYXNlLG8uY2xhc3NdLGNvbG9yOm8uY29sb3IsdmFyaWFudDpvLnZhcmlhbnQsc2l6ZTpvLnNpemV9KSl9LHtkZWZhdWx0OmYoKCk9PltxKG4uJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W1B0KFN0KHQoZSkoci52YWx1ZSkpLDEpXSldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19O2V4cG9ydHtYbyBhcyBELFlvIGFzIEgsWm8gYXMgUCxKbyBhcyBfLERlIGFzIGEsRG8gYXMgYixYciBhcyBjLGVvIGFzIGQsa3QgYXMgZSxIbyBhcyB1fTsK", "/_nuxt/CYmlMIXz.js": "aW1wb3J0e18gYXMgTn1mcm9tIi4vQjFNZUxyaTMuanMiO2ltcG9ydHtfIGFzIFN9ZnJvbSIuL0NBVUFYNVZyLmpzIjtpbXBvcnR7ZiBhcyBDLG4gYXMgRSxnIGFzIFIscCBhcyAkLFIgYXMgaix6IGFzIEEsbyBhcyB5LGMgYXMgdixiIGFzIHQsdyBhcyBsLEQgYXMgQixpIGFzIHMsRiBhcyBMLHEgYXMgTSxqIGFzIFAsYSBhcyBjLGQgYXMgdSxHIGFzIFksViBhcyBxLHIgYXMgd31mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydCIuL20yMGtkR3hVLmpzIjtjb25zdCB6PXtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LEg9Qyh7X19uYW1lOiJub3RpZmljYXRpb25zIixzZXR1cChHKXtjb25zdCBkPUUoKSxtPVIoKSxwPXtlbWFpbDohMCxwcm9kdWN0X3VwZGF0ZXM6ITAsd2Vla2x5X2RpZ2VzdDohMSxpbXBvcnRhbnRfdXBkYXRlczohMH0sYT13KHsuLi5wfSksbj13KCExKSx7ZGF0YTpVLGVycm9yOmt9PSQoInVzZXItbm90aWZpY2F0aW9uLXByZWZzIiwoKT0+ZC5mZXRjaFVzZXJOb3RpZmljYXRpb25TZXR0aW5ncygpLHtkZWZhdWx0OigpPT4oey4uLnB9KX0pO2ooVSxpPT57aSYmKGEudmFsdWU9ey4uLml9KX0se2ltbWVkaWF0ZTohMH0pLEEoayk7Y29uc3QgVj1be25hbWU6InByb2R1Y3RfdXBkYXRlcyIsbGFiZWw6IlByb2R1Y3QgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgbWVzc2FnZXMgYWJvdXQgcHJvZHVjdCB1cGRhdGVzLiJ9LHtuYW1lOiJ3ZWVrbHlfZGlnZXN0IixsYWJlbDoiV2Vla2x5IGRpZ2VzdCIsZGVzY3JpcHRpb246IlJlY2VpdmUgYSB3ZWVrbHkgc3VtbWFyeS4ifSx7bmFtZToiaW1wb3J0YW50X3VwZGF0ZXMiLGxhYmVsOiJJbXBvcnRhbnQgdXBkYXRlcyIsZGVzY3JpcHRpb246IlJlY2VpdmUgc2VjdXJpdHkgYW5kIGJpbGxpbmcgdXBkYXRlcy4ifV07YXN5bmMgZnVuY3Rpb24gcigpe3RyeXthd2FpdCBkLnVwZGF0ZVVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyh7Li4uYS52YWx1ZX0pLG0uYWRkKHt0aXRsZToiUHJlZmVyZW5jZXMgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoe20uYWRkKHt0aXRsZToiRmFpbGVkIHRvIHNhdmUgcHJlZmVyZW5jZXMiLGNvbG9yOiJlcnJvciJ9KX19ZnVuY3Rpb24geChpKXtpZighaSl7bi52YWx1ZT0hMDtyZXR1cm59cigpfWZ1bmN0aW9uIGgoKXtuLnZhbHVlPSExLHIoKX1mdW5jdGlvbiBGKCl7YS52YWx1ZS5lbWFpbD0hMCxuLnZhbHVlPSExfXJldHVybihpLG8pPT57Y29uc3QgZj1OLF89UyxiPUIsZz1QLFQ9cTtyZXR1cm4geSgpLHYoImRpdiIseixbdChmLHt0aXRsZToiTm90aWZpY2F0aW9ucyIsZGVzY3JpcHRpb246Ik1hbmFnZSB5b3VyIG5vdGlmaWNhdGlvbiBzZXR0aW5ncy4iLHZhcmlhbnQ6Im5ha2VkIixjbGFzczoibWItNCJ9KSx0KGYse3ZhcmlhbnQ6InN1YnRsZSIsdWk6e2NvbnRhaW5lcjoiZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifX0se2RlZmF1bHQ6bCgoKT0+W3QoYix7bmFtZToiZW1haWwiLGxhYmVsOiJFbWFpbCBub3RpZmljYXRpb25zIixkZXNjcmlwdGlvbjoiTWFzdGVyIHN3aXRjaC4gVHVybiBvZmYgdG8gc3RvcCBBTEwgZW1haWwg4oCUIGluY2x1ZGluZyBiaWxsaW5nIGFuZCBpbXBvcnRhbnQgYWNjb3VudCB1cGRhdGVzLiIsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBub3QtbGFzdDpwYi00IGdhcC0yIn0se2RlZmF1bHQ6bCgoKT0+W3QoXyx7bW9kZWxWYWx1ZTpzKGEpLmVtYWlsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpbb1swXXx8KG9bMF09ZT0+cyhhKS5lbWFpbD1lKSx4XX0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLCh5KCksdihMLG51bGwsTShWLGU9PnQoYix7a2V5OmUubmFtZSxuYW1lOmUubmFtZSxsYWJlbDplLmxhYmVsLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24sY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBub3QtbGFzdDpwYi00IHB0LTQgZ2FwLTIifSx7ZGVmYXVsdDpsKCgpPT5bdChfLHttb2RlbFZhbHVlOnMoYSlbZS5uYW1lXSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6W0Q9PnMoYSlbZS5uYW1lXT1ELHJdLGRpc2FibGVkOiFzKGEpLmVtYWlsfSxudWxsLDgsWyJtb2RlbFZhbHVlIiwib25VcGRhdGU6bW9kZWxWYWx1ZSIsImRpc2FibGVkIl0pXSksXzoyfSwxMDMyLFsibmFtZSIsImxhYmVsIiwiZGVzY3JpcHRpb24iXSkpLDY0KSldKSxfOjF9KSx0KFQse29wZW46cyhuKSwib25VcGRhdGU6b3BlbiI6b1sxXXx8KG9bMV09ZT0+WShuKT9uLnZhbHVlPWU6bnVsbCksdGl0bGU6IlR1cm4gb2ZmIGFsbCBlbWFpbD8iLHVpOntmb290ZXI6Imp1c3RpZnktZW5kIn19LHtib2R5OmwoKCk9PlsuLi5vWzJdfHwob1syXT1bYygicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSxbdSgiIFlvdSB3aWxsIG5vIGxvbmdlciByZWNlaXZlICIpLGMoInN0cm9uZyIsbnVsbCwiYW55IiksdSgiIGVtYWlsIGZyb20gdXMg4oCUIGluY2x1ZGluZyAiKSxjKCJzdHJvbmciLG51bGwsImJpbGxpbmcgbm90aWNlcywgc2VjdXJpdHkgYWxlcnRzLCBhbmQgb3RoZXIgaW1wb3J0YW50IGFjY291bnQgdXBkYXRlcyIpLHUoIi4gWW91IGNhbiB0dXJuIGl0IGJhY2sgb24gYXQgYW55IHRpbWUuICIpXSwtMSldKV0pLGZvb3RlcjpsKCgpPT5bdChnLHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJLZWVwIGVtYWlsIG9uIixvbkNsaWNrOkZ9KSx0KGcse2NvbG9yOiJlcnJvciIsbGFiZWw6IlR1cm4gb2ZmIGFsbCBlbWFpbCIsbG9hZGluZzohMSxvbkNsaWNrOmh9KV0pLF86MX0sOCxbIm9wZW4iXSldKX19fSk7ZXhwb3J0e0ggYXMgZGVmYXVsdH07Cg==", "/_nuxt/Cc6zih-R.js": "aW1wb3J0e2FEIGFzIGYsYVggYXMgeSxheCBhcyBxLEogYXMgYixLIGFzIGcsciBhcyBDLG8gYXMgbSxoIGFzIHYsYWEgYXMgaCxpIGFzIGUsaiBhcyBCLGwgYXMgUyxOIGFzIG99ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7dSBhcyB4fWZyb20iLi9DdGExNXNHLS5qcyI7Y29uc3QgXz17YmFzZToiaGlkZGVuIGxnOmZsZXgiLHZhcmlhbnRzOntzaWRlOntsZWZ0OiIiLHJpZ2h0OiIifX19LE89e19fbmFtZToiVURhc2hib2FyZFNpZGViYXJDb2xsYXBzZSIscHJvcHM6e2NvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibmV1dHJhbCJ9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJnaG9zdCJ9LHNpZGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxlZnQifSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlVmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNxdWFyZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxibG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvbkNsaWNrOnt0eXBlOltGdW5jdGlvbixBcnJheV0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgYT10LG49Zih5KGEsImljb24iLCJzaWRlIiwiY2xhc3MiKSkse3Q6cn09cSgpLGw9YigpLGQ9ZygiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlIixhKSx7c2lkZWJhckNvbGxhcHNlZDpzLGNvbGxhcHNlU2lkZWJhcjp1fT14KHtzaWRlYmFyQ29sbGFwc2VkOkMoITEpLGNvbGxhcHNlU2lkZWJhcjooKT0+e319KSxwPVMoKCk9Pm8oe2V4dGVuZDpvKF8pLC4uLmwudWk/LmRhc2hib2FyZFNpZGViYXJDb2xsYXBzZXx8e319KSk7cmV0dXJuKGMsaSk9PihtKCksdihCLGgoey4uLmUobiksaWNvbjphLmljb258fChlKHMpP2UobCkudWkuaWNvbnMucGFuZWxPcGVuOmUobCkudWkuaWNvbnMucGFuZWxDbG9zZSksImFyaWEtbGFiZWwiOmUocyk/ZShyKSgiZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlLmV4cGFuZCIpOmUocikoImRhc2hib2FyZFNpZGViYXJDb2xsYXBzZS5jb2xsYXBzZSIpLC4uLmMuJGF0dHJzfSx7Y2xhc3M6cC52YWx1ZSh7Y2xhc3M6W2UoZCk/LmJhc2UsYS5jbGFzc10sc2lkZTphLnNpZGV9KSxvbkNsaWNrOmlbMF18fChpWzBdPWs9PmUodSk/LighZShzKSkpfSksbnVsbCwxNixbImNsYXNzIl0pKX19O2V4cG9ydHtPIGFzIF99Owo=", "/_nuxt/CcMMF1g9.js": "aW1wb3J0e0ogYXMgZCxLIGFzIHAsbyBhcyBmLGgsdyBhcyBtLEwgYXMgbyxhIGFzIG4sTSBhcyBsLGkgYXMgcyxQIGFzIGIsbCBhcyBnLE4gYXMgY31mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0IHY9e3Nsb3RzOntyb290OiJzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUgb3ZlcmZsb3cteC1hdXRvIG1pbi1oLVs0OXB4XSIsbGVmdDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSIscmlnaHQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUifX0sdz17X19uYW1lOiJVRGFzaGJvYXJkVG9vbGJhciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKHIpe2NvbnN0IGk9cix1PWQoKSxlPXAoImRhc2hib2FyZFRvb2xiYXIiLGkpLGE9ZygoKT0+Yyh7ZXh0ZW5kOmModiksLi4udS51aT8uZGFzaGJvYXJkVG9vbGJhcnx8e319KSgpKTtyZXR1cm4odCx4KT0+KGYoKSxoKHMoYikse2FzOnIuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmwoYS52YWx1ZS5yb290KHtjbGFzczpbcyhlKT8ucm9vdCxpLmNsYXNzXX0pKX0se2RlZmF1bHQ6bSgoKT0+W28odC4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bbigiZGl2Iix7ImRhdGEtc2xvdCI6ImxlZnQiLGNsYXNzOmwoYS52YWx1ZS5sZWZ0KHtjbGFzczpbcyhlKT8ubGVmdF19KSl9LFtvKHQuJHNsb3RzLCJsZWZ0IildLDIpLG4oImRpdiIseyJkYXRhLXNsb3QiOiJyaWdodCIsY2xhc3M6bChhLnZhbHVlLnJpZ2h0KHtjbGFzczpbcyhlKT8ucmlnaHRdfSkpfSxbbyh0LiRzbG90cywicmlnaHQiKV0sMildKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX07ZXhwb3J0e3cgYXMgX307Cg==", "/_nuxt/Cf_fw1E9.js": "aW1wb3J0e2FzIGFzIHJ9ZnJvbSIuL284dGRfRzBKLmpzIjtmdW5jdGlvbiBqKCl7ZnVuY3Rpb24gbygpe3JldHVybiByKCIvYXBpL3Byb2plY3RzIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gcihgL2FwaS9wcm9qZWN0cy8ke3R9YCl9ZnVuY3Rpb24gbih0KXtyZXR1cm4gcigiL2FwaS9wcm9qZWN0cyIse21ldGhvZDoiUE9TVCIsYm9keTp0fSl9ZnVuY3Rpb24gdSh0LGUpe3JldHVybiByKGAvYXBpL3Byb2plY3RzLyR7dH1gLHttZXRob2Q6IlBBVENIIixib2R5OmV9KX1mdW5jdGlvbiBwKHQpe3JldHVybiByKGAvYXBpL3Byb2plY3RzLyR7dH1gLHttZXRob2Q6IkRFTEVURSJ9KX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHIoYC9hcGkvcHJvamVjdHMvJHt0fS9wcm9kdWN0c2Ase21ldGhvZDoiUE9TVCIsYm9keTplfSl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiByKGAvYXBpL3Byb2plY3RzLyR7dH0vcHJvZHVjdHMvJHtlfWAse21ldGhvZDoiREVMRVRFIn0pfWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gcihgL2FwaS9wcm9qZWN0cy8ke3R9L21lbWJlcnNgLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gcihgL2FwaS9wcm9qZWN0cy8ke3R9L21lbWJlcnMvJHtlfWAse21ldGhvZDoiREVMRVRFIn0pfXJldHVybntmZXRjaFByb2plY3RzOm8sZmV0Y2hQcm9qZWN0OmMsY3JlYXRlUHJvamVjdDpuLHVwZGF0ZVByb2plY3Q6dSxkZWxldGVQcm9qZWN0OnAsYWRkUHJvZHVjdDppLHJlbW92ZVByb2R1Y3Q6cyxhZGRNZW1iZXI6ZCxyZW1vdmVNZW1iZXI6bX19ZXhwb3J0e2ogYXMgdX07Cg==", "/_nuxt/CfhYFYOY.js": "aW1wb3J0e18gYXMgVmV9ZnJvbSIuL1pKVmswb2xOLmpzIjtpbXBvcnR7VCBhcyB6ZSxmIGFzIHRlLFUgYXMgQ2UsbiBhcyBtZSxnIGFzIHBlLHAgYXMgTCx6IGFzIFksUiBhcyBaLG8gYXMgZCxoIGFzIEosdyBhcyB4LGIgYXMgbixqIGFzIEMsaSBhcyBhLGEgYXMgaSxjIGFzIGIsRyBhcyBqLHYgYXMgUixGIGFzIE4scSBhcyBlZSx0IGFzIFgsViBhcyBSZSxXIGFzIEllLEIgYXMgYWUsciBhcyBtLGwgYXMgcSxRIGFzIHZlLFggYXMgQWUsWSBhcyBFZSxEIGFzIE9lLEggYXMgZGUsWiBhcyBQZSxFIGFzIFNlLCQgYXMgZixhMCBhcyBMZSx1IGFzIEJlLGExIGFzIEZlfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgdWV9ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnR7XyBhcyBmZX1mcm9tIi4vV21EWEhZS2suanMiO2ltcG9ydHtfIGFzIE5lfWZyb20iLi9CU1JLcUdyUC5qcyI7aW1wb3J0e18gYXMgcWV9ZnJvbSIuL0NXOGZLbkZFLmpzIjtpbXBvcnR7XyBhcyBEZX1mcm9tIi4vQ0FVQVg1VnIuanMiO2ltcG9ydHt1IGFzIEdlfWZyb20iLi9DZl9mdzFFOS5qcyI7aW1wb3J0e3UgYXMgS2V9ZnJvbSIuL0JBdW5pLXFkLmpzIjtpbXBvcnR7dSBhcyBUZX1mcm9tIi4vRG03OTRxeEkuanMiO2ltcG9ydCIuL0I3czVwampSLmpzIjtpbXBvcnQiLi9ESEN3RUxXcC5qcyI7aW1wb3J0Ii4vQnQ4UzBkbWwuanMiO2ltcG9ydCIuL20yMGtkR3hVLmpzIjtpbXBvcnQiLi9DN1l5NnRSMy5qcyI7Y29uc3QgYmU9U3ltYm9sKCJvcmctbWVtYmVycyIpO2Z1bmN0aW9uIF9lKCl7Y29uc3QgZz16ZShiZSk7aWYoIWcpdGhyb3cgbmV3IEVycm9yKCJ1c2VPcmdhbml6YXRpb25NZW1iZXJzKCkgbXVzdCBiZSBjYWxsZWQgd2l0aGluIHRoZSBtZW1iZXJzIHBhZ2UiKTtyZXR1cm4gZ31jb25zdCBXZT17Y2xhc3M6InNwYWNlLXktNCJ9LEhlPXtrZXk6MH0sUWU9e2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIn0sWGU9e2NsYXNzOiJzcGFjZS15LTIifSxZZT17Y2xhc3M6InRleHQtc20ifSxaZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LEplPXRlKHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbWJlclBlcm1pc3Npb25zTW9kYWwiLHByb3BzOkllKHttZW1iZXI6e319LHtvcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sb3Blbk1vZGlmaWVyczp7fX0pLGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChnKXtjb25zdCBjPWcscD1DZShnLCJvcGVuIikseT1tZSgpLG89cGUoKSxfPWFlKCkse3Blcm1pc3Npb25zOncsdXBkYXRlTWVtYmVyQWJpbGl0aWVzOlZ9PV9lKCkse2RhdGE6eixlcnJvcjpCfT1MKCJvcmctcm9sZXMiLCgpPT5fLmZldGNoUm9sZXMoKSx7ZGVmYXVsdDooKT0+W119KTtZKEIpO2NvbnN0IGs9bShbXSksaD1tKFtdKTtaKCgpPT5jLm1lbWJlcixzPT57ay52YWx1ZT1zPyhzLmFiaWxpdGllcz8/W10pLmZpbHRlcihsPT4hbC5lbmRzV2l0aCgiOnNlbGYiKSk6W10saC52YWx1ZT1bXX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IEk9bSghMSksRD1xKCgpPT57Y29uc3Qgcz13LnZhbHVlLmZpbHRlcih1PT51LnNjb3BlPT09bnVsbCk7cmV0dXJuWy4uLm5ldyBTZXQocy5tYXAodT0+dS5zdWJqZWN0KSldLm1hcCh1PT4oe3N1YmplY3Q6dSxwZXJtaXNzaW9uczpzLmZpbHRlcihPPT5PLnN1YmplY3Q9PT11KX0pKX0pLEE9cSgoKT0+ei52YWx1ZS5tYXAocz0+KHtsYWJlbDpzLm5hbWUsdmFsdWU6cy5pZH0pKSk7ZnVuY3Rpb24gRShzKXtyZXR1cm4gdmUoeS5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSxzKX1mdW5jdGlvbiBNKHMpe0UocykmJihrLnZhbHVlLmluY2x1ZGVzKHMpP2sudmFsdWU9ay52YWx1ZS5maWx0ZXIobD0+bCE9PXMpOmsudmFsdWU9Wy4uLmsudmFsdWUsc10pfWFzeW5jIGZ1bmN0aW9uICQoKXtpZihjLm1lbWJlcil7SS52YWx1ZT0hMDt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW1YoYy5tZW1iZXIuaWQsay52YWx1ZSksXy5hc3NpZ25NZW1iZXJSb2xlcyhjLm1lbWJlci5pZCxoLnZhbHVlKV0pLG8uYWRkKHt0aXRsZToiUGVybWlzc2lvbnMgdXBkYXRlZCIsY29sb3I6InN1Y2Nlc3MifSkscC52YWx1ZT0hMX1jYXRjaChzKXtjb25zdCBsPXM7by5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gdXBkYXRlIHBlcm1pc3Npb25zIixkZXNjcmlwdGlvbjpsPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7SS52YWx1ZT0hMX19fXJldHVybihzLGwpPT57Y29uc3QgdT1mZSxPPURlLEY9QyxHPVJlO3JldHVybiBkKCksSihHLHtvcGVuOnAudmFsdWUsIm9uVXBkYXRlOm9wZW4iOmxbMl18fChsWzJdPXY9PnAudmFsdWU9diksdGl0bGU6Zy5tZW1iZXI/YFBlcm1pc3Npb25zIOKAlCAke2cubWVtYmVyLm5hbWU/P2cubWVtYmVyLnByaW1hcnlfZW1haWx9YDoiUGVybWlzc2lvbnMiLHVpOntmb290ZXI6Imp1c3RpZnktZW5kIn19LHtib2R5OngoKCk9PltpKCJkaXYiLFdlLFthKHopLmxlbmd0aD4wPyhkKCksYigiZGl2IixIZSxbbFszXXx8KGxbM109aSgicCIse2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIn0sIiBSb2xlcyAiLC0xKSksbih1LHttb2RlbFZhbHVlOmEoaCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmxbMF18fChsWzBdPXY9PmooaCk/aC52YWx1ZT12Om51bGwpLGl0ZW1zOmEoQSksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgcm9sZXPigKYifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiXSldKSk6UigiIiwhMCksKGQoITApLGIoTixudWxsLGVlKGEoRCksdj0+KGQoKSxiKCJkaXYiLHtrZXk6di5zdWJqZWN0fSxbaSgicCIsUWUsWCh2LnN1YmplY3QpLDEpLGkoImRpdiIsWGUsWyhkKCEwKSxiKE4sbnVsbCxlZSh2LnBlcm1pc3Npb25zLFU9PihkKCksYigiZGl2Iix7a2V5OlUua2V5LGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4ifSxbaSgiZGl2IixudWxsLFtpKCJwIixZZSxYKFUuZGVzY3JpcHRpb24/P1Uua2V5KSwxKSxpKCJwIixaZSxYKFUua2V5KSwxKV0pLG4oTyx7Im1vZGVsLXZhbHVlIjphKGspLmluY2x1ZGVzKFUua2V5KSxkaXNhYmxlZDohRShVLmtleSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnNlPT5NKFUua2V5KX0sbnVsbCw4LFsibW9kZWwtdmFsdWUiLCJkaXNhYmxlZCIsIm9uVXBkYXRlOm1vZGVsVmFsdWUiXSldKSkpLDEyOCkpXSldKSkpLDEyOCkpXSldKSxmb290ZXI6eCgoKT0+W24oRix7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOmxbMV18fChsWzFdPXY9PnAudmFsdWU9ITEpfSksbihGLHtsYWJlbDoiU2F2ZSIsbG9hZGluZzphKEkpLG9uQ2xpY2s6JH0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0sOCxbIm9wZW4iLCJ0aXRsZSJdKX19fSksZXQ9T2JqZWN0LmFzc2lnbihKZSx7X19uYW1lOiJPcmdhbml6YXRpb25NZW1iZXJQZXJtaXNzaW9uc01vZGFsIn0pLHR0PXtjbGFzczoic3BhY2UteS02In0sYXQ9e2tleTowLGNsYXNzOiJzcGFjZS15LTMifSxzdD17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTMgc206ZmxleC1yb3cgc206aXRlbXMtZW5kIn0sbnQ9e2tleTowLGNsYXNzOiJtdC0zIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIn0sbHQ9e2tleToxLGNsYXNzOiJzcGFjZS15LTMifSxpdD17Y2xhc3M6InNwYWNlLXktMyJ9LG90PXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMifSxydD17Y2xhc3M6InAtNCBzcGFjZS15LTEifSxjdD17Y2xhc3M6ImZsZXggZmxleC13cmFwIGdhcC0xLjUifSxkdD17a2V5OjAsY2xhc3M6InB5LTMgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZCB0ZXh0LXNtIn0sdXQ9dGUoe19fbmFtZToiT3JnYW5pemF0aW9uTWVtYmVyTGlzdCIsc2V0dXAoZyl7Y29uc3QgYz1tZSgpLHA9cGUoKSx5PWFlKCkse2ludml0YXRpb25zOm8scmVtb3ZlTWVtYmVyOl8sY3JlYXRlSW52aXRhdGlvbjp3LHJldm9rZUludml0YXRpb246Vn09X2UoKSx6PXEoKCk9PnZlKGMuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10sInVzZXI6bWFuYWdlIikpLEI9bShudWxsKSx7aXRlbXM6ayxxOmgsaGFzTW9yZTpJLGxvYWRpbmc6RCxsb2FkTW9yZTpBLHJlc2V0OkV9PUtlKHQ9PnkuZmV0Y2hNZW1iZXJzKHQpLnRoZW4oZT0+ZSkse2ltbWVkaWF0ZTohMH0pO0FlKEIsQSx7ZGlzdGFuY2U6MTIwLGNhbkxvYWRNb3JlOigpPT5JLnZhbHVlfSk7Y29uc3QgTT1tKCIiKSwkPW0oIiIpLHM9bShbXSksbD1tKCExKSx1PW0oIiIpLHtkYXRhOk8sZXJyb3I6Rn09TCgib3JnLXJvbGVzIiwoKT0+eS5mZXRjaFJvbGVzKCkse2RlZmF1bHQ6KCk9PltdfSk7WShGKTtjb25zdCBHPXEoKCk9Pk8udmFsdWUubWFwKHQ9Pih7bGFiZWw6dC5uYW1lLHZhbHVlOnQuaWR9KSkpLHY9bShbXSksVT1HZSgpLHtkYXRhOnNlLGVycm9yOmdlfT1MKCJvcmctaW52aXRlLXByb2plY3RzIiwoKT0+VS5mZXRjaFByb2plY3RzKCkse2RlZmF1bHQ6KCk9PltdfSk7WShnZSksWihzZSx0PT57di52YWx1ZT10Lm1hcChlPT4oe2xhYmVsOmUubmFtZSx2YWx1ZTplLmlkfSkpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgeWU9VGUoKTtmdW5jdGlvbiBuZSh0KXtyZXR1cm4gTGUoeWUub3JpZ2luLCJqb2luIix0KX1hc3luYyBmdW5jdGlvbiBsZSgpe2lmKE0udmFsdWUudHJpbSgpKXtsLnZhbHVlPSEwLHUudmFsdWU9IiI7dHJ5e2NvbnN0IHQ9YXdhaXQgdyhNLnZhbHVlLnRyaW0oKSwkLnZhbHVlfHx2b2lkIDAscy52YWx1ZS5sZW5ndGg/cy52YWx1ZTp2b2lkIDApO3UudmFsdWU9bmUodC50b2tlbiksTS52YWx1ZT0iIiwkLnZhbHVlPSIiLHMudmFsdWU9W119Y2F0Y2godCl7Y29uc3QgZT10O3AuYWRkKHt0aXRsZToiRmFpbGVkIHRvIGNyZWF0ZSBpbnZpdGF0aW9uIixkZXNjcmlwdGlvbjplPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7bC52YWx1ZT0hMX19fWNvbnN0e2NvcHk6a2V9PUVlKCk7YXN5bmMgZnVuY3Rpb24gaWUodCl7YXdhaXQga2UodCkscC5hZGQoe3RpdGxlOiJJbnZpdGF0aW9uIGxpbmsgY29waWVkIixjb2xvcjoic3VjY2VzcyJ9KX1hc3luYyBmdW5jdGlvbiB4ZSh0KXt0cnl7YXdhaXQgVih0KSxwLmFkZCh7dGl0bGU6Ikludml0YXRpb24gcmV2b2tlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2h7cC5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gcmV2b2tlIGludml0YXRpb24iLGNvbG9yOiJlcnJvciJ9KX19Y29uc3QgaGU9W3thY2Nlc3NvcktleToiZW1haWwiLGhlYWRlcjoiRW1haWwifSx7aWQ6ImxpbmsiLGhlYWRlcjoiSW52aXRhdGlvbiBsaW5rIixjZWxsOih7cm93OnR9KT0+e2NvbnN0IGU9bmUodC5vcmlnaW5hbC50b2tlbik7cmV0dXJuIGYoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFtmKGRlLHttb2RlbFZhbHVlOmUsdHlwZToicGFzc3dvcmQiLHJlYWRvbmx5OiEwLHNpemU6InhzIixjbGFzczoiZmxleC0xIGZvbnQtbW9ubyIsImFyaWEtbGFiZWwiOiJJbnZpdGF0aW9uIGxpbmsifSksZihDLHtpY29uOiJpLWx1Y2lkZS1jb3B5Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHNpemU6InhzIiwiYXJpYS1sYWJlbCI6IkNvcHkgbGluayIsb25DbGljazooKT0+aWUoZSl9KV0pfX0se2lkOiJhY3Rpb25zIixoZWFkZXI6IiIsbWV0YTp7Y2xhc3M6e3RkOiJ0ZXh0LXJpZ2h0In19LGNlbGw6KHtyb3c6dH0pPT56LnZhbHVlP2YoQyx7bGFiZWw6IlJldm9rZSIsY29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIixvbkNsaWNrOigpPT54ZSh0Lm9yaWdpbmFsLmlkKX0pOm51bGx9XSxLPW0obnVsbCksUD1tKCExKSxUPW0obnVsbCksVz1tKHt9KSxNZT1be2lkOiJuYW1lIixoZWFkZXI6Ik5hbWUiLGNlbGw6KHtyb3c6dH0pPT5mKCJkaXYiLFtmKCJwIix7Y2xhc3M6ImZvbnQtbWVkaXVtIn0sdC5vcmlnaW5hbC5uYW1lPz90Lm9yaWdpbmFsLnVzZXJuYW1lPz90Lm9yaWdpbmFsLnByaW1hcnlfZW1haWwpLGYoInAiLHtjbGFzczoidGV4dC14cyB0ZXh0LW11dGVkIn0sdC5vcmlnaW5hbC5wcmltYXJ5X2VtYWlsKV0pfSx7aWQ6ImFiaWxpdGllcyIsaGVhZGVyOiJBYmlsaXRpZXMiLGNlbGw6KHtyb3c6dH0pPT5mKCJkaXYiLHtjbGFzczoiZmxleCBmbGV4LXdyYXAgZ2FwLTEifSwodC5vcmlnaW5hbC5hYmlsaXRpZXM/P1tdKS5maWx0ZXIoZT0+IWUuZW5kc1dpdGgoIjpzZWxmIikpLm1hcChlPT5mKHVlLHtsYWJlbDplLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUifSkpKX0se2lkOiJhY3Rpb25zIixoZWFkZXI6IiIsbWV0YTp7Y2xhc3M6e3RkOiJ0ZXh0LXJpZ2h0In19LGNlbGw6KHtyb3c6dH0pPT4hei52YWx1ZXx8dC5vcmlnaW5hbC5pZD09PWMuY3VycmVudFVzZXI/LmlkP251bGw6ZigiZGl2Iix7Y2xhc3M6ImZsZXggZ2FwLTIganVzdGlmeS1lbmQifSxbZihDLHtpY29uOiJpLWx1Y2lkZS1wZW5jaWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLCJhcmlhLWxhYmVsIjoiRWRpdCBwZXJtaXNzaW9ucyIsb25DbGljazooKT0+e0sudmFsdWU9dC5vcmlnaW5hbCxQLnZhbHVlPSEwfX0pLGYoQyx7aWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsY29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsc2l6ZToieHMiLCJhcmlhLWxhYmVsIjoiUmVtb3ZlIG1lbWJlciIsbG9hZGluZzpULnZhbHVlPT09dC5vcmlnaW5hbC5pZCxvbkNsaWNrOigpPT5VZSh0Lm9yaWdpbmFsKX0pXSl9XTthc3luYyBmdW5jdGlvbiBVZSh0KXtULnZhbHVlPXQuaWQ7dHJ5e2F3YWl0IF8odC5pZCkscC5hZGQoe3RpdGxlOmAke3QubmFtZT8/dC5wcmltYXJ5X2VtYWlsfSByZW1vdmVkYCxjb2xvcjoic3VjY2VzcyJ9KSxFKCksYXdhaXQgQSgpfWNhdGNoKGUpe2NvbnN0IFM9ZTtwLmFkZCh7dGl0bGU6IkZhaWxlZCB0byByZW1vdmUgbWVtYmVyIixkZXNjcmlwdGlvbjpTPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7VC52YWx1ZT1udWxsfX1yZXR1cm4gWihQLGFzeW5jIHQ9Pnt0fHwoRSgpLGF3YWl0IEEoKSl9KSwodCxlKT0+e2NvbnN0IFM9ZGUsSD1PZSx3ZT1TZSwkZT1mZSxvZT1DLFE9TmUscmU9cWUsamU9dWU7cmV0dXJuIGQoKSxiKE4sbnVsbCxbaSgiZGl2Iix0dCxbYSh6KT8oZCgpLGIoImRpdiIsYXQsW2VbOF18fChlWzhdPWkoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgSW52aXRlIGEgbWVtYmVyICIsLTEpKSxuKFEsbnVsbCx7ZGVmYXVsdDp4KCgpPT5baSgiZGl2IixzdCxbbihILHtsYWJlbDoiRW1haWwiLGNsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDp4KCgpPT5bbihTLHttb2RlbFZhbHVlOmEoTSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMF18fChlWzBdPXI9PmooTSk/TS52YWx1ZT1yOm51bGwpLHR5cGU6ImVtYWlsIixwbGFjZWhvbGRlcjoidXNlckBleGFtcGxlLmNvbSIsY2xhc3M6InctZnVsbCIsb25LZXlkb3duOlBlKGxlLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxuKEgse2xhYmVsOiJSb2xlIn0se2RlZmF1bHQ6eCgoKT0+W24od2Use21vZGVsVmFsdWU6YSgkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZVsxXXx8KGVbMV09cj0+aigkKT8kLnZhbHVlPXI6bnVsbCksaXRlbXM6YShHKSwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIscGxhY2Vob2xkZXI6IkRlZmF1bHQiLGNsYXNzOiJtaW4tdy00MCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLGEodikubGVuZ3RoPjA/KGQoKSxKKEgse2tleTowLGxhYmVsOiJQcm9qZWN0cyJ9LHtkZWZhdWx0OngoKCk9PltuKCRlLHttb2RlbFZhbHVlOmEocyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMl18fChlWzJdPXI9Pmoocyk/cy52YWx1ZT1yOm51bGwpLGl0ZW1zOmEodiksInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLG11bHRpcGxlOiIiLHBsYWNlaG9sZGVyOiJOb25lIixjbGFzczoibWluLXctNDgifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSk6UigiIiwhMCksbihvZSx7bGFiZWw6IkdlbmVyYXRlIGludml0ZSBsaW5rIixpY29uOiJpLWx1Y2lkZS1saW5rIixsb2FkaW5nOmEobCksZGlzYWJsZWQ6IWEoTSkudHJpbSgpLG9uQ2xpY2s6bGV9LG51bGwsOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pLGEodSk/KGQoKSxiKCJkaXYiLG50LFtuKFMseyJtb2RlbC12YWx1ZSI6YSh1KSx0eXBlOiJwYXNzd29yZCIscmVhZG9ubHk6IiIsY2xhc3M6ImZsZXgtMSBmb250LW1vbm8gdGV4dC14cyIsImFyaWEtbGFiZWwiOiJHZW5lcmF0ZWQgaW52aXRhdGlvbiBsaW5rIn0sbnVsbCw4LFsibW9kZWwtdmFsdWUiXSksbihvZSx7aWNvbjoiaS1sdWNpZGUtY29weSIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6IkNvcHkgbGluayIsb25DbGljazplWzNdfHwoZVszXT1yPT5pZShhKHUpKSl9KV0pKTpSKCIiLCEwKV0pLF86MX0pXSkpOlIoIiIsITApLGEobykubGVuZ3RoPjA/KGQoKSxiKCJkaXYiLGx0LFtlWzldfHwoZVs5XT1pKCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQifSwiIFBlbmRpbmcgaW52aXRhdGlvbnMgIiwtMSkpLG4oUSx7dWk6e2JvZHk6InNtOnAtMCJ9fSx7ZGVmYXVsdDp4KCgpPT5bbihyZSx7Y29sdW1uczpoZSxkYXRhOmEobyl9LG51bGwsOCxbImRhdGEiXSldKSxfOjF9KV0pKTpSKCIiLCEwKSxpKCJkaXYiLGl0LFtpKCJkaXYiLG90LFtlWzEwXXx8KGVbMTBdPWkoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCBmbGV4LTEifSwiIE1lbWJlcnMgIiwtMSkpLG4oUyx7bW9kZWxWYWx1ZTphKGgpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplWzRdfHwoZVs0XT1yPT5qKGgpP2gudmFsdWU9cjpudWxsKSxpY29uOiJpLWx1Y2lkZS1zZWFyY2giLHBsYWNlaG9sZGVyOiJTZWFyY2ggbWVtYmVyc+KApiIsc2l6ZToic20iLGNsYXNzOiJ3LTU2In0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLG4oUSx7dWk6e2JvZHk6InNtOnAtMCJ9fSx7ZGVmYXVsdDp4KCgpPT5baSgiZGl2Iix7cmVmX2tleToic2Nyb2xsRWwiLHJlZjpCfSxbbihyZSx7ZXhwYW5kZWQ6YShXKSwib25VcGRhdGU6ZXhwYW5kZWQiOmVbNV18fChlWzVdPXI9PmooVyk/Vy52YWx1ZT1yOm51bGwpLGNvbHVtbnM6TWUsZGF0YTphKGspfSx7ZW1wdHk6eCgoKT0+Wy4uLmVbMTFdfHwoZVsxMV09W2koImRpdiIse2NsYXNzOiJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgifSwiIE5vIG1lbWJlcnMgaW4gdGhpcyBvcmdhbml6YXRpb24uICIsLTEpXSldKSxleHBhbmRlZDp4KCh7cm93OnJ9KT0+W2koImRpdiIscnQsW2VbMTJdfHwoZVsxMl09aSgicCIse2NsYXNzOiJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1tdXRlZCBtYi0yIn0sIiBBbGwgcGVybWlzc2lvbnMgIiwtMSkpLGkoImRpdiIsY3QsWyhkKCEwKSxiKE4sbnVsbCxlZShyLm9yaWdpbmFsLmFiaWxpdGllcyxjZT0+KGQoKSxKKGplLHtrZXk6Y2UsbGFiZWw6Y2UsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToic20ifSxudWxsLDgsWyJsYWJlbCJdKSkpLDEyOCkpXSldKV0pLF86MX0sOCxbImV4cGFuZGVkIiwiZGF0YSJdKSxhKEQpPyhkKCksYigiZGl2IixkdCwiIExvYWRpbmfigKYgIikpOlIoIiIsITApXSw1MTIpXSksXzoxfSldKV0pLG4oZXQse29wZW46YShQKSwib25VcGRhdGU6b3BlbiI6W2VbNl18fChlWzZdPXI9PmooUCk/UC52YWx1ZT1yOm51bGwpLGVbN118fChlWzddPXI9PntyfHwoSy52YWx1ZT1udWxsKX0pXSxtZW1iZXI6YShLKX0sbnVsbCw4LFsib3BlbiIsIm1lbWJlciJdKV0sNjQpfX19KSxtdD1PYmplY3QuYXNzaWduKHV0LHtfX25hbWU6Ik9yZ2FuaXphdGlvbk1lbWJlckxpc3QifSkscHQ9e2NsYXNzOiJzcGFjZS15LTQifSx6dD10ZSh7X19uYW1lOiJtZW1iZXJzIixzZXR1cChnKXtCZSh7dGl0bGU6Ik1lbWJlcnMifSk7Y29uc3QgYz1hZSgpLHtkYXRhOnB9PUwoIm9yZy1wZXJtaXNzaW9ucyIsKCk9PmMuZmV0Y2hQZXJtaXNzaW9ucygpLHtkZWZhdWx0OigpPT5bXX0pLHtkYXRhOnl9PUwoIm9yZy1pbnZpdGF0aW9ucyIsKCk9PmMuZmV0Y2hJbnZpdGF0aW9ucygpLHtkZWZhdWx0OigpPT5bXX0pO3JldHVybiBGZShiZSx7aW52aXRhdGlvbnM6eSxwZXJtaXNzaW9uczpwLGFzeW5jIGFkZE1lbWJlcihvKXthd2FpdCBjLmFkZE1lbWJlcih7ZW1haWw6b30pfSxhc3luYyB1cGRhdGVNZW1iZXJBYmlsaXRpZXMobyxfKXthd2FpdCBjLnVwZGF0ZU1lbWJlckFiaWxpdGllcyhvLHthYmlsaXRpZXM6X30pfSxhc3luYyByZW1vdmVNZW1iZXIobyl7YXdhaXQgYy5yZW1vdmVNZW1iZXIobyl9LGFzeW5jIGNyZWF0ZUludml0YXRpb24obyxfLHcpe2NvbnN0IFY9YXdhaXQgYy5jcmVhdGVJbnZpdGF0aW9uKHtlbWFpbDpvLHJvbGVfaWQ6Xyxwcm9qZWN0X2lkczp3Py5sZW5ndGg/dzp2b2lkIDB9KTtyZXR1cm4geS52YWx1ZT1bLi4ueS52YWx1ZSxWXSxWfSxhc3luYyByZXZva2VJbnZpdGF0aW9uKG8pe2F3YWl0IGMucmV2b2tlSW52aXRhdGlvbihvKSx5LnZhbHVlPXkudmFsdWUuZmlsdGVyKF89Pl8uaWQhPT1vKX19KSwobyxfKT0+e2NvbnN0IHc9VmU7cmV0dXJuIGQoKSxiKCJkaXYiLHB0LFtuKHcse2ljb246ImktbHVjaWRlLWluZm8iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHRpdGxlOiJQZXJtaXNzaW9uIGNoYW5nZXMgYXBwbHkgdG8gdGhpcyBvcmdhbml6YXRpb24gYW5kIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LiJ9KSxuKG10KV0pfX19KTtleHBvcnR7enQgYXMgZGVmYXVsdH07Cg==", "/_nuxt/Cl4i4rSM.js": "aW1wb3J0e18gYXMgcH1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIHh9ZnJvbSIuL0JTUktxR3JQLmpzIjtpbXBvcnR7ZixuIGFzIGcsbyBhcyByLGggYXMgbyx3IGFzIGksYSBhcyB0LGMgYXMgZCxxIGFzIGgsZCBhcyBtLHQgYXMgbixpIGFzIHMsRiBhcyBiLHYgYXMgbH1mcm9tIi4vbzh0ZF9HMEouanMiO2NvbnN0IHY9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIifSx5PXtjbGFzczoidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLCJkYXRhLXRlc3RpZCI6ImN1cnJlbnQtdXNlci1uYW1lIn0saz17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCIsImRhdGEtdGVzdGlkIjoiY3VycmVudC11c2VyLWVtYWlsIn0sVT17Y2xhc3M6InNwYWNlLXktMyJ9LHc9e2NsYXNzOiJmbGV4IGZsZXgtd3JhcCBnYXAtMSJ9LEI9e2tleTowLGNsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSxDPXtrZXk6MH0sUz17Y2xhc3M6InRleHQtc20ifSxJPXtjbGFzczoidGV4dC1tdXRlZCJ9LCQ9Zih7X19uYW1lOiJEYXNoYm9hcmRTZXNzaW9uQ2FyZCIsc2V0dXAoTil7Y29uc3QgZT1nKCk7cmV0dXJuKFYsYSk9Pntjb25zdCBjPXAsXz14O3JldHVybiByKCksbyhfLHsiZGF0YS10ZXN0aWQiOiJzZXNzaW9uLWNhcmQifSx7aGVhZGVyOmkoKCk9Plt0KCJkaXYiLHYsW3QoImRpdiIsbnVsbCxbYVswXXx8KGFbMF09dCgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIFNpZ25lZCBpbiBhcyAiLC0xKSksdCgicCIseSxuKHMoZSkuY3VycmVudFVzZXI/Lm5hbWU/P3MoZSkuY3VycmVudFVzZXI/LnByaW1hcnlfZW1haWwpLDEpLHQoInAiLGssbihzKGUpLmN1cnJlbnRVc2VyPy5wcmltYXJ5X2VtYWlsKSwxKV0pLHMoZSkuaXNJbXBlcnNvbmF0aW5nPyhyKCksbyhjLHtrZXk6MCxjb2xvcjoid2FybmluZyIsdmFyaWFudDoic29mdCIsaWNvbjoiaS1sdWNpZGUtdXNlci1jb2ciLCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRpbmctYmFkZ2UifSx7ZGVmYXVsdDppKCgpPT5bLi4uYVsxXXx8KGFbMV09W20oIiBJbXBlcnNvbmF0aW5nICIsLTEpXSldKSxfOjF9KSk6bCgiIiwhMCldKV0pLGRlZmF1bHQ6aSgoKT0+W3QoImRpdiIsVSxbdCgiZGl2IixudWxsLFthWzJdfHwoYVsyXT10KCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtYi0xIn0sIiBBYmlsaXRpZXMgIiwtMSkpLHQoImRpdiIsdyxbKHIoITApLGQoYixudWxsLGgocyhlKS5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSx1PT4ocigpLG8oYyx7a2V5OnUsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToic20ifSx7ZGVmYXVsdDppKCgpPT5bbShuKHUpLDEpXSksXzoyfSwxMDI0KSkpLDEyOCkpLHMoZSkuY3VycmVudFVzZXI/LmFiaWxpdGllcz8ubGVuZ3RoP2woIiIsITApOihyKCksZCgic3BhbiIsQiwiIChub25lKSAiKSldKV0pLHMoZSkuaXNJbXBlcnNvbmF0aW5nJiZzKGUpLmltcGVyc29uYXRvcj8ocigpLGQoImRpdiIsQyxbYVszXXx8KGFbM109dCgicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgbWItMSJ9LCIgUmVhbCB1c2VyICIsLTEpKSx0KCJwIixTLFttKG4ocyhlKS5pbXBlcnNvbmF0b3IubmFtZSkrIiAiLDEpLHQoInNwYW4iLEksIsK3ICIrbihzKGUpLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKSwxKV0pXSkpOmwoIiIsITApXSldKSxfOjF9KX19fSk7ZXhwb3J0eyQgYXMgX307Cg==", "/_nuxt/CoIdz4ka.js": "aW1wb3J0e2YgYXMgJCxTIGFzIHosbyBhcyBkLGggYXMgSSx3IGFzIHUsYiBhcyB0LEQgYXMgQSxIIGFzIE0saSBhcyBuLGFyIGFzIFQsRSBhcyBILGEgYXMgUCxqIGFzIEIsYyBhcyBmLGUgYXMgRyxkIGFzIE4sdCBhcyBWLHYgYXMgSyxGIGFzIEUscSBhcyBDLGsgYXMgUix1IGFzIEosZyBhcyBRLHAgYXMgVyx6IGFzIFgsRyBhcyBZLFYgYXMgWixyIGFzIFMsbCBhcyBlZSxhMSBhcyB0ZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIG9lfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e3UgYXMgbmV9ZnJvbSIuL0NmX2Z3MUU5LmpzIjtpbXBvcnR7XyBhcyBhZX1mcm9tIi4vRE9DRkRUY1kuanMiO2ltcG9ydHtvIGFzIHNlLF8gYXMgaWUscyBhcyBGfWZyb20iLi9CdUxTdUE4TS5qcyI7aW1wb3J0e18gYXMgY2V9ZnJvbSIuL0NHWGdTTVpoLmpzIjtpbXBvcnR7XyBhcyBsZX1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIHJlfWZyb20iLi80bEhteUhiSC5qcyI7aW1wb3J0e18gYXMgZGV9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vQjdzNXBqalIuanMiO2ltcG9ydCIuL0NjNnppaC1SLmpzIjtpbXBvcnQiLi9naHFZYklTVC5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2NvbnN0IHVlPXtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LG1lPSQoe19fbmFtZToiUHJvamVjdEZvcm0iLHByb3BzOntpbml0aWFsVmFsdWVzOnt9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic3VibWl0IiwiY2FuY2VsIl0sc2V0dXAoYSx7ZW1pdDpyfSl7Y29uc3Qgcz1hLG09cixvPXNlKHtuYW1lOkYoKS5taW4oMSwiTmFtZSBpcyByZXF1aXJlZCIpLm1heCgyMDApLGRlc2NyaXB0aW9uOkYoKS5tYXgoMmUzKS5vcHRpb25hbCgpLHN0YXR1czppZShbImFjdGl2ZSIsImFyY2hpdmVkIl0pfSksZT16KHtuYW1lOnMuaW5pdGlhbFZhbHVlcz8ubmFtZT8/IiIsZGVzY3JpcHRpb246cy5pbml0aWFsVmFsdWVzPy5kZXNjcmlwdGlvbj8/IiIsc3RhdHVzOnMuaW5pdGlhbFZhbHVlcz8uc3RhdHVzPz8iYWN0aXZlIn0pLHY9W3tsYWJlbDoiQWN0aXZlIix2YWx1ZToiYWN0aXZlIn0se2xhYmVsOiJBcmNoaXZlZCIsdmFsdWU6ImFyY2hpdmVkIn1dO2Z1bmN0aW9uIHAoXyl7bSgic3VibWl0IixfLmRhdGEpfXJldHVybihfLGkpPT57Y29uc3QgYj1NLGc9QSxoPVQsdz1ILHg9QixVPWFlO3JldHVybiBkKCksSShVLHtzY2hlbWE6bihvKSxzdGF0ZTpuKGUpLGNsYXNzOiJzcGFjZS15LTQiLG9uU3VibWl0OnB9LHtkZWZhdWx0OnUoKCk9Plt0KGcse2xhYmVsOiJOYW1lIixuYW1lOiJuYW1lIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6dSgoKT0+W3QoYix7bW9kZWxWYWx1ZTpuKGUpLm5hbWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMF18fChpWzBdPWo9Pm4oZSkubmFtZT1qKSxwbGFjZWhvbGRlcjoiUHJvamVjdCBuYW1lIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLHQoZyx7bGFiZWw6IkRlc2NyaXB0aW9uIixuYW1lOiJkZXNjcmlwdGlvbiJ9LHtkZWZhdWx0OnUoKCk9Plt0KGgse21vZGVsVmFsdWU6bihlKS5kZXNjcmlwdGlvbiwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVsxXXx8KGlbMV09aj0+bihlKS5kZXNjcmlwdGlvbj1qKSxwbGFjZWhvbGRlcjoiT3B0aW9uYWwgZGVzY3JpcHRpb24iLHJvd3M6MyxjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLHQoZyx7bGFiZWw6IlN0YXR1cyIsbmFtZToic3RhdHVzIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6dSgoKT0+W3Qodyx7bW9kZWxWYWx1ZTpuKGUpLnN0YXR1cywib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVsyXXx8KGlbMl09aj0+bihlKS5zdGF0dXM9aiksaXRlbXM6diwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxQKCJkaXYiLHVlLFt0KHgse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazppWzNdfHwoaVszXT1qPT5tKCJjYW5jZWwiKSl9KSx0KHgse3R5cGU6InN1Ym1pdCIsbGFiZWw6IlNhdmUiLGxvYWRpbmc6YS5sb2FkaW5nfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9LDgsWyJzY2hlbWEiLCJzdGF0ZSJdKX19fSkscGU9T2JqZWN0LmFzc2lnbihtZSx7X19uYW1lOiJQcm9qZWN0Rm9ybSJ9KSxfZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxmZT17Y2xhc3M6ImZsZXgtMSBtaW4tdy0wIn0samU9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LHZlPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIG10LTAuNSB0cnVuY2F0ZSJ9LGJlPSQoe19fbmFtZToiUHJvamVjdEl0ZW0iLHByb3BzOntwcm9qZWN0Ont9fSxlbWl0czpbImVkaXQiLCJkZWxldGUiXSxzZXR1cChhLHtlbWl0OnJ9KXtjb25zdCBzPWEsbT1yLG89W1t7bGFiZWw6IlZpZXciLGljb246ImktbHVjaWRlLWV5ZSIsdG86YC9wcm9qZWN0cy8ke3MucHJvamVjdC5pZH1gfSx7bGFiZWw6IkVkaXQiLGljb246ImktbHVjaWRlLXBlbmNpbCIsb25TZWxlY3Q6KCk9Pm0oImVkaXQiLHMucHJvamVjdCl9LHtsYWJlbDoiRGVsZXRlIixpY29uOiJpLWx1Y2lkZS10cmFzaC0yIixjb2xvcjoiZXJyb3IiLG9uU2VsZWN0OigpPT5tKCJkZWxldGUiLHMucHJvamVjdCl9XV07cmV0dXJuKGUsdik9Pntjb25zdCBwPUcsXz1sZSxpPUIsYj1yZTtyZXR1cm4gZCgpLGYoImRpdiIsX2UsW1AoImRpdiIsZmUsW1AoImRpdiIsamUsW3QocCx7dG86YC9wcm9qZWN0cy8ke2EucHJvamVjdC5pZH1gLGNsYXNzOiJmb250LW1lZGl1bSB0ZXh0LWhpZ2hsaWdodGVkIGhvdmVyOnVuZGVybGluZSB0cnVuY2F0ZSJ9LHtkZWZhdWx0OnUoKCk9PltOKFYoYS5wcm9qZWN0Lm5hbWUpLDEpXSksXzoxfSw4LFsidG8iXSksdChfLHtjb2xvcjphLnByb2plY3Quc3RhdHVzPT09ImFjdGl2ZSI/InN1Y2Nlc3MiOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6dSgoKT0+W04oVihhLnByb2plY3Quc3RhdHVzKSwxKV0pLF86MX0sOCxbImNvbG9yIl0pXSksYS5wcm9qZWN0LmRlc2NyaXB0aW9uPyhkKCksZigicCIsdmUsVihhLnByb2plY3QuZGVzY3JpcHRpb24pLDEpKTpLKCIiLCEwKV0pLHQoYix7aXRlbXM6b30se2RlZmF1bHQ6dSgoKT0+W3QoaSx7aWNvbjoiaS1sdWNpZGUtZWxsaXBzaXMtdmVydGljYWwiLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc2l6ZToic20ifSldKSxfOjF9KV0pfX19KSxnZT1PYmplY3QuYXNzaWduKGJlLHtfX25hbWU6IlByb2plY3RJdGVtIn0pLHllPXtrZXk6MCxjbGFzczoic3BhY2UteS0zIn0sUGU9e2tleToxLGNsYXNzOiJ0ZXh0LWNlbnRlciBweS0xMiB0ZXh0LW11dGVkIn0seGU9e2tleToyLGNsYXNzOiJzcGFjZS15LTMifSwkZT0kKHtfX25hbWU6IlByb2plY3RMaXN0Iixwcm9wczp7cHJvamVjdHM6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAoYSx7ZW1pdDpyfSl7Y29uc3Qgcz1yO3JldHVybihtLG8pPT57Y29uc3QgZT1jZSx2PVI7cmV0dXJuIGQoKSxmKCJkaXYiLG51bGwsW2EubG9hZGluZz8oZCgpLGYoImRpdiIseWUsWyhkKCksZihFLG51bGwsQygzLHA9PnQoZSx7a2V5OnAsY2xhc3M6ImgtMTYgcm91bmRlZC1sZyJ9KSksNjQpKV0pKTphLnByb2plY3RzLmxlbmd0aD09PTA/KGQoKSxmKCJkaXYiLFBlLFt0KHYse25hbWU6ImktbHVjaWRlLWZvbGRlci1rYW5iYW4iLGNsYXNzOiJzaXplLTEwIG14LWF1dG8gbWItMyBvcGFjaXR5LTQwIn0pLG9bMl18fChvWzJdPVAoInAiLG51bGwsIk5vIHByb2plY3RzIHlldCIsLTEpKV0pKTooZCgpLGYoImRpdiIseGUsWyhkKCEwKSxmKEUsbnVsbCxDKGEucHJvamVjdHMscD0+KGQoKSxJKGdlLHtrZXk6cC5pZCxwcm9qZWN0OnAsb25FZGl0Om9bMF18fChvWzBdPV89PnMoImVkaXQiLF8pKSxvbkRlbGV0ZTpvWzFdfHwob1sxXT1fPT5zKCJkZWxldGUiLF8pKX0sbnVsbCw4LFsicHJvamVjdCJdKSkpLDEyOCkpXSkpXSl9fX0pLGhlPU9iamVjdC5hc3NpZ24oJGUse19fbmFtZToiUHJvamVjdExpc3QifSksd2U9U3ltYm9sKCJwcm9qZWN0cyIpLFVlPXtjbGFzczoibWF4LXctM3hsIG14LWF1dG8gcC00In0sSGU9JCh7X19uYW1lOiJpbmRleCIsc2V0dXAoYSl7Sih7dGl0bGU6IlByb2plY3RzIn0pO2NvbnN0IHI9bmUoKSxzPVEoKSxtPVMoITEpLG89UyghMSksZT1TKG51bGwpLHtkYXRhOnYsc3RhdHVzOnAsZXJyb3I6XyxyZWZyZXNoOml9PVcoInByb2plY3RzIiwoKT0+ci5mZXRjaFByb2plY3RzKCkse2RlZmF1bHQ6KCk9PltdfSk7WChfKTtjb25zdCBiPWVlKCgpPT5wLnZhbHVlPT09InBlbmRpbmciKTt0ZSh3ZSx7cHJvamVjdHM6dixmZXRjaFByb2plY3RzOmcsY3JlYXRlUHJvamVjdDpVLHVwZGF0ZVByb2plY3Q6aixkZWxldGVQcm9qZWN0OkR9KTthc3luYyBmdW5jdGlvbiBnKCl7YXdhaXQgaSgpfWZ1bmN0aW9uIGgoKXtlLnZhbHVlPW51bGwsby52YWx1ZT0hMH1mdW5jdGlvbiB3KGwpe2UudmFsdWU9bCxvLnZhbHVlPSEwfWFzeW5jIGZ1bmN0aW9uIHgobCl7bS52YWx1ZT0hMDt0cnl7Y29uc3QgYz0hIWUudmFsdWU7ZS52YWx1ZT9hd2FpdCByLnVwZGF0ZVByb2plY3QoZS52YWx1ZS5pZCxsKTphd2FpdCByLmNyZWF0ZVByb2plY3QobCksYXdhaXQgaSgpLG8udmFsdWU9ITEscy5hZGQoe3RpdGxlOmM/IlByb2plY3QgdXBkYXRlZCI6IlByb2plY3QgY3JlYXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goYyl7Y29uc3QgeT1jO3MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOnk/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXttLnZhbHVlPSExfX1hc3luYyBmdW5jdGlvbiBVKGwpe3JldHVybiByLmNyZWF0ZVByb2plY3QobCl9YXN5bmMgZnVuY3Rpb24gaihsLGMpe3JldHVybiByLnVwZGF0ZVByb2plY3QobCxjKX1hc3luYyBmdW5jdGlvbiBEKGwpe2F3YWl0IHIuZGVsZXRlUHJvamVjdChsKSxhd2FpdCBpKCl9YXN5bmMgZnVuY3Rpb24gTyhsKXt0cnl7YXdhaXQgRChsLmlkKSxzLmFkZCh7dGl0bGU6IlByb2plY3QgZGVsZXRlZCIsY29sb3I6InN1Y2Nlc3MifSl9Y2F0Y2goYyl7Y29uc3QgeT1jO3MuYWRkKHt0aXRsZToiRXJyb3IiLGRlc2NyaXB0aW9uOnk/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9fXJldHVybihsLGMpPT57Y29uc3QgeT1CLEw9b2UscT1aO3JldHVybiBkKCksZihFLG51bGwsW3QoTCx7aWQ6InByb2plY3RzIn0se2hlYWRlcjp1KCgpPT5bdChkZSx7dGl0bGU6IlByb2plY3RzIn0se3JpZ2h0OnUoKCk9Plt0KHkse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvamVjdCIsb25DbGljazpjWzBdfHwoY1swXT1rPT5oKCkpfSldKSxfOjF9KV0pLGJvZHk6dSgoKT0+W1AoImRpdiIsVWUsW3QoaGUse3Byb2plY3RzOm4odiksbG9hZGluZzpuKGIpLG9uRWRpdDp3LG9uRGVsZXRlOk99LG51bGwsOCxbInByb2plY3RzIiwibG9hZGluZyJdKV0pXSksXzoxfSksdChxLHtvcGVuOm4obyksIm9uVXBkYXRlOm9wZW4iOmNbMl18fChjWzJdPWs9Plkobyk/by52YWx1ZT1rOm51bGwpLHRpdGxlOm4oZSk/IkVkaXQgcHJvamVjdCI6Ik5ldyBwcm9qZWN0In0se2JvZHk6dSgoKT0+W3QocGUseyJpbml0aWFsLXZhbHVlcyI6bihlKT97Li4ubihlKSxkZXNjcmlwdGlvbjpuKGUpLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOm4obSksb25TdWJtaXQ6eCxvbkNhbmNlbDpjWzFdfHwoY1sxXT1rPT5vLnZhbHVlPSExKX0sbnVsbCw4LFsiaW5pdGlhbC12YWx1ZXMiLCJsb2FkaW5nIl0pXSksXzoxfSw4LFsib3BlbiIsInRpdGxlIl0pXSw2NCl9fX0pO2V4cG9ydHtIZSBhcyBkZWZhdWx0fTsK", "/_nuxt/CqyWrNNx.js": "aW1wb3J0e18gYXMgdX1mcm9tIi4vRFR2WFQtblIuanMiO2ltcG9ydHtffWZyb20iLi9DY01NRjFnOS5qcyI7aW1wb3J0e2YgYXMgcCx1IGFzIGQsbiBhcyBnLG8gYXMgZixoIGFzIGIsdyBhcyBlLGEgYXMgaCxiIGFzIGksTyBhcyB4LGkgYXMgeSxsIGFzIG8sUSBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgTn1mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtfIGFzIFN9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9EeENXUXNubC5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vXzJsU2RyMTMuanMiO2ltcG9ydCIuL0NYb2M0VUVSLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3Qgdz17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCBsZzptYXgtdy0yeGwgbXgtYXV0byJ9LHo9cCh7X19uYW1lOiJzZXR0aW5ncyIsc2V0dXAoQil7ZCh7dGl0bGU6IlNldHRpbmdzIn0pO2NvbnN0IHM9ZygpLG49bygoKT0+cy5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSksYT1vKCgpPT57Y29uc3QgdD1be2xhYmVsOiJHZW5lcmFsIixpY29uOiJpLWx1Y2lkZS11c2VyIix0bzoiL3NldHRpbmdzIixleGFjdDohMH1dO3JldHVybiB0LnB1c2goe2xhYmVsOiJOb3RpZmljYXRpb25zIixpY29uOiJpLWx1Y2lkZS1iZWxsIix0bzoiL3NldHRpbmdzL25vdGlmaWNhdGlvbnMifSksayhuLnZhbHVlLCJiaWxsaW5nOnJlYWQiKSYmdC5wdXNoKHtsYWJlbDoiQmlsbGluZyIsaWNvbjoiaS1sdWNpZGUtY3JlZGl0LWNhcmQiLHRvOiIvc2V0dGluZ3MvYmlsbGluZyJ9KSx0LnB1c2goe2xhYmVsOiJTZWN1cml0eSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkIix0bzoiL3NldHRpbmdzL3NlY3VyaXR5In0pLFt0LFt7bGFiZWw6IkRvY3VtZW50YXRpb24iLGljb246ImktbHVjaWRlLWJvb2stb3BlbiIsdG86Imh0dHBzOi8vdWkubnV4dC5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbGF0aW9uL251eHQiLHRhcmdldDoiX2JsYW5rIn1dXX0pO3JldHVybih0LFUpPT57Y29uc3QgbD11LGM9XyxyPXgsbT1OO3JldHVybiBmKCksYihtLHtpZDoic2V0dGluZ3MiLHVpOntib2R5OiJsZzpweS0xMiJ9fSx7aGVhZGVyOmUoKCk9PltpKFMse3RpdGxlOiJTZXR0aW5ncyJ9KSxpKGMsbnVsbCx7ZGVmYXVsdDplKCgpPT5baShsLHtpdGVtczp5KGEpLGhpZ2hsaWdodDoiIixjbGFzczoiLW14LTEgZmxleC0xIn0sbnVsbCw4LFsiaXRlbXMiXSldKSxfOjF9KV0pLGJvZHk6ZSgoKT0+W2goImRpdiIsdyxbaShyKV0pXSksXzoxfSl9fX0pO2V4cG9ydHt6IGFzIGRlZmF1bHR9Owo=", "/_nuxt/CsK51qtd.js": "aW1wb3J0e199ZnJvbSIuL0RUdlhULW5SLmpzIjtpbXBvcnR7XyBhcyBwfWZyb20iLi9DY01NRjFnOS5qcyI7aW1wb3J0e2YgYXMgdSx1IGFzIGQsbiBhcyBmLG8gYXMgZyxoIGFzIGIsdyBhcyB0LGEgYXMgaCxiIGFzIG8sTyBhcyB4LGkgYXMgeixsIGFzIGUsUSBhcyB2fWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgd31mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtfIGFzIHl9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9EeENXUXNubC5qcyI7aW1wb3J0Ii4vQ1lhbXpMbTUuanMiO2ltcG9ydCIuL0R2ZGh5cERpLmpzIjtpbXBvcnQiLi9CdDhTMGRtbC5qcyI7aW1wb3J0Ii4vXzJsU2RyMTMuanMiO2ltcG9ydCIuL0NYb2M0VUVSLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgTj17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTQgc206Z2FwLTYgbGc6Z2FwLTEyIHctZnVsbCBsZzptYXgtdy00eGwgbXgtYXV0byJ9LFQ9dSh7X19uYW1lOiJvcmdhbml6YXRpb24iLHNldHVwKFUpe2Qoe3RpdGxlOiJPcmdhbml6YXRpb24ifSk7Y29uc3QgYT1mKCksbj1lKCgpPT5hLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdKSxzPWUoKCk9Pntjb25zdCBpPVt7bGFiZWw6IkdlbmVyYWwiLGljb246ImktbHVjaWRlLWJ1aWxkaW5nIix0bzoiL29yZ2FuaXphdGlvbiIsZXhhY3Q6ITB9LHtsYWJlbDoiTWVtYmVycyIsaWNvbjoiaS1sdWNpZGUtdXNlcnMiLHRvOiIvb3JnYW5pemF0aW9uL21lbWJlcnMifSx7bGFiZWw6IlJvbGVzIixpY29uOiJpLWx1Y2lkZS1zaGllbGQiLHRvOiIvb3JnYW5pemF0aW9uL3JvbGVzIn1dO3JldHVybiB2KG4udmFsdWUsImJpbGxpbmc6cmVhZCIpJiZpLnB1c2goe2xhYmVsOiJJbnZvaWNlIixpY29uOiJpLWx1Y2lkZS1maWxlLXRleHQiLHRvOiIvb3JnYW5pemF0aW9uL2ludm9pY2UifSksW2ldfSk7cmV0dXJuKGksJCk9Pntjb25zdCByPV8sbD1wLGM9eCxtPXc7cmV0dXJuIGcoKSxiKG0se2lkOiJvcmdhbml6YXRpb24iLHVpOntib2R5OiJsZzpweS0xMiJ9fSx7aGVhZGVyOnQoKCk9PltvKHkse3RpdGxlOiJPcmdhbml6YXRpb24ifSksbyhsLG51bGwse2RlZmF1bHQ6dCgoKT0+W28ocix7aXRlbXM6eihzKSxoaWdobGlnaHQ6IiIsY2xhc3M6Ii1teC0xIGZsZXgtMSJ9LG51bGwsOCxbIml0ZW1zIl0pXSksXzoxfSldKSxib2R5OnQoKCk9PltoKCJkaXYiLE4sW28oYyldKV0pLF86MX0pfX19KTtleHBvcnR7VCBhcyBkZWZhdWx0fTsK", "/_nuxt/Cta15sG-.js": "aW1wb3J0e3IgYXMgayxiRiBhcyBBLFIgYXMgSSxjNSBhcyBGLGJiIGFzIEIsYWUgYXMgVixhNiBhcyBILGE3IGFzIHEsYXggYXMgSixpIGFzIE4sYzYgYXMgVyxHIGFzIHgsbCBhcyBULEogYXMgJCxLIGFzIEcsbyBhcyBLLGggYXMgWSx3IGFzIFEsTCBhcyBaLE0gYXMgZWUsUCBhcyB0ZSxOIGFzIFh9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBvZT0oKCk9Pntjb25zdCBlPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShudWxsKSxlfSkoKTtmdW5jdGlvbiBuZShlLGkpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzdHIgbXVzdCBiZSBhIHN0cmluZyIpO2NvbnN0IG89bmV3IG9lLHQ9aXx8e30sbj10LmRlY29kZXx8aWU7bGV0IHM9MDtmb3IoO3M8ZS5sZW5ndGg7KXtjb25zdCBhPWUuaW5kZXhPZigiPSIscyk7aWYoYT09PS0xKWJyZWFrO2xldCBsPWUuaW5kZXhPZigiOyIscyk7aWYobD09PS0xKWw9ZS5sZW5ndGg7ZWxzZSBpZihsPGEpe3M9ZS5sYXN0SW5kZXhPZigiOyIsYS0xKSsxO2NvbnRpbnVlfWNvbnN0IHU9ZS5zbGljZShzLGEpLnRyaW0oKTtpZih0Py5maWx0ZXImJiF0Py5maWx0ZXIodSkpe3M9bCsxO2NvbnRpbnVlfWlmKG9bdV09PT12b2lkIDApe2xldCBmPWUuc2xpY2UoYSsxLGwpLnRyaW0oKTtmLmNvZGVQb2ludEF0KDApPT09MzQmJihmPWYuc2xpY2UoMSwtMSkpLG9bdV09YWUoZixuKX1zPWwrMX1yZXR1cm4gb31mdW5jdGlvbiBpZShlKXtyZXR1cm4gZS5pbmNsdWRlcygiJSIpP2RlY29kZVVSSUNvbXBvbmVudChlKTplfWZ1bmN0aW9uIGFlKGUsaSl7dHJ5e3JldHVybiBpKGUpfWNhdGNoe3JldHVybiBlfX1jb25zdCBNPS9eW1x1MDAwOVx1MDAyMC1cdTAwN0VcdTAwODAtXHUwMEZGXSskLztmdW5jdGlvbiBVKGUsaSxvKXtjb25zdCB0PW98fHt9LG49dC5lbmNvZGV8fGVuY29kZVVSSUNvbXBvbmVudDtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZW5jb2RlIGlzIGludmFsaWQiKTtpZighTS50ZXN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IG5hbWUgaXMgaW52YWxpZCIpO2NvbnN0IHM9bihpKTtpZihzJiYhTS50ZXN0KHMpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHZhbCBpcyBpbnZhbGlkIik7bGV0IGE9ZSsiPSIrcztpZih0Lm1heEFnZSE9PXZvaWQgMCYmdC5tYXhBZ2UhPT1udWxsKXtjb25zdCBsPXQubWF4QWdlLTA7aWYoTnVtYmVyLmlzTmFOKGwpfHwhTnVtYmVyLmlzRmluaXRlKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiBtYXhBZ2UgaXMgaW52YWxpZCIpO2ErPSI7IE1heC1BZ2U9IitNYXRoLmZsb29yKGwpfWlmKHQuZG9tYWluKXtpZighTS50ZXN0KHQuZG9tYWluKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gZG9tYWluIGlzIGludmFsaWQiKTthKz0iOyBEb21haW49Iit0LmRvbWFpbn1pZih0LnBhdGgpe2lmKCFNLnRlc3QodC5wYXRoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gcGF0aCBpcyBpbnZhbGlkIik7YSs9IjsgUGF0aD0iK3QucGF0aH1pZih0LmV4cGlyZXMpe2lmKCFyZSh0LmV4cGlyZXMpfHxOdW1iZXIuaXNOYU4odC5leHBpcmVzLnZhbHVlT2YoKSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uIGV4cGlyZXMgaXMgaW52YWxpZCIpO2ErPSI7IEV4cGlyZXM9Iit0LmV4cGlyZXMudG9VVENTdHJpbmcoKX1pZih0Lmh0dHBPbmx5JiYoYSs9IjsgSHR0cE9ubHkiKSx0LnNlY3VyZSYmKGErPSI7IFNlY3VyZSIpLHQucHJpb3JpdHkpc3dpdGNoKHR5cGVvZiB0LnByaW9yaXR5PT0ic3RyaW5nIj90LnByaW9yaXR5LnRvTG93ZXJDYXNlKCk6dC5wcmlvcml0eSl7Y2FzZSJsb3ciOnthKz0iOyBQcmlvcml0eT1Mb3ciO2JyZWFrfWNhc2UibWVkaXVtIjp7YSs9IjsgUHJpb3JpdHk9TWVkaXVtIjticmVha31jYXNlImhpZ2giOnthKz0iOyBQcmlvcml0eT1IaWdoIjticmVha31kZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiBwcmlvcml0eSBpcyBpbnZhbGlkIil9aWYodC5zYW1lU2l0ZSlzd2l0Y2godHlwZW9mIHQuc2FtZVNpdGU9PSJzdHJpbmciP3Quc2FtZVNpdGUudG9Mb3dlckNhc2UoKTp0LnNhbWVTaXRlKXtjYXNlITA6e2ErPSI7IFNhbWVTaXRlPVN0cmljdCI7YnJlYWt9Y2FzZSJsYXgiOnthKz0iOyBTYW1lU2l0ZT1MYXgiO2JyZWFrfWNhc2Uic3RyaWN0Ijp7YSs9IjsgU2FtZVNpdGU9U3RyaWN0IjticmVha31jYXNlIm5vbmUiOnthKz0iOyBTYW1lU2l0ZT1Ob25lIjticmVha31kZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiBzYW1lU2l0ZSBpcyBpbnZhbGlkIil9cmV0dXJuIHQucGFydGl0aW9uZWQmJihhKz0iOyBQYXJ0aXRpb25lZCIpLGF9ZnVuY3Rpb24gcmUoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PSJbb2JqZWN0IERhdGVdInx8ZSBpbnN0YW5jZW9mIERhdGV9ZnVuY3Rpb24gZyhlKXtpZih0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuIGU7dmFyIGksbyx0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtpZih0PT09IltvYmplY3QgT2JqZWN0XSIpe2lmKGUuY29uc3RydWN0b3IhPT1PYmplY3QmJnR5cGVvZiBlLmNvbnN0cnVjdG9yPT0iZnVuY3Rpb24iKXtvPW5ldyBlLmNvbnN0cnVjdG9yO2ZvcihpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmb1tpXSE9PWVbaV0mJihvW2ldPWcoZVtpXSkpfWVsc2V7bz17fTtmb3IoaSBpbiBlKWk9PT0iX19wcm90b19fIj9PYmplY3QuZGVmaW5lUHJvcGVydHkobyxpLHt2YWx1ZTpnKGVbaV0pLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6b1tpXT1nKGVbaV0pfXJldHVybiBvfWlmKHQ9PT0iW29iamVjdCBBcnJheV0iKXtmb3IoaT1lLmxlbmd0aCxvPUFycmF5KGkpO2ktLTspb1tpXT1nKGVbaV0pO3JldHVybiBvfXJldHVybiB0PT09IltvYmplY3QgU2V0XSI/KG89bmV3IFNldCxlLmZvckVhY2goZnVuY3Rpb24obil7by5hZGQoZyhuKSl9KSxvKTp0PT09IltvYmplY3QgTWFwXSI/KG89bmV3IE1hcCxlLmZvckVhY2goZnVuY3Rpb24obixzKXtvLnNldChnKHMpLGcobikpfSksbyk6dD09PSJbb2JqZWN0IERhdGVdIj9uZXcgRGF0ZSgrZSk6dD09PSJbb2JqZWN0IFJlZ0V4cF0iPyhvPW5ldyBSZWdFeHAoZS5zb3VyY2UsZS5mbGFncyksby5sYXN0SW5kZXg9ZS5sYXN0SW5kZXgsbyk6dD09PSJbb2JqZWN0IERhdGFWaWV3XSI/bmV3IGUuY29uc3RydWN0b3IoZyhlLmJ1ZmZlcikpOnQ9PT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iP2Uuc2xpY2UoMCk6dC5zbGljZSgtNik9PT0iQXJyYXldIj9uZXcgZS5jb25zdHJ1Y3RvcihlKTplfWZ1bmN0aW9uIHNlKGUpe2lmKGUhPT0idW5kZWZpbmVkIil0cnl7Y29uc3QgaT1KU09OLnBhcnNlKGUpO3JldHVybiB0eXBlb2YgaT09Im51bWJlciImJlN0cmluZyhpKSE9PWU/ZTppfWNhdGNoe3JldHVybiBlfX1jb25zdCBsZT17cGF0aDoiLyIsd2F0Y2g6ITAsZGVjb2RlOmU9PnNlKGRlY29kZVVSSUNvbXBvbmVudChlKSksZW5jb2RlOmU9PntpZih0eXBlb2YgZSE9InN0cmluZyJ8fGU9PT0idW5kZWZpbmVkIilyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGUpKTt0cnl7aWYodHlwZW9mIEpTT04ucGFyc2UoZSkhPSJzdHJpbmciKXJldHVybiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe31yZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpfSxyZWZyZXNoOiExfSxMPWdsb2JhbFRoaXMuY29va2llU3RvcmU7ZnVuY3Rpb24gdWUoZSxpKXtjb25zdCBvPXsuLi5sZSwuLi5pfTtvLmZpbHRlcj8/PWY9PmY9PT1lO2NvbnN0IHQ9XyhvKXx8e307bGV0IG47by5tYXhBZ2UhPT12b2lkIDA/bj1vLm1heEFnZSoxZTM6by5leHBpcmVzJiYobj1vLmV4cGlyZXMuZ2V0VGltZSgpLURhdGUubm93KCkpO2NvbnN0IHM9biE9PXZvaWQgMCYmbjw9MCxhPXN8fHRbZV09PT12b2lkIDB8fHRbZV09PT1udWxsLGw9ZyhzP3ZvaWQgMDp0W2VdPz9vLmRlZmF1bHQ/LigpKSx1PW4mJiFzP2RlKGwsbixvLndhdGNoJiZvLndhdGNoIT09InNoYWxsb3ciKTprKGwpO3tsZXQgZj1udWxsO3RyeXshTCYmdHlwZW9mIEJyb2FkY2FzdENoYW5uZWw8InUiJiYoZj1uZXcgQnJvYWRjYXN0Q2hhbm5lbChgbnV4dDpjb29raWVzOiR7ZX1gKSl9Y2F0Y2h7fWNvbnN0IHY9KG09ITEpPT57IW0mJihvLnJlYWRvbmx5fHxWKHUudmFsdWUsdFtlXSkpfHwoZmUoZSx1LnZhbHVlLG8pLHRbZV09Zyh1LnZhbHVlKSxmPy5wb3N0TWVzc2FnZSh7dmFsdWU6by5lbmNvZGUodS52YWx1ZSl9KSl9LFM9bT0+e2NvbnN0IHo9bS5yZWZyZXNoP18obyk/LltlXTpvLmRlY29kZShtLnZhbHVlKTtwPSEwLHUudmFsdWU9eix0W2VdPWcoeiksSCgoKT0+e3A9ITF9KX07bGV0IHA9ITE7Y29uc3QgUj0hIUYoKTtpZihSJiZBKCgpPT57cD0hMCx2KCksZj8uY2xvc2UoKX0pLEwpe2NvbnN0IG09ej0+e2NvbnN0IEQ9ei5jaGFuZ2VkLmZpbmQodz0+dy5uYW1lPT09ZSksTz16LmRlbGV0ZWQuZmluZCh3PT53Lm5hbWU9PT1lKTtEJiZTKHt2YWx1ZTpELnZhbHVlfSksTyYmUyh7dmFsdWU6bnVsbH0pfTtMLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsbSksUiYmQSgoKT0+TC5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLG0pKX1lbHNlIGYmJihmLm9ubWVzc2FnZT0oe2RhdGE6bX0pPT5TKG0pKTtvLndhdGNoJiZJKHUsKCk9PntwfHx2KG8ucmVmcmVzaCl9LHtkZWVwOm8ud2F0Y2ghPT0ic2hhbGxvdyJ9KSxhJiZ2KGEpfXJldHVybiB1fWZ1bmN0aW9uIF8oZT17fSl7cmV0dXJuIG5lKGRvY3VtZW50LmNvb2tpZSxlKX1mdW5jdGlvbiBjZShlLGksbz17fSl7cmV0dXJuIGk9PW51bGw/VShlLGksey4uLm8sbWF4QWdlOi0xfSk6VShlLGksbyl9ZnVuY3Rpb24gZmUoZSxpLG89e30pe2RvY3VtZW50LmNvb2tpZT1jZShlLGksbyl9Y29uc3QgUD0yMTQ3NDgzNjQ3O2Z1bmN0aW9uIGRlKGUsaSxvKXtsZXQgdCxuLHM9MDtjb25zdCBhPW8/ayhlKTp7dmFsdWU6ZX07cmV0dXJuIEYoKSYmQSgoKT0+e24/LigpLGNsZWFyVGltZW91dCh0KX0pLEIoKGwsdSk9PntvJiYobj1JKGEsdSkpO2Z1bmN0aW9uIGYoKXtjb25zdCBTPWktcyxwPVM8UD9TOlA7dD1zZXRUaW1lb3V0KCgpPT57aWYocys9cCxzPGkpcmV0dXJuIGYoKTthLnZhbHVlPXZvaWQgMCx1KCl9LHApfWZ1bmN0aW9uIHYoKXtzPTAsY2xlYXJUaW1lb3V0KHQpLGYoKX1yZXR1cm57Z2V0KCl7cmV0dXJuIGwoKSxhLnZhbHVlfSxzZXQoUyl7digpLGEudmFsdWU9Uyx1KCl9fX0pfWNvbnN0W21lLGhlXT1xKCJEYXNoYm9hcmRHcm91cCIpO2Z1bmN0aW9uIGJlKGUsaT17fSx7Y29sbGFwc2VkOm89ayghMSl9PXt9KXtjb25zdCB0PWsobnVsbCksbj1UKCgpPT4oe3NpZGU6ImxlZnQiLG1pblNpemU6MCxtYXhTaXplOjEwMCxkZWZhdWx0U2l6ZTowLHN0b3JhZ2U6ImNvb2tpZSIscGVyc2lzdGVudDohMCxjb2xsYXBzaWJsZTohMSxjb2xsYXBzZWRTaXplOjAscmVzaXphYmxlOiEwLHVuaXQ6IiUiLC4uLngoaSk/aS52YWx1ZTppfSkpLHtkaXI6c309SigpLGE9e3NpemU6bi52YWx1ZS5kZWZhdWx0U2l6ZSxjb2xsYXBzZWQ6TihvKT8/ITF9LGw9bi52YWx1ZS5wZXJzaXN0ZW50JiYobi52YWx1ZS5yZXNpemFibGV8fG4udmFsdWUuY29sbGFwc2libGUpP24udmFsdWUuc3RvcmFnZT09PSJjb29raWUiP3VlKGUse2RlZmF1bHQ6KCk9PmF9KTpXKGUsYSk6ayhhKSx1PVQoe2dldDooKT0+bC52YWx1ZS5jb2xsYXBzZWQsc2V0OnI9PntuLnZhbHVlLmNvbGxhcHNpYmxlJiYoeChvKSYmKG8udmFsdWU9ciksbC52YWx1ZS5jb2xsYXBzZWQ9cil9fSksZj1rKG4udmFsdWUuZGVmYXVsdFNpemUpLHY9VCh7Z2V0OigpPT5sLnZhbHVlLnNpemUsc2V0OnI9PntsLnZhbHVlLnNpemU9cn19KSxTPVQoKCk9PnUudmFsdWU/bi52YWx1ZS5jb2xsYXBzZWRTaXplOnYudmFsdWUpLHA9ayghMSksUj0ocixjLEMpPT57aWYoIXQudmFsdWV8fCFuLnZhbHVlLnJlc2l6YWJsZSlyZXR1cm47Y29uc3QgRT10LnZhbHVlLnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRofHwxLHk9cy52YWx1ZT09PSJydGwiO2xldCBkO3k/ZD1uLnZhbHVlLnNpZGU9PT0ibGVmdCI/Yy1yLmNsaWVudFg6ci5jbGllbnRYLWM6ZD1uLnZhbHVlLnNpZGU9PT0ibGVmdCI/ci5jbGllbnRYLWM6Yy1yLmNsaWVudFg7Y29uc3QgaD1DK2Q7bGV0IGI7aWYobi52YWx1ZS51bml0PT09InJlbSIpe2NvbnN0IGo9TnVtYmVyLnBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKTtiPWgvan1lbHNlIG4udmFsdWUudW5pdD09PSJweCI/Yj1oOmI9aC9FKjEwMDtpZihuLnZhbHVlLmNvbGxhcHNpYmxlJiZiPG4udmFsdWUuY29sbGFwc2VkU2l6ZSs0KXt3KCEwKTtyZXR1cm59ZWxzZSB1LnZhbHVlJiZ3KCExKTt2LnZhbHVlPU1hdGgubWluKG4udmFsdWUubWF4U2l6ZSxNYXRoLm1heChuLnZhbHVlLm1pblNpemUsYikpfSxtPXI9PntpZighdC52YWx1ZXx8IW4udmFsdWUucmVzaXphYmxlKXJldHVybjtyLnByZXZlbnREZWZhdWx0KCksci5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBjPXQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7aWYoIWMpcmV0dXJuO2NvbnN0IEM9ci5jbGllbnRYLEU9YztwLnZhbHVlPSEwO2NvbnN0IHk9aD0+e1IoaCxDLEUpfSxkPSgpPT57cC52YWx1ZT0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGQpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHkpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGQpfSx6PShyLGMsQyk9PntpZighdC52YWx1ZXx8IW4udmFsdWUucmVzaXphYmxlfHwhci50b3VjaGVzWzBdKXJldHVybjtjb25zdCBFPXQudmFsdWUucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGh8fDEseT1zLnZhbHVlPT09InJ0bCI7bGV0IGQ7eT9kPW4udmFsdWUuc2lkZT09PSJsZWZ0Ij9jLXIudG91Y2hlc1swXS5jbGllbnRYOnIudG91Y2hlc1swXS5jbGllbnRYLWM6ZD1uLnZhbHVlLnNpZGU9PT0ibGVmdCI/ci50b3VjaGVzWzBdLmNsaWVudFgtYzpjLXIudG91Y2hlc1swXS5jbGllbnRYO2NvbnN0IGg9QytkO2xldCBiO2lmKG4udmFsdWUudW5pdD09PSJyZW0iKXtjb25zdCBqPU51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSk7Yj1oL2p9ZWxzZSBuLnZhbHVlLnVuaXQ9PT0icHgiP2I9aDpiPWgvRSoxMDA7aWYobi52YWx1ZS5jb2xsYXBzaWJsZSYmYjxuLnZhbHVlLmNvbGxhcHNlZFNpemUrNCl7dyghMCk7cmV0dXJufWVsc2UgdS52YWx1ZSYmdyghMSk7di52YWx1ZT1NYXRoLm1pbihuLnZhbHVlLm1heFNpemUsTWF0aC5tYXgobi52YWx1ZS5taW5TaXplLGIpKX0sRD1yPT57aWYoIXQudmFsdWV8fCFuLnZhbHVlLnJlc2l6YWJsZXx8IXIudG91Y2hlc1swXSlyZXR1cm47ci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3QgYz10LnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO2lmKCFjKXJldHVybjtjb25zdCBDPXIudG91Y2hlc1swXS5jbGllbnRYLEU9YztwLnZhbHVlPSEwO2NvbnN0IHk9aD0+e3ooaCxDLEUpfSxkPSgpPT57cC52YWx1ZT0hMSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixkKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsZCl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIseSx7cGFzc2l2ZTohMX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixkKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsZCl9LE89cj0+eyF0LnZhbHVlfHwhbi52YWx1ZS5yZXNpemFibGV8fChyLnByZXZlbnREZWZhdWx0KCksci5zdG9wUHJvcGFnYXRpb24oKSx1LnZhbHVlJiZ3KCExKSx2LnZhbHVlPW4udmFsdWUuZGVmYXVsdFNpemUpfSx3PXI9PntpZighbi52YWx1ZS5jb2xsYXBzaWJsZSlyZXR1cm47Y29uc3QgYz1yPz8hdS52YWx1ZTtjJiYhdS52YWx1ZT9mLnZhbHVlPXYudmFsdWU6IWMmJnUudmFsdWUmJih2LnZhbHVlPWYudmFsdWUpLHUudmFsdWU9Y307cmV0dXJuIHgobykmJmwudmFsdWUuY29sbGFwc2VkJiYoby52YWx1ZT1sLnZhbHVlLmNvbGxhcHNlZCkseChvKSYmSShvLHI9PntuLnZhbHVlLmNvbGxhcHNpYmxlJiZsLnZhbHVlLmNvbGxhcHNlZCE9PXImJihsLnZhbHVlLmNvbGxhcHNlZD1yKX0pLHtlbDp0LHNpemU6Uyxpc0RyYWdnaW5nOnAsaXNDb2xsYXBzZWQ6dSxvbk1vdXNlRG93bjptLG9uVG91Y2hTdGFydDpELG9uRG91YmxlQ2xpY2s6Tyxjb2xsYXBzZTp3fX1jb25zdCBwZT17YmFzZToiaGlkZGVuIGxnOmJsb2NrIHRvdWNoLW5vbmUgc2VsZWN0LW5vbmUgY3Vyc29yLWV3LXJlc2l6ZSByZWxhdGl2ZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOmluc2V0LXktMCBiZWZvcmU6LWxlZnQtMS41IGJlZm9yZTotcmlnaHQtMS41IGJlZm9yZTp6LTEifSxnZT17X19uYW1lOiJVRGFzaGJvYXJkUmVzaXplSGFuZGxlIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgaT1lLG89JCgpLHQ9RygiZGFzaGJvYXJkUmVzaXplSGFuZGxlIixpKSxuPVQoKCk9Plgoe2V4dGVuZDpYKHBlKSwuLi5vLnVpPy5kYXNoYm9hcmRSZXNpemVIYW5kbGV8fHt9fSkpO3JldHVybihzLGEpPT4oSygpLFkoTih0ZSkse2FzOmUuYXMscm9sZToic2VwYXJhdG9yIixjbGFzczplZShuLnZhbHVlKHtjbGFzczpbTih0KT8uYmFzZSxpLmNsYXNzXX0pKX0se2RlZmF1bHQ6USgoKT0+W1oocy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX07ZXhwb3J0e2dlIGFzIF8sYmUgYXMgYSx1ZSBhcyBiLGhlIGFzIHAsbWUgYXMgdX07Cg==", "/_nuxt/CxcZrY3W.js": "aW1wb3J0e2YgYXMgQyx4IGFzIFUseSBhcyAkLG4gYXMgQSxnIGFzIE4scCBhcyBTLHogYXMgQix1IGFzIEksbyBhcyBhLGMgYXMgcyxiIGFzIGwsQSBhcyBqLGkgYXMgZSx3IGFzIG0sYSBhcyBvLGogYXMgeixrIGFzIFYsZCBhcyBwLHQgYXMgXyxGLHYgYXMgayxCIGFzIFQsciBhcyBEfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgRX1mcm9tIi4vQlNSS3FHclAuanMiO2NvbnN0IEo9e2NsYXNzOiJtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00In0sTz17a2V5OjAsY2xhc3M6InRleHQtY2VudGVyIHB5LTQifSxSPXtrZXk6MSxjbGFzczoic3BhY2UteS00In0sSD17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LE09e2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIn0sTD1DKHtfX25hbWU6Ilt0b2tlbl0iLHNldHVwKFkpe2NvbnN0IHk9VSgpLGM9JCgpLHU9eS5wYXJhbXMudG9rZW4sZj1UKCksaT1BKCksdj1OKCkse2RhdGE6bixlcnJvcjpnfT1TKGBpbnZpdGF0aW9uLSR7dX1gLCgpPT5mLmZldGNoSW52aXRhdGlvbih1KSk7QihnKSxJKHt0aXRsZTooKT0+bi52YWx1ZT9gSm9pbiAke24udmFsdWUub3JnLm5hbWV9YDoiSW52aXRhdGlvbiJ9KTtjb25zdCBkPUQoITEpO2FzeW5jIGZ1bmN0aW9uIGgoKXtpZighaS5jdXJyZW50VXNlcil7YXdhaXQgYy5wdXNoKCIvYXV0aC9sb2dpbiIpO3JldHVybn1kLnZhbHVlPSEwO3RyeXtjb25zdCByPWF3YWl0IGYuYWNjZXB0SW52aXRhdGlvbih1KTthd2FpdCBpLmZldGNoQ3VycmVudFVzZXIoKSx2LmFkZCh7dGl0bGU6YEpvaW5lZCAke3Iub3JnLm5hbWV9YCxjb2xvcjoic3VjY2VzcyJ9KSxhd2FpdCBjLnB1c2goIi9kYXNoYm9hcmQiKX1jYXRjaChyKXtjb25zdCB0PXI7di5hZGQoe3RpdGxlOiJGYWlsZWQgdG8gYWNjZXB0IGludml0YXRpb24iLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtkLnZhbHVlPSExfX1yZXR1cm4ocix0KT0+e2NvbnN0IHc9Vix4PXosYj1FO3JldHVybiBhKCkscygiZGl2IixKLFtsKGIse2NsYXNzOiJ3LWZ1bGwgbWF4LXctbWQifSxqKHtoZWFkZXI6bSgoKT0+W3RbMV18fCh0WzFdPW8oInAiLHtjbGFzczoidGV4dC1sZyBmb250LXNlbWlib2xkIn0sIiBPcmdhbml6YXRpb24gaW52aXRhdGlvbiAiLC0xKSldKSxkZWZhdWx0Om0oKCk9PltlKGcpfHwhZShuKT8oYSgpLHMoImRpdiIsTyxbbCh3LHtuYW1lOiJpLWx1Y2lkZS1jaXJjbGUteCIsY2xhc3M6InNpemUtMTIgdGV4dC1lcnJvciBteC1hdXRvIG1iLTMifSksdFsyXXx8KHRbMl09bygicCIse2NsYXNzOiJmb250LW1lZGl1bSJ9LCIgSW52aXRhdGlvbiBub3QgZm91bmQgb3IgZXhwaXJlZCAiLC0xKSksdFszXXx8KHRbM109bygicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQgbXQtMSJ9LCIgVGhlIGludml0YXRpb24gbGluayBtYXkgaGF2ZSBiZWVuIHJldm9rZWQgb3IgaXMgbm8gbG9uZ2VyIHZhbGlkLiAiLC0xKSldKSk6KGEoKSxzKCJkaXYiLFIsW28oInAiLG51bGwsW3RbNV18fCh0WzVdPXAoIiBZb3UgaGF2ZSBiZWVuIGludml0ZWQgdG8gam9pbiAiLC0xKSksbygic3Ryb25nIixudWxsLF8oZShuKS5vcmcubmFtZSksMSksZShuKS5yb2xlTmFtZT8oYSgpLHMoRix7a2V5OjB9LFt0WzRdfHwodFs0XT1wKCIgYXMgYSAiLC0xKSksbygic3Ryb25nIixudWxsLF8oZShuKS5yb2xlTmFtZSksMSldLDY0KSk6aygiIiwhMCksdFs2XXx8KHRbNl09cCgiLiAiLC0xKSldKSxlKGkpLmN1cnJlbnRVc2VyP2soIiIsITApOihhKCkscygiZGl2IixILCIgU2lnbiBpbiB0byBhY2NlcHQgdGhpcyBpbnZpdGF0aW9uLiAiKSldKSldKSxfOjJ9LFtlKG4pP3tuYW1lOiJmb290ZXIiLGZuOm0oKCk9PltvKCJkaXYiLE0sW2woeCx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOnRbMF18fCh0WzBdPXE9PmUoYykucHVzaCgiLyIpKX0pLGwoeCx7bGFiZWw6ZShpKS5jdXJyZW50VXNlcj8iQWNjZXB0IGludml0YXRpb24iOiJTaWduIGluIHRvIGFjY2VwdCIsbG9hZGluZzplKGQpLG9uQ2xpY2s6aH0sbnVsbCw4LFsibGFiZWwiLCJsb2FkaW5nIl0pXSldKSxrZXk6IjAifTp2b2lkIDBdKSwxMDI0KV0pfX19KTtleHBvcnR7TCBhcyBkZWZhdWx0fTsK", "/_nuxt/DHCwELWp.js": "aW1wb3J0e2FlIGFzIFEsYTcgYXMgZWUsZiBhcyBILGF1IGFzIEFlLGEzIGFzICQsYzcgYXMgSWUsYmMgYXMgTGUsYTkgYXMgZmUsUiBhcyBTZSxhNiBhcyBOLG8gYXMgayxoIGFzIHEsdyBhcyBWLEwgYXMgUCxpIGFzIG8sdiBhcyBwZSxQIGFzIEQsYmUgYXMgdmUsYWYgYXMgcWUsciBhcyBMLGJmIGFzIEosYzAgYXMgbWUsYiBhcyBoZSxaIGFzIHosYWIgYXMgdGUsYzggYXMgVmUsYTQgYXMgS2UsYTUgYXMgVGUsbCBhcyBCLGEyIGFzIGdlLGFhIGFzIGFlLGE4IGFzIHllLGM5IGFzIEJlLGNhIGFzIEhlLGFoIGFzIFJlLGNiIGFzIFBlLGJrIGFzIERlLGNjIGFzIE1lLGMgYXMgcmUsRiBhcyB1ZSxxIGFzIE5lLGFjIGFzIHplLGFFIGFzIE9lLGNkIGFzICRlLGJ0IGFzIEdlfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e2cgYXMgVWUsTSBhcyBXZX1mcm9tIi4vQnQ4UzBkbWwuanMiO2ltcG9ydHtWIGFzIGplfWZyb20iLi9tMjBrZEd4VS5qcyI7aW1wb3J0e3UgYXMgWWV9ZnJvbSIuL0M3WXk2dFIzLmpzIjtmdW5jdGlvbiBPKG4sYSxpKXtjb25zdCBlPW4uZmluZEluZGV4KHA9PlEocCxhKSksZj1uLmZpbmRJbmRleChwPT5RKHAsaSkpO2lmKGU9PT0tMXx8Zj09PS0xKXJldHVybltdO2NvbnN0W2QsbV09W2UsZl0uc29ydCgocCxoKT0+cC1oKTtyZXR1cm4gbi5zbGljZShkLG0rMSl9ZnVuY3Rpb24gWGUoKXtyZXR1cm57QUxUOiJBbHQiLEFSUk9XX0RPV046IkFycm93RG93biIsQVJST1dfTEVGVDoiQXJyb3dMZWZ0IixBUlJPV19SSUdIVDoiQXJyb3dSaWdodCIsQVJST1dfVVA6IkFycm93VXAiLEJBQ0tTUEFDRToiQmFja3NwYWNlIixDQVBTX0xPQ0s6IkNhcHNMb2NrIixDT05UUk9MOiJDb250cm9sIixERUxFVEU6IkRlbGV0ZSIsRU5EOiJFbmQiLEVOVEVSOiJFbnRlciIsRVNDQVBFOiJFc2NhcGUiLEYxOiJGMSIsRjEwOiJGMTAiLEYxMToiRjExIixGMTI6IkYxMiIsRjI6IkYyIixGMzoiRjMiLEY0OiJGNCIsRjU6IkY1IixGNjoiRjYiLEY3OiJGNyIsRjg6IkY4IixGOToiRjkiLEhPTUU6IkhvbWUiLE1FVEE6Ik1ldGEiLFBBR0VfRE9XTjoiUGFnZURvd24iLFBBR0VfVVA6IlBhZ2VVcCIsU0hJRlQ6IlNoaWZ0IixTUEFDRToiICIsVEFCOiJUYWIiLENUUkw6IkNvbnRyb2wiLEFTVEVSSVNLOiIqIixTUEFDRV9DT0RFOiJTcGFjZSJ9fWZ1bmN0aW9uIGRlKG4pe3JldHVybiBuPy5xdWVyeVNlbGVjdG9yKCJbZGF0YS1zdGF0ZT1jaGVja2VkXSIpfWZ1bmN0aW9uIFplKG4sYSxpKXtyZXR1cm4gbj09PXZvaWQgMD8hMTpBcnJheS5pc0FycmF5KG4pP24uc29tZShlPT5TKGUsYSxpKSk6UyhuLGEsaSl9ZnVuY3Rpb24gUyhuLGEsaSl7cmV0dXJuIG49PT12b2lkIDB8fGE9PT12b2lkIDA/ITE6dHlwZW9mIG49PSJzdHJpbmciP249PT1hOnR5cGVvZiBpPT0iZnVuY3Rpb24iP2kobixhKTp0eXBlb2YgaT09InN0cmluZyI/bj8uW2ldPT09YT8uW2ldOlEobixhKX1jb25zdFtHLEplXT1lZSgiTGlzdGJveFJvb3QiKTt2YXIgUWU9SCh7X19uYW1lOiJMaXN0Ym94Um9vdCIscHJvcHM6e21vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ2ZXJ0aWNhbCJ9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNlbGVjdGlvbkJlaGF2aW9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJ0b2dnbGUifSxoaWdobGlnaHRPbkhvdmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsImVudHJ5Rm9jdXMiLCJsZWF2ZSJdLHNldHVwKG4se2V4cG9zZTphLGVtaXQ6aX0pe2NvbnN0IGU9bixmPWkse211bHRpcGxlOmQsaGlnaGxpZ2h0T25Ib3ZlcjptLG9yaWVudGF0aW9uOnAsZGlzYWJsZWQ6aCxzZWxlY3Rpb25CZWhhdmlvcjpFLGRpcjpffT1BZShlKSx7Z2V0SXRlbXM6Yn09JCh7aXNQcm92aWRlcjohMH0pLHtoYW5kbGVUeXBlYWhlYWRTZWFyY2g6bH09SWUoKSx7cHJpbWl0aXZlRWxlbWVudDpjLGN1cnJlbnRFbGVtZW50OnJ9PXZlKCksdj1YZSgpLEM9TGUoXyksRj1xZShyKSx3PUwoKSxLPUwoITEpLFQ9TCghMCksZz1mZShlLCJtb2RlbFZhbHVlIixmLHtkZWZhdWx0VmFsdWU6ZS5kZWZhdWx0VmFsdWU/PyhkLnZhbHVlP1tdOnZvaWQgMCkscGFzc2l2ZTplLm1vZGVsVmFsdWU9PT12b2lkIDAsZGVlcDohMH0pO2Z1bmN0aW9uIGJlKHQpe2lmKEsudmFsdWU9ITAsZS5tdWx0aXBsZSl7Y29uc3Qgcz1BcnJheS5pc0FycmF5KGcudmFsdWUpP1suLi5nLnZhbHVlXTpbXSx1PXMuZmluZEluZGV4KHk9PlMoeSx0LGUuYnkpKTtlLnNlbGVjdGlvbkJlaGF2aW9yPT09InRvZ2dsZSI/KHU9PT0tMT9zLnB1c2godCk6cy5zcGxpY2UodSwxKSxnLnZhbHVlPXMpOihnLnZhbHVlPVt0XSx3LnZhbHVlPXQpfWVsc2UgZS5zZWxlY3Rpb25CZWhhdmlvcj09PSJ0b2dnbGUiJiZTKGcudmFsdWUsdCxlLmJ5KT9nLnZhbHVlPXZvaWQgMDpnLnZhbHVlPXQ7c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfWNvbnN0IHg9TChudWxsKSxVPUwobnVsbCksUj1MKCExKSxXPUwoITEpLGllPUooKSxqPUooKSxvZT1KKCk7ZnVuY3Rpb24gWSgpe3JldHVybiBiKCkubWFwKHQ9PnQucmVmKS5maWx0ZXIodD0+dC5kYXRhc2V0LmRpc2FibGVkIT09IiIpfWZ1bmN0aW9uIEEodCxzPSEwLHUpe2lmKCF0KXJldHVybjt4LnZhbHVlPXQsKHU/P1QudmFsdWUpJiZ4LnZhbHVlLmZvY3VzKCkscyYmeC52YWx1ZS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QifSk7Y29uc3QgeT1iKCkuZmluZChJPT5JLnJlZj09PXQpO2YoImhpZ2hsaWdodCIseSl9ZnVuY3Rpb24geGUodCl7aWYoUi52YWx1ZSlvZS50cmlnZ2VyKHQpO2Vsc2V7Y29uc3Qgcz1iKCkuZmluZCh1PT5TKHUudmFsdWUsdCxlLmJ5KSk7cyYmKHgudmFsdWU9cy5yZWYsQShzLnJlZikpfX1mdW5jdGlvbiBfZSh0KXt4LnZhbHVlJiZ4LnZhbHVlLmlzQ29ubmVjdGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksVy52YWx1ZXx8eC52YWx1ZS5jbGljaygpKX1mdW5jdGlvbiBDZSh0KXtpZihULnZhbHVlKXtpZihLLnZhbHVlPSEwLFIudmFsdWUpai50cmlnZ2VyKHQpO2Vsc2V7Y29uc3Qgcz10LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXk7aWYocyYmdC5rZXk9PT0iYSImJmQudmFsdWUpe2NvbnN0IHU9YigpLHk9dS5tYXAoWj0+Wi52YWx1ZSk7Zy52YWx1ZT1bLi4ueV0sdC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IEk9dS5hdCgtMSk7SSYmQShJLnJlZil9ZWxzZSBpZighcyl7Y29uc3QgdT1sKHQua2V5LGIoKSk7dSYmQSh1KX19c2V0VGltZW91dCgoKT0+e0sudmFsdWU9ITF9LDEpfX1mdW5jdGlvbiBFZSgpe1cudmFsdWU9ITB9ZnVuY3Rpb24gRmUoKXtOKCgpPT57Vy52YWx1ZT0hMX0pfWZ1bmN0aW9uIG5lKCl7TigoKT0+e2NvbnN0IHQ9bmV3IEtleWJvYXJkRXZlbnQoImtleWRvd24iLHtrZXk6IlBhZ2VVcCJ9KTtsZSh0KX0pfWZ1bmN0aW9uIFgodCl7Y29uc3Qgcz14LnZhbHVlO3M/LmlzQ29ubmVjdGVkJiYoVS52YWx1ZT1zKSx4LnZhbHVlPW51bGwsZigibGVhdmUiLHQpfWZ1bmN0aW9uIGtlKHQpe2NvbnN0IHM9bmV3IEN1c3RvbUV2ZW50KCJsaXN0Ym94LmVudHJ5Rm9jdXMiLHtidWJibGVzOiExLGNhbmNlbGFibGU6ITB9KTtpZih0LmN1cnJlbnRUYXJnZXQ/LmRpc3BhdGNoRXZlbnQocyksZigiZW50cnlGb2N1cyIscyksIXMuZGVmYXVsdFByZXZlbnRlZClpZihVLnZhbHVlKUEoVS52YWx1ZSk7ZWxzZXtjb25zdCB1PVkoKT8uWzBdO0EodSl9fWZ1bmN0aW9uIGxlKHQpe2NvbnN0IHM9VWUodCxwLnZhbHVlLEMudmFsdWUpO2lmKCFzKXJldHVybjtsZXQgdT1ZKCk7aWYoeC52YWx1ZSl7aWYocz09PSJsYXN0Iil1LnJldmVyc2UoKTtlbHNlIGlmKHM9PT0icHJldiJ8fHM9PT0ibmV4dCIpe3M9PT0icHJldiImJnUucmV2ZXJzZSgpO2NvbnN0IHk9dS5pbmRleE9mKHgudmFsdWUpO3U9dS5zbGljZSh5KzEpfXdlKHQsdVswXSl9aWYodS5sZW5ndGgpe2NvbnN0IHk9IXgudmFsdWUmJnM9PT0icHJldiI/dS5sZW5ndGgtMTowO0EodVt5XSl9aWYoUi52YWx1ZSlyZXR1cm4gai50cmlnZ2VyKHQpfWZ1bmN0aW9uIHdlKHQscyl7aWYoIShSLnZhbHVlfHxlLnNlbGVjdGlvbkJlaGF2aW9yIT09InJlcGxhY2UifHwhZC52YWx1ZXx8IUFycmF5LmlzQXJyYXkoZy52YWx1ZSl8fCh0LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXkpJiYhdC5zaGlmdEtleSkmJnQuc2hpZnRLZXkpe2NvbnN0IHk9YigpLmZpbHRlcihNPT5NLnJlZi5kYXRhc2V0LmRpc2FibGVkIT09IiIpO2xldCBJPXkuZmluZChNPT5NLnJlZj09PXMpPy52YWx1ZTtpZih0LmtleT09PXYuRU5EP0k9eS5hdCgtMSk/LnZhbHVlOnQua2V5PT09di5IT01FJiYoST15WzBdPy52YWx1ZSksIUl8fCF3LnZhbHVlKXJldHVybjtjb25zdCBaPU8oeS5tYXAoTT0+TS52YWx1ZSksdy52YWx1ZSxJKTtnLnZhbHVlPVp9fWFzeW5jIGZ1bmN0aW9uIHNlKHQpe2lmKGF3YWl0IE4oKSxSLnZhbHVlKWllLnRyaWdnZXIodCk7ZWxzZXtjb25zdCBzPVkoKSx1PXMuZmluZCh5PT55LmRhdGFzZXQuc3RhdGU9PT0iY2hlY2tlZCIpO3U/QSh1KTpzLmxlbmd0aCYmQShzWzBdKX19cmV0dXJuIFNlKGcsKCk9PntLLnZhbHVlfHxOKCgpPT57c2UoKX0pfSx7aW1tZWRpYXRlOiEwLGRlZXA6ITB9KSxhKHtoaWdobGlnaHRlZEVsZW1lbnQ6eCxoaWdobGlnaHRJdGVtOnhlLGhpZ2hsaWdodEZpcnN0SXRlbTpuZSxoaWdobGlnaHRTZWxlY3RlZDpzZSxnZXRJdGVtczpifSksSmUoe21vZGVsVmFsdWU6ZyxvblZhbHVlQ2hhbmdlOmJlLG11bHRpcGxlOmQsb3JpZW50YXRpb246cCxkaXI6QyxkaXNhYmxlZDpoLGhpZ2hsaWdodE9uSG92ZXI6bSxoaWdobGlnaHRlZEVsZW1lbnQ6eCxpc1ZpcnR1YWw6Uix2aXJ0dWFsRm9jdXNIb29rOmllLHZpcnR1YWxLZXlkb3duSG9vazpqLHZpcnR1YWxIaWdobGlnaHRIb29rOm9lLGJ5OmUuYnksZmlyc3RWYWx1ZTp3LHNlbGVjdGlvbkJlaGF2aW9yOkUsZm9jdXNhYmxlOlQsb25MZWF2ZTpYLG9uRW50ZXI6a2UsY2hhbmdlSGlnaGxpZ2h0OkEsb25LZXlkb3duRW50ZXI6X2Usb25LZXlkb3duTmF2aWdhdGlvbjpsZSxvbktleWRvd25UeXBlQWhlYWQ6Q2Usb25Db21wb3NpdGlvblN0YXJ0OkVlLG9uQ29tcG9zaXRpb25FbmQ6RmUsaGlnaGxpZ2h0Rmlyc3RJdGVtOm5lfSksKHQscyk9PihrKCkscShvKEQpLHtyZWZfa2V5OiJwcmltaXRpdmVFbGVtZW50IixyZWY6Yyxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLGRpcjpvKEMpLCJkYXRhLWRpc2FibGVkIjpvKGgpPyIiOnZvaWQgMCxvblBvaW50ZXJsZWF2ZTpYLG9uRm9jdXNvdXQ6c1swXXx8KHNbMF09YXN5bmMgdT0+e2NvbnN0IHk9dS5yZWxhdGVkVGFyZ2V0fHx1LnRhcmdldDthd2FpdCBOKCkseC52YWx1ZSYmbyhyKSYmIW8ocikuY29udGFpbnMoeSkmJlgodSl9KX0se2RlZmF1bHQ6VigoKT0+W1AodC4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOm8oZyl9KSxvKEYpJiZ0Lm5hbWU/KGsoKSxxKG8oamUpLHtrZXk6MCxuYW1lOnQubmFtZSx2YWx1ZTpvKGcpLGRpc2FibGVkOm8oaCkscmVxdWlyZWQ6dC5yZXF1aXJlZH0sbnVsbCw4LFsibmFtZSIsInZhbHVlIiwiZGlzYWJsZWQiLCJyZXF1aXJlZCJdKSk6cGUoInYtaWYiLCEwKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkaXIiLCJkYXRhLWRpc2FibGVkIl0pKX19KSxtdD1RZSxldD1IKHtfX25hbWU6Ikxpc3Rib3hDb250ZW50Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3R7Q29sbGVjdGlvblNsb3Q6YX09JCgpLGk9RygpLGU9bWUoITEsMTApO3JldHVybihmLGQpPT4oaygpLHEobyhhKSxudWxsLHtkZWZhdWx0OlYoKCk9PltoZShvKEQpLHtyb2xlOiJsaXN0Ym94IixhczpmLmFzLCJhcy1jaGlsZCI6Zi5hc0NoaWxkLHRhYmluZGV4Om8oaSkuZm9jdXNhYmxlLnZhbHVlP28oaSkuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlPyItMSI6IjAiOiItMSIsImFyaWEtb3JpZW50YXRpb24iOm8oaSkub3JpZW50YXRpb24udmFsdWUsImFyaWEtbXVsdGlzZWxlY3RhYmxlIjohIW8oaSkubXVsdGlwbGUudmFsdWUsImRhdGEtb3JpZW50YXRpb24iOm8oaSkub3JpZW50YXRpb24udmFsdWUsb25Nb3VzZWRvd246ZFswXXx8KGRbMF09dGUobT0+ZS52YWx1ZT0hMCxbImxlZnQiXSkpLG9uRm9jdXM6ZFsxXXx8KGRbMV09bT0+e28oZSl8fG8oaSkub25FbnRlcihtKX0pLG9uS2V5ZG93bjpbZFsyXXx8KGRbMl09eihtPT57byhpKS5vcmllbnRhdGlvbi52YWx1ZT09PSJ2ZXJ0aWNhbCImJihtLmtleT09PSJBcnJvd0xlZnQifHxtLmtleT09PSJBcnJvd1JpZ2h0Iil8fG8oaSkub3JpZW50YXRpb24udmFsdWU9PT0iaG9yaXpvbnRhbCImJihtLmtleT09PSJBcnJvd1VwInx8bS5rZXk9PT0iQXJyb3dEb3duIil8fChtLnByZXZlbnREZWZhdWx0KCksbyhpKS5mb2N1c2FibGUudmFsdWUmJm8oaSkub25LZXlkb3duTmF2aWdhdGlvbihtKSl9LFsiZG93biIsInVwIiwibGVmdCIsInJpZ2h0IiwiaG9tZSIsImVuZCJdKSkseihvKGkpLm9uS2V5ZG93bkVudGVyLFsiZW50ZXIiXSksbyhpKS5vbktleWRvd25UeXBlQWhlYWRdfSx7ZGVmYXVsdDpWKCgpPT5bUChmLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsInRhYmluZGV4IiwiYXJpYS1vcmllbnRhdGlvbiIsImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwiZGF0YS1vcmllbnRhdGlvbiIsIm9uS2V5ZG93biJdKV0pLF86M30pKX19KSxodD1ldCx0dD1IKHtfX25hbWU6Ikxpc3Rib3hGaWx0ZXIiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbnB1dCJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAobix7ZW1pdDphfSl7Y29uc3QgaT1uLGY9ZmUoaSwibW9kZWxWYWx1ZSIsYSx7ZGVmYXVsdFZhbHVlOiIiLHBhc3NpdmU6aS5tb2RlbFZhbHVlPT09dm9pZCAwfSksZD1HKCkse3ByaW1pdGl2ZUVsZW1lbnQ6bSxjdXJyZW50RWxlbWVudDpwfT12ZSgpLGg9QigoKT0+aS5kaXNhYmxlZHx8ZC5kaXNhYmxlZC52YWx1ZXx8ITEpLEU9TCgpO3JldHVybiBWZSgoKT0+RS52YWx1ZT1kLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZT8uaWQpLEtlKCgpPT57ZC5mb2N1c2FibGUudmFsdWU9ITEsc2V0VGltZW91dCgoKT0+e2kuYXV0b0ZvY3VzJiZwLnZhbHVlPy5mb2N1cygpfSwxKX0pLFRlKCgpPT57ZC5mb2N1c2FibGUudmFsdWU9ITB9KSwoXyxiKT0+KGsoKSxxKG8oRCkse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjptLGFzOl8uYXMsImFzLWNoaWxkIjpfLmFzQ2hpbGQsdmFsdWU6byhmKSxkaXNhYmxlZDpoLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6aC52YWx1ZT8iIjp2b2lkIDAsImFyaWEtZGlzYWJsZWQiOmgudmFsdWU/P3ZvaWQgMCwiYXJpYS1hY3RpdmVkZXNjZW5kYW50IjpFLnZhbHVlLHR5cGU6InRleHQiLG9uS2V5ZG93bjpbeih0ZShvKGQpLm9uS2V5ZG93bk5hdmlnYXRpb24sWyJwcmV2ZW50Il0pLFsiZG93biIsInVwIiwiaG9tZSIsImVuZCJdKSx6KG8oZCkub25LZXlkb3duRW50ZXIsWyJlbnRlciJdKV0sb25JbnB1dDpiWzBdfHwoYlswXT1sPT57Zi52YWx1ZT1sLnRhcmdldC52YWx1ZSxvKGQpLmhpZ2hsaWdodEZpcnN0SXRlbSgpfSksb25Db21wb3NpdGlvbnN0YXJ0Om8oZCkub25Db21wb3NpdGlvblN0YXJ0LG9uQ29tcG9zaXRpb25lbmQ6byhkKS5vbkNvbXBvc2l0aW9uRW5kfSx7ZGVmYXVsdDpWKCgpPT5bUChfLiRzbG90cywiZGVmYXVsdCIse21vZGVsVmFsdWU6byhmKX0pXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsInZhbHVlIiwiZGlzYWJsZWQiLCJkYXRhLWRpc2FibGVkIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsIm9uS2V5ZG93biIsIm9uQ29tcG9zaXRpb25zdGFydCIsIm9uQ29tcG9zaXRpb25lbmQiXSkpfX0pLGd0PXR0O2NvbnN0W3l0LGF0XT1lZSgiTGlzdGJveEdyb3VwIik7dmFyIGl0PUgoe19fbmFtZToiTGlzdGJveEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgYT1uLGk9Z2Uodm9pZCAwLCJyZWthLWxpc3Rib3gtZ3JvdXAiKTtyZXR1cm4gYXQoe2lkOml9KSwoZSxmKT0+KGsoKSxxKG8oRCksYWUoe3JvbGU6Imdyb3VwIn0sYSx7ImFyaWEtbGFiZWxsZWRieSI6byhpKX0pLHtkZWZhdWx0OlYoKCk9PltQKGUuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxidD1pdDtjb25zdCBvdD0ibGlzdGJveC5zZWxlY3QiLFtudCxsdF09ZWUoIkxpc3Rib3hJdGVtIik7dmFyIHN0PUgoe19fbmFtZToiTGlzdGJveEl0ZW0iLHByb3BzOnt2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAobix7ZW1pdDphfSl7Y29uc3QgaT1uLGU9YSxmPWdlKHZvaWQgMCwicmVrYS1saXN0Ym94LWl0ZW0iKSx7Q29sbGVjdGlvbkl0ZW06ZH09JCgpLHtmb3J3YXJkUmVmOm0sY3VycmVudEVsZW1lbnQ6cH09eWUoKSxoPUcoKSxFPUIoKCk9PnAudmFsdWU9PT1oLmhpZ2hsaWdodGVkRWxlbWVudC52YWx1ZSksXz1CKCgpPT5aZShoLm1vZGVsVmFsdWUudmFsdWUsaS52YWx1ZSxoLmJ5KSksYj1CKCgpPT5oLmRpc2FibGVkLnZhbHVlfHxpLmRpc2FibGVkKTthc3luYyBmdW5jdGlvbiBsKHIpe2UoInNlbGVjdCIsciksIXI/LmRlZmF1bHRQcmV2ZW50ZWQmJiFiLnZhbHVlJiZyJiYoaC5vblZhbHVlQ2hhbmdlKGkudmFsdWUpLGguY2hhbmdlSGlnaGxpZ2h0KHAudmFsdWUpKX1mdW5jdGlvbiBjKHIpe2NvbnN0IHY9e29yaWdpbmFsRXZlbnQ6cix2YWx1ZTppLnZhbHVlfTtIZShvdCxsLHYpfXJldHVybiBsdCh7aXNTZWxlY3RlZDpffSksKHIsdik9PihrKCkscShvKGQpLHt2YWx1ZTpyLnZhbHVlfSx7ZGVmYXVsdDpWKCgpPT5bQmUoW0UudmFsdWUsXy52YWx1ZV0sKCk9PmhlKG8oRCksYWUoe2lkOm8oZil9LHIuJGF0dHJzLHtyZWY6byhtKSxyb2xlOiJvcHRpb24iLHRhYmluZGV4Om8oaCkuZm9jdXNhYmxlLnZhbHVlP0UudmFsdWU/IjAiOiItMSI6LTEsImFyaWEtc2VsZWN0ZWQiOl8udmFsdWUsYXM6ci5hcywiYXMtY2hpbGQiOnIuYXNDaGlsZCxkaXNhYmxlZDpiLnZhbHVlPyIiOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6Yi52YWx1ZT8iIjp2b2lkIDAsImRhdGEtaGlnaGxpZ2h0ZWQiOkUudmFsdWU/IiI6dm9pZCAwLCJkYXRhLXN0YXRlIjpfLnZhbHVlPyJjaGVja2VkIjoidW5jaGVja2VkIixvbkNsaWNrOmMsb25LZXlkb3duOnoodGUoYyxbInByZXZlbnQiXSksWyJzcGFjZSJdKSxvblBvaW50ZXJtb3ZlOnZbMF18fCh2WzBdPSgpPT57byhoKS5oaWdobGlnaHRlZEVsZW1lbnQudmFsdWUhPT1vKHApJiZvKGgpLmhpZ2hsaWdodE9uSG92ZXIudmFsdWUmJm8oaCkuY2hhbmdlSGlnaGxpZ2h0KG8ocCksITEsITEpfSl9KSx7ZGVmYXVsdDpWKCgpPT5bUChyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwidGFiaW5kZXgiLCJhcmlhLXNlbGVjdGVkIiwiYXMiLCJhcy1jaGlsZCIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtaGlnaGxpZ2h0ZWQiLCJkYXRhLXN0YXRlIiwib25LZXlkb3duIl0pLHYsMSldKSxfOjN9LDgsWyJ2YWx1ZSJdKSl9fSkseHQ9c3QscnQ9SCh7X19uYW1lOiJMaXN0Ym94SXRlbUluZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzcGFuIn19LHNldHVwKG4pe2NvbnN0IGE9bjt5ZSgpO2NvbnN0IGk9bnQoKTtyZXR1cm4oZSxmKT0+byhpKS5pc1NlbGVjdGVkLnZhbHVlPyhrKCkscShvKEQpLGFlKHtrZXk6MCwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sYSkse2RlZmF1bHQ6VigoKT0+W1AoZS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTpwZSgidi1pZiIsITApfX0pLF90PXJ0LHV0PUgoe19fbmFtZToiTGlzdGJveFZpcnR1YWxpemVyIixwcm9wczp7b3B0aW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMH0sb3ZlcnNjYW46e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxlc3RpbWF0ZVNpemU6e3R5cGU6W051bWJlcixGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LHRleHRDb250ZW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgYT1uLGk9UmUoKSxlPUcoKSxmPVBlKCkse2dldEl0ZW1zOmR9PSQoKTtlLmlzVmlydHVhbC52YWx1ZT0hMDtjb25zdCBtPUIoKCk9Pntjb25zdCBsPWYudmFsdWU7aWYobCl7Y29uc3QgYz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShsKTtyZXR1cm57c3RhcnQ6TnVtYmVyLnBhcnNlRmxvYXQoYy5wYWRkaW5nQmxvY2tTdGFydHx8Yy5wYWRkaW5nVG9wKSxlbmQ6TnVtYmVyLnBhcnNlRmxvYXQoYy5wYWRkaW5nQmxvY2tFbmR8fGMucGFkZGluZ0JvdHRvbSl9fWVsc2UgcmV0dXJue3N0YXJ0OjAsZW5kOjB9fSkscD1ZZSh7Z2V0IHNjcm9sbFBhZGRpbmdTdGFydCgpe3JldHVybiBtLnZhbHVlLnN0YXJ0fSxnZXQgc2Nyb2xsUGFkZGluZ0VuZCgpe3JldHVybiBtLnZhbHVlLmVuZH0sZ2V0IGNvdW50KCl7cmV0dXJuIGEub3B0aW9ucy5sZW5ndGh9LGdldCBob3Jpem9udGFsKCl7cmV0dXJuIGUub3JpZW50YXRpb24udmFsdWU9PT0iaG9yaXpvbnRhbCJ9LGVzdGltYXRlU2l6ZShsKXtyZXR1cm4gdHlwZW9mIGEuZXN0aW1hdGVTaXplPT0iZnVuY3Rpb24iP2EuZXN0aW1hdGVTaXplKGwpOmEuZXN0aW1hdGVTaXplPz8yOH0sZ2V0U2Nyb2xsRWxlbWVudCgpe3JldHVybiBmLnZhbHVlfSxvdmVyc2NhbjphLm92ZXJzY2FuPz8xMn0pLGg9QigoKT0+cC52YWx1ZS5nZXRWaXJ0dWFsSXRlbXMoKS5tYXAobD0+e2NvbnN0IGM9aS5kZWZhdWx0KHtvcHRpb246YS5vcHRpb25zW2wuaW5kZXhdLHZpcnR1YWxpemVyOnAudmFsdWUsdmlydHVhbEl0ZW06bH0pWzBdLHI9Yy50eXBlPT09dWUmJkFycmF5LmlzQXJyYXkoYy5jaGlsZHJlbik/Yy5jaGlsZHJlbi5maW5kKHY9PnR5cGVvZiB2LnR5cGUhPSJzeW1ib2wiKTpjO3JldHVybntpdGVtOmwsaXM6JGUocix7a2V5OmAke2wua2V5fWAsImRhdGEtaW5kZXgiOmwuaW5kZXgsImFyaWEtc2V0c2l6ZSI6YS5vcHRpb25zLmxlbmd0aCwiYXJpYS1wb3NpbnNldCI6bC5pbmRleCsxLHN0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCx0cmFuc2Zvcm06YHRyYW5zbGF0ZVkoJHtsLnN0YXJ0fXB4KWAsb3ZlcmZsb3dBbmNob3I6Im5vbmUifX0pfX0pKTtlLnZpcnR1YWxGb2N1c0hvb2sub24obD0+e2NvbnN0IGM9YS5vcHRpb25zLmZpbmRJbmRleChyPT5BcnJheS5pc0FycmF5KGUubW9kZWxWYWx1ZS52YWx1ZSk/UyhyLGUubW9kZWxWYWx1ZS52YWx1ZVswXSxlLmJ5KTpTKHIsZS5tb2RlbFZhbHVlLnZhbHVlLGUuYnkpKTtjIT09LTE/KGw/LnByZXZlbnREZWZhdWx0KCkscC52YWx1ZS5zY3JvbGxUb0luZGV4KGMse2FsaWduOiJzdGFydCJ9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pntjb25zdCByPWRlKGYudmFsdWUpO3ImJihlLmNoYW5nZUhpZ2hsaWdodChyKSxsJiZyPy5mb2N1cygpKX0pKTplLmhpZ2hsaWdodEZpcnN0SXRlbSgpfSksZS52aXJ0dWFsSGlnaGxpZ2h0SG9vay5vbihsPT57Y29uc3QgYz1hLm9wdGlvbnMuZmluZEluZGV4KHI9PlMocixsLGUuYnkpKTtwLnZhbHVlLnNjcm9sbFRvSW5kZXgoYyx7YWxpZ246InN0YXJ0In0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IHI9ZGUoZi52YWx1ZSk7ciYmZS5jaGFuZ2VIaWdobGlnaHQocil9KX0pO2NvbnN0IEU9bWUoIiIsMWUzKSxfPUIoKCk9Pntjb25zdCBsPWM9PmEudGV4dENvbnRlbnQ/YS50ZXh0Q29udGVudChjKTpjPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGEub3B0aW9ucy5tYXAoKGMscik9Pih7aW5kZXg6cix0ZXh0Q29udGVudDpsKGMpfSkpfSk7ZnVuY3Rpb24gYihsLGMpe2lmKCFlLmZpcnN0VmFsdWU/LnZhbHVlfHwhZS5tdWx0aXBsZS52YWx1ZXx8IUFycmF5LmlzQXJyYXkoZS5tb2RlbFZhbHVlLnZhbHVlKSlyZXR1cm47Y29uc3Qgdj1kKCkuZmlsdGVyKEY9PkYucmVmLmRhdGFzZXQuZGlzYWJsZWQhPT0iIikuZmluZChGPT5GLnJlZj09PWUuaGlnaGxpZ2h0ZWRFbGVtZW50LnZhbHVlKT8udmFsdWU7aWYoIXYpcmV0dXJuO2xldCBDPW51bGw7c3dpdGNoKGMpe2Nhc2UicHJldiI6Y2FzZSJuZXh0Ijp7Qz1PKGEub3B0aW9ucyxlLmZpcnN0VmFsdWUudmFsdWUsdik7YnJlYWt9Y2FzZSJmaXJzdCI6e0M9TyhhLm9wdGlvbnMsZS5maXJzdFZhbHVlLnZhbHVlLGEub3B0aW9ucz8uWzBdKTticmVha31jYXNlImxhc3QiOntDPU8oYS5vcHRpb25zLGUuZmlyc3RWYWx1ZS52YWx1ZSxhLm9wdGlvbnMuYXQoLTEpKTticmVha319ZS5tb2RlbFZhbHVlLnZhbHVlPUN9cmV0dXJuIGUudmlydHVhbEtleWRvd25Ib29rLm9uKGw9Pntjb25zdCBjPWwuYWx0S2V5fHxsLmN0cmxLZXl8fGwubWV0YUtleTtpZihsLmtleT09PSJUYWIiJiYhYylyZXR1cm47bGV0IHY9V2VbbC5rZXldO2lmKGMmJmwua2V5PT09ImEiJiZlLm11bHRpcGxlLnZhbHVlPyhsLnByZXZlbnREZWZhdWx0KCksZS5tb2RlbFZhbHVlLnZhbHVlPVsuLi5hLm9wdGlvbnNdLHY9Imxhc3QiKTpsLnNoaWZ0S2V5JiZ2JiZiKGwsdiksWyJmaXJzdCIsImxhc3QiXS5pbmNsdWRlcyh2KSl7bC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IEM9dj09PSJmaXJzdCI/MDphLm9wdGlvbnMubGVuZ3RoLTE7cC52YWx1ZS5zY3JvbGxUb0luZGV4KEMpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IEY9ZCgpLHc9dj09PSJmaXJzdCI/RlswXTpGLmF0KC0xKTt3JiZlLmNoYW5nZUhpZ2hsaWdodCh3LnJlZil9KX1lbHNlIGlmKCF2JiYhYyl7RS52YWx1ZSs9bC5rZXk7Y29uc3QgQz1OdW1iZXIoRGUoKT8uZ2V0QXR0cmlidXRlKCJkYXRhLWluZGV4IikpLEY9Xy52YWx1ZVtDXS50ZXh0Q29udGVudCx3PV8udmFsdWUubWFwKGc9PmcudGV4dENvbnRlbnQ/PyIiKSxLPU1lKHcsRS52YWx1ZSxGKSxUPV8udmFsdWUuZmluZChnPT5nLnRleHRDb250ZW50PT09Syk7VCYmKHAudmFsdWUuc2Nyb2xsVG9JbmRleChULmluZGV4LHthbGlnbjoic3RhcnQifSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Y29uc3QgZz1mLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWluZGV4PSIke1QuaW5kZXh9Il1gKTtnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJmUuY2hhbmdlSGlnaGxpZ2h0KGcpfSkpfX0pLChsLGMpPT4oaygpLHJlKCJkaXYiLHsiZGF0YS1yZWthLXZpcnR1YWxpemVyIjoiIixzdHlsZTpPZSh7cG9zaXRpb246InJlbGF0aXZlIix3aWR0aDoiMTAwJSIsaGVpZ2h0OmAke28ocCkuZ2V0VG90YWxTaXplKCl9cHhgfSl9LFsoayghMCkscmUodWUsbnVsbCxOZShoLnZhbHVlLCh7aXM6cixpdGVtOnZ9KT0+KGsoKSxxKHplKHIpLHtrZXk6di5pbmRleH0pKSksMTI4KSldLDQpKX19KSxDdD11dDtmdW5jdGlvbiBkdChuLGEpe2lmKHR5cGVvZiBuIT0ib2JqZWN0Inx8bj09PW51bGwpcmV0dXJuITE7Y29uc3QgaT1HZShuLGEpO3JldHVybiBpIT1udWxsJiZpIT09IiJ9ZnVuY3Rpb24gY2UobixhKXtyZXR1cm4gYT97eHM6NDQsc206NDgsbWQ6NTIsbGc6NTYseGw6NjB9W25dOnt4czoyNCxzbToyOCxtZDozMixsZzozNix4bDo0MH1bbl19ZnVuY3Rpb24gRXQobixhLGksZSl7Y29uc3QgZj1jZShhLCEwKSxkPWNlKGEsITEpO3JldHVybiBlPygpPT5mOmk/bT0+ZHQoblttXSxpKT9mOmQ6KCk9PmR9ZXhwb3J0e210IGFzIEwsaHQgYXMgYSxidCBhcyBiLGd0IGFzIGMseHQgYXMgZCxfdCBhcyBlLEN0IGFzIGYsRXQgYXMgZyx5dCBhcyBoLEcgYXMgaX07Cg==", "/_nuxt/DOCFDTcY.js": "aW1wb3J0e0ogYXMgaWUsSyBhcyBvZSxhbCBhcyB1ZSxhQyBhcyBsZSxUIGFzIEgsYUsgYXMgSixhTCBhcyBRLGE0IGFzIFYsYTYgYXMgZmUsYTUgYXMgY2UsciBhcyBqLFMgYXMgQyxsIGFzIHEsYU0gYXMgUixvIGFzIGRlLGggYXMgbWUsdyBhcyBwZSxMIGFzIHllLGFiIGFzIHZlLE0gYXMgaGUsaSBhcyBNLGFjIGFzIEVlLGFOIGFzIGJlLE4gYXMgRyxhMSBhcyBiLGFPIGFzIGdlLGFQIGFzIHdlLGFRIGFzIFNlLGFSIGFzIEZlfWZyb20iLi9vOHRkX0cwSi5qcyI7ZnVuY3Rpb24gSWUobil7cmV0dXJuInNjaGVtYSJpbiBuJiZ0eXBlb2Ygbi5jb2VyY2VyPT0iZnVuY3Rpb24iJiZ0eXBlb2Ygbi52YWxpZGF0b3I9PSJmdW5jdGlvbiImJnR5cGVvZiBuLnJlZmluZXI9PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gamUobil7cmV0dXJuIn5zdGFuZGFyZCJpbiBufWFzeW5jIGZ1bmN0aW9uIHFlKG4saSl7Y29uc3QgbD1hd2FpdCBpWyJ+c3RhbmRhcmQiXS52YWxpZGF0ZShuKTtyZXR1cm4gbC5pc3N1ZXM/e2Vycm9yczpsLmlzc3Vlcz8ubWFwKHI9Pih7bmFtZTpyLnBhdGg/Lm1hcChvPT50eXBlb2Ygbz09Im9iamVjdCI/by5rZXk6bykuam9pbigiLiIpfHwiIixtZXNzYWdlOnIubWVzc2FnZX0pKXx8W10scmVzdWx0Om51bGx9OntlcnJvcnM6bnVsbCxyZXN1bHQ6bC52YWx1ZX19YXN5bmMgZnVuY3Rpb24geGUobixpKXtjb25zdFtsLHJdPWkudmFsaWRhdGUobik7cmV0dXJuIGw/e2Vycm9yczpsLmZhaWx1cmVzKCkubWFwKGg9Pih7bWVzc2FnZTpoLm1lc3NhZ2UsbmFtZTpoLnBhdGguam9pbigiLiIpfSkpLHJlc3VsdDpudWxsfTp7ZXJyb3JzOm51bGwscmVzdWx0OnJ9fWZ1bmN0aW9uIE5lKG4saSl7aWYoamUoaSkpcmV0dXJuIHFlKG4saSk7aWYoSWUoaSkpcmV0dXJuIHhlKG4saSk7dGhyb3cgbmV3IEVycm9yKCJGb3JtIHZhbGlkYXRpb24gZmFpbGVkOiBVbnN1cHBvcnRlZCBmb3JtIHNjaGVtYSIpfWZ1bmN0aW9uIE9lKG4saSl7cmV0dXJuIGk/aS5zcGxpdCgiLiIpLnJlZHVjZSgocixvKT0+cj8uW29dLG4pOm59ZnVuY3Rpb24gQmUobixpLGwpe2lmKCFpKXJldHVybiBPYmplY3QuYXNzaWduKG4sbCk7aWYoIW4pcmV0dXJuIG47Y29uc3Qgcj1pLnNwbGl0KCIuIik7bGV0IG89bjtmb3IobGV0IHA9MDtwPHIubGVuZ3RoLTE7cCsrKXtjb25zdCB5PXJbcF07KG9beV09PT12b2lkIDB8fG9beV09PT1udWxsKSYmKHArMTxyLmxlbmd0aCYmIU51bWJlci5pc05hTihOdW1iZXIocltwKzFdKSk/b1t5XT1bXTpvW3ldPXt9KSxvPW9beV19Y29uc3QgaD1yW3IubGVuZ3RoLTFdO3JldHVybiBvW2hdPWwsbn1jbGFzcyB4IGV4dGVuZHMgRXJyb3J7Zm9ybUlkO2Vycm9ycztjb25zdHJ1Y3RvcihpLGwpe3N1cGVyKCJGb3JtIHZhbGlkYXRpb24gZXhjZXB0aW9uIiksdGhpcy5mb3JtSWQ9aSx0aGlzLmVycm9ycz1sLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLHgucHJvdG90eXBlKX19Y29uc3QgUmU9e2Jhc2U6IiJ9LEFlPXtfX25hbWU6IlVGb3JtIixwcm9wczp7aWQ6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxzY2hlbWE6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3RhdGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFsaWRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT246e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITEsZGVmYXVsdCgpe3JldHVyblsiaW5wdXQiLCJibHVyIiwiY2hhbmdlIl19fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhbGlkYXRlT25JbnB1dERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjMwMH0sdHJhbnNmb3JtOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDooKT0+ITB9LG5lc3RlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nQXV0bzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb25TdWJtaXQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxlbWl0czpbInN1Ym1pdCIsImVycm9yIl0sc2V0dXAobix7ZXhwb3NlOmksZW1pdDpsfSl7Y29uc3Qgcj1uLG89bCxoPWllKCkscD1vZSgiZm9ybSIscikseT1xKCgpPT5HKHtleHRlbmQ6RyhSZSksLi4uaC51aT8uZm9ybXx8e319KSksZz1yLmlkPz91ZSgpLGs9bGUoImZvcm1SZWYiKSxBPWJlKGBmb3JtLSR7Z31gKSx3PXIubmVzdGVkPT09ITAmJkgoSix2b2lkIDApLEs9ci5uZXN0ZWQ9PT0hMD9IKFEsdm9pZCAwKTp2b2lkIDAsUz1xKCgpPT5LPy52YWx1ZT9yLm5hbWU/T2UoSy52YWx1ZSxyLm5hbWUpOksudmFsdWU6ci5zdGF0ZSk7YihKLEEpLGIoUSxTKTtjb25zdCBGPWoobmV3IE1hcCk7Vihhc3luYygpPT57dyYmKGF3YWl0IGZlKCksdy5lbWl0KHt0eXBlOiJhdHRhY2giLHZhbGlkYXRlOkksZm9ybUlkOmcsbmFtZTpyLm5hbWUsYXBpOiR9KSl9KSxjZSgoKT0+e0EucmVzZXQoKSx3JiZ3LmVtaXQoe3R5cGU6ImRldGFjaCIsZm9ybUlkOmd9KX0pLFYoYXN5bmMoKT0+e0Eub24oYXN5bmMgZT0+e2UudHlwZT09PSJhdHRhY2giP0YudmFsdWUuc2V0KGUuZm9ybUlkLHt2YWxpZGF0ZTplLnZhbGlkYXRlLG5hbWU6ZS5uYW1lLGFwaTplLmFwaX0pOmUudHlwZT09PSJkZXRhY2giP0YudmFsdWUuZGVsZXRlKGUuZm9ybUlkKTpyLnZhbGlkYXRlT24/LmluY2x1ZGVzKGUudHlwZSkmJiF2LnZhbHVlJiYoZS50eXBlIT09ImlucHV0Ij9hd2FpdCBJKHtuYW1lOmUubmFtZSxzaWxlbnQ6ITAsbmVzdGVkOiExfSk6KGUuZWFnZXJ8fF8uaGFzKGUubmFtZSkpJiZhd2FpdCBJKHtuYW1lOmUubmFtZSxzaWxlbnQ6ITAsbmVzdGVkOiExfSkpLGUudHlwZT09PSJibHVyIiYmXy5hZGQoZS5uYW1lKSwoZS50eXBlPT09ImNoYW5nZSJ8fGUudHlwZT09PSJpbnB1dCJ8fGUudHlwZT09PSJibHVyInx8ZS50eXBlPT09ImZvY3VzIikmJlQuYWRkKGUubmFtZSksKGUudHlwZT09PSJjaGFuZ2UifHxlLnR5cGU9PT0iaW5wdXQiKSYmTy5hZGQoZS5uYW1lKX0pfSk7Y29uc3QgdT1qKFtdKTtiKGdlLHUpO2NvbnN0IE49aih7fSk7Yih3ZSxOKTtjb25zdCBPPUMobmV3IFNldCksVD1DKG5ldyBTZXQpLF89QyhuZXcgU2V0KTtmdW5jdGlvbiBMKGUpe3JldHVybiBlLm1hcCh0PT4oey4uLnQsaWQ6dD8ubmFtZT9OLnZhbHVlW3QubmFtZV0/LmlkOnZvaWQgMH0pKX1jb25zdCBCPWoobnVsbCk7YXN5bmMgZnVuY3Rpb24gWCgpe2xldCBlPXIudmFsaWRhdGU/YXdhaXQgci52YWxpZGF0ZShTLnZhbHVlKT8/W106W107aWYoci5zY2hlbWEpe2NvbnN0e2Vycm9yczp0LHJlc3VsdDphfT1hd2FpdCBOZShTLnZhbHVlLHIuc2NoZW1hKTt0P2U9ZS5jb25jYXQodCk6Qi52YWx1ZT1hfXJldHVybiBMKGUpfWFzeW5jIGZ1bmN0aW9uIEkoZT17c2lsZW50OiExLG5lc3RlZDohMSx0cmFuc2Zvcm06ITF9KXtjb25zdCB0PWUubmFtZSYmIUFycmF5LmlzQXJyYXkoZS5uYW1lKT9bZS5uYW1lXTplLm5hbWU7bGV0IGE9W10scz1bXTtpZighdCYmZS5uZXN0ZWQpe2NvbnN0IG09QXJyYXkuZnJvbShGLnZhbHVlLnZhbHVlcygpKS5tYXAoZD0+WShkLGUpKSxjPWF3YWl0IFByb21pc2UuYWxsKG0pO3M9Yy5maWx0ZXIoZD0+ZC5lcnJvcikuZmxhdE1hcChkPT5kLmVycm9yLmVycm9ycy5tYXAoc2U9Plooc2UsZC5uYW1lKSkpLGE9Yy5maWx0ZXIoZD0+ZC5vdXRwdXQhPT12b2lkIDApfWNvbnN0IEU9Wy4uLmF3YWl0IFgoKSwuLi5zXTtpZih0P3UudmFsdWU9cmUoRSx0KTp1LnZhbHVlPUUsdS52YWx1ZT8ubGVuZ3RoKXtpZihlLnNpbGVudClyZXR1cm4hMTt0aHJvdyBuZXcgeChnLHUudmFsdWUpfXJldHVybiBlLnRyYW5zZm9ybT8oYS5mb3JFYWNoKG09PnttLm5hbWU/QmUoQi52YWx1ZSxtLm5hbWUsbS5vdXRwdXQpOk9iamVjdC5hc3NpZ24oQi52YWx1ZSxtLm91dHB1dCl9KSxCLnZhbHVlPz9TLnZhbHVlKTpTLnZhbHVlfWNvbnN0IHY9aighMSk7YihTZSxSKHYpKTthc3luYyBmdW5jdGlvbiBXKGUpe3YudmFsdWU9ci5sb2FkaW5nQXV0byYmITA7Y29uc3QgdD1lO3RyeXt0LmRhdGE9YXdhaXQgSSh7bmVzdGVkOiEwLHRyYW5zZm9ybTpyLnRyYW5zZm9ybX0pLGF3YWl0IHIub25TdWJtaXQ/Lih0KSxPLmNsZWFyKCl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2YgeCkpdGhyb3cgYTtjb25zdCBzPXsuLi50LGVycm9yczphLmVycm9yc307bygiZXJyb3IiLHMpfWZpbmFsbHl7di52YWx1ZT0hMX19Y29uc3QgRD1xKCgpPT5yLmRpc2FibGVkfHx2LnZhbHVlKTtiKEZlLHEoKCk9Pih7ZGlzYWJsZWQ6RC52YWx1ZSx2YWxpZGF0ZU9uSW5wdXREZWxheTpyLnZhbGlkYXRlT25JbnB1dERlbGF5fSkpKTthc3luYyBmdW5jdGlvbiBZKGUsdCl7dHJ5e2NvbnN0IGE9YXdhaXQgZS52YWxpZGF0ZSh7Li4udCxzaWxlbnQ6ITF9KTtyZXR1cm57bmFtZTplLm5hbWUsb3V0cHV0OmF9fWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHgpKXRocm93IGE7cmV0dXJue25hbWU6ZS5uYW1lLGVycm9yOmF9fX1mdW5jdGlvbiBaKGUsdCl7cmV0dXJuIXR8fCFlLm5hbWU/ZTp7Li4uZSxuYW1lOnQrIi4iK2UubmFtZX19ZnVuY3Rpb24gZWUoZSx0KXtjb25zdCBhPXQrIi4iLHM9ZT8ubmFtZT8uc3RhcnRzV2l0aChhKT9lLm5hbWUuc3Vic3RyaW5nKGEubGVuZ3RoKTplLm5hbWU7cmV0dXJuey4uLmUsbmFtZTpzfX1mdW5jdGlvbiB0ZShlLHQpe3JldHVybiB0P2UuZmlsdGVyKGE9PmE/Lm5hbWU/LnN0YXJ0c1dpdGgodCsiLiIpKS5tYXAoYT0+ZWUoYSx0KSk6ZX1mdW5jdGlvbiBVKGUpe3JldHVybiBlLmFwaS5nZXRFcnJvcnMoKS5tYXAodD0+ZS5uYW1lP3suLi50LG5hbWU6ZS5uYW1lKyIuIit0Lm5hbWV9OnQpfWZ1bmN0aW9uIFAoZSx0KXtyZXR1cm4hZXx8IXQ/ITA6ZSBpbnN0YW5jZW9mIFJlZ0V4cD9lLnRlc3QodCk6dD09PWV8fHR5cGVvZiBlPT0ic3RyaW5nIiYmZS5zdGFydHNXaXRoKHQrIi4iKX1mdW5jdGlvbiBhZShlLHQpe2lmKCFlfHxlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBlO2lmKHQhPT1lKXJldHVybiB0eXBlb2YgZT09InN0cmluZyImJmUuc3RhcnRzV2l0aCh0KyIuIik/ZS5zdWJzdHJpbmcodC5sZW5ndGgrMSk6ZX1mdW5jdGlvbiByZShlLHQpe2NvbnN0IGE9bmV3IFNldCh0KSxzPXQubWFwKGM9Pk4udmFsdWU/LltjXT8ucGF0dGVybikuZmlsdGVyKEJvb2xlYW4pLGY9Yz0+Yy5uYW1lP2EuaGFzKGMubmFtZSk/ITA6cy5zb21lKGQ9PmQudGVzdChjLm5hbWUpKTohMSxFPXUudmFsdWUuZmlsdGVyKGM9PiFmKGMpKSxtPWUuZmlsdGVyKGYpO3JldHVyblsuLi5FLC4uLm1dfWZ1bmN0aW9uIG5lKGUsdCl7cmV0dXJuIGUuZmlsdGVyKGE9PnQgaW5zdGFuY2VvZiBSZWdFeHA/IShhLm5hbWUmJnQudGVzdChhLm5hbWUpKTohYS5uYW1lfHxhLm5hbWUhPT10KX1mdW5jdGlvbiB6KGUpe3JldHVybiFlLm5hbWV8fCEhTi52YWx1ZVtlLm5hbWVdfWNvbnN0ICQ9e3ZhbGlkYXRlOkksZXJyb3JzOnUsc2V0RXJyb3JzKGUsdCl7Y29uc3QgYT1MKGUuZmlsdGVyKHopKSxzPVtdO2Zvcihjb25zdCBmIG9mIEYudmFsdWUudmFsdWVzKCkpaWYoUCh0LGYubmFtZSkpe2NvbnN0IEU9dGUoZSxmLm5hbWUpO2YuYXBpLnNldEVycm9ycyhFLGFlKHQsZi5uYW1lfHwiIikpLHMucHVzaCguLi5VKGYpKX1pZih0KXtjb25zdCBmPW5lKHUudmFsdWUsdCk7dS52YWx1ZT1bLi4uZiwuLi5hLC4uLnNdfWVsc2UgdS52YWx1ZT1bLi4uYSwuLi5zXX0sYXN5bmMgc3VibWl0KCl7ay52YWx1ZSBpbnN0YW5jZW9mIEhUTUxGb3JtRWxlbWVudCYmay52YWx1ZS5yZXBvcnRWYWxpZGl0eSgpPT09ITF8fGF3YWl0IFcobmV3IEV2ZW50KCJzdWJtaXQiKSl9LGdldEVycm9ycyhlKXtyZXR1cm4gZT91LnZhbHVlLmZpbHRlcih0PT5lIGluc3RhbmNlb2YgUmVnRXhwP3QubmFtZSYmZS50ZXN0KHQubmFtZSk6dC5uYW1lPT09ZSk6dS52YWx1ZX0sY2xlYXIoZSl7Y29uc3QgdD1lP3UudmFsdWUuZmlsdGVyKHM9PnoocykmJihlIGluc3RhbmNlb2YgUmVnRXhwPyEocy5uYW1lJiZlLnRlc3Qocy5uYW1lKSk6cy5uYW1lIT09ZSkpOltdLGE9W107Zm9yKGNvbnN0IHMgb2YgRi52YWx1ZS52YWx1ZXMoKSlQKGUscy5uYW1lKSYmcy5hcGkuY2xlYXIoKSxhLnB1c2goLi4uVShzKSk7dS52YWx1ZT1bLi4udCwuLi5hXX0sZGlzYWJsZWQ6RCxsb2FkaW5nOnYsZGlydHk6cSgoKT0+ISFPLnNpemUpLGRpcnR5RmllbGRzOlIoTyksYmx1cnJlZEZpZWxkczpSKF8pLHRvdWNoZWRGaWVsZHM6UihUKX07cmV0dXJuIGkoJCksKGUsdCk9PihkZSgpLG1lKEVlKE0odyk/ImRpdiI6ImZvcm0iKSx7aWQ6TShnKSxyZWZfa2V5OiJmb3JtUmVmIixyZWY6ayxjbGFzczpoZSh5LnZhbHVlKHtjbGFzczpbTShwKT8uYmFzZSxyLmNsYXNzXX0pKSxvblN1Ym1pdDp2ZShXLFsicHJldmVudCJdKX0se2RlZmF1bHQ6cGUoKCk9Plt5ZShlLiRzbG90cywiZGVmYXVsdCIse2Vycm9yczp1LnZhbHVlLGxvYWRpbmc6di52YWx1ZX0pXSksXzozfSw0MCxbImlkIiwiY2xhc3MiXSkpfX07ZXhwb3J0e0FlIGFzIF99Owo=", "/_nuxt/DPfZkl2e.js": "aW1wb3J0e18gYXMgcyx1IGFzIGEsbyBhcyBpLGMgYXMgdSxhIGFzIHQsdCBhcyBuLGIgYXMgYyx3IGFzIGwsZCxlIGFzIGZ9ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCBwPXtjbGFzczoiYW50aWFsaWFzZWQgYmctd2hpdGUgZGFyazpiZy1bIzAyMDQyMF0gZGFyazp0ZXh0LXdoaXRlIGZvbnQtc2FucyBncmlkIG1pbi1oLXNjcmVlbiBvdmVyZmxvdy1oaWRkZW4gcGxhY2UtY29udGVudC1jZW50ZXIgdGV4dC1bIzAyMDQyMF0gdHJhY2tpbmctd2lkZSJ9LG09e2NsYXNzOiJtYXgtdy01MjBweCB0ZXh0LWNlbnRlciJ9LGg9WyJ0ZXh0Q29udGVudCJdLGI9WyJ0ZXh0Q29udGVudCJdLHg9WyJ0ZXh0Q29udGVudCJdLGc9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwifSx5PXtfX25hbWU6ImVycm9yLTQwNCIscHJvcHM6e2FwcE5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Ik51eHQifSxzdGF0dXM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NDA0fSxzdGF0dXNUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OiJQYWdlIG5vdCBmb3VuZCJ9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxkZWZhdWx0OiJTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIn0sYmFja0hvbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IkdvIGJhY2sgaG9tZSJ9fSxzZXR1cChlKXtjb25zdCByPWU7cmV0dXJuIGEoe3RpdGxlOmAke3Iuc3RhdHVzfSAtICR7ci5zdGF0dXNUZXh0fSB8ICR7ci5hcHBOYW1lfWAsc2NyaXB0Olt7aW5uZXJIVE1MOmAhZnVuY3Rpb24oKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKS5yZWxMaXN0O2lmKCEoZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKSl7Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXScpKXIoZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2Zvcihjb25zdCBvIG9mIGUpaWYoImNoaWxkTGlzdCI9PT1vLnR5cGUpZm9yKGNvbnN0IGUgb2Ygby5hZGRlZE5vZGVzKSJMSU5LIj09PWUudGFnTmFtZSYmIm1vZHVsZXByZWxvYWQiPT09ZS5yZWwmJnIoZSl9KS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfWZ1bmN0aW9uIHIoZSl7aWYoZS5lcClyZXR1cm47ZS5lcD0hMDtjb25zdCByPWZ1bmN0aW9uKGUpe2NvbnN0IHI9e307cmV0dXJuIGUuaW50ZWdyaXR5JiYoci5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHkpLGUucmVmZXJyZXJQb2xpY3kmJihyLnJlZmVycmVyUG9saWN5PWUucmVmZXJyZXJQb2xpY3kpLCJ1c2UtY3JlZGVudGlhbHMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjoiYW5vbnltb3VzIj09PWUuY3Jvc3NPcmlnaW4/ci5jcmVkZW50aWFscz0ib21pdCI6ci5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLHJ9KGUpO2ZldGNoKGUuaHJlZixyKX19KCk7YH1dLHN0eWxlOlt7aW5uZXJIVE1MOicqLDphZnRlciw6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS11bi1kZWZhdWx0LWJvcmRlci1jb2xvciwjZTVlN2ViKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjA7Ym94LXNpemluZzpib3JkZXItYm94fTphZnRlciw6YmVmb3Jley0tdW4tY29udGVudDoiIn1odG1se2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjB9aDEsaDJ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9aDEsaDIscHttYXJnaW46MH0qLDphZnRlciw6YmVmb3Jley0tdW4tcm90YXRlOjA7LS11bi1yb3RhdGUteDowOy0tdW4tcm90YXRlLXk6MDstLXVuLXJvdGF0ZS16OjA7LS11bi1zY2FsZS14OjE7LS11bi1zY2FsZS15OjE7LS11bi1zY2FsZS16OjE7LS11bi1za2V3LXg6MDstLXVuLXNrZXcteTowOy0tdW4tdHJhbnNsYXRlLXg6MDstLXVuLXRyYW5zbGF0ZS15OjA7LS11bi10cmFuc2xhdGUtejowOy0tdW4tcGFuLXg6IDstLXVuLXBhbi15OiA7LS11bi1waW5jaC16b29tOiA7LS11bi1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOnByb3hpbWl0eTstLXVuLW9yZGluYWw6IDstLXVuLXNsYXNoZWQtemVybzogOy0tdW4tbnVtZXJpYy1maWd1cmU6IDstLXVuLW51bWVyaWMtc3BhY2luZzogOy0tdW4tbnVtZXJpYy1mcmFjdGlvbjogOy0tdW4tYm9yZGVyLXNwYWNpbmcteDowOy0tdW4tYm9yZGVyLXNwYWNpbmcteTowOy0tdW4tcmluZy1vZmZzZXQtc2hhZG93OjAgMCB0cmFuc3BhcmVudDstLXVuLXJpbmctc2hhZG93OjAgMCB0cmFuc3BhcmVudDstLXVuLXNoYWRvdy1pbnNldDogOy0tdW4tc2hhZG93OjAgMCB0cmFuc3BhcmVudDstLXVuLXJpbmctaW5zZXQ6IDstLXVuLXJpbmctb2Zmc2V0LXdpZHRoOjBweDstLXVuLXJpbmctb2Zmc2V0LWNvbG9yOiNmZmY7LS11bi1yaW5nLXdpZHRoOjBweDstLXVuLXJpbmctY29sb3I6cmdiYSgxNDcsMTk3LDI1MywuNSk7LS11bi1ibHVyOiA7LS11bi1icmlnaHRuZXNzOiA7LS11bi1jb250cmFzdDogOy0tdW4tZHJvcC1zaGFkb3c6IDstLXVuLWdyYXlzY2FsZTogOy0tdW4taHVlLXJvdGF0ZTogOy0tdW4taW52ZXJ0OiA7LS11bi1zYXR1cmF0ZTogOy0tdW4tc2VwaWE6IDstLXVuLWJhY2tkcm9wLWJsdXI6IDstLXVuLWJhY2tkcm9wLWJyaWdodG5lc3M6IDstLXVuLWJhY2tkcm9wLWNvbnRyYXN0OiA7LS11bi1iYWNrZHJvcC1ncmF5c2NhbGU6IDstLXVuLWJhY2tkcm9wLWh1ZS1yb3RhdGU6IDstLXVuLWJhY2tkcm9wLWludmVydDogOy0tdW4tYmFja2Ryb3Atb3BhY2l0eTogOy0tdW4tYmFja2Ryb3Atc2F0dXJhdGU6IDstLXVuLWJhY2tkcm9wLXNlcGlhOiB9J31dfSksKGssdyk9Pntjb25zdCBvPWY7cmV0dXJuIGkoKSx1KCJkaXYiLHAsW3QoImRpdiIsbSxbdCgiaDEiLHtjbGFzczoiZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgbWItNCBzbTp0ZXh0LVsxMTBweF0gdGFidWxhci1udW1zIHRleHQtWzgwcHhdIix0ZXh0Q29udGVudDpuKGUuc3RhdHVzKX0sbnVsbCw4LGgpLHQoImgyIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgbWItMiBzbTp0ZXh0LTN4bCB0ZXh0LTJ4bCIsdGV4dENvbnRlbnQ6bihlLnN0YXR1c1RleHQpfSxudWxsLDgsYiksdCgicCIse2NsYXNzOiJtYi00IHB4LTIgdGV4dC1bIzY0NzQ4Ql0gdGV4dC1tZCIsdGV4dENvbnRlbnQ6bihlLmRlc2NyaXB0aW9uKX0sbnVsbCw4LHgpLHQoImRpdiIsZyxbYyhvLHt0bzoiLyIsY2xhc3M6ImZvbnQtbWVkaXVtIGhvdmVyOnRleHQtWyMwMERDODJdIHRleHQtc20gdW5kZXJsaW5lIHVuZGVybGluZS1vZmZzZXQtMyJ9LHtkZWZhdWx0OmwoKCk9PltkKG4oZS5iYWNrSG9tZSksMSldKSxfOjF9KV0pXSldKX19fSx2PXMoeSxbWyJfX3Njb3BlSWQiLCJkYXRhLXYtNmQ3YmFjZmYiXV0pO2V4cG9ydHt2IGFzIGRlZmF1bHR9Owo=", "/_nuxt/DTTLr5Hr.js": "aW1wb3J0e18gYXMgQX1mcm9tIi4vQ2M2emloLVIuanMiO2ltcG9ydHtfIGFzIE59ZnJvbSIuL2docVliSVNULmpzIjtpbXBvcnR7XyBhcyBEfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e2YgYXMgYixuIGFzIHcsZyBhcyBrLHAgYXMgTSxvIGFzIGQsaCBhcyB5LHcgYXMgYyxpIGFzIHMsYyBhcyB1LHQgYXMgZixGIGFzIFYscSBhcyBqLGEgYXMgZSxiIGFzIHAsZCBhcyB4LGogYXMgQyxyIGFzIGcscyBhcyBMLGsgYXMgeix2IGFzIFMsdSBhcyBGfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgVX1mcm9tIi4vQlNSS3FHclAuanMiO2ltcG9ydHtfIGFzIFR9ZnJvbSIuL0NsNGk0clNNLmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2ltcG9ydCIuL18ybFNkcjEzLmpzIjtjb25zdCBFPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LWVycm9yIiwiZGF0YS10ZXN0aWQiOiJjYW5kaWRhdGVzLWVycm9yIn0sTz17a2V5OjEsY2xhc3M6InRleHQtY2VudGVyIHRleHQtbXV0ZWQgcHktOCJ9LHE9e2tleToyLGNsYXNzOiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCIsImRhdGEtdGVzdGlkIjoiY2FuZGlkYXRlcy1saXN0In0sSD1bImRhdGEtdGVzdGlkIl0sSz17Y2xhc3M6ImZsZXgtMSJ9LFA9e2NsYXNzOiJmb250LW1lZGl1bSJ9LEc9e2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQifSxKPWIoe19fbmFtZToiSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0IixzZXR1cCgkKXtjb25zdCBuPUwoKSxfPXcoKSxpPWsoKSxsPWcoW10pLHI9ZyhudWxsKSx0PWcobnVsbCk7YXN5bmMgZnVuY3Rpb24gdigpe3IudmFsdWU9bnVsbDt0cnl7Y29uc3QgYT1hd2FpdCBuLmZldGNoSW1wZXJzb25hdGlvbkNhbmRpZGF0ZXMoKTtsLnZhbHVlPWE/Lml0ZW1zPz9bXX1jYXRjaChhKXtjb25zdCBtPWE7ci52YWx1ZT1tPy5zdGF0dXNNZXNzYWdlPz8iRmFpbGVkIHRvIGxvYWQgdXNlcnMiLGwudmFsdWU9W119fWFzeW5jIGZ1bmN0aW9uIEkoYSl7dC52YWx1ZT1hLmlkO3RyeXthd2FpdCBfLnN0YXJ0SW1wZXJzb25hdGlvbihhLmlkKSxpLmFkZCh7dGl0bGU6YE5vdyBpbXBlcnNvbmF0aW5nICR7YS5uYW1lPz9hLnByaW1hcnlfZW1haWx9YCxjb2xvcjoic3VjY2VzcyJ9KSx3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9Y2F0Y2gobSl7Y29uc3QgaD1tO2kuYWRkKHt0aXRsZToiSW1wZXJzb25hdGlvbiBmYWlsZWQiLGRlc2NyaXB0aW9uOmg/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P2g/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXt0LnZhbHVlPW51bGx9fXJldHVybiBNKCJpbXBlcnNvbmF0ZS1jYW5kaWRhdGVzIiwoKT0+digpKSwoYSxtKT0+e2NvbnN0IGg9QyxCPVU7cmV0dXJuIGQoKSx5KEIsbnVsbCx7aGVhZGVyOmMoKCk9PlsuLi5tWzBdfHwobVswXT1bZSgicCIse2NsYXNzOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQifSwiIEF2YWlsYWJsZSB1c2VycyAiLC0xKV0pXSksZGVmYXVsdDpjKCgpPT5bcyhyKT8oZCgpLHUoImRpdiIsRSxmKHMocikpLDEpKTpzKGwpLmxlbmd0aD09PTA/KGQoKSx1KCJkaXYiLE8sIiBObyBvdGhlciB1c2VycyB0byBpbXBlcnNvbmF0ZS4gIikpOihkKCksdSgidWwiLHEsWyhkKCEwKSx1KFYsbnVsbCxqKHMobCksbz0+KGQoKSx1KCJsaSIse2tleTpvLmlkLGNsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweS0zIiwiZGF0YS10ZXN0aWQiOmBjYW5kaWRhdGUtJHtvLnByaW1hcnlfZW1haWx9YH0sW2UoImRpdiIsSyxbZSgicCIsUCxmKG8ubmFtZT8/by51c2VybmFtZT8/by5wcmltYXJ5X2VtYWlsKSwxKSxlKCJwIixHLGYoby5wcmltYXJ5X2VtYWlsKSwxKV0pLHAoaCx7c2l6ZToic20iLGljb246ImktbHVjaWRlLXVzZXItY2hlY2siLGxvYWRpbmc6cyh0KT09PW8uaWQsZGlzYWJsZWQ6cyhfKS5pc0ltcGVyc29uYXRpbmd8fCEhby5pc19zdXNwZW5kZWQsImRhdGEtdGVzdGlkIjpgaW1wZXJzb25hdGUtJHtvLnByaW1hcnlfZW1haWx9YCxvbkNsaWNrOnN0PT5JKG8pfSx7ZGVmYXVsdDpjKCgpPT5bLi4ubVsxXXx8KG1bMV09W3goIiBJbXBlcnNvbmF0ZSAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIiwiZGF0YS10ZXN0aWQiLCJvbkNsaWNrIl0pXSw4LEgpKSksMTI4KSldKSldKSxfOjF9KX19fSksUT1PYmplY3QuYXNzaWduKEose19fbmFtZToiSW1wZXJzb25hdGVDYW5kaWRhdGVMaXN0In0pLFI9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LFc9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQifSxYPXtjbGFzczoiZm9udC1tZWRpdW0iLCJkYXRhLXRlc3RpZCI6ImltcGVyc29uYXRvci1uYW1lIn0sWT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCIsImRhdGEtdGVzdGlkIjoiaW1wZXJzb25hdG9yLWVtYWlsIn0sWj1iKHtfX25hbWU6IkltcGVyc29uYXRlU3RvcEJ1dHRvbiIsc2V0dXAoJCl7Y29uc3Qgbj13KCksXz1rKCksaT1nKCExKTthc3luYyBmdW5jdGlvbiBsKCl7aS52YWx1ZT0hMDt0cnl7YXdhaXQgbi5zdG9wSW1wZXJzb25hdGlvbigpLF8uYWRkKHt0aXRsZToiU3RvcHBlZCBpbXBlcnNvbmF0aW9uIixjb2xvcjoic3VjY2VzcyJ9KSx3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9Y2F0Y2gocil7Y29uc3QgdD1yO18uYWRkKHt0aXRsZToiU3RvcCBpbXBlcnNvbmF0aW9uIGZhaWxlZCIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/dD8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e2kudmFsdWU9ITF9fXJldHVybihyLHQpPT57Y29uc3Qgdj16LEk9QyxhPVU7cmV0dXJuIHMobikuaXNJbXBlcnNvbmF0aW5nJiZzKG4pLmltcGVyc29uYXRvcj8oZCgpLHkoYSx7a2V5OjAsImRhdGEtdGVzdGlkIjoiaW1wZXJzb25hdG9yLWNhcmQifSx7aGVhZGVyOmMoKCk9PltlKCJkaXYiLFIsW3Aodix7bmFtZToiaS1sdWNpZGUtdXNlci1jb2ciLGNsYXNzOiJzaXplLTQgdGV4dC13YXJuaW5nIn0pLHRbMF18fCh0WzBdPWUoInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIn0sIiBJbXBlcnNvbmF0b3IgKHJlYWwgc2Vzc2lvbikgIiwtMSkpXSldKSxkZWZhdWx0OmMoKCk9PltlKCJkaXYiLFcsW2UoImRpdiIsbnVsbCxbZSgicCIsWCxmKHMobikuaW1wZXJzb25hdG9yLm5hbWUpLDEpLGUoInAiLFksZihzKG4pLmltcGVyc29uYXRvci5wcmltYXJ5X2VtYWlsKSwxKV0pLHAoSSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixpY29uOiJpLWx1Y2lkZS1sb2ctb3V0Iixsb2FkaW5nOnMoaSksImRhdGEtdGVzdGlkIjoic3RvcC1pbXBlcnNvbmF0aW9uIixvbkNsaWNrOmx9LHtkZWZhdWx0OmMoKCk9PlsuLi50WzFdfHwodFsxXT1beCgiIFN0b3AgaW1wZXJzb25hdGluZyAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyJdKV0pXSksXzoxfSkpOlMoIiIsITApfX19KSx0dD1PYmplY3QuYXNzaWduKFose19fbmFtZToiSW1wZXJzb25hdGVTdG9wQnV0dG9uIn0pLGV0PXtjbGFzczoic3BhY2UteS02IG1heC13LTN4bCJ9LHB0PWIoe19fbmFtZToiaW1wZXJzb25hdGUiLHNldHVwKCQpe0Yoe3RpdGxlOiJJbXBlcnNvbmF0aW9uIHNhbmRib3gifSk7Y29uc3Qgbj13KCk7cmV0dXJuKF8saSk9Pntjb25zdCBsPUEscj1OLHQ9RDtyZXR1cm4gZCgpLHkodCx7aWQ6ImltcGVyc29uYXRlLXNhbmRib3gifSx7aGVhZGVyOmMoKCk9PltwKHIse3RpdGxlOiJJbXBlcnNvbmF0aW9uIHNhbmRib3gifSx7bGVhZGluZzpjKCgpPT5bcChsKV0pLF86MX0pXSksYm9keTpjKCgpPT5bZSgiZGl2IixldCxbaVswXXx8KGlbMF09ZSgicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSxbeCgiIEFkbWlucyB3aXRoIHRoZSAiKSxlKCJjb2RlIixudWxsLCJ1c2VyOmltcGVyc29uYXRlIikseCgiIGFiaWxpdHkgY2FuIHNpZ24gaW4gYXMgYW55IG90aGVyIHVzZXIuIFRoZSBLViBzZXNzaW9uIHN3YXBzIHRvIHRoZSB0YXJnZXQgc28gZXZlcnkgYXV0aG9yaXphdGlvbiBjaGVjayAoc2VydmVyIGFuZCBjbGllbnQpIHJlZmxlY3RzIHRoZSBpbXBlcnNvbmF0ZWQgdXNlci4gIildLC0xKSkscChUKSxwKHR0KSxzKG4pLmlzSW1wZXJzb25hdGluZz9TKCIiLCEwKTooZCgpLHkoUSx7a2V5OjB9KSldKV0pLF86MX0pfX19KTtleHBvcnR7cHQgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DTvXT-nR.js": "aW1wb3J0e2YgYXMgUyxhOSBhcyBJZSxhdSBhcyBfZSxhOCBhcyB6LG8gYXMgYyxoIGFzIEwsdyBhcyBoLEwgYXMgRCxpIGFzIGUsUCBhcyBLLGE3IGFzIGllLGEyIGFzIHBlLHIgYXMgVixSIGFzIExlLGE2IGFzIFBlLGE0IGFzIHFlLGJaIGFzIFNlLGIgYXMgXyxhYSBhcyBNLHYgYXMgQixhZyBhcyBnZSxsIGFzIE4sYWUgYXMgQmUsYmMgYXMgemUsWiBhcyBBZSxiayBhcyBZLGEzIGFzIG9lLGMwIGFzIEtlLGF6IGFzIFRlLGJZIGFzIFllLGJtIGFzIGV0LGFpIGFzIGRlLGFYIGFzIHR0LGMxIGFzIE5lLGMyIGFzIEZlLGMzIGFzIGNlLGMgYXMgUixGIGFzIFcsYk4gYXMgYXQsYzQgYXMgbnQsYWggYXMgSGUsSiBhcyBqZSxLIGFzIFdlLGFqIGFzIENlLGJxIGFzIGx0LGFGIGFzIGVlLE0gYXMgcSxhdiBhcyByZSxhdyBhcyBzZSxidiBhcyBpdCxiTSBhcyBvdCxhRyBhcyBmZSxOIGFzIHZlLGJRIGFzIHJ0LGFCIGFzICRlLEkgYXMgc3QsYnUgYXMgdXQsayBhcyBqLGJ0IGFzIEosZCBhcyBiZSx0IGFzIHRlLGFjIGFzIHVlLGJDIGFzIHllLGJWIGFzIG1lLGJXIGFzIGFlLGEgYXMgUSxxIGFzIG5lLGI2IGFzIGR0fWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e2kgYXMgY3R9ZnJvbSIuL0R4Q1dRc25sLmpzIjtpbXBvcnR7YSBhcyBFZSxIIGFzIGZ0LFAgYXMgdnR9ZnJvbSIuL0NZYW16TG01LmpzIjtpbXBvcnR7XyBhcyBwdH1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIGd0fWZyb20iLi9DWG9jNFVFUi5qcyI7Y29uc3RbVWUsaHRdPWllKCJDb2xsYXBzaWJsZVJvb3QiKTt2YXIgYnQ9Uyh7X19uYW1lOiJDb2xsYXBzaWJsZVJvb3QiLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChuLHtleHBvc2U6cyxlbWl0OmF9KXtjb25zdCBsPW4sZj1JZShsLCJvcGVuIixhLHtkZWZhdWx0VmFsdWU6bC5kZWZhdWx0T3BlbixwYXNzaXZlOmwub3Blbj09PXZvaWQgMH0pLHtkaXNhYmxlZDppLHVubW91bnRPbkhpZGU6dX09X2UobCk7cmV0dXJuIGh0KHtjb250ZW50SWQ6IiIsZGlzYWJsZWQ6aSxvcGVuOmYsdW5tb3VudE9uSGlkZTp1LG9uT3BlblRvZ2dsZTooKT0+e2kudmFsdWV8fChmLnZhbHVlPSFmLnZhbHVlKX19KSxzKHtvcGVuOmZ9KSx6KCksKHAseCk9PihjKCksTChlKEspLHthczpwLmFzLCJhcy1jaGlsZCI6bC5hc0NoaWxkLCJkYXRhLXN0YXRlIjplKGYpPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShpKT8iIjp2b2lkIDB9LHtkZWZhdWx0OmgoKCk9PltEKHAuJHNsb3RzLCJkZWZhdWx0Iix7b3BlbjplKGYpfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiXSkpfX0pLHl0PWJ0LG10PVMoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IkNvbGxhcHNpYmxlQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJjb250ZW50Rm91bmQiXSxzZXR1cChuLHtlbWl0OnN9KXtjb25zdCBhPW4sbD1zLG89VWUoKTtvLmNvbnRlbnRJZHx8PXBlKHZvaWQgMCwicmVrYS1jb2xsYXBzaWJsZS1jb250ZW50Iik7Y29uc3QgZj1WKCkse2ZvcndhcmRSZWY6aSxjdXJyZW50RWxlbWVudDp1fT16KCkscD1WKDApLHg9VigwKSxJPU4oKCk9Pm8ub3Blbi52YWx1ZSksYj1WKEkudmFsdWUpLEU9VigpO0xlKCgpPT5bSS52YWx1ZSxmLnZhbHVlPy5wcmVzZW50XSxhc3luYygpPT57YXdhaXQgUGUoKTtjb25zdCBkPXUudmFsdWU7aWYoIWQpcmV0dXJuO0UudmFsdWU9RS52YWx1ZXx8e3RyYW5zaXRpb25EdXJhdGlvbjpkLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbixhbmltYXRpb25OYW1lOmQuc3R5bGUuYW5pbWF0aW9uTmFtZX0sZC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249IjBzIixkLnN0eWxlLmFuaW1hdGlvbk5hbWU9Im5vbmUiO2NvbnN0IGs9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt4LnZhbHVlPWsuaGVpZ2h0LHAudmFsdWU9ay53aWR0aCxiLnZhbHVlfHwoZC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249RS52YWx1ZS50cmFuc2l0aW9uRHVyYXRpb24sZC5zdHlsZS5hbmltYXRpb25OYW1lPUUudmFsdWUuYW5pbWF0aW9uTmFtZSl9LHtpbW1lZGlhdGU6ITB9KTtjb25zdCBDPU4oKCk9PmIudmFsdWUmJm8ub3Blbi52YWx1ZSk7cmV0dXJuIHFlKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Yi52YWx1ZT0hMX0pfSksU2UodSwiYmVmb3JlbWF0Y2giLGQ9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntvLm9uT3BlblRvZ2dsZSgpLGwoImNvbnRlbnRGb3VuZCIpfSl9KSwoZCxrKT0+KGMoKSxMKGUoZ2UpLHtyZWZfa2V5OiJwcmVzZW50UmVmIixyZWY6ZixwcmVzZW50OmQuZm9yY2VNb3VudHx8ZShvKS5vcGVuLnZhbHVlLCJmb3JjZS1tb3VudCI6ITB9LHtkZWZhdWx0OmgoKHtwcmVzZW50OnJ9KT0+W18oZShLKSxNKGQuJGF0dHJzLHtpZDplKG8pLmNvbnRlbnRJZCxyZWY6ZShpKSwiYXMtY2hpbGQiOmEuYXNDaGlsZCxhczpkLmFzLGhpZGRlbjpyP3ZvaWQgMDplKG8pLnVubW91bnRPbkhpZGUudmFsdWU/IiI6InVudGlsLWZvdW5kIiwiZGF0YS1zdGF0ZSI6Qy52YWx1ZT92b2lkIDA6ZShvKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShvKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLHN0eWxlOnsiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0IjpgJHt4LnZhbHVlfXB4YCwiLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtd2lkdGgiOmAke3AudmFsdWV9cHhgfX0pLHtkZWZhdWx0OmgoKCk9PlshZShvKS51bm1vdW50T25IaWRlLnZhbHVlfHxyP0QoZC4kc2xvdHMsImRlZmF1bHQiLHtrZXk6MH0pOkIoInYtaWYiLCEwKV0pLF86Mn0sMTA0MCxbImlkIiwiYXMtY2hpbGQiLCJhcyIsImhpZGRlbiIsImRhdGEtc3RhdGUiLCJkYXRhLWRpc2FibGVkIiwic3R5bGUiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKX19KSxrdD1tdCxMdD1TKHtfX25hbWU6IkNvbGxhcHNpYmxlVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAobil7Y29uc3Qgcz1uO3ooKTtjb25zdCBhPVVlKCk7cmV0dXJuKGwsbyk9PihjKCksTChlKEspLHt0eXBlOmwuYXM9PT0iYnV0dG9uIj8iYnV0dG9uIjp2b2lkIDAsYXM6bC5hcywiYXMtY2hpbGQiOnMuYXNDaGlsZCwiYXJpYS1jb250cm9scyI6ZShhKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOmUoYSkub3Blbi52YWx1ZSwiZGF0YS1zdGF0ZSI6ZShhKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1kaXNhYmxlZCI6ZShhKS5kaXNhYmxlZD8udmFsdWU/IiI6dm9pZCAwLGRpc2FibGVkOmUoYSkuZGlzYWJsZWQ/LnZhbHVlLG9uQ2xpY2s6ZShhKS5vbk9wZW5Ub2dnbGV9LHtkZWZhdWx0OmgoKCk9PltEKGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0eXBlIiwiYXMiLCJhcy1jaGlsZCIsImFyaWEtY29udHJvbHMiLCJhcmlhLWV4cGFuZGVkIiwiZGF0YS1zdGF0ZSIsImRhdGEtZGlzYWJsZWQiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkpfX0pLEN0PUx0O2Z1bmN0aW9uIHh0KHt0eXBlOm4sZGVmYXVsdFZhbHVlOnMsbW9kZWxWYWx1ZTphfSl7Y29uc3QgbD1hfHxzO3JldHVybiBhIT09dm9pZCAwfHxzIT09dm9pZCAwP0FycmF5LmlzQXJyYXkobCk/Im11bHRpcGxlIjoic2luZ2xlIjpuPz8ic2luZ2xlIn1mdW5jdGlvbiB3dCh7dHlwZTpuLGRlZmF1bHRWYWx1ZTpzLG1vZGVsVmFsdWU6YX0pe3JldHVybiBufHx4dCh7dHlwZTpuLGRlZmF1bHRWYWx1ZTpzLG1vZGVsVmFsdWU6YX0pfWZ1bmN0aW9uIEl0KHt0eXBlOm4sZGVmYXVsdFZhbHVlOnN9KXtyZXR1cm4gcyE9PXZvaWQgMD9zOm49PT0ic2luZ2xlIj92b2lkIDA6W119ZnVuY3Rpb24gX3QobixzKXtjb25zdCBhPU4oKCk9Pnd0KG4pKSxsPUllKG4sIm1vZGVsVmFsdWUiLHMse2RlZmF1bHRWYWx1ZTpJdChuKSxwYXNzaXZlOm4ubW9kZWxWYWx1ZT09PXZvaWQgMCxkZWVwOiEwfSk7ZnVuY3Rpb24gbyhpKXtpZihhLnZhbHVlPT09InNpbmdsZSIpbC52YWx1ZT1CZShpLGwudmFsdWUpP3ZvaWQgMDppO2Vsc2V7Y29uc3QgdT1BcnJheS5pc0FycmF5KGwudmFsdWUpP1suLi5sLnZhbHVlfHxbXV06W2wudmFsdWVdLmZpbHRlcihCb29sZWFuKTtpZihjdCh1LGkpKXtjb25zdCBwPXUuZmluZEluZGV4KHg9PkJlKHgsaSkpO3Uuc3BsaWNlKHAsMSl9ZWxzZSB1LnB1c2goaSk7bC52YWx1ZT11fX1jb25zdCBmPU4oKCk9PmEudmFsdWU9PT0ic2luZ2xlIik7cmV0dXJue21vZGVsVmFsdWU6bCxjaGFuZ2VNb2RlbFZhbHVlOm8saXNTaW5nbGU6Zn19Y29uc3RbT2UscXRdPWllKCJBY2NvcmRpb25Sb290Iik7dmFyIFR0PVMoe19fbmFtZToiQWNjb3JkaW9uUm9vdCIscHJvcHM6e2NvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmVydGljYWwifSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiXSxzZXR1cChuLHtlbWl0OnN9KXtjb25zdCBhPW4sbD1zLHtkaXI6byxkaXNhYmxlZDpmLHVubW91bnRPbkhpZGU6aX09X2UoYSksdT16ZShvKSx7bW9kZWxWYWx1ZTpwLGNoYW5nZU1vZGVsVmFsdWU6eCxpc1NpbmdsZTpJfT1fdChhLGwpLHtmb3J3YXJkUmVmOmIsY3VycmVudEVsZW1lbnQ6RX09eigpO3JldHVybiBxdCh7ZGlzYWJsZWQ6ZixkaXJlY3Rpb246dSxvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHBhcmVudEVsZW1lbnQ6RSxpc1NpbmdsZTpJLGNvbGxhcHNpYmxlOmEuY29sbGFwc2libGUsbW9kZWxWYWx1ZTpwLGNoYW5nZU1vZGVsVmFsdWU6eCx1bm1vdW50T25IaWRlOml9KSwoQyxkKT0+KGMoKSxMKGUoSykse3JlZjplKGIpLCJhcy1jaGlsZCI6Qy5hc0NoaWxkLGFzOkMuYXN9LHtkZWZhdWx0OmgoKCk9PltEKEMuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplKHApfSldKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KSxWZT1UdCx4ZT0oZnVuY3Rpb24obil7cmV0dXJuIG4uT3Blbj0ib3BlbiIsbi5DbG9zZWQ9ImNsb3NlZCIsbn0pKHhlfHx7fSk7Y29uc3RbR2UsRXRdPWllKCJBY2NvcmRpb25JdGVtIik7dmFyIE90PVMoe19fbmFtZToiQWNjb3JkaW9uSXRlbSIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChuLHtleHBvc2U6c30pe2NvbnN0IGE9bixsPU9lKCksbz1OKCgpPT5sLmlzU2luZ2xlLnZhbHVlP2EudmFsdWU9PT1sLm1vZGVsVmFsdWUudmFsdWU6QXJyYXkuaXNBcnJheShsLm1vZGVsVmFsdWUudmFsdWUpJiZsLm1vZGVsVmFsdWUudmFsdWUuaW5jbHVkZXMoYS52YWx1ZSkpLGY9TigoKT0+bC5kaXNhYmxlZC52YWx1ZXx8YS5kaXNhYmxlZCksaT1OKCgpPT5mLnZhbHVlPyIiOnZvaWQgMCksdT1OKCgpPT5vLnZhbHVlP3hlLk9wZW46eGUuQ2xvc2VkKTtzKHtvcGVuOm8sZGF0YURpc2FibGVkOml9KTtjb25zdHtjdXJyZW50UmVmOnAsY3VycmVudEVsZW1lbnQ6eH09eigpO0V0KHtvcGVuOm8sZGF0YVN0YXRlOnUsZGlzYWJsZWQ6ZixkYXRhRGlzYWJsZWQ6aSx0cmlnZ2VySWQ6IiIsY3VycmVudFJlZjpwLGN1cnJlbnRFbGVtZW50OngsdmFsdWU6TigoKT0+YS52YWx1ZSl9KTtmdW5jdGlvbiBJKGIpe2NvbnN0IEU9Yi50YXJnZXQ7aWYoQXJyYXkuZnJvbShsLnBhcmVudEVsZW1lbnQudmFsdWU/LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXSIpPz9bXSkuZmluZEluZGV4KGs9Pms9PT1FKT09PS0xKXJldHVybiBudWxsO0VlKGIsRSxsLnBhcmVudEVsZW1lbnQudmFsdWUse2Fycm93S2V5T3B0aW9uczpsLm9yaWVudGF0aW9uLGRpcjpsLmRpcmVjdGlvbi52YWx1ZSxmb2N1czohMH0pfXJldHVybihiLEUpPT4oYygpLEwoZSh5dCkseyJkYXRhLW9yaWVudGF0aW9uIjplKGwpLm9yaWVudGF0aW9uLCJkYXRhLWRpc2FibGVkIjppLnZhbHVlLCJkYXRhLXN0YXRlIjp1LnZhbHVlLGRpc2FibGVkOmYudmFsdWUsb3BlbjpvLnZhbHVlLGFzOmEuYXMsImFzLWNoaWxkIjphLmFzQ2hpbGQsInVubW91bnQtb24taGlkZSI6YS51bm1vdW50T25IaWRlPz9lKGwpLnVubW91bnRPbkhpZGUudmFsdWUsb25LZXlkb3duOkFlKEksWyJ1cCIsImRvd24iLCJsZWZ0IiwicmlnaHQiLCJob21lIiwiZW5kIl0pfSx7ZGVmYXVsdDpoKCgpPT5bRChiLiRzbG90cywiZGVmYXVsdCIse29wZW46by52YWx1ZX0pXSksXzozfSw4LFsiZGF0YS1vcmllbnRhdGlvbiIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLXN0YXRlIiwiZGlzYWJsZWQiLCJvcGVuIiwiYXMiLCJhcy1jaGlsZCIsInVubW91bnQtb24taGlkZSJdKSl9fSksTXQ9T3QsRHQ9Uyh7X19uYW1lOiJBY2NvcmRpb25Db250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChuKXtjb25zdCBzPW4sYT1PZSgpLGw9R2UoKTtyZXR1cm4geigpLChvLGYpPT4oYygpLEwoZShrdCkse3JvbGU6InJlZ2lvbiIsImFzLWNoaWxkIjpzLmFzQ2hpbGQsYXM6by5hcywiZm9yY2UtbW91bnQiOnMuZm9yY2VNb3VudCwiYXJpYS1sYWJlbGxlZGJ5IjplKGwpLnRyaWdnZXJJZCwiZGF0YS1zdGF0ZSI6ZShsKS5kYXRhU3RhdGUudmFsdWUsImRhdGEtZGlzYWJsZWQiOmUobCkuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjplKGEpLm9yaWVudGF0aW9uLHN0eWxlOnsiLS1yZWthLWFjY29yZGlvbi1jb250ZW50LXdpZHRoIjoidmFyKC0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKSIsIi0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQiOiJ2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KSJ9LG9uQ29udGVudEZvdW5kOmZbMF18fChmWzBdPWk9PmUoYSkuY2hhbmdlTW9kZWxWYWx1ZShlKGwpLnZhbHVlLnZhbHVlKSl9LHtkZWZhdWx0OmgoKCk9PltEKG8uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIiwiZm9yY2UtbW91bnQiLCJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtb3JpZW50YXRpb24iXSkpfX0pLEJ0PUR0LE50PVMoe19fbmFtZToiQWNjb3JkaW9uVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IHM9bixhPU9lKCksbD1HZSgpO2wudHJpZ2dlcklkfHw9cGUodm9pZCAwLCJyZWthLWFjY29yZGlvbi10cmlnZ2VyIik7ZnVuY3Rpb24gbygpe2NvbnN0IGY9YS5pc1NpbmdsZS52YWx1ZSYmbC5vcGVuLnZhbHVlJiYhYS5jb2xsYXBzaWJsZTtsLmRpc2FibGVkLnZhbHVlfHxmfHxhLmNoYW5nZU1vZGVsVmFsdWUobC52YWx1ZS52YWx1ZSl9cmV0dXJuKGYsaSk9PihjKCksTChlKEN0KSx7aWQ6ZShsKS50cmlnZ2VySWQscmVmOmUobCkuY3VycmVudFJlZiwiZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbSI6IiIsYXM6cy5hcywiYXMtY2hpbGQiOnMuYXNDaGlsZCwiYXJpYS1kaXNhYmxlZCI6ZShsKS5kaXNhYmxlZC52YWx1ZXx8dm9pZCAwLCJhcmlhLWV4cGFuZGVkIjplKGwpLm9wZW4udmFsdWV8fCExLCJkYXRhLWRpc2FibGVkIjplKGwpLmRhdGFEaXNhYmxlZC52YWx1ZSwiZGF0YS1vcmllbnRhdGlvbiI6ZShhKS5vcmllbnRhdGlvbiwiZGF0YS1zdGF0ZSI6ZShsKS5kYXRhU3RhdGUudmFsdWUsZGlzYWJsZWQ6ZShsKS5kaXNhYmxlZC52YWx1ZSxvbkNsaWNrOm99LHtkZWZhdWx0OmgoKCk9PltEKGYuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJpZCIsImFzIiwiYXMtY2hpbGQiLCJhcmlhLWRpc2FibGVkIiwiYXJpYS1leHBhbmRlZCIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLW9yaWVudGF0aW9uIiwiZGF0YS1zdGF0ZSIsImRpc2FibGVkIl0pKX19KSxSZT1OdDtmdW5jdGlvbiBoZShuKXtyZXR1cm4gbj8ib3BlbiI6ImNsb3NlZCJ9ZnVuY3Rpb24gWmUobixzKXtyZXR1cm5gJHtufS10cmlnZ2VyLSR7c31gfWZ1bmN0aW9uIE1lKG4scyl7cmV0dXJuYCR7bn0tY29udGVudC0ke3N9YH1jb25zdCAkdD0ibmF2aWdhdGlvbk1lbnUubGlua1NlbGVjdCIsbGU9Im5hdmlnYXRpb25NZW51LnJvb3RDb250ZW50RGlzbWlzcyI7ZnVuY3Rpb24gd2Uobil7Y29uc3Qgcz1bXSxhPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIobixOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTpsPT57Y29uc3Qgbz1sLnRhZ05hbWU9PT0iSU5QVVQiJiZsLnR5cGU9PT0iaGlkZGVuIjtyZXR1cm4gbC5kaXNhYmxlZHx8bC5oaWRkZW58fG8/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDpsLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7YS5uZXh0Tm9kZSgpOylzLnB1c2goYS5jdXJyZW50Tm9kZSk7cmV0dXJuIHN9ZnVuY3Rpb24gSmUobil7Y29uc3Qgcz1ZKCk7cmV0dXJuIG4uc29tZShhPT5hPT09cz8hMDooYS5mb2N1cygpLFkoKSE9PXMpKX1mdW5jdGlvbiBWdChuKXtyZXR1cm4gbi5mb3JFYWNoKHM9PntzLmRhdGFzZXQudGFiaW5kZXg9cy5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fCIiLHMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIil9KSwoKT0+e24uZm9yRWFjaChzPT57Y29uc3QgYT1zLmRhdGFzZXQudGFiaW5kZXg7cy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixhKX0pfX1mdW5jdGlvbiBRZShuKXtyZXR1cm4gcz0+cy5wb2ludGVyVHlwZT09PSJtb3VzZSI/bihzKTp2b2lkIDB9Y29uc3RbWCxSdF09aWUoWyJOYXZpZ2F0aW9uTWVudVJvb3QiLCJOYXZpZ2F0aW9uTWVudVN1YiJdLCJOYXZpZ2F0aW9uTWVudUNvbnRleHQiKTt2YXIgUHQ9Uyh7X19uYW1lOiJOYXZpZ2F0aW9uTWVudVJvb3QiLHByb3BzOnttb2RlbFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGVmYXVsdFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjIwMH0sc2tpcERlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MzAwfSxkaXNhYmxlQ2xpY2tUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZUhvdmVyVHJpZ2dlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpc2FibGVQb2ludGVyTGVhdmVDbG9zZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5hdiJ9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYT1uLG89SWUoYSwibW9kZWxWYWx1ZSIscyx7ZGVmYXVsdFZhbHVlOmEuZGVmYXVsdFZhbHVlPz8iIixwYXNzaXZlOmEubW9kZWxWYWx1ZT09PXZvaWQgMH0pLGY9VigiIikse2ZvcndhcmRSZWY6aSxjdXJyZW50RWxlbWVudDp1fT16KCkscD1WKCkseD1WKCksST1WKCkse2dldEl0ZW1zOmIsQ29sbGVjdGlvblNsb3Q6RX09b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUiLGlzUHJvdmlkZXI6ITB9KSx7ZGVsYXlEdXJhdGlvbjpDLHNraXBEZWxheUR1cmF0aW9uOmQsZGlyOmssZGlzYWJsZUNsaWNrVHJpZ2dlcjpyLGRpc2FibGVIb3ZlclRyaWdnZXI6JCx1bm1vdW50T25IaWRlOnZ9PV9lKGEpLHk9emUoayksTz1LZSghMSxkKSxtPU4oKCk9Pm8udmFsdWUhPT0iInx8Ty52YWx1ZT8xNTA6Qy52YWx1ZSksdz1ZZShnPT57dHlwZW9mIGc9PSJzdHJpbmciJiYoZi52YWx1ZT1vLnZhbHVlLG8udmFsdWU9Zyl9LG0pO1RlKCgpPT57aWYoIW8udmFsdWUpcmV0dXJuO2NvbnN0IGc9YigpLm1hcChUPT5ULnJlZik7SS52YWx1ZT1nLmZpbmQoVD0+VC5pZC5pbmNsdWRlcyhvLnZhbHVlKSl9KSxTZSh1LGxlLHQpLFJ0KHtpc1Jvb3RNZW51OiEwLG1vZGVsVmFsdWU6byxwcmV2aW91c1ZhbHVlOmYsYmFzZUlkOnBlKHZvaWQgMCwicmVrYS1uYXZpZ2F0aW9uLW1lbnUiKSxkaXNhYmxlQ2xpY2tUcmlnZ2VyOnIsZGlzYWJsZUhvdmVyVHJpZ2dlcjokLGRpcjp5LHVubW91bnRPbkhpZGU6dixvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLHJvb3ROYXZpZ2F0aW9uTWVudTp1LGluZGljYXRvclRyYWNrOnAsYWN0aXZlVHJpZ2dlcjpJLG9uSW5kaWNhdG9yVHJhY2tDaGFuZ2U6Zz0+e3AudmFsdWU9Z30sdmlld3BvcnQ6eCxvblZpZXdwb3J0Q2hhbmdlOmc9Pnt4LnZhbHVlPWd9LG9uVHJpZ2dlckVudGVyOmc9Pnt3KGcpfSxvblRyaWdnZXJMZWF2ZTooKT0+e08udmFsdWU9ITAsdygiIil9LG9uQ29udGVudEVudGVyOigpPT57dygpfSxvbkNvbnRlbnRMZWF2ZTooKT0+e2EuZGlzYWJsZVBvaW50ZXJMZWF2ZUNsb3NlfHx3KCIiKX0sb25JdGVtU2VsZWN0Omc9PntmLnZhbHVlPW8udmFsdWUsby52YWx1ZT1nfSxvbkl0ZW1EaXNtaXNzOnR9KTtmdW5jdGlvbiB0KCl7Zi52YWx1ZT1vLnZhbHVlLG8udmFsdWU9IiJ9cmV0dXJuKGcsVCk9PihjKCksTChlKEUpLG51bGwse2RlZmF1bHQ6aCgoKT0+W18oZShLKSx7cmVmOmUoaSksYXM6Zy5hcywiYXMtY2hpbGQiOmcuYXNDaGlsZCwiZGF0YS1vcmllbnRhdGlvbiI6Zy5vcmllbnRhdGlvbixkaXI6ZSh5KSwiZGF0YS1yZWthLW5hdmlnYXRpb24tbWVudSI6IiJ9LHtkZWZhdWx0OmgoKCk9PltEKGcuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTplKG8pfSldKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1vcmllbnRhdGlvbiIsImRpciJdKV0pLF86M30pKX19KSxTdD1QdDtjb25zdFtEZSx6dF09aWUoIk5hdmlnYXRpb25NZW51SXRlbSIpO3ZhciBBdD1TKHtfX25hbWU6Ik5hdmlnYXRpb25NZW51SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LHNldHVwKG4pe2NvbnN0IHM9bjt6KCk7Y29uc3R7Z2V0SXRlbXM6YX09b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUifSksbD1YKCksbz1wZShzLnZhbHVlKSxmPVYoKSxpPVYoKSx1PU1lKGwuYmFzZUlkLG8pO2xldCBwPSgpPT4oe30pO2NvbnN0IHg9VighMSk7YXN5bmMgZnVuY3Rpb24gSShkPSJzdGFydCIpe2NvbnN0IGs9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodSk7aWYoayl7cCgpO2NvbnN0IHI9d2Uoayk7ci5sZW5ndGgmJkplKGQ9PT0ic3RhcnQiP3I6ci5yZXZlcnNlKCkpfX1mdW5jdGlvbiBiKCl7Y29uc3QgZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh1KTtpZihkKXtjb25zdCBrPXdlKGQpO2subGVuZ3RoJiYocD1WdChrKSl9fXp0KHt2YWx1ZTpvLGNvbnRlbnRJZDp1LHRyaWdnZXJSZWY6Zixmb2N1c1Byb3h5UmVmOmksd2FzRXNjYXBlQ2xvc2VSZWY6eCxvbkVudHJ5S2V5RG93bjpJLG9uRm9jdXNQcm94eUVudGVyOkksb25Db250ZW50Rm9jdXNPdXRzaWRlOmIsb25Sb290Q29udGVudENsb3NlOmJ9KTtmdW5jdGlvbiBFKCl7bC5vbkl0ZW1EaXNtaXNzKCksZi52YWx1ZT8uZm9jdXMoKX1mdW5jdGlvbiBDKGQpe2NvbnN0IGs9WSgpO2lmKGQua2V5Q29kZT09PTMyfHxkLmtleT09PSJFbnRlciIpaWYobC5tb2RlbFZhbHVlLnZhbHVlPT09byl7RSgpLGQucHJldmVudERlZmF1bHQoKTtyZXR1cm59ZWxzZXtkLnRhcmdldC5jbGljaygpLGQucHJldmVudERlZmF1bHQoKTtyZXR1cm59Y29uc3Qgcj1hKCkuZmlsdGVyKHY9PnYucmVmLnBhcmVudEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgiZGF0YS1tZW51LWl0ZW0iKSkubWFwKHY9PnYucmVmKTtpZighci5pbmNsdWRlcyhrKSlyZXR1cm47Y29uc3QgJD1FZShkLGssdm9pZCAwLHtpdGVtc0FycmF5OnIsbG9vcDohMX0pOyQmJiQ/LmZvY3VzKCksZC5wcmV2ZW50RGVmYXVsdCgpLGQuc3RvcFByb3BhZ2F0aW9uKCl9cmV0dXJuKGQsayk9PihjKCksTChlKEspLHsiYXMtY2hpbGQiOmQuYXNDaGlsZCxhczpkLmFzLCJkYXRhLW1lbnUtaXRlbSI6IiIsb25LZXlkb3duOkFlKEMsWyJ1cCIsImRvd24iLCJsZWZ0IiwicmlnaHQiLCJob21lIiwiZW5kIiwic3BhY2UiXSl9LHtkZWZhdWx0OmgoKCk9PltEKGQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIl0pKX19KSxLdD1BdCxGdD1TKHtfX25hbWU6Ik5hdmlnYXRpb25NZW51Q29udGVudEltcGwiLHByb3BzOntkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIl0sc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYT1uLGw9cyx7Z2V0SXRlbXM6b309b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUifSkse2ZvcndhcmRSZWY6ZixjdXJyZW50RWxlbWVudDppfT16KCksdT1YKCkscD1EZSgpLHg9WmUodS5iYXNlSWQscC52YWx1ZSksST1NZSh1LmJhc2VJZCxwLnZhbHVlKSxiPVYobnVsbCksRT1OKCgpPT57Y29uc3Qgdj1vKCkubWFwKGc9PmcucmVmLmlkLnNwbGl0KCJ0cmlnZ2VyLSIpWzFdKTt1LmRpci52YWx1ZT09PSJydGwiJiZ2LnJldmVyc2UoKTtjb25zdCB5PXYuaW5kZXhPZih1Lm1vZGVsVmFsdWUudmFsdWUpLE89di5pbmRleE9mKHUucHJldmlvdXNWYWx1ZS52YWx1ZSksbT1wLnZhbHVlPT09dS5tb2RlbFZhbHVlLnZhbHVlLHc9Tz09PXYuaW5kZXhPZihwLnZhbHVlKTtpZighbSYmIXcpcmV0dXJuIGIudmFsdWU7Y29uc3QgdD0oKCk9PntpZih5IT09Tyl7aWYobSYmTyE9PS0xKXJldHVybiB5Pk8/ImZyb20tZW5kIjoiZnJvbS1zdGFydCI7aWYodyYmeSE9PS0xKXJldHVybiB5Pk8/InRvLXN0YXJ0IjoidG8tZW5kIn1yZXR1cm4gbnVsbH0pKCk7cmV0dXJuIGIudmFsdWU9dCx0fSk7ZnVuY3Rpb24gQyh2KXtpZihsKCJmb2N1c091dHNpZGUiLHYpLGwoImludGVyYWN0T3V0c2lkZSIsdiksdi5kZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQuaGFzQXR0cmlidXRlKCJkYXRhLW5hdmlnYXRpb24tbWVudS10cmlnZ2VyIikmJnYucHJldmVudERlZmF1bHQoKSwhdi5kZWZhdWx0UHJldmVudGVkKXtwLm9uQ29udGVudEZvY3VzT3V0c2lkZSgpO2NvbnN0IE89di50YXJnZXQ7dS5yb290TmF2aWdhdGlvbk1lbnU/LnZhbHVlPy5jb250YWlucyhPKSYmdi5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBkKHYpe2lmKGwoInBvaW50ZXJEb3duT3V0c2lkZSIsdiksIXYuZGVmYXVsdFByZXZlbnRlZCl7Y29uc3QgeT12LnRhcmdldCxPPW8oKS5zb21lKHc9PncucmVmLmNvbnRhaW5zKHkpKSxtPXUuaXNSb290TWVudSYmdS52aWV3cG9ydC52YWx1ZT8uY29udGFpbnMoeSk7KE98fG18fCF1LmlzUm9vdE1lbnUpJiZ2LnByZXZlbnREZWZhdWx0KCl9fVRlKHY9Pntjb25zdCB5PWkudmFsdWU7aWYodS5pc1Jvb3RNZW51JiZ5KXtjb25zdCBPPSgpPT57dS5vbkl0ZW1EaXNtaXNzKCkscC5vblJvb3RDb250ZW50Q2xvc2UoKSx5LmNvbnRhaW5zKFkoKSkmJnAudHJpZ2dlclJlZi52YWx1ZT8uZm9jdXMoKX07eS5hZGRFdmVudExpc3RlbmVyKGxlLE8pLHYoKCk9PnkucmVtb3ZlRXZlbnRMaXN0ZW5lcihsZSxPKSl9fSk7ZnVuY3Rpb24gayh2KXtsKCJlc2NhcGVLZXlEb3duIix2KSx2LmRlZmF1bHRQcmV2ZW50ZWR8fCh1Lm9uSXRlbURpc21pc3MoKSxwLnRyaWdnZXJSZWY/LnZhbHVlPy5mb2N1cygpLHAud2FzRXNjYXBlQ2xvc2VSZWYudmFsdWU9ITApfWZ1bmN0aW9uIHIodil7aWYodi50YXJnZXQuY2xvc2VzdCgiW2RhdGEtcmVrYS1uYXZpZ2F0aW9uLW1lbnVdIikhPT11LnJvb3ROYXZpZ2F0aW9uTWVudS52YWx1ZSlyZXR1cm47Y29uc3QgeT12LmFsdEtleXx8di5jdHJsS2V5fHx2Lm1ldGFLZXksTz12LmtleT09PSJUYWIiJiYheSxtPXdlKHYuY3VycmVudFRhcmdldCk7aWYoTyl7Y29uc3QgdD1ZKCksZz1tLmZpbmRJbmRleChQPT5QPT09dCksQT12LnNoaWZ0S2V5P20uc2xpY2UoMCxnKS5yZXZlcnNlKCk6bS5zbGljZShnKzEsbS5sZW5ndGgpO2lmKEplKEEpKXYucHJldmVudERlZmF1bHQoKTtlbHNle3AuZm9jdXNQcm94eVJlZi52YWx1ZT8uZm9jdXMoKTtyZXR1cm59fUVlKHYsWSgpLHZvaWQgMCx7aXRlbXNBcnJheTptLGxvb3A6ITEsZW5hYmxlSWdub3JlZEVsZW1lbnQ6ITB9KT8uZm9jdXMoKX1mdW5jdGlvbiAkKCl7Y29uc3Qgdj1uZXcgRXZlbnQobGUse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pO2kudmFsdWU/LmRpc3BhdGNoRXZlbnQodil9cmV0dXJuKHYseSk9PihjKCksTChlKGV0KSxNKHtpZDplKEkpLHJlZjplKGYpLCJhcmlhLWxhYmVsbGVkYnkiOmUoeCksImRhdGEtbW90aW9uIjpFLnZhbHVlLCJkYXRhLXN0YXRlIjplKGhlKShlKHUpLm1vZGVsVmFsdWUudmFsdWU9PT1lKHApLnZhbHVlKSwiZGF0YS1vcmllbnRhdGlvbiI6ZSh1KS5vcmllbnRhdGlvbn0sYSx7b25LZXlkb3duOnIsb25Fc2NhcGVLZXlEb3duOmssb25Qb2ludGVyRG93bk91dHNpZGU6ZCxvbkZvY3VzT3V0c2lkZTpDLG9uRGlzbWlzczokfSkse2RlZmF1bHQ6aCgoKT0+W0Qodi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFyaWEtbGFiZWxsZWRieSIsImRhdGEtbW90aW9uIiwiZGF0YS1zdGF0ZSIsImRhdGEtb3JpZW50YXRpb24iXSkpfX0pLEh0PUZ0LGp0PVMoe2luaGVyaXRBdHRyczohMSxfX25hbWU6Ik5hdmlnYXRpb25NZW51Q29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSJdLHNldHVwKG4se2VtaXQ6c30pe2NvbnN0IGE9bixsPXMsbz1kZSh0dChhLCJmb3JjZU1vdW50IiksbCkse2ZvcndhcmRSZWY6Zn09eigpLGk9WCgpLHU9RGUoKSxwPU4oKCk9PnUudmFsdWU9PT1pLm1vZGVsVmFsdWUudmFsdWUpLHg9TigoKT0+aS52aWV3cG9ydC52YWx1ZSYmIWkubW9kZWxWYWx1ZS52YWx1ZSYmaS5wcmV2aW91c1ZhbHVlLnZhbHVlP2kucHJldmlvdXNWYWx1ZS52YWx1ZT09PXUudmFsdWU6ITEpO3JldHVybihJLGIpPT4oYygpLEwoRmUse3RvOmUoTmUpJiZlKGkpLnZpZXdwb3J0LnZhbHVlP2UoaSkudmlld3BvcnQudmFsdWU6ImJvZHkiLGRpc2FibGVkOmUoTmUpJiZlKGkpLnZpZXdwb3J0LnZhbHVlPyFlKGkpLnZpZXdwb3J0LnZhbHVlOiEwfSxbXyhlKGdlKSx7cHJlc2VudDpJLmZvcmNlTW91bnR8fHAudmFsdWV8fHgudmFsdWUsImZvcmNlLW1vdW50IjohZShpKS51bm1vdW50T25IaWRlLnZhbHVlfSx7ZGVmYXVsdDpoKCh7cHJlc2VudDpFfSk9PltfKEh0LE0oe3JlZjplKGYpLCJkYXRhLXN0YXRlIjplKGhlKShwLnZhbHVlKSxzdHlsZTp7cG9pbnRlckV2ZW50czohcC52YWx1ZSYmZShpKS5pc1Jvb3RNZW51PyJub25lIjp2b2lkIDB9fSx7Li4uSS4kYXR0cnMsLi4uZShvKX0se2hpZGRlbjohRSxvblBvaW50ZXJlbnRlcjpiWzBdfHwoYlswXT1DPT5lKGkpLm9uQ29udGVudEVudGVyKGUodSkudmFsdWUpKSxvblBvaW50ZXJsZWF2ZTpiWzFdfHwoYlsxXT1DPT5lKFFlKSgoKT0+ZShpKS5vbkNvbnRlbnRMZWF2ZSgpKShDKSksb25Qb2ludGVyRG93bk91dHNpZGU6YlsyXXx8KGJbMl09Qz0+bCgicG9pbnRlckRvd25PdXRzaWRlIixDKSksb25Gb2N1c091dHNpZGU6YlszXXx8KGJbM109Qz0+bCgiZm9jdXNPdXRzaWRlIixDKSksb25JbnRlcmFjdE91dHNpZGU6Yls0XXx8KGJbNF09Qz0+bCgiaW50ZXJhY3RPdXRzaWRlIixDKSl9KSx7ZGVmYXVsdDpoKCgpPT5bRChJLiRzbG90cywiZGVmYXVsdCIpXSksXzoyfSwxMDQwLFsiZGF0YS1zdGF0ZSIsInN0eWxlIiwiaGlkZGVuIl0pXSksXzozfSw4LFsicHJlc2VudCIsImZvcmNlLW1vdW50Il0pXSw4LFsidG8iLCJkaXNhYmxlZCJdKSl9fSksV3Q9anQsVXQ9Uyh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiTmF2aWdhdGlvbk1lbnVJbmRpY2F0b3IiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IHM9bix7Zm9yd2FyZFJlZjphfT16KCksbD1YKCksbz1WKCksZj1OKCgpPT5sLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiKSxpPU4oKCk9PiEhbC5tb2RlbFZhbHVlLnZhbHVlKSx7YWN0aXZlVHJpZ2dlcjp1fT1sO2Z1bmN0aW9uIHAoKXt1LnZhbHVlJiYoby52YWx1ZT17c2l6ZTpmLnZhbHVlP3UudmFsdWUub2Zmc2V0V2lkdGg6dS52YWx1ZS5vZmZzZXRIZWlnaHQscG9zaXRpb246Zi52YWx1ZT91LnZhbHVlLm9mZnNldExlZnQ6dS52YWx1ZS5vZmZzZXRUb3B9KX1yZXR1cm4gVGUoKCk9PntsLm1vZGVsVmFsdWUudmFsdWUmJnAoKX0pLGNlKHUscCksY2UobC5pbmRpY2F0b3JUcmFjayxwKSwoeCxJKT0+ZShsKS5pbmRpY2F0b3JUcmFjay52YWx1ZT8oYygpLEwoRmUse2tleTowLHRvOmUobCkuaW5kaWNhdG9yVHJhY2sudmFsdWV9LFtfKGUoZ2UpLHtwcmVzZW50OnguZm9yY2VNb3VudHx8aS52YWx1ZX0se2RlZmF1bHQ6aCgoKT0+W18oZShLKSxNKHtyZWY6ZShhKSwiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiZGF0YS1zdGF0ZSI6aS52YWx1ZT8idmlzaWJsZSI6ImhpZGRlbiIsImRhdGEtb3JpZW50YXRpb24iOmUobCkub3JpZW50YXRpb24sImFzLWNoaWxkIjpzLmFzQ2hpbGQsYXM6eC5hcyxzdHlsZTp7Li4uby52YWx1ZT97Ii0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUiOmAke28udmFsdWUuc2l6ZX1weGAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uIjpgJHtvLnZhbHVlLnBvc2l0aW9ufXB4YH06e319fSx4LiRhdHRycykse2RlZmF1bHQ6aCgoKT0+W0QoeC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJkYXRhLXN0YXRlIiwiZGF0YS1vcmllbnRhdGlvbiIsImFzLWNoaWxkIiwiYXMiLCJzdHlsZSJdKV0pLF86M30sOCxbInByZXNlbnQiXSldLDgsWyJ0byJdKSk6Qigidi1pZiIsITApfX0pLEd0PVV0LFp0PVMoe19fbmFtZToiTmF2aWdhdGlvbk1lbnVMaW5rIixwcm9wczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJhIn19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAobix7ZW1pdDpzfSl7Y29uc3QgYT1uLGw9cyx7Q29sbGVjdGlvbkl0ZW06b309b2Uoe2tleToiTmF2aWdhdGlvbk1lbnUifSk7eigpO2FzeW5jIGZ1bmN0aW9uIGYoaSl7Y29uc3QgdT1uZXcgQ3VzdG9tRXZlbnQoJHQse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxkZXRhaWw6e29yaWdpbmFsRXZlbnQ6aX19KTtpZihsKCJzZWxlY3QiLHUpLCF1LmRlZmF1bHRQcmV2ZW50ZWQmJiFpLm1ldGFLZXkpe2NvbnN0IHA9bmV3IEN1c3RvbUV2ZW50KGxlLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTtpLnRhcmdldD8uZGlzcGF0Y2hFdmVudChwKX19cmV0dXJuKGksdSk9PihjKCksTChlKG8pLG51bGwse2RlZmF1bHQ6aCgoKT0+W18oZShLKSx7YXM6aS5hcywiZGF0YS1hY3RpdmUiOmkuYWN0aXZlPyIiOnZvaWQgMCwiYXJpYS1jdXJyZW50IjppLmFjdGl2ZT8icGFnZSI6dm9pZCAwLCJhcy1jaGlsZCI6YS5hc0NoaWxkLG9uQ2xpY2s6Zn0se2RlZmF1bHQ6aCgoKT0+W0QoaS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiZGF0YS1hY3RpdmUiLCJhcmlhLWN1cnJlbnQiLCJhcy1jaGlsZCJdKV0pLF86M30pKX19KSxrZT1adCxKdD1TKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudUxpc3QiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidWwifX0sc2V0dXAobil7Y29uc3Qgcz1uLGE9WCgpLHtmb3J3YXJkUmVmOmwsY3VycmVudEVsZW1lbnQ6b309eigpO3JldHVybiBxZSgoKT0+e2Eub25JbmRpY2F0b3JUcmFja0NoYW5nZShvLnZhbHVlKX0pLChmLGkpPT4oYygpLEwoZShLKSx7cmVmOmUobCksc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9fSx7ZGVmYXVsdDpoKCgpPT5bXyhlKEspLE0oZi4kYXR0cnMseyJhcy1jaGlsZCI6cy5hc0NoaWxkLGFzOmYuYXMsImRhdGEtb3JpZW50YXRpb24iOmUoYSkub3JpZW50YXRpb259KSx7ZGVmYXVsdDpoKCgpPT5bRChmLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzLWNoaWxkIiwiYXMiLCJkYXRhLW9yaWVudGF0aW9uIl0pXSksXzozfSw1MTIpKX19KSxRdD1KdDtjb25zdCBYdD1bImFyaWEtb3ducyJdO3ZhciBZdD1TKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudVRyaWdnZXIiLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKG4pe2NvbnN0IHM9bixhPVgoKSxsPURlKCkse0NvbGxlY3Rpb25JdGVtOm99PW9lKHtrZXk6Ik5hdmlnYXRpb25NZW51In0pLHtmb3J3YXJkUmVmOmYsY3VycmVudEVsZW1lbnQ6aX09eigpLHU9VigiIikscD1WKCIiKSx4PUtlKCExLDMwMCksST1WKCExKSxiPU4oKCk9PmwudmFsdWU9PT1hLm1vZGVsVmFsdWUudmFsdWUpO3FlKCgpPT57bC50cmlnZ2VyUmVmPWksdS52YWx1ZT1aZShhLmJhc2VJZCxsLnZhbHVlKSxwLnZhbHVlPU1lKGEuYmFzZUlkLGwudmFsdWUpfSk7ZnVuY3Rpb24gRSgpe2EuZGlzYWJsZUhvdmVyVHJpZ2dlci52YWx1ZXx8KEkudmFsdWU9ITEsbC53YXNFc2NhcGVDbG9zZVJlZi52YWx1ZT0hMSl9ZnVuY3Rpb24gQyh5KXtpZighYS5kaXNhYmxlSG92ZXJUcmlnZ2VyLnZhbHVlJiZ5LnBvaW50ZXJUeXBlPT09Im1vdXNlIil7aWYocy5kaXNhYmxlZHx8SS52YWx1ZXx8bC53YXNFc2NhcGVDbG9zZVJlZi52YWx1ZXx8eC52YWx1ZSlyZXR1cm47YS5vblRyaWdnZXJFbnRlcihsLnZhbHVlKSx4LnZhbHVlPSEwfX1mdW5jdGlvbiBkKHkpe2lmKCFhLmRpc2FibGVIb3ZlclRyaWdnZXIudmFsdWUmJnkucG9pbnRlclR5cGU9PT0ibW91c2UiKXtpZihzLmRpc2FibGVkKXJldHVybjthLm9uVHJpZ2dlckxlYXZlKCkseC52YWx1ZT0hMX19ZnVuY3Rpb24gayh5KXsoISgicG9pbnRlclR5cGUiaW4geSl8fHkucG9pbnRlclR5cGU9PT0ibW91c2UiKSYmYS5kaXNhYmxlQ2xpY2tUcmlnZ2VyLnZhbHVlfHx4LnZhbHVlfHwoYi52YWx1ZT9hLm9uSXRlbVNlbGVjdCgiIik6YS5vbkl0ZW1TZWxlY3QobC52YWx1ZSksSS52YWx1ZT1iLnZhbHVlKX1mdW5jdGlvbiByKHkpe2NvbnN0IG09e2hvcml6b250YWw6IkFycm93RG93biIsdmVydGljYWw6YS5kaXIudmFsdWU9PT0icnRsIj8iQXJyb3dMZWZ0IjoiQXJyb3dSaWdodCJ9W2Eub3JpZW50YXRpb25dO2IudmFsdWUmJnkua2V5PT09bSYmKGwub25FbnRyeUtleURvd24oKSx5LnByZXZlbnREZWZhdWx0KCkseS5zdG9wUHJvcGFnYXRpb24oKSl9ZnVuY3Rpb24gJCh5KXt5JiYobC5mb2N1c1Byb3h5UmVmLnZhbHVlPW50KHkpKX1mdW5jdGlvbiB2KHkpe2NvbnN0IE89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobC5jb250ZW50SWQpLG09eS5yZWxhdGVkVGFyZ2V0LHc9bT09PWkudmFsdWUsdD1PPy5jb250YWlucyhtKTsod3x8IXQpJiZsLm9uRm9jdXNQcm94eUVudGVyKHc/InN0YXJ0IjoiZW5kIil9cmV0dXJuKHksTyk9PihjKCksUihXLG51bGwsW18oZShvKSxudWxsLHtkZWZhdWx0OmgoKCk9PltfKGUoSyksTSh7aWQ6dS52YWx1ZSxyZWY6ZShmKSxkaXNhYmxlZDp5LmRpc2FibGVkLCJkYXRhLWRpc2FibGVkIjp5LmRpc2FibGVkPyIiOnZvaWQgMCwiZGF0YS1zdGF0ZSI6ZShoZSkoYi52YWx1ZSksImRhdGEtbmF2aWdhdGlvbi1tZW51LXRyaWdnZXIiOiIiLCJhcmlhLWV4cGFuZGVkIjpiLnZhbHVlLCJhcmlhLWNvbnRyb2xzIjpwLnZhbHVlLCJhcy1jaGlsZCI6cy5hc0NoaWxkLGFzOnkuYXN9LHkuJGF0dHJzLHtvblBvaW50ZXJlbnRlcjpFLG9uUG9pbnRlcm1vdmU6QyxvblBvaW50ZXJsZWF2ZTpkLG9uQ2xpY2s6ayxvbktleWRvd246cn0pLHtkZWZhdWx0OmgoKCk9PltEKHkuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJkaXNhYmxlZCIsImRhdGEtZGlzYWJsZWQiLCJkYXRhLXN0YXRlIiwiYXJpYS1leHBhbmRlZCIsImFyaWEtY29udHJvbHMiLCJhcy1jaGlsZCIsImFzIl0pXSksXzozfSksYi52YWx1ZT8oYygpLFIoVyx7a2V5OjB9LFtfKGUoYXQpLHtyZWY6JCwiYXJpYS1oaWRkZW4iOiJ0cnVlIix0YWJpbmRleDowLG9uRm9jdXM6dn0pLGUoYSkudmlld3BvcnQ/KGMoKSxSKCJzcGFuIix7a2V5OjAsImFyaWEtb3ducyI6cC52YWx1ZX0sbnVsbCw4LFh0KSk6Qigidi1pZiIsITApXSw2NCkpOkIoInYtaWYiLCEwKV0sNjQpKX19KSxlYT1ZdCx0YT1TKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJOYXZpZ2F0aW9uTWVudVZpZXdwb3J0Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiY2VudGVyIn0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3Qgcz1uLHtmb3J3YXJkUmVmOmEsY3VycmVudEVsZW1lbnQ6bH09eigpLG89WCgpLHthY3RpdmVUcmlnZ2VyOmYscm9vdE5hdmlnYXRpb25NZW51OmksbW9kZWxWYWx1ZTp1fT1vLHA9VigpLHg9VigpLEk9TigoKT0+ISFvLm1vZGVsVmFsdWUudmFsdWUpO0xlKGwsKCk9PntvLm9uVmlld3BvcnRDaGFuZ2UobC52YWx1ZSl9KTtjb25zdCBiPVYoKTtMZShbdSxJXSwoKT0+e1BlKCgpPT57bC52YWx1ZSYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Y29uc3QgQz1sLnZhbHVlPy5xdWVyeVNlbGVjdG9yKCJbZGF0YS1zdGF0ZT1vcGVuXSIpO2IudmFsdWU9Q30pfSl9LHtpbW1lZGlhdGU6ITB9KTtmdW5jdGlvbiBFKCl7aWYoYi52YWx1ZSYmZi52YWx1ZSYmaS52YWx1ZSl7Y29uc3QgQz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgsZD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0LGs9aS52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWYudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse29mZnNldFdpZHRoOiQsb2Zmc2V0SGVpZ2h0OnZ9PWIudmFsdWUseT1yLmxlZnQtay5sZWZ0LE89ci50b3Atay50b3A7bGV0IG09bnVsbCx3PW51bGw7c3dpdGNoKHMuYWxpZ24pe2Nhc2Uic3RhcnQiOm09eSx3PU87YnJlYWs7Y2FzZSJlbmQiOm09eS0kK3Iud2lkdGgsdz1PLXYrci5oZWlnaHQ7YnJlYWs7ZGVmYXVsdDptPXktJC8yK3Iud2lkdGgvMix3PU8tdi8yK3IuaGVpZ2h0LzJ9Y29uc3QgdD0xMDttK2subGVmdDx0JiYobT10LWsubGVmdCk7Y29uc3QgZz1tK2subGVmdCskO2c+Qy10JiYobS09Zy1DK3QsbTx0LWsubGVmdCYmKG09dC1rLmxlZnQpKSx3K2sudG9wPHQmJih3PXQtay50b3ApO2NvbnN0IFQ9dytrLnRvcCt2O1Q+ZC10JiYody09VC1kK3Qsdzx0LWsudG9wJiYodz10LWsudG9wKSksbT1NYXRoLnJvdW5kKG0pLHc9TWF0aC5yb3VuZCh3KSx4LnZhbHVlPXtsZWZ0Om0sdG9wOnd9fX1yZXR1cm4gY2UoYiwoKT0+e2IudmFsdWUmJihwLnZhbHVlPXt3aWR0aDpiLnZhbHVlLm9mZnNldFdpZHRoLGhlaWdodDpiLnZhbHVlLm9mZnNldEhlaWdodH0sRSgpKX0pLGNlKFtnbG9iYWxUaGlzLmRvY3VtZW50Py5ib2R5LGldLCgpPT57RSgpfSksKEMsZCk9PihjKCksTChlKGdlKSx7cHJlc2VudDpDLmZvcmNlTW91bnR8fEkudmFsdWUsImZvcmNlLW1vdW50IjohZShvKS51bm1vdW50T25IaWRlLnZhbHVlLG9uQWZ0ZXJMZWF2ZTpkWzJdfHwoZFsyXT0oKT0+e3AudmFsdWU9dm9pZCAwLHgudmFsdWU9dm9pZCAwfSl9LHtkZWZhdWx0OmgoKHtwcmVzZW50Omt9KT0+W18oZShLKSxNKEMuJGF0dHJzLHtyZWY6ZShhKSxhczpDLmFzLCJhcy1jaGlsZCI6Qy5hc0NoaWxkLCJkYXRhLXN0YXRlIjplKGhlKShJLnZhbHVlKSwiZGF0YS1vcmllbnRhdGlvbiI6ZShvKS5vcmllbnRhdGlvbixzdHlsZTp7cG9pbnRlckV2ZW50czohSS52YWx1ZSYmZShvKS5pc1Jvb3RNZW51PyJub25lIjp2b2lkIDAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGgiOnAudmFsdWU/YCR7cC52YWx1ZT8ud2lkdGh9cHhgOnZvaWQgMCwiLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1oZWlnaHQiOnAudmFsdWU/YCR7cC52YWx1ZT8uaGVpZ2h0fXB4YDp2b2lkIDAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtbGVmdCI6eC52YWx1ZT9gJHt4LnZhbHVlPy5sZWZ0fXB4YDp2b2lkIDAsIi0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtdG9wIjp4LnZhbHVlP2Ake3gudmFsdWU/LnRvcH1weGA6dm9pZCAwfSxoaWRkZW46IWssb25Qb2ludGVyZW50ZXI6ZFswXXx8KGRbMF09cj0+ZShvKS5vbkNvbnRlbnRFbnRlcihlKG8pLm1vZGVsVmFsdWUudmFsdWUpKSxvblBvaW50ZXJsZWF2ZTpkWzFdfHwoZFsxXT1yPT5lKFFlKSgoKT0+ZShvKS5vbkNvbnRlbnRMZWF2ZSgpKShyKSl9KSx7ZGVmYXVsdDpoKCgpPT5bRChDLiRzbG90cywiZGVmYXVsdCIpXSksXzoyfSwxMDQwLFsiYXMiLCJhcy1jaGlsZCIsImRhdGEtc3RhdGUiLCJkYXRhLW9yaWVudGF0aW9uIiwic3R5bGUiLCJoaWRkZW4iXSldKSxfOjN9LDgsWyJwcmVzZW50IiwiZm9yY2UtbW91bnQiXSkpfX0pLGFhPXRhO2NvbnN0IG5hPXtzbG90czp7Y29udGVudDoiYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzY2FsZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pbl0gb3JpZ2luLSgtLXJla2EtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIGZvY3VzOm91dGxpbmUtbm9uZSBwb2ludGVyLWV2ZW50cy1hdXRvIixhcnJvdzoiZmlsbC1iZyBzdHJva2UtZGVmYXVsdCJ9fSxsYT17X19uYW1lOiJVUG9wb3ZlciIscHJvcHM6e21vZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJjbGljayJ9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxhcnJvdzp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc21pc3NpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxvcGVuRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sY2xvc2VEZWxheTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDowfX0sZW1pdHM6WyJjbG9zZTpwcmV2ZW50IiwidXBkYXRlOm9wZW4iXSxzZXR1cChuLHtlbWl0OnN9KXtjb25zdCBhPW4sbD1zLG89SGUoKSxmPWplKCksaT1XZSgicG9wb3ZlciIsYSksdT1hLm1vZGU9PT0iaG92ZXIiP0NlKGEsImRlZmF1bHRPcGVuIiwib3BlbiIsIm9wZW5EZWxheSIsImNsb3NlRGVsYXkiKTpDZShhLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJtb2RhbCIpLHA9ZGUodSxsKSx4PWx0KGVlKCgpPT5hLnBvcnRhbCkpLEk9ZWUoKCk9PmZlKGEuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4fSkpLGI9TigoKT0+YS5kaXNtaXNzaWJsZT97cG9pbnRlckRvd25PdXRzaWRlOnJ0fTpbImludGVyYWN0T3V0c2lkZSIsImVzY2FwZUtleURvd24iXS5yZWR1Y2UoKHIsJCk9PihyWyRdPXY9Pnt2LnByZXZlbnREZWZhdWx0KCksbCgiY2xvc2U6cHJldmVudCIpfSxyKSx7fSkpLEU9ZWUoKCk9PmZlKGEuYXJyb3cse3JvdW5kZWQ6ITB9KSksQz1OKCgpPT52ZSh7ZXh0ZW5kOnZlKG5hKSwuLi5mLnVpPy5wb3BvdmVyfHx7fX0pKHtzaWRlOkkudmFsdWUuc2lkZX0pKSxkPU4oKCk9PmEubW9kZT09PSJob3ZlciI/ZnQ6dnQpO3JldHVybihrLHIpPT4oYygpLEwoZShkKS5Sb290LHJlKHNlKGUocCkpKSx7ZGVmYXVsdDpoKCh7b3BlbjokLGNsb3NlOnZ9KT0+W28uZGVmYXVsdHx8bi5yZWZlcmVuY2U/KGMoKSxMKGUoZCkuVHJpZ2dlcix7a2V5OjAsImFzLWNoaWxkIjoiIixyZWZlcmVuY2U6bi5yZWZlcmVuY2UsY2xhc3M6cShhLmNsYXNzKX0se2RlZmF1bHQ6aCgoKT0+W0Qoay4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOiR9KV0pLF86Mn0sMTAzMixbInJlZmVyZW5jZSIsImNsYXNzIl0pKTpCKCIiLCEwKSwiQW5jaG9yImluIGQudmFsdWUmJm8uYW5jaG9yPyhjKCksTChlKGQpLkFuY2hvcix7a2V5OjEsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6aCgoKT0+W0Qoay4kc2xvdHMsImFuY2hvciIscmUoc2Uodj97Y2xvc2U6dn06e30pKSldKSxfOjJ9LDEwMjQpKTpCKCIiLCEwKSxfKGUoZCkuUG9ydGFsLHJlKHNlKGUoeCkpKSx7ZGVmYXVsdDpoKCgpPT5bXyhlKGl0KSxudWxsLHtkZWZhdWx0OmgoKCk9PltfKGUoZCkuQ29udGVudCxNKEkudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpDLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshby5kZWZhdWx0JiZhLmNsYXNzLGUoaSk/LmNvbnRlbnRdfSl9LG90KGIudmFsdWUpKSx7ZGVmYXVsdDpoKCgpPT5bRChrLiRzbG90cywiY29udGVudCIscmUoc2Uodj97Y2xvc2U6dn06e30pKSksbi5hcnJvdz8oYygpLEwoZShkKS5BcnJvdyxNKHtrZXk6MH0sRS52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpDLnZhbHVlLmFycm93KHtjbGFzczplKGkpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTpCKCIiLCEwKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDI0KV0pLF86Mn0sMTA0MCldKSxfOjN9LDE2KSl9fSxpYT17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGZsZXggZ2FwLTEuNSBbJj5kaXZdOm1pbi13LTAiLGxpc3Q6Imlzb2xhdGUgbWluLXctMCIsbGFiZWw6InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IGZvbnQtc2VtaWJvbGQgdGV4dC14cy81IHRleHQtaGlnaGxpZ2h0ZWQgcHgtMi41IHB5LTEuNSIsaXRlbToibWluLXctMCIsbGluazoiZ3JvdXAgcmVsYXRpdmUgdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1tZWRpdW0gdGV4dC1zbSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6cm91bmRlZC1tZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZGFyazpmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctMiIsbGlua0xlYWRpbmdJY29uOiJzaHJpbmstMCBzaXplLTUiLGxpbmtMZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGlua0xlYWRpbmdBdmF0YXJTaXplOiIyeHMiLGxpbmtMZWFkaW5nQ2hpcFNpemU6InNtIixsaW5rVHJhaWxpbmc6Imdyb3VwIG1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGxpbmtUcmFpbGluZ0JhZGdlOiJzaHJpbmstMCIsbGlua1RyYWlsaW5nQmFkZ2VTaXplOiJzbSIsbGlua1RyYWlsaW5nSWNvbjoic2l6ZS01IHRyYW5zZm9ybSBzaHJpbmstMCBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTpyb3RhdGUtMTgwIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCIsbGlua0xhYmVsOiJ0cnVuY2F0ZSIsbGlua0xhYmVsRXh0ZXJuYWxJY29uOiJpbmxpbmUtYmxvY2sgc2l6ZS0zIGFsaWduLXRvcCB0ZXh0LWRpbW1lZCIsY2hpbGRMaXN0OiJpc29sYXRlIixjaGlsZExhYmVsOiJ0ZXh0LXhzIHRleHQtaGlnaGxpZ2h0ZWQiLGNoaWxkSXRlbToiIixjaGlsZExpbms6Imdyb3VwIHJlbGF0aXZlIHNpemUtZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHRleHQtc3RhcnQgdGV4dC1zbSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6cm91bmRlZC1tZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZGFyazpmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctMiIsY2hpbGRMaW5rV3JhcHBlcjoibWluLXctMCIsY2hpbGRMaW5rSWNvbjoic2l6ZS01IHNocmluay0wIixjaGlsZExpbmtMYWJlbDoidHJ1bmNhdGUiLGNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uOiJpbmxpbmUtYmxvY2sgc2l6ZS0zIGFsaWduLXRvcCB0ZXh0LWRpbW1lZCIsY2hpbGRMaW5rRGVzY3JpcHRpb246InRleHQtbXV0ZWQiLHNlcGFyYXRvcjoicHgtMiBoLXB4IGJnLWJvcmRlciIsdmlld3BvcnRXcmFwcGVyOiJhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgZmxleCB3LWZ1bGwiLHZpZXdwb3J0OiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gYmctZGVmYXVsdCBzaGFkb3ctbGcgcm91bmRlZC1tZCByaW5nIHJpbmctZGVmYXVsdCBoLSgtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWhlaWdodCkgdy1mdWxsIHRyYW5zaXRpb24tW3dpZHRoLGhlaWdodCxsZWZ0LHJpZ2h0XSBkdXJhdGlvbi0yMDAgb3JpZ2luLVt0b3BfY2VudGVyXSBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzY2FsZS1pbl8xMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pbl0gei0xIixjb250ZW50OiIiLGluZGljYXRvcjoiYWJzb2x1dGUgbGVmdC0wIGRhdGEtW3N0YXRlPXZpc2libGVdOmFuaW1hdGUtW2ZhZGUtaW5fMTAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWhpZGRlbl06YW5pbWF0ZS1bZmFkZS1vdXRfMTAwbXNfZWFzZS1pbl0gZGF0YS1bc3RhdGU9aGlkZGVuXTpvcGFjaXR5LTAgYm90dG9tLTAgei0yIHctKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUpIHRyYW5zbGF0ZS14LSgtLXJla2EtbmF2aWdhdGlvbi1tZW51LWluZGljYXRvci1wb3NpdGlvbikgZmxleCBoLTIuNSBpdGVtcy1lbmQganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tW3RyYW5zbGF0ZSx3aWR0aF0gZHVyYXRpb24tMjAwIixhcnJvdzoicmVsYXRpdmUgdG9wLVs1MCVdIHNpemUtMi41IHJvdGF0ZS00NSBib3JkZXIgYm9yZGVyLWRlZmF1bHQgYmctZGVmYXVsdCB6LTEgcm91bmRlZC14cyJ9LHZhcmlhbnRzOntjb2xvcjp7cHJpbWFyeTp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1wcmltYXJ5IixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctcHJpbWFyeSJ9LHNlY29uZGFyeTp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1zZWNvbmRhcnkiLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1zZWNvbmRhcnkifSxzdWNjZXNzOntsaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXN1Y2Nlc3MiLGNoaWxkTGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1zdWNjZXNzIn0saW5mbzp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1pbmZvIixjaGlsZExpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctaW5mbyJ9LHdhcm5pbmc6e2xpbms6ImZvY3VzLXZpc2libGU6YmVmb3JlOnJpbmctd2FybmluZyIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLXdhcm5pbmcifSxlcnJvcjp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1lcnJvciIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWVycm9yIn0sbmV1dHJhbDp7bGluazoiZm9jdXMtdmlzaWJsZTpiZWZvcmU6cmluZy1pbnZlcnRlZCIsY2hpbGRMaW5rOiJmb2N1cy12aXNpYmxlOmJlZm9yZTpyaW5nLWludmVydGVkIn19LGhpZ2hsaWdodENvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50OntwaWxsOiIiLGxpbms6IiJ9LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIixsaXN0OiJmbGV4IGl0ZW1zLWNlbnRlciIsaXRlbToicHktMiIsbGluazoicHgtMi41IHB5LTEuNSBiZWZvcmU6aW5zZXQteC1weCBiZWZvcmU6aW5zZXQteS0wIixjaGlsZExpc3Q6ImdyaWQgcC0yIixjaGlsZExpbms6InB4LTMgcHktMiBnYXAtMiBiZWZvcmU6aW5zZXQteC1weCBiZWZvcmU6aW5zZXQteS0wIixjaGlsZExpbmtMYWJlbDoiZm9udC1tZWRpdW0iLGNvbnRlbnQ6ImFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgbWF4LWgtWzcwdmhdIG92ZXJmbG93LXktYXV0byJ9LHZlcnRpY2FsOntyb290OiJmbGV4LWNvbCIsbGluazoiZmxleC1yb3cgcHgtMi41IHB5LTEuNSBiZWZvcmU6aW5zZXQteS1weCBiZWZvcmU6aW5zZXQteC0wIixjaGlsZExhYmVsOiJweC0xLjUgcHktMC41IixjaGlsZExpbms6InAtMS41IGdhcC0xLjUgYmVmb3JlOmluc2V0LXktcHggYmVmb3JlOmluc2V0LXgtMCJ9fSxjb250ZW50T3JpZW50YXRpb246e2hvcml6b250YWw6e3ZpZXdwb3J0V3JhcHBlcjoianVzdGlmeS1jZW50ZXIiLGNvbnRlbnQ6ImRhdGEtW21vdGlvbj1mcm9tLXN0YXJ0XTphbmltYXRlLVtlbnRlci1mcm9tLWxlZnRfMjAwbXNfZWFzZV0gZGF0YS1bbW90aW9uPWZyb20tZW5kXTphbmltYXRlLVtlbnRlci1mcm9tLXJpZ2h0XzIwMG1zX2Vhc2VdIGRhdGEtW21vdGlvbj10by1zdGFydF06YW5pbWF0ZS1bZXhpdC10by1sZWZ0XzIwMG1zX2Vhc2VdIGRhdGEtW21vdGlvbj10by1lbmRdOmFuaW1hdGUtW2V4aXQtdG8tcmlnaHRfMjAwbXNfZWFzZV0ifSx2ZXJ0aWNhbDp7dmlld3BvcnQ6InNtOnctKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGgpIGxlZnQtKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtbGVmdCkgcnRsOmxlZnQtYXV0byBydGw6cmlnaHQtW2NhbGMoMTAwJS12YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0KS12YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCkpXSJ9fSxhY3RpdmU6e3RydWU6e2NoaWxkTGluazoiYmVmb3JlOmJnLWVsZXZhdGVkIHRleHQtaGlnaGxpZ2h0ZWQiLGNoaWxkTGlua0ljb246InRleHQtZGVmYXVsdCJ9LGZhbHNlOntsaW5rOiJ0ZXh0LW11dGVkIixsaW5rTGVhZGluZ0ljb246InRleHQtZGltbWVkIixjaGlsZExpbms6WyJob3ZlcjpiZWZvcmU6YmctZWxldmF0ZWQvNTAgdGV4dC1kZWZhdWx0IGhvdmVyOnRleHQtaGlnaGxpZ2h0ZWQiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxjaGlsZExpbmtJY29uOlsidGV4dC1kaW1tZWQgZ3JvdXAtaG92ZXI6dGV4dC1kZWZhdWx0IiwidHJhbnNpdGlvbi1jb2xvcnMiXX19LGRpc2FibGVkOnt0cnVlOntsaW5rOiJjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS03NSJ9fSxoaWdobGlnaHQ6e3RydWU6IiJ9LGxldmVsOnt0cnVlOiIifSxjb2xsYXBzZWQ6e3RydWU6IiJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7b3JpZW50YXRpb246Imhvcml6b250YWwiLGNvbnRlbnRPcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2NoaWxkTGlzdDoiZ3JpZC1jb2xzLTIgZ2FwLTIifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixjb250ZW50T3JpZW50YXRpb246InZlcnRpY2FsIixjbGFzczp7Y2hpbGRMaXN0OiJnYXAtMSIsY29udGVudDoidy02MCJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixjb2xsYXBzZWQ6ITEsY2xhc3M6e2NoaWxkTGlzdDoibXMtNSBib3JkZXItcyBib3JkZXItZGVmYXVsdCIsY2hpbGRJdGVtOiJwcy0xLjUgLW1zLXB4Iixjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtjb2xsYXBzaWJsZS1kb3duXzIwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW2NvbGxhcHNpYmxlLXVwXzIwMG1zX2Vhc2Utb3V0XSBvdmVyZmxvdy1oaWRkZW4ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsY29sbGFwc2VkOiEwLGNsYXNzOntsaW5rOiJweC0xLjUiLGxpbmtMYWJlbDoiaGlkZGVuIixsaW5rVHJhaWxpbmc6ImhpZGRlbiIsY29udGVudDoic2hhZG93LXNtIHJvdW5kZWQtc20gbWluLWgtNiBwLTEifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixoaWdobGlnaHQ6ITAsY2xhc3M6e2xpbms6WyJhZnRlcjphYnNvbHV0ZSBhZnRlcjotYm90dG9tLTIgYWZ0ZXI6aW5zZXQteC0yLjUgYWZ0ZXI6YmxvY2sgYWZ0ZXI6aC1weCBhZnRlcjpyb3VuZGVkLWZ1bGwiLCJhZnRlcjp0cmFuc2l0aW9uLWNvbG9ycyJdfX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGNsYXNzOntsaW5rOlsiYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6LXN0YXJ0LTEuNSBhZnRlcjppbnNldC15LTAuNSBhZnRlcjpibG9jayBhZnRlcjp3LXB4IGFmdGVyOnJvdW5kZWQtZnVsbCIsImFmdGVyOnRyYW5zaXRpb24tY29sb3JzIl19fSx7ZGlzYWJsZWQ6ITEsYWN0aXZlOiExLHZhcmlhbnQ6InBpbGwiLGNsYXNzOntsaW5rOlsiaG92ZXI6dGV4dC1oaWdobGlnaHRlZCBob3ZlcjpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxsaW5rTGVhZGluZ0ljb246WyJncm91cC1ob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0se2Rpc2FibGVkOiExLGFjdGl2ZTohMSx2YXJpYW50OiJwaWxsIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1kZWZhdWx0In19LHtkaXNhYmxlZDohMSx2YXJpYW50OiJwaWxsIixoaWdobGlnaHQ6ITAsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOntsaW5rOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctZWxldmF0ZWQvNTAifX0se2Rpc2FibGVkOiExLHZhcmlhbnQ6InBpbGwiLGhpZ2hsaWdodDohMSxhY3RpdmU6ITEsb3JpZW50YXRpb246Imhvcml6b250YWwiLGNsYXNzOntsaW5rOiJkYXRhLVtzdGF0ZT1vcGVuXTpiZWZvcmU6YmctZWxldmF0ZWQvNTAifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtcHJpbWFyeSIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXByaW1hcnkgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1wcmltYXJ5In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtc2Vjb25kYXJ5IixsaW5rTGVhZGluZ0ljb246InRleHQtc2Vjb25kYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc2Vjb25kYXJ5In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoicGlsbCIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXN1Y2Nlc3MiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1zdWNjZXNzIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtc3VjY2VzcyJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1pbmZvIixsaW5rTGVhZGluZ0ljb246InRleHQtaW5mbyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtd2FybmluZyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXdhcm5pbmcgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC13YXJuaW5nIn19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1lcnJvciIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWVycm9yIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtZXJyb3IifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1oaWdobGlnaHRlZCBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWhpZ2hsaWdodGVkIn19LHt2YXJpYW50OiJwaWxsIixhY3RpdmU6ITAsaGlnaGxpZ2h0OiExLGNsYXNzOntsaW5rOiJiZWZvcmU6YmctZWxldmF0ZWQifX0se3ZhcmlhbnQ6InBpbGwiLGFjdGl2ZTohMCxoaWdobGlnaHQ6ITAsZGlzYWJsZWQ6ITEsY2xhc3M6e2xpbms6WyJob3ZlcjpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXX19LHtkaXNhYmxlZDohMSxhY3RpdmU6ITEsdmFyaWFudDoibGluayIsY2xhc3M6e2xpbms6WyJob3Zlcjp0ZXh0LWhpZ2hsaWdodGVkIiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsaW5rTGVhZGluZ0ljb246WyJncm91cC1ob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfX0se2Rpc2FibGVkOiExLGFjdGl2ZTohMSx2YXJpYW50OiJsaW5rIixvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e2xpbms6ImRhdGEtW3N0YXRlPW9wZW5dOnRleHQtaGlnaGxpZ2h0ZWQiLGxpbmtMZWFkaW5nSWNvbjoiZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1kZWZhdWx0In19LHtjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXByaW1hcnkiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1wcmltYXJ5IGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtcHJpbWFyeSJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXNlY29uZGFyeSIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LXNlY29uZGFyeSBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXNlY29uZGFyeSJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6ImxpbmsiLGFjdGl2ZTohMCxjbGFzczp7bGluazoidGV4dC1zdWNjZXNzIixsaW5rTGVhZGluZ0ljb246InRleHQtc3VjY2VzcyBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtaW5mbyIsbGlua0xlYWRpbmdJY29uOiJ0ZXh0LWluZm8gZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1pbmZvIn19LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LXdhcm5pbmciLGxpbmtMZWFkaW5nSWNvbjoidGV4dC13YXJuaW5nIGdyb3VwLWRhdGEtW3N0YXRlPW9wZW5dOnRleHQtd2FybmluZyJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJsaW5rIixhY3RpdmU6ITAsY2xhc3M6e2xpbms6InRleHQtZXJyb3IiLGxpbmtMZWFkaW5nSWNvbjoidGV4dC1lcnJvciBncm91cC1kYXRhLVtzdGF0ZT1vcGVuXTp0ZXh0LWVycm9yIn19LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJ0ZXh0LWhpZ2hsaWdodGVkIixsaW5rTGVhZGluZ0ljb246InRleHQtaGlnaGxpZ2h0ZWQgZ3JvdXAtZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1oaWdobGlnaHRlZCJ9fSx7aGlnaGxpZ2h0Q29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLXByaW1hcnkifX0se2hpZ2hsaWdodENvbG9yOiJzZWNvbmRhcnkiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLXNlY29uZGFyeSJ9fSx7aGlnaGxpZ2h0Q29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLXN1Y2Nlc3MifX0se2hpZ2hsaWdodENvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJhZnRlcjpiZy1pbmZvIn19LHtoaWdobGlnaHRDb2xvcjoid2FybmluZyIsaGlnaGxpZ2h0OiEwLGxldmVsOiEwLGFjdGl2ZTohMCxjbGFzczp7bGluazoiYWZ0ZXI6Ymctd2FybmluZyJ9fSx7aGlnaGxpZ2h0Q29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsbGV2ZWw6ITAsYWN0aXZlOiEwLGNsYXNzOntsaW5rOiJhZnRlcjpiZy1lcnJvciJ9fSx7aGlnaGxpZ2h0Q29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxsZXZlbDohMCxhY3RpdmU6ITAsY2xhc3M6e2xpbms6ImFmdGVyOmJnLWludmVydGVkIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHRDb2xvcjoicHJpbWFyeSIsdmFyaWFudDoicGlsbCJ9fSxjYT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVOYXZpZ2F0aW9uTWVudSIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJtdWx0aXBsZSJ9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbEljb246e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0saXRlbXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imhvcml6b250YWwifSxjb2xsYXBzZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdG9vbHRpcDp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxwb3BvdmVyOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHRDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29udGVudE9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmFsdWUifSxsYWJlbEtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxhYmVsIn0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxkZWxheUR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGRpc2FibGVDbGlja1RyaWdnZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZUhvdmVyVHJpZ2dlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGRpc2FibGVQb2ludGVyTGVhdmVDbG9zZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGFwc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKG4se2VtaXQ6c30pe2NvbnN0IGE9bixsPXMsbz1IZSgpLGY9amUoKSxpPVdlKCJuYXZpZ2F0aW9uTWVudSIsYSksdT1kZShOKCgpPT4oe2FzOmEuYXMsZGVsYXlEdXJhdGlvbjphLmRlbGF5RHVyYXRpb24sc2tpcERlbGF5RHVyYXRpb246YS5za2lwRGVsYXlEdXJhdGlvbixvcmllbnRhdGlvbjphLm9yaWVudGF0aW9uLGRpc2FibGVDbGlja1RyaWdnZXI6YS5kaXNhYmxlQ2xpY2tUcmlnZ2VyLGRpc2FibGVIb3ZlclRyaWdnZXI6YS5kaXNhYmxlSG92ZXJUcmlnZ2VyLGRpc2FibGVQb2ludGVyTGVhdmVDbG9zZTphLmRpc2FibGVQb2ludGVyTGVhdmVDbG9zZSx1bm1vdW50T25IaWRlOmEudW5tb3VudE9uSGlkZX0pKSxsKSxwPWRlKENlKGEsImNvbGxhcHNpYmxlIiwiZGlzYWJsZWQiLCJ0eXBlIiwidW5tb3VudE9uSGlkZSIpLGwpLHg9ZWUoKCk9PmEuY29udGVudCksST1lZSgoKT0+ZmUodHlwZW9mIGEudG9vbHRpcD09ImJvb2xlYW4iP3t9OmEudG9vbHRpcCx7Li4uYS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJntkZWxheUR1cmF0aW9uOjAsY29udGVudDp7c2lkZToicmlnaHQifX19KSksYj1lZSgoKT0+ZmUodHlwZW9mIGEucG9wb3Zlcj09ImJvb2xlYW4iP3t9OmEucG9wb3Zlcix7bW9kZToiaG92ZXIiLGNvbnRlbnQ6e3NpZGU6InJpZ2h0IixhbGlnbjoic3RhcnQiLGFsaWduT2Zmc2V0OjJ9fSkpLFtFLENdPSRlKCksW2Qsa109JGUoe3Byb3BzOntpdGVtOk9iamVjdCxpbmRleDpOdW1iZXIsbGV2ZWw6TnVtYmVyLGxpc3RJbmRleDpOdW1iZXJ9fSkscj1OKCgpPT52ZSh7ZXh0ZW5kOnZlKGlhKSwuLi5mLnVpPy5uYXZpZ2F0aW9uTWVudXx8e319KSh7b3JpZW50YXRpb246YS5vcmllbnRhdGlvbixjb250ZW50T3JpZW50YXRpb246YS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCI/dm9pZCAwOmEuY29udGVudE9yaWVudGF0aW9uLGNvbGxhcHNlZDphLmNvbGxhcHNlZCxjb2xvcjphLmNvbG9yLHZhcmlhbnQ6YS52YXJpYW50LGhpZ2hsaWdodDphLmhpZ2hsaWdodCxoaWdobGlnaHRDb2xvcjphLmhpZ2hsaWdodENvbG9yfHxhLmNvbG9yfSkpLCQ9TigoKT0+YS5pdGVtcz8ubGVuZ3RoP2R0KGEuaXRlbXMpP2EuaXRlbXM6W2EuaXRlbXNdOltdKTtmdW5jdGlvbiB2KG0sdyx0LGcpe2NvbnN0IFQ9JC52YWx1ZS5sZW5ndGg+MT9gZ3JvdXAtJHtnfS1gOiIiO3JldHVybiBKKG0sYS52YWx1ZUtleSk/Pyh0PjA/YCR7VH1pdGVtLSR7dH0tJHt3fWA6YCR7VH1pdGVtLSR7d31gKX1mdW5jdGlvbiB5KG0sdz0wLHQ9MCl7Y29uc3QgZz1tLnJlZHVjZSgoVCxBLFApPT4oKEEuZGVmYXVsdE9wZW58fEEub3BlbikmJlQucHVzaCh2KEEsUCx3LHQpKSxUKSxbXSk7cmV0dXJuIGEudHlwZT09PSJzaW5nbGUiP2dbMF06Z31mdW5jdGlvbiBPKG0sdyl7dy5jaGlsZHJlbj8ubGVuZ3RoJiYoYS5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj9tLnByZXZlbnREZWZhdWx0KCk6YS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJiFhLmNvbGxhcHNlZCYmKG0ucHJldmVudERlZmF1bHQoKSxtLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuKG0sdyk9PihjKCksUihXLG51bGwsW18oZShFKSxudWxsLHtkZWZhdWx0OmgoKHtpdGVtOnQsYWN0aXZlOmcsaW5kZXg6VH0pPT5bRChtLiRzbG90cyx0LnNsb3R8fCJpdGVtIix7aXRlbTp0LGluZGV4OlQsYWN0aXZlOmcsdWk6ci52YWx1ZX0sKCk9PltEKG0uJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWxlYWRpbmdgOiJpdGVtLWxlYWRpbmciLHtpdGVtOnQsYWN0aXZlOmcsaW5kZXg6VCx1aTpyLnZhbHVlfSwoKT0+W3QuYXZhdGFyPyhjKCksTChzdCxNKHtrZXk6MCxzaXplOnQudWk/LmxpbmtMZWFkaW5nQXZhdGFyU2l6ZXx8ZShpKT8ubGlua0xlYWRpbmdBdmF0YXJTaXplfHxyLnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyU2l6ZSgpfSx0LmF2YXRhcix7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQXZhdGFyIixjbGFzczpyLnZhbHVlLmxpbmtMZWFkaW5nQXZhdGFyKHtjbGFzczpbZShpKT8ubGlua0xlYWRpbmdBdmF0YXIsdC51aT8ubGlua0xlYWRpbmdBdmF0YXJdLGFjdGl2ZTpnLGRpc2FibGVkOiEhdC5kaXNhYmxlZH0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6dC5pY29uJiZ0LmNoaXA/KGMoKSxMKHV0LE0oe2tleToxLHNpemU6dC51aT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8ZShpKT8ubGlua0xlYWRpbmdDaGlwU2l6ZXx8ci52YWx1ZS5saW5rTGVhZGluZ0NoaXBTaXplKCksaW5zZXQ6IiJ9LHR5cGVvZiB0LmNoaXA9PSJvYmplY3QiP3QuY2hpcDp7fSx7ImRhdGEtc2xvdCI6ImxpbmtMZWFkaW5nQ2hpcCJ9KSx7ZGVmYXVsdDpoKCgpPT5bXyhqLHtuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoibGlua0xlYWRpbmdJY29uIixjbGFzczpxKHIudmFsdWUubGlua0xlYWRpbmdJY29uKHtjbGFzczpbZShpKT8ubGlua0xlYWRpbmdJY29uLHQudWk/LmxpbmtMZWFkaW5nSWNvbl0sYWN0aXZlOmcsZGlzYWJsZWQ6ISF0LmRpc2FibGVkfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSldKSxfOjJ9LDEwNDAsWyJzaXplIl0pKTp0Lmljb24/KGMoKSxMKGose2tleToyLG5hbWU6dC5pY29uLCJkYXRhLXNsb3QiOiJsaW5rTGVhZGluZ0ljb24iLGNsYXNzOnEoci52YWx1ZS5saW5rTGVhZGluZ0ljb24oe2NsYXNzOltlKGkpPy5saW5rTGVhZGluZ0ljb24sdC51aT8ubGlua0xlYWRpbmdJY29uXSxhY3RpdmU6ZyxkaXNhYmxlZDohIXQuZGlzYWJsZWR9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCldKSxlKEopKHQsYS5sYWJlbEtleSl8fG9bdC5zbG90P2Ake3Quc2xvdH0tbGFiZWxgOiJpdGVtLWxhYmVsIl0/KGMoKSxSKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxpbmtMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmxpbmtMYWJlbCh7Y2xhc3M6W2UoaSk/LmxpbmtMYWJlbCx0LnVpPy5saW5rTGFiZWxdfSkpfSxbRChtLiRzbG90cyx0LnNsb3Q/YCR7dC5zbG90fS1sYWJlbGA6Iml0ZW0tbGFiZWwiLHtpdGVtOnQsYWN0aXZlOmcsaW5kZXg6VH0sKCk9PltiZSh0ZShlKEopKHQsYS5sYWJlbEtleSkpLDEpXSksdC50YXJnZXQ9PT0iX2JsYW5rIiYmbi5leHRlcm5hbEljb24hPT0hMT8oYygpLEwoaix7a2V5OjAsbmFtZTp0eXBlb2Ygbi5leHRlcm5hbEljb249PSJzdHJpbmciP24uZXh0ZXJuYWxJY29uOmUoZikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImxpbmtMYWJlbEV4dGVybmFsSWNvbiIsY2xhc3M6cShyLnZhbHVlLmxpbmtMYWJlbEV4dGVybmFsSWNvbih7Y2xhc3M6W2UoaSk/LmxpbmtMYWJlbEV4dGVybmFsSWNvbix0LnVpPy5saW5rTGFiZWxFeHRlcm5hbEljb25dLGFjdGl2ZTpnfSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOkIoIiIsITApXSwyKSk6QigiIiwhMCksdC5iYWRnZXx8dC5iYWRnZT09PTB8fG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJih0LmNoaWxkcmVuPy5sZW5ndGh8fG9bdC5zbG90P2Ake3Quc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKXx8bi5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJnQuY2hpbGRyZW4/Lmxlbmd0aHx8dC50cmFpbGluZ0ljb258fG9bdC5zbG90P2Ake3Quc2xvdH0tdHJhaWxpbmdgOiJpdGVtLXRyYWlsaW5nIl0/KGMoKSxMKHVlKG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGgmJiFuLmNvbGxhcHNlZD9lKFJlKToic3BhbiIpLHtrZXk6MSxhczpuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmdC5jaGlsZHJlbj8ubGVuZ3RoJiYhbi5jb2xsYXBzZWQ/InNwYW4iOnZvaWQgMCwiZGF0YS1zbG90IjoibGlua1RyYWlsaW5nIixjbGFzczpxKHIudmFsdWUubGlua1RyYWlsaW5nKHtjbGFzczpbZShpKT8ubGlua1RyYWlsaW5nLHQudWk/LmxpbmtUcmFpbGluZ119KSksb25DbGljazpBPT5PKEEsdCl9LHtkZWZhdWx0OmgoKCk9PltEKG0uJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LXRyYWlsaW5nYDoiaXRlbS10cmFpbGluZyIse2l0ZW06dCxhY3RpdmU6ZyxpbmRleDpULHVpOnIudmFsdWV9LCgpPT5bdC5iYWRnZXx8dC5iYWRnZT09PTA/KGMoKSxMKHB0LE0oe2tleTowLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixzaXplOnQudWk/LmxpbmtUcmFpbGluZ0JhZGdlU2l6ZXx8ZShpKT8ubGlua1RyYWlsaW5nQmFkZ2VTaXplfHxyLnZhbHVlLmxpbmtUcmFpbGluZ0JhZGdlU2l6ZSgpfSx0eXBlb2YgdC5iYWRnZT09InN0cmluZyJ8fHR5cGVvZiB0LmJhZGdlPT0ibnVtYmVyIj97bGFiZWw6dC5iYWRnZX06dC5iYWRnZSx7ImRhdGEtc2xvdCI6ImxpbmtUcmFpbGluZ0JhZGdlIixjbGFzczpyLnZhbHVlLmxpbmtUcmFpbGluZ0JhZGdlKHtjbGFzczpbZShpKT8ubGlua1RyYWlsaW5nQmFkZ2UsdC51aT8ubGlua1RyYWlsaW5nQmFkZ2VdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpCKCIiLCEwKSxuLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiJiYodC5jaGlsZHJlbj8ubGVuZ3RofHxvW3Quc2xvdD9gJHt0LnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiXSl8fG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGg/KGMoKSxMKGose2tleToxLG5hbWU6dC50cmFpbGluZ0ljb258fG4udHJhaWxpbmdJY29ufHxlKGYpLnVpLmljb25zLmNoZXZyb25Eb3duLCJkYXRhLXNsb3QiOiJsaW5rVHJhaWxpbmdJY29uIixjbGFzczpxKHIudmFsdWUubGlua1RyYWlsaW5nSWNvbih7Y2xhc3M6W2UoaSk/LmxpbmtUcmFpbGluZ0ljb24sdC51aT8ubGlua1RyYWlsaW5nSWNvbl0sYWN0aXZlOmd9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6dC50cmFpbGluZ0ljb24/KGMoKSxMKGose2tleToyLG5hbWU6dC50cmFpbGluZ0ljb24sImRhdGEtc2xvdCI6ImxpbmtUcmFpbGluZ0ljb24iLGNsYXNzOnEoci52YWx1ZS5saW5rVHJhaWxpbmdJY29uKHtjbGFzczpbZShpKT8ubGlua1RyYWlsaW5nSWNvbix0LnVpPy5saW5rVHJhaWxpbmdJY29uXSxhY3RpdmU6Z30pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpCKCIiLCEwKV0pXSksXzoyfSwxMDMyLFsiYXMiLCJjbGFzcyIsIm9uQ2xpY2siXSkpOkIoIiIsITApXSldKSxfOjN9KSxfKGUoZCksbnVsbCx7ZGVmYXVsdDpoKCh7aXRlbTp0LGluZGV4OmcsbGV2ZWw6VD0wLGxpc3RJbmRleDpBPTB9KT0+WyhjKCksTCh1ZShuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmIW4uY29sbGFwc2VkP2UoTXQpOmUoS3QpKSxNKHthczoibGkifSxuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmIW4uY29sbGFwc2VkP3tkaXNhYmxlZDohIXQuZGlzYWJsZWR9Ont9LHt2YWx1ZTp2KHQsZyxULEEpfSkse2RlZmF1bHQ6aCgoKT0+W24ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LnR5cGU9PT0ibGFiZWwiJiYhbi5jb2xsYXBzZWQ/KGMoKSxSKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOnEoci52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UoaSk/LmxhYmVsLHQudWk/LmxhYmVsLHQuY2xhc3NdfSkpfSxbXyhlKEMpLHtpdGVtOnQsaW5kZXg6Z30sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSwyKSk6dC50eXBlIT09ImxhYmVsIj8oYygpLEwoeWUsTSh7a2V5OjF9LG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGgmJiFuLmNvbGxhcHNlZCYmdC50eXBlPT09InRyaWdnZXIiP3t9OmUobWUpKHQpLHtjdXN0b206IiJ9KSx7ZGVmYXVsdDpoKCh7YWN0aXZlOlAsLi4uR30pPT5bKGMoKSxMKHVlKG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJih0LmNoaWxkcmVuPy5sZW5ndGh8fG9bdC5zbG90P2Ake3Quc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT9lKGVhKTpuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmdC5jaGlsZHJlbj8ubGVuZ3RoJiYhbi5jb2xsYXBzZWQmJiFHLmhyZWY/ZShSZSk6ZShrZSkpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTpQfHx0LmFjdGl2ZSxkaXNhYmxlZDp0LmRpc2FibGVkLG9uU2VsZWN0OnQub25TZWxlY3R9LHtkZWZhdWx0OmgoKCk9PltuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmbi5jb2xsYXBzZWQmJnQuY2hpbGRyZW4/Lmxlbmd0aCYmKGEucG9wb3Zlcnx8dC5wb3BvdmVyKT8oYygpLEwobGEsTSh7a2V5OjB9LHsuLi5iLnZhbHVlLC4uLnR5cGVvZiB0LnBvcG92ZXI9PSJib29sZWFuIj97fTp0LnBvcG92ZXJ8fHt9fSx7dWk6e2NvbnRlbnQ6ci52YWx1ZS5jb250ZW50KHtjbGFzczpbZShpKT8uY29udGVudCx0LnVpPy5jb250ZW50XX0pfX0pLHtjb250ZW50OmgoKHtjbG9zZTpGfSk9PltEKG0uJHNsb3RzLHQuc2xvdD9gJHt0LnNsb3R9LWNvbnRlbnRgOiJpdGVtLWNvbnRlbnQiLHtpdGVtOnQsYWN0aXZlOlB8fHQuYWN0aXZlLGluZGV4OmcsdWk6ci52YWx1ZSxjbG9zZTpGfSwoKT0+W1EoInVsIix7ImRhdGEtc2xvdCI6ImNoaWxkTGlzdCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlzdCh7Y2xhc3M6W2UoaSk/LmNoaWxkTGlzdCx0LnVpPy5jaGlsZExpc3RdfSkpfSxbUSgibGkiLHsiZGF0YS1zbG90IjoiY2hpbGRMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGFiZWwoe2NsYXNzOltlKGkpPy5jaGlsZExhYmVsLHQudWk/LmNoaWxkTGFiZWxdfSkpfSx0ZShlKEopKHQsYS5sYWJlbEtleSkpLDMpLChjKCEwKSxSKFcsbnVsbCxuZSh0LmNoaWxkcmVuLChILFUpPT4oYygpLFIoImxpIix7a2V5OlUsImRhdGEtc2xvdCI6ImNoaWxkSXRlbSIsY2xhc3M6cShyLnZhbHVlLmNoaWxkSXRlbSh7Y2xhc3M6W2UoaSk/LmNoaWxkSXRlbSx0LnVpPy5jaGlsZEl0ZW1dfSkpfSxbXyh5ZSxNKHtyZWZfZm9yOiEwfSxlKG1lKShIKSx7Y3VzdG9tOiIifSkse2RlZmF1bHQ6aCgoe2FjdGl2ZTpaLC4uLlhlfSk9PltfKGUoa2UpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTpaLG9uU2VsZWN0Okgub25TZWxlY3R9LHtkZWZhdWx0OmgoKCk9PltfKGFlLE0oe3JlZl9mb3I6ITB9LFhlLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rIixjbGFzczpyLnZhbHVlLmNoaWxkTGluayh7Y2xhc3M6W2UoaSk/LmNoaWxkTGluayx0LnVpPy5jaGlsZExpbmssSC5jbGFzc10sYWN0aXZlOlp9KX0pLHtkZWZhdWx0OmgoKCk9PltILmljb24/KGMoKSxMKGose2tleTowLG5hbWU6SC5pY29uLCJkYXRhLXNsb3QiOiJjaGlsZExpbmtJY29uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rSWNvbih7Y2xhc3M6W2UoaSk/LmNoaWxkTGlua0ljb24sdC51aT8uY2hpbGRMaW5rSWNvbl0sYWN0aXZlOlp9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCksUSgic3BhbiIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rTGFiZWwsdC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTpafSkpfSxbYmUodGUoZShKKShILGEubGFiZWxLZXkpKSsiICIsMSksSC50YXJnZXQ9PT0iX2JsYW5rIiYmbi5leHRlcm5hbEljb24hPT0hMT8oYygpLEwoaix7a2V5OjAsbmFtZTp0eXBlb2Ygbi5leHRlcm5hbEljb249PSJzdHJpbmciP24uZXh0ZXJuYWxJY29uOmUoZikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlKGkpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbix0LnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOlp9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCldLDIpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSldKSxfOjJ9LDEwMzIsWyJhY3RpdmUiLCJvblNlbGVjdCJdKV0pLF86Mn0sMTA0MCldLDIpKSksMTI4KSldLDIpXSldKSxkZWZhdWx0OmgoKCk9PltfKGFlLE0oRyx7ImRhdGEtc2xvdCI6ImxpbmsiLGNsYXNzOnIudmFsdWUubGluayh7Y2xhc3M6W2UoaSk/LmxpbmssdC51aT8ubGluayx0LmNsYXNzXSxhY3RpdmU6UHx8dC5hY3RpdmUsZGlzYWJsZWQ6ISF0LmRpc2FibGVkLGxldmVsOlQ+MH0pfSkse2RlZmF1bHQ6aCgoKT0+W18oZShDKSx7aXRlbTp0LGFjdGl2ZTpQfHx0LmFjdGl2ZSxpbmRleDpnfSxudWxsLDgsWyJpdGVtIiwiYWN0aXZlIiwiaW5kZXgiXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTA0MCxbInVpIl0pKTpuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmbi5jb2xsYXBzZWQmJihhLnRvb2x0aXB8fHQudG9vbHRpcCl8fG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJnQudG9vbHRpcD8oYygpLEwoZ3QsTSh7a2V5OjEsdGV4dDplKEopKHQsYS5sYWJlbEtleSl9LHsuLi5JLnZhbHVlLC4uLnR5cGVvZiB0LnRvb2x0aXA9PSJib29sZWFuIj97fTp0LnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6aCgoKT0+W18oYWUsTShHLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6ci52YWx1ZS5saW5rKHtjbGFzczpbZShpKT8ubGluayx0LnVpPy5saW5rLHQuY2xhc3NdLGFjdGl2ZTpQfHx0LmFjdGl2ZSxkaXNhYmxlZDohIXQuZGlzYWJsZWQsbGV2ZWw6VD4wfSl9KSx7ZGVmYXVsdDpoKCgpPT5bXyhlKEMpLHtpdGVtOnQsYWN0aXZlOlB8fHQuYWN0aXZlLGluZGV4Omd9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pXSksXzoyfSwxMDQwLFsidGV4dCJdKSk6KGMoKSxMKGFlLE0oe2tleToyfSxHLHsiZGF0YS1zbG90IjoibGluayIsY2xhc3M6ci52YWx1ZS5saW5rKHtjbGFzczpbZShpKT8ubGluayx0LnVpPy5saW5rLHQuY2xhc3NdLGFjdGl2ZTpQfHx0LmFjdGl2ZSxkaXNhYmxlZDohIXQuZGlzYWJsZWQsbGV2ZWw6bi5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsInx8VD4wfSl9KSx7ZGVmYXVsdDpoKCgpPT5bXyhlKEMpLHtpdGVtOnQsYWN0aXZlOlB8fHQuYWN0aXZlLGluZGV4Omd9LG51bGwsOCxbIml0ZW0iLCJhY3RpdmUiLCJpbmRleCJdKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKV0pLF86Mn0sMTA2NCxbImFjdGl2ZSIsImRpc2FibGVkIiwib25TZWxlY3QiXSkpLG4ub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJih0LmNoaWxkcmVuPy5sZW5ndGh8fG9bdC5zbG90P2Ake3Quc2xvdH0tY29udGVudGA6Iml0ZW0tY29udGVudCJdKT8oYygpLEwoZShXdCksTSh7a2V5OjB9LHgudmFsdWUseyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpyLnZhbHVlLmNvbnRlbnQoe2NsYXNzOltlKGkpPy5jb250ZW50LHQudWk/LmNvbnRlbnRdfSl9KSx7ZGVmYXVsdDpoKCgpPT5bRChtLiRzbG90cyx0LnNsb3Q/YCR7dC5zbG90fS1jb250ZW50YDoiaXRlbS1jb250ZW50Iix7aXRlbTp0LGFjdGl2ZTpQfHx0LmFjdGl2ZSxpbmRleDpnLHVpOnIudmFsdWV9LCgpPT5bUSgidWwiLHsiZGF0YS1zbG90IjoiY2hpbGRMaXN0IixjbGFzczpxKHIudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZShpKT8uY2hpbGRMaXN0LHQudWk/LmNoaWxkTGlzdF19KSl9LFsoYyghMCksUihXLG51bGwsbmUodC5jaGlsZHJlbiwoRixIKT0+KGMoKSxSKCJsaSIse2tleTpILCJkYXRhLXNsb3QiOiJjaGlsZEl0ZW0iLGNsYXNzOnEoci52YWx1ZS5jaGlsZEl0ZW0oe2NsYXNzOltlKGkpPy5jaGlsZEl0ZW0sdC51aT8uY2hpbGRJdGVtXX0pKX0sW18oeWUsTSh7cmVmX2ZvcjohMH0sZShtZSkoRikse2N1c3RvbToiIn0pLHtkZWZhdWx0OmgoKHthY3RpdmU6VSwuLi5afSk9PltfKGUoa2UpLHsiYXMtY2hpbGQiOiIiLGFjdGl2ZTpVLG9uU2VsZWN0OkYub25TZWxlY3R9LHtkZWZhdWx0OmgoKCk9PltfKGFlLE0oe3JlZl9mb3I6ITB9LFoseyJkYXRhLXNsb3QiOiJjaGlsZExpbmsiLGNsYXNzOnIudmFsdWUuY2hpbGRMaW5rKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rLHQudWk/LmNoaWxkTGluayxGLmNsYXNzXSxhY3RpdmU6VX0pfSkse2RlZmF1bHQ6aCgoKT0+W0YuaWNvbj8oYygpLEwoaix7a2V5OjAsbmFtZTpGLmljb24sImRhdGEtc2xvdCI6ImNoaWxkTGlua0ljb24iLGNsYXNzOnEoci52YWx1ZS5jaGlsZExpbmtJY29uKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rSWNvbix0LnVpPy5jaGlsZExpbmtJY29uXSxhY3RpdmU6VX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpCKCIiLCEwKSxRKCJkaXYiLHsiZGF0YS1zbG90IjoiY2hpbGRMaW5rV3JhcHBlciIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlua1dyYXBwZXIoe2NsYXNzOltlKGkpPy5jaGlsZExpbmtXcmFwcGVyLHQudWk/LmNoaWxkTGlua1dyYXBwZXJdfSkpfSxbUSgicCIseyJkYXRhLXNsb3QiOiJjaGlsZExpbmtMYWJlbCIsY2xhc3M6cShyLnZhbHVlLmNoaWxkTGlua0xhYmVsKHtjbGFzczpbZShpKT8uY2hpbGRMaW5rTGFiZWwsdC51aT8uY2hpbGRMaW5rTGFiZWxdLGFjdGl2ZTpVfSkpfSxbYmUodGUoZShKKShGLGEubGFiZWxLZXkpKSsiICIsMSksRi50YXJnZXQ9PT0iX2JsYW5rIiYmbi5leHRlcm5hbEljb24hPT0hMT8oYygpLEwoaix7a2V5OjAsbmFtZTp0eXBlb2Ygbi5leHRlcm5hbEljb249PSJzdHJpbmciP24uZXh0ZXJuYWxJY29uOmUoZikudWkuaWNvbnMuZXh0ZXJuYWwsImRhdGEtc2xvdCI6ImNoaWxkTGlua0xhYmVsRXh0ZXJuYWxJY29uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rTGFiZWxFeHRlcm5hbEljb24oe2NsYXNzOltlKGkpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbix0LnVpPy5jaGlsZExpbmtMYWJlbEV4dGVybmFsSWNvbl0sYWN0aXZlOlV9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6QigiIiwhMCldLDIpLEYuZGVzY3JpcHRpb24/KGMoKSxSKCJwIix7a2V5OjAsImRhdGEtc2xvdCI6ImNoaWxkTGlua0Rlc2NyaXB0aW9uIixjbGFzczpxKHIudmFsdWUuY2hpbGRMaW5rRGVzY3JpcHRpb24oe2NsYXNzOltlKGkpPy5jaGlsZExpbmtEZXNjcmlwdGlvbix0LnVpPy5jaGlsZExpbmtEZXNjcmlwdGlvbl0sYWN0aXZlOlV9KSl9LHRlKEYuZGVzY3JpcHRpb24pLDMpKTpCKCIiLCEwKV0sMildKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImFjdGl2ZSIsIm9uU2VsZWN0Il0pXSksXzoyfSwxMDQwKV0sMikpKSwxMjgpKV0sMildKV0pLF86Mn0sMTA0MCxbImNsYXNzIl0pKTpCKCIiLCEwKV0pLF86Mn0sMTA0MCkpOkIoIiIsITApLG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZ0LmNoaWxkcmVuPy5sZW5ndGgmJiFuLmNvbGxhcHNlZD8oYygpLEwoZShCdCkse2tleToyLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpxKHIudmFsdWUuY29udGVudCh7Y2xhc3M6W2UoaSk/LmNvbnRlbnQsdC51aT8uY29udGVudF19KSl9LHtkZWZhdWx0OmgoKCk9PltfKGUoVmUpLE0oey4uLmUocCksZGVmYXVsdFZhbHVlOnkodC5jaGlsZHJlbixUKzEsQSl9LHthczoidWwiLCJkYXRhLXNsb3QiOiJjaGlsZExpc3QiLGNsYXNzOnIudmFsdWUuY2hpbGRMaXN0KHtjbGFzczpbZShpKT8uY2hpbGRMaXN0LHQudWk/LmNoaWxkTGlzdF19KX0pLHtkZWZhdWx0OmgoKCk9PlsoYyghMCksUihXLG51bGwsbmUodC5jaGlsZHJlbiwoUCxHKT0+KGMoKSxMKGUoaykse2tleTpHLGl0ZW06UCxpbmRleDpHLGxldmVsOlQrMSwibGlzdC1pbmRleCI6QSwiZGF0YS1zbG90IjoiY2hpbGRJdGVtIixjbGFzczpxKHIudmFsdWUuY2hpbGRJdGVtKHtjbGFzczpbZShpKT8uY2hpbGRJdGVtLFAudWk/LmNoaWxkSXRlbV19KSl9LG51bGwsOCxbIml0ZW0iLCJpbmRleCIsImxldmVsIiwibGlzdC1pbmRleCIsImNsYXNzIl0pKSksMTI4KSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTpCKCIiLCEwKV0pLF86Mn0sMTA0MCxbInZhbHVlIl0pKV0pLF86M30pLF8oZShTdCksTSh7Li4uZSh1KSwuLi5uLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiP3ttb2RlbFZhbHVlOm4ubW9kZWxWYWx1ZSxkZWZhdWx0VmFsdWU6bi5kZWZhdWx0VmFsdWV9Ont9LC4uLm0uJGF0dHJzfSx7ImRhdGEtY29sbGFwc2VkIjpuLmNvbGxhcHNlZCwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6ci52YWx1ZS5yb290KHtjbGFzczpbZShpKT8ucm9vdCxhLmNsYXNzXX0pfSkse2RlZmF1bHQ6aCgoKT0+W0QobS4kc2xvdHMsImxpc3QtbGVhZGluZyIpLChjKCEwKSxSKFcsbnVsbCxuZSgkLnZhbHVlLCh0LGcpPT4oYygpLFIoVyx7a2V5OmBsaXN0LSR7Z31gfSxbKGMoKSxMKHVlKG4ub3JpZW50YXRpb249PT0idmVydGljYWwiP2UoVmUpOmUoUXQpKSxNKHtyZWZfZm9yOiEwfSxuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmIW4uY29sbGFwc2VkP3suLi5lKHApLG1vZGVsVmFsdWU6bi5tb2RlbFZhbHVlLGRlZmF1bHRWYWx1ZTpuLmRlZmF1bHRWYWx1ZT8/eSh0LDAsZyl9Ont9LHthczoidWwiLCJkYXRhLXNsb3QiOiJsaXN0IixjbGFzczpyLnZhbHVlLmxpc3Qoe2NsYXNzOmUoaSk/Lmxpc3R9KX0pLHtkZWZhdWx0OmgoKCk9PlsoYyghMCksUihXLG51bGwsbmUodCwoVCxBKT0+KGMoKSxMKGUoaykse2tleTpgbGlzdC0ke2d9LSR7QX1gLGl0ZW06VCxpbmRleDpBLCJsaXN0LWluZGV4IjpnLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczpxKHIudmFsdWUuaXRlbSh7Y2xhc3M6W2UoaSk/Lml0ZW0sVC51aT8uaXRlbV19KSl9LG51bGwsOCxbIml0ZW0iLCJpbmRleCIsImxpc3QtaW5kZXgiLCJjbGFzcyJdKSkpLDEyOCkpXSksXzoyfSwxMDQwLFsiY2xhc3MiXSkpLG4ub3JpZW50YXRpb249PT0idmVydGljYWwiJiZnPCQudmFsdWUubGVuZ3RoLTE/KGMoKSxSKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpxKHIudmFsdWUuc2VwYXJhdG9yKHtjbGFzczplKGkpPy5zZXBhcmF0b3J9KSl9LG51bGwsMikpOkIoIiIsITApXSw2NCkpKSwxMjgpKSxEKG0uJHNsb3RzLCJsaXN0LXRyYWlsaW5nIiksbi5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj8oYygpLFIoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ2aWV3cG9ydFdyYXBwZXIiLGNsYXNzOnEoci52YWx1ZS52aWV3cG9ydFdyYXBwZXIoe2NsYXNzOmUoaSk/LnZpZXdwb3J0V3JhcHBlcn0pKX0sW24uYXJyb3c/KGMoKSxMKGUoR3QpLHtrZXk6MCwiZGF0YS1zbG90IjoiaW5kaWNhdG9yIixjbGFzczpxKHIudmFsdWUuaW5kaWNhdG9yKHtjbGFzczplKGkpPy5pbmRpY2F0b3J9KSl9LHtkZWZhdWx0OmgoKCk9PltRKCJkaXYiLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOnEoci52YWx1ZS5hcnJvdyh7Y2xhc3M6ZShpKT8uYXJyb3d9KSl9LG51bGwsMildKSxfOjF9LDgsWyJjbGFzcyJdKSk6QigiIiwhMCksXyhlKGFhKSx7ImRhdGEtc2xvdCI6InZpZXdwb3J0IixjbGFzczpxKHIudmFsdWUudmlld3BvcnQoe2NsYXNzOmUoaSk/LnZpZXdwb3J0fSkpfSxudWxsLDgsWyJjbGFzcyJdKV0sMikpOkIoIiIsITApXSksXzozfSwxNixbImRhdGEtY29sbGFwc2VkIiwiY2xhc3MiXSldLDY0KSl9fSk7ZXhwb3J0e2NhIGFzIF8sbGEgYXMgYX07Cg==", "/_nuxt/DWfWqMJq.js": "aW1wb3J0e0ogYXMgbSxLIGFzIGYsbyBhcyBkLGggYXMgcCx3IGFzIGMsTCBhcyBfLE0gYXMgeCxpIGFzIGwsUCBhcyBiLGwgYXMgaCxOIGFzIHIsZiBhcyBDLHUgYXMgZyxhIGFzIGksYiBhcyB1LGsgYXMgdixqIGFzIHcsZCBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgeT17YmFzZToidy1mdWxsIG1heC13LSgtLXVpLWNvbnRhaW5lcikgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCJ9LEI9e19fbmFtZToiVUNvbnRhaW5lciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKHMpe2NvbnN0IHQ9cyxlPW0oKSxhPWYoImNvbnRhaW5lciIsdCksbz1oKCgpPT5yKHtleHRlbmQ6cih5KSwuLi5lLnVpPy5jb250YWluZXJ8fHt9fSkpO3JldHVybihuLE4pPT4oZCgpLHAobChiKSx7YXM6cy5hcyxjbGFzczp4KG8udmFsdWUoe2NsYXNzOltsKGEpPy5iYXNlLHQuY2xhc3NdfSkpfSx7ZGVmYXVsdDpjKCgpPT5bXyhuLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fSxVPXtjbGFzczoibWF4LXctbWQgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTQifSxxPUMoe19fbmFtZToiZm9yYmlkZGVuIixzZXR1cChzKXtyZXR1cm4gZyh7dGl0bGU6IkZvcmJpZGRlbiJ9KSwodCxlKT0+e2NvbnN0IGE9dixvPXcsbj1CO3JldHVybiBkKCkscChuLHtjbGFzczoicHktMjQifSx7ZGVmYXVsdDpjKCgpPT5baSgiZGl2IixVLFt1KGEse25hbWU6ImktbHVjaWRlLWxvY2siLGNsYXNzOiJzaXplLTEyIHRleHQtbXV0ZWQgbXgtYXV0byJ9KSxlWzFdfHwoZVsxXT1pKCJoMSIse2NsYXNzOiJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgNDAzIOKAlCBGb3JiaWRkZW4gIiwtMSkpLGVbMl18fChlWzJdPWkoInAiLHtjbGFzczoidGV4dC1tdXRlZCJ9LCIgWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IHRoaXMgcGFnZS4gIiwtMSkpLHUobyx7dG86Ii8iLGljb246ImktbHVjaWRlLWhvbWUifSx7ZGVmYXVsdDpjKCgpPT5bLi4uZVswXXx8KGVbMF09W2soIiBCYWNrIGhvbWUgIiwtMSldKV0pLF86MX0pXSldKSxfOjF9KX19fSk7ZXhwb3J0e3EgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DYZlg0-5.js": "aW1wb3J0e2FzIGFzIHJ9ZnJvbSIuL284dGRfRzBKLmpzIjtmdW5jdGlvbiBpKCl7ZnVuY3Rpb24gdSh0KXtyZXR1cm4gcigiL2FwaS9wcm9kdWN0cyIse3F1ZXJ5OnQ/e3N0YXR1czp0fTp2b2lkIDB9KX1mdW5jdGlvbiBvKHQpe3JldHVybiByKGAvYXBpL3Byb2R1Y3RzLyR7dH1gKX1mdW5jdGlvbiBjKHQpe3JldHVybiByKCIvYXBpL3Byb2R1Y3RzIix7bWV0aG9kOiJQT1NUIixib2R5OnR9KX1mdW5jdGlvbiBlKHQsZCl7cmV0dXJuIHIoYC9hcGkvcHJvZHVjdHMvJHt0fWAse21ldGhvZDoiUEFUQ0giLGJvZHk6ZH0pfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHIoYC9hcGkvcHJvZHVjdHMvJHt0fWAse21ldGhvZDoiREVMRVRFIn0pfXJldHVybntmZXRjaFByb2R1Y3RzOnUsZmV0Y2hQcm9kdWN0Om8sY3JlYXRlUHJvZHVjdDpjLHVwZGF0ZVByb2R1Y3Q6ZSxkZWxldGVQcm9kdWN0Om59fWV4cG9ydHtpIGFzIHV9Owo=", "/_nuxt/D_cu-qMR.js": "aW1wb3J0e2YsZyBhcyB3LG8gYXMgcixoIGFzIF8sdyBhcyBuLGkgYXMgYSxjIGFzIHAsYiBhcyBzLGogYXMgQyxkIGFzIGksYSBhcyBsLGsgYXMgQSxsIGFzIHYsciBhcyAkLG0gYXMgUyx1IGFzIEJ9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBVfWZyb20iLi9aSlZrMG9sTi5qcyI7aW1wb3J0e18gYXMgen1mcm9tIi4vQlNSS3FHclAuanMiO2NvbnN0IEQ9e2NsYXNzOiJ0ZXh0LWNlbnRlciBzcGFjZS15LTIifSxMPXtrZXk6MCxjbGFzczoic3BhY2UteS0zIiwiZGF0YS10ZXN0aWQiOiJkZW1vLWJsb2NrIn0sTT17a2V5OjEsY2xhc3M6InNwYWNlLXktMyB0ZXh0LWNlbnRlciJ9LE49Zih7X19uYW1lOiJBdXRoTG9naW5DYXJkIixzZXR1cChiKXtjb25zdCBjPVMoKSxtPXYoKCk9PiEhYy5wdWJsaWMuZGVtb01vZGUpLHg9dygpLG89JChudWxsKTthc3luYyBmdW5jdGlvbiBnKHUpe28udmFsdWU9dTt0cnl7YXdhaXQgJGZldGNoKCIvYXBpL2F1dGgvZGVtby1sb2dpbiIse21ldGhvZDoiUE9TVCIsYm9keTp7YWdlbnQ6dX0sY3JlZGVudGlhbHM6ImluY2x1ZGUifSksd2luZG93LmxvY2F0aW9uLmhyZWY9Ii9kYXNoYm9hcmQifWNhdGNoKGUpe2NvbnN0IHQ9ZTt4LmFkZCh7dGl0bGU6IkRlbW8gc2lnbi1pbiBmYWlsZWQiLGRlc2NyaXB0aW9uOnQ/LmRhdGE/LnN0YXR1c01lc3NhZ2U/P3Q/LmRhdGE/Lm1lc3NhZ2U/P3Q/LnN0YXR1c01lc3NhZ2U/P3Q/Lm1lc3NhZ2U/P2BTdGF0dXMgJHt0Py5zdGF0dXNDb2RlPz8idW5rbm93biJ9YCxjb2xvcjoiZXJyb3IifSksby52YWx1ZT1udWxsfX1yZXR1cm4odSxlKT0+e2NvbnN0IHQ9QSxrPVUsZD1DLGg9ejtyZXR1cm4gcigpLF8oaCx7Y2xhc3M6InctZnVsbCBtYXgtdy1tZCIsImRhdGEtdGVzdGlkIjoibG9naW4tY2FyZCJ9LHtoZWFkZXI6bigoKT0+W2woImRpdiIsRCxbcyh0LHtuYW1lOiJpLWx1Y2lkZS1sb2ctaW4iLGNsYXNzOiJzaXplLTggbXgtYXV0byB0ZXh0LXByaW1hcnkifSksZVsyXXx8KGVbMl09bCgiaDEiLHtjbGFzczoidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIn0sIiBTaWduIGluICIsLTEpKSxlWzNdfHwoZVszXT1sKCJwIix7Y2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCJ9LCIgV2VsY29tZSBiYWNrLiBDaG9vc2UgaG93IHlvdSdkIGxpa2UgdG8gc2lnbiBpbi4gIiwtMSkpXSldKSxkZWZhdWx0Om4oKCk9PlthKG0pPyhyKCkscCgiZGl2IixMLFtzKGsse2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLWZsYXNrLWNvbmljYWwiLHRpdGxlOiJEZW1vIG1vZGUiLGRlc2NyaXB0aW9uOiJTYW5kYm94IGRlcGxveW1lbnQgd2l0aCBzZWVkZWQgZmFrZSB1c2Vycy4gRG8gbm90IHVzZSByZWFsIGNyZWRlbnRpYWxzLiJ9KSxzKGQse2Jsb2NrOiIiLHNpemU6ImxnIixjb2xvcjoicHJpbWFyeSIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkLWNoZWNrIixsb2FkaW5nOmEobyk9PT0iYWRtaW4iLGRpc2FibGVkOmEobykhPT1udWxsLCJkYXRhLXRlc3RpZCI6InNpZ25pbi1hZG1pbi1hZ2VudCIsb25DbGljazplWzBdfHwoZVswXT15PT5nKCJhZG1pbiIpKX0se2RlZmF1bHQ6bigoKT0+Wy4uLmVbNF18fChlWzRdPVtpKCIgU2lnbiBpbiBhcyBBZG1pbiBBZ2VudCAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pLHMoZCx7YmxvY2s6IiIsc2l6ZToibGciLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixpY29uOiJpLWx1Y2lkZS11c2VyIixsb2FkaW5nOmEobyk9PT0idXNlciIsZGlzYWJsZWQ6YShvKSE9PW51bGwsImRhdGEtdGVzdGlkIjoic2lnbmluLXVzZXItYWdlbnQiLG9uQ2xpY2s6ZVsxXXx8KGVbMV09eT0+ZygidXNlciIpKX0se2RlZmF1bHQ6bigoKT0+Wy4uLmVbNV18fChlWzVdPVtpKCIgU2lnbiBpbiBhcyBVc2VyIEFnZW50ICIsLTEpXSldKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSksZVs2XXx8KGVbNl09bCgicCIse2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIgcHQtMiJ9LFtpKCIgQWRtaW4gQWdlbnQgaGFzIHRoZSAiKSxsKCJjb2RlIixudWxsLCJ1c2VyOmltcGVyc29uYXRlIiksaSgiIGFiaWxpdHkuIFVzZXIgQWdlbnQgZG9lcyBub3QuICIpXSwtMSkpXSkpOihyKCkscCgiZGl2IixNLFtzKGQse3RvOiIvYXBpL2F1dGgvZ29vZ2xlIixleHRlcm5hbDoiIixibG9jazoiIixzaXplOiJsZyIsaWNvbjoiaS1sb2dvcy1nb29nbGUtaWNvbiIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUifSx7ZGVmYXVsdDpuKCgpPT5bLi4uZVs3XXx8KGVbN109W2koIiBDb250aW51ZSB3aXRoIEdvb2dsZSAiLC0xKV0pXSksXzoxfSkscyhkLHt0bzoiL2FwaS9hdXRoL2dpdGh1YiIsZXh0ZXJuYWw6IiIsYmxvY2s6IiIsc2l6ZToibGciLGljb246ImktbG9nb3MtZ2l0aHViLWljb24iLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIn0se2RlZmF1bHQ6bigoKT0+Wy4uLmVbOF18fChlWzhdPVtpKCIgQ29udGludWUgd2l0aCBHaXRIdWIgIiwtMSldKV0pLF86MX0pXSkpXSksXzoxfSl9fX0pLFQ9T2JqZWN0LmFzc2lnbihOLHtfX25hbWU6IkF1dGhMb2dpbkNhcmQifSksSD1mKHtfX25hbWU6ImxvZ2luIixzZXR1cChiKXtyZXR1cm4gQih7dGl0bGU6IlNpZ24gaW4ifSksKGMsbSk9PihyKCksXyhUKSl9fSk7ZXhwb3J0e0ggYXMgZGVmYXVsdH07Cg==", "/_nuxt/DbC4p3QA.js": "aW1wb3J0e18gYXMgYmh9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyB4aH1mcm9tIi4vQ0FVQVg1VnIuanMiO2ltcG9ydHtmIGFzIHJyLGE0IGFzIGNvLGFZIGFzIE9zLCQgYXMgdW8sciBhcyBSZSxhNiBhcyByYyxhWiBhcyBzYyxhXyBhcyBpYyxhJCBhcyBvYyxiMCBhcyBsYyxiMSBhcyBhYyxiMiBhcyBjYyxiMyBhcyB1YyxiNCBhcyBkYyxiNSBhcyBoYyxKIGFzIGZjLEsgYXMgcGMsVCBhcyB3aCxsIGFzIGxlLGFEIGFzIG1jLGFYIGFzIGdjLG8gYXMgaGUsaCBhcyBCZSx3IGFzIGRlLGIgYXMgUSxpIGFzIHosUCBhcyBBaSxNIGFzIFJuLGMgYXMgc24sRiBhcyBJbixxIGFzIGZsLGEgYXMgT3IsTCBhcyB5YyxhYSBhcyB1dCxqIGFzIFNuLHYgYXMgRG4sTiBhcyB6cixiNiBhcyBkcixiNyBhcyB2aCxhRyBhcyBndCxiOCBhcyBTaCxheiBhcyBDaCxiOSBhcyBUaCxiYSBhcyBNaCxheSBhcyBFaCxiYiBhcyBBaCxhbiBhcyBPaCxSIGFzIE5oLGExIGFzIFJoLGFzIGFzIFFzLGcgYXMgSWgscCBhcyBEaCxhcSBhcyBMaCxhRiBhcyBQaCxEIGFzIHpoLGFyIGFzICRoLEcgYXMgaHIsSCBhcyBCaCxkIGFzIHBsLHQgYXMgX2gsViBhcyBIaCx1IGFzIEZofWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgVmh9ZnJvbSIuL1dtRFhIWUtrLmpzIjtpbXBvcnR7UyBhcyBVaH1mcm9tIi4vZF8wTndRTFUuanMiO2ltcG9ydHtfIGFzIGpofWZyb20iLi80bEhteUhiSC5qcyI7aW1wb3J0e18gYXMgbWx9ZnJvbSIuL0NYb2M0VUVSLmpzIjtpbXBvcnR7XyBhcyBxaH1mcm9tIi4vWkpWazBvbE4uanMiO2ltcG9ydHtvIGFzIGtjLGEgYXMgWHMscyBhcyBMbixiIGFzIFdofWZyb20iLi9CdUxTdUE4TS5qcyI7aW1wb3J0Ii4vbTIwa2RHeFUuanMiO2ltcG9ydCIuL0I3czVwampSLmpzIjtpbXBvcnQiLi9ESEN3RUxXcC5qcyI7aW1wb3J0Ii4vQnQ4UzBkbWwuanMiO2ltcG9ydCIuL0M3WXk2dFIzLmpzIjtpbXBvcnQiLi9DWWFtekxtNS5qcyI7aW1wb3J0Ii4vRHZkaHlwRGkuanMiO2Z1bmN0aW9uIHVlKG4pe3RoaXMuY29udGVudD1ufXVlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dWUsZmluZDpmdW5jdGlvbihuKXtmb3IodmFyIGU9MDtlPHRoaXMuY29udGVudC5sZW5ndGg7ZSs9MilpZih0aGlzLmNvbnRlbnRbZV09PT1uKXJldHVybiBlO3JldHVybi0xfSxnZXQ6ZnVuY3Rpb24obil7dmFyIGU9dGhpcy5maW5kKG4pO3JldHVybiBlPT0tMT92b2lkIDA6dGhpcy5jb250ZW50W2UrMV19LHVwZGF0ZTpmdW5jdGlvbihuLGUsdCl7dmFyIHI9dCYmdCE9bj90aGlzLnJlbW92ZSh0KTp0aGlzLHM9ci5maW5kKG4pLGk9ci5jb250ZW50LnNsaWNlKCk7cmV0dXJuIHM9PS0xP2kucHVzaCh0fHxuLGUpOihpW3MrMV09ZSx0JiYoaVtzXT10KSksbmV3IHVlKGkpfSxyZW1vdmU6ZnVuY3Rpb24obil7dmFyIGU9dGhpcy5maW5kKG4pO2lmKGU9PS0xKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuY29udGVudC5zbGljZSgpO3JldHVybiB0LnNwbGljZShlLDIpLG5ldyB1ZSh0KX0sYWRkVG9TdGFydDpmdW5jdGlvbihuLGUpe3JldHVybiBuZXcgdWUoW24sZV0uY29uY2F0KHRoaXMucmVtb3ZlKG4pLmNvbnRlbnQpKX0sYWRkVG9FbmQ6ZnVuY3Rpb24obixlKXt2YXIgdD10aGlzLnJlbW92ZShuKS5jb250ZW50LnNsaWNlKCk7cmV0dXJuIHQucHVzaChuLGUpLG5ldyB1ZSh0KX0sYWRkQmVmb3JlOmZ1bmN0aW9uKG4sZSx0KXt2YXIgcj10aGlzLnJlbW92ZShlKSxzPXIuY29udGVudC5zbGljZSgpLGk9ci5maW5kKG4pO3JldHVybiBzLnNwbGljZShpPT0tMT9zLmxlbmd0aDppLDAsZSx0KSxuZXcgdWUocyl9LGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciBlPTA7ZTx0aGlzLmNvbnRlbnQubGVuZ3RoO2UrPTIpbih0aGlzLmNvbnRlbnRbZV0sdGhpcy5jb250ZW50W2UrMV0pfSxwcmVwZW5kOmZ1bmN0aW9uKG4pe3JldHVybiBuPXVlLmZyb20obiksbi5zaXplP25ldyB1ZShuLmNvbnRlbnQuY29uY2F0KHRoaXMuc3VidHJhY3QobikuY29udGVudCkpOnRoaXN9LGFwcGVuZDpmdW5jdGlvbihuKXtyZXR1cm4gbj11ZS5mcm9tKG4pLG4uc2l6ZT9uZXcgdWUodGhpcy5zdWJ0cmFjdChuKS5jb250ZW50LmNvbmNhdChuLmNvbnRlbnQpKTp0aGlzfSxzdWJ0cmFjdDpmdW5jdGlvbihuKXt2YXIgZT10aGlzO249dWUuZnJvbShuKTtmb3IodmFyIHQ9MDt0PG4uY29udGVudC5sZW5ndGg7dCs9MillPWUucmVtb3ZlKG4uY29udGVudFt0XSk7cmV0dXJuIGV9LHRvT2JqZWN0OmZ1bmN0aW9uKCl7dmFyIG49e307cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihlLHQpe25bZV09dH0pLG59LGdldCBzaXplKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg+PjF9fTt1ZS5mcm9tPWZ1bmN0aW9uKG4pe2lmKG4gaW5zdGFuY2VvZiB1ZSlyZXR1cm4gbjt2YXIgZT1bXTtpZihuKWZvcih2YXIgdCBpbiBuKWUucHVzaCh0LG5bdF0pO3JldHVybiBuZXcgdWUoZSl9O2Z1bmN0aW9uIGJjKG4sZSx0KXtmb3IobGV0IHI9MDs7cisrKXtpZihyPT1uLmNoaWxkQ291bnR8fHI9PWUuY2hpbGRDb3VudClyZXR1cm4gbi5jaGlsZENvdW50PT1lLmNoaWxkQ291bnQ/bnVsbDp0O2xldCBzPW4uY2hpbGQociksaT1lLmNoaWxkKHIpO2lmKHM9PWkpe3QrPXMubm9kZVNpemU7Y29udGludWV9aWYoIXMuc2FtZU1hcmt1cChpKSlyZXR1cm4gdDtpZihzLmlzVGV4dCYmcy50ZXh0IT1pLnRleHQpe2ZvcihsZXQgbz0wO3MudGV4dFtvXT09aS50ZXh0W29dO28rKyl0Kys7cmV0dXJuIHR9aWYocy5jb250ZW50LnNpemV8fGkuY29udGVudC5zaXplKXtsZXQgbz1iYyhzLmNvbnRlbnQsaS5jb250ZW50LHQrMSk7aWYobyE9bnVsbClyZXR1cm4gb310Kz1zLm5vZGVTaXplfX1mdW5jdGlvbiB4YyhuLGUsdCxyKXtmb3IobGV0IHM9bi5jaGlsZENvdW50LGk9ZS5jaGlsZENvdW50Ozspe2lmKHM9PTB8fGk9PTApcmV0dXJuIHM9PWk/bnVsbDp7YTp0LGI6cn07bGV0IG89bi5jaGlsZCgtLXMpLGw9ZS5jaGlsZCgtLWkpLGE9by5ub2RlU2l6ZTtpZihvPT1sKXt0LT1hLHItPWE7Y29udGludWV9aWYoIW8uc2FtZU1hcmt1cChsKSlyZXR1cm57YTp0LGI6cn07aWYoby5pc1RleHQmJm8udGV4dCE9bC50ZXh0KXtsZXQgYz0wLHU9TWF0aC5taW4oby50ZXh0Lmxlbmd0aCxsLnRleHQubGVuZ3RoKTtmb3IoO2M8dSYmby50ZXh0W28udGV4dC5sZW5ndGgtYy0xXT09bC50ZXh0W2wudGV4dC5sZW5ndGgtYy0xXTspYysrLHQtLSxyLS07cmV0dXJue2E6dCxiOnJ9fWlmKG8uY29udGVudC5zaXplfHxsLmNvbnRlbnQuc2l6ZSl7bGV0IGM9eGMoby5jb250ZW50LGwuY29udGVudCx0LTEsci0xKTtpZihjKXJldHVybiBjfXQtPWEsci09YX19Y2xhc3MgU3tjb25zdHJ1Y3RvcihlLHQpe2lmKHRoaXMuY29udGVudD1lLHRoaXMuc2l6ZT10fHwwLHQ9PW51bGwpZm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspdGhpcy5zaXplKz1lW3JdLm5vZGVTaXplfW5vZGVzQmV0d2VlbihlLHQscixzPTAsaSl7Zm9yKGxldCBvPTAsbD0wO2w8dDtvKyspe2xldCBhPXRoaXMuY29udGVudFtvXSxjPWwrYS5ub2RlU2l6ZTtpZihjPmUmJnIoYSxzK2wsaXx8bnVsbCxvKSE9PSExJiZhLmNvbnRlbnQuc2l6ZSl7bGV0IHU9bCsxO2Eubm9kZXNCZXR3ZWVuKE1hdGgubWF4KDAsZS11KSxNYXRoLm1pbihhLmNvbnRlbnQuc2l6ZSx0LXUpLHIscyt1KX1sPWN9fWRlc2NlbmRhbnRzKGUpe3RoaXMubm9kZXNCZXR3ZWVuKDAsdGhpcy5zaXplLGUpfXRleHRCZXR3ZWVuKGUsdCxyLHMpe2xldCBpPSIiLG89ITA7cmV0dXJuIHRoaXMubm9kZXNCZXR3ZWVuKGUsdCwobCxhKT0+e2xldCBjPWwuaXNUZXh0P2wudGV4dC5zbGljZShNYXRoLm1heChlLGEpLWEsdC1hKTpsLmlzTGVhZj9zP3R5cGVvZiBzPT0iZnVuY3Rpb24iP3MobCk6czpsLnR5cGUuc3BlYy5sZWFmVGV4dD9sLnR5cGUuc3BlYy5sZWFmVGV4dChsKToiIjoiIjtsLmlzQmxvY2smJihsLmlzTGVhZiYmY3x8bC5pc1RleHRibG9jaykmJnImJihvP289ITE6aSs9ciksaSs9Y30sMCksaX1hcHBlbmQoZSl7aWYoIWUuc2l6ZSlyZXR1cm4gdGhpcztpZighdGhpcy5zaXplKXJldHVybiBlO2xldCB0PXRoaXMubGFzdENoaWxkLHI9ZS5maXJzdENoaWxkLHM9dGhpcy5jb250ZW50LnNsaWNlKCksaT0wO2Zvcih0LmlzVGV4dCYmdC5zYW1lTWFya3VwKHIpJiYoc1tzLmxlbmd0aC0xXT10LndpdGhUZXh0KHQudGV4dCtyLnRleHQpLGk9MSk7aTxlLmNvbnRlbnQubGVuZ3RoO2krKylzLnB1c2goZS5jb250ZW50W2ldKTtyZXR1cm4gbmV3IFMocyx0aGlzLnNpemUrZS5zaXplKX1jdXQoZSx0PXRoaXMuc2l6ZSl7aWYoZT09MCYmdD09dGhpcy5zaXplKXJldHVybiB0aGlzO2xldCByPVtdLHM9MDtpZih0PmUpZm9yKGxldCBpPTAsbz0wO288dDtpKyspe2xldCBsPXRoaXMuY29udGVudFtpXSxhPW8rbC5ub2RlU2l6ZTthPmUmJigobzxlfHxhPnQpJiYobC5pc1RleHQ/bD1sLmN1dChNYXRoLm1heCgwLGUtbyksTWF0aC5taW4obC50ZXh0Lmxlbmd0aCx0LW8pKTpsPWwuY3V0KE1hdGgubWF4KDAsZS1vLTEpLE1hdGgubWluKGwuY29udGVudC5zaXplLHQtby0xKSkpLHIucHVzaChsKSxzKz1sLm5vZGVTaXplKSxvPWF9cmV0dXJuIG5ldyBTKHIscyl9Y3V0QnlJbmRleChlLHQpe3JldHVybiBlPT10P1MuZW1wdHk6ZT09MCYmdD09dGhpcy5jb250ZW50Lmxlbmd0aD90aGlzOm5ldyBTKHRoaXMuY29udGVudC5zbGljZShlLHQpKX1yZXBsYWNlQ2hpbGQoZSx0KXtsZXQgcj10aGlzLmNvbnRlbnRbZV07aWYocj09dClyZXR1cm4gdGhpcztsZXQgcz10aGlzLmNvbnRlbnQuc2xpY2UoKSxpPXRoaXMuc2l6ZSt0Lm5vZGVTaXplLXIubm9kZVNpemU7cmV0dXJuIHNbZV09dCxuZXcgUyhzLGkpfWFkZFRvU3RhcnQoZSl7cmV0dXJuIG5ldyBTKFtlXS5jb25jYXQodGhpcy5jb250ZW50KSx0aGlzLnNpemUrZS5ub2RlU2l6ZSl9YWRkVG9FbmQoZSl7cmV0dXJuIG5ldyBTKHRoaXMuY29udGVudC5jb25jYXQoZSksdGhpcy5zaXplK2Uubm9kZVNpemUpfWVxKGUpe2lmKHRoaXMuY29udGVudC5sZW5ndGghPWUuY29udGVudC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLmNvbnRlbnQubGVuZ3RoO3QrKylpZighdGhpcy5jb250ZW50W3RdLmVxKGUuY29udGVudFt0XSkpcmV0dXJuITE7cmV0dXJuITB9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aD90aGlzLmNvbnRlbnRbMF06bnVsbH1nZXQgbGFzdENoaWxkKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGgtMV06bnVsbH1nZXQgY2hpbGRDb3VudCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RofWNoaWxkKGUpe2xldCB0PXRoaXMuY29udGVudFtlXTtpZighdCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggIitlKyIgb3V0IG9mIHJhbmdlIGZvciAiK3RoaXMpO3JldHVybiB0fW1heWJlQ2hpbGQoZSl7cmV0dXJuIHRoaXMuY29udGVudFtlXXx8bnVsbH1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wLHI9MDt0PHRoaXMuY29udGVudC5sZW5ndGg7dCsrKXtsZXQgcz10aGlzLmNvbnRlbnRbdF07ZShzLHIsdCkscis9cy5ub2RlU2l6ZX19ZmluZERpZmZTdGFydChlLHQ9MCl7cmV0dXJuIGJjKHRoaXMsZSx0KX1maW5kRGlmZkVuZChlLHQ9dGhpcy5zaXplLHI9ZS5zaXplKXtyZXR1cm4geGModGhpcyxlLHQscil9ZmluZEluZGV4KGUpe2lmKGU9PTApcmV0dXJuIGZyKDAsZSk7aWYoZT09dGhpcy5zaXplKXJldHVybiBmcih0aGlzLmNvbnRlbnQubGVuZ3RoLGUpO2lmKGU+dGhpcy5zaXplfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFBvc2l0aW9uICR7ZX0gb3V0c2lkZSBvZiBmcmFnbWVudCAoJHt0aGlzfSlgKTtmb3IobGV0IHQ9MCxyPTA7O3QrKyl7bGV0IHM9dGhpcy5jaGlsZCh0KSxpPXIrcy5ub2RlU2l6ZTtpZihpPj1lKXJldHVybiBpPT1lP2ZyKHQrMSxpKTpmcih0LHIpO3I9aX19dG9TdHJpbmcoKXtyZXR1cm4iPCIrdGhpcy50b1N0cmluZ0lubmVyKCkrIj4ifXRvU3RyaW5nSW5uZXIoKXtyZXR1cm4gdGhpcy5jb250ZW50LmpvaW4oIiwgIil9dG9KU09OKCl7cmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50Lm1hcChlPT5lLnRvSlNPTigpKTpudWxsfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXJldHVybiBTLmVtcHR5O2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBGcmFnbWVudC5mcm9tSlNPTiIpO3JldHVybiBuZXcgUyh0Lm1hcChlLm5vZGVGcm9tSlNPTikpfXN0YXRpYyBmcm9tQXJyYXkoZSl7aWYoIWUubGVuZ3RoKXJldHVybiBTLmVtcHR5O2xldCB0LHI9MDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtyKz1pLm5vZGVTaXplLHMmJmkuaXNUZXh0JiZlW3MtMV0uc2FtZU1hcmt1cChpKT8odHx8KHQ9ZS5zbGljZSgwLHMpKSx0W3QubGVuZ3RoLTFdPWkud2l0aFRleHQodFt0Lmxlbmd0aC0xXS50ZXh0K2kudGV4dCkpOnQmJnQucHVzaChpKX1yZXR1cm4gbmV3IFModHx8ZSxyKX1zdGF0aWMgZnJvbShlKXtpZighZSlyZXR1cm4gUy5lbXB0eTtpZihlIGluc3RhbmNlb2YgUylyZXR1cm4gZTtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiB0aGlzLmZyb21BcnJheShlKTtpZihlLmF0dHJzKXJldHVybiBuZXcgUyhbZV0sZS5ub2RlU2l6ZSk7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNhbiBub3QgY29udmVydCAiK2UrIiB0byBhIEZyYWdtZW50IisoZS5ub2Rlc0JldHdlZW4/IiAobG9va3MgbGlrZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBwcm9zZW1pcnJvci1tb2RlbCB3ZXJlIGxvYWRlZCkiOiIiKSl9fVMuZW1wdHk9bmV3IFMoW10sMCk7Y29uc3QgWXM9e2luZGV4OjAsb2Zmc2V0OjB9O2Z1bmN0aW9uIGZyKG4sZSl7cmV0dXJuIFlzLmluZGV4PW4sWXMub2Zmc2V0PWUsWXN9ZnVuY3Rpb24gJHIobixlKXtpZihuPT09ZSlyZXR1cm4hMDtpZighKG4mJnR5cGVvZiBuPT0ib2JqZWN0Iil8fCEoZSYmdHlwZW9mIGU9PSJvYmplY3QiKSlyZXR1cm4hMTtsZXQgdD1BcnJheS5pc0FycmF5KG4pO2lmKEFycmF5LmlzQXJyYXkoZSkhPXQpcmV0dXJuITE7aWYodCl7aWYobi5sZW5ndGghPWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKWlmKCEkcihuW3JdLGVbcl0pKXJldHVybiExfWVsc2V7Zm9yKGxldCByIGluIG4paWYoIShyIGluIGUpfHwhJHIobltyXSxlW3JdKSlyZXR1cm4hMTtmb3IobGV0IHIgaW4gZSlpZighKHIgaW4gbikpcmV0dXJuITF9cmV0dXJuITB9bGV0IFc9Y2xhc3MgT2l7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnR5cGU9ZSx0aGlzLmF0dHJzPXR9YWRkVG9TZXQoZSl7bGV0IHQscj0hMTtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtpZih0aGlzLmVxKGkpKXJldHVybiBlO2lmKHRoaXMudHlwZS5leGNsdWRlcyhpLnR5cGUpKXR8fCh0PWUuc2xpY2UoMCxzKSk7ZWxzZXtpZihpLnR5cGUuZXhjbHVkZXModGhpcy50eXBlKSlyZXR1cm4gZTshciYmaS50eXBlLnJhbms+dGhpcy50eXBlLnJhbmsmJih0fHwodD1lLnNsaWNlKDAscykpLHQucHVzaCh0aGlzKSxyPSEwKSx0JiZ0LnB1c2goaSl9fXJldHVybiB0fHwodD1lLnNsaWNlKCkpLHJ8fHQucHVzaCh0aGlzKSx0fXJlbW92ZUZyb21TZXQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5lcShlW3RdKSlyZXR1cm4gZS5zbGljZSgwLHQpLmNvbmNhdChlLnNsaWNlKHQrMSkpO3JldHVybiBlfWlzSW5TZXQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5lcShlW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX1lcShlKXtyZXR1cm4gdGhpcz09ZXx8dGhpcy50eXBlPT1lLnR5cGUmJiRyKHRoaXMuYXR0cnMsZS5hdHRycyl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIE1hcmsuZnJvbUpTT04iKTtsZXQgcj1lLm1hcmtzW3QudHlwZV07aWYoIXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZXJlIGlzIG5vIG1hcmsgdHlwZSAke3QudHlwZX0gaW4gdGhpcyBzY2hlbWFgKTtsZXQgcz1yLmNyZWF0ZSh0LmF0dHJzKTtyZXR1cm4gci5jaGVja0F0dHJzKHMuYXR0cnMpLHN9c3RhdGljIHNhbWVTZXQoZSx0KXtpZihlPT10KXJldHVybiEwO2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKylpZighZVtyXS5lcSh0W3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgc2V0RnJvbShlKXtpZighZXx8QXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg9PTApcmV0dXJuIE9pLm5vbmU7aWYoZSBpbnN0YW5jZW9mIE9pKXJldHVybltlXTtsZXQgdD1lLnNsaWNlKCk7cmV0dXJuIHQuc29ydCgocixzKT0+ci50eXBlLnJhbmstcy50eXBlLnJhbmspLHR9fTtXLm5vbmU9W107Y2xhc3MgQnIgZXh0ZW5kcyBFcnJvcnt9Y2xhc3MgRXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5jb250ZW50PWUsdGhpcy5vcGVuU3RhcnQ9dCx0aGlzLm9wZW5FbmQ9cn1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLmNvbnRlbnQuc2l6ZS10aGlzLm9wZW5TdGFydC10aGlzLm9wZW5FbmR9aW5zZXJ0QXQoZSx0KXtsZXQgcj12Yyh0aGlzLmNvbnRlbnQsZSt0aGlzLm9wZW5TdGFydCx0KTtyZXR1cm4gciYmbmV3IEUocix0aGlzLm9wZW5TdGFydCx0aGlzLm9wZW5FbmQpfXJlbW92ZUJldHdlZW4oZSx0KXtyZXR1cm4gbmV3IEUod2ModGhpcy5jb250ZW50LGUrdGhpcy5vcGVuU3RhcnQsdCt0aGlzLm9wZW5TdGFydCksdGhpcy5vcGVuU3RhcnQsdGhpcy5vcGVuRW5kKX1lcShlKXtyZXR1cm4gdGhpcy5jb250ZW50LmVxKGUuY29udGVudCkmJnRoaXMub3BlblN0YXJ0PT1lLm9wZW5TdGFydCYmdGhpcy5vcGVuRW5kPT1lLm9wZW5FbmR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jb250ZW50KyIoIit0aGlzLm9wZW5TdGFydCsiLCIrdGhpcy5vcGVuRW5kKyIpIn10b0pTT04oKXtpZighdGhpcy5jb250ZW50LnNpemUpcmV0dXJuIG51bGw7bGV0IGU9e2NvbnRlbnQ6dGhpcy5jb250ZW50LnRvSlNPTigpfTtyZXR1cm4gdGhpcy5vcGVuU3RhcnQ+MCYmKGUub3BlblN0YXJ0PXRoaXMub3BlblN0YXJ0KSx0aGlzLm9wZW5FbmQ+MCYmKGUub3BlbkVuZD10aGlzLm9wZW5FbmQpLGV9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXQpcmV0dXJuIEUuZW1wdHk7bGV0IHI9dC5vcGVuU3RhcnR8fDAscz10Lm9wZW5FbmR8fDA7aWYodHlwZW9mIHIhPSJudW1iZXIifHx0eXBlb2YgcyE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFNsaWNlLmZyb21KU09OIik7cmV0dXJuIG5ldyBFKFMuZnJvbUpTT04oZSx0LmNvbnRlbnQpLHIscyl9c3RhdGljIG1heE9wZW4oZSx0PSEwKXtsZXQgcj0wLHM9MDtmb3IobGV0IGk9ZS5maXJzdENoaWxkO2kmJiFpLmlzTGVhZiYmKHR8fCFpLnR5cGUuc3BlYy5pc29sYXRpbmcpO2k9aS5maXJzdENoaWxkKXIrKztmb3IobGV0IGk9ZS5sYXN0Q2hpbGQ7aSYmIWkuaXNMZWFmJiYodHx8IWkudHlwZS5zcGVjLmlzb2xhdGluZyk7aT1pLmxhc3RDaGlsZClzKys7cmV0dXJuIG5ldyBFKGUscixzKX19RS5lbXB0eT1uZXcgRShTLmVtcHR5LDAsMCk7ZnVuY3Rpb24gd2MobixlLHQpe2xldHtpbmRleDpyLG9mZnNldDpzfT1uLmZpbmRJbmRleChlKSxpPW4ubWF5YmVDaGlsZChyKSx7aW5kZXg6byxvZmZzZXQ6bH09bi5maW5kSW5kZXgodCk7aWYocz09ZXx8aS5pc1RleHQpe2lmKGwhPXQmJiFuLmNoaWxkKG8pLmlzVGV4dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVtb3Zpbmcgbm9uLWZsYXQgcmFuZ2UiKTtyZXR1cm4gbi5jdXQoMCxlKS5hcHBlbmQobi5jdXQodCkpfWlmKHIhPW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJlbW92aW5nIG5vbi1mbGF0IHJhbmdlIik7cmV0dXJuIG4ucmVwbGFjZUNoaWxkKHIsaS5jb3B5KHdjKGkuY29udGVudCxlLXMtMSx0LXMtMSkpKX1mdW5jdGlvbiB2YyhuLGUsdCxyKXtsZXR7aW5kZXg6cyxvZmZzZXQ6aX09bi5maW5kSW5kZXgoZSksbz1uLm1heWJlQ2hpbGQocyk7aWYoaT09ZXx8by5pc1RleHQpcmV0dXJuIHImJiFyLmNhblJlcGxhY2UocyxzLHQpP251bGw6bi5jdXQoMCxlKS5hcHBlbmQodCkuYXBwZW5kKG4uY3V0KGUpKTtsZXQgbD12YyhvLmNvbnRlbnQsZS1pLTEsdCxvKTtyZXR1cm4gbCYmbi5yZXBsYWNlQ2hpbGQocyxvLmNvcHkobCkpfWZ1bmN0aW9uIEtoKG4sZSx0KXtpZih0Lm9wZW5TdGFydD5uLmRlcHRoKXRocm93IG5ldyBCcigiSW5zZXJ0ZWQgY29udGVudCBkZWVwZXIgdGhhbiBpbnNlcnRpb24gcG9zaXRpb24iKTtpZihuLmRlcHRoLXQub3BlblN0YXJ0IT1lLmRlcHRoLXQub3BlbkVuZCl0aHJvdyBuZXcgQnIoIkluY29uc2lzdGVudCBvcGVuIGRlcHRocyIpO3JldHVybiBTYyhuLGUsdCwwKX1mdW5jdGlvbiBTYyhuLGUsdCxyKXtsZXQgcz1uLmluZGV4KHIpLGk9bi5ub2RlKHIpO2lmKHM9PWUuaW5kZXgocikmJnI8bi5kZXB0aC10Lm9wZW5TdGFydCl7bGV0IG89U2MobixlLHQscisxKTtyZXR1cm4gaS5jb3B5KGkuY29udGVudC5yZXBsYWNlQ2hpbGQocyxvKSl9ZWxzZSBpZih0LmNvbnRlbnQuc2l6ZSlpZighdC5vcGVuU3RhcnQmJiF0Lm9wZW5FbmQmJm4uZGVwdGg9PXImJmUuZGVwdGg9PXIpe2xldCBvPW4ucGFyZW50LGw9by5jb250ZW50O3JldHVybiAkdChvLGwuY3V0KDAsbi5wYXJlbnRPZmZzZXQpLmFwcGVuZCh0LmNvbnRlbnQpLmFwcGVuZChsLmN1dChlLnBhcmVudE9mZnNldCkpKX1lbHNle2xldHtzdGFydDpvLGVuZDpsfT1KaCh0LG4pO3JldHVybiAkdChpLFRjKG4sbyxsLGUscikpfWVsc2UgcmV0dXJuICR0KGksX3IobixlLHIpKX1mdW5jdGlvbiBDYyhuLGUpe2lmKCFlLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQobi50eXBlKSl0aHJvdyBuZXcgQnIoIkNhbm5vdCBqb2luICIrZS50eXBlLm5hbWUrIiBvbnRvICIrbi50eXBlLm5hbWUpfWZ1bmN0aW9uIE5pKG4sZSx0KXtsZXQgcj1uLm5vZGUodCk7cmV0dXJuIENjKHIsZS5ub2RlKHQpKSxyfWZ1bmN0aW9uIHp0KG4sZSl7bGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wJiZuLmlzVGV4dCYmbi5zYW1lTWFya3VwKGVbdF0pP2VbdF09bi53aXRoVGV4dChlW3RdLnRleHQrbi50ZXh0KTplLnB1c2gobil9ZnVuY3Rpb24gUG4obixlLHQscil7bGV0IHM9KGV8fG4pLm5vZGUodCksaT0wLG89ZT9lLmluZGV4KHQpOnMuY2hpbGRDb3VudDtuJiYoaT1uLmluZGV4KHQpLG4uZGVwdGg+dD9pKys6bi50ZXh0T2Zmc2V0JiYoenQobi5ub2RlQWZ0ZXIsciksaSsrKSk7Zm9yKGxldCBsPWk7bDxvO2wrKyl6dChzLmNoaWxkKGwpLHIpO2UmJmUuZGVwdGg9PXQmJmUudGV4dE9mZnNldCYmenQoZS5ub2RlQmVmb3JlLHIpfWZ1bmN0aW9uICR0KG4sZSl7cmV0dXJuIG4udHlwZS5jaGVja0NvbnRlbnQoZSksbi5jb3B5KGUpfWZ1bmN0aW9uIFRjKG4sZSx0LHIscyl7bGV0IGk9bi5kZXB0aD5zJiZOaShuLGUscysxKSxvPXIuZGVwdGg+cyYmTmkodCxyLHMrMSksbD1bXTtyZXR1cm4gUG4obnVsbCxuLHMsbCksaSYmbyYmZS5pbmRleChzKT09dC5pbmRleChzKT8oQ2MoaSxvKSx6dCgkdChpLFRjKG4sZSx0LHIscysxKSksbCkpOihpJiZ6dCgkdChpLF9yKG4sZSxzKzEpKSxsKSxQbihlLHQscyxsKSxvJiZ6dCgkdChvLF9yKHQscixzKzEpKSxsKSksUG4ocixudWxsLHMsbCksbmV3IFMobCl9ZnVuY3Rpb24gX3IobixlLHQpe2xldCByPVtdO2lmKFBuKG51bGwsbix0LHIpLG4uZGVwdGg+dCl7bGV0IHM9TmkobixlLHQrMSk7enQoJHQocyxfcihuLGUsdCsxKSkscil9cmV0dXJuIFBuKGUsbnVsbCx0LHIpLG5ldyBTKHIpfWZ1bmN0aW9uIEpoKG4sZSl7bGV0IHQ9ZS5kZXB0aC1uLm9wZW5TdGFydCxzPWUubm9kZSh0KS5jb3B5KG4uY29udGVudCk7Zm9yKGxldCBpPXQtMTtpPj0wO2ktLSlzPWUubm9kZShpKS5jb3B5KFMuZnJvbShzKSk7cmV0dXJue3N0YXJ0OnMucmVzb2x2ZU5vQ2FjaGUobi5vcGVuU3RhcnQrdCksZW5kOnMucmVzb2x2ZU5vQ2FjaGUocy5jb250ZW50LnNpemUtbi5vcGVuRW5kLXQpfX1jbGFzcyBXbntjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5wb3M9ZSx0aGlzLnBhdGg9dCx0aGlzLnBhcmVudE9mZnNldD1yLHRoaXMuZGVwdGg9dC5sZW5ndGgvMy0xfXJlc29sdmVEZXB0aChlKXtyZXR1cm4gZT09bnVsbD90aGlzLmRlcHRoOmU8MD90aGlzLmRlcHRoK2U6ZX1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMubm9kZSh0aGlzLmRlcHRoKX1nZXQgZG9jKCl7cmV0dXJuIHRoaXMubm9kZSgwKX1ub2RlKGUpe3JldHVybiB0aGlzLnBhdGhbdGhpcy5yZXNvbHZlRGVwdGgoZSkqM119aW5kZXgoZSl7cmV0dXJuIHRoaXMucGF0aFt0aGlzLnJlc29sdmVEZXB0aChlKSozKzFdfWluZGV4QWZ0ZXIoZSl7cmV0dXJuIGU9dGhpcy5yZXNvbHZlRGVwdGgoZSksdGhpcy5pbmRleChlKSsoZT09dGhpcy5kZXB0aCYmIXRoaXMudGV4dE9mZnNldD8wOjEpfXN0YXJ0KGUpe3JldHVybiBlPXRoaXMucmVzb2x2ZURlcHRoKGUpLGU9PTA/MDp0aGlzLnBhdGhbZSozLTFdKzF9ZW5kKGUpe3JldHVybiBlPXRoaXMucmVzb2x2ZURlcHRoKGUpLHRoaXMuc3RhcnQoZSkrdGhpcy5ub2RlKGUpLmNvbnRlbnQuc2l6ZX1iZWZvcmUoZSl7aWYoZT10aGlzLnJlc29sdmVEZXB0aChlKSwhZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlcmUgaXMgbm8gcG9zaXRpb24gYmVmb3JlIHRoZSB0b3AtbGV2ZWwgbm9kZSIpO3JldHVybiBlPT10aGlzLmRlcHRoKzE/dGhpcy5wb3M6dGhpcy5wYXRoW2UqMy0xXX1hZnRlcihlKXtpZihlPXRoaXMucmVzb2x2ZURlcHRoKGUpLCFlKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGVyZSBpcyBubyBwb3NpdGlvbiBhZnRlciB0aGUgdG9wLWxldmVsIG5vZGUiKTtyZXR1cm4gZT09dGhpcy5kZXB0aCsxP3RoaXMucG9zOnRoaXMucGF0aFtlKjMtMV0rdGhpcy5wYXRoW2UqM10ubm9kZVNpemV9Z2V0IHRleHRPZmZzZXQoKXtyZXR1cm4gdGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV19Z2V0IG5vZGVBZnRlcigpe2xldCBlPXRoaXMucGFyZW50LHQ9dGhpcy5pbmRleCh0aGlzLmRlcHRoKTtpZih0PT1lLmNoaWxkQ291bnQpcmV0dXJuIG51bGw7bGV0IHI9dGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV0scz1lLmNoaWxkKHQpO3JldHVybiByP2UuY2hpbGQodCkuY3V0KHIpOnN9Z2V0IG5vZGVCZWZvcmUoKXtsZXQgZT10aGlzLmluZGV4KHRoaXMuZGVwdGgpLHQ9dGhpcy5wb3MtdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV07cmV0dXJuIHQ/dGhpcy5wYXJlbnQuY2hpbGQoZSkuY3V0KDAsdCk6ZT09MD9udWxsOnRoaXMucGFyZW50LmNoaWxkKGUtMSl9cG9zQXRJbmRleChlLHQpe3Q9dGhpcy5yZXNvbHZlRGVwdGgodCk7bGV0IHI9dGhpcy5wYXRoW3QqM10scz10PT0wPzA6dGhpcy5wYXRoW3QqMy0xXSsxO2ZvcihsZXQgaT0wO2k8ZTtpKyspcys9ci5jaGlsZChpKS5ub2RlU2l6ZTtyZXR1cm4gc31tYXJrcygpe2xldCBlPXRoaXMucGFyZW50LHQ9dGhpcy5pbmRleCgpO2lmKGUuY29udGVudC5zaXplPT0wKXJldHVybiBXLm5vbmU7aWYodGhpcy50ZXh0T2Zmc2V0KXJldHVybiBlLmNoaWxkKHQpLm1hcmtzO2xldCByPWUubWF5YmVDaGlsZCh0LTEpLHM9ZS5tYXliZUNoaWxkKHQpO2lmKCFyKXtsZXQgbD1yO3I9cyxzPWx9bGV0IGk9ci5tYXJrcztmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKylpW29dLnR5cGUuc3BlYy5pbmNsdXNpdmU9PT0hMSYmKCFzfHwhaVtvXS5pc0luU2V0KHMubWFya3MpKSYmKGk9aVtvLS1dLnJlbW92ZUZyb21TZXQoaSkpO3JldHVybiBpfW1hcmtzQWNyb3NzKGUpe2xldCB0PXRoaXMucGFyZW50Lm1heWJlQ2hpbGQodGhpcy5pbmRleCgpKTtpZighdHx8IXQuaXNJbmxpbmUpcmV0dXJuIG51bGw7bGV0IHI9dC5tYXJrcyxzPWUucGFyZW50Lm1heWJlQ2hpbGQoZS5pbmRleCgpKTtmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylyW2ldLnR5cGUuc3BlYy5pbmNsdXNpdmU9PT0hMSYmKCFzfHwhcltpXS5pc0luU2V0KHMubWFya3MpKSYmKHI9cltpLS1dLnJlbW92ZUZyb21TZXQocikpO3JldHVybiByfXNoYXJlZERlcHRoKGUpe2ZvcihsZXQgdD10aGlzLmRlcHRoO3Q+MDt0LS0paWYodGhpcy5zdGFydCh0KTw9ZSYmdGhpcy5lbmQodCk+PWUpcmV0dXJuIHQ7cmV0dXJuIDB9YmxvY2tSYW5nZShlPXRoaXMsdCl7aWYoZS5wb3M8dGhpcy5wb3MpcmV0dXJuIGUuYmxvY2tSYW5nZSh0aGlzKTtmb3IobGV0IHI9dGhpcy5kZXB0aC0odGhpcy5wYXJlbnQuaW5saW5lQ29udGVudHx8dGhpcy5wb3M9PWUucG9zPzE6MCk7cj49MDtyLS0paWYoZS5wb3M8PXRoaXMuZW5kKHIpJiYoIXR8fHQodGhpcy5ub2RlKHIpKSkpcmV0dXJuIG5ldyBIcih0aGlzLGUscik7cmV0dXJuIG51bGx9c2FtZVBhcmVudChlKXtyZXR1cm4gdGhpcy5wb3MtdGhpcy5wYXJlbnRPZmZzZXQ9PWUucG9zLWUucGFyZW50T2Zmc2V0fW1heChlKXtyZXR1cm4gZS5wb3M+dGhpcy5wb3M/ZTp0aGlzfW1pbihlKXtyZXR1cm4gZS5wb3M8dGhpcy5wb3M/ZTp0aGlzfXRvU3RyaW5nKCl7bGV0IGU9IiI7Zm9yKGxldCB0PTE7dDw9dGhpcy5kZXB0aDt0KyspZSs9KGU/Ii8iOiIiKSt0aGlzLm5vZGUodCkudHlwZS5uYW1lKyJfIit0aGlzLmluZGV4KHQtMSk7cmV0dXJuIGUrIjoiK3RoaXMucGFyZW50T2Zmc2V0fXN0YXRpYyByZXNvbHZlKGUsdCl7aWYoISh0Pj0wJiZ0PD1lLmNvbnRlbnQuc2l6ZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlBvc2l0aW9uICIrdCsiIG91dCBvZiByYW5nZSIpO2xldCByPVtdLHM9MCxpPXQ7Zm9yKGxldCBvPWU7Oyl7bGV0e2luZGV4Omwsb2Zmc2V0OmF9PW8uY29udGVudC5maW5kSW5kZXgoaSksYz1pLWE7aWYoci5wdXNoKG8sbCxzK2EpLCFjfHwobz1vLmNoaWxkKGwpLG8uaXNUZXh0KSlicmVhaztpPWMtMSxzKz1hKzF9cmV0dXJuIG5ldyBXbih0LHIsaSl9c3RhdGljIHJlc29sdmVDYWNoZWQoZSx0KXtsZXQgcj1nbC5nZXQoZSk7aWYocilmb3IobGV0IGk9MDtpPHIuZWx0cy5sZW5ndGg7aSsrKXtsZXQgbz1yLmVsdHNbaV07aWYoby5wb3M9PXQpcmV0dXJuIG99ZWxzZSBnbC5zZXQoZSxyPW5ldyBHaCk7bGV0IHM9ci5lbHRzW3IuaV09V24ucmVzb2x2ZShlLHQpO3JldHVybiByLmk9KHIuaSsxKSVRaCxzfX1jbGFzcyBHaHtjb25zdHJ1Y3Rvcigpe3RoaXMuZWx0cz1bXSx0aGlzLmk9MH19Y29uc3QgUWg9MTIsZ2w9bmV3IFdlYWtNYXA7Y2xhc3MgSHJ7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuJGZyb209ZSx0aGlzLiR0bz10LHRoaXMuZGVwdGg9cn1nZXQgc3RhcnQoKXtyZXR1cm4gdGhpcy4kZnJvbS5iZWZvcmUodGhpcy5kZXB0aCsxKX1nZXQgZW5kKCl7cmV0dXJuIHRoaXMuJHRvLmFmdGVyKHRoaXMuZGVwdGgrMSl9Z2V0IHBhcmVudCgpe3JldHVybiB0aGlzLiRmcm9tLm5vZGUodGhpcy5kZXB0aCl9Z2V0IHN0YXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy4kZnJvbS5pbmRleCh0aGlzLmRlcHRoKX1nZXQgZW5kSW5kZXgoKXtyZXR1cm4gdGhpcy4kdG8uaW5kZXhBZnRlcih0aGlzLmRlcHRoKX19Y29uc3QgWGg9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBMZXtjb25zdHJ1Y3RvcihlLHQscixzPVcubm9uZSl7dGhpcy50eXBlPWUsdGhpcy5hdHRycz10LHRoaXMubWFya3M9cyx0aGlzLmNvbnRlbnQ9cnx8Uy5lbXB0eX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jb250ZW50LmNvbnRlbnR9Z2V0IG5vZGVTaXplKCl7cmV0dXJuIHRoaXMuaXNMZWFmPzE6Mit0aGlzLmNvbnRlbnQuc2l6ZX1nZXQgY2hpbGRDb3VudCgpe3JldHVybiB0aGlzLmNvbnRlbnQuY2hpbGRDb3VudH1jaGlsZChlKXtyZXR1cm4gdGhpcy5jb250ZW50LmNoaWxkKGUpfW1heWJlQ2hpbGQoZSl7cmV0dXJuIHRoaXMuY29udGVudC5tYXliZUNoaWxkKGUpfWZvckVhY2goZSl7dGhpcy5jb250ZW50LmZvckVhY2goZSl9bm9kZXNCZXR3ZWVuKGUsdCxyLHM9MCl7dGhpcy5jb250ZW50Lm5vZGVzQmV0d2VlbihlLHQscixzLHRoaXMpfWRlc2NlbmRhbnRzKGUpe3RoaXMubm9kZXNCZXR3ZWVuKDAsdGhpcy5jb250ZW50LnNpemUsZSl9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuaXNMZWFmJiZ0aGlzLnR5cGUuc3BlYy5sZWFmVGV4dD90aGlzLnR5cGUuc3BlYy5sZWFmVGV4dCh0aGlzKTp0aGlzLnRleHRCZXR3ZWVuKDAsdGhpcy5jb250ZW50LnNpemUsIiIpfXRleHRCZXR3ZWVuKGUsdCxyLHMpe3JldHVybiB0aGlzLmNvbnRlbnQudGV4dEJldHdlZW4oZSx0LHIscyl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jb250ZW50LmZpcnN0Q2hpbGR9Z2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNvbnRlbnQubGFzdENoaWxkfWVxKGUpe3JldHVybiB0aGlzPT1lfHx0aGlzLnNhbWVNYXJrdXAoZSkmJnRoaXMuY29udGVudC5lcShlLmNvbnRlbnQpfXNhbWVNYXJrdXAoZSl7cmV0dXJuIHRoaXMuaGFzTWFya3VwKGUudHlwZSxlLmF0dHJzLGUubWFya3MpfWhhc01hcmt1cChlLHQscil7cmV0dXJuIHRoaXMudHlwZT09ZSYmJHIodGhpcy5hdHRycyx0fHxlLmRlZmF1bHRBdHRyc3x8WGgpJiZXLnNhbWVTZXQodGhpcy5tYXJrcyxyfHxXLm5vbmUpfWNvcHkoZT1udWxsKXtyZXR1cm4gZT09dGhpcy5jb250ZW50P3RoaXM6bmV3IExlKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9bWFyayhlKXtyZXR1cm4gZT09dGhpcy5tYXJrcz90aGlzOm5ldyBMZSh0aGlzLnR5cGUsdGhpcy5hdHRycyx0aGlzLmNvbnRlbnQsZSl9Y3V0KGUsdD10aGlzLmNvbnRlbnQuc2l6ZSl7cmV0dXJuIGU9PTAmJnQ9PXRoaXMuY29udGVudC5zaXplP3RoaXM6dGhpcy5jb3B5KHRoaXMuY29udGVudC5jdXQoZSx0KSl9c2xpY2UoZSx0PXRoaXMuY29udGVudC5zaXplLHI9ITEpe2lmKGU9PXQpcmV0dXJuIEUuZW1wdHk7bGV0IHM9dGhpcy5yZXNvbHZlKGUpLGk9dGhpcy5yZXNvbHZlKHQpLG89cj8wOnMuc2hhcmVkRGVwdGgodCksbD1zLnN0YXJ0KG8pLGM9cy5ub2RlKG8pLmNvbnRlbnQuY3V0KHMucG9zLWwsaS5wb3MtbCk7cmV0dXJuIG5ldyBFKGMscy5kZXB0aC1vLGkuZGVwdGgtbyl9cmVwbGFjZShlLHQscil7cmV0dXJuIEtoKHRoaXMucmVzb2x2ZShlKSx0aGlzLnJlc29sdmUodCkscil9bm9kZUF0KGUpe2ZvcihsZXQgdD10aGlzOzspe2xldHtpbmRleDpyLG9mZnNldDpzfT10LmNvbnRlbnQuZmluZEluZGV4KGUpO2lmKHQ9dC5tYXliZUNoaWxkKHIpLCF0KXJldHVybiBudWxsO2lmKHM9PWV8fHQuaXNUZXh0KXJldHVybiB0O2UtPXMrMX19Y2hpbGRBZnRlcihlKXtsZXR7aW5kZXg6dCxvZmZzZXQ6cn09dGhpcy5jb250ZW50LmZpbmRJbmRleChlKTtyZXR1cm57bm9kZTp0aGlzLmNvbnRlbnQubWF5YmVDaGlsZCh0KSxpbmRleDp0LG9mZnNldDpyfX1jaGlsZEJlZm9yZShlKXtpZihlPT0wKXJldHVybntub2RlOm51bGwsaW5kZXg6MCxvZmZzZXQ6MH07bGV0e2luZGV4OnQsb2Zmc2V0OnJ9PXRoaXMuY29udGVudC5maW5kSW5kZXgoZSk7aWYocjxlKXJldHVybntub2RlOnRoaXMuY29udGVudC5jaGlsZCh0KSxpbmRleDp0LG9mZnNldDpyfTtsZXQgcz10aGlzLmNvbnRlbnQuY2hpbGQodC0xKTtyZXR1cm57bm9kZTpzLGluZGV4OnQtMSxvZmZzZXQ6ci1zLm5vZGVTaXplfX1yZXNvbHZlKGUpe3JldHVybiBXbi5yZXNvbHZlQ2FjaGVkKHRoaXMsZSl9cmVzb2x2ZU5vQ2FjaGUoZSl7cmV0dXJuIFduLnJlc29sdmUodGhpcyxlKX1yYW5nZUhhc01hcmsoZSx0LHIpe2xldCBzPSExO3JldHVybiB0PmUmJnRoaXMubm9kZXNCZXR3ZWVuKGUsdCxpPT4oci5pc0luU2V0KGkubWFya3MpJiYocz0hMCksIXMpKSxzfWdldCBpc0Jsb2NrKCl7cmV0dXJuIHRoaXMudHlwZS5pc0Jsb2NrfWdldCBpc1RleHRibG9jaygpe3JldHVybiB0aGlzLnR5cGUuaXNUZXh0YmxvY2t9Z2V0IGlubGluZUNvbnRlbnQoKXtyZXR1cm4gdGhpcy50eXBlLmlubGluZUNvbnRlbnR9Z2V0IGlzSW5saW5lKCl7cmV0dXJuIHRoaXMudHlwZS5pc0lubGluZX1nZXQgaXNUZXh0KCl7cmV0dXJuIHRoaXMudHlwZS5pc1RleHR9Z2V0IGlzTGVhZigpe3JldHVybiB0aGlzLnR5cGUuaXNMZWFmfWdldCBpc0F0b20oKXtyZXR1cm4gdGhpcy50eXBlLmlzQXRvbX10b1N0cmluZygpe2lmKHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcpcmV0dXJuIHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcodGhpcyk7bGV0IGU9dGhpcy50eXBlLm5hbWU7cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZSs9IigiK3RoaXMuY29udGVudC50b1N0cmluZ0lubmVyKCkrIikiKSxNYyh0aGlzLm1hcmtzLGUpfWNvbnRlbnRNYXRjaEF0KGUpe2xldCB0PXRoaXMudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudCh0aGlzLmNvbnRlbnQsMCxlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkNhbGxlZCBjb250ZW50TWF0Y2hBdCBvbiBhIG5vZGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQiKTtyZXR1cm4gdH1jYW5SZXBsYWNlKGUsdCxyPVMuZW1wdHkscz0wLGk9ci5jaGlsZENvdW50KXtsZXQgbz10aGlzLmNvbnRlbnRNYXRjaEF0KGUpLm1hdGNoRnJhZ21lbnQocixzLGkpLGw9byYmby5tYXRjaEZyYWdtZW50KHRoaXMuY29udGVudCx0KTtpZighbHx8IWwudmFsaWRFbmQpcmV0dXJuITE7Zm9yKGxldCBhPXM7YTxpO2ErKylpZighdGhpcy50eXBlLmFsbG93c01hcmtzKHIuY2hpbGQoYSkubWFya3MpKXJldHVybiExO3JldHVybiEwfWNhblJlcGxhY2VXaXRoKGUsdCxyLHMpe2lmKHMmJiF0aGlzLnR5cGUuYWxsb3dzTWFya3MocykpcmV0dXJuITE7bGV0IGk9dGhpcy5jb250ZW50TWF0Y2hBdChlKS5tYXRjaFR5cGUociksbz1pJiZpLm1hdGNoRnJhZ21lbnQodGhpcy5jb250ZW50LHQpO3JldHVybiBvP28udmFsaWRFbmQ6ITF9Y2FuQXBwZW5kKGUpe3JldHVybiBlLmNvbnRlbnQuc2l6ZT90aGlzLmNhblJlcGxhY2UodGhpcy5jaGlsZENvdW50LHRoaXMuY2hpbGRDb3VudCxlLmNvbnRlbnQpOnRoaXMudHlwZS5jb21wYXRpYmxlQ29udGVudChlLnR5cGUpfWNoZWNrKCl7dGhpcy50eXBlLmNoZWNrQ29udGVudCh0aGlzLmNvbnRlbnQpLHRoaXMudHlwZS5jaGVja0F0dHJzKHRoaXMuYXR0cnMpO2xldCBlPVcubm9uZTtmb3IobGV0IHQ9MDt0PHRoaXMubWFya3MubGVuZ3RoO3QrKyl7bGV0IHI9dGhpcy5tYXJrc1t0XTtyLnR5cGUuY2hlY2tBdHRycyhyLmF0dHJzKSxlPXIuYWRkVG9TZXQoZSl9aWYoIVcuc2FtZVNldChlLHRoaXMubWFya3MpKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIGNvbGxlY3Rpb24gb2YgbWFya3MgZm9yIG5vZGUgJHt0aGlzLnR5cGUubmFtZX06ICR7dGhpcy5tYXJrcy5tYXAodD0+dC50eXBlLm5hbWUpfWApO3RoaXMuY29udGVudC5mb3JFYWNoKHQ9PnQuY2hlY2soKSl9dG9KU09OKCl7bGV0IGU9e3R5cGU6dGhpcy50eXBlLm5hbWV9O2ZvcihsZXQgdCBpbiB0aGlzLmF0dHJzKXtlLmF0dHJzPXRoaXMuYXR0cnM7YnJlYWt9cmV0dXJuIHRoaXMuY29udGVudC5zaXplJiYoZS5jb250ZW50PXRoaXMuY29udGVudC50b0pTT04oKSksdGhpcy5tYXJrcy5sZW5ndGgmJihlLm1hcmtzPXRoaXMubWFya3MubWFwKHQ9PnQudG9KU09OKCkpKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlLmZyb21KU09OIik7bGV0IHI7aWYodC5tYXJrcyl7aWYoIUFycmF5LmlzQXJyYXkodC5tYXJrcykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbWFyayBkYXRhIGZvciBOb2RlLmZyb21KU09OIik7cj10Lm1hcmtzLm1hcChlLm1hcmtGcm9tSlNPTil9aWYodC50eXBlPT0idGV4dCIpe2lmKHR5cGVvZiB0LnRleHQhPSJzdHJpbmciKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHRleHQgbm9kZSBpbiBKU09OIik7cmV0dXJuIGUudGV4dCh0LnRleHQscil9bGV0IHM9Uy5mcm9tSlNPTihlLHQuY29udGVudCksaT1lLm5vZGVUeXBlKHQudHlwZSkuY3JlYXRlKHQuYXR0cnMscyxyKTtyZXR1cm4gaS50eXBlLmNoZWNrQXR0cnMoaS5hdHRycyksaX19TGUucHJvdG90eXBlLnRleHQ9dm9pZCAwO2NsYXNzIEZyIGV4dGVuZHMgTGV7Y29uc3RydWN0b3IoZSx0LHIscyl7aWYoc3VwZXIoZSx0LG51bGwscyksIXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkVtcHR5IHRleHQgbm9kZXMgYXJlIG5vdCBhbGxvd2VkIik7dGhpcy50ZXh0PXJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy50eXBlLnNwZWMudG9EZWJ1Z1N0cmluZz90aGlzLnR5cGUuc3BlYy50b0RlYnVnU3RyaW5nKHRoaXMpOk1jKHRoaXMubWFya3MsSlNPTi5zdHJpbmdpZnkodGhpcy50ZXh0KSl9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMudGV4dH10ZXh0QmV0d2VlbihlLHQpe3JldHVybiB0aGlzLnRleHQuc2xpY2UoZSx0KX1nZXQgbm9kZVNpemUoKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0aH1tYXJrKGUpe3JldHVybiBlPT10aGlzLm1hcmtzP3RoaXM6bmV3IEZyKHRoaXMudHlwZSx0aGlzLmF0dHJzLHRoaXMudGV4dCxlKX13aXRoVGV4dChlKXtyZXR1cm4gZT09dGhpcy50ZXh0P3RoaXM6bmV3IEZyKHRoaXMudHlwZSx0aGlzLmF0dHJzLGUsdGhpcy5tYXJrcyl9Y3V0KGU9MCx0PXRoaXMudGV4dC5sZW5ndGgpe3JldHVybiBlPT0wJiZ0PT10aGlzLnRleHQubGVuZ3RoP3RoaXM6dGhpcy53aXRoVGV4dCh0aGlzLnRleHQuc2xpY2UoZSx0KSl9ZXEoZSl7cmV0dXJuIHRoaXMuc2FtZU1hcmt1cChlKSYmdGhpcy50ZXh0PT1lLnRleHR9dG9KU09OKCl7bGV0IGU9c3VwZXIudG9KU09OKCk7cmV0dXJuIGUudGV4dD10aGlzLnRleHQsZX19ZnVuY3Rpb24gTWMobixlKXtmb3IobGV0IHQ9bi5sZW5ndGgtMTt0Pj0wO3QtLSllPW5bdF0udHlwZS5uYW1lKyIoIitlKyIpIjtyZXR1cm4gZX1jbGFzcyBGdHtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbGlkRW5kPWUsdGhpcy5uZXh0PVtdLHRoaXMud3JhcENhY2hlPVtdfXN0YXRpYyBwYXJzZShlLHQpe2xldCByPW5ldyBZaChlLHQpO2lmKHIubmV4dD09bnVsbClyZXR1cm4gRnQuZW1wdHk7bGV0IHM9RWMocik7ci5uZXh0JiZyLmVycigiVW5leHBlY3RlZCB0cmFpbGluZyB0ZXh0Iik7bGV0IGk9b2Yoc2YocykpO3JldHVybiBsZihpLHIpLGl9bWF0Y2hUeXBlKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5uZXh0Lmxlbmd0aDt0KyspaWYodGhpcy5uZXh0W3RdLnR5cGU9PWUpcmV0dXJuIHRoaXMubmV4dFt0XS5uZXh0O3JldHVybiBudWxsfW1hdGNoRnJhZ21lbnQoZSx0PTAscj1lLmNoaWxkQ291bnQpe2xldCBzPXRoaXM7Zm9yKGxldCBpPXQ7cyYmaTxyO2krKylzPXMubWF0Y2hUeXBlKGUuY2hpbGQoaSkudHlwZSk7cmV0dXJuIHN9Z2V0IGlubGluZUNvbnRlbnQoKXtyZXR1cm4gdGhpcy5uZXh0Lmxlbmd0aCE9MCYmdGhpcy5uZXh0WzBdLnR5cGUuaXNJbmxpbmV9Z2V0IGRlZmF1bHRUeXBlKCl7Zm9yKGxldCBlPTA7ZTx0aGlzLm5leHQubGVuZ3RoO2UrKyl7bGV0e3R5cGU6dH09dGhpcy5uZXh0W2VdO2lmKCEodC5pc1RleHR8fHQuaGFzUmVxdWlyZWRBdHRycygpKSlyZXR1cm4gdH1yZXR1cm4gbnVsbH1jb21wYXRpYmxlKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5uZXh0Lmxlbmd0aDt0KyspZm9yKGxldCByPTA7cjxlLm5leHQubGVuZ3RoO3IrKylpZih0aGlzLm5leHRbdF0udHlwZT09ZS5uZXh0W3JdLnR5cGUpcmV0dXJuITA7cmV0dXJuITF9ZmlsbEJlZm9yZShlLHQ9ITEscj0wKXtsZXQgcz1bdGhpc107ZnVuY3Rpb24gaShvLGwpe2xldCBhPW8ubWF0Y2hGcmFnbWVudChlLHIpO2lmKGEmJighdHx8YS52YWxpZEVuZCkpcmV0dXJuIFMuZnJvbShsLm1hcChjPT5jLmNyZWF0ZUFuZEZpbGwoKSkpO2ZvcihsZXQgYz0wO2M8by5uZXh0Lmxlbmd0aDtjKyspe2xldHt0eXBlOnUsbmV4dDpkfT1vLm5leHRbY107aWYoISh1LmlzVGV4dHx8dS5oYXNSZXF1aXJlZEF0dHJzKCkpJiZzLmluZGV4T2YoZCk9PS0xKXtzLnB1c2goZCk7bGV0IGg9aShkLGwuY29uY2F0KHUpKTtpZihoKXJldHVybiBofX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0aGlzLFtdKX1maW5kV3JhcHBpbmcoZSl7Zm9yKGxldCByPTA7cjx0aGlzLndyYXBDYWNoZS5sZW5ndGg7cis9MilpZih0aGlzLndyYXBDYWNoZVtyXT09ZSlyZXR1cm4gdGhpcy53cmFwQ2FjaGVbcisxXTtsZXQgdD10aGlzLmNvbXB1dGVXcmFwcGluZyhlKTtyZXR1cm4gdGhpcy53cmFwQ2FjaGUucHVzaChlLHQpLHR9Y29tcHV0ZVdyYXBwaW5nKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCkscj1be21hdGNoOnRoaXMsdHlwZTpudWxsLHZpYTpudWxsfV07Zm9yKDtyLmxlbmd0aDspe2xldCBzPXIuc2hpZnQoKSxpPXMubWF0Y2g7aWYoaS5tYXRjaFR5cGUoZSkpe2xldCBvPVtdO2ZvcihsZXQgbD1zO2wudHlwZTtsPWwudmlhKW8ucHVzaChsLnR5cGUpO3JldHVybiBvLnJldmVyc2UoKX1mb3IobGV0IG89MDtvPGkubmV4dC5sZW5ndGg7bysrKXtsZXR7dHlwZTpsLG5leHQ6YX09aS5uZXh0W29dOyFsLmlzTGVhZiYmIWwuaGFzUmVxdWlyZWRBdHRycygpJiYhKGwubmFtZSBpbiB0KSYmKCFzLnR5cGV8fGEudmFsaWRFbmQpJiYoci5wdXNoKHttYXRjaDpsLmNvbnRlbnRNYXRjaCx0eXBlOmwsdmlhOnN9KSx0W2wubmFtZV09ITApfX1yZXR1cm4gbnVsbH1nZXQgZWRnZUNvdW50KCl7cmV0dXJuIHRoaXMubmV4dC5sZW5ndGh9ZWRnZShlKXtpZihlPj10aGlzLm5leHQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSdzIG5vICR7ZX10aCBlZGdlIGluIHRoaXMgY29udGVudCBtYXRjaGApO3JldHVybiB0aGlzLm5leHRbZV19dG9TdHJpbmcoKXtsZXQgZT1bXTtmdW5jdGlvbiB0KHIpe2UucHVzaChyKTtmb3IobGV0IHM9MDtzPHIubmV4dC5sZW5ndGg7cysrKWUuaW5kZXhPZihyLm5leHRbc10ubmV4dCk9PS0xJiZ0KHIubmV4dFtzXS5uZXh0KX1yZXR1cm4gdCh0aGlzKSxlLm1hcCgocixzKT0+e2xldCBpPXMrKHIudmFsaWRFbmQ/IioiOiIgIikrIiAiO2ZvcihsZXQgbz0wO288ci5uZXh0Lmxlbmd0aDtvKyspaSs9KG8/IiwgIjoiIikrci5uZXh0W29dLnR5cGUubmFtZSsiLT4iK2UuaW5kZXhPZihyLm5leHRbb10ubmV4dCk7cmV0dXJuIGl9KS5qb2luKGAKYCl9fUZ0LmVtcHR5PW5ldyBGdCghMCk7Y2xhc3MgWWh7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmluZz1lLHRoaXMubm9kZVR5cGVzPXQsdGhpcy5pbmxpbmU9bnVsbCx0aGlzLnBvcz0wLHRoaXMudG9rZW5zPWUuc3BsaXQoL1xzKig/PVxifFxXfCQpLyksdGhpcy50b2tlbnNbdGhpcy50b2tlbnMubGVuZ3RoLTFdPT0iIiYmdGhpcy50b2tlbnMucG9wKCksdGhpcy50b2tlbnNbMF09PSIiJiZ0aGlzLnRva2Vucy5zaGlmdCgpfWdldCBuZXh0KCl7cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMucG9zXX1lYXQoZSl7cmV0dXJuIHRoaXMubmV4dD09ZSYmKHRoaXMucG9zKyt8fCEwKX1lcnIoZSl7dGhyb3cgbmV3IFN5bnRheEVycm9yKGUrIiAoaW4gY29udGVudCBleHByZXNzaW9uICciK3RoaXMuc3RyaW5nKyInKSIpfX1mdW5jdGlvbiBFYyhuKXtsZXQgZT1bXTtkbyBlLnB1c2goWmgobikpO3doaWxlKG4uZWF0KCJ8IikpO3JldHVybiBlLmxlbmd0aD09MT9lWzBdOnt0eXBlOiJjaG9pY2UiLGV4cHJzOmV9fWZ1bmN0aW9uIFpoKG4pe2xldCBlPVtdO2RvIGUucHVzaChlZihuKSk7d2hpbGUobi5uZXh0JiZuLm5leHQhPSIpIiYmbi5uZXh0IT0ifCIpO3JldHVybiBlLmxlbmd0aD09MT9lWzBdOnt0eXBlOiJzZXEiLGV4cHJzOmV9fWZ1bmN0aW9uIGVmKG4pe2xldCBlPXJmKG4pO2Zvcig7OylpZihuLmVhdCgiKyIpKWU9e3R5cGU6InBsdXMiLGV4cHI6ZX07ZWxzZSBpZihuLmVhdCgiKiIpKWU9e3R5cGU6InN0YXIiLGV4cHI6ZX07ZWxzZSBpZihuLmVhdCgiPyIpKWU9e3R5cGU6Im9wdCIsZXhwcjplfTtlbHNlIGlmKG4uZWF0KCJ7IikpZT10ZihuLGUpO2Vsc2UgYnJlYWs7cmV0dXJuIGV9ZnVuY3Rpb24geWwobil7L1xELy50ZXN0KG4ubmV4dCkmJm4uZXJyKCJFeHBlY3RlZCBudW1iZXIsIGdvdCAnIituLm5leHQrIiciKTtsZXQgZT1OdW1iZXIobi5uZXh0KTtyZXR1cm4gbi5wb3MrKyxlfWZ1bmN0aW9uIHRmKG4sZSl7bGV0IHQ9eWwobikscj10O3JldHVybiBuLmVhdCgiLCIpJiYobi5uZXh0IT0ifSI/cj15bChuKTpyPS0xKSxuLmVhdCgifSIpfHxuLmVycigiVW5jbG9zZWQgYnJhY2VkIHJhbmdlIikse3R5cGU6InJhbmdlIixtaW46dCxtYXg6cixleHByOmV9fWZ1bmN0aW9uIG5mKG4sZSl7bGV0IHQ9bi5ub2RlVHlwZXMscj10W2VdO2lmKHIpcmV0dXJuW3JdO2xldCBzPVtdO2ZvcihsZXQgaSBpbiB0KXtsZXQgbz10W2ldO28uaXNJbkdyb3VwKGUpJiZzLnB1c2gobyl9cmV0dXJuIHMubGVuZ3RoPT0wJiZuLmVycigiTm8gbm9kZSB0eXBlIG9yIGdyb3VwICciK2UrIicgZm91bmQiKSxzfWZ1bmN0aW9uIHJmKG4pe2lmKG4uZWF0KCIoIikpe2xldCBlPUVjKG4pO3JldHVybiBuLmVhdCgiKSIpfHxuLmVycigiTWlzc2luZyBjbG9zaW5nIHBhcmVuIiksZX1lbHNlIGlmKC9cVy8udGVzdChuLm5leHQpKW4uZXJyKCJVbmV4cGVjdGVkIHRva2VuICciK24ubmV4dCsiJyIpO2Vsc2V7bGV0IGU9bmYobixuLm5leHQpLm1hcCh0PT4obi5pbmxpbmU9PW51bGw/bi5pbmxpbmU9dC5pc0lubGluZTpuLmlubGluZSE9dC5pc0lubGluZSYmbi5lcnIoIk1peGluZyBpbmxpbmUgYW5kIGJsb2NrIGNvbnRlbnQiKSx7dHlwZToibmFtZSIsdmFsdWU6dH0pKTtyZXR1cm4gbi5wb3MrKyxlLmxlbmd0aD09MT9lWzBdOnt0eXBlOiJjaG9pY2UiLGV4cHJzOmV9fX1mdW5jdGlvbiBzZihuKXtsZXQgZT1bW11dO3JldHVybiBzKGkobiwwKSx0KCkpLGU7ZnVuY3Rpb24gdCgpe3JldHVybiBlLnB1c2goW10pLTF9ZnVuY3Rpb24gcihvLGwsYSl7bGV0IGM9e3Rlcm06YSx0bzpsfTtyZXR1cm4gZVtvXS5wdXNoKGMpLGN9ZnVuY3Rpb24gcyhvLGwpe28uZm9yRWFjaChhPT5hLnRvPWwpfWZ1bmN0aW9uIGkobyxsKXtpZihvLnR5cGU9PSJjaG9pY2UiKXJldHVybiBvLmV4cHJzLnJlZHVjZSgoYSxjKT0+YS5jb25jYXQoaShjLGwpKSxbXSk7aWYoby50eXBlPT0ic2VxIilmb3IobGV0IGE9MDs7YSsrKXtsZXQgYz1pKG8uZXhwcnNbYV0sbCk7aWYoYT09by5leHBycy5sZW5ndGgtMSlyZXR1cm4gYztzKGMsbD10KCkpfWVsc2UgaWYoby50eXBlPT0ic3RhciIpe2xldCBhPXQoKTtyZXR1cm4gcihsLGEpLHMoaShvLmV4cHIsYSksYSksW3IoYSldfWVsc2UgaWYoby50eXBlPT0icGx1cyIpe2xldCBhPXQoKTtyZXR1cm4gcyhpKG8uZXhwcixsKSxhKSxzKGkoby5leHByLGEpLGEpLFtyKGEpXX1lbHNle2lmKG8udHlwZT09Im9wdCIpcmV0dXJuW3IobCldLmNvbmNhdChpKG8uZXhwcixsKSk7aWYoby50eXBlPT0icmFuZ2UiKXtsZXQgYT1sO2ZvcihsZXQgYz0wO2M8by5taW47YysrKXtsZXQgdT10KCk7cyhpKG8uZXhwcixhKSx1KSxhPXV9aWYoby5tYXg9PS0xKXMoaShvLmV4cHIsYSksYSk7ZWxzZSBmb3IobGV0IGM9by5taW47YzxvLm1heDtjKyspe2xldCB1PXQoKTtyKGEsdSkscyhpKG8uZXhwcixhKSx1KSxhPXV9cmV0dXJuW3IoYSldfWVsc2V7aWYoby50eXBlPT0ibmFtZSIpcmV0dXJuW3IobCx2b2lkIDAsby52YWx1ZSldO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBleHByIHR5cGUiKX19fX1mdW5jdGlvbiBBYyhuLGUpe3JldHVybiBlLW59ZnVuY3Rpb24ga2wobixlKXtsZXQgdD1bXTtyZXR1cm4gcihlKSx0LnNvcnQoQWMpO2Z1bmN0aW9uIHIocyl7bGV0IGk9bltzXTtpZihpLmxlbmd0aD09MSYmIWlbMF0udGVybSlyZXR1cm4gcihpWzBdLnRvKTt0LnB1c2gocyk7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2xldHt0ZXJtOmwsdG86YX09aVtvXTshbCYmdC5pbmRleE9mKGEpPT0tMSYmcihhKX19fWZ1bmN0aW9uIG9mKG4pe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIHQoa2wobiwwKSk7ZnVuY3Rpb24gdChyKXtsZXQgcz1bXTtyLmZvckVhY2gobz0+e25bb10uZm9yRWFjaCgoe3Rlcm06bCx0bzphfSk9PntpZighbClyZXR1cm47bGV0IGM7Zm9yKGxldCB1PTA7dTxzLmxlbmd0aDt1Kyspc1t1XVswXT09bCYmKGM9c1t1XVsxXSk7a2wobixhKS5mb3JFYWNoKHU9PntjfHxzLnB1c2goW2wsYz1bXV0pLGMuaW5kZXhPZih1KT09LTEmJmMucHVzaCh1KX0pfSl9KTtsZXQgaT1lW3Iuam9pbigiLCIpXT1uZXcgRnQoci5pbmRleE9mKG4ubGVuZ3RoLTEpPi0xKTtmb3IobGV0IG89MDtvPHMubGVuZ3RoO28rKyl7bGV0IGw9c1tvXVsxXS5zb3J0KEFjKTtpLm5leHQucHVzaCh7dHlwZTpzW29dWzBdLG5leHQ6ZVtsLmpvaW4oIiwiKV18fHQobCl9KX1yZXR1cm4gaX19ZnVuY3Rpb24gbGYobixlKXtmb3IobGV0IHQ9MCxyPVtuXTt0PHIubGVuZ3RoO3QrKyl7bGV0IHM9clt0XSxpPSFzLnZhbGlkRW5kLG89W107Zm9yKGxldCBsPTA7bDxzLm5leHQubGVuZ3RoO2wrKyl7bGV0e3R5cGU6YSxuZXh0OmN9PXMubmV4dFtsXTtvLnB1c2goYS5uYW1lKSxpJiYhKGEuaXNUZXh0fHxhLmhhc1JlcXVpcmVkQXR0cnMoKSkmJihpPSExKSxyLmluZGV4T2YoYyk9PS0xJiZyLnB1c2goYyl9aSYmZS5lcnIoIk9ubHkgbm9uLWdlbmVyYXRhYmxlIG5vZGVzICgiK28uam9pbigiLCAiKSsiKSBpbiBhIHJlcXVpcmVkIHBvc2l0aW9uIChzZWUgaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9ndWlkZS8jZ2VuZXJhdGFibGUpIil9fWZ1bmN0aW9uIE9jKG4pe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIG4pe2xldCByPW5bdF07aWYoIXIuaGFzRGVmYXVsdClyZXR1cm4gbnVsbDtlW3RdPXIuZGVmYXVsdH1yZXR1cm4gZX1mdW5jdGlvbiBOYyhuLGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCByIGluIG4pe2xldCBzPWUmJmVbcl07aWYocz09PXZvaWQgMCl7bGV0IGk9bltyXTtpZihpLmhhc0RlZmF1bHQpcz1pLmRlZmF1bHQ7ZWxzZSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gdmFsdWUgc3VwcGxpZWQgZm9yIGF0dHJpYnV0ZSAiK3IpfXRbcl09c31yZXR1cm4gdH1mdW5jdGlvbiBSYyhuLGUsdCxyKXtmb3IobGV0IHMgaW4gZSlpZighKHMgaW4gbikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFVuc3VwcG9ydGVkIGF0dHJpYnV0ZSAke3N9IGZvciAke3R9IG9mIHR5cGUgJHtzfWApO2ZvcihsZXQgcyBpbiBuKXtsZXQgaT1uW3NdO2kudmFsaWRhdGUmJmkudmFsaWRhdGUoZVtzXSl9fWZ1bmN0aW9uIEljKG4sZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlKWZvcihsZXQgciBpbiBlKXRbcl09bmV3IGNmKG4scixlW3JdKTtyZXR1cm4gdH1sZXQgYmw9Y2xhc3MgRGN7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMubmFtZT1lLHRoaXMuc2NoZW1hPXQsdGhpcy5zcGVjPXIsdGhpcy5tYXJrU2V0PW51bGwsdGhpcy5ncm91cHM9ci5ncm91cD9yLmdyb3VwLnNwbGl0KCIgIik6W10sdGhpcy5hdHRycz1JYyhlLHIuYXR0cnMpLHRoaXMuZGVmYXVsdEF0dHJzPU9jKHRoaXMuYXR0cnMpLHRoaXMuY29udGVudE1hdGNoPW51bGwsdGhpcy5pbmxpbmVDb250ZW50PW51bGwsdGhpcy5pc0Jsb2NrPSEoci5pbmxpbmV8fGU9PSJ0ZXh0IiksdGhpcy5pc1RleHQ9ZT09InRleHQifWdldCBpc0lubGluZSgpe3JldHVybiF0aGlzLmlzQmxvY2t9Z2V0IGlzVGV4dGJsb2NrKCl7cmV0dXJuIHRoaXMuaXNCbG9jayYmdGhpcy5pbmxpbmVDb250ZW50fWdldCBpc0xlYWYoKXtyZXR1cm4gdGhpcy5jb250ZW50TWF0Y2g9PUZ0LmVtcHR5fWdldCBpc0F0b20oKXtyZXR1cm4gdGhpcy5pc0xlYWZ8fCEhdGhpcy5zcGVjLmF0b219aXNJbkdyb3VwKGUpe3JldHVybiB0aGlzLmdyb3Vwcy5pbmRleE9mKGUpPi0xfWdldCB3aGl0ZXNwYWNlKCl7cmV0dXJuIHRoaXMuc3BlYy53aGl0ZXNwYWNlfHwodGhpcy5zcGVjLmNvZGU/InByZSI6Im5vcm1hbCIpfWhhc1JlcXVpcmVkQXR0cnMoKXtmb3IobGV0IGUgaW4gdGhpcy5hdHRycylpZih0aGlzLmF0dHJzW2VdLmlzUmVxdWlyZWQpcmV0dXJuITA7cmV0dXJuITF9Y29tcGF0aWJsZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXM9PWV8fHRoaXMuY29udGVudE1hdGNoLmNvbXBhdGlibGUoZS5jb250ZW50TWF0Y2gpfWNvbXB1dGVBdHRycyhlKXtyZXR1cm4hZSYmdGhpcy5kZWZhdWx0QXR0cnM/dGhpcy5kZWZhdWx0QXR0cnM6TmModGhpcy5hdHRycyxlKX1jcmVhdGUoZT1udWxsLHQscil7aWYodGhpcy5pc1RleHQpdGhyb3cgbmV3IEVycm9yKCJOb2RlVHlwZS5jcmVhdGUgY2FuJ3QgY29uc3RydWN0IHRleHQgbm9kZXMiKTtyZXR1cm4gbmV3IExlKHRoaXMsdGhpcy5jb21wdXRlQXR0cnMoZSksUy5mcm9tKHQpLFcuc2V0RnJvbShyKSl9Y3JlYXRlQ2hlY2tlZChlPW51bGwsdCxyKXtyZXR1cm4gdD1TLmZyb20odCksdGhpcy5jaGVja0NvbnRlbnQodCksbmV3IExlKHRoaXMsdGhpcy5jb21wdXRlQXR0cnMoZSksdCxXLnNldEZyb20ocikpfWNyZWF0ZUFuZEZpbGwoZT1udWxsLHQscil7aWYoZT10aGlzLmNvbXB1dGVBdHRycyhlKSx0PVMuZnJvbSh0KSx0LnNpemUpe2xldCBvPXRoaXMuY29udGVudE1hdGNoLmZpbGxCZWZvcmUodCk7aWYoIW8pcmV0dXJuIG51bGw7dD1vLmFwcGVuZCh0KX1sZXQgcz10aGlzLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KHQpLGk9cyYmcy5maWxsQmVmb3JlKFMuZW1wdHksITApO3JldHVybiBpP25ldyBMZSh0aGlzLGUsdC5hcHBlbmQoaSksVy5zZXRGcm9tKHIpKTpudWxsfXZhbGlkQ29udGVudChlKXtsZXQgdD10aGlzLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KGUpO2lmKCF0fHwhdC52YWxpZEVuZClyZXR1cm4hMTtmb3IobGV0IHI9MDtyPGUuY2hpbGRDb3VudDtyKyspaWYoIXRoaXMuYWxsb3dzTWFya3MoZS5jaGlsZChyKS5tYXJrcykpcmV0dXJuITE7cmV0dXJuITB9Y2hlY2tDb250ZW50KGUpe2lmKCF0aGlzLnZhbGlkQ29udGVudChlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCBjb250ZW50IGZvciBub2RlICR7dGhpcy5uYW1lfTogJHtlLnRvU3RyaW5nKCkuc2xpY2UoMCw1MCl9YCl9Y2hlY2tBdHRycyhlKXtSYyh0aGlzLmF0dHJzLGUsIm5vZGUiLHRoaXMubmFtZSl9YWxsb3dzTWFya1R5cGUoZSl7cmV0dXJuIHRoaXMubWFya1NldD09bnVsbHx8dGhpcy5tYXJrU2V0LmluZGV4T2YoZSk+LTF9YWxsb3dzTWFya3MoZSl7aWYodGhpcy5tYXJrU2V0PT1udWxsKXJldHVybiEwO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCF0aGlzLmFsbG93c01hcmtUeXBlKGVbdF0udHlwZSkpcmV0dXJuITE7cmV0dXJuITB9YWxsb3dlZE1hcmtzKGUpe2lmKHRoaXMubWFya1NldD09bnVsbClyZXR1cm4gZTtsZXQgdDtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl0aGlzLmFsbG93c01hcmtUeXBlKGVbcl0udHlwZSk/dCYmdC5wdXNoKGVbcl0pOnR8fCh0PWUuc2xpY2UoMCxyKSk7cmV0dXJuIHQ/dC5sZW5ndGg/dDpXLm5vbmU6ZX1zdGF0aWMgY29tcGlsZShlLHQpe2xldCByPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5mb3JFYWNoKChpLG8pPT5yW2ldPW5ldyBEYyhpLHQsbykpO2xldCBzPXQuc3BlYy50b3BOb2RlfHwiZG9jIjtpZighcltzXSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgaXRzIHRvcCBub2RlIHR5cGUgKCciK3MrIicpIik7aWYoIXIudGV4dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRXZlcnkgc2NoZW1hIG5lZWRzIGEgJ3RleHQnIHR5cGUiKTtmb3IobGV0IGkgaW4gci50ZXh0LmF0dHJzKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgdGV4dCBub2RlIHR5cGUgc2hvdWxkIG5vdCBoYXZlIGF0dHJpYnV0ZXMiKTtyZXR1cm4gcn19O2Z1bmN0aW9uIGFmKG4sZSx0KXtsZXQgcj10LnNwbGl0KCJ8Iik7cmV0dXJuIHM9PntsZXQgaT1zPT09bnVsbD8ibnVsbCI6dHlwZW9mIHM7aWYoci5pbmRleE9mKGkpPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgJHtyfSBmb3IgYXR0cmlidXRlICR7ZX0gb24gdHlwZSAke259LCBnb3QgJHtpfWApfX1jbGFzcyBjZntjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5oYXNEZWZhdWx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCJkZWZhdWx0IiksdGhpcy5kZWZhdWx0PXIuZGVmYXVsdCx0aGlzLnZhbGlkYXRlPXR5cGVvZiByLnZhbGlkYXRlPT0ic3RyaW5nIj9hZihlLHQsci52YWxpZGF0ZSk6ci52YWxpZGF0ZX1nZXQgaXNSZXF1aXJlZCgpe3JldHVybiF0aGlzLmhhc0RlZmF1bHR9fWNsYXNzIE5ze2NvbnN0cnVjdG9yKGUsdCxyLHMpe3RoaXMubmFtZT1lLHRoaXMucmFuaz10LHRoaXMuc2NoZW1hPXIsdGhpcy5zcGVjPXMsdGhpcy5hdHRycz1JYyhlLHMuYXR0cnMpLHRoaXMuZXhjbHVkZWQ9bnVsbDtsZXQgaT1PYyh0aGlzLmF0dHJzKTt0aGlzLmluc3RhbmNlPWk/bmV3IFcodGhpcyxpKTpudWxsfWNyZWF0ZShlPW51bGwpe3JldHVybiFlJiZ0aGlzLmluc3RhbmNlP3RoaXMuaW5zdGFuY2U6bmV3IFcodGhpcyxOYyh0aGlzLmF0dHJzLGUpKX1zdGF0aWMgY29tcGlsZShlLHQpe2xldCByPU9iamVjdC5jcmVhdGUobnVsbCkscz0wO3JldHVybiBlLmZvckVhY2goKGksbyk9PnJbaV09bmV3IE5zKGkscysrLHQsbykpLHJ9cmVtb3ZlRnJvbVNldChlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLnR5cGU9PXRoaXMmJihlPWUuc2xpY2UoMCx0KS5jb25jYXQoZS5zbGljZSh0KzEpKSx0LS0pO3JldHVybiBlfWlzSW5TZXQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS50eXBlPT10aGlzKXJldHVybiBlW3RdfWNoZWNrQXR0cnMoZSl7UmModGhpcy5hdHRycyxlLCJtYXJrIix0aGlzLm5hbWUpfWV4Y2x1ZGVzKGUpe3JldHVybiB0aGlzLmV4Y2x1ZGVkLmluZGV4T2YoZSk+LTF9fWNsYXNzIExje2NvbnN0cnVjdG9yKGUpe3RoaXMubGluZWJyZWFrUmVwbGFjZW1lbnQ9bnVsbCx0aGlzLmNhY2hlZD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB0PXRoaXMuc3BlYz17fTtmb3IobGV0IHMgaW4gZSl0W3NdPWVbc107dC5ub2Rlcz11ZS5mcm9tKGUubm9kZXMpLHQubWFya3M9dWUuZnJvbShlLm1hcmtzfHx7fSksdGhpcy5ub2Rlcz1ibC5jb21waWxlKHRoaXMuc3BlYy5ub2Rlcyx0aGlzKSx0aGlzLm1hcmtzPU5zLmNvbXBpbGUodGhpcy5zcGVjLm1hcmtzLHRoaXMpO2xldCByPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBzIGluIHRoaXMubm9kZXMpe2lmKHMgaW4gdGhpcy5tYXJrcyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihzKyIgY2FuIG5vdCBiZSBib3RoIGEgbm9kZSBhbmQgYSBtYXJrIik7bGV0IGk9dGhpcy5ub2Rlc1tzXSxvPWkuc3BlYy5jb250ZW50fHwiIixsPWkuc3BlYy5tYXJrcztpZihpLmNvbnRlbnRNYXRjaD1yW29dfHwocltvXT1GdC5wYXJzZShvLHRoaXMubm9kZXMpKSxpLmlubGluZUNvbnRlbnQ9aS5jb250ZW50TWF0Y2guaW5saW5lQ29udGVudCxpLnNwZWMubGluZWJyZWFrUmVwbGFjZW1lbnQpe2lmKHRoaXMubGluZWJyZWFrUmVwbGFjZW1lbnQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk11bHRpcGxlIGxpbmVicmVhayBub2RlcyBkZWZpbmVkIik7aWYoIWkuaXNJbmxpbmV8fCFpLmlzTGVhZil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTGluZWJyZWFrIHJlcGxhY2VtZW50IG5vZGVzIG11c3QgYmUgaW5saW5lIGxlYWYgbm9kZXMiKTt0aGlzLmxpbmVicmVha1JlcGxhY2VtZW50PWl9aS5tYXJrU2V0PWw9PSJfIj9udWxsOmw/eGwodGhpcyxsLnNwbGl0KCIgIikpOmw9PSIifHwhaS5pbmxpbmVDb250ZW50P1tdOm51bGx9Zm9yKGxldCBzIGluIHRoaXMubWFya3Mpe2xldCBpPXRoaXMubWFya3Nbc10sbz1pLnNwZWMuZXhjbHVkZXM7aS5leGNsdWRlZD1vPT1udWxsP1tpXTpvPT0iIj9bXTp4bCh0aGlzLG8uc3BsaXQoIiAiKSl9dGhpcy5ub2RlRnJvbUpTT049cz0+TGUuZnJvbUpTT04odGhpcyxzKSx0aGlzLm1hcmtGcm9tSlNPTj1zPT5XLmZyb21KU09OKHRoaXMscyksdGhpcy50b3BOb2RlVHlwZT10aGlzLm5vZGVzW3RoaXMuc3BlYy50b3BOb2RlfHwiZG9jIl0sdGhpcy5jYWNoZWQud3JhcHBpbmdzPU9iamVjdC5jcmVhdGUobnVsbCl9bm9kZShlLHQ9bnVsbCxyLHMpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIillPXRoaXMubm9kZVR5cGUoZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgYmwpe2lmKGUuc2NoZW1hIT10aGlzKXRocm93IG5ldyBSYW5nZUVycm9yKCJOb2RlIHR5cGUgZnJvbSBkaWZmZXJlbnQgc2NoZW1hIHVzZWQgKCIrZS5uYW1lKyIpIil9ZWxzZSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBub2RlIHR5cGU6ICIrZSk7cmV0dXJuIGUuY3JlYXRlQ2hlY2tlZCh0LHIscyl9dGV4dChlLHQpe2xldCByPXRoaXMubm9kZXMudGV4dDtyZXR1cm4gbmV3IEZyKHIsci5kZWZhdWx0QXR0cnMsZSxXLnNldEZyb20odCkpfW1hcmsoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT10aGlzLm1hcmtzW2VdKSxlLmNyZWF0ZSh0KX1ub2RlVHlwZShlKXtsZXQgdD10aGlzLm5vZGVzW2VdO2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJVbmtub3duIG5vZGUgdHlwZTogIitlKTtyZXR1cm4gdH19ZnVuY3Rpb24geGwobixlKXtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IHM9ZVtyXSxpPW4ubWFya3Nbc10sbz1pO2lmKGkpdC5wdXNoKGkpO2Vsc2UgZm9yKGxldCBsIGluIG4ubWFya3Mpe2xldCBhPW4ubWFya3NbbF07KHM9PSJfInx8YS5zcGVjLmdyb3VwJiZhLnNwZWMuZ3JvdXAuc3BsaXQoIiAiKS5pbmRleE9mKHMpPi0xKSYmdC5wdXNoKG89YSl9aWYoIW8pdGhyb3cgbmV3IFN5bnRheEVycm9yKCJVbmtub3duIG1hcmsgdHlwZTogJyIrZVtyXSsiJyIpfXJldHVybiB0fWZ1bmN0aW9uIHVmKG4pe3JldHVybiBuLnRhZyE9bnVsbH1mdW5jdGlvbiBkZihuKXtyZXR1cm4gbi5zdHlsZSE9bnVsbH1jbGFzcyBpdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5ydWxlcz10LHRoaXMudGFncz1bXSx0aGlzLnN0eWxlcz1bXTtsZXQgcj10aGlzLm1hdGNoZWRTdHlsZXM9W107dC5mb3JFYWNoKHM9PntpZih1ZihzKSl0aGlzLnRhZ3MucHVzaChzKTtlbHNlIGlmKGRmKHMpKXtsZXQgaT0vW149XSovLmV4ZWMocy5zdHlsZSlbMF07ci5pbmRleE9mKGkpPDAmJnIucHVzaChpKSx0aGlzLnN0eWxlcy5wdXNoKHMpfX0pLHRoaXMubm9ybWFsaXplTGlzdHM9IXRoaXMudGFncy5zb21lKHM9PntpZighL14odWx8b2wpXGIvLnRlc3Qocy50YWcpfHwhcy5ub2RlKXJldHVybiExO2xldCBpPWUubm9kZXNbcy5ub2RlXTtyZXR1cm4gaS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKGkpfSl9cGFyc2UoZSx0PXt9KXtsZXQgcj1uZXcgdmwodGhpcyx0LCExKTtyZXR1cm4gci5hZGRBbGwoZSxXLm5vbmUsdC5mcm9tLHQudG8pLHIuZmluaXNoKCl9cGFyc2VTbGljZShlLHQ9e30pe2xldCByPW5ldyB2bCh0aGlzLHQsITApO3JldHVybiByLmFkZEFsbChlLFcubm9uZSx0LmZyb20sdC50byksRS5tYXhPcGVuKHIuZmluaXNoKCkpfW1hdGNoVGFnKGUsdCxyKXtmb3IobGV0IHM9cj90aGlzLnRhZ3MuaW5kZXhPZihyKSsxOjA7czx0aGlzLnRhZ3MubGVuZ3RoO3MrKyl7bGV0IGk9dGhpcy50YWdzW3NdO2lmKHBmKGUsaS50YWcpJiYoaS5uYW1lc3BhY2U9PT12b2lkIDB8fGUubmFtZXNwYWNlVVJJPT1pLm5hbWVzcGFjZSkmJighaS5jb250ZXh0fHx0Lm1hdGNoZXNDb250ZXh0KGkuY29udGV4dCkpKXtpZihpLmdldEF0dHJzKXtsZXQgbz1pLmdldEF0dHJzKGUpO2lmKG89PT0hMSljb250aW51ZTtpLmF0dHJzPW98fHZvaWQgMH1yZXR1cm4gaX19fW1hdGNoU3R5bGUoZSx0LHIscyl7Zm9yKGxldCBpPXM/dGhpcy5zdHlsZXMuaW5kZXhPZihzKSsxOjA7aTx0aGlzLnN0eWxlcy5sZW5ndGg7aSsrKXtsZXQgbz10aGlzLnN0eWxlc1tpXSxsPW8uc3R5bGU7aWYoIShsLmluZGV4T2YoZSkhPTB8fG8uY29udGV4dCYmIXIubWF0Y2hlc0NvbnRleHQoby5jb250ZXh0KXx8bC5sZW5ndGg+ZS5sZW5ndGgmJihsLmNoYXJDb2RlQXQoZS5sZW5ndGgpIT02MXx8bC5zbGljZShlLmxlbmd0aCsxKSE9dCkpKXtpZihvLmdldEF0dHJzKXtsZXQgYT1vLmdldEF0dHJzKHQpO2lmKGE9PT0hMSljb250aW51ZTtvLmF0dHJzPWF8fHZvaWQgMH1yZXR1cm4gb319fXN0YXRpYyBzY2hlbWFSdWxlcyhlKXtsZXQgdD1bXTtmdW5jdGlvbiByKHMpe2xldCBpPXMucHJpb3JpdHk9PW51bGw/NTA6cy5wcmlvcml0eSxvPTA7Zm9yKDtvPHQubGVuZ3RoO28rKyl7bGV0IGw9dFtvXTtpZigobC5wcmlvcml0eT09bnVsbD81MDpsLnByaW9yaXR5KTxpKWJyZWFrfXQuc3BsaWNlKG8sMCxzKX1mb3IobGV0IHMgaW4gZS5tYXJrcyl7bGV0IGk9ZS5tYXJrc1tzXS5zcGVjLnBhcnNlRE9NO2kmJmkuZm9yRWFjaChvPT57cihvPVNsKG8pKSxvLm1hcmt8fG8uaWdub3JlfHxvLmNsZWFyTWFya3x8KG8ubWFyaz1zKX0pfWZvcihsZXQgcyBpbiBlLm5vZGVzKXtsZXQgaT1lLm5vZGVzW3NdLnNwZWMucGFyc2VET007aSYmaS5mb3JFYWNoKG89PntyKG89U2wobykpLG8ubm9kZXx8by5pZ25vcmV8fG8ubWFya3x8KG8ubm9kZT1zKX0pfXJldHVybiB0fXN0YXRpYyBmcm9tU2NoZW1hKGUpe3JldHVybiBlLmNhY2hlZC5kb21QYXJzZXJ8fChlLmNhY2hlZC5kb21QYXJzZXI9bmV3IGl0KGUsaXQuc2NoZW1hUnVsZXMoZSkpKX19Y29uc3QgUGM9e2FkZHJlc3M6ITAsYXJ0aWNsZTohMCxhc2lkZTohMCxibG9ja3F1b3RlOiEwLGNhbnZhczohMCxkZDohMCxkaXY6ITAsZGw6ITAsZmllbGRzZXQ6ITAsZmlnY2FwdGlvbjohMCxmaWd1cmU6ITAsZm9vdGVyOiEwLGZvcm06ITAsaDE6ITAsaDI6ITAsaDM6ITAsaDQ6ITAsaDU6ITAsaDY6ITAsaGVhZGVyOiEwLGhncm91cDohMCxocjohMCxsaTohMCxub3NjcmlwdDohMCxvbDohMCxvdXRwdXQ6ITAscDohMCxwcmU6ITAsc2VjdGlvbjohMCx0YWJsZTohMCx0Zm9vdDohMCx1bDohMH0saGY9e2hlYWQ6ITAsbm9zY3JpcHQ6ITAsb2JqZWN0OiEwLHNjcmlwdDohMCxzdHlsZTohMCx0aXRsZTohMH0semM9e29sOiEwLHVsOiEwfSxLbj0xLFJpPTIsem49NDtmdW5jdGlvbiB3bChuLGUsdCl7cmV0dXJuIGUhPW51bGw/KGU/S246MCl8KGU9PT0iZnVsbCI/Umk6MCk6biYmbi53aGl0ZXNwYWNlPT0icHJlIj9LbnxSaTp0Jn56bn1jbGFzcyBwcntjb25zdHJ1Y3RvcihlLHQscixzLGksbyl7dGhpcy50eXBlPWUsdGhpcy5hdHRycz10LHRoaXMubWFya3M9cix0aGlzLnNvbGlkPXMsdGhpcy5vcHRpb25zPW8sdGhpcy5jb250ZW50PVtdLHRoaXMuYWN0aXZlTWFya3M9Vy5ub25lLHRoaXMubWF0Y2g9aXx8KG8mem4/bnVsbDplLmNvbnRlbnRNYXRjaCl9ZmluZFdyYXBwaW5nKGUpe2lmKCF0aGlzLm1hdGNoKXtpZighdGhpcy50eXBlKXJldHVybltdO2xldCB0PXRoaXMudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShTLmZyb20oZSkpO2lmKHQpdGhpcy5tYXRjaD10aGlzLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQodCk7ZWxzZXtsZXQgcj10aGlzLnR5cGUuY29udGVudE1hdGNoLHM7cmV0dXJuKHM9ci5maW5kV3JhcHBpbmcoZS50eXBlKSk/KHRoaXMubWF0Y2g9cixzKTpudWxsfX1yZXR1cm4gdGhpcy5tYXRjaC5maW5kV3JhcHBpbmcoZS50eXBlKX1maW5pc2goZSl7aWYoISh0aGlzLm9wdGlvbnMmS24pKXtsZXQgcj10aGlzLmNvbnRlbnRbdGhpcy5jb250ZW50Lmxlbmd0aC0xXSxzO2lmKHImJnIuaXNUZXh0JiYocz0vWyBcdFxyXG5cdTAwMGNdKyQvLmV4ZWMoci50ZXh0KSkpe2xldCBpPXI7ci50ZXh0Lmxlbmd0aD09c1swXS5sZW5ndGg/dGhpcy5jb250ZW50LnBvcCgpOnRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoLTFdPWkud2l0aFRleHQoaS50ZXh0LnNsaWNlKDAsaS50ZXh0Lmxlbmd0aC1zWzBdLmxlbmd0aCkpfX1sZXQgdD1TLmZyb20odGhpcy5jb250ZW50KTtyZXR1cm4hZSYmdGhpcy5tYXRjaCYmKHQ9dC5hcHBlbmQodGhpcy5tYXRjaC5maWxsQmVmb3JlKFMuZW1wdHksITApKSksdGhpcy50eXBlP3RoaXMudHlwZS5jcmVhdGUodGhpcy5hdHRycyx0LHRoaXMubWFya3MpOnR9aW5saW5lQ29udGV4dChlKXtyZXR1cm4gdGhpcy50eXBlP3RoaXMudHlwZS5pbmxpbmVDb250ZW50OnRoaXMuY29udGVudC5sZW5ndGg/dGhpcy5jb250ZW50WzBdLmlzSW5saW5lOmUucGFyZW50Tm9kZSYmIVBjLmhhc093blByb3BlcnR5KGUucGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKX19Y2xhc3Mgdmx7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMucGFyc2VyPWUsdGhpcy5vcHRpb25zPXQsdGhpcy5pc09wZW49cix0aGlzLm9wZW49MCx0aGlzLmxvY2FsUHJlc2VydmVXUz0hMTtsZXQgcz10LnRvcE5vZGUsaSxvPXdsKG51bGwsdC5wcmVzZXJ2ZVdoaXRlc3BhY2UsMCl8KHI/em46MCk7cz9pPW5ldyBwcihzLnR5cGUscy5hdHRycyxXLm5vbmUsITAsdC50b3BNYXRjaHx8cy50eXBlLmNvbnRlbnRNYXRjaCxvKTpyP2k9bmV3IHByKG51bGwsbnVsbCxXLm5vbmUsITAsbnVsbCxvKTppPW5ldyBwcihlLnNjaGVtYS50b3BOb2RlVHlwZSxudWxsLFcubm9uZSwhMCxudWxsLG8pLHRoaXMubm9kZXM9W2ldLHRoaXMuZmluZD10LmZpbmRQb3NpdGlvbnMsdGhpcy5uZWVkc0Jsb2NrPSExfWdldCB0b3AoKXtyZXR1cm4gdGhpcy5ub2Rlc1t0aGlzLm9wZW5dfWFkZERPTShlLHQpe2Uubm9kZVR5cGU9PTM/dGhpcy5hZGRUZXh0Tm9kZShlLHQpOmUubm9kZVR5cGU9PTEmJnRoaXMuYWRkRWxlbWVudChlLHQpfWFkZFRleHROb2RlKGUsdCl7bGV0IHI9ZS5ub2RlVmFsdWUscz10aGlzLnRvcCxpPXMub3B0aW9ucyZSaT8iZnVsbCI6dGhpcy5sb2NhbFByZXNlcnZlV1N8fChzLm9wdGlvbnMmS24pPjAse3NjaGVtYTpvfT10aGlzLnBhcnNlcjtpZihpPT09ImZ1bGwifHxzLmlubGluZUNvbnRleHQoZSl8fC9bXiBcdFxyXG5cdTAwMGNdLy50ZXN0KHIpKXtpZihpKWlmKGk9PT0iZnVsbCIpcj1yLnJlcGxhY2UoL1xyXG4/L2csYApgKTtlbHNlIGlmKG8ubGluZWJyZWFrUmVwbGFjZW1lbnQmJi9bXHJcbl0vLnRlc3QocikmJnRoaXMudG9wLmZpbmRXcmFwcGluZyhvLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKSl7bGV0IGw9ci5zcGxpdCgvXHI/XG58XHIvKTtmb3IobGV0IGE9MDthPGwubGVuZ3RoO2ErKylhJiZ0aGlzLmluc2VydE5vZGUoby5saW5lYnJlYWtSZXBsYWNlbWVudC5jcmVhdGUoKSx0LCEwKSxsW2FdJiZ0aGlzLmluc2VydE5vZGUoby50ZXh0KGxbYV0pLHQsIS9cUy8udGVzdChsW2FdKSk7cj0iIn1lbHNlIHI9ci5yZXBsYWNlKC9ccj9cbnxcci9nLCIgIik7ZWxzZSBpZihyPXIucmVwbGFjZSgvWyBcdFxyXG5cdTAwMGNdKy9nLCIgIiksL15bIFx0XHJcblx1MDAwY10vLnRlc3QocikmJnRoaXMub3Blbj09dGhpcy5ub2Rlcy5sZW5ndGgtMSl7bGV0IGw9cy5jb250ZW50W3MuY29udGVudC5sZW5ndGgtMV0sYT1lLnByZXZpb3VzU2libGluZzsoIWx8fGEmJmEubm9kZU5hbWU9PSJCUiJ8fGwuaXNUZXh0JiYvWyBcdFxyXG5cdTAwMGNdJC8udGVzdChsLnRleHQpKSYmKHI9ci5zbGljZSgxKSl9ciYmdGhpcy5pbnNlcnROb2RlKG8udGV4dChyKSx0LCEvXFMvLnRlc3QocikpLHRoaXMuZmluZEluVGV4dChlKX1lbHNlIHRoaXMuZmluZEluc2lkZShlKX1hZGRFbGVtZW50KGUsdCxyKXtsZXQgcz10aGlzLmxvY2FsUHJlc2VydmVXUyxpPXRoaXMudG9wOyhlLnRhZ05hbWU9PSJQUkUifHwvcHJlLy50ZXN0KGUuc3R5bGUmJmUuc3R5bGUud2hpdGVTcGFjZSkpJiYodGhpcy5sb2NhbFByZXNlcnZlV1M9ITApO2xldCBvPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxsO3pjLmhhc093blByb3BlcnR5KG8pJiZ0aGlzLnBhcnNlci5ub3JtYWxpemVMaXN0cyYmZmYoZSk7bGV0IGE9dGhpcy5vcHRpb25zLnJ1bGVGcm9tTm9kZSYmdGhpcy5vcHRpb25zLnJ1bGVGcm9tTm9kZShlKXx8KGw9dGhpcy5wYXJzZXIubWF0Y2hUYWcoZSx0aGlzLHIpKTtlOmlmKGE/YS5pZ25vcmU6aGYuaGFzT3duUHJvcGVydHkobykpdGhpcy5maW5kSW5zaWRlKGUpLHRoaXMuaWdub3JlRmFsbGJhY2soZSx0KTtlbHNlIGlmKCFhfHxhLnNraXB8fGEuY2xvc2VQYXJlbnQpe2EmJmEuY2xvc2VQYXJlbnQ/dGhpcy5vcGVuPU1hdGgubWF4KDAsdGhpcy5vcGVuLTEpOmEmJmEuc2tpcC5ub2RlVHlwZSYmKGU9YS5za2lwKTtsZXQgYyx1PXRoaXMubmVlZHNCbG9jaztpZihQYy5oYXNPd25Qcm9wZXJ0eShvKSlpLmNvbnRlbnQubGVuZ3RoJiZpLmNvbnRlbnRbMF0uaXNJbmxpbmUmJnRoaXMub3BlbiYmKHRoaXMub3Blbi0tLGk9dGhpcy50b3ApLGM9ITAsaS50eXBlfHwodGhpcy5uZWVkc0Jsb2NrPSEwKTtlbHNlIGlmKCFlLmZpcnN0Q2hpbGQpe3RoaXMubGVhZkZhbGxiYWNrKGUsdCk7YnJlYWsgZX1sZXQgZD1hJiZhLnNraXA/dDp0aGlzLnJlYWRTdHlsZXMoZSx0KTtkJiZ0aGlzLmFkZEFsbChlLGQpLGMmJnRoaXMuc3luYyhpKSx0aGlzLm5lZWRzQmxvY2s9dX1lbHNle2xldCBjPXRoaXMucmVhZFN0eWxlcyhlLHQpO2MmJnRoaXMuYWRkRWxlbWVudEJ5UnVsZShlLGEsYyxhLmNvbnN1bWluZz09PSExP2w6dm9pZCAwKX10aGlzLmxvY2FsUHJlc2VydmVXUz1zfWxlYWZGYWxsYmFjayhlLHQpe2Uubm9kZU5hbWU9PSJCUiImJnRoaXMudG9wLnR5cGUmJnRoaXMudG9wLnR5cGUuaW5saW5lQ29udGVudCYmdGhpcy5hZGRUZXh0Tm9kZShlLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYApgKSx0KX1pZ25vcmVGYWxsYmFjayhlLHQpe2Uubm9kZU5hbWU9PSJCUiImJighdGhpcy50b3AudHlwZXx8IXRoaXMudG9wLnR5cGUuaW5saW5lQ29udGVudCkmJnRoaXMuZmluZFBsYWNlKHRoaXMucGFyc2VyLnNjaGVtYS50ZXh0KCItIiksdCwhMCl9cmVhZFN0eWxlcyhlLHQpe2xldCByPWUuc3R5bGU7aWYociYmci5sZW5ndGgpZm9yKGxldCBzPTA7czx0aGlzLnBhcnNlci5tYXRjaGVkU3R5bGVzLmxlbmd0aDtzKyspe2xldCBpPXRoaXMucGFyc2VyLm1hdGNoZWRTdHlsZXNbc10sbz1yLmdldFByb3BlcnR5VmFsdWUoaSk7aWYobylmb3IobGV0IGw9dm9pZCAwOzspe2xldCBhPXRoaXMucGFyc2VyLm1hdGNoU3R5bGUoaSxvLHRoaXMsbCk7aWYoIWEpYnJlYWs7aWYoYS5pZ25vcmUpcmV0dXJuIG51bGw7aWYoYS5jbGVhck1hcms/dD10LmZpbHRlcihjPT4hYS5jbGVhck1hcmsoYykpOnQ9dC5jb25jYXQodGhpcy5wYXJzZXIuc2NoZW1hLm1hcmtzW2EubWFya10uY3JlYXRlKGEuYXR0cnMpKSxhLmNvbnN1bWluZz09PSExKWw9YTtlbHNlIGJyZWFrfX1yZXR1cm4gdH1hZGRFbGVtZW50QnlSdWxlKGUsdCxyLHMpe2xldCBpLG87aWYodC5ub2RlKWlmKG89dGhpcy5wYXJzZXIuc2NoZW1hLm5vZGVzW3Qubm9kZV0sby5pc0xlYWYpdGhpcy5pbnNlcnROb2RlKG8uY3JlYXRlKHQuYXR0cnMpLHIsZS5ub2RlTmFtZT09IkJSIil8fHRoaXMubGVhZkZhbGxiYWNrKGUscik7ZWxzZXtsZXQgYT10aGlzLmVudGVyKG8sdC5hdHRyc3x8bnVsbCxyLHQucHJlc2VydmVXaGl0ZXNwYWNlKTthJiYoaT0hMCxyPWEpfWVsc2V7bGV0IGE9dGhpcy5wYXJzZXIuc2NoZW1hLm1hcmtzW3QubWFya107cj1yLmNvbmNhdChhLmNyZWF0ZSh0LmF0dHJzKSl9bGV0IGw9dGhpcy50b3A7aWYobyYmby5pc0xlYWYpdGhpcy5maW5kSW5zaWRlKGUpO2Vsc2UgaWYocyl0aGlzLmFkZEVsZW1lbnQoZSxyLHMpO2Vsc2UgaWYodC5nZXRDb250ZW50KXRoaXMuZmluZEluc2lkZShlKSx0LmdldENvbnRlbnQoZSx0aGlzLnBhcnNlci5zY2hlbWEpLmZvckVhY2goYT0+dGhpcy5pbnNlcnROb2RlKGEsciwhMSkpO2Vsc2V7bGV0IGE9ZTt0eXBlb2YgdC5jb250ZW50RWxlbWVudD09InN0cmluZyI/YT1lLnF1ZXJ5U2VsZWN0b3IodC5jb250ZW50RWxlbWVudCk6dHlwZW9mIHQuY29udGVudEVsZW1lbnQ9PSJmdW5jdGlvbiI/YT10LmNvbnRlbnRFbGVtZW50KGUpOnQuY29udGVudEVsZW1lbnQmJihhPXQuY29udGVudEVsZW1lbnQpLHRoaXMuZmluZEFyb3VuZChlLGEsITApLHRoaXMuYWRkQWxsKGEsciksdGhpcy5maW5kQXJvdW5kKGUsYSwhMSl9aSYmdGhpcy5zeW5jKGwpJiZ0aGlzLm9wZW4tLX1hZGRBbGwoZSx0LHIscyl7bGV0IGk9cnx8MDtmb3IobGV0IG89cj9lLmNoaWxkTm9kZXNbcl06ZS5maXJzdENoaWxkLGw9cz09bnVsbD9udWxsOmUuY2hpbGROb2Rlc1tzXTtvIT1sO289by5uZXh0U2libGluZywrK2kpdGhpcy5maW5kQXRQb2ludChlLGkpLHRoaXMuYWRkRE9NKG8sdCk7dGhpcy5maW5kQXRQb2ludChlLGkpfWZpbmRQbGFjZShlLHQscil7bGV0IHMsaTtmb3IobGV0IG89dGhpcy5vcGVuLGw9MDtvPj0wO28tLSl7bGV0IGE9dGhpcy5ub2Rlc1tvXSxjPWEuZmluZFdyYXBwaW5nKGUpO2lmKGMmJighc3x8cy5sZW5ndGg+Yy5sZW5ndGgrbCkmJihzPWMsaT1hLCFjLmxlbmd0aCkpYnJlYWs7aWYoYS5zb2xpZCl7aWYocilicmVhaztsKz0yfX1pZighcylyZXR1cm4gbnVsbDt0aGlzLnN5bmMoaSk7Zm9yKGxldCBvPTA7bzxzLmxlbmd0aDtvKyspdD10aGlzLmVudGVySW5uZXIoc1tvXSxudWxsLHQsITEpO3JldHVybiB0fWluc2VydE5vZGUoZSx0LHIpe2lmKGUuaXNJbmxpbmUmJnRoaXMubmVlZHNCbG9jayYmIXRoaXMudG9wLnR5cGUpe2xldCBpPXRoaXMudGV4dGJsb2NrRnJvbUNvbnRleHQoKTtpJiYodD10aGlzLmVudGVySW5uZXIoaSxudWxsLHQpKX1sZXQgcz10aGlzLmZpbmRQbGFjZShlLHQscik7aWYocyl7dGhpcy5jbG9zZUV4dHJhKCk7bGV0IGk9dGhpcy50b3A7aS5tYXRjaCYmKGkubWF0Y2g9aS5tYXRjaC5tYXRjaFR5cGUoZS50eXBlKSk7bGV0IG89Vy5ub25lO2ZvcihsZXQgbCBvZiBzLmNvbmNhdChlLm1hcmtzKSkoaS50eXBlP2kudHlwZS5hbGxvd3NNYXJrVHlwZShsLnR5cGUpOkNsKGwudHlwZSxlLnR5cGUpKSYmKG89bC5hZGRUb1NldChvKSk7cmV0dXJuIGkuY29udGVudC5wdXNoKGUubWFyayhvKSksITB9cmV0dXJuITF9ZW50ZXIoZSx0LHIscyl7bGV0IGk9dGhpcy5maW5kUGxhY2UoZS5jcmVhdGUodCksciwhMSk7cmV0dXJuIGkmJihpPXRoaXMuZW50ZXJJbm5lcihlLHQsciwhMCxzKSksaX1lbnRlcklubmVyKGUsdCxyLHM9ITEsaSl7dGhpcy5jbG9zZUV4dHJhKCk7bGV0IG89dGhpcy50b3A7by5tYXRjaD1vLm1hdGNoJiZvLm1hdGNoLm1hdGNoVHlwZShlKTtsZXQgbD13bChlLGksby5vcHRpb25zKTtvLm9wdGlvbnMmem4mJm8uY29udGVudC5sZW5ndGg9PTAmJihsfD16bik7bGV0IGE9Vy5ub25lO3JldHVybiByPXIuZmlsdGVyKGM9PihvLnR5cGU/by50eXBlLmFsbG93c01hcmtUeXBlKGMudHlwZSk6Q2woYy50eXBlLGUpKT8oYT1jLmFkZFRvU2V0KGEpLCExKTohMCksdGhpcy5ub2Rlcy5wdXNoKG5ldyBwcihlLHQsYSxzLG51bGwsbCkpLHRoaXMub3BlbisrLHJ9Y2xvc2VFeHRyYShlPSExKXtsZXQgdD10aGlzLm5vZGVzLmxlbmd0aC0xO2lmKHQ+dGhpcy5vcGVuKXtmb3IoO3Q+dGhpcy5vcGVuO3QtLSl0aGlzLm5vZGVzW3QtMV0uY29udGVudC5wdXNoKHRoaXMubm9kZXNbdF0uZmluaXNoKGUpKTt0aGlzLm5vZGVzLmxlbmd0aD10aGlzLm9wZW4rMX19ZmluaXNoKCl7cmV0dXJuIHRoaXMub3Blbj0wLHRoaXMuY2xvc2VFeHRyYSh0aGlzLmlzT3BlbiksdGhpcy5ub2Rlc1swXS5maW5pc2goISEodGhpcy5pc09wZW58fHRoaXMub3B0aW9ucy50b3BPcGVuKSl9c3luYyhlKXtmb3IobGV0IHQ9dGhpcy5vcGVuO3Q+PTA7dC0tKXtpZih0aGlzLm5vZGVzW3RdPT1lKXJldHVybiB0aGlzLm9wZW49dCwhMDt0aGlzLmxvY2FsUHJlc2VydmVXUyYmKHRoaXMubm9kZXNbdF0ub3B0aW9uc3w9S24pfXJldHVybiExfWdldCBjdXJyZW50UG9zKCl7dGhpcy5jbG9zZUV4dHJhKCk7bGV0IGU9MDtmb3IobGV0IHQ9dGhpcy5vcGVuO3Q+PTA7dC0tKXtsZXQgcj10aGlzLm5vZGVzW3RdLmNvbnRlbnQ7Zm9yKGxldCBzPXIubGVuZ3RoLTE7cz49MDtzLS0pZSs9cltzXS5ub2RlU2l6ZTt0JiZlKyt9cmV0dXJuIGV9ZmluZEF0UG9pbnQoZSx0KXtpZih0aGlzLmZpbmQpZm9yKGxldCByPTA7cjx0aGlzLmZpbmQubGVuZ3RoO3IrKyl0aGlzLmZpbmRbcl0ubm9kZT09ZSYmdGhpcy5maW5kW3JdLm9mZnNldD09dCYmKHRoaXMuZmluZFtyXS5wb3M9dGhpcy5jdXJyZW50UG9zKX1maW5kSW5zaWRlKGUpe2lmKHRoaXMuZmluZClmb3IobGV0IHQ9MDt0PHRoaXMuZmluZC5sZW5ndGg7dCsrKXRoaXMuZmluZFt0XS5wb3M9PW51bGwmJmUubm9kZVR5cGU9PTEmJmUuY29udGFpbnModGhpcy5maW5kW3RdLm5vZGUpJiYodGhpcy5maW5kW3RdLnBvcz10aGlzLmN1cnJlbnRQb3MpfWZpbmRBcm91bmQoZSx0LHIpe2lmKGUhPXQmJnRoaXMuZmluZClmb3IobGV0IHM9MDtzPHRoaXMuZmluZC5sZW5ndGg7cysrKXRoaXMuZmluZFtzXS5wb3M9PW51bGwmJmUubm9kZVR5cGU9PTEmJmUuY29udGFpbnModGhpcy5maW5kW3NdLm5vZGUpJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMuZmluZFtzXS5ub2RlKSYocj8yOjQpJiYodGhpcy5maW5kW3NdLnBvcz10aGlzLmN1cnJlbnRQb3MpfWZpbmRJblRleHQoZSl7aWYodGhpcy5maW5kKWZvcihsZXQgdD0wO3Q8dGhpcy5maW5kLmxlbmd0aDt0KyspdGhpcy5maW5kW3RdLm5vZGU9PWUmJih0aGlzLmZpbmRbdF0ucG9zPXRoaXMuY3VycmVudFBvcy0oZS5ub2RlVmFsdWUubGVuZ3RoLXRoaXMuZmluZFt0XS5vZmZzZXQpKX1tYXRjaGVzQ29udGV4dChlKXtpZihlLmluZGV4T2YoInwiKT4tMSlyZXR1cm4gZS5zcGxpdCgvXHMqXHxccyovKS5zb21lKHRoaXMubWF0Y2hlc0NvbnRleHQsdGhpcyk7bGV0IHQ9ZS5zcGxpdCgiLyIpLHI9dGhpcy5vcHRpb25zLmNvbnRleHQscz0hdGhpcy5pc09wZW4mJighcnx8ci5wYXJlbnQudHlwZT09dGhpcy5ub2Rlc1swXS50eXBlKSxpPS0ocj9yLmRlcHRoKzE6MCkrKHM/MDoxKSxvPShsLGEpPT57Zm9yKDtsPj0wO2wtLSl7bGV0IGM9dFtsXTtpZihjPT0iIil7aWYobD09dC5sZW5ndGgtMXx8bD09MCljb250aW51ZTtmb3IoO2E+PWk7YS0tKWlmKG8obC0xLGEpKXJldHVybiEwO3JldHVybiExfWVsc2V7bGV0IHU9YT4wfHxhPT0wJiZzP3RoaXMubm9kZXNbYV0udHlwZTpyJiZhPj1pP3Iubm9kZShhLWkpLnR5cGU6bnVsbDtpZighdXx8dS5uYW1lIT1jJiYhdS5pc0luR3JvdXAoYykpcmV0dXJuITE7YS0tfX1yZXR1cm4hMH07cmV0dXJuIG8odC5sZW5ndGgtMSx0aGlzLm9wZW4pfXRleHRibG9ja0Zyb21Db250ZXh0KCl7bGV0IGU9dGhpcy5vcHRpb25zLmNvbnRleHQ7aWYoZSlmb3IobGV0IHQ9ZS5kZXB0aDt0Pj0wO3QtLSl7bGV0IHI9ZS5ub2RlKHQpLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcih0KSkuZGVmYXVsdFR5cGU7aWYociYmci5pc1RleHRibG9jayYmci5kZWZhdWx0QXR0cnMpcmV0dXJuIHJ9Zm9yKGxldCB0IGluIHRoaXMucGFyc2VyLnNjaGVtYS5ub2Rlcyl7bGV0IHI9dGhpcy5wYXJzZXIuc2NoZW1hLm5vZGVzW3RdO2lmKHIuaXNUZXh0YmxvY2smJnIuZGVmYXVsdEF0dHJzKXJldHVybiByfX19ZnVuY3Rpb24gZmYobil7Zm9yKGxldCBlPW4uZmlyc3RDaGlsZCx0PW51bGw7ZTtlPWUubmV4dFNpYmxpbmcpe2xldCByPWUubm9kZVR5cGU9PTE/ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGw7ciYmemMuaGFzT3duUHJvcGVydHkocikmJnQ/KHQuYXBwZW5kQ2hpbGQoZSksZT10KTpyPT0ibGkiP3Q9ZTpyJiYodD1udWxsKX19ZnVuY3Rpb24gcGYobixlKXtyZXR1cm4obi5tYXRjaGVzfHxuLm1zTWF0Y2hlc1NlbGVjdG9yfHxuLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8bi5tb3pNYXRjaGVzU2VsZWN0b3IpLmNhbGwobixlKX1mdW5jdGlvbiBTbChuKXtsZXQgZT17fTtmb3IobGV0IHQgaW4gbillW3RdPW5bdF07cmV0dXJuIGV9ZnVuY3Rpb24gQ2wobixlKXtsZXQgdD1lLnNjaGVtYS5ub2Rlcztmb3IobGV0IHIgaW4gdCl7bGV0IHM9dFtyXTtpZighcy5hbGxvd3NNYXJrVHlwZShuKSljb250aW51ZTtsZXQgaT1bXSxvPWw9PntpLnB1c2gobCk7Zm9yKGxldCBhPTA7YTxsLmVkZ2VDb3VudDthKyspe2xldHt0eXBlOmMsbmV4dDp1fT1sLmVkZ2UoYSk7aWYoYz09ZXx8aS5pbmRleE9mKHUpPDAmJm8odSkpcmV0dXJuITB9fTtpZihvKHMuY29udGVudE1hdGNoKSlyZXR1cm4hMH19Y2xhc3MgS3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVzPWUsdGhpcy5tYXJrcz10fXNlcmlhbGl6ZUZyYWdtZW50KGUsdD17fSxyKXtyfHwocj1acyh0KS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO2xldCBzPXIsaT1bXTtyZXR1cm4gZS5mb3JFYWNoKG89PntpZihpLmxlbmd0aHx8by5tYXJrcy5sZW5ndGgpe2xldCBsPTAsYT0wO2Zvcig7bDxpLmxlbmd0aCYmYTxvLm1hcmtzLmxlbmd0aDspe2xldCBjPW8ubWFya3NbYV07aWYoIXRoaXMubWFya3NbYy50eXBlLm5hbWVdKXthKys7Y29udGludWV9aWYoIWMuZXEoaVtsXVswXSl8fGMudHlwZS5zcGVjLnNwYW5uaW5nPT09ITEpYnJlYWs7bCsrLGErK31mb3IoO2w8aS5sZW5ndGg7KXM9aS5wb3AoKVsxXTtmb3IoO2E8by5tYXJrcy5sZW5ndGg7KXtsZXQgYz1vLm1hcmtzW2ErK10sdT10aGlzLnNlcmlhbGl6ZU1hcmsoYyxvLmlzSW5saW5lLHQpO3UmJihpLnB1c2goW2Msc10pLHMuYXBwZW5kQ2hpbGQodS5kb20pLHM9dS5jb250ZW50RE9NfHx1LmRvbSl9fXMuYXBwZW5kQ2hpbGQodGhpcy5zZXJpYWxpemVOb2RlSW5uZXIobyx0KSl9KSxyfXNlcmlhbGl6ZU5vZGVJbm5lcihlLHQpe2xldHtkb206cixjb250ZW50RE9NOnN9PU5yKFpzKHQpLHRoaXMubm9kZXNbZS50eXBlLm5hbWVdKGUpLG51bGwsZS5hdHRycyk7aWYocyl7aWYoZS5pc0xlYWYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBub3QgYWxsb3dlZCBpbiBhIGxlYWYgbm9kZSBzcGVjIik7dGhpcy5zZXJpYWxpemVGcmFnbWVudChlLmNvbnRlbnQsdCxzKX1yZXR1cm4gcn1zZXJpYWxpemVOb2RlKGUsdD17fSl7bGV0IHI9dGhpcy5zZXJpYWxpemVOb2RlSW5uZXIoZSx0KTtmb3IobGV0IHM9ZS5tYXJrcy5sZW5ndGgtMTtzPj0wO3MtLSl7bGV0IGk9dGhpcy5zZXJpYWxpemVNYXJrKGUubWFya3Nbc10sZS5pc0lubGluZSx0KTtpJiYoKGkuY29udGVudERPTXx8aS5kb20pLmFwcGVuZENoaWxkKHIpLHI9aS5kb20pfXJldHVybiByfXNlcmlhbGl6ZU1hcmsoZSx0LHI9e30pe2xldCBzPXRoaXMubWFya3NbZS50eXBlLm5hbWVdO3JldHVybiBzJiZOcihacyhyKSxzKGUsdCksbnVsbCxlLmF0dHJzKX1zdGF0aWMgcmVuZGVyU3BlYyhlLHQscj1udWxsLHMpe3JldHVybiBOcihlLHQscixzKX1zdGF0aWMgZnJvbVNjaGVtYShlKXtyZXR1cm4gZS5jYWNoZWQuZG9tU2VyaWFsaXplcnx8KGUuY2FjaGVkLmRvbVNlcmlhbGl6ZXI9bmV3IEt0KHRoaXMubm9kZXNGcm9tU2NoZW1hKGUpLHRoaXMubWFya3NGcm9tU2NoZW1hKGUpKSl9c3RhdGljIG5vZGVzRnJvbVNjaGVtYShlKXtsZXQgdD1UbChlLm5vZGVzKTtyZXR1cm4gdC50ZXh0fHwodC50ZXh0PXI9PnIudGV4dCksdH1zdGF0aWMgbWFya3NGcm9tU2NoZW1hKGUpe3JldHVybiBUbChlLm1hcmtzKX19ZnVuY3Rpb24gVGwobil7bGV0IGU9e307Zm9yKGxldCB0IGluIG4pe2xldCByPW5bdF0uc3BlYy50b0RPTTtyJiYoZVt0XT1yKX1yZXR1cm4gZX1mdW5jdGlvbiBacyhuKXtyZXR1cm4gbi5kb2N1bWVudHx8d2luZG93LmRvY3VtZW50fWNvbnN0IE1sPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG1mKG4pe2xldCBlPU1sLmdldChuKTtyZXR1cm4gZT09PXZvaWQgMCYmTWwuc2V0KG4sZT1nZihuKSksZX1mdW5jdGlvbiBnZihuKXtsZXQgZT1udWxsO2Z1bmN0aW9uIHQocil7aWYociYmdHlwZW9mIHI9PSJvYmplY3QiKWlmKEFycmF5LmlzQXJyYXkocikpaWYodHlwZW9mIHJbMF09PSJzdHJpbmciKWV8fChlPVtdKSxlLnB1c2gocik7ZWxzZSBmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKyl0KHJbc10pO2Vsc2UgZm9yKGxldCBzIGluIHIpdChyW3NdKX1yZXR1cm4gdChuKSxlfWZ1bmN0aW9uIE5yKG4sZSx0LHIpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm57ZG9tOm4uY3JlYXRlVGV4dE5vZGUoZSl9O2lmKGUubm9kZVR5cGUhPW51bGwpcmV0dXJue2RvbTplfTtpZihlLmRvbSYmZS5kb20ubm9kZVR5cGUhPW51bGwpcmV0dXJuIGU7bGV0IHM9ZVswXSxpO2lmKHR5cGVvZiBzIT0ic3RyaW5nIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBhcnJheSBwYXNzZWQgdG8gcmVuZGVyU3BlYyIpO2lmKHImJihpPW1mKHIpKSYmaS5pbmRleE9mKGUpPi0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2luZyBhbiBhcnJheSBmcm9tIGFuIGF0dHJpYnV0ZSBvYmplY3QgYXMgYSBET00gc3BlYy4gVGhpcyBtYXkgYmUgYW4gYXR0ZW1wdGVkIGNyb3NzIHNpdGUgc2NyaXB0aW5nIGF0dGFjay4iKTtsZXQgbz1zLmluZGV4T2YoIiAiKTtvPjAmJih0PXMuc2xpY2UoMCxvKSxzPXMuc2xpY2UobysxKSk7bGV0IGwsYT10P24uY3JlYXRlRWxlbWVudE5TKHQscyk6bi5jcmVhdGVFbGVtZW50KHMpLGM9ZVsxXSx1PTE7aWYoYyYmdHlwZW9mIGM9PSJvYmplY3QiJiZjLm5vZGVUeXBlPT1udWxsJiYhQXJyYXkuaXNBcnJheShjKSl7dT0yO2ZvcihsZXQgZCBpbiBjKWlmKGNbZF0hPW51bGwpe2xldCBoPWQuaW5kZXhPZigiICIpO2g+MD9hLnNldEF0dHJpYnV0ZU5TKGQuc2xpY2UoMCxoKSxkLnNsaWNlKGgrMSksY1tkXSk6ZD09InN0eWxlIiYmYS5zdHlsZT9hLnN0eWxlLmNzc1RleHQ9Y1tkXTphLnNldEF0dHJpYnV0ZShkLGNbZF0pfX1mb3IobGV0IGQ9dTtkPGUubGVuZ3RoO2QrKyl7bGV0IGg9ZVtkXTtpZihoPT09MCl7aWYoZDxlLmxlbmd0aC0xfHxkPnUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbnRlbnQgaG9sZSBtdXN0IGJlIHRoZSBvbmx5IGNoaWxkIG9mIGl0cyBwYXJlbnQgbm9kZSIpO3JldHVybntkb206YSxjb250ZW50RE9NOmF9fWVsc2V7bGV0e2RvbTpmLGNvbnRlbnRET006cH09TnIobixoLHQscik7aWYoYS5hcHBlbmRDaGlsZChmKSxwKXtpZihsKXRocm93IG5ldyBSYW5nZUVycm9yKCJNdWx0aXBsZSBjb250ZW50IGhvbGVzIik7bD1wfX19cmV0dXJue2RvbTphLGNvbnRlbnRET006bH19Y29uc3QgJGM9NjU1MzUsQmM9TWF0aC5wb3coMiwxNik7ZnVuY3Rpb24geWYobixlKXtyZXR1cm4gbitlKkJjfWZ1bmN0aW9uIEVsKG4pe3JldHVybiBuJiRjfWZ1bmN0aW9uIGtmKG4pe3JldHVybihuLShuJiRjKSkvQmN9Y29uc3QgX2M9MSxIYz0yLFJyPTQsRmM9ODtjbGFzcyBJaXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5wb3M9ZSx0aGlzLmRlbEluZm89dCx0aGlzLnJlY292ZXI9cn1nZXQgZGVsZXRlZCgpe3JldHVybih0aGlzLmRlbEluZm8mRmMpPjB9Z2V0IGRlbGV0ZWRCZWZvcmUoKXtyZXR1cm4odGhpcy5kZWxJbmZvJihfY3xScikpPjB9Z2V0IGRlbGV0ZWRBZnRlcigpe3JldHVybih0aGlzLmRlbEluZm8mKEhjfFJyKSk+MH1nZXQgZGVsZXRlZEFjcm9zcygpe3JldHVybih0aGlzLmRlbEluZm8mUnIpPjB9fWNsYXNzIEVle2NvbnN0cnVjdG9yKGUsdD0hMSl7aWYodGhpcy5yYW5nZXM9ZSx0aGlzLmludmVydGVkPXQsIWUubGVuZ3RoJiZFZS5lbXB0eSlyZXR1cm4gRWUuZW1wdHl9cmVjb3ZlcihlKXtsZXQgdD0wLHI9RWwoZSk7aWYoIXRoaXMuaW52ZXJ0ZWQpZm9yKGxldCBzPTA7czxyO3MrKyl0Kz10aGlzLnJhbmdlc1tzKjMrMl0tdGhpcy5yYW5nZXNbcyozKzFdO3JldHVybiB0aGlzLnJhbmdlc1tyKjNdK3Qra2YoZSl9bWFwUmVzdWx0KGUsdD0xKXtyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMSl9bWFwKGUsdD0xKXtyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMCl9X21hcChlLHQscil7bGV0IHM9MCxpPXRoaXMuaW52ZXJ0ZWQ/MjoxLG89dGhpcy5pbnZlcnRlZD8xOjI7Zm9yKGxldCBsPTA7bDx0aGlzLnJhbmdlcy5sZW5ndGg7bCs9Myl7bGV0IGE9dGhpcy5yYW5nZXNbbF0tKHRoaXMuaW52ZXJ0ZWQ/czowKTtpZihhPmUpYnJlYWs7bGV0IGM9dGhpcy5yYW5nZXNbbCtpXSx1PXRoaXMucmFuZ2VzW2wrb10sZD1hK2M7aWYoZTw9ZCl7bGV0IGg9Yz9lPT1hPy0xOmU9PWQ/MTp0OnQsZj1hK3MrKGg8MD8wOnUpO2lmKHIpcmV0dXJuIGY7bGV0IHA9ZT09KHQ8MD9hOmQpP251bGw6eWYobC8zLGUtYSksbT1lPT1hP0hjOmU9PWQ/X2M6UnI7cmV0dXJuKHQ8MD9lIT1hOmUhPWQpJiYobXw9RmMpLG5ldyBJaShmLG0scCl9cys9dS1jfXJldHVybiByP2UrczpuZXcgSWkoZStzLDAsbnVsbCl9dG91Y2hlcyhlLHQpe2xldCByPTAscz1FbCh0KSxpPXRoaXMuaW52ZXJ0ZWQ/MjoxLG89dGhpcy5pbnZlcnRlZD8xOjI7Zm9yKGxldCBsPTA7bDx0aGlzLnJhbmdlcy5sZW5ndGg7bCs9Myl7bGV0IGE9dGhpcy5yYW5nZXNbbF0tKHRoaXMuaW52ZXJ0ZWQ/cjowKTtpZihhPmUpYnJlYWs7bGV0IGM9dGhpcy5yYW5nZXNbbCtpXSx1PWErYztpZihlPD11JiZsPT1zKjMpcmV0dXJuITA7cis9dGhpcy5yYW5nZXNbbCtvXS1jfXJldHVybiExfWZvckVhY2goZSl7bGV0IHQ9dGhpcy5pbnZlcnRlZD8yOjEscj10aGlzLmludmVydGVkPzE6Mjtmb3IobGV0IHM9MCxpPTA7czx0aGlzLnJhbmdlcy5sZW5ndGg7cys9Myl7bGV0IG89dGhpcy5yYW5nZXNbc10sbD1vLSh0aGlzLmludmVydGVkP2k6MCksYT1vKyh0aGlzLmludmVydGVkPzA6aSksYz10aGlzLnJhbmdlc1tzK3RdLHU9dGhpcy5yYW5nZXNbcytyXTtlKGwsbCtjLGEsYSt1KSxpKz11LWN9fWludmVydCgpe3JldHVybiBuZXcgRWUodGhpcy5yYW5nZXMsIXRoaXMuaW52ZXJ0ZWQpfXRvU3RyaW5nKCl7cmV0dXJuKHRoaXMuaW52ZXJ0ZWQ/Ii0iOiIiKStKU09OLnN0cmluZ2lmeSh0aGlzLnJhbmdlcyl9c3RhdGljIG9mZnNldChlKXtyZXR1cm4gZT09MD9FZS5lbXB0eTpuZXcgRWUoZTwwP1swLC1lLDBdOlswLDAsZV0pfX1FZS5lbXB0eT1uZXcgRWUoW10pO2NsYXNzIEpue2NvbnN0cnVjdG9yKGUsdCxyPTAscz1lP2UubGVuZ3RoOjApe3RoaXMubWlycm9yPXQsdGhpcy5mcm9tPXIsdGhpcy50bz1zLHRoaXMuX21hcHM9ZXx8W10sdGhpcy5vd25EYXRhPSEoZXx8dCl9Z2V0IG1hcHMoKXtyZXR1cm4gdGhpcy5fbWFwc31zbGljZShlPTAsdD10aGlzLm1hcHMubGVuZ3RoKXtyZXR1cm4gbmV3IEpuKHRoaXMuX21hcHMsdGhpcy5taXJyb3IsZSx0KX1hcHBlbmRNYXAoZSx0KXt0aGlzLm93bkRhdGF8fCh0aGlzLl9tYXBzPXRoaXMuX21hcHMuc2xpY2UoKSx0aGlzLm1pcnJvcj10aGlzLm1pcnJvciYmdGhpcy5taXJyb3Iuc2xpY2UoKSx0aGlzLm93bkRhdGE9ITApLHRoaXMudG89dGhpcy5fbWFwcy5wdXNoKGUpLHQhPW51bGwmJnRoaXMuc2V0TWlycm9yKHRoaXMuX21hcHMubGVuZ3RoLTEsdCl9YXBwZW5kTWFwcGluZyhlKXtmb3IobGV0IHQ9MCxyPXRoaXMuX21hcHMubGVuZ3RoO3Q8ZS5fbWFwcy5sZW5ndGg7dCsrKXtsZXQgcz1lLmdldE1pcnJvcih0KTt0aGlzLmFwcGVuZE1hcChlLl9tYXBzW3RdLHMhPW51bGwmJnM8dD9yK3M6dm9pZCAwKX19Z2V0TWlycm9yKGUpe2lmKHRoaXMubWlycm9yKXtmb3IobGV0IHQ9MDt0PHRoaXMubWlycm9yLmxlbmd0aDt0KyspaWYodGhpcy5taXJyb3JbdF09PWUpcmV0dXJuIHRoaXMubWlycm9yW3QrKHQlMj8tMToxKV19fXNldE1pcnJvcihlLHQpe3RoaXMubWlycm9yfHwodGhpcy5taXJyb3I9W10pLHRoaXMubWlycm9yLnB1c2goZSx0KX1hcHBlbmRNYXBwaW5nSW52ZXJ0ZWQoZSl7Zm9yKGxldCB0PWUubWFwcy5sZW5ndGgtMSxyPXRoaXMuX21hcHMubGVuZ3RoK2UuX21hcHMubGVuZ3RoO3Q+PTA7dC0tKXtsZXQgcz1lLmdldE1pcnJvcih0KTt0aGlzLmFwcGVuZE1hcChlLl9tYXBzW3RdLmludmVydCgpLHMhPW51bGwmJnM+dD9yLXMtMTp2b2lkIDApfX1pbnZlcnQoKXtsZXQgZT1uZXcgSm47cmV0dXJuIGUuYXBwZW5kTWFwcGluZ0ludmVydGVkKHRoaXMpLGV9bWFwKGUsdD0xKXtpZih0aGlzLm1pcnJvcilyZXR1cm4gdGhpcy5fbWFwKGUsdCwhMCk7Zm9yKGxldCByPXRoaXMuZnJvbTtyPHRoaXMudG87cisrKWU9dGhpcy5fbWFwc1tyXS5tYXAoZSx0KTtyZXR1cm4gZX1tYXBSZXN1bHQoZSx0PTEpe3JldHVybiB0aGlzLl9tYXAoZSx0LCExKX1fbWFwKGUsdCxyKXtsZXQgcz0wO2ZvcihsZXQgaT10aGlzLmZyb207aTx0aGlzLnRvO2krKyl7bGV0IG89dGhpcy5fbWFwc1tpXSxsPW8ubWFwUmVzdWx0KGUsdCk7aWYobC5yZWNvdmVyIT1udWxsKXtsZXQgYT10aGlzLmdldE1pcnJvcihpKTtpZihhIT1udWxsJiZhPmkmJmE8dGhpcy50byl7aT1hLGU9dGhpcy5fbWFwc1thXS5yZWNvdmVyKGwucmVjb3Zlcik7Y29udGludWV9fXN8PWwuZGVsSW5mbyxlPWwucG9zfXJldHVybiByP2U6bmV3IElpKGUscyxudWxsKX19Y29uc3QgZWk9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBiZXtnZXRNYXAoKXtyZXR1cm4gRWUuZW1wdHl9bWVyZ2UoZSl7cmV0dXJuIG51bGx9c3RhdGljIGZyb21KU09OKGUsdCl7aWYoIXR8fCF0LnN0ZXBUeXBlKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBTdGVwLmZyb21KU09OIik7bGV0IHI9ZWlbdC5zdGVwVHlwZV07aWYoIXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIHN0ZXAgdHlwZSAke3Quc3RlcFR5cGV9IGRlZmluZWRgKTtyZXR1cm4gci5mcm9tSlNPTihlLHQpfXN0YXRpYyBqc29uSUQoZSx0KXtpZihlIGluIGVpKXRocm93IG5ldyBSYW5nZUVycm9yKCJEdXBsaWNhdGUgdXNlIG9mIHN0ZXAgSlNPTiBJRCAiK2UpO3JldHVybiBlaVtlXT10LHQucHJvdG90eXBlLmpzb25JRD1lLHR9fWNsYXNzIHNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kb2M9ZSx0aGlzLmZhaWxlZD10fXN0YXRpYyBvayhlKXtyZXR1cm4gbmV3IHNlKGUsbnVsbCl9c3RhdGljIGZhaWwoZSl7cmV0dXJuIG5ldyBzZShudWxsLGUpfXN0YXRpYyBmcm9tUmVwbGFjZShlLHQscixzKXt0cnl7cmV0dXJuIHNlLm9rKGUucmVwbGFjZSh0LHIscykpfWNhdGNoKGkpe2lmKGkgaW5zdGFuY2VvZiBCcilyZXR1cm4gc2UuZmFpbChpLm1lc3NhZ2UpO3Rocm93IGl9fX1mdW5jdGlvbiBobyhuLGUsdCl7bGV0IHI9W107Zm9yKGxldCBzPTA7czxuLmNoaWxkQ291bnQ7cysrKXtsZXQgaT1uLmNoaWxkKHMpO2kuY29udGVudC5zaXplJiYoaT1pLmNvcHkoaG8oaS5jb250ZW50LGUsaSkpKSxpLmlzSW5saW5lJiYoaT1lKGksdCxzKSksci5wdXNoKGkpfXJldHVybiBTLmZyb21BcnJheShyKX1jbGFzcyB4dCBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLm1hcms9cn1hcHBseShlKXtsZXQgdD1lLnNsaWNlKHRoaXMuZnJvbSx0aGlzLnRvKSxyPWUucmVzb2x2ZSh0aGlzLmZyb20pLHM9ci5ub2RlKHIuc2hhcmVkRGVwdGgodGhpcy50bykpLGk9bmV3IEUoaG8odC5jb250ZW50LChvLGwpPT4hby5pc0F0b218fCFsLnR5cGUuYWxsb3dzTWFya1R5cGUodGhpcy5tYXJrLnR5cGUpP286by5tYXJrKHRoaXMubWFyay5hZGRUb1NldChvLm1hcmtzKSkscyksdC5vcGVuU3RhcnQsdC5vcGVuRW5kKTtyZXR1cm4gc2UuZnJvbVJlcGxhY2UoZSx0aGlzLmZyb20sdGhpcy50byxpKX1pbnZlcnQoKXtyZXR1cm4gbmV3IFZlKHRoaXMuZnJvbSx0aGlzLnRvLHRoaXMubWFyayl9bWFwKGUpe2xldCB0PWUubWFwUmVzdWx0KHRoaXMuZnJvbSwxKSxyPWUubWFwUmVzdWx0KHRoaXMudG8sLTEpO3JldHVybiB0LmRlbGV0ZWQmJnIuZGVsZXRlZHx8dC5wb3M+PXIucG9zP251bGw6bmV3IHh0KHQucG9zLHIucG9zLHRoaXMubWFyayl9bWVyZ2UoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB4dCYmZS5tYXJrLmVxKHRoaXMubWFyaykmJnRoaXMuZnJvbTw9ZS50byYmdGhpcy50bz49ZS5mcm9tP25ldyB4dChNYXRoLm1pbih0aGlzLmZyb20sZS5mcm9tKSxNYXRoLm1heCh0aGlzLnRvLGUudG8pLHRoaXMubWFyayk6bnVsbH10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6ImFkZE1hcmsiLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpLGZyb206dGhpcy5mcm9tLHRvOnRoaXMudG99fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmZyb20hPSJudW1iZXIifHx0eXBlb2YgdC50byE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEFkZE1hcmtTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyB4dCh0LmZyb20sdC50byxlLm1hcmtGcm9tSlNPTih0Lm1hcmspKX19YmUuanNvbklEKCJhZGRNYXJrIix4dCk7Y2xhc3MgVmUgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoKSx0aGlzLmZyb209ZSx0aGlzLnRvPXQsdGhpcy5tYXJrPXJ9YXBwbHkoZSl7bGV0IHQ9ZS5zbGljZSh0aGlzLmZyb20sdGhpcy50bykscj1uZXcgRShobyh0LmNvbnRlbnQscz0+cy5tYXJrKHRoaXMubWFyay5yZW1vdmVGcm9tU2V0KHMubWFya3MpKSxlKSx0Lm9wZW5TdGFydCx0Lm9wZW5FbmQpO3JldHVybiBzZS5mcm9tUmVwbGFjZShlLHRoaXMuZnJvbSx0aGlzLnRvLHIpfWludmVydCgpe3JldHVybiBuZXcgeHQodGhpcy5mcm9tLHRoaXMudG8sdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLHI9ZS5tYXBSZXN1bHQodGhpcy50bywtMSk7cmV0dXJuIHQuZGVsZXRlZCYmci5kZWxldGVkfHx0LnBvcz49ci5wb3M/bnVsbDpuZXcgVmUodC5wb3Msci5wb3MsdGhpcy5tYXJrKX1tZXJnZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFZlJiZlLm1hcmsuZXEodGhpcy5tYXJrKSYmdGhpcy5mcm9tPD1lLnRvJiZ0aGlzLnRvPj1lLmZyb20/bmV3IFZlKE1hdGgubWluKHRoaXMuZnJvbSxlLmZyb20pLE1hdGgubWF4KHRoaXMudG8sZS50byksdGhpcy5tYXJrKTpudWxsfXRvSlNPTigpe3JldHVybntzdGVwVHlwZToicmVtb3ZlTWFyayIsbWFyazp0aGlzLm1hcmsudG9KU09OKCksZnJvbTp0aGlzLmZyb20sdG86dGhpcy50b319c3RhdGljIGZyb21KU09OKGUsdCl7aWYodHlwZW9mIHQuZnJvbSE9Im51bWJlciJ8fHR5cGVvZiB0LnRvIT0ibnVtYmVyIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgUmVtb3ZlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IFZlKHQuZnJvbSx0LnRvLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1iZS5qc29uSUQoInJlbW92ZU1hcmsiLFZlKTtjbGFzcyB3dCBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLnBvcz1lLHRoaXMubWFyaz10fWFwcGx5KGUpe2xldCB0PWUubm9kZUF0KHRoaXMucG9zKTtpZighdClyZXR1cm4gc2UuZmFpbCgiTm8gbm9kZSBhdCBtYXJrIHN0ZXAncyBwb3NpdGlvbiIpO2xldCByPXQudHlwZS5jcmVhdGUodC5hdHRycyxudWxsLHRoaXMubWFyay5hZGRUb1NldCh0Lm1hcmtzKSk7cmV0dXJuIHNlLmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgRShTLmZyb20ociksMCx0LmlzTGVhZj8wOjEpKX1pbnZlcnQoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO2lmKHQpe2xldCByPXRoaXMubWFyay5hZGRUb1NldCh0Lm1hcmtzKTtpZihyLmxlbmd0aD09dC5tYXJrcy5sZW5ndGgpe2ZvcihsZXQgcz0wO3M8dC5tYXJrcy5sZW5ndGg7cysrKWlmKCF0Lm1hcmtzW3NdLmlzSW5TZXQocikpcmV0dXJuIG5ldyB3dCh0aGlzLnBvcyx0Lm1hcmtzW3NdKTtyZXR1cm4gbmV3IHd0KHRoaXMucG9zLHRoaXMubWFyayl9fXJldHVybiBuZXcgVnQodGhpcy5wb3MsdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IHd0KHQucG9zLHRoaXMubWFyayl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJhZGROb2RlTWFyayIscG9zOnRoaXMucG9zLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5wb3MhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBBZGROb2RlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IHd0KHQucG9zLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1iZS5qc29uSUQoImFkZE5vZGVNYXJrIix3dCk7Y2xhc3MgVnQgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy5wb3M9ZSx0aGlzLm1hcms9dH1hcHBseShlKXtsZXQgdD1lLm5vZGVBdCh0aGlzLnBvcyk7aWYoIXQpcmV0dXJuIHNlLmZhaWwoIk5vIG5vZGUgYXQgbWFyayBzdGVwJ3MgcG9zaXRpb24iKTtsZXQgcj10LnR5cGUuY3JlYXRlKHQuYXR0cnMsbnVsbCx0aGlzLm1hcmsucmVtb3ZlRnJvbVNldCh0Lm1hcmtzKSk7cmV0dXJuIHNlLmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgRShTLmZyb20ociksMCx0LmlzTGVhZj8wOjEpKX1pbnZlcnQoZSl7bGV0IHQ9ZS5ub2RlQXQodGhpcy5wb3MpO3JldHVybiF0fHwhdGhpcy5tYXJrLmlzSW5TZXQodC5tYXJrcyk/dGhpczpuZXcgd3QodGhpcy5wb3MsdGhpcy5tYXJrKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IFZ0KHQucG9zLHRoaXMubWFyayl9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJyZW1vdmVOb2RlTWFyayIscG9zOnRoaXMucG9zLG1hcms6dGhpcy5tYXJrLnRvSlNPTigpfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5wb3MhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBSZW1vdmVOb2RlTWFya1N0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IFZ0KHQucG9zLGUubWFya0Zyb21KU09OKHQubWFyaykpfX1iZS5qc29uSUQoInJlbW92ZU5vZGVNYXJrIixWdCk7Y2xhc3MgcmUgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQscixzPSExKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLnNsaWNlPXIsdGhpcy5zdHJ1Y3R1cmU9c31hcHBseShlKXtyZXR1cm4gdGhpcy5zdHJ1Y3R1cmUmJkRpKGUsdGhpcy5mcm9tLHRoaXMudG8pP3NlLmZhaWwoIlN0cnVjdHVyZSByZXBsYWNlIHdvdWxkIG92ZXJ3cml0ZSBjb250ZW50Iik6c2UuZnJvbVJlcGxhY2UoZSx0aGlzLmZyb20sdGhpcy50byx0aGlzLnNsaWNlKX1nZXRNYXAoKXtyZXR1cm4gbmV3IEVlKFt0aGlzLmZyb20sdGhpcy50by10aGlzLmZyb20sdGhpcy5zbGljZS5zaXplXSl9aW52ZXJ0KGUpe3JldHVybiBuZXcgcmUodGhpcy5mcm9tLHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemUsZS5zbGljZSh0aGlzLmZyb20sdGhpcy50bykpfW1hcChlKXtsZXQgdD1lLm1hcFJlc3VsdCh0aGlzLnRvLC0xKSxyPXRoaXMuZnJvbT09dGhpcy50byYmcmUuTUFQX0JJQVM8MD90OmUubWFwUmVzdWx0KHRoaXMuZnJvbSwxKTtyZXR1cm4gci5kZWxldGVkQWNyb3NzJiZ0LmRlbGV0ZWRBY3Jvc3M/bnVsbDpuZXcgcmUoci5wb3MsTWF0aC5tYXgoci5wb3MsdC5wb3MpLHRoaXMuc2xpY2UsdGhpcy5zdHJ1Y3R1cmUpfW1lcmdlKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHJlKXx8ZS5zdHJ1Y3R1cmV8fHRoaXMuc3RydWN0dXJlKXJldHVybiBudWxsO2lmKHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemU9PWUuZnJvbSYmIXRoaXMuc2xpY2Uub3BlbkVuZCYmIWUuc2xpY2Uub3BlblN0YXJ0KXtsZXQgdD10aGlzLnNsaWNlLnNpemUrZS5zbGljZS5zaXplPT0wP0UuZW1wdHk6bmV3IEUodGhpcy5zbGljZS5jb250ZW50LmFwcGVuZChlLnNsaWNlLmNvbnRlbnQpLHRoaXMuc2xpY2Uub3BlblN0YXJ0LGUuc2xpY2Uub3BlbkVuZCk7cmV0dXJuIG5ldyByZSh0aGlzLmZyb20sdGhpcy50bysoZS50by1lLmZyb20pLHQsdGhpcy5zdHJ1Y3R1cmUpfWVsc2UgaWYoZS50bz09dGhpcy5mcm9tJiYhdGhpcy5zbGljZS5vcGVuU3RhcnQmJiFlLnNsaWNlLm9wZW5FbmQpe2xldCB0PXRoaXMuc2xpY2Uuc2l6ZStlLnNsaWNlLnNpemU9PTA/RS5lbXB0eTpuZXcgRShlLnNsaWNlLmNvbnRlbnQuYXBwZW5kKHRoaXMuc2xpY2UuY29udGVudCksZS5zbGljZS5vcGVuU3RhcnQsdGhpcy5zbGljZS5vcGVuRW5kKTtyZXR1cm4gbmV3IHJlKGUuZnJvbSx0aGlzLnRvLHQsdGhpcy5zdHJ1Y3R1cmUpfWVsc2UgcmV0dXJuIG51bGx9dG9KU09OKCl7bGV0IGU9e3N0ZXBUeXBlOiJyZXBsYWNlIixmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvfTtyZXR1cm4gdGhpcy5zbGljZS5zaXplJiYoZS5zbGljZT10aGlzLnNsaWNlLnRvSlNPTigpKSx0aGlzLnN0cnVjdHVyZSYmKGUuc3RydWN0dXJlPSEwKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmZyb20hPSJudW1iZXIifHx0eXBlb2YgdC50byE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlcGxhY2VTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyByZSh0LmZyb20sdC50byxFLmZyb21KU09OKGUsdC5zbGljZSksISF0LnN0cnVjdHVyZSl9fXJlLk1BUF9CSUFTPTE7YmUuanNvbklEKCJyZXBsYWNlIixyZSk7Y2xhc3MgYWUgZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQscixzLGksbyxsPSExKXtzdXBlcigpLHRoaXMuZnJvbT1lLHRoaXMudG89dCx0aGlzLmdhcEZyb209cix0aGlzLmdhcFRvPXMsdGhpcy5zbGljZT1pLHRoaXMuaW5zZXJ0PW8sdGhpcy5zdHJ1Y3R1cmU9bH1hcHBseShlKXtpZih0aGlzLnN0cnVjdHVyZSYmKERpKGUsdGhpcy5mcm9tLHRoaXMuZ2FwRnJvbSl8fERpKGUsdGhpcy5nYXBUbyx0aGlzLnRvKSkpcmV0dXJuIHNlLmZhaWwoIlN0cnVjdHVyZSBnYXAtcmVwbGFjZSB3b3VsZCBvdmVyd3JpdGUgY29udGVudCIpO2xldCB0PWUuc2xpY2UodGhpcy5nYXBGcm9tLHRoaXMuZ2FwVG8pO2lmKHQub3BlblN0YXJ0fHx0Lm9wZW5FbmQpcmV0dXJuIHNlLmZhaWwoIkdhcCBpcyBub3QgYSBmbGF0IHJhbmdlIik7bGV0IHI9dGhpcy5zbGljZS5pbnNlcnRBdCh0aGlzLmluc2VydCx0LmNvbnRlbnQpO3JldHVybiByP3NlLmZyb21SZXBsYWNlKGUsdGhpcy5mcm9tLHRoaXMudG8scik6c2UuZmFpbCgiQ29udGVudCBkb2VzIG5vdCBmaXQgaW4gZ2FwIil9Z2V0TWFwKCl7cmV0dXJuIG5ldyBFZShbdGhpcy5mcm9tLHRoaXMuZ2FwRnJvbS10aGlzLmZyb20sdGhpcy5pbnNlcnQsdGhpcy5nYXBUbyx0aGlzLnRvLXRoaXMuZ2FwVG8sdGhpcy5zbGljZS5zaXplLXRoaXMuaW5zZXJ0XSl9aW52ZXJ0KGUpe2xldCB0PXRoaXMuZ2FwVG8tdGhpcy5nYXBGcm9tO3JldHVybiBuZXcgYWUodGhpcy5mcm9tLHRoaXMuZnJvbSt0aGlzLnNsaWNlLnNpemUrdCx0aGlzLmZyb20rdGhpcy5pbnNlcnQsdGhpcy5mcm9tK3RoaXMuaW5zZXJ0K3QsZS5zbGljZSh0aGlzLmZyb20sdGhpcy50bykucmVtb3ZlQmV0d2Vlbih0aGlzLmdhcEZyb20tdGhpcy5mcm9tLHRoaXMuZ2FwVG8tdGhpcy5mcm9tKSx0aGlzLmdhcEZyb20tdGhpcy5mcm9tLHRoaXMuc3RydWN0dXJlKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5mcm9tLDEpLHI9ZS5tYXBSZXN1bHQodGhpcy50bywtMSkscz10aGlzLmZyb209PXRoaXMuZ2FwRnJvbT90LnBvczplLm1hcCh0aGlzLmdhcEZyb20sLTEpLGk9dGhpcy50bz09dGhpcy5nYXBUbz9yLnBvczplLm1hcCh0aGlzLmdhcFRvLDEpO3JldHVybiB0LmRlbGV0ZWRBY3Jvc3MmJnIuZGVsZXRlZEFjcm9zc3x8czx0LnBvc3x8aT5yLnBvcz9udWxsOm5ldyBhZSh0LnBvcyxyLnBvcyxzLGksdGhpcy5zbGljZSx0aGlzLmluc2VydCx0aGlzLnN0cnVjdHVyZSl9dG9KU09OKCl7bGV0IGU9e3N0ZXBUeXBlOiJyZXBsYWNlQXJvdW5kIixmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLGdhcEZyb206dGhpcy5nYXBGcm9tLGdhcFRvOnRoaXMuZ2FwVG8saW5zZXJ0OnRoaXMuaW5zZXJ0fTtyZXR1cm4gdGhpcy5zbGljZS5zaXplJiYoZS5zbGljZT10aGlzLnNsaWNlLnRvSlNPTigpKSx0aGlzLnN0cnVjdHVyZSYmKGUuc3RydWN0dXJlPSEwKSxlfXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmZyb20hPSJudW1iZXIifHx0eXBlb2YgdC50byE9Im51bWJlciJ8fHR5cGVvZiB0LmdhcEZyb20hPSJudW1iZXIifHx0eXBlb2YgdC5nYXBUbyE9Im51bWJlciJ8fHR5cGVvZiB0Lmluc2VydCE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIFJlcGxhY2VBcm91bmRTdGVwLmZyb21KU09OIik7cmV0dXJuIG5ldyBhZSh0LmZyb20sdC50byx0LmdhcEZyb20sdC5nYXBUbyxFLmZyb21KU09OKGUsdC5zbGljZSksdC5pbnNlcnQsISF0LnN0cnVjdHVyZSl9fWJlLmpzb25JRCgicmVwbGFjZUFyb3VuZCIsYWUpO2Z1bmN0aW9uIERpKG4sZSx0KXtsZXQgcj1uLnJlc29sdmUoZSkscz10LWUsaT1yLmRlcHRoO2Zvcig7cz4wJiZpPjAmJnIuaW5kZXhBZnRlcihpKT09ci5ub2RlKGkpLmNoaWxkQ291bnQ7KWktLSxzLS07aWYocz4wKXtsZXQgbz1yLm5vZGUoaSkubWF5YmVDaGlsZChyLmluZGV4QWZ0ZXIoaSkpO2Zvcig7cz4wOyl7aWYoIW98fG8uaXNMZWFmKXJldHVybiEwO289by5maXJzdENoaWxkLHMtLX19cmV0dXJuITF9ZnVuY3Rpb24gYmYobixlLHQscil7bGV0IHM9W10saT1bXSxvLGw7bi5kb2Mubm9kZXNCZXR3ZWVuKGUsdCwoYSxjLHUpPT57aWYoIWEuaXNJbmxpbmUpcmV0dXJuO2xldCBkPWEubWFya3M7aWYoIXIuaXNJblNldChkKSYmdS50eXBlLmFsbG93c01hcmtUeXBlKHIudHlwZSkpe2xldCBoPU1hdGgubWF4KGMsZSksZj1NYXRoLm1pbihjK2Eubm9kZVNpemUsdCkscD1yLmFkZFRvU2V0KGQpO2ZvcihsZXQgbT0wO208ZC5sZW5ndGg7bSsrKWRbbV0uaXNJblNldChwKXx8KG8mJm8udG89PWgmJm8ubWFyay5lcShkW21dKT9vLnRvPWY6cy5wdXNoKG89bmV3IFZlKGgsZixkW21dKSkpO2wmJmwudG89PWg/bC50bz1mOmkucHVzaChsPW5ldyB4dChoLGYscikpfX0pLHMuZm9yRWFjaChhPT5uLnN0ZXAoYSkpLGkuZm9yRWFjaChhPT5uLnN0ZXAoYSkpfWZ1bmN0aW9uIHhmKG4sZSx0LHIpe2xldCBzPVtdLGk9MDtuLmRvYy5ub2Rlc0JldHdlZW4oZSx0LChvLGwpPT57aWYoIW8uaXNJbmxpbmUpcmV0dXJuO2krKztsZXQgYT1udWxsO2lmKHIgaW5zdGFuY2VvZiBOcyl7bGV0IGM9by5tYXJrcyx1O2Zvcig7dT1yLmlzSW5TZXQoYyk7KShhfHwoYT1bXSkpLnB1c2godSksYz11LnJlbW92ZUZyb21TZXQoYyl9ZWxzZSByP3IuaXNJblNldChvLm1hcmtzKSYmKGE9W3JdKTphPW8ubWFya3M7aWYoYSYmYS5sZW5ndGgpe2xldCBjPU1hdGgubWluKGwrby5ub2RlU2l6ZSx0KTtmb3IobGV0IHU9MDt1PGEubGVuZ3RoO3UrKyl7bGV0IGQ9YVt1XSxoO2ZvcihsZXQgZj0wO2Y8cy5sZW5ndGg7ZisrKXtsZXQgcD1zW2ZdO3Auc3RlcD09aS0xJiZkLmVxKHNbZl0uc3R5bGUpJiYoaD1wKX1oPyhoLnRvPWMsaC5zdGVwPWkpOnMucHVzaCh7c3R5bGU6ZCxmcm9tOk1hdGgubWF4KGwsZSksdG86YyxzdGVwOml9KX19fSkscy5mb3JFYWNoKG89Pm4uc3RlcChuZXcgVmUoby5mcm9tLG8udG8sby5zdHlsZSkpKX1mdW5jdGlvbiBmbyhuLGUsdCxyPXQuY29udGVudE1hdGNoLHM9ITApe2xldCBpPW4uZG9jLm5vZGVBdChlKSxvPVtdLGw9ZSsxO2ZvcihsZXQgYT0wO2E8aS5jaGlsZENvdW50O2ErKyl7bGV0IGM9aS5jaGlsZChhKSx1PWwrYy5ub2RlU2l6ZSxkPXIubWF0Y2hUeXBlKGMudHlwZSk7aWYoIWQpby5wdXNoKG5ldyByZShsLHUsRS5lbXB0eSkpO2Vsc2V7cj1kO2ZvcihsZXQgaD0wO2g8Yy5tYXJrcy5sZW5ndGg7aCsrKXQuYWxsb3dzTWFya1R5cGUoYy5tYXJrc1toXS50eXBlKXx8bi5zdGVwKG5ldyBWZShsLHUsYy5tYXJrc1toXSkpO2lmKHMmJmMuaXNUZXh0JiZ0LndoaXRlc3BhY2UhPSJwcmUiKXtsZXQgaCxmPS9ccj9cbnxcci9nLHA7Zm9yKDtoPWYuZXhlYyhjLnRleHQpOylwfHwocD1uZXcgRShTLmZyb20odC5zY2hlbWEudGV4dCgiICIsdC5hbGxvd2VkTWFya3MoYy5tYXJrcykpKSwwLDApKSxvLnB1c2gobmV3IHJlKGwraC5pbmRleCxsK2guaW5kZXgraFswXS5sZW5ndGgscCkpfX1sPXV9aWYoIXIudmFsaWRFbmQpe2xldCBhPXIuZmlsbEJlZm9yZShTLmVtcHR5LCEwKTtuLnJlcGxhY2UobCxsLG5ldyBFKGEsMCwwKSl9Zm9yKGxldCBhPW8ubGVuZ3RoLTE7YT49MDthLS0pbi5zdGVwKG9bYV0pfWZ1bmN0aW9uIHdmKG4sZSx0KXtyZXR1cm4oZT09MHx8bi5jYW5SZXBsYWNlKGUsbi5jaGlsZENvdW50KSkmJih0PT1uLmNoaWxkQ291bnR8fG4uY2FuUmVwbGFjZSgwLHQpKX1mdW5jdGlvbiBtbihuKXtsZXQgdD1uLnBhcmVudC5jb250ZW50LmN1dEJ5SW5kZXgobi5zdGFydEluZGV4LG4uZW5kSW5kZXgpO2ZvcihsZXQgcj1uLmRlcHRoLHM9MCxpPTA7Oy0tcil7bGV0IG89bi4kZnJvbS5ub2RlKHIpLGw9bi4kZnJvbS5pbmRleChyKStzLGE9bi4kdG8uaW5kZXhBZnRlcihyKS1pO2lmKHI8bi5kZXB0aCYmby5jYW5SZXBsYWNlKGwsYSx0KSlyZXR1cm4gcjtpZihyPT0wfHxvLnR5cGUuc3BlYy5pc29sYXRpbmd8fCF3ZihvLGwsYSkpYnJlYWs7bCYmKHM9MSksYTxvLmNoaWxkQ291bnQmJihpPTEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHZmKG4sZSx0KXtsZXR7JGZyb206ciwkdG86cyxkZXB0aDppfT1lLG89ci5iZWZvcmUoaSsxKSxsPXMuYWZ0ZXIoaSsxKSxhPW8sYz1sLHU9Uy5lbXB0eSxkPTA7Zm9yKGxldCBwPWksbT0hMTtwPnQ7cC0tKW18fHIuaW5kZXgocCk+MD8obT0hMCx1PVMuZnJvbShyLm5vZGUocCkuY29weSh1KSksZCsrKTphLS07bGV0IGg9Uy5lbXB0eSxmPTA7Zm9yKGxldCBwPWksbT0hMTtwPnQ7cC0tKW18fHMuYWZ0ZXIocCsxKTxzLmVuZChwKT8obT0hMCxoPVMuZnJvbShzLm5vZGUocCkuY29weShoKSksZisrKTpjKys7bi5zdGVwKG5ldyBhZShhLGMsbyxsLG5ldyBFKHUuYXBwZW5kKGgpLGQsZiksdS5zaXplLWQsITApKX1mdW5jdGlvbiBwbyhuLGUsdD1udWxsLHI9bil7bGV0IHM9U2YobixlKSxpPXMmJkNmKHIsZSk7cmV0dXJuIGk/cy5tYXAoQWwpLmNvbmNhdCh7dHlwZTplLGF0dHJzOnR9KS5jb25jYXQoaS5tYXAoQWwpKTpudWxsfWZ1bmN0aW9uIEFsKG4pe3JldHVybnt0eXBlOm4sYXR0cnM6bnVsbH19ZnVuY3Rpb24gU2YobixlKXtsZXR7cGFyZW50OnQsc3RhcnRJbmRleDpyLGVuZEluZGV4OnN9PW4saT10LmNvbnRlbnRNYXRjaEF0KHIpLmZpbmRXcmFwcGluZyhlKTtpZighaSlyZXR1cm4gbnVsbDtsZXQgbz1pLmxlbmd0aD9pWzBdOmU7cmV0dXJuIHQuY2FuUmVwbGFjZVdpdGgocixzLG8pP2k6bnVsbH1mdW5jdGlvbiBDZihuLGUpe2xldHtwYXJlbnQ6dCxzdGFydEluZGV4OnIsZW5kSW5kZXg6c309bixpPXQuY2hpbGQociksbz1lLmNvbnRlbnRNYXRjaC5maW5kV3JhcHBpbmcoaS50eXBlKTtpZighbylyZXR1cm4gbnVsbDtsZXQgYT0oby5sZW5ndGg/b1tvLmxlbmd0aC0xXTplKS5jb250ZW50TWF0Y2g7Zm9yKGxldCBjPXI7YSYmYzxzO2MrKylhPWEubWF0Y2hUeXBlKHQuY2hpbGQoYykudHlwZSk7cmV0dXJuIWF8fCFhLnZhbGlkRW5kP251bGw6b31mdW5jdGlvbiBUZihuLGUsdCl7bGV0IHI9Uy5lbXB0eTtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj0wO28tLSl7aWYoci5zaXplKXtsZXQgbD10W29dLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQocik7aWYoIWx8fCFsLnZhbGlkRW5kKXRocm93IG5ldyBSYW5nZUVycm9yKCJXcmFwcGVyIHR5cGUgZ2l2ZW4gdG8gVHJhbnNmb3JtLndyYXAgZG9lcyBub3QgZm9ybSB2YWxpZCBjb250ZW50IG9mIGl0cyBwYXJlbnQgd3JhcHBlciIpfXI9Uy5mcm9tKHRbb10udHlwZS5jcmVhdGUodFtvXS5hdHRycyxyKSl9bGV0IHM9ZS5zdGFydCxpPWUuZW5kO24uc3RlcChuZXcgYWUocyxpLHMsaSxuZXcgRShyLDAsMCksdC5sZW5ndGgsITApKX1mdW5jdGlvbiBNZihuLGUsdCxyLHMpe2lmKCFyLmlzVGV4dGJsb2NrKXRocm93IG5ldyBSYW5nZUVycm9yKCJUeXBlIGdpdmVuIHRvIHNldEJsb2NrVHlwZSBzaG91bGQgYmUgYSB0ZXh0YmxvY2siKTtsZXQgaT1uLnN0ZXBzLmxlbmd0aDtuLmRvYy5ub2Rlc0JldHdlZW4oZSx0LChvLGwpPT57bGV0IGE9dHlwZW9mIHM9PSJmdW5jdGlvbiI/cyhvKTpzO2lmKG8uaXNUZXh0YmxvY2smJiFvLmhhc01hcmt1cChyLGEpJiZFZihuLmRvYyxuLm1hcHBpbmcuc2xpY2UoaSkubWFwKGwpLHIpKXtsZXQgYz1udWxsO2lmKHIuc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50KXtsZXQgZj1yLndoaXRlc3BhY2U9PSJwcmUiLHA9ISFyLmNvbnRlbnRNYXRjaC5tYXRjaFR5cGUoci5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpO2YmJiFwP2M9ITE6IWYmJnAmJihjPSEwKX1jPT09ITEmJlVjKG4sbyxsLGkpLGZvKG4sbi5tYXBwaW5nLnNsaWNlKGkpLm1hcChsLDEpLHIsdm9pZCAwLGM9PT1udWxsKTtsZXQgdT1uLm1hcHBpbmcuc2xpY2UoaSksZD11Lm1hcChsLDEpLGg9dS5tYXAobCtvLm5vZGVTaXplLDEpO3JldHVybiBuLnN0ZXAobmV3IGFlKGQsaCxkKzEsaC0xLG5ldyBFKFMuZnJvbShyLmNyZWF0ZShhLG51bGwsby5tYXJrcykpLDAsMCksMSwhMCkpLGM9PT0hMCYmVmMobixvLGwsaSksITF9fSl9ZnVuY3Rpb24gVmMobixlLHQscil7ZS5mb3JFYWNoKChzLGkpPT57aWYocy5pc1RleHQpe2xldCBvLGw9L1xyP1xufFxyL2c7Zm9yKDtvPWwuZXhlYyhzLnRleHQpOyl7bGV0IGE9bi5tYXBwaW5nLnNsaWNlKHIpLm1hcCh0KzEraStvLmluZGV4KTtuLnJlcGxhY2VXaXRoKGEsYSsxLGUudHlwZS5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQuY3JlYXRlKCkpfX19KX1mdW5jdGlvbiBVYyhuLGUsdCxyKXtlLmZvckVhY2goKHMsaSk9PntpZihzLnR5cGU9PXMudHlwZS5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpe2xldCBvPW4ubWFwcGluZy5zbGljZShyKS5tYXAodCsxK2kpO24ucmVwbGFjZVdpdGgobyxvKzEsZS50eXBlLnNjaGVtYS50ZXh0KGAKYCkpfX0pfWZ1bmN0aW9uIEVmKG4sZSx0KXtsZXQgcj1uLnJlc29sdmUoZSkscz1yLmluZGV4KCk7cmV0dXJuIHIucGFyZW50LmNhblJlcGxhY2VXaXRoKHMscysxLHQpfWZ1bmN0aW9uIEFmKG4sZSx0LHIscyl7bGV0IGk9bi5kb2Mubm9kZUF0KGUpO2lmKCFpKXRocm93IG5ldyBSYW5nZUVycm9yKCJObyBub2RlIGF0IGdpdmVuIHBvc2l0aW9uIik7dHx8KHQ9aS50eXBlKTtsZXQgbz10LmNyZWF0ZShyLG51bGwsc3x8aS5tYXJrcyk7aWYoaS5pc0xlYWYpcmV0dXJuIG4ucmVwbGFjZVdpdGgoZSxlK2kubm9kZVNpemUsbyk7aWYoIXQudmFsaWRDb250ZW50KGkuY29udGVudCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgY29udGVudCBmb3Igbm9kZSB0eXBlICIrdC5uYW1lKTtuLnN0ZXAobmV3IGFlKGUsZStpLm5vZGVTaXplLGUrMSxlK2kubm9kZVNpemUtMSxuZXcgRShTLmZyb20obyksMCwwKSwxLCEwKSl9ZnVuY3Rpb24gb3QobixlLHQ9MSxyKXtsZXQgcz1uLnJlc29sdmUoZSksaT1zLmRlcHRoLXQsbz1yJiZyW3IubGVuZ3RoLTFdfHxzLnBhcmVudDtpZihpPDB8fHMucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmd8fCFzLnBhcmVudC5jYW5SZXBsYWNlKHMuaW5kZXgoKSxzLnBhcmVudC5jaGlsZENvdW50KXx8IW8udHlwZS52YWxpZENvbnRlbnQocy5wYXJlbnQuY29udGVudC5jdXRCeUluZGV4KHMuaW5kZXgoKSxzLnBhcmVudC5jaGlsZENvdW50KSkpcmV0dXJuITE7Zm9yKGxldCBjPXMuZGVwdGgtMSx1PXQtMjtjPmk7Yy0tLHUtLSl7bGV0IGQ9cy5ub2RlKGMpLGg9cy5pbmRleChjKTtpZihkLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IGY9ZC5jb250ZW50LmN1dEJ5SW5kZXgoaCxkLmNoaWxkQ291bnQpLHA9ciYmclt1KzFdO3AmJihmPWYucmVwbGFjZUNoaWxkKDAscC50eXBlLmNyZWF0ZShwLmF0dHJzKSkpO2xldCBtPXImJnJbdV18fGQ7aWYoIWQuY2FuUmVwbGFjZShoKzEsZC5jaGlsZENvdW50KXx8IW0udHlwZS52YWxpZENvbnRlbnQoZikpcmV0dXJuITF9bGV0IGw9cy5pbmRleEFmdGVyKGkpLGE9ciYmclswXTtyZXR1cm4gcy5ub2RlKGkpLmNhblJlcGxhY2VXaXRoKGwsbCxhP2EudHlwZTpzLm5vZGUoaSsxKS50eXBlKX1mdW5jdGlvbiBPZihuLGUsdD0xLHIpe2xldCBzPW4uZG9jLnJlc29sdmUoZSksaT1TLmVtcHR5LG89Uy5lbXB0eTtmb3IobGV0IGw9cy5kZXB0aCxhPXMuZGVwdGgtdCxjPXQtMTtsPmE7bC0tLGMtLSl7aT1TLmZyb20ocy5ub2RlKGwpLmNvcHkoaSkpO2xldCB1PXImJnJbY107bz1TLmZyb20odT91LnR5cGUuY3JlYXRlKHUuYXR0cnMsbyk6cy5ub2RlKGwpLmNvcHkobykpfW4uc3RlcChuZXcgcmUoZSxlLG5ldyBFKGkuYXBwZW5kKG8pLHQsdCksITApKX1mdW5jdGlvbiBBdChuLGUpe2xldCB0PW4ucmVzb2x2ZShlKSxyPXQuaW5kZXgoKTtyZXR1cm4gamModC5ub2RlQmVmb3JlLHQubm9kZUFmdGVyKSYmdC5wYXJlbnQuY2FuUmVwbGFjZShyLHIrMSl9ZnVuY3Rpb24gTmYobixlKXtlLmNvbnRlbnQuc2l6ZXx8bi50eXBlLmNvbXBhdGlibGVDb250ZW50KGUudHlwZSk7bGV0IHQ9bi5jb250ZW50TWF0Y2hBdChuLmNoaWxkQ291bnQpLHtsaW5lYnJlYWtSZXBsYWNlbWVudDpyfT1uLnR5cGUuc2NoZW1hO2ZvcihsZXQgcz0wO3M8ZS5jaGlsZENvdW50O3MrKyl7bGV0IGk9ZS5jaGlsZChzKSxvPWkudHlwZT09cj9uLnR5cGUuc2NoZW1hLm5vZGVzLnRleHQ6aS50eXBlO2lmKHQ9dC5tYXRjaFR5cGUobyksIXR8fCFuLnR5cGUuYWxsb3dzTWFya3MoaS5tYXJrcykpcmV0dXJuITF9cmV0dXJuIHQudmFsaWRFbmR9ZnVuY3Rpb24gamMobixlKXtyZXR1cm4hIShuJiZlJiYhbi5pc0xlYWYmJk5mKG4sZSkpfWZ1bmN0aW9uIFJzKG4sZSx0PS0xKXtsZXQgcj1uLnJlc29sdmUoZSk7Zm9yKGxldCBzPXIuZGVwdGg7O3MtLSl7bGV0IGksbyxsPXIuaW5kZXgocyk7aWYocz09ci5kZXB0aD8oaT1yLm5vZGVCZWZvcmUsbz1yLm5vZGVBZnRlcik6dD4wPyhpPXIubm9kZShzKzEpLGwrKyxvPXIubm9kZShzKS5tYXliZUNoaWxkKGwpKTooaT1yLm5vZGUocykubWF5YmVDaGlsZChsLTEpLG89ci5ub2RlKHMrMSkpLGkmJiFpLmlzVGV4dGJsb2NrJiZqYyhpLG8pJiZyLm5vZGUocykuY2FuUmVwbGFjZShsLGwrMSkpcmV0dXJuIGU7aWYocz09MClicmVhaztlPXQ8MD9yLmJlZm9yZShzKTpyLmFmdGVyKHMpfX1mdW5jdGlvbiBSZihuLGUsdCl7bGV0IHI9bnVsbCx7bGluZWJyZWFrUmVwbGFjZW1lbnQ6c309bi5kb2MudHlwZS5zY2hlbWEsaT1uLmRvYy5yZXNvbHZlKGUtdCksbz1pLm5vZGUoKS50eXBlO2lmKHMmJm8uaW5saW5lQ29udGVudCl7bGV0IHU9by53aGl0ZXNwYWNlPT0icHJlIixkPSEhby5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKHMpO3UmJiFkP3I9ITE6IXUmJmQmJihyPSEwKX1sZXQgbD1uLnN0ZXBzLmxlbmd0aDtpZihyPT09ITEpe2xldCB1PW4uZG9jLnJlc29sdmUoZSt0KTtVYyhuLHUubm9kZSgpLHUuYmVmb3JlKCksbCl9by5pbmxpbmVDb250ZW50JiZmbyhuLGUrdC0xLG8saS5ub2RlKCkuY29udGVudE1hdGNoQXQoaS5pbmRleCgpKSxyPT1udWxsKTtsZXQgYT1uLm1hcHBpbmcuc2xpY2UobCksYz1hLm1hcChlLXQpO2lmKG4uc3RlcChuZXcgcmUoYyxhLm1hcChlK3QsLTEpLEUuZW1wdHksITApKSxyPT09ITApe2xldCB1PW4uZG9jLnJlc29sdmUoYyk7VmMobix1Lm5vZGUoKSx1LmJlZm9yZSgpLG4uc3RlcHMubGVuZ3RoKX1yZXR1cm4gbn1mdW5jdGlvbiBJZihuLGUsdCl7bGV0IHI9bi5yZXNvbHZlKGUpO2lmKHIucGFyZW50LmNhblJlcGxhY2VXaXRoKHIuaW5kZXgoKSxyLmluZGV4KCksdCkpcmV0dXJuIGU7aWYoci5wYXJlbnRPZmZzZXQ9PTApZm9yKGxldCBzPXIuZGVwdGgtMTtzPj0wO3MtLSl7bGV0IGk9ci5pbmRleChzKTtpZihyLm5vZGUocykuY2FuUmVwbGFjZVdpdGgoaSxpLHQpKXJldHVybiByLmJlZm9yZShzKzEpO2lmKGk+MClyZXR1cm4gbnVsbH1pZihyLnBhcmVudE9mZnNldD09ci5wYXJlbnQuY29udGVudC5zaXplKWZvcihsZXQgcz1yLmRlcHRoLTE7cz49MDtzLS0pe2xldCBpPXIuaW5kZXhBZnRlcihzKTtpZihyLm5vZGUocykuY2FuUmVwbGFjZVdpdGgoaSxpLHQpKXJldHVybiByLmFmdGVyKHMrMSk7aWYoaTxyLm5vZGUocykuY2hpbGRDb3VudClyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBxYyhuLGUsdCl7bGV0IHI9bi5yZXNvbHZlKGUpO2lmKCF0LmNvbnRlbnQuc2l6ZSlyZXR1cm4gZTtsZXQgcz10LmNvbnRlbnQ7Zm9yKGxldCBpPTA7aTx0Lm9wZW5TdGFydDtpKyspcz1zLmZpcnN0Q2hpbGQuY29udGVudDtmb3IobGV0IGk9MTtpPD0odC5vcGVuU3RhcnQ9PTAmJnQuc2l6ZT8yOjEpO2krKylmb3IobGV0IG89ci5kZXB0aDtvPj0wO28tLSl7bGV0IGw9bz09ci5kZXB0aD8wOnIucG9zPD0oci5zdGFydChvKzEpK3IuZW5kKG8rMSkpLzI/LTE6MSxhPXIuaW5kZXgobykrKGw+MD8xOjApLGM9ci5ub2RlKG8pLHU9ITE7aWYoaT09MSl1PWMuY2FuUmVwbGFjZShhLGEscyk7ZWxzZXtsZXQgZD1jLmNvbnRlbnRNYXRjaEF0KGEpLmZpbmRXcmFwcGluZyhzLmZpcnN0Q2hpbGQudHlwZSk7dT1kJiZjLmNhblJlcGxhY2VXaXRoKGEsYSxkWzBdKX1pZih1KXJldHVybiBsPT0wP3IucG9zOmw8MD9yLmJlZm9yZShvKzEpOnIuYWZ0ZXIobysxKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBJcyhuLGUsdD1lLHI9RS5lbXB0eSl7aWYoZT09dCYmIXIuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgcz1uLnJlc29sdmUoZSksaT1uLnJlc29sdmUodCk7cmV0dXJuIFdjKHMsaSxyKT9uZXcgcmUoZSx0LHIpOm5ldyBEZihzLGkscikuZml0KCl9ZnVuY3Rpb24gV2MobixlLHQpe3JldHVybiF0Lm9wZW5TdGFydCYmIXQub3BlbkVuZCYmbi5zdGFydCgpPT1lLnN0YXJ0KCkmJm4ucGFyZW50LmNhblJlcGxhY2Uobi5pbmRleCgpLGUuaW5kZXgoKSx0LmNvbnRlbnQpfWNsYXNzIERme2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLiRmcm9tPWUsdGhpcy4kdG89dCx0aGlzLnVucGxhY2VkPXIsdGhpcy5mcm9udGllcj1bXSx0aGlzLnBsYWNlZD1TLmVtcHR5O2ZvcihsZXQgcz0wO3M8PWUuZGVwdGg7cysrKXtsZXQgaT1lLm5vZGUocyk7dGhpcy5mcm9udGllci5wdXNoKHt0eXBlOmkudHlwZSxtYXRjaDppLmNvbnRlbnRNYXRjaEF0KGUuaW5kZXhBZnRlcihzKSl9KX1mb3IobGV0IHM9ZS5kZXB0aDtzPjA7cy0tKXRoaXMucGxhY2VkPVMuZnJvbShlLm5vZGUocykuY29weSh0aGlzLnBsYWNlZCkpfWdldCBkZXB0aCgpe3JldHVybiB0aGlzLmZyb250aWVyLmxlbmd0aC0xfWZpdCgpe2Zvcig7dGhpcy51bnBsYWNlZC5zaXplOyl7bGV0IGM9dGhpcy5maW5kRml0dGFibGUoKTtjP3RoaXMucGxhY2VOb2RlcyhjKTp0aGlzLm9wZW5Nb3JlKCl8fHRoaXMuZHJvcE5vZGUoKX1sZXQgZT10aGlzLm11c3RNb3ZlSW5saW5lKCksdD10aGlzLnBsYWNlZC5zaXplLXRoaXMuZGVwdGgtdGhpcy4kZnJvbS5kZXB0aCxyPXRoaXMuJGZyb20scz10aGlzLmNsb3NlKGU8MD90aGlzLiR0bzpyLmRvYy5yZXNvbHZlKGUpKTtpZighcylyZXR1cm4gbnVsbDtsZXQgaT10aGlzLnBsYWNlZCxvPXIuZGVwdGgsbD1zLmRlcHRoO2Zvcig7byYmbCYmaS5jaGlsZENvdW50PT0xOylpPWkuZmlyc3RDaGlsZC5jb250ZW50LG8tLSxsLS07bGV0IGE9bmV3IEUoaSxvLGwpO3JldHVybiBlPi0xP25ldyBhZShyLnBvcyxlLHRoaXMuJHRvLnBvcyx0aGlzLiR0by5lbmQoKSxhLHQpOmEuc2l6ZXx8ci5wb3MhPXRoaXMuJHRvLnBvcz9uZXcgcmUoci5wb3Mscy5wb3MsYSk6bnVsbH1maW5kRml0dGFibGUoKXtsZXQgZT10aGlzLnVucGxhY2VkLm9wZW5TdGFydDtmb3IobGV0IHQ9dGhpcy51bnBsYWNlZC5jb250ZW50LHI9MCxzPXRoaXMudW5wbGFjZWQub3BlbkVuZDtyPGU7cisrKXtsZXQgaT10LmZpcnN0Q2hpbGQ7aWYodC5jaGlsZENvdW50PjEmJihzPTApLGkudHlwZS5zcGVjLmlzb2xhdGluZyYmczw9cil7ZT1yO2JyZWFrfXQ9aS5jb250ZW50fWZvcihsZXQgdD0xO3Q8PTI7dCsrKWZvcihsZXQgcj10PT0xP2U6dGhpcy51bnBsYWNlZC5vcGVuU3RhcnQ7cj49MDtyLS0pe2xldCBzLGk9bnVsbDtyPyhpPXRpKHRoaXMudW5wbGFjZWQuY29udGVudCxyLTEpLmZpcnN0Q2hpbGQscz1pLmNvbnRlbnQpOnM9dGhpcy51bnBsYWNlZC5jb250ZW50O2xldCBvPXMuZmlyc3RDaGlsZDtmb3IobGV0IGw9dGhpcy5kZXB0aDtsPj0wO2wtLSl7bGV0e3R5cGU6YSxtYXRjaDpjfT10aGlzLmZyb250aWVyW2xdLHUsZD1udWxsO2lmKHQ9PTEmJihvP2MubWF0Y2hUeXBlKG8udHlwZSl8fChkPWMuZmlsbEJlZm9yZShTLmZyb20obyksITEpKTppJiZhLmNvbXBhdGlibGVDb250ZW50KGkudHlwZSkpKXJldHVybntzbGljZURlcHRoOnIsZnJvbnRpZXJEZXB0aDpsLHBhcmVudDppLGluamVjdDpkfTtpZih0PT0yJiZvJiYodT1jLmZpbmRXcmFwcGluZyhvLnR5cGUpKSlyZXR1cm57c2xpY2VEZXB0aDpyLGZyb250aWVyRGVwdGg6bCxwYXJlbnQ6aSx3cmFwOnV9O2lmKGkmJmMubWF0Y2hUeXBlKGkudHlwZSkpYnJlYWt9fX1vcGVuTW9yZSgpe2xldHtjb250ZW50OmUsb3BlblN0YXJ0OnQsb3BlbkVuZDpyfT10aGlzLnVucGxhY2VkLHM9dGkoZSx0KTtyZXR1cm4hcy5jaGlsZENvdW50fHxzLmZpcnN0Q2hpbGQuaXNMZWFmPyExOih0aGlzLnVucGxhY2VkPW5ldyBFKGUsdCsxLE1hdGgubWF4KHIscy5zaXplK3Q+PWUuc2l6ZS1yP3QrMTowKSksITApfWRyb3BOb2RlKCl7bGV0e2NvbnRlbnQ6ZSxvcGVuU3RhcnQ6dCxvcGVuRW5kOnJ9PXRoaXMudW5wbGFjZWQscz10aShlLHQpO2lmKHMuY2hpbGRDb3VudDw9MSYmdD4wKXtsZXQgaT1lLnNpemUtdDw9dCtzLnNpemU7dGhpcy51bnBsYWNlZD1uZXcgRShDbihlLHQtMSwxKSx0LTEsaT90LTE6cil9ZWxzZSB0aGlzLnVucGxhY2VkPW5ldyBFKENuKGUsdCwxKSx0LHIpfXBsYWNlTm9kZXMoe3NsaWNlRGVwdGg6ZSxmcm9udGllckRlcHRoOnQscGFyZW50OnIsaW5qZWN0OnMsd3JhcDppfSl7Zm9yKDt0aGlzLmRlcHRoPnQ7KXRoaXMuY2xvc2VGcm9udGllck5vZGUoKTtpZihpKWZvcihsZXQgbT0wO208aS5sZW5ndGg7bSsrKXRoaXMub3BlbkZyb250aWVyTm9kZShpW21dKTtsZXQgbz10aGlzLnVucGxhY2VkLGw9cj9yLmNvbnRlbnQ6by5jb250ZW50LGE9by5vcGVuU3RhcnQtZSxjPTAsdT1bXSx7bWF0Y2g6ZCx0eXBlOmh9PXRoaXMuZnJvbnRpZXJbdF07aWYocyl7Zm9yKGxldCBtPTA7bTxzLmNoaWxkQ291bnQ7bSsrKXUucHVzaChzLmNoaWxkKG0pKTtkPWQubWF0Y2hGcmFnbWVudChzKX1sZXQgZj1sLnNpemUrZS0oby5jb250ZW50LnNpemUtby5vcGVuRW5kKTtmb3IoO2M8bC5jaGlsZENvdW50Oyl7bGV0IG09bC5jaGlsZChjKSxnPWQubWF0Y2hUeXBlKG0udHlwZSk7aWYoIWcpYnJlYWs7YysrLChjPjF8fGE9PTB8fG0uY29udGVudC5zaXplKSYmKGQ9Zyx1LnB1c2goS2MobS5tYXJrKGguYWxsb3dlZE1hcmtzKG0ubWFya3MpKSxjPT0xP2E6MCxjPT1sLmNoaWxkQ291bnQ/ZjotMSkpKX1sZXQgcD1jPT1sLmNoaWxkQ291bnQ7cHx8KGY9LTEpLHRoaXMucGxhY2VkPVRuKHRoaXMucGxhY2VkLHQsUy5mcm9tKHUpKSx0aGlzLmZyb250aWVyW3RdLm1hdGNoPWQscCYmZjwwJiZyJiZyLnR5cGU9PXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0udHlwZSYmdGhpcy5mcm9udGllci5sZW5ndGg+MSYmdGhpcy5jbG9zZUZyb250aWVyTm9kZSgpO2ZvcihsZXQgbT0wLGc9bDttPGY7bSsrKXtsZXQgeT1nLmxhc3RDaGlsZDt0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6eS50eXBlLG1hdGNoOnkuY29udGVudE1hdGNoQXQoeS5jaGlsZENvdW50KX0pLGc9eS5jb250ZW50fXRoaXMudW5wbGFjZWQ9cD9lPT0wP0UuZW1wdHk6bmV3IEUoQ24oby5jb250ZW50LGUtMSwxKSxlLTEsZjwwP28ub3BlbkVuZDplLTEpOm5ldyBFKENuKG8uY29udGVudCxlLGMpLG8ub3BlblN0YXJ0LG8ub3BlbkVuZCl9bXVzdE1vdmVJbmxpbmUoKXtpZighdGhpcy4kdG8ucGFyZW50LmlzVGV4dGJsb2NrKXJldHVybi0xO2xldCBlPXRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0sdDtpZighZS50eXBlLmlzVGV4dGJsb2NrfHwhbmkodGhpcy4kdG8sdGhpcy4kdG8uZGVwdGgsZS50eXBlLGUubWF0Y2gsITEpfHx0aGlzLiR0by5kZXB0aD09dGhpcy5kZXB0aCYmKHQ9dGhpcy5maW5kQ2xvc2VMZXZlbCh0aGlzLiR0bykpJiZ0LmRlcHRoPT10aGlzLmRlcHRoKXJldHVybi0xO2xldHtkZXB0aDpyfT10aGlzLiR0byxzPXRoaXMuJHRvLmFmdGVyKHIpO2Zvcig7cj4xJiZzPT10aGlzLiR0by5lbmQoLS1yKTspKytzO3JldHVybiBzfWZpbmRDbG9zZUxldmVsKGUpe2U6Zm9yKGxldCB0PU1hdGgubWluKHRoaXMuZGVwdGgsZS5kZXB0aCk7dD49MDt0LS0pe2xldHttYXRjaDpyLHR5cGU6c309dGhpcy5mcm9udGllclt0XSxpPXQ8ZS5kZXB0aCYmZS5lbmQodCsxKT09ZS5wb3MrKGUuZGVwdGgtKHQrMSkpLG89bmkoZSx0LHMscixpKTtpZihvKXtmb3IobGV0IGw9dC0xO2w+PTA7bC0tKXtsZXR7bWF0Y2g6YSx0eXBlOmN9PXRoaXMuZnJvbnRpZXJbbF0sdT1uaShlLGwsYyxhLCEwKTtpZighdXx8dS5jaGlsZENvdW50KWNvbnRpbnVlIGV9cmV0dXJue2RlcHRoOnQsZml0Om8sbW92ZTppP2UuZG9jLnJlc29sdmUoZS5hZnRlcih0KzEpKTplfX19fWNsb3NlKGUpe2xldCB0PXRoaXMuZmluZENsb3NlTGV2ZWwoZSk7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKDt0aGlzLmRlcHRoPnQuZGVwdGg7KXRoaXMuY2xvc2VGcm9udGllck5vZGUoKTt0LmZpdC5jaGlsZENvdW50JiYodGhpcy5wbGFjZWQ9VG4odGhpcy5wbGFjZWQsdC5kZXB0aCx0LmZpdCkpLGU9dC5tb3ZlO2ZvcihsZXQgcj10LmRlcHRoKzE7cjw9ZS5kZXB0aDtyKyspe2xldCBzPWUubm9kZShyKSxpPXMudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShzLmNvbnRlbnQsITAsZS5pbmRleChyKSk7dGhpcy5vcGVuRnJvbnRpZXJOb2RlKHMudHlwZSxzLmF0dHJzLGkpfXJldHVybiBlfW9wZW5Gcm9udGllck5vZGUoZSx0PW51bGwscil7bGV0IHM9dGhpcy5mcm9udGllclt0aGlzLmRlcHRoXTtzLm1hdGNoPXMubWF0Y2gubWF0Y2hUeXBlKGUpLHRoaXMucGxhY2VkPVRuKHRoaXMucGxhY2VkLHRoaXMuZGVwdGgsUy5mcm9tKGUuY3JlYXRlKHQscikpKSx0aGlzLmZyb250aWVyLnB1c2goe3R5cGU6ZSxtYXRjaDplLmNvbnRlbnRNYXRjaH0pfWNsb3NlRnJvbnRpZXJOb2RlKCl7bGV0IHQ9dGhpcy5mcm9udGllci5wb3AoKS5tYXRjaC5maWxsQmVmb3JlKFMuZW1wdHksITApO3QuY2hpbGRDb3VudCYmKHRoaXMucGxhY2VkPVRuKHRoaXMucGxhY2VkLHRoaXMuZnJvbnRpZXIubGVuZ3RoLHQpKX19ZnVuY3Rpb24gQ24obixlLHQpe3JldHVybiBlPT0wP24uY3V0QnlJbmRleCh0LG4uY2hpbGRDb3VudCk6bi5yZXBsYWNlQ2hpbGQoMCxuLmZpcnN0Q2hpbGQuY29weShDbihuLmZpcnN0Q2hpbGQuY29udGVudCxlLTEsdCkpKX1mdW5jdGlvbiBUbihuLGUsdCl7cmV0dXJuIGU9PTA/bi5hcHBlbmQodCk6bi5yZXBsYWNlQ2hpbGQobi5jaGlsZENvdW50LTEsbi5sYXN0Q2hpbGQuY29weShUbihuLmxhc3RDaGlsZC5jb250ZW50LGUtMSx0KSkpfWZ1bmN0aW9uIHRpKG4sZSl7Zm9yKGxldCB0PTA7dDxlO3QrKyluPW4uZmlyc3RDaGlsZC5jb250ZW50O3JldHVybiBufWZ1bmN0aW9uIEtjKG4sZSx0KXtpZihlPD0wKXJldHVybiBuO2xldCByPW4uY29udGVudDtyZXR1cm4gZT4xJiYocj1yLnJlcGxhY2VDaGlsZCgwLEtjKHIuZmlyc3RDaGlsZCxlLTEsci5jaGlsZENvdW50PT0xP3QtMTowKSkpLGU+MCYmKHI9bi50eXBlLmNvbnRlbnRNYXRjaC5maWxsQmVmb3JlKHIpLmFwcGVuZChyKSx0PD0wJiYocj1yLmFwcGVuZChuLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQocikuZmlsbEJlZm9yZShTLmVtcHR5LCEwKSkpKSxuLmNvcHkocil9ZnVuY3Rpb24gbmkobixlLHQscixzKXtsZXQgaT1uLm5vZGUoZSksbz1zP24uaW5kZXhBZnRlcihlKTpuLmluZGV4KGUpO2lmKG89PWkuY2hpbGRDb3VudCYmIXQuY29tcGF0aWJsZUNvbnRlbnQoaS50eXBlKSlyZXR1cm4gbnVsbDtsZXQgbD1yLmZpbGxCZWZvcmUoaS5jb250ZW50LCEwLG8pO3JldHVybiBsJiYhTGYodCxpLmNvbnRlbnQsbyk/bDpudWxsfWZ1bmN0aW9uIExmKG4sZSx0KXtmb3IobGV0IHI9dDtyPGUuY2hpbGRDb3VudDtyKyspaWYoIW4uYWxsb3dzTWFya3MoZS5jaGlsZChyKS5tYXJrcykpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gUGYobil7cmV0dXJuIG4uc3BlYy5kZWZpbmluZ3x8bi5zcGVjLmRlZmluaW5nRm9yQ29udGVudH1mdW5jdGlvbiB6ZihuLGUsdCxyKXtpZighci5zaXplKXJldHVybiBuLmRlbGV0ZVJhbmdlKGUsdCk7bGV0IHM9bi5kb2MucmVzb2x2ZShlKSxpPW4uZG9jLnJlc29sdmUodCk7aWYoV2MocyxpLHIpKXJldHVybiBuLnN0ZXAobmV3IHJlKGUsdCxyKSk7bGV0IG89R2MocyxpKTtvW28ubGVuZ3RoLTFdPT0wJiZvLnBvcCgpO2xldCBsPS0ocy5kZXB0aCsxKTtvLnVuc2hpZnQobCk7Zm9yKGxldCBoPXMuZGVwdGgsZj1zLnBvcy0xO2g+MDtoLS0sZi0tKXtsZXQgcD1zLm5vZGUoaCkudHlwZS5zcGVjO2lmKHAuZGVmaW5pbmd8fHAuZGVmaW5pbmdBc0NvbnRleHR8fHAuaXNvbGF0aW5nKWJyZWFrO28uaW5kZXhPZihoKT4tMT9sPWg6cy5iZWZvcmUoaCk9PWYmJm8uc3BsaWNlKDEsMCwtaCl9bGV0IGE9by5pbmRleE9mKGwpLGM9W10sdT1yLm9wZW5TdGFydDtmb3IobGV0IGg9ci5jb250ZW50LGY9MDs7ZisrKXtsZXQgcD1oLmZpcnN0Q2hpbGQ7aWYoYy5wdXNoKHApLGY9PXIub3BlblN0YXJ0KWJyZWFrO2g9cC5jb250ZW50fWZvcihsZXQgaD11LTE7aD49MDtoLS0pe2xldCBmPWNbaF0scD1QZihmLnR5cGUpO2lmKHAmJiFmLnNhbWVNYXJrdXAocy5ub2RlKE1hdGguYWJzKGwpLTEpKSl1PWg7ZWxzZSBpZihwfHwhZi50eXBlLmlzVGV4dGJsb2NrKWJyZWFrfWZvcihsZXQgaD1yLm9wZW5TdGFydDtoPj0wO2gtLSl7bGV0IGY9KGgrdSsxKSUoci5vcGVuU3RhcnQrMSkscD1jW2ZdO2lmKHApZm9yKGxldCBtPTA7bTxvLmxlbmd0aDttKyspe2xldCBnPW9bKG0rYSklby5sZW5ndGhdLHk9ITA7ZzwwJiYoeT0hMSxnPS1nKTtsZXQgaz1zLm5vZGUoZy0xKSxiPXMuaW5kZXgoZy0xKTtpZihrLmNhblJlcGxhY2VXaXRoKGIsYixwLnR5cGUscC5tYXJrcykpcmV0dXJuIG4ucmVwbGFjZShzLmJlZm9yZShnKSx5P2kuYWZ0ZXIoZyk6dCxuZXcgRShKYyhyLmNvbnRlbnQsMCxyLm9wZW5TdGFydCxmKSxmLHIub3BlbkVuZCkpfX1sZXQgZD1uLnN0ZXBzLmxlbmd0aDtmb3IobGV0IGg9by5sZW5ndGgtMTtoPj0wJiYobi5yZXBsYWNlKGUsdCxyKSwhKG4uc3RlcHMubGVuZ3RoPmQpKTtoLS0pe2xldCBmPW9baF07ZjwwfHwoZT1zLmJlZm9yZShmKSx0PWkuYWZ0ZXIoZikpfX1mdW5jdGlvbiBKYyhuLGUsdCxyLHMpe2lmKGU8dCl7bGV0IGk9bi5maXJzdENoaWxkO249bi5yZXBsYWNlQ2hpbGQoMCxpLmNvcHkoSmMoaS5jb250ZW50LGUrMSx0LHIsaSkpKX1pZihlPnIpe2xldCBpPXMuY29udGVudE1hdGNoQXQoMCksbz1pLmZpbGxCZWZvcmUobikuYXBwZW5kKG4pO249by5hcHBlbmQoaS5tYXRjaEZyYWdtZW50KG8pLmZpbGxCZWZvcmUoUy5lbXB0eSwhMCkpfXJldHVybiBufWZ1bmN0aW9uICRmKG4sZSx0LHIpe2lmKCFyLmlzSW5saW5lJiZlPT10JiZuLmRvYy5yZXNvbHZlKGUpLnBhcmVudC5jb250ZW50LnNpemUpe2xldCBzPUlmKG4uZG9jLGUsci50eXBlKTtzIT1udWxsJiYoZT10PXMpfW4ucmVwbGFjZVJhbmdlKGUsdCxuZXcgRShTLmZyb20ociksMCwwKSl9ZnVuY3Rpb24gQmYobixlLHQpe2xldCByPW4uZG9jLnJlc29sdmUoZSkscz1uLmRvYy5yZXNvbHZlKHQpO2lmKHIucGFyZW50LmlzVGV4dGJsb2NrJiZzLnBhcmVudC5pc1RleHRibG9jayYmci5zdGFydCgpIT1zLnN0YXJ0KCkmJnIucGFyZW50T2Zmc2V0PT0wJiZzLnBhcmVudE9mZnNldD09MCl7bGV0IG89ci5zaGFyZWREZXB0aCh0KSxsPSExO2ZvcihsZXQgYT1yLmRlcHRoO2E+bzthLS0pci5ub2RlKGEpLnR5cGUuc3BlYy5pc29sYXRpbmcmJihsPSEwKTtmb3IobGV0IGE9cy5kZXB0aDthPm87YS0tKXMubm9kZShhKS50eXBlLnNwZWMuaXNvbGF0aW5nJiYobD0hMCk7aWYoIWwpe2ZvcihsZXQgYT1yLmRlcHRoO2E+MCYmZT09ci5zdGFydChhKTthLS0pZT1yLmJlZm9yZShhKTtmb3IobGV0IGE9cy5kZXB0aDthPjAmJnQ9PXMuc3RhcnQoYSk7YS0tKXQ9cy5iZWZvcmUoYSk7cj1uLmRvYy5yZXNvbHZlKGUpLHM9bi5kb2MucmVzb2x2ZSh0KX19bGV0IGk9R2MocixzKTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKyl7bGV0IGw9aVtvXSxhPW89PWkubGVuZ3RoLTE7aWYoYSYmbD09MHx8ci5ub2RlKGwpLnR5cGUuY29udGVudE1hdGNoLnZhbGlkRW5kKXJldHVybiBuLmRlbGV0ZShyLnN0YXJ0KGwpLHMuZW5kKGwpKTtpZihsPjAmJihhfHxyLm5vZGUobC0xKS5jYW5SZXBsYWNlKHIuaW5kZXgobC0xKSxzLmluZGV4QWZ0ZXIobC0xKSkpKXJldHVybiBuLmRlbGV0ZShyLmJlZm9yZShsKSxzLmFmdGVyKGwpKX1mb3IobGV0IG89MTtvPD1yLmRlcHRoJiZvPD1zLmRlcHRoO28rKylpZihlLXIuc3RhcnQobyk9PXIuZGVwdGgtbyYmdD5yLmVuZChvKSYmcy5lbmQobyktdCE9cy5kZXB0aC1vJiZyLnN0YXJ0KG8tMSk9PXMuc3RhcnQoby0xKSYmci5ub2RlKG8tMSkuY2FuUmVwbGFjZShyLmluZGV4KG8tMSkscy5pbmRleChvLTEpKSlyZXR1cm4gbi5kZWxldGUoci5iZWZvcmUobyksdCk7bi5kZWxldGUoZSx0KX1mdW5jdGlvbiBHYyhuLGUpe2xldCB0PVtdLHI9TWF0aC5taW4obi5kZXB0aCxlLmRlcHRoKTtmb3IobGV0IHM9cjtzPj0wO3MtLSl7bGV0IGk9bi5zdGFydChzKTtpZihpPG4ucG9zLShuLmRlcHRoLXMpfHxlLmVuZChzKT5lLnBvcysoZS5kZXB0aC1zKXx8bi5ub2RlKHMpLnR5cGUuc3BlYy5pc29sYXRpbmd8fGUubm9kZShzKS50eXBlLnNwZWMuaXNvbGF0aW5nKWJyZWFrOyhpPT1lLnN0YXJ0KHMpfHxzPT1uLmRlcHRoJiZzPT1lLmRlcHRoJiZuLnBhcmVudC5pbmxpbmVDb250ZW50JiZlLnBhcmVudC5pbmxpbmVDb250ZW50JiZzJiZlLnN0YXJ0KHMtMSk9PWktMSkmJnQucHVzaChzKX1yZXR1cm4gdH1jbGFzcyBvbiBleHRlbmRzIGJle2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMucG9zPWUsdGhpcy5hdHRyPXQsdGhpcy52YWx1ZT1yfWFwcGx5KGUpe2xldCB0PWUubm9kZUF0KHRoaXMucG9zKTtpZighdClyZXR1cm4gc2UuZmFpbCgiTm8gbm9kZSBhdCBhdHRyaWJ1dGUgc3RlcCdzIHBvc2l0aW9uIik7bGV0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGkgaW4gdC5hdHRycylyW2ldPXQuYXR0cnNbaV07clt0aGlzLmF0dHJdPXRoaXMudmFsdWU7bGV0IHM9dC50eXBlLmNyZWF0ZShyLG51bGwsdC5tYXJrcyk7cmV0dXJuIHNlLmZyb21SZXBsYWNlKGUsdGhpcy5wb3MsdGhpcy5wb3MrMSxuZXcgRShTLmZyb20ocyksMCx0LmlzTGVhZj8wOjEpKX1nZXRNYXAoKXtyZXR1cm4gRWUuZW1wdHl9aW52ZXJ0KGUpe3JldHVybiBuZXcgb24odGhpcy5wb3MsdGhpcy5hdHRyLGUubm9kZUF0KHRoaXMucG9zKS5hdHRyc1t0aGlzLmF0dHJdKX1tYXAoZSl7bGV0IHQ9ZS5tYXBSZXN1bHQodGhpcy5wb3MsMSk7cmV0dXJuIHQuZGVsZXRlZEFmdGVyP251bGw6bmV3IG9uKHQucG9zLHRoaXMuYXR0cix0aGlzLnZhbHVlKX10b0pTT04oKXtyZXR1cm57c3RlcFR5cGU6ImF0dHIiLHBvczp0aGlzLnBvcyxhdHRyOnRoaXMuYXR0cix2YWx1ZTp0aGlzLnZhbHVlfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5wb3MhPSJudW1iZXIifHx0eXBlb2YgdC5hdHRyIT0ic3RyaW5nIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgQXR0clN0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IG9uKHQucG9zLHQuYXR0cix0LnZhbHVlKX19YmUuanNvbklEKCJhdHRyIixvbik7Y2xhc3MgR24gZXh0ZW5kcyBiZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy5hdHRyPWUsdGhpcy52YWx1ZT10fWFwcGx5KGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBzIGluIGUuYXR0cnMpdFtzXT1lLmF0dHJzW3NdO3RbdGhpcy5hdHRyXT10aGlzLnZhbHVlO2xldCByPWUudHlwZS5jcmVhdGUodCxlLmNvbnRlbnQsZS5tYXJrcyk7cmV0dXJuIHNlLm9rKHIpfWdldE1hcCgpe3JldHVybiBFZS5lbXB0eX1pbnZlcnQoZSl7cmV0dXJuIG5ldyBHbih0aGlzLmF0dHIsZS5hdHRyc1t0aGlzLmF0dHJdKX1tYXAoZSl7cmV0dXJuIHRoaXN9dG9KU09OKCl7cmV0dXJue3N0ZXBUeXBlOiJkb2NBdHRyIixhdHRyOnRoaXMuYXR0cix2YWx1ZTp0aGlzLnZhbHVlfX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5hdHRyIT0ic3RyaW5nIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgRG9jQXR0clN0ZXAuZnJvbUpTT04iKTtyZXR1cm4gbmV3IEduKHQuYXR0cix0LnZhbHVlKX19YmUuanNvbklEKCJkb2NBdHRyIixHbik7bGV0IGFuPWNsYXNzIGV4dGVuZHMgRXJyb3J7fTthbj1mdW5jdGlvbiBuKGUpe2xldCB0PUVycm9yLmNhbGwodGhpcyxlKTtyZXR1cm4gdC5fX3Byb3RvX189bi5wcm90b3R5cGUsdH07YW4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTthbi5wcm90b3R5cGUuY29uc3RydWN0b3I9YW47YW4ucHJvdG90eXBlLm5hbWU9IlRyYW5zZm9ybUVycm9yIjtjbGFzcyBRY3tjb25zdHJ1Y3RvcihlKXt0aGlzLmRvYz1lLHRoaXMuc3RlcHM9W10sdGhpcy5kb2NzPVtdLHRoaXMubWFwcGluZz1uZXcgSm59Z2V0IGJlZm9yZSgpe3JldHVybiB0aGlzLmRvY3MubGVuZ3RoP3RoaXMuZG9jc1swXTp0aGlzLmRvY31zdGVwKGUpe2xldCB0PXRoaXMubWF5YmVTdGVwKGUpO2lmKHQuZmFpbGVkKXRocm93IG5ldyBhbih0LmZhaWxlZCk7cmV0dXJuIHRoaXN9bWF5YmVTdGVwKGUpe2xldCB0PWUuYXBwbHkodGhpcy5kb2MpO3JldHVybiB0LmZhaWxlZHx8dGhpcy5hZGRTdGVwKGUsdC5kb2MpLHR9Z2V0IGRvY0NoYW5nZWQoKXtyZXR1cm4gdGhpcy5zdGVwcy5sZW5ndGg+MH1jaGFuZ2VkUmFuZ2UoKXtsZXQgZT0xZTksdD0tMWU5O2ZvcihsZXQgcj0wO3I8dGhpcy5tYXBwaW5nLm1hcHMubGVuZ3RoO3IrKyl7bGV0IHM9dGhpcy5tYXBwaW5nLm1hcHNbcl07ciYmKGU9cy5tYXAoZSwxKSx0PXMubWFwKHQsLTEpKSxzLmZvckVhY2goKGksbyxsLGEpPT57ZT1NYXRoLm1pbihlLGwpLHQ9TWF0aC5tYXgodCxhKX0pfXJldHVybiBlPT0xZTk/bnVsbDp7ZnJvbTplLHRvOnR9fWFkZFN0ZXAoZSx0KXt0aGlzLmRvY3MucHVzaCh0aGlzLmRvYyksdGhpcy5zdGVwcy5wdXNoKGUpLHRoaXMubWFwcGluZy5hcHBlbmRNYXAoZS5nZXRNYXAoKSksdGhpcy5kb2M9dH1yZXBsYWNlKGUsdD1lLHI9RS5lbXB0eSl7bGV0IHM9SXModGhpcy5kb2MsZSx0LHIpO3JldHVybiBzJiZ0aGlzLnN0ZXAocyksdGhpc31yZXBsYWNlV2l0aChlLHQscil7cmV0dXJuIHRoaXMucmVwbGFjZShlLHQsbmV3IEUoUy5mcm9tKHIpLDAsMCkpfWRlbGV0ZShlLHQpe3JldHVybiB0aGlzLnJlcGxhY2UoZSx0LEUuZW1wdHkpfWluc2VydChlLHQpe3JldHVybiB0aGlzLnJlcGxhY2VXaXRoKGUsZSx0KX1yZXBsYWNlUmFuZ2UoZSx0LHIpe3JldHVybiB6Zih0aGlzLGUsdCxyKSx0aGlzfXJlcGxhY2VSYW5nZVdpdGgoZSx0LHIpe3JldHVybiAkZih0aGlzLGUsdCxyKSx0aGlzfWRlbGV0ZVJhbmdlKGUsdCl7cmV0dXJuIEJmKHRoaXMsZSx0KSx0aGlzfWxpZnQoZSx0KXtyZXR1cm4gdmYodGhpcyxlLHQpLHRoaXN9am9pbihlLHQ9MSl7cmV0dXJuIFJmKHRoaXMsZSx0KSx0aGlzfXdyYXAoZSx0KXtyZXR1cm4gVGYodGhpcyxlLHQpLHRoaXN9c2V0QmxvY2tUeXBlKGUsdD1lLHIscz1udWxsKXtyZXR1cm4gTWYodGhpcyxlLHQscixzKSx0aGlzfXNldE5vZGVNYXJrdXAoZSx0LHI9bnVsbCxzKXtyZXR1cm4gQWYodGhpcyxlLHQscixzKSx0aGlzfXNldE5vZGVBdHRyaWJ1dGUoZSx0LHIpe3JldHVybiB0aGlzLnN0ZXAobmV3IG9uKGUsdCxyKSksdGhpc31zZXREb2NBdHRyaWJ1dGUoZSx0KXtyZXR1cm4gdGhpcy5zdGVwKG5ldyBHbihlLHQpKSx0aGlzfWFkZE5vZGVNYXJrKGUsdCl7cmV0dXJuIHRoaXMuc3RlcChuZXcgd3QoZSx0KSksdGhpc31yZW1vdmVOb2RlTWFyayhlLHQpe2xldCByPXRoaXMuZG9jLm5vZGVBdChlKTtpZighcil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gbm9kZSBhdCBwb3NpdGlvbiAiK2UpO2lmKHQgaW5zdGFuY2VvZiBXKXQuaXNJblNldChyLm1hcmtzKSYmdGhpcy5zdGVwKG5ldyBWdChlLHQpKTtlbHNle2xldCBzPXIubWFya3MsaSxvPVtdO2Zvcig7aT10LmlzSW5TZXQocyk7KW8ucHVzaChuZXcgVnQoZSxpKSkscz1pLnJlbW92ZUZyb21TZXQocyk7Zm9yKGxldCBsPW8ubGVuZ3RoLTE7bD49MDtsLS0pdGhpcy5zdGVwKG9bbF0pfXJldHVybiB0aGlzfXNwbGl0KGUsdD0xLHIpe3JldHVybiBPZih0aGlzLGUsdCxyKSx0aGlzfWFkZE1hcmsoZSx0LHIpe3JldHVybiBiZih0aGlzLGUsdCxyKSx0aGlzfXJlbW92ZU1hcmsoZSx0LHIpe3JldHVybiB4Zih0aGlzLGUsdCxyKSx0aGlzfWNsZWFySW5jb21wYXRpYmxlKGUsdCxyKXtyZXR1cm4gZm8odGhpcyxlLHQsciksdGhpc319Y29uc3Qgcmk9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBJe2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLiRhbmNob3I9ZSx0aGlzLiRoZWFkPXQsdGhpcy5yYW5nZXM9cnx8W25ldyBYYyhlLm1pbih0KSxlLm1heCh0KSldfWdldCBhbmNob3IoKXtyZXR1cm4gdGhpcy4kYW5jaG9yLnBvc31nZXQgaGVhZCgpe3JldHVybiB0aGlzLiRoZWFkLnBvc31nZXQgZnJvbSgpe3JldHVybiB0aGlzLiRmcm9tLnBvc31nZXQgdG8oKXtyZXR1cm4gdGhpcy4kdG8ucG9zfWdldCAkZnJvbSgpe3JldHVybiB0aGlzLnJhbmdlc1swXS4kZnJvbX1nZXQgJHRvKCl7cmV0dXJuIHRoaXMucmFuZ2VzWzBdLiR0b31nZXQgZW1wdHkoKXtsZXQgZT10aGlzLnJhbmdlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZihlW3RdLiRmcm9tLnBvcyE9ZVt0XS4kdG8ucG9zKXJldHVybiExO3JldHVybiEwfWNvbnRlbnQoKXtyZXR1cm4gdGhpcy4kZnJvbS5kb2Muc2xpY2UodGhpcy5mcm9tLHRoaXMudG8sITApfXJlcGxhY2UoZSx0PUUuZW1wdHkpe2xldCByPXQuY29udGVudC5sYXN0Q2hpbGQscz1udWxsO2ZvcihsZXQgbD0wO2w8dC5vcGVuRW5kO2wrKylzPXIscj1yLmxhc3RDaGlsZDtsZXQgaT1lLnN0ZXBzLmxlbmd0aCxvPXRoaXMucmFuZ2VzO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKXtsZXR7JGZyb206YSwkdG86Y309b1tsXSx1PWUubWFwcGluZy5zbGljZShpKTtlLnJlcGxhY2VSYW5nZSh1Lm1hcChhLnBvcyksdS5tYXAoYy5wb3MpLGw/RS5lbXB0eTp0KSxsPT0wJiZSbChlLGksKHI/ci5pc0lubGluZTpzJiZzLmlzVGV4dGJsb2NrKT8tMToxKX19cmVwbGFjZVdpdGgoZSx0KXtsZXQgcj1lLnN0ZXBzLmxlbmd0aCxzPXRoaXMucmFuZ2VzO2ZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKXtsZXR7JGZyb206bywkdG86bH09c1tpXSxhPWUubWFwcGluZy5zbGljZShyKSxjPWEubWFwKG8ucG9zKSx1PWEubWFwKGwucG9zKTtpP2UuZGVsZXRlUmFuZ2UoYyx1KTooZS5yZXBsYWNlUmFuZ2VXaXRoKGMsdSx0KSxSbChlLHIsdC5pc0lubGluZT8tMToxKSl9fXN0YXRpYyBmaW5kRnJvbShlLHQscj0hMSl7bGV0IHM9ZS5wYXJlbnQuaW5saW5lQ29udGVudD9uZXcgRChlKTplbihlLm5vZGUoMCksZS5wYXJlbnQsZS5wb3MsZS5pbmRleCgpLHQscik7aWYocylyZXR1cm4gcztmb3IobGV0IGk9ZS5kZXB0aC0xO2k+PTA7aS0tKXtsZXQgbz10PDA/ZW4oZS5ub2RlKDApLGUubm9kZShpKSxlLmJlZm9yZShpKzEpLGUuaW5kZXgoaSksdCxyKTplbihlLm5vZGUoMCksZS5ub2RlKGkpLGUuYWZ0ZXIoaSsxKSxlLmluZGV4KGkpKzEsdCxyKTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfXN0YXRpYyBuZWFyKGUsdD0xKXtyZXR1cm4gdGhpcy5maW5kRnJvbShlLHQpfHx0aGlzLmZpbmRGcm9tKGUsLXQpfHxuZXcgQWUoZS5ub2RlKDApKX1zdGF0aWMgYXRTdGFydChlKXtyZXR1cm4gZW4oZSxlLDAsMCwxKXx8bmV3IEFlKGUpfXN0YXRpYyBhdEVuZChlKXtyZXR1cm4gZW4oZSxlLGUuY29udGVudC5zaXplLGUuY2hpbGRDb3VudCwtMSl8fG5ldyBBZShlKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZighdHx8IXQudHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBpbnB1dCBmb3IgU2VsZWN0aW9uLmZyb21KU09OIik7bGV0IHI9cmlbdC50eXBlXTtpZighcil0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gc2VsZWN0aW9uIHR5cGUgJHt0LnR5cGV9IGRlZmluZWRgKTtyZXR1cm4gci5mcm9tSlNPTihlLHQpfXN0YXRpYyBqc29uSUQoZSx0KXtpZihlIGluIHJpKXRocm93IG5ldyBSYW5nZUVycm9yKCJEdXBsaWNhdGUgdXNlIG9mIHNlbGVjdGlvbiBKU09OIElEICIrZSk7cmV0dXJuIHJpW2VdPXQsdC5wcm90b3R5cGUuanNvbklEPWUsdH1nZXRCb29rbWFyaygpe3JldHVybiBELmJldHdlZW4odGhpcy4kYW5jaG9yLHRoaXMuJGhlYWQpLmdldEJvb2ttYXJrKCl9fUkucHJvdG90eXBlLnZpc2libGU9ITA7Y2xhc3MgWGN7Y29uc3RydWN0b3IoZSx0KXt0aGlzLiRmcm9tPWUsdGhpcy4kdG89dH19bGV0IE9sPSExO2Z1bmN0aW9uIE5sKG4peyFPbCYmIW4ucGFyZW50LmlubGluZUNvbnRlbnQmJihPbD0hMCl9Y2xhc3MgRCBleHRlbmRzIEl7Y29uc3RydWN0b3IoZSx0PWUpe05sKGUpLE5sKHQpLHN1cGVyKGUsdCl9Z2V0ICRjdXJzb3IoKXtyZXR1cm4gdGhpcy4kYW5jaG9yLnBvcz09dGhpcy4kaGVhZC5wb3M/dGhpcy4kaGVhZDpudWxsfW1hcChlLHQpe2xldCByPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLmhlYWQpKTtpZighci5wYXJlbnQuaW5saW5lQ29udGVudClyZXR1cm4gSS5uZWFyKHIpO2xldCBzPWUucmVzb2x2ZSh0Lm1hcCh0aGlzLmFuY2hvcikpO3JldHVybiBuZXcgRChzLnBhcmVudC5pbmxpbmVDb250ZW50P3M6cixyKX1yZXBsYWNlKGUsdD1FLmVtcHR5KXtpZihzdXBlci5yZXBsYWNlKGUsdCksdD09RS5lbXB0eSl7bGV0IHI9dGhpcy4kZnJvbS5tYXJrc0Fjcm9zcyh0aGlzLiR0byk7ciYmZS5lbnN1cmVNYXJrcyhyKX19ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEJiZlLmFuY2hvcj09dGhpcy5hbmNob3ImJmUuaGVhZD09dGhpcy5oZWFkfWdldEJvb2ttYXJrKCl7cmV0dXJuIG5ldyBEcyh0aGlzLmFuY2hvcix0aGlzLmhlYWQpfXRvSlNPTigpe3JldHVybnt0eXBlOiJ0ZXh0IixhbmNob3I6dGhpcy5hbmNob3IsaGVhZDp0aGlzLmhlYWR9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LmFuY2hvciE9Im51bWJlciJ8fHR5cGVvZiB0LmhlYWQhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBUZXh0U2VsZWN0aW9uLmZyb21KU09OIik7cmV0dXJuIG5ldyBEKGUucmVzb2x2ZSh0LmFuY2hvciksZS5yZXNvbHZlKHQuaGVhZCkpfXN0YXRpYyBjcmVhdGUoZSx0LHI9dCl7bGV0IHM9ZS5yZXNvbHZlKHQpO3JldHVybiBuZXcgdGhpcyhzLHI9PXQ/czplLnJlc29sdmUocikpfXN0YXRpYyBiZXR3ZWVuKGUsdCxyKXtsZXQgcz1lLnBvcy10LnBvcztpZigoIXJ8fHMpJiYocj1zPj0wPzE6LTEpLCF0LnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgaT1JLmZpbmRGcm9tKHQsciwhMCl8fEkuZmluZEZyb20odCwtciwhMCk7aWYoaSl0PWkuJGhlYWQ7ZWxzZSByZXR1cm4gSS5uZWFyKHQscil9cmV0dXJuIGUucGFyZW50LmlubGluZUNvbnRlbnR8fChzPT0wP2U9dDooZT0oSS5maW5kRnJvbShlLC1yLCEwKXx8SS5maW5kRnJvbShlLHIsITApKS4kYW5jaG9yLGUucG9zPHQucG9zIT1zPDAmJihlPXQpKSksbmV3IEQoZSx0KX19SS5qc29uSUQoInRleHQiLEQpO2NsYXNzIERze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5hbmNob3I9ZSx0aGlzLmhlYWQ9dH1tYXAoZSl7cmV0dXJuIG5ldyBEcyhlLm1hcCh0aGlzLmFuY2hvciksZS5tYXAodGhpcy5oZWFkKSl9cmVzb2x2ZShlKXtyZXR1cm4gRC5iZXR3ZWVuKGUucmVzb2x2ZSh0aGlzLmFuY2hvciksZS5yZXNvbHZlKHRoaXMuaGVhZCkpfX1jbGFzcyBOIGV4dGVuZHMgSXtjb25zdHJ1Y3RvcihlKXtsZXQgdD1lLm5vZGVBZnRlcixyPWUubm9kZSgwKS5yZXNvbHZlKGUucG9zK3Qubm9kZVNpemUpO3N1cGVyKGUsciksdGhpcy5ub2RlPXR9bWFwKGUsdCl7bGV0e2RlbGV0ZWQ6cixwb3M6c309dC5tYXBSZXN1bHQodGhpcy5hbmNob3IpLGk9ZS5yZXNvbHZlKHMpO3JldHVybiByP0kubmVhcihpKTpuZXcgTihpKX1jb250ZW50KCl7cmV0dXJuIG5ldyBFKFMuZnJvbSh0aGlzLm5vZGUpLDAsMCl9ZXEoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOJiZlLmFuY2hvcj09dGhpcy5hbmNob3J9dG9KU09OKCl7cmV0dXJue3R5cGU6Im5vZGUiLGFuY2hvcjp0aGlzLmFuY2hvcn19Z2V0Qm9va21hcmsoKXtyZXR1cm4gbmV3IG1vKHRoaXMuYW5jaG9yKX1zdGF0aWMgZnJvbUpTT04oZSx0KXtpZih0eXBlb2YgdC5hbmNob3IhPSJudW1iZXIiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBOb2RlU2VsZWN0aW9uLmZyb21KU09OIik7cmV0dXJuIG5ldyBOKGUucmVzb2x2ZSh0LmFuY2hvcikpfXN0YXRpYyBjcmVhdGUoZSx0KXtyZXR1cm4gbmV3IE4oZS5yZXNvbHZlKHQpKX1zdGF0aWMgaXNTZWxlY3RhYmxlKGUpe3JldHVybiFlLmlzVGV4dCYmZS50eXBlLnNwZWMuc2VsZWN0YWJsZSE9PSExfX1OLnByb3RvdHlwZS52aXNpYmxlPSExO0kuanNvbklEKCJub2RlIixOKTtjbGFzcyBtb3tjb25zdHJ1Y3RvcihlKXt0aGlzLmFuY2hvcj1lfW1hcChlKXtsZXR7ZGVsZXRlZDp0LHBvczpyfT1lLm1hcFJlc3VsdCh0aGlzLmFuY2hvcik7cmV0dXJuIHQ/bmV3IERzKHIscik6bmV3IG1vKHIpfXJlc29sdmUoZSl7bGV0IHQ9ZS5yZXNvbHZlKHRoaXMuYW5jaG9yKSxyPXQubm9kZUFmdGVyO3JldHVybiByJiZOLmlzU2VsZWN0YWJsZShyKT9uZXcgTih0KTpJLm5lYXIodCl9fWNsYXNzIEFlIGV4dGVuZHMgSXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLnJlc29sdmUoMCksZS5yZXNvbHZlKGUuY29udGVudC5zaXplKSl9cmVwbGFjZShlLHQ9RS5lbXB0eSl7aWYodD09RS5lbXB0eSl7ZS5kZWxldGUoMCxlLmRvYy5jb250ZW50LnNpemUpO2xldCByPUkuYXRTdGFydChlLmRvYyk7ci5lcShlLnNlbGVjdGlvbil8fGUuc2V0U2VsZWN0aW9uKHIpfWVsc2Ugc3VwZXIucmVwbGFjZShlLHQpfXRvSlNPTigpe3JldHVybnt0eXBlOiJhbGwifX1zdGF0aWMgZnJvbUpTT04oZSl7cmV0dXJuIG5ldyBBZShlKX1tYXAoZSl7cmV0dXJuIG5ldyBBZShlKX1lcShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEFlfWdldEJvb2ttYXJrKCl7cmV0dXJuIF9mfX1JLmpzb25JRCgiYWxsIixBZSk7Y29uc3QgX2Y9e21hcCgpe3JldHVybiB0aGlzfSxyZXNvbHZlKG4pe3JldHVybiBuZXcgQWUobil9fTtmdW5jdGlvbiBlbihuLGUsdCxyLHMsaT0hMSl7aWYoZS5pbmxpbmVDb250ZW50KXJldHVybiBELmNyZWF0ZShuLHQpO2ZvcihsZXQgbz1yLShzPjA/MDoxKTtzPjA/bzxlLmNoaWxkQ291bnQ6bz49MDtvKz1zKXtsZXQgbD1lLmNoaWxkKG8pO2lmKGwuaXNBdG9tKXtpZighaSYmTi5pc1NlbGVjdGFibGUobCkpcmV0dXJuIE4uY3JlYXRlKG4sdC0oczwwP2wubm9kZVNpemU6MCkpfWVsc2V7bGV0IGE9ZW4obixsLHQrcyxzPDA/bC5jaGlsZENvdW50OjAscyxpKTtpZihhKXJldHVybiBhfXQrPWwubm9kZVNpemUqc31yZXR1cm4gbnVsbH1mdW5jdGlvbiBSbChuLGUsdCl7bGV0IHI9bi5zdGVwcy5sZW5ndGgtMTtpZihyPGUpcmV0dXJuO2xldCBzPW4uc3RlcHNbcl07aWYoIShzIGluc3RhbmNlb2YgcmV8fHMgaW5zdGFuY2VvZiBhZSkpcmV0dXJuO2xldCBpPW4ubWFwcGluZy5tYXBzW3JdLG87aS5mb3JFYWNoKChsLGEsYyx1KT0+e289PW51bGwmJihvPXUpfSksbi5zZXRTZWxlY3Rpb24oSS5uZWFyKG4uZG9jLnJlc29sdmUobyksdCkpfWNvbnN0IElsPTEsbXI9MixEbD00O2NsYXNzIEhmIGV4dGVuZHMgUWN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZS5kb2MpLHRoaXMuY3VyU2VsZWN0aW9uRm9yPTAsdGhpcy51cGRhdGVkPTAsdGhpcy5tZXRhPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy50aW1lPURhdGUubm93KCksdGhpcy5jdXJTZWxlY3Rpb249ZS5zZWxlY3Rpb24sdGhpcy5zdG9yZWRNYXJrcz1lLnN0b3JlZE1hcmtzfWdldCBzZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJTZWxlY3Rpb25Gb3I8dGhpcy5zdGVwcy5sZW5ndGgmJih0aGlzLmN1clNlbGVjdGlvbj10aGlzLmN1clNlbGVjdGlvbi5tYXAodGhpcy5kb2MsdGhpcy5tYXBwaW5nLnNsaWNlKHRoaXMuY3VyU2VsZWN0aW9uRm9yKSksdGhpcy5jdXJTZWxlY3Rpb25Gb3I9dGhpcy5zdGVwcy5sZW5ndGgpLHRoaXMuY3VyU2VsZWN0aW9ufXNldFNlbGVjdGlvbihlKXtpZihlLiRmcm9tLmRvYyE9dGhpcy5kb2MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlNlbGVjdGlvbiBwYXNzZWQgdG8gc2V0U2VsZWN0aW9uIG11c3QgcG9pbnQgYXQgdGhlIGN1cnJlbnQgZG9jdW1lbnQiKTtyZXR1cm4gdGhpcy5jdXJTZWxlY3Rpb249ZSx0aGlzLmN1clNlbGVjdGlvbkZvcj10aGlzLnN0ZXBzLmxlbmd0aCx0aGlzLnVwZGF0ZWQ9KHRoaXMudXBkYXRlZHxJbCkmfm1yLHRoaXMuc3RvcmVkTWFya3M9bnVsbCx0aGlzfWdldCBzZWxlY3Rpb25TZXQoKXtyZXR1cm4odGhpcy51cGRhdGVkJklsKT4wfXNldFN0b3JlZE1hcmtzKGUpe3JldHVybiB0aGlzLnN0b3JlZE1hcmtzPWUsdGhpcy51cGRhdGVkfD1tcix0aGlzfWVuc3VyZU1hcmtzKGUpe3JldHVybiBXLnNhbWVTZXQodGhpcy5zdG9yZWRNYXJrc3x8dGhpcy5zZWxlY3Rpb24uJGZyb20ubWFya3MoKSxlKXx8dGhpcy5zZXRTdG9yZWRNYXJrcyhlKSx0aGlzfWFkZFN0b3JlZE1hcmsoZSl7cmV0dXJuIHRoaXMuZW5zdXJlTWFya3MoZS5hZGRUb1NldCh0aGlzLnN0b3JlZE1hcmtzfHx0aGlzLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSl9cmVtb3ZlU3RvcmVkTWFyayhlKXtyZXR1cm4gdGhpcy5lbnN1cmVNYXJrcyhlLnJlbW92ZUZyb21TZXQodGhpcy5zdG9yZWRNYXJrc3x8dGhpcy5zZWxlY3Rpb24uJGhlYWQubWFya3MoKSkpfWdldCBzdG9yZWRNYXJrc1NldCgpe3JldHVybih0aGlzLnVwZGF0ZWQmbXIpPjB9YWRkU3RlcChlLHQpe3N1cGVyLmFkZFN0ZXAoZSx0KSx0aGlzLnVwZGF0ZWQ9dGhpcy51cGRhdGVkJn5tcix0aGlzLnN0b3JlZE1hcmtzPW51bGx9c2V0VGltZShlKXtyZXR1cm4gdGhpcy50aW1lPWUsdGhpc31yZXBsYWNlU2VsZWN0aW9uKGUpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHRoaXMsZSksdGhpc31yZXBsYWNlU2VsZWN0aW9uV2l0aChlLHQ9ITApe2xldCByPXRoaXMuc2VsZWN0aW9uO3JldHVybiB0JiYoZT1lLm1hcmsodGhpcy5zdG9yZWRNYXJrc3x8KHIuZW1wdHk/ci4kZnJvbS5tYXJrcygpOnIuJGZyb20ubWFya3NBY3Jvc3Moci4kdG8pfHxXLm5vbmUpKSksci5yZXBsYWNlV2l0aCh0aGlzLGUpLHRoaXN9ZGVsZXRlU2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLnJlcGxhY2UodGhpcyksdGhpc31pbnNlcnRUZXh0KGUsdCxyKXtsZXQgcz10aGlzLmRvYy50eXBlLnNjaGVtYTtpZih0PT1udWxsKXJldHVybiBlP3RoaXMucmVwbGFjZVNlbGVjdGlvbldpdGgocy50ZXh0KGUpLCEwKTp0aGlzLmRlbGV0ZVNlbGVjdGlvbigpO3tpZihyPT1udWxsJiYocj10KSwhZSlyZXR1cm4gdGhpcy5kZWxldGVSYW5nZSh0LHIpO2xldCBpPXRoaXMuc3RvcmVkTWFya3M7aWYoIWkpe2xldCBvPXRoaXMuZG9jLnJlc29sdmUodCk7aT1yPT10P28ubWFya3MoKTpvLm1hcmtzQWNyb3NzKHRoaXMuZG9jLnJlc29sdmUocikpfXJldHVybiB0aGlzLnJlcGxhY2VSYW5nZVdpdGgodCxyLHMudGV4dChlLGkpKSwhdGhpcy5zZWxlY3Rpb24uZW1wdHkmJnRoaXMuc2VsZWN0aW9uLnRvPT10K2UubGVuZ3RoJiZ0aGlzLnNldFNlbGVjdGlvbihJLm5lYXIodGhpcy5zZWxlY3Rpb24uJHRvKSksdGhpc319c2V0TWV0YShlLHQpe3JldHVybiB0aGlzLm1ldGFbdHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5rZXldPXQsdGhpc31nZXRNZXRhKGUpe3JldHVybiB0aGlzLm1ldGFbdHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5rZXldfWdldCBpc0dlbmVyaWMoKXtmb3IobGV0IGUgaW4gdGhpcy5tZXRhKXJldHVybiExO3JldHVybiEwfXNjcm9sbEludG9WaWV3KCl7cmV0dXJuIHRoaXMudXBkYXRlZHw9RGwsdGhpc31nZXQgc2Nyb2xsZWRJbnRvVmlldygpe3JldHVybih0aGlzLnVwZGF0ZWQmRGwpPjB9fWZ1bmN0aW9uIExsKG4sZSl7cmV0dXJuIWV8fCFuP246bi5iaW5kKGUpfWNsYXNzIE1ue2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLm5hbWU9ZSx0aGlzLmluaXQ9TGwodC5pbml0LHIpLHRoaXMuYXBwbHk9TGwodC5hcHBseSxyKX19Y29uc3QgRmY9W25ldyBNbigiZG9jIix7aW5pdChuKXtyZXR1cm4gbi5kb2N8fG4uc2NoZW1hLnRvcE5vZGVUeXBlLmNyZWF0ZUFuZEZpbGwoKX0sYXBwbHkobil7cmV0dXJuIG4uZG9jfX0pLG5ldyBNbigic2VsZWN0aW9uIix7aW5pdChuLGUpe3JldHVybiBuLnNlbGVjdGlvbnx8SS5hdFN0YXJ0KGUuZG9jKX0sYXBwbHkobil7cmV0dXJuIG4uc2VsZWN0aW9ufX0pLG5ldyBNbigic3RvcmVkTWFya3MiLHtpbml0KG4pe3JldHVybiBuLnN0b3JlZE1hcmtzfHxudWxsfSxhcHBseShuLGUsdCxyKXtyZXR1cm4gci5zZWxlY3Rpb24uJGN1cnNvcj9uLnN0b3JlZE1hcmtzOm51bGx9fSksbmV3IE1uKCJzY3JvbGxUb1NlbGVjdGlvbiIse2luaXQoKXtyZXR1cm4gMH0sYXBwbHkobixlKXtyZXR1cm4gbi5zY3JvbGxlZEludG9WaWV3P2UrMTplfX0pXTtjbGFzcyBzaXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2NoZW1hPWUsdGhpcy5wbHVnaW5zPVtdLHRoaXMucGx1Z2luc0J5S2V5PU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5maWVsZHM9RmYuc2xpY2UoKSx0JiZ0LmZvckVhY2gocj0+e2lmKHRoaXMucGx1Z2luc0J5S2V5W3Iua2V5XSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQWRkaW5nIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgYSBrZXllZCBwbHVnaW4gKCIrci5rZXkrIikiKTt0aGlzLnBsdWdpbnMucHVzaChyKSx0aGlzLnBsdWdpbnNCeUtleVtyLmtleV09cixyLnNwZWMuc3RhdGUmJnRoaXMuZmllbGRzLnB1c2gobmV3IE1uKHIua2V5LHIuc3BlYy5zdGF0ZSxyKSl9KX19Y2xhc3Mgcm57Y29uc3RydWN0b3IoZSl7dGhpcy5jb25maWc9ZX1nZXQgc2NoZW1hKCl7cmV0dXJuIHRoaXMuY29uZmlnLnNjaGVtYX1nZXQgcGx1Z2lucygpe3JldHVybiB0aGlzLmNvbmZpZy5wbHVnaW5zfWFwcGx5KGUpe3JldHVybiB0aGlzLmFwcGx5VHJhbnNhY3Rpb24oZSkuc3RhdGV9ZmlsdGVyVHJhbnNhY3Rpb24oZSx0PS0xKXtmb3IobGV0IHI9MDtyPHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoO3IrKylpZihyIT10KXtsZXQgcz10aGlzLmNvbmZpZy5wbHVnaW5zW3JdO2lmKHMuc3BlYy5maWx0ZXJUcmFuc2FjdGlvbiYmIXMuc3BlYy5maWx0ZXJUcmFuc2FjdGlvbi5jYWxsKHMsZSx0aGlzKSlyZXR1cm4hMX1yZXR1cm4hMH1hcHBseVRyYW5zYWN0aW9uKGUpe2lmKCF0aGlzLmZpbHRlclRyYW5zYWN0aW9uKGUpKXJldHVybntzdGF0ZTp0aGlzLHRyYW5zYWN0aW9uczpbXX07bGV0IHQ9W2VdLHI9dGhpcy5hcHBseUlubmVyKGUpLHM9bnVsbDtmb3IoOzspe2xldCBpPSExO2ZvcihsZXQgbz0wO288dGhpcy5jb25maWcucGx1Z2lucy5sZW5ndGg7bysrKXtsZXQgbD10aGlzLmNvbmZpZy5wbHVnaW5zW29dO2lmKGwuc3BlYy5hcHBlbmRUcmFuc2FjdGlvbil7bGV0IGE9cz9zW29dLm46MCxjPXM/c1tvXS5zdGF0ZTp0aGlzLHU9YTx0Lmxlbmd0aCYmbC5zcGVjLmFwcGVuZFRyYW5zYWN0aW9uLmNhbGwobCxhP3Quc2xpY2UoYSk6dCxjLHIpO2lmKHUmJnIuZmlsdGVyVHJhbnNhY3Rpb24odSxvKSl7aWYodS5zZXRNZXRhKCJhcHBlbmRlZFRyYW5zYWN0aW9uIixlKSwhcyl7cz1bXTtmb3IobGV0IGQ9MDtkPHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoO2QrKylzLnB1c2goZDxvP3tzdGF0ZTpyLG46dC5sZW5ndGh9OntzdGF0ZTp0aGlzLG46MH0pfXQucHVzaCh1KSxyPXIuYXBwbHlJbm5lcih1KSxpPSEwfXMmJihzW29dPXtzdGF0ZTpyLG46dC5sZW5ndGh9KX19aWYoIWkpcmV0dXJue3N0YXRlOnIsdHJhbnNhY3Rpb25zOnR9fX1hcHBseUlubmVyKGUpe2lmKCFlLmJlZm9yZS5lcSh0aGlzLmRvYykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkFwcGx5aW5nIGEgbWlzbWF0Y2hlZCB0cmFuc2FjdGlvbiIpO2xldCB0PW5ldyBybih0aGlzLmNvbmZpZykscj10aGlzLmNvbmZpZy5maWVsZHM7Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspe2xldCBpPXJbc107dFtpLm5hbWVdPWkuYXBwbHkoZSx0aGlzW2kubmFtZV0sdGhpcyx0KX1yZXR1cm4gdH1nZXQgdHIoKXtyZXR1cm4gbmV3IEhmKHRoaXMpfXN0YXRpYyBjcmVhdGUoZSl7bGV0IHQ9bmV3IHNpKGUuZG9jP2UuZG9jLnR5cGUuc2NoZW1hOmUuc2NoZW1hLGUucGx1Z2lucykscj1uZXcgcm4odCk7Zm9yKGxldCBzPTA7czx0LmZpZWxkcy5sZW5ndGg7cysrKXJbdC5maWVsZHNbc10ubmFtZV09dC5maWVsZHNbc10uaW5pdChlLHIpO3JldHVybiByfXJlY29uZmlndXJlKGUpe2xldCB0PW5ldyBzaSh0aGlzLnNjaGVtYSxlLnBsdWdpbnMpLHI9dC5maWVsZHMscz1uZXcgcm4odCk7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2xldCBvPXJbaV0ubmFtZTtzW29dPXRoaXMuaGFzT3duUHJvcGVydHkobyk/dGhpc1tvXTpyW2ldLmluaXQoZSxzKX1yZXR1cm4gc310b0pTT04oZSl7bGV0IHQ9e2RvYzp0aGlzLmRvYy50b0pTT04oKSxzZWxlY3Rpb246dGhpcy5zZWxlY3Rpb24udG9KU09OKCl9O2lmKHRoaXMuc3RvcmVkTWFya3MmJih0LnN0b3JlZE1hcmtzPXRoaXMuc3RvcmVkTWFya3MubWFwKHI9PnIudG9KU09OKCkpKSxlJiZ0eXBlb2YgZT09Im9iamVjdCIpZm9yKGxldCByIGluIGUpe2lmKHI9PSJkb2MifHxyPT0ic2VsZWN0aW9uIil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGhlIEpTT04gZmllbGRzIGBkb2NgIGFuZCBgc2VsZWN0aW9uYCBhcmUgcmVzZXJ2ZWQiKTtsZXQgcz1lW3JdLGk9cy5zcGVjLnN0YXRlO2kmJmkudG9KU09OJiYodFtyXT1pLnRvSlNPTi5jYWxsKHMsdGhpc1tzLmtleV0pKX1yZXR1cm4gdH1zdGF0aWMgZnJvbUpTT04oZSx0LHIpe2lmKCF0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGlucHV0IGZvciBFZGl0b3JTdGF0ZS5mcm9tSlNPTiIpO2lmKCFlLnNjaGVtYSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVxdWlyZWQgY29uZmlnIGZpZWxkICdzY2hlbWEnIG1pc3NpbmciKTtsZXQgcz1uZXcgc2koZS5zY2hlbWEsZS5wbHVnaW5zKSxpPW5ldyBybihzKTtyZXR1cm4gcy5maWVsZHMuZm9yRWFjaChvPT57aWYoby5uYW1lPT0iZG9jIilpLmRvYz1MZS5mcm9tSlNPTihlLnNjaGVtYSx0LmRvYyk7ZWxzZSBpZihvLm5hbWU9PSJzZWxlY3Rpb24iKWkuc2VsZWN0aW9uPUkuZnJvbUpTT04oaS5kb2MsdC5zZWxlY3Rpb24pO2Vsc2UgaWYoby5uYW1lPT0ic3RvcmVkTWFya3MiKXQuc3RvcmVkTWFya3MmJihpLnN0b3JlZE1hcmtzPXQuc3RvcmVkTWFya3MubWFwKGUuc2NoZW1hLm1hcmtGcm9tSlNPTikpO2Vsc2V7aWYocilmb3IobGV0IGwgaW4gcil7bGV0IGE9cltsXSxjPWEuc3BlYy5zdGF0ZTtpZihhLmtleT09by5uYW1lJiZjJiZjLmZyb21KU09OJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxsKSl7aVtvLm5hbWVdPWMuZnJvbUpTT04uY2FsbChhLGUsdFtsXSxpKTtyZXR1cm59fWlbby5uYW1lXT1vLmluaXQoZSxpKX19KSxpfX1mdW5jdGlvbiBZYyhuLGUsdCl7Zm9yKGxldCByIGluIG4pe2xldCBzPW5bcl07cyBpbnN0YW5jZW9mIEZ1bmN0aW9uP3M9cy5iaW5kKGUpOnI9PSJoYW5kbGVET01FdmVudHMiJiYocz1ZYyhzLGUse30pKSx0W3JdPXN9cmV0dXJuIHR9Y2xhc3MgR3tjb25zdHJ1Y3RvcihlKXt0aGlzLnNwZWM9ZSx0aGlzLnByb3BzPXt9LGUucHJvcHMmJlljKGUucHJvcHMsdGhpcyx0aGlzLnByb3BzKSx0aGlzLmtleT1lLmtleT9lLmtleS5rZXk6WmMoInBsdWdpbiIpfWdldFN0YXRlKGUpe3JldHVybiBlW3RoaXMua2V5XX19Y29uc3QgaWk9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBaYyhuKXtyZXR1cm4gbiBpbiBpaT9uKyIkIisgKytpaVtuXTooaWlbbl09MCxuKyIkIil9Y2xhc3MgcXtjb25zdHJ1Y3RvcihlPSJrZXkiKXt0aGlzLmtleT1aYyhlKX1nZXQoZSl7cmV0dXJuIGUuY29uZmlnLnBsdWdpbnNCeUtleVt0aGlzLmtleV19Z2V0U3RhdGUoZSl7cmV0dXJuIGVbdGhpcy5rZXldfX1jb25zdCBnbz0obixlKT0+bi5zZWxlY3Rpb24uZW1wdHk/ITE6KGUmJmUobi50ci5kZWxldGVTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpKSwhMCk7ZnVuY3Rpb24gZXUobixlKXtsZXR7JGN1cnNvcjp0fT1uLnNlbGVjdGlvbjtyZXR1cm4hdHx8KGU/IWUuZW5kT2ZUZXh0YmxvY2soImJhY2t3YXJkIixuKTp0LnBhcmVudE9mZnNldD4wKT9udWxsOnR9Y29uc3QgdHU9KG4sZSx0KT0+e2xldCByPWV1KG4sdCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9eW8ocik7aWYoIXMpe2xldCBvPXIuYmxvY2tSYW5nZSgpLGw9byYmbW4obyk7cmV0dXJuIGw9PW51bGw/ITE6KGUmJmUobi50ci5saWZ0KG8sbCkuc2Nyb2xsSW50b1ZpZXcoKSksITApfWxldCBpPXMubm9kZUJlZm9yZTtpZih1dShuLHMsZSwtMSkpcmV0dXJuITA7aWYoci5wYXJlbnQuY29udGVudC5zaXplPT0wJiYoY24oaSwiZW5kIil8fE4uaXNTZWxlY3RhYmxlKGkpKSlmb3IobGV0IG89ci5kZXB0aDs7by0tKXtsZXQgbD1JcyhuLmRvYyxyLmJlZm9yZShvKSxyLmFmdGVyKG8pLEUuZW1wdHkpO2lmKGwmJmwuc2xpY2Uuc2l6ZTxsLnRvLWwuZnJvbSl7aWYoZSl7bGV0IGE9bi50ci5zdGVwKGwpO2Euc2V0U2VsZWN0aW9uKGNuKGksImVuZCIpP0kuZmluZEZyb20oYS5kb2MucmVzb2x2ZShhLm1hcHBpbmcubWFwKHMucG9zLC0xKSksLTEpOk4uY3JlYXRlKGEuZG9jLHMucG9zLWkubm9kZVNpemUpKSxlKGEuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9aWYobz09MXx8ci5ub2RlKG8tMSkuY2hpbGRDb3VudD4xKWJyZWFrfXJldHVybiBpLmlzQXRvbSYmcy5kZXB0aD09ci5kZXB0aC0xPyhlJiZlKG4udHIuZGVsZXRlKHMucG9zLWkubm9kZVNpemUscy5wb3MpLnNjcm9sbEludG9WaWV3KCkpLCEwKTohMX0sVmY9KG4sZSx0KT0+e2xldCByPWV1KG4sdCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9eW8ocik7cmV0dXJuIHM/bnUobixzLGUpOiExfSxVZj0obixlLHQpPT57bGV0IHI9c3Uobix0KTtpZighcilyZXR1cm4hMTtsZXQgcz1rbyhyKTtyZXR1cm4gcz9udShuLHMsZSk6ITF9O2Z1bmN0aW9uIG51KG4sZSx0KXtsZXQgcj1lLm5vZGVCZWZvcmUscz1yLGk9ZS5wb3MtMTtmb3IoOyFzLmlzVGV4dGJsb2NrO2ktLSl7aWYocy50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiExO2xldCB1PXMubGFzdENoaWxkO2lmKCF1KXJldHVybiExO3M9dX1sZXQgbz1lLm5vZGVBZnRlcixsPW8sYT1lLnBvcysxO2Zvcig7IWwuaXNUZXh0YmxvY2s7YSsrKXtpZihsLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITE7bGV0IHU9bC5maXJzdENoaWxkO2lmKCF1KXJldHVybiExO2w9dX1sZXQgYz1JcyhuLmRvYyxpLGEsRS5lbXB0eSk7aWYoIWN8fGMuZnJvbSE9aXx8YyBpbnN0YW5jZW9mIHJlJiZjLnNsaWNlLnNpemU+PWEtaSlyZXR1cm4hMTtpZih0KXtsZXQgdT1uLnRyLnN0ZXAoYyk7dS5zZXRTZWxlY3Rpb24oRC5jcmVhdGUodS5kb2MsaSkpLHQodS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH1mdW5jdGlvbiBjbihuLGUsdD0hMSl7Zm9yKGxldCByPW47cjtyPWU9PSJzdGFydCI/ci5maXJzdENoaWxkOnIubGFzdENoaWxkKXtpZihyLmlzVGV4dGJsb2NrKXJldHVybiEwO2lmKHQmJnIuY2hpbGRDb3VudCE9MSlyZXR1cm4hMX1yZXR1cm4hMX1jb25zdCBydT0obixlLHQpPT57bGV0eyRoZWFkOnIsZW1wdHk6c309bi5zZWxlY3Rpb24saT1yO2lmKCFzKXJldHVybiExO2lmKHIucGFyZW50LmlzVGV4dGJsb2NrKXtpZih0PyF0LmVuZE9mVGV4dGJsb2NrKCJiYWNrd2FyZCIsbik6ci5wYXJlbnRPZmZzZXQ+MClyZXR1cm4hMTtpPXlvKHIpfWxldCBvPWkmJmkubm9kZUJlZm9yZTtyZXR1cm4hb3x8IU4uaXNTZWxlY3RhYmxlKG8pPyExOihlJiZlKG4udHIuc2V0U2VsZWN0aW9uKE4uY3JlYXRlKG4uZG9jLGkucG9zLW8ubm9kZVNpemUpKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9O2Z1bmN0aW9uIHlvKG4pe2lmKCFuLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKWZvcihsZXQgZT1uLmRlcHRoLTE7ZT49MDtlLS0pe2lmKG4uaW5kZXgoZSk+MClyZXR1cm4gbi5kb2MucmVzb2x2ZShuLmJlZm9yZShlKzEpKTtpZihuLm5vZGUoZSkudHlwZS5zcGVjLmlzb2xhdGluZylicmVha31yZXR1cm4gbnVsbH1mdW5jdGlvbiBzdShuLGUpe2xldHskY3Vyc29yOnR9PW4uc2VsZWN0aW9uO3JldHVybiF0fHwoZT8hZS5lbmRPZlRleHRibG9jaygiZm9yd2FyZCIsbik6dC5wYXJlbnRPZmZzZXQ8dC5wYXJlbnQuY29udGVudC5zaXplKT9udWxsOnR9Y29uc3QgaXU9KG4sZSx0KT0+e2xldCByPXN1KG4sdCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9a28ocik7aWYoIXMpcmV0dXJuITE7bGV0IGk9cy5ub2RlQWZ0ZXI7aWYodXUobixzLGUsMSkpcmV0dXJuITA7aWYoci5wYXJlbnQuY29udGVudC5zaXplPT0wJiYoY24oaSwic3RhcnQiKXx8Ti5pc1NlbGVjdGFibGUoaSkpKXtsZXQgbz1JcyhuLmRvYyxyLmJlZm9yZSgpLHIuYWZ0ZXIoKSxFLmVtcHR5KTtpZihvJiZvLnNsaWNlLnNpemU8by50by1vLmZyb20pe2lmKGUpe2xldCBsPW4udHIuc3RlcChvKTtsLnNldFNlbGVjdGlvbihjbihpLCJzdGFydCIpP0kuZmluZEZyb20obC5kb2MucmVzb2x2ZShsLm1hcHBpbmcubWFwKHMucG9zKSksMSk6Ti5jcmVhdGUobC5kb2MsbC5tYXBwaW5nLm1hcChzLnBvcykpKSxlKGwuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9fXJldHVybiBpLmlzQXRvbSYmcy5kZXB0aD09ci5kZXB0aC0xPyhlJiZlKG4udHIuZGVsZXRlKHMucG9zLHMucG9zK2kubm9kZVNpemUpLnNjcm9sbEludG9WaWV3KCkpLCEwKTohMX0sb3U9KG4sZSx0KT0+e2xldHskaGVhZDpyLGVtcHR5OnN9PW4uc2VsZWN0aW9uLGk9cjtpZighcylyZXR1cm4hMTtpZihyLnBhcmVudC5pc1RleHRibG9jayl7aWYodD8hdC5lbmRPZlRleHRibG9jaygiZm9yd2FyZCIsbik6ci5wYXJlbnRPZmZzZXQ8ci5wYXJlbnQuY29udGVudC5zaXplKXJldHVybiExO2k9a28ocil9bGV0IG89aSYmaS5ub2RlQWZ0ZXI7cmV0dXJuIW98fCFOLmlzU2VsZWN0YWJsZShvKT8hMTooZSYmZShuLnRyLnNldFNlbGVjdGlvbihOLmNyZWF0ZShuLmRvYyxpLnBvcykpLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24ga28obil7aWYoIW4ucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcpZm9yKGxldCBlPW4uZGVwdGgtMTtlPj0wO2UtLSl7bGV0IHQ9bi5ub2RlKGUpO2lmKG4uaW5kZXgoZSkrMTx0LmNoaWxkQ291bnQpcmV0dXJuIG4uZG9jLnJlc29sdmUobi5hZnRlcihlKzEpKTtpZih0LnR5cGUuc3BlYy5pc29sYXRpbmcpYnJlYWt9cmV0dXJuIG51bGx9Y29uc3QgamY9KG4sZSk9PntsZXQgdD1uLnNlbGVjdGlvbixyPXQgaW5zdGFuY2VvZiBOLHM7aWYocil7aWYodC5ub2RlLmlzVGV4dGJsb2NrfHwhQXQobi5kb2MsdC5mcm9tKSlyZXR1cm4hMTtzPXQuZnJvbX1lbHNlIGlmKHM9UnMobi5kb2MsdC5mcm9tLC0xKSxzPT1udWxsKXJldHVybiExO2lmKGUpe2xldCBpPW4udHIuam9pbihzKTtyJiZpLnNldFNlbGVjdGlvbihOLmNyZWF0ZShpLmRvYyxzLW4uZG9jLnJlc29sdmUocykubm9kZUJlZm9yZS5ub2RlU2l6ZSkpLGUoaS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH0scWY9KG4sZSk9PntsZXQgdD1uLnNlbGVjdGlvbixyO2lmKHQgaW5zdGFuY2VvZiBOKXtpZih0Lm5vZGUuaXNUZXh0YmxvY2t8fCFBdChuLmRvYyx0LnRvKSlyZXR1cm4hMTtyPXQudG99ZWxzZSBpZihyPVJzKG4uZG9jLHQudG8sMSkscj09bnVsbClyZXR1cm4hMTtyZXR1cm4gZSYmZShuLnRyLmpvaW4ocikuc2Nyb2xsSW50b1ZpZXcoKSksITB9LFdmPShuLGUpPT57bGV0eyRmcm9tOnQsJHRvOnJ9PW4uc2VsZWN0aW9uLHM9dC5ibG9ja1JhbmdlKHIpLGk9cyYmbW4ocyk7cmV0dXJuIGk9PW51bGw/ITE6KGUmJmUobi50ci5saWZ0KHMsaSkuc2Nyb2xsSW50b1ZpZXcoKSksITApfSxsdT0obixlKT0+e2xldHskaGVhZDp0LCRhbmNob3I6cn09bi5zZWxlY3Rpb247cmV0dXJuIXQucGFyZW50LnR5cGUuc3BlYy5jb2RlfHwhdC5zYW1lUGFyZW50KHIpPyExOihlJiZlKG4udHIuaW5zZXJ0VGV4dChgCmApLnNjcm9sbEludG9WaWV3KCkpLCEwKX07ZnVuY3Rpb24gYm8obil7Zm9yKGxldCBlPTA7ZTxuLmVkZ2VDb3VudDtlKyspe2xldHt0eXBlOnR9PW4uZWRnZShlKTtpZih0LmlzVGV4dGJsb2NrJiYhdC5oYXNSZXF1aXJlZEF0dHJzKCkpcmV0dXJuIHR9cmV0dXJuIG51bGx9Y29uc3QgS2Y9KG4sZSk9PntsZXR7JGhlYWQ6dCwkYW5jaG9yOnJ9PW4uc2VsZWN0aW9uO2lmKCF0LnBhcmVudC50eXBlLnNwZWMuY29kZXx8IXQuc2FtZVBhcmVudChyKSlyZXR1cm4hMTtsZXQgcz10Lm5vZGUoLTEpLGk9dC5pbmRleEFmdGVyKC0xKSxvPWJvKHMuY29udGVudE1hdGNoQXQoaSkpO2lmKCFvfHwhcy5jYW5SZXBsYWNlV2l0aChpLGksbykpcmV0dXJuITE7aWYoZSl7bGV0IGw9dC5hZnRlcigpLGE9bi50ci5yZXBsYWNlV2l0aChsLGwsby5jcmVhdGVBbmRGaWxsKCkpO2Euc2V0U2VsZWN0aW9uKEkubmVhcihhLmRvYy5yZXNvbHZlKGwpLDEpKSxlKGEuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9LGF1PShuLGUpPT57bGV0IHQ9bi5zZWxlY3Rpb24seyRmcm9tOnIsJHRvOnN9PXQ7aWYodCBpbnN0YW5jZW9mIEFlfHxyLnBhcmVudC5pbmxpbmVDb250ZW50fHxzLnBhcmVudC5pbmxpbmVDb250ZW50KXJldHVybiExO2xldCBpPWJvKHMucGFyZW50LmNvbnRlbnRNYXRjaEF0KHMuaW5kZXhBZnRlcigpKSk7aWYoIWl8fCFpLmlzVGV4dGJsb2NrKXJldHVybiExO2lmKGUpe2xldCBvPSghci5wYXJlbnRPZmZzZXQmJnMuaW5kZXgoKTxzLnBhcmVudC5jaGlsZENvdW50P3I6cykucG9zLGw9bi50ci5pbnNlcnQobyxpLmNyZWF0ZUFuZEZpbGwoKSk7bC5zZXRTZWxlY3Rpb24oRC5jcmVhdGUobC5kb2MsbysxKSksZShsLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfSxjdT0obixlKT0+e2xldHskY3Vyc29yOnR9PW4uc2VsZWN0aW9uO2lmKCF0fHx0LnBhcmVudC5jb250ZW50LnNpemUpcmV0dXJuITE7aWYodC5kZXB0aD4xJiZ0LmFmdGVyKCkhPXQuZW5kKC0xKSl7bGV0IGk9dC5iZWZvcmUoKTtpZihvdChuLmRvYyxpKSlyZXR1cm4gZSYmZShuLnRyLnNwbGl0KGkpLnNjcm9sbEludG9WaWV3KCkpLCEwfWxldCByPXQuYmxvY2tSYW5nZSgpLHM9ciYmbW4ocik7cmV0dXJuIHM9PW51bGw/ITE6KGUmJmUobi50ci5saWZ0KHIscykuc2Nyb2xsSW50b1ZpZXcoKSksITApfTtmdW5jdGlvbiBKZihuKXtyZXR1cm4oZSx0KT0+e2xldHskZnJvbTpyLCR0bzpzfT1lLnNlbGVjdGlvbjtpZihlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIE4mJmUuc2VsZWN0aW9uLm5vZGUuaXNCbG9jaylyZXR1cm4hci5wYXJlbnRPZmZzZXR8fCFvdChlLmRvYyxyLnBvcyk/ITE6KHQmJnQoZS50ci5zcGxpdChyLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSksITApO2lmKCFyLmRlcHRoKXJldHVybiExO2xldCBpPVtdLG8sbCxhPSExLGM9ITE7Zm9yKGxldCBmPXIuZGVwdGg7O2YtLSlpZihyLm5vZGUoZikuaXNCbG9jayl7YT1yLmVuZChmKT09ci5wb3MrKHIuZGVwdGgtZiksYz1yLnN0YXJ0KGYpPT1yLnBvcy0oci5kZXB0aC1mKSxsPWJvKHIubm9kZShmLTEpLmNvbnRlbnRNYXRjaEF0KHIuaW5kZXhBZnRlcihmLTEpKSksaS51bnNoaWZ0KGEmJmw/e3R5cGU6bH06bnVsbCksbz1mO2JyZWFrfWVsc2V7aWYoZj09MSlyZXR1cm4hMTtpLnVuc2hpZnQobnVsbCl9bGV0IHU9ZS50cjsoZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBEfHxlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEFlKSYmdS5kZWxldGVTZWxlY3Rpb24oKTtsZXQgZD11Lm1hcHBpbmcubWFwKHIucG9zKSxoPW90KHUuZG9jLGQsaS5sZW5ndGgsaSk7aWYoaHx8KGlbMF09bD97dHlwZTpsfTpudWxsLGg9b3QodS5kb2MsZCxpLmxlbmd0aCxpKSksIWgpcmV0dXJuITE7aWYodS5zcGxpdChkLGkubGVuZ3RoLGkpLCFhJiZjJiZyLm5vZGUobykudHlwZSE9bCl7bGV0IGY9dS5tYXBwaW5nLm1hcChyLmJlZm9yZShvKSkscD11LmRvYy5yZXNvbHZlKGYpO2wmJnIubm9kZShvLTEpLmNhblJlcGxhY2VXaXRoKHAuaW5kZXgoKSxwLmluZGV4KCkrMSxsKSYmdS5zZXROb2RlTWFya3VwKHUubWFwcGluZy5tYXAoci5iZWZvcmUobykpLGwpfXJldHVybiB0JiZ0KHUuc2Nyb2xsSW50b1ZpZXcoKSksITB9fWNvbnN0IEdmPUpmKCksUWY9KG4sZSk9PntsZXR7JGZyb206dCx0bzpyfT1uLnNlbGVjdGlvbixzLGk9dC5zaGFyZWREZXB0aChyKTtyZXR1cm4gaT09MD8hMToocz10LmJlZm9yZShpKSxlJiZlKG4udHIuc2V0U2VsZWN0aW9uKE4uY3JlYXRlKG4uZG9jLHMpKSksITApfTtmdW5jdGlvbiBYZihuLGUsdCl7bGV0IHI9ZS5ub2RlQmVmb3JlLHM9ZS5ub2RlQWZ0ZXIsaT1lLmluZGV4KCk7cmV0dXJuIXJ8fCFzfHwhci50eXBlLmNvbXBhdGlibGVDb250ZW50KHMudHlwZSk/ITE6IXIuY29udGVudC5zaXplJiZlLnBhcmVudC5jYW5SZXBsYWNlKGktMSxpKT8odCYmdChuLnRyLmRlbGV0ZShlLnBvcy1yLm5vZGVTaXplLGUucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCk6IWUucGFyZW50LmNhblJlcGxhY2UoaSxpKzEpfHwhKHMuaXNUZXh0YmxvY2t8fEF0KG4uZG9jLGUucG9zKSk/ITE6KHQmJnQobi50ci5qb2luKGUucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCl9ZnVuY3Rpb24gdXUobixlLHQscil7bGV0IHM9ZS5ub2RlQmVmb3JlLGk9ZS5ub2RlQWZ0ZXIsbyxsLGE9cy50eXBlLnNwZWMuaXNvbGF0aW5nfHxpLnR5cGUuc3BlYy5pc29sYXRpbmc7aWYoIWEmJlhmKG4sZSx0KSlyZXR1cm4hMDtsZXQgYz0hYSYmZS5wYXJlbnQuY2FuUmVwbGFjZShlLmluZGV4KCksZS5pbmRleCgpKzEpO2lmKGMmJihvPShsPXMuY29udGVudE1hdGNoQXQocy5jaGlsZENvdW50KSkuZmluZFdyYXBwaW5nKGkudHlwZSkpJiZsLm1hdGNoVHlwZShvWzBdfHxpLnR5cGUpLnZhbGlkRW5kKXtpZih0KXtsZXQgZj1lLnBvcytpLm5vZGVTaXplLHA9Uy5lbXB0eTtmb3IobGV0IHk9by5sZW5ndGgtMTt5Pj0wO3ktLSlwPVMuZnJvbShvW3ldLmNyZWF0ZShudWxsLHApKTtwPVMuZnJvbShzLmNvcHkocCkpO2xldCBtPW4udHIuc3RlcChuZXcgYWUoZS5wb3MtMSxmLGUucG9zLGYsbmV3IEUocCwxLDApLG8ubGVuZ3RoLCEwKSksZz1tLmRvYy5yZXNvbHZlKGYrMipvLmxlbmd0aCk7Zy5ub2RlQWZ0ZXImJmcubm9kZUFmdGVyLnR5cGU9PXMudHlwZSYmQXQobS5kb2MsZy5wb3MpJiZtLmpvaW4oZy5wb3MpLHQobS5zY3JvbGxJbnRvVmlldygpKX1yZXR1cm4hMH1sZXQgdT1pLnR5cGUuc3BlYy5pc29sYXRpbmd8fHI+MCYmYT9udWxsOkkuZmluZEZyb20oZSwxKSxkPXUmJnUuJGZyb20uYmxvY2tSYW5nZSh1LiR0byksaD1kJiZtbihkKTtpZihoIT1udWxsJiZoPj1lLmRlcHRoKXJldHVybiB0JiZ0KG4udHIubGlmdChkLGgpLnNjcm9sbEludG9WaWV3KCkpLCEwO2lmKGMmJmNuKGksInN0YXJ0IiwhMCkmJmNuKHMsImVuZCIpKXtsZXQgZj1zLHA9W107Zm9yKDtwLnB1c2goZiksIWYuaXNUZXh0YmxvY2s7KWY9Zi5sYXN0Q2hpbGQ7bGV0IG09aSxnPTE7Zm9yKDshbS5pc1RleHRibG9jazttPW0uZmlyc3RDaGlsZClnKys7aWYoZi5jYW5SZXBsYWNlKGYuY2hpbGRDb3VudCxmLmNoaWxkQ291bnQsbS5jb250ZW50KSl7aWYodCl7bGV0IHk9Uy5lbXB0eTtmb3IobGV0IGI9cC5sZW5ndGgtMTtiPj0wO2ItLSl5PVMuZnJvbShwW2JdLmNvcHkoeSkpO2xldCBrPW4udHIuc3RlcChuZXcgYWUoZS5wb3MtcC5sZW5ndGgsZS5wb3MraS5ub2RlU2l6ZSxlLnBvcytnLGUucG9zK2kubm9kZVNpemUtZyxuZXcgRSh5LHAubGVuZ3RoLDApLDAsITApKTt0KGsuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIGR1KG4pe3JldHVybiBmdW5jdGlvbihlLHQpe2xldCByPWUuc2VsZWN0aW9uLHM9bjwwP3IuJGZyb206ci4kdG8saT1zLmRlcHRoO2Zvcig7cy5ub2RlKGkpLmlzSW5saW5lOyl7aWYoIWkpcmV0dXJuITE7aS0tfXJldHVybiBzLm5vZGUoaSkuaXNUZXh0YmxvY2s/KHQmJnQoZS50ci5zZXRTZWxlY3Rpb24oRC5jcmVhdGUoZS5kb2MsbjwwP3Muc3RhcnQoaSk6cy5lbmQoaSkpKSksITApOiExfX1jb25zdCBZZj1kdSgtMSksWmY9ZHUoMSk7ZnVuY3Rpb24gZXAobixlPW51bGwpe3JldHVybiBmdW5jdGlvbih0LHIpe2xldHskZnJvbTpzLCR0bzppfT10LnNlbGVjdGlvbixvPXMuYmxvY2tSYW5nZShpKSxsPW8mJnBvKG8sbixlKTtyZXR1cm4gbD8ociYmcih0LnRyLndyYXAobyxsKS5zY3JvbGxJbnRvVmlldygpKSwhMCk6ITF9fWZ1bmN0aW9uIFBsKG4sZT1udWxsKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtsZXQgcz0hMTtmb3IobGV0IGk9MDtpPHQuc2VsZWN0aW9uLnJhbmdlcy5sZW5ndGgmJiFzO2krKyl7bGV0eyRmcm9tOntwb3M6b30sJHRvOntwb3M6bH19PXQuc2VsZWN0aW9uLnJhbmdlc1tpXTt0LmRvYy5ub2Rlc0JldHdlZW4obyxsLChhLGMpPT57aWYocylyZXR1cm4hMTtpZighKCFhLmlzVGV4dGJsb2NrfHxhLmhhc01hcmt1cChuLGUpKSlpZihhLnR5cGU9PW4pcz0hMDtlbHNle2xldCB1PXQuZG9jLnJlc29sdmUoYyksZD11LmluZGV4KCk7cz11LnBhcmVudC5jYW5SZXBsYWNlV2l0aChkLGQrMSxuKX19KX1pZighcylyZXR1cm4hMTtpZihyKXtsZXQgaT10LnRyO2ZvcihsZXQgbz0wO288dC5zZWxlY3Rpb24ucmFuZ2VzLmxlbmd0aDtvKyspe2xldHskZnJvbTp7cG9zOmx9LCR0bzp7cG9zOmF9fT10LnNlbGVjdGlvbi5yYW5nZXNbb107aS5zZXRCbG9ja1R5cGUobCxhLG4sZSl9cihpLnNjcm9sbEludG9WaWV3KCkpfXJldHVybiEwfX1mdW5jdGlvbiB4byguLi5uKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe2ZvcihsZXQgcz0wO3M8bi5sZW5ndGg7cysrKWlmKG5bc10oZSx0LHIpKXJldHVybiEwO3JldHVybiExfX14byhnbyx0dSxydSk7eG8oZ28saXUsb3UpO3hvKGx1LGF1LGN1LEdmKTt0eXBlb2YgbmF2aWdhdG9yPCJ1Ij8vTWFjfGlQKGhvbmV8W29hXWQpLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk6dHlwZW9mIG9zPCJ1IiYmb3MucGxhdGZvcm0mJm9zLnBsYXRmb3JtKCk9PSJkYXJ3aW4iO2Z1bmN0aW9uIHRwKG4sZT1udWxsKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtsZXR7JGZyb206cywkdG86aX09dC5zZWxlY3Rpb24sbz1zLmJsb2NrUmFuZ2UoaSk7aWYoIW8pcmV0dXJuITE7bGV0IGw9cj90LnRyOm51bGw7cmV0dXJuIG5wKGwsbyxuLGUpPyhyJiZyKGwuc2Nyb2xsSW50b1ZpZXcoKSksITApOiExfX1mdW5jdGlvbiBucChuLGUsdCxyPW51bGwpe2xldCBzPSExLGk9ZSxvPWUuJGZyb20uZG9jO2lmKGUuZGVwdGg+PTImJmUuJGZyb20ubm9kZShlLmRlcHRoLTEpLnR5cGUuY29tcGF0aWJsZUNvbnRlbnQodCkmJmUuc3RhcnRJbmRleD09MCl7aWYoZS4kZnJvbS5pbmRleChlLmRlcHRoLTEpPT0wKXJldHVybiExO2xldCBhPW8ucmVzb2x2ZShlLnN0YXJ0LTIpO2k9bmV3IEhyKGEsYSxlLmRlcHRoKSxlLmVuZEluZGV4PGUucGFyZW50LmNoaWxkQ291bnQmJihlPW5ldyBIcihlLiRmcm9tLG8ucmVzb2x2ZShlLiR0by5lbmQoZS5kZXB0aCkpLGUuZGVwdGgpKSxzPSEwfWxldCBsPXBvKGksdCxyLGUpO3JldHVybiBsPyhuJiZycChuLGUsbCxzLHQpLCEwKTohMX1mdW5jdGlvbiBycChuLGUsdCxyLHMpe2xldCBpPVMuZW1wdHk7Zm9yKGxldCB1PXQubGVuZ3RoLTE7dT49MDt1LS0paT1TLmZyb20odFt1XS50eXBlLmNyZWF0ZSh0W3VdLmF0dHJzLGkpKTtuLnN0ZXAobmV3IGFlKGUuc3RhcnQtKHI/MjowKSxlLmVuZCxlLnN0YXJ0LGUuZW5kLG5ldyBFKGksMCwwKSx0Lmxlbmd0aCwhMCkpO2xldCBvPTA7Zm9yKGxldCB1PTA7dTx0Lmxlbmd0aDt1KyspdFt1XS50eXBlPT1zJiYobz11KzEpO2xldCBsPXQubGVuZ3RoLW8sYT1lLnN0YXJ0K3QubGVuZ3RoLShyPzI6MCksYz1lLnBhcmVudDtmb3IobGV0IHU9ZS5zdGFydEluZGV4LGQ9ZS5lbmRJbmRleCxoPSEwO3U8ZDt1KyssaD0hMSkhaCYmb3Qobi5kb2MsYSxsKSYmKG4uc3BsaXQoYSxsKSxhKz0yKmwpLGErPWMuY2hpbGQodSkubm9kZVNpemU7cmV0dXJuIG59ZnVuY3Rpb24gc3Aobil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0eyRmcm9tOnIsJHRvOnN9PWUuc2VsZWN0aW9uLGk9ci5ibG9ja1JhbmdlKHMsbz0+by5jaGlsZENvdW50PjAmJm8uZmlyc3RDaGlsZC50eXBlPT1uKTtyZXR1cm4gaT90P3Iubm9kZShpLmRlcHRoLTEpLnR5cGU9PW4/aXAoZSx0LG4saSk6b3AoZSx0LGkpOiEwOiExfX1mdW5jdGlvbiBpcChuLGUsdCxyKXtsZXQgcz1uLnRyLGk9ci5lbmQsbz1yLiR0by5lbmQoci5kZXB0aCk7aTxvJiYocy5zdGVwKG5ldyBhZShpLTEsbyxpLG8sbmV3IEUoUy5mcm9tKHQuY3JlYXRlKG51bGwsci5wYXJlbnQuY29weSgpKSksMSwwKSwxLCEwKSkscj1uZXcgSHIocy5kb2MucmVzb2x2ZShyLiRmcm9tLnBvcykscy5kb2MucmVzb2x2ZShvKSxyLmRlcHRoKSk7Y29uc3QgbD1tbihyKTtpZihsPT1udWxsKXJldHVybiExO3MubGlmdChyLGwpO2xldCBhPXMuZG9jLnJlc29sdmUocy5tYXBwaW5nLm1hcChpLC0xKS0xKTtyZXR1cm4gQXQocy5kb2MsYS5wb3MpJiZhLm5vZGVCZWZvcmUudHlwZT09YS5ub2RlQWZ0ZXIudHlwZSYmcy5qb2luKGEucG9zKSxlKHMuc2Nyb2xsSW50b1ZpZXcoKSksITB9ZnVuY3Rpb24gb3AobixlLHQpe2xldCByPW4udHIscz10LnBhcmVudDtmb3IobGV0IGY9dC5lbmQscD10LmVuZEluZGV4LTEsbT10LnN0YXJ0SW5kZXg7cD5tO3AtLSlmLT1zLmNoaWxkKHApLm5vZGVTaXplLHIuZGVsZXRlKGYtMSxmKzEpO2xldCBpPXIuZG9jLnJlc29sdmUodC5zdGFydCksbz1pLm5vZGVBZnRlcjtpZihyLm1hcHBpbmcubWFwKHQuZW5kKSE9dC5zdGFydCtpLm5vZGVBZnRlci5ub2RlU2l6ZSlyZXR1cm4hMTtsZXQgbD10LnN0YXJ0SW5kZXg9PTAsYT10LmVuZEluZGV4PT1zLmNoaWxkQ291bnQsYz1pLm5vZGUoLTEpLHU9aS5pbmRleCgtMSk7aWYoIWMuY2FuUmVwbGFjZSh1KyhsPzA6MSksdSsxLG8uY29udGVudC5hcHBlbmQoYT9TLmVtcHR5OlMuZnJvbShzKSkpKXJldHVybiExO2xldCBkPWkucG9zLGg9ZCtvLm5vZGVTaXplO3JldHVybiByLnN0ZXAobmV3IGFlKGQtKGw/MTowKSxoKyhhPzE6MCksZCsxLGgtMSxuZXcgRSgobD9TLmVtcHR5OlMuZnJvbShzLmNvcHkoUy5lbXB0eSkpKS5hcHBlbmQoYT9TLmVtcHR5OlMuZnJvbShzLmNvcHkoUy5lbXB0eSkpKSxsPzA6MSxhPzA6MSksbD8wOjEpKSxlKHIuc2Nyb2xsSW50b1ZpZXcoKSksITB9ZnVuY3Rpb24gbHAobil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0eyRmcm9tOnIsJHRvOnN9PWUuc2VsZWN0aW9uLGk9ci5ibG9ja1JhbmdlKHMsYz0+Yy5jaGlsZENvdW50PjAmJmMuZmlyc3RDaGlsZC50eXBlPT1uKTtpZighaSlyZXR1cm4hMTtsZXQgbz1pLnN0YXJ0SW5kZXg7aWYobz09MClyZXR1cm4hMTtsZXQgbD1pLnBhcmVudCxhPWwuY2hpbGQoby0xKTtpZihhLnR5cGUhPW4pcmV0dXJuITE7aWYodCl7bGV0IGM9YS5sYXN0Q2hpbGQmJmEubGFzdENoaWxkLnR5cGU9PWwudHlwZSx1PVMuZnJvbShjP24uY3JlYXRlKCk6bnVsbCksZD1uZXcgRShTLmZyb20obi5jcmVhdGUobnVsbCxTLmZyb20obC50eXBlLmNyZWF0ZShudWxsLHUpKSkpLGM/MzoxLDApLGg9aS5zdGFydCxmPWkuZW5kO3QoZS50ci5zdGVwKG5ldyBhZShoLShjPzM6MSksZixoLGYsZCwxLCEwKSkuc2Nyb2xsSW50b1ZpZXcoKSl9cmV0dXJuITB9fWNvbnN0IGZlPWZ1bmN0aW9uKG4pe2Zvcih2YXIgZT0wOztlKyspaWYobj1uLnByZXZpb3VzU2libGluZywhbilyZXR1cm4gZX0sdW49ZnVuY3Rpb24obil7bGV0IGU9bi5hc3NpZ25lZFNsb3R8fG4ucGFyZW50Tm9kZTtyZXR1cm4gZSYmZS5ub2RlVHlwZT09MTE/ZS5ob3N0OmV9O2xldCBMaT1udWxsO2NvbnN0IHR0PWZ1bmN0aW9uKG4sZSx0KXtsZXQgcj1MaXx8KExpPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCkpO3JldHVybiByLnNldEVuZChuLHQ/P24ubm9kZVZhbHVlLmxlbmd0aCksci5zZXRTdGFydChuLGV8fDApLHJ9LGFwPWZ1bmN0aW9uKCl7TGk9bnVsbH0sVXQ9ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHQmJih6bChuLGUsdCxyLC0xKXx8emwobixlLHQsciwxKSl9LGNwPS9eKGltZ3xicnxpbnB1dHx0ZXh0YXJlYXxocikkL2k7ZnVuY3Rpb24gemwobixlLHQscixzKXtmb3IodmFyIGk7Oyl7aWYobj09dCYmZT09cilyZXR1cm4hMDtpZihlPT0oczwwPzA6RGUobikpKXtsZXQgbz1uLnBhcmVudE5vZGU7aWYoIW98fG8ubm9kZVR5cGUhPTF8fHNyKG4pfHxjcC50ZXN0KG4ubm9kZU5hbWUpfHxuLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilyZXR1cm4hMTtlPWZlKG4pKyhzPDA/MDoxKSxuPW99ZWxzZSBpZihuLm5vZGVUeXBlPT0xKXtsZXQgbz1uLmNoaWxkTm9kZXNbZSsoczwwPy0xOjApXTtpZihvLm5vZGVUeXBlPT0xJiZvLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilpZighKChpPW8ucG1WaWV3RGVzYyk9PT1udWxsfHxpPT09dm9pZCAwKSYmaS5pZ25vcmVGb3JTZWxlY3Rpb24pZSs9cztlbHNlIHJldHVybiExO2Vsc2Ugbj1vLGU9czwwP0RlKG4pOjB9ZWxzZSByZXR1cm4hMX19ZnVuY3Rpb24gRGUobil7cmV0dXJuIG4ubm9kZVR5cGU9PTM/bi5ub2RlVmFsdWUubGVuZ3RoOm4uY2hpbGROb2Rlcy5sZW5ndGh9ZnVuY3Rpb24gdXAobixlKXtmb3IoOzspe2lmKG4ubm9kZVR5cGU9PTMmJmUpcmV0dXJuIG47aWYobi5ub2RlVHlwZT09MSYmZT4wKXtpZihuLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilyZXR1cm4gbnVsbDtuPW4uY2hpbGROb2Rlc1tlLTFdLGU9RGUobil9ZWxzZSBpZihuLnBhcmVudE5vZGUmJiFzcihuKSllPWZlKG4pLG49bi5wYXJlbnROb2RlO2Vsc2UgcmV0dXJuIG51bGx9fWZ1bmN0aW9uIGRwKG4sZSl7Zm9yKDs7KXtpZihuLm5vZGVUeXBlPT0zJiZlPG4ubm9kZVZhbHVlLmxlbmd0aClyZXR1cm4gbjtpZihuLm5vZGVUeXBlPT0xJiZlPG4uY2hpbGROb2Rlcy5sZW5ndGgpe2lmKG4uY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKXJldHVybiBudWxsO249bi5jaGlsZE5vZGVzW2VdLGU9MH1lbHNlIGlmKG4ucGFyZW50Tm9kZSYmIXNyKG4pKWU9ZmUobikrMSxuPW4ucGFyZW50Tm9kZTtlbHNlIHJldHVybiBudWxsfX1mdW5jdGlvbiBocChuLGUsdCl7Zm9yKGxldCByPWU9PTAscz1lPT1EZShuKTtyfHxzOyl7aWYobj09dClyZXR1cm4hMDtsZXQgaT1mZShuKTtpZihuPW4ucGFyZW50Tm9kZSwhbilyZXR1cm4hMTtyPXImJmk9PTAscz1zJiZpPT1EZShuKX19ZnVuY3Rpb24gc3Iobil7bGV0IGU7Zm9yKGxldCB0PW47dCYmIShlPXQucG1WaWV3RGVzYyk7dD10LnBhcmVudE5vZGUpO3JldHVybiBlJiZlLm5vZGUmJmUubm9kZS5pc0Jsb2NrJiYoZS5kb209PW58fGUuY29udGVudERPTT09bil9Y29uc3QgTHM9ZnVuY3Rpb24obil7cmV0dXJuIG4uZm9jdXNOb2RlJiZVdChuLmZvY3VzTm9kZSxuLmZvY3VzT2Zmc2V0LG4uYW5jaG9yTm9kZSxuLmFuY2hvck9mZnNldCl9O2Z1bmN0aW9uIFJ0KG4sZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIHQuaW5pdEV2ZW50KCJrZXlkb3duIiwhMCwhMCksdC5rZXlDb2RlPW4sdC5rZXk9dC5jb2RlPWUsdH1mdW5jdGlvbiBmcChuKXtsZXQgZT1uLmFjdGl2ZUVsZW1lbnQ7Zm9yKDtlJiZlLnNoYWRvd1Jvb3Q7KWU9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGV9ZnVuY3Rpb24gcHAobixlLHQpe2lmKG4uY2FyZXRQb3NpdGlvbkZyb21Qb2ludCl0cnl7bGV0IHI9bi5jYXJldFBvc2l0aW9uRnJvbVBvaW50KGUsdCk7aWYocilyZXR1cm57bm9kZTpyLm9mZnNldE5vZGUsb2Zmc2V0Ok1hdGgubWluKERlKHIub2Zmc2V0Tm9kZSksci5vZmZzZXQpfX1jYXRjaHt9aWYobi5jYXJldFJhbmdlRnJvbVBvaW50KXtsZXQgcj1uLmNhcmV0UmFuZ2VGcm9tUG9pbnQoZSx0KTtpZihyKXJldHVybntub2RlOnIuc3RhcnRDb250YWluZXIsb2Zmc2V0Ok1hdGgubWluKERlKHIuc3RhcnRDb250YWluZXIpLHIuc3RhcnRPZmZzZXQpfX19Y29uc3QgSmU9dHlwZW9mIG5hdmlnYXRvcjwidSI/bmF2aWdhdG9yOm51bGwsJGw9dHlwZW9mIGRvY3VtZW50PCJ1Ij9kb2N1bWVudDpudWxsLE90PUplJiZKZS51c2VyQWdlbnR8fCIiLFBpPS9FZGdlXC8oXGQrKS8uZXhlYyhPdCksaHU9L01TSUUgXGQvLmV4ZWMoT3QpLHppPS9UcmlkZW50XC8oPzpbNy05XXxcZHsyLH0pXC4uKnJ2OihcZCspLy5leGVjKE90KSxNZT0hIShodXx8eml8fFBpKSxTdD1odT9kb2N1bWVudC5kb2N1bWVudE1vZGU6emk/K3ppWzFdOlBpPytQaVsxXTowLFBlPSFNZSYmL2dlY2tvXC8oXGQrKS9pLnRlc3QoT3QpO1BlJiYrKC9GaXJlZm94XC8oXGQrKS8uZXhlYyhPdCl8fFswLDBdKVsxXTtjb25zdCAkaT0hTWUmJi9DaHJvbWVcLyhcZCspLy5leGVjKE90KSxtZT0hISRpLGZ1PSRpPyskaVsxXTowLGtlPSFNZSYmISFKZSYmL0FwcGxlIENvbXB1dGVyLy50ZXN0KEplLnZlbmRvciksZG49a2UmJigvTW9iaWxlXC9cdysvLnRlc3QoT3QpfHwhIUplJiZKZS5tYXhUb3VjaFBvaW50cz4yKSxJZT1kbnx8KEplPy9NYWMvLnRlc3QoSmUucGxhdGZvcm0pOiExKSxwdT1KZT8vV2luLy50ZXN0KEplLnBsYXRmb3JtKTohMSxydD0vQW5kcm9pZCBcZC8udGVzdChPdCksaXI9ISEkbCYmIndlYmtpdEZvbnRTbW9vdGhpbmciaW4gJGwuZG9jdW1lbnRFbGVtZW50LnN0eWxlLG1wPWlyPysoL1xiQXBwbGVXZWJLaXRcLyhcZCspLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpfHxbMCwwXSlbMV06MDtmdW5jdGlvbiBncChuKXtsZXQgZT1uLmRlZmF1bHRWaWV3JiZuLmRlZmF1bHRWaWV3LnZpc3VhbFZpZXdwb3J0O3JldHVybiBlP3tsZWZ0OjAscmlnaHQ6ZS53aWR0aCx0b3A6MCxib3R0b206ZS5oZWlnaHR9OntsZWZ0OjAscmlnaHQ6bi5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsdG9wOjAsYm90dG9tOm4uZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodH19ZnVuY3Rpb24gUWUobixlKXtyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIiP246bltlXX1mdW5jdGlvbiB5cChuKXtsZXQgZT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9ZS53aWR0aC9uLm9mZnNldFdpZHRofHwxLHI9ZS5oZWlnaHQvbi5vZmZzZXRIZWlnaHR8fDE7cmV0dXJue2xlZnQ6ZS5sZWZ0LHJpZ2h0OmUubGVmdCtuLmNsaWVudFdpZHRoKnQsdG9wOmUudG9wLGJvdHRvbTplLnRvcCtuLmNsaWVudEhlaWdodCpyfX1mdW5jdGlvbiBCbChuLGUsdCl7bGV0IHI9bi5zb21lUHJvcCgic2Nyb2xsVGhyZXNob2xkIil8fDAscz1uLnNvbWVQcm9wKCJzY3JvbGxNYXJnaW4iKXx8NSxpPW4uZG9tLm93bmVyRG9jdW1lbnQ7Zm9yKGxldCBvPXR8fG4uZG9tO287KXtpZihvLm5vZGVUeXBlIT0xKXtvPXVuKG8pO2NvbnRpbnVlfWxldCBsPW8sYT1sPT1pLmJvZHksYz1hP2dwKGkpOnlwKGwpLHU9MCxkPTA7aWYoZS50b3A8Yy50b3ArUWUociwidG9wIik/ZD0tKGMudG9wLWUudG9wK1FlKHMsInRvcCIpKTplLmJvdHRvbT5jLmJvdHRvbS1RZShyLCJib3R0b20iKSYmKGQ9ZS5ib3R0b20tZS50b3A+Yy5ib3R0b20tYy50b3A/ZS50b3ArUWUocywidG9wIiktYy50b3A6ZS5ib3R0b20tYy5ib3R0b20rUWUocywiYm90dG9tIikpLGUubGVmdDxjLmxlZnQrUWUociwibGVmdCIpP3U9LShjLmxlZnQtZS5sZWZ0K1FlKHMsImxlZnQiKSk6ZS5yaWdodD5jLnJpZ2h0LVFlKHIsInJpZ2h0IikmJih1PWUucmlnaHQtYy5yaWdodCtRZShzLCJyaWdodCIpKSx1fHxkKWlmKGEpaS5kZWZhdWx0Vmlldy5zY3JvbGxCeSh1LGQpO2Vsc2V7bGV0IGY9bC5zY3JvbGxMZWZ0LHA9bC5zY3JvbGxUb3A7ZCYmKGwuc2Nyb2xsVG9wKz1kKSx1JiYobC5zY3JvbGxMZWZ0Kz11KTtsZXQgbT1sLnNjcm9sbExlZnQtZixnPWwuc2Nyb2xsVG9wLXA7ZT17bGVmdDplLmxlZnQtbSx0b3A6ZS50b3AtZyxyaWdodDplLnJpZ2h0LW0sYm90dG9tOmUuYm90dG9tLWd9fWxldCBoPWE/ImZpeGVkIjpnZXRDb21wdXRlZFN0eWxlKG8pLnBvc2l0aW9uO2lmKC9eKGZpeGVkfHN0aWNreSkkLy50ZXN0KGgpKWJyZWFrO289aD09ImFic29sdXRlIj9vLm9mZnNldFBhcmVudDp1bihvKX19ZnVuY3Rpb24ga3Aobil7bGV0IGU9bi5kb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdD1NYXRoLm1heCgwLGUudG9wKSxyLHM7Zm9yKGxldCBpPShlLmxlZnQrZS5yaWdodCkvMixvPXQrMTtvPE1hdGgubWluKGlubmVySGVpZ2h0LGUuYm90dG9tKTtvKz01KXtsZXQgbD1uLnJvb3QuZWxlbWVudEZyb21Qb2ludChpLG8pO2lmKCFsfHxsPT1uLmRvbXx8IW4uZG9tLmNvbnRhaW5zKGwpKWNvbnRpbnVlO2xldCBhPWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoYS50b3A+PXQtMjApe3I9bCxzPWEudG9wO2JyZWFrfX1yZXR1cm57cmVmRE9NOnIscmVmVG9wOnMsc3RhY2s6bXUobi5kb20pfX1mdW5jdGlvbiBtdShuKXtsZXQgZT1bXSx0PW4ub3duZXJEb2N1bWVudDtmb3IobGV0IHI9bjtyJiYoZS5wdXNoKHtkb206cix0b3A6ci5zY3JvbGxUb3AsbGVmdDpyLnNjcm9sbExlZnR9KSxuIT10KTtyPXVuKHIpKTtyZXR1cm4gZX1mdW5jdGlvbiBicCh7cmVmRE9NOm4scmVmVG9wOmUsc3RhY2s6dH0pe2xldCByPW4/bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A6MDtndSh0LHI9PTA/MDpyLWUpfWZ1bmN0aW9uIGd1KG4sZSl7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2xldHtkb206cix0b3A6cyxsZWZ0Oml9PW5bdF07ci5zY3JvbGxUb3AhPXMrZSYmKHIuc2Nyb2xsVG9wPXMrZSksci5zY3JvbGxMZWZ0IT1pJiYoci5zY3JvbGxMZWZ0PWkpfX1sZXQgWXQ9bnVsbDtmdW5jdGlvbiB4cChuKXtpZihuLnNldEFjdGl2ZSlyZXR1cm4gbi5zZXRBY3RpdmUoKTtpZihZdClyZXR1cm4gbi5mb2N1cyhZdCk7bGV0IGU9bXUobik7bi5mb2N1cyhZdD09bnVsbD97Z2V0IHByZXZlbnRTY3JvbGwoKXtyZXR1cm4gWXQ9e3ByZXZlbnRTY3JvbGw6ITB9LCEwfX06dm9pZCAwKSxZdHx8KFl0PSExLGd1KGUsMCkpfWZ1bmN0aW9uIHl1KG4sZSl7bGV0IHQscj0yZTgscyxpPTAsbz1lLnRvcCxsPWUudG9wLGEsYztmb3IobGV0IHU9bi5maXJzdENoaWxkLGQ9MDt1O3U9dS5uZXh0U2libGluZyxkKyspe2xldCBoO2lmKHUubm9kZVR5cGU9PTEpaD11LmdldENsaWVudFJlY3RzKCk7ZWxzZSBpZih1Lm5vZGVUeXBlPT0zKWg9dHQodSkuZ2V0Q2xpZW50UmVjdHMoKTtlbHNlIGNvbnRpbnVlO2ZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7ZisrKXtsZXQgcD1oW2ZdO2lmKHAudG9wPD1vJiZwLmJvdHRvbT49bCl7bz1NYXRoLm1heChwLmJvdHRvbSxvKSxsPU1hdGgubWluKHAudG9wLGwpO2xldCBtPXAubGVmdD5lLmxlZnQ/cC5sZWZ0LWUubGVmdDpwLnJpZ2h0PGUubGVmdD9lLmxlZnQtcC5yaWdodDowO2lmKG08cil7dD11LHI9bSxzPW0mJnQubm9kZVR5cGU9PTM/e2xlZnQ6cC5yaWdodDxlLmxlZnQ/cC5yaWdodDpwLmxlZnQsdG9wOmUudG9wfTplLHUubm9kZVR5cGU9PTEmJm0mJihpPWQrKGUubGVmdD49KHAubGVmdCtwLnJpZ2h0KS8yPzE6MCkpO2NvbnRpbnVlfX1lbHNlIHAudG9wPmUudG9wJiYhYSYmcC5sZWZ0PD1lLmxlZnQmJnAucmlnaHQ+PWUubGVmdCYmKGE9dSxjPXtsZWZ0Ok1hdGgubWF4KHAubGVmdCxNYXRoLm1pbihwLnJpZ2h0LGUubGVmdCkpLHRvcDpwLnRvcH0pOyF0JiYoZS5sZWZ0Pj1wLnJpZ2h0JiZlLnRvcD49cC50b3B8fGUubGVmdD49cC5sZWZ0JiZlLnRvcD49cC5ib3R0b20pJiYoaT1kKzEpfX1yZXR1cm4hdCYmYSYmKHQ9YSxzPWMscj0wKSx0JiZ0Lm5vZGVUeXBlPT0zP3dwKHQscyk6IXR8fHImJnQubm9kZVR5cGU9PTE/e25vZGU6bixvZmZzZXQ6aX06eXUodCxzKX1mdW5jdGlvbiB3cChuLGUpe2xldCB0PW4ubm9kZVZhbHVlLmxlbmd0aCxyPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCkscztmb3IobGV0IGk9MDtpPHQ7aSsrKXtyLnNldEVuZChuLGkrMSksci5zZXRTdGFydChuLGkpO2xldCBvPWh0KHIsMSk7aWYoby50b3AhPW8uYm90dG9tJiZ3byhlLG8pKXtzPXtub2RlOm4sb2Zmc2V0OmkrKGUubGVmdD49KG8ubGVmdCtvLnJpZ2h0KS8yPzE6MCl9O2JyZWFrfX1yZXR1cm4gci5kZXRhY2goKSxzfHx7bm9kZTpuLG9mZnNldDowfX1mdW5jdGlvbiB3byhuLGUpe3JldHVybiBuLmxlZnQ+PWUubGVmdC0xJiZuLmxlZnQ8PWUucmlnaHQrMSYmbi50b3A+PWUudG9wLTEmJm4udG9wPD1lLmJvdHRvbSsxfWZ1bmN0aW9uIHZwKG4sZSl7bGV0IHQ9bi5wYXJlbnROb2RlO3JldHVybiB0JiYvXmxpJC9pLnRlc3QodC5ub2RlTmFtZSkmJmUubGVmdDxuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ/dDpufWZ1bmN0aW9uIFNwKG4sZSx0KXtsZXR7bm9kZTpyLG9mZnNldDpzfT15dShlLHQpLGk9LTE7aWYoci5ub2RlVHlwZT09MSYmIXIuZmlyc3RDaGlsZCl7bGV0IG89ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpPW8ubGVmdCE9by5yaWdodCYmdC5sZWZ0PihvLmxlZnQrby5yaWdodCkvMj8xOi0xfXJldHVybiBuLmRvY1ZpZXcucG9zRnJvbURPTShyLHMsaSl9ZnVuY3Rpb24gQ3AobixlLHQscil7bGV0IHM9LTE7Zm9yKGxldCBpPWUsbz0hMTtpIT1uLmRvbTspe2xldCBsPW4uZG9jVmlldy5uZWFyZXN0RGVzYyhpLCEwKSxhO2lmKCFsKXJldHVybiBudWxsO2lmKGwuZG9tLm5vZGVUeXBlPT0xJiYobC5ub2RlLmlzQmxvY2smJmwucGFyZW50fHwhbC5jb250ZW50RE9NKSYmKChhPWwuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS53aWR0aHx8YS5oZWlnaHQpJiYobC5ub2RlLmlzQmxvY2smJmwucGFyZW50JiYhL15UKFJ8Qk9EWXxIRUFEfEZPT1QpJC8udGVzdChsLmRvbS5ub2RlTmFtZSkmJighbyYmYS5sZWZ0PnIubGVmdHx8YS50b3A+ci50b3A/cz1sLnBvc0JlZm9yZTooIW8mJmEucmlnaHQ8ci5sZWZ0fHxhLmJvdHRvbTxyLnRvcCkmJihzPWwucG9zQWZ0ZXIpLG89ITApLCFsLmNvbnRlbnRET00mJnM8MCYmIWwubm9kZS5pc1RleHQpKXJldHVybihsLm5vZGUuaXNCbG9jaz9yLnRvcDwoYS50b3ArYS5ib3R0b20pLzI6ci5sZWZ0PChhLmxlZnQrYS5yaWdodCkvMik/bC5wb3NCZWZvcmU6bC5wb3NBZnRlcjtpPWwuZG9tLnBhcmVudE5vZGV9cmV0dXJuIHM+LTE/czpuLmRvY1ZpZXcucG9zRnJvbURPTShlLHQsLTEpfWZ1bmN0aW9uIGt1KG4sZSx0KXtsZXQgcj1uLmNoaWxkTm9kZXMubGVuZ3RoO2lmKHImJnQudG9wPHQuYm90dG9tKWZvcihsZXQgcz1NYXRoLm1heCgwLE1hdGgubWluKHItMSxNYXRoLmZsb29yKHIqKGUudG9wLXQudG9wKS8odC5ib3R0b20tdC50b3ApKS0yKSksaT1zOzspe2xldCBvPW4uY2hpbGROb2Rlc1tpXTtpZihvLm5vZGVUeXBlPT0xKXtsZXQgbD1vLmdldENsaWVudFJlY3RzKCk7Zm9yKGxldCBhPTA7YTxsLmxlbmd0aDthKyspe2xldCBjPWxbYV07aWYod28oZSxjKSlyZXR1cm4ga3UobyxlLGMpfX1pZigoaT0oaSsxKSVyKT09cylicmVha31yZXR1cm4gbn1mdW5jdGlvbiBUcChuLGUpe2xldCB0PW4uZG9tLm93bmVyRG9jdW1lbnQscixzPTAsaT1wcCh0LGUubGVmdCxlLnRvcCk7aSYmKHtub2RlOnIsb2Zmc2V0OnN9PWkpO2xldCBvPShuLnJvb3QuZWxlbWVudEZyb21Qb2ludD9uLnJvb3Q6dCkuZWxlbWVudEZyb21Qb2ludChlLmxlZnQsZS50b3ApLGw7aWYoIW98fCFuLmRvbS5jb250YWlucyhvLm5vZGVUeXBlIT0xP28ucGFyZW50Tm9kZTpvKSl7bGV0IGM9bi5kb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIXdvKGUsYyl8fChvPWt1KG4uZG9tLGUsYyksIW8pKXJldHVybiBudWxsfWlmKGtlKWZvcihsZXQgYz1vO3ImJmM7Yz11bihjKSljLmRyYWdnYWJsZSYmKHI9dm9pZCAwKTtpZihvPXZwKG8sZSkscil7aWYoUGUmJnIubm9kZVR5cGU9PTEmJihzPU1hdGgubWluKHMsci5jaGlsZE5vZGVzLmxlbmd0aCksczxyLmNoaWxkTm9kZXMubGVuZ3RoKSl7bGV0IHU9ci5jaGlsZE5vZGVzW3NdLGQ7dS5ub2RlTmFtZT09IklNRyImJihkPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLnJpZ2h0PD1lLmxlZnQmJmQuYm90dG9tPmUudG9wJiZzKyt9bGV0IGM7aXImJnMmJnIubm9kZVR5cGU9PTEmJihjPXIuY2hpbGROb2Rlc1tzLTFdKS5ub2RlVHlwZT09MSYmYy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSImJmMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wPj1lLnRvcCYmcy0tLHI9PW4uZG9tJiZzPT1yLmNoaWxkTm9kZXMubGVuZ3RoLTEmJnIubGFzdENoaWxkLm5vZGVUeXBlPT0xJiZlLnRvcD5yLmxhc3RDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20/bD1uLnN0YXRlLmRvYy5jb250ZW50LnNpemU6KHM9PTB8fHIubm9kZVR5cGUhPTF8fHIuY2hpbGROb2Rlc1tzLTFdLm5vZGVOYW1lIT0iQlIiKSYmKGw9Q3AobixyLHMsZSkpfWw9PW51bGwmJihsPVNwKG4sbyxlKSk7bGV0IGE9bi5kb2NWaWV3Lm5lYXJlc3REZXNjKG8sITApO3JldHVybntwb3M6bCxpbnNpZGU6YT9hLnBvc0F0U3RhcnQtYS5ib3JkZXI6LTF9fWZ1bmN0aW9uIF9sKG4pe3JldHVybiBuLnRvcDxuLmJvdHRvbXx8bi5sZWZ0PG4ucmlnaHR9ZnVuY3Rpb24gaHQobixlKXtsZXQgdD1uLmdldENsaWVudFJlY3RzKCk7aWYodC5sZW5ndGgpe2xldCByPXRbZTwwPzA6dC5sZW5ndGgtMV07aWYoX2wocikpcmV0dXJuIHJ9cmV0dXJuIEFycmF5LnByb3RvdHlwZS5maW5kLmNhbGwodCxfbCl8fG4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y29uc3QgTXA9L1tcdTA1OTAtXHUwNWY0XHUwNjAwLVx1MDZmZlx1MDcwMC1cdTA4YWNdLztmdW5jdGlvbiBidShuLGUsdCl7bGV0e25vZGU6cixvZmZzZXQ6cyxhdG9tOml9PW4uZG9jVmlldy5kb21Gcm9tUG9zKGUsdDwwPy0xOjEpLG89aXJ8fFBlO2lmKHIubm9kZVR5cGU9PTMpaWYobyYmKE1wLnRlc3Qoci5ub2RlVmFsdWUpfHwodDwwPyFzOnM9PXIubm9kZVZhbHVlLmxlbmd0aCkpKXtsZXQgYT1odCh0dChyLHMscyksdCk7aWYoUGUmJnMmJi9ccy8udGVzdChyLm5vZGVWYWx1ZVtzLTFdKSYmczxyLm5vZGVWYWx1ZS5sZW5ndGgpe2xldCBjPWh0KHR0KHIscy0xLHMtMSksLTEpO2lmKGMudG9wPT1hLnRvcCl7bGV0IHU9aHQodHQocixzLHMrMSksLTEpO2lmKHUudG9wIT1hLnRvcClyZXR1cm4ga24odSx1LmxlZnQ8Yy5sZWZ0KX19cmV0dXJuIGF9ZWxzZXtsZXQgYT1zLGM9cyx1PXQ8MD8xOi0xO3JldHVybiB0PDAmJiFzPyhjKyssdT0tMSk6dD49MCYmcz09ci5ub2RlVmFsdWUubGVuZ3RoPyhhLS0sdT0xKTp0PDA/YS0tOmMrKyxrbihodCh0dChyLGEsYyksdSksdTwwKX1pZighbi5zdGF0ZS5kb2MucmVzb2x2ZShlLShpfHwwKSkucGFyZW50LmlubGluZUNvbnRlbnQpe2lmKGk9PW51bGwmJnMmJih0PDB8fHM9PURlKHIpKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3MtMV07aWYoYS5ub2RlVHlwZT09MSlyZXR1cm4gb2koYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwhMSl9aWYoaT09bnVsbCYmczxEZShyKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3NdO2lmKGEubm9kZVR5cGU9PTEpcmV0dXJuIG9pKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksITApfXJldHVybiBvaShyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ+PTApfWlmKGk9PW51bGwmJnMmJih0PDB8fHM9PURlKHIpKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3MtMV0sYz1hLm5vZGVUeXBlPT0zP3R0KGEsRGUoYSktKG8/MDoxKSk6YS5ub2RlVHlwZT09MSYmKGEubm9kZU5hbWUhPSJCUiJ8fCFhLm5leHRTaWJsaW5nKT9hOm51bGw7aWYoYylyZXR1cm4ga24oaHQoYywxKSwhMSl9aWYoaT09bnVsbCYmczxEZShyKSl7bGV0IGE9ci5jaGlsZE5vZGVzW3NdO2Zvcig7YS5wbVZpZXdEZXNjJiZhLnBtVmlld0Rlc2MuaWdub3JlRm9yQ29vcmRzOylhPWEubmV4dFNpYmxpbmc7bGV0IGM9YT9hLm5vZGVUeXBlPT0zP3R0KGEsMCxvPzA6MSk6YS5ub2RlVHlwZT09MT9hOm51bGw6bnVsbDtpZihjKXJldHVybiBrbihodChjLC0xKSwhMCl9cmV0dXJuIGtuKGh0KHIubm9kZVR5cGU9PTM/dHQocik6ciwtdCksdD49MCl9ZnVuY3Rpb24ga24obixlKXtpZihuLndpZHRoPT0wKXJldHVybiBuO2xldCB0PWU/bi5sZWZ0Om4ucmlnaHQ7cmV0dXJue3RvcDpuLnRvcCxib3R0b206bi5ib3R0b20sbGVmdDp0LHJpZ2h0OnR9fWZ1bmN0aW9uIG9pKG4sZSl7aWYobi5oZWlnaHQ9PTApcmV0dXJuIG47bGV0IHQ9ZT9uLnRvcDpuLmJvdHRvbTtyZXR1cm57dG9wOnQsYm90dG9tOnQsbGVmdDpuLmxlZnQscmlnaHQ6bi5yaWdodH19ZnVuY3Rpb24geHUobixlLHQpe2xldCByPW4uc3RhdGUscz1uLnJvb3QuYWN0aXZlRWxlbWVudDtyIT1lJiZuLnVwZGF0ZVN0YXRlKGUpLHMhPW4uZG9tJiZuLmZvY3VzKCk7dHJ5e3JldHVybiB0KCl9ZmluYWxseXtyIT1lJiZuLnVwZGF0ZVN0YXRlKHIpLHMhPW4uZG9tJiZzJiZzLmZvY3VzKCl9fWZ1bmN0aW9uIEVwKG4sZSx0KXtsZXQgcj1lLnNlbGVjdGlvbixzPXQ9PSJ1cCI/ci4kZnJvbTpyLiR0bztyZXR1cm4geHUobixlLCgpPT57bGV0e25vZGU6aX09bi5kb2NWaWV3LmRvbUZyb21Qb3Mocy5wb3MsdD09InVwIj8tMToxKTtmb3IoOzspe2xldCBsPW4uZG9jVmlldy5uZWFyZXN0RGVzYyhpLCEwKTtpZighbClicmVhaztpZihsLm5vZGUuaXNCbG9jayl7aT1sLmNvbnRlbnRET018fGwuZG9tO2JyZWFrfWk9bC5kb20ucGFyZW50Tm9kZX1sZXQgbz1idShuLHMucG9zLDEpO2ZvcihsZXQgbD1pLmZpcnN0Q2hpbGQ7bDtsPWwubmV4dFNpYmxpbmcpe2xldCBhO2lmKGwubm9kZVR5cGU9PTEpYT1sLmdldENsaWVudFJlY3RzKCk7ZWxzZSBpZihsLm5vZGVUeXBlPT0zKWE9dHQobCwwLGwubm9kZVZhbHVlLmxlbmd0aCkuZ2V0Q2xpZW50UmVjdHMoKTtlbHNlIGNvbnRpbnVlO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtsZXQgdT1hW2NdO2lmKHUuYm90dG9tPnUudG9wKzEmJih0PT0idXAiP28udG9wLXUudG9wPih1LmJvdHRvbS1vLnRvcCkqMjp1LmJvdHRvbS1vLmJvdHRvbT4oby5ib3R0b20tdS50b3ApKjIpKXJldHVybiExfX1yZXR1cm4hMH0pfWNvbnN0IEFwPS9bXHUwNTkwLVx1MDhhY10vO2Z1bmN0aW9uIE9wKG4sZSx0KXtsZXR7JGhlYWQ6cn09ZS5zZWxlY3Rpb247aWYoIXIucGFyZW50LmlzVGV4dGJsb2NrKXJldHVybiExO2xldCBzPXIucGFyZW50T2Zmc2V0LGk9IXMsbz1zPT1yLnBhcmVudC5jb250ZW50LnNpemUsbD1uLmRvbVNlbGVjdGlvbigpO3JldHVybiBsPyFBcC50ZXN0KHIucGFyZW50LnRleHRDb250ZW50KXx8IWwubW9kaWZ5P3Q9PSJsZWZ0Inx8dD09ImJhY2t3YXJkIj9pOm86eHUobixlLCgpPT57bGV0e2ZvY3VzTm9kZTphLGZvY3VzT2Zmc2V0OmMsYW5jaG9yTm9kZTp1LGFuY2hvck9mZnNldDpkfT1uLmRvbVNlbGVjdGlvblJhbmdlKCksaD1sLmNhcmV0QmlkaUxldmVsO2wubW9kaWZ5KCJtb3ZlIix0LCJjaGFyYWN0ZXIiKTtsZXQgZj1yLmRlcHRoP24uZG9jVmlldy5kb21BZnRlclBvcyhyLmJlZm9yZSgpKTpuLmRvbSx7Zm9jdXNOb2RlOnAsZm9jdXNPZmZzZXQ6bX09bi5kb21TZWxlY3Rpb25SYW5nZSgpLGc9cCYmIWYuY29udGFpbnMocC5ub2RlVHlwZT09MT9wOnAucGFyZW50Tm9kZSl8fGE9PXAmJmM9PW07dHJ5e2wuY29sbGFwc2UodSxkKSxhJiYoYSE9dXx8YyE9ZCkmJmwuZXh0ZW5kJiZsLmV4dGVuZChhLGMpfWNhdGNoe31yZXR1cm4gaCE9bnVsbCYmKGwuY2FyZXRCaWRpTGV2ZWw9aCksZ30pOnIucG9zPT1yLnN0YXJ0KCl8fHIucG9zPT1yLmVuZCgpfWxldCBIbD1udWxsLEZsPW51bGwsVmw9ITE7ZnVuY3Rpb24gTnAobixlLHQpe3JldHVybiBIbD09ZSYmRmw9PXQ/Vmw6KEhsPWUsRmw9dCxWbD10PT0idXAifHx0PT0iZG93biI/RXAobixlLHQpOk9wKG4sZSx0KSl9Y29uc3QgemU9MCxVbD0xLER0PTIsR2U9MztjbGFzcyBvcntjb25zdHJ1Y3RvcihlLHQscixzKXt0aGlzLnBhcmVudD1lLHRoaXMuY2hpbGRyZW49dCx0aGlzLmRvbT1yLHRoaXMuY29udGVudERPTT1zLHRoaXMuZGlydHk9emUsci5wbVZpZXdEZXNjPXRoaXN9bWF0Y2hlc1dpZGdldChlKXtyZXR1cm4hMX1tYXRjaGVzTWFyayhlKXtyZXR1cm4hMX1tYXRjaGVzTm9kZShlLHQscil7cmV0dXJuITF9bWF0Y2hlc0hhY2soZSl7cmV0dXJuITF9cGFyc2VSdWxlKCl7cmV0dXJuIG51bGx9c3RvcEV2ZW50KGUpe3JldHVybiExfWdldCBzaXplKCl7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrKyllKz10aGlzLmNoaWxkcmVuW3RdLnNpemU7cmV0dXJuIGV9Z2V0IGJvcmRlcigpe3JldHVybiAwfWRlc3Ryb3koKXt0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5kb20ucG1WaWV3RGVzYz09dGhpcyYmKHRoaXMuZG9tLnBtVmlld0Rlc2M9dm9pZCAwKTtmb3IobGV0IGU9MDtlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2UrKyl0aGlzLmNoaWxkcmVuW2VdLmRlc3Ryb3koKX1wb3NCZWZvcmVDaGlsZChlKXtmb3IobGV0IHQ9MCxyPXRoaXMucG9zQXRTdGFydDs7dCsrKXtsZXQgcz10aGlzLmNoaWxkcmVuW3RdO2lmKHM9PWUpcmV0dXJuIHI7cis9cy5zaXplfX1nZXQgcG9zQmVmb3JlKCl7cmV0dXJuIHRoaXMucGFyZW50LnBvc0JlZm9yZUNoaWxkKHRoaXMpfWdldCBwb3NBdFN0YXJ0KCl7cmV0dXJuIHRoaXMucGFyZW50P3RoaXMucGFyZW50LnBvc0JlZm9yZUNoaWxkKHRoaXMpK3RoaXMuYm9yZGVyOjB9Z2V0IHBvc0FmdGVyKCl7cmV0dXJuIHRoaXMucG9zQmVmb3JlK3RoaXMuc2l6ZX1nZXQgcG9zQXRFbmQoKXtyZXR1cm4gdGhpcy5wb3NBdFN0YXJ0K3RoaXMuc2l6ZS0yKnRoaXMuYm9yZGVyfWxvY2FsUG9zRnJvbURPTShlLHQscil7aWYodGhpcy5jb250ZW50RE9NJiZ0aGlzLmNvbnRlbnRET00uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSkpaWYocjwwKXtsZXQgaSxvO2lmKGU9PXRoaXMuY29udGVudERPTSlpPWUuY2hpbGROb2Rlc1t0LTFdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7aT1lLnByZXZpb3VzU2libGluZ31mb3IoO2kmJiEoKG89aS5wbVZpZXdEZXNjKSYmby5wYXJlbnQ9PXRoaXMpOylpPWkucHJldmlvdXNTaWJsaW5nO3JldHVybiBpP3RoaXMucG9zQmVmb3JlQ2hpbGQobykrby5zaXplOnRoaXMucG9zQXRTdGFydH1lbHNle2xldCBpLG87aWYoZT09dGhpcy5jb250ZW50RE9NKWk9ZS5jaGlsZE5vZGVzW3RdO2Vsc2V7Zm9yKDtlLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTTspZT1lLnBhcmVudE5vZGU7aT1lLm5leHRTaWJsaW5nfWZvcig7aSYmISgobz1pLnBtVmlld0Rlc2MpJiZvLnBhcmVudD09dGhpcyk7KWk9aS5uZXh0U2libGluZztyZXR1cm4gaT90aGlzLnBvc0JlZm9yZUNoaWxkKG8pOnRoaXMucG9zQXRFbmR9bGV0IHM7aWYoZT09dGhpcy5kb20mJnRoaXMuY29udGVudERPTSlzPXQ+ZmUodGhpcy5jb250ZW50RE9NKTtlbHNlIGlmKHRoaXMuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NIT10aGlzLmRvbSYmdGhpcy5kb20uY29udGFpbnModGhpcy5jb250ZW50RE9NKSlzPWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcy5jb250ZW50RE9NKSYyO2Vsc2UgaWYodGhpcy5kb20uZmlyc3RDaGlsZCl7aWYodD09MClmb3IobGV0IGk9ZTs7aT1pLnBhcmVudE5vZGUpe2lmKGk9PXRoaXMuZG9tKXtzPSExO2JyZWFrfWlmKGkucHJldmlvdXNTaWJsaW5nKWJyZWFrfWlmKHM9PW51bGwmJnQ9PWUuY2hpbGROb2Rlcy5sZW5ndGgpZm9yKGxldCBpPWU7O2k9aS5wYXJlbnROb2RlKXtpZihpPT10aGlzLmRvbSl7cz0hMDticmVha31pZihpLm5leHRTaWJsaW5nKWJyZWFrfX1yZXR1cm4gcz8/cj4wP3RoaXMucG9zQXRFbmQ6dGhpcy5wb3NBdFN0YXJ0fW5lYXJlc3REZXNjKGUsdD0hMSl7Zm9yKGxldCByPSEwLHM9ZTtzO3M9cy5wYXJlbnROb2RlKXtsZXQgaT10aGlzLmdldERlc2MocyksbztpZihpJiYoIXR8fGkubm9kZSkpaWYociYmKG89aS5ub2RlRE9NKSYmIShvLm5vZGVUeXBlPT0xP28uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSk6bz09ZSkpcj0hMTtlbHNlIHJldHVybiBpfX1nZXREZXNjKGUpe2xldCB0PWUucG1WaWV3RGVzYztmb3IobGV0IHI9dDtyO3I9ci5wYXJlbnQpaWYocj09dGhpcylyZXR1cm4gdH1wb3NGcm9tRE9NKGUsdCxyKXtmb3IobGV0IHM9ZTtzO3M9cy5wYXJlbnROb2RlKXtsZXQgaT10aGlzLmdldERlc2Mocyk7aWYoaSlyZXR1cm4gaS5sb2NhbFBvc0Zyb21ET00oZSx0LHIpfXJldHVybi0xfWRlc2NBdChlKXtmb3IobGV0IHQ9MCxyPTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2xldCBzPXRoaXMuY2hpbGRyZW5bdF0saT1yK3Muc2l6ZTtpZihyPT1lJiZpIT1yKXtmb3IoOyFzLmJvcmRlciYmcy5jaGlsZHJlbi5sZW5ndGg7KWZvcihsZXQgbz0wO288cy5jaGlsZHJlbi5sZW5ndGg7bysrKXtsZXQgbD1zLmNoaWxkcmVuW29dO2lmKGwuc2l6ZSl7cz1sO2JyZWFrfX1yZXR1cm4gc31pZihlPGkpcmV0dXJuIHMuZGVzY0F0KGUtci1zLmJvcmRlcik7cj1pfX1kb21Gcm9tUG9zKGUsdCl7aWYoIXRoaXMuY29udGVudERPTSlyZXR1cm57bm9kZTp0aGlzLmRvbSxvZmZzZXQ6MCxhdG9tOmUrMX07bGV0IHI9MCxzPTA7Zm9yKGxldCBpPTA7cjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtyKyspe2xldCBvPXRoaXMuY2hpbGRyZW5bcl0sbD1pK28uc2l6ZTtpZihsPmV8fG8gaW5zdGFuY2VvZiB2dSl7cz1lLWk7YnJlYWt9aT1sfWlmKHMpcmV0dXJuIHRoaXMuY2hpbGRyZW5bcl0uZG9tRnJvbVBvcyhzLXRoaXMuY2hpbGRyZW5bcl0uYm9yZGVyLHQpO2ZvcihsZXQgaTtyJiYhKGk9dGhpcy5jaGlsZHJlbltyLTFdKS5zaXplJiZpIGluc3RhbmNlb2Ygd3UmJmkuc2lkZT49MDtyLS0pO2lmKHQ8PTApe2xldCBpLG89ITA7Zm9yKDtpPXI/dGhpcy5jaGlsZHJlbltyLTFdOm51bGwsISghaXx8aS5kb20ucGFyZW50Tm9kZT09dGhpcy5jb250ZW50RE9NKTtyLS0sbz0hMSk7cmV0dXJuIGkmJnQmJm8mJiFpLmJvcmRlciYmIWkuZG9tQXRvbT9pLmRvbUZyb21Qb3MoaS5zaXplLHQpOntub2RlOnRoaXMuY29udGVudERPTSxvZmZzZXQ6aT9mZShpLmRvbSkrMTowfX1lbHNle2xldCBpLG89ITA7Zm9yKDtpPXI8dGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlbltyXTpudWxsLCEoIWl8fGkuZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSk7cisrLG89ITEpO3JldHVybiBpJiZvJiYhaS5ib3JkZXImJiFpLmRvbUF0b20/aS5kb21Gcm9tUG9zKDAsdCk6e25vZGU6dGhpcy5jb250ZW50RE9NLG9mZnNldDppP2ZlKGkuZG9tKTp0aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGh9fX1wYXJzZVJhbmdlKGUsdCxyPTApe2lmKHRoaXMuY2hpbGRyZW4ubGVuZ3RoPT0wKXJldHVybntub2RlOnRoaXMuY29udGVudERPTSxmcm9tOmUsdG86dCxmcm9tT2Zmc2V0OjAsdG9PZmZzZXQ6dGhpcy5jb250ZW50RE9NLmNoaWxkTm9kZXMubGVuZ3RofTtsZXQgcz0tMSxpPS0xO2ZvcihsZXQgbz1yLGw9MDs7bCsrKXtsZXQgYT10aGlzLmNoaWxkcmVuW2xdLGM9bythLnNpemU7aWYocz09LTEmJmU8PWMpe2xldCB1PW8rYS5ib3JkZXI7aWYoZT49dSYmdDw9Yy1hLmJvcmRlciYmYS5ub2RlJiZhLmNvbnRlbnRET00mJnRoaXMuY29udGVudERPTS5jb250YWlucyhhLmNvbnRlbnRET00pKXJldHVybiBhLnBhcnNlUmFuZ2UoZSx0LHUpO2U9bztmb3IobGV0IGQ9bDtkPjA7ZC0tKXtsZXQgaD10aGlzLmNoaWxkcmVuW2QtMV07aWYoaC5zaXplJiZoLmRvbS5wYXJlbnROb2RlPT10aGlzLmNvbnRlbnRET00mJiFoLmVtcHR5Q2hpbGRBdCgxKSl7cz1mZShoLmRvbSkrMTticmVha31lLT1oLnNpemV9cz09LTEmJihzPTApfWlmKHM+LTEmJihjPnR8fGw9PXRoaXMuY2hpbGRyZW4ubGVuZ3RoLTEpKXt0PWM7Zm9yKGxldCB1PWwrMTt1PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3UrKyl7bGV0IGQ9dGhpcy5jaGlsZHJlblt1XTtpZihkLnNpemUmJmQuZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIWQuZW1wdHlDaGlsZEF0KC0xKSl7aT1mZShkLmRvbSk7YnJlYWt9dCs9ZC5zaXplfWk9PS0xJiYoaT10aGlzLmNvbnRlbnRET00uY2hpbGROb2Rlcy5sZW5ndGgpO2JyZWFrfW89Y31yZXR1cm57bm9kZTp0aGlzLmNvbnRlbnRET00sZnJvbTplLHRvOnQsZnJvbU9mZnNldDpzLHRvT2Zmc2V0Oml9fWVtcHR5Q2hpbGRBdChlKXtpZih0aGlzLmJvcmRlcnx8IXRoaXMuY29udGVudERPTXx8IXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiExO2xldCB0PXRoaXMuY2hpbGRyZW5bZTwwPzA6dGhpcy5jaGlsZHJlbi5sZW5ndGgtMV07cmV0dXJuIHQuc2l6ZT09MHx8dC5lbXB0eUNoaWxkQXQoZSl9ZG9tQWZ0ZXJQb3MoZSl7bGV0e25vZGU6dCxvZmZzZXQ6cn09dGhpcy5kb21Gcm9tUG9zKGUsMCk7aWYodC5ub2RlVHlwZSE9MXx8cj09dC5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTm8gbm9kZSBhZnRlciBwb3MgIitlKTtyZXR1cm4gdC5jaGlsZE5vZGVzW3JdfXNldFNlbGVjdGlvbihlLHQscixzPSExKXtsZXQgaT1NYXRoLm1pbihlLHQpLG89TWF0aC5tYXgoZSx0KTtmb3IobGV0IGY9MCxwPTA7Zjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtmKyspe2xldCBtPXRoaXMuY2hpbGRyZW5bZl0sZz1wK20uc2l6ZTtpZihpPnAmJm88ZylyZXR1cm4gbS5zZXRTZWxlY3Rpb24oZS1wLW0uYm9yZGVyLHQtcC1tLmJvcmRlcixyLHMpO3A9Z31sZXQgbD10aGlzLmRvbUZyb21Qb3MoZSxlPy0xOjEpLGE9dD09ZT9sOnRoaXMuZG9tRnJvbVBvcyh0LHQ/LTE6MSksYz1yLnJvb3QuZ2V0U2VsZWN0aW9uKCksdT1yLmRvbVNlbGVjdGlvblJhbmdlKCksZD0hMTtpZigoUGV8fGtlKSYmZT09dCl7bGV0e25vZGU6ZixvZmZzZXQ6cH09bDtpZihmLm5vZGVUeXBlPT0zKXtpZihkPSEhKHAmJmYubm9kZVZhbHVlW3AtMV09PWAKYCksZCYmcD09Zi5ub2RlVmFsdWUubGVuZ3RoKWZvcihsZXQgbT1mLGc7bTttPW0ucGFyZW50Tm9kZSl7aWYoZz1tLm5leHRTaWJsaW5nKXtnLm5vZGVOYW1lPT0iQlIiJiYobD1hPXtub2RlOmcucGFyZW50Tm9kZSxvZmZzZXQ6ZmUoZykrMX0pO2JyZWFrfWxldCB5PW0ucG1WaWV3RGVzYztpZih5JiZ5Lm5vZGUmJnkubm9kZS5pc0Jsb2NrKWJyZWFrfX1lbHNle2xldCBtPWYuY2hpbGROb2Rlc1twLTFdO2Q9bSYmKG0ubm9kZU5hbWU9PSJCUiJ8fG0uY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKX19aWYoUGUmJnUuZm9jdXNOb2RlJiZ1LmZvY3VzTm9kZSE9YS5ub2RlJiZ1LmZvY3VzTm9kZS5ub2RlVHlwZT09MSl7bGV0IGY9dS5mb2N1c05vZGUuY2hpbGROb2Rlc1t1LmZvY3VzT2Zmc2V0XTtmJiZmLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIiYmKHM9ITApfWlmKCEoc3x8ZCYma2UpJiZVdChsLm5vZGUsbC5vZmZzZXQsdS5hbmNob3JOb2RlLHUuYW5jaG9yT2Zmc2V0KSYmVXQoYS5ub2RlLGEub2Zmc2V0LHUuZm9jdXNOb2RlLHUuZm9jdXNPZmZzZXQpKXJldHVybjtsZXQgaD0hMTtpZigoYy5leHRlbmR8fGU9PXQpJiYhKGQmJlBlKSl7Yy5jb2xsYXBzZShsLm5vZGUsbC5vZmZzZXQpO3RyeXtlIT10JiZjLmV4dGVuZChhLm5vZGUsYS5vZmZzZXQpLGg9ITB9Y2F0Y2h7fX1pZighaCl7aWYoZT50KXtsZXQgcD1sO2w9YSxhPXB9bGV0IGY9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtmLnNldEVuZChhLm5vZGUsYS5vZmZzZXQpLGYuc2V0U3RhcnQobC5ub2RlLGwub2Zmc2V0KSxjLnJlbW92ZUFsbFJhbmdlcygpLGMuYWRkUmFuZ2UoZil9fWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiF0aGlzLmNvbnRlbnRET00mJmUudHlwZSE9InNlbGVjdGlvbiJ9Z2V0IGNvbnRlbnRMb3N0KCl7cmV0dXJuIHRoaXMuY29udGVudERPTSYmdGhpcy5jb250ZW50RE9NIT10aGlzLmRvbSYmIXRoaXMuZG9tLmNvbnRhaW5zKHRoaXMuY29udGVudERPTSl9bWFya0RpcnR5KGUsdCl7Zm9yKGxldCByPTAscz0wO3M8dGhpcy5jaGlsZHJlbi5sZW5ndGg7cysrKXtsZXQgaT10aGlzLmNoaWxkcmVuW3NdLG89citpLnNpemU7aWYocj09bz9lPD1vJiZ0Pj1yOmU8byYmdD5yKXtsZXQgbD1yK2kuYm9yZGVyLGE9by1pLmJvcmRlcjtpZihlPj1sJiZ0PD1hKXt0aGlzLmRpcnR5PWU9PXJ8fHQ9PW8/RHQ6VWwsZT09bCYmdD09YSYmKGkuY29udGVudExvc3R8fGkuZG9tLnBhcmVudE5vZGUhPXRoaXMuY29udGVudERPTSk/aS5kaXJ0eT1HZTppLm1hcmtEaXJ0eShlLWwsdC1sKTtyZXR1cm59ZWxzZSBpLmRpcnR5PWkuZG9tPT1pLmNvbnRlbnRET00mJmkuZG9tLnBhcmVudE5vZGU9PXRoaXMuY29udGVudERPTSYmIWkuY2hpbGRyZW4ubGVuZ3RoP0R0OkdlfXI9b310aGlzLmRpcnR5PUR0fW1hcmtQYXJlbnRzRGlydHkoKXtsZXQgZT0xO2ZvcihsZXQgdD10aGlzLnBhcmVudDt0O3Q9dC5wYXJlbnQsZSsrKXtsZXQgcj1lPT0xP0R0OlVsO3QuZGlydHk8ciYmKHQuZGlydHk9cil9fWdldCBkb21BdG9tKCl7cmV0dXJuITF9Z2V0IGlnbm9yZUZvckNvb3Jkcygpe3JldHVybiExfWdldCBpZ25vcmVGb3JTZWxlY3Rpb24oKXtyZXR1cm4hMX1pc1RleHQoZSl7cmV0dXJuITF9fWNsYXNzIHd1IGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoZSx0LHIscyl7bGV0IGksbz10LnR5cGUudG9ET007aWYodHlwZW9mIG89PSJmdW5jdGlvbiImJihvPW8ociwoKT0+e2lmKCFpKXJldHVybiBzO2lmKGkucGFyZW50KXJldHVybiBpLnBhcmVudC5wb3NCZWZvcmVDaGlsZChpKX0pKSwhdC50eXBlLnNwZWMucmF3KXtpZihvLm5vZGVUeXBlIT0xKXtsZXQgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bC5hcHBlbmRDaGlsZChvKSxvPWx9by5jb250ZW50RWRpdGFibGU9ImZhbHNlIixvLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLXdpZGdldCIpfXN1cGVyKGUsW10sbyxudWxsKSx0aGlzLndpZGdldD10LHRoaXMud2lkZ2V0PXQsaT10aGlzfW1hdGNoZXNXaWRnZXQoZSl7cmV0dXJuIHRoaXMuZGlydHk9PXplJiZlLnR5cGUuZXEodGhpcy53aWRnZXQudHlwZSl9cGFyc2VSdWxlKCl7cmV0dXJue2lnbm9yZTohMH19c3RvcEV2ZW50KGUpe2xldCB0PXRoaXMud2lkZ2V0LnNwZWMuc3RvcEV2ZW50O3JldHVybiB0P3QoZSk6ITF9aWdub3JlTXV0YXRpb24oZSl7cmV0dXJuIGUudHlwZSE9InNlbGVjdGlvbiJ8fHRoaXMud2lkZ2V0LnNwZWMuaWdub3JlU2VsZWN0aW9ufWRlc3Ryb3koKXt0aGlzLndpZGdldC50eXBlLmRlc3Ryb3kodGhpcy5kb20pLHN1cGVyLmRlc3Ryb3koKX1nZXQgZG9tQXRvbSgpe3JldHVybiEwfWdldCBpZ25vcmVGb3JTZWxlY3Rpb24oKXtyZXR1cm4hIXRoaXMud2lkZ2V0LnR5cGUuc3BlYy5yZWxheGVkU2lkZX1nZXQgc2lkZSgpe3JldHVybiB0aGlzLndpZGdldC50eXBlLnNpZGV9fWNsYXNzIFJwIGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoZSx0LHIscyl7c3VwZXIoZSxbXSx0LG51bGwpLHRoaXMudGV4dERPTT1yLHRoaXMudGV4dD1zfWdldCBzaXplKCl7cmV0dXJuIHRoaXMudGV4dC5sZW5ndGh9bG9jYWxQb3NGcm9tRE9NKGUsdCl7cmV0dXJuIGUhPXRoaXMudGV4dERPTT90aGlzLnBvc0F0U3RhcnQrKHQ/dGhpcy5zaXplOjApOnRoaXMucG9zQXRTdGFydCt0fWRvbUZyb21Qb3MoZSl7cmV0dXJue25vZGU6dGhpcy50ZXh0RE9NLG9mZnNldDplfX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gZS50eXBlPT09ImNoYXJhY3RlckRhdGEiJiZlLnRhcmdldC5ub2RlVmFsdWU9PWUub2xkVmFsdWV9fWNsYXNzIGp0IGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoZSx0LHIscyxpKXtzdXBlcihlLFtdLHIscyksdGhpcy5tYXJrPXQsdGhpcy5zcGVjPWl9c3RhdGljIGNyZWF0ZShlLHQscixzKXtsZXQgaT1zLm5vZGVWaWV3c1t0LnR5cGUubmFtZV0sbz1pJiZpKHQscyxyKTtyZXR1cm4oIW98fCFvLmRvbSkmJihvPUt0LnJlbmRlclNwZWMoZG9jdW1lbnQsdC50eXBlLnNwZWMudG9ET00odCxyKSxudWxsLHQuYXR0cnMpKSxuZXcganQoZSx0LG8uZG9tLG8uY29udGVudERPTXx8by5kb20sbyl9cGFyc2VSdWxlKCl7cmV0dXJuIHRoaXMuZGlydHkmR2V8fHRoaXMubWFyay50eXBlLnNwZWMucmVwYXJzZUluVmlldz9udWxsOnttYXJrOnRoaXMubWFyay50eXBlLm5hbWUsYXR0cnM6dGhpcy5tYXJrLmF0dHJzLGNvbnRlbnRFbGVtZW50OnRoaXMuY29udGVudERPTX19bWF0Y2hlc01hcmsoZSl7cmV0dXJuIHRoaXMuZGlydHkhPUdlJiZ0aGlzLm1hcmsuZXEoZSl9bWFya0RpcnR5KGUsdCl7aWYoc3VwZXIubWFya0RpcnR5KGUsdCksdGhpcy5kaXJ0eSE9emUpe2xldCByPXRoaXMucGFyZW50O2Zvcig7IXIubm9kZTspcj1yLnBhcmVudDtyLmRpcnR5PHRoaXMuZGlydHkmJihyLmRpcnR5PXRoaXMuZGlydHkpLHRoaXMuZGlydHk9emV9fXNsaWNlKGUsdCxyKXtsZXQgcz1qdC5jcmVhdGUodGhpcy5wYXJlbnQsdGhpcy5tYXJrLCEwLHIpLGk9dGhpcy5jaGlsZHJlbixvPXRoaXMuc2l6ZTt0PG8mJihpPV9pKGksdCxvLHIpKSxlPjAmJihpPV9pKGksMCxlLHIpKTtmb3IobGV0IGw9MDtsPGkubGVuZ3RoO2wrKylpW2xdLnBhcmVudD1zO3JldHVybiBzLmNoaWxkcmVuPWksc31pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gdGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uP3RoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihlKTpzdXBlci5pZ25vcmVNdXRhdGlvbihlKX1kZXN0cm95KCl7dGhpcy5zcGVjLmRlc3Ryb3kmJnRoaXMuc3BlYy5kZXN0cm95KCksc3VwZXIuZGVzdHJveSgpfX1jbGFzcyBDdCBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKGUsdCxyLHMsaSxvLGwsYSxjKXtzdXBlcihlLFtdLGksbyksdGhpcy5ub2RlPXQsdGhpcy5vdXRlckRlY289cix0aGlzLmlubmVyRGVjbz1zLHRoaXMubm9kZURPTT1sfXN0YXRpYyBjcmVhdGUoZSx0LHIscyxpLG8pe2xldCBsPWkubm9kZVZpZXdzW3QudHlwZS5uYW1lXSxhLGM9bCYmbCh0LGksKCk9PntpZighYSlyZXR1cm4gbztpZihhLnBhcmVudClyZXR1cm4gYS5wYXJlbnQucG9zQmVmb3JlQ2hpbGQoYSl9LHIscyksdT1jJiZjLmRvbSxkPWMmJmMuY29udGVudERPTTtpZih0LmlzVGV4dCl7aWYoIXUpdT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0LnRleHQpO2Vsc2UgaWYodS5ub2RlVHlwZSE9Myl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVGV4dCBtdXN0IGJlIHJlbmRlcmVkIGFzIGEgRE9NIHRleHQgbm9kZSIpfWVsc2UgdXx8KHtkb206dSxjb250ZW50RE9NOmR9PUt0LnJlbmRlclNwZWMoZG9jdW1lbnQsdC50eXBlLnNwZWMudG9ET00odCksbnVsbCx0LmF0dHJzKSk7IWQmJiF0LmlzVGV4dCYmdS5ub2RlTmFtZSE9IkJSIiYmKHUuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8KHUuY29udGVudEVkaXRhYmxlPSJmYWxzZSIpLHQudHlwZS5zcGVjLmRyYWdnYWJsZSYmKHUuZHJhZ2dhYmxlPSEwKSk7bGV0IGg9dTtyZXR1cm4gdT1UdSh1LHIsdCksYz9hPW5ldyBJcChlLHQscixzLHUsZHx8bnVsbCxoLGMsaSxvKzEpOnQuaXNUZXh0P25ldyBQcyhlLHQscixzLHUsaCxpKTpuZXcgQ3QoZSx0LHIscyx1LGR8fG51bGwsaCxpLG8rMSl9cGFyc2VSdWxlKCl7aWYodGhpcy5ub2RlLnR5cGUuc3BlYy5yZXBhcnNlSW5WaWV3KXJldHVybiBudWxsO2xldCBlPXtub2RlOnRoaXMubm9kZS50eXBlLm5hbWUsYXR0cnM6dGhpcy5ub2RlLmF0dHJzfTtpZih0aGlzLm5vZGUudHlwZS53aGl0ZXNwYWNlPT0icHJlIiYmKGUucHJlc2VydmVXaGl0ZXNwYWNlPSJmdWxsIiksIXRoaXMuY29udGVudERPTSllLmdldENvbnRlbnQ9KCk9PnRoaXMubm9kZS5jb250ZW50O2Vsc2UgaWYoIXRoaXMuY29udGVudExvc3QpZS5jb250ZW50RWxlbWVudD10aGlzLmNvbnRlbnRET007ZWxzZXtmb3IobGV0IHQ9dGhpcy5jaGlsZHJlbi5sZW5ndGgtMTt0Pj0wO3QtLSl7bGV0IHI9dGhpcy5jaGlsZHJlblt0XTtpZih0aGlzLmRvbS5jb250YWlucyhyLmRvbS5wYXJlbnROb2RlKSl7ZS5jb250ZW50RWxlbWVudD1yLmRvbS5wYXJlbnROb2RlO2JyZWFrfX1lLmNvbnRlbnRFbGVtZW50fHwoZS5nZXRDb250ZW50PSgpPT5TLmVtcHR5KX1yZXR1cm4gZX1tYXRjaGVzTm9kZShlLHQscil7cmV0dXJuIHRoaXMuZGlydHk9PXplJiZlLmVxKHRoaXMubm9kZSkmJlZyKHQsdGhpcy5vdXRlckRlY28pJiZyLmVxKHRoaXMuaW5uZXJEZWNvKX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLm5vZGUubm9kZVNpemV9Z2V0IGJvcmRlcigpe3JldHVybiB0aGlzLm5vZGUuaXNMZWFmPzA6MX11cGRhdGVDaGlsZHJlbihlLHQpe2xldCByPXRoaXMubm9kZS5pbmxpbmVDb250ZW50LHM9dCxpPWUuY29tcG9zaW5nP3RoaXMubG9jYWxDb21wb3NpdGlvbkluZm8oZSx0KTpudWxsLG89aSYmaS5wb3M+LTE/aTpudWxsLGw9aSYmaS5wb3M8MCxhPW5ldyBMcCh0aGlzLG8mJm8ubm9kZSxlKTskcCh0aGlzLm5vZGUsdGhpcy5pbm5lckRlY28sKGMsdSxkKT0+e2Muc3BlYy5tYXJrcz9hLnN5bmNUb01hcmtzKGMuc3BlYy5tYXJrcyxyLGUsdSk6Yy50eXBlLnNpZGU+PTAmJiFkJiZhLnN5bmNUb01hcmtzKHU9PXRoaXMubm9kZS5jaGlsZENvdW50P1cubm9uZTp0aGlzLm5vZGUuY2hpbGQodSkubWFya3MscixlLHUpLGEucGxhY2VXaWRnZXQoYyxlLHMpfSwoYyx1LGQsaCk9PnthLnN5bmNUb01hcmtzKGMubWFya3MscixlLGgpO2xldCBmO2EuZmluZE5vZGVNYXRjaChjLHUsZCxoKXx8bCYmZS5zdGF0ZS5zZWxlY3Rpb24uZnJvbT5zJiZlLnN0YXRlLnNlbGVjdGlvbi50bzxzK2Mubm9kZVNpemUmJihmPWEuZmluZEluZGV4V2l0aENoaWxkKGkubm9kZSkpPi0xJiZhLnVwZGF0ZU5vZGVBdChjLHUsZCxmLGUpfHxhLnVwZGF0ZU5leHROb2RlKGMsdSxkLGUsaCxzKXx8YS5hZGROb2RlKGMsdSxkLGUscykscys9Yy5ub2RlU2l6ZX0pLGEuc3luY1RvTWFya3MoW10scixlLDApLHRoaXMubm9kZS5pc1RleHRibG9jayYmYS5hZGRUZXh0YmxvY2tIYWNrcygpLGEuZGVzdHJveVJlc3QoKSwoYS5jaGFuZ2VkfHx0aGlzLmRpcnR5PT1EdCkmJihvJiZ0aGlzLnByb3RlY3RMb2NhbENvbXBvc2l0aW9uKGUsbyksU3UodGhpcy5jb250ZW50RE9NLHRoaXMuY2hpbGRyZW4sZSksZG4mJkJwKHRoaXMuZG9tKSl9bG9jYWxDb21wb3NpdGlvbkluZm8oZSx0KXtsZXR7ZnJvbTpyLHRvOnN9PWUuc3RhdGUuc2VsZWN0aW9uO2lmKCEoZS5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBEKXx8cjx0fHxzPnQrdGhpcy5ub2RlLmNvbnRlbnQuc2l6ZSlyZXR1cm4gbnVsbDtsZXQgaT1lLmlucHV0LmNvbXBvc2l0aW9uTm9kZTtpZighaXx8IXRoaXMuZG9tLmNvbnRhaW5zKGkucGFyZW50Tm9kZSkpcmV0dXJuIG51bGw7aWYodGhpcy5ub2RlLmlubGluZUNvbnRlbnQpe2xldCBvPWkubm9kZVZhbHVlLGw9X3AodGhpcy5ub2RlLmNvbnRlbnQsbyxyLXQscy10KTtyZXR1cm4gbDwwP251bGw6e25vZGU6aSxwb3M6bCx0ZXh0Om99fWVsc2UgcmV0dXJue25vZGU6aSxwb3M6LTEsdGV4dDoiIn19cHJvdGVjdExvY2FsQ29tcG9zaXRpb24oZSx7bm9kZTp0LHBvczpyLHRleHQ6c30pe2lmKHRoaXMuZ2V0RGVzYyh0KSlyZXR1cm47bGV0IGk9dDtmb3IoO2kucGFyZW50Tm9kZSE9dGhpcy5jb250ZW50RE9NO2k9aS5wYXJlbnROb2RlKXtmb3IoO2kucHJldmlvdXNTaWJsaW5nOylpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaS5wcmV2aW91c1NpYmxpbmcpO2Zvcig7aS5uZXh0U2libGluZzspaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkubmV4dFNpYmxpbmcpO2kucG1WaWV3RGVzYyYmKGkucG1WaWV3RGVzYz12b2lkIDApfWxldCBvPW5ldyBScCh0aGlzLGksdCxzKTtlLmlucHV0LmNvbXBvc2l0aW9uTm9kZXMucHVzaChvKSx0aGlzLmNoaWxkcmVuPV9pKHRoaXMuY2hpbGRyZW4scixyK3MubGVuZ3RoLGUsbyl9dXBkYXRlKGUsdCxyLHMpe3JldHVybiB0aGlzLmRpcnR5PT1HZXx8IWUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpPyExOih0aGlzLnVwZGF0ZUlubmVyKGUsdCxyLHMpLCEwKX11cGRhdGVJbm5lcihlLHQscixzKXt0aGlzLnVwZGF0ZU91dGVyRGVjbyh0KSx0aGlzLm5vZGU9ZSx0aGlzLmlubmVyRGVjbz1yLHRoaXMuY29udGVudERPTSYmdGhpcy51cGRhdGVDaGlsZHJlbihzLHRoaXMucG9zQXRTdGFydCksdGhpcy5kaXJ0eT16ZX11cGRhdGVPdXRlckRlY28oZSl7aWYoVnIoZSx0aGlzLm91dGVyRGVjbykpcmV0dXJuO2xldCB0PXRoaXMubm9kZURPTS5ub2RlVHlwZSE9MSxyPXRoaXMuZG9tO3RoaXMuZG9tPUN1KHRoaXMuZG9tLHRoaXMubm9kZURPTSxCaSh0aGlzLm91dGVyRGVjbyx0aGlzLm5vZGUsdCksQmkoZSx0aGlzLm5vZGUsdCkpLHRoaXMuZG9tIT1yJiYoci5wbVZpZXdEZXNjPXZvaWQgMCx0aGlzLmRvbS5wbVZpZXdEZXNjPXRoaXMpLHRoaXMub3V0ZXJEZWNvPWV9c2VsZWN0Tm9kZSgpe3RoaXMubm9kZURPTS5ub2RlVHlwZT09MSYmKHRoaXMubm9kZURPTS5jbGFzc0xpc3QuYWRkKCJQcm9zZU1pcnJvci1zZWxlY3RlZG5vZGUiKSwodGhpcy5jb250ZW50RE9NfHwhdGhpcy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGUpJiYodGhpcy5ub2RlRE9NLmRyYWdnYWJsZT0hMCkpfWRlc2VsZWN0Tm9kZSgpe3RoaXMubm9kZURPTS5ub2RlVHlwZT09MSYmKHRoaXMubm9kZURPTS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1zZWxlY3RlZG5vZGUiKSwodGhpcy5jb250ZW50RE9NfHwhdGhpcy5ub2RlLnR5cGUuc3BlYy5kcmFnZ2FibGUpJiZ0aGlzLm5vZGVET00ucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKSl9Z2V0IGRvbUF0b20oKXtyZXR1cm4gdGhpcy5ub2RlLmlzQXRvbX19ZnVuY3Rpb24gamwobixlLHQscixzKXtUdShyLGUsbik7bGV0IGk9bmV3IEN0KHZvaWQgMCxuLGUsdCxyLHIscixzLDApO3JldHVybiBpLmNvbnRlbnRET00mJmkudXBkYXRlQ2hpbGRyZW4ocywwKSxpfWNsYXNzIFBzIGV4dGVuZHMgQ3R7Y29uc3RydWN0b3IoZSx0LHIscyxpLG8sbCl7c3VwZXIoZSx0LHIscyxpLG51bGwsbyxsLDApfXBhcnNlUnVsZSgpe2xldCBlPXRoaXMubm9kZURPTS5wYXJlbnROb2RlO2Zvcig7ZSYmZSE9dGhpcy5kb20mJiFlLnBtSXNEZWNvOyllPWUucGFyZW50Tm9kZTtyZXR1cm57c2tpcDplfHwhMH19dXBkYXRlKGUsdCxyLHMpe3JldHVybiB0aGlzLmRpcnR5PT1HZXx8dGhpcy5kaXJ0eSE9emUmJiF0aGlzLmluUGFyZW50KCl8fCFlLnNhbWVNYXJrdXAodGhpcy5ub2RlKT8hMToodGhpcy51cGRhdGVPdXRlckRlY28odCksKHRoaXMuZGlydHkhPXplfHxlLnRleHQhPXRoaXMubm9kZS50ZXh0KSYmZS50ZXh0IT10aGlzLm5vZGVET00ubm9kZVZhbHVlJiYodGhpcy5ub2RlRE9NLm5vZGVWYWx1ZT1lLnRleHQscy50cmFja1dyaXRlcz09dGhpcy5ub2RlRE9NJiYocy50cmFja1dyaXRlcz1udWxsKSksdGhpcy5ub2RlPWUsdGhpcy5kaXJ0eT16ZSwhMCl9aW5QYXJlbnQoKXtsZXQgZT10aGlzLnBhcmVudC5jb250ZW50RE9NO2ZvcihsZXQgdD10aGlzLm5vZGVET007dDt0PXQucGFyZW50Tm9kZSlpZih0PT1lKXJldHVybiEwO3JldHVybiExfWRvbUZyb21Qb3MoZSl7cmV0dXJue25vZGU6dGhpcy5ub2RlRE9NLG9mZnNldDplfX1sb2NhbFBvc0Zyb21ET00oZSx0LHIpe3JldHVybiBlPT10aGlzLm5vZGVET00/dGhpcy5wb3NBdFN0YXJ0K01hdGgubWluKHQsdGhpcy5ub2RlLnRleHQubGVuZ3RoKTpzdXBlci5sb2NhbFBvc0Zyb21ET00oZSx0LHIpfWlnbm9yZU11dGF0aW9uKGUpe3JldHVybiBlLnR5cGUhPSJjaGFyYWN0ZXJEYXRhIiYmZS50eXBlIT0ic2VsZWN0aW9uIn1zbGljZShlLHQscil7bGV0IHM9dGhpcy5ub2RlLmN1dChlLHQpLGk9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocy50ZXh0KTtyZXR1cm4gbmV3IFBzKHRoaXMucGFyZW50LHMsdGhpcy5vdXRlckRlY28sdGhpcy5pbm5lckRlY28saSxpLHIpfW1hcmtEaXJ0eShlLHQpe3N1cGVyLm1hcmtEaXJ0eShlLHQpLHRoaXMuZG9tIT10aGlzLm5vZGVET00mJihlPT0wfHx0PT10aGlzLm5vZGVET00ubm9kZVZhbHVlLmxlbmd0aCkmJih0aGlzLmRpcnR5PUdlKX1nZXQgZG9tQXRvbSgpe3JldHVybiExfWlzVGV4dChlKXtyZXR1cm4gdGhpcy5ub2RlLnRleHQ9PWV9fWNsYXNzIHZ1IGV4dGVuZHMgb3J7cGFyc2VSdWxlKCl7cmV0dXJue2lnbm9yZTohMH19bWF0Y2hlc0hhY2soZSl7cmV0dXJuIHRoaXMuZGlydHk9PXplJiZ0aGlzLmRvbS5ub2RlTmFtZT09ZX1nZXQgZG9tQXRvbSgpe3JldHVybiEwfWdldCBpZ25vcmVGb3JDb29yZHMoKXtyZXR1cm4gdGhpcy5kb20ubm9kZU5hbWU9PSJJTUcifX1jbGFzcyBJcCBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKGUsdCxyLHMsaSxvLGwsYSxjLHUpe3N1cGVyKGUsdCxyLHMsaSxvLGwsYyx1KSx0aGlzLnNwZWM9YX11cGRhdGUoZSx0LHIscyl7aWYodGhpcy5kaXJ0eT09R2UpcmV0dXJuITE7aWYodGhpcy5zcGVjLnVwZGF0ZSYmKHRoaXMubm9kZS50eXBlPT1lLnR5cGV8fHRoaXMuc3BlYy5tdWx0aVR5cGUpKXtsZXQgaT10aGlzLnNwZWMudXBkYXRlKGUsdCxyKTtyZXR1cm4gaSYmdGhpcy51cGRhdGVJbm5lcihlLHQscixzKSxpfWVsc2UgcmV0dXJuIXRoaXMuY29udGVudERPTSYmIWUuaXNMZWFmPyExOnN1cGVyLnVwZGF0ZShlLHQscixzKX1zZWxlY3ROb2RlKCl7dGhpcy5zcGVjLnNlbGVjdE5vZGU/dGhpcy5zcGVjLnNlbGVjdE5vZGUoKTpzdXBlci5zZWxlY3ROb2RlKCl9ZGVzZWxlY3ROb2RlKCl7dGhpcy5zcGVjLmRlc2VsZWN0Tm9kZT90aGlzLnNwZWMuZGVzZWxlY3ROb2RlKCk6c3VwZXIuZGVzZWxlY3ROb2RlKCl9c2V0U2VsZWN0aW9uKGUsdCxyLHMpe3RoaXMuc3BlYy5zZXRTZWxlY3Rpb24/dGhpcy5zcGVjLnNldFNlbGVjdGlvbihlLHQsci5yb290KTpzdXBlci5zZXRTZWxlY3Rpb24oZSx0LHIscyl9ZGVzdHJveSgpe3RoaXMuc3BlYy5kZXN0cm95JiZ0aGlzLnNwZWMuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX1zdG9wRXZlbnQoZSl7cmV0dXJuIHRoaXMuc3BlYy5zdG9wRXZlbnQ/dGhpcy5zcGVjLnN0b3BFdmVudChlKTohMX1pZ25vcmVNdXRhdGlvbihlKXtyZXR1cm4gdGhpcy5zcGVjLmlnbm9yZU11dGF0aW9uP3RoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihlKTpzdXBlci5pZ25vcmVNdXRhdGlvbihlKX19ZnVuY3Rpb24gU3UobixlLHQpe2xldCByPW4uZmlyc3RDaGlsZCxzPSExO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtsZXQgbz1lW2ldLGw9by5kb207aWYobC5wYXJlbnROb2RlPT1uKXtmb3IoO2whPXI7KXI9cWwocikscz0hMDtyPXIubmV4dFNpYmxpbmd9ZWxzZSBzPSEwLG4uaW5zZXJ0QmVmb3JlKGwscik7aWYobyBpbnN0YW5jZW9mIGp0KXtsZXQgYT1yP3IucHJldmlvdXNTaWJsaW5nOm4ubGFzdENoaWxkO1N1KG8uY29udGVudERPTSxvLmNoaWxkcmVuLHQpLHI9YT9hLm5leHRTaWJsaW5nOm4uZmlyc3RDaGlsZH19Zm9yKDtyOylyPXFsKHIpLHM9ITA7cyYmdC50cmFja1dyaXRlcz09biYmKHQudHJhY2tXcml0ZXM9bnVsbCl9Y29uc3QgJG49ZnVuY3Rpb24obil7biYmKHRoaXMubm9kZU5hbWU9bil9OyRuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpO2NvbnN0IEx0PVtuZXcgJG5dO2Z1bmN0aW9uIEJpKG4sZSx0KXtpZihuLmxlbmd0aD09MClyZXR1cm4gTHQ7bGV0IHI9dD9MdFswXTpuZXcgJG4scz1bcl07Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspe2xldCBvPW5baV0udHlwZS5hdHRycztpZihvKXtvLm5vZGVOYW1lJiZzLnB1c2gocj1uZXcgJG4oby5ub2RlTmFtZSkpO2ZvcihsZXQgbCBpbiBvKXtsZXQgYT1vW2xdO2EhPW51bGwmJih0JiZzLmxlbmd0aD09MSYmcy5wdXNoKHI9bmV3ICRuKGUuaXNJbmxpbmU/InNwYW4iOiJkaXYiKSksbD09ImNsYXNzIj9yLmNsYXNzPShyLmNsYXNzP3IuY2xhc3MrIiAiOiIiKSthOmw9PSJzdHlsZSI/ci5zdHlsZT0oci5zdHlsZT9yLnN0eWxlKyI7IjoiIikrYTpsIT0ibm9kZU5hbWUiJiYocltsXT1hKSl9fX1yZXR1cm4gc31mdW5jdGlvbiBDdShuLGUsdCxyKXtpZih0PT1MdCYmcj09THQpcmV0dXJuIGU7bGV0IHM9ZTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IG89cltpXSxsPXRbaV07aWYoaSl7bGV0IGE7bCYmbC5ub2RlTmFtZT09by5ub2RlTmFtZSYmcyE9biYmKGE9cy5wYXJlbnROb2RlKSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT1vLm5vZGVOYW1lfHwoYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KG8ubm9kZU5hbWUpLGEucG1Jc0RlY289ITAsYS5hcHBlbmRDaGlsZChzKSxsPUx0WzBdKSxzPWF9RHAocyxsfHxMdFswXSxvKX1yZXR1cm4gc31mdW5jdGlvbiBEcChuLGUsdCl7Zm9yKGxldCByIGluIGUpciE9ImNsYXNzIiYmciE9InN0eWxlIiYmciE9Im5vZGVOYW1lIiYmIShyIGluIHQpJiZuLnJlbW92ZUF0dHJpYnV0ZShyKTtmb3IobGV0IHIgaW4gdClyIT0iY2xhc3MiJiZyIT0ic3R5bGUiJiZyIT0ibm9kZU5hbWUiJiZ0W3JdIT1lW3JdJiZuLnNldEF0dHJpYnV0ZShyLHRbcl0pO2lmKGUuY2xhc3MhPXQuY2xhc3Mpe2xldCByPWUuY2xhc3M/ZS5jbGFzcy5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKTpbXSxzPXQuY2xhc3M/dC5jbGFzcy5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKTpbXTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKylzLmluZGV4T2YocltpXSk9PS0xJiZuLmNsYXNzTGlzdC5yZW1vdmUocltpXSk7Zm9yKGxldCBpPTA7aTxzLmxlbmd0aDtpKyspci5pbmRleE9mKHNbaV0pPT0tMSYmbi5jbGFzc0xpc3QuYWRkKHNbaV0pO24uY2xhc3NMaXN0Lmxlbmd0aD09MCYmbi5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIil9aWYoZS5zdHlsZSE9dC5zdHlsZSl7aWYoZS5zdHlsZSl7bGV0IHI9L1xzKihbXHdcLVx4YTEtXHVmZmZmXSspXHMqOig/OiIoPzpcXC58W14iXSkqInwnKD86XFwufFteJ10pKid8XCguKj9cKXxbXjtdKSovZyxzO2Zvcig7cz1yLmV4ZWMoZS5zdHlsZSk7KW4uc3R5bGUucmVtb3ZlUHJvcGVydHkoc1sxXSl9dC5zdHlsZSYmKG4uc3R5bGUuY3NzVGV4dCs9dC5zdHlsZSl9fWZ1bmN0aW9uIFR1KG4sZSx0KXtyZXR1cm4gQ3UobixuLEx0LEJpKGUsdCxuLm5vZGVUeXBlIT0xKSl9ZnVuY3Rpb24gVnIobixlKXtpZihuLmxlbmd0aCE9ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoIW5bdF0udHlwZS5lcShlW3RdLnR5cGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHFsKG4pe2xldCBlPW4ubmV4dFNpYmxpbmc7cmV0dXJuIG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxlfWNsYXNzIExwe2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmxvY2s9dCx0aGlzLnZpZXc9cix0aGlzLmluZGV4PTAsdGhpcy5zdGFjaz1bXSx0aGlzLmNoYW5nZWQ9ITEsdGhpcy50b3A9ZSx0aGlzLnByZU1hdGNoPVBwKGUubm9kZS5jb250ZW50LGUpfWRlc3Ryb3lCZXR3ZWVuKGUsdCl7aWYoZSE9dCl7Zm9yKGxldCByPWU7cjx0O3IrKyl0aGlzLnRvcC5jaGlsZHJlbltyXS5kZXN0cm95KCk7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKGUsdC1lKSx0aGlzLmNoYW5nZWQ9ITB9fWRlc3Ryb3lSZXN0KCl7dGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aCl9c3luY1RvTWFya3MoZSx0LHIscyl7bGV0IGk9MCxvPXRoaXMuc3RhY2subGVuZ3RoPj4xLGw9TWF0aC5taW4obyxlLmxlbmd0aCk7Zm9yKDtpPGwmJihpPT1vLTE/dGhpcy50b3A6dGhpcy5zdGFja1tpKzE8PDFdKS5tYXRjaGVzTWFyayhlW2ldKSYmZVtpXS50eXBlLnNwZWMuc3Bhbm5pbmchPT0hMTspaSsrO2Zvcig7aTxvOyl0aGlzLmRlc3Ryb3lSZXN0KCksdGhpcy50b3AuZGlydHk9emUsdGhpcy5pbmRleD10aGlzLnN0YWNrLnBvcCgpLHRoaXMudG9wPXRoaXMuc3RhY2sucG9wKCksby0tO2Zvcig7bzxlLmxlbmd0aDspe3RoaXMuc3RhY2sucHVzaCh0aGlzLnRvcCx0aGlzLmluZGV4KzEpO2xldCBhPS0xLGM9dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoO3M8dGhpcy5wcmVNYXRjaC5pbmRleCYmKGM9TWF0aC5taW4odGhpcy5pbmRleCszLGMpKTtmb3IobGV0IHU9dGhpcy5pbmRleDt1PGM7dSsrKXtsZXQgZD10aGlzLnRvcC5jaGlsZHJlblt1XTtpZihkLm1hdGNoZXNNYXJrKGVbb10pJiYhdGhpcy5pc0xvY2tlZChkLmRvbSkpe2E9dTticmVha319aWYoYT4tMSlhPnRoaXMuaW5kZXgmJih0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGEpKSx0aGlzLnRvcD10aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XTtlbHNle2xldCB1PWp0LmNyZWF0ZSh0aGlzLnRvcCxlW29dLHQscik7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgsMCx1KSx0aGlzLnRvcD11LHRoaXMuY2hhbmdlZD0hMH10aGlzLmluZGV4PTAsbysrfX1maW5kTm9kZU1hdGNoKGUsdCxyLHMpe2xldCBpPS0xLG87aWYocz49dGhpcy5wcmVNYXRjaC5pbmRleCYmKG89dGhpcy5wcmVNYXRjaC5tYXRjaGVzW3MtdGhpcy5wcmVNYXRjaC5pbmRleF0pLnBhcmVudD09dGhpcy50b3AmJm8ubWF0Y2hlc05vZGUoZSx0LHIpKWk9dGhpcy50b3AuY2hpbGRyZW4uaW5kZXhPZihvLHRoaXMuaW5kZXgpO2Vsc2UgZm9yKGxldCBsPXRoaXMuaW5kZXgsYT1NYXRoLm1pbih0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGgsbCs1KTtsPGE7bCsrKXtsZXQgYz10aGlzLnRvcC5jaGlsZHJlbltsXTtpZihjLm1hdGNoZXNOb2RlKGUsdCxyKSYmIXRoaXMucHJlTWF0Y2gubWF0Y2hlZC5oYXMoYykpe2k9bDticmVha319cmV0dXJuIGk8MD8hMToodGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGkpLHRoaXMuaW5kZXgrKywhMCl9dXBkYXRlTm9kZUF0KGUsdCxyLHMsaSl7bGV0IG89dGhpcy50b3AuY2hpbGRyZW5bc107cmV0dXJuIG8uZGlydHk9PUdlJiZvLmRvbT09by5jb250ZW50RE9NJiYoby5kaXJ0eT1EdCksby51cGRhdGUoZSx0LHIsaSk/KHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCxzKSx0aGlzLmluZGV4KyssITApOiExfWZpbmRJbmRleFdpdGhDaGlsZChlKXtmb3IoOzspe2xldCB0PWUucGFyZW50Tm9kZTtpZighdClyZXR1cm4tMTtpZih0PT10aGlzLnRvcC5jb250ZW50RE9NKXtsZXQgcj1lLnBtVmlld0Rlc2M7aWYocil7Zm9yKGxldCBzPXRoaXMuaW5kZXg7czx0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGg7cysrKWlmKHRoaXMudG9wLmNoaWxkcmVuW3NdPT1yKXJldHVybiBzfXJldHVybi0xfWU9dH19dXBkYXRlTmV4dE5vZGUoZSx0LHIscyxpLG8pe2ZvcihsZXQgbD10aGlzLmluZGV4O2w8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoO2wrKyl7bGV0IGE9dGhpcy50b3AuY2hpbGRyZW5bbF07aWYoYSBpbnN0YW5jZW9mIEN0KXtsZXQgYz10aGlzLnByZU1hdGNoLm1hdGNoZWQuZ2V0KGEpO2lmKGMhPW51bGwmJmMhPWkpcmV0dXJuITE7bGV0IHU9YS5kb20sZCxoPXRoaXMuaXNMb2NrZWQodSkmJiEoZS5pc1RleHQmJmEubm9kZSYmYS5ub2RlLmlzVGV4dCYmYS5ub2RlRE9NLm5vZGVWYWx1ZT09ZS50ZXh0JiZhLmRpcnR5IT1HZSYmVnIodCxhLm91dGVyRGVjbykpO2lmKCFoJiZhLnVwZGF0ZShlLHQscixzKSlyZXR1cm4gdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LGwpLGEuZG9tIT11JiYodGhpcy5jaGFuZ2VkPSEwKSx0aGlzLmluZGV4KyssITA7aWYoIWgmJihkPXRoaXMucmVjcmVhdGVXcmFwcGVyKGEsZSx0LHIscyxvKSkpcmV0dXJuIHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCxsKSx0aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XT1kLGQuY29udGVudERPTSYmKGQuZGlydHk9RHQsZC51cGRhdGVDaGlsZHJlbihzLG8rMSksZC5kaXJ0eT16ZSksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuaW5kZXgrKywhMDticmVha319cmV0dXJuITF9cmVjcmVhdGVXcmFwcGVyKGUsdCxyLHMsaSxvKXtpZihlLmRpcnR5fHx0LmlzQXRvbXx8IWUuY2hpbGRyZW4ubGVuZ3RofHwhZS5ub2RlLmNvbnRlbnQuZXEodC5jb250ZW50KXx8IVZyKHIsZS5vdXRlckRlY28pfHwhcy5lcShlLmlubmVyRGVjbykpcmV0dXJuIG51bGw7bGV0IGw9Q3QuY3JlYXRlKHRoaXMudG9wLHQscixzLGksbyk7aWYobC5jb250ZW50RE9NKXtsLmNoaWxkcmVuPWUuY2hpbGRyZW4sZS5jaGlsZHJlbj1bXTtmb3IobGV0IGEgb2YgbC5jaGlsZHJlbilhLnBhcmVudD1sfXJldHVybiBlLmRlc3Ryb3koKSxsfWFkZE5vZGUoZSx0LHIscyxpKXtsZXQgbz1DdC5jcmVhdGUodGhpcy50b3AsZSx0LHIscyxpKTtvLmNvbnRlbnRET00mJm8udXBkYXRlQ2hpbGRyZW4ocyxpKzEpLHRoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssMCxvKSx0aGlzLmNoYW5nZWQ9ITB9cGxhY2VXaWRnZXQoZSx0LHIpe2xldCBzPXRoaXMuaW5kZXg8dGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoP3RoaXMudG9wLmNoaWxkcmVuW3RoaXMuaW5kZXhdOm51bGw7aWYocyYmcy5tYXRjaGVzV2lkZ2V0KGUpJiYoZT09cy53aWRnZXR8fCFzLndpZGdldC50eXBlLnRvRE9NLnBhcmVudE5vZGUpKXRoaXMuaW5kZXgrKztlbHNle2xldCBpPW5ldyB3dSh0aGlzLnRvcCxlLHQscik7dGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgrKywwLGkpLHRoaXMuY2hhbmdlZD0hMH19YWRkVGV4dGJsb2NrSGFja3MoKXtsZXQgZT10aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4LTFdLHQ9dGhpcy50b3A7Zm9yKDtlIGluc3RhbmNlb2YganQ7KXQ9ZSxlPXQuY2hpbGRyZW5bdC5jaGlsZHJlbi5sZW5ndGgtMV07KCFlfHwhKGUgaW5zdGFuY2VvZiBQcyl8fC9cbiQvLnRlc3QoZS5ub2RlLnRleHQpfHx0aGlzLnZpZXcucmVxdWlyZXNHZWNrb0hhY2tOb2RlJiYvXHMkLy50ZXN0KGUubm9kZS50ZXh0KSkmJigoa2V8fG1lKSYmZSYmZS5kb20uY29udGVudEVkaXRhYmxlPT0iZmFsc2UiJiZ0aGlzLmFkZEhhY2tOb2RlKCJJTUciLHQpLHRoaXMuYWRkSGFja05vZGUoIkJSIix0aGlzLnRvcCkpfWFkZEhhY2tOb2RlKGUsdCl7aWYodD09dGhpcy50b3AmJnRoaXMuaW5kZXg8dC5jaGlsZHJlbi5sZW5ndGgmJnQuY2hpbGRyZW5bdGhpcy5pbmRleF0ubWF0Y2hlc0hhY2soZSkpdGhpcy5pbmRleCsrO2Vsc2V7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtlPT0iSU1HIiYmKHIuY2xhc3NOYW1lPSJQcm9zZU1pcnJvci1zZXBhcmF0b3IiLHIuYWx0PSIiKSxlPT0iQlIiJiYoci5jbGFzc05hbWU9IlByb3NlTWlycm9yLXRyYWlsaW5nQnJlYWsiKTtsZXQgcz1uZXcgdnUodGhpcy50b3AsW10scixudWxsKTt0IT10aGlzLnRvcD90LmNoaWxkcmVuLnB1c2gocyk6dC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCsrLDAscyksdGhpcy5jaGFuZ2VkPSEwfX1pc0xvY2tlZChlKXtyZXR1cm4gdGhpcy5sb2NrJiYoZT09dGhpcy5sb2NrfHxlLm5vZGVUeXBlPT0xJiZlLmNvbnRhaW5zKHRoaXMubG9jay5wYXJlbnROb2RlKSl9fWZ1bmN0aW9uIFBwKG4sZSl7bGV0IHQ9ZSxyPXQuY2hpbGRyZW4ubGVuZ3RoLHM9bi5jaGlsZENvdW50LGk9bmV3IE1hcCxvPVtdO2U6Zm9yKDtzPjA7KXtsZXQgbDtmb3IoOzspaWYocil7bGV0IGM9dC5jaGlsZHJlbltyLTFdO2lmKGMgaW5zdGFuY2VvZiBqdCl0PWMscj1jLmNoaWxkcmVuLmxlbmd0aDtlbHNle2w9YyxyLS07YnJlYWt9fWVsc2V7aWYodD09ZSlicmVhayBlO3I9dC5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0KSx0PXQucGFyZW50fWxldCBhPWwubm9kZTtpZihhKXtpZihhIT1uLmNoaWxkKHMtMSkpYnJlYWs7LS1zLGkuc2V0KGwscyksby5wdXNoKGwpfX1yZXR1cm57aW5kZXg6cyxtYXRjaGVkOmksbWF0Y2hlczpvLnJldmVyc2UoKX19ZnVuY3Rpb24genAobixlKXtyZXR1cm4gbi50eXBlLnNpZGUtZS50eXBlLnNpZGV9ZnVuY3Rpb24gJHAobixlLHQscil7bGV0IHM9ZS5sb2NhbHMobiksaT0wO2lmKHMubGVuZ3RoPT0wKXtmb3IobGV0IGM9MDtjPG4uY2hpbGRDb3VudDtjKyspe2xldCB1PW4uY2hpbGQoYyk7cih1LHMsZS5mb3JDaGlsZChpLHUpLGMpLGkrPXUubm9kZVNpemV9cmV0dXJufWxldCBvPTAsbD1bXSxhPW51bGw7Zm9yKGxldCBjPTA7Oyl7bGV0IHUsZDtmb3IoO288cy5sZW5ndGgmJnNbb10udG89PWk7KXtsZXQgZz1zW28rK107Zy53aWRnZXQmJih1PyhkfHwoZD1bdV0pKS5wdXNoKGcpOnU9Zyl9aWYodSlpZihkKXtkLnNvcnQoenApO2ZvcihsZXQgZz0wO2c8ZC5sZW5ndGg7ZysrKXQoZFtnXSxjLCEhYSl9ZWxzZSB0KHUsYywhIWEpO2xldCBoLGY7aWYoYSlmPS0xLGg9YSxhPW51bGw7ZWxzZSBpZihjPG4uY2hpbGRDb3VudClmPWMsaD1uLmNoaWxkKGMrKyk7ZWxzZSBicmVhaztmb3IobGV0IGc9MDtnPGwubGVuZ3RoO2crKylsW2ddLnRvPD1pJiZsLnNwbGljZShnLS0sMSk7Zm9yKDtvPHMubGVuZ3RoJiZzW29dLmZyb208PWkmJnNbb10udG8+aTspbC5wdXNoKHNbbysrXSk7bGV0IHA9aStoLm5vZGVTaXplO2lmKGguaXNUZXh0KXtsZXQgZz1wO288cy5sZW5ndGgmJnNbb10uZnJvbTxnJiYoZz1zW29dLmZyb20pO2ZvcihsZXQgeT0wO3k8bC5sZW5ndGg7eSsrKWxbeV0udG88ZyYmKGc9bFt5XS50byk7ZzxwJiYoYT1oLmN1dChnLWkpLGg9aC5jdXQoMCxnLWkpLHA9ZyxmPS0xKX1lbHNlIGZvcig7bzxzLmxlbmd0aCYmc1tvXS50bzxwOylvKys7bGV0IG09aC5pc0lubGluZSYmIWguaXNMZWFmP2wuZmlsdGVyKGc9PiFnLmlubGluZSk6bC5zbGljZSgpO3IoaCxtLGUuZm9yQ2hpbGQoaSxoKSxmKSxpPXB9fWZ1bmN0aW9uIEJwKG4pe2lmKG4ubm9kZU5hbWU9PSJVTCJ8fG4ubm9kZU5hbWU9PSJPTCIpe2xldCBlPW4uc3R5bGUuY3NzVGV4dDtuLnN0eWxlLmNzc1RleHQ9ZSsiOyBsaXN0LXN0eWxlOiBzcXVhcmUgIWltcG9ydGFudCIsd2luZG93LmdldENvbXB1dGVkU3R5bGUobikubGlzdFN0eWxlLG4uc3R5bGUuY3NzVGV4dD1lfX1mdW5jdGlvbiBfcChuLGUsdCxyKXtmb3IobGV0IHM9MCxpPTA7czxuLmNoaWxkQ291bnQmJmk8PXI7KXtsZXQgbz1uLmNoaWxkKHMrKyksbD1pO2lmKGkrPW8ubm9kZVNpemUsIW8uaXNUZXh0KWNvbnRpbnVlO2xldCBhPW8udGV4dDtmb3IoO3M8bi5jaGlsZENvdW50Oyl7bGV0IGM9bi5jaGlsZChzKyspO2lmKGkrPWMubm9kZVNpemUsIWMuaXNUZXh0KWJyZWFrO2ErPWMudGV4dH1pZihpPj10KXtpZihpPj1yJiZhLnNsaWNlKHItZS5sZW5ndGgtbCxyLWwpPT1lKXJldHVybiByLWUubGVuZ3RoO2xldCBjPWw8cj9hLmxhc3RJbmRleE9mKGUsci1sLTEpOi0xO2lmKGM+PTAmJmMrZS5sZW5ndGgrbD49dClyZXR1cm4gbCtjO2lmKHQ9PXImJmEubGVuZ3RoPj1yK2UubGVuZ3RoLWwmJmEuc2xpY2Uoci1sLHItbCtlLmxlbmd0aCk9PWUpcmV0dXJuIHJ9fXJldHVybi0xfWZ1bmN0aW9uIF9pKG4sZSx0LHIscyl7bGV0IGk9W107Zm9yKGxldCBvPTAsbD0wO288bi5sZW5ndGg7bysrKXtsZXQgYT1uW29dLGM9bCx1PWwrPWEuc2l6ZTtjPj10fHx1PD1lP2kucHVzaChhKTooYzxlJiZpLnB1c2goYS5zbGljZSgwLGUtYyxyKSkscyYmKGkucHVzaChzKSxzPXZvaWQgMCksdT50JiZpLnB1c2goYS5zbGljZSh0LWMsYS5zaXplLHIpKSl9cmV0dXJuIGl9ZnVuY3Rpb24gdm8obixlPW51bGwpe2xldCB0PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKSxyPW4uc3RhdGUuZG9jO2lmKCF0LmZvY3VzTm9kZSlyZXR1cm4gbnVsbDtsZXQgcz1uLmRvY1ZpZXcubmVhcmVzdERlc2ModC5mb2N1c05vZGUpLGk9cyYmcy5zaXplPT0wLG89bi5kb2NWaWV3LnBvc0Zyb21ET00odC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCwxKTtpZihvPDApcmV0dXJuIG51bGw7bGV0IGw9ci5yZXNvbHZlKG8pLGEsYztpZihMcyh0KSl7Zm9yKGE9bztzJiYhcy5ub2RlOylzPXMucGFyZW50O2xldCBkPXMubm9kZTtpZihzJiZkLmlzQXRvbSYmTi5pc1NlbGVjdGFibGUoZCkmJnMucGFyZW50JiYhKGQuaXNJbmxpbmUmJmhwKHQuZm9jdXNOb2RlLHQuZm9jdXNPZmZzZXQscy5kb20pKSl7bGV0IGg9cy5wb3NCZWZvcmU7Yz1uZXcgTihvPT1oP2w6ci5yZXNvbHZlKGgpKX19ZWxzZXtpZih0IGluc3RhbmNlb2Ygbi5kb20ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TZWxlY3Rpb24mJnQucmFuZ2VDb3VudD4xKXtsZXQgZD1vLGg9bztmb3IobGV0IGY9MDtmPHQucmFuZ2VDb3VudDtmKyspe2xldCBwPXQuZ2V0UmFuZ2VBdChmKTtkPU1hdGgubWluKGQsbi5kb2NWaWV3LnBvc0Zyb21ET00ocC5zdGFydENvbnRhaW5lcixwLnN0YXJ0T2Zmc2V0LDEpKSxoPU1hdGgubWF4KGgsbi5kb2NWaWV3LnBvc0Zyb21ET00ocC5lbmRDb250YWluZXIscC5lbmRPZmZzZXQsLTEpKX1pZihkPDApcmV0dXJuIG51bGw7W2Esb109aD09bi5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yP1toLGRdOltkLGhdLGw9ci5yZXNvbHZlKG8pfWVsc2UgYT1uLmRvY1ZpZXcucG9zRnJvbURPTSh0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsMSk7aWYoYTwwKXJldHVybiBudWxsfWxldCB1PXIucmVzb2x2ZShhKTtpZighYyl7bGV0IGQ9ZT09InBvaW50ZXIifHxuLnN0YXRlLnNlbGVjdGlvbi5oZWFkPGwucG9zJiYhaT8xOi0xO2M9U28obix1LGwsZCl9cmV0dXJuIGN9ZnVuY3Rpb24gTXUobil7cmV0dXJuIG4uZWRpdGFibGU/bi5oYXNGb2N1cygpOkF1KG4pJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNvbnRhaW5zKG4uZG9tKX1mdW5jdGlvbiBsdChuLGU9ITEpe2xldCB0PW4uc3RhdGUuc2VsZWN0aW9uO2lmKEV1KG4sdCksISFNdShuKSl7aWYoIWUmJm4uaW5wdXQubW91c2VEb3duJiZuLmlucHV0Lm1vdXNlRG93bi5hbGxvd0RlZmF1bHQmJm1lKXtsZXQgcj1uLmRvbVNlbGVjdGlvblJhbmdlKCkscz1uLmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb247aWYoci5hbmNob3JOb2RlJiZzLmFuY2hvck5vZGUmJlV0KHIuYW5jaG9yTm9kZSxyLmFuY2hvck9mZnNldCxzLmFuY2hvck5vZGUscy5hbmNob3JPZmZzZXQpKXtuLmlucHV0Lm1vdXNlRG93bi5kZWxheWVkU2VsZWN0aW9uU3luYz0hMCxuLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpO3JldHVybn19aWYobi5kb21PYnNlcnZlci5kaXNjb25uZWN0U2VsZWN0aW9uKCksbi5jdXJzb3JXcmFwcGVyKUZwKG4pO2Vsc2V7bGV0e2FuY2hvcjpyLGhlYWQ6c309dCxpLG87V2wmJiEodCBpbnN0YW5jZW9mIEQpJiYodC4kZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudHx8KGk9S2wobix0LmZyb20pKSwhdC5lbXB0eSYmIXQuJGZyb20ucGFyZW50LmlubGluZUNvbnRlbnQmJihvPUtsKG4sdC50bykpKSxuLmRvY1ZpZXcuc2V0U2VsZWN0aW9uKHIscyxuLGUpLFdsJiYoaSYmSmwoaSksbyYmSmwobykpLHQudmlzaWJsZT9uLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uIik6KG4uZG9tLmNsYXNzTGlzdC5hZGQoIlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24iKSwib25zZWxlY3Rpb25jaGFuZ2UiaW4gZG9jdW1lbnQmJkhwKG4pKX1uLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpLG4uZG9tT2JzZXJ2ZXIuY29ubmVjdFNlbGVjdGlvbigpfX1jb25zdCBXbD1rZXx8bWUmJmZ1PDYzO2Z1bmN0aW9uIEtsKG4sZSl7bGV0e25vZGU6dCxvZmZzZXQ6cn09bi5kb2NWaWV3LmRvbUZyb21Qb3MoZSwwKSxzPXI8dC5jaGlsZE5vZGVzLmxlbmd0aD90LmNoaWxkTm9kZXNbcl06bnVsbCxpPXI/dC5jaGlsZE5vZGVzW3ItMV06bnVsbDtpZihrZSYmcyYmcy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpcmV0dXJuIGxpKHMpO2lmKCghc3x8cy5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpJiYoIWl8fGkuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKSl7aWYocylyZXR1cm4gbGkocyk7aWYoaSlyZXR1cm4gbGkoaSl9fWZ1bmN0aW9uIGxpKG4pe3JldHVybiBuLmNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIsa2UmJm4uZHJhZ2dhYmxlJiYobi5kcmFnZ2FibGU9ITEsbi53YXNEcmFnZ2FibGU9ITApLG59ZnVuY3Rpb24gSmwobil7bi5jb250ZW50RWRpdGFibGU9ImZhbHNlIixuLndhc0RyYWdnYWJsZSYmKG4uZHJhZ2dhYmxlPSEwLG4ud2FzRHJhZ2dhYmxlPW51bGwpfWZ1bmN0aW9uIEhwKG4pe2xldCBlPW4uZG9tLm93bmVyRG9jdW1lbnQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLG4uaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkKTtsZXQgdD1uLmRvbVNlbGVjdGlvblJhbmdlKCkscj10LmFuY2hvck5vZGUscz10LmFuY2hvck9mZnNldDtlLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbi5pbnB1dC5oaWRlU2VsZWN0aW9uR3VhcmQ9KCk9PnsodC5hbmNob3JOb2RlIT1yfHx0LmFuY2hvck9mZnNldCE9cykmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsbi5pbnB1dC5oaWRlU2VsZWN0aW9uR3VhcmQpLHNldFRpbWVvdXQoKCk9PnsoIU11KG4pfHxuLnN0YXRlLnNlbGVjdGlvbi52aXNpYmxlKSYmbi5kb20uY2xhc3NMaXN0LnJlbW92ZSgiUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvbiIpfSwyMCkpfSl9ZnVuY3Rpb24gRnAobil7bGV0IGU9bi5kb21TZWxlY3Rpb24oKTtpZighZSlyZXR1cm47bGV0IHQ9bi5jdXJzb3JXcmFwcGVyLmRvbSxyPXQubm9kZU5hbWU9PSJJTUciO3I/ZS5jb2xsYXBzZSh0LnBhcmVudE5vZGUsZmUodCkrMSk6ZS5jb2xsYXBzZSh0LDApLCFyJiYhbi5zdGF0ZS5zZWxlY3Rpb24udmlzaWJsZSYmTWUmJlN0PD0xMSYmKHQuZGlzYWJsZWQ9ITAsdC5kaXNhYmxlZD0hMSl9ZnVuY3Rpb24gRXUobixlKXtpZihlIGluc3RhbmNlb2YgTil7bGV0IHQ9bi5kb2NWaWV3LmRlc2NBdChlLmZyb20pO3QhPW4ubGFzdFNlbGVjdGVkVmlld0Rlc2MmJihHbChuKSx0JiZ0LnNlbGVjdE5vZGUoKSxuLmxhc3RTZWxlY3RlZFZpZXdEZXNjPXQpfWVsc2UgR2wobil9ZnVuY3Rpb24gR2wobil7bi5sYXN0U2VsZWN0ZWRWaWV3RGVzYyYmKG4ubGFzdFNlbGVjdGVkVmlld0Rlc2MucGFyZW50JiZuLmxhc3RTZWxlY3RlZFZpZXdEZXNjLmRlc2VsZWN0Tm9kZSgpLG4ubGFzdFNlbGVjdGVkVmlld0Rlc2M9dm9pZCAwKX1mdW5jdGlvbiBTbyhuLGUsdCxyKXtyZXR1cm4gbi5zb21lUHJvcCgiY3JlYXRlU2VsZWN0aW9uQmV0d2VlbiIscz0+cyhuLGUsdCkpfHxELmJldHdlZW4oZSx0LHIpfWZ1bmN0aW9uIFFsKG4pe3JldHVybiBuLmVkaXRhYmxlJiYhbi5oYXNGb2N1cygpPyExOkF1KG4pfWZ1bmN0aW9uIEF1KG4pe2xldCBlPW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZighZS5hbmNob3JOb2RlKXJldHVybiExO3RyeXtyZXR1cm4gbi5kb20uY29udGFpbnMoZS5hbmNob3JOb2RlLm5vZGVUeXBlPT0zP2UuYW5jaG9yTm9kZS5wYXJlbnROb2RlOmUuYW5jaG9yTm9kZSkmJihuLmVkaXRhYmxlfHxuLmRvbS5jb250YWlucyhlLmZvY3VzTm9kZS5ub2RlVHlwZT09Mz9lLmZvY3VzTm9kZS5wYXJlbnROb2RlOmUuZm9jdXNOb2RlKSl9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIFZwKG4pe2xldCBlPW4uZG9jVmlldy5kb21Gcm9tUG9zKG4uc3RhdGUuc2VsZWN0aW9uLmFuY2hvciwwKSx0PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtyZXR1cm4gVXQoZS5ub2RlLGUub2Zmc2V0LHQuYW5jaG9yTm9kZSx0LmFuY2hvck9mZnNldCl9ZnVuY3Rpb24gSGkobixlKXtsZXR7JGFuY2hvcjp0LCRoZWFkOnJ9PW4uc2VsZWN0aW9uLHM9ZT4wP3QubWF4KHIpOnQubWluKHIpLGk9cy5wYXJlbnQuaW5saW5lQ29udGVudD9zLmRlcHRoP24uZG9jLnJlc29sdmUoZT4wP3MuYWZ0ZXIoKTpzLmJlZm9yZSgpKTpudWxsOnM7cmV0dXJuIGkmJkkuZmluZEZyb20oaSxlKX1mdW5jdGlvbiBmdChuLGUpe3JldHVybiBuLmRpc3BhdGNoKG4uc3RhdGUudHIuc2V0U2VsZWN0aW9uKGUpLnNjcm9sbEludG9WaWV3KCkpLCEwfWZ1bmN0aW9uIFhsKG4sZSx0KXtsZXQgcj1uLnN0YXRlLnNlbGVjdGlvbjtpZihyIGluc3RhbmNlb2YgRClpZih0LmluZGV4T2YoInMiKT4tMSl7bGV0eyRoZWFkOnN9PXIsaT1zLnRleHRPZmZzZXQ/bnVsbDplPDA/cy5ub2RlQmVmb3JlOnMubm9kZUFmdGVyO2lmKCFpfHxpLmlzVGV4dHx8IWkuaXNMZWFmKXJldHVybiExO2xldCBvPW4uc3RhdGUuZG9jLnJlc29sdmUocy5wb3MraS5ub2RlU2l6ZSooZTwwPy0xOjEpKTtyZXR1cm4gZnQobixuZXcgRChyLiRhbmNob3IsbykpfWVsc2UgaWYoci5lbXB0eSl7aWYobi5lbmRPZlRleHRibG9jayhlPjA/ImZvcndhcmQiOiJiYWNrd2FyZCIpKXtsZXQgcz1IaShuLnN0YXRlLGUpO3JldHVybiBzJiZzIGluc3RhbmNlb2YgTj9mdChuLHMpOiExfWVsc2UgaWYoIShJZSYmdC5pbmRleE9mKCJtIik+LTEpKXtsZXQgcz1yLiRoZWFkLGk9cy50ZXh0T2Zmc2V0P251bGw6ZTwwP3Mubm9kZUJlZm9yZTpzLm5vZGVBZnRlcixvO2lmKCFpfHxpLmlzVGV4dClyZXR1cm4hMTtsZXQgbD1lPDA/cy5wb3MtaS5ub2RlU2l6ZTpzLnBvcztyZXR1cm4gaS5pc0F0b218fChvPW4uZG9jVmlldy5kZXNjQXQobCkpJiYhby5jb250ZW50RE9NP04uaXNTZWxlY3RhYmxlKGkpP2Z0KG4sbmV3IE4oZTwwP24uc3RhdGUuZG9jLnJlc29sdmUocy5wb3MtaS5ub2RlU2l6ZSk6cykpOmlyP2Z0KG4sbmV3IEQobi5zdGF0ZS5kb2MucmVzb2x2ZShlPDA/bDpsK2kubm9kZVNpemUpKSk6ITE6ITF9fWVsc2UgcmV0dXJuITE7ZWxzZXtpZihyIGluc3RhbmNlb2YgTiYmci5ub2RlLmlzSW5saW5lKXJldHVybiBmdChuLG5ldyBEKGU+MD9yLiR0bzpyLiRmcm9tKSk7e2xldCBzPUhpKG4uc3RhdGUsZSk7cmV0dXJuIHM/ZnQobixzKTohMX19fWZ1bmN0aW9uIFVyKG4pe3JldHVybiBuLm5vZGVUeXBlPT0zP24ubm9kZVZhbHVlLmxlbmd0aDpuLmNoaWxkTm9kZXMubGVuZ3RofWZ1bmN0aW9uIEJuKG4sZSl7bGV0IHQ9bi5wbVZpZXdEZXNjO3JldHVybiB0JiZ0LnNpemU9PTAmJihlPDB8fG4ubmV4dFNpYmxpbmd8fG4ubm9kZU5hbWUhPSJCUiIpfWZ1bmN0aW9uIFp0KG4sZSl7cmV0dXJuIGU8MD9VcChuKTpqcChuKX1mdW5jdGlvbiBVcChuKXtsZXQgZT1uLmRvbVNlbGVjdGlvblJhbmdlKCksdD1lLmZvY3VzTm9kZSxyPWUuZm9jdXNPZmZzZXQ7aWYoIXQpcmV0dXJuO2xldCBzLGksbz0hMTtmb3IoUGUmJnQubm9kZVR5cGU9PTEmJnI8VXIodCkmJkJuKHQuY2hpbGROb2Rlc1tyXSwtMSkmJihvPSEwKTs7KWlmKHI+MCl7aWYodC5ub2RlVHlwZSE9MSlicmVhazt7bGV0IGw9dC5jaGlsZE5vZGVzW3ItMV07aWYoQm4obCwtMSkpcz10LGk9LS1yO2Vsc2UgaWYobC5ub2RlVHlwZT09Myl0PWwscj10Lm5vZGVWYWx1ZS5sZW5ndGg7ZWxzZSBicmVha319ZWxzZXtpZihPdSh0KSlicmVhazt7bGV0IGw9dC5wcmV2aW91c1NpYmxpbmc7Zm9yKDtsJiZCbihsLC0xKTspcz10LnBhcmVudE5vZGUsaT1mZShsKSxsPWwucHJldmlvdXNTaWJsaW5nO2lmKGwpdD1sLHI9VXIodCk7ZWxzZXtpZih0PXQucGFyZW50Tm9kZSx0PT1uLmRvbSlicmVhaztyPTB9fX1vP0ZpKG4sdCxyKTpzJiZGaShuLHMsaSl9ZnVuY3Rpb24ganAobil7bGV0IGU9bi5kb21TZWxlY3Rpb25SYW5nZSgpLHQ9ZS5mb2N1c05vZGUscj1lLmZvY3VzT2Zmc2V0O2lmKCF0KXJldHVybjtsZXQgcz1Vcih0KSxpLG87Zm9yKDs7KWlmKHI8cyl7aWYodC5ub2RlVHlwZSE9MSlicmVhaztsZXQgbD10LmNoaWxkTm9kZXNbcl07aWYoQm4obCwxKSlpPXQsbz0rK3I7ZWxzZSBicmVha31lbHNle2lmKE91KHQpKWJyZWFrO3tsZXQgbD10Lm5leHRTaWJsaW5nO2Zvcig7bCYmQm4obCwxKTspaT1sLnBhcmVudE5vZGUsbz1mZShsKSsxLGw9bC5uZXh0U2libGluZztpZihsKXQ9bCxyPTAscz1Vcih0KTtlbHNle2lmKHQ9dC5wYXJlbnROb2RlLHQ9PW4uZG9tKWJyZWFrO3I9cz0wfX19aSYmRmkobixpLG8pfWZ1bmN0aW9uIE91KG4pe2xldCBlPW4ucG1WaWV3RGVzYztyZXR1cm4gZSYmZS5ub2RlJiZlLm5vZGUuaXNCbG9ja31mdW5jdGlvbiBxcChuLGUpe2Zvcig7biYmZT09bi5jaGlsZE5vZGVzLmxlbmd0aCYmIXNyKG4pOyllPWZlKG4pKzEsbj1uLnBhcmVudE5vZGU7Zm9yKDtuJiZlPG4uY2hpbGROb2Rlcy5sZW5ndGg7KXtsZXQgdD1uLmNoaWxkTm9kZXNbZV07aWYodC5ub2RlVHlwZT09MylyZXR1cm4gdDtpZih0Lm5vZGVUeXBlPT0xJiZ0LmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIilicmVhaztuPXQsZT0wfX1mdW5jdGlvbiBXcChuLGUpe2Zvcig7biYmIWUmJiFzcihuKTspZT1mZShuKSxuPW4ucGFyZW50Tm9kZTtmb3IoO24mJmU7KXtsZXQgdD1uLmNoaWxkTm9kZXNbZS0xXTtpZih0Lm5vZGVUeXBlPT0zKXJldHVybiB0O2lmKHQubm9kZVR5cGU9PTEmJnQuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKWJyZWFrO249dCxlPW4uY2hpbGROb2Rlcy5sZW5ndGh9fWZ1bmN0aW9uIEZpKG4sZSx0KXtpZihlLm5vZGVUeXBlIT0zKXtsZXQgaSxvOyhvPXFwKGUsdCkpPyhlPW8sdD0wKTooaT1XcChlLHQpKSYmKGU9aSx0PWkubm9kZVZhbHVlLmxlbmd0aCl9bGV0IHI9bi5kb21TZWxlY3Rpb24oKTtpZighcilyZXR1cm47aWYoTHMocikpe2xldCBpPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aS5zZXRFbmQoZSx0KSxpLnNldFN0YXJ0KGUsdCksci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKGkpfWVsc2Ugci5leHRlbmQmJnIuZXh0ZW5kKGUsdCk7bi5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKTtsZXR7c3RhdGU6c309bjtzZXRUaW1lb3V0KCgpPT57bi5zdGF0ZT09cyYmbHQobil9LDUwKX1mdW5jdGlvbiBZbChuLGUpe2xldCB0PW4uc3RhdGUuZG9jLnJlc29sdmUoZSk7aWYoIShtZXx8cHUpJiZ0LnBhcmVudC5pbmxpbmVDb250ZW50KXtsZXQgcz1uLmNvb3Jkc0F0UG9zKGUpO2lmKGU+dC5zdGFydCgpKXtsZXQgaT1uLmNvb3Jkc0F0UG9zKGUtMSksbz0oaS50b3AraS5ib3R0b20pLzI7aWYobz5zLnRvcCYmbzxzLmJvdHRvbSYmTWF0aC5hYnMoaS5sZWZ0LXMubGVmdCk+MSlyZXR1cm4gaS5sZWZ0PHMubGVmdD8ibHRyIjoicnRsIn1pZihlPHQuZW5kKCkpe2xldCBpPW4uY29vcmRzQXRQb3MoZSsxKSxvPShpLnRvcCtpLmJvdHRvbSkvMjtpZihvPnMudG9wJiZvPHMuYm90dG9tJiZNYXRoLmFicyhpLmxlZnQtcy5sZWZ0KT4xKXJldHVybiBpLmxlZnQ+cy5sZWZ0PyJsdHIiOiJydGwifX1yZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShuLmRvbSkuZGlyZWN0aW9uPT0icnRsIj8icnRsIjoibHRyIn1mdW5jdGlvbiBabChuLGUsdCl7bGV0IHI9bi5zdGF0ZS5zZWxlY3Rpb247aWYociBpbnN0YW5jZW9mIEQmJiFyLmVtcHR5fHx0LmluZGV4T2YoInMiKT4tMXx8SWUmJnQuaW5kZXhPZigibSIpPi0xKXJldHVybiExO2xldHskZnJvbTpzLCR0bzppfT1yO2lmKCFzLnBhcmVudC5pbmxpbmVDb250ZW50fHxuLmVuZE9mVGV4dGJsb2NrKGU8MD8idXAiOiJkb3duIikpe2xldCBvPUhpKG4uc3RhdGUsZSk7aWYobyYmbyBpbnN0YW5jZW9mIE4pcmV0dXJuIGZ0KG4sbyl9aWYoIXMucGFyZW50LmlubGluZUNvbnRlbnQpe2xldCBvPWU8MD9zOmksbD1yIGluc3RhbmNlb2YgQWU/SS5uZWFyKG8sZSk6SS5maW5kRnJvbShvLGUpO3JldHVybiBsP2Z0KG4sbCk6ITF9cmV0dXJuITF9ZnVuY3Rpb24gZWEobixlKXtpZighKG4uc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgRCkpcmV0dXJuITA7bGV0eyRoZWFkOnQsJGFuY2hvcjpyLGVtcHR5OnN9PW4uc3RhdGUuc2VsZWN0aW9uO2lmKCF0LnNhbWVQYXJlbnQocikpcmV0dXJuITA7aWYoIXMpcmV0dXJuITE7aWYobi5lbmRPZlRleHRibG9jayhlPjA/ImZvcndhcmQiOiJiYWNrd2FyZCIpKXJldHVybiEwO2xldCBpPSF0LnRleHRPZmZzZXQmJihlPDA/dC5ub2RlQmVmb3JlOnQubm9kZUFmdGVyKTtpZihpJiYhaS5pc1RleHQpe2xldCBvPW4uc3RhdGUudHI7cmV0dXJuIGU8MD9vLmRlbGV0ZSh0LnBvcy1pLm5vZGVTaXplLHQucG9zKTpvLmRlbGV0ZSh0LnBvcyx0LnBvcytpLm5vZGVTaXplKSxuLmRpc3BhdGNoKG8pLCEwfXJldHVybiExfWZ1bmN0aW9uIHRhKG4sZSx0KXtuLmRvbU9ic2VydmVyLnN0b3AoKSxlLmNvbnRlbnRFZGl0YWJsZT10LG4uZG9tT2JzZXJ2ZXIuc3RhcnQoKX1mdW5jdGlvbiBLcChuKXtpZigha2V8fG4uc3RhdGUuc2VsZWN0aW9uLiRoZWFkLnBhcmVudE9mZnNldD4wKXJldHVybiExO2xldHtmb2N1c05vZGU6ZSxmb2N1c09mZnNldDp0fT1uLmRvbVNlbGVjdGlvblJhbmdlKCk7aWYoZSYmZS5ub2RlVHlwZT09MSYmdD09MCYmZS5maXJzdENoaWxkJiZlLmZpcnN0Q2hpbGQuY29udGVudEVkaXRhYmxlPT0iZmFsc2UiKXtsZXQgcj1lLmZpcnN0Q2hpbGQ7dGEobixyLCJ0cnVlIiksc2V0VGltZW91dCgoKT0+dGEobixyLCJmYWxzZSIpLDIwKX1yZXR1cm4hMX1mdW5jdGlvbiBKcChuKXtsZXQgZT0iIjtyZXR1cm4gbi5jdHJsS2V5JiYoZSs9ImMiKSxuLm1ldGFLZXkmJihlKz0ibSIpLG4uYWx0S2V5JiYoZSs9ImEiKSxuLnNoaWZ0S2V5JiYoZSs9InMiKSxlfWZ1bmN0aW9uIEdwKG4sZSl7bGV0IHQ9ZS5rZXlDb2RlLHI9SnAoZSk7aWYodD09OHx8SWUmJnQ9PTcyJiZyPT0iYyIpcmV0dXJuIGVhKG4sLTEpfHxadChuLC0xKTtpZih0PT00NiYmIWUuc2hpZnRLZXl8fEllJiZ0PT02OCYmcj09ImMiKXJldHVybiBlYShuLDEpfHxadChuLDEpO2lmKHQ9PTEzfHx0PT0yNylyZXR1cm4hMDtpZih0PT0zN3x8SWUmJnQ9PTY2JiZyPT0iYyIpe2xldCBzPXQ9PTM3P1lsKG4sbi5zdGF0ZS5zZWxlY3Rpb24uZnJvbSk9PSJsdHIiPy0xOjE6LTE7cmV0dXJuIFhsKG4scyxyKXx8WnQobixzKX1lbHNlIGlmKHQ9PTM5fHxJZSYmdD09NzAmJnI9PSJjIil7bGV0IHM9dD09Mzk/WWwobixuLnN0YXRlLnNlbGVjdGlvbi5mcm9tKT09Imx0ciI/MTotMToxO3JldHVybiBYbChuLHMscil8fFp0KG4scyl9ZWxzZXtpZih0PT0zOHx8SWUmJnQ9PTgwJiZyPT0iYyIpcmV0dXJuIFpsKG4sLTEscil8fFp0KG4sLTEpO2lmKHQ9PTQwfHxJZSYmdD09NzgmJnI9PSJjIilyZXR1cm4gS3Aobil8fFpsKG4sMSxyKXx8WnQobiwxKTtpZihyPT0oSWU/Im0iOiJjIikmJih0PT02Nnx8dD09NzN8fHQ9PTg5fHx0PT05MCkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gQ28obixlKXtuLnNvbWVQcm9wKCJ0cmFuc2Zvcm1Db3BpZWQiLGY9PntlPWYoZSxuKX0pO2xldCB0PVtdLHtjb250ZW50OnIsb3BlblN0YXJ0OnMsb3BlbkVuZDppfT1lO2Zvcig7cz4xJiZpPjEmJnIuY2hpbGRDb3VudD09MSYmci5maXJzdENoaWxkLmNoaWxkQ291bnQ9PTE7KXtzLS0saS0tO2xldCBmPXIuZmlyc3RDaGlsZDt0LnB1c2goZi50eXBlLm5hbWUsZi5hdHRycyE9Zi50eXBlLmRlZmF1bHRBdHRycz9mLmF0dHJzOm51bGwpLHI9Zi5jb250ZW50fWxldCBvPW4uc29tZVByb3AoImNsaXBib2FyZFNlcmlhbGl6ZXIiKXx8S3QuZnJvbVNjaGVtYShuLnN0YXRlLnNjaGVtYSksbD1QdSgpLGE9bC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKG8uc2VyaWFsaXplRnJhZ21lbnQocix7ZG9jdW1lbnQ6bH0pKTtsZXQgYz1hLmZpcnN0Q2hpbGQsdSxkPTA7Zm9yKDtjJiZjLm5vZGVUeXBlPT0xJiYodT1MdVtjLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKTspe2ZvcihsZXQgZj11Lmxlbmd0aC0xO2Y+PTA7Zi0tKXtsZXQgcD1sLmNyZWF0ZUVsZW1lbnQodVtmXSk7Zm9yKDthLmZpcnN0Q2hpbGQ7KXAuYXBwZW5kQ2hpbGQoYS5maXJzdENoaWxkKTthLmFwcGVuZENoaWxkKHApLGQrK31jPWEuZmlyc3RDaGlsZH1jJiZjLm5vZGVUeXBlPT0xJiZjLnNldEF0dHJpYnV0ZSgiZGF0YS1wbS1zbGljZSIsYCR7c30gJHtpfSR7ZD9gIC0ke2R9YDoiIn0gJHtKU09OLnN0cmluZ2lmeSh0KX1gKTtsZXQgaD1uLnNvbWVQcm9wKCJjbGlwYm9hcmRUZXh0U2VyaWFsaXplciIsZj0+ZihlLG4pKXx8ZS5jb250ZW50LnRleHRCZXR3ZWVuKDAsZS5jb250ZW50LnNpemUsYAoKYCk7cmV0dXJue2RvbTphLHRleHQ6aCxzbGljZTplfX1mdW5jdGlvbiBOdShuLGUsdCxyLHMpe2xldCBpPXMucGFyZW50LnR5cGUuc3BlYy5jb2RlLG8sbDtpZighdCYmIWUpcmV0dXJuIG51bGw7bGV0IGE9ISFlJiYocnx8aXx8IXQpO2lmKGEpe2lmKG4uc29tZVByb3AoInRyYW5zZm9ybVBhc3RlZFRleHQiLGg9PntlPWgoZSxpfHxyLG4pfSksaSlyZXR1cm4gbD1uZXcgRShTLmZyb20obi5zdGF0ZS5zY2hlbWEudGV4dChlLnJlcGxhY2UoL1xyXG4/L2csYApgKSkpLDAsMCksbi5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkIixoPT57bD1oKGwsbiwhMCl9KSxsO2xldCBkPW4uc29tZVByb3AoImNsaXBib2FyZFRleHRQYXJzZXIiLGg9PmgoZSxzLHIsbikpO2lmKGQpbD1kO2Vsc2V7bGV0IGg9cy5tYXJrcygpLHtzY2hlbWE6Zn09bi5zdGF0ZSxwPUt0LmZyb21TY2hlbWEoZik7bz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLnNwbGl0KC8oPzpcclxuP3xcbikrLykuZm9yRWFjaChtPT57bGV0IGc9by5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikpO20mJmcuYXBwZW5kQ2hpbGQocC5zZXJpYWxpemVOb2RlKGYudGV4dChtLGgpKSl9KX19ZWxzZSBuLnNvbWVQcm9wKCJ0cmFuc2Zvcm1QYXN0ZWRIVE1MIixkPT57dD1kKHQsbil9KSxvPVpwKHQpLGlyJiZlbShvKTtsZXQgYz1vJiZvLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXBtLXNsaWNlXSIpLHU9YyYmL14oXGQrKSAoXGQrKSg/OiAtKFxkKykpPyAoLiopLy5leGVjKGMuZ2V0QXR0cmlidXRlKCJkYXRhLXBtLXNsaWNlIil8fCIiKTtpZih1JiZ1WzNdKWZvcihsZXQgZD0rdVszXTtkPjA7ZC0tKXtsZXQgaD1vLmZpcnN0Q2hpbGQ7Zm9yKDtoJiZoLm5vZGVUeXBlIT0xOyloPWgubmV4dFNpYmxpbmc7aWYoIWgpYnJlYWs7bz1ofWlmKGx8fChsPShuLnNvbWVQcm9wKCJjbGlwYm9hcmRQYXJzZXIiKXx8bi5zb21lUHJvcCgiZG9tUGFyc2VyIil8fGl0LmZyb21TY2hlbWEobi5zdGF0ZS5zY2hlbWEpKS5wYXJzZVNsaWNlKG8se3ByZXNlcnZlV2hpdGVzcGFjZTohIShhfHx1KSxjb250ZXh0OnMscnVsZUZyb21Ob2RlKGgpe3JldHVybiBoLm5vZGVOYW1lPT0iQlIiJiYhaC5uZXh0U2libGluZyYmaC5wYXJlbnROb2RlJiYhUXAudGVzdChoLnBhcmVudE5vZGUubm9kZU5hbWUpP3tpZ25vcmU6ITB9Om51bGx9fSkpLHUpbD10bShuYShsLCt1WzFdLCt1WzJdKSx1WzRdKTtlbHNlIGlmKGw9RS5tYXhPcGVuKFhwKGwuY29udGVudCxzKSwhMCksbC5vcGVuU3RhcnR8fGwub3BlbkVuZCl7bGV0IGQ9MCxoPTA7Zm9yKGxldCBmPWwuY29udGVudC5maXJzdENoaWxkO2Q8bC5vcGVuU3RhcnQmJiFmLnR5cGUuc3BlYy5pc29sYXRpbmc7ZCsrLGY9Zi5maXJzdENoaWxkKTtmb3IobGV0IGY9bC5jb250ZW50Lmxhc3RDaGlsZDtoPGwub3BlbkVuZCYmIWYudHlwZS5zcGVjLmlzb2xhdGluZztoKyssZj1mLmxhc3RDaGlsZCk7bD1uYShsLGQsaCl9cmV0dXJuIG4uc29tZVByb3AoInRyYW5zZm9ybVBhc3RlZCIsZD0+e2w9ZChsLG4sYSl9KSxsfWNvbnN0IFFwPS9eKGF8YWJicnxhY3JvbnltfGJ8Y2l0ZXxjb2RlfGRlbHxlbXxpfGluc3xrYmR8bGFiZWx8b3V0cHV0fHF8cnVieXxzfHNhbXB8c3BhbnxzdHJvbmd8c3VifHN1cHx0aW1lfHV8dHR8dmFyKSQvaTtmdW5jdGlvbiBYcChuLGUpe2lmKG4uY2hpbGRDb3VudDwyKXJldHVybiBuO2ZvcihsZXQgdD1lLmRlcHRoO3Q+PTA7dC0tKXtsZXQgcz1lLm5vZGUodCkuY29udGVudE1hdGNoQXQoZS5pbmRleCh0KSksaSxvPVtdO2lmKG4uZm9yRWFjaChsPT57aWYoIW8pcmV0dXJuO2xldCBhPXMuZmluZFdyYXBwaW5nKGwudHlwZSksYztpZighYSlyZXR1cm4gbz1udWxsO2lmKGM9by5sZW5ndGgmJmkubGVuZ3RoJiZJdShhLGksbCxvW28ubGVuZ3RoLTFdLDApKW9bby5sZW5ndGgtMV09YztlbHNle28ubGVuZ3RoJiYob1tvLmxlbmd0aC0xXT1EdShvW28ubGVuZ3RoLTFdLGkubGVuZ3RoKSk7bGV0IHU9UnUobCxhKTtvLnB1c2godSkscz1zLm1hdGNoVHlwZSh1LnR5cGUpLGk9YX19KSxvKXJldHVybiBTLmZyb20obyl9cmV0dXJuIG59ZnVuY3Rpb24gUnUobixlLHQ9MCl7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49dDtyLS0pbj1lW3JdLmNyZWF0ZShudWxsLFMuZnJvbShuKSk7cmV0dXJuIG59ZnVuY3Rpb24gSXUobixlLHQscixzKXtpZihzPG4ubGVuZ3RoJiZzPGUubGVuZ3RoJiZuW3NdPT1lW3NdKXtsZXQgaT1JdShuLGUsdCxyLmxhc3RDaGlsZCxzKzEpO2lmKGkpcmV0dXJuIHIuY29weShyLmNvbnRlbnQucmVwbGFjZUNoaWxkKHIuY2hpbGRDb3VudC0xLGkpKTtpZihyLmNvbnRlbnRNYXRjaEF0KHIuY2hpbGRDb3VudCkubWF0Y2hUeXBlKHM9PW4ubGVuZ3RoLTE/dC50eXBlOm5bcysxXSkpcmV0dXJuIHIuY29weShyLmNvbnRlbnQuYXBwZW5kKFMuZnJvbShSdSh0LG4scysxKSkpKX19ZnVuY3Rpb24gRHUobixlKXtpZihlPT0wKXJldHVybiBuO2xldCB0PW4uY29udGVudC5yZXBsYWNlQ2hpbGQobi5jaGlsZENvdW50LTEsRHUobi5sYXN0Q2hpbGQsZS0xKSkscj1uLmNvbnRlbnRNYXRjaEF0KG4uY2hpbGRDb3VudCkuZmlsbEJlZm9yZShTLmVtcHR5LCEwKTtyZXR1cm4gbi5jb3B5KHQuYXBwZW5kKHIpKX1mdW5jdGlvbiBWaShuLGUsdCxyLHMsaSl7bGV0IG89ZTwwP24uZmlyc3RDaGlsZDpuLmxhc3RDaGlsZCxsPW8uY29udGVudDtyZXR1cm4gbi5jaGlsZENvdW50PjEmJihpPTApLHM8ci0xJiYobD1WaShsLGUsdCxyLHMrMSxpKSkscz49dCYmKGw9ZTwwP28uY29udGVudE1hdGNoQXQoMCkuZmlsbEJlZm9yZShsLGk8PXMpLmFwcGVuZChsKTpsLmFwcGVuZChvLmNvbnRlbnRNYXRjaEF0KG8uY2hpbGRDb3VudCkuZmlsbEJlZm9yZShTLmVtcHR5LCEwKSkpLG4ucmVwbGFjZUNoaWxkKGU8MD8wOm4uY2hpbGRDb3VudC0xLG8uY29weShsKSl9ZnVuY3Rpb24gbmEobixlLHQpe3JldHVybiBlPG4ub3BlblN0YXJ0JiYobj1uZXcgRShWaShuLmNvbnRlbnQsLTEsZSxuLm9wZW5TdGFydCwwLG4ub3BlbkVuZCksZSxuLm9wZW5FbmQpKSx0PG4ub3BlbkVuZCYmKG49bmV3IEUoVmkobi5jb250ZW50LDEsdCxuLm9wZW5FbmQsMCwwKSxuLm9wZW5TdGFydCx0KSksbn1jb25zdCBMdT17dGhlYWQ6WyJ0YWJsZSJdLHRib2R5OlsidGFibGUiXSx0Zm9vdDpbInRhYmxlIl0sY2FwdGlvbjpbInRhYmxlIl0sY29sZ3JvdXA6WyJ0YWJsZSJdLGNvbDpbInRhYmxlIiwiY29sZ3JvdXAiXSx0cjpbInRhYmxlIiwidGJvZHkiXSx0ZDpbInRhYmxlIiwidGJvZHkiLCJ0ciJdLHRoOlsidGFibGUiLCJ0Ym9keSIsInRyIl19O2xldCByYT1udWxsO2Z1bmN0aW9uIFB1KCl7cmV0dXJuIHJhfHwocmE9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJ0aXRsZSIpKX1sZXQgYWk9bnVsbDtmdW5jdGlvbiBZcChuKXtsZXQgZT13aW5kb3cudHJ1c3RlZFR5cGVzO3JldHVybiBlPyhhaXx8KGFpPWUuZGVmYXVsdFBvbGljeXx8ZS5jcmVhdGVQb2xpY3koIlByb3NlTWlycm9yQ2xpcGJvYXJkIix7Y3JlYXRlSFRNTDp0PT50fSkpLGFpLmNyZWF0ZUhUTUwobikpOm59ZnVuY3Rpb24gWnAobil7bGV0IGU9L14oXHMqPG1ldGEgW14+XSo+KSovLmV4ZWMobik7ZSYmKG49bi5zbGljZShlWzBdLmxlbmd0aCkpO2xldCB0PVB1KCkuY3JlYXRlRWxlbWVudCgiZGl2Iikscj0vPChbYS16XVtePlxzXSspL2kuZXhlYyhuKSxzO2lmKChzPXImJkx1W3JbMV0udG9Mb3dlckNhc2UoKV0pJiYobj1zLm1hcChpPT4iPCIraSsiPiIpLmpvaW4oIiIpK24rcy5tYXAoaT0+IjwvIitpKyI+IikucmV2ZXJzZSgpLmpvaW4oIiIpKSx0LmlubmVySFRNTD1ZcChuKSxzKWZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKXQ9dC5xdWVyeVNlbGVjdG9yKHNbaV0pfHx0O3JldHVybiB0fWZ1bmN0aW9uIGVtKG4pe2xldCBlPW4ucXVlcnlTZWxlY3RvckFsbChtZT8ic3Bhbjpub3QoW2NsYXNzXSk6bm90KFtzdHlsZV0pIjoic3Bhbi5BcHBsZS1jb252ZXJ0ZWQtc3BhY2UiKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IHI9ZVt0XTtyLmNoaWxkTm9kZXMubGVuZ3RoPT0xJiZyLnRleHRDb250ZW50PT0iwqAiJiZyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobi5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikscil9fWZ1bmN0aW9uIHRtKG4sZSl7aWYoIW4uc2l6ZSlyZXR1cm4gbjtsZXQgdD1uLmNvbnRlbnQuZmlyc3RDaGlsZC50eXBlLnNjaGVtYSxyO3RyeXtyPUpTT04ucGFyc2UoZSl9Y2F0Y2h7cmV0dXJuIG59bGV0e2NvbnRlbnQ6cyxvcGVuU3RhcnQ6aSxvcGVuRW5kOm99PW47Zm9yKGxldCBsPXIubGVuZ3RoLTI7bD49MDtsLT0yKXtsZXQgYT10Lm5vZGVzW3JbbF1dO2lmKCFhfHxhLmhhc1JlcXVpcmVkQXR0cnMoKSlicmVhaztzPVMuZnJvbShhLmNyZWF0ZShyW2wrMV0scykpLGkrKyxvKyt9cmV0dXJuIG5ldyBFKHMsaSxvKX1jb25zdCB3ZT17fSx2ZT17fSxubT17dG91Y2hzdGFydDohMCx0b3VjaG1vdmU6ITB9O2NsYXNzIHJte2NvbnN0cnVjdG9yKCl7dGhpcy5zaGlmdEtleT0hMSx0aGlzLm1vdXNlRG93bj1udWxsLHRoaXMubGFzdEtleUNvZGU9bnVsbCx0aGlzLmxhc3RLZXlDb2RlVGltZT0wLHRoaXMubGFzdENsaWNrPXt0aW1lOjAseDowLHk6MCx0eXBlOiIiLGJ1dHRvbjowfSx0aGlzLmxhc3RTZWxlY3Rpb25PcmlnaW49bnVsbCx0aGlzLmxhc3RTZWxlY3Rpb25UaW1lPTAsdGhpcy5sYXN0SU9TRW50ZXI9MCx0aGlzLmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dD0tMSx0aGlzLmxhc3RGb2N1cz0wLHRoaXMubGFzdFRvdWNoPTAsdGhpcy5sYXN0Q2hyb21lRGVsZXRlPTAsdGhpcy5jb21wb3Npbmc9ITEsdGhpcy5jb21wb3NpdGlvbk5vZGU9bnVsbCx0aGlzLmNvbXBvc2luZ1RpbWVvdXQ9LTEsdGhpcy5jb21wb3NpdGlvbk5vZGVzPVtdLHRoaXMuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsdGhpcy5jb21wb3NpdGlvbklEPTEsdGhpcy5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMSx0aGlzLmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCx0aGlzLmRvbUNoYW5nZUNvdW50PTAsdGhpcy5ldmVudEhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5oaWRlU2VsZWN0aW9uR3VhcmQ9bnVsbH19ZnVuY3Rpb24gc20obil7Zm9yKGxldCBlIGluIHdlKXtsZXQgdD13ZVtlXTtuLmRvbS5hZGRFdmVudExpc3RlbmVyKGUsbi5pbnB1dC5ldmVudEhhbmRsZXJzW2VdPXI9PntvbShuLHIpJiYhVG8obixyKSYmKG4uZWRpdGFibGV8fCEoci50eXBlIGluIHZlKSkmJnQobixyKX0sbm1bZV0/e3Bhc3NpdmU6ITB9OnZvaWQgMCl9a2UmJm4uZG9tLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoKT0+bnVsbCksVWkobil9ZnVuY3Rpb24gdnQobixlKXtuLmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW49ZSxuLmlucHV0Lmxhc3RTZWxlY3Rpb25UaW1lPURhdGUubm93KCl9ZnVuY3Rpb24gaW0obil7bi5kb21PYnNlcnZlci5zdG9wKCk7Zm9yKGxldCBlIGluIG4uaW5wdXQuZXZlbnRIYW5kbGVycyluLmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKGUsbi5pbnB1dC5ldmVudEhhbmRsZXJzW2VdKTtjbGVhclRpbWVvdXQobi5pbnB1dC5jb21wb3NpbmdUaW1lb3V0KSxjbGVhclRpbWVvdXQobi5pbnB1dC5sYXN0SU9TRW50ZXJGYWxsYmFja1RpbWVvdXQpfWZ1bmN0aW9uIFVpKG4pe24uc29tZVByb3AoImhhbmRsZURPTUV2ZW50cyIsZT0+e2ZvcihsZXQgdCBpbiBlKW4uaW5wdXQuZXZlbnRIYW5kbGVyc1t0XXx8bi5kb20uYWRkRXZlbnRMaXN0ZW5lcih0LG4uaW5wdXQuZXZlbnRIYW5kbGVyc1t0XT1yPT5UbyhuLHIpKX0pfWZ1bmN0aW9uIFRvKG4sZSl7cmV0dXJuIG4uc29tZVByb3AoImhhbmRsZURPTUV2ZW50cyIsdD0+e2xldCByPXRbZS50eXBlXTtyZXR1cm4gcj9yKG4sZSl8fGUuZGVmYXVsdFByZXZlbnRlZDohMX0pfWZ1bmN0aW9uIG9tKG4sZSl7aWYoIWUuYnViYmxlcylyZXR1cm4hMDtpZihlLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuITE7Zm9yKGxldCB0PWUudGFyZ2V0O3QhPW4uZG9tO3Q9dC5wYXJlbnROb2RlKWlmKCF0fHx0Lm5vZGVUeXBlPT0xMXx8dC5wbVZpZXdEZXNjJiZ0LnBtVmlld0Rlc2Muc3RvcEV2ZW50KGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGxtKG4sZSl7IVRvKG4sZSkmJndlW2UudHlwZV0mJihuLmVkaXRhYmxlfHwhKGUudHlwZSBpbiB2ZSkpJiZ3ZVtlLnR5cGVdKG4sZSl9dmUua2V5ZG93bj0obixlKT0+e2xldCB0PWU7aWYobi5pbnB1dC5zaGlmdEtleT10LmtleUNvZGU9PTE2fHx0LnNoaWZ0S2V5LCEkdShuLHQpJiYobi5pbnB1dC5sYXN0S2V5Q29kZT10LmtleUNvZGUsbi5pbnB1dC5sYXN0S2V5Q29kZVRpbWU9RGF0ZS5ub3coKSwhKHJ0JiZtZSYmdC5rZXlDb2RlPT0xMykpKWlmKHQua2V5Q29kZSE9MjI5JiZuLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKSxkbiYmdC5rZXlDb2RlPT0xMyYmIXQuY3RybEtleSYmIXQuYWx0S2V5JiYhdC5tZXRhS2V5KXtsZXQgcj1EYXRlLm5vdygpO24uaW5wdXQubGFzdElPU0VudGVyPXIsbi5pbnB1dC5sYXN0SU9TRW50ZXJGYWxsYmFja1RpbWVvdXQ9c2V0VGltZW91dCgoKT0+e24uaW5wdXQubGFzdElPU0VudGVyPT1yJiYobi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIscz0+cyhuLFJ0KDEzLCJFbnRlciIpKSksbi5pbnB1dC5sYXN0SU9TRW50ZXI9MCl9LDIwMCl9ZWxzZSBuLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixyPT5yKG4sdCkpfHxHcChuLHQpP3QucHJldmVudERlZmF1bHQoKTp2dChuLCJrZXkiKX07dmUua2V5dXA9KG4sZSk9PntlLmtleUNvZGU9PTE2JiYobi5pbnB1dC5zaGlmdEtleT0hMSl9O3ZlLmtleXByZXNzPShuLGUpPT57bGV0IHQ9ZTtpZigkdShuLHQpfHwhdC5jaGFyQ29kZXx8dC5jdHJsS2V5JiYhdC5hbHRLZXl8fEllJiZ0Lm1ldGFLZXkpcmV0dXJuO2lmKG4uc29tZVByb3AoImhhbmRsZUtleVByZXNzIixzPT5zKG4sdCkpKXt0LnByZXZlbnREZWZhdWx0KCk7cmV0dXJufWxldCByPW4uc3RhdGUuc2VsZWN0aW9uO2lmKCEociBpbnN0YW5jZW9mIEQpfHwhci4kZnJvbS5zYW1lUGFyZW50KHIuJHRvKSl7bGV0IHM9U3RyaW5nLmZyb21DaGFyQ29kZSh0LmNoYXJDb2RlKSxpPSgpPT5uLnN0YXRlLnRyLmluc2VydFRleHQocykuc2Nyb2xsSW50b1ZpZXcoKTshL1tcclxuXS8udGVzdChzKSYmIW4uc29tZVByb3AoImhhbmRsZVRleHRJbnB1dCIsbz0+byhuLHIuJGZyb20ucG9zLHIuJHRvLnBvcyxzLGkpKSYmbi5kaXNwYXRjaChpKCkpLHQucHJldmVudERlZmF1bHQoKX19O2Z1bmN0aW9uIHpzKG4pe3JldHVybntsZWZ0Om4uY2xpZW50WCx0b3A6bi5jbGllbnRZfX1mdW5jdGlvbiBhbShuLGUpe2xldCB0PWUueC1uLmNsaWVudFgscj1lLnktbi5jbGllbnRZO3JldHVybiB0KnQrcipyPDEwMH1mdW5jdGlvbiBNbyhuLGUsdCxyLHMpe2lmKHI9PS0xKXJldHVybiExO2xldCBpPW4uc3RhdGUuZG9jLnJlc29sdmUocik7Zm9yKGxldCBvPWkuZGVwdGgrMTtvPjA7by0tKWlmKG4uc29tZVByb3AoZSxsPT5vPmkuZGVwdGg/bChuLHQsaS5ub2RlQWZ0ZXIsaS5iZWZvcmUobykscywhMCk6bChuLHQsaS5ub2RlKG8pLGkuYmVmb3JlKG8pLHMsITEpKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBsbihuLGUsdCl7aWYobi5mb2N1c2VkfHxuLmZvY3VzKCksbi5zdGF0ZS5zZWxlY3Rpb24uZXEoZSkpcmV0dXJuO2xldCByPW4uc3RhdGUudHIuc2V0U2VsZWN0aW9uKGUpO3Iuc2V0TWV0YSgicG9pbnRlciIsITApLG4uZGlzcGF0Y2gocil9ZnVuY3Rpb24gY20obixlKXtpZihlPT0tMSlyZXR1cm4hMTtsZXQgdD1uLnN0YXRlLmRvYy5yZXNvbHZlKGUpLHI9dC5ub2RlQWZ0ZXI7cmV0dXJuIHImJnIuaXNBdG9tJiZOLmlzU2VsZWN0YWJsZShyKT8obG4obixuZXcgTih0KSksITApOiExfWZ1bmN0aW9uIHVtKG4sZSl7aWYoZT09LTEpcmV0dXJuITE7bGV0IHQ9bi5zdGF0ZS5zZWxlY3Rpb24scixzO3QgaW5zdGFuY2VvZiBOJiYocj10Lm5vZGUpO2xldCBpPW4uc3RhdGUuZG9jLnJlc29sdmUoZSk7Zm9yKGxldCBvPWkuZGVwdGgrMTtvPjA7by0tKXtsZXQgbD1vPmkuZGVwdGg/aS5ub2RlQWZ0ZXI6aS5ub2RlKG8pO2lmKE4uaXNTZWxlY3RhYmxlKGwpKXtyJiZ0LiRmcm9tLmRlcHRoPjAmJm8+PXQuJGZyb20uZGVwdGgmJmkuYmVmb3JlKHQuJGZyb20uZGVwdGgrMSk9PXQuJGZyb20ucG9zP3M9aS5iZWZvcmUodC4kZnJvbS5kZXB0aCk6cz1pLmJlZm9yZShvKTticmVha319cmV0dXJuIHMhPW51bGw/KGxuKG4sTi5jcmVhdGUobi5zdGF0ZS5kb2MscykpLCEwKTohMX1mdW5jdGlvbiBkbShuLGUsdCxyLHMpe3JldHVybiBNbyhuLCJoYW5kbGVDbGlja09uIixlLHQscil8fG4uc29tZVByb3AoImhhbmRsZUNsaWNrIixpPT5pKG4sZSxyKSl8fChzP3VtKG4sdCk6Y20obix0KSl9ZnVuY3Rpb24gaG0obixlLHQscil7cmV0dXJuIE1vKG4sImhhbmRsZURvdWJsZUNsaWNrT24iLGUsdCxyKXx8bi5zb21lUHJvcCgiaGFuZGxlRG91YmxlQ2xpY2siLHM9PnMobixlLHIpKX1mdW5jdGlvbiBmbShuLGUsdCxyKXtyZXR1cm4gTW8obiwiaGFuZGxlVHJpcGxlQ2xpY2tPbiIsZSx0LHIpfHxuLnNvbWVQcm9wKCJoYW5kbGVUcmlwbGVDbGljayIscz0+cyhuLGUscikpfHxwbShuLHQscil9ZnVuY3Rpb24gcG0obixlLHQpe2lmKHQuYnV0dG9uIT0wKXJldHVybiExO2xldCByPW4uc3RhdGUuZG9jO2lmKGU9PS0xKXJldHVybiByLmlubGluZUNvbnRlbnQ/KGxuKG4sRC5jcmVhdGUociwwLHIuY29udGVudC5zaXplKSksITApOiExO2xldCBzPXIucmVzb2x2ZShlKTtmb3IobGV0IGk9cy5kZXB0aCsxO2k+MDtpLS0pe2xldCBvPWk+cy5kZXB0aD9zLm5vZGVBZnRlcjpzLm5vZGUoaSksbD1zLmJlZm9yZShpKTtpZihvLmlubGluZUNvbnRlbnQpbG4obixELmNyZWF0ZShyLGwrMSxsKzErby5jb250ZW50LnNpemUpKTtlbHNlIGlmKE4uaXNTZWxlY3RhYmxlKG8pKWxuKG4sTi5jcmVhdGUocixsKSk7ZWxzZSBjb250aW51ZTtyZXR1cm4hMH19ZnVuY3Rpb24gRW8obil7cmV0dXJuIGpyKG4pfWNvbnN0IHp1PUllPyJtZXRhS2V5IjoiY3RybEtleSI7d2UubW91c2Vkb3duPShuLGUpPT57bGV0IHQ9ZTtuLmlucHV0LnNoaWZ0S2V5PXQuc2hpZnRLZXk7bGV0IHI9RW8obikscz1EYXRlLm5vdygpLGk9InNpbmdsZUNsaWNrIjtzLW4uaW5wdXQubGFzdENsaWNrLnRpbWU8NTAwJiZhbSh0LG4uaW5wdXQubGFzdENsaWNrKSYmIXRbenVdJiZuLmlucHV0Lmxhc3RDbGljay5idXR0b249PXQuYnV0dG9uJiYobi5pbnB1dC5sYXN0Q2xpY2sudHlwZT09InNpbmdsZUNsaWNrIj9pPSJkb3VibGVDbGljayI6bi5pbnB1dC5sYXN0Q2xpY2sudHlwZT09ImRvdWJsZUNsaWNrIiYmKGk9InRyaXBsZUNsaWNrIikpLG4uaW5wdXQubGFzdENsaWNrPXt0aW1lOnMseDp0LmNsaWVudFgseTp0LmNsaWVudFksdHlwZTppLGJ1dHRvbjp0LmJ1dHRvbn07bGV0IG89bi5wb3NBdENvb3Jkcyh6cyh0KSk7byYmKGk9PSJzaW5nbGVDbGljayI/KG4uaW5wdXQubW91c2VEb3duJiZuLmlucHV0Lm1vdXNlRG93bi5kb25lKCksbi5pbnB1dC5tb3VzZURvd249bmV3IG1tKG4sbyx0LCEhcikpOihpPT0iZG91YmxlQ2xpY2siP2htOmZtKShuLG8ucG9zLG8uaW5zaWRlLHQpP3QucHJldmVudERlZmF1bHQoKTp2dChuLCJwb2ludGVyIikpfTtjbGFzcyBtbXtjb25zdHJ1Y3RvcihlLHQscixzKXt0aGlzLnZpZXc9ZSx0aGlzLnBvcz10LHRoaXMuZXZlbnQ9cix0aGlzLmZsdXNoZWQ9cyx0aGlzLmRlbGF5ZWRTZWxlY3Rpb25TeW5jPSExLHRoaXMubWlnaHREcmFnPW51bGwsdGhpcy5zdGFydERvYz1lLnN0YXRlLmRvYyx0aGlzLnNlbGVjdE5vZGU9ISFyW3p1XSx0aGlzLmFsbG93RGVmYXVsdD1yLnNoaWZ0S2V5O2xldCBpLG87aWYodC5pbnNpZGU+LTEpaT1lLnN0YXRlLmRvYy5ub2RlQXQodC5pbnNpZGUpLG89dC5pbnNpZGU7ZWxzZXtsZXQgdT1lLnN0YXRlLmRvYy5yZXNvbHZlKHQucG9zKTtpPXUucGFyZW50LG89dS5kZXB0aD91LmJlZm9yZSgpOjB9Y29uc3QgbD1zP251bGw6ci50YXJnZXQsYT1sP2UuZG9jVmlldy5uZWFyZXN0RGVzYyhsLCEwKTpudWxsO3RoaXMudGFyZ2V0PWEmJmEubm9kZURPTS5ub2RlVHlwZT09MT9hLm5vZGVET006bnVsbDtsZXR7c2VsZWN0aW9uOmN9PWUuc3RhdGU7ci5idXR0b249PTAmJihpLnR5cGUuc3BlYy5kcmFnZ2FibGUmJmkudHlwZS5zcGVjLnNlbGVjdGFibGUhPT0hMXx8YyBpbnN0YW5jZW9mIE4mJmMuZnJvbTw9byYmYy50bz5vKSYmKHRoaXMubWlnaHREcmFnPXtub2RlOmkscG9zOm8sYWRkQXR0cjohISh0aGlzLnRhcmdldCYmIXRoaXMudGFyZ2V0LmRyYWdnYWJsZSksc2V0VW5lZGl0YWJsZTohISh0aGlzLnRhcmdldCYmUGUmJiF0aGlzLnRhcmdldC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRFZGl0YWJsZSIpKX0pLHRoaXMudGFyZ2V0JiZ0aGlzLm1pZ2h0RHJhZyYmKHRoaXMubWlnaHREcmFnLmFkZEF0dHJ8fHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUpJiYodGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKSx0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyJiYodGhpcy50YXJnZXQuZHJhZ2dhYmxlPSEwKSx0aGlzLm1pZ2h0RHJhZy5zZXRVbmVkaXRhYmxlJiZzZXRUaW1lb3V0KCgpPT57dGhpcy52aWV3LmlucHV0Lm1vdXNlRG93bj09dGhpcyYmdGhpcy50YXJnZXQuc2V0QXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiLCJmYWxzZSIpfSwyMCksdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCkpLGUucm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnVwPXRoaXMudXAuYmluZCh0aGlzKSksZS5yb290LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3ZlPXRoaXMubW92ZS5iaW5kKHRoaXMpKSx2dChlLCJwb2ludGVyIil9ZG9uZSgpe3RoaXMudmlldy5yb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMudXApLHRoaXMudmlldy5yb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3ZlKSx0aGlzLm1pZ2h0RHJhZyYmdGhpcy50YXJnZXQmJih0aGlzLnZpZXcuZG9tT2JzZXJ2ZXIuc3RvcCgpLHRoaXMubWlnaHREcmFnLmFkZEF0dHImJnRoaXMudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgiZHJhZ2dhYmxlIiksdGhpcy5taWdodERyYWcuc2V0VW5lZGl0YWJsZSYmdGhpcy50YXJnZXQucmVtb3ZlQXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiKSx0aGlzLnZpZXcuZG9tT2JzZXJ2ZXIuc3RhcnQoKSksdGhpcy5kZWxheWVkU2VsZWN0aW9uU3luYyYmc2V0VGltZW91dCgoKT0+bHQodGhpcy52aWV3KSksdGhpcy52aWV3LmlucHV0Lm1vdXNlRG93bj1udWxsfXVwKGUpe2lmKHRoaXMuZG9uZSgpLCF0aGlzLnZpZXcuZG9tLmNvbnRhaW5zKGUudGFyZ2V0KSlyZXR1cm47bGV0IHQ9dGhpcy5wb3M7dGhpcy52aWV3LnN0YXRlLmRvYyE9dGhpcy5zdGFydERvYyYmKHQ9dGhpcy52aWV3LnBvc0F0Q29vcmRzKHpzKGUpKSksdGhpcy51cGRhdGVBbGxvd0RlZmF1bHQoZSksdGhpcy5hbGxvd0RlZmF1bHR8fCF0P3Z0KHRoaXMudmlldywicG9pbnRlciIpOmRtKHRoaXMudmlldyx0LnBvcyx0Lmluc2lkZSxlLHRoaXMuc2VsZWN0Tm9kZSk/ZS5wcmV2ZW50RGVmYXVsdCgpOmUuYnV0dG9uPT0wJiYodGhpcy5mbHVzaGVkfHxrZSYmdGhpcy5taWdodERyYWcmJiF0aGlzLm1pZ2h0RHJhZy5ub2RlLmlzQXRvbXx8bWUmJiF0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLnZpc2libGUmJk1hdGgubWluKE1hdGguYWJzKHQucG9zLXRoaXMudmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSksTWF0aC5hYnModC5wb3MtdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi50bykpPD0yKT8obG4odGhpcy52aWV3LEkubmVhcih0aGlzLnZpZXcuc3RhdGUuZG9jLnJlc29sdmUodC5wb3MpKSksZS5wcmV2ZW50RGVmYXVsdCgpKTp2dCh0aGlzLnZpZXcsInBvaW50ZXIiKX1tb3ZlKGUpe3RoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGUpLHZ0KHRoaXMudmlldywicG9pbnRlciIpLGUuYnV0dG9ucz09MCYmdGhpcy5kb25lKCl9dXBkYXRlQWxsb3dEZWZhdWx0KGUpeyF0aGlzLmFsbG93RGVmYXVsdCYmKE1hdGguYWJzKHRoaXMuZXZlbnQueC1lLmNsaWVudFgpPjR8fE1hdGguYWJzKHRoaXMuZXZlbnQueS1lLmNsaWVudFkpPjQpJiYodGhpcy5hbGxvd0RlZmF1bHQ9ITApfX13ZS50b3VjaHN0YXJ0PW49PntuLmlucHV0Lmxhc3RUb3VjaD1EYXRlLm5vdygpLEVvKG4pLHZ0KG4sInBvaW50ZXIiKX07d2UudG91Y2htb3ZlPW49PntuLmlucHV0Lmxhc3RUb3VjaD1EYXRlLm5vdygpLHZ0KG4sInBvaW50ZXIiKX07d2UuY29udGV4dG1lbnU9bj0+RW8obik7ZnVuY3Rpb24gJHUobixlKXtyZXR1cm4gbi5jb21wb3Npbmc/ITA6a2UmJk1hdGguYWJzKGUudGltZVN0YW1wLW4uaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0KTw1MDA/KG4uaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0PS0yZTgsITApOiExfWNvbnN0IGdtPXJ0PzVlMzotMTt2ZS5jb21wb3NpdGlvbnN0YXJ0PXZlLmNvbXBvc2l0aW9udXBkYXRlPW49PntpZighbi5jb21wb3Npbmcpe24uZG9tT2JzZXJ2ZXIuZmx1c2goKTtsZXR7c3RhdGU6ZX09bix0PWUuc2VsZWN0aW9uLiR0bztpZihlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEQmJihlLnN0b3JlZE1hcmtzfHwhdC50ZXh0T2Zmc2V0JiZ0LnBhcmVudE9mZnNldCYmdC5ub2RlQmVmb3JlLm1hcmtzLnNvbWUocj0+ci50eXBlLnNwZWMuaW5jbHVzaXZlPT09ITEpfHxtZSYmcHUmJnltKG4pKSluLm1hcmtDdXJzb3I9bi5zdGF0ZS5zdG9yZWRNYXJrc3x8dC5tYXJrcygpLGpyKG4sITApLG4ubWFya0N1cnNvcj1udWxsO2Vsc2UgaWYoanIobiwhZS5zZWxlY3Rpb24uZW1wdHkpLFBlJiZlLnNlbGVjdGlvbi5lbXB0eSYmdC5wYXJlbnRPZmZzZXQmJiF0LnRleHRPZmZzZXQmJnQubm9kZUJlZm9yZS5tYXJrcy5sZW5ndGgpe2xldCByPW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtmb3IobGV0IHM9ci5mb2N1c05vZGUsaT1yLmZvY3VzT2Zmc2V0O3MmJnMubm9kZVR5cGU9PTEmJmkhPTA7KXtsZXQgbz1pPDA/cy5sYXN0Q2hpbGQ6cy5jaGlsZE5vZGVzW2ktMV07aWYoIW8pYnJlYWs7aWYoby5ub2RlVHlwZT09Myl7bGV0IGw9bi5kb21TZWxlY3Rpb24oKTtsJiZsLmNvbGxhcHNlKG8sby5ub2RlVmFsdWUubGVuZ3RoKTticmVha31lbHNlIHM9byxpPS0xfX1uLmlucHV0LmNvbXBvc2luZz0hMH1CdShuLGdtKX07ZnVuY3Rpb24geW0obil7bGV0e2ZvY3VzTm9kZTplLGZvY3VzT2Zmc2V0OnR9PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZighZXx8ZS5ub2RlVHlwZSE9MXx8dD49ZS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm4hMTtsZXQgcj1lLmNoaWxkTm9kZXNbdF07cmV0dXJuIHIubm9kZVR5cGU9PTEmJnIuY29udGVudEVkaXRhYmxlPT0iZmFsc2UifXZlLmNvbXBvc2l0aW9uZW5kPShuLGUpPT57bi5jb21wb3NpbmcmJihuLmlucHV0LmNvbXBvc2luZz0hMSxuLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD1lLnRpbWVTdGFtcCxuLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9bi5kb21PYnNlcnZlci5wZW5kaW5nUmVjb3JkcygpLmxlbmd0aD9uLmlucHV0LmNvbXBvc2l0aW9uSUQ6MCxuLmlucHV0LmNvbXBvc2l0aW9uTm9kZT1udWxsLG4uaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb24/bi5kb21PYnNlcnZlci5mb3JjZUZsdXNoKCk6bi5pbnB1dC5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5uLmRvbU9ic2VydmVyLmZsdXNoKCkpLG4uaW5wdXQuY29tcG9zaXRpb25JRCsrLEJ1KG4sMjApKX07ZnVuY3Rpb24gQnUobixlKXtjbGVhclRpbWVvdXQobi5pbnB1dC5jb21wb3NpbmdUaW1lb3V0KSxlPi0xJiYobi5pbnB1dC5jb21wb3NpbmdUaW1lb3V0PXNldFRpbWVvdXQoKCk9PmpyKG4pLGUpKX1mdW5jdGlvbiBfdShuKXtmb3Iobi5jb21wb3NpbmcmJihuLmlucHV0LmNvbXBvc2luZz0hMSxuLmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdD1ibSgpKTtuLmlucHV0LmNvbXBvc2l0aW9uTm9kZXMubGVuZ3RoPjA7KW4uaW5wdXQuY29tcG9zaXRpb25Ob2Rlcy5wb3AoKS5tYXJrUGFyZW50c0RpcnR5KCl9ZnVuY3Rpb24ga20obil7bGV0IGU9bi5kb21TZWxlY3Rpb25SYW5nZSgpO2lmKCFlLmZvY3VzTm9kZSlyZXR1cm4gbnVsbDtsZXQgdD11cChlLmZvY3VzTm9kZSxlLmZvY3VzT2Zmc2V0KSxyPWRwKGUuZm9jdXNOb2RlLGUuZm9jdXNPZmZzZXQpO2lmKHQmJnImJnQhPXIpe2xldCBzPXIucG1WaWV3RGVzYyxpPW4uZG9tT2JzZXJ2ZXIubGFzdENoYW5nZWRUZXh0Tm9kZTtpZih0PT1pfHxyPT1pKXJldHVybiBpO2lmKCFzfHwhcy5pc1RleHQoci5ub2RlVmFsdWUpKXJldHVybiByO2lmKG4uaW5wdXQuY29tcG9zaXRpb25Ob2RlPT1yKXtsZXQgbz10LnBtVmlld0Rlc2M7aWYoISghb3x8IW8uaXNUZXh0KHQubm9kZVZhbHVlKSkpcmV0dXJuIHJ9fXJldHVybiB0fHxyfWZ1bmN0aW9uIGJtKCl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIG4uaW5pdEV2ZW50KCJldmVudCIsITAsITApLG4udGltZVN0YW1wfWZ1bmN0aW9uIGpyKG4sZT0hMSl7aWYoIShydCYmbi5kb21PYnNlcnZlci5mbHVzaGluZ1Nvb24+PTApKXtpZihuLmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKSxfdShuKSxlfHxuLmRvY1ZpZXcmJm4uZG9jVmlldy5kaXJ0eSl7bGV0IHQ9dm8obikscj1uLnN0YXRlLnNlbGVjdGlvbjtyZXR1cm4gdCYmIXQuZXEocik/bi5kaXNwYXRjaChuLnN0YXRlLnRyLnNldFNlbGVjdGlvbih0KSk6KG4ubWFya0N1cnNvcnx8ZSkmJiFyLiRmcm9tLm5vZGUoci4kZnJvbS5zaGFyZWREZXB0aChyLnRvKSkuaW5saW5lQ29udGVudD9uLmRpc3BhdGNoKG4uc3RhdGUudHIuZGVsZXRlU2VsZWN0aW9uKCkpOm4udXBkYXRlU3RhdGUobi5zdGF0ZSksITB9cmV0dXJuITF9fWZ1bmN0aW9uIHhtKG4sZSl7aWYoIW4uZG9tLnBhcmVudE5vZGUpcmV0dXJuO2xldCB0PW4uZG9tLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO3QuYXBwZW5kQ2hpbGQoZSksdC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IC0xMDAwMHB4OyB0b3A6IDEwcHgiO2xldCByPWdldFNlbGVjdGlvbigpLHM9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtzLnNlbGVjdE5vZGVDb250ZW50cyhlKSxuLmRvbS5ibHVyKCksci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKHMpLHNldFRpbWVvdXQoKCk9Pnt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSxuLmZvY3VzKCl9LDUwKX1jb25zdCBRbj1NZSYmU3Q8MTV8fGRuJiZtcDw2MDQ7d2UuY29weT12ZS5jdXQ9KG4sZSk9PntsZXQgdD1lLHI9bi5zdGF0ZS5zZWxlY3Rpb24scz10LnR5cGU9PSJjdXQiO2lmKHIuZW1wdHkpcmV0dXJuO2xldCBpPVFuP251bGw6dC5jbGlwYm9hcmREYXRhLG89ci5jb250ZW50KCkse2RvbTpsLHRleHQ6YX09Q28obixvKTtpPyh0LnByZXZlbnREZWZhdWx0KCksaS5jbGVhckRhdGEoKSxpLnNldERhdGEoInRleHQvaHRtbCIsbC5pbm5lckhUTUwpLGkuc2V0RGF0YSgidGV4dC9wbGFpbiIsYSkpOnhtKG4sbCkscyYmbi5kaXNwYXRjaChuLnN0YXRlLnRyLmRlbGV0ZVNlbGVjdGlvbigpLnNjcm9sbEludG9WaWV3KCkuc2V0TWV0YSgidWlFdmVudCIsImN1dCIpKX07ZnVuY3Rpb24gd20obil7cmV0dXJuIG4ub3BlblN0YXJ0PT0wJiZuLm9wZW5FbmQ9PTAmJm4uY29udGVudC5jaGlsZENvdW50PT0xP24uY29udGVudC5maXJzdENoaWxkOm51bGx9ZnVuY3Rpb24gdm0obixlKXtpZighbi5kb20ucGFyZW50Tm9kZSlyZXR1cm47bGV0IHQ9bi5pbnB1dC5zaGlmdEtleXx8bi5zdGF0ZS5zZWxlY3Rpb24uJGZyb20ucGFyZW50LnR5cGUuc3BlYy5jb2RlLHI9bi5kb20ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQ/InRleHRhcmVhIjoiZGl2IikpO3R8fChyLmNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIpLHIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGZpeGVkOyBsZWZ0OiAtMTAwMDBweDsgdG9wOiAxMHB4IixyLmZvY3VzKCk7bGV0IHM9bi5pbnB1dC5zaGlmdEtleSYmbi5pbnB1dC5sYXN0S2V5Q29kZSE9NDU7c2V0VGltZW91dCgoKT0+e24uZm9jdXMoKSxyLnBhcmVudE5vZGUmJnIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSx0P1huKG4sci52YWx1ZSxudWxsLHMsZSk6WG4obixyLnRleHRDb250ZW50LHIuaW5uZXJIVE1MLHMsZSl9LDUwKX1mdW5jdGlvbiBYbihuLGUsdCxyLHMpe2xldCBpPU51KG4sZSx0LHIsbi5zdGF0ZS5zZWxlY3Rpb24uJGZyb20pO2lmKG4uc29tZVByb3AoImhhbmRsZVBhc3RlIixhPT5hKG4scyxpfHxFLmVtcHR5KSkpcmV0dXJuITA7aWYoIWkpcmV0dXJuITE7bGV0IG89d20oaSksbD1vP24uc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgobyxyKTpuLnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb24oaSk7cmV0dXJuIG4uZGlzcGF0Y2gobC5zY3JvbGxJbnRvVmlldygpLnNldE1ldGEoInBhc3RlIiwhMCkuc2V0TWV0YSgidWlFdmVudCIsInBhc3RlIikpLCEwfWZ1bmN0aW9uIEh1KG4pe2xldCBlPW4uZ2V0RGF0YSgidGV4dC9wbGFpbiIpfHxuLmdldERhdGEoIlRleHQiKTtpZihlKXJldHVybiBlO2xldCB0PW4uZ2V0RGF0YSgidGV4dC91cmktbGlzdCIpO3JldHVybiB0P3QucmVwbGFjZSgvXHI/XG4vZywiICIpOiIifXZlLnBhc3RlPShuLGUpPT57bGV0IHQ9ZTtpZihuLmNvbXBvc2luZyYmIXJ0KXJldHVybjtsZXQgcj1Rbj9udWxsOnQuY2xpcGJvYXJkRGF0YSxzPW4uaW5wdXQuc2hpZnRLZXkmJm4uaW5wdXQubGFzdEtleUNvZGUhPTQ1O3ImJlhuKG4sSHUociksci5nZXREYXRhKCJ0ZXh0L2h0bWwiKSxzLHQpP3QucHJldmVudERlZmF1bHQoKTp2bShuLHQpfTtjbGFzcyBGdXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5zbGljZT1lLHRoaXMubW92ZT10LHRoaXMubm9kZT1yfX1jb25zdCBTbT1JZT8iYWx0S2V5IjoiY3RybEtleSI7ZnVuY3Rpb24gVnUobixlKXtsZXQgdDtyZXR1cm4gbi5zb21lUHJvcCgiZHJhZ0NvcGllcyIscj0+e3Q9dHx8cihlKX0pLHQhPW51bGw/IXQ6IWVbU21dfXdlLmRyYWdzdGFydD0obixlKT0+e2xldCB0PWUscj1uLmlucHV0Lm1vdXNlRG93bjtpZihyJiZyLmRvbmUoKSwhdC5kYXRhVHJhbnNmZXIpcmV0dXJuO2xldCBzPW4uc3RhdGUuc2VsZWN0aW9uLGk9cy5lbXB0eT9udWxsOm4ucG9zQXRDb29yZHMoenModCkpLG87aWYoIShpJiZpLnBvcz49cy5mcm9tJiZpLnBvczw9KHMgaW5zdGFuY2VvZiBOP3MudG8tMTpzLnRvKSkpe2lmKHImJnIubWlnaHREcmFnKW89Ti5jcmVhdGUobi5zdGF0ZS5kb2Msci5taWdodERyYWcucG9zKTtlbHNlIGlmKHQudGFyZ2V0JiZ0LnRhcmdldC5ub2RlVHlwZT09MSl7bGV0IGQ9bi5kb2NWaWV3Lm5lYXJlc3REZXNjKHQudGFyZ2V0LCEwKTtkJiZkLm5vZGUudHlwZS5zcGVjLmRyYWdnYWJsZSYmZCE9bi5kb2NWaWV3JiYobz1OLmNyZWF0ZShuLnN0YXRlLmRvYyxkLnBvc0JlZm9yZSkpfX1sZXQgbD0ob3x8bi5zdGF0ZS5zZWxlY3Rpb24pLmNvbnRlbnQoKSx7ZG9tOmEsdGV4dDpjLHNsaWNlOnV9PUNvKG4sbCk7KCF0LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGh8fCFtZXx8ZnU+MTIwKSYmdC5kYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCksdC5kYXRhVHJhbnNmZXIuc2V0RGF0YShRbj8iVGV4dCI6InRleHQvaHRtbCIsYS5pbm5lckhUTUwpLHQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ9ImNvcHlNb3ZlIixRbnx8dC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsYyksbi5kcmFnZ2luZz1uZXcgRnUodSxWdShuLHQpLG8pfTt3ZS5kcmFnZW5kPW49PntsZXQgZT1uLmRyYWdnaW5nO3dpbmRvdy5zZXRUaW1lb3V0KCgpPT57bi5kcmFnZ2luZz09ZSYmKG4uZHJhZ2dpbmc9bnVsbCl9LDUwKX07dmUuZHJhZ292ZXI9dmUuZHJhZ2VudGVyPShuLGUpPT5lLnByZXZlbnREZWZhdWx0KCk7dmUuZHJvcD0obixlKT0+e3RyeXtDbShuLGUsbi5kcmFnZ2luZyl9ZmluYWxseXtuLmRyYWdnaW5nPW51bGx9fTtmdW5jdGlvbiBDbShuLGUsdCl7aWYoIWUuZGF0YVRyYW5zZmVyKXJldHVybjtsZXQgcj1uLnBvc0F0Q29vcmRzKHpzKGUpKTtpZighcilyZXR1cm47bGV0IHM9bi5zdGF0ZS5kb2MucmVzb2x2ZShyLnBvcyksaT10JiZ0LnNsaWNlO2k/bi5zb21lUHJvcCgidHJhbnNmb3JtUGFzdGVkIixmPT57aT1mKGksbiwhMSl9KTppPU51KG4sSHUoZS5kYXRhVHJhbnNmZXIpLFFuP251bGw6ZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dC9odG1sIiksITEscyk7bGV0IG89ISEodCYmVnUobixlKSk7aWYobi5zb21lUHJvcCgiaGFuZGxlRHJvcCIsZj0+ZihuLGUsaXx8RS5lbXB0eSxvKSkpe2UucHJldmVudERlZmF1bHQoKTtyZXR1cm59aWYoIWkpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKTtsZXQgbD1pP3FjKG4uc3RhdGUuZG9jLHMucG9zLGkpOnMucG9zO2w9PW51bGwmJihsPXMucG9zKTtsZXQgYT1uLnN0YXRlLnRyO2lmKG8pe2xldHtub2RlOmZ9PXQ7Zj9mLnJlcGxhY2UoYSk6YS5kZWxldGVTZWxlY3Rpb24oKX1sZXQgYz1hLm1hcHBpbmcubWFwKGwpLHU9aS5vcGVuU3RhcnQ9PTAmJmkub3BlbkVuZD09MCYmaS5jb250ZW50LmNoaWxkQ291bnQ9PTEsZD1hLmRvYztpZih1P2EucmVwbGFjZVJhbmdlV2l0aChjLGMsaS5jb250ZW50LmZpcnN0Q2hpbGQpOmEucmVwbGFjZVJhbmdlKGMsYyxpKSxhLmRvYy5lcShkKSlyZXR1cm47bGV0IGg9YS5kb2MucmVzb2x2ZShjKTtpZih1JiZOLmlzU2VsZWN0YWJsZShpLmNvbnRlbnQuZmlyc3RDaGlsZCkmJmgubm9kZUFmdGVyJiZoLm5vZGVBZnRlci5zYW1lTWFya3VwKGkuY29udGVudC5maXJzdENoaWxkKSlhLnNldFNlbGVjdGlvbihuZXcgTihoKSk7ZWxzZXtsZXQgZj1hLm1hcHBpbmcubWFwKGwpO2EubWFwcGluZy5tYXBzW2EubWFwcGluZy5tYXBzLmxlbmd0aC0xXS5mb3JFYWNoKChwLG0sZyx5KT0+Zj15KSxhLnNldFNlbGVjdGlvbihTbyhuLGgsYS5kb2MucmVzb2x2ZShmKSkpfW4uZm9jdXMoKSxuLmRpc3BhdGNoKGEuc2V0TWV0YSgidWlFdmVudCIsImRyb3AiKSl9d2UuZm9jdXM9bj0+e24uaW5wdXQubGFzdEZvY3VzPURhdGUubm93KCksbi5mb2N1c2VkfHwobi5kb21PYnNlcnZlci5zdG9wKCksbi5kb20uY2xhc3NMaXN0LmFkZCgiUHJvc2VNaXJyb3ItZm9jdXNlZCIpLG4uZG9tT2JzZXJ2ZXIuc3RhcnQoKSxuLmZvY3VzZWQ9ITAsc2V0VGltZW91dCgoKT0+e24uZG9jVmlldyYmbi5oYXNGb2N1cygpJiYhbi5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmVxKG4uZG9tU2VsZWN0aW9uUmFuZ2UoKSkmJmx0KG4pfSwyMCkpfTt3ZS5ibHVyPShuLGUpPT57bGV0IHQ9ZTtuLmZvY3VzZWQmJihuLmRvbU9ic2VydmVyLnN0b3AoKSxuLmRvbS5jbGFzc0xpc3QucmVtb3ZlKCJQcm9zZU1pcnJvci1mb2N1c2VkIiksbi5kb21PYnNlcnZlci5zdGFydCgpLHQucmVsYXRlZFRhcmdldCYmbi5kb20uY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KSYmbi5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmNsZWFyKCksbi5mb2N1c2VkPSExKX07d2UuYmVmb3JlaW5wdXQ9KG4sZSk9PntpZihtZSYmcnQmJmUuaW5wdXRUeXBlPT0iZGVsZXRlQ29udGVudEJhY2t3YXJkIil7bi5kb21PYnNlcnZlci5mbHVzaFNvb24oKTtsZXR7ZG9tQ2hhbmdlQ291bnQ6cn09bi5pbnB1dDtzZXRUaW1lb3V0KCgpPT57aWYobi5pbnB1dC5kb21DaGFuZ2VDb3VudCE9cnx8KG4uZG9tLmJsdXIoKSxuLmZvY3VzKCksbi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsaT0+aShuLFJ0KDgsIkJhY2tzcGFjZSIpKSkpKXJldHVybjtsZXR7JGN1cnNvcjpzfT1uLnN0YXRlLnNlbGVjdGlvbjtzJiZzLnBvcz4wJiZuLmRpc3BhdGNoKG4uc3RhdGUudHIuZGVsZXRlKHMucG9zLTEscy5wb3MpLnNjcm9sbEludG9WaWV3KCkpfSw1MCl9fTtmb3IobGV0IG4gaW4gdmUpd2Vbbl09dmVbbl07ZnVuY3Rpb24gWW4obixlKXtpZihuPT1lKXJldHVybiEwO2ZvcihsZXQgdCBpbiBuKWlmKG5bdF0hPT1lW3RdKXJldHVybiExO2ZvcihsZXQgdCBpbiBlKWlmKCEodCBpbiBuKSlyZXR1cm4hMTtyZXR1cm4hMH1jbGFzcyBxcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMudG9ET009ZSx0aGlzLnNwZWM9dHx8QnQsdGhpcy5zaWRlPXRoaXMuc3BlYy5zaWRlfHwwfW1hcChlLHQscixzKXtsZXR7cG9zOmksZGVsZXRlZDpvfT1lLm1hcFJlc3VsdCh0LmZyb20rcyx0aGlzLnNpZGU8MD8tMToxKTtyZXR1cm4gbz9udWxsOm5ldyB5ZShpLXIsaS1yLHRoaXMpfXZhbGlkKCl7cmV0dXJuITB9ZXEoZSl7cmV0dXJuIHRoaXM9PWV8fGUgaW5zdGFuY2VvZiBxciYmKHRoaXMuc3BlYy5rZXkmJnRoaXMuc3BlYy5rZXk9PWUuc3BlYy5rZXl8fHRoaXMudG9ET009PWUudG9ET00mJlluKHRoaXMuc3BlYyxlLnNwZWMpKX1kZXN0cm95KGUpe3RoaXMuc3BlYy5kZXN0cm95JiZ0aGlzLnNwZWMuZGVzdHJveShlKX19Y2xhc3MgVHR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fEJ0fW1hcChlLHQscixzKXtsZXQgaT1lLm1hcCh0LmZyb20rcyx0aGlzLnNwZWMuaW5jbHVzaXZlU3RhcnQ/LTE6MSktcixvPWUubWFwKHQudG8rcyx0aGlzLnNwZWMuaW5jbHVzaXZlRW5kPzE6LTEpLXI7cmV0dXJuIGk+PW8/bnVsbDpuZXcgeWUoaSxvLHRoaXMpfXZhbGlkKGUsdCl7cmV0dXJuIHQuZnJvbTx0LnRvfWVxKGUpe3JldHVybiB0aGlzPT1lfHxlIGluc3RhbmNlb2YgVHQmJlluKHRoaXMuYXR0cnMsZS5hdHRycykmJlluKHRoaXMuc3BlYyxlLnNwZWMpfXN0YXRpYyBpcyhlKXtyZXR1cm4gZS50eXBlIGluc3RhbmNlb2YgVHR9ZGVzdHJveSgpe319Y2xhc3MgQW97Y29uc3RydWN0b3IoZSx0KXt0aGlzLmF0dHJzPWUsdGhpcy5zcGVjPXR8fEJ0fW1hcChlLHQscixzKXtsZXQgaT1lLm1hcFJlc3VsdCh0LmZyb20rcywxKTtpZihpLmRlbGV0ZWQpcmV0dXJuIG51bGw7bGV0IG89ZS5tYXBSZXN1bHQodC50bytzLC0xKTtyZXR1cm4gby5kZWxldGVkfHxvLnBvczw9aS5wb3M/bnVsbDpuZXcgeWUoaS5wb3MtcixvLnBvcy1yLHRoaXMpfXZhbGlkKGUsdCl7bGV0e2luZGV4OnIsb2Zmc2V0OnN9PWUuY29udGVudC5maW5kSW5kZXgodC5mcm9tKSxpO3JldHVybiBzPT10LmZyb20mJiEoaT1lLmNoaWxkKHIpKS5pc1RleHQmJnMraS5ub2RlU2l6ZT09dC50b31lcShlKXtyZXR1cm4gdGhpcz09ZXx8ZSBpbnN0YW5jZW9mIEFvJiZZbih0aGlzLmF0dHJzLGUuYXR0cnMpJiZZbih0aGlzLnNwZWMsZS5zcGVjKX1kZXN0cm95KCl7fX1jbGFzcyB5ZXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5mcm9tPWUsdGhpcy50bz10LHRoaXMudHlwZT1yfWNvcHkoZSx0KXtyZXR1cm4gbmV3IHllKGUsdCx0aGlzLnR5cGUpfWVxKGUsdD0wKXtyZXR1cm4gdGhpcy50eXBlLmVxKGUudHlwZSkmJnRoaXMuZnJvbSt0PT1lLmZyb20mJnRoaXMudG8rdD09ZS50b31tYXAoZSx0LHIpe3JldHVybiB0aGlzLnR5cGUubWFwKGUsdGhpcyx0LHIpfXN0YXRpYyB3aWRnZXQoZSx0LHIpe3JldHVybiBuZXcgeWUoZSxlLG5ldyBxcih0LHIpKX1zdGF0aWMgaW5saW5lKGUsdCxyLHMpe3JldHVybiBuZXcgeWUoZSx0LG5ldyBUdChyLHMpKX1zdGF0aWMgbm9kZShlLHQscixzKXtyZXR1cm4gbmV3IHllKGUsdCxuZXcgQW8ocixzKSl9Z2V0IHNwZWMoKXtyZXR1cm4gdGhpcy50eXBlLnNwZWN9Z2V0IGlubGluZSgpe3JldHVybiB0aGlzLnR5cGUgaW5zdGFuY2VvZiBUdH1nZXQgd2lkZ2V0KCl7cmV0dXJuIHRoaXMudHlwZSBpbnN0YW5jZW9mIHFyfX1jb25zdCB0bj1bXSxCdD17fTtjbGFzcyBZe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sb2NhbD1lLmxlbmd0aD9lOnRuLHRoaXMuY2hpbGRyZW49dC5sZW5ndGg/dDp0bn1zdGF0aWMgY3JlYXRlKGUsdCl7cmV0dXJuIHQubGVuZ3RoP1dyKHQsZSwwLEJ0KTpnZX1maW5kKGUsdCxyKXtsZXQgcz1bXTtyZXR1cm4gdGhpcy5maW5kSW5uZXIoZT8/MCx0Pz8xZTkscywwLHIpLHN9ZmluZElubmVyKGUsdCxyLHMsaSl7Zm9yKGxldCBvPTA7bzx0aGlzLmxvY2FsLmxlbmd0aDtvKyspe2xldCBsPXRoaXMubG9jYWxbb107bC5mcm9tPD10JiZsLnRvPj1lJiYoIWl8fGkobC5zcGVjKSkmJnIucHVzaChsLmNvcHkobC5mcm9tK3MsbC50bytzKSl9Zm9yKGxldCBvPTA7bzx0aGlzLmNoaWxkcmVuLmxlbmd0aDtvKz0zKWlmKHRoaXMuY2hpbGRyZW5bb108dCYmdGhpcy5jaGlsZHJlbltvKzFdPmUpe2xldCBsPXRoaXMuY2hpbGRyZW5bb10rMTt0aGlzLmNoaWxkcmVuW28rMl0uZmluZElubmVyKGUtbCx0LWwscixzK2wsaSl9fW1hcChlLHQscil7cmV0dXJuIHRoaXM9PWdlfHxlLm1hcHMubGVuZ3RoPT0wP3RoaXM6dGhpcy5tYXBJbm5lcihlLHQsMCwwLHJ8fEJ0KX1tYXBJbm5lcihlLHQscixzLGkpe2xldCBvO2ZvcihsZXQgbD0wO2w8dGhpcy5sb2NhbC5sZW5ndGg7bCsrKXtsZXQgYT10aGlzLmxvY2FsW2xdLm1hcChlLHIscyk7YSYmYS50eXBlLnZhbGlkKHQsYSk/KG98fChvPVtdKSkucHVzaChhKTppLm9uUmVtb3ZlJiZpLm9uUmVtb3ZlKHRoaXMubG9jYWxbbF0uc3BlYyl9cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP1RtKHRoaXMuY2hpbGRyZW4sb3x8W10sZSx0LHIscyxpKTpvP25ldyBZKG8uc29ydChfdCksdG4pOmdlfWFkZChlLHQpe3JldHVybiB0Lmxlbmd0aD90aGlzPT1nZT9ZLmNyZWF0ZShlLHQpOnRoaXMuYWRkSW5uZXIoZSx0LDApOnRoaXN9YWRkSW5uZXIoZSx0LHIpe2xldCBzLGk9MDtlLmZvckVhY2goKGwsYSk9PntsZXQgYz1hK3IsdTtpZih1PWp1KHQsbCxjKSl7Zm9yKHN8fChzPXRoaXMuY2hpbGRyZW4uc2xpY2UoKSk7aTxzLmxlbmd0aCYmc1tpXTxhOylpKz0zO3NbaV09PWE/c1tpKzJdPXNbaSsyXS5hZGRJbm5lcihsLHUsYysxKTpzLnNwbGljZShpLDAsYSxhK2wubm9kZVNpemUsV3IodSxsLGMrMSxCdCkpLGkrPTN9fSk7bGV0IG89VXUoaT9xdSh0KTp0LC1yKTtmb3IobGV0IGw9MDtsPG8ubGVuZ3RoO2wrKylvW2xdLnR5cGUudmFsaWQoZSxvW2xdKXx8by5zcGxpY2UobC0tLDEpO3JldHVybiBuZXcgWShvLmxlbmd0aD90aGlzLmxvY2FsLmNvbmNhdChvKS5zb3J0KF90KTp0aGlzLmxvY2FsLHN8fHRoaXMuY2hpbGRyZW4pfXJlbW92ZShlKXtyZXR1cm4gZS5sZW5ndGg9PTB8fHRoaXM9PWdlP3RoaXM6dGhpcy5yZW1vdmVJbm5lcihlLDApfXJlbW92ZUlubmVyKGUsdCl7bGV0IHI9dGhpcy5jaGlsZHJlbixzPXRoaXMubG9jYWw7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKz0zKXtsZXQgbyxsPXJbaV0rdCxhPXJbaSsxXSt0O2ZvcihsZXQgdT0wLGQ7dTxlLmxlbmd0aDt1KyspKGQ9ZVt1XSkmJmQuZnJvbT5sJiZkLnRvPGEmJihlW3VdPW51bGwsKG98fChvPVtdKSkucHVzaChkKSk7aWYoIW8pY29udGludWU7cj09dGhpcy5jaGlsZHJlbiYmKHI9dGhpcy5jaGlsZHJlbi5zbGljZSgpKTtsZXQgYz1yW2krMl0ucmVtb3ZlSW5uZXIobyxsKzEpO2MhPWdlP3JbaSsyXT1jOihyLnNwbGljZShpLDMpLGktPTMpfWlmKHMubGVuZ3RoKXtmb3IobGV0IGk9MCxvO2k8ZS5sZW5ndGg7aSsrKWlmKG89ZVtpXSlmb3IobGV0IGw9MDtsPHMubGVuZ3RoO2wrKylzW2xdLmVxKG8sdCkmJihzPT10aGlzLmxvY2FsJiYocz10aGlzLmxvY2FsLnNsaWNlKCkpLHMuc3BsaWNlKGwtLSwxKSl9cmV0dXJuIHI9PXRoaXMuY2hpbGRyZW4mJnM9PXRoaXMubG9jYWw/dGhpczpzLmxlbmd0aHx8ci5sZW5ndGg/bmV3IFkocyxyKTpnZX1mb3JDaGlsZChlLHQpe2lmKHRoaXM9PWdlKXJldHVybiB0aGlzO2lmKHQuaXNMZWFmKXJldHVybiBZLmVtcHR5O2xldCByLHM7Zm9yKGxldCBsPTA7bDx0aGlzLmNoaWxkcmVuLmxlbmd0aDtsKz0zKWlmKHRoaXMuY2hpbGRyZW5bbF0+PWUpe3RoaXMuY2hpbGRyZW5bbF09PWUmJihyPXRoaXMuY2hpbGRyZW5bbCsyXSk7YnJlYWt9bGV0IGk9ZSsxLG89aSt0LmNvbnRlbnQuc2l6ZTtmb3IobGV0IGw9MDtsPHRoaXMubG9jYWwubGVuZ3RoO2wrKyl7bGV0IGE9dGhpcy5sb2NhbFtsXTtpZihhLmZyb208byYmYS50bz5pJiZhLnR5cGUgaW5zdGFuY2VvZiBUdCl7bGV0IGM9TWF0aC5tYXgoaSxhLmZyb20pLWksdT1NYXRoLm1pbihvLGEudG8pLWk7Yzx1JiYoc3x8KHM9W10pKS5wdXNoKGEuY29weShjLHUpKX19aWYocyl7bGV0IGw9bmV3IFkocy5zb3J0KF90KSx0bik7cmV0dXJuIHI/bmV3IHl0KFtsLHJdKTpsfXJldHVybiByfHxnZX1lcShlKXtpZih0aGlzPT1lKXJldHVybiEwO2lmKCEoZSBpbnN0YW5jZW9mIFkpfHx0aGlzLmxvY2FsLmxlbmd0aCE9ZS5sb2NhbC5sZW5ndGh8fHRoaXMuY2hpbGRyZW4ubGVuZ3RoIT1lLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMubG9jYWwubGVuZ3RoO3QrKylpZighdGhpcy5sb2NhbFt0XS5lcShlLmxvY2FsW3RdKSlyZXR1cm4hMTtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrPTMpaWYodGhpcy5jaGlsZHJlblt0XSE9ZS5jaGlsZHJlblt0XXx8dGhpcy5jaGlsZHJlblt0KzFdIT1lLmNoaWxkcmVuW3QrMV18fCF0aGlzLmNoaWxkcmVuW3QrMl0uZXEoZS5jaGlsZHJlblt0KzJdKSlyZXR1cm4hMTtyZXR1cm4hMH1sb2NhbHMoZSl7cmV0dXJuIE9vKHRoaXMubG9jYWxzSW5uZXIoZSkpfWxvY2Fsc0lubmVyKGUpe2lmKHRoaXM9PWdlKXJldHVybiB0bjtpZihlLmlubGluZUNvbnRlbnR8fCF0aGlzLmxvY2FsLnNvbWUoVHQuaXMpKXJldHVybiB0aGlzLmxvY2FsO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8dGhpcy5sb2NhbC5sZW5ndGg7cisrKXRoaXMubG9jYWxbcl0udHlwZSBpbnN0YW5jZW9mIFR0fHx0LnB1c2godGhpcy5sb2NhbFtyXSk7cmV0dXJuIHR9Zm9yRWFjaFNldChlKXtlKHRoaXMpfX1ZLmVtcHR5PW5ldyBZKFtdLFtdKTtZLnJlbW92ZU92ZXJsYXA9T287Y29uc3QgZ2U9WS5lbXB0eTtjbGFzcyB5dHtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lbWJlcnM9ZX1tYXAoZSx0KXtjb25zdCByPXRoaXMubWVtYmVycy5tYXAocz0+cy5tYXAoZSx0LEJ0KSk7cmV0dXJuIHl0LmZyb20ocil9Zm9yQ2hpbGQoZSx0KXtpZih0LmlzTGVhZilyZXR1cm4gWS5lbXB0eTtsZXQgcj1bXTtmb3IobGV0IHM9MDtzPHRoaXMubWVtYmVycy5sZW5ndGg7cysrKXtsZXQgaT10aGlzLm1lbWJlcnNbc10uZm9yQ2hpbGQoZSx0KTtpIT1nZSYmKGkgaW5zdGFuY2VvZiB5dD9yPXIuY29uY2F0KGkubWVtYmVycyk6ci5wdXNoKGkpKX1yZXR1cm4geXQuZnJvbShyKX1lcShlKXtpZighKGUgaW5zdGFuY2VvZiB5dCl8fGUubWVtYmVycy5sZW5ndGghPXRoaXMubWVtYmVycy5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB0PTA7dDx0aGlzLm1lbWJlcnMubGVuZ3RoO3QrKylpZighdGhpcy5tZW1iZXJzW3RdLmVxKGUubWVtYmVyc1t0XSkpcmV0dXJuITE7cmV0dXJuITB9bG9jYWxzKGUpe2xldCB0LHI9ITA7Zm9yKGxldCBzPTA7czx0aGlzLm1lbWJlcnMubGVuZ3RoO3MrKyl7bGV0IGk9dGhpcy5tZW1iZXJzW3NdLmxvY2Fsc0lubmVyKGUpO2lmKGkubGVuZ3RoKWlmKCF0KXQ9aTtlbHNle3ImJih0PXQuc2xpY2UoKSxyPSExKTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKyl0LnB1c2goaVtvXSl9fXJldHVybiB0P09vKHI/dDp0LnNvcnQoX3QpKTp0bn1zdGF0aWMgZnJvbShlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZ2U7Y2FzZSAxOnJldHVybiBlWzBdO2RlZmF1bHQ6cmV0dXJuIG5ldyB5dChlLmV2ZXJ5KHQ9PnQgaW5zdGFuY2VvZiBZKT9lOmUucmVkdWNlKCh0LHIpPT50LmNvbmNhdChyIGluc3RhbmNlb2YgWT9yOnIubWVtYmVycyksW10pKX19Zm9yRWFjaFNldChlKXtmb3IobGV0IHQ9MDt0PHRoaXMubWVtYmVycy5sZW5ndGg7dCsrKXRoaXMubWVtYmVyc1t0XS5mb3JFYWNoU2V0KGUpfX1mdW5jdGlvbiBUbShuLGUsdCxyLHMsaSxvKXtsZXQgbD1uLnNsaWNlKCk7Zm9yKGxldCBjPTAsdT1pO2M8dC5tYXBzLmxlbmd0aDtjKyspe2xldCBkPTA7dC5tYXBzW2NdLmZvckVhY2goKGgsZixwLG0pPT57bGV0IGc9bS1wLShmLWgpO2ZvcihsZXQgeT0wO3k8bC5sZW5ndGg7eSs9Myl7bGV0IGs9bFt5KzFdO2lmKGs8MHx8aD5rK3UtZCljb250aW51ZTtsZXQgYj1sW3ldK3UtZDtmPj1iP2xbeSsxXT1oPD1iPy0yOi0xOmg+PXUmJmcmJihsW3ldKz1nLGxbeSsxXSs9Zyl9ZCs9Z30pLHU9dC5tYXBzW2NdLm1hcCh1LC0xKX1sZXQgYT0hMTtmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrPTMpaWYobFtjKzFdPDApe2lmKGxbYysxXT09LTIpe2E9ITAsbFtjKzFdPS0xO2NvbnRpbnVlfWxldCB1PXQubWFwKG5bY10raSksZD11LXM7aWYoZDwwfHxkPj1yLmNvbnRlbnQuc2l6ZSl7YT0hMDtjb250aW51ZX1sZXQgaD10Lm1hcChuW2MrMV0raSwtMSksZj1oLXMse2luZGV4OnAsb2Zmc2V0Om19PXIuY29udGVudC5maW5kSW5kZXgoZCksZz1yLm1heWJlQ2hpbGQocCk7aWYoZyYmbT09ZCYmbStnLm5vZGVTaXplPT1mKXtsZXQgeT1sW2MrMl0ubWFwSW5uZXIodCxnLHUrMSxuW2NdK2krMSxvKTt5IT1nZT8obFtjXT1kLGxbYysxXT1mLGxbYysyXT15KToobFtjKzFdPS0yLGE9ITApfWVsc2UgYT0hMH1pZihhKXtsZXQgYz1NbShsLG4sZSx0LHMsaSxvKSx1PVdyKGMsciwwLG8pO2U9dS5sb2NhbDtmb3IobGV0IGQ9MDtkPGwubGVuZ3RoO2QrPTMpbFtkKzFdPDAmJihsLnNwbGljZShkLDMpLGQtPTMpO2ZvcihsZXQgZD0wLGg9MDtkPHUuY2hpbGRyZW4ubGVuZ3RoO2QrPTMpe2xldCBmPXUuY2hpbGRyZW5bZF07Zm9yKDtoPGwubGVuZ3RoJiZsW2hdPGY7KWgrPTM7bC5zcGxpY2UoaCwwLHUuY2hpbGRyZW5bZF0sdS5jaGlsZHJlbltkKzFdLHUuY2hpbGRyZW5bZCsyXSl9fXJldHVybiBuZXcgWShlLnNvcnQoX3QpLGwpfWZ1bmN0aW9uIFV1KG4sZSl7aWYoIWV8fCFuLmxlbmd0aClyZXR1cm4gbjtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7bGV0IHM9bltyXTt0LnB1c2gobmV3IHllKHMuZnJvbStlLHMudG8rZSxzLnR5cGUpKX1yZXR1cm4gdH1mdW5jdGlvbiBNbShuLGUsdCxyLHMsaSxvKXtmdW5jdGlvbiBsKGEsYyl7Zm9yKGxldCB1PTA7dTxhLmxvY2FsLmxlbmd0aDt1Kyspe2xldCBkPWEubG9jYWxbdV0ubWFwKHIscyxjKTtkP3QucHVzaChkKTpvLm9uUmVtb3ZlJiZvLm9uUmVtb3ZlKGEubG9jYWxbdV0uc3BlYyl9Zm9yKGxldCB1PTA7dTxhLmNoaWxkcmVuLmxlbmd0aDt1Kz0zKWwoYS5jaGlsZHJlblt1KzJdLGEuY2hpbGRyZW5bdV0rYysxKX1mb3IobGV0IGE9MDthPG4ubGVuZ3RoO2ErPTMpblthKzFdPT0tMSYmbChuW2ErMl0sZVthXStpKzEpO3JldHVybiB0fWZ1bmN0aW9uIGp1KG4sZSx0KXtpZihlLmlzTGVhZilyZXR1cm4gbnVsbDtsZXQgcj10K2Uubm9kZVNpemUscz1udWxsO2ZvcihsZXQgaT0wLG87aTxuLmxlbmd0aDtpKyspKG89bltpXSkmJm8uZnJvbT50JiZvLnRvPHImJigoc3x8KHM9W10pKS5wdXNoKG8pLG5baV09bnVsbCk7cmV0dXJuIHN9ZnVuY3Rpb24gcXUobil7bGV0IGU9W107Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XSE9bnVsbCYmZS5wdXNoKG5bdF0pO3JldHVybiBlfWZ1bmN0aW9uIFdyKG4sZSx0LHIpe2xldCBzPVtdLGk9ITE7ZS5mb3JFYWNoKChsLGEpPT57bGV0IGM9anUobixsLGErdCk7aWYoYyl7aT0hMDtsZXQgdT1XcihjLGwsdCthKzEscik7dSE9Z2UmJnMucHVzaChhLGErbC5ub2RlU2l6ZSx1KX19KTtsZXQgbz1VdShpP3F1KG4pOm4sLXQpLnNvcnQoX3QpO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKW9bbF0udHlwZS52YWxpZChlLG9bbF0pfHwoci5vblJlbW92ZSYmci5vblJlbW92ZShvW2xdLnNwZWMpLG8uc3BsaWNlKGwtLSwxKSk7cmV0dXJuIG8ubGVuZ3RofHxzLmxlbmd0aD9uZXcgWShvLHMpOmdlfWZ1bmN0aW9uIF90KG4sZSl7cmV0dXJuIG4uZnJvbS1lLmZyb218fG4udG8tZS50b31mdW5jdGlvbiBPbyhuKXtsZXQgZT1uO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGgtMTt0Kyspe2xldCByPWVbdF07aWYoci5mcm9tIT1yLnRvKWZvcihsZXQgcz10KzE7czxlLmxlbmd0aDtzKyspe2xldCBpPWVbc107aWYoaS5mcm9tPT1yLmZyb20pe2kudG8hPXIudG8mJihlPT1uJiYoZT1uLnNsaWNlKCkpLGVbc109aS5jb3B5KGkuZnJvbSxyLnRvKSxzYShlLHMrMSxpLmNvcHkoci50byxpLnRvKSkpO2NvbnRpbnVlfWVsc2V7aS5mcm9tPHIudG8mJihlPT1uJiYoZT1uLnNsaWNlKCkpLGVbdF09ci5jb3B5KHIuZnJvbSxpLmZyb20pLHNhKGUscyxyLmNvcHkoaS5mcm9tLHIudG8pKSk7YnJlYWt9fX1yZXR1cm4gZX1mdW5jdGlvbiBzYShuLGUsdCl7Zm9yKDtlPG4ubGVuZ3RoJiZfdCh0LG5bZV0pPjA7KWUrKztuLnNwbGljZShlLDAsdCl9ZnVuY3Rpb24gY2kobil7bGV0IGU9W107cmV0dXJuIG4uc29tZVByb3AoImRlY29yYXRpb25zIix0PT57bGV0IHI9dChuLnN0YXRlKTtyJiZyIT1nZSYmZS5wdXNoKHIpfSksbi5jdXJzb3JXcmFwcGVyJiZlLnB1c2goWS5jcmVhdGUobi5zdGF0ZS5kb2MsW24uY3Vyc29yV3JhcHBlci5kZWNvXSkpLHl0LmZyb20oZSl9Y29uc3QgRW09e2NoaWxkTGlzdDohMCxjaGFyYWN0ZXJEYXRhOiEwLGNoYXJhY3RlckRhdGFPbGRWYWx1ZTohMCxhdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZU9sZFZhbHVlOiEwLHN1YnRyZWU6ITB9LEFtPU1lJiZTdDw9MTE7Y2xhc3MgT217Y29uc3RydWN0b3IoKXt0aGlzLmFuY2hvck5vZGU9bnVsbCx0aGlzLmFuY2hvck9mZnNldD0wLHRoaXMuZm9jdXNOb2RlPW51bGwsdGhpcy5mb2N1c09mZnNldD0wfXNldChlKXt0aGlzLmFuY2hvck5vZGU9ZS5hbmNob3JOb2RlLHRoaXMuYW5jaG9yT2Zmc2V0PWUuYW5jaG9yT2Zmc2V0LHRoaXMuZm9jdXNOb2RlPWUuZm9jdXNOb2RlLHRoaXMuZm9jdXNPZmZzZXQ9ZS5mb2N1c09mZnNldH1jbGVhcigpe3RoaXMuYW5jaG9yTm9kZT10aGlzLmZvY3VzTm9kZT1udWxsfWVxKGUpe3JldHVybiBlLmFuY2hvck5vZGU9PXRoaXMuYW5jaG9yTm9kZSYmZS5hbmNob3JPZmZzZXQ9PXRoaXMuYW5jaG9yT2Zmc2V0JiZlLmZvY3VzTm9kZT09dGhpcy5mb2N1c05vZGUmJmUuZm9jdXNPZmZzZXQ9PXRoaXMuZm9jdXNPZmZzZXR9fWNsYXNzIE5te2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52aWV3PWUsdGhpcy5oYW5kbGVET01DaGFuZ2U9dCx0aGlzLnF1ZXVlPVtdLHRoaXMuZmx1c2hpbmdTb29uPS0xLHRoaXMub2JzZXJ2ZXI9bnVsbCx0aGlzLmN1cnJlbnRTZWxlY3Rpb249bmV3IE9tLHRoaXMub25DaGFyRGF0YT1udWxsLHRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzPSExLHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1udWxsLHRoaXMub2JzZXJ2ZXI9d2luZG93Lk11dGF0aW9uT2JzZXJ2ZXImJm5ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcihyPT57Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspdGhpcy5xdWV1ZS5wdXNoKHJbc10pO01lJiZTdDw9MTEmJnIuc29tZShzPT5zLnR5cGU9PSJjaGlsZExpc3QiJiZzLnJlbW92ZWROb2Rlcy5sZW5ndGh8fHMudHlwZT09ImNoYXJhY3RlckRhdGEiJiZzLm9sZFZhbHVlLmxlbmd0aD5zLnRhcmdldC5ub2RlVmFsdWUubGVuZ3RoKT90aGlzLmZsdXNoU29vbigpOmtlJiZlLmNvbXBvc2luZyYmci5zb21lKHM9PnMudHlwZT09ImNoaWxkTGlzdCImJnMudGFyZ2V0Lm5vZGVOYW1lPT0iVFIiKT8oZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbj0hMCx0aGlzLmZsdXNoU29vbigpKTp0aGlzLmZsdXNoKCl9KSxBbSYmKHRoaXMub25DaGFyRGF0YT1yPT57dGhpcy5xdWV1ZS5wdXNoKHt0YXJnZXQ6ci50YXJnZXQsdHlwZToiY2hhcmFjdGVyRGF0YSIsb2xkVmFsdWU6ci5wcmV2VmFsdWV9KSx0aGlzLmZsdXNoU29vbigpfSksdGhpcy5vblNlbGVjdGlvbkNoYW5nZT10aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyl9Zmx1c2hTb29uKCl7dGhpcy5mbHVzaGluZ1Nvb248MCYmKHRoaXMuZmx1c2hpbmdTb29uPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy5mbHVzaGluZ1Nvb249LTEsdGhpcy5mbHVzaCgpfSwyMCkpfWZvcmNlRmx1c2goKXt0aGlzLmZsdXNoaW5nU29vbj4tMSYmKHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5mbHVzaGluZ1Nvb24pLHRoaXMuZmx1c2hpbmdTb29uPS0xLHRoaXMuZmx1c2goKSl9c3RhcnQoKXt0aGlzLm9ic2VydmVyJiYodGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpZXcuZG9tLEVtKSksdGhpcy5vbkNoYXJEYXRhJiZ0aGlzLnZpZXcuZG9tLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsdGhpcy5vbkNoYXJEYXRhKSx0aGlzLmNvbm5lY3RTZWxlY3Rpb24oKX1zdG9wKCl7aWYodGhpcy5vYnNlcnZlcil7bGV0IGU9dGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpO2lmKGUubGVuZ3RoKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLnF1ZXVlLnB1c2goZVt0XSk7d2luZG93LnNldFRpbWVvdXQoKCk9PnRoaXMuZmx1c2goKSwyMCl9dGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCl9dGhpcy5vbkNoYXJEYXRhJiZ0aGlzLnZpZXcuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsdGhpcy5vbkNoYXJEYXRhKSx0aGlzLmRpc2Nvbm5lY3RTZWxlY3Rpb24oKX1jb25uZWN0U2VsZWN0aW9uKCl7dGhpcy52aWV3LmRvbS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsdGhpcy5vblNlbGVjdGlvbkNoYW5nZSl9ZGlzY29ubmVjdFNlbGVjdGlvbigpe3RoaXMudmlldy5kb20ub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLHRoaXMub25TZWxlY3Rpb25DaGFuZ2UpfXN1cHByZXNzU2VsZWN0aW9uVXBkYXRlcygpe3RoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzPSEwLHNldFRpbWVvdXQoKCk9PnRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzPSExLDUwKX1vblNlbGVjdGlvbkNoYW5nZSgpe2lmKFFsKHRoaXMudmlldykpe2lmKHRoaXMuc3VwcHJlc3NpbmdTZWxlY3Rpb25VcGRhdGVzKXJldHVybiBsdCh0aGlzLnZpZXcpO2lmKE1lJiZTdDw9MTEmJiF0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLmVtcHR5KXtsZXQgZT10aGlzLnZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtpZihlLmZvY3VzTm9kZSYmVXQoZS5mb2N1c05vZGUsZS5mb2N1c09mZnNldCxlLmFuY2hvck5vZGUsZS5hbmNob3JPZmZzZXQpKXJldHVybiB0aGlzLmZsdXNoU29vbigpfXRoaXMuZmx1c2goKX19c2V0Q3VyU2VsZWN0aW9uKCl7dGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldCh0aGlzLnZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKSl9aWdub3JlU2VsZWN0aW9uQ2hhbmdlKGUpe2lmKCFlLmZvY3VzTm9kZSlyZXR1cm4hMDtsZXQgdD1uZXcgU2V0LHI7Zm9yKGxldCBpPWUuZm9jdXNOb2RlO2k7aT11bihpKSl0LmFkZChpKTtmb3IobGV0IGk9ZS5hbmNob3JOb2RlO2k7aT11bihpKSlpZih0LmhhcyhpKSl7cj1pO2JyZWFrfWxldCBzPXImJnRoaXMudmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKHIpO2lmKHMmJnMuaWdub3JlTXV0YXRpb24oe3R5cGU6InNlbGVjdGlvbiIsdGFyZ2V0OnIubm9kZVR5cGU9PTM/ci5wYXJlbnROb2RlOnJ9KSlyZXR1cm4gdGhpcy5zZXRDdXJTZWxlY3Rpb24oKSwhMH1wZW5kaW5nUmVjb3Jkcygpe2lmKHRoaXMub2JzZXJ2ZXIpZm9yKGxldCBlIG9mIHRoaXMub2JzZXJ2ZXIudGFrZVJlY29yZHMoKSl0aGlzLnF1ZXVlLnB1c2goZSk7cmV0dXJuIHRoaXMucXVldWV9Zmx1c2goKXtsZXR7dmlldzplfT10aGlzO2lmKCFlLmRvY1ZpZXd8fHRoaXMuZmx1c2hpbmdTb29uPi0xKXJldHVybjtsZXQgdD10aGlzLnBlbmRpbmdSZWNvcmRzKCk7dC5sZW5ndGgmJih0aGlzLnF1ZXVlPVtdKTtsZXQgcj1lLmRvbVNlbGVjdGlvblJhbmdlKCkscz0hdGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXMmJiF0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZXEocikmJlFsKGUpJiYhdGhpcy5pZ25vcmVTZWxlY3Rpb25DaGFuZ2UociksaT0tMSxvPS0xLGw9ITEsYT1bXTtpZihlLmVkaXRhYmxlKWZvcihsZXQgdT0wO3U8dC5sZW5ndGg7dSsrKXtsZXQgZD10aGlzLnJlZ2lzdGVyTXV0YXRpb24odFt1XSxhKTtkJiYoaT1pPDA/ZC5mcm9tOk1hdGgubWluKGQuZnJvbSxpKSxvPW88MD9kLnRvOk1hdGgubWF4KGQudG8sbyksZC50eXBlT3ZlciYmKGw9ITApKX1pZihhLnNvbWUodT0+dS5ub2RlTmFtZT09IkJSIikmJihlLmlucHV0Lmxhc3RLZXlDb2RlPT04fHxlLmlucHV0Lmxhc3RLZXlDb2RlPT00Nikpe2ZvcihsZXQgdSBvZiBhKWlmKHUubm9kZU5hbWU9PSJCUiImJnUucGFyZW50Tm9kZSl7bGV0IGQ9dS5uZXh0U2libGluZztmb3IoO2QmJmQubm9kZVR5cGU9PTE7KXtpZihkLmNvbnRlbnRFZGl0YWJsZT09ImZhbHNlIil7dS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHUpO2JyZWFrfWQ9ZC5maXJzdENoaWxkfX19ZWxzZSBpZihQZSYmYS5sZW5ndGgpe2xldCB1PWEuZmlsdGVyKGQ9PmQubm9kZU5hbWU9PSJCUiIpO2lmKHUubGVuZ3RoPT0yKXtsZXRbZCxoXT11O2QucGFyZW50Tm9kZSYmZC5wYXJlbnROb2RlLnBhcmVudE5vZGU9PWgucGFyZW50Tm9kZT9oLnJlbW92ZSgpOmQucmVtb3ZlKCl9ZWxzZXtsZXR7Zm9jdXNOb2RlOmR9PXRoaXMuY3VycmVudFNlbGVjdGlvbjtmb3IobGV0IGggb2YgdSl7bGV0IGY9aC5wYXJlbnROb2RlO2YmJmYubm9kZU5hbWU9PSJMSSImJighZHx8RG0oZSxkKSE9ZikmJmgucmVtb3ZlKCl9fX1sZXQgYz1udWxsO2k8MCYmcyYmZS5pbnB1dC5sYXN0Rm9jdXM+RGF0ZS5ub3coKS0yMDAmJk1hdGgubWF4KGUuaW5wdXQubGFzdFRvdWNoLGUuaW5wdXQubGFzdENsaWNrLnRpbWUpPERhdGUubm93KCktMzAwJiZMcyhyKSYmKGM9dm8oZSkpJiZjLmVxKEkubmVhcihlLnN0YXRlLmRvYy5yZXNvbHZlKDApLDEpKT8oZS5pbnB1dC5sYXN0Rm9jdXM9MCxsdChlKSx0aGlzLmN1cnJlbnRTZWxlY3Rpb24uc2V0KHIpLGUuc2Nyb2xsVG9TZWxlY3Rpb24oKSk6KGk+LTF8fHMpJiYoaT4tMSYmKGUuZG9jVmlldy5tYXJrRGlydHkoaSxvKSxSbShlKSksZS5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbiYmKGUuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb249ITEsTG0oZSxhKSksdGhpcy5oYW5kbGVET01DaGFuZ2UoaSxvLGwsYSksZS5kb2NWaWV3JiZlLmRvY1ZpZXcuZGlydHk/ZS51cGRhdGVTdGF0ZShlLnN0YXRlKTp0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZXEocil8fGx0KGUpLHRoaXMuY3VycmVudFNlbGVjdGlvbi5zZXQocikpfXJlZ2lzdGVyTXV0YXRpb24oZSx0KXtpZih0LmluZGV4T2YoZS50YXJnZXQpPi0xKXJldHVybiBudWxsO2xldCByPXRoaXMudmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKGUudGFyZ2V0KTtpZihlLnR5cGU9PSJhdHRyaWJ1dGVzIiYmKHI9PXRoaXMudmlldy5kb2NWaWV3fHxlLmF0dHJpYnV0ZU5hbWU9PSJjb250ZW50ZWRpdGFibGUifHxlLmF0dHJpYnV0ZU5hbWU9PSJzdHlsZSImJiFlLm9sZFZhbHVlJiYhZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKXx8IXJ8fHIuaWdub3JlTXV0YXRpb24oZSkpcmV0dXJuIG51bGw7aWYoZS50eXBlPT0iY2hpbGRMaXN0Iil7Zm9yKGxldCB1PTA7dTxlLmFkZGVkTm9kZXMubGVuZ3RoO3UrKyl7bGV0IGQ9ZS5hZGRlZE5vZGVzW3VdO3QucHVzaChkKSxkLm5vZGVUeXBlPT0zJiYodGhpcy5sYXN0Q2hhbmdlZFRleHROb2RlPWQpfWlmKHIuY29udGVudERPTSYmci5jb250ZW50RE9NIT1yLmRvbSYmIXIuY29udGVudERPTS5jb250YWlucyhlLnRhcmdldCkpcmV0dXJue2Zyb206ci5wb3NCZWZvcmUsdG86ci5wb3NBZnRlcn07bGV0IHM9ZS5wcmV2aW91c1NpYmxpbmcsaT1lLm5leHRTaWJsaW5nO2lmKE1lJiZTdDw9MTEmJmUuYWRkZWROb2Rlcy5sZW5ndGgpZm9yKGxldCB1PTA7dTxlLmFkZGVkTm9kZXMubGVuZ3RoO3UrKyl7bGV0e3ByZXZpb3VzU2libGluZzpkLG5leHRTaWJsaW5nOmh9PWUuYWRkZWROb2Rlc1t1XTsoIWR8fEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS5hZGRlZE5vZGVzLGQpPDApJiYocz1kKSwoIWh8fEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS5hZGRlZE5vZGVzLGgpPDApJiYoaT1oKX1sZXQgbz1zJiZzLnBhcmVudE5vZGU9PWUudGFyZ2V0P2ZlKHMpKzE6MCxsPXIubG9jYWxQb3NGcm9tRE9NKGUudGFyZ2V0LG8sLTEpLGE9aSYmaS5wYXJlbnROb2RlPT1lLnRhcmdldD9mZShpKTplLnRhcmdldC5jaGlsZE5vZGVzLmxlbmd0aCxjPXIubG9jYWxQb3NGcm9tRE9NKGUudGFyZ2V0LGEsMSk7cmV0dXJue2Zyb206bCx0bzpjfX1lbHNlIHJldHVybiBlLnR5cGU9PSJhdHRyaWJ1dGVzIj97ZnJvbTpyLnBvc0F0U3RhcnQtci5ib3JkZXIsdG86ci5wb3NBdEVuZCtyLmJvcmRlcn06KHRoaXMubGFzdENoYW5nZWRUZXh0Tm9kZT1lLnRhcmdldCx7ZnJvbTpyLnBvc0F0U3RhcnQsdG86ci5wb3NBdEVuZCx0eXBlT3ZlcjplLnRhcmdldC5ub2RlVmFsdWU9PWUub2xkVmFsdWV9KX19bGV0IGlhPW5ldyBXZWFrTWFwLG9hPSExO2Z1bmN0aW9uIFJtKG4pe2lmKCFpYS5oYXMobikmJihpYS5zZXQobixudWxsKSxbIm5vcm1hbCIsIm5vd3JhcCIsInByZS1saW5lIl0uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKG4uZG9tKS53aGl0ZVNwYWNlKSE9PS0xKSl7aWYobi5yZXF1aXJlc0dlY2tvSGFja05vZGU9UGUsb2EpcmV0dXJuO29hPSEwfX1mdW5jdGlvbiBsYShuLGUpe2xldCB0PWUuc3RhcnRDb250YWluZXIscj1lLnN0YXJ0T2Zmc2V0LHM9ZS5lbmRDb250YWluZXIsaT1lLmVuZE9mZnNldCxvPW4uZG9tQXRQb3Mobi5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yKTtyZXR1cm4gVXQoby5ub2RlLG8ub2Zmc2V0LHMsaSkmJihbdCxyLHMsaV09W3MsaSx0LHJdKSx7YW5jaG9yTm9kZTp0LGFuY2hvck9mZnNldDpyLGZvY3VzTm9kZTpzLGZvY3VzT2Zmc2V0Oml9fWZ1bmN0aW9uIEltKG4sZSl7aWYoZS5nZXRDb21wb3NlZFJhbmdlcyl7bGV0IHM9ZS5nZXRDb21wb3NlZFJhbmdlcyhuLnJvb3QpWzBdO2lmKHMpcmV0dXJuIGxhKG4scyl9bGV0IHQ7ZnVuY3Rpb24gcihzKXtzLnByZXZlbnREZWZhdWx0KCkscy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0PXMuZ2V0VGFyZ2V0UmFuZ2VzKClbMF19cmV0dXJuIG4uZG9tLmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IixyLCEwKSxkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5kZW50Iiksbi5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLHIsITApLHQ/bGEobix0KTpudWxsfWZ1bmN0aW9uIERtKG4sZSl7Zm9yKGxldCB0PWUucGFyZW50Tm9kZTt0JiZ0IT1uLmRvbTt0PXQucGFyZW50Tm9kZSl7bGV0IHI9bi5kb2NWaWV3Lm5lYXJlc3REZXNjKHQsITApO2lmKHImJnIubm9kZS5pc0Jsb2NrKXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIExtKG4sZSl7dmFyIHQ7bGV0e2ZvY3VzTm9kZTpyLGZvY3VzT2Zmc2V0OnN9PW4uZG9tU2VsZWN0aW9uUmFuZ2UoKTtmb3IobGV0IGkgb2YgZSlpZigoKHQ9aS5wYXJlbnROb2RlKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQubm9kZU5hbWUpPT0iVFIiKXtsZXQgbz1pLm5leHRTaWJsaW5nO2Zvcig7byYmby5ub2RlTmFtZSE9IlREIiYmby5ub2RlTmFtZSE9IlRIIjspbz1vLm5leHRTaWJsaW5nO2lmKG8pe2xldCBsPW87Zm9yKDs7KXtsZXQgYT1sLmZpcnN0Q2hpbGQ7aWYoIWF8fGEubm9kZVR5cGUhPTF8fGEuY29udGVudEVkaXRhYmxlPT0iZmFsc2UifHwvXihCUnxJTUcpJC8udGVzdChhLm5vZGVOYW1lKSlicmVhaztsPWF9bC5pbnNlcnRCZWZvcmUoaSxsLmZpcnN0Q2hpbGQpLHI9PWkmJm4uZG9tU2VsZWN0aW9uKCkuY29sbGFwc2UoaSxzKX1lbHNlIGkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKX19ZnVuY3Rpb24gUG0obixlLHQpe2xldHtub2RlOnIsZnJvbU9mZnNldDpzLHRvT2Zmc2V0OmksZnJvbTpvLHRvOmx9PW4uZG9jVmlldy5wYXJzZVJhbmdlKGUsdCksYT1uLmRvbVNlbGVjdGlvblJhbmdlKCksYyx1PWEuYW5jaG9yTm9kZTtpZih1JiZuLmRvbS5jb250YWlucyh1Lm5vZGVUeXBlPT0xP3U6dS5wYXJlbnROb2RlKSYmKGM9W3tub2RlOnUsb2Zmc2V0OmEuYW5jaG9yT2Zmc2V0fV0sTHMoYSl8fGMucHVzaCh7bm9kZTphLmZvY3VzTm9kZSxvZmZzZXQ6YS5mb2N1c09mZnNldH0pKSxtZSYmbi5pbnB1dC5sYXN0S2V5Q29kZT09PTgpZm9yKGxldCBnPWk7Zz5zO2ctLSl7bGV0IHk9ci5jaGlsZE5vZGVzW2ctMV0saz15LnBtVmlld0Rlc2M7aWYoeS5ub2RlTmFtZT09IkJSIiYmIWspe2k9ZzticmVha31pZigha3x8ay5zaXplKWJyZWFrfWxldCBkPW4uc3RhdGUuZG9jLGg9bi5zb21lUHJvcCgiZG9tUGFyc2VyIil8fGl0LmZyb21TY2hlbWEobi5zdGF0ZS5zY2hlbWEpLGY9ZC5yZXNvbHZlKG8pLHA9bnVsbCxtPWgucGFyc2Uocix7dG9wTm9kZTpmLnBhcmVudCx0b3BNYXRjaDpmLnBhcmVudC5jb250ZW50TWF0Y2hBdChmLmluZGV4KCkpLHRvcE9wZW46ITAsZnJvbTpzLHRvOmkscHJlc2VydmVXaGl0ZXNwYWNlOmYucGFyZW50LnR5cGUud2hpdGVzcGFjZT09InByZSI/ImZ1bGwiOiEwLGZpbmRQb3NpdGlvbnM6YyxydWxlRnJvbU5vZGU6em0sY29udGV4dDpmfSk7aWYoYyYmY1swXS5wb3MhPW51bGwpe2xldCBnPWNbMF0ucG9zLHk9Y1sxXSYmY1sxXS5wb3M7eT09bnVsbCYmKHk9ZykscD17YW5jaG9yOmcrbyxoZWFkOnkrb319cmV0dXJue2RvYzptLHNlbDpwLGZyb206byx0bzpsfX1mdW5jdGlvbiB6bShuKXtsZXQgZT1uLnBtVmlld0Rlc2M7aWYoZSlyZXR1cm4gZS5wYXJzZVJ1bGUoKTtpZihuLm5vZGVOYW1lPT0iQlIiJiZuLnBhcmVudE5vZGUpe2lmKGtlJiYvXih1bHxvbCkkL2kudGVzdChuLnBhcmVudE5vZGUubm9kZU5hbWUpKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpKSx7c2tpcDp0fX1lbHNlIGlmKG4ucGFyZW50Tm9kZS5sYXN0Q2hpbGQ9PW58fGtlJiYvXih0cnx0YWJsZSkkL2kudGVzdChuLnBhcmVudE5vZGUubm9kZU5hbWUpKXJldHVybntpZ25vcmU6ITB9fWVsc2UgaWYobi5ub2RlTmFtZT09IklNRyImJm4uZ2V0QXR0cmlidXRlKCJtYXJrLXBsYWNlaG9sZGVyIikpcmV0dXJue2lnbm9yZTohMH07cmV0dXJuIG51bGx9Y29uc3QgJG09L14oYXxhYmJyfGFjcm9ueW18YnxiZFtpb118YmlnfGJyfGJ1dHRvbnxjaXRlfGNvZGV8ZGF0YShsaXN0KT98ZGVsfGRmbnxlbXxpfGltZ3xpbnN8a2JkfGxhYmVsfG1hcHxtYXJrfG1ldGVyfG91dHB1dHxxfHJ1Ynl8c3xzYW1wfHNtYWxsfHNwYW58c3Ryb25nfHN1W2JwXXx0aW1lfHV8dHR8dmFyKSQvaTtmdW5jdGlvbiBCbShuLGUsdCxyLHMpe2xldCBpPW4uaW5wdXQuY29tcG9zaXRpb25QZW5kaW5nQ2hhbmdlc3x8KG4uY29tcG9zaW5nP24uaW5wdXQuY29tcG9zaXRpb25JRDowKTtpZihuLmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXM9MCxlPDApe2xldCBDPW4uaW5wdXQubGFzdFNlbGVjdGlvblRpbWU+RGF0ZS5ub3coKS01MD9uLmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW46bnVsbCxNPXZvKG4sQyk7aWYoTSYmIW4uc3RhdGUuc2VsZWN0aW9uLmVxKE0pKXtpZihtZSYmcnQmJm4uaW5wdXQubGFzdEtleUNvZGU9PT0xMyYmRGF0ZS5ub3coKS0xMDA8bi5pbnB1dC5sYXN0S2V5Q29kZVRpbWUmJm4uc29tZVByb3AoImhhbmRsZUtleURvd24iLE89Pk8obixSdCgxMywiRW50ZXIiKSkpKXJldHVybjtsZXQgUj1uLnN0YXRlLnRyLnNldFNlbGVjdGlvbihNKTtDPT0icG9pbnRlciI/Ui5zZXRNZXRhKCJwb2ludGVyIiwhMCk6Qz09ImtleSImJlIuc2Nyb2xsSW50b1ZpZXcoKSxpJiZSLnNldE1ldGEoImNvbXBvc2l0aW9uIixpKSxuLmRpc3BhdGNoKFIpfXJldHVybn1sZXQgbz1uLnN0YXRlLmRvYy5yZXNvbHZlKGUpLGw9by5zaGFyZWREZXB0aCh0KTtlPW8uYmVmb3JlKGwrMSksdD1uLnN0YXRlLmRvYy5yZXNvbHZlKHQpLmFmdGVyKGwrMSk7bGV0IGE9bi5zdGF0ZS5zZWxlY3Rpb24sYz1QbShuLGUsdCksdT1uLnN0YXRlLmRvYyxkPXUuc2xpY2UoYy5mcm9tLGMudG8pLGgsZjtuLmlucHV0Lmxhc3RLZXlDb2RlPT09OCYmRGF0ZS5ub3coKS0xMDA8bi5pbnB1dC5sYXN0S2V5Q29kZVRpbWU/KGg9bi5zdGF0ZS5zZWxlY3Rpb24udG8sZj0iZW5kIik6KGg9bi5zdGF0ZS5zZWxlY3Rpb24uZnJvbSxmPSJzdGFydCIpLG4uaW5wdXQubGFzdEtleUNvZGU9bnVsbDtsZXQgcD1GbShkLmNvbnRlbnQsYy5kb2MuY29udGVudCxjLmZyb20saCxmKTtpZihwJiZuLmlucHV0LmRvbUNoYW5nZUNvdW50KyssKGRuJiZuLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNXx8cnQpJiZzLnNvbWUoQz0+Qy5ub2RlVHlwZT09MSYmISRtLnRlc3QoQy5ub2RlTmFtZSkpJiYoIXB8fHAuZW5kQT49cC5lbmRCKSYmbi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsQz0+QyhuLFJ0KDEzLCJFbnRlciIpKSkpe24uaW5wdXQubGFzdElPU0VudGVyPTA7cmV0dXJufWlmKCFwKWlmKHImJmEgaW5zdGFuY2VvZiBEJiYhYS5lbXB0eSYmYS4kaGVhZC5zYW1lUGFyZW50KGEuJGFuY2hvcikmJiFuLmNvbXBvc2luZyYmIShjLnNlbCYmYy5zZWwuYW5jaG9yIT1jLnNlbC5oZWFkKSlwPXtzdGFydDphLmZyb20sZW5kQTphLnRvLGVuZEI6YS50b307ZWxzZXtpZihjLnNlbCl7bGV0IEM9YWEobixuLnN0YXRlLmRvYyxjLnNlbCk7aWYoQyYmIUMuZXEobi5zdGF0ZS5zZWxlY3Rpb24pKXtsZXQgTT1uLnN0YXRlLnRyLnNldFNlbGVjdGlvbihDKTtpJiZNLnNldE1ldGEoImNvbXBvc2l0aW9uIixpKSxuLmRpc3BhdGNoKE0pfX1yZXR1cm59bi5zdGF0ZS5zZWxlY3Rpb24uZnJvbTxuLnN0YXRlLnNlbGVjdGlvbi50byYmcC5zdGFydD09cC5lbmRCJiZuLnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEQmJihwLnN0YXJ0Pm4uc3RhdGUuc2VsZWN0aW9uLmZyb20mJnAuc3RhcnQ8PW4uc3RhdGUuc2VsZWN0aW9uLmZyb20rMiYmbi5zdGF0ZS5zZWxlY3Rpb24uZnJvbT49Yy5mcm9tP3Auc3RhcnQ9bi5zdGF0ZS5zZWxlY3Rpb24uZnJvbTpwLmVuZEE8bi5zdGF0ZS5zZWxlY3Rpb24udG8mJnAuZW5kQT49bi5zdGF0ZS5zZWxlY3Rpb24udG8tMiYmbi5zdGF0ZS5zZWxlY3Rpb24udG88PWMudG8mJihwLmVuZEIrPW4uc3RhdGUuc2VsZWN0aW9uLnRvLXAuZW5kQSxwLmVuZEE9bi5zdGF0ZS5zZWxlY3Rpb24udG8pKSxNZSYmU3Q8PTExJiZwLmVuZEI9PXAuc3RhcnQrMSYmcC5lbmRBPT1wLnN0YXJ0JiZwLnN0YXJ0PmMuZnJvbSYmYy5kb2MudGV4dEJldHdlZW4ocC5zdGFydC1jLmZyb20tMSxwLnN0YXJ0LWMuZnJvbSsxKT09IiDCoCImJihwLnN0YXJ0LS0scC5lbmRBLS0scC5lbmRCLS0pO2xldCBtPWMuZG9jLnJlc29sdmVOb0NhY2hlKHAuc3RhcnQtYy5mcm9tKSxnPWMuZG9jLnJlc29sdmVOb0NhY2hlKHAuZW5kQi1jLmZyb20pLHk9dS5yZXNvbHZlKHAuc3RhcnQpLGs9bS5zYW1lUGFyZW50KGcpJiZtLnBhcmVudC5pbmxpbmVDb250ZW50JiZ5LmVuZCgpPj1wLmVuZEE7aWYoKGRuJiZuLmlucHV0Lmxhc3RJT1NFbnRlcj5EYXRlLm5vdygpLTIyNSYmKCFrfHxzLnNvbWUoQz0+Qy5ub2RlTmFtZT09IkRJViJ8fEMubm9kZU5hbWU9PSJQIikpfHwhayYmbS5wb3M8Yy5kb2MuY29udGVudC5zaXplJiYoIW0uc2FtZVBhcmVudChnKXx8IW0ucGFyZW50LmlubGluZUNvbnRlbnQpJiZtLnBvczxnLnBvcyYmIS9cUy8udGVzdChjLmRvYy50ZXh0QmV0d2VlbihtLnBvcyxnLnBvcywiIiwiIikpKSYmbi5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsQz0+QyhuLFJ0KDEzLCJFbnRlciIpKSkpe24uaW5wdXQubGFzdElPU0VudGVyPTA7cmV0dXJufWlmKG4uc3RhdGUuc2VsZWN0aW9uLmFuY2hvcj5wLnN0YXJ0JiZIbSh1LHAuc3RhcnQscC5lbmRBLG0sZykmJm4uc29tZVByb3AoImhhbmRsZUtleURvd24iLEM9PkMobixSdCg4LCJCYWNrc3BhY2UiKSkpKXtydCYmbWUmJm4uZG9tT2JzZXJ2ZXIuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCk7cmV0dXJufW1lJiZwLmVuZEI9PXAuc3RhcnQmJihuLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU9RGF0ZS5ub3coKSkscnQmJiFrJiZtLnN0YXJ0KCkhPWcuc3RhcnQoKSYmZy5wYXJlbnRPZmZzZXQ9PTAmJm0uZGVwdGg9PWcuZGVwdGgmJmMuc2VsJiZjLnNlbC5hbmNob3I9PWMuc2VsLmhlYWQmJmMuc2VsLmhlYWQ9PXAuZW5kQSYmKHAuZW5kQi09MixnPWMuZG9jLnJlc29sdmVOb0NhY2hlKHAuZW5kQi1jLmZyb20pLHNldFRpbWVvdXQoKCk9PntuLnNvbWVQcm9wKCJoYW5kbGVLZXlEb3duIixmdW5jdGlvbihDKXtyZXR1cm4gQyhuLFJ0KDEzLCJFbnRlciIpKX0pfSwyMCkpO2xldCBiPXAuc3RhcnQsdz1wLmVuZEEseD1DPT57bGV0IE09Q3x8bi5zdGF0ZS50ci5yZXBsYWNlKGIsdyxjLmRvYy5zbGljZShwLnN0YXJ0LWMuZnJvbSxwLmVuZEItYy5mcm9tKSk7aWYoYy5zZWwpe2xldCBSPWFhKG4sTS5kb2MsYy5zZWwpO1ImJiEobWUmJm4uY29tcG9zaW5nJiZSLmVtcHR5JiYocC5zdGFydCE9cC5lbmRCfHxuLmlucHV0Lmxhc3RDaHJvbWVEZWxldGU8RGF0ZS5ub3coKS0xMDApJiYoUi5oZWFkPT1ifHxSLmhlYWQ9PU0ubWFwcGluZy5tYXAodyktMSl8fE1lJiZSLmVtcHR5JiZSLmhlYWQ9PWIpJiZNLnNldFNlbGVjdGlvbihSKX1yZXR1cm4gaSYmTS5zZXRNZXRhKCJjb21wb3NpdGlvbiIsaSksTS5zY3JvbGxJbnRvVmlldygpfSx2O2lmKGspaWYobS5wb3M9PWcucG9zKXtNZSYmU3Q8PTExJiZtLnBhcmVudE9mZnNldD09MCYmKG4uZG9tT2JzZXJ2ZXIuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCksc2V0VGltZW91dCgoKT0+bHQobiksMjApKTtsZXQgQz14KG4uc3RhdGUudHIuZGVsZXRlKGIsdykpLE09dS5yZXNvbHZlKHAuc3RhcnQpLm1hcmtzQWNyb3NzKHUucmVzb2x2ZShwLmVuZEEpKTtNJiZDLmVuc3VyZU1hcmtzKE0pLG4uZGlzcGF0Y2goQyl9ZWxzZSBpZihwLmVuZEE9PXAuZW5kQiYmKHY9X20obS5wYXJlbnQuY29udGVudC5jdXQobS5wYXJlbnRPZmZzZXQsZy5wYXJlbnRPZmZzZXQpLHkucGFyZW50LmNvbnRlbnQuY3V0KHkucGFyZW50T2Zmc2V0LHAuZW5kQS15LnN0YXJ0KCkpKSkpe2xldCBDPXgobi5zdGF0ZS50cik7di50eXBlPT0iYWRkIj9DLmFkZE1hcmsoYix3LHYubWFyayk6Qy5yZW1vdmVNYXJrKGIsdyx2Lm1hcmspLG4uZGlzcGF0Y2goQyl9ZWxzZSBpZihtLnBhcmVudC5jaGlsZChtLmluZGV4KCkpLmlzVGV4dCYmbS5pbmRleCgpPT1nLmluZGV4KCktKGcudGV4dE9mZnNldD8wOjEpKXtsZXQgQz1tLnBhcmVudC50ZXh0QmV0d2VlbihtLnBhcmVudE9mZnNldCxnLnBhcmVudE9mZnNldCksTT0oKT0+eChuLnN0YXRlLnRyLmluc2VydFRleHQoQyxiLHcpKTtuLnNvbWVQcm9wKCJoYW5kbGVUZXh0SW5wdXQiLFI9PlIobixiLHcsQyxNKSl8fG4uZGlzcGF0Y2goTSgpKX1lbHNlIG4uZGlzcGF0Y2goeCgpKTtlbHNlIG4uZGlzcGF0Y2goeCgpKX1mdW5jdGlvbiBhYShuLGUsdCl7cmV0dXJuIE1hdGgubWF4KHQuYW5jaG9yLHQuaGVhZCk+ZS5jb250ZW50LnNpemU/bnVsbDpTbyhuLGUucmVzb2x2ZSh0LmFuY2hvciksZS5yZXNvbHZlKHQuaGVhZCkpfWZ1bmN0aW9uIF9tKG4sZSl7bGV0IHQ9bi5maXJzdENoaWxkLm1hcmtzLHI9ZS5maXJzdENoaWxkLm1hcmtzLHM9dCxpPXIsbyxsLGE7Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspcz1yW3VdLnJlbW92ZUZyb21TZXQocyk7Zm9yKGxldCB1PTA7dTx0Lmxlbmd0aDt1KyspaT10W3VdLnJlbW92ZUZyb21TZXQoaSk7aWYocy5sZW5ndGg9PTEmJmkubGVuZ3RoPT0wKWw9c1swXSxvPSJhZGQiLGE9dT0+dS5tYXJrKGwuYWRkVG9TZXQodS5tYXJrcykpO2Vsc2UgaWYocy5sZW5ndGg9PTAmJmkubGVuZ3RoPT0xKWw9aVswXSxvPSJyZW1vdmUiLGE9dT0+dS5tYXJrKGwucmVtb3ZlRnJvbVNldCh1Lm1hcmtzKSk7ZWxzZSByZXR1cm4gbnVsbDtsZXQgYz1bXTtmb3IobGV0IHU9MDt1PGUuY2hpbGRDb3VudDt1KyspYy5wdXNoKGEoZS5jaGlsZCh1KSkpO2lmKFMuZnJvbShjKS5lcShuKSlyZXR1cm57bWFyazpsLHR5cGU6b319ZnVuY3Rpb24gSG0obixlLHQscixzKXtpZih0LWU8PXMucG9zLXIucG9zfHx1aShyLCEwLCExKTxzLnBvcylyZXR1cm4hMTtsZXQgaT1uLnJlc29sdmUoZSk7aWYoIXIucGFyZW50LmlzVGV4dGJsb2NrKXtsZXQgbD1pLm5vZGVBZnRlcjtyZXR1cm4gbCE9bnVsbCYmdD09ZStsLm5vZGVTaXplfWlmKGkucGFyZW50T2Zmc2V0PGkucGFyZW50LmNvbnRlbnQuc2l6ZXx8IWkucGFyZW50LmlzVGV4dGJsb2NrKXJldHVybiExO2xldCBvPW4ucmVzb2x2ZSh1aShpLCEwLCEwKSk7cmV0dXJuIW8ucGFyZW50LmlzVGV4dGJsb2NrfHxvLnBvcz50fHx1aShvLCEwLCExKTx0PyExOnIucGFyZW50LmNvbnRlbnQuY3V0KHIucGFyZW50T2Zmc2V0KS5lcShvLnBhcmVudC5jb250ZW50KX1mdW5jdGlvbiB1aShuLGUsdCl7bGV0IHI9bi5kZXB0aCxzPWU/bi5lbmQoKTpuLnBvcztmb3IoO3I+MCYmKGV8fG4uaW5kZXhBZnRlcihyKT09bi5ub2RlKHIpLmNoaWxkQ291bnQpOylyLS0scysrLGU9ITE7aWYodCl7bGV0IGk9bi5ub2RlKHIpLm1heWJlQ2hpbGQobi5pbmRleEFmdGVyKHIpKTtmb3IoO2kmJiFpLmlzTGVhZjspaT1pLmZpcnN0Q2hpbGQscysrfXJldHVybiBzfWZ1bmN0aW9uIEZtKG4sZSx0LHIscyl7bGV0IGk9bi5maW5kRGlmZlN0YXJ0KGUsdCk7aWYoaT09bnVsbClyZXR1cm4gbnVsbDtsZXR7YTpvLGI6bH09bi5maW5kRGlmZkVuZChlLHQrbi5zaXplLHQrZS5zaXplKTtpZihzPT0iZW5kIil7bGV0IGE9TWF0aC5tYXgoMCxpLU1hdGgubWluKG8sbCkpO3ItPW8rYS1pfWlmKG88aSYmbi5zaXplPGUuc2l6ZSl7bGV0IGE9cjw9aSYmcj49bz9pLXI6MDtpLT1hLGkmJmk8ZS5zaXplJiZjYShlLnRleHRCZXR3ZWVuKGktMSxpKzEpKSYmKGkrPWE/MTotMSksbD1pKyhsLW8pLG89aX1lbHNlIGlmKGw8aSl7bGV0IGE9cjw9aSYmcj49bD9pLXI6MDtpLT1hLGkmJmk8bi5zaXplJiZjYShuLnRleHRCZXR3ZWVuKGktMSxpKzEpKSYmKGkrPWE/MTotMSksbz1pKyhvLWwpLGw9aX1yZXR1cm57c3RhcnQ6aSxlbmRBOm8sZW5kQjpsfX1mdW5jdGlvbiBjYShuKXtpZihuLmxlbmd0aCE9MilyZXR1cm4hMTtsZXQgZT1uLmNoYXJDb2RlQXQoMCksdD1uLmNoYXJDb2RlQXQoMSk7cmV0dXJuIGU+PTU2MzIwJiZlPD01NzM0MyYmdD49NTUyOTYmJnQ8PTU2MzE5fWNsYXNzIFd1e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnRyYWNrV3JpdGVzPW51bGwsdGhpcy5tb3VudGVkPSExLHRoaXMubWFya0N1cnNvcj1udWxsLHRoaXMuY3Vyc29yV3JhcHBlcj1udWxsLHRoaXMubGFzdFNlbGVjdGVkVmlld0Rlc2M9dm9pZCAwLHRoaXMuaW5wdXQ9bmV3IHJtLHRoaXMucHJldkRpcmVjdFBsdWdpbnM9W10sdGhpcy5wbHVnaW5WaWV3cz1bXSx0aGlzLnJlcXVpcmVzR2Vja29IYWNrTm9kZT0hMSx0aGlzLmRyYWdnaW5nPW51bGwsdGhpcy5fcHJvcHM9dCx0aGlzLnN0YXRlPXQuc3RhdGUsdGhpcy5kaXJlY3RQbHVnaW5zPXQucGx1Z2luc3x8W10sdGhpcy5kaXJlY3RQbHVnaW5zLmZvckVhY2gocGEpLHRoaXMuZGlzcGF0Y2g9dGhpcy5kaXNwYXRjaC5iaW5kKHRoaXMpLHRoaXMuZG9tPWUmJmUubW91bnR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUmJihlLmFwcGVuZENoaWxkP2UuYXBwZW5kQ2hpbGQodGhpcy5kb20pOnR5cGVvZiBlPT0iZnVuY3Rpb24iP2UodGhpcy5kb20pOmUubW91bnQmJih0aGlzLm1vdW50ZWQ9ITApKSx0aGlzLmVkaXRhYmxlPWhhKHRoaXMpLGRhKHRoaXMpLHRoaXMubm9kZVZpZXdzPWZhKHRoaXMpLHRoaXMuZG9jVmlldz1qbCh0aGlzLnN0YXRlLmRvYyx1YSh0aGlzKSxjaSh0aGlzKSx0aGlzLmRvbSx0aGlzKSx0aGlzLmRvbU9ic2VydmVyPW5ldyBObSh0aGlzLChyLHMsaSxvKT0+Qm0odGhpcyxyLHMsaSxvKSksdGhpcy5kb21PYnNlcnZlci5zdGFydCgpLHNtKHRoaXMpLHRoaXMudXBkYXRlUGx1Z2luVmlld3MoKX1nZXQgY29tcG9zaW5nKCl7cmV0dXJuIHRoaXMuaW5wdXQuY29tcG9zaW5nfWdldCBwcm9wcygpe2lmKHRoaXMuX3Byb3BzLnN0YXRlIT10aGlzLnN0YXRlKXtsZXQgZT10aGlzLl9wcm9wczt0aGlzLl9wcm9wcz17fTtmb3IobGV0IHQgaW4gZSl0aGlzLl9wcm9wc1t0XT1lW3RdO3RoaXMuX3Byb3BzLnN0YXRlPXRoaXMuc3RhdGV9cmV0dXJuIHRoaXMuX3Byb3BzfXVwZGF0ZShlKXtlLmhhbmRsZURPTUV2ZW50cyE9dGhpcy5fcHJvcHMuaGFuZGxlRE9NRXZlbnRzJiZVaSh0aGlzKTtsZXQgdD10aGlzLl9wcm9wczt0aGlzLl9wcm9wcz1lLGUucGx1Z2lucyYmKGUucGx1Z2lucy5mb3JFYWNoKHBhKSx0aGlzLmRpcmVjdFBsdWdpbnM9ZS5wbHVnaW5zKSx0aGlzLnVwZGF0ZVN0YXRlSW5uZXIoZS5zdGF0ZSx0KX1zZXRQcm9wcyhlKXtsZXQgdD17fTtmb3IobGV0IHIgaW4gdGhpcy5fcHJvcHMpdFtyXT10aGlzLl9wcm9wc1tyXTt0LnN0YXRlPXRoaXMuc3RhdGU7Zm9yKGxldCByIGluIGUpdFtyXT1lW3JdO3RoaXMudXBkYXRlKHQpfXVwZGF0ZVN0YXRlKGUpe3RoaXMudXBkYXRlU3RhdGVJbm5lcihlLHRoaXMuX3Byb3BzKX11cGRhdGVTdGF0ZUlubmVyKGUsdCl7dmFyIHI7bGV0IHM9dGhpcy5zdGF0ZSxpPSExLG89ITE7ZS5zdG9yZWRNYXJrcyYmdGhpcy5jb21wb3NpbmcmJihfdSh0aGlzKSxvPSEwKSx0aGlzLnN0YXRlPWU7bGV0IGw9cy5wbHVnaW5zIT1lLnBsdWdpbnN8fHRoaXMuX3Byb3BzLnBsdWdpbnMhPXQucGx1Z2lucztpZihsfHx0aGlzLl9wcm9wcy5wbHVnaW5zIT10LnBsdWdpbnN8fHRoaXMuX3Byb3BzLm5vZGVWaWV3cyE9dC5ub2RlVmlld3Mpe2xldCBmPWZhKHRoaXMpO1VtKGYsdGhpcy5ub2RlVmlld3MpJiYodGhpcy5ub2RlVmlld3M9ZixpPSEwKX0obHx8dC5oYW5kbGVET01FdmVudHMhPXRoaXMuX3Byb3BzLmhhbmRsZURPTUV2ZW50cykmJlVpKHRoaXMpLHRoaXMuZWRpdGFibGU9aGEodGhpcyksZGEodGhpcyk7bGV0IGE9Y2kodGhpcyksYz11YSh0aGlzKSx1PXMucGx1Z2lucyE9ZS5wbHVnaW5zJiYhcy5kb2MuZXEoZS5kb2MpPyJyZXNldCI6ZS5zY3JvbGxUb1NlbGVjdGlvbj5zLnNjcm9sbFRvU2VsZWN0aW9uPyJ0byBzZWxlY3Rpb24iOiJwcmVzZXJ2ZSIsZD1pfHwhdGhpcy5kb2NWaWV3Lm1hdGNoZXNOb2RlKGUuZG9jLGMsYSk7KGR8fCFlLnNlbGVjdGlvbi5lcShzLnNlbGVjdGlvbikpJiYobz0hMCk7bGV0IGg9dT09InByZXNlcnZlIiYmbyYmdGhpcy5kb20uc3R5bGUub3ZlcmZsb3dBbmNob3I9PW51bGwmJmtwKHRoaXMpO2lmKG8pe3RoaXMuZG9tT2JzZXJ2ZXIuc3RvcCgpO2xldCBmPWQmJihNZXx8bWUpJiYhdGhpcy5jb21wb3NpbmcmJiFzLnNlbGVjdGlvbi5lbXB0eSYmIWUuc2VsZWN0aW9uLmVtcHR5JiZWbShzLnNlbGVjdGlvbixlLnNlbGVjdGlvbik7aWYoZCl7bGV0IHA9bWU/dGhpcy50cmFja1dyaXRlcz10aGlzLmRvbVNlbGVjdGlvblJhbmdlKCkuZm9jdXNOb2RlOm51bGw7dGhpcy5jb21wb3NpbmcmJih0aGlzLmlucHV0LmNvbXBvc2l0aW9uTm9kZT1rbSh0aGlzKSksKGl8fCF0aGlzLmRvY1ZpZXcudXBkYXRlKGUuZG9jLGMsYSx0aGlzKSkmJih0aGlzLmRvY1ZpZXcudXBkYXRlT3V0ZXJEZWNvKGMpLHRoaXMuZG9jVmlldy5kZXN0cm95KCksdGhpcy5kb2NWaWV3PWpsKGUuZG9jLGMsYSx0aGlzLmRvbSx0aGlzKSkscCYmKCF0aGlzLnRyYWNrV3JpdGVzfHwhdGhpcy5kb20uY29udGFpbnModGhpcy50cmFja1dyaXRlcykpJiYoZj0hMCl9Znx8ISh0aGlzLmlucHV0Lm1vdXNlRG93biYmdGhpcy5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uLmVxKHRoaXMuZG9tU2VsZWN0aW9uUmFuZ2UoKSkmJlZwKHRoaXMpKT9sdCh0aGlzLGYpOihFdSh0aGlzLGUuc2VsZWN0aW9uKSx0aGlzLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpKSx0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCl9dGhpcy51cGRhdGVQbHVnaW5WaWV3cyhzKSwhKChyPXRoaXMuZHJhZ2dpbmcpPT09bnVsbHx8cj09PXZvaWQgMCkmJnIubm9kZSYmIXMuZG9jLmVxKGUuZG9jKSYmdGhpcy51cGRhdGVEcmFnZ2VkTm9kZSh0aGlzLmRyYWdnaW5nLHMpLHU9PSJyZXNldCI/dGhpcy5kb20uc2Nyb2xsVG9wPTA6dT09InRvIHNlbGVjdGlvbiI/dGhpcy5zY3JvbGxUb1NlbGVjdGlvbigpOmgmJmJwKGgpfXNjcm9sbFRvU2VsZWN0aW9uKCl7bGV0IGU9dGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpLmZvY3VzTm9kZTtpZighKCFlfHwhdGhpcy5kb20uY29udGFpbnMoZS5ub2RlVHlwZT09MT9lOmUucGFyZW50Tm9kZSkpKXtpZighdGhpcy5zb21lUHJvcCgiaGFuZGxlU2Nyb2xsVG9TZWxlY3Rpb24iLHQ9PnQodGhpcykpKWlmKHRoaXMuc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTil7bGV0IHQ9dGhpcy5kb2NWaWV3LmRvbUFmdGVyUG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZyb20pO3Qubm9kZVR5cGU9PTEmJkJsKHRoaXMsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlKX1lbHNlIEJsKHRoaXMsdGhpcy5jb29yZHNBdFBvcyh0aGlzLnN0YXRlLnNlbGVjdGlvbi5oZWFkLDEpLGUpfX1kZXN0cm95UGx1Z2luVmlld3MoKXtsZXQgZTtmb3IoO2U9dGhpcy5wbHVnaW5WaWV3cy5wb3AoKTspZS5kZXN0cm95JiZlLmRlc3Ryb3koKX11cGRhdGVQbHVnaW5WaWV3cyhlKXtpZighZXx8ZS5wbHVnaW5zIT10aGlzLnN0YXRlLnBsdWdpbnN8fHRoaXMuZGlyZWN0UGx1Z2lucyE9dGhpcy5wcmV2RGlyZWN0UGx1Z2lucyl7dGhpcy5wcmV2RGlyZWN0UGx1Z2lucz10aGlzLmRpcmVjdFBsdWdpbnMsdGhpcy5kZXN0cm95UGx1Z2luVmlld3MoKTtmb3IobGV0IHQ9MDt0PHRoaXMuZGlyZWN0UGx1Z2lucy5sZW5ndGg7dCsrKXtsZXQgcj10aGlzLmRpcmVjdFBsdWdpbnNbdF07ci5zcGVjLnZpZXcmJnRoaXMucGx1Z2luVmlld3MucHVzaChyLnNwZWMudmlldyh0aGlzKSl9Zm9yKGxldCB0PTA7dDx0aGlzLnN0YXRlLnBsdWdpbnMubGVuZ3RoO3QrKyl7bGV0IHI9dGhpcy5zdGF0ZS5wbHVnaW5zW3RdO3Iuc3BlYy52aWV3JiZ0aGlzLnBsdWdpblZpZXdzLnB1c2goci5zcGVjLnZpZXcodGhpcykpfX1lbHNlIGZvcihsZXQgdD0wO3Q8dGhpcy5wbHVnaW5WaWV3cy5sZW5ndGg7dCsrKXtsZXQgcj10aGlzLnBsdWdpblZpZXdzW3RdO3IudXBkYXRlJiZyLnVwZGF0ZSh0aGlzLGUpfX11cGRhdGVEcmFnZ2VkTm9kZShlLHQpe2xldCByPWUubm9kZSxzPS0xO2lmKHIuZnJvbTx0aGlzLnN0YXRlLmRvYy5jb250ZW50LnNpemUmJnRoaXMuc3RhdGUuZG9jLm5vZGVBdChyLmZyb20pPT1yLm5vZGUpcz1yLmZyb207ZWxzZXtsZXQgaT1yLmZyb20rKHRoaXMuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZS10LmRvYy5jb250ZW50LnNpemUpOyhpPjAmJmk8dGhpcy5zdGF0ZS5kb2MuY29udGVudC5zaXplJiZ0aGlzLnN0YXRlLmRvYy5ub2RlQXQoaSkpPT1yLm5vZGUmJihzPWkpfXRoaXMuZHJhZ2dpbmc9bmV3IEZ1KGUuc2xpY2UsZS5tb3ZlLHM8MD92b2lkIDA6Ti5jcmVhdGUodGhpcy5zdGF0ZS5kb2MscykpfXNvbWVQcm9wKGUsdCl7bGV0IHI9dGhpcy5fcHJvcHMmJnRoaXMuX3Byb3BzW2VdLHM7aWYociE9bnVsbCYmKHM9dD90KHIpOnIpKXJldHVybiBzO2ZvcihsZXQgbz0wO288dGhpcy5kaXJlY3RQbHVnaW5zLmxlbmd0aDtvKyspe2xldCBsPXRoaXMuZGlyZWN0UGx1Z2luc1tvXS5wcm9wc1tlXTtpZihsIT1udWxsJiYocz10P3QobCk6bCkpcmV0dXJuIHN9bGV0IGk9dGhpcy5zdGF0ZS5wbHVnaW5zO2lmKGkpZm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2xldCBsPWlbb10ucHJvcHNbZV07aWYobCE9bnVsbCYmKHM9dD90KGwpOmwpKXJldHVybiBzfX1oYXNGb2N1cygpe2lmKE1lKXtsZXQgZT10aGlzLnJvb3QuYWN0aXZlRWxlbWVudDtpZihlPT10aGlzLmRvbSlyZXR1cm4hMDtpZighZXx8IXRoaXMuZG9tLmNvbnRhaW5zKGUpKXJldHVybiExO2Zvcig7ZSYmdGhpcy5kb20hPWUmJnRoaXMuZG9tLmNvbnRhaW5zKGUpOyl7aWYoZS5jb250ZW50RWRpdGFibGU9PSJmYWxzZSIpcmV0dXJuITE7ZT1lLnBhcmVudEVsZW1lbnR9cmV0dXJuITB9cmV0dXJuIHRoaXMucm9vdC5hY3RpdmVFbGVtZW50PT10aGlzLmRvbX1mb2N1cygpe3RoaXMuZG9tT2JzZXJ2ZXIuc3RvcCgpLHRoaXMuZWRpdGFibGUmJnhwKHRoaXMuZG9tKSxsdCh0aGlzKSx0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCl9Z2V0IHJvb3QoKXtsZXQgZT10aGlzLl9yb290O2lmKGU9PW51bGwpe2ZvcihsZXQgdD10aGlzLmRvbS5wYXJlbnROb2RlO3Q7dD10LnBhcmVudE5vZGUpaWYodC5ub2RlVHlwZT09OXx8dC5ub2RlVHlwZT09MTEmJnQuaG9zdClyZXR1cm4gdC5nZXRTZWxlY3Rpb258fChPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkuZ2V0U2VsZWN0aW9uPSgpPT50Lm93bmVyRG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkpLHRoaXMuX3Jvb3Q9dH1yZXR1cm4gZXx8ZG9jdW1lbnR9dXBkYXRlUm9vdCgpe3RoaXMuX3Jvb3Q9bnVsbH1wb3NBdENvb3JkcyhlKXtyZXR1cm4gVHAodGhpcyxlKX1jb29yZHNBdFBvcyhlLHQ9MSl7cmV0dXJuIGJ1KHRoaXMsZSx0KX1kb21BdFBvcyhlLHQ9MCl7cmV0dXJuIHRoaXMuZG9jVmlldy5kb21Gcm9tUG9zKGUsdCl9bm9kZURPTShlKXtsZXQgdD10aGlzLmRvY1ZpZXcuZGVzY0F0KGUpO3JldHVybiB0P3Qubm9kZURPTTpudWxsfXBvc0F0RE9NKGUsdCxyPS0xKXtsZXQgcz10aGlzLmRvY1ZpZXcucG9zRnJvbURPTShlLHQscik7aWYocz09bnVsbCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRE9NIHBvc2l0aW9uIG5vdCBpbnNpZGUgdGhlIGVkaXRvciIpO3JldHVybiBzfWVuZE9mVGV4dGJsb2NrKGUsdCl7cmV0dXJuIE5wKHRoaXMsdHx8dGhpcy5zdGF0ZSxlKX1wYXN0ZUhUTUwoZSx0KXtyZXR1cm4gWG4odGhpcywiIixlLCExLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9cGFzdGVUZXh0KGUsdCl7cmV0dXJuIFhuKHRoaXMsZSxudWxsLCEwLHR8fG5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKSl9c2VyaWFsaXplRm9yQ2xpcGJvYXJkKGUpe3JldHVybiBDbyh0aGlzLGUpfWRlc3Ryb3koKXt0aGlzLmRvY1ZpZXcmJihpbSh0aGlzKSx0aGlzLmRlc3Ryb3lQbHVnaW5WaWV3cygpLHRoaXMubW91bnRlZD8odGhpcy5kb2NWaWV3LnVwZGF0ZSh0aGlzLnN0YXRlLmRvYyxbXSxjaSh0aGlzKSx0aGlzKSx0aGlzLmRvbS50ZXh0Q29udGVudD0iIik6dGhpcy5kb20ucGFyZW50Tm9kZSYmdGhpcy5kb20ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbSksdGhpcy5kb2NWaWV3LmRlc3Ryb3koKSx0aGlzLmRvY1ZpZXc9bnVsbCxhcCgpKX1nZXQgaXNEZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5kb2NWaWV3PT1udWxsfWRpc3BhdGNoRXZlbnQoZSl7cmV0dXJuIGxtKHRoaXMsZSl9ZG9tU2VsZWN0aW9uUmFuZ2UoKXtsZXQgZT10aGlzLmRvbVNlbGVjdGlvbigpO3JldHVybiBlP2tlJiZ0aGlzLnJvb3Qubm9kZVR5cGU9PT0xMSYmZnAodGhpcy5kb20ub3duZXJEb2N1bWVudCk9PXRoaXMuZG9tJiZJbSh0aGlzLGUpfHxlOntmb2N1c05vZGU6bnVsbCxmb2N1c09mZnNldDowLGFuY2hvck5vZGU6bnVsbCxhbmNob3JPZmZzZXQ6MH19ZG9tU2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdC5nZXRTZWxlY3Rpb24oKX19V3UucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKG4pe2xldCBlPXRoaXMuX3Byb3BzLmRpc3BhdGNoVHJhbnNhY3Rpb247ZT9lLmNhbGwodGhpcyxuKTp0aGlzLnVwZGF0ZVN0YXRlKHRoaXMuc3RhdGUuYXBwbHkobikpfTtmdW5jdGlvbiB1YShuKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlLmNsYXNzPSJQcm9zZU1pcnJvciIsZS5jb250ZW50ZWRpdGFibGU9U3RyaW5nKG4uZWRpdGFibGUpLG4uc29tZVByb3AoImF0dHJpYnV0ZXMiLHQ9PntpZih0eXBlb2YgdD09ImZ1bmN0aW9uIiYmKHQ9dChuLnN0YXRlKSksdClmb3IobGV0IHIgaW4gdClyPT0iY2xhc3MiP2UuY2xhc3MrPSIgIit0W3JdOnI9PSJzdHlsZSI/ZS5zdHlsZT0oZS5zdHlsZT9lLnN0eWxlKyI7IjoiIikrdFtyXTohZVtyXSYmciE9ImNvbnRlbnRlZGl0YWJsZSImJnIhPSJub2RlTmFtZSImJihlW3JdPVN0cmluZyh0W3JdKSl9KSxlLnRyYW5zbGF0ZXx8KGUudHJhbnNsYXRlPSJubyIpLFt5ZS5ub2RlKDAsbi5zdGF0ZS5kb2MuY29udGVudC5zaXplLGUpXX1mdW5jdGlvbiBkYShuKXtpZihuLm1hcmtDdXJzb3Ipe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO2UuY2xhc3NOYW1lPSJQcm9zZU1pcnJvci1zZXBhcmF0b3IiLGUuc2V0QXR0cmlidXRlKCJtYXJrLXBsYWNlaG9sZGVyIiwidHJ1ZSIpLGUuc2V0QXR0cmlidXRlKCJhbHQiLCIiKSxuLmN1cnNvcldyYXBwZXI9e2RvbTplLGRlY286eWUud2lkZ2V0KG4uc3RhdGUuc2VsZWN0aW9uLmZyb20sZSx7cmF3OiEwLG1hcmtzOm4ubWFya0N1cnNvcn0pfX1lbHNlIG4uY3Vyc29yV3JhcHBlcj1udWxsfWZ1bmN0aW9uIGhhKG4pe3JldHVybiFuLnNvbWVQcm9wKCJlZGl0YWJsZSIsZT0+ZShuLnN0YXRlKT09PSExKX1mdW5jdGlvbiBWbShuLGUpe2xldCB0PU1hdGgubWluKG4uJGFuY2hvci5zaGFyZWREZXB0aChuLmhlYWQpLGUuJGFuY2hvci5zaGFyZWREZXB0aChlLmhlYWQpKTtyZXR1cm4gbi4kYW5jaG9yLnN0YXJ0KHQpIT1lLiRhbmNob3Iuc3RhcnQodCl9ZnVuY3Rpb24gZmEobil7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiB0KHIpe2ZvcihsZXQgcyBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHMpfHwoZVtzXT1yW3NdKX1yZXR1cm4gbi5zb21lUHJvcCgibm9kZVZpZXdzIix0KSxuLnNvbWVQcm9wKCJtYXJrVmlld3MiLHQpLGV9ZnVuY3Rpb24gVW0obixlKXtsZXQgdD0wLHI9MDtmb3IobGV0IHMgaW4gbil7aWYobltzXSE9ZVtzXSlyZXR1cm4hMDt0Kyt9Zm9yKGxldCBzIGluIGUpcisrO3JldHVybiB0IT1yfWZ1bmN0aW9uIHBhKG4pe2lmKG4uc3BlYy5zdGF0ZXx8bi5zcGVjLmZpbHRlclRyYW5zYWN0aW9ufHxuLnNwZWMuYXBwZW5kVHJhbnNhY3Rpb24pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlBsdWdpbnMgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSB2aWV3IG11c3Qgbm90IGhhdmUgYSBzdGF0ZSBjb21wb25lbnQiKX12YXIgTXQ9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMDoiRW50ZXIiLDEyOiJOdW1Mb2NrIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDQ6IlByaW50U2NyZWVuIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiw1OToiOyIsNjE6Ij0iLDkxOiJNZXRhIiw5MjoiTWV0YSIsMTA2OiIqIiwxMDc6IisiLDEwODoiLCIsMTA5OiItIiwxMTA6Ii4iLDExMToiLyIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDE2MDoiU2hpZnQiLDE2MToiU2hpZnQiLDE2MjoiQ29udHJvbCIsMTYzOiJDb250cm9sIiwxNjQ6IkFsdCIsMTY1OiJBbHQiLDE3MzoiLSIsMTg2OiI7IiwxODc6Ij0iLDE4ODoiLCIsMTg5OiItIiwxOTA6Ii4iLDE5MToiLyIsMTkyOiJgIiwyMTk6IlsiLDIyMDoiXFwiLDIyMToiXSIsMjIyOiInIn0sS3I9ezQ4OiIpIiw0OToiISIsNTA6IkAiLDUxOiIjIiw1MjoiJCIsNTM6IiUiLDU0OiJeIiw1NToiJiIsNTY6IioiLDU3OiIoIiw1OToiOiIsNjE6IisiLDE3MzoiXyIsMTg2OiI6IiwxODc6IisiLDE4ODoiPCIsMTg5OiJfIiwxOTA6Ij4iLDE5MToiPyIsMTkyOiJ+IiwyMTk6InsiLDIyMDoifCIsMjIxOiJ9IiwyMjI6JyInfSxqbT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pLHFtPXR5cGVvZiBuYXZpZ2F0b3I8InUiJiYvTVNJRSBcZHxUcmlkZW50XC8oPzpbNy05XXxcZHsyLH0pXC4uKnJ2OihcZCspLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpO2Zvcih2YXIgcGU9MDtwZTwxMDtwZSsrKU10WzQ4K3BlXT1NdFs5NitwZV09U3RyaW5nKHBlKTtmb3IodmFyIHBlPTE7cGU8PTI0O3BlKyspTXRbcGUrMTExXT0iRiIrcGU7Zm9yKHZhciBwZT02NTtwZTw9OTA7cGUrKylNdFtwZV09U3RyaW5nLmZyb21DaGFyQ29kZShwZSszMiksS3JbcGVdPVN0cmluZy5mcm9tQ2hhckNvZGUocGUpO2Zvcih2YXIgZGkgaW4gTXQpS3IuaGFzT3duUHJvcGVydHkoZGkpfHwoS3JbZGldPU10W2RpXSk7ZnVuY3Rpb24gV20obil7dmFyIGU9am0mJm4ubWV0YUtleSYmbi5zaGlmdEtleSYmIW4uY3RybEtleSYmIW4uYWx0S2V5fHxxbSYmbi5zaGlmdEtleSYmbi5rZXkmJm4ua2V5Lmxlbmd0aD09MXx8bi5rZXk9PSJVbmlkZW50aWZpZWQiLHQ9IWUmJm4ua2V5fHwobi5zaGlmdEtleT9LcjpNdClbbi5rZXlDb2RlXXx8bi5rZXl8fCJVbmlkZW50aWZpZWQiO3JldHVybiB0PT0iRXNjIiYmKHQ9IkVzY2FwZSIpLHQ9PSJEZWwiJiYodD0iRGVsZXRlIiksdD09IkxlZnQiJiYodD0iQXJyb3dMZWZ0IiksdD09IlVwIiYmKHQ9IkFycm93VXAiKSx0PT0iUmlnaHQiJiYodD0iQXJyb3dSaWdodCIpLHQ9PSJEb3duIiYmKHQ9IkFycm93RG93biIpLHR9Y29uc3QgS209dHlwZW9mIG5hdmlnYXRvcjwidSImJi9NYWN8aVAoaG9uZXxbb2FdZCkvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSxKbT10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmL1dpbi8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO2Z1bmN0aW9uIEdtKG4pe2xldCBlPW4uc3BsaXQoLy0oPyEkKS8pLHQ9ZVtlLmxlbmd0aC0xXTt0PT0iU3BhY2UiJiYodD0iICIpO2xldCByLHMsaSxvO2ZvcihsZXQgbD0wO2w8ZS5sZW5ndGgtMTtsKyspe2xldCBhPWVbbF07aWYoL14oY21kfG1ldGF8bSkkL2kudGVzdChhKSlvPSEwO2Vsc2UgaWYoL15hKGx0KT8kL2kudGVzdChhKSlyPSEwO2Vsc2UgaWYoL14oY3xjdHJsfGNvbnRyb2wpJC9pLnRlc3QoYSkpcz0hMDtlbHNlIGlmKC9ecyhoaWZ0KT8kL2kudGVzdChhKSlpPSEwO2Vsc2UgaWYoL15tb2QkL2kudGVzdChhKSlLbT9vPSEwOnM9ITA7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAiK2EpfXJldHVybiByJiYodD0iQWx0LSIrdCkscyYmKHQ9IkN0cmwtIit0KSxvJiYodD0iTWV0YS0iK3QpLGkmJih0PSJTaGlmdC0iK3QpLHR9ZnVuY3Rpb24gUW0obil7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gbillW0dtKHQpXT1uW3RdO3JldHVybiBlfWZ1bmN0aW9uIGhpKG4sZSx0PSEwKXtyZXR1cm4gZS5hbHRLZXkmJihuPSJBbHQtIituKSxlLmN0cmxLZXkmJihuPSJDdHJsLSIrbiksZS5tZXRhS2V5JiYobj0iTWV0YS0iK24pLHQmJmUuc2hpZnRLZXkmJihuPSJTaGlmdC0iK24pLG59ZnVuY3Rpb24gWG0obil7cmV0dXJuIG5ldyBHKHtwcm9wczp7aGFuZGxlS2V5RG93bjpObyhuKX19KX1mdW5jdGlvbiBObyhuKXtsZXQgZT1RbShuKTtyZXR1cm4gZnVuY3Rpb24odCxyKXtsZXQgcz1XbShyKSxpLG89ZVtoaShzLHIpXTtpZihvJiZvKHQuc3RhdGUsdC5kaXNwYXRjaCx0KSlyZXR1cm4hMDtpZihzLmxlbmd0aD09MSYmcyE9IiAiKXtpZihyLnNoaWZ0S2V5KXtsZXQgbD1lW2hpKHMsciwhMSldO2lmKGwmJmwodC5zdGF0ZSx0LmRpc3BhdGNoLHQpKXJldHVybiEwfWlmKChyLmFsdEtleXx8ci5tZXRhS2V5fHxyLmN0cmxLZXkpJiYhKEptJiZyLmN0cmxLZXkmJnIuYWx0S2V5KSYmKGk9TXRbci5rZXlDb2RlXSkmJmkhPXMpe2xldCBsPWVbaGkoaSxyKV07aWYobCYmbCh0LnN0YXRlLHQuZGlzcGF0Y2gsdCkpcmV0dXJuITB9fXJldHVybiExfX12YXIgWW09T2JqZWN0LmRlZmluZVByb3BlcnR5LFJvPShuLGUpPT57Zm9yKHZhciB0IGluIGUpWW0obix0LHtnZXQ6ZVt0XSxlbnVtZXJhYmxlOiEwfSl9O2Z1bmN0aW9uICRzKG4pe2NvbnN0e3N0YXRlOmUsdHJhbnNhY3Rpb246dH09bjtsZXR7c2VsZWN0aW9uOnJ9PXQse2RvYzpzfT10LHtzdG9yZWRNYXJrczppfT10O3JldHVybnsuLi5lLGFwcGx5OmUuYXBwbHkuYmluZChlKSxhcHBseVRyYW5zYWN0aW9uOmUuYXBwbHlUcmFuc2FjdGlvbi5iaW5kKGUpLHBsdWdpbnM6ZS5wbHVnaW5zLHNjaGVtYTplLnNjaGVtYSxyZWNvbmZpZ3VyZTplLnJlY29uZmlndXJlLmJpbmQoZSksdG9KU09OOmUudG9KU09OLmJpbmQoZSksZ2V0IHN0b3JlZE1hcmtzKCl7cmV0dXJuIGl9LGdldCBzZWxlY3Rpb24oKXtyZXR1cm4gcn0sZ2V0IGRvYygpe3JldHVybiBzfSxnZXQgdHIoKXtyZXR1cm4gcj10LnNlbGVjdGlvbixzPXQuZG9jLGk9dC5zdG9yZWRNYXJrcyx0fX19dmFyIEJzPWNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuZWRpdG9yPW4uZWRpdG9yLHRoaXMucmF3Q29tbWFuZHM9dGhpcy5lZGl0b3IuZXh0ZW5zaW9uTWFuYWdlci5jb21tYW5kcyx0aGlzLmN1c3RvbVN0YXRlPW4uc3RhdGV9Z2V0IGhhc0N1c3RvbVN0YXRlKCl7cmV0dXJuISF0aGlzLmN1c3RvbVN0YXRlfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmN1c3RvbVN0YXRlfHx0aGlzLmVkaXRvci5zdGF0ZX1nZXQgY29tbWFuZHMoKXtjb25zdHtyYXdDb21tYW5kczpuLGVkaXRvcjplLHN0YXRlOnR9PXRoaXMse3ZpZXc6cn09ZSx7dHI6c309dCxpPXRoaXMuYnVpbGRQcm9wcyhzKTtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLm1hcCgoW28sbF0pPT5bbywoLi4uYyk9Pntjb25zdCB1PWwoLi4uYykoaSk7cmV0dXJuIXMuZ2V0TWV0YSgicHJldmVudERpc3BhdGNoIikmJiF0aGlzLmhhc0N1c3RvbVN0YXRlJiZyLmRpc3BhdGNoKHMpLHV9XSkpfWdldCBjaGFpbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNoYWluKCl9Z2V0IGNhbigpe3JldHVybigpPT50aGlzLmNyZWF0ZUNhbigpfWNyZWF0ZUNoYWluKG4sZT0hMCl7Y29uc3R7cmF3Q29tbWFuZHM6dCxlZGl0b3I6cixzdGF0ZTpzfT10aGlzLHt2aWV3Oml9PXIsbz1bXSxsPSEhbixhPW58fHMudHIsYz0oKT0+KCFsJiZlJiYhYS5nZXRNZXRhKCJwcmV2ZW50RGlzcGF0Y2giKSYmIXRoaXMuaGFzQ3VzdG9tU3RhdGUmJmkuZGlzcGF0Y2goYSksby5ldmVyeShkPT5kPT09ITApKSx1PXsuLi5PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKChbZCxoXSk9PltkLCguLi5wKT0+e2NvbnN0IG09dGhpcy5idWlsZFByb3BzKGEsZSksZz1oKC4uLnApKG0pO3JldHVybiBvLnB1c2goZyksdX1dKSkscnVuOmN9O3JldHVybiB1fWNyZWF0ZUNhbihuKXtjb25zdHtyYXdDb21tYW5kczplLHN0YXRlOnR9PXRoaXMscj0hMSxzPW58fHQudHIsaT10aGlzLmJ1aWxkUHJvcHMocyxyKTtyZXR1cm57Li4uT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLm1hcCgoW2wsYV0pPT5bbCwoLi4uYyk9PmEoLi4uYykoey4uLmksZGlzcGF0Y2g6dm9pZCAwfSldKSksY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4ocyxyKX19YnVpbGRQcm9wcyhuLGU9ITApe2NvbnN0e3Jhd0NvbW1hbmRzOnQsZWRpdG9yOnIsc3RhdGU6c309dGhpcyx7dmlldzppfT1yLG89e3RyOm4sZWRpdG9yOnIsdmlldzppLHN0YXRlOiRzKHtzdGF0ZTpzLHRyYW5zYWN0aW9uOm59KSxkaXNwYXRjaDplPygpPT57fTp2b2lkIDAsY2hhaW46KCk9PnRoaXMuY3JlYXRlQ2hhaW4obixlKSxjYW46KCk9PnRoaXMuY3JlYXRlQ2FuKG4pLGdldCBjb21tYW5kcygpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKChbbCxhXSk9PltsLCguLi5jKT0+YSguLi5jKShvKV0pKX19O3JldHVybiBvfX0sJGU9e307Um8oJGUse2JsdXI6KCk9PlptLGNsZWFyQ29udGVudDooKT0+ZWcsY2xlYXJOb2RlczooKT0+dGcsY29tbWFuZDooKT0+bmcsY3JlYXRlUGFyYWdyYXBoTmVhcjooKT0+cmcsY3V0OigpPT5zZyxkZWxldGVDdXJyZW50Tm9kZTooKT0+aWcsZGVsZXRlTm9kZTooKT0+b2csZGVsZXRlUmFuZ2U6KCk9PmxnLGRlbGV0ZVNlbGVjdGlvbjooKT0+YWcsZW50ZXI6KCk9PmNnLGV4aXRDb2RlOigpPT51ZyxleHRlbmRNYXJrUmFuZ2U6KCk9PmRnLGZpcnN0OigpPT5oZyxmb2N1czooKT0+cGcsZm9yRWFjaDooKT0+bWcsaW5zZXJ0Q29udGVudDooKT0+Z2csaW5zZXJ0Q29udGVudEF0OigpPT5iZyxqb2luQmFja3dhcmQ6KCk9PnZnLGpvaW5Eb3duOigpPT53Zyxqb2luRm9yd2FyZDooKT0+U2csam9pbkl0ZW1CYWNrd2FyZDooKT0+Q2csam9pbkl0ZW1Gb3J3YXJkOigpPT5UZyxqb2luVGV4dGJsb2NrQmFja3dhcmQ6KCk9Pk1nLGpvaW5UZXh0YmxvY2tGb3J3YXJkOigpPT5FZyxqb2luVXA6KCk9PnhnLGtleWJvYXJkU2hvcnRjdXQ6KCk9Pk9nLGxpZnQ6KCk9Pk5nLGxpZnRFbXB0eUJsb2NrOigpPT5SZyxsaWZ0TGlzdEl0ZW06KCk9PklnLG5ld2xpbmVJbkNvZGU6KCk9PkRnLHJlc2V0QXR0cmlidXRlczooKT0+TGcsc2Nyb2xsSW50b1ZpZXc6KCk9PlBnLHNlbGVjdEFsbDooKT0+emcsc2VsZWN0Tm9kZUJhY2t3YXJkOigpPT4kZyxzZWxlY3ROb2RlRm9yd2FyZDooKT0+Qmcsc2VsZWN0UGFyZW50Tm9kZTooKT0+X2csc2VsZWN0VGV4dGJsb2NrRW5kOigpPT5IZyxzZWxlY3RUZXh0YmxvY2tTdGFydDooKT0+Rmcsc2V0Q29udGVudDooKT0+Vmcsc2V0TWFyazooKT0+Y3ksc2V0TWV0YTooKT0+dXksc2V0Tm9kZTooKT0+ZHksc2V0Tm9kZVNlbGVjdGlvbjooKT0+aHksc2V0VGV4dERpcmVjdGlvbjooKT0+Znksc2V0VGV4dFNlbGVjdGlvbjooKT0+cHksc2lua0xpc3RJdGVtOigpPT5teSxzcGxpdEJsb2NrOigpPT5neSxzcGxpdExpc3RJdGVtOigpPT55eSx0b2dnbGVMaXN0OigpPT5ieSx0b2dnbGVNYXJrOigpPT54eSx0b2dnbGVOb2RlOigpPT53eSx0b2dnbGVXcmFwOigpPT52eSx1bmRvSW5wdXRSdWxlOigpPT5TeSx1bnNldEFsbE1hcmtzOigpPT5DeSx1bnNldE1hcms6KCk9PlR5LHVuc2V0VGV4dERpcmVjdGlvbjooKT0+TXksdXBkYXRlQXR0cmlidXRlczooKT0+RXksd3JhcEluOigpPT5BeSx3cmFwSW5MaXN0OigpPT5PeX0pO3ZhciBabT0oKT0+KHtlZGl0b3I6bix2aWV3OmV9KT0+KHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciB0O24uaXNEZXN0cm95ZWR8fChlLmRvbS5ibHVyKCksKHQ9d2luZG93Py5nZXRTZWxlY3Rpb24oKSk9PW51bGx8fHQucmVtb3ZlQWxsUmFuZ2VzKCkpfSksITApLGVnPShuPSEwKT0+KHtjb21tYW5kczplfSk9PmUuc2V0Q29udGVudCgiIix7ZW1pdFVwZGF0ZTpufSksdGc9KCk9Pih7c3RhdGU6bix0cjplLGRpc3BhdGNoOnR9KT0+e2NvbnN0e3NlbGVjdGlvbjpyfT1lLHtyYW5nZXM6c309cjtyZXR1cm4gdCYmcy5mb3JFYWNoKCh7JGZyb206aSwkdG86b30pPT57bi5kb2Mubm9kZXNCZXR3ZWVuKGkucG9zLG8ucG9zLChsLGEpPT57aWYobC50eXBlLmlzVGV4dClyZXR1cm47Y29uc3R7ZG9jOmMsbWFwcGluZzp1fT1lLGQ9Yy5yZXNvbHZlKHUubWFwKGEpKSxoPWMucmVzb2x2ZSh1Lm1hcChhK2wubm9kZVNpemUpKSxmPWQuYmxvY2tSYW5nZShoKTtpZighZilyZXR1cm47Y29uc3QgcD1tbihmKTtpZihsLnR5cGUuaXNUZXh0YmxvY2spe2NvbnN0e2RlZmF1bHRUeXBlOm19PWQucGFyZW50LmNvbnRlbnRNYXRjaEF0KGQuaW5kZXgoKSk7ZS5zZXROb2RlTWFya3VwKGYuc3RhcnQsbSl9KHB8fHA9PT0wKSYmZS5saWZ0KGYscCl9KX0pLCEwfSxuZz1uPT5lPT5uKGUpLHJnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5hdShuLGUpLHNnPShuLGUpPT4oe2VkaXRvcjp0LHRyOnJ9KT0+e2NvbnN0e3N0YXRlOnN9PXQsaT1zLmRvYy5zbGljZShuLmZyb20sbi50byk7ci5kZWxldGVSYW5nZShuLmZyb20sbi50byk7Y29uc3Qgbz1yLm1hcHBpbmcubWFwKGUpO3JldHVybiByLmluc2VydChvLGkuY29udGVudCksci5zZXRTZWxlY3Rpb24obmV3IEQoci5kb2MucmVzb2x2ZShNYXRoLm1heChvLTEsMCkpKSksITB9LGlnPSgpPT4oe3RyOm4sZGlzcGF0Y2g6ZX0pPT57Y29uc3R7c2VsZWN0aW9uOnR9PW4scj10LiRhbmNob3Iubm9kZSgpO2lmKHIuY29udGVudC5zaXplPjApcmV0dXJuITE7Y29uc3Qgcz1uLnNlbGVjdGlvbi4kYW5jaG9yO2ZvcihsZXQgaT1zLmRlcHRoO2k+MDtpLT0xKWlmKHMubm9kZShpKS50eXBlPT09ci50eXBlKXtpZihlKXtjb25zdCBsPXMuYmVmb3JlKGkpLGE9cy5hZnRlcihpKTtuLmRlbGV0ZShsLGEpLnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9cmV0dXJuITF9O2Z1bmN0aW9uIGllKG4sZSl7aWYodHlwZW9mIG49PSJzdHJpbmciKXtpZighZS5ub2Rlc1tuXSl0aHJvdyBFcnJvcihgVGhlcmUgaXMgbm8gbm9kZSB0eXBlIG5hbWVkICcke259Jy4gTWF5YmUgeW91IGZvcmdvdCB0byBhZGQgdGhlIGV4dGVuc2lvbj9gKTtyZXR1cm4gZS5ub2Rlc1tuXX1yZXR1cm4gbn12YXIgb2c9bj0+KHt0cjplLHN0YXRlOnQsZGlzcGF0Y2g6cn0pPT57Y29uc3Qgcz1pZShuLHQuc2NoZW1hKSxpPWUuc2VsZWN0aW9uLiRhbmNob3I7Zm9yKGxldCBvPWkuZGVwdGg7bz4wO28tPTEpaWYoaS5ub2RlKG8pLnR5cGU9PT1zKXtpZihyKXtjb25zdCBhPWkuYmVmb3JlKG8pLGM9aS5hZnRlcihvKTtlLmRlbGV0ZShhLGMpLnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9cmV0dXJuITF9LGxnPW49Pih7dHI6ZSxkaXNwYXRjaDp0fSk9Pntjb25zdHtmcm9tOnIsdG86c309bjtyZXR1cm4gdCYmZS5kZWxldGUocixzKSwhMH0sYWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PmdvKG4sZSksY2c9KCk9Pih7Y29tbWFuZHM6bn0pPT5uLmtleWJvYXJkU2hvcnRjdXQoIkVudGVyIiksdWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PktmKG4sZSk7ZnVuY3Rpb24gSW8obil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKT09PSJbb2JqZWN0IFJlZ0V4cF0ifWZ1bmN0aW9uIEpyKG4sZSx0PXtzdHJpY3Q6ITB9KXtjb25zdCByPU9iamVjdC5rZXlzKGUpO3JldHVybiByLmxlbmd0aD9yLmV2ZXJ5KHM9PnQuc3RyaWN0P2Vbc109PT1uW3NdOklvKGVbc10pP2Vbc10udGVzdChuW3NdKTplW3NdPT09bltzXSk6ITB9ZnVuY3Rpb24gS3UobixlLHQ9e30pe3JldHVybiBuLmZpbmQocj0+ci50eXBlPT09ZSYmSnIoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKHQpLm1hcChzPT5bcyxyLmF0dHJzW3NdXSkpLHQpKX1mdW5jdGlvbiBtYShuLGUsdD17fSl7cmV0dXJuISFLdShuLGUsdCl9ZnVuY3Rpb24gRG8obixlLHQpe2lmKCFufHwhZSlyZXR1cm47bGV0IHI9bi5wYXJlbnQuY2hpbGRBZnRlcihuLnBhcmVudE9mZnNldCk7aWYoKCFyLm5vZGV8fCFyLm5vZGUubWFya3Muc29tZShjPT5jLnR5cGU9PT1lKSkmJihyPW4ucGFyZW50LmNoaWxkQmVmb3JlKG4ucGFyZW50T2Zmc2V0KSksIXIubm9kZXx8IXIubm9kZS5tYXJrcy5zb21lKGM9PmMudHlwZT09PWUpKXJldHVybjtpZighdCl7Y29uc3QgYz1yLm5vZGUubWFya3MuZmluZCh1PT51LnR5cGU9PT1lKTtjJiYodD1jLmF0dHJzKX1pZighS3UoWy4uLnIubm9kZS5tYXJrc10sZSx0KSlyZXR1cm47bGV0IGk9ci5pbmRleCxvPW4uc3RhcnQoKStyLm9mZnNldCxsPWkrMSxhPW8rci5ub2RlLm5vZGVTaXplO2Zvcig7aT4wJiZtYShbLi4ubi5wYXJlbnQuY2hpbGQoaS0xKS5tYXJrc10sZSx0KTspaS09MSxvLT1uLnBhcmVudC5jaGlsZChpKS5ub2RlU2l6ZTtmb3IoO2w8bi5wYXJlbnQuY2hpbGRDb3VudCYmbWEoWy4uLm4ucGFyZW50LmNoaWxkKGwpLm1hcmtzXSxlLHQpOylhKz1uLnBhcmVudC5jaGlsZChsKS5ub2RlU2l6ZSxsKz0xO3JldHVybntmcm9tOm8sdG86YX19ZnVuY3Rpb24gYXQobixlKXtpZih0eXBlb2Ygbj09InN0cmluZyIpe2lmKCFlLm1hcmtzW25dKXRocm93IEVycm9yKGBUaGVyZSBpcyBubyBtYXJrIHR5cGUgbmFtZWQgJyR7bn0nLiBNYXliZSB5b3UgZm9yZ290IHRvIGFkZCB0aGUgZXh0ZW5zaW9uP2ApO3JldHVybiBlLm1hcmtzW25dfXJldHVybiBufXZhciBkZz0obixlKT0+KHt0cjp0LHN0YXRlOnIsZGlzcGF0Y2g6c30pPT57Y29uc3QgaT1hdChuLHIuc2NoZW1hKSx7ZG9jOm8sc2VsZWN0aW9uOmx9PXQseyRmcm9tOmEsZnJvbTpjLHRvOnV9PWw7aWYocyl7Y29uc3QgZD1EbyhhLGksZSk7aWYoZCYmZC5mcm9tPD1jJiZkLnRvPj11KXtjb25zdCBoPUQuY3JlYXRlKG8sZC5mcm9tLGQudG8pO3Quc2V0U2VsZWN0aW9uKGgpfX1yZXR1cm4hMH0saGc9bj0+ZT0+e2NvbnN0IHQ9dHlwZW9mIG49PSJmdW5jdGlvbiI/bihlKTpuO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cis9MSlpZih0W3JdKGUpKXJldHVybiEwO3JldHVybiExfTtmdW5jdGlvbiBMbyhuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIER9ZnVuY3Rpb24gc3Qobj0wLGU9MCx0PTApe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChuLGUpLHQpfWZ1bmN0aW9uIEp1KG4sZT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PUkuYXRTdGFydChuKSxyPUkuYXRFbmQobik7aWYoZT09PSJzdGFydCJ8fGU9PT0hMClyZXR1cm4gdDtpZihlPT09ImVuZCIpcmV0dXJuIHI7Y29uc3Qgcz10LmZyb20saT1yLnRvO3JldHVybiBlPT09ImFsbCI/RC5jcmVhdGUobixzdCgwLHMsaSksc3Qobi5jb250ZW50LnNpemUscyxpKSk6RC5jcmVhdGUobixzdChlLHMsaSksc3QoZSxzLGkpKX1mdW5jdGlvbiBnYSgpe3JldHVybiBuYXZpZ2F0b3IucGxhdGZvcm09PT0iQW5kcm9pZCJ8fC9hbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX1mdW5jdGlvbiBHcigpe3JldHVyblsiaVBhZCBTaW11bGF0b3IiLCJpUGhvbmUgU2ltdWxhdG9yIiwiaVBvZCBTaW11bGF0b3IiLCJpUGFkIiwiaVBob25lIiwiaVBvZCJdLmluY2x1ZGVzKG5hdmlnYXRvci5wbGF0Zm9ybSl8fG5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoIk1hYyIpJiYib250b3VjaGVuZCJpbiBkb2N1bWVudH1mdW5jdGlvbiBmZygpe3JldHVybiB0eXBlb2YgbmF2aWdhdG9yPCJ1Ij8vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOiExfXZhciBwZz0obj1udWxsLGU9e30pPT4oe2VkaXRvcjp0LHZpZXc6cix0cjpzLGRpc3BhdGNoOml9KT0+e2U9e3Njcm9sbEludG9WaWV3OiEwLC4uLmV9O2NvbnN0IG89KCk9PnsoR3IoKXx8Z2EoKSkmJnIuZG9tLmZvY3VzKCksZmcoKSYmIUdyKCkmJiFnYSgpJiZyLmRvbS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3QuaXNEZXN0cm95ZWR8fChyLmZvY3VzKCksZT8uc2Nyb2xsSW50b1ZpZXcmJnQuY29tbWFuZHMuc2Nyb2xsSW50b1ZpZXcoKSl9KX07dHJ5e2lmKHIuaGFzRm9jdXMoKSYmbj09PW51bGx8fG49PT0hMSlyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX1pZihpJiZuPT09bnVsbCYmIUxvKHQuc3RhdGUuc2VsZWN0aW9uKSlyZXR1cm4gbygpLCEwO2NvbnN0IGw9SnUocy5kb2Msbil8fHQuc3RhdGUuc2VsZWN0aW9uLGE9dC5zdGF0ZS5zZWxlY3Rpb24uZXEobCk7cmV0dXJuIGkmJihhfHxzLnNldFNlbGVjdGlvbihsKSxhJiZzLnN0b3JlZE1hcmtzJiZzLnNldFN0b3JlZE1hcmtzKHMuc3RvcmVkTWFya3MpLG8oKSksITB9LG1nPShuLGUpPT50PT5uLmV2ZXJ5KChyLHMpPT5lKHIsey4uLnQsaW5kZXg6c30pKSxnZz0obixlKT0+KHt0cjp0LGNvbW1hbmRzOnJ9KT0+ci5pbnNlcnRDb250ZW50QXQoe2Zyb206dC5zZWxlY3Rpb24uZnJvbSx0bzp0LnNlbGVjdGlvbi50b30sbixlKSxHdT1uPT57Y29uc3QgZT1uLmNoaWxkTm9kZXM7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LT0xKXtjb25zdCByPWVbdF07ci5ub2RlVHlwZT09PTMmJnIubm9kZVZhbHVlJiYvXihcblxzXHN8XG4pJC8udGVzdChyLm5vZGVWYWx1ZSk/bi5yZW1vdmVDaGlsZChyKTpyLm5vZGVUeXBlPT09MSYmR3Uocil9cmV0dXJuIG59O2Z1bmN0aW9uIEVuKG4pe2lmKHR5cGVvZiB3aW5kb3c+InUiKXRocm93IG5ldyBFcnJvcigiW3RpcHRhcCBlcnJvcl06IHRoZXJlIGlzIG5vIHdpbmRvdyBvYmplY3QgYXZhaWxhYmxlLCBzbyB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIik7Y29uc3QgZT1gPGJvZHk+JHtufTwvYm9keT5gLHQ9bmV3IHdpbmRvdy5ET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoZSwidGV4dC9odG1sIikuYm9keTtyZXR1cm4gR3UodCl9ZnVuY3Rpb24gWm4obixlLHQpe2lmKG4gaW5zdGFuY2VvZiBMZXx8biBpbnN0YW5jZW9mIFMpcmV0dXJuIG47dD17c2xpY2U6ITAscGFyc2VPcHRpb25zOnt9LC4uLnR9O2NvbnN0IHI9dHlwZW9mIG49PSJvYmplY3QiJiZuIT09bnVsbCxzPXR5cGVvZiBuPT0ic3RyaW5nIjtpZihyKXRyeXtpZihBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aD4wKXJldHVybiBTLmZyb21BcnJheShuLm1hcChsPT5lLm5vZGVGcm9tSlNPTihsKSkpO2NvbnN0IG89ZS5ub2RlRnJvbUpTT04obik7cmV0dXJuIHQuZXJyb3JPbkludmFsaWRDb250ZW50JiZvLmNoZWNrKCksb31jYXRjaChpKXtpZih0LmVycm9yT25JbnZhbGlkQ29udGVudCl0aHJvdyBuZXcgRXJyb3IoIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudCIse2NhdXNlOml9KTtyZXR1cm4gWm4oIiIsZSx0KX1pZihzKXtpZih0LmVycm9yT25JbnZhbGlkQ29udGVudCl7bGV0IG89ITEsbD0iIjtjb25zdCBhPW5ldyBMYyh7dG9wTm9kZTplLnNwZWMudG9wTm9kZSxtYXJrczplLnNwZWMubWFya3Msbm9kZXM6ZS5zcGVjLm5vZGVzLmFwcGVuZCh7X190aXB0YXBfX3ByaXZhdGVfX3Vua25vd25fX2NhdGNoX19hbGxfX25vZGU6e2NvbnRlbnQ6ImlubGluZSoiLGdyb3VwOiJibG9jayIscGFyc2VET006W3t0YWc6IioiLGdldEF0dHJzOmM9PihvPSEwLGw9dHlwZW9mIGM9PSJzdHJpbmciP2M6Yy5vdXRlckhUTUwsbnVsbCl9XX19KX0pO2lmKHQuc2xpY2U/aXQuZnJvbVNjaGVtYShhKS5wYXJzZVNsaWNlKEVuKG4pLHQucGFyc2VPcHRpb25zKTppdC5mcm9tU2NoZW1hKGEpLnBhcnNlKEVuKG4pLHQucGFyc2VPcHRpb25zKSx0LmVycm9yT25JbnZhbGlkQ29udGVudCYmbyl0aHJvdyBuZXcgRXJyb3IoIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudCIse2NhdXNlOm5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGZvdW5kOiAke2x9YCl9KX1jb25zdCBpPWl0LmZyb21TY2hlbWEoZSk7cmV0dXJuIHQuc2xpY2U/aS5wYXJzZVNsaWNlKEVuKG4pLHQucGFyc2VPcHRpb25zKS5jb250ZW50OmkucGFyc2UoRW4obiksdC5wYXJzZU9wdGlvbnMpfXJldHVybiBabigiIixlLHQpfWZ1bmN0aW9uIHlnKG4sZSx0KXtjb25zdCByPW4uc3RlcHMubGVuZ3RoLTE7aWYocjxlKXJldHVybjtjb25zdCBzPW4uc3RlcHNbcl07aWYoIShzIGluc3RhbmNlb2YgcmV8fHMgaW5zdGFuY2VvZiBhZSkpcmV0dXJuO2NvbnN0IGk9bi5tYXBwaW5nLm1hcHNbcl07bGV0IG89MDtpLmZvckVhY2goKGwsYSxjLHUpPT57bz09PTAmJihvPXUpfSksbi5zZXRTZWxlY3Rpb24oSS5uZWFyKG4uZG9jLnJlc29sdmUobyksdCkpfXZhciBrZz1uPT4hKCJ0eXBlImluIG4pLGJnPShuLGUsdCk9Pih7dHI6cixkaXNwYXRjaDpzLGVkaXRvcjppfSk9Pnt2YXIgbztpZihzKXt0PXtwYXJzZU9wdGlvbnM6aS5vcHRpb25zLnBhcnNlT3B0aW9ucyx1cGRhdGVTZWxlY3Rpb246ITAsYXBwbHlJbnB1dFJ1bGVzOiExLGFwcGx5UGFzdGVSdWxlczohMSwuLi50fTtsZXQgbDtjb25zdCBhPWc9PntpLmVtaXQoImNvbnRlbnRFcnJvciIse2VkaXRvcjppLGVycm9yOmcsZGlzYWJsZUNvbGxhYm9yYXRpb246KCk9PnsiY29sbGFib3JhdGlvbiJpbiBpLnN0b3JhZ2UmJnR5cGVvZiBpLnN0b3JhZ2UuY29sbGFib3JhdGlvbj09Im9iamVjdCImJmkuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiYoaS5zdG9yYWdlLmNvbGxhYm9yYXRpb24uaXNEaXNhYmxlZD0hMCl9fSl9LGM9e3ByZXNlcnZlV2hpdGVzcGFjZToiZnVsbCIsLi4udC5wYXJzZU9wdGlvbnN9O2lmKCF0LmVycm9yT25JbnZhbGlkQ29udGVudCYmIWkub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2smJmkub3B0aW9ucy5lbWl0Q29udGVudEVycm9yKXRyeXtabihlLGkuc2NoZW1hLHtwYXJzZU9wdGlvbnM6YyxlcnJvck9uSW52YWxpZENvbnRlbnQ6ITB9KX1jYXRjaChnKXthKGcpfXRyeXtsPVpuKGUsaS5zY2hlbWEse3BhcnNlT3B0aW9uczpjLGVycm9yT25JbnZhbGlkQ29udGVudDoobz10LmVycm9yT25JbnZhbGlkQ29udGVudCkhPW51bGw/bzppLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrfSl9Y2F0Y2goZyl7cmV0dXJuIGEoZyksITF9bGV0e2Zyb206dSx0bzpkfT10eXBlb2Ygbj09Im51bWJlciI/e2Zyb206bix0bzpufTp7ZnJvbTpuLmZyb20sdG86bi50b30saD0hMCxmPSEwO2lmKChrZyhsKT9sOltsXSkuZm9yRWFjaChnPT57Zy5jaGVjaygpLGg9aD9nLmlzVGV4dCYmZy5tYXJrcy5sZW5ndGg9PT0wOiExLGY9Zj9nLmlzQmxvY2s6ITF9KSx1PT09ZCYmZil7Y29uc3R7cGFyZW50Omd9PXIuZG9jLnJlc29sdmUodSk7Zy5pc1RleHRibG9jayYmIWcudHlwZS5zcGVjLmNvZGUmJiFnLmNoaWxkQ291bnQmJih1LT0xLGQrPTEpfWxldCBtO2lmKGgpe2lmKEFycmF5LmlzQXJyYXkoZSkpbT1lLm1hcChnPT5nLnRleHR8fCIiKS5qb2luKCIiKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBTKXtsZXQgZz0iIjtlLmZvckVhY2goeT0+e3kudGV4dCYmKGcrPXkudGV4dCl9KSxtPWd9ZWxzZSB0eXBlb2YgZT09Im9iamVjdCImJmUmJmUudGV4dD9tPWUudGV4dDptPWU7ci5pbnNlcnRUZXh0KG0sdSxkKX1lbHNle209bDtjb25zdCBnPXIuZG9jLnJlc29sdmUodSkseT1nLm5vZGUoKSxrPWcucGFyZW50T2Zmc2V0PT09MCxiPXkuaXNUZXh0fHx5LmlzVGV4dGJsb2NrLHc9eS5jb250ZW50LnNpemU+MDtrJiZiJiZ3JiZmJiYodT1NYXRoLm1heCgwLHUtMSkpLHIucmVwbGFjZVdpdGgodSxkLG0pfXQudXBkYXRlU2VsZWN0aW9uJiZ5ZyhyLHIuc3RlcHMubGVuZ3RoLTEsLTEpLHQuYXBwbHlJbnB1dFJ1bGVzJiZyLnNldE1ldGEoImFwcGx5SW5wdXRSdWxlcyIse2Zyb206dSx0ZXh0Om19KSx0LmFwcGx5UGFzdGVSdWxlcyYmci5zZXRNZXRhKCJhcHBseVBhc3RlUnVsZXMiLHtmcm9tOnUsdGV4dDptfSl9cmV0dXJuITB9LHhnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5qZihuLGUpLHdnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5xZihuLGUpLHZnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT50dShuLGUpLFNnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5pdShuLGUpLENnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZSx0cjp0fSk9Pnt0cnl7Y29uc3Qgcj1ScyhuLmRvYyxuLnNlbGVjdGlvbi4kZnJvbS5wb3MsLTEpO3JldHVybiByPT1udWxsPyExOih0LmpvaW4ociwyKSxlJiZlKHQpLCEwKX1jYXRjaHtyZXR1cm4hMX19LFRnPSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZSx0cjp0fSk9Pnt0cnl7Y29uc3Qgcj1ScyhuLmRvYyxuLnNlbGVjdGlvbi4kZnJvbS5wb3MsMSk7cmV0dXJuIHI9PW51bGw/ITE6KHQuam9pbihyLDIpLGUmJmUodCksITApfWNhdGNoe3JldHVybiExfX0sTWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlZmKG4sZSksRWc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlVmKG4sZSk7ZnVuY3Rpb24gUXUoKXtyZXR1cm4gdHlwZW9mIG5hdmlnYXRvcjwidSI/L01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOiExfWZ1bmN0aW9uIEFnKG4pe2NvbnN0IGU9bi5zcGxpdCgvLSg/ISQpLyk7bGV0IHQ9ZVtlLmxlbmd0aC0xXTt0PT09IlNwYWNlIiYmKHQ9IiAiKTtsZXQgcixzLGksbztmb3IobGV0IGw9MDtsPGUubGVuZ3RoLTE7bCs9MSl7Y29uc3QgYT1lW2xdO2lmKC9eKGNtZHxtZXRhfG0pJC9pLnRlc3QoYSkpbz0hMDtlbHNlIGlmKC9eYShsdCk/JC9pLnRlc3QoYSkpcj0hMDtlbHNlIGlmKC9eKGN8Y3RybHxjb250cm9sKSQvaS50ZXN0KGEpKXM9ITA7ZWxzZSBpZigvXnMoaGlmdCk/JC9pLnRlc3QoYSkpaT0hMDtlbHNlIGlmKC9ebW9kJC9pLnRlc3QoYSkpR3IoKXx8UXUoKT9vPSEwOnM9ITA7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAke2F9YCl9cmV0dXJuIHImJih0PWBBbHQtJHt0fWApLHMmJih0PWBDdHJsLSR7dH1gKSxvJiYodD1gTWV0YS0ke3R9YCksaSYmKHQ9YFNoaWZ0LSR7dH1gKSx0fXZhciBPZz1uPT4oe2VkaXRvcjplLHZpZXc6dCx0cjpyLGRpc3BhdGNoOnN9KT0+e2NvbnN0IGk9QWcobikuc3BsaXQoLy0oPyEkKS8pLG89aS5maW5kKGM9PiFbIkFsdCIsIkN0cmwiLCJNZXRhIiwiU2hpZnQiXS5pbmNsdWRlcyhjKSksbD1uZXcgS2V5Ym9hcmRFdmVudCgia2V5ZG93biIse2tleTpvPT09IlNwYWNlIj8iICI6byxhbHRLZXk6aS5pbmNsdWRlcygiQWx0IiksY3RybEtleTppLmluY2x1ZGVzKCJDdHJsIiksbWV0YUtleTppLmluY2x1ZGVzKCJNZXRhIiksc2hpZnRLZXk6aS5pbmNsdWRlcygiU2hpZnQiKSxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KSxhPWUuY2FwdHVyZVRyYW5zYWN0aW9uKCgpPT57dC5zb21lUHJvcCgiaGFuZGxlS2V5RG93biIsYz0+Yyh0LGwpKX0pO3JldHVybiBhPy5zdGVwcy5mb3JFYWNoKGM9Pntjb25zdCB1PWMubWFwKHIubWFwcGluZyk7dSYmcyYmci5tYXliZVN0ZXAodSl9KSwhMH07ZnVuY3Rpb24gRXQobixlLHQ9e30pe2NvbnN0e2Zyb206cix0bzpzLGVtcHR5Oml9PW4uc2VsZWN0aW9uLG89ZT9pZShlLG4uc2NoZW1hKTpudWxsLGw9W107bi5kb2Mubm9kZXNCZXR3ZWVuKHIscywoZCxoKT0+e2lmKGQuaXNUZXh0KXJldHVybjtjb25zdCBmPU1hdGgubWF4KHIsaCkscD1NYXRoLm1pbihzLGgrZC5ub2RlU2l6ZSk7bC5wdXNoKHtub2RlOmQsZnJvbTpmLHRvOnB9KX0pO2NvbnN0IGE9cy1yLGM9bC5maWx0ZXIoZD0+bz9vLm5hbWU9PT1kLm5vZGUudHlwZS5uYW1lOiEwKS5maWx0ZXIoZD0+SnIoZC5ub2RlLmF0dHJzLHQse3N0cmljdDohMX0pKTtyZXR1cm4gaT8hIWMubGVuZ3RoOmMucmVkdWNlKChkLGgpPT5kK2gudG8taC5mcm9tLDApPj1hfXZhciBOZz0obixlPXt9KT0+KHtzdGF0ZTp0LGRpc3BhdGNoOnJ9KT0+e2NvbnN0IHM9aWUobix0LnNjaGVtYSk7cmV0dXJuIEV0KHQscyxlKT9XZih0LHIpOiExfSxSZz0oKT0+KHtzdGF0ZTpuLGRpc3BhdGNoOmV9KT0+Y3UobixlKSxJZz1uPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT57Y29uc3Qgcj1pZShuLGUuc2NoZW1hKTtyZXR1cm4gc3AocikoZSx0KX0sRGc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9Pmx1KG4sZSk7ZnVuY3Rpb24gX3MobixlKXtyZXR1cm4gZS5ub2Rlc1tuXT8ibm9kZSI6ZS5tYXJrc1tuXT8ibWFyayI6bnVsbH1mdW5jdGlvbiB5YShuLGUpe2NvbnN0IHQ9dHlwZW9mIGU9PSJzdHJpbmciP1tlXTplO3JldHVybiBPYmplY3Qua2V5cyhuKS5yZWR1Y2UoKHIscyk9Pih0LmluY2x1ZGVzKHMpfHwocltzXT1uW3NdKSxyKSx7fSl9dmFyIExnPShuLGUpPT4oe3RyOnQsc3RhdGU6cixkaXNwYXRjaDpzfSk9PntsZXQgaT1udWxsLG89bnVsbDtjb25zdCBsPV9zKHR5cGVvZiBuPT0ic3RyaW5nIj9uOm4ubmFtZSxyLnNjaGVtYSk7aWYoIWwpcmV0dXJuITE7bD09PSJub2RlIiYmKGk9aWUobixyLnNjaGVtYSkpLGw9PT0ibWFyayImJihvPWF0KG4sci5zY2hlbWEpKTtsZXQgYT0hMTtyZXR1cm4gdC5zZWxlY3Rpb24ucmFuZ2VzLmZvckVhY2goYz0+e3IuZG9jLm5vZGVzQmV0d2VlbihjLiRmcm9tLnBvcyxjLiR0by5wb3MsKHUsZCk9PntpJiZpPT09dS50eXBlJiYoYT0hMCxzJiZ0LnNldE5vZGVNYXJrdXAoZCx2b2lkIDAseWEodS5hdHRycyxlKSkpLG8mJnUubWFya3MubGVuZ3RoJiZ1Lm1hcmtzLmZvckVhY2goaD0+e289PT1oLnR5cGUmJihhPSEwLHMmJnQuYWRkTWFyayhkLGQrdS5ub2RlU2l6ZSxvLmNyZWF0ZSh5YShoLmF0dHJzLGUpKSkpfSl9KX0pLGF9LFBnPSgpPT4oe3RyOm4sZGlzcGF0Y2g6ZX0pPT4oZSYmbi5zY3JvbGxJbnRvVmlldygpLCEwKSx6Zz0oKT0+KHt0cjpuLGRpc3BhdGNoOmV9KT0+e2lmKGUpe2NvbnN0IHQ9bmV3IEFlKG4uZG9jKTtuLnNldFNlbGVjdGlvbih0KX1yZXR1cm4hMH0sJGc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PnJ1KG4sZSksQmc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9Pm91KG4sZSksX2c9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlFmKG4sZSksSGc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PlpmKG4sZSksRmc9KCk9Pih7c3RhdGU6bixkaXNwYXRjaDplfSk9PllmKG4sZSk7ZnVuY3Rpb24gamkobixlLHQ9e30scj17fSl7cmV0dXJuIFpuKG4sZSx7c2xpY2U6ITEscGFyc2VPcHRpb25zOnQsZXJyb3JPbkludmFsaWRDb250ZW50OnIuZXJyb3JPbkludmFsaWRDb250ZW50fSl9dmFyIFZnPShuLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6ZSxlbWl0VXBkYXRlOnQ9ITAscGFyc2VPcHRpb25zOnI9e319PXt9KT0+KHtlZGl0b3I6cyx0cjppLGRpc3BhdGNoOm8sY29tbWFuZHM6bH0pPT57Y29uc3R7ZG9jOmF9PWk7aWYoci5wcmVzZXJ2ZVdoaXRlc3BhY2UhPT0iZnVsbCIpe2NvbnN0IGM9amkobixzLnNjaGVtYSxyLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6ZT8/cy5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pO3JldHVybiBvJiZpLnJlcGxhY2VXaXRoKDAsYS5jb250ZW50LnNpemUsYykuc2V0TWV0YSgicHJldmVudFVwZGF0ZSIsIXQpLCEwfXJldHVybiBvJiZpLnNldE1ldGEoInByZXZlbnRVcGRhdGUiLCF0KSxsLmluc2VydENvbnRlbnRBdCh7ZnJvbTowLHRvOmEuY29udGVudC5zaXplfSxuLHtwYXJzZU9wdGlvbnM6cixlcnJvck9uSW52YWxpZENvbnRlbnQ6ZT8/cy5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja30pfTtmdW5jdGlvbiBYdShuLGUpe2NvbnN0IHQ9YXQoZSxuLnNjaGVtYSkse2Zyb206cix0bzpzLGVtcHR5Oml9PW4uc2VsZWN0aW9uLG89W107aT8obi5zdG9yZWRNYXJrcyYmby5wdXNoKC4uLm4uc3RvcmVkTWFya3MpLG8ucHVzaCguLi5uLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSk6bi5kb2Mubm9kZXNCZXR3ZWVuKHIscyxhPT57by5wdXNoKC4uLmEubWFya3MpfSk7Y29uc3QgbD1vLmZpbmQoYT0+YS50eXBlLm5hbWU9PT10Lm5hbWUpO3JldHVybiBsP3suLi5sLmF0dHJzfTp7fX1mdW5jdGlvbiBZdShuLGUpe2NvbnN0IHQ9bmV3IFFjKG4pO3JldHVybiBlLmZvckVhY2gocj0+e3Iuc3RlcHMuZm9yRWFjaChzPT57dC5zdGVwKHMpfSl9KSx0fWZ1bmN0aW9uIFVnKG4pe2ZvcihsZXQgZT0wO2U8bi5lZGdlQ291bnQ7ZSs9MSl7Y29uc3R7dHlwZTp0fT1uLmVkZ2UoZSk7aWYodC5pc1RleHRibG9jayYmIXQuaGFzUmVxdWlyZWRBdHRycygpKXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIGpnKG4sZSx0KXtjb25zdCByPVtdO3JldHVybiBuLm5vZGVzQmV0d2VlbihlLmZyb20sZS50bywocyxpKT0+e3QocykmJnIucHVzaCh7bm9kZTpzLHBvczppfSl9KSxyfWZ1bmN0aW9uIHFnKG4sZSl7Zm9yKGxldCB0PW4uZGVwdGg7dD4wO3QtPTEpe2NvbnN0IHI9bi5ub2RlKHQpO2lmKGUocikpcmV0dXJue3Bvczp0PjA/bi5iZWZvcmUodCk6MCxzdGFydDpuLnN0YXJ0KHQpLGRlcHRoOnQsbm9kZTpyfX19ZnVuY3Rpb24gSHMobil7cmV0dXJuIGU9PnFnKGUuJGZyb20sbil9ZnVuY3Rpb24gQShuLGUsdCl7cmV0dXJuIG4uY29uZmlnW2VdPT09dm9pZCAwJiZuLnBhcmVudD9BKG4ucGFyZW50LGUsdCk6dHlwZW9mIG4uY29uZmlnW2VdPT0iZnVuY3Rpb24iP24uY29uZmlnW2VdLmJpbmQoey4uLnQscGFyZW50Om4ucGFyZW50P0Eobi5wYXJlbnQsZSx0KTpudWxsfSk6bi5jb25maWdbZV19ZnVuY3Rpb24gRnMobil7cmV0dXJuIG4ubWFwKGU9Pntjb25zdCB0PXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOmUuc3RvcmFnZX0scj1BKGUsImFkZEV4dGVuc2lvbnMiLHQpO3JldHVybiByP1tlLC4uLkZzKHIoKSldOmV9KS5mbGF0KDEwKX1mdW5jdGlvbiBQbyhuLGUpe2NvbnN0IHQ9S3QuZnJvbVNjaGVtYShlKS5zZXJpYWxpemVGcmFnbWVudChuKSxzPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBzLmFwcGVuZENoaWxkKHQpLHMuaW5uZXJIVE1MfWZ1bmN0aW9uIFp1KG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIn1mdW5jdGlvbiBVKG4sZT12b2lkIDAsLi4udCl7cmV0dXJuIFp1KG4pP2U/bi5iaW5kKGUpKC4uLnQpOm4oLi4udCk6bn1mdW5jdGlvbiBXZyhuPXt9KXtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPT09MCYmbi5jb25zdHJ1Y3Rvcj09PU9iamVjdH1mdW5jdGlvbiBobihuKXtjb25zdCBlPW4uZmlsdGVyKHM9PnMudHlwZT09PSJleHRlbnNpb24iKSx0PW4uZmlsdGVyKHM9PnMudHlwZT09PSJub2RlIikscj1uLmZpbHRlcihzPT5zLnR5cGU9PT0ibWFyayIpO3JldHVybntiYXNlRXh0ZW5zaW9uczplLG5vZGVFeHRlbnNpb25zOnQsbWFya0V4dGVuc2lvbnM6cn19ZnVuY3Rpb24gZWQobil7Y29uc3QgZT1bXSx7bm9kZUV4dGVuc2lvbnM6dCxtYXJrRXh0ZW5zaW9uczpyfT1obihuKSxzPVsuLi50LC4uLnJdLGk9e2RlZmF1bHQ6bnVsbCx2YWxpZGF0ZTp2b2lkIDAscmVuZGVyZWQ6ITAscmVuZGVySFRNTDpudWxsLHBhcnNlSFRNTDpudWxsLGtlZXBPblNwbGl0OiEwLGlzUmVxdWlyZWQ6ITF9LG89dC5maWx0ZXIoYz0+Yy5uYW1lIT09InRleHQiKS5tYXAoYz0+Yy5uYW1lKSxsPXIubWFwKGM9PmMubmFtZSksYT1bLi4ubywuLi5sXTtyZXR1cm4gbi5mb3JFYWNoKGM9Pntjb25zdCB1PXtuYW1lOmMubmFtZSxvcHRpb25zOmMub3B0aW9ucyxzdG9yYWdlOmMuc3RvcmFnZSxleHRlbnNpb25zOnN9LGQ9QShjLCJhZGRHbG9iYWxBdHRyaWJ1dGVzIix1KTtpZighZClyZXR1cm47ZCgpLmZvckVhY2goZj0+e2xldCBwO0FycmF5LmlzQXJyYXkoZi50eXBlcyk/cD1mLnR5cGVzOmYudHlwZXM9PT0iKiI/cD1hOmYudHlwZXM9PT0ibm9kZXMiP3A9bzpmLnR5cGVzPT09Im1hcmtzIj9wPWw6cD1bXSxwLmZvckVhY2gobT0+e09iamVjdC5lbnRyaWVzKGYuYXR0cmlidXRlcykuZm9yRWFjaCgoW2cseV0pPT57ZS5wdXNoKHt0eXBlOm0sbmFtZTpnLGF0dHJpYnV0ZTp7Li4uaSwuLi55fX0pfSl9KX0pfSkscy5mb3JFYWNoKGM9Pntjb25zdCB1PXtuYW1lOmMubmFtZSxvcHRpb25zOmMub3B0aW9ucyxzdG9yYWdlOmMuc3RvcmFnZX0sZD1BKGMsImFkZEF0dHJpYnV0ZXMiLHUpO2lmKCFkKXJldHVybjtjb25zdCBoPWQoKTtPYmplY3QuZW50cmllcyhoKS5mb3JFYWNoKChbZixwXSk9Pntjb25zdCBtPXsuLi5pLC4uLnB9O3R5cGVvZiBtPy5kZWZhdWx0PT0iZnVuY3Rpb24iJiYobS5kZWZhdWx0PW0uZGVmYXVsdCgpKSxtPy5pc1JlcXVpcmVkJiZtPy5kZWZhdWx0PT09dm9pZCAwJiZkZWxldGUgbS5kZWZhdWx0LGUucHVzaCh7dHlwZTpjLm5hbWUsbmFtZTpmLGF0dHJpYnV0ZTptfSl9KX0pLGV9ZnVuY3Rpb24gS2cobil7Y29uc3QgZT1bXTtsZXQgdD0iIixyPSExLHM9ITEsaT0wO2NvbnN0IG89bi5sZW5ndGg7Zm9yKGxldCBsPTA7bDxvO2wrPTEpe2NvbnN0IGE9bltsXTtpZihhPT09IiciJiYhcyl7cj0hcix0Kz1hO2NvbnRpbnVlfWlmKGE9PT0nIicmJiFyKXtzPSFzLHQrPWE7Y29udGludWV9aWYoIXImJiFzKXtpZihhPT09IigiKXtpKz0xLHQrPWE7Y29udGludWV9aWYoYT09PSIpIiYmaT4wKXtpLT0xLHQrPWE7Y29udGludWV9aWYoYT09PSI7IiYmaT09PTApe2UucHVzaCh0KSx0PSIiO2NvbnRpbnVlfX10Kz1hfXJldHVybiB0JiZlLnB1c2godCksZX1mdW5jdGlvbiBrYShuKXtjb25zdCBlPVtdLHQ9S2cobnx8IiIpLHI9dC5sZW5ndGg7Zm9yKGxldCBzPTA7czxyO3MrPTEpe2NvbnN0IGk9dFtzXSxvPWkuaW5kZXhPZigiOiIpO2lmKG89PT0tMSljb250aW51ZTtjb25zdCBsPWkuc2xpY2UoMCxvKS50cmltKCksYT1pLnNsaWNlKG8rMSkudHJpbSgpO2wmJmEmJmUucHVzaChbbCxhXSl9cmV0dXJuIGV9ZnVuY3Rpb24gSyguLi5uKXtyZXR1cm4gbi5maWx0ZXIoZT0+ISFlKS5yZWR1Y2UoKGUsdCk9Pntjb25zdCByPXsuLi5lfTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW3MsaV0pPT57aWYoIXJbc10pe3Jbc109aTtyZXR1cm59aWYocz09PSJjbGFzcyIpe2NvbnN0IGw9aT9TdHJpbmcoaSkuc3BsaXQoIiAiKTpbXSxhPXJbc10/cltzXS5zcGxpdCgiICIpOltdLGM9bC5maWx0ZXIodT0+IWEuaW5jbHVkZXModSkpO3Jbc109Wy4uLmEsLi4uY10uam9pbigiICIpfWVsc2UgaWYocz09PSJzdHlsZSIpe2NvbnN0IGw9bmV3IE1hcChbLi4ua2EocltzXSksLi4ua2EoaSldKTtyW3NdPUFycmF5LmZyb20obC5lbnRyaWVzKCkpLm1hcCgoW2EsY10pPT5gJHthfTogJHtjfWApLmpvaW4oIjsgIil9ZWxzZSByW3NdPWl9KSxyfSx7fSl9ZnVuY3Rpb24gZXIobixlKXtyZXR1cm4gZS5maWx0ZXIodD0+dC50eXBlPT09bi50eXBlLm5hbWUpLmZpbHRlcih0PT50LmF0dHJpYnV0ZS5yZW5kZXJlZCkubWFwKHQ9PnQuYXR0cmlidXRlLnJlbmRlckhUTUw/dC5hdHRyaWJ1dGUucmVuZGVySFRNTChuLmF0dHJzKXx8e306e1t0Lm5hbWVdOm4uYXR0cnNbdC5uYW1lXX0pLnJlZHVjZSgodCxyKT0+Syh0LHIpLHt9KX1mdW5jdGlvbiBKZyhuKXtyZXR1cm4gdHlwZW9mIG4hPSJzdHJpbmciP246bi5tYXRjaCgvXlsrLV0/KD86XGQqXC4pP1xkKyQvKT9OdW1iZXIobik6bj09PSJ0cnVlIj8hMDpuPT09ImZhbHNlIj8hMTpufWZ1bmN0aW9uIGJhKG4sZSl7cmV0dXJuInN0eWxlImluIG4/bjp7Li4ubixnZXRBdHRyczp0PT57Y29uc3Qgcj1uLmdldEF0dHJzP24uZ2V0QXR0cnModCk6bi5hdHRycztpZihyPT09ITEpcmV0dXJuITE7Y29uc3Qgcz1lLnJlZHVjZSgoaSxvKT0+e2NvbnN0IGw9by5hdHRyaWJ1dGUucGFyc2VIVE1MP28uYXR0cmlidXRlLnBhcnNlSFRNTCh0KTpKZyh0LmdldEF0dHJpYnV0ZShvLm5hbWUpKTtyZXR1cm4gbD09bnVsbD9pOnsuLi5pLFtvLm5hbWVdOmx9fSx7fSk7cmV0dXJuey4uLnIsLi4uc319fX1mdW5jdGlvbiB4YShuKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLmZpbHRlcigoW2UsdF0pPT5lPT09ImF0dHJzIiYmV2codCk/ITE6dCE9bnVsbCkpfWZ1bmN0aW9uIHdhKG4pe3ZhciBlLHQ7Y29uc3Qgcj17fTtyZXR1cm4hKChlPW4/LmF0dHJpYnV0ZSkhPW51bGwmJmUuaXNSZXF1aXJlZCkmJiJkZWZhdWx0ImluKG4/LmF0dHJpYnV0ZXx8e30pJiYoci5kZWZhdWx0PW4uYXR0cmlidXRlLmRlZmF1bHQpLCgodD1uPy5hdHRyaWJ1dGUpPT1udWxsP3ZvaWQgMDp0LnZhbGlkYXRlKSE9PXZvaWQgMCYmKHIudmFsaWRhdGU9bi5hdHRyaWJ1dGUudmFsaWRhdGUpLFtuLm5hbWUscl19ZnVuY3Rpb24gdGQobixlKXt2YXIgdDtjb25zdCByPWVkKG4pLHtub2RlRXh0ZW5zaW9uczpzLG1hcmtFeHRlbnNpb25zOml9PWhuKG4pLG89KHQ9cy5maW5kKGM9PkEoYywidG9wTm9kZSIpKSk9PW51bGw/dm9pZCAwOnQubmFtZSxsPU9iamVjdC5mcm9tRW50cmllcyhzLm1hcChjPT57Y29uc3QgdT1yLmZpbHRlcih5PT55LnR5cGU9PT1jLm5hbWUpLGQ9e25hbWU6Yy5uYW1lLG9wdGlvbnM6Yy5vcHRpb25zLHN0b3JhZ2U6Yy5zdG9yYWdlLGVkaXRvcjplfSxoPW4ucmVkdWNlKCh5LGspPT57Y29uc3QgYj1BKGssImV4dGVuZE5vZGVTY2hlbWEiLGQpO3JldHVybnsuLi55LC4uLmI/YihjKTp7fX19LHt9KSxmPXhhKHsuLi5oLGNvbnRlbnQ6VShBKGMsImNvbnRlbnQiLGQpKSxtYXJrczpVKEEoYywibWFya3MiLGQpKSxncm91cDpVKEEoYywiZ3JvdXAiLGQpKSxpbmxpbmU6VShBKGMsImlubGluZSIsZCkpLGF0b206VShBKGMsImF0b20iLGQpKSxzZWxlY3RhYmxlOlUoQShjLCJzZWxlY3RhYmxlIixkKSksZHJhZ2dhYmxlOlUoQShjLCJkcmFnZ2FibGUiLGQpKSxjb2RlOlUoQShjLCJjb2RlIixkKSksd2hpdGVzcGFjZTpVKEEoYywid2hpdGVzcGFjZSIsZCkpLGxpbmVicmVha1JlcGxhY2VtZW50OlUoQShjLCJsaW5lYnJlYWtSZXBsYWNlbWVudCIsZCkpLGRlZmluaW5nOlUoQShjLCJkZWZpbmluZyIsZCkpLGlzb2xhdGluZzpVKEEoYywiaXNvbGF0aW5nIixkKSksYXR0cnM6T2JqZWN0LmZyb21FbnRyaWVzKHUubWFwKHdhKSl9KSxwPVUoQShjLCJwYXJzZUhUTUwiLGQpKTtwJiYoZi5wYXJzZURPTT1wLm1hcCh5PT5iYSh5LHUpKSk7Y29uc3QgbT1BKGMsInJlbmRlckhUTUwiLGQpO20mJihmLnRvRE9NPXk9Pm0oe25vZGU6eSxIVE1MQXR0cmlidXRlczplcih5LHUpfSkpO2NvbnN0IGc9QShjLCJyZW5kZXJUZXh0IixkKTtyZXR1cm4gZyYmKGYudG9UZXh0PWcpLFtjLm5hbWUsZl19KSksYT1PYmplY3QuZnJvbUVudHJpZXMoaS5tYXAoYz0+e2NvbnN0IHU9ci5maWx0ZXIoZz0+Zy50eXBlPT09Yy5uYW1lKSxkPXtuYW1lOmMubmFtZSxvcHRpb25zOmMub3B0aW9ucyxzdG9yYWdlOmMuc3RvcmFnZSxlZGl0b3I6ZX0saD1uLnJlZHVjZSgoZyx5KT0+e2NvbnN0IGs9QSh5LCJleHRlbmRNYXJrU2NoZW1hIixkKTtyZXR1cm57Li4uZywuLi5rP2soYyk6e319fSx7fSksZj14YSh7Li4uaCxpbmNsdXNpdmU6VShBKGMsImluY2x1c2l2ZSIsZCkpLGV4Y2x1ZGVzOlUoQShjLCJleGNsdWRlcyIsZCkpLGdyb3VwOlUoQShjLCJncm91cCIsZCkpLHNwYW5uaW5nOlUoQShjLCJzcGFubmluZyIsZCkpLGNvZGU6VShBKGMsImNvZGUiLGQpKSxhdHRyczpPYmplY3QuZnJvbUVudHJpZXModS5tYXAod2EpKX0pLHA9VShBKGMsInBhcnNlSFRNTCIsZCkpO3AmJihmLnBhcnNlRE9NPXAubWFwKGc9PmJhKGcsdSkpKTtjb25zdCBtPUEoYywicmVuZGVySFRNTCIsZCk7cmV0dXJuIG0mJihmLnRvRE9NPWc9Pm0oe21hcms6ZyxIVE1MQXR0cmlidXRlczplcihnLHUpfSkpLFtjLm5hbWUsZl19KSk7cmV0dXJuIG5ldyBMYyh7dG9wTm9kZTpvLG5vZGVzOmwsbWFya3M6YX0pfWZ1bmN0aW9uIEdnKG4pe2NvbnN0IGU9bi5maWx0ZXIoKHQscik9Pm4uaW5kZXhPZih0KSE9PXIpO3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoZSkpfWZ1bmN0aW9uIF9uKG4pe3JldHVybiBuLnNvcnQoKHQscik9Pntjb25zdCBzPUEodCwicHJpb3JpdHkiKXx8MTAwLGk9QShyLCJwcmlvcml0eSIpfHwxMDA7cmV0dXJuIHM+aT8tMTpzPGk/MTowfSl9ZnVuY3Rpb24gem8obil7Y29uc3QgZT1fbihGcyhuKSk7cmV0dXJuIEdnKGUubWFwKHI9PnIubmFtZSkpLmxlbmd0aCxlfWZ1bmN0aW9uIFFnKG4sZSl7Y29uc3QgdD16byhuKTtyZXR1cm4gdGQodCxlKX1mdW5jdGlvbiBYZyhuLGUpe2NvbnN0IHQ9UWcoZSkscj1FbihuKTtyZXR1cm4gaXQuZnJvbVNjaGVtYSh0KS5wYXJzZShyKS50b0pTT04oKX1mdW5jdGlvbiBuZChuLGUsdCl7Y29uc3R7ZnJvbTpyLHRvOnN9PWUse2Jsb2NrU2VwYXJhdG9yOmk9YAoKYCx0ZXh0U2VyaWFsaXplcnM6bz17fX09dHx8e307bGV0IGw9IiI7cmV0dXJuIG4ubm9kZXNCZXR3ZWVuKHIscywoYSxjLHUsZCk9Pnt2YXIgaDthLmlzQmxvY2smJmM+ciYmKGwrPWkpO2NvbnN0IGY9bz8uW2EudHlwZS5uYW1lXTtpZihmKXJldHVybiB1JiYobCs9Zih7bm9kZTphLHBvczpjLHBhcmVudDp1LGluZGV4OmQscmFuZ2U6ZX0pKSwhMTthLmlzVGV4dCYmKGwrPShoPWE/LnRleHQpPT1udWxsP3ZvaWQgMDpoLnNsaWNlKE1hdGgubWF4KHIsYyktYyxzLWMpKX0pLGx9ZnVuY3Rpb24gcmQobixlKXtjb25zdCB0PXtmcm9tOjAsdG86bi5jb250ZW50LnNpemV9O3JldHVybiBuZChuLHQsZSl9ZnVuY3Rpb24gJG8obil7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhuLm5vZGVzKS5maWx0ZXIoKFssZV0pPT5lLnNwZWMudG9UZXh0KS5tYXAoKFtlLHRdKT0+W2UsdC5zcGVjLnRvVGV4dF0pKX1mdW5jdGlvbiBZZyhuLGUpe2NvbnN0IHQ9aWUoZSxuLnNjaGVtYSkse2Zyb206cix0bzpzfT1uLnNlbGVjdGlvbixpPVtdO24uZG9jLm5vZGVzQmV0d2VlbihyLHMsbD0+e2kucHVzaChsKX0pO2NvbnN0IG89aS5yZXZlcnNlKCkuZmluZChsPT5sLnR5cGUubmFtZT09PXQubmFtZSk7cmV0dXJuIG8/ey4uLm8uYXR0cnN9Ont9fWZ1bmN0aW9uIHNkKG4sZSl7Y29uc3QgdD1fcyh0eXBlb2YgZT09InN0cmluZyI/ZTplLm5hbWUsbi5zY2hlbWEpO3JldHVybiB0PT09Im5vZGUiP1lnKG4sZSk6dD09PSJtYXJrIj9YdShuLGUpOnt9fWZ1bmN0aW9uIFpnKG4sZT1KU09OLnN0cmluZ2lmeSl7Y29uc3QgdD17fTtyZXR1cm4gbi5maWx0ZXIocj0+e2NvbnN0IHM9ZShyKTtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscyk/ITE6dFtzXT0hMH0pfWZ1bmN0aW9uIGV5KG4pe2NvbnN0IGU9Wmcobik7cmV0dXJuIGUubGVuZ3RoPT09MT9lOmUuZmlsdGVyKCh0LHIpPT4hZS5maWx0ZXIoKGksbyk9Pm8hPT1yKS5zb21lKGk9PnQub2xkUmFuZ2UuZnJvbT49aS5vbGRSYW5nZS5mcm9tJiZ0Lm9sZFJhbmdlLnRvPD1pLm9sZFJhbmdlLnRvJiZ0Lm5ld1JhbmdlLmZyb20+PWkubmV3UmFuZ2UuZnJvbSYmdC5uZXdSYW5nZS50bzw9aS5uZXdSYW5nZS50bykpfWZ1bmN0aW9uIGlkKG4pe2NvbnN0e21hcHBpbmc6ZSxzdGVwczp0fT1uLHI9W107cmV0dXJuIGUubWFwcy5mb3JFYWNoKChzLGkpPT57Y29uc3Qgbz1bXTtpZihzLnJhbmdlcy5sZW5ndGgpcy5mb3JFYWNoKChsLGEpPT57by5wdXNoKHtmcm9tOmwsdG86YX0pfSk7ZWxzZXtjb25zdHtmcm9tOmwsdG86YX09dFtpXTtpZihsPT09dm9pZCAwfHxhPT09dm9pZCAwKXJldHVybjtvLnB1c2goe2Zyb206bCx0bzphfSl9by5mb3JFYWNoKCh7ZnJvbTpsLHRvOmF9KT0+e2NvbnN0IGM9ZS5zbGljZShpKS5tYXAobCwtMSksdT1lLnNsaWNlKGkpLm1hcChhKSxkPWUuaW52ZXJ0KCkubWFwKGMsLTEpLGg9ZS5pbnZlcnQoKS5tYXAodSk7ci5wdXNoKHtvbGRSYW5nZTp7ZnJvbTpkLHRvOmh9LG5ld1JhbmdlOntmcm9tOmMsdG86dX19KX0pfSksZXkocil9ZnVuY3Rpb24gQm8obixlLHQpe2NvbnN0IHI9W107cmV0dXJuIG49PT1lP3QucmVzb2x2ZShuKS5tYXJrcygpLmZvckVhY2gocz0+e2NvbnN0IGk9dC5yZXNvbHZlKG4pLG89RG8oaSxzLnR5cGUpO28mJnIucHVzaCh7bWFyazpzLC4uLm99KX0pOnQubm9kZXNCZXR3ZWVuKG4sZSwocyxpKT0+eyFzfHxzPy5ub2RlU2l6ZT09PXZvaWQgMHx8ci5wdXNoKC4uLnMubWFya3MubWFwKG89Pih7ZnJvbTppLHRvOmkrcy5ub2RlU2l6ZSxtYXJrOm99KSkpfSkscn12YXIgdHk9KG4sZSx0LHI9MjApPT57Y29uc3Qgcz1uLmRvYy5yZXNvbHZlKHQpO2xldCBpPXIsbz1udWxsO2Zvcig7aT4wJiZvPT09bnVsbDspe2NvbnN0IGw9cy5ub2RlKGkpO2w/LnR5cGUubmFtZT09PWU/bz1sOmktPTF9cmV0dXJuW28saV19O2Z1bmN0aW9uIGJuKG4sZSl7cmV0dXJuIGUubm9kZXNbbl18fGUubWFya3Nbbl18fG51bGx9ZnVuY3Rpb24gSXIobixlLHQpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbcl0pPT57Y29uc3Qgcz1uLmZpbmQoaT0+aS50eXBlPT09ZSYmaS5uYW1lPT09cik7cmV0dXJuIHM/cy5hdHRyaWJ1dGUua2VlcE9uU3BsaXQ6ITF9KSl9dmFyIG55PShuLGU9NTAwKT0+e2xldCB0PSIiO2NvbnN0IHI9bi5wYXJlbnRPZmZzZXQ7cmV0dXJuIG4ucGFyZW50Lm5vZGVzQmV0d2VlbihNYXRoLm1heCgwLHItZSksciwocyxpLG8sbCk9Pnt2YXIgYSxjO2NvbnN0IHU9KChjPShhPXMudHlwZS5zcGVjKS50b1RleHQpPT1udWxsP3ZvaWQgMDpjLmNhbGwoYSx7bm9kZTpzLHBvczppLHBhcmVudDpvLGluZGV4Omx9KSl8fHMudGV4dENvbnRlbnR8fCIlbGVhZiUiO3QrPXMuaXNBdG9tJiYhcy5pc1RleHQ/dTp1LnNsaWNlKDAsTWF0aC5tYXgoMCxyLWkpKX0pLHR9O2Z1bmN0aW9uIHFpKG4sZSx0PXt9KXtjb25zdHtlbXB0eTpyLHJhbmdlczpzfT1uLnNlbGVjdGlvbixpPWU/YXQoZSxuLnNjaGVtYSk6bnVsbDtpZihyKXJldHVybiEhKG4uc3RvcmVkTWFya3N8fG4uc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCkpLmZpbHRlcihkPT5pP2kubmFtZT09PWQudHlwZS5uYW1lOiEwKS5maW5kKGQ9PkpyKGQuYXR0cnMsdCx7c3RyaWN0OiExfSkpO2xldCBvPTA7Y29uc3QgbD1bXTtpZihzLmZvckVhY2goKHskZnJvbTpkLCR0bzpofSk9Pntjb25zdCBmPWQucG9zLHA9aC5wb3M7bi5kb2Mubm9kZXNCZXR3ZWVuKGYscCwobSxnKT0+e2lmKGkmJm0uaW5saW5lQ29udGVudCYmIW0udHlwZS5hbGxvd3NNYXJrVHlwZShpKSlyZXR1cm4hMTtpZighbS5pc1RleHQmJiFtLm1hcmtzLmxlbmd0aClyZXR1cm47Y29uc3QgeT1NYXRoLm1heChmLGcpLGs9TWF0aC5taW4ocCxnK20ubm9kZVNpemUpLGI9ay15O28rPWIsbC5wdXNoKC4uLm0ubWFya3MubWFwKHc9Pih7bWFyazp3LGZyb206eSx0bzprfSkpKX0pfSksbz09PTApcmV0dXJuITE7Y29uc3QgYT1sLmZpbHRlcihkPT5pP2kubmFtZT09PWQubWFyay50eXBlLm5hbWU6ITApLmZpbHRlcihkPT5KcihkLm1hcmsuYXR0cnMsdCx7c3RyaWN0OiExfSkpLnJlZHVjZSgoZCxoKT0+ZCtoLnRvLWguZnJvbSwwKSxjPWwuZmlsdGVyKGQ9Pmk/ZC5tYXJrLnR5cGUhPT1pJiZkLm1hcmsudHlwZS5leGNsdWRlcyhpKTohMCkucmVkdWNlKChkLGgpPT5kK2gudG8taC5mcm9tLDApO3JldHVybihhPjA/YStjOmEpPj1vfWZ1bmN0aW9uIHJ5KG4sZSx0PXt9KXtpZighZSlyZXR1cm4gRXQobixudWxsLHQpfHxxaShuLG51bGwsdCk7Y29uc3Qgcj1fcyhlLG4uc2NoZW1hKTtyZXR1cm4gcj09PSJub2RlIj9FdChuLGUsdCk6cj09PSJtYXJrIj9xaShuLGUsdCk6ITF9dmFyIHN5PShuLGUpPT57Y29uc3R7JGZyb206dCwkdG86ciwkYW5jaG9yOnN9PW4uc2VsZWN0aW9uO2lmKGUpe2NvbnN0IGk9SHMobD0+bC50eXBlLm5hbWU9PT1lKShuLnNlbGVjdGlvbik7aWYoIWkpcmV0dXJuITE7Y29uc3Qgbz1uLmRvYy5yZXNvbHZlKGkucG9zKzEpO3JldHVybiBzLnBvcysxPT09by5lbmQoKX1yZXR1cm4hKHIucGFyZW50T2Zmc2V0PHIucGFyZW50Lm5vZGVTaXplLTJ8fHQucG9zIT09ci5wb3MpfSxpeT1uPT57Y29uc3R7JGZyb206ZSwkdG86dH09bi5zZWxlY3Rpb247cmV0dXJuIShlLnBhcmVudE9mZnNldD4wfHxlLnBvcyE9PXQucG9zKX07ZnVuY3Rpb24gdmEobixlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLnNvbWUodD0+KHR5cGVvZiB0PT0ic3RyaW5nIj90OnQubmFtZSk9PT1uLm5hbWUpOmV9ZnVuY3Rpb24gZmkobixlKXtjb25zdHtub2RlRXh0ZW5zaW9uczp0fT1obihlKSxyPXQuZmluZChvPT5vLm5hbWU9PT1uKTtpZighcilyZXR1cm4hMTtjb25zdCBzPXtuYW1lOnIubmFtZSxvcHRpb25zOnIub3B0aW9ucyxzdG9yYWdlOnIuc3RvcmFnZX0saT1VKEEociwiZ3JvdXAiLHMpKTtyZXR1cm4gdHlwZW9mIGkhPSJzdHJpbmciPyExOmkuc3BsaXQoIiAiKS5pbmNsdWRlcygibGlzdCIpfWZ1bmN0aW9uIFZzKG4se2NoZWNrQ2hpbGRyZW46ZT0hMCxpZ25vcmVXaGl0ZXNwYWNlOnQ9ITF9PXt9KXt2YXIgcjtpZih0KXtpZihuLnR5cGUubmFtZT09PSJoYXJkQnJlYWsiKXJldHVybiEwO2lmKG4uaXNUZXh0KXJldHVybiEvXFMvLnRlc3QoKHI9bi50ZXh0KSE9bnVsbD9yOiIiKX1pZihuLmlzVGV4dClyZXR1cm4hbi50ZXh0O2lmKG4uaXNBdG9tfHxuLmlzTGVhZilyZXR1cm4hMTtpZihuLmNvbnRlbnQuY2hpbGRDb3VudD09PTApcmV0dXJuITA7aWYoZSl7bGV0IHM9ITA7cmV0dXJuIG4uY29udGVudC5mb3JFYWNoKGk9PntzIT09ITEmJihWcyhpLHtpZ25vcmVXaGl0ZXNwYWNlOnQsY2hlY2tDaGlsZHJlbjplfSl8fChzPSExKSl9KSxzfXJldHVybiExfWZ1bmN0aW9uIG9kKG4pe3JldHVybiBuIGluc3RhbmNlb2YgTn12YXIgbGQ9Y2xhc3MgYWR7Y29uc3RydWN0b3IoZSl7dGhpcy5wb3NpdGlvbj1lfXN0YXRpYyBmcm9tSlNPTihlKXtyZXR1cm4gbmV3IGFkKGUucG9zaXRpb24pfXRvSlNPTigpe3JldHVybntwb3NpdGlvbjp0aGlzLnBvc2l0aW9ufX19O2Z1bmN0aW9uIG95KG4sZSl7Y29uc3QgdD1lLm1hcHBpbmcubWFwUmVzdWx0KG4ucG9zaXRpb24pO3JldHVybntwb3NpdGlvbjpuZXcgbGQodC5wb3MpLG1hcFJlc3VsdDp0fX1mdW5jdGlvbiBseShuKXtyZXR1cm4gbmV3IGxkKG4pfWZ1bmN0aW9uIGNkKG4sZSx0KXtjb25zdCBzPW4uc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSxpPXN0KGUsMCxzKSxvPXN0KHQsMCxzKSxsPW4uY29vcmRzQXRQb3MoaSksYT1uLmNvb3Jkc0F0UG9zKG8sLTEpLGM9TWF0aC5taW4obC50b3AsYS50b3ApLHU9TWF0aC5tYXgobC5ib3R0b20sYS5ib3R0b20pLGQ9TWF0aC5taW4obC5sZWZ0LGEubGVmdCksaD1NYXRoLm1heChsLnJpZ2h0LGEucmlnaHQpLGY9aC1kLHA9dS1jLHk9e3RvcDpjLGJvdHRvbTp1LGxlZnQ6ZCxyaWdodDpoLHdpZHRoOmYsaGVpZ2h0OnAseDpkLHk6Y307cmV0dXJuey4uLnksdG9KU09OOigpPT55fX1mdW5jdGlvbiBheShuLGUsdCl7dmFyIHI7Y29uc3R7c2VsZWN0aW9uOnN9PWU7bGV0IGk9bnVsbDtpZihMbyhzKSYmKGk9cy4kY3Vyc29yKSxpKXtjb25zdCBsPShyPW4uc3RvcmVkTWFya3MpIT1udWxsP3I6aS5tYXJrcygpO3JldHVybiBpLnBhcmVudC50eXBlLmFsbG93c01hcmtUeXBlKHQpJiYoISF0LmlzSW5TZXQobCl8fCFsLnNvbWUoYz0+Yy50eXBlLmV4Y2x1ZGVzKHQpKSl9Y29uc3R7cmFuZ2VzOm99PXM7cmV0dXJuIG8uc29tZSgoeyRmcm9tOmwsJHRvOmF9KT0+e2xldCBjPWwuZGVwdGg9PT0wP24uZG9jLmlubGluZUNvbnRlbnQmJm4uZG9jLnR5cGUuYWxsb3dzTWFya1R5cGUodCk6ITE7cmV0dXJuIG4uZG9jLm5vZGVzQmV0d2VlbihsLnBvcyxhLnBvcywodSxkLGgpPT57aWYoYylyZXR1cm4hMTtpZih1LmlzSW5saW5lKXtjb25zdCBmPSFofHxoLnR5cGUuYWxsb3dzTWFya1R5cGUodCkscD0hIXQuaXNJblNldCh1Lm1hcmtzKXx8IXUubWFya3Muc29tZShtPT5tLnR5cGUuZXhjbHVkZXModCkpO2M9ZiYmcH1yZXR1cm4hY30pLGN9KX12YXIgY3k9KG4sZT17fSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnN9KT0+e2NvbnN0e3NlbGVjdGlvbjppfT10LHtlbXB0eTpvLHJhbmdlczpsfT1pLGE9YXQobixyLnNjaGVtYSk7aWYocylpZihvKXtjb25zdCBjPVh1KHIsYSk7dC5hZGRTdG9yZWRNYXJrKGEuY3JlYXRlKHsuLi5jLC4uLmV9KSl9ZWxzZSBsLmZvckVhY2goYz0+e2NvbnN0IHU9Yy4kZnJvbS5wb3MsZD1jLiR0by5wb3M7ci5kb2Mubm9kZXNCZXR3ZWVuKHUsZCwoaCxmKT0+e2NvbnN0IHA9TWF0aC5tYXgoZix1KSxtPU1hdGgubWluKGYraC5ub2RlU2l6ZSxkKTtoLm1hcmtzLmZpbmQoeT0+eS50eXBlPT09YSk/aC5tYXJrcy5mb3JFYWNoKHk9PnthPT09eS50eXBlJiZ0LmFkZE1hcmsocCxtLGEuY3JlYXRlKHsuLi55LmF0dHJzLC4uLmV9KSl9KTp0LmFkZE1hcmsocCxtLGEuY3JlYXRlKGUpKX0pfSk7cmV0dXJuIGF5KHIsdCxhKX0sdXk9KG4sZSk9Pih7dHI6dH0pPT4odC5zZXRNZXRhKG4sZSksITApLGR5PShuLGU9e30pPT4oe3N0YXRlOnQsZGlzcGF0Y2g6cixjaGFpbjpzfSk9Pntjb25zdCBpPWllKG4sdC5zY2hlbWEpO2xldCBvO3JldHVybiB0LnNlbGVjdGlvbi4kYW5jaG9yLnNhbWVQYXJlbnQodC5zZWxlY3Rpb24uJGhlYWQpJiYobz10LnNlbGVjdGlvbi4kYW5jaG9yLnBhcmVudC5hdHRycyksaS5pc1RleHRibG9jaz9zKCkuY29tbWFuZCgoe2NvbW1hbmRzOmx9KT0+UGwoaSx7Li4ubywuLi5lfSkodCk/ITA6bC5jbGVhck5vZGVzKCkpLmNvbW1hbmQoKHtzdGF0ZTpsfSk9PlBsKGksey4uLm8sLi4uZX0pKGwscikpLnJ1bigpOiExfSxoeT1uPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT57aWYodCl7Y29uc3R7ZG9jOnJ9PWUscz1zdChuLDAsci5jb250ZW50LnNpemUpLGk9Ti5jcmVhdGUocixzKTtlLnNldFNlbGVjdGlvbihpKX1yZXR1cm4hMH0sZnk9KG4sZSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnN9KT0+e2NvbnN0e3NlbGVjdGlvbjppfT1yO2xldCBvLGw7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIj8obz1lLGw9ZSk6ZSYmImZyb20iaW4gZSYmInRvImluIGU/KG89ZS5mcm9tLGw9ZS50byk6KG89aS5mcm9tLGw9aS50bykscyYmdC5kb2Mubm9kZXNCZXR3ZWVuKG8sbCwoYSxjKT0+e2EuaXNUZXh0fHx0LnNldE5vZGVNYXJrdXAoYyx2b2lkIDAsey4uLmEuYXR0cnMsZGlyOm59KX0pLCEwfSxweT1uPT4oe3RyOmUsZGlzcGF0Y2g6dH0pPT57aWYodCl7Y29uc3R7ZG9jOnJ9PWUse2Zyb206cyx0bzppfT10eXBlb2Ygbj09Im51bWJlciI/e2Zyb206bix0bzpufTpuLG89RC5hdFN0YXJ0KHIpLmZyb20sbD1ELmF0RW5kKHIpLnRvLGE9c3QocyxvLGwpLGM9c3QoaSxvLGwpLHU9RC5jcmVhdGUocixhLGMpO2Uuc2V0U2VsZWN0aW9uKHUpfXJldHVybiEwfSxteT1uPT4oe3N0YXRlOmUsZGlzcGF0Y2g6dH0pPT57Y29uc3Qgcj1pZShuLGUuc2NoZW1hKTtyZXR1cm4gbHAocikoZSx0KX07ZnVuY3Rpb24gU2EobixlKXtjb25zdCB0PW4uc3RvcmVkTWFya3N8fG4uc2VsZWN0aW9uLiR0by5wYXJlbnRPZmZzZXQmJm4uc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCk7aWYodCl7Y29uc3Qgcj10LmZpbHRlcihzPT5lPy5pbmNsdWRlcyhzLnR5cGUubmFtZSkpO24udHIuZW5zdXJlTWFya3Mocil9fXZhciBneT0oe2tlZXBNYXJrczpuPSEwfT17fSk9Pih7dHI6ZSxzdGF0ZTp0LGRpc3BhdGNoOnIsZWRpdG9yOnN9KT0+e2NvbnN0e3NlbGVjdGlvbjppLGRvYzpvfT1lLHskZnJvbTpsLCR0bzphfT1pLGM9cy5leHRlbnNpb25NYW5hZ2VyLmF0dHJpYnV0ZXMsdT1JcihjLGwubm9kZSgpLnR5cGUubmFtZSxsLm5vZGUoKS5hdHRycyk7aWYoaSBpbnN0YW5jZW9mIE4mJmkubm9kZS5pc0Jsb2NrKXJldHVybiFsLnBhcmVudE9mZnNldHx8IW90KG8sbC5wb3MpPyExOihyJiYobiYmU2EodCxzLmV4dGVuc2lvbk1hbmFnZXIuc3BsaXR0YWJsZU1hcmtzKSxlLnNwbGl0KGwucG9zKS5zY3JvbGxJbnRvVmlldygpKSwhMCk7aWYoIWwucGFyZW50LmlzQmxvY2spcmV0dXJuITE7Y29uc3QgZD1hLnBhcmVudE9mZnNldD09PWEucGFyZW50LmNvbnRlbnQuc2l6ZSxoPWwuZGVwdGg9PT0wP3ZvaWQgMDpVZyhsLm5vZGUoLTEpLmNvbnRlbnRNYXRjaEF0KGwuaW5kZXhBZnRlcigtMSkpKTtsZXQgZj1kJiZoP1t7dHlwZTpoLGF0dHJzOnV9XTp2b2lkIDAscD1vdChlLmRvYyxlLm1hcHBpbmcubWFwKGwucG9zKSwxLGYpO2lmKCFmJiYhcCYmb3QoZS5kb2MsZS5tYXBwaW5nLm1hcChsLnBvcyksMSxoP1t7dHlwZTpofV06dm9pZCAwKSYmKHA9ITAsZj1oP1t7dHlwZTpoLGF0dHJzOnV9XTp2b2lkIDApLHIpe2lmKHAmJihpIGluc3RhbmNlb2YgRCYmZS5kZWxldGVTZWxlY3Rpb24oKSxlLnNwbGl0KGUubWFwcGluZy5tYXAobC5wb3MpLDEsZiksaCYmIWQmJiFsLnBhcmVudE9mZnNldCYmbC5wYXJlbnQudHlwZSE9PWgpKXtjb25zdCBtPWUubWFwcGluZy5tYXAobC5iZWZvcmUoKSksZz1lLmRvYy5yZXNvbHZlKG0pO2wubm9kZSgtMSkuY2FuUmVwbGFjZVdpdGgoZy5pbmRleCgpLGcuaW5kZXgoKSsxLGgpJiZlLnNldE5vZGVNYXJrdXAoZS5tYXBwaW5nLm1hcChsLmJlZm9yZSgpKSxoKX1uJiZTYSh0LHMuZXh0ZW5zaW9uTWFuYWdlci5zcGxpdHRhYmxlTWFya3MpLGUuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4gcH0seXk9KG4sZT17fSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnMsZWRpdG9yOml9KT0+e3ZhciBvO2NvbnN0IGw9aWUobixyLnNjaGVtYSkseyRmcm9tOmEsJHRvOmN9PXIuc2VsZWN0aW9uLHU9ci5zZWxlY3Rpb24ubm9kZTtpZih1JiZ1LmlzQmxvY2t8fGEuZGVwdGg8Mnx8IWEuc2FtZVBhcmVudChjKSlyZXR1cm4hMTtjb25zdCBkPWEubm9kZSgtMSk7aWYoZC50eXBlIT09bClyZXR1cm4hMTtjb25zdCBoPWkuZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzO2lmKGEucGFyZW50LmNvbnRlbnQuc2l6ZT09PTAmJmEubm9kZSgtMSkuY2hpbGRDb3VudD09PWEuaW5kZXhBZnRlcigtMSkpe2lmKGEuZGVwdGg9PT0yfHxhLm5vZGUoLTMpLnR5cGUhPT1sfHxhLmluZGV4KC0yKSE9PWEubm9kZSgtMikuY2hpbGRDb3VudC0xKXJldHVybiExO2lmKHMpe2xldCB5PVMuZW1wdHk7Y29uc3Qgaz1hLmluZGV4KC0xKT8xOmEuaW5kZXgoLTIpPzI6Mztmb3IobGV0IE09YS5kZXB0aC1rO00+PWEuZGVwdGgtMztNLT0xKXk9Uy5mcm9tKGEubm9kZShNKS5jb3B5KHkpKTtjb25zdCBiPWEuaW5kZXhBZnRlcigtMSk8YS5ub2RlKC0yKS5jaGlsZENvdW50PzE6YS5pbmRleEFmdGVyKC0yKTxhLm5vZGUoLTMpLmNoaWxkQ291bnQ/MjozLHc9ey4uLklyKGgsYS5ub2RlKCkudHlwZS5uYW1lLGEubm9kZSgpLmF0dHJzKSwuLi5lfSx4PSgobz1sLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSk9PW51bGw/dm9pZCAwOm8uY3JlYXRlQW5kRmlsbCh3KSl8fHZvaWQgMDt5PXkuYXBwZW5kKFMuZnJvbShsLmNyZWF0ZUFuZEZpbGwobnVsbCx4KXx8dm9pZCAwKSk7Y29uc3Qgdj1hLmJlZm9yZShhLmRlcHRoLShrLTEpKTt0LnJlcGxhY2UodixhLmFmdGVyKC1iKSxuZXcgRSh5LDQtaywwKSk7bGV0IEM9LTE7dC5kb2Mubm9kZXNCZXR3ZWVuKHYsdC5kb2MuY29udGVudC5zaXplLChNLFIpPT57aWYoQz4tMSlyZXR1cm4hMTtNLmlzVGV4dGJsb2NrJiZNLmNvbnRlbnQuc2l6ZT09PTAmJihDPVIrMSl9KSxDPi0xJiZ0LnNldFNlbGVjdGlvbihELm5lYXIodC5kb2MucmVzb2x2ZShDKSkpLHQuc2Nyb2xsSW50b1ZpZXcoKX1yZXR1cm4hMH1jb25zdCBmPWMucG9zPT09YS5lbmQoKT9kLmNvbnRlbnRNYXRjaEF0KDApLmRlZmF1bHRUeXBlOm51bGwscD17Li4uSXIoaCxkLnR5cGUubmFtZSxkLmF0dHJzKSwuLi5lfSxtPXsuLi5JcihoLGEubm9kZSgpLnR5cGUubmFtZSxhLm5vZGUoKS5hdHRycyksLi4uZX07dC5kZWxldGUoYS5wb3MsYy5wb3MpO2NvbnN0IGc9Zj9be3R5cGU6bCxhdHRyczpwfSx7dHlwZTpmLGF0dHJzOm19XTpbe3R5cGU6bCxhdHRyczpwfV07aWYoIW90KHQuZG9jLGEucG9zLDIpKXJldHVybiExO2lmKHMpe2NvbnN0e3NlbGVjdGlvbjp5LHN0b3JlZE1hcmtzOmt9PXIse3NwbGl0dGFibGVNYXJrczpifT1pLmV4dGVuc2lvbk1hbmFnZXIsdz1rfHx5LiR0by5wYXJlbnRPZmZzZXQmJnkuJGZyb20ubWFya3MoKTtpZih0LnNwbGl0KGEucG9zLDIsZykuc2Nyb2xsSW50b1ZpZXcoKSwhd3x8IXMpcmV0dXJuITA7Y29uc3QgeD13LmZpbHRlcih2PT5iLmluY2x1ZGVzKHYudHlwZS5uYW1lKSk7dC5lbnN1cmVNYXJrcyh4KX1yZXR1cm4hMH0scGk9KG4sZSk9Pntjb25zdCB0PUhzKG89Pm8udHlwZT09PWUpKG4uc2VsZWN0aW9uKTtpZighdClyZXR1cm4hMDtjb25zdCByPW4uZG9jLnJlc29sdmUoTWF0aC5tYXgoMCx0LnBvcy0xKSkuYmVmb3JlKHQuZGVwdGgpO2lmKHI9PT12b2lkIDApcmV0dXJuITA7Y29uc3Qgcz1uLmRvYy5ub2RlQXQocik7cmV0dXJuIHQubm9kZS50eXBlPT09cz8udHlwZSYmQXQobi5kb2MsdC5wb3MpJiZuLmpvaW4odC5wb3MpLCEwfSxtaT0obixlKT0+e2NvbnN0IHQ9SHMobz0+by50eXBlPT09ZSkobi5zZWxlY3Rpb24pO2lmKCF0KXJldHVybiEwO2NvbnN0IHI9bi5kb2MucmVzb2x2ZSh0LnN0YXJ0KS5hZnRlcih0LmRlcHRoKTtpZihyPT09dm9pZCAwKXJldHVybiEwO2NvbnN0IHM9bi5kb2Mubm9kZUF0KHIpO3JldHVybiB0Lm5vZGUudHlwZT09PXM/LnR5cGUmJkF0KG4uZG9jLHIpJiZuLmpvaW4ociksITB9O2Z1bmN0aW9uIGt5KG4pe2NvbnN0IGU9bi5kb2MsdD1lLmZpcnN0Q2hpbGQ7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgcj1lLnJlc29sdmUoMSkscz1lLnJlc29sdmUodC5ub2RlU2l6ZS0xKTtyZXR1cm4gRC5iZXR3ZWVuKHIscyl9dmFyIGJ5PShuLGUsdCxyPXt9KT0+KHtlZGl0b3I6cyx0cjppLHN0YXRlOm8sZGlzcGF0Y2g6bCxjaGFpbjphLGNvbW1hbmRzOmMsY2FuOnV9KT0+e2NvbnN0e2V4dGVuc2lvbnM6ZCxzcGxpdHRhYmxlTWFya3M6aH09cy5leHRlbnNpb25NYW5hZ2VyLGY9aWUobixvLnNjaGVtYSkscD1pZShlLG8uc2NoZW1hKSx7c2VsZWN0aW9uOm0sc3RvcmVkTWFya3M6Z309byx7JGZyb206eSwkdG86a309bSxiPXkuYmxvY2tSYW5nZShrKSx3PWd8fG0uJHRvLnBhcmVudE9mZnNldCYmbS4kZnJvbS5tYXJrcygpO2lmKCFiKXJldHVybiExO2NvbnN0IHg9SHMoXz0+ZmkoXy50eXBlLm5hbWUsZCkpKG0pLHY9bS5mcm9tPT09MCYmbS50bz09PW8uZG9jLmNvbnRlbnQuc2l6ZSxDPW8uZG9jLmNvbnRlbnQuY29udGVudCxNPUMubGVuZ3RoPT09MT9DWzBdOm51bGwsUj12JiZNJiZmaShNLnR5cGUubmFtZSxkKT97bm9kZTpNLHBvczowfTpudWxsLE89eD8/UixQPSEheCYmYi5kZXB0aD49MSYmYi5kZXB0aC14LmRlcHRoPD0xLEY9ISFSO2lmKChQfHxGKSYmTyl7aWYoTy5ub2RlLnR5cGU9PT1mKXJldHVybiB2JiZGP2EoKS5jb21tYW5kKCh7dHI6XyxkaXNwYXRjaDpMfSk9Pntjb25zdCBIPWt5KF8pO3JldHVybiBIPyhfLnNldFNlbGVjdGlvbihIKSxMJiZMKF8pLCEwKTohMX0pLmxpZnRMaXN0SXRlbShwKS5ydW4oKTpjLmxpZnRMaXN0SXRlbShwKTtpZihmaShPLm5vZGUudHlwZS5uYW1lLGQpJiZmLnZhbGlkQ29udGVudChPLm5vZGUuY29udGVudCkpcmV0dXJuIGEoKS5jb21tYW5kKCgpPT4oaS5zZXROb2RlTWFya3VwKE8ucG9zLGYpLCEwKSkuY29tbWFuZCgoKT0+cGkoaSxmKSkuY29tbWFuZCgoKT0+bWkoaSxmKSkucnVuKCl9cmV0dXJuIXR8fCF3fHwhbD9hKCkuY29tbWFuZCgoKT0+dSgpLndyYXBJbkxpc3QoZixyKT8hMDpjLmNsZWFyTm9kZXMoKSkud3JhcEluTGlzdChmLHIpLmNvbW1hbmQoKCk9PnBpKGksZikpLmNvbW1hbmQoKCk9Pm1pKGksZikpLnJ1bigpOmEoKS5jb21tYW5kKCgpPT57Y29uc3QgXz11KCkud3JhcEluTGlzdChmLHIpLEw9dy5maWx0ZXIoSD0+aC5pbmNsdWRlcyhILnR5cGUubmFtZSkpO3JldHVybiBpLmVuc3VyZU1hcmtzKEwpLF8/ITA6Yy5jbGVhck5vZGVzKCl9KS53cmFwSW5MaXN0KGYscikuY29tbWFuZCgoKT0+cGkoaSxmKSkuY29tbWFuZCgoKT0+bWkoaSxmKSkucnVuKCl9LHh5PShuLGU9e30sdD17fSk9Pih7c3RhdGU6cixjb21tYW5kczpzfSk9Pntjb25zdHtleHRlbmRFbXB0eU1hcmtSYW5nZTppPSExfT10LG89YXQobixyLnNjaGVtYSk7cmV0dXJuIHFpKHIsbyxlKT9zLnVuc2V0TWFyayhvLHtleHRlbmRFbXB0eU1hcmtSYW5nZTppfSk6cy5zZXRNYXJrKG8sZSl9LHd5PShuLGUsdD17fSk9Pih7c3RhdGU6cixjb21tYW5kczpzfSk9Pntjb25zdCBpPWllKG4sci5zY2hlbWEpLG89aWUoZSxyLnNjaGVtYSksbD1FdChyLGksdCk7bGV0IGE7cmV0dXJuIHIuc2VsZWN0aW9uLiRhbmNob3Iuc2FtZVBhcmVudChyLnNlbGVjdGlvbi4kaGVhZCkmJihhPXIuc2VsZWN0aW9uLiRhbmNob3IucGFyZW50LmF0dHJzKSxsP3Muc2V0Tm9kZShvLGEpOnMuc2V0Tm9kZShpLHsuLi5hLC4uLnR9KX0sdnk9KG4sZT17fSk9Pih7c3RhdGU6dCxjb21tYW5kczpyfSk9Pntjb25zdCBzPWllKG4sdC5zY2hlbWEpO3JldHVybiBFdCh0LHMsZSk/ci5saWZ0KHMpOnIud3JhcEluKHMsZSl9LFN5PSgpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT57Y29uc3QgdD1uLnBsdWdpbnM7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKz0xKXtjb25zdCBzPXRbcl07bGV0IGk7aWYocy5zcGVjLmlzSW5wdXRSdWxlcyYmKGk9cy5nZXRTdGF0ZShuKSkpe2lmKGUpe2NvbnN0IG89bi50cixsPWkudHJhbnNmb3JtO2ZvcihsZXQgYT1sLnN0ZXBzLmxlbmd0aC0xO2E+PTA7YS09MSlvLnN0ZXAobC5zdGVwc1thXS5pbnZlcnQobC5kb2NzW2FdKSk7aWYoaS50ZXh0KXtjb25zdCBhPW8uZG9jLnJlc29sdmUoaS5mcm9tKS5tYXJrcygpO28ucmVwbGFjZVdpdGgoaS5mcm9tLGkudG8sbi5zY2hlbWEudGV4dChpLnRleHQsYSkpfWVsc2Ugby5kZWxldGUoaS5mcm9tLGkudG8pfXJldHVybiEwfX1yZXR1cm4hMX0sQ3k9KCk9Pih7dHI6bixkaXNwYXRjaDplfSk9Pntjb25zdHtzZWxlY3Rpb246dH09bix7ZW1wdHk6cixyYW5nZXM6c309dDtyZXR1cm4gcnx8ZSYmcy5mb3JFYWNoKGk9PntuLnJlbW92ZU1hcmsoaS4kZnJvbS5wb3MsaS4kdG8ucG9zKX0pLCEwfSxUeT0obixlPXt9KT0+KHt0cjp0LHN0YXRlOnIsZGlzcGF0Y2g6c30pPT57dmFyIGk7Y29uc3R7ZXh0ZW5kRW1wdHlNYXJrUmFuZ2U6bz0hMX09ZSx7c2VsZWN0aW9uOmx9PXQsYT1hdChuLHIuc2NoZW1hKSx7JGZyb206YyxlbXB0eTp1LHJhbmdlczpkfT1sO2lmKCFzKXJldHVybiEwO2lmKHUmJm8pe2xldHtmcm9tOmgsdG86Zn09bDtjb25zdCBwPShpPWMubWFya3MoKS5maW5kKGc9PmcudHlwZT09PWEpKT09bnVsbD92b2lkIDA6aS5hdHRycyxtPURvKGMsYSxwKTttJiYoaD1tLmZyb20sZj1tLnRvKSx0LnJlbW92ZU1hcmsoaCxmLGEpfWVsc2UgZC5mb3JFYWNoKGg9Pnt0LnJlbW92ZU1hcmsoaC4kZnJvbS5wb3MsaC4kdG8ucG9zLGEpfSk7cmV0dXJuIHQucmVtb3ZlU3RvcmVkTWFyayhhKSwhMH0sTXk9bj0+KHt0cjplLHN0YXRlOnQsZGlzcGF0Y2g6cn0pPT57Y29uc3R7c2VsZWN0aW9uOnN9PXQ7bGV0IGksbztyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIiPyhpPW4sbz1uKTpuJiYiZnJvbSJpbiBuJiYidG8iaW4gbj8oaT1uLmZyb20sbz1uLnRvKTooaT1zLmZyb20sbz1zLnRvKSxyJiZlLmRvYy5ub2Rlc0JldHdlZW4oaSxvLChsLGEpPT57aWYobC5pc1RleHQpcmV0dXJuO2NvbnN0IGM9ey4uLmwuYXR0cnN9O2RlbGV0ZSBjLmRpcixlLnNldE5vZGVNYXJrdXAoYSx2b2lkIDAsYyl9KSwhMH0sRXk9KG4sZT17fSk9Pih7dHI6dCxzdGF0ZTpyLGRpc3BhdGNoOnN9KT0+e2xldCBpPW51bGwsbz1udWxsO2NvbnN0IGw9X3ModHlwZW9mIG49PSJzdHJpbmciP246bi5uYW1lLHIuc2NoZW1hKTtpZighbClyZXR1cm4hMTtsPT09Im5vZGUiJiYoaT1pZShuLHIuc2NoZW1hKSksbD09PSJtYXJrIiYmKG89YXQobixyLnNjaGVtYSkpO2xldCBhPSExO3JldHVybiB0LnNlbGVjdGlvbi5yYW5nZXMuZm9yRWFjaChjPT57Y29uc3QgdT1jLiRmcm9tLnBvcyxkPWMuJHRvLnBvcztsZXQgaCxmLHAsbTt0LnNlbGVjdGlvbi5lbXB0eT9yLmRvYy5ub2Rlc0JldHdlZW4odSxkLChnLHkpPT57aSYmaT09PWcudHlwZSYmKGE9ITAscD1NYXRoLm1heCh5LHUpLG09TWF0aC5taW4oeStnLm5vZGVTaXplLGQpLGg9eSxmPWcpfSk6ci5kb2Mubm9kZXNCZXR3ZWVuKHUsZCwoZyx5KT0+e3k8dSYmaSYmaT09PWcudHlwZSYmKGE9ITAscD1NYXRoLm1heCh5LHUpLG09TWF0aC5taW4oeStnLm5vZGVTaXplLGQpLGg9eSxmPWcpLHk+PXUmJnk8PWQmJihpJiZpPT09Zy50eXBlJiYoYT0hMCxzJiZ0LnNldE5vZGVNYXJrdXAoeSx2b2lkIDAsey4uLmcuYXR0cnMsLi4uZX0pKSxvJiZnLm1hcmtzLmxlbmd0aCYmZy5tYXJrcy5mb3JFYWNoKGs9PntpZihvPT09ay50eXBlJiYoYT0hMCxzKSl7Y29uc3QgYj1NYXRoLm1heCh5LHUpLHc9TWF0aC5taW4oeStnLm5vZGVTaXplLGQpO3QuYWRkTWFyayhiLHcsby5jcmVhdGUoey4uLmsuYXR0cnMsLi4uZX0pKX19KSl9KSxmJiYoaCE9PXZvaWQgMCYmcyYmdC5zZXROb2RlTWFya3VwKGgsdm9pZCAwLHsuLi5mLmF0dHJzLC4uLmV9KSxvJiZmLm1hcmtzLmxlbmd0aCYmZi5tYXJrcy5mb3JFYWNoKGc9PntvPT09Zy50eXBlJiZzJiZ0LmFkZE1hcmsocCxtLG8uY3JlYXRlKHsuLi5nLmF0dHJzLC4uLmV9KSl9KSl9KSxhfSxBeT0obixlPXt9KT0+KHtzdGF0ZTp0LGRpc3BhdGNoOnJ9KT0+e2NvbnN0IHM9aWUobix0LnNjaGVtYSk7cmV0dXJuIGVwKHMsZSkodCxyKX0sT3k9KG4sZT17fSk9Pih7c3RhdGU6dCxkaXNwYXRjaDpyfSk9Pntjb25zdCBzPWllKG4sdC5zY2hlbWEpO3JldHVybiB0cChzLGUpKHQscil9LE55PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jYWxsYmFja3M9e319b24obixlKXtyZXR1cm4gdGhpcy5jYWxsYmFja3Nbbl18fCh0aGlzLmNhbGxiYWNrc1tuXT1bXSksdGhpcy5jYWxsYmFja3Nbbl0ucHVzaChlKSx0aGlzfWVtaXQobiwuLi5lKXtjb25zdCB0PXRoaXMuY2FsbGJhY2tzW25dO3JldHVybiB0JiZ0LmZvckVhY2gocj0+ci5hcHBseSh0aGlzLGUpKSx0aGlzfW9mZihuLGUpe2NvbnN0IHQ9dGhpcy5jYWxsYmFja3Nbbl07cmV0dXJuIHQmJihlP3RoaXMuY2FsbGJhY2tzW25dPXQuZmlsdGVyKHI9PnIhPT1lKTpkZWxldGUgdGhpcy5jYWxsYmFja3Nbbl0pLHRoaXN9b25jZShuLGUpe2NvbnN0IHQ9KC4uLnIpPT57dGhpcy5vZmYobix0KSxlLmFwcGx5KHRoaXMscil9O3JldHVybiB0aGlzLm9uKG4sdCl9cmVtb3ZlQWxsTGlzdGVuZXJzKCl7dGhpcy5jYWxsYmFja3M9e319fSxVcz1jbGFzc3tjb25zdHJ1Y3RvcihuKXt2YXIgZTt0aGlzLmZpbmQ9bi5maW5kLHRoaXMuaGFuZGxlcj1uLmhhbmRsZXIsdGhpcy51bmRvYWJsZT0oZT1uLnVuZG9hYmxlKSE9bnVsbD9lOiEwfX0sUnk9KG4sZSk9PntpZihJbyhlKSlyZXR1cm4gZS5leGVjKG4pO2NvbnN0IHQ9ZShuKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCByPVt0LnRleHRdO3JldHVybiByLmluZGV4PXQuaW5kZXgsci5pbnB1dD1uLHIuZGF0YT10LmRhdGEsdC5yZXBsYWNlV2l0aCYmKHQudGV4dC5pbmNsdWRlcyh0LnJlcGxhY2VXaXRoKSxyLnB1c2godC5yZXBsYWNlV2l0aCkpLHJ9O2Z1bmN0aW9uIGdyKG4pe3ZhciBlO2NvbnN0e2VkaXRvcjp0LGZyb206cix0bzpzLHRleHQ6aSxydWxlczpvLHBsdWdpbjpsfT1uLHt2aWV3OmF9PXQ7aWYoYS5jb21wb3NpbmcpcmV0dXJuITE7Y29uc3QgYz1hLnN0YXRlLmRvYy5yZXNvbHZlKHIpO2lmKGMucGFyZW50LnR5cGUuc3BlYy5jb2RlfHwoZT1jLm5vZGVCZWZvcmV8fGMubm9kZUFmdGVyKSE9bnVsbCYmZS5tYXJrcy5maW5kKGg9PmgudHlwZS5zcGVjLmNvZGUpKXJldHVybiExO2xldCB1PSExO2NvbnN0IGQ9bnkoYykraTtyZXR1cm4gby5mb3JFYWNoKGg9PntpZih1KXJldHVybjtjb25zdCBmPVJ5KGQsaC5maW5kKTtpZighZilyZXR1cm47Y29uc3QgcD1hLnN0YXRlLnRyLG09JHMoe3N0YXRlOmEuc3RhdGUsdHJhbnNhY3Rpb246cH0pLGc9e2Zyb206ci0oZlswXS5sZW5ndGgtaS5sZW5ndGgpLHRvOnN9LHtjb21tYW5kczp5LGNoYWluOmssY2FuOmJ9PW5ldyBCcyh7ZWRpdG9yOnQsc3RhdGU6bX0pO2guaGFuZGxlcih7c3RhdGU6bSxyYW5nZTpnLG1hdGNoOmYsY29tbWFuZHM6eSxjaGFpbjprLGNhbjpifSk9PT1udWxsfHwhcC5zdGVwcy5sZW5ndGh8fChoLnVuZG9hYmxlJiZwLnNldE1ldGEobCx7dHJhbnNmb3JtOnAsZnJvbTpyLHRvOnMsdGV4dDppfSksYS5kaXNwYXRjaChwKSx1PSEwKX0pLHV9ZnVuY3Rpb24gSXkobil7Y29uc3R7ZWRpdG9yOmUscnVsZXM6dH09bixyPW5ldyBHKHtzdGF0ZTp7aW5pdCgpe3JldHVybiBudWxsfSxhcHBseShzLGksbyl7Y29uc3QgbD1zLmdldE1ldGEocik7aWYobClyZXR1cm4gbDtjb25zdCBhPXMuZ2V0TWV0YSgiYXBwbHlJbnB1dFJ1bGVzIik7cmV0dXJuIGEmJnNldFRpbWVvdXQoKCk9PntsZXR7dGV4dDp1fT1hO3R5cGVvZiB1PT0ic3RyaW5nIj91PXU6dT1QbyhTLmZyb20odSksby5zY2hlbWEpO2NvbnN0e2Zyb206ZH09YSxoPWQrdS5sZW5ndGg7Z3Ioe2VkaXRvcjplLGZyb206ZCx0bzpoLHRleHQ6dSxydWxlczp0LHBsdWdpbjpyfSl9KSxzLnNlbGVjdGlvblNldHx8cy5kb2NDaGFuZ2VkP251bGw6aX19LHByb3BzOntoYW5kbGVUZXh0SW5wdXQocyxpLG8sbCl7cmV0dXJuIGdyKHtlZGl0b3I6ZSxmcm9tOmksdG86byx0ZXh0OmwscnVsZXM6dCxwbHVnaW46cn0pfSxoYW5kbGVET01FdmVudHM6e2NvbXBvc2l0aW9uZW5kOnM9PihzZXRUaW1lb3V0KCgpPT57Y29uc3R7JGN1cnNvcjppfT1zLnN0YXRlLnNlbGVjdGlvbjtpJiZncih7ZWRpdG9yOmUsZnJvbTppLnBvcyx0bzppLnBvcyx0ZXh0OiIiLHJ1bGVzOnQscGx1Z2luOnJ9KX0pLCExKX0saGFuZGxlS2V5RG93bihzLGkpe2lmKGkua2V5IT09IkVudGVyIilyZXR1cm4hMTtjb25zdHskY3Vyc29yOm99PXMuc3RhdGUuc2VsZWN0aW9uO3JldHVybiBvP2dyKHtlZGl0b3I6ZSxmcm9tOm8ucG9zLHRvOm8ucG9zLHRleHQ6YApgLHJ1bGVzOnQscGx1Z2luOnJ9KTohMX19LGlzSW5wdXRSdWxlczohMH0pO3JldHVybiByfWZ1bmN0aW9uIER5KG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobikuc2xpY2UoOCwtMSl9ZnVuY3Rpb24geXIobil7cmV0dXJuIER5KG4pIT09Ik9iamVjdCI/ITE6bi5jb25zdHJ1Y3Rvcj09PU9iamVjdCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pPT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiB1ZChuLGUpe2NvbnN0IHQ9ey4uLm59O3JldHVybiB5cihuKSYmeXIoZSkmJk9iamVjdC5rZXlzKGUpLmZvckVhY2gocj0+e3lyKGVbcl0pJiZ5cihuW3JdKT90W3JdPXVkKG5bcl0sZVtyXSk6dFtyXT1lW3JdfSksdH12YXIgX289Y2xhc3N7Y29uc3RydWN0b3Iobj17fSl7dGhpcy50eXBlPSJleHRlbmRhYmxlIix0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGQ9bnVsbCx0aGlzLm5hbWU9IiIsdGhpcy5jb25maWc9e25hbWU6dGhpcy5uYW1lfSx0aGlzLmNvbmZpZz17Li4udGhpcy5jb25maWcsLi4ubn0sdGhpcy5uYW1lPXRoaXMuY29uZmlnLm5hbWV9Z2V0IG9wdGlvbnMoKXtyZXR1cm57Li4uVShBKHRoaXMsImFkZE9wdGlvbnMiLHtuYW1lOnRoaXMubmFtZX0pKXx8e319fWdldCBzdG9yYWdlKCl7cmV0dXJuey4uLlUoQSh0aGlzLCJhZGRTdG9yYWdlIix7bmFtZTp0aGlzLm5hbWUsb3B0aW9uczp0aGlzLm9wdGlvbnN9KSl8fHt9fX1jb25maWd1cmUobj17fSl7Y29uc3QgZT10aGlzLmV4dGVuZCh7Li4udGhpcy5jb25maWcsYWRkT3B0aW9uczooKT0+dWQodGhpcy5vcHRpb25zLG4pfSk7cmV0dXJuIGUubmFtZT10aGlzLm5hbWUsZS5wYXJlbnQ9dGhpcy5wYXJlbnQsZX1leHRlbmQobj17fSl7Y29uc3QgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7Li4udGhpcy5jb25maWcsLi4ubn0pO3JldHVybiBlLnBhcmVudD10aGlzLHRoaXMuY2hpbGQ9ZSxlLm5hbWU9Im5hbWUiaW4gbj9uLm5hbWU6ZS5wYXJlbnQubmFtZSxlfX0sSnQ9Y2xhc3MgZGQgZXh0ZW5kcyBfb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy50eXBlPSJtYXJrIn1zdGF0aWMgY3JlYXRlKGU9e30pe2NvbnN0IHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSgpOmU7cmV0dXJuIG5ldyBkZCh0KX1zdGF0aWMgaGFuZGxlRXhpdCh7ZWRpdG9yOmUsbWFyazp0fSl7Y29uc3R7dHI6cn09ZS5zdGF0ZSxzPWUuc3RhdGUuc2VsZWN0aW9uLiRmcm9tO2lmKHMucG9zPT09cy5lbmQoKSl7Y29uc3Qgbz1zLm1hcmtzKCk7aWYoISEhby5maW5kKGM9PmM/LnR5cGUubmFtZT09PXQubmFtZSkpcmV0dXJuITE7Y29uc3QgYT1vLmZpbmQoYz0+Yz8udHlwZS5uYW1lPT09dC5uYW1lKTtyZXR1cm4gYSYmci5yZW1vdmVTdG9yZWRNYXJrKGEpLHIuaW5zZXJ0VGV4dCgiICIscy5wb3MpLGUudmlldy5kaXNwYXRjaChyKSwhMH1yZXR1cm4hMX1jb25maWd1cmUoZSl7cmV0dXJuIHN1cGVyLmNvbmZpZ3VyZShlKX1leHRlbmQoZSl7Y29uc3QgdD10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKCk6ZTtyZXR1cm4gc3VwZXIuZXh0ZW5kKHQpfX07ZnVuY3Rpb24gTHkobil7cmV0dXJuIHR5cGVvZiBuPT0ibnVtYmVyIn12YXIgUHk9Y2xhc3N7Y29uc3RydWN0b3Iobil7dGhpcy5maW5kPW4uZmluZCx0aGlzLmhhbmRsZXI9bi5oYW5kbGVyfX0senk9KG4sZSx0KT0+e2lmKElvKGUpKXJldHVyblsuLi5uLm1hdGNoQWxsKGUpXTtjb25zdCByPWUobix0KTtyZXR1cm4gcj9yLm1hcChzPT57Y29uc3QgaT1bcy50ZXh0XTtyZXR1cm4gaS5pbmRleD1zLmluZGV4LGkuaW5wdXQ9bixpLmRhdGE9cy5kYXRhLHMucmVwbGFjZVdpdGgmJihzLnRleHQuaW5jbHVkZXMocy5yZXBsYWNlV2l0aCksaS5wdXNoKHMucmVwbGFjZVdpdGgpKSxpfSk6W119O2Z1bmN0aW9uICR5KG4pe2NvbnN0e2VkaXRvcjplLHN0YXRlOnQsZnJvbTpyLHRvOnMscnVsZTppLHBhc3RlRXZlbnQ6byxkcm9wRXZlbnQ6bH09bix7Y29tbWFuZHM6YSxjaGFpbjpjLGNhbjp1fT1uZXcgQnMoe2VkaXRvcjplLHN0YXRlOnR9KSxkPVtdO3JldHVybiB0LmRvYy5ub2Rlc0JldHdlZW4ocixzLChmLHApPT57dmFyIG0sZyx5LGssYjtpZigoZz0obT1mLnR5cGUpPT1udWxsP3ZvaWQgMDptLnNwZWMpIT1udWxsJiZnLmNvZGV8fCEoZi5pc1RleHR8fGYuaXNUZXh0YmxvY2t8fGYuaXNJbmxpbmUpKXJldHVybjtjb25zdCB3PShiPShrPSh5PWYuY29udGVudCk9PW51bGw/dm9pZCAwOnkuc2l6ZSkhPW51bGw/azpmLm5vZGVTaXplKSE9bnVsbD9iOjAseD1NYXRoLm1heChyLHApLHY9TWF0aC5taW4ocyxwK3cpO2lmKHg+PXYpcmV0dXJuO2NvbnN0IEM9Zi5pc1RleHQ/Zi50ZXh0fHwiIjpmLnRleHRCZXR3ZWVuKHgtcCx2LXAsdm9pZCAwLCLvv7wiKTt6eShDLGkuZmluZCxvKS5mb3JFYWNoKFI9PntpZihSLmluZGV4PT09dm9pZCAwKXJldHVybjtjb25zdCBPPXgrUi5pbmRleCsxLFA9TytSWzBdLmxlbmd0aCxGPXtmcm9tOnQudHIubWFwcGluZy5tYXAoTyksdG86dC50ci5tYXBwaW5nLm1hcChQKX0sXz1pLmhhbmRsZXIoe3N0YXRlOnQscmFuZ2U6RixtYXRjaDpSLGNvbW1hbmRzOmEsY2hhaW46YyxjYW46dSxwYXN0ZUV2ZW50Om8sZHJvcEV2ZW50Omx9KTtkLnB1c2goXyl9KX0pLGQuZXZlcnkoZj0+ZiE9PW51bGwpfXZhciBrcj1udWxsLEJ5PW49Pnt2YXIgZTtjb25zdCB0PW5ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiLHtjbGlwYm9hcmREYXRhOm5ldyBEYXRhVHJhbnNmZXJ9KTtyZXR1cm4oZT10LmNsaXBib2FyZERhdGEpPT1udWxsfHxlLnNldERhdGEoInRleHQvaHRtbCIsbiksdH07ZnVuY3Rpb24gX3kobil7Y29uc3R7ZWRpdG9yOmUscnVsZXM6dH09bjtsZXQgcj1udWxsLHM9ITEsaT0hMSxvPXR5cGVvZiBDbGlwYm9hcmRFdmVudDwidSI/bmV3IENsaXBib2FyZEV2ZW50KCJwYXN0ZSIpOm51bGwsbDt0cnl7bD10eXBlb2YgRHJhZ0V2ZW50PCJ1Ij9uZXcgRHJhZ0V2ZW50KCJkcm9wIik6bnVsbH1jYXRjaHtsPW51bGx9Y29uc3QgYT0oe3N0YXRlOnUsZnJvbTpkLHRvOmgscnVsZTpmLHBhc3RlRXZ0OnB9KT0+e2NvbnN0IG09dS50cixnPSRzKHtzdGF0ZTp1LHRyYW5zYWN0aW9uOm19KTtpZighKCEkeSh7ZWRpdG9yOmUsc3RhdGU6Zyxmcm9tOk1hdGgubWF4KGQtMSwwKSx0bzpoLmItMSxydWxlOmYscGFzdGVFdmVudDpwLGRyb3BFdmVudDpsfSl8fCFtLnN0ZXBzLmxlbmd0aCkpe3RyeXtsPXR5cGVvZiBEcmFnRXZlbnQ8InUiP25ldyBEcmFnRXZlbnQoImRyb3AiKTpudWxsfWNhdGNoe2w9bnVsbH1yZXR1cm4gbz10eXBlb2YgQ2xpcGJvYXJkRXZlbnQ8InUiP25ldyBDbGlwYm9hcmRFdmVudCgicGFzdGUiKTpudWxsLG19fTtyZXR1cm4gdC5tYXAodT0+bmV3IEcoe3ZpZXcoZCl7Y29uc3QgaD1wPT57dmFyIG07cj0obT1kLmRvbS5wYXJlbnRFbGVtZW50KSE9bnVsbCYmbS5jb250YWlucyhwLnRhcmdldCk/ZC5kb20ucGFyZW50RWxlbWVudDpudWxsLHImJihrcj1lKX0sZj0oKT0+e2tyJiYoa3I9bnVsbCl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsZikse2Rlc3Ryb3koKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IixoKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsZil9fX0scHJvcHM6e2hhbmRsZURPTUV2ZW50czp7ZHJvcDooZCxoKT0+e2lmKGk9cj09PWQuZG9tLnBhcmVudEVsZW1lbnQsbD1oLCFpKXtjb25zdCBmPWtyO2Y/LmlzRWRpdGFibGUmJnNldFRpbWVvdXQoKCk9Pntjb25zdCBwPWYuc3RhdGUuc2VsZWN0aW9uO3AmJmYuY29tbWFuZHMuZGVsZXRlUmFuZ2Uoe2Zyb206cC5mcm9tLHRvOnAudG99KX0sMTApfXJldHVybiExfSxwYXN0ZTooZCxoKT0+e3ZhciBmO2NvbnN0IHA9KGY9aC5jbGlwYm9hcmREYXRhKT09bnVsbD92b2lkIDA6Zi5nZXREYXRhKCJ0ZXh0L2h0bWwiKTtyZXR1cm4gbz1oLHM9ISFwPy5pbmNsdWRlcygiZGF0YS1wbS1zbGljZSIpLCExfX19LGFwcGVuZFRyYW5zYWN0aW9uOihkLGgsZik9Pntjb25zdCBwPWRbMF0sbT1wLmdldE1ldGEoInVpRXZlbnQiKT09PSJwYXN0ZSImJiFzLGc9cC5nZXRNZXRhKCJ1aUV2ZW50Iik9PT0iZHJvcCImJiFpLHk9cC5nZXRNZXRhKCJhcHBseVBhc3RlUnVsZXMiKSxrPSEheTtpZighbSYmIWcmJiFrKXJldHVybjtpZihrKXtsZXR7dGV4dDp4fT15O3R5cGVvZiB4PT0ic3RyaW5nIj94PXg6eD1QbyhTLmZyb20oeCksZi5zY2hlbWEpO2NvbnN0e2Zyb206dn09eSxDPXYreC5sZW5ndGgsTT1CeSh4KTtyZXR1cm4gYSh7cnVsZTp1LHN0YXRlOmYsZnJvbTp2LHRvOntiOkN9LHBhc3RlRXZ0Ok19KX1jb25zdCBiPWguZG9jLmNvbnRlbnQuZmluZERpZmZTdGFydChmLmRvYy5jb250ZW50KSx3PWguZG9jLmNvbnRlbnQuZmluZERpZmZFbmQoZi5kb2MuY29udGVudCk7aWYoISghTHkoYil8fCF3fHxiPT09dy5iKSlyZXR1cm4gYSh7cnVsZTp1LHN0YXRlOmYsZnJvbTpiLHRvOncscGFzdGVFdnQ6b30pfX0pKX12YXIganM9Y2xhc3N7Y29uc3RydWN0b3IobixlKXt0aGlzLnNwbGl0dGFibGVNYXJrcz1bXSx0aGlzLmVkaXRvcj1lLHRoaXMuYmFzZUV4dGVuc2lvbnM9bix0aGlzLmV4dGVuc2lvbnM9em8obiksdGhpcy5zY2hlbWE9dGQodGhpcy5leHRlbnNpb25zLGUpLHRoaXMuc2V0dXBFeHRlbnNpb25zKCl9Z2V0IGNvbW1hbmRzKCl7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5yZWR1Y2UoKG4sZSk9Pntjb25zdCB0PXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbZS5uYW1lXSxlZGl0b3I6dGhpcy5lZGl0b3IsdHlwZTpibihlLm5hbWUsdGhpcy5zY2hlbWEpfSxyPUEoZSwiYWRkQ29tbWFuZHMiLHQpO3JldHVybiByP3suLi5uLC4uLnIoKX06bn0se30pfWdldCBwbHVnaW5zKCl7Y29uc3R7ZWRpdG9yOm59PXRoaXM7cmV0dXJuIF9uKFsuLi50aGlzLmV4dGVuc2lvbnNdLnJldmVyc2UoKSkuZmxhdE1hcChyPT57Y29uc3Qgcz17bmFtZTpyLm5hbWUsb3B0aW9uczpyLm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3IubmFtZV0sZWRpdG9yOm4sdHlwZTpibihyLm5hbWUsdGhpcy5zY2hlbWEpfSxpPVtdLG89QShyLCJhZGRLZXlib2FyZFNob3J0Y3V0cyIscyk7bGV0IGw9e307aWYoci50eXBlPT09Im1hcmsiJiZBKHIsImV4aXRhYmxlIixzKSYmKGwuQXJyb3dSaWdodD0oKT0+SnQuaGFuZGxlRXhpdCh7ZWRpdG9yOm4sbWFyazpyfSkpLG8pe2NvbnN0IGg9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG8oKSkubWFwKChbZixwXSk9PltmLCgpPT5wKHtlZGl0b3I6bn0pXSkpO2w9ey4uLmwsLi4uaH19Y29uc3QgYT1YbShsKTtpLnB1c2goYSk7Y29uc3QgYz1BKHIsImFkZElucHV0UnVsZXMiLHMpO2lmKHZhKHIsbi5vcHRpb25zLmVuYWJsZUlucHV0UnVsZXMpJiZjKXtjb25zdCBoPWMoKTtpZihoJiZoLmxlbmd0aCl7Y29uc3QgZj1JeSh7ZWRpdG9yOm4scnVsZXM6aH0pLHA9QXJyYXkuaXNBcnJheShmKT9mOltmXTtpLnB1c2goLi4ucCl9fWNvbnN0IHU9QShyLCJhZGRQYXN0ZVJ1bGVzIixzKTtpZih2YShyLG4ub3B0aW9ucy5lbmFibGVQYXN0ZVJ1bGVzKSYmdSl7Y29uc3QgaD11KCk7aWYoaCYmaC5sZW5ndGgpe2NvbnN0IGY9X3koe2VkaXRvcjpuLHJ1bGVzOmh9KTtpLnB1c2goLi4uZil9fWNvbnN0IGQ9QShyLCJhZGRQcm9zZU1pcnJvclBsdWdpbnMiLHMpO2lmKGQpe2NvbnN0IGg9ZCgpO2kucHVzaCguLi5oKX1yZXR1cm4gaX0pfWdldCBhdHRyaWJ1dGVzKCl7cmV0dXJuIGVkKHRoaXMuZXh0ZW5zaW9ucyl9Z2V0IG5vZGVWaWV3cygpe2NvbnN0e2VkaXRvcjpufT10aGlzLHtub2RlRXh0ZW5zaW9uczplfT1obih0aGlzLmV4dGVuc2lvbnMpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZS5maWx0ZXIodD0+ISFBKHQsImFkZE5vZGVWaWV3IikpLm1hcCh0PT57Y29uc3Qgcj10aGlzLmF0dHJpYnV0ZXMuZmlsdGVyKGE9PmEudHlwZT09PXQubmFtZSkscz17bmFtZTp0Lm5hbWUsb3B0aW9uczp0Lm9wdGlvbnMsc3RvcmFnZTp0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW3QubmFtZV0sZWRpdG9yOm4sdHlwZTppZSh0Lm5hbWUsdGhpcy5zY2hlbWEpfSxpPUEodCwiYWRkTm9kZVZpZXciLHMpO2lmKCFpKXJldHVybltdO2NvbnN0IG89aSgpO2lmKCFvKXJldHVybltdO2NvbnN0IGw9KGEsYyx1LGQsaCk9Pntjb25zdCBmPWVyKGEscik7cmV0dXJuIG8oe25vZGU6YSx2aWV3OmMsZ2V0UG9zOnUsZGVjb3JhdGlvbnM6ZCxpbm5lckRlY29yYXRpb25zOmgsZWRpdG9yOm4sZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6Zn0pfTtyZXR1cm5bdC5uYW1lLGxdfSkpfWRpc3BhdGNoVHJhbnNhY3Rpb24obil7Y29uc3R7ZWRpdG9yOmV9PXRoaXM7cmV0dXJuIF9uKFsuLi50aGlzLmV4dGVuc2lvbnNdLnJldmVyc2UoKSkucmVkdWNlUmlnaHQoKHIscyk9Pntjb25zdCBpPXtuYW1lOnMubmFtZSxvcHRpb25zOnMub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2Vbcy5uYW1lXSxlZGl0b3I6ZSx0eXBlOmJuKHMubmFtZSx0aGlzLnNjaGVtYSl9LG89QShzLCJkaXNwYXRjaFRyYW5zYWN0aW9uIixpKTtyZXR1cm4gbz9sPT57by5jYWxsKGkse3RyYW5zYWN0aW9uOmwsbmV4dDpyfSl9OnJ9LG4pfXRyYW5zZm9ybVBhc3RlZEhUTUwobil7Y29uc3R7ZWRpdG9yOmV9PXRoaXM7cmV0dXJuIF9uKFsuLi50aGlzLmV4dGVuc2lvbnNdKS5yZWR1Y2UoKHIscyk9Pntjb25zdCBpPXtuYW1lOnMubmFtZSxvcHRpb25zOnMub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2Vbcy5uYW1lXSxlZGl0b3I6ZSx0eXBlOmJuKHMubmFtZSx0aGlzLnNjaGVtYSl9LG89QShzLCJ0cmFuc2Zvcm1QYXN0ZWRIVE1MIixpKTtyZXR1cm4gbz8obCxhKT0+e2NvbnN0IGM9cihsLGEpO3JldHVybiBvLmNhbGwoaSxjKX06cn0sbnx8KHI9PnIpKX1nZXQgbWFya1ZpZXdzKCl7Y29uc3R7ZWRpdG9yOm59PXRoaXMse21hcmtFeHRlbnNpb25zOmV9PWhuKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlLmZpbHRlcih0PT4hIUEodCwiYWRkTWFya1ZpZXciKSkubWFwKHQ9Pntjb25zdCByPXRoaXMuYXR0cmlidXRlcy5maWx0ZXIobD0+bC50eXBlPT09dC5uYW1lKSxzPXtuYW1lOnQubmFtZSxvcHRpb25zOnQub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbdC5uYW1lXSxlZGl0b3I6bix0eXBlOmF0KHQubmFtZSx0aGlzLnNjaGVtYSl9LGk9QSh0LCJhZGRNYXJrVmlldyIscyk7aWYoIWkpcmV0dXJuW107Y29uc3Qgbz0obCxhLGMpPT57Y29uc3QgdT1lcihsLHIpO3JldHVybiBpKCkoe21hcms6bCx2aWV3OmEsaW5saW5lOmMsZWRpdG9yOm4sZXh0ZW5zaW9uOnQsSFRNTEF0dHJpYnV0ZXM6dSx1cGRhdGVBdHRyaWJ1dGVzOmQ9Pnt0ayhsLG4sZCl9fSl9O3JldHVyblt0Lm5hbWUsb119KSl9c2V0dXBFeHRlbnNpb25zKCl7Y29uc3Qgbj10aGlzLmV4dGVuc2lvbnM7dGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZT1PYmplY3QuZnJvbUVudHJpZXMobi5tYXAoZT0+W2UubmFtZSxlLnN0b3JhZ2VdKSksbi5mb3JFYWNoKGU9Pnt2YXIgdDtjb25zdCByPXtuYW1lOmUubmFtZSxvcHRpb25zOmUub3B0aW9ucyxzdG9yYWdlOnRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbZS5uYW1lXSxlZGl0b3I6dGhpcy5lZGl0b3IsdHlwZTpibihlLm5hbWUsdGhpcy5zY2hlbWEpfTtlLnR5cGU9PT0ibWFyayImJigodD1VKEEoZSwia2VlcE9uU3BsaXQiLHIpKSk9PW51bGx8fHQpJiZ0aGlzLnNwbGl0dGFibGVNYXJrcy5wdXNoKGUubmFtZSk7Y29uc3Qgcz1BKGUsIm9uQmVmb3JlQ3JlYXRlIixyKSxpPUEoZSwib25DcmVhdGUiLHIpLG89QShlLCJvblVwZGF0ZSIsciksbD1BKGUsIm9uU2VsZWN0aW9uVXBkYXRlIixyKSxhPUEoZSwib25UcmFuc2FjdGlvbiIsciksYz1BKGUsIm9uRm9jdXMiLHIpLHU9QShlLCJvbkJsdXIiLHIpLGQ9QShlLCJvbkRlc3Ryb3kiLHIpO3MmJnRoaXMuZWRpdG9yLm9uKCJiZWZvcmVDcmVhdGUiLHMpLGkmJnRoaXMuZWRpdG9yLm9uKCJjcmVhdGUiLGkpLG8mJnRoaXMuZWRpdG9yLm9uKCJ1cGRhdGUiLG8pLGwmJnRoaXMuZWRpdG9yLm9uKCJzZWxlY3Rpb25VcGRhdGUiLGwpLGEmJnRoaXMuZWRpdG9yLm9uKCJ0cmFuc2FjdGlvbiIsYSksYyYmdGhpcy5lZGl0b3Iub24oImZvY3VzIixjKSx1JiZ0aGlzLmVkaXRvci5vbigiYmx1ciIsdSksZCYmdGhpcy5lZGl0b3Iub24oImRlc3Ryb3kiLGQpfSl9fTtqcy5yZXNvbHZlPXpvO2pzLnNvcnQ9X247anMuZmxhdHRlbj1Gczt2YXIgSHk9e307Um8oSHkse0NsaXBib2FyZFRleHRTZXJpYWxpemVyOigpPT5mZCxDb21tYW5kczooKT0+cGQsRGVsZXRlOigpPT5tZCxEcm9wOigpPT5nZCxFZGl0YWJsZTooKT0+eWQsRm9jdXNFdmVudHM6KCk9PmJkLEtleW1hcDooKT0+eGQsUGFzdGU6KCk9PndkLFRhYmluZGV4OigpPT52ZCxUZXh0RGlyZWN0aW9uOigpPT5TZCxmb2N1c0V2ZW50c1BsdWdpbktleTooKT0+a2R9KTt2YXIgdGU9Y2xhc3MgaGQgZXh0ZW5kcyBfb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy50eXBlPSJleHRlbnNpb24ifXN0YXRpYyBjcmVhdGUoZT17fSl7Y29uc3QgdD10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKCk6ZTtyZXR1cm4gbmV3IGhkKHQpfWNvbmZpZ3VyZShlKXtyZXR1cm4gc3VwZXIuY29uZmlndXJlKGUpfWV4dGVuZChlKXtjb25zdCB0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTplO3JldHVybiBzdXBlci5leHRlbmQodCl9fSxmZD10ZS5jcmVhdGUoe25hbWU6ImNsaXBib2FyZFRleHRTZXJpYWxpemVyIixhZGRPcHRpb25zKCl7cmV0dXJue2Jsb2NrU2VwYXJhdG9yOnZvaWQgMH19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjbGlwYm9hcmRUZXh0U2VyaWFsaXplciIpLHByb3BzOntjbGlwYm9hcmRUZXh0U2VyaWFsaXplcjooKT0+e2NvbnN0e2VkaXRvcjpufT10aGlzLHtzdGF0ZTplLHNjaGVtYTp0fT1uLHtkb2M6cixzZWxlY3Rpb246c309ZSx7cmFuZ2VzOml9PXMsbz1NYXRoLm1pbiguLi5pLm1hcCh1PT51LiRmcm9tLnBvcykpLGw9TWF0aC5tYXgoLi4uaS5tYXAodT0+dS4kdG8ucG9zKSksYT0kbyh0KTtyZXR1cm4gbmQocix7ZnJvbTpvLHRvOmx9LHsuLi50aGlzLm9wdGlvbnMuYmxvY2tTZXBhcmF0b3IhPT12b2lkIDA/e2Jsb2NrU2VwYXJhdG9yOnRoaXMub3B0aW9ucy5ibG9ja1NlcGFyYXRvcn06e30sdGV4dFNlcmlhbGl6ZXJzOmF9KX19fSldfX0pLHBkPXRlLmNyZWF0ZSh7bmFtZToiY29tbWFuZHMiLGFkZENvbW1hbmRzKCl7cmV0dXJuey4uLiRlfX19KSxtZD10ZS5jcmVhdGUoe25hbWU6ImRlbGV0ZSIsb25VcGRhdGUoe3RyYW5zYWN0aW9uOm4sYXBwZW5kZWRUcmFuc2FjdGlvbnM6ZX0pe3ZhciB0LHIscztjb25zdCBpPSgpPT57dmFyIG8sbCxhLGM7aWYoKGM9KGE9KGw9KG89dGhpcy5lZGl0b3Iub3B0aW9ucy5jb3JlRXh0ZW5zaW9uT3B0aW9ucyk9PW51bGw/dm9pZCAwOm8uZGVsZXRlKT09bnVsbD92b2lkIDA6bC5maWx0ZXJUcmFuc2FjdGlvbik9PW51bGw/dm9pZCAwOmEuY2FsbChsLG4pKSE9bnVsbD9jOm4uZ2V0TWV0YSgieS1zeW5jJCIpKXJldHVybjtjb25zdCB1PVl1KG4uYmVmb3JlLFtuLC4uLmVdKTtpZCh1KS5mb3JFYWNoKGY9Pnt1Lm1hcHBpbmcubWFwUmVzdWx0KGYub2xkUmFuZ2UuZnJvbSkuZGVsZXRlZEFmdGVyJiZ1Lm1hcHBpbmcubWFwUmVzdWx0KGYub2xkUmFuZ2UudG8pLmRlbGV0ZWRCZWZvcmUmJnUuYmVmb3JlLm5vZGVzQmV0d2VlbihmLm9sZFJhbmdlLmZyb20sZi5vbGRSYW5nZS50bywocCxtKT0+e2NvbnN0IGc9bStwLm5vZGVTaXplLTIseT1mLm9sZFJhbmdlLmZyb208PW0mJmc8PWYub2xkUmFuZ2UudG87dGhpcy5lZGl0b3IuZW1pdCgiZGVsZXRlIix7dHlwZToibm9kZSIsbm9kZTpwLGZyb206bSx0bzpnLG5ld0Zyb206dS5tYXBwaW5nLm1hcChtKSxuZXdUbzp1Lm1hcHBpbmcubWFwKGcpLGRlbGV0ZWRSYW5nZTpmLm9sZFJhbmdlLG5ld1JhbmdlOmYubmV3UmFuZ2UscGFydGlhbDoheSxlZGl0b3I6dGhpcy5lZGl0b3IsdHJhbnNhY3Rpb246bixjb21iaW5lZFRyYW5zZm9ybTp1fSl9KX0pO2NvbnN0IGg9dS5tYXBwaW5nO3Uuc3RlcHMuZm9yRWFjaCgoZixwKT0+e3ZhciBtLGc7aWYoZiBpbnN0YW5jZW9mIFZlKXtjb25zdCB5PWguc2xpY2UocCkubWFwKGYuZnJvbSwtMSksaz1oLnNsaWNlKHApLm1hcChmLnRvKSxiPWguaW52ZXJ0KCkubWFwKHksLTEpLHc9aC5pbnZlcnQoKS5tYXAoaykseD15PjA/KG09dS5kb2Mubm9kZUF0KHktMSkpPT1udWxsP3ZvaWQgMDptLm1hcmtzLnNvbWUoQz0+Qy5lcShmLm1hcmspKTohMSx2PShnPXUuZG9jLm5vZGVBdChrKSk9PW51bGw/dm9pZCAwOmcubWFya3Muc29tZShDPT5DLmVxKGYubWFyaykpO3RoaXMuZWRpdG9yLmVtaXQoImRlbGV0ZSIse3R5cGU6Im1hcmsiLG1hcms6Zi5tYXJrLGZyb206Zi5mcm9tLHRvOmYudG8sZGVsZXRlZFJhbmdlOntmcm9tOmIsdG86d30sbmV3UmFuZ2U6e2Zyb206eSx0bzprfSxwYXJ0aWFsOiEhKHZ8fHgpLGVkaXRvcjp0aGlzLmVkaXRvcix0cmFuc2FjdGlvbjpuLGNvbWJpbmVkVHJhbnNmb3JtOnV9KX19KX07KHM9KHI9KHQ9dGhpcy5lZGl0b3Iub3B0aW9ucy5jb3JlRXh0ZW5zaW9uT3B0aW9ucyk9PW51bGw/dm9pZCAwOnQuZGVsZXRlKT09bnVsbD92b2lkIDA6ci5hc3luYyk9PW51bGx8fHM/c2V0VGltZW91dChpLDApOmkoKX19KSxnZD10ZS5jcmVhdGUoe25hbWU6ImRyb3AiLGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJ0aXB0YXBEcm9wIikscHJvcHM6e2hhbmRsZURyb3A6KG4sZSx0LHIpPT57dGhpcy5lZGl0b3IuZW1pdCgiZHJvcCIse2VkaXRvcjp0aGlzLmVkaXRvcixldmVudDplLHNsaWNlOnQsbW92ZWQ6cn0pfX19KV19fSkseWQ9dGUuY3JlYXRlKHtuYW1lOiJlZGl0YWJsZSIsYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBHKHtrZXk6bmV3IHEoImVkaXRhYmxlIikscHJvcHM6e2VkaXRhYmxlOigpPT50aGlzLmVkaXRvci5vcHRpb25zLmVkaXRhYmxlfX0pXX19KSxrZD1uZXcgcSgiZm9jdXNFdmVudHMiKSxiZD10ZS5jcmVhdGUoe25hbWU6ImZvY3VzRXZlbnRzIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdHtlZGl0b3I6bn09dGhpcztyZXR1cm5bbmV3IEcoe2tleTprZCxwcm9wczp7aGFuZGxlRE9NRXZlbnRzOntmb2N1czooZSx0KT0+e24uaXNGb2N1c2VkPSEwO2NvbnN0IHI9bi5zdGF0ZS50ci5zZXRNZXRhKCJmb2N1cyIse2V2ZW50OnR9KS5zZXRNZXRhKCJhZGRUb0hpc3RvcnkiLCExKTtyZXR1cm4gZS5kaXNwYXRjaChyKSwhMX0sYmx1cjooZSx0KT0+e24uaXNGb2N1c2VkPSExO2NvbnN0IHI9bi5zdGF0ZS50ci5zZXRNZXRhKCJibHVyIix7ZXZlbnQ6dH0pLnNldE1ldGEoImFkZFRvSGlzdG9yeSIsITEpO3JldHVybiBlLmRpc3BhdGNoKHIpLCExfX19fSldfX0pLHhkPXRlLmNyZWF0ZSh7bmFtZToia2V5bWFwIixhZGRLZXlib2FyZFNob3J0Y3V0cygpe2NvbnN0IG49KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7Y29tbWFuZHM6b30pPT5bKCk9Pm8udW5kb0lucHV0UnVsZSgpLCgpPT5vLmNvbW1hbmQoKHt0cjpsfSk9Pntjb25zdHtzZWxlY3Rpb246YSxkb2M6Y309bCx7ZW1wdHk6dSwkYW5jaG9yOmR9PWEse3BvczpoLHBhcmVudDpmfT1kLHA9ZC5wYXJlbnQuaXNUZXh0YmxvY2smJmg+MD9sLmRvYy5yZXNvbHZlKGgtMSk6ZCxtPXAucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcsZz1kLnBvcy1kLnBhcmVudE9mZnNldCx5PW0mJnAucGFyZW50LmNoaWxkQ291bnQ9PT0xP2c9PT1kLnBvczpJLmF0U3RhcnQoYykuZnJvbT09PWg7cmV0dXJuIXV8fCFmLnR5cGUuaXNUZXh0YmxvY2t8fGYudGV4dENvbnRlbnQubGVuZ3RofHwheXx8eSYmZC5wYXJlbnQudHlwZS5uYW1lPT09InBhcmFncmFwaCI/ITE6by5jbGVhck5vZGVzKCl9KSwoKT0+by5kZWxldGVTZWxlY3Rpb24oKSwoKT0+by5qb2luQmFja3dhcmQoKSwoKT0+by5zZWxlY3ROb2RlQmFja3dhcmQoKV0pLGU9KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7Y29tbWFuZHM6b30pPT5bKCk9Pm8uZGVsZXRlU2VsZWN0aW9uKCksKCk9Pm8uZGVsZXRlQ3VycmVudE5vZGUoKSwoKT0+by5qb2luRm9yd2FyZCgpLCgpPT5vLnNlbGVjdE5vZGVGb3J3YXJkKCldKSxyPXtFbnRlcjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuZmlyc3QoKHtjb21tYW5kczpvfSk9PlsoKT0+by5uZXdsaW5lSW5Db2RlKCksKCk9Pm8uY3JlYXRlUGFyYWdyYXBoTmVhcigpLCgpPT5vLmxpZnRFbXB0eUJsb2NrKCksKCk9Pm8uc3BsaXRCbG9jaygpXSksIk1vZC1FbnRlciI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLmV4aXRDb2RlKCksQmFja3NwYWNlOm4sIk1vZC1CYWNrc3BhY2UiOm4sIlNoaWZ0LUJhY2tzcGFjZSI6bixEZWxldGU6ZSwiTW9kLURlbGV0ZSI6ZSwiTW9kLWEiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5zZWxlY3RBbGwoKX0scz17Li4ucn0saT17Li4uciwiQ3RybC1oIjpuLCJBbHQtQmFja3NwYWNlIjpuLCJDdHJsLWQiOmUsIkN0cmwtQWx0LUJhY2tzcGFjZSI6ZSwiQWx0LURlbGV0ZSI6ZSwiQWx0LWQiOmUsIkN0cmwtYSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja1N0YXJ0KCksIkN0cmwtZSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNlbGVjdFRleHRibG9ja0VuZCgpfTtyZXR1cm4gR3IoKXx8UXUoKT9pOnN9LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjbGVhckRvY3VtZW50IiksYXBwZW5kVHJhbnNhY3Rpb246KG4sZSx0KT0+e2lmKG4uc29tZShtPT5tLmdldE1ldGEoImNvbXBvc2l0aW9uIikpKXJldHVybjtjb25zdCByPW4uc29tZShtPT5tLmRvY0NoYW5nZWQpJiYhZS5kb2MuZXEodC5kb2MpLHM9bi5zb21lKG09Pm0uZ2V0TWV0YSgicHJldmVudENsZWFyRG9jdW1lbnQiKSk7aWYoIXJ8fHMpcmV0dXJuO2NvbnN0e2VtcHR5OmksZnJvbTpvLHRvOmx9PWUuc2VsZWN0aW9uLGE9SS5hdFN0YXJ0KGUuZG9jKS5mcm9tLGM9SS5hdEVuZChlLmRvYykudG87aWYoaXx8IShvPT09YSYmbD09PWMpfHwhVnModC5kb2MpKXJldHVybjtjb25zdCBoPXQudHIsZj0kcyh7c3RhdGU6dCx0cmFuc2FjdGlvbjpofSkse2NvbW1hbmRzOnB9PW5ldyBCcyh7ZWRpdG9yOnRoaXMuZWRpdG9yLHN0YXRlOmZ9KTtpZihwLmNsZWFyTm9kZXMoKSwhIWguc3RlcHMubGVuZ3RoKXJldHVybiBofX0pXX19KSx3ZD10ZS5jcmVhdGUoe25hbWU6InBhc3RlIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bbmV3IEcoe2tleTpuZXcgcSgidGlwdGFwUGFzdGUiKSxwcm9wczp7aGFuZGxlUGFzdGU6KG4sZSx0KT0+e3RoaXMuZWRpdG9yLmVtaXQoInBhc3RlIix7ZWRpdG9yOnRoaXMuZWRpdG9yLGV2ZW50OmUsc2xpY2U6dH0pfX19KV19fSksdmQ9dGUuY3JlYXRlKHtuYW1lOiJ0YWJpbmRleCIsYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBHKHtrZXk6bmV3IHEoInRhYmluZGV4IikscHJvcHM6e2F0dHJpYnV0ZXM6KCk9PnRoaXMuZWRpdG9yLmlzRWRpdGFibGU/e3RhYmluZGV4OiIwIn06e319fSldfX0pLFNkPXRlLmNyZWF0ZSh7bmFtZToidGV4dERpcmVjdGlvbiIsYWRkT3B0aW9ucygpe3JldHVybntkaXJlY3Rpb246dm9pZCAwfX0sYWRkR2xvYmFsQXR0cmlidXRlcygpe2lmKCF0aGlzLm9wdGlvbnMuZGlyZWN0aW9uKXJldHVybltdO2NvbnN0e25vZGVFeHRlbnNpb25zOm59PWhuKHRoaXMuZXh0ZW5zaW9ucyk7cmV0dXJuW3t0eXBlczpuLmZpbHRlcihlPT5lLm5hbWUhPT0idGV4dCIpLm1hcChlPT5lLm5hbWUpLGF0dHJpYnV0ZXM6e2Rpcjp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHBhcnNlSFRNTDplPT57Y29uc3QgdD1lLmdldEF0dHJpYnV0ZSgiZGlyIik7cmV0dXJuIHQmJih0PT09Imx0ciJ8fHQ9PT0icnRsInx8dD09PSJhdXRvIik/dDp0aGlzLm9wdGlvbnMuZGlyZWN0aW9ufSxyZW5kZXJIVE1MOmU9PmUuZGlyP3tkaXI6ZS5kaXJ9Ont9fX19XX0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW25ldyBHKHtrZXk6bmV3IHEoInRleHREaXJlY3Rpb24iKSxwcm9wczp7YXR0cmlidXRlczooKT0+e2NvbnN0IG49dGhpcy5vcHRpb25zLmRpcmVjdGlvbjtyZXR1cm4gbj97ZGlyOm59Ont9fX19KV19fSksRnk9Y2xhc3MgQW57Y29uc3RydWN0b3IoZSx0LHI9ITEscz1udWxsKXt0aGlzLmN1cnJlbnROb2RlPW51bGwsdGhpcy5hY3R1YWxEZXB0aD1udWxsLHRoaXMuaXNCbG9jaz1yLHRoaXMucmVzb2x2ZWRQb3M9ZSx0aGlzLmVkaXRvcj10LHRoaXMuY3VycmVudE5vZGU9c31nZXQgbmFtZSgpe3JldHVybiB0aGlzLm5vZGUudHlwZS5uYW1lfWdldCBub2RlKCl7cmV0dXJuIHRoaXMuY3VycmVudE5vZGV8fHRoaXMucmVzb2x2ZWRQb3Mubm9kZSgpfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuZWRpdG9yLnZpZXcuZG9tQXRQb3ModGhpcy5wb3MpLm5vZGV9Z2V0IGRlcHRoKCl7dmFyIGU7cmV0dXJuKGU9dGhpcy5hY3R1YWxEZXB0aCkhPW51bGw/ZTp0aGlzLnJlc29sdmVkUG9zLmRlcHRofWdldCBwb3MoKXtyZXR1cm4gdGhpcy5yZXNvbHZlZFBvcy5wb3N9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5ub2RlLmNvbnRlbnR9c2V0IGNvbnRlbnQoZSl7bGV0IHQ9dGhpcy5mcm9tLHI9dGhpcy50bztpZih0aGlzLmlzQmxvY2spe2lmKHRoaXMuY29udGVudC5zaXplPT09MClyZXR1cm47dD10aGlzLmZyb20rMSxyPXRoaXMudG8tMX10aGlzLmVkaXRvci5jb21tYW5kcy5pbnNlcnRDb250ZW50QXQoe2Zyb206dCx0bzpyfSxlKX1nZXQgYXR0cmlidXRlcygpe3JldHVybiB0aGlzLm5vZGUuYXR0cnN9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMubm9kZS50ZXh0Q29udGVudH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLm5vZGUubm9kZVNpemV9Z2V0IGZyb20oKXtyZXR1cm4gdGhpcy5pc0Jsb2NrP3RoaXMucG9zOnRoaXMucmVzb2x2ZWRQb3Muc3RhcnQodGhpcy5yZXNvbHZlZFBvcy5kZXB0aCl9Z2V0IHJhbmdlKCl7cmV0dXJue2Zyb206dGhpcy5mcm9tLHRvOnRoaXMudG99fWdldCB0bygpe3JldHVybiB0aGlzLmlzQmxvY2s/dGhpcy5wb3MrdGhpcy5zaXplOnRoaXMucmVzb2x2ZWRQb3MuZW5kKHRoaXMucmVzb2x2ZWRQb3MuZGVwdGgpKyh0aGlzLm5vZGUuaXNUZXh0PzA6MSl9Z2V0IHBhcmVudCgpe2lmKHRoaXMuZGVwdGg9PT0wKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5yZXNvbHZlZFBvcy5zdGFydCh0aGlzLnJlc29sdmVkUG9zLmRlcHRoLTEpLHQ9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZShlKTtyZXR1cm4gbmV3IEFuKHQsdGhpcy5lZGl0b3IpfWdldCBiZWZvcmUoKXtsZXQgZT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRoaXMuZnJvbS0odGhpcy5pc0Jsb2NrPzE6MikpO3JldHVybiBlLmRlcHRoIT09dGhpcy5kZXB0aCYmKGU9dGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLmZyb20tMykpLG5ldyBBbihlLHRoaXMuZWRpdG9yKX1nZXQgYWZ0ZXIoKXtsZXQgZT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRoaXMudG8rKHRoaXMuaXNCbG9jaz8yOjEpKTtyZXR1cm4gZS5kZXB0aCE9PXRoaXMuZGVwdGgmJihlPXRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy50byszKSksbmV3IEFuKGUsdGhpcy5lZGl0b3IpfWdldCBjaGlsZHJlbigpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMubm9kZS5jb250ZW50LmZvckVhY2goKHQscik9Pntjb25zdCBzPXQuaXNCbG9jayYmIXQuaXNUZXh0YmxvY2ssaT10LmlzQXRvbSYmIXQuaXNUZXh0LG89dC5pc0lubGluZSxsPXRoaXMucG9zK3IrKGk/MDoxKTtpZihsPDB8fGw+dGhpcy5yZXNvbHZlZFBvcy5kb2Mubm9kZVNpemUtMilyZXR1cm47Y29uc3QgYT10aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKGwpO2lmKCFzJiYhbyYmYS5kZXB0aDw9dGhpcy5kZXB0aClyZXR1cm47Y29uc3QgYz1uZXcgQW4oYSx0aGlzLmVkaXRvcixzLHN8fG8/dDpudWxsKTtzJiYoYy5hY3R1YWxEZXB0aD10aGlzLmRlcHRoKzEpLGUucHVzaChjKX0pLGV9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZHJlblswXXx8bnVsbH1nZXQgbGFzdENoaWxkKCl7Y29uc3QgZT10aGlzLmNoaWxkcmVuO3JldHVybiBlW2UubGVuZ3RoLTFdfHxudWxsfWNsb3Nlc3QoZSx0PXt9KXtsZXQgcj1udWxsLHM9dGhpcy5wYXJlbnQ7Zm9yKDtzJiYhcjspe2lmKHMubm9kZS50eXBlLm5hbWU9PT1lKWlmKE9iamVjdC5rZXlzKHQpLmxlbmd0aD4wKXtjb25zdCBpPXMubm9kZS5hdHRycyxvPU9iamVjdC5rZXlzKHQpO2ZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCs9MSl7Y29uc3QgYT1vW2xdO2lmKGlbYV0hPT10W2FdKWJyZWFrfX1lbHNlIHI9cztzPXMucGFyZW50fXJldHVybiByfXF1ZXJ5U2VsZWN0b3IoZSx0PXt9KXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGUsdCwhMClbMF18fG51bGx9cXVlcnlTZWxlY3RvckFsbChlLHQ9e30scj0hMSl7bGV0IHM9W107aWYoIXRoaXMuY2hpbGRyZW58fHRoaXMuY2hpbGRyZW4ubGVuZ3RoPT09MClyZXR1cm4gcztjb25zdCBpPU9iamVjdC5rZXlzKHQpO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2gobz0+e3ImJnMubGVuZ3RoPjB8fChvLm5vZGUudHlwZS5uYW1lPT09ZSYmaS5ldmVyeShhPT50W2FdPT09by5ub2RlLmF0dHJzW2FdKSYmcy5wdXNoKG8pLCEociYmcy5sZW5ndGg+MCkmJihzPXMuY29uY2F0KG8ucXVlcnlTZWxlY3RvckFsbChlLHQscikpKSl9KSxzfXNldEF0dHJpYnV0ZShlKXtjb25zdHt0cjp0fT10aGlzLmVkaXRvci5zdGF0ZTt0LnNldE5vZGVNYXJrdXAodGhpcy5mcm9tLHZvaWQgMCx7Li4udGhpcy5ub2RlLmF0dHJzLC4uLmV9KSx0aGlzLmVkaXRvci52aWV3LmRpc3BhdGNoKHQpfX0sVnk9YC5Qcm9zZU1pcnJvciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouUHJvc2VNaXJyb3IgewogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlczsKICAtd2Via2l0LWZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7CiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9uZTsKICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICJsaWdhIiAwOyAvKiB0aGUgYWJvdmUgZG9lc24ndCBzZWVtIHRvIHdvcmsgaW4gRWRnZSAqLwp9CgouUHJvc2VNaXJyb3IgW2NvbnRlbnRlZGl0YWJsZT0iZmFsc2UiXSB7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKLlByb3NlTWlycm9yIFtjb250ZW50ZWRpdGFibGU9ImZhbHNlIl0gW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdIHsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Cn0KCi5Qcm9zZU1pcnJvciBwcmUgewogIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKfQoKaW1nLlByb3NlTWlycm9yLXNlcGFyYXRvciB7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDAgIWltcG9ydGFudDsKICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLlByb3NlTWlycm9yLWdhcGN1cnNvciB7CiAgZGlzcGxheTogbm9uZTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbWFyZ2luOiAwOwp9CgouUHJvc2VNaXJyb3ItZ2FwY3Vyc29yOmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAtMnB4OwogIHdpZHRoOiAyMHB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKICBhbmltYXRpb246IFByb3NlTWlycm9yLWN1cnNvci1ibGluayAxLjFzIHN0ZXBzKDIsIHN0YXJ0KSBpbmZpbml0ZTsKfQoKQGtleWZyYW1lcyBQcm9zZU1pcnJvci1jdXJzb3ItYmxpbmsgewogIHRvIHsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICB9Cn0KCi5Qcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uICo6OnNlbGVjdGlvbiB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5Qcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uICo6Oi1tb3otc2VsZWN0aW9uIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb24gKiB7CiAgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouUHJvc2VNaXJyb3ItZm9jdXNlZCAuUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIHsKICBkaXNwbGF5OiBibG9jazsKfWA7ZnVuY3Rpb24gVXkobixlLHQpe2NvbnN0IHI9ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3R5bGVbZGF0YS10aXB0YXAtc3R5bGVdIik7aWYociE9PW51bGwpcmV0dXJuIHI7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBlJiZzLnNldEF0dHJpYnV0ZSgibm9uY2UiLGUpLHMuc2V0QXR0cmlidXRlKCJkYXRhLXRpcHRhcC1zdHlsZSIsIiIpLHMuaW5uZXJIVE1MPW4sZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChzKSxzfXZhciBqeT1jbGFzcyBleHRlbmRzIE55e2NvbnN0cnVjdG9yKGU9e30pe3N1cGVyKCksdGhpcy5jc3M9bnVsbCx0aGlzLmNsYXNzTmFtZT0idGlwdGFwIix0aGlzLmVkaXRvclZpZXc9bnVsbCx0aGlzLmlzRm9jdXNlZD0hMSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5leHRlbnNpb25TdG9yYWdlPXt9LHRoaXMuaW5zdGFuY2VJZD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLDkpLHRoaXMub3B0aW9ucz17ZWxlbWVudDp0eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsY29udGVudDoiIixpbmplY3RDU1M6ITAsaW5qZWN0Tm9uY2U6dm9pZCAwLGV4dGVuc2lvbnM6W10sYXV0b2ZvY3VzOiExLGVkaXRhYmxlOiEwLHRleHREaXJlY3Rpb246dm9pZCAwLGVkaXRvclByb3BzOnt9LHBhcnNlT3B0aW9uczp7fSxjb3JlRXh0ZW5zaW9uT3B0aW9uczp7fSxlbmFibGVJbnB1dFJ1bGVzOiEwLGVuYWJsZVBhc3RlUnVsZXM6ITAsZW5hYmxlQ29yZUV4dGVuc2lvbnM6ITAsZW5hYmxlQ29udGVudENoZWNrOiExLGVtaXRDb250ZW50RXJyb3I6ITEsb25CZWZvcmVDcmVhdGU6KCk9Pm51bGwsb25DcmVhdGU6KCk9Pm51bGwsb25Nb3VudDooKT0+bnVsbCxvblVubW91bnQ6KCk9Pm51bGwsb25VcGRhdGU6KCk9Pm51bGwsb25TZWxlY3Rpb25VcGRhdGU6KCk9Pm51bGwsb25UcmFuc2FjdGlvbjooKT0+bnVsbCxvbkZvY3VzOigpPT5udWxsLG9uQmx1cjooKT0+bnVsbCxvbkRlc3Ryb3k6KCk9Pm51bGwsb25Db250ZW50RXJyb3I6KHtlcnJvcjpzfSk9Pnt0aHJvdyBzfSxvblBhc3RlOigpPT5udWxsLG9uRHJvcDooKT0+bnVsbCxvbkRlbGV0ZTooKT0+bnVsbCxlbmFibGVFeHRlbnNpb25EaXNwYXRjaFRyYW5zYWN0aW9uOiEwfSx0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb249ITEsdGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uPW51bGwsdGhpcy51dGlscz17Z2V0VXBkYXRlZFBvc2l0aW9uOm95LGNyZWF0ZU1hcHBhYmxlUG9zaXRpb246bHl9LHRoaXMuc2V0T3B0aW9ucyhlKSx0aGlzLmNyZWF0ZUV4dGVuc2lvbk1hbmFnZXIoKSx0aGlzLmNyZWF0ZUNvbW1hbmRNYW5hZ2VyKCksdGhpcy5jcmVhdGVTY2hlbWEoKSx0aGlzLm9uKCJiZWZvcmVDcmVhdGUiLHRoaXMub3B0aW9ucy5vbkJlZm9yZUNyZWF0ZSksdGhpcy5lbWl0KCJiZWZvcmVDcmVhdGUiLHtlZGl0b3I6dGhpc30pLHRoaXMub24oIm1vdW50Iix0aGlzLm9wdGlvbnMub25Nb3VudCksdGhpcy5vbigidW5tb3VudCIsdGhpcy5vcHRpb25zLm9uVW5tb3VudCksdGhpcy5vbigiY29udGVudEVycm9yIix0aGlzLm9wdGlvbnMub25Db250ZW50RXJyb3IpLHRoaXMub24oImNyZWF0ZSIsdGhpcy5vcHRpb25zLm9uQ3JlYXRlKSx0aGlzLm9uKCJ1cGRhdGUiLHRoaXMub3B0aW9ucy5vblVwZGF0ZSksdGhpcy5vbigic2VsZWN0aW9uVXBkYXRlIix0aGlzLm9wdGlvbnMub25TZWxlY3Rpb25VcGRhdGUpLHRoaXMub24oInRyYW5zYWN0aW9uIix0aGlzLm9wdGlvbnMub25UcmFuc2FjdGlvbiksdGhpcy5vbigiZm9jdXMiLHRoaXMub3B0aW9ucy5vbkZvY3VzKSx0aGlzLm9uKCJibHVyIix0aGlzLm9wdGlvbnMub25CbHVyKSx0aGlzLm9uKCJkZXN0cm95Iix0aGlzLm9wdGlvbnMub25EZXN0cm95KSx0aGlzLm9uKCJkcm9wIiwoe2V2ZW50OnMsc2xpY2U6aSxtb3ZlZDpvfSk9PnRoaXMub3B0aW9ucy5vbkRyb3AocyxpLG8pKSx0aGlzLm9uKCJwYXN0ZSIsKHtldmVudDpzLHNsaWNlOml9KT0+dGhpcy5vcHRpb25zLm9uUGFzdGUocyxpKSksdGhpcy5vbigiZGVsZXRlIix0aGlzLm9wdGlvbnMub25EZWxldGUpO2NvbnN0IHQ9dGhpcy5jcmVhdGVEb2MoKSxyPUp1KHQsdGhpcy5vcHRpb25zLmF1dG9mb2N1cyk7dGhpcy5lZGl0b3JTdGF0ZT1ybi5jcmVhdGUoe2RvYzp0LHNjaGVtYTp0aGlzLnNjaGVtYSxzZWxlY3Rpb246cnx8dm9pZCAwfSksdGhpcy5vcHRpb25zLmVsZW1lbnQmJnRoaXMubW91bnQodGhpcy5vcHRpb25zLmVsZW1lbnQpfW1vdW50KGUpe2lmKHR5cGVvZiBkb2N1bWVudD4idSIpdGhyb3cgbmV3IEVycm9yKCJbdGlwdGFwIGVycm9yXTogVGhlIGVkaXRvciBjYW5ub3QgYmUgbW91bnRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vICdkb2N1bWVudCcgZGVmaW5lZCBpbiB0aGlzIGVudmlyb25tZW50LiIpO3RoaXMuY3JlYXRlVmlldyhlKSx0aGlzLmVtaXQoIm1vdW50Iix7ZWRpdG9yOnRoaXN9KSx0aGlzLmNzcyYmIWRvY3VtZW50LmhlYWQuY29udGFpbnModGhpcy5jc3MpJiZkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuY3NzKSx3aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMuaXNEZXN0cm95ZWR8fCh0aGlzLm9wdGlvbnMuYXV0b2ZvY3VzIT09ITEmJnRoaXMub3B0aW9ucy5hdXRvZm9jdXMhPT1udWxsJiZ0aGlzLmNvbW1hbmRzLmZvY3VzKHRoaXMub3B0aW9ucy5hdXRvZm9jdXMpLHRoaXMuZW1pdCgiY3JlYXRlIix7ZWRpdG9yOnRoaXN9KSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITApfSwwKX11bm1vdW50KCl7aWYodGhpcy5lZGl0b3JWaWV3KXtjb25zdCBlPXRoaXMuZWRpdG9yVmlldy5kb207ZT8uZWRpdG9yJiZkZWxldGUgZS5lZGl0b3IsdGhpcy5lZGl0b3JWaWV3LmRlc3Ryb3koKX1pZih0aGlzLmVkaXRvclZpZXc9bnVsbCx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5jc3MmJiFkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAuJHt0aGlzLmNsYXNzTmFtZX1gKS5sZW5ndGgpdHJ5e3R5cGVvZiB0aGlzLmNzcy5yZW1vdmU9PSJmdW5jdGlvbiI/dGhpcy5jc3MucmVtb3ZlKCk6dGhpcy5jc3MucGFyZW50Tm9kZSYmdGhpcy5jc3MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNzcyl9Y2F0Y2h7fXRoaXMuY3NzPW51bGwsdGhpcy5lbWl0KCJ1bm1vdW50Iix7ZWRpdG9yOnRoaXN9KX1nZXQgc3RvcmFnZSgpe3JldHVybiB0aGlzLmV4dGVuc2lvblN0b3JhZ2V9Z2V0IGNvbW1hbmRzKCl7cmV0dXJuIHRoaXMuY29tbWFuZE1hbmFnZXIuY29tbWFuZHN9Y2hhaW4oKXtyZXR1cm4gdGhpcy5jb21tYW5kTWFuYWdlci5jaGFpbigpfWNhbigpe3JldHVybiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNhbigpfWluamVjdENTUygpe3RoaXMub3B0aW9ucy5pbmplY3RDU1MmJnR5cGVvZiBkb2N1bWVudDwidSImJih0aGlzLmNzcz1VeShWeSx0aGlzLm9wdGlvbnMuaW5qZWN0Tm9uY2UpKX1zZXRPcHRpb25zKGU9e30pe3RoaXMub3B0aW9ucz17Li4udGhpcy5vcHRpb25zLC4uLmV9LCEoIXRoaXMuZWRpdG9yVmlld3x8IXRoaXMuc3RhdGV8fHRoaXMuaXNEZXN0cm95ZWQpJiYodGhpcy5vcHRpb25zLmVkaXRvclByb3BzJiZ0aGlzLnZpZXcuc2V0UHJvcHModGhpcy5vcHRpb25zLmVkaXRvclByb3BzKSx0aGlzLnZpZXcudXBkYXRlU3RhdGUodGhpcy5zdGF0ZSkpfXNldEVkaXRhYmxlKGUsdD0hMCl7dGhpcy5zZXRPcHRpb25zKHtlZGl0YWJsZTplfSksdCYmdGhpcy5lbWl0KCJ1cGRhdGUiLHtlZGl0b3I6dGhpcyx0cmFuc2FjdGlvbjp0aGlzLnN0YXRlLnRyLGFwcGVuZGVkVHJhbnNhY3Rpb25zOltdfSl9Z2V0IGlzRWRpdGFibGUoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmVkaXRhYmxlJiZ0aGlzLnZpZXcmJnRoaXMudmlldy5lZGl0YWJsZX1nZXQgdmlldygpe3JldHVybiB0aGlzLmVkaXRvclZpZXc/dGhpcy5lZGl0b3JWaWV3Om5ldyBQcm94eSh7c3RhdGU6dGhpcy5lZGl0b3JTdGF0ZSx1cGRhdGVTdGF0ZTplPT57dGhpcy5lZGl0b3JTdGF0ZT1lfSxkaXNwYXRjaDplPT57dGhpcy5kaXNwYXRjaFRyYW5zYWN0aW9uKGUpfSxjb21wb3Npbmc6ITEsZHJhZ2dpbmc6bnVsbCxlZGl0YWJsZTohMCxpc0Rlc3Ryb3llZDohMX0se2dldDooZSx0KT0+e2lmKHRoaXMuZWRpdG9yVmlldylyZXR1cm4gdGhpcy5lZGl0b3JWaWV3W3RdO2lmKHQ9PT0ic3RhdGUiKXJldHVybiB0aGlzLmVkaXRvclN0YXRlO2lmKHQgaW4gZSlyZXR1cm4gUmVmbGVjdC5nZXQoZSx0KTt0aHJvdyBuZXcgRXJyb3IoYFt0aXB0YXAgZXJyb3JdOiBUaGUgZWRpdG9yIHZpZXcgaXMgbm90IGF2YWlsYWJsZS4gQ2Fubm90IGFjY2VzcyB2aWV3Wycke3R9J10uIFRoZSBlZGl0b3IgbWF5IG5vdCBiZSBtb3VudGVkIHlldC5gKX19KX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5lZGl0b3JWaWV3JiYodGhpcy5lZGl0b3JTdGF0ZT10aGlzLnZpZXcuc3RhdGUpLHRoaXMuZWRpdG9yU3RhdGV9cmVnaXN0ZXJQbHVnaW4oZSx0KXtjb25zdCByPVp1KHQpP3QoZSxbLi4udGhpcy5zdGF0ZS5wbHVnaW5zXSk6Wy4uLnRoaXMuc3RhdGUucGx1Z2lucyxlXSxzPXRoaXMuc3RhdGUucmVjb25maWd1cmUoe3BsdWdpbnM6cn0pO3JldHVybiB0aGlzLnZpZXcudXBkYXRlU3RhdGUocyksc311bnJlZ2lzdGVyUGx1Z2luKGUpe2lmKHRoaXMuaXNEZXN0cm95ZWQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5zdGF0ZS5wbHVnaW5zO2xldCByPXQ7aWYoW10uY29uY2F0KGUpLmZvckVhY2goaT0+e2NvbnN0IG89dHlwZW9mIGk9PSJzdHJpbmciP2Ake2l9JGA6aS5rZXk7cj1yLmZpbHRlcihsPT4hbC5rZXkuc3RhcnRzV2l0aChvKSl9KSx0Lmxlbmd0aD09PXIubGVuZ3RoKXJldHVybjtjb25zdCBzPXRoaXMuc3RhdGUucmVjb25maWd1cmUoe3BsdWdpbnM6cn0pO3JldHVybiB0aGlzLnZpZXcudXBkYXRlU3RhdGUocyksc31jcmVhdGVFeHRlbnNpb25NYW5hZ2VyKCl7dmFyIGUsdDtjb25zdCBzPVsuLi50aGlzLm9wdGlvbnMuZW5hYmxlQ29yZUV4dGVuc2lvbnM/W3lkLGZkLmNvbmZpZ3VyZSh7YmxvY2tTZXBhcmF0b3I6KHQ9KGU9dGhpcy5vcHRpb25zLmNvcmVFeHRlbnNpb25PcHRpb25zKT09bnVsbD92b2lkIDA6ZS5jbGlwYm9hcmRUZXh0U2VyaWFsaXplcik9PW51bGw/dm9pZCAwOnQuYmxvY2tTZXBhcmF0b3J9KSxwZCxiZCx4ZCx2ZCxnZCx3ZCxtZCxTZC5jb25maWd1cmUoe2RpcmVjdGlvbjp0aGlzLm9wdGlvbnMudGV4dERpcmVjdGlvbn0pXS5maWx0ZXIoaT0+dHlwZW9mIHRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9ucz09Im9iamVjdCI/dGhpcy5vcHRpb25zLmVuYWJsZUNvcmVFeHRlbnNpb25zW2kubmFtZV0hPT0hMTohMCk6W10sLi4udGhpcy5vcHRpb25zLmV4dGVuc2lvbnNdLmZpbHRlcihpPT5bImV4dGVuc2lvbiIsIm5vZGUiLCJtYXJrIl0uaW5jbHVkZXMoaT8udHlwZSkpO3RoaXMuZXh0ZW5zaW9uTWFuYWdlcj1uZXcganMocyx0aGlzKX1jcmVhdGVDb21tYW5kTWFuYWdlcigpe3RoaXMuY29tbWFuZE1hbmFnZXI9bmV3IEJzKHtlZGl0b3I6dGhpc30pfWNyZWF0ZVNjaGVtYSgpe3RoaXMuc2NoZW1hPXRoaXMuZXh0ZW5zaW9uTWFuYWdlci5zY2hlbWF9Y3JlYXRlRG9jKCl7bGV0IGU7dHJ5e2U9amkodGhpcy5vcHRpb25zLmNvbnRlbnQsdGhpcy5zY2hlbWEsdGhpcy5vcHRpb25zLnBhcnNlT3B0aW9ucyx7ZXJyb3JPbkludmFsaWRDb250ZW50OnRoaXMub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2t9KX1jYXRjaCh0KXtpZighKHQgaW5zdGFuY2VvZiBFcnJvcil8fCFbIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudCIsIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudCJdLmluY2x1ZGVzKHQubWVzc2FnZSkpdGhyb3cgdDt0aGlzLmVtaXQoImNvbnRlbnRFcnJvciIse2VkaXRvcjp0aGlzLGVycm9yOnQsZGlzYWJsZUNvbGxhYm9yYXRpb246KCk9PnsiY29sbGFib3JhdGlvbiJpbiB0aGlzLnN0b3JhZ2UmJnR5cGVvZiB0aGlzLnN0b3JhZ2UuY29sbGFib3JhdGlvbj09Im9iamVjdCImJnRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uJiYodGhpcy5zdG9yYWdlLmNvbGxhYm9yYXRpb24uaXNEaXNhYmxlZD0hMCksdGhpcy5vcHRpb25zLmV4dGVuc2lvbnM9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuZmlsdGVyKHI9PnIubmFtZSE9PSJjb2xsYWJvcmF0aW9uIiksdGhpcy5jcmVhdGVFeHRlbnNpb25NYW5hZ2VyKCl9fSksZT1qaSh0aGlzLm9wdGlvbnMuY29udGVudCx0aGlzLnNjaGVtYSx0aGlzLm9wdGlvbnMucGFyc2VPcHRpb25zLHtlcnJvck9uSW52YWxpZENvbnRlbnQ6ITF9KX1yZXR1cm4gZX1jcmVhdGVWaWV3KGUpe2NvbnN0e2VkaXRvclByb3BzOnQsZW5hYmxlRXh0ZW5zaW9uRGlzcGF0Y2hUcmFuc2FjdGlvbjpyfT10aGlzLm9wdGlvbnMscz10LmRpc3BhdGNoVHJhbnNhY3Rpb258fHRoaXMuZGlzcGF0Y2hUcmFuc2FjdGlvbi5iaW5kKHRoaXMpLGk9cj90aGlzLmV4dGVuc2lvbk1hbmFnZXIuZGlzcGF0Y2hUcmFuc2FjdGlvbihzKTpzLG89dC50cmFuc2Zvcm1QYXN0ZWRIVE1MLGw9dGhpcy5leHRlbnNpb25NYW5hZ2VyLnRyYW5zZm9ybVBhc3RlZEhUTUwobyk7dGhpcy5lZGl0b3JWaWV3PW5ldyBXdShlLHsuLi50LGF0dHJpYnV0ZXM6e3JvbGU6InRleHRib3giLC4uLnQ/LmF0dHJpYnV0ZXN9LGRpc3BhdGNoVHJhbnNhY3Rpb246aSx0cmFuc2Zvcm1QYXN0ZWRIVE1MOmwsc3RhdGU6dGhpcy5lZGl0b3JTdGF0ZSxtYXJrVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm1hcmtWaWV3cyxub2RlVmlld3M6dGhpcy5leHRlbnNpb25NYW5hZ2VyLm5vZGVWaWV3c30pO2NvbnN0IGE9dGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7cGx1Z2luczp0aGlzLmV4dGVuc2lvbk1hbmFnZXIucGx1Z2luc30pO3RoaXMudmlldy51cGRhdGVTdGF0ZShhKSx0aGlzLnByZXBlbmRDbGFzcygpLHRoaXMuaW5qZWN0Q1NTKCk7Y29uc3QgYz10aGlzLnZpZXcuZG9tO2MuZWRpdG9yPXRoaXN9Y3JlYXRlTm9kZVZpZXdzKCl7dGhpcy52aWV3LmlzRGVzdHJveWVkfHx0aGlzLnZpZXcuc2V0UHJvcHMoe21hcmtWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubWFya1ZpZXdzLG5vZGVWaWV3czp0aGlzLmV4dGVuc2lvbk1hbmFnZXIubm9kZVZpZXdzfSl9cHJlcGVuZENsYXNzKCl7dGhpcy52aWV3LmRvbS5jbGFzc05hbWU9YCR7dGhpcy5jbGFzc05hbWV9ICR7dGhpcy52aWV3LmRvbS5jbGFzc05hbWV9YH1jYXB0dXJlVHJhbnNhY3Rpb24oZSl7dGhpcy5pc0NhcHR1cmluZ1RyYW5zYWN0aW9uPSEwLGUoKSx0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb249ITE7Y29uc3QgdD10aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb247cmV0dXJuIHRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbj1udWxsLHR9ZGlzcGF0Y2hUcmFuc2FjdGlvbihlKXtpZih0aGlzLnZpZXcuaXNEZXN0cm95ZWQpcmV0dXJuO2lmKHRoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbil7aWYoIXRoaXMuY2FwdHVyZWRUcmFuc2FjdGlvbil7dGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uPWU7cmV0dXJufWUuc3RlcHMuZm9yRWFjaCh1PT57dmFyIGQ7cmV0dXJuKGQ9dGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uKT09bnVsbD92b2lkIDA6ZC5zdGVwKHUpfSk7cmV0dXJufWNvbnN0e3N0YXRlOnQsdHJhbnNhY3Rpb25zOnJ9PXRoaXMuc3RhdGUuYXBwbHlUcmFuc2FjdGlvbihlKSxzPSF0aGlzLnN0YXRlLnNlbGVjdGlvbi5lcSh0LnNlbGVjdGlvbiksaT1yLmluY2x1ZGVzKGUpLG89dGhpcy5zdGF0ZTtpZih0aGlzLmVtaXQoImJlZm9yZVRyYW5zYWN0aW9uIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZSxuZXh0U3RhdGU6dH0pLCFpKXJldHVybjt0aGlzLnZpZXcudXBkYXRlU3RhdGUodCksdGhpcy5lbWl0KCJ0cmFuc2FjdGlvbiIse2VkaXRvcjp0aGlzLHRyYW5zYWN0aW9uOmUsYXBwZW5kZWRUcmFuc2FjdGlvbnM6ci5zbGljZSgxKX0pLHMmJnRoaXMuZW1pdCgic2VsZWN0aW9uVXBkYXRlIix7ZWRpdG9yOnRoaXMsdHJhbnNhY3Rpb246ZX0pO2NvbnN0IGw9ci5maW5kTGFzdCh1PT51LmdldE1ldGEoImZvY3VzIil8fHUuZ2V0TWV0YSgiYmx1ciIpKSxhPWw/LmdldE1ldGEoImZvY3VzIiksYz1sPy5nZXRNZXRhKCJibHVyIik7YSYmdGhpcy5lbWl0KCJmb2N1cyIse2VkaXRvcjp0aGlzLGV2ZW50OmEuZXZlbnQsdHJhbnNhY3Rpb246bH0pLGMmJnRoaXMuZW1pdCgiYmx1ciIse2VkaXRvcjp0aGlzLGV2ZW50OmMuZXZlbnQsdHJhbnNhY3Rpb246bH0pLCEoZS5nZXRNZXRhKCJwcmV2ZW50VXBkYXRlIil8fCFyLnNvbWUodT0+dS5kb2NDaGFuZ2VkKXx8by5kb2MuZXEodC5kb2MpKSYmdGhpcy5lbWl0KCJ1cGRhdGUiLHtlZGl0b3I6dGhpcyx0cmFuc2FjdGlvbjplLGFwcGVuZGVkVHJhbnNhY3Rpb25zOnIuc2xpY2UoMSl9KX1nZXRBdHRyaWJ1dGVzKGUpe3JldHVybiBzZCh0aGlzLnN0YXRlLGUpfWlzQWN0aXZlKGUsdCl7Y29uc3Qgcj10eXBlb2YgZT09InN0cmluZyI/ZTpudWxsLHM9dHlwZW9mIGU9PSJzdHJpbmciP3Q6ZTtyZXR1cm4gcnkodGhpcy5zdGF0ZSxyLHMpfWdldEpTT04oKXtyZXR1cm4gdGhpcy5zdGF0ZS5kb2MudG9KU09OKCl9Z2V0SFRNTCgpe3JldHVybiBQbyh0aGlzLnN0YXRlLmRvYy5jb250ZW50LHRoaXMuc2NoZW1hKX1nZXRUZXh0KGUpe2NvbnN0e2Jsb2NrU2VwYXJhdG9yOnQ9YAoKYCx0ZXh0U2VyaWFsaXplcnM6cj17fX09ZXx8e307cmV0dXJuIHJkKHRoaXMuc3RhdGUuZG9jLHtibG9ja1NlcGFyYXRvcjp0LHRleHRTZXJpYWxpemVyczp7Li4uJG8odGhpcy5zY2hlbWEpLC4uLnJ9fSl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gVnModGhpcy5zdGF0ZS5kb2MpfWRlc3Ryb3koKXt0aGlzLmVtaXQoImRlc3Ryb3kiKSx0aGlzLnVubW91bnQoKSx0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpfWdldCBpc0Rlc3Ryb3llZCgpe3ZhciBlLHQ7cmV0dXJuKHQ9KGU9dGhpcy5lZGl0b3JWaWV3KT09bnVsbD92b2lkIDA6ZS5pc0Rlc3Ryb3llZCkhPW51bGw/dDohMH0kbm9kZShlLHQpe3ZhciByO3JldHVybigocj10aGlzLiRkb2MpPT1udWxsP3ZvaWQgMDpyLnF1ZXJ5U2VsZWN0b3IoZSx0KSl8fG51bGx9JG5vZGVzKGUsdCl7dmFyIHI7cmV0dXJuKChyPXRoaXMuJGRvYyk9PW51bGw/dm9pZCAwOnIucXVlcnlTZWxlY3RvckFsbChlLHQpKXx8bnVsbH0kcG9zKGUpe2NvbnN0IHQ9dGhpcy5zdGF0ZS5kb2MucmVzb2x2ZShlKTtyZXR1cm4gbmV3IEZ5KHQsdGhpcyl9Z2V0ICRkb2MoKXtyZXR1cm4gdGhpcy4kcG9zKDApfX07ZnVuY3Rpb24gZm4obil7cmV0dXJuIG5ldyBVcyh7ZmluZDpuLmZpbmQsaGFuZGxlcjooe3N0YXRlOmUscmFuZ2U6dCxtYXRjaDpyfSk9Pntjb25zdCBzPVUobi5nZXRBdHRyaWJ1dGVzLHZvaWQgMCxyKTtpZihzPT09ITF8fHM9PT1udWxsKXJldHVybiBudWxsO2NvbnN0e3RyOml9PWUsbz1yW3IubGVuZ3RoLTFdLGw9clswXTtpZihvKXtjb25zdCBhPWwuc2VhcmNoKC9cUy8pLGM9dC5mcm9tK2wuaW5kZXhPZihvKSx1PWMrby5sZW5ndGg7aWYoQm8odC5mcm9tLHQudG8sZS5kb2MpLmZpbHRlcihmPT5mLm1hcmsudHlwZS5leGNsdWRlZC5maW5kKG09Pm09PT1uLnR5cGUmJm0hPT1mLm1hcmsudHlwZSkpLmZpbHRlcihmPT5mLnRvPmMpLmxlbmd0aClyZXR1cm4gbnVsbDt1PHQudG8mJmkuZGVsZXRlKHUsdC50byksYz50LmZyb20mJmkuZGVsZXRlKHQuZnJvbSthLGMpO2NvbnN0IGg9dC5mcm9tK2Erby5sZW5ndGg7aS5hZGRNYXJrKHQuZnJvbSthLGgsbi50eXBlLmNyZWF0ZShzfHx7fSkpLGkucmVtb3ZlU3RvcmVkTWFyayhuLnR5cGUpfX0sdW5kb2FibGU6bi51bmRvYWJsZX0pfWZ1bmN0aW9uIENkKG4pe3JldHVybiBuZXcgVXMoe2ZpbmQ6bi5maW5kLGhhbmRsZXI6KHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6cn0pPT57Y29uc3Qgcz1VKG4uZ2V0QXR0cmlidXRlcyx2b2lkIDAscil8fHt9LHt0cjppfT1lLG89dC5mcm9tO2xldCBsPXQudG87Y29uc3QgYT1uLnR5cGUuY3JlYXRlKHMpO2lmKHJbMV0pe2NvbnN0IGM9clswXS5sYXN0SW5kZXhPZihyWzFdKTtsZXQgdT1vK2M7dT5sP3U9bDpsPXUrclsxXS5sZW5ndGg7Y29uc3QgZD1yWzBdW3JbMF0ubGVuZ3RoLTFdO2kuaW5zZXJ0VGV4dChkLG8rclswXS5sZW5ndGgtMSksaS5yZXBsYWNlV2l0aCh1LGwsYSl9ZWxzZSBpZihyWzBdKXtjb25zdCBjPW4udHlwZS5pc0lubGluZT9vOm8tMTtpLmluc2VydChjLG4udHlwZS5jcmVhdGUocykpLmRlbGV0ZShpLm1hcHBpbmcubWFwKG8pLGkubWFwcGluZy5tYXAobCkpfWkuc2Nyb2xsSW50b1ZpZXcoKX0sdW5kb2FibGU6bi51bmRvYWJsZX0pfWZ1bmN0aW9uIFdpKG4pe3JldHVybiBuZXcgVXMoe2ZpbmQ6bi5maW5kLGhhbmRsZXI6KHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6cn0pPT57Y29uc3Qgcz1lLmRvYy5yZXNvbHZlKHQuZnJvbSksaT1VKG4uZ2V0QXR0cmlidXRlcyx2b2lkIDAscil8fHt9O2lmKCFzLm5vZGUoLTEpLmNhblJlcGxhY2VXaXRoKHMuaW5kZXgoLTEpLHMuaW5kZXhBZnRlcigtMSksbi50eXBlKSlyZXR1cm4gbnVsbDtlLnRyLmRlbGV0ZSh0LmZyb20sdC50bykuc2V0QmxvY2tUeXBlKHQuZnJvbSx0LmZyb20sbi50eXBlLGkpfSx1bmRvYWJsZTpuLnVuZG9hYmxlfSl9ZnVuY3Rpb24gcG4obil7cmV0dXJuIG5ldyBVcyh7ZmluZDpuLmZpbmQsaGFuZGxlcjooe3N0YXRlOmUscmFuZ2U6dCxtYXRjaDpyLGNoYWluOnN9KT0+e2NvbnN0IGk9VShuLmdldEF0dHJpYnV0ZXMsdm9pZCAwLHIpfHx7fSxvPWUudHIuZGVsZXRlKHQuZnJvbSx0LnRvKSxhPW8uZG9jLnJlc29sdmUodC5mcm9tKS5ibG9ja1JhbmdlKCksYz1hJiZwbyhhLG4udHlwZSxpKTtpZighYylyZXR1cm4gbnVsbDtpZihvLndyYXAoYSxjKSxuLmtlZXBNYXJrcyYmbi5lZGl0b3Ipe2NvbnN0e3NlbGVjdGlvbjpkLHN0b3JlZE1hcmtzOmh9PWUse3NwbGl0dGFibGVNYXJrczpmfT1uLmVkaXRvci5leHRlbnNpb25NYW5hZ2VyLHA9aHx8ZC4kdG8ucGFyZW50T2Zmc2V0JiZkLiRmcm9tLm1hcmtzKCk7aWYocCl7Y29uc3QgbT1wLmZpbHRlcihnPT5mLmluY2x1ZGVzKGcudHlwZS5uYW1lKSk7by5lbnN1cmVNYXJrcyhtKX19aWYobi5rZWVwQXR0cmlidXRlcyl7Y29uc3QgZD1uLnR5cGUubmFtZT09PSJidWxsZXRMaXN0Inx8bi50eXBlLm5hbWU9PT0ib3JkZXJlZExpc3QiPyJsaXN0SXRlbSI6InRhc2tMaXN0IjtzKCkudXBkYXRlQXR0cmlidXRlcyhkLGkpLnJ1bigpfWNvbnN0IHU9by5kb2MucmVzb2x2ZSh0LmZyb20tMSkubm9kZUJlZm9yZTt1JiZ1LnR5cGU9PT1uLnR5cGUmJkF0KG8uZG9jLHQuZnJvbS0xKSYmKCFuLmpvaW5QcmVkaWNhdGV8fG4uam9pblByZWRpY2F0ZShyLHUpKSYmby5qb2luKHQuZnJvbS0xKX0sdW5kb2FibGU6bi51bmRvYWJsZX0pfXZhciBxeT1uPT4idG91Y2hlcyJpbiBuLFd5PWNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuZGlyZWN0aW9ucz1bImJvdHRvbS1sZWZ0IiwiYm90dG9tLXJpZ2h0IiwidG9wLWxlZnQiLCJ0b3AtcmlnaHQiXSx0aGlzLm1pblNpemU9e2hlaWdodDo4LHdpZHRoOjh9LHRoaXMucHJlc2VydmVBc3BlY3RSYXRpbz0hMSx0aGlzLmNsYXNzTmFtZXM9e2NvbnRhaW5lcjoiIix3cmFwcGVyOiIiLGhhbmRsZToiIixyZXNpemluZzoiIn0sdGhpcy5pbml0aWFsV2lkdGg9MCx0aGlzLmluaXRpYWxIZWlnaHQ9MCx0aGlzLmFzcGVjdFJhdGlvPTEsdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5zdGFydFg9MCx0aGlzLnN0YXJ0WT0wLHRoaXMuc3RhcnRXaWR0aD0wLHRoaXMuc3RhcnRIZWlnaHQ9MCx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkPSExLHRoaXMubGFzdEVkaXRhYmxlU3RhdGU9dm9pZCAwLHRoaXMuaGFuZGxlTWFwPW5ldyBNYXAsdGhpcy5oYW5kbGVNb3VzZU1vdmU9bD0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgYT1sLmNsaWVudFgtdGhpcy5zdGFydFgsYz1sLmNsaWVudFktdGhpcy5zdGFydFk7dGhpcy5oYW5kbGVSZXNpemUoYSxjKX0sdGhpcy5oYW5kbGVUb3VjaE1vdmU9bD0+e2lmKCF0aGlzLmlzUmVzaXppbmd8fCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgYT1sLnRvdWNoZXNbMF07aWYoIWEpcmV0dXJuO2NvbnN0IGM9YS5jbGllbnRYLXRoaXMuc3RhcnRYLHU9YS5jbGllbnRZLXRoaXMuc3RhcnRZO3RoaXMuaGFuZGxlUmVzaXplKGMsdSl9LHRoaXMuaGFuZGxlTW91c2VVcD0oKT0+e2lmKCF0aGlzLmlzUmVzaXppbmcpcmV0dXJuO2NvbnN0IGw9dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoLGE9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDt0aGlzLm9uQ29tbWl0KGwsYSksdGhpcy5pc1Jlc2l6aW5nPSExLHRoaXMuYWN0aXZlSGFuZGxlPW51bGwsdGhpcy5jb250YWluZXIuZGF0YXNldC5yZXNpemVTdGF0ZT0iZmFsc2UiLHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyYmdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5oYW5kbGVNb3VzZU1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuaGFuZGxlTW91c2VVcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlEb3duKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsdGhpcy5oYW5kbGVLZXlVcCl9LHRoaXMuaGFuZGxlS2V5RG93bj1sPT57bC5rZXk9PT0iU2hpZnQiJiYodGhpcy5pc1NoaWZ0S2V5UHJlc3NlZD0hMCl9LHRoaXMuaGFuZGxlS2V5VXA9bD0+e2wua2V5PT09IlNoaWZ0IiYmKHRoaXMuaXNTaGlmdEtleVByZXNzZWQ9ITEpfTt2YXIgZSx0LHIscyxpLG87dGhpcy5ub2RlPW4ubm9kZSx0aGlzLmVkaXRvcj1uLmVkaXRvcix0aGlzLmVsZW1lbnQ9bi5lbGVtZW50LHRoaXMuY29udGVudEVsZW1lbnQ9bi5jb250ZW50RWxlbWVudCx0aGlzLmdldFBvcz1uLmdldFBvcyx0aGlzLm9uUmVzaXplPW4ub25SZXNpemUsdGhpcy5vbkNvbW1pdD1uLm9uQ29tbWl0LHRoaXMub25VcGRhdGU9bi5vblVwZGF0ZSwoZT1uLm9wdGlvbnMpIT1udWxsJiZlLm1pbiYmKHRoaXMubWluU2l6ZT17Li4udGhpcy5taW5TaXplLC4uLm4ub3B0aW9ucy5taW59KSwodD1uLm9wdGlvbnMpIT1udWxsJiZ0Lm1heCYmKHRoaXMubWF4U2l6ZT1uLm9wdGlvbnMubWF4KSwocj1uPy5vcHRpb25zKSE9bnVsbCYmci5kaXJlY3Rpb25zJiYodGhpcy5kaXJlY3Rpb25zPW4ub3B0aW9ucy5kaXJlY3Rpb25zKSwocz1uLm9wdGlvbnMpIT1udWxsJiZzLnByZXNlcnZlQXNwZWN0UmF0aW8mJih0aGlzLnByZXNlcnZlQXNwZWN0UmF0aW89bi5vcHRpb25zLnByZXNlcnZlQXNwZWN0UmF0aW8pLChpPW4ub3B0aW9ucykhPW51bGwmJmkuY2xhc3NOYW1lJiYodGhpcy5jbGFzc05hbWVzPXtjb250YWluZXI6bi5vcHRpb25zLmNsYXNzTmFtZS5jb250YWluZXJ8fCIiLHdyYXBwZXI6bi5vcHRpb25zLmNsYXNzTmFtZS53cmFwcGVyfHwiIixoYW5kbGU6bi5vcHRpb25zLmNsYXNzTmFtZS5oYW5kbGV8fCIiLHJlc2l6aW5nOm4ub3B0aW9ucy5jbGFzc05hbWUucmVzaXppbmd8fCIifSksKG89bi5vcHRpb25zKSE9bnVsbCYmby5jcmVhdGVDdXN0b21IYW5kbGUmJih0aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZT1uLm9wdGlvbnMuY3JlYXRlQ3VzdG9tSGFuZGxlKSx0aGlzLndyYXBwZXI9dGhpcy5jcmVhdGVXcmFwcGVyKCksdGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIoKSx0aGlzLmFwcGx5SW5pdGlhbFNpemUoKSx0aGlzLmF0dGFjaEhhbmRsZXMoKSx0aGlzLmVkaXRvci5vbigidXBkYXRlIix0aGlzLmhhbmRsZUVkaXRvclVwZGF0ZS5iaW5kKHRoaXMpKX1nZXQgZG9tKCl7cmV0dXJuIHRoaXMuY29udGFpbmVyfWdldCBjb250ZW50RE9NKCl7dmFyIG47cmV0dXJuKG49dGhpcy5jb250ZW50RWxlbWVudCkhPW51bGw/bjpudWxsfWhhbmRsZUVkaXRvclVwZGF0ZSgpe2NvbnN0IG49dGhpcy5lZGl0b3IuaXNFZGl0YWJsZTtuIT09dGhpcy5sYXN0RWRpdGFibGVTdGF0ZSYmKHRoaXMubGFzdEVkaXRhYmxlU3RhdGU9bixuP24mJnRoaXMuaGFuZGxlTWFwLnNpemU9PT0wJiZ0aGlzLmF0dGFjaEhhbmRsZXMoKTp0aGlzLnJlbW92ZUhhbmRsZXMoKSl9dXBkYXRlKG4sZSx0KXtyZXR1cm4gbi50eXBlIT09dGhpcy5ub2RlLnR5cGU/ITE6KHRoaXMubm9kZT1uLHRoaXMub25VcGRhdGU/dGhpcy5vblVwZGF0ZShuLGUsdCk6ITApfWRlc3Ryb3koKXt0aGlzLmlzUmVzaXppbmcmJih0aGlzLmNvbnRhaW5lci5kYXRhc2V0LnJlc2l6ZVN0YXRlPSJmYWxzZSIsdGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nJiZ0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZU1vdXNlTW92ZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5oYW5kbGVNb3VzZVVwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleURvd24pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIix0aGlzLmhhbmRsZUtleVVwKSx0aGlzLmlzUmVzaXppbmc9ITEsdGhpcy5hY3RpdmVIYW5kbGU9bnVsbCksdGhpcy5lZGl0b3Iub2ZmKCJ1cGRhdGUiLHRoaXMuaGFuZGxlRWRpdG9yVXBkYXRlLmJpbmQodGhpcykpLHRoaXMuY29udGFpbmVyLnJlbW92ZSgpfWNyZWF0ZUNvbnRhaW5lcigpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIG4uZGF0YXNldC5yZXNpemVDb250YWluZXI9IiIsbi5kYXRhc2V0Lm5vZGU9dGhpcy5ub2RlLnR5cGUubmFtZSxuLnN0eWxlLmRpc3BsYXk9dGhpcy5ub2RlLnR5cGUuaXNJbmxpbmU/ImlubGluZS1mbGV4IjoiZmxleCIsdGhpcy5jbGFzc05hbWVzLmNvbnRhaW5lciYmKG4uY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lcy5jb250YWluZXIpLG4uYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyKSxufWNyZWF0ZVdyYXBwZXIoKXtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIsbi5kYXRhc2V0LnJlc2l6ZVdyYXBwZXI9IiIsdGhpcy5jbGFzc05hbWVzLndyYXBwZXImJihuLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXMud3JhcHBlciksbi5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLG59Y3JlYXRlSGFuZGxlKG4pe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuZGF0YXNldC5yZXNpemVIYW5kbGU9bixlLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5jbGFzc05hbWVzLmhhbmRsZSYmKGUuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lcy5oYW5kbGUpLGV9cG9zaXRpb25IYW5kbGUobixlKXtjb25zdCB0PWUuaW5jbHVkZXMoInRvcCIpLHI9ZS5pbmNsdWRlcygiYm90dG9tIikscz1lLmluY2x1ZGVzKCJsZWZ0IiksaT1lLmluY2x1ZGVzKCJyaWdodCIpO3QmJihuLnN0eWxlLnRvcD0iMCIpLHImJihuLnN0eWxlLmJvdHRvbT0iMCIpLHMmJihuLnN0eWxlLmxlZnQ9IjAiKSxpJiYobi5zdHlsZS5yaWdodD0iMCIpLChlPT09InRvcCJ8fGU9PT0iYm90dG9tIikmJihuLnN0eWxlLmxlZnQ9IjAiLG4uc3R5bGUucmlnaHQ9IjAiKSwoZT09PSJsZWZ0Inx8ZT09PSJyaWdodCIpJiYobi5zdHlsZS50b3A9IjAiLG4uc3R5bGUuYm90dG9tPSIwIil9YXR0YWNoSGFuZGxlcygpe3RoaXMuZGlyZWN0aW9ucy5mb3JFYWNoKG49PntsZXQgZTt0aGlzLmNyZWF0ZUN1c3RvbUhhbmRsZT9lPXRoaXMuY3JlYXRlQ3VzdG9tSGFuZGxlKG4pOmU9dGhpcy5jcmVhdGVIYW5kbGUobiksZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHwoZT10aGlzLmNyZWF0ZUhhbmRsZShuKSksdGhpcy5jcmVhdGVDdXN0b21IYW5kbGV8fHRoaXMucG9zaXRpb25IYW5kbGUoZSxuKSxlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdD0+dGhpcy5oYW5kbGVSZXNpemVTdGFydCh0LG4pKSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHQ9PnRoaXMuaGFuZGxlUmVzaXplU3RhcnQodCxuKSksdGhpcy5oYW5kbGVNYXAuc2V0KG4sZSksdGhpcy53cmFwcGVyLmFwcGVuZENoaWxkKGUpfSl9cmVtb3ZlSGFuZGxlcygpe3RoaXMuaGFuZGxlTWFwLmZvckVhY2gobj0+bi5yZW1vdmUoKSksdGhpcy5oYW5kbGVNYXAuY2xlYXIoKX1hcHBseUluaXRpYWxTaXplKCl7Y29uc3Qgbj10aGlzLm5vZGUuYXR0cnMud2lkdGgsZT10aGlzLm5vZGUuYXR0cnMuaGVpZ2h0O24/KHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aD1gJHtufXB4YCx0aGlzLmluaXRpYWxXaWR0aD1uKTp0aGlzLmluaXRpYWxXaWR0aD10aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgsZT8odGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD1gJHtlfXB4YCx0aGlzLmluaXRpYWxIZWlnaHQ9ZSk6dGhpcy5pbml0aWFsSGVpZ2h0PXRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQsdGhpcy5pbml0aWFsV2lkdGg+MCYmdGhpcy5pbml0aWFsSGVpZ2h0PjAmJih0aGlzLmFzcGVjdFJhdGlvPXRoaXMuaW5pdGlhbFdpZHRoL3RoaXMuaW5pdGlhbEhlaWdodCl9aGFuZGxlUmVzaXplU3RhcnQobixlKXtuLnByZXZlbnREZWZhdWx0KCksbi5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmlzUmVzaXppbmc9ITAsdGhpcy5hY3RpdmVIYW5kbGU9ZSxxeShuKT8odGhpcy5zdGFydFg9bi50b3VjaGVzWzBdLmNsaWVudFgsdGhpcy5zdGFydFk9bi50b3VjaGVzWzBdLmNsaWVudFkpOih0aGlzLnN0YXJ0WD1uLmNsaWVudFgsdGhpcy5zdGFydFk9bi5jbGllbnRZKSx0aGlzLnN0YXJ0V2lkdGg9dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoLHRoaXMuc3RhcnRIZWlnaHQ9dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCx0aGlzLnN0YXJ0V2lkdGg+MCYmdGhpcy5zdGFydEhlaWdodD4wJiYodGhpcy5hc3BlY3RSYXRpbz10aGlzLnN0YXJ0V2lkdGgvdGhpcy5zdGFydEhlaWdodCksdGhpcy5nZXRQb3MoKSx0aGlzLmNvbnRhaW5lci5kYXRhc2V0LnJlc2l6ZVN0YXRlPSJ0cnVlIix0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcmJnRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW91c2VNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMuaGFuZGxlVG91Y2hNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZU1vdXNlVXApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuaGFuZGxlS2V5RG93biksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuaGFuZGxlS2V5VXApfWhhbmRsZVJlc2l6ZShuLGUpe2lmKCF0aGlzLmFjdGl2ZUhhbmRsZSlyZXR1cm47Y29uc3QgdD10aGlzLnByZXNlcnZlQXNwZWN0UmF0aW98fHRoaXMuaXNTaGlmdEtleVByZXNzZWQse3dpZHRoOnIsaGVpZ2h0OnN9PXRoaXMuY2FsY3VsYXRlTmV3RGltZW5zaW9ucyh0aGlzLmFjdGl2ZUhhbmRsZSxuLGUpLGk9dGhpcy5hcHBseUNvbnN0cmFpbnRzKHIscyx0KTt0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9YCR7aS53aWR0aH1weGAsdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD1gJHtpLmhlaWdodH1weGAsdGhpcy5vblJlc2l6ZSYmdGhpcy5vblJlc2l6ZShpLndpZHRoLGkuaGVpZ2h0KX1jYWxjdWxhdGVOZXdEaW1lbnNpb25zKG4sZSx0KXtsZXQgcj10aGlzLnN0YXJ0V2lkdGgscz10aGlzLnN0YXJ0SGVpZ2h0O2NvbnN0IGk9bi5pbmNsdWRlcygicmlnaHQiKSxvPW4uaW5jbHVkZXMoImxlZnQiKSxsPW4uaW5jbHVkZXMoImJvdHRvbSIpLGE9bi5pbmNsdWRlcygidG9wIik7cmV0dXJuIGk/cj10aGlzLnN0YXJ0V2lkdGgrZTpvJiYocj10aGlzLnN0YXJ0V2lkdGgtZSksbD9zPXRoaXMuc3RhcnRIZWlnaHQrdDphJiYocz10aGlzLnN0YXJ0SGVpZ2h0LXQpLChuPT09InJpZ2h0Inx8bj09PSJsZWZ0IikmJihyPXRoaXMuc3RhcnRXaWR0aCsoaT9lOi1lKSksKG49PT0idG9wInx8bj09PSJib3R0b20iKSYmKHM9dGhpcy5zdGFydEhlaWdodCsobD90Oi10KSksdGhpcy5wcmVzZXJ2ZUFzcGVjdFJhdGlvfHx0aGlzLmlzU2hpZnRLZXlQcmVzc2VkP3RoaXMuYXBwbHlBc3BlY3RSYXRpbyhyLHMsbik6e3dpZHRoOnIsaGVpZ2h0OnN9fWFwcGx5Q29uc3RyYWludHMobixlLHQpe3ZhciByLHMsaSxvO2lmKCF0KXtsZXQgYz1NYXRoLm1heCh0aGlzLm1pblNpemUud2lkdGgsbiksdT1NYXRoLm1heCh0aGlzLm1pblNpemUuaGVpZ2h0LGUpO3JldHVybihyPXRoaXMubWF4U2l6ZSkhPW51bGwmJnIud2lkdGgmJihjPU1hdGgubWluKHRoaXMubWF4U2l6ZS53aWR0aCxjKSksKHM9dGhpcy5tYXhTaXplKSE9bnVsbCYmcy5oZWlnaHQmJih1PU1hdGgubWluKHRoaXMubWF4U2l6ZS5oZWlnaHQsdSkpLHt3aWR0aDpjLGhlaWdodDp1fX1sZXQgbD1uLGE9ZTtyZXR1cm4gbDx0aGlzLm1pblNpemUud2lkdGgmJihsPXRoaXMubWluU2l6ZS53aWR0aCxhPWwvdGhpcy5hc3BlY3RSYXRpbyksYTx0aGlzLm1pblNpemUuaGVpZ2h0JiYoYT10aGlzLm1pblNpemUuaGVpZ2h0LGw9YSp0aGlzLmFzcGVjdFJhdGlvKSwoaT10aGlzLm1heFNpemUpIT1udWxsJiZpLndpZHRoJiZsPnRoaXMubWF4U2l6ZS53aWR0aCYmKGw9dGhpcy5tYXhTaXplLndpZHRoLGE9bC90aGlzLmFzcGVjdFJhdGlvKSwobz10aGlzLm1heFNpemUpIT1udWxsJiZvLmhlaWdodCYmYT50aGlzLm1heFNpemUuaGVpZ2h0JiYoYT10aGlzLm1heFNpemUuaGVpZ2h0LGw9YSp0aGlzLmFzcGVjdFJhdGlvKSx7d2lkdGg6bCxoZWlnaHQ6YX19YXBwbHlBc3BlY3RSYXRpbyhuLGUsdCl7Y29uc3Qgcj10PT09ImxlZnQifHx0PT09InJpZ2h0IixzPXQ9PT0idG9wInx8dD09PSJib3R0b20iO3JldHVybiByP3t3aWR0aDpuLGhlaWdodDpuL3RoaXMuYXNwZWN0UmF0aW99OnM/e3dpZHRoOmUqdGhpcy5hc3BlY3RSYXRpbyxoZWlnaHQ6ZX06e3dpZHRoOm4saGVpZ2h0Om4vdGhpcy5hc3BlY3RSYXRpb319fTtmdW5jdGlvbiBLeShuLGUpe2NvbnN0e3NlbGVjdGlvbjp0fT1uLHskZnJvbTpyfT10O2lmKHQgaW5zdGFuY2VvZiBOKXtjb25zdCBpPXIuaW5kZXgoKTtyZXR1cm4gci5wYXJlbnQuY2FuUmVwbGFjZVdpdGgoaSxpKzEsZSl9bGV0IHM9ci5kZXB0aDtmb3IoO3M+PTA7KXtjb25zdCBpPXIuaW5kZXgocyk7aWYoci5ub2RlKHMpLmNvbnRlbnRNYXRjaEF0KGkpLm1hdGNoVHlwZShlKSlyZXR1cm4hMDtzLT0xfXJldHVybiExfWZ1bmN0aW9uIEp5KG4pe3JldHVybiBuLnJlcGxhY2UoL1stL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKX1mdW5jdGlvbiBDYShuKXtyZXR1cm4gbi5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mcXVvdDsvZywnIicpLnJlcGxhY2UoLyZhbXA7L2csIiYiKX1mdW5jdGlvbiBHeShuKXtyZXR1cm4gbi5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9dmFyIFF5PXt9O1JvKFF5LHtjcmVhdGVBdG9tQmxvY2tNYXJrZG93blNwZWM6KCk9Plh5LGNyZWF0ZUJsb2NrTWFya2Rvd25TcGVjOigpPT5ZeSxjcmVhdGVJbmxpbmVNYXJrZG93blNwZWM6KCk9PlRkLHBhcnNlQXR0cmlidXRlczooKT0+SG8scGFyc2VJbmRlbnRlZEJsb2NrczooKT0+S2kscmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50OigpPT5WbyxzZXJpYWxpemVBdHRyaWJ1dGVzOigpPT5Gb30pO2Z1bmN0aW9uIEhvKG4pe2lmKCFuPy50cmltKCkpcmV0dXJue307Y29uc3QgZT17fSx0PVtdLHI9bi5yZXBsYWNlKC9bIiddKFteIiddKilbIiddL2csYz0+KHQucHVzaChjKSxgX19RVU9URURfJHt0Lmxlbmd0aC0xfV9fYCkpLHM9ci5tYXRjaCgvKD86XnxccylcLihbYS16QS1aXVtcdy1dKikvZyk7aWYocyl7Y29uc3QgYz1zLm1hcCh1PT51LnRyaW0oKS5zbGljZSgxKSk7ZS5jbGFzcz1jLmpvaW4oIiAiKX1jb25zdCBpPXIubWF0Y2goLyg/Ol58XHMpIyhbYS16QS1aXVtcdy1dKikvKTtpJiYoZS5pZD1pWzFdKTtjb25zdCBvPS8oW2EtekEtWl1bXHctXSopXHMqPVxzKihfX1FVT1RFRF9cZCtfXykvZztBcnJheS5mcm9tKHIubWF0Y2hBbGwobykpLmZvckVhY2goKFssYyx1XSk9Pnt2YXIgZDtjb25zdCBoPXBhcnNlSW50KCgoZD11Lm1hdGNoKC9fX1FVT1RFRF8oXGQrKV9fLykpPT1udWxsP3ZvaWQgMDpkWzFdKXx8IjAiLDEwKSxmPXRbaF07ZiYmKGVbY109Zi5zbGljZSgxLC0xKSl9KTtjb25zdCBhPXIucmVwbGFjZSgvKD86XnxccylcLihbYS16QS1aXVtcdy1dKikvZywiIikucmVwbGFjZSgvKD86XnxccykjKFthLXpBLVpdW1x3LV0qKS9nLCIiKS5yZXBsYWNlKC8oW2EtekEtWl1bXHctXSopXHMqPVxzKl9fUVVPVEVEX1xkK19fL2csIiIpLnRyaW0oKTtyZXR1cm4gYSYmYS5zcGxpdCgvXHMrLykuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2godT0+e3UubWF0Y2goL15bYS16QS1aXVtcdy1dKiQvKSYmKGVbdV09ITApfSksZX1mdW5jdGlvbiBGbyhuKXtpZighbnx8T2JqZWN0LmtleXMobikubGVuZ3RoPT09MClyZXR1cm4iIjtjb25zdCBlPVtdO3JldHVybiBuLmNsYXNzJiZTdHJpbmcobi5jbGFzcykuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKHI9PmUucHVzaChgLiR7cn1gKSksbi5pZCYmZS5wdXNoKGAjJHtuLmlkfWApLE9iamVjdC5lbnRyaWVzKG4pLmZvckVhY2goKFt0LHJdKT0+e3Q9PT0iY2xhc3MifHx0PT09ImlkInx8KHI9PT0hMD9lLnB1c2godCk6ciE9PSExJiZyIT1udWxsJiZlLnB1c2goYCR7dH09IiR7U3RyaW5nKHIpfSJgKSl9KSxlLmpvaW4oIiAiKX1mdW5jdGlvbiBYeShuKXtjb25zdHtub2RlTmFtZTplLG5hbWU6dCxwYXJzZUF0dHJpYnV0ZXM6cj1IbyxzZXJpYWxpemVBdHRyaWJ1dGVzOnM9Rm8sZGVmYXVsdEF0dHJpYnV0ZXM6aT17fSxyZXF1aXJlZEF0dHJpYnV0ZXM6bz1bXSxhbGxvd2VkQXR0cmlidXRlczpsfT1uLGE9dHx8ZSxjPXU9PntpZighbClyZXR1cm4gdTtjb25zdCBkPXt9O3JldHVybiBsLmZvckVhY2goaD0+e2ggaW4gdSYmKGRbaF09dVtoXSl9KSxkfTtyZXR1cm57cGFyc2VNYXJrZG93bjoodSxkKT0+e2NvbnN0IGg9ey4uLmksLi4udS5hdHRyaWJ1dGVzfTtyZXR1cm4gZC5jcmVhdGVOb2RlKGUsaCxbXSl9LG1hcmtkb3duVG9rZW5pemVyOntuYW1lOmUsbGV2ZWw6ImJsb2NrIixzdGFydCh1KXt2YXIgZDtjb25zdCBoPW5ldyBSZWdFeHAoYF46Ojoke2F9KD86XFxzfCQpYCwibSIpLGY9KGQ9dS5tYXRjaChoKSk9PW51bGw/dm9pZCAwOmQuaW5kZXg7cmV0dXJuIGYhPT12b2lkIDA/ZjotMX0sdG9rZW5pemUodSxkLGgpe2NvbnN0IGY9bmV3IFJlZ0V4cChgXjo6OiR7YX0oPzpcXHMrXFx7KFtefV0qKVxcfSk/XFxzKjo6Oig/OlxcbnwkKWApLHA9dS5tYXRjaChmKTtpZighcClyZXR1cm47Y29uc3QgbT1wWzFdfHwiIixnPXIobSk7aWYoIW8uZmluZChrPT4hKGsgaW4gZykpKXJldHVybnt0eXBlOmUscmF3OnBbMF0sYXR0cmlidXRlczpnfX19LHJlbmRlck1hcmtkb3duOnU9Pntjb25zdCBkPWModS5hdHRyc3x8e30pLGg9cyhkKSxmPWg/YCB7JHtofX1gOiIiO3JldHVybmA6Ojoke2F9JHtmfSA6OjpgfX19ZnVuY3Rpb24gWXkobil7Y29uc3R7bm9kZU5hbWU6ZSxuYW1lOnQsZ2V0Q29udGVudDpyLHBhcnNlQXR0cmlidXRlczpzPUhvLHNlcmlhbGl6ZUF0dHJpYnV0ZXM6aT1GbyxkZWZhdWx0QXR0cmlidXRlczpvPXt9LGNvbnRlbnQ6bD0iYmxvY2siLGFsbG93ZWRBdHRyaWJ1dGVzOmF9PW4sYz10fHxlLHU9ZD0+e2lmKCFhKXJldHVybiBkO2NvbnN0IGg9e307cmV0dXJuIGEuZm9yRWFjaChmPT57ZiBpbiBkJiYoaFtmXT1kW2ZdKX0pLGh9O3JldHVybntwYXJzZU1hcmtkb3duOihkLGgpPT57bGV0IGY7aWYocil7Y29uc3QgbT1yKGQpO2Y9dHlwZW9mIG09PSJzdHJpbmciP1t7dHlwZToidGV4dCIsdGV4dDptfV06bX1lbHNlIGw9PT0iYmxvY2siP2Y9aC5wYXJzZUNoaWxkcmVuKGQudG9rZW5zfHxbXSk6Zj1oLnBhcnNlSW5saW5lKGQudG9rZW5zfHxbXSk7Y29uc3QgcD17Li4ubywuLi5kLmF0dHJpYnV0ZXN9O3JldHVybiBoLmNyZWF0ZU5vZGUoZSxwLGYpfSxtYXJrZG93blRva2VuaXplcjp7bmFtZTplLGxldmVsOiJibG9jayIsc3RhcnQoZCl7dmFyIGg7Y29uc3QgZj1uZXcgUmVnRXhwKGBeOjo6JHtjfWAsIm0iKSxwPShoPWQubWF0Y2goZikpPT1udWxsP3ZvaWQgMDpoLmluZGV4O3JldHVybiBwIT09dm9pZCAwP3A6LTF9LHRva2VuaXplKGQsaCxmKXt2YXIgcDtjb25zdCBtPW5ldyBSZWdFeHAoYF46Ojoke2N9KD86XFxzK1xceyhbXn1dKilcXH0pP1xccypcXG5gKSxnPWQubWF0Y2gobSk7aWYoIWcpcmV0dXJuO2NvbnN0W3ksaz0iIl09ZyxiPXMoayk7bGV0IHc9MTtjb25zdCB4PXkubGVuZ3RoO2xldCB2PSIiO2NvbnN0IEM9L146OjooW1x3LV0qKShccy4qKT8vZ20sTT1kLnNsaWNlKHgpO2ZvcihDLmxhc3RJbmRleD0wOzspe2NvbnN0IFI9Qy5leGVjKE0pO2lmKFI9PT1udWxsKWJyZWFrO2NvbnN0IE89Ui5pbmRleCxQPVJbMV07aWYoISgocD1SWzJdKSE9bnVsbCYmcC5lbmRzV2l0aCgiOjo6IikpKXtpZihQKXcrPTE7ZWxzZSBpZih3LT0xLHc9PT0wKXtjb25zdCBGPU0uc2xpY2UoMCxPKTt2PUYudHJpbSgpO2NvbnN0IF89ZC5zbGljZSgwLHgrTytSWzBdLmxlbmd0aCk7bGV0IEw9W107aWYodilpZihsPT09ImJsb2NrIilmb3IoTD1mLmJsb2NrVG9rZW5zKEYpLEwuZm9yRWFjaChIPT57SC50ZXh0JiYoIUgudG9rZW5zfHxILnRva2Vucy5sZW5ndGg9PT0wKSYmKEgudG9rZW5zPWYuaW5saW5lVG9rZW5zKEgudGV4dCkpfSk7TC5sZW5ndGg+MDspe2NvbnN0IEg9TFtMLmxlbmd0aC0xXTtpZihILnR5cGU9PT0icGFyYWdyYXBoIiYmKCFILnRleHR8fEgudGV4dC50cmltKCk9PT0iIikpTC5wb3AoKTtlbHNlIGJyZWFrfWVsc2UgTD1mLmlubGluZVRva2Vucyh2KTtyZXR1cm57dHlwZTplLHJhdzpfLGF0dHJpYnV0ZXM6Yixjb250ZW50OnYsdG9rZW5zOkx9fX19fX0scmVuZGVyTWFya2Rvd246KGQsaCk9Pntjb25zdCBmPXUoZC5hdHRyc3x8e30pLHA9aShmKSxtPXA/YCB7JHtwfX1gOiIiLGc9aC5yZW5kZXJDaGlsZHJlbihkLmNvbnRlbnR8fFtdLGAKCmApO3JldHVybmA6Ojoke2N9JHttfQoKJHtnfQoKOjo6YH19fWZ1bmN0aW9uIFp5KG4pe2lmKCFuLnRyaW0oKSlyZXR1cm57fTtjb25zdCBlPXt9LHQ9LyhcdyspPSg/OiIoW14iXSopInwnKFteJ10qKScpL2c7bGV0IHI9dC5leGVjKG4pO2Zvcig7ciE9PW51bGw7KXtjb25zdFsscyxpLG9dPXI7ZVtzXT1pfHxvLHI9dC5leGVjKG4pfXJldHVybiBlfWZ1bmN0aW9uIGVrKG4pe3JldHVybiBPYmplY3QuZW50cmllcyhuKS5maWx0ZXIoKFssZV0pPT5lIT1udWxsKS5tYXAoKFtlLHRdKT0+YCR7ZX09IiR7dH0iYCkuam9pbigiICIpfWZ1bmN0aW9uIFRkKG4pe2NvbnN0e25vZGVOYW1lOmUsbmFtZTp0LGdldENvbnRlbnQ6cixwYXJzZUF0dHJpYnV0ZXM6cz1aeSxzZXJpYWxpemVBdHRyaWJ1dGVzOmk9ZWssZGVmYXVsdEF0dHJpYnV0ZXM6bz17fSxzZWxmQ2xvc2luZzpsPSExLGFsbG93ZWRBdHRyaWJ1dGVzOmF9PW4sYz10fHxlLHU9aD0+e2lmKCFhKXJldHVybiBoO2NvbnN0IGY9e307cmV0dXJuIGEuZm9yRWFjaChwPT57Y29uc3QgbT10eXBlb2YgcD09InN0cmluZyI/cDpwLm5hbWUsZz10eXBlb2YgcD09InN0cmluZyI/dm9pZCAwOnAuc2tpcElmRGVmYXVsdDtpZihtIGluIGgpe2NvbnN0IHk9aFttXTtpZihnIT09dm9pZCAwJiZ5PT09ZylyZXR1cm47ZlttXT15fX0pLGZ9LGQ9Yy5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpO3JldHVybntwYXJzZU1hcmtkb3duOihoLGYpPT57Y29uc3QgcD17Li4ubywuLi5oLmF0dHJpYnV0ZXN9O2lmKGwpcmV0dXJuIGYuY3JlYXRlTm9kZShlLHApO2NvbnN0IG09cj9yKGgpOmguY29udGVudHx8IiI7cmV0dXJuIG0/Zi5jcmVhdGVOb2RlKGUscCxbZi5jcmVhdGVUZXh0Tm9kZShtKV0pOmYuY3JlYXRlTm9kZShlLHAsW10pfSxtYXJrZG93blRva2VuaXplcjp7bmFtZTplLGxldmVsOiJpbmxpbmUiLHN0YXJ0KGgpe2NvbnN0IGY9bD9uZXcgUmVnRXhwKGBcXFske2R9XFxzKlteXFxdXSpcXF1gKTpuZXcgUmVnRXhwKGBcXFske2R9XFxzKlteXFxdXSpcXF1bXFxzXFxTXSo/XFxbXFwvJHtkfVxcXWApLHA9aC5tYXRjaChmKSxtPXA/LmluZGV4O3JldHVybiBtIT09dm9pZCAwP206LTF9LHRva2VuaXplKGgsZixwKXtjb25zdCBtPWw/bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdYCk6bmV3IFJlZ0V4cChgXlxcWyR7ZH1cXHMqKFteXFxdXSopXFxdKFtcXHNcXFNdKj8pXFxbXFwvJHtkfVxcXWApLGc9aC5tYXRjaChtKTtpZighZylyZXR1cm47bGV0IHk9IiIsaz0iIjtpZihsKXtjb25zdFssd109ZztrPXd9ZWxzZXtjb25zdFssdyx4XT1nO2s9dyx5PXh8fCIifWNvbnN0IGI9cyhrLnRyaW0oKSk7cmV0dXJue3R5cGU6ZSxyYXc6Z1swXSxjb250ZW50OnkudHJpbSgpLGF0dHJpYnV0ZXM6Yn19fSxyZW5kZXJNYXJrZG93bjpoPT57bGV0IGY9IiI7cj9mPXIoaCk6aC5jb250ZW50JiZoLmNvbnRlbnQubGVuZ3RoPjAmJihmPWguY29udGVudC5maWx0ZXIoeT0+eS50eXBlPT09InRleHQiKS5tYXAoeT0+eS50ZXh0KS5qb2luKCIiKSk7Y29uc3QgcD11KGguYXR0cnN8fHt9KSxtPWkocCksZz1tP2AgJHttfWA6IiI7cmV0dXJuIGw/YFske2N9JHtnfV1gOmBbJHtjfSR7Z31dJHtmfVsvJHtjfV1gfX19ZnVuY3Rpb24gS2kobixlLHQpe3ZhciByLHMsaSxvO2NvbnN0IGw9bi5zcGxpdChgCmApLGE9W107bGV0IGM9IiIsdT0wO2NvbnN0IGQ9ZS5iYXNlSW5kZW50U2l6ZXx8Mjtmb3IoO3U8bC5sZW5ndGg7KXtjb25zdCBoPWxbdV0sZj1oLm1hdGNoKGUuaXRlbVBhdHRlcm4pO2lmKCFmKXtpZihhLmxlbmd0aD4wKWJyZWFrO2lmKGgudHJpbSgpPT09IiIpe3UrPTEsYz1gJHtjfSR7aH0KYDtjb250aW51ZX1lbHNlIHJldHVybn1jb25zdCBwPWUuZXh0cmFjdEl0ZW1EYXRhKGYpLHtpbmRlbnRMZXZlbDptLG1haW5Db250ZW50Omd9PXA7Yz1gJHtjfSR7aH0KYDtjb25zdCB5PVtnXTtmb3IodSs9MTt1PGwubGVuZ3RoOyl7Y29uc3QgeD1sW3VdO2lmKHgudHJpbSgpPT09IiIpe2NvbnN0IEM9bC5zbGljZSh1KzEpLmZpbmRJbmRleChPPT5PLnRyaW0oKSE9PSIiKTtpZihDPT09LTEpYnJlYWs7aWYoKCgocz0ocj1sW3UrMStDXS5tYXRjaCgvXihccyopLykpPT1udWxsP3ZvaWQgMDpyWzFdKT09bnVsbD92b2lkIDA6cy5sZW5ndGgpfHwwKT5tKXt5LnB1c2goeCksYz1gJHtjfSR7eH0KYCx1Kz0xO2NvbnRpbnVlfWVsc2UgYnJlYWt9aWYoKCgobz0oaT14Lm1hdGNoKC9eKFxzKikvKSk9PW51bGw/dm9pZCAwOmlbMV0pPT1udWxsP3ZvaWQgMDpvLmxlbmd0aCl8fDApPm0peS5wdXNoKHgpLGM9YCR7Y30ke3h9CmAsdSs9MTtlbHNlIGJyZWFrfWxldCBrO2NvbnN0IGI9eS5zbGljZSgxKTtpZihiLmxlbmd0aD4wKXtjb25zdCB4PWIubWFwKHY9PnYuc2xpY2UobStkKSkuam9pbihgCmApO3gudHJpbSgpJiYoZS5jdXN0b21OZXN0ZWRQYXJzZXI/az1lLmN1c3RvbU5lc3RlZFBhcnNlcih4KTprPXQuYmxvY2tUb2tlbnMoeCkpfWNvbnN0IHc9ZS5jcmVhdGVUb2tlbihwLGspO2EucHVzaCh3KX1pZihhLmxlbmd0aCE9PTApcmV0dXJue2l0ZW1zOmEscmF3OmN9fWZ1bmN0aW9uIFZvKG4sZSx0LHIpe2lmKCFufHwhQXJyYXkuaXNBcnJheShuLmNvbnRlbnQpKXJldHVybiIiO2NvbnN0IHM9dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChyKTp0LFtpLC4uLm9dPW4uY29udGVudCxsPWUucmVuZGVyQ2hpbGRyZW4oW2ldKTtsZXQgYT1gJHtzfSR7bH1gO3JldHVybiBvJiZvLmxlbmd0aD4wJiZvLmZvckVhY2goKGMsdSk9Pnt2YXIgZCxoO2NvbnN0IGY9KGg9KGQ9ZS5yZW5kZXJDaGlsZCk9PW51bGw/dm9pZCAwOmQuY2FsbChlLGMsdSsxKSkhPW51bGw/aDplLnJlbmRlckNoaWxkcmVuKFtjXSk7aWYoZiE9bnVsbCl7Y29uc3QgcD1mLnNwbGl0KGAKYCkubWFwKG09Pm0/ZS5pbmRlbnQobSk6ZS5pbmRlbnQoIiIpKS5qb2luKGAKYCk7YSs9Yy50eXBlPT09InBhcmFncmFwaCI/YAoKJHtwfWA6YAoke3B9YH19KSxhfWZ1bmN0aW9uIHRrKG4sZSx0PXt9KXtjb25zdHtzdGF0ZTpyfT1lLHtkb2M6cyx0cjppfT1yLG89bjtzLmRlc2NlbmRhbnRzKChsLGEpPT57Y29uc3QgYz1pLm1hcHBpbmcubWFwKGEpLHU9aS5tYXBwaW5nLm1hcChhKStsLm5vZGVTaXplO2xldCBkPW51bGw7aWYobC5tYXJrcy5mb3JFYWNoKGY9PntpZihmIT09bylyZXR1cm4hMTtkPWZ9KSwhZClyZXR1cm47bGV0IGg9ITE7aWYoT2JqZWN0LmtleXModCkuZm9yRWFjaChmPT57dFtmXSE9PWQuYXR0cnNbZl0mJihoPSEwKX0pLGgpe2NvbnN0IGY9bi50eXBlLmNyZWF0ZSh7Li4ubi5hdHRycywuLi50fSk7aS5yZW1vdmVNYXJrKGMsdSxuLnR5cGUpLGkuYWRkTWFyayhjLHUsZil9fSksaS5kb2NDaGFuZ2VkJiZlLnZpZXcuZGlzcGF0Y2goaSl9dmFyIFNlPWNsYXNzIE1kIGV4dGVuZHMgX297Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0ibm9kZSJ9c3RhdGljIGNyZWF0ZShlPXt9KXtjb25zdCB0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTplO3JldHVybiBuZXcgTWQodCl9Y29uZmlndXJlKGUpe3JldHVybiBzdXBlci5jb25maWd1cmUoZSl9ZXh0ZW5kKGUpe2NvbnN0IHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSgpOmU7cmV0dXJuIHN1cGVyLmV4dGVuZCh0KX19O2Z1bmN0aW9uIHF0KG4pe3JldHVybiBuZXcgUHkoe2ZpbmQ6bi5maW5kLGhhbmRsZXI6KHtzdGF0ZTplLHJhbmdlOnQsbWF0Y2g6cixwYXN0ZUV2ZW50OnN9KT0+e2NvbnN0IGk9VShuLmdldEF0dHJpYnV0ZXMsdm9pZCAwLHIscyk7aWYoaT09PSExfHxpPT09bnVsbClyZXR1cm4gbnVsbDtjb25zdHt0cjpvfT1lLGw9cltyLmxlbmd0aC0xXSxhPXJbMF07bGV0IGM9dC50bztpZihsKXtjb25zdCB1PWEuc2VhcmNoKC9cUy8pLGQ9dC5mcm9tK2EuaW5kZXhPZihsKSxoPWQrbC5sZW5ndGg7aWYoQm8odC5mcm9tLHQudG8sZS5kb2MpLmZpbHRlcihtPT5tLm1hcmsudHlwZS5leGNsdWRlZC5maW5kKHk9Pnk9PT1uLnR5cGUmJnkhPT1tLm1hcmsudHlwZSkpLmZpbHRlcihtPT5tLnRvPmQpLmxlbmd0aClyZXR1cm4gbnVsbDtoPHQudG8mJm8uZGVsZXRlKGgsdC50byksZD50LmZyb20mJm8uZGVsZXRlKHQuZnJvbSt1LGQpLGM9dC5mcm9tK3UrbC5sZW5ndGgsby5hZGRNYXJrKHQuZnJvbSt1LGMsbi50eXBlLmNyZWF0ZShpfHx7fSkpLHIuaW5kZXghPT12b2lkIDAmJnIuaW5wdXQhPT12b2lkIDAmJnIuaW5kZXgrclswXS5sZW5ndGg+PXIuaW5wdXQubGVuZ3RofHxvLnJlbW92ZVN0b3JlZE1hcmsobi50eXBlKX19fSl9bGV0IEppLEdpO2lmKHR5cGVvZiBXZWFrTWFwPCJ1Iil7bGV0IG49bmV3IFdlYWtNYXA7Smk9ZT0+bi5nZXQoZSksR2k9KGUsdCk9PihuLnNldChlLHQpLHQpfWVsc2V7Y29uc3Qgbj1bXTtsZXQgdD0wO0ppPXI9Pntmb3IobGV0IHM9MDtzPG4ubGVuZ3RoO3MrPTIpaWYobltzXT09cilyZXR1cm4gbltzKzFdfSxHaT0ocixzKT0+KHQ9PTEwJiYodD0wKSxuW3QrK109cixuW3QrK109cyl9dmFyIG50PWNsYXNze2NvbnN0cnVjdG9yKG4sZSx0LHIpe3RoaXMud2lkdGg9bix0aGlzLmhlaWdodD1lLHRoaXMubWFwPXQsdGhpcy5wcm9ibGVtcz1yfWZpbmRDZWxsKG4pe2ZvcihsZXQgZT0wO2U8dGhpcy5tYXAubGVuZ3RoO2UrKyl7Y29uc3QgdD10aGlzLm1hcFtlXTtpZih0IT1uKWNvbnRpbnVlO2NvbnN0IHI9ZSV0aGlzLndpZHRoLHM9ZS90aGlzLndpZHRofDA7bGV0IGk9cisxLG89cysxO2ZvcihsZXQgbD0xO2k8dGhpcy53aWR0aCYmdGhpcy5tYXBbZStsXT09dDtsKyspaSsrO2ZvcihsZXQgbD0xO288dGhpcy5oZWlnaHQmJnRoaXMubWFwW2UrdGhpcy53aWR0aCpsXT09dDtsKyspbysrO3JldHVybntsZWZ0OnIsdG9wOnMscmlnaHQ6aSxib3R0b206b319dGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIGNlbGwgd2l0aCBvZmZzZXQgJHtufSBmb3VuZGApfWNvbENvdW50KG4pe2ZvcihsZXQgZT0wO2U8dGhpcy5tYXAubGVuZ3RoO2UrKylpZih0aGlzLm1hcFtlXT09bilyZXR1cm4gZSV0aGlzLndpZHRoO3Rocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7bn0gZm91bmRgKX1uZXh0Q2VsbChuLGUsdCl7Y29uc3R7bGVmdDpyLHJpZ2h0OnMsdG9wOmksYm90dG9tOm99PXRoaXMuZmluZENlbGwobik7cmV0dXJuIGU9PSJob3JpeiI/KHQ8MD9yPT0wOnM9PXRoaXMud2lkdGgpP251bGw6dGhpcy5tYXBbaSp0aGlzLndpZHRoKyh0PDA/ci0xOnMpXToodDwwP2k9PTA6bz09dGhpcy5oZWlnaHQpP251bGw6dGhpcy5tYXBbcit0aGlzLndpZHRoKih0PDA/aS0xOm8pXX1yZWN0QmV0d2VlbihuLGUpe2NvbnN0e2xlZnQ6dCxyaWdodDpyLHRvcDpzLGJvdHRvbTppfT10aGlzLmZpbmRDZWxsKG4pLHtsZWZ0Om8scmlnaHQ6bCx0b3A6YSxib3R0b206Y309dGhpcy5maW5kQ2VsbChlKTtyZXR1cm57bGVmdDpNYXRoLm1pbih0LG8pLHRvcDpNYXRoLm1pbihzLGEpLHJpZ2h0Ok1hdGgubWF4KHIsbCksYm90dG9tOk1hdGgubWF4KGksYyl9fWNlbGxzSW5SZWN0KG4pe2NvbnN0IGU9W10sdD17fTtmb3IobGV0IHI9bi50b3A7cjxuLmJvdHRvbTtyKyspZm9yKGxldCBzPW4ubGVmdDtzPG4ucmlnaHQ7cysrKXtjb25zdCBpPXIqdGhpcy53aWR0aCtzLG89dGhpcy5tYXBbaV07dFtvXXx8KHRbb109ITAsIShzPT1uLmxlZnQmJnMmJnRoaXMubWFwW2ktMV09PW98fHI9PW4udG9wJiZyJiZ0aGlzLm1hcFtpLXRoaXMud2lkdGhdPT1vKSYmZS5wdXNoKG8pKX1yZXR1cm4gZX1wb3NpdGlvbkF0KG4sZSx0KXtmb3IobGV0IHI9MCxzPTA7O3IrKyl7Y29uc3QgaT1zK3QuY2hpbGQocikubm9kZVNpemU7aWYocj09bil7bGV0IG89ZStuKnRoaXMud2lkdGg7Y29uc3QgbD0obisxKSp0aGlzLndpZHRoO2Zvcig7bzxsJiZ0aGlzLm1hcFtvXTxzOylvKys7cmV0dXJuIG89PWw/aS0xOnRoaXMubWFwW29dfXM9aX19c3RhdGljIGdldChuKXtyZXR1cm4gSmkobil8fEdpKG4sbmsobikpfX07ZnVuY3Rpb24gbmsobil7aWYobi50eXBlLnNwZWMudGFibGVSb2xlIT0idGFibGUiKXRocm93IG5ldyBSYW5nZUVycm9yKCJOb3QgYSB0YWJsZSBub2RlOiAiK24udHlwZS5uYW1lKTtjb25zdCBlPXJrKG4pLHQ9bi5jaGlsZENvdW50LHI9W107bGV0IHM9MCxpPW51bGw7Y29uc3Qgbz1bXTtmb3IobGV0IGM9MCx1PWUqdDtjPHU7YysrKXJbY109MDtmb3IobGV0IGM9MCx1PTA7Yzx0O2MrKyl7Y29uc3QgZD1uLmNoaWxkKGMpO3UrKztmb3IobGV0IHA9MDs7cCsrKXtmb3IoO3M8ci5sZW5ndGgmJnJbc10hPTA7KXMrKztpZihwPT1kLmNoaWxkQ291bnQpYnJlYWs7Y29uc3QgbT1kLmNoaWxkKHApLHtjb2xzcGFuOmcscm93c3Bhbjp5LGNvbHdpZHRoOmt9PW0uYXR0cnM7Zm9yKGxldCBiPTA7Yjx5O2IrKyl7aWYoYitjPj10KXsoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJvdmVybG9uZ19yb3dzcGFuIixwb3M6dSxuOnktYn0pO2JyZWFrfWNvbnN0IHc9cytiKmU7Zm9yKGxldCB4PTA7eDxnO3grKyl7clt3K3hdPT0wP3Jbdyt4XT11OihpfHwoaT1bXSkpLnB1c2goe3R5cGU6ImNvbGxpc2lvbiIscm93OmMscG9zOnUsbjpnLXh9KTtjb25zdCB2PWsmJmtbeF07aWYodil7Y29uc3QgQz0odyt4KSVlKjIsTT1vW0NdO009PW51bGx8fE0hPXYmJm9bQysxXT09MT8ob1tDXT12LG9bQysxXT0xKTpNPT12JiZvW0MrMV0rK319fXMrPWcsdSs9bS5ub2RlU2l6ZX1jb25zdCBoPShjKzEpKmU7bGV0IGY9MDtmb3IoO3M8aDspcltzKytdPT0wJiZmKys7ZiYmKGl8fChpPVtdKSkucHVzaCh7dHlwZToibWlzc2luZyIscm93OmMsbjpmfSksdSsrfShlPT09MHx8dD09PTApJiYoaXx8KGk9W10pKS5wdXNoKHt0eXBlOiJ6ZXJvX3NpemVkIn0pO2NvbnN0IGw9bmV3IG50KGUsdCxyLGkpO2xldCBhPSExO2ZvcihsZXQgYz0wOyFhJiZjPG8ubGVuZ3RoO2MrPTIpb1tjXSE9bnVsbCYmb1tjKzFdPHQmJihhPSEwKTtyZXR1cm4gYSYmc2sobCxvLG4pLGx9ZnVuY3Rpb24gcmsobil7bGV0IGU9LTEsdD0hMTtmb3IobGV0IHI9MDtyPG4uY2hpbGRDb3VudDtyKyspe2NvbnN0IHM9bi5jaGlsZChyKTtsZXQgaT0wO2lmKHQpZm9yKGxldCBvPTA7bzxyO28rKyl7Y29uc3QgbD1uLmNoaWxkKG8pO2ZvcihsZXQgYT0wO2E8bC5jaGlsZENvdW50O2ErKyl7Y29uc3QgYz1sLmNoaWxkKGEpO28rYy5hdHRycy5yb3dzcGFuPnImJihpKz1jLmF0dHJzLmNvbHNwYW4pfX1mb3IobGV0IG89MDtvPHMuY2hpbGRDb3VudDtvKyspe2NvbnN0IGw9cy5jaGlsZChvKTtpKz1sLmF0dHJzLmNvbHNwYW4sbC5hdHRycy5yb3dzcGFuPjEmJih0PSEwKX1lPT0tMT9lPWk6ZSE9aSYmKGU9TWF0aC5tYXgoZSxpKSl9cmV0dXJuIGV9ZnVuY3Rpb24gc2sobixlLHQpe24ucHJvYmxlbXN8fChuLnByb2JsZW1zPVtdKTtjb25zdCByPXt9O2ZvcihsZXQgcz0wO3M8bi5tYXAubGVuZ3RoO3MrKyl7Y29uc3QgaT1uLm1hcFtzXTtpZihyW2ldKWNvbnRpbnVlO3JbaV09ITA7Y29uc3Qgbz10Lm5vZGVBdChpKTtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCB3aXRoIG9mZnNldCAke2l9IGZvdW5kYCk7bGV0IGw9bnVsbDtjb25zdCBhPW8uYXR0cnM7Zm9yKGxldCBjPTA7YzxhLmNvbHNwYW47YysrKXtjb25zdCB1PWVbKHMrYyklbi53aWR0aCoyXTt1IT1udWxsJiYoIWEuY29sd2lkdGh8fGEuY29sd2lkdGhbY10hPXUpJiYoKGx8fChsPWlrKGEpKSlbY109dSl9bCYmbi5wcm9ibGVtcy51bnNoaWZ0KHt0eXBlOiJjb2x3aWR0aCBtaXNtYXRjaCIscG9zOmksY29sd2lkdGg6bH0pfX1mdW5jdGlvbiBpayhuKXtpZihuLmNvbHdpZHRoKXJldHVybiBuLmNvbHdpZHRoLnNsaWNlKCk7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MDt0PG4uY29sc3Bhbjt0KyspZS5wdXNoKDApO3JldHVybiBlfWZ1bmN0aW9uIFVvKG4pe2xldCBlPW4uY2FjaGVkLnRhYmxlTm9kZVR5cGVzO2lmKCFlKXtlPW4uY2FjaGVkLnRhYmxlTm9kZVR5cGVzPXt9O2Zvcihjb25zdCB0IGluIG4ubm9kZXMpe2NvbnN0IHI9bi5ub2Rlc1t0XSxzPXIuc3BlYy50YWJsZVJvbGU7cyYmKGVbc109cil9fXJldHVybiBlfW5ldyBxKCJzZWxlY3RpbmdDZWxscyIpO2Z1bmN0aW9uIG9rKG4pe2ZvcihsZXQgZT1uLmRlcHRoLTE7ZT4wO2UtLSlpZihuLm5vZGUoZSkudHlwZS5zcGVjLnRhYmxlUm9sZT09InJvdyIpcmV0dXJuIG4ubm9kZSgwKS5yZXNvbHZlKG4uYmVmb3JlKGUrMSkpO3JldHVybiBudWxsfWZ1bmN0aW9uIEVkKG4pe2NvbnN0IGU9bi5zZWxlY3Rpb24uJGhlYWQ7Zm9yKGxldCB0PWUuZGVwdGg7dD4wO3QtLSlpZihlLm5vZGUodCkudHlwZS5zcGVjLnRhYmxlUm9sZT09InJvdyIpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbGsobil7Y29uc3QgZT1uLnNlbGVjdGlvbjtpZigiJGFuY2hvckNlbGwiaW4gZSYmZS4kYW5jaG9yQ2VsbClyZXR1cm4gZS4kYW5jaG9yQ2VsbC5wb3M+ZS4kaGVhZENlbGwucG9zP2UuJGFuY2hvckNlbGw6ZS4kaGVhZENlbGw7aWYoIm5vZGUiaW4gZSYmZS5ub2RlJiZlLm5vZGUudHlwZS5zcGVjLnRhYmxlUm9sZT09ImNlbGwiKXJldHVybiBlLiRhbmNob3I7Y29uc3QgdD1vayhlLiRoZWFkKXx8YWsoZS4kaGVhZCk7aWYodClyZXR1cm4gdDt0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gY2VsbCBmb3VuZCBhcm91bmQgcG9zaXRpb24gJHtlLmhlYWR9YCl9ZnVuY3Rpb24gYWsobil7Zm9yKGxldCBlPW4ubm9kZUFmdGVyLHQ9bi5wb3M7ZTtlPWUuZmlyc3RDaGlsZCx0Kyspe2NvbnN0IHI9ZS50eXBlLnNwZWMudGFibGVSb2xlO2lmKHI9PSJjZWxsInx8cj09ImhlYWRlcl9jZWxsIilyZXR1cm4gbi5kb2MucmVzb2x2ZSh0KX1mb3IobGV0IGU9bi5ub2RlQmVmb3JlLHQ9bi5wb3M7ZTtlPWUubGFzdENoaWxkLHQtLSl7Y29uc3Qgcj1lLnR5cGUuc3BlYy50YWJsZVJvbGU7aWYocj09ImNlbGwifHxyPT0iaGVhZGVyX2NlbGwiKXJldHVybiBuLmRvYy5yZXNvbHZlKHQtZS5ub2RlU2l6ZSl9fWZ1bmN0aW9uIFRhKG4pe3JldHVybiBuLnBhcmVudC50eXBlLnNwZWMudGFibGVSb2xlPT0icm93IiYmISFuLm5vZGVBZnRlcn1mdW5jdGlvbiBBZChuLGUpe3JldHVybiBuLmRlcHRoPT1lLmRlcHRoJiZuLnBvcz49ZS5zdGFydCgtMSkmJm4ucG9zPD1lLmVuZCgtMSl9ZnVuY3Rpb24gT2QobixlLHQpe2NvbnN0IHI9bi5ub2RlKC0xKSxzPW50LmdldChyKSxpPW4uc3RhcnQoLTEpLG89cy5uZXh0Q2VsbChuLnBvcy1pLGUsdCk7cmV0dXJuIG89PW51bGw/bnVsbDpuLm5vZGUoMCkucmVzb2x2ZShpK28pfWZ1bmN0aW9uIE1hKG4sZSx0PTEpe2NvbnN0IHI9ey4uLm4sY29sc3BhbjpuLmNvbHNwYW4tdH07cmV0dXJuIHIuY29sd2lkdGgmJihyLmNvbHdpZHRoPXIuY29sd2lkdGguc2xpY2UoKSxyLmNvbHdpZHRoLnNwbGljZShlLHQpLHIuY29sd2lkdGguc29tZShzPT5zPjApfHwoci5jb2x3aWR0aD1udWxsKSkscn12YXIgS2U9Y2xhc3MgWmUgZXh0ZW5kcyBJe2NvbnN0cnVjdG9yKGUsdD1lKXtjb25zdCByPWUubm9kZSgtMSkscz1udC5nZXQociksaT1lLnN0YXJ0KC0xKSxvPXMucmVjdEJldHdlZW4oZS5wb3MtaSx0LnBvcy1pKSxsPWUubm9kZSgwKSxhPXMuY2VsbHNJblJlY3QobykuZmlsdGVyKHU9PnUhPXQucG9zLWkpO2EudW5zaGlmdCh0LnBvcy1pKTtjb25zdCBjPWEubWFwKHU9Pntjb25zdCBkPXIubm9kZUF0KHUpO2lmKCFkKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7dX0gZm91bmRgKTtjb25zdCBoPWkrdSsxO3JldHVybiBuZXcgWGMobC5yZXNvbHZlKGgpLGwucmVzb2x2ZShoK2QuY29udGVudC5zaXplKSl9KTtzdXBlcihjWzBdLiRmcm9tLGNbMF0uJHRvLGMpLHRoaXMuJGFuY2hvckNlbGw9ZSx0aGlzLiRoZWFkQ2VsbD10fW1hcChlLHQpe2NvbnN0IHI9ZS5yZXNvbHZlKHQubWFwKHRoaXMuJGFuY2hvckNlbGwucG9zKSkscz1lLnJlc29sdmUodC5tYXAodGhpcy4kaGVhZENlbGwucG9zKSk7aWYoVGEocikmJlRhKHMpJiZBZChyLHMpKXtjb25zdCBpPXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSkhPXIubm9kZSgtMSk7cmV0dXJuIGkmJnRoaXMuaXNSb3dTZWxlY3Rpb24oKT9aZS5yb3dTZWxlY3Rpb24ocixzKTppJiZ0aGlzLmlzQ29sU2VsZWN0aW9uKCk/WmUuY29sU2VsZWN0aW9uKHIscyk6bmV3IFplKHIscyl9cmV0dXJuIEQuYmV0d2VlbihyLHMpfWNvbnRlbnQoKXtjb25zdCBlPXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSksdD1udC5nZXQoZSkscj10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxzPXQucmVjdEJldHdlZW4odGhpcy4kYW5jaG9yQ2VsbC5wb3Mtcix0aGlzLiRoZWFkQ2VsbC5wb3MtciksaT17fSxvPVtdO2ZvcihsZXQgYT1zLnRvcDthPHMuYm90dG9tO2ErKyl7Y29uc3QgYz1bXTtmb3IobGV0IHU9YSp0LndpZHRoK3MubGVmdCxkPXMubGVmdDtkPHMucmlnaHQ7ZCsrLHUrKyl7Y29uc3QgaD10Lm1hcFt1XTtpZihpW2hdKWNvbnRpbnVlO2lbaF09ITA7Y29uc3QgZj10LmZpbmRDZWxsKGgpO2xldCBwPWUubm9kZUF0KGgpO2lmKCFwKXRocm93IG5ldyBSYW5nZUVycm9yKGBObyBjZWxsIHdpdGggb2Zmc2V0ICR7aH0gZm91bmRgKTtjb25zdCBtPXMubGVmdC1mLmxlZnQsZz1mLnJpZ2h0LXMucmlnaHQ7aWYobT4wfHxnPjApe2xldCB5PXAuYXR0cnM7aWYobT4wJiYoeT1NYSh5LDAsbSkpLGc+MCYmKHk9TWEoeSx5LmNvbHNwYW4tZyxnKSksZi5sZWZ0PHMubGVmdCl7aWYocD1wLnR5cGUuY3JlYXRlQW5kRmlsbCh5KSwhcCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ291bGQgbm90IGNyZWF0ZSBjZWxsIHdpdGggYXR0cnMgJHtKU09OLnN0cmluZ2lmeSh5KX1gKX1lbHNlIHA9cC50eXBlLmNyZWF0ZSh5LHAuY29udGVudCl9aWYoZi50b3A8cy50b3B8fGYuYm90dG9tPnMuYm90dG9tKXtjb25zdCB5PXsuLi5wLmF0dHJzLHJvd3NwYW46TWF0aC5taW4oZi5ib3R0b20scy5ib3R0b20pLU1hdGgubWF4KGYudG9wLHMudG9wKX07Zi50b3A8cy50b3A/cD1wLnR5cGUuY3JlYXRlQW5kRmlsbCh5KTpwPXAudHlwZS5jcmVhdGUoeSxwLmNvbnRlbnQpfWMucHVzaChwKX1vLnB1c2goZS5jaGlsZChhKS5jb3B5KFMuZnJvbShjKSkpfWNvbnN0IGw9dGhpcy5pc0NvbFNlbGVjdGlvbigpJiZ0aGlzLmlzUm93U2VsZWN0aW9uKCk/ZTpvO3JldHVybiBuZXcgRShTLmZyb20obCksMSwxKX1yZXBsYWNlKGUsdD1FLmVtcHR5KXtjb25zdCByPWUuc3RlcHMubGVuZ3RoLHM9dGhpcy5yYW5nZXM7Zm9yKGxldCBvPTA7bzxzLmxlbmd0aDtvKyspe2NvbnN0eyRmcm9tOmwsJHRvOmF9PXNbb10sYz1lLm1hcHBpbmcuc2xpY2Uocik7ZS5yZXBsYWNlKGMubWFwKGwucG9zKSxjLm1hcChhLnBvcyksbz9FLmVtcHR5OnQpfWNvbnN0IGk9SS5maW5kRnJvbShlLmRvYy5yZXNvbHZlKGUubWFwcGluZy5zbGljZShyKS5tYXAodGhpcy50bykpLC0xKTtpJiZlLnNldFNlbGVjdGlvbihpKX1yZXBsYWNlV2l0aChlLHQpe3RoaXMucmVwbGFjZShlLG5ldyBFKFMuZnJvbSh0KSwwLDApKX1mb3JFYWNoQ2VsbChlKXtjb25zdCB0PXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSkscj1udC5nZXQodCkscz10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxpPXIuY2VsbHNJblJlY3Qoci5yZWN0QmV0d2Vlbih0aGlzLiRhbmNob3JDZWxsLnBvcy1zLHRoaXMuJGhlYWRDZWxsLnBvcy1zKSk7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspZSh0Lm5vZGVBdChpW29dKSxzK2lbb10pfWlzQ29sU2VsZWN0aW9uKCl7Y29uc3QgZT10aGlzLiRhbmNob3JDZWxsLmluZGV4KC0xKSx0PXRoaXMuJGhlYWRDZWxsLmluZGV4KC0xKTtpZihNYXRoLm1pbihlLHQpPjApcmV0dXJuITE7Y29uc3Qgcj1lK3RoaXMuJGFuY2hvckNlbGwubm9kZUFmdGVyLmF0dHJzLnJvd3NwYW4scz10K3RoaXMuJGhlYWRDZWxsLm5vZGVBZnRlci5hdHRycy5yb3dzcGFuO3JldHVybiBNYXRoLm1heChyLHMpPT10aGlzLiRoZWFkQ2VsbC5ub2RlKC0xKS5jaGlsZENvdW50fXN0YXRpYyBjb2xTZWxlY3Rpb24oZSx0PWUpe2NvbnN0IHI9ZS5ub2RlKC0xKSxzPW50LmdldChyKSxpPWUuc3RhcnQoLTEpLG89cy5maW5kQ2VsbChlLnBvcy1pKSxsPXMuZmluZENlbGwodC5wb3MtaSksYT1lLm5vZGUoMCk7cmV0dXJuIG8udG9wPD1sLnRvcD8oby50b3A+MCYmKGU9YS5yZXNvbHZlKGkrcy5tYXBbby5sZWZ0XSkpLGwuYm90dG9tPHMuaGVpZ2h0JiYodD1hLnJlc29sdmUoaStzLm1hcFtzLndpZHRoKihzLmhlaWdodC0xKStsLnJpZ2h0LTFdKSkpOihsLnRvcD4wJiYodD1hLnJlc29sdmUoaStzLm1hcFtsLmxlZnRdKSksby5ib3R0b208cy5oZWlnaHQmJihlPWEucmVzb2x2ZShpK3MubWFwW3Mud2lkdGgqKHMuaGVpZ2h0LTEpK28ucmlnaHQtMV0pKSksbmV3IFplKGUsdCl9aXNSb3dTZWxlY3Rpb24oKXtjb25zdCBlPXRoaXMuJGFuY2hvckNlbGwubm9kZSgtMSksdD1udC5nZXQoZSkscj10aGlzLiRhbmNob3JDZWxsLnN0YXJ0KC0xKSxzPXQuY29sQ291bnQodGhpcy4kYW5jaG9yQ2VsbC5wb3MtciksaT10LmNvbENvdW50KHRoaXMuJGhlYWRDZWxsLnBvcy1yKTtpZihNYXRoLm1pbihzLGkpPjApcmV0dXJuITE7Y29uc3Qgbz1zK3RoaXMuJGFuY2hvckNlbGwubm9kZUFmdGVyLmF0dHJzLmNvbHNwYW4sbD1pK3RoaXMuJGhlYWRDZWxsLm5vZGVBZnRlci5hdHRycy5jb2xzcGFuO3JldHVybiBNYXRoLm1heChvLGwpPT10LndpZHRofWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgWmUmJmUuJGFuY2hvckNlbGwucG9zPT10aGlzLiRhbmNob3JDZWxsLnBvcyYmZS4kaGVhZENlbGwucG9zPT10aGlzLiRoZWFkQ2VsbC5wb3N9c3RhdGljIHJvd1NlbGVjdGlvbihlLHQ9ZSl7Y29uc3Qgcj1lLm5vZGUoLTEpLHM9bnQuZ2V0KHIpLGk9ZS5zdGFydCgtMSksbz1zLmZpbmRDZWxsKGUucG9zLWkpLGw9cy5maW5kQ2VsbCh0LnBvcy1pKSxhPWUubm9kZSgwKTtyZXR1cm4gby5sZWZ0PD1sLmxlZnQ/KG8ubGVmdD4wJiYoZT1hLnJlc29sdmUoaStzLm1hcFtvLnRvcCpzLndpZHRoXSkpLGwucmlnaHQ8cy53aWR0aCYmKHQ9YS5yZXNvbHZlKGkrcy5tYXBbcy53aWR0aCoobC50b3ArMSktMV0pKSk6KGwubGVmdD4wJiYodD1hLnJlc29sdmUoaStzLm1hcFtsLnRvcCpzLndpZHRoXSkpLG8ucmlnaHQ8cy53aWR0aCYmKGU9YS5yZXNvbHZlKGkrcy5tYXBbcy53aWR0aCooby50b3ArMSktMV0pKSksbmV3IFplKGUsdCl9dG9KU09OKCl7cmV0dXJue3R5cGU6ImNlbGwiLGFuY2hvcjp0aGlzLiRhbmNob3JDZWxsLnBvcyxoZWFkOnRoaXMuJGhlYWRDZWxsLnBvc319c3RhdGljIGZyb21KU09OKGUsdCl7cmV0dXJuIG5ldyBaZShlLnJlc29sdmUodC5hbmNob3IpLGUucmVzb2x2ZSh0LmhlYWQpKX1zdGF0aWMgY3JlYXRlKGUsdCxyPXQpe3JldHVybiBuZXcgWmUoZS5yZXNvbHZlKHQpLGUucmVzb2x2ZShyKSl9Z2V0Qm9va21hcmsoKXtyZXR1cm4gbmV3IGNrKHRoaXMuJGFuY2hvckNlbGwucG9zLHRoaXMuJGhlYWRDZWxsLnBvcyl9fTtLZS5wcm90b3R5cGUudmlzaWJsZT0hMTtJLmpzb25JRCgiY2VsbCIsS2UpO3ZhciBjaz1jbGFzcyBOZHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuYW5jaG9yPWUsdGhpcy5oZWFkPXR9bWFwKGUpe3JldHVybiBuZXcgTmQoZS5tYXAodGhpcy5hbmNob3IpLGUubWFwKHRoaXMuaGVhZCkpfXJlc29sdmUoZSl7Y29uc3QgdD1lLnJlc29sdmUodGhpcy5hbmNob3IpLHI9ZS5yZXNvbHZlKHRoaXMuaGVhZCk7cmV0dXJuIHQucGFyZW50LnR5cGUuc3BlYy50YWJsZVJvbGU9PSJyb3ciJiZyLnBhcmVudC50eXBlLnNwZWMudGFibGVSb2xlPT0icm93IiYmdC5pbmRleCgpPHQucGFyZW50LmNoaWxkQ291bnQmJnIuaW5kZXgoKTxyLnBhcmVudC5jaGlsZENvdW50JiZBZCh0LHIpP25ldyBLZSh0LHIpOkkubmVhcihyLDEpfX07bmV3IHEoImZpeC10YWJsZXMiKTtmdW5jdGlvbiBSZChuKXtjb25zdCBlPW4uc2VsZWN0aW9uLHQ9bGsobikscj10Lm5vZGUoLTEpLHM9dC5zdGFydCgtMSksaT1udC5nZXQocik7cmV0dXJuey4uLmUgaW5zdGFuY2VvZiBLZT9pLnJlY3RCZXR3ZWVuKGUuJGFuY2hvckNlbGwucG9zLXMsZS4kaGVhZENlbGwucG9zLXMpOmkuZmluZENlbGwodC5wb3MtcyksdGFibGVTdGFydDpzLG1hcDppLHRhYmxlOnJ9fWZ1bmN0aW9uIHVrKG4pe3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCFFZChlKSlyZXR1cm4hMTtpZih0KXtjb25zdCByPVVvKGUuc2NoZW1hKSxzPVJkKGUpLGk9ZS50cixvPXMubWFwLmNlbGxzSW5SZWN0KG49PSJjb2x1bW4iP3tsZWZ0OnMubGVmdCx0b3A6MCxyaWdodDpzLnJpZ2h0LGJvdHRvbTpzLm1hcC5oZWlnaHR9Om49PSJyb3ciP3tsZWZ0OjAsdG9wOnMudG9wLHJpZ2h0OnMubWFwLndpZHRoLGJvdHRvbTpzLmJvdHRvbX06cyksbD1vLm1hcChhPT5zLnRhYmxlLm5vZGVBdChhKSk7Zm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKyspbFthXS50eXBlPT1yLmhlYWRlcl9jZWxsJiZpLnNldE5vZGVNYXJrdXAocy50YWJsZVN0YXJ0K29bYV0sci5jZWxsLGxbYV0uYXR0cnMpO2lmKGkuc3RlcHMubGVuZ3RoPT09MClmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErKylpLnNldE5vZGVNYXJrdXAocy50YWJsZVN0YXJ0K29bYV0sci5oZWFkZXJfY2VsbCxsW2FdLmF0dHJzKTt0KGkpfXJldHVybiEwfX1mdW5jdGlvbiBFYShuLGUsdCl7Y29uc3Qgcj1lLm1hcC5jZWxsc0luUmVjdCh7bGVmdDowLHRvcDowLHJpZ2h0Om49PSJyb3ciP2UubWFwLndpZHRoOjEsYm90dG9tOm49PSJjb2x1bW4iP2UubWFwLmhlaWdodDoxfSk7Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspe2NvbnN0IGk9ZS50YWJsZS5ub2RlQXQocltzXSk7aWYoaSYmaS50eXBlIT09dC5oZWFkZXJfY2VsbClyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBqbyhuLGUpe3JldHVybiBlPWV8fHt1c2VEZXByZWNhdGVkTG9naWM6ITF9LGUudXNlRGVwcmVjYXRlZExvZ2ljP3VrKG4pOmZ1bmN0aW9uKHQscil7aWYoIUVkKHQpKXJldHVybiExO2lmKHIpe2NvbnN0IHM9VW8odC5zY2hlbWEpLGk9UmQodCksbz10LnRyLGw9RWEoInJvdyIsaSxzKSxhPUVhKCJjb2x1bW4iLGkscyksYz0obj09PSJjb2x1bW4iP2w6bj09PSJyb3ciJiZhKT8xOjAsdT1uPT0iY29sdW1uIj97bGVmdDowLHRvcDpjLHJpZ2h0OjEsYm90dG9tOmkubWFwLmhlaWdodH06bj09InJvdyI/e2xlZnQ6Yyx0b3A6MCxyaWdodDppLm1hcC53aWR0aCxib3R0b206MX06aSxkPW49PSJjb2x1bW4iP2E/cy5jZWxsOnMuaGVhZGVyX2NlbGw6bj09InJvdyI/bD9zLmNlbGw6cy5oZWFkZXJfY2VsbDpzLmNlbGw7aS5tYXAuY2VsbHNJblJlY3QodSkuZm9yRWFjaChoPT57Y29uc3QgZj1oK2kudGFibGVTdGFydCxwPW8uZG9jLm5vZGVBdChmKTtwJiZvLnNldE5vZGVNYXJrdXAoZixkLHAuYXR0cnMpfSkscihvKX1yZXR1cm4hMH19am8oInJvdyIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pO2pvKCJjb2x1bW4iLHt1c2VEZXByZWNhdGVkTG9naWM6ITB9KTtqbygiY2VsbCIse3VzZURlcHJlY2F0ZWRMb2dpYzohMH0pO2Z1bmN0aW9uIGJyKG4sZSl7Y29uc3QgdD1uLnNlbGVjdGlvbjtpZighKHQgaW5zdGFuY2VvZiBLZSkpcmV0dXJuITE7aWYoZSl7Y29uc3Qgcj1uLnRyLHM9VW8obi5zY2hlbWEpLmNlbGwuY3JlYXRlQW5kRmlsbCgpLmNvbnRlbnQ7dC5mb3JFYWNoQ2VsbCgoaSxvKT0+e2kuY29udGVudC5lcShzKXx8ci5yZXBsYWNlKHIubWFwcGluZy5tYXAobysxKSxyLm1hcHBpbmcubWFwKG8raS5ub2RlU2l6ZS0xKSxuZXcgRShzLDAsMCkpfSksci5kb2NDaGFuZ2VkJiZlKHIpfXJldHVybiEwfU5vKHtBcnJvd0xlZnQ6eHIoImhvcml6IiwtMSksQXJyb3dSaWdodDp4cigiaG9yaXoiLDEpLEFycm93VXA6eHIoInZlcnQiLC0xKSxBcnJvd0Rvd246eHIoInZlcnQiLDEpLCJTaGlmdC1BcnJvd0xlZnQiOndyKCJob3JpeiIsLTEpLCJTaGlmdC1BcnJvd1JpZ2h0Ijp3cigiaG9yaXoiLDEpLCJTaGlmdC1BcnJvd1VwIjp3cigidmVydCIsLTEpLCJTaGlmdC1BcnJvd0Rvd24iOndyKCJ2ZXJ0IiwxKSxCYWNrc3BhY2U6YnIsIk1vZC1CYWNrc3BhY2UiOmJyLERlbGV0ZTpiciwiTW9kLURlbGV0ZSI6YnJ9KTtmdW5jdGlvbiBEcihuLGUsdCl7cmV0dXJuIHQuZXEobi5zZWxlY3Rpb24pPyExOihlJiZlKG4udHIuc2V0U2VsZWN0aW9uKHQpLnNjcm9sbEludG9WaWV3KCkpLCEwKX1mdW5jdGlvbiB4cihuLGUpe3JldHVybih0LHIscyk9PntpZighcylyZXR1cm4hMTtjb25zdCBpPXQuc2VsZWN0aW9uO2lmKGkgaW5zdGFuY2VvZiBLZSlyZXR1cm4gRHIodCxyLEkubmVhcihpLiRoZWFkQ2VsbCxlKSk7aWYobiE9Imhvcml6IiYmIWkuZW1wdHkpcmV0dXJuITE7Y29uc3Qgbz1JZChzLG4sZSk7aWYobz09bnVsbClyZXR1cm4hMTtpZihuPT0iaG9yaXoiKXJldHVybiBEcih0LHIsSS5uZWFyKHQuZG9jLnJlc29sdmUoaS5oZWFkK2UpLGUpKTt7Y29uc3QgbD10LmRvYy5yZXNvbHZlKG8pLGE9T2QobCxuLGUpO2xldCBjO3JldHVybiBhP2M9SS5uZWFyKGEsMSk6ZTwwP2M9SS5uZWFyKHQuZG9jLnJlc29sdmUobC5iZWZvcmUoLTEpKSwtMSk6Yz1JLm5lYXIodC5kb2MucmVzb2x2ZShsLmFmdGVyKC0xKSksMSksRHIodCxyLGMpfX19ZnVuY3Rpb24gd3IobixlKXtyZXR1cm4odCxyLHMpPT57aWYoIXMpcmV0dXJuITE7Y29uc3QgaT10LnNlbGVjdGlvbjtsZXQgbztpZihpIGluc3RhbmNlb2YgS2Upbz1pO2Vsc2V7Y29uc3QgYT1JZChzLG4sZSk7aWYoYT09bnVsbClyZXR1cm4hMTtvPW5ldyBLZSh0LmRvYy5yZXNvbHZlKGEpKX1jb25zdCBsPU9kKG8uJGhlYWRDZWxsLG4sZSk7cmV0dXJuIGw/RHIodCxyLG5ldyBLZShvLiRhbmNob3JDZWxsLGwpKTohMX19ZnVuY3Rpb24gSWQobixlLHQpe2lmKCEobi5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBEKSlyZXR1cm4gbnVsbDtjb25zdHskaGVhZDpyfT1uLnN0YXRlLnNlbGVjdGlvbjtmb3IobGV0IHM9ci5kZXB0aC0xO3M+PTA7cy0tKXtjb25zdCBpPXIubm9kZShzKTtpZigodDwwP3IuaW5kZXgocyk6ci5pbmRleEFmdGVyKHMpKSE9KHQ8MD8wOmkuY2hpbGRDb3VudCkpcmV0dXJuIG51bGw7aWYoaS50eXBlLnNwZWMudGFibGVSb2xlPT0iY2VsbCJ8fGkudHlwZS5zcGVjLnRhYmxlUm9sZT09ImhlYWRlcl9jZWxsIil7Y29uc3Qgbz1yLmJlZm9yZShzKSxsPWU9PSJ2ZXJ0Ij90PjA/ImRvd24iOiJ1cCI6dD4wPyJyaWdodCI6ImxlZnQiO3JldHVybiBuLmVuZE9mVGV4dGJsb2NrKGwpP286bnVsbH19cmV0dXJuIG51bGx9bmV3IHEoInRhYmxlQ29sdW1uUmVzaXppbmciKTtmdW5jdGlvbiBkayhuLGUpe2NvbnN0IHQ9TWF0aC5taW4obi50b3AsZS50b3ApLHI9TWF0aC5tYXgobi5ib3R0b20sZS5ib3R0b20pLHM9TWF0aC5taW4obi5sZWZ0LGUubGVmdCksbz1NYXRoLm1heChuLnJpZ2h0LGUucmlnaHQpLXMsbD1yLXQsYT1zLGM9dDtyZXR1cm4gbmV3IERPTVJlY3QoYSxjLG8sbCl9dmFyIGhrPWNsYXNze2NvbnN0cnVjdG9yKHtlZGl0b3I6bixlbGVtZW50OmUsdmlldzp0LHBsdWdpbktleTpyPSJidWJibGVNZW51Iix1cGRhdGVEZWxheTpzPTI1MCxyZXNpemVEZWxheTppPTYwLHNob3VsZFNob3c6byxhcHBlbmRUbzpsLGdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudDphLG9wdGlvbnM6Y30pe3RoaXMucHJldmVudEhpZGU9ITEsdGhpcy5pc1Zpc2libGU9ITEsdGhpcy5zY3JvbGxUYXJnZXQ9d2luZG93LHRoaXMuZmxvYXRpbmdVSU9wdGlvbnM9e3N0cmF0ZWd5OiJhYnNvbHV0ZSIscGxhY2VtZW50OiJ0b3AiLG9mZnNldDo4LGZsaXA6e30sc2hpZnQ6e30sYXJyb3c6ITEsc2l6ZTohMSxhdXRvUGxhY2VtZW50OiExLGhpZGU6ITEsaW5saW5lOiExLG9uU2hvdzp2b2lkIDAsb25IaWRlOnZvaWQgMCxvblVwZGF0ZTp2b2lkIDAsb25EZXN0cm95OnZvaWQgMH0sdGhpcy5zaG91bGRTaG93PSh7dmlldzpkLHN0YXRlOmgsZnJvbTpmLHRvOnB9KT0+e2NvbnN0e2RvYzptLHNlbGVjdGlvbjpnfT1oLHtlbXB0eTp5fT1nLGs9IW0udGV4dEJldHdlZW4oZixwKS5sZW5ndGgmJkxvKGguc2VsZWN0aW9uKSxiPXRoaXMuZWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtyZXR1cm4hKCEoZC5oYXNGb2N1cygpfHxiKXx8eXx8a3x8IXRoaXMuZWRpdG9yLmlzRWRpdGFibGUpfSx0aGlzLm1vdXNlZG93bkhhbmRsZXI9KCk9Pnt0aGlzLnByZXZlbnRIaWRlPSEwfSx0aGlzLmRyYWdzdGFydEhhbmRsZXI9KCk9Pnt0aGlzLmhpZGUoKX0sdGhpcy5yZXNpemVIYW5kbGVyPSgpPT57dGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyKSx0aGlzLnJlc2l6ZURlYm91bmNlVGltZXI9d2luZG93LnNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9LHRoaXMucmVzaXplRGVsYXkpfSx0aGlzLmZvY3VzSGFuZGxlcj0oKT0+e3NldFRpbWVvdXQoKCk9PnRoaXMudXBkYXRlKHRoaXMuZWRpdG9yLnZpZXcpKX0sdGhpcy5ibHVySGFuZGxlcj0oe2V2ZW50OmR9KT0+e3ZhciBoO2lmKHRoaXMuZWRpdG9yLmlzRGVzdHJveWVkKXt0aGlzLmRlc3Ryb3koKTtyZXR1cm59aWYodGhpcy5wcmV2ZW50SGlkZSl7dGhpcy5wcmV2ZW50SGlkZT0hMTtyZXR1cm59ZD8ucmVsYXRlZFRhcmdldCYmKChoPXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKSE9bnVsbCYmaC5jb250YWlucyhkLnJlbGF0ZWRUYXJnZXQpKXx8ZD8ucmVsYXRlZFRhcmdldCE9PXRoaXMuZWRpdG9yLnZpZXcuZG9tJiZ0aGlzLmhpZGUoKX0sdGhpcy5oYW5kbGVEZWJvdW5jZWRVcGRhdGU9KGQsaCk9Pntjb25zdCBmPSFoPy5zZWxlY3Rpb24uZXEoZC5zdGF0ZS5zZWxlY3Rpb24pLHA9IWg/LmRvYy5lcShkLnN0YXRlLmRvYyk7IWYmJiFwfHwodGhpcy51cGRhdGVEZWJvdW5jZVRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy51cGRhdGVEZWJvdW5jZVRpbWVyKSx0aGlzLnVwZGF0ZURlYm91bmNlVGltZXI9d2luZG93LnNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZUhhbmRsZXIoZCxmLHAsaCl9LHRoaXMudXBkYXRlRGVsYXkpKX0sdGhpcy51cGRhdGVIYW5kbGVyPShkLGgsZixwKT0+e2NvbnN0e2NvbXBvc2luZzptfT1kO2lmKG18fCFoJiYhZilyZXR1cm47aWYoIXRoaXMuZ2V0U2hvdWxkU2hvdyhwKSl7dGhpcy5oaWRlKCk7cmV0dXJufXRoaXMuc2hvdygpLHRoaXMudXBkYXRlUG9zaXRpb24oKX0sdGhpcy50cmFuc2FjdGlvbkhhbmRsZXI9KHt0cmFuc2FjdGlvbjpkfSk9Pntjb25zdCBoPWQuZ2V0TWV0YSh0aGlzLnBsdWdpbktleSk7aD09PSJ1cGRhdGVQb3NpdGlvbiI/dGhpcy51cGRhdGVQb3NpdGlvbigpOmgmJnR5cGVvZiBoPT0ib2JqZWN0IiYmaC50eXBlPT09InVwZGF0ZU9wdGlvbnMiP3RoaXMudXBkYXRlT3B0aW9ucyhoLm9wdGlvbnMpOmg9PT0iaGlkZSI/dGhpcy5oaWRlKCk6aD09PSJzaG93IiYmKHRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLnNob3coKSl9O3ZhciB1O3RoaXMuZWRpdG9yPW4sdGhpcy5lbGVtZW50PWUsdGhpcy52aWV3PXQsdGhpcy5wbHVnaW5LZXk9cix0aGlzLnVwZGF0ZURlbGF5PXMsdGhpcy5yZXNpemVEZWxheT1pLHRoaXMuYXBwZW5kVG89bCx0aGlzLnNjcm9sbFRhcmdldD0odT1jPy5zY3JvbGxUYXJnZXQpIT1udWxsP3U6d2luZG93LHRoaXMuZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50PWEsdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5jfSx0aGlzLmVsZW1lbnQudGFiSW5kZXg9MCxvJiYodGhpcy5zaG91bGRTaG93PW8pLHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMubW91c2Vkb3duSGFuZGxlcix7Y2FwdHVyZTohMH0pLHRoaXMudmlldy5kb20uYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iix0aGlzLmRyYWdzdGFydEhhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJmb2N1cyIsdGhpcy5mb2N1c0hhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vbigidHJhbnNhY3Rpb24iLHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnVwZGF0ZSh0LHQuc3RhdGUpLHRoaXMuZ2V0U2hvdWxkU2hvdygpJiYodGhpcy5zaG93KCksdGhpcy51cGRhdGVQb3NpdGlvbigpKX1nZXQgbWlkZGxld2FyZXMoKXtjb25zdCBuPVtdO3JldHVybiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXAmJm4ucHVzaChzYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwIT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5mbGlwOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQmJm4ucHVzaChpYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdCE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2hpZnQ6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQmJm4ucHVzaChvYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vZmZzZXQhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9mZnNldDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmFycm93JiZuLnB1c2gobGModGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hcnJvdykpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZSYmbi5wdXNoKGFjKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemUhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNpemU6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50JiZuLnB1c2goY2ModHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXV0b1BsYWNlbWVudCE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXV0b1BsYWNlbWVudDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGUmJm4ucHVzaCh1Yyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlIT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5oaWRlOnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lJiZuLnB1c2goZGModHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaW5saW5lIT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5pbmxpbmU6dm9pZCAwKSksbn1nZXQgdmlydHVhbEVsZW1lbnQoKXt2YXIgbixlLHQ7Y29uc3R7c2VsZWN0aW9uOnJ9PXRoaXMuZWRpdG9yLnN0YXRlLHM9KG49dGhpcy5nZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpuLmNhbGwodGhpcyk7aWYocylyZXR1cm4gcztpZighKCh0PShlPXRoaXMudmlldyk9PW51bGw/dm9pZCAwOmUuZG9tKSE9bnVsbCYmdC5wYXJlbnROb2RlKSlyZXR1cm47Y29uc3QgaT1jZCh0aGlzLnZpZXcsci5mcm9tLHIudG8pO2xldCBvPXtnZXRCb3VuZGluZ0NsaWVudFJlY3Q6KCk9PmksZ2V0Q2xpZW50UmVjdHM6KCk9PltpXX07aWYociBpbnN0YW5jZW9mIE4pe2xldCBsPXRoaXMudmlldy5ub2RlRE9NKHIuZnJvbSk7Y29uc3QgYT1sLmRhdGFzZXQubm9kZVZpZXdXcmFwcGVyP2w6bC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1ub2RlLXZpZXctd3JhcHBlcl0iKTthJiYobD1hKSxsJiYobz17Z2V0Qm91bmRpbmdDbGllbnRSZWN0OigpPT5sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGdldENsaWVudFJlY3RzOigpPT5bbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKV19KX1pZihyIGluc3RhbmNlb2YgS2Upe2NvbnN0eyRhbmNob3JDZWxsOmwsJGhlYWRDZWxsOmF9PXIsYz1sP2wucG9zOmEucG9zLHU9YT9hLnBvczpsLnBvcyxkPXRoaXMudmlldy5ub2RlRE9NKGMpLGg9dGhpcy52aWV3Lm5vZGVET00odSk7aWYoIWR8fCFoKXJldHVybjtjb25zdCBmPWQ9PT1oP2QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6ZGsoZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtvPXtnZXRCb3VuZGluZ0NsaWVudFJlY3Q6KCk9PmYsZ2V0Q2xpZW50UmVjdHM6KCk9PltmXX19cmV0dXJuIG99dXBkYXRlUG9zaXRpb24oKXtpZighdGhpcy5pc1Zpc2libGUpcmV0dXJuO2NvbnN0IG49dGhpcy52aXJ0dWFsRWxlbWVudDtuJiZoYyhuLHRoaXMuZWxlbWVudCx7cGxhY2VtZW50OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMucGxhY2VtZW50LHN0cmF0ZWd5OnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc3RyYXRlZ3ksbWlkZGxld2FyZTp0aGlzLm1pZGRsZXdhcmVzfSkudGhlbigoe3g6ZSx5OnQsc3RyYXRlZ3k6cixtaWRkbGV3YXJlRGF0YTpzfSk9Pnt2YXIgaSxvO2lmKCEoIXRoaXMuaXNWaXNpYmxlfHx0aGlzLmVkaXRvci5pc0Rlc3Ryb3llZHx8IXRoaXMuZWxlbWVudC5pc0Nvbm5lY3RlZCkpe2lmKChpPXMuaGlkZSkhPW51bGwmJmkucmVmZXJlbmNlSGlkZGVufHwobz1zLmhpZGUpIT1udWxsJiZvLmVzY2FwZWQpe3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO3JldHVybn10aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoPSJtYXgtY29udGVudCIsdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uPXIsdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQ9YCR7ZX1weGAsdGhpcy5lbGVtZW50LnN0eWxlLnRvcD1gJHt0fXB4YCx0aGlzLmlzVmlzaWJsZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblVwZGF0ZSgpfX0pfXVwZGF0ZShuLGUpe2NvbnN0e3N0YXRlOnR9PW4scj10LnNlbGVjdGlvbi5mcm9tIT09dC5zZWxlY3Rpb24udG87aWYodGhpcy51cGRhdGVEZWxheT4wJiZyKXt0aGlzLmhhbmRsZURlYm91bmNlZFVwZGF0ZShuLGUpO3JldHVybn1jb25zdCBzPSFlPy5zZWxlY3Rpb24uZXEobi5zdGF0ZS5zZWxlY3Rpb24pLGk9IWU/LmRvYy5lcShuLnN0YXRlLmRvYyk7dGhpcy51cGRhdGVIYW5kbGVyKG4scyxpLGUpfWdldFNob3VsZFNob3cobil7dmFyIGU7Y29uc3R7c3RhdGU6dH09dGhpcy52aWV3LHtzZWxlY3Rpb246cn09dCx7cmFuZ2VzOnN9PXIsaT1NYXRoLm1pbiguLi5zLm1hcChhPT5hLiRmcm9tLnBvcykpLG89TWF0aC5tYXgoLi4ucy5tYXAoYT0+YS4kdG8ucG9zKSk7cmV0dXJuKChlPXRoaXMuc2hvdWxkU2hvdyk9PW51bGw/dm9pZCAwOmUuY2FsbCh0aGlzLHtlZGl0b3I6dGhpcy5lZGl0b3IsZWxlbWVudDp0aGlzLmVsZW1lbnQsdmlldzp0aGlzLnZpZXcsc3RhdGU6dCxvbGRTdGF0ZTpuLGZyb206aSx0bzpvfSkpfHwhMX1zaG93KCl7dmFyIG47aWYodGhpcy5pc1Zpc2libGUpcmV0dXJuO3RoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLmVsZW1lbnQuc3R5bGUub3BhY2l0eT0iMSI7Y29uc3QgZT10eXBlb2YgdGhpcy5hcHBlbmRUbz09ImZ1bmN0aW9uIj90aGlzLmFwcGVuZFRvKCk6dGhpcy5hcHBlbmRUbzsobj1lPz90aGlzLnZpZXcuZG9tLnBhcmVudEVsZW1lbnQpPT1udWxsfHxuLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vblNob3cmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25TaG93KCksdGhpcy5pc1Zpc2libGU9ITB9aGlkZSgpe3RoaXMuaXNWaXNpYmxlJiYodGhpcy5lbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5lbGVtZW50LnN0eWxlLm9wYWNpdHk9IjAiLHRoaXMuZWxlbWVudC5yZW1vdmUoKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uSGlkZSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkhpZGUoKSx0aGlzLmlzVmlzaWJsZT0hMSl9dXBkYXRlT3B0aW9ucyhuKXt2YXIgZTtpZihuLnVwZGF0ZURlbGF5IT09dm9pZCAwJiYodGhpcy51cGRhdGVEZWxheT1uLnVwZGF0ZURlbGF5KSxuLnJlc2l6ZURlbGF5IT09dm9pZCAwJiYodGhpcy5yZXNpemVEZWxheT1uLnJlc2l6ZURlbGF5KSxuLmFwcGVuZFRvIT09dm9pZCAwJiYodGhpcy5hcHBlbmRUbz1uLmFwcGVuZFRvKSxuLmdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudCE9PXZvaWQgMCYmKHRoaXMuZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50PW4uZ2V0UmVmZXJlbmNlZFZpcnR1YWxFbGVtZW50KSxuLnNob3VsZFNob3chPT12b2lkIDAmJm4uc2hvdWxkU2hvdyYmKHRoaXMuc2hvdWxkU2hvdz1uLnNob3VsZFNob3cpLG4ub3B0aW9ucyE9PXZvaWQgMCl7Y29uc3QgdD0oZT1uLm9wdGlvbnMuc2Nyb2xsVGFyZ2V0KSE9bnVsbD9lOndpbmRvdzt0IT09dGhpcy5zY3JvbGxUYXJnZXQmJih0aGlzLnNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQ9dCx0aGlzLnNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMucmVzaXplSGFuZGxlcikpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnM9ey4uLnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMsLi4ubi5vcHRpb25zfX19ZGVzdHJveSgpe3RoaXMuaGlkZSgpLHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMubW91c2Vkb3duSGFuZGxlcix7Y2FwdHVyZTohMH0pLHRoaXMudmlldy5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iix0aGlzLmRyYWdzdGFydEhhbmRsZXIpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuZWRpdG9yLm9mZigiZm9jdXMiLHRoaXMuZm9jdXNIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoImJsdXIiLHRoaXMuYmx1ckhhbmRsZXIpLHRoaXMuZWRpdG9yLm9mZigidHJhbnNhY3Rpb24iLHRoaXMudHJhbnNhY3Rpb25IYW5kbGVyKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uRGVzdHJveSYmdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkRlc3Ryb3koKX19LGZrPW49Pm5ldyBHKHtrZXk6dHlwZW9mIG4ucGx1Z2luS2V5PT0ic3RyaW5nIj9uZXcgcShuLnBsdWdpbktleSk6bi5wbHVnaW5LZXksdmlldzplPT5uZXcgaGsoe3ZpZXc6ZSwuLi5ufSl9KSxwaz1ycih7bmFtZToiQnViYmxlTWVudSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntwbHVnaW5LZXk6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxlZGl0b3I6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfSx1cGRhdGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDp2b2lkIDB9LHJlc2l6ZURlbGF5Ont0eXBlOk51bWJlcixkZWZhdWx0OnZvaWQgMH0sb3B0aW9uczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0sYXBwZW5kVG86e3R5cGU6W09iamVjdCxGdW5jdGlvbl0sZGVmYXVsdDp2b2lkIDB9LHNob3VsZFNob3c6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpudWxsfSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDp2b2lkIDB9fSxzZXR1cChuLHtzbG90czplLGF0dHJzOnR9KXt2YXIgcjtjb25zdCBzPVJlKG51bGwpLGk9KHI9bi5wbHVnaW5LZXkpIT1udWxsP3I6bmV3IHEoImJ1YmJsZU1lbnUiKTtyZXR1cm4gY28oKCk9Pntjb25zdHtlZGl0b3I6byxvcHRpb25zOmwscmVzaXplRGVsYXk6YSxhcHBlbmRUbzpjLHNob3VsZFNob3c6dSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6ZCx1cGRhdGVEZWxheTpofT1uLGY9cy52YWx1ZTtmJiYoZi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGYuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixmLnJlbW92ZSgpLHJjKCgpPT57by5yZWdpc3RlclBsdWdpbihmayh7ZWRpdG9yOm8sZWxlbWVudDpmLG9wdGlvbnM6bCxwbHVnaW5LZXk6aSxyZXNpemVEZWxheTphLGFwcGVuZFRvOmMsc2hvdWxkU2hvdzp1LGdldFJlZmVyZW5jZWRWaXJ0dWFsRWxlbWVudDpkLHVwZGF0ZURlbGF5Omh9KSl9KSl9KSxPcygoKT0+e2NvbnN0e2VkaXRvcjpvfT1uO28udW5yZWdpc3RlclBsdWdpbihpKX0pLCgpPT57dmFyIG87cmV0dXJuIHVvKCJkaXYiLHtyZWY6cywuLi50fSwobz1lLmRlZmF1bHQpPT1udWxsP3ZvaWQgMDpvLmNhbGwoZSkpfX19KSxtaz1jbGFzc3tjb25zdHJ1Y3Rvcih7ZWRpdG9yOm4sZWxlbWVudDplLHZpZXc6dCxwbHVnaW5LZXk6cj0iZmxvYXRpbmdNZW51Iix1cGRhdGVEZWxheTpzPTI1MCxyZXNpemVEZWxheTppPTYwLG9wdGlvbnM6byxhcHBlbmRUbzpsLHNob3VsZFNob3c6YX0pe3RoaXMucHJldmVudEhpZGU9ITEsdGhpcy5pc1Zpc2libGU9ITEsdGhpcy5zY3JvbGxUYXJnZXQ9d2luZG93LHRoaXMuc2hvdWxkU2hvdz0oe3ZpZXc6dSxzdGF0ZTpkfSk9Pntjb25zdHtzZWxlY3Rpb246aH09ZCx7JGFuY2hvcjpmLGVtcHR5OnB9PWgsbT1mLmRlcHRoPT09MSxnPWYucGFyZW50LmlzVGV4dGJsb2NrJiYhZi5wYXJlbnQudHlwZS5zcGVjLmNvZGUmJiFmLnBhcmVudC50ZXh0Q29udGVudCYmZi5wYXJlbnQuY2hpbGRDb3VudD09PTAmJiF0aGlzLmdldFRleHRDb250ZW50KGYucGFyZW50KTtyZXR1cm4hKCF1Lmhhc0ZvY3VzKCl8fCFwfHwhbXx8IWd8fCF0aGlzLmVkaXRvci5pc0VkaXRhYmxlKX0sdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17c3RyYXRlZ3k6ImFic29sdXRlIixwbGFjZW1lbnQ6InJpZ2h0IixvZmZzZXQ6OCxmbGlwOnt9LHNoaWZ0Ont9LGFycm93OiExLHNpemU6ITEsYXV0b1BsYWNlbWVudDohMSxoaWRlOiExLGlubGluZTohMX0sdGhpcy51cGRhdGVIYW5kbGVyPSh1LGQsaCxmKT0+e2NvbnN0e2NvbXBvc2luZzpwfT11O2lmKHB8fCFkJiYhaClyZXR1cm47aWYoIXRoaXMuZ2V0U2hvdWxkU2hvdyhmKSl7dGhpcy5oaWRlKCk7cmV0dXJufXRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLnNob3coKX0sdGhpcy5tb3VzZWRvd25IYW5kbGVyPSgpPT57dGhpcy5wcmV2ZW50SGlkZT0hMH0sdGhpcy5mb2N1c0hhbmRsZXI9KCk9PntzZXRUaW1lb3V0KCgpPT50aGlzLnVwZGF0ZSh0aGlzLmVkaXRvci52aWV3KSl9LHRoaXMuYmx1ckhhbmRsZXI9KHtldmVudDp1fSk9Pnt2YXIgZDtpZih0aGlzLnByZXZlbnRIaWRlKXt0aGlzLnByZXZlbnRIaWRlPSExO3JldHVybn11Py5yZWxhdGVkVGFyZ2V0JiYoKGQ9dGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIT1udWxsJiZkLmNvbnRhaW5zKHUucmVsYXRlZFRhcmdldCkpfHx1Py5yZWxhdGVkVGFyZ2V0IT09dGhpcy5lZGl0b3Iudmlldy5kb20mJnRoaXMuaGlkZSgpfSx0aGlzLnRyYW5zYWN0aW9uSGFuZGxlcj0oe3RyYW5zYWN0aW9uOnV9KT0+e2NvbnN0IGQ9dS5nZXRNZXRhKHRoaXMucGx1Z2luS2V5KTtkPT09InVwZGF0ZVBvc2l0aW9uIj90aGlzLnVwZGF0ZVBvc2l0aW9uKCk6ZCYmdHlwZW9mIGQ9PSJvYmplY3QiJiZkLnR5cGU9PT0idXBkYXRlT3B0aW9ucyI/dGhpcy51cGRhdGVPcHRpb25zKGQub3B0aW9ucyk6ZD09PSJoaWRlIj90aGlzLmhpZGUoKTpkPT09InNob3ciJiYodGhpcy51cGRhdGVQb3NpdGlvbigpLHRoaXMuc2hvdygpKX0sdGhpcy5yZXNpemVIYW5kbGVyPSgpPT57dGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5yZXNpemVEZWJvdW5jZVRpbWVyKSx0aGlzLnJlc2l6ZURlYm91bmNlVGltZXI9d2luZG93LnNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9LHRoaXMucmVzaXplRGVsYXkpfTt2YXIgYzt0aGlzLmVkaXRvcj1uLHRoaXMuZWxlbWVudD1lLHRoaXMudmlldz10LHRoaXMucGx1Z2luS2V5PXIsdGhpcy51cGRhdGVEZWxheT1zLHRoaXMucmVzaXplRGVsYXk9aSx0aGlzLmFwcGVuZFRvPWwsdGhpcy5zY3JvbGxUYXJnZXQ9KGM9bz8uc2Nyb2xsVGFyZ2V0KSE9bnVsbD9jOndpbmRvdyx0aGlzLmZsb2F0aW5nVUlPcHRpb25zPXsuLi50aGlzLmZsb2F0aW5nVUlPcHRpb25zLC4uLm99LHRoaXMuZWxlbWVudC50YWJJbmRleD0wLGEmJih0aGlzLnNob3VsZFNob3c9YSksdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5tb3VzZWRvd25IYW5kbGVyLHtjYXB0dXJlOiEwfSksdGhpcy5lZGl0b3Iub24oImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub24oImJsdXIiLHRoaXMuYmx1ckhhbmRsZXIpLHRoaXMuZWRpdG9yLm9uKCJ0cmFuc2FjdGlvbiIsdGhpcy50cmFuc2FjdGlvbkhhbmRsZXIpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVzaXplSGFuZGxlciksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMudXBkYXRlKHQsdC5zdGF0ZSksdGhpcy5nZXRTaG91bGRTaG93KCkmJih0aGlzLnNob3coKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpfWdldFRleHRDb250ZW50KG4pe3JldHVybiByZChuLHt0ZXh0U2VyaWFsaXplcnM6JG8odGhpcy5lZGl0b3Iuc2NoZW1hKX0pfWdldCBtaWRkbGV3YXJlcygpe2NvbnN0IG49W107cmV0dXJuIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuZmxpcCYmbi5wdXNoKHNjKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXAhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmZsaXA6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdCYmbi5wdXNoKGljKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnNoaWZ0IT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaGlmdDp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9mZnNldCYmbi5wdXNoKG9jKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9mZnNldCE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMub2Zmc2V0OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuYXJyb3cmJm4ucHVzaChsYyh0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmFycm93KSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5zaXplJiZuLnB1c2goYWModHlwZW9mIHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZSE9ImJvb2xlYW4iP3RoaXMuZmxvYXRpbmdVSU9wdGlvbnMuc2l6ZTp2b2lkIDApKSx0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmF1dG9QbGFjZW1lbnQmJm4ucHVzaChjYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50IT0iYm9vbGVhbiI/dGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5hdXRvUGxhY2VtZW50OnZvaWQgMCkpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMuaGlkZSYmbi5wdXNoKHVjKHR5cGVvZiB0aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGUhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmhpZGU6dm9pZCAwKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5pbmxpbmUmJm4ucHVzaChkYyh0eXBlb2YgdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5pbmxpbmUhPSJib29sZWFuIj90aGlzLmZsb2F0aW5nVUlPcHRpb25zLmlubGluZTp2b2lkIDApKSxufWdldFNob3VsZFNob3cobil7dmFyIGU7Y29uc3R7c3RhdGU6dH09dGhpcy52aWV3LHtzZWxlY3Rpb246cn09dCx7cmFuZ2VzOnN9PXIsaT1NYXRoLm1pbiguLi5zLm1hcChhPT5hLiRmcm9tLnBvcykpLG89TWF0aC5tYXgoLi4ucy5tYXAoYT0+YS4kdG8ucG9zKSk7cmV0dXJuKGU9dGhpcy5zaG91bGRTaG93KT09bnVsbD92b2lkIDA6ZS5jYWxsKHRoaXMse2VkaXRvcjp0aGlzLmVkaXRvcix2aWV3OnRoaXMudmlldyxzdGF0ZTp0LG9sZFN0YXRlOm4sZnJvbTppLHRvOm99KX11cGRhdGVPcHRpb25zKG4pe3ZhciBlO2lmKG4udXBkYXRlRGVsYXkhPT12b2lkIDAmJih0aGlzLnVwZGF0ZURlbGF5PW4udXBkYXRlRGVsYXkpLG4ucmVzaXplRGVsYXkhPT12b2lkIDAmJih0aGlzLnJlc2l6ZURlbGF5PW4ucmVzaXplRGVsYXkpLG4uYXBwZW5kVG8hPT12b2lkIDAmJih0aGlzLmFwcGVuZFRvPW4uYXBwZW5kVG8pLG4uc2hvdWxkU2hvdyE9PXZvaWQgMCYmbi5zaG91bGRTaG93JiYodGhpcy5zaG91bGRTaG93PW4uc2hvdWxkU2hvdyksbi5vcHRpb25zIT09dm9pZCAwKXtjb25zdCB0PShlPW4ub3B0aW9ucy5zY3JvbGxUYXJnZXQpIT1udWxsP2U6d2luZG93O3QhPT10aGlzLnNjcm9sbFRhcmdldCYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLnNjcm9sbFRhcmdldD10LHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucz17Li4udGhpcy5mbG9hdGluZ1VJT3B0aW9ucywuLi5uLm9wdGlvbnN9fX11cGRhdGVQb3NpdGlvbigpe2NvbnN0e3NlbGVjdGlvbjpufT10aGlzLmVkaXRvci5zdGF0ZSxlPWNkKHRoaXMudmlldyxuLmZyb20sbi50byk7aGMoe2dldEJvdW5kaW5nQ2xpZW50UmVjdDooKT0+ZSxnZXRDbGllbnRSZWN0czooKT0+W2VdfSx0aGlzLmVsZW1lbnQse3BsYWNlbWVudDp0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnBsYWNlbWVudCxzdHJhdGVneTp0aGlzLmZsb2F0aW5nVUlPcHRpb25zLnN0cmF0ZWd5LG1pZGRsZXdhcmU6dGhpcy5taWRkbGV3YXJlc30pLnRoZW4oKHt4OnIseTpzLHN0cmF0ZWd5OmksbWlkZGxld2FyZURhdGE6b30pPT57dmFyIGwsYTtpZigobD1vLmhpZGUpIT1udWxsJiZsLnJlZmVyZW5jZUhpZGRlbnx8KGE9by5oaWRlKSE9bnVsbCYmYS5lc2NhcGVkKXt0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtyZXR1cm59dGhpcy5lbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiLHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aD0ibWF4LWNvbnRlbnQiLHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbj1pLHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0PWAke3J9cHhgLHRoaXMuZWxlbWVudC5zdHlsZS50b3A9YCR7c31weGAsdGhpcy5pc1Zpc2libGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25VcGRhdGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25VcGRhdGUoKX0pfXVwZGF0ZShuLGUpe2NvbnN0IHQ9IWU/LnNlbGVjdGlvbi5lcShuLnN0YXRlLnNlbGVjdGlvbikscj0hZT8uZG9jLmVxKG4uc3RhdGUuZG9jKTt0aGlzLnVwZGF0ZUhhbmRsZXIobix0LHIsZSl9c2hvdygpe3ZhciBuO2lmKHRoaXMuaXNWaXNpYmxlKXJldHVybjt0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5lbGVtZW50LnN0eWxlLm9wYWNpdHk9IjEiO2NvbnN0IGU9dHlwZW9mIHRoaXMuYXBwZW5kVG89PSJmdW5jdGlvbiI/dGhpcy5hcHBlbmRUbygpOnRoaXMuYXBwZW5kVG87KG49ZT8/dGhpcy52aWV3LmRvbS5wYXJlbnRFbGVtZW50KT09bnVsbHx8bi5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25TaG93JiZ0aGlzLmZsb2F0aW5nVUlPcHRpb25zLm9uU2hvdygpLHRoaXMuaXNWaXNpYmxlPSEwfWhpZGUoKXt0aGlzLmlzVmlzaWJsZSYmKHRoaXMuZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuZWxlbWVudC5zdHlsZS5vcGFjaXR5PSIwIix0aGlzLmVsZW1lbnQucmVtb3ZlKCksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkhpZGUmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25IaWRlKCksdGhpcy5pc1Zpc2libGU9ITEpfWRlc3Ryb3koKXt0aGlzLmhpZGUoKSx0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm1vdXNlZG93bkhhbmRsZXIse2NhcHR1cmU6ITB9KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXIpLHRoaXMuc2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5yZXNpemVIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoImZvY3VzIix0aGlzLmZvY3VzSGFuZGxlciksdGhpcy5lZGl0b3Iub2ZmKCJibHVyIix0aGlzLmJsdXJIYW5kbGVyKSx0aGlzLmVkaXRvci5vZmYoInRyYW5zYWN0aW9uIix0aGlzLnRyYW5zYWN0aW9uSGFuZGxlciksdGhpcy5mbG9hdGluZ1VJT3B0aW9ucy5vbkRlc3Ryb3kmJnRoaXMuZmxvYXRpbmdVSU9wdGlvbnMub25EZXN0cm95KCl9fSxnaz1uPT5uZXcgRyh7a2V5OnR5cGVvZiBuLnBsdWdpbktleT09InN0cmluZyI/bmV3IHEobi5wbHVnaW5LZXkpOm4ucGx1Z2luS2V5LHZpZXc6ZT0+bmV3IG1rKHt2aWV3OmUsLi4ubn0pfSkseWs9cnIoe25hbWU6IkZsb2F0aW5nTWVudSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntwbHVnaW5LZXk6e3R5cGU6bnVsbCxkZWZhdWx0OnZvaWQgMH0sZWRpdG9yOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sdXBkYXRlRGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6dm9pZCAwfSxyZXNpemVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDp2b2lkIDB9LG9wdGlvbnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LGFwcGVuZFRvOnt0eXBlOltPYmplY3QsRnVuY3Rpb25dLGRlZmF1bHQ6dm9pZCAwfSxzaG91bGRTaG93Ont0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6bnVsbH19LHNldHVwKG4se3Nsb3RzOmUsYXR0cnM6dH0pe3ZhciByO2NvbnN0IHM9UmUobnVsbCksaT0ocj1uLnBsdWdpbktleSkhPW51bGw/cjpuZXcgcSgiZmxvYXRpbmdNZW51Iik7cmV0dXJuIGNvKCgpPT57Y29uc3R7ZWRpdG9yOm8sdXBkYXRlRGVsYXk6bCxyZXNpemVEZWxheTphLG9wdGlvbnM6YyxhcHBlbmRUbzp1LHNob3VsZFNob3c6ZH09bixoPXMudmFsdWU7aCYmKGguc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixoLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaC5yZW1vdmUoKSxvLnJlZ2lzdGVyUGx1Z2luKGdrKHtwbHVnaW5LZXk6aSxlZGl0b3I6byxlbGVtZW50OmgsdXBkYXRlRGVsYXk6bCxyZXNpemVEZWxheTphLG9wdGlvbnM6YyxhcHBlbmRUbzp1LHNob3VsZFNob3c6ZH0pKSl9KSxPcygoKT0+e2NvbnN0e2VkaXRvcjpvfT1uO28udW5yZWdpc3RlclBsdWdpbihpKX0pLCgpPT57dmFyIG87cmV0dXJuIHVvKCJkaXYiLHtyZWY6cywuLi50fSwobz1lLmRlZmF1bHQpPT1udWxsP3ZvaWQgMDpvLmNhbGwoZSkpfX19KTtmdW5jdGlvbiBrayhuLGUpe2lmKCFlPy5zY2hlbWEpcmV0dXJuITE7Y29uc3QgdD10eXBlb2Ygbj09InN0cmluZyI/bjpuLm5hbWU7cmV0dXJuIGUuc2NoZW1hLnNwZWMubWFya3MuZ2V0KHQpIT09dm9pZCAwfWZ1bmN0aW9uIEd0KG4sZSl7aWYoIW4pcmV0dXJuITE7Y29uc3R7c2VsZWN0aW9uOnR9PW4uc3RhdGUseyRmcm9tOnIsdG86c309dDtyZXR1cm4gZS5zb21lKGk9Pm4uc3RhdGUuZG9jLm5vZGVzQmV0d2VlbihyLnBvcyxzLG89Pm8udHlwZS5uYW1lPT09aSkpfWZ1bmN0aW9uIGt0KG4sZSl7cmV0dXJuIG4/bi5leHRlbnNpb25NYW5hZ2VyLmV4dGVuc2lvbnMuc29tZSh0PT50Lm5hbWU9PT1lKTohMX1mdW5jdGlvbiBBYShuKXtjb25zdCBlPWB0b2dnbGUke24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtuLnNsaWNlKDEpfWA7cmV0dXJue2NhbkV4ZWN1dGU6dD0+dC5jYW4oKVtlXSgpLGV4ZWN1dGU6dD0+dC5jaGFpbigpLmZvY3VzKClbZV0oKSxpc0FjdGl2ZTp0PT50LmlzQWN0aXZlKG4pLGlzRGlzYWJsZWQ6dD0+R3QodCxbImltYWdlIl0pfHx0LmlzQWN0aXZlKCJjb2RlIil9fWZ1bmN0aW9uIE9hKG4pe2NvbnN0IGU9YHNldCR7bi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke24uc2xpY2UoMSl9YDtyZXR1cm57Y2FuRXhlY3V0ZTp0PT50LmNhbigpW2VdKCksZXhlY3V0ZTp0PT50LmNoYWluKCkuZm9jdXMoKVtlXSgpLGlzQWN0aXZlOnQ9PnQuaXNBY3RpdmUobiksaXNEaXNhYmxlZDp0PT5HdCh0LFsiaW1hZ2UiXSl8fHQuaXNBY3RpdmUoImNvZGUiKX19ZnVuY3Rpb24gTmEobil7cmV0dXJue2NhbkV4ZWN1dGU6ZT0+ZS5jYW4oKVtuXSgpLGV4ZWN1dGU6ZT0+ZS5jaGFpbigpW25dKCksaXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBiaygpe3JldHVybntjYW5FeGVjdXRlOihuLGUpPT5uLmNhbigpLnRvZ2dsZU1hcmsoZS5tYXJrKSxleGVjdXRlOihuLGUpPT5uLmNoYWluKCkuZm9jdXMoKS50b2dnbGVNYXJrKGUubWFyayksaXNBY3RpdmU6KG4sZSk9Pm4uaXNBY3RpdmUoZS5tYXJrKSxpc0Rpc2FibGVkOihuLGUpPT4ha2soZS5tYXJrLG4pfHxHdChuLFsiaW1hZ2UiXSl9fWZ1bmN0aW9uIHhrKCl7cmV0dXJue2NhbkV4ZWN1dGU6KG4sZSk9Pm4uY2FuKCkuc2V0VGV4dEFsaWduKGUuYWxpZ24pLGV4ZWN1dGU6KG4sZSk9Pm4uY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbihlLmFsaWduKSxpc0FjdGl2ZToobixlKT0+bi5pc0FjdGl2ZSh7dGV4dEFsaWduOmUuYWxpZ259KSxpc0Rpc2FibGVkOm49PiFrdChuLCJ0ZXh0QWxpZ24iKXx8R3QobixbImltYWdlIiwiaG9yaXpvbnRhbFJ1bGUiXSl9fWZ1bmN0aW9uIHdrKCl7cmV0dXJue2NhbkV4ZWN1dGU6KG4sZSk9Pm4uY2FuKCkudG9nZ2xlSGVhZGluZyh7bGV2ZWw6ZS5sZXZlbH0pLGV4ZWN1dGU6KG4sZSk9Pm4uY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRpbmcoe2xldmVsOmUubGV2ZWx9KSxpc0FjdGl2ZToobixlKT0+bi5pc0FjdGl2ZSgiaGVhZGluZyIse2xldmVsOmUubGV2ZWx9KSxpc0Rpc2FibGVkOm49Pkd0KG4sWyJpbWFnZSJdKXx8bi5pc0FjdGl2ZSgiY29kZSIpfX1mdW5jdGlvbiB2aygpe3JldHVybntjYW5FeGVjdXRlOm49Pm4uY2FuKCkuc2V0TGluayh7aHJlZjoiIn0pfHxuLmNhbigpLnVuc2V0TGluaygpLGV4ZWN1dGU6KG4sZSk9Pntjb25zdCB0PW4uY2hhaW4oKSxyPW4uZ2V0QXR0cmlidXRlcygibGluayIpLmhyZWYscz1uLmlzQWN0aXZlKCJjb2RlIik7aWYocilyZXR1cm4gdC5mb2N1cygpLnVuc2V0TGluaygpO2NvbnN0IGk9ZT8uaHJlZnx8cHJvbXB0KCJFbnRlciB0aGUgVVJMOiIpO3JldHVybiBpP3M/dC5mb2N1cygpLmV4dGVuZE1hcmtSYW5nZSgiY29kZSIpLnNldExpbmsoe2hyZWY6aX0pOnQuZm9jdXMoKS5zZXRMaW5rKHtocmVmOml9KTp0fSxpc0FjdGl2ZTpuPT5uLmlzQWN0aXZlKCJsaW5rIiksaXNEaXNhYmxlZDpuPT57aWYoIWt0KG4sImxpbmsiKXx8R3QobixbImltYWdlIl0pKXJldHVybiEwO2NvbnN0e3NlbGVjdGlvbjplfT1uLnN0YXRlO3JldHVybiBlLmVtcHR5JiYhbi5pc0FjdGl2ZSgibGluayIpfX19ZnVuY3Rpb24gU2soKXtyZXR1cm57Y2FuRXhlY3V0ZTpuPT5uLmNhbigpLnNldEltYWdlKHtzcmM6IiJ9KSxleGVjdXRlOihuLGUpPT57Y29uc3QgdD1uLmNoYWluKCkuZm9jdXMoKTtpZihlPy5zcmMpcmV0dXJuIHQuc2V0SW1hZ2Uoe3NyYzplLnNyY30pO2NvbnN0IHI9cHJvbXB0KCJFbnRlciB0aGUgaW1hZ2UgVVJMOiIpO3JldHVybiByP3Quc2V0SW1hZ2Uoe3NyYzpyfSk6dH0saXNBY3RpdmU6bj0+bi5pc0FjdGl2ZSgiaW1hZ2UiKSxpc0Rpc2FibGVkOm49PiFrdChuLCJpbWFnZSIpfX1mdW5jdGlvbiBnaShuKXtjb25zdCB0PXtidWxsZXRMaXN0OiJ0b2dnbGVCdWxsZXRMaXN0IixvcmRlcmVkTGlzdDoidG9nZ2xlT3JkZXJlZExpc3QiLHRhc2tMaXN0OiJ0b2dnbGVUYXNrTGlzdCJ9W25dLHI9bj09PSJ0YXNrTGlzdCI/InRhc2tJdGVtIjoibGlzdEl0ZW0iLHM9WyJidWxsZXRMaXN0Iiwib3JkZXJlZExpc3QiLCJ0YXNrTGlzdCJdO3JldHVybntjYW5FeGVjdXRlOmk9PmkuY2FuKClbdF0oKXx8aS5pc0FjdGl2ZSgibGlzdEl0ZW0iKXx8cy5zb21lKG89Pmt0KGksbykmJmkuaXNBY3RpdmUobykpLGV4ZWN1dGU6aT0+e2NvbnN0e3N0YXRlOm99PWkse3NlbGVjdGlvbjpsfT1vO2xldCBhPWkuY2hhaW4oKS5mb2N1cygpO2lmKGwubm9kZSl7Y29uc3QgYz1sLm5vZGUsdT1jLmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQsZD1jLmxhc3RDaGlsZD8ubGFzdENoaWxkLGg9dT9sLmZyb20rdS5ub2RlU2l6ZTpsLmZyb20rMSxmPWQ/bC50by1kLm5vZGVTaXplOmwudG8tMTthPWEuc2V0VGV4dFNlbGVjdGlvbih7ZnJvbTpoLHRvOmZ9KS5jbGVhck5vZGVzKCl9aWYoaS5pc0FjdGl2ZShuKSl7bGV0IGM9YS5saWZ0TGlzdEl0ZW0ocik7Zm9yKGNvbnN0IHUgb2YgcylrdChpLHUpJiYoYz1jLmxpZnQodSkpO3JldHVybiBjLnNlbGVjdFRleHRibG9ja0VuZCgpfWlmKHMuc29tZShjPT5rdChpLGMpJiZpLmlzQWN0aXZlKGMpKSl7Y29uc3QgYz1pLmlzQWN0aXZlKCJ0YXNrTGlzdCIpPyJ0YXNrSXRlbSI6Imxpc3RJdGVtIjtsZXQgdT1hLmxpZnRMaXN0SXRlbShjKTtmb3IoY29uc3QgZCBvZiBzKWt0KGksZCkmJih1PXUubGlmdChkKSk7cmV0dXJuIHVbdF0oKS5zZWxlY3RUZXh0YmxvY2tFbmQoKX1yZXR1cm4gYVt0XSgpLnNlbGVjdFRleHRibG9ja0VuZCgpfSxpc0FjdGl2ZTppPT5pLmlzQWN0aXZlKG4pLGlzRGlzYWJsZWQ6aT0+a3QoaSxuKT9HdChpLFsiaW1hZ2UiXSl8fGkuaXNBY3RpdmUoImNvZGUiKTohMH19ZnVuY3Rpb24gUmEobil7cmV0dXJue2NhbkV4ZWN1dGU6KGUsdCk9PntpZih0Py5wb3M9PW51bGx8fCFlLnN0YXRlLmRvYy5ub2RlQXQodC5wb3MpKXJldHVybiExO2NvbnN0IHM9ZS5zdGF0ZS5kb2MucmVzb2x2ZSh0LnBvcyksaT1zLnBhcmVudCxvPXMuaW5kZXgoKTtyZXR1cm4gbj09PSJ1cCI/bz4wOm88aS5jaGlsZENvdW50LTF9LGV4ZWN1dGU6KGUsdCk9PntpZih0Py5wb3M9PW51bGwpcmV0dXJuIGUuY2hhaW4oKTtjb25zdCByPWUuc3RhdGUuZG9jLm5vZGVBdCh0LnBvcyk7aWYoIXIpcmV0dXJuIGUuY2hhaW4oKTtjb25zdCBzPWUuc3RhdGUuZG9jLnJlc29sdmUodC5wb3MpLGk9cy5wYXJlbnQsbz1zLmluZGV4KCk7aWYobj09PSJ1cCImJm8+MCl7Y29uc3QgbD1pLmNoaWxkKG8tMSksYT10LnBvcy1sLm5vZGVTaXplO3JldHVybiBlLmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTp0LnBvcyx0bzp0LnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KGEsci50b0pTT04oKSl9aWYobj09PSJkb3duIiYmbzxpLmNoaWxkQ291bnQtMSl7Y29uc3QgbD1pLmNoaWxkKG8rMSksYT10LnBvcytsLm5vZGVTaXplO3JldHVybiBlLmNoYWluKCkuZm9jdXMoKS5kZWxldGVSYW5nZSh7ZnJvbTp0LnBvcyx0bzp0LnBvcytyLm5vZGVTaXplfSkuaW5zZXJ0Q29udGVudEF0KGEsci50b0pTT04oKSl9cmV0dXJuIGUuY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX1mdW5jdGlvbiBEZCgpe3JldHVybnttYXJrOmJrKCksdGV4dEFsaWduOnhrKCksaGVhZGluZzp3aygpLGxpbms6dmsoKSxpbWFnZTpTaygpLGJsb2NrcXVvdGU6QWEoImJsb2NrcXVvdGUiKSxidWxsZXRMaXN0OmdpKCJidWxsZXRMaXN0Iiksb3JkZXJlZExpc3Q6Z2koIm9yZGVyZWRMaXN0IiksdGFza0xpc3Q6Z2koInRhc2tMaXN0IiksY29kZUJsb2NrOkFhKCJjb2RlQmxvY2siKSxob3Jpem9udGFsUnVsZTpPYSgiaG9yaXpvbnRhbFJ1bGUiKSxwYXJhZ3JhcGg6T2EoInBhcmFncmFwaCIpLHVuZG86TmEoInVuZG8iKSxyZWRvOk5hKCJyZWRvIiksY2xlYXJGb3JtYXR0aW5nOntjYW5FeGVjdXRlOihuLGUpPT5lPy5wb3MhPW51bGw/ISFuLnN0YXRlLmRvYy5ub2RlQXQoZS5wb3MpOm4uY2FuKCkuY2xlYXJOb2RlcygpfHxuLmNhbigpLnVuc2V0QWxsTWFya3MoKSxleGVjdXRlOihuLGUpPT57aWYoZT8ucG9zIT1udWxsKXtjb25zdCB0PW4uc3RhdGUuZG9jLm5vZGVBdChlLnBvcyk7aWYoIXQpcmV0dXJuIG4uY2hhaW4oKTtjb25zdCByPWUucG9zKzEscz1lLnBvcyt0Lm5vZGVTaXplLTE7cmV0dXJuIG4uY2hhaW4oKS5mb2N1cygpLnNldFRleHRTZWxlY3Rpb24oe2Zyb206cix0bzpzfSkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX1yZXR1cm4gbi5jaGFpbigpLmZvY3VzKCkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxkdXBsaWNhdGU6e2NhbkV4ZWN1dGU6KG4sZSk9PmU/LnBvcz09bnVsbD8hMTohIW4uc3RhdGUuZG9jLm5vZGVBdChlLnBvcyksZXhlY3V0ZToobixlKT0+e2lmKGU/LnBvcz09bnVsbClyZXR1cm4gbi5jaGFpbigpO2NvbnN0IHQ9bi5zdGF0ZS5kb2Mubm9kZUF0KGUucG9zKTtyZXR1cm4gdD9uLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQoZS5wb3MrdC5ub2RlU2l6ZSx0LnRvSlNPTigpKTpuLmNoYWluKCl9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sZGVsZXRlOntjYW5FeGVjdXRlOihuLGUpPT5lPy5wb3M9PW51bGw/ITE6ISFuLnN0YXRlLmRvYy5ub2RlQXQoZS5wb3MpLGV4ZWN1dGU6KG4sZSk9PntpZihlPy5wb3M9PW51bGwpcmV0dXJuIG4uY2hhaW4oKTtjb25zdCB0PW4uc3RhdGUuZG9jLm5vZGVBdChlLnBvcyk7cmV0dXJuIHQ/bi5jaGFpbigpLmZvY3VzKCkuZGVsZXRlUmFuZ2Uoe2Zyb206ZS5wb3MsdG86ZS5wb3MrdC5ub2RlU2l6ZX0pOm4uY2hhaW4oKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxtb3ZlVXA6UmEoInVwIiksbW92ZURvd246UmEoImRvd24iKSxzdWdnZXN0aW9uOntjYW5FeGVjdXRlOigpPT4hMCxleGVjdXRlOihuLGUpPT57Y29uc3R7c3RhdGU6dH09bix7c2VsZWN0aW9uOnJ9PXQseyRmcm9tOnN9PXI7aWYoZT8ucG9zIT09dm9pZCAwKXtjb25zdCBhPXQuZG9jLm5vZGVBdChlLnBvcyk7aWYoYSl7Y29uc3QgYz1lLnBvcythLm5vZGVTaXplO3JldHVybiBuLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQoYyx7dHlwZToicGFyYWdyYXBoIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDoiLyJ9XX0pfX1jb25zdCBpPXMubm9kZShzLmRlcHRoKSxsPXMuYmVmb3JlKHMuZGVwdGgpK2kubm9kZVNpemU7cmV0dXJuIG4uY2hhaW4oKS5mb2N1cygpLmluc2VydENvbnRlbnRBdChsLHt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OiIvIn1dfSl9LGlzQWN0aXZlOigpPT4hMSxpc0Rpc2FibGVkOnZvaWQgMH0sbWVudGlvbjp7Y2FuRXhlY3V0ZTooKT0+ITAsZXhlY3V0ZTpuPT57Y29uc3R7c3RhdGU6ZX09bix7c2VsZWN0aW9uOnR9PWUseyRmcm9tOnJ9PXQscz1yLnBhcmVudC50ZXh0QmV0d2VlbihNYXRoLm1heCgwLHIucGFyZW50T2Zmc2V0LTEpLHIucGFyZW50T2Zmc2V0LHZvaWQgMCwiICIpLGk9cyYmcyE9PSIgIjtyZXR1cm4gbi5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0Q29udGVudChpPyIgQCI6IkAiKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfSxlbW9qaTp7Y2FuRXhlY3V0ZTooKT0+ITAsZXhlY3V0ZTpuPT57Y29uc3R7c3RhdGU6ZX09bix7c2VsZWN0aW9uOnR9PWUseyRmcm9tOnJ9PXQscz1yLnBhcmVudC50ZXh0QmV0d2VlbihNYXRoLm1heCgwLHIucGFyZW50T2Zmc2V0LTEpLHIucGFyZW50T2Zmc2V0LHZvaWQgMCwiICIpLGk9cyYmcyE9PSIgIjtyZXR1cm4gbi5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0Q29udGVudChpPyIgOiI6IjoiKX0saXNBY3RpdmU6KCk9PiExLGlzRGlzYWJsZWQ6dm9pZCAwfX19Y29uc3QgQ2s9e3Nsb3RzOntyb290OiJmb2N1czpvdXRsaW5lLW5vbmUiLGJhc2U6ImZsZXggaXRlbXMtc3RyZXRjaCBnYXAtMS41Iixncm91cDoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNSIsc2VwYXJhdG9yOiJ3LXB4IHNlbGYtc3RyZXRjaCBiZy1ib3JkZXIifSx2YXJpYW50czp7bGF5b3V0OntidWJibGU6e2Jhc2U6ImJnLWRlZmF1bHQgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgcC0xIn0sZmxvYXRpbmc6e2Jhc2U6ImJnLWRlZmF1bHQgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgcC0xIn0sZml4ZWQ6e2Jhc2U6IiJ9fX19LFRrPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUVkaXRvclRvb2xiYXIiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6Im5ldXRyYWwifSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZ2hvc3QifSxhY3RpdmVDb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InByaW1hcnkifSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic29mdCJ9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzbSJ9LGl0ZW1zOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGVkaXRvcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGF5b3V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJmaXhlZCJ9LHBsdWdpbktleTp7dHlwZTpbT2JqZWN0LFN0cmluZ10scmVxdWlyZWQ6ITF9LHVwZGF0ZURlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0scmVzaXplRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaG91bGRTaG93Ont0eXBlOltGdW5jdGlvbixudWxsXSxyZXF1aXJlZDohMX0sYXBwZW5kVG86e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwfSxnZXRSZWZlcmVuY2VkVmlydHVhbEVsZW1lbnQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZT1uLHQ9ZmMoKSxyPXBjKCJlZGl0b3JUb29sYmFyIixlKSxzPXdoKCJlZGl0b3JIYW5kbGVycyIsbGUoKCk9PkRkKCkpKSxpPWxlKCgpPT4oe2J1YmJsZTpwayxmbG9hdGluZzp5ayxmaXhlZDoidGVtcGxhdGUifSlbZS5sYXlvdXRdKSxvPW1jKGdjKGUsImFzIiwiY29sb3IiLCJ2YXJpYW50IiwiYWN0aXZlQ29sb3IiLCJhY3RpdmVWYXJpYW50Iiwic2l6ZSIsIml0ZW1zIiwibGF5b3V0IiwiZWRpdG9yIiwiY2xhc3MiLCJ1aSIpKSxsPWxlKCgpPT5ndChlLm9wdGlvbnMse29mZnNldDo4LHNoaWZ0OntwYWRkaW5nOjh9fSkpLGE9bGUoKCk9PnpyKHtleHRlbmQ6enIoQ2spLC4uLnQudWk/LmVkaXRvclRvb2xiYXJ8fHt9fSkoe2xheW91dDplLmxheW91dH0pKSxjPWxlKCgpPT5lLml0ZW1zPy5sZW5ndGg/ZHIoZS5pdGVtcyk/ZS5pdGVtczpbZS5pdGVtc106W10pO2Z1bmN0aW9uIHUoayl7cmV0dXJuIGUuZWRpdG9yPy5pc0VkaXRhYmxlPyJpdGVtcyJpbiBrJiZrLml0ZW1zPy5sZW5ndGg/ay5pdGVtcz8uc29tZSh3PT51KHcpKXx8ITE6ImtpbmQiaW4gaz9zPy52YWx1ZT8uW2sua2luZF0/LmlzQWN0aXZlKGUuZWRpdG9yLGspfHwhMTprLmFjdGl2ZT8/ITE6ITF9ZnVuY3Rpb24gZChrKXtpZighZS5lZGl0b3I/LmlzRWRpdGFibGUpcmV0dXJuITA7aWYoIml0ZW1zImluIGsmJmsuaXRlbXM/Lmxlbmd0aCl7Y29uc3QgeD0oZHIoay5pdGVtcyk/ay5pdGVtcy5mbGF0KCk6ay5pdGVtcykuZmlsdGVyKHY9PnYudHlwZSE9PSJzZXBhcmF0b3IiJiZ2LnR5cGUhPT0ibGFiZWwiKTtyZXR1cm4geC5sZW5ndGg9PT0wPyEwOnguZXZlcnkodj0+ZCh2KSl9aWYoISgia2luZCJpbiBrKSlyZXR1cm4gay5kaXNhYmxlZD8/ITE7Y29uc3QgYj1zPy52YWx1ZT8uW2sua2luZF07cmV0dXJuIGI/Yi5pc0Rpc2FibGVkPy4oZS5lZGl0b3Isayk/ITA6IWIuY2FuRXhlY3V0ZShlLmVkaXRvcixrKTohMX1mdW5jdGlvbiBoKGssYil7aWYoIWUuZWRpdG9yPy5pc0VkaXRhYmxlfHxkKGIpKXJldHVybjtpZigiaXRlbXMiaW4gYnx8ISgia2luZCJpbiBiKSl7aWYoIm9uQ2xpY2siaW4gYilmb3IoY29uc3QgeCBvZiBBcnJheS5pc0FycmF5KGIub25DbGljayk/Yi5vbkNsaWNrOltiLm9uQ2xpY2tdKXg/LihrKTtyZXR1cm59Y29uc3Qgdz1zPy52YWx1ZT8uW2Iua2luZF07dyYmdy5leGVjdXRlKGUuZWRpdG9yLGIpLnJ1bigpfWZ1bmN0aW9uIGYoayl7cmV0dXJuIGsuaXRlbXM/KGRyKGsuaXRlbXMpP2suaXRlbXMuZmxhdCgpOmsuaXRlbXMpLmZpbmQodz0+ImtpbmQiaW4gdz91KHcpOiExKTp2b2lkIDB9ZnVuY3Rpb24gcChrKXtjb25zdCBiPVNoKGssWyJraW5kIiwibWFyayIsImFsaWduIiwibGV2ZWwiLCJocmVmIiwic3JjIiwicG9zIiwiaXRlbXMiLCJzbG90IiwiY2hlY2tlZEljb24iLCJsb2FkaW5nSWNvbiIsImV4dGVybmFsSWNvbiIsImNvbnRlbnQiLCJhcnJvdyIsInBvcnRhbCIsIm1vZGFsIiwidG9vbHRpcCIsIm9uQ2xpY2siXSk7aWYoIml0ZW1zImluIGsmJmsuaXRlbXM/Lmxlbmd0aCl7Y29uc3Qgdz1mKGspO3c/Lmljb24mJihiLmljb249dy5pY29uKSx3Py5sYWJlbCYmYi5sYWJlbCE9PXZvaWQgMCYmKGIubGFiZWw9dy5sYWJlbCl9cmV0dXJuIGd0KGIse2NvbG9yOmUuY29sb3IsYWN0aXZlQ29sb3I6ZS5hY3RpdmVDb2xvcixhY3RpdmVWYXJpYW50OmUuYWN0aXZlVmFyaWFudCx2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZX0pfWZ1bmN0aW9uIG0oayl7Y29uc3QgYj12aChrLFsic2l6ZSIsImNoZWNrZWRJY29uIiwibG9hZGluZ0ljb24iLCJleHRlcm5hbEljb24iLCJjb250ZW50IiwiYXJyb3ciLCJwb3J0YWwiLCJtb2RhbCIsInVpIl0pO3JldHVybiBndChiLHttb2RhbDohMSxzaXplOmUuc2l6ZX0pfWZ1bmN0aW9uIGcoayl7Y29uc3QgYj0iY2hpbGRyZW4iaW4gayYmQXJyYXkuaXNBcnJheShrLmNoaWxkcmVuKT9rLmNoaWxkcmVuLm1hcChnKTp2b2lkIDA7aWYoISgia2luZCJpbiBrKSlyZXR1cm4gYj97Li4uayxjaGlsZHJlbjpifTprO2NvbnN0IHc9aztyZXR1cm57Li4udywuLi5iJiZ7Y2hpbGRyZW46Yn0sYWN0aXZlOnUodyksZGlzYWJsZWQ6ZCh3KSxvblNlbGVjdDp4PT5oKHgsdyl9fWZ1bmN0aW9uIHkoayl7cmV0dXJuIGsuaXRlbXM/ZHIoay5pdGVtcyk/ay5pdGVtcy5tYXAoYj0+Yi5tYXAoZykpOltrLml0ZW1zLm1hcChnKV06W119cmV0dXJuKGssYik9PihoZSgpLEJlKHooQWkpLHV0KHthczppLnZhbHVlfSxpLnZhbHVlIT09InRlbXBsYXRlIj97ZWRpdG9yOm4uZWRpdG9yLHRhYmluZGV4Oi0xLGNsYXNzOmEudmFsdWUucm9vdCh7Y2xhc3M6eihyKT8ucm9vdH0pLC4uLnoobyksb3B0aW9uczpsLnZhbHVlLC4uLmsuJGF0dHJzfTp7Li4uay4kYXR0cnN9KSx7ZGVmYXVsdDpkZSgoKT0+W1EoeihBaSkse2FzOm4uYXMscm9sZToidG9vbGJhciIsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOlJuKGEudmFsdWUuYmFzZSh7Y2xhc3M6W3oocik/LmJhc2UsZS5jbGFzc119KSl9LHtkZWZhdWx0OmRlKCgpPT5bKGhlKCEwKSxzbihJbixudWxsLGZsKGMudmFsdWUsKHcseCk9PihoZSgpLHNuKEluLHtrZXk6YGdyb3VwLSR7eH1gfSxbT3IoImRpdiIse3JvbGU6Imdyb3VwIiwiZGF0YS1zbG90IjoiZ3JvdXAiLGNsYXNzOlJuKGEudmFsdWUuZ3JvdXAoe2NsYXNzOnoocik/Lmdyb3VwfSkpfSxbKGhlKCEwKSxzbihJbixudWxsLGZsKHcsKHYsQyk9PnljKGsuJHNsb3RzLHYuc2xvdHx8Iml0ZW0iLHtrZXk6YGdyb3VwLSR7eH0tJHtDfWAsaXRlbTp2LGluZGV4OkMsaXNBY3RpdmU6dSxpc0Rpc2FibGVkOmQsb25DbGljazpofSwoKT0+WyJpdGVtcyJpbiB2JiZ2Lml0ZW1zPy5sZW5ndGg/KGhlKCksQmUoamgsdXQoe2tleTowLHJlZl9mb3I6ITB9LG0odikse2l0ZW1zOnkodil9KSx7ZGVmYXVsdDpkZSgoKT0+W3YudG9vbHRpcD8oaGUoKSxCZShtbCx1dCh7a2V5OjAsZGlzYWJsZWQ6ZCh2KX0se3JlZl9mb3I6ITB9LHsuLi52LnRvb2x0aXB8fHt9fSkse2RlZmF1bHQ6ZGUoKCk9PltRKFNuLHV0KHthY3RpdmU6dSh2KSxkaXNhYmxlZDpkKHYpfSx7cmVmX2ZvcjohMH0scCh2KSx7b25DbGljazpNPT5oKE0sdil9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pXSksXzoyfSwxMDQwLFsiZGlzYWJsZWQiXSkpOihoZSgpLEJlKFNuLHV0KHtrZXk6MSxhY3RpdmU6dSh2KSxkaXNhYmxlZDpkKHYpfSx7cmVmX2ZvcjohMH0scCh2KSx7b25DbGljazpNPT5oKE0sdil9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pKV0pLF86Mn0sMTA0MCxbIml0ZW1zIl0pKTp2LnRvb2x0aXA/KGhlKCksQmUobWwsdXQoe2tleToxLGRpc2FibGVkOmQodil9LHtyZWZfZm9yOiEwfSx7Li4udi50b29sdGlwfHx7fX0pLHtkZWZhdWx0OmRlKCgpPT5bUShTbix1dCh7YWN0aXZlOnUodiksZGlzYWJsZWQ6ZCh2KX0se3JlZl9mb3I6ITB9LHAodikse3VpOnYudWksb25DbGljazpNPT5oKE0sdil9KSxudWxsLDE2LFsiYWN0aXZlIiwiZGlzYWJsZWQiLCJ1aSIsIm9uQ2xpY2siXSldKSxfOjJ9LDEwNDAsWyJkaXNhYmxlZCJdKSk6KGhlKCksQmUoU24sdXQoe2tleToyLGFjdGl2ZTp1KHYpLGRpc2FibGVkOmQodil9LHtyZWZfZm9yOiEwfSxwKHYpLHt1aTp2LnVpLG9uQ2xpY2s6TT0+aChNLHYpfSksbnVsbCwxNixbImFjdGl2ZSIsImRpc2FibGVkIiwidWkiLCJvbkNsaWNrIl0pKV0pKSwxMjgpKV0sMikseDxjLnZhbHVlLmxlbmd0aC0xPyhoZSgpLEJlKHooVWgpLHtrZXk6MCwiZGF0YS1zbG90Ijoic2VwYXJhdG9yIixjbGFzczpSbihhLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6eihyKT8uc2VwYXJhdG9yfSkpLG9yaWVudGF0aW9uOiJ2ZXJ0aWNhbCJ9LG51bGwsOCxbImNsYXNzIl0pKTpEbigiIiwhMCldLDY0KSkpLDEyOCkpXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKV0pLF86M30sMTYsWyJhcyJdKSl9fSk7dmFyIE1rPS8oXnxbXmBdKWAoW15gXSspYCg/IWApJC8sRWs9LyhefFteYF0pYChbXmBdKylgKD8hYCkvZyxMZD1KdC5jcmVhdGUoe25hbWU6ImNvZGUiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxleGNsdWRlczoiXyIsY29kZTohMCxleGl0YWJsZTohMCxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoiY29kZSJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsiY29kZSIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsbiksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJjb2Rlc3BhbiIscGFyc2VNYXJrZG93bjoobixlKT0+ZS5hcHBseU1hcmsoImNvZGUiLFt7dHlwZToidGV4dCIsdGV4dDpuLnRleHR8fCIifV0pLHJlbmRlck1hcmtkb3duOihuLGUpPT5uLmNvbnRlbnQ/YFxgJHtlLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCl9XGBgOiIiLGFkZENvbW1hbmRzKCl7cmV0dXJue3NldENvZGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVDb2RlOigpPT4oe2NvbW1hbmRzOm59KT0+bi50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRDb2RlOigpPT4oe2NvbW1hbmRzOm59KT0+bi51bnNldE1hcmsodGhpcy5uYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtZSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUNvZGUoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6TWssdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bcXQoe2ZpbmQ6RWssdHlwZTp0aGlzLnR5cGV9KV19fSksQWs9TGQsUGQ9U2UuY3JlYXRlKHtuYW1lOiJob3Jpem9udGFsUnVsZSIsYWRkT3B0aW9ucygpe3JldHVybntIVE1MQXR0cmlidXRlczp7fSxuZXh0Tm9kZVR5cGU6InBhcmFncmFwaCJ9fSxncm91cDoiYmxvY2siLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJociJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsiaHIiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImhyIixwYXJzZU1hcmtkb3duOihuLGUpPT5lLmNyZWF0ZU5vZGUoImhvcml6b250YWxSdWxlIikscmVuZGVyTWFya2Rvd246KCk9PiItLS0iLGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEhvcml6b250YWxSdWxlOigpPT4oe2NoYWluOm4sc3RhdGU6ZX0pPT57aWYoIUt5KGUsZS5zY2hlbWEubm9kZXNbdGhpcy5uYW1lXSkpcmV0dXJuITE7Y29uc3R7c2VsZWN0aW9uOnR9PWUseyR0bzpyfT10LHM9bigpO3JldHVybiBvZCh0KT9zLmluc2VydENvbnRlbnRBdChyLnBvcyx7dHlwZTp0aGlzLm5hbWV9KTpzLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lfSkscy5jb21tYW5kKCh7c3RhdGU6aSx0cjpvLGRpc3BhdGNoOmx9KT0+e2lmKGwpe2NvbnN0eyR0bzphfT1vLnNlbGVjdGlvbixjPWEuZW5kKCk7aWYoYS5ub2RlQWZ0ZXIpYS5ub2RlQWZ0ZXIuaXNUZXh0YmxvY2s/by5zZXRTZWxlY3Rpb24oRC5jcmVhdGUoby5kb2MsYS5wb3MrMSkpOmEubm9kZUFmdGVyLmlzQmxvY2s/by5zZXRTZWxlY3Rpb24oTi5jcmVhdGUoby5kb2MsYS5wb3MpKTpvLnNldFNlbGVjdGlvbihELmNyZWF0ZShvLmRvYyxhLnBvcykpO2Vsc2V7Y29uc3QgdT1pLnNjaGVtYS5ub2Rlc1t0aGlzLm9wdGlvbnMubmV4dE5vZGVUeXBlXXx8YS5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2guZGVmYXVsdFR5cGUsZD11Py5jcmVhdGUoKTtkJiYoby5pbnNlcnQoYyxkKSxvLnNldFNlbGVjdGlvbihELmNyZWF0ZShvLmRvYyxjKzEpKSl9by5zY3JvbGxJbnRvVmlldygpfXJldHVybiEwfSkucnVuKCl9fX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltDZCh7ZmluZDovXig/Oi0tLXzigJQtfF9fX1xzfFwqXCpcKlxzKSQvLHR5cGU6dGhpcy50eXBlfSldfX0pLE9rPVBkLE5rPS8oPzpefFxzKSghXFsoLit8Oj8pXVwoKFxTKykoPzooPzpccyspWyInXShcUyspWyInXSk/XCkpJC8sUms9U2UuY3JlYXRlKHtuYW1lOiJpbWFnZSIsYWRkT3B0aW9ucygpe3JldHVybntpbmxpbmU6ITEsYWxsb3dCYXNlNjQ6ITEsSFRNTEF0dHJpYnV0ZXM6e30scmVzaXplOiExfX0saW5saW5lKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pbmxpbmV9LGdyb3VwKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pbmxpbmU/ImlubGluZSI6ImJsb2NrIn0sZHJhZ2dhYmxlOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57c3JjOntkZWZhdWx0Om51bGx9LGFsdDp7ZGVmYXVsdDpudWxsfSx0aXRsZTp7ZGVmYXVsdDpudWxsfSx3aWR0aDp7ZGVmYXVsdDpudWxsfSxoZWlnaHQ6e2RlZmF1bHQ6bnVsbH19fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzp0aGlzLm9wdGlvbnMuYWxsb3dCYXNlNjQ/ImltZ1tzcmNdIjonaW1nW3NyY106bm90KFtzcmNePSJkYXRhOiJdKSd9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsiaW1nIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKV19LHBhcnNlTWFya2Rvd246KG4sZSk9PmUuY3JlYXRlTm9kZSgiaW1hZ2UiLHtzcmM6bi5ocmVmLHRpdGxlOm4udGl0bGUsYWx0Om4udGV4dH0pLHJlbmRlck1hcmtkb3duOm49Pnt2YXIgZSx0LHIscyxpLG87Y29uc3QgbD0odD0oZT1uLmF0dHJzKT09bnVsbD92b2lkIDA6ZS5zcmMpIT1udWxsP3Q6IiIsYT0ocz0ocj1uLmF0dHJzKT09bnVsbD92b2lkIDA6ci5hbHQpIT1udWxsP3M6IiIsYz0obz0oaT1uLmF0dHJzKT09bnVsbD92b2lkIDA6aS50aXRsZSkhPW51bGw/bzoiIjtyZXR1cm4gYz9gIVske2F9XSgke2x9ICIke2N9IilgOmAhWyR7YX1dKCR7bH0pYH0sYWRkTm9kZVZpZXcoKXtpZighdGhpcy5vcHRpb25zLnJlc2l6ZXx8IXRoaXMub3B0aW9ucy5yZXNpemUuZW5hYmxlZHx8dHlwZW9mIGRvY3VtZW50PiJ1IilyZXR1cm4gbnVsbDtjb25zdHtkaXJlY3Rpb25zOm4sbWluV2lkdGg6ZSxtaW5IZWlnaHQ6dCxhbHdheXNQcmVzZXJ2ZUFzcGVjdFJhdGlvOnJ9PXRoaXMub3B0aW9ucy5yZXNpemU7cmV0dXJuKHtub2RlOnMsZ2V0UG9zOmksSFRNTEF0dHJpYnV0ZXM6byxlZGl0b3I6bH0pPT57Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtPYmplY3QuZW50cmllcyhvKS5mb3JFYWNoKChbZCxoXSk9PntpZihoIT1udWxsKXN3aXRjaChkKXtjYXNlIndpZHRoIjpjYXNlImhlaWdodCI6YnJlYWs7ZGVmYXVsdDphLnNldEF0dHJpYnV0ZShkLGgpO2JyZWFrfX0pLGEuc3JjPW8uc3JjO2NvbnN0IGM9bmV3IFd5KHtlbGVtZW50OmEsZWRpdG9yOmwsbm9kZTpzLGdldFBvczppLG9uUmVzaXplOihkLGgpPT57YS5zdHlsZS53aWR0aD1gJHtkfXB4YCxhLnN0eWxlLmhlaWdodD1gJHtofXB4YH0sb25Db21taXQ6KGQsaCk9Pntjb25zdCBmPWkoKTtmIT09dm9pZCAwJiZ0aGlzLmVkaXRvci5jaGFpbigpLnNldE5vZGVTZWxlY3Rpb24oZikudXBkYXRlQXR0cmlidXRlcyh0aGlzLm5hbWUse3dpZHRoOmQsaGVpZ2h0Omh9KS5ydW4oKX0sb25VcGRhdGU6KGQsaCxmKT0+ZC50eXBlPT09cy50eXBlLG9wdGlvbnM6e2RpcmVjdGlvbnM6bixtaW46e3dpZHRoOmUsaGVpZ2h0OnR9LHByZXNlcnZlQXNwZWN0UmF0aW86cj09PSEwfX0pLHU9Yy5kb207cmV0dXJuIHUuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix1LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLGEub25sb2FkPSgpPT57dS5zdHlsZS52aXNpYmlsaXR5PSIiLHUuc3R5bGUucG9pbnRlckV2ZW50cz0iIn0sY319LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEltYWdlOm49Pih7Y29tbWFuZHM6ZX0pPT5lLmluc2VydENvbnRlbnQoe3R5cGU6dGhpcy5uYW1lLGF0dHJzOm59KX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bQ2Qoe2ZpbmQ6TmssdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczpuPT57Y29uc3RbLCxlLHQscl09bjtyZXR1cm57c3JjOnQsYWx0OmUsdGl0bGU6cn19fSldfX0pLElrPVJrO2Z1bmN0aW9uIERrKG4pe3ZhciBlO2NvbnN0e2NoYXI6dCxhbGxvd1NwYWNlczpyLGFsbG93VG9JbmNsdWRlQ2hhcjpzLGFsbG93ZWRQcmVmaXhlczppLHN0YXJ0T2ZMaW5lOm8sJHBvc2l0aW9uOmx9PW4sYT1yJiYhcyxjPUp5KHQpLHU9bmV3IFJlZ0V4cChgXFxzJHtjfSRgKSxkPW8/Il4iOiIiLGg9cz8iIjpjLGY9YT9uZXcgUmVnRXhwKGAke2R9JHtjfS4qPyg/PVxccyR7aH18JClgLCJnbSIpOm5ldyBSZWdFeHAoYCR7ZH0oPzpeKT8ke2N9W15cXHMke2h9XSpgLCJnbSIpLHA9KChlPWwubm9kZUJlZm9yZSk9PW51bGw/dm9pZCAwOmUuaXNUZXh0KSYmbC5ub2RlQmVmb3JlLnRleHQ7aWYoIXApcmV0dXJuIG51bGw7Y29uc3QgbT1sLnBvcy1wLmxlbmd0aCxnPUFycmF5LmZyb20ocC5tYXRjaEFsbChmKSkucG9wKCk7aWYoIWd8fGcuaW5wdXQ9PT12b2lkIDB8fGcuaW5kZXg9PT12b2lkIDApcmV0dXJuIG51bGw7Y29uc3QgeT1nLmlucHV0LnNsaWNlKE1hdGgubWF4KDAsZy5pbmRleC0xKSxnLmluZGV4KSxrPW5ldyBSZWdFeHAoYF5bJHtpPy5qb2luKCIiKX1cMF0/JGApLnRlc3QoeSk7aWYoaSE9PW51bGwmJiFrKXJldHVybiBudWxsO2NvbnN0IGI9bStnLmluZGV4O2xldCB3PWIrZ1swXS5sZW5ndGg7cmV0dXJuIGEmJnUudGVzdChwLnNsaWNlKHctMSx3KzEpKSYmKGdbMF0rPSIgIix3Kz0xKSxiPGwucG9zJiZ3Pj1sLnBvcz97cmFuZ2U6e2Zyb206Yix0bzp3fSxxdWVyeTpnWzBdLnNsaWNlKHQubGVuZ3RoKSx0ZXh0OmdbMF19Om51bGx9ZnVuY3Rpb24gTGsobil7cmV0dXJuIG4uZG9jQ2hhbmdlZD9uLnN0ZXBzLnNvbWUoZT0+e2NvbnN0IHQ9ZS5zbGljZTtpZighdD8uY29udGVudClyZXR1cm4hMTtjb25zdCByPXQuY29udGVudC50ZXh0QmV0d2VlbigwLHQuY29udGVudC5zaXplLGAKYCk7cmV0dXJuL1xzLy50ZXN0KHIpfSk6ITF9dmFyIFBrPW5ldyBxKCJzdWdnZXN0aW9uIik7ZnVuY3Rpb24gemsoe3BsdWdpbktleTpuPVBrLGVkaXRvcjplLGNoYXI6dD0iQCIsYWxsb3dTcGFjZXM6cj0hMSxhbGxvd1RvSW5jbHVkZUNoYXI6cz0hMSxhbGxvd2VkUHJlZml4ZXM6aT1bIiAiXSxzdGFydE9mTGluZTpvPSExLGRlY29yYXRpb25UYWc6bD0ic3BhbiIsZGVjb3JhdGlvbkNsYXNzOmE9InN1Z2dlc3Rpb24iLGRlY29yYXRpb25Db250ZW50OmM9IiIsZGVjb3JhdGlvbkVtcHR5Q2xhc3M6dT0iaXMtZW1wdHkiLGNvbW1hbmQ6ZD0oKT0+bnVsbCxpdGVtczpoPSgpPT5bXSxyZW5kZXI6Zj0oKT0+KHt9KSxhbGxvdzpwPSgpPT4hMCxmaW5kU3VnZ2VzdGlvbk1hdGNoOm09RGssc2hvdWxkU2hvdzpnLHNob3VsZFJlc2V0RGlzbWlzc2VkOnl9KXtsZXQgaztjb25zdCBiPWY/LigpLHc9ciYmIXMseD0oKT0+e2NvbnN0IE89ZS5zdGF0ZS5zZWxlY3Rpb24uJGFuY2hvci5wb3MsUD1lLnZpZXcuY29vcmRzQXRQb3MoTykse3RvcDpGLHJpZ2h0Ol8sYm90dG9tOkwsbGVmdDpIfT1QO3RyeXtyZXR1cm4gbmV3IERPTVJlY3QoSCxGLF8tSCxMLUYpfWNhdGNoe3JldHVybiBudWxsfX0sdj0oTyxQKT0+UD8oKT0+e2NvbnN0IEY9bi5nZXRTdGF0ZShlLnN0YXRlKSxfPUY/LmRlY29yYXRpb25JZCxMPU8uZG9tLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWRlY29yYXRpb24taWQ9IiR7X30iXWApO3JldHVybiBMPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKXx8bnVsbH06eCxDPSh7bWF0Y2g6TyxkaXNtaXNzZWRSYW5nZTpQLHN0YXRlOkYsdHJhbnNhY3Rpb246X30pPT55Py4oe2VkaXRvcjplLHN0YXRlOkYscmFuZ2U6UCxtYXRjaDpPLHRyYW5zYWN0aW9uOl8sYWxsb3dTcGFjZXM6d30pPyExOnc/Ty5yYW5nZS5mcm9tPT09UC5mcm9tOk8ucmFuZ2UuZnJvbT09PVAuZnJvbSYmIUxrKF8pO2Z1bmN0aW9uIE0oTyxQKXt2YXIgRjt0cnl7Y29uc3QgTD1uLmdldFN0YXRlKE8uc3RhdGUpLEg9TD8uZGVjb3JhdGlvbklkP08uZG9tLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWRlY29yYXRpb24taWQ9IiR7TC5kZWNvcmF0aW9uSWR9Il1gKTpudWxsLG5lPXtlZGl0b3I6ZSxyYW5nZTpMPy5yYW5nZXx8e2Zyb206MCx0bzowfSxxdWVyeTpMPy5xdWVyeXx8bnVsbCx0ZXh0Okw/LnRleHR8fG51bGwsaXRlbXM6W10sY29tbWFuZDpvZT0+ZCh7ZWRpdG9yOmUscmFuZ2U6TD8ucmFuZ2V8fHtmcm9tOjAsdG86MH0scHJvcHM6b2V9KSxkZWNvcmF0aW9uTm9kZTpILGNsaWVudFJlY3Q6dihPLEgpfTsoRj1iPy5vbkV4aXQpPT1udWxsfHxGLmNhbGwoYixuZSl9Y2F0Y2h7fWNvbnN0IF89Ty5zdGF0ZS50ci5zZXRNZXRhKFAse2V4aXQ6ITB9KTtPLmRpc3BhdGNoKF8pfWNvbnN0IFI9bmV3IEcoe2tleTpuLHZpZXcoKXtyZXR1cm57dXBkYXRlOmFzeW5jKE8sUCk9Pnt2YXIgRixfLEwsSCxuZSxvZSxjdDtjb25zdCAkPShGPXRoaXMua2V5KT09bnVsbD92b2lkIDA6Ri5nZXRTdGF0ZShQKSxKPShfPXRoaXMua2V5KT09bnVsbD92b2lkIDA6Xy5nZXRTdGF0ZShPLnN0YXRlKSxDZT0kLmFjdGl2ZSYmSi5hY3RpdmUmJiQucmFuZ2UuZnJvbSE9PUoucmFuZ2UuZnJvbSxjcj0hJC5hY3RpdmUmJkouYWN0aXZlLGRsPSQuYWN0aXZlJiYhSi5hY3RpdmUsSnM9IWNyJiYhZGwmJiQucXVlcnkhPT1KLnF1ZXJ5LHluPWNyfHxDZSYmSnMsdXI9SnN8fENlLEdzPWRsfHxDZSYmSnM7aWYoIXluJiYhdXImJiFHcylyZXR1cm47Y29uc3QgWHQ9R3MmJiF5bj8kOkosaGw9Ty5kb20ucXVlcnlTZWxlY3RvcihgW2RhdGEtZGVjb3JhdGlvbi1pZD0iJHtYdC5kZWNvcmF0aW9uSWR9Il1gKTtrPXtlZGl0b3I6ZSxyYW5nZTpYdC5yYW5nZSxxdWVyeTpYdC5xdWVyeSx0ZXh0Olh0LnRleHQsaXRlbXM6W10sY29tbWFuZDpraD0+ZCh7ZWRpdG9yOmUscmFuZ2U6WHQucmFuZ2UscHJvcHM6a2h9KSxkZWNvcmF0aW9uTm9kZTpobCxjbGllbnRSZWN0OnYoTyxobCl9LHluJiYoKEw9Yj8ub25CZWZvcmVTdGFydCk9PW51bGx8fEwuY2FsbChiLGspKSx1ciYmKChIPWI/Lm9uQmVmb3JlVXBkYXRlKT09bnVsbHx8SC5jYWxsKGIsaykpLCh1cnx8eW4pJiYoay5pdGVtcz1hd2FpdCBoKHtlZGl0b3I6ZSxxdWVyeTpYdC5xdWVyeX0pKSxHcyYmKChuZT1iPy5vbkV4aXQpPT1udWxsfHxuZS5jYWxsKGIsaykpLHVyJiYoKG9lPWI/Lm9uVXBkYXRlKT09bnVsbHx8b2UuY2FsbChiLGspKSx5biYmKChjdD1iPy5vblN0YXJ0KT09bnVsbHx8Y3QuY2FsbChiLGspKX0sZGVzdHJveTooKT0+e3ZhciBPO2smJigoTz1iPy5vbkV4aXQpPT1udWxsfHxPLmNhbGwoYixrKSl9fX0sc3RhdGU6e2luaXQoKXtyZXR1cm57YWN0aXZlOiExLHJhbmdlOntmcm9tOjAsdG86MH0scXVlcnk6bnVsbCx0ZXh0Om51bGwsY29tcG9zaW5nOiExLGRpc21pc3NlZFJhbmdlOm51bGx9fSxhcHBseShPLFAsRixfKXtjb25zdHtpc0VkaXRhYmxlOkx9PWUse2NvbXBvc2luZzpIfT1lLnZpZXcse3NlbGVjdGlvbjpuZX09Tyx7ZW1wdHk6b2UsZnJvbTpjdH09bmUsJD17Li4uUH0sSj1PLmdldE1ldGEobik7aWYoSiYmSi5leGl0KXJldHVybiAkLmFjdGl2ZT0hMSwkLmRlY29yYXRpb25JZD1udWxsLCQucmFuZ2U9e2Zyb206MCx0bzowfSwkLnF1ZXJ5PW51bGwsJC50ZXh0PW51bGwsJC5kaXNtaXNzZWRSYW5nZT1QLmFjdGl2ZT97Li4uUC5yYW5nZX06UC5kaXNtaXNzZWRSYW5nZSwkO2lmKCQuY29tcG9zaW5nPUgsTy5kb2NDaGFuZ2VkJiYkLmRpc21pc3NlZFJhbmdlIT09bnVsbCYmKCQuZGlzbWlzc2VkUmFuZ2U9e2Zyb206Ty5tYXBwaW5nLm1hcCgkLmRpc21pc3NlZFJhbmdlLmZyb20pLHRvOk8ubWFwcGluZy5tYXAoJC5kaXNtaXNzZWRSYW5nZS50byl9KSxMJiYob2V8fGUudmlldy5jb21wb3NpbmcpKXsoY3Q8UC5yYW5nZS5mcm9tfHxjdD5QLnJhbmdlLnRvKSYmIUgmJiFQLmNvbXBvc2luZyYmKCQuYWN0aXZlPSExKTtjb25zdCBDZT1tKHtjaGFyOnQsYWxsb3dTcGFjZXM6cixhbGxvd1RvSW5jbHVkZUNoYXI6cyxhbGxvd2VkUHJlZml4ZXM6aSxzdGFydE9mTGluZTpvLCRwb3NpdGlvbjpuZS4kZnJvbX0pLGNyPWBpZF8ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1KX1gO0NlJiZwKHtlZGl0b3I6ZSxzdGF0ZTpfLHJhbmdlOkNlLnJhbmdlLGlzQWN0aXZlOlAuYWN0aXZlfSkmJighZ3x8Zyh7ZWRpdG9yOmUscmFuZ2U6Q2UucmFuZ2UscXVlcnk6Q2UucXVlcnksdGV4dDpDZS50ZXh0LHRyYW5zYWN0aW9uOk99KSk/KCQuZGlzbWlzc2VkUmFuZ2UhPT1udWxsJiYhQyh7bWF0Y2g6Q2UsZGlzbWlzc2VkUmFuZ2U6JC5kaXNtaXNzZWRSYW5nZSxzdGF0ZTpfLHRyYW5zYWN0aW9uOk99KSYmKCQuZGlzbWlzc2VkUmFuZ2U9bnVsbCksJC5kaXNtaXNzZWRSYW5nZT09PW51bGw/KCQuYWN0aXZlPSEwLCQuZGVjb3JhdGlvbklkPVAuZGVjb3JhdGlvbklkP1AuZGVjb3JhdGlvbklkOmNyLCQucmFuZ2U9Q2UucmFuZ2UsJC5xdWVyeT1DZS5xdWVyeSwkLnRleHQ9Q2UudGV4dCk6JC5hY3RpdmU9ITEpOihDZXx8KCQuZGlzbWlzc2VkUmFuZ2U9bnVsbCksJC5hY3RpdmU9ITEpfWVsc2UgJC5hY3RpdmU9ITE7cmV0dXJuICQuYWN0aXZlfHwoJC5kZWNvcmF0aW9uSWQ9bnVsbCwkLnJhbmdlPXtmcm9tOjAsdG86MH0sJC5xdWVyeT1udWxsLCQudGV4dD1udWxsKSwkfX0scHJvcHM6e2hhbmRsZUtleURvd24oTyxQKXt2YXIgRixfO2NvbnN0e2FjdGl2ZTpMLHJhbmdlOkh9PVIuZ2V0U3RhdGUoTy5zdGF0ZSk7aWYoIUwpcmV0dXJuITE7aWYoUC5rZXk9PT0iRXNjYXBlInx8UC5rZXk9PT0iRXNjIil7Y29uc3Qgb2U9Ui5nZXRTdGF0ZShPLnN0YXRlKTtyZXR1cm4oRj1iPy5vbktleURvd24pPT1udWxsfHxGLmNhbGwoYix7dmlldzpPLGV2ZW50OlAscmFuZ2U6b2UucmFuZ2V9KSxNKE8sbiksITB9cmV0dXJuKChfPWI/Lm9uS2V5RG93bik9PW51bGw/dm9pZCAwOl8uY2FsbChiLHt2aWV3Ok8sZXZlbnQ6UCxyYW5nZTpIfSkpfHwhMX0sZGVjb3JhdGlvbnMoTyl7Y29uc3R7YWN0aXZlOlAscmFuZ2U6RixkZWNvcmF0aW9uSWQ6XyxxdWVyeTpMfT1SLmdldFN0YXRlKE8pO2lmKCFQKXJldHVybiBudWxsO2NvbnN0IEg9IUw/Lmxlbmd0aCxuZT1bYV07cmV0dXJuIEgmJm5lLnB1c2godSksWS5jcmVhdGUoTy5kb2MsW3llLmlubGluZShGLmZyb20sRi50byx7bm9kZU5hbWU6bCxjbGFzczpuZS5qb2luKCIgIiksImRhdGEtZGVjb3JhdGlvbi1pZCI6XywiZGF0YS1kZWNvcmF0aW9uLWNvbnRlbnQiOmN9KV0pfX19KTtyZXR1cm4gUn1mdW5jdGlvbiAkayh7ZWRpdG9yOm4sb3ZlcnJpZGVTdWdnZXN0aW9uT3B0aW9uczplLGV4dGVuc2lvbk5hbWU6dCxjaGFyOnI9IkAifSl7Y29uc3Qgcz1uZXcgcTtyZXR1cm57ZWRpdG9yOm4sY2hhcjpyLHBsdWdpbktleTpzLGNvbW1hbmQ6KHtlZGl0b3I6aSxyYW5nZTpvLHByb3BzOmx9KT0+e3ZhciBhLGMsdTtjb25zdCBkPWkudmlldy5zdGF0ZS5zZWxlY3Rpb24uJHRvLm5vZGVBZnRlcjsoYT1kPy50ZXh0KSE9bnVsbCYmYS5zdGFydHNXaXRoKCIgIikmJihvLnRvKz0xKSxpLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50QXQobyxbe3R5cGU6dCxhdHRyczp7Li4ubCxtZW50aW9uU3VnZ2VzdGlvbkNoYXI6cn19LHt0eXBlOiJ0ZXh0Iix0ZXh0OiIgIn1dKS5ydW4oKSwodT0oYz1pLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpPT1udWxsP3ZvaWQgMDpjLmdldFNlbGVjdGlvbigpKT09bnVsbHx8dS5jb2xsYXBzZVRvRW5kKCl9LGFsbG93Oih7c3RhdGU6aSxyYW5nZTpvfSk9Pntjb25zdCBsPWkuZG9jLnJlc29sdmUoby5mcm9tKSxhPWkuc2NoZW1hLm5vZGVzW3RdO3JldHVybiEhbC5wYXJlbnQudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKGEpfSwuLi5lfX1mdW5jdGlvbiB6ZChuKXtyZXR1cm4obi5vcHRpb25zLnN1Z2dlc3Rpb25zLmxlbmd0aD9uLm9wdGlvbnMuc3VnZ2VzdGlvbnM6W24ub3B0aW9ucy5zdWdnZXN0aW9uXSkubWFwKGU9PiRrKHtlZGl0b3I6bi5lZGl0b3Isb3ZlcnJpZGVTdWdnZXN0aW9uT3B0aW9uczplLGV4dGVuc2lvbk5hbWU6bi5uYW1lLGNoYXI6ZS5jaGFyfSkpfWZ1bmN0aW9uIElhKG4sZSl7Y29uc3QgdD16ZChuKSxyPXQuZmluZChzPT5zLmNoYXI9PT1lKTtyZXR1cm4gcnx8KHQubGVuZ3RoP3RbMF06bnVsbCl9dmFyIEJrPVNlLmNyZWF0ZSh7bmFtZToibWVudGlvbiIscHJpb3JpdHk6MTAxLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e30scmVuZGVyVGV4dCh7bm9kZTpuLHN1Z2dlc3Rpb246ZX0pe3ZhciB0LHI7cmV0dXJuYCR7KHQ9ZT8uY2hhcikhPW51bGw/dDoiQCJ9JHsocj1uLmF0dHJzLmxhYmVsKSE9bnVsbD9yOm4uYXR0cnMuaWR9YH0sZGVsZXRlVHJpZ2dlcldpdGhCYWNrc3BhY2U6ITEscmVuZGVySFRNTCh7b3B0aW9uczpuLG5vZGU6ZSxzdWdnZXN0aW9uOnR9KXt2YXIgcixzO3JldHVyblsic3BhbiIsSyh0aGlzLkhUTUxBdHRyaWJ1dGVzLG4uSFRNTEF0dHJpYnV0ZXMpLGAkeyhyPXQ/LmNoYXIpIT1udWxsP3I6IkAifSR7KHM9ZS5hdHRycy5sYWJlbCkhPW51bGw/czplLmF0dHJzLmlkfWBdfSxzdWdnZXN0aW9uczpbXSxzdWdnZXN0aW9uOnt9fX0sZ3JvdXA6ImlubGluZSIsaW5saW5lOiEwLHNlbGVjdGFibGU6ITEsYXRvbTohMCxhZGRBdHRyaWJ1dGVzKCl7cmV0dXJue2lkOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOm49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLWlkIikscmVuZGVySFRNTDpuPT5uLmlkP3siZGF0YS1pZCI6bi5pZH06e319LGxhYmVsOntkZWZhdWx0Om51bGwscGFyc2VIVE1MOm49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLWxhYmVsIikscmVuZGVySFRNTDpuPT5uLmxhYmVsP3siZGF0YS1sYWJlbCI6bi5sYWJlbH06e319LG1lbnRpb25TdWdnZXN0aW9uQ2hhcjp7ZGVmYXVsdDoiQCIscGFyc2VIVE1MOm49Pm4uZ2V0QXR0cmlidXRlKCJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIikscmVuZGVySFRNTDpuPT4oeyJkYXRhLW1lbnRpb24tc3VnZ2VzdGlvbi1jaGFyIjpuLm1lbnRpb25TdWdnZXN0aW9uQ2hhcn0pfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOmBzcGFuW2RhdGEtdHlwZT0iJHt0aGlzLm5hbWV9Il1gfV19LHJlbmRlckhUTUwoe25vZGU6bixIVE1MQXR0cmlidXRlczplfSl7Y29uc3QgdD1JYSh0aGlzLG4uYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyKTtpZih0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwhPT12b2lkIDApcmV0dXJuWyJzcGFuIixLKHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9LHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlKSx0aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwoe29wdGlvbnM6dGhpcy5vcHRpb25zLG5vZGU6bixzdWdnZXN0aW9uOnR9KV07Y29uc3Qgcj17Li4udGhpcy5vcHRpb25zfTtyLkhUTUxBdHRyaWJ1dGVzPUsoeyJkYXRhLXR5cGUiOnRoaXMubmFtZX0sdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpO2NvbnN0IHM9dGhpcy5vcHRpb25zLnJlbmRlckhUTUwoe29wdGlvbnM6cixub2RlOm4sc3VnZ2VzdGlvbjp0fSk7cmV0dXJuIHR5cGVvZiBzPT0ic3RyaW5nIj9bInNwYW4iLEsoeyJkYXRhLXR5cGUiOnRoaXMubmFtZX0sdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLGUpLHNdOnN9LC4uLlRkKHtub2RlTmFtZToibWVudGlvbiIsbmFtZToiQCIsc2VsZkNsb3Npbmc6ITAsYWxsb3dlZEF0dHJpYnV0ZXM6WyJpZCIsImxhYmVsIix7bmFtZToibWVudGlvblN1Z2dlc3Rpb25DaGFyIixza2lwSWZEZWZhdWx0OiJAIn1dLHBhcnNlQXR0cmlidXRlczpuPT57Y29uc3QgZT17fSx0PS8oXHcrKT0oPzoiKFteIl0qKSJ8JyhbXiddKiknKS9nO2xldCByPXQuZXhlYyhuKTtmb3IoO3IhPT1udWxsOyl7Y29uc3RbLHMsaSxvXT1yLGw9aT8/bztlW3M9PT0iY2hhciI/Im1lbnRpb25TdWdnZXN0aW9uQ2hhciI6c109bCxyPXQuZXhlYyhuKX1yZXR1cm4gZX0sc2VyaWFsaXplQXR0cmlidXRlczpuPT5PYmplY3QuZW50cmllcyhuKS5maWx0ZXIoKFssZV0pPT5lIT1udWxsKS5tYXAoKFtlLHRdKT0+YCR7ZT09PSJtZW50aW9uU3VnZ2VzdGlvbkNoYXIiPyJjaGFyIjplfT0iJHt0fSJgKS5qb2luKCIgIil9KSxyZW5kZXJUZXh0KHtub2RlOm59KXtjb25zdCBlPXtvcHRpb25zOnRoaXMub3B0aW9ucyxub2RlOm4sc3VnZ2VzdGlvbjpJYSh0aGlzLG4uYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyKX07cmV0dXJuIHRoaXMub3B0aW9ucy5yZW5kZXJMYWJlbCE9PXZvaWQgMD90aGlzLm9wdGlvbnMucmVuZGVyTGFiZWwoZSk6dGhpcy5vcHRpb25zLnJlbmRlclRleHQoZSl9LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJue0JhY2tzcGFjZTooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuY29tbWFuZCgoe3RyOm4sc3RhdGU6ZX0pPT57bGV0IHQ9ITE7Y29uc3R7c2VsZWN0aW9uOnJ9PWUse2VtcHR5OnMsYW5jaG9yOml9PXI7aWYoIXMpcmV0dXJuITE7bGV0IG89bmV3IExlLGw9MDtyZXR1cm4gZS5kb2Mubm9kZXNCZXR3ZWVuKGktMSxpLChhLGMpPT57aWYoYS50eXBlLm5hbWU9PT10aGlzLm5hbWUpcmV0dXJuIHQ9ITAsbz1hLGw9YywhMX0pLHQmJm4uaW5zZXJ0VGV4dCh0aGlzLm9wdGlvbnMuZGVsZXRlVHJpZ2dlcldpdGhCYWNrc3BhY2U/IiI6by5hdHRycy5tZW50aW9uU3VnZ2VzdGlvbkNoYXIsbCxsK28ubm9kZVNpemUpLHR9KX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybiB6ZCh0aGlzKS5tYXAoemspfX0pLF9rPUJrO2Z1bmN0aW9uIEhrKG49e30pe3JldHVybiBuZXcgRyh7dmlldyhlKXtyZXR1cm4gbmV3IEZrKGUsbil9fSl9Y2xhc3MgRmt7Y29uc3RydWN0b3IoZSx0KXt2YXIgcjt0aGlzLmVkaXRvclZpZXc9ZSx0aGlzLmN1cnNvclBvcz1udWxsLHRoaXMuZWxlbWVudD1udWxsLHRoaXMudGltZW91dD0tMSx0aGlzLndpZHRoPShyPXQud2lkdGgpIT09bnVsbCYmciE9PXZvaWQgMD9yOjEsdGhpcy5jb2xvcj10LmNvbG9yPT09ITE/dm9pZCAwOnQuY29sb3J8fCJibGFjayIsdGhpcy5jbGFzcz10LmNsYXNzLHRoaXMuaGFuZGxlcnM9WyJkcmFnb3ZlciIsImRyYWdlbmQiLCJkcm9wIiwiZHJhZ2xlYXZlIl0ubWFwKHM9PntsZXQgaT1vPT57dGhpc1tzXShvKX07cmV0dXJuIGUuZG9tLmFkZEV2ZW50TGlzdGVuZXIocyxpKSx7bmFtZTpzLGhhbmRsZXI6aX19KX1kZXN0cm95KCl7dGhpcy5oYW5kbGVycy5mb3JFYWNoKCh7bmFtZTplLGhhbmRsZXI6dH0pPT50aGlzLmVkaXRvclZpZXcuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0KSl9dXBkYXRlKGUsdCl7dGhpcy5jdXJzb3JQb3MhPW51bGwmJnQuZG9jIT1lLnN0YXRlLmRvYyYmKHRoaXMuY3Vyc29yUG9zPmUuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZT90aGlzLnNldEN1cnNvcihudWxsKTp0aGlzLnVwZGF0ZU92ZXJsYXkoKSl9c2V0Q3Vyc29yKGUpe2UhPXRoaXMuY3Vyc29yUG9zJiYodGhpcy5jdXJzb3JQb3M9ZSxlPT1udWxsPyh0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZWxlbWVudD1udWxsKTp0aGlzLnVwZGF0ZU92ZXJsYXkoKSl9dXBkYXRlT3ZlcmxheSgpe2xldCBlPXRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MucmVzb2x2ZSh0aGlzLmN1cnNvclBvcyksdD0hZS5wYXJlbnQuaW5saW5lQ29udGVudCxyLHM9dGhpcy5lZGl0b3JWaWV3LmRvbSxpPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1pLndpZHRoL3Mub2Zmc2V0V2lkdGgsbD1pLmhlaWdodC9zLm9mZnNldEhlaWdodDtpZih0KXtsZXQgZD1lLm5vZGVCZWZvcmUsaD1lLm5vZGVBZnRlcjtpZihkfHxoKXtsZXQgZj10aGlzLmVkaXRvclZpZXcubm9kZURPTSh0aGlzLmN1cnNvclBvcy0oZD9kLm5vZGVTaXplOjApKTtpZihmKXtsZXQgcD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG09ZD9wLmJvdHRvbTpwLnRvcDtkJiZoJiYobT0obSt0aGlzLmVkaXRvclZpZXcubm9kZURPTSh0aGlzLmN1cnNvclBvcykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKS8yKTtsZXQgZz10aGlzLndpZHRoLzIqbDtyPXtsZWZ0OnAubGVmdCxyaWdodDpwLnJpZ2h0LHRvcDptLWcsYm90dG9tOm0rZ319fX1pZighcil7bGV0IGQ9dGhpcy5lZGl0b3JWaWV3LmNvb3Jkc0F0UG9zKHRoaXMuY3Vyc29yUG9zKSxoPXRoaXMud2lkdGgvMipvO3I9e2xlZnQ6ZC5sZWZ0LWgscmlnaHQ6ZC5sZWZ0K2gsdG9wOmQudG9wLGJvdHRvbTpkLmJvdHRvbX19bGV0IGE9dGhpcy5lZGl0b3JWaWV3LmRvbS5vZmZzZXRQYXJlbnQ7dGhpcy5lbGVtZW50fHwodGhpcy5lbGVtZW50PWEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHRoaXMuY2xhc3MmJih0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPXRoaXMuY2xhc3MpLHRoaXMuZWxlbWVudC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDUwOyBwb2ludGVyLWV2ZW50czogbm9uZTsiLHRoaXMuY29sb3ImJih0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yPXRoaXMuY29sb3IpKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgicHJvc2VtaXJyb3ItZHJvcGN1cnNvci1ibG9jayIsdCksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInByb3NlbWlycm9yLWRyb3BjdXJzb3ItaW5saW5lIiwhdCk7bGV0IGMsdTtpZighYXx8YT09ZG9jdW1lbnQuYm9keSYmZ2V0Q29tcHV0ZWRTdHlsZShhKS5wb3NpdGlvbj09InN0YXRpYyIpYz0tcGFnZVhPZmZzZXQsdT0tcGFnZVlPZmZzZXQ7ZWxzZXtsZXQgZD1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9ZC53aWR0aC9hLm9mZnNldFdpZHRoLGY9ZC5oZWlnaHQvYS5vZmZzZXRIZWlnaHQ7Yz1kLmxlZnQtYS5zY3JvbGxMZWZ0KmgsdT1kLnRvcC1hLnNjcm9sbFRvcCpmfXRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0PShyLmxlZnQtYykvbysicHgiLHRoaXMuZWxlbWVudC5zdHlsZS50b3A9KHIudG9wLXUpL2wrInB4Iix0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGg9KHIucmlnaHQtci5sZWZ0KS9vKyJweCIsdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodD0oci5ib3R0b20tci50b3ApL2wrInB4In1zY2hlZHVsZVJlbW92YWwoZSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksdGhpcy50aW1lb3V0PXNldFRpbWVvdXQoKCk9PnRoaXMuc2V0Q3Vyc29yKG51bGwpLGUpfWRyYWdvdmVyKGUpe2lmKCF0aGlzLmVkaXRvclZpZXcuZWRpdGFibGUpcmV0dXJuO2xldCB0PXRoaXMuZWRpdG9yVmlldy5wb3NBdENvb3Jkcyh7bGVmdDplLmNsaWVudFgsdG9wOmUuY2xpZW50WX0pLHI9dCYmdC5pbnNpZGU+PTAmJnRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2Mubm9kZUF0KHQuaW5zaWRlKSxzPXImJnIudHlwZS5zcGVjLmRpc2FibGVEcm9wQ3Vyc29yLGk9dHlwZW9mIHM9PSJmdW5jdGlvbiI/cyh0aGlzLmVkaXRvclZpZXcsdCxlKTpzO2lmKHQmJiFpKXtsZXQgbz10LnBvcztpZih0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcmJnRoaXMuZWRpdG9yVmlldy5kcmFnZ2luZy5zbGljZSl7bGV0IGw9cWModGhpcy5lZGl0b3JWaWV3LnN0YXRlLmRvYyxvLHRoaXMuZWRpdG9yVmlldy5kcmFnZ2luZy5zbGljZSk7bCE9bnVsbCYmKG89bCl9dGhpcy5zZXRDdXJzb3IobyksdGhpcy5zY2hlZHVsZVJlbW92YWwoNWUzKX19ZHJhZ2VuZCgpe3RoaXMuc2NoZWR1bGVSZW1vdmFsKDIwKX1kcm9wKCl7dGhpcy5zY2hlZHVsZVJlbW92YWwoMjApfWRyYWdsZWF2ZShlKXt0aGlzLmVkaXRvclZpZXcuZG9tLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCl8fHRoaXMuc2V0Q3Vyc29yKG51bGwpfX1jbGFzcyBlZSBleHRlbmRzIEl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSxlKX1tYXAoZSx0KXtsZXQgcj1lLnJlc29sdmUodC5tYXAodGhpcy5oZWFkKSk7cmV0dXJuIGVlLnZhbGlkKHIpP25ldyBlZShyKTpJLm5lYXIocil9Y29udGVudCgpe3JldHVybiBFLmVtcHR5fWVxKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZWUmJmUuaGVhZD09dGhpcy5oZWFkfXRvSlNPTigpe3JldHVybnt0eXBlOiJnYXBjdXJzb3IiLHBvczp0aGlzLmhlYWR9fXN0YXRpYyBmcm9tSlNPTihlLHQpe2lmKHR5cGVvZiB0LnBvcyE9Im51bWJlciIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgaW5wdXQgZm9yIEdhcEN1cnNvci5mcm9tSlNPTiIpO3JldHVybiBuZXcgZWUoZS5yZXNvbHZlKHQucG9zKSl9Z2V0Qm9va21hcmsoKXtyZXR1cm4gbmV3IHFvKHRoaXMuYW5jaG9yKX1zdGF0aWMgdmFsaWQoZSl7bGV0IHQ9ZS5wYXJlbnQ7aWYodC5pbmxpbmVDb250ZW50fHwhVmsoZSl8fCFVayhlKSlyZXR1cm4hMTtsZXQgcj10LnR5cGUuc3BlYy5hbGxvd0dhcEN1cnNvcjtpZihyIT1udWxsKXJldHVybiByO2xldCBzPXQuY29udGVudE1hdGNoQXQoZS5pbmRleCgpKS5kZWZhdWx0VHlwZTtyZXR1cm4gcyYmcy5pc1RleHRibG9ja31zdGF0aWMgZmluZEdhcEN1cnNvckZyb20oZSx0LHI9ITEpe2U6Zm9yKDs7KXtpZighciYmZWUudmFsaWQoZSkpcmV0dXJuIGU7bGV0IHM9ZS5wb3MsaT1udWxsO2ZvcihsZXQgbz1lLmRlcHRoOztvLS0pe2xldCBsPWUubm9kZShvKTtpZih0PjA/ZS5pbmRleEFmdGVyKG8pPGwuY2hpbGRDb3VudDplLmluZGV4KG8pPjApe2k9bC5jaGlsZCh0PjA/ZS5pbmRleEFmdGVyKG8pOmUuaW5kZXgobyktMSk7YnJlYWt9ZWxzZSBpZihvPT0wKXJldHVybiBudWxsO3MrPXQ7bGV0IGE9ZS5kb2MucmVzb2x2ZShzKTtpZihlZS52YWxpZChhKSlyZXR1cm4gYX1mb3IoOzspe2xldCBvPXQ+MD9pLmZpcnN0Q2hpbGQ6aS5sYXN0Q2hpbGQ7aWYoIW8pe2lmKGkuaXNBdG9tJiYhaS5pc1RleHQmJiFOLmlzU2VsZWN0YWJsZShpKSl7ZT1lLmRvYy5yZXNvbHZlKHMraS5ub2RlU2l6ZSp0KSxyPSExO2NvbnRpbnVlIGV9YnJlYWt9aT1vLHMrPXQ7bGV0IGw9ZS5kb2MucmVzb2x2ZShzKTtpZihlZS52YWxpZChsKSlyZXR1cm4gbH1yZXR1cm4gbnVsbH19fWVlLnByb3RvdHlwZS52aXNpYmxlPSExO2VlLmZpbmRGcm9tPWVlLmZpbmRHYXBDdXJzb3JGcm9tO0kuanNvbklEKCJnYXBjdXJzb3IiLGVlKTtjbGFzcyBxb3tjb25zdHJ1Y3RvcihlKXt0aGlzLnBvcz1lfW1hcChlKXtyZXR1cm4gbmV3IHFvKGUubWFwKHRoaXMucG9zKSl9cmVzb2x2ZShlKXtsZXQgdD1lLnJlc29sdmUodGhpcy5wb3MpO3JldHVybiBlZS52YWxpZCh0KT9uZXcgZWUodCk6SS5uZWFyKHQpfX1mdW5jdGlvbiAkZChuKXtyZXR1cm4gbi5pc0F0b218fG4uc3BlYy5pc29sYXRpbmd8fG4uc3BlYy5jcmVhdGVHYXBDdXJzb3J9ZnVuY3Rpb24gVmsobil7Zm9yKGxldCBlPW4uZGVwdGg7ZT49MDtlLS0pe2xldCB0PW4uaW5kZXgoZSkscj1uLm5vZGUoZSk7aWYodD09MCl7aWYoci50eXBlLnNwZWMuaXNvbGF0aW5nKXJldHVybiEwO2NvbnRpbnVlfWZvcihsZXQgcz1yLmNoaWxkKHQtMSk7O3M9cy5sYXN0Q2hpbGQpe2lmKHMuY2hpbGRDb3VudD09MCYmIXMuaW5saW5lQ29udGVudHx8JGQocy50eXBlKSlyZXR1cm4hMDtpZihzLmlubGluZUNvbnRlbnQpcmV0dXJuITF9fXJldHVybiEwfWZ1bmN0aW9uIFVrKG4pe2ZvcihsZXQgZT1uLmRlcHRoO2U+PTA7ZS0tKXtsZXQgdD1uLmluZGV4QWZ0ZXIoZSkscj1uLm5vZGUoZSk7aWYodD09ci5jaGlsZENvdW50KXtpZihyLnR5cGUuc3BlYy5pc29sYXRpbmcpcmV0dXJuITA7Y29udGludWV9Zm9yKGxldCBzPXIuY2hpbGQodCk7O3M9cy5maXJzdENoaWxkKXtpZihzLmNoaWxkQ291bnQ9PTAmJiFzLmlubGluZUNvbnRlbnR8fCRkKHMudHlwZSkpcmV0dXJuITA7aWYocy5pbmxpbmVDb250ZW50KXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiBqaygpe3JldHVybiBuZXcgRyh7cHJvcHM6e2RlY29yYXRpb25zOkprLGNyZWF0ZVNlbGVjdGlvbkJldHdlZW4obixlLHQpe3JldHVybiBlLnBvcz09dC5wb3MmJmVlLnZhbGlkKHQpP25ldyBlZSh0KTpudWxsfSxoYW5kbGVDbGljazpXayxoYW5kbGVLZXlEb3duOnFrLGhhbmRsZURPTUV2ZW50czp7YmVmb3JlaW5wdXQ6S2t9fX0pfWNvbnN0IHFrPU5vKHtBcnJvd0xlZnQ6dnIoImhvcml6IiwtMSksQXJyb3dSaWdodDp2cigiaG9yaXoiLDEpLEFycm93VXA6dnIoInZlcnQiLC0xKSxBcnJvd0Rvd246dnIoInZlcnQiLDEpfSk7ZnVuY3Rpb24gdnIobixlKXtjb25zdCB0PW49PSJ2ZXJ0Ij9lPjA/ImRvd24iOiJ1cCI6ZT4wPyJyaWdodCI6ImxlZnQiO3JldHVybiBmdW5jdGlvbihyLHMsaSl7bGV0IG89ci5zZWxlY3Rpb24sbD1lPjA/by4kdG86by4kZnJvbSxhPW8uZW1wdHk7aWYobyBpbnN0YW5jZW9mIEQpe2lmKCFpLmVuZE9mVGV4dGJsb2NrKHQpfHxsLmRlcHRoPT0wKXJldHVybiExO2E9ITEsbD1yLmRvYy5yZXNvbHZlKGU+MD9sLmFmdGVyKCk6bC5iZWZvcmUoKSl9bGV0IGM9ZWUuZmluZEdhcEN1cnNvckZyb20obCxlLGEpO3JldHVybiBjPyhzJiZzKHIudHIuc2V0U2VsZWN0aW9uKG5ldyBlZShjKSkpLCEwKTohMX19ZnVuY3Rpb24gV2sobixlLHQpe2lmKCFufHwhbi5lZGl0YWJsZSlyZXR1cm4hMTtsZXQgcj1uLnN0YXRlLmRvYy5yZXNvbHZlKGUpO2lmKCFlZS52YWxpZChyKSlyZXR1cm4hMTtsZXQgcz1uLnBvc0F0Q29vcmRzKHtsZWZ0OnQuY2xpZW50WCx0b3A6dC5jbGllbnRZfSk7cmV0dXJuIHMmJnMuaW5zaWRlPi0xJiZOLmlzU2VsZWN0YWJsZShuLnN0YXRlLmRvYy5ub2RlQXQocy5pbnNpZGUpKT8hMToobi5kaXNwYXRjaChuLnN0YXRlLnRyLnNldFNlbGVjdGlvbihuZXcgZWUocikpKSwhMCl9ZnVuY3Rpb24gS2sobixlKXtpZihlLmlucHV0VHlwZSE9Imluc2VydENvbXBvc2l0aW9uVGV4dCJ8fCEobi5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBlZSkpcmV0dXJuITE7bGV0eyRmcm9tOnR9PW4uc3RhdGUuc2VsZWN0aW9uLHI9dC5wYXJlbnQuY29udGVudE1hdGNoQXQodC5pbmRleCgpKS5maW5kV3JhcHBpbmcobi5zdGF0ZS5zY2hlbWEubm9kZXMudGV4dCk7aWYoIXIpcmV0dXJuITE7bGV0IHM9Uy5lbXB0eTtmb3IobGV0IG89ci5sZW5ndGgtMTtvPj0wO28tLSlzPVMuZnJvbShyW29dLmNyZWF0ZUFuZEZpbGwobnVsbCxzKSk7bGV0IGk9bi5zdGF0ZS50ci5yZXBsYWNlKHQucG9zLHQucG9zLG5ldyBFKHMsMCwwKSk7cmV0dXJuIGkuc2V0U2VsZWN0aW9uKEQubmVhcihpLmRvYy5yZXNvbHZlKHQucG9zKzEpKSksbi5kaXNwYXRjaChpKSwhMX1mdW5jdGlvbiBKayhuKXtpZighKG4uc2VsZWN0aW9uIGluc3RhbmNlb2YgZWUpKXJldHVybiBudWxsO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmNsYXNzTmFtZT0iUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIixZLmNyZWF0ZShuLmRvYyxbeWUud2lkZ2V0KG4uc2VsZWN0aW9uLmhlYWQsZSx7a2V5OiJnYXBjdXJzb3IifSldKX12YXIgUXI9MjAwLGNlPWZ1bmN0aW9uKCl7fTtjZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD8oZT1jZS5mcm9tKGUpLCF0aGlzLmxlbmd0aCYmZXx8ZS5sZW5ndGg8UXImJnRoaXMubGVhZkFwcGVuZChlKXx8dGhpcy5sZW5ndGg8UXImJmUubGVhZlByZXBlbmQodGhpcyl8fHRoaXMuYXBwZW5kSW5uZXIoZSkpOnRoaXN9O2NlLnByb3RvdHlwZS5wcmVwZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD9jZS5mcm9tKGUpLmFwcGVuZCh0aGlzKTp0aGlzfTtjZS5wcm90b3R5cGUuYXBwZW5kSW5uZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBHayh0aGlzLGUpfTtjZS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9MCksdD09PXZvaWQgMCYmKHQ9dGhpcy5sZW5ndGgpLGU+PXQ/Y2UuZW1wdHk6dGhpcy5zbGljZUlubmVyKE1hdGgubWF4KDAsZSksTWF0aC5taW4odGhpcy5sZW5ndGgsdCkpfTtjZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe2lmKCEoZTwwfHxlPj10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXMuZ2V0SW5uZXIoZSl9O2NlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCxyKXt0PT09dm9pZCAwJiYodD0wKSxyPT09dm9pZCAwJiYocj10aGlzLmxlbmd0aCksdDw9cj90aGlzLmZvckVhY2hJbm5lcihlLHQsciwwKTp0aGlzLmZvckVhY2hJbnZlcnRlZElubmVyKGUsdCxyLDApfTtjZS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGUsdCxyKXt0PT09dm9pZCAwJiYodD0wKSxyPT09dm9pZCAwJiYocj10aGlzLmxlbmd0aCk7dmFyIHM9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihpLG8pe3JldHVybiBzLnB1c2goZShpLG8pKX0sdCxyKSxzfTtjZS5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgY2U/ZTplJiZlLmxlbmd0aD9uZXcgQmQoZSk6Y2UuZW1wdHl9O3ZhciBCZD0oZnVuY3Rpb24obil7ZnVuY3Rpb24gZShyKXtuLmNhbGwodGhpcyksdGhpcy52YWx1ZXM9cn1uJiYoZS5fX3Byb3RvX189biksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuJiZuLnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZTt2YXIgdD17bGVuZ3RoOntjb25maWd1cmFibGU6ITB9LGRlcHRoOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gZS5wcm90b3R5cGUuZmxhdHRlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlc30sZS5wcm90b3R5cGUuc2xpY2VJbm5lcj1mdW5jdGlvbihzLGkpe3JldHVybiBzPT0wJiZpPT10aGlzLmxlbmd0aD90aGlzOm5ldyBlKHRoaXMudmFsdWVzLnNsaWNlKHMsaSkpfSxlLnByb3RvdHlwZS5nZXRJbm5lcj1mdW5jdGlvbihzKXtyZXR1cm4gdGhpcy52YWx1ZXNbc119LGUucHJvdG90eXBlLmZvckVhY2hJbm5lcj1mdW5jdGlvbihzLGksbyxsKXtmb3IodmFyIGE9aTthPG87YSsrKWlmKHModGhpcy52YWx1ZXNbYV0sbCthKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lcj1mdW5jdGlvbihzLGksbyxsKXtmb3IodmFyIGE9aS0xO2E+PW87YS0tKWlmKHModGhpcy52YWx1ZXNbYV0sbCthKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5sZWFmQXBwZW5kPWZ1bmN0aW9uKHMpe2lmKHRoaXMubGVuZ3RoK3MubGVuZ3RoPD1RcilyZXR1cm4gbmV3IGUodGhpcy52YWx1ZXMuY29uY2F0KHMuZmxhdHRlbigpKSl9LGUucHJvdG90eXBlLmxlYWZQcmVwZW5kPWZ1bmN0aW9uKHMpe2lmKHRoaXMubGVuZ3RoK3MubGVuZ3RoPD1RcilyZXR1cm4gbmV3IGUocy5mbGF0dGVuKCkuY29uY2F0KHRoaXMudmFsdWVzKSl9LHQubGVuZ3RoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGh9LHQuZGVwdGguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpLGV9KShjZSk7Y2UuZW1wdHk9bmV3IEJkKFtdKTt2YXIgR2s9KGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGUodCxyKXtuLmNhbGwodGhpcyksdGhpcy5sZWZ0PXQsdGhpcy5yaWdodD1yLHRoaXMubGVuZ3RoPXQubGVuZ3RoK3IubGVuZ3RoLHRoaXMuZGVwdGg9TWF0aC5tYXgodC5kZXB0aCxyLmRlcHRoKSsxfXJldHVybiBuJiYoZS5fX3Byb3RvX189biksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuJiZuLnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5mbGF0dGVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVmdC5mbGF0dGVuKCkuY29uY2F0KHRoaXMucmlnaHQuZmxhdHRlbigpKX0sZS5wcm90b3R5cGUuZ2V0SW5uZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHI8dGhpcy5sZWZ0Lmxlbmd0aD90aGlzLmxlZnQuZ2V0KHIpOnRoaXMucmlnaHQuZ2V0KHItdGhpcy5sZWZ0Lmxlbmd0aCl9LGUucHJvdG90eXBlLmZvckVhY2hJbm5lcj1mdW5jdGlvbihyLHMsaSxvKXt2YXIgbD10aGlzLmxlZnQubGVuZ3RoO2lmKHM8bCYmdGhpcy5sZWZ0LmZvckVhY2hJbm5lcihyLHMsTWF0aC5taW4oaSxsKSxvKT09PSExfHxpPmwmJnRoaXMucmlnaHQuZm9yRWFjaElubmVyKHIsTWF0aC5tYXgocy1sLDApLE1hdGgubWluKHRoaXMubGVuZ3RoLGkpLWwsbytsKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lcj1mdW5jdGlvbihyLHMsaSxvKXt2YXIgbD10aGlzLmxlZnQubGVuZ3RoO2lmKHM+bCYmdGhpcy5yaWdodC5mb3JFYWNoSW52ZXJ0ZWRJbm5lcihyLHMtbCxNYXRoLm1heChpLGwpLWwsbytsKT09PSExfHxpPGwmJnRoaXMubGVmdC5mb3JFYWNoSW52ZXJ0ZWRJbm5lcihyLE1hdGgubWluKHMsbCksaSxvKT09PSExKXJldHVybiExfSxlLnByb3RvdHlwZS5zbGljZUlubmVyPWZ1bmN0aW9uKHIscyl7aWYocj09MCYmcz09dGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIGk9dGhpcy5sZWZ0Lmxlbmd0aDtyZXR1cm4gczw9aT90aGlzLmxlZnQuc2xpY2UocixzKTpyPj1pP3RoaXMucmlnaHQuc2xpY2Uoci1pLHMtaSk6dGhpcy5sZWZ0LnNsaWNlKHIsaSkuYXBwZW5kKHRoaXMucmlnaHQuc2xpY2UoMCxzLWkpKX0sZS5wcm90b3R5cGUubGVhZkFwcGVuZD1mdW5jdGlvbihyKXt2YXIgcz10aGlzLnJpZ2h0LmxlYWZBcHBlbmQocik7aWYocylyZXR1cm4gbmV3IGUodGhpcy5sZWZ0LHMpfSxlLnByb3RvdHlwZS5sZWFmUHJlcGVuZD1mdW5jdGlvbihyKXt2YXIgcz10aGlzLmxlZnQubGVhZlByZXBlbmQocik7aWYocylyZXR1cm4gbmV3IGUocyx0aGlzLnJpZ2h0KX0sZS5wcm90b3R5cGUuYXBwZW5kSW5uZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMubGVmdC5kZXB0aD49TWF0aC5tYXgodGhpcy5yaWdodC5kZXB0aCxyLmRlcHRoKSsxP25ldyBlKHRoaXMubGVmdCxuZXcgZSh0aGlzLnJpZ2h0LHIpKTpuZXcgZSh0aGlzLHIpfSxlfSkoY2UpO2NvbnN0IFFrPTUwMDtjbGFzcyBGZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaXRlbXM9ZSx0aGlzLmV2ZW50Q291bnQ9dH1wb3BFdmVudChlLHQpe2lmKHRoaXMuZXZlbnRDb3VudD09MClyZXR1cm4gbnVsbDtsZXQgcj10aGlzLml0ZW1zLmxlbmd0aDtmb3IoOztyLS0paWYodGhpcy5pdGVtcy5nZXQoci0xKS5zZWxlY3Rpb24pey0tcjticmVha31sZXQgcyxpO3QmJihzPXRoaXMucmVtYXBwaW5nKHIsdGhpcy5pdGVtcy5sZW5ndGgpLGk9cy5tYXBzLmxlbmd0aCk7bGV0IG89ZS50cixsLGEsYz1bXSx1PVtdO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2goKGQsaCk9PntpZighZC5zdGVwKXtzfHwocz10aGlzLnJlbWFwcGluZyhyLGgrMSksaT1zLm1hcHMubGVuZ3RoKSxpLS0sdS5wdXNoKGQpO3JldHVybn1pZihzKXt1LnB1c2gobmV3IGplKGQubWFwKSk7bGV0IGY9ZC5zdGVwLm1hcChzLnNsaWNlKGkpKSxwO2YmJm8ubWF5YmVTdGVwKGYpLmRvYyYmKHA9by5tYXBwaW5nLm1hcHNbby5tYXBwaW5nLm1hcHMubGVuZ3RoLTFdLGMucHVzaChuZXcgamUocCx2b2lkIDAsdm9pZCAwLGMubGVuZ3RoK3UubGVuZ3RoKSkpLGktLSxwJiZzLmFwcGVuZE1hcChwLGkpfWVsc2Ugby5tYXliZVN0ZXAoZC5zdGVwKTtpZihkLnNlbGVjdGlvbilyZXR1cm4gbD1zP2Quc2VsZWN0aW9uLm1hcChzLnNsaWNlKGkpKTpkLnNlbGVjdGlvbixhPW5ldyBGZSh0aGlzLml0ZW1zLnNsaWNlKDAscikuYXBwZW5kKHUucmV2ZXJzZSgpLmNvbmNhdChjKSksdGhpcy5ldmVudENvdW50LTEpLCExfSx0aGlzLml0ZW1zLmxlbmd0aCwwKSx7cmVtYWluaW5nOmEsdHJhbnNmb3JtOm8sc2VsZWN0aW9uOmx9fWFkZFRyYW5zZm9ybShlLHQscixzKXtsZXQgaT1bXSxvPXRoaXMuZXZlbnRDb3VudCxsPXRoaXMuaXRlbXMsYT0hcyYmbC5sZW5ndGg/bC5nZXQobC5sZW5ndGgtMSk6bnVsbDtmb3IobGV0IHU9MDt1PGUuc3RlcHMubGVuZ3RoO3UrKyl7bGV0IGQ9ZS5zdGVwc1t1XS5pbnZlcnQoZS5kb2NzW3VdKSxoPW5ldyBqZShlLm1hcHBpbmcubWFwc1t1XSxkLHQpLGY7KGY9YSYmYS5tZXJnZShoKSkmJihoPWYsdT9pLnBvcCgpOmw9bC5zbGljZSgwLGwubGVuZ3RoLTEpKSxpLnB1c2goaCksdCYmKG8rKyx0PXZvaWQgMCksc3x8KGE9aCl9bGV0IGM9by1yLmRlcHRoO3JldHVybiBjPllrJiYobD1YayhsLGMpLG8tPWMpLG5ldyBGZShsLmFwcGVuZChpKSxvKX1yZW1hcHBpbmcoZSx0KXtsZXQgcj1uZXcgSm47cmV0dXJuIHRoaXMuaXRlbXMuZm9yRWFjaCgocyxpKT0+e2xldCBvPXMubWlycm9yT2Zmc2V0IT1udWxsJiZpLXMubWlycm9yT2Zmc2V0Pj1lP3IubWFwcy5sZW5ndGgtcy5taXJyb3JPZmZzZXQ6dm9pZCAwO3IuYXBwZW5kTWFwKHMubWFwLG8pfSxlLHQpLHJ9YWRkTWFwcyhlKXtyZXR1cm4gdGhpcy5ldmVudENvdW50PT0wP3RoaXM6bmV3IEZlKHRoaXMuaXRlbXMuYXBwZW5kKGUubWFwKHQ9Pm5ldyBqZSh0KSkpLHRoaXMuZXZlbnRDb3VudCl9cmViYXNlZChlLHQpe2lmKCF0aGlzLmV2ZW50Q291bnQpcmV0dXJuIHRoaXM7bGV0IHI9W10scz1NYXRoLm1heCgwLHRoaXMuaXRlbXMubGVuZ3RoLXQpLGk9ZS5tYXBwaW5nLG89ZS5zdGVwcy5sZW5ndGgsbD10aGlzLmV2ZW50Q291bnQ7dGhpcy5pdGVtcy5mb3JFYWNoKGg9PntoLnNlbGVjdGlvbiYmbC0tfSxzKTtsZXQgYT10O3RoaXMuaXRlbXMuZm9yRWFjaChoPT57bGV0IGY9aS5nZXRNaXJyb3IoLS1hKTtpZihmPT1udWxsKXJldHVybjtvPU1hdGgubWluKG8sZik7bGV0IHA9aS5tYXBzW2ZdO2lmKGguc3RlcCl7bGV0IG09ZS5zdGVwc1tmXS5pbnZlcnQoZS5kb2NzW2ZdKSxnPWguc2VsZWN0aW9uJiZoLnNlbGVjdGlvbi5tYXAoaS5zbGljZShhKzEsZikpO2cmJmwrKyxyLnB1c2gobmV3IGplKHAsbSxnKSl9ZWxzZSByLnB1c2gobmV3IGplKHApKX0scyk7bGV0IGM9W107Zm9yKGxldCBoPXQ7aDxvO2grKyljLnB1c2gobmV3IGplKGkubWFwc1toXSkpO2xldCB1PXRoaXMuaXRlbXMuc2xpY2UoMCxzKS5hcHBlbmQoYykuYXBwZW5kKHIpLGQ9bmV3IEZlKHUsbCk7cmV0dXJuIGQuZW1wdHlJdGVtQ291bnQoKT5RayYmKGQ9ZC5jb21wcmVzcyh0aGlzLml0ZW1zLmxlbmd0aC1yLmxlbmd0aCkpLGR9ZW1wdHlJdGVtQ291bnQoKXtsZXQgZT0wO3JldHVybiB0aGlzLml0ZW1zLmZvckVhY2godD0+e3Quc3RlcHx8ZSsrfSksZX1jb21wcmVzcyhlPXRoaXMuaXRlbXMubGVuZ3RoKXtsZXQgdD10aGlzLnJlbWFwcGluZygwLGUpLHI9dC5tYXBzLmxlbmd0aCxzPVtdLGk9MDtyZXR1cm4gdGhpcy5pdGVtcy5mb3JFYWNoKChvLGwpPT57aWYobD49ZSlzLnB1c2gobyksby5zZWxlY3Rpb24mJmkrKztlbHNlIGlmKG8uc3RlcCl7bGV0IGE9by5zdGVwLm1hcCh0LnNsaWNlKHIpKSxjPWEmJmEuZ2V0TWFwKCk7aWYoci0tLGMmJnQuYXBwZW5kTWFwKGMsciksYSl7bGV0IHU9by5zZWxlY3Rpb24mJm8uc2VsZWN0aW9uLm1hcCh0LnNsaWNlKHIpKTt1JiZpKys7bGV0IGQ9bmV3IGplKGMuaW52ZXJ0KCksYSx1KSxoLGY9cy5sZW5ndGgtMTsoaD1zLmxlbmd0aCYmc1tmXS5tZXJnZShkKSk/c1tmXT1oOnMucHVzaChkKX19ZWxzZSBvLm1hcCYmci0tfSx0aGlzLml0ZW1zLmxlbmd0aCwwKSxuZXcgRmUoY2UuZnJvbShzLnJldmVyc2UoKSksaSl9fUZlLmVtcHR5PW5ldyBGZShjZS5lbXB0eSwwKTtmdW5jdGlvbiBYayhuLGUpe2xldCB0O3JldHVybiBuLmZvckVhY2goKHIscyk9PntpZihyLnNlbGVjdGlvbiYmZS0tPT0wKXJldHVybiB0PXMsITF9KSxuLnNsaWNlKHQpfWNsYXNzIGple2NvbnN0cnVjdG9yKGUsdCxyLHMpe3RoaXMubWFwPWUsdGhpcy5zdGVwPXQsdGhpcy5zZWxlY3Rpb249cix0aGlzLm1pcnJvck9mZnNldD1zfW1lcmdlKGUpe2lmKHRoaXMuc3RlcCYmZS5zdGVwJiYhZS5zZWxlY3Rpb24pe2xldCB0PWUuc3RlcC5tZXJnZSh0aGlzLnN0ZXApO2lmKHQpcmV0dXJuIG5ldyBqZSh0LmdldE1hcCgpLmludmVydCgpLHQsdGhpcy5zZWxlY3Rpb24pfX19Y2xhc3MgcHR7Y29uc3RydWN0b3IoZSx0LHIscyxpKXt0aGlzLmRvbmU9ZSx0aGlzLnVuZG9uZT10LHRoaXMucHJldlJhbmdlcz1yLHRoaXMucHJldlRpbWU9cyx0aGlzLnByZXZDb21wb3NpdGlvbj1pfX1jb25zdCBZaz0yMDtmdW5jdGlvbiBaayhuLGUsdCxyKXtsZXQgcz10LmdldE1ldGEoSHQpLGk7aWYocylyZXR1cm4gcy5oaXN0b3J5U3RhdGU7dC5nZXRNZXRhKG5iKSYmKG49bmV3IHB0KG4uZG9uZSxuLnVuZG9uZSxudWxsLDAsLTEpKTtsZXQgbz10LmdldE1ldGEoImFwcGVuZGVkVHJhbnNhY3Rpb24iKTtpZih0LnN0ZXBzLmxlbmd0aD09MClyZXR1cm4gbjtpZihvJiZvLmdldE1ldGEoSHQpKXJldHVybiBvLmdldE1ldGEoSHQpLnJlZG8/bmV3IHB0KG4uZG9uZS5hZGRUcmFuc2Zvcm0odCx2b2lkIDAscixMcihlKSksbi51bmRvbmUsRGEodC5tYXBwaW5nLm1hcHMpLG4ucHJldlRpbWUsbi5wcmV2Q29tcG9zaXRpb24pOm5ldyBwdChuLmRvbmUsbi51bmRvbmUuYWRkVHJhbnNmb3JtKHQsdm9pZCAwLHIsTHIoZSkpLG51bGwsbi5wcmV2VGltZSxuLnByZXZDb21wb3NpdGlvbik7aWYodC5nZXRNZXRhKCJhZGRUb0hpc3RvcnkiKSE9PSExJiYhKG8mJm8uZ2V0TWV0YSgiYWRkVG9IaXN0b3J5Iik9PT0hMSkpe2xldCBsPXQuZ2V0TWV0YSgiY29tcG9zaXRpb24iKSxhPW4ucHJldlRpbWU9PTB8fCFvJiZuLnByZXZDb21wb3NpdGlvbiE9bCYmKG4ucHJldlRpbWU8KHQudGltZXx8MCktci5uZXdHcm91cERlbGF5fHwhZWIodCxuLnByZXZSYW5nZXMpKSxjPW8/eWkobi5wcmV2UmFuZ2VzLHQubWFwcGluZyk6RGEodC5tYXBwaW5nLm1hcHMpO3JldHVybiBuZXcgcHQobi5kb25lLmFkZFRyYW5zZm9ybSh0LGE/ZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKTp2b2lkIDAscixMcihlKSksRmUuZW1wdHksYyx0LnRpbWUsbD8/bi5wcmV2Q29tcG9zaXRpb24pfWVsc2UgcmV0dXJuKGk9dC5nZXRNZXRhKCJyZWJhc2VkIikpP25ldyBwdChuLmRvbmUucmViYXNlZCh0LGkpLG4udW5kb25lLnJlYmFzZWQodCxpKSx5aShuLnByZXZSYW5nZXMsdC5tYXBwaW5nKSxuLnByZXZUaW1lLG4ucHJldkNvbXBvc2l0aW9uKTpuZXcgcHQobi5kb25lLmFkZE1hcHModC5tYXBwaW5nLm1hcHMpLG4udW5kb25lLmFkZE1hcHModC5tYXBwaW5nLm1hcHMpLHlpKG4ucHJldlJhbmdlcyx0Lm1hcHBpbmcpLG4ucHJldlRpbWUsbi5wcmV2Q29tcG9zaXRpb24pfWZ1bmN0aW9uIGViKG4sZSl7aWYoIWUpcmV0dXJuITE7aWYoIW4uZG9jQ2hhbmdlZClyZXR1cm4hMDtsZXQgdD0hMTtyZXR1cm4gbi5tYXBwaW5nLm1hcHNbMF0uZm9yRWFjaCgocixzKT0+e2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSs9MilyPD1lW2krMV0mJnM+PWVbaV0mJih0PSEwKX0pLHR9ZnVuY3Rpb24gRGEobil7bGV0IGU9W107Zm9yKGxldCB0PW4ubGVuZ3RoLTE7dD49MCYmZS5sZW5ndGg9PTA7dC0tKW5bdF0uZm9yRWFjaCgocixzLGksbyk9PmUucHVzaChpLG8pKTtyZXR1cm4gZX1mdW5jdGlvbiB5aShuLGUpe2lmKCFuKXJldHVybiBudWxsO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cis9Mil7bGV0IHM9ZS5tYXAobltyXSwxKSxpPWUubWFwKG5bcisxXSwtMSk7czw9aSYmdC5wdXNoKHMsaSl9cmV0dXJuIHR9ZnVuY3Rpb24gdGIobixlLHQpe2xldCByPUxyKGUpLHM9SHQuZ2V0KGUpLnNwZWMuY29uZmlnLGk9KHQ/bi51bmRvbmU6bi5kb25lKS5wb3BFdmVudChlLHIpO2lmKCFpKXJldHVybiBudWxsO2xldCBvPWkuc2VsZWN0aW9uLnJlc29sdmUoaS50cmFuc2Zvcm0uZG9jKSxsPSh0P24uZG9uZTpuLnVuZG9uZSkuYWRkVHJhbnNmb3JtKGkudHJhbnNmb3JtLGUuc2VsZWN0aW9uLmdldEJvb2ttYXJrKCkscyxyKSxhPW5ldyBwdCh0P2w6aS5yZW1haW5pbmcsdD9pLnJlbWFpbmluZzpsLG51bGwsMCwtMSk7cmV0dXJuIGkudHJhbnNmb3JtLnNldFNlbGVjdGlvbihvKS5zZXRNZXRhKEh0LHtyZWRvOnQsaGlzdG9yeVN0YXRlOmF9KX1sZXQga2k9ITEsTGE9bnVsbDtmdW5jdGlvbiBMcihuKXtsZXQgZT1uLnBsdWdpbnM7aWYoTGEhPWUpe2tpPSExLExhPWU7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS5zcGVjLmhpc3RvcnlQcmVzZXJ2ZUl0ZW1zKXtraT0hMDticmVha319cmV0dXJuIGtpfWNvbnN0IEh0PW5ldyBxKCJoaXN0b3J5IiksbmI9bmV3IHEoImNsb3NlSGlzdG9yeSIpO2Z1bmN0aW9uIHJiKG49e30pe3JldHVybiBuPXtkZXB0aDpuLmRlcHRofHwxMDAsbmV3R3JvdXBEZWxheTpuLm5ld0dyb3VwRGVsYXl8fDUwMH0sbmV3IEcoe2tleTpIdCxzdGF0ZTp7aW5pdCgpe3JldHVybiBuZXcgcHQoRmUuZW1wdHksRmUuZW1wdHksbnVsbCwwLC0xKX0sYXBwbHkoZSx0LHIpe3JldHVybiBaayh0LHIsZSxuKX19LGNvbmZpZzpuLHByb3BzOntoYW5kbGVET01FdmVudHM6e2JlZm9yZWlucHV0KGUsdCl7bGV0IHI9dC5pbnB1dFR5cGUscz1yPT0iaGlzdG9yeVVuZG8iP0hkOnI9PSJoaXN0b3J5UmVkbyI/RmQ6bnVsbDtyZXR1cm4hc3x8IWUuZWRpdGFibGU/ITE6KHQucHJldmVudERlZmF1bHQoKSxzKGUuc3RhdGUsZS5kaXNwYXRjaCkpfX19fSl9ZnVuY3Rpb24gX2QobixlKXtyZXR1cm4odCxyKT0+e2xldCBzPUh0LmdldFN0YXRlKHQpO2lmKCFzfHwobj9zLnVuZG9uZTpzLmRvbmUpLmV2ZW50Q291bnQ9PTApcmV0dXJuITE7aWYocil7bGV0IGk9dGIocyx0LG4pO2kmJnIoZT9pLnNjcm9sbEludG9WaWV3KCk6aSl9cmV0dXJuITB9fWNvbnN0IEhkPV9kKCExLCEwKSxGZD1fZCghMCwhMCk7dGUuY3JlYXRlKHtuYW1lOiJjaGFyYWN0ZXJDb3VudCIsYWRkT3B0aW9ucygpe3JldHVybntsaW1pdDpudWxsLG1vZGU6InRleHRTaXplIix0ZXh0Q291bnRlcjpuPT5uLmxlbmd0aCx3b3JkQ291bnRlcjpuPT5uLnNwbGl0KCIgIikuZmlsdGVyKGU9PmUhPT0iIikubGVuZ3RofX0sYWRkU3RvcmFnZSgpe3JldHVybntjaGFyYWN0ZXJzOigpPT4wLHdvcmRzOigpPT4wfX0sb25CZWZvcmVDcmVhdGUoKXt0aGlzLnN0b3JhZ2UuY2hhcmFjdGVycz1uPT57Y29uc3QgZT1uPy5ub2RlfHx0aGlzLmVkaXRvci5zdGF0ZS5kb2M7aWYoKG4/Lm1vZGV8fHRoaXMub3B0aW9ucy5tb2RlKT09PSJ0ZXh0U2l6ZSIpe2NvbnN0IHI9ZS50ZXh0QmV0d2VlbigwLGUuY29udGVudC5zaXplLHZvaWQgMCwiICIpO3JldHVybiB0aGlzLm9wdGlvbnMudGV4dENvdW50ZXIocil9cmV0dXJuIGUubm9kZVNpemV9LHRoaXMuc3RvcmFnZS53b3Jkcz1uPT57Y29uc3QgZT1uPy5ub2RlfHx0aGlzLmVkaXRvci5zdGF0ZS5kb2MsdD1lLnRleHRCZXR3ZWVuKDAsZS5jb250ZW50LnNpemUsIiAiLCIgIik7cmV0dXJuIHRoaXMub3B0aW9ucy53b3JkQ291bnRlcih0KX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe2xldCBuPSExO3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjaGFyYWN0ZXJDb3VudCIpLGFwcGVuZFRyYW5zYWN0aW9uOihlLHQscik9PntpZihuKXJldHVybjtjb25zdCBzPXRoaXMub3B0aW9ucy5saW1pdDtpZihzPT1udWxsfHxzPT09MCl7bj0hMDtyZXR1cm59Y29uc3QgaT10aGlzLnN0b3JhZ2UuY2hhcmFjdGVycyh7bm9kZTpyLmRvY30pO2lmKGk+cyl7Y29uc3Qgbz1pLXMsbD0wLGE9byxjPXIudHIuZGVsZXRlUmFuZ2UobCxhKTtyZXR1cm4gbj0hMCxjfW49ITB9LGZpbHRlclRyYW5zYWN0aW9uOihlLHQpPT57Y29uc3Qgcj10aGlzLm9wdGlvbnMubGltaXQ7aWYoIWUuZG9jQ2hhbmdlZHx8cj09PTB8fHI9PT1udWxsfHxyPT09dm9pZCAwKXJldHVybiEwO2NvbnN0IHM9dGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoe25vZGU6dC5kb2N9KSxpPXRoaXMuc3RvcmFnZS5jaGFyYWN0ZXJzKHtub2RlOmUuZG9jfSk7aWYoaTw9cnx8cz5yJiZpPnImJmk8PXMpcmV0dXJuITA7aWYocz5yJiZpPnImJmk+c3x8IWUuZ2V0TWV0YSgicGFzdGUiKSlyZXR1cm4hMTtjb25zdCBsPWUuc2VsZWN0aW9uLiRoZWFkLnBvcyxhPWktcixjPWwtYSx1PWw7cmV0dXJuIGUuZGVsZXRlUmFuZ2UoYyx1KSwhKHRoaXMuc3RvcmFnZS5jaGFyYWN0ZXJzKHtub2RlOmUuZG9jfSk+cil9fSldfX0pO3ZhciBzYj10ZS5jcmVhdGUoe25hbWU6ImRyb3BDdXJzb3IiLGFkZE9wdGlvbnMoKXtyZXR1cm57Y29sb3I6ImN1cnJlbnRDb2xvciIsd2lkdGg6MSxjbGFzczp2b2lkIDB9fSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bSGsodGhpcy5vcHRpb25zKV19fSk7dGUuY3JlYXRlKHtuYW1lOiJmb2N1cyIsYWRkT3B0aW9ucygpe3JldHVybntjbGFzc05hbWU6Imhhcy1mb2N1cyIsbW9kZToiYWxsIn19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJmb2N1cyIpLHByb3BzOntkZWNvcmF0aW9uczooe2RvYzpuLHNlbGVjdGlvbjplfSk9Pntjb25zdHtpc0VkaXRhYmxlOnQsaXNGb2N1c2VkOnJ9PXRoaXMuZWRpdG9yLHthbmNob3I6c309ZSxpPVtdO2lmKCF0fHwhcilyZXR1cm4gWS5jcmVhdGUobixbXSk7bGV0IG89MDt0aGlzLm9wdGlvbnMubW9kZT09PSJkZWVwZXN0IiYmbi5kZXNjZW5kYW50cygoYSxjKT0+e2lmKGEuaXNUZXh0KXJldHVybjtpZighKHM+PWMmJnM8PWMrYS5ub2RlU2l6ZS0xKSlyZXR1cm4hMTtvKz0xfSk7bGV0IGw9MDtyZXR1cm4gbi5kZXNjZW5kYW50cygoYSxjKT0+e2lmKGEuaXNUZXh0fHwhKHM+PWMmJnM8PWMrYS5ub2RlU2l6ZS0xKSlyZXR1cm4hMTtpZihsKz0xLHRoaXMub3B0aW9ucy5tb2RlPT09ImRlZXBlc3QiJiZvLWw+MHx8dGhpcy5vcHRpb25zLm1vZGU9PT0ic2hhbGxvd2VzdCImJmw+MSlyZXR1cm4gdGhpcy5vcHRpb25zLm1vZGU9PT0iZGVlcGVzdCI7aS5wdXNoKHllLm5vZGUoYyxjK2Eubm9kZVNpemUse2NsYXNzOnRoaXMub3B0aW9ucy5jbGFzc05hbWV9KSl9KSxZLmNyZWF0ZShuLGkpfX19KV19fSk7dmFyIGliPXRlLmNyZWF0ZSh7bmFtZToiZ2FwQ3Vyc29yIixhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtyZXR1cm5bamsoKV19LGV4dGVuZE5vZGVTY2hlbWEobil7dmFyIGU7Y29uc3QgdD17bmFtZTpuLm5hbWUsb3B0aW9uczpuLm9wdGlvbnMsc3RvcmFnZTpuLnN0b3JhZ2V9O3JldHVybnthbGxvd0dhcEN1cnNvcjooZT1VKEEobiwiYWxsb3dHYXBDdXJzb3IiLHQpKSkhPW51bGw/ZTpudWxsfX19KSxQYT0icGxhY2Vob2xkZXIiO2Z1bmN0aW9uIG9iKG4pe3JldHVybiBuLnJlcGxhY2UoL1xzKy9nLCItIikucmVwbGFjZSgvW15hLXpBLVowLTktXS9nLCIiKS5yZXBsYWNlKC9eWzAtOS1dKy8sIiIpLnJlcGxhY2UoL14tKy8sIiIpLnRvTG93ZXJDYXNlKCl9dmFyIGxiPXRlLmNyZWF0ZSh7bmFtZToicGxhY2Vob2xkZXIiLGFkZE9wdGlvbnMoKXtyZXR1cm57ZW1wdHlFZGl0b3JDbGFzczoiaXMtZWRpdG9yLWVtcHR5IixlbXB0eU5vZGVDbGFzczoiaXMtZW1wdHkiLGRhdGFBdHRyaWJ1dGU6UGEscGxhY2Vob2xkZXI6IldyaXRlIHNvbWV0aGluZyDigKYiLHNob3dPbmx5V2hlbkVkaXRhYmxlOiEwLHNob3dPbmx5Q3VycmVudDohMCxpbmNsdWRlQ2hpbGRyZW46ITF9fSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBuPXRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlP2BkYXRhLSR7b2IodGhpcy5vcHRpb25zLmRhdGFBdHRyaWJ1dGUpfWA6YGRhdGEtJHtQYX1gO3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJwbGFjZWhvbGRlciIpLHByb3BzOntkZWNvcmF0aW9uczooe2RvYzplLHNlbGVjdGlvbjp0fSk9Pntjb25zdCByPXRoaXMuZWRpdG9yLmlzRWRpdGFibGV8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlXaGVuRWRpdGFibGUse2FuY2hvcjpzfT10LGk9W107aWYoIXIpcmV0dXJuIG51bGw7Y29uc3Qgbz10aGlzLmVkaXRvci5pc0VtcHR5O3JldHVybiBlLmRlc2NlbmRhbnRzKChsLGEpPT57Y29uc3QgYz1zPj1hJiZzPD1hK2wubm9kZVNpemUsdT0hbC5pc0xlYWYmJlZzKGwpO2lmKCFsLnR5cGUuaXNUZXh0YmxvY2spcmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlQ2hpbGRyZW47aWYoKGN8fCF0aGlzLm9wdGlvbnMuc2hvd09ubHlDdXJyZW50KSYmdSl7Y29uc3QgZD1bdGhpcy5vcHRpb25zLmVtcHR5Tm9kZUNsYXNzXTtvJiZkLnB1c2godGhpcy5vcHRpb25zLmVtcHR5RWRpdG9yQ2xhc3MpO2NvbnN0IGg9eWUubm9kZShhLGErbC5ub2RlU2l6ZSx7Y2xhc3M6ZC5qb2luKCIgIiksW25dOnR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXI9PSJmdW5jdGlvbiI/dGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKHtlZGl0b3I6dGhpcy5lZGl0b3Isbm9kZTpsLHBvczphLGhhc0FuY2hvcjpjfSk6dGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyfSk7aS5wdXNoKGgpfXJldHVybiB0aGlzLm9wdGlvbnMuaW5jbHVkZUNoaWxkcmVufSksWS5jcmVhdGUoZSxpKX19fSldfX0pO3RlLmNyZWF0ZSh7bmFtZToic2VsZWN0aW9uIixhZGRPcHRpb25zKCl7cmV0dXJue2NsYXNzTmFtZToic2VsZWN0aW9uIn19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe2NvbnN0e2VkaXRvcjpuLG9wdGlvbnM6ZX09dGhpcztyZXR1cm5bbmV3IEcoe2tleTpuZXcgcSgic2VsZWN0aW9uIikscHJvcHM6e2RlY29yYXRpb25zKHQpe3JldHVybiB0LnNlbGVjdGlvbi5lbXB0eXx8bi5pc0ZvY3VzZWR8fCFuLmlzRWRpdGFibGV8fG9kKHQuc2VsZWN0aW9uKXx8bi52aWV3LmRyYWdnaW5nP251bGw6WS5jcmVhdGUodC5kb2MsW3llLmlubGluZSh0LnNlbGVjdGlvbi5mcm9tLHQuc2VsZWN0aW9uLnRvLHtjbGFzczplLmNsYXNzTmFtZX0pXSl9fX0pXX19KTt2YXIgYWI9InNraXBUcmFpbGluZ05vZGUiO2Z1bmN0aW9uIHphKHt0eXBlczpuLG5vZGU6ZX0pe3JldHVybiBlJiZBcnJheS5pc0FycmF5KG4pJiZuLmluY2x1ZGVzKGUudHlwZSl8fGU/LnR5cGU9PT1ufXZhciBjYj10ZS5jcmVhdGUoe25hbWU6InRyYWlsaW5nTm9kZSIsYWRkT3B0aW9ucygpe3JldHVybntub2RlOnZvaWQgMCxub3RBZnRlcjpbXX19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3ZhciBuO2NvbnN0IGU9bmV3IHEodGhpcy5uYW1lKSx0PXRoaXMub3B0aW9ucy5ub2RlfHwoKG49dGhpcy5lZGl0b3Iuc2NoZW1hLnRvcE5vZGVUeXBlLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSk9PW51bGw/dm9pZCAwOm4ubmFtZSl8fCJwYXJhZ3JhcGgiLHI9T2JqZWN0LmVudHJpZXModGhpcy5lZGl0b3Iuc2NoZW1hLm5vZGVzKS5tYXAoKFssc10pPT5zKS5maWx0ZXIocz0+KHRoaXMub3B0aW9ucy5ub3RBZnRlcnx8W10pLmNvbmNhdCh0KS5pbmNsdWRlcyhzLm5hbWUpKTtyZXR1cm5bbmV3IEcoe2tleTplLGFwcGVuZFRyYW5zYWN0aW9uOihzLGksbyk9Pntjb25zdHtkb2M6bCx0cjphLHNjaGVtYTpjfT1vLHU9ZS5nZXRTdGF0ZShvKSxkPWwuY29udGVudC5zaXplLGg9Yy5ub2Rlc1t0XTtpZighcy5zb21lKGY9PmYuZ2V0TWV0YShhYikpJiZ1KXJldHVybiBhLmluc2VydChkLGguY3JlYXRlKCkpfSxzdGF0ZTp7aW5pdDoocyxpKT0+e2NvbnN0IG89aS50ci5kb2MubGFzdENoaWxkO3JldHVybiF6YSh7bm9kZTpvLHR5cGVzOnJ9KX0sYXBwbHk6KHMsaSk9PntpZighcy5kb2NDaGFuZ2VkfHxzLmdldE1ldGEoIl9fdW5pcXVlSURUcmFuc2FjdGlvbiIpKXJldHVybiBpO2NvbnN0IG89cy5kb2MubGFzdENoaWxkO3JldHVybiF6YSh7bm9kZTpvLHR5cGVzOnJ9KX19fSldfX0pLHViPXRlLmNyZWF0ZSh7bmFtZToidW5kb1JlZG8iLGFkZE9wdGlvbnMoKXtyZXR1cm57ZGVwdGg6MTAwLG5ld0dyb3VwRGVsYXk6NTAwfX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57dW5kbzooKT0+KHtzdGF0ZTpuLGRpc3BhdGNoOmV9KT0+SGQobixlKSxyZWRvOigpPT4oe3N0YXRlOm4sZGlzcGF0Y2g6ZX0pPT5GZChuLGUpfX0sYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCl7cmV0dXJuW3JiKHRoaXMub3B0aW9ucyldfSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLXoiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy51bmRvKCksIlNoaWZ0LU1vZC16IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMucmVkbygpLCJNb2QteSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnJlZG8oKSwiTW9kLdGPIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudW5kbygpLCJTaGlmdC1Nb2Qt0Y8iOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCl9fX0pLGRiPWxiO2Z1bmN0aW9uIFdvKCl7cmV0dXJue2FzeW5jOiExLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhvb2tzOm51bGwscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzaWxlbnQ6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsfX12YXIgUXQ9V28oKTtmdW5jdGlvbiBWZChuKXtRdD1ufXZhciBJdD17ZXhlYzooKT0+bnVsbH07ZnVuY3Rpb24gVihuLGU9IiIpe2xldCB0PXR5cGVvZiBuPT0ic3RyaW5nIj9uOm4uc291cmNlLHI9e3JlcGxhY2U6KHMsaSk9PntsZXQgbz10eXBlb2YgaT09InN0cmluZyI/aTppLnNvdXJjZTtyZXR1cm4gbz1vLnJlcGxhY2UoeGUuY2FyZXQsIiQxIiksdD10LnJlcGxhY2UocyxvKSxyfSxnZXRSZWdleDooKT0+bmV3IFJlZ0V4cCh0LGUpfTtyZXR1cm4gcn12YXIgaGI9KCgpPT57dHJ5e3JldHVybiEhbmV3IFJlZ0V4cCgiKD88PTEpKD88ITEpIil9Y2F0Y2h7cmV0dXJuITF9fSkoKSx4ZT17Y29kZVJlbW92ZUluZGVudDovXig/OiB7MSw0fXwgezAsM31cdCkvZ20sb3V0cHV0TGlua1JlcGxhY2U6L1xcKFtcW1xdXSkvZyxpbmRlbnRDb2RlQ29tcGVuc2F0aW9uOi9eKFxzKykoPzpgYGApLyxiZWdpbm5pbmdTcGFjZTovXlxzKy8sZW5kaW5nSGFzaDovIyQvLHN0YXJ0aW5nU3BhY2VDaGFyOi9eIC8sZW5kaW5nU3BhY2VDaGFyOi8gJC8sbm9uU3BhY2VDaGFyOi9bXiBdLyxuZXdMaW5lQ2hhckdsb2JhbDovXG4vZyx0YWJDaGFyR2xvYmFsOi9cdC9nLG11bHRpcGxlU3BhY2VHbG9iYWw6L1xzKy9nLGJsYW5rTGluZTovXlsgXHRdKiQvLGRvdWJsZUJsYW5rTGluZTovXG5bIFx0XSpcblsgXHRdKiQvLGJsb2NrcXVvdGVTdGFydDovXiB7MCwzfT4vLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlOi9cbiB7MCwzfSgoPzo9K3wtKykgKikoPz1cbnwkKS9nLGJsb2NrcXVvdGVTZXRleHRSZXBsYWNlMjovXiB7MCwzfT5bIFx0XT8vZ20sbGlzdFJlcGxhY2VOZXN0aW5nOi9eIHsxLDR9KD89KCB7NH0pKlteIF0pL2csbGlzdElzVGFzazovXlxbWyB4WF1cXSArXFMvLGxpc3RSZXBsYWNlVGFzazovXlxbWyB4WF1cXSArLyxsaXN0VGFza0NoZWNrYm94Oi9cW1sgeFhdXF0vLGFueUxpbmU6L1xuLipcbi8saHJlZkJyYWNrZXRzOi9ePCguKik+JC8sdGFibGVEZWxpbWl0ZXI6L1s6fF0vLHRhYmxlQWxpZ25DaGFyczovXlx8fFx8ICokL2csdGFibGVSb3dCbGFua0xpbmU6L1xuWyBcdF0qJC8sdGFibGVBbGlnblJpZ2h0Oi9eICotKzogKiQvLHRhYmxlQWxpZ25DZW50ZXI6L14gKjotKzogKiQvLHRhYmxlQWxpZ25MZWZ0Oi9eICo6LSsgKiQvLHN0YXJ0QVRhZzovXjxhIC9pLGVuZEFUYWc6L148XC9hPi9pLHN0YXJ0UHJlU2NyaXB0VGFnOi9ePChwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLGVuZFByZVNjcmlwdFRhZzovXjxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLHN0YXJ0QW5nbGVCcmFja2V0Oi9ePC8sZW5kQW5nbGVCcmFja2V0Oi8+JC8scGVkYW50aWNIcmVmVGl0bGU6L14oW14nIl0qW15cc10pXHMrKFsnIl0pKC4qKVwyLyx1bmljb2RlQWxwaGFOdW1lcmljOi9bXHB7TH1ccHtOfV0vdSxlc2NhcGVUZXN0Oi9bJjw+IiddLyxlc2NhcGVSZXBsYWNlOi9bJjw+IiddL2csZXNjYXBlVGVzdE5vRW5jb2RlOi9bPD4iJ118Jig/ISgjXGR7MSw3fXwjW1h4XVthLWZBLUYwLTldezEsNn18XHcrKTspLyxlc2NhcGVSZXBsYWNlTm9FbmNvZGU6L1s8PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykvZyxjYXJldDovKF58W15cW10pXF4vZyxwZXJjZW50RGVjb2RlOi8lMjUvZyxmaW5kUGlwZTovXHwvZyxzcGxpdFBpcGU6LyBcfC8sc2xhc2hQaXBlOi9cXFx8L2csY2FycmlhZ2VSZXR1cm46L1xyXG58XHIvZyxzcGFjZUxpbmU6L14gKyQvZ20sbm90U3BhY2VTdGFydDovXlxTKi8sZW5kaW5nTmV3bGluZTovXG4kLyxsaXN0SXRlbVJlZ2V4Om49Pm5ldyBSZWdFeHAoYF4oIHswLDN9JHtufSkoKD86WwkgXVteXFxuXSopPyg/OlxcbnwkKSlgKSxuZXh0QnVsbGV0UmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19KD86WyorLV18XFxkezEsOX1bLildKSgoPzpbIAldW15cXG5dKik/KD86XFxufCQpKWApLGhyUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19KCg/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wkKWApLGZlbmNlc0JlZ2luUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19KD86XGBcYFxgfH5+filgKSxoZWFkaW5nQmVnaW5SZWdleDpuPT5uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxuLTEpfX0jYCksaHRtbEJlZ2luUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19PCg/OlthLXpdLio+fCEtLSlgLCJpIiksYmxvY2txdW90ZUJlZ2luUmVnZXg6bj0+bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbi0xKX19PmApfSxmYj0vXig/OlsgXHRdKig/OlxufCQpKSsvLHBiPS9eKCg/OiB7NH18IHswLDN9XHQpW15cbl0rKD86XG4oPzpbIFx0XSooPzpcbnwkKSkqKT8pKy8sbWI9L14gezAsM30oYHszLH0oPz1bXmBcbl0qKD86XG58JCkpfH57Myx9KShbXlxuXSopKD86XG58JCkoPzp8KFtcc1xTXSo/KSg/OlxufCQpKSg/OiB7MCwzfVwxW35gXSogKig/PVxufCQpfCQpLyxscj0vXiB7MCwzfSgoPzotW1x0IF0qKXszLH18KD86X1sgXHRdKil7Myx9fCg/OlwqWyBcdF0qKXszLH0pKD86XG4rfCQpLyxnYj0vXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxLbz0vIHswLDN9KD86WyorLV18XGR7MSw5fVsuKV0pLyxVZD0vXig/IWJ1bGwgfGJsb2NrQ29kZXxmZW5jZXN8YmxvY2txdW90ZXxoZWFkaW5nfGh0bWx8dGFibGUpKCg/Oi58XG4oPyFccyo/XG58YnVsbCB8YmxvY2tDb2RlfGZlbmNlc3xibG9ja3F1b3RlfGhlYWRpbmd8aHRtbHx0YWJsZSkpKz8pXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLGpkPVYoVWQpLnJlcGxhY2UoL2J1bGwvZyxLbykucmVwbGFjZSgvYmxvY2tDb2RlL2csLyg/OiB7NH18IHswLDN9XHQpLykucmVwbGFjZSgvZmVuY2VzL2csLyB7MCwzfSg/OmB7Myx9fH57Myx9KS8pLnJlcGxhY2UoL2Jsb2NrcXVvdGUvZywvIHswLDN9Pi8pLnJlcGxhY2UoL2hlYWRpbmcvZywvIHswLDN9I3sxLDZ9LykucmVwbGFjZSgvaHRtbC9nLC8gezAsM308W15cbj5dKz5cbi8pLnJlcGxhY2UoL1x8dGFibGUvZywiIikuZ2V0UmVnZXgoKSx5Yj1WKFVkKS5yZXBsYWNlKC9idWxsL2csS28pLnJlcGxhY2UoL2Jsb2NrQ29kZS9nLC8oPzogezR9fCB7MCwzfVx0KS8pLnJlcGxhY2UoL2ZlbmNlcy9nLC8gezAsM30oPzpgezMsfXx+ezMsfSkvKS5yZXBsYWNlKC9ibG9ja3F1b3RlL2csLyB7MCwzfT4vKS5yZXBsYWNlKC9oZWFkaW5nL2csLyB7MCwzfSN7MSw2fS8pLnJlcGxhY2UoL2h0bWwvZywvIHswLDN9PFteXG4+XSs+XG4vKS5yZXBsYWNlKC90YWJsZS9nLC8gezAsM31cfD8oPzpbOlwtIF0qXHwpK1tcOlwtIF0qXG4vKS5nZXRSZWdleCgpLEpvPS9eKFteXG5dKyg/OlxuKD8haHJ8aGVhZGluZ3xsaGVhZGluZ3xibG9ja3F1b3RlfGZlbmNlc3xsaXN0fGh0bWx8dGFibGV8ICtcbilbXlxuXSspKikvLGtiPS9eW15cbl0rLyxHbz0vKD8hXHMqXF0pKD86XFxbXHNcU118W15cW1xdXFxdKSsvLGJiPVYoL14gezAsM31cWyhsYWJlbClcXTogKig/OlxuWyBcdF0qKT8oW148XHNdW15cc10qfDwuKj8+KSg/Oig/OiArKD86XG5bIFx0XSopP3wgKlxuWyBcdF0qKSh0aXRsZSkpPyAqKD86XG4rfCQpLykucmVwbGFjZSgibGFiZWwiLEdvKS5yZXBsYWNlKCJ0aXRsZSIsLyg/OiIoPzpcXCI/fFteIlxcXSkqInwnW14nXG5dKig/OlxuW14nXG5dKykqXG4/J3xcKFteKCldKlwpKS8pLmdldFJlZ2V4KCkseGI9VigvXihidWxsKShbIFx0XVteXG5dKz8pPyg/OlxufCQpLykucmVwbGFjZSgvYnVsbC9nLEtvKS5nZXRSZWdleCgpLHFzPSJhZGRyZXNzfGFydGljbGV8YXNpZGV8YmFzZXxiYXNlZm9udHxibG9ja3F1b3RlfGJvZHl8Y2FwdGlvbnxjZW50ZXJ8Y29sfGNvbGdyb3VwfGRkfGRldGFpbHN8ZGlhbG9nfGRpcnxkaXZ8ZGx8ZHR8ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGZvcm18ZnJhbWV8ZnJhbWVzZXR8aFsxLTZdfGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxtZXRhfG5hdnxub2ZyYW1lc3xvbHxvcHRncm91cHxvcHRpb258cHxwYXJhbXxzZWFyY2h8c2VjdGlvbnxzdW1tYXJ5fHRhYmxlfHRib2R5fHRkfHRmb290fHRofHRoZWFkfHRpdGxlfHRyfHRyYWNrfHVsIixRbz0vPCEtLSg/Oi0/PnxbXHNcU10qPyg/Oi0tPnwkKSkvLHdiPVYoIl4gezAsM30oPzo8KHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpW1xccz5dW1xcc1xcU10qPyg/OjwvXFwxPlteXFxuXSpcXG4rfCQpfGNvbW1lbnRbXlxcbl0qKFxcbit8JCl8PFxcP1tcXHNcXFNdKj8oPzpcXD8+XFxuKnwkKXw8IVtBLVpdW1xcc1xcU10qPyg/Oj5cXG4qfCQpfDwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/KD86XFxdXFxdPlxcbip8JCl8PC8/KHRhZykoPzogK3xcXG58Lz8+KVtcXHNcXFNdKj8oPzooPzpcXG5bIAldKikrXFxufCQpfDwoPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKShbYS16XVtcXHctXSopKD86YXR0cmlidXRlKSo/ICovPz4oPz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8oPzooPzpcXG5bIAldKikrXFxufCQpfDwvKD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbYS16XVtcXHctXSpcXHMqPig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcblsgCV0qKStcXG58JCkpIiwiaSIpLnJlcGxhY2UoImNvbW1lbnQiLFFvKS5yZXBsYWNlKCJ0YWciLHFzKS5yZXBsYWNlKCJhdHRyaWJ1dGUiLC8gK1thLXpBLVo6X11bXHcuOi1dKig/OiAqPSAqIlteIlxuXSoifCAqPSAqJ1teJ1xuXSonfCAqPSAqW15ccyInPTw+YF0rKT8vKS5nZXRSZWdleCgpLHFkPVYoSm8pLnJlcGxhY2UoImhyIixscikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSg/Olxcc3wkKSIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInx0YWJsZSIsIiIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSlbIFxcdF0iKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLHFzKS5nZXRSZWdleCgpLHZiPVYoL14oIHswLDN9PiA/KHBhcmFncmFwaHxbXlxuXSopKD86XG58JCkpKy8pLnJlcGxhY2UoInBhcmFncmFwaCIscWQpLmdldFJlZ2V4KCksWG89e2Jsb2NrcXVvdGU6dmIsY29kZTpwYixkZWY6YmIsZmVuY2VzOm1iLGhlYWRpbmc6Z2IsaHI6bHIsaHRtbDp3YixsaGVhZGluZzpqZCxsaXN0OnhiLG5ld2xpbmU6ZmIscGFyYWdyYXBoOnFkLHRhYmxlOkl0LHRleHQ6a2J9LCRhPVYoIl4gKihbXlxcbiBdLiopXFxuIHswLDN9KCg/OlxcfCAqKT86Py0rOj8gKig/OlxcfCAqOj8tKzo/ICopKig/OlxcfCAqKT8pKD86XFxuKCg/Oig/ISAqXFxufGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLiooPzpcXG58JCkpKilcXG4qfCQpIikucmVwbGFjZSgiaHIiLGxyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9KD86XFxzfCQpIikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJjb2RlIiwiKD86IHs0fXwgezAsM30JKVteXFxuXSIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pWyBcXHRdIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixxcykuZ2V0UmVnZXgoKSxTYj17Li4uWG8sbGhlYWRpbmc6eWIsdGFibGU6JGEscGFyYWdyYXBoOlYoSm8pLnJlcGxhY2UoImhyIixscikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSg/Olxcc3wkKSIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInRhYmxlIiwkYSkucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKVsgXFx0XSIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIscXMpLmdldFJlZ2V4KCl9LENiPXsuLi5YbyxodG1sOlYoYF4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OiJbXiJdKiJ8J1teJ10qJ3xcXHNbXiciLz5cXHNdKikqPy8/PiAqKD86XFxuezIsfXxcXHMqJCkpYCkucmVwbGFjZSgiY29tbWVudCIsUW8pLnJlcGxhY2UoL3RhZy9nLCIoPyEoPzphfGVtfHN0cm9uZ3xzbWFsbHxzfGNpdGV8cXxkZm58YWJicnxkYXRhfHRpbWV8Y29kZXx2YXJ8c2FtcHxrYmR8c3VifHN1cHxpfGJ8dXxtYXJrfHJ1Ynl8cnR8cnB8YmRpfGJkb3xzcGFufGJyfHdicnxpbnN8ZGVsfGltZylcXGIpXFx3Kyg/ITp8W15cXHdcXHNAXSpAKVxcYiIpLmdldFJlZ2V4KCksZGVmOi9eICpcWyhbXlxdXSspXF06ICo8PyhbXlxzPl0rKT4/KD86ICsoWyIoXVteXG5dK1siKV0pKT8gKig/OlxuK3wkKS8saGVhZGluZzovXigjezEsNn0pKC4qKSg/OlxuK3wkKS8sZmVuY2VzOkl0LGxoZWFkaW5nOi9eKC4rPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8scGFyYWdyYXBoOlYoSm8pLnJlcGxhY2UoImhyIixscikucmVwbGFjZSgiaGVhZGluZyIsYCAqI3sxLDZ9ICpbXgpdYCkucmVwbGFjZSgibGhlYWRpbmciLGpkKS5yZXBsYWNlKCJ8dGFibGUiLCIiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMiLCIiKS5yZXBsYWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikucmVwbGFjZSgifHRhZyIsIiIpLmdldFJlZ2V4KCl9LFRiPS9eXFwoWyEiIyQlJicoKSorLFwtLi86Ozw9Pj9AXFtcXVxcXl9ge3x9fl0pLyxNYj0vXihgKykoW15gXXxbXmBdW1xzXFNdKj9bXmBdKVwxKD8hYCkvLFdkPS9eKCB7Mix9fFxcKVxuKD8hXHMqJCkvLEViPS9eKGArfFteYF0pKD86KD89IHsyLH1cbil8W1xzXFNdKj8oPzooPz1bXFw8IVxbYCpfXXxcYl98JCl8W14gXSg/PSB7Mix9XG4pKSkvLGduPS9bXHB7UH1ccHtTfV0vdSxXcz0vW1xzXHB7UH1ccHtTfV0vdSxZbz0vW15cc1xwe1B9XHB7U31dL3UsQWI9VigvXigoPyFbKl9dKXB1bmN0U3BhY2UpLywidSIpLnJlcGxhY2UoL3B1bmN0U3BhY2UvZyxXcykuZ2V0UmVnZXgoKSxLZD0vKD8hfilbXHB7UH1ccHtTfV0vdSxPYj0vKD8hfilbXHNccHtQfVxwe1N9XS91LE5iPS8oPzpbXlxzXHB7UH1ccHtTfV18fikvdSxSYj1WKC9saW5rfHByZWNvZGUtY29kZXxodG1sLywiZyIpLnJlcGxhY2UoImxpbmsiLC9cWyg/OlteXFtcXWBdfCg/PGE+YCspW15gXStcazxhPig/IWApKSo/XF1cKCg/OlxcW1xzXFNdfFteXFxcKFwpXXxcKCg/OlxcW1xzXFNdfFteXFxcKFwpXSkqXCkpKlwpLykucmVwbGFjZSgicHJlY29kZS0iLGhiPyIoPzwhYCkoKSI6IiheXnxbXmBdKSIpLnJlcGxhY2UoImNvZGUiLC8oPzxiPmArKVteYF0rXGs8Yj4oPyFgKS8pLnJlcGxhY2UoImh0bWwiLC88KD8hIClbXjw+XSo/Pi8pLmdldFJlZ2V4KCksSmQ9L14oPzpcKisoPzooKD8hXCopcHVuY3QpfChbXlxzKl0pKT8pfF5fKyg/OigoPyFfKXB1bmN0KXwoW15cc19dKSk/LyxJYj1WKEpkLCJ1IikucmVwbGFjZSgvcHVuY3QvZyxnbikuZ2V0UmVnZXgoKSxEYj1WKEpkLCJ1IikucmVwbGFjZSgvcHVuY3QvZyxLZCkuZ2V0UmVnZXgoKSxHZD0iXlteXypdKj9fX1teXypdKj9cXCpbXl8qXSo/KD89X18pfFteKl0rKD89W14qXSl8KD8hXFwqKXB1bmN0KFxcKispKD89W1xcc118JCl8bm90UHVuY3RTcGFjZShcXCorKSg/IVxcKikoPz1wdW5jdFNwYWNlfCQpfCg/IVxcKilwdW5jdFNwYWNlKFxcKispKD89bm90UHVuY3RTcGFjZSl8W1xcc10oXFwqKykoPyFcXCopKD89cHVuY3QpfCg/IVxcKilwdW5jdChcXCorKSg/IVxcKikoPz1wdW5jdCl8bm90UHVuY3RTcGFjZShcXCorKSg/PW5vdFB1bmN0U3BhY2UpIixMYj1WKEdkLCJndSIpLnJlcGxhY2UoL25vdFB1bmN0U3BhY2UvZyxZbykucmVwbGFjZSgvcHVuY3RTcGFjZS9nLFdzKS5yZXBsYWNlKC9wdW5jdC9nLGduKS5nZXRSZWdleCgpLFBiPVYoR2QsImd1IikucmVwbGFjZSgvbm90UHVuY3RTcGFjZS9nLE5iKS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csT2IpLnJlcGxhY2UoL3B1bmN0L2csS2QpLmdldFJlZ2V4KCksemI9VigiXlteXypdKj9cXCpcXCpbXl8qXSo/X1teXypdKj8oPz1cXCpcXCopfFteX10rKD89W15fXSl8KD8hXylwdW5jdChfKykoPz1bXFxzXXwkKXxub3RQdW5jdFNwYWNlKF8rKSg/IV8pKD89cHVuY3RTcGFjZXwkKXwoPyFfKXB1bmN0U3BhY2UoXyspKD89bm90UHVuY3RTcGFjZSl8W1xcc10oXyspKD8hXykoPz1wdW5jdCl8KD8hXylwdW5jdChfKykoPyFfKSg/PXB1bmN0KSIsImd1IikucmVwbGFjZSgvbm90UHVuY3RTcGFjZS9nLFlvKS5yZXBsYWNlKC9wdW5jdFNwYWNlL2csV3MpLnJlcGxhY2UoL3B1bmN0L2csZ24pLmdldFJlZ2V4KCksJGI9VigvXn5+Pyg/OigoPyF+KXB1bmN0KXxbXlxzfl0pLywidSIpLnJlcGxhY2UoL3B1bmN0L2csZ24pLmdldFJlZ2V4KCksQmI9Il5bXn5dKyg/PVtefl0pfCg/IX4pcHVuY3Qofn4/KSg/PVtcXHNdfCQpfG5vdFB1bmN0U3BhY2Uofn4/KSg/IX4pKD89cHVuY3RTcGFjZXwkKXwoPyF+KXB1bmN0U3BhY2Uofn4/KSg/PW5vdFB1bmN0U3BhY2UpfFtcXHNdKH5+PykoPyF+KSg/PXB1bmN0KXwoPyF+KXB1bmN0KH5+PykoPyF+KSg/PXB1bmN0KXxub3RQdW5jdFNwYWNlKH5+PykoPz1ub3RQdW5jdFNwYWNlKSIsX2I9VihCYiwiZ3UiKS5yZXBsYWNlKC9ub3RQdW5jdFNwYWNlL2csWW8pLnJlcGxhY2UoL3B1bmN0U3BhY2UvZyxXcykucmVwbGFjZSgvcHVuY3QvZyxnbikuZ2V0UmVnZXgoKSxIYj1WKC9cXChwdW5jdCkvLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csZ24pLmdldFJlZ2V4KCksRmI9VigvXjwoc2NoZW1lOlteXHNceDAwLVx4MWY8Pl0qfGVtYWlsKT4vKS5yZXBsYWNlKCJzY2hlbWUiLC9bYS16QS1aXVthLXpBLVowLTkrLi1dezEsMzF9LykucmVwbGFjZSgiZW1haWwiLC9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dKyhAKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSsoPyFbLV9dKS8pLmdldFJlZ2V4KCksVmI9VihRbykucmVwbGFjZSgiKD86LS0+fCQpIiwiLS0+IikuZ2V0UmVnZXgoKSxVYj1WKCJeY29tbWVudHxePC9bYS16QS1aXVtcXHc6LV0qXFxzKj58XjxbYS16QS1aXVtcXHctXSooPzphdHRyaWJ1dGUpKj9cXHMqLz8+fF48XFw/W1xcc1xcU10qP1xcPz58XjwhW2EtekEtWl0rXFxzW1xcc1xcU10qPz58XjwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/XFxdXFxdPiIpLnJlcGxhY2UoImNvbW1lbnQiLFZiKS5yZXBsYWNlKCJhdHRyaWJ1dGUiLC9ccytbYS16QS1aOl9dW1x3LjotXSooPzpccyo9XHMqIlteIl0qInxccyo9XHMqJ1teJ10qJ3xccyo9XHMqW15ccyInPTw+YF0rKT8vKS5nZXRSZWdleCgpLFhyPS8oPzpcWyg/OlxcW1xzXFNdfFteXFtcXVxcXSkqXF18XFxbXHNcU118YCsoPyFgKVteYF0qP2ArKD8hYCl8YGArKD89XF0pfFteXFtcXVxcYF0pKj8vLGpiPVYoL14hP1xbKGxhYmVsKVxdXChccyooaHJlZikoPzooPzpbIFx0XSsoPzpcblsgXHRdKik/fFxuWyBcdF0qKSh0aXRsZSkpP1xzKlwpLykucmVwbGFjZSgibGFiZWwiLFhyKS5yZXBsYWNlKCJocmVmIiwvPCg/OlxcLnxbXlxuPD5cXF0pKz58W14gXHRcblx4MDAtXHgxZl0qLykucmVwbGFjZSgidGl0bGUiLC8iKD86XFwiP3xbXiJcXF0pKiJ8Jyg/OlxcJz98W14nXFxdKSonfFwoKD86XFxcKT98W14pXFxdKSpcKS8pLmdldFJlZ2V4KCksUWQ9VigvXiE/XFsobGFiZWwpXF1cWyhyZWYpXF0vKS5yZXBsYWNlKCJsYWJlbCIsWHIpLnJlcGxhY2UoInJlZiIsR28pLmdldFJlZ2V4KCksWGQ9VigvXiE/XFsocmVmKVxdKD86XFtcXSk/LykucmVwbGFjZSgicmVmIixHbykuZ2V0UmVnZXgoKSxxYj1WKCJyZWZsaW5rfG5vbGluayg/IVxcKCkiLCJnIikucmVwbGFjZSgicmVmbGluayIsUWQpLnJlcGxhY2UoIm5vbGluayIsWGQpLmdldFJlZ2V4KCksQmE9L1toSF1bdFRdW3RUXVtwUF1bc1NdP3xbZkZdW3RUXVtwUF0vLFpvPXtfYmFja3BlZGFsOkl0LGFueVB1bmN0dWF0aW9uOkhiLGF1dG9saW5rOkZiLGJsb2NrU2tpcDpSYixicjpXZCxjb2RlOk1iLGRlbDpJdCxkZWxMRGVsaW06SXQsZGVsUkRlbGltOkl0LGVtU3Ryb25nTERlbGltOkliLGVtU3Ryb25nUkRlbGltQXN0OkxiLGVtU3Ryb25nUkRlbGltVW5kOnpiLGVzY2FwZTpUYixsaW5rOmpiLG5vbGluazpYZCxwdW5jdHVhdGlvbjpBYixyZWZsaW5rOlFkLHJlZmxpbmtTZWFyY2g6cWIsdGFnOlViLHRleHQ6RWIsdXJsOkl0fSxXYj17Li4uWm8sbGluazpWKC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIixYcikuZ2V0UmVnZXgoKSxyZWZsaW5rOlYoL14hP1xbKGxhYmVsKVxdXHMqXFsoW15cXV0qKVxdLykucmVwbGFjZSgibGFiZWwiLFhyKS5nZXRSZWdleCgpfSxRaT17Li4uWm8sZW1TdHJvbmdSRGVsaW1Bc3Q6UGIsZW1TdHJvbmdMRGVsaW06RGIsZGVsTERlbGltOiRiLGRlbFJEZWxpbTpfYix1cmw6VigvXigoPzpwcm90b2NvbCk6XC9cL3x3d3dcLikoPzpbYS16QS1aMC05XC1dK1wuPykrW15cczxdKnxeZW1haWwvKS5yZXBsYWNlKCJwcm90b2NvbCIsQmEpLnJlcGxhY2UoImVtYWlsIiwvW0EtWmEtejAtOS5fKy1dKyhAKVthLXpBLVowLTktX10rKD86XC5bYS16QS1aMC05LV9dKlthLXpBLVowLTldKSsoPyFbLV9dKS8pLmdldFJlZ2V4KCksX2JhY2twZWRhbDovKD86W14/IS4sOjsqXycifigpJl0rfFwoW14pXSpcKXwmKD8hW2EtekEtWjAtOV0rOyQpfFs/IS4sOjsqXycifildKyg/ISQpKSsvLGRlbDovXih+fj8pKD89W15cc35dKSgoPzpcXFtcc1xTXXxbXlxcXSkqPyg/OlxcW1xzXFNdfFteXHN+XFxdKSlcMSg/PVtefl18JCkvLHRleHQ6VigvXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxuKXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKn5fXXxcYl98cHJvdG9jb2w6XC9cL3x3d3dcLnwkKXxbXiBdKD89IHsyLH1cbil8W15hLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dKD89W2EtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0rQCkpKS8pLnJlcGxhY2UoInByb3RvY29sIixCYSkuZ2V0UmVnZXgoKX0sS2I9ey4uLlFpLGJyOlYoV2QpLnJlcGxhY2UoInsyLH0iLCIqIikuZ2V0UmVnZXgoKSx0ZXh0OlYoUWkudGV4dCkucmVwbGFjZSgiXFxiXyIsIlxcYl98IHsyLH1cXG4iKS5yZXBsYWNlKC9cezIsXH0vZywiKiIpLmdldFJlZ2V4KCl9LFNyPXtub3JtYWw6WG8sZ2ZtOlNiLHBlZGFudGljOkNifSx4bj17bm9ybWFsOlpvLGdmbTpRaSxicmVha3M6S2IscGVkYW50aWM6V2J9LEpiPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifSxfYT1uPT5KYltuXTtmdW5jdGlvbiBVZShuLGUpe2lmKGUpe2lmKHhlLmVzY2FwZVRlc3QudGVzdChuKSlyZXR1cm4gbi5yZXBsYWNlKHhlLmVzY2FwZVJlcGxhY2UsX2EpfWVsc2UgaWYoeGUuZXNjYXBlVGVzdE5vRW5jb2RlLnRlc3QobikpcmV0dXJuIG4ucmVwbGFjZSh4ZS5lc2NhcGVSZXBsYWNlTm9FbmNvZGUsX2EpO3JldHVybiBufWZ1bmN0aW9uIEhhKG4pe3RyeXtuPWVuY29kZVVSSShuKS5yZXBsYWNlKHhlLnBlcmNlbnREZWNvZGUsIiUiKX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gbn1mdW5jdGlvbiBGYShuLGUpe2xldCB0PW4ucmVwbGFjZSh4ZS5maW5kUGlwZSwoaSxvLGwpPT57bGV0IGE9ITEsYz1vO2Zvcig7LS1jPj0wJiZsW2NdPT09IlxcIjspYT0hYTtyZXR1cm4gYT8ifCI6IiB8In0pLHI9dC5zcGxpdCh4ZS5zcGxpdFBpcGUpLHM9MDtpZihyWzBdLnRyaW0oKXx8ci5zaGlmdCgpLHIubGVuZ3RoPjAmJiFyLmF0KC0xKT8udHJpbSgpJiZyLnBvcCgpLGUpaWYoci5sZW5ndGg+ZSlyLnNwbGljZShlKTtlbHNlIGZvcig7ci5sZW5ndGg8ZTspci5wdXNoKCIiKTtmb3IoO3M8ci5sZW5ndGg7cysrKXJbc109cltzXS50cmltKCkucmVwbGFjZSh4ZS5zbGFzaFBpcGUsInwiKTtyZXR1cm4gcn1mdW5jdGlvbiB3bihuLGUsdCl7bGV0IHI9bi5sZW5ndGg7aWYocj09PTApcmV0dXJuIiI7bGV0IHM9MDtmb3IoO3M8ciYmbi5jaGFyQXQoci1zLTEpPT09ZTspcysrO3JldHVybiBuLnNsaWNlKDAsci1zKX1mdW5jdGlvbiBHYihuLGUpe2lmKG4uaW5kZXhPZihlWzFdKT09PS0xKXJldHVybi0xO2xldCB0PTA7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspaWYobltyXT09PSJcXCIpcisrO2Vsc2UgaWYobltyXT09PWVbMF0pdCsrO2Vsc2UgaWYobltyXT09PWVbMV0mJih0LS0sdDwwKSlyZXR1cm4gcjtyZXR1cm4gdD4wPy0yOi0xfWZ1bmN0aW9uIFFiKG4sZT0wKXtsZXQgdD1lLHI9IiI7Zm9yKGxldCBzIG9mIG4paWYocz09PSIJIil7bGV0IGk9NC10JTQ7cis9IiAiLnJlcGVhdChpKSx0Kz1pfWVsc2Ugcis9cyx0Kys7cmV0dXJuIHJ9ZnVuY3Rpb24gVmEobixlLHQscixzKXtsZXQgaT1lLmhyZWYsbz1lLnRpdGxlfHxudWxsLGw9blsxXS5yZXBsYWNlKHMub3RoZXIub3V0cHV0TGlua1JlcGxhY2UsIiQxIik7ci5zdGF0ZS5pbkxpbms9ITA7bGV0IGE9e3R5cGU6blswXS5jaGFyQXQoMCk9PT0iISI/ImltYWdlIjoibGluayIscmF3OnQsaHJlZjppLHRpdGxlOm8sdGV4dDpsLHRva2VuczpyLmlubGluZVRva2VucyhsKX07cmV0dXJuIHIuc3RhdGUuaW5MaW5rPSExLGF9ZnVuY3Rpb24gWGIobixlLHQpe2xldCByPW4ubWF0Y2godC5vdGhlci5pbmRlbnRDb2RlQ29tcGVuc2F0aW9uKTtpZihyPT09bnVsbClyZXR1cm4gZTtsZXQgcz1yWzFdO3JldHVybiBlLnNwbGl0KGAKYCkubWFwKGk9PntsZXQgbz1pLm1hdGNoKHQub3RoZXIuYmVnaW5uaW5nU3BhY2UpO2lmKG89PT1udWxsKXJldHVybiBpO2xldFtsXT1vO3JldHVybiBsLmxlbmd0aD49cy5sZW5ndGg/aS5zbGljZShzLmxlbmd0aCk6aX0pLmpvaW4oYApgKX12YXIgWXI9Y2xhc3N7b3B0aW9ucztydWxlcztsZXhlcjtjb25zdHJ1Y3RvcihuKXt0aGlzLm9wdGlvbnM9bnx8UXR9c3BhY2Uobil7bGV0IGU9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMobik7aWYoZSYmZVswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzplWzBdfX1jb2RlKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2suY29kZS5leGVjKG4pO2lmKGUpe2xldCB0PWVbMF0ucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLmNvZGVSZW1vdmVJbmRlbnQsIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6ZVswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP3Q6d24odCxgCmApfX19ZmVuY2VzKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVswXSxyPVhiKHQsZVszXXx8IiIsdGhpcy5ydWxlcyk7cmV0dXJue3R5cGU6ImNvZGUiLHJhdzp0LGxhbmc6ZVsyXT9lWzJdLnRyaW0oKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpOmVbMl0sdGV4dDpyfX19aGVhZGluZyhuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLmhlYWRpbmcuZXhlYyhuKTtpZihlKXtsZXQgdD1lWzJdLnRyaW0oKTtpZih0aGlzLnJ1bGVzLm90aGVyLmVuZGluZ0hhc2gudGVzdCh0KSl7bGV0IHI9d24odCwiIyIpOyh0aGlzLm9wdGlvbnMucGVkYW50aWN8fCFyfHx0aGlzLnJ1bGVzLm90aGVyLmVuZGluZ1NwYWNlQ2hhci50ZXN0KHIpKSYmKHQ9ci50cmltKCkpfXJldHVybnt0eXBlOiJoZWFkaW5nIixyYXc6ZVswXSxkZXB0aDplWzFdLmxlbmd0aCx0ZXh0OnQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHQpfX19aHIobil7bGV0IGU9dGhpcy5ydWxlcy5ibG9jay5oci5leGVjKG4pO2lmKGUpcmV0dXJue3R5cGU6ImhyIixyYXc6d24oZVswXSxgCmApfX1ibG9ja3F1b3RlKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2suYmxvY2txdW90ZS5leGVjKG4pO2lmKGUpe2xldCB0PXduKGVbMF0sYApgKS5zcGxpdChgCmApLHI9IiIscz0iIixpPVtdO2Zvcig7dC5sZW5ndGg+MDspe2xldCBvPSExLGw9W10sYTtmb3IoYT0wO2E8dC5sZW5ndGg7YSsrKWlmKHRoaXMucnVsZXMub3RoZXIuYmxvY2txdW90ZVN0YXJ0LnRlc3QodFthXSkpbC5wdXNoKHRbYV0pLG89ITA7ZWxzZSBpZighbylsLnB1c2godFthXSk7ZWxzZSBicmVhazt0PXQuc2xpY2UoYSk7bGV0IGM9bC5qb2luKGAKYCksdT1jLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU2V0ZXh0UmVwbGFjZSxgCiAgICAkMWApLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlU2V0ZXh0UmVwbGFjZTIsIiIpO3I9cj9gJHtyfQoke2N9YDpjLHM9cz9gJHtzfQoke3V9YDp1O2xldCBkPXRoaXMubGV4ZXIuc3RhdGUudG9wO2lmKHRoaXMubGV4ZXIuc3RhdGUudG9wPSEwLHRoaXMubGV4ZXIuYmxvY2tUb2tlbnModSxpLCEwKSx0aGlzLmxleGVyLnN0YXRlLnRvcD1kLHQubGVuZ3RoPT09MClicmVhaztsZXQgaD1pLmF0KC0xKTtpZihoPy50eXBlPT09ImNvZGUiKWJyZWFrO2lmKGg/LnR5cGU9PT0iYmxvY2txdW90ZSIpe2xldCBmPWgscD1mLnJhdytgCmArdC5qb2luKGAKYCksbT10aGlzLmJsb2NrcXVvdGUocCk7aVtpLmxlbmd0aC0xXT1tLHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC1mLnJhdy5sZW5ndGgpK20ucmF3LHM9cy5zdWJzdHJpbmcoMCxzLmxlbmd0aC1mLnRleHQubGVuZ3RoKSttLnRleHQ7YnJlYWt9ZWxzZSBpZihoPy50eXBlPT09Imxpc3QiKXtsZXQgZj1oLHA9Zi5yYXcrYApgK3Quam9pbihgCmApLG09dGhpcy5saXN0KHApO2lbaS5sZW5ndGgtMV09bSxyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtaC5yYXcubGVuZ3RoKSttLnJhdyxzPXMuc3Vic3RyaW5nKDAscy5sZW5ndGgtZi5yYXcubGVuZ3RoKSttLnJhdyx0PXAuc3Vic3RyaW5nKGkuYXQoLTEpLnJhdy5sZW5ndGgpLnNwbGl0KGAKYCk7Y29udGludWV9fXJldHVybnt0eXBlOiJibG9ja3F1b3RlIixyYXc6cix0b2tlbnM6aSx0ZXh0OnN9fX1saXN0KG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKG4pO2lmKGUpe2xldCB0PWVbMV0udHJpbSgpLHI9dC5sZW5ndGg+MSxzPXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpyLHN0YXJ0OnI/K3Quc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119O3Q9cj9gXFxkezEsOX1cXCR7dC5zbGljZSgtMSl9YDpgXFwke3R9YCx0aGlzLm9wdGlvbnMucGVkYW50aWMmJih0PXI/dDoiWyorLV0iKTtsZXQgaT10aGlzLnJ1bGVzLm90aGVyLmxpc3RJdGVtUmVnZXgodCksbz0hMTtmb3IoO247KXtsZXQgYT0hMSxjPSIiLHU9IiI7aWYoIShlPWkuZXhlYyhuKSl8fHRoaXMucnVsZXMuYmxvY2suaHIudGVzdChuKSlicmVhaztjPWVbMF0sbj1uLnN1YnN0cmluZyhjLmxlbmd0aCk7bGV0IGQ9UWIoZVsyXS5zcGxpdChgCmAsMSlbMF0sZVsxXS5sZW5ndGgpLGg9bi5zcGxpdChgCmAsMSlbMF0sZj0hZC50cmltKCkscD0wO2lmKHRoaXMub3B0aW9ucy5wZWRhbnRpYz8ocD0yLHU9ZC50cmltU3RhcnQoKSk6Zj9wPWVbMV0ubGVuZ3RoKzE6KHA9ZC5zZWFyY2godGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIpLHA9cD40PzE6cCx1PWQuc2xpY2UocCkscCs9ZVsxXS5sZW5ndGgpLGYmJnRoaXMucnVsZXMub3RoZXIuYmxhbmtMaW5lLnRlc3QoaCkmJihjKz1oK2AKYCxuPW4uc3Vic3RyaW5nKGgubGVuZ3RoKzEpLGE9ITApLCFhKXtsZXQgbT10aGlzLnJ1bGVzLm90aGVyLm5leHRCdWxsZXRSZWdleChwKSxnPXRoaXMucnVsZXMub3RoZXIuaHJSZWdleChwKSx5PXRoaXMucnVsZXMub3RoZXIuZmVuY2VzQmVnaW5SZWdleChwKSxrPXRoaXMucnVsZXMub3RoZXIuaGVhZGluZ0JlZ2luUmVnZXgocCksYj10aGlzLnJ1bGVzLm90aGVyLmh0bWxCZWdpblJlZ2V4KHApLHc9dGhpcy5ydWxlcy5vdGhlci5ibG9ja3F1b3RlQmVnaW5SZWdleChwKTtmb3IoO247KXtsZXQgeD1uLnNwbGl0KGAKYCwxKVswXSx2O2lmKGg9eCx0aGlzLm9wdGlvbnMucGVkYW50aWM/KGg9aC5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubGlzdFJlcGxhY2VOZXN0aW5nLCIgICIpLHY9aCk6dj1oLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci50YWJDaGFyR2xvYmFsLCIgICAgIikseS50ZXN0KGgpfHxrLnRlc3QoaCl8fGIudGVzdChoKXx8dy50ZXN0KGgpfHxtLnRlc3QoaCl8fGcudGVzdChoKSlicmVhaztpZih2LnNlYXJjaCh0aGlzLnJ1bGVzLm90aGVyLm5vblNwYWNlQ2hhcik+PXB8fCFoLnRyaW0oKSl1Kz1gCmArdi5zbGljZShwKTtlbHNle2lmKGZ8fGQucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLnRhYkNoYXJHbG9iYWwsIiAgICAiKS5zZWFyY2godGhpcy5ydWxlcy5vdGhlci5ub25TcGFjZUNoYXIpPj00fHx5LnRlc3QoZCl8fGsudGVzdChkKXx8Zy50ZXN0KGQpKWJyZWFrO3UrPWAKYCtofWY9IWgudHJpbSgpLGMrPXgrYApgLG49bi5zdWJzdHJpbmcoeC5sZW5ndGgrMSksZD12LnNsaWNlKHApfX1zLmxvb3NlfHwobz9zLmxvb3NlPSEwOnRoaXMucnVsZXMub3RoZXIuZG91YmxlQmxhbmtMaW5lLnRlc3QoYykmJihvPSEwKSkscy5pdGVtcy5wdXNoKHt0eXBlOiJsaXN0X2l0ZW0iLHJhdzpjLHRhc2s6ISF0aGlzLm9wdGlvbnMuZ2ZtJiZ0aGlzLnJ1bGVzLm90aGVyLmxpc3RJc1Rhc2sudGVzdCh1KSxsb29zZTohMSx0ZXh0OnUsdG9rZW5zOltdfSkscy5yYXcrPWN9bGV0IGw9cy5pdGVtcy5hdCgtMSk7aWYobClsLnJhdz1sLnJhdy50cmltRW5kKCksbC50ZXh0PWwudGV4dC50cmltRW5kKCk7ZWxzZSByZXR1cm47cy5yYXc9cy5yYXcudHJpbUVuZCgpO2ZvcihsZXQgYSBvZiBzLml0ZW1zKXtpZih0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxhLnRva2Vucz10aGlzLmxleGVyLmJsb2NrVG9rZW5zKGEudGV4dCxbXSksYS50YXNrKXtpZihhLnRleHQ9YS50ZXh0LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLGEudG9rZW5zWzBdPy50eXBlPT09InRleHQifHxhLnRva2Vuc1swXT8udHlwZT09PSJwYXJhZ3JhcGgiKXthLnRva2Vuc1swXS5yYXc9YS50b2tlbnNbMF0ucmF3LnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpLGEudG9rZW5zWzBdLnRleHQ9YS50b2tlbnNbMF0udGV4dC5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubGlzdFJlcGxhY2VUYXNrLCIiKTtmb3IobGV0IHU9dGhpcy5sZXhlci5pbmxpbmVRdWV1ZS5sZW5ndGgtMTt1Pj0wO3UtLSlpZih0aGlzLnJ1bGVzLm90aGVyLmxpc3RJc1Rhc2sudGVzdCh0aGlzLmxleGVyLmlubGluZVF1ZXVlW3VdLnNyYykpe3RoaXMubGV4ZXIuaW5saW5lUXVldWVbdV0uc3JjPXRoaXMubGV4ZXIuaW5saW5lUXVldWVbdV0uc3JjLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5saXN0UmVwbGFjZVRhc2ssIiIpO2JyZWFrfX1sZXQgYz10aGlzLnJ1bGVzLm90aGVyLmxpc3RUYXNrQ2hlY2tib3guZXhlYyhhLnJhdyk7aWYoYyl7bGV0IHU9e3R5cGU6ImNoZWNrYm94IixyYXc6Y1swXSsiICIsY2hlY2tlZDpjWzBdIT09IlsgXSJ9O2EuY2hlY2tlZD11LmNoZWNrZWQscy5sb29zZT9hLnRva2Vuc1swXSYmWyJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoYS50b2tlbnNbMF0udHlwZSkmJiJ0b2tlbnMiaW4gYS50b2tlbnNbMF0mJmEudG9rZW5zWzBdLnRva2Vucz8oYS50b2tlbnNbMF0ucmF3PXUucmF3K2EudG9rZW5zWzBdLnJhdyxhLnRva2Vuc1swXS50ZXh0PXUucmF3K2EudG9rZW5zWzBdLnRleHQsYS50b2tlbnNbMF0udG9rZW5zLnVuc2hpZnQodSkpOmEudG9rZW5zLnVuc2hpZnQoe3R5cGU6InBhcmFncmFwaCIscmF3OnUucmF3LHRleHQ6dS5yYXcsdG9rZW5zOlt1XX0pOmEudG9rZW5zLnVuc2hpZnQodSl9fWlmKCFzLmxvb3NlKXtsZXQgYz1hLnRva2Vucy5maWx0ZXIoZD0+ZC50eXBlPT09InNwYWNlIiksdT1jLmxlbmd0aD4wJiZjLnNvbWUoZD0+dGhpcy5ydWxlcy5vdGhlci5hbnlMaW5lLnRlc3QoZC5yYXcpKTtzLmxvb3NlPXV9fWlmKHMubG9vc2UpZm9yKGxldCBhIG9mIHMuaXRlbXMpe2EubG9vc2U9ITA7Zm9yKGxldCBjIG9mIGEudG9rZW5zKWMudHlwZT09PSJ0ZXh0IiYmKGMudHlwZT0icGFyYWdyYXBoIil9cmV0dXJuIHN9fWh0bWwobil7bGV0IGU9dGhpcy5ydWxlcy5ibG9jay5odG1sLmV4ZWMobik7aWYoZSlyZXR1cm57dHlwZToiaHRtbCIsYmxvY2s6ITAscmF3OmVbMF0scHJlOmVbMV09PT0icHJlInx8ZVsxXT09PSJzY3JpcHQifHxlWzFdPT09InN0eWxlIix0ZXh0OmVbMF19fWRlZihuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKG4pO2lmKGUpe2xldCB0PWVbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubXVsdGlwbGVTcGFjZUdsb2JhbCwiICIpLHI9ZVsyXT9lWzJdLnJlcGxhY2UodGhpcy5ydWxlcy5vdGhlci5ocmVmQnJhY2tldHMsIiQxIikucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbiwiJDEiKToiIixzPWVbM10/ZVszXS5zdWJzdHJpbmcoMSxlWzNdLmxlbmd0aC0xKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpOmVbM107cmV0dXJue3R5cGU6ImRlZiIsdGFnOnQscmF3OmVbMF0saHJlZjpyLHRpdGxlOnN9fX10YWJsZShuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLnRhYmxlLmV4ZWMobik7aWYoIWV8fCF0aGlzLnJ1bGVzLm90aGVyLnRhYmxlRGVsaW1pdGVyLnRlc3QoZVsyXSkpcmV0dXJuO2xldCB0PUZhKGVbMV0pLHI9ZVsyXS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIudGFibGVBbGlnbkNoYXJzLCIiKS5zcGxpdCgifCIpLHM9ZVszXT8udHJpbSgpP2VbM10ucmVwbGFjZSh0aGlzLnJ1bGVzLm90aGVyLnRhYmxlUm93QmxhbmtMaW5lLCIiKS5zcGxpdChgCmApOltdLGk9e3R5cGU6InRhYmxlIixyYXc6ZVswXSxoZWFkZXI6W10sYWxpZ246W10scm93czpbXX07aWYodC5sZW5ndGg9PT1yLmxlbmd0aCl7Zm9yKGxldCBvIG9mIHIpdGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduUmlnaHQudGVzdChvKT9pLmFsaWduLnB1c2goInJpZ2h0Iik6dGhpcy5ydWxlcy5vdGhlci50YWJsZUFsaWduQ2VudGVyLnRlc3Qobyk/aS5hbGlnbi5wdXNoKCJjZW50ZXIiKTp0aGlzLnJ1bGVzLm90aGVyLnRhYmxlQWxpZ25MZWZ0LnRlc3Qobyk/aS5hbGlnbi5wdXNoKCJsZWZ0Iik6aS5hbGlnbi5wdXNoKG51bGwpO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKWkuaGVhZGVyLnB1c2goe3RleHQ6dFtvXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodFtvXSksaGVhZGVyOiEwLGFsaWduOmkuYWxpZ25bb119KTtmb3IobGV0IG8gb2YgcylpLnJvd3MucHVzaChGYShvLGkuaGVhZGVyLmxlbmd0aCkubWFwKChsLGEpPT4oe3RleHQ6bCx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUobCksaGVhZGVyOiExLGFsaWduOmkuYWxpZ25bYV19KSkpO3JldHVybiBpfX1saGVhZGluZyhuKXtsZXQgZT10aGlzLnJ1bGVzLmJsb2NrLmxoZWFkaW5nLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVsxXS50cmltKCk7cmV0dXJue3R5cGU6ImhlYWRpbmciLHJhdzplWzBdLGRlcHRoOmVbMl0uY2hhckF0KDApPT09Ij0iPzE6Mix0ZXh0OnQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHQpfX19cGFyYWdyYXBoKG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2sucGFyYWdyYXBoLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVsxXS5jaGFyQXQoZVsxXS5sZW5ndGgtMSk9PT1gCmA/ZVsxXS5zbGljZSgwLC0xKTplWzFdO3JldHVybnt0eXBlOiJwYXJhZ3JhcGgiLHJhdzplWzBdLHRleHQ6dCx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodCl9fX10ZXh0KG4pe2xldCBlPXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKG4pO2lmKGUpcmV0dXJue3R5cGU6InRleHQiLHJhdzplWzBdLHRleHQ6ZVswXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZVswXSl9fWVzY2FwZShuKXtsZXQgZT10aGlzLnJ1bGVzLmlubGluZS5lc2NhcGUuZXhlYyhuKTtpZihlKXJldHVybnt0eXBlOiJlc2NhcGUiLHJhdzplWzBdLHRleHQ6ZVsxXX19dGFnKG4pe2xldCBlPXRoaXMucnVsZXMuaW5saW5lLnRhZy5leGVjKG4pO2lmKGUpcmV0dXJuIXRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0QVRhZy50ZXN0KGVbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiZ0aGlzLnJ1bGVzLm90aGVyLmVuZEFUYWcudGVzdChlWzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiZ0aGlzLnJ1bGVzLm90aGVyLnN0YXJ0UHJlU2NyaXB0VGFnLnRlc3QoZVswXSk/dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmdGhpcy5ydWxlcy5vdGhlci5lbmRQcmVTY3JpcHRUYWcudGVzdChlWzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMSkse3R5cGU6Imh0bWwiLHJhdzplWzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2NrOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayxibG9jazohMSx0ZXh0OmVbMF19fWxpbmsobil7bGV0IGU9dGhpcy5ydWxlcy5pbmxpbmUubGluay5leGVjKG4pO2lmKGUpe2xldCB0PWVbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJnRoaXMucnVsZXMub3RoZXIuc3RhcnRBbmdsZUJyYWNrZXQudGVzdCh0KSl7aWYoIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QodCkpcmV0dXJuO2xldCBpPXduKHQuc2xpY2UoMCwtMSksIlxcIik7aWYoKHQubGVuZ3RoLWkubGVuZ3RoKSUyPT09MClyZXR1cm59ZWxzZXtsZXQgaT1HYihlWzJdLCIoKSIpO2lmKGk9PT0tMilyZXR1cm47aWYoaT4tMSl7bGV0IG89KGVbMF0uaW5kZXhPZigiISIpPT09MD81OjQpK2VbMV0ubGVuZ3RoK2k7ZVsyXT1lWzJdLnN1YnN0cmluZygwLGkpLGVbMF09ZVswXS5zdWJzdHJpbmcoMCxvKS50cmltKCksZVszXT0iIn19bGV0IHI9ZVsyXSxzPSIiO2lmKHRoaXMub3B0aW9ucy5wZWRhbnRpYyl7bGV0IGk9dGhpcy5ydWxlcy5vdGhlci5wZWRhbnRpY0hyZWZUaXRsZS5leGVjKHIpO2kmJihyPWlbMV0scz1pWzNdKX1lbHNlIHM9ZVszXT9lWzNdLnNsaWNlKDEsLTEpOiIiO3JldHVybiByPXIudHJpbSgpLHRoaXMucnVsZXMub3RoZXIuc3RhcnRBbmdsZUJyYWNrZXQudGVzdChyKSYmKHRoaXMub3B0aW9ucy5wZWRhbnRpYyYmIXRoaXMucnVsZXMub3RoZXIuZW5kQW5nbGVCcmFja2V0LnRlc3QodCk/cj1yLnNsaWNlKDEpOnI9ci5zbGljZSgxLC0xKSksVmEoZSx7aHJlZjpyJiZyLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24sIiQxIiksdGl0bGU6cyYmcy5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLCIkMSIpfSxlWzBdLHRoaXMubGV4ZXIsdGhpcy5ydWxlcyl9fXJlZmxpbmsobixlKXtsZXQgdDtpZigodD10aGlzLnJ1bGVzLmlubGluZS5yZWZsaW5rLmV4ZWMobikpfHwodD10aGlzLnJ1bGVzLmlubGluZS5ub2xpbmsuZXhlYyhuKSkpe2xldCByPSh0WzJdfHx0WzFdKS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubXVsdGlwbGVTcGFjZUdsb2JhbCwiICIpLHM9ZVtyLnRvTG93ZXJDYXNlKCldO2lmKCFzKXtsZXQgaT10WzBdLmNoYXJBdCgwKTtyZXR1cm57dHlwZToidGV4dCIscmF3OmksdGV4dDppfX1yZXR1cm4gVmEodCxzLHRbMF0sdGhpcy5sZXhlcix0aGlzLnJ1bGVzKX19ZW1TdHJvbmcobixlLHQ9IiIpe2xldCByPXRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nTERlbGltLmV4ZWMobik7aWYoISghcnx8IXJbMV0mJiFyWzJdJiYhclszXSYmIXJbNF18fHJbNF0mJnQubWF0Y2godGhpcy5ydWxlcy5vdGhlci51bmljb2RlQWxwaGFOdW1lcmljKSkmJighKHJbMV18fHJbM10pfHwhdHx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyh0KSkpe2xldCBzPVsuLi5yWzBdXS5sZW5ndGgtMSxpLG8sbD1zLGE9MCxjPXJbMF1bMF09PT0iKiI/dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmdSRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmdSRGVsaW1VbmQ7Zm9yKGMubGFzdEluZGV4PTAsZT1lLnNsaWNlKC0xKm4ubGVuZ3RoK3MpOyhyPWMuZXhlYyhlKSkhPT1udWxsOyl7aWYoaT1yWzFdfHxyWzJdfHxyWzNdfHxyWzRdfHxyWzVdfHxyWzZdLCFpKWNvbnRpbnVlO2lmKG89Wy4uLmldLmxlbmd0aCxyWzNdfHxyWzRdKXtsKz1vO2NvbnRpbnVlfWVsc2UgaWYoKHJbNV18fHJbNl0pJiZzJTMmJiEoKHMrbyklMykpe2ErPW87Y29udGludWV9aWYobC09byxsPjApY29udGludWU7bz1NYXRoLm1pbihvLG8rbCthKTtsZXQgdT1bLi4uclswXV1bMF0ubGVuZ3RoLGQ9bi5zbGljZSgwLHMrci5pbmRleCt1K28pO2lmKE1hdGgubWluKHMsbyklMil7bGV0IGY9ZC5zbGljZSgxLC0xKTtyZXR1cm57dHlwZToiZW0iLHJhdzpkLHRleHQ6Zix0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoZil9fWxldCBoPWQuc2xpY2UoMiwtMik7cmV0dXJue3R5cGU6InN0cm9uZyIscmF3OmQsdGV4dDpoLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhoKX19fX1jb2Rlc3BhbihuKXtsZXQgZT10aGlzLnJ1bGVzLmlubGluZS5jb2RlLmV4ZWMobik7aWYoZSl7bGV0IHQ9ZVsyXS5yZXBsYWNlKHRoaXMucnVsZXMub3RoZXIubmV3TGluZUNoYXJHbG9iYWwsIiAiKSxyPXRoaXMucnVsZXMub3RoZXIubm9uU3BhY2VDaGFyLnRlc3QodCkscz10aGlzLnJ1bGVzLm90aGVyLnN0YXJ0aW5nU3BhY2VDaGFyLnRlc3QodCkmJnRoaXMucnVsZXMub3RoZXIuZW5kaW5nU3BhY2VDaGFyLnRlc3QodCk7cmV0dXJuIHImJnMmJih0PXQuc3Vic3RyaW5nKDEsdC5sZW5ndGgtMSkpLHt0eXBlOiJjb2Rlc3BhbiIscmF3OmVbMF0sdGV4dDp0fX19YnIobil7bGV0IGU9dGhpcy5ydWxlcy5pbmxpbmUuYnIuZXhlYyhuKTtpZihlKXJldHVybnt0eXBlOiJiciIscmF3OmVbMF19fWRlbChuLGUsdD0iIil7bGV0IHI9dGhpcy5ydWxlcy5pbmxpbmUuZGVsTERlbGltLmV4ZWMobik7aWYociYmKCFyWzFdfHwhdHx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyh0KSkpe2xldCBzPVsuLi5yWzBdXS5sZW5ndGgtMSxpLG8sbD1zLGE9dGhpcy5ydWxlcy5pbmxpbmUuZGVsUkRlbGltO2ZvcihhLmxhc3RJbmRleD0wLGU9ZS5zbGljZSgtMSpuLmxlbmd0aCtzKTsocj1hLmV4ZWMoZSkpIT09bnVsbDspe2lmKGk9clsxXXx8clsyXXx8clszXXx8cls0XXx8cls1XXx8cls2XSwhaXx8KG89Wy4uLmldLmxlbmd0aCxvIT09cykpY29udGludWU7aWYoclszXXx8cls0XSl7bCs9bztjb250aW51ZX1pZihsLT1vLGw+MCljb250aW51ZTtvPU1hdGgubWluKG8sbytsKTtsZXQgYz1bLi4uclswXV1bMF0ubGVuZ3RoLHU9bi5zbGljZSgwLHMrci5pbmRleCtjK28pLGQ9dS5zbGljZShzLC1zKTtyZXR1cm57dHlwZToiZGVsIixyYXc6dSx0ZXh0OmQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGQpfX19fWF1dG9saW5rKG4pe2xldCBlPXRoaXMucnVsZXMuaW5saW5lLmF1dG9saW5rLmV4ZWMobik7aWYoZSl7bGV0IHQscjtyZXR1cm4gZVsyXT09PSJAIj8odD1lWzFdLHI9Im1haWx0bzoiK3QpOih0PWVbMV0scj10KSx7dHlwZToibGluayIscmF3OmVbMF0sdGV4dDp0LGhyZWY6cix0b2tlbnM6W3t0eXBlOiJ0ZXh0IixyYXc6dCx0ZXh0OnR9XX19fXVybChuKXtsZXQgZTtpZihlPXRoaXMucnVsZXMuaW5saW5lLnVybC5leGVjKG4pKXtsZXQgdCxyO2lmKGVbMl09PT0iQCIpdD1lWzBdLHI9Im1haWx0bzoiK3Q7ZWxzZXtsZXQgcztkbyBzPWVbMF0sZVswXT10aGlzLnJ1bGVzLmlubGluZS5fYmFja3BlZGFsLmV4ZWMoZVswXSk/LlswXT8/IiI7d2hpbGUocyE9PWVbMF0pO3Q9ZVswXSxlWzFdPT09Ind3dy4iP3I9Imh0dHA6Ly8iK2VbMF06cj1lWzBdfXJldHVybnt0eXBlOiJsaW5rIixyYXc6ZVswXSx0ZXh0OnQsaHJlZjpyLHRva2Vuczpbe3R5cGU6InRleHQiLHJhdzp0LHRleHQ6dH1dfX19aW5saW5lVGV4dChuKXtsZXQgZT10aGlzLnJ1bGVzLmlubGluZS50ZXh0LmV4ZWMobik7aWYoZSl7bGV0IHQ9dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrO3JldHVybnt0eXBlOiJ0ZXh0IixyYXc6ZVswXSx0ZXh0OmVbMF0sZXNjYXBlZDp0fX19fSxfZT1jbGFzcyBYaXt0b2tlbnM7b3B0aW9ucztzdGF0ZTtpbmxpbmVRdWV1ZTt0b2tlbml6ZXI7Y29uc3RydWN0b3IoZSl7dGhpcy50b2tlbnM9W10sdGhpcy50b2tlbnMubGlua3M9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnM9ZXx8UXQsdGhpcy5vcHRpb25zLnRva2VuaXplcj10aGlzLm9wdGlvbnMudG9rZW5pemVyfHxuZXcgWXIsdGhpcy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcix0aGlzLnRva2VuaXplci5vcHRpb25zPXRoaXMub3B0aW9ucyx0aGlzLnRva2VuaXplci5sZXhlcj10aGlzLHRoaXMuaW5saW5lUXVldWU9W10sdGhpcy5zdGF0ZT17aW5MaW5rOiExLGluUmF3QmxvY2s6ITEsdG9wOiEwfTtsZXQgdD17b3RoZXI6eGUsYmxvY2s6U3Iubm9ybWFsLGlubGluZTp4bi5ub3JtYWx9O3RoaXMub3B0aW9ucy5wZWRhbnRpYz8odC5ibG9jaz1Tci5wZWRhbnRpYyx0LmlubGluZT14bi5wZWRhbnRpYyk6dGhpcy5vcHRpb25zLmdmbSYmKHQuYmxvY2s9U3IuZ2ZtLHRoaXMub3B0aW9ucy5icmVha3M/dC5pbmxpbmU9eG4uYnJlYWtzOnQuaW5saW5lPXhuLmdmbSksdGhpcy50b2tlbml6ZXIucnVsZXM9dH1zdGF0aWMgZ2V0IHJ1bGVzKCl7cmV0dXJue2Jsb2NrOlNyLGlubGluZTp4bn19c3RhdGljIGxleChlLHQpe3JldHVybiBuZXcgWGkodCkubGV4KGUpfXN0YXRpYyBsZXhJbmxpbmUoZSx0KXtyZXR1cm4gbmV3IFhpKHQpLmlubGluZVRva2VucyhlKX1sZXgoZSl7ZT1lLnJlcGxhY2UoeGUuY2FycmlhZ2VSZXR1cm4sYApgKSx0aGlzLmJsb2NrVG9rZW5zKGUsdGhpcy50b2tlbnMpO2ZvcihsZXQgdD0wO3Q8dGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGg7dCsrKXtsZXQgcj10aGlzLmlubGluZVF1ZXVlW3RdO3RoaXMuaW5saW5lVG9rZW5zKHIuc3JjLHIudG9rZW5zKX1yZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnRva2Vuc31ibG9ja1Rva2VucyhlLHQ9W10scj0hMSl7Zm9yKHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5vcHRpb25zLnBlZGFudGljJiYoZT1lLnJlcGxhY2UoeGUudGFiQ2hhckdsb2JhbCwiICAgICIpLnJlcGxhY2UoeGUuc3BhY2VMaW5lLCIiKSk7ZTspe2xldCBzO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5ibG9jaz8uc29tZShvPT4ocz1vLmNhbGwoe2xleGVyOnRoaXN9LGUsdCkpPyhlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpLCEwKTohMSkpY29udGludWU7aWYocz10aGlzLnRva2VuaXplci5zcGFjZShlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpO2xldCBvPXQuYXQoLTEpO3MucmF3Lmxlbmd0aD09PTEmJm8hPT12b2lkIDA/by5yYXcrPWAKYDp0LnB1c2gocyk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci5jb2RlKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7bGV0IG89dC5hdCgtMSk7bz8udHlwZT09PSJwYXJhZ3JhcGgifHxvPy50eXBlPT09InRleHQiPyhvLnJhdys9KG8ucmF3LmVuZHNXaXRoKGAKYCk/IiI6YApgKStzLnJhdyxvLnRleHQrPWAKYCtzLnRleHQsdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW8udGV4dCk6dC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuZmVuY2VzKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuaGVhZGluZyhlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLHQucHVzaChzKTtjb250aW51ZX1pZihzPXRoaXMudG9rZW5pemVyLmhyKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuYmxvY2txdW90ZShlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLHQucHVzaChzKTtjb250aW51ZX1pZihzPXRoaXMudG9rZW5pemVyLmxpc3QoZSkpe2U9ZS5zdWJzdHJpbmcocy5yYXcubGVuZ3RoKSx0LnB1c2gocyk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci5odG1sKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWlmKHM9dGhpcy50b2tlbml6ZXIuZGVmKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7bGV0IG89dC5hdCgtMSk7bz8udHlwZT09PSJwYXJhZ3JhcGgifHxvPy50eXBlPT09InRleHQiPyhvLnJhdys9KG8ucmF3LmVuZHNXaXRoKGAKYCk/IiI6YApgKStzLnJhdyxvLnRleHQrPWAKYCtzLnJhdyx0aGlzLmlubGluZVF1ZXVlLmF0KC0xKS5zcmM9by50ZXh0KTp0aGlzLnRva2Vucy5saW5rc1tzLnRhZ118fCh0aGlzLnRva2Vucy5saW5rc1tzLnRhZ109e2hyZWY6cy5ocmVmLHRpdGxlOnMudGl0bGV9LHQucHVzaChzKSk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci50YWJsZShlKSl7ZT1lLnN1YnN0cmluZyhzLnJhdy5sZW5ndGgpLHQucHVzaChzKTtjb250aW51ZX1pZihzPXRoaXMudG9rZW5pemVyLmxoZWFkaW5nKGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCksdC5wdXNoKHMpO2NvbnRpbnVlfWxldCBpPWU7aWYodGhpcy5vcHRpb25zLmV4dGVuc2lvbnM/LnN0YXJ0QmxvY2spe2xldCBvPTEvMCxsPWUuc2xpY2UoMSksYTt0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrLmZvckVhY2goYz0+e2E9Yy5jYWxsKHtsZXhlcjp0aGlzfSxsKSx0eXBlb2YgYT09Im51bWJlciImJmE+PTAmJihvPU1hdGgubWluKG8sYSkpfSksbzwxLzAmJm8+PTAmJihpPWUuc3Vic3RyaW5nKDAsbysxKSl9aWYodGhpcy5zdGF0ZS50b3AmJihzPXRoaXMudG9rZW5pemVyLnBhcmFncmFwaChpKSkpe2xldCBvPXQuYXQoLTEpO3ImJm8/LnR5cGU9PT0icGFyYWdyYXBoIj8oby5yYXcrPShvLnJhdy5lbmRzV2l0aChgCmApPyIiOmAKYCkrcy5yYXcsby50ZXh0Kz1gCmArcy50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW8udGV4dCk6dC5wdXNoKHMpLHI9aS5sZW5ndGghPT1lLmxlbmd0aCxlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7Y29udGludWV9aWYocz10aGlzLnRva2VuaXplci50ZXh0KGUpKXtlPWUuc3Vic3RyaW5nKHMucmF3Lmxlbmd0aCk7bGV0IG89dC5hdCgtMSk7bz8udHlwZT09PSJ0ZXh0Ij8oby5yYXcrPShvLnJhdy5lbmRzV2l0aChgCmApPyIiOmAKYCkrcy5yYXcsby50ZXh0Kz1gCmArcy50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZS5hdCgtMSkuc3JjPW8udGV4dCk6dC5wdXNoKHMpO2NvbnRpbnVlfWlmKGUpe2xldCBvPSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpYnJlYWs7dGhyb3cgbmV3IEVycm9yKG8pfX1yZXR1cm4gdGhpcy5zdGF0ZS50b3A9ITAsdH1pbmxpbmUoZSx0PVtdKXtyZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZS5wdXNoKHtzcmM6ZSx0b2tlbnM6dH0pLHR9aW5saW5lVG9rZW5zKGUsdD1bXSl7dGhpcy50b2tlbml6ZXIubGV4ZXI9dGhpcztsZXQgcj1lLHM9bnVsbDtpZih0aGlzLnRva2Vucy5saW5rcyl7bGV0IGE9T2JqZWN0LmtleXModGhpcy50b2tlbnMubGlua3MpO2lmKGEubGVuZ3RoPjApZm9yKDsocz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5leGVjKHIpKSE9PW51bGw7KWEuaW5jbHVkZXMoc1swXS5zbGljZShzWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYocj1yLnNsaWNlKDAscy5pbmRleCkrIlsiKyJhIi5yZXBlYXQoc1swXS5sZW5ndGgtMikrIl0iK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDsocz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24uZXhlYyhyKSkhPT1udWxsOylyPXIuc2xpY2UoMCxzLmluZGV4KSsiKysiK3Iuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmxhc3RJbmRleCk7bGV0IGk7Zm9yKDsocz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmV4ZWMocikpIT09bnVsbDspaT1zWzJdP3NbMl0ubGVuZ3RoOjAscj1yLnNsaWNlKDAscy5pbmRleCtpKSsiWyIrImEiLnJlcGVhdChzWzBdLmxlbmd0aC1pLTIpKyJdIityLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAubGFzdEluZGV4KTtyPXRoaXMub3B0aW9ucy5ob29rcz8uZW1TdHJvbmdNYXNrPy5jYWxsKHtsZXhlcjp0aGlzfSxyKT8/cjtsZXQgbz0hMSxsPSIiO2Zvcig7ZTspe298fChsPSIiKSxvPSExO2xldCBhO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5pbmxpbmU/LnNvbWUodT0+KGE9dS5jYWxsKHtsZXhlcjp0aGlzfSxlLHQpKT8oZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKSwhMCk6ITEpKWNvbnRpbnVlO2lmKGE9dGhpcy50b2tlbml6ZXIuZXNjYXBlKGUpKXtlPWUuc3Vic3RyaW5nKGEucmF3Lmxlbmd0aCksdC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIudGFnKGUpKXtlPWUuc3Vic3RyaW5nKGEucmF3Lmxlbmd0aCksdC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIubGluayhlKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKTtjb250aW51ZX1pZihhPXRoaXMudG9rZW5pemVyLnJlZmxpbmsoZSx0aGlzLnRva2Vucy5saW5rcykpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKTtsZXQgdT10LmF0KC0xKTthLnR5cGU9PT0idGV4dCImJnU/LnR5cGU9PT0idGV4dCI/KHUucmF3Kz1hLnJhdyx1LnRleHQrPWEudGV4dCk6dC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIuZW1TdHJvbmcoZSxyLGwpKXtlPWUuc3Vic3RyaW5nKGEucmF3Lmxlbmd0aCksdC5wdXNoKGEpO2NvbnRpbnVlfWlmKGE9dGhpcy50b2tlbml6ZXIuY29kZXNwYW4oZSkpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKSx0LnB1c2goYSk7Y29udGludWV9aWYoYT10aGlzLnRva2VuaXplci5icihlKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKTtjb250aW51ZX1pZihhPXRoaXMudG9rZW5pemVyLmRlbChlLHIsbCkpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKSx0LnB1c2goYSk7Y29udGludWV9aWYoYT10aGlzLnRva2VuaXplci5hdXRvbGluayhlKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLHQucHVzaChhKTtjb250aW51ZX1pZighdGhpcy5zdGF0ZS5pbkxpbmsmJihhPXRoaXMudG9rZW5pemVyLnVybChlKSkpe2U9ZS5zdWJzdHJpbmcoYS5yYXcubGVuZ3RoKSx0LnB1c2goYSk7Y29udGludWV9bGV0IGM9ZTtpZih0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucz8uc3RhcnRJbmxpbmUpe2xldCB1PTEvMCxkPWUuc2xpY2UoMSksaDt0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZS5mb3JFYWNoKGY9PntoPWYuY2FsbCh7bGV4ZXI6dGhpc30sZCksdHlwZW9mIGg9PSJudW1iZXIiJiZoPj0wJiYodT1NYXRoLm1pbih1LGgpKX0pLHU8MS8wJiZ1Pj0wJiYoYz1lLnN1YnN0cmluZygwLHUrMSkpfWlmKGE9dGhpcy50b2tlbml6ZXIuaW5saW5lVGV4dChjKSl7ZT1lLnN1YnN0cmluZyhhLnJhdy5sZW5ndGgpLGEucmF3LnNsaWNlKC0xKSE9PSJfIiYmKGw9YS5yYXcuc2xpY2UoLTEpKSxvPSEwO2xldCB1PXQuYXQoLTEpO3U/LnR5cGU9PT0idGV4dCI/KHUucmF3Kz1hLnJhdyx1LnRleHQrPWEudGV4dCk6dC5wdXNoKGEpO2NvbnRpbnVlfWlmKGUpe2xldCB1PSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpYnJlYWs7dGhyb3cgbmV3IEVycm9yKHUpfX1yZXR1cm4gdH19LFpyPWNsYXNze29wdGlvbnM7cGFyc2VyO2NvbnN0cnVjdG9yKG4pe3RoaXMub3B0aW9ucz1ufHxRdH1zcGFjZShuKXtyZXR1cm4iIn1jb2RlKHt0ZXh0Om4sbGFuZzplLGVzY2FwZWQ6dH0pe2xldCByPShlfHwiIikubWF0Y2goeGUubm90U3BhY2VTdGFydCk/LlswXSxzPW4ucmVwbGFjZSh4ZS5lbmRpbmdOZXdsaW5lLCIiKStgCmA7cmV0dXJuIHI/JzxwcmU+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLScrVWUocikrJyI+JysodD9zOlVlKHMsITApKStgPC9jb2RlPjwvcHJlPgpgOiI8cHJlPjxjb2RlPiIrKHQ/czpVZShzLCEwKSkrYDwvY29kZT48L3ByZT4KYH1ibG9ja3F1b3RlKHt0b2tlbnM6bn0pe3JldHVybmA8YmxvY2txdW90ZT4KJHt0aGlzLnBhcnNlci5wYXJzZShuKX08L2Jsb2NrcXVvdGU+CmB9aHRtbCh7dGV4dDpufSl7cmV0dXJuIG59ZGVmKG4pe3JldHVybiIifWhlYWRpbmcoe3Rva2VuczpuLGRlcHRoOmV9KXtyZXR1cm5gPGgke2V9PiR7dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUobil9PC9oJHtlfT4KYH1ocihuKXtyZXR1cm5gPGhyPgpgfWxpc3Qobil7bGV0IGU9bi5vcmRlcmVkLHQ9bi5zdGFydCxyPSIiO2ZvcihsZXQgbz0wO288bi5pdGVtcy5sZW5ndGg7bysrKXtsZXQgbD1uLml0ZW1zW29dO3IrPXRoaXMubGlzdGl0ZW0obCl9bGV0IHM9ZT8ib2wiOiJ1bCIsaT1lJiZ0IT09MT8nIHN0YXJ0PSInK3QrJyInOiIiO3JldHVybiI8IitzK2krYD4KYCtyKyI8LyIrcytgPgpgfWxpc3RpdGVtKG4pe3JldHVybmA8bGk+JHt0aGlzLnBhcnNlci5wYXJzZShuLnRva2Vucyl9PC9saT4KYH1jaGVja2JveCh7Y2hlY2tlZDpufSl7cmV0dXJuIjxpbnB1dCAiKyhuPydjaGVja2VkPSIiICc6IiIpKydkaXNhYmxlZD0iIiB0eXBlPSJjaGVja2JveCI+ICd9cGFyYWdyYXBoKHt0b2tlbnM6bn0pe3JldHVybmA8cD4ke3RoaXMucGFyc2VyLnBhcnNlSW5saW5lKG4pfTwvcD4KYH10YWJsZShuKXtsZXQgZT0iIix0PSIiO2ZvcihsZXQgcz0wO3M8bi5oZWFkZXIubGVuZ3RoO3MrKyl0Kz10aGlzLnRhYmxlY2VsbChuLmhlYWRlcltzXSk7ZSs9dGhpcy50YWJsZXJvdyh7dGV4dDp0fSk7bGV0IHI9IiI7Zm9yKGxldCBzPTA7czxuLnJvd3MubGVuZ3RoO3MrKyl7bGV0IGk9bi5yb3dzW3NdO3Q9IiI7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspdCs9dGhpcy50YWJsZWNlbGwoaVtvXSk7cis9dGhpcy50YWJsZXJvdyh7dGV4dDp0fSl9cmV0dXJuIHImJihyPWA8dGJvZHk+JHtyfTwvdGJvZHk+YCksYDx0YWJsZT4KPHRoZWFkPgpgK2UrYDwvdGhlYWQ+CmArcitgPC90YWJsZT4KYH10YWJsZXJvdyh7dGV4dDpufSl7cmV0dXJuYDx0cj4KJHtufTwvdHI+CmB9dGFibGVjZWxsKG4pe2xldCBlPXRoaXMucGFyc2VyLnBhcnNlSW5saW5lKG4udG9rZW5zKSx0PW4uaGVhZGVyPyJ0aCI6InRkIjtyZXR1cm4obi5hbGlnbj9gPCR7dH0gYWxpZ249IiR7bi5hbGlnbn0iPmA6YDwke3R9PmApK2UrYDwvJHt0fT4KYH1zdHJvbmcoe3Rva2VuczpufSl7cmV0dXJuYDxzdHJvbmc+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShuKX08L3N0cm9uZz5gfWVtKHt0b2tlbnM6bn0pe3JldHVybmA8ZW0+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShuKX08L2VtPmB9Y29kZXNwYW4oe3RleHQ6bn0pe3JldHVybmA8Y29kZT4ke1VlKG4sITApfTwvY29kZT5gfWJyKG4pe3JldHVybiI8YnI+In1kZWwoe3Rva2VuczpufSl7cmV0dXJuYDxkZWw+JHt0aGlzLnBhcnNlci5wYXJzZUlubGluZShuKX08L2RlbD5gfWxpbmsoe2hyZWY6bix0aXRsZTplLHRva2Vuczp0fSl7bGV0IHI9dGhpcy5wYXJzZXIucGFyc2VJbmxpbmUodCkscz1IYShuKTtpZihzPT09bnVsbClyZXR1cm4gcjtuPXM7bGV0IGk9JzxhIGhyZWY9IicrbisnIic7cmV0dXJuIGUmJihpKz0nIHRpdGxlPSInK1VlKGUpKyciJyksaSs9Ij4iK3IrIjwvYT4iLGl9aW1hZ2Uoe2hyZWY6bix0aXRsZTplLHRleHQ6dCx0b2tlbnM6cn0pe3ImJih0PXRoaXMucGFyc2VyLnBhcnNlSW5saW5lKHIsdGhpcy5wYXJzZXIudGV4dFJlbmRlcmVyKSk7bGV0IHM9SGEobik7aWYocz09PW51bGwpcmV0dXJuIFVlKHQpO249cztsZXQgaT1gPGltZyBzcmM9IiR7bn0iIGFsdD0iJHtVZSh0KX0iYDtyZXR1cm4gZSYmKGkrPWAgdGl0bGU9IiR7VWUoZSl9ImApLGkrPSI+IixpfXRleHQobil7cmV0dXJuInRva2VucyJpbiBuJiZuLnRva2Vucz90aGlzLnBhcnNlci5wYXJzZUlubGluZShuLnRva2Vucyk6ImVzY2FwZWQiaW4gbiYmbi5lc2NhcGVkP24udGV4dDpVZShuLnRleHQpfX0sZWw9Y2xhc3N7c3Ryb25nKHt0ZXh0Om59KXtyZXR1cm4gbn1lbSh7dGV4dDpufSl7cmV0dXJuIG59Y29kZXNwYW4oe3RleHQ6bn0pe3JldHVybiBufWRlbCh7dGV4dDpufSl7cmV0dXJuIG59aHRtbCh7dGV4dDpufSl7cmV0dXJuIG59dGV4dCh7dGV4dDpufSl7cmV0dXJuIG59bGluayh7dGV4dDpufSl7cmV0dXJuIiIrbn1pbWFnZSh7dGV4dDpufSl7cmV0dXJuIiIrbn1icigpe3JldHVybiIifWNoZWNrYm94KHtyYXc6bn0pe3JldHVybiBufX0sSGU9Y2xhc3MgWWl7b3B0aW9ucztyZW5kZXJlcjt0ZXh0UmVuZGVyZXI7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWV8fFF0LHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBacix0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMucmVuZGVyZXIucGFyc2VyPXRoaXMsdGhpcy50ZXh0UmVuZGVyZXI9bmV3IGVsfXN0YXRpYyBwYXJzZShlLHQpe3JldHVybiBuZXcgWWkodCkucGFyc2UoZSl9c3RhdGljIHBhcnNlSW5saW5lKGUsdCl7cmV0dXJuIG5ldyBZaSh0KS5wYXJzZUlubGluZShlKX1wYXJzZShlKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCB0PSIiO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgcz1lW3JdO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltzLnR5cGVdKXtsZXQgbz1zLGw9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW28udHlwZV0uY2FsbCh7cGFyc2VyOnRoaXN9LG8pO2lmKGwhPT0hMXx8IVsic3BhY2UiLCJociIsImhlYWRpbmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJkZWYiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoby50eXBlKSl7dCs9bHx8IiI7Y29udGludWV9fWxldCBpPXM7c3dpdGNoKGkudHlwZSl7Y2FzZSJzcGFjZSI6e3QrPXRoaXMucmVuZGVyZXIuc3BhY2UoaSk7YnJlYWt9Y2FzZSJociI6e3QrPXRoaXMucmVuZGVyZXIuaHIoaSk7YnJlYWt9Y2FzZSJoZWFkaW5nIjp7dCs9dGhpcy5yZW5kZXJlci5oZWFkaW5nKGkpO2JyZWFrfWNhc2UiY29kZSI6e3QrPXRoaXMucmVuZGVyZXIuY29kZShpKTticmVha31jYXNlInRhYmxlIjp7dCs9dGhpcy5yZW5kZXJlci50YWJsZShpKTticmVha31jYXNlImJsb2NrcXVvdGUiOnt0Kz10aGlzLnJlbmRlcmVyLmJsb2NrcXVvdGUoaSk7YnJlYWt9Y2FzZSJsaXN0Ijp7dCs9dGhpcy5yZW5kZXJlci5saXN0KGkpO2JyZWFrfWNhc2UiY2hlY2tib3giOnt0Kz10aGlzLnJlbmRlcmVyLmNoZWNrYm94KGkpO2JyZWFrfWNhc2UiaHRtbCI6e3QrPXRoaXMucmVuZGVyZXIuaHRtbChpKTticmVha31jYXNlImRlZiI6e3QrPXRoaXMucmVuZGVyZXIuZGVmKGkpO2JyZWFrfWNhc2UicGFyYWdyYXBoIjp7dCs9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgoaSk7YnJlYWt9Y2FzZSJ0ZXh0Ijp7dCs9dGhpcy5yZW5kZXJlci50ZXh0KGkpO2JyZWFrfWRlZmF1bHQ6e2xldCBvPSdUb2tlbiB3aXRoICInK2kudHlwZSsnIiB0eXBlIHdhcyBub3QgZm91bmQuJztpZih0aGlzLm9wdGlvbnMuc2lsZW50KXJldHVybiIiO3Rocm93IG5ldyBFcnJvcihvKX19fXJldHVybiB0fXBhcnNlSW5saW5lKGUsdD10aGlzLnJlbmRlcmVyKXt0aGlzLnJlbmRlcmVyLnBhcnNlcj10aGlzO2xldCByPSIiO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKXtsZXQgaT1lW3NdO2lmKHRoaXMub3B0aW9ucy5leHRlbnNpb25zPy5yZW5kZXJlcnM/LltpLnR5cGVdKXtsZXQgbD10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbaS50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30saSk7aWYobCE9PSExfHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKGkudHlwZSkpe3IrPWx8fCIiO2NvbnRpbnVlfX1sZXQgbz1pO3N3aXRjaChvLnR5cGUpe2Nhc2UiZXNjYXBlIjp7cis9dC50ZXh0KG8pO2JyZWFrfWNhc2UiaHRtbCI6e3IrPXQuaHRtbChvKTticmVha31jYXNlImxpbmsiOntyKz10Lmxpbmsobyk7YnJlYWt9Y2FzZSJpbWFnZSI6e3IrPXQuaW1hZ2Uobyk7YnJlYWt9Y2FzZSJjaGVja2JveCI6e3IrPXQuY2hlY2tib3gobyk7YnJlYWt9Y2FzZSJzdHJvbmciOntyKz10LnN0cm9uZyhvKTticmVha31jYXNlImVtIjp7cis9dC5lbShvKTticmVha31jYXNlImNvZGVzcGFuIjp7cis9dC5jb2Rlc3BhbihvKTticmVha31jYXNlImJyIjp7cis9dC5icihvKTticmVha31jYXNlImRlbCI6e3IrPXQuZGVsKG8pO2JyZWFrfWNhc2UidGV4dCI6e3IrPXQudGV4dChvKTticmVha31kZWZhdWx0OntsZXQgbD0nVG9rZW4gd2l0aCAiJytvLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4iIjt0aHJvdyBuZXcgRXJyb3IobCl9fX1yZXR1cm4gcn19LE9uPWNsYXNze29wdGlvbnM7YmxvY2s7Y29uc3RydWN0b3Iobil7dGhpcy5vcHRpb25zPW58fFF0fXN0YXRpYyBwYXNzVGhyb3VnaEhvb2tzPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIiwiZW1TdHJvbmdNYXNrIl0pO3N0YXRpYyBwYXNzVGhyb3VnaEhvb2tzUmVzcGVjdEFzeW5jPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiLCJwcm9jZXNzQWxsVG9rZW5zIl0pO3ByZXByb2Nlc3Mobil7cmV0dXJuIG59cG9zdHByb2Nlc3Mobil7cmV0dXJuIG59cHJvY2Vzc0FsbFRva2VucyhuKXtyZXR1cm4gbn1lbVN0cm9uZ01hc2sobil7cmV0dXJuIG59cHJvdmlkZUxleGVyKG49dGhpcy5ibG9jayl7cmV0dXJuIG4/X2UubGV4Ol9lLmxleElubGluZX1wcm92aWRlUGFyc2VyKG49dGhpcy5ibG9jayl7cmV0dXJuIG4/SGUucGFyc2U6SGUucGFyc2VJbmxpbmV9fSxZYj1jbGFzc3tkZWZhdWx0cz1XbygpO29wdGlvbnM9dGhpcy5zZXRPcHRpb25zO3BhcnNlPXRoaXMucGFyc2VNYXJrZG93bighMCk7cGFyc2VJbmxpbmU9dGhpcy5wYXJzZU1hcmtkb3duKCExKTtQYXJzZXI9SGU7UmVuZGVyZXI9WnI7VGV4dFJlbmRlcmVyPWVsO0xleGVyPV9lO1Rva2VuaXplcj1ZcjtIb29rcz1Pbjtjb25zdHJ1Y3RvciguLi5uKXt0aGlzLnVzZSguLi5uKX13YWxrVG9rZW5zKG4sZSl7bGV0IHQ9W107Zm9yKGxldCByIG9mIG4pc3dpdGNoKHQ9dC5jb25jYXQoZS5jYWxsKHRoaXMscikpLHIudHlwZSl7Y2FzZSJ0YWJsZSI6e2xldCBzPXI7Zm9yKGxldCBpIG9mIHMuaGVhZGVyKXQ9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKGkudG9rZW5zLGUpKTtmb3IobGV0IGkgb2Ygcy5yb3dzKWZvcihsZXQgbyBvZiBpKXQ9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKG8udG9rZW5zLGUpKTticmVha31jYXNlImxpc3QiOntsZXQgcz1yO3Q9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKHMuaXRlbXMsZSkpO2JyZWFrfWRlZmF1bHQ6e2xldCBzPXI7dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zPy5jaGlsZFRva2Vucz8uW3MudHlwZV0/dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW3MudHlwZV0uZm9yRWFjaChpPT57bGV0IG89c1tpXS5mbGF0KDEvMCk7dD10LmNvbmNhdCh0aGlzLndhbGtUb2tlbnMobyxlKSl9KTpzLnRva2VucyYmKHQ9dC5jb25jYXQodGhpcy53YWxrVG9rZW5zKHMudG9rZW5zLGUpKSl9fXJldHVybiB0fXVzZSguLi5uKXtsZXQgZT10aGlzLmRlZmF1bHRzLmV4dGVuc2lvbnN8fHtyZW5kZXJlcnM6e30sY2hpbGRUb2tlbnM6e319O3JldHVybiBuLmZvckVhY2godD0+e2xldCByPXsuLi50fTtpZihyLmFzeW5jPXRoaXMuZGVmYXVsdHMuYXN5bmN8fHIuYXN5bmN8fCExLHQuZXh0ZW5zaW9ucyYmKHQuZXh0ZW5zaW9ucy5mb3JFYWNoKHM9PntpZighcy5uYW1lKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIG5hbWUgcmVxdWlyZWQiKTtpZigicmVuZGVyZXIiaW4gcyl7bGV0IGk9ZS5yZW5kZXJlcnNbcy5uYW1lXTtpP2UucmVuZGVyZXJzW3MubmFtZV09ZnVuY3Rpb24oLi4ubyl7bGV0IGw9cy5yZW5kZXJlci5hcHBseSh0aGlzLG8pO3JldHVybiBsPT09ITEmJihsPWkuYXBwbHkodGhpcyxvKSksbH06ZS5yZW5kZXJlcnNbcy5uYW1lXT1zLnJlbmRlcmVyfWlmKCJ0b2tlbml6ZXIiaW4gcyl7aWYoIXMubGV2ZWx8fHMubGV2ZWwhPT0iYmxvY2siJiZzLmxldmVsIT09ImlubGluZSIpdGhyb3cgbmV3IEVycm9yKCJleHRlbnNpb24gbGV2ZWwgbXVzdCBiZSAnYmxvY2snIG9yICdpbmxpbmUnIik7bGV0IGk9ZVtzLmxldmVsXTtpP2kudW5zaGlmdChzLnRva2VuaXplcik6ZVtzLmxldmVsXT1bcy50b2tlbml6ZXJdLHMuc3RhcnQmJihzLmxldmVsPT09ImJsb2NrIj9lLnN0YXJ0QmxvY2s/ZS5zdGFydEJsb2NrLnB1c2gocy5zdGFydCk6ZS5zdGFydEJsb2NrPVtzLnN0YXJ0XTpzLmxldmVsPT09ImlubGluZSImJihlLnN0YXJ0SW5saW5lP2Uuc3RhcnRJbmxpbmUucHVzaChzLnN0YXJ0KTplLnN0YXJ0SW5saW5lPVtzLnN0YXJ0XSkpfSJjaGlsZFRva2VucyJpbiBzJiZzLmNoaWxkVG9rZW5zJiYoZS5jaGlsZFRva2Vuc1tzLm5hbWVdPXMuY2hpbGRUb2tlbnMpfSksci5leHRlbnNpb25zPWUpLHQucmVuZGVyZXIpe2xldCBzPXRoaXMuZGVmYXVsdHMucmVuZGVyZXJ8fG5ldyBacih0aGlzLmRlZmF1bHRzKTtmb3IobGV0IGkgaW4gdC5yZW5kZXJlcil7aWYoIShpIGluIHMpKXRocm93IG5ldyBFcnJvcihgcmVuZGVyZXIgJyR7aX0nIGRvZXMgbm90IGV4aXN0YCk7aWYoWyJvcHRpb25zIiwicGFyc2VyIl0uaW5jbHVkZXMoaSkpY29udGludWU7bGV0IG89aSxsPXQucmVuZGVyZXJbb10sYT1zW29dO3Nbb109KC4uLmMpPT57bGV0IHU9bC5hcHBseShzLGMpO3JldHVybiB1PT09ITEmJih1PWEuYXBwbHkocyxjKSksdXx8IiJ9fXIucmVuZGVyZXI9c31pZih0LnRva2VuaXplcil7bGV0IHM9dGhpcy5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBZcih0aGlzLmRlZmF1bHRzKTtmb3IobGV0IGkgaW4gdC50b2tlbml6ZXIpe2lmKCEoaSBpbiBzKSl0aHJvdyBuZXcgRXJyb3IoYHRva2VuaXplciAnJHtpfScgZG9lcyBub3QgZXhpc3RgKTtpZihbIm9wdGlvbnMiLCJydWxlcyIsImxleGVyIl0uaW5jbHVkZXMoaSkpY29udGludWU7bGV0IG89aSxsPXQudG9rZW5pemVyW29dLGE9c1tvXTtzW29dPSguLi5jKT0+e2xldCB1PWwuYXBwbHkocyxjKTtyZXR1cm4gdT09PSExJiYodT1hLmFwcGx5KHMsYykpLHV9fXIudG9rZW5pemVyPXN9aWYodC5ob29rcyl7bGV0IHM9dGhpcy5kZWZhdWx0cy5ob29rc3x8bmV3IE9uO2ZvcihsZXQgaSBpbiB0Lmhvb2tzKXtpZighKGkgaW4gcykpdGhyb3cgbmV3IEVycm9yKGBob29rICcke2l9JyBkb2VzIG5vdCBleGlzdGApO2lmKFsib3B0aW9ucyIsImJsb2NrIl0uaW5jbHVkZXMoaSkpY29udGludWU7bGV0IG89aSxsPXQuaG9va3Nbb10sYT1zW29dO09uLnBhc3NUaHJvdWdoSG9va3MuaGFzKGkpP3Nbb109Yz0+e2lmKHRoaXMuZGVmYXVsdHMuYXN5bmMmJk9uLnBhc3NUaHJvdWdoSG9va3NSZXNwZWN0QXN5bmMuaGFzKGkpKXJldHVybihhc3luYygpPT57bGV0IGQ9YXdhaXQgbC5jYWxsKHMsYyk7cmV0dXJuIGEuY2FsbChzLGQpfSkoKTtsZXQgdT1sLmNhbGwocyxjKTtyZXR1cm4gYS5jYWxsKHMsdSl9OnNbb109KC4uLmMpPT57aWYodGhpcy5kZWZhdWx0cy5hc3luYylyZXR1cm4oYXN5bmMoKT0+e2xldCBkPWF3YWl0IGwuYXBwbHkocyxjKTtyZXR1cm4gZD09PSExJiYoZD1hd2FpdCBhLmFwcGx5KHMsYykpLGR9KSgpO2xldCB1PWwuYXBwbHkocyxjKTtyZXR1cm4gdT09PSExJiYodT1hLmFwcGx5KHMsYykpLHV9fXIuaG9va3M9c31pZih0LndhbGtUb2tlbnMpe2xldCBzPXRoaXMuZGVmYXVsdHMud2Fsa1Rva2VucyxpPXQud2Fsa1Rva2VucztyLndhbGtUb2tlbnM9ZnVuY3Rpb24obyl7bGV0IGw9W107cmV0dXJuIGwucHVzaChpLmNhbGwodGhpcyxvKSkscyYmKGw9bC5jb25jYXQocy5jYWxsKHRoaXMsbykpKSxsfX10aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLnJ9fSksdGhpc31zZXRPcHRpb25zKG4pe3JldHVybiB0aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLm59LHRoaXN9bGV4ZXIobixlKXtyZXR1cm4gX2UubGV4KG4sZT8/dGhpcy5kZWZhdWx0cyl9cGFyc2VyKG4sZSl7cmV0dXJuIEhlLnBhcnNlKG4sZT8/dGhpcy5kZWZhdWx0cyl9cGFyc2VNYXJrZG93bihuKXtyZXR1cm4oZSx0KT0+e2xldCByPXsuLi50fSxzPXsuLi50aGlzLmRlZmF1bHRzLC4uLnJ9LGk9dGhpcy5vbkVycm9yKCEhcy5zaWxlbnQsISFzLmFzeW5jKTtpZih0aGlzLmRlZmF1bHRzLmFzeW5jPT09ITAmJnIuYXN5bmM9PT0hMSlyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBUaGUgYXN5bmMgb3B0aW9uIHdhcyBzZXQgdG8gdHJ1ZSBieSBhbiBleHRlbnNpb24uIFJlbW92ZSBhc3luYzogZmFsc2UgZnJvbSB0aGUgcGFyc2Ugb3B0aW9ucyBvYmplY3QgdG8gcmV0dXJuIGEgUHJvbWlzZS4iKSk7aWYodHlwZW9mIGU+InUifHxlPT09bnVsbClyZXR1cm4gaShuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7aWYodHlwZW9mIGUhPSJzdHJpbmciKXJldHVybiBpKG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKyIsIHN0cmluZyBleHBlY3RlZCIpKTtpZihzLmhvb2tzJiYocy5ob29rcy5vcHRpb25zPXMscy5ob29rcy5ibG9jaz1uKSxzLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IG89cy5ob29rcz9hd2FpdCBzLmhvb2tzLnByZXByb2Nlc3MoZSk6ZSxsPWF3YWl0KHMuaG9va3M/YXdhaXQgcy5ob29rcy5wcm92aWRlTGV4ZXIobik6bj9fZS5sZXg6X2UubGV4SW5saW5lKShvLHMpLGE9cy5ob29rcz9hd2FpdCBzLmhvb2tzLnByb2Nlc3NBbGxUb2tlbnMobCk6bDtzLndhbGtUb2tlbnMmJmF3YWl0IFByb21pc2UuYWxsKHRoaXMud2Fsa1Rva2VucyhhLHMud2Fsa1Rva2VucykpO2xldCBjPWF3YWl0KHMuaG9va3M/YXdhaXQgcy5ob29rcy5wcm92aWRlUGFyc2VyKG4pOm4/SGUucGFyc2U6SGUucGFyc2VJbmxpbmUpKGEscyk7cmV0dXJuIHMuaG9va3M/YXdhaXQgcy5ob29rcy5wb3N0cHJvY2VzcyhjKTpjfSkoKS5jYXRjaChpKTt0cnl7cy5ob29rcyYmKGU9cy5ob29rcy5wcmVwcm9jZXNzKGUpKTtsZXQgbz0ocy5ob29rcz9zLmhvb2tzLnByb3ZpZGVMZXhlcihuKTpuP19lLmxleDpfZS5sZXhJbmxpbmUpKGUscyk7cy5ob29rcyYmKG89cy5ob29rcy5wcm9jZXNzQWxsVG9rZW5zKG8pKSxzLndhbGtUb2tlbnMmJnRoaXMud2Fsa1Rva2VucyhvLHMud2Fsa1Rva2Vucyk7bGV0IGw9KHMuaG9va3M/cy5ob29rcy5wcm92aWRlUGFyc2VyKG4pOm4/SGUucGFyc2U6SGUucGFyc2VJbmxpbmUpKG8scyk7cmV0dXJuIHMuaG9va3MmJihsPXMuaG9va3MucG9zdHByb2Nlc3MobCkpLGx9Y2F0Y2gobyl7cmV0dXJuIGkobyl9fX1vbkVycm9yKG4sZSl7cmV0dXJuIHQ9PntpZih0Lm1lc3NhZ2UrPWAKUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuYCxuKXtsZXQgcj0iPHA+QW4gZXJyb3Igb2NjdXJyZWQ6PC9wPjxwcmU+IitVZSh0Lm1lc3NhZ2UrIiIsITApKyI8L3ByZT4iO3JldHVybiBlP1Byb21pc2UucmVzb2x2ZShyKTpyfWlmKGUpcmV0dXJuIFByb21pc2UucmVqZWN0KHQpO3Rocm93IHR9fX0sV3Q9bmV3IFliO2Z1bmN0aW9uIGoobixlKXtyZXR1cm4gV3QucGFyc2UobixlKX1qLm9wdGlvbnM9ai5zZXRPcHRpb25zPWZ1bmN0aW9uKG4pe3JldHVybiBXdC5zZXRPcHRpb25zKG4pLGouZGVmYXVsdHM9V3QuZGVmYXVsdHMsVmQoai5kZWZhdWx0cyksan07ai5nZXREZWZhdWx0cz1XbztqLmRlZmF1bHRzPVF0O2oudXNlPWZ1bmN0aW9uKC4uLm4pe3JldHVybiBXdC51c2UoLi4ubiksai5kZWZhdWx0cz1XdC5kZWZhdWx0cyxWZChqLmRlZmF1bHRzKSxqfTtqLndhbGtUb2tlbnM9ZnVuY3Rpb24obixlKXtyZXR1cm4gV3Qud2Fsa1Rva2VucyhuLGUpfTtqLnBhcnNlSW5saW5lPVd0LnBhcnNlSW5saW5lO2ouUGFyc2VyPUhlO2oucGFyc2VyPUhlLnBhcnNlO2ouUmVuZGVyZXI9WnI7ai5UZXh0UmVuZGVyZXI9ZWw7ai5MZXhlcj1fZTtqLmxleGVyPV9lLmxleDtqLlRva2VuaXplcj1ZcjtqLkhvb2tzPU9uO2oucGFyc2U9ajtqLm9wdGlvbnM7ai5zZXRPcHRpb25zO2oudXNlO2oud2Fsa1Rva2VucztqLnBhcnNlSW5saW5lO0hlLnBhcnNlO19lLmxleDtmdW5jdGlvbiBaYihuLGUpe2NvbnN0IHI9ZS5zcGxpdChgCmApLmZsYXRNYXAocz0+W3MsIiJdKS5tYXAocz0+YCR7bn0ke3N9YCkuam9pbihgCmApO3JldHVybiByLnNsaWNlKDAsci5sZW5ndGgtMSl9ZnVuY3Rpb24gZTAobixlKXtjb25zdCB0PVtdO3JldHVybiBBcnJheS5mcm9tKG4ua2V5cygpKS5mb3JFYWNoKHI9PnsoIWV8fCFlLm1hcmtzfHwhZS5tYXJrcy5tYXAocz0+cy50eXBlKS5pbmNsdWRlcyhyKSkmJnQucHVzaChyKX0pLHR9ZnVuY3Rpb24gdDAobixlKXtjb25zdCB0PVtdO3JldHVybiBBcnJheS5mcm9tKGUuZW50cmllcygpKS5mb3JFYWNoKChbcixzXSk9PntuLmhhcyhyKXx8dC5wdXNoKHt0eXBlOnIsbWFyazpzfSl9KSx0fWZ1bmN0aW9uIG4wKG4sZSx0LHIpe2NvbnN0IHM9IXQsaT10JiZ0LnR5cGU9PT0idGV4dCImJighdC5tYXJrc3x8dC5tYXJrcy5sZW5ndGg9PT0wKSxvPXQmJnQudHlwZT09PSJ0ZXh0IiYmdC5tYXJrcyYmIXIoZSxuZXcgTWFwKHQubWFya3MubWFwKGE9PlthLnR5cGUsYV0pKSksbD1bXTtpZihzfHxpfHxvKWlmKHQmJnQudHlwZT09PSJ0ZXh0IiYmdC5tYXJrcyl7Y29uc3QgYT1uZXcgTWFwKHQubWFya3MubWFwKGM9PltjLnR5cGUsY10pKTtBcnJheS5mcm9tKG4ua2V5cygpKS5yZXZlcnNlKCkuZm9yRWFjaChjPT57YS5oYXMoYyl8fGwucHVzaChjKX0pfWVsc2Uoc3x8aSkmJmwucHVzaCguLi5BcnJheS5mcm9tKG4ua2V5cygpKS5yZXZlcnNlKCkpO3JldHVybiBsfWZ1bmN0aW9uIHIwKG4sZSl7bGV0IHQ9IiI7cmV0dXJuIEFycmF5LmZyb20obi5rZXlzKCkpLnJldmVyc2UoKS5mb3JFYWNoKHI9Pntjb25zdCBzPW4uZ2V0KHIpLGk9ZShyLHMpO2kmJih0PWkrdCl9KSxuLmNsZWFyKCksdH1mdW5jdGlvbiBzMChuLGUsdCl7bGV0IHI9IiI7cmV0dXJuIEFycmF5LmZyb20obi5lbnRyaWVzKCkpLmZvckVhY2goKFtzLGldKT0+e2NvbnN0IG89dChzLGkpO28mJihyKz1vKSxlLnNldChzLGkpfSkscn1mdW5jdGlvbiBiaShuKXtjb25zdCB0PShuLnJhd3x8bi50ZXh0fHwiIikubWF0Y2goL14oXHMqKVstKypdXHMrXFsoWyB4WF0pXF1ccysvKTtyZXR1cm4gdD97aXNUYXNrOiEwLGNoZWNrZWQ6dFsyXS50b0xvd2VyQ2FzZSgpPT09IngiLGluZGVudExldmVsOnRbMV0ubGVuZ3RofTp7aXNUYXNrOiExLGluZGVudExldmVsOjB9fWZ1bmN0aW9uIENyKG4sZSl7cmV0dXJuIHR5cGVvZiBuIT0ic3RyaW5nIj8ianNvbiI6ZX12YXIgaTA9Y2xhc3N7Y29uc3RydWN0b3Iobil7dGhpcy5hY3RpdmVQYXJzZUxleGVyPW51bGwsdGhpcy5iYXNlRXh0ZW5zaW9ucz1bXSx0aGlzLmV4dGVuc2lvbnM9W10sdGhpcy5jb2RlVHlwZXM9bmV3IFNldCx0aGlzLmxhc3RQYXJzZVJlc3VsdD1udWxsO3ZhciBlLHQscixzLGk7dGhpcy5tYXJrZWRJbnN0YW5jZT0oZT1uPy5tYXJrZWQpIT1udWxsP2U6aix0aGlzLmluZGVudFN0eWxlPShyPSh0PW4/LmluZGVudGF0aW9uKT09bnVsbD92b2lkIDA6dC5zdHlsZSkhPW51bGw/cjoic3BhY2UiLHRoaXMuaW5kZW50U2l6ZT0oaT0ocz1uPy5pbmRlbnRhdGlvbik9PW51bGw/dm9pZCAwOnMuc2l6ZSkhPW51bGw/aToyLHRoaXMuYmFzZUV4dGVuc2lvbnM9bj8uZXh0ZW5zaW9uc3x8W10sbj8ubWFya2VkT3B0aW9ucyYmdHlwZW9mIHRoaXMubWFya2VkSW5zdGFuY2Uuc2V0T3B0aW9ucz09ImZ1bmN0aW9uIiYmdGhpcy5tYXJrZWRJbnN0YW5jZS5zZXRPcHRpb25zKG4ubWFya2VkT3B0aW9ucyksdGhpcy5yZWdpc3RyeT1uZXcgTWFwLHRoaXMubm9kZVR5cGVSZWdpc3RyeT1uZXcgTWFwLG4/LmV4dGVuc2lvbnMmJih0aGlzLmJhc2VFeHRlbnNpb25zPW4uZXh0ZW5zaW9ucyxGcyhuLmV4dGVuc2lvbnMpLmZvckVhY2gobD0+dGhpcy5yZWdpc3RlckV4dGVuc2lvbihsKSkpfWdldCBpbnN0YW5jZSgpe3JldHVybiB0aGlzLm1hcmtlZEluc3RhbmNlfWdldCBpbmRlbnRDaGFyYWN0ZXIoKXtyZXR1cm4gdGhpcy5pbmRlbnRTdHlsZT09PSJzcGFjZSI/IiAiOiIJIn1nZXQgaW5kZW50U3RyaW5nKCl7cmV0dXJuIHRoaXMuaW5kZW50Q2hhcmFjdGVyLnJlcGVhdCh0aGlzLmluZGVudFNpemUpfWhhc01hcmtlZCgpe3JldHVybiEhdGhpcy5tYXJrZWRJbnN0YW5jZX1yZWdpc3RlckV4dGVuc2lvbihuKXt2YXIgZSx0O3RoaXMuZXh0ZW5zaW9ucy5wdXNoKG4pO2NvbnN0IHI9VShBKG4sImNvZGUiKSkscz1uLm5hbWU7ciYmdGhpcy5jb2RlVHlwZXMuYWRkKHMpO2NvbnN0IGk9QShuLCJtYXJrZG93blRva2VuTmFtZSIpfHxzLG89QShuLCJwYXJzZU1hcmtkb3duIiksbD1BKG4sInJlbmRlck1hcmtkb3duIiksYT1BKG4sIm1hcmtkb3duVG9rZW5pemVyIiksYz0oZT1BKG4sIm1hcmtkb3duT3B0aW9ucyIpKSE9bnVsbD9lOm51bGwsdT0odD1jPy5pbmRlbnRzQ29udGVudCkhPW51bGw/dDohMSxkPWM/Lmh0bWxSZW9wZW4saD17dG9rZW5OYW1lOmksbm9kZU5hbWU6cyxwYXJzZU1hcmtkb3duOm8scmVuZGVyTWFya2Rvd246bCxpc0luZGVudGluZzp1LGh0bWxSZW9wZW46ZCx0b2tlbml6ZXI6YX07aWYoaSYmbyl7Y29uc3QgZj10aGlzLnJlZ2lzdHJ5LmdldChpKXx8W107Zi5wdXNoKGgpLHRoaXMucmVnaXN0cnkuc2V0KGksZil9aWYobCl7Y29uc3QgZj10aGlzLm5vZGVUeXBlUmVnaXN0cnkuZ2V0KHMpfHxbXTtmLnB1c2goaCksdGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LnNldChzLGYpfWEmJnRoaXMuaGFzTWFya2VkKCkmJnRoaXMucmVnaXN0ZXJUb2tlbml6ZXIoYSl9Y3JlYXRlTGV4ZXIoKXtyZXR1cm4gbmV3IHRoaXMubWFya2VkSW5zdGFuY2UuTGV4ZXJ9Y3JlYXRlVG9rZW5pemVySGVscGVycyhuKXtyZXR1cm57aW5saW5lVG9rZW5zOmU9Pm4uaW5saW5lVG9rZW5zKGUpLGJsb2NrVG9rZW5zOmU9Pm4uYmxvY2tUb2tlbnMoZSl9fXRva2VuaXplSW5saW5lKG4pe3ZhciBlO3JldHVybigoZT10aGlzLmFjdGl2ZVBhcnNlTGV4ZXIpIT1udWxsP2U6dGhpcy5jcmVhdGVMZXhlcigpKS5pbmxpbmVUb2tlbnMobil9cmVnaXN0ZXJUb2tlbml6ZXIobil7aWYoIXRoaXMuaGFzTWFya2VkKCkpcmV0dXJuO2NvbnN0e25hbWU6ZSxzdGFydDp0LGxldmVsOnI9ImlubGluZSIsdG9rZW5pemU6c309bixpPXRoaXMuY3JlYXRlVG9rZW5pemVySGVscGVycy5iaW5kKHRoaXMpLG89dGhpcy5jcmVhdGVMZXhlci5iaW5kKHRoaXMpO2xldCBsO3Q/bD10eXBlb2YgdD09ImZ1bmN0aW9uIj90OmM9PmMuaW5kZXhPZih0KTpsPWM9Pntjb25zdCB1PXMoYyxbXSx0aGlzLmNyZWF0ZVRva2VuaXplckhlbHBlcnModGhpcy5jcmVhdGVMZXhlcigpKSk7cmV0dXJuIHUmJnUucmF3P2MuaW5kZXhPZih1LnJhdyk6LTF9O2NvbnN0IGE9e25hbWU6ZSxsZXZlbDpyLHN0YXJ0OmwsdG9rZW5pemVyKGMsdSl7Y29uc3QgZD10aGlzLmxleGVyP2kodGhpcy5sZXhlcik6aShvKCkpLGg9cyhjLHUsZCk7aWYoaCYmaC50eXBlKXJldHVybnsuLi5oLHR5cGU6aC50eXBlfHxlLHJhdzpoLnJhd3x8IiIsdG9rZW5zOmgudG9rZW5zfHxbXX19LGNoaWxkVG9rZW5zOltdfTt0aGlzLm1hcmtlZEluc3RhbmNlLnVzZSh7ZXh0ZW5zaW9uczpbYV19KX1nZXRIYW5kbGVyc0ZvclRva2VuKG4pe3RyeXtyZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQobil8fFtdfWNhdGNoe3JldHVybltdfX1nZXRIYW5kbGVyRm9yVG9rZW4obil7Y29uc3QgZT10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4obik7aWYoZS5sZW5ndGg+MClyZXR1cm4gZVswXTtjb25zdCB0PXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShuKTtyZXR1cm4gdC5sZW5ndGg+MD90WzBdOnZvaWQgMH1nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKG4pe3RyeXtyZXR1cm4gdGhpcy5ub2RlVHlwZVJlZ2lzdHJ5LmdldChuKXx8W119Y2F0Y2h7cmV0dXJuW119fXNlcmlhbGl6ZShuKXtpZighbilyZXR1cm4iIjtjb25zdCBlPXRoaXMucmVuZGVyTm9kZXMobixuKTtyZXR1cm4gdGhpcy5pc0VtcHR5T3V0cHV0KGUpPyIiOmV9aXNFbXB0eU91dHB1dChuKXtyZXR1cm4hbnx8bi50cmltKCk9PT0iIj8hMDpuLnJlcGxhY2UoLyZuYnNwOy9nLCIiKS5yZXBsYWNlKC9cdTAwQTAvZywiIikudHJpbSgpPT09IiJ9cGFyc2Uobil7aWYoIXRoaXMuaGFzTWFya2VkKCkpdGhyb3cgbmV3IEVycm9yKCJObyBtYXJrZWQgaW5zdGFuY2UgYXZhaWxhYmxlIGZvciBwYXJzaW5nIik7Y29uc3QgZT10aGlzLmFjdGl2ZVBhcnNlTGV4ZXIsdD10aGlzLmNyZWF0ZUxleGVyKCk7dGhpcy5hY3RpdmVQYXJzZUxleGVyPXQ7dHJ5e2NvbnN0IHI9dC5sZXgobik7cmV0dXJue3R5cGU6ImRvYyIsY29udGVudDp0aGlzLnBhcnNlVG9rZW5zKHIsITApfX1maW5hbGx5e3RoaXMuYWN0aXZlUGFyc2VMZXhlcj1lfX1wYXJzZVRva2VucyhuLGU9ITEpe2NvbnN0IHQ9bi5yZWR1Y2UoKGksbyxsKT0+KG8udHlwZSE9PSJzcGFjZSImJmkucHVzaChsKSxpKSxbXSk7bGV0IHI9LTEscz0wO3JldHVybiBuLmZsYXRNYXAoKGksbyk9Pntmb3IodmFyIGw7czx0Lmxlbmd0aCYmdFtzXTxvOylyPXRbc10scys9MTtpZihlJiZpLnR5cGU9PT0ic3BhY2UiKXtjb25zdCBjPShsPXRbc10pIT1udWxsP2w6LTE7cmV0dXJuIHRoaXMuY3JlYXRlSW1wbGljaXRFbXB0eVBhcmFncmFwaHNGcm9tU3BhY2UoaSxyLGMpfWNvbnN0IGE9dGhpcy5wYXJzZVRva2VuKGksZSk7cmV0dXJuIGE9PT1udWxsP1tdOkFycmF5LmlzQXJyYXkoYSk/YTpbYV19KX1jcmVhdGVJbXBsaWNpdEVtcHR5UGFyYWdyYXBoc0Zyb21TcGFjZShuLGUsdCl7Y29uc3Qgcj10aGlzLmNvdW50UGFyYWdyYXBoU2VwYXJhdG9ycyhuLnJhd3x8IiIpO2lmKHI9PT0wKXJldHVybltdO2NvbnN0IGk9TWF0aC5tYXgoci0oZT09PS0xfHx0PT09LTE/MDoxKSwwKTtyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOml9LCgpPT4oe3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbXX0pKX1jb3VudFBhcmFncmFwaFNlcGFyYXRvcnMobil7cmV0dXJuKG4ucmVwbGFjZSgvXHJcbi9nLGAKYCkubWF0Y2goL1xuXG4vZyl8fFtdKS5sZW5ndGh9cGFyc2VUb2tlbihuLGU9ITEpe2lmKCFuLnR5cGUpcmV0dXJuIG51bGw7aWYobi50eXBlPT09Imxpc3QiKXJldHVybiB0aGlzLnBhcnNlTGlzdFRva2VuKG4pO2NvbnN0IHQ9dGhpcy5nZXRIYW5kbGVyc0ZvclRva2VuKG4udHlwZSkscj10aGlzLmNyZWF0ZVBhcnNlSGVscGVycygpO2lmKHQuZmluZChpPT57aWYoIWkucGFyc2VNYXJrZG93bilyZXR1cm4hMTtjb25zdCBvPWkucGFyc2VNYXJrZG93bihuLHIpLGw9dGhpcy5ub3JtYWxpemVQYXJzZVJlc3VsdChvKTtyZXR1cm4gbCYmKCFBcnJheS5pc0FycmF5KGwpfHxsLmxlbmd0aD4wKT8odGhpcy5sYXN0UGFyc2VSZXN1bHQ9bCwhMCk6ITF9KSYmdGhpcy5sYXN0UGFyc2VSZXN1bHQpe2NvbnN0IGk9dGhpcy5sYXN0UGFyc2VSZXN1bHQ7cmV0dXJuIHRoaXMubGFzdFBhcnNlUmVzdWx0PW51bGwsaX1yZXR1cm4gdGhpcy5wYXJzZUZhbGxiYWNrVG9rZW4obixlKX1wYXJzZUxpc3RUb2tlbihuKXtpZighbi5pdGVtc3x8bi5pdGVtcy5sZW5ndGg9PT0wKXJldHVybiB0aGlzLnBhcnNlVG9rZW5XaXRoSGFuZGxlcnMobik7Y29uc3QgZT1uLml0ZW1zLnNvbWUobD0+YmkobCkuaXNUYXNrKSx0PW4uaXRlbXMuc29tZShsPT4hYmkobCkuaXNUYXNrKTtpZighZXx8IXR8fHRoaXMuZ2V0SGFuZGxlcnNGb3JUb2tlbigidGFza0xpc3QiKS5sZW5ndGg9PT0wKXJldHVybiB0aGlzLnBhcnNlVG9rZW5XaXRoSGFuZGxlcnMobik7Y29uc3Qgcj1bXTtsZXQgcz1bXSxpPW51bGw7Zm9yKGxldCBsPTA7bDxuLml0ZW1zLmxlbmd0aDtsKz0xKXtjb25zdCBhPW4uaXRlbXNbbF0se2lzVGFzazpjLGNoZWNrZWQ6dSxpbmRlbnRMZXZlbDpkfT1iaShhKTtsZXQgaD1hO2lmKGMpe2NvbnN0IG09KGEucmF3fHxhLnRleHR8fCIiKS5zcGxpdChgCmApLGc9bVswXS5tYXRjaCgvXlxzKlstKypdXHMrXFsoWyB4WF0pXF1ccysoLiopJC8pLHk9Zz9nWzJdOiIiO2xldCBrPVtdO2lmKG0ubGVuZ3RoPjEmJm0uc2xpY2UoMSkuam9pbihgCmApLnRyaW0oKSl7Y29uc3Qgdz1tLnNsaWNlKDEpLHg9dy5maWx0ZXIodj0+di50cmltKCkpO2lmKHgubGVuZ3RoPjApe2NvbnN0IHY9TWF0aC5taW4oLi4ueC5tYXAoUj0+Ui5sZW5ndGgtUi50cmltU3RhcnQoKS5sZW5ndGgpKSxNPXcubWFwKFI9PlIudHJpbSgpP1Iuc2xpY2Uodik6IiIpLmpvaW4oYApgKS50cmltKCk7TSYmKGs9dGhpcy5tYXJrZWRJbnN0YW5jZS5sZXhlcihgJHtNfQpgKSl9fWg9e3R5cGU6InRhc2tJdGVtIixyYXc6IiIsbWFpbkNvbnRlbnQ6eSxpbmRlbnRMZXZlbDpkLGNoZWNrZWQ6dT8/ITEsdGV4dDp5LHRva2Vuczp0aGlzLnRva2VuaXplSW5saW5lKHkpLG5lc3RlZFRva2VuczprfX1jb25zdCBmPWM/InRhc2tMaXN0IjoibGlzdCI7aSE9PWY/KHMubGVuZ3RoPjAmJnIucHVzaCh7dHlwZTppLGl0ZW1zOnN9KSxzPVtoXSxpPWYpOnMucHVzaChoKX1zLmxlbmd0aD4wJiZyLnB1c2goe3R5cGU6aSxpdGVtczpzfSk7Y29uc3Qgbz1bXTtmb3IobGV0IGw9MDtsPHIubGVuZ3RoO2wrPTEpe2NvbnN0IGE9cltsXSxjPXsuLi5uLHR5cGU6YS50eXBlLGl0ZW1zOmEuaXRlbXN9LHU9dGhpcy5wYXJzZVRva2VuKGMpO3UmJihBcnJheS5pc0FycmF5KHUpP28ucHVzaCguLi51KTpvLnB1c2godSkpfXJldHVybiBvLmxlbmd0aD4wP286bnVsbH1wYXJzZVRva2VuV2l0aEhhbmRsZXJzKG4pe2lmKCFuLnR5cGUpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmdldEhhbmRsZXJzRm9yVG9rZW4obi50eXBlKSx0PXRoaXMuY3JlYXRlUGFyc2VIZWxwZXJzKCk7aWYoZS5maW5kKHM9PntpZighcy5wYXJzZU1hcmtkb3duKXJldHVybiExO2NvbnN0IGk9cy5wYXJzZU1hcmtkb3duKG4sdCksbz10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KGkpO3JldHVybiBvJiYoIUFycmF5LmlzQXJyYXkobyl8fG8ubGVuZ3RoPjApPyh0aGlzLmxhc3RQYXJzZVJlc3VsdD1vLCEwKTohMX0pJiZ0aGlzLmxhc3RQYXJzZVJlc3VsdCl7Y29uc3Qgcz10aGlzLmxhc3RQYXJzZVJlc3VsdDtyZXR1cm4gdGhpcy5sYXN0UGFyc2VSZXN1bHQ9bnVsbCxzfXJldHVybiB0aGlzLnBhcnNlRmFsbGJhY2tUb2tlbihuKX1jcmVhdGVQYXJzZUhlbHBlcnMoKXtyZXR1cm57cGFyc2VJbmxpbmU6bj0+dGhpcy5wYXJzZUlubGluZVRva2VucyhuKSxwYXJzZUNoaWxkcmVuOm49PnRoaXMucGFyc2VUb2tlbnMobikscGFyc2VCbG9ja0NoaWxkcmVuOm49PnRoaXMucGFyc2VUb2tlbnMobiwhMCksY3JlYXRlVGV4dE5vZGU6KG4sZSk9Pih7dHlwZToidGV4dCIsdGV4dDpuLG1hcmtzOmV8fHZvaWQgMH0pLGNyZWF0ZU5vZGU6KG4sZSx0KT0+e2NvbnN0IHI9e3R5cGU6bixhdHRyczplfHx2b2lkIDAsY29udGVudDp0fHx2b2lkIDB9O3JldHVybighZXx8T2JqZWN0LmtleXMoZSkubGVuZ3RoPT09MCkmJmRlbGV0ZSByLmF0dHJzLHJ9LGFwcGx5TWFyazoobixlLHQpPT4oe21hcms6bixjb250ZW50OmUsYXR0cnM6dCYmT2JqZWN0LmtleXModCkubGVuZ3RoPjA/dDp2b2lkIDB9KX19ZXNjYXBlUmVnZXgobil7cmV0dXJuIG4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1wYXJzZUlubGluZVRva2VucyhuKXt2YXIgZSx0LHIscztjb25zdCBpPVtdO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bys9MSl7Y29uc3QgbD1uW29dO2lmKGwudHlwZT09PSJ0ZXh0IilpLnB1c2goe3R5cGU6InRleHQiLHRleHQ6Q2EobC50ZXh0fHwiIil9KTtlbHNlIGlmKGwudHlwZT09PSJodG1sIil7Y29uc3QgYT0oKHQ9KGU9bC5yYXcpIT1udWxsP2U6bC50ZXh0KSE9bnVsbD90OiIiKS50b1N0cmluZygpLGM9L148XC9bXHNdKltcdy1dKy9pLnRlc3QoYSksdT1hLm1hdGNoKC9ePFtcc10qKFtcdy1dKykoXHN8PnxcL3wkKS9pKTtpZighYyYmdSYmIS9cLz4kLy50ZXN0KGEpKXtjb25zdCBoPXVbMV0sZj10aGlzLmVzY2FwZVJlZ2V4KGgpLHA9bmV3IFJlZ0V4cChgXjxcXC9cXHMqJHtmfVxcYmAsImkiKTtsZXQgbT0tMTtjb25zdCBnPVthXTtmb3IobGV0IHk9bysxO3k8bi5sZW5ndGg7eSs9MSl7Y29uc3Qgaz1uW3ldLGI9KChzPShyPWsucmF3KSE9bnVsbD9yOmsudGV4dCkhPW51bGw/czoiIikudG9TdHJpbmcoKTtpZihnLnB1c2goYiksay50eXBlPT09Imh0bWwiJiZwLnRlc3QoYikpe209eTticmVha319aWYobSE9PS0xKXtjb25zdCB5PWcuam9pbigiIiksaz17dHlwZToiaHRtbCIscmF3OnksdGV4dDp5LGJsb2NrOiExfSxiPXRoaXMucGFyc2VIVE1MVG9rZW4oayk7aWYoYil7Y29uc3Qgdz10aGlzLm5vcm1hbGl6ZVBhcnNlUmVzdWx0KGIpO0FycmF5LmlzQXJyYXkodyk/aS5wdXNoKC4uLncpOncmJmkucHVzaCh3KX1vPW07Y29udGludWV9fWNvbnN0IGQ9dGhpcy5wYXJzZUhUTUxUb2tlbihsKTtpZihkKXtjb25zdCBoPXRoaXMubm9ybWFsaXplUGFyc2VSZXN1bHQoZCk7QXJyYXkuaXNBcnJheShoKT9pLnB1c2goLi4uaCk6aCYmaS5wdXNoKGgpfX1lbHNlIGlmKGwudHlwZSl7Y29uc3QgYT10aGlzLmdldEhhbmRsZXJGb3JUb2tlbihsLnR5cGUpO2lmKGEmJmEucGFyc2VNYXJrZG93bil7Y29uc3QgYz10aGlzLmNyZWF0ZVBhcnNlSGVscGVycygpLHU9YS5wYXJzZU1hcmtkb3duKGwsYyk7aWYodGhpcy5pc01hcmtSZXN1bHQodSkpe2NvbnN0IGQ9dGhpcy5hcHBseU1hcmtUb0NvbnRlbnQodS5tYXJrLHUuY29udGVudCx1LmF0dHJzKTtpLnB1c2goLi4uZCl9ZWxzZXtjb25zdCBkPXRoaXMubm9ybWFsaXplUGFyc2VSZXN1bHQodSk7QXJyYXkuaXNBcnJheShkKT9pLnB1c2goLi4uZCk6ZCYmaS5wdXNoKGQpfX1lbHNlIGwudG9rZW5zJiZpLnB1c2goLi4udGhpcy5wYXJzZUlubGluZVRva2VucyhsLnRva2VucykpfX1yZXR1cm4gaX1hcHBseU1hcmtUb0NvbnRlbnQobixlLHQpe3JldHVybiBlLm1hcChyPT57aWYoci50eXBlPT09InRleHQiKXtjb25zdCBzPXIubWFya3N8fFtdLGk9dD97dHlwZTpuLGF0dHJzOnR9Ont0eXBlOm59O3JldHVybnsuLi5yLG1hcmtzOlsuLi5zLGldfX1yZXR1cm57Li4ucixjb250ZW50OnIuY29udGVudD90aGlzLmFwcGx5TWFya1RvQ29udGVudChuLHIuY29udGVudCx0KTp2b2lkIDB9fSl9aXNNYXJrUmVzdWx0KG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJiJtYXJrImluIG59bm9ybWFsaXplUGFyc2VSZXN1bHQobil7cmV0dXJuIG4/dGhpcy5pc01hcmtSZXN1bHQobik/bi5jb250ZW50Om46bnVsbH1wYXJzZUZhbGxiYWNrVG9rZW4obixlPSExKXtzd2l0Y2gobi50eXBlKXtjYXNlInBhcmFncmFwaCI6cmV0dXJue3R5cGU6InBhcmFncmFwaCIsY29udGVudDpuLnRva2Vucz90aGlzLnBhcnNlSW5saW5lVG9rZW5zKG4udG9rZW5zKTpbXX07Y2FzZSJoZWFkaW5nIjpyZXR1cm57dHlwZToiaGVhZGluZyIsYXR0cnM6e2xldmVsOm4uZGVwdGh8fDF9LGNvbnRlbnQ6bi50b2tlbnM/dGhpcy5wYXJzZUlubGluZVRva2VucyhuLnRva2Vucyk6W119O2Nhc2UidGV4dCI6cmV0dXJue3R5cGU6InRleHQiLHRleHQ6Q2Eobi50ZXh0fHwiIil9O2Nhc2UiaHRtbCI6cmV0dXJuIHRoaXMucGFyc2VIVE1MVG9rZW4obik7Y2FzZSJzcGFjZSI6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbi50b2tlbnM/dGhpcy5wYXJzZVRva2VucyhuLnRva2VucyxlKTpudWxsfX1wYXJzZUhUTUxUb2tlbihuKXtjb25zdCBlPW4udGV4dHx8bi5yYXd8fCIiO2lmKCFlLnRyaW0oKSlyZXR1cm4gbnVsbDtpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4gbi5ibG9jaz97dHlwZToicGFyYWdyYXBoIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDplfV19Ont0eXBlOiJ0ZXh0Iix0ZXh0OmV9O3RyeXtjb25zdCB0PVhnKGUsdGhpcy5iYXNlRXh0ZW5zaW9ucyk7cmV0dXJuIHQudHlwZT09PSJkb2MiJiZ0LmNvbnRlbnQ/bi5ibG9jaz90LmNvbnRlbnQ6dC5jb250ZW50Lmxlbmd0aD09PTEmJnQuY29udGVudFswXS50eXBlPT09InBhcmFncmFwaCImJnQuY29udGVudFswXS5jb250ZW50P3QuY29udGVudFswXS5jb250ZW50OnQuY29udGVudDp0fWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIEhUTUwgaW4gbWFya2Rvd246ICR7dH1gKX19ZW5jb2RlVGV4dEZvck1hcmtkb3duKG4sZSx0KXtyZXR1cm4gdD8udHlwZSE9bnVsbCYmdGhpcy5jb2RlVHlwZXMuaGFzKHQudHlwZSl8fChlLm1hcmtzfHxbXSkuc29tZShzPT50aGlzLmNvZGVUeXBlcy5oYXModHlwZW9mIHM9PSJzdHJpbmciP3M6cy50eXBlKSk/bjpHeShuKX1yZW5kZXJOb2RlVG9NYXJrZG93bihuLGUsdD0wLHI9MCxzPXt9KXt2YXIgaTtpZihuLnR5cGU9PT0idGV4dCIpcmV0dXJuIHRoaXMuZW5jb2RlVGV4dEZvck1hcmtkb3duKG4udGV4dHx8IiIsbixlKTtpZighbi50eXBlKXJldHVybiIiO2NvbnN0IG89dGhpcy5nZXRIYW5kbGVyRm9yVG9rZW4obi50eXBlKTtpZighbylyZXR1cm4iIjtjb25zdCBsPUFycmF5LmlzQXJyYXkoZT8uY29udGVudCkmJnQ+MD9lLmNvbnRlbnRbdC0xXTp2b2lkIDAsYT17cmVuZGVyQ2hpbGRyZW46KGQsaCk9Pntjb25zdCBmPW8uaXNJbmRlbnRpbmc/cisxOnI7cmV0dXJuIUFycmF5LmlzQXJyYXkoZCkmJmQuY29udGVudD90aGlzLnJlbmRlck5vZGVzKGQuY29udGVudCxuLGh8fCIiLHQsZik6dGhpcy5yZW5kZXJOb2RlcyhkLG4saHx8IiIsdCxmKX0scmVuZGVyQ2hpbGQ6KGQsaCk9Pntjb25zdCBmPW8uaXNJbmRlbnRpbmc/cisxOnI7cmV0dXJuIHRoaXMucmVuZGVyTm9kZVRvTWFya2Rvd24oZCxuLGgsZil9LGluZGVudDpkPT50aGlzLmluZGVudFN0cmluZytkLHdyYXBJbkJsb2NrOlpifSxjPXtpbmRleDp0LGxldmVsOnIscGFyZW50VHlwZTplPy50eXBlLHByZXZpb3VzTm9kZTpsLG1ldGE6e3BhcmVudEF0dHJzOmU/LmF0dHJzLC4uLnN9fTtyZXR1cm4oKGk9by5yZW5kZXJNYXJrZG93bik9PW51bGw/dm9pZCAwOmkuY2FsbChvLG4sYSxjKSl8fCIifXJlbmRlck5vZGVzKG4sZSx0PSIiLHI9MCxzPTApe3JldHVybiBBcnJheS5pc0FycmF5KG4pP3RoaXMucmVuZGVyTm9kZXNXaXRoTWFya0JvdW5kYXJpZXMobixlLHQscyk6bi50eXBlP3RoaXMucmVuZGVyTm9kZVRvTWFya2Rvd24obixlLHIscyk6IiJ9cmVuZGVyTm9kZXNXaXRoTWFya0JvdW5kYXJpZXMobixlLHQ9IiIscj0wKXtjb25zdCBzPVtdLGk9bmV3IE1hcCxvPW5ldyBTZXQsbD1uZXcgTWFwO3JldHVybiBuLmZvckVhY2goKGEsYyk9Pntjb25zdCB1PWM8bi5sZW5ndGgtMT9uW2MrMV06bnVsbDtpZihhLnR5cGUpaWYoYS50eXBlPT09InRleHQiKXtsZXQgZD10aGlzLmVuY29kZVRleHRGb3JNYXJrZG93bihhLnRleHR8fCIiLGEsZSk7Y29uc3QgaD1uZXcgTWFwKChhLm1hcmtzfHxbXSkubWFwKHg9Plt4LnR5cGUseF0pKSxmPXQwKGksaCkscD1lMChoLHUpLG09cC5maWx0ZXIoeD0+aS5oYXMoeCkpLGc9bS5sZW5ndGg+MCYmZi5sZW5ndGg+MDtsZXQgeT0iIjtpZihwLmxlbmd0aD4wJiYhZyl7Y29uc3QgeD1kLm1hdGNoKC8oXHMrKSQvKTt4JiYoeT14WzFdLGQ9ZC5zbGljZSgwLC15Lmxlbmd0aCkpfWd8fHAuZm9yRWFjaCh4PT57aWYoIWkuaGFzKHgpKXJldHVybjtjb25zdCB2PWguZ2V0KHgpLEM9dGhpcy5nZXRNYXJrQ2xvc2luZyh4LHYsbC5nZXQoeCkpO0MmJihkKz1DKSxpLmhhcyh4KSYmKGkuZGVsZXRlKHgpLGwuZGVsZXRlKHgpKX0pO2xldCBrPSIiO2lmKGYubGVuZ3RoPjApe2NvbnN0IHg9ZC5tYXRjaCgvXihccyspLyk7eCYmKGs9eFsxXSxkPWQuc2xpY2Uoay5sZW5ndGgpKX1mLmZvckVhY2goKHt0eXBlOngsbWFyazp2fSk9Pntjb25zdCBDPW8uaGFzKHgpPyJodG1sIjoibWFya2Rvd24iLE09dGhpcy5nZXRNYXJrT3BlbmluZyh4LHYsQyk7TSYmKGQ9TStkKSxsLnNldCh4LEMpLG8uZGVsZXRlKHgpfSksZ3x8Zi5zbGljZSgpLnJldmVyc2UoKS5mb3JFYWNoKCh7dHlwZTp4LG1hcms6dn0pPT57aS5zZXQoeCx2KX0pLGQ9aytkO2xldCBiO2lmKGcpe2NvbnN0IHg9bmV3IFNldCgodT8ubWFya3N8fFtdKS5tYXAodj0+di50eXBlKSk7Zi5mb3JFYWNoKCh7dHlwZTp2fSk9Pnt4Lmhhcyh2KSYmdGhpcy5nZXRIdG1sUmVvcGVuVGFncyh2KSYmby5hZGQodil9KSxiPVsuLi5mLm1hcCh2PT52LnR5cGUpLC4uLm1dfWVsc2UgYj1uMChpLGgsdSx0aGlzLm1hcmtTZXRzRXF1YWwuYmluZCh0aGlzKSk7bGV0IHc9IiI7aWYoYi5sZW5ndGg+MCl7Y29uc3QgeD1kLm1hdGNoKC8oXHMrKSQvKTt4JiYodz14WzFdLGQ9ZC5zbGljZSgwLC13Lmxlbmd0aCkpfWIuZm9yRWFjaCh4PT57dmFyIHY7Y29uc3QgQz0odj1pLmdldCh4KSkhPW51bGw/djpoLmdldCh4KSxNPXRoaXMuZ2V0TWFya0Nsb3NpbmcoeCxDLGwuZ2V0KHgpKTtNJiYoZCs9TSksaS5kZWxldGUoeCksbC5kZWxldGUoeCl9KSxkKz13LGQrPXkscy5wdXNoKGQpfWVsc2V7Y29uc3QgZD1uZXcgTWFwKGkpLGg9bmV3IE1hcChsKSxmPXIwKGksKGcseSk9PnRoaXMuZ2V0TWFya0Nsb3NpbmcoZyx5LGwuZ2V0KGcpKSk7bC5jbGVhcigpO2NvbnN0IHA9dGhpcy5yZW5kZXJOb2RlVG9NYXJrZG93bihhLGUsYyxyKSxtPWEudHlwZT09PSJoYXJkQnJlYWsiPyIiOnMwKGQsaSwoZyx5KT0+e3ZhciBrO2NvbnN0IGI9KGs9aC5nZXQoZykpIT1udWxsP2s6Im1hcmtkb3duIjtyZXR1cm4gbC5zZXQoZyxiKSx0aGlzLmdldE1hcmtPcGVuaW5nKGcseSxiKX0pO3MucHVzaChmK3ArbSl9fSkscy5qb2luKHQpfWdldE1hcmtPcGVuaW5nKG4sZSx0PSJtYXJrZG93biIpe3ZhciByO2lmKHQ9PT0iaHRtbCIpcmV0dXJuKChyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MobikpPT1udWxsP3ZvaWQgMDpyLm9wZW4pfHwiIjtjb25zdCBzPXRoaXMuZ2V0SGFuZGxlcnNGb3JOb2RlVHlwZShuKSxpPXMubGVuZ3RoPjA/c1swXTp2b2lkIDA7aWYoIWl8fCFpLnJlbmRlck1hcmtkb3duKXJldHVybiIiO2NvbnN0IG89Iu6AgF9fVElQVEFQX01BUktET1dOX1BMQUNFSE9MREVSX1/ugIEiLGw9e3R5cGU6bixhdHRyczplLmF0dHJzfHx7fSxjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDpvfV19O3RyeXtjb25zdCBhPWkucmVuZGVyTWFya2Rvd24obCx7cmVuZGVyQ2hpbGRyZW46KCk9Pm8scmVuZGVyQ2hpbGQ6KCk9Pm8saW5kZW50OnU9PnUsd3JhcEluQmxvY2s6KHUsZCk9PnUrZH0se2luZGV4OjAsbGV2ZWw6MCxwYXJlbnRUeXBlOiJ0ZXh0IixtZXRhOnt9fSksYz1hLmluZGV4T2Yobyk7cmV0dXJuIGM+PTA/YS5zdWJzdHJpbmcoMCxjKToiIn1jYXRjaChhKXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBvcGVuaW5nIGZvciAke259OiAke2F9YCl9fWdldE1hcmtDbG9zaW5nKG4sZSx0PSJtYXJrZG93biIpe3ZhciByO2lmKHQ9PT0iaHRtbCIpcmV0dXJuKChyPXRoaXMuZ2V0SHRtbFJlb3BlblRhZ3MobikpPT1udWxsP3ZvaWQgMDpyLmNsb3NlKXx8IiI7Y29uc3Qgcz10aGlzLmdldEhhbmRsZXJzRm9yTm9kZVR5cGUobiksaT1zLmxlbmd0aD4wP3NbMF06dm9pZCAwO2lmKCFpfHwhaS5yZW5kZXJNYXJrZG93bilyZXR1cm4iIjtjb25zdCBvPSLugIBfX1RJUFRBUF9NQVJLRE9XTl9QTEFDRUhPTERFUl9f7oCBIixsPXt0eXBlOm4sYXR0cnM6ZS5hdHRyc3x8e30sY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6b31dfTt0cnl7Y29uc3QgYT1pLnJlbmRlck1hcmtkb3duKGwse3JlbmRlckNoaWxkcmVuOigpPT5vLHJlbmRlckNoaWxkOigpPT5vLGluZGVudDpkPT5kLHdyYXBJbkJsb2NrOihkLGgpPT5kK2h9LHtpbmRleDowLGxldmVsOjAscGFyZW50VHlwZToidGV4dCIsbWV0YTp7fX0pLGM9YS5pbmRleE9mKG8pLHU9YytvLmxlbmd0aDtyZXR1cm4gYz49MD9hLnN1YnN0cmluZyh1KToiIn1jYXRjaChhKXt0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgbWFyayBjbG9zaW5nIGZvciAke259OiAke2F9YCl9fWdldEh0bWxSZW9wZW5UYWdzKG4pe2NvbnN0IGU9dGhpcy5nZXRIYW5kbGVyc0Zvck5vZGVUeXBlKG4pLHQ9ZS5sZW5ndGg+MD9lWzBdOnZvaWQgMDtyZXR1cm4gdD8uaHRtbFJlb3Blbn1tYXJrU2V0c0VxdWFsKG4sZSl7cmV0dXJuIG4uc2l6ZSE9PWUuc2l6ZT8hMTpBcnJheS5mcm9tKG4ua2V5cygpKS5ldmVyeSh0PT5lLmhhcyh0KSl9fSxVYT1pMCxvMD10ZS5jcmVhdGUoe25hbWU6Im1hcmtkb3duIixhZGRPcHRpb25zKCl7cmV0dXJue2luZGVudGF0aW9uOntzdHlsZToic3BhY2UiLHNpemU6Mn0sbWFya2VkOnZvaWQgMCxtYXJrZWRPcHRpb25zOnt9fX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0Q29udGVudDoobixlKT0+e2lmKCFlPy5jb250ZW50VHlwZXx8Q3IobixlPy5jb250ZW50VHlwZSkhPT0ibWFya2Rvd24ifHwhdGhpcy5lZGl0b3IubWFya2Rvd24pcmV0dXJuICRlLnNldENvbnRlbnQobixlKTtjb25zdCByPXRoaXMuZWRpdG9yLm1hcmtkb3duLnBhcnNlKG4pO3JldHVybiAkZS5zZXRDb250ZW50KHIsZSl9LGluc2VydENvbnRlbnQ6KG4sZSk9PntpZighZT8uY29udGVudFR5cGV8fENyKG4sZT8uY29udGVudFR5cGUpIT09Im1hcmtkb3duInx8IXRoaXMuZWRpdG9yLm1hcmtkb3duKXJldHVybiAkZS5pbnNlcnRDb250ZW50KG4sZSk7Y29uc3Qgcj10aGlzLmVkaXRvci5tYXJrZG93bi5wYXJzZShuKTtyZXR1cm4gJGUuaW5zZXJ0Q29udGVudChyLGUpfSxpbnNlcnRDb250ZW50QXQ6KG4sZSx0KT0+e2lmKCF0Py5jb250ZW50VHlwZXx8Q3IoZSx0Py5jb250ZW50VHlwZSkhPT0ibWFya2Rvd24ifHwhdGhpcy5lZGl0b3IubWFya2Rvd24pcmV0dXJuICRlLmluc2VydENvbnRlbnRBdChuLGUsdCk7Y29uc3Qgcz10aGlzLmVkaXRvci5tYXJrZG93bi5wYXJzZShlKTtyZXR1cm4gJGUuaW5zZXJ0Q29udGVudEF0KG4scyx0KX19fSxhZGRTdG9yYWdlKCl7cmV0dXJue21hbmFnZXI6bmV3IFVhKHtpbmRlbnRhdGlvbjp0aGlzLm9wdGlvbnMuaW5kZW50YXRpb24sbWFya2VkOnRoaXMub3B0aW9ucy5tYXJrZWQsbWFya2VkT3B0aW9uczp0aGlzLm9wdGlvbnMubWFya2VkT3B0aW9ucyxleHRlbnNpb25zOltdfSl9fSxvbkJlZm9yZUNyZWF0ZSgpe2lmKHRoaXMuZWRpdG9yLm1hcmtkb3dufHwodGhpcy5zdG9yYWdlLm1hbmFnZXI9bmV3IFVhKHtpbmRlbnRhdGlvbjp0aGlzLm9wdGlvbnMuaW5kZW50YXRpb24sbWFya2VkOnRoaXMub3B0aW9ucy5tYXJrZWQsbWFya2VkT3B0aW9uczp0aGlzLm9wdGlvbnMubWFya2VkT3B0aW9ucyxleHRlbnNpb25zOnRoaXMuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuYmFzZUV4dGVuc2lvbnN9KSx0aGlzLmVkaXRvci5tYXJrZG93bj10aGlzLnN0b3JhZ2UubWFuYWdlcix0aGlzLmVkaXRvci5nZXRNYXJrZG93bj0oKT0+dGhpcy5zdG9yYWdlLm1hbmFnZXIuc2VyaWFsaXplKHRoaXMuZWRpdG9yLmdldEpTT04oKSksIXRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudFR5cGUpfHxDcih0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQsdGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50VHlwZSkhPT0ibWFya2Rvd24iKXJldHVybjtpZighdGhpcy5lZGl0b3IubWFya2Rvd24pdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBNYXJrZG93biBleHRlbnNpb24gaXMgbm90IGFkZGVkIHRvIHRoZSBlZGl0b3IuIFBsZWFzZSBhZGQgdGhlIE1hcmtkb3duIGV4dGVuc2lvbiB0byB1c2UgdGhpcyBmZWF0dXJlLicpO2lmKHRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudD09PXZvaWQgMHx8dHlwZW9mIHRoaXMuZWRpdG9yLm9wdGlvbnMuY29udGVudCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCdbdGlwdGFwXVttYXJrZG93bl06IFRoZSBgY29udGVudFR5cGVgIG9wdGlvbiBpcyBzZXQgdG8gIm1hcmtkb3duIiwgYnV0IHRoZSBpbml0aWFsIGNvbnRlbnQgaXMgbm90IGEgc3RyaW5nLiBQbGVhc2UgcHJvdmlkZSB0aGUgaW5pdGlhbCBjb250ZW50IGFzIGEgbWFya2Rvd24gc3RyaW5nLicpO2NvbnN0IGU9dGhpcy5lZGl0b3IubWFya2Rvd24ucGFyc2UodGhpcy5lZGl0b3Iub3B0aW9ucy5jb250ZW50KTt0aGlzLmVkaXRvci5vcHRpb25zLmNvbnRlbnQ9ZX19KSxlcz0obixlKT0+e2lmKG49PT0ic2xvdCIpcmV0dXJuIDA7aWYobiBpbnN0YW5jZW9mIEZ1bmN0aW9uKXJldHVybiBuKGUpO2NvbnN0e2NoaWxkcmVuOnQsLi4ucn09ZT8/e307aWYobj09PSJzdmciKXRocm93IG5ldyBFcnJvcigiU1ZHIGVsZW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBKU1ggc3ludGF4LCB1c2UgdGhlIGFycmF5IHN5bnRheCBpbnN0ZWFkIik7cmV0dXJuW24scix0XX0sbDA9L15ccyo+XHMkLyxhMD1TZS5jcmVhdGUoe25hbWU6ImJsb2NrcXVvdGUiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxjb250ZW50OiJibG9jaysiLGdyb3VwOiJibG9jayIsZGVmaW5pbmc6ITAscGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6ImJsb2NrcXVvdGUifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm4gZXMoImJsb2NrcXVvdGUiLHsuLi5LKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSxjaGlsZHJlbjplcygic2xvdCIse30pfSl9LHBhcnNlTWFya2Rvd246KG4sZSk9Pnt2YXIgdDtjb25zdCByPSh0PWUucGFyc2VCbG9ja0NoaWxkcmVuKSE9bnVsbD90OmUucGFyc2VDaGlsZHJlbjtyZXR1cm4gZS5jcmVhdGVOb2RlKCJibG9ja3F1b3RlIix2b2lkIDAscihuLnRva2Vuc3x8W10pKX0scmVuZGVyTWFya2Rvd246KG4sZSk9PntpZighbi5jb250ZW50KXJldHVybiIiO2NvbnN0IHQ9Ij4iLHI9W107cmV0dXJuIG4uY29udGVudC5mb3JFYWNoKChzLGkpPT57dmFyIG8sbDtjb25zdCB1PSgobD0obz1lLnJlbmRlckNoaWxkKT09bnVsbD92b2lkIDA6by5jYWxsKGUscyxpKSkhPW51bGw/bDplLnJlbmRlckNoaWxkcmVuKFtzXSkpLnNwbGl0KGAKYCkubWFwKGQ9PmQudHJpbSgpPT09IiI/dDpgJHt0fSAke2R9YCk7ci5wdXNoKHUuam9pbihgCmApKX0pLHIuam9pbihgCiR7dH0KYCl9LGFkZENvbW1hbmRzKCl7cmV0dXJue3NldEJsb2NrcXVvdGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLndyYXBJbih0aGlzLm5hbWUpLHRvZ2dsZUJsb2NrcXVvdGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZVdyYXAodGhpcy5uYW1lKSx1bnNldEJsb2NrcXVvdGU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLmxpZnQodGhpcy5uYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtYiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJsb2NrcXVvdGUoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bcG4oe2ZpbmQ6bDAsdHlwZTp0aGlzLnR5cGV9KV19fSksYzA9Lyg/Ol58XHMpKFwqXCooPyFccytcKlwqKSgoPzpbXipdKykpXCpcKig/IVxzK1wqXCopKSQvLHUwPS8oPzpefFxzKShcKlwqKD8hXHMrXCpcKikoKD86W14qXSspKVwqXCooPyFccytcKlwqKSkvZyxkMD0vKD86XnxccykoX18oPyFccytfXykoKD86W15fXSspKV9fKD8hXHMrX18pKSQvLGgwPS8oPzpefFxzKShfXyg/IVxzK19fKSgoPzpbXl9dKykpX18oPyFccytfXykpL2csZjA9SnQuY3JlYXRlKHtuYW1lOiJib2xkIixhZGRPcHRpb25zKCl7cmV0dXJue0hUTUxBdHRyaWJ1dGVzOnt9fX0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6InN0cm9uZyJ9LHt0YWc6ImIiLGdldEF0dHJzOm49Pm4uc3R5bGUuZm9udFdlaWdodCE9PSJub3JtYWwiJiZudWxsfSx7c3R5bGU6ImZvbnQtd2VpZ2h0PTQwMCIsY2xlYXJNYXJrOm49Pm4udHlwZS5uYW1lPT09dGhpcy5uYW1lfSx7c3R5bGU6ImZvbnQtd2VpZ2h0IixnZXRBdHRyczpuPT4vXihib2xkKGVyKT98WzUtOV1cZHsyLH0pJC8udGVzdChuKSYmbnVsbH1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuIGVzKCJzdHJvbmciLHsuLi5LKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSxjaGlsZHJlbjplcygic2xvdCIse30pfSl9LG1hcmtkb3duVG9rZW5OYW1lOiJzdHJvbmciLHBhcnNlTWFya2Rvd246KG4sZSk9PmUuYXBwbHlNYXJrKCJib2xkIixlLnBhcnNlSW5saW5lKG4udG9rZW5zfHxbXSkpLG1hcmtkb3duT3B0aW9uczp7aHRtbFJlb3Blbjp7b3BlbjoiPHN0cm9uZz4iLGNsb3NlOiI8L3N0cm9uZz4ifX0scmVuZGVyTWFya2Rvd246KG4sZSk9PmAqKiR7ZS5yZW5kZXJDaGlsZHJlbihuKX0qKmAsYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0Qm9sZDooKT0+KHtjb21tYW5kczpufSk9Pm4uc2V0TWFyayh0aGlzLm5hbWUpLHRvZ2dsZUJvbGQ6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSx1bnNldEJvbGQ6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1iIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQm9sZCgpLCJNb2QtQiI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJvbGQoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6YzAsdHlwZTp0aGlzLnR5cGV9KSxmbih7ZmluZDpkMCx0eXBlOnRoaXMudHlwZX0pXX0sYWRkUGFzdGVSdWxlcygpe3JldHVybltxdCh7ZmluZDp1MCx0eXBlOnRoaXMudHlwZX0pLHF0KHtmaW5kOmgwLHR5cGU6dGhpcy50eXBlfSldfX0pLHhpPTQscDA9L15gYGAoW2Etel0rKT9bXHNcbl0kLyxtMD0vXn5+fihbYS16XSspP1tcc1xuXSQvLGcwPVNlLmNyZWF0ZSh7bmFtZToiY29kZUJsb2NrIixhZGRPcHRpb25zKCl7cmV0dXJue2xhbmd1YWdlQ2xhc3NQcmVmaXg6Imxhbmd1YWdlLSIsZXhpdE9uVHJpcGxlRW50ZXI6ITAsZXhpdE9uQXJyb3dEb3duOiEwLGRlZmF1bHRMYW5ndWFnZTpudWxsLGVuYWJsZVRhYkluZGVudGF0aW9uOiExLHRhYlNpemU6eGksSFRNTEF0dHJpYnV0ZXM6e319fSxjb250ZW50OiJ0ZXh0KiIsbWFya3M6IiIsZ3JvdXA6ImJsb2NrIixjb2RlOiEwLGRlZmluaW5nOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57bGFuZ3VhZ2U6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLmRlZmF1bHRMYW5ndWFnZSxwYXJzZUhUTUw6bj0+e3ZhciBlO2NvbnN0e2xhbmd1YWdlQ2xhc3NQcmVmaXg6dH09dGhpcy5vcHRpb25zO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGk9Wy4uLigoZT1uLmZpcnN0RWxlbWVudENoaWxkKT09bnVsbD92b2lkIDA6ZS5jbGFzc0xpc3QpfHxbXV0uZmlsdGVyKG89Pm8uc3RhcnRzV2l0aCh0KSkubWFwKG89Pm8ucmVwbGFjZSh0LCIiKSlbMF07cmV0dXJuIGl8fG51bGx9LHJlbmRlcmVkOiExfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJwcmUiLHByZXNlcnZlV2hpdGVzcGFjZToiZnVsbCJ9XX0scmVuZGVySFRNTCh7bm9kZTpuLEhUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bInByZSIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksWyJjb2RlIix7Y2xhc3M6bi5hdHRycy5sYW5ndWFnZT90aGlzLm9wdGlvbnMubGFuZ3VhZ2VDbGFzc1ByZWZpeCtuLmF0dHJzLmxhbmd1YWdlOm51bGx9LDBdXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImNvZGUiLHBhcnNlTWFya2Rvd246KG4sZSk9Pnt2YXIgdCxyO3JldHVybigodD1uLnJhdyk9PW51bGw/dm9pZCAwOnQuc3RhcnRzV2l0aCgiYGBgIikpPT09ITEmJigocj1uLnJhdyk9PW51bGw/dm9pZCAwOnIuc3RhcnRzV2l0aCgifn5+IikpPT09ITEmJm4uY29kZUJsb2NrU3R5bGUhPT0iaW5kZW50ZWQiP1tdOmUuY3JlYXRlTm9kZSgiY29kZUJsb2NrIix7bGFuZ3VhZ2U6bi5sYW5nfHxudWxsfSxuLnRleHQ/W2UuY3JlYXRlVGV4dE5vZGUobi50ZXh0KV06W10pfSxyZW5kZXJNYXJrZG93bjoobixlKT0+e3ZhciB0O2xldCByPSIiO2NvbnN0IHM9KCh0PW4uYXR0cnMpPT1udWxsP3ZvaWQgMDp0Lmxhbmd1YWdlKXx8IiI7cmV0dXJuIG4uY29udGVudD9yPVtgXGBcYFxgJHtzfWAsZS5yZW5kZXJDaGlsZHJlbihuLmNvbnRlbnQpLCJgYGAiXS5qb2luKGAKYCk6cj1gXGBcYFxgJHtzfQoKXGBcYFxgYCxyfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRDb2RlQmxvY2s6bj0+KHtjb21tYW5kczplfSk9PmUuc2V0Tm9kZSh0aGlzLm5hbWUsbiksdG9nZ2xlQ29kZUJsb2NrOm49Pih7Y29tbWFuZHM6ZX0pPT5lLnRvZ2dsZU5vZGUodGhpcy5uYW1lLCJwYXJhZ3JhcGgiLG4pfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1BbHQtYyI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUNvZGVCbG9jaygpLEJhY2tzcGFjZTooKT0+e2NvbnN0e2VtcHR5Om4sJGFuY2hvcjplfT10aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb24sdD1lLnBvcz09PTE7cmV0dXJuIW58fGUucGFyZW50LnR5cGUubmFtZSE9PXRoaXMubmFtZT8hMTp0fHwhZS5wYXJlbnQudGV4dENvbnRlbnQubGVuZ3RoP3RoaXMuZWRpdG9yLmNvbW1hbmRzLmNsZWFyTm9kZXMoKTohMX0sVGFiOih7ZWRpdG9yOm59KT0+e3ZhciBlO2lmKCF0aGlzLm9wdGlvbnMuZW5hYmxlVGFiSW5kZW50YXRpb24pcmV0dXJuITE7Y29uc3QgdD0oZT10aGlzLm9wdGlvbnMudGFiU2l6ZSkhPW51bGw/ZTp4aSx7c3RhdGU6cn09bix7c2VsZWN0aW9uOnN9PXIseyRmcm9tOmksZW1wdHk6b309cztpZihpLnBhcmVudC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO2NvbnN0IGw9IiAiLnJlcGVhdCh0KTtyZXR1cm4gbz9uLmNvbW1hbmRzLmluc2VydENvbnRlbnQobCk6bi5jb21tYW5kcy5jb21tYW5kKCh7dHI6YX0pPT57Y29uc3R7ZnJvbTpjLHRvOnV9PXMsZj1yLmRvYy50ZXh0QmV0d2VlbihjLHUsYApgLGAKYCkuc3BsaXQoYApgKS5tYXAocD0+bCtwKS5qb2luKGAKYCk7cmV0dXJuIGEucmVwbGFjZVdpdGgoYyx1LHIuc2NoZW1hLnRleHQoZikpLCEwfSl9LCJTaGlmdC1UYWIiOih7ZWRpdG9yOm59KT0+e3ZhciBlO2lmKCF0aGlzLm9wdGlvbnMuZW5hYmxlVGFiSW5kZW50YXRpb24pcmV0dXJuITE7Y29uc3QgdD0oZT10aGlzLm9wdGlvbnMudGFiU2l6ZSkhPW51bGw/ZTp4aSx7c3RhdGU6cn09bix7c2VsZWN0aW9uOnN9PXIseyRmcm9tOmksZW1wdHk6b309cztyZXR1cm4gaS5wYXJlbnQudHlwZSE9PXRoaXMudHlwZT8hMTpvP24uY29tbWFuZHMuY29tbWFuZCgoe3RyOmx9KT0+e3ZhciBhO2NvbnN0e3BvczpjfT1pLHU9aS5zdGFydCgpLGQ9aS5lbmQoKSxmPXIuZG9jLnRleHRCZXR3ZWVuKHUsZCxgCmAsYApgKS5zcGxpdChgCmApO2xldCBwPTAsbT0wO2NvbnN0IGc9Yy11O2ZvcihsZXQgdj0wO3Y8Zi5sZW5ndGg7dis9MSl7aWYobStmW3ZdLmxlbmd0aD49Zyl7cD12O2JyZWFrfW0rPWZbdl0ubGVuZ3RoKzF9Y29uc3Qgaz0oKGE9ZltwXS5tYXRjaCgvXiAqLykpPT1udWxsP3ZvaWQgMDphWzBdKXx8IiIsYj1NYXRoLm1pbihrLmxlbmd0aCx0KTtpZihiPT09MClyZXR1cm4hMDtsZXQgdz11O2ZvcihsZXQgdj0wO3Y8cDt2Kz0xKXcrPWZbdl0ubGVuZ3RoKzE7cmV0dXJuIGwuZGVsZXRlKHcsdytiKSxjLXc8PWImJmwuc2V0U2VsZWN0aW9uKEQuY3JlYXRlKGwuZG9jLHcpKSwhMH0pOm4uY29tbWFuZHMuY29tbWFuZCgoe3RyOmx9KT0+e2NvbnN0e2Zyb206YSx0bzpjfT1zLGg9ci5kb2MudGV4dEJldHdlZW4oYSxjLGAKYCxgCmApLnNwbGl0KGAKYCkubWFwKGY9Pnt2YXIgcDtjb25zdCBtPSgocD1mLm1hdGNoKC9eICovKSk9PW51bGw/dm9pZCAwOnBbMF0pfHwiIixnPU1hdGgubWluKG0ubGVuZ3RoLHQpO3JldHVybiBmLnNsaWNlKGcpfSkuam9pbihgCmApO3JldHVybiBsLnJlcGxhY2VXaXRoKGEsYyxyLnNjaGVtYS50ZXh0KGgpKSwhMH0pfSxFbnRlcjooe2VkaXRvcjpufSk9PntpZighdGhpcy5vcHRpb25zLmV4aXRPblRyaXBsZUVudGVyKXJldHVybiExO2NvbnN0e3N0YXRlOmV9PW4se3NlbGVjdGlvbjp0fT1lLHskZnJvbTpyLGVtcHR5OnN9PXQ7aWYoIXN8fHIucGFyZW50LnR5cGUhPT10aGlzLnR5cGUpcmV0dXJuITE7Y29uc3QgaT1yLnBhcmVudE9mZnNldD09PXIucGFyZW50Lm5vZGVTaXplLTIsbz1yLnBhcmVudC50ZXh0Q29udGVudC5lbmRzV2l0aChgCgpgKTtyZXR1cm4haXx8IW8/ITE6bi5jaGFpbigpLmNvbW1hbmQoKHt0cjpsfSk9PihsLmRlbGV0ZShyLnBvcy0yLHIucG9zKSwhMCkpLmV4aXRDb2RlKCkucnVuKCl9LEFycm93RG93bjooe2VkaXRvcjpufSk9PntpZighdGhpcy5vcHRpb25zLmV4aXRPbkFycm93RG93bilyZXR1cm4hMTtjb25zdHtzdGF0ZTplfT1uLHtzZWxlY3Rpb246dCxkb2M6cn09ZSx7JGZyb206cyxlbXB0eTppfT10O2lmKCFpfHxzLnBhcmVudC50eXBlIT09dGhpcy50eXBlfHwhKHMucGFyZW50T2Zmc2V0PT09cy5wYXJlbnQubm9kZVNpemUtMikpcmV0dXJuITE7Y29uc3QgbD1zLmFmdGVyKCk7cmV0dXJuIGw9PT12b2lkIDA/ITE6ci5ub2RlQXQobCk/bi5jb21tYW5kcy5jb21tYW5kKCh7dHI6Y30pPT4oYy5zZXRTZWxlY3Rpb24oSS5uZWFyKHIucmVzb2x2ZShsKSkpLCEwKSk6bi5jb21tYW5kcy5leGl0Q29kZSgpfX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bV2koe2ZpbmQ6cDAsdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczpuPT4oe2xhbmd1YWdlOm5bMV19KX0pLFdpKHtmaW5kOm0wLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6bj0+KHtsYW5ndWFnZTpuWzFdfSl9KV19LGFkZFByb3NlTWlycm9yUGx1Z2lucygpe3JldHVybltuZXcgRyh7a2V5Om5ldyBxKCJjb2RlQmxvY2tWU0NvZGVIYW5kbGVyIikscHJvcHM6e2hhbmRsZVBhc3RlOihuLGUpPT57aWYoIWUuY2xpcGJvYXJkRGF0YXx8dGhpcy5lZGl0b3IuaXNBY3RpdmUodGhpcy50eXBlLm5hbWUpKXJldHVybiExO2NvbnN0IHQ9ZS5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSxyPWUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ2c2NvZGUtZWRpdG9yLWRhdGEiKSxzPXI/SlNPTi5wYXJzZShyKTp2b2lkIDAsaT1zPy5tb2RlO2lmKCF0fHwhaSlyZXR1cm4hMTtjb25zdHt0cjpvLHNjaGVtYTpsfT1uLnN0YXRlLGE9bC50ZXh0KHQucmVwbGFjZSgvXHJcbj8vZyxgCmApKTtyZXR1cm4gby5yZXBsYWNlU2VsZWN0aW9uV2l0aCh0aGlzLnR5cGUuY3JlYXRlKHtsYW5ndWFnZTppfSxhKSksby5zZWxlY3Rpb24uJGZyb20ucGFyZW50LnR5cGUhPT10aGlzLnR5cGUmJm8uc2V0U2VsZWN0aW9uKEQubmVhcihvLmRvYy5yZXNvbHZlKE1hdGgubWF4KDAsby5zZWxlY3Rpb24uZnJvbS0yKSkpKSxvLnNldE1ldGEoInBhc3RlIiwhMCksbi5kaXNwYXRjaChvKSwhMH19fSldfX0pLHkwPVNlLmNyZWF0ZSh7bmFtZToiZG9jIix0b3BOb2RlOiEwLGNvbnRlbnQ6ImJsb2NrKyIscmVuZGVyTWFya2Rvd246KG4sZSk9Pm4uY29udGVudD9lLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCxgCgpgKToiIn0pLGswPVNlLmNyZWF0ZSh7bmFtZToiaGFyZEJyZWFrIixtYXJrZG93blRva2VuTmFtZToiYnIiLGFkZE9wdGlvbnMoKXtyZXR1cm57a2VlcE1hcmtzOiEwLEhUTUxBdHRyaWJ1dGVzOnt9fX0saW5saW5lOiEwLGdyb3VwOiJpbmxpbmUiLHNlbGVjdGFibGU6ITEsbGluZWJyZWFrUmVwbGFjZW1lbnQ6ITAscGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6ImJyIn1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuWyJiciIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsbildfSxyZW5kZXJUZXh0KCl7cmV0dXJuYApgfSxyZW5kZXJNYXJrZG93bjooKT0+YCAgCmAscGFyc2VNYXJrZG93bjooKT0+KHt0eXBlOiJoYXJkQnJlYWsifSksYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SGFyZEJyZWFrOigpPT4oe2NvbW1hbmRzOm4sY2hhaW46ZSxzdGF0ZTp0LGVkaXRvcjpyfSk9Pm4uZmlyc3QoWygpPT5uLmV4aXRDb2RlKCksKCk9Pm4uY29tbWFuZCgoKT0+e2NvbnN0e3NlbGVjdGlvbjpzLHN0b3JlZE1hcmtzOml9PXQ7aWYocy4kZnJvbS5wYXJlbnQudHlwZS5zcGVjLmlzb2xhdGluZylyZXR1cm4hMTtjb25zdHtrZWVwTWFya3M6b309dGhpcy5vcHRpb25zLHtzcGxpdHRhYmxlTWFya3M6bH09ci5leHRlbnNpb25NYW5hZ2VyLGE9aXx8cy4kdG8ucGFyZW50T2Zmc2V0JiZzLiRmcm9tLm1hcmtzKCk7cmV0dXJuIGUoKS5pbnNlcnRDb250ZW50KHt0eXBlOnRoaXMubmFtZX0pLmNvbW1hbmQoKHt0cjpjLGRpc3BhdGNoOnV9KT0+e2lmKHUmJmEmJm8pe2NvbnN0IGQ9YS5maWx0ZXIoaD0+bC5pbmNsdWRlcyhoLnR5cGUubmFtZSkpO2MuZW5zdXJlTWFya3MoZCl9cmV0dXJuITB9KS5ydW4oKX0pXSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLUVudGVyIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0SGFyZEJyZWFrKCksIlNoaWZ0LUVudGVyIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0SGFyZEJyZWFrKCl9fX0pLGIwPVNlLmNyZWF0ZSh7bmFtZToiaGVhZGluZyIsYWRkT3B0aW9ucygpe3JldHVybntsZXZlbHM6WzEsMiwzLDQsNSw2XSxIVE1MQXR0cmlidXRlczp7fX19LGNvbnRlbnQ6ImlubGluZSoiLGdyb3VwOiJibG9jayIsZGVmaW5pbmc6ITAsYWRkQXR0cmlidXRlcygpe3JldHVybntsZXZlbDp7ZGVmYXVsdDoxLHJlbmRlcmVkOiExfX19LHBhcnNlSFRNTCgpe3JldHVybiB0aGlzLm9wdGlvbnMubGV2ZWxzLm1hcChuPT4oe3RhZzpgaCR7bn1gLGF0dHJzOntsZXZlbDpufX0pKX0scmVuZGVySFRNTCh7bm9kZTpuLEhUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bYGgke3RoaXMub3B0aW9ucy5sZXZlbHMuaW5jbHVkZXMobi5hdHRycy5sZXZlbCk/bi5hdHRycy5sZXZlbDp0aGlzLm9wdGlvbnMubGV2ZWxzWzBdfWAsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsZSksMF19LHBhcnNlTWFya2Rvd246KG4sZSk9PmUuY3JlYXRlTm9kZSgiaGVhZGluZyIse2xldmVsOm4uZGVwdGh8fDF9LGUucGFyc2VJbmxpbmUobi50b2tlbnN8fFtdKSkscmVuZGVyTWFya2Rvd246KG4sZSk9Pnt2YXIgdDtjb25zdCByPSh0PW4uYXR0cnMpIT1udWxsJiZ0LmxldmVsP3BhcnNlSW50KG4uYXR0cnMubGV2ZWwsMTApOjEscz0iIyIucmVwZWF0KHIpO3JldHVybiBuLmNvbnRlbnQ/YCR7c30gJHtlLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCl9YDoiIn0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SGVhZGluZzpuPT4oe2NvbW1hbmRzOmV9KT0+dGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhuLmxldmVsKT9lLnNldE5vZGUodGhpcy5uYW1lLG4pOiExLHRvZ2dsZUhlYWRpbmc6bj0+KHtjb21tYW5kczplfSk9PnRoaXMub3B0aW9ucy5sZXZlbHMuaW5jbHVkZXMobi5sZXZlbCk/ZS50b2dnbGVOb2RlKHRoaXMubmFtZSwicGFyYWdyYXBoIixuKTohMX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMucmVkdWNlKChuLGUpPT4oey4uLm4sW2BNb2QtQWx0LSR7ZX1gXTooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSGVhZGluZyh7bGV2ZWw6ZX0pfSkse30pfSxhZGRJbnB1dFJ1bGVzKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZXZlbHMubWFwKG49PldpKHtmaW5kOm5ldyBSZWdFeHAoYF4oI3ske01hdGgubWluKC4uLnRoaXMub3B0aW9ucy5sZXZlbHMpfSwke259fSlcXHMkYCksdHlwZTp0aGlzLnR5cGUsZ2V0QXR0cmlidXRlczp7bGV2ZWw6bn19KSl9fSkseDA9Lyg/Ol58XHMpKFwqKD8hXHMrXCopKCg/OlteKl0rKSlcKig/IVxzK1wqKSkkLyx3MD0vKD86XnxccykoXCooPyFccytcKikoKD86W14qXSspKVwqKD8hXHMrXCopKS9nLHYwPS8oPzpefFxzKShfKD8hXHMrXykoKD86W15fXSspKV8oPyFccytfKSkkLyxTMD0vKD86XnxccykoXyg/IVxzK18pKCg/OlteX10rKSlfKD8hXHMrXykpL2csQzA9SnQuY3JlYXRlKHtuYW1lOiJpdGFsaWMiLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoiZW0ifSx7dGFnOiJpIixnZXRBdHRyczpuPT5uLnN0eWxlLmZvbnRTdHlsZSE9PSJub3JtYWwiJiZudWxsfSx7c3R5bGU6ImZvbnQtc3R5bGU9bm9ybWFsIixjbGVhck1hcms6bj0+bi50eXBlLm5hbWU9PT10aGlzLm5hbWV9LHtzdHlsZToiZm9udC1zdHlsZT1pdGFsaWMifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bImVtIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0SXRhbGljOigpPT4oe2NvbW1hbmRzOm59KT0+bi5zZXRNYXJrKHRoaXMubmFtZSksdG9nZ2xlSXRhbGljOigpPT4oe2NvbW1hbmRzOm59KT0+bi50b2dnbGVNYXJrKHRoaXMubmFtZSksdW5zZXRJdGFsaWM6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnVuc2V0TWFyayh0aGlzLm5hbWUpfX0sbWFya2Rvd25Ub2tlbk5hbWU6ImVtIixwYXJzZU1hcmtkb3duOihuLGUpPT5lLmFwcGx5TWFyaygiaXRhbGljIixlLnBhcnNlSW5saW5lKG4udG9rZW5zfHxbXSkpLG1hcmtkb3duT3B0aW9uczp7aHRtbFJlb3Blbjp7b3BlbjoiPGVtPiIsY2xvc2U6IjwvZW0+In19LHJlbmRlck1hcmtkb3duOihuLGUpPT5gKiR7ZS5yZW5kZXJDaGlsZHJlbihuKX0qYCxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLWkiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVJdGFsaWMoKSwiTW9kLUkiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVJdGFsaWMoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6eDAsdHlwZTp0aGlzLnR5cGV9KSxmbih7ZmluZDp2MCx0eXBlOnRoaXMudHlwZX0pXX0sYWRkUGFzdGVSdWxlcygpe3JldHVybltxdCh7ZmluZDp3MCx0eXBlOnRoaXMudHlwZX0pLHF0KHtmaW5kOlMwLHR5cGU6dGhpcy50eXBlfSldfX0pO2NvbnN0IFQwPSJhYWExcnAzYmIwb3R0M3ZpZTRjMWxlMm9nYWRvNXVkaGFiaTdjMGFkZW15NWNlbnR1cmU2b3VudGFudDBzOW8xdG9yNGQwczF1bHQ0ZTBnMXJvMnRuYTRmMGwxcmljYTVnMGFraGFuNWVuY3k1aTBnMXJidXMzZm9yY2U1dGVsNWtkbjNsMGliYWJhNHBheTRsZmluYW56NnN0YXRlNXkyc2FjZTN0b201bTBhem9uNGVyaWNhbmV4cHJlc3M3ZmFtaWx5MTF4MmZhbTNpY2Ezc3RlcmRhbThuYWx5dGljczdkcm9pZDVxdWFuNHoybzBsMnBhcnRtZW50czhwMGxlNHEwdWFyZWxsZThyMGFiMW1jbzRjaGkzbXkycGEydDBlM3MwZGEyaWEyc29jaWF0ZXM5dDBobGV0YTV0b3JuZXk3dTBjdGlvbjVkaTBibGUzbzNzcG9zdDV0aG9yM28wczR3MHMyeDBhMnowdXJlNWJhMGJ5MmlkdTNuYW1leDRkMWsycjBjZWxvbmE1bGF5Y2FyZDRzNWVmb290NWdhaW5zNnNlYmFsbDVrZXRiYWxsOHVoYXVzNXllcm41YjBjMXQxdmEzY2cxbjJkMWUwYXRzMnV0eTRlcjJybGluNHN0MGJ1eTV0MmYxZzFoMGFydGk1aTBibGUzZDFrZTJuZzBvM28xejJqMWxhY2swZnJpZGF5OW9ja2J1c3RlcjhnMW9tYmVyZzd1ZTNtMHMxdzJuMHBwYXJpYmFzOW8wYXRzM2VocmluZ2VyOGZhMm0xbmQybzBrMGluZzVzY2gydGlrMm9uNHQxdXRpcXVlNngycjBhZGVzY282aWRnZXN0b25lOW9hZHdheTVrZXIzdGhlcjV1c3NlbHM3czF0MXVpbGQwZXJzNnNpbmVzczZ5MXp6M3YxdzF5MXowaDNjYTBiMWZlMmwwbDF2aW5rbGVpbjltMGVyYTNwMm5vbjNwZXRvd241aXRhbDBvbmU4cjBhdmFuNGRzMmUwZXIwczRzMnNhMWUxaDFpbm80dDBlcmluZzVob2xpYzdiYTFuMXJlM2MxZDFlbnRlcjRvMXJuM2YwYTFkMmcxaDBhbmVsMm5lbDRyaXR5NHNlMnQyZWFwM2ludGFpNXJpc3RtYXM2b21lNHVyY2g1aTBwcmlhbmk2cmNsZTRzY28zdGFkZWw0aTBjMnkzazFsMGFpbXM0ZWFuaW5nNmljazJuaWMxcXVlNm90aGluZzV1ZDN1YjBtZWQ2bTFuMW8wYWNoM2RlczNmZmVlNGxsZWdlNG9nbmU1bTBtYmFuazR1bml0eTZwYW55MnJlM3V0ZXI1c2VjNG5kb3Mzc3RydWN0aW9uOHVsdGluZzd0YWN0M3JhY3RvcnM5b2tpbmc0bDFwMnJzaWNhNXVudHJ5NHBvbjBzNHJzZXM2cGEycjBlZGl0MGNhcmQ0dW5pb245aWNrZXQ1b3duM3MxdWlzZTBzNnUwaXNpbmVsbGE5djF3MXgxeTBtcnUzb3UzejJkYWQxbmNlM3RhMWUxaW5nM3N1bjR5MmNsazNkczJlMGFsMGVyMnMzZ3JlZTRsaXZlcnk1bDFvaXR0ZTV0YTNtb2NyYXQ2bnRhbDJpc3Q1c2kwZ240djJobDJpYW1vbmRzNmV0MmdpdGFsNXJlY3Qwb3J5N3Njb3VudDN2ZXI1aDJ5MmoxazFtMW5wMm8wY3MxdG9yNGcxbWFpbnM1dDF3bmxvYWQ3cml2ZTR0djJ1YmFpM25sb3A0cG9udDRyYmFuNXZhZzJyMnoyZWFydGgzdDJjMG8yZGVrYTN1MGNhdGlvbjhlMWcxbWFpbDNlcmNrNW5lcmd5NGdpbmVlcjBpbmc5dGVycHJpc2VzMTBwc29uNHF1aXBtZW50OHIwaWNzc29uNm5pM3MwcTF0YXRlNXQxdTByb3Zpc2lvbjhzMnZlbnRzNXhjaGFuZ2U2cGVydDNvc2VkNHJlc3M1dHJhc3BhY2UxMGZhZ2UyaWwxcndpbmRzNnRoM21pbHk0bjBzMnJtMGVyczVzaGlvbjR0M2VkZXgzZWRiYWNrNnJyYXJpM2VybzZpMGRlbGl0eTVvMmxtMm5hbDFuY2UxaWFsN3JlMHN0b25lNm1kYWxlNnNoMGluZzV0MG5lc3M2ajFrMWxpY2tyM2dodHM0cjJvcmlzdDR3ZXJzNXkybTFvMG8wZDF0YmFsbDZyZDFleDJzYWxlNHVtM3VuZGF0aW9uOHgycjBlZTFzZW5pdXM3bDFvZ2FuczRudGllcjd0cjJ1aml0c3U1bjBkMnJuaXR1cmU3dGJvbDV5aTNnYTBsMGxlcnkzbzF1cDRtZTBzM3AxcmRlbjR5MmIwaXozZDBuMmUwYTFudDBpbmc1b3JnZTVmMWcwZWUzaDFpMGZ0MHMzdmVzMmluZzVsMGFzczNlMW9iYWwybzRtMGFpbDNiaDJvMXgybjFvZGFkZHk1bGQwcG9pbnQ2ZjJvMGR5ZWFyNWcwbGU0cDF0MXYycDFxMXIwYWluZ2VyNXBoaWNzNXRpczRlZW4zaXBlM29jZXJ5NHVwNHMxdDF1MGNjaTNnZTJpZGUydGFyczVydTN3MXkyaGFpcjJtYnVyZzVuZ291dDV1czNibzJkZmMwYmFuazdlYWx0aDBjYXJlOGxwMXNpbmtpNnJlMW1lczVpcGhvcDRzYW1pdHN1N3RhY2hpNXYyazB0Mm0xbjFvY2tleTRsZGluZ3M1aWRheTVtZWRlcG90NWdvb2RzNXMwZW5zZTduZGEzcnNlM3NwaXRhbDV0MGluZzV0MGVsczNtYWlsNXVzZTN3MnIxc2JjM3QxdTBnaGVzNXlhdHQzdW5kYWk3aWJtMmNiYzJlMXUyZDFlMGVlM2ZtMmthbm80bDFtMGFtYXQ0ZGIybW8wYmlsaWVuOW4wYzFkdXN0cmllczhmaW5pdGk1bzJnMWsxc3RpdHV0ZTZ1cmFuY2U0ZTR0MGVybmF0aW9uYWwxMHVpdDR2ZXN0bWVudHMxMG8xcGlyYW5nYTdxMXIwaXNoNHMwbWFpbGk1dDBhbmJ1bDd0MGF1MnYzamFndWFyNHZhM2NiMmUwZXAydHp0M3dlbHJ5NmlvMmxsMm0wcDJuajJvMGJzMXVyZzR0MXkycDBtb3JnYW42cnMzdWVnb3M0bmlwZXI3a2F1ZmVuNWRkaTNlMHJyeWhvdGVsczZwcm9wZXJ0aWVzMTRmaDJnMWgxaTBhMWRzMm0xbmRsZTR0Y2hlbjV3aTNtMW4xb2VsbjNtYXRzdTVzaGVyNXAwbWcybjJyMGQxZWQzdW9rZ3JvdXA4dzF5MG90bzR6MmxhMGNhaXhhNW1ib3JnaGluaThlcjNuZDByb3ZlcjZ4ZXNzNXNhbGxlNXQwaW5vM3JvYmU1dzB5ZXI1YjFjMWRzMmVhc2UzY2xlcmM1ZnJhazRnYWwybzJ4dXM0Z2J0M2kwZGwyZmUwaW5zdXJhbmNlOXN0eWxlN2dodGluZzZrZTJsbHkzbWl0ZWQ0bzJuY29sbjRrMnZlMWluZzVrMWxjMXAyb2FuMHMzY2tlcjN1czNsMW5kb240dHRlMW8zdmUzcGwwZmluYW5jaWFsMTFyMXMxdDBkMGEzdTBuZGJlY2s2eGUxdXJ5NXYxeTJtYTBkcmlkNGlmMXNvbjRrZXVwNG4wYWdlbWVudDdnbzNwMXJrZXQwaW5nM3M0cmlvdHQ1c2hhbGxzN3R0ZWw1YmEyYzBraW5zZXk3ZDFlMGQwaWEzZXQybGJvdXJuZTdtZTFvcmlhbDZuMHUycmNrbXNkN2cxaDFpYW1pM2Nyb3NvZnQ3bDFuaTF0MnQwc3ViaXNoaTlrMWwwYjFzMm0wYTJuMW8wYmkwbGU0ZGEyZTFpMW0xbmFzaDNleTJzdGVyNXJtb24zdGdhZ2U2c2NvdzR0bzByY3ljbGVzOXYwaWU0cDFxMXIxczBkMnQwbjFyMnUwc2V1bTNpYzR2MXcxeDF5MXoybmEwYjFnb3lhNG1lMnZ5M2JhMmMxZTBjMXQwYmFuazRmbGl4NHdvcms1dXN0YXI1dzBzMnh0MGRpcmVjdDd1czRmMGwyZzBvMmhrMmkwY28ya2Uxb24zbmphM3NzYW4xeTVsMW8wa2lhM3J0b240dzBydXozdHY0cDFyMGExdzJ0dDJ1MXljMnoyb2JpMXNlcnZlcjdmZmljZTVraW5hd2E2bGF5YW4wZ3JvdXA5bG8zbTBlZ2E0bmUxZzFsMGluZTVvbzJwZW4zcmFjbGUzbmdlNGcwYW5pYzVpZ2luczZzYWthNHRzdWthNHQydmgzcGEwZ2UybmFzb25pYzdyaXMyczF0bmVyczRzMXkzeTJjY3czZTB0MmYwaXplcjVnMWgwYXJtYWN5NmQxaWxpcHM1b25lMnRvMGdyYXBoeTZzNHlzaW81aWNzMXRldDJ1cmVzNmQxbjBnMWsyb25lZXI1enphNGsxbDBhY2UyeTBzdGF0aW9uOXVtYmluZzVzM20xbjBjMm9obDJrZXIzbGl0aWU1cm4yc3QzcjBheGkzZXNzM2ltZTNvMGQwdWN0aW9uczhmMWdyZXNzaXZlOG1vMnBlcnRpZXMzeTV0ZWN0aW9uOHUwZGVudGlhbDlzMXQxdWIydzBjMnkycWExcG9uM3VlYmVjM3N0NXJhY2luZzRkaW80ZTBhZDFsZXN0YXRlNnRvcjJ5NGNpcGVzNWQwc3RvbmU1dW1icmVsbGE5aGFiM2lzZTBuM3QybGlhbmNlNm4wdDBhbHM1cGFpcjNvcnQzdWJsaWNhbjhzdDBhdXJhbnQ4dmlldzBzNXhyb3RoNmljaDBhcmRsaTZvaDNsMW8xcDJvMGNrczNkZW8zZ2VyczRvbTNzMHZwM3UwZ2J5M2hyMm4ydzBlMnl1a3l1NnNhMGFybGFuZDZmZTB0eTRrdXJhNGxlMW9uM21zY2x1YjR1bmc1bmR2aWswY29yb21hbnQxMm9maTRwMXJsMnMxdmUyeG8zYjBpMXMyYzBiMWhhZWZmbGVyN21pZHQ0b2xhcnNoaXBzOG9sM3VsZTN3YXJ6NWllbmNlNW90M2QxZTBhcmNoM3QyY3VyZTFpdHk2ZWsybGVjdDRuZXIzcnZpY2VzNnZlbjN3MXgweTNmcjJnMWgwYW5ncmlsYTZycDNlbGwzaWExa3NoYTVvZXMycDBwaW5nNXVqaTN3M2kwbGsybmExZ2xlczV0ZTNqMWswaTBuMnkwcGU0bDBpbmc0bTBhcnQzaWxlNG4wY2YzbzBjY2VyM2lhbDRmdGJhbms0d2FyZTZodTJsYXIydXRpb25zN25nMXkyeTJwYTBjZTNvcnQydDNyMGwyczF0MGFkYTJwbGVzNHIxdGViYW5rNGZhcm03YzBncm91cDZvY2tob2xtNnJhZ2UzZTNyZWFtNHVkaW8yeTN5bGU0dTBja3MzcHBsaWVzM3kyb3J0NXJmMWdlcnk1enVraTV2MXdhdGNoNGlzczR4MXkwZG5leTRzdGVtczZ6MnRhYjFpcGVpNGxrMm9iYW80cmdldDR0YW1vdG9yczZyMnRvbzR4MGkzYzBpMmQwazJlYW0yY2gwbm9sb2d5OGwxbWFzZWs1bm5pczR2YTNmMWcxaDBkMWVhdGVyMnJlNmlhYTJja2V0czVlbmRhNHBzMnJlczJvbDRqMG1heHg0eDJrMG1heHg1bDFtMGFsbDRuMW8wZGF5M2t5bzNvbHMzcDFyYXkzc2hpYmE1dGFsM3VyczN3bjJ5b3RhM3MzcjBhZGUxaW5nNGluaW5nNXZlbDBlcnMwaW5zdXJhbmNlMTZ1c3QzdjJ0MXViZTJpMW5lczNzaHU0djBzMncxejJ1YTFiYW5rM3MyZzFrMW5pY29tM3ZlcnNpdHk4bzJvbDJwczJzMXkxejJ2YTBjYXRpb25zN25hMWd1YXJkN2MxZTBnYXMzbnR1cmVzNnJpc2lnbjVtw7ZnZW5zYmVyYXRlcjJ1bmcxNHNpY2hlcnVuZzEwdDJnMWkwYWplczRkZW8zZzFraW5nNGxsYXM0bjFwMXJnaW40c2ExaW9uNHZhMW8zbGFhbmRlcmVuOW4xb2RrYTNsdm8zdGUxaW5nM28yeWFnZTV1MndhbGVzMm1hcnQ0dGVyNG5nMGdvdTV0Y2gwZXM2ZWF0aGVyMGNoYW5uZWwxMmJjYW0zZXIyc2l0ZTVkMGRpbmc1aWJvMnIzZjFob3N3aG82aWVuMmtpMmxsaWFtaGlsbDluMGRvd3M0ZTFuZXJzNm1lMm9sdGVyc2tsdXdlcjExb2RzaWRlNnJrMHMybGQzdzJzMXRjMWYzeGJveDNlcm94NGlodWFuNG4yeHgyeXozeWFjaHRzNGhvbzNtYXh1bjVuZGV4NWUxb2RvYmFzaGk3Z2Eya29oYW1hNnUwdHViZTZ0MXVuM3phMHBwb3M0cmEzZXJvM2lwMm0xb25lM3VlcmljaDZ3MiIsTTA9Is61zrsxz4Uy0LHQszHQtdC7M9C00LXRgtC4NNC10Y4y0LrQsNGC0L7Qu9C40Lo20L7QvDPQvNC60LQy0L7QvTHRgdC60LLQsDbQvtC90LvQsNC50L010YDQszPRgNGD0YEy0YQy0YHQsNC50YIz0YDQsTPRg9C60YAz0pvQsNC3M9Ww1aHVtTPXmdep16jXkNecNden15XXnTPYp9io2YjYuNio2Yo12LHYp9mF2YPZiDXZhNin2LHYr9mGNNio2K3YsdmK2YY12KzYstin2KbYsTXYs9i52YjYr9mK2Kk22LnZhNmK2KfZhjXZhdi62LHYqDXZhdin2LHYp9iqNduM2LHYp9mGNdio2KfYsdiqMtiy2KfYsTTZitiq2YMz2r7Yp9ix2Ko12KrZiNmG2LM02LPZiNiv2KfZhjPYsdmK2Kk12LTYqNmD2Kk02LnYsdin2YIy2Kgy2YXYp9mGNNmB2YTYs9i32YrZhjbZgti32LEz2YPYp9ir2YjZhNmK2YM22YjZhTPZhdi12LEy2YTZitiz2YrYpzXZiNix2YrYqtin2YbZitinN9mC2Lk02YfZhdix2KfZhzXZvtin2qnYs9iq2KfZhjfagNin2LHYqjTgpJXgpYngpK4z4KSo4KWH4KSfM+CkreCkvuCksOCkpDDgpK7gpY0z4KWL4KSkNeCkuOCkguCkl+CkoOCkqDXgpqzgpr7gpoLgprLgpr414Kat4Ka+4Kaw4KakMuCnsOCmpDTgqK3gqL7gqLDgqKQ04Kqt4Kq+4Kqw4KqkNOCsreCsvuCssOCspDTgrofgrqjgr43grqTgrr/grq/grr424K6y4K6Z4K+N4K6V4K+INuCumuCuv+CumeCvjeCuleCuquCvjeCuquCvguCusOCvjTEx4LCt4LC+4LCw4LCk4LGNNeCyreCyvuCysOCypDTgtK3gtL7gtLDgtKTgtII14La94LaC4Laa4LePNOC4hOC4reC4oTPguYTguJfguKIz4Lql4Lqy4LqnM+GDkuGDlDLjgb/jgpPjgaoz44Ki44Oe44K+44OzNOOCr+ODqeOCpuODiTTjgrDjg7zjgrDjg6s044Kz44OgMuOCueODiOOCojPjgrvjg7zjg6sz44OV44Kh44OD44K344On44OzNuODneOCpOODs+ODiDTkuJbnlYwy5Lit5L+hMeWbvTHlnIsx5paH572RM+S6mumprOmAijPkvIHkuJoy5L2b5bGxMuS/oeaBrzLlgaXlurcy5YWr5Y2mMuWFrOWPuDHnm4oy5Y+w5rm+MeeBozLllYbln44x5bqXMeaghzLlmInph4ww5aSn6YWS5bqXNeWcqOe6vzLlpKfmi78y5aSp5Li75pWZM+WoseS5kDLlrrbpm7sy5bm/5LicMuW+ruWNmjLmhYjlloQy5oiR54ix5L2gM+aJi+acujLmi5vogZgy5pS/5YqhMeW6nDLmlrDliqDlnaEy6Ze7MuaXtuWwmjLmm7jnsY0y5py65p6EMua3oemprOmUoTPmuLjmiI8y5r6z6ZaAMueCueecizLnp7vliqgy57uE57uH5py65p6ENOe9keWdgDHlupcx56uZMee7nDLogZTpgJoy6LC35q2MMui0reeJqTLpgJrosqky6ZuG5ZuiMumbu+ioiuebiOenkTTpo57liKnmtaYz6aOf5ZOBMumkkOWOhTLpppnmoLzph4zmi4kz5rivMuuLt+uEtzHsu7Qy7IK87ISxMu2VnOq1rTIiLFppPSJudW1lcmljIixlbz0iYXNjaWkiLHRvPSJhbHBoYSIsSG49ImFzY2lpbnVtZXJpYyIsTm49ImFscGhhbnVtZXJpYyIsbm89ImRvbWFpbiIsWWQ9ImVtb2ppIixFMD0ic2NoZW1lIixBMD0ic2xhc2hzY2hlbWUiLHdpPSJ3aGl0ZXNwYWNlIjtmdW5jdGlvbiBPMChuLGUpe3JldHVybiBuIGluIGV8fChlW25dPVtdKSxlW25dfWZ1bmN0aW9uIFB0KG4sZSx0KXtlW1ppXSYmKGVbSG5dPSEwLGVbTm5dPSEwKSxlW2VvXSYmKGVbSG5dPSEwLGVbdG9dPSEwKSxlW0huXSYmKGVbTm5dPSEwKSxlW3RvXSYmKGVbTm5dPSEwKSxlW05uXSYmKGVbbm9dPSEwKSxlW1lkXSYmKGVbbm9dPSEwKTtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBzPU8wKHIsdCk7cy5pbmRleE9mKG4pPDAmJnMucHVzaChuKX19ZnVuY3Rpb24gTjAobixlKXtjb25zdCB0PXt9O2Zvcihjb25zdCByIGluIGUpZVtyXS5pbmRleE9mKG4pPj0wJiYodFtyXT0hMCk7cmV0dXJuIHR9ZnVuY3Rpb24gVGUobj1udWxsKXt0aGlzLmo9e30sdGhpcy5qcj1bXSx0aGlzLmpkPW51bGwsdGhpcy50PW59VGUuZ3JvdXBzPXt9O1RlLnByb3RvdHlwZT17YWNjZXB0cygpe3JldHVybiEhdGhpcy50fSxnbyhuKXtjb25zdCBlPXRoaXMsdD1lLmpbbl07aWYodClyZXR1cm4gdDtmb3IobGV0IHI9MDtyPGUuanIubGVuZ3RoO3IrKyl7Y29uc3Qgcz1lLmpyW3JdWzBdLGk9ZS5qcltyXVsxXTtpZihpJiZzLnRlc3QobikpcmV0dXJuIGl9cmV0dXJuIGUuamR9LGhhcyhuLGU9ITEpe3JldHVybiBlP24gaW4gdGhpcy5qOiEhdGhpcy5nbyhuKX0sdGEobixlLHQscil7Zm9yKGxldCBzPTA7czxuLmxlbmd0aDtzKyspdGhpcy50dChuW3NdLGUsdCxyKX0sdHIobixlLHQscil7cj1yfHxUZS5ncm91cHM7bGV0IHM7cmV0dXJuIGUmJmUuaj9zPWU6KHM9bmV3IFRlKGUpLHQmJnImJlB0KGUsdCxyKSksdGhpcy5qci5wdXNoKFtuLHNdKSxzfSx0cyhuLGUsdCxyKXtsZXQgcz10aGlzO2NvbnN0IGk9bi5sZW5ndGg7aWYoIWkpcmV0dXJuIHM7Zm9yKGxldCBvPTA7bzxpLTE7bysrKXM9cy50dChuW29dKTtyZXR1cm4gcy50dChuW2ktMV0sZSx0LHIpfSx0dChuLGUsdCxyKXtyPXJ8fFRlLmdyb3Vwcztjb25zdCBzPXRoaXM7aWYoZSYmZS5qKXJldHVybiBzLmpbbl09ZSxlO2NvbnN0IGk9ZTtsZXQgbyxsPXMuZ28obik7aWYobD8obz1uZXcgVGUsT2JqZWN0LmFzc2lnbihvLmosbC5qKSxvLmpyLnB1c2guYXBwbHkoby5qcixsLmpyKSxvLmpkPWwuamQsby50PWwudCk6bz1uZXcgVGUsaSl7aWYocilpZihvLnQmJnR5cGVvZiBvLnQ9PSJzdHJpbmciKXtjb25zdCBhPU9iamVjdC5hc3NpZ24oTjAoby50LHIpLHQpO1B0KGksYSxyKX1lbHNlIHQmJlB0KGksdCxyKTtvLnQ9aX1yZXR1cm4gcy5qW25dPW8sb319O2NvbnN0IEI9KG4sZSx0LHIscyk9Pm4udGEoZSx0LHIscyksWj0obixlLHQscixzKT0+bi50cihlLHQscixzKSxqYT0obixlLHQscixzKT0+bi50cyhlLHQscixzKSxUPShuLGUsdCxyLHMpPT5uLnR0KGUsdCxyLHMpLGV0PSJXT1JEIixybz0iVVdPUkQiLFpkPSJBU0NJSU5VTUVSSUNBTCIsZWg9IkFMUEhBTlVNRVJJQ0FMIix0cj0iTE9DQUxIT1NUIixzbz0iVExEIixpbz0iVVRMRCIsUHI9IlNDSEVNRSIsbm49IlNMQVNIX1NDSEVNRSIsdGw9Ik5VTSIsb289IldTIixubD0iTkwiLEZuPSJPUEVOQlJBQ0UiLFZuPSJDTE9TRUJSQUNFIix0cz0iT1BFTkJSQUNLRVQiLG5zPSJDTE9TRUJSQUNLRVQiLHJzPSJPUEVOUEFSRU4iLHNzPSJDTE9TRVBBUkVOIixpcz0iT1BFTkFOR0xFQlJBQ0tFVCIsbHM9IkNMT1NFQU5HTEVCUkFDS0VUIixhcz0iRlVMTFdJRFRITEVGVFBBUkVOIixjcz0iRlVMTFdJRFRIUklHSFRQQVJFTiIsdXM9IkxFRlRDT1JORVJCUkFDS0VUIixkcz0iUklHSFRDT1JORVJCUkFDS0VUIixocz0iTEVGVFdISVRFQ09STkVSQlJBQ0tFVCIsZnM9IlJJR0hUV0hJVEVDT1JORVJCUkFDS0VUIixwcz0iRlVMTFdJRFRITEVTU1RIQU4iLG1zPSJGVUxMV0lEVEhHUkVBVEVSVEhBTiIsZ3M9IkFNUEVSU0FORCIseXM9IkFQT1NUUk9QSEUiLGtzPSJBU1RFUklTSyIsbXQ9IkFUIixicz0iQkFDS1NMQVNIIix4cz0iQkFDS1RJQ0siLHdzPSJDQVJFVCIsYnQ9IkNPTE9OIixybD0iQ09NTUEiLHZzPSJET0xMQVIiLHFlPSJET1QiLFNzPSJFUVVBTFMiLHNsPSJFWENMQU1BVElPTiIsTmU9IkhZUEhFTiIsVW49IlBFUkNFTlQiLENzPSJQSVBFIixUcz0iUExVUyIsTXM9IlBPVU5EIixqbj0iUVVFUlkiLGlsPSJRVU9URSIsdGg9IkZVTExXSURUSE1JRERMRURPVCIsb2w9IlNFTUkiLFdlPSJTTEFTSCIscW49IlRJTERFIixFcz0iVU5ERVJTQ09SRSIsbmg9IkVNT0pJIixBcz0iU1lNIjt2YXIgcmg9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQUxQSEFOVU1FUklDQUw6ZWgsQU1QRVJTQU5EOmdzLEFQT1NUUk9QSEU6eXMsQVNDSUlOVU1FUklDQUw6WmQsQVNURVJJU0s6a3MsQVQ6bXQsQkFDS1NMQVNIOmJzLEJBQ0tUSUNLOnhzLENBUkVUOndzLENMT1NFQU5HTEVCUkFDS0VUOmxzLENMT1NFQlJBQ0U6Vm4sQ0xPU0VCUkFDS0VUOm5zLENMT1NFUEFSRU46c3MsQ09MT046YnQsQ09NTUE6cmwsRE9MTEFSOnZzLERPVDpxZSxFTU9KSTpuaCxFUVVBTFM6U3MsRVhDTEFNQVRJT046c2wsRlVMTFdJRFRIR1JFQVRFUlRIQU46bXMsRlVMTFdJRFRITEVGVFBBUkVOOmFzLEZVTExXSURUSExFU1NUSEFOOnBzLEZVTExXSURUSE1JRERMRURPVDp0aCxGVUxMV0lEVEhSSUdIVFBBUkVOOmNzLEhZUEhFTjpOZSxMRUZUQ09STkVSQlJBQ0tFVDp1cyxMRUZUV0hJVEVDT1JORVJCUkFDS0VUOmhzLExPQ0FMSE9TVDp0cixOTDpubCxOVU06dGwsT1BFTkFOR0xFQlJBQ0tFVDppcyxPUEVOQlJBQ0U6Rm4sT1BFTkJSQUNLRVQ6dHMsT1BFTlBBUkVOOnJzLFBFUkNFTlQ6VW4sUElQRTpDcyxQTFVTOlRzLFBPVU5EOk1zLFFVRVJZOmpuLFFVT1RFOmlsLFJJR0hUQ09STkVSQlJBQ0tFVDpkcyxSSUdIVFdISVRFQ09STkVSQlJBQ0tFVDpmcyxTQ0hFTUU6UHIsU0VNSTpvbCxTTEFTSDpXZSxTTEFTSF9TQ0hFTUU6bm4sU1lNOkFzLFRJTERFOnFuLFRMRDpzbyxVTkRFUlNDT1JFOkVzLFVUTEQ6aW8sVVdPUkQ6cm8sV09SRDpldCxXUzpvb30pO2NvbnN0IFhlPS9bYS16XS8sdm49bmV3IFJlZ0V4cCgiXFxwe0x9IiwidSIpLHZpPW5ldyBSZWdFeHAoIlxccHtFbW9qaX0iLCJ1IiksWWU9L1xkLyxTaT0vXHMvLHFhPSJcciIsQ2k9YApgLFIwPSLvuI8iLEkwPSLigI0iLFRpPSLvv7wiO2xldCBUcj1udWxsLE1yPW51bGw7ZnVuY3Rpb24gRDAobj1bXSl7Y29uc3QgZT17fTtUZS5ncm91cHM9ZTtjb25zdCB0PW5ldyBUZTtUcj09bnVsbCYmKFRyPVdhKFQwKSksTXI9PW51bGwmJihNcj1XYShNMCkpLFQodCwiJyIseXMpLFQodCwieyIsRm4pLFQodCwifSIsVm4pLFQodCwiWyIsdHMpLFQodCwiXSIsbnMpLFQodCwiKCIscnMpLFQodCwiKSIsc3MpLFQodCwiPCIsaXMpLFQodCwiPiIsbHMpLFQodCwi77yIIixhcyksVCh0LCLvvIkiLGNzKSxUKHQsIuOAjCIsdXMpLFQodCwi44CNIixkcyksVCh0LCLjgI4iLGhzKSxUKHQsIuOAjyIsZnMpLFQodCwi77ycIixwcyksVCh0LCLvvJ4iLG1zKSxUKHQsIiYiLGdzKSxUKHQsIioiLGtzKSxUKHQsIkAiLG10KSxUKHQsImAiLHhzKSxUKHQsIl4iLHdzKSxUKHQsIjoiLGJ0KSxUKHQsIiwiLHJsKSxUKHQsIiQiLHZzKSxUKHQsIi4iLHFlKSxUKHQsIj0iLFNzKSxUKHQsIiEiLHNsKSxUKHQsIi0iLE5lKSxUKHQsIiUiLFVuKSxUKHQsInwiLENzKSxUKHQsIisiLFRzKSxUKHQsIiMiLE1zKSxUKHQsIj8iLGpuKSxUKHQsJyInLGlsKSxUKHQsIi8iLFdlKSxUKHQsIjsiLG9sKSxUKHQsIn4iLHFuKSxUKHQsIl8iLEVzKSxUKHQsIlxcIixicyksVCh0LCLjg7siLHRoKTtjb25zdCByPVoodCxZZSx0bCx7W1ppXTohMH0pO1oocixZZSxyKTtjb25zdCBzPVoocixYZSxaZCx7W0huXTohMH0pLGk9WihyLHZuLGVoLHtbTm5dOiEwfSksbz1aKHQsWGUsZXQse1tlb106ITB9KTtaKG8sWWUscyksWihvLFhlLG8pLFoocyxZZSxzKSxaKHMsWGUscyk7Y29uc3QgbD1aKHQsdm4scm8se1t0b106ITB9KTtaKGwsWGUpLFoobCxZZSxpKSxaKGwsdm4sbCksWihpLFllLGkpLFooaSxYZSksWihpLHZuLGkpO2NvbnN0IGE9VCh0LENpLG5sLHtbd2ldOiEwfSksYz1UKHQscWEsb28se1t3aV06ITB9KSx1PVoodCxTaSxvbyx7W3dpXTohMH0pO1QodCxUaSx1KSxUKGMsQ2ksYSksVChjLFRpLHUpLFooYyxTaSx1KSxUKHUscWEpLFQodSxDaSksWih1LFNpLHUpLFQodSxUaSx1KTtjb25zdCBkPVoodCx2aSxuaCx7W1lkXTohMH0pO1QoZCwiIyIpLFooZCx2aSxkKSxUKGQsUjAsZCk7Y29uc3QgaD1UKGQsSTApO1QoaCwiIyIpLFooaCx2aSxkKTtjb25zdCBmPVtbWGUsb10sW1llLHNdXSxwPVtbWGUsbnVsbF0sW3ZuLGxdLFtZZSxpXV07Zm9yKGxldCBtPTA7bTxUci5sZW5ndGg7bSsrKWR0KHQsVHJbbV0sc28sZXQsZik7Zm9yKGxldCBtPTA7bTxNci5sZW5ndGg7bSsrKWR0KHQsTXJbbV0saW8scm8scCk7UHQoc28se3RsZDohMCxhc2NpaTohMH0sZSksUHQoaW8se3V0bGQ6ITAsYWxwaGE6ITB9LGUpLGR0KHQsImZpbGUiLFByLGV0LGYpLGR0KHQsIm1haWx0byIsUHIsZXQsZiksZHQodCwiaHR0cCIsbm4sZXQsZiksZHQodCwiaHR0cHMiLG5uLGV0LGYpLGR0KHQsImZ0cCIsbm4sZXQsZiksZHQodCwiZnRwcyIsbm4sZXQsZiksUHQoUHIse3NjaGVtZTohMCxhc2NpaTohMH0sZSksUHQobm4se3NsYXNoc2NoZW1lOiEwLGFzY2lpOiEwfSxlKSxuPW4uc29ydCgobSxnKT0+bVswXT5nWzBdPzE6LTEpO2ZvcihsZXQgbT0wO208bi5sZW5ndGg7bSsrKXtjb25zdCBnPW5bbV1bMF0saz1uW21dWzFdP3tbRTBdOiEwfTp7W0EwXTohMH07Zy5pbmRleE9mKCItIik+PTA/a1tub109ITA6WGUudGVzdChnKT9ZZS50ZXN0KGcpP2tbSG5dPSEwOmtbZW9dPSEwOmtbWmldPSEwLGphKHQsZyxnLGspfXJldHVybiBqYSh0LCJsb2NhbGhvc3QiLHRyLHthc2NpaTohMH0pLHQuamQ9bmV3IFRlKEFzKSx7c3RhcnQ6dCx0b2tlbnM6T2JqZWN0LmFzc2lnbih7Z3JvdXBzOmV9LHJoKX19ZnVuY3Rpb24gc2gobixlKXtjb25zdCB0PUwwKGUucmVwbGFjZSgvW0EtWl0vZyxsPT5sLnRvTG93ZXJDYXNlKCkpKSxyPXQubGVuZ3RoLHM9W107bGV0IGk9MCxvPTA7Zm9yKDtvPHI7KXtsZXQgbD1uLGE9bnVsbCxjPTAsdT1udWxsLGQ9LTEsaD0tMTtmb3IoO288ciYmKGE9bC5nbyh0W29dKSk7KWw9YSxsLmFjY2VwdHMoKT8oZD0wLGg9MCx1PWwpOmQ+PTAmJihkKz10W29dLmxlbmd0aCxoKyspLGMrPXRbb10ubGVuZ3RoLGkrPXRbb10ubGVuZ3RoLG8rKztpLT1kLG8tPWgsYy09ZCxzLnB1c2goe3Q6dS50LHY6ZS5zbGljZShpLWMsaSksczppLWMsZTppfSl9cmV0dXJuIHN9ZnVuY3Rpb24gTDAobil7Y29uc3QgZT1bXSx0PW4ubGVuZ3RoO2xldCByPTA7Zm9yKDtyPHQ7KXtsZXQgcz1uLmNoYXJDb2RlQXQociksaSxvPXM8NTUyOTZ8fHM+NTYzMTl8fHIrMT09PXR8fChpPW4uY2hhckNvZGVBdChyKzEpKTw1NjMyMHx8aT41NzM0Mz9uW3JdOm4uc2xpY2UocixyKzIpO2UucHVzaChvKSxyKz1vLmxlbmd0aH1yZXR1cm4gZX1mdW5jdGlvbiBkdChuLGUsdCxyLHMpe2xldCBpO2NvbnN0IG89ZS5sZW5ndGg7Zm9yKGxldCBsPTA7bDxvLTE7bCsrKXtjb25zdCBhPWVbbF07bi5qW2FdP2k9bi5qW2FdOihpPW5ldyBUZShyKSxpLmpyPXMuc2xpY2UoKSxuLmpbYV09aSksbj1pfXJldHVybiBpPW5ldyBUZSh0KSxpLmpyPXMuc2xpY2UoKSxuLmpbZVtvLTFdXT1pLGl9ZnVuY3Rpb24gV2Eobil7Y29uc3QgZT1bXSx0PVtdO2xldCByPTAscz0iMDEyMzQ1Njc4OSI7Zm9yKDtyPG4ubGVuZ3RoOyl7bGV0IGk9MDtmb3IoO3MuaW5kZXhPZihuW3IraV0pPj0wOylpKys7aWYoaT4wKXtlLnB1c2godC5qb2luKCIiKSk7Zm9yKGxldCBvPXBhcnNlSW50KG4uc3Vic3RyaW5nKHIscitpKSwxMCk7bz4wO28tLSl0LnBvcCgpO3IrPWl9ZWxzZSB0LnB1c2gobltyXSkscisrfXJldHVybiBlfWNvbnN0IG5yPXtkZWZhdWx0UHJvdG9jb2w6Imh0dHAiLGV2ZW50czpudWxsLGZvcm1hdDpLYSxmb3JtYXRIcmVmOkthLG5sMmJyOiExLHRhZ05hbWU6ImEiLHRhcmdldDpudWxsLHJlbDpudWxsLHZhbGlkYXRlOiEwLHRydW5jYXRlOjEvMCxjbGFzc05hbWU6bnVsbCxhdHRyaWJ1dGVzOm51bGwsaWdub3JlVGFnczpbXSxyZW5kZXI6bnVsbH07ZnVuY3Rpb24gbGwobixlPW51bGwpe2xldCB0PU9iamVjdC5hc3NpZ24oe30sbnIpO24mJih0PU9iamVjdC5hc3NpZ24odCxuIGluc3RhbmNlb2YgbGw/bi5vOm4pKTtjb25zdCByPXQuaWdub3JlVGFncyxzPVtdO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXMucHVzaChyW2ldLnRvVXBwZXJDYXNlKCkpO3RoaXMubz10LGUmJih0aGlzLmRlZmF1bHRSZW5kZXI9ZSksdGhpcy5pZ25vcmVUYWdzPXN9bGwucHJvdG90eXBlPXtvOm5yLGlnbm9yZVRhZ3M6W10sZGVmYXVsdFJlbmRlcihuKXtyZXR1cm4gbn0sY2hlY2sobil7cmV0dXJuIHRoaXMuZ2V0KCJ2YWxpZGF0ZSIsbi50b1N0cmluZygpLG4pfSxnZXQobixlLHQpe2NvbnN0IHI9ZSE9bnVsbDtsZXQgcz10aGlzLm9bbl07cmV0dXJuIHMmJih0eXBlb2Ygcz09Im9iamVjdCI/KHM9dC50IGluIHM/c1t0LnRdOm5yW25dLHR5cGVvZiBzPT0iZnVuY3Rpb24iJiZyJiYocz1zKGUsdCkpKTp0eXBlb2Ygcz09ImZ1bmN0aW9uIiYmciYmKHM9cyhlLHQudCx0KSkscyl9LGdldE9iaihuLGUsdCl7bGV0IHI9dGhpcy5vW25dO3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmZSE9bnVsbCYmKHI9cihlLHQudCx0KSkscn0scmVuZGVyKG4pe2NvbnN0IGU9bi5yZW5kZXIodGhpcyk7cmV0dXJuKHRoaXMuZ2V0KCJyZW5kZXIiLG51bGwsbil8fHRoaXMuZGVmYXVsdFJlbmRlcikoZSxuLnQsbil9fTtmdW5jdGlvbiBLYShuKXtyZXR1cm4gbn1mdW5jdGlvbiBpaChuLGUpe3RoaXMudD0idG9rZW4iLHRoaXMudj1uLHRoaXMudGs9ZX1paC5wcm90b3R5cGU9e2lzTGluazohMSx0b1N0cmluZygpe3JldHVybiB0aGlzLnZ9LHRvSHJlZihuKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx0b0Zvcm1hdHRlZFN0cmluZyhuKXtjb25zdCBlPXRoaXMudG9TdHJpbmcoKSx0PW4uZ2V0KCJ0cnVuY2F0ZSIsZSx0aGlzKSxyPW4uZ2V0KCJmb3JtYXQiLGUsdGhpcyk7cmV0dXJuIHQmJnIubGVuZ3RoPnQ/ci5zdWJzdHJpbmcoMCx0KSsi4oCmIjpyfSx0b0Zvcm1hdHRlZEhyZWYobil7cmV0dXJuIG4uZ2V0KCJmb3JtYXRIcmVmIix0aGlzLnRvSHJlZihuLmdldCgiZGVmYXVsdFByb3RvY29sIikpLHRoaXMpfSxzdGFydEluZGV4KCl7cmV0dXJuIHRoaXMudGtbMF0uc30sZW5kSW5kZXgoKXtyZXR1cm4gdGhpcy50a1t0aGlzLnRrLmxlbmd0aC0xXS5lfSx0b09iamVjdChuPW5yLmRlZmF1bHRQcm90b2NvbCl7cmV0dXJue3R5cGU6dGhpcy50LHZhbHVlOnRoaXMudG9TdHJpbmcoKSxpc0xpbms6dGhpcy5pc0xpbmssaHJlZjp0aGlzLnRvSHJlZihuKSxzdGFydDp0aGlzLnN0YXJ0SW5kZXgoKSxlbmQ6dGhpcy5lbmRJbmRleCgpfX0sdG9Gb3JtYXR0ZWRPYmplY3Qobil7cmV0dXJue3R5cGU6dGhpcy50LHZhbHVlOnRoaXMudG9Gb3JtYXR0ZWRTdHJpbmcobiksaXNMaW5rOnRoaXMuaXNMaW5rLGhyZWY6dGhpcy50b0Zvcm1hdHRlZEhyZWYobiksc3RhcnQ6dGhpcy5zdGFydEluZGV4KCksZW5kOnRoaXMuZW5kSW5kZXgoKX19LHZhbGlkYXRlKG4pe3JldHVybiBuLmdldCgidmFsaWRhdGUiLHRoaXMudG9TdHJpbmcoKSx0aGlzKX0scmVuZGVyKG4pe2NvbnN0IGU9dGhpcyx0PXRoaXMudG9IcmVmKG4uZ2V0KCJkZWZhdWx0UHJvdG9jb2wiKSkscj1uLmdldCgiZm9ybWF0SHJlZiIsdCx0aGlzKSxzPW4uZ2V0KCJ0YWdOYW1lIix0LGUpLGk9dGhpcy50b0Zvcm1hdHRlZFN0cmluZyhuKSxvPXt9LGw9bi5nZXQoImNsYXNzTmFtZSIsdCxlKSxhPW4uZ2V0KCJ0YXJnZXQiLHQsZSksYz1uLmdldCgicmVsIix0LGUpLHU9bi5nZXRPYmooImF0dHJpYnV0ZXMiLHQsZSksZD1uLmdldE9iaigiZXZlbnRzIix0LGUpO3JldHVybiBvLmhyZWY9cixsJiYoby5jbGFzcz1sKSxhJiYoby50YXJnZXQ9YSksYyYmKG8ucmVsPWMpLHUmJk9iamVjdC5hc3NpZ24obyx1KSx7dGFnTmFtZTpzLGF0dHJpYnV0ZXM6byxjb250ZW50OmksZXZlbnRMaXN0ZW5lcnM6ZH19fTtmdW5jdGlvbiBLcyhuLGUpe2NsYXNzIHQgZXh0ZW5kcyBpaHtjb25zdHJ1Y3RvcihzLGkpe3N1cGVyKHMsaSksdGhpcy50PW59fWZvcihjb25zdCByIGluIGUpdC5wcm90b3R5cGVbcl09ZVtyXTtyZXR1cm4gdC50PW4sdH1jb25zdCBKYT1LcygiZW1haWwiLHtpc0xpbms6ITAsdG9IcmVmKCl7cmV0dXJuIm1haWx0bzoiK3RoaXMudG9TdHJpbmcoKX19KSxHYT1LcygidGV4dCIpLFAwPUtzKCJubCIpLEVyPUtzKCJ1cmwiLHtpc0xpbms6ITAsdG9IcmVmKG49bnIuZGVmYXVsdFByb3RvY29sKXtyZXR1cm4gdGhpcy5oYXNQcm90b2NvbCgpP3RoaXMudjpgJHtufTovLyR7dGhpcy52fWB9LGhhc1Byb3RvY29sKCl7Y29uc3Qgbj10aGlzLnRrO3JldHVybiBuLmxlbmd0aD49MiYmblswXS50IT09dHImJm5bMV0udD09PWJ0fX0pLE9lPW49Pm5ldyBUZShuKTtmdW5jdGlvbiB6MCh7Z3JvdXBzOm59KXtjb25zdCBlPW4uZG9tYWluLmNvbmNhdChbZ3Msa3MsbXQsYnMseHMsd3MsdnMsU3MsTmUsdGwsVW4sQ3MsVHMsTXMsV2UsQXMscW4sRXNdKSx0PVt5cyxidCxybCxxZSxzbCxVbixqbixpbCxvbCxpcyxscyxGbixWbixucyx0cyxycyxzcyxhcyxjcyx1cyxkcyxocyxmcyxwcyxtc10scj1bZ3MseXMsa3MsYnMseHMsd3MsdnMsU3MsTmUsRm4sVm4sVW4sQ3MsVHMsTXMsam4sV2UsQXMscW4sRXNdLHM9T2UoKSxpPVQocyxxbik7QihpLHIsaSksQihpLG4uZG9tYWluLGkpO2NvbnN0IG89T2UoKSxsPU9lKCksYT1PZSgpO0IocyxuLmRvbWFpbixvKSxCKHMsbi5zY2hlbWUsbCksQihzLG4uc2xhc2hzY2hlbWUsYSksQihvLHIsaSksQihvLG4uZG9tYWluLG8pO2NvbnN0IGM9VChvLG10KTtUKGksbXQsYyksVChsLG10LGMpLFQoYSxtdCxjKTtjb25zdCB1PVQoaSxxZSk7Qih1LHIsaSksQih1LG4uZG9tYWluLGkpO2NvbnN0IGQ9T2UoKTtCKGMsbi5kb21haW4sZCksQihkLG4uZG9tYWluLGQpO2NvbnN0IGg9VChkLHFlKTtCKGgsbi5kb21haW4sZCk7Y29uc3QgZj1PZShKYSk7QihoLG4udGxkLGYpLEIoaCxuLnV0bGQsZiksVChjLHRyLGYpO2NvbnN0IHA9VChkLE5lKTtUKHAsTmUscCksQihwLG4uZG9tYWluLGQpLEIoZixuLmRvbWFpbixkKSxUKGYscWUsaCksVChmLE5lLHApO2NvbnN0IG09VChmLGJ0KTtCKG0sbi5udW1lcmljLEphKTtjb25zdCBnPVQobyxOZSkseT1UKG8scWUpO1QoZyxOZSxnKSxCKGcsbi5kb21haW4sbyksQih5LHIsaSksQih5LG4uZG9tYWluLG8pO2NvbnN0IGs9T2UoRXIpO0IoeSxuLnRsZCxrKSxCKHksbi51dGxkLGspLEIoayxuLmRvbWFpbixvKSxCKGsscixpKSxUKGsscWUseSksVChrLE5lLGcpLFQoayxtdCxjKTtjb25zdCBiPVQoayxidCksdz1PZShFcik7QihiLG4ubnVtZXJpYyx3KTtjb25zdCB4PU9lKEVyKSx2PU9lKCk7Qih4LGUseCksQih4LHQsdiksQih2LGUseCksQih2LHQsdiksVChrLFdlLHgpLFQodyxXZSx4KTtjb25zdCBDPVQobCxidCksTT1UKGEsYnQpLFI9VChNLFdlKSxPPVQoUixXZSk7QihsLG4uZG9tYWluLG8pLFQobCxxZSx5KSxUKGwsTmUsZyksQihhLG4uZG9tYWluLG8pLFQoYSxxZSx5KSxUKGEsTmUsZyksQihDLG4uZG9tYWluLHgpLFQoQyxXZSx4KSxUKEMsam4seCksQihPLG4uZG9tYWluLHgpLEIoTyxlLHgpLFQoTyxXZSx4KTtjb25zdCBQPVtbRm4sVm5dLFt0cyxuc10sW3JzLHNzXSxbaXMsbHNdLFthcyxjc10sW3VzLGRzXSxbaHMsZnNdLFtwcyxtc11dO2ZvcihsZXQgRj0wO0Y8UC5sZW5ndGg7RisrKXtjb25zdFtfLExdPVBbRl0sSD1UKHgsXyk7VCh2LF8sSCksVChILEwseCk7Y29uc3QgbmU9T2UoRXIpO0IoSCxlLG5lKTtjb25zdCBvZT1PZSgpO0IoSCx0KSxCKG5lLGUsbmUpLEIobmUsdCxvZSksQihvZSxlLG5lKSxCKG9lLHQsb2UpLFQobmUsTCx4KSxUKG9lLEwseCl9cmV0dXJuIFQocyx0cixrKSxUKHMsbmwsUDApLHtzdGFydDpzLHRva2VuczpyaH19ZnVuY3Rpb24gJDAobixlLHQpe2xldCByPXQubGVuZ3RoLHM9MCxpPVtdLG89W107Zm9yKDtzPHI7KXtsZXQgbD1uLGE9bnVsbCxjPW51bGwsdT0wLGQ9bnVsbCxoPS0xO2Zvcig7czxyJiYhKGE9bC5nbyh0W3NdLnQpKTspby5wdXNoKHRbcysrXSk7Zm9yKDtzPHImJihjPWF8fGwuZ28odFtzXS50KSk7KWE9bnVsbCxsPWMsbC5hY2NlcHRzKCk/KGg9MCxkPWwpOmg+PTAmJmgrKyxzKyssdSsrO2lmKGg8MClzLT11LHM8ciYmKG8ucHVzaCh0W3NdKSxzKyspO2Vsc2V7by5sZW5ndGg+MCYmKGkucHVzaChNaShHYSxlLG8pKSxvPVtdKSxzLT1oLHUtPWg7Y29uc3QgZj1kLnQscD10LnNsaWNlKHMtdSxzKTtpLnB1c2goTWkoZixlLHApKX19cmV0dXJuIG8ubGVuZ3RoPjAmJmkucHVzaChNaShHYSxlLG8pKSxpfWZ1bmN0aW9uIE1pKG4sZSx0KXtjb25zdCByPXRbMF0ucyxzPXRbdC5sZW5ndGgtMV0uZSxpPWUuc2xpY2UocixzKTtyZXR1cm4gbmV3IG4oaSx0KX1jb25zdCBCMD10eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUmJmNvbnNvbGUud2Fybnx8KCgpPT57fSksXzA9InVudGlsIG1hbnVhbCBjYWxsIG9mIGxpbmtpZnkuaW5pdCgpLiBSZWdpc3RlciBhbGwgc2NoZW1lcyBhbmQgcGx1Z2lucyBiZWZvcmUgaW52b2tpbmcgbGlua2lmeSB0aGUgZmlyc3QgdGltZS4iLFg9e3NjYW5uZXI6bnVsbCxwYXJzZXI6bnVsbCx0b2tlblF1ZXVlOltdLHBsdWdpblF1ZXVlOltdLGN1c3RvbVNjaGVtZXM6W10saW5pdGlhbGl6ZWQ6ITF9O2Z1bmN0aW9uIEgwKCl7cmV0dXJuIFRlLmdyb3Vwcz17fSxYLnNjYW5uZXI9bnVsbCxYLnBhcnNlcj1udWxsLFgudG9rZW5RdWV1ZT1bXSxYLnBsdWdpblF1ZXVlPVtdLFguY3VzdG9tU2NoZW1lcz1bXSxYLmluaXRpYWxpemVkPSExLFh9ZnVuY3Rpb24gUWEobixlPSExKXtpZihYLmluaXRpYWxpemVkJiZCMChgbGlua2lmeWpzOiBhbHJlYWR5IGluaXRpYWxpemVkIC0gd2lsbCBub3QgcmVnaXN0ZXIgY3VzdG9tIHNjaGVtZSAiJHtufSIgJHtfMH1gKSwhL15bMC05YS16XSsoLVswLTlhLXpdKykqJC8udGVzdChuKSl0aHJvdyBuZXcgRXJyb3IoYGxpbmtpZnlqczogaW5jb3JyZWN0IHNjaGVtZSBmb3JtYXQuCjEuIE11c3Qgb25seSBjb250YWluIGRpZ2l0cywgbG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMgb3IgIi0iCjIuIENhbm5vdCBzdGFydCBvciBlbmQgd2l0aCAiLSIKMy4gIi0iIGNhbm5vdCByZXBlYXRgKTtYLmN1c3RvbVNjaGVtZXMucHVzaChbbixlXSl9ZnVuY3Rpb24gRjAoKXtYLnNjYW5uZXI9RDAoWC5jdXN0b21TY2hlbWVzKTtmb3IobGV0IG49MDtuPFgudG9rZW5RdWV1ZS5sZW5ndGg7bisrKVgudG9rZW5RdWV1ZVtuXVsxXSh7c2Nhbm5lcjpYLnNjYW5uZXJ9KTtYLnBhcnNlcj16MChYLnNjYW5uZXIudG9rZW5zKTtmb3IobGV0IG49MDtuPFgucGx1Z2luUXVldWUubGVuZ3RoO24rKylYLnBsdWdpblF1ZXVlW25dWzFdKHtzY2FubmVyOlguc2Nhbm5lcixwYXJzZXI6WC5wYXJzZXJ9KTtyZXR1cm4gWC5pbml0aWFsaXplZD0hMCxYfWZ1bmN0aW9uIGFsKG4pe3JldHVybiBYLmluaXRpYWxpemVkfHxGMCgpLCQwKFgucGFyc2VyLnN0YXJ0LG4sc2goWC5zY2FubmVyLnN0YXJ0LG4pKX1hbC5zY2FuPXNoO2Z1bmN0aW9uIG9oKG4sZT1udWxsLHQ9bnVsbCl7aWYoZSYmdHlwZW9mIGU9PSJvYmplY3QiKXtpZih0KXRocm93IEVycm9yKGBsaW5raWZ5anM6IEludmFsaWQgbGluayB0eXBlICR7ZX07IG11c3QgYmUgYSBzdHJpbmdgKTt0PWUsZT1udWxsfWNvbnN0IHI9bmV3IGxsKHQpLHM9YWwobiksaT1bXTtmb3IobGV0IG89MDtvPHMubGVuZ3RoO28rKyl7Y29uc3QgbD1zW29dO2wuaXNMaW5rJiYoIWV8fGwudD09PWUpJiZyLmNoZWNrKGwpJiZpLnB1c2gobC50b0Zvcm1hdHRlZE9iamVjdChyKSl9cmV0dXJuIGl9dmFyIGNsPSJbXDAtIMKg4ZqA4aCO4oCALVx1MjAyOeKBn+OAgF0iLFYwPW5ldyBSZWdFeHAoY2wpLFUwPW5ldyBSZWdFeHAoYCR7Y2x9JGApLGowPW5ldyBSZWdFeHAoY2wsImciKTtmdW5jdGlvbiBxMChuKXtyZXR1cm4gbi5sZW5ndGg9PT0xP25bMF0uaXNMaW5rOm4ubGVuZ3RoPT09MyYmblsxXS5pc0xpbms/WyIoKSIsIltdIl0uaW5jbHVkZXMoblswXS52YWx1ZStuWzJdLnZhbHVlKTohMX1mdW5jdGlvbiBXMChuKXtyZXR1cm4gbmV3IEcoe2tleTpuZXcgcSgiYXV0b2xpbmsiKSxhcHBlbmRUcmFuc2FjdGlvbjooZSx0LHIpPT57Y29uc3Qgcz1lLnNvbWUoYz0+Yy5kb2NDaGFuZ2VkKSYmIXQuZG9jLmVxKHIuZG9jKSxpPWUuc29tZShjPT5jLmdldE1ldGEoInByZXZlbnRBdXRvbGluayIpKTtpZighc3x8aSlyZXR1cm47Y29uc3R7dHI6b309cixsPVl1KHQuZG9jLFsuLi5lXSk7aWYoaWQobCkuZm9yRWFjaCgoe25ld1JhbmdlOmN9KT0+e2NvbnN0IHU9amcoci5kb2MsYyxmPT5mLmlzVGV4dGJsb2NrKTtsZXQgZCxoO2lmKHUubGVuZ3RoPjEpZD11WzBdLGg9ci5kb2MudGV4dEJldHdlZW4oZC5wb3MsZC5wb3MrZC5ub2RlLm5vZGVTaXplLHZvaWQgMCwiICIpO2Vsc2UgaWYodS5sZW5ndGgpe2NvbnN0IGY9ci5kb2MudGV4dEJldHdlZW4oYy5mcm9tLGMudG8sIiAiLCIgIik7aWYoIVUwLnRlc3QoZikpcmV0dXJuO2Q9dVswXSxoPXIuZG9jLnRleHRCZXR3ZWVuKGQucG9zLGMudG8sdm9pZCAwLCIgIil9aWYoZCYmaCl7Y29uc3QgZj1oLnNwbGl0KFYwKS5maWx0ZXIoQm9vbGVhbik7aWYoZi5sZW5ndGg8PTApcmV0dXJuITE7Y29uc3QgcD1mW2YubGVuZ3RoLTFdLG09ZC5wb3MraC5sYXN0SW5kZXhPZihwKTtpZighcClyZXR1cm4hMTtjb25zdCBnPWFsKHApLm1hcCh5PT55LnRvT2JqZWN0KG4uZGVmYXVsdFByb3RvY29sKSk7aWYoIXEwKGcpKXJldHVybiExO2cuZmlsdGVyKHk9PnkuaXNMaW5rKS5tYXAoeT0+KHsuLi55LGZyb206bSt5LnN0YXJ0KzEsdG86bSt5LmVuZCsxfSkpLmZpbHRlcih5PT5yLnNjaGVtYS5tYXJrcy5jb2RlPyFyLmRvYy5yYW5nZUhhc01hcmsoeS5mcm9tLHkudG8sci5zY2hlbWEubWFya3MuY29kZSk6ITApLmZpbHRlcih5PT5uLnZhbGlkYXRlKHkudmFsdWUpKS5maWx0ZXIoeT0+bi5zaG91bGRBdXRvTGluayh5LnZhbHVlKSkuZm9yRWFjaCh5PT57Qm8oeS5mcm9tLHkudG8sci5kb2MpLnNvbWUoaz0+ay5tYXJrLnR5cGU9PT1uLnR5cGUpfHxvLmFkZE1hcmsoeS5mcm9tLHkudG8sbi50eXBlLmNyZWF0ZSh7aHJlZjp5LmhyZWZ9KSl9KX19KSwhIW8uc3RlcHMubGVuZ3RoKXJldHVybiBvfX0pfWZ1bmN0aW9uIEswKG4pe3JldHVybiBuZXcgRyh7a2V5Om5ldyBxKCJoYW5kbGVDbGlja0xpbmsiKSxwcm9wczp7aGFuZGxlQ2xpY2s6KGUsdCxyKT0+e3ZhciBzLGk7aWYoci5idXR0b24hPT0wfHwhZS5lZGl0YWJsZSlyZXR1cm4hMTtsZXQgbz1udWxsO2lmKHIudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpbz1yLnRhcmdldDtlbHNle2NvbnN0IGE9ci50YXJnZXQ7aWYoIWEpcmV0dXJuITE7Y29uc3QgYz1uLmVkaXRvci52aWV3LmRvbTtvPWEuY2xvc2VzdCgiYSIpLG8mJiFjLmNvbnRhaW5zKG8pJiYobz1udWxsKX1pZighbylyZXR1cm4hMTtsZXQgbD0hMTtpZihuLmVuYWJsZUNsaWNrU2VsZWN0aW9uJiYobD1uLmVkaXRvci5jb21tYW5kcy5leHRlbmRNYXJrUmFuZ2Uobi50eXBlLm5hbWUpKSxuLm9wZW5PbkNsaWNrKXtjb25zdCBhPXNkKGUuc3RhdGUsbi50eXBlLm5hbWUpLGM9KHM9by5ocmVmKSE9bnVsbD9zOmEuaHJlZix1PShpPW8udGFyZ2V0KSE9bnVsbD9pOmEudGFyZ2V0O2MmJih3aW5kb3cub3BlbihjLHUpLGw9ITApfXJldHVybiBsfX19KX1mdW5jdGlvbiBKMChuKXtyZXR1cm4gbmV3IEcoe2tleTpuZXcgcSgiaGFuZGxlUGFzdGVMaW5rIikscHJvcHM6e2hhbmRsZVBhc3RlOihlLHQscik9Pntjb25zdHtzaG91bGRBdXRvTGluazpzfT1uLHtzdGF0ZTppfT1lLHtzZWxlY3Rpb246b309aSx7ZW1wdHk6bH09bztpZihsKXJldHVybiExO2xldCBhPSIiO3IuY29udGVudC5mb3JFYWNoKHU9PnthKz11LnRleHRDb250ZW50fSk7Y29uc3QgYz1vaChhLHtkZWZhdWx0UHJvdG9jb2w6bi5kZWZhdWx0UHJvdG9jb2x9KS5maW5kKHU9PnUuaXNMaW5rJiZ1LnZhbHVlPT09YSk7cmV0dXJuIWF8fCFjfHxzIT09dm9pZCAwJiYhcyhjLnZhbHVlKT8hMTpuLmVkaXRvci5jb21tYW5kcy5zZXRNYXJrKG4udHlwZSx7aHJlZjpjLmhyZWZ9KX19fSl9ZnVuY3Rpb24gTnQobixlKXtjb25zdCB0PVsiaHR0cCIsImh0dHBzIiwiZnRwIiwiZnRwcyIsIm1haWx0byIsInRlbCIsImNhbGx0byIsInNtcyIsImNpZCIsInhtcHAiXTtyZXR1cm4gZSYmZS5mb3JFYWNoKHI9Pntjb25zdCBzPXR5cGVvZiByPT0ic3RyaW5nIj9yOnIuc2NoZW1lO3MmJnQucHVzaChzKX0pLCFufHxuLnJlcGxhY2UoajAsIiIpLm1hdGNoKG5ldyBSZWdFeHAoYF4oPzooPzoke3Quam9pbigifCIpfSk6fFteYS16XXxbYS16MC05Ky4tXSsoPzpbXmEteisuLTpdfCQpKWAsImkiKSl9dmFyIEcwPUp0LmNyZWF0ZSh7bmFtZToibGluayIscHJpb3JpdHk6MWUzLGtlZXBPblNwbGl0OiExLGV4aXRhYmxlOiEwLG9uQ3JlYXRlKCl7dGhpcy5vcHRpb25zLnZhbGlkYXRlJiYhdGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rJiYodGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rPXRoaXMub3B0aW9ucy52YWxpZGF0ZSksdGhpcy5vcHRpb25zLnByb3RvY29scy5mb3JFYWNoKG49PntpZih0eXBlb2Ygbj09InN0cmluZyIpe1FhKG4pO3JldHVybn1RYShuLnNjaGVtZSxuLm9wdGlvbmFsU2xhc2hlcyl9KX0sb25EZXN0cm95KCl7SDAoKX0saW5jbHVzaXZlKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdXRvbGlua30sYWRkT3B0aW9ucygpe3JldHVybntvcGVuT25DbGljazohMCxlbmFibGVDbGlja1NlbGVjdGlvbjohMSxsaW5rT25QYXN0ZTohMCxhdXRvbGluazohMCxwcm90b2NvbHM6W10sZGVmYXVsdFByb3RvY29sOiJodHRwIixIVE1MQXR0cmlidXRlczp7dGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciBub2ZvbGxvdyIsY2xhc3M6bnVsbH0saXNBbGxvd2VkVXJpOihuLGUpPT4hIU50KG4sZS5wcm90b2NvbHMpLHZhbGlkYXRlOm49PiEhbixzaG91bGRBdXRvTGluazpuPT57Y29uc3QgZT0vXlthLXpdW2EtejAtOSsuLV0qOlwvXC8vaS50ZXN0KG4pLHQ9L15bYS16XVthLXowLTkrLi1dKjovaS50ZXN0KG4pO2lmKGV8fHQmJiFuLmluY2x1ZGVzKCJAIikpcmV0dXJuITA7Y29uc3Qgcz0obi5pbmNsdWRlcygiQCIpP24uc3BsaXQoIkAiKS5wb3AoKTpuKS5zcGxpdCgvWy8/IzpdLylbMF07cmV0dXJuISgvXlxkezEsM30oXC5cZHsxLDN9KXszfSQvLnRlc3Qocyl8fCEvXC4vLnRlc3QocykpfX19LGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57aHJlZjp7ZGVmYXVsdDpudWxsLHBhcnNlSFRNTChuKXtyZXR1cm4gbi5nZXRBdHRyaWJ1dGUoImhyZWYiKX19LHRhcmdldDp7ZGVmYXVsdDp0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMudGFyZ2V0fSxyZWw6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLnJlbH0sY2xhc3M6e2RlZmF1bHQ6dGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLmNsYXNzfSx0aXRsZTp7ZGVmYXVsdDpudWxsfX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJhW2hyZWZdIixnZXRBdHRyczpuPT57Y29uc3QgZT1uLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3JldHVybiFlfHwhdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShlLHtkZWZhdWx0VmFsaWRhdGU6dD0+ISFOdCh0LHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSk/ITE6bnVsbH19XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVybiB0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKG4uaHJlZix7ZGVmYXVsdFZhbGlkYXRlOmU9PiEhTnQoZSx0aGlzLm9wdGlvbnMucHJvdG9jb2xzKSxwcm90b2NvbHM6dGhpcy5vcHRpb25zLnByb3RvY29scyxkZWZhdWx0UHJvdG9jb2w6dGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbH0pP1siYSIsSyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsbiksMF06WyJhIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyx7Li4ubixocmVmOiIifSksMF19LG1hcmtkb3duVG9rZW5OYW1lOiJsaW5rIixwYXJzZU1hcmtkb3duOihuLGUpPT5lLmFwcGx5TWFyaygibGluayIsZS5wYXJzZUlubGluZShuLnRva2Vuc3x8W10pLHtocmVmOm4uaHJlZix0aXRsZTpuLnRpdGxlfHxudWxsfSkscmVuZGVyTWFya2Rvd246KG4sZSk9Pnt2YXIgdCxyLHMsaTtjb25zdCBvPShyPSh0PW4uYXR0cnMpPT1udWxsP3ZvaWQgMDp0LmhyZWYpIT1udWxsP3I6IiIsbD0oaT0ocz1uLmF0dHJzKT09bnVsbD92b2lkIDA6cy50aXRsZSkhPW51bGw/aToiIixhPWUucmVuZGVyQ2hpbGRyZW4obik7cmV0dXJuIGw/YFske2F9XSgke299ICIke2x9IilgOmBbJHthfV0oJHtvfSlgfSxhZGRDb21tYW5kcygpe3JldHVybntzZXRMaW5rOm49Pih7Y2hhaW46ZX0pPT57Y29uc3R7aHJlZjp0fT1uO3JldHVybiB0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKHQse2RlZmF1bHRWYWxpZGF0ZTpyPT4hIU50KHIsdGhpcy5vcHRpb25zLnByb3RvY29scykscHJvdG9jb2xzOnRoaXMub3B0aW9ucy5wcm90b2NvbHMsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2x9KT9lKCkuc2V0TWFyayh0aGlzLm5hbWUsbikuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCk6ITF9LHRvZ2dsZUxpbms6bj0+KHtjaGFpbjplfSk9Pntjb25zdHtocmVmOnR9PW58fHt9O3JldHVybiB0JiYhdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaSh0LHtkZWZhdWx0VmFsaWRhdGU6cj0+ISFOdChyLHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLHByb3RvY29sczp0aGlzLm9wdGlvbnMucHJvdG9jb2xzLGRlZmF1bHRQcm90b2NvbDp0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sfSk/ITE6ZSgpLnRvZ2dsZU1hcmsodGhpcy5uYW1lLG4se2V4dGVuZEVtcHR5TWFya1JhbmdlOiEwfSkuc2V0TWV0YSgicHJldmVudEF1dG9saW5rIiwhMCkucnVuKCl9LHVuc2V0TGluazooKT0+KHtjaGFpbjpufSk9Pm4oKS51bnNldE1hcmsodGhpcy5uYW1lLHtleHRlbmRFbXB0eU1hcmtSYW5nZTohMH0pLnNldE1ldGEoInByZXZlbnRBdXRvbGluayIsITApLnJ1bigpfX0sYWRkUGFzdGVSdWxlcygpe3JldHVybltxdCh7ZmluZDpuPT57Y29uc3QgZT1bXTtpZihuKXtjb25zdHtwcm90b2NvbHM6dCxkZWZhdWx0UHJvdG9jb2w6cn09dGhpcy5vcHRpb25zLHM9b2gobikuZmlsdGVyKGk9PmkuaXNMaW5rJiZ0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKGkudmFsdWUse2RlZmF1bHRWYWxpZGF0ZTpvPT4hIU50KG8sdCkscHJvdG9jb2xzOnQsZGVmYXVsdFByb3RvY29sOnJ9KSk7cy5sZW5ndGgmJnMuZm9yRWFjaChpPT57dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rKGkudmFsdWUpJiZlLnB1c2goe3RleHQ6aS52YWx1ZSxkYXRhOntocmVmOmkuaHJlZn0saW5kZXg6aS5zdGFydH0pfSl9cmV0dXJuIGV9LHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6bj0+e3ZhciBlO3JldHVybntocmVmOihlPW4uZGF0YSk9PW51bGw/dm9pZCAwOmUuaHJlZn19fSldfSxhZGRQcm9zZU1pcnJvclBsdWdpbnMoKXtjb25zdCBuPVtdLHtwcm90b2NvbHM6ZSxkZWZhdWx0UHJvdG9jb2w6dH09dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLm9wdGlvbnMuYXV0b2xpbmsmJm4ucHVzaChXMCh7dHlwZTp0aGlzLnR5cGUsZGVmYXVsdFByb3RvY29sOnRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsdmFsaWRhdGU6cj0+dGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShyLHtkZWZhdWx0VmFsaWRhdGU6cz0+ISFOdChzLGUpLHByb3RvY29sczplLGRlZmF1bHRQcm90b2NvbDp0fSksc2hvdWxkQXV0b0xpbms6dGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rfSkpLG4ucHVzaChLMCh7dHlwZTp0aGlzLnR5cGUsZWRpdG9yOnRoaXMuZWRpdG9yLG9wZW5PbkNsaWNrOnRoaXMub3B0aW9ucy5vcGVuT25DbGljaz09PSJ3aGVuTm90RWRpdGFibGUiPyEwOnRoaXMub3B0aW9ucy5vcGVuT25DbGljayxlbmFibGVDbGlja1NlbGVjdGlvbjp0aGlzLm9wdGlvbnMuZW5hYmxlQ2xpY2tTZWxlY3Rpb259KSksdGhpcy5vcHRpb25zLmxpbmtPblBhc3RlJiZuLnB1c2goSjAoe2VkaXRvcjp0aGlzLmVkaXRvcixkZWZhdWx0UHJvdG9jb2w6dGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbCx0eXBlOnRoaXMudHlwZSxzaG91bGRBdXRvTGluazp0aGlzLm9wdGlvbnMuc2hvdWxkQXV0b0xpbmt9KSksbn19KSxRMD1PYmplY3QuZGVmaW5lUHJvcGVydHksWDA9KG4sZSk9Pntmb3IodmFyIHQgaW4gZSlRMChuLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX0sWTA9Imxpc3RJdGVtIixYYT0idGV4dFN0eWxlIixZYT0vXlxzKihbLSsqXSlccyQvLGxoPVNlLmNyZWF0ZSh7bmFtZToiYnVsbGV0TGlzdCIsYWRkT3B0aW9ucygpe3JldHVybntpdGVtVHlwZU5hbWU6Imxpc3RJdGVtIixIVE1MQXR0cmlidXRlczp7fSxrZWVwTWFya3M6ITEsa2VlcEF0dHJpYnV0ZXM6ITF9fSxncm91cDoiYmxvY2sgbGlzdCIsY29udGVudCgpe3JldHVybmAke3RoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWV9K2B9LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJ1bCJ9XX0scmVuZGVySFRNTCh7SFRNTEF0dHJpYnV0ZXM6bn0pe3JldHVyblsidWwiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdCIscGFyc2VNYXJrZG93bjoobixlKT0+bi50eXBlIT09Imxpc3QifHxuLm9yZGVyZWQ/W106e3R5cGU6ImJ1bGxldExpc3QiLGNvbnRlbnQ6bi5pdGVtcz9lLnBhcnNlQ2hpbGRyZW4obi5pdGVtcyk6W119LHJlbmRlck1hcmtkb3duOihuLGUpPT5uLmNvbnRlbnQ/ZS5yZW5kZXJDaGlsZHJlbihuLmNvbnRlbnQsYApgKToiIixtYXJrZG93bk9wdGlvbnM6e2luZGVudHNDb250ZW50OiEwfSxhZGRDb21tYW5kcygpe3JldHVybnt0b2dnbGVCdWxsZXRMaXN0OigpPT4oe2NvbW1hbmRzOm4sY2hhaW46ZX0pPT50aGlzLm9wdGlvbnMua2VlcEF0dHJpYnV0ZXM/ZSgpLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcykudXBkYXRlQXR0cmlidXRlcyhZMCx0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFhhKSkucnVuKCk6bi50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lLHRoaXMub3B0aW9ucy5rZWVwTWFya3MpfX0sYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57Ik1vZC1TaGlmdC04IjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQnVsbGV0TGlzdCgpfX0sYWRkSW5wdXRSdWxlcygpe2xldCBuPXBuKHtmaW5kOllhLHR5cGU6dGhpcy50eXBlfSk7cmV0dXJuKHRoaXMub3B0aW9ucy5rZWVwTWFya3N8fHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcykmJihuPXBuKHtmaW5kOllhLHR5cGU6dGhpcy50eXBlLGtlZXBNYXJrczp0aGlzLm9wdGlvbnMua2VlcE1hcmtzLGtlZXBBdHRyaWJ1dGVzOnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcyxnZXRBdHRyaWJ1dGVzOigpPT50aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFhhKSxlZGl0b3I6dGhpcy5lZGl0b3J9KSksW25dfX0pLGFoPVNlLmNyZWF0ZSh7bmFtZToibGlzdEl0ZW0iLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e30sYnVsbGV0TGlzdFR5cGVOYW1lOiJidWxsZXRMaXN0IixvcmRlcmVkTGlzdFR5cGVOYW1lOiJvcmRlcmVkTGlzdCJ9fSxjb250ZW50OiJwYXJhZ3JhcGggYmxvY2sqIixkZWZpbmluZzohMCxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoibGkifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bImxpIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0sbWFya2Rvd25Ub2tlbk5hbWU6Imxpc3RfaXRlbSIscGFyc2VNYXJrZG93bjoobixlKT0+e3ZhciB0O2lmKG4udHlwZSE9PSJsaXN0X2l0ZW0iKXJldHVybltdO2NvbnN0IHI9KHQ9ZS5wYXJzZUJsb2NrQ2hpbGRyZW4pIT1udWxsP3Q6ZS5wYXJzZUNoaWxkcmVuO2xldCBzPVtdO2lmKG4udG9rZW5zJiZuLnRva2Vucy5sZW5ndGg+MClpZihuLnRva2Vucy5zb21lKG89Pm8udHlwZT09PSJwYXJhZ3JhcGgiKSlzPXIobi50b2tlbnMpO2Vsc2V7Y29uc3Qgbz1uLnRva2Vuc1swXTtpZihvJiZvLnR5cGU9PT0idGV4dCImJm8udG9rZW5zJiZvLnRva2Vucy5sZW5ndGg+MCl7aWYocz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDplLnBhcnNlSW5saW5lKG8udG9rZW5zKX1dLG4udG9rZW5zLmxlbmd0aD4xKXtjb25zdCBhPW4udG9rZW5zLnNsaWNlKDEpLGM9cihhKTtzLnB1c2goLi4uYyl9fWVsc2Ugcz1yKG4udG9rZW5zKX1yZXR1cm4gcy5sZW5ndGg9PT0wJiYocz1be3R5cGU6InBhcmFncmFwaCIsY29udGVudDpbXX1dKSx7dHlwZToibGlzdEl0ZW0iLGNvbnRlbnQ6c319LHJlbmRlck1hcmtkb3duOihuLGUsdCk9PlZvKG4sZSxyPT57dmFyIHMsaTtyZXR1cm4gci5wYXJlbnRUeXBlPT09ImJ1bGxldExpc3QiPyItICI6ci5wYXJlbnRUeXBlPT09Im9yZGVyZWRMaXN0Ij9gJHsoKChpPShzPXIubWV0YSk9PW51bGw/dm9pZCAwOnMucGFyZW50QXR0cnMpPT1udWxsP3ZvaWQgMDppLnN0YXJ0KXx8MSkrci5pbmRleH0uIGA6Ii0gIn0sdCksYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKXtyZXR1cm57RW50ZXI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNwbGl0TGlzdEl0ZW0odGhpcy5uYW1lKSxUYWI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNpbmtMaXN0SXRlbSh0aGlzLm5hbWUpLCJTaGlmdC1UYWIiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy5saWZ0TGlzdEl0ZW0odGhpcy5uYW1lKX19fSksWjA9e307WDAoWjAse2ZpbmRMaXN0SXRlbVBvczooKT0+YXIsZ2V0TmV4dExpc3REZXB0aDooKT0+dWwsaGFuZGxlQmFja3NwYWNlOigpPT5sbyxoYW5kbGVEZWxldGU6KCk9PmFvLGhhc0xpc3RCZWZvcmU6KCk9PmNoLGhhc0xpc3RJdGVtQWZ0ZXI6KCk9PmV4LGhhc0xpc3RJdGVtQmVmb3JlOigpPT51aCxsaXN0SXRlbUhhc1N1Ykxpc3Q6KCk9PmRoLG5leHRMaXN0SXNEZWVwZXI6KCk9PmhoLG5leHRMaXN0SXNIaWdoZXI6KCk9PmZofSk7dmFyIGFyPShuLGUpPT57Y29uc3R7JGZyb206dH09ZS5zZWxlY3Rpb24scj1pZShuLGUuc2NoZW1hKTtsZXQgcz1udWxsLGk9dC5kZXB0aCxvPXQucG9zLGw9bnVsbDtmb3IoO2k+MCYmbD09PW51bGw7KXM9dC5ub2RlKGkpLHMudHlwZT09PXI/bD1pOihpLT0xLG8tPTEpO3JldHVybiBsPT09bnVsbD9udWxsOnskcG9zOmUuZG9jLnJlc29sdmUobyksZGVwdGg6bH19LHVsPShuLGUpPT57Y29uc3QgdD1hcihuLGUpO2lmKCF0KXJldHVybiExO2NvbnN0WyxyXT10eShlLG4sdC4kcG9zLnBvcys0KTtyZXR1cm4gcn0sY2g9KG4sZSx0KT0+e2NvbnN0eyRhbmNob3I6cn09bi5zZWxlY3Rpb24scz1NYXRoLm1heCgwLHIucG9zLTIpLGk9bi5kb2MucmVzb2x2ZShzKS5ub2RlKCk7cmV0dXJuISghaXx8IXQuaW5jbHVkZXMoaS50eXBlLm5hbWUpKX0sdWg9KG4sZSk9Pnt2YXIgdDtjb25zdHskYW5jaG9yOnJ9PWUuc2VsZWN0aW9uLHM9ZS5kb2MucmVzb2x2ZShyLnBvcy0yKTtyZXR1cm4hKHMuaW5kZXgoKT09PTB8fCgodD1zLm5vZGVCZWZvcmUpPT1udWxsP3ZvaWQgMDp0LnR5cGUubmFtZSkhPT1uKX0sZGg9KG4sZSx0KT0+e2lmKCF0KXJldHVybiExO2NvbnN0IHI9aWUobixlLnNjaGVtYSk7bGV0IHM9ITE7cmV0dXJuIHQuZGVzY2VuZGFudHMoaT0+e2kudHlwZT09PXImJihzPSEwKX0pLHN9LGxvPShuLGUsdCk9PntpZihuLmNvbW1hbmRzLnVuZG9JbnB1dFJ1bGUoKSlyZXR1cm4hMDtpZihuLnN0YXRlLnNlbGVjdGlvbi5mcm9tIT09bi5zdGF0ZS5zZWxlY3Rpb24udG8pcmV0dXJuITE7aWYoIUV0KG4uc3RhdGUsZSkmJmNoKG4uc3RhdGUsZSx0KSl7Y29uc3R7JGFuY2hvcjpsfT1uLnN0YXRlLnNlbGVjdGlvbixhPW4uc3RhdGUuZG9jLnJlc29sdmUobC5iZWZvcmUoKS0xKSxjPVtdO2Eubm9kZSgpLmRlc2NlbmRhbnRzKChoLGYpPT57aC50eXBlLm5hbWU9PT1lJiZjLnB1c2goe25vZGU6aCxwb3M6Zn0pfSk7Y29uc3QgdT1jLmF0KC0xKTtpZighdSlyZXR1cm4hMTtjb25zdCBkPW4uc3RhdGUuZG9jLnJlc29sdmUoYS5zdGFydCgpK3UucG9zKzEpO3JldHVybiBuLmNoYWluKCkuY3V0KHtmcm9tOmwuc3RhcnQoKS0xLHRvOmwuZW5kKCkrMX0sZC5lbmQoKSkuam9pbkZvcndhcmQoKS5ydW4oKX1pZighRXQobi5zdGF0ZSxlKXx8IWl5KG4uc3RhdGUpKXJldHVybiExO2NvbnN0IHI9YXIoZSxuLnN0YXRlKTtpZighcilyZXR1cm4hMTtjb25zdCBpPW4uc3RhdGUuZG9jLnJlc29sdmUoci4kcG9zLnBvcy0yKS5ub2RlKHIuZGVwdGgpLG89ZGgoZSxuLnN0YXRlLGkpO3JldHVybiB1aChlLG4uc3RhdGUpJiYhbz9uLmNvbW1hbmRzLmpvaW5JdGVtQmFja3dhcmQoKTpuLmNoYWluKCkubGlmdExpc3RJdGVtKGUpLnJ1bigpfSxoaD0obixlKT0+e2NvbnN0IHQ9dWwobixlKSxyPWFyKG4sZSk7cmV0dXJuIXJ8fCF0PyExOnQ+ci5kZXB0aH0sZmg9KG4sZSk9Pntjb25zdCB0PXVsKG4sZSkscj1hcihuLGUpO3JldHVybiFyfHwhdD8hMTp0PHIuZGVwdGh9LGFvPShuLGUpPT57aWYoIUV0KG4uc3RhdGUsZSl8fCFzeShuLnN0YXRlLGUpKXJldHVybiExO2NvbnN0e3NlbGVjdGlvbjp0fT1uLnN0YXRlLHskZnJvbTpyLCR0bzpzfT10O3JldHVybiF0LmVtcHR5JiZyLnNhbWVQYXJlbnQocyk/ITE6aGgoZSxuLnN0YXRlKT9uLmNoYWluKCkuZm9jdXMobi5zdGF0ZS5zZWxlY3Rpb24uZnJvbSs0KS5saWZ0KGUpLmpvaW5CYWNrd2FyZCgpLnJ1bigpOmZoKGUsbi5zdGF0ZSk/bi5jaGFpbigpLmpvaW5Gb3J3YXJkKCkuam9pbkJhY2t3YXJkKCkucnVuKCk6bi5jb21tYW5kcy5qb2luSXRlbUZvcndhcmQoKX0sZXg9KG4sZSk9Pnt2YXIgdDtjb25zdHskYW5jaG9yOnJ9PWUuc2VsZWN0aW9uLHM9ZS5kb2MucmVzb2x2ZShyLnBvcy1yLnBhcmVudE9mZnNldC0yKTtyZXR1cm4hKHMuaW5kZXgoKT09PXMucGFyZW50LmNoaWxkQ291bnQtMXx8KCh0PXMubm9kZUFmdGVyKT09bnVsbD92b2lkIDA6dC50eXBlLm5hbWUpIT09bil9LHBoPXRlLmNyZWF0ZSh7bmFtZToibGlzdEtleW1hcCIsYWRkT3B0aW9ucygpe3JldHVybntsaXN0VHlwZXM6W3tpdGVtTmFtZToibGlzdEl0ZW0iLHdyYXBwZXJOYW1lczpbImJ1bGxldExpc3QiLCJvcmRlcmVkTGlzdCJdfSx7aXRlbU5hbWU6InRhc2tJdGVtIix3cmFwcGVyTmFtZXM6WyJ0YXNrTGlzdCJdfV19fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybntEZWxldGU6KHtlZGl0b3I6bn0pPT57bGV0IGU9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOnR9KT0+e24uc3RhdGUuc2NoZW1hLm5vZGVzW3RdIT09dm9pZCAwJiZhbyhuLHQpJiYoZT0hMCl9KSxlfSwiTW9kLURlbGV0ZSI6KHtlZGl0b3I6bn0pPT57bGV0IGU9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOnR9KT0+e24uc3RhdGUuc2NoZW1hLm5vZGVzW3RdIT09dm9pZCAwJiZhbyhuLHQpJiYoZT0hMCl9KSxlfSxCYWNrc3BhY2U6KHtlZGl0b3I6bn0pPT57bGV0IGU9ITE7cmV0dXJuIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoe2l0ZW1OYW1lOnQsd3JhcHBlck5hbWVzOnJ9KT0+e24uc3RhdGUuc2NoZW1hLm5vZGVzW3RdIT09dm9pZCAwJiZsbyhuLHQscikmJihlPSEwKX0pLGV9LCJNb2QtQmFja3NwYWNlIjooe2VkaXRvcjpufSk9PntsZXQgZT0hMTtyZXR1cm4gdGhpcy5vcHRpb25zLmxpc3RUeXBlcy5mb3JFYWNoKCh7aXRlbU5hbWU6dCx3cmFwcGVyTmFtZXM6cn0pPT57bi5zdGF0ZS5zY2hlbWEubm9kZXNbdF0hPT12b2lkIDAmJmxvKG4sdCxyKSYmKGU9ITApfSksZX19fX0pLFphPS9eKFxzKikoXGQrKVwuXHMrKC4qKSQvLHR4PS9eXHMvO2Z1bmN0aW9uIG54KG4pe2NvbnN0IGU9bi50cmltU3RhcnQoKTtyZXR1cm4vXlstKypdXHMrLy50ZXN0KGUpfHwvXlxkK1wuXHMrLy50ZXN0KGUpfHwvXj5ccz8vLnRlc3QoZSl8fC9eYGBgLy50ZXN0KGUpfHwvXn5+fi8udGVzdChlKX1mdW5jdGlvbiByeChuKXtjb25zdCBlPVtdLHQ9W107bGV0IHI9ITE7cmV0dXJuIG4uZm9yRWFjaChzPT57aWYocil7dC5wdXNoKHMpO3JldHVybn1pZihzLnRyaW0oKT09PSIiKXtyPSEwLHQucHVzaChzKTtyZXR1cm59aWYoZS5sZW5ndGg+MCYmbngocykpe3I9ITAsdC5wdXNoKHMpO3JldHVybn1lLnB1c2gocyl9KSx7cGFyYWdyYXBoTGluZXM6ZSxibG9ja0xpbmVzOnR9fWZ1bmN0aW9uIHN4KG4pe2NvbnN0IGU9W107bGV0IHQ9MCxyPTA7Zm9yKDt0PG4ubGVuZ3RoOyl7Y29uc3Qgcz1uW3RdLGk9cy5tYXRjaChaYSk7aWYoIWkpYnJlYWs7Y29uc3RbLG8sbCxhXT1pLGM9by5sZW5ndGgsdT1bYV07bGV0IGQ9dCsxO2NvbnN0IGg9W3NdO2xldCBmPSExO2Zvcig7ZDxuLmxlbmd0aDspe2NvbnN0IHA9bltkXTtpZihwLm1hdGNoKFphKSlicmVhaztpZihwLnRyaW0oKT09PSIiKWgucHVzaChwKSx1LnB1c2goIiIpLGY9ITAsZCs9MTtlbHNlIGlmKHAubWF0Y2godHgpKWgucHVzaChwKSx1LnB1c2gocC5zbGljZShjKzIpKSxkKz0xO2Vsc2V7aWYoZilicmVhaztoLnB1c2gocCksdS5wdXNoKHApLGQrPTF9fWUucHVzaCh7aW5kZW50OmMsbnVtYmVyOnBhcnNlSW50KGwsMTApLGNvbnRlbnQ6dS5qb2luKGAKYCkudHJpbSgpLGNvbnRlbnRMaW5lczp1LHJhdzpoLmpvaW4oYApgKX0pLHI9ZCx0PWR9cmV0dXJuW2Uscl19ZnVuY3Rpb24gbWgobixlLHQpe2NvbnN0IHI9W107bGV0IHM9MDtmb3IoO3M8bi5sZW5ndGg7KXtjb25zdCBpPW5bc107aWYoaS5pbmRlbnQ9PT1lKXtjb25zdHtwYXJhZ3JhcGhMaW5lczpvLGJsb2NrTGluZXM6bH09cngoaS5jb250ZW50TGluZXMpLGE9by5qb2luKGAKYCkudHJpbSgpLGM9W107YSYmYy5wdXNoKHt0eXBlOiJwYXJhZ3JhcGgiLHJhdzphLHRva2Vuczp0LmlubGluZVRva2VucyhhKX0pO2NvbnN0IHU9bC5qb2luKGAKYCkudHJpbSgpO2lmKHUpe2NvbnN0IGY9dC5ibG9ja1Rva2Vucyh1KTtjLnB1c2goLi4uZil9bGV0IGQ9cysxO2NvbnN0IGg9W107Zm9yKDtkPG4ubGVuZ3RoJiZuW2RdLmluZGVudD5lOyloLnB1c2gobltkXSksZCs9MTtpZihoLmxlbmd0aD4wKXtjb25zdCBmPU1hdGgubWluKC4uLmgubWFwKG09Pm0uaW5kZW50KSkscD1taChoLGYsdCk7Yy5wdXNoKHt0eXBlOiJsaXN0IixvcmRlcmVkOiEwLHN0YXJ0OmhbMF0ubnVtYmVyLGl0ZW1zOnAscmF3OmgubWFwKG09Pm0ucmF3KS5qb2luKGAKYCl9KX1yLnB1c2goe3R5cGU6Imxpc3RfaXRlbSIscmF3OmkucmF3LHRva2VuczpjfSkscz1kfWVsc2Ugcys9MX1yZXR1cm4gcn1mdW5jdGlvbiBpeChuLGUpe3JldHVybiBuLm1hcCh0PT57aWYodC50eXBlIT09Imxpc3RfaXRlbSIpcmV0dXJuIGUucGFyc2VDaGlsZHJlbihbdF0pWzBdO2NvbnN0IHI9W107cmV0dXJuIHQudG9rZW5zJiZ0LnRva2Vucy5sZW5ndGg+MCYmdC50b2tlbnMuZm9yRWFjaChzPT57aWYocy50eXBlPT09InBhcmFncmFwaCJ8fHMudHlwZT09PSJsaXN0Inx8cy50eXBlPT09ImJsb2NrcXVvdGUifHxzLnR5cGU9PT0iY29kZSIpci5wdXNoKC4uLmUucGFyc2VDaGlsZHJlbihbc10pKTtlbHNlIGlmKHMudHlwZT09PSJ0ZXh0IiYmcy50b2tlbnMpe2NvbnN0IGk9ZS5wYXJzZUNoaWxkcmVuKFtzXSk7ci5wdXNoKHt0eXBlOiJwYXJhZ3JhcGgiLGNvbnRlbnQ6aX0pfWVsc2V7Y29uc3QgaT1lLnBhcnNlQ2hpbGRyZW4oW3NdKTtpLmxlbmd0aD4wJiZyLnB1c2goLi4uaSl9fSkse3R5cGU6Imxpc3RJdGVtIixjb250ZW50OnJ9fSl9dmFyIG94PSJsaXN0SXRlbSIsZWM9InRleHRTdHlsZSIsdGM9L14oXGQrKVwuXHMkLyxnaD1TZS5jcmVhdGUoe25hbWU6Im9yZGVyZWRMaXN0IixhZGRPcHRpb25zKCl7cmV0dXJue2l0ZW1UeXBlTmFtZToibGlzdEl0ZW0iLEhUTUxBdHRyaWJ1dGVzOnt9LGtlZXBNYXJrczohMSxrZWVwQXR0cmlidXRlczohMX19LGdyb3VwOiJibG9jayBsaXN0Iixjb250ZW50KCl7cmV0dXJuYCR7dGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZX0rYH0sYWRkQXR0cmlidXRlcygpe3JldHVybntzdGFydDp7ZGVmYXVsdDoxLHBhcnNlSFRNTDpuPT5uLmhhc0F0dHJpYnV0ZSgic3RhcnQiKT9wYXJzZUludChuLmdldEF0dHJpYnV0ZSgic3RhcnQiKXx8IiIsMTApOjF9LHR5cGU6e2RlZmF1bHQ6bnVsbCxwYXJzZUhUTUw6bj0+bi5nZXRBdHRyaWJ1dGUoInR5cGUiKX19fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzoib2wifV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtjb25zdHtzdGFydDplLC4uLnR9PW47cmV0dXJuIGU9PT0xP1sib2wiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLHQpLDBdOlsib2wiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pLDBdfSxtYXJrZG93blRva2VuTmFtZToibGlzdCIscGFyc2VNYXJrZG93bjoobixlKT0+e2lmKG4udHlwZSE9PSJsaXN0Inx8IW4ub3JkZXJlZClyZXR1cm5bXTtjb25zdCB0PW4uc3RhcnR8fDEscj1uLml0ZW1zP2l4KG4uaXRlbXMsZSk6W107cmV0dXJuIHQhPT0xP3t0eXBlOiJvcmRlcmVkTGlzdCIsYXR0cnM6e3N0YXJ0OnR9LGNvbnRlbnQ6cn06e3R5cGU6Im9yZGVyZWRMaXN0Iixjb250ZW50OnJ9fSxyZW5kZXJNYXJrZG93bjoobixlKT0+bi5jb250ZW50P2UucmVuZGVyQ2hpbGRyZW4obi5jb250ZW50LGAKYCk6IiIsbWFya2Rvd25Ub2tlbml6ZXI6e25hbWU6Im9yZGVyZWRMaXN0IixsZXZlbDoiYmxvY2siLHN0YXJ0Om49Pntjb25zdCBlPW4ubWF0Y2goL14oXHMqKShcZCspXC5ccysvKSx0PWU/LmluZGV4O3JldHVybiB0IT09dm9pZCAwP3Q6LTF9LHRva2VuaXplOihuLGUsdCk9Pnt2YXIgcjtjb25zdCBzPW4uc3BsaXQoYApgKSxbaSxvXT1zeChzKTtpZihpLmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IGw9bWgoaSwwLHQpO3JldHVybiBsLmxlbmd0aD09PTA/dm9pZCAwOnt0eXBlOiJsaXN0IixvcmRlcmVkOiEwLHN0YXJ0Oigocj1pWzBdKT09bnVsbD92b2lkIDA6ci5udW1iZXIpfHwxLGl0ZW1zOmwscmF3OnMuc2xpY2UoMCxvKS5qb2luKGAKYCl9fX0sbWFya2Rvd25PcHRpb25zOntpbmRlbnRzQ29udGVudDohMH0sYWRkQ29tbWFuZHMoKXtyZXR1cm57dG9nZ2xlT3JkZXJlZExpc3Q6KCk9Pih7Y29tbWFuZHM6bixjaGFpbjplfSk9PnRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcz9lKCkudG9nZ2xlTGlzdCh0aGlzLm5hbWUsdGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZSx0aGlzLm9wdGlvbnMua2VlcE1hcmtzKS51cGRhdGVBdHRyaWJ1dGVzKG94LHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoZWMpKS5ydW4oKTpuLnRvZ2dsZUxpc3QodGhpcy5uYW1lLHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsdGhpcy5vcHRpb25zLmtlZXBNYXJrcyl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LTciOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVPcmRlcmVkTGlzdCgpfX0sYWRkSW5wdXRSdWxlcygpe2xldCBuPXBuKHtmaW5kOnRjLHR5cGU6dGhpcy50eXBlLGdldEF0dHJpYnV0ZXM6ZT0+KHtzdGFydDorZVsxXX0pLGpvaW5QcmVkaWNhdGU6KGUsdCk9PnQuY2hpbGRDb3VudCt0LmF0dHJzLnN0YXJ0PT09K2VbMV19KTtyZXR1cm4odGhpcy5vcHRpb25zLmtlZXBNYXJrc3x8dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzKSYmKG49cG4oe2ZpbmQ6dGMsdHlwZTp0aGlzLnR5cGUsa2VlcE1hcmtzOnRoaXMub3B0aW9ucy5rZWVwTWFya3Msa2VlcEF0dHJpYnV0ZXM6dGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzLGdldEF0dHJpYnV0ZXM6ZT0+KHtzdGFydDorZVsxXSwuLi50aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKGVjKX0pLGpvaW5QcmVkaWNhdGU6KGUsdCk9PnQuY2hpbGRDb3VudCt0LmF0dHJzLnN0YXJ0PT09K2VbMV0sZWRpdG9yOnRoaXMuZWRpdG9yfSkpLFtuXX19KSxseD0vXlxzKihcWyhbKCB8eF0pP1xdKVxzJC8sYXg9U2UuY3JlYXRlKHtuYW1lOiJ0YXNrSXRlbSIsYWRkT3B0aW9ucygpe3JldHVybntuZXN0ZWQ6ITEsSFRNTEF0dHJpYnV0ZXM6e30sdGFza0xpc3RUeXBlTmFtZToidGFza0xpc3QiLGExMXk6dm9pZCAwfX0sY29udGVudCgpe3JldHVybiB0aGlzLm9wdGlvbnMubmVzdGVkPyJwYXJhZ3JhcGggYmxvY2sqIjoicGFyYWdyYXBoKyJ9LGRlZmluaW5nOiEwLGFkZEF0dHJpYnV0ZXMoKXtyZXR1cm57Y2hlY2tlZDp7ZGVmYXVsdDohMSxrZWVwT25TcGxpdDohMSxwYXJzZUhUTUw6bj0+e2NvbnN0IGU9bi5nZXRBdHRyaWJ1dGUoImRhdGEtY2hlY2tlZCIpO3JldHVybiBlPT09IiJ8fGU9PT0idHJ1ZSJ9LHJlbmRlckhUTUw6bj0+KHsiZGF0YS1jaGVja2VkIjpuLmNoZWNrZWR9KX19fSxwYXJzZUhUTUwoKXtyZXR1cm5be3RhZzpgbGlbZGF0YS10eXBlPSIke3RoaXMubmFtZX0iXWAscHJpb3JpdHk6NTF9XX0scmVuZGVySFRNTCh7bm9kZTpuLEhUTUxBdHRyaWJ1dGVzOmV9KXtyZXR1cm5bImxpIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxlLHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9KSxbImxhYmVsIixbImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNoZWNrZWQ6bi5hdHRycy5jaGVja2VkPyJjaGVja2VkIjpudWxsfV0sWyJzcGFuIl1dLFsiZGl2IiwwXV19LHBhcnNlTWFya2Rvd246KG4sZSk9Pntjb25zdCB0PVtdO2lmKG4udG9rZW5zJiZuLnRva2Vucy5sZW5ndGg+MD90LnB1c2goZS5jcmVhdGVOb2RlKCJwYXJhZ3JhcGgiLHt9LGUucGFyc2VJbmxpbmUobi50b2tlbnMpKSk6bi50ZXh0P3QucHVzaChlLmNyZWF0ZU5vZGUoInBhcmFncmFwaCIse30sW2UuY3JlYXRlTm9kZSgidGV4dCIse3RleHQ6bi50ZXh0fSldKSk6dC5wdXNoKGUuY3JlYXRlTm9kZSgicGFyYWdyYXBoIix7fSxbXSkpLG4ubmVzdGVkVG9rZW5zJiZuLm5lc3RlZFRva2Vucy5sZW5ndGg+MCl7Y29uc3Qgcj1lLnBhcnNlQ2hpbGRyZW4obi5uZXN0ZWRUb2tlbnMpO3QucHVzaCguLi5yKX1yZXR1cm4gZS5jcmVhdGVOb2RlKCJ0YXNrSXRlbSIse2NoZWNrZWQ6bi5jaGVja2VkfHwhMX0sdCl9LHJlbmRlck1hcmtkb3duOihuLGUpPT57dmFyIHQ7Y29uc3Qgcz1gLSBbJHsodD1uLmF0dHJzKSE9bnVsbCYmdC5jaGVja2VkPyJ4IjoiICJ9XSBgO3JldHVybiBWbyhuLGUscyl9LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7Y29uc3Qgbj17RW50ZXI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnNwbGl0TGlzdEl0ZW0odGhpcy5uYW1lKSwiU2hpZnQtVGFiIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMubGlmdExpc3RJdGVtKHRoaXMubmFtZSl9O3JldHVybiB0aGlzLm9wdGlvbnMubmVzdGVkP3suLi5uLFRhYjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2lua0xpc3RJdGVtKHRoaXMubmFtZSl9Om59LGFkZE5vZGVWaWV3KCl7cmV0dXJuKHtub2RlOm4sSFRNTEF0dHJpYnV0ZXM6ZSxnZXRQb3M6dCxlZGl0b3I6cn0pPT57Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWQ9Pnt2YXIgaCxmO2wuYXJpYUxhYmVsPSgoZj0oaD10aGlzLm9wdGlvbnMuYTExeSk9PW51bGw/dm9pZCAwOmguY2hlY2tib3hMYWJlbCk9PW51bGw/dm9pZCAwOmYuY2FsbChoLGQsbC5jaGVja2VkKSl8fGBUYXNrIGl0ZW0gY2hlY2tib3ggZm9yICR7ZC50ZXh0Q29udGVudHx8ImVtcHR5IHRhc2sgaXRlbSJ9YH07YyhuKSxpLmNvbnRlbnRFZGl0YWJsZT0iZmFsc2UiLGwudHlwZT0iY2hlY2tib3giLGwuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixkPT5kLnByZXZlbnREZWZhdWx0KCkpLGwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixkPT57aWYoIXIuaXNFZGl0YWJsZSYmIXRoaXMub3B0aW9ucy5vblJlYWRPbmx5Q2hlY2tlZCl7bC5jaGVja2VkPSFsLmNoZWNrZWQ7cmV0dXJufWNvbnN0e2NoZWNrZWQ6aH09ZC50YXJnZXQ7ci5pc0VkaXRhYmxlJiZ0eXBlb2YgdD09ImZ1bmN0aW9uIiYmci5jaGFpbigpLmZvY3VzKHZvaWQgMCx7c2Nyb2xsSW50b1ZpZXc6ITF9KS5jb21tYW5kKCh7dHI6Zn0pPT57Y29uc3QgcD10KCk7aWYodHlwZW9mIHAhPSJudW1iZXIiKXJldHVybiExO2NvbnN0IG09Zi5kb2Mubm9kZUF0KHApO3JldHVybiBmLnNldE5vZGVNYXJrdXAocCx2b2lkIDAsey4uLm0/LmF0dHJzLGNoZWNrZWQ6aH0pLCEwfSkucnVuKCksIXIuaXNFZGl0YWJsZSYmdGhpcy5vcHRpb25zLm9uUmVhZE9ubHlDaGVja2VkJiYodGhpcy5vcHRpb25zLm9uUmVhZE9ubHlDaGVja2VkKG4saCl8fChsLmNoZWNrZWQ9IWwuY2hlY2tlZCkpfSksT2JqZWN0LmVudHJpZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzKS5mb3JFYWNoKChbZCxoXSk9PntzLnNldEF0dHJpYnV0ZShkLGgpfSkscy5kYXRhc2V0LmNoZWNrZWQ9bi5hdHRycy5jaGVja2VkLGwuY2hlY2tlZD1uLmF0dHJzLmNoZWNrZWQsaS5hcHBlbmQobCxvKSxzLmFwcGVuZChpLGEpLE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtkLGhdKT0+e3Muc2V0QXR0cmlidXRlKGQsaCl9KTtsZXQgdT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKTtyZXR1cm57ZG9tOnMsY29udGVudERPTTphLHVwZGF0ZTpkPT57aWYoZC50eXBlIT09dGhpcy50eXBlKXJldHVybiExO3MuZGF0YXNldC5jaGVja2VkPWQuYXR0cnMuY2hlY2tlZCxsLmNoZWNrZWQ9ZC5hdHRycy5jaGVja2VkLGMoZCk7Y29uc3QgaD1yLmV4dGVuc2lvbk1hbmFnZXIuYXR0cmlidXRlcyxmPWVyKGQsaCkscD1uZXcgU2V0KE9iamVjdC5rZXlzKGYpKSxtPXRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcztyZXR1cm4gdS5mb3JFYWNoKGc9PntwLmhhcyhnKXx8KGcgaW4gbT9zLnNldEF0dHJpYnV0ZShnLG1bZ10pOnMucmVtb3ZlQXR0cmlidXRlKGcpKX0pLE9iamVjdC5lbnRyaWVzKGYpLmZvckVhY2goKFtnLHldKT0+e3k9PW51bGw/ZyBpbiBtP3Muc2V0QXR0cmlidXRlKGcsbVtnXSk6cy5yZW1vdmVBdHRyaWJ1dGUoZyk6cy5zZXRBdHRyaWJ1dGUoZyx5KX0pLHU9cCwhMH19fX0sYWRkSW5wdXRSdWxlcygpe3JldHVybltwbih7ZmluZDpseCx0eXBlOnRoaXMudHlwZSxnZXRBdHRyaWJ1dGVzOm49Pih7Y2hlY2tlZDpuW24ubGVuZ3RoLTFdPT09IngifSl9KV19fSksY3g9U2UuY3JlYXRlKHtuYW1lOiJ0YXNrTGlzdCIsYWRkT3B0aW9ucygpe3JldHVybntpdGVtVHlwZU5hbWU6InRhc2tJdGVtIixIVE1MQXR0cmlidXRlczp7fX19LGdyb3VwOiJibG9jayBsaXN0Iixjb250ZW50KCl7cmV0dXJuYCR7dGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZX0rYH0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6YHVsW2RhdGEtdHlwZT0iJHt0aGlzLm5hbWV9Il1gLHByaW9yaXR5OjUxfV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bInVsIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuLHsiZGF0YS10eXBlIjp0aGlzLm5hbWV9KSwwXX0scGFyc2VNYXJrZG93bjoobixlKT0+ZS5jcmVhdGVOb2RlKCJ0YXNrTGlzdCIse30sZS5wYXJzZUNoaWxkcmVuKG4uaXRlbXN8fFtdKSkscmVuZGVyTWFya2Rvd246KG4sZSk9Pm4uY29udGVudD9lLnJlbmRlckNoaWxkcmVuKG4uY29udGVudCxgCmApOiIiLG1hcmtkb3duVG9rZW5pemVyOntuYW1lOiJ0YXNrTGlzdCIsbGV2ZWw6ImJsb2NrIixzdGFydChuKXt2YXIgZTtjb25zdCB0PShlPW4ubWF0Y2goL15ccypbLSsqXVxzK1xbKFsgeFhdKVxdXHMrLykpPT1udWxsP3ZvaWQgMDplLmluZGV4O3JldHVybiB0IT09dm9pZCAwP3Q6LTF9LHRva2VuaXplKG4sZSx0KXtjb25zdCByPWk9Pntjb25zdCBvPUtpKGkse2l0ZW1QYXR0ZXJuOi9eKFxzKikoWy0rKl0pXHMrXFsoWyB4WF0pXF1ccysoLiopJC8sZXh0cmFjdEl0ZW1EYXRhOmw9Pih7aW5kZW50TGV2ZWw6bFsxXS5sZW5ndGgsbWFpbkNvbnRlbnQ6bFs0XSxjaGVja2VkOmxbM10udG9Mb3dlckNhc2UoKT09PSJ4In0pLGNyZWF0ZVRva2VuOihsLGEpPT4oe3R5cGU6InRhc2tJdGVtIixyYXc6IiIsbWFpbkNvbnRlbnQ6bC5tYWluQ29udGVudCxpbmRlbnRMZXZlbDpsLmluZGVudExldmVsLGNoZWNrZWQ6bC5jaGVja2VkLHRleHQ6bC5tYWluQ29udGVudCx0b2tlbnM6dC5pbmxpbmVUb2tlbnMobC5tYWluQ29udGVudCksbmVzdGVkVG9rZW5zOmF9KSxjdXN0b21OZXN0ZWRQYXJzZXI6cn0sdCk7cmV0dXJuIG8/W3t0eXBlOiJ0YXNrTGlzdCIscmF3Om8ucmF3LGl0ZW1zOm8uaXRlbXN9XTp0LmJsb2NrVG9rZW5zKGkpfSxzPUtpKG4se2l0ZW1QYXR0ZXJuOi9eKFxzKikoWy0rKl0pXHMrXFsoWyB4WF0pXF1ccysoLiopJC8sZXh0cmFjdEl0ZW1EYXRhOmk9Pih7aW5kZW50TGV2ZWw6aVsxXS5sZW5ndGgsbWFpbkNvbnRlbnQ6aVs0XSxjaGVja2VkOmlbM10udG9Mb3dlckNhc2UoKT09PSJ4In0pLGNyZWF0ZVRva2VuOihpLG8pPT4oe3R5cGU6InRhc2tJdGVtIixyYXc6IiIsbWFpbkNvbnRlbnQ6aS5tYWluQ29udGVudCxpbmRlbnRMZXZlbDppLmluZGVudExldmVsLGNoZWNrZWQ6aS5jaGVja2VkLHRleHQ6aS5tYWluQ29udGVudCx0b2tlbnM6dC5pbmxpbmVUb2tlbnMoaS5tYWluQ29udGVudCksbmVzdGVkVG9rZW5zOm99KSxjdXN0b21OZXN0ZWRQYXJzZXI6cn0sdCk7aWYocylyZXR1cm57dHlwZToidGFza0xpc3QiLHJhdzpzLnJhdyxpdGVtczpzLml0ZW1zfX19LG1hcmtkb3duT3B0aW9uczp7aW5kZW50c0NvbnRlbnQ6ITB9LGFkZENvbW1hbmRzKCl7cmV0dXJue3RvZ2dsZVRhc2tMaXN0OigpPT4oe2NvbW1hbmRzOm59KT0+bi50b2dnbGVMaXN0KHRoaXMubmFtZSx0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lKX19LGFkZEtleWJvYXJkU2hvcnRjdXRzKCl7cmV0dXJueyJNb2QtU2hpZnQtOSI6KCk9PnRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZVRhc2tMaXN0KCl9fX0pO3RlLmNyZWF0ZSh7bmFtZToibGlzdEtpdCIsYWRkRXh0ZW5zaW9ucygpe2NvbnN0IG49W107cmV0dXJuIHRoaXMub3B0aW9ucy5idWxsZXRMaXN0IT09ITEmJm4ucHVzaChsaC5jb25maWd1cmUodGhpcy5vcHRpb25zLmJ1bGxldExpc3QpKSx0aGlzLm9wdGlvbnMubGlzdEl0ZW0hPT0hMSYmbi5wdXNoKGFoLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKSx0aGlzLm9wdGlvbnMubGlzdEtleW1hcCE9PSExJiZuLnB1c2gocGguY29uZmlndXJlKHRoaXMub3B0aW9ucy5saXN0S2V5bWFwKSksdGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0IT09ITEmJm4ucHVzaChnaC5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSksdGhpcy5vcHRpb25zLnRhc2tJdGVtIT09ITEmJm4ucHVzaChheC5jb25maWd1cmUodGhpcy5vcHRpb25zLnRhc2tJdGVtKSksdGhpcy5vcHRpb25zLnRhc2tMaXN0IT09ITEmJm4ucHVzaChjeC5jb25maWd1cmUodGhpcy5vcHRpb25zLnRhc2tMaXN0KSksbn19KTt2YXIgQXI9IiZuYnNwOyIsRWk9IsKgIix1eD1TZS5jcmVhdGUoe25hbWU6InBhcmFncmFwaCIscHJpb3JpdHk6MWUzLGFkZE9wdGlvbnMoKXtyZXR1cm57SFRNTEF0dHJpYnV0ZXM6e319fSxncm91cDoiYmxvY2siLGNvbnRlbnQ6ImlubGluZSoiLHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJwIn1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuWyJwIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0scGFyc2VNYXJrZG93bjoobixlKT0+e2NvbnN0IHQ9bi50b2tlbnN8fFtdO2lmKHQubGVuZ3RoPT09MSYmdFswXS50eXBlPT09ImltYWdlIilyZXR1cm4gZS5wYXJzZUNoaWxkcmVuKFt0WzBdXSk7Y29uc3Qgcj1lLnBhcnNlSW5saW5lKHQpO3JldHVybiB0Lmxlbmd0aD09PTEmJnRbMF0udHlwZT09PSJ0ZXh0IiYmKHRbMF0ucmF3PT09QXJ8fHRbMF0udGV4dD09PUFyfHx0WzBdLnJhdz09PUVpfHx0WzBdLnRleHQ9PT1FaSkmJnIubGVuZ3RoPT09MSYmclswXS50eXBlPT09InRleHQiJiYoclswXS50ZXh0PT09QXJ8fHJbMF0udGV4dD09PUVpKT9lLmNyZWF0ZU5vZGUoInBhcmFncmFwaCIsdm9pZCAwLFtdKTplLmNyZWF0ZU5vZGUoInBhcmFncmFwaCIsdm9pZCAwLHIpfSxyZW5kZXJNYXJrZG93bjoobixlLHQpPT57dmFyIHIscztpZighbilyZXR1cm4iIjtjb25zdCBpPUFycmF5LmlzQXJyYXkobi5jb250ZW50KT9uLmNvbnRlbnQ6W107aWYoaS5sZW5ndGg9PT0wKXtjb25zdCBvPUFycmF5LmlzQXJyYXkoKHI9dD8ucHJldmlvdXNOb2RlKT09bnVsbD92b2lkIDA6ci5jb250ZW50KT90LnByZXZpb3VzTm9kZS5jb250ZW50OltdO3JldHVybigocz10Py5wcmV2aW91c05vZGUpPT1udWxsP3ZvaWQgMDpzLnR5cGUpPT09InBhcmFncmFwaCImJm8ubGVuZ3RoPT09MD9BcjoiIn1yZXR1cm4gZS5yZW5kZXJDaGlsZHJlbihpKX0sYWRkQ29tbWFuZHMoKXtyZXR1cm57c2V0UGFyYWdyYXBoOigpPT4oe2NvbW1hbmRzOm59KT0+bi5zZXROb2RlKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLUFsdC0wIjooKT0+dGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0UGFyYWdyYXBoKCl9fX0pLGR4PS8oPzpefFxzKSh+fig/IVxzK35+KSgoPzpbXn5dKykpfn4oPyFccyt+fikpJC8saHg9Lyg/Ol58XHMpKH5+KD8hXHMrfn4pKCg/Oltefl0rKSl+fig/IVxzK35+KSkvZyxmeD1KdC5jcmVhdGUoe25hbWU6InN0cmlrZSIsYWRkT3B0aW9ucygpe3JldHVybntIVE1MQXR0cmlidXRlczp7fX19LHBhcnNlSFRNTCgpe3JldHVyblt7dGFnOiJzIn0se3RhZzoiZGVsIn0se3RhZzoic3RyaWtlIn0se3N0eWxlOiJ0ZXh0LWRlY29yYXRpb24iLGNvbnN1bWluZzohMSxnZXRBdHRyczpuPT5uLmluY2x1ZGVzKCJsaW5lLXRocm91Z2giKT97fTohMX1dfSxyZW5kZXJIVE1MKHtIVE1MQXR0cmlidXRlczpufSl7cmV0dXJuWyJzIixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyxuKSwwXX0sbWFya2Rvd25Ub2tlbk5hbWU6ImRlbCIscGFyc2VNYXJrZG93bjoobixlKT0+ZS5hcHBseU1hcmsoInN0cmlrZSIsZS5wYXJzZUlubGluZShuLnRva2Vuc3x8W10pKSxyZW5kZXJNYXJrZG93bjoobixlKT0+YH5+JHtlLnJlbmRlckNoaWxkcmVuKG4pfX5+YCxhZGRDb21tYW5kcygpe3JldHVybntzZXRTdHJpa2U6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVTdHJpa2U6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSx1bnNldFN0cmlrZTooKT0+KHtjb21tYW5kczpufSk9Pm4udW5zZXRNYXJrKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLVNoaWZ0LXMiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVTdHJpa2UoKX19LGFkZElucHV0UnVsZXMoKXtyZXR1cm5bZm4oe2ZpbmQ6ZHgsdHlwZTp0aGlzLnR5cGV9KV19LGFkZFBhc3RlUnVsZXMoKXtyZXR1cm5bcXQoe2ZpbmQ6aHgsdHlwZTp0aGlzLnR5cGV9KV19fSkscHg9U2UuY3JlYXRlKHtuYW1lOiJ0ZXh0Iixncm91cDoiaW5saW5lIixwYXJzZU1hcmtkb3duOm49Pih7dHlwZToidGV4dCIsdGV4dDpuLnRleHR8fCIifSkscmVuZGVyTWFya2Rvd246bj0+bi50ZXh0fHwiIn0pLG14PUp0LmNyZWF0ZSh7bmFtZToidW5kZXJsaW5lIixhZGRPcHRpb25zKCl7cmV0dXJue0hUTUxBdHRyaWJ1dGVzOnt9fX0scGFyc2VIVE1MKCl7cmV0dXJuW3t0YWc6InUifSx7c3R5bGU6InRleHQtZGVjb3JhdGlvbiIsY29uc3VtaW5nOiExLGdldEF0dHJzOm49Pm4uaW5jbHVkZXMoInVuZGVybGluZSIpP3t9OiExfV19LHJlbmRlckhUTUwoe0hUTUxBdHRyaWJ1dGVzOm59KXtyZXR1cm5bInUiLEsodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLG4pLDBdfSxwYXJzZU1hcmtkb3duKG4sZSl7cmV0dXJuIGUuYXBwbHlNYXJrKHRoaXMubmFtZXx8InVuZGVybGluZSIsZS5wYXJzZUlubGluZShuLnRva2Vuc3x8W10pKX0scmVuZGVyTWFya2Rvd24obixlKXtyZXR1cm5gKyske2UucmVuZGVyQ2hpbGRyZW4obil9KytgfSxtYXJrZG93blRva2VuaXplcjp7bmFtZToidW5kZXJsaW5lIixsZXZlbDoiaW5saW5lIixzdGFydChuKXtyZXR1cm4gbi5pbmRleE9mKCIrKyIpfSx0b2tlbml6ZShuLGUsdCl7Y29uc3Qgcz0vXihcK1wrKShbXHNcU10rPykoXCtcKykvLmV4ZWMobik7aWYoIXMpcmV0dXJuO2NvbnN0IGk9c1syXS50cmltKCk7cmV0dXJue3R5cGU6InVuZGVybGluZSIscmF3OnNbMF0sdGV4dDppLHRva2Vuczp0LmlubGluZVRva2VucyhpKX19fSxhZGRDb21tYW5kcygpe3JldHVybntzZXRVbmRlcmxpbmU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnNldE1hcmsodGhpcy5uYW1lKSx0b2dnbGVVbmRlcmxpbmU6KCk9Pih7Y29tbWFuZHM6bn0pPT5uLnRvZ2dsZU1hcmsodGhpcy5uYW1lKSx1bnNldFVuZGVybGluZTooKT0+KHtjb21tYW5kczpufSk9Pm4udW5zZXRNYXJrKHRoaXMubmFtZSl9fSxhZGRLZXlib2FyZFNob3J0Y3V0cygpe3JldHVybnsiTW9kLXUiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVVbmRlcmxpbmUoKSwiTW9kLVUiOigpPT50aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVVbmRlcmxpbmUoKX19fSksZ3g9dGUuY3JlYXRlKHtuYW1lOiJzdGFydGVyS2l0IixhZGRFeHRlbnNpb25zKCl7dmFyIG4sZSx0LHI7Y29uc3Qgcz1bXTtyZXR1cm4gdGhpcy5vcHRpb25zLmJvbGQhPT0hMSYmcy5wdXNoKGYwLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYm9sZCkpLHRoaXMub3B0aW9ucy5ibG9ja3F1b3RlIT09ITEmJnMucHVzaChhMC5jb25maWd1cmUodGhpcy5vcHRpb25zLmJsb2NrcXVvdGUpKSx0aGlzLm9wdGlvbnMuYnVsbGV0TGlzdCE9PSExJiZzLnB1c2gobGguY29uZmlndXJlKHRoaXMub3B0aW9ucy5idWxsZXRMaXN0KSksdGhpcy5vcHRpb25zLmNvZGUhPT0hMSYmcy5wdXNoKExkLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZSkpLHRoaXMub3B0aW9ucy5jb2RlQmxvY2shPT0hMSYmcy5wdXNoKGcwLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZUJsb2NrKSksdGhpcy5vcHRpb25zLmRvY3VtZW50IT09ITEmJnMucHVzaCh5MC5jb25maWd1cmUodGhpcy5vcHRpb25zLmRvY3VtZW50KSksdGhpcy5vcHRpb25zLmRyb3BjdXJzb3IhPT0hMSYmcy5wdXNoKHNiLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZHJvcGN1cnNvcikpLHRoaXMub3B0aW9ucy5nYXBjdXJzb3IhPT0hMSYmcy5wdXNoKGliLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZ2FwY3Vyc29yKSksdGhpcy5vcHRpb25zLmhhcmRCcmVhayE9PSExJiZzLnB1c2goazAuY29uZmlndXJlKHRoaXMub3B0aW9ucy5oYXJkQnJlYWspKSx0aGlzLm9wdGlvbnMuaGVhZGluZyE9PSExJiZzLnB1c2goYjAuY29uZmlndXJlKHRoaXMub3B0aW9ucy5oZWFkaW5nKSksdGhpcy5vcHRpb25zLnVuZG9SZWRvIT09ITEmJnMucHVzaCh1Yi5jb25maWd1cmUodGhpcy5vcHRpb25zLnVuZG9SZWRvKSksdGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlIT09ITEmJnMucHVzaChQZC5jb25maWd1cmUodGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlKSksdGhpcy5vcHRpb25zLml0YWxpYyE9PSExJiZzLnB1c2goQzAuY29uZmlndXJlKHRoaXMub3B0aW9ucy5pdGFsaWMpKSx0aGlzLm9wdGlvbnMubGlzdEl0ZW0hPT0hMSYmcy5wdXNoKGFoLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKSx0aGlzLm9wdGlvbnMubGlzdEtleW1hcCE9PSExJiZzLnB1c2gocGguY29uZmlndXJlKChuPXRoaXMub3B0aW9ucyk9PW51bGw/dm9pZCAwOm4ubGlzdEtleW1hcCkpLHRoaXMub3B0aW9ucy5saW5rIT09ITEmJnMucHVzaChHMC5jb25maWd1cmUoKGU9dGhpcy5vcHRpb25zKT09bnVsbD92b2lkIDA6ZS5saW5rKSksdGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0IT09ITEmJnMucHVzaChnaC5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSksdGhpcy5vcHRpb25zLnBhcmFncmFwaCE9PSExJiZzLnB1c2godXguY29uZmlndXJlKHRoaXMub3B0aW9ucy5wYXJhZ3JhcGgpKSx0aGlzLm9wdGlvbnMuc3RyaWtlIT09ITEmJnMucHVzaChmeC5jb25maWd1cmUodGhpcy5vcHRpb25zLnN0cmlrZSkpLHRoaXMub3B0aW9ucy50ZXh0IT09ITEmJnMucHVzaChweC5jb25maWd1cmUodGhpcy5vcHRpb25zLnRleHQpKSx0aGlzLm9wdGlvbnMudW5kZXJsaW5lIT09ITEmJnMucHVzaChteC5jb25maWd1cmUoKHQ9dGhpcy5vcHRpb25zKT09bnVsbD92b2lkIDA6dC51bmRlcmxpbmUpKSx0aGlzLm9wdGlvbnMudHJhaWxpbmdOb2RlIT09ITEmJnMucHVzaChjYi5jb25maWd1cmUoKHI9dGhpcy5vcHRpb25zKT09bnVsbD92b2lkIDA6ci50cmFpbGluZ05vZGUpKSxzfX0pLHl4PWd4O2Z1bmN0aW9uIG5jKG4pe3JldHVybiBBaCgoZSx0KT0+KHtnZXQoKXtyZXR1cm4gZSgpLG59LHNldChyKXtuPXIscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dCgpfSl9KX19KSl9dmFyIGt4PWNsYXNzIGV4dGVuZHMganl7Y29uc3RydWN0b3Iobj17fSl7cmV0dXJuIHN1cGVyKG4pLHRoaXMuY29udGVudENvbXBvbmVudD1udWxsLHRoaXMuYXBwQ29udGV4dD1udWxsLHRoaXMucmVhY3RpdmVTdGF0ZT1uYyh0aGlzLnZpZXcuc3RhdGUpLHRoaXMucmVhY3RpdmVFeHRlbnNpb25TdG9yYWdlPW5jKHRoaXMuZXh0ZW5zaW9uU3RvcmFnZSksdGhpcy5vbigiYmVmb3JlVHJhbnNhY3Rpb24iLCh7bmV4dFN0YXRlOmV9KT0+e3RoaXMucmVhY3RpdmVTdGF0ZS52YWx1ZT1lLHRoaXMucmVhY3RpdmVFeHRlbnNpb25TdG9yYWdlLnZhbHVlPXRoaXMuZXh0ZW5zaW9uU3RvcmFnZX0pLE1oKHRoaXMpfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGU/dGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlOnRoaXMudmlldy5zdGF0ZX1nZXQgc3RvcmFnZSgpe3JldHVybiB0aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZT90aGlzLnJlYWN0aXZlRXh0ZW5zaW9uU3RvcmFnZS52YWx1ZTpzdXBlci5zdG9yYWdlfXJlZ2lzdGVyUGx1Z2luKG4sZSl7Y29uc3QgdD1zdXBlci5yZWdpc3RlclBsdWdpbihuLGUpO3JldHVybiB0aGlzLnJlYWN0aXZlU3RhdGUmJih0aGlzLnJlYWN0aXZlU3RhdGUudmFsdWU9dCksdH11bnJlZ2lzdGVyUGx1Z2luKG4pe2NvbnN0IGU9c3VwZXIudW5yZWdpc3RlclBsdWdpbihuKTtyZXR1cm4gdGhpcy5yZWFjdGl2ZVN0YXRlJiZlJiYodGhpcy5yZWFjdGl2ZVN0YXRlLnZhbHVlPWUpLGV9fSxieD1ycih7bmFtZToiRWRpdG9yQ29udGVudCIscHJvcHM6e2VkaXRvcjp7ZGVmYXVsdDpudWxsLHR5cGU6T2JqZWN0fX0sc2V0dXAobil7Y29uc3QgZT1SZSgpLHQ9VGgoKTtyZXR1cm4gQ2goKCk9Pntjb25zdCByPW4uZWRpdG9yO3ImJnIub3B0aW9ucy5lbGVtZW50JiZlLnZhbHVlJiZyYygoKT0+e3ZhciBzO2lmKCFlLnZhbHVlfHwhKChzPXIudmlldy5kb20pIT1udWxsJiZzLnBhcmVudE5vZGUpKXJldHVybjtjb25zdCBpPXooZS52YWx1ZSk7ZS52YWx1ZS5hcHBlbmQoLi4uci52aWV3LmRvbS5wYXJlbnROb2RlLmNoaWxkTm9kZXMpLHIuY29udGVudENvbXBvbmVudD10LmN0eC5fLHQmJihyLmFwcENvbnRleHQ9ey4uLnQuYXBwQ29udGV4dCxwcm92aWRlczp0LnByb3ZpZGVzfSksci5zZXRPcHRpb25zKHtlbGVtZW50Oml9KSxyLmNyZWF0ZU5vZGVWaWV3cygpfSl9KSxPcygoKT0+e2NvbnN0IHI9bi5lZGl0b3I7ciYmKHIuY29udGVudENvbXBvbmVudD1udWxsLHIuYXBwQ29udGV4dD1udWxsKX0pLHtyb290RWw6ZX19LHJlbmRlcigpe3JldHVybiB1bygiZGl2Iix7cmVmOm49Pnt0aGlzLnJvb3RFbD1ufX0pfX0pLHh4PShuPXt9KT0+e2NvbnN0IGU9RWgoKTtyZXR1cm4gY28oKCk9PntlLnZhbHVlPW5ldyBreChuKX0pLE9zKCgpPT57dmFyIHQscixzLGk7Y29uc3Qgbz0ocj0odD1lLnZhbHVlKT09bnVsbD92b2lkIDA6dC52aWV3LmRvbSk9PW51bGw/dm9pZCAwOnIucGFyZW50Tm9kZSxsPW8/LmNsb25lTm9kZSghMCk7KHM9bz8ucGFyZW50Tm9kZSk9PW51bGx8fHMucmVwbGFjZUNoaWxkKGwsbyksKGk9ZS52YWx1ZSk9PW51bGx8fGkuZGVzdHJveSgpfSksZX07Y29uc3Qgd3g9e3Nsb3RzOntyb290OiIiLGNvbnRlbnQ6InJlbGF0aXZlIHNpemUtZnVsbCBmbGV4LTEiLGJhc2U6WyJ3LWZ1bGwgb3V0bGluZS1ub25lICo6bXktNSAqOmZpcnN0Om10LTAgKjpsYXN0Om1iLTAgc206cHgtOCBzZWxlY3Rpb246YmctcHJpbWFyeS8yMCIsIlsmX3BdOmxlYWRpbmctNyIsIlsmX2FdOnRleHQtcHJpbWFyeSBbJl9hXTpib3JkZXItYiBbJl9hXTpib3JkZXItdHJhbnNwYXJlbnQgWyZfYV06aG92ZXI6Ym9yZGVyLXByaW1hcnkgWyZfYV06Zm9udC1tZWRpdW0iLCJbJl9hXTp0cmFuc2l0aW9uLWNvbG9ycyIsIlsmX2E+Y29kZV06Ym9yZGVyLWRhc2hlZCBbJl9hOmhvdmVyPmNvZGVdOmJvcmRlci1wcmltYXJ5IFsmX2E6aG92ZXI+Y29kZV06dGV4dC1wcmltYXJ5IiwiWyZfYT5jb2RlXTp0cmFuc2l0aW9uLWNvbG9ycyIsIlsmXy5tZW50aW9uXTp0ZXh0LXByaW1hcnkgWyZfLm1lbnRpb25dOmZvbnQtbWVkaXVtIiwiWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KV06dGV4dC1oaWdobGlnaHRlZCBbJl86aXMoaDEsaDIsaDMsaDQsaDUsaDYpXTpmb250LWJvbGQiLCJbJl9oMV06dGV4dC0zeGwiLCJbJl9oMl06dGV4dC0yeGwiLCJbJl9oM106dGV4dC14bCIsIlsmX2g0XTp0ZXh0LWxnIiwiWyZfaDVdOnRleHQtYmFzZSIsIlsmX2g2XTp0ZXh0LWJhc2UiLCJbJl86aXMoaDEsaDIsaDMsaDQsaDUsaDYpPmNvZGVdOmJvcmRlci1kYXNoZWQgWyZfOmlzKGgxLGgyLGgzLGg0LGg1LGg2KT5jb2RlXTpmb250LWJvbGQiLCJbJl9oMj5jb2RlXTp0ZXh0LXhsLzYiLCJbJl9oMz5jb2RlXTp0ZXh0LWxnLzUiLCJbJl9ibG9ja3F1b3RlXTpib3JkZXItcy00IFsmX2Jsb2NrcXVvdGVdOmJvcmRlci1hY2NlbnRlZCBbJl9ibG9ja3F1b3RlXTpwcy00IFsmX2Jsb2NrcXVvdGVdOml0YWxpYyIsIlsmX1tkYXRhLXR5cGU9aG9yaXpvbnRhbFJ1bGVdXTpteS04IFsmX1tkYXRhLXR5cGU9aG9yaXpvbnRhbFJ1bGVdXTpweS0yIiwiWyZfaHJdOmJvcmRlci10IFsmX2hyXTpib3JkZXItZGVmYXVsdCIsIlsmX3ByZV06dGV4dC1zbS82IFsmX3ByZV06Ym9yZGVyIFsmX3ByZV06Ym9yZGVyLW11dGVkIFsmX3ByZV06YmctbXV0ZWQgWyZfcHJlXTpyb3VuZGVkLW1kIFsmX3ByZV06cHgtNCBbJl9wcmVdOnB5LTMgWyZfcHJlXTp3aGl0ZXNwYWNlLXByZS13cmFwIFsmX3ByZV06YnJlYWstd29yZHMgWyZfcHJlXTpvdmVyZmxvdy14LWF1dG8iLCJbJl9wcmVfY29kZV06cC0wIFsmX3ByZV9jb2RlXTp0ZXh0LWluaGVyaXQgWyZfcHJlX2NvZGVdOmZvbnQtaW5oZXJpdCBbJl9wcmVfY29kZV06cm91bmRlZC1ub25lIFsmX3ByZV9jb2RlXTppbmxpbmUgWyZfcHJlX2NvZGVdOmJvcmRlci0wIFsmX3ByZV9jb2RlXTpiZy10cmFuc3BhcmVudCIsIlsmX2NvZGVdOnB4LTEuNSBbJl9jb2RlXTpweS0wLjUgWyZfY29kZV06dGV4dC1zbSBbJl9jb2RlXTpmb250LW1vbm8gWyZfY29kZV06Zm9udC1tZWRpdW0gWyZfY29kZV06cm91bmRlZC1tZCBbJl9jb2RlXTppbmxpbmUtYmxvY2sgWyZfY29kZV06Ym9yZGVyIFsmX2NvZGVdOmJvcmRlci1tdXRlZCBbJl9jb2RlXTp0ZXh0LWhpZ2hsaWdodGVkIFsmX2NvZGVdOmJnLW11dGVkIiwiWyZfOmlzKHVsLG9sKV06cHMtNiIsIlsmX3VsXTpsaXN0LWRpc2MgWyZfdWxdOm1hcmtlcjp0ZXh0LSgtLXVpLWJvcmRlci1hY2NlbnRlZCkiLCJbJl9vbF06bGlzdC1kZWNpbWFsIFsmX29sXTptYXJrZXI6dGV4dC1tdXRlZCIsIlsmX2xpXTpteS0xLjUgWyZfbGldOnBzLTEuNSIsIlsmX2ltZ106cm91bmRlZC1tZCBbJl9pbWddOmJsb2NrIFsmX2ltZ106bWF4LXctZnVsbCBbJl9pbWcuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXTpvdXRsaW5lLTIgWyZfaW1nLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZV06b3V0bGluZS1wcmltYXJ5IiwiWyZfLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZTpub3QoaW1nKTpub3QocHJlKTpub3QoW2RhdGEtbm9kZS12aWV3LXdyYXBwZXJdKV06YmctcHJpbWFyeS8yMCJdfSx2YXJpYW50czp7cGxhY2Vob2xkZXJNb2RlOntmaXJzdExpbmU6e2Jhc2U6IlsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpjb250ZW50LVthdHRyKGRhdGEtcGxhY2Vob2xkZXIpXSBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkXTpiZWZvcmU6dGV4dC1kaW1tZWQgWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZF06YmVmb3JlOmZsb2F0LXN0YXJ0IFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGRdOmJlZm9yZTpoLTAgWyZfOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZF06YmVmb3JlOnBvaW50ZXItZXZlbnRzLW5vbmUifSxldmVyeUxpbmU6e2Jhc2U6IlsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOmNvbnRlbnQtW2F0dHIoZGF0YS1wbGFjZWhvbGRlcildIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOnRleHQtZGltbWVkIFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOmZsb2F0LXN0YXJ0IFsmXzppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eV06YmVmb3JlOmgtMCBbJl86aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHldOmJlZm9yZTpwb2ludGVyLWV2ZW50cy1ub25lIn19fSxkZWZhdWx0VmFyaWFudHM6e3BsYWNlaG9sZGVyTW9kZToiZXZlcnlMaW5lIn19LHZ4PU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUVkaXRvciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29udGVudFR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxzdGFydGVyS2l0Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXI6e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxtYXJrZG93bjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGltYWdlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sbWVudGlvbjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGhhbmRsZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZXh0ZW5zaW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0saW5qZWN0Q1NTOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGluamVjdE5vbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF1dG9mb2N1czp7dHlwZTpbU3RyaW5nLE51bWJlcixCb29sZWFuLG51bGxdLHJlcXVpcmVkOiExfSxlZGl0YWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0RGlyZWN0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZWRpdG9yUHJvcHM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxwYXJzZU9wdGlvbnM6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxjb3JlRXh0ZW5zaW9uT3B0aW9uczp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGVuYWJsZUlucHV0UnVsZXM6e3R5cGU6W0FycmF5LEJvb2xlYW5dLHJlcXVpcmVkOiExfSxlbmFibGVQYXN0ZVJ1bGVzOnt0eXBlOltBcnJheSxCb29sZWFuXSxyZXF1aXJlZDohMX0sZW5hYmxlQ29yZUV4dGVuc2lvbnM6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sZW5hYmxlQ29udGVudENoZWNrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGVtaXRDb250ZW50RXJyb3I6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb25CZWZvcmVDcmVhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQ3JlYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbk1vdW50Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblVubW91bnQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQ29udGVudEVycm9yOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblVwZGF0ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25TZWxlY3Rpb25VcGRhdGU6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uVHJhbnNhY3Rpb246e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uRm9jdXM6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uQmx1cjp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sb25EZXN0cm95Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvblBhc3RlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxvbkRyb3A6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LG9uRGVsZXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxlbmFibGVFeHRlbnNpb25EaXNwYXRjaFRyYW5zYWN0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIl0sc2V0dXAobix7ZXhwb3NlOmUsZW1pdDp0fSl7Y29uc3Qgcj1uLHM9dCxpPU9oKCksbz1mYygpLGw9cGMoImVkaXRvciIsciksYT1sZSgoKT0+enIoe2V4dGVuZDp6cih3eCksLi4uby51aT8uZWRpdG9yfHx7fX0pKHtwbGFjZWhvbGRlck1vZGU6dHlwZW9mIHIucGxhY2Vob2xkZXI9PSJvYmplY3QiP3IucGxhY2Vob2xkZXIubW9kZTp2b2lkIDB9KSksYz1tYyhnYyhyLCJzdGFydGVyS2l0IiwiZXh0ZW5zaW9ucyIsImVkaXRvclByb3BzIiwiY29udGVudFR5cGUiLCJjbGFzcyIsInBsYWNlaG9sZGVyIiwibWFya2Rvd24iLCJpbWFnZSIsIm1lbnRpb24iLCJoYW5kbGVycyIpKSx1PWxlKCgpPT5ndChyLmVkaXRvclByb3BzLHthdHRyaWJ1dGVzOnthdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsLi4uaSxjbGFzczphLnZhbHVlLmJhc2Uoe2NsYXNzOmwudmFsdWU/LmJhc2V9KX19KSksZD1sZSgoKT0+ci5jb250ZW50VHlwZXx8KHR5cGVvZiByLm1vZGVsVmFsdWU9PSJzdHJpbmciPyJodG1sIjoianNvbiIpKSxoPWxlKCgpPT5ndChyLnN0YXJ0ZXJLaXQse2NvZGU6ITEsaG9yaXpvbnRhbFJ1bGU6ITEsZHJvcGN1cnNvcjp7Y29sb3I6InZhcigtLXVpLXByaW1hcnkpIix3aWR0aDoyfSxsaW5rOntvcGVuT25DbGljazohMX19KSksZj1sZSgoKT0+e2NvbnN0IHc9dHlwZW9mIHIucGxhY2Vob2xkZXI9PSJzdHJpbmciP3twbGFjZWhvbGRlcjpyLnBsYWNlaG9sZGVyfTpyLnBsYWNlaG9sZGVyLHttb2RlOngsLi4udn09d3x8e307cmV0dXJuIGd0KHYse3Nob3dPbmx5V2hlbkVkaXRhYmxlOiExLHNob3dPbmx5Q3VycmVudDohMH0pfSkscD1sZSgoKT0+Z3Qoci5tYXJrZG93bix7bWFya2VkT3B0aW9uczp7Z2ZtOiEwfX0pKSxtPWxlKCgpPT50eXBlb2Ygci5pbWFnZT09ImJvb2xlYW4iP3t9OnIuaW1hZ2UpLGc9bGUoKCk9Pmd0KHR5cGVvZiByLm1lbnRpb249PSJib29sZWFuIj97fTpyLm1lbnRpb24se0hUTUxBdHRyaWJ1dGVzOntjbGFzczoibWVudGlvbiJ9LHJlbmRlclRleHQoe25vZGU6d30pe3JldHVybmAke3cuYXR0cnMubWVudGlvblN1Z2dlc3Rpb25DaGFyPz8iQCJ9JHt3LmF0dHJzLmxhYmVsPz93LmF0dHJzLmlkfWB9LHJlbmRlckhUTUwoe29wdGlvbnM6dyxub2RlOnh9KXtyZXR1cm5bInNwYW4iLEsoeyJkYXRhLXR5cGUiOiJtZW50aW9uIn0sdy5IVE1MQXR0cmlidXRlcyksYCR7eC5hdHRycy5tZW50aW9uU3VnZ2VzdGlvbkNoYXI/PyJAIn0ke3guYXR0cnMubGFiZWw/P3guYXR0cnMuaWR9YF19fSkpLHk9bGUoKCk9PltkLnZhbHVlPT09Im1hcmtkb3duIiYmbzAuY29uZmlndXJlKHAudmFsdWUpLHl4LmNvbmZpZ3VyZShoLnZhbHVlKSxBay5leHRlbmQoe2V4Y2x1ZGVzOiJjb2RlIn0pLE9rLmV4dGVuZCh7cmVuZGVySFRNTCgpe3JldHVyblsiZGl2IixLKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcyx7ImRhdGEtdHlwZSI6dGhpcy5uYW1lfSksWyJociJdXX19KSxyLmltYWdlIT09ITEmJklrLmNvbmZpZ3VyZShtLnZhbHVlKSxyLm1lbnRpb24hPT0hMSYmX2suY29uZmlndXJlKGcudmFsdWUpLHIucGxhY2Vob2xkZXImJmRiLmNvbmZpZ3VyZShmLnZhbHVlKSwuLi5yLmV4dGVuc2lvbnN8fFtdXS5maWx0ZXIodz0+ISF3KSksaz14eCh7Li4uYy52YWx1ZSxjb250ZW50OnIubW9kZWxWYWx1ZSxjb250ZW50VHlwZTpkLnZhbHVlLGV4dGVuc2lvbnM6eS52YWx1ZSxlZGl0b3JQcm9wczp1LnZhbHVlLG9uQ3JlYXRlOih7ZWRpdG9yOnd9KT0+e3IucGxhY2Vob2xkZXImJncudmlldy5kaXNwYXRjaCh3LnN0YXRlLnRyKX0sb25VcGRhdGU6KHtlZGl0b3I6d30pPT57bGV0IHg7dHJ5e2QudmFsdWU9PT0iaHRtbCI/eD13LmdldEhUTUwoKTpkLnZhbHVlPT09Impzb24iP3g9dy5nZXRKU09OKCk6ZC52YWx1ZT09PSJtYXJrZG93biImJih4PXcuZ2V0TWFya2Rvd24oKSl9Y2F0Y2h7eD13LmdldFRleHQoKX1zKCJ1cGRhdGU6bW9kZWxWYWx1ZSIseCl9fSk7TmgoKCk9PnIubW9kZWxWYWx1ZSx3PT57aWYoIWsudmFsdWV8fHc9PW51bGwpcmV0dXJuO2NvbnN0IHg9ZC52YWx1ZT09PSJodG1sIj9rLnZhbHVlLmdldEhUTUwoKTpkLnZhbHVlPT09Impzb24iP0pTT04uc3RyaW5naWZ5KGsudmFsdWUuZ2V0SlNPTigpKTpkLnZhbHVlPT09Im1hcmtkb3duIj9rLnZhbHVlLmdldE1hcmtkb3duKCk6ay52YWx1ZS5nZXRUZXh0KCksdj1kLnZhbHVlPT09Impzb24iJiZ0eXBlb2Ygdz09Im9iamVjdCI/SlNPTi5zdHJpbmdpZnkodyk6U3RyaW5nKHcpO2lmKHghPT12KXtjb25zdCBNPWsudmFsdWUuc3RhdGUuc2VsZWN0aW9uLmZyb207ay52YWx1ZS5jb21tYW5kcy5zZXRDb250ZW50KHcse2NvbnRlbnRUeXBlOmQudmFsdWV9KTtjb25zdCBSPWsudmFsdWUuc3RhdGUuZG9jO008PVIuY29udGVudC5zaXplJiZrLnZhbHVlLmNvbW1hbmRzLnNldFRleHRTZWxlY3Rpb24oTSl9fSk7Y29uc3QgYj1sZSgoKT0+KHsuLi5EZCgpLC4uLnIuaGFuZGxlcnN9KSk7cmV0dXJuIFJoKCJlZGl0b3JIYW5kbGVycyIsYiksZSh7ZWRpdG9yOmt9KSwodyx4KT0+KGhlKCksQmUoeihBaSkse2FzOm4uYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOlJuKGEudmFsdWUucm9vdCh7Y2xhc3M6W3oobCk/LnJvb3Qsci5jbGFzc119KSl9LHtkZWZhdWx0OmRlKCgpPT5beihrKT8oaGUoKSxzbihJbix7a2V5OjB9LFt5Yyh3LiRzbG90cywiZGVmYXVsdCIse2VkaXRvcjp6KGspLGhhbmRsZXJzOmIudmFsdWV9KSxRKHooYngpLHtyb2xlOiJwcmVzZW50YXRpb24iLGVkaXRvcjp6KGspLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpSbihhLnZhbHVlLmNvbnRlbnQoe2NsYXNzOnoobCk/LmNvbnRlbnR9KSl9LG51bGwsOCxbImVkaXRvciIsImNsYXNzIl0pXSw2NCkpOkRuKCIiLCEwKV0pLF86M30sOCxbImFzIiwiY2xhc3MiXSkpfX0pO2Z1bmN0aW9uIFN4KCl7ZnVuY3Rpb24gbigpe3JldHVybiBRcygiL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvb3B0aW9ucyIpfWZ1bmN0aW9uIGUocil7cmV0dXJuIFFzKCIvYXBpL3N5c3RlbS9kaXNwYXRjaC9wcmV2aWV3Iix7bWV0aG9kOiJQT1NUIixib2R5OnJ9KX1mdW5jdGlvbiB0KHIpe3JldHVybiBRcygiL2FwaS9zeXN0ZW0vZGlzcGF0Y2gvc2VuZCIse21ldGhvZDoiUE9TVCIsYm9keTpyfSl9cmV0dXJue2ZldGNoRGlzcGF0Y2hPcHRpb25zOm4scHJldmlld0Rpc3BhdGNoOmUsc2VuZERpc3BhdGNoOnR9fWNvbnN0IEN4PWtjKHthbGxVc2VyczpXaCgpLmRlZmF1bHQoITEpLG9yZ2FuaXphdGlvbklkczpYcyhMbigpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSkscm9sZUlkczpYcyhMbigpLm1pbigxKSkubWF4KDEwMCkuZGVmYXVsdChbXSksZW1haWxzOlhzKExuKCkudHJpbSgpLnRvTG93ZXJDYXNlKCkuZW1haWwoKSkubWF4KDIwMCkuZGVmYXVsdChbXSl9KS5yZWZpbmUobj0+bi5hbGxVc2Vyc3x8bi5vcmdhbml6YXRpb25JZHMubGVuZ3RoPjB8fG4ucm9sZUlkcy5sZW5ndGg+MHx8bi5lbWFpbHMubGVuZ3RoPjAse21lc3NhZ2U6IlNlbGVjdCBhdCBsZWFzdCBvbmUgcmVjaXBpZW50IGNyaXRlcmlvbiJ9KSxUeD0vXlteXHJcbl0qJC8sTXg9LzxbXj5dKj4vZyxFeD0vJm5ic3A7L2dpLEF4PS88aW1nXGIvaTtmdW5jdGlvbiB5aChuKXtyZXR1cm4gbi5yZXBsYWNlKE14LCIiKS5yZXBsYWNlKEV4LCIgIikudHJpbSgpLmxlbmd0aD4wfHxBeC50ZXN0KG4pfWtjKHtmaWx0ZXI6Q3gsc3ViamVjdDpMbigpLnRyaW0oKS5taW4oMSkubWF4KDIwMCkucmVnZXgoVHgsIlN1YmplY3QgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MiKSxib2R5OkxuKCkudHJpbSgpLm1pbigxKS5tYXgoNWU0KS5yZWZpbmUoeWgsIkJvZHkgY2Fubm90IGJlIGVtcHR5Iil9KTtjb25zdCBPeD17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTYifSxOeD17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIn0sUng9e2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSxJeD1ycih7X19uYW1lOiJTeXN0ZW1FbWFpbERpc3BhdGNoIixzZXR1cChuKXtjb25zdCBlPS9bXHMsO10rLyx0PVN4KCkscj1JaCgpLHtkYXRhOnN9PURoKCJzeXN0ZW0tZGlzcGF0Y2gtb3B0aW9ucyIsKCk9PnQuZmV0Y2hEaXNwYXRjaE9wdGlvbnMoKSx7ZGVmYXVsdDooKT0+KHtvcmdhbml6YXRpb25zOltdLHJvbGVzOltdfSl9KSxpPWxlKCgpPT4ocy52YWx1ZT8ub3JnYW5pemF0aW9ucz8/W10pLm1hcChDPT4oe2xhYmVsOkMubGFiZWwsdmFsdWU6Qy5pZH0pKSksbz1sZSgoKT0+KHMudmFsdWU/LnJvbGVzPz9bXSkubWFwKEM9Pih7bGFiZWw6Qy5sYWJlbCx2YWx1ZTpDLmlkfSkpKSxsPVJlKHthbGxVc2VyczohMSxvcmdhbml6YXRpb25JZHM6W10scm9sZUlkczpbXSxlbWFpbHM6W119KSxhPVJlKCIiKTtMaChhLFBoKGwudmFsdWUsImVtYWlscyIpLHtkaXJlY3Rpb246Imx0ciIsdHJhbnNmb3JtOntsdHI6Qz0+Qy5zcGxpdChlKS5tYXAoTT0+TS50cmltKCkudG9Mb3dlckNhc2UoKSkuZmlsdGVyKEJvb2xlYW4pfX0pO2NvbnN0IGM9UmUoIiIpLHU9UmUoIiIpLGQ9W1t7a2luZDoibWFyayIsbWFyazoiYm9sZCIsaWNvbjoiaS1sdWNpZGUtYm9sZCIsdG9vbHRpcDp7dGV4dDoiQm9sZCJ9fSx7a2luZDoibWFyayIsbWFyazoiaXRhbGljIixpY29uOiJpLWx1Y2lkZS1pdGFsaWMiLHRvb2x0aXA6e3RleHQ6Ikl0YWxpYyJ9fSx7a2luZDoibWFyayIsbWFyazoic3RyaWtlIixpY29uOiJpLWx1Y2lkZS1zdHJpa2V0aHJvdWdoIix0b29sdGlwOnt0ZXh0OiJTdHJpa2V0aHJvdWdoIn19XSxbe2tpbmQ6ImhlYWRpbmciLGxldmVsOjIsaWNvbjoiaS1sdWNpZGUtaGVhZGluZy0yIix0b29sdGlwOnt0ZXh0OiJIZWFkaW5nIn19LHtraW5kOiJidWxsZXRMaXN0IixpY29uOiJpLWx1Y2lkZS1saXN0Iix0b29sdGlwOnt0ZXh0OiJCdWxsZXQgbGlzdCJ9fSx7a2luZDoib3JkZXJlZExpc3QiLGljb246ImktbHVjaWRlLWxpc3Qtb3JkZXJlZCIsdG9vbHRpcDp7dGV4dDoiTnVtYmVyZWQgbGlzdCJ9fSx7a2luZDoiYmxvY2txdW90ZSIsaWNvbjoiaS1sdWNpZGUtcXVvdGUiLHRvb2x0aXA6e3RleHQ6IlF1b3RlIn19XSxbe2tpbmQ6ImxpbmsiLGljb246ImktbHVjaWRlLWxpbmsiLHRvb2x0aXA6e3RleHQ6IkxpbmsifX0se2tpbmQ6InVuZG8iLGljb246ImktbHVjaWRlLXVuZG8tMiIsdG9vbHRpcDp7dGV4dDoiVW5kbyJ9fSx7a2luZDoicmVkbyIsaWNvbjoiaS1sdWNpZGUtcmVkby0yIix0b29sdGlwOnt0ZXh0OiJSZWRvIn19XV0saD1SZShudWxsKSxmPVJlKG51bGwpLHA9UmUoITEpLG09UmUoITEpLGc9UmUoITEpLHk9bGUoKCk9PmwudmFsdWUuYWxsVXNlcnN8fGwudmFsdWUub3JnYW5pemF0aW9uSWRzLmxlbmd0aD4wfHxsLnZhbHVlLnJvbGVJZHMubGVuZ3RoPjB8fGwudmFsdWUuZW1haWxzLmxlbmd0aD4wKSxrPWxlKCgpPT55LnZhbHVlJiZjLnZhbHVlLnRyaW0oKS5sZW5ndGg+MCYmeWgodS52YWx1ZSkpO2Z1bmN0aW9uIGIoKXtoLnZhbHVlPW51bGwsZi52YWx1ZT1udWxsfWFzeW5jIGZ1bmN0aW9uIHcoKXtpZih5LnZhbHVlKXtwLnZhbHVlPSEwLGYudmFsdWU9bnVsbDt0cnl7aC52YWx1ZT1hd2FpdCB0LnByZXZpZXdEaXNwYXRjaCh7Li4ubC52YWx1ZX0pfWNhdGNoKEMpe2NvbnN0IE09QztyLmFkZCh7dGl0bGU6IlByZXZpZXcgZmFpbGVkIixkZXNjcmlwdGlvbjpNPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7cC52YWx1ZT0hMX19fWZ1bmN0aW9uIHgoKXtrLnZhbHVlJiYoZy52YWx1ZT0hMCl9YXN5bmMgZnVuY3Rpb24gdigpe20udmFsdWU9ITA7dHJ5e2YudmFsdWU9YXdhaXQgdC5zZW5kRGlzcGF0Y2goe2ZpbHRlcjp7Li4ubC52YWx1ZX0sc3ViamVjdDpjLnZhbHVlLnRyaW0oKSxib2R5OnUudmFsdWV9KSxnLnZhbHVlPSExLGgudmFsdWU9bnVsbCxyLmFkZCh7dGl0bGU6YFNlbnQgJHtmLnZhbHVlLnNlbnR9IGVtYWlsKHMpYCxjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChDKXtjb25zdCBNPUM7ci5hZGQoe3RpdGxlOiJEaXNwYXRjaCBmYWlsZWQiLGRlc2NyaXB0aW9uOk0/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJVbmtub3duIGVycm9yIixjb2xvcjoiZXJyb3IifSl9ZmluYWxseXttLnZhbHVlPSExfX1yZXR1cm4oQyxNKT0+e2NvbnN0IFI9YmgsTz14aCxQPXpoLEY9VmgsXz0kaCxMPUJoLEg9VGssbmU9dngsb2U9U24sY3Q9cWgsJD1IaDtyZXR1cm4gaGUoKSxzbigiZGl2IixPeCxbUShSLHt0aXRsZToiU2VuZCBlbWFpbCIsZGVzY3JpcHRpb246IkNvbXBvc2UgYSBtZXNzYWdlIGFuZCBkaXNwYXRjaCBpdCB0byBhIGZpbHRlcmVkIHNldCBvZiB1c2Vycy4gUmVjaXBpZW50cyB3aG8gdHVybmVkIG9mZiBlbWFpbCBhcmUgc2tpcHBlZC4iLHZhcmlhbnQ6Im5ha2VkIn0pLFEoUix7dmFyaWFudDoic3VidGxlIix1aTp7Y29udGFpbmVyOiJmbGV4IGZsZXgtY29sIGdhcC00In19LHtkZWZhdWx0OmRlKCgpPT5bUShQLHtsYWJlbDoiQWxsIHVzZXJzIixkZXNjcmlwdGlvbjoiU2VuZCB0byBldmVyeSB1c2VyIChtaW51cyBvcHQtb3V0cykuIixjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIn0se2RlZmF1bHQ6ZGUoKCk9PltRKE8se21vZGVsVmFsdWU6eihsKS5hbGxVc2Vycywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W01bMF18fChNWzBdPUo9PnoobCkuYWxsVXNlcnM9SiksYl19LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSx6KGwpLmFsbFVzZXJzP0RuKCIiLCEwKTooaGUoKSxzbihJbix7a2V5OjB9LFtRKFAse2xhYmVsOiJPcmdhbml6YXRpb25zIixkZXNjcmlwdGlvbjoiTWVtYmVycyBvZiB0aGUgc2VsZWN0ZWQgb3JnYW5pemF0aW9ucy4ifSx7ZGVmYXVsdDpkZSgoKT0+W1EoRix7bW9kZWxWYWx1ZTp6KGwpLm9yZ2FuaXphdGlvbklkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W01bMV18fChNWzFdPUo9PnoobCkub3JnYW5pemF0aW9uSWRzPUopLGJdLGl0ZW1zOnooaSksInZhbHVlLWtleSI6InZhbHVlIixtdWx0aXBsZToiIixzZWFyY2hhYmxlOiIiLHBsYWNlaG9sZGVyOiJTZWxlY3Qgb3JnYW5pemF0aW9ucyIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJpdGVtcyJdKV0pLF86MX0pLFEoUCx7bGFiZWw6IlJvbGVzIixkZXNjcmlwdGlvbjoiVXNlcnMgYXNzaWduZWQgdGhlIHNlbGVjdGVkIHJvbGVzLiJ9LHtkZWZhdWx0OmRlKCgpPT5bUShGLHttb2RlbFZhbHVlOnoobCkucm9sZUlkcywib25VcGRhdGU6bW9kZWxWYWx1ZSI6W01bMl18fChNWzJdPUo9PnoobCkucm9sZUlkcz1KKSxiXSxpdGVtczp6KG8pLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsbXVsdGlwbGU6IiIsc2VhcmNoYWJsZToiIixwbGFjZWhvbGRlcjoiU2VsZWN0IHJvbGVzIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksUShQLHtsYWJlbDoiRW1haWxzIixkZXNjcmlwdGlvbjoiU3BlY2lmaWMgYWRkcmVzc2VzIChvbmUgcGVyIGxpbmUgLyBjb21tYS1zZXBhcmF0ZWQpLiBPbmx5IG1hdGNoaW5nIHVzZXJzIGFyZSBlbWFpbGVkLiJ9LHtkZWZhdWx0OmRlKCgpPT5bUShfLHttb2RlbFZhbHVlOnooYSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOltNWzNdfHwoTVszXT1KPT5ocihhKT9hLnZhbHVlPUo6bnVsbCksYl0scm93czozLHBsYWNlaG9sZGVyOiJhQGV4YW1wbGUuY29tLCBiQGV4YW1wbGUuY29tIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pXSw2NCkpXSksXzoxfSksUShSLHt2YXJpYW50OiJzdWJ0bGUiLHVpOntjb250YWluZXI6ImZsZXggZmxleC1jb2wgZ2FwLTQifX0se2RlZmF1bHQ6ZGUoKCk9PltRKFAse2xhYmVsOiJTdWJqZWN0IixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6ZGUoKCk9PltRKEwse21vZGVsVmFsdWU6eihjKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6TVs0XXx8KE1bNF09Sj0+aHIoYyk/Yy52YWx1ZT1KOm51bGwpLG1heGxlbmd0aDoiMjAwIixwbGFjZWhvbGRlcjoiU3ViamVjdCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxRKFAse2xhYmVsOiJCb2R5IixyZXF1aXJlZDoiIixkZXNjcmlwdGlvbjoiUmljaCB0ZXh0IOKAlCBmb3JtYXR0aW5nIGlzIHByZXNlcnZlZCBpbiB0aGUgZW1haWwuIn0se2RlZmF1bHQ6ZGUoKCk9PltRKG5lLHttb2RlbFZhbHVlOnoodSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOk1bNV18fChNWzVdPUo9PmhyKHUpP3UudmFsdWU9SjpudWxsKSwiY29udGVudC10eXBlIjoiaHRtbCIscGxhY2Vob2xkZXI6IldyaXRlIHlvdXIgbWVzc2FnZeKApiIsY2xhc3M6InctZnVsbCBtaW4taC00OCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZGVmYXVsdCBbJl8uUHJvc2VNaXJyb3JdOnB4LTQifSx7ZGVmYXVsdDpkZSgoe2VkaXRvcjpKfSk9PltRKEgse2VkaXRvcjpKLGl0ZW1zOmQsY2xhc3M6Im1iLTIgYm9yZGVyLWIgYm9yZGVyLW11dGVkIHAtMiJ9LG51bGwsOCxbImVkaXRvciJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KV0pLF86MX0pLE9yKCJkaXYiLE54LFtRKG9lLHtsYWJlbDoiUHJldmlldyByZWNpcGllbnRzIix2YXJpYW50OiJvdXRsaW5lIixsb2FkaW5nOnoocCksZGlzYWJsZWQ6IXooeSksb25DbGljazp3fSxudWxsLDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSksUShvZSx7bGFiZWw6IlNlbmQgZW1haWwiLGljb246ImktbHVjaWRlLXNlbmQiLGRpc2FibGVkOiF6KGspLG9uQ2xpY2s6eH0sbnVsbCw4LFsiZGlzYWJsZWQiXSldKSx6KGgpPyhoZSgpLEJlKGN0LHtrZXk6MCxjb2xvcjoiaW5mbyIsdmFyaWFudDoic3VidGxlIixpY29uOiJpLWx1Y2lkZS11c2VycyIsdGl0bGU6YCR7eihoKS5lbmFibGVkfSB3aWxsIHJlY2VpdmUgwrcgJHt6KGgpLnNraXBwZWR9IHNraXBwZWQgKGVtYWlsIG9mZikgwrcgJHt6KGgpLnRvdGFsfSBtYXRjaGVkYH0sbnVsbCw4LFsidGl0bGUiXSkpOkRuKCIiLCEwKSx6KGYpPyhoZSgpLEJlKGN0LHtrZXk6MSxjb2xvcjp6KGYpLmZhaWxlZD8id2FybmluZyI6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsaWNvbjoiaS1sdWNpZGUtbWFpbC1jaGVjayIsdGl0bGU6YFNlbnQgJHt6KGYpLnNlbnR9LCBmYWlsZWQgJHt6KGYpLmZhaWxlZH0sIHNraXBwZWQgJHt6KGYpLnNraXBwZWR9IG9mICR7eihmKS50b3RhbH0gbWF0Y2hlZGB9LG51bGwsOCxbImNvbG9yIiwidGl0bGUiXSkpOkRuKCIiLCEwKSxRKCQse29wZW46eihnKSwib25VcGRhdGU6b3BlbiI6TVs3XXx8KE1bN109Sj0+aHIoZyk/Zy52YWx1ZT1KOm51bGwpLHRpdGxlOiJTZW5kIHRoaXMgZW1haWw/Iix1aTp7Zm9vdGVyOiJqdXN0aWZ5LWVuZCJ9fSx7Ym9keTpkZSgoKT0+W09yKCJwIixSeCxbTVs4XXx8KE1bOF09cGwoIiBUaGlzIHdpbGwgZW1haWwgIiwtMSkpLE9yKCJzdHJvbmciLG51bGwsX2goeihoKT96KGgpLmVuYWJsZWQ6InRoZSBtYXRjaGluZyIpLDEpLE1bOV18fChNWzldPXBsKCIgdXNlcihzKS4gUmVjaXBpZW50cyB3aG8gZGlzYWJsZWQgZW1haWwgbm90aWZpY2F0aW9ucyBhcmUgc2tpcHBlZCBhdXRvbWF0aWNhbGx5LiAiLC0xKSldKV0pLGZvb3RlcjpkZSgoKT0+W1Eob2Use2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsbGFiZWw6IkNhbmNlbCIsb25DbGljazpNWzZdfHwoTVs2XT1KPT5nLnZhbHVlPSExKX0pLFEob2Use2NvbG9yOiJwcmltYXJ5IixsYWJlbDoiU2VuZCIsbG9hZGluZzp6KG0pLG9uQ2xpY2s6dn0sbnVsbCw4LFsibG9hZGluZyJdKV0pLF86MX0sOCxbIm9wZW4iXSldKX19fSksRHg9T2JqZWN0LmFzc2lnbihJeCx7X19uYW1lOiJTeXN0ZW1FbWFpbERpc3BhdGNoIn0pLFh4PXJyKHtfX25hbWU6Im5vdGlmaWNhdGlvbnMiLHNldHVwKG4pe3JldHVybiBGaCh7dGl0bGU6IlN5c3RlbSDCtyBOb3RpZmljYXRpb25zIn0pLChlLHQpPT4oaGUoKSxCZShEeCkpfX0pO2V4cG9ydHtYeCBhcyBkZWZhdWx0fTsK", "/_nuxt/Dc46QwDJ.js": "aW1wb3J0e2FzIGFzIHR9ZnJvbSIuL284dGRfRzBKLmpzIjtmdW5jdGlvbiBnKCl7ZnVuY3Rpb24gaSgpe3JldHVybiB0KCIvYXBpL3BheW1lbnRzL2JpbGxpbmcvYmFsYW5jZSIpfWZ1bmN0aW9uIGUobj0xLHA9MjApe3JldHVybiB0KGAvYXBpL3BheW1lbnRzL2JpbGxpbmcvdHJhbnNhY3Rpb25zP3BhZ2U9JHtufSZsaW1pdD0ke3B9YCl9ZnVuY3Rpb24gYShuKXtyZXR1cm4gdCgiL2FwaS9wYXltZW50cy9zZXBheS9jaGVja291dCIse21ldGhvZDoiUE9TVCIsYm9keTp7YW1vdW50Om59fSl9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gdChgL2FwaS9wYXltZW50cy9zZXBheS9zdGF0dXM/aWQ9JHtufWApfWZ1bmN0aW9uIGMoKXtyZXR1cm4gdCgiL2FwaS9vcmdhbml6YXRpb24vaW52b2ljZS9zZXR0aW5ncyIpfWZ1bmN0aW9uIHIobil7cmV0dXJuIHQoIi9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2Uvc2V0dGluZ3MiLHttZXRob2Q6IlBBVENIIixib2R5Om59KX1mdW5jdGlvbiBzKCl7cmV0dXJuIHQoIi9hcGkvb3JnYW5pemF0aW9uL2ludm9pY2UiKX1mdW5jdGlvbiB1KG4pe3JldHVybiB0KCIvYXBpL29yZ2FuaXphdGlvbi9pbnZvaWNlIix7bWV0aG9kOiJQT1NUIixib2R5Om59KX1yZXR1cm57ZmV0Y2hCYWxhbmNlOmksZmV0Y2hUcmFuc2FjdGlvbnM6ZSxjaGVja291dDphLGZldGNoVHJhbnNhY3Rpb25TdGF0dXM6byxmZXRjaEJpbGxpbmdTZXR0aW5nczpjLHVwZGF0ZUJpbGxpbmdTZXR0aW5nczpyLGZldGNoSW52b2ljZXM6cyxjcmVhdGVJbnZvaWNlOnV9fWV4cG9ydHtnIGFzIHV9Owo=", "/_nuxt/Dl-Dzm7z.js": "aW1wb3J0e18gYXMgdCxvIGFzIHMsYyxMIGFzIG59ZnJvbSIuL284dGRfRzBKLmpzIjtjb25zdCByPXt9LG89e2NsYXNzOiJtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBweS0xNiBiZy1kZWZhdWx0In07ZnVuY3Rpb24gYShlLGYpe3JldHVybiBzKCksYygiZGl2IixvLFtuKGUuJHNsb3RzLCJkZWZhdWx0IildKX1jb25zdCBfPXQocixbWyJyZW5kZXIiLGFdXSk7ZXhwb3J0e18gYXMgZGVmYXVsdH07Cg==", "/_nuxt/Dm794qxI.js": "aW1wb3J0Ii4vbzh0ZF9HMEouanMiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBVUkwoZ2xvYmFsVGhpcy5sb2NhdGlvbi5ocmVmKX1leHBvcnR7dCBhcyB1fTsK", "/_nuxt/DpAvtN8g.js": "aW1wb3J0e2YgYXMgUyxTIGFzIFksUiBhcyBKLG8gYXMgZCxoIGFzIE8sdyBhcyBjLGIgYXMgYSxEIGFzIEssSCBhcyBRLGkgYXMgbixhciBhcyBXLGEgYXMgXyxFIGFzIFgsdiBhcyBBLGosYyBhcyB5LHQgYXMgJCxkIGFzIFIsbCBhcyBGLEYgYXMgSSxxIGFzIE0sayBhcyBaLHUgYXMgZWUsZyBhcyB0ZSxwIGFzIG5lLHogYXMgYWUsRyBhcyBvZSxWIGFzIGxlLHIgYXMgTixhMSBhcyBpZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIHNlfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0e3UgYXMgcmV9ZnJvbSIuL0RZWmxnMC01LmpzIjtpbXBvcnR7XyBhcyBjZX1mcm9tIi4vRE9DRkRUY1kuanMiO2ltcG9ydHtvIGFzIEwsXyBhcyBQLG4gYXMgVCxzIGFzIER9ZnJvbSIuL0J1TFN1QThNLmpzIjtpbXBvcnR7XyBhcyB1ZX1mcm9tIi4vQ0dYZ1NNWmguanMiO2ltcG9ydHtfIGFzIGRlfWZyb20iLi9fMmxTZHIxMy5qcyI7aW1wb3J0e18gYXMgbWV9ZnJvbSIuLzRsSG15SGJILmpzIjtpbXBvcnR7XyBhcyBwZX1mcm9tIi4vQmQ0LU9jMzYuanMiO2ltcG9ydCIuL0N0YTE1c0ctLmpzIjtpbXBvcnQiLi9DWWFtekxtNS5qcyI7aW1wb3J0Ii4vRHZkaHlwRGkuanMiO2ltcG9ydCIuL0J0OFMwZG1sLmpzIjtpbXBvcnQiLi9CN3M1cGpqUi5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgcT1bIlVTRCIsIkVVUiIsIkdCUCIsIlZORCIsIkpQWSIsIkFVRCIsIkNBRCJdLHo9TCh7bmFtZTpEKCkubWluKDEpLm1heCgyMDApLGRlc2NyaXB0aW9uOkQoKS5tYXgoMmUzKS5vcHRpb25hbCgpLHR5cGU6UChbIm9uZV90aW1lIiwicmVjdXJyaW5nIl0pLmRlZmF1bHQoIm9uZV90aW1lIikscHJpY2U6VCgpLmludCgpLm1pbigwKSxwcmljZV9jdXJyZW5jeTpQKHEpLmRlZmF1bHQoIlVTRCIpLGJpbGxpbmdfaW50ZXJ2YWw6UChbIm1vbnRoIiwieWVhciJdKS5vcHRpb25hbCgpLHN0YXR1czpQKFsiYWN0aXZlIiwiaW5hY3RpdmUiXSkuZGVmYXVsdCgiYWN0aXZlIil9KTt6LnJlZmluZShzPT5zLnR5cGUhPT0icmVjdXJyaW5nInx8ISFzLmJpbGxpbmdfaW50ZXJ2YWwse21lc3NhZ2U6ImJpbGxpbmdfaW50ZXJ2YWwgaXMgcmVxdWlyZWQgZm9yIHJlY3VycmluZyBwcm9kdWN0cyIscGF0aDpbImJpbGxpbmdfaW50ZXJ2YWwiXX0pO3oucGFydGlhbCgpO2NvbnN0IF9lPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCJ9LGZlPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCJ9LHZlPXtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiJ9LHllPVMoe19fbmFtZToiUHJvZHVjdEZvcm0iLHByb3BzOntpbml0aWFsVmFsdWVzOnt9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOlsic3VibWl0IiwiY2FuY2VsIl0sc2V0dXAocyx7ZW1pdDp1fSl7Y29uc3Qgbz1zLHA9dSxsPUwoe25hbWU6RCgpLm1pbigxLCJOYW1lIGlzIHJlcXVpcmVkIikubWF4KDIwMCksZGVzY3JpcHRpb246RCgpLm1heCgyZTMpLm9wdGlvbmFsKCksdHlwZTpQKFsib25lX3RpbWUiLCJyZWN1cnJpbmciXSkscHJpY2U6VCgpLmludCgpLm1pbigwLCJQcmljZSBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpLHByaWNlX2N1cnJlbmN5OlAocSksYmlsbGluZ19pbnRlcnZhbDpQKFsibW9udGgiLCJ5ZWFyIl0pLm9wdGlvbmFsKCksc3RhdHVzOlAoWyJhY3RpdmUiLCJpbmFjdGl2ZSJdKX0pLGU9WSh7bmFtZTpvLmluaXRpYWxWYWx1ZXM/Lm5hbWU/PyIiLGRlc2NyaXB0aW9uOm8uaW5pdGlhbFZhbHVlcz8uZGVzY3JpcHRpb24/PyIiLHR5cGU6by5pbml0aWFsVmFsdWVzPy50eXBlPz8ib25lX3RpbWUiLHByaWNlOm8uaW5pdGlhbFZhbHVlcz8ucHJpY2U/PzAscHJpY2VfY3VycmVuY3k6by5pbml0aWFsVmFsdWVzPy5wcmljZV9jdXJyZW5jeT8/IlVTRCIsYmlsbGluZ19pbnRlcnZhbDpvLmluaXRpYWxWYWx1ZXM/LmJpbGxpbmdfaW50ZXJ2YWw/P3ZvaWQgMCxzdGF0dXM6by5pbml0aWFsVmFsdWVzPy5zdGF0dXM/PyJhY3RpdmUifSksYj1be2xhYmVsOiJPbmUtdGltZSIsdmFsdWU6Im9uZV90aW1lIn0se2xhYmVsOiJSZWN1cnJpbmciLHZhbHVlOiJyZWN1cnJpbmcifV0sZj1be2xhYmVsOiJNb250aGx5Iix2YWx1ZToibW9udGgifSx7bGFiZWw6IlllYXJseSIsdmFsdWU6InllYXIifV0sZz1be2xhYmVsOiJBY3RpdmUiLHZhbHVlOiJhY3RpdmUifSx7bGFiZWw6IkluYWN0aXZlIix2YWx1ZToiaW5hY3RpdmUifV0sVj1xLm1hcChtPT4oe2xhYmVsOm0sdmFsdWU6bX0pKTtKKCgpPT5lLnR5cGUsbT0+e209PT0ib25lX3RpbWUiJiYoZS5iaWxsaW5nX2ludGVydmFsPXZvaWQgMCl9KTtmdW5jdGlvbiBoKG0pe3AoInN1Ym1pdCIsbS5kYXRhKX1yZXR1cm4obSxpKT0+e2NvbnN0IGs9USx2PUssRT1XLFU9WCx4PWosQj1jZTtyZXR1cm4gZCgpLE8oQix7c2NoZW1hOm4obCksc3RhdGU6bihlKSxjbGFzczoic3BhY2UteS00IixvblN1Ym1pdDpofSx7ZGVmYXVsdDpjKCgpPT5bYSh2LHtsYWJlbDoiTmFtZSIsbmFtZToibmFtZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKGsse21vZGVsVmFsdWU6bihlKS5uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzBdfHwoaVswXT10PT5uKGUpLm5hbWU9dCkscGxhY2Vob2xkZXI6IlByb2R1Y3QgbmFtZSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhKHYse2xhYmVsOiJEZXNjcmlwdGlvbiIsbmFtZToiZGVzY3JpcHRpb24ifSx7ZGVmYXVsdDpjKCgpPT5bYShFLHttb2RlbFZhbHVlOm4oZSkuZGVzY3JpcHRpb24sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMV18fChpWzFdPXQ9Pm4oZSkuZGVzY3JpcHRpb249dCkscGxhY2Vob2xkZXI6Ik9wdGlvbmFsIGRlc2NyaXB0aW9uIixyb3dzOjMsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxfKCJkaXYiLF9lLFthKHYse2xhYmVsOiJUeXBlIixuYW1lOiJ0eXBlIixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6YygoKT0+W2EoVSx7bW9kZWxWYWx1ZTpuKGUpLnR5cGUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMl18fChpWzJdPXQ9Pm4oZSkudHlwZT10KSxpdGVtczpiLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLG4oZSkudHlwZT09PSJyZWN1cnJpbmciPyhkKCksTyh2LHtrZXk6MCxsYWJlbDoiQmlsbGluZyBJbnRlcnZhbCIsbmFtZToiYmlsbGluZ19pbnRlcnZhbCIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKFUse21vZGVsVmFsdWU6bihlKS5iaWxsaW5nX2ludGVydmFsLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzNdfHwoaVszXT10PT5uKGUpLmJpbGxpbmdfaW50ZXJ2YWw9dCksaXRlbXM6ZiwidmFsdWUta2V5IjoidmFsdWUiLCJsYWJlbC1rZXkiOiJsYWJlbCIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSk6QSgiIiwhMCldKSxfKCJkaXYiLGZlLFthKHYse2xhYmVsOiJQcmljZSIsbmFtZToicHJpY2UiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpjKCgpPT5bYShrLHttb2RlbFZhbHVlOm4oZSkucHJpY2UsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbNF18fChpWzRdPXQ9Pm4oZSkucHJpY2U9dCksbW9kZWxNb2RpZmllcnM6e251bWJlcjohMH0sdHlwZToibnVtYmVyIixtaW46IjAiLHBsYWNlaG9sZGVyOiIwIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGEodix7bGFiZWw6IkN1cnJlbmN5IixuYW1lOiJwcmljZV9jdXJyZW5jeSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKFUse21vZGVsVmFsdWU6bihlKS5wcmljZV9jdXJyZW5jeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVs1XXx8KGlbNV09dD0+bihlKS5wcmljZV9jdXJyZW5jeT10KSxpdGVtczpuKFYpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsImxhYmVsLWtleSI6ImxhYmVsIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSldKSxhKHYse2xhYmVsOiJTdGF0dXMiLG5hbWU6InN0YXR1cyIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0OmMoKCk9PlthKFUse21vZGVsVmFsdWU6bihlKS5zdGF0dXMsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbNl18fChpWzZdPXQ9Pm4oZSkuc3RhdHVzPXQpLGl0ZW1zOmcsInZhbHVlLWtleSI6InZhbHVlIiwibGFiZWwta2V5IjoibGFiZWwiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSksXygiZGl2Iix2ZSxbYSh4LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6aVs3XXx8KGlbN109dD0+cCgiY2FuY2VsIikpfSksYSh4LHt0eXBlOiJzdWJtaXQiLGxhYmVsOiJTYXZlIixsb2FkaW5nOnMubG9hZGluZ30sbnVsbCw4LFsibG9hZGluZyJdKV0pXSksXzoxfSw4LFsic2NoZW1hIiwic3RhdGUiXSl9fX0pLGJlPU9iamVjdC5hc3NpZ24oeWUse19fbmFtZToiUHJvZHVjdEZvcm0ifSksZ2U9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGJnLWVsZXZhdGVkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1kZWZhdWx0In0sUGU9e2NsYXNzOiJmbGV4LTEgbWluLXctMCJ9LFZlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxVZT17Y2xhc3M6ImZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQgdHJ1bmNhdGUifSxoZT17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCBtdC0wLjUgdHJ1bmNhdGUifSx4ZT17Y2xhc3M6InRleHQtc20gdGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIG10LTEifSx3ZT17Y2xhc3M6InRleHQtbXV0ZWQgZm9udC1ub3JtYWwifSwkZT1TKHtfX25hbWU6IlByb2R1Y3RJdGVtIixwcm9wczp7cHJvZHVjdDp7fX0sZW1pdHM6WyJlZGl0IiwiZGVsZXRlIl0sc2V0dXAocyx7ZW1pdDp1fSl7Y29uc3Qgbz1zLHA9dSxsPUYoKCk9Pm5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5Om8ucHJvZHVjdC5wcmljZV9jdXJyZW5jeSxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6MH0pLmZvcm1hdChvLnByb2R1Y3QucHJpY2UpKSxlPUYoKCk9Pm8ucHJvZHVjdC50eXBlPT09Im9uZV90aW1lIj8iT25lLXRpbWUiOm8ucHJvZHVjdC5iaWxsaW5nX2ludGVydmFsPT09Im1vbnRoIj8iL21vbnRoIjoiL3llYXIiKSxiPVtbe2xhYmVsOiJFZGl0IixpY29uOiJpLWx1Y2lkZS1wZW5jaWwiLG9uU2VsZWN0OigpPT5wKCJlZGl0IixvLnByb2R1Y3QpfSx7bGFiZWw6IkRlbGV0ZSIsaWNvbjoiaS1sdWNpZGUtdHJhc2gtMiIsY29sb3I6ImVycm9yIixvblNlbGVjdDooKT0+cCgiZGVsZXRlIixvLnByb2R1Y3QpfV1dO3JldHVybihmLGcpPT57Y29uc3QgVj1kZSxoPWosbT1tZTtyZXR1cm4gZCgpLHkoImRpdiIsZ2UsW18oImRpdiIsUGUsW18oImRpdiIsVmUsW18oInNwYW4iLFVlLCQocy5wcm9kdWN0Lm5hbWUpLDEpLGEoVix7Y29sb3I6cy5wcm9kdWN0LnN0YXR1cz09PSJhY3RpdmUiPyJzdWNjZXNzIjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixzaXplOiJ4cyJ9LHtkZWZhdWx0OmMoKCk9PltSKCQocy5wcm9kdWN0LnN0YXR1cyksMSldKSxfOjF9LDgsWyJjb2xvciJdKV0pLHMucHJvZHVjdC5kZXNjcmlwdGlvbj8oZCgpLHkoInAiLGhlLCQocy5wcm9kdWN0LmRlc2NyaXB0aW9uKSwxKSk6QSgiIiwhMCksXygicCIseGUsW1IoJChuKGwpKSsiICIsMSksXygic3BhbiIsd2UsJChuKGUpKSwxKV0pXSksYShtLHtpdGVtczpifSx7ZGVmYXVsdDpjKCgpPT5bYShoLHtpY29uOiJpLWx1Y2lkZS1lbGxpcHNpcy12ZXJ0aWNhbCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJzbSJ9KV0pLF86MX0pXSl9fX0pLGtlPU9iamVjdC5hc3NpZ24oJGUse19fbmFtZToiUHJvZHVjdEl0ZW0ifSksRGU9e2tleTowLGNsYXNzOiJzcGFjZS15LTMifSxTZT17a2V5OjEsY2xhc3M6InRleHQtY2VudGVyIHB5LTEyIHRleHQtbXV0ZWQifSxFZT17a2V5OjIsY2xhc3M6InNwYWNlLXktMyJ9LEJlPVMoe19fbmFtZToiUHJvZHVjdExpc3QiLHByb3BzOntwcm9kdWN0czp7fSxsb2FkaW5nOnt0eXBlOkJvb2xlYW59fSxlbWl0czpbImVkaXQiLCJkZWxldGUiXSxzZXR1cChzLHtlbWl0OnV9KXtjb25zdCBvPXU7cmV0dXJuKHAsbCk9Pntjb25zdCBlPXVlLGI9WjtyZXR1cm4gZCgpLHkoImRpdiIsbnVsbCxbcy5sb2FkaW5nPyhkKCkseSgiZGl2IixEZSxbKGQoKSx5KEksbnVsbCxNKDMsZj0+YShlLHtrZXk6ZixjbGFzczoiaC0yMCByb3VuZGVkLWxnIn0pKSw2NCkpXSkpOnMucHJvZHVjdHMubGVuZ3RoPT09MD8oZCgpLHkoImRpdiIsU2UsW2EoYix7bmFtZToiaS1sdWNpZGUtcGFja2FnZSIsY2xhc3M6InNpemUtMTAgbXgtYXV0byBtYi0zIG9wYWNpdHktNDAifSksbFsyXXx8KGxbMl09XygicCIsbnVsbCwiTm8gcHJvZHVjdHMgeWV0IiwtMSkpXSkpOihkKCkseSgiZGl2IixFZSxbKGQoITApLHkoSSxudWxsLE0ocy5wcm9kdWN0cyxmPT4oZCgpLE8oa2Use2tleTpmLmlkLHByb2R1Y3Q6ZixvbkVkaXQ6bFswXXx8KGxbMF09Zz0+bygiZWRpdCIsZykpLG9uRGVsZXRlOmxbMV18fChsWzFdPWc9Pm8oImRlbGV0ZSIsZykpfSxudWxsLDgsWyJwcm9kdWN0Il0pKSksMTI4KSldKSldKX19fSksQ2U9T2JqZWN0LmFzc2lnbihCZSx7X19uYW1lOiJQcm9kdWN0TGlzdCJ9KSxOZT1TeW1ib2woInByb2R1Y3RzIiksT2U9e2NsYXNzOiJtYXgtdy0zeGwgbXgtYXV0byBwLTQifSxYZT1TKHtfX25hbWU6InByb2R1Y3RzIixzZXR1cChzKXtlZSh7dGl0bGU6IlByb2R1Y3RzIn0pO2NvbnN0IHU9cmUoKSxvPXRlKCkscD1OKCExKSxsPU4oITEpLGU9TihudWxsKSx7ZGF0YTpiLHN0YXR1czpmLGVycm9yOmcscmVmcmVzaDpWfT1uZSgicHJvZHVjdHMiLCgpPT51LmZldGNoUHJvZHVjdHMoKSx7ZGVmYXVsdDooKT0+W119KTthZShnKTtjb25zdCBoPUYoKCk9PmYudmFsdWU9PT0icGVuZGluZyIpO2llKE5lLHtwcm9kdWN0czpiLGZldGNoUHJvZHVjdHM6bSxjcmVhdGVQcm9kdWN0OkUsdXBkYXRlUHJvZHVjdDpVLGRlbGV0ZVByb2R1Y3Q6eH0pO2FzeW5jIGZ1bmN0aW9uIG0oKXthd2FpdCBWKCl9ZnVuY3Rpb24gaSgpe2UudmFsdWU9bnVsbCxsLnZhbHVlPSEwfWZ1bmN0aW9uIGsodCl7ZS52YWx1ZT10LGwudmFsdWU9ITB9YXN5bmMgZnVuY3Rpb24gdih0KXtwLnZhbHVlPSEwO3RyeXtjb25zdCByPSEhZS52YWx1ZTtlLnZhbHVlP2F3YWl0IHUudXBkYXRlUHJvZHVjdChlLnZhbHVlLmlkLHQpOmF3YWl0IHUuY3JlYXRlUHJvZHVjdCh0KSxhd2FpdCBWKCksbC52YWx1ZT0hMSxvLmFkZCh7dGl0bGU6cj8iUHJvZHVjdCB1cGRhdGVkIjoiUHJvZHVjdCBjcmVhdGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChyKXtjb25zdCB3PXI7by5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dz8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e3AudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIEUodCl7cmV0dXJuIHUuY3JlYXRlUHJvZHVjdCh0KX1hc3luYyBmdW5jdGlvbiBVKHQscil7cmV0dXJuIHUudXBkYXRlUHJvZHVjdCh0LHIpfWFzeW5jIGZ1bmN0aW9uIHgodCl7YXdhaXQgdS5kZWxldGVQcm9kdWN0KHQpLGF3YWl0IFYoKX1hc3luYyBmdW5jdGlvbiBCKHQpe3RyeXthd2FpdCB4KHQuaWQpLG8uYWRkKHt0aXRsZToiUHJvZHVjdCBkZWxldGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChyKXtjb25zdCB3PXI7by5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dz8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX19cmV0dXJuKHQscik9Pntjb25zdCB3PWosRz1zZSxIPWxlO3JldHVybiBkKCkseShJLG51bGwsW2EoRyx7aWQ6InByb2R1Y3RzIn0se2hlYWRlcjpjKCgpPT5bYShwZSx7dGl0bGU6IlByb2R1Y3RzIn0se3JpZ2h0OmMoKCk9PlthKHcse2ljb246ImktbHVjaWRlLXBsdXMiLGxhYmVsOiJOZXcgcHJvZHVjdCIsb25DbGljazpyWzBdfHwoclswXT1DPT5pKCkpfSldKSxfOjF9KV0pLGJvZHk6YygoKT0+W18oImRpdiIsT2UsW2EoQ2Use3Byb2R1Y3RzOm4oYiksbG9hZGluZzpuKGgpLG9uRWRpdDprLG9uRGVsZXRlOkJ9LG51bGwsOCxbInByb2R1Y3RzIiwibG9hZGluZyJdKV0pXSksXzoxfSksYShILHtvcGVuOm4obCksIm9uVXBkYXRlOm9wZW4iOnJbMl18fChyWzJdPUM9Pm9lKGwpP2wudmFsdWU9QzpudWxsKSx0aXRsZTpuKGUpPyJFZGl0IHByb2R1Y3QiOiJOZXcgcHJvZHVjdCIsdWk6e2JvZHk6Im92ZXJmbG93LXktYXV0byBtYXgtaC1bODB2aF0ifX0se2JvZHk6YygoKT0+W2EoYmUseyJpbml0aWFsLXZhbHVlcyI6bihlKT97Li4ubihlKSxkZXNjcmlwdGlvbjpuKGUpLmRlc2NyaXB0aW9uPz92b2lkIDB9OnZvaWQgMCxsb2FkaW5nOm4ocCksb25TdWJtaXQ6dixvbkNhbmNlbDpyWzFdfHwoclsxXT1DPT5sLnZhbHVlPSExKX0sbnVsbCw4LFsiaW5pdGlhbC12YWx1ZXMiLCJsb2FkaW5nIl0pXSksXzoxfSw4LFsib3BlbiIsInRpdGxlIl0pXSw2NCl9fX0pO2V4cG9ydHtYZSBhcyBkZWZhdWx0fTsK", "/_nuxt/DtStfVmT.js": "aW1wb3J0e2FzIGFzIEMsZiBhcyBXLGcgYXMgRixwIGFzIEgsbyBhcyBpLGggYXMgeCx3IGFzIGEsYSBhcyBvLGMgYXMgdyxxIGFzIE8sYUkgYXMgWCxhSiBhcyBlZSx0IGFzIF8saSBhcyB0LGIgYXMgdixqIGFzIEssdiBhcyB5LEYgYXMgTixkIGFzIGMsWiBhcyB0ZSxIIGFzIGosUyBhcyBvZSxyIGFzIEEsbCBhcyBFLHUgYXMgc2UsRCBhcyBsZSxHIGFzIEwsRSBhcyBuZX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIEd9ZnJvbSIuL1pKVmswb2xOLmpzIjtpbXBvcnR7XyBhcyBxfWZyb20iLi9fMmxTZHIxMy5qcyI7aW1wb3J0e18gYXMgSn1mcm9tIi4vQlNSS3FHclAuanMiO2ltcG9ydHtfIGFzIGFlfWZyb20iLi9DMU9RaXlVRC5qcyI7aW1wb3J0Ii4vQ3RhMTVzRy0uanMiO2Z1bmN0aW9uIFkoKXtmdW5jdGlvbiBJKCl7cmV0dXJuIEMoIi9hcGkvc2VsZmhvc3Qvc3RhdHVzIil9ZnVuY3Rpb24gcChyKXtyZXR1cm4gQygiL2FwaS9zZWxmaG9zdC9jZi1hY2NvdW50cyIse21ldGhvZDoiUE9TVCIsYm9keTp7dG9rZW46cn19KX1mdW5jdGlvbiBoKHIpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L2RlcGxveSIse21ldGhvZDoiUE9TVCIsYm9keTpyfSl9ZnVuY3Rpb24gZygpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L2Rpc2Nvbm5lY3QiLHttZXRob2Q6IlBPU1QifSl9ZnVuY3Rpb24gUygpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L2F1ZGl0Iil9ZnVuY3Rpb24gJCgpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L3NlY3JldHMiKX1mdW5jdGlvbiBrKHIpe3JldHVybiBDKCIvYXBpL3NlbGZob3N0L3NlY3JldHMiLHttZXRob2Q6IlBBVENIIixib2R5Ont1cGRhdGVzOnJ9fSl9ZnVuY3Rpb24gdShyKXtyZXR1cm4gQygiL2FwaS9zZWxmaG9zdC90ZXN0LWVtYWlsIix7bWV0aG9kOiJQT1NUIixib2R5Ont0bzpyfX0pfXJldHVybntmZXRjaFNlbGZob3N0U3RhdHVzOkksbGlzdENsb3VkZmxhcmVBY2NvdW50czpwLGRlcGxveVNlbGZob3N0OmgsZGlzY29ubmVjdFNlbGZob3N0OmcsZmV0Y2hTZWxmaG9zdEF1ZGl0OlMsZmV0Y2hTZWxmaG9zdFNlY3JldHM6JCxwYXRjaFNlbGZob3N0U2VjcmV0czprLHRlc3RTZWxmaG9zdEVtYWlsOnV9fWNvbnN0IHJlPXtjbGFzczoic3BhY2UteS02In0saWU9e2NsYXNzOiJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbWItMiJ9LGRlPXtjbGFzczoibXQtMiBzcGFjZS15LTEifSx1ZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sY2U9e2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxwZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1tb25vIn0sZmU9e2NsYXNzOiJmbGV4LTEgdHJ1bmNhdGUifSxtZT17Y2xhc3M6InNwYWNlLXktMyJ9LHllPXtjbGFzczoiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMifSx2ZT17Y2xhc3M6ImZsZXgtMSBtaW4tdy0wIn0sX2U9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LGhlPXtjbGFzczoidGV4dC14cyBmb250LW1vbm8ifSxnZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sa2U9e2tleTowLGNsYXNzOiJtdC0zIGZsZXggZ2FwLTIifSx4ZT1XKHtfX25hbWU6IlNlbGZob3N0U2VjcmV0c0NhcmQiLHByb3BzOnt3b3JrZXJzRGV2VXJsOnt9fSxzZXR1cChJKXtjb25zdCBwPUksaD1GKCksZz1ZKCkse2RhdGE6UyxyZWZyZXNoOiR9PUgoInNlbGZob3N0LXNlY3JldHMiLCgpPT5nLmZldGNoU2VsZmhvc3RTZWNyZXRzKCkse2RlZmF1bHQ6KCk9Pm51bGx9KSxrPW9lKHt9KSx1PUEobnVsbCkscj1FKCgpPT57Y29uc3QgZj1TLnZhbHVlPy5pdGVtcz8/W10scz17c3lzdGVtOltdLG9hdXRoOltdLHNtdHA6W10scGF5bWVudHM6W10sc3VwcG9ydDpbXSxhdXRoOltdfTtmb3IoY29uc3QgbSBvZiBmKXNbbS5jYXRlZ29yeV0ucHVzaChtKTtyZXR1cm4gc30pLGw9e3N5c3RlbToiU3lzdGVtIChhdXRvLWdlbmVyYXRlZCkiLG9hdXRoOiJPQXV0aCBwcm92aWRlcnMiLHNtdHA6IkVtYWlsIChTTVRQKSIscGF5bWVudHM6IlBheW1lbnRzIixzdXBwb3J0OiJTdXBwb3J0IixhdXRoOiJBdXRoZW50aWNhdGlvbiJ9LGI9RSgoKT0+cC53b3JrZXJzRGV2VXJsP3tnb29nbGU6YCR7cC53b3JrZXJzRGV2VXJsfS9hcGkvYXV0aC9nb29nbGUvY2FsbGJhY2tgLGdpdGh1YjpgJHtwLndvcmtlcnNEZXZVcmx9L2FwaS9hdXRoL2dpdGh1Yi9jYWxsYmFja2B9Ontnb29nbGU6IiIsZ2l0aHViOiIifSk7YXN5bmMgZnVuY3Rpb24gQihmKXtjb25zdCBzPWtbZl0/LnRyaW0oKTtpZighcyl7aC5hZGQoe3RpdGxlOiJWYWx1ZSBpcyBlbXB0eSIsY29sb3I6Indhcm5pbmcifSk7cmV0dXJufXUudmFsdWU9Zjt0cnl7Y29uc3QgbT1hd2FpdCBnLnBhdGNoU2VsZmhvc3RTZWNyZXRzKFt7a2V5OmYsdmFsdWU6c31dKTtoLmFkZCh7dGl0bGU6YCR7Zn0gc2F2ZWRgLGRlc2NyaXB0aW9uOm0ucHVzaGVkVG9DbG91ZGZsYXJlPyJQdXNoZWQgdG8gZGVwbG95ZWQgd29ya2VyLiI6IlN0b3JlZC4gV2lsbCBhcHBseSBvbiBuZXh0IGRlcGxveS4iLGNvbG9yOiJzdWNjZXNzIn0pLGtbZl09IiIsYXdhaXQgJCgpfWNhdGNoKG0pe2NvbnN0IFQ9bTtoLmFkZCh7dGl0bGU6IlNhdmUgZmFpbGVkIixkZXNjcmlwdGlvbjpUPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7dS52YWx1ZT1udWxsfX1hc3luYyBmdW5jdGlvbiBEKGYpe2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGYpLGguYWRkKHt0aXRsZToiQ2FsbGJhY2sgVVJMIGNvcGllZCIsY29sb3I6InN1Y2Nlc3MifSl9cmV0dXJuKGYscyk9Pntjb25zdCBtPUssVD1HLG49cSxlPWosVT1KO3JldHVybiBpKCkseChVLG51bGwse2hlYWRlcjphKCgpPT5bLi4uc1syXXx8KHNbMl09W28oInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgQ29uZmlndXJhdGlvbiAiLC0xKSxvKCJwIix7Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sIiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHNlY3JldHMgb24geW91ciBkZXBsb3llZCBXb3JrZXIuIEF1dG8tZ2VuZXJhdGVkIHZhbHVlcyBhcmUgc3RhYmxlIGFjcm9zcyByZWRlcGxveXMuICIsLTEpXSldKSxkZWZhdWx0OmEoKCk9PltvKCJkaXYiLHJlLFsoaSghMCksdyhOLG51bGwsTyh0KHIpLChQLFYpPT5YKChpKCksdygiZGl2Iix7a2V5OlZ9LFtvKCJoMyIsaWUsXyhsW1ZdKSwxKSxWPT09Im9hdXRoIiYmKHQoYikuZ29vZ2xlfHx0KGIpLmdpdGh1Yik/KGkoKSx4KFQse2tleTowLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzdWJ0bGUiLGljb246ImktbHVjaWRlLWluZm8iLGNsYXNzOiJtYi0zIn0se2Rlc2NyaXB0aW9uOmEoKCk9PltzWzVdfHwoc1s1XT1vKCJwIix7Y2xhc3M6InRleHQteHMifSwiIFdoaXRlbGlzdCB0aGVzZSBjYWxsYmFjayBVUkxzIGluIHlvdXIgT0F1dGggcHJvdmlkZXIgc2V0dGluZ3M6ICIsLTEpKSxvKCJkaXYiLGRlLFtvKCJkaXYiLHVlLFtzWzNdfHwoc1szXT1vKCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiR29vZ2xlOiIsLTEpKSxvKCJjb2RlIixjZSxfKHQoYikuZ29vZ2xlKSwxKSx2KG0se3NpemU6InhzIix2YXJpYW50OiJnaG9zdCIsaWNvbjoiaS1sdWNpZGUtY29weSIsb25DbGljazpzWzBdfHwoc1swXT1kPT5EKHQoYikuZ29vZ2xlKSl9KV0pLG8oImRpdiIscGUsW3NbNF18fChzWzRdPW8oInNwYW4iLHtjbGFzczoidGV4dC1tdXRlZCJ9LCJHaXRIdWI6IiwtMSkpLG8oImNvZGUiLGZlLF8odChiKS5naXRodWIpLDEpLHYobSx7c2l6ZToieHMiLHZhcmlhbnQ6Imdob3N0IixpY29uOiJpLWx1Y2lkZS1jb3B5IixvbkNsaWNrOnNbMV18fChzWzFdPWQ9PkQodChiKS5naXRodWIpKX0pXSldKV0pLF86MX0pKTp5KCIiLCEwKSxvKCJkaXYiLG1lLFsoaSghMCksdyhOLG51bGwsTyhQLGQ9PihpKCksdygiZGl2Iix7a2V5OmQua2V5LGNsYXNzOiJib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZCBwLTMifSxbbygiZGl2Iix5ZSxbbygiZGl2Iix2ZSxbbygiZGl2IixfZSxbbygiY29kZSIsaGUsXyhkLmtleSksMSksZC5pc1NldD8oaSgpLHgobix7a2V5OjAsY29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToieHMifSx7ZGVmYXVsdDphKCgpPT5bLi4uc1s2XXx8KHNbNl09W2MoIiBTZXQgIiwtMSldKV0pLF86MX0pKTooaSgpLHgobix7a2V5OjEsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsc2l6ZToieHMifSx7ZGVmYXVsdDphKCgpPT5bLi4uc1s3XXx8KHNbN109W2MoIiBOb3Qgc2V0ICIsLTEpXSldKSxfOjF9KSksZC5pc0F1dG8/KGkoKSx4KG4se2tleToyLGNvbG9yOiJpbmZvIix2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6YSgoKT0+Wy4uLnNbOF18fChzWzhdPVtjKCIgQXV0byAiLC0xKV0pXSksXzoxfSkpOnkoIiIsITApXSksbygicCIsZ2UsXyhkLmRlc2NyaXB0aW9uKSwxKV0pXSksZC5pc0F1dG8/eSgiIiwhMCk6KGkoKSx3KCJkaXYiLGtlLFt2KGUse21vZGVsVmFsdWU6dChrKVtkLmtleV0sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOlI9PnQoaylbZC5rZXldPVIsdHlwZTpkLnR5cGU9PT0ic2VjcmV0X3RleHQiPyJwYXNzd29yZCI6InRleHQiLHBsYWNlaG9sZGVyOmQuaXNTZXQ/IlBhc3RlIG5ldyB2YWx1ZSB0byBvdmVyd3JpdGUiOiJFbnRlciB2YWx1ZSIsY2xhc3M6ImZsZXgtMSBmb250LW1vbm8iLGF1dG9jb21wbGV0ZToib2ZmIixvbktleXVwOnRlKFI9PkIoZC5rZXkpLFsiZW50ZXIiXSl9LG51bGwsOCxbIm1vZGVsVmFsdWUiLCJvblVwZGF0ZTptb2RlbFZhbHVlIiwidHlwZSIsInBsYWNlaG9sZGVyIiwib25LZXl1cCJdKSx2KG0se2xvYWRpbmc6dCh1KT09PWQua2V5LGRpc2FibGVkOiF0KGspW2Qua2V5XT8udHJpbSgpLHNpemU6InNtIixvbkNsaWNrOlI9PkIoZC5rZXkpfSx7ZGVmYXVsdDphKCgpPT5bLi4uc1s5XXx8KHNbOV09W2MoIiBTYXZlICIsLTEpXSldKSxfOjF9LDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiLCJvbkNsaWNrIl0pXSkpXSkpKSwxMjgpKV0pXSkpLFtbZWUsUC5sZW5ndGhdXSkpLDEyOCkpXSldKSxfOjF9KX19fSksYmU9T2JqZWN0LmFzc2lnbih4ZSx7X19uYW1lOiJTZWxmaG9zdFNlY3JldHNDYXJkIn0pLHdlPXtjbGFzczoibWF4LXctMnhsIG14LWF1dG8gcC02IHNwYWNlLXktNiJ9LFNlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIn0sQ2U9e2NsYXNzOiJzcGFjZS15LTIgdGV4dC1zbSJ9LCRlPXtrZXk6MH0sVWU9WyJocmVmIl0sQWU9e2tleToxfSxEZT17a2V5OjJ9LFRlPXtjbGFzczoidGV4dC14cyJ9LFBlPXtrZXk6MyxjbGFzczoidGV4dC1lcnJvciJ9LFZlPXtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LFJlPXtjbGFzczoic3BhY2UteS00In0sRWU9Imh0dHBzOi8vZGFzaC5jbG91ZGZsYXJlLmNvbS9wcm9maWxlL2FwaS10b2tlbnMvY3JlYXRlIixMZT1XKHtfX25hbWU6InNlbGYtaG9zdCIsc2V0dXAoSSl7c2Uoe3RpdGxlOiJTZWxmLWhvc3RpbmcifSk7Y29uc3QgcD1GKCksaD1ZKCksZz1BKCIiKSxTPUEoITEpLCQ9QSghMSksaz1BKCExKSx1PUEoW10pLHI9QSh2b2lkIDApLHtkYXRhOmwscmVmcmVzaDpifT1IKCJzZWxmaG9zdC1zdGF0dXMiLCgpPT5oLmZldGNoU2VsZmhvc3RTdGF0dXMoKSx7ZGVmYXVsdDooKT0+bnVsbH0pLEI9RSgoKT0+e2NvbnN0IG49bC52YWx1ZT8uc3RhdHVzO3JldHVybiBuPT09ImRlcGxveWVkIj8ic3VjY2VzcyI6bj09PSJmYWlsZWQiPyJlcnJvciI6Indhcm5pbmcifSksRD1FKCgpPT57Y29uc3Qgbj1sLnZhbHVlPy5jZl90b2tlbl9leHBpcmVzX2F0O3JldHVybiBuP01hdGguZmxvb3IoKG5ldyBEYXRlKG4pLmdldFRpbWUoKS1EYXRlLm5vdygpKS8oMWUzKjYwKjYwKjI0KSk6bnVsbH0pO2FzeW5jIGZ1bmN0aW9uIGYoKXtjb25zdCBuPWcudmFsdWUudHJpbSgpO2lmKG4pe2sudmFsdWU9ITA7dHJ5e2NvbnN0IGU9YXdhaXQgaC5saXN0Q2xvdWRmbGFyZUFjY291bnRzKG4pO3UudmFsdWU9ZS5hY2NvdW50cyxyLnZhbHVlPXUudmFsdWUubGVuZ3RoPT09MT91LnZhbHVlWzBdLmlkOnZvaWQgMH1jYXRjaChlKXtjb25zdCBVPWU7cC5hZGQoe3RpdGxlOiJDb3VsZCBub3QgcmVhZCBhY2NvdW50cyBmcm9tIHRoaXMgdG9rZW4iLGRlc2NyaXB0aW9uOlU/LmRhdGE/LnN0YXR1c01lc3NhZ2U/PyJWZXJpZnkgdGhlIHRva2VuIGhhcyBBY2NvdW50IFNldHRpbmdzOiBSZWFkLiIsY29sb3I6ImVycm9yIn0pLHUudmFsdWU9W10sci52YWx1ZT12b2lkIDB9ZmluYWxseXtrLnZhbHVlPSExfX19YXN5bmMgZnVuY3Rpb24gcygpe1MudmFsdWU9ITA7dHJ5e2NvbnN0IG49Zy52YWx1ZS50cmltKCl8fHZvaWQgMDtpZihuJiZ1LnZhbHVlLmxlbmd0aD4xJiYhci52YWx1ZSl7cC5hZGQoe3RpdGxlOiJQaWNrIGEgQ2xvdWRmbGFyZSBhY2NvdW50Iixjb2xvcjoid2FybmluZyJ9KTtyZXR1cm59Y29uc3QgZT1hd2FpdCBoLmRlcGxveVNlbGZob3N0KHt0b2tlbjpuLGFjY291bnRfaWQ6ci52YWx1ZX0pO3AuYWRkKHt0aXRsZTpgRGVwbG95ZWQgJHtlLnZlcnNpb259YCxkZXNjcmlwdGlvbjplLnVybCxjb2xvcjoic3VjY2VzcyIsaWNvbjoiaS1sdWNpZGUtY2hlY2stY2lyY2xlIn0pLGcudmFsdWU9IiIsdS52YWx1ZT1bXSxyLnZhbHVlPXZvaWQgMCxhd2FpdCBiKCl9Y2F0Y2gobil7Y29uc3QgZT1uO2lmKGU/LmRhdGE/LmRhdGE/LmNvZGU9PT0ibXVsdGlwbGVfYWNjb3VudHMiJiZlLmRhdGEuZGF0YS5hY2NvdW50cyl7dS52YWx1ZT1lLmRhdGEuZGF0YS5hY2NvdW50cyxyLnZhbHVlPXZvaWQgMCxwLmFkZCh7dGl0bGU6Ik11bHRpcGxlIENsb3VkZmxhcmUgYWNjb3VudHMiLGRlc2NyaXB0aW9uOiJQaWNrIHdoaWNoIGFjY291bnQgdG8gZGVwbG95IGludG8gYmVsb3csIHRoZW4gY2xpY2sgRGVwbG95IGFnYWluLiIsY29sb3I6Indhcm5pbmcifSk7cmV0dXJufXAuYWRkKHt0aXRsZToiRGVwbG95IGZhaWxlZCIsZGVzY3JpcHRpb246ZT8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/ZT8ubWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciIsaWNvbjoiaS1sdWNpZGUtYWxlcnQtdHJpYW5nbGUifSl9ZmluYWxseXtTLnZhbHVlPSExfX1hc3luYyBmdW5jdGlvbiBtKCl7JC52YWx1ZT0hMDt0cnl7YXdhaXQgaC5kaXNjb25uZWN0U2VsZmhvc3QoKSxwLmFkZCh7dGl0bGU6IkRpc2Nvbm5lY3RlZCIsY29sb3I6InN1Y2Nlc3MifSksdS52YWx1ZT1bXSxyLnZhbHVlPXZvaWQgMCxhd2FpdCBiKCl9Y2F0Y2gobil7Y29uc3QgZT1uO3AuYWRkKHt0aXRsZToiRGlzY29ubmVjdCBmYWlsZWQiLGRlc2NyaXB0aW9uOmU/LmRhdGE/LnN0YXR1c01lc3NhZ2UsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7JC52YWx1ZT0hMX19Y29uc3QgVD1FKCgpPT51LnZhbHVlLm1hcChuPT4oe2xhYmVsOmAke24ubmFtZX0g4oCUICR7bi5pZC5zbGljZSgwLDgpfeKApmAsdmFsdWU6bi5pZH0pKSk7cmV0dXJuKG4sZSk9Pntjb25zdCBVPUssUD1HLFY9cSxkPUosUj1qLE09bGUsWj1uZSxRPWFlO3JldHVybiBpKCkseChRLHtpZDoic2VsZi1ob3N0In0se2hlYWRlcjphKCgpPT5bLi4uZVsyXXx8KGVbMl09W28oImRpdiIse2NsYXNzOiJweC00IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQifSxbbygiaDEiLHtjbGFzczoidGV4dC1sZyBmb250LXNlbWlib2xkIn0sIiBTZWxmLWhvc3RpbmcgIiksbygicCIse2NsYXNzOiJ0ZXh0LXNtIHRleHQtbXV0ZWQifSwiIERlcGxveSB0aGlzIGFwcGxpY2F0aW9uIHRvIHlvdXIgb3duIENsb3VkZmxhcmUgYWNjb3VudC4gIildLC0xKV0pXSksYm9keTphKCgpPT5bbygiZGl2Iix3ZSxbdChsKT8udXBkYXRlX2F2YWlsYWJsZT8oaSgpLHgoUCx7a2V5OjAsY29sb3I6Indhcm5pbmciLGljb246ImktbHVjaWRlLXJlZnJlc2gtY3ciLHRpdGxlOiJVcGRhdGUgYXZhaWxhYmxlIixkZXNjcmlwdGlvbjpgTmV3IHZlcnNpb24gJHt0KGwpLmxhdGVzdF92ZXJzaW9ufSBpcyBhdmFpbGFibGUgKGRlcGxveWVkOiAke3QobCkuZGVwbG95ZWRfdmVyc2lvbn0pYH0se2FjdGlvbnM6YSgoKT0+W3YoVSx7bG9hZGluZzp0KFMpLGNvbG9yOiJ3YXJuaW5nIixzaXplOiJzbSIsb25DbGljazpzfSx7ZGVmYXVsdDphKCgpPT5bLi4uZVszXXx8KGVbM109W2MoIiBVcGRhdGUgIiwtMSldKV0pLF86MX0sOCxbImxvYWRpbmciXSldKSxfOjF9LDgsWyJkZXNjcmlwdGlvbiJdKSk6eSgiIiwhMCksdChEKSE9PW51bGwmJnQoRCk8PTE0PyhpKCkseChQLHtrZXk6MSxjb2xvcjoid2FybmluZyIsaWNvbjoiaS1sdWNpZGUtY2xvY2siLHRpdGxlOiJDbG91ZGZsYXJlIHRva2VuIGV4cGlyaW5nIHNvb24iLGRlc2NyaXB0aW9uOmBZb3VyIHN0b3JlZCB0b2tlbiBleHBpcmVzIGluICR7dChEKX0gZGF5KHMpLiBQYXN0ZSBhIG5ldyB0b2tlbiBhbmQgcmVkZXBsb3kgdG8gcmVmcmVzaCBpdC5gfSxudWxsLDgsWyJkZXNjcmlwdGlvbiJdKSk6eSgiIiwhMCksdChsKT8uc3RhdHVzJiZ0KGwpLnN0YXR1cyE9PSJpZGxlIj8oaSgpLHgoZCx7a2V5OjJ9LHtoZWFkZXI6YSgoKT0+W28oImRpdiIsU2UsW2VbNF18fChlWzRdPW8oInAiLHtjbGFzczoiZm9udC1zZW1pYm9sZCJ9LCIgRGVwbG95bWVudCAiLC0xKSksdihWLHtjb2xvcjp0KEIpLHZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0OmEoKCk9PltjKF8odChsKS5zdGF0dXMpLDEpXSksXzoxfSw4LFsiY29sb3IiXSldKV0pLGZvb3RlcjphKCgpPT5bdihVLHtsb2FkaW5nOnQoJCksY29sb3I6ImVycm9yIix2YXJpYW50OiJzb2Z0IixzaXplOiJzbSIsb25DbGljazptfSx7ZGVmYXVsdDphKCgpPT5bLi4uZVs5XXx8KGVbOV09W2MoIiBEaXNjb25uZWN0ICIsLTEpXSldKSxfOjF9LDgsWyJsb2FkaW5nIl0pXSksZGVmYXVsdDphKCgpPT5bbygiZGl2IixDZSxbdChsKS53b3JrZXJzX2Rldl91cmw/KGkoKSx3KCJwIiwkZSxbZVs1XXx8KGVbNV09bygic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIlVSTDoiLC0xKSksbygiYSIse2hyZWY6dChsKS53b3JrZXJzX2Rldl91cmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIG1sLTEifSxfKHQobCkud29ya2Vyc19kZXZfdXJsKSw5LFVlKV0pKTp5KCIiLCEwKSx0KGwpLmRlcGxveWVkX3ZlcnNpb24/KGkoKSx3KCJwIixBZSxbZVs2XXx8KGVbNl09bygic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIlZlcnNpb246IiwtMSkpLGMoIiAiK18odChsKS5kZXBsb3llZF92ZXJzaW9uKSwxKV0pKTp5KCIiLCEwKSx0KGwpLmNmX2FjY291bnRfaWQ/KGkoKSx3KCJwIixEZSxbZVs3XXx8KGVbN109bygic3BhbiIse2NsYXNzOiJ0ZXh0LW11dGVkIn0sIkNsb3VkZmxhcmUgYWNjb3VudDoiLC0xKSksZVs4XXx8KGVbOF09YygpKSxvKCJjb2RlIixUZSxfKHQobCkuY2ZfYWNjb3VudF9pZCksMSldKSk6eSgiIiwhMCksdChsKS5sYXN0X2Vycm9yPyhpKCksdygicCIsUGUsXyh0KGwpLmxhc3RfZXJyb3IpLDEpKTp5KCIiLCEwKV0pXSksXzoxfSkpOnkoIiIsITApLHQobCk/LnN0YXR1cz09PSJkZXBsb3llZCI/KGkoKSx4KGJlLHtrZXk6Mywid29ya2Vycy1kZXYtdXJsIjp0KGwpLndvcmtlcnNfZGV2X3VybH0sbnVsbCw4LFsid29ya2Vycy1kZXYtdXJsIl0pKTp5KCIiLCEwKSx2KGQsbnVsbCx7aGVhZGVyOmEoKCk9PltvKCJwIixWZSxfKHQobCk/LnN0YXR1cz09PSJkZXBsb3llZCI/IlJlZGVwbG95IjoiRGVwbG95IHRvIHlvdXIgQ2xvdWRmbGFyZSBhY2NvdW50IiksMSldKSxkZWZhdWx0OmEoKCk9PltvKCJkaXYiLFJlLFtvKCJkZXRhaWxzIix7Y2xhc3M6InRleHQtc20ifSxbZVsxNV18fChlWzE1XT1vKCJzdW1tYXJ5Iix7Y2xhc3M6ImN1cnNvci1wb2ludGVyIHRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUifSwiIEhvdyBkbyBJIGdldCBhIENsb3VkZmxhcmUgQVBJIHRva2VuPyAiLC0xKSksbygib2wiLHtjbGFzczoibXQtMiBsaXN0LWRlY2ltYWwgcGwtNiBzcGFjZS15LTEgdGV4dC1tdXRlZCJ9LFtvKCJsaSIsbnVsbCxbZVsxMF18fChlWzEwXT1jKCIgR28gdG8gIiwtMSkpLG8oImEiLHtocmVmOkVlLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSJ9LCIgQ2xvdWRmbGFyZSDihpIgTXkgUHJvZmlsZSDihpIgQVBJIFRva2VucyDihpIgQ3JlYXRlIFRva2VuICIpXSksZVsxMV18fChlWzExXT1vKCJsaSIsbnVsbCxbYygiQ2hvb3NlICIpLG8oInN0cm9uZyIsbnVsbCwiQ3JlYXRlIEN1c3RvbSBUb2tlbiIpXSwtMSkpLGVbMTJdfHwoZVsxMl09bygibGkiLG51bGwsW2MoIiBBZGQgdGhlc2UgcGVybWlzc2lvbnMgKGFsbCAiKSxvKCJzdHJvbmciLG51bGwsIkVkaXQiKSxjKCIgdW5sZXNzIG5vdGVkKTogV29ya2VycyBTY3JpcHRzLCBXb3JrZXJzIEtWIFN0b3JhZ2UsIFdvcmtlcnMgUjIgU3RvcmFnZSwgRDEsIEFjY291bnQgU2V0dGluZ3MgKFJlYWQpLCBVc2VyIERldGFpbHMgKFJlYWQpICIpXSwtMSkpLGVbMTNdfHwoZVsxM109bygibGkiLG51bGwsIkFjY291bnQgUmVzb3VyY2VzOiBpbmNsdWRlIGFsbCBhY2NvdW50cyAob3IgcGljayBvbmUpIiwtMSkpLGVbMTRdfHwoZVsxNF09bygibGkiLG51bGwsIkNvbnRpbnVlIOKGkiBDcmVhdGUgVG9rZW4g4oaSIGNvcHkgdGhlIHRva2VuIChzaG93biBvbmNlKSIsLTEpKV0pXSksdihNLHtsYWJlbDoiQ2xvdWRmbGFyZSBBUEkgVG9rZW4iLGhlbHA6IkxlYXZlIGJsYW5rIHRvIHJlZGVwbG95IHVzaW5nIHRoZSBzdG9yZWQgdG9rZW4uIn0se2RlZmF1bHQ6YSgoKT0+W3YoUix7bW9kZWxWYWx1ZTp0KGcpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjplWzBdfHwoZVswXT16PT5MKGcpP2cudmFsdWU9ejpudWxsKSx0eXBlOiJwYXNzd29yZCIscGxhY2Vob2xkZXI6IuKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAouKAoiIsY2xhc3M6InctZnVsbCBmb250LW1vbm8iLGF1dG9jb21wbGV0ZToib2ZmIixvbkJsdXI6Zn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLHQodSkubGVuZ3RoPjA/KGkoKSx4KE0se2tleTowLGxhYmVsOiJDbG91ZGZsYXJlIGFjY291bnQiLGhlbHA6dCh1KS5sZW5ndGg9PT0xPyJBdXRvLXNlbGVjdGVkICh0aGlzIHRva2VuIGhhcyBhY2Nlc3MgdG8gb25lIGFjY291bnQpLiI6IlBpY2sgd2hpY2ggYWNjb3VudCB0byBkZXBsb3kgaW50by4ifSx7ZGVmYXVsdDphKCgpPT5bdihaLHttb2RlbFZhbHVlOnQociksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmVbMV18fChlWzFdPXo9Pkwocik/ci52YWx1ZT16Om51bGwpLGl0ZW1zOnQoVCksbG9hZGluZzp0KGspLGRpc2FibGVkOnQodSkubGVuZ3RoPT09MSxwbGFjZWhvbGRlcjoiU2VsZWN0IGFuIGFjY291bnQiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiLCJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKSxfOjF9LDgsWyJoZWxwIl0pKTp5KCIiLCEwKSx2KFUse2xvYWRpbmc6dChTKSxkaXNhYmxlZDp0KGwpPy5zdGF0dXM9PT0iZGVwbG95aW5nIixvbkNsaWNrOnN9LHtkZWZhdWx0OmEoKCk9PltjKF8odChsKT8uc3RhdHVzPT09ImRlcGxveWVkIj8iUmVkZXBsb3kiOiJEZXBsb3kiKSwxKV0pLF86MX0sOCxbImxvYWRpbmciLCJkaXNhYmxlZCJdKV0pXSksXzoxfSldKV0pLF86MX0pfX19KTtleHBvcnR7TGUgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DuEAfnhq.js": "aW1wb3J0e2YgYXMgRCx1IGFzIGgsZyBhcyBJLHAseiBhcyBfLFIgYXMgQixvIGFzIGYsYyBhcyB2LGIgYXMgbCx3IGFzIHMsYSBhcyBjLEQgYXMgTixIIGFzICQsaSBhcyBuLGogYXMgayx2IGFzIEUsUyBhcyBGLHIgYXMgQX1mcm9tIi4vbzh0ZF9HMEouanMiO2ltcG9ydHtfIGFzIEt9ZnJvbSIuL0IxTWVMcmkzLmpzIjtpbXBvcnR7XyBhcyBUfWZyb20iLi9DVzhmS25GRS5qcyI7aW1wb3J0e3UgYXMgan1mcm9tIi4vRGM0NlF3REouanMiO2ltcG9ydCIuL0M3WXk2dFIzLmpzIjtjb25zdCB6PXtjbGFzczoic3BhY2UteS02In0sSD17Y2xhc3M6ImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgZ2FwLTQgbXQtNCJ9LE09e2NsYXNzOiJtdC00IGZsZXgganVzdGlmeS1lbmQifSxMPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIHRleHQtY2VudGVyIHB5LTYifSxRPUQoe19fbmFtZToiaW52b2ljZSIsc2V0dXAoUCl7aCh7dGl0bGU6Ikludm9pY2UifSk7Y29uc3QgZD1qKCksbT1JKCkse2RhdGE6ZyxlcnJvcjpWfT1wKCJiaWxsaW5nLXNldHRpbmdzIiwoKT0+ZC5mZXRjaEJpbGxpbmdTZXR0aW5ncygpLHtkZWZhdWx0OigpPT4oe29yZ2FuaXphdGlvbl9pZDoiIixjdXJyZW5jeToiVVNEIn0pfSk7XyhWKTtjb25zdHtkYXRhOnksZXJyb3I6VX09cCgiaW52b2ljZXMiLCgpPT5kLmZldGNoSW52b2ljZXMoKSx7ZGVmYXVsdDooKT0+W119KTtfKFUpO2NvbnN0IGU9Rih7Y29tcGFueV9uYW1lOiIiLHRheF9pZDoiIixhZGRyZXNzOiIiLGNpdHk6IiIsY291bnRyeToiVVMiLGN1cnJlbmN5OiJVU0QifSk7QihnLHQ9Pnt0JiYoZS5jb21wYW55X25hbWU9dC5jb21wYW55X25hbWU/PyIiLGUudGF4X2lkPXQudGF4X2lkPz8iIixlLmFkZHJlc3M9dC5hZGRyZXNzPz8iIixlLmNpdHk9dC5jaXR5Pz8iIixlLmNvdW50cnk9dC5jb3VudHJ5Pz8iVVMiLGUuY3VycmVuY3k9dC5jdXJyZW5jeT8/IlVTRCIpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgdT1BKCExKTthc3luYyBmdW5jdGlvbiBTKCl7dS52YWx1ZT0hMDt0cnl7YXdhaXQgZC51cGRhdGVCaWxsaW5nU2V0dGluZ3Moe2NvbXBhbnlfbmFtZTplLmNvbXBhbnlfbmFtZXx8dm9pZCAwLHRheF9pZDplLnRheF9pZHx8dm9pZCAwLGFkZHJlc3M6ZS5hZGRyZXNzfHx2b2lkIDAsY2l0eTplLmNpdHl8fHZvaWQgMCxjb3VudHJ5OmUuY291bnRyeXx8dm9pZCAwLGN1cnJlbmN5OmUuY3VycmVuY3l8fHZvaWQgMH0pLG0uYWRkKHt0aXRsZToiU2V0dGluZ3Mgc2F2ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKHQpe2NvbnN0IGE9dDttLmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjphPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7dS52YWx1ZT0hMX19Y29uc3QgeD1be2FjY2Vzc29yS2V5OiJudW1iZXIiLGhlYWRlcjoiTnVtYmVyIn0se2FjY2Vzc29yS2V5OiJzdGF0dXMiLGhlYWRlcjoiU3RhdHVzIn0se2FjY2Vzc29yS2V5OiJ0b3RhbCIsaGVhZGVyOiJUb3RhbCIsY2VsbDooe3Jvdzp0fSk9Pm5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5OnQub3JpZ2luYWwuY3VycmVuY3l9KS5mb3JtYXQodC5vcmlnaW5hbC50b3RhbC8xMDApfSx7YWNjZXNzb3JLZXk6ImNyZWF0ZWRfYXQiLGhlYWRlcjoiRGF0ZSIsY2VsbDooe3Jvdzp0fSk9Pm5ldyBEYXRlKHQub3JpZ2luYWwuY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9XTtyZXR1cm4odCxhKT0+e2NvbnN0IHI9JCxpPU4sYj1rLHc9SyxDPVQ7cmV0dXJuIGYoKSx2KCJkaXYiLHosW2wodyx7dGl0bGU6Ikludm9pY2UgSW5mb3JtYXRpb24iLGRlc2NyaXB0aW9uOiJDb21wYW55IGRldGFpbHMgdGhhdCBhcHBlYXIgb24gaW52b2ljZXMuIix2YXJpYW50OiJzdWJ0bGUifSx7ZGVmYXVsdDpzKCgpPT5bYygiZGl2IixILFtsKGkse2xhYmVsOiJDb21wYW55IG5hbWUifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY29tcGFueV9uYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzBdfHwoYVswXT1vPT5uKGUpLmNvbXBhbnlfbmFtZT1vKSxwbGFjZWhvbGRlcjoiQWNtZSBJbmMuIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IlRheCBJRCJ9LHtkZWZhdWx0OnMoKCk9PltsKHIse21vZGVsVmFsdWU6bihlKS50YXhfaWQsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMV18fChhWzFdPW89Pm4oZSkudGF4X2lkPW8pLHBsYWNlaG9sZGVyOiIxMjMtNDU2LTc4OSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxsKGkse2xhYmVsOiJBZGRyZXNzIixjbGFzczoic206Y29sLXNwYW4tMiJ9LHtkZWZhdWx0OnMoKCk9PltsKHIse21vZGVsVmFsdWU6bihlKS5hZGRyZXNzLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzJdfHwoYVsyXT1vPT5uKGUpLmFkZHJlc3M9bykscGxhY2Vob2xkZXI6IjEyMyBNYWluIFN0IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IkNpdHkifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY2l0eSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVszXXx8KGFbM109bz0+bihlKS5jaXR5PW8pLHBsYWNlaG9sZGVyOiJTYW4gRnJhbmNpc2NvIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IkNvdW50cnkifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY291bnRyeSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVs0XXx8KGFbNF09bz0+bihlKS5jb3VudHJ5PW8pLHBsYWNlaG9sZGVyOiJVUyIsY2xhc3M6InctZnVsbCIsbWF4bGVuZ3RoOiIyIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pLGwoaSx7bGFiZWw6IkRlZmF1bHQgQ3VycmVuY3kifSx7ZGVmYXVsdDpzKCgpPT5bbChyLHttb2RlbFZhbHVlOm4oZSkuY3VycmVuY3ksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbNV18fChhWzVdPW89Pm4oZSkuY3VycmVuY3k9bykscGxhY2Vob2xkZXI6IlVTRCIsY2xhc3M6InctZnVsbCIsbWF4bGVuZ3RoOiIzIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pXSksYygiZGl2IixNLFtsKGIse2xhYmVsOiJTYXZlIixsb2FkaW5nOm4odSksb25DbGljazphWzZdfHwoYVs2XT1vPT5TKCkpfSxudWxsLDgsWyJsb2FkaW5nIl0pXSldKSxfOjF9KSxjKCJkaXYiLG51bGwsW2FbN118fChhWzddPWMoImRpdiIse2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMyJ9LFtjKCJoMyIse2NsYXNzOiJmb250LXNlbWlib2xkIn0sIiBJbnZvaWNlcyAiKV0sLTEpKSxsKEMse2RhdGE6bih5KSxjb2x1bW5zOnh9LG51bGwsOCxbImRhdGEiXSksbih5KS5sZW5ndGg9PT0wPyhmKCksdigicCIsTCwiIE5vIGludm9pY2VzIHlldC4gIikpOkUoIiIsITApXSldKX19fSk7ZXhwb3J0e1EgYXMgZGVmYXVsdH07Cg==", "/_nuxt/DvdhypDi.js": "aW1wb3J0e2E3IGFzIEIsZiBhcyB4LGF1IGFzIEcsYmMgYXMgTyxhOSBhcyBQLGEzIGFzIGssbyBhcyB3LGggYXMgTSx3IGFzIGcsYiBhcyBOLGksUCBhcyBWLEwgYXMgQSxyIGFzIGN9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7ZiBhcyAkLEUgYXMgRCxhIGFzIFV9ZnJvbSIuL0J0OFMwZG1sLmpzIjtjb25zdFt6LGpdPUIoIlJvdmluZ0ZvY3VzR3JvdXAiKTt2YXIgSz14KHtfX25hbWU6IlJvdmluZ0ZvY3VzR3JvdXAiLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjdXJyZW50VGFiU3RvcElkOnt0eXBlOltTdHJpbmcsbnVsbF0scmVxdWlyZWQ6ITF9LGRlZmF1bHRDdXJyZW50VGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJldmVudFNjcm9sbE9uRW50cnlGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZW50cnlGb2N1cyIsInVwZGF0ZTpjdXJyZW50VGFiU3RvcElkIl0sc2V0dXAoYix7ZXhwb3NlOkYsZW1pdDpJfSl7Y29uc3QgYT1iLGY9SSx7bG9vcDpTLG9yaWVudGF0aW9uOnAsZGlyOnl9PUcoYSksdj1PKHkpLGw9UChhLCJjdXJyZW50VGFiU3RvcElkIixmLHtkZWZhdWx0VmFsdWU6YS5kZWZhdWx0Q3VycmVudFRhYlN0b3BJZCxwYXNzaXZlOmEuY3VycmVudFRhYlN0b3BJZD09PXZvaWQgMH0pLHI9YyghMSksbj1jKCExKSxkPWMoMCkse2dldEl0ZW1zOm0sQ29sbGVjdGlvblNsb3Q6VH09ayh7aXNQcm92aWRlcjohMH0pO2Z1bmN0aW9uIEMoZSl7Y29uc3Qgbz0hbi52YWx1ZTtpZihlLmN1cnJlbnRUYXJnZXQmJmUudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0JiZvJiYhci52YWx1ZSl7Y29uc3Qgcz1uZXcgQ3VzdG9tRXZlbnQoRCxVKTtpZihlLmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChzKSxmKCJlbnRyeUZvY3VzIixzKSwhcy5kZWZhdWx0UHJldmVudGVkKXtjb25zdCB1PW0oKS5tYXAodD0+dC5yZWYpLmZpbHRlcih0PT50LmRhdGFzZXQuZGlzYWJsZWQhPT0iIiksUj11LmZpbmQodD0+dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWN0aXZlIik9PT0iIiksXz11LmZpbmQodD0+dC5nZXRBdHRyaWJ1dGUoImRhdGEtaGlnaGxpZ2h0ZWQiKT09PSIiKSxFPXUuZmluZCh0PT50LmlkPT09bC52YWx1ZSkscT1bUixfLEUsLi4udV0uZmlsdGVyKEJvb2xlYW4pOyQocSxhLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpfX1uLnZhbHVlPSExfWZ1bmN0aW9uIGgoKXtzZXRUaW1lb3V0KCgpPT57bi52YWx1ZT0hMX0sMSl9cmV0dXJuIEYoe2dldEl0ZW1zOm19KSxqKHtsb29wOlMsZGlyOnYsb3JpZW50YXRpb246cCxjdXJyZW50VGFiU3RvcElkOmwsb25JdGVtRm9jdXM6ZT0+e2wudmFsdWU9ZX0sb25JdGVtU2hpZnRUYWI6KCk9PntyLnZhbHVlPSEwfSxvbkZvY3VzYWJsZUl0ZW1BZGQ6KCk9PntkLnZhbHVlKyt9LG9uRm9jdXNhYmxlSXRlbVJlbW92ZTooKT0+e2QudmFsdWUtLX19KSwoZSxvKT0+KHcoKSxNKGkoVCksbnVsbCx7ZGVmYXVsdDpnKCgpPT5bTihpKFYpLHt0YWJpbmRleDpyLnZhbHVlfHxkLnZhbHVlPT09MD8tMTowLCJkYXRhLW9yaWVudGF0aW9uIjppKHApLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsZGlyOmkodiksc3R5bGU6e291dGxpbmU6Im5vbmUifSxvbk1vdXNlZG93bjpvWzBdfHwob1swXT1zPT5uLnZhbHVlPSEwKSxvbk1vdXNldXA6aCxvbkZvY3VzOkMsb25CbHVyOm9bMV18fChvWzFdPXM9PnIudmFsdWU9ITEpfSx7ZGVmYXVsdDpnKCgpPT5bQShlLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsidGFiaW5kZXgiLCJkYXRhLW9yaWVudGF0aW9uIiwiYXMiLCJhcy1jaGlsZCIsImRpciJdKV0pLF86M30pKX19KSxIPUs7ZXhwb3J0e0ggYXMgUix6IGFzIGl9Owo=", "/_nuxt/DxCWQsnl.js": "aW1wb3J0e2FkIGFzIGwsYWUgYXMgc31mcm9tIi4vbzh0ZF9HMEouanMiO2Z1bmN0aW9uIGUocixpKXtyZXR1cm4gbChyKT8hMTpBcnJheS5pc0FycmF5KHIpP3Iuc29tZShhPT5zKGEsaSkpOnMocixpKX1leHBvcnR7ZSBhcyBpfTsK", "/_nuxt/N6K0rqtc.js": "aW1wb3J0e2FzIGFzIF8sZiBhcyAkLGcgYXMgSSxwIGFzIE0seiBhcyBOLG8gYXMgaSxjIGFzIHIsYSBhcyBsLGIgYXMgbSxHIGFzIHksaSBhcyBzLEUgYXMgTyx2IGFzIFMsRiBhcyBWLHEgYXMgRSxNIGFzIEQsdCBhcyBwLHcgYXMgSCxkIGFzIEMsaiBhcyBQLHIgYXMgZix1IGFzIEcsaCBhcyBMfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMgUn1mcm9tIi4vQ0FVQVg1VnIuanMiO2ltcG9ydHtfIGFzIEp9ZnJvbSIuL18ybFNkcjEzLmpzIjtpbXBvcnR7UyBhcyBLfWZyb20iLi9CWmxOTmZrNC5qcyI7aW1wb3J0Ii4vbTIwa2RHeFUuanMiO2Z1bmN0aW9uIFEoKXtmdW5jdGlvbiBrKGE9e30pe3JldHVybiBfKCIvYXBpL3N5c3RlbS90aWNrZXRzIix7cXVlcnk6ey4uLmF9fSl9ZnVuY3Rpb24gYyhhKXtyZXR1cm4gXygiL2FwaS9zeXN0ZW0vdGlja2V0cy86aWQiLHtxdWVyeTp7aWQ6YX19KX1mdW5jdGlvbiB2KGEsbil7cmV0dXJuIF8oIi9hcGkvc3lzdGVtL3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6YX0sYm9keTp7Ym9keTpufX0pfWZ1bmN0aW9uIGQoYSxuKXtyZXR1cm4gXygiL2FwaS9zeXN0ZW0vdGlja2V0cy86aWQiLHttZXRob2Q6IlBBVENIIixxdWVyeTp7aWQ6YX0sYm9keTpufSl9cmV0dXJue2ZldGNoVGlja2V0czprLGZldGNoVGlja2V0OmMscG9zdE1lc3NhZ2U6dix1cGRhdGVUaWNrZXQ6ZH19Y29uc3QgVz17Y2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTMifSxYPXtjbGFzczoiZmxleCBmbGV4LXdyYXAgZ2FwLTIifSxZPXtjbGFzczoiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMyBnYXAtNCBoLVtjYWxjKDEwMHZoLTE0cmVtKV0ifSxaPXtjbGFzczoibGc6Y29sLXNwYW4tMSBib3JkZXIgYm9yZGVyLWRlZmF1bHQgcm91bmRlZC1sZyBvdmVyZmxvdy15LWF1dG8gZGl2aWRlLXkgZGl2aWRlLWRlZmF1bHQifSxlZT17a2V5OjAsY2xhc3M6InAtNCB0ZXh0LXNtIHRleHQtbXV0ZWQifSx0ZT1bIm9uQ2xpY2siXSxzZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LGFlPXtjbGFzczoiZm9udC1tZWRpdW0gdHJ1bmNhdGUifSxsZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCBtdC0xIn0sb2U9e2tleTowfSxuZT17Y2xhc3M6ImxnOmNvbC1zcGFuLTIgYm9yZGVyIGJvcmRlci1kZWZhdWx0IHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuIGZsZXggZmxleC1jb2wifSxpZT17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBib3JkZXItYiBib3JkZXItZGVmYXVsdCBwLTMifSxjZT17Y2xhc3M6Im1pbi13LTAifSxkZT17Y2xhc3M6ImZvbnQtbWVkaXVtIHRydW5jYXRlIn0sdWU9e2NsYXNzOiJ0ZXh0LXhzIHRleHQtbXV0ZWQgdHJ1bmNhdGUifSxyZT17Y2xhc3M6ImZsZXggZ2FwLTIifSxtZT17a2V5OjEsY2xhc3M6ImgtZnVsbCBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQifSxwZT0kKHtfX25hbWU6IlN5c3RlbVRpY2tldEluYm94IixzZXR1cChrKXtjb25zdCBjPVEoKSx2PUkoKSxkPWYoKSxhPWYoKSxuPWYoITEpLEE9W3tsYWJlbDoiQWxsIHN0YXR1c2VzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiT3BlbiIsdmFsdWU6Im9wZW4ifSx7bGFiZWw6IkFjdGl2ZSIsdmFsdWU6ImFjdGl2ZSJ9LHtsYWJlbDoiQ2xvc2VkIix2YWx1ZToiY2xvc2VkIn1dLHE9W3tsYWJlbDoiQWxsIGtpbmRzIix2YWx1ZTp2b2lkIDB9LHtsYWJlbDoiRmVlZGJhY2siLHZhbHVlOiJmZWVkYmFjayJ9LHtsYWJlbDoiU3VwcG9ydCIsdmFsdWU6InN1cHBvcnQifV0se2RhdGE6ZyxlcnJvcjpVLHJlZnJlc2g6eH09TSgic3lzdGVtLXRpY2tldHMiLCgpPT5jLmZldGNoVGlja2V0cyh7c3RhdHVzOmQudmFsdWUsa2luZDphLnZhbHVlLG1pbmVPbmx5Om4udmFsdWUsbGltaXQ6NTB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSksd2F0Y2g6W2QsYSxuXSxzZXJ2ZXI6ITF9KTtOKFUpO2NvbnN0IHQ9ZihudWxsKSxiPWYoITEpO2FzeW5jIGZ1bmN0aW9uIGoodSl7dC52YWx1ZT1hd2FpdCBjLmZldGNoVGlja2V0KHUpfWFzeW5jIGZ1bmN0aW9uIEIodSl7aWYodC52YWx1ZSl7Yi52YWx1ZT0hMDt0cnl7dC52YWx1ZT1hd2FpdCBjLnBvc3RNZXNzYWdlKHQudmFsdWUuaWQsdSksYXdhaXQgeCgpfWZpbmFsbHl7Yi52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIGgodSl7dC52YWx1ZSYmKHQudmFsdWU9YXdhaXQgYy51cGRhdGVUaWNrZXQodC52YWx1ZS5pZCx7c3RhdHVzOnV9KSxhd2FpdCB4KCksdi5hZGQoe3RpdGxlOmBNYXJrZWQgJHt1fWAsY29sb3I6InN1Y2Nlc3MifSkpfXJldHVybih1LG8pPT57Y29uc3Qgdz1PLEY9Uix6PUosVD1QO3JldHVybiBpKCkscigiZGl2IixXLFtsKCJkaXYiLFgsW20odyx7bW9kZWxWYWx1ZTpzKGQpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzBdfHwob1swXT1lPT55KGQpP2QudmFsdWU9ZTpudWxsKSxpdGVtczpBLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsY2xhc3M6InctNDAifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pLG0odyx7bW9kZWxWYWx1ZTpzKGEpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzFdfHwob1sxXT1lPT55KGEpP2EudmFsdWU9ZTpudWxsKSxpdGVtczpxLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIsY2xhc3M6InctNDAifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pLG0oRix7bW9kZWxWYWx1ZTpzKG4pLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzJdfHwob1syXT1lPT55KG4pP24udmFsdWU9ZTpudWxsKSxsYWJlbDoiQXNzaWduZWQgdG8gbWUifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksbCgiZGl2IixZLFtsKCJkaXYiLFosW3MoZykuaXRlbXMubGVuZ3RoPT09MD8oaSgpLHIoInAiLGVlLCIgTm8gdGlja2V0cy4gIikpOlMoIiIsITApLChpKCEwKSxyKFYsbnVsbCxFKHMoZykuaXRlbXMsZT0+KGkoKSxyKCJidXR0b24iLHtrZXk6ZS5pZCx0eXBlOiJidXR0b24iLGNsYXNzOkQoWyJ3LWZ1bGwgdGV4dC1sZWZ0IHAtMyBob3ZlcjpiZy1lbGV2YXRlZC81MCIscyh0KT8uaWQ9PT1lLmlkPyJiZy1lbGV2YXRlZCI6IiJdKSxvbkNsaWNrOnZlPT5qKGUuaWQpfSxbbCgiZGl2IixzZSxbbCgic3BhbiIsYWUscChlLnN1YmplY3QpLDEpLG0oeix7c2l6ZToieHMiLHZhcmlhbnQ6InN1YnRsZSIsY29sb3I6ZS5zdGF0dXM9PT0iY2xvc2VkIj8ibmV1dHJhbCI6ZS5zdGF0dXM9PT0iYWN0aXZlIj8ic3VjY2VzcyI6Indhcm5pbmcifSx7ZGVmYXVsdDpIKCgpPT5bQyhwKGUuc3RhdHVzKSwxKV0pLF86Mn0sMTAzMixbImNvbG9yIl0pXSksbCgicCIsbGUsW0MocChlLmtpbmQ9PT0iZmVlZGJhY2siPyJGZWVkYmFjayI6ZS5jYXRlZ29yeSkrIiAiLDEpLGUuYXNzaWduZWRUbz8oaSgpLHIoInNwYW4iLG9lLCIgwrcgY2xhaW1lZCIpKTpTKCIiLCEwKV0pXSwxMCx0ZSkpKSwxMjgpKV0pLGwoImRpdiIsbmUsW3ModCk/KGkoKSxyKFYse2tleTowfSxbbCgiZGl2IixpZSxbbCgiZGl2IixjZSxbbCgicCIsZGUscChzKHQpLnN1YmplY3QpLDEpLGwoInAiLHVlLHAocyh0KS5yZXF1ZXN0ZXI/Lm5hbWU/P3ModCkucmVxdWVzdGVyPy5lbWFpbCksMSldKSxsKCJkaXYiLHJlLFttKFQse3NpemU6InhzIix2YXJpYW50OiJzb2Z0IixsYWJlbDoiQWN0aXZlIixkaXNhYmxlZDpzKHQpLnN0YXR1cz09PSJhY3RpdmUiLG9uQ2xpY2s6b1szXXx8KG9bM109ZT0+aCgiYWN0aXZlIikpfSxudWxsLDgsWyJkaXNhYmxlZCJdKSxtKFQse3NpemU6InhzIix2YXJpYW50OiJzb2Z0Iixjb2xvcjoibmV1dHJhbCIsbGFiZWw6IkNsb3NlIixkaXNhYmxlZDpzKHQpLnN0YXR1cz09PSJjbG9zZWQiLG9uQ2xpY2s6b1s0XXx8KG9bNF09ZT0+aCgiY2xvc2VkIikpfSxudWxsLDgsWyJkaXNhYmxlZCJdKV0pXSksbShLLHtjbGFzczoiZmxleC0xIixtZXNzYWdlczpzKHQpLm1lc3NhZ2VzLCJ2aWV3ZXItcm9sZSI6ImFnZW50IiwiY2FuLXJlcGx5IjpzKHQpLnN0YXR1cyE9PSJjbG9zZWQiLHNlbmRpbmc6cyhiKSxvblNlbmQ6Qn0sbnVsbCw4LFsibWVzc2FnZXMiLCJjYW4tcmVwbHkiLCJzZW5kaW5nIl0pXSw2NCkpOihpKCkscigiZGl2IixtZSwiIFNlbGVjdCBhIHRpY2tldCB0byByZXNwb25kLiAiKSldKV0pXSl9fX0pLGZlPU9iamVjdC5hc3NpZ24ocGUse19fbmFtZToiU3lzdGVtVGlja2V0SW5ib3gifSkseGU9JCh7X19uYW1lOiJ0aWNrZXRzIixzZXR1cChrKXtyZXR1cm4gRyh7dGl0bGU6IlN5c3RlbSDCtyBUaWNrZXRzIn0pLChjLHYpPT4oaSgpLEwoZmUpKX19KTtleHBvcnR7eGUgYXMgZGVmYXVsdH07Cg==", "/_nuxt/WmDXHYKk.js": "aW1wb3J0e2YgYXMgTCxhdSBhcyBXZSxiYyBhcyBzdCxhOSBhcyBrZSxhNCBhcyBRLG8gYXMgcyxoIGFzIGMsdyBhcyBkLGIgYXMgaCxpIGFzIGUsYWEgYXMgcSxHIGFzIEhlLEwgYXMgdixiZCBhcyBudCxiZSBhcyBPZSxhNiBhcyBMZSxiZiBhcyB1dCxyIGFzIEcsbCBhcyB3LGI5IGFzIGR0LGE3IGFzIFRlLGE4IGFzIFcsUCBhcyBYLGJnIGFzIHB0LGJoIGFzIGN0LGJpIGFzIGZ0LGJqIGFzIG10LGFEIGFzIGd0LGE1IGFzIEFlLGJrIGFzIHZ0LGJsIGFzIFllLGFiIGFzIGRlLGJtIGFzIGJ0LGFjIGFzIHl0LGJuIGFzIGh0LGF2IGFzIFosYm8gYXMgeHQsdiBhcyBPLGFpIGFzIEplLGEyIGFzIENlLGFnIGFzIF90LGQgYXMgSixSIGFzIE1lLFogYXMgQ3QsdCBhcyBVLGF3IGFzIHBlLGJwIGFzIHF0LGFoIGFzIEl0LFUgYXMgU3QsYXggYXMgenQsSiBhcyB3dCxLIGFzIEJ0LGFqIGFzIGt0LGJxIGFzIEx0LGFGIGFzIGosYWsgYXMgT3QsYnIgYXMgVHQsYnMgYXMgQXQsYUcgYXMgbmUsYUIgYXMgRGUsYUMgYXMgUmUsYyBhcyBFLE0gYXMgeSxhIGFzIHVlLGJ0IGFzIGFlLGsgYXMgX2UsSSBhcyBLZSxidSBhcyBFdCxGIGFzIFkscSBhcyB3ZSxqIGFzIEZ0LGJ2IGFzIFZ0LEggYXMgJHQsVyBhcyBOZSxOIGFzIGplLGJ3IGFzIEdlLGJ4IGFzIFB0LGJ5IGFzIE10LGJ6IGFzIER0LGI2IGFzIFJ0fWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e3UgYXMgS3QsYSBhcyBOdH1mcm9tIi4vQjdzNXBqalIuanMiO2ltcG9ydHtMIGFzIGp0LGEgYXMgR3QsYiBhcyBVdCxpIGFzIFd0LGMgYXMgSHQsZCBhcyBZdCxlIGFzIEp0LGYgYXMgWnQsZyBhcyBRdH1mcm9tIi4vREhDd0VMV3AuanMiO2NvbnN0W0QsWHRdPVRlKCJDb21ib2JveFJvb3QiKTt2YXIgZWE9TCh7X19uYW1lOiJDb21ib2JveFJvb3QiLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlc2V0U2VhcmNoVGVybU9uQmx1cjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LHJlc2V0U2VhcmNoVGVybU9uU2VsZWN0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sb3Blbk9uRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxvcGVuT25DbGljazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGlnbm9yZUZpbHRlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0T25Ib3Zlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImhpZ2hsaWdodCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAobix7ZXhwb3NlOmYsZW1pdDpyfSl7Y29uc3QgdD1uLGE9cix7cHJpbWl0aXZlRWxlbWVudDppLGN1cnJlbnRFbGVtZW50Om19PU9lKCkse211bHRpcGxlOngsZGlzYWJsZWQ6YixpZ25vcmVGaWx0ZXI6dSxyZXNldFNlYXJjaFRlcm1PblNlbGVjdDpJLG9wZW5PbkZvY3VzOlYsb3Blbk9uQ2xpY2s6VCxkaXI6QSxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOkMsaGlnaGxpZ2h0T25Ib3ZlcjpnfT1XZSh0KSxCPXN0KEEpLEY9a2UodCwibW9kZWxWYWx1ZSIsYSx7ZGVmYXVsdFZhbHVlOnQuZGVmYXVsdFZhbHVlPz8oeC52YWx1ZT9bXTp2b2lkIDApLHBhc3NpdmU6dC5tb2RlbFZhbHVlPT09dm9pZCAwLGRlZXA6ITB9KSxSPWtlKHQsIm9wZW4iLGEse2RlZmF1bHRWYWx1ZTp0LmRlZmF1bHRPcGVuLHBhc3NpdmU6dC5vcGVuPT09dm9pZCAwfSk7YXN5bmMgZnVuY3Rpb24gcWUoUyl7Ui52YWx1ZT1TLGVlLnZhbHVlPSIiLFM/KGF3YWl0IExlKCksaS52YWx1ZT8uaGlnaGxpZ2h0U2VsZWN0ZWQoKSxsZS52YWx1ZT0hMCxpZS52YWx1ZT8uZm9jdXMoKSk6KGxlLnZhbHVlPSExLHNldFRpbWVvdXQoKCk9PnshUyYmdC5yZXNldFNlYXJjaFRlcm1PbkJsdXImJmNlLnRyaWdnZXIoKX0sMSkpfWNvbnN0IGNlPXV0KCksbGU9RyghMSksZmU9RyghMSksaWU9RygpLG1lPUcoKSxnZT13KCgpPT5pLnZhbHVlPy5oaWdobGlnaHRlZEVsZW1lbnQ/P3ZvaWQgMCkscmU9RyhuZXcgTWFwKSxvZT1HKG5ldyBNYXApLHtjb250YWluczpJZX09S3Qoe3NlbnNpdGl2aXR5OiJiYXNlIn0pLGVlPUcoIiIpLHZlPXcoUz0+e2lmKCFlZS52YWx1ZXx8dC5pZ25vcmVGaWx0ZXJ8fGZlLnZhbHVlKXJldHVybntjb3VudDpyZS52YWx1ZS5zaXplLGl0ZW1zOlM/Lml0ZW1zPz9uZXcgTWFwLGdyb3VwczpTPy5ncm91cHM/P25ldyBTZXQob2UudmFsdWUua2V5cygpKX07bGV0ICQ9MDtjb25zdCBQPW5ldyBNYXAsSD1uZXcgU2V0O2Zvcihjb25zdFtzZSxOXW9mIHJlLnZhbHVlKXtjb25zdCB0ZT1JZShOLGVlLnZhbHVlKTtQLnNldChzZSx0ZT8xOjApLHRlJiYkKyt9Zm9yKGNvbnN0W3NlLE5db2Ygb2UudmFsdWUpZm9yKGNvbnN0IHRlIG9mIE4paWYoUC5nZXQodGUpPjApe0guYWRkKHNlKTticmVha31yZXR1cm57Y291bnQ6JCxpdGVtczpQLGdyb3VwczpIfX0pLEs9ZHQoKTtyZXR1cm4gUSgoKT0+e0s/LmV4cG9zZWQmJihLLmV4cG9zZWQuaGlnaGxpZ2h0SXRlbT1pLnZhbHVlPy5oaWdobGlnaHRJdGVtLEsuZXhwb3NlZC5oaWdobGlnaHRGaXJzdEl0ZW09aS52YWx1ZT8uaGlnaGxpZ2h0Rmlyc3RJdGVtLEsuZXhwb3NlZC5oaWdobGlnaHRTZWxlY3RlZD1pLnZhbHVlPy5oaWdobGlnaHRTZWxlY3RlZCl9KSxmKHtmaWx0ZXJlZDp2ZSxoaWdobGlnaHRlZEVsZW1lbnQ6Z2UsaGlnaGxpZ2h0SXRlbTppLnZhbHVlPy5oaWdobGlnaHRJdGVtLGhpZ2hsaWdodEZpcnN0SXRlbTppLnZhbHVlPy5oaWdobGlnaHRGaXJzdEl0ZW0saGlnaGxpZ2h0U2VsZWN0ZWQ6aS52YWx1ZT8uaGlnaGxpZ2h0U2VsZWN0ZWR9KSxYdCh7bW9kZWxWYWx1ZTpGLG11bHRpcGxlOngsZGlzYWJsZWQ6YixvcGVuOlIsb25PcGVuQ2hhbmdlOnFlLGNvbnRlbnRJZDoiIixpc1VzZXJJbnB1dHRlZDpsZSxpc1ZpcnR1YWw6ZmUsaW5wdXRFbGVtZW50OmllLGhpZ2hsaWdodGVkRWxlbWVudDpnZSxvbklucHV0RWxlbWVudENoYW5nZTpTPT5pZS52YWx1ZT1TLHRyaWdnZXJFbGVtZW50Om1lLG9uVHJpZ2dlckVsZW1lbnRDaGFuZ2U6Uz0+bWUudmFsdWU9UyxwYXJlbnRFbGVtZW50Om0scmVzZXRTZWFyY2hUZXJtT25TZWxlY3Q6SSxvblJlc2V0U2VhcmNoVGVybTpjZS5vbixhbGxJdGVtczpyZSxhbGxHcm91cHM6b2UsZmlsdGVyU2VhcmNoOmVlLGZpbHRlclN0YXRlOnZlLGlnbm9yZUZpbHRlcjp1LG9wZW5PbkZvY3VzOlYsb3Blbk9uQ2xpY2s6VCxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOkN9KSwoUywkKT0+KHMoKSxjKGUobnQpLG51bGwse2RlZmF1bHQ6ZCgoKT0+W2goZShqdCkscSh7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOml9LFMuJGF0dHJzLHttb2RlbFZhbHVlOmUoRiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOiRbMF18fCgkWzBdPVA9PkhlKEYpP0YudmFsdWU9UDpudWxsKSxzdHlsZTp7cG9pbnRlckV2ZW50czplKFIpPyJhdXRvIjp2b2lkIDB9LGFzOlMuYXMsImFzLWNoaWxkIjpTLmFzQ2hpbGQsZGlyOmUoQiksbXVsdGlwbGU6ZSh4KSxuYW1lOlMubmFtZSxyZXF1aXJlZDpTLnJlcXVpcmVkLGRpc2FibGVkOmUoYiksImhpZ2hsaWdodC1vbi1ob3ZlciI6ZShnKSxieTp0LmJ5LG9uSGlnaGxpZ2h0OiRbMV18fCgkWzFdPVA9PmEoImhpZ2hsaWdodCIsUCkpfSkse2RlZmF1bHQ6ZCgoKT0+W3YoUy4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOmUoUiksbW9kZWxWYWx1ZTplKEYpfSldKSxfOjN9LDE2LFsibW9kZWxWYWx1ZSIsInN0eWxlIiwiYXMiLCJhcy1jaGlsZCIsImRpciIsIm11bHRpcGxlIiwibmFtZSIsInJlcXVpcmVkIiwiZGlzYWJsZWQiLCJoaWdobGlnaHQtb24taG92ZXIiLCJieSJdKV0pLF86M30pKX19KSx0YT1lYSxhYT1MKHtfX25hbWU6IkNvbWJvYm94QW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0e2ZvcndhcmRSZWY6Zn09VygpO3JldHVybihyLHQpPT4ocygpLGMoZShwdCkseyJhcy1jaGlsZCI6IiIscmVmZXJlbmNlOnIucmVmZXJlbmNlfSx7ZGVmYXVsdDpkKCgpPT5baChlKFgpLHEoe3JlZjplKGYpLCJhcy1jaGlsZCI6ci5hc0NoaWxkLGFzOnIuYXN9LHIuJGF0dHJzKSx7ZGVmYXVsdDpkKCgpPT5bdihyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzLWNoaWxkIiwiYXMiXSldKSxfOjN9LDgsWyJyZWZlcmVuY2UiXSkpfX0pLGxhPWFhO2NvbnN0W2lhLHJhXT1UZSgiQ29tYm9ib3hDb250ZW50Iik7dmFyIG9hPUwoe19fbmFtZToiQ29tYm9ib3hDb250ZW50SW1wbCIscHJvcHM6e3Bvc2l0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJpbmxpbmUifSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWRlV2hlbkVtcHR5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIl0sc2V0dXAobix7ZW1pdDpmfSl7Y29uc3Qgcj1uLHQ9Zix7cG9zaXRpb246YX09V2UociksaT1EKCksbT13KCgpPT5pLmlnbm9yZUZpbHRlci52YWx1ZT9pLmFsbEl0ZW1zLnZhbHVlLnNpemU9PT0wOmkuZmlsdGVyU3RhdGUudmFsdWUuY291bnQ9PT0wKSx7Zm9yd2FyZFJlZjp4LGN1cnJlbnRFbGVtZW50OmJ9PVcoKTtjdChyLmJvZHlMb2NrKSxmdCgpLG10KGkucGFyZW50RWxlbWVudCk7Y29uc3QgdT13KCgpPT5yLnBvc2l0aW9uPT09InBvcHBlciI/cjp7fSksST1ndCh1LnZhbHVlKSxWPXtib3hTaXppbmc6ImJvcmRlci1ib3giLCItLXJla2EtY29tYm9ib3gtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2EtY29tYm9ib3gtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLWNvbWJvYm94LXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCkifTtyYSh7cG9zaXRpb246YX0pO2NvbnN0IFQ9RyghMSk7cmV0dXJuIFEoKCk9PntpLmlucHV0RWxlbWVudC52YWx1ZSYmKFQudmFsdWU9Yi52YWx1ZS5jb250YWlucyhpLmlucHV0RWxlbWVudC52YWx1ZSksVC52YWx1ZSYmaS5pbnB1dEVsZW1lbnQudmFsdWUuZm9jdXMoKSl9KSxBZSgoKT0+e2NvbnN0IEE9dnQoKTtULnZhbHVlJiYoIUF8fEE9PT1kb2N1bWVudC5ib2R5KSYmaS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoKX0pLChBLEMpPT4ocygpLGMoZShHdCkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmQoKCk9PltoKGUoWWUpLHsiYXMtY2hpbGQiOiIiLG9uTW91bnRBdXRvRm9jdXM6Q1s1XXx8KENbNV09ZGUoKCk9Pnt9LFsicHJldmVudCJdKSksb25Vbm1vdW50QXV0b0ZvY3VzOkNbNl18fChDWzZdPWRlKCgpPT57fSxbInByZXZlbnQiXSkpfSx7ZGVmYXVsdDpkKCgpPT5baChlKGJ0KSx7ImFzLWNoaWxkIjoiIiwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjpBLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkRpc21pc3M6Q1swXXx8KENbMF09Zz0+ZShpKS5vbk9wZW5DaGFuZ2UoITEpKSxvbkZvY3VzT3V0c2lkZTpDWzFdfHwoQ1sxXT1nPT57ZShpKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyhnLnRhcmdldCkmJmcucHJldmVudERlZmF1bHQoKSx0KCJmb2N1c091dHNpZGUiLGcpfSksb25JbnRlcmFjdE91dHNpZGU6Q1syXXx8KENbMl09Zz0+dCgiaW50ZXJhY3RPdXRzaWRlIixnKSksb25Fc2NhcGVLZXlEb3duOkNbM118fChDWzNdPWc9PnQoImVzY2FwZUtleURvd24iLGcpKSxvblBvaW50ZXJEb3duT3V0c2lkZTpDWzRdfHwoQ1s0XT1nPT57ZShpKS5wYXJlbnRFbGVtZW50LnZhbHVlPy5jb250YWlucyhnLnRhcmdldCkmJmcucHJldmVudERlZmF1bHQoKSx0KCJwb2ludGVyRG93bk91dHNpZGUiLGcpfSl9LHtkZWZhdWx0OmQoKCk9PlsocygpLGMoeXQoZShhKT09PSJwb3BwZXIiP2UoaHQpOmUoWCkpLHEoey4uLkEuJGF0dHJzLC4uLmUoSSl9LHtpZDplKGkpLmNvbnRlbnRJZCxyZWY6ZSh4KSwiZGF0YS1zdGF0ZSI6ZShpKS5vcGVuLnZhbHVlPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1lbXB0eSI6bS52YWx1ZT8iIjp2b2lkIDAsc3R5bGU6e2Rpc3BsYXk6ci5oaWRlV2hlbkVtcHR5JiZtLnZhbHVlPyJub25lIjoiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdXRsaW5lOiJub25lIiwuLi5lKGEpPT09InBvcHBlciI/Vjp7fX19KSx7ZGVmYXVsdDpkKCgpPT5bdihBLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIiwiZGF0YS1zdGF0ZSIsImRhdGEtZW1wdHkiLCJzdHlsZSJdKSldKSxfOjN9LDgsWyJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiXSldKSxfOjN9KV0pLF86M30pKX19KSxzYT1vYSxuYT1MKHtfX25hbWU6IkNvbWJvYm94QXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChuKXtjb25zdCBmPW4scj1EKCksdD1pYSgpO3JldHVybiBXKCksKGEsaSk9PmUocikub3Blbi52YWx1ZSYmZSh0KS5wb3NpdGlvbi52YWx1ZT09PSJwb3BwZXIiPyhzKCksYyhlKHh0KSxaKHEoe2tleTowfSxmKSkse2RlZmF1bHQ6ZCgoKT0+W3YoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTpPKCJ2LWlmIiwhMCl9fSksdWE9bmEsZGE9TCh7X19uYW1lOiJDb21ib2JveENhbmNlbCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAobil7Y29uc3QgZj1uO1coKTtjb25zdCByPUQoKTtmdW5jdGlvbiB0KCl7ci5maWx0ZXJTZWFyY2gudmFsdWU9IiIsci5pbnB1dEVsZW1lbnQudmFsdWUmJihyLmlucHV0RWxlbWVudC52YWx1ZS52YWx1ZT0iIixyLmlucHV0RWxlbWVudC52YWx1ZS5mb2N1cygpKSxyLnJlc2V0TW9kZWxWYWx1ZU9uQ2xlYXI/LnZhbHVlJiYoci5tb2RlbFZhbHVlLnZhbHVlPXIubXVsdGlwbGUudmFsdWU/W106bnVsbCl9cmV0dXJuKGEsaSk9PihzKCksYyhlKFgpLHEoe3R5cGU6YS5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMH0sZix7dGFiaW5kZXg6Ii0xIixvbkNsaWNrOnR9KSx7ZGVmYXVsdDpkKCgpPT5bdihhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbInR5cGUiXSkpfX0pLHBhPWRhLGNhPUwoe19fbmFtZToiQ29tYm9ib3hDb250ZW50Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGhpZGVXaGVuRW1wdHk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiXSxzZXR1cChuLHtlbWl0OmZ9KXtjb25zdCBhPUplKG4sZikse2ZvcndhcmRSZWY6aX09VygpLG09RCgpO3JldHVybiBtLmNvbnRlbnRJZHx8PUNlKHZvaWQgMCwicmVrYS1jb21ib2JveC1jb250ZW50IiksKHgsYik9PihzKCksYyhlKF90KSx7cHJlc2VudDp4LmZvcmNlTW91bnR8fGUobSkub3Blbi52YWx1ZX0se2RlZmF1bHQ6ZCgoKT0+W2goc2EscSh7Li4uZShhKSwuLi54LiRhdHRyc30se3JlZjplKGkpfSkse2RlZmF1bHQ6ZCgoKT0+W3YoeC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksZmE9Y2EsbWE9TCh7X19uYW1lOiJDb21ib2JveEVtcHR5Iixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZj1uLHI9RCgpLHQ9dygoKT0+ci5pZ25vcmVGaWx0ZXIudmFsdWU/ci5hbGxJdGVtcy52YWx1ZS5zaXplPT09MDpyLmZpbHRlclN0YXRlLnZhbHVlLmNvdW50PT09MCk7cmV0dXJuKGEsaSk9PnQudmFsdWU/KHMoKSxjKGUoWCksWihxKHtrZXk6MH0sZikpLHtkZWZhdWx0OmQoKCk9Plt2KGEuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2lbMF18fChpWzBdPUooIk5vIG9wdGlvbnMiKSldKV0pLF86M30sMTYpKTpPKCJ2LWlmIiwhMCl9fSksZ2E9bWE7Y29uc3RbWmUsdmFdPVRlKCJDb21ib2JveEdyb3VwIik7dmFyIGJhPUwoe19fbmFtZToiQ29tYm9ib3hHcm91cCIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IGY9bixyPUNlKHZvaWQgMCwicmVrYS1jb21ib2JveC1ncm91cCIpLHQ9RCgpLGE9dygoKT0+dC5pZ25vcmVGaWx0ZXIudmFsdWU/ITA6dC5maWx0ZXJTZWFyY2gudmFsdWU/dC5maWx0ZXJTdGF0ZS52YWx1ZS5ncm91cHMuaGFzKHIpOiEwKSxpPXZhKHtpZDpyLGxhYmVsSWQ6IiJ9KTtyZXR1cm4gUSgoKT0+e3QuYWxsR3JvdXBzLnZhbHVlLmhhcyhyKXx8dC5hbGxHcm91cHMudmFsdWUuc2V0KHIsbmV3IFNldCl9KSxBZSgoKT0+e3QuYWxsR3JvdXBzLnZhbHVlLmRlbGV0ZShyKX0pLChtLHgpPT4ocygpLGMoZShVdCkscSh7aWQ6ZShyKSwiYXJpYS1sYWJlbGxlZGJ5IjplKGkpLmxhYmVsSWR9LGYse2hpZGRlbjphLnZhbHVlP3ZvaWQgMDohMH0pLHtkZWZhdWx0OmQoKCk9Plt2KG0uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJhcmlhLWxhYmVsbGVkYnkiLCJoaWRkZW4iXSkpfX0pLEJlPWJhLHlhPUwoe19fbmFtZToiQ29tYm9ib3hJbnB1dCIscHJvcHM6e2Rpc3BsYXlWYWx1ZTp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGF1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaW5wdXQifX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSJdLHNldHVwKG4se2VtaXQ6Zn0pe2NvbnN0IHI9bix0PWYsYT1EKCksaT1XdCgpLHtwcmltaXRpdmVFbGVtZW50Om0sY3VycmVudEVsZW1lbnQ6eH09T2UoKSxiPWtlKHIsIm1vZGVsVmFsdWUiLHQse3Bhc3NpdmU6ci5tb2RlbFZhbHVlPT09dm9pZCAwfSk7USgoKT0+e3gudmFsdWUmJmEub25JbnB1dEVsZW1lbnRDaGFuZ2UoeC52YWx1ZSl9KTtmdW5jdGlvbiB1KGcpe2Eub3Blbi52YWx1ZXx8YS5vbk9wZW5DaGFuZ2UoITApfWZ1bmN0aW9uIEkoZyl7Y29uc3QgQj1nLnRhcmdldDthLm9wZW4udmFsdWU/YS5maWx0ZXJTZWFyY2gudmFsdWU9Qi52YWx1ZTooYS5vbk9wZW5DaGFuZ2UoITApLExlKCgpPT57Qi52YWx1ZSYmKGEuZmlsdGVyU2VhcmNoLnZhbHVlPUIudmFsdWUsaS5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9KSl9ZnVuY3Rpb24gVigpe2Eub3Blbk9uRm9jdXMudmFsdWUmJiFhLm9wZW4udmFsdWUmJmEub25PcGVuQ2hhbmdlKCEwKX1mdW5jdGlvbiBUKGcpe2lmKCFhLm9wZW4udmFsdWUpcmV0dXJuO2NvbnN0IEI9Zy5yZWxhdGVkVGFyZ2V0O2lmKCFCKXJldHVybjtjb25zdCBGPWEucGFyZW50RWxlbWVudC52YWx1ZT8uY29udGFpbnMoQiksUj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhLmNvbnRlbnRJZCk/LmNvbnRhaW5zKEIpOyFGJiYhUiYmYS5vbk9wZW5DaGFuZ2UoITEpfWZ1bmN0aW9uIEEoKXthLm9wZW5PbkNsaWNrLnZhbHVlJiYhYS5vcGVuLnZhbHVlJiZhLm9uT3BlbkNoYW5nZSghMCl9ZnVuY3Rpb24gQygpe2NvbnN0IGc9YS5tb2RlbFZhbHVlLnZhbHVlO3IuZGlzcGxheVZhbHVlP2IudmFsdWU9ci5kaXNwbGF5VmFsdWUoZyk6IWEubXVsdGlwbGUudmFsdWUmJmcmJiFBcnJheS5pc0FycmF5KGcpJiZ0eXBlb2YgZyE9Im9iamVjdCI/Yi52YWx1ZT1nLnRvU3RyaW5nKCk6Yi52YWx1ZT0iIixMZSgoKT0+e2IudmFsdWU9Yi52YWx1ZX0pfXJldHVybiBhLm9uUmVzZXRTZWFyY2hUZXJtKCgpPT57QygpfSksTWUoYS5tb2RlbFZhbHVlLGFzeW5jKCk9PnshYS5pc1VzZXJJbnB1dHRlZC52YWx1ZSYmYS5yZXNldFNlYXJjaFRlcm1PblNlbGVjdC52YWx1ZSYmQygpfSx7aW1tZWRpYXRlOiEwLGRlZXA6ITB9KSxNZShhLmZpbHRlclN0YXRlLChnLEIpPT57IWEuaXNWaXJ0dWFsLnZhbHVlJiZCLmNvdW50PT09MCYmaS5oaWdobGlnaHRGaXJzdEl0ZW0oKX0pLChnLEIpPT4ocygpLGMoZShIdCkse3JlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjptLG1vZGVsVmFsdWU6ZShiKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6QlswXXx8KEJbMF09Rj0+SGUoYik/Yi52YWx1ZT1GOm51bGwpLGFzOmcuYXMsImFzLWNoaWxkIjpnLmFzQ2hpbGQsImF1dG8tZm9jdXMiOmcuYXV0b0ZvY3VzLGRpc2FibGVkOmcuZGlzYWJsZWQsImFyaWEtZXhwYW5kZWQiOmUoYSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6ZShhKS5jb250ZW50SWQsImFyaWEtYXV0b2NvbXBsZXRlIjoibGlzdCIscm9sZToiY29tYm9ib3giLGF1dG9jb21wbGV0ZToib2ZmIixvbkNsaWNrOkEsb25JbnB1dDpJLG9uS2V5ZG93bjpDdChkZSh1LFsicHJldmVudCJdKSxbImRvd24iLCJ1cCJdKSxvbkZvY3VzOlYsb25CbHVyOlR9LHtkZWZhdWx0OmQoKCk9Plt2KGcuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJtb2RlbFZhbHVlIiwiYXMiLCJhcy1jaGlsZCIsImF1dG8tZm9jdXMiLCJkaXNhYmxlZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwib25LZXlkb3duIl0pKX19KSxoYT15YSx4YT1MKHtfX25hbWU6IkNvbWJvYm94SXRlbSIscHJvcHM6e3RleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAobix7ZW1pdDpmfSl7Y29uc3Qgcj1uLHQ9ZixhPUNlKHZvaWQgMCwicmVrYS1jb21ib2JveC1pdGVtIiksaT1EKCksbT1aZShudWxsKSx7cHJpbWl0aXZlRWxlbWVudDp4LGN1cnJlbnRFbGVtZW50OmJ9PU9lKCk7aWYoci52YWx1ZT09PSIiKXRocm93IG5ldyBFcnJvcigiQSA8Q29tYm9ib3hJdGVtIC8+IG11c3QgaGF2ZSBhIHZhbHVlIHByb3AgdGhhdCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nLiBUaGlzIGlzIGJlY2F1c2UgdGhlIENvbWJvYm94IHZhbHVlIGNhbiBiZSBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGNsZWFyIHRoZSBzZWxlY3Rpb24gYW5kIHNob3cgdGhlIHBsYWNlaG9sZGVyLiIpO2NvbnN0IHU9dygoKT0+e2lmKGkuaXNWaXJ0dWFsLnZhbHVlfHxpLmlnbm9yZUZpbHRlci52YWx1ZXx8IWkuZmlsdGVyU2VhcmNoLnZhbHVlKXJldHVybiEwO3tjb25zdCBJPWkuZmlsdGVyU3RhdGUudmFsdWUuaXRlbXMuZ2V0KGEpO3JldHVybiBJPT09dm9pZCAwPyEwOkk+MH19KTtyZXR1cm4gUSgoKT0+e2kuYWxsSXRlbXMudmFsdWUuc2V0KGEsci50ZXh0VmFsdWV8fGIudmFsdWUudGV4dENvbnRlbnR8fGIudmFsdWUuaW5uZXJUZXh0KTtjb25zdCBJPW0/LmlkO0kmJihpLmFsbEdyb3Vwcy52YWx1ZS5oYXMoSSk/aS5hbGxHcm91cHMudmFsdWUuZ2V0KEkpPy5hZGQoYSk6aS5hbGxHcm91cHMudmFsdWUuc2V0KEksbmV3IFNldChbYV0pKSl9KSxBZSgoKT0+e2kuYWxsSXRlbXMudmFsdWUuZGVsZXRlKGEpfSksKEksVik9PnUudmFsdWU/KHMoKSxjKGUoWXQpLHEoe2tleTowfSxyLHtpZDplKGEpLHJlZl9rZXk6InByaW1pdGl2ZUVsZW1lbnQiLHJlZjp4LGRpc2FibGVkOmUoaSkuZGlzYWJsZWQudmFsdWV8fEkuZGlzYWJsZWQsb25TZWxlY3Q6VlswXXx8KFZbMF09VD0+e3QoInNlbGVjdCIsVCksIVQuZGVmYXVsdFByZXZlbnRlZCYmKCFlKGkpLm11bHRpcGxlLnZhbHVlJiYhSS5kaXNhYmxlZCYmIWUoaSkuZGlzYWJsZWQudmFsdWU/KFQucHJldmVudERlZmF1bHQoKSxlKGkpLm9uT3BlbkNoYW5nZSghMSksZShpKS5tb2RlbFZhbHVlLnZhbHVlPXIudmFsdWUpOmUoaSkubXVsdGlwbGUudmFsdWUmJmUoaSkuaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpKX0pfSkse2RlZmF1bHQ6ZCgoKT0+W3YoSS4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bSihVKEkudmFsdWUpLDEpXSldKSxfOjN9LDE2LFsiaWQiLCJkaXNhYmxlZCJdKSk6Tygidi1pZiIsITApfX0pLFVlPXhhLF9hPUwoe19fbmFtZToiQ29tYm9ib3hJdGVtSW5kaWNhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAobil7Y29uc3QgZj1uO3JldHVybihyLHQpPT4ocygpLGMoZShKdCksWihwZShmKSkse2RlZmF1bHQ6ZCgoKT0+W3Yoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxDYT1fYSxxYT1MKHtfX25hbWU6IkNvbWJvYm94TGFiZWwiLHByb3BzOntmb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGl2In19LHNldHVwKG4pe2NvbnN0IGY9bjtXKCk7Y29uc3Qgcj1aZSh7aWQ6IiIsbGFiZWxJZDoiIn0pO3JldHVybiByLmxhYmVsSWR8fD1DZSh2b2lkIDAsInJla2EtY29tYm9ib3gtZ3JvdXAtbGFiZWwiKSwodCxhKT0+KHMoKSxjKGUoWCkscShmLHtpZDplKHIpLmxhYmVsSWR9KSx7ZGVmYXVsdDpkKCgpPT5bdih0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxJYT1xYSxTYT1MKHtfX25hbWU6IkNvbWJvYm94UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZj1uO3JldHVybihyLHQpPT4ocygpLGMoZShxdCksWihwZShmKSkse2RlZmF1bHQ6ZCgoKT0+W3Yoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx6YT1TYSx3YT1MKHtfX25hbWU6IkNvbWJvYm94U2VwYXJhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAobil7Y29uc3QgZj1uO3JldHVybiBXKCksKHIsdCk9PihzKCksYyhlKFgpLHEoZix7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx7ZGVmYXVsdDpkKCgpPT5bdihyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLEJhPXdhLGthPUwoe19fbmFtZToiQ29tYm9ib3hUcmlnZ2VyIixwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChuKXtjb25zdCBmPW4se2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDp0fT1XKCksYT1EKCksaT13KCgpPT5mLmRpc2FibGVkfHxhLmRpc2FibGVkLnZhbHVlfHwhMSk7cmV0dXJuIFEoKCk9Pnt0LnZhbHVlJiZhLm9uVHJpZ2dlckVsZW1lbnRDaGFuZ2UodC52YWx1ZSl9KSwobSx4KT0+KHMoKSxjKGUoWCkscShmLHtyZWY6ZShyKSx0eXBlOm0uYXM9PT0iYnV0dG9uIj8iYnV0dG9uIjp2b2lkIDAsdGFiaW5kZXg6Ii0xIiwiYXJpYS1sYWJlbCI6IlNob3cgcG9wdXAiLCJhcmlhLWhhc3BvcHVwIjoibGlzdGJveCIsImFyaWEtZXhwYW5kZWQiOmUoYSkub3Blbi52YWx1ZSwiYXJpYS1jb250cm9scyI6ZShhKS5jb250ZW50SWQsImRhdGEtc3RhdGUiOmUoYSkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsZGlzYWJsZWQ6aS52YWx1ZSwiZGF0YS1kaXNhYmxlZCI6aS52YWx1ZT8iIjp2b2lkIDAsImFyaWEtZGlzYWJsZWQiOmkudmFsdWU/P3ZvaWQgMCxvbkNsaWNrOnhbMF18fCh4WzBdPWI9PmUoYSkub25PcGVuQ2hhbmdlKCFlKGEpLm9wZW4udmFsdWUpKX0pLHtkZWZhdWx0OmQoKCk9Plt2KG0uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsidHlwZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSIsImRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsImFyaWEtZGlzYWJsZWQiXSkpfX0pLExhPWthLE9hPUwoe19fbmFtZToiQ29tYm9ib3hWaXJ0dWFsaXplciIscHJvcHM6e29wdGlvbnM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITB9LG92ZXJzY2FuOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sZXN0aW1hdGVTaXplOnt0eXBlOltOdW1iZXIsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSx0ZXh0Q29udGVudDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX19LHNldHVwKG4pe2NvbnN0IGY9bixyPUQoKTtyZXR1cm4gci5pc1ZpcnR1YWwudmFsdWU9ITAsKHQsYSk9PihzKCksYyhadCxaKHBlKGYpKSx7ZGVmYXVsdDpkKGk9Plt2KHQuJHNsb3RzLCJkZWZhdWx0IixaKHBlKGkpKSldKSxfOjN9LDE2KSl9fSksVGE9T2E7Y29uc3QgQWE9e3Nsb3RzOntiYXNlOlsicmVsYXRpdmUgZ3JvdXAgcm91bmRlZC1tZCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsZWFkaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgc3RhcnQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsbGVhZGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIixsZWFkaW5nQXZhdGFyOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhclNpemU6IiIsdHJhaWxpbmc6ImFic29sdXRlIGluc2V0LXktMCBlbmQtMCBmbGV4IGl0ZW1zLWNlbnRlciIsdHJhaWxpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsdmFsdWU6InRydW5jYXRlIHBvaW50ZXItZXZlbnRzLW5vbmUiLHBsYWNlaG9sZGVyOiJ0cnVuY2F0ZSB0ZXh0LWRpbW1lZCIsYXJyb3c6ImZpbGwtYmcgc3Ryb2tlLWRlZmF1bHQiLGNvbnRlbnQ6WyJtYXgtaC02MCB3LSgtLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgpIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgb3ZlcmZsb3ctaGlkZGVuIG9yaWdpbi0oLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIHBvaW50ZXItZXZlbnRzLWF1dG8gZmxleCBmbGV4LWNvbCIsIm9yaWdpbi0oLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgdy0oLS1yZWthLWNvbWJvYm94LXRyaWdnZXItd2lkdGgpIl0sdmlld3BvcnQ6InJlbGF0aXZlIHNjcm9sbC1weS0xIG92ZXJmbG93LXktYXV0byBmbGV4LTEiLGdyb3VwOiJwLTEgaXNvbGF0ZSIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLGxhYmVsOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLHNlcGFyYXRvcjoiLW14LTEgbXktMSBoLXB4IGJnLWJvcmRlciIsaXRlbTpbImdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IHRleHQtZGVmYXVsdCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOnRleHQtaGlnaGxpZ2h0ZWQgZGF0YS1oaWdobGlnaHRlZDpub3QtZGF0YS1kaXNhYmxlZDpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0ljb246WyJzaHJpbmstMCB0ZXh0LWRpbW1lZCBncm91cC1kYXRhLWhpZ2hsaWdodGVkOm5vdC1ncm91cC1kYXRhLWRpc2FibGVkOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdBdmF0YXI6InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhclNpemU6IiIsaXRlbUxlYWRpbmdDaGlwOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToiIixpdGVtVHJhaWxpbmc6Im1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgbWluLXctMCIsaXRlbUxhYmVsOiJ0cnVuY2F0ZSIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIixpbnB1dDoiYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQiLGZvY3VzU2NvcGU6ImZsZXggZmxleC1jb2wgbWluLWgtMCIsdHJhaWxpbmdDbGVhcjoicC0wIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQteHMgZ2FwLTEiLGxlYWRpbmc6InBzLTIiLHRyYWlsaW5nOiJwZS0yIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCIsbGFiZWw6InAtMSB0ZXh0LVsxMHB4XS8zIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMiB0ZXh0LXhzIn0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC14cyBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xLjUgdGV4dC1bMTBweF0vMyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTQiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6InNtIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGVtcHR5OiJwLTIuNSB0ZXh0LXhzIn0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbSBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01IixsYWJlbDoicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTIuNSB0ZXh0LXNtIn0sbGc6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LXNtIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTIgdGV4dC14cyBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTMgdGV4dC1zbSJ9LHhsOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6InhzIix0cmFpbGluZ0ljb246InNpemUtNiIsbGFiZWw6InAtMiB0ZXh0LXNtIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixpdGVtTGVhZGluZ0ljb246InNpemUtNiIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTYiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6ImxnIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTYiLGVtcHR5OiJwLTMgdGV4dC1iYXNlIn19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1kZWZhdWx0Iixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgZGlzYWJsZWQ6YmctZWxldmF0ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9LHBvc2l0aW9uOntwb3BwZXI6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSJ9LCJpdGVtLWFsaWduZWQiOntjb250ZW50OiIifX0sdmlydHVhbGl6ZTp7dHJ1ZTp7dmlld3BvcnQ6InAtMSBpc29sYXRlIn0sZmFsc2U6e3ZpZXdwb3J0OiJkaXZpZGUteSBkaXZpZGUtZGVmYXVsdCJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixwb3NpdGlvbjoicG9wcGVyIn19LCRhPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVVNlbGVjdE1lbnUiLHByb3BzOk5lKHtpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sc2VhcmNoSW5wdXQ6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNlbGVjdGVkSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGVhcjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExfSxjbGVhckljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSx2aXJ0dWFsaXplOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdmFsdWVLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9LGRlc2NyaXB0aW9uS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGVzY3JpcHRpb24ifSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY3JlYXRlSXRlbTp7dHlwZTpbQm9vbGVhbixTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMX0sZmlsdGVyRmllbGRzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxpZ25vcmVGaWx0ZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1c0RlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVzZXRTZWFyY2hUZXJtT25CbHVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0scmVzZXRTZWFyY2hUZXJtT25TZWxlY3Q6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxyZXNldE1vZGVsVmFsdWVPbkNsZWFyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0saGlnaGxpZ2h0T25Ib3Zlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHtzZWFyY2hUZXJtOnt0eXBlOlN0cmluZyxkZWZhdWx0OiIifSxzZWFyY2hUZXJtTW9kaWZpZXJzOnt9fSksZW1pdHM6TmUoWyJjaGFuZ2UiLCJibHVyIiwiZm9jdXMiLCJjcmVhdGUiLCJjbGVhciIsImhpZ2hsaWdodCIsInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm9wZW4iXSxbInVwZGF0ZTpzZWFyY2hUZXJtIl0pLHNldHVwKG4se2V4cG9zZTpmLGVtaXQ6cn0pe2NvbnN0IHQ9bixhPXIsaT1JdCgpLG09U3Qobiwic2VhcmNoVGVybSIse3R5cGU6U3RyaW5nLGRlZmF1bHQ6IiJ9KSx7dDp4fT16dCgpLGI9d3QoKSx1PUJ0KCJzZWxlY3RNZW51Iix0KSx7ZmlsdGVyR3JvdXBzOkl9PU50KCksVj1KZShrdCh0LCJtb2RlbFZhbHVlIiwiZGVmYXVsdFZhbHVlIiwib3BlbiIsImRlZmF1bHRPcGVuIiwicmVxdWlyZWQiLCJtdWx0aXBsZSIsInJlc2V0U2VhcmNoVGVybU9uQmx1ciIsInJlc2V0U2VhcmNoVGVybU9uU2VsZWN0IiwicmVzZXRNb2RlbFZhbHVlT25DbGVhciIsImhpZ2hsaWdodE9uSG92ZXIiLCJieSIpLGEpLFQ9THQoaigoKT0+dC5wb3J0YWwpKSxBPWooKCk9Pm5lKHQuY29udGVudCx7c2lkZToiYm90dG9tIixzaWRlT2Zmc2V0OjgsY29sbGlzaW9uUGFkZGluZzo4LHBvc2l0aW9uOiJwb3BwZXIifSkpLEM9aigoKT0+bmUodC5hcnJvdyx7cm91bmRlZDohMH0pKSxnPXcoKCk9PnR5cGVvZiB0LmNsZWFyPT0ib2JqZWN0Ij90LmNsZWFyOnt9KSxCPWooKCk9PnQudmlydHVhbGl6ZT9uZSh0eXBlb2YgdC52aXJ0dWFsaXplPT0iYm9vbGVhbiI/e306dC52aXJ0dWFsaXplLHtlc3RpbWF0ZVNpemU6UXQoYmUudmFsdWUsSC52YWx1ZXx8Im1kIix0LmRlc2NyaXB0aW9uS2V5LCEhaVsiaXRlbS1kZXNjcmlwdGlvbiJdKX0pOiExKSxGPWooKCk9Pm5lKHQuc2VhcmNoSW5wdXQse3BsYWNlaG9sZGVyOngoInNlbGVjdE1lbnUuc2VhcmNoIiksdmFyaWFudDoibm9uZSJ9KSkse2VtaXRGb3JtQmx1cjpSLGVtaXRGb3JtRm9jdXM6cWUsZW1pdEZvcm1JbnB1dDpjZSxlbWl0Rm9ybUNoYW5nZTpsZSxzaXplOmZlLGNvbG9yOmllLGlkOm1lLG5hbWU6Z2UsaGlnaGxpZ2h0OnJlLGRpc2FibGVkOm9lLGFyaWFBdHRyczpJZX09T3QodCkse29yaWVudGF0aW9uOmVlLHNpemU6dmV9PVR0KHQpLHtpc0xlYWRpbmc6Syxpc1RyYWlsaW5nOlMsbGVhZGluZ0ljb25OYW1lOiQsdHJhaWxpbmdJY29uTmFtZTpQfT1BdChqKCgpPT5uZSh0LHt0cmFpbGluZ0ljb246Yi51aS5pY29ucy5jaGV2cm9uRG93bn0pKSksSD13KCgpPT52ZS52YWx1ZXx8ZmUudmFsdWUpLFtzZSxOXT1EZSgpLFt0ZSxFZV09RGUoe3Byb3BzOntpdGVtOnt0eXBlOltPYmplY3QsU3RyaW5nLE51bWJlcixCb29sZWFuXSxyZXF1aXJlZDohMH0saW5kZXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfX19KSxwPXcoKCk9PmplKHtleHRlbmQ6amUoQWEpLC4uLmIudWk/LnNlbGVjdE1lbnV8fHt9fSkoe2NvbG9yOmllLnZhbHVlLHZhcmlhbnQ6dC52YXJpYW50LHNpemU6SD8udmFsdWUsbG9hZGluZzp0LmxvYWRpbmcsaGlnaGxpZ2h0OnJlLnZhbHVlLGxlYWRpbmc6Sy52YWx1ZXx8ISF0LmF2YXRhcnx8ISFpLmxlYWRpbmcsdHJhaWxpbmc6Uy52YWx1ZXx8ISFpLnRyYWlsaW5nLGZpZWxkR3JvdXA6ZWUudmFsdWUsdmlydHVhbGl6ZTohIXQudmlydHVhbGl6ZX0pKTtmdW5jdGlvbiBRZShvKXtpZih0Lm11bHRpcGxlJiZBcnJheS5pc0FycmF5KG8pKXtjb25zdCBfPW8ubWFwKGw9PkdlKEZlLnZhbHVlLGwse2xhYmVsS2V5OnQubGFiZWxLZXksdmFsdWVLZXk6dC52YWx1ZUtleSxieTp0LmJ5fSkpLmZpbHRlcihsPT5sIT1udWxsJiZsIT09IiIpO3JldHVybiBfLmxlbmd0aD4wP18uam9pbigiLCAiKTp2b2lkIDB9cmV0dXJuIEdlKEZlLnZhbHVlLG8se2xhYmVsS2V5OnQubGFiZWxLZXksdmFsdWVLZXk6dC52YWx1ZUtleSxieTp0LmJ5fSl9Y29uc3QgU2U9dygoKT0+dC5pdGVtcz8ubGVuZ3RoP1J0KHQuaXRlbXMpP3QuaXRlbXM6W3QuaXRlbXNdOltdKSxGZT13KCgpPT5TZS52YWx1ZS5mbGF0TWFwKG89Pm8pKSxWZT13KCgpPT57aWYodC5pZ25vcmVGaWx0ZXJ8fCFtLnZhbHVlKXJldHVybiBTZS52YWx1ZTtjb25zdCBvPUFycmF5LmlzQXJyYXkodC5maWx0ZXJGaWVsZHMpP3QuZmlsdGVyRmllbGRzOlt0LmxhYmVsS2V5XTtyZXR1cm4gSShTZS52YWx1ZSxtLnZhbHVlLHtmaWVsZHM6byxpc1N0cnVjdHVyYWw6Xz0+eihfKSYmISFfLnR5cGUmJlsibGFiZWwiLCJzZXBhcmF0b3IiXS5pbmNsdWRlcyhfLnR5cGUpfSl9KSxiZT13KCgpPT5WZS52YWx1ZS5mbGF0TWFwKG89Pm8pKSx5ZT13KCgpPT57aWYoIXQuY3JlYXRlSXRlbXx8IW0udmFsdWUpcmV0dXJuITE7Y29uc3Qgbz10LnZhbHVlS2V5P3tbdC52YWx1ZUtleV06bS52YWx1ZX06bS52YWx1ZTtyZXR1cm4gdHlwZW9mIHQuY3JlYXRlSXRlbT09Im9iamVjdCImJnQuY3JlYXRlSXRlbS53aGVuPT09ImFsd2F5cyJ8fHQuY3JlYXRlSXRlbT09PSJhbHdheXMiPyFiZS52YWx1ZS5maW5kKF89PlB0KF8sbyx0LmJ5Pz90LnZhbHVlS2V5KSk6IWJlLnZhbHVlLmxlbmd0aH0pLGhlPXcoKCk9PnR5cGVvZiB0LmNyZWF0ZUl0ZW09PSJvYmplY3QiP3QuY3JlYXRlSXRlbS5wb3NpdGlvbjoiYm90dG9tIiksemU9UmUoInRyaWdnZXJSZWYiKTtmdW5jdGlvbiBYZSgpe3QuYXV0b2ZvY3VzJiZ6ZS52YWx1ZT8uJGVsPy5mb2N1cyh7Zm9jdXNWaXNpYmxlOiEwfSl9USgoKT0+e3NldFRpbWVvdXQoKCk9PntYZSgpfSx0LmF1dG9mb2N1c0RlbGF5KX0pO2Z1bmN0aW9uIGV0KG8pe2lmKE10KHQubW9kZWxWYWx1ZSk9PT1vKXJldHVybjt0Lm1vZGVsTW9kaWZpZXJzPy50cmltJiYodHlwZW9mIG89PSJzdHJpbmcifHxvPT09bnVsbHx8bz09PXZvaWQgMCkmJihvPW8/LnRyaW0oKT8/bnVsbCksdC5tb2RlbE1vZGlmaWVycz8ubnVtYmVyJiYobz1EdChvKSksdC5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJihvPz89bnVsbCksdC5tb2RlbE1vZGlmaWVycz8ub3B0aW9uYWwmJiF0Lm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmbyE9PW51bGwmJihvPz89dm9pZCAwKTtjb25zdCBfPW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTpvfX0pO2EoImNoYW5nZSIsXyksbGUoKSxjZSgpLHQucmVzZXRTZWFyY2hUZXJtT25TZWxlY3QmJihtLnZhbHVlPSIiKX1mdW5jdGlvbiB0dChvKXtsZXQgXztpZihvKXtjb25zdCBsPW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO2EoImZvY3VzIixsKSxxZSgpLGNsZWFyVGltZW91dChfKX1lbHNle2NvbnN0IGw9bmV3IEZvY3VzRXZlbnQoImJsdXIiKTthKCJibHVyIixsKSxSKCksdC5yZXNldFNlYXJjaFRlcm1PbkJsdXImJihfPXNldFRpbWVvdXQoKCk9PnttLnZhbHVlPSIifSwxMDApKX19ZnVuY3Rpb24gYXQobyl7by5wcmV2ZW50RGVmYXVsdCgpLG8uc3RvcFByb3BhZ2F0aW9uKCksYSgiY3JlYXRlIixtLnZhbHVlKX1mdW5jdGlvbiBsdChvLF8pe2lmKHooXykpe2lmKF8uZGlzYWJsZWQpe28ucHJldmVudERlZmF1bHQoKTtyZXR1cm59Xy5vblNlbGVjdD8uKG8pfX1mdW5jdGlvbiB6KG8pe3JldHVybiB0eXBlb2Ygbz09Im9iamVjdCImJm8hPT1udWxsfWZ1bmN0aW9uIGl0KG8pe3JldHVybiB0Lm11bHRpcGxlJiZBcnJheS5pc0FycmF5KG8pP28ubGVuZ3RoPT09MDpvPT1udWxsfHxvPT09IiJ9ZnVuY3Rpb24gcnQoKXthKCJjbGVhciIpfWNvbnN0ICRlPVJlKCJ2aWV3cG9ydFJlZiIpO3JldHVybiBmKHt0cmlnZ2VyUmVmOmooKCk9PnplLnZhbHVlPy4kZWwpLHZpZXdwb3J0UmVmOmooKCk9PiRlLnZhbHVlKX0pLChvLF8pPT4ocygpLEUoWSxudWxsLFtoKGUoc2UpLG51bGwse2RlZmF1bHQ6ZCgoKT0+W2goZShVZSkseyJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczp5KHAudmFsdWUuaXRlbSh7Y2xhc3M6ZSh1KT8uaXRlbX0pKSx2YWx1ZTptLnZhbHVlLG9uU2VsZWN0OmF0fSx7ZGVmYXVsdDpkKCgpPT5bdWUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczp5KHAudmFsdWUuaXRlbUxhYmVsKHtjbGFzczplKHUpPy5pdGVtTGFiZWx9KSl9LFt2KG8uJHNsb3RzLCJjcmVhdGUtaXRlbS1sYWJlbCIse2l0ZW06bS52YWx1ZX0sKCk9PltKKFUoZSh4KSgic2VsZWN0TWVudS5jcmVhdGUiLHtsYWJlbDptLnZhbHVlfSkpLDEpXSldLDIpXSksXzozfSw4LFsiY2xhc3MiLCJ2YWx1ZSJdKV0pLF86M30pLGgoZSh0ZSksbnVsbCx7ZGVmYXVsdDpkKCh7aXRlbTpsLGluZGV4Ok19KT0+W3oobCkmJmwudHlwZT09PSJsYWJlbCI/KHMoKSxjKGUoSWEpLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWwiLGNsYXNzOnkocC52YWx1ZS5sYWJlbCh7Y2xhc3M6W2UodSk/LmxhYmVsLGwudWk/LmxhYmVsLGwuY2xhc3NdfSkpfSx7ZGVmYXVsdDpkKCgpPT5bSihVKGUoYWUpKGwsdC5sYWJlbEtleSkpLDEpXSksXzoyfSwxMDMyLFsiY2xhc3MiXSkpOnoobCkmJmwudHlwZT09PSJzZXBhcmF0b3IiPyhzKCksYyhlKEJhKSx7a2V5OjEsImRhdGEtc2xvdCI6InNlcGFyYXRvciIsY2xhc3M6eShwLnZhbHVlLnNlcGFyYXRvcih7Y2xhc3M6W2UodSk/LnNlcGFyYXRvcixsLnVpPy5zZXBhcmF0b3IsbC5jbGFzc119KSl9LG51bGwsOCxbImNsYXNzIl0pKToocygpLGMoZShVZSkse2tleToyLCJkYXRhLXNsb3QiOiJpdGVtIixjbGFzczp5KHAudmFsdWUuaXRlbSh7Y2xhc3M6W2UodSk/Lml0ZW0seihsKSYmbC51aT8uaXRlbSx6KGwpJiZsLmNsYXNzXX0pKSxkaXNhYmxlZDp6KGwpJiZsLmRpc2FibGVkLHZhbHVlOnQudmFsdWVLZXkmJnoobCk/ZShhZSkobCx0LnZhbHVlS2V5KTpsLG9uU2VsZWN0Oms9Pmx0KGssbCl9LHtkZWZhdWx0OmQoKCk9Plt2KG8uJHNsb3RzLCJpdGVtIix7aXRlbTpsLGluZGV4Ok0sdWk6cC52YWx1ZX0sKCk9Plt2KG8uJHNsb3RzLCJpdGVtLWxlYWRpbmciLHtpdGVtOmwsaW5kZXg6TSx1aTpwLnZhbHVlfSwoKT0+W3oobCkmJmwuaWNvbj8ocygpLGMoX2Use2tleTowLG5hbWU6bC5pY29uLCJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0ljb24iLGNsYXNzOnkocC52YWx1ZS5pdGVtTGVhZGluZ0ljb24oe2NsYXNzOltlKHUpPy5pdGVtTGVhZGluZ0ljb24sbC51aT8uaXRlbUxlYWRpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTp6KGwpJiZsLmF2YXRhcj8ocygpLGMoS2UscSh7a2V5OjEsc2l6ZTpsLnVpPy5pdGVtTGVhZGluZ0F2YXRhclNpemV8fGUodSk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sbC5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6W2UodSk/Lml0ZW1MZWFkaW5nQXZhdGFyLGwudWk/Lml0ZW1MZWFkaW5nQXZhdGFyXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6eihsKSYmbC5jaGlwPyhzKCksYyhFdCxxKHtrZXk6MixzaXplOmwudWk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fGUodSk/Lml0ZW1MZWFkaW5nQ2hpcFNpemV8fHAudmFsdWUuaXRlbUxlYWRpbmdDaGlwU2l6ZSgpLGluc2V0OiIiLHN0YW5kYWxvbmU6IiJ9LGwuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6cC52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltlKHUpPy5pdGVtTGVhZGluZ0NoaXAsbC51aT8uaXRlbUxlYWRpbmdDaGlwXX0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6TygiIiwhMCldKSx1ZSgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtV3JhcHBlciIsY2xhc3M6eShwLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZSh1KT8uaXRlbVdyYXBwZXIseihsKSYmbC51aT8uaXRlbVdyYXBwZXJdfSkpfSxbdWUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbUxhYmVsIixjbGFzczp5KHAudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZSh1KT8uaXRlbUxhYmVsLHoobCkmJmwudWk/Lml0ZW1MYWJlbF19KSl9LFt2KG8uJHNsb3RzLCJpdGVtLWxhYmVsIix7aXRlbTpsLGluZGV4Ok19LCgpPT5bSihVKHoobCk/ZShhZSkobCx0LmxhYmVsS2V5KTpsKSwxKV0pXSwyKSx6KGwpJiYoZShhZSkobCx0LmRlc2NyaXB0aW9uS2V5KXx8aVsiaXRlbS1kZXNjcmlwdGlvbiJdKT8ocygpLEUoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiaXRlbURlc2NyaXB0aW9uIixjbGFzczp5KHAudmFsdWUuaXRlbURlc2NyaXB0aW9uKHtjbGFzczpbZSh1KT8uaXRlbURlc2NyaXB0aW9uLHoobCkmJmwudWk/Lml0ZW1EZXNjcmlwdGlvbl19KSl9LFt2KG8uJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTpsLGluZGV4Ok19LCgpPT5bSihVKGUoYWUpKGwsdC5kZXNjcmlwdGlvbktleSkpLDEpXSldLDIpKTpPKCIiLCEwKV0sMiksdWUoInNwYW4iLHsiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nIixjbGFzczp5KHAudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZSh1KT8uaXRlbVRyYWlsaW5nLHoobCkmJmwudWk/Lml0ZW1UcmFpbGluZ119KSl9LFt2KG8uJHNsb3RzLCJpdGVtLXRyYWlsaW5nIix7aXRlbTpsLGluZGV4Ok0sdWk6cC52YWx1ZX0pLGgoZShDYSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0OmQoKCk9PltoKF9lLHtuYW1lOm4uc2VsZWN0ZWRJY29ufHxlKGIpLnVpLmljb25zLmNoZWNrLCJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmdJY29uIixjbGFzczp5KHAudmFsdWUuaXRlbVRyYWlsaW5nSWNvbih7Y2xhc3M6W2UodSk/Lml0ZW1UcmFpbGluZ0ljb24seihsKSYmbC51aT8uaXRlbVRyYWlsaW5nSWNvbl19KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldLDIpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyIsImRpc2FibGVkIiwidmFsdWUiLCJvblNlbGVjdCJdKSldKSxfOjN9KSxoKGUodGEpLHEoe2lkOmUobWUpfSx7Li4uZShWKSwuLi5vLiRhdHRycywuLi5lKEllKX0seyJpZ25vcmUtZmlsdGVyIjoiIiwiYXMtY2hpbGQiOiIiLG5hbWU6ZShnZSksZGlzYWJsZWQ6ZShvZSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmV0LCJvblVwZGF0ZTpvcGVuIjp0dH0pLHtkZWZhdWx0OmQoKHttb2RlbFZhbHVlOmwsb3BlbjpNfSk9PltoKGUobGEpLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpkKCgpPT5baChlKExhKSx7cmVmX2tleToidHJpZ2dlclJlZiIscmVmOnplLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczp5KHAudmFsdWUuYmFzZSh7Y2xhc3M6W2UodSk/LmJhc2UsdC5jbGFzc119KSksdGFiaW5kZXg6IjAifSx7ZGVmYXVsdDpkKCgpPT5bZShLKXx8bi5hdmF0YXJ8fGkubGVhZGluZz8ocygpLEUoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoibGVhZGluZyIsY2xhc3M6eShwLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmUodSk/LmxlYWRpbmd9KSl9LFt2KG8uJHNsb3RzLCJsZWFkaW5nIix7bW9kZWxWYWx1ZTpsLG9wZW46TSx1aTpwLnZhbHVlfSwoKT0+W2UoSykmJmUoJCk/KHMoKSxjKF9lLHtrZXk6MCxuYW1lOmUoJCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp5KHAudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUodSk/LmxlYWRpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOm4uYXZhdGFyPyhzKCksYyhLZSxxKHtrZXk6MSxzaXplOmUodSk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sbi5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6cC52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZSh1KT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOk8oIiIsITApXSldLDIpKTpPKCIiLCEwKSx2KG8uJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTpsLG9wZW46TSx1aTpwLnZhbHVlfSwoKT0+WyhzKCEwKSxFKFksbnVsbCx3ZShbUWUobCldLGs9PihzKCksRShZLHtrZXk6a30sW2shPW51bGw/KHMoKSxFKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6InZhbHVlIixjbGFzczp5KHAudmFsdWUudmFsdWUoe2NsYXNzOmUodSk/LnZhbHVlfSkpfSxVKGspLDMpKToocygpLEUoInNwYW4iLHtrZXk6MSwiZGF0YS1zbG90IjoicGxhY2Vob2xkZXIiLGNsYXNzOnkocC52YWx1ZS5wbGFjZWhvbGRlcih7Y2xhc3M6ZSh1KT8ucGxhY2Vob2xkZXJ9KSl9LFUobi5wbGFjZWhvbGRlcj8/IsKgIiksMykpXSw2NCkpKSwxMjgpKV0pLGUoUyl8fGkudHJhaWxpbmd8fG4uY2xlYXI/KHMoKSxFKCJzcGFuIix7a2V5OjEsImRhdGEtc2xvdCI6InRyYWlsaW5nIixjbGFzczp5KHAudmFsdWUudHJhaWxpbmcoe2NsYXNzOmUodSk/LnRyYWlsaW5nfSkpfSxbdihvLiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOmwsb3BlbjpNLHVpOnAudmFsdWV9LCgpPT5bbi5jbGVhciYmIWl0KGwpPyhzKCksYyhlKHBhKSx7a2V5OjAsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6ZCgoKT0+W2goRnQscSh7YXM6InNwYW4iLGljb246bi5jbGVhckljb258fGUoYikudWkuaWNvbnMuY2xvc2Usc2l6ZTpILnZhbHVlLHZhcmlhbnQ6ImxpbmsiLGNvbG9yOiJuZXV0cmFsIix0YWJpbmRleDoiLTEifSxnLnZhbHVlLHsiZGF0YS1zbG90IjoidHJhaWxpbmdDbGVhciIsY2xhc3M6cC52YWx1ZS50cmFpbGluZ0NsZWFyKHtjbGFzczplKHUpPy50cmFpbGluZ0NsZWFyfSksb25DbGljazpkZShydCxbInN0b3AiXSl9KSxudWxsLDE2LFsiaWNvbiIsInNpemUiLCJjbGFzcyJdKV0pLF86MX0pKTplKFApPyhzKCksYyhfZSx7a2V5OjEsbmFtZTplKFApLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOnkocC52YWx1ZS50cmFpbGluZ0ljb24oe2NsYXNzOmUodSk/LnRyYWlsaW5nSWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTpPKCIiLCEwKV0pXSwyKSk6TygiIiwhMCldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKV0pLF86Mn0sMTAyNCksaChlKHphKSxaKHBlKGUoVCkpKSx7ZGVmYXVsdDpkKCgpPT5baChlKFZ0KSxudWxsLHtkZWZhdWx0OmQoKCk9PltoKGUoZmEpLHEoeyJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpwLnZhbHVlLmNvbnRlbnQoe2NsYXNzOmUodSk/LmNvbnRlbnR9KX0sQS52YWx1ZSkse2RlZmF1bHQ6ZCgoKT0+W2goZShZZSkse3RyYXBwZWQ6IiIsImRhdGEtc2xvdCI6ImZvY3VzU2NvcGUiLGNsYXNzOnkocC52YWx1ZS5mb2N1c1Njb3BlKHtjbGFzczplKHUpPy5mb2N1c1Njb3BlfSkpfSx7ZGVmYXVsdDpkKCgpPT5bdihvLiRzbG90cywiY29udGVudC10b3AiKSxuLnNlYXJjaElucHV0PyhzKCksYyhlKGhhKSx7a2V5OjAsbW9kZWxWYWx1ZTptLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpfWzFdfHwoX1sxXT1rPT5tLnZhbHVlPWspLCJkaXNwbGF5LXZhbHVlIjooKT0+bS52YWx1ZSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpkKCgpPT5baCgkdCxxKHthdXRvZm9jdXM6IiIsYXV0b2NvbXBsZXRlOiJvZmYiLHNpemU6SC52YWx1ZX0sRi52YWx1ZSx7Im1vZGVsLW1vZGlmaWVycyI6e3RyaW06bi5tb2RlbE1vZGlmaWVycz8udHJpbX0sImRhdGEtc2xvdCI6ImlucHV0IixjbGFzczpwLnZhbHVlLmlucHV0KHtjbGFzczplKHUpPy5pbnB1dH0pLG9uQ2hhbmdlOl9bMF18fChfWzBdPWRlKCgpPT57fSxbInN0b3AiXSkpfSksbnVsbCwxNixbInNpemUiLCJtb2RlbC1tb2RpZmllcnMiLCJjbGFzcyJdKV0pLF86MX0sOCxbIm1vZGVsVmFsdWUiLCJkaXNwbGF5LXZhbHVlIl0pKTpPKCIiLCEwKSxoKGUoZ2EpLHsiZGF0YS1zbG90IjoiZW1wdHkiLGNsYXNzOnkocC52YWx1ZS5lbXB0eSh7Y2xhc3M6ZSh1KT8uZW1wdHl9KSl9LHtkZWZhdWx0OmQoKCk9Plt2KG8uJHNsb3RzLCJlbXB0eSIse3NlYXJjaFRlcm06bS52YWx1ZX0sKCk9PltKKFUobS52YWx1ZT9lKHgpKCJzZWxlY3RNZW51Lm5vTWF0Y2giLHtzZWFyY2hUZXJtOm0udmFsdWV9KTplKHgpKCJzZWxlY3RNZW51Lm5vRGF0YSIpKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSksdWUoImRpdiIse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6JGUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnkocC52YWx1ZS52aWV3cG9ydCh7Y2xhc3M6ZSh1KT8udmlld3BvcnR9KSl9LFtuLnZpcnR1YWxpemU/KHMoKSxFKFkse2tleTowfSxbeWUudmFsdWUmJmhlLnZhbHVlPT09InRvcCI/KHMoKSxjKGUoTikse2tleTowfSkpOk8oIiIsITApLGgoZShUYSkscSh7b3B0aW9uczpiZS52YWx1ZSwidGV4dC1jb250ZW50IjprPT56KGspP2UoYWUpKGssdC5sYWJlbEtleSk6U3RyaW5nKGspfSxCLnZhbHVlKSx7ZGVmYXVsdDpkKCh7b3B0aW9uOmssdmlydHVhbEl0ZW06eGV9KT0+W2goZShFZSkse2l0ZW06ayxpbmRleDp4ZS5pbmRleH0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pXSksXzoxfSwxNixbIm9wdGlvbnMiLCJ0ZXh0LWNvbnRlbnQiXSkseWUudmFsdWUmJmhlLnZhbHVlPT09ImJvdHRvbSI/KHMoKSxjKGUoTikse2tleToxfSkpOk8oIiIsITApXSw2NCkpOihzKCksRShZLHtrZXk6MX0sW3llLnZhbHVlJiZoZS52YWx1ZT09PSJ0b3AiPyhzKCksYyhlKEJlKSx7a2V5OjAsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczp5KHAudmFsdWUuZ3JvdXAoe2NsYXNzOmUodSk/Lmdyb3VwfSkpfSx7ZGVmYXVsdDpkKCgpPT5baChlKE4pKV0pLF86MX0sOCxbImNsYXNzIl0pKTpPKCIiLCEwKSwocyghMCksRShZLG51bGwsd2UoVmUudmFsdWUsKGsseGUpPT4ocygpLGMoZShCZSkse2tleTpgZ3JvdXAtJHt4ZX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6eShwLnZhbHVlLmdyb3VwKHtjbGFzczplKHUpPy5ncm91cH0pKX0se2RlZmF1bHQ6ZCgoKT0+WyhzKCEwKSxFKFksbnVsbCx3ZShrLChvdCxQZSk9PihzKCksYyhlKEVlKSx7a2V5OmBncm91cC0ke3hlfS0ke1BlfWAsaXRlbTpvdCxpbmRleDpQZX0sbnVsbCw4LFsiaXRlbSIsImluZGV4Il0pKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpLHllLnZhbHVlJiZoZS52YWx1ZT09PSJib3R0b20iPyhzKCksYyhlKEJlKSx7a2V5OjEsImRhdGEtc2xvdCI6Imdyb3VwIixjbGFzczp5KHAudmFsdWUuZ3JvdXAoe2NsYXNzOmUodSk/Lmdyb3VwfSkpfSx7ZGVmYXVsdDpkKCgpPT5baChlKE4pKV0pLF86MX0sOCxbImNsYXNzIl0pKTpPKCIiLCEwKV0sNjQpKV0sMiksdihvLiRzbG90cywiY29udGVudC1ib3R0b20iKV0pLF86M30sOCxbImNsYXNzIl0pLG4uYXJyb3c/KHMoKSxjKGUodWEpLHEoe2tleTowfSxDLnZhbHVlLHsiZGF0YS1zbG90IjoiYXJyb3ciLGNsYXNzOnAudmFsdWUuYXJyb3coe2NsYXNzOmUodSk/LmFycm93fSl9KSxudWxsLDE2LFsiY2xhc3MiXSkpOk8oIiIsITApXSksXzozfSwxNixbImNsYXNzIl0pXSksXzozfSldKSxfOjN9LDE2KV0pLF86M30sMTYsWyJpZCIsIm5hbWUiLCJkaXNhYmxlZCJdKV0sNjQpKX19KTtleHBvcnR7JGEgYXMgX307Cg==", "/_nuxt/ZJVk0olN.js": "aW1wb3J0e2FoIGFzIEMsYXggYXMgaixKIGFzIEIsSyBhcyBWLG8gYXMgcixoIGFzIHUsdyBhcyBJLEwgYXMgZCxJIGFzIE4sYWEgYXMgZixpIGFzIGUsayBhcyBQLE0gYXMgbyx2IGFzIGksYSBhcyBBLGMgYXMgZyxkIGFzIHAsdCBhcyBoLEYgYXMgdyxxIGFzIGssaiBhcyBtLFAgYXMgTCxsIGFzIE8sTiBhcyBxfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgRj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiB3LWZ1bGwgcm91bmRlZC1sZyBwLTQgZmxleCBnYXAtMi41Iix3cmFwcGVyOiJtaW4tdy0wIGZsZXgtMSBmbGV4IGZsZXgtY29sIix0aXRsZToidGV4dC1zbSBmb250LW1lZGl1bSIsZGVzY3JpcHRpb246InRleHQtc20gb3BhY2l0eS05MCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IixhdmF0YXI6InNocmluay0wIixhdmF0YXJTaXplOiIyeGwiLGFjdGlvbnM6ImZsZXggZmxleC13cmFwIGdhcC0xLjUgc2hyaW5rLTAiLGNsb3NlOiJwLTAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LHZhcmlhbnQ6e3NvbGlkOiIiLG91dGxpbmU6IiIsc29mdDoiIixzdWJ0bGU6IiJ9LG9yaWVudGF0aW9uOntob3Jpem9udGFsOntyb290OiJpdGVtcy1jZW50ZXIiLGFjdGlvbnM6Iml0ZW1zLWNlbnRlciJ9LHZlcnRpY2FsOntyb290OiJpdGVtcy1zdGFydCIsYWN0aW9uczoiaXRlbXMtc3RhcnQgbXQtMi41In19LHRpdGxlOnt0cnVlOntkZXNjcmlwdGlvbjoibXQtMSJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLXByaW1hcnkgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1zZWNvbmRhcnkgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InNvbGlkIixjbGFzczp7cm9vdDoiYmctc3VjY2VzcyB0ZXh0LWludmVydGVkIn19LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29saWQiLGNsYXNzOntyb290OiJiZy1pbmZvIHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLXdhcm5pbmcgdGV4dC1pbnZlcnRlZCJ9fSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6ImJnLWVycm9yIHRleHQtaW52ZXJ0ZWQifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvMjUifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOntyb290OiJ0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1zdWNjZXNzIHJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvMjUifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vMjUifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC13YXJuaW5nIHJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvMjUifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6e3Jvb3Q6InRleHQtZXJyb3IgcmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvMjUifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkifX0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOntyb290OiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkifX0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctc3VjY2Vzcy8xMCB0ZXh0LXN1Y2Nlc3MifX0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctaW5mby8xMCB0ZXh0LWluZm8ifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoiYmctd2FybmluZy8xMCB0ZXh0LXdhcm5pbmcifX0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsY2xhc3M6e3Jvb3Q6ImJnLWVycm9yLzEwIHRleHQtZXJyb3IifX0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1In19LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy1zZWNvbmRhcnkvMTAgdGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1In19LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic3VidGxlIixjbGFzczp7cm9vdDoiYmctc3VjY2Vzcy8xMCB0ZXh0LXN1Y2Nlc3MgcmluZyByaW5nLWluc2V0IHJpbmctc3VjY2Vzcy8yNSJ9fSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6ImJnLWluZm8vMTAgdGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vMjUifX0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOntyb290OiJiZy13YXJuaW5nLzEwIHRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1In19LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6ImJnLWVycm9yLzEwIHRleHQtZXJyb3IgcmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IvMjUifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6e3Jvb3Q6InRleHQtaW52ZXJ0ZWQgYmctaW52ZXJ0ZWQifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczp7cm9vdDoidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWRlZmF1bHQifX0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2Z0IixjbGFzczp7cm9vdDoidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZC81MCJ9fSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6e3Jvb3Q6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQvNTAgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQifX1dLGRlZmF1bHRWYXJpYW50czp7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InNvbGlkIn19LEQ9e19fbmFtZToiVUFsZXJ0Iixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZlcnRpY2FsIn0sYWN0aW9uczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cCh0LHtlbWl0Onp9KXtjb25zdCBuPXQsJD16LGw9QygpLHt0OlN9PWooKSx4PUIoKSxzPVYoImFsZXJ0IixuKSxhPU8oKCk9PnEoe2V4dGVuZDpxKEYpLC4uLngudWk/LmFsZXJ0fHx7fX0pKHtjb2xvcjpuLmNvbG9yLHZhcmlhbnQ6bi52YXJpYW50LG9yaWVudGF0aW9uOm4ub3JpZW50YXRpb24sdGl0bGU6ISFuLnRpdGxlfHwhIWwudGl0bGV9KSk7cmV0dXJuKGMsYik9PihyKCksdShlKEwpLHthczp0LmFzLCJkYXRhLW9yaWVudGF0aW9uIjp0Lm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpvKGEudmFsdWUucm9vdCh7Y2xhc3M6W2Uocyk/LnJvb3Qsbi5jbGFzc119KSl9LHtkZWZhdWx0OkkoKCk9PltkKGMuJHNsb3RzLCJsZWFkaW5nIix7dWk6YS52YWx1ZX0sKCk9Plt0LmF2YXRhcj8ocigpLHUoTixmKHtrZXk6MCxzaXplOmUocyk/LmF2YXRhclNpemV8fGEudmFsdWUuYXZhdGFyU2l6ZSgpfSx0LmF2YXRhcix7ImRhdGEtc2xvdCI6ImF2YXRhciIsY2xhc3M6YS52YWx1ZS5hdmF0YXIoe2NsYXNzOmUocyk/LmF2YXRhcn0pfSksbnVsbCwxNixbInNpemUiLCJjbGFzcyJdKSk6dC5pY29uPyhyKCksdShQLHtrZXk6MSxuYW1lOnQuaWNvbiwiZGF0YS1zbG90IjoiaWNvbiIsY2xhc3M6byhhLnZhbHVlLmljb24oe2NsYXNzOmUocyk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6aSgiIiwhMCldKSxBKCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6byhhLnZhbHVlLndyYXBwZXIoe2NsYXNzOmUocyk/LndyYXBwZXJ9KSl9LFt0LnRpdGxlfHxsLnRpdGxlPyhyKCksZygiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczpvKGEudmFsdWUudGl0bGUoe2NsYXNzOmUocyk/LnRpdGxlfSkpfSxbZChjLiRzbG90cywidGl0bGUiLHt9LCgpPT5bcChoKHQudGl0bGUpLDEpXSldLDIpKTppKCIiLCEwKSx0LmRlc2NyaXB0aW9ufHxsLmRlc2NyaXB0aW9uPyhyKCksZygiZGl2Iix7a2V5OjEsImRhdGEtc2xvdCI6ImRlc2NyaXB0aW9uIixjbGFzczpvKGEudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmUocyk/LmRlc2NyaXB0aW9ufSkpfSxbZChjLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bcChoKHQuZGVzY3JpcHRpb24pLDEpXSldLDIpKTppKCIiLCEwKSx0Lm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmKHQuYWN0aW9ucz8ubGVuZ3RofHxsLmFjdGlvbnMpPyhyKCksZygiZGl2Iix7a2V5OjIsImRhdGEtc2xvdCI6ImFjdGlvbnMiLGNsYXNzOm8oYS52YWx1ZS5hY3Rpb25zKHtjbGFzczplKHMpPy5hY3Rpb25zfSkpfSxbZChjLiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsocighMCksZyh3LG51bGwsayh0LmFjdGlvbnMsKHYseSk9PihyKCksdShtLGYoe2tleTp5LHNpemU6InhzIn0se3JlZl9mb3I6ITB9LHYpLG51bGwsMTYpKSksMTI4KSldKV0sMikpOmkoIiIsITApXSwyKSx0Lm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiJiYodC5hY3Rpb25zPy5sZW5ndGh8fGwuYWN0aW9ucyl8fHQuY2xvc2U/KHIoKSxnKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6byhhLnZhbHVlLmFjdGlvbnMoe2NsYXNzOmUocyk/LmFjdGlvbnMsb3JpZW50YXRpb246Imhvcml6b250YWwifSkpfSxbdC5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIiYmKHQuYWN0aW9ucz8ubGVuZ3RofHxsLmFjdGlvbnMpP2QoYy4kc2xvdHMsImFjdGlvbnMiLHtrZXk6MH0sKCk9PlsocighMCksZyh3LG51bGwsayh0LmFjdGlvbnMsKHYseSk9PihyKCksdShtLGYoe2tleTp5LHNpemU6InhzIn0se3JlZl9mb3I6ITB9LHYpLG51bGwsMTYpKSksMTI4KSldKTppKCIiLCEwKSxkKGMuJHNsb3RzLCJjbG9zZSIse3VpOmEudmFsdWV9LCgpPT5bdC5jbG9zZT8ocigpLHUobSxmKHtrZXk6MCxpY29uOnQuY2xvc2VJY29ufHxlKHgpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJsaW5rIiwiYXJpYS1sYWJlbCI6ZShTKSgiYWxlcnQuY2xvc2UiKX0sdHlwZW9mIHQuY2xvc2U9PSJvYmplY3QiP3QuY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6YS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZShzKT8uY2xvc2V9KSxvbkNsaWNrOmJbMF18fChiWzBdPXY9PiQoInVwZGF0ZTpvcGVuIiwhMSkpfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiXSkpOmkoIiIsITApXSldLDIpKTppKCIiLCEwKV0pLF86M30sOCxbImFzIiwiZGF0YS1vcmllbnRhdGlvbiIsImNsYXNzIl0pKX19O2V4cG9ydHtEIGFzIF99Owo=", "/_nuxt/ZZsfP9KZ.js": "aW1wb3J0e18gYXMgbyx1IGFzIHMsbyBhcyBhLGMgYXMgaSxhIGFzIHQsdCBhcyByfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgdT17Y2xhc3M6ImFudGlhbGlhc2VkIGJnLXdoaXRlIGRhcms6YmctWyMwMjA0MjBdIGRhcms6dGV4dC13aGl0ZSBmb250LXNhbnMgZ3JpZCBtaW4taC1zY3JlZW4gb3ZlcmZsb3ctaGlkZGVuIHBsYWNlLWNvbnRlbnQtY2VudGVyIHRleHQtWyMwMjA0MjBdIHRyYWNraW5nLXdpZGUifSxsPXtjbGFzczoibWF4LXctNTIwcHggdGV4dC1jZW50ZXIifSxjPVsidGV4dENvbnRlbnQiXSxkPVsidGV4dENvbnRlbnQiXSxwPVsidGV4dENvbnRlbnQiXSxmPXtfX25hbWU6ImVycm9yLTUwMCIscHJvcHM6e2FwcE5hbWU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Ik51eHQifSxzdGF0dXM6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NTAwfSxzdGF0dXNUZXh0Ont0eXBlOlN0cmluZyxkZWZhdWx0OiJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IifSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiVGhpcyBwYWdlIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlLiJ9LHJlZnJlc2g6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6IlJlZnJlc2ggdGhpcyBwYWdlIn19LHNldHVwKGUpe2NvbnN0IG49ZTtyZXR1cm4gcyh7dGl0bGU6YCR7bi5zdGF0dXN9IC0gJHtuLnN0YXR1c1RleHR9IHwgJHtuLmFwcE5hbWV9YCxzY3JpcHQ6W3tpbm5lckhUTUw6YCFmdW5jdGlvbigpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYoIShlJiZlLnN1cHBvcnRzJiZlLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpKXtmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpcihlKTtuZXcgTXV0YXRpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IG8gb2YgZSlpZigiY2hpbGRMaXN0Ij09PW8udHlwZSlmb3IoY29uc3QgZSBvZiBvLmFkZGVkTm9kZXMpIkxJTksiPT09ZS50YWdOYW1lJiYibW9kdWxlcHJlbG9hZCI9PT1lLnJlbCYmcihlKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSl9ZnVuY3Rpb24gcihlKXtpZihlLmVwKXJldHVybjtlLmVwPSEwO2NvbnN0IHI9ZnVuY3Rpb24oZSl7Y29uc3Qgcj17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJihyLmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKHIucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksInVzZS1jcmVkZW50aWFscyI9PT1lLmNyb3NzT3JpZ2luP3IuY3JlZGVudGlhbHM9ImluY2x1ZGUiOiJhbm9ueW1vdXMiPT09ZS5jcm9zc09yaWdpbj9yLmNyZWRlbnRpYWxzPSJvbWl0IjpyLmNyZWRlbnRpYWxzPSJzYW1lLW9yaWdpbiIscn0oZSk7ZmV0Y2goZS5ocmVmLHIpfX0oKTtgfV0sc3R5bGU6W3tpbm5lckhUTUw6JyosOmFmdGVyLDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLXVuLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCNlNWU3ZWIpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MDtib3gtc2l6aW5nOmJvcmRlci1ib3h9OmFmdGVyLDpiZWZvcmV7LS11bi1jb250ZW50OiIifWh0bWx7bGluZS1oZWlnaHQ6MS41Oy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sLE5vdG8gQ29sb3IgRW1vamk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7LW1vei10YWItc2l6ZTo0O3RhYi1zaXplOjQ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWJvZHl7bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46MH1oMSxoMntmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0fWgxLGgyLHB7bWFyZ2luOjB9Kiw6YWZ0ZXIsOmJlZm9yZXstLXVuLXJvdGF0ZTowOy0tdW4tcm90YXRlLXg6MDstLXVuLXJvdGF0ZS15OjA7LS11bi1yb3RhdGUtejowOy0tdW4tc2NhbGUteDoxOy0tdW4tc2NhbGUteToxOy0tdW4tc2NhbGUtejoxOy0tdW4tc2tldy14OjA7LS11bi1za2V3LXk6MDstLXVuLXRyYW5zbGF0ZS14OjA7LS11bi10cmFuc2xhdGUteTowOy0tdW4tdHJhbnNsYXRlLXo6MDstLXVuLXBhbi14OiA7LS11bi1wYW4teTogOy0tdW4tcGluY2gtem9vbTogOy0tdW4tc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczpwcm94aW1pdHk7LS11bi1vcmRpbmFsOiA7LS11bi1zbGFzaGVkLXplcm86IDstLXVuLW51bWVyaWMtZmlndXJlOiA7LS11bi1udW1lcmljLXNwYWNpbmc6IDstLXVuLW51bWVyaWMtZnJhY3Rpb246IDstLXVuLWJvcmRlci1zcGFjaW5nLXg6MDstLXVuLWJvcmRlci1zcGFjaW5nLXk6MDstLXVuLXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1zaGFkb3ctaW5zZXQ6IDstLXVuLXNoYWRvdzowIDAgdHJhbnNwYXJlbnQ7LS11bi1yaW5nLWluc2V0OiA7LS11bi1yaW5nLW9mZnNldC13aWR0aDowcHg7LS11bi1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdW4tcmluZy13aWR0aDowcHg7LS11bi1yaW5nLWNvbG9yOnJnYmEoMTQ3LDE5NywyNTMsLjUpOy0tdW4tYmx1cjogOy0tdW4tYnJpZ2h0bmVzczogOy0tdW4tY29udHJhc3Q6IDstLXVuLWRyb3Atc2hhZG93OiA7LS11bi1ncmF5c2NhbGU6IDstLXVuLWh1ZS1yb3RhdGU6IDstLXVuLWludmVydDogOy0tdW4tc2F0dXJhdGU6IDstLXVuLXNlcGlhOiA7LS11bi1iYWNrZHJvcC1ibHVyOiA7LS11bi1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS11bi1iYWNrZHJvcC1jb250cmFzdDogOy0tdW4tYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS11bi1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS11bi1iYWNrZHJvcC1pbnZlcnQ6IDstLXVuLWJhY2tkcm9wLW9wYWNpdHk6IDstLXVuLWJhY2tkcm9wLXNhdHVyYXRlOiA7LS11bi1iYWNrZHJvcC1zZXBpYTogfSd9XX0pLChoLG0pPT4oYSgpLGkoImRpdiIsdSxbdCgiZGl2IixsLFt0KCJoMSIse2NsYXNzOiJmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSBtYi00IHNtOnRleHQtWzExMHB4XSB0YWJ1bGFyLW51bXMgdGV4dC1bODBweF0iLHRleHRDb250ZW50OnIoZS5zdGF0dXMpfSxudWxsLDgsYyksdCgiaDIiLHtjbGFzczoiZm9udC1zZW1pYm9sZCBtYi0yIHNtOnRleHQtM3hsIHRleHQtMnhsIix0ZXh0Q29udGVudDpyKGUuc3RhdHVzVGV4dCl9LG51bGwsOCxkKSx0KCJwIix7Y2xhc3M6Im1iLTQgcHgtMiB0ZXh0LVsjNjQ3NDhCXSB0ZXh0LW1kIix0ZXh0Q29udGVudDpyKGUuZGVzY3JpcHRpb24pfSxudWxsLDgscCldKV0pKX19LGI9byhmLFtbIl9fc2NvcGVJZCIsImRhdGEtdi0yNDg0MzFkMiJdXSk7ZXhwb3J0e2IgYXMgZGVmYXVsdH07Cg==", "/_nuxt/_2lSdr13.js": "aW1wb3J0e2FoIGFzIEksSiBhcyBxLEsgYXMgdyxiciBhcyBBLGJzIGFzIFMsbyBhcyBpLGggYXMgdCx3IGFzIGssTCBhcyBjLGkgYXMgZSxrIGFzIHYsTSBhcyBsLEkgYXMgaCxhYSBhcyBCLHYgYXMgdSxjIGFzIEMsdCBhcyBOLFAgYXMgJCxsIGFzIEcsTiBhcyBwfWZyb20iLi9vOHRkX0cwSi5qcyI7Y29uc3QgUD17c2xvdHM6e2Jhc2U6ImZvbnQtbWVkaXVtIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsbGFiZWw6InRydW5jYXRlIixsZWFkaW5nSWNvbjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXI6InNocmluay0wIixsZWFkaW5nQXZhdGFyU2l6ZToiIix0cmFpbGluZ0ljb246InNocmluay0wIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sdmFyaWFudDp7c29saWQ6IiIsb3V0bGluZToiIixzb2Z0OiIiLHN1YnRsZToiIn0sc2l6ZTp7eHM6e2Jhc2U6InRleHQtWzhweF0vMyBweC0xIHB5LTAuNSBnYXAtMSByb3VuZGVkLXNtIixsZWFkaW5nSWNvbjoic2l6ZS0zIixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtMyJ9LHNtOntiYXNlOiJ0ZXh0LVsxMHB4XS8zIHB4LTEuNSBweS0xIGdhcC0xIHJvdW5kZWQtc20iLGxlYWRpbmdJY29uOiJzaXplLTMiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS0zIn0sbWQ6e2Jhc2U6InRleHQteHMgcHgtMiBweS0xIGdhcC0xIHJvdW5kZWQtbWQiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sbGc6e2Jhc2U6InRleHQtc20gcHgtMiBweS0xIGdhcC0xLjUgcm91bmRlZC1tZCIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSx4bDp7YmFzZToidGV4dC1iYXNlIHB4LTIuNSBweS0xIGdhcC0xLjUgcm91bmRlZC1tZCIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sc3F1YXJlOnt0cnVlOiIifX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXByaW1hcnkgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXNlY29uZGFyeSB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6ImJnLXN1Y2Nlc3MgdGV4dC1pbnZlcnRlZCJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1pbmZvIHRleHQtaW52ZXJ0ZWQifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixjbGFzczoiYmctd2FybmluZyB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29saWQiLGNsYXNzOiJiZy1lcnJvciB0ZXh0LWludmVydGVkIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC1wcmltYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkvNTAifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IHJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeS81MCJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzUwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoidGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vNTAifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgcmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJ0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzUwIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLXNlY29uZGFyeS8xMCB0ZXh0LXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoic29mdCIsY2xhc3M6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzb2Z0IixjbGFzczoiYmctaW5mby8xMCB0ZXh0LWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy13YXJuaW5nLzEwIHRleHQtd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIn0se2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLXNlY29uZGFyeS8xMCB0ZXh0LXNlY29uZGFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvMjUifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLXN1Y2Nlc3MvMTAgdGV4dC1zdWNjZXNzIHJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvMjUifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLWluZm8vMTAgdGV4dC1pbmZvIHJpbmcgcmluZy1pbnNldCByaW5nLWluZm8vMjUifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6ImJnLXdhcm5pbmcvMTAgdGV4dC13YXJuaW5nIHJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcvMjUifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJiZy1lcnJvci8xMCB0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1In0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCB0ZXh0LWRlZmF1bHQgYmctZGVmYXVsdCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic3VidGxlIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWVsZXZhdGVkIn0se3NpemU6InhzIixzcXVhcmU6ITAsY2xhc3M6InAtMC41In0se3NpemU6InNtIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9LHtzaXplOiJtZCIsc3F1YXJlOiEwLGNsYXNzOiJwLTEifSx7c2l6ZToibGciLHNxdWFyZTohMCxjbGFzczoicC0xIn0se3NpemU6InhsIixzcXVhcmU6ITAsY2xhc3M6InAtMSJ9XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsc2l6ZToibWQifX0sTD17X19uYW1lOiJVQmFkZ2UiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifSxsYWJlbDp7dHlwZTpbU3RyaW5nLE51bWJlcl0scmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzcXVhcmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChyKXtjb25zdCBhPXIsZj1JKCksYj1xKCksbj13KCJiYWRnZSIsYSkse29yaWVudGF0aW9uOnksc2l6ZTptfT1BKGEpLHtpc0xlYWRpbmc6eCxpc1RyYWlsaW5nOnosbGVhZGluZ0ljb25OYW1lOmcsdHJhaWxpbmdJY29uTmFtZTpkfT1TKGEpLHM9RygoKT0+cCh7ZXh0ZW5kOnAoUCksLi4uYi51aT8uYmFkZ2V8fHt9fSkoe2NvbG9yOmEuY29sb3IsdmFyaWFudDphLnZhcmlhbnQsc2l6ZTptLnZhbHVlfHxhLnNpemUsc3F1YXJlOmEuc3F1YXJlfHwhZi5kZWZhdWx0JiYhYS5sYWJlbCxmaWVsZEdyb3VwOnkudmFsdWV9KSk7cmV0dXJuKG8sVik9PihpKCksdChlKCQpLHthczpyLmFzLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpsKHMudmFsdWUuYmFzZSh7Y2xhc3M6W2Uobik/LmJhc2UsYS5jbGFzc119KSl9LHtkZWZhdWx0OmsoKCk9PltjKG8uJHNsb3RzLCJsZWFkaW5nIix7dWk6cy52YWx1ZX0sKCk9PltlKHgpJiZlKGcpPyhpKCksdCh2LHtrZXk6MCxuYW1lOmUoZyksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczpsKHMudmFsdWUubGVhZGluZ0ljb24oe2NsYXNzOmUobik/LmxlYWRpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnIuYXZhdGFyPyhpKCksdChoLEIoe2tleToxLHNpemU6ZShuKT8ubGVhZGluZ0F2YXRhclNpemV8fHMudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sci5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpzLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmUobik/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOnUoIiIsITApXSksYyhvLiRzbG90cywiZGVmYXVsdCIse3VpOnMudmFsdWV9LCgpPT5bci5sYWJlbCE9PXZvaWQgMCYmci5sYWJlbCE9PW51bGw/KGkoKSxDKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczpsKHMudmFsdWUubGFiZWwoe2NsYXNzOmUobik/LmxhYmVsfSkpfSxOKHIubGFiZWwpLDMpKTp1KCIiLCEwKV0pLGMoby4kc2xvdHMsInRyYWlsaW5nIix7dWk6cy52YWx1ZX0sKCk9PltlKHopJiZlKGQpPyhpKCksdCh2LHtrZXk6MCxuYW1lOmUoZCksImRhdGEtc2xvdCI6InRyYWlsaW5nSWNvbiIsY2xhc3M6bChzLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZShuKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOnUoIiIsITApXSldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19O2V4cG9ydHtMIGFzIF99Owo=", "/_nuxt/builds/latest.json": "eyJpZCI6ImUyMzk3NGFhLWY4OGQtNGE0Mi05NzU5LTFmMWFlNzg4NGVmOCIsInRpbWVzdGFtcCI6MTc4MDMwNjY1MDYyNX0=", "/_nuxt/builds/meta/e23974aa-f88d-4a42-9759-1f1ae7884ef8.json": "eyJpZCI6ImUyMzk3NGFhLWY4OGQtNGE0Mi05NzU5LTFmMWFlNzg4NGVmOCIsInRpbWVzdGFtcCI6MTc4MDMwNjY1MDYyNSwicHJlcmVuZGVyZWQiOltdfQ==", "/_nuxt/cdK_A6Nm.js": "aW1wb3J0e2YgYXMgWSx4IGFzIFosZyBhcyBlZSxwIGFzIEMseiBhcyB0ZSx1IGFzIHNlLEMgYXMgYWUsbyBhcyByLGggYXMgeix3IGFzIGwsaSBhcyBzLGMgYXMgZCx0IGFzIG0sdiBhcyB3LGEgYXMgYyxGIGFzIEkscSBhcyBOLGIgYXMgYSxqIGFzIG9lLEQgYXMgcmUsRSBhcyBsZSxHIGFzIGssSCBhcyBkZSxkIGFzIE0sSSBhcyBuZSxCIGFzIGllLHIgYXMgdixsIGFzIHF9ZnJvbSIuL284dGRfRzBKLmpzIjtpbXBvcnR7XyBhcyBjZX1mcm9tIi4vXzJsU2RyMTMuanMiO2ltcG9ydHtfIGFzIHVlfWZyb20iLi9DR1hnU01aaC5qcyI7aW1wb3J0e18gYXMgbWV9ZnJvbSIuL0MxT1FpeVVELmpzIjtpbXBvcnR7dSBhcyBfZX1mcm9tIi4vRFlabGcwLTUuanMiO2ltcG9ydHt1IGFzIHBlfWZyb20iLi9DZl9mdzFFOS5qcyI7aW1wb3J0e18gYXMgZmV9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnQiLi9DdGExNXNHLS5qcyI7aW1wb3J0Ii4vQ2M2emloLVIuanMiO2ltcG9ydCIuL2docVliSVNULmpzIjtpbXBvcnQiLi9CaFdTMThpNy5qcyI7Y29uc3QgdmU9e2tleTowLGNsYXNzOiJtYXgtdy0zeGwgbXgtYXV0byBwLTQgc3BhY2UteS02In0sYmU9e2tleTowLGNsYXNzOiJ0ZXh0LW11dGVkIn0seWU9e2NsYXNzOiJmb250LXNlbWlib2xkIG1iLTMifSxnZT17a2V5OjAsY2xhc3M6InRleHQtc20gdGV4dC1tdXRlZCBtYi0zIn0saGU9e2tleToxLGNsYXNzOiJzcGFjZS15LTIgbWItMyJ9LHhlPXtjbGFzczoidGV4dC1zbSBmb250LW1lZGl1bSJ9LHdlPXtjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSxrZT17Y2xhc3M6InRleHQteHMgdGV4dC1tdXRlZCJ9LE1lPXtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1lbmQgZ2FwLTIifSxQZT17Y2xhc3M6ImZvbnQtc2VtaWJvbGQgbWItMyJ9LFVlPXtrZXk6MCxjbGFzczoidGV4dC1zbSB0ZXh0LW11dGVkIG1iLTMifSxWZT17a2V5OjEsY2xhc3M6InNwYWNlLXktMiBtYi0zIn0samU9e2NsYXNzOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiJ9LENlPXtjbGFzczoidGV4dC1zbSJ9LCRlPXtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1lbmQgZ2FwLTIifSxBZT17a2V5OjEsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGgtNDggdGV4dC1tdXRlZCJ9LFFlPVkoe19fbmFtZToiW2lkXSIsc2V0dXAoQmUpe2NvbnN0IEQ9WigpLGI9cGUoKSxGPWllKCksUj1fZSgpLHU9ZWUoKSxmPUQucGFyYW1zLmlkLHtkYXRhOm8sZXJyb3I6SCxyZWZyZXNoOmh9PUMoYHByb2plY3QtJHtmfWAsKCk9PmIuZmV0Y2hQcm9qZWN0KGYpKTt0ZShIKSxzZSgoKT0+KHt0aXRsZTpvLnZhbHVlPy5uYW1lPz8iUHJvamVjdCJ9KSk7Y29uc3R7ZGF0YTpPfT1DKCJvcmctbWVtYmVycy1mb3ItcHJvamVjdCIsKCk9PkYuZmV0Y2hNZW1iZXJzKHtsaW1pdDoxMDB9KSx7ZGVmYXVsdDooKT0+KHtpdGVtczpbXSxoYXNNb3JlOiExfSl9KSx7ZGF0YTokfT1DKCJwcm9kdWN0cy1mb3ItcHJvamVjdCIsKCk9PlIuZmV0Y2hQcm9kdWN0cygiYWN0aXZlIikse2RlZmF1bHQ6KCk9PltdfSksXz12KCIiKSx5PXYoMSksUD12KCExKSxwPXYoIiIpLGc9digibWVtYmVyIiksVT12KCExKSxBPXEoKCk9Pntjb25zdCBuPW5ldyBTZXQoby52YWx1ZT8ucHJvZHVjdHMubWFwKHQ9PnQucHJvZHVjdF9pZCk/P1tdKTtyZXR1cm4oJC52YWx1ZT8/W10pLmZpbHRlcih0PT4hbi5oYXModC5pZCkpfSksQj1xKCgpPT57Y29uc3Qgbj1uZXcgU2V0KG8udmFsdWU/Lm1lbWJlcnMubWFwKHQ9PnQudXNlcl9pZCk/P1tdKTtyZXR1cm4oTy52YWx1ZT8uaXRlbXM/P1tdKS5maWx0ZXIodD0+IW4uaGFzKHQuaWQpKX0pO2FzeW5jIGZ1bmN0aW9uIFEoKXtpZihfLnZhbHVlKXtQLnZhbHVlPSEwO3RyeXthd2FpdCBiLmFkZFByb2R1Y3QoZix7cHJvZHVjdF9pZDpfLnZhbHVlLHF1YW50aXR5OnkudmFsdWV9KSxhd2FpdCBoKCksXy52YWx1ZT0iIix5LnZhbHVlPTEsdS5hZGQoe3RpdGxlOiJQcm9kdWN0IGFkZGVkIixjb2xvcjoic3VjY2VzcyJ9KX1jYXRjaChuKXtjb25zdCB0PW47dS5hZGQoe3RpdGxlOiJFcnJvciIsZGVzY3JpcHRpb246dD8uZGF0YT8uc3RhdHVzTWVzc2FnZT8/IlVua25vd24gZXJyb3IiLGNvbG9yOiJlcnJvciJ9KX1maW5hbGx5e1AudmFsdWU9ITF9fX1hc3luYyBmdW5jdGlvbiBUKG4pe3RyeXthd2FpdCBiLnJlbW92ZVByb2R1Y3QoZixuKSxhd2FpdCBoKCksdS5hZGQoe3RpdGxlOiJQcm9kdWN0IHJlbW92ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKHQpe2NvbnN0IGk9dDt1LmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjppPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1hc3luYyBmdW5jdGlvbiBHKCl7aWYocC52YWx1ZSl7VS52YWx1ZT0hMDt0cnl7YXdhaXQgYi5hZGRNZW1iZXIoZix7dXNlcl9pZDpwLnZhbHVlLHJvbGU6Zy52YWx1ZX0pLGF3YWl0IGgoKSxwLnZhbHVlPSIiLGcudmFsdWU9Im1lbWJlciIsdS5hZGQoe3RpdGxlOiJNZW1iZXIgYWRkZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKG4pe2NvbnN0IHQ9bjt1LmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjp0Py5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfWZpbmFsbHl7VS52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIEwobil7dHJ5e2F3YWl0IGIucmVtb3ZlTWVtYmVyKGYsbiksYXdhaXQgaCgpLHUuYWRkKHt0aXRsZToiTWVtYmVyIHJlbW92ZWQiLGNvbG9yOiJzdWNjZXNzIn0pfWNhdGNoKHQpe2NvbnN0IGk9dDt1LmFkZCh7dGl0bGU6IkVycm9yIixkZXNjcmlwdGlvbjppPy5kYXRhPy5zdGF0dXNNZXNzYWdlPz8iVW5rbm93biBlcnJvciIsY29sb3I6ImVycm9yIn0pfX1yZXR1cm4obix0KT0+e2NvbnN0IGk9b2UsRT1jZSxWPWxlLHg9cmUsSj1kZSxTPWFlKCJDYW4iKSxLPW5lLFc9dWUsWD1tZTtyZXR1cm4gcigpLHooWCx7aWQ6InByb2plY3QtZGV0YWlsIn0se2hlYWRlcjpsKCgpPT5bYShmZSx7dGl0bGU6cyhvKT8ubmFtZT8/IlByb2plY3QifSx7bGVhZGluZzpsKCgpPT5bYShpLHtpY29uOiJpLWx1Y2lkZS1hcnJvdy1sZWZ0Iixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLHRvOiIvcHJvamVjdHMifSldKSxyaWdodDpsKCgpPT5bcyhvKT8ocigpLHooRSx7a2V5OjAsY29sb3I6cyhvKS5zdGF0dXM9PT0iYWN0aXZlIj8ic3VjY2VzcyI6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSJ9LHtkZWZhdWx0OmwoKCk9PltNKG0ocyhvKS5zdGF0dXMpLDEpXSksXzoxfSw4LFsiY29sb3IiXSkpOncoIiIsITApXSksXzoxfSw4LFsidGl0bGUiXSldKSxib2R5OmwoKCk9PltzKG8pPyhyKCksZCgiZGl2Iix2ZSxbcyhvKS5kZXNjcmlwdGlvbj8ocigpLGQoInAiLGJlLG0ocyhvKS5kZXNjcmlwdGlvbiksMSkpOncoIiIsITApLGMoImRpdiIsbnVsbCxbYygiaDIiLHllLCIgUHJvZHVjdHMgKCIrbShzKG8pLnByb2R1Y3RzLmxlbmd0aCkrIikgIiwxKSxzKG8pLnByb2R1Y3RzLmxlbmd0aD09PTA/KHIoKSxkKCJkaXYiLGdlLCIgTm8gcHJvZHVjdHMgbGlua2VkLiAiKSk6KHIoKSxkKCJkaXYiLGhlLFsocighMCksZChJLG51bGwsTihzKG8pLnByb2R1Y3RzLGU9PihyKCksZCgiZGl2Iix7a2V5OmUucHJvZHVjdF9pZCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyBiZy1lbGV2YXRlZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGVmYXVsdCJ9LFtjKCJzcGFuIix4ZSxtKHMoJCk/LmZpbmQoaj0+ai5pZD09PWUucHJvZHVjdF9pZCk/Lm5hbWU/P2UucHJvZHVjdF9pZCksMSksYygiZGl2Iix3ZSxbYygic3BhbiIsa2UsInF0eTogIittKGUucXVhbnRpdHkpLDEpLGEoaSx7aWNvbjoiaS1sdWNpZGUteCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsb25DbGljazpqPT5UKGUucHJvZHVjdF9pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSldKV0pKSksMTI4KSldKSksYShTLHtJOiJ3cml0ZSIsYToicHJvamVjdCJ9LHtkZWZhdWx0OmwoKCk9PltzKEEpLmxlbmd0aD4wPyhyKCksZCgiZGl2IixNZSxbYSh4LHtsYWJlbDoiQWRkIHByb2R1Y3QiLGNsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpsKCgpPT5bYShWLHttb2RlbFZhbHVlOnMoXyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMF18fCh0WzBdPWU9PmsoXyk/Xy52YWx1ZT1lOm51bGwpLGl0ZW1zOnMoQSkubWFwKGU9Pih7bGFiZWw6ZS5uYW1lLHZhbHVlOmUuaWR9KSkscGxhY2Vob2xkZXI6IlNlbGVjdCBhIHByb2R1Y3QiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIiwiaXRlbXMiXSldKSxfOjF9KSxhKHgse2xhYmVsOiJRdHkiLGNsYXNzOiJ3LTIwIn0se2RlZmF1bHQ6bCgoKT0+W2EoSix7bW9kZWxWYWx1ZTpzKHkpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzFdfHwodFsxXT1lPT5rKHkpP3kudmFsdWU9ZTpudWxsKSxtb2RlbE1vZGlmaWVyczp7bnVtYmVyOiEwfSx0eXBlOiJudW1iZXIiLG1pbjoiMSJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhKGkse2xvYWRpbmc6cyhQKSxkaXNhYmxlZDohcyhfKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOlF9LHtkZWZhdWx0OmwoKCk9PlsuLi50WzRdfHwodFs0XT1bTSgiIEFkZCAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSkpOncoIiIsITApXSksXzoxfSldKSxjKCJkaXYiLG51bGwsW2MoImgyIixQZSwiIE1lbWJlcnMgKCIrbShzKG8pLm1lbWJlcnMubGVuZ3RoKSsiKSAiLDEpLHMobykubWVtYmVycy5sZW5ndGg9PT0wPyhyKCksZCgiZGl2IixVZSwiIE5vIG1lbWJlcnMuICIpKToocigpLGQoImRpdiIsVmUsWyhyKCEwKSxkKEksbnVsbCxOKHMobykubWVtYmVycyxlPT4ocigpLGQoImRpdiIse2tleTplLnVzZXJfaWQsY2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTMgYmctZWxldmF0ZWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWRlZmF1bHQifSxbYygiZGl2IixqZSxbYShLLHtzcmM6ZS5hdmF0YXI/P3ZvaWQgMCxhbHQ6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnVzZXJfaWQsc2l6ZToieHMifSxudWxsLDgsWyJzcmMiLCJhbHQiXSksYygic3BhbiIsQ2UsbShlLm5hbWU/P2UudXNlcm5hbWU/P2UudXNlcl9pZCksMSksYShFLHt2YXJpYW50OiJzdWJ0bGUiLHNpemU6InhzIn0se2RlZmF1bHQ6bCgoKT0+W00obShlLnJvbGUpLDEpXSksXzoyfSwxMDI0KV0pLGEoaSx7aWNvbjoiaS1sdWNpZGUteCIsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixzaXplOiJ4cyIsb25DbGljazpqPT5MKGUudXNlcl9pZCl9LG51bGwsOCxbIm9uQ2xpY2siXSldKSkpLDEyOCkpXSkpLGEoUyx7SToid3JpdGUiLGE6InByb2plY3QifSx7ZGVmYXVsdDpsKCgpPT5bcyhCKS5sZW5ndGg+MD8ocigpLGQoImRpdiIsJGUsW2EoeCx7bGFiZWw6IkFkZCBtZW1iZXIiLGNsYXNzOiJmbGV4LTEifSx7ZGVmYXVsdDpsKCgpPT5bYShWLHttb2RlbFZhbHVlOnMocCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMl18fCh0WzJdPWU9PmsocCk/cC52YWx1ZT1lOm51bGwpLGl0ZW1zOnMoQikubWFwKGU9Pih7bGFiZWw6ZS5uYW1lPz9lLnVzZXJuYW1lPz9lLnByaW1hcnlfZW1haWwsdmFsdWU6ZS5pZH0pKSxwbGFjZWhvbGRlcjoiU2VsZWN0IGEgbWVtYmVyIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSksYSh4LHtsYWJlbDoiUm9sZSJ9LHtkZWZhdWx0OmwoKCk9PlthKFYse21vZGVsVmFsdWU6cyhnKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFszXXx8KHRbM109ZT0+ayhnKT9nLnZhbHVlPWU6bnVsbCksaXRlbXM6W3tsYWJlbDoiT3duZXIiLHZhbHVlOiJvd25lciJ9LHtsYWJlbDoiTWVtYmVyIix2YWx1ZToibWVtYmVyIn0se2xhYmVsOiJWaWV3ZXIiLHZhbHVlOiJ2aWV3ZXIifV19LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxhKGkse2xvYWRpbmc6cyhVKSxkaXNhYmxlZDohcyhwKSxpY29uOiJpLWx1Y2lkZS1wbHVzIixvbkNsaWNrOkd9LHtkZWZhdWx0OmwoKCk9PlsuLi50WzVdfHwodFs1XT1bTSgiIEFkZCAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSkpOncoIiIsITApXSksXzoxfSldKV0pKToocigpLGQoImRpdiIsQWUsW2EoVyx7Y2xhc3M6ImgtNDggdy1mdWxsIG1heC13LTN4bCJ9KV0pKV0pLF86MX0pfX19KTtleHBvcnR7UWUgYXMgZGVmYXVsdH07Cg==", "/_nuxt/d_0NwQLU.js": "aW1wb3J0e2YgYXMgcyxvIGFzIGwsaCBhcyB1LHcgYXMgcCxMIGFzIGQsYWEgYXMgZixpIGFzIHYsUCBhcyBoLGwgYXMgbyxhdiBhcyBtLGF3IGFzIFN9ZnJvbSIuL284dGRfRzBKLmpzIjt2YXIgeT1zKHtfX25hbWU6IkJhc2VTZXBhcmF0b3IiLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGRlY29yYXRpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgZT10LHI9WyJob3Jpem9udGFsIiwidmVydGljYWwiXTtmdW5jdGlvbiBpKGEpe3JldHVybiByLmluY2x1ZGVzKGEpfWNvbnN0IG49bygoKT0+aShlLm9yaWVudGF0aW9uKT9lLm9yaWVudGF0aW9uOiJob3Jpem9udGFsIiksYz1vKCgpPT5uLnZhbHVlPT09InZlcnRpY2FsIj9lLm9yaWVudGF0aW9uOnZvaWQgMCksXz1vKCgpPT5lLmRlY29yYXRpdmU/e3JvbGU6Im5vbmUifTp7ImFyaWEtb3JpZW50YXRpb24iOmMudmFsdWUscm9sZToic2VwYXJhdG9yIn0pO3JldHVybihhLGcpPT4obCgpLHUodihoKSxmKHthczphLmFzLCJhcy1jaGlsZCI6YS5hc0NoaWxkLCJkYXRhLW9yaWVudGF0aW9uIjpuLnZhbHVlfSxfLnZhbHVlKSx7ZGVmYXVsdDpwKCgpPT5bZChhLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiLCJkYXRhLW9yaWVudGF0aW9uIl0pKX19KSxCPXkscT1zKHtfX25hbWU6IlNlcGFyYXRvciIscHJvcHM6e29yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJob3Jpem9udGFsIn0sZGVjb3JhdGl2ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtjb25zdCBlPXQ7cmV0dXJuKHIsaSk9PihsKCksdShCLG0oUyhlKSkse2RlZmF1bHQ6cCgoKT0+W2Qoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx6PXE7ZXhwb3J0e3ogYXMgU307Cg==", "/_nuxt/entry.zdT31EY5.css": "QGxheWVyIHByb3BlcnRpZXN7QHN1cHBvcnRzICgoLXdlYmtpdC1oeXBoZW5zOm5vbmUpIGFuZCAobm90IChtYXJnaW4tdHJpbTppbmxpbmUpKSkgb3IgKCgtbW96LW9yaWVudDppbmxpbmUpIGFuZCAobm90IChjb2xvcjpyZ2IoZnJvbSByZWQgciBnIGIpKSkpeyosOjpiYWNrZHJvcCw6YWZ0ZXIsOmJlZm9yZXstLXR3LWJvcmRlci1zcGFjaW5nLXg6MDstLXR3LWJvcmRlci1zcGFjaW5nLXk6MDstLXR3LXRyYW5zbGF0ZS14OjA7LS10dy10cmFuc2xhdGUteTowOy0tdHctdHJhbnNsYXRlLXo6MDstLXR3LXNjYWxlLXg6MTstLXR3LXNjYWxlLXk6MTstLXR3LXNjYWxlLXo6MTstLXR3LXJvdGF0ZS14OmluaXRpYWw7LS10dy1yb3RhdGUteTppbml0aWFsOy0tdHctcm90YXRlLXo6aW5pdGlhbDstLXR3LXNrZXcteDppbml0aWFsOy0tdHctc2tldy15OmluaXRpYWw7LS10dy1zcGFjZS15LXJldmVyc2U6MDstLXR3LXNwYWNlLXgtcmV2ZXJzZTowOy0tdHctZGl2aWRlLXktcmV2ZXJzZTowOy0tdHctYm9yZGVyLXN0eWxlOnNvbGlkOy0tdHctZ3JhZGllbnQtcG9zaXRpb246aW5pdGlhbDstLXR3LWdyYWRpZW50LWZyb206IzAwMDA7LS10dy1ncmFkaWVudC12aWE6IzAwMDA7LS10dy1ncmFkaWVudC10bzojMDAwMDstLXR3LWdyYWRpZW50LXN0b3BzOmluaXRpYWw7LS10dy1ncmFkaWVudC12aWEtc3RvcHM6aW5pdGlhbDstLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb246MCU7LS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246NTAlOy0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb246MTAwJTstLXR3LWZvbnQtd2VpZ2h0OmluaXRpYWw7LS10dy10cmFja2luZzppbml0aWFsOy0tdHctb3JkaW5hbDppbml0aWFsOy0tdHctc2xhc2hlZC16ZXJvOmluaXRpYWw7LS10dy1udW1lcmljLWZpZ3VyZTppbml0aWFsOy0tdHctbnVtZXJpYy1zcGFjaW5nOmluaXRpYWw7LS10dy1udW1lcmljLWZyYWN0aW9uOmluaXRpYWw7LS10dy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1zaGFkb3ctYWxwaGE6MTAwJTstLXR3LWluc2V0LXNoYWRvdzowIDAgIzAwMDA7LS10dy1pbnNldC1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LWluc2V0LXNoYWRvdy1hbHBoYToxMDAlOy0tdHctcmluZy1jb2xvcjppbml0aWFsOy0tdHctcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctaW5zZXQtcmluZy1jb2xvcjppbml0aWFsOy0tdHctaW5zZXQtcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctcmluZy1pbnNldDppbml0aWFsOy0tdHctcmluZy1vZmZzZXQtd2lkdGg6MHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6I2ZmZjstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgIzAwMDA7LS10dy1vdXRsaW5lLXN0eWxlOnNvbGlkOy0tdHctYmx1cjppbml0aWFsOy0tdHctYnJpZ2h0bmVzczppbml0aWFsOy0tdHctY29udHJhc3Q6aW5pdGlhbDstLXR3LWdyYXlzY2FsZTppbml0aWFsOy0tdHctaHVlLXJvdGF0ZTppbml0aWFsOy0tdHctaW52ZXJ0OmluaXRpYWw7LS10dy1vcGFjaXR5OmluaXRpYWw7LS10dy1zYXR1cmF0ZTppbml0aWFsOy0tdHctc2VwaWE6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93OmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctZHJvcC1zaGFkb3ctYWxwaGE6MTAwJTstLXR3LWRyb3Atc2hhZG93LXNpemU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWJsdXI6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWJyaWdodG5lc3M6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWNvbnRyYXN0OmluaXRpYWw7LS10dy1iYWNrZHJvcC1ncmF5c2NhbGU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWludmVydDppbml0aWFsOy0tdHctYmFja2Ryb3Atb3BhY2l0eTppbml0aWFsOy0tdHctYmFja2Ryb3Atc2F0dXJhdGU6aW5pdGlhbDstLXR3LWJhY2tkcm9wLXNlcGlhOmluaXRpYWw7LS10dy1kdXJhdGlvbjppbml0aWFsOy0tdHctZWFzZTppbml0aWFsOy0tdHctY29udGVudDoiIjstLXR3LWRpdmlkZS14LXJldmVyc2U6MDstLXR3LWxlYWRpbmc6aW5pdGlhbH19fUBsYXllciB0aGVtZXs6aG9zdCw6cm9vdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7LS1mb250LW1vbm86dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcywiTGliZXJhdGlvbiBNb25vIiwiQ291cmllciBOZXciLG1vbm9zcGFjZTstLWNvbG9yLXdoaXRlOiNmZmY7LS1zcGFjaW5nOi4yNXJlbTstLWNvbnRhaW5lci14czoyMHJlbTstLWNvbnRhaW5lci1zbToyNHJlbTstLWNvbnRhaW5lci1tZDoyOHJlbTstLWNvbnRhaW5lci1sZzozMnJlbTstLWNvbnRhaW5lci0yeGw6NDJyZW07LS1jb250YWluZXItM3hsOjQ4cmVtOy0tY29udGFpbmVyLTR4bDo1NnJlbTstLXRleHQteHM6Ljc1cmVtOy0tdGV4dC14cy0tbGluZS1oZWlnaHQ6MS4zMzMzMzstLXRleHQtc206Ljg3NXJlbTstLXRleHQtc20tLWxpbmUtaGVpZ2h0OjEuNDI4NTc7LS10ZXh0LWJhc2U6MXJlbTstLXRleHQtYmFzZS0tbGluZS1oZWlnaHQ6MS41Oy0tdGV4dC1sZzoxLjEyNXJlbTstLXRleHQtbGctLWxpbmUtaGVpZ2h0OjEuNTU1NTY7LS10ZXh0LXhsOjEuMjVyZW07LS10ZXh0LXhsLS1saW5lLWhlaWdodDoxLjQ7LS10ZXh0LTJ4bDoxLjVyZW07LS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQ6MS4zMzMzMzstLXRleHQtM3hsOjEuODc1cmVtOy0tdGV4dC0zeGwtLWxpbmUtaGVpZ2h0OjEuMjstLXRleHQtNHhsOjIuMjVyZW07LS10ZXh0LTR4bC0tbGluZS1oZWlnaHQ6MS4xMTExMTstLXRleHQtNXhsOjNyZW07LS10ZXh0LTV4bC0tbGluZS1oZWlnaHQ6MTstLXRleHQtN3hsOjQuNXJlbTstLXRleHQtN3hsLS1saW5lLWhlaWdodDoxOy0tZm9udC13ZWlnaHQtbm9ybWFsOjQwMDstLWZvbnQtd2VpZ2h0LW1lZGl1bTo1MDA7LS1mb250LXdlaWdodC1zZW1pYm9sZDo2MDA7LS1mb250LXdlaWdodC1ib2xkOjcwMDstLXRyYWNraW5nLXRpZ2h0Oi0uMDI1ZW07LS10cmFja2luZy13aWRlOi4wMjVlbTstLWVhc2Utb3V0OmN1YmljLWJlemllcigwLDAsLjIsMSk7LS1hbmltYXRlLXNwaW46c3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7LS1hbmltYXRlLXB1bHNlOnB1bHNlIDJzIGN1YmljLWJlemllciguNCwwLC42LDEpIGluZmluaXRlOy0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7LS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpOy0tZGVmYXVsdC1mb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpOy0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyk7LS1jb2xvci1vbGQtbmV1dHJhbC01MDpva2xjaCg5OC41JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtMTAwOm9rbGNoKDk3JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtMjAwOm9rbGNoKDkyLjIlIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC0zMDA6b2tsY2goODclIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC00MDA6b2tsY2goNzAuOCUgMCAwKTstLWNvbG9yLW9sZC1uZXV0cmFsLTUwMDpva2xjaCg1NS42JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtNjAwOm9rbGNoKDQzLjklIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC03MDA6b2tsY2goMzcuMSUgMCAwKTstLWNvbG9yLW9sZC1uZXV0cmFsLTgwMDpva2xjaCgyNi45JSAwIDApOy0tY29sb3Itb2xkLW5ldXRyYWwtOTAwOm9rbGNoKDIwLjUlIDAgMCk7LS1jb2xvci1vbGQtbmV1dHJhbC05NTA6b2tsY2goMTQuNSUgMCAwKX06aG9zdCw6cm9vdHstLXVpLWhlYWRlci1oZWlnaHQ6NHJlbTstLXVpLXJhZGl1czouMjVyZW07LS11aS1jb250YWluZXI6ODByZW19LmxpZ2h0LDpob3N0LDpyb290ey0tdWktdGV4dC1kaW1tZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC00MDApOy0tdWktdGV4dC1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTUwMCk7LS11aS10ZXh0LXRvbmVkOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtNjAwKTstLXVpLXRleHQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC03MDApOy0tdWktdGV4dC1oaWdobGlnaHRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS10ZXh0LWludmVydGVkOiNmZmY7LS11aS1iZzojZmZmOy0tdWktYmctbXV0ZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC01MCk7LS11aS1iZy1lbGV2YXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTEwMCk7LS11aS1iZy1hY2NlbnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTIwMCk7LS11aS1iZy1pbnZlcnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS1ib3JkZXI6dmFyKC0tdWktY29sb3ItbmV1dHJhbC0yMDApOy0tdWktYm9yZGVyLW11dGVkOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtMjAwKTstLXVpLWJvcmRlci1hY2NlbnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTMwMCk7LS11aS1ib3JkZXItaW52ZXJ0ZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC05MDApfS5kYXJrey0tdWktdGV4dC1kaW1tZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC01MDApOy0tdWktdGV4dC1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTQwMCk7LS11aS10ZXh0LXRvbmVkOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtMzAwKTstLXVpLXRleHQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC0yMDApOy0tdWktdGV4dC1oaWdobGlnaHRlZDojZmZmOy0tdWktdGV4dC1pbnZlcnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS1iZzp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTkwMCk7LS11aS1iZy1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTgwMCk7LS11aS1iZy1lbGV2YXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTgwMCk7LS11aS1iZy1hY2NlbnRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTcwMCk7LS11aS1iZy1pbnZlcnRlZDojZmZmOy0tdWktYm9yZGVyOnZhcigtLXVpLWNvbG9yLW5ldXRyYWwtODAwKTstLXVpLWJvcmRlci1tdXRlZDp2YXIoLS11aS1jb2xvci1uZXV0cmFsLTcwMCk7LS11aS1ib3JkZXItYWNjZW50ZWQ6dmFyKC0tdWktY29sb3ItbmV1dHJhbC03MDApOy0tdWktYm9yZGVyLWludmVydGVkOiNmZmZ9fUBsYXllciBiYXNleyosOjpiYWNrZHJvcCw6YWZ0ZXIsOmJlZm9yZXtib3JkZXI6MCBzb2xpZDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Ym9yZGVyOjAgc29saWQ7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH06aG9zdCxodG1sey13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtZm9udC1mYW1pbHksdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1mb250LWZlYXR1cmUtc2V0dGluZ3Msbm9ybWFsKTtmb250LXZhcmlhdGlvbi1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCk7bGluZS1oZWlnaHQ6MS41Oy1tb3otdGFiLXNpemU6NDstby10YWItc2l6ZTo0O3RhYi1zaXplOjQ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWhye2JvcmRlci10b3Atd2lkdGg6MXB4O2NvbG9yOmluaGVyaXQ7aGVpZ2h0OjB9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseSx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLCJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW07Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCl9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItY29sb3I6aW5oZXJpdDt0ZXh0LWluZGVudDowfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1tZW51LG9sLHVse2xpc3Qtc3R5bGU6bm9uZX1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3toZWlnaHQ6YXV0bzttYXgtd2lkdGg6MTAwJX1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2JhY2tncm91bmQtY29sb3I6IzAwMDA7Ym9yZGVyLXJhZGl1czowO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtvcGFjaXR5OjF9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7b3BhY2l0eToxfTp3aGVyZShzZWxlY3Q6aXMoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cHtmb250LXdlaWdodDpib2xkZXJ9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3VwIG9wdGlvbntwYWRkaW5nLWlubGluZS1zdGFydDoyMHB4fTo6ZmlsZS1zZWxlY3Rvci1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6NHB4fTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjF9OjpwbGFjZWhvbGRlcntvcGFjaXR5OjF9QHN1cHBvcnRzIChub3QgKC13ZWJraXQtYXBwZWFyYW5jZTotYXBwbGUtcGF5LWJ1dHRvbikpIG9yIChjb250YWluLWludHJpbnNpYy1zaXplOjFweCl7OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn06OnBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpezo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsY3VycmVudGNvbG9yIDUwJSx0cmFuc3BhcmVudCl9OjpwbGFjZWhvbGRlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsY3VycmVudGNvbG9yIDUwJSx0cmFuc3BhcmVudCl9fX10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVle21pbi1oZWlnaHQ6MWxoO3RleHQtYWxpZ246aW5oZXJpdH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdHtkaXNwbGF5OmlubGluZS1mbGV4fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVye3BhZGRpbmc6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWludXRlLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcntsaW5lLWhlaWdodDoxfTotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfWJ1dHRvbixpbnB1dDp3aGVyZShbdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uOy1tb3otYXBwZWFyYW5jZTpidXR0b247YXBwZWFyYW5jZTpidXR0b259OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uOy1tb3otYXBwZWFyYW5jZTpidXR0b247YXBwZWFyYW5jZTpidXR0b259Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49dW50aWwtZm91bmRdKSl7ZGlzcGxheTpub25lIWltcG9ydGFudH1ib2R5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpO2NvbG9yOnZhcigtLXVpLXRleHQpOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlO2NvbG9yLXNjaGVtZTpsaWdodH1ib2R5OndoZXJlKC5kYXJrLC5kYXJrICope2NvbG9yLXNjaGVtZTpkYXJrfX1AbGF5ZXIgY29tcG9uZW50cztAbGF5ZXIgdXRpbGl0aWVzey5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0uY29sbGFwc2V7dmlzaWJpbGl0eTpjb2xsYXBzZX0udmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9LnNyLW9ubHl7Ym9yZGVyLXdpZHRoOjA7Y2xpcC1wYXRoOmluc2V0KDUwJSk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxcHh9LmFic29sdXRlLC5zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LnN0aWNreXtwb3NpdGlvbjpzdGlja3l9Lmluc2V0LTB7aW5zZXQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uaW5zZXQteC0we2luc2V0LWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5pbnNldC14LTF7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMSl9Lmluc2V0LXgtNHtpbnNldC1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uaW5zZXQteS0we2luc2V0LWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMCl9Lmluc2V0LXktMXtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5pbnNldC15LTFcLjV7aW5zZXQtYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5pbnNldC15LTJ7aW5zZXQtYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0uaW5zZXQteS0ze2luc2V0LWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMyl9Lmluc2V0LXktNHtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS4tc3RhcnQtcHh7aW5zZXQtaW5saW5lLXN0YXJ0Oi0xcHh9LnN0YXJ0e2luc2V0LWlubGluZS1zdGFydDp2YXIoLS1zcGFjaW5nKX0uc3RhcnQtMHtpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uc3RhcnQtNHtpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uc3RhcnQtMzJ7aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMzIpfS5zdGFydC1cW2NhbGNcKC0tc3BhY2luZ1woNFwpLTFweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCAtIDFweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMTZweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMTZweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMjBweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMjBweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMjhweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMjhweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMzJweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMzJweCl9LnN0YXJ0LVxbY2FsY1woNTBcJVwrMzZweFwpXF17aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGMoNTAlICsgMzZweCl9LnN0YXJ0LVxbY2FsY1woNTBcJS0xcHhcKVxde2luc2V0LWlubGluZS1zdGFydDpjYWxjKDUwJSAtIDFweCl9Li1lbmQtMVwuNXtpbnNldC1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmVuZHtpbnNldC1pbmxpbmUtZW5kOnZhcigtLXNwYWNpbmcpfS5lbmQtMHtpbnNldC1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmVuZC00e2luc2V0LWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uZW5kLVxbY2FsY1woLTUwXCVcKzE2cHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygxNnB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzIwcHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygyMHB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzI4cHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygyOHB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzMycHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygzMnB4IC0gNTAlKX0uZW5kLVxbY2FsY1woLTUwXCVcKzM2cHhcKVxde2luc2V0LWlubGluZS1lbmQ6Y2FsYygzNnB4IC0gNTAlKX0uLXRvcC0xXC41e3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpKi0xLjUpfS4tdG9wLTh7dG9wOmNhbGModmFyKC0tc3BhY2luZykqLTgpfS50b3AtMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTR7dG9wOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnRvcC1cWzMwcHhcXXt0b3A6MzBweH0udG9wLVxbMzhweFxde3RvcDozOHB4fS50b3AtXFs0NnB4XF17dG9wOjQ2cHh9LnRvcC1cWzUwXCVcXXt0b3A6NTAlfS50b3AtXFs1NHB4XF17dG9wOjU0cHh9LnRvcC1cWzYycHhcXXt0b3A6NjJweH0udG9wLVxbODZcJVxde3RvcDo4NiV9LnRvcC1cW2NhbGNcKDUwXCUtMnB4XClcXXt0b3A6Y2FsYyg1MCUgLSAycHgpfS50b3AtZnVsbHt0b3A6MTAwJX0ucmlnaHQtMHtyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5yaWdodC0xXC8ye3JpZ2h0OjUwJX0ucmlnaHQtNHtyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS4tYm90dG9tLTd7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLTcpfS4tYm90dG9tLVxbMTBweFxde2JvdHRvbTotMTBweH0uLWJvdHRvbS1weHtib3R0b206LTFweH0uYm90dG9tLTB7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmJvdHRvbS00e2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5sZWZ0LVwoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0XCl7bGVmdDp2YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1sZWZ0KX0ubGVmdC0we2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGVmdC0xXC8ye2xlZnQ6NTAlfS5sZWZ0LTR7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5sZWZ0LTZcLjV7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjYuNSl9LmxlZnQtMTF7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0uaXNvbGF0ZXtpc29sYXRpb246aXNvbGF0ZX0uei1cKC0taW5kZXhcKXt6LWluZGV4OnZhcigtLWluZGV4KX0uei0xe3otaW5kZXg6MX0uei0ye3otaW5kZXg6Mn0uei0xMHt6LWluZGV4OjEwfS56LTIwe3otaW5kZXg6MjB9LnotNTB7ei1pbmRleDo1MH0uei1cWzFcXXt6LWluZGV4OjF9LnotXFsxMDBcXXt6LWluZGV4OjEwMH0ub3JkZXItZmlyc3R7b3JkZXI6LTk5OTl9Lm9yZGVyLWxhc3R7b3JkZXI6OTk5OX0uY29sLXN0YXJ0LTF7Z3JpZC1jb2x1bW4tc3RhcnQ6MX0ucm93LXN0YXJ0LTF7Z3JpZC1yb3ctc3RhcnQ6MX0uY29udGFpbmVye3dpZHRoOjEwMCV9QG1lZGlhKG1pbi13aWR0aDo0MHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NDByZW19fUBtZWRpYShtaW4td2lkdGg6NDhyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjQ4cmVtfX1AbWVkaWEobWluLXdpZHRoOjY0cmVtKXsuY29udGFpbmVye21heC13aWR0aDo2NHJlbX19QG1lZGlhKG1pbi13aWR0aDo4MHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6ODByZW19fUBtZWRpYShtaW4td2lkdGg6OTZyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjk2cmVtfX0ubS0wXC41e21hcmdpbjpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uLW14LTF7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi0xKX0uLW14LTJ7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi0yKX0uLW14LTR7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi00KX0ubXgtM3ttYXJnaW4taW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMyl9Lm14LWF1dG97bWFyZ2luLWlubGluZTphdXRvfS5teS0xe21hcmdpbi1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5teS0ye21hcmdpbi1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS4tbXMtMVwuNXttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9Li1tcy00e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNCl9Li1tcy1cWzhcLjVweFxde21hcmdpbi1pbmxpbmUtc3RhcnQ6LTguNXB4fS4tbXMtcHh7bWFyZ2luLWlubGluZS1zdGFydDotMXB4fS5tcy0xe21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ubXMtMnttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMil9Lm1zLTR7bWFyZ2luLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5tcy00XC41e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpfS5tcy01e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0ubXMtNVwuNXttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNS41KX0ubXMtNnttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNil9Lm1zLWF1dG97bWFyZ2luLWlubGluZS1zdGFydDphdXRvfS4tbWUtMFwuNXttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKi0uNSl9Li1tZS0xe21hcmdpbi1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLTEpfS4tbWUtMVwuNXttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKi0xLjUpfS4tbWUtMnttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKi0yKX0ubWUtMVwuNXttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9Lm1lLTJ7bWFyZ2luLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0uLW10LTBcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKi0uNSl9Li1tdC00e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNCl9Li1tdC04e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSotOCl9Lm10LTBcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ubXQtMXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqMSl9Lm10LTFcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9Lm10LTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5tdC0yXC41e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5tdC0ze21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ubXQtM1wuNXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqMy41KX0ubXQtNHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqNCl9Lm10LTV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpfS5tdC02e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubXQtOHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqOCl9Lm10LTEwe21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9Lm10LTE2e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxNil9Lm10LTI0e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyNCl9Lm10LWF1dG97bWFyZ2luLXRvcDphdXRvfS5cIW1yLTR7bWFyZ2luLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCkhaW1wb3J0YW50fS4tbWItcHh7bWFyZ2luLWJvdHRvbTotMXB4fS5tYi0xe21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ubWItMVwuNXttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ubWItMnttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqMil9Lm1iLTJcLjV7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9Lm1iLTN7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5tYi00e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ubWItNnttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNil9Lm1iLTEwe21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9Lm1iLTI0e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSoyNCl9Lm1iLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvfS5cIW1sLTR7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KSFpbXBvcnRhbnR9Lm1sLTF7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uYmxvY2t7ZGlzcGxheTpibG9ja30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0udGFibGV7ZGlzcGxheTp0YWJsZX0uYXNwZWN0LVxbMTZcLzlcXXthc3BlY3QtcmF0aW86MTYvOX0uYXNwZWN0LXNxdWFyZXthc3BlY3QtcmF0aW86MX0uc2l6ZS0ye2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMil9LnNpemUtMlwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0uc2l6ZS0ze2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMyl9LnNpemUtM1wuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMy41KX0uc2l6ZS00e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnNpemUtNFwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNC41KX0uc2l6ZS01e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnNpemUtNntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5zaXplLTd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNyk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo3KX0uc2l6ZS04e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnNpemUtOXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjkpfS5zaXplLTEwe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKX0uc2l6ZS0xMFwvMTJ7aGVpZ2h0OjgzLjMzMzMlO3dpZHRoOjgzLjMzMzMlfS5zaXplLTExe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0uc2l6ZS0xMntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMik7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LnNpemUtMTR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTQpO3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTQpfS5zaXplLWZ1bGx7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uXCFoLTFcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMS41KSFpbXBvcnRhbnR9LlwhaC0xMntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMikhaW1wb3J0YW50fS5oLVwoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1oZWlnaHRcKXtoZWlnaHQ6dmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtaGVpZ2h0KX0uaC1cKC0tcmVrYS10YWJzLWluZGljYXRvci1zaXplXCl7aGVpZ2h0OnZhcigtLXJla2EtdGFicy1pbmRpY2F0b3Itc2l6ZSl9LmgtXCgtLXVpLWhlYWRlci1oZWlnaHRcKXtoZWlnaHQ6dmFyKC0tdWktaGVhZGVyLWhlaWdodCl9LmgtMFwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LmgtMXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uaC0ye2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5oLTJcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMi41KX0uaC0ze2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5oLTR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LmgtNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0uaC02e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5oLTh7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqOCl9LmgtMTJ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTIpfS5oLTE2e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjE2KX0uaC0yMHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyMCl9LmgtMzh7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMzgpfS5oLTQwe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQwKX0uaC00MntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0Mil9LmgtNDR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNDQpfS5oLTQ2e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjQ2KX0uaC00OHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0OCl9LmgtXFs0cHhcXXtoZWlnaHQ6NHB4fS5oLVxbNXB4XF17aGVpZ2h0OjVweH0uaC1cWzZweFxde2hlaWdodDo2cHh9LmgtXFs3cHhcXXtoZWlnaHQ6N3B4fS5oLVxbOHB4XF17aGVpZ2h0OjhweH0uaC1cWzlweFxde2hlaWdodDo5cHh9LmgtXFsxMHB4XF17aGVpZ2h0OjEwcHh9LmgtXFsxMXB4XF17aGVpZ2h0OjExcHh9LmgtXFsxMnB4XF17aGVpZ2h0OjEycHh9LmgtXFtjYWxjXCgxMDB2aC04cmVtXClcXXtoZWlnaHQ6Y2FsYygxMDB2aCAtIDhyZW0pfS5oLVxbY2FsY1woMTAwdmgtMTRyZW1cKVxde2hlaWdodDpjYWxjKDEwMHZoIC0gMTRyZW0pfS5oLVxbZml0LWNvbnRlbnRcXXtoZWlnaHQ6LW1vei1maXQtY29udGVudDtoZWlnaHQ6Zml0LWNvbnRlbnR9LmgtYXV0b3toZWlnaHQ6YXV0b30uaC1maXR7aGVpZ2h0Oi1tb3otZml0LWNvbnRlbnQ7aGVpZ2h0OmZpdC1jb250ZW50fS5oLWZ1bGx7aGVpZ2h0OjEwMCV9LmgtcHh7aGVpZ2h0OjFweH0uaC1zdmh7aGVpZ2h0OjEwMHN2aH0ubWF4LWgtNjB7bWF4LWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjYwKX0ubWF4LWgtOTZ7bWF4LWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjk2KX0ubWF4LWgtXFs3MHZoXF17bWF4LWhlaWdodDo3MHZofS5tYXgtaC1cWzgwdmhcXXttYXgtaGVpZ2h0Ojgwdmh9Lm1heC1oLVxbOTZcJVxde21heC1oZWlnaHQ6OTYlfS5tYXgtaC1cWzIwMHB4XF17bWF4LWhlaWdodDoyMDBweH0ubWF4LWgtXFtjYWxjXCgxMDBcJS0ycmVtXClcXXttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDJyZW0pfS5tYXgtaC1cW2NhbGNcKDEwMGR2aC0ycmVtXClcXXttYXgtaGVpZ2h0OmNhbGMoMTAwZHZoIC0gMnJlbSl9Lm1heC1oLWZ1bGx7bWF4LWhlaWdodDoxMDAlfS5taW4taC1cKC0tdWktaGVhZGVyLWhlaWdodFwpe21pbi1oZWlnaHQ6dmFyKC0tdWktaGVhZGVyLWhlaWdodCl9Lm1pbi1oLTB7bWluLWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5taW4taC02e21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubWluLWgtOHttaW4taGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqOCl9Lm1pbi1oLTEye21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9Lm1pbi1oLTQ4e21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0OCl9Lm1pbi1oLVxbNDlweFxde21pbi1oZWlnaHQ6NDlweH0ubWluLWgtXFtjYWxjXCgxMDB2aC12YXJcKC0tdWktaGVhZGVyLWhlaWdodFwpXClcXXttaW4taGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS11aS1oZWFkZXItaGVpZ2h0KSl9Lm1pbi1oLWZpdHttaW4taGVpZ2h0Oi1tb3otZml0LWNvbnRlbnQ7bWluLWhlaWdodDpmaXQtY29udGVudH0ubWluLWgtc2NyZWVue21pbi1oZWlnaHQ6MTAwdmh9Lm1pbi1oLXN2aHttaW4taGVpZ2h0OjEwMHN2aH0uXCF3LTFcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpIWltcG9ydGFudH0uXCF3LTEye3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTIpIWltcG9ydGFudH0udy1cKC0tcmVrYS1jb21ib2JveC10cmlnZ2VyLXdpZHRoXCl7d2lkdGg6dmFyKC0tcmVrYS1jb21ib2JveC10cmlnZ2VyLXdpZHRoKX0udy1cKC0tcmVrYS1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGhcKXt3aWR0aDp2YXIoLS1yZWthLWRyb3Bkb3duLW1lbnUtdHJpZ2dlci13aWR0aCl9LnctXCgtLXJla2EtbmF2aWdhdGlvbi1tZW51LWluZGljYXRvci1zaXplXCl7d2lkdGg6dmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXNpemUpfS53LVwoLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoXCl7d2lkdGg6dmFyKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aCl9LnctXCgtLXJla2EtdGFicy1pbmRpY2F0b3Itc2l6ZVwpe3dpZHRoOnZhcigtLXJla2EtdGFicy1pbmRpY2F0b3Itc2l6ZSl9LnctXCgtLXNpZGViYXItd2lkdGhcKXt3aWR0aDp2YXIoLS1zaWRlYmFyLXdpZHRoKX0udy1cKC0td2lkdGhcKXt3aWR0aDp2YXIoLS13aWR0aCl9LnctMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS53LTBcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LnctMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS53LTJ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0udy0ze3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMyl9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS53LTV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0udy03e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNyl9LnctOHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS53LTl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KX0udy0xMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEwKX0udy0xMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0udy0yMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjIwKX0udy0zMnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjMyKX0udy0zOHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjM4KX0udy00MHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQwKX0udy00Mnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQyKX0udy00NHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQ0KX0udy00Nnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQ2KX0udy01Nnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjU2KX0udy02MHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjYwKX0udy1cWzZweFxde3dpZHRoOjZweH0udy1cWzdweFxde3dpZHRoOjdweH0udy1cWzhweFxde3dpZHRoOjhweH0udy1cWzlweFxde3dpZHRoOjlweH0udy1cWzEwcHhcXXt3aWR0aDoxMHB4fS53LVxbY2FsY1woMTAwXCUtMnJlbVwpXF17d2lkdGg6Y2FsYygxMDAlIC0gMnJlbSl9LnctXFtjYWxjXCgxMDB2dy0ycmVtXClcXXt3aWR0aDpjYWxjKDEwMHZ3IC0gMnJlbSl9LnctYXV0b3t3aWR0aDphdXRvfS53LWZpdHt3aWR0aDotbW96LWZpdC1jb250ZW50O3dpZHRoOmZpdC1jb250ZW50fS53LWZ1bGx7d2lkdGg6MTAwJX0udy1weHt3aWR0aDoxcHh9Lm1heC13LVwoLS11aS1jb250YWluZXJcKXttYXgtd2lkdGg6dmFyKC0tdWktY29udGFpbmVyKX0ubWF4LXctMnhse21heC13aWR0aDp2YXIoLS1jb250YWluZXItMnhsKX0ubWF4LXctM3hse21heC13aWR0aDp2YXIoLS1jb250YWluZXItM3hsKX0ubWF4LXctNjB7bWF4LXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNjApfS5tYXgtdy1cWzc1XCVcXXttYXgtd2lkdGg6NzUlfS5tYXgtdy1cWzgwXCVcXXttYXgtd2lkdGg6ODAlfS5tYXgtdy1cWzIwMHB4XF17bWF4LXdpZHRoOjIwMHB4fS5tYXgtdy1cW2NhbGNcKDEwMFwlLTJyZW1cKVxde21heC13aWR0aDpjYWxjKDEwMCUgLSAycmVtKX0ubWF4LXctbGd7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci1sZyl9Lm1heC13LW1ke21heC13aWR0aDp2YXIoLS1jb250YWluZXItbWQpfS5tYXgtdy1zbXttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLXNtKX0ubWluLXctMHttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubWluLXctNXttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0ubWluLXctMTZ7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTYpfS5taW4tdy0zMnttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSozMil9Lm1pbi13LTQwe21pbi13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQwKX0ubWluLXctNDh7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNDgpfS5taW4tdy1cWzRweFxde21pbi13aWR0aDo0cHh9Lm1pbi13LVxbNXB4XF17bWluLXdpZHRoOjVweH0ubWluLXctXFs2cHhcXXttaW4td2lkdGg6NnB4fS5taW4tdy1cWzdweFxde21pbi13aWR0aDo3cHh9Lm1pbi13LVxbOHB4XF17bWluLXdpZHRoOjhweH0ubWluLXctXFs5cHhcXXttaW4td2lkdGg6OXB4fS5taW4tdy1cWzEwcHhcXXttaW4td2lkdGg6MTBweH0ubWluLXctXFsxMXB4XF17bWluLXdpZHRoOjExcHh9Lm1pbi13LVxbMTJweFxde21pbi13aWR0aDoxMnB4fS5taW4tdy1cWzE2cHhcXXttaW4td2lkdGg6MTZweH0ubWluLXctXFsyMHB4XF17bWluLXdpZHRoOjIwcHh9Lm1pbi13LVxbMjRweFxde21pbi13aWR0aDoyNHB4fS5taW4tdy1maXR7bWluLXdpZHRoOi1tb3otZml0LWNvbnRlbnQ7bWluLXdpZHRoOmZpdC1jb250ZW50fS5taW4tdy1mdWxse21pbi13aWR0aDoxMDAlfS5taW4tdy1tYXh7bWluLXdpZHRoOi1tb3otbWF4LWNvbnRlbnQ7bWluLXdpZHRoOm1heC1jb250ZW50fS5mbGV4LTF7ZmxleDoxfS5zaHJpbmstMHtmbGV4LXNocmluazowfS5ncm93e2ZsZXgtZ3JvdzoxfS5ncm93LTB7ZmxleC1ncm93OjB9LmJhc2lzLWZ1bGx7ZmxleC1iYXNpczoxMDAlfS50YWJsZS1maXhlZHt0YWJsZS1sYXlvdXQ6Zml4ZWR9LmJvcmRlci1jb2xsYXBzZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LmJvcmRlci1zZXBhcmF0ZXtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmJvcmRlci1zcGFjaW5nLXgtMHstLXR3LWJvcmRlci1zcGFjaW5nLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKTtib3JkZXItc3BhY2luZzp2YXIoLS10dy1ib3JkZXItc3BhY2luZy14KSB2YXIoLS10dy1ib3JkZXItc3BhY2luZy15KX0ub3JpZ2luLVwoLS1yZWthLWNvbWJvYm94LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwpe3RyYW5zZm9ybS1vcmlnaW46dmFyKC0tcmVrYS1jb21ib2JveC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pfS5vcmlnaW4tXCgtLXJla2EtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwpe3RyYW5zZm9ybS1vcmlnaW46dmFyKC0tcmVrYS1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKX0ub3JpZ2luLVwoLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCl7dHJhbnNmb3JtLW9yaWdpbjp2YXIoLS1yZWthLWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKX0ub3JpZ2luLVwoLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCl7dHJhbnNmb3JtLW9yaWdpbjp2YXIoLS1yZWthLXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKX0ub3JpZ2luLVwoLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5cKXt0cmFuc2Zvcm0tb3JpZ2luOnZhcigtLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbil9Lm9yaWdpbi1cKC0tcmVrYS10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwpe3RyYW5zZm9ybS1vcmlnaW46dmFyKC0tcmVrYS10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbil9Lm9yaWdpbi1cW3RvcF9jZW50ZXJcXXt0cmFuc2Zvcm0tb3JpZ2luOnRvcH0uLXRyYW5zbGF0ZS14LTFcLzJ7LS10dy10cmFuc2xhdGUteDotNTAlfS4tdHJhbnNsYXRlLXgtMVwvMiwuLXRyYW5zbGF0ZS14LVxbNHB4XF17dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9Li10cmFuc2xhdGUteC1cWzRweFxdey0tdHctdHJhbnNsYXRlLXg6LTRweH0udHJhbnNsYXRlLXgtXCgtLXJla2EtbmF2aWdhdGlvbi1tZW51LWluZGljYXRvci1wb3NpdGlvblwpey0tdHctdHJhbnNsYXRlLXg6dmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtaW5kaWNhdG9yLXBvc2l0aW9uKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0udHJhbnNsYXRlLXgtXCgtLXJla2EtdGFicy1pbmRpY2F0b3ItcG9zaXRpb25cKXstLXR3LXRyYW5zbGF0ZS14OnZhcigtLXJla2EtdGFicy1pbmRpY2F0b3ItcG9zaXRpb24pO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS50cmFuc2xhdGUteC0xXC8yey0tdHctdHJhbnNsYXRlLXg6NTAlfS4tdHJhbnNsYXRlLXktMVwvMiwudHJhbnNsYXRlLXgtMVwvMnt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uLXRyYW5zbGF0ZS15LTFcLzJ7LS10dy10cmFuc2xhdGUteTotNTAlfS50cmFuc2xhdGUteS1cKC0tcmVrYS10YWJzLWluZGljYXRvci1wb3NpdGlvblwpey0tdHctdHJhbnNsYXRlLXk6dmFyKC0tcmVrYS10YWJzLWluZGljYXRvci1wb3NpdGlvbik7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LnRyYW5zbGF0ZS15LTFcLzJ7LS10dy10cmFuc2xhdGUteTo1MCU7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LnNjYWxlLTgwey0tdHctc2NhbGUteDo4MCU7LS10dy1zY2FsZS15OjgwJTstLXR3LXNjYWxlLXo6ODAlO3NjYWxlOnZhcigtLXR3LXNjYWxlLXgpIHZhcigtLXR3LXNjYWxlLXkpfS5yb3RhdGUtNDV7cm90YXRlOjQ1ZGVnfS5yb3RhdGUtOTB7cm90YXRlOjkwZGVnfS50cmFuc2Zvcm17dHJhbnNmb3JtOnZhcigtLXR3LXJvdGF0ZS14LCkgdmFyKC0tdHctcm90YXRlLXksKSB2YXIoLS10dy1yb3RhdGUteiwpIHZhcigtLXR3LXNrZXcteCwpIHZhcigtLXR3LXNrZXcteSwpfS50cmFuc2Zvcm0tXCgtLXRyYW5zZm9ybVwpe3RyYW5zZm9ybTp2YXIoLS10cmFuc2Zvcm0pfS5hbmltYXRlLVxbbWFycXVlZS12ZXJ0aWNhbF92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246bWFycXVlZS12ZXJ0aWNhbCB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5hbmltYXRlLVxbbWFycXVlZV92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246bWFycXVlZSB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5hbmltYXRlLVxbc2hpbW1lcl92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXXthbmltYXRpb246c2hpbW1lciB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5hbmltYXRlLXB1bHNle2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXB1bHNlKX0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNwaW4pfS5jdXJzb3ItZS1yZXNpemV7Y3Vyc29yOmUtcmVzaXplfS5jdXJzb3ItZXctcmVzaXple2N1cnNvcjpldy1yZXNpemV9LmN1cnNvci1ncmFie2N1cnNvcjpncmFifS5jdXJzb3Itbm90LWFsbG93ZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uY3Vyc29yLXctcmVzaXple2N1cnNvcjp3LXJlc2l6ZX0udG91Y2gtbm9uZXt0b3VjaC1hY3Rpb246bm9uZX0ucmVzaXple3Jlc2l6ZTpib3RofS5yZXNpemUtbm9uZXtyZXNpemU6bm9uZX0uc2Nyb2xsLW10LTN7c2Nyb2xsLW1hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uc2Nyb2xsLW10LTR7c2Nyb2xsLW1hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uc2Nyb2xsLXB5LTF7c2Nyb2xsLXBhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ubGlzdC1kZWNpbWFse2xpc3Qtc3R5bGUtdHlwZTpkZWNpbWFsfS5hcHBlYXJhbmNlLW5vbmV7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfS5hdXRvLWNvbHMtZnJ7Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0uZ3JpZC1mbG93LWNvbHtncmlkLWF1dG8tZmxvdzpjb2x1bW59LmdyaWQtY29scy0xe2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMSxtaW5tYXgoMCwxZnIpKX0uZ3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5ncmlkLWNvbHMtN3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDcsbWlubWF4KDAsMWZyKSl9LmdyaWQtY29scy04e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoOCxtaW5tYXgoMCwxZnIpKX0uZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5mbGV4LWNvbC1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmZsZXgtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LmZsZXgtd3JhcHtmbGV4LXdyYXA6d3JhcH0ucGxhY2UtaXRlbXMtYmFzZWxpbmV7cGxhY2UtaXRlbXM6YmFzZWxpbmV9LnBsYWNlLWl0ZW1zLWNlbnRlcntwbGFjZS1pdGVtczpjZW50ZXJ9LmNvbnRlbnQtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaH0uanVzdGlmeS1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uanVzdGlmeS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmdhcC1cKC0tZ2FwXCl7Z2FwOnZhcigtLWdhcCl9LmdhcC0we2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5nYXAtMFwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LmdhcC0wXC4yNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSouMjUpfS5nYXAtMFwuNzV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqLjc1KX0uZ2FwLTF7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMSl9LmdhcC0xXC41e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LmdhcC0ye2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5nYXAtMlwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5nYXAtM3tnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uZ2FwLTNcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMy41KX0uZ2FwLTR7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqNCl9LmdhcC02e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5nYXAtOHtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uZ2FwLTE2e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjE2KX06d2hlcmUoLi1zcGFjZS15LXB4Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1lbmQ6Y2FsYygtMXB4KigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKC0xcHgqdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9OndoZXJlKC5zcGFjZS15LTE+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEqKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMSp2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXktMj46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tYmxvY2stZW5kOmNhbGModmFyKC0tc3BhY2luZykqMiooMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYmxvY2stc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfTp3aGVyZSguc3BhY2UteS0zPjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjMqdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9OndoZXJlKC5zcGFjZS15LTQ+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjQqKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCp2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXktNT46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tYmxvY2stZW5kOmNhbGModmFyKC0tc3BhY2luZykqNSooMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYmxvY2stc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfTp3aGVyZSguc3BhY2UteS02Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjYqdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9OndoZXJlKC5zcGFjZS15LTg+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjgqKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqOCp2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXktMTI+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfS5nYXAteC0xXC41ey1tb3otY29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSk7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LmdhcC14LTJ7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMik7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5nYXAteC0zey1tb3otY29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpO2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uZ2FwLXgtNHstbW96LWNvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KTtjb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqNCl9LmdhcC14LTZ7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqNik7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5nYXAteC04ey1tb3otY29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpO2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX06d2hlcmUoLi1zcGFjZS14LXB4Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTowO21hcmdpbi1pbmxpbmUtZW5kOmNhbGMoLTFweCooMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGMoLTFweCp2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKX06d2hlcmUoLnNwYWNlLXgtMT46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS14LXJldmVyc2U6MDttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjEqKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7bWFyZ2luLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjEqdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSl9LmdhcC15LTBcLjV7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uZ2FwLXktMXtyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMSl9LmdhcC15LTFcLjV7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LmdhcC15LTN7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5nYXAteS00e3Jvdy1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uZ2FwLXktNntyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqNil9LmdhcC15LTh7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfTp3aGVyZSguZGl2aWRlLXk+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctZGl2aWRlLXktcmV2ZXJzZTowO2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOmNhbGMoMXB4KigxIC0gdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpKTtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDpjYWxjKDFweCp2YXIoLS10dy1kaXZpZGUteS1yZXZlcnNlKSl9OndoZXJlKC5kaXZpZGUtYWNjZW50ZWQ+Om5vdCg6bGFzdC1jaGlsZCkpe2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfTp3aGVyZSguZGl2aWRlLWRlZmF1bHQ+Om5vdCg6bGFzdC1jaGlsZCkpe2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXIpfTp3aGVyZSguZGl2aWRlLXRyYW5zcGFyZW50Pjpub3QoOmxhc3QtY2hpbGQpKXtib3JkZXItY29sb3I6IzAwMDB9LnNlbGYtY2VudGVye2FsaWduLXNlbGY6Y2VudGVyfS5zZWxmLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kfS5zZWxmLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNofS50cnVuY2F0ZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctY2xpcHtvdmVyZmxvdzpjbGlwfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy14LWF1dG97b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ub3ZlcmZsb3cteS1oaWRkZW57b3ZlcmZsb3cteTpoaWRkZW59LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtXFtpbmhlcml0XF17Ym9yZGVyLXJhZGl1czppbmhlcml0fS5yb3VuZGVkLWZ1bGx7Ym9yZGVyLXJhZGl1czozLjQwMjgyZSszOHB4fS5yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjEuNSl9LnJvdW5kZWQtc217Ym9yZGVyLXJhZGl1czp2YXIoLS11aS1yYWRpdXMpfS5yb3VuZGVkLXhse2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjMpfS5yb3VuZGVkLXhze2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKi41KX0ucm91bmRlZC10LWxne2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ucm91bmRlZC10LW5vbmV7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LnJvdW5kZWQtbC1sZ3tib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ucm91bmRlZC1yLWxne2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ucm91bmRlZC1iLWxnLC5yb3VuZGVkLXItbGd7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfS5yb3VuZGVkLWItbGd7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMil9LmJvcmRlcntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uYm9yZGVyLTJ7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjJweH0uYm9yZGVyLXh7Ym9yZGVyLWlubGluZS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtd2lkdGg6MXB4fS5ib3JkZXItc3tib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHh9LmJvcmRlci1zLVxbMnB4XF17Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6MnB4fS5ib3JkZXItcy1cWzNweFxde2JvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOjNweH0uYm9yZGVyLXMtXFs0cHhcXXtib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDo0cHh9LmJvcmRlci1zLVxbNXB4XF17Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6NXB4fS5ib3JkZXItZXtib3JkZXItaW5saW5lLWVuZC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1pbmxpbmUtZW5kLXdpZHRoOjFweH0uYm9yZGVyLXR7Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6MXB4fS5ib3JkZXItdC1cWzJweFxde2JvcmRlci10b3Atc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItdG9wLXdpZHRoOjJweH0uYm9yZGVyLXQtXFszcHhcXXtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDozcHh9LmJvcmRlci10LVxbNHB4XF17Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6NHB4fS5ib3JkZXItdC1cWzVweFxde2JvcmRlci10b3Atc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItdG9wLXdpZHRoOjVweH0uYm9yZGVyLWJ7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ib3JkZXItZGFzaGVkey0tdHctYm9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItc3R5bGU6ZGFzaGVkfS5ib3JkZXItZG90dGVkey0tdHctYm9yZGVyLXN0eWxlOmRvdHRlZDtib3JkZXItc3R5bGU6ZG90dGVkfS5ib3JkZXItc29saWR7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS5ib3JkZXItYmd7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJnKX0uYm9yZGVyLWRlZmF1bHR7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9LmJvcmRlci1lcnJvcntib3JkZXItY29sb3I6dmFyKC0tdWktZXJyb3IpfS5ib3JkZXItaW5mb3tib3JkZXItY29sb3I6dmFyKC0tdWktaW5mbyl9LmJvcmRlci1pbnZlcnRlZHtib3JkZXItY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0uYm9yZGVyLW11dGVke2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItbXV0ZWQpfS5ib3JkZXItcHJpbWFyeXtib3JkZXItY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmJvcmRlci1zZWNvbmRhcnl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmJvcmRlci1zdWNjZXNze2JvcmRlci1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uYm9yZGVyLXRyYW5zcGFyZW50e2JvcmRlci1jb2xvcjojMDAwMH0uYm9yZGVyLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5cIWJnLWFjY2VudGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpIWltcG9ydGFudH0uYmctXCgtLXVpLWJvcmRlci1hY2NlbnRlZFwpe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uYmctYWNjZW50ZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1hY2NlbnRlZCl9LmJnLWJvcmRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9LmJnLWRlZmF1bHQsLmJnLWRlZmF1bHRcLzc1e2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWRlZmF1bHRcLzc1e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnKSA3NSUsdHJhbnNwYXJlbnQpfX0uYmctZGVmYXVsdFwvOTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctZGVmYXVsdFwvOTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmcpIDkwJSx0cmFuc3BhcmVudCl9fS5iZy1lbGV2YXRlZCwuYmctZWxldmF0ZWRcLzI1e2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWVsZXZhdGVkXC8yNXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgMjUlLHRyYW5zcGFyZW50KX19LmJnLWVsZXZhdGVkXC81MHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1lbGV2YXRlZFwvNTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5iZy1lbGV2YXRlZFwvNzV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctZWxldmF0ZWRcLzc1e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA3NSUsdHJhbnNwYXJlbnQpfX0uYmctZXJyb3IsLmJnLWVycm9yXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1lcnJvclwvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5iZy1pbmZvLC5iZy1pbmZvXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWluZm9cLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5iZy1pbnZlcnRlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX0uYmctcHJpbWFyeSwuYmctcHJpbWFyeVwvMTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1wcmltYXJ5XC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uYmctc2Vjb25kYXJ5LC5iZy1zZWNvbmRhcnlcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1zZWNvbmRhcnlcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmJnLXN1Y2Nlc3MsLmJnLXN1Y2Nlc3NcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctc3VjY2Vzc1wvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmJnLXdhcm5pbmcsLmJnLXdhcm5pbmdcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctd2FybmluZ1wvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmJnLWdyYWRpZW50LXRvLWJ7LS10dy1ncmFkaWVudC1wb3NpdGlvbjp0byBib3R0b20gaW4gb2tsYWI7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodmFyKC0tdHctZ3JhZGllbnQtc3RvcHMpKX0uYmctXFtpbWFnZVw6bGluZWFyLWdyYWRpZW50XCg5MGRlZ1wsXCMwMDAwX2NhbGNcKDUwXCUtdmFyXCgtLXNwcmVhZFwpXClcLHZhclwoLS11aS10ZXh0LWhpZ2hsaWdodGVkXClcLFwjMDAwMF9jYWxjXCg1MFwlXCt2YXJcKC0tc3ByZWFkXClcKVwpXCxsaW5lYXItZ3JhZGllbnRcKHZhclwoLS11aS10ZXh0LW11dGVkXClcLHZhclwoLS11aS10ZXh0LW11dGVkXClcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAwIGNhbGMoNTAlIC0gdmFyKC0tc3ByZWFkKSksdmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCksIzAwMDAgY2FsYyg1MCUgKyB2YXIoLS1zcHJlYWQpKSksbGluZWFyLWdyYWRpZW50KHZhcigtLXVpLXRleHQtbXV0ZWQpLHZhcigtLXVpLXRleHQtbXV0ZWQpKX0uZnJvbS1kZWZhdWx0ey0tdHctZ3JhZGllbnQtZnJvbTp2YXIoLS11aS1iZyk7LS10dy1ncmFkaWVudC1zdG9wczp2YXIoLS10dy1ncmFkaWVudC12aWEtc3RvcHMsdmFyKC0tdHctZ3JhZGllbnQtcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LXRvKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikpfS5iZy1zaXplLVxbY2FsY1woMjAwXCVcK3ZhclwoLS1zcHJlYWRcKVwqMlwrMnB4XClfMTAwXCVcLGF1dG9cXXtiYWNrZ3JvdW5kLXNpemU6Y2FsYygyMDAlICsgdmFyKC0tc3ByZWFkKSoyICsgMnB4KSAxMDAlLGF1dG99LmJnLWNsaXAtdGV4dHstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0O2JhY2tncm91bmQtY2xpcDp0ZXh0fS5iZy1uby1yZXBlYXR7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5maWxsLWJne2ZpbGw6dmFyKC0tdWktYmcpfS5zdHJva2UtZGVmYXVsdHtzdHJva2U6dmFyKC0tdWktYm9yZGVyKX0ub2JqZWN0LWNvdmVyey1vLW9iamVjdC1maXQ6Y292ZXI7b2JqZWN0LWZpdDpjb3Zlcn0ub2JqZWN0LXRvcHstby1vYmplY3QtcG9zaXRpb246dG9wO29iamVjdC1wb3NpdGlvbjp0b3B9LnAtMHtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMCl9LnAtMFwuNXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5wLTF7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5wLTFcLjV7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LnAtMntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMil9LnAtMlwuNXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucC0ze3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ucC0zXC41e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5wLTR7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5wLTRcLjV7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjQuNSl9LnAtNntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqNil9LnB4LTB7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ucHgtMXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5weC0xXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ucHgtMntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5weC0yXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucHgtM3twYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5weC00e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqNCl9LnB4LTZ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ucHktMFwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5weS0xe3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ucHktMVwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ucHktMntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMil9LnB5LTJcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9LnB5LTN7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5weS0zXC41e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSozLjUpfS5weS00e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ucHktNntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqNil9LnB5LTd7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5weS04e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0ucHktMTJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0ucHktMTZ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjE2KX0ucHktMjR7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjI0KX0ucHMtMXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5wcy0xXC41e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ucHMtMntwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5wcy0yXC41e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucHMtM3twYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5wcy00e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LnBzLTd7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo3KX0ucHMtOHtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5wcy05e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqOSl9LnBzLTEwe3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqMTApfS5wcy0xMXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0ucGUtMXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0ucGUtMntwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ucGUtMlwuNXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5wZS0ze3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5wZS00XC41e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjQuNSl9LnBlLTV7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnBlLTVcLjV7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqNS41KX0ucGUtNntwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ucGUtNlwuNXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2LjUpfS5wZS03e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5wZS03XC41e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjcuNSl9LnBlLTh7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnBlLThcLjV7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqOC41KX0ucGUtOXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5KX0ucGUtMTB7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqMTApfS5wZS0xMXtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMSl9LnB0LTJ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ucHQtNHtwYWRkaW5nLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5wdC01e3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnBiLTN7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0ucGItM1wuNXtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSl9LnBiLTRcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpfS5wYi01e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNSl9LnBiLTVcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo1LjUpfS5wYi02e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNil9LnBiLTZcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo2LjUpfS5wYi03e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNyl9LnBiLTdcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo3LjUpfS5wYi04e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnBiLThcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo4LjUpfS5wYi0yNHtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjI0KX0ucGwtNntwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtZW5ke3RleHQtYWxpZ246ZW5kfS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnRleHQtc3RhcnR7dGV4dC1hbGlnbjpzdGFydH0uYWxpZ24tbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uYWxpZ24tdG9we3ZlcnRpY2FsLWFsaWduOnRvcH0uZm9udC1tb25ve2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyl9LmZvbnQtc2Fuc3tmb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpfS50ZXh0LTJ4bHtmb250LXNpemU6dmFyKC0tdGV4dC0yeGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC0yeGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQtM3hse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTN4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTN4bC0tbGluZS1oZWlnaHQpKX0udGV4dC00eGx7Zm9udC1zaXplOnZhcigtLXRleHQtNHhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtNHhsLS1saW5lLWhlaWdodCkpfS50ZXh0LTV4bHtmb250LXNpemU6dmFyKC0tdGV4dC01eGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC01eGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQtXFs4cHhcXVwvM3tmb250LXNpemU6OHB4O2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnRleHQtXFsxMHB4XF1cLzN7Zm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0udGV4dC1iYXNle2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1iYXNlLS1saW5lLWhlaWdodCkpfS50ZXh0LWJhc2UsLnRleHQtYmFzZVwvNXtmb250LXNpemU6dmFyKC0tdGV4dC1iYXNlKX0udGV4dC1iYXNlXC81e2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNSl9LnRleHQtbGd7Zm9udC1zaXplOnZhcigtLXRleHQtbGcpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1sZy0tbGluZS1oZWlnaHQpKX0udGV4dC1zbXtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9LnRleHQtc20sLnRleHQtc21cLzR7Zm9udC1zaXplOnZhcigtLXRleHQtc20pfS50ZXh0LXNtXC80e2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LnRleHQtc21cLzZ7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNil9LnRleHQteGx7Zm9udC1zaXplOnZhcigtLXRleHQteGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14bC0tbGluZS1oZWlnaHQpKX0udGV4dC14c3tsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQteHMtLWxpbmUtaGVpZ2h0KSl9LnRleHQteHMsLnRleHQteHNcLzV7Zm9udC1zaXplOnZhcigtLXRleHQteHMpfS50ZXh0LXhzXC81e2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNSl9LnRleHQtXFs0cHhcXXtmb250LXNpemU6NHB4fS50ZXh0LVxbNXB4XF17Zm9udC1zaXplOjVweH0udGV4dC1cWzZweFxde2ZvbnQtc2l6ZTo2cHh9LnRleHQtXFs3cHhcXXtmb250LXNpemU6N3B4fS50ZXh0LVxbOHB4XF17Zm9udC1zaXplOjhweH0udGV4dC1cWzlweFxde2ZvbnQtc2l6ZTo5cHh9LnRleHQtXFsxMHB4XF17Zm9udC1zaXplOjEwcHh9LnRleHQtXFsxMXB4XF17Zm9udC1zaXplOjExcHh9LnRleHQtXFsxMnB4XF17Zm9udC1zaXplOjEycHh9LnRleHQtXFsxNXB4XF17Zm9udC1zaXplOjE1cHh9LnRleHQtXFsyMnB4XF17Zm9udC1zaXplOjIycHh9LmZvbnQtYm9sZHstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpfS5mb250LW1lZGl1bXstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKX0uZm9udC1ub3JtYWx7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCl9LmZvbnQtc2VtaWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpfS50cmFja2luZy10aWdodHstLXR3LXRyYWNraW5nOnZhcigtLXRyYWNraW5nLXRpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS10cmFja2luZy10aWdodCl9LnRyYWNraW5nLXdpZGV7LS10dy10cmFja2luZzp2YXIoLS10cmFja2luZy13aWRlKTtsZXR0ZXItc3BhY2luZzp2YXIoLS10cmFja2luZy13aWRlKX0udGV4dC1iYWxhbmNle3RleHQtd3JhcDpiYWxhbmNlfS50ZXh0LXByZXR0eXt0ZXh0LXdyYXA6cHJldHR5fS50ZXh0LXdyYXB7dGV4dC13cmFwOndyYXB9LmJyZWFrLXdvcmRze292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0ud3JhcC1hbnl3aGVyZXtvdmVyZmxvdy13cmFwOmFueXdoZXJlfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2UtcHJlLXdyYXB7d2hpdGUtc3BhY2U6cHJlLXdyYXB9LnRleHQtZGVmYXVsdHtjb2xvcjp2YXIoLS11aS10ZXh0KX0udGV4dC1kaW1tZWR7Y29sb3I6dmFyKC0tdWktdGV4dC1kaW1tZWQpfS50ZXh0LWVycm9yLC50ZXh0LWVycm9yXC83NXtjb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsudGV4dC1lcnJvclwvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA3NSUsdHJhbnNwYXJlbnQpfX0udGV4dC1oaWdobGlnaHRlZHtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0udGV4dC1pbmZvLC50ZXh0LWluZm9cLzc1e2NvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnRleHQtaW5mb1wvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LWluaGVyaXR7Y29sb3I6aW5oZXJpdH0udGV4dC1pbnZlcnRlZHtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0udGV4dC1tdXRlZHtjb2xvcjp2YXIoLS11aS10ZXh0LW11dGVkKX0udGV4dC1wcmltYXJ5LC50ZXh0LXByaW1hcnlcLzc1e2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnRleHQtcHJpbWFyeVwvNzV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXNlY29uZGFyeSwudGV4dC1zZWNvbmRhcnlcLzc1e2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsudGV4dC1zZWNvbmRhcnlcLzc1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDc1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXN1Y2Nlc3MsLnRleHQtc3VjY2Vzc1wvNzV7Y29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsudGV4dC1zdWNjZXNzXC83NXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNzUlLHRyYW5zcGFyZW50KX19LnRleHQtdG9uZWR7Y29sb3I6dmFyKC0tdWktdGV4dC10b25lZCl9LnRleHQtdHJhbnNwYXJlbnR7Y29sb3I6IzAwMDB9LnRleHQtd2FybmluZywudGV4dC13YXJuaW5nXC83NXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey50ZXh0LXdhcm5pbmdcLzc1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA3NSUsdHJhbnNwYXJlbnQpfX0udXBwZXJjYXNle3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uaXRhbGlje2ZvbnQtc3R5bGU6aXRhbGljfS50YWJ1bGFyLW51bXN7LS10dy1udW1lcmljLXNwYWNpbmc6dGFidWxhci1udW1zO2ZvbnQtdmFyaWFudC1udW1lcmljOnZhcigtLXR3LW9yZGluYWwsKSB2YXIoLS10dy1zbGFzaGVkLXplcm8sKSB2YXIoLS10dy1udW1lcmljLWZpZ3VyZSwpIHZhcigtLXR3LW51bWVyaWMtc3BhY2luZywpIHZhcigtLXR3LW51bWVyaWMtZnJhY3Rpb24sKX0ubGluZS10aHJvdWdoe3RleHQtZGVjb3JhdGlvbi1saW5lOmxpbmUtdGhyb3VnaH0ub3BhY2l0eS0we29wYWNpdHk6MH0ub3BhY2l0eS00MHtvcGFjaXR5Oi40fS5vcGFjaXR5LTcwe29wYWNpdHk6Ljd9Lm9wYWNpdHktNzV7b3BhY2l0eTouNzV9Lm9wYWNpdHktOTB7b3BhY2l0eTouOX0ub3BhY2l0eS0xMDB7b3BhY2l0eToxfS5zaGFkb3ctbGd7LS10dy1zaGFkb3c6MCAxMHB4IDE1cHggLTNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwwIDRweCA2cHggLTRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKX0uc2hhZG93LWxnLC5zaGFkb3ctc217Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctc217LS10dy1zaGFkb3c6MCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSl9LnNoYWRvdy14c3stLXR3LXNoYWRvdzowIDFweCAycHggMCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDBkKX0ucmluZywuc2hhZG93LXhze2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0ucmluZ3stLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDFweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpfS5yaW5nLTB7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYyh2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKX0ucmluZy0wLC5yaW5nLTJ7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5yaW5nLTJ7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKX0ucmluZy0zey0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoM3B4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5yaW5nLWFjY2VudGVkey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfS5yaW5nLWJney0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1iZyl9LnJpbmctZGVmYXVsdHstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyKX0ucmluZy1lcnJvciwucmluZy1lcnJvclwvMjV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLWVycm9yXC8yNXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAyNSUsdHJhbnNwYXJlbnQpfX0ucmluZy1lcnJvclwvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLWVycm9yXC81MHstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1pbmZvLC5yaW5nLWluZm9cLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLWluZm9cLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctaW5mb1wvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctaW5mb1wvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1pbnZlcnRlZHstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0ucmluZy1wcmltYXJ5LC5yaW5nLXByaW1hcnlcLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXByaW1hcnlcLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctcHJpbWFyeVwvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctcHJpbWFyeVwvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1zZWNvbmRhcnksLnJpbmctc2Vjb25kYXJ5XC8yNXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXNlY29uZGFyeVwvMjV7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDI1JSx0cmFuc3BhcmVudCl9fS5yaW5nLXNlY29uZGFyeVwvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsucmluZy1zZWNvbmRhcnlcLzUwey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy1zdWNjZXNzLC5yaW5nLXN1Y2Nlc3NcLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXN1Y2Nlc3NcLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctc3VjY2Vzc1wvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctc3VjY2Vzc1wvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy13YXJuaW5nLC5yaW5nLXdhcm5pbmdcLzI1ey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5yaW5nLXdhcm5pbmdcLzI1ey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMjUlLHRyYW5zcGFyZW50KX19LnJpbmctd2FybmluZ1wvNTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnJpbmctd2FybmluZ1wvNTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA1MCUsdHJhbnNwYXJlbnQpfX0ucmluZy13aGl0ZXstLXR3LXJpbmctY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5vdXRsaW5lLWhpZGRlbnstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9QG1lZGlhKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsub3V0bGluZS1oaWRkZW57b3V0bGluZToycHggc29saWQgIzAwMDA7b3V0bGluZS1vZmZzZXQ6MnB4fX0ub3V0bGluZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MXB4fS5ibHVyey0tdHctYmx1cjpibHVyKDhweCl9LmJsdXIsLmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1ciwpIHZhcigtLXR3LWJyaWdodG5lc3MsKSB2YXIoLS10dy1jb250cmFzdCwpIHZhcigtLXR3LWdyYXlzY2FsZSwpIHZhcigtLXR3LWh1ZS1yb3RhdGUsKSB2YXIoLS10dy1pbnZlcnQsKSB2YXIoLS10dy1zYXR1cmF0ZSwpIHZhcigtLXR3LXNlcGlhLCkgdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uYmFja2Ryb3AtYmx1cnstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cig4cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKSB2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCkgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKSB2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpIHZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKSB2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10byxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLHRyYW5zbGF0ZSxzY2FsZSxyb3RhdGUsZmlsdGVyLGJhY2tkcm9wLWZpbHRlcixkaXNwbGF5LGNvbnRlbnQtdmlzaWJpbGl0eSxvdmVybGF5LHBvaW50ZXItZXZlbnRzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbYmFja2dyb3VuZFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpiYWNrZ3JvdW5kO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbY29sb3JcLG9wYWNpdHlcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3Isb3BhY2l0eTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1cW2xlZnRcLHJpZ2h0XCx3aWR0aFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0LHJpZ2h0LHdpZHRoO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbcm90YXRlXCxvcGFjaXR5XF17dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OnJvdGF0ZSxvcGFjaXR5O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbdHJhbnNmb3JtXCx0cmFuc2xhdGVcLGhlaWdodFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sdHJhbnNsYXRlLGhlaWdodDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1cW3RyYW5zbGF0ZVwsd2lkdGhcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNsYXRlLHdpZHRoO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLVxbd2lkdGhcLGhlaWdodFwsbGVmdFwscmlnaHRcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6d2lkdGgsaGVpZ2h0LGxlZnQscmlnaHQ7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSl9LnRyYW5zaXRpb24tXFt3aWR0aFxde3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTp3aWR0aDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1hbGx7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0udHJhbnNpdGlvbi1jb2xvcnN7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfS50cmFuc2l0aW9uLW9wYWNpdHl7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSl9LnRyYW5zaXRpb24tdHJhbnNmb3Jte3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sdHJhbnNsYXRlLHNjYWxlLHJvdGF0ZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0uZHVyYXRpb24tMjAwey0tdHctZHVyYXRpb246LjJzO3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5lYXNlLWxpbmVhcnstLXR3LWVhc2U6bGluZWFyO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn0uZWFzZS1vdXR7LS10dy1lYXNlOnZhcigtLWVhc2Utb3V0KTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1lYXNlLW91dCl9LndpbGwtY2hhbmdlLVxbYmFja2dyb3VuZC1wb3NpdGlvblxde3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259LndpbGwtY2hhbmdlLVxbaGVpZ2h0XF17d2lsbC1jaGFuZ2U6aGVpZ2h0fS5vdXRsaW5lLW5vbmV7LS10dy1vdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1zdHlsZTpub25lfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LlwhXFthbmltYXRpb24tZGlyZWN0aW9uXDpyZXZlcnNlXF17YW5pbWF0aW9uLWRpcmVjdGlvbjpyZXZlcnNlIWltcG9ydGFudH0uXFstLWR1cmF0aW9uXDoyMHNcXXstLWR1cmF0aW9uOjIwc30uXFstLWdhcFw6LS1zcGFjaW5nXCgxNlwpXF17LS1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxNil9LlxbLS1pbml0aWFsLXRyYW5zZm9ybVw6Y2FsY1woMTAwXCVcKzFcLjVyZW1cKVxdey0taW5pdGlhbC10cmFuc2Zvcm06IGNhbGMoMTAwJSArIDEuNXJlbSkgfS5cWy0tc2lkZWJhci13aWR0aC1pY29uXDo0cmVtXF17LS1zaWRlYmFyLXdpZHRoLWljb246NHJlbX0uXFstLXNpZGViYXItd2lkdGhcOjE2cmVtXF17LS1zaWRlYmFyLXdpZHRoOjE2cmVtfS5cWy0tc3BvdGxpZ2h0LWNvbG9yXDp2YXJcKC0tdWktYmctaW52ZXJ0ZWRcKVxdey0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX0uXFstLXNwb3RsaWdodC1jb2xvclw6dmFyXCgtLXVpLWVycm9yXClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1lcnJvcil9LlxbLS1zcG90bGlnaHQtY29sb3JcOnZhclwoLS11aS1pbmZvXClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1pbmZvKX0uXFstLXNwb3RsaWdodC1jb2xvclw6dmFyXCgtLXVpLXByaW1hcnlcKVxdey0tc3BvdGxpZ2h0LWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5cWy0tc3BvdGxpZ2h0LWNvbG9yXDp2YXJcKC0tdWktc2Vjb25kYXJ5XClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfS5cWy0tc3BvdGxpZ2h0LWNvbG9yXDp2YXJcKC0tdWktc3VjY2Vzc1wpXF17LS1zcG90bGlnaHQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LlxbLS1zcG90bGlnaHQtY29sb3JcOnZhclwoLS11aS13YXJuaW5nXClcXXstLXNwb3RsaWdodC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uXFstLXNwb3RsaWdodC1zaXplXDo0MDBweFxdey0tc3BvdGxpZ2h0LXNpemU6NDAwcHh9LmJhY2tmYWNlLWhpZGRlbntiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn0ucmluZy1pbnNldHstLXR3LXJpbmctaW5zZXQ6aW5zZXR9OmlzKC5cKlw6bXktNT4qKXttYXJnaW4tYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX06aXMoLlwqXDpzaXplLTI+Kil7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMik7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX06aXMoLlwqXDpicmVhay1pbnNpZGUtYXZvaWQtY29sdW1uPiopey1tb3otY29sdW1uLWJyZWFrLWluc2lkZTphdm9pZDticmVhay1pbnNpZGU6YXZvaWQtY29sdW1ufTppcyguXCpcOnJvdW5kZWQtZnVsbD4qKXtib3JkZXItcmFkaXVzOjMuNDAyODJlKzM4cHh9OmlzKC5cKlw6YmctZWxldmF0ZWQ+Kil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9OmlzKC5cKlw6cHQtOD4qKXtwYWRkaW5nLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfTppcyguXCpcOndpbGwtY2hhbmdlLXRyYW5zZm9ybT4qKXt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19Lm5vdC1sYXN0XDpwYi00Om5vdCg6bGFzdC1jaGlsZCl7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ubm90LWxhc3RcOm5vdC1maXJzdFw6cm91bmRlZC1ub25lOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czowfS5ub3QtZGF0YS1cW3NlZ21lbnRcPWxpdGVyYWxcXVw6dy04Om5vdChbZGF0YS1zZWdtZW50PWxpdGVyYWxdKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5ub3QtZGF0YS1cW3NlZ21lbnRcPWxpdGVyYWxcXVw6dy05Om5vdChbZGF0YS1zZWdtZW50PWxpdGVyYWxdKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjkpfS5ub3QtZGF0YS1cW3NlZ21lbnRcPWxpdGVyYWxcXVw6dy0xMDpub3QoW2RhdGEtc2VnbWVudD1saXRlcmFsXSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9Lmdyb3VwLW5vdC1sYXN0XDpncm91cC1ub3QtZmlyc3RcOnJvdW5kZWQtbm9uZTppcyg6d2hlcmUoLmdyb3VwKTpub3QoOmxhc3QtY2hpbGQpICopOmlzKDp3aGVyZSguZ3JvdXApOm5vdCg6Zmlyc3QtY2hpbGQpICope2JvcmRlci1yYWRpdXM6MH0uZ3JvdXAtbm90LW9ubHlcOmdyb3VwLWZpcnN0XDpyb3VuZGVkLWUtbm9uZTppcyg6d2hlcmUoLmdyb3VwKTpub3QoOm9ubHktY2hpbGQpICopOmlzKDp3aGVyZSguZ3JvdXApOmZpcnN0LWNoaWxkICope2JvcmRlci1lbmQtZW5kLXJhZGl1czowO2JvcmRlci1zdGFydC1lbmQtcmFkaXVzOjB9Lmdyb3VwLW5vdC1vbmx5XDpncm91cC1maXJzdFw6cm91bmRlZC1iLW5vbmU6aXMoOndoZXJlKC5ncm91cCk6bm90KDpvbmx5LWNoaWxkKSAqKTppcyg6d2hlcmUoLmdyb3VwKTpmaXJzdC1jaGlsZCAqKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZ3JvdXAtbm90LW9ubHlcOmdyb3VwLWxhc3RcOnJvdW5kZWQtcy1ub25lOmlzKDp3aGVyZSguZ3JvdXApOm5vdCg6b25seS1jaGlsZCkgKik6aXMoOndoZXJlKC5ncm91cCk6bGFzdC1jaGlsZCAqKXtib3JkZXItZW5kLXN0YXJ0LXJhZGl1czowO2JvcmRlci1zdGFydC1zdGFydC1yYWRpdXM6MH0uZ3JvdXAtbm90LW9ubHlcOmdyb3VwLWxhc3RcOnJvdW5kZWQtdC1ub25lOmlzKDp3aGVyZSguZ3JvdXApOm5vdCg6b25seS1jaGlsZCkgKik6aXMoOndoZXJlKC5ncm91cCk6bGFzdC1jaGlsZCAqKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH1AbWVkaWEoaG92ZXI6aG92ZXIpey5ncm91cC1ob3Zlclw6YmctcHJpbWFyeTppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5ncm91cC1ob3Zlclw6dGV4dC1kZWZhdWx0OmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICope2NvbG9yOnZhcigtLXVpLXRleHQpfS5ncm91cC1ob3Zlclw6dGV4dC1pbnZlcnRlZDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0uZ3JvdXAtaG92ZXJcOm9wYWNpdHktMDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtvcGFjaXR5OjB9Lmdyb3VwLWhvdmVyXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKXtvcGFjaXR5OjF9Lmdyb3VwLWhvdmVyXDpyaW5nLXByaW1hcnk6aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKil7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5ncm91cC1ob3Zlclw6XFthbmltYXRpb24tcGxheS1zdGF0ZVw6cGF1c2VkXF06aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKil7YW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkfS5ncm91cC1ob3ZlclwvYmxvZy1wb3N0XDpzY2FsZS0xMTA6aXMoOndoZXJlKC5ncm91cFwvYmxvZy1wb3N0KTpob3ZlciAqKXstLXR3LXNjYWxlLXg6MTEwJTstLXR3LXNjYWxlLXk6MTEwJTstLXR3LXNjYWxlLXo6MTEwJTtzY2FsZTp2YXIoLS10dy1zY2FsZS14KSB2YXIoLS10dy1zY2FsZS15KX0uZ3JvdXAtaG92ZXJcL2Jsb2ctcG9zdFw6cm91bmRlZC1yLW5vbmU6aXMoOndoZXJlKC5ncm91cFwvYmxvZy1wb3N0KTpob3ZlciAqKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmdyb3VwLWhvdmVyXC9ibG9nLXBvc3RcOnJvdW5kZWQtYi1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL2Jsb2ctcG9zdCk6aG92ZXIgKil7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9Lmdyb3VwLWhvdmVyXC9ibG9nLXBvc3RcOnNoYWRvdy1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL2Jsb2ctcG9zdCk6aG92ZXIgKil7LS10dy1zaGFkb3c6MCAwICMwMDAwO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uZ3JvdXAtaG92ZXJcL2NoYW5nZWxvZy12ZXJzaW9uLWltYWdlXDpzY2FsZS0xMDU6aXMoOndoZXJlKC5ncm91cFwvY2hhbmdlbG9nLXZlcnNpb24taW1hZ2UpOmhvdmVyICopey0tdHctc2NhbGUteDoxMDUlOy0tdHctc2NhbGUteToxMDUlOy0tdHctc2NhbGUtejoxMDUlO3NjYWxlOnZhcigtLXR3LXNjYWxlLXgpIHZhcigtLXR3LXNjYWxlLXkpfS5ncm91cC1ob3ZlclwvbWVzc2FnZVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cFwvbWVzc2FnZSk6aG92ZXIgKil7b3BhY2l0eToxfS5ncm91cC1ob3ZlclwvdXNlclw6c2NhbGUtMTE1OmlzKDp3aGVyZSguZ3JvdXBcL3VzZXIpOmhvdmVyICopey0tdHctc2NhbGUteDoxMTUlOy0tdHctc2NhbGUteToxMTUlOy0tdHctc2NhbGUtejoxMTUlO3NjYWxlOnZhcigtLXR3LXNjYWxlLXgpIHZhcigtLXR3LXNjYWxlLXkpfX0uZ3JvdXAtaGFzLWZvY3VzLXZpc2libGVcL2NoYW5nZWxvZy12ZXJzaW9uLWltYWdlXDpzY2FsZS0xMDU6aXMoOndoZXJlKC5ncm91cFwvY2hhbmdlbG9nLXZlcnNpb24taW1hZ2UpOmhhcyg6Zm9jdXMtdmlzaWJsZSkgKil7LS10dy1zY2FsZS14OjEwNSU7LS10dy1zY2FsZS15OjEwNSU7LS10dy1zY2FsZS16OjEwNSU7c2NhbGU6dmFyKC0tdHctc2NhbGUteCkgdmFyKC0tdHctc2NhbGUteSl9Lmdyb3VwLWhhcy1mb2N1cy12aXNpYmxlXC91c2VyXDpzY2FsZS0xMTU6aXMoOndoZXJlKC5ncm91cFwvdXNlcik6aGFzKDpmb2N1cy12aXNpYmxlKSAqKXstLXR3LXNjYWxlLXg6MTE1JTstLXR3LXNjYWxlLXk6MTE1JTstLXR3LXNjYWxlLXo6MTE1JTtzY2FsZTp2YXIoLS10dy1zY2FsZS14KSB2YXIoLS10dy1zY2FsZS15KX0uZ3JvdXAtZGF0YS1leHBhbmRlZFw6cm90YXRlLTE4MDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWV4cGFuZGVkXSAqKXtyb3RhdGU6MTgwZGVnfS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDppbmxpbmUtZmxleDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWhpZ2hsaWdodGVkXSAqKXtkaXNwbGF5OmlubGluZS1mbGV4fS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LWRlZmF1bHQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktdGV4dCl9Lmdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtZXJyb3I6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LWluZm86aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktaW5mbyl9Lmdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtcHJpbWFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWhpZ2hsaWdodGVkXSAqKXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZ3JvdXAtZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1zZWNvbmRhcnk6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZ3JvdXAtZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1zdWNjZXNzOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtaGlnaGxpZ2h0ZWRdICope2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5ncm91cC1kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LXdhcm5pbmc6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKil7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9Lmdyb3VwLWRhdGEtaGlnaGxpZ2h0ZWRcOm5vdC1ncm91cC1kYXRhLWRpc2FibGVkXDp0ZXh0LWRlZmF1bHQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1oaWdobGlnaHRlZF0gKik6bm90KDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWRpc2FibGVkXSAqKSl7Y29sb3I6dmFyKC0tdWktdGV4dCl9Lmdyb3VwLWRhdGEtXFtkaXNhYmxlZFxdXDpvcGFjaXR5LTc1OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtZGlzYWJsZWRdICope29wYWNpdHk6Ljc1fS5ncm91cC1kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDpiZy1lcnJvcjppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWFjdGl2ZV0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLWluZm86aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLWludmVydGVkOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9YWN0aXZlXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6YmctcHJpbWFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWFjdGl2ZV0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6Ymctc2Vjb25kYXJ5OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9YWN0aXZlXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLXN1Y2Nlc3M6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLXdhcm5pbmc6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtaW52ZXJ0ZWQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1hY3RpdmVdICope2NvbG9yOnZhcigtLXVpLXRleHQtaW52ZXJ0ZWQpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dGV4dC1lcnJvcjppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLWVycm9yKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRleHQtaGlnaGxpZ2h0ZWQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jaGVja2VkXSAqKXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRleHQtaW5mbzppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLWluZm8pfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dGV4dC1wcmltYXJ5OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y2hlY2tlZF0gKil7Y29sb3I6dmFyKC0tdWktcHJpbWFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0ZXh0LXNlY29uZGFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0ZXh0LXN1Y2Nlc3M6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jaGVja2VkXSAqKXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRleHQtd2FybmluZzppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jaGVja2VkXSAqKXtvcGFjaXR5OjF9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cL3NpZGViYXJcOmhpZGRlbjppcyg6d2hlcmUoLmdyb3VwXC9zaWRlYmFyKVtkYXRhLXN0YXRlPWNvbGxhcHNlZF0gKil7ZGlzcGxheTpub25lfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbGxhcHNlZFxdXC9zaWRlYmFyXDpvdmVyZmxvdy1oaWRkZW46aXMoOndoZXJlKC5ncm91cFwvc2lkZWJhcilbZGF0YS1zdGF0ZT1jb2xsYXBzZWRdICope292ZXJmbG93OmhpZGRlbn0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1jb21wbGV0ZWRcXVw6YmctZXJyb3I6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jb21wbGV0ZWRdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy1pbmZvOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy1pbnZlcnRlZDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNvbXBsZXRlZF0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y29tcGxldGVkXF1cOmJnLXByaW1hcnk6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1jb21wbGV0ZWRdICope2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9Y29tcGxldGVkXF1cOmJnLXNlY29uZGFyeTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPWNvbXBsZXRlZF0gKil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy1zdWNjZXNzOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDpiZy13YXJuaW5nOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5ncm91cC1kYXRhLVxbc3RhdGVcPWNvbXBsZXRlZFxdXDp0ZXh0LWludmVydGVkOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9Y29tcGxldGVkXSAqKXtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnJvdGF0ZS0xODA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1vcGVuXSAqKXtyb3RhdGU6MTgwZGVnfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1kZWZhdWx0OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktdGV4dCl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDp0ZXh0LWVycm9yOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1oaWdobGlnaHRlZDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPW9wZW5dICope2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1pbmZvOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktaW5mbyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDp0ZXh0LXByaW1hcnk6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1vcGVuXSAqKXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnRleHQtc2Vjb25kYXJ5OmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnRleHQtc3VjY2Vzczppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPW9wZW5dICope2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC13YXJuaW5nOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc3RhdGU9b3Blbl0gKil7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDpvcGFjaXR5LTA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT1vcGVuXSAqKXtvcGFjaXR5OjB9Lmdyb3VwLWRhdGEtXFtzdGF0ZVw9b3BlblxdXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPW9wZW5dICope29wYWNpdHk6MX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6dGV4dC1kaW1tZWQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT11bmNoZWNrZWRdICope2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKX0uZ3JvdXAtZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zdGF0ZT11bmNoZWNrZWRdICope29wYWNpdHk6MX1AbWVkaWEoaG92ZXI6aG92ZXIpey5wZWVyLWhvdmVyXDp0ZXh0LWhpZ2hsaWdodGVkOmlzKDp3aGVyZSgucGVlcik6aG92ZXJ+Kil7Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LnBlZXItaG92ZXJcOnRleHQtdG9uZWQ6aXMoOndoZXJlKC5wZWVyKTpob3Zlcn4qKXtjb2xvcjp2YXIoLS11aS10ZXh0LXRvbmVkKX19LnBlZXItZm9jdXMtdmlzaWJsZVw6dGV4dC1oaWdobGlnaHRlZDppcyg6d2hlcmUoLnBlZXIpOmZvY3VzLXZpc2libGV+Kil7Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LnBlZXItZm9jdXMtdmlzaWJsZVw6dGV4dC10b25lZDppcyg6d2hlcmUoLnBlZXIpOmZvY3VzLXZpc2libGV+Kil7Y29sb3I6dmFyKC0tdWktdGV4dC10b25lZCl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjAgOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5zZWxlY3Rpb25cOmJnLXByaW1hcnlcLzIwIDo6c2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuc2VsZWN0aW9uXDpiZy1wcmltYXJ5XC8yMCA6Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDIwJSx0cmFuc3BhcmVudCl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjAgOjpzZWxlY3Rpb257YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjAlLHRyYW5zcGFyZW50KX19LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6OnNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDIwJSx0cmFuc3BhcmVudCl9LnNlbGVjdGlvblw6YmctcHJpbWFyeVwvMjA6OnNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAyMCUsdHJhbnNwYXJlbnQpfX0uZmlsZVw6bWUtMVwuNTo6ZmlsZS1zZWxlY3Rvci1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5maWxlXDpmb250LW1lZGl1bTo6ZmlsZS1zZWxlY3Rvci1idXR0b257LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmZpbGVcOnRleHQtbXV0ZWQ6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5maWxlXDpvdXRsaW5lLW5vbmU6OmZpbGUtc2VsZWN0b3ItYnV0dG9uey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0ucGxhY2Vob2xkZXJcOnRleHQtZGltbWVkOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKX0ucGxhY2Vob2xkZXJcOnRleHQtZGltbWVkOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS11aS10ZXh0LWRpbW1lZCl9LmJlZm9yZVw6cG9pbnRlci1ldmVudHMtbm9uZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5iZWZvcmVcOmFic29sdXRlOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3Bvc2l0aW9uOmFic29sdXRlfS5iZWZvcmVcOi1pbnNldC1weDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldDotMXB4fS5iZWZvcmVcOmluc2V0LXB4OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0OjFweH0uYmVmb3JlXDppbnNldC14LTA6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmJlZm9yZVw6aW5zZXQteC1weDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmU6MXB4fS5iZWZvcmVcOmluc2V0LXktMDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5iZWZvcmVcOmluc2V0LXktcHg6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtYmxvY2s6MXB4fS5iZWZvcmVcOnRvcC0wOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5iZWZvcmVcOi1yaWdodC0xXC41OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmJlZm9yZVw6LWxlZnQtMVwuNTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtsZWZ0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmJlZm9yZVw6bGVmdC0wOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uYmVmb3JlXDp6LTE6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ei1pbmRleDoxfS5iZWZvcmVcOnotMjpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt6LWluZGV4OjJ9LmJlZm9yZVw6ei1cWy0xXF06YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ei1pbmRleDotMX0uYmVmb3JlXDpoLTFcLzM6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OjMzLjMzMzMlfS5iZWZvcmVcOmgtZnVsbDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtoZWlnaHQ6MTAwJX0uYmVmb3JlXDp3LTFcLzM6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7d2lkdGg6MzMuMzMzMyV9LmJlZm9yZVw6dy1mdWxsOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjEwMCV9LmJlZm9yZVw6cm91bmRlZC1cW2luaGVyaXRcXTpiZWZvcmV7Ym9yZGVyLXJhZGl1czppbmhlcml0O2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmJlZm9yZVw6cm91bmRlZC1tZDpiZWZvcmV7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMS41KTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5iZWZvcmVcOmJnLWVsZXZhdGVkOmJlZm9yZSwuYmVmb3JlXDpiZy1lbGV2YXRlZFwvNzU6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1lbGV2YXRlZFwvNzU6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA3NSUsdHJhbnNwYXJlbnQpfX0uYmVmb3JlXDpiZy1lcnJvclwvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1lcnJvclwvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uYmVmb3JlXDpiZy1pbmZvXC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJlZm9yZVw6YmctaW5mb1wvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5iZWZvcmVcOmJnLXByaW1hcnlcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1wcmltYXJ5XC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmJlZm9yZVw6Ymctc2Vjb25kYXJ5XC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1zZWNvbmRhcnlcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5iZWZvcmVcOmJnLXN1Y2Nlc3NcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmVmb3JlXDpiZy1zdWNjZXNzXC8xMDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmJlZm9yZVw6Ymctd2FybmluZ1wvMTA6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZWZvcmVcOmJnLXdhcm5pbmdcLzEwOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uYmVmb3JlXDpiZy1ncmFkaWVudC10by1iOmJlZm9yZXstLXR3LWdyYWRpZW50LXBvc2l0aW9uOnRvIGJvdHRvbSBpbiBva2xhYn0uYmVmb3JlXDpiZy1ncmFkaWVudC10by1iOmJlZm9yZSwuYmVmb3JlXDpiZy1ncmFkaWVudC10by1yOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh2YXIoLS10dy1ncmFkaWVudC1zdG9wcykpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmJlZm9yZVw6YmctZ3JhZGllbnQtdG8tcjpiZWZvcmV7LS10dy1ncmFkaWVudC1wb3NpdGlvbjp0byByaWdodCBpbiBva2xhYn0uYmVmb3JlXDpiZy1cW3JhZGlhbC1ncmFkaWVudFwodmFyXCgtLXNwb3RsaWdodC1zaXplXClfdmFyXCgtLXNwb3RsaWdodC1zaXplXClfYXRfY2FsY1wodmFyXCgtLXNwb3RsaWdodC14XCwwcHhcKVwpX2NhbGNcKHZhclwoLS1zcG90bGlnaHQteVwsMHB4XClcKVwsdmFyXCgtLXNwb3RsaWdodC1jb2xvclwpXCx0cmFuc3BhcmVudF83MFwlXClcXTpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQodmFyKC0tc3BvdGxpZ2h0LXNpemUpIHZhcigtLXNwb3RsaWdodC1zaXplKSBhdCBjYWxjKHZhcigtLXNwb3RsaWdodC14LDBweCkpIGNhbGModmFyKC0tc3BvdGxpZ2h0LXksMHB4KSksdmFyKC0tc3BvdGxpZ2h0LWNvbG9yKSx0cmFuc3BhcmVudCA3MCUpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmJlZm9yZVw6ZnJvbS1kZWZhdWx0OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctZ3JhZGllbnQtZnJvbTp2YXIoLS11aS1iZyk7LS10dy1ncmFkaWVudC1zdG9wczp2YXIoLS10dy1ncmFkaWVudC12aWEtc3RvcHMsdmFyKC0tdHctZ3JhZGllbnQtcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LXRvKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikpfS5iZWZvcmVcOnRvLXRyYW5zcGFyZW50OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctZ3JhZGllbnQtdG86dHJhbnNwYXJlbnQ7LS10dy1ncmFkaWVudC1zdG9wczp2YXIoLS10dy1ncmFkaWVudC12aWEtc3RvcHMsdmFyKC0tdHctZ3JhZGllbnQtcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLHZhcigtLXR3LWdyYWRpZW50LXRvKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikpfS5iZWZvcmVcOnRyYW5zaXRpb24tY29sb3JzOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10bzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0uYmVmb3JlXDpjb250ZW50LVxbXFxcIlxcXCJcXTpiZWZvcmV7LS10dy1jb250ZW50OlwiXCI7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0ubm90LWZpcnN0LW9mLXR5cGVcOmJlZm9yZVw6bWUtMFwuNTpub3QoOmZpcnN0LW9mLXR5cGUpOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO21hcmdpbi1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5ub3QtZmlyc3Qtb2YtdHlwZVw6YmVmb3JlXDpjb250ZW50LVxbXCfCt1wnXF06bm90KDpmaXJzdC1vZi10eXBlKTpiZWZvcmV7LS10dy1jb250ZW50OiLCtyI7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOnBvaW50ZXItZXZlbnRzLW5vbmU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5hZnRlclw6YWJzb2x1dGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX0uYWZ0ZXJcOmluc2V0LXgtMDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0LWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5hZnRlclw6aW5zZXQteC0yXC41OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0uYWZ0ZXJcOmluc2V0LXktMDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0LWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmFmdGVyXDppbnNldC15LTBcLjU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uYWZ0ZXJcOi1zdGFydC0xXC41OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqLTEuNSl9LmFmdGVyXDpyaWdodC0wOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uYWZ0ZXJcOi1ib3R0b20tMjphZnRlcntib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSotMik7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJvdHRvbS0wOmFmdGVye2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjApO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpsZWZ0LTFcLzI6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtsZWZ0OjUwJX0uYWZ0ZXJcOnotMTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3otaW5kZXg6MX0uYWZ0ZXJcOnotMjphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3otaW5kZXg6Mn0uYWZ0ZXJcOm1zLTBcLjU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqLjUpfS5hZnRlclw6YmxvY2s6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtkaXNwbGF5OmJsb2NrfS5hZnRlclw6aGlkZGVuOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ZGlzcGxheTpub25lfS5hZnRlclw6c2l6ZS0xOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMSk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxKX0uYWZ0ZXJcOnNpemUtMVwuNTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5hZnRlclw6c2l6ZS0yOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMik7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0uYWZ0ZXJcOmgtMVwvMzphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDozMy4zMzMzJX0uYWZ0ZXJcOmgtZnVsbDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxMDAlfS5hZnRlclw6aC1weDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxcHh9LmFmdGVyXDp3LTFcLzM6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt3aWR0aDozMy4zMzMzJX0uYWZ0ZXJcOnctZnVsbDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjEwMCV9LmFmdGVyXDp3LXB4OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7d2lkdGg6MXB4fS5hZnRlclw6YW5pbWF0ZS1cW2Nhcm91c2VsLWludmVyc2VfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXTphZnRlcnthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6YW5pbWF0ZS1cW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF06YWZ0ZXJ7YW5pbWF0aW9uOmNhcm91c2VsIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDphbmltYXRlLVxbZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdOmFmdGVye2FuaW1hdGlvbjplbGFzdGljIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDphbmltYXRlLVxbc3dpbmdfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXTphZnRlcnthbmltYXRpb246c3dpbmcgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOnJvdW5kZWQtZnVsbDphZnRlcntib3JkZXItcmFkaXVzOjMuNDAyODJlKzM4cHg7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWRlZmF1bHQ6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWVycm9yOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpiZy1pbmZvOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWludmVydGVkOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpiZy1wcmltYXJ5OmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLXNlY29uZGFyeTphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLXN1Y2Nlc3M6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6Ymctd2FybmluZzphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmFmdGVyXDpiZy1ncmFkaWVudC10by1sOmFmdGVyey0tdHctZ3JhZGllbnQtcG9zaXRpb246dG8gbGVmdCBpbiBva2xhYn0uYWZ0ZXJcOmJnLWdyYWRpZW50LXRvLWw6YWZ0ZXIsLmFmdGVyXDpiZy1ncmFkaWVudC10by10OmFmdGVye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uYWZ0ZXJcOmJnLWdyYWRpZW50LXRvLXQ6YWZ0ZXJ7LS10dy1ncmFkaWVudC1wb3NpdGlvbjp0byB0b3AgaW4gb2tsYWJ9LmFmdGVyXDpmcm9tLWRlZmF1bHQ6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LWdyYWRpZW50LWZyb206dmFyKC0tdWktYmcpOy0tdHctZ3JhZGllbnQtc3RvcHM6dmFyKC0tdHctZ3JhZGllbnQtdmlhLXN0b3BzLHZhcigtLXR3LWdyYWRpZW50LXBvc2l0aW9uKSx2YXIoLS10dy1ncmFkaWVudC1mcm9tKSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKSx2YXIoLS10dy1ncmFkaWVudC10bykgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pKX0uYWZ0ZXJcOnRvLXRyYW5zcGFyZW50OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1ncmFkaWVudC10bzp0cmFuc3BhcmVudDstLXR3LWdyYWRpZW50LXN0b3BzOnZhcigtLXR3LWdyYWRpZW50LXZpYS1zdG9wcyx2YXIoLS10dy1ncmFkaWVudC1wb3NpdGlvbiksdmFyKC0tdHctZ3JhZGllbnQtZnJvbSkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbiksdmFyKC0tdHctZ3JhZGllbnQtdG8pIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKSl9LmFmdGVyXDp0ZXh0LWVycm9yOmFmdGVye2NvbG9yOnZhcigtLXVpLWVycm9yKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6dHJhbnNpdGlvbi1jb2xvcnM6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG87dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSl9LmFmdGVyXDpjb250ZW50LVxbXCdcKlwnXF06YWZ0ZXJ7LS10dy1jb250ZW50OiIqIjtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5hZnRlclw6Y29udGVudC1cW1xcXCJcXFwiXF06YWZ0ZXJ7LS10dy1jb250ZW50OlwiXCI7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX06aXMoLlwqXDpub3QtbGFzdFw6YWZ0ZXJcOmFic29sdXRlPiopOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX06aXMoLlwqXDpub3QtbGFzdFw6YWZ0ZXJcOmluc2V0LXgtMT4qKTpub3QoOmxhc3QtY2hpbGQpOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMSl9OmlzKC5cKlw6bm90LWxhc3RcOmFmdGVyXDpib3R0b20tMD4qKTpub3QoOmxhc3QtY2hpbGQpOmFmdGVye2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjApO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9OmlzKC5cKlw6bm90LWxhc3RcOmFmdGVyXDpoLXB4PiopOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtoZWlnaHQ6MXB4fTppcyguXCpcOm5vdC1sYXN0XDphZnRlclw6YmctYm9yZGVyPiopOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1ib3JkZXIpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmZpcnN0XDptZS0wOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqMCl9OmlzKC5cKlw6Zmlyc3RcOm10LTA+Kik6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5ub3Qtb25seVw6Zmlyc3RcOnJvdW5kZWQtZS1ub25lOm5vdCg6b25seS1jaGlsZCk6Zmlyc3QtY2hpbGR7Ym9yZGVyLWVuZC1lbmQtcmFkaXVzOjA7Ym9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6MH0ubm90LW9ubHlcOmZpcnN0XDpyb3VuZGVkLWItbm9uZTpub3QoOm9ubHktY2hpbGQpOmZpcnN0LWNoaWxke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5sYXN0XDpib3JkZXItYi0wOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MH06aXMoLlwqXDpsYXN0XDptYi0wPiopOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5ub3Qtb25seVw6bGFzdFw6cm91bmRlZC1zLW5vbmU6bm90KDpvbmx5LWNoaWxkKTpsYXN0LWNoaWxke2JvcmRlci1lbmQtc3RhcnQtcmFkaXVzOjA7Ym9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czowfS5ub3Qtb25seVw6bGFzdFw6cm91bmRlZC10LW5vbmU6bm90KDpvbmx5LWNoaWxkKTpsYXN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5maXJzdC1vZi10eXBlXDpyb3VuZGVkLXMtbGc6Zmlyc3Qtb2YtdHlwZXtib3JkZXItZW5kLXN0YXJ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMik7Ym9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMil9LmZpcnN0LW9mLXR5cGVcOnJvdW5kZWQtdC1sZzpmaXJzdC1vZi10eXBle2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoyKX0ubGFzdC1vZi10eXBlXDpyb3VuZGVkLWUtbGc6bGFzdC1vZi10eXBle2JvcmRlci1lbmQtZW5kLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMik7Ym9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfS5sYXN0LW9mLXR5cGVcOnJvdW5kZWQtYi1sZzpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMik7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS11aS1yYWRpdXMpKjIpfUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDpzY2FsZS0xMTU6aG92ZXJ7LS10dy1zY2FsZS14OjExNSU7LS10dy1zY2FsZS15OjExNSU7LS10dy1zY2FsZS16OjExNSU7c2NhbGU6dmFyKC0tdHctc2NhbGUteCkgdmFyKC0tdHctc2NhbGUteSl9LmhvdmVyXDpiZy1hY2NlbnRlZFwvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1hY2NlbnRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWFjY2VudGVkXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1hY2NlbnRlZCkgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1kZWZhdWx0XC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctZGVmYXVsdFwvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmcpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmctZWxldmF0ZWQ6aG92ZXIsLmhvdmVyXDpiZy1lbGV2YXRlZFwvMjU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVsZXZhdGVkXC8yNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgMjUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lbGV2YXRlZFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVsZXZhdGVkXC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgNTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC8xNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1lcnJvclwvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWVycm9yXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgOTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1pbmZvXC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1pbmZvXC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLWluZm9cLzE1OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLWluZm9cLzE1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDE1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmctaW5mb1wvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctaW5mb1wvNzU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1pbmZvXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1pbmZvXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA5MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLWludmVydGVkXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctaW52ZXJ0ZWRcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWludmVydGVkKSA5MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXByaW1hcnlcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXByaW1hcnlcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmctcHJpbWFyeVwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctcHJpbWFyeVwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1wcmltYXJ5XC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1wcmltYXJ5XC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXByaW1hcnlcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXByaW1hcnlcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDkwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc2Vjb25kYXJ5XC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXNlY29uZGFyeVwvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXNlY29uZGFyeVwvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzE1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzc1OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctc2Vjb25kYXJ5XC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDc1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc2Vjb25kYXJ5XC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXNlY29uZGFyeVwvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA5MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXN1Y2Nlc3NcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXN1Y2Nlc3NcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc3VjY2Vzc1wvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctc3VjY2Vzc1wvMTU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1zdWNjZXNzXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1zdWNjZXNzXC83NTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXN1Y2Nlc3NcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXN1Y2Nlc3NcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDkwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctd2FybmluZ1wvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctd2FybmluZ1wvMTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy13YXJuaW5nXC8xNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy13YXJuaW5nXC8xNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxNSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXdhcm5pbmdcLzc1OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXdhcm5pbmdcLzc1OmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDc1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctd2FybmluZ1wvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctd2FybmluZ1wvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgOTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LWRlZmF1bHQ6aG92ZXJ7Y29sb3I6dmFyKC0tdWktdGV4dCl9LmhvdmVyXDp0ZXh0LWVycm9yXC83NTpob3Zlcntjb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOnRleHQtZXJyb3JcLzc1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LWhpZ2hsaWdodGVkOmhvdmVye2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5ob3Zlclw6dGV4dC1pbmZvXC83NTpob3Zlcntjb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6dGV4dC1pbmZvXC83NTpob3Zlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LXByaW1hcnlcLzc1OmhvdmVye2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDp0ZXh0LXByaW1hcnlcLzc1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOnRleHQtc2Vjb25kYXJ5XC83NTpob3Zlcntjb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDp0ZXh0LXNlY29uZGFyeVwvNzU6aG92ZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LXN1Y2Nlc3NcLzc1OmhvdmVye2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDp0ZXh0LXN1Y2Nlc3NcLzc1OmhvdmVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA3NSUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOnRleHQtd2FybmluZ1wvNzU6aG92ZXJ7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOnRleHQtd2FybmluZ1wvNzU6aG92ZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDc1JSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6dW5kZXJsaW5lOmhvdmVye3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX0uaG92ZXJcOnJpbmctYWNjZW50ZWQ6aG92ZXJ7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWJvcmRlci1hY2NlbnRlZCl9LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWVycm9yXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1lcnJvclwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1lcnJvclwvMjA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctZXJyb3JcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAyMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctaW5mb1wvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctaW5mb1wvMjA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAyMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctaW52ZXJ0ZWRcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWludmVydGVkXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1pbnZlcnRlZCkgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctcHJpbWFyeVwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6YmctcHJpbWFyeVwvMjA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXNlY29uZGFyeVwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXNlY29uZGFyeVwvMTA6aG92ZXI6bm90KFtkYXRhLXNlbGVjdGVkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDIwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXN1Y2Nlc3NcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXN1Y2Nlc3NcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDIwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8xMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXdhcm5pbmdcLzEwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDEwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8yMDpob3Zlcjpub3QoW2RhdGEtc2VsZWN0ZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXdhcm5pbmdcLzIwOmhvdmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDIwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTA6aG92ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJlZm9yZVw6YmctZWxldmF0ZWRcLzUwOmhvdmVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgNTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDphZnRlclw6YmctXCgtLXVpLWJvcmRlci1hY2NlbnRlZFwpOmhvdmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfX0uZm9jdXNcOmJnLWFjY2VudGVkOmZvY3VzLC5mb2N1c1w6YmctYWNjZW50ZWRcLzUwOmZvY3Vze2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzXDpiZy1hY2NlbnRlZFwvNTA6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctYWNjZW50ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1c1w6YmctZWxldmF0ZWQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9LmZvY3VzXDpyaW5nLTI6Zm9jdXN7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LmZvY3VzXDpyaW5nLWVycm9yOmZvY3Vzey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1lcnJvcil9LmZvY3VzXDpyaW5nLWluZm86Zm9jdXN7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5mb2N1c1w6cmluZy1pbnZlcnRlZDpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0uZm9jdXNcOnJpbmctcHJpbWFyeTpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmZvY3VzXDpyaW5nLXNlY29uZGFyeTpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZm9jdXNcOnJpbmctc3VjY2Vzczpmb2N1c3stLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmZvY3VzXDpyaW5nLXdhcm5pbmc6Zm9jdXN7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5mb2N1c1w6b3V0bGluZS1ub25lOmZvY3Vzey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uZm9jdXNcOnJpbmctaW5zZXQ6Zm9jdXN7LS10dy1yaW5nLWluc2V0Omluc2V0fUBtZWRpYShob3Zlcjpob3Zlcil7Lmdyb3VwLWhvdmVyXDpmb2N1c1w6YmctYWNjZW50ZWQ6aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKik6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1hY2NlbnRlZCl9fS5mb2N1cy12aXNpYmxlXDp6LVxbMVxdOmZvY3VzLXZpc2libGV7ei1pbmRleDoxfS5mb2N1cy12aXNpYmxlXDpiZy1hY2NlbnRlZFwvNzU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWFjY2VudGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1hY2NlbnRlZFwvNzU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1hY2NlbnRlZCkgNzUlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLWRlZmF1bHRcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctZGVmYXVsdFwvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZykgMTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLWVsZXZhdGVkOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9LmZvY3VzLXZpc2libGVcOmJnLWVycm9yXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLWVycm9yXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6YmctZXJyb3JcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctZXJyb3JcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDE1JSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpiZy1pbmZvXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctaW5mb1wvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6YmctaW5mb1wvMTU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLWluZm9cLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTUlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLXByaW1hcnlcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1wcmltYXJ5XC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpiZy1wcmltYXJ5XC8xNTpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6YmctcHJpbWFyeVwvMTU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAxNSUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctc2Vjb25kYXJ5XC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1zZWNvbmRhcnlcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctc2Vjb25kYXJ5XC8xNTpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1zZWNvbmRhcnlcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxNSUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctc3VjY2Vzc1wvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLXN1Y2Nlc3NcLzEwOmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOmJnLXN1Y2Nlc3NcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpiZy1zdWNjZXNzXC8xNTpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDE1JSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpiZy13YXJuaW5nXC8xMDpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6Ymctd2FybmluZ1wvMTA6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ymctd2FybmluZ1wvMTU6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOmJnLXdhcm5pbmdcLzE1OmZvY3VzLXZpc2libGV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTUlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOnJpbmctMjpmb2N1cy12aXNpYmxley0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5mb2N1cy12aXNpYmxlXDpyaW5nLWVycm9yOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX0uZm9jdXMtdmlzaWJsZVw6cmluZy1pbmZvOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5mb2N1cy12aXNpYmxlXDpyaW5nLWludmVydGVkOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWJvcmRlci1pbnZlcnRlZCl9LmZvY3VzLXZpc2libGVcOnJpbmctcHJpbWFyeTpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZm9jdXMtdmlzaWJsZVw6cmluZy1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZm9jdXMtdmlzaWJsZVw6cmluZy1zdWNjZXNzOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5mb2N1cy12aXNpYmxlXDpyaW5nLXdhcm5pbmc6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktd2FybmluZyl9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtMjpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtb2Zmc2V0LTI6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDoycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtZXJyb3I6Zm9jdXMtdmlzaWJsZSwuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1lcnJvclwvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLWVycm9yXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA1MCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1pbmZvOmZvY3VzLXZpc2libGUsLmZvY3VzLXZpc2libGVcOm91dGxpbmUtaW5mb1wvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOm91dGxpbmUtaW5mb1wvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA1MCUsdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1pbnZlcnRlZDpmb2N1cy12aXNpYmxlLC5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLWludmVydGVkXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLWludmVydGVkXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJvcmRlci1pbnZlcnRlZCkgNTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOm91dGxpbmUtcHJpbWFyeTpmb2N1cy12aXNpYmxlLC5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXByaW1hcnlcLzUwOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXByaW1hcnlcLzUwOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNTAlLHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOm91dGxpbmUtc2Vjb25kYXJ5OmZvY3VzLXZpc2libGUsLmZvY3VzLXZpc2libGVcOm91dGxpbmUtc2Vjb25kYXJ5XC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXNlY29uZGFyeVwvNTA6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXN1Y2Nlc3M6Zm9jdXMtdmlzaWJsZSwuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1zdWNjZXNzXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS1zdWNjZXNzXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXdhcm5pbmc6Zm9jdXMtdmlzaWJsZSwuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS13YXJuaW5nXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZm9jdXMtdmlzaWJsZVw6b3V0bGluZS13YXJuaW5nXC81MDpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDUwJSx0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLW5vbmU6Zm9jdXMtdmlzaWJsZXstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LmZvY3VzLXZpc2libGVcOnJpbmctaW5zZXQ6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctaW5zZXQ6aW5zZXR9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy0yOmZvY3VzLXZpc2libGU6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy1lcnJvcjpmb2N1cy12aXNpYmxlOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1lcnJvcil9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy1pbmZvOmZvY3VzLXZpc2libGU6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5mb2N1cy12aXNpYmxlXDpiZWZvcmVcOnJpbmctaW52ZXJ0ZWQ6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWludmVydGVkKX0uZm9jdXMtdmlzaWJsZVw6YmVmb3JlXDpyaW5nLXByaW1hcnk6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZm9jdXMtdmlzaWJsZVw6YmVmb3JlXDpyaW5nLXN1Y2Nlc3M6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmZvY3VzLXZpc2libGVcOmJlZm9yZVw6cmluZy13YXJuaW5nOmZvY3VzLXZpc2libGU6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5mb2N1cy12aXNpYmxlXDpiZWZvcmVcOnJpbmctaW5zZXQ6Zm9jdXMtdmlzaWJsZTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXJpbmctaW5zZXQ6aW5zZXR9LmFjdGl2ZVw6YmctYWNjZW50ZWRcLzc1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWFjY2VudGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWFjY2VudGVkXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctYWNjZW50ZWQpIDc1JSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOmJnLWVsZXZhdGVkOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX0uYWN0aXZlXDpiZy1lcnJvclwvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6YmctZXJyb3JcLzEwOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctZXJyb3JcLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWVycm9yXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDE1JSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOmJnLWVycm9yXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1lcnJvclwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbmZvXC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWluZm9cLzEwOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbmZvXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWluZm9cLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxNSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbmZvXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLWluZm9cLzc1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1pbnZlcnRlZFwvOTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6YmctaW52ZXJ0ZWRcLzkwOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1pbnZlcnRlZCkgOTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctcHJpbWFyeVwvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1wcmltYXJ5XC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctcHJpbWFyeVwvMTU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1wcmltYXJ5XC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6YmctcHJpbWFyeVwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1wcmltYXJ5XC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc2Vjb25kYXJ5XC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6Ymctc2Vjb25kYXJ5XC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDpiZy1zZWNvbmRhcnlcLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zZWNvbmRhcnlcLzE1OmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDE1JSx0cmFuc3BhcmVudCl9fS5hY3RpdmVcOmJnLXNlY29uZGFyeVwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOmJnLXNlY29uZGFyeVwvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc3VjY2Vzc1wvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zdWNjZXNzXC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc3VjY2Vzc1wvMTU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zdWNjZXNzXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctc3VjY2Vzc1wvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy1zdWNjZXNzXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctd2FybmluZ1wvMTA6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy13YXJuaW5nXC8xMDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctd2FybmluZ1wvMTU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy13YXJuaW5nXC8xNTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6Ymctd2FybmluZ1wvNzU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDpiZy13YXJuaW5nXC83NTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1kZWZhdWx0OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS10ZXh0KX0uYWN0aXZlXDp0ZXh0LWVycm9yXC83NTphY3RpdmV7Y29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6dGV4dC1lcnJvclwvNzU6YWN0aXZle2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1pbmZvXC83NTphY3RpdmV7Y29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDp0ZXh0LWluZm9cLzc1OmFjdGl2ZXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1wcmltYXJ5XC83NTphY3RpdmV7Y29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYWN0aXZlXDp0ZXh0LXByaW1hcnlcLzc1OmFjdGl2ZXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNzUlLHRyYW5zcGFyZW50KX19LmFjdGl2ZVw6dGV4dC1zZWNvbmRhcnlcLzc1OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFjdGl2ZVw6dGV4dC1zZWNvbmRhcnlcLzc1OmFjdGl2ZXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDp0ZXh0LXN1Y2Nlc3NcLzc1OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOnRleHQtc3VjY2Vzc1wvNzU6YWN0aXZle2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSA3NSUsdHJhbnNwYXJlbnQpfX0uYWN0aXZlXDp0ZXh0LXdhcm5pbmdcLzc1OmFjdGl2ZXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hY3RpdmVcOnRleHQtd2FybmluZ1wvNzU6YWN0aXZle2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA3NSUsdHJhbnNwYXJlbnQpfX0uZGlzYWJsZWRcOnBvaW50ZXItZXZlbnRzLW5vbmU6ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX0uZGlzYWJsZWRcOmN1cnNvci1kZWZhdWx0OmRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOmJnLWRlZmF1bHQ6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZyl9LmRpc2FibGVkXDpiZy1lbGV2YXRlZDpkaXNhYmxlZCwuZGlzYWJsZWRcOmJnLWVsZXZhdGVkXC81MDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kaXNhYmxlZFw6YmctZWxldmF0ZWRcLzUwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGlzYWJsZWRcOmJnLWVycm9yOmRpc2FibGVkLC5kaXNhYmxlZFw6YmctZXJyb3JcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRpc2FibGVkXDpiZy1lcnJvclwvMTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6YmctaW5mbzpkaXNhYmxlZCwuZGlzYWJsZWRcOmJnLWluZm9cLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGlzYWJsZWRcOmJnLWluZm9cLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6YmctaW52ZXJ0ZWQ6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmRpc2FibGVkXDpiZy1wcmltYXJ5OmRpc2FibGVkLC5kaXNhYmxlZFw6YmctcHJpbWFyeVwvMTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kaXNhYmxlZFw6YmctcHJpbWFyeVwvMTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmRpc2FibGVkXDpiZy1zZWNvbmRhcnk6ZGlzYWJsZWQsLmRpc2FibGVkXDpiZy1zZWNvbmRhcnlcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kaXNhYmxlZFw6Ymctc2Vjb25kYXJ5XC8xMDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6Ymctc3VjY2VzczpkaXNhYmxlZCwuZGlzYWJsZWRcOmJnLXN1Y2Nlc3NcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGlzYWJsZWRcOmJnLXN1Y2Nlc3NcLzEwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5kaXNhYmxlZFw6YmctdHJhbnNwYXJlbnQ6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZGlzYWJsZWRcOmJnLXdhcm5pbmc6ZGlzYWJsZWQsLmRpc2FibGVkXDpiZy13YXJuaW5nXC8xMDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRpc2FibGVkXDpiZy13YXJuaW5nXC8xMDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGlzYWJsZWRcOnRleHQtZXJyb3I6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5kaXNhYmxlZFw6dGV4dC1pbmZvOmRpc2FibGVke2NvbG9yOnZhcigtLXVpLWluZm8pfS5kaXNhYmxlZFw6dGV4dC1tdXRlZDpkaXNhYmxlZHtjb2xvcjp2YXIoLS11aS10ZXh0LW11dGVkKX0uZGlzYWJsZWRcOnRleHQtcHJpbWFyeTpkaXNhYmxlZHtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZGlzYWJsZWRcOnRleHQtc2Vjb25kYXJ5OmRpc2FibGVke2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRpc2FibGVkXDp0ZXh0LXN1Y2Nlc3M6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmRpc2FibGVkXDp0ZXh0LXdhcm5pbmc6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tdWktd2FybmluZyl9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9LmRpc2FibGVkXDpvcGFjaXR5LTc1OmRpc2FibGVke29wYWNpdHk6Ljc1fUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDpkaXNhYmxlZFw6YmctdHJhbnNwYXJlbnQ6aG92ZXI6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZGlzYWJsZWRcOmhvdmVyXDp0ZXh0LW11dGVkOmRpc2FibGVkOmhvdmVye2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfX0uaGFzLWZvY3VzXDpiZy1lbGV2YXRlZDpoYXMoOmZvY3VzKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX0uaGFzLWZvY3VzLXZpc2libGVcOnotXFsxXF06aGFzKDpmb2N1cy12aXNpYmxlKXt6LWluZGV4OjF9Lmhhcy1mb2N1cy12aXNpYmxlXDpyaW5nLTI6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDJweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctZXJyb3I6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktZXJyb3IpfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1pbmZvOmhhcyg6Zm9jdXMtdmlzaWJsZSl7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWluZm8pfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1pbnZlcnRlZDpoYXMoOmZvY3VzLXZpc2libGUpey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1ib3JkZXItaW52ZXJ0ZWQpfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1wcmltYXJ5Omhhcyg6Zm9jdXMtdmlzaWJsZSl7LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5oYXMtZm9jdXMtdmlzaWJsZVw6cmluZy1zZWNvbmRhcnk6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctc3VjY2VzczpoYXMoOmZvY3VzLXZpc2libGUpey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctd2FybmluZzpoYXMoOmZvY3VzLXZpc2libGUpey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uaGFzLWZvY3VzLXZpc2libGVcOnJpbmctaW5zZXQ6aGFzKDpmb2N1cy12aXNpYmxlKXstLXR3LXJpbmctaW5zZXQ6aW5zZXR9Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6ei1cWzFcXTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe3otaW5kZXg6MX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItZXJyb3I6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKSwuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItZXJyb3JcLzUwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1lcnJvclwvNTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSA1MCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItaW5mbzpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1pbmZvXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1pbmZvXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgNTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLWludmVydGVkOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSksLmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLWludmVydGVkXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItaW52ZXJ0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLWludmVydGVkXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYm9yZGVyLWludmVydGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItcHJpbWFyeTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1wcmltYXJ5XC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1wcmltYXJ5XC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgNTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLXNlY29uZGFyeTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1zZWNvbmRhcnlcLzUwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItc2Vjb25kYXJ5XC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSA1MCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItc3VjY2VzczpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pLC5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1zdWNjZXNzXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJvcmRlci1zdWNjZXNzXC81MDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ym9yZGVyLXdhcm5pbmc6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKSwuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItd2FybmluZ1wvNTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtib3JkZXItY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItd2FybmluZ1wvNTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDUwJSx0cmFuc3BhcmVudCl9fS5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLWVsZXZhdGVkOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6YmctZXJyb3JcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1lcnJvclwvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6YmctaW5mb1wvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmhhcy1kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6YmctaW5mb1wvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5XC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5XC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXNlY29uZGFyeVwvMTA6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1zZWNvbmRhcnlcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1zdWNjZXNzXC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1zdWNjZXNzXC8xMDpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXdhcm5pbmdcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXdhcm5pbmdcLzEwOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmN1cnNvci1ub3QtYWxsb3dlZFthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpub3QtYWxsb3dlZH0uYXJpYS1kaXNhYmxlZFw6YmctZGVmYXVsdFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpfS5hcmlhLWRpc2FibGVkXDpiZy1lbGV2YXRlZFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpfS5hcmlhLWRpc2FibGVkXDpiZy1lcnJvclthcmlhLWRpc2FibGVkPXRydWVdLC5hcmlhLWRpc2FibGVkXDpiZy1lcnJvclwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hcmlhLWRpc2FibGVkXDpiZy1lcnJvclwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmJnLWluZm9bYXJpYS1kaXNhYmxlZD10cnVlXSwuYXJpYS1kaXNhYmxlZFw6YmctaW5mb1wvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLWluZm9cLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmJnLWludmVydGVkW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmFyaWEtZGlzYWJsZWRcOmJnLXByaW1hcnlbYXJpYS1kaXNhYmxlZD10cnVlXSwuYXJpYS1kaXNhYmxlZFw6YmctcHJpbWFyeVwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLXByaW1hcnlcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOmJnLXNlY29uZGFyeVthcmlhLWRpc2FibGVkPXRydWVdLC5hcmlhLWRpc2FibGVkXDpiZy1zZWNvbmRhcnlcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLXNlY29uZGFyeVwvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5hcmlhLWRpc2FibGVkXDpiZy1zdWNjZXNzW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0sLmFyaWEtZGlzYWJsZWRcOmJnLXN1Y2Nlc3NcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5hcmlhLWRpc2FibGVkXDpiZy1zdWNjZXNzXC8xMFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5hcmlhLWRpc2FibGVkXDpiZy10cmFuc3BhcmVudFthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmFyaWEtZGlzYWJsZWRcOmJnLXdhcm5pbmdbYXJpYS1kaXNhYmxlZD10cnVlXSwuYXJpYS1kaXNhYmxlZFw6Ymctd2FybmluZ1wvMTBbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmFyaWEtZGlzYWJsZWRcOmJnLXdhcm5pbmdcLzEwW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2FybmluZykgMTAlLHRyYW5zcGFyZW50KX19LmFyaWEtZGlzYWJsZWRcOnRleHQtZXJyb3JbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjp2YXIoLS11aS1lcnJvcil9LmFyaWEtZGlzYWJsZWRcOnRleHQtaW5mb1thcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLWluZm8pfS5hcmlhLWRpc2FibGVkXDp0ZXh0LW11dGVkW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LmFyaWEtZGlzYWJsZWRcOnRleHQtcHJpbWFyeVthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5hcmlhLWRpc2FibGVkXDp0ZXh0LXNlY29uZGFyeVthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmFyaWEtZGlzYWJsZWRcOnRleHQtc3VjY2Vzc1thcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5hcmlhLWRpc2FibGVkXDp0ZXh0LXdhcm5pbmdbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uYXJpYS1kaXNhYmxlZFw6b3BhY2l0eS03NVthcmlhLWRpc2FibGVkPXRydWVde29wYWNpdHk6Ljc1fUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDphcmlhLWRpc2FibGVkXDpiZy10cmFuc3BhcmVudDpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6IzAwMDB9fS5kYXRhLWRpc2FibGVkXDpjdXJzb3Itbm90LWFsbG93ZWRbZGF0YS1kaXNhYmxlZF17Y3Vyc29yOm5vdC1hbGxvd2VkfS5kYXRhLWRpc2FibGVkXDp0ZXh0LW11dGVkW2RhdGEtZGlzYWJsZWRde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLWRpc2FibGVkXDpvcGFjaXR5LTc1W2RhdGEtZGlzYWJsZWRde29wYWNpdHk6Ljc1fS5kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LWVycm9yW2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLWVycm9yKX0uZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLWhpZ2hsaWdodGVkXXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZGF0YS1oaWdobGlnaHRlZFw6dGV4dC1pbmZvW2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLWluZm8pfS5kYXRhLWhpZ2hsaWdodGVkXDp0ZXh0LXByaW1hcnlbZGF0YS1oaWdobGlnaHRlZF17Y29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LmRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtc2Vjb25kYXJ5W2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRhdGEtaGlnaGxpZ2h0ZWRcOnRleHQtc3VjY2Vzc1tkYXRhLWhpZ2hsaWdodGVkXXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uZGF0YS1oaWdobGlnaHRlZFw6dGV4dC13YXJuaW5nW2RhdGEtaGlnaGxpZ2h0ZWRde2NvbG9yOnZhcigtLXVpLXdhcm5pbmcpfS5kYXRhLWhpZ2hsaWdodGVkXDpub3QtZGF0YS1kaXNhYmxlZFw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLWhpZ2hsaWdodGVkXTpub3QoW2RhdGEtZGlzYWJsZWRdKXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1pbmZvXC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtaGlnaGxpZ2h0ZWRcOmJlZm9yZVw6YmctaW5mb1wvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLWhpZ2hsaWdodGVkXDpiZWZvcmVcOmJnLXByaW1hcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1wcmltYXJ5XC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtaGlnaGxpZ2h0ZWRcOmJlZm9yZVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1zZWNvbmRhcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLWhpZ2hsaWdodGVkXDpiZWZvcmVcOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1oaWdobGlnaHRlZFw6YmVmb3JlXDpiZy1zdWNjZXNzXC8xMFtkYXRhLWhpZ2hsaWdodGVkXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtaGlnaGxpZ2h0ZWRcOmJlZm9yZVw6Ymctd2FybmluZ1wvMTBbZGF0YS1oaWdobGlnaHRlZF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLWhpZ2hsaWdodGVkXDpiZWZvcmVcOmJnLXdhcm5pbmdcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRdOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1oaWdobGlnaHRlZFw6bm90LWRhdGEtZGlzYWJsZWRcOmJlZm9yZVw6YmctZWxldmF0ZWRcLzUwW2RhdGEtaGlnaGxpZ2h0ZWRdOm5vdChbZGF0YS1kaXNhYmxlZF0pOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtaGlnaGxpZ2h0ZWRcOm5vdC1kYXRhLWRpc2FibGVkXDpiZWZvcmVcOmJnLWVsZXZhdGVkXC81MFtkYXRhLWhpZ2hsaWdodGVkXTpub3QoW2RhdGEtZGlzYWJsZWRdKTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLWludmFsaWRcOnRleHQtZXJyb3JbZGF0YS1pbnZhbGlkXXtjb2xvcjp2YXIoLS11aS1lcnJvcil9LmRhdGEtcGxhY2Vob2xkZXJcOnRleHQtZGltbWVkW2RhdGEtcGxhY2Vob2xkZXJde2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKX0uZGF0YS10b2RheVw6Zm9udC1zZW1pYm9sZFtkYXRhLXRvZGF5XXstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCl9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1lcnJvcltkYXRhLXRvZGF5XTpub3QoW2RhdGEtc2VsZWN0ZWRdKXtjb2xvcjp2YXIoLS11aS1lcnJvcil9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLXRvZGF5XTpub3QoW2RhdGEtc2VsZWN0ZWRdKXtjb2xvcjp2YXIoLS11aS10ZXh0LWhpZ2hsaWdodGVkKX0uZGF0YS10b2RheVw6bm90LWRhdGEtXFtzZWxlY3RlZFxdXDp0ZXh0LWluZm9bZGF0YS10b2RheV06bm90KFtkYXRhLXNlbGVjdGVkXSl7Y29sb3I6dmFyKC0tdWktaW5mbyl9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1wcmltYXJ5W2RhdGEtdG9kYXldOm5vdChbZGF0YS1zZWxlY3RlZF0pe2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5kYXRhLXRvZGF5XDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtc2Vjb25kYXJ5W2RhdGEtdG9kYXldOm5vdChbZGF0YS1zZWxlY3RlZF0pe2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRhdGEtdG9kYXlcOm5vdC1kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1zdWNjZXNzW2RhdGEtdG9kYXldOm5vdChbZGF0YS1zZWxlY3RlZF0pe2NvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5kYXRhLXRvZGF5XDpub3QtZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtd2FybmluZ1tkYXRhLXRvZGF5XTpub3QoW2RhdGEtc2VsZWN0ZWRdKXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uZGF0YS11bmF2YWlsYWJsZVw6cG9pbnRlci1ldmVudHMtbm9uZVtkYXRhLXVuYXZhaWxhYmxlXXtwb2ludGVyLWV2ZW50czpub25lfS5kYXRhLXVuYXZhaWxhYmxlXDp0ZXh0LW11dGVkW2RhdGEtdW5hdmFpbGFibGVde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLXVuYXZhaWxhYmxlXDpsaW5lLXRocm91Z2hbZGF0YS11bmF2YWlsYWJsZV17dGV4dC1kZWNvcmF0aW9uLWxpbmU6bGluZS10aHJvdWdofS5kYXRhLVxbZGlzYWJsZWRcXVw6Y3Vyc29yLW5vdC1hbGxvd2VkW2RhdGEtZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH0uZGF0YS1cW2Rpc2FibGVkXF1cOm9wYWNpdHktNzVbZGF0YS1kaXNhYmxlZF17b3BhY2l0eTouNzV9LmRhdGEtXFtkcmFnZ2luZ1w9dHJ1ZVxdXDpiZy1lbGV2YXRlZFwvMjVbZGF0YS1kcmFnZ2luZz10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbZHJhZ2dpbmdcPXRydWVcXVw6YmctZWxldmF0ZWRcLzI1W2RhdGEtZHJhZ2dpbmc9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbZXhwYW5kZWRcPXRydWVcXVw6aC1cKC0taGVpZ2h0XClbZGF0YS1leHBhbmRlZD10cnVlXXtoZWlnaHQ6dmFyKC0taGVpZ2h0KX06aXMoLmRhdGEtXFtmcm9udFw9ZmFsc2VcXVw6XCpcOnRyYW5zaXRpb24tb3BhY2l0eVtkYXRhLWZyb250PWZhbHNlXT4qKXt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpO3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX06aXMoLmRhdGEtXFtmcm9udFw9ZmFsc2VcXVw6XCpcOmR1cmF0aW9uLTEwMFtkYXRhLWZyb250PWZhbHNlXT4qKXstLXR3LWR1cmF0aW9uOi4xczt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZGF0YS1cW2V4cGFuZGVkXD1mYWxzZVxdXDpkYXRhLVxbZnJvbnRcPWZhbHNlXF1cOmgtXCgtLWZyb250LWhlaWdodFwpW2RhdGEtZXhwYW5kZWQ9ZmFsc2VdW2RhdGEtZnJvbnQ9ZmFsc2Vde2hlaWdodDp2YXIoLS1mcm9udC1oZWlnaHQpfTppcyguZGF0YS1cW2V4cGFuZGVkXD1mYWxzZVxdXDpkYXRhLVxbZnJvbnRcPWZhbHNlXF1cOlwqXDpvcGFjaXR5LTBbZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV0+Kil7b3BhY2l0eTowfS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctZXJyb3JcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1lcnJvclwvMTBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctZXJyb3JcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktZXJyb3IpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1lcnJvclwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDIwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW5mb1wvMTBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW5mb1wvMTBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1pbmZvXC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1pbmZvXC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAyMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLWludmVydGVkXC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW52ZXJ0ZWRcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWludmVydGVkKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLWludmVydGVkXC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWludmVydGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctaW52ZXJ0ZWRcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWludmVydGVkKSAyMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctcHJpbWFyeVwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6YmctcHJpbWFyeVwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy1zZWNvbmRhcnlcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8yMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXNlY29uZGFyeVwvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAyMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXN1Y2Nlc3MpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc3VjY2Vzc1wvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1zdWNjZXNzKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbaGlnaGxpZ2h0ZWRcXVw6Ymctc3VjY2Vzc1wvMjBbZGF0YS1oaWdobGlnaHRlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgMjAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtoaWdobGlnaHRlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLWhpZ2hsaWdodGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXdhcm5pbmdcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW2hpZ2hsaWdodGVkXF1cOmJnLXdhcm5pbmdcLzIwW2RhdGEtaGlnaGxpZ2h0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDIwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbbW90aW9uXD1mcm9tLWVuZFxdXDphbmltYXRlLVxbZW50ZXItZnJvbS1yaWdodF8yMDBtc19lYXNlXF1bZGF0YS1tb3Rpb249ZnJvbS1lbmRde2FuaW1hdGlvbjplbnRlci1mcm9tLXJpZ2h0IC4yc30uZGF0YS1cW21vdGlvblw9ZnJvbS1zdGFydFxdXDphbmltYXRlLVxbZW50ZXItZnJvbS1sZWZ0XzIwMG1zX2Vhc2VcXVtkYXRhLW1vdGlvbj1mcm9tLXN0YXJ0XXthbmltYXRpb246ZW50ZXItZnJvbS1sZWZ0IC4yc30uZGF0YS1cW21vdGlvblw9dG8tZW5kXF1cOmFuaW1hdGUtXFtleGl0LXRvLXJpZ2h0XzIwMG1zX2Vhc2VcXVtkYXRhLW1vdGlvbj10by1lbmRde2FuaW1hdGlvbjpleGl0LXRvLXJpZ2h0IC4yc30uZGF0YS1cW21vdGlvblw9dG8tc3RhcnRcXVw6YW5pbWF0ZS1cW2V4aXQtdG8tbGVmdF8yMDBtc19lYXNlXF1bZGF0YS1tb3Rpb249dG8tc3RhcnRde2FuaW1hdGlvbjpleGl0LXRvLWxlZnQgLjJzfS5kYXRhLVxbb3V0c2lkZS12aWV3XF1cOnRleHQtbXV0ZWRbZGF0YS1vdXRzaWRlLXZpZXdde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLVxbc2VnbWVudFw9ZGF5XF1cOnctOFtkYXRhLXNlZ21lbnQ9ZGF5XXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5kYXRhLVxbc2VnbWVudFw9ZGF5XF1cOnctOVtkYXRhLXNlZ21lbnQ9ZGF5XXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjkpfS5kYXRhLVxbc2VnbWVudFw9ZGF5XF1cOnctMTBbZGF0YS1zZWdtZW50PWRheV17d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9LmRhdGEtXFtzZWdtZW50XD1saXRlcmFsXF1cOnRleHQtbXV0ZWRbZGF0YS1zZWdtZW50PWxpdGVyYWxde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfS5kYXRhLVxbc2VnbWVudFw9bW9udGhcXVw6dy04W2RhdGEtc2VnbWVudD1tb250aF17d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uZGF0YS1cW3NlZ21lbnRcPW1vbnRoXF1cOnctOVtkYXRhLXNlZ21lbnQ9bW9udGhde3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOSl9LmRhdGEtXFtzZWdtZW50XD1tb250aFxdXDp3LTEwW2RhdGEtc2VnbWVudD1tb250aF0sLmRhdGEtXFtzZWdtZW50XD15ZWFyXF1cOnctMTBbZGF0YS1zZWdtZW50PXllYXJde3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTApfS5kYXRhLVxbc2VnbWVudFw9eWVhclxdXDp3LTExW2RhdGEtc2VnbWVudD15ZWFyXXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0uZGF0YS1cW3NlZ21lbnRcPXllYXJcXVw6dy0xMltkYXRhLXNlZ21lbnQ9eWVhcl17d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1kZWZhdWx0W2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmcpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6YmctZWxldmF0ZWRbZGF0YS1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1lcnJvcltkYXRhLXNlbGVjdGVkXSwuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWVycm9yXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6YmctZXJyb3JcLzEwW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWVycm9yKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWluZm9bZGF0YS1zZWxlY3RlZF0sLmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1pbmZvXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLWludmVydGVkW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctaW52ZXJ0ZWQpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6YmctcHJpbWFyeVtkYXRhLXNlbGVjdGVkXSwuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXByaW1hcnlcLzEwW2RhdGEtc2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5W2RhdGEtc2VsZWN0ZWRdLC5kYXRhLVxbc2VsZWN0ZWRcXVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXNlY29uZGFyeVwvMTBbZGF0YS1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc2Vjb25kYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXN1Y2Nlc3NbZGF0YS1zZWxlY3RlZF0sLmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy1zdWNjZXNzXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOmJnLXdhcm5pbmdbZGF0YS1zZWxlY3RlZF0sLmRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXdhcm5pbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpiZy13YXJuaW5nXC8xMFtkYXRhLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtZGVmYXVsdFtkYXRhLXNlbGVjdGVkXXtjb2xvcjp2YXIoLS11aS10ZXh0KX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtZXJyb3JbZGF0YS1zZWxlY3RlZF17Y29sb3I6dmFyKC0tdWktZXJyb3IpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1pbmZvW2RhdGEtc2VsZWN0ZWRde2NvbG9yOnZhcigtLXVpLWluZm8pfS5kYXRhLVxbc2VsZWN0ZWRcXVw6dGV4dC1pbnZlcnRlZFtkYXRhLXNlbGVjdGVkXXtjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtcHJpbWFyeVtkYXRhLXNlbGVjdGVkXXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZGF0YS1cW3NlbGVjdGVkXF1cOnRleHQtc2Vjb25kYXJ5W2RhdGEtc2VsZWN0ZWRde2NvbG9yOnZhcigtLXVpLXNlY29uZGFyeSl9LmRhdGEtXFtzZWxlY3RlZFxdXDp0ZXh0LXN1Y2Nlc3NbZGF0YS1zZWxlY3RlZF17Y29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9LmRhdGEtXFtzZWxlY3RlZFxdXDp0ZXh0LXdhcm5pbmdbZGF0YS1zZWxlY3RlZF17Y29sb3I6dmFyKC0tdWktd2FybmluZyl9LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1hY2NlbnRlZFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctZXJyb3JcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1lcnJvcil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctZXJyb3JcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1lcnJvclwvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLWVycm9yKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1lcnJvclwvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1lcnJvcikgNTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLWluZm9cLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1pbmZvKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1pbmZvXC8yNVtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWluZm8pIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1pbmZvXC81MFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktaW5mbyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctaW5mb1wvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1pbmZvKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctcHJpbWFyeVwvMjVbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXByaW1hcnlcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcHJpbWFyeSkgMjUlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXByaW1hcnlcLzUwW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1wcmltYXJ5XC81MFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXByaW1hcnkpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1zZWNvbmRhcnlcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXNlY29uZGFyeVwvMjVbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1zZWNvbmRhcnlcLzUwW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXNlY29uZGFyeVwvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zZWNvbmRhcnkpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy1zdWNjZXNzXC8yNVtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktc3VjY2Vzcyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctc3VjY2Vzc1wvMjVbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSAyNSUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctc3VjY2Vzc1wvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXN1Y2Nlc3NcLzUwW2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktc3VjY2VzcykgNTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzZWxlY3RlZFxdXDpyaW5nLXdhcm5pbmdcLzI1W2RhdGEtc2VsZWN0ZWRdey0tdHctcmluZy1jb2xvcjp2YXIoLS11aS13YXJuaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy13YXJuaW5nXC8yNVtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDI1JSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc2VsZWN0ZWRcXVw6cmluZy13YXJuaW5nXC81MFtkYXRhLXNlbGVjdGVkXXstLXR3LXJpbmctY29sb3I6dmFyKC0tdWktd2FybmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctd2FybmluZ1wvNTBbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13YXJuaW5nKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3NlbGVjdGVkXF1cOnJpbmctaW5zZXRbZGF0YS1zZWxlY3RlZF17LS10dy1yaW5nLWluc2V0Omluc2V0fS5kYXRhLVxbc2VsZWN0ZWRcPXRydWVcXVw6YmctZWxldmF0ZWRcLzUwW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3NlbGVjdGVkXD10cnVlXF1cOmJnLWVsZXZhdGVkXC81MFtkYXRhLXNlbGVjdGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLWJnLWVsZXZhdGVkKSA1MCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3N0YXRlXD1cXFwiYWN0aXZlXFxcIlxdXDpiZy1hY2NlbnRlZFtkYXRhLXN0YXRlPSciYWN0aXZlIidde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpfS5kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDpiZy1pbnZlcnRlZFtkYXRhLXN0YXRlPWFjdGl2ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtZXJyb3JbZGF0YS1zdGF0ZT1hY3RpdmVde2NvbG9yOnZhcigtLXVpLWVycm9yKX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLXN0YXRlPWFjdGl2ZV17Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtaW5mb1tkYXRhLXN0YXRlPWFjdGl2ZV17Y29sb3I6dmFyKC0tdWktaW5mbyl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnRleHQtaW52ZXJ0ZWRbZGF0YS1zdGF0ZT1hY3RpdmVde2NvbG9yOnZhcigtLXVpLXRleHQtaW52ZXJ0ZWQpfS5kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDp0ZXh0LXByaW1hcnlbZGF0YS1zdGF0ZT1hY3RpdmVde2NvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDp0ZXh0LXNlY29uZGFyeVtkYXRhLXN0YXRlPWFjdGl2ZV17Y29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6dGV4dC1zdWNjZXNzW2RhdGEtc3RhdGU9YWN0aXZlXXtjb2xvcjp2YXIoLS11aS1zdWNjZXNzKX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6dGV4dC13YXJuaW5nW2RhdGEtc3RhdGU9YWN0aXZlXXtjb2xvcjp2YXIoLS11aS13YXJuaW5nKX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRyYW5zbGF0ZS14LTNbZGF0YS1zdGF0ZT1jaGVja2VkXXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqMyk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0cmFuc2xhdGUteC0zXC41W2RhdGEtc3RhdGU9Y2hlY2tlZF17LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjMuNSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0cmFuc2xhdGUteC00W2RhdGEtc3RhdGU9Y2hlY2tlZF17LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dHJhbnNsYXRlLXgtNFwuNVtkYXRhLXN0YXRlPWNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0LjUpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dHJhbnNsYXRlLXgtNVtkYXRhLXN0YXRlPWNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLWVycm9yW2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcil9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1pbmZvW2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1pbmZvKX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLWludmVydGVkW2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1pbnZlcnRlZCl9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5W2RhdGEtc3RhdGU9Y2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXNlY29uZGFyeVtkYXRhLXN0YXRlPWNoZWNrZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc2Vjb25kYXJ5KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXN1Y2Nlc3NbZGF0YS1zdGF0ZT1jaGVja2VkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXN1Y2Nlc3MpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6Ymctd2FybmluZ1tkYXRhLXN0YXRlPWNoZWNrZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktd2FybmluZyl9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmFuaW1hdGUtXFthY2NvcmRpb24tdXBfMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOmFjY29yZGlvbi11cCAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmFuaW1hdGUtXFtjb2xsYXBzaWJsZS11cF8yMDBtc19lYXNlLW91dFxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246Y29sbGFwc2libGUtdXAgLjJzIGVhc2Utb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbZmFkZS1vdXRfMjAwbXNfZWFzZS1pblxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246ZmFkZS1vdXQgLjJzIGVhc2UtaW59LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmFuaW1hdGUtXFtzY2FsZS1vdXRfMTAwbXNfZWFzZS1pblxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246c2NhbGUtb3V0IC4xcyBlYXNlLWlufS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbc2NhbGUtb3V0XzIwMG1zX2Vhc2UtaW5cXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNjYWxlLW91dCAuMnMgZWFzZS1pbn0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1cW3NsaWRlLW91dC10by1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNsaWRlLW91dC10by1ib3R0b20gLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbc2xpZGUtb3V0LXRvLWxlZnRfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNsaWRlLW91dC10by1sZWZ0IC4ycyBlYXNlLWluLW91dH0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1cW3NsaWRlLW91dC10by1yaWdodF8yMDBtc19lYXNlLWluLW91dFxdW2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246c2xpZGUtb3V0LXRvLXJpZ2h0IC4ycyBlYXNlLWluLW91dH0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1cW3NsaWRlLW91dC10by10b3BfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOnNsaWRlLW91dC10by10b3AgLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLVxbdG9hc3QtY2xvc2VkXzIwMG1zX2Vhc2UtaW4tb3V0XF1bZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbjp0b2FzdC1jbG9zZWQgLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDpkYXRhLVxbZXhwYW5kZWRcPWZhbHNlXF1cOmRhdGEtXFtmcm9udFw9ZmFsc2VcXVw6YW5pbWF0ZS1cW3RvYXN0LWNvbGxhcHNlZC1jbG9zZWRfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPWNsb3NlZF1bZGF0YS1leHBhbmRlZD1mYWxzZV1bZGF0YS1mcm9udD1mYWxzZV17YW5pbWF0aW9uOnRvYXN0LWNvbGxhcHNlZC1jbG9zZWQgLjJzIGVhc2UtaW4tb3V0fS5kYXRhLVxbc3RhdGVcPWNvbGxhcHNlZFxdXDotcmlnaHQtXCgtLXNpZGViYXItd2lkdGhcKVtkYXRhLXN0YXRlPWNvbGxhcHNlZF17cmlnaHQ6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoKSotMSl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOi1sZWZ0LVwoLS1zaWRlYmFyLXdpZHRoXClbZGF0YS1zdGF0ZT1jb2xsYXBzZWRde2xlZnQ6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoKSotMSl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOnctXCgtLXNpZGViYXItd2lkdGgtaWNvblwpW2RhdGEtc3RhdGU9Y29sbGFwc2VkXXt3aWR0aDp2YXIoLS1zaWRlYmFyLXdpZHRoLWljb24pfS5kYXRhLVxbc3RhdGVcPWNvbGxhcHNlZFxdXDp3LTBbZGF0YS1zdGF0ZT1jb2xsYXBzZWRde3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMCl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOnctXFtjYWxjXCh2YXJcKC0tc2lkZWJhci13aWR0aC1pY29uXClcKy0tc3BhY2luZ1woOFwpXClcXVtkYXRhLXN0YXRlPWNvbGxhcHNlZF17d2lkdGg6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoLWljb24pICsgdmFyKC0tc3BhY2luZykqOCl9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOnctXFtjYWxjXCh2YXJcKC0tc2lkZWJhci13aWR0aC1pY29uXClcKy0tc3BhY2luZ1woOFwpXCsycHhcKVxdW2RhdGEtc3RhdGU9Y29sbGFwc2VkXXt3aWR0aDpjYWxjKHZhcigtLXNpZGViYXItd2lkdGgtaWNvbikgKyB2YXIoLS1zcGFjaW5nKSo4ICsgMnB4KX0uZGF0YS1cW3N0YXRlXD1jb2xsYXBzZWRcXVw6Y3Vyc29yLWUtcmVzaXplW2RhdGEtc3RhdGU9Y29sbGFwc2VkXXtjdXJzb3I6ZS1yZXNpemV9LmRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOmN1cnNvci13LXJlc2l6ZVtkYXRhLXN0YXRlPWNvbGxhcHNlZF17Y3Vyc29yOnctcmVzaXplfS5kYXRhLVxbc3RhdGVcPWRlbGF5ZWQtb3BlblxdXDphbmltYXRlLVxbc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPWRlbGF5ZWQtb3Blbl17YW5pbWF0aW9uOnNjYWxlLWluIC4xcyBlYXNlLW91dH0uZGF0YS1cW3N0YXRlXD1oaWRkZW5cXVw6YW5pbWF0ZS1cW2ZhZGUtb3V0XzEwMG1zX2Vhc2UtaW5cXVtkYXRhLXN0YXRlPWhpZGRlbl17YW5pbWF0aW9uOmZhZGUtb3V0IC4xcyBlYXNlLWlufS5kYXRhLVxbc3RhdGVcPWhpZGRlblxdXDpvcGFjaXR5LTBbZGF0YS1zdGF0ZT1oaWRkZW5de29wYWNpdHk6MH0uZGF0YS1cW3N0YXRlXD1pbmFjdGl2ZVxdXDp0ZXh0LW11dGVkW2RhdGEtc3RhdGU9aW5hY3RpdmVde2NvbG9yOnZhcigtLXVpLXRleHQtbXV0ZWQpfUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDpkYXRhLVxbc3RhdGVcPWluYWN0aXZlXF1cOm5vdC1kaXNhYmxlZFw6dGV4dC1kZWZhdWx0OmhvdmVyW2RhdGEtc3RhdGU9aW5hY3RpdmVdOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLXVpLXRleHQpfX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtjYXJvdXNlbC1pbnZlcnNlLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF1bZGF0YS1zdGF0ZT1pbmRldGVybWluYXRlXXthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZS12ZXJ0aWNhbCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtjYXJvdXNlbC1pbnZlcnNlXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF1bZGF0YS1zdGF0ZT1pbmRldGVybWluYXRlXXthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtjYXJvdXNlbC12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOmNhcm91c2VsLXZlcnRpY2FsIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlfS5kYXRhLVxbc3RhdGVcPWluZGV0ZXJtaW5hdGVcXVw6YW5pbWF0ZS1cW2Nhcm91c2VsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXF1bZGF0YS1zdGF0ZT1pbmRldGVybWluYXRlXXthbmltYXRpb246Y2Fyb3VzZWwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmRhdGEtXFtzdGF0ZVw9aW5kZXRlcm1pbmF0ZVxdXDphbmltYXRlLVxbZWxhc3RpYy12ZXJ0aWNhbF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOmVsYXN0aWMtdmVydGljYWwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmRhdGEtXFtzdGF0ZVw9aW5kZXRlcm1pbmF0ZVxdXDphbmltYXRlLVxbZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOmVsYXN0aWMgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmRhdGEtXFtzdGF0ZVw9aW5kZXRlcm1pbmF0ZVxdXDphbmltYXRlLVxbc3dpbmctdmVydGljYWxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXVtkYXRhLXN0YXRlPWluZGV0ZXJtaW5hdGVde2FuaW1hdGlvbjpzd2luZy12ZXJ0aWNhbCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOmFuaW1hdGUtXFtzd2luZ18yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOnN3aW5nIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YW5pbWF0ZS1cW2FjY29yZGlvbi1kb3duXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246YWNjb3JkaW9uLWRvd24gLjJzIGVhc2Utb3V0fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YW5pbWF0ZS1cW2NvbGxhcHNpYmxlLWRvd25fMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpjb2xsYXBzaWJsZS1kb3duIC4ycyBlYXNlLW91dH0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmFuaW1hdGUtXFtmYWRlLWluXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246ZmFkZS1pbiAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2NhbGUtaW5fMTAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzY2FsZS1pbiAuMXMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2NhbGUtaW5fMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzY2FsZS1pbiAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2xpZGUtaW4tZnJvbS1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzbGlkZS1pbi1mcm9tLWJvdHRvbSAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2xpZGUtaW4tZnJvbS1sZWZ0XzIwMG1zX2Vhc2UtaW4tb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246c2xpZGUtaW4tZnJvbS1sZWZ0IC4ycyBlYXNlLWluLW91dH0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmFuaW1hdGUtXFtzbGlkZS1pbi1mcm9tLXJpZ2h0XzIwMG1zX2Vhc2UtaW4tb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb246c2xpZGUtaW4tZnJvbS1yaWdodCAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbc2xpZGUtaW4tZnJvbS10b3BfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjpzbGlkZS1pbi1mcm9tLXRvcCAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbdG9hc3Qtc2xpZGUtaW4tZnJvbS1ib3R0b21fMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjp0b2FzdC1zbGlkZS1pbi1mcm9tLWJvdHRvbSAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLVxbdG9hc3Qtc2xpZGUtaW4tZnJvbS10b3BfMjAwbXNfZWFzZS1pbi1vdXRcXVtkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjp0b2FzdC1zbGlkZS1pbi1mcm9tLXRvcCAuMnMgZWFzZS1pbi1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZy1lbGV2YXRlZFtkYXRhLXN0YXRlPW9wZW5de2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctZWxldmF0ZWQpfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6dGV4dC1oaWdobGlnaHRlZFtkYXRhLXN0YXRlPW9wZW5de2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1lbGV2YXRlZCk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lbGV2YXRlZFwvNTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktYmctZWxldmF0ZWQpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1lcnJvcik7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1lcnJvclwvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktZXJyb3IpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1pbmZvXC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWluZm8pO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJlZm9yZVw6YmctaW5mb1wvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktaW5mbykgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZWZvcmVcOmJnLXByaW1hcnlcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktcHJpbWFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1wcmltYXJ5XC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJlZm9yZVw6Ymctc2Vjb25kYXJ5XC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXNlY29uZGFyeSk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1zZWNvbmRhcnlcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXNlY29uZGFyeSkgMTAlLHRyYW5zcGFyZW50KX19LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZWZvcmVcOmJnLXN1Y2Nlc3NcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktc3VjY2Vzcyk7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmVmb3JlXDpiZy1zdWNjZXNzXC8xMFtkYXRhLXN0YXRlPW9wZW5dOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1zdWNjZXNzKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJlZm9yZVw6Ymctd2FybmluZ1wvMTBbZGF0YS1zdGF0ZT1vcGVuXTpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS13YXJuaW5nKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZWZvcmVcOmJnLXdhcm5pbmdcLzEwW2RhdGEtc3RhdGU9b3Blbl06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdhcm5pbmcpIDEwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6ZGF0YS1cW3B1bHNpbmdcPWV2ZW5cXVw6YW5pbWF0ZS1cW3RvYXN0LXB1bHNlLWJfMzAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPW9wZW5dW2RhdGEtcHVsc2luZz1ldmVuXXthbmltYXRpb246dG9hc3QtcHVsc2UtYiAuM3MgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpkYXRhLVxbcHVsc2luZ1w9b2RkXF1cOmFuaW1hdGUtXFt0b2FzdC1wdWxzZS1hXzMwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zdGF0ZT1vcGVuXVtkYXRhLXB1bHNpbmc9b2RkXXthbmltYXRpb246dG9hc3QtcHVsc2UtYSAuM3MgZWFzZS1vdXR9LmRhdGEtXFtzdGF0ZVw9dW5jaGVja2VkXF1cOnRyYW5zbGF0ZS14LTBbZGF0YS1zdGF0ZT11bmNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6YmctYWNjZW50ZWRbZGF0YS1zdGF0ZT11bmNoZWNrZWRde2JhY2tncm91bmQtY29sb3I6dmFyKC0tdWktYmctYWNjZW50ZWQpfS5kYXRhLVxbc3RhdGVcPXZpc2libGVcXVw6YW5pbWF0ZS1cW2ZhZGUtaW5fMTAwbXNfZWFzZS1vdXRcXVtkYXRhLXN0YXRlPXZpc2libGVde2FuaW1hdGlvbjpmYWRlLWluIC4xcyBlYXNlLW91dH0uZGF0YS1cW3N3aXBlXD1jYW5jZWxcXVw6dHJhbnNsYXRlLXgtMFtkYXRhLXN3aXBlPWNhbmNlbF17LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjApO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3dpcGVcPWNhbmNlbFxdXDp0cmFuc2xhdGUteS0wW2RhdGEtc3dpcGU9Y2FuY2VsXXstLXR3LXRyYW5zbGF0ZS15OmNhbGModmFyKC0tc3BhY2luZykqMCk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzd2lwZVw9ZW5kXF1cOnRyYW5zbGF0ZS14LVwoLS1yZWthLXRvYXN0LXN3aXBlLWVuZC14XClbZGF0YS1zd2lwZT1lbmRdey0tdHctdHJhbnNsYXRlLXg6dmFyKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteCk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzd2lwZVw9ZW5kXF1cOnRyYW5zbGF0ZS15LVwoLS1yZWthLXRvYXN0LXN3aXBlLWVuZC15XClbZGF0YS1zd2lwZT1lbmRdey0tdHctdHJhbnNsYXRlLXk6dmFyKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzd2lwZVw9ZW5kXF1cOmFuaW1hdGUtXFt0b2FzdC1zbGlkZS1kb3duXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zd2lwZT1lbmRde2FuaW1hdGlvbjp0b2FzdC1zbGlkZS1kb3duIC4ycyBlYXNlLW91dH0uZGF0YS1cW3N3aXBlXD1lbmRcXVw6YW5pbWF0ZS1cW3RvYXN0LXNsaWRlLWxlZnRfMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN3aXBlPWVuZF17YW5pbWF0aW9uOnRvYXN0LXNsaWRlLWxlZnQgLjJzIGVhc2Utb3V0fS5kYXRhLVxbc3dpcGVcPWVuZFxdXDphbmltYXRlLVxbdG9hc3Qtc2xpZGUtcmlnaHRfMjAwbXNfZWFzZS1vdXRcXVtkYXRhLXN3aXBlPWVuZF17YW5pbWF0aW9uOnRvYXN0LXNsaWRlLXJpZ2h0IC4ycyBlYXNlLW91dH0uZGF0YS1cW3N3aXBlXD1lbmRcXVw6YW5pbWF0ZS1cW3RvYXN0LXNsaWRlLXVwXzIwMG1zX2Vhc2Utb3V0XF1bZGF0YS1zd2lwZT1lbmRde2FuaW1hdGlvbjp0b2FzdC1zbGlkZS11cCAuMnMgZWFzZS1vdXR9LmRhdGEtXFtzd2lwZVw9bW92ZVxdXDp0cmFuc2xhdGUteC1cKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXhcKVtkYXRhLXN3aXBlPW1vdmVdey0tdHctdHJhbnNsYXRlLXg6dmFyKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3dpcGVcPW1vdmVcXVw6dHJhbnNsYXRlLXktXCgtLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15XClbZGF0YS1zd2lwZT1tb3ZlXXstLXR3LXRyYW5zbGF0ZS15OnZhcigtLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N3aXBlXD1tb3ZlXF1cOnRyYW5zaXRpb24tbm9uZVtkYXRhLXN3aXBlPW1vdmVde3RyYW5zaXRpb24tcHJvcGVydHk6bm9uZX1AbWVkaWEgbm90IGFsbCBhbmQgKG1pbi13aWR0aDo0MHJlbSl7Lm1heC1zbVw6ZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX1AbWVkaWEobWluLXdpZHRoOjQwcmVtKXsuc21cOi1zdGFydC0xMntpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSotMTIpfS5zbVw6LWVuZC0xMntpbnNldC1pbmxpbmUtZW5kOmNhbGModmFyKC0tc3BhY2luZykqLTEyKX0uc21cOi10b3AtMTJ7dG9wOmNhbGModmFyKC0tc3BhY2luZykqLTEyKX0uc21cOi1ib3R0b20tMTJ7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqLTEyKX0uc21cOmNvbC1zcGFuLTJ7Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMn0uc21cOmJsb2Nre2Rpc3BsYXk6YmxvY2t9LnNtXDpmbGV4e2Rpc3BsYXk6ZmxleH0uc21cOmdyaWR7ZGlzcGxheTpncmlkfS5zbVw6aC1cWzI4cmVtXF17aGVpZ2h0OjI4cmVtfS5zbVw6bWF4LWgtXFtjYWxjXCgxMDBkdmgtNHJlbVwpXF17bWF4LWhlaWdodDpjYWxjKDEwMGR2aCAtIDRyZW0pfS5zbVw6dy1cKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGhcKXt3aWR0aDp2YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCl9LnNtXDp3LTk2e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqOTYpfS5zbVw6bWF4LXctM3hse21heC13aWR0aDp2YXIoLS1jb250YWluZXItM3hsKX0uc21cOnNjcm9sbC1tdC02e3Njcm9sbC1tYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqNil9LnNtXDpncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LnNtXDpmbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LnNtXDppdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5zbVw6aXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5zbVw6Z2FwLTZ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqNil9LnNtXDpnYXAtMTZ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMTYpfTp3aGVyZSguc21cOnNwYWNlLXktMD46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tYmxvY2stZW5kOmNhbGModmFyKC0tc3BhY2luZykqMCooMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYmxvY2stc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfTp3aGVyZSguc21cOnNwYWNlLXgtND46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS14LXJldmVyc2U6MDttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjQqKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7bWFyZ2luLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjQqdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSl9LnNtXDpnYXAteS0xMntyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMTIpfS5zbVw6Z2FwLXktMjR7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjI0KX0uc21cOnAtMHtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMCl9LnNtXDpwLTZ7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5zbVw6cHgtNntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5zbVw6cHgtOHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5zbVw6cHgtMTJ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LnNtXDpweS04e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uc21cOnB5LTI0e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyNCl9LnNtXDpweS0zMntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMzIpfS5zbVw6dGV4dC0yeGx7Zm9udC1zaXplOnZhcigtLXRleHQtMnhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtMnhsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC0zeGx7Zm9udC1zaXplOnZhcigtLXRleHQtM3hsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtM3hsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC00eGx7Zm9udC1zaXplOnZhcigtLXRleHQtNHhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtNHhsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC01eGx7Zm9udC1zaXplOnZhcigtLXRleHQtNXhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtNXhsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC03eGx7Zm9udC1zaXplOnZhcigtLXRleHQtN3hsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtN3hsLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC1sZ3tmb250LXNpemU6dmFyKC0tdGV4dC1sZyk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LWxnLS1saW5lLWhlaWdodCkpfS5zbVw6dGV4dC14bFwvOHtmb250LXNpemU6dmFyKC0tdGV4dC14bCk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo4KX0uc21cOnNoYWRvdy1sZ3stLXR3LXNoYWRvdzowIDEwcHggMTVweCAtM3B4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLDAgNHB4IDZweCAtNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpfS5zbVw6cmluZywuc21cOnNoYWRvdy1sZ3tib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNtXDpyaW5ney0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcil9fUBtZWRpYShtaW4td2lkdGg6NDhyZW0pey5tZFw6bXQtYXV0b3ttYXJnaW4tdG9wOmF1dG99Lm1kXDpoaWRkZW57ZGlzcGxheTpub25lfS5tZFw6dGFibGV7ZGlzcGxheTp0YWJsZX0ubWRcOmgtZnVsbHtoZWlnaHQ6MTAwJX0ubWRcOmNvbHVtbnMtMnstbW96LWNvbHVtbnM6Mjtjb2x1bW4tY291bnQ6Mn0ubWRcOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0ubWRcOnB0LTZ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubWRcOnRleHQtc217Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0ubWRcOnRleHQteHN7Zm9udC1zaXplOnZhcigtLXRleHQteHMpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14cy0tbGluZS1oZWlnaHQpKX19QG1lZGlhKG1pbi13aWR0aDo2NHJlbSl7LmxnXDpzdGlja3l7cG9zaXRpb246c3RpY2t5fS5sZ1w6dG9wLVwoLS11aS1oZWFkZXItaGVpZ2h0XCl7dG9wOnZhcigtLXVpLWhlYWRlci1oZWlnaHQpfS5sZ1w6ei1cWzFcXXt6LWluZGV4OjF9LmxnXDpvcmRlci0xe29yZGVyOjF9LmxnXDpvcmRlci0ye29yZGVyOjJ9LmxnXDpvcmRlci0ze29yZGVyOjN9LmxnXDpvcmRlci1sYXN0e29yZGVyOjk5OTl9LmxnXDpjb2wtc3Bhbi0xe2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDF9LmxnXDpjb2wtc3Bhbi0ye2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDJ9LmxnXDpjb2wtc3Bhbi02e2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDZ9LmxnXDpjb2wtc3Bhbi04e2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDh9LmxnXDpjb2wtc3Bhbi0xMHtncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTB9LmxnXDpteC1hdXRve21hcmdpbi1pbmxpbmU6YXV0b30ubGdcOi1tcy00e21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNCl9LmxnXDptcy1hdXRve21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0b30ubGdcOm1lLTB7bWFyZ2luLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGdcOm10LTB7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5sZ1w6bXQtMTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0ubGdcOmJsb2Nre2Rpc3BsYXk6YmxvY2t9LmxnXDpmbGV4e2Rpc3BsYXk6ZmxleH0ubGdcOmdyaWR7ZGlzcGxheTpncmlkfS5sZ1w6aGlkZGVue2Rpc3BsYXk6bm9uZX0ubGdcOmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LmxnXDptYXgtaC1cW2NhbGNcKDEwMHZoLXZhclwoLS11aS1oZWFkZXItaGVpZ2h0XClcKVxde21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIHZhcigtLXVpLWhlYWRlci1oZWlnaHQpKX0ubGdcOnctXCgtLXdpZHRoXCl7d2lkdGg6dmFyKC0td2lkdGgpfS5sZ1w6dy1mdWxse3dpZHRoOjEwMCV9LmxnXDptYXgtdy0yeGx7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci0yeGwpfS5sZ1w6bWF4LXctNHhse21heC13aWR0aDp2YXIoLS1jb250YWluZXItNHhsKX0ubGdcOm1heC13LXhze21heC13aWR0aDp2YXIoLS1jb250YWluZXIteHMpfS5sZ1w6ZmxleC0xe2ZsZXg6MX0ubGdcOnNjYWxlLVxbMVwuMVxde3NjYWxlOjEuMX0ubGdcOmNvbHVtbnMtM3stbW96LWNvbHVtbnM6Mztjb2x1bW4tY291bnQ6M30ubGdcOmdyaWQtY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0ubGdcOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0ubGdcOmdyaWQtY29scy0xMHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDEwLG1pbm1heCgwLDFmcikpfS5sZ1w6Z3JpZC1jb2xzLVxbcmVwZWF0XCh2YXJcKC0tY291bnRcKVwsbWlubWF4XCgwXCwxZnJcKVwpXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCh2YXIoLS1jb3VudCksbWlubWF4KDAsMWZyKSl9LmxnXDpmbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmxnXDppdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5sZ1w6anVzdGlmeS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5sZ1w6anVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubGdcOmp1c3RpZnktZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ubGdcOmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmxnXDpnYXAtMTB7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMTApfS5sZ1w6Z2FwLTEye2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0ubGdcOmdhcC14LTN7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMyk7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5sZ1w6Z2FwLXgtMTN7LW1vei1jb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMTMpO2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMyl9LmxnXDpnYXAteS0xNntyb3ctZ2FwOmNhbGModmFyKC0tc3BhY2luZykqMTYpfTp3aGVyZSgubGdcOmRpdmlkZS14Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LWRpdmlkZS14LXJldmVyc2U6MDtib3JkZXItaW5saW5lLWVuZC13aWR0aDpjYWxjKDFweCooMSAtIHZhcigtLXR3LWRpdmlkZS14LXJldmVyc2UpKSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDpjYWxjKDFweCp2YXIoLS10dy1kaXZpZGUteC1yZXZlcnNlKSk7Ym9yZGVyLWlubGluZS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpfTp3aGVyZSgubGdcOmRpdmlkZS15LTA+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctZGl2aWRlLXktcmV2ZXJzZTowO2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOmNhbGMoMHB4KigxIC0gdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpKTtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDpjYWxjKDBweCp2YXIoLS10dy1kaXZpZGUteS1yZXZlcnNlKSl9LmxnXDpib3JkZXItdHtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LmxnXDpib3JkZXItYntib3JkZXItYm90dG9tLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LmxnXDpib3JkZXItZGVmYXVsdHtib3JkZXItY29sb3I6dmFyKC0tdWktYm9yZGVyKX0ubGdcOnAtNntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqNil9LmxnXDpwLTh7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5sZ1w6cHgtMHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5sZ1w6cHgtOHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjgpfS5sZ1w6cHgtMTZ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxNil9LmxnXDpweS00e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ubGdcOnB5LTEye3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMil9LmxnXDpweS0yNHtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMjQpfS5sZ1w6cHktMzJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjMyKX0ubGdcOnB5LTQwe3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0MCl9LmxnXDpwcy00e3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykqNCl9LmxnXDpwZS02XC41e3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjYuNSl9LmxnXDpwci02e3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ubGdcOnBiLTB7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ubGdcOnRleHQtNXhse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTV4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTV4bC0tbGluZS1oZWlnaHQpKX0ubGdcOm5vdC1sYXN0XDpib3JkZXItZTpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1pbmxpbmUtZW5kLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MXB4fS5sZ1w6bm90LWxhc3RcOmJvcmRlci1kZWZhdWx0Om5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9fUBtZWRpYShtaW4td2lkdGg6ODByZW0pey54bFw6Y29sLXNwYW4tMntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfS54bFw6bXQtMHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykqMCl9LnhsXDptYi0we21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ueGxcOmdyaWR7ZGlzcGxheTpncmlkfS54bFw6Z3JpZC1jb2xzLTN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpfS54bFw6Z2FwLTh7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqOCl9LnhsXDpwLTEwe3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9fS5ydGxcOnJpZ2h0LVxbY2FsY1woMTAwXCUtdmFyXCgtLXJla2EtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWxlZnRcKS12YXJcKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGhcKVwpXF06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7cmlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0tcmVrYS1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtbGVmdCkgLSB2YXIoLS1yZWthLW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aCkpfS5ydGxcOmxlZnQtYXV0bzp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXtsZWZ0OmF1dG99LnJ0bFw6dHJhbnNsYXRlLXgtXFs0cHhcXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OjRweDt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0ucnRsXDotcm90YXRlLTkwOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICope3JvdGF0ZTotOTBkZWd9LnJ0bFw6YW5pbWF0ZS1cW21hcnF1ZWUtcnRsX3ZhclwoLS1kdXJhdGlvblwpX2xpbmVhcl9pbmZpbml0ZVxdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICope2FuaW1hdGlvbjptYXJxdWVlLXJ0bCB2YXIoLS1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlfS5ydGxcOmFuaW1hdGUtXFttYXJxdWVlLXZlcnRpY2FsLXJ0bF92YXJcKC0tZHVyYXRpb25cKV9saW5lYXJfaW5maW5pdGVcXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXthbmltYXRpb246bWFycXVlZS12ZXJ0aWNhbC1ydGwgdmFyKC0tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZX0ucnRsXDphbmltYXRlLVxbc2hpbW1lci1ydGxfdmFyXCgtLWR1cmF0aW9uXClfbGluZWFyX2luZmluaXRlXF06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7YW5pbWF0aW9uOnNoaW1tZXItcnRsIHZhcigtLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGV9LnJ0bFw6dGV4dC1yaWdodDp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXt0ZXh0LWFsaWduOnJpZ2h0fS5ydGxcOmFmdGVyXDphbmltYXRlLVxbY2Fyb3VzZWwtaW52ZXJzZS1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKTphZnRlcnthbmltYXRpb246Y2Fyb3VzZWwtaW52ZXJzZS1ydGwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0ucnRsXDphZnRlclw6YW5pbWF0ZS1cW2Nhcm91c2VsLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICopOmFmdGVye2FuaW1hdGlvbjpjYXJvdXNlbC1ydGwgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDp2YXIoLS10dy1jb250ZW50KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnJ0bFw6LXRyYW5zbGF0ZS14LTNbZGF0YS1zdGF0ZT1jaGVja2VkXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqLTMpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6cnRsXDotdHJhbnNsYXRlLXgtM1wuNVtkYXRhLXN0YXRlPWNoZWNrZWRdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICopey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSotMy41KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnJ0bFw6LXRyYW5zbGF0ZS14LTRbZGF0YS1zdGF0ZT1jaGVja2VkXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqLTQpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6cnRsXDotdHJhbnNsYXRlLXgtNFwuNVtkYXRhLXN0YXRlPWNoZWNrZWRdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICopey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSotNC41KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnJ0bFw6LXRyYW5zbGF0ZS14LTVbZGF0YS1zdGF0ZT1jaGVja2VkXTp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqLTUpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPWluZGV0ZXJtaW5hdGVcXVw6cnRsXDphbmltYXRlLVxbY2Fyb3VzZWwtaW52ZXJzZS1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVcXVtkYXRhLXN0YXRlPWluZGV0ZXJtaW5hdGVdOndoZXJlKDpkaXIocnRsKSxbZGlyPXJ0bF0sW2Rpcj1ydGxdICope2FuaW1hdGlvbjpjYXJvdXNlbC1pbnZlcnNlLXJ0bCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD1pbmRldGVybWluYXRlXF1cOnJ0bFw6YW5pbWF0ZS1cW2Nhcm91c2VsLXJ0bF8yc19lYXNlLWluLW91dF9pbmZpbml0ZVxdW2RhdGEtc3RhdGU9aW5kZXRlcm1pbmF0ZV06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7YW5pbWF0aW9uOmNhcm91c2VsLXJ0bCAycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uZGF0YS1cW3N0YXRlXD11bmNoZWNrZWRcXVw6cnRsXDotdHJhbnNsYXRlLXgtMFtkYXRhLXN0YXRlPXVuY2hlY2tlZF06d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpKjApO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXJrXDpibG9jazp3aGVyZSguZGFyaywuZGFyayAqKXtkaXNwbGF5OmJsb2NrfS5kYXJrXDpoaWRkZW46d2hlcmUoLmRhcmssLmRhcmsgKil7ZGlzcGxheTpub25lfS5kYXJrXDppbmxpbmUtYmxvY2s6d2hlcmUoLmRhcmssLmRhcmsgKil7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmRhcmtcOmZvY3VzLXZpc2libGVcOm91dGxpbmUtbm9uZTp3aGVyZSguZGFyaywuZGFyayAqKTpmb2N1cy12aXNpYmxley0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uZGFya1w6ZGlzYWJsZWRcOmJnLXRyYW5zcGFyZW50OndoZXJlKC5kYXJrLC5kYXJrICopOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6IzAwMDB9QG1lZGlhKGhvdmVyOmhvdmVyKXsuZGFya1w6aG92ZXJcOmRpc2FibGVkXDpiZy10cmFuc3BhcmVudDp3aGVyZSguZGFyaywuZGFyayAqKTpob3ZlcjpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfX0uZGFya1w6YXJpYS1kaXNhYmxlZFw6YmctdHJhbnNwYXJlbnQ6d2hlcmUoLmRhcmssLmRhcmsgKilbYXJpYS1kaXNhYmxlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfUBtZWRpYShob3Zlcjpob3Zlcil7LmRhcmtcOmhvdmVyXDphcmlhLWRpc2FibGVkXDpiZy10cmFuc3BhcmVudDp3aGVyZSguZGFyaywuZGFyayAqKTpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6IzAwMDB9fS5cW1wmX1wuUHJvc2VNaXJyb3JcXVw6cHgtNCAuUHJvc2VNaXJyb3J7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uXFtcJl9cLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZVw6bm90XChpbWdcKVw6bm90XChwcmVcKVw6bm90XChcW2RhdGEtbm9kZS12aWV3LXdyYXBwZXJcXVwpXF1cOmJnLXByaW1hcnlcLzIwIC5Qcm9zZU1pcnJvci1zZWxlY3RlZG5vZGU6bm90KGltZyk6bm90KHByZSk6bm90KFtkYXRhLW5vZGUtdmlldy13cmFwcGVyXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5cW1wmX1wuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXDpub3RcKGltZ1wpXDpub3RcKHByZVwpXDpub3RcKFxbZGF0YS1ub2RlLXZpZXctd3JhcHBlclxdXClcXVw6YmctcHJpbWFyeVwvMjAgLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZTpub3QoaW1nKTpub3QocHJlKTpub3QoW2RhdGEtbm9kZS12aWV3LXdyYXBwZXJdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1wcmltYXJ5KSAyMCUsdHJhbnNwYXJlbnQpfX0uXFtcJl9cLm1lbnRpb25cXVw6Zm9udC1tZWRpdW0gLm1lbnRpb257LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LlxbXCZfXC5tZW50aW9uXF1cOnRleHQtcHJpbWFyeSAubWVudGlvbntjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uXFtcJl9cOmlzXChoMVwsaDJcLGgzXCxoNFwsaDVcLGg2XClcXVw6Zm9udC1ib2xkIDppcyhoMSxoMixoMyxoNCxoNSxoNil7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKX0uXFtcJl9cOmlzXChoMVwsaDJcLGgzXCxoNFwsaDVcLGg2XClcXVw6dGV4dC1oaWdobGlnaHRlZCA6aXMoaDEsaDIsaDMsaDQsaDUsaDYpe2NvbG9yOnZhcigtLXVpLXRleHQtaGlnaGxpZ2h0ZWQpfS5cW1wmX1w6aXNcKGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVw+Y29kZVxdXDpib3JkZXItZGFzaGVkIDppcyhoMSxoMixoMyxoNCxoNSxoNik+Y29kZXstLXR3LWJvcmRlci1zdHlsZTpkYXNoZWQ7Ym9yZGVyLXN0eWxlOmRhc2hlZH0uXFtcJl9cOmlzXChoMVwsaDJcLGgzXCxoNFwsaDVcLGg2XClcPmNvZGVcXVw6Zm9udC1ib2xkIDppcyhoMSxoMixoMyxoNCxoNSxoNik+Y29kZXstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOnBvaW50ZXItZXZlbnRzLW5vbmUgOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVkaXRvci1lbXB0eTpmaXJzdC1jaGlsZDpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOmZsb2F0LXN0YXJ0IDppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGQ6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ZmxvYXQ6aW5saW5lLXN0YXJ0fS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOmgtMCA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkOmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOnRleHQtZGltbWVkIDppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lZGl0b3ItZW1wdHk6Zmlyc3QtY2hpbGQ6YmVmb3Jle2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZWRpdG9yLWVtcHR5XDpmaXJzdC1jaGlsZFxdXDpiZWZvcmVcOmNvbnRlbnQtXFthdHRyXChkYXRhLXBsYWNlaG9sZGVyXClcXSA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZWRpdG9yLWVtcHR5OmZpcnN0LWNoaWxkOmJlZm9yZXstLXR3LWNvbnRlbnQ6YXR0cihkYXRhLXBsYWNlaG9sZGVyKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpwb2ludGVyLWV2ZW50cy1ub25lIDppcyhwLGgxLGgyLGgzLGg0LGg1LGg2KS5pcy1lbXB0eTpiZWZvcmV7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb2ludGVyLWV2ZW50czpub25lfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpmbG9hdC1zdGFydCA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHk6YmVmb3Jle2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7ZmxvYXQ6aW5saW5lLXN0YXJ0fS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpoLTAgOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVtcHR5OmJlZm9yZXtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDp0ZXh0LWRpbW1lZCA6aXMocCxoMSxoMixoMyxoNCxoNSxoNikuaXMtZW1wdHk6YmVmb3Jle2NvbG9yOnZhcigtLXVpLXRleHQtZGltbWVkKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHBcLGgxXCxoMlwsaDNcLGg0XCxoNVwsaDZcKVwuaXMtZW1wdHlcXVw6YmVmb3JlXDpjb250ZW50LVxbYXR0clwoZGF0YS1wbGFjZWhvbGRlclwpXF0gOmlzKHAsaDEsaDIsaDMsaDQsaDUsaDYpLmlzLWVtcHR5OmJlZm9yZXstLXR3LWNvbnRlbnQ6YXR0cihkYXRhLXBsYWNlaG9sZGVyKTtjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpfS5cW1wmX1w6aXNcKHVsXCxvbFwpXF1cOnBzLTYgOmlzKHVsLG9sKXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5cW1wmX1xbZGF0YS10eXBlXD1ob3Jpem9udGFsUnVsZVxdXF1cOm15LTggW2RhdGEtdHlwZT1ob3Jpem9udGFsUnVsZV17bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqOCl9LlxbXCZfXFtkYXRhLXR5cGVcPWhvcml6b250YWxSdWxlXF1cXVw6cHktMiBbZGF0YS10eXBlPWhvcml6b250YWxSdWxlXXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMil9LlxbXCZfYVxdXDpib3JkZXItYiBhe2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uXFtcJl9hXF1cOmJvcmRlci10cmFuc3BhcmVudCBhe2JvcmRlci1jb2xvcjojMDAwMH0uXFtcJl9hXF1cOmZvbnQtbWVkaXVtIGF7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LlxbXCZfYVxdXDp0ZXh0LXByaW1hcnkgYXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uXFtcJl9hXF1cOnRyYW5zaXRpb24tY29sb3JzIGF7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKTt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpfUBtZWRpYShob3Zlcjpob3Zlcil7LlxbXCZfYVxdXDpob3Zlclw6Ym9yZGVyLXByaW1hcnkgYTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9fS5cW1wmX2FcOmhvdmVyXD5jb2RlXF1cOmJvcmRlci1wcmltYXJ5IGE6aG92ZXI+Y29kZXtib3JkZXItY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LlxbXCZfYVw6aG92ZXJcPmNvZGVcXVw6dGV4dC1wcmltYXJ5IGE6aG92ZXI+Y29kZXtjb2xvcjp2YXIoLS11aS1wcmltYXJ5KX0uXFtcJl9hXD5jb2RlXF1cOmJvcmRlci1kYXNoZWQgYT5jb2Rley0tdHctYm9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItc3R5bGU6ZGFzaGVkfS5cW1wmX2FcPmNvZGVcXVw6dHJhbnNpdGlvbi1jb2xvcnMgYT5jb2Rle3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10bzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKX0uXFtcJl9ibG9ja3F1b3RlXF1cOmJvcmRlci1zLTQgYmxvY2txdW90ZXtib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDo0cHh9LlxbXCZfYmxvY2txdW90ZVxdXDpib3JkZXItYWNjZW50ZWQgYmxvY2txdW90ZXtib3JkZXItY29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uXFtcJl9ibG9ja3F1b3RlXF1cOnBzLTQgYmxvY2txdW90ZXtwYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS5cW1wmX2Jsb2NrcXVvdGVcXVw6aXRhbGljIGJsb2NrcXVvdGV7Zm9udC1zdHlsZTppdGFsaWN9LlxbXCZfY29kZVxdXDppbmxpbmUtYmxvY2sgY29kZXtkaXNwbGF5OmlubGluZS1ibG9ja30uXFtcJl9jb2RlXF1cOnJvdW5kZWQtbWQgY29kZXtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tdWktcmFkaXVzKSoxLjUpfS5cW1wmX2NvZGVcXVw6Ym9yZGVyIGNvZGV7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjFweH0uXFtcJl9jb2RlXF1cOmJvcmRlci1tdXRlZCBjb2Rle2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItbXV0ZWQpfS5cW1wmX2NvZGVcXVw6YmctbXV0ZWQgY29kZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLW11dGVkKX0uXFtcJl9jb2RlXF1cOnB4LTFcLjUgY29kZXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LlxbXCZfY29kZVxdXDpweS0wXC41IGNvZGV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0uXFtcJl9jb2RlXF1cOmZvbnQtbW9ubyBjb2Rle2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyl9LlxbXCZfY29kZVxdXDp0ZXh0LXNtIGNvZGV7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0uXFtcJl9jb2RlXF1cOmZvbnQtbWVkaXVtIGNvZGV7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LlxbXCZfY29kZVxdXDp0ZXh0LWhpZ2hsaWdodGVkIGNvZGV7Y29sb3I6dmFyKC0tdWktdGV4dC1oaWdobGlnaHRlZCl9LlxbXCZfaDFcXVw6dGV4dC0zeGwgaDF7Zm9udC1zaXplOnZhcigtLXRleHQtM3hsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtM3hsLS1saW5lLWhlaWdodCkpfS5cW1wmX2gyXF1cOnRleHQtMnhsIGgye2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTJ4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQpKX0uXFtcJl9oMlw+Y29kZVxdXDp0ZXh0LXhsXC82IGgyPmNvZGV7Zm9udC1zaXplOnZhcigtLXRleHQteGwpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNil9LlxbXCZfaDNcXVw6dGV4dC14bCBoM3tmb250LXNpemU6dmFyKC0tdGV4dC14bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXhsLS1saW5lLWhlaWdodCkpfS5cW1wmX2gzXD5jb2RlXF1cOnRleHQtbGdcLzUgaDM+Y29kZXtmb250LXNpemU6dmFyKC0tdGV4dC1sZyk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0uXFtcJl9oNFxdXDp0ZXh0LWxnIGg0e2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LWxnKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtbGctLWxpbmUtaGVpZ2h0KSl9LlxbXCZfaDVcXVw6dGV4dC1iYXNlIGg1LC5cW1wmX2g2XF1cOnRleHQtYmFzZSBoNntmb250LXNpemU6dmFyKC0tdGV4dC1iYXNlKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtYmFzZS0tbGluZS1oZWlnaHQpKX0uXFtcJl9oclxdXDpib3JkZXItdCBocntib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LlxbXCZfaHJcXVw6Ym9yZGVyLWRlZmF1bHQgaHJ7Ym9yZGVyLWNvbG9yOnZhcigtLXVpLWJvcmRlcil9LlxbXCZfaW1nXF1cOmJsb2NrIGltZ3tkaXNwbGF5OmJsb2NrfS5cW1wmX2ltZ1xdXDptYXgtdy1mdWxsIGltZ3ttYXgtd2lkdGg6MTAwJX0uXFtcJl9pbWdcXVw6cm91bmRlZC1tZCBpbWd7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMS41KX0uXFtcJl9pbWdcLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZVxdXDpvdXRsaW5lLTIgaW1nLlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MnB4fS5cW1wmX2ltZ1wuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXF1cOm91dGxpbmUtcHJpbWFyeSBpbWcuUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2Rle291dGxpbmUtY29sb3I6dmFyKC0tdWktcHJpbWFyeSl9LlxbXCZfbGlcXVw6bXktMVwuNSBsaXttYXJnaW4tYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5cW1wmX2xpXF1cOnBzLTFcLjUgbGl7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5cW1wmX29sXF1cOmxpc3QtZGVjaW1hbCBvbHtsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbH0uXFtcJl9vbFxdXDptYXJrZXJcOnRleHQtbXV0ZWQgb2wgOjptYXJrZXJ7Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LlxbXCZfb2xcXVw6bWFya2VyXDp0ZXh0LW11dGVkIG9sOjptYXJrZXJ7Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LlxbXCZfb2xcXVw6bWFya2VyXDp0ZXh0LW11dGVkIG9sIDo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciwuXFtcJl9vbFxdXDptYXJrZXJcOnRleHQtbXV0ZWQgb2w6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7Y29sb3I6dmFyKC0tdWktdGV4dC1tdXRlZCl9LlxbXCZfcFxdXDpsZWFkaW5nLTcgcHstLXR3LWxlYWRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSo3KTtsaW5lLWhlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5cW1wmX3ByZVxdXDpvdmVyZmxvdy14LWF1dG8gcHJle292ZXJmbG93LXg6YXV0b30uXFtcJl9wcmVcXVw6cm91bmRlZC1tZCBwcmV7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXVpLXJhZGl1cykqMS41KX0uXFtcJl9wcmVcXVw6Ym9yZGVyIHByZXtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5cW1wmX3ByZVxdXDpib3JkZXItbXV0ZWQgcHJle2JvcmRlci1jb2xvcjp2YXIoLS11aS1ib3JkZXItbXV0ZWQpfS5cW1wmX3ByZVxdXDpiZy1tdXRlZCBwcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS11aS1iZy1tdXRlZCl9LlxbXCZfcHJlXF1cOnB4LTQgcHJle3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqNCl9LlxbXCZfcHJlXF1cOnB5LTMgcHJle3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uXFtcJl9wcmVcXVw6dGV4dC1zbVwvNiBwcmV7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNil9LlxbXCZfcHJlXF1cOmJyZWFrLXdvcmRzIHByZXtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LlxbXCZfcHJlXF1cOndoaXRlc3BhY2UtcHJlLXdyYXAgcHJle3doaXRlLXNwYWNlOnByZS13cmFwfS5cW1wmX3ByZV9jb2RlXF1cOmlubGluZSBwcmUgY29kZXtkaXNwbGF5OmlubGluZX0uXFtcJl9wcmVfY29kZVxdXDpyb3VuZGVkLW5vbmUgcHJlIGNvZGV7Ym9yZGVyLXJhZGl1czowfS5cW1wmX3ByZV9jb2RlXF1cOmJvcmRlci0wIHByZSBjb2Rle2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDowfS5cW1wmX3ByZV9jb2RlXF1cOmJnLXRyYW5zcGFyZW50IHByZSBjb2Rle2JhY2tncm91bmQtY29sb3I6IzAwMDB9LlxbXCZfcHJlX2NvZGVcXVw6cC0wIHByZSBjb2Rle3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uXFtcJl9wcmVfY29kZVxdXDp0ZXh0LWluaGVyaXQgcHJlIGNvZGV7Y29sb3I6aW5oZXJpdH0uXFtcJl91bFxdXDpsaXN0LWRpc2MgdWx7bGlzdC1zdHlsZS10eXBlOmRpc2N9LlxbXCZfdWxcXVw6bWFya2VyXDp0ZXh0LVwoLS11aS1ib3JkZXItYWNjZW50ZWRcKSB1bCA6Om1hcmtlcntjb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfS5cW1wmX3VsXF1cOm1hcmtlclw6dGV4dC1cKC0tdWktYm9yZGVyLWFjY2VudGVkXCkgdWw6Om1hcmtlcntjb2xvcjp2YXIoLS11aS1ib3JkZXItYWNjZW50ZWQpfS5cW1wmX3VsXF1cOm1hcmtlclw6dGV4dC1cKC0tdWktYm9yZGVyLWFjY2VudGVkXCkgdWwgOjotd2Via2l0LWRldGFpbHMtbWFya2VyLC5cW1wmX3VsXF1cOm1hcmtlclw6dGV4dC1cKC0tdWktYm9yZGVyLWFjY2VudGVkXCkgdWw6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7Y29sb3I6dmFyKC0tdWktYm9yZGVyLWFjY2VudGVkKX0uXFtcJlw6aGFzXChcW3JvbGVcPWNoZWNrYm94XF1cKVxdXDpwZS0wOmhhcyhbcm9sZT1jaGVja2JveF0pe3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5cW1wmXD5cKlw6Zmlyc3QtY2hpbGRcXVw6Y29sLXN0YXJ0LTI+OmZpcnN0LWNoaWxke2dyaWQtY29sdW1uLXN0YXJ0OjJ9LlxbXCZcPlwqXDpudGgtY2hpbGRcKDFcKVxdXDphbmltYXRlLVxbYm91bmNlXzFzX2luZmluaXRlXF0+OmZpcnN0LWNoaWxke2FuaW1hdGlvbjpib3VuY2UgMXMgaW5maW5pdGV9LlxbXCZcPlwqXDpudGgtY2hpbGRcKDJcKVxdXDphbmltYXRlLVxbYm91bmNlXzFzXzBcLjE1c19pbmZpbml0ZVxdPjpudGgtY2hpbGQoMil7YW5pbWF0aW9uOmJvdW5jZSAxcyAuMTVzIGluZmluaXRlfS5cW1wmXD5cKlw6bnRoLWNoaWxkXCgzXClcXVw6YW5pbWF0ZS1cW2JvdW5jZV8xc18wXC4zc19pbmZpbml0ZVxdPjpudGgtY2hpbGQoMyl7YW5pbWF0aW9uOmJvdW5jZSAxcyAuM3MgaW5maW5pdGV9LlxbXCZcPmFydGljbGVcXVw6bGFzdC1vZi10eXBlXDptaW4taC1cKC0tbGFzdC1tZXNzYWdlLWhlaWdodFwpPmFydGljbGU6bGFzdC1vZi10eXBle21pbi1oZWlnaHQ6dmFyKC0tbGFzdC1tZXNzYWdlLWhlaWdodCl9LlxbXCZcPmJ1dHRvblxdXDpweS0wPmJ1dHRvbntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMCl9LlxbXCZcPmRpdlxdXDptaW4tdy0wPmRpdnttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0uXFtcJlw+aW5wdXRcXVw6aC0xMD5pbnB1dHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMCl9LlxbXCZcPmlucHV0XF1cOmgtMTE+aW5wdXR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTEpfS5cW1wmXD5pbnB1dFxdXDpoLTEyPmlucHV0e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyKX0uXFtcJlw+aW5wdXRcXVw6aC0xMz5pbnB1dHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxMyl9LlxbXCZcPmlucHV0XF1cOmgtMTQ+aW5wdXR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMTQpfS5cW1wmXD5tYXJrXF1cOmJnLXByaW1hcnk+bWFya3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLXByaW1hcnkpfS5cW1wmXD5tYXJrXF1cOnRleHQtaW52ZXJ0ZWQ+bWFya3tjb2xvcjp2YXIoLS11aS10ZXh0LWludmVydGVkKX1AbWVkaWEoaG92ZXI6aG92ZXIpey5cW1wmXD50clxdXDpkYXRhLVxbc2VsZWN0YWJsZVw9dHJ1ZVxdXDpob3Zlclw6YmctZWxldmF0ZWRcLzUwPnRyW2RhdGEtc2VsZWN0YWJsZT10cnVlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXVpLWJnLWVsZXZhdGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5cW1wmXD50clxdXDpkYXRhLVxbc2VsZWN0YWJsZVw9dHJ1ZVxdXDpob3Zlclw6YmctZWxldmF0ZWRcLzUwPnRyW2RhdGEtc2VsZWN0YWJsZT10cnVlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS1iZy1lbGV2YXRlZCkgNTAlLHRyYW5zcGFyZW50KX19fS5cW1wmXD50clxdXDpkYXRhLVxbc2VsZWN0YWJsZVw9dHJ1ZVxdXDpmb2N1cy12aXNpYmxlXDpvdXRsaW5lLXByaW1hcnk+dHJbZGF0YS1zZWxlY3RhYmxlPXRydWVdOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjp2YXIoLS11aS1wcmltYXJ5KX19QGtleWZyYW1lcyBhY2NvcmRpb24tdXB7MCV7aGVpZ2h0OnZhcigtLXJla2EtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0KX10b3toZWlnaHQ6MH19QGtleWZyYW1lcyBhY2NvcmRpb24tZG93bnswJXtoZWlnaHQ6MH10b3toZWlnaHQ6dmFyKC0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQpfX1Aa2V5ZnJhbWVzIGNvbGxhcHNpYmxlLXVwezAle2hlaWdodDp2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KX10b3toZWlnaHQ6MH19QGtleWZyYW1lcyBjb2xsYXBzaWJsZS1kb3duezAle2hlaWdodDowfXRve2hlaWdodDp2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KX19QGtleWZyYW1lcyB0b2FzdC1zbGlkZS1pbi1mcm9tLXRvcHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9dG97dHJhbnNmb3JtOnZhcigtLXRyYW5zZm9ybSl9fUBrZXlmcmFtZXMgdG9hc3Qtc2xpZGUtaW4tZnJvbS1ib3R0b217MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9dG97dHJhbnNmb3JtOnZhcigtLXRyYW5zZm9ybSl9fUBrZXlmcmFtZXMgdG9hc3Qtc2xpZGUtdXB7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSB0cmFuc2xhdGVZKHZhcigtLXRyYW5zbGF0ZSkpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMCkgdHJhbnNsYXRlWShjYWxjKHZhcigtLXRyYW5zbGF0ZSkgLSAxMDAlKSl9fUBrZXlmcmFtZXMgdG9hc3Qtc2xpZGUtZG93bnswJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApIHRyYW5zbGF0ZVkodmFyKC0tdHJhbnNsYXRlKSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKSB0cmFuc2xhdGVZKGNhbGModmFyKC0tdHJhbnNsYXRlKSArIDEwMCUpKX19QGtleWZyYW1lcyB0b2FzdC1wdWxzZS1hezAlLHRve3NjYWxlOjF9NTAle3NjYWxlOjEuMDR9fUBrZXlmcmFtZXMgdG9hc3QtcHVsc2UtYnswJSx0b3tzY2FsZToxfTUwJXtzY2FsZToxLjA0fX1Aa2V5ZnJhbWVzIHRvYXN0LWNvbGxhcHNlZC1jbG9zZWR7MCV7dHJhbnNmb3JtOnZhcigtLXRyYW5zZm9ybSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYygodmFyKC0tYmVmb3JlKSAtIHZhcigtLWhlaWdodCkpKnZhcigtLWdhcCkpKSBzY2FsZSh2YXIoLS1zY2FsZSkpfX1Aa2V5ZnJhbWVzIHRvYXN0LWNsb3NlZHswJXt0cmFuc2Zvcm06dmFyKC0tdHJhbnNmb3JtKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKCh2YXIoLS1vZmZzZXQpIC0gdmFyKC0taGVpZ2h0KSkqdmFyKC0tdHJhbnNsYXRlLWZhY3RvcikpKX19QGtleWZyYW1lcyB0b2FzdC1zbGlkZS1sZWZ0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCkgdHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKSB0cmFuc2xhdGVZKHZhcigtLXRyYW5zbGF0ZSkpfX1Aa2V5ZnJhbWVzIHRvYXN0LXNsaWRlLXJpZ2h0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCkgdHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpIHRyYW5zbGF0ZVkodmFyKC0tdHJhbnNsYXRlKSl9fUBrZXlmcmFtZXMgZmFkZS1pbnswJXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGUtb3V0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc2NhbGUtaW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOTUpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9fUBrZXlmcmFtZXMgc2NhbGUtb3V0ezAle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOTUpfX1Aa2V5ZnJhbWVzIHNsaWRlLWluLWZyb20tdG9wezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBzbGlkZS1vdXQtdG8tdG9wezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX19QGtleWZyYW1lcyBzbGlkZS1pbi1mcm9tLXJpZ2h0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBzbGlkZS1vdXQtdG8tcmlnaHR7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpfX1Aa2V5ZnJhbWVzIHNsaWRlLWluLWZyb20tYm90dG9tezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHNsaWRlLW91dC10by1ib3R0b217MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSl9fUBrZXlmcmFtZXMgc2xpZGUtaW4tZnJvbS1sZWZ0ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9fUBrZXlmcmFtZXMgc2xpZGUtb3V0LXRvLWxlZnR7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX19QGtleWZyYW1lcyBzbGlkZS1pbi1mcm9tLXRvcC1hbmQtZmFkZXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTRweCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHNsaWRlLW91dC10by10b3AtYW5kLWZhZGV7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNHB4KX19QGtleWZyYW1lcyBzbGlkZS1pbi1mcm9tLXJpZ2h0LWFuZC1mYWRlezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDRweCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9fUBrZXlmcmFtZXMgc2xpZGUtb3V0LXRvLXJpZ2h0LWFuZC1mYWRlezAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDRweCl9fUBrZXlmcmFtZXMgc2xpZGUtaW4tZnJvbS1ib3R0b20tYW5kLWZhZGV7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDRweCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHNsaWRlLW91dC10by1ib3R0b20tYW5kLWZhZGV7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg0cHgpfX1Aa2V5ZnJhbWVzIHNsaWRlLWluLWZyb20tbGVmdC1hbmQtZmFkZXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNHB4KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBzbGlkZS1vdXQtdG8tbGVmdC1hbmQtZmFkZXswJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNHB4KX19QGtleWZyYW1lcyBlbnRlci1mcm9tLXJpZ2h0ezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDIwMHB4KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBlbnRlci1mcm9tLWxlZnR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTIwMHB4KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX19QGtleWZyYW1lcyBleGl0LXRvLXJpZ2h0ezAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKDIwMHB4KX19QGtleWZyYW1lcyBleGl0LXRvLWxlZnR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTIwMHB4KX19QGtleWZyYW1lcyBjYXJvdXNlbHswJSx0b3t3aWR0aDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgyMDAlKX19QGtleWZyYW1lcyBjYXJvdXNlbC1ydGx7MCUsdG97d2lkdGg6NTAlfTAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMjAwJSl9fUBrZXlmcmFtZXMgY2Fyb3VzZWwtdmVydGljYWx7MCUsdG97aGVpZ2h0OjUwJX0wJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjAwJSl9fUBrZXlmcmFtZXMgY2Fyb3VzZWwtaW52ZXJzZXswJSx0b3t3aWR0aDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgyMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX19QGtleWZyYW1lcyBjYXJvdXNlbC1pbnZlcnNlLXJ0bHswJSx0b3t3aWR0aDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMjAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlKX19QGtleWZyYW1lcyBjYXJvdXNlbC1pbnZlcnNlLXZlcnRpY2FsezAlLHRve2hlaWdodDo1MCV9MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfX1Aa2V5ZnJhbWVzIHN3aW5nezAlLHRve3dpZHRoOjUwJX0wJSx0b3t0cmFuc2Zvcm06dHJhbnNsYXRlKC0yNSUpfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDEyNSUpfX1Aa2V5ZnJhbWVzIHN3aW5nLXZlcnRpY2FsezAlLHRve2hlaWdodDo1MCV9MCUsdG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9NTAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEyNSUpfX1Aa2V5ZnJhbWVzIGVsYXN0aWN7MCUsdG97bWFyZ2luLWxlZnQ6MjUlO3dpZHRoOjUwJX01MCV7bWFyZ2luLWxlZnQ6NSU7d2lkdGg6OTAlfX1Aa2V5ZnJhbWVzIGVsYXN0aWMtdmVydGljYWx7MCUsdG97aGVpZ2h0OjUwJTttYXJnaW4tdG9wOjI1JX01MCV7aGVpZ2h0OjkwJTttYXJnaW4tdG9wOjUlfX1Aa2V5ZnJhbWVzIG1hcnF1ZWV7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKGNhbGMoLTEwMCUgLSB2YXIoLS1nYXApKSwwLDApfX1Aa2V5ZnJhbWVzIG1hcnF1ZWUtcnRsezAle3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUzZChjYWxjKDEwMCUgKyB2YXIoLS1nYXApKSwwLDApfX1Aa2V5ZnJhbWVzIG1hcnF1ZWUtdmVydGljYWx7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsY2FsYygtMTAwJSAtIHZhcigtLWdhcCkpLDApfX1Aa2V5ZnJhbWVzIG1hcnF1ZWUtdmVydGljYWwtcnRsezAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLGNhbGMoLTEwMCUgLSB2YXIoLS1nYXApKSwwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCxjYWxjKC0xMDAlKnZhcigtLWdhcCkpLDApfX1Aa2V5ZnJhbWVzIHNoaW1tZXJ7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMDAlfXRve2JhY2tncm91bmQtcG9zaXRpb246MH19QGtleWZyYW1lcyBzaGltbWVyLXJ0bHswJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjoxMDAlfX06cm9vdHstLXVpLXJhZGl1czowcmVtfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zcGFjaW5nLXh7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zcGFjaW5nLXl7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXNjYWxlLXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctc2NhbGUteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1zY2FsZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNwYWNlLXktcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1zcGFjZS14LXJldmVyc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZGl2aWRlLXktcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1ib3JkZXItc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWdyYWRpZW50LXBvc2l0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtZnJvbXtzeW50YXg6Ijxjb2xvcj4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IzAwMDB9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtdmlhe3N5bnRheDoiPGNvbG9yPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojMDAwMH1AcHJvcGVydHkgLS10dy1ncmFkaWVudC10b3tzeW50YXg6Ijxjb2xvcj4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IzAwMDB9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtc3RvcHN7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC12aWEtc3RvcHN7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9ue3N5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowJX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb257c3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjUwJX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC10by1wb3NpdGlvbntzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1mb250LXdlaWdodHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXRyYWNraW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctb3JkaW5hbHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNsYXNoZWQtemVyb3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtZmlndXJle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1zcGFjaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1mcmFjdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LXJpbmctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yaW5nLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXJpbmctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LXJpbmctaW5zZXR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yaW5nLW9mZnNldC13aWR0aHtzeW50YXg6IjxsZW5ndGg+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOiNmZmZ9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctb3V0bGluZS1zdHlsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6c29saWR9QHByb3BlcnR5IC0tdHctYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJyaWdodG5lc3N7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1jb250cmFzdHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWdyYXlzY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWh1ZS1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnZlcnR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1vcGFjaXR5e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2F0dXJhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zZXBpYXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LXNpemV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzc3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWNvbnRyYXN0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtZ3JheXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWludmVydHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1zYXR1cmF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLXNlcGlhe3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHVyYXRpb257c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1lYXNle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udGVudHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IiJ9QHByb3BlcnR5IC0tdHctZGl2aWRlLXgtcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1sZWFkaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QGtleWZyYW1lcyBzcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIHB1bHNlezUwJXtvcGFjaXR5Oi41fX1Aa2V5ZnJhbWVzIGJvdW5jZXswJSx0b3thbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguOCwwLDEsMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9NTAle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsMCwuMiwxKTt0cmFuc2Zvcm06bm9uZX19Cg==", "/_nuxt/error-404.CFU5ogNm.css": "LmdyaWRbZGF0YS12LTZkN2JhY2ZmXXtkaXNwbGF5OmdyaWR9Lm1iLTJbZGF0YS12LTZkN2JhY2ZmXXttYXJnaW4tYm90dG9tOi41cmVtfS5tYi00W2RhdGEtdi02ZDdiYWNmZl17bWFyZ2luLWJvdHRvbToxcmVtfS5tYXgtdy01MjBweFtkYXRhLXYtNmQ3YmFjZmZde21heC13aWR0aDo1MjBweH0ubWluLWgtc2NyZWVuW2RhdGEtdi02ZDdiYWNmZl17bWluLWhlaWdodDoxMDB2aH0udy1mdWxsW2RhdGEtdi02ZDdiYWNmZl17d2lkdGg6MTAwJX0uZmxleFtkYXRhLXYtNmQ3YmFjZmZde2Rpc3BsYXk6ZmxleH0ucGxhY2UtY29udGVudC1jZW50ZXJbZGF0YS12LTZkN2JhY2ZmXXtwbGFjZS1jb250ZW50OmNlbnRlcn0uaXRlbXMtY2VudGVyW2RhdGEtdi02ZDdiYWNmZl17YWxpZ24taXRlbXM6Y2VudGVyfS5qdXN0aWZ5LWNlbnRlcltkYXRhLXYtNmQ3YmFjZmZde2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm92ZXJmbG93LWhpZGRlbltkYXRhLXYtNmQ3YmFjZmZde292ZXJmbG93OmhpZGRlbn0uYmctd2hpdGVbZGF0YS12LTZkN2JhY2ZmXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSl9LnB4LTJbZGF0YS12LTZkN2JhY2ZmXXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0udGV4dC1jZW50ZXJbZGF0YS12LTZkN2JhY2ZmXXt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1cWzgwcHhcXVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTo4MHB4fS50ZXh0LTJ4bFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1zbVtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LnRleHQtXFtcIzAyMDQyMFxdW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMiA0IDMyL3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS50ZXh0LVxbXCM2NDc0OEJcXVtkYXRhLXYtNmQ3YmFjZmZdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDEwMCAxMTYgMTM5L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpfS5ob3Zlclw6dGV4dC1cW1wjMDBEQzgyXF1bZGF0YS12LTZkN2JhY2ZmXTpob3ZlcnstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigwIDIyMCAxMzAvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9LmZvbnQtbWVkaXVtW2RhdGEtdi02ZDdiYWNmZl17Zm9udC13ZWlnaHQ6NTAwfS5mb250LXNlbWlib2xkW2RhdGEtdi02ZDdiYWNmZl17Zm9udC13ZWlnaHQ6NjAwfS5sZWFkaW5nLW5vbmVbZGF0YS12LTZkN2JhY2ZmXXtsaW5lLWhlaWdodDoxfS50cmFja2luZy13aWRlW2RhdGEtdi02ZDdiYWNmZl17bGV0dGVyLXNwYWNpbmc6LjAyNWVtfS5mb250LXNhbnNbZGF0YS12LTZkN2JhY2ZmXXtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxSb2JvdG8sSGVsdmV0aWNhIE5ldWUsQXJpYWwsTm90byBTYW5zLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sLE5vdG8gQ29sb3IgRW1vaml9LnRhYnVsYXItbnVtc1tkYXRhLXYtNmQ3YmFjZmZdey0tdW4tbnVtZXJpYy1zcGFjaW5nOnRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS11bi1vcmRpbmFsKSB2YXIoLS11bi1zbGFzaGVkLXplcm8pIHZhcigtLXVuLW51bWVyaWMtZmlndXJlKSB2YXIoLS11bi1udW1lcmljLXNwYWNpbmcpIHZhcigtLXVuLW51bWVyaWMtZnJhY3Rpb24pfS51bmRlcmxpbmVbZGF0YS12LTZkN2JhY2ZmXXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LnVuZGVybGluZS1vZmZzZXQtM1tkYXRhLXYtNmQ3YmFjZmZde3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHh9LmFudGlhbGlhc2VkW2RhdGEtdi02ZDdiYWNmZl17LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9QG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspey5kYXJrXDpiZy1cW1wjMDIwNDIwXF1bZGF0YS12LTZkN2JhY2ZmXXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyIDQgMzIvdmFyKC0tdW4tYmctb3BhY2l0eSkpfS5kYXJrXDp0ZXh0LXdoaXRlW2RhdGEtdi02ZDdiYWNmZl17LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSl9fUBtZWRpYShtaW4td2lkdGg6NjQwcHgpey5zbVw6dGV4dC1cWzExMHB4XF1bZGF0YS12LTZkN2JhY2ZmXXtmb250LXNpemU6MTEwcHh9LnNtXDp0ZXh0LTN4bFtkYXRhLXYtNmQ3YmFjZmZde2ZvbnQtc2l6ZToxLjg3NXJlbTtsaW5lLWhlaWdodDoyLjI1cmVtfX0K", "/_nuxt/error-500.B5aT4P7Z.css": "LmdyaWRbZGF0YS12LTI0ODQzMWQyXXtkaXNwbGF5OmdyaWR9Lm1iLTJbZGF0YS12LTI0ODQzMWQyXXttYXJnaW4tYm90dG9tOi41cmVtfS5tYi00W2RhdGEtdi0yNDg0MzFkMl17bWFyZ2luLWJvdHRvbToxcmVtfS5tYXgtdy01MjBweFtkYXRhLXYtMjQ4NDMxZDJde21heC13aWR0aDo1MjBweH0ubWluLWgtc2NyZWVuW2RhdGEtdi0yNDg0MzFkMl17bWluLWhlaWdodDoxMDB2aH0ucGxhY2UtY29udGVudC1jZW50ZXJbZGF0YS12LTI0ODQzMWQyXXtwbGFjZS1jb250ZW50OmNlbnRlcn0ub3ZlcmZsb3ctaGlkZGVuW2RhdGEtdi0yNDg0MzFkMl17b3ZlcmZsb3c6aGlkZGVufS5iZy13aGl0ZVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXVuLWJnLW9wYWNpdHkpKX0ucHgtMltkYXRhLXYtMjQ4NDMxZDJde3BhZGRpbmctbGVmdDouNXJlbTtwYWRkaW5nLXJpZ2h0Oi41cmVtfS50ZXh0LWNlbnRlcltkYXRhLXYtMjQ4NDMxZDJde3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LVxbODBweFxdW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjgwcHh9LnRleHQtMnhsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDoycmVtfS50ZXh0LVxbXCMwMjA0MjBcXVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0udGV4dC1cW1wjNjQ3NDhCXF1bZGF0YS12LTI0ODQzMWQyXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX0uZm9udC1zZW1pYm9sZFtkYXRhLXYtMjQ4NDMxZDJde2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1ub25lW2RhdGEtdi0yNDg0MzFkMl17bGluZS1oZWlnaHQ6MX0udHJhY2tpbmctd2lkZVtkYXRhLXYtMjQ4NDMxZDJde2xldHRlci1zcGFjaW5nOi4wMjVlbX0uZm9udC1zYW5zW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppfS50YWJ1bGFyLW51bXNbZGF0YS12LTI0ODQzMWQyXXstLXVuLW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdW4tb3JkaW5hbCkgdmFyKC0tdW4tc2xhc2hlZC16ZXJvKSB2YXIoLS11bi1udW1lcmljLWZpZ3VyZSkgdmFyKC0tdW4tbnVtZXJpYy1zcGFjaW5nKSB2YXIoLS11bi1udW1lcmljLWZyYWN0aW9uKX0uYW50aWFsaWFzZWRbZGF0YS12LTI0ODQzMWQyXXstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1AbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcOmJnLVxbXCMwMjA0MjBcXVtkYXRhLXYtMjQ4NDMxZDJdey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDIgNCAzMi92YXIoLS11bi1iZy1vcGFjaXR5KSl9LmRhcmtcOnRleHQtd2hpdGVbZGF0YS12LTI0ODQzMWQyXXstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKX19QG1lZGlhKG1pbi13aWR0aDo2NDBweCl7LnNtXDp0ZXh0LVxbMTEwcHhcXVtkYXRhLXYtMjQ4NDMxZDJde2ZvbnQtc2l6ZToxMTBweH0uc21cOnRleHQtM3hsW2RhdGEtdi0yNDg0MzFkMl17Zm9udC1zaXplOjEuODc1cmVtO2xpbmUtaGVpZ2h0OjIuMjVyZW19fQo=", "/_nuxt/ghqYbIST.js": "aW1wb3J0e2FoIGFzIHEsSiBhcyBDLEsgYXMgeCxhQiBhcyBCLG8gYXMgcixjIGFzIHYsYix3IGFzIHAsTCBhcyBvLGF2IGFzIG4sYXcgYXMgZyxpIGFzIGUsaCBhcyBkLGFhIGFzIHksdiBhcyBjLGEgYXMgZixNIGFzIHUsayBhcyBQLGQgYXMgVCx0IGFzIGosUCBhcyB3LEYgYXMgRCxsIGFzIFYsTiBhcyBrfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e3UgYXMgen1mcm9tIi4vQ3RhMTVzRy0uanMiO2ltcG9ydHtfIGFzIE99ZnJvbSIuL0JoV1MxOGk3LmpzIjtjb25zdCBSPXtzbG90czp7cm9vdDoiaC0oLS11aS1oZWFkZXItaGVpZ2h0KSBzaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgYm9yZGVyLWRlZmF1bHQgcHgtNCBzbTpweC02IGdhcC0xLjUiLGxlZnQ6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgbWluLXctMCIsaWNvbjoic2hyaW5rLTAgc2l6ZS01IHNlbGYtY2VudGVyIG1lLTEuNSIsdGl0bGU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgZm9udC1zZW1pYm9sZCB0ZXh0LWhpZ2hsaWdodGVkIHRydW5jYXRlIixjZW50ZXI6ImhpZGRlbiBsZzpmbGV4IixyaWdodDoiZmxleCBpdGVtcy1jZW50ZXIgc2hyaW5rLTAgZ2FwLTEuNSIsdG9nZ2xlOiIifSx2YXJpYW50czp7dG9nZ2xlU2lkZTp7bGVmdDp7dG9nZ2xlOiIifSxyaWdodDp7dG9nZ2xlOiIifX19fSxJPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVURhc2hib2FyZE5hdmJhciIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx0b2dnbGU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0b2dnbGVTaWRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiJsZWZ0In0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAodCl7Y29uc3QgbT10LFM9cSgpLCQ9QygpLGw9eCgiZGFzaGJvYXJkTmF2YmFyIixtKSxpPXooe30pLFtOLGhdPUIoKSxhPVYoKCk9Pmsoe2V4dGVuZDprKFIpLC4uLiQudWk/LmRhc2hib2FyZE5hdmJhcnx8e319KSgpKTtyZXR1cm4ocyxBKT0+KHIoKSx2KEQsbnVsbCxbYihlKE4pLG51bGwse2RlZmF1bHQ6cCgoKT0+W28ocy4kc2xvdHMsInRvZ2dsZSIsbihnKHsuLi5lKGkpLHVpOmEudmFsdWV9KSksKCk9Plt0LnRvZ2dsZT8ocigpLGQoTyx5KHtrZXk6MH0sdHlwZW9mIHQudG9nZ2xlPT0ib2JqZWN0Ij90LnRvZ2dsZTp7fSx7c2lkZTp0LnRvZ2dsZVNpZGUsImRhdGEtc2xvdCI6InRvZ2dsZSIsY2xhc3M6YS52YWx1ZS50b2dnbGUoe2NsYXNzOmUobCk/LnRvZ2dsZSx0b2dnbGVTaWRlOnQudG9nZ2xlU2lkZX0pfSksbnVsbCwxNixbInNpZGUiLCJjbGFzcyJdKSk6YygiIiwhMCldKV0pLF86M30pLGIoZSh3KSx5KHthczp0LmFzfSxzLiRhdHRycyx7ImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOmEudmFsdWUucm9vdCh7Y2xhc3M6W2UobCk/LnJvb3QsbS5jbGFzc119KX0pLHtkZWZhdWx0OnAoKCk9PltmKCJkaXYiLHsiZGF0YS1zbG90IjoibGVmdCIsY2xhc3M6dShhLnZhbHVlLmxlZnQoe2NsYXNzOmUobCk/LmxlZnR9KSl9LFt0LnRvZ2dsZVNpZGU9PT0ibGVmdCI/KHIoKSxkKGUoaCkse2tleTowfSkpOmMoIiIsITApLG8ocy4kc2xvdHMsImxlZnQiLG4oZyhlKGkpKSksKCk9PltvKHMuJHNsb3RzLCJsZWFkaW5nIixuKGcoey4uLmUoaSksdWk6YS52YWx1ZX0pKSwoKT0+W3QuaWNvbj8ocigpLGQoUCx7a2V5OjAsbmFtZTp0Lmljb24sImRhdGEtc2xvdCI6Imljb24iLGNsYXNzOnUoYS52YWx1ZS5pY29uKHtjbGFzczplKGwpPy5pY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmMoIiIsITApXSksZigiaDEiLHsiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOnUoYS52YWx1ZS50aXRsZSh7Y2xhc3M6ZShsKT8udGl0bGV9KSl9LFtvKHMuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltUKGoodC50aXRsZSksMSldKV0sMiksbyhzLiRzbG90cywidHJhaWxpbmciLG4oZyh7Li4uZShpKSx1aTphLnZhbHVlfSkpKV0pXSwyKSxTLmRlZmF1bHQ/KHIoKSx2KCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiY2VudGVyIixjbGFzczp1KGEudmFsdWUuY2VudGVyKHtjbGFzczplKGwpPy5jZW50ZXJ9KSl9LFtvKHMuJHNsb3RzLCJkZWZhdWx0IixuKGcoZShpKSkpKV0sMikpOmMoIiIsITApLGYoImRpdiIseyJkYXRhLXNsb3QiOiJyaWdodCIsY2xhc3M6dShhLnZhbHVlLnJpZ2h0KHtjbGFzczplKGwpPy5yaWdodH0pKX0sW28ocy4kc2xvdHMsInJpZ2h0IixuKGcoZShpKSkpKSx0LnRvZ2dsZVNpZGU9PT0icmlnaHQiPyhyKCksZChlKGgpLHtrZXk6MH0pKTpjKCIiLCEwKV0sMildKSxfOjN9LDE2LFsiYXMiLCJjbGFzcyJdKV0sNjQpKX19KTtleHBvcnR7SSBhcyBffTsK", "/_nuxt/m20kdGxU.js": "aW1wb3J0e2YgYXMgbSxSIGFzIGgsbyBhcyBsLGggYXMgbyxhYSBhcyBwLGJOIGFzIGcsYmUgYXMgRSxsIGFzIGQsYyBhcyBmLHYgYXMgQixGIGFzIGMscSBhcyBWfWZyb20iLi9vOHRkX0cwSi5qcyI7dmFyIGs9bSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiVmlzdWFsbHlIaWRkZW5JbnB1dEJ1YmJsZSIscHJvcHM6e25hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSx2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxjaGVja2VkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZlYXR1cmU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImZ1bGx5LWhpZGRlbiJ9fSxzZXR1cChpKXtjb25zdCBlPWkse3ByaW1pdGl2ZUVsZW1lbnQ6cyxjdXJyZW50RWxlbWVudDpufT1FKCksdD1kKCgpPT5lLmNoZWNrZWQ/P2UudmFsdWUpO3JldHVybiBoKHQsKGEscik9PntpZighbi52YWx1ZSlyZXR1cm47Y29uc3QgdT1uLnZhbHVlLGI9d2luZG93LkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLHY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiLCJ2YWx1ZSIpLnNldDtpZih2JiZhIT09cil7Y29uc3QgXz1uZXcgRXZlbnQoImlucHV0Iix7YnViYmxlczohMH0pLHE9bmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSk7di5jYWxsKHUsYSksdS5kaXNwYXRjaEV2ZW50KF8pLHUuZGlzcGF0Y2hFdmVudChxKX19KSwoYSxyKT0+KGwoKSxvKGcscCh7cmVmX2tleToicHJpbWl0aXZlRWxlbWVudCIscmVmOnN9LHsuLi5lLC4uLmEuJGF0dHJzfSx7YXM6ImlucHV0In0pLG51bGwsMTYpKX19KSx5PWssQT1tKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJWaXN1YWxseUhpZGRlbklucHV0Iixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGNoZWNrZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZmVhdHVyZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZnVsbHktaGlkZGVuIn19LHNldHVwKGkpe2NvbnN0IGU9aSxzPWQoKCk9PnR5cGVvZiBlLnZhbHVlPT0ib2JqZWN0IiYmQXJyYXkuaXNBcnJheShlLnZhbHVlKSYmZS52YWx1ZS5sZW5ndGg9PT0wJiZlLnJlcXVpcmVkKSxuPWQoKCk9PnR5cGVvZiBlLnZhbHVlPT0ic3RyaW5nInx8dHlwZW9mIGUudmFsdWU9PSJudW1iZXIifHx0eXBlb2YgZS52YWx1ZT09ImJvb2xlYW4ifHxlLnZhbHVlPT09bnVsbHx8ZS52YWx1ZT09PXZvaWQgMD9be25hbWU6ZS5uYW1lLHZhbHVlOmUudmFsdWV9XTp0eXBlb2YgZS52YWx1ZT09Im9iamVjdCImJkFycmF5LmlzQXJyYXkoZS52YWx1ZSk/ZS52YWx1ZS5mbGF0TWFwKCh0LGEpPT50eXBlb2YgdD09Im9iamVjdCI/T2JqZWN0LmVudHJpZXModCkubWFwKChbcix1XSk9Pih7bmFtZTpgJHtlLm5hbWV9WyR7YX1dWyR7cn1dYCx2YWx1ZTp1fSkpOntuYW1lOmAke2UubmFtZX1bJHthfV1gLHZhbHVlOnR9KTplLnZhbHVlIT09bnVsbCYmdHlwZW9mIGUudmFsdWU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlLnZhbHVlKT9PYmplY3QuZW50cmllcyhlLnZhbHVlKS5tYXAoKFt0LGFdKT0+KHtuYW1lOmAke2UubmFtZX1bJHt0fV1gLHZhbHVlOmF9KSk6W10pO3JldHVybih0LGEpPT4obCgpLGYoYyxudWxsLFtCKCIgV2UgcmVuZGVyIHNpbmdsZSBpbnB1dCBpZiBpdCdzIHJlcXVpcmVkICIpLHMudmFsdWU/KGwoKSxvKHkscCh7a2V5OnQubmFtZX0sey4uLmUsLi4udC4kYXR0cnN9LHtuYW1lOnQubmFtZSx2YWx1ZTp0LnZhbHVlfSksbnVsbCwxNixbIm5hbWUiLCJ2YWx1ZSJdKSk6KGwoITApLGYoYyx7a2V5OjF9LFYobi52YWx1ZSxyPT4obCgpLG8oeSxwKHtrZXk6ci5uYW1lfSx7cmVmX2ZvcjohMH0sey4uLmUsLi4udC4kYXR0cnN9LHtuYW1lOnIubmFtZSx2YWx1ZTpyLnZhbHVlfSksbnVsbCwxNixbIm5hbWUiLCJ2YWx1ZSJdKSkpLDEyOCkpXSwyMTEyKSl9fSksST1BO2V4cG9ydHtJIGFzIFZ9Owo=", "/_nuxt/o8td_G0J.js": "Y29uc3QgX192aXRlX19tYXBEZXBzPShpLG09X192aXRlX19tYXBEZXBzLGQ9KG0uZnx8KG0uZj1bIi4vRF9jdS1xTVIuanMiLCIuL1pKVmswb2xOLmpzIiwiLi9CU1JLcUdyUC5qcyIsIi4vRFRUTHI1SHIuanMiLCIuL0NjNnppaC1SLmpzIiwiLi9DdGExNXNHLS5qcyIsIi4vZ2hxWWJJU1QuanMiLCIuL0JoV1MxOGk3LmpzIiwiLi9DMU9RaXlVRC5qcyIsIi4vQ2w0aTRyU00uanMiLCIuL18ybFNkcjEzLmpzIiwiLi9DeGNaclkzVy5qcyIsIi4vY2RLX0E2Tm0uanMiLCIuL0NHWGdTTVpoLmpzIiwiLi9EWVpsZzAtNS5qcyIsIi4vQ2ZfZncxRTkuanMiLCIuL0JkNC1PYzM2LmpzIiwiLi9zM3AwYzAzTS5qcyIsIi4vQ3NLNTFxdGQuanMiLCIuL0RUdlhULW5SLmpzIiwiLi9EeENXUXNubC5qcyIsIi4vQ1lhbXpMbTUuanMiLCIuL0R2ZGh5cERpLmpzIiwiLi9CdDhTMGRtbC5qcyIsIi4vQ1hvYzRVRVIuanMiLCIuL0NjTU1GMWc5LmpzIiwiLi9EdUVBZm5ocS5qcyIsIi4vQjFNZUxyaTMuanMiLCIuL0NXOGZLbkZFLmpzIiwiLi9DN1l5NnRSMy5qcyIsIi4vRGM0NlF3REouanMiLCIuL0NmaFlGWU9ZLmpzIiwiLi9XbURYSFlLay5qcyIsIi4vQjdzNXBqalIuanMiLCIuL0RIQ3dFTFdwLmpzIiwiLi9tMjBrZEd4VS5qcyIsIi4vQ0FVQVg1VnIuanMiLCIuL0JBdW5pLXFkLmpzIiwiLi9EbTc5NHF4SS5qcyIsIi4vQld2cWx3NWYuanMiLCIuL0NJQzd2c1o1LmpzIiwiLi83Y1ZTT0NjdS5qcyIsIi4vZF8wTndRTFUuanMiLCIuL0RwQXZ0TjhnLmpzIiwiLi9ET0NGRFRjWS5qcyIsIi4vQnVMU3VBOE0uanMiLCIuLzRsSG15SGJILmpzIiwiLi9Db0lkejRrYS5qcyIsIi4vQlN5MGkyQWYuanMiLCIuL0JkWlg1eGdmLmpzIiwiLi9DcXlXck5OeC5qcyIsIi4vQmVFTUN5dVouanMiLCIuL0NZbWxNSVh6LmpzIiwiLi9Cck5SVklCQS5qcyIsIi4vRHRTdGZWbVQuanMiLCIuL0JNeWJHNE9rLmpzIiwiLi9CRk9ObzYzWC5qcyIsIi4vQlpsTk5mazQuanMiLCIuL0JTR3QzeFJXLmpzIiwiLi9EYkM0cDNRQS5qcyIsIi4vTjZLMHJxdGMuanMiLCIuL0NGQnRjQjdvLmpzIiwiLi9EUGZaa2wyZS5qcyIsIi4vZXJyb3ItNDA0LkNGVTVvZ05tLmNzcyIsIi4vWlpzZlA5S1ouanMiLCIuL2Vycm9yLTUwMC5CNWFUNFA3Wi5jc3MiXSkpKT0+aS5tYXAoaT0+ZFtpXSk7CihmdW5jdGlvbigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYodCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKXJldHVybjtmb3IoY29uc3QgbyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpcihvKTtuZXcgTXV0YXRpb25PYnNlcnZlcihvPT57Zm9yKGNvbnN0IHMgb2YgbylpZihzLnR5cGU9PT0iY2hpbGRMaXN0Iilmb3IoY29uc3QgaSBvZiBzLmFkZGVkTm9kZXMpaS50YWdOYW1lPT09IkxJTksiJiZpLnJlbD09PSJtb2R1bGVwcmVsb2FkIiYmcihpKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gbihvKXtjb25zdCBzPXt9O3JldHVybiBvLmludGVncml0eSYmKHMuaW50ZWdyaXR5PW8uaW50ZWdyaXR5KSxvLnJlZmVycmVyUG9saWN5JiYocy5yZWZlcnJlclBvbGljeT1vLnJlZmVycmVyUG9saWN5KSxvLmNyb3NzT3JpZ2luPT09InVzZS1jcmVkZW50aWFscyI/cy5jcmVkZW50aWFscz0iaW5jbHVkZSI6by5jcm9zc09yaWdpbj09PSJhbm9ueW1vdXMiP3MuY3JlZGVudGlhbHM9Im9taXQiOnMuY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixzfWZ1bmN0aW9uIHIobyl7aWYoby5lcClyZXR1cm47by5lcD0hMDtjb25zdCBzPW4obyk7ZmV0Y2goby5ocmVmLHMpfX0pKCk7ZnVuY3Rpb24gdWYoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBuIG9mIGUuc3BsaXQoIiwiKSl0W25dPTE7cmV0dXJuIG49Pm4gaW4gdH1jb25zdCBZZT17fSx1cz1bXSxscj0oKT0+e30sUWg9KCk9PiExLFJpPWU9PmUuY2hhckNvZGVBdCgwKT09PTExMSYmZS5jaGFyQ29kZUF0KDEpPT09MTEwJiYoZS5jaGFyQ29kZUF0KDIpPjEyMnx8ZS5jaGFyQ29kZUF0KDIpPDk3KSxjbD1lPT5lLnN0YXJ0c1dpdGgoIm9uVXBkYXRlOiIpLHZ0PU9iamVjdC5hc3NpZ24sZmY9KGUsdCk9Pntjb25zdCBuPWUuaW5kZXhPZih0KTtuPi0xJiZlLnNwbGljZShuLDEpfSxqdz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG50PShlLHQpPT5qdy5jYWxsKGUsdCksU2U9QXJyYXkuaXNBcnJheSxmcz1lPT5JcyhlKT09PSJbb2JqZWN0IE1hcF0iLFloPWU9PklzKGUpPT09IltvYmplY3QgU2V0XSIscWQ9ZT0+SXMoZSk9PT0iW29iamVjdCBEYXRlXSIsVnc9ZT0+SXMoZSk9PT0iW29iamVjdCBSZWdFeHBdIixDZT1lPT50eXBlb2YgZT09ImZ1bmN0aW9uIixmdD1lPT50eXBlb2YgZT09InN0cmluZyIsa249ZT0+dHlwZW9mIGU9PSJzeW1ib2wiLFplPWU9PmUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCIsdWw9ZT0+KFplKGUpfHxDZShlKSkmJkNlKGUudGhlbikmJkNlKGUuY2F0Y2gpLEpoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsSXM9ZT0+SmguY2FsbChlKSxVdz1lPT5JcyhlKS5zbGljZSg4LC0xKSxkZj1lPT5JcyhlKT09PSJbb2JqZWN0IE9iamVjdF0iLGZsPWU9PmZ0KGUpJiZlIT09Ik5hTiImJmVbMF0hPT0iLSImJiIiK3BhcnNlSW50KGUsMTApPT09ZSxJbz11ZigiLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LG9uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCxvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLG9uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWQiKSxkbD1lPT57Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybihuPT50W25dfHwodFtuXT1lKG4pKSl9LEh3PS8tXHcvZywkdD1kbChlPT5lLnJlcGxhY2UoSHcsdD0+dC5zbGljZSgxKS50b1VwcGVyQ2FzZSgpKSksV3c9L1xCKFtBLVpdKS9nLEJyPWRsKGU9PmUucmVwbGFjZShXdywiLSQxIikudG9Mb3dlckNhc2UoKSkscGw9ZGwoZT0+ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKSxuaT1kbChlPT5lP2BvbiR7cGwoZSl9YDoiIiksRnQ9KGUsdCk9PiFPYmplY3QuaXMoZSx0KSxyaT0oZSwuLi50KT0+e2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWVbbl0oLi4udCl9LFhoPShlLHQsbixyPSExKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOnIsdmFsdWU6bn0pfSxHdz1lPT57Y29uc3QgdD1wYXJzZUZsb2F0KGUpO3JldHVybiBpc05hTih0KT9lOnR9LFpoPWU9Pntjb25zdCB0PWZ0KGUpP051bWJlcihlKTpOYU47cmV0dXJuIGlzTmFOKHQpP2U6dH07bGV0IEZkO2NvbnN0IG1sPSgpPT5GZHx8KEZkPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6e30pO2Z1bmN0aW9uIFJuKGUpe2lmKFNlKGUpKXtjb25zdCB0PXt9O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWVbbl0sbz1mdChyKT9KdyhyKTpSbihyKTtpZihvKWZvcihjb25zdCBzIGluIG8pdFtzXT1vW3NdfXJldHVybiB0fWVsc2UgaWYoZnQoZSl8fFplKGUpKXJldHVybiBlfWNvbnN0IEt3PS87KD8hW14oXSpcKSkvZyxRdz0vOihbXl0rKS8sWXc9L1wvXCpbXl0qP1wqXC8vZztmdW5jdGlvbiBKdyhlKXtjb25zdCB0PXt9O3JldHVybiBlLnJlcGxhY2UoWXcsIiIpLnNwbGl0KEt3KS5mb3JFYWNoKG49PntpZihuKXtjb25zdCByPW4uc3BsaXQoUXcpO3IubGVuZ3RoPjEmJih0W3JbMF0udHJpbSgpXT1yWzFdLnRyaW0oKSl9fSksdH1mdW5jdGlvbiB1ZShlKXtsZXQgdD0iIjtpZihmdChlKSl0PWU7ZWxzZSBpZihTZShlKSlmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj11ZShlW25dKTtyJiYodCs9cisiICIpfWVsc2UgaWYoWmUoZSkpZm9yKGNvbnN0IG4gaW4gZSllW25dJiYodCs9bisiICIpO3JldHVybiB0LnRyaW0oKX1mdW5jdGlvbiB4dChlKXtpZighZSlyZXR1cm4gbnVsbDtsZXR7Y2xhc3M6dCxzdHlsZTpufT1lO3JldHVybiB0JiYhZnQodCkmJihlLmNsYXNzPXVlKHQpKSxuJiYoZS5zdHlsZT1SbihuKSksZX1jb25zdCBYdz0iaXRlbXNjb3BlLGFsbG93ZnVsbHNjcmVlbixmb3Jtbm92YWxpZGF0ZSxpc21hcCxub21vZHVsZSxub3ZhbGlkYXRlLHJlYWRvbmx5Iixadz11ZihYdyk7ZnVuY3Rpb24gZWcoZSl7cmV0dXJuISFlfHxlPT09IiJ9ZnVuY3Rpb24gZV8oZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2xldCBuPSEwO2ZvcihsZXQgcj0wO24mJnI8ZS5sZW5ndGg7cisrKW49cGYoZVtyXSx0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBwZihlLHQpe2lmKGU9PT10KXJldHVybiEwO2xldCBuPXFkKGUpLHI9cWQodCk7aWYobnx8cilyZXR1cm4gbiYmcj9lLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpOiExO2lmKG49a24oZSkscj1rbih0KSxufHxyKXJldHVybiBlPT09dDtpZihuPVNlKGUpLHI9U2UodCksbnx8cilyZXR1cm4gbiYmcj9lXyhlLHQpOiExO2lmKG49WmUoZSkscj1aZSh0KSxufHxyKXtpZighbnx8IXIpcmV0dXJuITE7Y29uc3Qgbz1PYmplY3Qua2V5cyhlKS5sZW5ndGgscz1PYmplY3Qua2V5cyh0KS5sZW5ndGg7aWYobyE9PXMpcmV0dXJuITE7Zm9yKGNvbnN0IGkgaW4gZSl7Y29uc3QgYT1lLmhhc093blByb3BlcnR5KGkpLGw9dC5oYXNPd25Qcm9wZXJ0eShpKTtpZihhJiYhbHx8IWEmJmx8fCFwZihlW2ldLHRbaV0pKXJldHVybiExfX1yZXR1cm4gU3RyaW5nKGUpPT09U3RyaW5nKHQpfWNvbnN0IHRnPWU9PiEhKGUmJmUuX192X2lzUmVmPT09ITApLHJ0PWU9PmZ0KGUpP2U6ZT09bnVsbD8iIjpTZShlKXx8WmUoZSkmJihlLnRvU3RyaW5nPT09Smh8fCFDZShlLnRvU3RyaW5nKSk/dGcoZSk/cnQoZS52YWx1ZSk6SlNPTi5zdHJpbmdpZnkoZSxuZywyKTpTdHJpbmcoZSksbmc9KGUsdCk9PnRnKHQpP25nKGUsdC52YWx1ZSk6ZnModCk/e1tgTWFwKCR7dC5zaXplfSlgXTpbLi4udC5lbnRyaWVzKCldLnJlZHVjZSgobixbcixvXSxzKT0+KG5bYWMocixzKSsiID0+Il09byxuKSx7fSl9OlloKHQpP3tbYFNldCgke3Quc2l6ZX0pYF06Wy4uLnQudmFsdWVzKCldLm1hcChuPT5hYyhuKSl9OmtuKHQpP2FjKHQpOlplKHQpJiYhU2UodCkmJiFkZih0KT9TdHJpbmcodCk6dCxhYz0oZSx0PSIiKT0+e3ZhciBuO3JldHVybiBrbihlKT9gU3ltYm9sKCR7KG49ZS5kZXNjcmlwdGlvbikhPW51bGw/bjp0fSlgOmV9O2xldCBHdDtjbGFzcyByZ3tjb25zdHJ1Y3Rvcih0PSExKXt0aGlzLmRldGFjaGVkPXQsdGhpcy5fYWN0aXZlPSEwLHRoaXMuX29uPTAsdGhpcy5lZmZlY3RzPVtdLHRoaXMuY2xlYW51cHM9W10sdGhpcy5faXNQYXVzZWQ9ITEsdGhpcy5fX3Zfc2tpcD0hMCx0aGlzLnBhcmVudD1HdCwhdCYmR3QmJih0aGlzLmluZGV4PShHdC5zY29wZXN8fChHdC5zY29wZXM9W10pKS5wdXNoKHRoaXMpLTEpfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfXBhdXNlKCl7aWYodGhpcy5fYWN0aXZlKXt0aGlzLl9pc1BhdXNlZD0hMDtsZXQgdCxuO2lmKHRoaXMuc2NvcGVzKWZvcih0PTAsbj10aGlzLnNjb3Blcy5sZW5ndGg7dDxuO3QrKyl0aGlzLnNjb3Blc1t0XS5wYXVzZSgpO2Zvcih0PTAsbj10aGlzLmVmZmVjdHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5lZmZlY3RzW3RdLnBhdXNlKCl9fXJlc3VtZSgpe2lmKHRoaXMuX2FjdGl2ZSYmdGhpcy5faXNQYXVzZWQpe3RoaXMuX2lzUGF1c2VkPSExO2xldCB0LG47aWYodGhpcy5zY29wZXMpZm9yKHQ9MCxuPXRoaXMuc2NvcGVzLmxlbmd0aDt0PG47dCsrKXRoaXMuc2NvcGVzW3RdLnJlc3VtZSgpO2Zvcih0PTAsbj10aGlzLmVmZmVjdHMubGVuZ3RoO3Q8bjt0KyspdGhpcy5lZmZlY3RzW3RdLnJlc3VtZSgpfX1ydW4odCl7aWYodGhpcy5fYWN0aXZlKXtjb25zdCBuPUd0O3RyeXtyZXR1cm4gR3Q9dGhpcyx0KCl9ZmluYWxseXtHdD1ufX19b24oKXsrK3RoaXMuX29uPT09MSYmKHRoaXMucHJldlNjb3BlPUd0LEd0PXRoaXMpfW9mZigpe3RoaXMuX29uPjAmJi0tdGhpcy5fb249PT0wJiYoR3Q9dGhpcy5wcmV2U2NvcGUsdGhpcy5wcmV2U2NvcGU9dm9pZCAwKX1zdG9wKHQpe2lmKHRoaXMuX2FjdGl2ZSl7dGhpcy5fYWN0aXZlPSExO2xldCBuLHI7Zm9yKG49MCxyPXRoaXMuZWZmZWN0cy5sZW5ndGg7bjxyO24rKyl0aGlzLmVmZmVjdHNbbl0uc3RvcCgpO2Zvcih0aGlzLmVmZmVjdHMubGVuZ3RoPTAsbj0wLHI9dGhpcy5jbGVhbnVwcy5sZW5ndGg7bjxyO24rKyl0aGlzLmNsZWFudXBzW25dKCk7aWYodGhpcy5jbGVhbnVwcy5sZW5ndGg9MCx0aGlzLnNjb3Blcyl7Zm9yKG49MCxyPXRoaXMuc2NvcGVzLmxlbmd0aDtuPHI7bisrKXRoaXMuc2NvcGVzW25dLnN0b3AoITApO3RoaXMuc2NvcGVzLmxlbmd0aD0wfWlmKCF0aGlzLmRldGFjaGVkJiZ0aGlzLnBhcmVudCYmIXQpe2NvbnN0IG89dGhpcy5wYXJlbnQuc2NvcGVzLnBvcCgpO28mJm8hPT10aGlzJiYodGhpcy5wYXJlbnQuc2NvcGVzW3RoaXMuaW5kZXhdPW8sby5pbmRleD10aGlzLmluZGV4KX10aGlzLnBhcmVudD12b2lkIDB9fX1mdW5jdGlvbiBOaShlKXtyZXR1cm4gbmV3IHJnKGUpfWZ1bmN0aW9uIHFyKCl7cmV0dXJuIEd0fWZ1bmN0aW9uIFJzKGUsdD0hMSl7R3QmJkd0LmNsZWFudXBzLnB1c2goZSl9bGV0IGN0O2NvbnN0IGxjPW5ldyBXZWFrU2V0O2NsYXNzIG9ne2NvbnN0cnVjdG9yKHQpe3RoaXMuZm49dCx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9NSx0aGlzLm5leHQ9dm9pZCAwLHRoaXMuY2xlYW51cD12b2lkIDAsdGhpcy5zY2hlZHVsZXI9dm9pZCAwLEd0JiZHdC5hY3RpdmUmJkd0LmVmZmVjdHMucHVzaCh0aGlzKX1wYXVzZSgpe3RoaXMuZmxhZ3N8PTY0fXJlc3VtZSgpe3RoaXMuZmxhZ3MmNjQmJih0aGlzLmZsYWdzJj0tNjUsbGMuaGFzKHRoaXMpJiYobGMuZGVsZXRlKHRoaXMpLHRoaXMudHJpZ2dlcigpKSl9bm90aWZ5KCl7dGhpcy5mbGFncyYyJiYhKHRoaXMuZmxhZ3MmMzIpfHx0aGlzLmZsYWdzJjh8fGlnKHRoaXMpfXJ1bigpe2lmKCEodGhpcy5mbGFncyYxKSlyZXR1cm4gdGhpcy5mbigpO3RoaXMuZmxhZ3N8PTIsemQodGhpcyksYWcodGhpcyk7Y29uc3QgdD1jdCxuPWpuO2N0PXRoaXMsam49ITA7dHJ5e3JldHVybiB0aGlzLmZuKCl9ZmluYWxseXtsZyh0aGlzKSxjdD10LGpuPW4sdGhpcy5mbGFncyY9LTN9fXN0b3AoKXtpZih0aGlzLmZsYWdzJjEpe2ZvcihsZXQgdD10aGlzLmRlcHM7dDt0PXQubmV4dERlcClnZih0KTt0aGlzLmRlcHM9dGhpcy5kZXBzVGFpbD12b2lkIDAsemQodGhpcyksdGhpcy5vblN0b3AmJnRoaXMub25TdG9wKCksdGhpcy5mbGFncyY9LTJ9fXRyaWdnZXIoKXt0aGlzLmZsYWdzJjY0P2xjLmFkZCh0aGlzKTp0aGlzLnNjaGVkdWxlcj90aGlzLnNjaGVkdWxlcigpOnRoaXMucnVuSWZEaXJ0eSgpfXJ1bklmRGlydHkoKXtKYyh0aGlzKSYmdGhpcy5ydW4oKX1nZXQgZGlydHkoKXtyZXR1cm4gSmModGhpcyl9fWxldCBzZz0wLG9pLHNpO2Z1bmN0aW9uIGlnKGUsdD0hMSl7aWYoZS5mbGFnc3w9OCx0KXtlLm5leHQ9c2ksc2k9ZTtyZXR1cm59ZS5uZXh0PW9pLG9pPWV9ZnVuY3Rpb24gbWYoKXtzZysrfWZ1bmN0aW9uIGhmKCl7aWYoLS1zZz4wKXJldHVybjtpZihzaSl7bGV0IHQ9c2k7Zm9yKHNpPXZvaWQgMDt0Oyl7Y29uc3Qgbj10Lm5leHQ7dC5uZXh0PXZvaWQgMCx0LmZsYWdzJj0tOSx0PW59fWxldCBlO2Zvcig7b2k7KXtsZXQgdD1vaTtmb3Iob2k9dm9pZCAwO3Q7KXtjb25zdCBuPXQubmV4dDtpZih0Lm5leHQ9dm9pZCAwLHQuZmxhZ3MmPS05LHQuZmxhZ3MmMSl0cnl7dC50cmlnZ2VyKCl9Y2F0Y2gocil7ZXx8KGU9cil9dD1ufX1pZihlKXRocm93IGV9ZnVuY3Rpb24gYWcoZSl7Zm9yKGxldCB0PWUuZGVwczt0O3Q9dC5uZXh0RGVwKXQudmVyc2lvbj0tMSx0LnByZXZBY3RpdmVMaW5rPXQuZGVwLmFjdGl2ZUxpbmssdC5kZXAuYWN0aXZlTGluaz10fWZ1bmN0aW9uIGxnKGUpe2xldCB0LG49ZS5kZXBzVGFpbCxyPW47Zm9yKDtyOyl7Y29uc3Qgbz1yLnByZXZEZXA7ci52ZXJzaW9uPT09LTE/KHI9PT1uJiYobj1vKSxnZihyKSx0XyhyKSk6dD1yLHIuZGVwLmFjdGl2ZUxpbms9ci5wcmV2QWN0aXZlTGluayxyLnByZXZBY3RpdmVMaW5rPXZvaWQgMCxyPW99ZS5kZXBzPXQsZS5kZXBzVGFpbD1ufWZ1bmN0aW9uIEpjKGUpe2ZvcihsZXQgdD1lLmRlcHM7dDt0PXQubmV4dERlcClpZih0LmRlcC52ZXJzaW9uIT09dC52ZXJzaW9ufHx0LmRlcC5jb21wdXRlZCYmKGNnKHQuZGVwLmNvbXB1dGVkKXx8dC5kZXAudmVyc2lvbiE9PXQudmVyc2lvbikpcmV0dXJuITA7cmV0dXJuISFlLl9kaXJ0eX1mdW5jdGlvbiBjZyhlKXtpZihlLmZsYWdzJjQmJiEoZS5mbGFncyYxNil8fChlLmZsYWdzJj0tMTcsZS5nbG9iYWxWZXJzaW9uPT09bWkpfHwoZS5nbG9iYWxWZXJzaW9uPW1pLCFlLmlzU1NSJiZlLmZsYWdzJjEyOCYmKCFlLmRlcHMmJiFlLl9kaXJ0eXx8IUpjKGUpKSkpcmV0dXJuO2UuZmxhZ3N8PTI7Y29uc3QgdD1lLmRlcCxuPWN0LHI9am47Y3Q9ZSxqbj0hMDt0cnl7YWcoZSk7Y29uc3Qgbz1lLmZuKGUuX3ZhbHVlKTsodC52ZXJzaW9uPT09MHx8RnQobyxlLl92YWx1ZSkpJiYoZS5mbGFnc3w9MTI4LGUuX3ZhbHVlPW8sdC52ZXJzaW9uKyspfWNhdGNoKG8pe3Rocm93IHQudmVyc2lvbisrLG99ZmluYWxseXtjdD1uLGpuPXIsbGcoZSksZS5mbGFncyY9LTN9fWZ1bmN0aW9uIGdmKGUsdD0hMSl7Y29uc3R7ZGVwOm4scHJldlN1YjpyLG5leHRTdWI6b309ZTtpZihyJiYoci5uZXh0U3ViPW8sZS5wcmV2U3ViPXZvaWQgMCksbyYmKG8ucHJldlN1Yj1yLGUubmV4dFN1Yj12b2lkIDApLG4uc3Vicz09PWUmJihuLnN1YnM9ciwhciYmbi5jb21wdXRlZCkpe24uY29tcHV0ZWQuZmxhZ3MmPS01O2ZvcihsZXQgcz1uLmNvbXB1dGVkLmRlcHM7cztzPXMubmV4dERlcClnZihzLCEwKX0hdCYmIS0tbi5zYyYmbi5tYXAmJm4ubWFwLmRlbGV0ZShuLmtleSl9ZnVuY3Rpb24gdF8oZSl7Y29uc3R7cHJldkRlcDp0LG5leHREZXA6bn09ZTt0JiYodC5uZXh0RGVwPW4sZS5wcmV2RGVwPXZvaWQgMCksbiYmKG4ucHJldkRlcD10LGUubmV4dERlcD12b2lkIDApfWxldCBqbj0hMDtjb25zdCB1Zz1bXTtmdW5jdGlvbiBEcigpe3VnLnB1c2goam4pLGpuPSExfWZ1bmN0aW9uIExyKCl7Y29uc3QgZT11Zy5wb3AoKTtqbj1lPT09dm9pZCAwPyEwOmV9ZnVuY3Rpb24gemQoZSl7Y29uc3R7Y2xlYW51cDp0fT1lO2lmKGUuY2xlYW51cD12b2lkIDAsdCl7Y29uc3Qgbj1jdDtjdD12b2lkIDA7dHJ5e3QoKX1maW5hbGx5e2N0PW59fX1sZXQgbWk9MDtjbGFzcyBuX3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuc3ViPXQsdGhpcy5kZXA9bix0aGlzLnZlcnNpb249bi52ZXJzaW9uLHRoaXMubmV4dERlcD10aGlzLnByZXZEZXA9dGhpcy5uZXh0U3ViPXRoaXMucHJldlN1Yj10aGlzLnByZXZBY3RpdmVMaW5rPXZvaWQgMH19Y2xhc3MgaGx7Y29uc3RydWN0b3IodCl7dGhpcy5jb21wdXRlZD10LHRoaXMudmVyc2lvbj0wLHRoaXMuYWN0aXZlTGluaz12b2lkIDAsdGhpcy5zdWJzPXZvaWQgMCx0aGlzLm1hcD12b2lkIDAsdGhpcy5rZXk9dm9pZCAwLHRoaXMuc2M9MCx0aGlzLl9fdl9za2lwPSEwfXRyYWNrKHQpe2lmKCFjdHx8IWpufHxjdD09PXRoaXMuY29tcHV0ZWQpcmV0dXJuO2xldCBuPXRoaXMuYWN0aXZlTGluaztpZihuPT09dm9pZCAwfHxuLnN1YiE9PWN0KW49dGhpcy5hY3RpdmVMaW5rPW5ldyBuXyhjdCx0aGlzKSxjdC5kZXBzPyhuLnByZXZEZXA9Y3QuZGVwc1RhaWwsY3QuZGVwc1RhaWwubmV4dERlcD1uLGN0LmRlcHNUYWlsPW4pOmN0LmRlcHM9Y3QuZGVwc1RhaWw9bixmZyhuKTtlbHNlIGlmKG4udmVyc2lvbj09PS0xJiYobi52ZXJzaW9uPXRoaXMudmVyc2lvbixuLm5leHREZXApKXtjb25zdCByPW4ubmV4dERlcDtyLnByZXZEZXA9bi5wcmV2RGVwLG4ucHJldkRlcCYmKG4ucHJldkRlcC5uZXh0RGVwPXIpLG4ucHJldkRlcD1jdC5kZXBzVGFpbCxuLm5leHREZXA9dm9pZCAwLGN0LmRlcHNUYWlsLm5leHREZXA9bixjdC5kZXBzVGFpbD1uLGN0LmRlcHM9PT1uJiYoY3QuZGVwcz1yKX1yZXR1cm4gbn10cmlnZ2VyKHQpe3RoaXMudmVyc2lvbisrLG1pKyssdGhpcy5ub3RpZnkodCl9bm90aWZ5KHQpe21mKCk7dHJ5e2ZvcihsZXQgbj10aGlzLnN1YnM7bjtuPW4ucHJldlN1YiluLnN1Yi5ub3RpZnkoKSYmbi5zdWIuZGVwLm5vdGlmeSgpfWZpbmFsbHl7aGYoKX19fWZ1bmN0aW9uIGZnKGUpe2lmKGUuZGVwLnNjKyssZS5zdWIuZmxhZ3MmNCl7Y29uc3QgdD1lLmRlcC5jb21wdXRlZDtpZih0JiYhZS5kZXAuc3Vicyl7dC5mbGFnc3w9MjA7Zm9yKGxldCByPXQuZGVwcztyO3I9ci5uZXh0RGVwKWZnKHIpfWNvbnN0IG49ZS5kZXAuc3VicztuIT09ZSYmKGUucHJldlN1Yj1uLG4mJihuLm5leHRTdWI9ZSkpLGUuZGVwLnN1YnM9ZX19Y29uc3QgTGE9bmV3IFdlYWtNYXAsUm89U3ltYm9sKCIiKSxYYz1TeW1ib2woIiIpLGhpPVN5bWJvbCgiIik7ZnVuY3Rpb24gS3QoZSx0LG4pe2lmKGpuJiZjdCl7bGV0IHI9TGEuZ2V0KGUpO3J8fExhLnNldChlLHI9bmV3IE1hcCk7bGV0IG89ci5nZXQobik7b3x8KHIuc2V0KG4sbz1uZXcgaGwpLG8ubWFwPXIsby5rZXk9biksby50cmFjaygpfX1mdW5jdGlvbiBPcihlLHQsbixyLG8scyl7Y29uc3QgaT1MYS5nZXQoZSk7aWYoIWkpe21pKys7cmV0dXJufWNvbnN0IGE9bD0+e2wmJmwudHJpZ2dlcigpfTtpZihtZigpLHQ9PT0iY2xlYXIiKWkuZm9yRWFjaChhKTtlbHNle2NvbnN0IGw9U2UoZSksdT1sJiZmbChuKTtpZihsJiZuPT09Imxlbmd0aCIpe2NvbnN0IGM9TnVtYmVyKHIpO2kuZm9yRWFjaCgoZixkKT0+eyhkPT09Imxlbmd0aCJ8fGQ9PT1oaXx8IWtuKGQpJiZkPj1jKSYmYShmKX0pfWVsc2Ugc3dpdGNoKChuIT09dm9pZCAwfHxpLmhhcyh2b2lkIDApKSYmYShpLmdldChuKSksdSYmYShpLmdldChoaSkpLHQpe2Nhc2UiYWRkIjpsP3UmJmEoaS5nZXQoImxlbmd0aCIpKTooYShpLmdldChSbykpLGZzKGUpJiZhKGkuZ2V0KFhjKSkpO2JyZWFrO2Nhc2UiZGVsZXRlIjpsfHwoYShpLmdldChSbykpLGZzKGUpJiZhKGkuZ2V0KFhjKSkpO2JyZWFrO2Nhc2Uic2V0IjpmcyhlKSYmYShpLmdldChSbykpO2JyZWFrfX1oZigpfWZ1bmN0aW9uIHJfKGUsdCl7Y29uc3Qgbj1MYS5nZXQoZSk7cmV0dXJuIG4mJm4uZ2V0KHQpfWZ1bmN0aW9uIFlvKGUpe2NvbnN0IHQ9amUoZSk7cmV0dXJuIHQ9PT1lP3Q6KEt0KHQsIml0ZXJhdGUiLGhpKSx4bihlKT90OnQubWFwKFVuKSl9ZnVuY3Rpb24gZ2woZSl7cmV0dXJuIEt0KGU9amUoZSksIml0ZXJhdGUiLGhpKSxlfWZ1bmN0aW9uIGlyKGUsdCl7cmV0dXJuIGRyKGUpP19zKGNyKGUpP1VuKHQpOnQpOlVuKHQpfWNvbnN0IG9fPXtfX3Byb3RvX186bnVsbCxbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBjYyh0aGlzLFN5bWJvbC5pdGVyYXRvcixlPT5pcih0aGlzLGUpKX0sY29uY2F0KC4uLmUpe3JldHVybiBZbyh0aGlzKS5jb25jYXQoLi4uZS5tYXAodD0+U2UodCk/WW8odCk6dCkpfSxlbnRyaWVzKCl7cmV0dXJuIGNjKHRoaXMsImVudHJpZXMiLGU9PihlWzFdPWlyKHRoaXMsZVsxXSksZSkpfSxldmVyeShlLHQpe3JldHVybiB3cih0aGlzLCJldmVyeSIsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxmaWx0ZXIoZSx0KXtyZXR1cm4gd3IodGhpcywiZmlsdGVyIixlLHQsbj0+bi5tYXAocj0+aXIodGhpcyxyKSksYXJndW1lbnRzKX0sZmluZChlLHQpe3JldHVybiB3cih0aGlzLCJmaW5kIixlLHQsbj0+aXIodGhpcyxuKSxhcmd1bWVudHMpfSxmaW5kSW5kZXgoZSx0KXtyZXR1cm4gd3IodGhpcywiZmluZEluZGV4IixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGZpbmRMYXN0KGUsdCl7cmV0dXJuIHdyKHRoaXMsImZpbmRMYXN0IixlLHQsbj0+aXIodGhpcyxuKSxhcmd1bWVudHMpfSxmaW5kTGFzdEluZGV4KGUsdCl7cmV0dXJuIHdyKHRoaXMsImZpbmRMYXN0SW5kZXgiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZm9yRWFjaChlLHQpe3JldHVybiB3cih0aGlzLCJmb3JFYWNoIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGluY2x1ZGVzKC4uLmUpe3JldHVybiB1Yyh0aGlzLCJpbmNsdWRlcyIsZSl9LGluZGV4T2YoLi4uZSl7cmV0dXJuIHVjKHRoaXMsImluZGV4T2YiLGUpfSxqb2luKGUpe3JldHVybiBZbyh0aGlzKS5qb2luKGUpfSxsYXN0SW5kZXhPZiguLi5lKXtyZXR1cm4gdWModGhpcywibGFzdEluZGV4T2YiLGUpfSxtYXAoZSx0KXtyZXR1cm4gd3IodGhpcywibWFwIixlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LHBvcCgpe3JldHVybiBxcyh0aGlzLCJwb3AiKX0scHVzaCguLi5lKXtyZXR1cm4gcXModGhpcywicHVzaCIsZSl9LHJlZHVjZShlLC4uLnQpe3JldHVybiBqZCh0aGlzLCJyZWR1Y2UiLGUsdCl9LHJlZHVjZVJpZ2h0KGUsLi4udCl7cmV0dXJuIGpkKHRoaXMsInJlZHVjZVJpZ2h0IixlLHQpfSxzaGlmdCgpe3JldHVybiBxcyh0aGlzLCJzaGlmdCIpfSxzb21lKGUsdCl7cmV0dXJuIHdyKHRoaXMsInNvbWUiLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sc3BsaWNlKC4uLmUpe3JldHVybiBxcyh0aGlzLCJzcGxpY2UiLGUpfSx0b1JldmVyc2VkKCl7cmV0dXJuIFlvKHRoaXMpLnRvUmV2ZXJzZWQoKX0sdG9Tb3J0ZWQoZSl7cmV0dXJuIFlvKHRoaXMpLnRvU29ydGVkKGUpfSx0b1NwbGljZWQoLi4uZSl7cmV0dXJuIFlvKHRoaXMpLnRvU3BsaWNlZCguLi5lKX0sdW5zaGlmdCguLi5lKXtyZXR1cm4gcXModGhpcywidW5zaGlmdCIsZSl9LHZhbHVlcygpe3JldHVybiBjYyh0aGlzLCJ2YWx1ZXMiLGU9PmlyKHRoaXMsZSkpfX07ZnVuY3Rpb24gY2MoZSx0LG4pe2NvbnN0IHI9Z2woZSksbz1yW3RdKCk7cmV0dXJuIHIhPT1lJiYheG4oZSkmJihvLl9uZXh0PW8ubmV4dCxvLm5leHQ9KCk9Pntjb25zdCBzPW8uX25leHQoKTtyZXR1cm4gcy5kb25lfHwocy52YWx1ZT1uKHMudmFsdWUpKSxzfSksb31jb25zdCBzXz1BcnJheS5wcm90b3R5cGU7ZnVuY3Rpb24gd3IoZSx0LG4scixvLHMpe2NvbnN0IGk9Z2woZSksYT1pIT09ZSYmIXhuKGUpLGw9aVt0XTtpZihsIT09c19bdF0pe2NvbnN0IGY9bC5hcHBseShlLHMpO3JldHVybiBhP1VuKGYpOmZ9bGV0IHU9bjtpIT09ZSYmKGE/dT1mdW5jdGlvbihmLGQpe3JldHVybiBuLmNhbGwodGhpcyxpcihlLGYpLGQsZSl9Om4ubGVuZ3RoPjImJih1PWZ1bmN0aW9uKGYsZCl7cmV0dXJuIG4uY2FsbCh0aGlzLGYsZCxlKX0pKTtjb25zdCBjPWwuY2FsbChpLHUscik7cmV0dXJuIGEmJm8/byhjKTpjfWZ1bmN0aW9uIGpkKGUsdCxuLHIpe2NvbnN0IG89Z2woZSkscz1vIT09ZSYmIXhuKGUpO2xldCBpPW4sYT0hMTtvIT09ZSYmKHM/KGE9ci5sZW5ndGg9PT0wLGk9ZnVuY3Rpb24odSxjLGYpe3JldHVybiBhJiYoYT0hMSx1PWlyKGUsdSkpLG4uY2FsbCh0aGlzLHUsaXIoZSxjKSxmLGUpfSk6bi5sZW5ndGg+MyYmKGk9ZnVuY3Rpb24odSxjLGYpe3JldHVybiBuLmNhbGwodGhpcyx1LGMsZixlKX0pKTtjb25zdCBsPW9bdF0oaSwuLi5yKTtyZXR1cm4gYT9pcihlLGwpOmx9ZnVuY3Rpb24gdWMoZSx0LG4pe2NvbnN0IHI9amUoZSk7S3QociwiaXRlcmF0ZSIsaGkpO2NvbnN0IG89clt0XSguLi5uKTtyZXR1cm4obz09PS0xfHxvPT09ITEpJiZibChuWzBdKT8oblswXT1qZShuWzBdKSxyW3RdKC4uLm4pKTpvfWZ1bmN0aW9uIHFzKGUsdCxuPVtdKXtEcigpLG1mKCk7Y29uc3Qgcj1qZShlKVt0XS5hcHBseShlLG4pO3JldHVybiBoZigpLExyKCkscn1jb25zdCBpXz11ZigiX19wcm90b19fLF9fdl9pc1JlZixfX2lzVnVlIiksZGc9bmV3IFNldChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpLmZpbHRlcihlPT5lIT09ImFyZ3VtZW50cyImJmUhPT0iY2FsbGVyIikubWFwKGU9PlN5bWJvbFtlXSkuZmlsdGVyKGtuKSk7ZnVuY3Rpb24gYV8oZSl7a24oZSl8fChlPVN0cmluZyhlKSk7Y29uc3QgdD1qZSh0aGlzKTtyZXR1cm4gS3QodCwiaGFzIixlKSx0Lmhhc093blByb3BlcnR5KGUpfWNsYXNzIHBne2NvbnN0cnVjdG9yKHQ9ITEsbj0hMSl7dGhpcy5faXNSZWFkb25seT10LHRoaXMuX2lzU2hhbGxvdz1ufWdldCh0LG4scil7aWYobj09PSJfX3Zfc2tpcCIpcmV0dXJuIHQuX192X3NraXA7Y29uc3Qgbz10aGlzLl9pc1JlYWRvbmx5LHM9dGhpcy5faXNTaGFsbG93O2lmKG49PT0iX192X2lzUmVhY3RpdmUiKXJldHVybiFvO2lmKG49PT0iX192X2lzUmVhZG9ubHkiKXJldHVybiBvO2lmKG49PT0iX192X2lzU2hhbGxvdyIpcmV0dXJuIHM7aWYobj09PSJfX3ZfcmF3IilyZXR1cm4gcj09PShvP3M/Ymc6dmc6cz95ZzpnZykuZ2V0KHQpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yocik/dDp2b2lkIDA7Y29uc3QgaT1TZSh0KTtpZighbyl7bGV0IGw7aWYoaSYmKGw9b19bbl0pKXJldHVybiBsO2lmKG49PT0iaGFzT3duUHJvcGVydHkiKXJldHVybiBhX31jb25zdCBhPVJlZmxlY3QuZ2V0KHQsbiwkZSh0KT90OnIpO2lmKChrbihuKT9kZy5oYXMobik6aV8obikpfHwob3x8S3QodCwiZ2V0IixuKSxzKSlyZXR1cm4gYTtpZigkZShhKSl7Y29uc3QgbD1pJiZmbChuKT9hOmEudmFsdWU7cmV0dXJuIG8mJlplKGwpPyRyKGwpOmx9cmV0dXJuIFplKGEpP28/JHIoYSk6YnQoYSk6YX19Y2xhc3MgbWcgZXh0ZW5kcyBwZ3tjb25zdHJ1Y3Rvcih0PSExKXtzdXBlcighMSx0KX1zZXQodCxuLHIsbyl7bGV0IHM9dFtuXTtjb25zdCBpPVNlKHQpJiZmbChuKTtpZighdGhpcy5faXNTaGFsbG93KXtjb25zdCB1PWRyKHMpO2lmKCF4bihyKSYmIWRyKHIpJiYocz1qZShzKSxyPWplKHIpKSwhaSYmJGUocykmJiEkZShyKSlyZXR1cm4gdXx8KHMudmFsdWU9ciksITB9Y29uc3QgYT1pP051bWJlcihuKTx0Lmxlbmd0aDpudCh0LG4pLGw9UmVmbGVjdC5zZXQodCxuLHIsJGUodCk/dDpvKTtyZXR1cm4gdD09PWplKG8pJiYoYT9GdChyLHMpJiZPcih0LCJzZXQiLG4scik6T3IodCwiYWRkIixuLHIpKSxsfWRlbGV0ZVByb3BlcnR5KHQsbil7Y29uc3Qgcj1udCh0LG4pO3Rbbl07Y29uc3Qgbz1SZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbik7cmV0dXJuIG8mJnImJk9yKHQsImRlbGV0ZSIsbix2b2lkIDApLG99aGFzKHQsbil7Y29uc3Qgcj1SZWZsZWN0Lmhhcyh0LG4pO3JldHVybigha24obil8fCFkZy5oYXMobikpJiZLdCh0LCJoYXMiLG4pLHJ9b3duS2V5cyh0KXtyZXR1cm4gS3QodCwiaXRlcmF0ZSIsU2UodCk/Imxlbmd0aCI6Um8pLFJlZmxlY3Qub3duS2V5cyh0KX19Y2xhc3MgaGcgZXh0ZW5kcyBwZ3tjb25zdHJ1Y3Rvcih0PSExKXtzdXBlcighMCx0KX1zZXQodCxuKXtyZXR1cm4hMH1kZWxldGVQcm9wZXJ0eSh0LG4pe3JldHVybiEwfX1jb25zdCBsXz1uZXcgbWcsY189bmV3IGhnLHVfPW5ldyBtZyghMCksZl89bmV3IGhnKCEwKSxaYz1lPT5lLFFpPWU9PlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZnVuY3Rpb24gZF8oZSx0LG4pe3JldHVybiBmdW5jdGlvbiguLi5yKXtjb25zdCBvPXRoaXMuX192X3JhdyxzPWplKG8pLGk9ZnMocyksYT1lPT09ImVudHJpZXMifHxlPT09U3ltYm9sLml0ZXJhdG9yJiZpLGw9ZT09PSJrZXlzIiYmaSx1PW9bZV0oLi4uciksYz1uP1pjOnQ/X3M6VW47cmV0dXJuIXQmJkt0KHMsIml0ZXJhdGUiLGw/WGM6Um8pLHZ0KE9iamVjdC5jcmVhdGUodSkse25leHQoKXtjb25zdHt2YWx1ZTpmLGRvbmU6ZH09dS5uZXh0KCk7cmV0dXJuIGQ/e3ZhbHVlOmYsZG9uZTpkfTp7dmFsdWU6YT9bYyhmWzBdKSxjKGZbMV0pXTpjKGYpLGRvbmU6ZH19fSl9fWZ1bmN0aW9uIFlpKGUpe3JldHVybiBmdW5jdGlvbiguLi50KXtyZXR1cm4gZT09PSJkZWxldGUiPyExOmU9PT0iY2xlYXIiP3ZvaWQgMDp0aGlzfX1mdW5jdGlvbiBwXyhlLHQpe2NvbnN0IG49e2dldChvKXtjb25zdCBzPXRoaXMuX192X3JhdyxpPWplKHMpLGE9amUobyk7ZXx8KEZ0KG8sYSkmJkt0KGksImdldCIsbyksS3QoaSwiZ2V0IixhKSk7Y29uc3R7aGFzOmx9PVFpKGkpLHU9dD9aYzplP19zOlVuO2lmKGwuY2FsbChpLG8pKXJldHVybiB1KHMuZ2V0KG8pKTtpZihsLmNhbGwoaSxhKSlyZXR1cm4gdShzLmdldChhKSk7cyE9PWkmJnMuZ2V0KG8pfSxnZXQgc2l6ZSgpe2NvbnN0IG89dGhpcy5fX3ZfcmF3O3JldHVybiFlJiZLdChqZShvKSwiaXRlcmF0ZSIsUm8pLG8uc2l6ZX0saGFzKG8pe2NvbnN0IHM9dGhpcy5fX3ZfcmF3LGk9amUocyksYT1qZShvKTtyZXR1cm4gZXx8KEZ0KG8sYSkmJkt0KGksImhhcyIsbyksS3QoaSwiaGFzIixhKSksbz09PWE/cy5oYXMobyk6cy5oYXMobyl8fHMuaGFzKGEpfSxmb3JFYWNoKG8scyl7Y29uc3QgaT10aGlzLGE9aS5fX3ZfcmF3LGw9amUoYSksdT10P1pjOmU/X3M6VW47cmV0dXJuIWUmJkt0KGwsIml0ZXJhdGUiLFJvKSxhLmZvckVhY2goKGMsZik9Pm8uY2FsbChzLHUoYyksdShmKSxpKSl9fTtyZXR1cm4gdnQobixlP3thZGQ6WWkoImFkZCIpLHNldDpZaSgic2V0IiksZGVsZXRlOllpKCJkZWxldGUiKSxjbGVhcjpZaSgiY2xlYXIiKX06e2FkZChvKXtjb25zdCBzPWplKHRoaXMpLGk9UWkocyksYT1qZShvKSxsPSF0JiYheG4obykmJiFkcihvKT9hOm87cmV0dXJuIGkuaGFzLmNhbGwocyxsKXx8RnQobyxsKSYmaS5oYXMuY2FsbChzLG8pfHxGdChhLGwpJiZpLmhhcy5jYWxsKHMsYSl8fChzLmFkZChsKSxPcihzLCJhZGQiLGwsbCkpLHRoaXN9LHNldChvLHMpeyF0JiYheG4ocykmJiFkcihzKSYmKHM9amUocykpO2NvbnN0IGk9amUodGhpcykse2hhczphLGdldDpsfT1RaShpKTtsZXQgdT1hLmNhbGwoaSxvKTt1fHwobz1qZShvKSx1PWEuY2FsbChpLG8pKTtjb25zdCBjPWwuY2FsbChpLG8pO3JldHVybiBpLnNldChvLHMpLHU/RnQocyxjKSYmT3IoaSwic2V0IixvLHMpOk9yKGksImFkZCIsbyxzKSx0aGlzfSxkZWxldGUobyl7Y29uc3Qgcz1qZSh0aGlzKSx7aGFzOmksZ2V0OmF9PVFpKHMpO2xldCBsPWkuY2FsbChzLG8pO2x8fChvPWplKG8pLGw9aS5jYWxsKHMsbykpLGEmJmEuY2FsbChzLG8pO2NvbnN0IHU9cy5kZWxldGUobyk7cmV0dXJuIGwmJk9yKHMsImRlbGV0ZSIsbyx2b2lkIDApLHV9LGNsZWFyKCl7Y29uc3Qgbz1qZSh0aGlzKSxzPW8uc2l6ZSE9PTAsaT1vLmNsZWFyKCk7cmV0dXJuIHMmJk9yKG8sImNsZWFyIix2b2lkIDAsdm9pZCAwKSxpfX0pLFsia2V5cyIsInZhbHVlcyIsImVudHJpZXMiLFN5bWJvbC5pdGVyYXRvcl0uZm9yRWFjaChvPT57bltvXT1kXyhvLGUsdCl9KSxufWZ1bmN0aW9uIHlsKGUsdCl7Y29uc3Qgbj1wXyhlLHQpO3JldHVybihyLG8scyk9Pm89PT0iX192X2lzUmVhY3RpdmUiPyFlOm89PT0iX192X2lzUmVhZG9ubHkiP2U6bz09PSJfX3ZfcmF3Ij9yOlJlZmxlY3QuZ2V0KG50KG4sbykmJm8gaW4gcj9uOnIsbyxzKX1jb25zdCBtXz17Z2V0OnlsKCExLCExKX0saF89e2dldDp5bCghMSwhMCl9LGdfPXtnZXQ6eWwoITAsITEpfSx5Xz17Z2V0OnlsKCEwLCEwKX0sZ2c9bmV3IFdlYWtNYXAseWc9bmV3IFdlYWtNYXAsdmc9bmV3IFdlYWtNYXAsYmc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdl8oZSl7c3dpdGNoKGUpe2Nhc2UiT2JqZWN0IjpjYXNlIkFycmF5IjpyZXR1cm4gMTtjYXNlIk1hcCI6Y2FzZSJTZXQiOmNhc2UiV2Vha01hcCI6Y2FzZSJXZWFrU2V0IjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBiXyhlKXtyZXR1cm4gZS5fX3Zfc2tpcHx8IU9iamVjdC5pc0V4dGVuc2libGUoZSk/MDp2XyhVdyhlKSl9ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIGRyKGUpP2U6dmwoZSwhMSxsXyxtXyxnZyl9ZnVuY3Rpb24gUG4oZSl7cmV0dXJuIHZsKGUsITEsdV8saF8seWcpfWZ1bmN0aW9uICRyKGUpe3JldHVybiB2bChlLCEwLGNfLGdfLHZnKX1mdW5jdGlvbiBUcihlKXtyZXR1cm4gdmwoZSwhMCxmXyx5XyxiZyl9ZnVuY3Rpb24gdmwoZSx0LG4scixvKXtpZighWmUoZSl8fGUuX192X3JhdyYmISh0JiZlLl9fdl9pc1JlYWN0aXZlKSlyZXR1cm4gZTtjb25zdCBzPWJfKGUpO2lmKHM9PT0wKXJldHVybiBlO2NvbnN0IGk9by5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPW5ldyBQcm94eShlLHM9PT0yP3I6bik7cmV0dXJuIG8uc2V0KGUsYSksYX1mdW5jdGlvbiBjcihlKXtyZXR1cm4gZHIoZSk/Y3IoZS5fX3ZfcmF3KTohIShlJiZlLl9fdl9pc1JlYWN0aXZlKX1mdW5jdGlvbiBkcihlKXtyZXR1cm4hIShlJiZlLl9fdl9pc1JlYWRvbmx5KX1mdW5jdGlvbiB4bihlKXtyZXR1cm4hIShlJiZlLl9fdl9pc1NoYWxsb3cpfWZ1bmN0aW9uIGJsKGUpe3JldHVybiBlPyEhZS5fX3ZfcmF3OiExfWZ1bmN0aW9uIGplKGUpe2NvbnN0IHQ9ZSYmZS5fX3ZfcmF3O3JldHVybiB0P2plKHQpOmV9ZnVuY3Rpb24gTG8oZSl7cmV0dXJuIW50KGUsIl9fdl9za2lwIikmJk9iamVjdC5pc0V4dGVuc2libGUoZSkmJlhoKGUsIl9fdl9za2lwIiwhMCksZX1jb25zdCBVbj1lPT5aZShlKT9idChlKTplLF9zPWU9PlplKGUpPyRyKGUpOmU7ZnVuY3Rpb24gJGUoZSl7cmV0dXJuIGU/ZS5fX3ZfaXNSZWY9PT0hMDohMX1mdW5jdGlvbiBHKGUpe3JldHVybiB3ZyhlLCExKX1mdW5jdGlvbiBPZShlKXtyZXR1cm4gd2coZSwhMCl9ZnVuY3Rpb24gd2coZSx0KXtyZXR1cm4gJGUoZSk/ZTpuZXcgd18oZSx0KX1jbGFzcyB3X3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuZGVwPW5ldyBobCx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLl9fdl9pc1NoYWxsb3c9ITEsdGhpcy5fcmF3VmFsdWU9bj90OmplKHQpLHRoaXMuX3ZhbHVlPW4/dDpVbih0KSx0aGlzLl9fdl9pc1NoYWxsb3c9bn1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5kZXAudHJhY2soKSx0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7Y29uc3Qgbj10aGlzLl9yYXdWYWx1ZSxyPXRoaXMuX192X2lzU2hhbGxvd3x8eG4odCl8fGRyKHQpO3Q9cj90OmplKHQpLEZ0KHQsbikmJih0aGlzLl9yYXdWYWx1ZT10LHRoaXMuX3ZhbHVlPXI/dDpVbih0KSx0aGlzLmRlcC50cmlnZ2VyKCkpfX1mdW5jdGlvbiBfXyhlKXtlLmRlcCYmZS5kZXAudHJpZ2dlcigpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuICRlKGUpP2UudmFsdWU6ZX1mdW5jdGlvbiBFZShlKXtyZXR1cm4gQ2UoZSk/ZSgpOmcoZSl9Y29uc3QgeF89e2dldDooZSx0LG4pPT50PT09Il9fdl9yYXciP2U6ZyhSZWZsZWN0LmdldChlLHQsbikpLHNldDooZSx0LG4scik9Pntjb25zdCBvPWVbdF07cmV0dXJuICRlKG8pJiYhJGUobik/KG8udmFsdWU9biwhMCk6UmVmbGVjdC5zZXQoZSx0LG4scil9fTtmdW5jdGlvbiBfZyhlKXtyZXR1cm4gY3IoZSk/ZTpuZXcgUHJveHkoZSx4Xyl9Y2xhc3MgU197Y29uc3RydWN0b3IodCl7dGhpcy5fX3ZfaXNSZWY9ITAsdGhpcy5fdmFsdWU9dm9pZCAwO2NvbnN0IG49dGhpcy5kZXA9bmV3IGhsLHtnZXQ6cixzZXQ6b309dChuLnRyYWNrLmJpbmQobiksbi50cmlnZ2VyLmJpbmQobikpO3RoaXMuX2dldD1yLHRoaXMuX3NldD1vfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXQoKX1zZXQgdmFsdWUodCl7dGhpcy5fc2V0KHQpfX1mdW5jdGlvbiB3bChlKXtyZXR1cm4gbmV3IFNfKGUpfWZ1bmN0aW9uIEVuKGUpe2NvbnN0IHQ9U2UoZSk/bmV3IEFycmF5KGUubGVuZ3RoKTp7fTtmb3IoY29uc3QgbiBpbiBlKXRbbl09eGcoZSxuKTtyZXR1cm4gdH1jbGFzcyBrX3tjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5fb2JqZWN0PXQsdGhpcy5fZGVmYXVsdFZhbHVlPXIsdGhpcy5fX3ZfaXNSZWY9ITAsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuX2tleT1rbihuKT9uOlN0cmluZyhuKSx0aGlzLl9yYXc9amUodCk7bGV0IG89ITAscz10O2lmKCFTZSh0KXx8a24odGhpcy5fa2V5KXx8IWZsKHRoaXMuX2tleSkpZG8gbz0hYmwocyl8fHhuKHMpO3doaWxlKG8mJihzPXMuX192X3JhdykpO3RoaXMuX3NoYWxsb3c9b31nZXQgdmFsdWUoKXtsZXQgdD10aGlzLl9vYmplY3RbdGhpcy5fa2V5XTtyZXR1cm4gdGhpcy5fc2hhbGxvdyYmKHQ9Zyh0KSksdGhpcy5fdmFsdWU9dD09PXZvaWQgMD90aGlzLl9kZWZhdWx0VmFsdWU6dH1zZXQgdmFsdWUodCl7aWYodGhpcy5fc2hhbGxvdyYmJGUodGhpcy5fcmF3W3RoaXMuX2tleV0pKXtjb25zdCBuPXRoaXMuX29iamVjdFt0aGlzLl9rZXldO2lmKCRlKG4pKXtuLnZhbHVlPXQ7cmV0dXJufX10aGlzLl9vYmplY3RbdGhpcy5fa2V5XT10fWdldCBkZXAoKXtyZXR1cm4gcl8odGhpcy5fcmF3LHRoaXMuX2tleSl9fWNsYXNzIEVfe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzUmVhZG9ubHk9ITAsdGhpcy5fdmFsdWU9dm9pZCAwfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXR0ZXIoKX19ZnVuY3Rpb24geXQoZSx0LG4pe3JldHVybiAkZShlKT9lOkNlKGUpP25ldyBFXyhlKTpaZShlKSYmYXJndW1lbnRzLmxlbmd0aD4xP3hnKGUsdCxuKTpHKGUpfWZ1bmN0aW9uIHhnKGUsdCxuKXtyZXR1cm4gbmV3IGtfKGUsdCxuKX1jbGFzcyBUX3tjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5mbj10LHRoaXMuc2V0dGVyPW4sdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuZGVwPW5ldyBobCh0aGlzKSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9MTYsdGhpcy5nbG9iYWxWZXJzaW9uPW1pLTEsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmVmZmVjdD10aGlzLHRoaXMuX192X2lzUmVhZG9ubHk9IW4sdGhpcy5pc1NTUj1yfW5vdGlmeSgpe2lmKHRoaXMuZmxhZ3N8PTE2LCEodGhpcy5mbGFncyY4KSYmY3QhPT10aGlzKXJldHVybiBpZyh0aGlzLCEwKSwhMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuZGVwLnRyYWNrKCk7cmV0dXJuIGNnKHRoaXMpLHQmJih0LnZlcnNpb249dGhpcy5kZXAudmVyc2lvbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe3RoaXMuc2V0dGVyJiZ0aGlzLnNldHRlcih0KX19ZnVuY3Rpb24gQ18oZSx0LG49ITEpe2xldCByLG87cmV0dXJuIENlKGUpP3I9ZToocj1lLmdldCxvPWUuc2V0KSxuZXcgVF8ocixvLG4pfWNvbnN0IEppPXt9LCRhPW5ldyBXZWFrTWFwO2xldCBUbztmdW5jdGlvbiBBXyhlLHQ9ITEsbj1Ubyl7aWYobil7bGV0IHI9JGEuZ2V0KG4pO3J8fCRhLnNldChuLHI9W10pLHIucHVzaChlKX19ZnVuY3Rpb24gT18oZSx0LG49WWUpe2NvbnN0e2ltbWVkaWF0ZTpyLGRlZXA6byxvbmNlOnMsc2NoZWR1bGVyOmksYXVnbWVudEpvYjphLGNhbGw6bH09bix1PWI9Pm8/Yjp4bihiKXx8bz09PSExfHxvPT09MD9QcihiLDEpOlByKGIpO2xldCBjLGYsZCxwLG09ITEseT0hMTtpZigkZShlKT8oZj0oKT0+ZS52YWx1ZSxtPXhuKGUpKTpjcihlKT8oZj0oKT0+dShlKSxtPSEwKTpTZShlKT8oeT0hMCxtPWUuc29tZShiPT5jcihiKXx8eG4oYikpLGY9KCk9PmUubWFwKGI9PntpZigkZShiKSlyZXR1cm4gYi52YWx1ZTtpZihjcihiKSlyZXR1cm4gdShiKTtpZihDZShiKSlyZXR1cm4gbD9sKGIsMik6YigpfSkpOkNlKGUpP3Q/Zj1sPygpPT5sKGUsMik6ZTpmPSgpPT57aWYoZCl7RHIoKTt0cnl7ZCgpfWZpbmFsbHl7THIoKX19Y29uc3QgYj1UbztUbz1jO3RyeXtyZXR1cm4gbD9sKGUsMyxbcF0pOmUocCl9ZmluYWxseXtUbz1ifX06Zj1scix0JiZvKXtjb25zdCBiPWYseD1vPT09ITA/MS8wOm87Zj0oKT0+UHIoYigpLHgpfWNvbnN0IF89cXIoKSx3PSgpPT57Yy5zdG9wKCksXyYmXy5hY3RpdmUmJmZmKF8uZWZmZWN0cyxjKX07aWYocyYmdCl7Y29uc3QgYj10O3Q9KC4uLngpPT57YiguLi54KSx3KCl9fWxldCB2PXk/bmV3IEFycmF5KGUubGVuZ3RoKS5maWxsKEppKTpKaTtjb25zdCBoPWI9PntpZighKCEoYy5mbGFncyYxKXx8IWMuZGlydHkmJiFiKSlpZih0KXtjb25zdCB4PWMucnVuKCk7aWYob3x8bXx8KHk/eC5zb21lKChTLGspPT5GdChTLHZba10pKTpGdCh4LHYpKSl7ZCYmZCgpO2NvbnN0IFM9VG87VG89Yzt0cnl7Y29uc3Qgaz1beCx2PT09Smk/dm9pZCAwOnkmJnZbMF09PT1KaT9bXTp2LHBdO3Y9eCxsP2wodCwzLGspOnQoLi4uayl9ZmluYWxseXtUbz1TfX19ZWxzZSBjLnJ1bigpfTtyZXR1cm4gYSYmYShoKSxjPW5ldyBvZyhmKSxjLnNjaGVkdWxlcj1pPygpPT5pKGgsITEpOmgscD1iPT5BXyhiLCExLGMpLGQ9Yy5vblN0b3A9KCk9Pntjb25zdCBiPSRhLmdldChjKTtpZihiKXtpZihsKWwoYiw0KTtlbHNlIGZvcihjb25zdCB4IG9mIGIpeCgpOyRhLmRlbGV0ZShjKX19LHQ/cj9oKCEwKTp2PWMucnVuKCk6aT9pKGguYmluZChudWxsLCEwKSwhMCk6Yy5ydW4oKSx3LnBhdXNlPWMucGF1c2UuYmluZChjKSx3LnJlc3VtZT1jLnJlc3VtZS5iaW5kKGMpLHcuc3RvcD13LHd9ZnVuY3Rpb24gUHIoZSx0PTEvMCxuKXtpZih0PD0wfHwhWmUoZSl8fGUuX192X3NraXB8fChuPW58fG5ldyBNYXAsKG4uZ2V0KGUpfHwwKT49dCkpcmV0dXJuIGU7aWYobi5zZXQoZSx0KSx0LS0sJGUoZSkpUHIoZS52YWx1ZSx0LG4pO2Vsc2UgaWYoU2UoZSkpZm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspUHIoZVtyXSx0LG4pO2Vsc2UgaWYoWWgoZSl8fGZzKGUpKWUuZm9yRWFjaChyPT57UHIocix0LG4pfSk7ZWxzZSBpZihkZihlKSl7Zm9yKGNvbnN0IHIgaW4gZSlQcihlW3JdLHQsbik7Zm9yKGNvbnN0IHIgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSlPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmUHIoZVtyXSx0LG4pfXJldHVybiBlfWZ1bmN0aW9uIERpKGUsdCxuLHIpe3RyeXtyZXR1cm4gcj9lKC4uLnIpOmUoKX1jYXRjaChvKXtOcyhvLHQsbil9fWZ1bmN0aW9uIEhuKGUsdCxuLHIpe2lmKENlKGUpKXtjb25zdCBvPURpKGUsdCxuLHIpO3JldHVybiBvJiZ1bChvKSYmby5jYXRjaChzPT57TnMocyx0LG4pfSksb31pZihTZShlKSl7Y29uc3Qgbz1bXTtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKylvLnB1c2goSG4oZVtzXSx0LG4scikpO3JldHVybiBvfX1mdW5jdGlvbiBOcyhlLHQsbixyPSEwKXtjb25zdCBvPXQ/dC52bm9kZTpudWxsLHtlcnJvckhhbmRsZXI6cyx0aHJvd1VuaGFuZGxlZEVycm9ySW5Qcm9kdWN0aW9uOml9PXQmJnQuYXBwQ29udGV4dC5jb25maWd8fFllO2lmKHQpe2xldCBhPXQucGFyZW50O2NvbnN0IGw9dC5wcm94eSx1PWBodHRwczovL3Z1ZWpzLm9yZy9lcnJvci1yZWZlcmVuY2UvI3J1bnRpbWUtJHtufWA7Zm9yKDthOyl7Y29uc3QgYz1hLmVjO2lmKGMpe2ZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7ZisrKWlmKGNbZl0oZSxsLHUpPT09ITEpcmV0dXJufWE9YS5wYXJlbnR9aWYocyl7RHIoKSxEaShzLG51bGwsMTAsW2UsbCx1XSksTHIoKTtyZXR1cm59fVBfKGUsbixvLHIsaSl9ZnVuY3Rpb24gUF8oZSx0LG4scj0hMCxvPSExKXtpZihvKXRocm93IGV9Y29uc3Qgbm49W107bGV0IHJyPS0xO2NvbnN0IGRzPVtdO2xldCBubz1udWxsLG9zPTA7Y29uc3QgU2c9UHJvbWlzZS5yZXNvbHZlKCk7bGV0IE1hPW51bGw7ZnVuY3Rpb24gaXQoZSl7Y29uc3QgdD1NYXx8U2c7cmV0dXJuIGU/dC50aGVuKHRoaXM/ZS5iaW5kKHRoaXMpOmUpOnR9ZnVuY3Rpb24gSV8oZSl7bGV0IHQ9cnIrMSxuPW5uLmxlbmd0aDtmb3IoO3Q8bjspe2NvbnN0IHI9dCtuPj4+MSxvPW5uW3JdLHM9eWkobyk7czxlfHxzPT09ZSYmby5mbGFncyYyP3Q9cisxOm49cn1yZXR1cm4gdH1mdW5jdGlvbiB5ZihlKXtpZighKGUuZmxhZ3MmMSkpe2NvbnN0IHQ9eWkoZSksbj1ubltubi5sZW5ndGgtMV07IW58fCEoZS5mbGFncyYyKSYmdD49eWkobik/bm4ucHVzaChlKTpubi5zcGxpY2UoSV8odCksMCxlKSxlLmZsYWdzfD0xLGtnKCl9fWZ1bmN0aW9uIGtnKCl7TWF8fChNYT1TZy50aGVuKEVnKSl9ZnVuY3Rpb24gZ2koZSl7U2UoZSk/ZHMucHVzaCguLi5lKTpubyYmZS5pZD09PS0xP25vLnNwbGljZShvcysxLDAsZSk6ZS5mbGFncyYxfHwoZHMucHVzaChlKSxlLmZsYWdzfD0xKSxrZygpfWZ1bmN0aW9uIFZkKGUsdCxuPXJyKzEpe2Zvcig7bjxubi5sZW5ndGg7bisrKXtjb25zdCByPW5uW25dO2lmKHImJnIuZmxhZ3MmMil7aWYoZSYmci5pZCE9PWUudWlkKWNvbnRpbnVlO25uLnNwbGljZShuLDEpLG4tLSxyLmZsYWdzJjQmJihyLmZsYWdzJj0tMikscigpLHIuZmxhZ3MmNHx8KHIuZmxhZ3MmPS0yKX19fWZ1bmN0aW9uIEJhKGUpe2lmKGRzLmxlbmd0aCl7Y29uc3QgdD1bLi4ubmV3IFNldChkcyldLnNvcnQoKG4scik9PnlpKG4pLXlpKHIpKTtpZihkcy5sZW5ndGg9MCxubyl7bm8ucHVzaCguLi50KTtyZXR1cm59Zm9yKG5vPXQsb3M9MDtvczxuby5sZW5ndGg7b3MrKyl7Y29uc3Qgbj1ub1tvc107bi5mbGFncyY0JiYobi5mbGFncyY9LTIpLG4uZmxhZ3MmOHx8bigpLG4uZmxhZ3MmPS0yfW5vPW51bGwsb3M9MH19Y29uc3QgeWk9ZT0+ZS5pZD09bnVsbD9lLmZsYWdzJjI/LTE6MS8wOmUuaWQ7ZnVuY3Rpb24gRWcoZSl7dHJ5e2Zvcihycj0wO3JyPG5uLmxlbmd0aDtycisrKXtjb25zdCB0PW5uW3JyXTt0JiYhKHQuZmxhZ3MmOCkmJih0LmZsYWdzJjQmJih0LmZsYWdzJj0tMiksRGkodCx0LmksdC5pPzE1OjE0KSx0LmZsYWdzJjR8fCh0LmZsYWdzJj0tMikpfX1maW5hbGx5e2Zvcig7cnI8bm4ubGVuZ3RoO3JyKyspe2NvbnN0IHQ9bm5bcnJdO3QmJih0LmZsYWdzJj0tMil9cnI9LTEsbm4ubGVuZ3RoPTAsQmEoKSxNYT1udWxsLChubi5sZW5ndGh8fGRzLmxlbmd0aCkmJkVnKCl9fWxldCBqdD1udWxsLFRnPW51bGw7ZnVuY3Rpb24gcWEoZSl7Y29uc3QgdD1qdDtyZXR1cm4ganQ9ZSxUZz1lJiZlLnR5cGUuX19zY29wZUlkfHxudWxsLHR9ZnVuY3Rpb24gTShlLHQ9anQsbil7aWYoIXR8fGUuX24pcmV0dXJuIGU7Y29uc3Qgcj0oLi4ubyk9PntyLl9kJiZVYSgtMSk7Y29uc3Qgcz1xYSh0KTtsZXQgaTt0cnl7aT1lKC4uLm8pfWZpbmFsbHl7cWEocyksci5fZCYmVWEoMSl9cmV0dXJuIGl9O3JldHVybiByLl9uPSEwLHIuX2M9ITAsci5fZD0hMCxyfWZ1bmN0aW9uIFJfKGUsdCl7aWYoanQ9PT1udWxsKXJldHVybiBlO2NvbnN0IG49RWwoanQpLHI9ZS5kaXJzfHwoZS5kaXJzPVtdKTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7bGV0W3MsaSxhLGw9WWVdPXRbb107cyYmKENlKHMpJiYocz17bW91bnRlZDpzLHVwZGF0ZWQ6c30pLHMuZGVlcCYmUHIoaSksci5wdXNoKHtkaXI6cyxpbnN0YW5jZTpuLHZhbHVlOmksb2xkVmFsdWU6dm9pZCAwLGFyZzphLG1vZGlmaWVyczpsfSkpfXJldHVybiBlfWZ1bmN0aW9uIG9yKGUsdCxuLHIpe2NvbnN0IG89ZS5kaXJzLHM9dCYmdC5kaXJzO2ZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKXtjb25zdCBhPW9baV07cyYmKGEub2xkVmFsdWU9c1tpXS52YWx1ZSk7bGV0IGw9YS5kaXJbcl07bCYmKERyKCksSG4obCxuLDgsW2UuZWwsYSxlLHRdKSxMcigpKX19ZnVuY3Rpb24gTnQoZSx0KXtpZih6dCl7bGV0IG49enQucHJvdmlkZXM7Y29uc3Qgcj16dC5wYXJlbnQmJnp0LnBhcmVudC5wcm92aWRlcztyPT09biYmKG49enQucHJvdmlkZXM9T2JqZWN0LmNyZWF0ZShyKSksbltlXT10fX1mdW5jdGlvbiBLZShlLHQsbj0hMSl7Y29uc3Qgcj1tdCgpO2lmKHJ8fE5vKXtsZXQgbz1Obz9Oby5fY29udGV4dC5wcm92aWRlczpyP3IucGFyZW50PT1udWxsfHxyLmNlP3Iudm5vZGUuYXBwQ29udGV4dCYmci52bm9kZS5hcHBDb250ZXh0LnByb3ZpZGVzOnIucGFyZW50LnByb3ZpZGVzOnZvaWQgMDtpZihvJiZlIGluIG8pcmV0dXJuIG9bZV07aWYoYXJndW1lbnRzLmxlbmd0aD4xKXJldHVybiBuJiZDZSh0KT90LmNhbGwociYmci5wcm94eSk6dH19ZnVuY3Rpb24gTGkoKXtyZXR1cm4hIShtdCgpfHxObyl9Y29uc3QgTl89U3ltYm9sLmZvcigidi1zY3giKSxEXz0oKT0+S2UoTl8pO2Z1bmN0aW9uIG9uKGUsdCl7cmV0dXJuICRpKGUsbnVsbCx0KX1mdW5jdGlvbiBDZyhlLHQpe3JldHVybiAkaShlLG51bGwse2ZsdXNoOiJwb3N0In0pfWZ1bmN0aW9uIExfKGUsdCl7cmV0dXJuICRpKGUsbnVsbCx7Zmx1c2g6InN5bmMifSl9ZnVuY3Rpb24gUGUoZSx0LG4pe3JldHVybiAkaShlLHQsbil9ZnVuY3Rpb24gJGkoZSx0LG49WWUpe2NvbnN0e2ltbWVkaWF0ZTpyLGRlZXA6byxmbHVzaDpzLG9uY2U6aX09bixhPXZ0KHt9LG4pLGw9dCYmcnx8IXQmJnMhPT0icG9zdCI7bGV0IHU7aWYoQm8pe2lmKHM9PT0ic3luYyIpe2NvbnN0IHA9RF8oKTt1PXAuX193YXRjaGVySGFuZGxlc3x8KHAuX193YXRjaGVySGFuZGxlcz1bXSl9ZWxzZSBpZighbCl7Y29uc3QgcD0oKT0+e307cmV0dXJuIHAuc3RvcD1scixwLnJlc3VtZT1scixwLnBhdXNlPWxyLHB9fWNvbnN0IGM9enQ7YS5jYWxsPShwLG0seSk9PkhuKHAsYyxtLHkpO2xldCBmPSExO3M9PT0icG9zdCI/YS5zY2hlZHVsZXI9cD0+e1R0KHAsYyYmYy5zdXNwZW5zZSl9OnMhPT0ic3luYyImJihmPSEwLGEuc2NoZWR1bGVyPShwLG0pPT57bT9wKCk6eWYocCl9KSxhLmF1Z21lbnRKb2I9cD0+e3QmJihwLmZsYWdzfD00KSxmJiYocC5mbGFnc3w9MixjJiYocC5pZD1jLnVpZCxwLmk9YykpfTtjb25zdCBkPU9fKGUsdCxhKTtyZXR1cm4gQm8mJih1P3UucHVzaChkKTpsJiZkKCkpLGR9ZnVuY3Rpb24gJF8oZSx0LG4pe2NvbnN0IHI9dGhpcy5wcm94eSxvPWZ0KGUpP2UuaW5jbHVkZXMoIi4iKT9BZyhyLGUpOigpPT5yW2VdOmUuYmluZChyLHIpO2xldCBzO0NlKHQpP3M9dDoocz10LmhhbmRsZXIsbj10KTtjb25zdCBpPURzKHRoaXMpLGE9JGkobyxzLmJpbmQociksbik7cmV0dXJuIGkoKSxhfWZ1bmN0aW9uIEFnKGUsdCl7Y29uc3Qgbj10LnNwbGl0KCIuIik7cmV0dXJuKCk9PntsZXQgcj1lO2ZvcihsZXQgbz0wO288bi5sZW5ndGgmJnI7bysrKXI9cltuW29dXTtyZXR1cm4gcn19Y29uc3Qgdm89bmV3IFdlYWtNYXAsT2c9U3ltYm9sKCJfdnRlIiksUGc9ZT0+ZS5fX2lzVGVsZXBvcnQsT289ZT0+ZSYmKGUuZGlzYWJsZWR8fGUuZGlzYWJsZWQ9PT0iIiksTV89ZT0+ZSYmKGUuZGVmZXJ8fGUuZGVmZXI9PT0iIiksVWQ9ZT0+dHlwZW9mIFNWR0VsZW1lbnQ8InUiJiZlIGluc3RhbmNlb2YgU1ZHRWxlbWVudCxIZD1lPT50eXBlb2YgTWF0aE1MRWxlbWVudD09ImZ1bmN0aW9uIiYmZSBpbnN0YW5jZW9mIE1hdGhNTEVsZW1lbnQsZXU9KGUsdCk9Pntjb25zdCBuPWUmJmUudG87cmV0dXJuIGZ0KG4pP3Q/dChuKTpudWxsOm59LEJfPXtuYW1lOiJUZWxlcG9ydCIsX19pc1RlbGVwb3J0OiEwLHByb2Nlc3MoZSx0LG4scixvLHMsaSxhLGwsdSl7Y29uc3R7bWM6YyxwYzpmLHBiYzpkLG86e2luc2VydDpwLHF1ZXJ5U2VsZWN0b3I6bSxjcmVhdGVUZXh0OnksY3JlYXRlQ29tbWVudDpffX09dSx3PU9vKHQucHJvcHMpO2xldHtkeW5hbWljQ2hpbGRyZW46dn09dDtjb25zdCBoPShTLGssVCk9PntTLnNoYXBlRmxhZyYxNiYmYyhTLmNoaWxkcmVuLGssVCxvLHMsaSxhLGwpfSxiPShTPXQpPT57Y29uc3Qgaz1PbyhTLnByb3BzKSxUPVMudGFyZ2V0PWV1KFMucHJvcHMsbSksQz10dShULFMseSxwKTtUJiYoaSE9PSJzdmciJiZVZChUKT9pPSJzdmciOmkhPT0ibWF0aG1sIiYmSGQoVCkmJihpPSJtYXRobWwiKSxvJiZvLmlzQ0UmJihvLmNlLl90ZWxlcG9ydFRhcmdldHN8fChvLmNlLl90ZWxlcG9ydFRhcmdldHM9bmV3IFNldCkpLmFkZChUKSxrfHwoaChTLFQsQyksSnMoUywhMSkpKX0seD1TPT57Y29uc3Qgaz0oKT0+e3ZvLmdldChTKT09PWsmJih2by5kZWxldGUoUyksT28oUy5wcm9wcykmJihoKFMsbixTLmFuY2hvciksSnMoUywhMCkpLGIoUykpfTt2by5zZXQoUyxrKSxUdChrLHMpfTtpZihlPT1udWxsKXtjb25zdCBTPXQuZWw9eSgiIiksaz10LmFuY2hvcj15KCIiKTtpZihwKFMsbixyKSxwKGssbixyKSxNXyh0LnByb3BzKXx8cyYmcy5wZW5kaW5nQnJhbmNoKXt4KHQpO3JldHVybn13JiYoaCh0LG4sayksSnModCwhMCkpLGIoKX1lbHNle3QuZWw9ZS5lbDtjb25zdCBTPXQuYW5jaG9yPWUuYW5jaG9yLGs9dm8uZ2V0KGUpO2lmKGspe2suZmxhZ3N8PTgsdm8uZGVsZXRlKGUpLHgodCk7cmV0dXJufXQudGFyZ2V0U3RhcnQ9ZS50YXJnZXRTdGFydDtjb25zdCBUPXQudGFyZ2V0PWUudGFyZ2V0LEM9dC50YXJnZXRBbmNob3I9ZS50YXJnZXRBbmNob3IsUD1PbyhlLnByb3BzKSxGPVA/bjpULEQ9UD9TOkM7aWYoaT09PSJzdmcifHxVZChUKT9pPSJzdmciOihpPT09Im1hdGhtbCJ8fEhkKFQpKSYmKGk9Im1hdGhtbCIpLHY/KGQoZS5keW5hbWljQ2hpbGRyZW4sdixGLG8scyxpLGEpLFRmKGUsdCwhMCkpOmx8fGYoZSx0LEYsRCxvLHMsaSxhLCExKSx3KVA/dC5wcm9wcyYmZS5wcm9wcyYmdC5wcm9wcy50byE9PWUucHJvcHMudG8mJih0LnByb3BzLnRvPWUucHJvcHMudG8pOlhpKHQsbixTLHUsMSk7ZWxzZSBpZigodC5wcm9wcyYmdC5wcm9wcy50bykhPT0oZS5wcm9wcyYmZS5wcm9wcy50bykpe2NvbnN0IFc9dC50YXJnZXQ9ZXUodC5wcm9wcyxtKTtXJiZYaSh0LFcsbnVsbCx1LDApfWVsc2UgUCYmWGkodCxULEMsdSwxKTtKcyh0LHcpfX0scmVtb3ZlKGUsdCxuLHt1bTpyLG86e3JlbW92ZTpvfX0scyl7Y29uc3R7c2hhcGVGbGFnOmksY2hpbGRyZW46YSxhbmNob3I6bCx0YXJnZXRTdGFydDp1LHRhcmdldEFuY2hvcjpjLHRhcmdldDpmLHByb3BzOmR9PWU7bGV0IHA9c3x8IU9vKGQpO2NvbnN0IG09dm8uZ2V0KGUpO2lmKG0mJihtLmZsYWdzfD04LHZvLmRlbGV0ZShlKSxwPSExKSxmJiYobyh1KSxvKGMpKSxzJiZvKGwpLGkmMTYpZm9yKGxldCB5PTA7eTxhLmxlbmd0aDt5Kyspe2NvbnN0IF89YVt5XTtyKF8sdCxuLHAsISFfLmR5bmFtaWNDaGlsZHJlbil9fSxtb3ZlOlhpLGh5ZHJhdGU6cV99O2Z1bmN0aW9uIFhpKGUsdCxuLHtvOntpbnNlcnQ6cn0sbTpvfSxzPTIpe3M9PT0wJiZyKGUudGFyZ2V0QW5jaG9yLHQsbik7Y29uc3R7ZWw6aSxhbmNob3I6YSxzaGFwZUZsYWc6bCxjaGlsZHJlbjp1LHByb3BzOmN9PWUsZj1zPT09MjtpZihmJiZyKGksdCxuKSwoIWZ8fE9vKGMpKSYmbCYxNilmb3IobGV0IGQ9MDtkPHUubGVuZ3RoO2QrKylvKHVbZF0sdCxuLDIpO2YmJnIoYSx0LG4pfWZ1bmN0aW9uIHFfKGUsdCxuLHIsbyxzLHtvOntuZXh0U2libGluZzppLHBhcmVudE5vZGU6YSxxdWVyeVNlbGVjdG9yOmwsaW5zZXJ0OnUsY3JlYXRlVGV4dDpjfX0sZil7ZnVuY3Rpb24gZChfLHcpe2xldCB2PXc7Zm9yKDt2Oyl7aWYodiYmdi5ub2RlVHlwZT09PTgpe2lmKHYuZGF0YT09PSJ0ZWxlcG9ydCBzdGFydCBhbmNob3IiKXQudGFyZ2V0U3RhcnQ9djtlbHNlIGlmKHYuZGF0YT09PSJ0ZWxlcG9ydCBhbmNob3IiKXt0LnRhcmdldEFuY2hvcj12LF8uX2xwYT10LnRhcmdldEFuY2hvciYmaSh0LnRhcmdldEFuY2hvcik7YnJlYWt9fXY9aSh2KX19ZnVuY3Rpb24gcChfLHcpe3cuYW5jaG9yPWYoaShfKSx3LGEoXyksbixyLG8scyl9Y29uc3QgbT10LnRhcmdldD1ldSh0LnByb3BzLGwpLHk9T28odC5wcm9wcyk7aWYobSl7Y29uc3QgXz1tLl9scGF8fG0uZmlyc3RDaGlsZDt0LnNoYXBlRmxhZyYxNiYmKHk/KHAoZSx0KSxkKG0sXyksdC50YXJnZXRBbmNob3J8fHR1KG0sdCxjLHUsYShlKT09PW0/ZTpudWxsKSk6KHQuYW5jaG9yPWkoZSksZChtLF8pLHQudGFyZ2V0QW5jaG9yfHx0dShtLHQsYyx1KSxmKF8mJmkoXyksdCxtLG4scixvLHMpKSksSnModCx5KX1lbHNlIHkmJnQuc2hhcGVGbGFnJjE2JiYocChlLHQpLHQudGFyZ2V0U3RhcnQ9ZSx0LnRhcmdldEFuY2hvcj1pKGUpKTtyZXR1cm4gdC5hbmNob3ImJmkodC5hbmNob3IpfWNvbnN0IHZmPUJfO2Z1bmN0aW9uIEpzKGUsdCl7Y29uc3Qgbj1lLmN0eDtpZihuJiZuLnV0KXtsZXQgcixvO2Zvcih0PyhyPWUuZWwsbz1lLmFuY2hvcik6KHI9ZS50YXJnZXRTdGFydCxvPWUudGFyZ2V0QW5jaG9yKTtyJiZyIT09bzspci5ub2RlVHlwZT09PTEmJnIuc2V0QXR0cmlidXRlKCJkYXRhLXYtb3duZXIiLG4udWlkKSxyPXIubmV4dFNpYmxpbmc7bi51dCgpfX1mdW5jdGlvbiB0dShlLHQsbixyLG89bnVsbCl7Y29uc3Qgcz10LnRhcmdldFN0YXJ0PW4oIiIpLGk9dC50YXJnZXRBbmNob3I9bigiIik7cmV0dXJuIHNbT2ddPWksZSYmKHIocyxlLG8pLHIoaSxlLG8pKSxpfWNvbnN0IHNyPVN5bWJvbCgiX2xlYXZlQ2IiKSxGcz1TeW1ib2woIl9lbnRlckNiIik7ZnVuY3Rpb24gRl8oKXtjb25zdCBlPXtpc01vdW50ZWQ6ITEsaXNMZWF2aW5nOiExLGlzVW5tb3VudGluZzohMSxsZWF2aW5nVk5vZGVzOm5ldyBNYXB9O3JldHVybiBvdCgoKT0+e2UuaXNNb3VudGVkPSEwfSksSG8oKCk9PntlLmlzVW5tb3VudGluZz0hMH0pLGV9Y29uc3QgQW49W0Z1bmN0aW9uLEFycmF5XSxJZz17bW9kZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4scGVyc2lzdGVkOkJvb2xlYW4sb25CZWZvcmVFbnRlcjpBbixvbkVudGVyOkFuLG9uQWZ0ZXJFbnRlcjpBbixvbkVudGVyQ2FuY2VsbGVkOkFuLG9uQmVmb3JlTGVhdmU6QW4sb25MZWF2ZTpBbixvbkFmdGVyTGVhdmU6QW4sb25MZWF2ZUNhbmNlbGxlZDpBbixvbkJlZm9yZUFwcGVhcjpBbixvbkFwcGVhcjpBbixvbkFmdGVyQXBwZWFyOkFuLG9uQXBwZWFyQ2FuY2VsbGVkOkFufSxSZz1lPT57Y29uc3QgdD1lLnN1YlRyZWU7cmV0dXJuIHQuY29tcG9uZW50P1JnKHQuY29tcG9uZW50KTp0fSx6Xz17bmFtZToiQmFzZVRyYW5zaXRpb24iLHByb3BzOklnLHNldHVwKGUse3Nsb3RzOnR9KXtjb25zdCBuPW10KCkscj1GXygpO3JldHVybigpPT57Y29uc3Qgbz10LmRlZmF1bHQmJkxnKHQuZGVmYXVsdCgpLCEwKTtpZighb3x8IW8ubGVuZ3RoKXJldHVybjtjb25zdCBzPU5nKG8pLGk9amUoZSkse21vZGU6YX09aTtpZihyLmlzTGVhdmluZylyZXR1cm4gZmMocyk7Y29uc3QgbD1XZChzKTtpZighbClyZXR1cm4gZmMocyk7bGV0IHU9bnUobCxpLHIsbixmPT51PWYpO2wudHlwZSE9PV90JiZ4cyhsLHUpO2xldCBjPW4uc3ViVHJlZSYmV2Qobi5zdWJUcmVlKTtpZihjJiZjLnR5cGUhPT1fdCYmIXFuKGMsbCkmJlJnKG4pLnR5cGUhPT1fdCl7bGV0IGY9bnUoYyxpLHIsbik7aWYoeHMoYyxmKSxhPT09Im91dC1pbiImJmwudHlwZSE9PV90KXJldHVybiByLmlzTGVhdmluZz0hMCxmLmFmdGVyTGVhdmU9KCk9PntyLmlzTGVhdmluZz0hMSxuLmpvYi5mbGFncyY4fHxuLnVwZGF0ZSgpLGRlbGV0ZSBmLmFmdGVyTGVhdmUsYz12b2lkIDB9LGZjKHMpO2E9PT0iaW4tb3V0IiYmbC50eXBlIT09X3Q/Zi5kZWxheUxlYXZlPShkLHAsbSk9Pntjb25zdCB5PURnKHIsYyk7eVtTdHJpbmcoYy5rZXkpXT1jLGRbc3JdPSgpPT57cCgpLGRbc3JdPXZvaWQgMCxkZWxldGUgdS5kZWxheWVkTGVhdmUsYz12b2lkIDB9LHUuZGVsYXllZExlYXZlPSgpPT57bSgpLGRlbGV0ZSB1LmRlbGF5ZWRMZWF2ZSxjPXZvaWQgMH19OmM9dm9pZCAwfWVsc2UgYyYmKGM9dm9pZCAwKTtyZXR1cm4gc319fTtmdW5jdGlvbiBOZyhlKXtsZXQgdD1lWzBdO2lmKGUubGVuZ3RoPjEpe2Zvcihjb25zdCBuIG9mIGUpaWYobi50eXBlIT09X3Qpe3Q9bjticmVha319cmV0dXJuIHR9Y29uc3Qgal89el87ZnVuY3Rpb24gRGcoZSx0KXtjb25zdHtsZWF2aW5nVk5vZGVzOm59PWU7bGV0IHI9bi5nZXQodC50eXBlKTtyZXR1cm4gcnx8KHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuLnNldCh0LnR5cGUscikpLHJ9ZnVuY3Rpb24gbnUoZSx0LG4scixvKXtjb25zdHthcHBlYXI6cyxtb2RlOmkscGVyc2lzdGVkOmE9ITEsb25CZWZvcmVFbnRlcjpsLG9uRW50ZXI6dSxvbkFmdGVyRW50ZXI6YyxvbkVudGVyQ2FuY2VsbGVkOmYsb25CZWZvcmVMZWF2ZTpkLG9uTGVhdmU6cCxvbkFmdGVyTGVhdmU6bSxvbkxlYXZlQ2FuY2VsbGVkOnksb25CZWZvcmVBcHBlYXI6XyxvbkFwcGVhcjp3LG9uQWZ0ZXJBcHBlYXI6dixvbkFwcGVhckNhbmNlbGxlZDpofT10LGI9U3RyaW5nKGUua2V5KSx4PURnKG4sZSksUz0oQyxQKT0+e0MmJkhuKEMsciw5LFApfSxrPShDLFApPT57Y29uc3QgRj1QWzFdO1MoQyxQKSxTZShDKT9DLmV2ZXJ5KEQ9PkQubGVuZ3RoPD0xKSYmRigpOkMubGVuZ3RoPD0xJiZGKCl9LFQ9e21vZGU6aSxwZXJzaXN0ZWQ6YSxiZWZvcmVFbnRlcihDKXtsZXQgUD1sO2lmKCFuLmlzTW91bnRlZClpZihzKVA9X3x8bDtlbHNlIHJldHVybjtDW3NyXSYmQ1tzcl0oITApO2NvbnN0IEY9eFtiXTtGJiZxbihlLEYpJiZGLmVsW3NyXSYmRi5lbFtzcl0oKSxTKFAsW0NdKX0sZW50ZXIoQyl7aWYoeFtiXT09PWUpcmV0dXJuO2xldCBQPXUsRj1jLEQ9ZjtpZighbi5pc01vdW50ZWQpaWYocylQPXd8fHUsRj12fHxjLEQ9aHx8ZjtlbHNlIHJldHVybjtsZXQgVz0hMTtDW0ZzXT1qPT57V3x8KFc9ITAsaj9TKEQsW0NdKTpTKEYsW0NdKSxULmRlbGF5ZWRMZWF2ZSYmVC5kZWxheWVkTGVhdmUoKSxDW0ZzXT12b2lkIDApfTtjb25zdCBMPUNbRnNdLmJpbmQobnVsbCwhMSk7UD9rKFAsW0MsTF0pOkwoKX0sbGVhdmUoQyxQKXtjb25zdCBGPVN0cmluZyhlLmtleSk7aWYoQ1tGc10mJkNbRnNdKCEwKSxuLmlzVW5tb3VudGluZylyZXR1cm4gUCgpO1MoZCxbQ10pO2xldCBEPSExO0Nbc3JdPUw9PntEfHwoRD0hMCxQKCksTD9TKHksW0NdKTpTKG0sW0NdKSxDW3NyXT12b2lkIDAseFtGXT09PWUmJmRlbGV0ZSB4W0ZdKX07Y29uc3QgVz1DW3NyXS5iaW5kKG51bGwsITEpO3hbRl09ZSxwP2socCxbQyxXXSk6VygpfSxjbG9uZShDKXtjb25zdCBQPW51KEMsdCxuLHIsbyk7cmV0dXJuIG8mJm8oUCksUH19O3JldHVybiBUfWZ1bmN0aW9uIGZjKGUpe2lmKE1pKGUpKXJldHVybiBlPXBuKGUpLGUuY2hpbGRyZW49bnVsbCxlfWZ1bmN0aW9uIFdkKGUpe2lmKCFNaShlKSlyZXR1cm4gUGcoZS50eXBlKSYmZS5jaGlsZHJlbj9OZyhlLmNoaWxkcmVuKTplO2lmKGUuY29tcG9uZW50KXJldHVybiBlLmNvbXBvbmVudC5zdWJUcmVlO2NvbnN0e3NoYXBlRmxhZzp0LGNoaWxkcmVuOm59PWU7aWYobil7aWYodCYxNilyZXR1cm4gblswXTtpZih0JjMyJiZDZShuLmRlZmF1bHQpKXJldHVybiBuLmRlZmF1bHQoKX19ZnVuY3Rpb24geHMoZSx0KXtlLnNoYXBlRmxhZyY2JiZlLmNvbXBvbmVudD8oZS50cmFuc2l0aW9uPXQseHMoZS5jb21wb25lbnQuc3ViVHJlZSx0KSk6ZS5zaGFwZUZsYWcmMTI4PyhlLnNzQ29udGVudC50cmFuc2l0aW9uPXQuY2xvbmUoZS5zc0NvbnRlbnQpLGUuc3NGYWxsYmFjay50cmFuc2l0aW9uPXQuY2xvbmUoZS5zc0ZhbGxiYWNrKSk6ZS50cmFuc2l0aW9uPXR9ZnVuY3Rpb24gTGcoZSx0PSExLG4pe2xldCByPVtdLG89MDtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGk9ZVtzXTtjb25zdCBhPW49PW51bGw/aS5rZXk6U3RyaW5nKG4pK1N0cmluZyhpLmtleSE9bnVsbD9pLmtleTpzKTtpLnR5cGU9PT1HZT8oaS5wYXRjaEZsYWcmMTI4JiZvKysscj1yLmNvbmNhdChMZyhpLmNoaWxkcmVuLHQsYSkpKToodHx8aS50eXBlIT09X3QpJiZyLnB1c2goYSE9bnVsbD9wbihpLHtrZXk6YX0pOmkpfWlmKG8+MSlmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKylyW3NdLnBhdGNoRmxhZz0tMjtyZXR1cm4gcn1mdW5jdGlvbiBzZShlLHQpe3JldHVybiBDZShlKT92dCh7bmFtZTplLm5hbWV9LHQse3NldHVwOmV9KTplfWZ1bmN0aW9uIGJmKCl7Y29uc3QgZT1tdCgpO3JldHVybiBlPyhlLmFwcENvbnRleHQuY29uZmlnLmlkUHJlZml4fHwidiIpKyItIitlLmlkc1swXStlLmlkc1sxXSsrOiIifWZ1bmN0aW9uIHdmKGUpe2UuaWRzPVtlLmlkc1swXStlLmlkc1syXSsrKyItIiwwLDBdfWZ1bmN0aW9uIFNzKGUpe2NvbnN0IHQ9bXQoKSxuPU9lKG51bGwpO2lmKHQpe2NvbnN0IG89dC5yZWZzPT09WWU/dC5yZWZzPXt9OnQucmVmcztPYmplY3QuZGVmaW5lUHJvcGVydHkobyxlLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+bi52YWx1ZSxzZXQ6cz0+bi52YWx1ZT1zfSl9cmV0dXJuIG59ZnVuY3Rpb24gR2QoZSx0KXtsZXQgbjtyZXR1cm4hISgobj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkpJiYhbi5jb25maWd1cmFibGUpfWNvbnN0IEZhPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHBzKGUsdCxuLHIsbz0hMSl7aWYoU2UoZSkpe2UuZm9yRWFjaCgoeSxfKT0+cHMoeSx0JiYoU2UodCk/dFtfXTp0KSxuLHIsbykpO3JldHVybn1pZihJcihyKSYmIW8pe3Iuc2hhcGVGbGFnJjUxMiYmci50eXBlLl9fYXN5bmNSZXNvbHZlZCYmci5jb21wb25lbnQuc3ViVHJlZS5jb21wb25lbnQmJnBzKGUsdCxuLHIuY29tcG9uZW50LnN1YlRyZWUpO3JldHVybn1jb25zdCBzPXIuc2hhcGVGbGFnJjQ/RWwoci5jb21wb25lbnQpOnIuZWwsaT1vP251bGw6cyx7aTphLHI6bH09ZSx1PXQmJnQucixjPWEucmVmcz09PVllP2EucmVmcz17fTphLnJlZnMsZj1hLnNldHVwU3RhdGUsZD1qZShmKSxwPWY9PT1ZZT9RaDp5PT5HZChjLHkpPyExOm50KGQseSksbT0oeSxfKT0+IShfJiZHZChjLF8pKTtpZih1IT1udWxsJiZ1IT09bCl7aWYoS2QodCksZnQodSkpY1t1XT1udWxsLHAodSkmJihmW3VdPW51bGwpO2Vsc2UgaWYoJGUodSkpe2NvbnN0IHk9dDttKHUseS5rKSYmKHUudmFsdWU9bnVsbCkseS5rJiYoY1t5LmtdPW51bGwpfX1pZihDZShsKSlEaShsLGEsMTIsW2ksY10pO2Vsc2V7Y29uc3QgeT1mdChsKSxfPSRlKGwpO2lmKHl8fF8pe2NvbnN0IHc9KCk9PntpZihlLmYpe2NvbnN0IHY9eT9wKGwpP2ZbbF06Y1tsXTptKCl8fCFlLms/bC52YWx1ZTpjW2Uua107aWYobylTZSh2KSYmZmYodixzKTtlbHNlIGlmKFNlKHYpKXYuaW5jbHVkZXMocyl8fHYucHVzaChzKTtlbHNlIGlmKHkpY1tsXT1bc10scChsKSYmKGZbbF09Y1tsXSk7ZWxzZXtjb25zdCBoPVtzXTttKGwsZS5rKSYmKGwudmFsdWU9aCksZS5rJiYoY1tlLmtdPWgpfX1lbHNlIHk/KGNbbF09aSxwKGwpJiYoZltsXT1pKSk6XyYmKG0obCxlLmspJiYobC52YWx1ZT1pKSxlLmsmJihjW2Uua109aSkpfTtpZihpKXtjb25zdCB2PSgpPT57dygpLEZhLmRlbGV0ZShlKX07di5pZD0tMSxGYS5zZXQoZSx2KSxUdCh2LG4pfWVsc2UgS2QoZSksdygpfX19ZnVuY3Rpb24gS2QoZSl7Y29uc3QgdD1GYS5nZXQoZSk7dCYmKHQuZmxhZ3N8PTgsRmEuZGVsZXRlKGUpKX1sZXQgUWQ9ITE7Y29uc3QgSm89KCk9PntRZHx8KFFkPSEwKX0sVl89ZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoInN2ZyIpJiZlLnRhZ05hbWUhPT0iZm9yZWlnbk9iamVjdCIsVV89ZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoIk1hdGhNTCIpLFppPWU9PntpZihlLm5vZGVUeXBlPT09MSl7aWYoVl8oZSkpcmV0dXJuInN2ZyI7aWYoVV8oZSkpcmV0dXJuIm1hdGhtbCJ9fSxjcz1lPT5lLm5vZGVUeXBlPT09ODtmdW5jdGlvbiBIXyhlKXtjb25zdHttdDp0LHA6bixvOntwYXRjaFByb3A6cixjcmVhdGVUZXh0Om8sbmV4dFNpYmxpbmc6cyxwYXJlbnROb2RlOmkscmVtb3ZlOmEsaW5zZXJ0OmwsY3JlYXRlQ29tbWVudDp1fX09ZSxjPShoLGIpPT57aWYoIWIuaGFzQ2hpbGROb2RlcygpKXtuKG51bGwsaCxiKSxCYSgpLGIuX3Zub2RlPWg7cmV0dXJufWYoYi5maXJzdENoaWxkLGgsbnVsbCxudWxsLG51bGwpLEJhKCksYi5fdm5vZGU9aH0sZj0oaCxiLHgsUyxrLFQ9ITEpPT57VD1UfHwhIWIuZHluYW1pY0NoaWxkcmVuO2NvbnN0IEM9Y3MoaCkmJmguZGF0YT09PSJbIixQPSgpPT55KGgsYix4LFMsayxDKSx7dHlwZTpGLHJlZjpELHNoYXBlRmxhZzpXLHBhdGNoRmxhZzpMfT1iO2xldCBqPWgubm9kZVR5cGU7Yi5lbD1oLEw9PT0tMiYmKFQ9ITEsYi5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0IEk9bnVsbDtzd2l0Y2goRil7Y2FzZSBEbzpqIT09Mz9iLmNoaWxkcmVuPT09IiI/KGwoYi5lbD1vKCIiKSxpKGgpLGgpLEk9aCk6ST1QKCk6KGguZGF0YSE9PWIuY2hpbGRyZW4mJihKbygpLGguZGF0YT1iLmNoaWxkcmVuKSxJPXMoaCkpO2JyZWFrO2Nhc2UgX3Q6dihoKT8oST1zKGgpLHcoYi5lbD1oLmNvbnRlbnQuZmlyc3RDaGlsZCxoLHgpKTpqIT09OHx8Qz9JPVAoKTpJPXMoaCk7YnJlYWs7Y2FzZSBhaTppZihDJiYoaD1zKGgpLGo9aC5ub2RlVHlwZSksaj09PTF8fGo9PT0zKXtJPWg7Y29uc3QgVj0hYi5jaGlsZHJlbi5sZW5ndGg7Zm9yKGxldCBCPTA7QjxiLnN0YXRpY0NvdW50O0IrKylWJiYoYi5jaGlsZHJlbis9SS5ub2RlVHlwZT09PTE/SS5vdXRlckhUTUw6SS5kYXRhKSxCPT09Yi5zdGF0aWNDb3VudC0xJiYoYi5hbmNob3I9SSksST1zKEkpO3JldHVybiBDP3MoSSk6SX1lbHNlIFAoKTticmVhaztjYXNlIEdlOkM/ST1tKGgsYix4LFMsayxUKTpJPVAoKTticmVhaztkZWZhdWx0OmlmKFcmMSkoaiE9PTF8fGIudHlwZS50b0xvd2VyQ2FzZSgpIT09aC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpJiYhdihoKT9JPVAoKTpJPWQoaCxiLHgsUyxrLFQpO2Vsc2UgaWYoVyY2KXtiLnNsb3RTY29wZUlkcz1rO2NvbnN0IFY9aShoKTtpZihDP0k9XyhoKTpjcyhoKSYmaC5kYXRhPT09InRlbGVwb3J0IHN0YXJ0Ij9JPV8oaCxoLmRhdGEsInRlbGVwb3J0IGVuZCIpOkk9cyhoKSx0KGIsVixudWxsLHgsUyxaaShWKSxUKSxJcihiKSYmIWIudHlwZS5fX2FzeW5jUmVzb2x2ZWQpe2xldCBCO0M/KEI9cmUoR2UpLEIuYW5jaG9yPUk/SS5wcmV2aW91c1NpYmxpbmc6Vi5sYXN0Q2hpbGQpOkI9aC5ub2RlVHlwZT09PTM/c3QoIiIpOnJlKCJkaXYiKSxCLmVsPWgsYi5jb21wb25lbnQuc3ViVHJlZT1CfX1lbHNlIFcmNjQ/aiE9PTg/ST1QKCk6ST1iLnR5cGUuaHlkcmF0ZShoLGIseCxTLGssVCxlLHApOlcmMTI4JiYoST1iLnR5cGUuaHlkcmF0ZShoLGIseCxTLFppKGkoaCkpLGssVCxlLGYpKX1yZXR1cm4gRCE9bnVsbCYmcHMoRCxudWxsLFMsYiksSX0sZD0oaCxiLHgsUyxrLFQpPT57VD1UfHwhIWIuZHluYW1pY0NoaWxkcmVuO2NvbnN0e3R5cGU6Qyxwcm9wczpQLHBhdGNoRmxhZzpGLHNoYXBlRmxhZzpELGRpcnM6Vyx0cmFuc2l0aW9uOkx9PWIsaj1DPT09ImlucHV0Inx8Qz09PSJvcHRpb24iO2lmKGp8fEYhPT0tMSl7VyYmb3IoYixudWxsLHgsImNyZWF0ZWQiKTtsZXQgST0hMTtpZih2KGgpKXtJPXN5KG51bGwsTCkmJngmJngudm5vZGUucHJvcHMmJngudm5vZGUucHJvcHMuYXBwZWFyO2NvbnN0IEI9aC5jb250ZW50LmZpcnN0Q2hpbGQ7aWYoSSl7Y29uc3QgaWU9Qi5nZXRBdHRyaWJ1dGUoImNsYXNzIik7aWUmJihCLiRjbHM9aWUpLEwuYmVmb3JlRW50ZXIoQil9dyhCLGgseCksYi5lbD1oPUJ9aWYoRCYxNiYmIShQJiYoUC5pbm5lckhUTUx8fFAudGV4dENvbnRlbnQpKSl7bGV0IEI9cChoLmZpcnN0Q2hpbGQsYixoLHgsUyxrLFQpO2Zvcig7Qjspe2VhKGgsMSl8fEpvKCk7Y29uc3QgaWU9QjtCPUIubmV4dFNpYmxpbmcsYShpZSl9fWVsc2UgaWYoRCY4KXtsZXQgQj1iLmNoaWxkcmVuO0JbMF09PT1gCmAmJihoLnRhZ05hbWU9PT0iUFJFInx8aC50YWdOYW1lPT09IlRFWFRBUkVBIikmJihCPUIuc2xpY2UoMSkpO2NvbnN0e3RleHRDb250ZW50OmllfT1oO2llIT09QiYmaWUhPT1CLnJlcGxhY2UoL1xyXG58XHIvZyxgCmApJiYoZWEoaCwwKXx8Sm8oKSxoLnRleHRDb250ZW50PWIuY2hpbGRyZW4pfWlmKFApe2lmKGp8fCFUfHxGJjQ4KXtjb25zdCBCPWgudGFnTmFtZS5pbmNsdWRlcygiLSIpO2Zvcihjb25zdCBpZSBpbiBQKShqJiYoaWUuZW5kc1dpdGgoInZhbHVlIil8fGllPT09ImluZGV0ZXJtaW5hdGUiKXx8UmkoaWUpJiYhSW8oaWUpfHxpZVswXT09PSIuInx8QiYmIUlvKGllKSkmJnIoaCxpZSxudWxsLFBbaWVdLHZvaWQgMCx4KX1lbHNlIGlmKFAub25DbGljaylyKGgsIm9uQ2xpY2siLG51bGwsUC5vbkNsaWNrLHZvaWQgMCx4KTtlbHNlIGlmKEYmNCYmY3IoUC5zdHlsZSkpZm9yKGNvbnN0IEIgaW4gUC5zdHlsZSlQLnN0eWxlW0JdfWxldCBWOyhWPVAmJlAub25Wbm9kZUJlZm9yZU1vdW50KSYmZG4oVix4LGIpLFcmJm9yKGIsbnVsbCx4LCJiZWZvcmVNb3VudCIpLCgoVj1QJiZQLm9uVm5vZGVNb3VudGVkKXx8V3x8SSkmJmN5KCgpPT57ViYmZG4oVix4LGIpLEkmJkwuZW50ZXIoaCksVyYmb3IoYixudWxsLHgsIm1vdW50ZWQiKX0sUyl9cmV0dXJuIGgubmV4dFNpYmxpbmd9LHA9KGgsYix4LFMsayxULEMpPT57Qz1DfHwhIWIuZHluYW1pY0NoaWxkcmVuO2NvbnN0IFA9Yi5jaGlsZHJlbixGPVAubGVuZ3RoO2ZvcihsZXQgRD0wO0Q8RjtEKyspe2NvbnN0IFc9Qz9QW0RdOlBbRF09Ym4oUFtEXSksTD1XLnR5cGU9PT1EbztoPyhMJiYhQyYmRCsxPEYmJmJuKFBbRCsxXSkudHlwZT09PURvJiYobChvKGguZGF0YS5zbGljZShXLmNoaWxkcmVuLmxlbmd0aCkpLHgscyhoKSksaC5kYXRhPVcuY2hpbGRyZW4pLGg9ZihoLFcsUyxrLFQsQykpOkwmJiFXLmNoaWxkcmVuP2woVy5lbD1vKCIiKSx4KTooZWEoeCwxKXx8Sm8oKSxuKG51bGwsVyx4LG51bGwsUyxrLFppKHgpLFQpKX1yZXR1cm4gaH0sbT0oaCxiLHgsUyxrLFQpPT57Y29uc3R7c2xvdFNjb3BlSWRzOkN9PWI7QyYmKGs9az9rLmNvbmNhdChDKTpDKTtjb25zdCBQPWkoaCksRj1wKHMoaCksYixQLHgsUyxrLFQpO3JldHVybiBGJiZjcyhGKSYmRi5kYXRhPT09Il0iP3MoYi5hbmNob3I9Rik6KEpvKCksbChiLmFuY2hvcj11KCJdIiksUCxGKSxGKX0seT0oaCxiLHgsUyxrLFQpPT57aWYoZWEoaC5wYXJlbnRFbGVtZW50LDEpfHxKbygpLGIuZWw9bnVsbCxUKXtjb25zdCBGPV8oaCk7Zm9yKDs7KXtjb25zdCBEPXMoaCk7aWYoRCYmRCE9PUYpYShEKTtlbHNlIGJyZWFrfX1jb25zdCBDPXMoaCksUD1pKGgpO3JldHVybiBhKGgpLG4obnVsbCxiLFAsQyx4LFMsWmkoUCksaykseCYmKHgudm5vZGUuZWw9Yi5lbCxrbCh4LGIuZWwpKSxDfSxfPShoLGI9IlsiLHg9Il0iKT0+e2xldCBTPTA7Zm9yKDtoOylpZihoPXMoaCksaCYmY3MoaCkmJihoLmRhdGE9PT1iJiZTKyssaC5kYXRhPT09eCkpe2lmKFM9PT0wKXJldHVybiBzKGgpO1MtLX1yZXR1cm4gaH0sdz0oaCxiLHgpPT57Y29uc3QgUz1iLnBhcmVudE5vZGU7UyYmUy5yZXBsYWNlQ2hpbGQoaCxiKTtsZXQgaz14O2Zvcig7azspay52bm9kZS5lbD09PWImJihrLnZub2RlLmVsPWsuc3ViVHJlZS5lbD1oKSxrPWsucGFyZW50fSx2PWg9Pmgubm9kZVR5cGU9PT0xJiZoLnRhZ05hbWU9PT0iVEVNUExBVEUiO3JldHVybltjLGZdfWNvbnN0IFlkPSJkYXRhLWFsbG93LW1pc21hdGNoIixXXz17MDoidGV4dCIsMToiY2hpbGRyZW4iLDI6ImNsYXNzIiwzOiJzdHlsZSIsNDoiYXR0cmlidXRlIn07ZnVuY3Rpb24gZWEoZSx0KXtpZih0PT09MHx8dD09PTEpZm9yKDtlJiYhZS5oYXNBdHRyaWJ1dGUoWWQpOyllPWUucGFyZW50RWxlbWVudDtjb25zdCBuPWUmJmUuZ2V0QXR0cmlidXRlKFlkKTtpZihuPT1udWxsKXJldHVybiExO2lmKG49PT0iIilyZXR1cm4hMDt7Y29uc3Qgcj1uLnNwbGl0KCIsIik7cmV0dXJuIHQ9PT0wJiZyLmluY2x1ZGVzKCJjaGlsZHJlbiIpPyEwOnIuaW5jbHVkZXMoV19bdF0pfX1tbCgpLnJlcXVlc3RJZGxlQ2FsbGJhY2s7bWwoKS5jYW5jZWxJZGxlQ2FsbGJhY2s7ZnVuY3Rpb24gR18oZSx0KXtpZihjcyhlKSYmZS5kYXRhPT09IlsiKXtsZXQgbj0xLHI9ZS5uZXh0U2libGluZztmb3IoO3I7KXtpZihyLm5vZGVUeXBlPT09MSl7aWYodChyKT09PSExKWJyZWFrfWVsc2UgaWYoY3MocikpaWYoci5kYXRhPT09Il0iKXtpZigtLW49PT0wKWJyZWFrfWVsc2Ugci5kYXRhPT09IlsiJiZuKys7cj1yLm5leHRTaWJsaW5nfX1lbHNlIHQoZSl9Y29uc3QgSXI9ZT0+ISFlLnR5cGUuX19hc3luY0xvYWRlcjtmdW5jdGlvbiB2aShlKXtDZShlKSYmKGU9e2xvYWRlcjplfSk7Y29uc3R7bG9hZGVyOnQsbG9hZGluZ0NvbXBvbmVudDpuLGVycm9yQ29tcG9uZW50OnIsZGVsYXk6bz0yMDAsaHlkcmF0ZTpzLHRpbWVvdXQ6aSxzdXNwZW5zaWJsZTphPSEwLG9uRXJyb3I6bH09ZTtsZXQgdT1udWxsLGMsZj0wO2NvbnN0IGQ9KCk9PihmKyssdT1udWxsLHAoKSkscD0oKT0+e2xldCBtO3JldHVybiB1fHwobT11PXQoKS5jYXRjaCh5PT57aWYoeT15IGluc3RhbmNlb2YgRXJyb3I/eTpuZXcgRXJyb3IoU3RyaW5nKHkpKSxsKXJldHVybiBuZXcgUHJvbWlzZSgoXyx3KT0+e2woeSwoKT0+XyhkKCkpLCgpPT53KHkpLGYrMSl9KTt0aHJvdyB5fSkudGhlbih5PT5tIT09dSYmdT91Oih5JiYoeS5fX2VzTW9kdWxlfHx5W1N5bWJvbC50b1N0cmluZ1RhZ109PT0iTW9kdWxlIikmJih5PXkuZGVmYXVsdCksYz15LHkpKSl9O3JldHVybiBzZSh7bmFtZToiQXN5bmNDb21wb25lbnRXcmFwcGVyIixfX2FzeW5jTG9hZGVyOnAsX19hc3luY0h5ZHJhdGUobSx5LF8pe2xldCB3PSExOyh5LmJ1fHwoeS5idT1bXSkpLnB1c2goKCk9Pnc9ITApO2NvbnN0IHY9KCk9Pnt3fHxfKCl9LGg9cz8oKT0+e2NvbnN0IGI9cyh2LHg9PkdfKG0seCkpO2ImJih5LmJ1bXx8KHkuYnVtPVtdKSkucHVzaChiKX06djtjP2goKTpwKCkudGhlbigoKT0+IXkuaXNVbm1vdW50ZWQmJmgoKSl9LGdldCBfX2FzeW5jUmVzb2x2ZWQoKXtyZXR1cm4gY30sc2V0dXAoKXtjb25zdCBtPXp0O2lmKHdmKG0pLGMpcmV0dXJuKCk9PnRhKGMsbSk7Y29uc3QgeT1oPT57dT1udWxsLE5zKGgsbSwxMywhcil9O2lmKGEmJm0uc3VzcGVuc2V8fEJvKXJldHVybiBwKCkudGhlbihoPT4oKT0+dGEoaCxtKSkuY2F0Y2goaD0+KHkoaCksKCk9PnI/cmUocix7ZXJyb3I6aH0pOm51bGwpKTtjb25zdCBfPUcoITEpLHc9RygpLHY9RyghIW8pO3JldHVybiBvJiZzZXRUaW1lb3V0KCgpPT57di52YWx1ZT0hMX0sbyksaSE9bnVsbCYmc2V0VGltZW91dCgoKT0+e2lmKCFfLnZhbHVlJiYhdy52YWx1ZSl7Y29uc3QgaD1uZXcgRXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHtpfW1zLmApO3koaCksdy52YWx1ZT1ofX0saSkscCgpLnRoZW4oKCk9PntfLnZhbHVlPSEwLG0ucGFyZW50JiZNaShtLnBhcmVudC52bm9kZSkmJm0ucGFyZW50LnVwZGF0ZSgpfSkuY2F0Y2goaD0+e3koaCksdy52YWx1ZT1ofSksKCk9PntpZihfLnZhbHVlJiZjKXJldHVybiB0YShjLG0pO2lmKHcudmFsdWUmJnIpcmV0dXJuIHJlKHIse2Vycm9yOncudmFsdWV9KTtpZihuJiYhdi52YWx1ZSlyZXR1cm4gdGEobixtKX19fSl9ZnVuY3Rpb24gdGEoZSx0KXtjb25zdHtyZWY6bixwcm9wczpyLGNoaWxkcmVuOm8sY2U6c309dC52bm9kZSxpPXJlKGUscixvKTtyZXR1cm4gaS5yZWY9bixpLmNlPXMsZGVsZXRlIHQudm5vZGUuY2UsaX1jb25zdCBNaT1lPT5lLnR5cGUuX19pc0tlZXBBbGl2ZSxLXz17bmFtZToiS2VlcEFsaXZlIixfX2lzS2VlcEFsaXZlOiEwLHByb3BzOntpbmNsdWRlOltTdHJpbmcsUmVnRXhwLEFycmF5XSxleGNsdWRlOltTdHJpbmcsUmVnRXhwLEFycmF5XSxtYXg6W1N0cmluZyxOdW1iZXJdfSxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1tdCgpLHI9bi5jdHg7aWYoIXIucmVuZGVyZXIpcmV0dXJuKCk9Pntjb25zdCB2PXQuZGVmYXVsdCYmdC5kZWZhdWx0KCk7cmV0dXJuIHYmJnYubGVuZ3RoPT09MT92WzBdOnZ9O2NvbnN0IG89bmV3IE1hcCxzPW5ldyBTZXQ7bGV0IGk9bnVsbDtjb25zdCBhPW4uc3VzcGVuc2Use3JlbmRlcmVyOntwOmwsbTp1LHVtOmMsbzp7Y3JlYXRlRWxlbWVudDpmfX19PXIsZD1mKCJkaXYiKTtyLmFjdGl2YXRlPSh2LGgsYix4LFMpPT57Y29uc3Qgaz12LmNvbXBvbmVudDt1KHYsaCxiLDAsYSksbChrLnZub2RlLHYsaCxiLGssYSx4LHYuc2xvdFNjb3BlSWRzLFMpLFR0KCgpPT57ay5pc0RlYWN0aXZhdGVkPSExLGsuYSYmcmkoay5hKTtjb25zdCBUPXYucHJvcHMmJnYucHJvcHMub25Wbm9kZU1vdW50ZWQ7VCYmZG4oVCxrLnBhcmVudCx2KX0sYSl9LHIuZGVhY3RpdmF0ZT12PT57Y29uc3QgaD12LmNvbXBvbmVudDtqYShoLm0pLGphKGguYSksdSh2LGQsbnVsbCwxLGEpLFR0KCgpPT57aC5kYSYmcmkoaC5kYSk7Y29uc3QgYj12LnByb3BzJiZ2LnByb3BzLm9uVm5vZGVVbm1vdW50ZWQ7YiYmZG4oYixoLnBhcmVudCx2KSxoLmlzRGVhY3RpdmF0ZWQ9ITB9LGEpfTtmdW5jdGlvbiBwKHYpe2RjKHYpLGModixuLGEsITApfWZ1bmN0aW9uIG0odil7by5mb3JFYWNoKChoLGIpPT57Y29uc3QgeD1jdShJcihoKT9oLnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTpoLnR5cGUpO3gmJiF2KHgpJiZ5KGIpfSl9ZnVuY3Rpb24geSh2KXtjb25zdCBoPW8uZ2V0KHYpO2gmJighaXx8IXFuKGgsaSkpP3AoaCk6aSYmZGMoaSksby5kZWxldGUodikscy5kZWxldGUodil9UGUoKCk9PltlLmluY2x1ZGUsZS5leGNsdWRlXSwoW3YsaF0pPT57diYmbShiPT5Ycyh2LGIpKSxoJiZtKGI9PiFYcyhoLGIpKX0se2ZsdXNoOiJwb3N0IixkZWVwOiEwfSk7bGV0IF89bnVsbDtjb25zdCB3PSgpPT57XyE9bnVsbCYmKFZhKG4uc3ViVHJlZS50eXBlKT9UdCgoKT0+e28uc2V0KF8sbmEobi5zdWJUcmVlKSl9LG4uc3ViVHJlZS5zdXNwZW5zZSk6by5zZXQoXyxuYShuLnN1YlRyZWUpKSl9O3JldHVybiBvdCh3KSx4bCh3KSxIbygoKT0+e28uZm9yRWFjaCh2PT57Y29uc3R7c3ViVHJlZTpoLHN1c3BlbnNlOmJ9PW4seD1uYShoKTtpZih2LnR5cGU9PT14LnR5cGUmJnYua2V5PT09eC5rZXkpe2RjKHgpO2NvbnN0IFM9eC5jb21wb25lbnQuZGE7UyYmVHQoUyxiKTtyZXR1cm59cCh2KX0pfSksKCk9PntpZihfPW51bGwsIXQuZGVmYXVsdClyZXR1cm4gaT1udWxsO2NvbnN0IHY9dC5kZWZhdWx0KCksaD12WzBdO2lmKHYubGVuZ3RoPjEpcmV0dXJuIGk9bnVsbCx2O2lmKCFNbyhoKXx8IShoLnNoYXBlRmxhZyY0KSYmIShoLnNoYXBlRmxhZyYxMjgpKXJldHVybiBpPW51bGwsaDtsZXQgYj1uYShoKTtpZihiLnR5cGU9PT1fdClyZXR1cm4gaT1udWxsLGI7Y29uc3QgeD1iLnR5cGUsUz1jdShJcihiKT9iLnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTp4KSx7aW5jbHVkZTprLGV4Y2x1ZGU6VCxtYXg6Q309ZTtpZihrJiYoIVN8fCFYcyhrLFMpKXx8VCYmUyYmWHMoVCxTKSlyZXR1cm4gYi5zaGFwZUZsYWcmPS0yNTcsaT1iLGg7Y29uc3QgUD1iLmtleT09bnVsbD94OmIua2V5LEY9by5nZXQoUCk7cmV0dXJuIGIuZWwmJihiPXBuKGIpLGguc2hhcGVGbGFnJjEyOCYmKGguc3NDb250ZW50PWIpKSxfPVAsRj8oYi5lbD1GLmVsLGIuY29tcG9uZW50PUYuY29tcG9uZW50LGIudHJhbnNpdGlvbiYmeHMoYixiLnRyYW5zaXRpb24pLGIuc2hhcGVGbGFnfD01MTIscy5kZWxldGUoUCkscy5hZGQoUCkpOihzLmFkZChQKSxDJiZzLnNpemU+cGFyc2VJbnQoQywxMCkmJnkocy52YWx1ZXMoKS5uZXh0KCkudmFsdWUpKSxiLnNoYXBlRmxhZ3w9MjU2LGk9YixWYShoLnR5cGUpP2g6Yn19fSxRXz1LXztmdW5jdGlvbiBYcyhlLHQpe3JldHVybiBTZShlKT9lLnNvbWUobj0+WHMobix0KSk6ZnQoZSk/ZS5zcGxpdCgiLCIpLmluY2x1ZGVzKHQpOlZ3KGUpPyhlLmxhc3RJbmRleD0wLGUudGVzdCh0KSk6ITF9ZnVuY3Rpb24gJGcoZSx0KXtCZyhlLCJhIix0KX1mdW5jdGlvbiBNZyhlLHQpe0JnKGUsImRhIix0KX1mdW5jdGlvbiBCZyhlLHQsbj16dCl7Y29uc3Qgcj1lLl9fd2RjfHwoZS5fX3dkYz0oKT0+e2xldCBvPW47Zm9yKDtvOyl7aWYoby5pc0RlYWN0aXZhdGVkKXJldHVybjtvPW8ucGFyZW50fXJldHVybiBlKCl9KTtpZihfbCh0LHIsbiksbil7bGV0IG89bi5wYXJlbnQ7Zm9yKDtvJiZvLnBhcmVudDspTWkoby5wYXJlbnQudm5vZGUpJiZZXyhyLHQsbixvKSxvPW8ucGFyZW50fX1mdW5jdGlvbiBZXyhlLHQsbixyKXtjb25zdCBvPV9sKHQsZSxyLCEwKTtwcigoKT0+e2ZmKHJbdF0sbyl9LG4pfWZ1bmN0aW9uIGRjKGUpe2Uuc2hhcGVGbGFnJj0tMjU3LGUuc2hhcGVGbGFnJj0tNTEzfWZ1bmN0aW9uIG5hKGUpe3JldHVybiBlLnNoYXBlRmxhZyYxMjg/ZS5zc0NvbnRlbnQ6ZX1mdW5jdGlvbiBfbChlLHQsbj16dCxyPSExKXtpZihuKXtjb25zdCBvPW5bZV18fChuW2VdPVtdKSxzPXQuX193ZWh8fCh0Ll9fd2VoPSguLi5pKT0+e0RyKCk7Y29uc3QgYT1EcyhuKSxsPUhuKHQsbixlLGkpO3JldHVybiBhKCksTHIoKSxsfSk7cmV0dXJuIHI/by51bnNoaWZ0KHMpOm8ucHVzaChzKSxzfX1jb25zdCBGcj1lPT4odCxuPXp0KT0+eyghQm98fGU9PT0ic3AiKSYmX2woZSwoLi4ucik9PnQoLi4uciksbil9LHFnPUZyKCJibSIpLG90PUZyKCJtIiksSl89RnIoImJ1IikseGw9RnIoInUiKSxIbz1GcigiYnVtIikscHI9RnIoInVtIiksWF89RnIoInNwIiksWl89RnIoInJ0ZyIpLGV4PUZyKCJydGMiKTtmdW5jdGlvbiBGZyhlLHQ9enQpe19sKCJlYyIsZSx0KX1jb25zdCBfZj0iY29tcG9uZW50cyIsdHg9ImRpcmVjdGl2ZXMiO2Z1bmN0aW9uIEpkKGUsdCl7cmV0dXJuIHhmKF9mLGUsITAsdCl8fGV9Y29uc3Qgemc9U3ltYm9sLmZvcigidi1uZGMiKTtmdW5jdGlvbiBGbihlKXtyZXR1cm4gZnQoZSk/eGYoX2YsZSwhMSl8fGU6ZXx8emd9ZnVuY3Rpb24gbngoZSl7cmV0dXJuIHhmKHR4LGUpfWZ1bmN0aW9uIHhmKGUsdCxuPSEwLHI9ITEpe2NvbnN0IG89anR8fHp0O2lmKG8pe2NvbnN0IHM9by50eXBlO2lmKGU9PT1fZil7Y29uc3QgYT1jdShzLCExKTtpZihhJiYoYT09PXR8fGE9PT0kdCh0KXx8YT09PXBsKCR0KHQpKSkpcmV0dXJuIHN9Y29uc3QgaT1YZChvW2VdfHxzW2VdLHQpfHxYZChvLmFwcENvbnRleHRbZV0sdCk7cmV0dXJuIWkmJnI/czppfX1mdW5jdGlvbiBYZChlLHQpe3JldHVybiBlJiYoZVt0XXx8ZVskdCh0KV18fGVbcGwoJHQodCkpXSl9ZnVuY3Rpb24gdXIoZSx0LG4scil7bGV0IG87Y29uc3Qgcz1uLGk9U2UoZSk7aWYoaXx8ZnQoZSkpe2NvbnN0IGE9aSYmY3IoZSk7bGV0IGw9ITEsdT0hMTthJiYobD0heG4oZSksdT1kcihlKSxlPWdsKGUpKSxvPW5ldyBBcnJheShlLmxlbmd0aCk7Zm9yKGxldCBjPTAsZj1lLmxlbmd0aDtjPGY7YysrKW9bY109dChsP3U/X3MoVW4oZVtjXSkpOlVuKGVbY10pOmVbY10sYyx2b2lkIDAscyl9ZWxzZSBpZih0eXBlb2YgZT09Im51bWJlciIpe289bmV3IEFycmF5KGUpO2ZvcihsZXQgYT0wO2E8ZTthKyspb1thXT10KGErMSxhLHZvaWQgMCxzKX1lbHNlIGlmKFplKGUpKWlmKGVbU3ltYm9sLml0ZXJhdG9yXSlvPUFycmF5LmZyb20oZSwoYSxsKT0+dChhLGwsdm9pZCAwLHMpKTtlbHNle2NvbnN0IGE9T2JqZWN0LmtleXMoZSk7bz1uZXcgQXJyYXkoYS5sZW5ndGgpO2ZvcihsZXQgbD0wLHU9YS5sZW5ndGg7bDx1O2wrKyl7Y29uc3QgYz1hW2xdO29bbF09dChlW2NdLGMsbCxzKX19ZWxzZSBvPVtdO3JldHVybiBvfWZ1bmN0aW9uIG5xKGUsdCl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9dFtuXTtpZihTZShyKSlmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyllW3Jbb10ubmFtZV09cltvXS5mbjtlbHNlIHImJihlW3IubmFtZV09ci5rZXk/KC4uLm8pPT57Y29uc3Qgcz1yLmZuKC4uLm8pO3JldHVybiBzJiYocy5rZXk9ci5rZXkpLHN9OnIuZm4pfXJldHVybiBlfWZ1bmN0aW9uIFUoZSx0LG49e30scixvKXtpZihqdC5jZXx8anQucGFyZW50JiZJcihqdC5wYXJlbnQpJiZqdC5wYXJlbnQuY2Upe2NvbnN0IHU9T2JqZWN0LmtleXMobikubGVuZ3RoPjA7cmV0dXJuIHQhPT0iZGVmYXVsdCImJihuLm5hbWU9dCksUigpLCQoR2UsbnVsbCxbcmUoInNsb3QiLG4sciYmcigpKV0sdT8tMjo2NCl9bGV0IHM9ZVt0XTtzJiZzLl9jJiYocy5fZD0hMSksUigpO2NvbnN0IGk9cyYmamcocyhuKSksYT1uLmtleXx8aSYmaS5rZXksbD0kKEdlLHtrZXk6KGEmJiFrbihhKT9hOmBfJHt0fWApKyghaSYmcj8iX2ZiIjoiIil9LGl8fChyP3IoKTpbXSksaSYmZS5fPT09MT82NDotMik7cmV0dXJuIGwuc2NvcGVJZCYmKGwuc2xvdFNjb3BlSWRzPVtsLnNjb3BlSWQrIi1zIl0pLHMmJnMuX2MmJihzLl9kPSEwKSxsfWZ1bmN0aW9uIGpnKGUpe3JldHVybiBlLnNvbWUodD0+TW8odCk/ISh0LnR5cGU9PT1fdHx8dC50eXBlPT09R2UmJiFqZyh0LmNoaWxkcmVuKSk6ITApP2U6bnVsbH1mdW5jdGlvbiBWZyhlLHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSluW25pKHIpXT1lW3JdO3JldHVybiBufWNvbnN0IHJ1PWU9PmU/cHkoZSk/RWwoZSk6cnUoZS5wYXJlbnQpOm51bGwsaWk9dnQoT2JqZWN0LmNyZWF0ZShudWxsKSx7JDplPT5lLCRlbDplPT5lLnZub2RlLmVsLCRkYXRhOmU9PmUuZGF0YSwkcHJvcHM6ZT0+ZS5wcm9wcywkYXR0cnM6ZT0+ZS5hdHRycywkc2xvdHM6ZT0+ZS5zbG90cywkcmVmczplPT5lLnJlZnMsJHBhcmVudDplPT5ydShlLnBhcmVudCksJHJvb3Q6ZT0+cnUoZS5yb290KSwkaG9zdDplPT5lLmNlLCRlbWl0OmU9PmUuZW1pdCwkb3B0aW9uczplPT5TZihlKSwkZm9yY2VVcGRhdGU6ZT0+ZS5mfHwoZS5mPSgpPT57eWYoZS51cGRhdGUpfSksJG5leHRUaWNrOmU9PmUubnx8KGUubj1pdC5iaW5kKGUucHJveHkpKSwkd2F0Y2g6ZT0+JF8uYmluZChlKX0pLHBjPShlLHQpPT5lIT09WWUmJiFlLl9faXNTY3JpcHRTZXR1cCYmbnQoZSx0KSxyeD17Z2V0KHtfOmV9LHQpe2lmKHQ9PT0iX192X3NraXAiKXJldHVybiEwO2NvbnN0e2N0eDpuLHNldHVwU3RhdGU6cixkYXRhOm8scHJvcHM6cyxhY2Nlc3NDYWNoZTppLHR5cGU6YSxhcHBDb250ZXh0Omx9PWU7aWYodFswXSE9PSIkIil7Y29uc3QgZD1pW3RdO2lmKGQhPT12b2lkIDApc3dpdGNoKGQpe2Nhc2UgMTpyZXR1cm4gclt0XTtjYXNlIDI6cmV0dXJuIG9bdF07Y2FzZSA0OnJldHVybiBuW3RdO2Nhc2UgMzpyZXR1cm4gc1t0XX1lbHNle2lmKHBjKHIsdCkpcmV0dXJuIGlbdF09MSxyW3RdO2lmKG8hPT1ZZSYmbnQobyx0KSlyZXR1cm4gaVt0XT0yLG9bdF07aWYobnQocyx0KSlyZXR1cm4gaVt0XT0zLHNbdF07aWYobiE9PVllJiZudChuLHQpKXJldHVybiBpW3RdPTQsblt0XTtvdSYmKGlbdF09MCl9fWNvbnN0IHU9aWlbdF07bGV0IGMsZjtpZih1KXJldHVybiB0PT09IiRhdHRycyImJkt0KGUuYXR0cnMsImdldCIsIiIpLHUoZSk7aWYoKGM9YS5fX2Nzc01vZHVsZXMpJiYoYz1jW3RdKSlyZXR1cm4gYztpZihuIT09WWUmJm50KG4sdCkpcmV0dXJuIGlbdF09NCxuW3RdO2lmKGY9bC5jb25maWcuZ2xvYmFsUHJvcGVydGllcyxudChmLHQpKXJldHVybiBmW3RdfSxzZXQoe186ZX0sdCxuKXtjb25zdHtkYXRhOnIsc2V0dXBTdGF0ZTpvLGN0eDpzfT1lO3JldHVybiBwYyhvLHQpPyhvW3RdPW4sITApOnIhPT1ZZSYmbnQocix0KT8oclt0XT1uLCEwKTpudChlLnByb3BzLHQpfHx0WzBdPT09IiQiJiZ0LnNsaWNlKDEpaW4gZT8hMTooc1t0XT1uLCEwKX0saGFzKHtfOntkYXRhOmUsc2V0dXBTdGF0ZTp0LGFjY2Vzc0NhY2hlOm4sY3R4OnIsYXBwQ29udGV4dDpvLHByb3BzOnMsdHlwZTppfX0sYSl7bGV0IGw7cmV0dXJuISEoblthXXx8ZSE9PVllJiZhWzBdIT09IiQiJiZudChlLGEpfHxwYyh0LGEpfHxudChzLGEpfHxudChyLGEpfHxudChpaSxhKXx8bnQoby5jb25maWcuZ2xvYmFsUHJvcGVydGllcyxhKXx8KGw9aS5fX2Nzc01vZHVsZXMpJiZsW2FdKX0sZGVmaW5lUHJvcGVydHkoZSx0LG4pe3JldHVybiBuLmdldCE9bnVsbD9lLl8uYWNjZXNzQ2FjaGVbdF09MDpudChuLCJ2YWx1ZSIpJiZ0aGlzLnNldChlLHQsbi52YWx1ZSxudWxsKSxSZWZsZWN0LmRlZmluZVByb3BlcnR5KGUsdCxuKX19O2Z1bmN0aW9uIHpyKCl7cmV0dXJuIFVnKCkuc2xvdHN9ZnVuY3Rpb24gb3goKXtyZXR1cm4gVWcoKS5hdHRyc31mdW5jdGlvbiBVZyhlKXtjb25zdCB0PW10KCk7cmV0dXJuIHQuc2V0dXBDb250ZXh0fHwodC5zZXR1cENvbnRleHQ9aHkodCkpfWZ1bmN0aW9uIGJpKGUpe3JldHVybiBTZShlKT9lLnJlZHVjZSgodCxuKT0+KHRbbl09bnVsbCx0KSx7fSk6ZX1mdW5jdGlvbiBzeChlLHQpe2NvbnN0IG49YmkoZSk7Zm9yKGNvbnN0IHIgaW4gdCl7aWYoci5zdGFydHNXaXRoKCJfX3NraXAiKSljb250aW51ZTtsZXQgbz1uW3JdO28/U2Uobyl8fENlKG8pP289bltyXT17dHlwZTpvLGRlZmF1bHQ6dFtyXX06by5kZWZhdWx0PXRbcl06bz09PW51bGwmJihvPW5bcl09e2RlZmF1bHQ6dFtyXX0pLG8mJnRbYF9fc2tpcF8ke3J9YF0mJihvLnNraXBGYWN0b3J5PSEwKX1yZXR1cm4gbn1mdW5jdGlvbiBpeChlLHQpe3JldHVybiFlfHwhdD9lfHx0OlNlKGUpJiZTZSh0KT9lLmNvbmNhdCh0KTp2dCh7fSxiaShlKSxiaSh0KSl9ZnVuY3Rpb24gcnEoZSl7Y29uc3QgdD1tdCgpLG49Qm87bGV0IHI9ZSgpO19pKCksbiYmaHMoITEpO2NvbnN0IG89KCk9PntEcyh0KSxuJiZocyghMCl9LHM9KCk9PnttdCgpIT09dCYmdC5zY29wZS5vZmYoKSxfaSgpLG4mJmhzKCExKX07cmV0dXJuIHVsKHIpJiYocj1yLmNhdGNoKGk9Pnt0aHJvdyBvKCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbihzKSksaX0pKSxbciwoKT0+e28oKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKHMpfV19bGV0IG91PSEwO2Z1bmN0aW9uIGF4KGUpe2NvbnN0IHQ9U2YoZSksbj1lLnByb3h5LHI9ZS5jdHg7b3U9ITEsdC5iZWZvcmVDcmVhdGUmJlpkKHQuYmVmb3JlQ3JlYXRlLGUsImJjIik7Y29uc3R7ZGF0YTpvLGNvbXB1dGVkOnMsbWV0aG9kczppLHdhdGNoOmEscHJvdmlkZTpsLGluamVjdDp1LGNyZWF0ZWQ6YyxiZWZvcmVNb3VudDpmLG1vdW50ZWQ6ZCxiZWZvcmVVcGRhdGU6cCx1cGRhdGVkOm0sYWN0aXZhdGVkOnksZGVhY3RpdmF0ZWQ6XyxiZWZvcmVEZXN0cm95OncsYmVmb3JlVW5tb3VudDp2LGRlc3Ryb3llZDpoLHVubW91bnRlZDpiLHJlbmRlcjp4LHJlbmRlclRyYWNrZWQ6UyxyZW5kZXJUcmlnZ2VyZWQ6ayxlcnJvckNhcHR1cmVkOlQsc2VydmVyUHJlZmV0Y2g6QyxleHBvc2U6UCxpbmhlcml0QXR0cnM6Rixjb21wb25lbnRzOkQsZGlyZWN0aXZlczpXLGZpbHRlcnM6TH09dDtpZih1JiZseCh1LHIsbnVsbCksaSlmb3IoY29uc3QgViBpbiBpKXtjb25zdCBCPWlbVl07Q2UoQikmJihyW1ZdPUIuYmluZChuKSl9aWYobyl7Y29uc3QgVj1vLmNhbGwobixuKTtaZShWKSYmKGUuZGF0YT1idChWKSl9aWYob3U9ITAscylmb3IoY29uc3QgViBpbiBzKXtjb25zdCBCPXNbVl0saWU9Q2UoQik/Qi5iaW5kKG4sbik6Q2UoQi5nZXQpP0IuZ2V0LmJpbmQobixuKTpscixuZT0hQ2UoQikmJkNlKEIuc2V0KT9CLnNldC5iaW5kKG4pOmxyLFZlPU4oe2dldDppZSxzZXQ6bmV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkocixWLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PlZlLnZhbHVlLHNldDpOZT0+VmUudmFsdWU9TmV9KX1pZihhKWZvcihjb25zdCBWIGluIGEpSGcoYVtWXSxyLG4sVik7aWYobCl7Y29uc3QgVj1DZShsKT9sLmNhbGwobik6bDtSZWZsZWN0Lm93bktleXMoVikuZm9yRWFjaChCPT57TnQoQixWW0JdKX0pfWMmJlpkKGMsZSwiYyIpO2Z1bmN0aW9uIEkoVixCKXtTZShCKT9CLmZvckVhY2goaWU9PlYoaWUuYmluZChuKSkpOkImJlYoQi5iaW5kKG4pKX1pZihJKHFnLGYpLEkob3QsZCksSShKXyxwKSxJKHhsLG0pLEkoJGcseSksSShNZyxfKSxJKEZnLFQpLEkoZXgsUyksSShaXyxrKSxJKEhvLHYpLEkocHIsYiksSShYXyxDKSxTZShQKSlpZihQLmxlbmd0aCl7Y29uc3QgVj1lLmV4cG9zZWR8fChlLmV4cG9zZWQ9e30pO1AuZm9yRWFjaChCPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KFYsQix7Z2V0OigpPT5uW0JdLHNldDppZT0+bltCXT1pZSxlbnVtZXJhYmxlOiEwfSl9KX1lbHNlIGUuZXhwb3NlZHx8KGUuZXhwb3NlZD17fSk7eCYmZS5yZW5kZXI9PT1sciYmKGUucmVuZGVyPXgpLEYhPW51bGwmJihlLmluaGVyaXRBdHRycz1GKSxEJiYoZS5jb21wb25lbnRzPUQpLFcmJihlLmRpcmVjdGl2ZXM9VyksQyYmd2YoZSl9ZnVuY3Rpb24gbHgoZSx0LG49bHIpe1NlKGUpJiYoZT1zdShlKSk7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdO2xldCBzO1plKG8pPyJkZWZhdWx0ImluIG8/cz1LZShvLmZyb218fHIsby5kZWZhdWx0LCEwKTpzPUtlKG8uZnJvbXx8cik6cz1LZShvKSwkZShzKT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PnMudmFsdWUsc2V0Omk9PnMudmFsdWU9aX0pOnRbcl09c319ZnVuY3Rpb24gWmQoZSx0LG4pe0huKFNlKGUpP2UubWFwKHI9PnIuYmluZCh0LnByb3h5KSk6ZS5iaW5kKHQucHJveHkpLHQsbil9ZnVuY3Rpb24gSGcoZSx0LG4scil7bGV0IG89ci5pbmNsdWRlcygiLiIpP0FnKG4scik6KCk9Pm5bcl07aWYoZnQoZSkpe2NvbnN0IHM9dFtlXTtDZShzKSYmUGUobyxzKX1lbHNlIGlmKENlKGUpKVBlKG8sZS5iaW5kKG4pKTtlbHNlIGlmKFplKGUpKWlmKFNlKGUpKWUuZm9yRWFjaChzPT5IZyhzLHQsbixyKSk7ZWxzZXtjb25zdCBzPUNlKGUuaGFuZGxlcik/ZS5oYW5kbGVyLmJpbmQobik6dFtlLmhhbmRsZXJdO0NlKHMpJiZQZShvLHMsZSl9fWZ1bmN0aW9uIFNmKGUpe2NvbnN0IHQ9ZS50eXBlLHttaXhpbnM6bixleHRlbmRzOnJ9PXQse21peGluczpvLG9wdGlvbnNDYWNoZTpzLGNvbmZpZzp7b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOml9fT1lLmFwcENvbnRleHQsYT1zLmdldCh0KTtsZXQgbDtyZXR1cm4gYT9sPWE6IW8ubGVuZ3RoJiYhbiYmIXI/bD10OihsPXt9LG8ubGVuZ3RoJiZvLmZvckVhY2godT0+emEobCx1LGksITApKSx6YShsLHQsaSkpLFplKHQpJiZzLnNldCh0LGwpLGx9ZnVuY3Rpb24gemEoZSx0LG4scj0hMSl7Y29uc3R7bWl4aW5zOm8sZXh0ZW5kczpzfT10O3MmJnphKGUscyxuLCEwKSxvJiZvLmZvckVhY2goaT0+emEoZSxpLG4sITApKTtmb3IoY29uc3QgaSBpbiB0KWlmKCEociYmaT09PSJleHBvc2UiKSl7Y29uc3QgYT1jeFtpXXx8biYmbltpXTtlW2ldPWE/YShlW2ldLHRbaV0pOnRbaV19cmV0dXJuIGV9Y29uc3QgY3g9e2RhdGE6ZXAscHJvcHM6dHAsZW1pdHM6dHAsbWV0aG9kczpacyxjb21wdXRlZDpacyxiZWZvcmVDcmVhdGU6WnQsY3JlYXRlZDpadCxiZWZvcmVNb3VudDpadCxtb3VudGVkOlp0LGJlZm9yZVVwZGF0ZTpadCx1cGRhdGVkOlp0LGJlZm9yZURlc3Ryb3k6WnQsYmVmb3JlVW5tb3VudDpadCxkZXN0cm95ZWQ6WnQsdW5tb3VudGVkOlp0LGFjdGl2YXRlZDpadCxkZWFjdGl2YXRlZDpadCxlcnJvckNhcHR1cmVkOlp0LHNlcnZlclByZWZldGNoOlp0LGNvbXBvbmVudHM6WnMsZGlyZWN0aXZlczpacyx3YXRjaDpmeCxwcm92aWRlOmVwLGluamVjdDp1eH07ZnVuY3Rpb24gZXAoZSx0KXtyZXR1cm4gdD9lP2Z1bmN0aW9uKCl7cmV0dXJuIHZ0KENlKGUpP2UuY2FsbCh0aGlzLHRoaXMpOmUsQ2UodCk/dC5jYWxsKHRoaXMsdGhpcyk6dCl9OnQ6ZX1mdW5jdGlvbiB1eChlLHQpe3JldHVybiBacyhzdShlKSxzdSh0KSl9ZnVuY3Rpb24gc3UoZSl7aWYoU2UoZSkpe2NvbnN0IHQ9e307Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdFtlW25dXT1lW25dO3JldHVybiB0fXJldHVybiBlfWZ1bmN0aW9uIFp0KGUsdCl7cmV0dXJuIGU/Wy4uLm5ldyBTZXQoW10uY29uY2F0KGUsdCkpXTp0fWZ1bmN0aW9uIFpzKGUsdCl7cmV0dXJuIGU/dnQoT2JqZWN0LmNyZWF0ZShudWxsKSxlLHQpOnR9ZnVuY3Rpb24gdHAoZSx0KXtyZXR1cm4gZT9TZShlKSYmU2UodCk/Wy4uLm5ldyBTZXQoWy4uLmUsLi4udF0pXTp2dChPYmplY3QuY3JlYXRlKG51bGwpLGJpKGUpLGJpKHQ/P3t9KSk6dH1mdW5jdGlvbiBmeChlLHQpe2lmKCFlKXJldHVybiB0O2lmKCF0KXJldHVybiBlO2NvbnN0IG49dnQoT2JqZWN0LmNyZWF0ZShudWxsKSxlKTtmb3IoY29uc3QgciBpbiB0KW5bcl09WnQoZVtyXSx0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBXZygpe3JldHVybnthcHA6bnVsbCxjb25maWc6e2lzTmF0aXZlVGFnOlFoLHBlcmZvcm1hbmNlOiExLGdsb2JhbFByb3BlcnRpZXM6e30sb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOnt9LGVycm9ySGFuZGxlcjp2b2lkIDAsd2FybkhhbmRsZXI6dm9pZCAwLGNvbXBpbGVyT3B0aW9uczp7fX0sbWl4aW5zOltdLGNvbXBvbmVudHM6e30sZGlyZWN0aXZlczp7fSxwcm92aWRlczpPYmplY3QuY3JlYXRlKG51bGwpLG9wdGlvbnNDYWNoZTpuZXcgV2Vha01hcCxwcm9wc0NhY2hlOm5ldyBXZWFrTWFwLGVtaXRzQ2FjaGU6bmV3IFdlYWtNYXB9fWxldCBkeD0wO2Z1bmN0aW9uIHB4KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsbz1udWxsKXtDZShyKXx8KHI9dnQoe30scikpLG8hPW51bGwmJiFaZShvKSYmKG89bnVsbCk7Y29uc3Qgcz1XZygpLGk9bmV3IFdlYWtTZXQsYT1bXTtsZXQgbD0hMTtjb25zdCB1PXMuYXBwPXtfdWlkOmR4KyssX2NvbXBvbmVudDpyLF9wcm9wczpvLF9jb250YWluZXI6bnVsbCxfY29udGV4dDpzLF9pbnN0YW5jZTpudWxsLHZlcnNpb246V3gsZ2V0IGNvbmZpZygpe3JldHVybiBzLmNvbmZpZ30sc2V0IGNvbmZpZyhjKXt9LHVzZShjLC4uLmYpe3JldHVybiBpLmhhcyhjKXx8KGMmJkNlKGMuaW5zdGFsbCk/KGkuYWRkKGMpLGMuaW5zdGFsbCh1LC4uLmYpKTpDZShjKSYmKGkuYWRkKGMpLGModSwuLi5mKSkpLHV9LG1peGluKGMpe3JldHVybiBzLm1peGlucy5pbmNsdWRlcyhjKXx8cy5taXhpbnMucHVzaChjKSx1fSxjb21wb25lbnQoYyxmKXtyZXR1cm4gZj8ocy5jb21wb25lbnRzW2NdPWYsdSk6cy5jb21wb25lbnRzW2NdfSxkaXJlY3RpdmUoYyxmKXtyZXR1cm4gZj8ocy5kaXJlY3RpdmVzW2NdPWYsdSk6cy5kaXJlY3RpdmVzW2NdfSxtb3VudChjLGYsZCl7aWYoIWwpe2NvbnN0IHA9dS5fY2VWTm9kZXx8cmUocixvKTtyZXR1cm4gcC5hcHBDb250ZXh0PXMsZD09PSEwP2Q9InN2ZyI6ZD09PSExJiYoZD12b2lkIDApLGYmJnQ/dChwLGMpOmUocCxjLGQpLGw9ITAsdS5fY29udGFpbmVyPWMsYy5fX3Z1ZV9hcHBfXz11LEVsKHAuY29tcG9uZW50KX19LG9uVW5tb3VudChjKXthLnB1c2goYyl9LHVubW91bnQoKXtsJiYoSG4oYSx1Ll9pbnN0YW5jZSwxNiksZShudWxsLHUuX2NvbnRhaW5lciksZGVsZXRlIHUuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXyl9LHByb3ZpZGUoYyxmKXtyZXR1cm4gcy5wcm92aWRlc1tjXT1mLHV9LHJ1bldpdGhDb250ZXh0KGMpe2NvbnN0IGY9Tm87Tm89dTt0cnl7cmV0dXJuIGMoKX1maW5hbGx5e05vPWZ9fX07cmV0dXJuIHV9fWxldCBObz1udWxsO2Z1bmN0aW9uIG14KGUsdCxuPVllKXtjb25zdCByPW10KCksbz0kdCh0KSxzPUJyKHQpLGk9R2coZSxvKSxhPXdsKChsLHUpPT57bGV0IGMsZj1ZZSxkO3JldHVybiBMXygoKT0+e2NvbnN0IHA9ZVtvXTtGdChjLHApJiYoYz1wLHUoKSl9KSx7Z2V0KCl7cmV0dXJuIGwoKSxuLmdldD9uLmdldChjKTpjfSxzZXQocCl7Y29uc3QgbT1uLnNldD9uLnNldChwKTpwO2lmKCFGdChtLGMpJiYhKGYhPT1ZZSYmRnQocCxmKSkpcmV0dXJuO2NvbnN0IHk9ci52bm9kZS5wcm9wczt5JiYodCBpbiB5fHxvIGluIHl8fHMgaW4geSkmJihgb25VcGRhdGU6JHt0fWBpbiB5fHxgb25VcGRhdGU6JHtvfWBpbiB5fHxgb25VcGRhdGU6JHtzfWBpbiB5KXx8KGM9cCx1KCkpLHIuZW1pdChgdXBkYXRlOiR7dH1gLG0pLEZ0KHAsbSkmJkZ0KHAsZikmJiFGdChtLGQpJiZ1KCksZj1wLGQ9bX19fSk7cmV0dXJuIGFbU3ltYm9sLml0ZXJhdG9yXT0oKT0+e2xldCBsPTA7cmV0dXJue25leHQoKXtyZXR1cm4gbDwyP3t2YWx1ZTpsKys/aXx8WWU6YSxkb25lOiExfTp7ZG9uZTohMH19fX0sYX1jb25zdCBHZz0oZSx0KT0+dD09PSJtb2RlbFZhbHVlInx8dD09PSJtb2RlbC12YWx1ZSI/ZS5tb2RlbE1vZGlmaWVyczplW2Ake3R9TW9kaWZpZXJzYF18fGVbYCR7JHQodCl9TW9kaWZpZXJzYF18fGVbYCR7QnIodCl9TW9kaWZpZXJzYF07ZnVuY3Rpb24gaHgoZSx0LC4uLm4pe2lmKGUuaXNVbm1vdW50ZWQpcmV0dXJuO2NvbnN0IHI9ZS52bm9kZS5wcm9wc3x8WWU7bGV0IG89bjtjb25zdCBzPXQuc3RhcnRzV2l0aCgidXBkYXRlOiIpLGk9cyYmR2cocix0LnNsaWNlKDcpKTtpJiYoaS50cmltJiYobz1uLm1hcChjPT5mdChjKT9jLnRyaW0oKTpjKSksaS5udW1iZXImJihvPW4ubWFwKEd3KSkpO2xldCBhLGw9clthPW5pKHQpXXx8clthPW5pKCR0KHQpKV07IWwmJnMmJihsPXJbYT1uaShCcih0KSldKSxsJiZIbihsLGUsNixvKTtjb25zdCB1PXJbYSsiT25jZSJdO2lmKHUpe2lmKCFlLmVtaXR0ZWQpZS5lbWl0dGVkPXt9O2Vsc2UgaWYoZS5lbWl0dGVkW2FdKXJldHVybjtlLmVtaXR0ZWRbYV09ITAsSG4odSxlLDYsbyl9fWNvbnN0IGd4PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEtnKGUsdCxuPSExKXtjb25zdCByPW4/Z3g6dC5lbWl0c0NhY2hlLG89ci5nZXQoZSk7aWYobyE9PXZvaWQgMClyZXR1cm4gbztjb25zdCBzPWUuZW1pdHM7bGV0IGk9e30sYT0hMTtpZighQ2UoZSkpe2NvbnN0IGw9dT0+e2NvbnN0IGM9S2codSx0LCEwKTtjJiYoYT0hMCx2dChpLGMpKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChsKSxlLmV4dGVuZHMmJmwoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChsKX1yZXR1cm4hcyYmIWE/KFplKGUpJiZyLnNldChlLG51bGwpLG51bGwpOihTZShzKT9zLmZvckVhY2gobD0+aVtsXT1udWxsKTp2dChpLHMpLFplKGUpJiZyLnNldChlLGkpLGkpfWZ1bmN0aW9uIFNsKGUsdCl7cmV0dXJuIWV8fCFSaSh0KT8hMToodD10LnNsaWNlKDIpLnJlcGxhY2UoL09uY2UkLywiIiksbnQoZSx0WzBdLnRvTG93ZXJDYXNlKCkrdC5zbGljZSgxKSl8fG50KGUsQnIodCkpfHxudChlLHQpKX1mdW5jdGlvbiBtYyhlKXtjb25zdHt0eXBlOnQsdm5vZGU6bixwcm94eTpyLHdpdGhQcm94eTpvLHByb3BzT3B0aW9uczpbc10sc2xvdHM6aSxhdHRyczphLGVtaXQ6bCxyZW5kZXI6dSxyZW5kZXJDYWNoZTpjLHByb3BzOmYsZGF0YTpkLHNldHVwU3RhdGU6cCxjdHg6bSxpbmhlcml0QXR0cnM6eX09ZSxfPXFhKGUpO2xldCB3LHY7dHJ5e2lmKG4uc2hhcGVGbGFnJjQpe2NvbnN0IGI9b3x8cix4PWI7dz1ibih1LmNhbGwoeCxiLGMsZixwLGQsbSkpLHY9YX1lbHNle2NvbnN0IGI9dDt3PWJuKGIubGVuZ3RoPjE/YihmLHthdHRyczphLHNsb3RzOmksZW1pdDpsfSk6YihmLG51bGwpKSx2PXQucHJvcHM/YTp2eChhKX19Y2F0Y2goYil7bGkubGVuZ3RoPTAsTnMoYixlLDEpLHc9cmUoX3QpfWxldCBoPXc7aWYodiYmeSE9PSExKXtjb25zdCBiPU9iamVjdC5rZXlzKHYpLHtzaGFwZUZsYWc6eH09aDtiLmxlbmd0aCYmeCY3JiYocyYmYi5zb21lKGNsKSYmKHY9YngodixzKSksaD1wbihoLHYsITEsITApKX1yZXR1cm4gbi5kaXJzJiYoaD1wbihoLG51bGwsITEsITApLGguZGlycz1oLmRpcnM/aC5kaXJzLmNvbmNhdChuLmRpcnMpOm4uZGlycyksbi50cmFuc2l0aW9uJiZ4cyhoLG4udHJhbnNpdGlvbiksdz1oLHFhKF8pLHd9ZnVuY3Rpb24geXgoZSx0PSEwKXtsZXQgbjtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7Y29uc3Qgbz1lW3JdO2lmKE1vKG8pKXtpZihvLnR5cGUhPT1fdHx8by5jaGlsZHJlbj09PSJ2LWlmIil7aWYobilyZXR1cm47bj1vfX1lbHNlIHJldHVybn1yZXR1cm4gbn1jb25zdCB2eD1lPT57bGV0IHQ7Zm9yKGNvbnN0IG4gaW4gZSkobj09PSJjbGFzcyJ8fG49PT0ic3R5bGUifHxSaShuKSkmJigodHx8KHQ9e30pKVtuXT1lW25dKTtyZXR1cm4gdH0sYng9KGUsdCk9Pntjb25zdCBuPXt9O2Zvcihjb25zdCByIGluIGUpKCFjbChyKXx8IShyLnNsaWNlKDkpaW4gdCkpJiYobltyXT1lW3JdKTtyZXR1cm4gbn07ZnVuY3Rpb24gd3goZSx0LG4pe2NvbnN0e3Byb3BzOnIsY2hpbGRyZW46byxjb21wb25lbnQ6c309ZSx7cHJvcHM6aSxjaGlsZHJlbjphLHBhdGNoRmxhZzpsfT10LHU9cy5lbWl0c09wdGlvbnM7aWYodC5kaXJzfHx0LnRyYW5zaXRpb24pcmV0dXJuITA7aWYobiYmbD49MCl7aWYobCYxMDI0KXJldHVybiEwO2lmKGwmMTYpcmV0dXJuIHI/bnAocixpLHUpOiEhaTtpZihsJjgpe2NvbnN0IGM9dC5keW5hbWljUHJvcHM7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKyspe2NvbnN0IGQ9Y1tmXTtpZihRZyhpLHIsZCkmJiFTbCh1LGQpKXJldHVybiEwfX19ZWxzZSByZXR1cm4ob3x8YSkmJighYXx8IWEuJHN0YWJsZSk/ITA6cj09PWk/ITE6cj9pP25wKHIsaSx1KTohMDohIWk7cmV0dXJuITF9ZnVuY3Rpb24gbnAoZSx0LG4pe2NvbnN0IHI9T2JqZWN0LmtleXModCk7aWYoci5sZW5ndGghPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITA7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspe2NvbnN0IHM9cltvXTtpZihRZyh0LGUscykmJiFTbChuLHMpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFFnKGUsdCxuKXtjb25zdCByPWVbbl0sbz10W25dO3JldHVybiBuPT09InN0eWxlIiYmWmUocikmJlplKG8pPyFwZihyLG8pOnIhPT1vfWZ1bmN0aW9uIGtsKHt2bm9kZTplLHBhcmVudDp0LHN1c3BlbnNlOm59LHIpe2Zvcig7dDspe2NvbnN0IG89dC5zdWJUcmVlO2lmKG8uc3VzcGVuc2UmJm8uc3VzcGVuc2UuYWN0aXZlQnJhbmNoPT09ZSYmKG8uc3VzcGVuc2Uudm5vZGUuZWw9by5lbD1yLGU9byksbz09PWUpKGU9dC52bm9kZSkuZWw9cix0PXQucGFyZW50O2Vsc2UgYnJlYWt9biYmbi5hY3RpdmVCcmFuY2g9PT1lJiYobi52bm9kZS5lbD1yKX1jb25zdCBZZz17fSxKZz0oKT0+T2JqZWN0LmNyZWF0ZShZZyksWGc9ZT0+T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09WWc7ZnVuY3Rpb24gX3goZSx0LG4scj0hMSl7Y29uc3Qgbz17fSxzPUpnKCk7ZS5wcm9wc0RlZmF1bHRzPU9iamVjdC5jcmVhdGUobnVsbCksWmcoZSx0LG8scyk7Zm9yKGNvbnN0IGkgaW4gZS5wcm9wc09wdGlvbnNbMF0paSBpbiBvfHwob1tpXT12b2lkIDApO24/ZS5wcm9wcz1yP286UG4obyk6ZS50eXBlLnByb3BzP2UucHJvcHM9bzplLnByb3BzPXMsZS5hdHRycz1zfWZ1bmN0aW9uIHh4KGUsdCxuLHIpe2NvbnN0e3Byb3BzOm8sYXR0cnM6cyx2bm9kZTp7cGF0Y2hGbGFnOml9fT1lLGE9amUobyksW2xdPWUucHJvcHNPcHRpb25zO2xldCB1PSExO2lmKChyfHxpPjApJiYhKGkmMTYpKXtpZihpJjgpe2NvbnN0IGM9ZS52bm9kZS5keW5hbWljUHJvcHM7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKyspe2xldCBkPWNbZl07aWYoU2woZS5lbWl0c09wdGlvbnMsZCkpY29udGludWU7Y29uc3QgcD10W2RdO2lmKGwpaWYobnQocyxkKSlwIT09c1tkXSYmKHNbZF09cCx1PSEwKTtlbHNle2NvbnN0IG09JHQoZCk7b1ttXT1pdShsLGEsbSxwLGUsITEpfWVsc2UgcCE9PXNbZF0mJihzW2RdPXAsdT0hMCl9fX1lbHNle1pnKGUsdCxvLHMpJiYodT0hMCk7bGV0IGM7Zm9yKGNvbnN0IGYgaW4gYSkoIXR8fCFudCh0LGYpJiYoKGM9QnIoZikpPT09Znx8IW50KHQsYykpKSYmKGw/biYmKG5bZl0hPT12b2lkIDB8fG5bY10hPT12b2lkIDApJiYob1tmXT1pdShsLGEsZix2b2lkIDAsZSwhMCkpOmRlbGV0ZSBvW2ZdKTtpZihzIT09YSlmb3IoY29uc3QgZiBpbiBzKSghdHx8IW50KHQsZikpJiYoZGVsZXRlIHNbZl0sdT0hMCl9dSYmT3IoZS5hdHRycywic2V0IiwiIil9ZnVuY3Rpb24gWmcoZSx0LG4scil7Y29uc3RbbyxzXT1lLnByb3BzT3B0aW9ucztsZXQgaT0hMSxhO2lmKHQpZm9yKGxldCBsIGluIHQpe2lmKElvKGwpKWNvbnRpbnVlO2NvbnN0IHU9dFtsXTtsZXQgYztvJiZudChvLGM9JHQobCkpPyFzfHwhcy5pbmNsdWRlcyhjKT9uW2NdPXU6KGF8fChhPXt9KSlbY109dTpTbChlLmVtaXRzT3B0aW9ucyxsKXx8KCEobCBpbiByKXx8dSE9PXJbbF0pJiYocltsXT11LGk9ITApfWlmKHMpe2NvbnN0IGw9amUobiksdT1hfHxZZTtmb3IobGV0IGM9MDtjPHMubGVuZ3RoO2MrKyl7Y29uc3QgZj1zW2NdO25bZl09aXUobyxsLGYsdVtmXSxlLCFudCh1LGYpKX19cmV0dXJuIGl9ZnVuY3Rpb24gaXUoZSx0LG4scixvLHMpe2NvbnN0IGk9ZVtuXTtpZihpIT1udWxsKXtjb25zdCBhPW50KGksImRlZmF1bHQiKTtpZihhJiZyPT09dm9pZCAwKXtjb25zdCBsPWkuZGVmYXVsdDtpZihpLnR5cGUhPT1GdW5jdGlvbiYmIWkuc2tpcEZhY3RvcnkmJkNlKGwpKXtjb25zdHtwcm9wc0RlZmF1bHRzOnV9PW87aWYobiBpbiB1KXI9dVtuXTtlbHNle2NvbnN0IGM9RHMobyk7cj11W25dPWwuY2FsbChudWxsLHQpLGMoKX19ZWxzZSByPWw7by5jZSYmby5jZS5fc2V0UHJvcChuLHIpfWlbMF0mJihzJiYhYT9yPSExOmlbMV0mJihyPT09IiJ8fHI9PT1CcihuKSkmJihyPSEwKSl9cmV0dXJuIHJ9Y29uc3QgU3g9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gZXkoZSx0LG49ITEpe2NvbnN0IHI9bj9TeDp0LnByb3BzQ2FjaGUsbz1yLmdldChlKTtpZihvKXJldHVybiBvO2NvbnN0IHM9ZS5wcm9wcyxpPXt9LGE9W107bGV0IGw9ITE7aWYoIUNlKGUpKXtjb25zdCBjPWY9PntsPSEwO2NvbnN0W2QscF09ZXkoZix0LCEwKTt2dChpLGQpLHAmJmEucHVzaCguLi5wKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChjKSxlLmV4dGVuZHMmJmMoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChjKX1pZighcyYmIWwpcmV0dXJuIFplKGUpJiZyLnNldChlLHVzKSx1cztpZihTZShzKSlmb3IobGV0IGM9MDtjPHMubGVuZ3RoO2MrKyl7Y29uc3QgZj0kdChzW2NdKTtycChmKSYmKGlbZl09WWUpfWVsc2UgaWYocylmb3IoY29uc3QgYyBpbiBzKXtjb25zdCBmPSR0KGMpO2lmKHJwKGYpKXtjb25zdCBkPXNbY10scD1pW2ZdPVNlKGQpfHxDZShkKT97dHlwZTpkfTp2dCh7fSxkKSxtPXAudHlwZTtsZXQgeT0hMSxfPSEwO2lmKFNlKG0pKWZvcihsZXQgdz0wO3c8bS5sZW5ndGg7Kyt3KXtjb25zdCB2PW1bd10saD1DZSh2KSYmdi5uYW1lO2lmKGg9PT0iQm9vbGVhbiIpe3k9ITA7YnJlYWt9ZWxzZSBoPT09IlN0cmluZyImJihfPSExKX1lbHNlIHk9Q2UobSkmJm0ubmFtZT09PSJCb29sZWFuIjtwWzBdPXkscFsxXT1fLCh5fHxudChwLCJkZWZhdWx0IikpJiZhLnB1c2goZil9fWNvbnN0IHU9W2ksYV07cmV0dXJuIFplKGUpJiZyLnNldChlLHUpLHV9ZnVuY3Rpb24gcnAoZSl7cmV0dXJuIGVbMF0hPT0iJCImJiFJbyhlKX1jb25zdCBrZj1lPT5lPT09Il8ifHxlPT09Il9jdHgifHxlPT09IiRzdGFibGUiLEVmPWU9PlNlKGUpP2UubWFwKGJuKTpbYm4oZSldLGt4PShlLHQsbik9PntpZih0Ll9uKXJldHVybiB0O2NvbnN0IHI9TSgoLi4ubyk9PkVmKHQoLi4ubykpLG4pO3JldHVybiByLl9jPSExLHJ9LHR5PShlLHQsbik9Pntjb25zdCByPWUuX2N0eDtmb3IoY29uc3QgbyBpbiBlKXtpZihrZihvKSljb250aW51ZTtjb25zdCBzPWVbb107aWYoQ2UocykpdFtvXT1reChvLHMscik7ZWxzZSBpZihzIT1udWxsKXtjb25zdCBpPUVmKHMpO3Rbb109KCk9Pml9fX0sbnk9KGUsdCk9Pntjb25zdCBuPUVmKHQpO2Uuc2xvdHMuZGVmYXVsdD0oKT0+bn0scnk9KGUsdCxuKT0+e2Zvcihjb25zdCByIGluIHQpKG58fCFrZihyKSkmJihlW3JdPXRbcl0pfSxFeD0oZSx0LG4pPT57Y29uc3Qgcj1lLnNsb3RzPUpnKCk7aWYoZS52bm9kZS5zaGFwZUZsYWcmMzIpe2NvbnN0IG89dC5fO28/KHJ5KHIsdCxuKSxuJiZYaChyLCJfIixvLCEwKSk6dHkodCxyKX1lbHNlIHQmJm55KGUsdCl9LFR4PShlLHQsbik9Pntjb25zdHt2bm9kZTpyLHNsb3RzOm99PWU7bGV0IHM9ITAsaT1ZZTtpZihyLnNoYXBlRmxhZyYzMil7Y29uc3QgYT10Ll87YT9uJiZhPT09MT9zPSExOnJ5KG8sdCxuKToocz0hdC4kc3RhYmxlLHR5KHQsbykpLGk9dH1lbHNlIHQmJihueShlLHQpLGk9e2RlZmF1bHQ6MX0pO2lmKHMpZm9yKGNvbnN0IGEgaW4gbykha2YoYSkmJmlbYV09PW51bGwmJmRlbGV0ZSBvW2FdfSxUdD1jeTtmdW5jdGlvbiBDeChlKXtyZXR1cm4gb3koZSl9ZnVuY3Rpb24gQXgoZSl7cmV0dXJuIG95KGUsSF8pfWZ1bmN0aW9uIG95KGUsdCl7Y29uc3Qgbj1tbCgpO24uX19WVUVfXz0hMDtjb25zdHtpbnNlcnQ6cixyZW1vdmU6byxwYXRjaFByb3A6cyxjcmVhdGVFbGVtZW50OmksY3JlYXRlVGV4dDphLGNyZWF0ZUNvbW1lbnQ6bCxzZXRUZXh0OnUsc2V0RWxlbWVudFRleHQ6YyxwYXJlbnROb2RlOmYsbmV4dFNpYmxpbmc6ZCxzZXRTY29wZUlkOnA9bHIsaW5zZXJ0U3RhdGljQ29udGVudDptfT1lLHk9KEUsTyxxLEs9bnVsbCxIPW51bGwsWD1udWxsLGNlPXZvaWQgMCxhZT1udWxsLG9lPSEhTy5keW5hbWljQ2hpbGRyZW4pPT57aWYoRT09PU8pcmV0dXJuO0UmJiFxbihFLE8pJiYoSz16KEUpLE5lKEUsSCxYLCEwKSxFPW51bGwpLE8ucGF0Y2hGbGFnPT09LTImJihvZT0hMSxPLmR5bmFtaWNDaGlsZHJlbj1udWxsKTtjb25zdHt0eXBlOloscmVmOmtlLHNoYXBlRmxhZzpwZX09Tztzd2l0Y2goWil7Y2FzZSBEbzpfKEUsTyxxLEspO2JyZWFrO2Nhc2UgX3Q6dyhFLE8scSxLKTticmVhaztjYXNlIGFpOkU9PW51bGwmJnYoTyxxLEssY2UpO2JyZWFrO2Nhc2UgR2U6RChFLE8scSxLLEgsWCxjZSxhZSxvZSk7YnJlYWs7ZGVmYXVsdDpwZSYxP3goRSxPLHEsSyxILFgsY2UsYWUsb2UpOnBlJjY/VyhFLE8scSxLLEgsWCxjZSxhZSxvZSk6KHBlJjY0fHxwZSYxMjgpJiZaLnByb2Nlc3MoRSxPLHEsSyxILFgsY2UsYWUsb2UsbGUpfWtlIT1udWxsJiZIP3BzKGtlLEUmJkUucmVmLFgsT3x8RSwhTyk6a2U9PW51bGwmJkUmJkUucmVmIT1udWxsJiZwcyhFLnJlZixudWxsLFgsRSwhMCl9LF89KEUsTyxxLEspPT57aWYoRT09bnVsbClyKE8uZWw9YShPLmNoaWxkcmVuKSxxLEspO2Vsc2V7Y29uc3QgSD1PLmVsPUUuZWw7Ty5jaGlsZHJlbiE9PUUuY2hpbGRyZW4mJnUoSCxPLmNoaWxkcmVuKX19LHc9KEUsTyxxLEspPT57RT09bnVsbD9yKE8uZWw9bChPLmNoaWxkcmVufHwiIikscSxLKTpPLmVsPUUuZWx9LHY9KEUsTyxxLEspPT57W0UuZWwsRS5hbmNob3JdPW0oRS5jaGlsZHJlbixPLHEsSyxFLmVsLEUuYW5jaG9yKX0saD0oe2VsOkUsYW5jaG9yOk99LHEsSyk9PntsZXQgSDtmb3IoO0UmJkUhPT1POylIPWQoRSkscihFLHEsSyksRT1IO3IoTyxxLEspfSxiPSh7ZWw6RSxhbmNob3I6T30pPT57bGV0IHE7Zm9yKDtFJiZFIT09TzspcT1kKEUpLG8oRSksRT1xO28oTyl9LHg9KEUsTyxxLEssSCxYLGNlLGFlLG9lKT0+e2lmKE8udHlwZT09PSJzdmciP2NlPSJzdmciOk8udHlwZT09PSJtYXRoIiYmKGNlPSJtYXRobWwiKSxFPT1udWxsKVMoTyxxLEssSCxYLGNlLGFlLG9lKTtlbHNle2NvbnN0IFo9RS5lbCYmRS5lbC5faXNWdWVDRT9FLmVsOm51bGw7dHJ5e1omJlouX2JlZ2luUGF0Y2goKSxDKEUsTyxILFgsY2UsYWUsb2UpfWZpbmFsbHl7WiYmWi5fZW5kUGF0Y2goKX19fSxTPShFLE8scSxLLEgsWCxjZSxhZSk9PntsZXQgb2UsWjtjb25zdHtwcm9wczprZSxzaGFwZUZsYWc6cGUsdHJhbnNpdGlvbjpiZSxkaXJzOkFlfT1FO2lmKG9lPUUuZWw9aShFLnR5cGUsWCxrZSYma2UuaXMsa2UpLHBlJjg/YyhvZSxFLmNoaWxkcmVuKTpwZSYxNiYmVChFLmNoaWxkcmVuLG9lLG51bGwsSyxILGhjKEUsWCksY2UsYWUpLEFlJiZvcihFLG51bGwsSywiY3JlYXRlZCIpLGsob2UsRSxFLnNjb3BlSWQsY2UsSyksa2Upe2Zvcihjb25zdCBIZSBpbiBrZSlIZSE9PSJ2YWx1ZSImJiFJbyhIZSkmJnMob2UsSGUsbnVsbCxrZVtIZV0sWCxLKTsidmFsdWUiaW4ga2UmJnMob2UsInZhbHVlIixudWxsLGtlLnZhbHVlLFgpLChaPWtlLm9uVm5vZGVCZWZvcmVNb3VudCkmJmRuKFosSyxFKX1BZSYmb3IoRSxudWxsLEssImJlZm9yZU1vdW50Iik7Y29uc3QgemU9c3koSCxiZSk7emUmJmJlLmJlZm9yZUVudGVyKG9lKSxyKG9lLE8scSksKChaPWtlJiZrZS5vblZub2RlTW91bnRlZCl8fHplfHxBZSkmJlR0KCgpPT57WiYmZG4oWixLLEUpLHplJiZiZS5lbnRlcihvZSksQWUmJm9yKEUsbnVsbCxLLCJtb3VudGVkIil9LEgpfSxrPShFLE8scSxLLEgpPT57aWYocSYmcChFLHEpLEspZm9yKGxldCBYPTA7WDxLLmxlbmd0aDtYKyspcChFLEtbWF0pO2lmKEgpe2xldCBYPUguc3ViVHJlZTtpZihPPT09WHx8VmEoWC50eXBlKSYmKFguc3NDb250ZW50PT09T3x8WC5zc0ZhbGxiYWNrPT09Tykpe2NvbnN0IGNlPUgudm5vZGU7ayhFLGNlLGNlLnNjb3BlSWQsY2Uuc2xvdFNjb3BlSWRzLEgucGFyZW50KX19fSxUPShFLE8scSxLLEgsWCxjZSxhZSxvZT0wKT0+e2ZvcihsZXQgWj1vZTtaPEUubGVuZ3RoO1orKyl7Y29uc3Qga2U9RVtaXT1hZT9DcihFW1pdKTpibihFW1pdKTt5KG51bGwsa2UsTyxxLEssSCxYLGNlLGFlKX19LEM9KEUsTyxxLEssSCxYLGNlKT0+e2NvbnN0IGFlPU8uZWw9RS5lbDtsZXR7cGF0Y2hGbGFnOm9lLGR5bmFtaWNDaGlsZHJlbjpaLGRpcnM6a2V9PU87b2V8PUUucGF0Y2hGbGFnJjE2O2NvbnN0IHBlPUUucHJvcHN8fFllLGJlPU8ucHJvcHN8fFllO2xldCBBZTtpZihxJiZibyhxLCExKSwoQWU9YmUub25Wbm9kZUJlZm9yZVVwZGF0ZSkmJmRuKEFlLHEsTyxFKSxrZSYmb3IoTyxFLHEsImJlZm9yZVVwZGF0ZSIpLHEmJmJvKHEsITApLChwZS5pbm5lckhUTUwmJmJlLmlubmVySFRNTD09bnVsbHx8cGUudGV4dENvbnRlbnQmJmJlLnRleHRDb250ZW50PT1udWxsKSYmYyhhZSwiIiksWj9QKEUuZHluYW1pY0NoaWxkcmVuLFosYWUscSxLLGhjKE8sSCksWCk6Y2V8fEIoRSxPLGFlLG51bGwscSxLLGhjKE8sSCksWCwhMSksb2U+MCl7aWYob2UmMTYpRihhZSxwZSxiZSxxLEgpO2Vsc2UgaWYob2UmMiYmcGUuY2xhc3MhPT1iZS5jbGFzcyYmcyhhZSwiY2xhc3MiLG51bGwsYmUuY2xhc3MsSCksb2UmNCYmcyhhZSwic3R5bGUiLHBlLnN0eWxlLGJlLnN0eWxlLEgpLG9lJjgpe2NvbnN0IHplPU8uZHluYW1pY1Byb3BzO2ZvcihsZXQgSGU9MDtIZTx6ZS5sZW5ndGg7SGUrKyl7Y29uc3QgV2U9emVbSGVdLEplPXBlW1dlXSxwdD1iZVtXZV07KHB0IT09SmV8fFdlPT09InZhbHVlIikmJnMoYWUsV2UsSmUscHQsSCxxKX19b2UmMSYmRS5jaGlsZHJlbiE9PU8uY2hpbGRyZW4mJmMoYWUsTy5jaGlsZHJlbil9ZWxzZSFjZSYmWj09bnVsbCYmRihhZSxwZSxiZSxxLEgpOygoQWU9YmUub25Wbm9kZVVwZGF0ZWQpfHxrZSkmJlR0KCgpPT57QWUmJmRuKEFlLHEsTyxFKSxrZSYmb3IoTyxFLHEsInVwZGF0ZWQiKX0sSyl9LFA9KEUsTyxxLEssSCxYLGNlKT0+e2ZvcihsZXQgYWU9MDthZTxPLmxlbmd0aDthZSsrKXtjb25zdCBvZT1FW2FlXSxaPU9bYWVdLGtlPW9lLmVsJiYob2UudHlwZT09PUdlfHwhcW4ob2UsWil8fG9lLnNoYXBlRmxhZyYxOTgpP2Yob2UuZWwpOnE7eShvZSxaLGtlLG51bGwsSyxILFgsY2UsITApfX0sRj0oRSxPLHEsSyxIKT0+e2lmKE8hPT1xKXtpZihPIT09WWUpZm9yKGNvbnN0IFggaW4gTykhSW8oWCkmJiEoWCBpbiBxKSYmcyhFLFgsT1tYXSxudWxsLEgsSyk7Zm9yKGNvbnN0IFggaW4gcSl7aWYoSW8oWCkpY29udGludWU7Y29uc3QgY2U9cVtYXSxhZT1PW1hdO2NlIT09YWUmJlghPT0idmFsdWUiJiZzKEUsWCxhZSxjZSxILEspfSJ2YWx1ZSJpbiBxJiZzKEUsInZhbHVlIixPLnZhbHVlLHEudmFsdWUsSCl9fSxEPShFLE8scSxLLEgsWCxjZSxhZSxvZSk9Pntjb25zdCBaPU8uZWw9RT9FLmVsOmEoIiIpLGtlPU8uYW5jaG9yPUU/RS5hbmNob3I6YSgiIik7bGV0e3BhdGNoRmxhZzpwZSxkeW5hbWljQ2hpbGRyZW46YmUsc2xvdFNjb3BlSWRzOkFlfT1PO0FlJiYoYWU9YWU/YWUuY29uY2F0KEFlKTpBZSksRT09bnVsbD8ocihaLHEsSykscihrZSxxLEspLFQoTy5jaGlsZHJlbnx8W10scSxrZSxILFgsY2UsYWUsb2UpKTpwZT4wJiZwZSY2NCYmYmUmJkUuZHluYW1pY0NoaWxkcmVuJiZFLmR5bmFtaWNDaGlsZHJlbi5sZW5ndGg9PT1iZS5sZW5ndGg/KFAoRS5keW5hbWljQ2hpbGRyZW4sYmUscSxILFgsY2UsYWUpLChPLmtleSE9bnVsbHx8SCYmTz09PUguc3ViVHJlZSkmJlRmKEUsTywhMCkpOkIoRSxPLHEsa2UsSCxYLGNlLGFlLG9lKX0sVz0oRSxPLHEsSyxILFgsY2UsYWUsb2UpPT57Ty5zbG90U2NvcGVJZHM9YWUsRT09bnVsbD9PLnNoYXBlRmxhZyY1MTI/SC5jdHguYWN0aXZhdGUoTyxxLEssY2Usb2UpOkwoTyxxLEssSCxYLGNlLG9lKTpqKEUsTyxvZSl9LEw9KEUsTyxxLEssSCxYLGNlKT0+e2NvbnN0IGFlPUUuY29tcG9uZW50PUZ4KEUsSyxIKTtpZihNaShFKSYmKGFlLmN0eC5yZW5kZXJlcj1sZSksengoYWUsITEsY2UpLGFlLmFzeW5jRGVwKXtpZihIJiZILnJlZ2lzdGVyRGVwKGFlLEksY2UpLCFFLmVsKXtjb25zdCBvZT1hZS5zdWJUcmVlPXJlKF90KTt3KG51bGwsb2UsTyxxKSxFLnBsYWNlaG9sZGVyPW9lLmVsfX1lbHNlIEkoYWUsRSxPLHEsSCxYLGNlKX0saj0oRSxPLHEpPT57Y29uc3QgSz1PLmNvbXBvbmVudD1FLmNvbXBvbmVudDtpZih3eChFLE8scSkpaWYoSy5hc3luY0RlcCYmIUsuYXN5bmNSZXNvbHZlZCl7VihLLE8scSk7cmV0dXJufWVsc2UgSy5uZXh0PU8sSy51cGRhdGUoKTtlbHNlIE8uZWw9RS5lbCxLLnZub2RlPU99LEk9KEUsTyxxLEssSCxYLGNlKT0+e2NvbnN0IGFlPSgpPT57aWYoRS5pc01vdW50ZWQpe2xldHtuZXh0OnBlLGJ1OmJlLHU6QWUscGFyZW50OnplLHZub2RlOkhlfT1FO3tjb25zdCBXdD1peShFKTtpZihXdCl7cGUmJihwZS5lbD1IZS5lbCxWKEUscGUsY2UpKSxXdC5hc3luY0RlcC50aGVuKCgpPT57VHQoKCk9PntFLmlzVW5tb3VudGVkfHxaKCl9LEgpfSk7cmV0dXJufX1sZXQgV2U9cGUsSmU7Ym8oRSwhMSkscGU/KHBlLmVsPUhlLmVsLFYoRSxwZSxjZSkpOnBlPUhlLGJlJiZyaShiZSksKEplPXBlLnByb3BzJiZwZS5wcm9wcy5vblZub2RlQmVmb3JlVXBkYXRlKSYmZG4oSmUsemUscGUsSGUpLGJvKEUsITApO2NvbnN0IHB0PW1jKEUpLGFuPUUuc3ViVHJlZTtFLnN1YlRyZWU9cHQseShhbixwdCxmKGFuLmVsKSx6KGFuKSxFLEgsWCkscGUuZWw9cHQuZWwsV2U9PT1udWxsJiZrbChFLHB0LmVsKSxBZSYmVHQoQWUsSCksKEplPXBlLnByb3BzJiZwZS5wcm9wcy5vblZub2RlVXBkYXRlZCkmJlR0KCgpPT5kbihKZSx6ZSxwZSxIZSksSCl9ZWxzZXtsZXQgcGU7Y29uc3R7ZWw6YmUscHJvcHM6QWV9PU8se2JtOnplLG06SGUscGFyZW50OldlLHJvb3Q6SmUsdHlwZTpwdH09RSxhbj1JcihPKTtpZihibyhFLCExKSx6ZSYmcmkoemUpLCFhbiYmKHBlPUFlJiZBZS5vblZub2RlQmVmb3JlTW91bnQpJiZkbihwZSxXZSxPKSxibyhFLCEwKSxiZSYmdGUpe2NvbnN0IFd0PSgpPT57RS5zdWJUcmVlPW1jKEUpLHRlKGJlLEUuc3ViVHJlZSxFLEgsbnVsbCl9O2FuJiZwdC5fX2FzeW5jSHlkcmF0ZT9wdC5fX2FzeW5jSHlkcmF0ZShiZSxFLFd0KTpXdCgpfWVsc2V7SmUuY2UmJkplLmNlLl9oYXNTaGFkb3dSb290KCkmJkplLmNlLl9pbmplY3RDaGlsZFN0eWxlKHB0LEUucGFyZW50P0UucGFyZW50LnR5cGU6dm9pZCAwKTtjb25zdCBXdD1FLnN1YlRyZWU9bWMoRSk7eShudWxsLFd0LHEsSyxFLEgsWCksTy5lbD1XdC5lbH1pZihIZSYmVHQoSGUsSCksIWFuJiYocGU9QWUmJkFlLm9uVm5vZGVNb3VudGVkKSl7Y29uc3QgV3Q9TztUdCgoKT0+ZG4ocGUsV2UsV3QpLEgpfShPLnNoYXBlRmxhZyYyNTZ8fFdlJiZJcihXZS52bm9kZSkmJldlLnZub2RlLnNoYXBlRmxhZyYyNTYpJiZFLmEmJlR0KEUuYSxIKSxFLmlzTW91bnRlZD0hMCxPPXE9Sz1udWxsfX07RS5zY29wZS5vbigpO2NvbnN0IG9lPUUuZWZmZWN0PW5ldyBvZyhhZSk7RS5zY29wZS5vZmYoKTtjb25zdCBaPUUudXBkYXRlPW9lLnJ1bi5iaW5kKG9lKSxrZT1FLmpvYj1vZS5ydW5JZkRpcnR5LmJpbmQob2UpO2tlLmk9RSxrZS5pZD1FLnVpZCxvZS5zY2hlZHVsZXI9KCk9PnlmKGtlKSxibyhFLCEwKSxaKCl9LFY9KEUsTyxxKT0+e08uY29tcG9uZW50PUU7Y29uc3QgSz1FLnZub2RlLnByb3BzO0Uudm5vZGU9TyxFLm5leHQ9bnVsbCx4eChFLE8ucHJvcHMsSyxxKSxUeChFLE8uY2hpbGRyZW4scSksRHIoKSxWZChFKSxMcigpfSxCPShFLE8scSxLLEgsWCxjZSxhZSxvZT0hMSk9Pntjb25zdCBaPUUmJkUuY2hpbGRyZW4sa2U9RT9FLnNoYXBlRmxhZzowLHBlPU8uY2hpbGRyZW4se3BhdGNoRmxhZzpiZSxzaGFwZUZsYWc6QWV9PU87aWYoYmU+MCl7aWYoYmUmMTI4KXtuZShaLHBlLHEsSyxILFgsY2UsYWUsb2UpO3JldHVybn1lbHNlIGlmKGJlJjI1Nil7aWUoWixwZSxxLEssSCxYLGNlLGFlLG9lKTtyZXR1cm59fUFlJjg/KGtlJjE2JiZlZShaLEgsWCkscGUhPT1aJiZjKHEscGUpKTprZSYxNj9BZSYxNj9uZShaLHBlLHEsSyxILFgsY2UsYWUsb2UpOmVlKFosSCxYLCEwKTooa2UmOCYmYyhxLCIiKSxBZSYxNiYmVChwZSxxLEssSCxYLGNlLGFlLG9lKSl9LGllPShFLE8scSxLLEgsWCxjZSxhZSxvZSk9PntFPUV8fHVzLE89T3x8dXM7Y29uc3QgWj1FLmxlbmd0aCxrZT1PLmxlbmd0aCxwZT1NYXRoLm1pbihaLGtlKTtsZXQgYmU7Zm9yKGJlPTA7YmU8cGU7YmUrKyl7Y29uc3QgQWU9T1tiZV09b2U/Q3IoT1tiZV0pOmJuKE9bYmVdKTt5KEVbYmVdLEFlLHEsbnVsbCxILFgsY2UsYWUsb2UpfVo+a2U/ZWUoRSxILFgsITAsITEscGUpOlQoTyxxLEssSCxYLGNlLGFlLG9lLHBlKX0sbmU9KEUsTyxxLEssSCxYLGNlLGFlLG9lKT0+e2xldCBaPTA7Y29uc3Qga2U9Ty5sZW5ndGg7bGV0IHBlPUUubGVuZ3RoLTEsYmU9a2UtMTtmb3IoO1o8PXBlJiZaPD1iZTspe2NvbnN0IEFlPUVbWl0semU9T1taXT1vZT9DcihPW1pdKTpibihPW1pdKTtpZihxbihBZSx6ZSkpeShBZSx6ZSxxLG51bGwsSCxYLGNlLGFlLG9lKTtlbHNlIGJyZWFrO1orK31mb3IoO1o8PXBlJiZaPD1iZTspe2NvbnN0IEFlPUVbcGVdLHplPU9bYmVdPW9lP0NyKE9bYmVdKTpibihPW2JlXSk7aWYocW4oQWUsemUpKXkoQWUsemUscSxudWxsLEgsWCxjZSxhZSxvZSk7ZWxzZSBicmVhaztwZS0tLGJlLS19aWYoWj5wZSl7aWYoWjw9YmUpe2NvbnN0IEFlPWJlKzEsemU9QWU8a2U/T1tBZV0uZWw6Sztmb3IoO1o8PWJlOyl5KG51bGwsT1taXT1vZT9DcihPW1pdKTpibihPW1pdKSxxLHplLEgsWCxjZSxhZSxvZSksWisrfX1lbHNlIGlmKFo+YmUpZm9yKDtaPD1wZTspTmUoRVtaXSxILFgsITApLForKztlbHNle2NvbnN0IEFlPVosemU9WixIZT1uZXcgTWFwO2ZvcihaPXplO1o8PWJlO1orKyl7Y29uc3QgRHQ9T1taXT1vZT9DcihPW1pdKTpibihPW1pdKTtEdC5rZXkhPW51bGwmJkhlLnNldChEdC5rZXksWil9bGV0IFdlLEplPTA7Y29uc3QgcHQ9YmUtemUrMTtsZXQgYW49ITEsV3Q9MDtjb25zdCBncj1uZXcgQXJyYXkocHQpO2ZvcihaPTA7WjxwdDtaKyspZ3JbWl09MDtmb3IoWj1BZTtaPD1wZTtaKyspe2NvbnN0IER0PUVbWl07aWYoSmU+PXB0KXtOZShEdCxILFgsITApO2NvbnRpbnVlfWxldCBYdDtpZihEdC5rZXkhPW51bGwpWHQ9SGUuZ2V0KER0LmtleSk7ZWxzZSBmb3IoV2U9emU7V2U8PWJlO1dlKyspaWYoZ3JbV2UtemVdPT09MCYmcW4oRHQsT1tXZV0pKXtYdD1XZTticmVha31YdD09PXZvaWQgMD9OZShEdCxILFgsITApOihncltYdC16ZV09WisxLFh0Pj1XdD9XdD1YdDphbj0hMCx5KER0LE9bWHRdLHEsbnVsbCxILFgsY2UsYWUsb2UpLEplKyspfWNvbnN0IE1zPWFuP094KGdyKTp1cztmb3IoV2U9TXMubGVuZ3RoLTEsWj1wdC0xO1o+PTA7Wi0tKXtjb25zdCBEdD16ZStaLFh0PU9bRHRdLHluPU9bRHQrMV0seXI9RHQrMTxrZT95bi5lbHx8YXkoeW4pOks7Z3JbWl09PT0wP3kobnVsbCxYdCxxLHlyLEgsWCxjZSxhZSxvZSk6YW4mJihXZTwwfHxaIT09TXNbV2VdP1ZlKFh0LHEseXIsMik6V2UtLSl9fX0sVmU9KEUsTyxxLEssSD1udWxsKT0+e2NvbnN0e2VsOlgsdHlwZTpjZSx0cmFuc2l0aW9uOmFlLGNoaWxkcmVuOm9lLHNoYXBlRmxhZzpafT1FO2lmKFomNil7VmUoRS5jb21wb25lbnQuc3ViVHJlZSxPLHEsSyk7cmV0dXJufWlmKFomMTI4KXtFLnN1c3BlbnNlLm1vdmUoTyxxLEspO3JldHVybn1pZihaJjY0KXtjZS5tb3ZlKEUsTyxxLGxlKTtyZXR1cm59aWYoY2U9PT1HZSl7cihYLE8scSk7Zm9yKGxldCBwZT0wO3BlPG9lLmxlbmd0aDtwZSsrKVZlKG9lW3BlXSxPLHEsSyk7cihFLmFuY2hvcixPLHEpO3JldHVybn1pZihjZT09PWFpKXtoKEUsTyxxKTtyZXR1cm59aWYoSyE9PTImJlomMSYmYWUpaWYoSz09PTApYWUuYmVmb3JlRW50ZXIoWCkscihYLE8scSksVHQoKCk9PmFlLmVudGVyKFgpLEgpO2Vsc2V7Y29uc3R7bGVhdmU6cGUsZGVsYXlMZWF2ZTpiZSxhZnRlckxlYXZlOkFlfT1hZSx6ZT0oKT0+e0UuY3R4LmlzVW5tb3VudGVkP28oWCk6cihYLE8scSl9LEhlPSgpPT57WC5faXNMZWF2aW5nJiZYW3NyXSghMCkscGUoWCwoKT0+e3plKCksQWUmJkFlKCl9KX07YmU/YmUoWCx6ZSxIZSk6SGUoKX1lbHNlIHIoWCxPLHEpfSxOZT0oRSxPLHEsSz0hMSxIPSExKT0+e2NvbnN0e3R5cGU6WCxwcm9wczpjZSxyZWY6YWUsY2hpbGRyZW46b2UsZHluYW1pY0NoaWxkcmVuOlosc2hhcGVGbGFnOmtlLHBhdGNoRmxhZzpwZSxkaXJzOmJlLGNhY2hlSW5kZXg6QWUsbWVtbzp6ZX09RTtpZihwZT09PS0yJiYoSD0hMSksYWUhPW51bGwmJihEcigpLHBzKGFlLG51bGwscSxFLCEwKSxMcigpKSxBZSE9bnVsbCYmKE8ucmVuZGVyQ2FjaGVbQWVdPXZvaWQgMCksa2UmMjU2KXtPLmN0eC5kZWFjdGl2YXRlKEUpO3JldHVybn1jb25zdCBIZT1rZSYxJiZiZSxXZT0hSXIoRSk7bGV0IEplO2lmKFdlJiYoSmU9Y2UmJmNlLm9uVm5vZGVCZWZvcmVVbm1vdW50KSYmZG4oSmUsTyxFKSxrZSY2KUllKEUuY29tcG9uZW50LHEsSyk7ZWxzZXtpZihrZSYxMjgpe0Uuc3VzcGVuc2UudW5tb3VudChxLEspO3JldHVybn1IZSYmb3IoRSxudWxsLE8sImJlZm9yZVVubW91bnQiKSxrZSY2ND9FLnR5cGUucmVtb3ZlKEUsTyxxLGxlLEspOlomJiFaLmhhc09uY2UmJihYIT09R2V8fHBlPjAmJnBlJjY0KT9lZShaLE8scSwhMSwhMCk6KFg9PT1HZSYmcGUmMzg0fHwhSCYma2UmMTYpJiZlZShvZSxPLHEpLEsmJmV0KEUpfWNvbnN0IHB0PXplIT1udWxsJiZBZT09bnVsbDsoV2UmJihKZT1jZSYmY2Uub25Wbm9kZVVubW91bnRlZCl8fEhlfHxwdCkmJlR0KCgpPT57SmUmJmRuKEplLE8sRSksSGUmJm9yKEUsbnVsbCxPLCJ1bm1vdW50ZWQiKSxwdCYmKEUuZWw9bnVsbCl9LHEpfSxldD1FPT57Y29uc3R7dHlwZTpPLGVsOnEsYW5jaG9yOkssdHJhbnNpdGlvbjpIfT1FO2lmKE89PT1HZSl7dmUocSxLKTtyZXR1cm59aWYoTz09PWFpKXtiKEUpO3JldHVybn1jb25zdCBYPSgpPT57byhxKSxIJiYhSC5wZXJzaXN0ZWQmJkguYWZ0ZXJMZWF2ZSYmSC5hZnRlckxlYXZlKCl9O2lmKEUuc2hhcGVGbGFnJjEmJkgmJiFILnBlcnNpc3RlZCl7Y29uc3R7bGVhdmU6Y2UsZGVsYXlMZWF2ZTphZX09SCxvZT0oKT0+Y2UocSxYKTthZT9hZShFLmVsLFgsb2UpOm9lKCl9ZWxzZSBYKCl9LHZlPShFLE8pPT57bGV0IHE7Zm9yKDtFIT09TzspcT1kKEUpLG8oRSksRT1xO28oTyl9LEllPShFLE8scSk9Pntjb25zdHtidW06SyxzY29wZTpILGpvYjpYLHN1YlRyZWU6Y2UsdW06YWUsbTpvZSxhOlp9PUU7amEob2UpLGphKFopLEsmJnJpKEspLEguc3RvcCgpLFgmJihYLmZsYWdzfD04LE5lKGNlLEUsTyxxKSksYWUmJlR0KGFlLE8pLFR0KCgpPT57RS5pc1VubW91bnRlZD0hMH0sTyl9LGVlPShFLE8scSxLPSExLEg9ITEsWD0wKT0+e2ZvcihsZXQgY2U9WDtjZTxFLmxlbmd0aDtjZSsrKU5lKEVbY2VdLE8scSxLLEgpfSx6PUU9PntpZihFLnNoYXBlRmxhZyY2KXJldHVybiB6KEUuY29tcG9uZW50LnN1YlRyZWUpO2lmKEUuc2hhcGVGbGFnJjEyOClyZXR1cm4gRS5zdXNwZW5zZS5uZXh0KCk7Y29uc3QgTz1kKEUuYW5jaG9yfHxFLmVsKSxxPU8mJk9bT2ddO3JldHVybiBxP2QocSk6T307bGV0IFk9ITE7Y29uc3QgSj0oRSxPLHEpPT57bGV0IEs7RT09bnVsbD9PLl92bm9kZSYmKE5lKE8uX3Zub2RlLG51bGwsbnVsbCwhMCksSz1PLl92bm9kZS5jb21wb25lbnQpOnkoTy5fdm5vZGV8fG51bGwsRSxPLG51bGwsbnVsbCxudWxsLHEpLE8uX3Zub2RlPUUsWXx8KFk9ITAsVmQoSyksQmEoKSxZPSExKX0sbGU9e3A6eSx1bTpOZSxtOlZlLHI6ZXQsbXQ6TCxtYzpULHBjOkIscGJjOlAsbjp6LG86ZX07bGV0IHdlLHRlO3JldHVybiB0JiYoW3dlLHRlXT10KGxlKSkse3JlbmRlcjpKLGh5ZHJhdGU6d2UsY3JlYXRlQXBwOnB4KEosd2UpfX1mdW5jdGlvbiBoYyh7dHlwZTplLHByb3BzOnR9LG4pe3JldHVybiBuPT09InN2ZyImJmU9PT0iZm9yZWlnbk9iamVjdCJ8fG49PT0ibWF0aG1sIiYmZT09PSJhbm5vdGF0aW9uLXhtbCImJnQmJnQuZW5jb2RpbmcmJnQuZW5jb2RpbmcuaW5jbHVkZXMoImh0bWwiKT92b2lkIDA6bn1mdW5jdGlvbiBibyh7ZWZmZWN0OmUsam9iOnR9LG4pe24/KGUuZmxhZ3N8PTMyLHQuZmxhZ3N8PTQpOihlLmZsYWdzJj0tMzMsdC5mbGFncyY9LTUpfWZ1bmN0aW9uIHN5KGUsdCl7cmV0dXJuKCFlfHxlJiYhZS5wZW5kaW5nQnJhbmNoKSYmdCYmIXQucGVyc2lzdGVkfWZ1bmN0aW9uIFRmKGUsdCxuPSExKXtjb25zdCByPWUuY2hpbGRyZW4sbz10LmNoaWxkcmVuO2lmKFNlKHIpJiZTZShvKSlmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKyl7Y29uc3QgaT1yW3NdO2xldCBhPW9bc107YS5zaGFwZUZsYWcmMSYmIWEuZHluYW1pY0NoaWxkcmVuJiYoKGEucGF0Y2hGbGFnPD0wfHxhLnBhdGNoRmxhZz09PTMyKSYmKGE9b1tzXT1DcihvW3NdKSxhLmVsPWkuZWwpLCFuJiZhLnBhdGNoRmxhZyE9PS0yJiZUZihpLGEpKSxhLnR5cGU9PT1EbyYmKGEucGF0Y2hGbGFnPT09LTEmJihhPW9bc109Q3IoYSkpLGEuZWw9aS5lbCksYS50eXBlPT09X3QmJiFhLmVsJiYoYS5lbD1pLmVsKX19ZnVuY3Rpb24gT3goZSl7Y29uc3QgdD1lLnNsaWNlKCksbj1bMF07bGV0IHIsbyxzLGksYTtjb25zdCBsPWUubGVuZ3RoO2ZvcihyPTA7cjxsO3IrKyl7Y29uc3QgdT1lW3JdO2lmKHUhPT0wKXtpZihvPW5bbi5sZW5ndGgtMV0sZVtvXTx1KXt0W3JdPW8sbi5wdXNoKHIpO2NvbnRpbnVlfWZvcihzPTAsaT1uLmxlbmd0aC0xO3M8aTspYT1zK2k+PjEsZVtuW2FdXTx1P3M9YSsxOmk9YTt1PGVbbltzXV0mJihzPjAmJih0W3JdPW5bcy0xXSksbltzXT1yKX19Zm9yKHM9bi5sZW5ndGgsaT1uW3MtMV07cy0tID4wOyluW3NdPWksaT10W2ldO3JldHVybiBufWZ1bmN0aW9uIGl5KGUpe2NvbnN0IHQ9ZS5zdWJUcmVlLmNvbXBvbmVudDtpZih0KXJldHVybiB0LmFzeW5jRGVwJiYhdC5hc3luY1Jlc29sdmVkP3Q6aXkodCl9ZnVuY3Rpb24gamEoZSl7aWYoZSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLmZsYWdzfD04fWZ1bmN0aW9uIGF5KGUpe2lmKGUucGxhY2Vob2xkZXIpcmV0dXJuIGUucGxhY2Vob2xkZXI7Y29uc3QgdD1lLmNvbXBvbmVudDtyZXR1cm4gdD9heSh0LnN1YlRyZWUpOm51bGx9Y29uc3QgVmE9ZT0+ZS5fX2lzU3VzcGVuc2U7bGV0IGF1PTA7Y29uc3QgUHg9e25hbWU6IlN1c3BlbnNlIixfX2lzU3VzcGVuc2U6ITAscHJvY2VzcyhlLHQsbixyLG8scyxpLGEsbCx1KXtpZihlPT1udWxsKUl4KHQsbixyLG8scyxpLGEsbCx1KTtlbHNle2lmKHMmJnMuZGVwcz4wJiYhZS5zdXNwZW5zZS5pc0luRmFsbGJhY2spe3Quc3VzcGVuc2U9ZS5zdXNwZW5zZSx0LnN1c3BlbnNlLnZub2RlPXQsdC5lbD1lLmVsO3JldHVybn1SeChlLHQsbixyLG8saSxhLGwsdSl9fSxoeWRyYXRlOk54LG5vcm1hbGl6ZTpEeH0sQ2Y9UHg7ZnVuY3Rpb24gd2koZSx0KXtjb25zdCBuPWUucHJvcHMmJmUucHJvcHNbdF07Q2UobikmJm4oKX1mdW5jdGlvbiBJeChlLHQsbixyLG8scyxpLGEsbCl7Y29uc3R7cDp1LG86e2NyZWF0ZUVsZW1lbnQ6Y319PWwsZj1jKCJkaXYiKSxkPWUuc3VzcGVuc2U9bHkoZSxvLHIsdCxmLG4scyxpLGEsbCk7dShudWxsLGQucGVuZGluZ0JyYW5jaD1lLnNzQ29udGVudCxmLG51bGwscixkLHMsaSksZC5kZXBzPjA/KHdpKGUsIm9uUGVuZGluZyIpLHdpKGUsIm9uRmFsbGJhY2siKSx1KG51bGwsZS5zc0ZhbGxiYWNrLHQsbixyLG51bGwscyxpKSxtcyhkLGUuc3NGYWxsYmFjaykpOmQucmVzb2x2ZSghMSwhMCl9ZnVuY3Rpb24gUngoZSx0LG4scixvLHMsaSxhLHtwOmwsdW06dSxvOntjcmVhdGVFbGVtZW50OmN9fSl7Y29uc3QgZj10LnN1c3BlbnNlPWUuc3VzcGVuc2U7Zi52bm9kZT10LHQuZWw9ZS5lbDtjb25zdCBkPXQuc3NDb250ZW50LHA9dC5zc0ZhbGxiYWNrLHthY3RpdmVCcmFuY2g6bSxwZW5kaW5nQnJhbmNoOnksaXNJbkZhbGxiYWNrOl8saXNIeWRyYXRpbmc6d309ZjtpZih5KWYucGVuZGluZ0JyYW5jaD1kLHFuKHksZCk/KGwoeSxkLGYuaGlkZGVuQ29udGFpbmVyLG51bGwsbyxmLHMsaSxhKSxmLmRlcHM8PTA/Zi5yZXNvbHZlKCk6XyYmKHd8fChsKG0scCxuLHIsbyxudWxsLHMsaSxhKSxtcyhmLHApKSkpOihmLnBlbmRpbmdJZD1hdSsrLHc/KGYuaXNIeWRyYXRpbmc9ITEsZi5hY3RpdmVCcmFuY2g9eSk6dSh5LG8sZiksZi5kZXBzPTAsZi5lZmZlY3RzLmxlbmd0aD0wLGYuaGlkZGVuQ29udGFpbmVyPWMoImRpdiIpLF8/KGwobnVsbCxkLGYuaGlkZGVuQ29udGFpbmVyLG51bGwsbyxmLHMsaSxhKSxmLmRlcHM8PTA/Zi5yZXNvbHZlKCk6KGwobSxwLG4scixvLG51bGwscyxpLGEpLG1zKGYscCkpKTptJiZxbihtLGQpPyhsKG0sZCxuLHIsbyxmLHMsaSxhKSxmLnJlc29sdmUoITApKToobChudWxsLGQsZi5oaWRkZW5Db250YWluZXIsbnVsbCxvLGYscyxpLGEpLGYuZGVwczw9MCYmZi5yZXNvbHZlKCkpKTtlbHNlIGlmKG0mJnFuKG0sZCkpbChtLGQsbixyLG8sZixzLGksYSksbXMoZixkKTtlbHNlIGlmKHdpKHQsIm9uUGVuZGluZyIpLGYucGVuZGluZ0JyYW5jaD1kLGQuc2hhcGVGbGFnJjUxMj9mLnBlbmRpbmdJZD1kLmNvbXBvbmVudC5zdXNwZW5zZUlkOmYucGVuZGluZ0lkPWF1KyssbChudWxsLGQsZi5oaWRkZW5Db250YWluZXIsbnVsbCxvLGYscyxpLGEpLGYuZGVwczw9MClmLnJlc29sdmUoKTtlbHNle2NvbnN0e3RpbWVvdXQ6dixwZW5kaW5nSWQ6aH09Zjt2PjA/c2V0VGltZW91dCgoKT0+e2YucGVuZGluZ0lkPT09aCYmZi5mYWxsYmFjayhwKX0sdik6dj09PTAmJmYuZmFsbGJhY2socCl9fWZ1bmN0aW9uIGx5KGUsdCxuLHIsbyxzLGksYSxsLHUsYz0hMSl7Y29uc3R7cDpmLG06ZCx1bTpwLG46bSxvOntwYXJlbnROb2RlOnkscmVtb3ZlOl99fT11O2xldCB3O2NvbnN0IHY9THgoZSk7diYmdCYmdC5wZW5kaW5nQnJhbmNoJiYodz10LnBlbmRpbmdJZCx0LmRlcHMrKyk7Y29uc3QgaD1lLnByb3BzP1poKGUucHJvcHMudGltZW91dCk6dm9pZCAwLGI9cyx4PXt2bm9kZTplLHBhcmVudDp0LHBhcmVudENvbXBvbmVudDpuLG5hbWVzcGFjZTppLGNvbnRhaW5lcjpyLGhpZGRlbkNvbnRhaW5lcjpvLGRlcHM6MCxwZW5kaW5nSWQ6YXUrKyx0aW1lb3V0OnR5cGVvZiBoPT0ibnVtYmVyIj9oOi0xLGFjdGl2ZUJyYW5jaDpudWxsLGlzRmFsbGJhY2tNb3VudFBlbmRpbmc6ITEscGVuZGluZ0JyYW5jaDpudWxsLGlzSW5GYWxsYmFjazohYyxpc0h5ZHJhdGluZzpjLGlzVW5tb3VudGVkOiExLGVmZmVjdHM6W10scmVzb2x2ZShTPSExLGs9ITEpe2NvbnN0e3Zub2RlOlQsYWN0aXZlQnJhbmNoOkMscGVuZGluZ0JyYW5jaDpQLHBlbmRpbmdJZDpGLGVmZmVjdHM6RCxwYXJlbnRDb21wb25lbnQ6Vyxjb250YWluZXI6TCxpc0luRmFsbGJhY2s6an09eDtsZXQgST0hMTt4LmlzSHlkcmF0aW5nP3guaXNIeWRyYXRpbmc9ITE6U3x8KEk9QyYmUC50cmFuc2l0aW9uJiZQLnRyYW5zaXRpb24ubW9kZT09PSJvdXQtaW4iLEkmJihDLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZT0oKT0+e0Y9PT14LnBlbmRpbmdJZCYmKGQoUCxMLHM9PT1iP20oQyk6cywwKSxnaShEKSxqJiZULnNzRmFsbGJhY2smJihULnNzRmFsbGJhY2suZWw9bnVsbCkpfSksQyYmIXguaXNGYWxsYmFja01vdW50UGVuZGluZyYmKHkoQy5lbCk9PT1MJiYocz1tKEMpKSxwKEMsVyx4LCEwKSwhSSYmaiYmVC5zc0ZhbGxiYWNrJiZUdCgoKT0+VC5zc0ZhbGxiYWNrLmVsPW51bGwseCkpLEl8fGQoUCxMLHMsMCkpLHguaXNGYWxsYmFja01vdW50UGVuZGluZz0hMSxtcyh4LFApLHgucGVuZGluZ0JyYW5jaD1udWxsLHguaXNJbkZhbGxiYWNrPSExO2xldCBWPXgucGFyZW50LEI9ITE7Zm9yKDtWOyl7aWYoVi5wZW5kaW5nQnJhbmNoKXtWLmVmZmVjdHMucHVzaCguLi5EKSxCPSEwO2JyZWFrfVY9Vi5wYXJlbnR9IUImJiFJJiZnaShEKSx4LmVmZmVjdHM9W10sdiYmdCYmdC5wZW5kaW5nQnJhbmNoJiZ3PT09dC5wZW5kaW5nSWQmJih0LmRlcHMtLSx0LmRlcHM9PT0wJiYhayYmdC5yZXNvbHZlKCkpLHdpKFQsIm9uUmVzb2x2ZSIpfSxmYWxsYmFjayhTKXtpZigheC5wZW5kaW5nQnJhbmNoKXJldHVybjtjb25zdHt2bm9kZTprLGFjdGl2ZUJyYW5jaDpULHBhcmVudENvbXBvbmVudDpDLGNvbnRhaW5lcjpQLG5hbWVzcGFjZTpGfT14O3dpKGssIm9uRmFsbGJhY2siKTtjb25zdCBEPW0oVCksVz0oKT0+e3guaXNGYWxsYmFja01vdW50UGVuZGluZz0hMSx4LmlzSW5GYWxsYmFjayYmKGYobnVsbCxTLFAsRCxDLG51bGwsRixhLGwpLG1zKHgsUykpfSxMPVMudHJhbnNpdGlvbiYmUy50cmFuc2l0aW9uLm1vZGU9PT0ib3V0LWluIjtMJiYoeC5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nPSEwLFQudHJhbnNpdGlvbi5hZnRlckxlYXZlPVcpLHguaXNJbkZhbGxiYWNrPSEwLHAoVCxDLG51bGwsITApLEx8fFcoKX0sbW92ZShTLGssVCl7eC5hY3RpdmVCcmFuY2gmJmQoeC5hY3RpdmVCcmFuY2gsUyxrLFQpLHguY29udGFpbmVyPVN9LG5leHQoKXtyZXR1cm4geC5hY3RpdmVCcmFuY2gmJm0oeC5hY3RpdmVCcmFuY2gpfSxyZWdpc3RlckRlcChTLGssVCl7Y29uc3QgQz0hIXgucGVuZGluZ0JyYW5jaDtDJiZ4LmRlcHMrKztjb25zdCBQPVMudm5vZGUuZWw7Uy5hc3luY0RlcC5jYXRjaChGPT57TnMoRixTLDApfSkudGhlbihGPT57aWYoUy5pc1VubW91bnRlZHx8eC5pc1VubW91bnRlZHx8eC5wZW5kaW5nSWQhPT1TLnN1c3BlbnNlSWQpcmV0dXJuO19pKCksUy5hc3luY1Jlc29sdmVkPSEwO2NvbnN0e3Zub2RlOkR9PVM7bHUoUyxGLCExKSxQJiYoRC5lbD1QKTtjb25zdCBXPSFQJiZTLnN1YlRyZWUuZWw7ayhTLEQseShQfHxTLnN1YlRyZWUuZWwpLFA/bnVsbDptKFMuc3ViVHJlZSkseCxpLFQpLFcmJihELnBsYWNlaG9sZGVyPW51bGwsXyhXKSksa2woUyxELmVsKSxDJiYtLXguZGVwcz09PTAmJngucmVzb2x2ZSgpfSl9LHVubW91bnQoUyxrKXt4LmlzVW5tb3VudGVkPSEwLHguYWN0aXZlQnJhbmNoJiZwKHguYWN0aXZlQnJhbmNoLG4sUyxrKSx4LnBlbmRpbmdCcmFuY2gmJnAoeC5wZW5kaW5nQnJhbmNoLG4sUyxrKX19O3JldHVybiB4fWZ1bmN0aW9uIE54KGUsdCxuLHIsbyxzLGksYSxsKXtjb25zdCB1PXQuc3VzcGVuc2U9bHkodCxyLG4sZS5wYXJlbnROb2RlLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG51bGwsbyxzLGksYSwhMCksYz1sKGUsdS5wZW5kaW5nQnJhbmNoPXQuc3NDb250ZW50LG4sdSxzLGkpO3JldHVybiB1LmRlcHM9PT0wJiZ1LnJlc29sdmUoITEsITApLGN9ZnVuY3Rpb24gRHgoZSl7Y29uc3R7c2hhcGVGbGFnOnQsY2hpbGRyZW46bn09ZSxyPXQmMzI7ZS5zc0NvbnRlbnQ9b3Aocj9uLmRlZmF1bHQ6biksZS5zc0ZhbGxiYWNrPXI/b3Aobi5mYWxsYmFjayk6cmUoX3QpfWZ1bmN0aW9uIG9wKGUpe2xldCB0O2lmKENlKGUpKXtjb25zdCBuPSRvJiZlLl9jO24mJihlLl9kPSExLFIoKSksZT1lKCksbiYmKGUuX2Q9ITAsdD1ZdCx1eSgpKX1yZXR1cm4gU2UoZSkmJihlPXl4KGUpKSxlPWJuKGUpLHQmJiFlLmR5bmFtaWNDaGlsZHJlbiYmKGUuZHluYW1pY0NoaWxkcmVuPXQuZmlsdGVyKG49Pm4hPT1lKSksZX1mdW5jdGlvbiBjeShlLHQpe3QmJnQucGVuZGluZ0JyYW5jaD9TZShlKT90LmVmZmVjdHMucHVzaCguLi5lKTp0LmVmZmVjdHMucHVzaChlKTpnaShlKX1mdW5jdGlvbiBtcyhlLHQpe2UuYWN0aXZlQnJhbmNoPXQ7Y29uc3R7dm5vZGU6bixwYXJlbnRDb21wb25lbnQ6cn09ZTtsZXQgbz10LmVsO2Zvcig7IW8mJnQuY29tcG9uZW50Oyl0PXQuY29tcG9uZW50LnN1YlRyZWUsbz10LmVsO24uZWw9byxyJiZyLnN1YlRyZWU9PT1uJiYoci52bm9kZS5lbD1vLGtsKHIsbykpfWZ1bmN0aW9uIEx4KGUpe2NvbnN0IHQ9ZS5wcm9wcyYmZS5wcm9wcy5zdXNwZW5zaWJsZTtyZXR1cm4gdCE9bnVsbCYmdCE9PSExfWNvbnN0IEdlPVN5bWJvbC5mb3IoInYtZmd0IiksRG89U3ltYm9sLmZvcigidi10eHQiKSxfdD1TeW1ib2wuZm9yKCJ2LWNtdCIpLGFpPVN5bWJvbC5mb3IoInYtc3RjIiksbGk9W107bGV0IFl0PW51bGw7ZnVuY3Rpb24gUihlPSExKXtsaS5wdXNoKFl0PWU/bnVsbDpbXSl9ZnVuY3Rpb24gdXkoKXtsaS5wb3AoKSxZdD1saVtsaS5sZW5ndGgtMV18fG51bGx9bGV0ICRvPTE7ZnVuY3Rpb24gVWEoZSx0PSExKXskbys9ZSxlPDAmJll0JiZ0JiYoWXQuaGFzT25jZT0hMCl9ZnVuY3Rpb24gZnkoZSl7cmV0dXJuIGUuZHluYW1pY0NoaWxkcmVuPSRvPjA/WXR8fHVzOm51bGwsdXkoKSwkbz4wJiZZdCYmWXQucHVzaChlKSxlfWZ1bmN0aW9uIF9lKGUsdCxuLHIsbyxzKXtyZXR1cm4gZnkod3QoZSx0LG4scixvLHMsITApKX1mdW5jdGlvbiAkKGUsdCxuLHIsbyl7cmV0dXJuIGZ5KHJlKGUsdCxuLHIsbywhMCkpfWZ1bmN0aW9uIE1vKGUpe3JldHVybiBlP2UuX192X2lzVk5vZGU9PT0hMDohMX1mdW5jdGlvbiBxbihlLHQpe3JldHVybiBlLnR5cGU9PT10LnR5cGUmJmUua2V5PT09dC5rZXl9Y29uc3QgZHk9KHtrZXk6ZX0pPT5lPz9udWxsLEVhPSh7cmVmOmUscmVmX2tleTp0LHJlZl9mb3I6bn0pPT4odHlwZW9mIGU9PSJudW1iZXIiJiYoZT0iIitlKSxlIT1udWxsP2Z0KGUpfHwkZShlKXx8Q2UoZSk/e2k6anQscjplLGs6dCxmOiEhbn06ZTpudWxsKTtmdW5jdGlvbiB3dChlLHQ9bnVsbCxuPW51bGwscj0wLG89bnVsbCxzPWU9PT1HZT8wOjEsaT0hMSxhPSExKXtjb25zdCBsPXtfX3ZfaXNWTm9kZTohMCxfX3Zfc2tpcDohMCx0eXBlOmUscHJvcHM6dCxrZXk6dCYmZHkodCkscmVmOnQmJkVhKHQpLHNjb3BlSWQ6VGcsc2xvdFNjb3BlSWRzOm51bGwsY2hpbGRyZW46bixjb21wb25lbnQ6bnVsbCxzdXNwZW5zZTpudWxsLHNzQ29udGVudDpudWxsLHNzRmFsbGJhY2s6bnVsbCxkaXJzOm51bGwsdHJhbnNpdGlvbjpudWxsLGVsOm51bGwsYW5jaG9yOm51bGwsdGFyZ2V0Om51bGwsdGFyZ2V0U3RhcnQ6bnVsbCx0YXJnZXRBbmNob3I6bnVsbCxzdGF0aWNDb3VudDowLHNoYXBlRmxhZzpzLHBhdGNoRmxhZzpyLGR5bmFtaWNQcm9wczpvLGR5bmFtaWNDaGlsZHJlbjpudWxsLGFwcENvbnRleHQ6bnVsbCxjdHg6anR9O3JldHVybiBhPyhBZihsLG4pLHMmMTI4JiZlLm5vcm1hbGl6ZShsKSk6biYmKGwuc2hhcGVGbGFnfD1mdChuKT84OjE2KSwkbz4wJiYhaSYmWXQmJihsLnBhdGNoRmxhZz4wfHxzJjYpJiZsLnBhdGNoRmxhZyE9PTMyJiZZdC5wdXNoKGwpLGx9Y29uc3QgcmU9JHg7ZnVuY3Rpb24gJHgoZSx0PW51bGwsbj1udWxsLHI9MCxvPW51bGwscz0hMSl7aWYoKCFlfHxlPT09emcpJiYoZT1fdCksTW8oZSkpe2NvbnN0IGE9cG4oZSx0LCEwKTtyZXR1cm4gbiYmQWYoYSxuKSwkbz4wJiYhcyYmWXQmJihhLnNoYXBlRmxhZyY2P1l0W1l0LmluZGV4T2YoZSldPWE6WXQucHVzaChhKSksYS5wYXRjaEZsYWc9LTIsYX1pZihVeChlKSYmKGU9ZS5fX3ZjY09wdHMpLHQpe3Q9TXQodCk7bGV0e2NsYXNzOmEsc3R5bGU6bH09dDthJiYhZnQoYSkmJih0LmNsYXNzPXVlKGEpKSxaZShsKSYmKGJsKGwpJiYhU2UobCkmJihsPXZ0KHt9LGwpKSx0LnN0eWxlPVJuKGwpKX1jb25zdCBpPWZ0KGUpPzE6VmEoZSk/MTI4OlBnKGUpPzY0OlplKGUpPzQ6Q2UoZSk/MjowO3JldHVybiB3dChlLHQsbixyLG8saSxzLCEwKX1mdW5jdGlvbiBNdChlKXtyZXR1cm4gZT9ibChlKXx8WGcoZSk/dnQoe30sZSk6ZTpudWxsfWZ1bmN0aW9uIHBuKGUsdCxuPSExLHI9ITEpe2NvbnN0e3Byb3BzOm8scmVmOnMscGF0Y2hGbGFnOmksY2hpbGRyZW46YSx0cmFuc2l0aW9uOmx9PWUsdT10P2ZlKG98fHt9LHQpOm8sYz17X192X2lzVk5vZGU6ITAsX192X3NraXA6ITAsdHlwZTplLnR5cGUscHJvcHM6dSxrZXk6dSYmZHkodSkscmVmOnQmJnQucmVmP24mJnM/U2Uocyk/cy5jb25jYXQoRWEodCkpOltzLEVhKHQpXTpFYSh0KTpzLHNjb3BlSWQ6ZS5zY29wZUlkLHNsb3RTY29wZUlkczplLnNsb3RTY29wZUlkcyxjaGlsZHJlbjphLHRhcmdldDplLnRhcmdldCx0YXJnZXRTdGFydDplLnRhcmdldFN0YXJ0LHRhcmdldEFuY2hvcjplLnRhcmdldEFuY2hvcixzdGF0aWNDb3VudDplLnN0YXRpY0NvdW50LHNoYXBlRmxhZzplLnNoYXBlRmxhZyxwYXRjaEZsYWc6dCYmZS50eXBlIT09R2U/aT09PS0xPzE2Oml8MTY6aSxkeW5hbWljUHJvcHM6ZS5keW5hbWljUHJvcHMsZHluYW1pY0NoaWxkcmVuOmUuZHluYW1pY0NoaWxkcmVuLGFwcENvbnRleHQ6ZS5hcHBDb250ZXh0LGRpcnM6ZS5kaXJzLHRyYW5zaXRpb246bCxjb21wb25lbnQ6ZS5jb21wb25lbnQsc3VzcGVuc2U6ZS5zdXNwZW5zZSxzc0NvbnRlbnQ6ZS5zc0NvbnRlbnQmJnBuKGUuc3NDb250ZW50KSxzc0ZhbGxiYWNrOmUuc3NGYWxsYmFjayYmcG4oZS5zc0ZhbGxiYWNrKSxwbGFjZWhvbGRlcjplLnBsYWNlaG9sZGVyLGVsOmUuZWwsYW5jaG9yOmUuYW5jaG9yLGN0eDplLmN0eCxjZTplLmNlfTtyZXR1cm4gbCYmciYmeHMoYyxsLmNsb25lKGMpKSxjfWZ1bmN0aW9uIHN0KGU9IiAiLHQ9MCl7cmV0dXJuIHJlKERvLG51bGwsZSx0KX1mdW5jdGlvbiBNeChlLHQpe2NvbnN0IG49cmUoYWksbnVsbCxlKTtyZXR1cm4gbi5zdGF0aWNDb3VudD10LG59ZnVuY3Rpb24gZGUoZT0iIix0PSExKXtyZXR1cm4gdD8oUigpLCQoX3QsbnVsbCxlKSk6cmUoX3QsbnVsbCxlKX1mdW5jdGlvbiBibihlKXtyZXR1cm4gZT09bnVsbHx8dHlwZW9mIGU9PSJib29sZWFuIj9yZShfdCk6U2UoZSk/cmUoR2UsbnVsbCxlLnNsaWNlKCkpOk1vKGUpP0NyKGUpOnJlKERvLG51bGwsU3RyaW5nKGUpKX1mdW5jdGlvbiBDcihlKXtyZXR1cm4gZS5lbD09PW51bGwmJmUucGF0Y2hGbGFnIT09LTF8fGUubWVtbz9lOnBuKGUpfWZ1bmN0aW9uIEFmKGUsdCl7bGV0IG49MDtjb25zdHtzaGFwZUZsYWc6cn09ZTtpZih0PT1udWxsKXQ9bnVsbDtlbHNlIGlmKFNlKHQpKW49MTY7ZWxzZSBpZih0eXBlb2YgdD09Im9iamVjdCIpaWYociY2NSl7Y29uc3Qgbz10LmRlZmF1bHQ7byYmKG8uX2MmJihvLl9kPSExKSxBZihlLG8oKSksby5fYyYmKG8uX2Q9ITApKTtyZXR1cm59ZWxzZXtuPTMyO2NvbnN0IG89dC5fOyFvJiYhWGcodCk/dC5fY3R4PWp0Om89PT0zJiZqdCYmKGp0LnNsb3RzLl89PT0xP3QuXz0xOih0Ll89MixlLnBhdGNoRmxhZ3w9MTAyNCkpfWVsc2UgQ2UodCk/KHQ9e2RlZmF1bHQ6dCxfY3R4Omp0fSxuPTMyKToodD1TdHJpbmcodCksciY2ND8obj0xNix0PVtzdCh0KV0pOm49OCk7ZS5jaGlsZHJlbj10LGUuc2hhcGVGbGFnfD1ufWZ1bmN0aW9uIGZlKC4uLmUpe2NvbnN0IHQ9e307Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZVtuXTtmb3IoY29uc3QgbyBpbiByKWlmKG89PT0iY2xhc3MiKXQuY2xhc3MhPT1yLmNsYXNzJiYodC5jbGFzcz11ZShbdC5jbGFzcyxyLmNsYXNzXSkpO2Vsc2UgaWYobz09PSJzdHlsZSIpdC5zdHlsZT1SbihbdC5zdHlsZSxyLnN0eWxlXSk7ZWxzZSBpZihSaShvKSl7Y29uc3Qgcz10W29dLGk9cltvXTtpJiZzIT09aSYmIShTZShzKSYmcy5pbmNsdWRlcyhpKSk/dFtvXT1zP1tdLmNvbmNhdChzLGkpOmk6aT09bnVsbCYmcz09bnVsbCYmIWNsKG8pJiYodFtvXT1pKX1lbHNlIG8hPT0iIiYmKHRbb109cltvXSl9cmV0dXJuIHR9ZnVuY3Rpb24gZG4oZSx0LG4scj1udWxsKXtIbihlLHQsNyxbbixyXSl9Y29uc3QgQng9V2coKTtsZXQgcXg9MDtmdW5jdGlvbiBGeChlLHQsbil7Y29uc3Qgcj1lLnR5cGUsbz0odD90LmFwcENvbnRleHQ6ZS5hcHBDb250ZXh0KXx8Qngscz17dWlkOnF4Kyssdm5vZGU6ZSx0eXBlOnIscGFyZW50OnQsYXBwQ29udGV4dDpvLHJvb3Q6bnVsbCxuZXh0Om51bGwsc3ViVHJlZTpudWxsLGVmZmVjdDpudWxsLHVwZGF0ZTpudWxsLGpvYjpudWxsLHNjb3BlOm5ldyByZyghMCkscmVuZGVyOm51bGwscHJveHk6bnVsbCxleHBvc2VkOm51bGwsZXhwb3NlUHJveHk6bnVsbCx3aXRoUHJveHk6bnVsbCxwcm92aWRlczp0P3QucHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShvLnByb3ZpZGVzKSxpZHM6dD90LmlkczpbIiIsMCwwXSxhY2Nlc3NDYWNoZTpudWxsLHJlbmRlckNhY2hlOltdLGNvbXBvbmVudHM6bnVsbCxkaXJlY3RpdmVzOm51bGwscHJvcHNPcHRpb25zOmV5KHIsbyksZW1pdHNPcHRpb25zOktnKHIsbyksZW1pdDpudWxsLGVtaXR0ZWQ6bnVsbCxwcm9wc0RlZmF1bHRzOlllLGluaGVyaXRBdHRyczpyLmluaGVyaXRBdHRycyxjdHg6WWUsZGF0YTpZZSxwcm9wczpZZSxhdHRyczpZZSxzbG90czpZZSxyZWZzOlllLHNldHVwU3RhdGU6WWUsc2V0dXBDb250ZXh0Om51bGwsc3VzcGVuc2U6bixzdXNwZW5zZUlkOm4/bi5wZW5kaW5nSWQ6MCxhc3luY0RlcDpudWxsLGFzeW5jUmVzb2x2ZWQ6ITEsaXNNb3VudGVkOiExLGlzVW5tb3VudGVkOiExLGlzRGVhY3RpdmF0ZWQ6ITEsYmM6bnVsbCxjOm51bGwsYm06bnVsbCxtOm51bGwsYnU6bnVsbCx1Om51bGwsdW06bnVsbCxidW06bnVsbCxkYTpudWxsLGE6bnVsbCxydGc6bnVsbCxydGM6bnVsbCxlYzpudWxsLHNwOm51bGx9O3JldHVybiBzLmN0eD17XzpzfSxzLnJvb3Q9dD90LnJvb3Q6cyxzLmVtaXQ9aHguYmluZChudWxsLHMpLGUuY2UmJmUuY2Uocyksc31sZXQgenQ9bnVsbDtjb25zdCBtdD0oKT0+enR8fGp0O2xldCBIYSxoczt7Y29uc3QgZT1tbCgpLHQ9KG4scik9PntsZXQgbztyZXR1cm4obz1lW25dKXx8KG89ZVtuXT1bXSksby5wdXNoKHIpLHM9PntvLmxlbmd0aD4xP28uZm9yRWFjaChpPT5pKHMpKTpvWzBdKHMpfX07SGE9dCgiX19WVUVfSU5TVEFOQ0VfU0VUVEVSU19fIixuPT56dD1uKSxocz10KCJfX1ZVRV9TU1JfU0VUVEVSU19fIixuPT5Cbz1uKX1jb25zdCBEcz1lPT57Y29uc3QgdD16dDtyZXR1cm4gSGEoZSksZS5zY29wZS5vbigpLCgpPT57ZS5zY29wZS5vZmYoKSxIYSh0KX19LF9pPSgpPT57enQmJnp0LnNjb3BlLm9mZigpLEhhKG51bGwpfTtmdW5jdGlvbiBweShlKXtyZXR1cm4gZS52bm9kZS5zaGFwZUZsYWcmNH1sZXQgQm89ITE7ZnVuY3Rpb24gengoZSx0PSExLG49ITEpe3QmJmhzKHQpO2NvbnN0e3Byb3BzOnIsY2hpbGRyZW46b309ZS52bm9kZSxzPXB5KGUpO194KGUscixzLHQpLEV4KGUsbyxufHx0KTtjb25zdCBpPXM/angoZSx0KTp2b2lkIDA7cmV0dXJuIHQmJmhzKCExKSxpfWZ1bmN0aW9uIGp4KGUsdCl7Y29uc3Qgbj1lLnR5cGU7ZS5hY2Nlc3NDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLGUucHJveHk9bmV3IFByb3h5KGUuY3R4LHJ4KTtjb25zdHtzZXR1cDpyfT1uO2lmKHIpe0RyKCk7Y29uc3Qgbz1lLnNldHVwQ29udGV4dD1yLmxlbmd0aD4xP2h5KGUpOm51bGwscz1EcyhlKSxpPURpKHIsZSwwLFtlLnByb3BzLG9dKSxhPXVsKGkpO2lmKExyKCkscygpLChhfHxlLnNwKSYmIUlyKGUpJiZ3ZihlKSxhKXtpZihpLnRoZW4oX2ksX2kpLHQpcmV0dXJuIGkudGhlbihsPT57bHUoZSxsLHQpfSkuY2F0Y2gobD0+e05zKGwsZSwwKX0pO2UuYXN5bmNEZXA9aX1lbHNlIGx1KGUsaSx0KX1lbHNlIG15KGUsdCl9ZnVuY3Rpb24gbHUoZSx0LG4pe0NlKHQpP2UudHlwZS5fX3NzcklubGluZVJlbmRlcj9lLnNzclJlbmRlcj10OmUucmVuZGVyPXQ6WmUodCkmJihlLnNldHVwU3RhdGU9X2codCkpLG15KGUsbil9bGV0IHNwO2Z1bmN0aW9uIG15KGUsdCxuKXtjb25zdCByPWUudHlwZTtpZighZS5yZW5kZXIpe2lmKCF0JiZzcCYmIXIucmVuZGVyKXtjb25zdCBvPXIudGVtcGxhdGV8fFNmKGUpLnRlbXBsYXRlO2lmKG8pe2NvbnN0e2lzQ3VzdG9tRWxlbWVudDpzLGNvbXBpbGVyT3B0aW9uczppfT1lLmFwcENvbnRleHQuY29uZmlnLHtkZWxpbWl0ZXJzOmEsY29tcGlsZXJPcHRpb25zOmx9PXIsdT12dCh2dCh7aXNDdXN0b21FbGVtZW50OnMsZGVsaW1pdGVyczphfSxpKSxsKTtyLnJlbmRlcj1zcChvLHUpfX1lLnJlbmRlcj1yLnJlbmRlcnx8bHJ9e2NvbnN0IG89RHMoZSk7RHIoKTt0cnl7YXgoZSl9ZmluYWxseXtMcigpLG8oKX19fWNvbnN0IFZ4PXtnZXQoZSx0KXtyZXR1cm4gS3QoZSwiZ2V0IiwiIiksZVt0XX19O2Z1bmN0aW9uIGh5KGUpe2NvbnN0IHQ9bj0+e2UuZXhwb3NlZD1ufHx7fX07cmV0dXJue2F0dHJzOm5ldyBQcm94eShlLmF0dHJzLFZ4KSxzbG90czplLnNsb3RzLGVtaXQ6ZS5lbWl0LGV4cG9zZTp0fX1mdW5jdGlvbiBFbChlKXtyZXR1cm4gZS5leHBvc2VkP2UuZXhwb3NlUHJveHl8fChlLmV4cG9zZVByb3h5PW5ldyBQcm94eShfZyhMbyhlLmV4cG9zZWQpKSx7Z2V0KHQsbil7aWYobiBpbiB0KXJldHVybiB0W25dO2lmKG4gaW4gaWkpcmV0dXJuIGlpW25dKGUpfSxoYXModCxuKXtyZXR1cm4gbiBpbiB0fHxuIGluIGlpfX0pKTplLnByb3h5fWZ1bmN0aW9uIGN1KGUsdD0hMCl7cmV0dXJuIENlKGUpP2UuZGlzcGxheU5hbWV8fGUubmFtZTplLm5hbWV8fHQmJmUuX19uYW1lfWZ1bmN0aW9uIFV4KGUpe3JldHVybiBDZShlKSYmIl9fdmNjT3B0cyJpbiBlfWNvbnN0IE49KGUsdCk9PkNfKGUsdCxCbyk7ZnVuY3Rpb24gRmUoZSx0LG4pe3RyeXtVYSgtMSk7Y29uc3Qgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByPT09Mj9aZSh0KSYmIVNlKHQpP01vKHQpP3JlKGUsbnVsbCxbdF0pOnJlKGUsdCk6cmUoZSxudWxsLHQpOihyPjM/bj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik6cj09PTMmJk1vKG4pJiYobj1bbl0pLHJlKGUsdCxuKSl9ZmluYWxseXtVYSgxKX19ZnVuY3Rpb24gb3EoZSx0LG4scil7Y29uc3Qgbz1uW3JdO2lmKG8mJkh4KG8sZSkpcmV0dXJuIG87Y29uc3Qgcz10KCk7cmV0dXJuIHMubWVtbz1lLnNsaWNlKCkscy5jYWNoZUluZGV4PXIsbltyXT1zfWZ1bmN0aW9uIEh4KGUsdCl7Y29uc3Qgbj1lLm1lbW87aWYobi5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKWlmKEZ0KG5bcl0sdFtyXSkpcmV0dXJuITE7cmV0dXJuICRvPjAmJll0JiZZdC5wdXNoKGUpLCEwfWNvbnN0IFd4PSIzLjUuMzIiO2xldCB1dTtjb25zdCBpcD10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LnRydXN0ZWRUeXBlcztpZihpcCl0cnl7dXU9aXAuY3JlYXRlUG9saWN5KCJ2dWUiLHtjcmVhdGVIVE1MOmU9PmV9KX1jYXRjaHt9Y29uc3QgZ3k9dXU/ZT0+dXUuY3JlYXRlSFRNTChlKTplPT5lLEd4PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsS3g9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLEVyPXR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQ6bnVsbCxhcD1FciYmRXIuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKSxReD17aW5zZXJ0OihlLHQsbik9Pnt0Lmluc2VydEJlZm9yZShlLG58fG51bGwpfSxyZW1vdmU6ZT0+e2NvbnN0IHQ9ZS5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQoZSl9LGNyZWF0ZUVsZW1lbnQ6KGUsdCxuLHIpPT57Y29uc3Qgbz10PT09InN2ZyI/RXIuY3JlYXRlRWxlbWVudE5TKEd4LGUpOnQ9PT0ibWF0aG1sIj9Fci5jcmVhdGVFbGVtZW50TlMoS3gsZSk6bj9Fci5jcmVhdGVFbGVtZW50KGUse2lzOm59KTpFci5jcmVhdGVFbGVtZW50KGUpO3JldHVybiBlPT09InNlbGVjdCImJnImJnIubXVsdGlwbGUhPW51bGwmJm8uc2V0QXR0cmlidXRlKCJtdWx0aXBsZSIsci5tdWx0aXBsZSksb30sY3JlYXRlVGV4dDplPT5Fci5jcmVhdGVUZXh0Tm9kZShlKSxjcmVhdGVDb21tZW50OmU9PkVyLmNyZWF0ZUNvbW1lbnQoZSksc2V0VGV4dDooZSx0KT0+e2Uubm9kZVZhbHVlPXR9LHNldEVsZW1lbnRUZXh0OihlLHQpPT57ZS50ZXh0Q29udGVudD10fSxwYXJlbnROb2RlOmU9PmUucGFyZW50Tm9kZSxuZXh0U2libGluZzplPT5lLm5leHRTaWJsaW5nLHF1ZXJ5U2VsZWN0b3I6ZT0+RXIucXVlcnlTZWxlY3RvcihlKSxzZXRTY29wZUlkKGUsdCl7ZS5zZXRBdHRyaWJ1dGUodCwiIil9LGluc2VydFN0YXRpY0NvbnRlbnQoZSx0LG4scixvLHMpe2NvbnN0IGk9bj9uLnByZXZpb3VzU2libGluZzp0Lmxhc3RDaGlsZDtpZihvJiYobz09PXN8fG8ubmV4dFNpYmxpbmcpKWZvcig7dC5pbnNlcnRCZWZvcmUoby5jbG9uZU5vZGUoITApLG4pLCEobz09PXN8fCEobz1vLm5leHRTaWJsaW5nKSk7KTtlbHNle2FwLmlubmVySFRNTD1neShyPT09InN2ZyI/YDxzdmc+JHtlfTwvc3ZnPmA6cj09PSJtYXRobWwiP2A8bWF0aD4ke2V9PC9tYXRoPmA6ZSk7Y29uc3QgYT1hcC5jb250ZW50O2lmKHI9PT0ic3ZnInx8cj09PSJtYXRobWwiKXtjb25zdCBsPWEuZmlyc3RDaGlsZDtmb3IoO2wuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChsLmZpcnN0Q2hpbGQpO2EucmVtb3ZlQ2hpbGQobCl9dC5pbnNlcnRCZWZvcmUoYSxuKX1yZXR1cm5baT9pLm5leHRTaWJsaW5nOnQuZmlyc3RDaGlsZCxuP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkXX19LFdyPSJ0cmFuc2l0aW9uIix6cz0iYW5pbWF0aW9uIix4aT1TeW1ib2woIl92dGMiKSx5eT17bmFtZTpTdHJpbmcsdHlwZTpTdHJpbmcsY3NzOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMH0sZHVyYXRpb246W1N0cmluZyxOdW1iZXIsT2JqZWN0XSxlbnRlckZyb21DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxhcHBlYXJGcm9tQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxsZWF2ZUZyb21DbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZ30sWXg9dnQoe30sSWcseXkpLEp4PWU9PihlLmRpc3BsYXlOYW1lPSJUcmFuc2l0aW9uIixlLnByb3BzPVl4LGUpLFh4PUp4KChlLHtzbG90czp0fSk9PkZlKGpfLFp4KGUpLHQpKSx3bz0oZSx0PVtdKT0+e1NlKGUpP2UuZm9yRWFjaChuPT5uKC4uLnQpKTplJiZlKC4uLnQpfSxscD1lPT5lP1NlKGUpP2Uuc29tZSh0PT50Lmxlbmd0aD4xKTplLmxlbmd0aD4xOiExO2Z1bmN0aW9uIFp4KGUpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IEQgaW4gZSlEIGluIHl5fHwodFtEXT1lW0RdKTtpZihlLmNzcz09PSExKXJldHVybiB0O2NvbnN0e25hbWU6bj0idiIsdHlwZTpyLGR1cmF0aW9uOm8sZW50ZXJGcm9tQ2xhc3M6cz1gJHtufS1lbnRlci1mcm9tYCxlbnRlckFjdGl2ZUNsYXNzOmk9YCR7bn0tZW50ZXItYWN0aXZlYCxlbnRlclRvQ2xhc3M6YT1gJHtufS1lbnRlci10b2AsYXBwZWFyRnJvbUNsYXNzOmw9cyxhcHBlYXJBY3RpdmVDbGFzczp1PWksYXBwZWFyVG9DbGFzczpjPWEsbGVhdmVGcm9tQ2xhc3M6Zj1gJHtufS1sZWF2ZS1mcm9tYCxsZWF2ZUFjdGl2ZUNsYXNzOmQ9YCR7bn0tbGVhdmUtYWN0aXZlYCxsZWF2ZVRvQ2xhc3M6cD1gJHtufS1sZWF2ZS10b2B9PWUsbT1lUyhvKSx5PW0mJm1bMF0sXz1tJiZtWzFdLHtvbkJlZm9yZUVudGVyOncsb25FbnRlcjp2LG9uRW50ZXJDYW5jZWxsZWQ6aCxvbkxlYXZlOmIsb25MZWF2ZUNhbmNlbGxlZDp4LG9uQmVmb3JlQXBwZWFyOlM9dyxvbkFwcGVhcjprPXYsb25BcHBlYXJDYW5jZWxsZWQ6VD1ofT10LEM9KEQsVyxMLGopPT57RC5fZW50ZXJDYW5jZWxsZWQ9aixfbyhELFc/YzphKSxfbyhELFc/dTppKSxMJiZMKCl9LFA9KEQsVyk9PntELl9pc0xlYXZpbmc9ITEsX28oRCxmKSxfbyhELHApLF9vKEQsZCksVyYmVygpfSxGPUQ9PihXLEwpPT57Y29uc3Qgaj1EP2s6dixJPSgpPT5DKFcsRCxMKTt3byhqLFtXLEldKSxjcCgoKT0+e19vKFcsRD9sOnMpLF9yKFcsRD9jOmEpLGxwKGopfHx1cChXLHIseSxJKX0pfTtyZXR1cm4gdnQodCx7b25CZWZvcmVFbnRlcihEKXt3byh3LFtEXSksX3IoRCxzKSxfcihELGkpfSxvbkJlZm9yZUFwcGVhcihEKXt3byhTLFtEXSksX3IoRCxsKSxfcihELHUpfSxvbkVudGVyOkYoITEpLG9uQXBwZWFyOkYoITApLG9uTGVhdmUoRCxXKXtELl9pc0xlYXZpbmc9ITA7Y29uc3QgTD0oKT0+UChELFcpO19yKEQsZiksRC5fZW50ZXJDYW5jZWxsZWQ/KF9yKEQsZCkscHAoRCkpOihwcChEKSxfcihELGQpKSxjcCgoKT0+e0QuX2lzTGVhdmluZyYmKF9vKEQsZiksX3IoRCxwKSxscChiKXx8dXAoRCxyLF8sTCkpfSksd28oYixbRCxMXSl9LG9uRW50ZXJDYW5jZWxsZWQoRCl7QyhELCExLHZvaWQgMCwhMCksd28oaCxbRF0pfSxvbkFwcGVhckNhbmNlbGxlZChEKXtDKEQsITAsdm9pZCAwLCEwKSx3byhULFtEXSl9LG9uTGVhdmVDYW5jZWxsZWQoRCl7UChEKSx3byh4LFtEXSl9fSl9ZnVuY3Rpb24gZVMoZSl7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtpZihaZShlKSlyZXR1cm5bZ2MoZS5lbnRlciksZ2MoZS5sZWF2ZSldO3tjb25zdCB0PWdjKGUpO3JldHVyblt0LHRdfX1mdW5jdGlvbiBnYyhlKXtyZXR1cm4gWmgoZSl9ZnVuY3Rpb24gX3IoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKG49Pm4mJmUuY2xhc3NMaXN0LmFkZChuKSksKGVbeGldfHwoZVt4aV09bmV3IFNldCkpLmFkZCh0KX1mdW5jdGlvbiBfbyhlLHQpe3Quc3BsaXQoL1xzKy8pLmZvckVhY2gocj0+ciYmZS5jbGFzc0xpc3QucmVtb3ZlKHIpKTtjb25zdCBuPWVbeGldO24mJihuLmRlbGV0ZSh0KSxuLnNpemV8fChlW3hpXT12b2lkIDApKX1mdW5jdGlvbiBjcChlKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSl9KX1sZXQgdFM9MDtmdW5jdGlvbiB1cChlLHQsbixyKXtjb25zdCBvPWUuX2VuZElkPSsrdFMscz0oKT0+e289PT1lLl9lbmRJZCYmcigpfTtpZihuIT1udWxsKXJldHVybiBzZXRUaW1lb3V0KHMsbik7Y29uc3R7dHlwZTppLHRpbWVvdXQ6YSxwcm9wQ291bnQ6bH09blMoZSx0KTtpZighaSlyZXR1cm4gcigpO2NvbnN0IHU9aSsiZW5kIjtsZXQgYz0wO2NvbnN0IGY9KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIodSxkKSxzKCl9LGQ9cD0+e3AudGFyZ2V0PT09ZSYmKytjPj1sJiZmKCl9O3NldFRpbWVvdXQoKCk9PntjPGwmJmYoKX0sYSsxKSxlLmFkZEV2ZW50TGlzdGVuZXIodSxkKX1mdW5jdGlvbiBuUyhlLHQpe2NvbnN0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkscj1tPT4oblttXXx8IiIpLnNwbGl0KCIsICIpLG89cihgJHtXcn1EZWxheWApLHM9cihgJHtXcn1EdXJhdGlvbmApLGk9ZnAobyxzKSxhPXIoYCR7enN9RGVsYXlgKSxsPXIoYCR7enN9RHVyYXRpb25gKSx1PWZwKGEsbCk7bGV0IGM9bnVsbCxmPTAsZD0wO3Q9PT1Xcj9pPjAmJihjPVdyLGY9aSxkPXMubGVuZ3RoKTp0PT09enM/dT4wJiYoYz16cyxmPXUsZD1sLmxlbmd0aCk6KGY9TWF0aC5tYXgoaSx1KSxjPWY+MD9pPnU/V3I6enM6bnVsbCxkPWM/Yz09PVdyP3MubGVuZ3RoOmwubGVuZ3RoOjApO2NvbnN0IHA9Yz09PVdyJiYvXGIoPzp0cmFuc2Zvcm18YWxsKSg/Oix8JCkvLnRlc3QocihgJHtXcn1Qcm9wZXJ0eWApLnRvU3RyaW5nKCkpO3JldHVybnt0eXBlOmMsdGltZW91dDpmLHByb3BDb3VudDpkLGhhc1RyYW5zZm9ybTpwfX1mdW5jdGlvbiBmcChlLHQpe2Zvcig7ZS5sZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4KC4uLnQubWFwKChuLHIpPT5kcChuKStkcChlW3JdKSkpfWZ1bmN0aW9uIGRwKGUpe3JldHVybiBlPT09ImF1dG8iPzA6TnVtYmVyKGUuc2xpY2UoMCwtMSkucmVwbGFjZSgiLCIsIi4iKSkqMWUzfWZ1bmN0aW9uIHBwKGUpe3JldHVybihlP2Uub3duZXJEb2N1bWVudDpkb2N1bWVudCkuYm9keS5vZmZzZXRIZWlnaHR9ZnVuY3Rpb24gclMoZSx0LG4pe2NvbnN0IHI9ZVt4aV07ciYmKHQ9KHQ/W3QsLi4ucl06Wy4uLnJdKS5qb2luKCIgIikpLHQ9PW51bGw/ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik6bj9lLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHQpOmUuY2xhc3NOYW1lPXR9Y29uc3QgV2E9U3ltYm9sKCJfdm9kIiksdnk9U3ltYm9sKCJfdnNoIiksc3E9e25hbWU6InNob3ciLGJlZm9yZU1vdW50KGUse3ZhbHVlOnR9LHt0cmFuc2l0aW9uOm59KXtlW1dhXT1lLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSI/IiI6ZS5zdHlsZS5kaXNwbGF5LG4mJnQ/bi5iZWZvcmVFbnRlcihlKTpqcyhlLHQpfSxtb3VudGVkKGUse3ZhbHVlOnR9LHt0cmFuc2l0aW9uOm59KXtuJiZ0JiZuLmVudGVyKGUpfSx1cGRhdGVkKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0se3RyYW5zaXRpb246cn0peyF0IT0hbiYmKHI/dD8oci5iZWZvcmVFbnRlcihlKSxqcyhlLCEwKSxyLmVudGVyKGUpKTpyLmxlYXZlKGUsKCk9PntqcyhlLCExKX0pOmpzKGUsdCkpfSxiZWZvcmVVbm1vdW50KGUse3ZhbHVlOnR9KXtqcyhlLHQpfX07ZnVuY3Rpb24ganMoZSx0KXtlLnN0eWxlLmRpc3BsYXk9dD9lW1dhXToibm9uZSIsZVt2eV09IXR9Y29uc3Qgb1M9U3ltYm9sKCIiKSxzUz0vKD86Xnw7KVxzKmRpc3BsYXlccyo6LztmdW5jdGlvbiBpUyhlLHQsbil7Y29uc3Qgcj1lLnN0eWxlLG89ZnQobik7bGV0IHM9ITE7aWYobiYmIW8pe2lmKHQpaWYoZnQodCkpZm9yKGNvbnN0IGkgb2YgdC5zcGxpdCgiOyIpKXtjb25zdCBhPWkuc2xpY2UoMCxpLmluZGV4T2YoIjoiKSkudHJpbSgpO25bYV09PW51bGwmJlRhKHIsYSwiIil9ZWxzZSBmb3IoY29uc3QgaSBpbiB0KW5baV09PW51bGwmJlRhKHIsaSwiIik7Zm9yKGNvbnN0IGkgaW4gbilpPT09ImRpc3BsYXkiJiYocz0hMCksVGEocixpLG5baV0pfWVsc2UgaWYobyl7aWYodCE9PW4pe2NvbnN0IGk9cltvU107aSYmKG4rPSI7IitpKSxyLmNzc1RleHQ9bixzPXNTLnRlc3Qobil9fWVsc2UgdCYmZS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIik7V2EgaW4gZSYmKGVbV2FdPXM/ci5kaXNwbGF5OiIiLGVbdnldJiYoci5kaXNwbGF5PSJub25lIikpfWNvbnN0IG1wPS9ccyohaW1wb3J0YW50JC87ZnVuY3Rpb24gVGEoZSx0LG4pe2lmKFNlKG4pKW4uZm9yRWFjaChyPT5UYShlLHQscikpO2Vsc2UgaWYobj09bnVsbCYmKG49IiIpLHQuc3RhcnRzV2l0aCgiLS0iKSllLnNldFByb3BlcnR5KHQsbik7ZWxzZXtjb25zdCByPWFTKGUsdCk7bXAudGVzdChuKT9lLnNldFByb3BlcnR5KEJyKHIpLG4ucmVwbGFjZShtcCwiIiksImltcG9ydGFudCIpOmVbcl09bn19Y29uc3QgaHA9WyJXZWJraXQiLCJNb3oiLCJtcyJdLHljPXt9O2Z1bmN0aW9uIGFTKGUsdCl7Y29uc3Qgbj15Y1t0XTtpZihuKXJldHVybiBuO2xldCByPSR0KHQpO2lmKHIhPT0iZmlsdGVyIiYmciBpbiBlKXJldHVybiB5Y1t0XT1yO3I9cGwocik7Zm9yKGxldCBvPTA7bzxocC5sZW5ndGg7bysrKXtjb25zdCBzPWhwW29dK3I7aWYocyBpbiBlKXJldHVybiB5Y1t0XT1zfXJldHVybiB0fWNvbnN0IGdwPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjtmdW5jdGlvbiB5cChlLHQsbixyLG8scz1adyh0KSl7ciYmdC5zdGFydHNXaXRoKCJ4bGluazoiKT9uPT1udWxsP2UucmVtb3ZlQXR0cmlidXRlTlMoZ3AsdC5zbGljZSg2LHQubGVuZ3RoKSk6ZS5zZXRBdHRyaWJ1dGVOUyhncCx0LG4pOm49PW51bGx8fHMmJiFlZyhuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LHM/IiI6a24obik/U3RyaW5nKG4pOm4pfWZ1bmN0aW9uIHZwKGUsdCxuLHIsbyl7aWYodD09PSJpbm5lckhUTUwifHx0PT09InRleHRDb250ZW50Iil7biE9bnVsbCYmKGVbdF09dD09PSJpbm5lckhUTUwiP2d5KG4pOm4pO3JldHVybn1jb25zdCBzPWUudGFnTmFtZTtpZih0PT09InZhbHVlIiYmcyE9PSJQUk9HUkVTUyImJiFzLmluY2x1ZGVzKCItIikpe2NvbnN0IGE9cz09PSJPUFRJT04iP2UuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfHwiIjplLnZhbHVlLGw9bj09bnVsbD9lLnR5cGU9PT0iY2hlY2tib3giPyJvbiI6IiI6U3RyaW5nKG4pOyhhIT09bHx8ISgiX3ZhbHVlImluIGUpKSYmKGUudmFsdWU9bCksbj09bnVsbCYmZS5yZW1vdmVBdHRyaWJ1dGUodCksZS5fdmFsdWU9bjtyZXR1cm59bGV0IGk9ITE7aWYobj09PSIifHxuPT1udWxsKXtjb25zdCBhPXR5cGVvZiBlW3RdO2E9PT0iYm9vbGVhbiI/bj1lZyhuKTpuPT1udWxsJiZhPT09InN0cmluZyI/KG49IiIsaT0hMCk6YT09PSJudW1iZXIiJiYobj0wLGk9ITApfXRyeXtlW3RdPW59Y2F0Y2h7fWkmJmUucmVtb3ZlQXR0cmlidXRlKG98fHQpfWZ1bmN0aW9uIGxTKGUsdCxuLHIpe2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4scil9ZnVuY3Rpb24gY1MoZSx0LG4scil7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKX1jb25zdCBicD1TeW1ib2woIl92ZWkiKTtmdW5jdGlvbiB1UyhlLHQsbixyLG89bnVsbCl7Y29uc3Qgcz1lW2JwXXx8KGVbYnBdPXt9KSxpPXNbdF07aWYociYmaSlpLnZhbHVlPXI7ZWxzZXtjb25zdFthLGxdPWZTKHQpO2lmKHIpe2NvbnN0IHU9c1t0XT1tUyhyLG8pO2xTKGUsYSx1LGwpfWVsc2UgaSYmKGNTKGUsYSxpLGwpLHNbdF09dm9pZCAwKX19Y29uc3Qgd3A9Lyg/Ok9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvO2Z1bmN0aW9uIGZTKGUpe2xldCB0O2lmKHdwLnRlc3QoZSkpe3Q9e307bGV0IHI7Zm9yKDtyPWUubWF0Y2god3ApOyllPWUuc2xpY2UoMCxlLmxlbmd0aC1yWzBdLmxlbmd0aCksdFtyWzBdLnRvTG93ZXJDYXNlKCldPSEwfXJldHVybltlWzJdPT09IjoiP2Uuc2xpY2UoMyk6QnIoZS5zbGljZSgyKSksdF19bGV0IHZjPTA7Y29uc3QgZFM9UHJvbWlzZS5yZXNvbHZlKCkscFM9KCk9PnZjfHwoZFMudGhlbigoKT0+dmM9MCksdmM9RGF0ZS5ub3coKSk7ZnVuY3Rpb24gbVMoZSx0KXtjb25zdCBuPXI9PntpZighci5fdnRzKXIuX3Z0cz1EYXRlLm5vdygpO2Vsc2UgaWYoci5fdnRzPD1uLmF0dGFjaGVkKXJldHVybjtIbihoUyhyLG4udmFsdWUpLHQsNSxbcl0pfTtyZXR1cm4gbi52YWx1ZT1lLG4uYXR0YWNoZWQ9cFMoKSxufWZ1bmN0aW9uIGhTKGUsdCl7aWYoU2UodCkpe2NvbnN0IG49ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247cmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPSgpPT57bi5jYWxsKGUpLGUuX3N0b3BwZWQ9ITB9LHQubWFwKHI9Pm89PiFvLl9zdG9wcGVkJiZyJiZyKG8pKX1lbHNlIHJldHVybiB0fWNvbnN0IF9wPWU9PmUuY2hhckNvZGVBdCgwKT09PTExMSYmZS5jaGFyQ29kZUF0KDEpPT09MTEwJiZlLmNoYXJDb2RlQXQoMik+OTYmJmUuY2hhckNvZGVBdCgyKTwxMjMsZ1M9KGUsdCxuLHIsbyxzKT0+e2NvbnN0IGk9bz09PSJzdmciO3Q9PT0iY2xhc3MiP3JTKGUscixpKTp0PT09InN0eWxlIj9pUyhlLG4scik6UmkodCk/Y2wodCl8fHVTKGUsdCxuLHIscyk6KHRbMF09PT0iLiI/KHQ9dC5zbGljZSgxKSwhMCk6dFswXT09PSJeIj8odD10LnNsaWNlKDEpLCExKTp5UyhlLHQscixpKSk/KHZwKGUsdCxyKSwhZS50YWdOYW1lLmluY2x1ZGVzKCItIikmJih0PT09InZhbHVlInx8dD09PSJjaGVja2VkInx8dD09PSJzZWxlY3RlZCIpJiZ5cChlLHQscixpLHMsdCE9PSJ2YWx1ZSIpKTplLl9pc1Z1ZUNFJiYodlMoZSx0KXx8ZS5fZGVmLl9fYXN5bmNMb2FkZXImJigvW0EtWl0vLnRlc3QodCl8fCFmdChyKSkpP3ZwKGUsJHQodCkscixzLHQpOih0PT09InRydWUtdmFsdWUiP2UuX3RydWVWYWx1ZT1yOnQ9PT0iZmFsc2UtdmFsdWUiJiYoZS5fZmFsc2VWYWx1ZT1yKSx5cChlLHQscixpKSl9O2Z1bmN0aW9uIHlTKGUsdCxuLHIpe2lmKHIpcmV0dXJuISEodD09PSJpbm5lckhUTUwifHx0PT09InRleHRDb250ZW50Inx8dCBpbiBlJiZfcCh0KSYmQ2UobikpO2lmKHQ9PT0ic3BlbGxjaGVjayJ8fHQ9PT0iZHJhZ2dhYmxlInx8dD09PSJ0cmFuc2xhdGUifHx0PT09ImF1dG9jb3JyZWN0Inx8dD09PSJzYW5kYm94IiYmZS50YWdOYW1lPT09IklGUkFNRSJ8fHQ9PT0iZm9ybSJ8fHQ9PT0ibGlzdCImJmUudGFnTmFtZT09PSJJTlBVVCJ8fHQ9PT0idHlwZSImJmUudGFnTmFtZT09PSJURVhUQVJFQSIpcmV0dXJuITE7aWYodD09PSJ3aWR0aCJ8fHQ9PT0iaGVpZ2h0Iil7Y29uc3Qgbz1lLnRhZ05hbWU7aWYobz09PSJJTUcifHxvPT09IlZJREVPInx8bz09PSJDQU5WQVMifHxvPT09IlNPVVJDRSIpcmV0dXJuITF9cmV0dXJuIF9wKHQpJiZmdChuKT8hMTp0IGluIGV9ZnVuY3Rpb24gdlMoZSx0KXtjb25zdCBuPWUuX2RlZi5wcm9wcztpZighbilyZXR1cm4hMTtjb25zdCByPSR0KHQpO3JldHVybiBBcnJheS5pc0FycmF5KG4pP24uc29tZShvPT4kdChvKT09PXIpOk9iamVjdC5rZXlzKG4pLnNvbWUobz0+JHQobyk9PT1yKX1jb25zdCBiUz1bImN0cmwiLCJzaGlmdCIsImFsdCIsIm1ldGEiXSx3Uz17c3RvcDplPT5lLnN0b3BQcm9wYWdhdGlvbigpLHByZXZlbnQ6ZT0+ZS5wcmV2ZW50RGVmYXVsdCgpLHNlbGY6ZT0+ZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQsY3RybDplPT4hZS5jdHJsS2V5LHNoaWZ0OmU9PiFlLnNoaWZ0S2V5LGFsdDplPT4hZS5hbHRLZXksbWV0YTplPT4hZS5tZXRhS2V5LGxlZnQ6ZT0+ImJ1dHRvbiJpbiBlJiZlLmJ1dHRvbiE9PTAsbWlkZGxlOmU9PiJidXR0b24iaW4gZSYmZS5idXR0b24hPT0xLHJpZ2h0OmU9PiJidXR0b24iaW4gZSYmZS5idXR0b24hPT0yLGV4YWN0OihlLHQpPT5iUy5zb21lKG49PmVbYCR7bn1LZXlgXSYmIXQuaW5jbHVkZXMobikpfSxScj0oZSx0KT0+e2lmKCFlKXJldHVybiBlO2NvbnN0IG49ZS5fd2l0aE1vZHN8fChlLl93aXRoTW9kcz17fSkscj10LmpvaW4oIi4iKTtyZXR1cm4gbltyXXx8KG5bcl09KChvLC4uLnMpPT57Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IGE9d1NbdFtpXV07aWYoYSYmYShvLHQpKXJldHVybn1yZXR1cm4gZShvLC4uLnMpfSkpfSxfUz17ZXNjOiJlc2NhcGUiLHNwYWNlOiIgIix1cDoiYXJyb3ctdXAiLGxlZnQ6ImFycm93LWxlZnQiLHJpZ2h0OiJhcnJvdy1yaWdodCIsZG93bjoiYXJyb3ctZG93biIsZGVsZXRlOiJiYWNrc3BhY2UifSxpcT0oZSx0KT0+e2NvbnN0IG49ZS5fd2l0aEtleXN8fChlLl93aXRoS2V5cz17fSkscj10LmpvaW4oIi4iKTtyZXR1cm4gbltyXXx8KG5bcl09KG89PntpZighKCJrZXkiaW4gbykpcmV0dXJuO2NvbnN0IHM9QnIoby5rZXkpO2lmKHQuc29tZShpPT5pPT09c3x8X1NbaV09PT1zKSlyZXR1cm4gZShvKX0pKX0sYnk9dnQoe3BhdGNoUHJvcDpnU30sUXgpO2xldCBjaSx4cD0hMTtmdW5jdGlvbiB4Uygpe3JldHVybiBjaXx8KGNpPUN4KGJ5KSl9ZnVuY3Rpb24gU1MoKXtyZXR1cm4gY2k9eHA/Y2k6QXgoYnkpLHhwPSEwLGNpfWNvbnN0IGtTPSgoLi4uZSk9Pntjb25zdCB0PXhTKCkuY3JlYXRlQXBwKC4uLmUpLHttb3VudDpufT10O3JldHVybiB0Lm1vdW50PXI9Pntjb25zdCBvPV95KHIpO2lmKCFvKXJldHVybjtjb25zdCBzPXQuX2NvbXBvbmVudDshQ2UocykmJiFzLnJlbmRlciYmIXMudGVtcGxhdGUmJihzLnRlbXBsYXRlPW8uaW5uZXJIVE1MKSxvLm5vZGVUeXBlPT09MSYmKG8udGV4dENvbnRlbnQ9IiIpO2NvbnN0IGk9bihvLCExLHd5KG8pKTtyZXR1cm4gbyBpbnN0YW5jZW9mIEVsZW1lbnQmJihvLnJlbW92ZUF0dHJpYnV0ZSgidi1jbG9hayIpLG8uc2V0QXR0cmlidXRlKCJkYXRhLXYtYXBwIiwiIikpLGl9LHR9KSxFUz0oKC4uLmUpPT57Y29uc3QgdD1TUygpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1yPT57Y29uc3Qgbz1feShyKTtpZihvKXJldHVybiBuKG8sITAsd3kobykpfSx0fSk7ZnVuY3Rpb24gd3koZSl7aWYoZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpcmV0dXJuInN2ZyI7aWYodHlwZW9mIE1hdGhNTEVsZW1lbnQ9PSJmdW5jdGlvbiImJmUgaW5zdGFuY2VvZiBNYXRoTUxFbGVtZW50KXJldHVybiJtYXRobWwifWZ1bmN0aW9uIF95KGUpe3JldHVybiBmdChlKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpOmV9Y29uc3QgVFM9LyIoPzpffFxcdTB7Mn01W0ZmXSl7Mn0oPzpwfFxcdTB7Mn03MCkoPzpyfFxcdTB7Mn03MikoPzpvfFxcdTB7Mn02W0ZmXSkoPzp0fFxcdTB7Mn03NCkoPzpvfFxcdTB7Mn02W0ZmXSkoPzpffFxcdTB7Mn01W0ZmXSl7Mn0iXHMqOi8sQ1M9LyIoPzpjfFxcdTAwNjMpKD86b3xcXHUwMDZbRmZdKSg/Om58XFx1MDA2W0VlXSkoPzpzfFxcdTAwNzMpKD86dHxcXHUwMDc0KSg/OnJ8XFx1MDA3MikoPzp1fFxcdTAwNzUpKD86Y3xcXHUwMDYzKSg/OnR8XFx1MDA3NCkoPzpvfFxcdTAwNltGZl0pKD86cnxcXHUwMDcyKSJccyo6LyxBUz0vXlxzKlsiW3tdfF5ccyotP1xkezEsMTZ9KFwuXGR7MSwxN30pPyhbRWVdWystXT9cZCspP1xzKiQvO2Z1bmN0aW9uIE9TKGUsdCl7aWYoZT09PSJfX3Byb3RvX18ifHxlPT09ImNvbnN0cnVjdG9yIiYmdCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYicHJvdG90eXBlImluIHQpe3JldHVybn1yZXR1cm4gdH1mdW5jdGlvbiBQUyhlLHQ9e30pe2lmKHR5cGVvZiBlIT0ic3RyaW5nIilyZXR1cm4gZTtpZihlWzBdPT09JyInJiZlW2UubGVuZ3RoLTFdPT09JyInJiZlLmluZGV4T2YoIlxcIik9PT0tMSlyZXR1cm4gZS5zbGljZSgxLC0xKTtjb25zdCBuPWUudHJpbSgpO2lmKG4ubGVuZ3RoPD05KXN3aXRjaChuLnRvTG93ZXJDYXNlKCkpe2Nhc2UidHJ1ZSI6cmV0dXJuITA7Y2FzZSJmYWxzZSI6cmV0dXJuITE7Y2FzZSJ1bmRlZmluZWQiOnJldHVybjtjYXNlIm51bGwiOnJldHVybiBudWxsO2Nhc2UibmFuIjpyZXR1cm4gTnVtYmVyLk5hTjtjYXNlImluZmluaXR5IjpyZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2Nhc2UiLWluZmluaXR5IjpyZXR1cm4gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZfWlmKCFBUy50ZXN0KGUpKXtpZih0LnN0cmljdCl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIltkZXN0cl0gSW52YWxpZCBKU09OIik7cmV0dXJuIGV9dHJ5e2lmKFRTLnRlc3QoZSl8fENTLnRlc3QoZSkpe2lmKHQuc3RyaWN0KXRocm93IG5ldyBFcnJvcigiW2Rlc3RyXSBQb3NzaWJsZSBwcm90b3R5cGUgcG9sbHV0aW9uIik7cmV0dXJuIEpTT04ucGFyc2UoZSxPUyl9cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2gocil7aWYodC5zdHJpY3QpdGhyb3cgcjtyZXR1cm4gZX19Y29uc3QgeHk9LyMvZyxTeT0vJi9nLElTPS9cLy9nLFJTPS89L2csTlM9L1w/L2csVGw9L1wrL2csRFM9LyU1ZS9naSxMUz0vJTYwL2dpLCRTPS8lN2MvZ2ksTVM9LyUyMC9naSxCUz0vJTJmL2dpLHFTPS8lMjUyZi9naTtmdW5jdGlvbiBreShlKXtyZXR1cm4gZW5jb2RlVVJJKCIiK2UpLnJlcGxhY2UoJFMsInwiKX1mdW5jdGlvbiBmdShlKXtyZXR1cm4ga3kodHlwZW9mIGU9PSJzdHJpbmciP2U6SlNPTi5zdHJpbmdpZnkoZSkpLnJlcGxhY2UoVGwsIiUyQiIpLnJlcGxhY2UoTVMsIisiKS5yZXBsYWNlKHh5LCIlMjMiKS5yZXBsYWNlKFN5LCIlMjYiKS5yZXBsYWNlKExTLCJgIikucmVwbGFjZShEUywiXiIpLnJlcGxhY2UoSVMsIiUyRiIpfWZ1bmN0aW9uIGJjKGUpe3JldHVybiBmdShlKS5yZXBsYWNlKFJTLCIlM0QiKX1mdW5jdGlvbiBGUyhlKXtyZXR1cm4ga3koZSkucmVwbGFjZSh4eSwiJTIzIikucmVwbGFjZShOUywiJTNGIikucmVwbGFjZShxUywiJTJGIikucmVwbGFjZShTeSwiJTI2IikucmVwbGFjZShUbCwiJTJCIil9ZnVuY3Rpb24gU2koZT0iIil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoIiIrZSl9Y2F0Y2h7cmV0dXJuIiIrZX19ZnVuY3Rpb24gelMoZSl7cmV0dXJuIFNpKGUucmVwbGFjZShCUywiJTI1MkYiKSl9ZnVuY3Rpb24galMoZSl7cmV0dXJuIFNpKGUucmVwbGFjZShUbCwiICIpKX1mdW5jdGlvbiBWUyhlKXtyZXR1cm4gU2koZS5yZXBsYWNlKFRsLCIgIikpfWZ1bmN0aW9uIE9mKGU9IiIpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlWzBdPT09Ij8iJiYoZT1lLnNsaWNlKDEpKTtmb3IoY29uc3QgbiBvZiBlLnNwbGl0KCImIikpe2NvbnN0IHI9bi5tYXRjaCgvKFtePV0rKT0/KC4qKS8pfHxbXTtpZihyLmxlbmd0aDwyKWNvbnRpbnVlO2NvbnN0IG89alMoclsxXSk7aWYobz09PSJfX3Byb3RvX18ifHxvPT09ImNvbnN0cnVjdG9yIiljb250aW51ZTtjb25zdCBzPVZTKHJbMl18fCIiKTt0W29dPT09dm9pZCAwP3Rbb109czpBcnJheS5pc0FycmF5KHRbb10pP3Rbb10ucHVzaChzKTp0W29dPVt0W29dLHNdfXJldHVybiB0fWZ1bmN0aW9uIEV5KGUsdCl7cmV0dXJuKHR5cGVvZiB0PT0ibnVtYmVyInx8dHlwZW9mIHQ9PSJib29sZWFuIikmJih0PVN0cmluZyh0KSksdD9BcnJheS5pc0FycmF5KHQpP3QubWFwKG49PmAke2JjKGUpfT0ke2Z1KG4pfWApLmpvaW4oIiYiKTpgJHtiYyhlKX09JHtmdSh0KX1gOmJjKGUpfWZ1bmN0aW9uIFVTKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5maWx0ZXIodD0+ZVt0XSE9PXZvaWQgMCkubWFwKHQ9PkV5KHQsZVt0XSkpLmZpbHRlcihCb29sZWFuKS5qb2luKCImIil9Y29uc3QgSFM9L15bXHNcd1wwKy4tXXsyLH06KFsvXFxdezEsMn0pLyxXUz0vXltcc1x3XDArLi1dezIsfTooWy9cXF17Mn0pPy8sR1M9L14oWy9cXF1ccyopezIsfVteL1xcXS8sS1M9L15bXHNcMF0qKGJsb2J8ZGF0YXxqYXZhc2NyaXB0fHZic2NyaXB0KTokL2ksUVM9L1wvJHxcL1w/fFwvIy8sWVM9L15cLj9cLy87ZnVuY3Rpb24gTm4oZSx0PXt9KXtyZXR1cm4gdHlwZW9mIHQ9PSJib29sZWFuIiYmKHQ9e2FjY2VwdFJlbGF0aXZlOnR9KSx0LnN0cmljdD9IUy50ZXN0KGUpOldTLnRlc3QoZSl8fCh0LmFjY2VwdFJlbGF0aXZlP0dTLnRlc3QoZSk6ITEpfWZ1bmN0aW9uIEpTKGUpe3JldHVybiEhZSYmS1MudGVzdChlKX1mdW5jdGlvbiBkdShlPSIiLHQpe3JldHVybiB0P1FTLnRlc3QoZSk6ZS5lbmRzV2l0aCgiLyIpfWZ1bmN0aW9uIGtpKGU9IiIsdCl7aWYoIXQpcmV0dXJuKGR1KGUpP2Uuc2xpY2UoMCwtMSk6ZSl8fCIvIjtpZighZHUoZSwhMCkpcmV0dXJuIGV8fCIvIjtsZXQgbj1lLHI9IiI7Y29uc3Qgbz1lLmluZGV4T2YoIiMiKTtvIT09LTEmJihuPWUuc2xpY2UoMCxvKSxyPWUuc2xpY2UobykpO2NvbnN0W3MsLi4uaV09bi5zcGxpdCgiPyIpO3JldHVybigocy5lbmRzV2l0aCgiLyIpP3Muc2xpY2UoMCwtMSk6cyl8fCIvIikrKGkubGVuZ3RoPjA/YD8ke2kuam9pbigiPyIpfWA6IiIpK3J9ZnVuY3Rpb24gVHkoZT0iIix0KXtpZighdClyZXR1cm4gZS5lbmRzV2l0aCgiLyIpP2U6ZSsiLyI7aWYoZHUoZSwhMCkpcmV0dXJuIGV8fCIvIjtsZXQgbj1lLHI9IiI7Y29uc3Qgbz1lLmluZGV4T2YoIiMiKTtpZihvIT09LTEmJihuPWUuc2xpY2UoMCxvKSxyPWUuc2xpY2UobyksIW4pKXJldHVybiByO2NvbnN0W3MsLi4uaV09bi5zcGxpdCgiPyIpO3JldHVybiBzKyIvIisoaS5sZW5ndGg+MD9gPyR7aS5qb2luKCI/Iil9YDoiIikrcn1mdW5jdGlvbiBYUyhlPSIiKXtyZXR1cm4gZS5zdGFydHNXaXRoKCIvIil9ZnVuY3Rpb24gWlMoZT0iIil7cmV0dXJuIFhTKGUpP2U6Ii8iK2V9ZnVuY3Rpb24gZTEoZSx0KXtpZihBeSh0KXx8Tm4oZSkpcmV0dXJuIGU7Y29uc3Qgbj1raSh0KTtpZihlLnN0YXJ0c1dpdGgobikpe2NvbnN0IHI9ZVtuLmxlbmd0aF07aWYoIXJ8fHI9PT0iLyJ8fHI9PT0iPyIpcmV0dXJuIGV9cmV0dXJuIEJpKG4sZSl9ZnVuY3Rpb24gU3AoZSx0KXtpZihBeSh0KSlyZXR1cm4gZTtjb25zdCBuPWtpKHQpO2lmKCFlLnN0YXJ0c1dpdGgobikpcmV0dXJuIGU7Y29uc3Qgcj1lW24ubGVuZ3RoXTtpZihyJiZyIT09Ii8iJiZyIT09Ij8iKXJldHVybiBlO2NvbnN0IG89ZS5zbGljZShuLmxlbmd0aCk7cmV0dXJuIG9bMF09PT0iLyI/bzoiLyIrb31mdW5jdGlvbiBDeShlLHQpe2NvbnN0IG49Q2woZSkscj17Li4uT2Yobi5zZWFyY2gpLC4uLnR9O3JldHVybiBuLnNlYXJjaD1VUyhyKSxuMShuKX1mdW5jdGlvbiBBeShlKXtyZXR1cm4hZXx8ZT09PSIvIn1mdW5jdGlvbiB0MShlKXtyZXR1cm4gZSYmZSE9PSIvIn1mdW5jdGlvbiBCaShlLC4uLnQpe2xldCBuPWV8fCIiO2Zvcihjb25zdCByIG9mIHQuZmlsdGVyKG89PnQxKG8pKSlpZihuKXtjb25zdCBvPXIucmVwbGFjZShZUywiIik7bj1UeShuKStvfWVsc2Ugbj1yO3JldHVybiBufWZ1bmN0aW9uIE95KC4uLmUpe2NvbnN0IHQ9L1wvKD8hXC8pLyxuPWUuZmlsdGVyKEJvb2xlYW4pLHI9W107bGV0IG89MDtmb3IoY29uc3QgaSBvZiBuKWlmKCEoIWl8fGk9PT0iLyIpKXtmb3IoY29uc3RbYSxsXW9mIGkuc3BsaXQodCkuZW50cmllcygpKWlmKCEoIWx8fGw9PT0iLiIpKXtpZihsPT09Ii4uIil7aWYoci5sZW5ndGg9PT0xJiZObihyWzBdKSljb250aW51ZTtyLnBvcCgpLG8tLTtjb250aW51ZX1pZihhPT09MSYmcltyLmxlbmd0aC0xXT8uZW5kc1dpdGgoIjovIikpe3Jbci5sZW5ndGgtMV0rPSIvIitsO2NvbnRpbnVlfXIucHVzaChsKSxvKyt9fWxldCBzPXIuam9pbigiLyIpO3JldHVybiBvPj0wP25bMF0/LnN0YXJ0c1dpdGgoIi8iKSYmIXMuc3RhcnRzV2l0aCgiLyIpP3M9Ii8iK3M6blswXT8uc3RhcnRzV2l0aCgiLi8iKSYmIXMuc3RhcnRzV2l0aCgiLi8iKSYmKHM9Ii4vIitzKTpzPSIuLi8iLnJlcGVhdCgtMSpvKStzLG5bbi5sZW5ndGgtMV0/LmVuZHNXaXRoKCIvIikmJiFzLmVuZHNXaXRoKCIvIikmJihzKz0iLyIpLHN9ZnVuY3Rpb24gUHkoZSx0KXtyZXR1cm4gU2koa2koZSkpPT09U2koa2kodCkpfWNvbnN0IEl5PVN5bWJvbC5mb3IoInVmbzpwcm90b2NvbFJlbGF0aXZlIik7ZnVuY3Rpb24gQ2woZT0iIix0KXtjb25zdCBuPWUubWF0Y2goL15bXHNcMF0qKGJsb2I6fGRhdGE6fGphdmFzY3JpcHQ6fHZic2NyaXB0OikoLiopL2kpO2lmKG4pe2NvbnN0WyxmLGQ9IiJdPW47cmV0dXJue3Byb3RvY29sOmYudG9Mb3dlckNhc2UoKSxwYXRobmFtZTpkLGhyZWY6ZitkLGF1dGg6IiIsaG9zdDoiIixzZWFyY2g6IiIsaGFzaDoiIn19aWYoIU5uKGUse2FjY2VwdFJlbGF0aXZlOiEwfSkpcmV0dXJuIGtwKGUpO2NvbnN0WyxyPSIiLG8scz0iIl09ZS5yZXBsYWNlKC9cXC9nLCIvIikubWF0Y2goL15bXHNcMF0qKFtcdysuLV17Mix9Oik/XC9cLyhbXi9AXStAKT8oLiopLyl8fFtdO2xldFssaT0iIixhPSIiXT1zLm1hdGNoKC8oW14jLz9dKikoLiopPy8pfHxbXTtyPT09ImZpbGU6IiYmKGE9YS5yZXBsYWNlKC9cLyg/PVtBLVphLXpdOikvLCIiKSk7Y29uc3R7cGF0aG5hbWU6bCxzZWFyY2g6dSxoYXNoOmN9PWtwKGEpO3JldHVybntwcm90b2NvbDpyLnRvTG93ZXJDYXNlKCksYXV0aDpvP28uc2xpY2UoMCxNYXRoLm1heCgwLG8ubGVuZ3RoLTEpKToiIixob3N0OmkscGF0aG5hbWU6bCxzZWFyY2g6dSxoYXNoOmMsW0l5XTohcn19ZnVuY3Rpb24ga3AoZT0iIil7Y29uc3RbdD0iIixuPSIiLHI9IiJdPShlLm1hdGNoKC8oW14jP10qKShcP1teI10qKT8oIy4qKT8vKXx8W10pLnNwbGljZSgxKTtyZXR1cm57cGF0aG5hbWU6dCxzZWFyY2g6bixoYXNoOnJ9fWZ1bmN0aW9uIG4xKGUpe2NvbnN0IHQ9ZS5wYXRobmFtZXx8IiIsbj1lLnNlYXJjaD8oZS5zZWFyY2guc3RhcnRzV2l0aCgiPyIpPyIiOiI/IikrZS5zZWFyY2g6IiIscj1lLmhhc2h8fCIiLG89ZS5hdXRoP2UuYXV0aCsiQCI6IiIscz1lLmhvc3R8fCIiO3JldHVybihlLnByb3RvY29sfHxlW0l5XT8oZS5wcm90b2NvbHx8IiIpKyIvLyI6IiIpK28rcyt0K24rcn1jbGFzcyByMSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKSx0aGlzLm5hbWU9IkZldGNoRXJyb3IiLG4/LmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9bi5jYXVzZSl9fWZ1bmN0aW9uIG8xKGUpe2NvbnN0IHQ9ZS5lcnJvcj8ubWVzc2FnZXx8ZS5lcnJvcj8udG9TdHJpbmcoKXx8IiIsbj1lLnJlcXVlc3Q/Lm1ldGhvZHx8ZS5vcHRpb25zPy5tZXRob2R8fCJHRVQiLHI9ZS5yZXF1ZXN0Py51cmx8fFN0cmluZyhlLnJlcXVlc3QpfHwiLyIsbz1gWyR7bn1dICR7SlNPTi5zdHJpbmdpZnkocil9YCxzPWUucmVzcG9uc2U/YCR7ZS5yZXNwb25zZS5zdGF0dXN9ICR7ZS5yZXNwb25zZS5zdGF0dXNUZXh0fWA6IjxubyByZXNwb25zZT4iLGk9YCR7b306ICR7c30ke3Q/YCAke3R9YDoiIn1gLGE9bmV3IHIxKGksZS5lcnJvcj97Y2F1c2U6ZS5lcnJvcn06dm9pZCAwKTtmb3IoY29uc3QgbCBvZlsicmVxdWVzdCIsIm9wdGlvbnMiLCJyZXNwb25zZSJdKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGwse2dldCgpe3JldHVybiBlW2xdfX0pO2Zvcihjb25zdFtsLHVdb2ZbWyJkYXRhIiwiX2RhdGEiXSxbInN0YXR1cyIsInN0YXR1cyJdLFsic3RhdHVzQ29kZSIsInN0YXR1cyJdLFsic3RhdHVzVGV4dCIsInN0YXR1c1RleHQiXSxbInN0YXR1c01lc3NhZ2UiLCJzdGF0dXNUZXh0Il1dKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGwse2dldCgpe3JldHVybiBlLnJlc3BvbnNlJiZlLnJlc3BvbnNlW3VdfX0pO3JldHVybiBhfWNvbnN0IHMxPW5ldyBTZXQoT2JqZWN0LmZyZWV6ZShbIlBBVENIIiwiUE9TVCIsIlBVVCIsIkRFTEVURSJdKSk7ZnVuY3Rpb24gRXAoZT0iR0VUIil7cmV0dXJuIHMxLmhhcyhlLnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIGkxKGUpe2lmKGU9PT12b2lkIDApcmV0dXJuITE7Y29uc3QgdD10eXBlb2YgZTtyZXR1cm4gdD09PSJzdHJpbmcifHx0PT09Im51bWJlciJ8fHQ9PT0iYm9vbGVhbiJ8fHQ9PT1udWxsPyEwOnQhPT0ib2JqZWN0Ij8hMTpBcnJheS5pc0FycmF5KGUpPyEwOmUuYnVmZmVyfHxlIGluc3RhbmNlb2YgRm9ybURhdGF8fGUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXM/ITE6ZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik9iamVjdCJ8fHR5cGVvZiBlLnRvSlNPTj09ImZ1bmN0aW9uIn1jb25zdCBhMT1uZXcgU2V0KFsiaW1hZ2Uvc3ZnIiwiYXBwbGljYXRpb24veG1sIiwiYXBwbGljYXRpb24veGh0bWwiLCJhcHBsaWNhdGlvbi9odG1sIl0pLGwxPS9eYXBwbGljYXRpb25cLyg/OltcdyEjJCUmKi5eYH4tXSpcKyk/anNvbig7LispPyQvaTtmdW5jdGlvbiBjMShlPSIiKXtpZighZSlyZXR1cm4ianNvbiI7Y29uc3QgdD1lLnNwbGl0KCI7Iikuc2hpZnQoKXx8IiI7cmV0dXJuIGwxLnRlc3QodCk/Impzb24iOnQ9PT0idGV4dC9ldmVudC1zdHJlYW0iPyJzdHJlYW0iOmExLmhhcyh0KXx8dC5zdGFydHNXaXRoKCJ0ZXh0LyIpPyJ0ZXh0IjoiYmxvYiJ9ZnVuY3Rpb24gdTEoZSx0LG4scil7Y29uc3Qgbz1mMSh0Py5oZWFkZXJzPz9lPy5oZWFkZXJzLG4/LmhlYWRlcnMscik7bGV0IHM7cmV0dXJuKG4/LnF1ZXJ5fHxuPy5wYXJhbXN8fHQ/LnBhcmFtc3x8dD8ucXVlcnkpJiYocz17Li4ubj8ucGFyYW1zLC4uLm4/LnF1ZXJ5LC4uLnQ/LnBhcmFtcywuLi50Py5xdWVyeX0pLHsuLi5uLC4uLnQscXVlcnk6cyxwYXJhbXM6cyxoZWFkZXJzOm99fWZ1bmN0aW9uIGYxKGUsdCxuKXtpZighdClyZXR1cm4gbmV3IG4oZSk7Y29uc3Qgcj1uZXcgbih0KTtpZihlKWZvcihjb25zdFtvLHNdb2YgU3ltYm9sLml0ZXJhdG9yIGluIGV8fEFycmF5LmlzQXJyYXkoZSk/ZTpuZXcgbihlKSlyLnNldChvLHMpO3JldHVybiByfWFzeW5jIGZ1bmN0aW9uIHJhKGUsdCl7aWYodClpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBuIG9mIHQpYXdhaXQgbihlKTtlbHNlIGF3YWl0IHQoZSl9Y29uc3QgZDE9bmV3IFNldChbNDA4LDQwOSw0MjUsNDI5LDUwMCw1MDIsNTAzLDUwNF0pLHAxPW5ldyBTZXQoWzEwMSwyMDQsMjA1LDMwNF0pO2Z1bmN0aW9uIFJ5KGU9e30pe2NvbnN0e2ZldGNoOnQ9Z2xvYmFsVGhpcy5mZXRjaCxIZWFkZXJzOm49Z2xvYmFsVGhpcy5IZWFkZXJzLEFib3J0Q29udHJvbGxlcjpyPWdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyfT1lO2FzeW5jIGZ1bmN0aW9uIG8oYSl7Y29uc3QgbD1hLmVycm9yJiZhLmVycm9yLm5hbWU9PT0iQWJvcnRFcnJvciImJiFhLm9wdGlvbnMudGltZW91dHx8ITE7aWYoYS5vcHRpb25zLnJldHJ5IT09ITEmJiFsKXtsZXQgYzt0eXBlb2YgYS5vcHRpb25zLnJldHJ5PT0ibnVtYmVyIj9jPWEub3B0aW9ucy5yZXRyeTpjPUVwKGEub3B0aW9ucy5tZXRob2QpPzA6MTtjb25zdCBmPWEucmVzcG9uc2UmJmEucmVzcG9uc2Uuc3RhdHVzfHw1MDA7aWYoYz4wJiYoQXJyYXkuaXNBcnJheShhLm9wdGlvbnMucmV0cnlTdGF0dXNDb2Rlcyk/YS5vcHRpb25zLnJldHJ5U3RhdHVzQ29kZXMuaW5jbHVkZXMoZik6ZDEuaGFzKGYpKSl7Y29uc3QgZD10eXBlb2YgYS5vcHRpb25zLnJldHJ5RGVsYXk9PSJmdW5jdGlvbiI/YS5vcHRpb25zLnJldHJ5RGVsYXkoYSk6YS5vcHRpb25zLnJldHJ5RGVsYXl8fDA7cmV0dXJuIGQ+MCYmYXdhaXQgbmV3IFByb21pc2UocD0+c2V0VGltZW91dChwLGQpKSxzKGEucmVxdWVzdCx7Li4uYS5vcHRpb25zLHJldHJ5OmMtMX0pfX1jb25zdCB1PW8xKGEpO3Rocm93IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh1LHMpLHV9Y29uc3Qgcz1hc3luYyBmdW5jdGlvbihsLHU9e30pe2NvbnN0IGM9e3JlcXVlc3Q6bCxvcHRpb25zOnUxKGwsdSxlLmRlZmF1bHRzLG4pLHJlc3BvbnNlOnZvaWQgMCxlcnJvcjp2b2lkIDB9O2lmKGMub3B0aW9ucy5tZXRob2QmJihjLm9wdGlvbnMubWV0aG9kPWMub3B0aW9ucy5tZXRob2QudG9VcHBlckNhc2UoKSksYy5vcHRpb25zLm9uUmVxdWVzdCYmKGF3YWl0IHJhKGMsYy5vcHRpb25zLm9uUmVxdWVzdCksYy5vcHRpb25zLmhlYWRlcnMgaW5zdGFuY2VvZiBufHwoYy5vcHRpb25zLmhlYWRlcnM9bmV3IG4oYy5vcHRpb25zLmhlYWRlcnN8fHt9KSkpLHR5cGVvZiBjLnJlcXVlc3Q9PSJzdHJpbmciJiYoYy5vcHRpb25zLmJhc2VVUkwmJihjLnJlcXVlc3Q9ZTEoYy5yZXF1ZXN0LGMub3B0aW9ucy5iYXNlVVJMKSksYy5vcHRpb25zLnF1ZXJ5JiYoYy5yZXF1ZXN0PUN5KGMucmVxdWVzdCxjLm9wdGlvbnMucXVlcnkpLGRlbGV0ZSBjLm9wdGlvbnMucXVlcnkpLCJxdWVyeSJpbiBjLm9wdGlvbnMmJmRlbGV0ZSBjLm9wdGlvbnMucXVlcnksInBhcmFtcyJpbiBjLm9wdGlvbnMmJmRlbGV0ZSBjLm9wdGlvbnMucGFyYW1zKSxjLm9wdGlvbnMuYm9keSYmRXAoYy5vcHRpb25zLm1ldGhvZCkpaWYoaTEoYy5vcHRpb25zLmJvZHkpKXtjb25zdCBwPWMub3B0aW9ucy5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIik7dHlwZW9mIGMub3B0aW9ucy5ib2R5IT0ic3RyaW5nIiYmKGMub3B0aW9ucy5ib2R5PXA9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIj9uZXcgVVJMU2VhcmNoUGFyYW1zKGMub3B0aW9ucy5ib2R5KS50b1N0cmluZygpOkpTT04uc3RyaW5naWZ5KGMub3B0aW9ucy5ib2R5KSkscHx8Yy5vcHRpb25zLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIiksYy5vcHRpb25zLmhlYWRlcnMuaGFzKCJhY2NlcHQiKXx8Yy5vcHRpb25zLmhlYWRlcnMuc2V0KCJhY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIil9ZWxzZSgicGlwZVRvImluIGMub3B0aW9ucy5ib2R5JiZ0eXBlb2YgYy5vcHRpb25zLmJvZHkucGlwZVRvPT0iZnVuY3Rpb24ifHx0eXBlb2YgYy5vcHRpb25zLmJvZHkucGlwZT09ImZ1bmN0aW9uIikmJigiZHVwbGV4ImluIGMub3B0aW9uc3x8KGMub3B0aW9ucy5kdXBsZXg9ImhhbGYiKSk7bGV0IGY7aWYoIWMub3B0aW9ucy5zaWduYWwmJmMub3B0aW9ucy50aW1lb3V0KXtjb25zdCBwPW5ldyByO2Y9c2V0VGltZW91dCgoKT0+e2NvbnN0IG09bmV3IEVycm9yKCJbVGltZW91dEVycm9yXTogVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZCBkdWUgdG8gdGltZW91dCIpO20ubmFtZT0iVGltZW91dEVycm9yIixtLmNvZGU9MjMscC5hYm9ydChtKX0sYy5vcHRpb25zLnRpbWVvdXQpLGMub3B0aW9ucy5zaWduYWw9cC5zaWduYWx9dHJ5e2MucmVzcG9uc2U9YXdhaXQgdChjLnJlcXVlc3QsYy5vcHRpb25zKX1jYXRjaChwKXtyZXR1cm4gYy5lcnJvcj1wLGMub3B0aW9ucy5vblJlcXVlc3RFcnJvciYmYXdhaXQgcmEoYyxjLm9wdGlvbnMub25SZXF1ZXN0RXJyb3IpLGF3YWl0IG8oYyl9ZmluYWxseXtmJiZjbGVhclRpbWVvdXQoZil9aWYoKGMucmVzcG9uc2UuYm9keXx8Yy5yZXNwb25zZS5fYm9keUluaXQpJiYhcDEuaGFzKGMucmVzcG9uc2Uuc3RhdHVzKSYmYy5vcHRpb25zLm1ldGhvZCE9PSJIRUFEIil7Y29uc3QgcD0oYy5vcHRpb25zLnBhcnNlUmVzcG9uc2U/Impzb24iOmMub3B0aW9ucy5yZXNwb25zZVR5cGUpfHxjMShjLnJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKXx8IiIpO3N3aXRjaChwKXtjYXNlImpzb24iOntjb25zdCBtPWF3YWl0IGMucmVzcG9uc2UudGV4dCgpLHk9Yy5vcHRpb25zLnBhcnNlUmVzcG9uc2V8fFBTO2MucmVzcG9uc2UuX2RhdGE9eShtKTticmVha31jYXNlInN0cmVhbSI6e2MucmVzcG9uc2UuX2RhdGE9Yy5yZXNwb25zZS5ib2R5fHxjLnJlc3BvbnNlLl9ib2R5SW5pdDticmVha31kZWZhdWx0OmMucmVzcG9uc2UuX2RhdGE9YXdhaXQgYy5yZXNwb25zZVtwXSgpfX1yZXR1cm4gYy5vcHRpb25zLm9uUmVzcG9uc2UmJmF3YWl0IHJhKGMsYy5vcHRpb25zLm9uUmVzcG9uc2UpLCFjLm9wdGlvbnMuaWdub3JlUmVzcG9uc2VFcnJvciYmYy5yZXNwb25zZS5zdGF0dXM+PTQwMCYmYy5yZXNwb25zZS5zdGF0dXM8NjAwPyhjLm9wdGlvbnMub25SZXNwb25zZUVycm9yJiZhd2FpdCByYShjLGMub3B0aW9ucy5vblJlc3BvbnNlRXJyb3IpLGF3YWl0IG8oYykpOmMucmVzcG9uc2V9LGk9YXN5bmMgZnVuY3Rpb24obCx1KXtyZXR1cm4oYXdhaXQgcyhsLHUpKS5fZGF0YX07cmV0dXJuIGkucmF3PXMsaS5uYXRpdmU9KC4uLmEpPT50KC4uLmEpLGkuY3JlYXRlPShhPXt9LGw9e30pPT5SeSh7Li4uZSwuLi5sLGRlZmF1bHRzOnsuLi5lLmRlZmF1bHRzLC4uLmwuZGVmYXVsdHMsLi4uYX19KSxpfWNvbnN0IEdhPShmdW5jdGlvbigpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPCJ1IilyZXR1cm4gZ2xvYmFsVGhpcztpZih0eXBlb2Ygc2VsZjwidSIpcmV0dXJuIHNlbGY7aWYodHlwZW9mIHdpbmRvdzwidSIpcmV0dXJuIHdpbmRvdztpZih0eXBlb2YgZ2xvYmFsPCJ1IilyZXR1cm4gZ2xvYmFsO3Rocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGxvY2F0ZSBnbG9iYWwgb2JqZWN0Iil9KSgpLG0xPUdhLmZldGNoPyguLi5lKT0+R2EuZmV0Y2goLi4uZSk6KCk9PlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiW29mZXRjaF0gZ2xvYmFsLmZldGNoIGlzIG5vdCBzdXBwb3J0ZWQhIikpLGgxPUdhLkhlYWRlcnMsZzE9R2EuQWJvcnRDb250cm9sbGVyLHkxPVJ5KHtmZXRjaDptMSxIZWFkZXJzOmgxLEFib3J0Q29udHJvbGxlcjpnMX0pLE55PXkxLHYxPSgpPT53aW5kb3c/Ll9fTlVYVF9fPy5jb25maWd8fHdpbmRvdz8udXNlTnV4dEFwcD8uKCkucGF5bG9hZD8uY29uZmlnLFBmPSgpPT52MSgpLmFwcCxiMT0oKT0+UGYoKS5iYXNlVVJMLHcxPSgpPT5QZigpLmJ1aWxkQXNzZXRzRGlyLElmPSguLi5lKT0+T3koRHkoKSx3MSgpLC4uLmUpLER5PSguLi5lKT0+e2NvbnN0IHQ9UGYoKSxuPXQuY2RuVVJMfHx0LmJhc2VVUkw7cmV0dXJuIGUubGVuZ3RoP095KG4sLi4uZSk6bn07Z2xvYmFsVGhpcy5fX2J1aWxkQXNzZXRzVVJMPUlmLGdsb2JhbFRoaXMuX19wdWJsaWNBc3NldHNVUkw9RHk7Z2xvYmFsVGhpcy4kZmV0Y2h8fChnbG9iYWxUaGlzLiRmZXRjaD1OeS5jcmVhdGUoe2Jhc2VVUkw6YjEoKX0pKTsiZ2xvYmFsImluIGdsb2JhbFRoaXN8fChnbG9iYWxUaGlzLmdsb2JhbD1nbG9iYWxUaGlzKTtmdW5jdGlvbiBwdShlLHQ9e30sbil7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdLHM9bj9gJHtufToke3J9YDpyO3R5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGw/cHUobyx0LHMpOnR5cGVvZiBvPT0iZnVuY3Rpb24iJiYodFtzXT1vKX1yZXR1cm4gdH1jb25zdCBMeT0oKCk9PntpZihjb25zb2xlLmNyZWF0ZVRhc2spcmV0dXJuIGNvbnNvbGUuY3JlYXRlVGFzaztjb25zdCBlPXtydW46dD0+dCgpfTtyZXR1cm4oKT0+ZX0pKCk7ZnVuY3Rpb24gJHkoZSx0LG4scil7Zm9yKGxldCBvPW47bzxlLmxlbmd0aDtvKz0xKXRyeXtjb25zdCBzPXI/ci5ydW4oKCk9PmVbb10oLi4udCkpOmVbb10oLi4udCk7aWYocyYmdHlwZW9mIHMudGhlbj09ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4oKCk9PiR5KGUsdCxvKzEscikpfWNhdGNoKHMpe3JldHVybiBQcm9taXNlLnJlamVjdChzKX19ZnVuY3Rpb24gXzEoZSx0LG4pe2lmKGUubGVuZ3RoPjApcmV0dXJuICR5KGUsdCwwLEx5KG4pKX1mdW5jdGlvbiB4MShlLHQsbil7aWYoZS5sZW5ndGg+MCl7Y29uc3Qgcj1MeShuKTtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAobz0+ci5ydW4oKCk9Pm8oLi4udCkpKSl9fWZ1bmN0aW9uIHdjKGUsdCl7Zm9yKGNvbnN0IG4gb2ZbLi4uZV0pbih0KX12YXIgUzE9Y2xhc3N7X2hvb2tzO19iZWZvcmU7X2FmdGVyO19kZXByZWNhdGVkSG9va3M7X2RlcHJlY2F0ZWRNZXNzYWdlcztjb25zdHJ1Y3Rvcigpe3RoaXMuX2hvb2tzPXt9LHRoaXMuX2JlZm9yZT12b2lkIDAsdGhpcy5fYWZ0ZXI9dm9pZCAwLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcz12b2lkIDAsdGhpcy5fZGVwcmVjYXRlZEhvb2tzPXt9LHRoaXMuaG9vaz10aGlzLmhvb2suYmluZCh0aGlzKSx0aGlzLmNhbGxIb29rPXRoaXMuY2FsbEhvb2suYmluZCh0aGlzKSx0aGlzLmNhbGxIb29rV2l0aD10aGlzLmNhbGxIb29rV2l0aC5iaW5kKHRoaXMpfWhvb2soZSx0LG49e30pe2lmKCFlfHx0eXBlb2YgdCE9ImZ1bmN0aW9uIilyZXR1cm4oKT0+e307Y29uc3Qgcj1lO2xldCBvO2Zvcig7dGhpcy5fZGVwcmVjYXRlZEhvb2tzW2VdOylvPXRoaXMuX2RlcHJlY2F0ZWRIb29rc1tlXSxlPW8udG87aWYobyYmIW4uYWxsb3dEZXByZWNhdGVkKXtsZXQgcz1vLm1lc3NhZ2U7c3x8KHM9YCR7cn0gaG9vayBoYXMgYmVlbiBkZXByZWNhdGVkYCsoby50bz9gLCBwbGVhc2UgdXNlICR7by50b31gOiIiKSksdGhpcy5fZGVwcmVjYXRlZE1lc3NhZ2VzfHwodGhpcy5fZGVwcmVjYXRlZE1lc3NhZ2VzPW5ldyBTZXQpLHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5oYXMocyl8fHRoaXMuX2RlcHJlY2F0ZWRNZXNzYWdlcy5hZGQocyl9aWYoIXQubmFtZSl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIm5hbWUiLHtnZXQ6KCk9PiJfIitlLnJlcGxhY2UoL1xXKy9nLCJfIikrIl9ob29rX2NiIixjb25maWd1cmFibGU6ITB9KX1jYXRjaHt9cmV0dXJuIHRoaXMuX2hvb2tzW2VdPXRoaXMuX2hvb2tzW2VdfHxbXSx0aGlzLl9ob29rc1tlXS5wdXNoKHQpLCgpPT57dCYmKHRoaXMucmVtb3ZlSG9vayhlLHQpLHQ9dm9pZCAwKX19aG9va09uY2UoZSx0KXtsZXQgbixyPSguLi5vKT0+KHR5cGVvZiBuPT0iZnVuY3Rpb24iJiZuKCksbj12b2lkIDAscj12b2lkIDAsdCguLi5vKSk7cmV0dXJuIG49dGhpcy5ob29rKGUsciksbn1yZW1vdmVIb29rKGUsdCl7Y29uc3Qgbj10aGlzLl9ob29rc1tlXTtpZihuKXtjb25zdCByPW4uaW5kZXhPZih0KTtyIT09LTEmJm4uc3BsaWNlKHIsMSksbi5sZW5ndGg9PT0wJiYodGhpcy5faG9va3NbZV09dm9pZCAwKX19Y2xlYXJIb29rKGUpe3RoaXMuX2hvb2tzW2VdPXZvaWQgMH1kZXByZWNhdGVIb29rKGUsdCl7dGhpcy5fZGVwcmVjYXRlZEhvb2tzW2VdPXR5cGVvZiB0PT0ic3RyaW5nIj97dG86dH06dDtjb25zdCBuPXRoaXMuX2hvb2tzW2VdfHxbXTt0aGlzLl9ob29rc1tlXT12b2lkIDA7Zm9yKGNvbnN0IHIgb2Ygbil0aGlzLmhvb2soZSxyKX1kZXByZWNhdGVIb29rcyhlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuZGVwcmVjYXRlSG9vayh0LGVbdF0pfWFkZEhvb2tzKGUpe2NvbnN0IHQ9cHUoZSksbj1PYmplY3Qua2V5cyh0KS5tYXAocj0+dGhpcy5ob29rKHIsdFtyXSkpO3JldHVybigpPT57Zm9yKGNvbnN0IHIgb2YgbilyKCk7bi5sZW5ndGg9MH19cmVtb3ZlSG9va3MoZSl7Y29uc3QgdD1wdShlKTtmb3IoY29uc3QgbiBpbiB0KXRoaXMucmVtb3ZlSG9vayhuLHRbbl0pfXJlbW92ZUFsbEhvb2tzKCl7dGhpcy5faG9va3M9e319Y2FsbEhvb2soZSwuLi50KXtyZXR1cm4gdGhpcy5jYWxsSG9va1dpdGgoXzEsZSx0KX1jYWxsSG9va1BhcmFsbGVsKGUsLi4udCl7cmV0dXJuIHRoaXMuY2FsbEhvb2tXaXRoKHgxLGUsdCl9Y2FsbEhvb2tXaXRoKGUsdCxuKXtjb25zdCByPXRoaXMuX2JlZm9yZXx8dGhpcy5fYWZ0ZXI/e25hbWU6dCxhcmdzOm4sY29udGV4dDp7fX06dm9pZCAwO3RoaXMuX2JlZm9yZSYmd2ModGhpcy5fYmVmb3JlLHIpO2NvbnN0IG89ZSh0aGlzLl9ob29rc1t0XT9bLi4udGhpcy5faG9va3NbdF1dOltdLG4sdCk7cmV0dXJuIG8gaW5zdGFuY2VvZiBQcm9taXNlP28uZmluYWxseSgoKT0+e3RoaXMuX2FmdGVyJiZyJiZ3Yyh0aGlzLl9hZnRlcixyKX0pOih0aGlzLl9hZnRlciYmciYmd2ModGhpcy5fYWZ0ZXIsciksbyl9YmVmb3JlRWFjaChlKXtyZXR1cm4gdGhpcy5fYmVmb3JlPXRoaXMuX2JlZm9yZXx8W10sdGhpcy5fYmVmb3JlLnB1c2goZSksKCk9PntpZih0aGlzLl9iZWZvcmUhPT12b2lkIDApe2NvbnN0IHQ9dGhpcy5fYmVmb3JlLmluZGV4T2YoZSk7dCE9PS0xJiZ0aGlzLl9iZWZvcmUuc3BsaWNlKHQsMSl9fX1hZnRlckVhY2goZSl7cmV0dXJuIHRoaXMuX2FmdGVyPXRoaXMuX2FmdGVyfHxbXSx0aGlzLl9hZnRlci5wdXNoKGUpLCgpPT57aWYodGhpcy5fYWZ0ZXIhPT12b2lkIDApe2NvbnN0IHQ9dGhpcy5fYWZ0ZXIuaW5kZXhPZihlKTt0IT09LTEmJnRoaXMuX2FmdGVyLnNwbGljZSh0LDEpfX19fTtmdW5jdGlvbiBNeSgpe3JldHVybiBuZXcgUzF9ZnVuY3Rpb24gazEoZT17fSl7bGV0IHQsbj0hMTtjb25zdCByPWk9PntpZih0JiZ0IT09aSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgY29uZmxpY3QiKX07bGV0IG87aWYoZS5hc3luY0NvbnRleHQpe2NvbnN0IGk9ZS5Bc3luY0xvY2FsU3RvcmFnZXx8Z2xvYmFsVGhpcy5Bc3luY0xvY2FsU3RvcmFnZTtpJiYobz1uZXcgaSl9Y29uc3Qgcz0oKT0+e2lmKG8pe2NvbnN0IGk9by5nZXRTdG9yZSgpO2lmKGkhPT12b2lkIDApcmV0dXJuIGl9cmV0dXJuIHR9O3JldHVybnt1c2U6KCk9Pntjb25zdCBpPXMoKTtpZihpPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBpcyBub3QgYXZhaWxhYmxlIik7cmV0dXJuIGl9LHRyeVVzZTooKT0+cygpLHNldDooaSxhKT0+e2F8fHIoaSksdD1pLG49ITB9LHVuc2V0OigpPT57dD12b2lkIDAsbj0hMX0sY2FsbDooaSxhKT0+e3IoaSksdD1pO3RyeXtyZXR1cm4gbz9vLnJ1bihpLGEpOmEoKX1maW5hbGx5e258fCh0PXZvaWQgMCl9fSxhc3luYyBjYWxsQXN5bmMoaSxhKXt0PWk7Y29uc3QgbD0oKT0+e3Q9aX0sdT0oKT0+dD09PWk/bDp2b2lkIDA7bXUuYWRkKHUpO3RyeXtjb25zdCBjPW8/by5ydW4oaSxhKTphKCk7cmV0dXJuIG58fCh0PXZvaWQgMCksYXdhaXQgY31maW5hbGx5e211LmRlbGV0ZSh1KX19fX1mdW5jdGlvbiBFMShlPXt9KXtjb25zdCB0PXt9O3JldHVybntnZXQobixyPXt9KXtyZXR1cm4gdFtuXXx8KHRbbl09azEoey4uLmUsLi4ucn0pKSx0W25dfX19Y29uc3QgS2E9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSxUcD0iX191bmN0eF9fIixUMT1LYVtUcF18fChLYVtUcF09RTEoKSksQzE9KGUsdD17fSk9PlQxLmdldChlLHQpLENwPSJfX3VuY3R4X2FzeW5jX2hhbmRsZXJzX18iLG11PUthW0NwXXx8KEthW0NwXT1uZXcgU2V0KTtmdW5jdGlvbiBncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBvIG9mIG11KXtjb25zdCBzPW8oKTtzJiZ0LnB1c2gocyl9Y29uc3Qgbj0oKT0+e2Zvcihjb25zdCBvIG9mIHQpbygpfTtsZXQgcj1lKCk7cmV0dXJuIHImJnR5cGVvZiByPT0ib2JqZWN0IiYmImNhdGNoImluIHImJihyPXIuY2F0Y2gobz0+e3Rocm93IG4oKSxvfSkpLFtyLG5dfWNvbnN0IEFwPSExLE9wPSExLEExPSExLFBwPXtpZDoiX19udXh0LWxvYWRlciJ9LE8xPXtjb21wb25lbnROYW1lOiJOdXh0TGluayIscHJlZmV0Y2g6ITAscHJlZmV0Y2hPbjp7dmlzaWJpbGl0eTohMH19LFAxPXtkZWVwOiExfSxJMT17fSxSMT0iI19fbnV4dCIsQnk9Im51eHQtYXBwIixJcD0zNmU1LE4xPSJ2aXRlOnByZWxvYWRFcnJvciI7ZnVuY3Rpb24gcXkoZT1CeSl7cmV0dXJuIEMxKGUse2FzeW5jQ29udGV4dDohMX0pfWNvbnN0IEQxPSJfX251eHRfcGx1Z2luIjtmdW5jdGlvbiBMMShlKXtsZXQgdD0wO2NvbnN0IG49e19pZDplLmlkfHxCeXx8Im51eHQtYXBwIixfc2NvcGU6TmkoKSxwcm92aWRlOnZvaWQgMCx2ZXJzaW9uczp7Z2V0IG51eHQoKXtyZXR1cm4iNC40LjIifSxnZXQgdnVlKCl7cmV0dXJuIG4udnVlQXBwLnZlcnNpb259fSxwYXlsb2FkOlBuKHsuLi5lLnNzckNvbnRleHQ/LnBheWxvYWR8fHt9LGRhdGE6UG4oe30pLHN0YXRlOmJ0KHt9KSxvbmNlOm5ldyBTZXQsX2Vycm9yczpQbih7fSl9KSxzdGF0aWM6e2RhdGE6e319LHJ1bldpdGhDb250ZXh0KG8pe3JldHVybiBuLl9zY29wZS5hY3RpdmUmJiFxcigpP24uX3Njb3BlLnJ1bigoKT0+UnAobixvKSk6UnAobixvKX0saXNIeWRyYXRpbmc6ITAsZGVmZXJIeWRyYXRpb24oKXtpZighbi5pc0h5ZHJhdGluZylyZXR1cm4oKT0+e307dCsrO2xldCBvPSExO3JldHVybigpPT57aWYoIW8mJihvPSEwLHQtLSx0PT09MCkpcmV0dXJuIG4uaXNIeWRyYXRpbmc9ITEsbi5jYWxsSG9vaygiYXBwOnN1c3BlbnNlOnJlc29sdmUiKX19LF9hc3luY0RhdGFQcm9taXNlczp7fSxfYXN5bmNEYXRhOlBuKHt9KSxfc3RhdGU6UG4oe30pLF9wYXlsb2FkUmV2aXZlcnM6e30sLi4uZX07e2NvbnN0IG89d2luZG93Ll9fTlVYVF9fO2lmKG8pZm9yKGNvbnN0IHMgaW4gbylzd2l0Y2gocyl7Y2FzZSJkYXRhIjpjYXNlInN0YXRlIjpjYXNlIl9lcnJvcnMiOk9iamVjdC5hc3NpZ24obi5wYXlsb2FkW3NdLG9bc10pO2JyZWFrO2RlZmF1bHQ6bi5wYXlsb2FkW3NdPW9bc119fW4uaG9va3M9TXkoKSxuLmhvb2s9bi5ob29rcy5ob29rO3tjb25zdCBvPW4uaG9va3MuY2FsbEhvb2s7bi5ob29rcy5jYWxsSG9vaz0ocywuLi5pKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+byhzLC4uLmkpKX1uLmNhbGxIb29rPW4uaG9va3MuY2FsbEhvb2ssbi5wcm92aWRlPShvLHMpPT57Y29uc3QgaT0iJCIrbztvYShuLGkscyksb2Eobi52dWVBcHAuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsaSxzKX0sb2Eobi52dWVBcHAsIiRudXh0IixuKSxvYShuLnZ1ZUFwcC5jb25maWcuZ2xvYmFsUHJvcGVydGllcywiJG51eHQiLG4pO3t3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihOMSxzPT57bi5jYWxsSG9vaygiYXBwOmNodW5rRXJyb3IiLHtlcnJvcjpzLnBheWxvYWR9KSxzLnBheWxvYWQubWVzc2FnZS5pbmNsdWRlcygiVW5hYmxlIHRvIHByZWxvYWQgQ1NTIikmJnMucHJldmVudERlZmF1bHQoKX0pLHdpbmRvdy51c2VOdXh0QXBwfHw9QmU7Y29uc3Qgbz1uLmhvb2soImFwcDplcnJvciIsKC4uLnMpPT57fSk7bi5ob29rKCJhcHA6bW91bnRlZCIsbyl9Y29uc3Qgcj1uLnBheWxvYWQuY29uZmlnO3JldHVybiBuLnByb3ZpZGUoImNvbmZpZyIsciksbn1mdW5jdGlvbiAkMShlLHQpe3QuaG9va3MmJmUuaG9va3MuYWRkSG9va3ModC5ob29rcyl9YXN5bmMgZnVuY3Rpb24gTTEoZSx0KXtpZih0eXBlb2YgdD09ImZ1bmN0aW9uIil7Y29uc3R7cHJvdmlkZTpufT1hd2FpdCBlLnJ1bldpdGhDb250ZXh0KCgpPT50KGUpKXx8e307aWYobiYmdHlwZW9mIG49PSJvYmplY3QiKWZvcihjb25zdCByIGluIG4pZS5wcm92aWRlKHIsbltyXSl9fWFzeW5jIGZ1bmN0aW9uIEIxKGUsdCl7Y29uc3Qgbj1uZXcgU2V0LHI9W10sbz1bXTtsZXQgcyxpPTA7YXN5bmMgZnVuY3Rpb24gYShsKXtjb25zdCB1PWwuZGVwZW5kc09uPy5maWx0ZXIoYz0+dC5zb21lKGY9PmYuX25hbWU9PT1jKSYmIW4uaGFzKGMpKT8/W107aWYodS5sZW5ndGg+MClyLnB1c2goW25ldyBTZXQodSksbF0pO2Vsc2V7Y29uc3QgYz1NMShlLGwpLnRoZW4oYXN5bmMoKT0+e2wuX25hbWUmJihuLmFkZChsLl9uYW1lKSxhd2FpdCBQcm9taXNlLmFsbChyLm1hcChhc3luYyhbZixkXSk9PntmLmhhcyhsLl9uYW1lKSYmKGYuZGVsZXRlKGwuX25hbWUpLGYuc2l6ZT09PTAmJihpKyssYXdhaXQgYShkKSkpfSkpKX0pLmNhdGNoKGY9PntpZighbC5wYXJhbGxlbCYmIWUucGF5bG9hZC5lcnJvcil0aHJvdyBmO3N8fD1mfSk7bC5wYXJhbGxlbD9vLnB1c2goYyk6YXdhaXQgY319Zm9yKGNvbnN0IGwgb2YgdCkkMShlLGwpO2Zvcihjb25zdCBsIG9mIHQpYXdhaXQgYShsKTtpZihhd2FpdCBQcm9taXNlLmFsbChvKSxpKWZvcihsZXQgbD0wO2w8aTtsKyspYXdhaXQgUHJvbWlzZS5hbGwobyk7aWYocyl0aHJvdyBlLnBheWxvYWQuZXJyb3J8fHN9ZnVuY3Rpb24gbHQoZSl7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIGU7Y29uc3QgdD1lLl9uYW1lfHxlLm5hbWU7cmV0dXJuIGRlbGV0ZSBlLm5hbWUsT2JqZWN0LmFzc2lnbihlLnNldHVwfHwoKCk9Pnt9KSxlLHtbRDFdOiEwLF9uYW1lOnR9KX1jb25zdCBxMT1sdDtmdW5jdGlvbiBScChlLHQsbil7Y29uc3Qgcj0oKT0+dCgpO3JldHVybiBxeShlLl9pZCkuc2V0KGUpLGUudnVlQXBwLnJ1bldpdGhDb250ZXh0KHIpfWZ1bmN0aW9uIEYxKGUpe2xldCB0O3JldHVybiBMaSgpJiYodD1tdCgpPy5hcHBDb250ZXh0LmFwcC4kbnV4dCksdHx8PXF5KGUpLnRyeVVzZSgpLHR8fG51bGx9ZnVuY3Rpb24gQmUoZSl7Y29uc3QgdD1GMShlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIltudXh0XSBpbnN0YW5jZSB1bmF2YWlsYWJsZSIpO3JldHVybiB0fWZ1bmN0aW9uIGZvKGUpe3JldHVybiBCZSgpLiRjb25maWd9ZnVuY3Rpb24gb2EoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldDooKT0+bn0pfWZ1bmN0aW9uIF9jKGUpe2lmKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuITE7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQhPT1udWxsJiZ0IT09T2JqZWN0LnByb3RvdHlwZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpIT09bnVsbHx8U3ltYm9sLml0ZXJhdG9yIGluIGU/ITE6U3ltYm9sLnRvU3RyaW5nVGFnIGluIGU/T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09IltvYmplY3QgTW9kdWxlXSI6ITB9ZnVuY3Rpb24gaHUoZSx0LG49Ii4iLHIpe2lmKCFfYyh0KSlyZXR1cm4gaHUoZSx7fSxuLHIpO2NvbnN0IG89ey4uLnR9O2Zvcihjb25zdCBzIG9mIE9iamVjdC5rZXlzKGUpKXtpZihzPT09Il9fcHJvdG9fXyJ8fHM9PT0iY29uc3RydWN0b3IiKWNvbnRpbnVlO2NvbnN0IGk9ZVtzXTtpIT1udWxsJiYociYmcihvLHMsaSxuKXx8KEFycmF5LmlzQXJyYXkoaSkmJkFycmF5LmlzQXJyYXkob1tzXSk/b1tzXT1bLi4uaSwuLi5vW3NdXTpfYyhpKSYmX2Mob1tzXSk/b1tzXT1odShpLG9bc10sKG4/YCR7bn0uYDoiIikrcy50b1N0cmluZygpLHIpOm9bc109aSkpfXJldHVybiBvfWZ1bmN0aW9uIEZ5KGUpe3JldHVybiguLi50KT0+dC5yZWR1Y2UoKG4scik9Pmh1KG4sciwiIixlKSx7fSl9Y29uc3QgbW49RnkoKSx6MT1GeSgoZSx0LG4pPT57aWYoZVt0XSE9PXZvaWQgMCYmdHlwZW9mIG49PSJmdW5jdGlvbiIpcmV0dXJuIGVbdF09bihlW3RdKSwhMH0pO2Z1bmN0aW9uIGoxKGUsdCl7dHJ5e3JldHVybiB0IGluIGV9Y2F0Y2h7cmV0dXJuITF9fWNsYXNzIE5wIGV4dGVuZHMgRXJyb3J7c3RhdGljIF9faDNfZXJyb3JfXz0hMDtzdGF0dXNDb2RlPTUwMDtmYXRhbD0hMTt1bmhhbmRsZWQ9ITE7c3RhdHVzTWVzc2FnZTtkYXRhO2NhdXNlO2NvbnN0cnVjdG9yKHQsbj17fSl7c3VwZXIodCxuKSxuLmNhdXNlJiYhdGhpcy5jYXVzZSYmKHRoaXMuY2F1c2U9bi5jYXVzZSl9dG9KU09OKCl7Y29uc3QgdD17bWVzc2FnZTp0aGlzLm1lc3NhZ2Usc3RhdHVzQ29kZTpndSh0aGlzLnN0YXR1c0NvZGUsNTAwKX07cmV0dXJuIHRoaXMuc3RhdHVzTWVzc2FnZSYmKHQuc3RhdHVzTWVzc2FnZT16eSh0aGlzLnN0YXR1c01lc3NhZ2UpKSx0aGlzLmRhdGEhPT12b2lkIDAmJih0LmRhdGE9dGhpcy5kYXRhKSx0fX1mdW5jdGlvbiBWMShlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIG5ldyBOcChlKTtpZihVMShlKSlyZXR1cm4gZTtjb25zdCB0PW5ldyBOcChlLm1lc3NhZ2U/P2Uuc3RhdHVzTWVzc2FnZT8/IiIse2NhdXNlOmUuY2F1c2V8fGV9KTtpZihqMShlLCJzdGFjayIpKXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic3RhY2siLHtnZXQoKXtyZXR1cm4gZS5zdGFja319KX1jYXRjaHt0cnl7dC5zdGFjaz1lLnN0YWNrfWNhdGNoe319aWYoZS5kYXRhJiYodC5kYXRhPWUuZGF0YSksZS5zdGF0dXNDb2RlP3Quc3RhdHVzQ29kZT1ndShlLnN0YXR1c0NvZGUsdC5zdGF0dXNDb2RlKTplLnN0YXR1cyYmKHQuc3RhdHVzQ29kZT1ndShlLnN0YXR1cyx0LnN0YXR1c0NvZGUpKSxlLnN0YXR1c01lc3NhZ2U/dC5zdGF0dXNNZXNzYWdlPWUuc3RhdHVzTWVzc2FnZTplLnN0YXR1c1RleHQmJih0LnN0YXR1c01lc3NhZ2U9ZS5zdGF0dXNUZXh0KSx0LnN0YXR1c01lc3NhZ2Upe2NvbnN0IG49dC5zdGF0dXNNZXNzYWdlLHI9enkodC5zdGF0dXNNZXNzYWdlKX1yZXR1cm4gZS5mYXRhbCE9PXZvaWQgMCYmKHQuZmF0YWw9ZS5mYXRhbCksZS51bmhhbmRsZWQhPT12b2lkIDAmJih0LnVuaGFuZGxlZD1lLnVuaGFuZGxlZCksdH1mdW5jdGlvbiBVMShlKXtyZXR1cm4gZT8uY29uc3RydWN0b3I/Ll9faDNfZXJyb3JfXz09PSEwfWNvbnN0IEgxPS9bXlx1MDAwOVx1MDAyMC1cdTAwN0VdL2c7ZnVuY3Rpb24genkoZT0iIil7cmV0dXJuIGUucmVwbGFjZShIMSwiIil9ZnVuY3Rpb24gZ3UoZSx0PTIwMCl7cmV0dXJuIWV8fCh0eXBlb2YgZT09InN0cmluZyImJihlPU51bWJlci5wYXJzZUludChlLDEwKSksZTwxMDB8fGU+OTk5KT90OmV9Y29uc3Qgank9U3ltYm9sKCJsYXlvdXQtbWV0YSIpLHFvPVN5bWJvbCgicm91dGUiKTtmdW5jdGlvbiBXMShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOltlXX1pbXBvcnQubWV0YS51cmwucmVwbGFjZSgvXC9hcHBcLy4qJC8sIi8iKTtjb25zdCBKdD0oKT0+QmUoKT8uJHJvdXRlcixBbD0oKT0+TGkoKT9LZShxbyxCZSgpLl9yb3V0ZSk6QmUoKS5fcm91dGU7Y29uc3QgRzE9KCk9Pnt0cnl7aWYoQmUoKS5fcHJvY2Vzc2luZ01pZGRsZXdhcmUpcmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITF9LEZvPShlLHQpPT57ZXx8PSIvIjtjb25zdCBuPXR5cGVvZiBlPT0ic3RyaW5nIj9lOiJwYXRoImluIGU/eXUoZSk6SnQoKS5yZXNvbHZlKGUpLmhyZWY7aWYodD8ub3Blbil7Y29uc3R7dGFyZ2V0OnU9Il9ibGFuayIsd2luZG93RmVhdHVyZXM6Yz17fX09dC5vcGVuLGY9W107Zm9yKGNvbnN0W2QscF1vZiBPYmplY3QuZW50cmllcyhjKSlwIT09dm9pZCAwJiZmLnB1c2goYCR7ZC50b0xvd2VyQ2FzZSgpfT0ke3B9YCk7cmV0dXJuIG9wZW4obix1LGYuam9pbigiLCAiKSksUHJvbWlzZS5yZXNvbHZlKCl9Y29uc3Qgcj1ObihuLHthY2NlcHRSZWxhdGl2ZTohMH0pLG89dD8uZXh0ZXJuYWx8fHI7aWYobyl7aWYoIXQ/LmV4dGVybmFsKXRocm93IG5ldyBFcnJvcigiTmF2aWdhdGluZyB0byBhbiBleHRlcm5hbCBVUkwgaXMgbm90IGFsbG93ZWQgYnkgZGVmYXVsdC4gVXNlIGBuYXZpZ2F0ZVRvKHVybCwgeyBleHRlcm5hbDogdHJ1ZSB9KWAuIik7Y29uc3R7cHJvdG9jb2w6dX09bmV3IFVSTChuLHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtpZih1JiZKUyh1KSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBuYXZpZ2F0ZSB0byBhIFVSTCB3aXRoICcke3V9JyBwcm90b2NvbC5gKX1jb25zdCBzPUcxKCk7aWYoIW8mJnMpe2lmKHQ/LnJlcGxhY2Upe2lmKHR5cGVvZiBlPT0ic3RyaW5nIil7Y29uc3R7cGF0aG5hbWU6dSxzZWFyY2g6YyxoYXNoOmZ9PUNsKGUpO3JldHVybntwYXRoOnUsLi4uYyYme3F1ZXJ5Ok9mKGMpfSwuLi5mJiZ7aGFzaDpmfSxyZXBsYWNlOiEwfX1yZXR1cm57Li4uZSxyZXBsYWNlOiEwfX1yZXR1cm4gZX1jb25zdCBpPUp0KCksYT1CZSgpO2lmKG8pcmV0dXJuIGEuX3Njb3BlLnN0b3AoKSx0Py5yZXBsYWNlP2xvY2F0aW9uLnJlcGxhY2Uobik6bG9jYXRpb24uaHJlZj1uLHM/YS5pc0h5ZHJhdGluZz9uZXcgUHJvbWlzZSgoKT0+e30pOiExOlByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGw9dHlwZW9mIGU9PSJzdHJpbmciP1Z5KGUpOmU7cmV0dXJuIHQ/LnJlcGxhY2U/aS5yZXBsYWNlKGwpOmkucHVzaChsKX07ZnVuY3Rpb24geXUoZSl7cmV0dXJuIEN5KGUucGF0aHx8IiIsZS5xdWVyeXx8e30pKyhlLmhhc2h8fCIiKX1mdW5jdGlvbiBWeShlKXtjb25zdCB0PUNsKGUpO3JldHVybiBGUyh6Uyh0LnBhdGhuYW1lKSkrdC5zZWFyY2grdC5oYXNofWNvbnN0IFV5PSJfX251eHRfZXJyb3IiLE9sPSgpPT55dChCZSgpLnBheWxvYWQsImVycm9yIiksQ289ZT0+e2NvbnN0IHQ9c28oZSk7dHJ5e2NvbnN0IG49T2woKTtCZSgpLmhvb2tzLmNhbGxIb29rKCJhcHA6ZXJyb3IiLHQpLG4udmFsdWV8fD10fWNhdGNoe3Rocm93IHR9cmV0dXJuIHR9LEsxPWFzeW5jKGU9e30pPT57Y29uc3QgdD1CZSgpLG49T2woKTt0LmNhbGxIb29rKCJhcHA6ZXJyb3I6Y2xlYXJlZCIsZSksZS5yZWRpcmVjdCYmYXdhaXQgSnQoKS5yZXBsYWNlKGUucmVkaXJlY3QpLG4udmFsdWU9dm9pZCAwfSxIeT1lPT4hIWUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmVXkgaW4gZSxzbz1lPT57dHlwZW9mIGUhPSJzdHJpbmciJiZlLnN0YXR1c1RleHQmJihlLm1lc3NhZ2U/Pz1lLnN0YXR1c1RleHQpO2NvbnN0IHQ9VjEoZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFV5LHt2YWx1ZTohMCxjb25maWd1cmFibGU6ITEsd3JpdGFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic3RhdHVzIix7Z2V0OigpPT50LnN0YXR1c0NvZGUsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInN0YXR1c1RleHQiLHtnZXQ6KCk9PnQuc3RhdHVzTWVzc2FnZSxjb25maWd1cmFibGU6ITB9KSx0fTtsZXQgV3k7Y29uc3Qga3M9ZT0+V3k9ZSxHeT1TeW1ib2woKTtmdW5jdGlvbiB2dShlKXtyZXR1cm4gZSYmdHlwZW9mIGU9PSJvYmplY3QiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT0iW29iamVjdCBPYmplY3RdIiYmdHlwZW9mIGUudG9KU09OIT0iZnVuY3Rpb24ifXZhciB1aTsoZnVuY3Rpb24oZSl7ZS5kaXJlY3Q9ImRpcmVjdCIsZS5wYXRjaE9iamVjdD0icGF0Y2ggb2JqZWN0IixlLnBhdGNoRnVuY3Rpb249InBhdGNoIGZ1bmN0aW9uIn0pKHVpfHwodWk9e30pKTtmdW5jdGlvbiBRMSgpe2NvbnN0IGU9TmkoITApLHQ9ZS5ydW4oKCk9Pkcoe30pKTtsZXQgbj1bXSxyPVtdO2NvbnN0IG89TG8oe2luc3RhbGwocyl7a3Mobyksby5fYT1zLHMucHJvdmlkZShHeSxvKSxzLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLiRwaW5pYT1vLHIuZm9yRWFjaChpPT5uLnB1c2goaSkpLHI9W119LHVzZShzKXtyZXR1cm4gdGhpcy5fYT9uLnB1c2gocyk6ci5wdXNoKHMpLHRoaXN9LF9wOm4sX2E6bnVsbCxfZTplLF9zOm5ldyBNYXAsc3RhdGU6dH0pO3JldHVybiBvfWNvbnN0IEt5PSgpPT57fTtmdW5jdGlvbiBEcChlLHQsbixyPUt5KXtlLmFkZCh0KTtjb25zdCBvPSgpPT57ZS5kZWxldGUodCkmJnIoKX07cmV0dXJuIW4mJnFyKCkmJlJzKG8pLG99ZnVuY3Rpb24gWG8oZSwuLi50KXtlLmZvckVhY2gobj0+e24oLi4udCl9KX1jb25zdCBZMT1lPT5lKCksTHA9U3ltYm9sKCkseGM9U3ltYm9sKCk7ZnVuY3Rpb24gYnUoZSx0KXtlIGluc3RhbmNlb2YgTWFwJiZ0IGluc3RhbmNlb2YgTWFwP3QuZm9yRWFjaCgobixyKT0+ZS5zZXQocixuKSk6ZSBpbnN0YW5jZW9mIFNldCYmdCBpbnN0YW5jZW9mIFNldCYmdC5mb3JFYWNoKGUuYWRkLGUpO2Zvcihjb25zdCBuIGluIHQpe2lmKCF0Lmhhc093blByb3BlcnR5KG4pKWNvbnRpbnVlO2NvbnN0IHI9dFtuXSxvPWVbbl07dnUobykmJnZ1KHIpJiZlLmhhc093blByb3BlcnR5KG4pJiYhJGUocikmJiFjcihyKT9lW25dPWJ1KG8scik6ZVtuXT1yfXJldHVybiBlfWNvbnN0IEoxPVN5bWJvbCgpO2Z1bmN0aW9uIFgxKGUpe3JldHVybiF2dShlKXx8IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLEoxKX1jb25zdHthc3NpZ246WXJ9PU9iamVjdDtmdW5jdGlvbiBaMShlKXtyZXR1cm4hISgkZShlKSYmZS5lZmZlY3QpfWZ1bmN0aW9uIGVrKGUsdCxuLHIpe2NvbnN0e3N0YXRlOm8sYWN0aW9uczpzLGdldHRlcnM6aX09dCxhPW4uc3RhdGUudmFsdWVbZV07bGV0IGw7ZnVuY3Rpb24gdSgpe2F8fChuLnN0YXRlLnZhbHVlW2VdPW8/bygpOnt9KTtjb25zdCBjPUVuKG4uc3RhdGUudmFsdWVbZV0pO3JldHVybiBZcihjLHMsT2JqZWN0LmtleXMoaXx8e30pLnJlZHVjZSgoZixkKT0+KGZbZF09TG8oTigoKT0+e2tzKG4pO2NvbnN0IHA9bi5fcy5nZXQoZSk7cmV0dXJuIGlbZF0uY2FsbChwLHApfSkpLGYpLHt9KSl9cmV0dXJuIGw9UXkoZSx1LHQsbixyLCEwKSxsfWZ1bmN0aW9uIFF5KGUsdCxuPXt9LHIsbyxzKXtsZXQgaTtjb25zdCBhPVlyKHthY3Rpb25zOnt9fSxuKSxsPXtkZWVwOiEwfTtsZXQgdSxjLGY9bmV3IFNldCxkPW5ldyBTZXQscDtjb25zdCBtPXIuc3RhdGUudmFsdWVbZV07IXMmJiFtJiYoci5zdGF0ZS52YWx1ZVtlXT17fSk7bGV0IHk7ZnVuY3Rpb24gXyhUKXtsZXQgQzt1PWM9ITEsdHlwZW9mIFQ9PSJmdW5jdGlvbiI/KFQoci5zdGF0ZS52YWx1ZVtlXSksQz17dHlwZTp1aS5wYXRjaEZ1bmN0aW9uLHN0b3JlSWQ6ZSxldmVudHM6cH0pOihidShyLnN0YXRlLnZhbHVlW2VdLFQpLEM9e3R5cGU6dWkucGF0Y2hPYmplY3QscGF5bG9hZDpULHN0b3JlSWQ6ZSxldmVudHM6cH0pO2NvbnN0IFA9eT1TeW1ib2woKTtpdCgpLnRoZW4oKCk9Pnt5PT09UCYmKHU9ITApfSksYz0hMCxYbyhmLEMsci5zdGF0ZS52YWx1ZVtlXSl9Y29uc3Qgdz1zP2Z1bmN0aW9uKCl7Y29uc3R7c3RhdGU6Q309bixQPUM/QygpOnt9O3RoaXMuJHBhdGNoKEY9PntZcihGLFApfSl9Okt5O2Z1bmN0aW9uIHYoKXtpLnN0b3AoKSxmLmNsZWFyKCksZC5jbGVhcigpLHIuX3MuZGVsZXRlKGUpfWNvbnN0IGg9KFQsQz0iIik9PntpZihMcCBpbiBUKXJldHVybiBUW3hjXT1DLFQ7Y29uc3QgUD1mdW5jdGlvbigpe2tzKHIpO2NvbnN0IEY9QXJyYXkuZnJvbShhcmd1bWVudHMpLEQ9bmV3IFNldCxXPW5ldyBTZXQ7ZnVuY3Rpb24gTChWKXtELmFkZChWKX1mdW5jdGlvbiBqKFYpe1cuYWRkKFYpfVhvKGQse2FyZ3M6RixuYW1lOlBbeGNdLHN0b3JlOngsYWZ0ZXI6TCxvbkVycm9yOmp9KTtsZXQgSTt0cnl7ST1ULmFwcGx5KHRoaXMmJnRoaXMuJGlkPT09ZT90aGlzOngsRil9Y2F0Y2goVil7dGhyb3cgWG8oVyxWKSxWfXJldHVybiBJIGluc3RhbmNlb2YgUHJvbWlzZT9JLnRoZW4oVj0+KFhvKEQsViksVikpLmNhdGNoKFY9PihYbyhXLFYpLFByb21pc2UucmVqZWN0KFYpKSk6KFhvKEQsSSksSSl9O3JldHVybiBQW0xwXT0hMCxQW3hjXT1DLFB9LGI9e19wOnIsJGlkOmUsJG9uQWN0aW9uOkRwLmJpbmQobnVsbCxkKSwkcGF0Y2g6XywkcmVzZXQ6dywkc3Vic2NyaWJlKFQsQz17fSl7Y29uc3QgUD1EcChmLFQsQy5kZXRhY2hlZCwoKT0+RigpKSxGPWkucnVuKCgpPT5QZSgoKT0+ci5zdGF0ZS52YWx1ZVtlXSxEPT57KEMuZmx1c2g9PT0ic3luYyI/Yzp1KSYmVCh7c3RvcmVJZDplLHR5cGU6dWkuZGlyZWN0LGV2ZW50czpwfSxEKX0sWXIoe30sbCxDKSkpO3JldHVybiBQfSwkZGlzcG9zZTp2fSx4PWJ0KGIpO3IuX3Muc2V0KGUseCk7Y29uc3Qgaz0oci5fYSYmci5fYS5ydW5XaXRoQ29udGV4dHx8WTEpKCgpPT5yLl9lLnJ1bigoKT0+KGk9TmkoKSkucnVuKCgpPT50KHthY3Rpb246aH0pKSkpO2Zvcihjb25zdCBUIGluIGspe2NvbnN0IEM9a1tUXTtpZigkZShDKSYmIVoxKEMpfHxjcihDKSlzfHwobSYmWDEoQykmJigkZShDKT9DLnZhbHVlPW1bVF06YnUoQyxtW1RdKSksci5zdGF0ZS52YWx1ZVtlXVtUXT1DKTtlbHNlIGlmKHR5cGVvZiBDPT0iZnVuY3Rpb24iKXtjb25zdCBQPWgoQyxUKTtrW1RdPVAsYS5hY3Rpb25zW1RdPUN9fXJldHVybiBZcih4LGspLFlyKGplKHgpLGspLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCIkc3RhdGUiLHtnZXQ6KCk9PnIuc3RhdGUudmFsdWVbZV0sc2V0OlQ9PntfKEM9PntZcihDLFQpfSl9fSksci5fcC5mb3JFYWNoKFQ9PntZcih4LGkucnVuKCgpPT5UKHtzdG9yZTp4LGFwcDpyLl9hLHBpbmlhOnIsb3B0aW9uczphfSkpKX0pLG0mJnMmJm4uaHlkcmF0ZSYmbi5oeWRyYXRlKHguJHN0YXRlLG0pLHU9ITAsYz0hMCx4fWZ1bmN0aW9uIFl5KGUsdCxuKXtsZXQgcjtjb25zdCBvPXR5cGVvZiB0PT0iZnVuY3Rpb24iO3I9bz9uOnQ7ZnVuY3Rpb24gcyhpLGEpe2NvbnN0IGw9TGkoKTtyZXR1cm4gaT1pfHwobD9LZShHeSxudWxsKTpudWxsKSxpJiZrcyhpKSxpPVd5LGkuX3MuaGFzKGUpfHwobz9ReShlLHQscixpKTplayhlLHIsaSkpLGkuX3MuZ2V0KGUpfXJldHVybiBzLiRpZD1lLHN9ZnVuY3Rpb24gdGsoZSl7Y29uc3QgdD1yayhlKSxuPW5ldyBBcnJheUJ1ZmZlcih0Lmxlbmd0aCkscj1uZXcgRGF0YVZpZXcobik7Zm9yKGxldCBvPTA7bzxuLmJ5dGVMZW5ndGg7bysrKXIuc2V0VWludDgobyx0LmNoYXJDb2RlQXQobykpO3JldHVybiBufWNvbnN0IG5rPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjtmdW5jdGlvbiByayhlKXtlLmxlbmd0aCU0PT09MCYmKGU9ZS5yZXBsYWNlKC89PT8kLywiIikpO2xldCB0PSIiLG49MCxyPTA7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspbjw8PTYsbnw9bmsuaW5kZXhPZihlW29dKSxyKz02LHI9PT0yNCYmKHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKG4mMTY3MTE2ODApPj4xNiksdCs9U3RyaW5nLmZyb21DaGFyQ29kZSgobiY2NTI4MCk+PjgpLHQrPVN0cmluZy5mcm9tQ2hhckNvZGUobiYyNTUpLG49cj0wKTtyZXR1cm4gcj09PTEyPyhuPj49NCx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTpyPT09MTgmJihuPj49Mix0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKChuJjY1MjgwKT4+OCksdCs9U3RyaW5nLmZyb21DaGFyQ29kZShuJjI1NSkpLHR9Y29uc3Qgb2s9LTEsc2s9LTIsaWs9LTMsYWs9LTQsbGs9LTUsY2s9LTYsdWs9LTc7ZnVuY3Rpb24gZmsoZSx0KXtyZXR1cm4gZGsoSlNPTi5wYXJzZShlKSx0KX1mdW5jdGlvbiBkayhlLHQpe2lmKHR5cGVvZiBlPT0ibnVtYmVyIilyZXR1cm4gcyhlLCEwKTtpZighQXJyYXkuaXNBcnJheShlKXx8ZS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCIpO2NvbnN0IG49ZSxyPUFycmF5KG4ubGVuZ3RoKTtsZXQgbz1udWxsO2Z1bmN0aW9uIHMoaSxhPSExKXtpZihpPT09b2spcmV0dXJuO2lmKGk9PT1paylyZXR1cm4gTmFOO2lmKGk9PT1haylyZXR1cm4gMS8wO2lmKGk9PT1saylyZXR1cm4tMS8wO2lmKGk9PT1jaylyZXR1cm4tMDtpZihhfHx0eXBlb2YgaSE9Im51bWJlciIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0Iik7aWYoaSBpbiByKXJldHVybiByW2ldO2NvbnN0IGw9bltpXTtpZighbHx8dHlwZW9mIGwhPSJvYmplY3QiKXJbaV09bDtlbHNlIGlmKEFycmF5LmlzQXJyYXkobCkpaWYodHlwZW9mIGxbMF09PSJzdHJpbmciKXtjb25zdCB1PWxbMF0sYz10JiZPYmplY3QuaGFzT3duKHQsdSk/dFt1XTp2b2lkIDA7aWYoYyl7bGV0IGY9bFsxXTtpZih0eXBlb2YgZiE9Im51bWJlciImJihmPW4ucHVzaChsWzFdKS0xKSxvPz89bmV3IFNldCxvLmhhcyhmKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY2lyY3VsYXIgcmVmZXJlbmNlIik7cmV0dXJuIG8uYWRkKGYpLHJbaV09YyhzKGYpKSxvLmRlbGV0ZShmKSxyW2ldfXN3aXRjaCh1KXtjYXNlIkRhdGUiOnJbaV09bmV3IERhdGUobFsxXSk7YnJlYWs7Y2FzZSJTZXQiOmNvbnN0IGY9bmV3IFNldDtyW2ldPWY7Zm9yKGxldCB5PTE7eTxsLmxlbmd0aDt5Kz0xKWYuYWRkKHMobFt5XSkpO2JyZWFrO2Nhc2UiTWFwIjpjb25zdCBkPW5ldyBNYXA7cltpXT1kO2ZvcihsZXQgeT0xO3k8bC5sZW5ndGg7eSs9MilkLnNldChzKGxbeV0pLHMobFt5KzFdKSk7YnJlYWs7Y2FzZSJSZWdFeHAiOnJbaV09bmV3IFJlZ0V4cChsWzFdLGxbMl0pO2JyZWFrO2Nhc2UiT2JqZWN0Ijpjb25zdCBwPU9iamVjdChsWzFdKTtpZihPYmplY3QuaGFzT3duKHAsIl9fcHJvdG9fXyIpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBhcnNlIGFuIG9iamVjdCB3aXRoIGEgYF9fcHJvdG9fX2AgcHJvcGVydHkiKTtyW2ldPXA7YnJlYWs7Y2FzZSJCaWdJbnQiOnJbaV09QmlnSW50KGxbMV0pO2JyZWFrO2Nhc2UibnVsbCI6Y29uc3QgbT1PYmplY3QuY3JlYXRlKG51bGwpO3JbaV09bTtmb3IobGV0IHk9MTt5PGwubGVuZ3RoO3krPTIpe2lmKGxbeV09PT0iX19wcm90b19fIil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwYXJzZSBhbiBvYmplY3Qgd2l0aCBhIGBfX3Byb3RvX19gIHByb3BlcnR5Iik7bVtsW3ldXT1zKGxbeSsxXSl9YnJlYWs7Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIkludDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQzMkFycmF5IjpjYXNlIkZsb2F0NjRBcnJheSI6Y2FzZSJCaWdJbnQ2NEFycmF5IjpjYXNlIkJpZ1VpbnQ2NEFycmF5Ijp7aWYobltsWzFdXVswXSE9PSJBcnJheUJ1ZmZlciIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEiKTtjb25zdCB5PWdsb2JhbFRoaXNbdV0sXz1zKGxbMV0pLHc9bmV3IHkoXyk7cltpXT1sWzJdIT09dm9pZCAwP3cuc3ViYXJyYXkobFsyXSxsWzNdKTp3O2JyZWFrfWNhc2UiQXJyYXlCdWZmZXIiOntjb25zdCB5PWxbMV07aWYodHlwZW9mIHkhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBBcnJheUJ1ZmZlciBlbmNvZGluZyIpO2NvbnN0IF89dGsoeSk7cltpXT1fO2JyZWFrfWNhc2UiVGVtcG9yYWwuRHVyYXRpb24iOmNhc2UiVGVtcG9yYWwuSW5zdGFudCI6Y2FzZSJUZW1wb3JhbC5QbGFpbkRhdGUiOmNhc2UiVGVtcG9yYWwuUGxhaW5UaW1lIjpjYXNlIlRlbXBvcmFsLlBsYWluRGF0ZVRpbWUiOmNhc2UiVGVtcG9yYWwuUGxhaW5Nb250aERheSI6Y2FzZSJUZW1wb3JhbC5QbGFpblllYXJNb250aCI6Y2FzZSJUZW1wb3JhbC5ab25lZERhdGVUaW1lIjp7Y29uc3QgeT11LnNsaWNlKDkpO3JbaV09VGVtcG9yYWxbeV0uZnJvbShsWzFdKTticmVha31jYXNlIlVSTCI6e2NvbnN0IHk9bmV3IFVSTChsWzFdKTtyW2ldPXk7YnJlYWt9Y2FzZSJVUkxTZWFyY2hQYXJhbXMiOntjb25zdCB5PW5ldyBVUkxTZWFyY2hQYXJhbXMobFsxXSk7cltpXT15O2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgJHt1fWApfX1lbHNlIGlmKGxbMF09PT11ayl7Y29uc3QgdT1sWzFdO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpfHx1PDApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0Iik7Y29uc3QgYz1uZXcgQXJyYXkodSk7cltpXT1jO2ZvcihsZXQgZj0yO2Y8bC5sZW5ndGg7Zis9Mil7Y29uc3QgZD1sW2ZdO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGQpfHxkPDB8fGQ+PXUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0Iik7Y1tkXT1zKGxbZisxXSl9fWVsc2V7Y29uc3QgdT1uZXcgQXJyYXkobC5sZW5ndGgpO3JbaV09dTtmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrPTEpe2NvbnN0IGY9bFtjXTtmIT09c2smJih1W2NdPXMoZikpfX1lbHNle2NvbnN0IHU9e307cltpXT11O2Zvcihjb25zdCBjIG9mIE9iamVjdC5rZXlzKGwpKXtpZihjPT09Il9fcHJvdG9fXyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcGFyc2UgYW4gb2JqZWN0IHdpdGggYSBgX19wcm90b19fYCBwcm9wZXJ0eSIpO2NvbnN0IGY9bFtjXTt1W2NdPXMoZil9fXJldHVybiByW2ldfXJldHVybiBzKDApfWNvbnN0IHBrPW5ldyBTZXQoWyJsaW5rIiwic3R5bGUiLCJzY3JpcHQiLCJub3NjcmlwdCJdKSxtaz1uZXcgU2V0KFsidGl0bGUiLCJ0aXRsZVRlbXBsYXRlIiwic2NyaXB0Iiwic3R5bGUiLCJub3NjcmlwdCJdKSx3dT1uZXcgU2V0KFsiYmFzZSIsIm1ldGEiLCJsaW5rIiwic3R5bGUiLCJzY3JpcHQiLCJub3NjcmlwdCJdKSxoaz1uZXcgU2V0KFsidGl0bGUiLCJiYXNlIiwiaHRtbEF0dHJzIiwiYm9keUF0dHJzIiwibWV0YSIsImxpbmsiLCJzdHlsZSIsInNjcmlwdCIsIm5vc2NyaXB0Il0pLGdrPW5ldyBTZXQoWyJiYXNlIiwidGl0bGUiLCJ0aXRsZVRlbXBsYXRlIiwiYm9keUF0dHJzIiwiaHRtbEF0dHJzIiwidGVtcGxhdGVQYXJhbXMiXSkseWs9bmV3IFNldChbImtleSIsInRhZ1Bvc2l0aW9uIiwidGFnUHJpb3JpdHkiLCJ0YWdEdXBsaWNhdGVTdHJhdGVneSIsImlubmVySFRNTCIsInRleHRDb250ZW50IiwicHJvY2Vzc1RlbXBsYXRlUGFyYW1zIl0pLHZrPW5ldyBTZXQoWyJ0ZW1wbGF0ZVBhcmFtcyIsImh0bWxBdHRycyIsImJvZHlBdHRycyJdKSxiaz1uZXcgU2V0KFsidGhlbWUtY29sb3IiLCJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iLCJvZyIsImFydGljbGUiLCJib29rIiwicHJvZmlsZSIsInR3aXR0ZXIiLCJhdXRob3IiXSksd2s9WyJuYW1lIiwicHJvcGVydHkiLCJodHRwLWVxdWl2Il0sX2s9bmV3IFNldChbInZpZXdwb3J0IiwiZGVzY3JpcHRpb24iLCJrZXl3b3JkcyIsInJvYm90cyJdKTtmdW5jdGlvbiBKeShlKXtjb25zdCB0PWUuc3BsaXQoIjoiKTtyZXR1cm4gdC5sZW5ndGg/YmsuaGFzKHRbMV0pOiExfWZ1bmN0aW9uIF91KGUpe2NvbnN0e3Byb3BzOnQsdGFnOm59PWU7aWYoZ2suaGFzKG4pKXJldHVybiBuO2lmKG49PT0ibGluayImJnQucmVsPT09ImNhbm9uaWNhbCIpcmV0dXJuImNhbm9uaWNhbCI7aWYobj09PSJsaW5rIiYmdC5yZWw9PT0iYWx0ZXJuYXRlIil7Y29uc3Qgcj10LmhyZWZsYW5nfHx0LnR5cGU7aWYocilyZXR1cm5gYWx0ZXJuYXRlOiR7cn1gfWlmKHQuY2hhcnNldClyZXR1cm4iY2hhcnNldCI7aWYoZS50YWc9PT0ibWV0YSIpe2Zvcihjb25zdCByIG9mIHdrKWlmKHRbcl0hPT12b2lkIDApe2NvbnN0IG89dFtyXSxzPW8mJnR5cGVvZiBvPT0ic3RyaW5nIiYmby5pbmNsdWRlcygiOiIpLGk9byYmX2suaGFzKG8pLGw9IShzfHxpKSYmZS5rZXk/YDprZXk6JHtlLmtleX1gOiIiO3JldHVybmAke259OiR7b30ke2x9YH19aWYoZS5rZXkpcmV0dXJuYCR7bn06a2V5OiR7ZS5rZXl9YDtpZih0LmlkKXJldHVybmAke259OmlkOiR7dC5pZH1gO2lmKG49PT0ibGluayImJnQucmVsPT09ImFsdGVybmF0ZSIpcmV0dXJuYGFsdGVybmF0ZToke3QuaHJlZnx8IiJ9YDtpZihtay5oYXMobikpe2NvbnN0IHI9ZS50ZXh0Q29udGVudHx8ZS5pbm5lckhUTUw7aWYocilyZXR1cm5gJHtufTpjb250ZW50OiR7cn1gfX1mdW5jdGlvbiBYeShlKXtjb25zdCB0PWUuX2h8fGUuX2Q7aWYodClyZXR1cm4gdDtjb25zdCBuPWUudGV4dENvbnRlbnR8fGUuaW5uZXJIVE1MO3JldHVybiBufHxgJHtlLnRhZ306JHtPYmplY3QuZW50cmllcyhlLnByb3BzKS5tYXAoKFtyLG9dKT0+YCR7cn06JHtTdHJpbmcobyl9YCkuam9pbigiLCIpfWB9ZnVuY3Rpb24gUWEoZSx0LG4pe3R5cGVvZiBlPT09ImZ1bmN0aW9uIiYmKCFufHxuIT09InRpdGxlVGVtcGxhdGUiJiYhKG5bMF09PT0ibyImJm5bMV09PT0ibiIpKSYmKGU9ZSgpKTtjb25zdCBvPXQ/dChuLGUpOmU7aWYoQXJyYXkuaXNBcnJheShvKSlyZXR1cm4gby5tYXAocz0+UWEocyx0KSk7aWYobz8uY29uc3RydWN0b3I9PT1PYmplY3Qpe2NvbnN0IHM9e307Zm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMobykpc1tpXT1RYShvW2ldLHQsaSk7cmV0dXJuIHN9cmV0dXJuIG99ZnVuY3Rpb24geGsoZSx0KXtjb25zdCBuPWU9PT0ic3R5bGUiP25ldyBNYXA6bmV3IFNldDtmdW5jdGlvbiByKG8pe2lmKG89PW51bGx8fG89PT12b2lkIDApcmV0dXJuO2NvbnN0IHM9U3RyaW5nKG8pLnRyaW0oKTtpZihzKWlmKGU9PT0ic3R5bGUiKXtjb25zdFtpLC4uLmFdPXMuc3BsaXQoIjoiKS5tYXAobD0+bD9sLnRyaW0oKToiIik7aSYmYS5sZW5ndGgmJm4uc2V0KGksYS5qb2luKCI6IikpfWVsc2Ugcy5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKGk9Pm4uYWRkKGkpKX1yZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP2U9PT0ic3R5bGUiP3Quc3BsaXQoIjsiKS5mb3JFYWNoKHIpOnIodCk6QXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2gobz0+cihvKSk6dCYmdHlwZW9mIHQ9PSJvYmplY3QiJiZPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbbyxzXSk9PntzJiZzIT09ImZhbHNlIiYmKGU9PT0ic3R5bGUiP24uc2V0KFN0cmluZyhvKS50cmltKCksU3RyaW5nKHMpKTpyKG8pKX0pLG59ZnVuY3Rpb24gWnkoZSx0KXtpZihlLnByb3BzPWUucHJvcHN8fHt9LCF0KXJldHVybiBlO2lmKGUudGFnPT09InRlbXBsYXRlUGFyYW1zIilyZXR1cm4gZS5wcm9wcz10LGU7Y29uc3Qgbj13dS5oYXMoZS50YWcpfHxlLnRhZz09PSJodG1sQXR0cnMifHxlLnRhZz09PSJib2R5QXR0cnMiO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbcixvXSk9PntpZihyPT09Il9fcHJvdG9fXyJ8fHI9PT0iY29uc3RydWN0b3IifHxyPT09InByb3RvdHlwZSIpcmV0dXJuO2lmKG89PT1udWxsKXtlLnByb3BzW3JdPW51bGw7cmV0dXJufWlmKHI9PT0iY2xhc3MifHxyPT09InN0eWxlIil7ZS5wcm9wc1tyXT14ayhyLG8pO3JldHVybn1pZih5ay5oYXMocikpe2lmKChyPT09InRleHRDb250ZW50Inx8cj09PSJpbm5lckhUTUwiKSYmdHlwZW9mIG89PSJvYmplY3QiKXtsZXQgdT10LnR5cGU7aWYodC50eXBlfHwodT0iYXBwbGljYXRpb24vanNvbiIpLCF1Py5lbmRzV2l0aCgianNvbiIpJiZ1IT09InNwZWN1bGF0aW9ucnVsZXMiKXJldHVybjt0LnR5cGU9dSxlLnByb3BzLnR5cGU9dSxlW3JdPUpTT04uc3RyaW5naWZ5KG8pfWVsc2UgZVtyXT1vO3JldHVybn1jb25zdCBzPXIuc3RhcnRzV2l0aCgiZGF0YS0iKSxpPW4mJiFzP3IudG9Mb3dlckNhc2UoKTpyLGE9U3RyaW5nKG8pLGw9ZS50YWc9PT0ibWV0YSImJmk9PT0iY29udGVudCI7YT09PSJ0cnVlInx8YT09PSIiP2UucHJvcHNbaV09c3x8bD9hOiEwOiFvJiZzJiZhPT09ImZhbHNlIj9lLnByb3BzW2ldPSJmYWxzZSI6byE9PXZvaWQgMCYmKGUucHJvcHNbaV09byl9KSxlfWZ1bmN0aW9uIFNrKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24iP3Q6e1tlPT09InNjcmlwdCJ8fGU9PT0ibm9zY3JpcHQifHxlPT09InN0eWxlIj8iaW5uZXJIVE1MIjoidGV4dENvbnRlbnQiXTp0fSxyPVp5KHt0YWc6ZSxwcm9wczp7fX0sbik7cmV0dXJuIHIua2V5JiZway5oYXMoci50YWcpJiYoci5wcm9wc1siZGF0YS1oaWQiXT1yLl9oPXIua2V5KSxyLnRhZz09PSJzY3JpcHQiJiZ0eXBlb2Ygci5pbm5lckhUTUw9PSJvYmplY3QiJiYoci5pbm5lckhUTUw9SlNPTi5zdHJpbmdpZnkoci5pbm5lckhUTUwpLHIucHJvcHMudHlwZT1yLnByb3BzLnR5cGV8fCJhcHBsaWNhdGlvbi9qc29uIiksQXJyYXkuaXNBcnJheShyLnByb3BzLmNvbnRlbnQpP3IucHJvcHMuY29udGVudC5tYXAobz0+KHsuLi5yLHByb3BzOnsuLi5yLnByb3BzLGNvbnRlbnQ6b319KSk6cn1mdW5jdGlvbiBrayhlLHQpe2lmKCFlKXJldHVybltdO3R5cGVvZiBlPT0iZnVuY3Rpb24iJiYoZT1lKCkpO2NvbnN0IG49KG8scyk9Pntmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKylzPXRbaV0obyxzKTtyZXR1cm4gc307ZT1uKHZvaWQgMCxlKTtjb25zdCByPVtdO3JldHVybiBlPVFhKGUsbiksT2JqZWN0LmVudHJpZXMoZXx8e30pLmZvckVhY2goKFtvLHNdKT0+e2lmKHMhPT12b2lkIDApZm9yKGNvbnN0IGkgb2YgQXJyYXkuaXNBcnJheShzKT9zOltzXSlyLnB1c2goU2sobyxpKSl9KSxyLmZsYXQoKX1jb25zdCAkcD0oZSx0KT0+ZS5fdz09PXQuX3c/ZS5fcC10Ll9wOmUuX3ctdC5fdyxNcD17YmFzZTotMTAsdGl0bGU6MTB9LEVrPXtjcml0aWNhbDotOCxoaWdoOi0xLGxvdzoyfSxCcD17bWV0YTp7ImNvbnRlbnQtc2VjdXJpdHktcG9saWN5IjotMzAsY2hhcnNldDotMjAsdmlld3BvcnQ6LTE1fSxsaW5rOntwcmVjb25uZWN0OjIwLHN0eWxlc2hlZXQ6NjAscHJlbG9hZDo3MCxtb2R1bGVwcmVsb2FkOjcwLHByZWZldGNoOjkwLCJkbnMtcHJlZmV0Y2giOjkwLHByZXJlbmRlcjo5MH0sc2NyaXB0Onthc3luYzozMCxkZWZlcjo4MCxzeW5jOjUwfSxzdHlsZTp7aW1wb3J0ZWQ6NDAsc3luYzo2MH19LFRrPS9AaW1wb3J0LyxWcz1lPT5lPT09IiJ8fGU9PT0hMDtmdW5jdGlvbiBDayhlLHQpe2lmKHR5cGVvZiB0LnRhZ1ByaW9yaXR5PT0ibnVtYmVyIilyZXR1cm4gdC50YWdQcmlvcml0eTtsZXQgbj0xMDA7Y29uc3Qgcj1Fa1t0LnRhZ1ByaW9yaXR5XXx8MCxvPWUucmVzb2x2ZWRPcHRpb25zLmRpc2FibGVDYXBvU29ydGluZz97bGluazp7fSxzY3JpcHQ6e30sc3R5bGU6e319OkJwO2lmKHQudGFnIGluIE1wKW49TXBbdC50YWddO2Vsc2UgaWYodC50YWc9PT0ibWV0YSIpe2NvbnN0IHM9dC5wcm9wc1siaHR0cC1lcXVpdiJdPT09ImNvbnRlbnQtc2VjdXJpdHktcG9saWN5Ij8iY29udGVudC1zZWN1cml0eS1wb2xpY3kiOnQucHJvcHMuY2hhcnNldD8iY2hhcnNldCI6dC5wcm9wcy5uYW1lPT09InZpZXdwb3J0Ij8idmlld3BvcnQiOm51bGw7cyYmKG49QnAubWV0YVtzXSl9ZWxzZSBpZih0LnRhZz09PSJsaW5rIiYmdC5wcm9wcy5yZWwpbj1vLmxpbmtbdC5wcm9wcy5yZWxdO2Vsc2UgaWYodC50YWc9PT0ic2NyaXB0Iil7Y29uc3Qgcz1TdHJpbmcodC5wcm9wcy50eXBlKTtWcyh0LnByb3BzLmFzeW5jKT9uPW8uc2NyaXB0LmFzeW5jOnQucHJvcHMuc3JjJiYhVnModC5wcm9wcy5kZWZlcikmJiFWcyh0LnByb3BzLmFzeW5jKSYmcyE9PSJtb2R1bGUiJiYhcy5lbmRzV2l0aCgianNvbiIpfHx0LmlubmVySFRNTCYmIXMuZW5kc1dpdGgoImpzb24iKT9uPW8uc2NyaXB0LnN5bmM6KFZzKHQucHJvcHMuZGVmZXIpJiZ0LnByb3BzLnNyYyYmIVZzKHQucHJvcHMuYXN5bmMpfHxzPT09Im1vZHVsZSIpJiYobj1vLnNjcmlwdC5kZWZlcil9ZWxzZSB0LnRhZz09PSJzdHlsZSImJihuPXQuaW5uZXJIVE1MJiZUay50ZXN0KHQuaW5uZXJIVE1MKT9vLnN0eWxlLmltcG9ydGVkOm8uc3R5bGUuc3luYyk7cmV0dXJuKG58fDEwMCkrcn1mdW5jdGlvbiBxcChlLHQpe2NvbnN0IG49dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChlKTp0LHI9bi5rZXl8fFN0cmluZyhlLnBsdWdpbnMuc2l6ZSsxKTtlLnBsdWdpbnMuZ2V0KHIpfHwoZS5wbHVnaW5zLnNldChyLG4pLGUuaG9va3MuYWRkSG9va3Mobi5ob29rc3x8e30pKX1mdW5jdGlvbiBBayhlPXt9KXtjb25zdCB0PU15KCk7dC5hZGRIb29rcyhlLmhvb2tzfHx7fSk7Y29uc3Qgbj0hZS5kb2N1bWVudCxyPW5ldyBNYXAsbz1uZXcgTWFwLHM9bmV3IFNldCxpPXtfZW50cnlDb3VudDoxLHBsdWdpbnM6byxkaXJ0eTohMSxyZXNvbHZlZE9wdGlvbnM6ZSxob29rczp0LHNzcjpuLGVudHJpZXM6cixoZWFkRW50cmllcygpe3JldHVyblsuLi5yLnZhbHVlcygpXX0sdXNlOmE9PnFwKGksYSkscHVzaChhLGwpe2NvbnN0IHU9ey4uLmx8fHt9fTtkZWxldGUgdS5oZWFkO2NvbnN0IGM9dS5faW5kZXg/P2kuX2VudHJ5Q291bnQrKyxmPXtfaTpjLGlucHV0OmEsb3B0aW9uczp1fSxkPXtfcG9sbChwPSExKXtpLmRpcnR5PSEwLCFwJiZzLmFkZChjKSx0LmNhbGxIb29rKCJlbnRyaWVzOnVwZGF0ZWQiLGkpfSxkaXNwb3NlKCl7ci5kZWxldGUoYykmJmkuaW52YWxpZGF0ZSgpfSxwYXRjaChwKXsoIXUubW9kZXx8dS5tb2RlPT09InNlcnZlciImJm58fHUubW9kZT09PSJjbGllbnQiJiYhbikmJihmLmlucHV0PXAsci5zZXQoYyxmKSxkLl9wb2xsKCkpfX07cmV0dXJuIGQucGF0Y2goYSksZH0sYXN5bmMgcmVzb2x2ZVRhZ3MoKXtjb25zdCBhPXt0YWdNYXA6bmV3IE1hcCx0YWdzOltdLGVudHJpZXM6Wy4uLmkuZW50cmllcy52YWx1ZXMoKV19O2Zvcihhd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOnJlc29sdmUiLGEpO3Muc2l6ZTspe2NvbnN0IGQ9cy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7cy5kZWxldGUoZCk7Y29uc3QgcD1yLmdldChkKTtpZihwKXtjb25zdCBtPXt0YWdzOmtrKHAuaW5wdXQsZS5wcm9wUmVzb2x2ZXJzfHxbXSkubWFwKHk9Pk9iamVjdC5hc3NpZ24oeSxwLm9wdGlvbnMpKSxlbnRyeTpwfTthd2FpdCB0LmNhbGxIb29rKCJlbnRyaWVzOm5vcm1hbGl6ZSIsbSkscC5fdGFncz1tLnRhZ3MubWFwKCh5LF8pPT4oeS5fdz1DayhpLHkpLHkuX3A9KHAuX2k8PDEwKStfLHkuX2Q9X3UoeSkseS5fZHx8KHkuX2g9WHkoeSkpLHkpKX19bGV0IGw9ITE7YS5lbnRyaWVzLmZsYXRNYXAoZD0+KGQuX3RhZ3N8fFtdKS5tYXAocD0+KHsuLi5wLHByb3BzOnsuLi5wLnByb3BzfX0pKSkuc29ydCgkcCkucmVkdWNlKChkLHApPT57Y29uc3QgbT1wLl9kfHxwLl9oO2lmKCFkLmhhcyhtKSlyZXR1cm4gZC5zZXQobSxwKTtjb25zdCB5PWQuZ2V0KG0pO2lmKChwPy50YWdEdXBsaWNhdGVTdHJhdGVneXx8KHZrLmhhcyhwLnRhZyk/Im1lcmdlIjpudWxsKXx8KHAua2V5JiZwLmtleT09PXkua2V5PyJtZXJnZSI6bnVsbCkpPT09Im1lcmdlIil7Y29uc3Qgdz17Li4ueS5wcm9wc307T2JqZWN0LmVudHJpZXMocC5wcm9wcykuZm9yRWFjaCgoW3YsaF0pPT53W3ZdPXY9PT0ic3R5bGUiP25ldyBNYXAoWy4uLnkucHJvcHMuc3R5bGV8fG5ldyBNYXAsLi4uaF0pOnY9PT0iY2xhc3MiP25ldyBTZXQoWy4uLnkucHJvcHMuY2xhc3N8fG5ldyBTZXQsLi4uaF0pOmgpLGQuc2V0KG0sey4uLnAscHJvcHM6d30pfWVsc2UgcC5fcD4+MTA9PT15Ll9wPj4xMCYmcC50YWc9PT0ibWV0YSImJkp5KG0pPyhkLnNldChtLE9iamVjdC5hc3NpZ24oWy4uLkFycmF5LmlzQXJyYXkoeSk/eTpbeV0scF0scCkpLGw9ITApOihwLl93PT09eS5fdz9wLl9wPnkuX3A6cD8uX3c8eT8uX3cpJiZkLnNldChtLHApO3JldHVybiBkfSxhLnRhZ01hcCk7Y29uc3QgdT1hLnRhZ01hcC5nZXQoInRpdGxlIiksYz1hLnRhZ01hcC5nZXQoInRpdGxlVGVtcGxhdGUiKTtpZihpLl90aXRsZT11Py50ZXh0Q29udGVudCxjKXtjb25zdCBkPWM/LnRleHRDb250ZW50O2lmKGkuX3RpdGxlVGVtcGxhdGU9ZCxkKXtsZXQgcD10eXBlb2YgZD09ImZ1bmN0aW9uIj9kKHU/LnRleHRDb250ZW50KTpkO3R5cGVvZiBwPT0ic3RyaW5nIiYmIWkucGx1Z2lucy5oYXMoInRlbXBsYXRlLXBhcmFtcyIpJiYocD1wLnJlcGxhY2UoIiVzIix1Py50ZXh0Q29udGVudHx8IiIpKSx1P3A9PT1udWxsP2EudGFnTWFwLmRlbGV0ZSgidGl0bGUiKTphLnRhZ01hcC5zZXQoInRpdGxlIix7Li4udSx0ZXh0Q29udGVudDpwfSk6KGMudGFnPSJ0aXRsZSIsYy50ZXh0Q29udGVudD1wKX19YS50YWdzPUFycmF5LmZyb20oYS50YWdNYXAudmFsdWVzKCkpLGwmJihhLnRhZ3M9YS50YWdzLmZsYXQoKS5zb3J0KCRwKSksYXdhaXQgdC5jYWxsSG9vaygidGFnczpiZWZvcmVSZXNvbHZlIixhKSxhd2FpdCB0LmNhbGxIb29rKCJ0YWdzOnJlc29sdmUiLGEpLGF3YWl0IHQuY2FsbEhvb2soInRhZ3M6YWZ0ZXJSZXNvbHZlIixhKTtjb25zdCBmPVtdO2Zvcihjb25zdCBkIG9mIGEudGFncyl7Y29uc3R7aW5uZXJIVE1MOnAsdGFnOm0scHJvcHM6eX09ZDtpZihoay5oYXMobSkmJiEoT2JqZWN0LmtleXMoeSkubGVuZ3RoPT09MCYmIWQuaW5uZXJIVE1MJiYhZC50ZXh0Q29udGVudCkmJiEobT09PSJtZXRhIiYmIXkuY29udGVudCYmIXlbImh0dHAtZXF1aXYiXSYmIXkuY2hhcnNldCkpe2lmKG09PT0ic2NyaXB0IiYmcCl7aWYoU3RyaW5nKHkudHlwZSkuZW5kc1dpdGgoImpzb24iKSl7Y29uc3QgXz10eXBlb2YgcD09InN0cmluZyI/cDpKU09OLnN0cmluZ2lmeShwKTtkLmlubmVySFRNTD1fLnJlcGxhY2UoLzwvZywiXFx1MDAzQyIpfWVsc2UgdHlwZW9mIHA9PSJzdHJpbmciJiYoZC5pbm5lckhUTUw9cC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHttfWAsImciKSxgPFxcLyR7bX1gKSk7ZC5fZD1fdShkKX1mLnB1c2goZCl9fXJldHVybiBmfSxpbnZhbGlkYXRlKCl7Zm9yKGNvbnN0IGEgb2Ygci52YWx1ZXMoKSlzLmFkZChhLl9pKTtpLmRpcnR5PSEwLHQuY2FsbEhvb2soImVudHJpZXM6dXBkYXRlZCIsaSl9fTtyZXR1cm4oZT8ucGx1Z2luc3x8W10pLmZvckVhY2goYT0+cXAoaSxhKSksaS5ob29rcy5jYWxsSG9vaygiaW5pdCIsaSksZS5pbml0Py5mb3JFYWNoKGE9PmEmJmkucHVzaChhKSksaX1jb25zdCBPaz0oZSx0KT0+JGUodCk/RWUodCk6dCxSZj0idXNlaGVhZCI7ZnVuY3Rpb24gUGsoZSl7cmV0dXJue2luc3RhbGwobil7bi5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kdW5oZWFkPWUsbi5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kaGVhZD1lLG4ucHJvdmlkZShSZixlKX19Lmluc3RhbGx9ZnVuY3Rpb24gSWsoKXtpZihMaSgpKXtjb25zdCBlPUtlKFJmKTtpZihlKXJldHVybiBlfXRocm93IG5ldyBFcnJvcigidXNlSGVhZCgpIHdhcyBjYWxsZWQgd2l0aG91dCBwcm92aWRlIGNvbnRleHQsIGVuc3VyZSB5b3UgY2FsbCBpdCB0aHJvdWdoIHRoZSBzZXR1cCgpIGZ1bmN0aW9uLiIpfWZ1bmN0aW9uIFJrKGUsdD17fSl7Y29uc3Qgbj10LmhlYWR8fElrKCk7cmV0dXJuIG4uc3NyP24ucHVzaChlfHx7fSx0KTpOayhuLGUsdCl9ZnVuY3Rpb24gTmsoZSx0LG49e30pe2NvbnN0IHI9RyghMSk7bGV0IG87cmV0dXJuIG9uKCgpPT57Y29uc3QgaT1yLnZhbHVlP3t9OlFhKHQsT2spO28/by5wYXRjaChpKTpvPWUucHVzaChpLG4pfSksbXQoKSYmKEhvKCgpPT57by5kaXNwb3NlKCl9KSxNZygoKT0+e3IudmFsdWU9ITB9KSwkZygoKT0+e3IudmFsdWU9ITF9KSksb31mdW5jdGlvbiBldihlKXtjb25zdCB0PWV8fEJlKCk7cmV0dXJuIHQuc3NyQ29udGV4dD8uaGVhZHx8dC5ydW5XaXRoQ29udGV4dCgoKT0+e2lmKExpKCkpe2NvbnN0IG49S2UoUmYpO2lmKCFuKXRocm93IG5ldyBFcnJvcigiW251eHRdIFt1bmhlYWRdIE1pc3NpbmcgVW5oZWFkIGluc3RhbmNlLiIpO3JldHVybiBufX0pfWZ1bmN0aW9uIERrKGUsdD17fSl7Y29uc3Qgbj10LmhlYWR8fGV2KHQubnV4dCk7cmV0dXJuIFJrKGUse2hlYWQ6biwuLi50fSl9Y29uc3QgTGs9KCgpPT57Y29uc3QgZT17cmVkaXJlY3Q6Ii9vcmdhbml6YXRpb24vbWVtYmVycyJ9LHQ9e307cmV0dXJuKG4scik9PntsZXQgbz1bXTtyLmNoYXJDb2RlQXQoci5sZW5ndGgtMSk9PT00NyYmKHI9ci5zbGljZSgwLC0xKXx8Ii8iKSxyPT09Ii91c2VycyI/by51bnNoaWZ0KHtkYXRhOmV9KTpyPT09Ii9hcGkvcGF5bWVudHMvc2VwYXkvd2ViaG9vayI/by51bnNoaWZ0KHtkYXRhOnR9KTpyPT09Ii9hcGkvc3lzdGVtL2Rpc3BhdGNoL3NlbmQiP28udW5zaGlmdCh7ZGF0YTp0fSk6cj09PSIvYXBpL3N1cHBvcnQvdGlja2V0cyI/by51bnNoaWZ0KHtkYXRhOnR9KTpyPT09Ii9hcGkvc3lzdGVtL3RpY2tldHMiJiZvLnVuc2hpZnQoe2RhdGE6dH0pO2xldCBzPXIuc3BsaXQoIi8iKSxpPXMubGVuZ3RoO3JldHVybiBpPjEmJihzWzFdPT09ImFwaSI/KGk+MiYmKHNbMl09PT0ic3lzdGVtIj9pPjMmJnNbM109PT0idGlja2V0cyImJm8udW5zaGlmdCh7ZGF0YTp0LHBhcmFtczp7XzpzLnNsaWNlKDQpLmpvaW4oIi8iKX19KTpzWzJdPT09InN1cHBvcnQiP2k+MyYmc1szXT09PSJ0aWNrZXRzIiYmby51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoNCkuam9pbigiLyIpfX0pOnNbMl09PT0iYXV0aCI/by51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoMykuam9pbigiLyIpfX0pOnNbMl09PT0iY3JvbiImJm8udW5zaGlmdCh7ZGF0YTp0LHBhcmFtczp7XzpzLnNsaWNlKDMpLmpvaW4oIi8iKX19KSksby51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoMikuam9pbigiLyIpfX0pKTpzWzFdPT09Il9fbnV4dF9oaW50cyImJm8udW5zaGlmdCh7ZGF0YTp0LHBhcmFtczp7XzpzLnNsaWNlKDIpLmpvaW4oIi8iKX19KSksby51bnNoaWZ0KHtkYXRhOnQscGFyYW1zOntfOnMuc2xpY2UoMSkuam9pbigiLyIpfX0pLG99fSkoKSx0dj1lPT5tbih7fSwuLi5MaygiIixlKS5tYXAodD0+dC5kYXRhKS5yZXZlcnNlKCkpLCRrPXR2O2xldCBDYTtmdW5jdGlvbiBNaygpe3JldHVybiBDYT0kZmV0Y2goSWYoYGJ1aWxkcy9tZXRhLyR7Zm8oKS5hcHAuYnVpbGRJZH0uanNvbmApLHtyZXNwb25zZVR5cGU6Impzb24ifSksQ2EuY2F0Y2goZT0+e30pLENhfWZ1bmN0aW9uIG52KCl7cmV0dXJuIENhfHxNaygpfWZ1bmN0aW9uIHJ2KGUpe2NvbnN0IHQ9dHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5wYXRoO3RyeXtyZXR1cm4gJGsodCl9Y2F0Y2h7cmV0dXJue319fWFzeW5jIGZ1bmN0aW9uIEZwKGUsdD17fSl7cmV0dXJuIG51bGx9YXN5bmMgZnVuY3Rpb24gQmsoZSl7cmV0dXJuIG51bGx9bGV0IHhvPW51bGw7YXN5bmMgZnVuY3Rpb24gcWsoKXtpZih4bylyZXR1cm4geG87Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19OVVhUX0RBVEFfXyIpO2lmKCFlKXJldHVybnt9O2NvbnN0IHQ9YXdhaXQgRmsoZS50ZXh0Q29udGVudHx8IiIpLG49ZS5kYXRhc2V0LnNyYz9hd2FpdCBCayhlLmRhdGFzZXQuc3JjKTp2b2lkIDA7cmV0dXJuIHhvPXsuLi50LC4uLm4sLi4ud2luZG93Ll9fTlVYVF9ffSx4by5jb25maWc/LnB1YmxpYyYmKHhvLmNvbmZpZy5wdWJsaWM9YnQoeG8uY29uZmlnLnB1YmxpYykpLHhvfWFzeW5jIGZ1bmN0aW9uIEZrKGUpe3JldHVybiBhd2FpdCBmayhlLEJlKCkuX3BheWxvYWRSZXZpdmVycyl9ZnVuY3Rpb24gb3YoZSx0KXtCZSgpLl9wYXlsb2FkUmV2aXZlcnNbZV09dH1jb25zdCB6az1xMSgoKT0+e292KCJza2lwSHlkcmF0ZSIsZT0+e30pfSk7ZnVuY3Rpb24genAoZSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoe3JldHVybiBlfX1jb25zdCBqaz1bWyJOdXh0RXJyb3IiLGU9PnNvKGUpXSxbIkVtcHR5U2hhbGxvd1JlZiIsZT0+T2UoZT09PSJfIj92b2lkIDA6ZT09PSIwbiI/QmlnSW50KDApOnpwKGUpKV0sWyJFbXB0eVJlZiIsZT0+RyhlPT09Il8iP3ZvaWQgMDplPT09IjBuIj9CaWdJbnQoMCk6enAoZSkpXSxbIlNoYWxsb3dSZWYiLGU9Pk9lKGUpXSxbIlNoYWxsb3dSZWFjdGl2ZSIsZT0+UG4oZSldLFsiUmVmIixlPT5HKGUpXSxbIlJlYWN0aXZlIixlPT5idChlKV1dLFZrPWx0KHtuYW1lOiJudXh0OnJldml2ZS1wYXlsb2FkOmNsaWVudCIsb3JkZXI6LTMwLGFzeW5jIHNldHVwKGUpe2xldCB0LG47Zm9yKGNvbnN0W3Isb11vZiBqaylvdihyLG8pO09iamVjdC5hc3NpZ24oZS5wYXlsb2FkLChbdCxuXT1ncygoKT0+ZS5ydW5XaXRoQ29udGV4dChxaykpLHQ9YXdhaXQgdCxuKCksdCkpLGRlbGV0ZSB3aW5kb3cuX19OVVhUX199fSk7YXN5bmMgZnVuY3Rpb24gTmYoZSx0PXt9KXtjb25zdCBuPXQuZG9jdW1lbnR8fGUucmVzb2x2ZWRPcHRpb25zLmRvY3VtZW50O2lmKCFufHwhZS5kaXJ0eSlyZXR1cm47Y29uc3Qgcj17c2hvdWxkUmVuZGVyOiEwLHRhZ3M6W119O2lmKGF3YWl0IGUuaG9va3MuY2FsbEhvb2soImRvbTpiZWZvcmVSZW5kZXIiLHIpLCEhci5zaG91bGRSZW5kZXIpcmV0dXJuIGUuX2RvbVVwZGF0ZVByb21pc2V8fChlLl9kb21VcGRhdGVQcm9taXNlPW5ldyBQcm9taXNlKGFzeW5jIG89Pntjb25zdCBzPW5ldyBNYXAsaT1uZXcgUHJvbWlzZShwPT57ZS5yZXNvbHZlVGFncygpLnRoZW4obT0+e3AobS5tYXAoeT0+e2NvbnN0IF89cy5nZXQoeS5fZCl8fDAsdz17dGFnOnksaWQ6KF8/YCR7eS5fZH06JHtffWA6eS5fZCl8fHkuX2gsc2hvdWxkUmVuZGVyOiEwfTtyZXR1cm4geS5fZCYmSnkoeS5fZCkmJnMuc2V0KHkuX2QsXysxKSx3fSkpfSl9KTtsZXQgYT1lLl9kb207aWYoIWEpe2E9e3RpdGxlOm4udGl0bGUsZWxNYXA6bmV3IE1hcCgpLnNldCgiaHRtbEF0dHJzIixuLmRvY3VtZW50RWxlbWVudCkuc2V0KCJib2R5QXR0cnMiLG4uYm9keSl9O2Zvcihjb25zdCBwIG9mWyJib2R5IiwiaGVhZCJdKXtjb25zdCBtPW5bcF0/LmNoaWxkcmVuO2Zvcihjb25zdCB5IG9mIG0pe2NvbnN0IF89eS50YWdOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIXd1LmhhcyhfKSljb250aW51ZTtjb25zdCB3PVp5KHt0YWc6Xyxwcm9wczp7fX0se2lubmVySFRNTDp5LmlubmVySFRNTCwuLi55LmdldEF0dHJpYnV0ZU5hbWVzKCkucmVkdWNlKCh2LGgpPT4odltoXT15LmdldEF0dHJpYnV0ZShoKSx2KSx7fSl8fHt9fSk7aWYody5rZXk9eS5nZXRBdHRyaWJ1dGUoImRhdGEtaGlkIil8fHZvaWQgMCx3Ll9kPV91KHcpfHxYeSh3KSxhLmVsTWFwLmhhcyh3Ll9kKSl7bGV0IHY9MSxoPXcuX2Q7Zm9yKDthLmVsTWFwLmhhcyhoKTspaD1gJHt3Ll9kfToke3YrK31gO2EuZWxNYXAuc2V0KGgseSl9ZWxzZSBhLmVsTWFwLnNldCh3Ll9kLHkpfX19YS5wZW5kaW5nU2lkZUVmZmVjdHM9ey4uLmEuc2lkZUVmZmVjdHN9LGEuc2lkZUVmZmVjdHM9e307ZnVuY3Rpb24gbChwLG0seSl7Y29uc3QgXz1gJHtwfToke219YDthLnNpZGVFZmZlY3RzW19dPXksZGVsZXRlIGEucGVuZGluZ1NpZGVFZmZlY3RzW19dfWZ1bmN0aW9uIHUoe2lkOnAsJGVsOm0sdGFnOnl9KXtjb25zdCBfPXkudGFnLmVuZHNXaXRoKCJBdHRycyIpO2EuZWxNYXAuc2V0KHAsbSksX3x8KHkudGV4dENvbnRlbnQmJnkudGV4dENvbnRlbnQhPT1tLnRleHRDb250ZW50JiYobS50ZXh0Q29udGVudD15LnRleHRDb250ZW50KSx5LmlubmVySFRNTCYmeS5pbm5lckhUTUwhPT1tLmlubmVySFRNTCYmKG0uaW5uZXJIVE1MPXkuaW5uZXJIVE1MKSxsKHAsImVsIiwoKT0+e20/LnJlbW92ZSgpLGEuZWxNYXAuZGVsZXRlKHApfSkpO2Zvcihjb25zdCB3IGluIHkucHJvcHMpe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeS5wcm9wcyx3KSljb250aW51ZTtjb25zdCB2PXkucHJvcHNbd107aWYody5zdGFydHNXaXRoKCJvbiIpJiZ0eXBlb2Ygdj09ImZ1bmN0aW9uIil7Y29uc3QgYj1tPy5kYXRhc2V0O2lmKGImJmJbYCR7d31maXJlZGBdKXtjb25zdCB4PXcuc2xpY2UoMCwtNSk7di5jYWxsKG0sbmV3IEV2ZW50KHguc3Vic3RyaW5nKDIpKSl9bS5nZXRBdHRyaWJ1dGUoYGRhdGEtJHt3fWApIT09IiImJigoeS50YWc9PT0iYm9keUF0dHJzIj9uLmRlZmF1bHRWaWV3Om0pLmFkZEV2ZW50TGlzdGVuZXIody5zdWJzdHJpbmcoMiksdi5iaW5kKG0pKSxtLnNldEF0dHJpYnV0ZShgZGF0YS0ke3d9YCwiIikpO2NvbnRpbnVlfWNvbnN0IGg9YGF0dHI6JHt3fWA7aWYodz09PSJjbGFzcyIpe2lmKCF2KWNvbnRpbnVlO2Zvcihjb25zdCBiIG9mIHYpXyYmbChwLGAke2h9OiR7Yn1gLCgpPT5tLmNsYXNzTGlzdC5yZW1vdmUoYikpLCFtLmNsYXNzTGlzdC5jb250YWlucyhiKSYmbS5jbGFzc0xpc3QuYWRkKGIpfWVsc2UgaWYodz09PSJzdHlsZSIpe2lmKCF2KWNvbnRpbnVlO2Zvcihjb25zdFtiLHhdb2YgdilsKHAsYCR7aH06JHtifWAsKCk9PnttLnN0eWxlLnJlbW92ZVByb3BlcnR5KGIpfSksbS5zdHlsZS5zZXRQcm9wZXJ0eShiLHgpfWVsc2UgdiE9PSExJiZ2IT09bnVsbCYmKG0uZ2V0QXR0cmlidXRlKHcpIT09diYmbS5zZXRBdHRyaWJ1dGUodyx2PT09ITA/IiI6U3RyaW5nKHYpKSxfJiZsKHAsaCwoKT0+bS5yZW1vdmVBdHRyaWJ1dGUodykpKX19Y29uc3QgYz1bXSxmPXtib2R5Q2xvc2U6dm9pZCAwLGJvZHlPcGVuOnZvaWQgMCxoZWFkOnZvaWQgMH0sZD1hd2FpdCBpO2Zvcihjb25zdCBwIG9mIGQpe2NvbnN0e3RhZzptLHNob3VsZFJlbmRlcjp5LGlkOl99PXA7aWYoeSl7aWYobS50YWc9PT0idGl0bGUiKXtuLnRpdGxlPW0udGV4dENvbnRlbnQsbCgidGl0bGUiLCIiLCgpPT5uLnRpdGxlPWEudGl0bGUpO2NvbnRpbnVlfXAuJGVsPXAuJGVsfHxhLmVsTWFwLmdldChfKSxwLiRlbD91KHApOnd1LmhhcyhtLnRhZykmJmMucHVzaChwKX19Zm9yKGNvbnN0IHAgb2YgYyl7Y29uc3QgbT1wLnRhZy50YWdQb3NpdGlvbnx8ImhlYWQiO3AuJGVsPW4uY3JlYXRlRWxlbWVudChwLnRhZy50YWcpLHUocCksZlttXT1mW21dfHxuLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmW21dLmFwcGVuZENoaWxkKHAuJGVsKX1mb3IoY29uc3QgcCBvZiBkKWF3YWl0IGUuaG9va3MuY2FsbEhvb2soImRvbTpyZW5kZXJUYWciLHAsbixsKTtmLmhlYWQmJm4uaGVhZC5hcHBlbmRDaGlsZChmLmhlYWQpLGYuYm9keU9wZW4mJm4uYm9keS5pbnNlcnRCZWZvcmUoZi5ib2R5T3BlbixuLmJvZHkuZmlyc3RDaGlsZCksZi5ib2R5Q2xvc2UmJm4uYm9keS5hcHBlbmRDaGlsZChmLmJvZHlDbG9zZSk7Zm9yKGNvbnN0IHAgaW4gYS5wZW5kaW5nU2lkZUVmZmVjdHMpYS5wZW5kaW5nU2lkZUVmZmVjdHNbcF0oKTtlLl9kb209YSxhd2FpdCBlLmhvb2tzLmNhbGxIb29rKCJkb206cmVuZGVyZWQiLHtyZW5kZXJzOmR9KSxvKCl9KS5maW5hbGx5KCgpPT57ZS5fZG9tVXBkYXRlUHJvbWlzZT12b2lkIDAsZS5kaXJ0eT0hMX0pKSxlLl9kb21VcGRhdGVQcm9taXNlfWZ1bmN0aW9uIFVrKGU9e30pe2NvbnN0IHQ9ZS5kb21PcHRpb25zPy5yZW5kZXJ8fE5mO2UuZG9jdW1lbnQ9ZS5kb2N1bWVudHx8KHR5cGVvZiB3aW5kb3c8InUiP2RvY3VtZW50OnZvaWQgMCk7Y29uc3Qgbj1lLmRvY3VtZW50Py5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtpZD0idW5oZWFkOnBheWxvYWQiXScpPy5pbm5lckhUTUx8fCExO3JldHVybiBBayh7Li4uZSxwbHVnaW5zOlsuLi5lLnBsdWdpbnN8fFtdLHtrZXk6ImNsaWVudCIsaG9va3M6eyJlbnRyaWVzOnVwZGF0ZWQiOnR9fV0saW5pdDpbbj9KU09OLnBhcnNlKG4pOiExLC4uLmUuaW5pdHx8W11dfSl9ZnVuY3Rpb24gSGsoZSx0KXtsZXQgbj0wO3JldHVybigpPT57Y29uc3Qgcj0rK247dCgoKT0+e249PT1yJiZlKCl9KX19ZnVuY3Rpb24gV2soZT17fSl7Y29uc3QgdD1Vayh7ZG9tT3B0aW9uczp7cmVuZGVyOkhrKCgpPT5OZih0KSxuPT5zZXRUaW1lb3V0KG4sMCkpfSwuLi5lfSk7cmV0dXJuIHQuaW5zdGFsbD1Qayh0KSx0fWNvbnN0IEdrPXtkaXNhYmxlRGVmYXVsdHM6ITB9LEtrPWx0KHtuYW1lOiJudXh0OmhlYWQiLGVuZm9yY2U6InByZSIsc2V0dXAoZSl7Y29uc3QgdD1XayhHayk7ZS52dWVBcHAudXNlKHQpO3tsZXQgbj0hMDtjb25zdCByPWFzeW5jKCk9PntuPSExLGF3YWl0IE5mKHQpfTt0Lmhvb2tzLmhvb2soImRvbTpiZWZvcmVSZW5kZXIiLG89PntvLnNob3VsZFJlbmRlcj0hbn0pLGUuaG9va3MuaG9vaygicGFnZTpzdGFydCIsKCk9PntuPSEwfSksZS5ob29rcy5ob29rKCJwYWdlOmZpbmlzaCIsKCk9PntlLmlzSHlkcmF0aW5nfHxyKCl9KSxlLmhvb2tzLmhvb2soImFwcDplcnJvciIsciksZS5ob29rcy5ob29rKCJhcHA6c3VzcGVuc2U6cmVzb2x2ZSIscil9fX0pO2NvbnN0IHNzPXR5cGVvZiBkb2N1bWVudDwidSI7ZnVuY3Rpb24gc3YoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0Inx8ImRpc3BsYXlOYW1lImluIGV8fCJwcm9wcyJpbiBlfHwiX192Y2NPcHRzImluIGV9ZnVuY3Rpb24gUWsoZSl7cmV0dXJuIGUuX19lc01vZHVsZXx8ZVtTeW1ib2wudG9TdHJpbmdUYWddPT09Ik1vZHVsZSJ8fGUuZGVmYXVsdCYmc3YoZS5kZWZhdWx0KX1jb25zdCB0dD1PYmplY3QuYXNzaWduO2Z1bmN0aW9uIFNjKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiB0KXtjb25zdCBvPXRbcl07bltyXT1XbihvKT9vLm1hcChlKTplKG8pfXJldHVybiBufWNvbnN0IGZpPSgpPT57fSxXbj1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIGpwKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiBlKW5bcl09ciBpbiB0P3Rbcl06ZVtyXTtyZXR1cm4gbn1sZXQgZ3Q9KGZ1bmN0aW9uKGUpe3JldHVybiBlW2UuTUFUQ0hFUl9OT1RfRk9VTkQ9MV09Ik1BVENIRVJfTk9UX0ZPVU5EIixlW2UuTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVD0yXT0iTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCIsZVtlLk5BVklHQVRJT05fQUJPUlRFRD00XT0iTkFWSUdBVElPTl9BQk9SVEVEIixlW2UuTkFWSUdBVElPTl9DQU5DRUxMRUQ9OF09Ik5BVklHQVRJT05fQ0FOQ0VMTEVEIixlW2UuTkFWSUdBVElPTl9EVVBMSUNBVEVEPTE2XT0iTkFWSUdBVElPTl9EVVBMSUNBVEVEIixlfSkoe30pO2NvbnN0IGl2PVN5bWJvbCgiIik7Z3QuTUFUQ0hFUl9OT1RfRk9VTkQrIiIsZ3QuTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCsiIixndC5OQVZJR0FUSU9OX0FCT1JURUQrIiIsZ3QuTkFWSUdBVElPTl9DQU5DRUxMRUQrIiIsZ3QuTkFWSUdBVElPTl9EVVBMSUNBVEVEKyIiO2Z1bmN0aW9uIEVzKGUsdCl7cmV0dXJuIHR0KG5ldyBFcnJvcix7dHlwZTplLFtpdl06ITB9LHQpfWZ1bmN0aW9uIHhyKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmaXYgaW4gZSYmKHQ9PW51bGx8fCEhKGUudHlwZSZ0KSl9Y29uc3QgWWs9WyJwYXJhbXMiLCJxdWVyeSIsImhhc2giXTtmdW5jdGlvbiBKayhlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7aWYoZS5wYXRoIT1udWxsKXJldHVybiBlLnBhdGg7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBvZiBZayluIGluIGUmJih0W25dPWVbbl0pO3JldHVybiBKU09OLnN0cmluZ2lmeSh0LG51bGwsMil9Y29uc3QgWGs9U3ltYm9sKCIiKSxWcD1TeW1ib2woIiIpLERmPVN5bWJvbCgiIiksTGY9U3ltYm9sKCIiKSx4dT1TeW1ib2woIiIpO2Z1bmN0aW9uIGF2KGUpe3JldHVybiBLZShMZil9Y29uc3QgWms9e3RyYWlsaW5nOiEwfTtmdW5jdGlvbiBlRShlLHQ9MjUsbj17fSl7aWYobj17Li4uWmssLi4ubn0sIU51bWJlci5pc0Zpbml0ZSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBgd2FpdGAgdG8gYmUgYSBmaW5pdGUgbnVtYmVyIik7bGV0IHIsbyxzPVtdLGksYTtjb25zdCBsPShmLGQpPT4oaT10RShlLGYsZCksaS5maW5hbGx5KCgpPT57aWYoaT1udWxsLG4udHJhaWxpbmcmJmEmJiFvKXtjb25zdCBwPWwoZixhKTtyZXR1cm4gYT1udWxsLHB9fSksaSksdT1mdW5jdGlvbiguLi5mKXtyZXR1cm4gbi50cmFpbGluZyYmKGE9ZiksaXx8bmV3IFByb21pc2UoZD0+e2NvbnN0IHA9IW8mJm4ubGVhZGluZztjbGVhclRpbWVvdXQobyksbz1zZXRUaW1lb3V0KCgpPT57bz1udWxsO2NvbnN0IG09bi5sZWFkaW5nP3I6bCh0aGlzLGYpO2E9bnVsbDtmb3IoY29uc3QgeSBvZiBzKXkobSk7cz1bXX0sdCkscD8ocj1sKHRoaXMsZiksZChyKSk6cy5wdXNoKGQpfSl9LGM9Zj0+e2YmJihjbGVhclRpbWVvdXQoZiksbz1udWxsKX07cmV0dXJuIHUuaXNQZW5kaW5nPSgpPT4hIW8sdS5jYW5jZWw9KCk9PntjKG8pLHM9W10sYT1udWxsfSx1LmZsdXNoPSgpPT57aWYoYyhvKSwhYXx8aSlyZXR1cm47Y29uc3QgZj1hO3JldHVybiBhPW51bGwsbCh0aGlzLGYpfSx1fWFzeW5jIGZ1bmN0aW9uIHRFKGUsdCxuKXtyZXR1cm4gYXdhaXQgZS5hcHBseSh0LG4pfWNvbnN0IGx2PS8jL2csbkU9LyYvZyxyRT0vXC8vZyxvRT0vPS9nLHNFPS9cPy9nLGN2PS9cKy9nLGlFPS8lNUIvZyxhRT0vJTVEL2csdXY9LyU1RS9nLGxFPS8lNjAvZyxmdj0vJTdCL2csY0U9LyU3Qy9nLGR2PS8lN0QvZyx1RT0vJTIwL2c7ZnVuY3Rpb24gJGYoZSl7cmV0dXJuIGU9PW51bGw/IiI6ZW5jb2RlVVJJKCIiK2UpLnJlcGxhY2UoY0UsInwiKS5yZXBsYWNlKGlFLCJbIikucmVwbGFjZShhRSwiXSIpfWZ1bmN0aW9uIGZFKGUpe3JldHVybiAkZihlKS5yZXBsYWNlKGZ2LCJ7IikucmVwbGFjZShkdiwifSIpLnJlcGxhY2UodXYsIl4iKX1mdW5jdGlvbiBTdShlKXtyZXR1cm4gJGYoZSkucmVwbGFjZShjdiwiJTJCIikucmVwbGFjZSh1RSwiKyIpLnJlcGxhY2UobHYsIiUyMyIpLnJlcGxhY2UobkUsIiUyNiIpLnJlcGxhY2UobEUsImAiKS5yZXBsYWNlKGZ2LCJ7IikucmVwbGFjZShkdiwifSIpLnJlcGxhY2UodXYsIl4iKX1mdW5jdGlvbiBkRShlKXtyZXR1cm4gU3UoZSkucmVwbGFjZShvRSwiJTNEIil9ZnVuY3Rpb24gcEUoZSl7cmV0dXJuICRmKGUpLnJlcGxhY2UobHYsIiUyMyIpLnJlcGxhY2Uoc0UsIiUzRiIpfWZ1bmN0aW9uIG1FKGUpe3JldHVybiBwRShlKS5yZXBsYWNlKHJFLCIlMkYiKX1mdW5jdGlvbiBFaShlKXtpZihlPT1udWxsKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCIiK2UpfWNhdGNoe31yZXR1cm4iIitlfWNvbnN0IGhFPS9cLyQvLGdFPWU9PmUucmVwbGFjZShoRSwiIik7ZnVuY3Rpb24ga2MoZSx0LG49Ii8iKXtsZXQgcixvPXt9LHM9IiIsaT0iIjtjb25zdCBhPXQuaW5kZXhPZigiIyIpO2xldCBsPXQuaW5kZXhPZigiPyIpO3JldHVybiBsPWE+PTAmJmw+YT8tMTpsLGw+PTAmJihyPXQuc2xpY2UoMCxsKSxzPXQuc2xpY2UobCxhPjA/YTp0Lmxlbmd0aCksbz1lKHMuc2xpY2UoMSkpKSxhPj0wJiYocj1yfHx0LnNsaWNlKDAsYSksaT10LnNsaWNlKGEsdC5sZW5ndGgpKSxyPXdFKHI/P3Qsbikse2Z1bGxQYXRoOnIrcytpLHBhdGg6cixxdWVyeTpvLGhhc2g6RWkoaSl9fWZ1bmN0aW9uIHlFKGUsdCl7Y29uc3Qgbj10LnF1ZXJ5P2UodC5xdWVyeSk6IiI7cmV0dXJuIHQucGF0aCsobiYmIj8iKStuKyh0Lmhhc2h8fCIiKX1mdW5jdGlvbiBVcChlLHQpe3JldHVybiF0fHwhZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodC50b0xvd2VyQ2FzZSgpKT9lOmUuc2xpY2UodC5sZW5ndGgpfHwiLyJ9ZnVuY3Rpb24gdkUoZSx0LG4pe2NvbnN0IHI9dC5tYXRjaGVkLmxlbmd0aC0xLG89bi5tYXRjaGVkLmxlbmd0aC0xO3JldHVybiByPi0xJiZyPT09byYmVHModC5tYXRjaGVkW3JdLG4ubWF0Y2hlZFtvXSkmJnB2KHQucGFyYW1zLG4ucGFyYW1zKSYmZSh0LnF1ZXJ5KT09PWUobi5xdWVyeSkmJnQuaGFzaD09PW4uaGFzaH1mdW5jdGlvbiBUcyhlLHQpe3JldHVybihlLmFsaWFzT2Z8fGUpPT09KHQuYWxpYXNPZnx8dCl9ZnVuY3Rpb24gcHYoZSx0KXtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGghPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuIGluIGUpaWYoIWJFKGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYkUoZSx0KXtyZXR1cm4gV24oZSk/SHAoZSx0KTpXbih0KT9IcCh0LGUpOihlJiZlLnZhbHVlT2YoKSk9PT0odCYmdC52YWx1ZU9mKCkpfWZ1bmN0aW9uIEhwKGUsdCl7cmV0dXJuIFduKHQpP2UubGVuZ3RoPT09dC5sZW5ndGgmJmUuZXZlcnkoKG4scik9Pm49PT10W3JdKTplLmxlbmd0aD09PTEmJmVbMF09PT10fWZ1bmN0aW9uIHdFKGUsdCl7aWYoZS5zdGFydHNXaXRoKCIvIikpcmV0dXJuIGU7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj10LnNwbGl0KCIvIikscj1lLnNwbGl0KCIvIiksbz1yW3IubGVuZ3RoLTFdOyhvPT09Ii4uInx8bz09PSIuIikmJnIucHVzaCgiIik7bGV0IHM9bi5sZW5ndGgtMSxpLGE7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKylpZihhPXJbaV0sYSE9PSIuIilpZihhPT09Ii4uIilzPjEmJnMtLTtlbHNlIGJyZWFrO3JldHVybiBuLnNsaWNlKDAscykuam9pbigiLyIpKyIvIityLnNsaWNlKGkpLmpvaW4oIi8iKX1jb25zdCBPbj17cGF0aDoiLyIsbmFtZTp2b2lkIDAscGFyYW1zOnt9LHF1ZXJ5Ont9LGhhc2g6IiIsZnVsbFBhdGg6Ii8iLG1hdGNoZWQ6W10sbWV0YTp7fSxyZWRpcmVjdGVkRnJvbTp2b2lkIDB9O2xldCBrdT0oZnVuY3Rpb24oZSl7cmV0dXJuIGUucG9wPSJwb3AiLGUucHVzaD0icHVzaCIsZX0pKHt9KSxFYz0oZnVuY3Rpb24oZSl7cmV0dXJuIGUuYmFjaz0iYmFjayIsZS5mb3J3YXJkPSJmb3J3YXJkIixlLnVua25vd249IiIsZX0pKHt9KTtmdW5jdGlvbiBfRShlKXtpZighZSlpZihzcyl7Y29uc3QgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIik7ZT10JiZ0LmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiLyIsZT1lLnJlcGxhY2UoL15cdys6XC9cL1teXC9dKy8sIiIpfWVsc2UgZT0iLyI7cmV0dXJuIGVbMF0hPT0iLyImJmVbMF0hPT0iIyImJihlPSIvIitlKSxnRShlKX1jb25zdCB4RT0vXlteI10rIy87ZnVuY3Rpb24gU0UoZSx0KXtyZXR1cm4gZS5yZXBsYWNlKHhFLCIjIikrdH1mdW5jdGlvbiBrRShlLHQpe2NvbnN0IG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57YmVoYXZpb3I6dC5iZWhhdmlvcixsZWZ0OnIubGVmdC1uLmxlZnQtKHQubGVmdHx8MCksdG9wOnIudG9wLW4udG9wLSh0LnRvcHx8MCl9fWNvbnN0IFBsPSgpPT4oe2xlZnQ6d2luZG93LnNjcm9sbFgsdG9wOndpbmRvdy5zY3JvbGxZfSk7ZnVuY3Rpb24gRUUoZSl7bGV0IHQ7aWYoImVsImluIGUpe2NvbnN0IG49ZS5lbCxyPXR5cGVvZiBuPT0ic3RyaW5nIiYmbi5zdGFydHNXaXRoKCIjIiksbz10eXBlb2Ygbj09InN0cmluZyI/cj9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChuLnNsaWNlKDEpKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4pOm47aWYoIW8pcmV0dXJuO3Q9a0UobyxlKX1lbHNlIHQ9ZTsic2Nyb2xsQmVoYXZpb3IiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlP3dpbmRvdy5zY3JvbGxUbyh0KTp3aW5kb3cuc2Nyb2xsVG8odC5sZWZ0IT1udWxsP3QubGVmdDp3aW5kb3cuc2Nyb2xsWCx0LnRvcCE9bnVsbD90LnRvcDp3aW5kb3cuc2Nyb2xsWSl9ZnVuY3Rpb24gV3AoZSx0KXtyZXR1cm4oaGlzdG9yeS5zdGF0ZT9oaXN0b3J5LnN0YXRlLnBvc2l0aW9uLXQ6LTEpK2V9Y29uc3QgRXU9bmV3IE1hcDtmdW5jdGlvbiBURShlLHQpe0V1LnNldChlLHQpfWZ1bmN0aW9uIENFKGUpe2NvbnN0IHQ9RXUuZ2V0KGUpO3JldHVybiBFdS5kZWxldGUoZSksdH1mdW5jdGlvbiBBRShlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifHxlJiZ0eXBlb2YgZT09Im9iamVjdCJ9ZnVuY3Rpb24gbXYoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJzeW1ib2wifWZ1bmN0aW9uIE9FKGUpe2NvbnN0IHQ9e307aWYoZT09PSIifHxlPT09Ij8iKXJldHVybiB0O2NvbnN0IG49KGVbMF09PT0iPyI/ZS5zbGljZSgxKTplKS5zcGxpdCgiJiIpO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7KytyKXtjb25zdCBvPW5bcl0ucmVwbGFjZShjdiwiICIpLHM9by5pbmRleE9mKCI9IiksaT1FaShzPDA/bzpvLnNsaWNlKDAscykpLGE9czwwP251bGw6RWkoby5zbGljZShzKzEpKTtpZihpIGluIHQpe2xldCBsPXRbaV07V24obCl8fChsPXRbaV09W2xdKSxsLnB1c2goYSl9ZWxzZSB0W2ldPWF9cmV0dXJuIHR9ZnVuY3Rpb24gR3AoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuIGluIGUpe2NvbnN0IHI9ZVtuXTtpZihuPWRFKG4pLHI9PW51bGwpe3IhPT12b2lkIDAmJih0Kz0odC5sZW5ndGg/IiYiOiIiKStuKTtjb250aW51ZX0oV24ocik/ci5tYXAobz0+byYmU3UobykpOltyJiZTdShyKV0pLmZvckVhY2gobz0+e28hPT12b2lkIDAmJih0Kz0odC5sZW5ndGg/IiYiOiIiKStuLG8hPW51bGwmJih0Kz0iPSIrbykpfSl9cmV0dXJuIHR9ZnVuY3Rpb24gUEUoZSl7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBpbiBlKXtjb25zdCByPWVbbl07ciE9PXZvaWQgMCYmKHRbbl09V24ocik/ci5tYXAobz0+bz09bnVsbD9udWxsOiIiK28pOnI9PW51bGw/cjoiIityKX1yZXR1cm4gdH1mdW5jdGlvbiBVcygpe2xldCBlPVtdO2Z1bmN0aW9uIHQocil7cmV0dXJuIGUucHVzaChyKSwoKT0+e2NvbnN0IG89ZS5pbmRleE9mKHIpO28+LTEmJmUuc3BsaWNlKG8sMSl9fWZ1bmN0aW9uIG4oKXtlPVtdfXJldHVybnthZGQ6dCxsaXN0OigpPT5lLnNsaWNlKCkscmVzZXQ6bn19ZnVuY3Rpb24gcm8oZSx0LG4scixvLHM9aT0+aSgpKXtjb25zdCBpPXImJihyLmVudGVyQ2FsbGJhY2tzW29dPXIuZW50ZXJDYWxsYmFja3Nbb118fFtdKTtyZXR1cm4oKT0+bmV3IFByb21pc2UoKGEsbCk9Pntjb25zdCB1PWQ9PntkPT09ITE/bChFcyhndC5OQVZJR0FUSU9OX0FCT1JURUQse2Zyb206bix0bzp0fSkpOmQgaW5zdGFuY2VvZiBFcnJvcj9sKGQpOkFFKGQpP2woRXMoZ3QuTkFWSUdBVElPTl9HVUFSRF9SRURJUkVDVCx7ZnJvbTp0LHRvOmR9KSk6KGkmJnIuZW50ZXJDYWxsYmFja3Nbb109PT1pJiZ0eXBlb2YgZD09ImZ1bmN0aW9uIiYmaS5wdXNoKGQpLGEoKSl9LGM9cygoKT0+ZS5jYWxsKHImJnIuaW5zdGFuY2VzW29dLHQsbix1KSk7bGV0IGY9UHJvbWlzZS5yZXNvbHZlKGMpO2UubGVuZ3RoPDMmJihmPWYudGhlbih1KSksZi5jYXRjaChkPT5sKGQpKX0pfWZ1bmN0aW9uIFRjKGUsdCxuLHIsbz1zPT5zKCkpe2NvbnN0IHM9W107Zm9yKGNvbnN0IGkgb2YgZSlmb3IoY29uc3QgYSBpbiBpLmNvbXBvbmVudHMpe2xldCBsPWkuY29tcG9uZW50c1thXTtpZighKHQhPT0iYmVmb3JlUm91dGVFbnRlciImJiFpLmluc3RhbmNlc1thXSkpaWYoc3YobCkpe2NvbnN0IHU9KGwuX192Y2NPcHRzfHxsKVt0XTt1JiZzLnB1c2gocm8odSxuLHIsaSxhLG8pKX1lbHNle2xldCB1PWwoKTtzLnB1c2goKCk9PnUudGhlbihjPT57aWYoIWMpdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIGNvbXBvbmVudCAiJHthfSIgYXQgIiR7aS5wYXRofSJgKTtjb25zdCBmPVFrKGMpP2MuZGVmYXVsdDpjO2kubW9kc1thXT1jLGkuY29tcG9uZW50c1thXT1mO2NvbnN0IGQ9KGYuX192Y2NPcHRzfHxmKVt0XTtyZXR1cm4gZCYmcm8oZCxuLHIsaSxhLG8pKCl9KSl9fXJldHVybiBzfWZ1bmN0aW9uIElFKGUsdCl7Y29uc3Qgbj1bXSxyPVtdLG89W10scz1NYXRoLm1heCh0Lm1hdGNoZWQubGVuZ3RoLGUubWF0Y2hlZC5sZW5ndGgpO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IGE9dC5tYXRjaGVkW2ldO2EmJihlLm1hdGNoZWQuZmluZCh1PT5Ucyh1LGEpKT9yLnB1c2goYSk6bi5wdXNoKGEpKTtjb25zdCBsPWUubWF0Y2hlZFtpXTtsJiYodC5tYXRjaGVkLmZpbmQodT0+VHModSxsKSl8fG8ucHVzaChsKSl9cmV0dXJuW24scixvXX1sZXQgUkU9KCk9PmxvY2F0aW9uLnByb3RvY29sKyIvLyIrbG9jYXRpb24uaG9zdDtmdW5jdGlvbiBodihlLHQpe2NvbnN0e3BhdGhuYW1lOm4sc2VhcmNoOnIsaGFzaDpvfT10LHM9ZS5pbmRleE9mKCIjIik7aWYocz4tMSl7bGV0IGk9by5pbmNsdWRlcyhlLnNsaWNlKHMpKT9lLnNsaWNlKHMpLmxlbmd0aDoxLGE9by5zbGljZShpKTtyZXR1cm4gYVswXSE9PSIvIiYmKGE9Ii8iK2EpLFVwKGEsIiIpfXJldHVybiBVcChuLGUpK3Irb31mdW5jdGlvbiBORShlLHQsbixyKXtsZXQgbz1bXSxzPVtdLGk9bnVsbDtjb25zdCBhPSh7c3RhdGU6ZH0pPT57Y29uc3QgcD1odihlLGxvY2F0aW9uKSxtPW4udmFsdWUseT10LnZhbHVlO2xldCBfPTA7aWYoZCl7aWYobi52YWx1ZT1wLHQudmFsdWU9ZCxpJiZpPT09bSl7aT1udWxsO3JldHVybn1fPXk/ZC5wb3NpdGlvbi15LnBvc2l0aW9uOjB9ZWxzZSByKHApO28uZm9yRWFjaCh3PT57dyhuLnZhbHVlLG0se2RlbHRhOl8sdHlwZTprdS5wb3AsZGlyZWN0aW9uOl8/Xz4wP0VjLmZvcndhcmQ6RWMuYmFjazpFYy51bmtub3dufSl9KX07ZnVuY3Rpb24gbCgpe2k9bi52YWx1ZX1mdW5jdGlvbiB1KGQpe28ucHVzaChkKTtjb25zdCBwPSgpPT57Y29uc3QgbT1vLmluZGV4T2YoZCk7bT4tMSYmby5zcGxpY2UobSwxKX07cmV0dXJuIHMucHVzaChwKSxwfWZ1bmN0aW9uIGMoKXtpZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIil7Y29uc3R7aGlzdG9yeTpkfT13aW5kb3c7aWYoIWQuc3RhdGUpcmV0dXJuO2QucmVwbGFjZVN0YXRlKHR0KHt9LGQuc3RhdGUse3Njcm9sbDpQbCgpfSksIiIpfX1mdW5jdGlvbiBmKCl7Zm9yKGNvbnN0IGQgb2YgcylkKCk7cz1bXSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLGEpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsYyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsYyl9cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsYSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIixjKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixjKSx7cGF1c2VMaXN0ZW5lcnM6bCxsaXN0ZW46dSxkZXN0cm95OmZ9fWZ1bmN0aW9uIEtwKGUsdCxuLHI9ITEsbz0hMSl7cmV0dXJue2JhY2s6ZSxjdXJyZW50OnQsZm9yd2FyZDpuLHJlcGxhY2VkOnIscG9zaXRpb246d2luZG93Lmhpc3RvcnkubGVuZ3RoLHNjcm9sbDpvP1BsKCk6bnVsbH19ZnVuY3Rpb24gREUoZSl7Y29uc3R7aGlzdG9yeTp0LGxvY2F0aW9uOm59PXdpbmRvdyxyPXt2YWx1ZTpodihlLG4pfSxvPXt2YWx1ZTp0LnN0YXRlfTtvLnZhbHVlfHxzKHIudmFsdWUse2JhY2s6bnVsbCxjdXJyZW50OnIudmFsdWUsZm9yd2FyZDpudWxsLHBvc2l0aW9uOnQubGVuZ3RoLTEscmVwbGFjZWQ6ITAsc2Nyb2xsOm51bGx9LCEwKTtmdW5jdGlvbiBzKGwsdSxjKXtjb25zdCBmPWUuaW5kZXhPZigiIyIpLGQ9Zj4tMT8obi5ob3N0JiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIik/ZTplLnNsaWNlKGYpKStsOlJFKCkrZStsO3RyeXt0W2M/InJlcGxhY2VTdGF0ZSI6InB1c2hTdGF0ZSJdKHUsIiIsZCksby52YWx1ZT11fWNhdGNoe25bYz8icmVwbGFjZSI6ImFzc2lnbiJdKGQpfX1mdW5jdGlvbiBpKGwsdSl7cyhsLHR0KHt9LHQuc3RhdGUsS3Aoby52YWx1ZS5iYWNrLGwsby52YWx1ZS5mb3J3YXJkLCEwKSx1LHtwb3NpdGlvbjpvLnZhbHVlLnBvc2l0aW9ufSksITApLHIudmFsdWU9bH1mdW5jdGlvbiBhKGwsdSl7Y29uc3QgYz10dCh7fSxvLnZhbHVlLHQuc3RhdGUse2ZvcndhcmQ6bCxzY3JvbGw6UGwoKX0pO3MoYy5jdXJyZW50LGMsITApLHMobCx0dCh7fSxLcChyLnZhbHVlLGwsbnVsbCkse3Bvc2l0aW9uOmMucG9zaXRpb24rMX0sdSksITEpLHIudmFsdWU9bH1yZXR1cm57bG9jYXRpb246cixzdGF0ZTpvLHB1c2g6YSxyZXBsYWNlOml9fWZ1bmN0aW9uIExFKGUpe2U9X0UoZSk7Y29uc3QgdD1ERShlKSxuPU5FKGUsdC5zdGF0ZSx0LmxvY2F0aW9uLHQucmVwbGFjZSk7ZnVuY3Rpb24gcihzLGk9ITApe2l8fG4ucGF1c2VMaXN0ZW5lcnMoKSxoaXN0b3J5LmdvKHMpfWNvbnN0IG89dHQoe2xvY2F0aW9uOiIiLGJhc2U6ZSxnbzpyLGNyZWF0ZUhyZWY6U0UuYmluZChudWxsLGUpfSx0LG4pO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobywibG9jYXRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+dC5sb2NhdGlvbi52YWx1ZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJzdGF0ZSIse2VudW1lcmFibGU6ITAsZ2V0OigpPT50LnN0YXRlLnZhbHVlfSksb31sZXQgUG89KGZ1bmN0aW9uKGUpe3JldHVybiBlW2UuU3RhdGljPTBdPSJTdGF0aWMiLGVbZS5QYXJhbT0xXT0iUGFyYW0iLGVbZS5Hcm91cD0yXT0iR3JvdXAiLGV9KSh7fSk7dmFyIFJ0PShmdW5jdGlvbihlKXtyZXR1cm4gZVtlLlN0YXRpYz0wXT0iU3RhdGljIixlW2UuUGFyYW09MV09IlBhcmFtIixlW2UuUGFyYW1SZWdFeHA9Ml09IlBhcmFtUmVnRXhwIixlW2UuUGFyYW1SZWdFeHBFbmQ9M109IlBhcmFtUmVnRXhwRW5kIixlW2UuRXNjYXBlTmV4dD00XT0iRXNjYXBlTmV4dCIsZX0pKFJ0fHx7fSk7Y29uc3QgJEU9e3R5cGU6UG8uU3RhdGljLHZhbHVlOiIifSxNRT0vW2EtekEtWjAtOV9dLztmdW5jdGlvbiBCRShlKXtpZighZSlyZXR1cm5bW11dO2lmKGU9PT0iLyIpcmV0dXJuW1skRV1dO2lmKCFlLnN0YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aCAiJHtlfSJgKTtmdW5jdGlvbiB0KHApe3Rocm93IG5ldyBFcnJvcihgRVJSICgke259KS8iJHt1fSI6ICR7cH1gKX1sZXQgbj1SdC5TdGF0aWMscj1uO2NvbnN0IG89W107bGV0IHM7ZnVuY3Rpb24gaSgpe3MmJm8ucHVzaChzKSxzPVtdfWxldCBhPTAsbCx1PSIiLGM9IiI7ZnVuY3Rpb24gZigpe3UmJihuPT09UnQuU3RhdGljP3MucHVzaCh7dHlwZTpQby5TdGF0aWMsdmFsdWU6dX0pOm49PT1SdC5QYXJhbXx8bj09PVJ0LlBhcmFtUmVnRXhwfHxuPT09UnQuUGFyYW1SZWdFeHBFbmQ/KHMubGVuZ3RoPjEmJihsPT09IioifHxsPT09IisiKSYmdChgQSByZXBlYXRhYmxlIHBhcmFtICgke3V9KSBtdXN0IGJlIGFsb25lIGluIGl0cyBzZWdtZW50LiBlZzogJy86aWRzKy5gKSxzLnB1c2goe3R5cGU6UG8uUGFyYW0sdmFsdWU6dSxyZWdleHA6YyxyZXBlYXRhYmxlOmw9PT0iKiJ8fGw9PT0iKyIsb3B0aW9uYWw6bD09PSIqInx8bD09PSI/In0pKTp0KCJJbnZhbGlkIHN0YXRlIHRvIGNvbnN1bWUgYnVmZmVyIiksdT0iIil9ZnVuY3Rpb24gZCgpe3UrPWx9Zm9yKDthPGUubGVuZ3RoOyl7aWYobD1lW2ErK10sbD09PSJcXCImJm4hPT1SdC5QYXJhbVJlZ0V4cCl7cj1uLG49UnQuRXNjYXBlTmV4dDtjb250aW51ZX1zd2l0Y2gobil7Y2FzZSBSdC5TdGF0aWM6bD09PSIvIj8odSYmZigpLGkoKSk6bD09PSI6Ij8oZigpLG49UnQuUGFyYW0pOmQoKTticmVhaztjYXNlIFJ0LkVzY2FwZU5leHQ6ZCgpLG49cjticmVhaztjYXNlIFJ0LlBhcmFtOmw9PT0iKCI/bj1SdC5QYXJhbVJlZ0V4cDpNRS50ZXN0KGwpP2QoKTooZigpLG49UnQuU3RhdGljLGwhPT0iKiImJmwhPT0iPyImJmwhPT0iKyImJmEtLSk7YnJlYWs7Y2FzZSBSdC5QYXJhbVJlZ0V4cDpsPT09IikiP2NbYy5sZW5ndGgtMV09PSJcXCI/Yz1jLnNsaWNlKDAsLTEpK2w6bj1SdC5QYXJhbVJlZ0V4cEVuZDpjKz1sO2JyZWFrO2Nhc2UgUnQuUGFyYW1SZWdFeHBFbmQ6ZigpLG49UnQuU3RhdGljLGwhPT0iKiImJmwhPT0iPyImJmwhPT0iKyImJmEtLSxjPSIiO2JyZWFrO2RlZmF1bHQ6dCgiVW5rbm93biBzdGF0ZSIpO2JyZWFrfX1yZXR1cm4gbj09PVJ0LlBhcmFtUmVnRXhwJiZ0KGBVbmZpbmlzaGVkIGN1c3RvbSBSZWdFeHAgZm9yIHBhcmFtICIke3V9ImApLGYoKSxpKCksb31jb25zdCBRcD0iW14vXSs/IixxRT17c2Vuc2l0aXZlOiExLHN0cmljdDohMSxzdGFydDohMCxlbmQ6ITB9O3ZhciB0bj0oZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5fbXVsdGlwbGllcj0xMF09Il9tdWx0aXBsaWVyIixlW2UuUm9vdD05MF09IlJvb3QiLGVbZS5TZWdtZW50PTQwXT0iU2VnbWVudCIsZVtlLlN1YlNlZ21lbnQ9MzBdPSJTdWJTZWdtZW50IixlW2UuU3RhdGljPTQwXT0iU3RhdGljIixlW2UuRHluYW1pYz0yMF09IkR5bmFtaWMiLGVbZS5Cb251c0N1c3RvbVJlZ0V4cD0xMF09IkJvbnVzQ3VzdG9tUmVnRXhwIixlW2UuQm9udXNXaWxkY2FyZD0tNTBdPSJCb251c1dpbGRjYXJkIixlW2UuQm9udXNSZXBlYXRhYmxlPS0yMF09IkJvbnVzUmVwZWF0YWJsZSIsZVtlLkJvbnVzT3B0aW9uYWw9LThdPSJCb251c09wdGlvbmFsIixlW2UuQm9udXNTdHJpY3Q9LjcwMDAwMDAwMDAwMDAwMDFdPSJCb251c1N0cmljdCIsZVtlLkJvbnVzQ2FzZVNlbnNpdGl2ZT0uMjVdPSJCb251c0Nhc2VTZW5zaXRpdmUiLGV9KSh0bnx8e30pO2NvbnN0IEZFPS9bLisqP14ke30oKVtcXS9cXF0vZztmdW5jdGlvbiB6RShlLHQpe2NvbnN0IG49dHQoe30scUUsdCkscj1bXTtsZXQgbz1uLnN0YXJ0PyJeIjoiIjtjb25zdCBzPVtdO2Zvcihjb25zdCB1IG9mIGUpe2NvbnN0IGM9dS5sZW5ndGg/W106W3RuLlJvb3RdO24uc3RyaWN0JiYhdS5sZW5ndGgmJihvKz0iLyIpO2ZvcihsZXQgZj0wO2Y8dS5sZW5ndGg7ZisrKXtjb25zdCBkPXVbZl07bGV0IHA9dG4uU2VnbWVudCsobi5zZW5zaXRpdmU/dG4uQm9udXNDYXNlU2Vuc2l0aXZlOjApO2lmKGQudHlwZT09PVBvLlN0YXRpYylmfHwobys9Ii8iKSxvKz1kLnZhbHVlLnJlcGxhY2UoRkUsIlxcJCYiKSxwKz10bi5TdGF0aWM7ZWxzZSBpZihkLnR5cGU9PT1Qby5QYXJhbSl7Y29uc3R7dmFsdWU6bSxyZXBlYXRhYmxlOnksb3B0aW9uYWw6XyxyZWdleHA6d309ZDtzLnB1c2goe25hbWU6bSxyZXBlYXRhYmxlOnksb3B0aW9uYWw6X30pO2NvbnN0IHY9d3x8UXA7aWYodiE9PVFwKXtwKz10bi5Cb251c0N1c3RvbVJlZ0V4cDt0cnl7bmV3IFJlZ0V4cChgKCR7dn0pYCl9Y2F0Y2goYil7dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGN1c3RvbSBSZWdFeHAgZm9yIHBhcmFtICIke219IiAoJHt2fSk6IGArYi5tZXNzYWdlKX19bGV0IGg9eT9gKCg/OiR7dn0pKD86Lyg/OiR7dn0pKSopYDpgKCR7dn0pYDtmfHwoaD1fJiZ1Lmxlbmd0aDwyP2AoPzovJHtofSlgOiIvIitoKSxfJiYoaCs9Ij8iKSxvKz1oLHArPXRuLkR5bmFtaWMsXyYmKHArPXRuLkJvbnVzT3B0aW9uYWwpLHkmJihwKz10bi5Cb251c1JlcGVhdGFibGUpLHY9PT0iLioiJiYocCs9dG4uQm9udXNXaWxkY2FyZCl9Yy5wdXNoKHApfXIucHVzaChjKX1pZihuLnN0cmljdCYmbi5lbmQpe2NvbnN0IHU9ci5sZW5ndGgtMTtyW3VdW3JbdV0ubGVuZ3RoLTFdKz10bi5Cb251c1N0cmljdH1uLnN0cmljdHx8KG8rPSIvPyIpLG4uZW5kP28rPSIkIjpuLnN0cmljdCYmIW8uZW5kc1dpdGgoIi8iKSYmKG8rPSIoPzovfCQpIik7Y29uc3QgaT1uZXcgUmVnRXhwKG8sbi5zZW5zaXRpdmU/IiI6ImkiKTtmdW5jdGlvbiBhKHUpe2NvbnN0IGM9dS5tYXRjaChpKSxmPXt9O2lmKCFjKXJldHVybiBudWxsO2ZvcihsZXQgZD0xO2Q8Yy5sZW5ndGg7ZCsrKXtjb25zdCBwPWNbZF18fCIiLG09c1tkLTFdO2ZbbS5uYW1lXT1wJiZtLnJlcGVhdGFibGU/cC5zcGxpdCgiLyIpOnB9cmV0dXJuIGZ9ZnVuY3Rpb24gbCh1KXtsZXQgYz0iIixmPSExO2Zvcihjb25zdCBkIG9mIGUpeyghZnx8IWMuZW5kc1dpdGgoIi8iKSkmJihjKz0iLyIpLGY9ITE7Zm9yKGNvbnN0IHAgb2YgZClpZihwLnR5cGU9PT1Qby5TdGF0aWMpYys9cC52YWx1ZTtlbHNlIGlmKHAudHlwZT09PVBvLlBhcmFtKXtjb25zdHt2YWx1ZTptLHJlcGVhdGFibGU6eSxvcHRpb25hbDpffT1wLHc9bSBpbiB1P3VbbV06IiI7aWYoV24odykmJiF5KXRocm93IG5ldyBFcnJvcihgUHJvdmlkZWQgcGFyYW0gIiR7bX0iIGlzIGFuIGFycmF5IGJ1dCBpdCBpcyBub3QgcmVwZWF0YWJsZSAoKiBvciArIG1vZGlmaWVycylgKTtjb25zdCB2PVduKHcpP3cuam9pbigiLyIpOnc7aWYoIXYpaWYoXylkLmxlbmd0aDwyJiYoYy5lbmRzV2l0aCgiLyIpP2M9Yy5zbGljZSgwLC0xKTpmPSEwKTtlbHNlIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyByZXF1aXJlZCBwYXJhbSAiJHttfSJgKTtjKz12fX1yZXR1cm4gY3x8Ii8ifXJldHVybntyZTppLHNjb3JlOnIsa2V5czpzLHBhcnNlOmEsc3RyaW5naWZ5Omx9fWZ1bmN0aW9uIGpFKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgmJm48dC5sZW5ndGg7KXtjb25zdCByPXRbbl0tZVtuXTtpZihyKXJldHVybiByO24rK31yZXR1cm4gZS5sZW5ndGg8dC5sZW5ndGg/ZS5sZW5ndGg9PT0xJiZlWzBdPT09dG4uU3RhdGljK3RuLlNlZ21lbnQ/LTE6MTplLmxlbmd0aD50Lmxlbmd0aD90Lmxlbmd0aD09PTEmJnRbMF09PT10bi5TdGF0aWMrdG4uU2VnbWVudD8xOi0xOjB9ZnVuY3Rpb24gZ3YoZSx0KXtsZXQgbj0wO2NvbnN0IHI9ZS5zY29yZSxvPXQuc2NvcmU7Zm9yKDtuPHIubGVuZ3RoJiZuPG8ubGVuZ3RoOyl7Y29uc3Qgcz1qRShyW25dLG9bbl0pO2lmKHMpcmV0dXJuIHM7bisrfWlmKE1hdGguYWJzKG8ubGVuZ3RoLXIubGVuZ3RoKT09PTEpe2lmKFlwKHIpKXJldHVybiAxO2lmKFlwKG8pKXJldHVybi0xfXJldHVybiBvLmxlbmd0aC1yLmxlbmd0aH1mdW5jdGlvbiBZcChlKXtjb25zdCB0PWVbZS5sZW5ndGgtMV07cmV0dXJuIGUubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV08MH1jb25zdCBWRT17c3RyaWN0OiExLGVuZDohMCxzZW5zaXRpdmU6ITF9O2Z1bmN0aW9uIFVFKGUsdCxuKXtjb25zdCByPXpFKEJFKGUucGF0aCksbiksbz10dChyLHtyZWNvcmQ6ZSxwYXJlbnQ6dCxjaGlsZHJlbjpbXSxhbGlhczpbXX0pO3JldHVybiB0JiYhby5yZWNvcmQuYWxpYXNPZj09IXQucmVjb3JkLmFsaWFzT2YmJnQuY2hpbGRyZW4ucHVzaChvKSxvfWZ1bmN0aW9uIEhFKGUsdCl7Y29uc3Qgbj1bXSxyPW5ldyBNYXA7dD1qcChWRSx0KTtmdW5jdGlvbiBvKGYpe3JldHVybiByLmdldChmKX1mdW5jdGlvbiBzKGYsZCxwKXtjb25zdCBtPSFwLHk9WHAoZik7eS5hbGlhc09mPXAmJnAucmVjb3JkO2NvbnN0IF89anAodCxmKSx3PVt5XTtpZigiYWxpYXMiaW4gZil7Y29uc3QgYj10eXBlb2YgZi5hbGlhcz09InN0cmluZyI/W2YuYWxpYXNdOmYuYWxpYXM7Zm9yKGNvbnN0IHggb2YgYil3LnB1c2goWHAodHQoe30seSx7Y29tcG9uZW50czpwP3AucmVjb3JkLmNvbXBvbmVudHM6eS5jb21wb25lbnRzLHBhdGg6eCxhbGlhc09mOnA/cC5yZWNvcmQ6eX0pKSl9bGV0IHYsaDtmb3IoY29uc3QgYiBvZiB3KXtjb25zdHtwYXRoOnh9PWI7aWYoZCYmeFswXSE9PSIvIil7Y29uc3QgUz1kLnJlY29yZC5wYXRoLGs9U1tTLmxlbmd0aC0xXT09PSIvIj8iIjoiLyI7Yi5wYXRoPWQucmVjb3JkLnBhdGgrKHgmJmsreCl9aWYodj1VRShiLGQsXykscD9wLmFsaWFzLnB1c2godik6KGg9aHx8dixoIT09diYmaC5hbGlhcy5wdXNoKHYpLG0mJmYubmFtZSYmIVpwKHYpJiZpKGYubmFtZSkpLHl2KHYpJiZsKHYpLHkuY2hpbGRyZW4pe2NvbnN0IFM9eS5jaGlsZHJlbjtmb3IobGV0IGs9MDtrPFMubGVuZ3RoO2srKylzKFNba10sdixwJiZwLmNoaWxkcmVuW2tdKX1wPXB8fHZ9cmV0dXJuIGg/KCk9PntpKGgpfTpmaX1mdW5jdGlvbiBpKGYpe2lmKG12KGYpKXtjb25zdCBkPXIuZ2V0KGYpO2QmJihyLmRlbGV0ZShmKSxuLnNwbGljZShuLmluZGV4T2YoZCksMSksZC5jaGlsZHJlbi5mb3JFYWNoKGkpLGQuYWxpYXMuZm9yRWFjaChpKSl9ZWxzZXtjb25zdCBkPW4uaW5kZXhPZihmKTtkPi0xJiYobi5zcGxpY2UoZCwxKSxmLnJlY29yZC5uYW1lJiZyLmRlbGV0ZShmLnJlY29yZC5uYW1lKSxmLmNoaWxkcmVuLmZvckVhY2goaSksZi5hbGlhcy5mb3JFYWNoKGkpKX19ZnVuY3Rpb24gYSgpe3JldHVybiBufWZ1bmN0aW9uIGwoZil7Y29uc3QgZD1LRShmLG4pO24uc3BsaWNlKGQsMCxmKSxmLnJlY29yZC5uYW1lJiYhWnAoZikmJnIuc2V0KGYucmVjb3JkLm5hbWUsZil9ZnVuY3Rpb24gdShmLGQpe2xldCBwLG09e30seSxfO2lmKCJuYW1lImluIGYmJmYubmFtZSl7aWYocD1yLmdldChmLm5hbWUpLCFwKXRocm93IEVzKGd0Lk1BVENIRVJfTk9UX0ZPVU5ELHtsb2NhdGlvbjpmfSk7Xz1wLnJlY29yZC5uYW1lLG09dHQoSnAoZC5wYXJhbXMscC5rZXlzLmZpbHRlcihoPT4haC5vcHRpb25hbCkuY29uY2F0KHAucGFyZW50P3AucGFyZW50LmtleXMuZmlsdGVyKGg9Pmgub3B0aW9uYWwpOltdKS5tYXAoaD0+aC5uYW1lKSksZi5wYXJhbXMmJkpwKGYucGFyYW1zLHAua2V5cy5tYXAoaD0+aC5uYW1lKSkpLHk9cC5zdHJpbmdpZnkobSl9ZWxzZSBpZihmLnBhdGghPW51bGwpeT1mLnBhdGgscD1uLmZpbmQoaD0+aC5yZS50ZXN0KHkpKSxwJiYobT1wLnBhcnNlKHkpLF89cC5yZWNvcmQubmFtZSk7ZWxzZXtpZihwPWQubmFtZT9yLmdldChkLm5hbWUpOm4uZmluZChoPT5oLnJlLnRlc3QoZC5wYXRoKSksIXApdGhyb3cgRXMoZ3QuTUFUQ0hFUl9OT1RfRk9VTkQse2xvY2F0aW9uOmYsY3VycmVudExvY2F0aW9uOmR9KTtfPXAucmVjb3JkLm5hbWUsbT10dCh7fSxkLnBhcmFtcyxmLnBhcmFtcykseT1wLnN0cmluZ2lmeShtKX1jb25zdCB3PVtdO2xldCB2PXA7Zm9yKDt2Oyl3LnVuc2hpZnQodi5yZWNvcmQpLHY9di5wYXJlbnQ7cmV0dXJue25hbWU6XyxwYXRoOnkscGFyYW1zOm0sbWF0Y2hlZDp3LG1ldGE6R0Uodyl9fWUuZm9yRWFjaChmPT5zKGYpKTtmdW5jdGlvbiBjKCl7bi5sZW5ndGg9MCxyLmNsZWFyKCl9cmV0dXJue2FkZFJvdXRlOnMscmVzb2x2ZTp1LHJlbW92ZVJvdXRlOmksY2xlYXJSb3V0ZXM6YyxnZXRSb3V0ZXM6YSxnZXRSZWNvcmRNYXRjaGVyOm99fWZ1bmN0aW9uIEpwKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBvZiB0KXIgaW4gZSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gWHAoZSl7Y29uc3QgdD17cGF0aDplLnBhdGgscmVkaXJlY3Q6ZS5yZWRpcmVjdCxuYW1lOmUubmFtZSxtZXRhOmUubWV0YXx8e30sYWxpYXNPZjplLmFsaWFzT2YsYmVmb3JlRW50ZXI6ZS5iZWZvcmVFbnRlcixwcm9wczpXRShlKSxjaGlsZHJlbjplLmNoaWxkcmVufHxbXSxpbnN0YW5jZXM6e30sbGVhdmVHdWFyZHM6bmV3IFNldCx1cGRhdGVHdWFyZHM6bmV3IFNldCxlbnRlckNhbGxiYWNrczp7fSxjb21wb25lbnRzOiJjb21wb25lbnRzImluIGU/ZS5jb21wb25lbnRzfHxudWxsOmUuY29tcG9uZW50JiZ7ZGVmYXVsdDplLmNvbXBvbmVudH19O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibW9kcyIse3ZhbHVlOnt9fSksdH1mdW5jdGlvbiBXRShlKXtjb25zdCB0PXt9LG49ZS5wcm9wc3x8ITE7aWYoImNvbXBvbmVudCJpbiBlKXQuZGVmYXVsdD1uO2Vsc2UgZm9yKGNvbnN0IHIgaW4gZS5jb21wb25lbnRzKXRbcl09dHlwZW9mIG49PSJvYmplY3QiP25bcl06bjtyZXR1cm4gdH1mdW5jdGlvbiBacChlKXtmb3IoO2U7KXtpZihlLnJlY29yZC5hbGlhc09mKXJldHVybiEwO2U9ZS5wYXJlbnR9cmV0dXJuITF9ZnVuY3Rpb24gR0UoZSl7cmV0dXJuIGUucmVkdWNlKCh0LG4pPT50dCh0LG4ubWV0YSkse30pfWZ1bmN0aW9uIEtFKGUsdCl7bGV0IG49MCxyPXQubGVuZ3RoO2Zvcig7biE9PXI7KXtjb25zdCBzPW4rcj4+MTtndihlLHRbc10pPDA/cj1zOm49cysxfWNvbnN0IG89UUUoZSk7cmV0dXJuIG8mJihyPXQubGFzdEluZGV4T2YobyxyLTEpKSxyfWZ1bmN0aW9uIFFFKGUpe2xldCB0PWU7Zm9yKDt0PXQucGFyZW50OylpZih5dih0KSYmZ3YoZSx0KT09PTApcmV0dXJuIHR9ZnVuY3Rpb24geXYoe3JlY29yZDplfSl7cmV0dXJuISEoZS5uYW1lfHxlLmNvbXBvbmVudHMmJk9iamVjdC5rZXlzKGUuY29tcG9uZW50cykubGVuZ3RofHxlLnJlZGlyZWN0KX1mdW5jdGlvbiBlbShlKXtjb25zdCB0PUtlKERmKSxuPUtlKExmKSxyPU4oKCk9Pntjb25zdCBsPWcoZS50byk7cmV0dXJuIHQucmVzb2x2ZShsKX0pLG89TigoKT0+e2NvbnN0e21hdGNoZWQ6bH09ci52YWx1ZSx7bGVuZ3RoOnV9PWwsYz1sW3UtMV0sZj1uLm1hdGNoZWQ7aWYoIWN8fCFmLmxlbmd0aClyZXR1cm4tMTtjb25zdCBkPWYuZmluZEluZGV4KFRzLmJpbmQobnVsbCxjKSk7aWYoZD4tMSlyZXR1cm4gZDtjb25zdCBwPXRtKGxbdS0yXSk7cmV0dXJuIHU+MSYmdG0oYyk9PT1wJiZmW2YubGVuZ3RoLTFdLnBhdGghPT1wP2YuZmluZEluZGV4KFRzLmJpbmQobnVsbCxsW3UtMl0pKTpkfSkscz1OKCgpPT5vLnZhbHVlPi0xJiZlVChuLnBhcmFtcyxyLnZhbHVlLnBhcmFtcykpLGk9TigoKT0+by52YWx1ZT4tMSYmby52YWx1ZT09PW4ubWF0Y2hlZC5sZW5ndGgtMSYmcHYobi5wYXJhbXMsci52YWx1ZS5wYXJhbXMpKTtmdW5jdGlvbiBhKGw9e30pe2lmKFpFKGwpKXtjb25zdCB1PXRbZyhlLnJlcGxhY2UpPyJyZXBsYWNlIjoicHVzaCJdKGcoZS50bykpLmNhdGNoKGZpKTtyZXR1cm4gZS52aWV3VHJhbnNpdGlvbiYmdHlwZW9mIGRvY3VtZW50PCJ1IiYmInN0YXJ0Vmlld1RyYW5zaXRpb24iaW4gZG9jdW1lbnQmJmRvY3VtZW50LnN0YXJ0Vmlld1RyYW5zaXRpb24oKCk9PnUpLHV9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfXJldHVybntyb3V0ZTpyLGhyZWY6TigoKT0+ci52YWx1ZS5ocmVmKSxpc0FjdGl2ZTpzLGlzRXhhY3RBY3RpdmU6aSxuYXZpZ2F0ZTphfX1mdW5jdGlvbiBZRShlKXtyZXR1cm4gZS5sZW5ndGg9PT0xP2VbMF06ZX1jb25zdCBKRT1zZSh7bmFtZToiUm91dGVyTGluayIsY29tcGF0Q29uZmlnOntNT0RFOjN9LHByb3BzOnt0bzp7dHlwZTpbU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITB9LHJlcGxhY2U6Qm9vbGVhbixhY3RpdmVDbGFzczpTdHJpbmcsZXhhY3RBY3RpdmVDbGFzczpTdHJpbmcsY3VzdG9tOkJvb2xlYW4sYXJpYUN1cnJlbnRWYWx1ZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoicGFnZSJ9LHZpZXdUcmFuc2l0aW9uOkJvb2xlYW59LHVzZUxpbms6ZW0sc2V0dXAoZSx7c2xvdHM6dH0pe2NvbnN0IG49YnQoZW0oZSkpLHtvcHRpb25zOnJ9PUtlKERmKSxvPU4oKCk9Pih7W25tKGUuYWN0aXZlQ2xhc3Msci5saW5rQWN0aXZlQ2xhc3MsInJvdXRlci1saW5rLWFjdGl2ZSIpXTpuLmlzQWN0aXZlLFtubShlLmV4YWN0QWN0aXZlQ2xhc3Msci5saW5rRXhhY3RBY3RpdmVDbGFzcywicm91dGVyLWxpbmstZXhhY3QtYWN0aXZlIildOm4uaXNFeGFjdEFjdGl2ZX0pKTtyZXR1cm4oKT0+e2NvbnN0IHM9dC5kZWZhdWx0JiZZRSh0LmRlZmF1bHQobikpO3JldHVybiBlLmN1c3RvbT9zOkZlKCJhIix7ImFyaWEtY3VycmVudCI6bi5pc0V4YWN0QWN0aXZlP2UuYXJpYUN1cnJlbnRWYWx1ZTpudWxsLGhyZWY6bi5ocmVmLG9uQ2xpY2s6bi5uYXZpZ2F0ZSxjbGFzczpvLnZhbHVlfSxzKX19fSksWEU9SkU7ZnVuY3Rpb24gWkUoZSl7aWYoIShlLm1ldGFLZXl8fGUuYWx0S2V5fHxlLmN0cmxLZXl8fGUuc2hpZnRLZXkpJiYhZS5kZWZhdWx0UHJldmVudGVkJiYhKGUuYnV0dG9uIT09dm9pZCAwJiZlLmJ1dHRvbiE9PTApKXtpZihlLmN1cnJlbnRUYXJnZXQmJmUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUpe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgidGFyZ2V0Iik7aWYoL1xiX2JsYW5rXGIvaS50ZXN0KHQpKXJldHVybn1yZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCYmZS5wcmV2ZW50RGVmYXVsdCgpLCEwfX1mdW5jdGlvbiBlVChlLHQpe2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IHI9dFtuXSxvPWVbbl07aWYodHlwZW9mIHI9PSJzdHJpbmciKXtpZihyIT09bylyZXR1cm4hMX1lbHNlIGlmKCFXbihvKXx8by5sZW5ndGghPT1yLmxlbmd0aHx8ci5zb21lKChzLGkpPT5zLnZhbHVlT2YoKSE9PW9baV0udmFsdWVPZigpKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiB0bShlKXtyZXR1cm4gZT9lLmFsaWFzT2Y/ZS5hbGlhc09mLnBhdGg6ZS5wYXRoOiIifWNvbnN0IG5tPShlLHQsbik9PmU/P3Q/P24sdFQ9c2Uoe25hbWU6IlJvdXRlclZpZXciLGluaGVyaXRBdHRyczohMSxwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDoiZGVmYXVsdCJ9LHJvdXRlOk9iamVjdH0sY29tcGF0Q29uZmlnOntNT0RFOjN9LHNldHVwKGUse2F0dHJzOnQsc2xvdHM6bn0pe2NvbnN0IHI9S2UoeHUpLG89TigoKT0+ZS5yb3V0ZXx8ci52YWx1ZSkscz1LZShWcCwwKSxpPU4oKCk9PntsZXQgdT1nKHMpO2NvbnN0e21hdGNoZWQ6Y309by52YWx1ZTtsZXQgZjtmb3IoOyhmPWNbdV0pJiYhZi5jb21wb25lbnRzOyl1Kys7cmV0dXJuIHV9KSxhPU4oKCk9Pm8udmFsdWUubWF0Y2hlZFtpLnZhbHVlXSk7TnQoVnAsTigoKT0+aS52YWx1ZSsxKSksTnQoWGssYSksTnQoeHUsbyk7Y29uc3QgbD1HKCk7cmV0dXJuIFBlKCgpPT5bbC52YWx1ZSxhLnZhbHVlLGUubmFtZV0sKFt1LGMsZl0sW2QscCxtXSk9PntjJiYoYy5pbnN0YW5jZXNbZl09dSxwJiZwIT09YyYmdSYmdT09PWQmJihjLmxlYXZlR3VhcmRzLnNpemV8fChjLmxlYXZlR3VhcmRzPXAubGVhdmVHdWFyZHMpLGMudXBkYXRlR3VhcmRzLnNpemV8fChjLnVwZGF0ZUd1YXJkcz1wLnVwZGF0ZUd1YXJkcykpKSx1JiZjJiYoIXB8fCFUcyhjLHApfHwhZCkmJihjLmVudGVyQ2FsbGJhY2tzW2ZdfHxbXSkuZm9yRWFjaCh5PT55KHUpKX0se2ZsdXNoOiJwb3N0In0pLCgpPT57Y29uc3QgdT1vLnZhbHVlLGM9ZS5uYW1lLGY9YS52YWx1ZSxkPWYmJmYuY29tcG9uZW50c1tjXTtpZighZClyZXR1cm4gcm0obi5kZWZhdWx0LHtDb21wb25lbnQ6ZCxyb3V0ZTp1fSk7Y29uc3QgcD1mLnByb3BzW2NdLG09cD9wPT09ITA/dS5wYXJhbXM6dHlwZW9mIHA9PSJmdW5jdGlvbiI/cCh1KTpwOm51bGwsXz1GZShkLHR0KHt9LG0sdCx7b25Wbm9kZVVubW91bnRlZDp3PT57dy5jb21wb25lbnQuaXNVbm1vdW50ZWQmJihmLmluc3RhbmNlc1tjXT1udWxsKX0scmVmOmx9KSk7cmV0dXJuIHJtKG4uZGVmYXVsdCx7Q29tcG9uZW50Ol8scm91dGU6dX0pfHxffX19KTtmdW5jdGlvbiBybShlLHQpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG49ZSh0KTtyZXR1cm4gbi5sZW5ndGg9PT0xP25bMF06bn1jb25zdCB2dj10VDtmdW5jdGlvbiBuVChlKXtjb25zdCB0PUhFKGUucm91dGVzLGUpLG49ZS5wYXJzZVF1ZXJ5fHxPRSxyPWUuc3RyaW5naWZ5UXVlcnl8fEdwLG89ZS5oaXN0b3J5LHM9VXMoKSxpPVVzKCksYT1VcygpLGw9T2UoT24pO2xldCB1PU9uO3NzJiZlLnNjcm9sbEJlaGF2aW9yJiYic2Nyb2xsUmVzdG9yYXRpb24iaW4gaGlzdG9yeSYmKGhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb249Im1hbnVhbCIpO2NvbnN0IGM9U2MuYmluZChudWxsLHo9PiIiK3opLGY9U2MuYmluZChudWxsLG1FKSxkPVNjLmJpbmQobnVsbCxFaSk7ZnVuY3Rpb24gcCh6LFkpe2xldCBKLGxlO3JldHVybiBtdih6KT8oSj10LmdldFJlY29yZE1hdGNoZXIoeiksbGU9WSk6bGU9eix0LmFkZFJvdXRlKGxlLEopfWZ1bmN0aW9uIG0oeil7Y29uc3QgWT10LmdldFJlY29yZE1hdGNoZXIoeik7WSYmdC5yZW1vdmVSb3V0ZShZKX1mdW5jdGlvbiB5KCl7cmV0dXJuIHQuZ2V0Um91dGVzKCkubWFwKHo9PnoucmVjb3JkKX1mdW5jdGlvbiBfKHope3JldHVybiEhdC5nZXRSZWNvcmRNYXRjaGVyKHopfWZ1bmN0aW9uIHcoeixZKXtpZihZPXR0KHt9LFl8fGwudmFsdWUpLHR5cGVvZiB6PT0ic3RyaW5nIil7Y29uc3QgTz1rYyhuLHosWS5wYXRoKSxxPXQucmVzb2x2ZSh7cGF0aDpPLnBhdGh9LFkpLEs9by5jcmVhdGVIcmVmKE8uZnVsbFBhdGgpO3JldHVybiB0dChPLHEse3BhcmFtczpkKHEucGFyYW1zKSxoYXNoOkVpKE8uaGFzaCkscmVkaXJlY3RlZEZyb206dm9pZCAwLGhyZWY6S30pfWxldCBKO2lmKHoucGF0aCE9bnVsbClKPXR0KHt9LHose3BhdGg6a2Mobix6LnBhdGgsWS5wYXRoKS5wYXRofSk7ZWxzZXtjb25zdCBPPXR0KHt9LHoucGFyYW1zKTtmb3IoY29uc3QgcSBpbiBPKU9bcV09PW51bGwmJmRlbGV0ZSBPW3FdO0o9dHQoe30seix7cGFyYW1zOmYoTyl9KSxZLnBhcmFtcz1mKFkucGFyYW1zKX1jb25zdCBsZT10LnJlc29sdmUoSixZKSx3ZT16Lmhhc2h8fCIiO2xlLnBhcmFtcz1jKGQobGUucGFyYW1zKSk7Y29uc3QgdGU9eUUocix0dCh7fSx6LHtoYXNoOmZFKHdlKSxwYXRoOmxlLnBhdGh9KSksRT1vLmNyZWF0ZUhyZWYodGUpO3JldHVybiB0dCh7ZnVsbFBhdGg6dGUsaGFzaDp3ZSxxdWVyeTpyPT09R3A/UEUoei5xdWVyeSk6ei5xdWVyeXx8e319LGxlLHtyZWRpcmVjdGVkRnJvbTp2b2lkIDAsaHJlZjpFfSl9ZnVuY3Rpb24gdih6KXtyZXR1cm4gdHlwZW9mIHo9PSJzdHJpbmciP2tjKG4seixsLnZhbHVlLnBhdGgpOnR0KHt9LHopfWZ1bmN0aW9uIGgoeixZKXtpZih1IT09eilyZXR1cm4gRXMoZ3QuTkFWSUdBVElPTl9DQU5DRUxMRUQse2Zyb206WSx0bzp6fSl9ZnVuY3Rpb24gYih6KXtyZXR1cm4gayh6KX1mdW5jdGlvbiB4KHope3JldHVybiBiKHR0KHYoeikse3JlcGxhY2U6ITB9KSl9ZnVuY3Rpb24gUyh6LFkpe2NvbnN0IEo9ei5tYXRjaGVkW3oubWF0Y2hlZC5sZW5ndGgtMV07aWYoSiYmSi5yZWRpcmVjdCl7Y29uc3R7cmVkaXJlY3Q6bGV9PUo7bGV0IHdlPXR5cGVvZiBsZT09ImZ1bmN0aW9uIj9sZSh6LFkpOmxlO3JldHVybiB0eXBlb2Ygd2U9PSJzdHJpbmciJiYod2U9d2UuaW5jbHVkZXMoIj8iKXx8d2UuaW5jbHVkZXMoIiMiKT93ZT12KHdlKTp7cGF0aDp3ZX0sd2UucGFyYW1zPXt9KSx0dCh7cXVlcnk6ei5xdWVyeSxoYXNoOnouaGFzaCxwYXJhbXM6d2UucGF0aCE9bnVsbD97fTp6LnBhcmFtc30sd2UpfX1mdW5jdGlvbiBrKHosWSl7Y29uc3QgSj11PXcoeiksbGU9bC52YWx1ZSx3ZT16LnN0YXRlLHRlPXouZm9yY2UsRT16LnJlcGxhY2U9PT0hMCxPPVMoSixsZSk7aWYoTylyZXR1cm4gayh0dCh2KE8pLHtzdGF0ZTp0eXBlb2YgTz09Im9iamVjdCI/dHQoe30sd2UsTy5zdGF0ZSk6d2UsZm9yY2U6dGUscmVwbGFjZTpFfSksWXx8Sik7Y29uc3QgcT1KO3EucmVkaXJlY3RlZEZyb209WTtsZXQgSztyZXR1cm4hdGUmJnZFKHIsbGUsSikmJihLPUVzKGd0Lk5BVklHQVRJT05fRFVQTElDQVRFRCx7dG86cSxmcm9tOmxlfSksVmUobGUsbGUsITAsITEpKSwoSz9Qcm9taXNlLnJlc29sdmUoSyk6UChxLGxlKSkuY2F0Y2goSD0+eHIoSCk/eHIoSCxndC5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKT9IOm5lKEgpOkIoSCxxLGxlKSkudGhlbihIPT57aWYoSCl7aWYoeHIoSCxndC5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKSlyZXR1cm4gayh0dCh7cmVwbGFjZTpFfSx2KEgudG8pLHtzdGF0ZTp0eXBlb2YgSC50bz09Im9iamVjdCI/dHQoe30sd2UsSC50by5zdGF0ZSk6d2UsZm9yY2U6dGV9KSxZfHxxKX1lbHNlIEg9RChxLGxlLCEwLEUsd2UpO3JldHVybiBGKHEsbGUsSCksSH0pfWZ1bmN0aW9uIFQoeixZKXtjb25zdCBKPWgoeixZKTtyZXR1cm4gSj9Qcm9taXNlLnJlamVjdChKKTpQcm9taXNlLnJlc29sdmUoKX1mdW5jdGlvbiBDKHope2NvbnN0IFk9dmUudmFsdWVzKCkubmV4dCgpLnZhbHVlO3JldHVybiBZJiZ0eXBlb2YgWS5ydW5XaXRoQ29udGV4dD09ImZ1bmN0aW9uIj9ZLnJ1bldpdGhDb250ZXh0KHopOnooKX1mdW5jdGlvbiBQKHosWSl7bGV0IEo7Y29uc3RbbGUsd2UsdGVdPUlFKHosWSk7Sj1UYyhsZS5yZXZlcnNlKCksImJlZm9yZVJvdXRlTGVhdmUiLHosWSk7Zm9yKGNvbnN0IE8gb2YgbGUpTy5sZWF2ZUd1YXJkcy5mb3JFYWNoKHE9PntKLnB1c2gocm8ocSx6LFkpKX0pO2NvbnN0IEU9VC5iaW5kKG51bGwseixZKTtyZXR1cm4gSi5wdXNoKEUpLGVlKEopLnRoZW4oKCk9PntKPVtdO2Zvcihjb25zdCBPIG9mIHMubGlzdCgpKUoucHVzaChybyhPLHosWSkpO3JldHVybiBKLnB1c2goRSksZWUoSil9KS50aGVuKCgpPT57Sj1UYyh3ZSwiYmVmb3JlUm91dGVVcGRhdGUiLHosWSk7Zm9yKGNvbnN0IE8gb2Ygd2UpTy51cGRhdGVHdWFyZHMuZm9yRWFjaChxPT57Si5wdXNoKHJvKHEseixZKSl9KTtyZXR1cm4gSi5wdXNoKEUpLGVlKEopfSkudGhlbigoKT0+e0o9W107Zm9yKGNvbnN0IE8gb2YgdGUpaWYoTy5iZWZvcmVFbnRlcilpZihXbihPLmJlZm9yZUVudGVyKSlmb3IoY29uc3QgcSBvZiBPLmJlZm9yZUVudGVyKUoucHVzaChybyhxLHosWSkpO2Vsc2UgSi5wdXNoKHJvKE8uYmVmb3JlRW50ZXIseixZKSk7cmV0dXJuIEoucHVzaChFKSxlZShKKX0pLnRoZW4oKCk9Pih6Lm1hdGNoZWQuZm9yRWFjaChPPT5PLmVudGVyQ2FsbGJhY2tzPXt9KSxKPVRjKHRlLCJiZWZvcmVSb3V0ZUVudGVyIix6LFksQyksSi5wdXNoKEUpLGVlKEopKSkudGhlbigoKT0+e0o9W107Zm9yKGNvbnN0IE8gb2YgaS5saXN0KCkpSi5wdXNoKHJvKE8seixZKSk7cmV0dXJuIEoucHVzaChFKSxlZShKKX0pLmNhdGNoKE89PnhyKE8sZ3QuTkFWSUdBVElPTl9DQU5DRUxMRUQpP086UHJvbWlzZS5yZWplY3QoTykpfWZ1bmN0aW9uIEYoeixZLEope2EubGlzdCgpLmZvckVhY2gobGU9PkMoKCk9PmxlKHosWSxKKSkpfWZ1bmN0aW9uIEQoeixZLEosbGUsd2Upe2NvbnN0IHRlPWgoeixZKTtpZih0ZSlyZXR1cm4gdGU7Y29uc3QgRT1ZPT09T24sTz1zcz9oaXN0b3J5LnN0YXRlOnt9O0omJihsZXx8RT9vLnJlcGxhY2Uoei5mdWxsUGF0aCx0dCh7c2Nyb2xsOkUmJk8mJk8uc2Nyb2xsfSx3ZSkpOm8ucHVzaCh6LmZ1bGxQYXRoLHdlKSksbC52YWx1ZT16LFZlKHosWSxKLEUpLG5lKCl9bGV0IFc7ZnVuY3Rpb24gTCgpe1d8fChXPW8ubGlzdGVuKCh6LFksSik9PntpZighSWUubGlzdGVuaW5nKXJldHVybjtjb25zdCBsZT13KHopLHdlPVMobGUsSWUuY3VycmVudFJvdXRlLnZhbHVlKTtpZih3ZSl7ayh0dCh3ZSx7cmVwbGFjZTohMCxmb3JjZTohMH0pLGxlKS5jYXRjaChmaSk7cmV0dXJufXU9bGU7Y29uc3QgdGU9bC52YWx1ZTtzcyYmVEUoV3AodGUuZnVsbFBhdGgsSi5kZWx0YSksUGwoKSksUChsZSx0ZSkuY2F0Y2goRT0+eHIoRSxndC5OQVZJR0FUSU9OX0FCT1JURUR8Z3QuTkFWSUdBVElPTl9DQU5DRUxMRUQpP0U6eHIoRSxndC5OQVZJR0FUSU9OX0dVQVJEX1JFRElSRUNUKT8oayh0dCh2KEUudG8pLHtmb3JjZTohMH0pLGxlKS50aGVuKE89Pnt4cihPLGd0Lk5BVklHQVRJT05fQUJPUlRFRHxndC5OQVZJR0FUSU9OX0RVUExJQ0FURUQpJiYhSi5kZWx0YSYmSi50eXBlPT09a3UucG9wJiZvLmdvKC0xLCExKX0pLmNhdGNoKGZpKSxQcm9taXNlLnJlamVjdCgpKTooSi5kZWx0YSYmby5nbygtSi5kZWx0YSwhMSksQihFLGxlLHRlKSkpLnRoZW4oRT0+e0U9RXx8RChsZSx0ZSwhMSksRSYmKEouZGVsdGEmJiF4cihFLGd0Lk5BVklHQVRJT05fQ0FOQ0VMTEVEKT9vLmdvKC1KLmRlbHRhLCExKTpKLnR5cGU9PT1rdS5wb3AmJnhyKEUsZ3QuTkFWSUdBVElPTl9BQk9SVEVEfGd0Lk5BVklHQVRJT05fRFVQTElDQVRFRCkmJm8uZ28oLTEsITEpKSxGKGxlLHRlLEUpfSkuY2F0Y2goZmkpfSkpfWxldCBqPVVzKCksST1VcygpLFY7ZnVuY3Rpb24gQih6LFksSil7bmUoeik7Y29uc3QgbGU9SS5saXN0KCk7cmV0dXJuIGxlLmxlbmd0aCYmbGUuZm9yRWFjaCh3ZT0+d2UoeixZLEopKSxQcm9taXNlLnJlamVjdCh6KX1mdW5jdGlvbiBpZSgpe3JldHVybiBWJiZsLnZhbHVlIT09T24/UHJvbWlzZS5yZXNvbHZlKCk6bmV3IFByb21pc2UoKHosWSk9PntqLmFkZChbeixZXSl9KX1mdW5jdGlvbiBuZSh6KXtyZXR1cm4gVnx8KFY9IXosTCgpLGoubGlzdCgpLmZvckVhY2goKFtZLEpdKT0+ej9KKHopOlkoKSksai5yZXNldCgpKSx6fWZ1bmN0aW9uIFZlKHosWSxKLGxlKXtjb25zdHtzY3JvbGxCZWhhdmlvcjp3ZX09ZTtpZighc3N8fCF3ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgdGU9IUomJkNFKFdwKHouZnVsbFBhdGgsMCkpfHwobGV8fCFKKSYmaGlzdG9yeS5zdGF0ZSYmaGlzdG9yeS5zdGF0ZS5zY3JvbGx8fG51bGw7cmV0dXJuIGl0KCkudGhlbigoKT0+d2UoeixZLHRlKSkudGhlbihFPT5FJiZFRShFKSkuY2F0Y2goRT0+QihFLHosWSkpfWNvbnN0IE5lPXo9Pm8uZ28oeik7bGV0IGV0O2NvbnN0IHZlPW5ldyBTZXQsSWU9e2N1cnJlbnRSb3V0ZTpsLGxpc3RlbmluZzohMCxhZGRSb3V0ZTpwLHJlbW92ZVJvdXRlOm0sY2xlYXJSb3V0ZXM6dC5jbGVhclJvdXRlcyxoYXNSb3V0ZTpfLGdldFJvdXRlczp5LHJlc29sdmU6dyxvcHRpb25zOmUscHVzaDpiLHJlcGxhY2U6eCxnbzpOZSxiYWNrOigpPT5OZSgtMSksZm9yd2FyZDooKT0+TmUoMSksYmVmb3JlRWFjaDpzLmFkZCxiZWZvcmVSZXNvbHZlOmkuYWRkLGFmdGVyRWFjaDphLmFkZCxvbkVycm9yOkkuYWRkLGlzUmVhZHk6aWUsaW5zdGFsbCh6KXt6LmNvbXBvbmVudCgiUm91dGVyTGluayIsWEUpLHouY29tcG9uZW50KCJSb3V0ZXJWaWV3Iix2diksei5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kcm91dGVyPUllLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCIkcm91dGUiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZyhsKX0pLHNzJiYhZXQmJmwudmFsdWU9PT1PbiYmKGV0PSEwLGIoby5sb2NhdGlvbikuY2F0Y2gobGU9Pnt9KSk7Y29uc3QgWT17fTtmb3IoY29uc3QgbGUgaW4gT24pT2JqZWN0LmRlZmluZVByb3BlcnR5KFksbGUse2dldDooKT0+bC52YWx1ZVtsZV0sZW51bWVyYWJsZTohMH0pO3oucHJvdmlkZShEZixJZSksei5wcm92aWRlKExmLFBuKFkpKSx6LnByb3ZpZGUoeHUsbCk7Y29uc3QgSj16LnVubW91bnQ7dmUuYWRkKHopLHoudW5tb3VudD1mdW5jdGlvbigpe3ZlLmRlbGV0ZSh6KSx2ZS5zaXplPDEmJih1PU9uLFcmJlcoKSxXPW51bGwsbC52YWx1ZT1PbixldD0hMSxWPSExKSxKKCl9fX07ZnVuY3Rpb24gZWUoeil7cmV0dXJuIHoucmVkdWNlKChZLEopPT5ZLnRoZW4oKCk9PkMoSikpLFByb21pc2UucmVzb2x2ZSgpKX1yZXR1cm4gSWV9Y29uc3QgclQ9Lyg6XHcrKVwoW14pXStcKS9nLG9UPS8oOlx3KylbPysqXS9nLHNUPS86XHcrL2csaVQ9KGUsdCk9PnQucGF0aC5yZXBsYWNlKHJULCIkMSIpLnJlcGxhY2Uob1QsIiQxIikucmVwbGFjZShzVCxuPT5lLnBhcmFtc1tuLnNsaWNlKDEpXT8udG9TdHJpbmcoKXx8IiIpLFR1PShlLHQpPT57Y29uc3Qgbj1lLnJvdXRlLm1hdGNoZWQuZmluZChvPT5vLmNvbXBvbmVudHM/LmRlZmF1bHQ9PT1lLkNvbXBvbmVudC50eXBlKSxyPXQ/P24/Lm1ldGEua2V5Pz8obiYmaVQoZS5yb3V0ZSxuKSk7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoZS5yb3V0ZSk6cn0sYVQ9KGUsdCk9Pih7ZGVmYXVsdDooKT0+ZT9GZShRXyxlPT09ITA/e306ZSx0KTp0fSk7ZnVuY3Rpb24gYnYoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19Y29uc3QgbFQ9Im1vZHVsZXByZWxvYWQiLGNUPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSxvbT17fSxYZT1mdW5jdGlvbih0LG4scil7bGV0IG89UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IHU9ZnVuY3Rpb24oYyl7cmV0dXJuIFByb21pc2UuYWxsKGMubWFwKGY9PlByb21pc2UucmVzb2x2ZShmKS50aGVuKGQ9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmR9KSxkPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpkfSkpKSl9O2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLGw9YT8ubm9uY2V8fGE/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtvPXUobi5tYXAoYz0+e2lmKGM9Y1QoYyxyKSxjIGluIG9tKXJldHVybjtvbVtjXT0hMDtjb25zdCBmPWMuZW5kc1dpdGgoIi5jc3MiKSxkPWY/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYocilmb3IobGV0IG09aS5sZW5ndGgtMTttPj0wO20tLSl7Y29uc3QgeT1pW21dO2lmKHkuaHJlZj09PWMmJighZnx8eS5yZWw9PT0ic3R5bGVzaGVldCIpKXJldHVybn1lbHNlIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj0iJHtjfSJdJHtkfWApKXJldHVybjtjb25zdCBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtpZihwLnJlbD1mPyJzdHlsZXNoZWV0IjpsVCxmfHwocC5hcz0ic2NyaXB0IikscC5jcm9zc09yaWdpbj0iIixwLmhyZWY9YyxsJiZwLnNldEF0dHJpYnV0ZSgibm9uY2UiLGwpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocCksZilyZXR1cm4gbmV3IFByb21pc2UoKG0seSk9PntwLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLG0pLHAuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT55KG5ldyBFcnJvcihgVW5hYmxlIHRvIHByZWxvYWQgQ1NTIGZvciAke2N9YCkpKX0pfSkpfWZ1bmN0aW9uIHMoaSl7Y29uc3QgYT1uZXcgRXZlbnQoInZpdGU6cHJlbG9hZEVycm9yIix7Y2FuY2VsYWJsZTohMH0pO2lmKGEucGF5bG9hZD1pLHdpbmRvdy5kaXNwYXRjaEV2ZW50KGEpLCFhLmRlZmF1bHRQcmV2ZW50ZWQpdGhyb3cgaX1yZXR1cm4gby50aGVuKGk9Pntmb3IoY29uc3QgYSBvZiBpfHxbXSlhLnN0YXR1cz09PSJyZWplY3RlZCImJnMoYS5yZWFzb24pO3JldHVybiB0KCkuY2F0Y2gocyl9KX0sdVQ9e3VuYXV0aGVudGljYXRlZE9ubHk6ITAsbGF5b3V0OiJhdXRoIn0sZlQ9e2NhbjpbInVzZXI6aW1wZXJzb25hdGUiXX0sZFQ9e3B1YmxpYzohMH0scFQ9e2NhbjpbInByb2plY3Q6cmVhZCIsInByb2plY3Q6d3JpdGUiLCJwcm9qZWN0Om1hbmFnZSJdfSxtVD17cHVibGljOiEwfSxoVD17Y2FuOlsiYmlsbGluZzpyZWFkIiwiYmlsbGluZzptYW5hZ2UiXX0sZ1Q9e2NhbjpbInVzZXI6cmVhZCJdfSx5VD17Y2FuOlsidXNlcjpyZWFkIl19LHNtPXtjYW46WyJ1c2VyOnJlYWQiXX0sdlQ9e2NhbjpbInByb2R1Y3Q6d3JpdGUiLCJwcm9kdWN0Om1hbmFnZSJdfSxiVD17Y2FuOlsicHJvamVjdDpyZWFkIiwicHJvamVjdDp3cml0ZSIsInByb2plY3Q6bWFuYWdlIl19LHdUPXtjYW46WyJiaWxsaW5nOnJlYWQiXX0sX1Q9e2NhbjpbInNlbGZob3N0OnJlYWQiLCJzZWxmaG9zdDptYW5hZ2UiXX0seFQ9bnVsbCxTVD17Y2FuOlsic3lzdGVtOm1hbmFnZSJdfSxrVD17Y2FuOlsic3VwcG9ydDptYW5hZ2UiXX0sRVQ9e2NhbjpbInN5c3RlbTptYW5hZ2UiXSxtaWRkbGV3YXJlOigpPT5GbygiL3N5c3RlbS9ub3RpZmljYXRpb25zIix7cmVwbGFjZTohMH0pfSxpbT17Y2FuOlsic3lzdGVtOm1hbmFnZSJdfSxUVD17bWlkZGxld2FyZTooKT0+Rm8oIi9kYXNoYm9hcmQiLHtyZXBsYWNlOiEwfSl9LENUPW51bGwsQVQ9e30sQ2M9W3tuYW1lOiJhdXRoLWxvZ2luIixwYXRoOiIvYXV0aC9sb2dpbiIsbWV0YTp1VHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0RfY3UtcU1SLmpzIiksX192aXRlX19tYXBEZXBzKFswLDEsMl0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzYW5kYm94LWltcGVyc29uYXRlIixwYXRoOiIvc2FuZGJveC9pbXBlcnNvbmF0ZSIsbWV0YTpmVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0RUVExyNUhyLmpzIiksX192aXRlX19tYXBEZXBzKFszLDQsNSw2LDcsOCwyLDksMTBdKSxpbXBvcnQubWV0YS51cmwpfSx7bmFtZToiam9pbi10b2tlbiIscGF0aDoiL2pvaW4vOnRva2VuKCkiLG1ldGE6ZFR8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9DeGNaclkzVy5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbMTEsMl0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJwcm9qZWN0cy1pZCIscGF0aDoiL3Byb2plY3RzLzppZCgpIixtZXRhOnBUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vY2RLX0E2Tm0uanMiKSxfX3ZpdGVfX21hcERlcHMoWzEyLDEwLDEzLDgsNSwxNCwxNSwxNiw0LDYsN10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJkYXNoYm9hcmQiLHBhdGg6Ii9kYXNoYm9hcmQiLGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9zM3AwYzAzTS5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbMTcsOCw1LDIsMTYsNCw2LDcsOSwxMF0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJmb3JiaWRkZW4iLHBhdGg6Ii9mb3JiaWRkZW4iLG1ldGE6bVR8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9EV2ZXcU1KcS5qcyIpLFtdLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOnNtPy5uYW1lLHBhdGg6Ii9vcmdhbml6YXRpb24iLG1ldGE6c218fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9Dc0s1MXF0ZC5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbMTgsMTksMjAsMjEsMjIsMjMsMTAsMjQsMjUsOCw1LDE2LDQsNiw3XSksaW1wb3J0Lm1ldGEudXJsKSxjaGlsZHJlbjpbe25hbWU6Im9yZ2FuaXphdGlvbi1pbnZvaWNlIixwYXRoOiJpbnZvaWNlIixtZXRhOmhUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vRHVFQWZuaHEuanMiKSxfX3ZpdGVfX21hcERlcHMoWzI2LDI3LDI4LDI5LDMwXSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6Im9yZ2FuaXphdGlvbi1tZW1iZXJzIixwYXRoOiJtZW1iZXJzIixtZXRhOmdUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQ2ZoWUZZT1kuanMiKSxfX3ZpdGVfX21hcERlcHMoWzMxLDEsMTAsMzIsMzMsMzQsMjMsMzUsMjksMiwyOCwzNiwxNSwzNywzOF0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJvcmdhbml6YXRpb24tcm9sZXMiLHBhdGg6InJvbGVzIixtZXRhOnlUfHx7fSxjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQld2cWx3NWYuanMiKSxfX3ZpdGVfX21hcERlcHMoWzM5LDI3LDIwLDM1LDIzLDIyXSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6Im9yZ2FuaXphdGlvbiIscGF0aDoiIixjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQ0lDN3ZzWjUuanMiKSxfX3ZpdGVfX21hcERlcHMoWzQwLDI3LDQxLDQyLDEwXSksaW1wb3J0Lm1ldGEudXJsKX1dfSx7bmFtZToicHJvZHVjdHMiLHBhdGg6Ii9wcm9kdWN0cyIsbWV0YTp2VHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0RwQXZ0TjhnLmpzIiksX192aXRlX19tYXBEZXBzKFs0Myw4LDUsMTQsNDQsNDUsMTMsMTAsNDYsMjEsMjIsMjMsMzMsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpfSx7bmFtZToicHJvamVjdHMiLHBhdGg6Ii9wcm9qZWN0cyIsbWV0YTpiVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0NvSWR6NGthLmpzIiksX192aXRlX19tYXBEZXBzKFs0Nyw4LDUsMTUsNDQsNDUsMTMsMTAsNDYsMjEsMjIsMjMsMzMsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpfSx7bmFtZToicmVmZXJyYWwiLHBhdGg6Ii9yZWZlcnJhbCIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JTeTBpMkFmLmpzIiksX192aXRlX19tYXBEZXBzKFs0OCwxMCwyNywyLDI4LDI5LDQ5LDgsNSwzOCwxNiw0LDYsN10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOnhUPy5uYW1lLHBhdGg6Ii9zZXR0aW5ncyIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0NxeVdyTk54LmpzIiksX192aXRlX19tYXBEZXBzKFs1MCwxOSwyMCwyMSwyMiwyMywxMCwyNCwyNSw4LDUsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpLGNoaWxkcmVuOlt7bmFtZToic2V0dGluZ3MtYmlsbGluZyIscGF0aDoiYmlsbGluZyIsbWV0YTp3VHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JlRU1DeXVaLmpzIiksX192aXRlX19tYXBEZXBzKFs1MSwyNywxMCwyOCwyOSw0OSwzMF0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzZXR0aW5ncy1ub3RpZmljYXRpb25zIixwYXRoOiJub3RpZmljYXRpb25zIixjb21wb25lbnQ6KCk9PlhlKCgpPT5pbXBvcnQoIi4vQ1ltbE1JWHouanMiKSxfX3ZpdGVfX21hcERlcHMoWzUyLDI3LDM2LDM1XSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6InNldHRpbmdzLXNlY3VyaXR5IixwYXRoOiJzZWN1cml0eSIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JyTlJWSUJBLmpzIiksX192aXRlX19tYXBEZXBzKFs1MywyN10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzZXR0aW5ncy1zZWxmLWhvc3QiLHBhdGg6InNlbGYtaG9zdCIsbWV0YTpfVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0R0U3RmVm1ULmpzIiksX192aXRlX19tYXBEZXBzKFs1NCwxLDEwLDIsOCw1XSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6InNldHRpbmdzIixwYXRoOiIiLGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9CTXliRzRPay5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbNTUsMjcsNDEsNDIsNDQsNDVdKSxpbXBvcnQubWV0YS51cmwpfV19LHtuYW1lOiJzdXBwb3J0IixwYXRoOiIvc3VwcG9ydCIsY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JGT05vNjNYLmpzIiksX192aXRlX19tYXBEZXBzKFs1Niw2LDUsNywxMCw4LDU3XSksaW1wb3J0Lm1ldGEudXJsKX0se25hbWU6aW0/Lm5hbWUscGF0aDoiL3N5c3RlbSIsbWV0YTppbXx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL0JTR3QzeFJXLmpzIiksX192aXRlX19tYXBEZXBzKFs1OCwxOSwyMCwyMSwyMiwyMywxMCwyNCwyNSw4LDUsMTYsNCw2LDddKSxpbXBvcnQubWV0YS51cmwpLGNoaWxkcmVuOlt7bmFtZToic3lzdGVtLW5vdGlmaWNhdGlvbnMiLHBhdGg6Im5vdGlmaWNhdGlvbnMiLG1ldGE6U1R8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9EYkM0cDNRQS5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbNTksMjcsMzYsMzUsMzIsMzMsMzQsMjMsMjksNDIsNDYsMjEsMjIsMjQsMSw0NV0pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzeXN0ZW0tdGlja2V0cyIscGF0aDoidGlja2V0cyIsbWV0YTprVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuL042SzBycXRjLmpzIiksX192aXRlX19tYXBEZXBzKFs2MCwzNiwzNSwxMCw1N10pLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOiJzeXN0ZW0iLHBhdGg6IiIsbWV0YTpFVHx8e30sY29tcG9uZW50OigpPT5YZSgoKT0+aW1wb3J0KCIuLzFESWtCeU1kLmpzIiksW10saW1wb3J0Lm1ldGEudXJsKX1dfSx7bmFtZToiaW5kZXgiLHBhdGg6Ii8iLG1ldGE6VFR8fHt9LGNvbXBvbmVudDooKT0+WGUoKCk9PmltcG9ydCgiLi9CaGFHb2F6by5qcyIpLFtdLGltcG9ydC5tZXRhLnVybCl9LHtuYW1lOkNUPy5uYW1lLHBhdGg6Ii91c2VycyIsY29tcG9uZW50OkFUfV0sd3Y9KGUsdCk9Pih7ZGVmYXVsdDooKT0+ZT9GZShYeCxlPT09ITA/e306ZSx0KTp0LmRlZmF1bHQ/LigpfSksT1Q9Lyg6XHcrKVwoW14pXStcKS9nLFBUPS8oOlx3KylbPysqXS9nLElUPS86XHcrL2c7ZnVuY3Rpb24gYW0oZSl7Y29uc3QgdD1lPy5tZXRhLmtleT8/ZS5wYXRoLnJlcGxhY2UoT1QsIiQxIikucmVwbGFjZShQVCwiJDEiKS5yZXBsYWNlKElULG49PmUucGFyYW1zW24uc2xpY2UoMSldPy50b1N0cmluZygpfHwiIik7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoZSk6dH1mdW5jdGlvbiBSVChlLHQpe3JldHVybiBlPT09dHx8dD09PU9uPyExOmFtKGUpIT09YW0odCk/ITA6IWUubWF0Y2hlZC5ldmVyeSgocixvKT0+ci5jb21wb25lbnRzJiZyLmNvbXBvbmVudHMuZGVmYXVsdD09PXQubWF0Y2hlZFtvXT8uY29tcG9uZW50cz8uZGVmYXVsdCl9ZnVuY3Rpb24gTlQoZSx0PSExKXtpZihlKXtpZihlLm5vZGVOYW1lPT09IiNjb21tZW50IiYmZS5ub2RlVmFsdWU9PT0iWyIpcmV0dXJuIF92KGUsW10sdCk7aWYodCl7Y29uc3Qgbj1lLmNsb25lTm9kZSghMCk7cmV0dXJuIG4ucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtaXNsYW5kLXNsb3RdIikuZm9yRWFjaChyPT57ci5pbm5lckhUTUw9IiJ9KSxbbi5vdXRlckhUTUxdfXJldHVybltlLm91dGVySFRNTF19fWZ1bmN0aW9uIF92KGUsdD1bXSxuPSExKXtpZihlJiZlLm5vZGVOYW1lKXtpZihMVChlKSlyZXR1cm4gdDtpZighRFQoZSkpe2NvbnN0IHI9ZS5jbG9uZU5vZGUoITApO24mJnIucXVlcnlTZWxlY3RvckFsbD8uKCJbZGF0YS1pc2xhbmQtc2xvdF0iKS5mb3JFYWNoKG89PntvLmlubmVySFRNTD0iIn0pLHQucHVzaChyLm91dGVySFRNTCl9X3YoZS5uZXh0U2libGluZyx0LG4pfXJldHVybiB0fWZ1bmN0aW9uIEFjKGUsdCl7Y29uc3Qgbj1lP05UKGUpOlt0XTtyZXR1cm4gbj9NeChuLmpvaW4oIiIpLG4ubGVuZ3RoKTpGZSgiZGl2Iil9ZnVuY3Rpb24gRFQoZSl7cmV0dXJuIGUubm9kZU5hbWU9PT0iI2NvbW1lbnQiJiZlLm5vZGVWYWx1ZT09PSJbIn1mdW5jdGlvbiBMVChlKXtyZXR1cm4gZS5ub2RlTmFtZT09PSIjY29tbWVudCImJmUubm9kZVZhbHVlPT09Il0ifWZ1bmN0aW9uIGxtKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWZ1bmN0aW9uIHh2KGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSluJiZ0LnB1c2goey4uLm4sb25BZnRlckxlYXZlOm4ub25BZnRlckxlYXZlP2xtKG4ub25BZnRlckxlYXZlKTp2b2lkIDAsb25CZWZvcmVMZWF2ZTpuLm9uQmVmb3JlTGVhdmU/bG0obi5vbkJlZm9yZUxlYXZlKTp2b2lkIDB9KTtyZXR1cm4gbW4oLi4udCl9Y29uc3QgJFQ9e3Njcm9sbEJlaGF2aW9yKGUsdCxuKXtjb25zdCByPUJlKCksbz1KdCgpLm9wdGlvbnM/LnNjcm9sbEJlaGF2aW9yVHlwZT8/ImF1dG8iO3JldHVybiBlLnBhdGgucmVwbGFjZSgvXC8kLywiIik9PT10LnBhdGgucmVwbGFjZSgvXC8kLywiIik/dC5oYXNoJiYhZS5oYXNoP3tsZWZ0OjAsdG9wOjB9OmUuaGFzaD97ZWw6ZS5oYXNoLHRvcDpTdihlLmhhc2gpLGJlaGF2aW9yOm99OiExOih0eXBlb2YgZS5tZXRhLnNjcm9sbFRvVG9wPT0iZnVuY3Rpb24iP2UubWV0YS5zY3JvbGxUb1RvcChlLHQpOmUubWV0YS5zY3JvbGxUb1RvcCk9PT0hMT8hMTp0PT09T24/Y20oZSx0LG4sbyk6bmV3IFByb21pc2UoaT0+e2NvbnN0IGE9KCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PmkoY20oZSx0LG4sbykpKX07ci5ob29rcy5ob29rT25jZSgicGFnZTpsb2FkaW5nOmVuZCIsKCk9Pntjb25zdCBsPXJbIn50cmFuc2l0aW9uUHJvbWlzZSJdO2w/bC50aGVuKGEpOmEoKX0pfSl9fTtmdW5jdGlvbiBTdihlKXt0cnl7Y29uc3QgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO2lmKHQpcmV0dXJuKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodCkuc2Nyb2xsTWFyZ2luVG9wKXx8MCkrKE51bWJlci5wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxQYWRkaW5nVG9wKXx8MCl9Y2F0Y2h7fXJldHVybiAwfWZ1bmN0aW9uIGNtKGUsdCxuLHIpe2lmKG4pcmV0dXJuIG47Y29uc3Qgbz1SVChlLHQpO3JldHVybiBlLmhhc2g/e2VsOmUuaGFzaCx0b3A6U3YoZS5oYXNoKSxiZWhhdmlvcjpvP3I6Imluc3RhbnQifTp7bGVmdDowLHRvcDowfX1jb25zdCBNVD17aGFzaE1vZGU6ITEsc2Nyb2xsQmVoYXZpb3JUeXBlOiJhdXRvIn0sR3I9ey4uLk1ULC4uLiRUfSxCVD1hc3luYyhlLHQpPT57bGV0IG4scjtpZighZS5tZXRhPy52YWxpZGF0ZSlyZXR1cm47Y29uc3Qgbz0oW24scl09Z3MoKCk9PlByb21pc2UucmVzb2x2ZShlLm1ldGEudmFsaWRhdGUoZSkpKSxuPWF3YWl0IG4scigpLG4pO2lmKG89PT0hMClyZXR1cm47Y29uc3Qgcz1zbyh7ZmF0YWw6ITAsc3RhdHVzOm8mJihvLnN0YXR1c3x8by5zdGF0dXNDb2RlKXx8NDA0LHN0YXR1c1RleHQ6byYmKG8uc3RhdHVzVGV4dHx8by5zdGF0dXNNZXNzYWdlKXx8YFBhZ2UgTm90IEZvdW5kOiAke2UuZnVsbFBhdGh9YCxkYXRhOntwYXRoOmUuZnVsbFBhdGh9fSk7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIiIsdC5mdWxsUGF0aCksc307ZnVuY3Rpb24gcVQoZSx0KXtjb25zdCBuPXQvZSoxMDA7cmV0dXJuIDIvTWF0aC5QSSoxMDAqTWF0aC5hdGFuKG4vNTApfWZ1bmN0aW9uIEZUKGU9e30pe2NvbnN0e2R1cmF0aW9uOnQ9MmUzLHRocm90dGxlOm49MjAwLGhpZGVEZWxheTpyPTUwMCxyZXNldERlbGF5Om89NDAwfT1lLHM9ZS5lc3RpbWF0ZWRQcm9ncmVzc3x8cVQsaT1CZSgpLGE9T2UoMCksbD1PZSghMSksdT1PZSghMSk7bGV0IGM9ITEsZixkLHAsbTtjb25zdCB5PShrPXt9KT0+e2goKSx1LnZhbHVlPSExLF8oMCxrKX07ZnVuY3Rpb24gXyhrPTAsVD17fSl7aWYoaS5pc0h5ZHJhdGluZylyZXR1cm47aWYoaz49MTAwKXJldHVybiB2KHtmb3JjZTpULmZvcmNlfSk7YigpLGEudmFsdWU9azwwPzA6aztjb25zdCBDPVQuZm9yY2U/MDpuO0M/ZD1zZXRUaW1lb3V0KCgpPT57bC52YWx1ZT0hMCx4KCl9LEMpOihsLnZhbHVlPSEwLHgoKSl9ZnVuY3Rpb24gdygpe3A9c2V0VGltZW91dCgoKT0+e2wudmFsdWU9ITEsbT1zZXRUaW1lb3V0KCgpPT57YS52YWx1ZT0wfSxvKX0scil9ZnVuY3Rpb24gdihrPXt9KXthLnZhbHVlPTEwMCxjPSEwLGIoKSxoKCksay5lcnJvciYmKHUudmFsdWU9ITApLGsuZm9yY2U/KGEudmFsdWU9MCxsLnZhbHVlPSExKTp3KCl9ZnVuY3Rpb24gaCgpe2NsZWFyVGltZW91dChwKSxjbGVhclRpbWVvdXQobSl9ZnVuY3Rpb24gYigpe2NsZWFyVGltZW91dChkKSxjYW5jZWxBbmltYXRpb25GcmFtZShmKX1mdW5jdGlvbiB4KCl7Yz0hMTtsZXQgaztmdW5jdGlvbiBUKEMpe2lmKGMpcmV0dXJuO2s/Pz1DO2NvbnN0IFA9Qy1rO2EudmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAscyh0LFApKSksZj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoVCl9Zj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoVCl9bGV0IFM9KCk9Pnt9O3tjb25zdCBrPWkuaG9vaygicGFnZTpsb2FkaW5nOnN0YXJ0IiwoKT0+e3koKX0pLFQ9aS5ob29rKCJwYWdlOmxvYWRpbmc6ZW5kIiwoKT0+e3YoKX0pLEM9aS5ob29rKCJ2dWU6ZXJyb3IiLCgpPT52KCkpO1M9KCk9PntDKCksaygpLFQoKSxiKCl9fXJldHVybntfY2xlYW51cDpTLHByb2dyZXNzOk4oKCk9PmEudmFsdWUpLGlzTG9hZGluZzpOKCgpPT5sLnZhbHVlKSxlcnJvcjpOKCgpPT51LnZhbHVlKSxzdGFydDp5LHNldDpfLGZpbmlzaDp2LGNsZWFyOmJ9fWZ1bmN0aW9uIEFhKGU9e30pe2NvbnN0IHQ9QmUoKSxuPXQuX2xvYWRpbmdJbmRpY2F0b3J8fD1GVChlKTtyZXR1cm4gcXIoKSYmKHQuX2xvYWRpbmdJbmRpY2F0b3JEZXBzfHw9MCx0Ll9sb2FkaW5nSW5kaWNhdG9yRGVwcysrLFJzKCgpPT57dC5fbG9hZGluZ0luZGljYXRvckRlcHMtLSx0Ll9sb2FkaW5nSW5kaWNhdG9yRGVwcz09PTAmJihuLl9jbGVhbnVwKCksZGVsZXRlIHQuX2xvYWRpbmdJbmRpY2F0b3IpfSkpLG59ZnVuY3Rpb24gWWEoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9gJyR7ZX0nYDpuZXcgelQoKS5zZXJpYWxpemUoZSl9Y29uc3QgelQ9KGZ1bmN0aW9uKCl7Y2xhc3MgZXsjZT1uZXcgTWFwO2NvbXBhcmUobixyKXtjb25zdCBvPXR5cGVvZiBuLHM9dHlwZW9mIHI7cmV0dXJuIG89PT0ic3RyaW5nIiYmcz09PSJzdHJpbmciP24ubG9jYWxlQ29tcGFyZShyKTpvPT09Im51bWJlciImJnM9PT0ibnVtYmVyIj9uLXI6U3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlLmNhbGwodGhpcy5zZXJpYWxpemUobiwhMCksdGhpcy5zZXJpYWxpemUociwhMCkpfXNlcmlhbGl6ZShuLHIpe2lmKG49PT1udWxsKXJldHVybiJudWxsIjtzd2l0Y2godHlwZW9mIG4pe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcj9uOmAnJHtufSdgO2Nhc2UiYmlnaW50IjpyZXR1cm5gJHtufW5gO2Nhc2Uib2JqZWN0IjpyZXR1cm4gdGhpcy4kb2JqZWN0KG4pO2Nhc2UiZnVuY3Rpb24iOnJldHVybiB0aGlzLiRmdW5jdGlvbihuKX1yZXR1cm4gU3RyaW5nKG4pfXNlcmlhbGl6ZU9iamVjdChuKXtjb25zdCByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKTtpZihyIT09IltvYmplY3QgT2JqZWN0XSIpcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUoci5sZW5ndGg8MTA/YHVua25vd246JHtyfWA6ci5zbGljZSg4LC0xKSxuKTtjb25zdCBvPW4uY29uc3RydWN0b3Iscz1vPT09T2JqZWN0fHxvPT09dm9pZCAwPyIiOm8ubmFtZTtpZihzIT09IiImJmdsb2JhbFRoaXNbc109PT1vKXJldHVybiB0aGlzLnNlcmlhbGl6ZUJ1aWx0SW5UeXBlKHMsbik7aWYodHlwZW9mIG4udG9KU09OPT0iZnVuY3Rpb24iKXtjb25zdCBpPW4udG9KU09OKCk7cmV0dXJuIHMrKGkhPT1udWxsJiZ0eXBlb2YgaT09Im9iamVjdCI/dGhpcy4kb2JqZWN0KGkpOmAoJHt0aGlzLnNlcmlhbGl6ZShpKX0pYCl9cmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhzLE9iamVjdC5lbnRyaWVzKG4pKX1zZXJpYWxpemVCdWlsdEluVHlwZShuLHIpe2NvbnN0IG89dGhpc1siJCIrbl07aWYobylyZXR1cm4gby5jYWxsKHRoaXMscik7aWYodHlwZW9mIHI/LmVudHJpZXM9PSJmdW5jdGlvbiIpcmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhuLHIuZW50cmllcygpKTt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgJHtufWApfXNlcmlhbGl6ZU9iamVjdEVudHJpZXMobixyKXtjb25zdCBvPUFycmF5LmZyb20ocikuc29ydCgoaSxhKT0+dGhpcy5jb21wYXJlKGlbMF0sYVswXSkpO2xldCBzPWAke259e2A7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspe2NvbnN0W2EsbF09b1tpXTtzKz1gJHt0aGlzLnNlcmlhbGl6ZShhLCEwKX06JHt0aGlzLnNlcmlhbGl6ZShsKX1gLGk8by5sZW5ndGgtMSYmKHMrPSIsIil9cmV0dXJuIHMrIn0ifSRvYmplY3Qobil7bGV0IHI9dGhpcy4jZS5nZXQobik7cmV0dXJuIHI9PT12b2lkIDAmJih0aGlzLiNlLnNldChuLGAjJHt0aGlzLiNlLnNpemV9YCkscj10aGlzLnNlcmlhbGl6ZU9iamVjdChuKSx0aGlzLiNlLnNldChuLHIpKSxyfSRmdW5jdGlvbihuKXtjb25zdCByPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pO3JldHVybiByLnNsaWNlKC0xNSk9PT0iW25hdGl2ZSBjb2RlXSB9Ij9gJHtuLm5hbWV8fCIifSgpW25hdGl2ZV1gOmAke24ubmFtZX0oJHtuLmxlbmd0aH0pJHtyLnJlcGxhY2UoL1xzKlxuXHMqL2csIiIpfWB9JEFycmF5KG4pe2xldCByPSJbIjtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKylyKz10aGlzLnNlcmlhbGl6ZShuW29dKSxvPG4ubGVuZ3RoLTEmJihyKz0iLCIpO3JldHVybiByKyJdIn0kRGF0ZShuKXt0cnl7cmV0dXJuYERhdGUoJHtuLnRvSVNPU3RyaW5nKCl9KWB9Y2F0Y2h7cmV0dXJuIkRhdGUobnVsbCkifX0kQXJyYXlCdWZmZXIobil7cmV0dXJuYEFycmF5QnVmZmVyWyR7bmV3IFVpbnQ4QXJyYXkobikuam9pbigiLCIpfV1gfSRTZXQobil7cmV0dXJuYFNldCR7dGhpcy4kQXJyYXkoQXJyYXkuZnJvbShuKS5zb3J0KChyLG8pPT50aGlzLmNvbXBhcmUocixvKSkpfWB9JE1hcChuKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKCJNYXAiLG4uZW50cmllcygpKX19Zm9yKGNvbnN0IHQgb2ZbIkVycm9yIiwiUmVnRXhwIiwiVVJMIl0pZS5wcm90b3R5cGVbIiQiK3RdPWZ1bmN0aW9uKG4pe3JldHVybmAke3R9KCR7bn0pYH07Zm9yKGNvbnN0IHQgb2ZbIkludDhBcnJheSIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJVaW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSJdKWUucHJvdG90eXBlWyIkIit0XT1mdW5jdGlvbihuKXtyZXR1cm5gJHt0fVske24uam9pbigiLCIpfV1gfTtmb3IoY29uc3QgdCBvZlsiQmlnSW50NjRBcnJheSIsIkJpZ1VpbnQ2NEFycmF5Il0pZS5wcm90b3R5cGVbIiQiK3RdPWZ1bmN0aW9uKG4pe3JldHVybmAke3R9WyR7bi5qb2luKCJuLCIpfSR7bi5sZW5ndGg+MD8ibiI6IiJ9XWB9O3JldHVybiBlfSkoKTtmdW5jdGlvbiBJbChlLHQpe3JldHVybiBlPT09dHx8WWEoZSk9PT1ZYSh0KX1jb25zdCBqVD1bMTc3OTAzMzcwMywtMTE1MDgzMzAxOSwxMDEzOTA0MjQyLC0xNTIxNDg2NTM0LDEzNTk4OTMxMTksLTE2OTQxNDQzNzIsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLFZUPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsLTEyNDU2NDM4MjUsLTM3Mzk1NzcyMyw5NjE5ODcxNjMsMTUwODk3MDk5MywtMTg0MTMzMTU0OCwtMTQyNDIwNDA3NSwtNjcwNTg2MjE2LDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LC0yMTMyODg5MDkwLC0xNjgwMDc5MTkzLC0xMDQ2NzQ0NzE2LC00NTk1NzY4OTUsLTI3Mjc0MjUyMiwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwtMTc0MDc0NjQxNCwtMTQ3MzEzMjk0NywtMTM0MTk3MDQ4OCwtMTA4NDY1MzYyNSwtOTU4Mzk1NDA1LC03MTA0Mzg1ODUsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsLTIxMTc5NDA5NDYsLTE4MzgwMTEyNTksLTE1NjQ0ODEzNzUsLTE0NzQ2NjQ4ODUsLTEwMzUyMzY0OTYsLTk0OTIwMjUyNSwtNzc4OTAxNDc5LC02OTQ2MTQ0OTIsLTIwMDM5NTM4NywyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsLTIwNjcyMzY4NDQsLTE5MzMxMTQ4NzIsLTE4NjY1MzA4MjIsLTE1MzgyMzMxMDksLTEwOTA5MzU4MTcsLTk2NTY0MTk5OF0sVVQ9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLFNvPVtdO2xldCBIVD1jbGFzc3tfZGF0YT1uZXcgc2E7X2hhc2g9bmV3IHNhKFsuLi5qVF0pO19uRGF0YUJ5dGVzPTA7X21pbkJ1ZmZlclNpemU9MDtmaW5hbGl6ZSh0KXt0JiZ0aGlzLl9hcHBlbmQodCk7Y29uc3Qgbj10aGlzLl9uRGF0YUJ5dGVzKjgscj10aGlzLl9kYXRhLnNpZ0J5dGVzKjg7cmV0dXJuIHRoaXMuX2RhdGEud29yZHNbcj4+PjVdfD0xMjg8PDI0LXIlMzIsdGhpcy5fZGF0YS53b3Jkc1socis2ND4+Pjk8PDQpKzE0XT1NYXRoLmZsb29yKG4vNDI5NDk2NzI5NiksdGhpcy5fZGF0YS53b3Jkc1socis2ND4+Pjk8PDQpKzE1XT1uLHRoaXMuX2RhdGEuc2lnQnl0ZXM9dGhpcy5fZGF0YS53b3Jkcy5sZW5ndGgqNCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH1fZG9Qcm9jZXNzQmxvY2sodCxuKXtjb25zdCByPXRoaXMuX2hhc2gud29yZHM7bGV0IG89clswXSxzPXJbMV0saT1yWzJdLGE9clszXSxsPXJbNF0sdT1yWzVdLGM9cls2XSxmPXJbN107Zm9yKGxldCBkPTA7ZDw2NDtkKyspe2lmKGQ8MTYpU29bZF09dFtuK2RdfDA7ZWxzZXtjb25zdCBoPVNvW2QtMTVdLGI9KGg8PDI1fGg+Pj43KV4oaDw8MTR8aD4+PjE4KV5oPj4+Myx4PVNvW2QtMl0sUz0oeDw8MTV8eD4+PjE3KV4oeDw8MTN8eD4+PjE5KV54Pj4+MTA7U29bZF09YitTb1tkLTddK1MrU29bZC0xNl19Y29uc3QgcD1sJnVefmwmYyxtPW8mc15vJmlecyZpLHk9KG88PDMwfG8+Pj4yKV4obzw8MTl8bz4+PjEzKV4obzw8MTB8bz4+PjIyKSxfPShsPDwyNnxsPj4+NileKGw8PDIxfGw+Pj4xMSleKGw8PDd8bD4+PjI1KSx3PWYrXytwK1ZUW2RdK1NvW2RdLHY9eSttO2Y9YyxjPXUsdT1sLGw9YSt3fDAsYT1pLGk9cyxzPW8sbz13K3Z8MH1yWzBdPXJbMF0rb3wwLHJbMV09clsxXStzfDAsclsyXT1yWzJdK2l8MCxyWzNdPXJbM10rYXwwLHJbNF09cls0XStsfDAscls1XT1yWzVdK3V8MCxyWzZdPXJbNl0rY3wwLHJbN109cls3XStmfDB9X2FwcGVuZCh0KXt0eXBlb2YgdD09InN0cmluZyImJih0PXNhLmZyb21VdGY4KHQpKSx0aGlzLl9kYXRhLmNvbmNhdCh0KSx0aGlzLl9uRGF0YUJ5dGVzKz10LnNpZ0J5dGVzfV9wcm9jZXNzKHQpe2xldCBuLHI9dGhpcy5fZGF0YS5zaWdCeXRlcy82NDt0P3I9TWF0aC5jZWlsKHIpOnI9TWF0aC5tYXgoKHJ8MCktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTtjb25zdCBvPXIqMTYscz1NYXRoLm1pbihvKjQsdGhpcy5fZGF0YS5zaWdCeXRlcyk7aWYobyl7Zm9yKGxldCBpPTA7aTxvO2krPTE2KXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKHRoaXMuX2RhdGEud29yZHMsaSk7bj10aGlzLl9kYXRhLndvcmRzLnNwbGljZSgwLG8pLHRoaXMuX2RhdGEuc2lnQnl0ZXMtPXN9cmV0dXJuIG5ldyBzYShuLHMpfX0sc2E9Y2xhc3Mga3Z7d29yZHM7c2lnQnl0ZXM7Y29uc3RydWN0b3IodCxuKXt0PXRoaXMud29yZHM9dHx8W10sdGhpcy5zaWdCeXRlcz1uPT09dm9pZCAwP3QubGVuZ3RoKjQ6bn1zdGF0aWMgZnJvbVV0ZjgodCl7Y29uc3Qgbj11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpLHI9bi5sZW5ndGgsbz1bXTtmb3IobGV0IHM9MDtzPHI7cysrKW9bcz4+PjJdfD0obi5jaGFyQ29kZUF0KHMpJjI1NSk8PDI0LXMlNCo4O3JldHVybiBuZXcga3YobyxyKX10b0Jhc2U2NCgpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTA7bjx0aGlzLnNpZ0J5dGVzO24rPTMpe2NvbnN0IHI9dGhpcy53b3Jkc1tuPj4+Ml0+Pj4yNC1uJTQqOCYyNTUsbz10aGlzLndvcmRzW24rMT4+PjJdPj4+MjQtKG4rMSklNCo4JjI1NSxzPXRoaXMud29yZHNbbisyPj4+Ml0+Pj4yNC0obisyKSU0KjgmMjU1LGk9cjw8MTZ8bzw8OHxzO2ZvcihsZXQgYT0wO2E8NCYmbio4K2EqNjx0aGlzLnNpZ0J5dGVzKjg7YSsrKXQucHVzaChVVC5jaGFyQXQoaT4+PjYqKDMtYSkmNjMpKX1yZXR1cm4gdC5qb2luKCIiKX1jb25jYXQodCl7aWYodGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLXRoaXMuc2lnQnl0ZXMlNCo4LHRoaXMud29yZHMubGVuZ3RoPU1hdGguY2VpbCh0aGlzLnNpZ0J5dGVzLzQpLHRoaXMuc2lnQnl0ZXMlNClmb3IobGV0IG49MDtuPHQuc2lnQnl0ZXM7bisrKXtjb25zdCByPXQud29yZHNbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O3RoaXMud29yZHNbdGhpcy5zaWdCeXRlcytuPj4+Ml18PXI8PDI0LSh0aGlzLnNpZ0J5dGVzK24pJTQqOH1lbHNlIGZvcihsZXQgbj0wO248dC5zaWdCeXRlcztuKz00KXRoaXMud29yZHNbdGhpcy5zaWdCeXRlcytuPj4+Ml09dC53b3Jkc1tuPj4+Ml07dGhpcy5zaWdCeXRlcys9dC5zaWdCeXRlc319O2Z1bmN0aW9uIFdUKGUpe3JldHVybiBuZXcgSFQoKS5maW5hbGl6ZShlKS50b0Jhc2U2NCgpfWZ1bmN0aW9uIGlzKGUpe3JldHVybiBXVChZYShlKSl9Y29uc3QgRXY9U3ltYm9sLmZvcigibnV4dDpjbGllbnQtb25seSIpLGlhPSI8ZGl2PjwvZGl2PiIsbHE9c2Uoe25hbWU6IkNsaWVudE9ubHkiLGluaGVyaXRBdHRyczohMSxwcm9wczpbImZhbGxiYWNrIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclRhZyIsImZhbGxiYWNrVGFnIl0sc2V0dXAoZSx7c2xvdHM6dCxhdHRyczpufSl7Y29uc3Qgcj1PZSghMSk7b3QoKCk9PntyLnZhbHVlPSEwfSk7Y29uc3Qgbz1tdCgpO3JldHVybiBvJiYoby5fbnV4dENsaWVudE9ubHk9ITApLE50KEV2LCEwKSwoKT0+e2lmKHIudmFsdWUpe2NvbnN0IGw9dC5kZWZhdWx0Py4oKTtyZXR1cm4gbCYmbC5sZW5ndGg9PT0xP1twbihsWzBdLG4pXTpsfWNvbnN0IHM9dC5mYWxsYmFja3x8dC5wbGFjZWhvbGRlcjtpZihzKXJldHVybiBGZShzKTtjb25zdCBpPWUuZmFsbGJhY2t8fGUucGxhY2Vob2xkZXJ8fCIiLGE9ZS5mYWxsYmFja1RhZ3x8ZS5wbGFjZWhvbGRlclRhZ3x8InNwYW4iO3JldHVybiBfZShhLG4saSl9fX0pLE9jPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEdUKGUpe2lmKE9jLmhhcyhlKSlyZXR1cm4gT2MuZ2V0KGUpO2NvbnN0IHQ9ey4uLmV9O3JldHVybiB0LnJlbmRlcj90LnJlbmRlcj0obixyLG8scyxpLGEpPT57aWYocy5tb3VudGVkJD8/bi5tb3VudGVkJCl7Y29uc3QgbD1lLnJlbmRlcj8uYmluZChuKShuLHIsbyxzLGksYSk7cmV0dXJuIGwuY2hpbGRyZW49PT1udWxsfHx0eXBlb2YgbC5jaGlsZHJlbj09InN0cmluZyI/cG4obCk6RmUobCl9cmV0dXJuIEFjKG4uXy52bm9kZS5lbCxpYSl9OnQudGVtcGxhdGUmJj1gCiAgICAgIDx0ZW1wbGF0ZSB2LWlmPSJtb3VudGVkJCI+JHtlLnRlbXBsYXRlfTwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+JHtpYX08L3RlbXBsYXRlPgogICAgYCx0LnNldHVwPShuLHIpPT57Y29uc3Qgbz1CZSgpLHM9T2Uoby5pc0h5ZHJhdGluZz09PSExKSxpPW10KCk7aWYoby5pc0h5ZHJhdGluZyl7Y29uc3QgbD17Li4uaS5hdHRyc30sdT1LVChpKTtmb3IoY29uc3QgYyBpbiBsKWRlbGV0ZSBpLmF0dHJzW2NdO290KCgpPT57T2JqZWN0LmFzc2lnbihpLmF0dHJzLGwpLGkudm5vZGUuZGlycz11fSl9b3QoKCk9PntzLnZhbHVlPSEwfSk7Y29uc3QgYT1lLnNldHVwPy4obixyKXx8e307cmV0dXJuIHVsKGEpP1Byb21pc2UucmVzb2x2ZShhKS50aGVuKGw9PnR5cGVvZiBsIT0iZnVuY3Rpb24iPyhsfHw9e30sbC5tb3VudGVkJD1zLGwpOiguLi51KT0+e2lmKHMudmFsdWV8fCFvLmlzSHlkcmF0aW5nKXtjb25zdCBjPWwoLi4udSk7cmV0dXJuIGMuY2hpbGRyZW49PT1udWxsfHx0eXBlb2YgYy5jaGlsZHJlbj09InN0cmluZyI/cG4oYyk6RmUoYyl9cmV0dXJuIEFjKGk/LnZub2RlLmVsLGlhKX0pOnR5cGVvZiBhPT0iZnVuY3Rpb24iPyguLi5sKT0+e2lmKHMudmFsdWUpe2NvbnN0IHU9YSguLi5sKSxjPXQuaW5oZXJpdEF0dHJzIT09ITE/ci5hdHRyczp2b2lkIDA7cmV0dXJuIHUuY2hpbGRyZW49PT1udWxsfHx0eXBlb2YgdS5jaGlsZHJlbj09InN0cmluZyI/cG4odSxjKTpGZSh1LGMpfXJldHVybiBBYyhpPy52bm9kZS5lbCxpYSl9Ok9iamVjdC5hc3NpZ24oYSx7bW91bnRlZCQ6c30pfSxPYy5zZXQoZSx0KSx0fWZ1bmN0aW9uIEtUKGUpe2lmKCFlfHwhZS52bm9kZS5kaXJzKXJldHVybiBudWxsO2NvbnN0IHQ9ZS52bm9kZS5kaXJzO3JldHVybiBlLnZub2RlLmRpcnM9bnVsbCx0fWNvbnN0IEN1PWdsb2JhbFRoaXMucmVxdWVzdElkbGVDYWxsYmFja3x8KGU9Pntjb25zdCB0PURhdGUubm93KCksbj17ZGlkVGltZW91dDohMSx0aW1lUmVtYWluaW5nOigpPT5NYXRoLm1heCgwLDUwLShEYXRlLm5vdygpLXQpKX07cmV0dXJuIHNldFRpbWVvdXQoKCk9PntlKG4pfSwxKX0pLFFUPWdsb2JhbFRoaXMuY2FuY2VsSWRsZUNhbGxiYWNrfHwoZT0+e2NsZWFyVGltZW91dChlKX0pLHFpPWU9Pntjb25zdCB0PUJlKCk7dC5pc0h5ZHJhdGluZz90Lmhvb2tzLmhvb2tPbmNlKCJhcHA6c3VzcGVuc2U6cmVzb2x2ZSIsKCk9PntDdSgoKT0+ZSgpKX0pOkN1KCgpPT5lKCkpfTtmdW5jdGlvbiBUdihlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBbbnV4dF0gXGAke2UubmFtZX1cYCBpcyBhIGNvbXBpbGVyIG1hY3JvIGFuZCBjYW5ub3QgYmUgY2FsbGVkIGF0IHJ1bnRpbWUuYCl9LCJfX251eHRfZmFjdG9yeSIse2VudW1lcmFibGU6ITEsZ2V0OigpPT5lLmZhY3Rvcnl9KX1jb25zdCBDdj1Udih7bmFtZToiY3JlYXRlVXNlQXN5bmNEYXRhIixmYWN0b3J5KGU9e30pe2Z1bmN0aW9uIHQoLi4ubil7Y29uc3Qgcj10eXBlb2YgbltuLmxlbmd0aC0xXT09InN0cmluZyI/bi5wb3AoKTp2b2lkIDA7SlQoblswXSxuWzFdKSYmbi51bnNoaWZ0KHIpO2xldFtvLHMsaT17fV09bixhPSExO2NvbnN0IGw9TigoKT0+RWUobykpO2lmKHR5cGVvZiBsLnZhbHVlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJbbnV4dF0gW3VzZUFzeW5jRGF0YV0ga2V5IG11c3QgYmUgYSBzdHJpbmcuIik7aWYodHlwZW9mIHMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiW251eHRdIFt1c2VBc3luY0RhdGFdIGhhbmRsZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2NvbnN0IHU9dHlwZW9mIGU9PSJmdW5jdGlvbiIsYz1CZSgpLGY9dT9lKGkpOmU7aWYoIXUpZm9yKGNvbnN0IHYgaW4gZilmW3ZdIT09dm9pZCAwJiZpW3ZdPT09dm9pZCAwJiYoaVt2XT1mW3ZdKTtpZihpLnNlcnZlcj8/PSEwLGkuZGVmYXVsdD8/PVpULGkuZ2V0Q2FjaGVkRGF0YT8/PVB2LGkubGF6eT8/PSExLGkuaW1tZWRpYXRlPz89ITAsaS5kZWVwPz89UDEuZGVlcCxpLmRlZHVwZT8/PSJjYW5jZWwiLHUpZm9yKGNvbnN0IHYgaW4gZilmW3ZdIT09dm9pZCAwJiYoaVt2XT1mW3ZdKTtjLl9hc3luY0RhdGFbbC52YWx1ZV07ZnVuY3Rpb24gZCgpe2NvbnN0IHY9e2NhdXNlOiJpbml0aWFsIixkZWR1cGU6aS5kZWR1cGV9O3JldHVybiBjLl9hc3luY0RhdGFbbC52YWx1ZV0/Ll9pbml0fHwodi5jYWNoZWREYXRhPWkuZ2V0Q2FjaGVkRGF0YShsLnZhbHVlLGMse2NhdXNlOiJpbml0aWFsIn0pLGMuX2FzeW5jRGF0YVtsLnZhbHVlXT11bShjLGwudmFsdWUscyxpLHYuY2FjaGVkRGF0YSkpLCgpPT5jLl9hc3luY0RhdGFbbC52YWx1ZV0uZXhlY3V0ZSh2KX1jb25zdCBwPWQoKSxtPWMuX2FzeW5jRGF0YVtsLnZhbHVlXTttLl9kZXBzKys7Y29uc3QgeT1pLnNlcnZlciE9PSExJiZjLnBheWxvYWQuc2VydmVyUmVuZGVyZWQ7e2xldCB2PWZ1bmN0aW9uKFQpe2NvbnN0IEM9Yy5fYXN5bmNEYXRhW1RdO0M/Ll9kZXBzJiYoQy5fZGVwcy0tLEMuX2RlcHM9PT0wJiZDPy5fb2ZmKCkpfTtjb25zdCBoPW10KCk7aWYoaCYmeSYmaS5pbW1lZGlhdGUmJiFoLnNwJiYoaC5zcD1bXSksaCYmIWguX251eHRPbkJlZm9yZU1vdW50Q2JzKXtoLl9udXh0T25CZWZvcmVNb3VudENicz1bXTtjb25zdCBUPWguX251eHRPbkJlZm9yZU1vdW50Q2JzO3FnKCgpPT57VC5mb3JFYWNoKEM9PntDKCl9KSxULnNwbGljZSgwLFQubGVuZ3RoKX0pLHByKCgpPT5ULnNwbGljZSgwLFQubGVuZ3RoKSl9Y29uc3QgYj1oJiYoaC5fbnV4dENsaWVudE9ubHl8fEtlKEV2LCExKSk7eSYmYy5pc0h5ZHJhdGluZyYmKG0uZXJyb3IudmFsdWV8fG0uZGF0YS52YWx1ZSE9PXZvaWQgMCk/bS5zdGF0dXMudmFsdWU9bS5lcnJvci52YWx1ZT8iZXJyb3IiOiJzdWNjZXNzIjpoJiYoIWImJmMucGF5bG9hZC5zZXJ2ZXJSZW5kZXJlZCYmYy5pc0h5ZHJhdGluZ3x8aS5sYXp5KSYmaS5pbW1lZGlhdGU/aC5fbnV4dE9uQmVmb3JlTW91bnRDYnMucHVzaChwKTppLmltbWVkaWF0ZSYmbS5zdGF0dXMudmFsdWUhPT0ic3VjY2VzcyImJnAoKTtjb25zdCB4PXFyKCksUz1QZShsLChULEMpPT57aWYoKFR8fEMpJiZUIT09Qyl7YT0hMDtjb25zdCBQPWMuX2FzeW5jRGF0YVtDXT8uZGF0YS52YWx1ZSE9PXZvaWQgMCxGPWMuX2FzeW5jRGF0YVByb21pc2VzW0NdIT09dm9pZCAwLEQ9e2NhdXNlOiJpbml0aWFsIixkZWR1cGU6aS5kZWR1cGV9O2lmKCFjLl9hc3luY0RhdGFbVF0/Ll9pbml0KXtsZXQgVztDJiZQP1c9Yy5fYXN5bmNEYXRhW0NdLmRhdGEudmFsdWU6KFc9aS5nZXRDYWNoZWREYXRhKFQsYyx7Y2F1c2U6ImluaXRpYWwifSksRC5jYWNoZWREYXRhPVcpLGMuX2FzeW5jRGF0YVtUXT11bShjLFQscyxpLFcpfWMuX2FzeW5jRGF0YVtUXS5fZGVwcysrLEMmJnYoQyksKGkuaW1tZWRpYXRlfHxQfHxGKSYmYy5fYXN5bmNEYXRhW1RdLmV4ZWN1dGUoRCksZ2koKCk9PnthPSExfSl9fSx7Zmx1c2g6InN5bmMifSksaz1pLndhdGNoP1BlKGkud2F0Y2gsKCk9PnthfHwoYy5fYXN5bmNEYXRhW2wudmFsdWVdPy5fZXhlY3V0ZS5pc1BlbmRpbmcoKSYmZ2koKCk9PntjLl9hc3luY0RhdGFbbC52YWx1ZV0/Ll9leGVjdXRlLmZsdXNoKCl9KSxjLl9hc3luY0RhdGFbbC52YWx1ZV0/Ll9leGVjdXRlKHtjYXVzZToid2F0Y2giLGRlZHVwZTppLmRlZHVwZX0pKX0pOigpPT57fTt4JiZScygoKT0+e1MoKSxrKCksdihsLnZhbHVlKX0pfWNvbnN0IF89e2RhdGE6YWEoKCk9PmMuX2FzeW5jRGF0YVtsLnZhbHVlXT8uZGF0YSkscGVuZGluZzphYSgoKT0+Yy5fYXN5bmNEYXRhW2wudmFsdWVdPy5wZW5kaW5nKSxzdGF0dXM6YWEoKCk9PmMuX2FzeW5jRGF0YVtsLnZhbHVlXT8uc3RhdHVzKSxlcnJvcjphYSgoKT0+Yy5fYXN5bmNEYXRhW2wudmFsdWVdPy5lcnJvcikscmVmcmVzaDooLi4udik9PmMuX2FzeW5jRGF0YVtsLnZhbHVlXT8uX2luaXQ/Yy5fYXN5bmNEYXRhW2wudmFsdWVdLmV4ZWN1dGUoLi4udik6ZCgpKCksZXhlY3V0ZTooLi4udik9Pl8ucmVmcmVzaCguLi52KSxjbGVhcjooKT0+e2NvbnN0IHY9Yy5fYXN5bmNEYXRhW2wudmFsdWVdO2lmKHY/Ll9hYm9ydENvbnRyb2xsZXIpdHJ5e3YuX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRE9NRXhjZXB0aW9uKCJBc3luY0RhdGEgYWJvcnRlZCBieSB1c2VyLiIsIkFib3J0RXJyb3IiKSl9ZmluYWxseXt2Ll9hYm9ydENvbnRyb2xsZXI9dm9pZCAwfU92KGMsbC52YWx1ZSl9fSx3PVByb21pc2UucmVzb2x2ZShjLl9hc3luY0RhdGFQcm9taXNlc1tsLnZhbHVlXSkudGhlbigoKT0+Xyk7cmV0dXJuIE9iamVjdC5hc3NpZ24odyxfKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3LHt0aGVuOntlbnVtZXJhYmxlOiEwLHZhbHVlOncudGhlbi5iaW5kKHcpfSxjYXRjaDp7ZW51bWVyYWJsZTohMCx2YWx1ZTp3LmNhdGNoLmJpbmQodyl9LGZpbmFsbHk6e2VudW1lcmFibGU6ITAsdmFsdWU6dy5maW5hbGx5LmJpbmQodyl9fSksd31yZXR1cm4gdH19KSxZVD1Ddi5fX251eHRfZmFjdG9yeSgpO0N2Ll9fbnV4dF9mYWN0b3J5KHtsYXp5OiEwLF9mdW5jdGlvbk5hbWU6InVzZUxhenlBc3luY0RhdGEifSk7ZnVuY3Rpb24gYWEoZSl7cmV0dXJuIE4oe2dldCgpe3JldHVybiBlKCk/LnZhbHVlfSxzZXQodCl7Y29uc3Qgbj1lKCk7biYmKG4udmFsdWU9dCl9fSl9ZnVuY3Rpb24gSlQoZSx0KXtyZXR1cm4hKHR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbHx8dHlwZW9mIGU9PSJmdW5jdGlvbiImJnR5cGVvZiB0PT0iZnVuY3Rpb24iKX1hc3luYyBmdW5jdGlvbiBBdihlKXthd2FpdCBuZXcgUHJvbWlzZShuPT5xaShuKSk7Y29uc3QgdD1XMShlKTthd2FpdCBCZSgpLmhvb2tzLmNhbGxIb29rUGFyYWxsZWwoImFwcDpkYXRhOnJlZnJlc2giLHQpfWZ1bmN0aW9uIE92KGUsdCl7dCBpbiBlLnBheWxvYWQuZGF0YSYmKGUucGF5bG9hZC5kYXRhW3RdPXZvaWQgMCksdCBpbiBlLnBheWxvYWQuX2Vycm9ycyYmKGUucGF5bG9hZC5fZXJyb3JzW3RdPXZvaWQgMCksZS5fYXN5bmNEYXRhW3RdJiYoZS5fYXN5bmNEYXRhW3RdLmRhdGEudmFsdWU9ZyhlLl9hc3luY0RhdGFbdF0uX2RlZmF1bHQoKSksZS5fYXN5bmNEYXRhW3RdLmVycm9yLnZhbHVlPXZvaWQgMCxlLl9hc3luY0RhdGFbdF0uc3RhdHVzLnZhbHVlPSJpZGxlIiksdCBpbiBlLl9hc3luY0RhdGFQcm9taXNlcyYmKGUuX2FzeW5jRGF0YVByb21pc2VzW3RdPXZvaWQgMCl9ZnVuY3Rpb24gWFQoZSx0KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIHQpbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIHVtKGUsdCxuLHIsbyl7ZS5wYXlsb2FkLl9lcnJvcnNbdF0/Pz12b2lkIDA7Y29uc3Qgcz1yLmdldENhY2hlZERhdGEhPT1QdixpPW4sYT1yLmRlZXA/RzpPZSxsPW8hPT12b2lkIDAsdT1lLmhvb2soImFwcDpkYXRhOnJlZnJlc2giLGFzeW5jIGY9PnsoIWZ8fGYuaW5jbHVkZXModCkpJiZhd2FpdCBjLmV4ZWN1dGUoe2NhdXNlOiJyZWZyZXNoOmhvb2sifSl9KSxjPXtkYXRhOmEobD9vOnIuZGVmYXVsdCgpKSxwZW5kaW5nOk4oKCk9PmMuc3RhdHVzLnZhbHVlPT09InBlbmRpbmciKSxlcnJvcjp5dChlLnBheWxvYWQuX2Vycm9ycyx0KSxzdGF0dXM6T2UoImlkbGUiKSxleGVjdXRlOiguLi5mKT0+e2NvbnN0W2QscD12b2lkIDBdPWYsbT1kJiZwPT09dm9pZCAwJiZ0eXBlb2YgZD09Im9iamVjdCI/ZDp7fTtpZihlLl9hc3luY0RhdGFQcm9taXNlc1t0XSYmKG0uZGVkdXBlPz9yLmRlZHVwZSk9PT0iZGVmZXIiKXJldHVybiBlLl9hc3luY0RhdGFQcm9taXNlc1t0XTt7Y29uc3Qgdz0iY2FjaGVkRGF0YSJpbiBtP20uY2FjaGVkRGF0YTpyLmdldENhY2hlZERhdGEodCxlLHtjYXVzZTptLmNhdXNlPz8icmVmcmVzaDptYW51YWwifSk7aWYodyE9PXZvaWQgMClyZXR1cm4gZS5wYXlsb2FkLmRhdGFbdF09Yy5kYXRhLnZhbHVlPXcsYy5lcnJvci52YWx1ZT12b2lkIDAsYy5zdGF0dXMudmFsdWU9InN1Y2Nlc3MiLFByb21pc2UucmVzb2x2ZSh3KX1jLl9hYm9ydENvbnRyb2xsZXImJmMuX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRE9NRXhjZXB0aW9uKCJBc3luY0RhdGEgcmVxdWVzdCBjYW5jZWxsZWQgYnkgZGVkdXBsaWNhdGlvbiIsIkFib3J0RXJyb3IiKSksYy5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIsYy5zdGF0dXMudmFsdWU9InBlbmRpbmciO2NvbnN0IHk9bmV3IEFib3J0Q29udHJvbGxlcixfPW5ldyBQcm9taXNlKCh3LHYpPT57dHJ5e2NvbnN0IGg9bS50aW1lb3V0Pz9yLnRpbWVvdXQsYj1lQyhbYy5fYWJvcnRDb250cm9sbGVyPy5zaWduYWwsbT8uc2lnbmFsXSx5LnNpZ25hbCxoKTtpZihiLmFib3J0ZWQpe2NvbnN0IHg9Yi5yZWFzb247dih4IGluc3RhbmNlb2YgRXJyb3I/eDpuZXcgRE9NRXhjZXB0aW9uKFN0cmluZyh4Pz8iQWJvcnRlZCIpLCJBYm9ydEVycm9yIikpO3JldHVybn1yZXR1cm4gYi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9Pntjb25zdCB4PWIucmVhc29uO3YoeCBpbnN0YW5jZW9mIEVycm9yP3g6bmV3IERPTUV4Y2VwdGlvbihTdHJpbmcoeD8/IkFib3J0ZWQiKSwiQWJvcnRFcnJvciIpKX0se29uY2U6ITAsc2lnbmFsOnkuc2lnbmFsfSksUHJvbWlzZS5yZXNvbHZlKGkoZSx7c2lnbmFsOmJ9KSkudGhlbih3LHYpfWNhdGNoKGgpe3YoaCl9fSkudGhlbihhc3luYyB3PT57bGV0IHY9dztyLnRyYW5zZm9ybSYmKHY9YXdhaXQgci50cmFuc2Zvcm0odykpLHIucGljayYmKHY9WFQodixyLnBpY2spKSxlLnBheWxvYWQuZGF0YVt0XT12LGMuZGF0YS52YWx1ZT12LGMuZXJyb3IudmFsdWU9dm9pZCAwLGMuc3RhdHVzLnZhbHVlPSJzdWNjZXNzIn0pLmNhdGNoKHc9PntpZihlLl9hc3luY0RhdGFQcm9taXNlc1t0XSYmZS5fYXN5bmNEYXRhUHJvbWlzZXNbdF0hPT1ffHxjLl9hYm9ydENvbnRyb2xsZXI/LnNpZ25hbC5hYm9ydGVkKXJldHVybiBlLl9hc3luY0RhdGFQcm9taXNlc1t0XTtpZih0eXBlb2YgRE9NRXhjZXB0aW9uPCJ1IiYmdyBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiYmdy5uYW1lPT09IkFib3J0RXJyb3IiKXJldHVybiBjLnN0YXR1cy52YWx1ZT0iaWRsZSIsZS5fYXN5bmNEYXRhUHJvbWlzZXNbdF07Yy5lcnJvci52YWx1ZT1zbyh3KSxjLmRhdGEudmFsdWU9ZyhyLmRlZmF1bHQoKSksYy5zdGF0dXMudmFsdWU9ImVycm9yIn0pLmZpbmFsbHkoKCk9Pnt5LmFib3J0KCksZGVsZXRlIGUuX2FzeW5jRGF0YVByb21pc2VzW3RdfSk7cmV0dXJuIGUuX2FzeW5jRGF0YVByb21pc2VzW3RdPV8sZS5fYXN5bmNEYXRhUHJvbWlzZXNbdF19LF9leGVjdXRlOmVFKCguLi5mKT0+Yy5leGVjdXRlKC4uLmYpLDAse2xlYWRpbmc6ITB9KSxfZGVmYXVsdDpyLmRlZmF1bHQsX2RlcHM6MCxfaW5pdDohMCxfaGFzaDp2b2lkIDAsX29mZjooKT0+e3UoKSxlLl9hc3luY0RhdGFbdF0/Ll9pbml0JiYoZS5fYXN5bmNEYXRhW3RdLl9pbml0PSExKSxzfHxpdCgoKT0+e2UuX2FzeW5jRGF0YVt0XT8uX2luaXR8fChPdihlLHQpLGMuZXhlY3V0ZT0oKT0+UHJvbWlzZS5yZXNvbHZlKCkpfSl9fTtyZXR1cm4gY31jb25zdCBaVD0oKT0+e30sUHY9KGUsdCxuKT0+e2lmKHQuaXNIeWRyYXRpbmcpcmV0dXJuIHQucGF5bG9hZC5kYXRhW2VdO2lmKG4uY2F1c2UhPT0icmVmcmVzaDptYW51YWwiJiZuLmNhdXNlIT09InJlZnJlc2g6aG9vayIpcmV0dXJuIHQuc3RhdGljLmRhdGFbZV19O2Z1bmN0aW9uIGVDKGUsdCxuKXtjb25zdCByPWUuZmlsdGVyKGk9PiEhaSk7aWYodHlwZW9mIG49PSJudW1iZXIiJiZuPj0wKXtjb25zdCBpPUFib3J0U2lnbmFsLnRpbWVvdXQ/LihuKTtpJiZyLnB1c2goaSl9aWYoQWJvcnRTaWduYWwuYW55KXJldHVybiBBYm9ydFNpZ25hbC5hbnkocik7Y29uc3Qgbz1uZXcgQWJvcnRDb250cm9sbGVyO2Zvcihjb25zdCBpIG9mIHIpaWYoaS5hYm9ydGVkKXtjb25zdCBhPWkucmVhc29uPz9uZXcgRE9NRXhjZXB0aW9uKCJBYm9ydGVkIiwiQWJvcnRFcnJvciIpO3RyeXtvLmFib3J0KGEpfWNhdGNoe28uYWJvcnQoKX1yZXR1cm4gby5zaWduYWx9Y29uc3Qgcz0oKT0+e2NvbnN0IGE9ci5maW5kKGw9PmwuYWJvcnRlZCk/LnJlYXNvbj8/bmV3IERPTUV4Y2VwdGlvbigiQWJvcnRlZCIsIkFib3J0RXJyb3IiKTt0cnl7by5hYm9ydChhKX1jYXRjaHtvLmFib3J0KCl9fTtmb3IoY29uc3QgaSBvZiByKWkuYWRkRXZlbnRMaXN0ZW5lcj8uKCJhYm9ydCIscyx7b25jZTohMCxzaWduYWw6dH0pO3JldHVybiBvLnNpZ25hbH1jb25zdCB0Qz0iJHMiO2Z1bmN0aW9uIGlvKC4uLmUpe2NvbnN0IHQ9dHlwZW9mIGVbZS5sZW5ndGgtMV09PSJzdHJpbmciP2UucG9wKCk6dm9pZCAwO3R5cGVvZiBlWzBdIT0ic3RyaW5nIiYmZS51bnNoaWZ0KHQpO2NvbnN0W24scl09ZTtpZighbnx8dHlwZW9mIG4hPSJzdHJpbmciKXRocm93IG5ldyBUeXBlRXJyb3IoIltudXh0XSBbdXNlU3RhdGVdIGtleSBtdXN0IGJlIGEgc3RyaW5nOiAiK24pO2lmKHIhPT12b2lkIDAmJnR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiW251eHRdIFt1c2VTdGF0ZV0gaW5pdCBtdXN0IGJlIGEgZnVuY3Rpb246ICIrcik7Y29uc3Qgbz10QytuLHM9QmUoKSxpPXl0KHMucGF5bG9hZC5zdGF0ZSxvKTtpZihyJiYocy5fc3RhdGVbb10/Pz17X2RlZmF1bHQ6cn0pLGkudmFsdWU9PT12b2lkIDAmJnIpe2NvbnN0IGE9cigpO2lmKCRlKGEpKXJldHVybiBzLnBheWxvYWQuc3RhdGVbb109YSxhO2kudmFsdWU9YX1yZXR1cm4gaX1mdW5jdGlvbiBuQyhlKXtjb25zdCB0PVtFZShlLm1ldGhvZCk/LnRvVXBwZXJDYXNlKCl8fCJHRVQiLEVlKGUuYmFzZVVSTCldO2Zvcihjb25zdCBuIG9mW2UucXVlcnl8fGUucGFyYW1zXSl7Y29uc3Qgcj1FZShuKTtpZighciljb250aW51ZTtjb25zdCBvPXt9O2Zvcihjb25zdFtzLGldb2YgT2JqZWN0LmVudHJpZXMocikpb1tFZShzKV09RWUoaSk7dC5wdXNoKG8pfWlmKGUuYm9keSl7Y29uc3Qgbj1FZShlLmJvZHkpO2lmKCFuKXQucHVzaChpcyhuKSk7ZWxzZSBpZihuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpdC5wdXNoKGlzKE9iamVjdC5mcm9tRW50cmllcyhbLi4ubmV3IFVpbnQ4QXJyYXkobikuZW50cmllcygpXS5tYXAoKFtyLG9dKT0+W3Isby50b1N0cmluZygpXSkpKSk7ZWxzZSBpZihuIGluc3RhbmNlb2YgRm9ybURhdGEpe2NvbnN0IHI9e307Zm9yKGNvbnN0IG8gb2Ygbi5lbnRyaWVzKCkpe2NvbnN0W3MsaV09bztyW3NdPWkgaW5zdGFuY2VvZiBGaWxlP2kubmFtZTppfXQucHVzaChpcyhyKSl9ZWxzZSBpZihkZihuKSl0LnB1c2goaXMoYnQobikpKTtlbHNlIHRyeXt0LnB1c2goaXMobikpfWNhdGNoe319cmV0dXJuIHR9Y29uc3QgSXY9VHYoe25hbWU6ImNyZWF0ZVVzZUZldGNoIixmYWN0b3J5KGU9e30pe2Z1bmN0aW9uIHQobixyLG8pe2NvbnN0W3M9e30saV09dHlwZW9mIHI9PSJzdHJpbmciP1t7fSxyXTpbcixvXSxhPU4oKCk9PkVlKG4pKSxsPU4oKCk9PkVlKHMua2V5KXx8IiRmIitpcyhbaSx0eXBlb2YgYS52YWx1ZT09InN0cmluZyI/YS52YWx1ZToiIiwuLi5uQyhzKV0pKTtpZighcy5iYXNlVVJMJiZ0eXBlb2YgYS52YWx1ZT09InN0cmluZyImJmEudmFsdWVbMF09PT0iLyImJmEudmFsdWVbMV09PT0iLyIpdGhyb3cgbmV3IEVycm9yKCdbbnV4dF0gW3VzZUZldGNoXSB0aGUgcmVxdWVzdCBVUkwgbXVzdCBub3Qgc3RhcnQgd2l0aCAiLy8iLicpO2NvbnN0IHU9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShzKTplLHtzZXJ2ZXI6YyxsYXp5OmYsZGVmYXVsdDpkLHRyYW5zZm9ybTpwLHBpY2s6bSx3YXRjaDp5LGltbWVkaWF0ZTpfLGdldENhY2hlZERhdGE6dyxkZWVwOnYsZGVkdXBlOmgsdGltZW91dDpiLC4uLnh9PXsuLi50eXBlb2YgZT09ImZ1bmN0aW9uIj97fTp1LC4uLnMsLi4udHlwZW9mIGU9PSJmdW5jdGlvbiI/dTp7fX0sUz1idCh7Li4uSTEsLi4ueCxjYWNoZTp0eXBlb2YgeC5jYWNoZT09ImJvb2xlYW4iP3ZvaWQgMDp4LmNhY2hlfSksaz17c2VydmVyOmMsbGF6eTpmLGRlZmF1bHQ6ZCx0cmFuc2Zvcm06cCxwaWNrOm0saW1tZWRpYXRlOl8sZ2V0Q2FjaGVkRGF0YTp3LGRlZXA6dixkZWR1cGU6aCx0aW1lb3V0OmIsd2F0Y2g6eT09PSExP1tdOlsuLi55fHxbXSxTXX07cmV0dXJuIFlUKHk9PT0hMT9sLnZhbHVlOmwsKEMse3NpZ25hbDpQfSk9PihzLiRmZXRjaHx8Z2xvYmFsVGhpcy4kZmV0Y2gpKGEudmFsdWUse3NpZ25hbDpQLC4uLlN9KSxrKX1yZXR1cm4gdH19KTtJdi5fX251eHRfZmFjdG9yeSgpO0l2Ll9fbnV4dF9mYWN0b3J5KHtsYXp5OiEwLF9mdW5jdGlvbk5hbWU6InVzZUxhenlGZXRjaCJ9KTtmdW5jdGlvbiByQyhlKXtpZihlPy5fX2FzeW5jTG9hZGVyJiYhZS5fX2FzeW5jUmVzb2x2ZWQpcmV0dXJuIGUuX19hc3luY0xvYWRlcigpfWFzeW5jIGZ1bmN0aW9uIFJ2KGUsdD1KdCgpKXtjb25zdHtwYXRoOm4sbWF0Y2hlZDpyfT10LnJlc29sdmUoZSk7aWYoIXIubGVuZ3RofHwodC5fcm91dGVQcmVsb2FkZWR8fD1uZXcgU2V0LHQuX3JvdXRlUHJlbG9hZGVkLmhhcyhuKSkpcmV0dXJuO2NvbnN0IG89dC5fcHJlbG9hZFByb21pc2VzfHw9W107aWYoby5sZW5ndGg+NClyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoKT0+UnYoZSx0KSk7dC5fcm91dGVQcmVsb2FkZWQuYWRkKG4pO2Zvcihjb25zdCBzIG9mIHIpe2NvbnN0IGk9cy5jb21wb25lbnRzPy5kZWZhdWx0O2lmKHR5cGVvZiBpIT0iZnVuY3Rpb24iKWNvbnRpbnVlO2NvbnN0IGE9UHJvbWlzZS5yZXNvbHZlKGkoKSkuY2F0Y2goKCk9Pnt9KS5maW5hbGx5KCgpPT5vLnNwbGljZShvLmluZGV4T2YoYSksMSkpO28ucHVzaChhKX1hd2FpdCBQcm9taXNlLmFsbChvKX1mdW5jdGlvbiBvQyhlPXt9KXtjb25zdCB0PWUucGF0aHx8d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2xldCBuPXt9O3RyeXtuPUpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgibnV4dDpyZWxvYWQiKXx8Int9Iil9Y2F0Y2h7fWlmKGUuZm9yY2V8fG4/LnBhdGghPT10fHxuPy5leHBpcmVzPERhdGUubm93KCkpe3RyeXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJudXh0OnJlbG9hZCIsSlNPTi5zdHJpbmdpZnkoe3BhdGg6dCxleHBpcmVzOkRhdGUubm93KCkrKGUudHRsPz8xZTQpfSkpfWNhdGNoe31pZihlLnBlcnNpc3RTdGF0ZSl0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgibnV4dDpyZWxvYWQ6c3RhdGUiLEpTT04uc3RyaW5naWZ5KHtzdGF0ZTpCZSgpLnBheWxvYWQuc3RhdGV9KSl9Y2F0Y2h7fXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSE9PXQ/d2luZG93LmxvY2F0aW9uLmhyZWY9dDp3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9fWZ1bmN0aW9uIHNDKGU9e30pe2NvbnN0IHQ9T2UoIiIpLG49T2UoZS5wb2xpdGVuZXNzfHwicG9saXRlIikscj1ldigpO2Z1bmN0aW9uIG8odT0iIixjPSJwb2xpdGUiKXt0LnZhbHVlPXUsbi52YWx1ZT1jfWZ1bmN0aW9uIHModSl7byh1LCJwb2xpdGUiKX1mdW5jdGlvbiBpKHUpe28odSwiYXNzZXJ0aXZlIil9ZnVuY3Rpb24gYSgpe28oZG9jdW1lbnQ/LnRpdGxlPy50cmltKCksbi52YWx1ZSl9ZnVuY3Rpb24gbCgpe3I/Lmhvb2tzPy5yZW1vdmVIb29rKCJkb206cmVuZGVyZWQiLGEpfXJldHVybiBhKCkscj8uaG9va3M/Lmhvb2soImRvbTpyZW5kZXJlZCIsKCk9PnthKCl9KSx7X2NsZWFudXA6bCxtZXNzYWdlOnQscG9saXRlbmVzczpuLHNldDpvLHBvbGl0ZTpzLGFzc2VydGl2ZTppfX1mdW5jdGlvbiBpQyhlPXt9KXtjb25zdCB0PUJlKCksbj10Ll9yb3V0ZUFubm91bmNlcnx8PXNDKGUpO3JldHVybiBlLnBvbGl0ZW5lc3MmJmUucG9saXRlbmVzcyE9PW4ucG9saXRlbmVzcy52YWx1ZSYmKG4ucG9saXRlbmVzcy52YWx1ZT1lLnBvbGl0ZW5lc3MpLHFyKCkmJih0Ll9yb3V0ZUFubm91bmNlckRlcHN8fD0wLHQuX3JvdXRlQW5ub3VuY2VyRGVwcysrLFJzKCgpPT57dC5fcm91dGVBbm5vdW5jZXJEZXBzLS0sdC5fcm91dGVBbm5vdW5jZXJEZXBzPT09MCYmKG4uX2NsZWFudXAoKSxkZWxldGUgdC5fcm91dGVBbm5vdW5jZXIpfSkpLG59Y29uc3QgYUM9KC4uLmUpPT5lLmZpbmQodD0+dCE9PXZvaWQgMCk7ZnVuY3Rpb24gbEMoZSl7Y29uc3QgdD1lLmNvbXBvbmVudE5hbWV8fCJOdXh0TGluayI7ZnVuY3Rpb24gbihzKXtyZXR1cm4gdHlwZW9mIHM9PSJzdHJpbmciJiZzLnN0YXJ0c1dpdGgoIiMiKX1mdW5jdGlvbiByKHMsaSxhKXtjb25zdCBsPWE/P2UudHJhaWxpbmdTbGFzaDtpZighc3x8bCE9PSJhcHBlbmQiJiZsIT09InJlbW92ZSIpcmV0dXJuIHM7aWYodHlwZW9mIHM9PSJzdHJpbmciKXJldHVybiBsYShzLGwpO2NvbnN0IHU9InBhdGgiaW4gcyYmcy5wYXRoIT09dm9pZCAwP3MucGF0aDppKHMpLnBhdGg7cmV0dXJuey4uLnMsbmFtZTp2b2lkIDAscGF0aDpsYSh1LGwpfX1mdW5jdGlvbiBvKHMpe2NvbnN0IGk9SnQoKSxhPWZvKCksbD1OKCgpPT4hIWcocy50YXJnZXQpJiZnKHMudGFyZ2V0KSE9PSJfc2VsZiIpLHU9TigoKT0+e2NvbnN0IF89ZyhzLnRvKXx8ZyhzLmhyZWYpfHwiIjtyZXR1cm4gdHlwZW9mIF89PSJzdHJpbmciJiZObihfLHthY2NlcHRSZWxhdGl2ZTohMH0pfSksYz1KZCgiUm91dGVyTGluayIpLGY9YyYmdHlwZW9mIGMhPSJzdHJpbmciP2MudXNlTGluazp2b2lkIDAsZD1OKCgpPT57aWYoZyhzLmV4dGVybmFsKSlyZXR1cm4hMDtjb25zdCBfPWcocy50byl8fGcocy5ocmVmKXx8IiI7cmV0dXJuIHR5cGVvZiBfPT0ib2JqZWN0Ij8hMTpfPT09IiJ8fHUudmFsdWV9KSxwPU4oKCk9Pntjb25zdCBfPWcocy50byl8fGcocy5ocmVmKXx8IiI7cmV0dXJuIGQudmFsdWU/XzpyKF8saS5yZXNvbHZlLGcocy50cmFpbGluZ1NsYXNoKSl9KSxtPWQudmFsdWU/dm9pZCAwOmY/Lih7Li4ucyx0bzpwLHZpZXdUcmFuc2l0aW9uOmcocy52aWV3VHJhbnNpdGlvbil9KSx5PU4oKCk9Pntjb25zdCBfPWcocy50cmFpbGluZ1NsYXNoKT8/ZS50cmFpbGluZ1NsYXNoO2lmKCFwLnZhbHVlfHx1LnZhbHVlfHxuKHAudmFsdWUpKXJldHVybiBwLnZhbHVlO2lmKGQudmFsdWUpe2NvbnN0IHc9dHlwZW9mIHAudmFsdWU9PSJvYmplY3QiJiYicGF0aCJpbiBwLnZhbHVlP3l1KHAudmFsdWUpOnAudmFsdWUsdj10eXBlb2Ygdz09Im9iamVjdCI/aS5yZXNvbHZlKHcpLmhyZWY6dztyZXR1cm4gbGEodixfKX1yZXR1cm4gdHlwZW9mIHAudmFsdWU9PSJvYmplY3QiP2kucmVzb2x2ZShwLnZhbHVlKT8uaHJlZj8/bnVsbDpsYShCaShhLmFwcC5iYXNlVVJMLHAudmFsdWUpLF8pfSk7cmV0dXJue3RvOnAsaGFzVGFyZ2V0OmwsaXNBYnNvbHV0ZVVybDp1LGlzRXh0ZXJuYWw6ZCxocmVmOnksaXNBY3RpdmU6bT8uaXNBY3RpdmU/P04oKCk9PnAudmFsdWU9PT1pLmN1cnJlbnRSb3V0ZS52YWx1ZS5wYXRoKSxpc0V4YWN0QWN0aXZlOm0/LmlzRXhhY3RBY3RpdmU/P04oKCk9PnAudmFsdWU9PT1pLmN1cnJlbnRSb3V0ZS52YWx1ZS5wYXRoKSxyb3V0ZTptPy5yb3V0ZT8/TigoKT0+aS5yZXNvbHZlKHAudmFsdWUpKSxhc3luYyBuYXZpZ2F0ZShfKXthd2FpdCBGbyh5LnZhbHVlLHtyZXBsYWNlOmcocy5yZXBsYWNlKSxleHRlcm5hbDpkLnZhbHVlfHxsLnZhbHVlfSl9fX1yZXR1cm4gc2Uoe25hbWU6dCxwcm9wczp7dG86e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxocmVmOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scmVsOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sbm9SZWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scHJlZmV0Y2hPbjp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LG5vUHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sYWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxleGFjdEFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scHJlZmV0Y2hlZENsYXNzOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0scmVwbGFjZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfSxhcmlhQ3VycmVudFZhbHVlOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sZXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OnZvaWQgMCxyZXF1aXJlZDohMX0sY3VzdG9tOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDp2b2lkIDAscmVxdWlyZWQ6ITF9LHRyYWlsaW5nU2xhc2g6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwLHJlcXVpcmVkOiExfX0sdXNlTGluazpvLHNldHVwKHMse3Nsb3RzOml9KXtjb25zdCBhPUp0KCkse3RvOmwsaHJlZjp1LG5hdmlnYXRlOmMsaXNFeHRlcm5hbDpmLGhhc1RhcmdldDpkLGlzQWJzb2x1dGVVcmw6cH09byhzKSxtPU9lKCExKSx5PUcobnVsbCksXz1oPT57eS52YWx1ZT1zLmN1c3RvbT9oPy4kZWw/Lm5leHRFbGVtZW50U2libGluZzpoPy4kZWx9O2Z1bmN0aW9uIHcoaCl7cmV0dXJuIW0udmFsdWUmJih0eXBlb2Ygcy5wcmVmZXRjaE9uPT0ic3RyaW5nIj9zLnByZWZldGNoT249PT1oOnMucHJlZmV0Y2hPbj8uW2hdPz9lLnByZWZldGNoT24/LltoXSkmJihzLnByZWZldGNoPz9lLnByZWZldGNoKSE9PSExJiZzLm5vUHJlZmV0Y2ghPT0hMCYmcy50YXJnZXQhPT0iX2JsYW5rIiYmIWRDKCl9YXN5bmMgZnVuY3Rpb24gdihoPUJlKCkpe2lmKG0udmFsdWUpcmV0dXJuO20udmFsdWU9ITA7Y29uc3QgYj10eXBlb2YgbC52YWx1ZT09InN0cmluZyI/bC52YWx1ZTpmLnZhbHVlP3l1KGwudmFsdWUpOmEucmVzb2x2ZShsLnZhbHVlKS5mdWxsUGF0aCx4PWYudmFsdWU/bmV3IFVSTChiLHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5ocmVmOmI7YXdhaXQgUHJvbWlzZS5hbGwoW2guaG9va3MuY2FsbEhvb2soImxpbms6cHJlZmV0Y2giLHgpPy5jYXRjaCgoKT0+e30pLCFmLnZhbHVlJiYhZC52YWx1ZSYmUnYobC52YWx1ZSxhKS5jYXRjaCgoKT0+e30pXSl9aWYodygidmlzaWJpbGl0eSIpKXtjb25zdCBoPUJlKCk7bGV0IGIseD1udWxsO290KCgpPT57Y29uc3QgUz11QygpO3FpKCgpPT57Yj1DdSgoKT0+e3k/LnZhbHVlPy50YWdOYW1lJiYoeD1TLm9ic2VydmUoeS52YWx1ZSxhc3luYygpPT57eD8uKCkseD1udWxsLGF3YWl0IHYoaCl9KSl9KX0pfSksSG8oKCk9PntiJiZRVChiKSx4Py4oKSx4PW51bGx9KX1yZXR1cm4oKT0+e2lmKCFmLnZhbHVlJiYhZC52YWx1ZSYmIW4obC52YWx1ZSkpe2NvbnN0IHg9e3JlZjpfLHRvOmwudmFsdWUsYWN0aXZlQ2xhc3M6cy5hY3RpdmVDbGFzc3x8ZS5hY3RpdmVDbGFzcyxleGFjdEFjdGl2ZUNsYXNzOnMuZXhhY3RBY3RpdmVDbGFzc3x8ZS5leGFjdEFjdGl2ZUNsYXNzLHJlcGxhY2U6cy5yZXBsYWNlLGFyaWFDdXJyZW50VmFsdWU6cy5hcmlhQ3VycmVudFZhbHVlLGN1c3RvbTpzLmN1c3RvbX07cmV0dXJuIHMuY3VzdG9tfHwodygiaW50ZXJhY3Rpb24iKSYmKHgub25Qb2ludGVyZW50ZXI9di5iaW5kKG51bGwsdm9pZCAwKSx4Lm9uRm9jdXM9di5iaW5kKG51bGwsdm9pZCAwKSksbS52YWx1ZSYmKHguY2xhc3M9cy5wcmVmZXRjaGVkQ2xhc3N8fGUucHJlZmV0Y2hlZENsYXNzKSx4LnJlbD1zLnJlbHx8dm9pZCAwKSxGZShKZCgiUm91dGVyTGluayIpLHgsaS5kZWZhdWx0KX1jb25zdCBoPXMudGFyZ2V0fHxudWxsLGI9YUMocy5ub1JlbD8iIjpzLnJlbCxlLmV4dGVybmFsUmVsQXR0cmlidXRlLHAudmFsdWV8fGQudmFsdWU/Im5vb3BlbmVyIG5vcmVmZXJyZXIiOiIiKXx8bnVsbDtyZXR1cm4gcy5jdXN0b20/aS5kZWZhdWx0P2kuZGVmYXVsdCh7aHJlZjp1LnZhbHVlLG5hdmlnYXRlOmMscHJlZmV0Y2g6dixnZXQgcm91dGUoKXtpZighdS52YWx1ZSlyZXR1cm47Y29uc3QgeD1uZXcgVVJMKHUudmFsdWUsd2luZG93LmxvY2F0aW9uLmhyZWYpO3JldHVybntwYXRoOngucGF0aG5hbWUsZnVsbFBhdGg6eC5wYXRobmFtZSxnZXQgcXVlcnkoKXtyZXR1cm4gT2YoeC5zZWFyY2gpfSxoYXNoOnguaGFzaCxwYXJhbXM6e30sbmFtZTp2b2lkIDAsbWF0Y2hlZDpbXSxyZWRpcmVjdGVkRnJvbTp2b2lkIDAsbWV0YTp7fSxocmVmOnUudmFsdWV9fSxyZWw6Yix0YXJnZXQ6aCxpc0V4dGVybmFsOmYudmFsdWV8fGQudmFsdWUsaXNBY3RpdmU6ITEsaXNFeGFjdEFjdGl2ZTohMX0pOm51bGw6RmUoImEiLHtyZWY6eSxocmVmOnUudmFsdWV8fG51bGwscmVsOmIsdGFyZ2V0Omgsb25DbGljazphc3luYyB4PT57aWYoIShmLnZhbHVlfHxkLnZhbHVlKSl7eC5wcmV2ZW50RGVmYXVsdCgpO3RyeXtjb25zdCBTPVZ5KHUudmFsdWUpO3JldHVybiBhd2FpdChzLnJlcGxhY2U/YS5yZXBsYWNlKFMpOmEucHVzaChTKSl9ZmluYWxseXtpZihuKGwudmFsdWUpKXtjb25zdCBTPWwudmFsdWUuc2xpY2UoMSk7bGV0IGs9Uzt0cnl7az1kZWNvZGVVUklDb21wb25lbnQoUyl9Y2F0Y2h7fWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGspPy5mb2N1cygpfX19fX0saS5kZWZhdWx0Py4oKSl9fX0pfWNvbnN0IGNDPWxDKE8xKTtmdW5jdGlvbiBsYShlLHQpe2NvbnN0IG49dD09PSJhcHBlbmQiP1R5OmtpO3JldHVybiBObihlKSYmIWUuc3RhcnRzV2l0aCgiaHR0cCIpP2U6bihlLCEwKX1mdW5jdGlvbiB1Qygpe2NvbnN0IGU9QmUoKTtpZihlLl9vYnNlcnZlcilyZXR1cm4gZS5fb2JzZXJ2ZXI7bGV0IHQ9bnVsbDtjb25zdCBuPW5ldyBNYXAscj0ocyxpKT0+KHR8fD1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYT0+e2Zvcihjb25zdCBsIG9mIGEpe2NvbnN0IHU9bi5nZXQobC50YXJnZXQpOyhsLmlzSW50ZXJzZWN0aW5nfHxsLmludGVyc2VjdGlvblJhdGlvPjApJiZ1JiZ1KCl9fSksbi5zZXQocyxpKSx0Lm9ic2VydmUocyksKCk9PntuLmRlbGV0ZShzKSx0Py51bm9ic2VydmUocyksbi5zaXplPT09MCYmKHQ/LmRpc2Nvbm5lY3QoKSx0PW51bGwpfSk7cmV0dXJuIGUuX29ic2VydmVyPXtvYnNlcnZlOnJ9fWNvbnN0IGZDPS8yZy87ZnVuY3Rpb24gZEMoKXtjb25zdCBlPW5hdmlnYXRvci5jb25uZWN0aW9uO3JldHVybiEhKGUmJihlLnNhdmVEYXRhfHxmQy50ZXN0KGUuZWZmZWN0aXZlVHlwZSkpKX1jb25zdCBwQz17dWk6e2NvbG9yczp7cHJpbWFyeToiYmx1ZSIsbmV1dHJhbDoiZ3JheSJ9fX0sbUM9e251eHQ6e30saWNvbjp7cHJvdmlkZXI6InNlcnZlciIsY2xhc3M6IiIsYWxpYXNlczp7fSxpY29uaWZ5QXBpRW5kcG9pbnQ6Imh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIixsb2NhbEFwaUVuZHBvaW50OiIvYXBpL19udXh0X2ljb24iLGZhbGxiYWNrVG9BcGk6ITAsY3NzU2VsZWN0b3JQcmVmaXg6ImktIixjc3NXaGVyZVBzZXVkbzohMCxjc3NMYXllcjoiYmFzZSIsbW9kZToiY3NzIixhdHRyczp7ImFyaWEtaGlkZGVuIjohMH0sY29sbGVjdGlvbnM6WyJhY2FkZW1pY29ucyIsImFrYXItaWNvbnMiLCJhbnQtZGVzaWduIiwiYXJjdGljb25zIiwiYmFzaWwiLCJiaSIsImJpdGNvaW4taWNvbnMiLCJicG1uIiwiYnJhbmRpY28iLCJieCIsImJ4bCIsImJ4cyIsImJ5dGVzaXplIiwiY2FyYm9uIiwiY2F0cHB1Y2NpbiIsImNiaSIsImNoYXJtIiwiY2kiLCJjaWIiLCJjaWYiLCJjaWwiLCJjaXJjbGUtZmxhZ3MiLCJjaXJjdW0iLCJjbGFyaXR5IiwiY29kZXgiLCJjb2RpY29uIiwiY292aWQiLCJjcnlwdG9jdXJyZW5jeSIsImNyeXB0b2N1cnJlbmN5LWNvbG9yIiwiY3VpZGEiLCJkYXNoaWNvbnMiLCJkZXZpY29uIiwiZGV2aWNvbi1wbGFpbiIsImRpbmtpZS1pY29ucyIsImR1by1pY29ucyIsImVpIiwiZWwiLCJlbW9qaW9uZSIsImVtb2ppb25lLW1vbm90b25lIiwiZW1vamlvbmUtdjEiLCJlbnR5cG8iLCJlbnR5cG8tc29jaWFsIiwiZW9zLWljb25zIiwiZXAiLCJldCIsImV2YSIsImY3IiwiZmEiLCJmYS1icmFuZHMiLCJmYS1yZWd1bGFyIiwiZmEtc29saWQiLCJmYTYtYnJhbmRzIiwiZmE2LXJlZ3VsYXIiLCJmYTYtc29saWQiLCJmYTctYnJhbmRzIiwiZmE3LXJlZ3VsYXIiLCJmYTctc29saWQiLCJmYWQiLCJmYW1pY29ucyIsImZlIiwiZmVhdGhlciIsImZpbGUtaWNvbnMiLCJmbGFnIiwiZmxhZ3BhY2siLCJmbGF0LWNvbG9yLWljb25zIiwiZmxhdC11aSIsImZsb3diaXRlIiwiZmx1ZW50IiwiZmx1ZW50LWNvbG9yIiwiZmx1ZW50LWVtb2ppIiwiZmx1ZW50LWVtb2ppLWZsYXQiLCJmbHVlbnQtZW1vamktaGlnaC1jb250cmFzdCIsImZsdWVudC1tZGwyIiwiZm9udGVsaWNvIiwiZm9udGlzdG8iLCJmb3Jta2l0IiwiZm91bmRhdGlvbiIsImZ4ZW1vamkiLCJnYWxhIiwiZ2FtZS1pY29ucyIsImdhcmRlbiIsImdlbyIsImdnIiwiZ2lzIiwiZ3Jhdml0eS11aSIsImdyaWRpY29ucyIsImdyb21tZXQtaWNvbnMiLCJndWlkYW5jZSIsImhlYWx0aGljb25zIiwiaGVyb2ljb25zIiwiaGVyb2ljb25zLW91dGxpbmUiLCJoZXJvaWNvbnMtc29saWQiLCJodWdlaWNvbnMiLCJodW1ibGVpY29ucyIsImljIiwiaWNvbW9vbi1mcmVlIiwiaWNvbi1wYXJrIiwiaWNvbi1wYXJrLW91dGxpbmUiLCJpY29uLXBhcmstc29saWQiLCJpY29uLXBhcmstdHdvdG9uZSIsImljb25hbW9vbiIsImljb25vaXIiLCJpY29uczgiLCJpbCIsImlvbiIsIml3d2EiLCJpeCIsImphbSIsImxhIiwibGV0cy1pY29ucyIsImxpbmUtbWQiLCJsaW5laWNvbnMiLCJsb2dvcyIsImxzIiwibHNpY29uIiwibHVjaWRlIiwibHVjaWRlLWxhYiIsIm1hZ2UiLCJtYWplc3RpY29ucyIsIm1ha2kiLCJtYXAiLCJtYXJrZXRlcSIsIm1hdGVyaWFsLWljb24tdGhlbWUiLCJtYXRlcmlhbC1zeW1ib2xzIiwibWF0ZXJpYWwtc3ltYm9scy1saWdodCIsIm1kaSIsIm1kaS1saWdodCIsIm1lZGljYWwtaWNvbiIsIm1lbW9yeSIsIm1ldGVvY29ucyIsIm1ldGVvci1pY29ucyIsIm1pIiwibWluZ2N1dGUiLCJtb25vLWljb25zIiwibXluYXVpIiwibmltYnVzIiwibm9uaWNvbnMiLCJub3RvIiwibm90by12MSIsIm5yayIsIm9jdGljb24iLCJvaSIsIm9vdWkiLCJvcGVubW9qaSIsIm91aSIsInBhamFtYXMiLCJwZXBpY29ucyIsInBlcGljb25zLXBlbmNpbCIsInBlcGljb25zLXBvcCIsInBlcGljb25zLXByaW50IiwicGgiLCJwaWNvbiIsInBpeGVsIiwicGl4ZWxhcnRpY29ucyIsInByaW1lIiwicHJvaWNvbnMiLCJwcyIsInFsZW1lbnRpbmUtaWNvbnMiLCJxdWlsbCIsInJhZGl4LWljb25zIiwicmFwaGFlbCIsInJpIiwicml2ZXQtaWNvbnMiLCJyb2VudGdlbiIsInNpIiwic2ktZ2x5cGgiLCJzaWRla2lja2ljb25zIiwic2ltcGxlLWljb25zIiwic2ltcGxlLWxpbmUtaWNvbnMiLCJza2lsbC1pY29ucyIsInNvbGFyIiwic3Rhc2giLCJzdHJlYW1saW5lIiwic3RyZWFtbGluZS1ibG9jayIsInN0cmVhbWxpbmUtY29sb3IiLCJzdHJlYW1saW5lLWN5YmVyIiwic3RyZWFtbGluZS1jeWJlci1jb2xvciIsInN0cmVhbWxpbmUtZW1vamlzIiwic3RyZWFtbGluZS1mbGV4Iiwic3RyZWFtbGluZS1mbGV4LWNvbG9yIiwic3RyZWFtbGluZS1mcmVlaGFuZCIsInN0cmVhbWxpbmUtZnJlZWhhbmQtY29sb3IiLCJzdHJlYW1saW5lLWthbWVsZW9uLWNvbG9yIiwic3RyZWFtbGluZS1sb2dvcyIsInN0cmVhbWxpbmUtcGl4ZWwiLCJzdHJlYW1saW5lLXBsdW1wIiwic3RyZWFtbGluZS1wbHVtcC1jb2xvciIsInN0cmVhbWxpbmUtc2hhcnAiLCJzdHJlYW1saW5lLXNoYXJwLWNvbG9yIiwic3RyZWFtbGluZS1zdGlja2llcy1jb2xvciIsInN0cmVhbWxpbmUtdWx0aW1hdGUiLCJzdHJlYW1saW5lLXVsdGltYXRlLWNvbG9yIiwic3Vid2F5Iiwic3ZnLXNwaW5uZXJzIiwic3lzdGVtLXVpY29ucyIsInRhYmxlciIsInRkZXNpZ24iLCJ0ZWVueWljb25zIiwidGVtYWtpIiwidG9rZW4iLCJ0b2tlbi1icmFuZGVkIiwidG9wY29hdCIsInR3ZW1vamkiLCJ0eXBjbiIsInVpbCIsInVpbSIsInVpcyIsInVpdCIsInVpdyIsInVuanMiLCJ2YWFkaW4iLCJ2cyIsInZzY29kZS1pY29ucyIsIndlYnN5bWJvbCIsIndldWkiLCJ3aGgiLCJ3aSIsIndwZiIsInptZGkiLCJ6b25kaWNvbnMiXSxmZXRjaFRpbWVvdXQ6MTUwMH0sdWk6e2NvbG9yczp7cHJpbWFyeToiZ3JlZW4iLHNlY29uZGFyeToiYmx1ZSIsc3VjY2VzczoiZ3JlZW4iLGluZm86ImJsdWUiLHdhcm5pbmc6InllbGxvdyIsZXJyb3I6InJlZCIsbmV1dHJhbDoic2xhdGUifSxpY29uczp7YXJyb3dEb3duOiJpLWx1Y2lkZS1hcnJvdy1kb3duIixhcnJvd0xlZnQ6ImktbHVjaWRlLWFycm93LWxlZnQiLGFycm93UmlnaHQ6ImktbHVjaWRlLWFycm93LXJpZ2h0IixhcnJvd1VwOiJpLWx1Y2lkZS1hcnJvdy11cCIsY2F1dGlvbjoiaS1sdWNpZGUtY2lyY2xlLWFsZXJ0IixjaGVjazoiaS1sdWNpZGUtY2hlY2siLGNoZXZyb25Eb3VibGVMZWZ0OiJpLWx1Y2lkZS1jaGV2cm9ucy1sZWZ0IixjaGV2cm9uRG91YmxlUmlnaHQ6ImktbHVjaWRlLWNoZXZyb25zLXJpZ2h0IixjaGV2cm9uRG93bjoiaS1sdWNpZGUtY2hldnJvbi1kb3duIixjaGV2cm9uTGVmdDoiaS1sdWNpZGUtY2hldnJvbi1sZWZ0IixjaGV2cm9uUmlnaHQ6ImktbHVjaWRlLWNoZXZyb24tcmlnaHQiLGNoZXZyb25VcDoiaS1sdWNpZGUtY2hldnJvbi11cCIsY2xvc2U6ImktbHVjaWRlLXgiLGNvcHk6ImktbHVjaWRlLWNvcHkiLGNvcHlDaGVjazoiaS1sdWNpZGUtY29weS1jaGVjayIsZGFyazoiaS1sdWNpZGUtbW9vbiIsZHJhZzoiaS1sdWNpZGUtZ3JpcC12ZXJ0aWNhbCIsZWxsaXBzaXM6ImktbHVjaWRlLWVsbGlwc2lzIixlcnJvcjoiaS1sdWNpZGUtY2lyY2xlLXgiLGV4dGVybmFsOiJpLWx1Y2lkZS1hcnJvdy11cC1yaWdodCIsZXllOiJpLWx1Y2lkZS1leWUiLGV5ZU9mZjoiaS1sdWNpZGUtZXllLW9mZiIsZmlsZToiaS1sdWNpZGUtZmlsZSIsZm9sZGVyOiJpLWx1Y2lkZS1mb2xkZXIiLGZvbGRlck9wZW46ImktbHVjaWRlLWZvbGRlci1vcGVuIixoYXNoOiJpLWx1Y2lkZS1oYXNoIixpbmZvOiJpLWx1Y2lkZS1pbmZvIixsaWdodDoiaS1sdWNpZGUtc3VuIixsb2FkaW5nOiJpLWx1Y2lkZS1sb2FkZXItY2lyY2xlIixtZW51OiJpLWx1Y2lkZS1tZW51IixtaW51czoiaS1sdWNpZGUtbWludXMiLHBhbmVsQ2xvc2U6ImktbHVjaWRlLXBhbmVsLWxlZnQtY2xvc2UiLHBhbmVsT3BlbjoiaS1sdWNpZGUtcGFuZWwtbGVmdC1vcGVuIixwbHVzOiJpLWx1Y2lkZS1wbHVzIixyZWxvYWQ6ImktbHVjaWRlLXJvdGF0ZS1jY3ciLHNlYXJjaDoiaS1sdWNpZGUtc2VhcmNoIixzdG9wOiJpLWx1Y2lkZS1zcXVhcmUiLHN1Y2Nlc3M6ImktbHVjaWRlLWNpcmNsZS1jaGVjayIsc3lzdGVtOiJpLWx1Y2lkZS1tb25pdG9yIix0aXA6ImktbHVjaWRlLWxpZ2h0YnVsYiIsdXBsb2FkOiJpLWx1Y2lkZS11cGxvYWQiLHdhcm5pbmc6ImktbHVjaWRlLXRyaWFuZ2xlLWFsZXJ0In0sdHY6e3R3TWVyZ2VDb25maWc6e319fX0sTnY9ejEocEMsbUMpO2Z1bmN0aW9uIFN0KCl7Y29uc3QgZT1CZSgpO3JldHVybiBlLl9hcHBDb25maWd8fD1idChOdiksZS5fYXBwQ29uZmlnfWZ1bmN0aW9uIER2KCl7Y29uc3QgZT1mbygpLnB1YmxpYy5jc3VyZi5oZWFkZXJOYW1lPz8iIjtyZXR1cm57Y3NyZjp3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJjc3JmLXRva2VuIl0nKT8uZ2V0QXR0cmlidXRlKCJjb250ZW50IiksaGVhZGVyTmFtZTplfX1mdW5jdGlvbiBoQyhlLHQpe3JldHVybiBlLnJlcGxhY2UoLzooXHcrKS9nLChuLHIpPT57aWYociBpbiB0KXtjb25zdCBvPXRbcl07cmV0dXJuIGRlbGV0ZSB0W3JdLFN0cmluZyhvKX1yZXR1cm4gbn0pfWNvbnN0IExlPSRmZXRjaC5jcmVhdGUoe29uUmVxdWVzdChlKXtjb25zdHtvcHRpb25zOnR9PWU7dC5zaWxlbnR8fEFhKCkuc3RhcnQoKSx0eXBlb2YgZS5yZXF1ZXN0PT0ic3RyaW5nIiYmdC5xdWVyeSYmKGUucmVxdWVzdD1oQyhlLnJlcXVlc3QsdC5xdWVyeSkpO3RyeXtjb25zdCBuPUR2KCk7bj8uaGVhZGVyTmFtZSYmKHQuaGVhZGVycz17Li4udC5oZWFkZXJzLFtuLmhlYWRlck5hbWVdOm4uY3NyZn0pfWNhdGNoe319LG9uUmVzcG9uc2UoZSl7ZS5vcHRpb25zLnNpbGVudHx8QWEoKS5maW5pc2goKX0sYXN5bmMgb25SZXNwb25zZUVycm9yKGUpe2Uub3B0aW9ucy5zaWxlbnR8fEFhKCkuZmluaXNoKHtlcnJvcjohMH0pO2NvbnN0IHQ9THYoKSxuPWU/LnJlc3BvbnNlPy5zdGF0dXM7bGV0IHI9ITE7dHJ5e3I9IVN0cmluZyhlLnJlc3BvbnNlLnVybCkuc3RhcnRzV2l0aChnZXRCYXNlVXJsKCkpfWNhdGNoe31zd2l0Y2gobil7Y2FzZSA0MDE6e2lmKGUucmVxdWVzdC50b1N0cmluZygpLmluY2x1ZGVzKCJhdXRoIil8fHIpcmV0dXJuO3RyeXthd2FpdCB0LmxvZ291dCgpfWNhdGNoe31maW5hbGx5e0ZvKCIvYXV0aC9sb2dpbiIpfWJyZWFrfX19fSk7ZnVuY3Rpb24gTHYoKXtmdW5jdGlvbiBlKCl7cmV0dXJuIExlKCIvYXBpL2F1dGgvbWUiKX1mdW5jdGlvbiB0KGMpe3JldHVybiBMZSgiL2FwaS91c2VyIix7bWV0aG9kOiJQQVRDSCIsYm9keTpjfSl9ZnVuY3Rpb24gbigpe3JldHVybiBMZSgiL2FwaS91c2VyL25vdGlmaWNhdGlvbiIpfWZ1bmN0aW9uIHIoYyl7cmV0dXJuIExlKCIvYXBpL3VzZXIvbm90aWZpY2F0aW9uIix7bWV0aG9kOiJQQVRDSCIsYm9keTpjfSl9ZnVuY3Rpb24gbyhjKXtyZXR1cm4gTGUoIi9hcGkvYXV0aC9waG9uZSIse21ldGhvZDoiUEFUQ0giLGJvZHk6e3Bob25lOmN9fSl9ZnVuY3Rpb24gcyhjKXtyZXR1cm4gTGUoIi9hcGkvYXV0aC9pbXBlcnNvbmF0ZS91c2VycyIse3F1ZXJ5OmN9KX1mdW5jdGlvbiBpKGMpe3JldHVybiBMZSgiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3N0YXJ0Iix7bWV0aG9kOiJQT1NUIixib2R5Ont1c2VyX2lkOmN9fSl9ZnVuY3Rpb24gYSgpe3JldHVybiBMZSgiL2FwaS9hdXRoL2ltcGVyc29uYXRlL3N0b3AiLHttZXRob2Q6IlBPU1QifSl9ZnVuY3Rpb24gbChjKXtjb25zdCBmPW5ldyBGb3JtRGF0YTtyZXR1cm4gZi5hcHBlbmQoImZpbGUiLGMpLExlKCIvYXBpL3VzZXIvYXZhdGFyIix7bWV0aG9kOiJQT1NUIixib2R5OmZ9KX1mdW5jdGlvbiB1KCl7cmV0dXJuIExlKCIvYXBpL2F1dGgvbG9nb3V0Iil9cmV0dXJue2ZldGNoQ3VycmVudFVzZXI6ZSx1cGRhdGVDdXJyZW50VXNlcjp0LGZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOm4sdXBkYXRlVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOnIsdXBkYXRlUGhvbmVOdW1iZXI6byx1cGxvYWRBdmF0YXI6bCxmZXRjaEltcGVyc29uYXRpb25DYW5kaWRhdGVzOnMsc3RhcnRJbXBlcnNvbmF0aW9uOmksc3RvcEltcGVyc29uYXRpb246YSxsb2dvdXQ6dX19ZnVuY3Rpb24gZ0MoKXtmdW5jdGlvbiBlKFMpe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb25zIix7cXVlcnk6U30pfWZ1bmN0aW9uIHQoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbnMiLHttZXRob2Q6IlBPU1QiLGJvZHk6U30pfWZ1bmN0aW9uIG4oKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9uIil9ZnVuY3Rpb24gcihTKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9uIix7bWV0aG9kOiJQQVRDSCIsYm9keTpTfSl9ZnVuY3Rpb24gbyhTKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9ucy9zd2l0Y2giLHttZXRob2Q6IlBPU1QiLGJvZHk6U30pfWZ1bmN0aW9uIHMoKXtyZXR1cm4gTGUoIi9hcGkvc2Vzc2lvbi9yZWZyZXNoIix7bWV0aG9kOiJQT1NUIn0pfWZ1bmN0aW9uIGkoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7cXVlcnk6U30pfWZ1bmN0aW9uIGEoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbi9tZW1iZXJzIix7bWV0aG9kOiJQT1NUIixib2R5OlN9KX1mdW5jdGlvbiBsKCl7cmV0dXJuIExlKCIvYXBpL3Blcm1pc3Npb25zIil9ZnVuY3Rpb24gdShTLGspe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy86dXNlcklkL2FiaWxpdGllcyIse21ldGhvZDoiUEFUQ0giLGJvZHk6ayxxdWVyeTp7dXNlcklkOlN9fSl9ZnVuY3Rpb24gYyhTKXtyZXR1cm4gTGUoIi9hcGkvb3JnYW5pemF0aW9uL21lbWJlcnMvOnVzZXJJZCIse21ldGhvZDoiREVMRVRFIixxdWVyeTp7dXNlcklkOlN9fSl9ZnVuY3Rpb24gZigpe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiKX1mdW5jdGlvbiBkKFMpe3JldHVybiBMZSgiL2FwaS9vcmdhbml6YXRpb24vaW52aXRhdGlvbnMiLHttZXRob2Q6IlBPU1QiLGJvZHk6U30pfWZ1bmN0aW9uIHAoUyl7cmV0dXJuIExlKCIvYXBpL29yZ2FuaXphdGlvbi9pbnZpdGF0aW9ucy86aWQiLHttZXRob2Q6IkRFTEVURSIscXVlcnk6e2lkOlN9fSl9ZnVuY3Rpb24gbShTKXtyZXR1cm4gTGUoIi9hcGkvaW52aXRhdGlvbnMvOnRva2VuIix7cXVlcnk6e3Rva2VuOlN9fSl9ZnVuY3Rpb24geShTKXtyZXR1cm4gTGUoIi9hcGkvaW52aXRhdGlvbnMvOnRva2VuL2FjY2VwdCIse21ldGhvZDoiUE9TVCIscXVlcnk6e3Rva2VuOlN9fSl9ZnVuY3Rpb24gXygpe3JldHVybiBMZSgiL2FwaS9yb2xlcyIpfWZ1bmN0aW9uIHcoUyl7cmV0dXJuIExlKCIvYXBpL3JvbGVzIix7bWV0aG9kOiJQT1NUIixib2R5OlN9KX1mdW5jdGlvbiB2KFMsayl7cmV0dXJuIExlKGAvYXBpL3JvbGVzLyR7U31gLHttZXRob2Q6IlBBVENIIixib2R5Omt9KX1mdW5jdGlvbiBoKFMpe3JldHVybiBMZShgL2FwaS9yb2xlcy8ke1N9YCx7bWV0aG9kOiJERUxFVEUifSl9ZnVuY3Rpb24gYihTLGspe3JldHVybiBMZShgL2FwaS9vcmdhbml6YXRpb24vbWVtYmVycy8ke1N9L3JvbGVzYCx7bWV0aG9kOiJQQVRDSCIsYm9keTp7cm9sZV9pZHM6a319KX1mdW5jdGlvbiB4KCl7cmV0dXJuIExlKCIvYXBpL2FjY291bnQiLHttZXRob2Q6IkRFTEVURSJ9KX1yZXR1cm57ZmV0Y2hPcmdhbml6YXRpb25zOmUsY3JlYXRlT3JnYW5pemF0aW9uOnQsZmV0Y2hPcmdhbml6YXRpb246bix1cGRhdGVPcmdhbml6YXRpb246cixzd2l0Y2hPcmdhbml6YXRpb246byxyZWZyZXNoU2Vzc2lvbjpzLGZldGNoTWVtYmVyczppLGFkZE1lbWJlcjphLGZldGNoUGVybWlzc2lvbnM6bCx1cGRhdGVNZW1iZXJBYmlsaXRpZXM6dSxyZW1vdmVNZW1iZXI6YyxmZXRjaEludml0YXRpb25zOmYsY3JlYXRlSW52aXRhdGlvbjpkLHJldm9rZUludml0YXRpb246cCxmZXRjaEludml0YXRpb246bSxhY2NlcHRJbnZpdGF0aW9uOnksZmV0Y2hSb2xlczpfLGNyZWF0ZVJvbGU6dyx1cGRhdGVSb2xlOnYsZGVsZXRlUm9sZTpoLGFzc2lnbk1lbWJlclJvbGVzOmIsZGVsZXRlQWNjb3VudDp4fX1jb25zdCBNZj1ZeSgiYXV0aCIsKCk9Pntjb25zdCBlPWlvKCJ1c2VyIiwoKT0+bnVsbCksdD1MdigpLG49Z0MoKSxyPU4oKCk9PmUudmFsdWU/LmltcGVyc29uYXRvcj8/bnVsbCksbz1OKCgpPT4hIXIudmFsdWUpLHM9TigoKT0+ZS52YWx1ZT8uYWN0aXZlT3JnYW5pemF0aW9uSWQ/P251bGwpO2FzeW5jIGZ1bmN0aW9uIGkoKXtjb25zdCB3PWF3YWl0IHQuZmV0Y2hDdXJyZW50VXNlcigpO2UudmFsdWU9d31hc3luYyBmdW5jdGlvbiBhKHcpe2F3YWl0IHQudXBkYXRlQ3VycmVudFVzZXIodyksYXdhaXQgaSgpfWFzeW5jIGZ1bmN0aW9uIGwodyl7Y29uc3R7YXZhdGFyOnZ9PWF3YWl0IHQudXBsb2FkQXZhdGFyKHcpO2UudmFsdWUmJihlLnZhbHVlPXsuLi5lLnZhbHVlLGF2YXRhcjp2fSl9ZnVuY3Rpb24gdSgpe3JldHVybiB0LmZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzKCl9ZnVuY3Rpb24gYyh3KXtyZXR1cm4gdC51cGRhdGVVc2VyTm90aWZpY2F0aW9uU2V0dGluZ3Modyl9ZnVuY3Rpb24gZih3KXtyZXR1cm4gdC51cGRhdGVQaG9uZU51bWJlcih3KX1hc3luYyBmdW5jdGlvbiBkKHcpe2NvbnN0IHY9YXdhaXQgdC5zdGFydEltcGVyc29uYXRpb24odyk7cmV0dXJuIGUudmFsdWU9dix2fWFzeW5jIGZ1bmN0aW9uIHAoKXtjb25zdCB3PWF3YWl0IHQuc3RvcEltcGVyc29uYXRpb24oKTtyZXR1cm4gZS52YWx1ZT13LHd9YXN5bmMgZnVuY3Rpb24gbSh3KXtjb25zdCB2PWF3YWl0IG4uc3dpdGNoT3JnYW5pemF0aW9uKHtvcmdhbml6YXRpb25faWQ6d30pO3JldHVybiBlLnZhbHVlPXYsdn1hc3luYyBmdW5jdGlvbiB5KCl7Y29uc3Qgdz1hd2FpdCBuLnJlZnJlc2hTZXNzaW9uKCk7cmV0dXJuIGUudmFsdWU9dyx3fWFzeW5jIGZ1bmN0aW9uIF8oKXthd2FpdCB0LmxvZ291dCgpLGUudmFsdWU9bnVsbH1yZXR1cm57Y3VycmVudFVzZXI6ZSxpbXBlcnNvbmF0b3I6cixpc0ltcGVyc29uYXRpbmc6byxhY3RpdmVPcmdhbml6YXRpb25JZDpzLGZldGNoQ3VycmVudFVzZXI6aSx1cGRhdGVDdXJyZW50VXNlcjphLHVwZGF0ZUF2YXRhcjpsLGZldGNoVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOnUsdXBkYXRlVXNlck5vdGlmaWNhdGlvblNldHRpbmdzOmMsdXBkYXRlUGhvbmVOdW1iZXI6Zixzd2l0Y2hPcmdhbml6YXRpb246bSxyZWZyZXNoU2Vzc2lvbjp5LHN0YXJ0SW1wZXJzb25hdGlvbjpkLHN0b3BJbXBlcnNvbmF0aW9uOnAsbG9nb3V0Ol99fSkseUM9YXN5bmMgZT0+e2xldCB0LG47Y29uc3Qgcj1NZigpO2lmKCFyLmN1cnJlbnRVc2VyKXRyeXtbdCxuXT1ncygoKT0+ci5mZXRjaEN1cnJlbnRVc2VyKCkpLGF3YWl0IHQsbigpfWNhdGNoe31jb25zdCBvPSEhci5jdXJyZW50VXNlcixzPWUubWV0YS5wdWJsaWM9PT0hMHx8ZS5tZXRhLnVuYXV0aGVudGljYXRlZE9ubHk9PT0hMDtpZihvJiZlLm1ldGEudW5hdXRoZW50aWNhdGVkT25seSlyZXR1cm4gRm8oIi9kYXNoYm9hcmQiKTtpZighbyYmIXMpcmV0dXJuIEZvKCIvYXV0aC9sb2dpbiIpfTtmdW5jdGlvbiBUaShlKXtjb25zdFt0PSIiLG49IiIscl09ZS5zcGxpdCgiOiIpO3JldHVybntzdWJqZWN0OnQsYWN0aW9uOm4sc2NvcGU6cn19Y29uc3QgJHY9bmV3IFNldChbInJlYWQiLCJ3cml0ZSIsImRlbGV0ZSJdKTtmdW5jdGlvbiBjcShlLHQpe2NvbnN0e3N1YmplY3Q6bixhY3Rpb246cixzY29wZTpvfT1UaSh0KTtyZXR1cm4gZS5zb21lKHM9Pntjb25zdHtzdWJqZWN0OmksYWN0aW9uOmEsc2NvcGU6bH09VGkocyk7cmV0dXJuIGkhPT1uPyExOmE9PT0ibWFuYWdlIiYmbD09PW8mJiR2LmhhcyhyKT8hMDphPT09ciYmbD09PW99KX1mdW5jdGlvbiB2QyhlLHQpe2NvbnN0e3N1YmplY3Q6bixhY3Rpb246cn09VGkodCk7cmV0dXJuIGUuc29tZShvPT57Y29uc3R7c3ViamVjdDpzLGFjdGlvbjppfT1UaShvKTtyZXR1cm4gcyE9PW4/ITE6aT09PSJtYW5hZ2UiJiYkdi5oYXMocik/ITA6aT09PXJ9KX1mdW5jdGlvbiBiQyhlLHQpe3JldHVybiBlLm1hcChuPT57Y29uc3R7c3ViamVjdDpyLGFjdGlvbjpvLHNjb3BlOnN9PVRpKG4pLGk9e2FjdGlvbjpvLHN1YmplY3Q6cn07cmV0dXJuIHM9PT0ic2VsZiImJnQmJihpLmNvbmRpdGlvbnM9e3VzZXJfaWQ6dH0pLGl9KX1mdW5jdGlvbiB3QyhlLHQpe3JldHVybiB0Lmxlbmd0aD09PTA/ITA6dC5zb21lKG49PnZDKGUsbikpfWNvbnN0IF9DPWU9Pntjb25zdCB0PWUubWV0YS5jYW4/P1tdO2lmKHQubGVuZ3RoPT09MClyZXR1cm47Y29uc3Qgcj1NZigpLmN1cnJlbnRVc2VyPy5hYmlsaXRpZXM/P1tdO2lmKCF3QyhyLHQpKXJldHVybiBGbygiL2ZvcmJpZGRlbiIpfSx4Qz1lPT57Y29uc3QgdD1ydih7cGF0aDplLnBhdGh9KTtpZih0LnJlZGlyZWN0KXtjb25zdCBuPXQucmVkaXJlY3QuaW5jbHVkZXMoIiMiKT90LnJlZGlyZWN0OnQucmVkaXJlY3QrZS5oYXNoO3JldHVybiBObihuLHthY2NlcHRSZWxhdGl2ZTohMH0pPyh3aW5kb3cubG9jYXRpb24uaHJlZj1uLCExKTpufX0sU0M9W0JULHlDLF9DLHhDXSxBdT17fTtmdW5jdGlvbiBrQyhlLHQsbil7Y29uc3R7cGF0aG5hbWU6cixzZWFyY2g6byxoYXNoOnN9PXQsaT1lLmluZGV4T2YoIiMiKTtpZihpPi0xKXtjb25zdCB1PXMuaW5jbHVkZXMoZS5zbGljZShpKSk/ZS5zbGljZShpKS5sZW5ndGg6MTtsZXQgYz1zLnNsaWNlKHUpO3JldHVybiBjWzBdIT09Ii8iJiYoYz0iLyIrYyksU3AoYywiIil9Y29uc3QgYT1TcChyLGUpLGw9IW58fFB5KGEsbik/YTpuO3JldHVybiBsKyhsLmluY2x1ZGVzKCI/Iik/IiI6bykrc31jb25zdCBFQz1sdCh7bmFtZToibnV4dDpyb3V0ZXIiLGVuZm9yY2U6InByZSIsYXN5bmMgc2V0dXAoZSl7bGV0IHQsbixyPWZvKCkuYXBwLmJhc2VVUkw7Y29uc3Qgbz1Hci5oaXN0b3J5Py4ocik/P0xFKHIpLHM9R3Iucm91dGVzPyhbdCxuXT1ncygoKT0+R3Iucm91dGVzKENjKSksdD1hd2FpdCB0LG4oKSx0Pz9DYyk6Q2M7bGV0IGk7Y29uc3QgYT1uVCh7Li4uR3Isc2Nyb2xsQmVoYXZpb3I6KHcsdixoKT0+e2lmKHY9PT1Pbil7aT1oO3JldHVybn1pZihHci5zY3JvbGxCZWhhdmlvcil7aWYoYS5vcHRpb25zLnNjcm9sbEJlaGF2aW9yPUdyLnNjcm9sbEJlaGF2aW9yLCJzY3JvbGxSZXN0b3JhdGlvbiJpbiB3aW5kb3cuaGlzdG9yeSl7Y29uc3QgYj1hLmJlZm9yZUVhY2goKCk9PntiKCksd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb249Im1hbnVhbCJ9KX1yZXR1cm4gR3Iuc2Nyb2xsQmVoYXZpb3IodyxPbixpfHxoKX19LGhpc3Rvcnk6byxyb3V0ZXM6c30pOyJzY3JvbGxSZXN0b3JhdGlvbiJpbiB3aW5kb3cuaGlzdG9yeSYmKHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uPSJhdXRvIiksZS52dWVBcHAudXNlKGEpO2NvbnN0IGw9T2UoYS5jdXJyZW50Um91dGUudmFsdWUpO2EuYWZ0ZXJFYWNoKCh3LHYpPT57bC52YWx1ZT12fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUudnVlQXBwLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLCJwcmV2aW91c1JvdXRlIix7Z2V0OigpPT5sLnZhbHVlfSk7Y29uc3QgdT1rQyhyLHdpbmRvdy5sb2NhdGlvbixlLnBheWxvYWQucGF0aCksYz1PZShhLmN1cnJlbnRSb3V0ZS52YWx1ZSksZj0oKT0+e2MudmFsdWU9YS5jdXJyZW50Um91dGUudmFsdWV9O2EuYWZ0ZXJFYWNoKCh3LHYpPT57dy5tYXRjaGVkLmF0KC0xKT8uY29tcG9uZW50cz8uZGVmYXVsdD09PXYubWF0Y2hlZC5hdCgtMSk/LmNvbXBvbmVudHM/LmRlZmF1bHQmJmYoKX0pO2NvbnN0IGQ9e3N5bmM6Zn07Zm9yKGNvbnN0IHcgaW4gYy52YWx1ZSlPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx3LHtnZXQ6KCk9PmMudmFsdWVbd10sZW51bWVyYWJsZTohMH0pO2UuX3JvdXRlPVBuKGQpLGUuX21pZGRsZXdhcmV8fD17Z2xvYmFsOltdLG5hbWVkOnt9fTtjb25zdCBwPU9sKCk7YS5hZnRlckVhY2goYXN5bmModyx2LGgpPT57ZGVsZXRlIGUuX3Byb2Nlc3NpbmdNaWRkbGV3YXJlLCFlLmlzSHlkcmF0aW5nJiZwLnZhbHVlJiZhd2FpdCBlLnJ1bldpdGhDb250ZXh0KEsxKSxoJiZhd2FpdCBlLmNhbGxIb29rKCJwYWdlOmxvYWRpbmc6ZW5kIil9KTt0cnl7W3Qsbl09Z3MoKCk9PmEuaXNSZWFkeSgpKSxhd2FpdCB0LG4oKX1jYXRjaCh3KXtbdCxuXT1ncygoKT0+ZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28odykpKSxhd2FpdCB0LG4oKX1jb25zdCBtPXUhPT1hLmN1cnJlbnRSb3V0ZS52YWx1ZS5mdWxsUGF0aD9hLnJlc29sdmUodSk6YS5jdXJyZW50Um91dGUudmFsdWUseT1lLmlzSHlkcmF0aW5nJiZlLnBheWxvYWQucHJlcmVuZGVyZWRBdCYmZS5wYXlsb2FkLnBhdGgmJnUhPT1lLnBheWxvYWQucGF0aCYmUHkoYS5jdXJyZW50Um91dGUudmFsdWUucGF0aCxlLnBheWxvYWQucGF0aCk7ZigpO2NvbnN0IF89ZS5wYXlsb2FkLnN0YXRlLl9sYXlvdXQ7cmV0dXJuIGEuYmVmb3JlRWFjaChhc3luYyh3LHYpPT57YXdhaXQgZS5jYWxsSG9vaygicGFnZTpsb2FkaW5nOnN0YXJ0Iiksdy5tZXRhPWJ0KHcubWV0YSksZS5pc0h5ZHJhdGluZyYmXyYmIWRyKHcubWV0YS5sYXlvdXQpJiYody5tZXRhLmxheW91dD1fKSxlLl9wcm9jZXNzaW5nTWlkZGxld2FyZT0hMDt7Y29uc3QgaD1uZXcgU2V0KFsuLi5TQywuLi5lLl9taWRkbGV3YXJlLmdsb2JhbF0pO2Zvcihjb25zdCB4IG9mIHcubWF0Y2hlZCl7Y29uc3QgUz14Lm1ldGEubWlkZGxld2FyZTtpZihTKWZvcihjb25zdCBrIG9mIGJ2KFMpKWguYWRkKGspfWNvbnN0IGI9cnYoe3BhdGg6dy5wYXRofSk7aWYoYi5hcHBNaWRkbGV3YXJlKWZvcihjb25zdCB4IGluIGIuYXBwTWlkZGxld2FyZSliLmFwcE1pZGRsZXdhcmVbeF0/aC5hZGQoeCk6aC5kZWxldGUoeCk7Zm9yKGNvbnN0IHggb2YgaCl7Y29uc3QgUz10eXBlb2YgeD09InN0cmluZyI/ZS5fbWlkZGxld2FyZS5uYW1lZFt4XXx8YXdhaXQgQXVbeF0/LigpLnRoZW4oaz0+ay5kZWZhdWx0fHxrKTp4O2lmKCFTKXRocm93IG5ldyBFcnJvcihgVW5rbm93biByb3V0ZSBtaWRkbGV3YXJlOiAnJHt4fScuYCk7dHJ5e2NvbnN0IGs9YXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Uyh3LHYpKTtpZighZS5wYXlsb2FkLnNlcnZlclJlbmRlcmVkJiZlLmlzSHlkcmF0aW5nJiYoaz09PSExfHxrIGluc3RhbmNlb2YgRXJyb3IpKXtjb25zdCBUPWt8fHNvKHtzdGF0dXM6NDA0LHN0YXR1c1RleHQ6YFBhZ2UgTm90IEZvdW5kOiAke3V9YH0pO3JldHVybiBhd2FpdCBlLnJ1bldpdGhDb250ZXh0KCgpPT5DbyhUKSksITF9aWYoaz09PSEwKWNvbnRpbnVlO2lmKGs9PT0hMSlyZXR1cm4gaztpZihrKXJldHVybiBIeShrKSYmay5mYXRhbCYmYXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28oaykpLGt9Y2F0Y2goayl7Y29uc3QgVD1zbyhrKTtyZXR1cm4gVC5mYXRhbCYmYXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28oVCkpLFR9fX19KSxhLm9uRXJyb3IoYXN5bmMoKT0+e2RlbGV0ZSBlLl9wcm9jZXNzaW5nTWlkZGxld2FyZSxhd2FpdCBlLmNhbGxIb29rKCJwYWdlOmxvYWRpbmc6ZW5kIil9KSxhLmFmdGVyRWFjaCh3PT57aWYody5tYXRjaGVkLmxlbmd0aD09PTAmJiFwLnZhbHVlKXJldHVybiBlLnJ1bldpdGhDb250ZXh0KCgpPT5Dbyhzbyh7c3RhdHVzOjQwNCxmYXRhbDohMSxzdGF0dXNUZXh0OmBQYWdlIG5vdCBmb3VuZDogJHt3LmZ1bGxQYXRofWAsZGF0YTp7cGF0aDp3LmZ1bGxQYXRofX0pKSl9KSxlLmhvb2tzLmhvb2tPbmNlKCJhcHA6Y3JlYXRlZCIsYXN5bmMoKT0+e3RyeXtpZigibmFtZSJpbiBtJiYobS5uYW1lPXZvaWQgMCkseSl7Y29uc3Qgdz1hLnJlc29sdmUoZS5wYXlsb2FkLnBhdGgpOyJuYW1lImluIHcmJih3Lm5hbWU9dm9pZCAwKSxhd2FpdCBhLnJlcGxhY2Uoey4uLncsZm9yY2U6ITB9KSxlLmhvb2tzLmhvb2tPbmNlKCJhcHA6c3VzcGVuc2U6cmVzb2x2ZSIsYXN5bmMoKT0+e2F3YWl0IGEucmVwbGFjZSh7Li4ubSxmb3JjZTohMH0pfSl9ZWxzZSBhd2FpdCBhLnJlcGxhY2Uoey4uLm0sZm9yY2U6ITB9KTthLm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3I9R3Iuc2Nyb2xsQmVoYXZpb3J9Y2F0Y2godyl7YXdhaXQgZS5ydW5XaXRoQ29udGV4dCgoKT0+Q28odykpfX0pLHtwcm92aWRlOntyb3V0ZXI6YX19fX0pLFRDPWx0KHtuYW1lOiJudXh0OnBheWxvYWQiLHNldHVwKGUpe2NvbnN0IHQ9bmV3IFNldDtKdCgpLmJlZm9yZVJlc29sdmUoYXN5bmMobixyKT0+e2lmKG4ucGF0aD09PXIucGF0aClyZXR1cm47Y29uc3Qgbz1hd2FpdCBGcChuLnBhdGgpO2lmKG8pe2Zvcihjb25zdCBzIG9mIHQpZGVsZXRlIGUuc3RhdGljLmRhdGFbc107Zm9yKGNvbnN0IHMgaW4gby5kYXRhKXMgaW4gZS5zdGF0aWMuZGF0YXx8dC5hZGQocyksZS5zdGF0aWMuZGF0YVtzXT1vLmRhdGFbc119fSkscWkoKCk9PntlLmhvb2tzLmhvb2soImxpbms6cHJlZmV0Y2giLGFzeW5jIG49Pntjb25zdHtob3N0bmFtZTpyfT1uZXcgVVJMKG4sd2luZG93LmxvY2F0aW9uLmhyZWYpO3I9PT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUmJmF3YWl0IEZwKCkuY2F0Y2goKCk9Pnt9KX0pLG5hdmlnYXRvci5jb25uZWN0aW9uPy5lZmZlY3RpdmVUeXBlIT09InNsb3ctMmciJiZzZXRUaW1lb3V0KG52LDFlMyl9KX19KSxDQz1sdCgoKT0+e2NvbnN0IGU9SnQoKTtxaSgoKT0+e2UuYmVmb3JlUmVzb2x2ZShhc3luYygpPT57YXdhaXQgbmV3IFByb21pc2UodD0+e3NldFRpbWVvdXQodCwxMDApLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3NldFRpbWVvdXQodCwwKX0pfSl9KX0pfSksQUM9bHQoZT0+e2xldCB0O2FzeW5jIGZ1bmN0aW9uIG4oKXtsZXQgcjt0cnl7cj1hd2FpdCBudigpfWNhdGNoKG8pe2NvbnN0IHM9bztpZighKCJzdGF0dXMiaW4gcyYmKHMuc3RhdHVzPT09NDA0fHxzLnN0YXR1cz09PTQwMykpKXRocm93IHN9dCYmY2xlYXJUaW1lb3V0KHQpLHQ9c2V0VGltZW91dChuLElwKTt0cnl7Y29uc3Qgbz1hd2FpdCAkZmV0Y2goSWYoImJ1aWxkcy9sYXRlc3QuanNvbiIpK2A/JHtEYXRlLm5vdygpfWApO28uaWQhPT1yPy5pZCYmKGUuaG9va3MuY2FsbEhvb2soImFwcDptYW5pZmVzdDp1cGRhdGUiLG8pLHQmJmNsZWFyVGltZW91dCh0KSl9Y2F0Y2h7fX1xaSgoKT0+e3Q9c2V0VGltZW91dChuLElwKX0pfSksT0M9bHQoe25hbWU6Im51eHQ6Y2h1bmstcmVsb2FkIixzZXR1cChlKXtjb25zdCB0PUp0KCksbj1mbygpLHI9bmV3IFNldDt0LmJlZm9yZUVhY2goKCk9PntyLmNsZWFyKCl9KSxlLmhvb2soImFwcDpjaHVua0Vycm9yIiwoe2Vycm9yOnN9KT0+e3IuYWRkKHMpfSk7ZnVuY3Rpb24gbyhzKXtjb25zdCBpPUJpKG4uYXBwLmJhc2VVUkwscy5mdWxsUGF0aCk7b0Moe3BhdGg6aSxwZXJzaXN0U3RhdGU6ITB9KX1lLmhvb2soImFwcDptYW5pZmVzdDp1cGRhdGUiLCgpPT57dC5iZWZvcmVSZXNvbHZlKG8pfSksdC5vbkVycm9yKChzLGkpPT57ci5oYXMocykmJm8oaSl9KX19KSxQQz1sdCh7bmFtZToicGluaWEiLHNldHVwKGUpe2NvbnN0IHQ9UTEoKTtyZXR1cm4gZS52dWVBcHAudXNlKHQpLGtzKHQpLGUucGF5bG9hZCYmZS5wYXlsb2FkLnBpbmlhJiYodC5zdGF0ZS52YWx1ZT1lLnBheWxvYWQucGluaWEpLHtwcm92aWRlOntwaW5pYTp0fX19LGhvb2tzOnsiYXBwOnJlbmRlcmVkIigpe2NvbnN0IGU9QmUoKTtlLnBheWxvYWQucGluaWE9amUoZS4kcGluaWEpLnN0YXRlLnZhbHVlLGtzKHZvaWQgMCl9fX0pLElDPSJfX05VWFRfQ09MT1JfTU9ERV9fIixQYz0ibnV4dC1jb2xvci1tb2RlIixSQz0ibG9jYWxTdG9yYWdlIixTcj13aW5kb3dbSUNdfHx7fSxOQz1sdChlPT57Y29uc3QgdD1pbygiY29sb3ItbW9kZSIsKCk9PmJ0KHtwcmVmZXJlbmNlOlNyLnByZWZlcmVuY2UsdmFsdWU6U3IudmFsdWUsdW5rbm93bjohMSxmb3JjZWQ6ITF9KSkudmFsdWU7SnQoKS5hZnRlckVhY2gocz0+e2NvbnN0IGk9cy5tZXRhLmNvbG9yTW9kZTtpJiZpIT09InN5c3RlbSI/KHQudmFsdWU9aSx0LmZvcmNlZD0hMCk6KHQuZm9yY2VkPSExLHQudmFsdWU9dC5wcmVmZXJlbmNlPT09InN5c3RlbSI/U3IuZ2V0Q29sb3JTY2hlbWUoKTp0LnByZWZlcmVuY2UpfSk7bGV0IG47ZnVuY3Rpb24gcigpe258fCF3aW5kb3cubWF0Y2hNZWRpYXx8KG49d2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKSxuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKCk9PnshdC5mb3JjZWQmJnQucHJlZmVyZW5jZT09PSJzeXN0ZW0iJiYodC52YWx1ZT1Tci5nZXRDb2xvclNjaGVtZSgpKX0pKX1mdW5jdGlvbiBvKHMsaSl7c3dpdGNoKHMpe2Nhc2UiY29va2llIjp3aW5kb3cuZG9jdW1lbnQuY29va2llPVBjKyI9IitpO2JyZWFrO2Nhc2Uic2Vzc2lvblN0b3JhZ2UiOndpbmRvdy5zZXNzaW9uU3RvcmFnZT8uc2V0SXRlbShQYyxpKTticmVhaztkZWZhdWx0OndpbmRvdy5sb2NhbFN0b3JhZ2U/LnNldEl0ZW0oUGMsaSl9fVBlKCgpPT50LnByZWZlcmVuY2Uscz0+e3QuZm9yY2VkfHwocz09PSJzeXN0ZW0iPyh0LnZhbHVlPVNyLmdldENvbG9yU2NoZW1lKCkscigpKTp0LnZhbHVlPXMsbyhSQyxzKSl9LHtpbW1lZGlhdGU6ITB9KSxQZSgoKT0+dC52YWx1ZSwocyxpKT0+e2xldCBhO2E9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksYS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiKnstd2Via2l0LXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7LW1vei10cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50Oy1vLXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7LW1zLXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0iKSksd2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYSksU3IucmVtb3ZlQ29sb3JTY2hlbWUoaSksU3IuYWRkQ29sb3JTY2hlbWUocyksd2luZG93LmdldENvbXB1dGVkU3R5bGUoYSkub3BhY2l0eSxkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGEpfSksdC5wcmVmZXJlbmNlPT09InN5c3RlbSImJnIoKSxlLmhvb2soImFwcDptb3VudGVkIiwoKT0+e3QudW5rbm93biYmKHQucHJlZmVyZW5jZT1Tci5wcmVmZXJlbmNlLHQudmFsdWU9U3IudmFsdWUsdC51bmtub3duPSExKX0pLGUucHJvdmlkZSgiY29sb3JNb2RlIix0KX0pLERDPXZpKCgpPT5YZSgoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+RVApLHZvaWQgMCxpbXBvcnQubWV0YS51cmwpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlLmRlZmF1bHR8fGUpKSxMQz1bWyJJY29uIixEQ11dLCRDPWx0KHtuYW1lOiJudXh0Omdsb2JhbC1jb21wb25lbnRzIixzZXR1cChlKXtmb3IoY29uc3RbdCxuXW9mIExDKWUudnVlQXBwLmNvbXBvbmVudCh0LG4pLGUudnVlQXBwLmNvbXBvbmVudCgiTGF6eSIrdCxuKX19KSxvbz17ZGVmYXVsdDp2aSgoKT0+WGUoKCk9PmltcG9ydCgiLi9DRkJ0Y0I3by5qcyIpLF9fdml0ZV9fbWFwRGVwcyhbNjEsNSwyMSwyMiwyMywyNCwxOSwyMCwxMCw3LDM0LDM1LDI5LDQ2LDMzLDM3XSksaW1wb3J0Lm1ldGEudXJsKS50aGVuKGU9PmUuZGVmYXVsdHx8ZSkpLGF1dGg6dmkoKCk9PlhlKCgpPT5pbXBvcnQoIi4vRGwtRHptN3ouanMiKSxbXSxpbXBvcnQubWV0YS51cmwpLnRoZW4oZT0+ZS5kZWZhdWx0fHxlKSl9LE1DPWx0KHtuYW1lOiJudXh0OnByZWZldGNoIixzZXR1cChlKXtjb25zdCB0PUp0KCk7ZS5ob29rcy5ob29rKCJhcHA6bW91bnRlZCIsKCk9Pnt0LmJlZm9yZUVhY2goYXN5bmMgbj0+e2NvbnN0IHI9bj8ubWV0YT8ubGF5b3V0O3ImJnR5cGVvZiBvb1tyXT09ImZ1bmN0aW9uIiYmYXdhaXQgb29bcl0oKX0pfSksZS5ob29rcy5ob29rKCJsaW5rOnByZWZldGNoIixuPT57aWYoTm4obikpcmV0dXJuO2NvbnN0IHI9dC5yZXNvbHZlKG4pO2lmKCFyKXJldHVybjtjb25zdCBvPXIubWV0YS5sYXlvdXQ7bGV0IHM9YnYoci5tZXRhLm1pZGRsZXdhcmUpO3M9cy5maWx0ZXIoaT0+dHlwZW9mIGk9PSJzdHJpbmciKTtmb3IoY29uc3QgaSBvZiBzKXR5cGVvZiBBdVtpXT09ImZ1bmN0aW9uIiYmQXVbaV0oKTt0eXBlb2Ygbz09InN0cmluZyImJm8gaW4gb28mJnJDKG9vW29dKX0pfX0pLEJDPWx0KCgpPT4oe3Byb3ZpZGU6e2NzcmZGZXRjaDpOeS5jcmVhdGUoe29uUmVxdWVzdCh7b3B0aW9uczp0fSl7Y29uc3R7Y3NyZjpuLGhlYWRlck5hbWU6cn09RHYoKTt0LmhlYWRlcnM9bmV3IEhlYWRlcnModC5oZWFkZXJzfHx7fSksdC5oZWFkZXJzLmFwcGVuZChyLG4pfX0pfX0pKSxxQz1uZXcgUmVnRXhwKC9Hb29nbGVib3RcL3xHb29nbGVib3QtTW9iaWxlfEdvb2dsZWJvdC1JbWFnZXxHb29nbGVib3QtTmV3c3xHb29nbGVib3QtVmlkZW98QWRzQm90LUdvb2dsZShbXi1dfCQpfEFkc0JvdC1Hb29nbGUtTW9iaWxlfEZlZWRmZXRjaGVyLUdvb2dsZXxNZWRpYXBhcnRuZXJzLUdvb2dsZXxNZWRpYXBhcnRuZXJzIFwoR29vZ2xlYm90XCl8QVBJcy1Hb29nbGV8R29vZ2xlLUluc3BlY3Rpb25Ub29sfFN0b3JlYm90LUdvb2dsZXxHb29nbGVPdGhlcnxiaW5nYm90fFNsdXJwfFt3V11nZXR8TGlua2VkSW5Cb3R8UHl0aG9uLXVybGxpYnxweXRob24tcmVxdWVzdHN8YWlvaHR0cHxodHRweHxsaWJ3d3ctcGVybHxodHRwdW5pdHxOdXRjaHxHby1odHRwLWNsaWVudHxwaHBjcmF3bHxtc25ib3R8anl4b2JvdHxGQVNULVdlYkNyYXdsZXJ8RkFTVCBFbnRlcnByaXNlIENyYXdsZXJ8QklHTE9UUk9OfFRlb21hfGNvbnZlcmF8c2Vla2JvdHxHaWdhYm90fEdpZ2FibGFzdHxleGFib3R8aWFfYXJjaGl2ZXJ8R2luZ2VyQ3Jhd2xlcnx3ZWJtb24gfEhUVHJhY2t8Z3J1Ylwub3JnfFVzaW5lTm91dmVsbGVDcmF3bGVyfGFudGlib3R8bmV0cmVzZWFyY2hzZXJ2ZXJ8c3BlZWR5fGZsdWZmeXxmaW5kbGlua3xtc3Jib3R8cGFuc2NpZW50fHlhY3lib3R8QUlTZWFyY2hCb3R8aXBzLWFnZW50fHRhZ29vYm90fE1KMTJib3R8d29yaW9ib3R8eWFuZ2F8YnV6emJvdHxtbGJvdHx5YW5kZXhcLmNvbVwvYm90c3xwdXJlYm90fExpbmd1ZWUgQm90fEN5YmVyUGF0cm9sfHZvaWxhYm90fEJhaWR1c3BpZGVyfGNpdGVzZWVyeGJvdHxzcGJvdHx0d2VuZ2Fib3R8cG9zdHJhbmt8VHVybml0aW58c2NyaWJkYm90fHBhZ2UycnNzfHNpdGVib3R8bGlua2RleHxBZGlkeGJvdHxlem9vbXN8ZG90Ym90fE1haWxcLlJVX0JvdHxkaXNjb2JvdHxoZXJpdHJpeHxmaW5kdGhhdGZpbGV8ZXVyb3BhcmNoaXZlXC5vcmd8TmVyZEJ5TmF0dXJlXC5Cb3R8KHNpc3RyaXh8U0lTVFJJWCkgW2NDXXJhd2xlcnxBaHJlZnMoQm90fFNpdGVBdWRpdCl8ZnVlbGJvdHxDcnVuY2hCb3R8SW5kZWVkQm90fG1hcHB5ZGF0YXx3b29ib3R8Wm9vbWluZm9Cb3R8UHJpdmFjeUF3YXJlQm90fE11bHRpdmlld2JvdHxTV0lNR0JvdHxHcm9iYm90fGVyaWdodHxBcGVyY2l0ZXxzZW1hbnRpY2JvdHxBYm91bmRleHxkb21haW5jcmF3bGVyfHdic2VhcmNoYm90fHN1bW1pZnl8Q0NCb3R8ZWRpc3RlcmJvdHxTZXpuYW1Cb3R8ZWMybGlua2ZpbmRlcnxnc2xmYm90fGFpSGl0Qm90fGludGVsaXVtX2JvdHxmYWNlYm9va2V4dGVybmFsaGl0fFlldGl8UmV0cmV2b1BhZ2VBbmFseXplcnxsYi1zcGlkZXJ8U29nb3V8bHNzYm90fGNhcmVlcmJvdHx3b3Rib3h8d29jYm90fGljaGlyb3xEdWNrRHVja0JvdHxsc3Nyb2NrZXRjcmF3bGVyfGRydXBhY3R8d2ViY29tcGFueWNyYXdsZXJ8YWNvb25ib3R8b3BlbmluZGV4c3BpZGVyfGduYW0gZ25hbSBzcGlkZXJ8d2ViLWFyY2hpdmUtbmV0XC5jb21cLmJvdHxiYWNrbGlua2NyYXdsZXJ8Y29jY29jfGludGVncm9tZWRifGNvbnRlbnQgY3Jhd2xlciBzcGlkZXJ8dG9wbGlzdGJvdHxpdDJtZWRpYS1kb21haW4tY3Jhd2xlcnxpcC13ZWItY3Jhd2xlclwuY29tfHNpdGVleHBsb3JlclwuaW5mb3xlbGlzYWJvdHxwcm94aW1pY3xjaGFuZ2VkZXRlY3Rpb258YXJhYm90fFdlU0VFOlNlYXJjaHxuaWtpLWJvdHxDcnlzdGFsU2VtYW50aWNzQm90fHJvZ2VyYm90fDM2MFNwaWRlcnxwc2JvdHxJbnRlcmZheFNjYW5Cb3R8Q0MgTWV0YWRhdGEgU2NhcGVyfGcwMGcxZVwubmV0fEdyYXBlc2hvdENyYXdsZXJ8dXJsYXBwZW5kYm90fGJyYWlub2JvdHxmci1jcmF3bGVyfGJpbmxhcnxTaW1wbGVDcmF3bGVyfFR3aXR0ZXJib3R8Y1hlbnNlYm90fHNtdGJvdHxibmZcLmZyX2JvdHxBNi1JbmRleGVyfEFEbWFudFh8RmFjZWJvdHxPcmFuZ2VCb3RcL3xtZW1vcnlib3R8QWR2Qm90fE1lZ2FJbmRleHxTZW1hbnRpY1NjaG9sYXJCb3R8bHR4NzF8bmVyZHlib3R8eG92aWJvdHxCVWJpTkd8UXdhbnRpZnl8YXJjaGl2ZVwub3JnX2JvdHxBcHBsZWJvdHxUd2VldG1lbWVCb3R8Y3Jhd2xlcjRqfGZpbmR4Ym90fFNbZUVdW21NXXJ1c2hCb3R8eW9vekJvdHxsaXBwZXJoZXl8WSFKfERvbWFpbiBSZS1BbmltYXRvciBCb3R8QWRkVGhpc3xTY3JlYW1pbmcgRnJvZyBTRU8gU3BpZGVyfE1ldGFVUkl8U2NyYXB5fExpdmVsYXBbYkJdb3R8T3Blbkhvc2VCb3R8Q2Fwc3VsZUNoZWNrZXJ8Y29sbGVjdGlvbkBpbmZlZ3lcLmNvbXxJc3RlbGxhQm90fERldVN1XC98YmV0YUJvdHxDbGlxemJvdFwvfE1vamVla0JvdFwvfG5ldEVzdGF0ZSBORSBDcmF3bGVyfFNhZmVTZWFyY2ggbWljcm9kYXRhIGNyYXdsZXJ8R2x1dGVuIEZyZWUgQ3Jhd2xlclwvfFNvbmljfFN5c29tb3N8VHJvdmV8ZGVhZGxpbmtjaGVja2VyfFNsYWNrLUltZ1Byb3h5fEVtYmVkbHl8UmFua0FjdGl2ZUxpbmtCb3R8aXNrYW5pZXxTYWZlRE5TQm90fFNreXBlVXJpUHJldmlld3xWZW9vemJvdHxTbGFja2JvdHxyZWRkaXRib3R8ZGF0YWduaW9uYm90fEdvb2dsZS1BZHdvcmRzLUluc3RhbnR8YWRiZWF0X2JvdHxXaGF0c0FwcHxjb250eGJvdHxwaW50ZXJlc3RcLmNvbVwvYm90fGVsZWN0cmljbW9ua3xHYXJsaWtDcmF3bGVyfEJpbmdQcmV2aWV3XC98dmViaWRvb2JvdHxGZW10b3NlYXJjaEJvdHxZYWhvbyBMaW5rIFByZXZpZXd8TWV0YUpvYkJvdHxEb21haW5TdGF0c0JvdHxtaW5kVXBCb3R8RGF1bVwvfEp1Z2VuZHNjaHV0enByb2dyYW1tLUNyYXdsZXJ8WGVudSBMaW5rIFNsZXV0aHxQY29yZS1IVFRQfG1vYXRib3R8S29zbWlvQm90fFtwUF1pbmdkb218QXBwSW5zaWdodHN8UGhhbnRvbUpTfEdvd2lraWJvdHxQaXBsQm90fERpc2NvcmRib3R8VGVsZWdyYW1Cb3R8SmV0c2xpZGV8bmV3c2hhcmVjb3VudHN8SmFtZXMgQk9UfEJhcmtbclJdb3dsZXJ8VGluRXllfFNvY2lhbFJhbmtJT0JvdHx0cmVuZGljdGlvbmJvdHxPY2FyaW5hYm90fGVwaWNib3R8UHJpbWFsYm90fER1Y2tEdWNrR28tRmF2aWNvbnMtQm90fEdub3dpdE5ld3Nib3R8TGVpa2lib3R8TGlua0FyY2hpdmVyfFlhS1wvfFBhcGVyTGlCb3R8RGlnZyBEZWVwZXJ8ZGNyYXdsfFNuYWNrdG9yeXxBbmRlcnNQaW5rQm90fEZ5cmVib3R8RXZlcnlvbmVTb2NpYWxCb3R8TWVkaWF0b29sa2l0Ym90fEx1bWluYXRvci1yb2JvdHN8RXh0TGlua3NCb3R8U3VydmV5Qm90fE5JTkdcL3xva2h0dHB8TnV6emVsfG9tZ2lsaXxQb2NrZXRQYXJzZXJ8WWlzb3VTcGlkZXJ8dW0tTE58VG91dGlhb1NwaWRlcnxNdWNrUmFja3xKYW1pZSdzIFNwaWRlcnxBSENcL3xOZXRjcmFmdFN1cnZleUFnZW50fExhc2VybGlrZWJvdHxeQXBhY2hlLUh0dHBDbGllbnR8QXBwRW5naW5lLUdvb2dsZXxKZXR0eXxVcGZsb3d8VGhpbmtsYWJ8VHJhYWNrclwuY29tfFR3dXJseXxNYXN0b2RvbnxodHRwX2dldHxEbnl6Qm90fGJvdGlmeXwwMDdhYzkgQ3Jhd2xlcnxCZWhsb29sQm90fEJyYW5kVmVyaXR5fGNoZWNrX2h0dHB8QkRDYm90fFp1bUJvdHxFWklEfElDQy1DcmF3bGVyfEFyY2hpdmVCb3R8XkxDQyB8ZmlsdGVyZGJcLmlzc1wubmV0XC9jcmF3bGVyfEJMUF9iYm90fEJvbWJvcmFCb3R8QnVja1wvfENvbXBhbnlib29rLUNyYXdsZXJ8R2VuaWVvfG1hZ3BpZS1jcmF3bGVyfE1lbHR3YXRlck5ld3N8TW9yZW92ZXJ8bmV3c3BhcGVyXC98U2NvdXRKZXR8KF58IClzZW50cnlcL3xTdG9yeWdpemVCb3R8VXB0aW1lUm9ib3R8T3V0Y2xpY2tzQm90fHNlb3NjYW5uZXJzfEhhdGVuYXxHb29nbGUgV2ViIFByZXZpZXd8TWF1aUJvdHxBbHBoYUJvdHxTQkwtQk9UfElBUyBjcmF3bGVyfGFkc2Nhbm5lcnxOZXR2aWJlc3xhY2FwYm90fEJhaWR1LVl1bkd1YW5DZXxiaXRseWJvdHxibG9nbXVyYUJvdHxCb3RcLkFyYVR1cmthXC5jb218Ym90LXBnZVwuY2hsb29lXC5jb218Qm94Y2FyQm90fEJUV2ViQ2xpZW50fENvbnRleHRBZCBCb3R8RGlnaW5jb3JlIGJvdHxEaXNxdXN8RmVlZGx5fEZldGNoXC98RmV2ZXJ8RmxhbWluZ29fU2VhcmNoRW5naW5lfEZsaXBib2FyZFByb3h5fGcycmVhZGVyLWJvdHxHMiBXZWIgU2VydmljZXN8aW1yYm90fEs3TUxXQ0JvdHxLZW12aWJvdHxMYW5kYXUtTWVkaWEtU3BpZGVyfGxpbmthcGVkaWFib3R8dmtTaGFyZXxTaXRlaW1wcm92ZVwuY29tfEJMRVhCb3RcL3xEYXJlQm9vc3R8WnVwZXJsaXN0Qm90XC98TWluaWZsdXhcL3xGZWVkc3BvdHxEaWZmYm90XC98U0VPa2lja3N8dHJhY2VteWZpbGV8TmltYm9zdHJhdHVzLUJvdHx6Z3JhYnxQUi1DWVwuUlV8QWRzVHh0Q3Jhd2xlcnxEYXRhZmVlZHdhdGNofFphYmJpeHxUYW5naWJsZWVCb3R8Z29vZ2xlLXhyYXdsZXJ8YXhpb3N8QW1hem9uIENsb3VkRnJvbnR8UHVsc2Vwb2ludHxDbG91ZEZsYXJlLUFsd2F5c09ubGluZXxDbG91ZGZsYXJlLUhlYWx0aGNoZWNrc3xDbG91ZGZsYXJlLVRyYWZmaWMtTWFuYWdlcnxDbG91ZEZsYXJlLVByZWZldGNofENsb3VkZmxhcmUtU1NMRGV0ZWN0b3J8aHR0cHM6XC9cL2RldmVsb3BlcnNcLmNsb3VkZmxhcmVcLmNvbVwvc2VjdXJpdHktY2VudGVyXC98R29vZ2xlLVN0cnVjdHVyZWQtRGF0YS1UZXN0aW5nLVRvb2x8V29yZHVwSW5mb1NlYXJjaHxXZWJEYXRhU3RhdHN8SHR0cFVybENvbm5lY3Rpb258Wm9vbUJvdHxWZWxlblB1YmxpY1dlYkNyYXdsZXJ8TW9vZGxlQm90fGpwZy1uZXdzYm90fG91dGJyYWlufFczQ19WYWxpZGF0b3J8VmFsaWRhdG9yXC5udXxXM0MtY2hlY2tsaW5rfFczQy1tb2JpbGVPS3xXM0NfSTE4bi1DaGVja2VyfEZlZWRWYWxpZGF0b3J8VzNDX0NTU19WYWxpZGF0b3J8VzNDX1VuaWNvcm58R29vZ2xlLVBoeXNpY2FsV2VifEJsYWNrYm9hcmR8SUNCb3RcL3xCYXpRdXh8VHdpbmdseXxSaXZ2YXxFeHBlcmlib3R8YXdlc29tZWNyYXdsZXJ8RGF0YXByb3ZpZGVyXC5jb218R3JvdXBIaWdoXC98dGhlb2xkcmVhZGVyXC5jb218QW55RXZlbnR8VXB0aW1lYm90XC5vcmd8Tm1hcCBTY3JpcHRpbmcgRW5naW5lfDJpcFwucnV8Q2xpY2thZ3l8Q2FsaXBlcmJvdHxNQkNyYXdsZXJ8b25saW5lLXdlYmNlby1ib3R8QjJCIEJvdHxBZGRTZWFyY2hCb3R8R29vZ2xlIEZhdmljb258SHViU3BvdHxDaHJvbWUtTGlnaHRob3VzZXxIZWFkbGVzc0Nocm9tZXxDaGVja01hcmtOZXR3b3JrXC98d3d3XC51cHRpbWVcLmNvbXxTdHJlYW1saW5lM0JvdFwvfHNlcnBzdGF0Ym90XC98TWl4bm9kZUNhY2hlXC98XmN1cmx8U2ltcGxlU2NyYXBlcnxSU1NpbmdCb3R8Sm9vYmxlYm90fGZlZG9yYXBsYW5ldHxGcmllbmRpY2F8TmV4dENsb3VkfFRpbnkgVGlueSBSU1N8UmVnaW9uU3R1dHRnYXJ0Qm90fEJ5dGVzcGlkZXJ8RGF0YW55emV8R29vZ2xlLVNpdGUtVmVyaWZpY2F0aW9ufFRyZW5kc21hcFJlc29sdmVyfHR3ZWV0ZWR0aW1lc3xOVEVOVGJvdHxHd2VuZXxTaW1wbGVQaWV8U2VhcmNoQXRsYXN8U3VwZXJmZWVkcnxmZWVkYm90fFVULURvcmtib3R8QW1hem9uYm90fFNlcmVuZGVwdXR5Qm90fEV5ZW90YWJvdHxvZmZpY2VzdG9yZWJvdHxOZXRpY2xlIENyYXdsZXJ8U3VyZG90bHlCb3R8TGlua2lzQm90fEF3YXJpb1NtYXJ0Qm90fEF3YXJpb1Jzc0JvdHxSeXRlQm90fEZyZWVXZWJNb25pdG9yaW5nIFNpdGVDaGVja2VyfEFzcGllZ2VsQm90fE5BVkVSIEJsb2cgUnNzYm90fHplbmJhY2sgYm90fFNlbnRpQm90fERvbWFpbnMgUHJvamVjdFwvfFBhbmRhbHl0aWNzfFZLUm9ib3R8Ymlkc3dpdGNoYm90fHRpZ2VyYm90fE5JWFN0YXRzYm90fEF0b20gRmVlZCBSb2JvdHxbQ2NddXJlYm90fFBhZ2VQZWVrZXJcL3xWaWdpbFwvfHJzc2JvdFwvfHN0YXJ0bWVib3RcL3xKb2Jib2Vyc2VCb3R8c2Vld2l0aGtpZHN8TklOSkEgYm90fEN1dGJvdHxCdWJsdXBCb3R8QnJhbmRPTmJvdHxSaWRkZXJCb3R8VGFib29sYWJvdHxEdWJib3Rib3R8RmluZElUQW5zd2Vyc2JvdHxpbmZvb2JvdHxSZWZpbmRib3R8QmxvZ1RyYWZmaWNcL1xkXC5cZCsgRmVlZC1GZXRjaGVyfFNlb2JpbGl0eUJvdHxDaW5jcmF3fERyYWdvbmJvdHxWb2x1dW1EU1AtY29udGVudC1ib3R8RnJlc2hSU1N8Qml0Qm90fF5QSFAtQ3VybC1DbGFzc3xHb29nbGUtQ2VydGlmaWNhdGVzLUJyaWRnZXxjZW50dXJ5Ym90fFZpYmVyfGVcLnZlbnR1cmVzIEludmVzdG1lbnQgQ3Jhd2xlcnxldmMtYmF0Y2h8UGV0YWxCb3R8dmlydXN0b3RhbHwoXnwgKVBUU1RcL3xtaW5pY3Jhd2xlcnxDb29raWVib3R8dHJvdml0Qm90fHNlb3N0YXJcLmNvfElvbkNyYXdsfFVwdGltZS1LdW1hfFNlZWtwb3J0fEZyZXNocGluZ0JvdHxGZWVkYmlufENyaXRlb0JvdHxTbmFwIFVSTCBQcmV2aWV3IFNlcnZpY2V8QmV0dGVyIFVwdGltZSBCb3R8UnV4aXRTeW50aGV0aWN8R29vZ2xlLVJlYWQtQWxvdWR8VmFsdmVcL1N0ZWFtfE9ka2xCb3RcL3xHUFRCb3R8Q2hhdEdQVC1Vc2VyfE9BSS1TZWFyY2hCb3R8WWFuZGV4UmVuZGVyUmVzb3VyY2VzQm90XC98TGlnaHRzcGVlZFN5c3RlbXNDcmF3bGVyfGV2LWNyYXdsZXJcL3xCaXRTaWdodEJvdFwvfHdvb3JhbmtyZXZpZXdcL3xHb29nbGUtU2FmZXR5fEF3YXJpb0JvdHxEYXRhRm9yU2VvQm90fExpbmVzcGlkZXJ8V2VsbEtub3duQm90fEEgUGF0ZW50IENyYXdsZXJ8U3RyYWN0Qm90fHNlYXJjaFwubWFyZ2luYWxpYVwubnV8WW91Qm90fE5pY2VjcmF3bGVyfE5lZXZhYm90fEJyaWdodEVkZ2UgQ3Jhd2xlcnxTaXRlQ2hlY2tlckJvdENyYXdsZXJ8VG9tYmFQdWJsaWNXZWJDcmF3bGVyfENyYXdseVByb2plY3RDcmF3bGVyfEtvbW9kaWFCb3R8S1N0YW5kQm90fENJU1BBIFdlYmNyYXdsZXJ8TVRSb2JvdHxoeXNjb3JlXC5pb3xBbGV4YW5kcmlhT3JnQm90fDJpcCBib3R8WWVsbG93YnJhbmRwcm90ZWN0aW9uYm90fFNFT2xpemVyfHZ1aHV2Qm90fElORVRERVgtQk9UfFN5bmFwc2V8dDN2ZXJzaW9uc0JvdHxkZWVwbm9jfENvY29seXplYm90fGh5cGVzdGF0fFJldmVyc2VFbmdpbmVlcmluZ0JvdHxzZW1waVwudGVjaHxJZnJhbWVseXxNZXRhSW5zcGVjdG9yfG5vZGUtZmV0Y2h8bDlleHBsb3JlfHB5dGhvbi1vcGVuZ3JhcGh8T3BlbkdyYXBoQ2hlY2t8ZGV2ZWxvcGVyc1wuZ29vZ2xlXC5jb21cL1wrXC93ZWJcL3NuaXBwZXR8U2VudXRvQm90fE1hQ29DdXxOZXdzQmx1cnxpbm9yZWFkZXJ8TmV0U3lzdGVtc1Jlc2VhcmNofFBhZ2VUaGluZ3xXb3JkUHJlc3NcL3xQaHhCb3R8SW1hZ2VzaWZ0Qm90fEV4cGFuc2V8SW50ZXJuZXRNZWFzdXJlbWVudHxeQldcL3xHZWVkb0JvdHxBdWRpc3RvIENyYXdsZXJ8UGVycGxleGl0eUJvdFwvfFtjQ11sYXVkZVtiQl1vdHxNb25zaWRvYm90fEdyb3VwTWVCb3R8VmVyY2VsYm90fHZlcmNlbC1zY3JlZW5zaG90fGZhY2Vib29rY2F0YWxvZ1wvfG1ldGEtZXh0ZXJuYWxhZHNcL3xtZXRhLWV4dGVybmFsYWdlbnRcL3xtZXRhLWV4dGVybmFsZmV0Y2hlclwvfEFjYWRlbWljQm90UlRVfEtleWJhc2VCb3R8TGVtbXl8Q29va2llSHViU2NhbnxIeWRyb3plblwuaW98SFRUUCBCYW5uZXIgRGV0ZWN0aW9ufFN1bW1hbHlCb3R8TWljcm9zb2Z0UHJldmlld1wvfEdlZWRvUHJvZHVjdFNlYXJjaHxUaWtUb2tTcGlkZXJ8T25DcmF3bFwvfHNpbmRyZXNvcmh1c1wvZ290fENlbnN5c0luc3BlY3RcL3xTQkludHVpdGlvbnNCb3RcL3xzaXRlYnVsYnxZZXh0Qm90XC98RGF0YWRvZ1N5bnRoZXRpY3N8R29vZ2xlLUFkcy1Db252ZXJzaW9ucy8pLEZDPS8oYW5kcm9pZHxiYlxkK3xtZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfEZCQU58RkJBVnxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfEluc3RhZ3JhbXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzKDR8NikwfHN5bWJpYW58dHJlb3x1cFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8d2FwfHdpbmRvd3MgY2V8eGRhfHhpaW5vL2ksekM9LzEyMDd8NjMxMHw2NTkwfDNnc298NHRocHw1MFsxLTZdaXw3NzBzfDgwMnN8YSB3YXxhYmFjfGFjKGVyfG9vfHNcLSl8YWkoa298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXxcLW18ciB8cyApfGF2YW58YmUoY2t8bGx8bnEpfGJpKGxifHJkKXxibChhY3xheil8YnIoZXx2KXd8YnVtYnxid1wtKG58dSl8YzU1XC98Y2FwaXxjY3dhfGNkbVwtfGNlbGx8Y2h0bXxjbGRjfGNtZFwtfGNvKG1wfG5kKXxjcmF3fGRhKGl0fGxsfG5nKXxkYnRlfGRjXC1zfGRldml8ZGljYXxkbW9ifGRvKGN8cClvfGRzKDEyfFwtZCl8ZWwoNDl8YWkpfGVtKGwyfHVsKXxlcihpY3xrMCl8ZXNsOHxleihbNC03XTB8b3N8d2F8emUpfGZldGN8Zmx5KFwtfF8pfGcxIHV8ZzU2MHxnZW5lfGdmXC01fGdcLW1vfGdvKFwud3xvZCl8Z3IoYWR8dW4pfGhhaWV8aGNpdHxoZFwtKG18cHx0KXxoZWlcLXxoaShwdHx0YSl8aHAoIGl8aXApfGhzXC1jfGh0KGMoXC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpXC0oMjB8Z298bWEpfGkyMzB8aWFjKCB8XC18XC8pfGlicm98aWRlYXxpZzAxfGlrb218aW0xa3xpbm5vfGlwYXF8aXJpc3xqYSh0fHYpYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KCB8XC8pfGtsb258a3B0IHxrd2NcLXxreW8oY3xrKXxsZShub3x4aSl8bGcoIGd8XC8oa3xsfHUpfDUwfDU0fFwtW2Etd10pfGxpYnd8bHlueHxtMVwtd3xtM2dhfG01MFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bVwtY3J8bWUocmN8cmkpfG1pKG84fG9hfHRzKXxtbWVmfG1vKDAxfDAyfGJpfGRlfGRvfHQoXC18IHxvfHYpfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMCgwfDIpfG41MCgwfDJ8NSl8bjcoMCgwfDEpfDEwKXxuZSgoY3xtKVwtfG9ufHRmfHdmfHdnfHd0KXxub2soNnxpKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihhfGR8dCl8cGR4Z3xwZygxM3xcLShbMS04XXxjKSl8cGhpbHxwaXJlfHBsKGF5fHVjKXxwblwtMnxwbyhja3xydHxzZSl8cHJveHxwc2lvfHB0XC1nfHFhXC1hfHFjKDA3fDEyfDIxfDMyfDYwfFwtWzItN118aVwtKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVwvfHNhKGdlfG1hfG1tfG1zfG55fHZhKXxzYygwMXxoXC18b298cFwtKXxzZGtcL3xzZShjKFwtfDB8MSl8NDd8bWN8bmR8cmkpfHNnaFwtfHNoYXJ8c2llKFwtfG0pfHNrXC0wfHNsKDQ1fGlkKXxzbShhbHxhcnxiM3xpdHx0NSl8c28oZnR8bnkpfHNwKDAxfGhcLXx2XC18diApfHN5KDAxfG1iKXx0MigxOHw1MCl8dDYoMDB8MTB8MTgpfHRhKGd0fGxrKXx0Y2xcLXx0ZGdcLXx0ZWwoaXxtKXx0aW1cLXx0XC1tb3x0byhwbHxzaCl8dHMoNzB8bVwtfG0zfG01KXx0eFwtOXx1cChcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXxcLXYpfHZtNDB8dm9kYXx2dWxjfHZ4KDUyfDUzfDYwfDYxfDcwfDgwfDgxfDgzfDg1fDk4KXx3M2MoXC18ICl8d2ViY3x3aGl0fHdpKGcgfG5jfG53KXx3bWxifHdvbnV8eDcwMHx5YXNcLXx5b3VyfHpldG98enRlXC0vaSxqQz0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxGQkFOfEZCQVZ8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxJbnN0YWdyYW18aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWlub3xhbmRyb2lkfGlwYWR8cGxheWJvb2t8c2lsay9pLFZDPS8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzXC0pfGFpKGtvfHJuKXxhbChhdnxjYXxjbyl8YW1vaXxhbihleHxueXx5dyl8YXB0dXxhcihjaHxnbyl8YXModGV8dXMpfGF0dHd8YXUoZGl8XC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcLShufHUpfGM1NVwvfGNhcGl8Y2N3YXxjZG1cLXxjZWxsfGNodG18Y2xkY3xjbWRcLXxjbyhtcHxuZCl8Y3Jhd3xkYShpdHxsbHxuZyl8ZGJ0ZXxkY1wtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcLXxfKXxnMSB1fGc1NjB8Z2VuZXxnZlwtNXxnXC1tb3xnbyhcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGRcLShtfHB8dCl8aGVpXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1wtY3xodChjKFwtfCB8X3xhfGd8cHxzfHQpfHRwKXxodShhd3x0Yyl8aVwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFwtfFwvKXxpYnJvfGlkZWF8aWcwMXxpa29tfGltMWt8aW5ub3xpcGFxfGlyaXN8amEodHx2KWF8amJyb3xqZW11fGppZ3N8a2RkaXxrZWppfGtndCggfFwvKXxrbG9ufGtwdCB8a3djXC18a3lvKGN8ayl8bGUobm98eGkpfGxnKCBnfFwvKGt8bHx1KXw1MHw1NHxcLVthLXddKXxsaWJ3fGx5bnh8bTFcLXd8bTNnYXxtNTBcL3xtYSh0ZXx1aXx4byl8bWMoMDF8MjF8Y2EpfG1cLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFwtfCB8b3x2KXx6eil8bXQoNTB8cDF8diApfG13YnB8bXl3YXxuMTBbMC0yXXxuMjBbMi0zXXxuMzAoMHwyKXxuNTAoMHwyfDUpfG43KDAoMHwxKXwxMCl8bmUoKGN8bSlcLXxvbnx0Znx3Znx3Z3x3dCl8bm9rKDZ8aSl8bnpwaHxvMmltfG9wKHRpfHd2KXxvcmFufG93ZzF8cDgwMHxwYW4oYXxkfHQpfHBkeGd8cGcoMTN8XC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdFwtZ3xxYVwtYXxxYygwN3wxMnwyMXwzMnw2MHxcLVsyLTddfGlcLSl8cXRla3xyMzgwfHI2MDB8cmFrc3xyaW05fHJvKHZlfHpvKXxzNTVcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFwtfG9vfHBcLSl8c2RrXC98c2UoYyhcLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2hcLXxzaGFyfHNpZShcLXxtKXxza1wtMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoXC18dlwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXC18dGRnXC18dGVsKGl8bSl8dGltXC18dFwtbW98dG8ocGx8c2gpfHRzKDcwfG1cLXxtM3xtNSl8dHhcLTl8dXAoXC5ifGcxfHNpKXx1dHN0fHY0MDB8djc1MHx2ZXJpfHZpKHJnfHRlKXx2ayg0MHw1WzAtM118XC12KXx2bTQwfHZvZGF8dnVsY3x2eCg1Mnw1M3w2MHw2MXw3MHw4MHw4MXw4M3w4NXw5OCl8dzNjKFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXC18eW91cnx6ZXRvfHp0ZVwtL2k7ZnVuY3Rpb24gVUMoZSl7cmV0dXJuIEZDLnRlc3QoZSl8fHpDLnRlc3QoZS5zbGljZSgwLDQpKX1mdW5jdGlvbiBIQyhlKXtyZXR1cm4gakMudGVzdChlKXx8VkMudGVzdChlLnNsaWNlKDAsNCkpfWZ1bmN0aW9uIFdDKGUpe3JldHVybi9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KGUpfWZ1bmN0aW9uIE12KGUpe3JldHVybi9hbmRyb2lkL2kudGVzdChlKX1mdW5jdGlvbiBHQyhlKXtyZXR1cm4vV2luZG93cy8udGVzdChlKX1mdW5jdGlvbiBLQyhlKXtyZXR1cm4vTWFjIE9TIFgvLnRlc3QoZSl9ZnVuY3Rpb24gUUMoZSl7cmV0dXJuL0xpbnV4L2kudGVzdChlKSYmIU12KGUpfWNvbnN0IFlDPVt7bmFtZToiU2Ftc3VuZyIscmVnZXg6L1NhbXN1bmdCcm93c2VyL2l9LHtuYW1lOiJFZGdlIixyZWdleDovZWRnKD86W2VhXXxpb3MpP1wvL2l9LHtuYW1lOiJGaXJlZm94IixyZWdleDovZmlyZWZveHxpY2V3ZWFzZWx8Znhpb3MvaX0se25hbWU6IkNocm9tZSIscmVnZXg6L2Nocm9tZXxjcmlvc3xjcm1vL2l9LHtuYW1lOiJTYWZhcmkiLHJlZ2V4Oi9zYWZhcml8YXBwbGV3ZWJraXQvaX1dO2Z1bmN0aW9uIEpDKGUpe2Zvcihjb25zdCB0IG9mIFlDKWlmKHQucmVnZXgudGVzdChlKSlyZXR1cm4gdC5uYW1lO3JldHVybiIifWZ1bmN0aW9uIFhDKGUsdD17fSl7bGV0IG49ITEscj0hMSxvPSExLHM9ITE7aWYoZT09PSJBbWF6b24gQ2xvdWRGcm9udCIpdFsiY2xvdWRmcm9udC1pcy1tb2JpbGUtdmlld2VyIl09PT0idHJ1ZSImJihuPSEwLHI9ITApLHRbImNsb3VkZnJvbnQtaXMtdGFibGV0LXZpZXdlciJdPT09InRydWUiJiYobj0hMSxyPSEwKSx0WyJjbG91ZGZyb250LWlzLWRlc2t0b3Atdmlld2VyIl09PT0idHJ1ZSImJihuPSExLHI9ITEpLHRbImNsb3VkZnJvbnQtaXMtaW9zLXZpZXdlciJdPT09InRydWUiJiYobz0hMCksdFsiY2xvdWRmcm9udC1pcy1hbmRyb2lkLXZpZXdlciJdPT09InRydWUiJiYocz0hMCk7ZWxzZSBpZih0JiZ0WyJjZi1kZXZpY2UtdHlwZSJdKXN3aXRjaCh0WyJjZi1kZXZpY2UtdHlwZSJdKXtjYXNlIm1vYmlsZSI6bj0hMCxyPSEwO2JyZWFrO2Nhc2UidGFibGV0IjpuPSExLHI9ITA7YnJlYWs7Y2FzZSJkZXNrdG9wIjpuPSExLHI9ITE7YnJlYWt9ZWxzZSBuPVVDKGUpLHI9SEMoZSksbz1XQyhlKSxzPU12KGUpO2NvbnN0IGk9R0MoZSksYT1LQyhlKSxsPVFDKGUpLHU9SkMoZSksYz11PT09IlNhZmFyaSIsZj11PT09IkZpcmVmb3giLGQ9dT09PSJFZGdlIixwPXU9PT0iQ2hyb21lIixtPXU9PT0iU2Ftc3VuZyIseT1xQy50ZXN0KGUpO3JldHVybnt1c2VyQWdlbnQ6ZSxpc01vYmlsZTpuLGlzTW9iaWxlT3JUYWJsZXQ6cixpc1RhYmxldDohbiYmcixpc0Rlc2t0b3A6IXIsaXNJb3M6byxpc0FuZHJvaWQ6cyxpc1dpbmRvd3M6aSxpc0xpbnV4OmwsaXNNYWNPUzphLGlzQXBwbGU6YXx8byxpc0Rlc2t0b3BPclRhYmxldDohbixpc1NhZmFyaTpjLGlzRmlyZWZveDpmLGlzRWRnZTpkLGlzQ2hyb21lOnAsaXNTYW1zdW5nOm0saXNDcmF3bGVyOnl9fWNvbnN0IFpDPWx0KCgpPT57Y29uc3QgdD1mbygpLnB1YmxpYy5kZXZpY2UuZGVmYXVsdFVzZXJBZ2VudDtsZXQgbjt7Y29uc3Qgcj1uYXZpZ2F0b3IudXNlckFnZW50fHx0O249YnQoWEMocikpfXJldHVybntwcm92aWRlOntkZXZpY2U6bn19fSk7dmFyIGNhPXtpbmhlcml0OiJpbmhlcml0IixjdXJyZW50OiJjdXJyZW50Y29sb3IiLHRyYW5zcGFyZW50OiJ0cmFuc3BhcmVudCIsYmxhY2s6IiMwMDAiLHdoaXRlOiIjZmZmIixzbGF0ZTp7NTA6Im9rbGNoKDk4LjQlIDAuMDAzIDI0Ny44NTgpIiwxMDA6Im9rbGNoKDk2LjglIDAuMDA3IDI0Ny44OTYpIiwyMDA6Im9rbGNoKDkyLjklIDAuMDEzIDI1NS41MDgpIiwzMDA6Im9rbGNoKDg2LjklIDAuMDIyIDI1Mi44OTQpIiw0MDA6Im9rbGNoKDcwLjQlIDAuMDQgMjU2Ljc4OCkiLDUwMDoib2tsY2goNTUuNCUgMC4wNDYgMjU3LjQxNykiLDYwMDoib2tsY2goNDQuNiUgMC4wNDMgMjU3LjI4MSkiLDcwMDoib2tsY2goMzcuMiUgMC4wNDQgMjU3LjI4NykiLDgwMDoib2tsY2goMjcuOSUgMC4wNDEgMjYwLjAzMSkiLDkwMDoib2tsY2goMjAuOCUgMC4wNDIgMjY1Ljc1NSkiLDk1MDoib2tsY2goMTIuOSUgMC4wNDIgMjY0LjY5NSkifSxncmF5Ons1MDoib2tsY2goOTguNSUgMC4wMDIgMjQ3LjgzOSkiLDEwMDoib2tsY2goOTYuNyUgMC4wMDMgMjY0LjU0MikiLDIwMDoib2tsY2goOTIuOCUgMC4wMDYgMjY0LjUzMSkiLDMwMDoib2tsY2goODcuMiUgMC4wMSAyNTguMzM4KSIsNDAwOiJva2xjaCg3MC43JSAwLjAyMiAyNjEuMzI1KSIsNTAwOiJva2xjaCg1NS4xJSAwLjAyNyAyNjQuMzY0KSIsNjAwOiJva2xjaCg0NC42JSAwLjAzIDI1Ni44MDIpIiw3MDA6Im9rbGNoKDM3LjMlIDAuMDM0IDI1OS43MzMpIiw4MDA6Im9rbGNoKDI3LjglIDAuMDMzIDI1Ni44NDgpIiw5MDA6Im9rbGNoKDIxJSAwLjAzNCAyNjQuNjY1KSIsOTUwOiJva2xjaCgxMyUgMC4wMjggMjYxLjY5MikifSx6aW5jOns1MDoib2tsY2goOTguNSUgMCAwKSIsMTAwOiJva2xjaCg5Ni43JSAwLjAwMSAyODYuMzc1KSIsMjAwOiJva2xjaCg5MiUgMC4wMDQgMjg2LjMyKSIsMzAwOiJva2xjaCg4Ny4xJSAwLjAwNiAyODYuMjg2KSIsNDAwOiJva2xjaCg3MC41JSAwLjAxNSAyODYuMDY3KSIsNTAwOiJva2xjaCg1NS4yJSAwLjAxNiAyODUuOTM4KSIsNjAwOiJva2xjaCg0NC4yJSAwLjAxNyAyODUuNzg2KSIsNzAwOiJva2xjaCgzNyUgMC4wMTMgMjg1LjgwNSkiLDgwMDoib2tsY2goMjcuNCUgMC4wMDYgMjg2LjAzMykiLDkwMDoib2tsY2goMjElIDAuMDA2IDI4NS44ODUpIiw5NTA6Im9rbGNoKDE0LjElIDAuMDA1IDI4NS44MjMpIn0sbmV1dHJhbDp7NTA6Im9rbGNoKDk4LjUlIDAgMCkiLDEwMDoib2tsY2goOTclIDAgMCkiLDIwMDoib2tsY2goOTIuMiUgMCAwKSIsMzAwOiJva2xjaCg4NyUgMCAwKSIsNDAwOiJva2xjaCg3MC44JSAwIDApIiw1MDA6Im9rbGNoKDU1LjYlIDAgMCkiLDYwMDoib2tsY2goNDMuOSUgMCAwKSIsNzAwOiJva2xjaCgzNy4xJSAwIDApIiw4MDA6Im9rbGNoKDI2LjklIDAgMCkiLDkwMDoib2tsY2goMjAuNSUgMCAwKSIsOTUwOiJva2xjaCgxNC41JSAwIDApIn0sc3RvbmU6ezUwOiJva2xjaCg5OC41JSAwLjAwMSAxMDYuNDIzKSIsMTAwOiJva2xjaCg5NyUgMC4wMDEgMTA2LjQyNCkiLDIwMDoib2tsY2goOTIuMyUgMC4wMDMgNDguNzE3KSIsMzAwOiJva2xjaCg4Ni45JSAwLjAwNSA1Ni4zNjYpIiw0MDA6Im9rbGNoKDcwLjklIDAuMDEgNTYuMjU5KSIsNTAwOiJva2xjaCg1NS4zJSAwLjAxMyA1OC4wNzEpIiw2MDA6Im9rbGNoKDQ0LjQlIDAuMDExIDczLjYzOSkiLDcwMDoib2tsY2goMzcuNCUgMC4wMSA2Ny41NTgpIiw4MDA6Im9rbGNoKDI2LjglIDAuMDA3IDM0LjI5OCkiLDkwMDoib2tsY2goMjEuNiUgMC4wMDYgNTYuMDQzKSIsOTUwOiJva2xjaCgxNC43JSAwLjAwNCA0OS4yNSkifSxtYXV2ZTp7NTA6Im9rbGNoKDk4LjUlIDAgMCkiLDEwMDoib2tsY2goOTYlIDAuMDAzIDMyNS42KSIsMjAwOiJva2xjaCg5Mi4yJSAwLjAwNSAzMjUuNjIpIiwzMDA6Im9rbGNoKDg2LjUlIDAuMDEyIDMyNS42OCkiLDQwMDoib2tsY2goNzEuMSUgMC4wMTkgMzIzLjAyKSIsNTAwOiJva2xjaCg1NC4yJSAwLjAzNCAzMjIuNSkiLDYwMDoib2tsY2goNDMuNSUgMC4wMjkgMzIxLjc4KSIsNzAwOiJva2xjaCgzNi40JSAwLjAyOSAzMjMuODkpIiw4MDA6Im9rbGNoKDI2LjMlIDAuMDI0IDMyMC4xMikiLDkwMDoib2tsY2goMjEuMiUgMC4wMTkgMzIyLjEyKSIsOTUwOiJva2xjaCgxNC41JSAwLjAwOCAzMjYpIn0sb2xpdmU6ezUwOiJva2xjaCg5OC44JSAwLjAwMyAxMDYuNSkiLDEwMDoib2tsY2goOTYuNiUgMC4wMDUgMTA2LjUpIiwyMDA6Im9rbGNoKDkzJSAwLjAwNyAxMDYuNSkiLDMwMDoib2tsY2goODglIDAuMDExIDEwNi42KSIsNDAwOiJva2xjaCg3My43JSAwLjAyMSAxMDYuOSkiLDUwMDoib2tsY2goNTglIDAuMDMxIDEwNy4zKSIsNjAwOiJva2xjaCg0Ni42JSAwLjAyNSAxMDcuMykiLDcwMDoib2tsY2goMzkuNCUgMC4wMjMgMTA3LjQpIiw4MDA6Im9rbGNoKDI4LjYlIDAuMDE2IDEwNy40KSIsOTAwOiJva2xjaCgyMi44JSAwLjAxMyAxMDcuNCkiLDk1MDoib2tsY2goMTUuMyUgMC4wMDYgMTA3LjEpIn0sbWlzdDp7NTA6Im9rbGNoKDk4LjclIDAuMDAyIDE5Ny4xKSIsMTAwOiJva2xjaCg5Ni4zJSAwLjAwMiAxOTcuMSkiLDIwMDoib2tsY2goOTIuNSUgMC4wMDUgMjE0LjMpIiwzMDA6Im9rbGNoKDg3LjIlIDAuMDA3IDIxOS42KSIsNDAwOiJva2xjaCg3Mi4zJSAwLjAxNCAyMTQuNCkiLDUwMDoib2tsY2goNTYlIDAuMDIxIDIxMy41KSIsNjAwOiJva2xjaCg0NSUgMC4wMTcgMjEzLjIpIiw3MDA6Im9rbGNoKDM3LjglIDAuMDE1IDIxNikiLDgwMDoib2tsY2goMjcuNSUgMC4wMTEgMjE2LjkpIiw5MDA6Im9rbGNoKDIxLjglIDAuMDA4IDIyMy45KSIsOTUwOiJva2xjaCgxNC44JSAwLjAwNCAyMjguOCkifSx0YXVwZTp7NTA6Im9rbGNoKDk4LjYlIDAuMDAyIDY3LjgpIiwxMDA6Im9rbGNoKDk2JSAwLjAwMiAxNy4yKSIsMjAwOiJva2xjaCg5Mi4yJSAwLjAwNSAzNC4zKSIsMzAwOiJva2xjaCg4Ni44JSAwLjAwNyAzOS41KSIsNDAwOiJva2xjaCg3MS40JSAwLjAxNCA0MS4yKSIsNTAwOiJva2xjaCg1NC43JSAwLjAyMSA0My4xKSIsNjAwOiJva2xjaCg0My44JSAwLjAxNyAzOS4zKSIsNzAwOiJva2xjaCgzNi43JSAwLjAxNiAzNS43KSIsODAwOiJva2xjaCgyNi44JSAwLjAxMSAzNi41KSIsOTAwOiJva2xjaCgyMS40JSAwLjAwOSA0My4xKSIsOTUwOiJva2xjaCgxNC43JSAwLjAwNCA0OS4zKSJ9LHJlZDp7NTA6Im9rbGNoKDk3LjElIDAuMDEzIDE3LjM4KSIsMTAwOiJva2xjaCg5My42JSAwLjAzMiAxNy43MTcpIiwyMDA6Im9rbGNoKDg4LjUlIDAuMDYyIDE4LjMzNCkiLDMwMDoib2tsY2goODAuOCUgMC4xMTQgMTkuNTcxKSIsNDAwOiJva2xjaCg3MC40JSAwLjE5MSAyMi4yMTYpIiw1MDA6Im9rbGNoKDYzLjclIDAuMjM3IDI1LjMzMSkiLDYwMDoib2tsY2goNTcuNyUgMC4yNDUgMjcuMzI1KSIsNzAwOiJva2xjaCg1MC41JSAwLjIxMyAyNy41MTgpIiw4MDA6Im9rbGNoKDQ0LjQlIDAuMTc3IDI2Ljg5OSkiLDkwMDoib2tsY2goMzkuNiUgMC4xNDEgMjUuNzIzKSIsOTUwOiJva2xjaCgyNS44JSAwLjA5MiAyNi4wNDIpIn0sb3JhbmdlOns1MDoib2tsY2goOTglIDAuMDE2IDczLjY4NCkiLDEwMDoib2tsY2goOTUuNCUgMC4wMzggNzUuMTY0KSIsMjAwOiJva2xjaCg5MC4xJSAwLjA3NiA3MC42OTcpIiwzMDA6Im9rbGNoKDgzLjclIDAuMTI4IDY2LjI5KSIsNDAwOiJva2xjaCg3NSUgMC4xODMgNTUuOTM0KSIsNTAwOiJva2xjaCg3MC41JSAwLjIxMyA0Ny42MDQpIiw2MDA6Im9rbGNoKDY0LjYlIDAuMjIyIDQxLjExNikiLDcwMDoib2tsY2goNTUuMyUgMC4xOTUgMzguNDAyKSIsODAwOiJva2xjaCg0NyUgMC4xNTcgMzcuMzA0KSIsOTAwOiJva2xjaCg0MC44JSAwLjEyMyAzOC4xNzIpIiw5NTA6Im9rbGNoKDI2LjYlIDAuMDc5IDM2LjI1OSkifSxhbWJlcjp7NTA6Im9rbGNoKDk4LjclIDAuMDIyIDk1LjI3NykiLDEwMDoib2tsY2goOTYuMiUgMC4wNTkgOTUuNjE3KSIsMjAwOiJva2xjaCg5Mi40JSAwLjEyIDk1Ljc0NikiLDMwMDoib2tsY2goODcuOSUgMC4xNjkgOTEuNjA1KSIsNDAwOiJva2xjaCg4Mi44JSAwLjE4OSA4NC40MjkpIiw1MDA6Im9rbGNoKDc2LjklIDAuMTg4IDcwLjA4KSIsNjAwOiJva2xjaCg2Ni42JSAwLjE3OSA1OC4zMTgpIiw3MDA6Im9rbGNoKDU1LjUlIDAuMTYzIDQ4Ljk5OCkiLDgwMDoib2tsY2goNDcuMyUgMC4xMzcgNDYuMjAxKSIsOTAwOiJva2xjaCg0MS40JSAwLjExMiA0NS45MDQpIiw5NTA6Im9rbGNoKDI3LjklIDAuMDc3IDQ1LjYzNSkifSx5ZWxsb3c6ezUwOiJva2xjaCg5OC43JSAwLjAyNiAxMDIuMjEyKSIsMTAwOiJva2xjaCg5Ny4zJSAwLjA3MSAxMDMuMTkzKSIsMjAwOiJva2xjaCg5NC41JSAwLjEyOSAxMDEuNTQpIiwzMDA6Im9rbGNoKDkwLjUlIDAuMTgyIDk4LjExMSkiLDQwMDoib2tsY2goODUuMiUgMC4xOTkgOTEuOTM2KSIsNTAwOiJva2xjaCg3OS41JSAwLjE4NCA4Ni4wNDcpIiw2MDA6Im9rbGNoKDY4LjElIDAuMTYyIDc1LjgzNCkiLDcwMDoib2tsY2goNTUuNCUgMC4xMzUgNjYuNDQyKSIsODAwOiJva2xjaCg0Ny42JSAwLjExNCA2MS45MDcpIiw5MDA6Im9rbGNoKDQyLjElIDAuMDk1IDU3LjcwOCkiLDk1MDoib2tsY2goMjguNiUgMC4wNjYgNTMuODEzKSJ9LGxpbWU6ezUwOiJva2xjaCg5OC42JSAwLjAzMSAxMjAuNzU3KSIsMTAwOiJva2xjaCg5Ni43JSAwLjA2NyAxMjIuMzI4KSIsMjAwOiJva2xjaCg5My44JSAwLjEyNyAxMjQuMzIxKSIsMzAwOiJva2xjaCg4OS43JSAwLjE5NiAxMjYuNjY1KSIsNDAwOiJva2xjaCg4NC4xJSAwLjIzOCAxMjguODUpIiw1MDA6Im9rbGNoKDc2LjglIDAuMjMzIDEzMC44NSkiLDYwMDoib2tsY2goNjQuOCUgMC4yIDEzMS42ODQpIiw3MDA6Im9rbGNoKDUzLjIlIDAuMTU3IDEzMS41ODkpIiw4MDA6Im9rbGNoKDQ1LjMlIDAuMTI0IDEzMC45MzMpIiw5MDA6Im9rbGNoKDQwLjUlIDAuMTAxIDEzMS4wNjMpIiw5NTA6Im9rbGNoKDI3LjQlIDAuMDcyIDEzMi4xMDkpIn0sZ3JlZW46ezUwOiJva2xjaCg5OC4yJSAwLjAxOCAxNTUuODI2KSIsMTAwOiJva2xjaCg5Ni4yJSAwLjA0NCAxNTYuNzQzKSIsMjAwOiJva2xjaCg5Mi41JSAwLjA4NCAxNTUuOTk1KSIsMzAwOiJva2xjaCg4Ny4xJSAwLjE1IDE1NC40NDkpIiw0MDA6Im9rbGNoKDc5LjIlIDAuMjA5IDE1MS43MTEpIiw1MDA6Im9rbGNoKDcyLjMlIDAuMjE5IDE0OS41NzkpIiw2MDA6Im9rbGNoKDYyLjclIDAuMTk0IDE0OS4yMTQpIiw3MDA6Im9rbGNoKDUyLjclIDAuMTU0IDE1MC4wNjkpIiw4MDA6Im9rbGNoKDQ0LjglIDAuMTE5IDE1MS4zMjgpIiw5MDA6Im9rbGNoKDM5LjMlIDAuMDk1IDE1Mi41MzUpIiw5NTA6Im9rbGNoKDI2LjYlIDAuMDY1IDE1Mi45MzQpIn0sZW1lcmFsZDp7NTA6Im9rbGNoKDk3LjklIDAuMDIxIDE2Ni4xMTMpIiwxMDA6Im9rbGNoKDk1JSAwLjA1MiAxNjMuMDUxKSIsMjAwOiJva2xjaCg5MC41JSAwLjA5MyAxNjQuMTUpIiwzMDA6Im9rbGNoKDg0LjUlIDAuMTQzIDE2NC45NzgpIiw0MDA6Im9rbGNoKDc2LjUlIDAuMTc3IDE2My4yMjMpIiw1MDA6Im9rbGNoKDY5LjYlIDAuMTcgMTYyLjQ4KSIsNjAwOiJva2xjaCg1OS42JSAwLjE0NSAxNjMuMjI1KSIsNzAwOiJva2xjaCg1MC44JSAwLjExOCAxNjUuNjEyKSIsODAwOiJva2xjaCg0My4yJSAwLjA5NSAxNjYuOTEzKSIsOTAwOiJva2xjaCgzNy44JSAwLjA3NyAxNjguOTQpIiw5NTA6Im9rbGNoKDI2LjIlIDAuMDUxIDE3Mi41NTIpIn0sdGVhbDp7NTA6Im9rbGNoKDk4LjQlIDAuMDE0IDE4MC43MikiLDEwMDoib2tsY2goOTUuMyUgMC4wNTEgMTgwLjgwMSkiLDIwMDoib2tsY2goOTElIDAuMDk2IDE4MC40MjYpIiwzMDA6Im9rbGNoKDg1LjUlIDAuMTM4IDE4MS4wNzEpIiw0MDA6Im9rbGNoKDc3LjclIDAuMTUyIDE4MS45MTIpIiw1MDA6Im9rbGNoKDcwLjQlIDAuMTQgMTgyLjUwMykiLDYwMDoib2tsY2goNjAlIDAuMTE4IDE4NC43MDQpIiw3MDA6Im9rbGNoKDUxLjElIDAuMDk2IDE4Ni4zOTEpIiw4MDA6Im9rbGNoKDQzLjclIDAuMDc4IDE4OC4yMTYpIiw5MDA6Im9rbGNoKDM4LjYlIDAuMDYzIDE4OC40MTYpIiw5NTA6Im9rbGNoKDI3LjclIDAuMDQ2IDE5Mi41MjQpIn0sY3lhbjp7NTA6Im9rbGNoKDk4LjQlIDAuMDE5IDIwMC44NzMpIiwxMDA6Im9rbGNoKDk1LjYlIDAuMDQ1IDIwMy4zODgpIiwyMDA6Im9rbGNoKDkxLjclIDAuMDggMjA1LjA0MSkiLDMwMDoib2tsY2goODYuNSUgMC4xMjcgMjA3LjA3OCkiLDQwMDoib2tsY2goNzguOSUgMC4xNTQgMjExLjUzKSIsNTAwOiJva2xjaCg3MS41JSAwLjE0MyAyMTUuMjIxKSIsNjAwOiJva2xjaCg2MC45JSAwLjEyNiAyMjEuNzIzKSIsNzAwOiJva2xjaCg1MiUgMC4xMDUgMjIzLjEyOCkiLDgwMDoib2tsY2goNDUlIDAuMDg1IDIyNC4yODMpIiw5MDA6Im9rbGNoKDM5LjglIDAuMDcgMjI3LjM5MikiLDk1MDoib2tsY2goMzAuMiUgMC4wNTYgMjI5LjY5NSkifSxza3k6ezUwOiJva2xjaCg5Ny43JSAwLjAxMyAyMzYuNjIpIiwxMDA6Im9rbGNoKDk1LjElIDAuMDI2IDIzNi44MjQpIiwyMDA6Im9rbGNoKDkwLjElIDAuMDU4IDIzMC45MDIpIiwzMDA6Im9rbGNoKDgyLjglIDAuMTExIDIzMC4zMTgpIiw0MDA6Im9rbGNoKDc0LjYlIDAuMTYgMjMyLjY2MSkiLDUwMDoib2tsY2goNjguNSUgMC4xNjkgMjM3LjMyMykiLDYwMDoib2tsY2goNTguOCUgMC4xNTggMjQxLjk2NikiLDcwMDoib2tsY2goNTAlIDAuMTM0IDI0Mi43NDkpIiw4MDA6Im9rbGNoKDQ0LjMlIDAuMTEgMjQwLjc5KSIsOTAwOiJva2xjaCgzOS4xJSAwLjA5IDI0MC44NzYpIiw5NTA6Im9rbGNoKDI5LjMlIDAuMDY2IDI0My4xNTcpIn0sYmx1ZTp7NTA6Im9rbGNoKDk3JSAwLjAxNCAyNTQuNjA0KSIsMTAwOiJva2xjaCg5My4yJSAwLjAzMiAyNTUuNTg1KSIsMjAwOiJva2xjaCg4OC4yJSAwLjA1OSAyNTQuMTI4KSIsMzAwOiJva2xjaCg4MC45JSAwLjEwNSAyNTEuODEzKSIsNDAwOiJva2xjaCg3MC43JSAwLjE2NSAyNTQuNjI0KSIsNTAwOiJva2xjaCg2Mi4zJSAwLjIxNCAyNTkuODE1KSIsNjAwOiJva2xjaCg1NC42JSAwLjI0NSAyNjIuODgxKSIsNzAwOiJva2xjaCg0OC44JSAwLjI0MyAyNjQuMzc2KSIsODAwOiJva2xjaCg0Mi40JSAwLjE5OSAyNjUuNjM4KSIsOTAwOiJva2xjaCgzNy45JSAwLjE0NiAyNjUuNTIyKSIsOTUwOiJva2xjaCgyOC4yJSAwLjA5MSAyNjcuOTM1KSJ9LGluZGlnbzp7NTA6Im9rbGNoKDk2LjIlIDAuMDE4IDI3Mi4zMTQpIiwxMDA6Im9rbGNoKDkzJSAwLjAzNCAyNzIuNzg4KSIsMjAwOiJva2xjaCg4NyUgMC4wNjUgMjc0LjAzOSkiLDMwMDoib2tsY2goNzguNSUgMC4xMTUgMjc0LjcxMykiLDQwMDoib2tsY2goNjcuMyUgMC4xODIgMjc2LjkzNSkiLDUwMDoib2tsY2goNTguNSUgMC4yMzMgMjc3LjExNykiLDYwMDoib2tsY2goNTEuMSUgMC4yNjIgMjc2Ljk2NikiLDcwMDoib2tsY2goNDUuNyUgMC4yNCAyNzcuMDIzKSIsODAwOiJva2xjaCgzOS44JSAwLjE5NSAyNzcuMzY2KSIsOTAwOiJva2xjaCgzNS45JSAwLjE0NCAyNzguNjk3KSIsOTUwOiJva2xjaCgyNS43JSAwLjA5IDI4MS4yODgpIn0sdmlvbGV0Ons1MDoib2tsY2goOTYuOSUgMC4wMTYgMjkzLjc1NikiLDEwMDoib2tsY2goOTQuMyUgMC4wMjkgMjk0LjU4OCkiLDIwMDoib2tsY2goODkuNCUgMC4wNTcgMjkzLjI4MykiLDMwMDoib2tsY2goODEuMSUgMC4xMTEgMjkzLjU3MSkiLDQwMDoib2tsY2goNzAuMiUgMC4xODMgMjkzLjU0MSkiLDUwMDoib2tsY2goNjAuNiUgMC4yNSAyOTIuNzE3KSIsNjAwOiJva2xjaCg1NC4xJSAwLjI4MSAyOTMuMDA5KSIsNzAwOiJva2xjaCg0OS4xJSAwLjI3IDI5Mi41ODEpIiw4MDA6Im9rbGNoKDQzLjIlIDAuMjMyIDI5Mi43NTkpIiw5MDA6Im9rbGNoKDM4JSAwLjE4OSAyOTMuNzQ1KSIsOTUwOiJva2xjaCgyOC4zJSAwLjE0MSAyOTEuMDg5KSJ9LHB1cnBsZTp7NTA6Im9rbGNoKDk3LjclIDAuMDE0IDMwOC4yOTkpIiwxMDA6Im9rbGNoKDk0LjYlIDAuMDMzIDMwNy4xNzQpIiwyMDA6Im9rbGNoKDkwLjIlIDAuMDYzIDMwNi43MDMpIiwzMDA6Im9rbGNoKDgyLjclIDAuMTE5IDMwNi4zODMpIiw0MDA6Im9rbGNoKDcxLjQlIDAuMjAzIDMwNS41MDQpIiw1MDA6Im9rbGNoKDYyLjclIDAuMjY1IDMwMy45KSIsNjAwOiJva2xjaCg1NS44JSAwLjI4OCAzMDIuMzIxKSIsNzAwOiJva2xjaCg0OS42JSAwLjI2NSAzMDEuOTI0KSIsODAwOiJva2xjaCg0My44JSAwLjIxOCAzMDMuNzI0KSIsOTAwOiJva2xjaCgzOC4xJSAwLjE3NiAzMDQuOTg3KSIsOTUwOiJva2xjaCgyOS4xJSAwLjE0OSAzMDIuNzE3KSJ9LGZ1Y2hzaWE6ezUwOiJva2xjaCg5Ny43JSAwLjAxNyAzMjAuMDU4KSIsMTAwOiJva2xjaCg5NS4yJSAwLjAzNyAzMTguODUyKSIsMjAwOiJva2xjaCg5MC4zJSAwLjA3NiAzMTkuNjIpIiwzMDA6Im9rbGNoKDgzLjMlIDAuMTQ1IDMyMS40MzQpIiw0MDA6Im9rbGNoKDc0JSAwLjIzOCAzMjIuMTYpIiw1MDA6Im9rbGNoKDY2LjclIDAuMjk1IDMyMi4xNSkiLDYwMDoib2tsY2goNTkuMSUgMC4yOTMgMzIyLjg5NikiLDcwMDoib2tsY2goNTEuOCUgMC4yNTMgMzIzLjk0OSkiLDgwMDoib2tsY2goNDUuMiUgMC4yMTEgMzI0LjU5MSkiLDkwMDoib2tsY2goNDAuMSUgMC4xNyAzMjUuNjEyKSIsOTUwOiJva2xjaCgyOS4zJSAwLjEzNiAzMjUuNjYxKSJ9LHBpbms6ezUwOiJva2xjaCg5Ny4xJSAwLjAxNCAzNDMuMTk4KSIsMTAwOiJva2xjaCg5NC44JSAwLjAyOCAzNDIuMjU4KSIsMjAwOiJva2xjaCg4OS45JSAwLjA2MSAzNDMuMjMxKSIsMzAwOiJva2xjaCg4Mi4zJSAwLjEyIDM0Ni4wMTgpIiw0MDA6Im9rbGNoKDcxLjglIDAuMjAyIDM0OS43NjEpIiw1MDA6Im9rbGNoKDY1LjYlIDAuMjQxIDM1NC4zMDgpIiw2MDA6Im9rbGNoKDU5LjIlIDAuMjQ5IDAuNTg0KSIsNzAwOiJva2xjaCg1Mi41JSAwLjIyMyAzLjk1OCkiLDgwMDoib2tsY2goNDUuOSUgMC4xODcgMy44MTUpIiw5MDA6Im9rbGNoKDQwLjglIDAuMTUzIDIuNDMyKSIsOTUwOiJva2xjaCgyOC40JSAwLjEwOSAzLjkwNykifSxyb3NlOns1MDoib2tsY2goOTYuOSUgMC4wMTUgMTIuNDIyKSIsMTAwOiJva2xjaCg5NC4xJSAwLjAzIDEyLjU4KSIsMjAwOiJva2xjaCg4OS4yJSAwLjA1OCAxMC4wMDEpIiwzMDA6Im9rbGNoKDgxJSAwLjExNyAxMS42MzgpIiw0MDA6Im9rbGNoKDcxLjIlIDAuMTk0IDEzLjQyOCkiLDUwMDoib2tsY2goNjQuNSUgMC4yNDYgMTYuNDM5KSIsNjAwOiJva2xjaCg1OC42JSAwLjI1MyAxNy41ODUpIiw3MDA6Im9rbGNoKDUxLjQlIDAuMjIyIDE2LjkzNSkiLDgwMDoib2tsY2goNDUuNSUgMC4xODggMTMuNjk3KSIsOTAwOiJva2xjaCg0MSUgMC4xNTkgMTAuMjcyKSIsOTUwOiJva2xjaCgyNy4xJSAwLjEwNSAxMi4wOTQpIn19O2NvbnN0IGVBPVs1MCwxMDAsMjAwLDMwMCw0MDAsNTAwLDYwMCw3MDAsODAwLDkwMCw5NTBdO2Z1bmN0aW9uIHRBKGUsdCl7cmV0dXJuIGUgaW4gY2EmJnR5cGVvZiBjYVtlXT09Im9iamVjdCImJnQgaW4gY2FbZV0/Y2FbZV1bdF06IiJ9ZnVuY3Rpb24gbkEoZSx0LG4pe2NvbnN0IHI9bj9gJHtufS1gOiIiO3JldHVybmAke2VBLm1hcChvPT5gLS11aS1jb2xvci0ke2V9LSR7b306IHZhcigtLSR7cn1jb2xvci0ke3Q9PT0ibmV1dHJhbCI/Im9sZC1uZXV0cmFsIjp0fS0ke299LCAke3RBKHQsbyl9KTtgKS5qb2luKGAKICBgKX1gfWZ1bmN0aW9uIGZtKGUsdCl7cmV0dXJuYC0tdWktJHtlfTogdmFyKC0tdWktY29sb3ItJHtlfS0ke3R9KTtgfWNvbnN0IHJBPWx0KCgpPT57Y29uc3QgZT1TdCgpLHQ9QmUoKSxuPU4oKCk9Pntjb25zdHtuZXV0cmFsOm8sLi4uc309ZS51aS5jb2xvcnMsaT1lLnVpLnByZWZpeDtyZXR1cm5gQGxheWVyIHRoZW1lIHsKICA6cm9vdCwgOmhvc3QgewogICR7T2JqZWN0LmVudHJpZXMoZS51aS5jb2xvcnMpLm1hcCgoW2EsbF0pPT5uQShhLGwsaSkpLmpvaW4oYAogIGApfQogIH0KICA6cm9vdCwgOmhvc3QsIC5saWdodCB7CiAgJHtPYmplY3Qua2V5cyhzKS5tYXAoYT0+Zm0oYSw1MDApKS5qb2luKGAKICBgKX0KICB9CiAgLmRhcmsgewogICR7T2JqZWN0LmtleXMocykubWFwKGE9PmZtKGEsNDAwKSkuam9pbihgCiAgYCl9CiAgfQp9YH0pLHI9e3N0eWxlOlt7aW5uZXJIVE1MOigpPT5uLnZhbHVlLHRhZ1ByaW9yaXR5OiJjcml0aWNhbCIsaWQ6Im51eHQtdWktY29sb3JzIn1dfTtpZih0LmlzSHlkcmF0aW5nJiYhdC5wYXlsb2FkLnNlcnZlclJlbmRlcmVkKXtjb25zdCBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7by5pbm5lckhUTUw9bi52YWx1ZSxvLnNldEF0dHJpYnV0ZSgiZGF0YS1udXh0LXVpLWNvbG9ycyIsIiIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobyksci5zY3JpcHQ9W3tpbm5lckhUTUw6ImRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtbnV4dC11aS1jb2xvcnNdJykpIn1dfURrKHIpfSksQnY9L15bYS16MC05XSsoLVthLXowLTldKykqJC8sRmk9KGUsdCxuLHI9IiIpPT57Y29uc3Qgbz1lLnNwbGl0KCI6Iik7aWYoZS5zbGljZSgwLDEpPT09IkAiKXtpZihvLmxlbmd0aDwyfHxvLmxlbmd0aD4zKXJldHVybiBudWxsO3I9by5zaGlmdCgpLnNsaWNlKDEpfWlmKG8ubGVuZ3RoPjN8fCFvLmxlbmd0aClyZXR1cm4gbnVsbDtpZihvLmxlbmd0aD4xKXtjb25zdCBhPW8ucG9wKCksbD1vLnBvcCgpLHU9e3Byb3ZpZGVyOm8ubGVuZ3RoPjA/b1swXTpyLHByZWZpeDpsLG5hbWU6YX07cmV0dXJuIHQmJiFPYSh1KT9udWxsOnV9Y29uc3Qgcz1vWzBdLGk9cy5zcGxpdCgiLSIpO2lmKGkubGVuZ3RoPjEpe2NvbnN0IGE9e3Byb3ZpZGVyOnIscHJlZml4Omkuc2hpZnQoKSxuYW1lOmkuam9pbigiLSIpfTtyZXR1cm4gdCYmIU9hKGEpP251bGw6YX1pZihuJiZyPT09IiIpe2NvbnN0IGE9e3Byb3ZpZGVyOnIscHJlZml4OiIiLG5hbWU6c307cmV0dXJuIHQmJiFPYShhLG4pP251bGw6YX1yZXR1cm4gbnVsbH0sT2E9KGUsdCk9PmU/ISEoKHQmJmUucHJlZml4PT09IiJ8fGUucHJlZml4KSYmZS5uYW1lKTohMSxxdj1PYmplY3QuZnJlZXplKHtsZWZ0OjAsdG9wOjAsd2lkdGg6MTYsaGVpZ2h0OjE2fSksSmE9T2JqZWN0LmZyZWV6ZSh7cm90YXRlOjAsdkZsaXA6ITEsaEZsaXA6ITF9KSxMcz1PYmplY3QuZnJlZXplKHsuLi5xdiwuLi5KYX0pLE91PU9iamVjdC5mcmVlemUoey4uLkxzLGJvZHk6IiIsaGlkZGVuOiExfSk7ZnVuY3Rpb24gb0EoZSx0KXtjb25zdCBuPXt9OyFlLmhGbGlwIT0hdC5oRmxpcCYmKG4uaEZsaXA9ITApLCFlLnZGbGlwIT0hdC52RmxpcCYmKG4udkZsaXA9ITApO2NvbnN0IHI9KChlLnJvdGF0ZXx8MCkrKHQucm90YXRlfHwwKSklNDtyZXR1cm4gciYmKG4ucm90YXRlPXIpLG59ZnVuY3Rpb24gZG0oZSx0KXtjb25zdCBuPW9BKGUsdCk7Zm9yKGNvbnN0IHIgaW4gT3UpciBpbiBKYT9yIGluIGUmJiEociBpbiBuKSYmKG5bcl09SmFbcl0pOnIgaW4gdD9uW3JdPXRbcl06ciBpbiBlJiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBzQShlLHQpe2NvbnN0IG49ZS5pY29ucyxyPWUuYWxpYXNlc3x8T2JqZWN0LmNyZWF0ZShudWxsKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gcyhpKXtpZihuW2ldKXJldHVybiBvW2ldPVtdO2lmKCEoaSBpbiBvKSl7b1tpXT1udWxsO2NvbnN0IGE9cltpXSYmcltpXS5wYXJlbnQsbD1hJiZzKGEpO2wmJihvW2ldPVthXS5jb25jYXQobCkpfXJldHVybiBvW2ldfXJldHVybiBPYmplY3Qua2V5cyhuKS5jb25jYXQoT2JqZWN0LmtleXMocikpLmZvckVhY2gocyksb31mdW5jdGlvbiBpQShlLHQsbil7Y29uc3Qgcj1lLmljb25zLG89ZS5hbGlhc2VzfHxPYmplY3QuY3JlYXRlKG51bGwpO2xldCBzPXt9O2Z1bmN0aW9uIGkoYSl7cz1kbShyW2FdfHxvW2FdLHMpfXJldHVybiBpKHQpLG4uZm9yRWFjaChpKSxkbShlLHMpfWZ1bmN0aW9uIEZ2KGUsdCl7Y29uc3Qgbj1bXTtpZih0eXBlb2YgZSE9Im9iamVjdCJ8fHR5cGVvZiBlLmljb25zIT0ib2JqZWN0IilyZXR1cm4gbjtlLm5vdF9mb3VuZCBpbnN0YW5jZW9mIEFycmF5JiZlLm5vdF9mb3VuZC5mb3JFYWNoKG89Pnt0KG8sbnVsbCksbi5wdXNoKG8pfSk7Y29uc3Qgcj1zQShlKTtmb3IoY29uc3QgbyBpbiByKXtjb25zdCBzPXJbb107cyYmKHQobyxpQShlLG8scykpLG4ucHVzaChvKSl9cmV0dXJuIG59Y29uc3QgYUE9e3Byb3ZpZGVyOiIiLGFsaWFzZXM6e30sbm90X2ZvdW5kOnt9LC4uLnF2fTtmdW5jdGlvbiBJYyhlLHQpe2Zvcihjb25zdCBuIGluIHQpaWYobiBpbiBlJiZ0eXBlb2YgZVtuXSE9dHlwZW9mIHRbbl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24genYoZSl7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbClyZXR1cm4gbnVsbDtjb25zdCB0PWU7aWYodHlwZW9mIHQucHJlZml4IT0ic3RyaW5nInx8IWUuaWNvbnN8fHR5cGVvZiBlLmljb25zIT0ib2JqZWN0Inx8IUljKGUsYUEpKXJldHVybiBudWxsO2NvbnN0IG49dC5pY29ucztmb3IoY29uc3QgbyBpbiBuKXtjb25zdCBzPW5bb107aWYoIW98fHR5cGVvZiBzLmJvZHkhPSJzdHJpbmcifHwhSWMocyxPdSkpcmV0dXJuIG51bGx9Y29uc3Qgcj10LmFsaWFzZXN8fE9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IG8gaW4gcil7Y29uc3Qgcz1yW29dLGk9cy5wYXJlbnQ7aWYoIW98fHR5cGVvZiBpIT0ic3RyaW5nInx8IW5baV0mJiFyW2ldfHwhSWMocyxPdSkpcmV0dXJuIG51bGx9cmV0dXJuIHR9Y29uc3QgcG09T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBsQShlLHQpe3JldHVybntwcm92aWRlcjplLHByZWZpeDp0LGljb25zOk9iamVjdC5jcmVhdGUobnVsbCksbWlzc2luZzpuZXcgU2V0fX1mdW5jdGlvbiB6byhlLHQpe2NvbnN0IG49cG1bZV18fChwbVtlXT1PYmplY3QuY3JlYXRlKG51bGwpKTtyZXR1cm4gblt0XXx8KG5bdF09bEEoZSx0KSl9ZnVuY3Rpb24ganYoZSx0KXtyZXR1cm4genYodCk/RnYodCwobixyKT0+e3I/ZS5pY29uc1tuXT1yOmUubWlzc2luZy5hZGQobil9KTpbXX1mdW5jdGlvbiBjQShlLHQsbil7dHJ5e2lmKHR5cGVvZiBuLmJvZHk9PSJzdHJpbmciKXJldHVybiBlLmljb25zW3RdPXsuLi5ufSwhMH1jYXRjaHt9cmV0dXJuITF9bGV0IENpPSExO2Z1bmN0aW9uIFZ2KGUpe3JldHVybiB0eXBlb2YgZT09ImJvb2xlYW4iJiYoQ2k9ZSksQ2l9ZnVuY3Rpb24gQmYoZSl7Y29uc3QgdD10eXBlb2YgZT09InN0cmluZyI/RmkoZSwhMCxDaSk6ZTtpZih0KXtjb25zdCBuPXpvKHQucHJvdmlkZXIsdC5wcmVmaXgpLHI9dC5uYW1lO3JldHVybiBuLmljb25zW3JdfHwobi5taXNzaW5nLmhhcyhyKT9udWxsOnZvaWQgMCl9fWZ1bmN0aW9uIHFmKGUsdCl7Y29uc3Qgbj1GaShlLCEwLENpKTtpZighbilyZXR1cm4hMTtjb25zdCByPXpvKG4ucHJvdmlkZXIsbi5wcmVmaXgpO3JldHVybiB0P2NBKHIsbi5uYW1lLHQpOihyLm1pc3NpbmcuYWRkKG4ubmFtZSksITApfWZ1bmN0aW9uIHVBKGUsdCl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiExO2lmKHR5cGVvZiB0IT0ic3RyaW5nIiYmKHQ9ZS5wcm92aWRlcnx8IiIpLENpJiYhdCYmIWUucHJlZml4KXtsZXQgbz0hMTtyZXR1cm4genYoZSkmJihlLnByZWZpeD0iIixGdihlLChzLGkpPT57cWYocyxpKSYmKG89ITApfSkpLG99Y29uc3Qgbj1lLnByZWZpeDtpZighT2Eoe3ByZWZpeDpuLG5hbWU6ImEifSkpcmV0dXJuITE7Y29uc3Qgcj16byh0LG4pO3JldHVybiEhanYocixlKX1mdW5jdGlvbiBQdShlKXtjb25zdCB0PUJmKGUpO3JldHVybiB0JiZ7Li4uTHMsLi4udH19Y29uc3QgVXY9T2JqZWN0LmZyZWV6ZSh7d2lkdGg6bnVsbCxoZWlnaHQ6bnVsbH0pLEh2PU9iamVjdC5mcmVlemUoey4uLlV2LC4uLkphfSksZkE9LygtP1swLTkuXSpbMC05XStbMC05Ll0qKS9nLGRBPS9eLT9bMC05Ll0qWzAtOV0rWzAtOS5dKiQvZztmdW5jdGlvbiBtbShlLHQsbil7aWYodD09PTEpcmV0dXJuIGU7aWYobj1ufHwxMDAsdHlwZW9mIGU9PSJudW1iZXIiKXJldHVybiBNYXRoLmNlaWwoZSp0Km4pL247aWYodHlwZW9mIGUhPSJzdHJpbmciKXJldHVybiBlO2NvbnN0IHI9ZS5zcGxpdChmQSk7aWYocj09PW51bGx8fCFyLmxlbmd0aClyZXR1cm4gZTtjb25zdCBvPVtdO2xldCBzPXIuc2hpZnQoKSxpPWRBLnRlc3Qocyk7Zm9yKDs7KXtpZihpKXtjb25zdCBhPXBhcnNlRmxvYXQocyk7aXNOYU4oYSk/by5wdXNoKHMpOm8ucHVzaChNYXRoLmNlaWwoYSp0Km4pL24pfWVsc2Ugby5wdXNoKHMpO2lmKHM9ci5zaGlmdCgpLHM9PT12b2lkIDApcmV0dXJuIG8uam9pbigiIik7aT0haX19ZnVuY3Rpb24gcEEoZSx0PSJkZWZzIil7bGV0IG49IiI7Y29uc3Qgcj1lLmluZGV4T2YoIjwiK3QpO2Zvcig7cj49MDspe2NvbnN0IG89ZS5pbmRleE9mKCI+IixyKSxzPWUuaW5kZXhPZigiPC8iK3QpO2lmKG89PT0tMXx8cz09PS0xKWJyZWFrO2NvbnN0IGk9ZS5pbmRleE9mKCI+IixzKTtpZihpPT09LTEpYnJlYWs7bis9ZS5zbGljZShvKzEscykudHJpbSgpLGU9ZS5zbGljZSgwLHIpLnRyaW0oKStlLnNsaWNlKGkrMSl9cmV0dXJue2RlZnM6bixjb250ZW50OmV9fWZ1bmN0aW9uIG1BKGUsdCl7cmV0dXJuIGU/IjxkZWZzPiIrZSsiPC9kZWZzPiIrdDp0fWZ1bmN0aW9uIGhBKGUsdCxuKXtjb25zdCByPXBBKGUpO3JldHVybiBtQShyLmRlZnMsdCtyLmNvbnRlbnQrbil9Y29uc3QgZ0E9ZT0+ZT09PSJ1bnNldCJ8fGU9PT0idW5kZWZpbmVkInx8ZT09PSJub25lIjtmdW5jdGlvbiB5QShlLHQpe2NvbnN0IG49ey4uLkxzLC4uLmV9LHI9ey4uLkh2LC4uLnR9LG89e2xlZnQ6bi5sZWZ0LHRvcDpuLnRvcCx3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodH07bGV0IHM9bi5ib2R5O1tuLHJdLmZvckVhY2goeT0+e2NvbnN0IF89W10sdz15LmhGbGlwLHY9eS52RmxpcDtsZXQgaD15LnJvdGF0ZTt3P3Y/aCs9MjooXy5wdXNoKCJ0cmFuc2xhdGUoIisoby53aWR0aCtvLmxlZnQpLnRvU3RyaW5nKCkrIiAiKygwLW8udG9wKS50b1N0cmluZygpKyIpIiksXy5wdXNoKCJzY2FsZSgtMSAxKSIpLG8udG9wPW8ubGVmdD0wKTp2JiYoXy5wdXNoKCJ0cmFuc2xhdGUoIisoMC1vLmxlZnQpLnRvU3RyaW5nKCkrIiAiKyhvLmhlaWdodCtvLnRvcCkudG9TdHJpbmcoKSsiKSIpLF8ucHVzaCgic2NhbGUoMSAtMSkiKSxvLnRvcD1vLmxlZnQ9MCk7bGV0IGI7c3dpdGNoKGg8MCYmKGgtPU1hdGguZmxvb3IoaC80KSo0KSxoPWglNCxoKXtjYXNlIDE6Yj1vLmhlaWdodC8yK28udG9wLF8udW5zaGlmdCgicm90YXRlKDkwICIrYi50b1N0cmluZygpKyIgIitiLnRvU3RyaW5nKCkrIikiKTticmVhaztjYXNlIDI6Xy51bnNoaWZ0KCJyb3RhdGUoMTgwICIrKG8ud2lkdGgvMitvLmxlZnQpLnRvU3RyaW5nKCkrIiAiKyhvLmhlaWdodC8yK28udG9wKS50b1N0cmluZygpKyIpIik7YnJlYWs7Y2FzZSAzOmI9by53aWR0aC8yK28ubGVmdCxfLnVuc2hpZnQoInJvdGF0ZSgtOTAgIitiLnRvU3RyaW5nKCkrIiAiK2IudG9TdHJpbmcoKSsiKSIpO2JyZWFrfWglMj09PTEmJihvLmxlZnQhPT1vLnRvcCYmKGI9by5sZWZ0LG8ubGVmdD1vLnRvcCxvLnRvcD1iKSxvLndpZHRoIT09by5oZWlnaHQmJihiPW8ud2lkdGgsby53aWR0aD1vLmhlaWdodCxvLmhlaWdodD1iKSksXy5sZW5ndGgmJihzPWhBKHMsJzxnIHRyYW5zZm9ybT0iJytfLmpvaW4oIiAiKSsnIj4nLCI8L2c+IikpfSk7Y29uc3QgaT1yLndpZHRoLGE9ci5oZWlnaHQsbD1vLndpZHRoLHU9by5oZWlnaHQ7bGV0IGMsZjtpPT09bnVsbD8oZj1hPT09bnVsbD8iMWVtIjphPT09ImF1dG8iP3U6YSxjPW1tKGYsbC91KSk6KGM9aT09PSJhdXRvIj9sOmksZj1hPT09bnVsbD9tbShjLHUvbCk6YT09PSJhdXRvIj91OmEpO2NvbnN0IGQ9e30scD0oeSxfKT0+e2dBKF8pfHwoZFt5XT1fLnRvU3RyaW5nKCkpfTtwKCJ3aWR0aCIsYykscCgiaGVpZ2h0IixmKTtjb25zdCBtPVtvLmxlZnQsby50b3AsbCx1XTtyZXR1cm4gZC52aWV3Qm94PW0uam9pbigiICIpLHthdHRyaWJ1dGVzOmQsdmlld0JveDptLGJvZHk6c319Y29uc3QgdkE9L1xzaWQ9IihcUyspIi9nLGJBPSJJY29uaWZ5SWQiK0RhdGUubm93KCkudG9TdHJpbmcoMTYpKyhNYXRoLnJhbmRvbSgpKjE2Nzc3MjE2fDApLnRvU3RyaW5nKDE2KTtsZXQgd0E9MDtmdW5jdGlvbiBfQShlLHQ9YkEpe2NvbnN0IG49W107bGV0IHI7Zm9yKDtyPXZBLmV4ZWMoZSk7KW4ucHVzaChyWzFdKTtpZighbi5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbz0ic3VmZml4IisoTWF0aC5yYW5kb20oKSoxNjc3NzIxNnxEYXRlLm5vdygpKS50b1N0cmluZygxNik7cmV0dXJuIG4uZm9yRWFjaChzPT57Y29uc3QgaT10eXBlb2YgdD09ImZ1bmN0aW9uIj90KHMpOnQrKHdBKyspLnRvU3RyaW5nKCksYT1zLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIik7ZT1lLnJlcGxhY2UobmV3IFJlZ0V4cCgnKFsjOyJdKSgnK2ErJykoWyIpXXxcXC5bYS16XSknLCJnIiksIiQxIitpK28rIiQzIil9KSxlPWUucmVwbGFjZShuZXcgUmVnRXhwKG8sImciKSwiIiksZX1jb25zdCBJdT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIFd2KGUsdCl7SXVbZV09dH1mdW5jdGlvbiBSdShlKXtyZXR1cm4gSXVbZV18fEl1WyIiXX1mdW5jdGlvbiBGZihlKXtsZXQgdDtpZih0eXBlb2YgZS5yZXNvdXJjZXM9PSJzdHJpbmciKXQ9W2UucmVzb3VyY2VzXTtlbHNlIGlmKHQ9ZS5yZXNvdXJjZXMsISh0IGluc3RhbmNlb2YgQXJyYXkpfHwhdC5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJue3Jlc291cmNlczp0LHBhdGg6ZS5wYXRofHwiLyIsbWF4VVJMOmUubWF4VVJMfHw1MDAscm90YXRlOmUucm90YXRlfHw3NTAsdGltZW91dDplLnRpbWVvdXR8fDVlMyxyYW5kb206ZS5yYW5kb209PT0hMCxpbmRleDplLmluZGV4fHwwLGRhdGFBZnRlclRpbWVvdXQ6ZS5kYXRhQWZ0ZXJUaW1lb3V0IT09ITF9fWNvbnN0IFJsPU9iamVjdC5jcmVhdGUobnVsbCksSHM9WyJodHRwczovL2FwaS5zaW1wbGVzdmcuY29tIiwiaHR0cHM6Ly9hcGkudW5pc3ZnLmNvbSJdLFBhPVtdO2Zvcig7SHMubGVuZ3RoPjA7KUhzLmxlbmd0aD09PTF8fE1hdGgucmFuZG9tKCk+LjU/UGEucHVzaChIcy5zaGlmdCgpKTpQYS5wdXNoKEhzLnBvcCgpKTtSbFsiIl09RmYoe3Jlc291cmNlczpbImh0dHBzOi8vYXBpLmljb25pZnkuZGVzaWduIl0uY29uY2F0KFBhKX0pO2Z1bmN0aW9uIEd2KGUsdCl7Y29uc3Qgbj1GZih0KTtyZXR1cm4gbj09PW51bGw/ITE6KFJsW2VdPW4sITApfWZ1bmN0aW9uIE5sKGUpe3JldHVybiBSbFtlXX1mdW5jdGlvbiB4QSgpe3JldHVybiBPYmplY3Qua2V5cyhSbCl9Y29uc3QgU0E9KCk9PntsZXQgZTt0cnl7aWYoZT1mZXRjaCx0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gZX1jYXRjaHt9fTtsZXQgWGE9U0EoKTtmdW5jdGlvbiBrQShlKXtYYT1lfWZ1bmN0aW9uIEVBKCl7cmV0dXJuIFhhfWZ1bmN0aW9uIFRBKGUsdCl7Y29uc3Qgbj1ObChlKTtpZighbilyZXR1cm4gMDtsZXQgcjtpZighbi5tYXhVUkwpcj0wO2Vsc2V7bGV0IG89MDtuLnJlc291cmNlcy5mb3JFYWNoKGk9PntvPU1hdGgubWF4KG8saS5sZW5ndGgpfSk7Y29uc3Qgcz10KyIuanNvbj9pY29ucz0iO3I9bi5tYXhVUkwtby1uLnBhdGgubGVuZ3RoLXMubGVuZ3RofXJldHVybiByfWZ1bmN0aW9uIENBKGUpe3JldHVybiBlPT09NDA0fWNvbnN0IEFBPShlLHQsbik9Pntjb25zdCByPVtdLG89VEEoZSx0KSxzPSJpY29ucyI7bGV0IGk9e3R5cGU6cyxwcm92aWRlcjplLHByZWZpeDp0LGljb25zOltdfSxhPTA7cmV0dXJuIG4uZm9yRWFjaCgobCx1KT0+e2ErPWwubGVuZ3RoKzEsYT49byYmdT4wJiYoci5wdXNoKGkpLGk9e3R5cGU6cyxwcm92aWRlcjplLHByZWZpeDp0LGljb25zOltdfSxhPWwubGVuZ3RoKSxpLmljb25zLnB1c2gobCl9KSxyLnB1c2goaSkscn07ZnVuY3Rpb24gT0EoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXtjb25zdCB0PU5sKGUpO2lmKHQpcmV0dXJuIHQucGF0aH1yZXR1cm4iLyJ9Y29uc3QgUEE9KGUsdCxuKT0+e2lmKCFYYSl7bigiYWJvcnQiLDQyNCk7cmV0dXJufWxldCByPU9BKHQucHJvdmlkZXIpO3N3aXRjaCh0LnR5cGUpe2Nhc2UiaWNvbnMiOntjb25zdCBzPXQucHJlZml4LGE9dC5pY29ucy5qb2luKCIsIiksbD1uZXcgVVJMU2VhcmNoUGFyYW1zKHtpY29uczphfSk7cis9cysiLmpzb24/IitsLnRvU3RyaW5nKCk7YnJlYWt9Y2FzZSJjdXN0b20iOntjb25zdCBzPXQudXJpO3IrPXMuc2xpY2UoMCwxKT09PSIvIj9zLnNsaWNlKDEpOnM7YnJlYWt9ZGVmYXVsdDpuKCJhYm9ydCIsNDAwKTtyZXR1cm59bGV0IG89NTAzO1hhKGUrcikudGhlbihzPT57Y29uc3QgaT1zLnN0YXR1cztpZihpIT09MjAwKXtzZXRUaW1lb3V0KCgpPT57bihDQShpKT8iYWJvcnQiOiJuZXh0IixpKX0pO3JldHVybn1yZXR1cm4gbz01MDEscy5qc29uKCl9KS50aGVuKHM9PntpZih0eXBlb2YgcyE9Im9iamVjdCJ8fHM9PT1udWxsKXtzZXRUaW1lb3V0KCgpPT57cz09PTQwND9uKCJhYm9ydCIscyk6bigibmV4dCIsbyl9KTtyZXR1cm59c2V0VGltZW91dCgoKT0+e24oInN1Y2Nlc3MiLHMpfSl9KS5jYXRjaCgoKT0+e24oIm5leHQiLG8pfSl9LElBPXtwcmVwYXJlOkFBLHNlbmQ6UEF9O2Z1bmN0aW9uIFJBKGUpe2NvbnN0IHQ9e2xvYWRlZDpbXSxtaXNzaW5nOltdLHBlbmRpbmc6W119LG49T2JqZWN0LmNyZWF0ZShudWxsKTtlLnNvcnQoKG8scyk9Pm8ucHJvdmlkZXIhPT1zLnByb3ZpZGVyP28ucHJvdmlkZXIubG9jYWxlQ29tcGFyZShzLnByb3ZpZGVyKTpvLnByZWZpeCE9PXMucHJlZml4P28ucHJlZml4LmxvY2FsZUNvbXBhcmUocy5wcmVmaXgpOm8ubmFtZS5sb2NhbGVDb21wYXJlKHMubmFtZSkpO2xldCByPXtwcm92aWRlcjoiIixwcmVmaXg6IiIsbmFtZToiIn07cmV0dXJuIGUuZm9yRWFjaChvPT57aWYoci5uYW1lPT09by5uYW1lJiZyLnByZWZpeD09PW8ucHJlZml4JiZyLnByb3ZpZGVyPT09by5wcm92aWRlcilyZXR1cm47cj1vO2NvbnN0IHM9by5wcm92aWRlcixpPW8ucHJlZml4LGE9by5uYW1lLGw9bltzXXx8KG5bc109T2JqZWN0LmNyZWF0ZShudWxsKSksdT1sW2ldfHwobFtpXT16byhzLGkpKTtsZXQgYzthIGluIHUuaWNvbnM/Yz10LmxvYWRlZDppPT09IiJ8fHUubWlzc2luZy5oYXMoYSk/Yz10Lm1pc3Npbmc6Yz10LnBlbmRpbmc7Y29uc3QgZj17cHJvdmlkZXI6cyxwcmVmaXg6aSxuYW1lOmF9O2MucHVzaChmKX0pLHR9ZnVuY3Rpb24gS3YoZSx0KXtlLmZvckVhY2gobj0+e2NvbnN0IHI9bi5sb2FkZXJDYWxsYmFja3M7ciYmKG4ubG9hZGVyQ2FsbGJhY2tzPXIuZmlsdGVyKG89Pm8uaWQhPT10KSl9KX1mdW5jdGlvbiBOQShlKXtlLnBlbmRpbmdDYWxsYmFja3NGbGFnfHwoZS5wZW5kaW5nQ2FsbGJhY2tzRmxhZz0hMCxzZXRUaW1lb3V0KCgpPT57ZS5wZW5kaW5nQ2FsbGJhY2tzRmxhZz0hMTtjb25zdCB0PWUubG9hZGVyQ2FsbGJhY2tzP2UubG9hZGVyQ2FsbGJhY2tzLnNsaWNlKDApOltdO2lmKCF0Lmxlbmd0aClyZXR1cm47bGV0IG49ITE7Y29uc3Qgcj1lLnByb3ZpZGVyLG89ZS5wcmVmaXg7dC5mb3JFYWNoKHM9Pntjb25zdCBpPXMuaWNvbnMsYT1pLnBlbmRpbmcubGVuZ3RoO2kucGVuZGluZz1pLnBlbmRpbmcuZmlsdGVyKGw9PntpZihsLnByZWZpeCE9PW8pcmV0dXJuITA7Y29uc3QgdT1sLm5hbWU7aWYoZS5pY29uc1t1XSlpLmxvYWRlZC5wdXNoKHtwcm92aWRlcjpyLHByZWZpeDpvLG5hbWU6dX0pO2Vsc2UgaWYoZS5taXNzaW5nLmhhcyh1KSlpLm1pc3NpbmcucHVzaCh7cHJvdmlkZXI6cixwcmVmaXg6byxuYW1lOnV9KTtlbHNlIHJldHVybiBuPSEwLCEwO3JldHVybiExfSksaS5wZW5kaW5nLmxlbmd0aCE9PWEmJihufHxLdihbZV0scy5pZCkscy5jYWxsYmFjayhpLmxvYWRlZC5zbGljZSgwKSxpLm1pc3Npbmcuc2xpY2UoMCksaS5wZW5kaW5nLnNsaWNlKDApLHMuYWJvcnQpKX0pfSkpfWxldCBEQT0wO2Z1bmN0aW9uIExBKGUsdCxuKXtjb25zdCByPURBKyssbz1Ldi5iaW5kKG51bGwsbixyKTtpZighdC5wZW5kaW5nLmxlbmd0aClyZXR1cm4gbztjb25zdCBzPXtpZDpyLGljb25zOnQsY2FsbGJhY2s6ZSxhYm9ydDpvfTtyZXR1cm4gbi5mb3JFYWNoKGk9PnsoaS5sb2FkZXJDYWxsYmFja3N8fChpLmxvYWRlckNhbGxiYWNrcz1bXSkpLnB1c2gocyl9KSxvfWZ1bmN0aW9uICRBKGUsdD0hMCxuPSExKXtjb25zdCByPVtdO3JldHVybiBlLmZvckVhY2gobz0+e2NvbnN0IHM9dHlwZW9mIG89PSJzdHJpbmciP0ZpKG8sdCxuKTpvO3MmJnIucHVzaChzKX0pLHJ9dmFyIE1BPXtyZXNvdXJjZXM6W10saW5kZXg6MCx0aW1lb3V0OjJlMyxyb3RhdGU6NzUwLHJhbmRvbTohMSxkYXRhQWZ0ZXJUaW1lb3V0OiExfTtmdW5jdGlvbiBCQShlLHQsbixyKXtjb25zdCBvPWUucmVzb3VyY2VzLmxlbmd0aCxzPWUucmFuZG9tP01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpvKTplLmluZGV4O2xldCBpO2lmKGUucmFuZG9tKXtsZXQgUz1lLnJlc291cmNlcy5zbGljZSgwKTtmb3IoaT1bXTtTLmxlbmd0aD4xOyl7Y29uc3Qgaz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqUy5sZW5ndGgpO2kucHVzaChTW2tdKSxTPVMuc2xpY2UoMCxrKS5jb25jYXQoUy5zbGljZShrKzEpKX1pPWkuY29uY2F0KFMpfWVsc2UgaT1lLnJlc291cmNlcy5zbGljZShzKS5jb25jYXQoZS5yZXNvdXJjZXMuc2xpY2UoMCxzKSk7Y29uc3QgYT1EYXRlLm5vdygpO2xldCBsPSJwZW5kaW5nIix1PTAsYyxmPW51bGwsZD1bXSxwPVtdO3R5cGVvZiByPT0iZnVuY3Rpb24iJiZwLnB1c2gocik7ZnVuY3Rpb24gbSgpe2YmJihjbGVhclRpbWVvdXQoZiksZj1udWxsKX1mdW5jdGlvbiB5KCl7bD09PSJwZW5kaW5nIiYmKGw9ImFib3J0ZWQiKSxtKCksZC5mb3JFYWNoKFM9PntTLnN0YXR1cz09PSJwZW5kaW5nIiYmKFMuc3RhdHVzPSJhYm9ydGVkIil9KSxkPVtdfWZ1bmN0aW9uIF8oUyxrKXtrJiYocD1bXSksdHlwZW9mIFM9PSJmdW5jdGlvbiImJnAucHVzaChTKX1mdW5jdGlvbiB3KCl7cmV0dXJue3N0YXJ0VGltZTphLHBheWxvYWQ6dCxzdGF0dXM6bCxxdWVyaWVzU2VudDp1LHF1ZXJpZXNQZW5kaW5nOmQubGVuZ3RoLHN1YnNjcmliZTpfLGFib3J0Onl9fWZ1bmN0aW9uIHYoKXtsPSJmYWlsZWQiLHAuZm9yRWFjaChTPT57Uyh2b2lkIDAsYyl9KX1mdW5jdGlvbiBoKCl7ZC5mb3JFYWNoKFM9PntTLnN0YXR1cz09PSJwZW5kaW5nIiYmKFMuc3RhdHVzPSJhYm9ydGVkIil9KSxkPVtdfWZ1bmN0aW9uIGIoUyxrLFQpe2NvbnN0IEM9ayE9PSJzdWNjZXNzIjtzd2l0Y2goZD1kLmZpbHRlcihQPT5QIT09UyksbCl7Y2FzZSJwZW5kaW5nIjpicmVhaztjYXNlImZhaWxlZCI6aWYoQ3x8IWUuZGF0YUFmdGVyVGltZW91dClyZXR1cm47YnJlYWs7ZGVmYXVsdDpyZXR1cm59aWYoaz09PSJhYm9ydCIpe2M9VCx2KCk7cmV0dXJufWlmKEMpe2M9VCxkLmxlbmd0aHx8KGkubGVuZ3RoP3goKTp2KCkpO3JldHVybn1pZihtKCksaCgpLCFlLnJhbmRvbSl7Y29uc3QgUD1lLnJlc291cmNlcy5pbmRleE9mKFMucmVzb3VyY2UpO1AhPT0tMSYmUCE9PWUuaW5kZXgmJihlLmluZGV4PVApfWw9ImNvbXBsZXRlZCIscC5mb3JFYWNoKFA9PntQKFQpfSl9ZnVuY3Rpb24geCgpe2lmKGwhPT0icGVuZGluZyIpcmV0dXJuO20oKTtjb25zdCBTPWkuc2hpZnQoKTtpZihTPT09dm9pZCAwKXtpZihkLmxlbmd0aCl7Zj1zZXRUaW1lb3V0KCgpPT57bSgpLGw9PT0icGVuZGluZyImJihoKCksdigpKX0sZS50aW1lb3V0KTtyZXR1cm59digpO3JldHVybn1jb25zdCBrPXtzdGF0dXM6InBlbmRpbmciLHJlc291cmNlOlMsY2FsbGJhY2s6KFQsQyk9PntiKGssVCxDKX19O2QucHVzaChrKSx1KyssZj1zZXRUaW1lb3V0KHgsZS5yb3RhdGUpLG4oUyx0LGsuY2FsbGJhY2spfXJldHVybiBzZXRUaW1lb3V0KHgpLHd9ZnVuY3Rpb24gUXYoZSl7Y29uc3QgdD17Li4uTUEsLi4uZX07bGV0IG49W107ZnVuY3Rpb24gcigpe249bi5maWx0ZXIoYT0+YSgpLnN0YXR1cz09PSJwZW5kaW5nIil9ZnVuY3Rpb24gbyhhLGwsdSl7Y29uc3QgYz1CQSh0LGEsbCwoZixkKT0+e3IoKSx1JiZ1KGYsZCl9KTtyZXR1cm4gbi5wdXNoKGMpLGN9ZnVuY3Rpb24gcyhhKXtyZXR1cm4gbi5maW5kKGw9PmEobCkpfHxudWxsfXJldHVybntxdWVyeTpvLGZpbmQ6cyxzZXRJbmRleDphPT57dC5pbmRleD1hfSxnZXRJbmRleDooKT0+dC5pbmRleCxjbGVhbnVwOnJ9fWZ1bmN0aW9uIGhtKCl7fWNvbnN0IFJjPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gcUEoZSl7aWYoIVJjW2VdKXtjb25zdCB0PU5sKGUpO2lmKCF0KXJldHVybjtjb25zdCBuPVF2KHQpLHI9e2NvbmZpZzp0LHJlZHVuZGFuY3k6bn07UmNbZV09cn1yZXR1cm4gUmNbZV19ZnVuY3Rpb24gWXYoZSx0LG4pe2xldCByLG87aWYodHlwZW9mIGU9PSJzdHJpbmciKXtjb25zdCBzPVJ1KGUpO2lmKCFzKXJldHVybiBuKHZvaWQgMCw0MjQpLGhtO289cy5zZW5kO2NvbnN0IGk9cUEoZSk7aSYmKHI9aS5yZWR1bmRhbmN5KX1lbHNle2NvbnN0IHM9RmYoZSk7aWYocyl7cj1RdihzKTtjb25zdCBpPWUucmVzb3VyY2VzP2UucmVzb3VyY2VzWzBdOiIiLGE9UnUoaSk7YSYmKG89YS5zZW5kKX19cmV0dXJuIXJ8fCFvPyhuKHZvaWQgMCw0MjQpLGhtKTpyLnF1ZXJ5KHQsbyxuKSgpLmFib3J0fWZ1bmN0aW9uIGdtKCl7fWZ1bmN0aW9uIEZBKGUpe2UuaWNvbnNMb2FkZXJGbGFnfHwoZS5pY29uc0xvYWRlckZsYWc9ITAsc2V0VGltZW91dCgoKT0+e2UuaWNvbnNMb2FkZXJGbGFnPSExLE5BKGUpfSkpfWZ1bmN0aW9uIHpBKGUpe2NvbnN0IHQ9W10sbj1bXTtyZXR1cm4gZS5mb3JFYWNoKHI9Pnsoci5tYXRjaChCdik/dDpuKS5wdXNoKHIpfSkse3ZhbGlkOnQsaW52YWxpZDpufX1mdW5jdGlvbiBXcyhlLHQsbil7ZnVuY3Rpb24gcigpe2NvbnN0IG89ZS5wZW5kaW5nSWNvbnM7dC5mb3JFYWNoKHM9PntvJiZvLmRlbGV0ZShzKSxlLmljb25zW3NdfHxlLm1pc3NpbmcuYWRkKHMpfSl9aWYobiYmdHlwZW9mIG49PSJvYmplY3QiKXRyeXtpZighanYoZSxuKS5sZW5ndGgpe3IoKTtyZXR1cm59fWNhdGNoe31yKCksRkEoZSl9ZnVuY3Rpb24geW0oZSx0KXtlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4obj0+e3Qobil9KS5jYXRjaCgoKT0+e3QobnVsbCl9KTp0KGUpfWZ1bmN0aW9uIGpBKGUsdCl7ZS5pY29uc1RvTG9hZD9lLmljb25zVG9Mb2FkPWUuaWNvbnNUb0xvYWQuY29uY2F0KHQpLnNvcnQoKTplLmljb25zVG9Mb2FkPXQsZS5pY29uc1F1ZXVlRmxhZ3x8KGUuaWNvbnNRdWV1ZUZsYWc9ITAsc2V0VGltZW91dCgoKT0+e2UuaWNvbnNRdWV1ZUZsYWc9ITE7Y29uc3R7cHJvdmlkZXI6bixwcmVmaXg6cn09ZSxvPWUuaWNvbnNUb0xvYWQ7aWYoZGVsZXRlIGUuaWNvbnNUb0xvYWQsIW98fCFvLmxlbmd0aClyZXR1cm47Y29uc3Qgcz1lLmxvYWRJY29uO2lmKGUubG9hZEljb25zJiYoby5sZW5ndGg+MXx8IXMpKXt5bShlLmxvYWRJY29ucyhvLHIsbiksYz0+e1dzKGUsbyxjKX0pO3JldHVybn1pZihzKXtvLmZvckVhY2goYz0+e2NvbnN0IGY9cyhjLHIsbik7eW0oZixkPT57Y29uc3QgcD1kP3twcmVmaXg6cixpY29uczp7W2NdOmR9fTpudWxsO1dzKGUsW2NdLHApfSl9KTtyZXR1cm59Y29uc3R7dmFsaWQ6aSxpbnZhbGlkOmF9PXpBKG8pO2lmKGEubGVuZ3RoJiZXcyhlLGEsbnVsbCksIWkubGVuZ3RoKXJldHVybjtjb25zdCBsPXIubWF0Y2goQnYpP1J1KG4pOm51bGw7aWYoIWwpe1dzKGUsaSxudWxsKTtyZXR1cm59bC5wcmVwYXJlKG4scixpKS5mb3JFYWNoKGM9PntZdihuLGMsZj0+e1dzKGUsYy5pY29ucyxmKX0pfSl9KSl9Y29uc3QgSnY9KGUsdCk9Pntjb25zdCBuPSRBKGUsITAsVnYoKSkscj1SQShuKTtpZighci5wZW5kaW5nLmxlbmd0aCl7bGV0IGw9ITA7cmV0dXJuIHQmJnNldFRpbWVvdXQoKCk9PntsJiZ0KHIubG9hZGVkLHIubWlzc2luZyxyLnBlbmRpbmcsZ20pfSksKCk9PntsPSExfX1jb25zdCBvPU9iamVjdC5jcmVhdGUobnVsbCkscz1bXTtsZXQgaSxhO3JldHVybiByLnBlbmRpbmcuZm9yRWFjaChsPT57Y29uc3R7cHJvdmlkZXI6dSxwcmVmaXg6Y309bDtpZihjPT09YSYmdT09PWkpcmV0dXJuO2k9dSxhPWMscy5wdXNoKHpvKHUsYykpO2NvbnN0IGY9b1t1XXx8KG9bdV09T2JqZWN0LmNyZWF0ZShudWxsKSk7ZltjXXx8KGZbY109W10pfSksci5wZW5kaW5nLmZvckVhY2gobD0+e2NvbnN0e3Byb3ZpZGVyOnUscHJlZml4OmMsbmFtZTpmfT1sLGQ9em8odSxjKSxwPWQucGVuZGluZ0ljb25zfHwoZC5wZW5kaW5nSWNvbnM9bmV3IFNldCk7cC5oYXMoZil8fChwLmFkZChmKSxvW3VdW2NdLnB1c2goZikpfSkscy5mb3JFYWNoKGw9Pntjb25zdCB1PW9bbC5wcm92aWRlcl1bbC5wcmVmaXhdO3UubGVuZ3RoJiZqQShsLHUpfSksdD9MQSh0LHIscyk6Z219LFZBPWU9Pm5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3Qgcj10eXBlb2YgZT09InN0cmluZyI/RmkoZSwhMCk6ZTtpZighcil7bihlKTtyZXR1cm59SnYoW3J8fGVdLG89PntpZihvLmxlbmd0aCYmcil7Y29uc3Qgcz1CZihyKTtpZihzKXt0KHsuLi5McywuLi5zfSk7cmV0dXJufX1uKGUpfSl9KTtmdW5jdGlvbiBVQShlLHQsbil7em8oIiIsdCkubG9hZEljb25zPWV9ZnVuY3Rpb24gSEEoZSx0KXtjb25zdCBuPXsuLi5lfTtmb3IoY29uc3QgciBpbiB0KXtjb25zdCBvPXRbcl0scz10eXBlb2YgbztyIGluIFV2PyhvPT09bnVsbHx8byYmKHM9PT0ic3RyaW5nInx8cz09PSJudW1iZXIiKSkmJihuW3JdPW8pOnM9PT10eXBlb2YgbltyXSYmKG5bcl09cj09PSJyb3RhdGUiP28lNDpvKX1yZXR1cm4gbn1jb25zdCBXQT0vW1xzLF0rLztmdW5jdGlvbiBHQShlLHQpe3Quc3BsaXQoV0EpLmZvckVhY2gobj0+e3N3aXRjaChuLnRyaW0oKSl7Y2FzZSJob3Jpem9udGFsIjplLmhGbGlwPSEwO2JyZWFrO2Nhc2UidmVydGljYWwiOmUudkZsaXA9ITA7YnJlYWt9fSl9ZnVuY3Rpb24gS0EoZSx0PTApe2NvbnN0IG49ZS5yZXBsYWNlKC9eLT9bMC05Ll0qLywiIik7ZnVuY3Rpb24gcihvKXtmb3IoO288MDspbys9NDtyZXR1cm4gbyU0fWlmKG49PT0iIil7Y29uc3Qgbz1wYXJzZUludChlKTtyZXR1cm4gaXNOYU4obyk/MDpyKG8pfWVsc2UgaWYobiE9PWUpe2xldCBvPTA7c3dpdGNoKG4pe2Nhc2UiJSI6bz0yNTticmVhaztjYXNlImRlZyI6bz05MH1pZihvKXtsZXQgcz1wYXJzZUZsb2F0KGUuc2xpY2UoMCxlLmxlbmd0aC1uLmxlbmd0aCkpO3JldHVybiBpc05hTihzKT8wOihzPXMvbyxzJTE9PT0wP3Iocyk6MCl9fXJldHVybiB0fWZ1bmN0aW9uIFFBKGUsdCl7bGV0IG49ZS5pbmRleE9mKCJ4bGluazoiKT09PS0xPyIiOicgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiJztmb3IoY29uc3QgciBpbiB0KW4rPSIgIityKyc9IicrdFtyXSsnIic7cmV0dXJuJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIicrbisiPiIrZSsiPC9zdmc+In1mdW5jdGlvbiBZQShlKXtyZXR1cm4gZS5yZXBsYWNlKC8iL2csIiciKS5yZXBsYWNlKC8lL2csIiUyNSIpLnJlcGxhY2UoLyMvZywiJTIzIikucmVwbGFjZSgvPC9nLCIlM0MiKS5yZXBsYWNlKC8+L2csIiUzRSIpLnJlcGxhY2UoL1xzKy9nLCIgIil9ZnVuY3Rpb24gSkEoZSl7cmV0dXJuImRhdGE6aW1hZ2Uvc3ZnK3htbCwiK1lBKGUpfWZ1bmN0aW9uIFhBKGUpe3JldHVybid1cmwoIicrSkEoZSkrJyIpJ31jb25zdCB2bT17Li4uSHYsaW5saW5lOiExfSxaQT17eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwieG1sbnM6eGxpbmsiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiYXJpYS1oaWRkZW4iOiEwLHJvbGU6ImltZyJ9LGVPPXtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxOdT17YmFja2dyb3VuZENvbG9yOiJjdXJyZW50Q29sb3IifSxYdj17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCJ9LGJtPXtJbWFnZToidmFyKC0tc3ZnKSIsUmVwZWF0OiJuby1yZXBlYXQiLFNpemU6IjEwMCUgMTAwJSJ9LHdtPXt3ZWJraXRNYXNrOk51LG1hc2s6TnUsYmFja2dyb3VuZDpYdn07Zm9yKGNvbnN0IGUgaW4gd20pe2NvbnN0IHQ9d21bZV07Zm9yKGNvbnN0IG4gaW4gYm0pdFtlK25dPWJtW25dfWNvbnN0IElhPXt9O1siaG9yaXpvbnRhbCIsInZlcnRpY2FsIl0uZm9yRWFjaChlPT57Y29uc3QgdD1lLnNsaWNlKDAsMSkrIkZsaXAiO0lhW2UrIi1mbGlwIl09dCxJYVtlLnNsaWNlKDAsMSkrIi1mbGlwIl09dCxJYVtlKyJGbGlwIl09dH0pO2Z1bmN0aW9uIF9tKGUpe3JldHVybiBlKyhlLm1hdGNoKC9eWy0wLTkuXSskLyk/InB4IjoiIil9Y29uc3QgeG09KGUsdCk9Pntjb25zdCBuPUhBKHZtLHQpLHI9ey4uLlpBfSxvPXQubW9kZXx8InN2ZyIscz17fSxpPXQuc3R5bGUsYT10eXBlb2YgaT09Im9iamVjdCImJiEoaSBpbnN0YW5jZW9mIEFycmF5KT9pOnt9O2ZvcihsZXQgeSBpbiB0KXtjb25zdCBfPXRbeV07aWYoXyE9PXZvaWQgMClzd2l0Y2goeSl7Y2FzZSJpY29uIjpjYXNlInN0eWxlIjpjYXNlIm9uTG9hZCI6Y2FzZSJtb2RlIjpjYXNlInNzciI6YnJlYWs7Y2FzZSJpbmxpbmUiOmNhc2UiaEZsaXAiOmNhc2UidkZsaXAiOm5beV09Xz09PSEwfHxfPT09InRydWUifHxfPT09MTticmVhaztjYXNlImZsaXAiOnR5cGVvZiBfPT0ic3RyaW5nIiYmR0EobixfKTticmVhaztjYXNlImNvbG9yIjpzLmNvbG9yPV87YnJlYWs7Y2FzZSJyb3RhdGUiOnR5cGVvZiBfPT0ic3RyaW5nIj9uW3ldPUtBKF8pOnR5cGVvZiBfPT0ibnVtYmVyIiYmKG5beV09Xyk7YnJlYWs7Y2FzZSJhcmlhSGlkZGVuIjpjYXNlImFyaWEtaGlkZGVuIjpfIT09ITAmJl8hPT0idHJ1ZSImJmRlbGV0ZSByWyJhcmlhLWhpZGRlbiJdO2JyZWFrO2RlZmF1bHQ6e2NvbnN0IHc9SWFbeV07dz8oXz09PSEwfHxfPT09InRydWUifHxfPT09MSkmJihuW3ddPSEwKTp2bVt5XT09PXZvaWQgMCYmKHJbeV09Xyl9fX1jb25zdCBsPXlBKGUsbiksdT1sLmF0dHJpYnV0ZXM7aWYobi5pbmxpbmUmJihzLnZlcnRpY2FsQWxpZ249Ii0wLjEyNWVtIiksbz09PSJzdmciKXtyLnN0eWxlPXsuLi5zLC4uLmF9LE9iamVjdC5hc3NpZ24ocix1KTtsZXQgeT0wLF89dC5pZDtyZXR1cm4gdHlwZW9mIF89PSJzdHJpbmciJiYoXz1fLnJlcGxhY2UoLy0vZywiXyIpKSxyLmlubmVySFRNTD1fQShsLmJvZHksXz8oKT0+XysiSUQiK3krKzoiaWNvbmlmeVZ1ZSIpLEZlKCJzdmciLHIpfWNvbnN0e2JvZHk6Yyx3aWR0aDpmLGhlaWdodDpkfT1lLHA9bz09PSJtYXNrInx8KG89PT0iYmciPyExOmMuaW5kZXhPZigiY3VycmVudENvbG9yIikhPT0tMSksbT1RQShjLHsuLi51LHdpZHRoOmYrIiIsaGVpZ2h0OmQrIiJ9KTtyZXR1cm4gci5zdHlsZT17Li4ucywiLS1zdmciOlhBKG0pLHdpZHRoOl9tKHUud2lkdGgpLGhlaWdodDpfbSh1LmhlaWdodCksLi4uZU8sLi4ucD9OdTpYdiwuLi5hfSxGZSgic3BhbiIscil9O1Z2KCEwKTtXdigiIixJQSk7aWYodHlwZW9mIGRvY3VtZW50PCJ1IiYmdHlwZW9mIHdpbmRvdzwidSIpe2NvbnN0IGU9d2luZG93O2lmKGUuSWNvbmlmeVByZWxvYWQhPT12b2lkIDApe2NvbnN0IHQ9ZS5JY29uaWZ5UHJlbG9hZCxuPSJJbnZhbGlkIEljb25pZnlQcmVsb2FkIHN5bnRheC4iO3R5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwmJih0IGluc3RhbmNlb2YgQXJyYXk/dDpbdF0pLmZvckVhY2gocj0+e3RyeXt0eXBlb2YgciE9Im9iamVjdCJ8fHI9PT1udWxsfHxyIGluc3RhbmNlb2YgQXJyYXl8fHR5cGVvZiByLmljb25zIT0ib2JqZWN0Inx8dHlwZW9mIHIucHJlZml4IT0ic3RyaW5nInx8dUEocil9Y2F0Y2h7fX0pfWlmKGUuSWNvbmlmeVByb3ZpZGVycyE9PXZvaWQgMCl7Y29uc3QgdD1lLkljb25pZnlQcm92aWRlcnM7aWYodHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbClmb3IobGV0IG4gaW4gdCl7Y29uc3Qgcj0iSWNvbmlmeVByb3ZpZGVyc1siK24rIl0gaXMgaW52YWxpZC4iO3RyeXtjb25zdCBvPXRbbl07aWYodHlwZW9mIG8hPSJvYmplY3QifHwhb3x8by5yZXNvdXJjZXM9PT12b2lkIDApY29udGludWU7R3YobixvKX1jYXRjaHt9fX19Y29uc3QgdE89ey4uLkxzLGJvZHk6IiJ9LG5PPXNlKChlLHtlbWl0OnR9KT0+e2NvbnN0IG49RyhudWxsKTtmdW5jdGlvbiByKCl7bi52YWx1ZSYmKG4udmFsdWUuYWJvcnQ/LigpLG4udmFsdWU9bnVsbCl9Y29uc3Qgbz1HKCEhZS5zc3IpLHM9RygiIiksaT1PZShudWxsKTtmdW5jdGlvbiBhKCl7Y29uc3QgdT1lLmljb247aWYodHlwZW9mIHU9PSJvYmplY3QiJiZ1IT09bnVsbCYmdHlwZW9mIHUuYm9keT09InN0cmluZyIpcmV0dXJuIHMudmFsdWU9IiIse2RhdGE6dX07bGV0IGM7aWYodHlwZW9mIHUhPSJzdHJpbmcifHwoYz1GaSh1LCExLCEwKSk9PT1udWxsKXJldHVybiBudWxsO2xldCBmPUJmKGMpO2lmKCFmKXtjb25zdCBtPW4udmFsdWU7cmV0dXJuKCFtfHxtLm5hbWUhPT11KSYmKGY9PT1udWxsP24udmFsdWU9e25hbWU6dX06bi52YWx1ZT17bmFtZTp1LGFib3J0Okp2KFtjXSxsKX0pLG51bGx9cigpLHMudmFsdWUhPT11JiYocy52YWx1ZT11LGl0KCgpPT57dCgibG9hZCIsdSl9KSk7Y29uc3QgZD1lLmN1c3RvbWlzZTtpZihkKXtmPU9iamVjdC5hc3NpZ24oe30sZik7Y29uc3QgbT1kKGYuYm9keSxjLm5hbWUsYy5wcmVmaXgsYy5wcm92aWRlcik7dHlwZW9mIG09PSJzdHJpbmciJiYoZi5ib2R5PW0pfWNvbnN0IHA9WyJpY29uaWZ5Il07cmV0dXJuIGMucHJlZml4IT09IiImJnAucHVzaCgiaWNvbmlmeS0tIitjLnByZWZpeCksYy5wcm92aWRlciE9PSIiJiZwLnB1c2goImljb25pZnktLSIrYy5wcm92aWRlcikse2RhdGE6ZixjbGFzc2VzOnB9fWZ1bmN0aW9uIGwoKXtjb25zdCB1PWEoKTt1P3UuZGF0YSE9PWkudmFsdWU/LmRhdGEmJihpLnZhbHVlPXUpOmkudmFsdWU9bnVsbH1yZXR1cm4gby52YWx1ZT9sKCk6b3QoKCk9PntvLnZhbHVlPSEwLGwoKX0pLFBlKCgpPT5lLmljb24sbCkscHIociksKCk9Pntjb25zdCB1PWkudmFsdWU7aWYoIXUpcmV0dXJuIHhtKHRPLGUpO2xldCBjPWU7cmV0dXJuIHUuY2xhc3NlcyYmKGM9ey4uLmUsY2xhc3M6dS5jbGFzc2VzLmpvaW4oIiAiKX0pLHhtKHsuLi5McywuLi51LmRhdGF9LGMpfX0se3Byb3BzOlsiaWNvbiIsIm1vZGUiLCJzc3IiLCJ3aWR0aCIsImhlaWdodCIsInN0eWxlIiwiY29sb3IiLCJpbmxpbmUiLCJyb3RhdGUiLCJoRmxpcCIsImhvcml6b250YWxGbGlwIiwidkZsaXAiLCJ2ZXJ0aWNhbEZsaXAiLCJmbGlwIiwiaWQiLCJhcmlhSGlkZGVuIiwiY3VzdG9taXNlIiwidGl0bGUiXSxlbWl0czpbImxvYWQiXX0pLFNtPXtnZXRBUElDb25maWc6Tmwsc2V0QVBJTW9kdWxlOld2LHNlbmRBUElRdWVyeTpZdixzZXRGZXRjaDprQSxnZXRGZXRjaDpFQSxsaXN0QVBJUHJvdmlkZXJzOnhBfSxyTz1sdCh7bmFtZToiQG51eHQvaWNvbiIsc2V0dXAoKXtjb25zdCBlPWZvKCksdD1TdCgpLmljb247U20uc2V0RmV0Y2goJGZldGNoLm5hdGl2ZSk7Y29uc3Qgbj1bXTtpZih0LnByb3ZpZGVyPT09InNlcnZlciIpe2NvbnN0IG89ZS5hcHA/LmJhc2VVUkw/LnJlcGxhY2UoL1wvJC8sIiIpPz8iIjtuLnB1c2gobysodC5sb2NhbEFwaUVuZHBvaW50fHwiL2FwaS9fbnV4dF9pY29uIikpLCh0LmZhbGxiYWNrVG9BcGk9PT0hMHx8dC5mYWxsYmFja1RvQXBpPT09ImNsaWVudC1vbmx5IikmJm4ucHVzaCh0Lmljb25pZnlBcGlFbmRwb2ludCl9ZWxzZSB0LnByb3ZpZGVyPT09Im5vbmUiP1NtLnNldEZldGNoKCgpPT5Qcm9taXNlLnJlc29sdmUobmV3IFJlc3BvbnNlKSk6bi5wdXNoKHQuaWNvbmlmeUFwaUVuZHBvaW50KTthc3luYyBmdW5jdGlvbiByKG8scyl7dHJ5e2NvbnN0IGk9YXdhaXQgJGZldGNoKG5bMF0rIi8iK3MrIi5qc29uIix7cXVlcnk6e2ljb25zOm8uam9pbigiLCIpfX0pO2lmKCFpfHxpLnByZWZpeCE9PXN8fCFpLmljb25zKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIitKU09OLnN0cmluZ2lmeShpKSk7cmV0dXJuIGl9Y2F0Y2h7cmV0dXJuIG51bGx9fUd2KCIiLHtyZXNvdXJjZXM6bn0pO2Zvcihjb25zdCBvIG9mIHQuY3VzdG9tQ29sbGVjdGlvbnN8fFtdKW8mJlVBKHIsbyl9fSk7ZnVuY3Rpb24ganIoKXtjb25zdCBlPWlvKCJsYXllclJlZ2lzdHJ5Lm5hdiIsKCk9PltdKSx0PWlvKCJsYXllclJlZ2lzdHJ5Lm92ZXJsYXlzIiwoKT0+W10pLG49aW8oImxheWVyUmVnaXN0cnkubmF2YmFyIiwoKT0+W10pO2Z1bmN0aW9uIHIobyl7aWYoby5uYXZJdGVtcz8ubGVuZ3RoKXtjb25zdCBzPW5ldyBTZXQoZS52YWx1ZS5tYXAoaT0+aS5pZCkpO2UudmFsdWU9Wy4uLmUudmFsdWUsLi4uby5uYXZJdGVtcy5maWx0ZXIoaT0+IXMuaGFzKGkuaWQpKV19aWYoby5vdmVybGF5cz8ubGVuZ3RoKXtjb25zdCBzPW5ldyBTZXQodC52YWx1ZS5tYXAoaT0+aS5pZCkpO3QudmFsdWU9Wy4uLnQudmFsdWUsLi4uby5vdmVybGF5cy5maWx0ZXIoaT0+IXMuaGFzKGkuaWQpKS5tYXAoaT0+KHsuLi5pLGNvbXBvbmVudDpMbyhpLmNvbXBvbmVudCl9KSldfWlmKG8ubmF2YmFySXRlbXM/Lmxlbmd0aCl7Y29uc3Qgcz1uZXcgU2V0KG4udmFsdWUubWFwKGk9PmkuaWQpKTtuLnZhbHVlPVsuLi5uLnZhbHVlLC4uLm8ubmF2YmFySXRlbXMuZmlsdGVyKGk9PiFzLmhhcyhpLmlkKSkubWFwKGk9Pih7Li4uaSxjb21wb25lbnQ6TG8oaS5jb21wb25lbnQpfSkpXX19cmV0dXJue25hdkl0ZW1zOmUsb3ZlcmxheXM6dCxuYXZiYXJJdGVtczpuLGNvbnRyaWJ1dGU6cn19Y29uc3Qgb089bHQoKCk9Pntjb25zdHtjb250cmlidXRlOmV9PWpyKCk7ZSh7bmF2SXRlbXM6W3tpZDoiaG9tZSIsbGFiZWw6IkhvbWUiLGljb246ImktbHVjaWRlLWhvdXNlIix0bzoiL2Rhc2hib2FyZCIsc2VjdGlvbjoibWFpbiIscHJpb3JpdHk6MH0se2lkOiJzZXR0aW5ncy1nZW5lcmFsIixsYWJlbDoiR2VuZXJhbCIsdG86Ii9zZXR0aW5ncyIsc2VjdGlvbjoic2V0dGluZ3MiLHByaW9yaXR5OjB9LHtpZDoic2V0dGluZ3Mtbm90aWZpY2F0aW9ucyIsbGFiZWw6Ik5vdGlmaWNhdGlvbnMiLHRvOiIvc2V0dGluZ3Mvbm90aWZpY2F0aW9ucyIsc2VjdGlvbjoic2V0dGluZ3MiLHByaW9yaXR5OjV9LHtpZDoic2V0dGluZ3Mtc2VjdXJpdHkiLGxhYmVsOiJTZWN1cml0eSIsdG86Ii9zZXR0aW5ncy9zZWN1cml0eSIsc2VjdGlvbjoic2V0dGluZ3MiLHByaW9yaXR5OjQwfV19KX0pO2xldCBadj1jbGFzc3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMub3BlcmF0b3I9dCx0aGlzLnZhbHVlPW4sT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInQiLHt3cml0YWJsZTohMH0pfWdldCBub3Rlcygpe3JldHVybiB0aGlzLnR9YWRkTm90ZSh0KXt0aGlzLnQ9dGhpcy50fHxbXSx0aGlzLnQucHVzaCh0KX19LHpmPWNsYXNzIGV4dGVuZHMgWnZ7fSxEbD1jbGFzcyBleHRlbmRzIHpme2NvbnN0cnVjdG9yKHQsbil7aWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IEVycm9yKGAiJHt0fSIgb3BlcmF0b3IgZXhwZWN0cyB0byByZWNlaXZlIGFuIGFycmF5IG9mIGNvbmRpdGlvbnNgKTtzdXBlcih0LG4pfX07Y29uc3Qgemk9Il9faXRzZWxmX18iO2xldCBMbD1jbGFzcyBleHRlbmRzIFp2e2NvbnN0cnVjdG9yKHQsbixyKXtzdXBlcih0LHIpLHRoaXMuZmllbGQ9bn19O2NvbnN0IGViPW5ldyB6ZigiX19udWxsX18iLG51bGwpLER1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO2Z1bmN0aW9uIHNPKGUsdCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEbCYmdC5vcGVyYXRvcj09PWV9ZnVuY3Rpb24gdGIoZSx0KXtyZXR1cm4gdC5sZW5ndGg9PT0xP3RbMF06bmV3IERsKGUsKGZ1bmN0aW9uIG4ocixvLHMpe2NvbnN0IGk9c3x8W107Zm9yKGxldCBhPTAsbD1vLmxlbmd0aDthPGw7YSsrKXtjb25zdCB1PW9bYV07c08ocix1KT9uKHIsdS52YWx1ZSxpKTppLnB1c2godSl9cmV0dXJuIGl9KShlLHQpKX1jb25zdCBpTz1lPT5lLG5iPSgpPT5PYmplY3QuY3JlYXRlKG51bGwpLHJiPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuYigpLCJfX0B0eXBlQF9fIix7dmFsdWU6Imlnbm9yZSB2YWx1ZSJ9KTtmdW5jdGlvbiBhTyhlLHQsbj0hMSl7aWYoIWV8fGUmJmUuY29uc3RydWN0b3IhPT1PYmplY3QpcmV0dXJuITE7Zm9yKGNvbnN0IHIgaW4gZSlpZihEdShlLHIpJiZEdSh0LHIpJiYoIW58fGVbcl0hPT1yYikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbE8oZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBpbiBlKUR1KGUsbikmJmVbbl0hPT1yYiYmdC5wdXNoKG4pO3JldHVybiB0fWZ1bmN0aW9uIE5jKGUsdCl7dCE9PWViJiZlLnB1c2godCl9Y29uc3Qgb2I9ZT0+dGIoImFuZCIsZSksc2I9e2NvbXBvdW5kKGUsdCxuKXtjb25zdCByPShBcnJheS5pc0FycmF5KHQpP3Q6W3RdKS5tYXAobz0+bi5wYXJzZShvKSk7cmV0dXJuIG5ldyBEbChlLm5hbWUscil9LGZpZWxkOihlLHQsbik9Pm5ldyBMbChlLm5hbWUsbi5maWVsZCx0KSxkb2N1bWVudDooZSx0KT0+bmV3IHpmKGUubmFtZSx0KX07bGV0IGNPPWNsYXNze2NvbnN0cnVjdG9yKHQsbj1uYigpKXt0aGlzLm89dm9pZCAwLHRoaXMucz12b2lkIDAsdGhpcy5pPXZvaWQgMCx0aGlzLnU9dm9pZCAwLHRoaXMuaD12b2lkIDAsdGhpcy5wYXJzZT10aGlzLnBhcnNlLmJpbmQodGhpcyksdGhpcy51PXtvcGVyYXRvclRvQ29uZGl0aW9uTmFtZTpuLm9wZXJhdG9yVG9Db25kaXRpb25OYW1lfHxpTyxkZWZhdWx0T3BlcmF0b3JOYW1lOm4uZGVmYXVsdE9wZXJhdG9yTmFtZXx8ImVxIixtZXJnZUZpbmFsQ29uZGl0aW9uczpuLm1lcmdlRmluYWxDb25kaXRpb25zfHxvYn0sdGhpcy5vPU9iamVjdC5rZXlzKHQpLnJlZHVjZSgocixvKT0+KHJbb109T2JqZWN0LmFzc2lnbih7bmFtZTp0aGlzLnUub3BlcmF0b3JUb0NvbmRpdGlvbk5hbWUobyl9LHRbb10pLHIpLHt9KSx0aGlzLnM9T2JqZWN0LmFzc2lnbih7fSxuLmZpZWxkQ29udGV4dCx7ZmllbGQ6IiIscXVlcnk6e30scGFyc2U6dGhpcy5wYXJzZSxoYXNPcGVyYXRvcnM6cj0+YU8ocix0aGlzLm8sbi51c2VJZ25vcmVWYWx1ZSl9KSx0aGlzLmk9T2JqZWN0LmFzc2lnbih7fSxuLmRvY3VtZW50Q29udGV4dCx7cGFyc2U6dGhpcy5wYXJzZSxxdWVyeTp7fX0pLHRoaXMuaD1uLnVzZUlnbm9yZVZhbHVlP2xPOk9iamVjdC5rZXlzfXNldFBhcnNlKHQpe3RoaXMucGFyc2U9dCx0aGlzLnMucGFyc2U9dCx0aGlzLmkucGFyc2U9dH1wYXJzZUZpZWxkKHQsbixyLG8pe2NvbnN0IHM9dGhpcy5vW25dO2lmKCFzKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgb3BlcmF0b3IgIiR7bn0iYCk7aWYocy50eXBlIT09ImZpZWxkIil0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgJHtzLnR5cGV9IG9wZXJhdG9yICIke259IiBhdCBmaWVsZCBsZXZlbGApO3JldHVybiB0aGlzLnMuZmllbGQ9dCx0aGlzLnMucXVlcnk9byx0aGlzLnBhcnNlSW5zdHJ1Y3Rpb24ocyxyLHRoaXMucyl9cGFyc2VJbnN0cnVjdGlvbih0LG4scil7cmV0dXJuIHR5cGVvZiB0LnZhbGlkYXRlPT0iZnVuY3Rpb24iJiZ0LnZhbGlkYXRlKHQsbiksKHQucGFyc2V8fHNiW3QudHlwZV0pKHQsbixyKX1wYXJzZUZpZWxkT3BlcmF0b3JzKHQsbil7Y29uc3Qgcj1bXSxvPXRoaXMuaChuKTtmb3IobGV0IHM9MCxpPW8ubGVuZ3RoO3M8aTtzKyspe2NvbnN0IGE9b1tzXTtpZighdGhpcy5vW2FdKXRocm93IG5ldyBFcnJvcihgRmllbGQgcXVlcnkgZm9yICIke3R9IiBtYXkgY29udGFpbiBvbmx5IG9wZXJhdG9ycyBvciBhIHBsYWluIG9iamVjdCBhcyBhIHZhbHVlYCk7TmMocix0aGlzLnBhcnNlRmllbGQodCxhLG5bYV0sbikpfXJldHVybiByfXBhcnNlKHQpe2NvbnN0IG49W10scj10aGlzLmgodCk7dGhpcy5pLnF1ZXJ5PXQ7Zm9yKGxldCBvPTAscz1yLmxlbmd0aDtvPHM7bysrKXtjb25zdCBpPXJbb10sYT10W2ldLGw9dGhpcy5vW2ldO2lmKGwpe2lmKGwudHlwZSE9PSJkb2N1bWVudCImJmwudHlwZSE9PSJjb21wb3VuZCIpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdXNlIHBhcnNpbmcgaW5zdHJ1Y3Rpb24gZm9yIG9wZXJhdG9yICIke2l9IiBpbiAiZG9jdW1lbnQiIGNvbnRleHQgYXMgaXQgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiAgIiR7bC50eXBlfSIgY29udGV4dGApO05jKG4sdGhpcy5wYXJzZUluc3RydWN0aW9uKGwsYSx0aGlzLmkpKX1lbHNlIHRoaXMucy5oYXNPcGVyYXRvcnMoYSk/bi5wdXNoKC4uLnRoaXMucGFyc2VGaWVsZE9wZXJhdG9ycyhpLGEpKTpOYyhuLHRoaXMucGFyc2VGaWVsZChpLHRoaXMudS5kZWZhdWx0T3BlcmF0b3JOYW1lLGEsdCkpfXJldHVybiB0aGlzLnUubWVyZ2VGaW5hbENvbmRpdGlvbnMobil9fTtmdW5jdGlvbiBEYyhlLHQpe2NvbnN0IG49ZVt0XTtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBpbnRlcnByZXQgIiR7dH0iIGNvbmRpdGlvbi4gRGlkIHlvdSBmb3JnZXQgdG8gcmVnaXN0ZXIgaW50ZXJwcmV0ZXIgZm9yIGl0P2ApO3JldHVybiBufWZ1bmN0aW9uIHVPKGUpe3JldHVybiBlLm9wZXJhdG9yfWZ1bmN0aW9uIGZPKGUsdCl7Y29uc3Qgbj10LHI9biYmbi5nZXRJbnRlcnByZXRlck5hbWV8fHVPO2xldCBvO3N3aXRjaChuP24ubnVtYmVyT2ZBcmd1bWVudHM6MCl7Y2FzZSAxOm89aT0+e2NvbnN0IGE9cihpLG4pO3JldHVybiBEYyhlLGEpKGkscyl9O2JyZWFrO2Nhc2UgMzpvPShpLGEsbCk9Pntjb25zdCB1PXIoaSxuKTtyZXR1cm4gRGMoZSx1KShpLGEsbCxzKX07YnJlYWs7ZGVmYXVsdDpvPShpLGEpPT57Y29uc3QgbD1yKGksbik7cmV0dXJuIERjKGUsbCkoaSxhLHMpfX1jb25zdCBzPU9iamVjdC5hc3NpZ24oe30sbix7aW50ZXJwcmV0Om99KTtyZXR1cm4gcy5pbnRlcnByZXR9ZnVuY3Rpb24gZE8oZSx0KXtyZXR1cm4obiwuLi5yKT0+e2NvbnN0IG89ZShuLC4uLnIpLHM9dC5iaW5kKG51bGwsbyk7cmV0dXJuIHMuYXN0PW8sc319ZnVuY3Rpb24gaWIoZSx0KXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdmFsdWUgdG8gYmUgYW4gYXJyYXlgKX1mdW5jdGlvbiBhYihlLHQpe2lmKGliKGUsdCksIXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB0byBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIGFycmF5YCl9Y29uc3QgamY9ZT0+KHQsbik9PntpZih0eXBlb2YgbiE9PWUpdGhyb3cgbmV3IEVycm9yKGAiJHt0Lm5hbWV9IiBleHBlY3RzIHZhbHVlIHRvIGJlIGEgIiR7ZX0iYCl9LGxiPXt0eXBlOiJjb21wb3VuZCIsdmFsaWRhdGU6YWIscGFyc2UoZSx0LHtwYXJzZTpufSl7Y29uc3Qgcj10Lm1hcChvPT5uKG8pKTtyZXR1cm4gdGIoZS5uYW1lLHIpfX0scE89bGIsbU89e3R5cGU6ImNvbXBvdW5kIix2YWxpZGF0ZTphYn0saE89e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLHQpe2lmKCEodCYmKHQgaW5zdGFuY2VvZiBSZWdFeHB8fHQuY29uc3RydWN0b3I9PT1PYmplY3QpKSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdG8gcmVjZWl2ZSBlaXRoZXIgcmVndWxhciBleHByZXNzaW9uIG9yIG9iamVjdCBvZiBmaWVsZCBvcGVyYXRvcnNgKX0scGFyc2UoZSx0LG4pe2NvbnN0IHI9dCBpbnN0YW5jZW9mIFJlZ0V4cD9uZXcgTGwoInJlZ2V4IixuLmZpZWxkLHQpOm4ucGFyc2UodCxuKTtyZXR1cm4gbmV3IERsKGUubmFtZSxbcl0pfX0sY2I9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZShlLHQpe2lmKCF0fHx0LmNvbnN0cnVjdG9yIT09T2JqZWN0KXRocm93IG5ldyBFcnJvcihgIiR7ZS5uYW1lfSIgZXhwZWN0cyB0byByZWNlaXZlIGFuIG9iamVjdCB3aXRoIG5lc3RlZCBxdWVyeSBvciBmaWVsZCBsZXZlbCBvcGVyYXRvcnNgKX0scGFyc2UoZSx0LHtwYXJzZTpuLGZpZWxkOnIsaGFzT3BlcmF0b3JzOm99KXtjb25zdCBzPW8odCk/bih0LHtmaWVsZDp6aX0pOm4odCk7cmV0dXJuIG5ldyBMbChlLm5hbWUscixzKX19LHViPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGU6amYoIm51bWJlciIpfSwkbD17dHlwZToiZmllbGQiLHZhbGlkYXRlOmlifSxmYj0kbCxkYj0kbCxnTz17dHlwZToiZmllbGQiLHZhbGlkYXRlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCl8fHQubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgYW4gYXJyYXkgd2l0aCAyIG51bWVyaWMgZWxlbWVudHNgKX19LHBiPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGU6amYoImJvb2xlYW4iKX0sVmY9e3R5cGU6ImZpZWxkIix2YWxpZGF0ZTpmdW5jdGlvbihlLHQpe2lmKCEodHlwZW9mIHQ9PSJzdHJpbmcifHx0eXBlb2YgdD09Im51bWJlciJ8fHQgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgRXJyb3IoYCIke2UubmFtZX0iIGV4cGVjdHMgdmFsdWUgdG8gYmUgY29tcGFyYWJsZSAoaS5lLiwgc3RyaW5nLCBudW1iZXIgb3IgZGF0ZSlgKX19LE1sPVZmLG1iPU1sLGhiPU1sLFVmPXt0eXBlOiJmaWVsZCJ9LGdiPVVmLHliPXt0eXBlOiJmaWVsZCIsdmFsaWRhdGUoZSx0KXtpZighKHQgaW5zdGFuY2VvZiBSZWdFeHApJiZ0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKGAiJHtlLm5hbWV9IiBleHBlY3RzIHZhbHVlIHRvIGJlIGEgcmVndWxhciBleHByZXNzaW9uIG9yIGEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyByZWd1bGFyIGV4cHJlc3Npb25gKX0scGFyc2UoZSx0LG4pe2NvbnN0IHI9dHlwZW9mIHQ9PSJzdHJpbmciP25ldyBSZWdFeHAodCxuLnF1ZXJ5LiRvcHRpb25zfHwiIik6dDtyZXR1cm4gbmV3IExsKGUubmFtZSxuLmZpZWxkLHIpfX0sdmI9e3R5cGU6ImZpZWxkIixwYXJzZTooKT0+ZWJ9LHlPPXt0eXBlOiJkb2N1bWVudCIsdmFsaWRhdGU6amYoImZ1bmN0aW9uIil9O3ZhciB2Tz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCwkYW5kOmxiLCRvcjpwTywkbm9yOm1PLCRub3Q6aE8sJGVsZW1NYXRjaDpjYiwkc2l6ZTp1YiwkaW46JGwsJG5pbjpmYiwkYWxsOmRiLCRtb2Q6Z08sJGV4aXN0czpwYiwkZ3RlOlZmLCRndDpNbCwkbHQ6bWIsJGx0ZTpoYiwkZXE6VWYsJG5lOmdiLCRyZWdleDp5Yiwkb3B0aW9uczp2Yiwkd2hlcmU6eU99KTtjbGFzcyBiTyBleHRlbmRzIGNPe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2RlZmF1bHRPcGVyYXRvck5hbWU6IiRlcSIsb3BlcmF0b3JUb0NvbmRpdGlvbk5hbWU6bj0+bi5zbGljZSgxKX0pfXBhcnNlKHQsbil7cmV0dXJuIG4mJm4uZmllbGQ/b2IodGhpcy5wYXJzZUZpZWxkT3BlcmF0b3JzKG4uZmllbGQsdCkpOnN1cGVyLnBhcnNlKHQpfX1jb25zdCBMdT12TztmdW5jdGlvbiBIZihlLHQsbil7Zm9yKGxldCByPTAsbz1lLmxlbmd0aDtyPG87cisrKWlmKG4oZVtyXSx0KT09PTApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gV2YoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmTnVtYmVyLmlzTmFOKE51bWJlcih0KSl9ZnVuY3Rpb24ga20oZSx0LG4pe2lmKCFXZihlLHQpKXJldHVybiBuKGUsdCk7bGV0IHI9W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9bihlW29dLHQpO3MhPT12b2lkIDAmJihyPXIuY29uY2F0KHMpKX1yZXR1cm4gcn1mdW5jdGlvbiBXbyhlKXtyZXR1cm4odCxuLHIpPT57Y29uc3Qgbz1yLmdldChuLHQuZmllbGQpO3JldHVybiBBcnJheS5pc0FycmF5KG8pP28uc29tZShzPT5lKHQscyxyKSk6ZSh0LG8scil9fWNvbnN0IHdPPU9iamVjdC5oYXNPd258fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLF9PPShlLHQpPT5lW3RdO2Z1bmN0aW9uIGJiKGUsdCxuKXtjb25zdCByPXQubGFzdEluZGV4T2YoIi4iKTtyZXR1cm4gcj09PS0xP1tlLHRdOltuKGUsdC5zbGljZSgwLHIpKSx0LnNsaWNlKHIrMSldfWZ1bmN0aW9uIHhPKGUsdCxuPV9PKXtpZih0PT09emkpcmV0dXJuIGU7aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZ2V0IGZpZWxkICIke3R9IiBvdXQgb2YgJHtTdHJpbmcoZSl9LmApO3JldHVybihmdW5jdGlvbihyLG8scyl7aWYoby5pbmRleE9mKCIuIik9PT0tMSlyZXR1cm4ga20ocixvLHMpO2NvbnN0IGk9by5zcGxpdCgiLiIpO2xldCBhPXI7Zm9yKGxldCBsPTAsdT1pLmxlbmd0aDtsPHU7bCsrKWlmKGE9a20oYSxpW2xdLHMpLCFhfHx0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGw8dS0xP3ZvaWQgMDphO3JldHVybiBhfSkoZSx0LG4pfWZ1bmN0aW9uIHdiKGUsdCl7cmV0dXJuIGU9PT10PzA6ZT50PzE6LTF9ZnVuY3Rpb24gX2IoZSx0PXt9KXtyZXR1cm4gZk8oZSxPYmplY3QuYXNzaWduKHtnZXQ6eE8sY29tcGFyZTp3Yn0sdCkpfWNvbnN0IHhiPShlLHQse2ludGVycHJldDpufSk9PmUudmFsdWUuc29tZShyPT5uKHIsdCkpLFNPPShlLHQsbik9PiF4YihlLHQsbiksU2I9KGUsdCx7aW50ZXJwcmV0Om59KT0+ZS52YWx1ZS5ldmVyeShyPT5uKHIsdCkpLGtPPShlLHQse2ludGVycHJldDpufSk9PiFuKGUudmFsdWVbMF0sdCksR2Y9KGUsdCx7Y29tcGFyZTpuLGdldDpyfSk9Pntjb25zdCBvPXIodCxlLmZpZWxkKTtyZXR1cm4gQXJyYXkuaXNBcnJheShvKSYmIUFycmF5LmlzQXJyYXkoZS52YWx1ZSk/SGYobyxlLnZhbHVlLG4pOm4obyxlLnZhbHVlKT09PTB9LGtiPShlLHQsbik9PiFHZihlLHQsbiksRWI9V28oKGUsdCxuKT0+e2NvbnN0IHI9bi5jb21wYXJlKHQsZS52YWx1ZSk7cmV0dXJuIHI9PT0wfHxyPT09LTF9KSxUYj1XbygoZSx0LG4pPT5uLmNvbXBhcmUodCxlLnZhbHVlKT09PS0xKSxDYj1XbygoZSx0LG4pPT5uLmNvbXBhcmUodCxlLnZhbHVlKT09PTEpLEFiPVdvKChlLHQsbik9Pntjb25zdCByPW4uY29tcGFyZSh0LGUudmFsdWUpO3JldHVybiByPT09MHx8cj09PTF9KSxPYj0oZSx0LHtnZXQ6bn0pPT57aWYoZS5maWVsZD09PXppKXJldHVybiB0IT09dm9pZCAwO2NvbnN0W3Isb109YmIodCxlLmZpZWxkLG4pLHM9aT0+aT09bnVsbD8hIWk9PT1lLnZhbHVlOndPKGksbyk9PT1lLnZhbHVlO3JldHVybiBXZihyLG8pP3Iuc29tZShzKTpzKHIpfSxFTz1XbygoZSx0KT0+dHlwZW9mIHQ9PSJudW1iZXIiJiZ0JWUudmFsdWVbMF09PT1lLnZhbHVlWzFdKSxQYj0oZSx0LHtnZXQ6bn0pPT57Y29uc3RbcixvXT1iYih0LGUuZmllbGQsbikscz1pPT57Y29uc3QgYT1uKGksbyk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoPT09ZS52YWx1ZX07cmV0dXJuIGUuZmllbGQhPT16aSYmV2YocixvKT9yLnNvbWUocyk6cyhyKX0sSWI9V28oKGUsdCk9PnR5cGVvZiB0PT0ic3RyaW5nIiYmZS52YWx1ZS50ZXN0KHQpKSxCbD1XbygoZSx0LHtjb21wYXJlOm59KT0+SGYoZS52YWx1ZSx0LG4pKSxSYj0oZSx0LG4pPT4hQmwoZSx0LG4pLE5iPShlLHQse2NvbXBhcmU6bixnZXQ6cn0pPT57Y29uc3Qgbz1yKHQsZS5maWVsZCk7cmV0dXJuIEFycmF5LmlzQXJyYXkobykmJmUudmFsdWUuZXZlcnkocz0+SGYobyxzLG4pKX0sRGI9KGUsdCx7aW50ZXJwcmV0Om4sZ2V0OnJ9KT0+e2NvbnN0IG89cih0LGUuZmllbGQpO3JldHVybiBBcnJheS5pc0FycmF5KG8pJiZvLnNvbWUocz0+bihlLnZhbHVlLHMpKX0sVE89KGUsdCk9PmUudmFsdWUuY2FsbCh0KTt2YXIgQ089T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsb3I6eGIsbm9yOlNPLGFuZDpTYixub3Q6a08sZXE6R2YsbmU6a2IsbHRlOkViLGx0OlRiLGd0OkNiLGd0ZTpBYixleGlzdHM6T2IsbW9kOkVPLHNpemU6UGIscmVnZXg6SWIsd2l0aGluOkJsLG5pbjpSYixhbGw6TmIsZWxlbU1hdGNoOkRiLHdoZXJlOlRPfSk7Y29uc3QgS2Y9T2JqZWN0LmFzc2lnbih7fSxDTyx7aW46Qmx9KTtfYihLZik7ZnVuY3Rpb24gRW0oZSl7cmV0dXJuIGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCI/ZTplIGluc3RhbmNlb2YgRGF0ZT9lLmdldFRpbWUoKTplJiZ0eXBlb2YgZS50b0pTT049PSJmdW5jdGlvbiI/ZS50b0pTT04oKTplfWNvbnN0IEFPPShlLHQpPT53YihFbShlKSxFbSh0KSk7ZnVuY3Rpb24gUWYoZSx0LG4pe2NvbnN0IHI9bmV3IGJPKGUpLG89X2IodCxPYmplY3QuYXNzaWduKHtjb21wYXJlOkFPfSxuKSk7aWYobiYmbi5mb3JQcmltaXRpdmVzKXtjb25zdCBzPXtmaWVsZDp6aX0saT1yLnBhcnNlO3Iuc2V0UGFyc2UoYT0+aShhLHMpKX1yZXR1cm4gZE8oci5wYXJzZSxvKX1RZihMdSxLZik7UWYoWyIkYW5kIiwiJG9yIl0ucmVkdWNlKChlLHQpPT4oZVt0XT1PYmplY3QuYXNzaWduKHt9LGVbdF0se3R5cGU6ImZpZWxkIn0pLGUpLE9iamVjdC5hc3NpZ24oe30sTHUseyRub3I6T2JqZWN0LmFzc2lnbih7fSxMdS4kbm9yLHt0eXBlOiJmaWVsZCIscGFyc2U6c2IuY29tcG91bmR9KX0pKSxLZix7Zm9yUHJpbWl0aXZlczohMH0pO2NvbnN0IE9PPU9iamVjdC5oYXNPd258fCgoZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkpO2Z1bmN0aW9uICR1KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWNvbnN0IFRtPSJfX2Nhc2xTdWJqZWN0VHlwZV9fIixSYT1lPT57Y29uc3QgdD10eXBlb2YgZTtyZXR1cm4gdD09PSJzdHJpbmcifHx0PT09ImZ1bmN0aW9uIn0sUE89ZT0+ZS5tb2RlbE5hbWV8fGUubmFtZTtmdW5jdGlvbiBMYihlKXtyZXR1cm4gT08oZSxUbSk/ZVtUbV06UE8oZS5jb25zdHJ1Y3Rvcil9Y29uc3QgQ209e2Z1bmN0aW9uOmU9PmUuY29uc3RydWN0b3Isc3RyaW5nOkxifTtmdW5jdGlvbiBBbShlLHQsbil7Zm9yKGxldCByPW47cjx0Lmxlbmd0aDtyKyspZS5wdXNoKHRbcl0pfWZ1bmN0aW9uIE9tKGUsdCl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm4gdHx8W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gZXx8W107bGV0IG49MCxyPTA7Y29uc3Qgbz1bXTtmb3IoO248ZS5sZW5ndGgmJnI8dC5sZW5ndGg7KWVbbl0ucHJpb3JpdHk8dFtyXS5wcmlvcml0eT8oby5wdXNoKGVbbl0pLG4rKyk6ZVtuXS5wcmlvcml0eT50W3JdLnByaW9yaXR5PyhvLnB1c2godFtyXSkscisrKTooby5wdXNoKGVbbl0pLG4rKyxyKyspO3JldHVybiBBbShvLGUsbiksQW0obyx0LHIpLG99ZnVuY3Rpb24gdWEoZSx0LG4pe2xldCByPWUuZ2V0KHQpO3JldHVybiByfHwocj1uKCksZS5zZXQodCxyKSkscn1jb25zdCBJTz1lPT5lO2Z1bmN0aW9uIFJPKGUsdCl7bGV0IG47Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG89dChlW3JdKTtuJiZvJiZuLnB1c2goZVtyXSksb3x8KG4/Pz1lLnNsaWNlKDAscikpfXJldHVybiBufHxlfWZ1bmN0aW9uIE5PKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlLmZpZWxkcykmJiFlLmZpZWxkcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJgcmF3UnVsZS5maWVsZHNgIGNhbm5vdCBiZSBhbiBlbXB0eSBhcnJheS4gaHR0cHM6Ly9iaXQubHkvMzkwbWlMYSIpO2lmKGUuZmllbGRzJiYhdC5maWVsZE1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBwYXNzICJmaWVsZE1hdGNoZXIiIG9wdGlvbiBpbiBvcmRlciB0byByZXN0cmljdCBhY2Nlc3MgYnkgZmllbGRzJyk7aWYoZS5jb25kaXRpb25zJiYhdC5jb25kaXRpb25zTWF0Y2hlcil0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRvIHBhc3MgImNvbmRpdGlvbnNNYXRjaGVyIiBvcHRpb24gaW4gb3JkZXIgdG8gcmVzdHJpY3QgYWNjZXNzIGJ5IGNvbmRpdGlvbnMnKX1jbGFzcyBET3tjb25zdHJ1Y3Rvcih0LG4scj0wKXtOTyh0LG4pLHRoaXMuYWN0aW9uPW4ucmVzb2x2ZUFjdGlvbih0LmFjdGlvbiksdGhpcy5zdWJqZWN0PXQuc3ViamVjdCx0aGlzLmludmVydGVkPSEhdC5pbnZlcnRlZCx0aGlzLmNvbmRpdGlvbnM9dC5jb25kaXRpb25zLHRoaXMucmVhc29uPXQucmVhc29uLHRoaXMub3JpZ2luPXQsdGhpcy5maWVsZHM9dC5maWVsZHM/JHUodC5maWVsZHMpOnZvaWQgMCx0aGlzLnByaW9yaXR5PXIsdGhpcy50PW59aSgpe3JldHVybiB0aGlzLmNvbmRpdGlvbnMmJiF0aGlzLm8mJih0aGlzLm89dGhpcy50LmNvbmRpdGlvbnNNYXRjaGVyKHRoaXMuY29uZGl0aW9ucykpLHRoaXMub31nZXQgYXN0KCl7Y29uc3QgdD10aGlzLmkoKTtyZXR1cm4gdD90LmFzdDp2b2lkIDB9bWF0Y2hlc0NvbmRpdGlvbnModCl7cmV0dXJuIHRoaXMuY29uZGl0aW9ucz8hdHx8UmEodCk/IXRoaXMuaW52ZXJ0ZWQ6dGhpcy5pKCkodCk6ITB9bWF0Y2hlc0ZpZWxkKHQpe3JldHVybiB0aGlzLmZpZWxkcz90Pyh0aGlzLnV8fCh0aGlzLnU9dGhpcy50LmZpZWxkTWF0Y2hlcih0aGlzLmZpZWxkcykpLHRoaXMudSh0KSk6IXRoaXMuaW52ZXJ0ZWQ6ITB9fWZ1bmN0aW9uIExPKGUsdCl7Y29uc3Qgbj17dmFsdWU6ZSxwcmV2OnQsbmV4dDpudWxsfTtyZXR1cm4gdCYmKHQubmV4dD1uKSxufWZ1bmN0aW9uICRPKGUpe2UubmV4dCYmKGUubmV4dC5wcmV2PWUucHJldiksZS5wcmV2JiYoZS5wcmV2Lm5leHQ9ZS5uZXh0KSxlLm5leHQ9ZS5wcmV2PW51bGx9Y29uc3QgUG09KCk9Pih7cnVsZXM6W10sbWVyZ2VkOiExfSksSW09KCk9Pm5ldyBNYXA7Y2xhc3MgTU97Y29uc3RydWN0b3IodD1bXSxuPXt9KXt0aGlzLmg9ITEsdGhpcy5sPW5ldyBNYXAsdGhpcy5wPXtjb25kaXRpb25zTWF0Y2hlcjpuLmNvbmRpdGlvbnNNYXRjaGVyLGZpZWxkTWF0Y2hlcjpuLmZpZWxkTWF0Y2hlcixyZXNvbHZlQWN0aW9uOm4ucmVzb2x2ZUFjdGlvbnx8SU99LHRoaXMuJD1uLmFueUFjdGlvbnx8Im1hbmFnZSIsdGhpcy5BPW4uYW55U3ViamVjdFR5cGV8fCJhbGwiLHRoaXMubT10LHRoaXMuTT0hIW4uZGV0ZWN0U3ViamVjdFR5cGUsdGhpcy5qPW4uZGV0ZWN0U3ViamVjdFR5cGV8fExiLHRoaXMudih0KX1nZXQgcnVsZXMoKXtyZXR1cm4gdGhpcy5tfWRldGVjdFN1YmplY3RUeXBlKHQpe3JldHVybiBSYSh0KT90OnQ/dGhpcy5qKHQpOnRoaXMuQX11cGRhdGUodCl7Y29uc3Qgbj17cnVsZXM6dCxhYmlsaXR5OnRoaXMsdGFyZ2V0OnRoaXN9O3JldHVybiB0aGlzLl8oInVwZGF0ZSIsbiksdGhpcy5tPXQsdGhpcy52KHQpLHRoaXMuXygidXBkYXRlZCIsbiksdGhpc312KHQpe2NvbnN0IG49bmV3IE1hcDtsZXQgcjtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj0wO28tLSl7Y29uc3Qgcz10Lmxlbmd0aC1vLTEsaT1uZXcgRE8odFtvXSx0aGlzLnAscyksYT0kdShpLmFjdGlvbiksbD0kdShpLnN1YmplY3R8fHRoaXMuQSk7IXRoaXMuaCYmaS5maWVsZHMmJih0aGlzLmg9ITApO2ZvcihsZXQgdT0wO3U8bC5sZW5ndGg7dSsrKXtjb25zdCBjPXVhKG4sbFt1XSxJbSk7cj09PXZvaWQgMCYmKHI9dHlwZW9mIGxbdV0pLHR5cGVvZiBsW3VdIT09ciYmciE9PSJtaXhlZCImJihyPSJtaXhlZCIpO2ZvcihsZXQgZj0wO2Y8YS5sZW5ndGg7ZisrKXVhKGMsYVtmXSxQbSkucnVsZXMucHVzaChpKX19aWYodGhpcy5sPW4sciE9PSJtaXhlZCImJiF0aGlzLk0pe2NvbnN0IG89Q21bcl18fENtLnN0cmluZzt0aGlzLmo9b319cG9zc2libGVSdWxlc0Zvcih0LG49dGhpcy5BKXtpZighUmEobikpdGhyb3cgbmV3IEVycm9yKCcicG9zc2libGVSdWxlc0ZvciIgYWNjZXB0cyBvbmx5IHN1YmplY3QgdHlwZXMgKGkuZS4sIHN0cmluZyBvciBjbGFzcykgYXMgdGhlIDJuZCBwYXJhbWV0ZXInKTtjb25zdCByPXVhKHRoaXMubCxuLEltKSxvPXVhKHIsdCxQbSk7aWYoby5tZXJnZWQpcmV0dXJuIG8ucnVsZXM7Y29uc3Qgcz10IT09dGhpcy4kJiZyLmhhcyh0aGlzLiQpP3IuZ2V0KHRoaXMuJCkucnVsZXM6dm9pZCAwO2xldCBpPU9tKG8ucnVsZXMscyk7cmV0dXJuIG4hPT10aGlzLkEmJihpPU9tKGksdGhpcy5wb3NzaWJsZVJ1bGVzRm9yKHQsdGhpcy5BKSkpLG8ucnVsZXM9aSxvLm1lcmdlZD0hMCxpfXJ1bGVzRm9yKHQsbixyKXtjb25zdCBvPXRoaXMucG9zc2libGVSdWxlc0Zvcih0LG4pO2lmKHImJnR5cGVvZiByIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIlRoZSAzcmQsIGBmaWVsZGAgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIGEgc3RyaW5nLiBTZWUgaHR0cHM6Ly9zdGFsbml5LmdpdGh1Yi5pby9jYXNsL2VuL2FwaS9jYXNsLWFiaWxpdHkjY2FuLW9mLXB1cmUtYWJpbGl0eSBmb3IgZGV0YWlscyIpO3JldHVybiB0aGlzLmg/Uk8obyxzPT5zLm1hdGNoZXNGaWVsZChyKSk6b31hY3Rpb25zRm9yKHQpe2lmKCFSYSh0KSl0aHJvdyBuZXcgRXJyb3IoJyJhY3Rpb25zRm9yIiBhY2NlcHRzIG9ubHkgc3ViamVjdCB0eXBlcyAoaS5lLiwgc3RyaW5nIG9yIGNsYXNzKSBhcyBhIHBhcmFtZXRlcicpO2NvbnN0IG49bmV3IFNldCxyPXRoaXMubC5nZXQodCk7ciYmQXJyYXkuZnJvbShyLmtleXMoKSkuZm9yRWFjaChzPT5uLmFkZChzKSk7Y29uc3Qgbz10IT09dGhpcy5BP3RoaXMubC5nZXQodGhpcy5BKTp2b2lkIDA7cmV0dXJuIG8mJkFycmF5LmZyb20oby5rZXlzKCkpLmZvckVhY2gocz0+bi5hZGQocykpLEFycmF5LmZyb20obil9b24odCxuKXt0aGlzLkY9dGhpcy5GfHxuZXcgTWFwO2NvbnN0IHI9dGhpcy5GLG89ci5nZXQodCl8fG51bGwscz1MTyhuLG8pO3JldHVybiByLnNldCh0LHMpLCgpPT57Y29uc3QgaT1yLmdldCh0KTshcy5uZXh0JiYhcy5wcmV2JiZpPT09cz9yLmRlbGV0ZSh0KTpzPT09aSYmci5zZXQodCxzLnByZXYpLCRPKHMpfX1fKHQsbil7aWYoIXRoaXMuRilyZXR1cm47bGV0IHI9dGhpcy5GLmdldCh0KXx8bnVsbDtjb25zdCBvPVtdO2Zvcig7ciE9PW51bGw7KW8ucHVzaChyLnZhbHVlKSxyPXIucHJldjtmb3IobGV0IHM9MDtzPG8ubGVuZ3RoO3MrKylvW3NdKG4pfX1jbGFzcyAkYiBleHRlbmRzIE1Pe2Nhbih0LG4scil7Y29uc3Qgbz10aGlzLnJlbGV2YW50UnVsZUZvcih0LG4scik7cmV0dXJuISFvJiYhby5pbnZlcnRlZH1yZWxldmFudFJ1bGVGb3IodCxuLHIpe2NvbnN0IG89dGhpcy5kZXRlY3RTdWJqZWN0VHlwZShuKSxzPXRoaXMucnVsZXNGb3IodCxvLHIpO2ZvcihsZXQgaT0wLGE9cy5sZW5ndGg7aTxhO2krKylpZihzW2ldLm1hdGNoZXNDb25kaXRpb25zKG4pKXJldHVybiBzW2ldO3JldHVybiBudWxsfWNhbm5vdCh0LG4scil7cmV0dXJuIXRoaXMuY2FuKHQsbixyKX19Y29uc3QgQk89eyRlcTpVZiwkbmU6Z2IsJGx0Om1iLCRsdGU6aGIsJGd0Ok1sLCRndGU6VmYsJGluOiRsLCRuaW46ZmIsJGFsbDpkYiwkc2l6ZTp1YiwkcmVnZXg6eWIsJG9wdGlvbnM6dmIsJGVsZW1NYXRjaDpjYiwkZXhpc3RzOnBifSxxTz17ZXE6R2YsbmU6a2IsbHQ6VGIsbHRlOkViLGd0OkNiLGd0ZTpBYixpbjpCbCxuaW46UmIsYWxsOk5iLHNpemU6UGIscmVnZXg6SWIsZWxlbU1hdGNoOkRiLGV4aXN0czpPYixhbmQ6U2J9LEZPPVFmKEJPLHFPKSx6Tz0vWy0vXFxeJCs/LigpfFtcXXt9XS9nLGpPPS9cLj9cKitcLj8vZyxWTz0vXCorLyxVTz0vXC4vZztmdW5jdGlvbiBITyhlLHQsbil7Y29uc3Qgcj1uWzBdPT09IioifHxlWzBdPT09Ii4iJiZlW2UubGVuZ3RoLTFdPT09Ii4iPyIrIjoiKiIsbz1lLmluZGV4T2YoIioqIik9PT0tMT8iW14uXSI6Ii4iLHM9ZS5yZXBsYWNlKFVPLCJcXCQmIikucmVwbGFjZShWTyxvK3IpO3JldHVybiB0K2UubGVuZ3RoPT09bi5sZW5ndGg/YCg/OiR7c30pP2A6c31mdW5jdGlvbiBXTyhlLHQsbil7cmV0dXJuIGU9PT0iLiImJihuW3QtMV09PT0iKiJ8fG5bdCsxXT09PSIqIik/ZTpgXFwke2V9YH1mdW5jdGlvbiBHTyhlKXtjb25zdCB0PWUubWFwKHI9PnIucmVwbGFjZSh6TyxXTykucmVwbGFjZShqTyxITykpLG49dC5sZW5ndGg+MT9gKD86JHt0LmpvaW4oInwiKX0pYDp0WzBdO3JldHVybiBuZXcgUmVnRXhwKGBeJHtufSRgKX1jb25zdCBLTz1lPT57bGV0IHQ7cmV0dXJuIG49Pih0eXBlb2YgdD4idSImJih0PWUuZXZlcnkocj0+ci5pbmRleE9mKCIqIik9PT0tMSk/bnVsbDpHTyhlKSksdD09PW51bGw/ZS5pbmRleE9mKG4pIT09LTE6dC50ZXN0KG4pKX07ZnVuY3Rpb24gUU8oZT1bXSx0PXt9KXtyZXR1cm4gbmV3ICRiKGUsT2JqZWN0LmFzc2lnbih7Y29uZGl0aW9uc01hdGNoZXI6Rk8sZmllbGRNYXRjaGVyOktPfSx0KSl9ZnVuY3Rpb24gWU8oZSl7aWYoT2JqZWN0Lmhhc093bihlLCJwb3NzaWJsZVJ1bGVzRm9yIikpcmV0dXJuIGU7Y29uc3QgdD1HKCEwKTtlLm9uKCJ1cGRhdGVkIiwoKT0+e3QudmFsdWU9IXQudmFsdWV9KTtjb25zdCBuPWUucG9zc2libGVSdWxlc0Zvci5iaW5kKGUpO3JldHVybiBlLnBvc3NpYmxlUnVsZXNGb3I9KHIsbyk9Pih0LnZhbHVlPXQudmFsdWUsbihyLG8pKSxlLmNhbj1lLmNhbi5iaW5kKGUpLGUuY2Fubm90PWUuY2Fubm90LmJpbmQoZSksZX1jb25zdCBKTz1TeW1ib2woImFiaWxpdHkiKTtmdW5jdGlvbiBYTyhlLHQsbil7aWYoIXR8fCEodCBpbnN0YW5jZW9mICRiKSl0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSBwcm92aWRlIGFuIEFiaWxpdHkgaW5zdGFuY2UgdG8gYWJpbGl0aWVzUGx1Z2luIHBsdWdpbiIpO2UucHJvdmlkZShKTyxZTyh0KSksbiYmbi51c2VHbG9iYWxQcm9wZXJ0aWVzJiYoZS5jb25maWcuZ2xvYmFsUHJvcGVydGllcy4kYWJpbGl0eT10LGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJGNhbj10LmNhbi5iaW5kKHQpKX1jb25zdCBaTz1sdChlPT57Y29uc3QgdD1RTyhbXSk7ZS52dWVBcHAudXNlKFhPLHQse3VzZUdsb2JhbFByb3BlcnRpZXM6ITB9KTtjb25zdCBuPU1mKCk7cmV0dXJuIFBlKCgpPT5bbi5jdXJyZW50VXNlcj8uYWJpbGl0aWVzPz9bXSxuLmN1cnJlbnRVc2VyPy5pZF0sKFtyLG9dKT0+e2NvbnN0IHM9YkMocixvKTt0LnVwZGF0ZShzKX0se2ltbWVkaWF0ZTohMH0pLHtwcm92aWRlOnthYmlsaXR5OnR9fX0pLGVQPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InNldHRpbmdzLWJpbGxpbmciLGxhYmVsOiJCaWxsaW5nIix0bzoiL3NldHRpbmdzL2JpbGxpbmciLHNlY3Rpb246InNldHRpbmdzIixwcmlvcml0eToxMCxhYmlsaXR5OiJiaWxsaW5nOnJlYWQifV19KX0pLHRQPU9iamVjdC5mcmVlemUoe2xlZnQ6MCx0b3A6MCx3aWR0aDoxNixoZWlnaHQ6MTZ9KSxNYj1PYmplY3QuZnJlZXplKHtyb3RhdGU6MCx2RmxpcDohMSxoRmxpcDohMX0pLFlmPU9iamVjdC5mcmVlemUoey4uLnRQLC4uLk1ifSk7T2JqZWN0LmZyZWV6ZSh7Li4uWWYsYm9keToiIixoaWRkZW46ITF9KTtmdW5jdGlvbiBuUChlKXtjb25zdFt0LG4scixvXT1lO2lmKHIhPT1vKXtjb25zdCBzPU1hdGgubWF4KHIsbyk7cmV0dXJuW3QtKHMtcikvMixuLShzLW8pLzIscyxzXX1yZXR1cm4gZX1jb25zdCByUD0vKC0/WzAtOS5dKlswLTldK1swLTkuXSopL2csb1A9L14tP1swLTkuXSpbMC05XStbMC05Ll0qJC9nO2Z1bmN0aW9uIE11KGUsdCxuKXtpZih0PT09MSlyZXR1cm4gZTtpZihuPW58fDEwMCx0eXBlb2YgZT09Im51bWJlciIpcmV0dXJuIE1hdGguY2VpbChlKnQqbikvbjtpZih0eXBlb2YgZSE9InN0cmluZyIpcmV0dXJuIGU7Y29uc3Qgcj1lLnNwbGl0KHJQKTtpZihyPT09bnVsbHx8IXIubGVuZ3RoKXJldHVybiBlO2NvbnN0IG89W107bGV0IHM9ci5zaGlmdCgpLGk9b1AudGVzdChzKTtmb3IoOzspe2lmKGkpe2NvbnN0IGE9cGFyc2VGbG9hdChzKTtpc05hTihhKT9vLnB1c2gocyk6by5wdXNoKE1hdGguY2VpbChhKnQqbikvbil9ZWxzZSBvLnB1c2gocyk7aWYocz1yLnNoaWZ0KCkscz09PXZvaWQgMClyZXR1cm4gby5qb2luKCIiKTtpPSFpfX1jb25zdCBzUD1PYmplY3QuZnJlZXplKHt3aWR0aDpudWxsLGhlaWdodDpudWxsfSksaVA9T2JqZWN0LmZyZWV6ZSh7Li4uc1AsLi4uTWJ9KTtmdW5jdGlvbiBhUChlLHQ9ImRlZnMiKXtsZXQgbj0iIjtjb25zdCByPWUuaW5kZXhPZigiPCIrdCk7Zm9yKDtyPj0wOyl7Y29uc3Qgbz1lLmluZGV4T2YoIj4iLHIpLHM9ZS5pbmRleE9mKCI8LyIrdCk7aWYobz09PS0xfHxzPT09LTEpYnJlYWs7Y29uc3QgaT1lLmluZGV4T2YoIj4iLHMpO2lmKGk9PT0tMSlicmVhaztuKz1lLnNsaWNlKG8rMSxzKS50cmltKCksZT1lLnNsaWNlKDAscikudHJpbSgpK2Uuc2xpY2UoaSsxKX1yZXR1cm57ZGVmczpuLGNvbnRlbnQ6ZX19ZnVuY3Rpb24gbFAoZSx0KXtyZXR1cm4gZT8iPGRlZnM+IitlKyI8L2RlZnM+Iit0OnR9ZnVuY3Rpb24gY1AoZSx0LG4pe2NvbnN0IHI9YVAoZSk7cmV0dXJuIGxQKHIuZGVmcyx0K3IuY29udGVudCtuKX1jb25zdCB1UD1lPT5lPT09InVuc2V0Inx8ZT09PSJ1bmRlZmluZWQifHxlPT09Im5vbmUiO2Z1bmN0aW9uIGZQKGUsdCl7Y29uc3Qgbj17Li4uWWYsLi4uZX0scj17Li4uaVAsLi4udH0sbz17bGVmdDpuLmxlZnQsdG9wOm4udG9wLHdpZHRoOm4ud2lkdGgsaGVpZ2h0Om4uaGVpZ2h0fTtsZXQgcz1uLmJvZHk7W24scl0uZm9yRWFjaCh5PT57Y29uc3QgXz1bXSx3PXkuaEZsaXAsdj15LnZGbGlwO2xldCBoPXkucm90YXRlO3c/dj9oKz0yOihfLnB1c2goInRyYW5zbGF0ZSgiKyhvLndpZHRoK28ubGVmdCkudG9TdHJpbmcoKSsiICIrKDAtby50b3ApLnRvU3RyaW5nKCkrIikiKSxfLnB1c2goInNjYWxlKC0xIDEpIiksby50b3A9by5sZWZ0PTApOnYmJihfLnB1c2goInRyYW5zbGF0ZSgiKygwLW8ubGVmdCkudG9TdHJpbmcoKSsiICIrKG8uaGVpZ2h0K28udG9wKS50b1N0cmluZygpKyIpIiksXy5wdXNoKCJzY2FsZSgxIC0xKSIpLG8udG9wPW8ubGVmdD0wKTtsZXQgYjtzd2l0Y2goaDwwJiYoaC09TWF0aC5mbG9vcihoLzQpKjQpLGg9aCU0LGgpe2Nhc2UgMTpiPW8uaGVpZ2h0LzIrby50b3AsXy51bnNoaWZ0KCJyb3RhdGUoOTAgIitiLnRvU3RyaW5nKCkrIiAiK2IudG9TdHJpbmcoKSsiKSIpO2JyZWFrO2Nhc2UgMjpfLnVuc2hpZnQoInJvdGF0ZSgxODAgIisoby53aWR0aC8yK28ubGVmdCkudG9TdHJpbmcoKSsiICIrKG8uaGVpZ2h0LzIrby50b3ApLnRvU3RyaW5nKCkrIikiKTticmVhaztjYXNlIDM6Yj1vLndpZHRoLzIrby5sZWZ0LF8udW5zaGlmdCgicm90YXRlKC05MCAiK2IudG9TdHJpbmcoKSsiICIrYi50b1N0cmluZygpKyIpIik7YnJlYWt9aCUyPT09MSYmKG8ubGVmdCE9PW8udG9wJiYoYj1vLmxlZnQsby5sZWZ0PW8udG9wLG8udG9wPWIpLG8ud2lkdGghPT1vLmhlaWdodCYmKGI9by53aWR0aCxvLndpZHRoPW8uaGVpZ2h0LG8uaGVpZ2h0PWIpKSxfLmxlbmd0aCYmKHM9Y1AocywnPGcgdHJhbnNmb3JtPSInK18uam9pbigiICIpKyciPicsIjwvZz4iKSl9KTtjb25zdCBpPXIud2lkdGgsYT1yLmhlaWdodCxsPW8ud2lkdGgsdT1vLmhlaWdodDtsZXQgYyxmO2k9PT1udWxsPyhmPWE9PT1udWxsPyIxZW0iOmE9PT0iYXV0byI/dTphLGM9TXUoZixsL3UpKTooYz1pPT09ImF1dG8iP2w6aSxmPWE9PT1udWxsP011KGMsdS9sKTphPT09ImF1dG8iP3U6YSk7Y29uc3QgZD17fSxwPSh5LF8pPT57dVAoXyl8fChkW3ldPV8udG9TdHJpbmcoKSl9O3AoIndpZHRoIixjKSxwKCJoZWlnaHQiLGYpO2NvbnN0IG09W28ubGVmdCxvLnRvcCxsLHVdO3JldHVybiBkLnZpZXdCb3g9bS5qb2luKCIgIikse2F0dHJpYnV0ZXM6ZCx2aWV3Qm94Om0sYm9keTpzfX1mdW5jdGlvbiBkUChlKXtyZXR1cm4gZS5yZXBsYWNlKC8iL2csIiciKS5yZXBsYWNlKC8lL2csIiUyNSIpLnJlcGxhY2UoLyMvZywiJTIzIikucmVwbGFjZSgvPC9nLCIlM0MiKS5yZXBsYWNlKC8+L2csIiUzRSIpLnJlcGxhY2UoL1xzKy9nLCIgIil9ZnVuY3Rpb24gcFAoZSl7cmV0dXJuImRhdGE6aW1hZ2Uvc3ZnK3htbCwiK2RQKGUpfWZ1bmN0aW9uIG1QKGUpe3JldHVybid1cmwoIicrcFAoZSkrJyIpJ31mdW5jdGlvbiBoUChlLHQpe2xldCBuPWUuaW5kZXhPZigieGxpbms6Iik9PT0tMT8iIjonIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIic7Zm9yKGNvbnN0IHIgaW4gdCluKz0iICIrcisnPSInK3Rbcl0rJyInO3JldHVybic8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyInK24rIj4iK2UrIjwvc3ZnPiJ9ZnVuY3Rpb24gZ1AoZSl7Y29uc3QgdD17ZGlzcGxheToiaW5saW5lLWJsb2NrIix3aWR0aDoiMWVtIixoZWlnaHQ6IjFlbSJ9LG49ZS52YXJOYW1lO3N3aXRjaChlLnBzZXVkb1NlbGVjdG9yJiYodC5jb250ZW50PSInJyIpLGUubW9kZSl7Y2FzZSJiYWNrZ3JvdW5kIjpuJiYodFsiYmFja2dyb3VuZC1pbWFnZSJdPSJ2YXIoLS0iK24rIikiKSx0WyJiYWNrZ3JvdW5kLXJlcGVhdCJdPSJuby1yZXBlYXQiLHRbImJhY2tncm91bmQtc2l6ZSJdPSIxMDAlIDEwMCUiO2JyZWFrO2Nhc2UibWFzayI6dFsiYmFja2dyb3VuZC1jb2xvciJdPSJjdXJyZW50Q29sb3IiLG4mJih0WyJtYXNrLWltYWdlIl09dFsiLXdlYmtpdC1tYXNrLWltYWdlIl09InZhcigtLSIrbisiKSIpLHRbIm1hc2stcmVwZWF0Il09dFsiLXdlYmtpdC1tYXNrLXJlcGVhdCJdPSJuby1yZXBlYXQiLHRbIm1hc2stc2l6ZSJdPXRbIi13ZWJraXQtbWFzay1zaXplIl09IjEwMCUgMTAwJSI7YnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24geVAoZSx0KXtjb25zdCBuPXt9LHI9dC52YXJOYW1lLG89ZlAoZSk7bGV0IHM9by52aWV3Qm94O3NbMl0hPT1zWzNdJiYodC5mb3JjZVNxdWFyZT9zPW5QKHMpOm4ud2lkdGg9TXUoIjFlbSIsc1syXS9zWzNdKSk7Y29uc3QgaT1tUChoUChvLmJvZHkucmVwbGFjZSgvY3VycmVudENvbG9yL2csdC5jb2xvcnx8ImJsYWNrIikse3ZpZXdCb3g6YCR7c1swXX0gJHtzWzFdfSAke3NbMl19ICR7c1szXX1gLHdpZHRoOmAke3NbMl19YCxoZWlnaHQ6YCR7c1szXX1gfSkpO2lmKHIpblsiLS0iK3JdPWk7ZWxzZSBzd2l0Y2godC5tb2RlKXtjYXNlImJhY2tncm91bmQiOm5bImJhY2tncm91bmQtaW1hZ2UiXT1pO2JyZWFrO2Nhc2UibWFzayI6blsibWFzay1pbWFnZSJdPW5bIi13ZWJraXQtbWFzay1pbWFnZSJdPWk7YnJlYWt9cmV0dXJuIG59Y29uc3QgTGM9e3NlbGVjdG9yU3RhcnQ6e2NvbXByZXNzZWQ6InsiLGNvbXBhY3Q6IiB7IixleHBhbmRlZDoiIHsifSxzZWxlY3RvckVuZDp7Y29tcHJlc3NlZDoifSIsY29tcGFjdDpgOyB9CmAsZXhwYW5kZWQ6YDsKfQpgfSxydWxlOntjb21wcmVzc2VkOiJ7a2V5fToiLGNvbXBhY3Q6IiB7a2V5fTogIixleHBhbmRlZDpgCiAge2tleX06IGB9fTtmdW5jdGlvbiB2UChlLHQ9ImV4cGFuZGVkIil7Y29uc3Qgbj1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7Y29uc3R7c2VsZWN0b3I6byxydWxlczpzfT1lW3JdO2xldCBpPShvIGluc3RhbmNlb2YgQXJyYXk/by5qb2luKHQ9PT0iY29tcHJlc3NlZCI/IiwiOiIsICIpOm8pK0xjLnNlbGVjdG9yU3RhcnRbdF0sYT0hMDtmb3IoY29uc3QgbCBpbiBzKWF8fChpKz0iOyIpLGkrPUxjLnJ1bGVbdF0ucmVwbGFjZSgie2tleX0iLGwpK3NbbF0sYT0hMTtpKz1MYy5zZWxlY3RvckVuZFt0XSxuLnB1c2goaSl9cmV0dXJuIG4uam9pbih0PT09ImNvbXByZXNzZWQiPyIiOmAKYCl9ZnVuY3Rpb24gYlAoZSx0PXt9KXtjb25zdCBuPXQuY3VzdG9taXNlP3QuY3VzdG9taXNlKGUuYm9keSk6ZS5ib2R5LHI9dC5tb2RlfHwodC5jb2xvcnx8IW4uaW5jbHVkZXMoImN1cnJlbnRDb2xvciIpPyJiYWNrZ3JvdW5kIjoibWFzayIpO2xldCBvPXQudmFyTmFtZTtvPT09dm9pZCAwJiZyPT09Im1hc2siJiYobz0ic3ZnIik7Y29uc3Qgcz17Li4udCxtb2RlOnIsdmFyTmFtZTpvfTtyPT09ImJhY2tncm91bmQiJiZkZWxldGUgcy52YXJOYW1lO2NvbnN0IGk9ey4uLnQucnVsZXMsLi4uZ1AocyksLi4ueVAoey4uLllmLC4uLmUsYm9keTpufSxzKX07cmV0dXJuIHZQKFt7c2VsZWN0b3I6dC5pY29uU2VsZWN0b3J8fCIuaWNvbiIscnVsZXM6aX1dLHMuZm9ybWF0KX1hc3luYyBmdW5jdGlvbiB3UChlLHQpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG49UHUoZSk7cmV0dXJuIG58fChhd2FpdCBWQShlKS5jYXRjaCgoKT0+bnVsbCksUHUoZSkpfWZ1bmN0aW9uIEJiKGUpe2NvbnN0IHQ9U3QoKS5pY29uLG49KHQuY29sbGVjdGlvbnN8fFtdKS5zb3J0KChyLG8pPT5vLmxlbmd0aC1yLmxlbmd0aCk7cmV0dXJuIE4oKCk9Pntjb25zdCByPWUoKSxvPXIuc3RhcnRzV2l0aCh0LmNzc1NlbGVjdG9yUHJlZml4KT9yLnNsaWNlKHQuY3NzU2VsZWN0b3JQcmVmaXgubGVuZ3RoKTpyLHM9dC5hbGlhc2VzPy5bb118fG87aWYoIXMuaW5jbHVkZXMoIjoiKSl7Y29uc3QgaT1uLmZpbmQoYT0+cy5zdGFydHNXaXRoKGErIi0iKSk7cmV0dXJuIGk/aSsiOiIrcy5zbGljZShpLmxlbmd0aCsxKTpzfXJldHVybiBzfSl9ZnVuY3Rpb24gcWIoZSx0KXtpZihlIT09ITEpcmV0dXJuIGU9PT0hMHx8ZT09PW51bGw/dDplfWxldCBHcztmdW5jdGlvbiBfUChlKXtyZXR1cm4gZS5yZXBsYWNlKC8oW15cdy1dKS9nLCJcXCQxIil9ZnVuY3Rpb24geFAoKXtpZihHcylyZXR1cm4gR3M7R3M9bmV3IFNldDtjb25zdCBlPW49PntpZihuPW4ucmVwbGFjZSgvXjp3aGVyZVwoKC4qKVwpJC8sIiQxIikudHJpbSgpLG4uc3RhcnRzV2l0aCgiLiIpKXJldHVybiBufSx0PW49PntpZihuPy5sZW5ndGgpZm9yKGNvbnN0IHIgb2Ygbil7cj8uY3NzUnVsZXMmJnQoci5jc3NSdWxlcyk7Y29uc3Qgbz1yPy5zZWxlY3RvclRleHQ7aWYodHlwZW9mIG89PSJzdHJpbmciKXtjb25zdCBzPWUobyk7cyYmR3MuYWRkKHMpfX19O2lmKHR5cGVvZiBkb2N1bWVudDwidSIpZm9yKGNvbnN0IG4gb2YgZG9jdW1lbnQuc3R5bGVTaGVldHMpdHJ5e2NvbnN0IHI9bi5jc3NSdWxlc3x8bi5ydWxlczt0KHIpfWNhdGNoe31yZXR1cm4gR3N9Y29uc3QgU1A9c2Uoe25hbWU6Ik51eHRJY29uQ3NzIixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGN1c3RvbWl6ZTp7dHlwZTpbRnVuY3Rpb24sQm9vbGVhbixudWxsXSxkZWZhdWx0Om51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PUJlKCksbj1TdCgpLmljb24scj1OKCgpPT5lLm5hbWU/bi5jc3NTZWxlY3RvclByZWZpeCtlLm5hbWU6IiIpO2Z1bmN0aW9uIG8oYSl7aWYoIWEpcmV0dXJuO2NvbnN0IGw9UHUoYSk7aWYobClyZXR1cm4gbDtjb25zdCB1PXQucGF5bG9hZD8uZGF0YT8uW2FdO2lmKHUpcmV0dXJuIHFmKGEsdSksdX1jb25zdCBzPU4oKCk9PiIuIitfUChyLnZhbHVlKSk7ZnVuY3Rpb24gaShhLGw9ITApe2xldCB1PXMudmFsdWU7bi5jc3NXaGVyZVBzZXVkbyYmKHU9YDp3aGVyZSgke3V9KWApO2NvbnN0IGM9YlAoYSx7aWNvblNlbGVjdG9yOnUsZm9ybWF0OiJjb21wcmVzc2VkIixjdXN0b21pc2U6cWIoZS5jdXN0b21pemUsbi5jdXN0b21pemUpfSk7cmV0dXJuIG4uY3NzTGF5ZXImJmw/YEBsYXllciAke24uY3NzTGF5ZXJ9IHsgJHtjfSB9YDpjfXtjb25zdCBhPXhQKCk7YXN5bmMgZnVuY3Rpb24gbCh1KXtpZihhLmhhcyhzLnZhbHVlKXx8dHlwZW9mIGRvY3VtZW50PiJ1IilyZXR1cm47Y29uc3QgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2MudGV4dENvbnRlbnQ9aSh1KTtjb25zdCBmPWRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3Rvcignc3R5bGUsIGxpbmtbcmVsPSJzdHlsZXNoZWV0Il0nKTtmP2RvY3VtZW50LmhlYWQuaW5zZXJ0QmVmb3JlKGMsZik6ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChjKSxhLmFkZChzLnZhbHVlKX1QZSgoKT0+ZS5uYW1lLCgpPT57aWYoYS5oYXMocy52YWx1ZSkpcmV0dXJuO2NvbnN0IHU9byhlLm5hbWUpO3U/bCh1KTp3UChlLm5hbWUpLnRoZW4oYz0+e2MmJmwoYyl9KS5jYXRjaCgoKT0+bnVsbCl9LHtpbW1lZGlhdGU6ITB9KX1yZXR1cm4oKT0+RmUoInNwYW4iLHtjbGFzczpbImljb25pZnkiLHIudmFsdWVdfSl9fSksa1A9c2Uoe25hbWU6Ik51eHRJY29uU3ZnIixwcm9wczp7bmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGN1c3RvbWl6ZTp7dHlwZTpbRnVuY3Rpb24sQm9vbGVhbixudWxsXSxkZWZhdWx0Om51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1CZSgpLHI9U3QoKS5pY29uLG89QmIoKCk9PmUubmFtZSkscz0iaS0iK28udmFsdWU7aWYoby52YWx1ZSl7Y29uc3QgaT1uLnBheWxvYWQuZGF0YVtzXTtpJiZxZihvLnZhbHVlLGkpfXJldHVybigpPT5GZShuTyx7aWNvbjpvLnZhbHVlLHNzcjohMCxjdXN0b21pc2U6cWIoZS5jdXN0b21pemUsci5jdXN0b21pemUpfSx0KX19KSxGYj1zZSh7bmFtZToiTnV4dEljb24iLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sbW9kZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpudWxsfSxzaXplOnt0eXBlOltOdW1iZXIsU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0Om51bGx9LGN1c3RvbWl6ZTp7dHlwZTpbRnVuY3Rpb24sQm9vbGVhbixudWxsXSxkZWZhdWx0Om51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czp0fSl7Y29uc3Qgbj1CZSgpLHI9U3QoKS5pY29uLG89QmIoKCk9PmUubmFtZSkscz1OKCgpPT5uLnZ1ZUFwcD8uY29tcG9uZW50KG8udmFsdWUpfHwoKGUubW9kZXx8ci5tb2RlKT09PSJzdmciP2tQOlNQKSksaT1OKCgpPT57Y29uc3QgYT1lLnNpemV8fHIuc2l6ZTtyZXR1cm4gYT97Zm9udFNpemU6TnVtYmVyLmlzTmFOKCthKT9hOmErInB4In06bnVsbH0pO3JldHVybigpPT5GZShzLnZhbHVlLHsuLi5yLmF0dHJzLG5hbWU6by52YWx1ZSxjbGFzczpyLmNsYXNzLHN0eWxlOmkudmFsdWUsY3VzdG9taXplOmUuY3VzdG9taXplfSx0KX19KSxFUD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZGVmYXVsdDpGYn0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtmdW5jdGlvbiBSbShlLHQ9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heCh0LGUpKX1mdW5jdGlvbiBnbihlLHQpe2NvbnN0IG49dHlwZW9mIGU9PSJzdHJpbmciJiYhdD9gJHtlfUNvbnRleHRgOnQscj1TeW1ib2wobik7cmV0dXJuW2k9Pntjb25zdCBhPUtlKHIsaSk7aWYoYXx8YT09PW51bGwpcmV0dXJuIGE7dGhyb3cgbmV3IEVycm9yKGBJbmplY3Rpb24gXGAke3IudG9TdHJpbmcoKX1cYCBub3QgZm91bmQuIENvbXBvbmVudCBtdXN0IGJlIHVzZWQgd2l0aGluICR7QXJyYXkuaXNBcnJheShlKT9gb25lIG9mIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50czogJHtlLmpvaW4oIiwgIil9YDpgXGAke2V9XGBgfWApfSxpPT4oTnQocixpKSxpKV19ZnVuY3Rpb24gcm4oKXtsZXQgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKGU9PW51bGwpcmV0dXJuIG51bGw7Zm9yKDtlIT1udWxsJiZlLnNoYWRvd1Jvb3QhPW51bGwmJmUuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50IT1udWxsOyllPWUuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O3JldHVybiBlfWZ1bmN0aW9uIEpmKGUsdCxuKXtjb25zdCByPW4ub3JpZ2luYWxFdmVudC50YXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmci5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHIuZGlzcGF0Y2hFdmVudChvKX1mdW5jdGlvbiBBaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBUUChlLHQpe3ZhciBuO2NvbnN0IHI9T2UoKTtyZXR1cm4gb24oKCk9PntyLnZhbHVlPWUoKX0sey4uLnQsZmx1c2g6KG49dD8uZmx1c2gpIT09bnVsbCYmbiE9PXZvaWQgMD9uOiJzeW5jIn0pLCRyKHIpfWZ1bmN0aW9uIENQKGUsdCxuPXt9KXtsZXQgcixvLHMsaT0hMDtjb25zdCBhPSgpPT57aT0hMCxzKCl9O1BlKGUsYSx7Zmx1c2g6InN5bmMiLC4uLm59KTtjb25zdCBsPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6dC5nZXQsdT10eXBlb2YgdD09ImZ1bmN0aW9uIj92b2lkIDA6dC5zZXQsYz13bCgoZixkKT0+KG89ZixzPWQse2dldCgpe3JldHVybiBpJiYocj1sKHIpLGk9ITEpLG8oKSxyfSxzZXQocCl7dT8uKHApfX0pKTtyZXR1cm4gYy50cmlnZ2VyPWEsY31mdW5jdGlvbiBHbihlLHQpe3JldHVybiBxcigpPyhScyhlLHQpLCEwKTohMX1mdW5jdGlvbiBocSgpe2NvbnN0IGU9bmV3IFNldCx0PXM9PntlLmRlbGV0ZShzKX07cmV0dXJue29uOnM9PntlLmFkZChzKTtjb25zdCBpPSgpPT50KHMpO3JldHVybiBHbihpKSx7b2ZmOml9fSxvZmY6dCx0cmlnZ2VyOiguLi5zKT0+UHJvbWlzZS5hbGwoQXJyYXkuZnJvbShlKS5tYXAoaT0+aSguLi5zKSkpLGNsZWFyOigpPT57ZS5jbGVhcigpfX19ZnVuY3Rpb24gQVAoZSl7bGV0IHQ9ITEsbjtjb25zdCByPU5pKCEwKTtyZXR1cm4oKC4uLm8pPT4odHx8KG49ci5ydW4oKCk9PmUoLi4ubykpLHQ9ITApLG4pKX1mdW5jdGlvbiBncShlLHQpe3JldHVybiB0PT09ITA/RyhlKTpPZShlKX1jb25zdCBobj10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1Ijt0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZnbG9iYWxUaGlzIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7Y29uc3QgT1A9ZT0+dHlwZW9mIGU8InUiLHpiPWU9PmUhPW51bGwsUFA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxJUD1lPT5QUC5jYWxsKGUpPT09IltvYmplY3QgT2JqZWN0XSIsSW49KCk9Pnt9LE5tPVJQKCk7ZnVuY3Rpb24gUlAoKXt2YXIgZSx0LG47cmV0dXJuIGhuJiYhISghKChlPXdpbmRvdyk9PT1udWxsfHxlPT09dm9pZCAwfHwoZT1lLm5hdmlnYXRvcik9PT1udWxsfHxlPT09dm9pZCAwKSYmZS51c2VyQWdlbnQpJiYoL2lQKD86YWR8aG9uZXxvZCkvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpfHwoKHQ9d2luZG93KT09PW51bGx8fHQ9PT12b2lkIDB8fCh0PXQubmF2aWdhdG9yKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQubWF4VG91Y2hQb2ludHMpPjImJi9pUGFkfE1hY2ludG9zaC8udGVzdCgobj13aW5kb3cpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5uYXZpZ2F0b3IudXNlckFnZW50KSl9ZnVuY3Rpb24gamIoLi4uZSl7aWYoZS5sZW5ndGghPT0xKXJldHVybiB5dCguLi5lKTtjb25zdCB0PWVbMF07cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iPyRyKHdsKCgpPT4oe2dldDp0LHNldDpJbn0pKSk6Ryh0KX1mdW5jdGlvbiBYZihlLHQpe2Z1bmN0aW9uIG4oLi4ucil7cmV0dXJuIG5ldyBQcm9taXNlKChvLHMpPT57UHJvbWlzZS5yZXNvbHZlKGUoKCk9PnQuYXBwbHkodGhpcyxyKSx7Zm46dCx0aGlzQXJnOnRoaXMsYXJnczpyfSkpLnRoZW4obykuY2F0Y2gocyl9KX1yZXR1cm4gbn1jb25zdCBWYj1lPT5lKCk7ZnVuY3Rpb24gVWIoZSx0PXt9KXtsZXQgbixyLG89SW47Y29uc3Qgcz1sPT57Y2xlYXJUaW1lb3V0KGwpLG8oKSxvPUlufTtsZXQgaTtyZXR1cm4gbD0+e2NvbnN0IHU9RWUoZSksYz1FZSh0Lm1heFdhaXQpO3JldHVybiBuJiZzKG4pLHU8PTB8fGMhPT12b2lkIDAmJmM8PTA/KHImJihzKHIpLHI9dm9pZCAwKSxQcm9taXNlLnJlc29sdmUobCgpKSk6bmV3IFByb21pc2UoKGYsZCk9PntvPXQucmVqZWN0T25DYW5jZWw/ZDpmLGk9bCxjJiYhciYmKHI9c2V0VGltZW91dCgoKT0+e24mJnMobikscj12b2lkIDAsZihpKCkpfSxjKSksbj1zZXRUaW1lb3V0KCgpPT57ciYmcyhyKSxyPXZvaWQgMCxmKGwoKSl9LHUpfSl9fWZ1bmN0aW9uIE5QKC4uLmUpe2xldCB0PTAsbixyPSEwLG89SW4scyxpLGEsbCx1OyEkZShlWzBdKSYmdHlwZW9mIGVbMF09PSJvYmplY3QiP3tkZWxheTppLHRyYWlsaW5nOmE9ITAsbGVhZGluZzpsPSEwLHJlamVjdE9uQ2FuY2VsOnU9ITF9PWVbMF06W2ksYT0hMCxsPSEwLHU9ITFdPWU7Y29uc3QgYz0oKT0+e24mJihjbGVhclRpbWVvdXQobiksbj12b2lkIDAsbygpLG89SW4pfTtyZXR1cm4gZD0+e2NvbnN0IHA9RWUoaSksbT1EYXRlLm5vdygpLXQseT0oKT0+cz1kKCk7cmV0dXJuIGMoKSxwPD0wPyh0PURhdGUubm93KCkseSgpKToobT5wPyh0PURhdGUubm93KCksKGx8fCFyKSYmeSgpKTphJiYocz1uZXcgUHJvbWlzZSgoXyx3KT0+e289dT93Ol8sbj1zZXRUaW1lb3V0KCgpPT57dD1EYXRlLm5vdygpLHI9ITAsXyh5KCkpLGMoKX0sTWF0aC5tYXgoMCxwLW0pKX0pKSwhbCYmIW4mJihuPXNldFRpbWVvdXQoKCk9PnI9ITAscCkpLHI9ITEscyl9fWZ1bmN0aW9uIERQKGU9VmIsdD17fSl7Y29uc3R7aW5pdGlhbFN0YXRlOm49ImFjdGl2ZSJ9PXQscj1qYihuPT09ImFjdGl2ZSIpO2Z1bmN0aW9uIG8oKXtyLnZhbHVlPSExfWZ1bmN0aW9uIHMoKXtyLnZhbHVlPSEwfXJldHVybntpc0FjdGl2ZTokcihyKSxwYXVzZTpvLHJlc3VtZTpzLGV2ZW50RmlsdGVyOiguLi5hKT0+e3IudmFsdWUmJmUoLi4uYSl9fX1mdW5jdGlvbiBMUChlKXtsZXQgdDtmdW5jdGlvbiBuKCl7cmV0dXJuIHR8fCh0PWUoKSksdH1yZXR1cm4gbi5yZXNldD1hc3luYygpPT57Y29uc3Qgcj10O3Q9dm9pZCAwLHImJmF3YWl0IHJ9LG59ZnVuY3Rpb24gZGkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19ZnVuY3Rpb24gJFAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybihuPT50W25dfHwodFtuXT1lKG4pKSl9Y29uc3QgTVA9Ly0oXHcpL2csQlA9JFAoZT0+ZS5yZXBsYWNlKE1QLCh0LG4pPT5uP24udG9VcHBlckNhc2UoKToiIikpO2Z1bmN0aW9uIFpmKGUpe3JldHVybiBtdCgpfWZ1bmN0aW9uIGVkKGUpe2lmKCFobilyZXR1cm4gZTtsZXQgdD0wLG4scjtjb25zdCBvPSgpPT57dC09MSxyJiZ0PD0wJiYoci5zdG9wKCksbj12b2lkIDAscj12b2lkIDApfTtyZXR1cm4oKC4uLnMpPT4odCs9MSxyfHwocj1OaSghMCksbj1yLnJ1bigoKT0+ZSguLi5zKSkpLEduKG8pLG4pKX1mdW5jdGlvbiBxUChlLHQpe2lmKHR5cGVvZiBTeW1ib2w8InUiKXtjb25zdCBuPXsuLi5lfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sU3ltYm9sLml0ZXJhdG9yLHtlbnVtZXJhYmxlOiExLHZhbHVlKCl7bGV0IHI9MDtyZXR1cm57bmV4dDooKT0+KHt2YWx1ZTp0W3IrK10sZG9uZTpyPnQubGVuZ3RofSl9fX0pLG59ZWxzZSByZXR1cm4gT2JqZWN0LmFzc2lnbihbLi4udF0sZSl9ZnVuY3Rpb24gRlAoZSl7cmV0dXJuIGJ0KCRlKGUpP25ldyBQcm94eSh7fSx7Z2V0KHQsbixyKXtyZXR1cm4gZyhSZWZsZWN0LmdldChlLnZhbHVlLG4scikpfSxzZXQodCxuLHIpe3JldHVybiAkZShlLnZhbHVlW25dKSYmISRlKHIpP2UudmFsdWVbbl0udmFsdWU9cjplLnZhbHVlW25dPXIsITB9LGRlbGV0ZVByb3BlcnR5KHQsbil7cmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkoZS52YWx1ZSxuKX0saGFzKHQsbil7cmV0dXJuIFJlZmxlY3QuaGFzKGUudmFsdWUsbil9LG93bktleXMoKXtyZXR1cm4gT2JqZWN0LmtleXMoZS52YWx1ZSl9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpe3JldHVybntlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19fSk6ZSl9ZnVuY3Rpb24gSGIoZSl7cmV0dXJuIEZQKE4oZSkpfWZ1bmN0aW9uIHpQKGUsLi4udCl7Y29uc3Qgbj10LmZsYXQoKSxyPW5bMF07cmV0dXJuIEhiKCgpPT5PYmplY3QuZnJvbUVudHJpZXModHlwZW9mIHI9PSJmdW5jdGlvbiI/T2JqZWN0LmVudHJpZXMoRW4oZSkpLmZpbHRlcigoW28sc10pPT4hcihFZShzKSxvKSk6T2JqZWN0LmVudHJpZXMoRW4oZSkpLmZpbHRlcihvPT4hbi5pbmNsdWRlcyhvWzBdKSkpKX1mdW5jdGlvbiBWcihlLC4uLnQpe2NvbnN0IG49dC5mbGF0KCkscj1uWzBdO3JldHVybiBIYigoKT0+T2JqZWN0LmZyb21FbnRyaWVzKHR5cGVvZiByPT0iZnVuY3Rpb24iP09iamVjdC5lbnRyaWVzKEVuKGUpKS5maWx0ZXIoKFtvLHNdKT0+cihFZShzKSxvKSk6bi5tYXAobz0+W28samIoZSxvKV0pKSl9ZnVuY3Rpb24galAoZSx0PTFlNCl7cmV0dXJuIHdsKChuLHIpPT57bGV0IG89RWUoZSkscztjb25zdCBpPSgpPT5zZXRUaW1lb3V0KCgpPT57bz1FZShlKSxyKCl9LEVlKHQpKTtyZXR1cm4gR24oKCk9PntjbGVhclRpbWVvdXQocyl9KSx7Z2V0KCl7cmV0dXJuIG4oKSxvfSxzZXQoYSl7bz1hLHIoKSxjbGVhclRpbWVvdXQocykscz1pKCl9fX0pfWZ1bmN0aW9uIHRkKGUsdD0yMDAsbj17fSl7cmV0dXJuIFhmKFViKHQsbiksZSl9ZnVuY3Rpb24geXEoZSx0PTIwMCxuPXt9KXtjb25zdCByPUcoRWUoZSkpLG89dGQoKCk9PntyLnZhbHVlPWUudmFsdWV9LHQsbik7cmV0dXJuIFBlKGUsKCk9Pm8oKSksVHIocil9ZnVuY3Rpb24gV2IoZSx0PTIwMCxuPSExLHI9ITAsbz0hMSl7cmV0dXJuIFhmKE5QKHQsbixyLG8pLGUpfWZ1bmN0aW9uIHZxKGUsdD0yMDAsbj0hMCxyPSEwKXtpZih0PD0wKXJldHVybiBlO2NvbnN0IG89RyhFZShlKSkscz1XYigoKT0+e28udmFsdWU9ZS52YWx1ZX0sdCxuLHIpO3JldHVybiBQZShlLCgpPT5zKCkpLG99ZnVuY3Rpb24gR2IoZSx0LG49e30pe2NvbnN0e2V2ZW50RmlsdGVyOnI9VmIsLi4ub309bjtyZXR1cm4gUGUoZSxYZihyLHQpLG8pfWZ1bmN0aW9uIEJ1KGUsdCxuPXt9KXtjb25zdHtldmVudEZpbHRlcjpyLGluaXRpYWxTdGF0ZTpvPSJhY3RpdmUiLC4uLnN9PW4se2V2ZW50RmlsdGVyOmkscGF1c2U6YSxyZXN1bWU6bCxpc0FjdGl2ZTp1fT1EUChyLHtpbml0aWFsU3RhdGU6b30pO3JldHVybntzdG9wOkdiKGUsdCx7Li4ucyxldmVudEZpbHRlcjppfSkscGF1c2U6YSxyZXN1bWU6bCxpc0FjdGl2ZTp1fX1mdW5jdGlvbiBicShlLHQsLi4uW25dKXtjb25zdHtmbHVzaDpyPSJzeW5jIixkZWVwOm89ITEsaW1tZWRpYXRlOnM9ITAsZGlyZWN0aW9uOmk9ImJvdGgiLHRyYW5zZm9ybTphPXt9fT1ufHx7fSxsPVtdLHU9Imx0ciJpbiBhJiZhLmx0cnx8KGQ9PmQpLGM9InJ0bCJpbiBhJiZhLnJ0bHx8KGQ9PmQpO3JldHVybihpPT09ImJvdGgifHxpPT09Imx0ciIpJiZsLnB1c2goQnUoZSxkPT57bC5mb3JFYWNoKHA9PnAucGF1c2UoKSksdC52YWx1ZT11KGQpLGwuZm9yRWFjaChwPT5wLnJlc3VtZSgpKX0se2ZsdXNoOnIsZGVlcDpvLGltbWVkaWF0ZTpzfSkpLChpPT09ImJvdGgifHxpPT09InJ0bCIpJiZsLnB1c2goQnUodCxkPT57bC5mb3JFYWNoKHA9PnAucGF1c2UoKSksZS52YWx1ZT1jKGQpLGwuZm9yRWFjaChwPT5wLnJlc3VtZSgpKX0se2ZsdXNoOnIsZGVlcDpvLGltbWVkaWF0ZTpzfSkpLCgpPT57bC5mb3JFYWNoKGQ9PmQuc3RvcCgpKX19ZnVuY3Rpb24gVlAoZSx0KXtaZigpJiZIbyhlLHQpfWZ1bmN0aW9uIHFsKGUsdD0hMCxuKXtaZigpP290KGUsbik6dD9lKCk6aXQoZSl9ZnVuY3Rpb24gVVAoZSx0KXtaZigpJiZwcihlLHQpfWZ1bmN0aW9uIHdxKGUsdD0xZTMsbj17fSl7Y29uc3R7aW1tZWRpYXRlOnI9ITAsaW1tZWRpYXRlQ2FsbGJhY2s6bz0hMX09bjtsZXQgcz1udWxsO2NvbnN0IGk9T2UoITEpO2Z1bmN0aW9uIGEoKXtzJiYoY2xlYXJJbnRlcnZhbChzKSxzPW51bGwpfWZ1bmN0aW9uIGwoKXtpLnZhbHVlPSExLGEoKX1mdW5jdGlvbiB1KCl7Y29uc3QgYz1FZSh0KTtjPD0wfHwoaS52YWx1ZT0hMCxvJiZlKCksYSgpLGkudmFsdWUmJihzPXNldEludGVydmFsKGUsYykpKX1yZXR1cm4gciYmaG4mJnUoKSwoJGUodCl8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKSYmR24oUGUodCwoKT0+e2kudmFsdWUmJmhuJiZ1KCl9KSksR24obCkse2lzQWN0aXZlOlRyKGkpLHBhdXNlOmwscmVzdW1lOnV9fWZ1bmN0aW9uIG5kKGUsdCxuPXt9KXtjb25zdHtpbW1lZGlhdGU6cj0hMCxpbW1lZGlhdGVDYWxsYmFjazpvPSExfT1uLHM9T2UoITEpO2xldCBpO2Z1bmN0aW9uIGEoKXtpJiYoY2xlYXJUaW1lb3V0KGkpLGk9dm9pZCAwKX1mdW5jdGlvbiBsKCl7cy52YWx1ZT0hMSxhKCl9ZnVuY3Rpb24gdSguLi5jKXtvJiZlKCksYSgpLHMudmFsdWU9ITAsaT1zZXRUaW1lb3V0KCgpPT57cy52YWx1ZT0hMSxpPXZvaWQgMCxlKC4uLmMpfSxFZSh0KSl9cmV0dXJuIHImJihzLnZhbHVlPSEwLGhuJiZ1KCkpLEduKGwpLHtpc1BlbmRpbmc6VHIocyksc3RhcnQ6dSxzdG9wOmx9fWZ1bmN0aW9uIEhQKGU9MWUzLHQ9e30pe2NvbnN0e2NvbnRyb2xzOm49ITEsY2FsbGJhY2s6cn09dCxvPW5kKHI/P0luLGUsdCkscz1OKCgpPT4hby5pc1BlbmRpbmcudmFsdWUpO3JldHVybiBuP3tyZWFkeTpzLC4uLm99OnN9ZnVuY3Rpb24gX3EoZSx0LG49e30pe2NvbnN0e2RlYm91bmNlOnI9MCxtYXhXYWl0Om89dm9pZCAwLC4uLnN9PW47cmV0dXJuIEdiKGUsdCx7Li4ucyxldmVudEZpbHRlcjpVYihyLHttYXhXYWl0Om99KX0pfWZ1bmN0aW9uIFdQKGUsdCxuKXtyZXR1cm4gUGUoZSx0LHsuLi5uLGltbWVkaWF0ZTohMH0pfWZ1bmN0aW9uIEdQKGUsdCxuKXtyZXR1cm4gUGUoZSx0LHsuLi5uLG9uY2U6ITB9KX1mdW5jdGlvbiBLUChlLHQsbil7cmV0dXJuIFBlKGUsKG8scyxpKT0+e30sey4uLm4sb25jZTohMX0pfWZ1bmN0aW9uIFFQKGU9e30pe2NvbnN0e2luaGVyaXRBdHRyczp0PSEwfT1lLG49T2UoKSxyPXNlKHtzZXR1cChzLHtzbG90czppfSl7cmV0dXJuKCk9PntuLnZhbHVlPWkuZGVmYXVsdH19fSksbz1zZSh7aW5oZXJpdEF0dHJzOnQscHJvcHM6ZS5wcm9wcyxzZXR1cChzLHthdHRyczppLHNsb3RzOmF9KXtyZXR1cm4oKT0+e3ZhciBsO2lmKCFuLnZhbHVlKXRocm93IG5ldyBFcnJvcigiW1Z1ZVVzZV0gRmFpbGVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgcmV1c2FibGUgdGVtcGxhdGUiKTtjb25zdCB1PShsPW4udmFsdWUpPT09bnVsbHx8bD09PXZvaWQgMD92b2lkIDA6bC5jYWxsKG4sey4uLmUucHJvcHM9PW51bGw/WVAoaSk6cywkc2xvdHM6YX0pO3JldHVybiB0JiZ1Py5sZW5ndGg9PT0xP3VbMF06dX19fSk7cmV0dXJuIHFQKHtkZWZpbmU6cixyZXVzZTpvfSxbcixvXSl9ZnVuY3Rpb24gWVAoZSl7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBpbiBlKXRbQlAobildPWVbbl07cmV0dXJuIHR9Y29uc3QgVnQ9aG4/d2luZG93OnZvaWQgMCxLYj1obj93aW5kb3cubmF2aWdhdG9yOnZvaWQgMDtmdW5jdGlvbiBBdChlKXt2YXIgdDtjb25zdCBuPUVlKGUpO3JldHVybih0PW4/LiRlbCkhPT1udWxsJiZ0IT09dm9pZCAwP3Q6bn1mdW5jdGlvbiBVdCguLi5lKXtjb25zdCB0PShyLG8scyxpKT0+KHIuYWRkRXZlbnRMaXN0ZW5lcihvLHMsaSksKCk9PnIucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLHMsaSkpLG49TigoKT0+e2NvbnN0IHI9ZGkoRWUoZVswXSkpLmZpbHRlcihvPT5vIT1udWxsKTtyZXR1cm4gci5ldmVyeShvPT50eXBlb2YgbyE9InN0cmluZyIpP3I6dm9pZCAwfSk7cmV0dXJuIFdQKCgpPT57dmFyIHIsbztyZXR1cm5bKHI9KG89bi52YWx1ZSk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLm1hcChzPT5BdChzKSkpIT09bnVsbCYmciE9PXZvaWQgMD9yOltWdF0uZmlsdGVyKHM9PnMhPW51bGwpLGRpKEVlKG4udmFsdWU/ZVsxXTplWzBdKSksZGkoZyhuLnZhbHVlP2VbMl06ZVsxXSkpLEVlKG4udmFsdWU/ZVszXTplWzJdKV19LChbcixvLHMsaV0sYSxsKT0+e2lmKCFyPy5sZW5ndGh8fCFvPy5sZW5ndGh8fCFzPy5sZW5ndGgpcmV0dXJuO2NvbnN0IHU9SVAoaSk/ey4uLml9OmksYz1yLmZsYXRNYXAoZj0+by5mbGF0TWFwKGQ9PnMubWFwKHA9PnQoZixkLHAsdSkpKSk7bCgoKT0+e2MuZm9yRWFjaChmPT5mKCkpfSl9LHtmbHVzaDoicG9zdCJ9KX1mdW5jdGlvbiBRYigpe2NvbnN0IGU9T2UoITEpLHQ9bXQoKTtyZXR1cm4gdCYmb3QoKCk9PntlLnZhbHVlPSEwfSx0KSxlfWZ1bmN0aW9uIGppKGUpe2NvbnN0IHQ9UWIoKTtyZXR1cm4gTigoKT0+KHQudmFsdWUsISFlKCkpKX1mdW5jdGlvbiByZChlLHQsbj17fSl7Y29uc3R7d2luZG93OnI9VnQsLi4ub309bjtsZXQgcztjb25zdCBpPWppKCgpPT5yJiYiTXV0YXRpb25PYnNlcnZlciJpbiByKSxhPSgpPT57cyYmKHMuZGlzY29ubmVjdCgpLHM9dm9pZCAwKX0sbD1QZShOKCgpPT57Y29uc3QgZj1kaShFZShlKSkubWFwKEF0KS5maWx0ZXIoemIpO3JldHVybiBuZXcgU2V0KGYpfSksZj0+e2EoKSxpLnZhbHVlJiZmLnNpemUmJihzPW5ldyBNdXRhdGlvbk9ic2VydmVyKHQpLGYuZm9yRWFjaChkPT5zLm9ic2VydmUoZCxvKSkpfSx7aW1tZWRpYXRlOiEwLGZsdXNoOiJwb3N0In0pLHU9KCk9PnM/LnRha2VSZWNvcmRzKCksYz0oKT0+e2woKSxhKCl9O3JldHVybiBHbihjKSx7aXNTdXBwb3J0ZWQ6aSxzdG9wOmMsdGFrZVJlY29yZHM6dX19ZnVuY3Rpb24gSlAoZSx0LG49e30pe2NvbnN0e3dpbmRvdzpyPVZ0LGRvY3VtZW50Om89cj8uZG9jdW1lbnQsZmx1c2g6cz0ic3luYyJ9PW47aWYoIXJ8fCFvKXJldHVybiBJbjtsZXQgaTtjb25zdCBhPWM9PntpPy4oKSxpPWN9LGw9b24oKCk9Pntjb25zdCBjPUF0KGUpO2lmKGMpe2NvbnN0e3N0b3A6Zn09cmQobyxkPT57ZC5tYXAocD0+Wy4uLnAucmVtb3ZlZE5vZGVzXSkuZmxhdCgpLnNvbWUocD0+cD09PWN8fHAuY29udGFpbnMoYykpJiZ0KGQpfSx7d2luZG93OnIsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTthKGYpfX0se2ZsdXNoOnN9KSx1PSgpPT57bCgpLGEoKX07cmV0dXJuIEduKHUpLHV9ZnVuY3Rpb24gWFAoZSl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6dHlwZW9mIGU9PSJzdHJpbmciP3Q9PnQua2V5PT09ZTpBcnJheS5pc0FycmF5KGUpP3Q9PmUuaW5jbHVkZXModC5rZXkpOigpPT4hMH1mdW5jdGlvbiBvZCguLi5lKXtsZXQgdCxuLHI9e307ZS5sZW5ndGg9PT0zPyh0PWVbMF0sbj1lWzFdLHI9ZVsyXSk6ZS5sZW5ndGg9PT0yP3R5cGVvZiBlWzFdPT0ib2JqZWN0Ij8odD0hMCxuPWVbMF0scj1lWzFdKToodD1lWzBdLG49ZVsxXSk6KHQ9ITAsbj1lWzBdKTtjb25zdHt0YXJnZXQ6bz1WdCxldmVudE5hbWU6cz0ia2V5ZG93biIscGFzc2l2ZTppPSExLGRlZHVwZTphPSExfT1yLGw9WFAodCk7cmV0dXJuIFV0KG8scyxjPT57Yy5yZXBlYXQmJkVlKGEpfHxsKGMpJiZuKGMpfSxpKX1mdW5jdGlvbiB4cShlPXt9KXt2YXIgdDtjb25zdHt3aW5kb3c6bj1WdCxkZWVwOnI9ITAsdHJpZ2dlck9uUmVtb3ZhbDpvPSExfT1lLHM9KHQ9ZS5kb2N1bWVudCkhPT1udWxsJiZ0IT09dm9pZCAwP3Q6bj8uZG9jdW1lbnQsaT0oKT0+e2xldCB1PXM/LmFjdGl2ZUVsZW1lbnQ7aWYocilmb3IodmFyIGM7dT8uc2hhZG93Um9vdDspdT11PT1udWxsfHwoYz11LnNoYWRvd1Jvb3QpPT09bnVsbHx8Yz09PXZvaWQgMD92b2lkIDA6Yy5hY3RpdmVFbGVtZW50O3JldHVybiB1fSxhPU9lKCksbD0oKT0+e2EudmFsdWU9aSgpfTtpZihuKXtjb25zdCB1PXtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9O1V0KG4sImJsdXIiLGM9PntjLnJlbGF0ZWRUYXJnZXQ9PT1udWxsJiZsKCl9LHUpLFV0KG4sImZvY3VzIixsLHUpfXJldHVybiBvJiZKUChhLGwse2RvY3VtZW50OnN9KSxsKCksYX1mdW5jdGlvbiBZYihlLHQ9e30pe2NvbnN0e2ltbWVkaWF0ZTpuPSEwLGZwc0xpbWl0OnI9bnVsbCx3aW5kb3c6bz1WdCxvbmNlOnM9ITF9PXQsaT1PZSghMSksYT1OKCgpPT57Y29uc3QgcD1FZShyKTtyZXR1cm4gcD8xZTMvcDpudWxsfSk7bGV0IGw9MCx1PW51bGw7ZnVuY3Rpb24gYyhwKXtpZighaS52YWx1ZXx8IW8pcmV0dXJuO2x8fChsPXApO2NvbnN0IG09cC1sO2lmKGEudmFsdWUmJm08YS52YWx1ZSl7dT1vLnJlcXVlc3RBbmltYXRpb25GcmFtZShjKTtyZXR1cm59aWYobD1wLGUoe2RlbHRhOm0sdGltZXN0YW1wOnB9KSxzKXtpLnZhbHVlPSExLHU9bnVsbDtyZXR1cm59dT1vLnJlcXVlc3RBbmltYXRpb25GcmFtZShjKX1mdW5jdGlvbiBmKCl7IWkudmFsdWUmJm8mJihpLnZhbHVlPSEwLGw9MCx1PW8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGMpKX1mdW5jdGlvbiBkKCl7aS52YWx1ZT0hMSx1IT1udWxsJiZvJiYoby5jYW5jZWxBbmltYXRpb25GcmFtZSh1KSx1PW51bGwpfXJldHVybiBuJiZmKCksR24oZCkse2lzQWN0aXZlOiRyKGkpLHBhdXNlOmQscmVzdW1lOmZ9fWZ1bmN0aW9uIERtKGUsdD17fSl7Y29uc3R7Y29udHJvbHM6bj0hMSxuYXZpZ2F0b3I6cj1LYn09dCxvPWppKCgpPT5yJiYicGVybWlzc2lvbnMiaW4gcikscz1PZSgpLGk9dHlwZW9mIGU9PSJzdHJpbmciP3tuYW1lOmV9OmUsYT1PZSgpLGw9KCk9Pnt2YXIgYyxmO2EudmFsdWU9KGM9KGY9cy52YWx1ZSk9PT1udWxsfHxmPT09dm9pZCAwP3ZvaWQgMDpmLnN0YXRlKSE9PW51bGwmJmMhPT12b2lkIDA/YzoicHJvbXB0In07VXQocywiY2hhbmdlIixsLHtwYXNzaXZlOiEwfSk7Y29uc3QgdT1MUChhc3luYygpPT57aWYoby52YWx1ZSl7aWYoIXMudmFsdWUpdHJ5e3MudmFsdWU9YXdhaXQgci5wZXJtaXNzaW9ucy5xdWVyeShpKX1jYXRjaHtzLnZhbHVlPXZvaWQgMH1maW5hbGx5e2woKX1pZihuKXJldHVybiBqZShzLnZhbHVlKX19KTtyZXR1cm4gdSgpLG4/e3N0YXRlOmEsaXNTdXBwb3J0ZWQ6byxxdWVyeTp1fTphfWZ1bmN0aW9uIFNxKGU9e30pe2NvbnN0e25hdmlnYXRvcjp0PUtiLHJlYWQ6bj0hMSxzb3VyY2U6cixjb3BpZWREdXJpbmc6bz0xNTAwLGxlZ2FjeTpzPSExfT1lLGk9amkoKCk9PnQmJiJjbGlwYm9hcmQiaW4gdCksYT1EbSgiY2xpcGJvYXJkLXJlYWQiKSxsPURtKCJjbGlwYm9hcmQtd3JpdGUiKSx1PU4oKCk9PmkudmFsdWV8fHMpLGM9T2UoIiIpLGY9T2UoITEpLGQ9bmQoKCk9PmYudmFsdWU9ITEsbyx7aW1tZWRpYXRlOiExfSk7YXN5bmMgZnVuY3Rpb24gcCgpe2xldCB2PSEoaS52YWx1ZSYmdyhhLnZhbHVlKSk7aWYoIXYpdHJ5e2MudmFsdWU9YXdhaXQgdC5jbGlwYm9hcmQucmVhZFRleHQoKX1jYXRjaHt2PSEwfXYmJihjLnZhbHVlPV8oKSl9dS52YWx1ZSYmbiYmVXQoWyJjb3B5IiwiY3V0Il0scCx7cGFzc2l2ZTohMH0pO2FzeW5jIGZ1bmN0aW9uIG0odj1FZShyKSl7aWYodS52YWx1ZSYmdiE9bnVsbCl7bGV0IGg9IShpLnZhbHVlJiZ3KGwudmFsdWUpKTtpZighaCl0cnl7YXdhaXQgdC5jbGlwYm9hcmQud3JpdGVUZXh0KHYpfWNhdGNoe2g9ITB9aCYmeSh2KSxjLnZhbHVlPXYsZi52YWx1ZT0hMCxkLnN0YXJ0KCl9fWZ1bmN0aW9uIHkodil7Y29uc3QgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2gudmFsdWU9dixoLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaC5zdHlsZS5vcGFjaXR5PSIwIixoLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGgpLGguc2VsZWN0KCksZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKSxoLnJlbW92ZSgpfWZ1bmN0aW9uIF8oKXt2YXIgdixoLGI7cmV0dXJuKHY9KGg9ZG9jdW1lbnQpPT09bnVsbHx8aD09PXZvaWQgMHx8KGI9aC5nZXRTZWxlY3Rpb24pPT09bnVsbHx8Yj09PXZvaWQgMHx8KGI9Yi5jYWxsKGgpKT09PW51bGx8fGI9PT12b2lkIDA/dm9pZCAwOmIudG9TdHJpbmcoKSkhPT1udWxsJiZ2IT09dm9pZCAwP3Y6IiJ9ZnVuY3Rpb24gdyh2KXtyZXR1cm4gdj09PSJncmFudGVkInx8dj09PSJwcm9tcHQifXJldHVybntpc1N1cHBvcnRlZDp1LHRleHQ6JHIoYyksY29waWVkOiRyKGYpLGNvcHk6bX19ZnVuY3Rpb24gWlAoZSl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWNvbnN0IGZhPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30sZGE9Il9fdnVldXNlX3Nzcl9oYW5kbGVyc19fIixlST10SSgpO2Z1bmN0aW9uIHRJKCl7cmV0dXJuIGRhIGluIGZhfHwoZmFbZGFdPWZhW2RhXXx8e30pLGZhW2RhXX1mdW5jdGlvbiBuSShlLHQpe3JldHVybiBlSVtlXXx8dH1mdW5jdGlvbiBySShlKXtyZXR1cm4gZT09bnVsbD8iYW55IjplIGluc3RhbmNlb2YgU2V0PyJzZXQiOmUgaW5zdGFuY2VvZiBNYXA/Im1hcCI6ZSBpbnN0YW5jZW9mIERhdGU/ImRhdGUiOnR5cGVvZiBlPT0iYm9vbGVhbiI/ImJvb2xlYW4iOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjp0eXBlb2YgZT09Im9iamVjdCI/Im9iamVjdCI6TnVtYmVyLmlzTmFOKGUpPyJhbnkiOiJudW1iZXIifWNvbnN0IG9JPXtib29sZWFuOntyZWFkOmU9PmU9PT0idHJ1ZSIsd3JpdGU6ZT0+U3RyaW5nKGUpfSxvYmplY3Q6e3JlYWQ6ZT0+SlNPTi5wYXJzZShlKSx3cml0ZTplPT5KU09OLnN0cmluZ2lmeShlKX0sbnVtYmVyOntyZWFkOmU9Pk51bWJlci5wYXJzZUZsb2F0KGUpLHdyaXRlOmU9PlN0cmluZyhlKX0sYW55OntyZWFkOmU9PmUsd3JpdGU6ZT0+U3RyaW5nKGUpfSxzdHJpbmc6e3JlYWQ6ZT0+ZSx3cml0ZTplPT5TdHJpbmcoZSl9LG1hcDp7cmVhZDplPT5uZXcgTWFwKEpTT04ucGFyc2UoZSkpLHdyaXRlOmU9PkpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oZS5lbnRyaWVzKCkpKX0sc2V0OntyZWFkOmU9Pm5ldyBTZXQoSlNPTi5wYXJzZShlKSksd3JpdGU6ZT0+SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShlKSl9LGRhdGU6e3JlYWQ6ZT0+bmV3IERhdGUoZSksd3JpdGU6ZT0+ZS50b0lTT1N0cmluZygpfX0sTG09InZ1ZXVzZS1zdG9yYWdlIjtmdW5jdGlvbiBrcShlLHQsbixyPXt9KXt2YXIgbztjb25zdHtmbHVzaDpzPSJwcmUiLGRlZXA6aT0hMCxsaXN0ZW5Ub1N0b3JhZ2VDaGFuZ2VzOmE9ITAsd3JpdGVEZWZhdWx0czpsPSEwLG1lcmdlRGVmYXVsdHM6dT0hMSxzaGFsbG93OmMsd2luZG93OmY9VnQsZXZlbnRGaWx0ZXI6ZCxvbkVycm9yOnA9TD0+e30saW5pdE9uTW91bnRlZDptfT1yLHk9KGM/T2U6RykodHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOnQpLF89TigoKT0+RWUoZSkpO2lmKCFuKXRyeXtuPW5JKCJnZXREZWZhdWx0U3RvcmFnZSIsKCk9PlZ0Py5sb2NhbFN0b3JhZ2UpKCl9Y2F0Y2goTCl7cChMKX1pZighbilyZXR1cm4geTtjb25zdCB3PUVlKHQpLHY9ckkodyksaD0obz1yLnNlcmlhbGl6ZXIpIT09bnVsbCYmbyE9PXZvaWQgMD9vOm9JW3ZdLHtwYXVzZTpiLHJlc3VtZTp4fT1CdSh5LEw9PlAoTCkse2ZsdXNoOnMsZGVlcDppLGV2ZW50RmlsdGVyOmR9KTtQZShfLCgpPT5EKCkse2ZsdXNoOnN9KTtsZXQgUz0hMTtjb25zdCBrPUw9PnttJiYhU3x8RChMKX0sVD1MPT57bSYmIVN8fFcoTCl9O2YmJmEmJihuIGluc3RhbmNlb2YgU3RvcmFnZT9VdChmLCJzdG9yYWdlIixrLHtwYXNzaXZlOiEwfSk6VXQoZixMbSxUKSksbT9xbCgoKT0+e1M9ITAsRCgpfSk6RCgpO2Z1bmN0aW9uIEMoTCxqKXtpZihmKXtjb25zdCBJPXtrZXk6Xy52YWx1ZSxvbGRWYWx1ZTpMLG5ld1ZhbHVlOmosc3RvcmFnZUFyZWE6bn07Zi5kaXNwYXRjaEV2ZW50KG4gaW5zdGFuY2VvZiBTdG9yYWdlP25ldyBTdG9yYWdlRXZlbnQoInN0b3JhZ2UiLEkpOm5ldyBDdXN0b21FdmVudChMbSx7ZGV0YWlsOkl9KSl9fWZ1bmN0aW9uIFAoTCl7dHJ5e2NvbnN0IGo9bi5nZXRJdGVtKF8udmFsdWUpO2lmKEw9PW51bGwpQyhqLG51bGwpLG4ucmVtb3ZlSXRlbShfLnZhbHVlKTtlbHNle2NvbnN0IEk9aC53cml0ZShMKTtqIT09SSYmKG4uc2V0SXRlbShfLnZhbHVlLEkpLEMoaixJKSl9fWNhdGNoKGope3Aoail9fWZ1bmN0aW9uIEYoTCl7Y29uc3Qgaj1MP0wubmV3VmFsdWU6bi5nZXRJdGVtKF8udmFsdWUpO2lmKGo9PW51bGwpcmV0dXJuIGwmJnchPW51bGwmJm4uc2V0SXRlbShfLnZhbHVlLGgud3JpdGUodykpLHc7aWYoIUwmJnUpe2NvbnN0IEk9aC5yZWFkKGopO3JldHVybiB0eXBlb2YgdT09ImZ1bmN0aW9uIj91KEksdyk6dj09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShJKT97Li4udywuLi5JfTpJfWVsc2UgcmV0dXJuIHR5cGVvZiBqIT0ic3RyaW5nIj9qOmgucmVhZChqKX1mdW5jdGlvbiBEKEwpe2lmKCEoTCYmTC5zdG9yYWdlQXJlYSE9PW4pKXtpZihMJiZMLmtleT09bnVsbCl7eS52YWx1ZT13O3JldHVybn1pZighKEwmJkwua2V5IT09Xy52YWx1ZSkpe2IoKTt0cnl7Y29uc3Qgaj1oLndyaXRlKHkudmFsdWUpOyhMPT09dm9pZCAwfHxMPy5uZXdWYWx1ZSE9PWopJiYoeS52YWx1ZT1GKEwpKX1jYXRjaChqKXtwKGopfWZpbmFsbHl7TD9pdCh4KTp4KCl9fX19ZnVuY3Rpb24gVyhMKXtEKEwuZGV0YWlsKX1yZXR1cm4geX1mdW5jdGlvbiBzSShlKXtjb25zdCB0PW10KCksbj1DUCgoKT0+bnVsbCwoKT0+dC5wcm94eS4kZWwpO3JldHVybiB4bChuLnRyaWdnZXIpLG90KG4udHJpZ2dlciksbn1mdW5jdGlvbiBKYihlLHQsbj17fSl7Y29uc3R7d2luZG93OnI9VnQsLi4ub309bjtsZXQgcztjb25zdCBpPWppKCgpPT5yJiYiUmVzaXplT2JzZXJ2ZXIiaW4gciksYT0oKT0+e3MmJihzLmRpc2Nvbm5lY3QoKSxzPXZvaWQgMCl9LGw9UGUoTigoKT0+e2NvbnN0IGM9RWUoZSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYyk/Yy5tYXAoZj0+QXQoZikpOltBdChjKV19KSxjPT57aWYoYSgpLGkudmFsdWUmJnIpe3M9bmV3IFJlc2l6ZU9ic2VydmVyKHQpO2Zvcihjb25zdCBmIG9mIGMpZiYmcy5vYnNlcnZlKGYsbyl9fSx7aW1tZWRpYXRlOiEwLGZsdXNoOiJwb3N0In0pLHU9KCk9PnthKCksbCgpfTtyZXR1cm4gR24odSkse2lzU3VwcG9ydGVkOmksc3RvcDp1fX1mdW5jdGlvbiBpSShlLHQsbj17fSl7Y29uc3R7cm9vdDpyLHJvb3RNYXJnaW46byx0aHJlc2hvbGQ6cz0wLHdpbmRvdzppPVZ0LGltbWVkaWF0ZTphPSEwfT1uLGw9amkoKCk9PmkmJiJJbnRlcnNlY3Rpb25PYnNlcnZlciJpbiBpKSx1PU4oKCk9PmRpKEVlKGUpKS5tYXAoQXQpLmZpbHRlcih6YikpO2xldCBjPUluO2NvbnN0IGY9T2UoYSksZD1sLnZhbHVlP1BlKCgpPT5bdS52YWx1ZSxBdChyKSxFZShvKSxmLnZhbHVlXSwoW20seSxfXSk9PntpZihjKCksIWYudmFsdWV8fCFtLmxlbmd0aClyZXR1cm47Y29uc3Qgdz1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodCx7cm9vdDpBdCh5KSxyb290TWFyZ2luOl8sdGhyZXNob2xkOnN9KTttLmZvckVhY2godj0+diYmdy5vYnNlcnZlKHYpKSxjPSgpPT57dy5kaXNjb25uZWN0KCksYz1Jbn19LHtpbW1lZGlhdGU6YSxmbHVzaDoicG9zdCJ9KTpJbixwPSgpPT57YygpLGQoKSxmLnZhbHVlPSExfTtyZXR1cm4gR24ocCkse2lzU3VwcG9ydGVkOmwsaXNBY3RpdmU6ZixwYXVzZSgpe2MoKSxmLnZhbHVlPSExfSxyZXN1bWUoKXtmLnZhbHVlPSEwfSxzdG9wOnB9fWZ1bmN0aW9uIGFJKGUsdD17fSl7Y29uc3R7d2luZG93Om49VnQsc2Nyb2xsVGFyZ2V0OnIsdGhyZXNob2xkOm89MCxyb290TWFyZ2luOnMsb25jZTppPSExLGluaXRpYWxWYWx1ZTphPSExfT10LGw9T2UoYSkse3N0b3A6dX09aUkoZSxjPT57bGV0IGY9bC52YWx1ZSxkPTA7Zm9yKGNvbnN0IHAgb2YgYylwLnRpbWU+PWQmJihkPXAudGltZSxmPXAuaXNJbnRlcnNlY3RpbmcpO2wudmFsdWU9ZixpJiZHUChsLCgpPT57dSgpfSl9LHtyb290OnIsd2luZG93Om4sdGhyZXNob2xkOm8scm9vdE1hcmdpbjpzfSk7cmV0dXJuIGx9Y29uc3QgS3M9bmV3IE1hcDtmdW5jdGlvbiBFcShlKXtjb25zdCB0PXFyKCk7ZnVuY3Rpb24gbihhKXt2YXIgbDtjb25zdCB1PUtzLmdldChlKXx8bmV3IFNldDt1LmFkZChhKSxLcy5zZXQoZSx1KTtjb25zdCBjPSgpPT5vKGEpO3JldHVybiB0PT1udWxsfHwobD10LmNsZWFudXBzKT09PW51bGx8fGw9PT12b2lkIDB8fGwucHVzaChjKSxjfWZ1bmN0aW9uIHIoYSl7ZnVuY3Rpb24gbCguLi51KXtvKGwpLGEoLi4udSl9cmV0dXJuIG4obCl9ZnVuY3Rpb24gbyhhKXtjb25zdCBsPUtzLmdldChlKTtsJiYobC5kZWxldGUoYSksbC5zaXplfHxzKCkpfWZ1bmN0aW9uIHMoKXtLcy5kZWxldGUoZSl9ZnVuY3Rpb24gaShhLGwpe3ZhciB1Oyh1PUtzLmdldChlKSk9PT1udWxsfHx1PT09dm9pZCAwfHx1LmZvckVhY2goYz0+YyhhLGwpKX1yZXR1cm57b246bixvbmNlOnIsb2ZmOm8sZW1pdDppLHJlc2V0OnN9fWZ1bmN0aW9uIGxJKGUpe3JldHVybiB0eXBlb2YgV2luZG93PCJ1IiYmZSBpbnN0YW5jZW9mIFdpbmRvdz9lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDp0eXBlb2YgRG9jdW1lbnQ8InUiJiZlIGluc3RhbmNlb2YgRG9jdW1lbnQ/ZS5kb2N1bWVudEVsZW1lbnQ6ZX1jb25zdCAkbT0xO2Z1bmN0aW9uIGNJKGUsdD17fSl7Y29uc3R7dGhyb3R0bGU6bj0wLGlkbGU6cj0yMDAsb25TdG9wOm89SW4sb25TY3JvbGw6cz1JbixvZmZzZXQ6aT17bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjB9LG9ic2VydmU6YT17bXV0YXRpb246ITF9LGV2ZW50TGlzdGVuZXJPcHRpb25zOmw9e2NhcHR1cmU6ITEscGFzc2l2ZTohMH0sYmVoYXZpb3I6dT0iYXV0byIsd2luZG93OmM9VnQsb25FcnJvcjpmPUM9Pnt9fT10LGQ9dHlwZW9mIGE9PSJib29sZWFuIj97bXV0YXRpb246YX06YSxwPU9lKDApLG09T2UoMCkseT1OKHtnZXQoKXtyZXR1cm4gcC52YWx1ZX0sc2V0KEMpe3coQyx2b2lkIDApfX0pLF89Tih7Z2V0KCl7cmV0dXJuIG0udmFsdWV9LHNldChDKXt3KHZvaWQgMCxDKX19KTtmdW5jdGlvbiB3KEMsUCl7dmFyIEYsRCxXLEw7aWYoIWMpcmV0dXJuO2NvbnN0IGo9RWUoZSk7aWYoIWopcmV0dXJuOyhGPWogaW5zdGFuY2VvZiBEb2N1bWVudD9jLmRvY3VtZW50LmJvZHk6aik9PT1udWxsfHxGPT09dm9pZCAwfHxGLnNjcm9sbFRvKHt0b3A6KEQ9RWUoUCkpIT09bnVsbCYmRCE9PXZvaWQgMD9EOl8udmFsdWUsbGVmdDooVz1FZShDKSkhPT1udWxsJiZXIT09dm9pZCAwP1c6eS52YWx1ZSxiZWhhdmlvcjpFZSh1KX0pO2NvbnN0IEk9KGo9PW51bGx8fChMPWouZG9jdW1lbnQpPT09bnVsbHx8TD09PXZvaWQgMD92b2lkIDA6TC5kb2N1bWVudEVsZW1lbnQpfHxqPy5kb2N1bWVudEVsZW1lbnR8fGo7eSE9bnVsbCYmKHAudmFsdWU9SS5zY3JvbGxMZWZ0KSxfIT1udWxsJiYobS52YWx1ZT1JLnNjcm9sbFRvcCl9Y29uc3Qgdj1PZSghMSksaD1idCh7bGVmdDohMCxyaWdodDohMSx0b3A6ITAsYm90dG9tOiExfSksYj1idCh7bGVmdDohMSxyaWdodDohMSx0b3A6ITEsYm90dG9tOiExfSkseD1DPT57di52YWx1ZSYmKHYudmFsdWU9ITEsYi5sZWZ0PSExLGIucmlnaHQ9ITEsYi50b3A9ITEsYi5ib3R0b209ITEsbyhDKSl9LFM9dGQoeCxuK3IpLGs9Qz0+e3ZhciBQO2lmKCFjKXJldHVybjtjb25zdCBGPShDPT1udWxsfHwoUD1DLmRvY3VtZW50KT09PW51bGx8fFA9PT12b2lkIDA/dm9pZCAwOlAuZG9jdW1lbnRFbGVtZW50KXx8Qz8uZG9jdW1lbnRFbGVtZW50fHxBdChDKSx7ZGlzcGxheTpELGZsZXhEaXJlY3Rpb246VyxkaXJlY3Rpb246TH09Yy5nZXRDb21wdXRlZFN0eWxlKEYpLGo9TD09PSJydGwiPy0xOjEsST1GLnNjcm9sbExlZnQ7Yi5sZWZ0PUk8cC52YWx1ZSxiLnJpZ2h0PUk+cC52YWx1ZTtjb25zdCBWPU1hdGguYWJzKEkqaik8PShpLmxlZnR8fDApLEI9TWF0aC5hYnMoSSpqKStGLmNsaWVudFdpZHRoPj1GLnNjcm9sbFdpZHRoLShpLnJpZ2h0fHwwKS0kbTtEPT09ImZsZXgiJiZXPT09InJvdy1yZXZlcnNlIj8oaC5sZWZ0PUIsaC5yaWdodD1WKTooaC5sZWZ0PVYsaC5yaWdodD1CKSxwLnZhbHVlPUk7bGV0IGllPUYuc2Nyb2xsVG9wO0M9PT1jLmRvY3VtZW50JiYhaWUmJihpZT1jLmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSxiLnRvcD1pZTxtLnZhbHVlLGIuYm90dG9tPWllPm0udmFsdWU7Y29uc3QgbmU9TWF0aC5hYnMoaWUpPD0oaS50b3B8fDApLFZlPU1hdGguYWJzKGllKStGLmNsaWVudEhlaWdodD49Ri5zY3JvbGxIZWlnaHQtKGkuYm90dG9tfHwwKS0kbTtEPT09ImZsZXgiJiZXPT09ImNvbHVtbi1yZXZlcnNlIj8oaC50b3A9VmUsaC5ib3R0b209bmUpOihoLnRvcD1uZSxoLmJvdHRvbT1WZSksbS52YWx1ZT1pZX0sVD1DPT57dmFyIFA7YyYmKGsoKFA9Qy50YXJnZXQuZG9jdW1lbnRFbGVtZW50KSE9PW51bGwmJlAhPT12b2lkIDA/UDpDLnRhcmdldCksdi52YWx1ZT0hMCxTKEMpLHMoQykpfTtyZXR1cm4gVXQoZSwic2Nyb2xsIixuP1diKFQsbiwhMCwhMSk6VCxsKSxxbCgoKT0+e3RyeXtjb25zdCBDPUVlKGUpO2lmKCFDKXJldHVybjtrKEMpfWNhdGNoKEMpe2YoQyl9fSksZD8ubXV0YXRpb24mJmUhPW51bGwmJmUhPT1jJiZlIT09ZG9jdW1lbnQmJnJkKGUsKCk9Pntjb25zdCBDPUVlKGUpO0MmJmsoQyl9LHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksVXQoZSwic2Nyb2xsZW5kIix4LGwpLHt4OnkseTpfLGlzU2Nyb2xsaW5nOnYsYXJyaXZlZFN0YXRlOmgsZGlyZWN0aW9uczpiLG1lYXN1cmUoKXtjb25zdCBDPUVlKGUpO2MmJkMmJmsoQyl9fX1mdW5jdGlvbiBUcShlLHQsbj17fSl7dmFyIHI7Y29uc3R7ZGlyZWN0aW9uOm89ImJvdHRvbSIsaW50ZXJ2YWw6cz0xMDAsY2FuTG9hZE1vcmU6aT0oKT0+ITB9PW4sYT1idChjSShlLHsuLi5uLG9mZnNldDp7W29dOihyPW4uZGlzdGFuY2UpIT09bnVsbCYmciE9PXZvaWQgMD9yOjAsLi4ubi5vZmZzZXR9fSkpLGw9RygpLHU9TigoKT0+ISFsLnZhbHVlKSxjPU4oKCk9PmxJKEVlKGUpKSksZj1hSShjKSxkPU4oKCk9PmMudmFsdWU/aShjLnZhbHVlKTohMSk7ZnVuY3Rpb24gcCgpe2lmKGEubWVhc3VyZSgpLCFjLnZhbHVlfHwhZi52YWx1ZXx8IWQudmFsdWV8fGwudmFsdWUpcmV0dXJuO2NvbnN0e3Njcm9sbEhlaWdodDptLGNsaWVudEhlaWdodDp5LHNjcm9sbFdpZHRoOl8sY2xpZW50V2lkdGg6d309Yy52YWx1ZSx2PW89PT0iYm90dG9tInx8bz09PSJ0b3AiP208PXk6Xzw9dzsoYS5hcnJpdmVkU3RhdGVbb118fHYpJiYobC52YWx1ZT1Qcm9taXNlLmFsbChbdChhKSxuZXcgUHJvbWlzZShoPT5zZXRUaW1lb3V0KGgscykpXSkuZmluYWxseSgoKT0+e2wudmFsdWU9bnVsbCxpdCgoKT0+cCgpKX0pKX1yZXR1cm4gVVAoUGUoKCk9PlthLmFycml2ZWRTdGF0ZVtvXSxmLnZhbHVlLGQudmFsdWVdLHAse2ltbWVkaWF0ZTohMCxmbHVzaDoicG9zdCJ9KSkse2lzTG9hZGluZzp1LHJlc2V0KCl7aXQoKCk9PnAoKSl9fX1jb25zdCB1ST17cGFnZTplPT5bZS5wYWdlWCxlLnBhZ2VZXSxjbGllbnQ6ZT0+W2UuY2xpZW50WCxlLmNsaWVudFldLHNjcmVlbjplPT5bZS5zY3JlZW5YLGUuc2NyZWVuWV0sbW92ZW1lbnQ6ZT0+ZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQ/W2UubW92ZW1lbnRYLGUubW92ZW1lbnRZXTpudWxsfTtmdW5jdGlvbiBmSShlPXt9KXtjb25zdHt0eXBlOnQ9InBhZ2UiLHRvdWNoOm49ITAscmVzZXRPblRvdWNoRW5kczpyPSExLGluaXRpYWxWYWx1ZTpvPXt4OjAseTowfSx3aW5kb3c6cz1WdCx0YXJnZXQ6aT1zLHNjcm9sbDphPSEwLGV2ZW50RmlsdGVyOmx9PWU7bGV0IHU9bnVsbCxjPTAsZj0wO2NvbnN0IGQ9T2Uoby54KSxwPU9lKG8ueSksbT1PZShudWxsKSx5PXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6dUlbdF0sXz1rPT57Y29uc3QgVD15KGspO3U9ayxUJiYoW2QudmFsdWUscC52YWx1ZV09VCxtLnZhbHVlPSJtb3VzZSIpLHMmJihjPXMuc2Nyb2xsWCxmPXMuc2Nyb2xsWSl9LHc9az0+e2lmKGsudG91Y2hlcy5sZW5ndGg+MCl7Y29uc3QgVD15KGsudG91Y2hlc1swXSk7VCYmKFtkLnZhbHVlLHAudmFsdWVdPVQsbS52YWx1ZT0idG91Y2giKX19LHY9KCk9PntpZighdXx8IXMpcmV0dXJuO2NvbnN0IGs9eSh1KTt1IGluc3RhbmNlb2YgTW91c2VFdmVudCYmayYmKGQudmFsdWU9a1swXStzLnNjcm9sbFgtYyxwLnZhbHVlPWtbMV0rcy5zY3JvbGxZLWYpfSxoPSgpPT57ZC52YWx1ZT1vLngscC52YWx1ZT1vLnl9LGI9bD9rPT5sKCgpPT5fKGspLHt9KTprPT5fKGspLHg9bD9rPT5sKCgpPT53KGspLHt9KTprPT53KGspLFM9bD8oKT0+bCgoKT0+digpLHt9KTooKT0+digpO2lmKGkpe2NvbnN0IGs9e3Bhc3NpdmU6ITB9O1V0KGksWyJtb3VzZW1vdmUiLCJkcmFnb3ZlciJdLGIsayksbiYmdCE9PSJtb3ZlbWVudCImJihVdChpLFsidG91Y2hzdGFydCIsInRvdWNobW92ZSJdLHgsayksciYmVXQoaSwidG91Y2hlbmQiLGgsaykpLGEmJnQ9PT0icGFnZSImJlV0KHMsInNjcm9sbCIsUyxrKX1yZXR1cm57eDpkLHk6cCxzb3VyY2VUeXBlOm19fWZ1bmN0aW9uIENxKGUsdD17fSl7Y29uc3R7d2luZG93UmVzaXplOm49ITAsd2luZG93U2Nyb2xsOnI9ITAsaGFuZGxlT3V0c2lkZTpvPSEwLHdpbmRvdzpzPVZ0fT10LGk9dC50eXBlfHwicGFnZSIse3g6YSx5Omwsc291cmNlVHlwZTp1fT1mSSh0KSxjPU9lKGU/P3M/LmRvY3VtZW50LmJvZHkpLGY9T2UoMCksZD1PZSgwKSxwPU9lKDApLG09T2UoMCkseT1PZSgwKSxfPU9lKDApLHc9T2UoITApO2Z1bmN0aW9uIHYoKXtpZighcylyZXR1cm47Y29uc3QgeD1BdChjKTtpZighKCF4fHwhKHggaW5zdGFuY2VvZiBFbGVtZW50KSkpZm9yKGNvbnN0IFMgb2YgeC5nZXRDbGllbnRSZWN0cygpKXtjb25zdHtsZWZ0OmssdG9wOlQsd2lkdGg6QyxoZWlnaHQ6UH09UztwLnZhbHVlPWsrKGk9PT0icGFnZSI/cy5wYWdlWE9mZnNldDowKSxtLnZhbHVlPVQrKGk9PT0icGFnZSI/cy5wYWdlWU9mZnNldDowKSx5LnZhbHVlPVAsXy52YWx1ZT1DO2NvbnN0IEY9YS52YWx1ZS1wLnZhbHVlLEQ9bC52YWx1ZS1tLnZhbHVlO2lmKHcudmFsdWU9Qz09PTB8fFA9PT0wfHxGPDB8fEQ8MHx8Rj5DfHxEPlAsKG98fCF3LnZhbHVlKSYmKGYudmFsdWU9RixkLnZhbHVlPUQpLCF3LnZhbHVlKWJyZWFrfX1jb25zdCBoPVtdO2Z1bmN0aW9uIGIoKXtoLmZvckVhY2goeD0+eCgpKSxoLmxlbmd0aD0wfWlmKHFsKCgpPT57digpfSkscyl7Y29uc3R7c3RvcDp4fT1KYihjLHYpLHtzdG9wOlN9PXJkKGMsdix7YXR0cmlidXRlRmlsdGVyOlsic3R5bGUiLCJjbGFzcyJdfSksaz1QZShbYyxhLGxdLHYpO2gucHVzaCh4LFMsayksVXQoZG9jdW1lbnQsIm1vdXNlbGVhdmUiLCgpPT53LnZhbHVlPSEwLHtwYXNzaXZlOiEwfSksciYmaC5wdXNoKFV0KCJzY3JvbGwiLHYse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pKSxuJiZoLnB1c2goVXQoInJlc2l6ZSIsdix7cGFzc2l2ZTohMH0pKX1yZXR1cm57eDphLHk6bCxzb3VyY2VUeXBlOnUsZWxlbWVudFg6ZixlbGVtZW50WTpkLGVsZW1lbnRQb3NpdGlvblg6cCxlbGVtZW50UG9zaXRpb25ZOm0sZWxlbWVudEhlaWdodDp5LGVsZW1lbnRXaWR0aDpfLGlzT3V0c2lkZTp3LHN0b3A6Yn19ZnVuY3Rpb24gQXEoZT1zSSgpKXtjb25zdCB0PU9lKCksbj0oKT0+e2NvbnN0IHI9QXQoZSk7ciYmKHQudmFsdWU9ci5wYXJlbnRFbGVtZW50KX07cmV0dXJuIHFsKG4pLFBlKCgpPT5FZShlKSxuKSx0fWZ1bmN0aW9uIGFvKGUsdCxuLHI9e30pe3ZhciBvLHM7Y29uc3R7Y2xvbmU6aT0hMSxwYXNzaXZlOmE9ITEsZXZlbnROYW1lOmwsZGVlcDp1PSExLGRlZmF1bHRWYWx1ZTpjLHNob3VsZEVtaXQ6Zn09cixkPW10KCkscD1ufHxkPy5lbWl0fHwoZD09bnVsbHx8KG89ZC4kZW1pdCk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmJpbmQoZCkpfHwoZD09bnVsbHx8KHM9ZC5wcm94eSk9PT1udWxsfHxzPT09dm9pZCAwfHwocz1zLiRlbWl0KT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMuYmluZChkPy5wcm94eSkpO2xldCBtPWw7dHx8KHQ9Im1vZGVsVmFsdWUiKSxtPW18fGB1cGRhdGU6JHt0LnRvU3RyaW5nKCl9YDtjb25zdCB5PXY9Pmk/dHlwZW9mIGk9PSJmdW5jdGlvbiI/aSh2KTpaUCh2KTp2LF89KCk9Pk9QKGVbdF0pP3koZVt0XSk6Yyx3PXY9PntmP2YodikmJnAobSx2KTpwKG0sdil9O2lmKGEpe2NvbnN0IHY9RyhfKCkpO2xldCBoPSExO3JldHVybiBQZSgoKT0+ZVt0XSxiPT57aHx8KGg9ITAsdi52YWx1ZT15KGIpLGl0KCgpPT5oPSExKSl9KSxQZSh2LGI9PnshaCYmKGIhPT1lW3RdfHx1KSYmdyhiKX0se2RlZXA6dX0pLHZ9ZWxzZSByZXR1cm4gTih7Z2V0KCl7cmV0dXJuIF8oKX0sc2V0KHYpe3codil9fSl9ZnVuY3Rpb24gc2QoZSl7cmV0dXJuIGU/ZS5mbGF0TWFwKHQ9PnQudHlwZT09PUdlP3NkKHQuY2hpbGRyZW4pOlt0XSk6W119Y29uc3RbaWQsZEldPWduKCJDb25maWdQcm92aWRlciIpO3ZhciBwST1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiQ29uZmlnUHJvdmlkZXIiLHByb3BzOntkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Imx0ciJ9LGxvY2FsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZW4ifSxzY3JvbGxCb2R5Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSx1c2VJZDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH19LHNldHVwKGUpe2NvbnN0IHQ9ZSx7ZGlyOm4sbG9jYWxlOnIsc2Nyb2xsQm9keTpvLG5vbmNlOnN9PUVuKHQpO3JldHVybiBkSSh7ZGlyOm4sbG9jYWxlOnIsc2Nyb2xsQm9keTpvLG5vbmNlOnMsdXNlSWQ6dC51c2VJZH0pLChpLGEpPT5VKGkuJHNsb3RzLCJkZWZhdWx0Iil9fSksbUk9cEk7Y29uc3QgaEk9ZWQoKCk9Pntjb25zdCBlPUcobmV3IE1hcCksdD1HKCksbj1OKCgpPT57Zm9yKGNvbnN0IGkgb2YgZS52YWx1ZS52YWx1ZXMoKSlpZihpKXJldHVybiEwO3JldHVybiExfSkscj1pZCh7c2Nyb2xsQm9keTpHKCEwKX0pO2xldCBvPW51bGw7Y29uc3Qgcz0oKT0+e2RvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PSIiLGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luUmlnaHQ9IiIsZG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPSIiLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1zY3JvbGxiYXItd2lkdGgiKSxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PXQudmFsdWU/PyIiLE5tJiZvPy4oKSx0LnZhbHVlPXZvaWQgMH07cmV0dXJuIFBlKG4sKGksYSk9PntpZighaG4pcmV0dXJuO2lmKCFpKXthJiZzKCk7cmV0dXJufXQudmFsdWU9PT12b2lkIDAmJih0LnZhbHVlPWRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cpO2NvbnN0IGw9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHU9e3BhZGRpbmc6bCxtYXJnaW46MH0sYz1yLnNjcm9sbEJvZHk/LnZhbHVlP3R5cGVvZiByLnNjcm9sbEJvZHkudmFsdWU9PSJvYmplY3QiP21uKHtwYWRkaW5nOnIuc2Nyb2xsQm9keS52YWx1ZS5wYWRkaW5nPT09ITA/bDpyLnNjcm9sbEJvZHkudmFsdWUucGFkZGluZyxtYXJnaW46ci5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbj09PSEwP2w6ci5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbn0sdSk6dTp7cGFkZGluZzowLG1hcmdpbjowfTtsPjAmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD10eXBlb2YgYy5wYWRkaW5nPT0ibnVtYmVyIj9gJHtjLnBhZGRpbmd9cHhgOlN0cmluZyhjLnBhZGRpbmcpLGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luUmlnaHQ9dHlwZW9mIGMubWFyZ2luPT0ibnVtYmVyIj9gJHtjLm1hcmdpbn1weGA6U3RyaW5nKGMubWFyZ2luKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tc2Nyb2xsYmFyLXdpZHRoIixgJHtsfXB4YCksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIiksTm0mJihvPVV0KGRvY3VtZW50LCJ0b3VjaG1vdmUiLGY9PmdJKGYpLHtwYXNzaXZlOiExfSkpLGl0KCgpPT57bi52YWx1ZSYmKGRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIil9KX0se2ltbWVkaWF0ZTohMCxmbHVzaDoic3luYyJ9KSxlfSk7ZnVuY3Rpb24gWGIoZSl7Y29uc3QgdD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw3KSxuPWhJKCk7bi52YWx1ZS5zZXQodCxlPz8hMSk7Y29uc3Qgcj1OKHtnZXQ6KCk9Pm4udmFsdWUuZ2V0KHQpPz8hMSxzZXQ6bz0+bi52YWx1ZS5zZXQodCxvKX0pO3JldHVybiBWUCgoKT0+e24udmFsdWUuZGVsZXRlKHQpfSkscn1mdW5jdGlvbiBaYihlKXtjb25zdCB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpO2lmKHQub3ZlcmZsb3dYPT09InNjcm9sbCJ8fHQub3ZlcmZsb3dZPT09InNjcm9sbCJ8fHQub3ZlcmZsb3dYPT09ImF1dG8iJiZlLmNsaWVudFdpZHRoPGUuc2Nyb2xsV2lkdGh8fHQub3ZlcmZsb3dZPT09ImF1dG8iJiZlLmNsaWVudEhlaWdodDxlLnNjcm9sbEhlaWdodClyZXR1cm4hMDt7Y29uc3Qgbj1lLnBhcmVudE5vZGU7cmV0dXJuIShuIGluc3RhbmNlb2YgRWxlbWVudCl8fG4udGFnTmFtZT09PSJCT0RZIj8hMTpaYihuKX19ZnVuY3Rpb24gZ0koZSl7Y29uc3QgdD1lfHx3aW5kb3cuZXZlbnQsbj10LnRhcmdldDtyZXR1cm4gbiBpbnN0YW5jZW9mIEVsZW1lbnQmJlpiKG4pPyExOnQudG91Y2hlcy5sZW5ndGg+MT8hMDoodC5wcmV2ZW50RGVmYXVsdCYmdC5jYW5jZWxhYmxlJiZ0LnByZXZlbnREZWZhdWx0KCksITEpfWZ1bmN0aW9uIHlJKGUpe2NvbnN0IHQ9aWQoe2RpcjpHKCJsdHIiKX0pO3JldHVybiBOKCgpPT5lPy52YWx1ZXx8dC5kaXI/LnZhbHVlfHwibHRyIil9ZnVuY3Rpb24gRmwoZSl7Y29uc3Qgbj1tdCgpPy50eXBlLmVtaXRzLHI9e307cmV0dXJuIG4/Lmxlbmd0aCxuPy5mb3JFYWNoKG89PntyW25pKCR0KG8pKV09KC4uLnMpPT5lKG8sLi4ucyl9KSxyfWxldCAkYz0wO2Z1bmN0aW9uIHZJKCl7b24oZT0+e2lmKCFobilyZXR1cm47Y29uc3QgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yZWthLWZvY3VzLWd1YXJkXSIpO2RvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCJhZnRlcmJlZ2luIix0WzBdPz9NbSgpKSxkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgiYmVmb3JlZW5kIix0WzFdPz9NbSgpKSwkYysrLGUoKCk9PnskYz09PTEmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJla2EtZm9jdXMtZ3VhcmRdIikuZm9yRWFjaChuPT5uLnJlbW92ZSgpKSwkYy0tfSl9KX1mdW5jdGlvbiBNbSgpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiBlLnNldEF0dHJpYnV0ZSgiZGF0YS1yZWthLWZvY3VzLWd1YXJkIiwiIiksZS50YWJJbmRleD0wLGUuc3R5bGUub3V0bGluZT0ibm9uZSIsZS5zdHlsZS5vcGFjaXR5PSIwIixlLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIixlfWZ1bmN0aW9uIGJJKGUpe3JldHVybiBOKCgpPT5FZShlKT8hIUF0KGUpPy5jbG9zZXN0KCJmb3JtIik6ITApfWZ1bmN0aW9uIFVlKCl7Y29uc3QgZT1tdCgpLHQ9RygpLG49TigoKT0+cigpKTt4bCgoKT0+e24udmFsdWUhPT1yKCkmJl9fKHQpfSk7ZnVuY3Rpb24gcigpe3JldHVybiB0LnZhbHVlJiYiJGVsImluIHQudmFsdWUmJlsiI3RleHQiLCIjY29tbWVudCJdLmluY2x1ZGVzKHQudmFsdWUuJGVsLm5vZGVOYW1lKT90LnZhbHVlLiRlbC5uZXh0RWxlbWVudFNpYmxpbmc6QXQodCl9Y29uc3Qgbz1PYmplY3QuYXNzaWduKHt9LGUuZXhwb3NlZCkscz17fTtmb3IoY29uc3QgYSBpbiBlLnByb3BzKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS5wcm9wc1thXX0pO2lmKE9iamVjdC5rZXlzKG8pLmxlbmd0aD4wKWZvcihjb25zdCBhIGluIG8pT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsYSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5vW2FdfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS52bm9kZS5lbH0pLGUuZXhwb3NlZD1zO2Z1bmN0aW9uIGkoYSl7aWYodC52YWx1ZT1hLCEhYSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCIkZWwiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmEgaW5zdGFuY2VvZiBFbGVtZW50P2E6YS4kZWx9KSwhKGEgaW5zdGFuY2VvZiBFbGVtZW50KSYmIU9iamVjdC5oYXNPd24oYSwiJGVsIikpKXtjb25zdCBsPWEuJC5leHBvc2VkLHU9T2JqZWN0LmFzc2lnbih7fSxzKTtmb3IoY29uc3QgYyBpbiBsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LGMse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+bFtjXX0pO2UuZXhwb3NlZD11fX1yZXR1cm57Zm9yd2FyZFJlZjppLGN1cnJlbnRSZWY6dCxjdXJyZW50RWxlbWVudDpufX1mdW5jdGlvbiBwbyhlKXtjb25zdCB0PW10KCksbj1PYmplY3Qua2V5cyh0Py50eXBlLnByb3BzPz97fSkucmVkdWNlKChvLHMpPT57Y29uc3QgaT0odD8udHlwZS5wcm9wc1tzXSkuZGVmYXVsdDtyZXR1cm4gaSE9PXZvaWQgMCYmKG9bc109aSksb30se30pLHI9eXQoZSk7cmV0dXJuIE4oKCk9Pntjb25zdCBvPXt9LHM9dD8udm5vZGUucHJvcHM/P3t9O3JldHVybiBPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGk9PntvWyR0KGkpXT1zW2ldfSksT2JqZWN0LmtleXMoey4uLm4sLi4ub30pLnJlZHVjZSgoaSxhKT0+KHIudmFsdWVbYV0hPT12b2lkIDAmJihpW2FdPXIudmFsdWVbYV0pLGkpLHt9KX0pfWZ1bmN0aW9uICRzKGUsdCl7Y29uc3Qgbj1wbyhlKSxyPXQ/RmwodCk6e307cmV0dXJuIE4oKCk9Pih7Li4ubi52YWx1ZSwuLi5yfSkpfXZhciB3ST1mdW5jdGlvbihlKXtpZih0eXBlb2YgZG9jdW1lbnQ+InUiKXJldHVybiBudWxsO3ZhciB0PUFycmF5LmlzQXJyYXkoZSk/ZVswXTplO3JldHVybiB0Lm93bmVyRG9jdW1lbnQuYm9keX0sWm89bmV3IFdlYWtNYXAscGE9bmV3IFdlYWtNYXAsbWE9e30sTWM9MCxlMD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmKGUuaG9zdHx8ZTAoZS5wYXJlbnROb2RlKSl9LF9JPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKG4pe2lmKGUuY29udGFpbnMobikpcmV0dXJuIG47dmFyIHI9ZTAobik7cmV0dXJuIHImJmUuY29udGFpbnMocik/cjpudWxsfSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiEhbn0pfSx4ST1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1fSSh0LEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pO21hW25dfHwobWFbbl09bmV3IFdlYWtNYXApO3ZhciBzPW1hW25dLGk9W10sYT1uZXcgU2V0LGw9bmV3IFNldChvKSx1PWZ1bmN0aW9uKGYpeyFmfHxhLmhhcyhmKXx8KGEuYWRkKGYpLHUoZi5wYXJlbnROb2RlKSl9O28uZm9yRWFjaCh1KTt2YXIgYz1mdW5jdGlvbihmKXshZnx8bC5oYXMoZil8fEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZi5jaGlsZHJlbixmdW5jdGlvbihkKXtpZihhLmhhcyhkKSljKGQpO2Vsc2UgdHJ5e3ZhciBwPWQuZ2V0QXR0cmlidXRlKHIpLG09cCE9PW51bGwmJnAhPT0iZmFsc2UiLHk9KFpvLmdldChkKXx8MCkrMSxfPShzLmdldChkKXx8MCkrMTtaby5zZXQoZCx5KSxzLnNldChkLF8pLGkucHVzaChkKSx5PT09MSYmbSYmcGEuc2V0KGQsITApLF89PT0xJiZkLnNldEF0dHJpYnV0ZShuLCJ0cnVlIiksbXx8ZC5zZXRBdHRyaWJ1dGUociwidHJ1ZSIpfWNhdGNoe319KX07cmV0dXJuIGModCksYS5jbGVhcigpLE1jKyssZnVuY3Rpb24oKXtpLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIGQ9Wm8uZ2V0KGYpLTEscD1zLmdldChmKS0xO1pvLnNldChmLGQpLHMuc2V0KGYscCksZHx8KHBhLmhhcyhmKXx8Zi5yZW1vdmVBdHRyaWJ1dGUocikscGEuZGVsZXRlKGYpKSxwfHxmLnJlbW92ZUF0dHJpYnV0ZShuKX0pLE1jLS0sTWN8fChabz1uZXcgV2Vha01hcCxabz1uZXcgV2Vha01hcCxwYT1uZXcgV2Vha01hcCxtYT17fSl9fSxTST1mdW5jdGlvbihlLHQsbil7bj09PXZvaWQgMCYmKG49ImRhdGEtYXJpYS1oaWRkZW4iKTt2YXIgcj1BcnJheS5mcm9tKEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLG89d0koZSk7cmV0dXJuIG8/KHIucHVzaC5hcHBseShyLEFycmF5LmZyb20oby5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1saXZlXSwgc2NyaXB0IikpKSx4SShyLG8sbiwiYXJpYS1oaWRkZW4iKSk6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19O2Z1bmN0aW9uIHQwKGUpe2xldCB0O1BlKCgpPT5BdChlKSxuPT57bGV0IHI9ITE7dHJ5e3I9ISFuPy5jbG9zZXN0KCJbcG9wb3Zlcl06bm90KDpwb3BvdmVyLW9wZW4pIil9Y2F0Y2h7fW4mJiFyP3Q9U0kobik6dCYmdCgpfSkscHIoKCk9Pnt0JiZ0KCl9KX1mdW5jdGlvbiBDcyhlLHQ9InJla2EiKXtpZihlKXJldHVybiBlO2xldCBuO3JldHVybiBuPWJmPy4oKSx0P2Ake3R9LSR7bn1gOm59ZnVuY3Rpb24ga0koZSl7Y29uc3QgdD1HKCksbj1OKCgpPT50LnZhbHVlPy53aWR0aD8/MCkscj1OKCgpPT50LnZhbHVlPy5oZWlnaHQ/PzApO3JldHVybiBvdCgoKT0+e2NvbnN0IG89QXQoZSk7aWYobyl7dC52YWx1ZT17d2lkdGg6by5vZmZzZXRXaWR0aCxoZWlnaHQ6by5vZmZzZXRIZWlnaHR9O2NvbnN0IHM9bmV3IFJlc2l6ZU9ic2VydmVyKGk9PntpZighQXJyYXkuaXNBcnJheShpKXx8IWkubGVuZ3RoKXJldHVybjtjb25zdCBhPWlbMF07bGV0IGwsdTtpZigiYm9yZGVyQm94U2l6ZSJpbiBhKXtjb25zdCBjPWEuYm9yZGVyQm94U2l6ZSxmPUFycmF5LmlzQXJyYXkoYyk/Y1swXTpjO2w9Zi5pbmxpbmVTaXplLHU9Zi5ibG9ja1NpemV9ZWxzZSBsPW8ub2Zmc2V0V2lkdGgsdT1vLm9mZnNldEhlaWdodDt0LnZhbHVlPXt3aWR0aDpsLGhlaWdodDp1fX0pO3JldHVybiBzLm9ic2VydmUobyx7Ym94OiJib3JkZXItYm94In0pLCgpPT5zLnVub2JzZXJ2ZShvKX1lbHNlIHQudmFsdWU9dm9pZCAwfSkse3dpZHRoOm4saGVpZ2h0OnJ9fWZ1bmN0aW9uIEVJKGUsdCl7Y29uc3Qgbj1HKGUpO2Z1bmN0aW9uIHIocyl7cmV0dXJuIHRbbi52YWx1ZV1bc10/P24udmFsdWV9cmV0dXJue3N0YXRlOm4sZGlzcGF0Y2g6cz0+e24udmFsdWU9cihzKX19fWZ1bmN0aW9uIG4wKGUpe2NvbnN0IHQ9alAoIiIsMWUzKTtyZXR1cm57c2VhcmNoOnQsaGFuZGxlVHlwZWFoZWFkU2VhcmNoOihvLHMpPT57dC52YWx1ZT10LnZhbHVlK287e2NvbnN0IGk9cm4oKSxhPXMubWFwKGQ9Pih7Li4uZCx0ZXh0VmFsdWU6ZC52YWx1ZT8udGV4dFZhbHVlPz9kLnJlZi50ZXh0Q29udGVudD8udHJpbSgpPz8iIn0pKSxsPWEuZmluZChkPT5kLnJlZj09PWkpLHU9YS5tYXAoZD0+ZC50ZXh0VmFsdWUpLGM9Q0kodSx0LnZhbHVlLGw/LnRleHRWYWx1ZSksZj1hLmZpbmQoZD0+ZC50ZXh0VmFsdWU9PT1jKTtyZXR1cm4gZiYmZi5yZWYuZm9jdXMoKSxmPy5yZWZ9fSxyZXNldFR5cGVhaGVhZDooKT0+e3QudmFsdWU9IiJ9fX1mdW5jdGlvbiBUSShlLHQpe3JldHVybiBlLm1hcCgobixyKT0+ZVsodCtyKSVlLmxlbmd0aF0pfWZ1bmN0aW9uIENJKGUsdCxuKXtjb25zdCBvPXQubGVuZ3RoPjEmJkFycmF5LmZyb20odCkuZXZlcnkodT0+dT09PXRbMF0pP3RbMF06dCxzPW4/ZS5pbmRleE9mKG4pOi0xO2xldCBpPVRJKGUsTWF0aC5tYXgocywwKSk7by5sZW5ndGg9PT0xJiYoaT1pLmZpbHRlcih1PT51IT09bikpO2NvbnN0IGw9aS5maW5kKHU9PnUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKG8udG9Mb3dlckNhc2UoKSkpO3JldHVybiBsIT09bj9sOnZvaWQgMH1mdW5jdGlvbiBBSShlLHQpe2NvbnN0IG49Ryh7fSkscj1HKCJub25lIiksbz1HKGUpLHM9ZS52YWx1ZT8ibW91bnRlZCI6InVubW91bnRlZCI7bGV0IGk7Y29uc3QgYT10LnZhbHVlPy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Pz9WdCx7c3RhdGU6bCxkaXNwYXRjaDp1fT1FSShzLHttb3VudGVkOntVTk1PVU5UOiJ1bm1vdW50ZWQiLEFOSU1BVElPTl9PVVQ6InVubW91bnRTdXNwZW5kZWQifSx1bm1vdW50U3VzcGVuZGVkOntNT1VOVDoibW91bnRlZCIsQU5JTUFUSU9OX0VORDoidW5tb3VudGVkIn0sdW5tb3VudGVkOntNT1VOVDoibW91bnRlZCJ9fSksYz1fPT57aWYoaG4pe2NvbnN0IHc9bmV3IEN1c3RvbUV2ZW50KF8se2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMX0pO3QudmFsdWU/LmRpc3BhdGNoRXZlbnQodyl9fTtQZShlLGFzeW5jKF8sdyk9Pntjb25zdCB2PXchPT1fO2lmKGF3YWl0IGl0KCksdil7Y29uc3QgaD1yLnZhbHVlLGI9aGEodC52YWx1ZSk7Xz8odSgiTU9VTlQiKSxjKCJlbnRlciIpLGI9PT0ibm9uZSImJmMoImFmdGVyLWVudGVyIikpOmI9PT0ibm9uZSJ8fGI9PT0idW5kZWZpbmVkInx8bi52YWx1ZT8uZGlzcGxheT09PSJub25lIj8odSgiVU5NT1VOVCIpLGMoImxlYXZlIiksYygiYWZ0ZXItbGVhdmUiKSk6dyYmaCE9PWI/KHUoIkFOSU1BVElPTl9PVVQiKSxjKCJsZWF2ZSIpKToodSgiVU5NT1VOVCIpLGMoImFmdGVyLWxlYXZlIikpfX0se2ltbWVkaWF0ZTohMH0pO2NvbnN0IGY9Xz0+e2NvbnN0IHc9aGEodC52YWx1ZSksdj13LmluY2x1ZGVzKENTUy5lc2NhcGUoXy5hbmltYXRpb25OYW1lKSksaD1sLnZhbHVlPT09Im1vdW50ZWQiPyJlbnRlciI6ImxlYXZlIjtpZihfLnRhcmdldD09PXQudmFsdWUmJnYmJihjKGBhZnRlci0ke2h9YCksdSgiQU5JTUFUSU9OX0VORCIpLCFvLnZhbHVlKSl7Y29uc3QgYj10LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlO3QudmFsdWUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9ImZvcndhcmRzIixpPWE/LnNldFRpbWVvdXQoKCk9Pnt0LnZhbHVlPy5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT09PSJmb3J3YXJkcyImJih0LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPWIpfSl9Xy50YXJnZXQ9PT10LnZhbHVlJiZ3PT09Im5vbmUiJiZ1KCJBTklNQVRJT05fRU5EIil9LGQ9Xz0+e18udGFyZ2V0PT09dC52YWx1ZSYmKHIudmFsdWU9aGEodC52YWx1ZSkpfSxwPVBlKHQsKF8sdyk9PntfPyhuLnZhbHVlPWdldENvbXB1dGVkU3R5bGUoXyksXy5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIsZCksXy5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25jYW5jZWwiLGYpLF8uYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixmKSk6KHUoIkFOSU1BVElPTl9FTkQiKSxpIT09dm9pZCAwJiZhPy5jbGVhclRpbWVvdXQoaSksdz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uc3RhcnQiLGQpLHc/LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmNhbmNlbCIsZiksdz8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixmKSl9LHtpbW1lZGlhdGU6ITB9KSxtPVBlKGwsKCk9Pntjb25zdCBfPWhhKHQudmFsdWUpO3IudmFsdWU9bC52YWx1ZT09PSJtb3VudGVkIj9fOiJub25lIn0pO3JldHVybiBwcigoKT0+e3AoKSxtKCl9KSx7aXNQcmVzZW50Ok4oKCk9PlsibW91bnRlZCIsInVubW91bnRTdXNwZW5kZWQiXS5pbmNsdWRlcyhsLnZhbHVlKSl9fWZ1bmN0aW9uIGhhKGUpe3JldHVybiBlJiZnZXRDb21wdXRlZFN0eWxlKGUpLmFuaW1hdGlvbk5hbWV8fCJub25lIn12YXIgemw9c2Uoe25hbWU6IlByZXNlbmNlIixwcm9wczp7cHJlc2VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiEwfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW59fSxzbG90czp7fSxzZXR1cChlLHtzbG90czp0LGV4cG9zZTpufSl7Y29uc3R7cHJlc2VudDpyLGZvcmNlTW91bnQ6b309RW4oZSkscz1HKCkse2lzUHJlc2VudDppfT1BSShyLHMpO24oe3ByZXNlbnQ6aX0pO2xldCBhPXQuZGVmYXVsdCh7cHJlc2VudDppLnZhbHVlfSk7YT1zZChhfHxbXSk7Y29uc3QgbD1tdCgpO2lmKGEmJmE/Lmxlbmd0aD4xKXtjb25zdCB1PWw/LnBhcmVudD8udHlwZS5uYW1lP2A8JHtsLnBhcmVudC50eXBlLm5hbWV9IC8+YDoiY29tcG9uZW50Ijt0aHJvdyBuZXcgRXJyb3IoW2BEZXRlY3RlZCBhbiBpbnZhbGlkIGNoaWxkcmVuIGZvciBcYCR7dX1cYCBmb3IgIFxgUHJlc2VuY2VcYCBjb21wb25lbnQuYCwiIiwiTm90ZTogUHJlc2VuY2Ugd29ya3Mgc2ltaWxhcmx5IHRvIGB2LWlmYCBkaXJlY3RseSwgYnV0IGl0IHdhaXRzIGZvciBhbmltYXRpb24vdHJhbnNpdGlvbiB0byBmaW5pc2hlZCBiZWZvcmUgdW5tb3VudGluZy4gU28gaXQgZXhwZWN0IG9ubHkgb25lIGRpcmVjdCBjaGlsZCBvZiB2YWxpZCBWTm9kZSB0eXBlLiIsIllvdSBjYW4gYXBwbHkgYSBmZXcgc29sdXRpb25zOiIsWyJQcm92aWRlIGEgc2luZ2xlIGNoaWxkIGVsZW1lbnQgc28gdGhhdCBgcHJlc2VuY2VgIGRpcmVjdGl2ZSBhdHRhY2ggY29ycmVjdGx5LiIsIkVuc3VyZSB0aGUgZmlyc3QgY2hpbGQgaXMgYW4gYWN0dWFsIGVsZW1lbnQgaW5zdGVhZCBvZiBhIHJhdyB0ZXh0IG5vZGUgb3IgY29tbWVudCBub2RlLiJdLm1hcChjPT5gICAtICR7Y31gKS5qb2luKGAKYCldLmpvaW4oYApgKSl9cmV0dXJuKCk9Pm8udmFsdWV8fHIudmFsdWV8fGkudmFsdWU/RmUodC5kZWZhdWx0KHtwcmVzZW50OmkudmFsdWV9KVswXSx7cmVmOnU9Pntjb25zdCBjPUF0KHUpO3JldHVybiB0eXBlb2YgYz8uaGFzQXR0cmlidXRlPiJ1Inx8KGM/Lmhhc0F0dHJpYnV0ZSgiZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXIiKT9zLnZhbHVlPWMuZmlyc3RFbGVtZW50Q2hpbGQ6cy52YWx1ZT1jKSxjfX0pOm51bGx9fSk7Y29uc3Qgam89c2Uoe25hbWU6IlByaW1pdGl2ZVNsb3QiLGluaGVyaXRBdHRyczohMSxzZXR1cChlLHthdHRyczp0LHNsb3RzOm59KXtyZXR1cm4oKT0+e2lmKCFuLmRlZmF1bHQpcmV0dXJuIG51bGw7Y29uc3Qgcj1zZChuLmRlZmF1bHQoKSksbz1yLmZpbmRJbmRleChsPT5sLnR5cGUhPT1fdCk7aWYobz09PS0xKXJldHVybiByO2NvbnN0IHM9cltvXTtkZWxldGUgcy5wcm9wcz8ucmVmO2NvbnN0IGk9cy5wcm9wcz9mZSh0LHMucHJvcHMpOnQsYT1wbih7Li4ucyxwcm9wczp7fX0saSk7cmV0dXJuIHIubGVuZ3RoPT09MT9hOihyW29dPWEscil9fX0pLE9JPVsiYXJlYSIsImltZyIsImlucHV0Il0sTWU9c2Uoe25hbWU6IlByaW1pdGl2ZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6ImRpdiJ9fSxzZXR1cChlLHthdHRyczp0LHNsb3RzOm59KXtjb25zdCByPWUuYXNDaGlsZD8idGVtcGxhdGUiOmUuYXM7cmV0dXJuIHR5cGVvZiByPT0ic3RyaW5nIiYmT0kuaW5jbHVkZXMocik/KCk9PkZlKHIsdCk6ciE9PSJ0ZW1wbGF0ZSI/KCk9PkZlKGUuYXMsdCx7ZGVmYXVsdDpuLmRlZmF1bHR9KTooKT0+RmUoam8sdCx7ZGVmYXVsdDpuLmRlZmF1bHR9KX19KTtmdW5jdGlvbiBCbSgpe2NvbnN0IGU9RygpLHQ9TigoKT0+WyIjdGV4dCIsIiNjb21tZW50Il0uaW5jbHVkZXMoZS52YWx1ZT8uJGVsLm5vZGVOYW1lKT9lLnZhbHVlPy4kZWwubmV4dEVsZW1lbnRTaWJsaW5nOkF0KGUpKTtyZXR1cm57cHJpbWl0aXZlRWxlbWVudDplLGN1cnJlbnRFbGVtZW50OnR9fWNvbnN0W21yLFBJXT1nbigiRGlhbG9nUm9vdCIpO3ZhciBJST1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiRGlhbG9nUm9vdCIscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxtb2RhbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLG89YW8obiwib3BlbiIsdCx7ZGVmYXVsdFZhbHVlOm4uZGVmYXVsdE9wZW4scGFzc2l2ZTpuLm9wZW49PT12b2lkIDB9KSxzPUcoKSxpPUcoKSx7bW9kYWw6YX09RW4obik7cmV0dXJuIFBJKHtvcGVuOm8sbW9kYWw6YSxvcGVuTW9kYWw6KCk9PntvLnZhbHVlPSEwfSxvbk9wZW5DaGFuZ2U6bD0+e28udmFsdWU9bH0sb25PcGVuVG9nZ2xlOigpPT57by52YWx1ZT0hby52YWx1ZX0sY29udGVudElkOiIiLHRpdGxlSWQ6IiIsZGVzY3JpcHRpb25JZDoiIix0cmlnZ2VyRWxlbWVudDpzLGNvbnRlbnRFbGVtZW50Oml9KSwobCx1KT0+VShsLiRzbG90cywiZGVmYXVsdCIse29wZW46ZyhvKSxjbG9zZTooKT0+by52YWx1ZT0hMX0pfX0pLHIwPUlJLFJJPXNlKHtfX25hbWU6IkRpYWxvZ0Nsb3NlIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9fSxzZXR1cChlKXtjb25zdCB0PWU7VWUoKTtjb25zdCBuPW1yKCk7cmV0dXJuKHIsbyk9PihSKCksJChnKE1lKSxmZSh0LHt0eXBlOnIuYXM9PT0iYnV0dG9uIj8iYnV0dG9uIjp2b2lkIDAsb25DbGljazpvWzBdfHwob1swXT1zPT5nKG4pLm9uT3BlbkNoYW5nZSghMSkpfSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIl0pKX19KSxvMD1SSTtjb25zdCBOST0iZGlzbWlzc2FibGVMYXllci5wb2ludGVyRG93bk91dHNpZGUiLERJPSJkaXNtaXNzYWJsZUxheWVyLmZvY3VzT3V0c2lkZSI7ZnVuY3Rpb24gczAoZSx0KXtpZighKHQgaW5zdGFuY2VvZiBFbGVtZW50KSlyZXR1cm4hMTtjb25zdCBuPXQuY2xvc2VzdCgiW2RhdGEtZGlzbWlzc2FibGUtbGF5ZXJdIikscj1lLmRhdGFzZXQuZGlzbWlzc2FibGVMYXllcj09PSIiP2U6ZS5xdWVyeVNlbGVjdG9yKCJbZGF0YS1kaXNtaXNzYWJsZS1sYXllcl0iKSxvPUFycmF5LmZyb20oZS5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWRpc21pc3NhYmxlLWxheWVyXSIpKTtyZXR1cm4hIShuJiYocj09PW58fG8uaW5kZXhPZihyKTxvLmluZGV4T2YobikpKX1mdW5jdGlvbiBMSShlLHQsbj0hMCl7Y29uc3Qgcj10Py52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcz8uZG9jdW1lbnQsbz1HKCExKSxzPUcoKCk9Pnt9KTtyZXR1cm4gb24oaT0+e2lmKCFobnx8IUVlKG4pKXJldHVybjtjb25zdCBhPWFzeW5jIHU9Pntjb25zdCBjPXUudGFyZ2V0O2lmKCEoIXQ/LnZhbHVlfHwhYykpe2lmKHMwKHQudmFsdWUsYykpe28udmFsdWU9ITE7cmV0dXJufWlmKHUudGFyZ2V0JiYhby52YWx1ZSl7bGV0IGQ9ZnVuY3Rpb24oKXtKZihOSSxlLGYpfTtjb25zdCBmPXtvcmlnaW5hbEV2ZW50OnV9O3UucG9pbnRlclR5cGU9PT0idG91Y2giPyhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixzLnZhbHVlKSxzLnZhbHVlPWQsci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIscy52YWx1ZSx7b25jZTohMH0pKTpkKCl9ZWxzZSByLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixzLnZhbHVlKTtvLnZhbHVlPSExfX0sbD13aW5kb3cuc2V0VGltZW91dCgoKT0+e3IuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLGEpfSwwKTtpKCgpPT57d2luZG93LmNsZWFyVGltZW91dChsKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixhKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixzLnZhbHVlKX0pfSkse29uUG9pbnRlckRvd25DYXB0dXJlOigpPT57RWUobikmJihvLnZhbHVlPSEwKX19fWZ1bmN0aW9uICRJKGUsdCxuPSEwKXtjb25zdCByPXQ/LnZhbHVlPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzPy5kb2N1bWVudCxvPUcoITEpO3JldHVybiBvbihzPT57aWYoIWhufHwhRWUobikpcmV0dXJuO2NvbnN0IGk9YXN5bmMgYT0+e2lmKCF0Py52YWx1ZSlyZXR1cm47YXdhaXQgaXQoKSxhd2FpdCBpdCgpO2NvbnN0IGw9YS50YXJnZXQ7IXQudmFsdWV8fCFsfHxzMCh0LnZhbHVlLGwpfHxhLnRhcmdldCYmIW8udmFsdWUmJkpmKERJLGUse29yaWdpbmFsRXZlbnQ6YX0pfTtyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGkpLHMoKCk9PnIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsaSkpfSkse29uRm9jdXNDYXB0dXJlOigpPT57RWUobikmJihvLnZhbHVlPSEwKX0sb25CbHVyQ2FwdHVyZTooKT0+e0VlKG4pJiYoby52YWx1ZT0hMSl9fX1jb25zdCBmbj1idCh7bGF5ZXJzUm9vdDpuZXcgU2V0LGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOm5ldyBTZXQsb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50czp2b2lkIDAsYnJhbmNoZXM6bmV3IFNldH0pO3ZhciBNST1zZSh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyIixwcm9wczp7ZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwiZGlzbWlzcyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpzfT1VZSgpLGk9TigoKT0+cy52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcy5kb2N1bWVudCksYT1OKCgpPT5mbi5sYXllcnNSb290KSxsPU4oKCk9PnMudmFsdWU/QXJyYXkuZnJvbShhLnZhbHVlKS5pbmRleE9mKHMudmFsdWUpOi0xKSx1PU4oKCk9PmZuLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU+MCksYz1OKCgpPT57Y29uc3QgcD1BcnJheS5mcm9tKGEudmFsdWUpLFttXT1bLi4uZm4ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdLnNsaWNlKC0xKSx5PXAuaW5kZXhPZihtKTtyZXR1cm4gbC52YWx1ZT49eX0pLGY9TEkoYXN5bmMgcD0+e2NvbnN0IG09Wy4uLmZuLmJyYW5jaGVzXS5zb21lKHk9Pnk/LmNvbnRhaW5zKHAudGFyZ2V0KSk7IWMudmFsdWV8fG18fChyKCJwb2ludGVyRG93bk91dHNpZGUiLHApLHIoImludGVyYWN0T3V0c2lkZSIscCksYXdhaXQgaXQoKSxwLmRlZmF1bHRQcmV2ZW50ZWR8fHIoImRpc21pc3MiKSl9LHMpLGQ9JEkocD0+e1suLi5mbi5icmFuY2hlc10uc29tZSh5PT55Py5jb250YWlucyhwLnRhcmdldCkpfHwocigiZm9jdXNPdXRzaWRlIixwKSxyKCJpbnRlcmFjdE91dHNpZGUiLHApLHAuZGVmYXVsdFByZXZlbnRlZHx8cigiZGlzbWlzcyIpKX0scyk7cmV0dXJuIG9kKCJFc2NhcGUiLHA9PntsLnZhbHVlPT09YS52YWx1ZS5zaXplLTEmJihyKCJlc2NhcGVLZXlEb3duIixwKSxwLmRlZmF1bHRQcmV2ZW50ZWR8fHIoImRpc21pc3MiKSl9KSxvbihwPT57cy52YWx1ZSYmKG4uZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzJiYoZm4ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZT09PTAmJihmbi5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzPWkudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzLGkudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIiksZm4ubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuYWRkKHMudmFsdWUpKSxhLnZhbHVlLmFkZChzLnZhbHVlKSxwKCgpPT57bi5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMmJmZuLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU9PT0xJiYhQWkoZm4ub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cykmJihpLnZhbHVlLmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz1mbi5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzKX0pKX0pLG9uKHA9PntwKCgpPT57cy52YWx1ZSYmKGEudmFsdWUuZGVsZXRlKHMudmFsdWUpLGZuLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShzLnZhbHVlKSl9KX0pLChwLG0pPT4oUigpLCQoZyhNZSkse3JlZjpnKG8pLCJhcy1jaGlsZCI6cC5hc0NoaWxkLGFzOnAuYXMsImRhdGEtZGlzbWlzc2FibGUtbGF5ZXIiOiIiLHN0eWxlOlJuKHtwb2ludGVyRXZlbnRzOnUudmFsdWU/Yy52YWx1ZT8iYXV0byI6Im5vbmUiOnZvaWQgMH0pLG9uRm9jdXNDYXB0dXJlOmcoZCkub25Gb2N1c0NhcHR1cmUsb25CbHVyQ2FwdHVyZTpnKGQpLm9uQmx1ckNhcHR1cmUsb25Qb2ludGVyZG93bkNhcHR1cmU6ZyhmKS5vblBvaW50ZXJEb3duQ2FwdHVyZX0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzLWNoaWxkIiwiYXMiLCJzdHlsZSIsIm9uRm9jdXNDYXB0dXJlIiwib25CbHVyQ2FwdHVyZSIsIm9uUG9pbnRlcmRvd25DYXB0dXJlIl0pKX19KSxpMD1NSSxCST1zZSh7X19uYW1lOiJEaXNtaXNzYWJsZUxheWVyQnJhbmNoIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLHtmb3J3YXJkUmVmOm4sY3VycmVudEVsZW1lbnQ6cn09VWUoKTtyZXR1cm4gb3QoKCk9Pntmbi5icmFuY2hlcy5hZGQoci52YWx1ZSl9KSxwcigoKT0+e2ZuLmJyYW5jaGVzLmRlbGV0ZShyLnZhbHVlKX0pLChvLHMpPT4oUigpLCQoZyhNZSksZmUoe3JlZjpnKG4pfSx0KSx7ZGVmYXVsdDpNKCgpPT5bVShvLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLHFJPUJJO2NvbnN0IEZJPUFQKCgpPT5HKFtdKSk7ZnVuY3Rpb24gekkoKXtjb25zdCBlPUZJKCk7cmV0dXJue2FkZCh0KXtjb25zdCBuPWUudmFsdWVbMF07dCE9PW4mJm4/LnBhdXNlKCksZS52YWx1ZT1xbShlLnZhbHVlLHQpLGUudmFsdWUudW5zaGlmdCh0KX0scmVtb3ZlKHQpe2UudmFsdWU9cW0oZS52YWx1ZSx0KSxlLnZhbHVlWzBdPy5yZXN1bWUoKX19fWZ1bmN0aW9uIHFtKGUsdCl7Y29uc3Qgbj1bLi4uZV0scj1uLmluZGV4T2YodCk7cmV0dXJuIHIhPT0tMSYmbi5zcGxpY2UociwxKSxufWNvbnN0IEJjPSJmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnQiLHFjPSJmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudCIsRm09e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMH07ZnVuY3Rpb24gTmEoZSx7c2VsZWN0OnQ9ITF9PXt9KXtjb25zdCBuPXJuKCk7Zm9yKGNvbnN0IHIgb2YgZSlpZihKcihyLHtzZWxlY3Q6dH0pLHJuKCkhPT1uKXJldHVybiEwfWZ1bmN0aW9uIGpJKGUpe2NvbnN0IHQ9YWQoZSksbj16bSh0LGUpLHI9em0odC5yZXZlcnNlKCksZSk7cmV0dXJuW24scl19ZnVuY3Rpb24gYWQoZSl7Y29uc3QgdD1bXSxuPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTpyPT57Y29uc3Qgbz1yLnRhZ05hbWU9PT0iSU5QVVQiJiZyLnR5cGU9PT0iaGlkZGVuIjtyZXR1cm4gci5kaXNhYmxlZHx8ci5oaWRkZW58fG8/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDpyLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7bi5uZXh0Tm9kZSgpOyl0LnB1c2gobi5jdXJyZW50Tm9kZSk7cmV0dXJuIHR9ZnVuY3Rpb24gem0oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKCFWSShuLHt1cFRvOnR9KSlyZXR1cm4gbn1mdW5jdGlvbiBWSShlLHt1cFRvOnR9KXtpZihnZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHk9PT0iaGlkZGVuIilyZXR1cm4hMDtmb3IoO2U7KXtpZih0IT09dm9pZCAwJiZlPT09dClyZXR1cm4hMTtpZihnZXRDb21wdXRlZFN0eWxlKGUpLmRpc3BsYXk9PT0ibm9uZSIpcmV0dXJuITA7ZT1lLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9ZnVuY3Rpb24gVUkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50JiYic2VsZWN0ImluIGV9ZnVuY3Rpb24gSnIoZSx7c2VsZWN0OnQ9ITF9PXt9KXtpZihlJiZlLmZvY3VzKXtjb25zdCBuPXJuKCk7ZS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLGUhPT1uJiZVSShlKSYmdCYmZS5zZWxlY3QoKX19dmFyIEhJPXNlKHtfX25hbWU6IkZvY3VzU2NvcGUiLHByb3BzOntsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdHJhcHBlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsibW91bnRBdXRvRm9jdXMiLCJ1bm1vdW50QXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCx7Y3VycmVudFJlZjpvLGN1cnJlbnRFbGVtZW50OnN9PVVlKCksaT1HKG51bGwpLGE9ekkoKSxsPWJ0KHtwYXVzZWQ6ITEscGF1c2UoKXt0aGlzLnBhdXNlZD0hMH0scmVzdW1lKCl7dGhpcy5wYXVzZWQ9ITF9fSk7b24oYz0+e2lmKCFobilyZXR1cm47Y29uc3QgZj1zLnZhbHVlO2lmKCFuLnRyYXBwZWQpcmV0dXJuO2Z1bmN0aW9uIGQoXyl7aWYobC5wYXVzZWR8fCFmKXJldHVybjtjb25zdCB3PV8udGFyZ2V0O2YuY29udGFpbnModyk/aS52YWx1ZT13OkpyKGkudmFsdWUse3NlbGVjdDohMH0pfWZ1bmN0aW9uIHAoXyl7aWYobC5wYXVzZWR8fCFmKXJldHVybjtjb25zdCB3PV8ucmVsYXRlZFRhcmdldDt3IT09bnVsbCYmKGYuY29udGFpbnModyl8fEpyKGkudmFsdWUse3NlbGVjdDohMH0pKX1mdW5jdGlvbiBtKF8pe2NvbnN0IHc9aS52YWx1ZTtpZih3PT09bnVsbHx8IV8uc29tZShiPT5iLnJlbW92ZWROb2Rlcy5sZW5ndGg+MCkpcmV0dXJuO2YuY29udGFpbnModyl8fEpyKGYpfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGQpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixwKTtjb25zdCB5PW5ldyBNdXRhdGlvbk9ic2VydmVyKG0pO2YmJnkub2JzZXJ2ZShmLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGMoKCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c2luIixkKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIscCkseS5kaXNjb25uZWN0KCl9KX0pLG9uKGFzeW5jIGM9Pntjb25zdCBmPXMudmFsdWU7aWYoYXdhaXQgaXQoKSwhZilyZXR1cm47YS5hZGQobCk7Y29uc3QgZD1ybigpO2lmKCFmLmNvbnRhaW5zKGQpKXtjb25zdCBtPW5ldyBDdXN0b21FdmVudChCYyxGbSk7Zi5hZGRFdmVudExpc3RlbmVyKEJjLHk9PnIoIm1vdW50QXV0b0ZvY3VzIix5KSksZi5kaXNwYXRjaEV2ZW50KG0pLG0uZGVmYXVsdFByZXZlbnRlZHx8KE5hKGFkKGYpLHtzZWxlY3Q6ITB9KSxybigpPT09ZCYmSnIoZikpfWMoKCk9PntmLnJlbW92ZUV2ZW50TGlzdGVuZXIoQmMsXz0+cigibW91bnRBdXRvRm9jdXMiLF8pKTtjb25zdCBtPW5ldyBDdXN0b21FdmVudChxYyxGbSkseT1fPT57cigidW5tb3VudEF1dG9Gb2N1cyIsXyl9O2YuYWRkRXZlbnRMaXN0ZW5lcihxYyx5KSxmLmRpc3BhdGNoRXZlbnQobSksc2V0VGltZW91dCgoKT0+e20uZGVmYXVsdFByZXZlbnRlZHx8SnIoZD8/ZG9jdW1lbnQuYm9keSx7c2VsZWN0OiEwfSksZi5yZW1vdmVFdmVudExpc3RlbmVyKHFjLHkpLGEucmVtb3ZlKGwpfSwwKX0pfSk7ZnVuY3Rpb24gdShjKXtpZighbi5sb29wJiYhbi50cmFwcGVkfHxsLnBhdXNlZClyZXR1cm47Y29uc3QgZj1jLmtleT09PSJUYWIiJiYhYy5hbHRLZXkmJiFjLmN0cmxLZXkmJiFjLm1ldGFLZXksZD1ybigpO2lmKGYmJmQpe2NvbnN0IHA9Yy5jdXJyZW50VGFyZ2V0LFttLHldPWpJKHApO20mJnk/IWMuc2hpZnRLZXkmJmQ9PT15PyhjLnByZXZlbnREZWZhdWx0KCksbi5sb29wJiZKcihtLHtzZWxlY3Q6ITB9KSk6Yy5zaGlmdEtleSYmZD09PW0mJihjLnByZXZlbnREZWZhdWx0KCksbi5sb29wJiZKcih5LHtzZWxlY3Q6ITB9KSk6ZD09PXAmJmMucHJldmVudERlZmF1bHQoKX19cmV0dXJuKGMsZik9PihSKCksJChnKE1lKSx7cmVmX2tleToiY3VycmVudFJlZiIscmVmOm8sdGFiaW5kZXg6Ii0xIiwiYXMtY2hpbGQiOmMuYXNDaGlsZCxhczpjLmFzLG9uS2V5ZG93bjp1fSx7ZGVmYXVsdDpNKCgpPT5bVShjLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMtY2hpbGQiLCJhcyJdKSl9fSksYTA9SEk7Y29uc3QgT3E9Im1lbnUuaXRlbVNlbGVjdCIsam09WyJFbnRlciIsIiAiXSxXST1bIkFycm93RG93biIsIlBhZ2VVcCIsIkhvbWUiXSxHST1bIkFycm93VXAiLCJQYWdlRG93biIsIkVuZCJdLFBxPVsuLi5XSSwuLi5HSV0sSXE9e2x0cjpbLi4uam0sIkFycm93UmlnaHQiXSxydGw6Wy4uLmptLCJBcnJvd0xlZnQiXX0sUnE9e2x0cjpbIkFycm93TGVmdCJdLHJ0bDpbIkFycm93UmlnaHQiXX07ZnVuY3Rpb24gS0koZSl7cmV0dXJuIGU/Im9wZW4iOiJjbG9zZWQifWZ1bmN0aW9uIFFJKGUpe3JldHVybiBlPT09ImluZGV0ZXJtaW5hdGUifWZ1bmN0aW9uIE5xKGUpe3JldHVybiBRSShlKT8iaW5kZXRlcm1pbmF0ZSI6ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCJ9ZnVuY3Rpb24gVm0oZSl7Y29uc3QgdD1ybigpO2Zvcihjb25zdCBuIG9mIGUpaWYobj09PXR8fChuLmZvY3VzKCkscm4oKSE9PXQpKXJldHVybn1mdW5jdGlvbiBZSShlLHQpe2NvbnN0e3g6bix5OnJ9PWU7bGV0IG89ITE7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aC0xO3M8dC5sZW5ndGg7aT1zKyspe2NvbnN0IGE9dFtzXS54LGw9dFtzXS55LHU9dFtpXS54LGM9dFtpXS55O2w+ciE9Yz5yJiZuPCh1LWEpKihyLWwpLyhjLWwpK2EmJihvPSFvKX1yZXR1cm4gb31mdW5jdGlvbiBEcShlLHQpe2lmKCF0KXJldHVybiExO2NvbnN0IG49e3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZfTtyZXR1cm4gWUkobix0KX1mdW5jdGlvbiBMcShlKXtyZXR1cm4gZS5wb2ludGVyVHlwZT09PSJtb3VzZSJ9dmFyIEpJPXNlKHtfX25hbWU6IkRpYWxvZ0NvbnRlbnRJbXBsIixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFwRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1tcigpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6aX09VWUoKTtyZXR1cm4gby50aXRsZUlkfHw9Q3Modm9pZCAwLCJyZWthLWRpYWxvZy10aXRsZSIpLG8uZGVzY3JpcHRpb25JZHx8PUNzKHZvaWQgMCwicmVrYS1kaWFsb2ctZGVzY3JpcHRpb24iKSxvdCgoKT0+e28uY29udGVudEVsZW1lbnQ9aSxybigpIT09ZG9jdW1lbnQuYm9keSYmKG8udHJpZ2dlckVsZW1lbnQudmFsdWU9cm4oKSl9KSwoYSxsKT0+KFIoKSwkKGcoYTApLHsiYXMtY2hpbGQiOiIiLGxvb3A6IiIsdHJhcHBlZDpuLnRyYXBGb2N1cyxvbk1vdW50QXV0b0ZvY3VzOmxbNV18fChsWzVdPXU9PnIoIm9wZW5BdXRvRm9jdXMiLHUpKSxvblVubW91bnRBdXRvRm9jdXM6bFs2XXx8KGxbNl09dT0+cigiY2xvc2VBdXRvRm9jdXMiLHUpKX0se2RlZmF1bHQ6TSgoKT0+W3JlKGcoaTApLGZlKHtpZDpnKG8pLmNvbnRlbnRJZCxyZWY6ZyhzKSxhczphLmFzLCJhcy1jaGlsZCI6YS5hc0NoaWxkLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOmEuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLHJvbGU6ImRpYWxvZyIsImFyaWEtZGVzY3JpYmVkYnkiOmcobykuZGVzY3JpcHRpb25JZCwiYXJpYS1sYWJlbGxlZGJ5IjpnKG8pLnRpdGxlSWQsImRhdGEtc3RhdGUiOmcoS0kpKGcobykub3Blbi52YWx1ZSl9LGEuJGF0dHJzLHtvbkRpc21pc3M6bFswXXx8KGxbMF09dT0+ZyhvKS5vbk9wZW5DaGFuZ2UoITEpKSxvbkVzY2FwZUtleURvd246bFsxXXx8KGxbMV09dT0+cigiZXNjYXBlS2V5RG93biIsdSkpLG9uRm9jdXNPdXRzaWRlOmxbMl18fChsWzJdPXU9PnIoImZvY3VzT3V0c2lkZSIsdSkpLG9uSW50ZXJhY3RPdXRzaWRlOmxbM118fChsWzNdPXU9PnIoImludGVyYWN0T3V0c2lkZSIsdSkpLG9uUG9pbnRlckRvd25PdXRzaWRlOmxbNF18fChsWzRdPXU9PnIoInBvaW50ZXJEb3duT3V0c2lkZSIsdSkpfSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCIsImFzIiwiYXMtY2hpbGQiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYS1sYWJlbGxlZGJ5IiwiZGF0YS1zdGF0ZSJdKV0pLF86M30sOCxbInRyYXBwZWQiXSkpfX0pLGwwPUpJLFhJPXNlKHtfX25hbWU6IkRpYWxvZ0NvbnRlbnRNb2RhbCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhcEZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbImVzY2FwZUtleURvd24iLCJwb2ludGVyRG93bk91dHNpZGUiLCJmb2N1c091dHNpZGUiLCJpbnRlcmFjdE91dHNpZGUiLCJvcGVuQXV0b0ZvY3VzIiwiY2xvc2VBdXRvRm9jdXMiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBuPWUscj10LG89bXIoKSxzPUZsKHIpLHtmb3J3YXJkUmVmOmksY3VycmVudEVsZW1lbnQ6YX09VWUoKTtyZXR1cm4gdDAoYSksKGwsdSk9PihSKCksJChsMCxmZSh7Li4ubiwuLi5nKHMpfSx7cmVmOmcoaSksInRyYXAtZm9jdXMiOmcobykub3Blbi52YWx1ZSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMCxvbkNsb3NlQXV0b0ZvY3VzOnVbMF18fCh1WzBdPWM9PntjLmRlZmF1bHRQcmV2ZW50ZWR8fChjLnByZXZlbnREZWZhdWx0KCksZyhvKS50cmlnZ2VyRWxlbWVudC52YWx1ZT8uZm9jdXMoKSl9KSxvblBvaW50ZXJEb3duT3V0c2lkZTp1WzFdfHwodVsxXT1jPT57Y29uc3QgZj1jLmRldGFpbC5vcmlnaW5hbEV2ZW50LGQ9Zi5idXR0b249PT0wJiZmLmN0cmxLZXk9PT0hMDsoZi5idXR0b249PT0yfHxkKSYmYy5wcmV2ZW50RGVmYXVsdCgpfSksb25Gb2N1c091dHNpZGU6dVsyXXx8KHVbMl09Yz0+e2MucHJldmVudERlZmF1bHQoKX0pfSkse2RlZmF1bHQ6TSgoKT0+W1UobC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0cmFwLWZvY3VzIl0pKX19KSxaST1YSSxlUj1zZSh7X19uYW1lOiJEaWFsb2dDb250ZW50Tm9uTW9kYWwiLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYXBGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIiwiZm9jdXNPdXRzaWRlIiwiaW50ZXJhY3RPdXRzaWRlIiwib3BlbkF1dG9Gb2N1cyIsImNsb3NlQXV0b0ZvY3VzIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLG89RmwodCk7VWUoKTtjb25zdCBzPW1yKCksaT1HKCExKSxhPUcoITEpO3JldHVybihsLHUpPT4oUigpLCQobDAsZmUoey4uLm4sLi4uZyhvKX0seyJ0cmFwLWZvY3VzIjohMSwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjohMSxvbkNsb3NlQXV0b0ZvY3VzOnVbMF18fCh1WzBdPWM9PntjLmRlZmF1bHRQcmV2ZW50ZWR8fChpLnZhbHVlfHxnKHMpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cygpLGMucHJldmVudERlZmF1bHQoKSksaS52YWx1ZT0hMSxhLnZhbHVlPSExfSksb25JbnRlcmFjdE91dHNpZGU6dVsxXXx8KHVbMV09Yz0+e2MuZGVmYXVsdFByZXZlbnRlZHx8KGkudmFsdWU9ITAsYy5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlPT09InBvaW50ZXJkb3duIiYmKGEudmFsdWU9ITApKTtjb25zdCBmPWMudGFyZ2V0O2cocykudHJpZ2dlckVsZW1lbnQudmFsdWU/LmNvbnRhaW5zKGYpJiZjLnByZXZlbnREZWZhdWx0KCksYy5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlPT09ImZvY3VzaW4iJiZhLnZhbHVlJiZjLnByZXZlbnREZWZhdWx0KCl9KX0pLHtkZWZhdWx0Ok0oKCk9PltVKGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksdFI9ZVIsblI9c2Uoe19fbmFtZToiRGlhbG9nQ29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSIsImZvY3VzT3V0c2lkZSIsImludGVyYWN0T3V0c2lkZSIsIm9wZW5BdXRvRm9jdXMiLCJjbG9zZUF1dG9Gb2N1cyJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1tcigpLHM9Rmwocikse2ZvcndhcmRSZWY6aX09VWUoKTtyZXR1cm4oYSxsKT0+KFIoKSwkKGcoemwpLHtwcmVzZW50OmEuZm9yY2VNb3VudHx8ZyhvKS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpNKCgpPT5bZyhvKS5tb2RhbC52YWx1ZT8oUigpLCQoWkksZmUoe2tleTowLHJlZjpnKGkpfSx7Li4ubiwuLi5nKHMpLC4uLmEuJGF0dHJzfSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTooUigpLCQodFIsZmUoe2tleToxLHJlZjpnKGkpfSx7Li4ubiwuLi5nKHMpLC4uLmEuJGF0dHJzfSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKV0pLF86M30sOCxbInByZXNlbnQiXSkpfX0pLGMwPW5SLHJSPXNlKHtfX25hbWU6IkRpYWxvZ0Rlc2NyaXB0aW9uIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InAifX0sc2V0dXAoZSl7Y29uc3QgdD1lO1VlKCk7Y29uc3Qgbj1tcigpO3JldHVybihyLG8pPT4oUigpLCQoZyhNZSksZmUodCx7aWQ6ZyhuKS5kZXNjcmlwdGlvbklkfSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCJdKSl9fSkseXM9clIsb1I9c2Uoe19fbmFtZToiRGlhbG9nT3ZlcmxheUltcGwiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PW1yKCk7cmV0dXJuIFhiKCEwKSxVZSgpLChuLHIpPT4oUigpLCQoZyhNZSkse2FzOm4uYXMsImFzLWNoaWxkIjpuLmFzQ2hpbGQsImRhdGEtc3RhdGUiOmcodCkub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsc3R5bGU6eyJwb2ludGVyLWV2ZW50cyI6ImF1dG8ifX0se2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXN0YXRlIl0pKX19KSxzUj1vUixpUj1zZSh7X19uYW1lOiJEaWFsb2dPdmVybGF5Iixwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PW1yKCkse2ZvcndhcmRSZWY6bn09VWUoKTtyZXR1cm4ocixvKT0+Zyh0KT8ubW9kYWwudmFsdWU/KFIoKSwkKGcoemwpLHtrZXk6MCxwcmVzZW50OnIuZm9yY2VNb3VudHx8Zyh0KS5vcGVuLnZhbHVlfSx7ZGVmYXVsdDpNKCgpPT5bcmUoc1IsZmUoci4kYXR0cnMse3JlZjpnKG4pLGFzOnIuYXMsImFzLWNoaWxkIjpyLmFzQ2hpbGR9KSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiXSldKSxfOjN9LDgsWyJwcmVzZW50Il0pKTpkZSgidi1pZiIsITApfX0pLHF1PWlSLGFSPXNlKHtfX25hbWU6IlRlbGVwb3J0Iixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJib2R5In0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1RYigpO3JldHVybihuLHIpPT5nKHQpfHxuLmZvcmNlTW91bnQ/KFIoKSwkKHZmLHtrZXk6MCx0bzpuLnRvLGRpc2FibGVkOm4uZGlzYWJsZWQsZGVmZXI6bi5kZWZlcn0sW1Uobi4kc2xvdHMsImRlZmF1bHQiKV0sOCxbInRvIiwiZGlzYWJsZWQiLCJkZWZlciJdKSk6ZGUoInYtaWYiLCEwKX19KSxsZD1hUixsUj1zZSh7X19uYW1lOiJEaWFsb2dQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuKG4scik9PihSKCksJChnKGxkKSx4dChNdCh0KSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSx1MD1sUixjUj1zZSh7X19uYW1lOiJEaWFsb2dUaXRsZSIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJoMiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1tcigpO3JldHVybiBVZSgpLChyLG8pPT4oUigpLCQoZyhNZSksZmUodCx7aWQ6ZyhuKS50aXRsZUlkfSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJpZCJdKSl9fSksdnM9Y1IsdVI9c2Uoe19fbmFtZToiRGlhbG9nVHJpZ2dlciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49bXIoKSx7Zm9yd2FyZFJlZjpyLGN1cnJlbnRFbGVtZW50Om99PVVlKCk7cmV0dXJuIG4uY29udGVudElkfHw9Q3Modm9pZCAwLCJyZWthLWRpYWxvZy1jb250ZW50Iiksb3QoKCk9PntuLnRyaWdnZXJFbGVtZW50LnZhbHVlPW8udmFsdWV9KSwocyxpKT0+KFIoKSwkKGcoTWUpLGZlKHQse3JlZjpnKHIpLHR5cGU6cy5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXJpYS1oYXNwb3B1cCI6ImRpYWxvZyIsImFyaWEtZXhwYW5kZWQiOmcobikub3Blbi52YWx1ZXx8ITEsImFyaWEtY29udHJvbHMiOmcobikub3Blbi52YWx1ZT9nKG4pLmNvbnRlbnRJZDp2b2lkIDAsImRhdGEtc3RhdGUiOmcobikub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsb25DbGljazpnKG4pLm9uT3BlblRvZ2dsZX0pLHtkZWZhdWx0Ok0oKCk9PltVKHMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsidHlwZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWNvbnRyb2xzIiwiZGF0YS1zdGF0ZSIsIm9uQ2xpY2siXSkpfX0pLGYwPXVSO2NvbnN0IFVtPSJkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtIjtmdW5jdGlvbiBtbyhlPXt9KXtjb25zdHtrZXk6dD0iIixpc1Byb3ZpZGVyOm49ITF9PWUscj1gJHt0fUNvbGxlY3Rpb25Qcm92aWRlcmA7bGV0IG87bj8obz17Y29sbGVjdGlvblJlZjpHKCksaXRlbU1hcDpHKG5ldyBNYXApfSxOdChyLG8pKTpvPUtlKHIpO2NvbnN0IHM9KGM9ITEpPT57Y29uc3QgZj1vLmNvbGxlY3Rpb25SZWYudmFsdWU7aWYoIWYpcmV0dXJuW107Y29uc3QgZD1BcnJheS5mcm9tKGYucXVlcnlTZWxlY3RvckFsbChgWyR7VW19XWApKSxtPUFycmF5LmZyb20oby5pdGVtTWFwLnZhbHVlLnZhbHVlcygpKS5zb3J0KCh5LF8pPT5kLmluZGV4T2YoeS5yZWYpLWQuaW5kZXhPZihfLnJlZikpO3JldHVybiBjP206bS5maWx0ZXIoeT0+eS5yZWYuZGF0YXNldC5kaXNhYmxlZCE9PSIiKX0saT1zZSh7bmFtZToiQ29sbGVjdGlvblNsb3QiLGluaGVyaXRBdHRyczohMSxzZXR1cChjLHtzbG90czpmLGF0dHJzOmR9KXtjb25zdHtwcmltaXRpdmVFbGVtZW50OnAsY3VycmVudEVsZW1lbnQ6bX09Qm0oKTtyZXR1cm4gUGUobSwoKT0+e28uY29sbGVjdGlvblJlZi52YWx1ZT1tLnZhbHVlfSksKCk9PkZlKGpvLHtyZWY6cCwuLi5kfSxmKX19KSxhPXNlKHtuYW1lOiJDb2xsZWN0aW9uSXRlbSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOnt2YWx1ZTp7dmFsaWRhdG9yOigpPT4hMH19LHNldHVwKGMse3Nsb3RzOmYsYXR0cnM6ZH0pe2NvbnN0e3ByaW1pdGl2ZUVsZW1lbnQ6cCxjdXJyZW50RWxlbWVudDptfT1CbSgpO3JldHVybiBvbih5PT57aWYobS52YWx1ZSl7Y29uc3QgXz1MbyhtLnZhbHVlKTtvLml0ZW1NYXAudmFsdWUuc2V0KF8se3JlZjptLnZhbHVlLHZhbHVlOmMudmFsdWV9KSx5KCgpPT5vLml0ZW1NYXAudmFsdWUuZGVsZXRlKF8pKX19KSwoKT0+RmUoam8sey4uLmQsW1VtXToiIixyZWY6cH0sZil9fSksbD1OKCgpPT5BcnJheS5mcm9tKG8uaXRlbU1hcC52YWx1ZS52YWx1ZXMoKSkpLHU9TigoKT0+by5pdGVtTWFwLnZhbHVlLnNpemUpO3JldHVybntnZXRJdGVtczpzLHJlYWN0aXZlSXRlbXM6bCxpdGVtTWFwU2l6ZTp1LENvbGxlY3Rpb25TbG90OmksQ29sbGVjdGlvbkl0ZW06YX19dmFyIGZSPXNlKHtfX25hbWU6IlZpc3VhbGx5SGlkZGVuIixwcm9wczp7ZmVhdHVyZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZm9jdXNhYmxlIn0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAoZSl7cmV0dXJuKHQsbik9PihSKCksJChnKE1lKSx7YXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiYXJpYS1oaWRkZW4iOnQuZmVhdHVyZT09PSJmb2N1c2FibGUiPyJ0cnVlIjp2b2lkIDAsImRhdGEtaGlkZGVuIjp0LmZlYXR1cmU9PT0iZnVsbHktaGlkZGVuIj8iIjp2b2lkIDAsdGFiaW5kZXg6dC5mZWF0dXJlPT09ImZ1bGx5LWhpZGRlbiI/Ii0xIjp2b2lkIDAsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHBhZGRpbmc6MCxtYXJnaW46Ii0xcHgiLG92ZXJmbG93OiJoaWRkZW4iLGNsaXA6InJlY3QoMCwgMCwgMCwgMCkiLGNsaXBQYXRoOiJpbnNldCg1MCUpIix3aGl0ZVNwYWNlOiJub3dyYXAiLHdvcmRXcmFwOiJub3JtYWwiLHRvcDoiLTFweCIsbGVmdDoiLTFweCJ9fSx7ZGVmYXVsdDpNKCgpPT5bVSh0LiRzbG90cywiZGVmYXVsdCIpXSksXzozfSw4LFsiYXMiLCJhcy1jaGlsZCIsImFyaWEtaGlkZGVuIiwiZGF0YS1oaWRkZW4iLCJ0YWJpbmRleCJdKSl9fSksVmk9ZlI7Y29uc3RbZDAsZFJdPWduKCJQb3BwZXJSb290Iik7dmFyIHBSPXNlKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJQb3BwZXJSb290IixzZXR1cChlKXtjb25zdCB0PUcoKTtyZXR1cm4gZFIoe2FuY2hvcjp0LG9uQW5jaG9yQ2hhbmdlOm49PnQudmFsdWU9bn0pLChuLHIpPT5VKG4uJHNsb3RzLCJkZWZhdWx0Iil9fSksbVI9cFIsaFI9c2Uoe19fbmFtZToiUG9wcGVyQW5jaG9yIixwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSx7Zm9yd2FyZFJlZjpuLGN1cnJlbnRFbGVtZW50OnJ9PVVlKCksbz1kMCgpO3JldHVybiBDZygoKT0+e28ub25BbmNob3JDaGFuZ2UodC5yZWZlcmVuY2U/P3IudmFsdWUpfSksKHMsaSk9PihSKCksJChnKE1lKSx7cmVmOmcobiksYXM6cy5hcywiYXMtY2hpbGQiOnMuYXNDaGlsZH0se2RlZmF1bHQ6TSgoKT0+W1Uocy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiXSkpfX0pLGdSPWhSO2NvbnN0IHlSPXtrZXk6MCxkOiJNMCAwTDYgNkwxMiAwIn0sdlI9e2tleToxLGQ6Ik0wIDBMNC41ODU3OSA0LjU4NTc5QzUuMzY2ODMgNS4zNjY4MyA2LjYzMzE2IDUuMzY2ODQgNy40MTQyMSA0LjU4NTc5TDEyIDAifTt2YXIgYlI9c2Uoe19fbmFtZToiQXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDoxMH0saGVpZ2h0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuIFVlKCksKG4scik9PihSKCksJChnKE1lKSxmZSh0LHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCx2aWV3Qm94Om4uYXNDaGlsZD92b2lkIDA6IjAgMCAxMiA2IixwcmVzZXJ2ZUFzcGVjdFJhdGlvOm4uYXNDaGlsZD92b2lkIDA6Im5vbmUifSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiLHt9LCgpPT5bbi5yb3VuZGVkPyhSKCksX2UoInBhdGgiLHZSKSk6KFIoKSxfZSgicGF0aCIseVIpKV0pXSksXzozfSwxNixbIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iXSkpfX0pLHdSPWJSO2Z1bmN0aW9uIF9SKGUpe3JldHVybiBlIT09bnVsbH1mdW5jdGlvbiB4UihlKXtyZXR1cm57bmFtZToidHJhbnNmb3JtT3JpZ2luIixvcHRpb25zOmUsZm4odCl7Y29uc3R7cGxhY2VtZW50Om4scmVjdHM6cixtaWRkbGV3YXJlRGF0YTpvfT10LGk9by5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MCxhPWk/MDplLmFycm93V2lkdGgsbD1pPzA6ZS5hcnJvd0hlaWdodCxbdSxjXT1GdShuKSxmPXtzdGFydDoiMCUiLGNlbnRlcjoiNTAlIixlbmQ6IjEwMCUifVtjXSxkPShvLmFycm93Py54Pz8wKSthLzIscD0oby5hcnJvdz8ueT8/MCkrbC8yO2xldCBtPSIiLHk9IiI7cmV0dXJuIHU9PT0iYm90dG9tIj8obT1pP2Y6YCR7ZH1weGAseT1gJHstbH1weGApOnU9PT0idG9wIj8obT1pP2Y6YCR7ZH1weGAseT1gJHtyLmZsb2F0aW5nLmhlaWdodCtsfXB4YCk6dT09PSJyaWdodCI/KG09YCR7LWx9cHhgLHk9aT9mOmAke3B9cHhgKTp1PT09ImxlZnQiJiYobT1gJHtyLmZsb2F0aW5nLndpZHRoK2x9cHhgLHk9aT9mOmAke3B9cHhgKSx7ZGF0YTp7eDptLHl9fX19fWZ1bmN0aW9uIEZ1KGUpe2NvbnN0W3Qsbj0iY2VudGVyIl09ZS5zcGxpdCgiLSIpO3JldHVyblt0LG5dfWNvbnN0IHAwPVsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0sSG09WyJzdGFydCIsImVuZCJdLFdtPXAwLnJlZHVjZSgoZSx0KT0+ZS5jb25jYXQodCx0KyItIitIbVswXSx0KyItIitIbVsxXSksW10pLEtuPU1hdGgubWluLFF0PU1hdGgubWF4LFphPU1hdGgucm91bmQsZ2E9TWF0aC5mbG9vcixmcj1lPT4oe3g6ZSx5OmV9KSxTUj17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtmdW5jdGlvbiB6dShlLHQsbil7cmV0dXJuIFF0KGUsS24odCxuKSl9ZnVuY3Rpb24gUW4oZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSh0KTplfWZ1bmN0aW9uIFRuKGUpe3JldHVybiBlLnNwbGl0KCItIilbMF19ZnVuY3Rpb24gVm4oZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVsxXX1mdW5jdGlvbiBjZChlKXtyZXR1cm4gZT09PSJ4Ij8ieSI6IngifWZ1bmN0aW9uIHVkKGUpe3JldHVybiBlPT09InkiPyJoZWlnaHQiOiJ3aWR0aCJ9ZnVuY3Rpb24gem4oZSl7Y29uc3QgdD1lWzBdO3JldHVybiB0PT09InQifHx0PT09ImIiPyJ5IjoieCJ9ZnVuY3Rpb24gZmQoZSl7cmV0dXJuIGNkKHpuKGUpKX1mdW5jdGlvbiBtMChlLHQsbil7bj09PXZvaWQgMCYmKG49ITEpO2NvbnN0IHI9Vm4oZSksbz1mZChlKSxzPXVkKG8pO2xldCBpPW89PT0ieCI/cj09PShuPyJlbmQiOiJzdGFydCIpPyJyaWdodCI6ImxlZnQiOnI9PT0ic3RhcnQiPyJib3R0b20iOiJ0b3AiO3JldHVybiB0LnJlZmVyZW5jZVtzXT50LmZsb2F0aW5nW3NdJiYoaT10bChpKSksW2ksdGwoaSldfWZ1bmN0aW9uIGtSKGUpe2NvbnN0IHQ9dGwoZSk7cmV0dXJuW2VsKGUpLHQsZWwodCldfWZ1bmN0aW9uIGVsKGUpe3JldHVybiBlLmluY2x1ZGVzKCJzdGFydCIpP2UucmVwbGFjZSgic3RhcnQiLCJlbmQiKTplLnJlcGxhY2UoImVuZCIsInN0YXJ0Iil9Y29uc3QgR209WyJsZWZ0IiwicmlnaHQiXSxLbT1bInJpZ2h0IiwibGVmdCJdLEVSPVsidG9wIiwiYm90dG9tIl0sVFI9WyJib3R0b20iLCJ0b3AiXTtmdW5jdGlvbiBDUihlLHQsbil7c3dpdGNoKGUpe2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6cmV0dXJuIG4/dD9LbTpHbTp0P0dtOkttO2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6cmV0dXJuIHQ/RVI6VFI7ZGVmYXVsdDpyZXR1cm5bXX19ZnVuY3Rpb24gQVIoZSx0LG4scil7Y29uc3Qgbz1WbihlKTtsZXQgcz1DUihUbihlKSxuPT09InN0YXJ0IixyKTtyZXR1cm4gbyYmKHM9cy5tYXAoaT0+aSsiLSIrbyksdCYmKHM9cy5jb25jYXQocy5tYXAoZWwpKSkpLHN9ZnVuY3Rpb24gdGwoZSl7Y29uc3QgdD1UbihlKTtyZXR1cm4gU1JbdF0rZS5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gT1IoZSl7cmV0dXJue3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLmV9fWZ1bmN0aW9uIGRkKGUpe3JldHVybiB0eXBlb2YgZSE9Im51bWJlciI/T1IoZSk6e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfX1mdW5jdGlvbiBBcyhlKXtjb25zdHt4OnQseTpuLHdpZHRoOnIsaGVpZ2h0Om99PWU7cmV0dXJue3dpZHRoOnIsaGVpZ2h0Om8sdG9wOm4sbGVmdDp0LHJpZ2h0OnQrcixib3R0b206bitvLHg6dCx5Om59fWZ1bmN0aW9uIFFtKGUsdCxuKXtsZXR7cmVmZXJlbmNlOnIsZmxvYXRpbmc6b309ZTtjb25zdCBzPXpuKHQpLGk9ZmQodCksYT11ZChpKSxsPVRuKHQpLHU9cz09PSJ5IixjPXIueCtyLndpZHRoLzItby53aWR0aC8yLGY9ci55K3IuaGVpZ2h0LzItby5oZWlnaHQvMixkPXJbYV0vMi1vW2FdLzI7bGV0IHA7c3dpdGNoKGwpe2Nhc2UidG9wIjpwPXt4OmMseTpyLnktby5oZWlnaHR9O2JyZWFrO2Nhc2UiYm90dG9tIjpwPXt4OmMseTpyLnkrci5oZWlnaHR9O2JyZWFrO2Nhc2UicmlnaHQiOnA9e3g6ci54K3Iud2lkdGgseTpmfTticmVhaztjYXNlImxlZnQiOnA9e3g6ci54LW8ud2lkdGgseTpmfTticmVhaztkZWZhdWx0OnA9e3g6ci54LHk6ci55fX1zd2l0Y2goVm4odCkpe2Nhc2Uic3RhcnQiOnBbaV0tPWQqKG4mJnU/LTE6MSk7YnJlYWs7Y2FzZSJlbmQiOnBbaV0rPWQqKG4mJnU/LTE6MSk7YnJlYWt9cmV0dXJuIHB9YXN5bmMgZnVuY3Rpb24gUFIoZSx0KXt2YXIgbjt0PT09dm9pZCAwJiYodD17fSk7Y29uc3R7eDpyLHk6byxwbGF0Zm9ybTpzLHJlY3RzOmksZWxlbWVudHM6YSxzdHJhdGVneTpsfT1lLHtib3VuZGFyeTp1PSJjbGlwcGluZ0FuY2VzdG9ycyIscm9vdEJvdW5kYXJ5OmM9InZpZXdwb3J0IixlbGVtZW50Q29udGV4dDpmPSJmbG9hdGluZyIsYWx0Qm91bmRhcnk6ZD0hMSxwYWRkaW5nOnA9MH09UW4odCxlKSxtPWRkKHApLF89YVtkP2Y9PT0iZmxvYXRpbmciPyJyZWZlcmVuY2UiOiJmbG9hdGluZyI6Zl0sdz1Bcyhhd2FpdCBzLmdldENsaXBwaW5nUmVjdCh7ZWxlbWVudDoobj1hd2FpdChzLmlzRWxlbWVudD09bnVsbD92b2lkIDA6cy5pc0VsZW1lbnQoXykpKT09bnVsbHx8bj9fOl8uY29udGV4dEVsZW1lbnR8fGF3YWl0KHMuZ2V0RG9jdW1lbnRFbGVtZW50PT1udWxsP3ZvaWQgMDpzLmdldERvY3VtZW50RWxlbWVudChhLmZsb2F0aW5nKSksYm91bmRhcnk6dSxyb290Qm91bmRhcnk6YyxzdHJhdGVneTpsfSkpLHY9Zj09PSJmbG9hdGluZyI/e3g6cix5Om8sd2lkdGg6aS5mbG9hdGluZy53aWR0aCxoZWlnaHQ6aS5mbG9hdGluZy5oZWlnaHR9OmkucmVmZXJlbmNlLGg9YXdhaXQocy5nZXRPZmZzZXRQYXJlbnQ9PW51bGw/dm9pZCAwOnMuZ2V0T2Zmc2V0UGFyZW50KGEuZmxvYXRpbmcpKSxiPWF3YWl0KHMuaXNFbGVtZW50PT1udWxsP3ZvaWQgMDpzLmlzRWxlbWVudChoKSk/YXdhaXQocy5nZXRTY2FsZT09bnVsbD92b2lkIDA6cy5nZXRTY2FsZShoKSl8fHt4OjEseToxfTp7eDoxLHk6MX0seD1BcyhzLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IHMuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOmEscmVjdDp2LG9mZnNldFBhcmVudDpoLHN0cmF0ZWd5Omx9KTp2KTtyZXR1cm57dG9wOih3LnRvcC14LnRvcCttLnRvcCkvYi55LGJvdHRvbTooeC5ib3R0b20tdy5ib3R0b20rbS5ib3R0b20pL2IueSxsZWZ0Oih3LmxlZnQteC5sZWZ0K20ubGVmdCkvYi54LHJpZ2h0Oih4LnJpZ2h0LXcucmlnaHQrbS5yaWdodCkvYi54fX1jb25zdCBJUj01MCxSUj1hc3luYyhlLHQsbik9Pntjb25zdHtwbGFjZW1lbnQ6cj0iYm90dG9tIixzdHJhdGVneTpvPSJhYnNvbHV0ZSIsbWlkZGxld2FyZTpzPVtdLHBsYXRmb3JtOml9PW4sYT1pLmRldGVjdE92ZXJmbG93P2k6ey4uLmksZGV0ZWN0T3ZlcmZsb3c6UFJ9LGw9YXdhaXQoaS5pc1JUTD09bnVsbD92b2lkIDA6aS5pc1JUTCh0KSk7bGV0IHU9YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pLHt4OmMseTpmfT1RbSh1LHIsbCksZD1yLHA9MDtjb25zdCBtPXt9O2ZvcihsZXQgeT0wO3k8cy5sZW5ndGg7eSsrKXtjb25zdCBfPXNbeV07aWYoIV8pY29udGludWU7Y29uc3R7bmFtZTp3LGZuOnZ9PV8se3g6aCx5OmIsZGF0YTp4LHJlc2V0OlN9PWF3YWl0IHYoe3g6Yyx5OmYsaW5pdGlhbFBsYWNlbWVudDpyLHBsYWNlbWVudDpkLHN0cmF0ZWd5Om8sbWlkZGxld2FyZURhdGE6bSxyZWN0czp1LHBsYXRmb3JtOmEsZWxlbWVudHM6e3JlZmVyZW5jZTplLGZsb2F0aW5nOnR9fSk7Yz1oPz9jLGY9Yj8/ZixtW3ddPXsuLi5tW3ddLC4uLnh9LFMmJnA8SVImJihwKyssdHlwZW9mIFM9PSJvYmplY3QiJiYoUy5wbGFjZW1lbnQmJihkPVMucGxhY2VtZW50KSxTLnJlY3RzJiYodT1TLnJlY3RzPT09ITA/YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pOlMucmVjdHMpLHt4OmMseTpmfT1RbSh1LGQsbCkpLHk9LTEpfXJldHVybnt4OmMseTpmLHBsYWNlbWVudDpkLHN0cmF0ZWd5Om8sbWlkZGxld2FyZURhdGE6bX19LE5SPWU9Pih7bmFtZToiYXJyb3ciLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpyLHBsYWNlbWVudDpvLHJlY3RzOnMscGxhdGZvcm06aSxlbGVtZW50czphLG1pZGRsZXdhcmVEYXRhOmx9PXQse2VsZW1lbnQ6dSxwYWRkaW5nOmM9MH09UW4oZSx0KXx8e307aWYodT09bnVsbClyZXR1cm57fTtjb25zdCBmPWRkKGMpLGQ9e3g6bix5OnJ9LHA9ZmQobyksbT11ZChwKSx5PWF3YWl0IGkuZ2V0RGltZW5zaW9ucyh1KSxfPXA9PT0ieSIsdz1fPyJ0b3AiOiJsZWZ0Iix2PV8/ImJvdHRvbSI6InJpZ2h0IixoPV8/ImNsaWVudEhlaWdodCI6ImNsaWVudFdpZHRoIixiPXMucmVmZXJlbmNlW21dK3MucmVmZXJlbmNlW3BdLWRbcF0tcy5mbG9hdGluZ1ttXSx4PWRbcF0tcy5yZWZlcmVuY2VbcF0sUz1hd2FpdChpLmdldE9mZnNldFBhcmVudD09bnVsbD92b2lkIDA6aS5nZXRPZmZzZXRQYXJlbnQodSkpO2xldCBrPVM/U1toXTowOygha3x8IWF3YWl0KGkuaXNFbGVtZW50PT1udWxsP3ZvaWQgMDppLmlzRWxlbWVudChTKSkpJiYoaz1hLmZsb2F0aW5nW2hdfHxzLmZsb2F0aW5nW21dKTtjb25zdCBUPWIvMi14LzIsQz1rLzIteVttXS8yLTEsUD1LbihmW3ddLEMpLEY9S24oZlt2XSxDKSxEPVAsVz1rLXlbbV0tRixMPWsvMi15W21dLzIrVCxqPXp1KEQsTCxXKSxJPSFsLmFycm93JiZWbihvKSE9bnVsbCYmTCE9PWomJnMucmVmZXJlbmNlW21dLzItKEw8RD9QOkYpLXlbbV0vMjwwLFY9ST9MPEQ/TC1EOkwtVzowO3JldHVybntbcF06ZFtwXStWLGRhdGE6e1twXTpqLGNlbnRlck9mZnNldDpMLWotViwuLi5JJiZ7YWxpZ25tZW50T2Zmc2V0OlZ9fSxyZXNldDpJfX19KTtmdW5jdGlvbiBEUihlLHQsbil7cmV0dXJuKGU/Wy4uLm4uZmlsdGVyKG89PlZuKG8pPT09ZSksLi4ubi5maWx0ZXIobz0+Vm4obykhPT1lKV06bi5maWx0ZXIobz0+VG4obyk9PT1vKSkuZmlsdGVyKG89PmU/Vm4obyk9PT1lfHwodD9lbChvKSE9PW86ITEpOiEwKX1jb25zdCBMUj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJhdXRvUGxhY2VtZW50IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scixvO2NvbnN0e3JlY3RzOnMsbWlkZGxld2FyZURhdGE6aSxwbGFjZW1lbnQ6YSxwbGF0Zm9ybTpsLGVsZW1lbnRzOnV9PXQse2Nyb3NzQXhpczpjPSExLGFsaWdubWVudDpmLGFsbG93ZWRQbGFjZW1lbnRzOmQ9V20sYXV0b0FsaWdubWVudDpwPSEwLC4uLm19PVFuKGUsdCkseT1mIT09dm9pZCAwfHxkPT09V20/RFIoZnx8bnVsbCxwLGQpOmQsXz1hd2FpdCBsLmRldGVjdE92ZXJmbG93KHQsbSksdz0oKG49aS5hdXRvUGxhY2VtZW50KT09bnVsbD92b2lkIDA6bi5pbmRleCl8fDAsdj15W3ddO2lmKHY9PW51bGwpcmV0dXJue307Y29uc3QgaD1tMCh2LHMsYXdhaXQobC5pc1JUTD09bnVsbD92b2lkIDA6bC5pc1JUTCh1LmZsb2F0aW5nKSkpO2lmKGEhPT12KXJldHVybntyZXNldDp7cGxhY2VtZW50OnlbMF19fTtjb25zdCBiPVtfW1RuKHYpXSxfW2hbMF1dLF9baFsxXV1dLHg9Wy4uLigocj1pLmF1dG9QbGFjZW1lbnQpPT1udWxsP3ZvaWQgMDpyLm92ZXJmbG93cyl8fFtdLHtwbGFjZW1lbnQ6dixvdmVyZmxvd3M6Yn1dLFM9eVt3KzFdO2lmKFMpcmV0dXJue2RhdGE6e2luZGV4OncrMSxvdmVyZmxvd3M6eH0scmVzZXQ6e3BsYWNlbWVudDpTfX07Y29uc3Qgaz14Lm1hcChQPT57Y29uc3QgRj1WbihQLnBsYWNlbWVudCk7cmV0dXJuW1AucGxhY2VtZW50LEYmJmM/UC5vdmVyZmxvd3Muc2xpY2UoMCwyKS5yZWR1Y2UoKEQsVyk9PkQrVywwKTpQLm92ZXJmbG93c1swXSxQLm92ZXJmbG93c119KS5zb3J0KChQLEYpPT5QWzFdLUZbMV0pLEM9KChvPWsuZmlsdGVyKFA9PlBbMl0uc2xpY2UoMCxWbihQWzBdKT8yOjMpLmV2ZXJ5KEY9PkY8PTApKVswXSk9PW51bGw/dm9pZCAwOm9bMF0pfHxrWzBdWzBdO3JldHVybiBDIT09YT97ZGF0YTp7aW5kZXg6dysxLG92ZXJmbG93czp4fSxyZXNldDp7cGxhY2VtZW50OkN9fTp7fX19fSwkUj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJmbGlwIixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHtwbGFjZW1lbnQ6byxtaWRkbGV3YXJlRGF0YTpzLHJlY3RzOmksaW5pdGlhbFBsYWNlbWVudDphLHBsYXRmb3JtOmwsZWxlbWVudHM6dX09dCx7bWFpbkF4aXM6Yz0hMCxjcm9zc0F4aXM6Zj0hMCxmYWxsYmFja1BsYWNlbWVudHM6ZCxmYWxsYmFja1N0cmF0ZWd5OnA9ImJlc3RGaXQiLGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246bT0ibm9uZSIsZmxpcEFsaWdubWVudDp5PSEwLC4uLl99PVFuKGUsdCk7aWYoKG49cy5hcnJvdykhPW51bGwmJm4uYWxpZ25tZW50T2Zmc2V0KXJldHVybnt9O2NvbnN0IHc9VG4obyksdj16bihhKSxoPVRuKGEpPT09YSxiPWF3YWl0KGwuaXNSVEw9PW51bGw/dm9pZCAwOmwuaXNSVEwodS5mbG9hdGluZykpLHg9ZHx8KGh8fCF5P1t0bChhKV06a1IoYSkpLFM9bSE9PSJub25lIjshZCYmUyYmeC5wdXNoKC4uLkFSKGEseSxtLGIpKTtjb25zdCBrPVthLC4uLnhdLFQ9YXdhaXQgbC5kZXRlY3RPdmVyZmxvdyh0LF8pLEM9W107bGV0IFA9KChyPXMuZmxpcCk9PW51bGw/dm9pZCAwOnIub3ZlcmZsb3dzKXx8W107aWYoYyYmQy5wdXNoKFRbd10pLGYpe2NvbnN0IEw9bTAobyxpLGIpO0MucHVzaChUW0xbMF1dLFRbTFsxXV0pfWlmKFA9Wy4uLlAse3BsYWNlbWVudDpvLG92ZXJmbG93czpDfV0sIUMuZXZlcnkoTD0+TDw9MCkpe3ZhciBGLEQ7Y29uc3QgTD0oKChGPXMuZmxpcCk9PW51bGw/dm9pZCAwOkYuaW5kZXgpfHwwKSsxLGo9a1tMXTtpZihqJiYoIShmPT09ImFsaWdubWVudCI/diE9PXpuKGopOiExKXx8UC5ldmVyeShCPT56bihCLnBsYWNlbWVudCk9PT12P0Iub3ZlcmZsb3dzWzBdPjA6ITApKSlyZXR1cm57ZGF0YTp7aW5kZXg6TCxvdmVyZmxvd3M6UH0scmVzZXQ6e3BsYWNlbWVudDpqfX07bGV0IEk9KEQ9UC5maWx0ZXIoVj0+Vi5vdmVyZmxvd3NbMF08PTApLnNvcnQoKFYsQik9PlYub3ZlcmZsb3dzWzFdLUIub3ZlcmZsb3dzWzFdKVswXSk9PW51bGw/dm9pZCAwOkQucGxhY2VtZW50O2lmKCFJKXN3aXRjaChwKXtjYXNlImJlc3RGaXQiOnt2YXIgVztjb25zdCBWPShXPVAuZmlsdGVyKEI9PntpZihTKXtjb25zdCBpZT16bihCLnBsYWNlbWVudCk7cmV0dXJuIGllPT09dnx8aWU9PT0ieSJ9cmV0dXJuITB9KS5tYXAoQj0+W0IucGxhY2VtZW50LEIub3ZlcmZsb3dzLmZpbHRlcihpZT0+aWU+MCkucmVkdWNlKChpZSxuZSk9PmllK25lLDApXSkuc29ydCgoQixpZSk9PkJbMV0taWVbMV0pWzBdKT09bnVsbD92b2lkIDA6V1swXTtWJiYoST1WKTticmVha31jYXNlImluaXRpYWxQbGFjZW1lbnQiOkk9YTticmVha31pZihvIT09SSlyZXR1cm57cmVzZXQ6e3BsYWNlbWVudDpJfX19cmV0dXJue319fX07ZnVuY3Rpb24gWW0oZSx0KXtyZXR1cm57dG9wOmUudG9wLXQuaGVpZ2h0LHJpZ2h0OmUucmlnaHQtdC53aWR0aCxib3R0b206ZS5ib3R0b20tdC5oZWlnaHQsbGVmdDplLmxlZnQtdC53aWR0aH19ZnVuY3Rpb24gSm0oZSl7cmV0dXJuIHAwLnNvbWUodD0+ZVt0XT49MCl9Y29uc3QgTVI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToiaGlkZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3JlY3RzOm4scGxhdGZvcm06cn09dCx7c3RyYXRlZ3k6bz0icmVmZXJlbmNlSGlkZGVuIiwuLi5zfT1RbihlLHQpO3N3aXRjaChvKXtjYXNlInJlZmVyZW5jZUhpZGRlbiI6e2NvbnN0IGk9YXdhaXQgci5kZXRlY3RPdmVyZmxvdyh0LHsuLi5zLGVsZW1lbnRDb250ZXh0OiJyZWZlcmVuY2UifSksYT1ZbShpLG4ucmVmZXJlbmNlKTtyZXR1cm57ZGF0YTp7cmVmZXJlbmNlSGlkZGVuT2Zmc2V0czphLHJlZmVyZW5jZUhpZGRlbjpKbShhKX19fWNhc2UiZXNjYXBlZCI6e2NvbnN0IGk9YXdhaXQgci5kZXRlY3RPdmVyZmxvdyh0LHsuLi5zLGFsdEJvdW5kYXJ5OiEwfSksYT1ZbShpLG4uZmxvYXRpbmcpO3JldHVybntkYXRhOntlc2NhcGVkT2Zmc2V0czphLGVzY2FwZWQ6Sm0oYSl9fX1kZWZhdWx0OnJldHVybnt9fX19fTtmdW5jdGlvbiBoMChlKXtjb25zdCB0PUtuKC4uLmUubWFwKHM9PnMubGVmdCkpLG49S24oLi4uZS5tYXAocz0+cy50b3ApKSxyPVF0KC4uLmUubWFwKHM9PnMucmlnaHQpKSxvPVF0KC4uLmUubWFwKHM9PnMuYm90dG9tKSk7cmV0dXJue3g6dCx5Om4sd2lkdGg6ci10LGhlaWdodDpvLW59fWZ1bmN0aW9uIEJSKGUpe2NvbnN0IHQ9ZS5zbGljZSgpLnNvcnQoKG8scyk9Pm8ueS1zLnkpLG49W107bGV0IHI9bnVsbDtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3Qgcz10W29dOyFyfHxzLnktci55PnIuaGVpZ2h0LzI/bi5wdXNoKFtzXSk6bltuLmxlbmd0aC0xXS5wdXNoKHMpLHI9c31yZXR1cm4gbi5tYXAobz0+QXMoaDAobykpKX1jb25zdCBxUj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJpbmxpbmUiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixlbGVtZW50czpyLHJlY3RzOm8scGxhdGZvcm06cyxzdHJhdGVneTppfT10LHtwYWRkaW5nOmE9Mix4OmwseTp1fT1RbihlLHQpLGM9QXJyYXkuZnJvbShhd2FpdChzLmdldENsaWVudFJlY3RzPT1udWxsP3ZvaWQgMDpzLmdldENsaWVudFJlY3RzKHIucmVmZXJlbmNlKSl8fFtdKSxmPUJSKGMpLGQ9QXMoaDAoYykpLHA9ZGQoYSk7ZnVuY3Rpb24gbSgpe2lmKGYubGVuZ3RoPT09MiYmZlswXS5sZWZ0PmZbMV0ucmlnaHQmJmwhPW51bGwmJnUhPW51bGwpcmV0dXJuIGYuZmluZChfPT5sPl8ubGVmdC1wLmxlZnQmJmw8Xy5yaWdodCtwLnJpZ2h0JiZ1Pl8udG9wLXAudG9wJiZ1PF8uYm90dG9tK3AuYm90dG9tKXx8ZDtpZihmLmxlbmd0aD49Mil7aWYoem4obik9PT0ieSIpe2NvbnN0IFA9ZlswXSxGPWZbZi5sZW5ndGgtMV0sRD1UbihuKT09PSJ0b3AiLFc9UC50b3AsTD1GLmJvdHRvbSxqPUQ/UC5sZWZ0OkYubGVmdCxJPUQ/UC5yaWdodDpGLnJpZ2h0LFY9SS1qLEI9TC1XO3JldHVybnt0b3A6Vyxib3R0b206TCxsZWZ0OmoscmlnaHQ6SSx3aWR0aDpWLGhlaWdodDpCLHg6aix5Old9fWNvbnN0IF89VG4obik9PT0ibGVmdCIsdz1RdCguLi5mLm1hcChQPT5QLnJpZ2h0KSksdj1LbiguLi5mLm1hcChQPT5QLmxlZnQpKSxoPWYuZmlsdGVyKFA9Pl8/UC5sZWZ0PT09djpQLnJpZ2h0PT09dyksYj1oWzBdLnRvcCx4PWhbaC5sZW5ndGgtMV0uYm90dG9tLFM9dixrPXcsVD1rLVMsQz14LWI7cmV0dXJue3RvcDpiLGJvdHRvbTp4LGxlZnQ6UyxyaWdodDprLHdpZHRoOlQsaGVpZ2h0OkMseDpTLHk6Yn19cmV0dXJuIGR9Y29uc3QgeT1hd2FpdCBzLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOntnZXRCb3VuZGluZ0NsaWVudFJlY3Q6bX0sZmxvYXRpbmc6ci5mbG9hdGluZyxzdHJhdGVneTppfSk7cmV0dXJuIG8ucmVmZXJlbmNlLnghPT15LnJlZmVyZW5jZS54fHxvLnJlZmVyZW5jZS55IT09eS5yZWZlcmVuY2UueXx8by5yZWZlcmVuY2Uud2lkdGghPT15LnJlZmVyZW5jZS53aWR0aHx8by5yZWZlcmVuY2UuaGVpZ2h0IT09eS5yZWZlcmVuY2UuaGVpZ2h0P3tyZXNldDp7cmVjdHM6eX19Ont9fX19LGcwPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2FzeW5jIGZ1bmN0aW9uIEZSKGUsdCl7Y29uc3R7cGxhY2VtZW50Om4scGxhdGZvcm06cixlbGVtZW50czpvfT1lLHM9YXdhaXQoci5pc1JUTD09bnVsbD92b2lkIDA6ci5pc1JUTChvLmZsb2F0aW5nKSksaT1UbihuKSxhPVZuKG4pLGw9em4obik9PT0ieSIsdT1nMC5oYXMoaSk/LTE6MSxjPXMmJmw/LTE6MSxmPVFuKHQsZSk7bGV0e21haW5BeGlzOmQsY3Jvc3NBeGlzOnAsYWxpZ25tZW50QXhpczptfT10eXBlb2YgZj09Im51bWJlciI/e21haW5BeGlzOmYsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6Zi5tYWluQXhpc3x8MCxjcm9zc0F4aXM6Zi5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpmLmFsaWdubWVudEF4aXN9O3JldHVybiBhJiZ0eXBlb2YgbT09Im51bWJlciImJihwPWE9PT0iZW5kIj9tKi0xOm0pLGw/e3g6cCpjLHk6ZCp1fTp7eDpkKnUseTpwKmN9fWNvbnN0IHpSPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHt4Om8seTpzLHBsYWNlbWVudDppLG1pZGRsZXdhcmVEYXRhOmF9PXQsbD1hd2FpdCBGUih0LGUpO3JldHVybiBpPT09KChuPWEub2Zmc2V0KT09bnVsbD92b2lkIDA6bi5wbGFjZW1lbnQpJiYocj1hLmFycm93KSE9bnVsbCYmci5hbGlnbm1lbnRPZmZzZXQ/e306e3g6bytsLngseTpzK2wueSxkYXRhOnsuLi5sLHBsYWNlbWVudDppfX19fX0salI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToic2hpZnQiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpyLHBsYWNlbWVudDpvLHBsYXRmb3JtOnN9PXQse21haW5BeGlzOmk9ITAsY3Jvc3NBeGlzOmE9ITEsbGltaXRlcjpsPXtmbjp3PT57bGV0e3g6dix5Omh9PXc7cmV0dXJue3g6dix5Omh9fX0sLi4udX09UW4oZSx0KSxjPXt4Om4seTpyfSxmPWF3YWl0IHMuZGV0ZWN0T3ZlcmZsb3codCx1KSxkPXpuKFRuKG8pKSxwPWNkKGQpO2xldCBtPWNbcF0seT1jW2RdO2lmKGkpe2NvbnN0IHc9cD09PSJ5Ij8idG9wIjoibGVmdCIsdj1wPT09InkiPyJib3R0b20iOiJyaWdodCIsaD1tK2Zbd10sYj1tLWZbdl07bT16dShoLG0sYil9aWYoYSl7Y29uc3Qgdz1kPT09InkiPyJ0b3AiOiJsZWZ0Iix2PWQ9PT0ieSI/ImJvdHRvbSI6InJpZ2h0IixoPXkrZlt3XSxiPXktZlt2XTt5PXp1KGgseSxiKX1jb25zdCBfPWwuZm4oey4uLnQsW3BdOm0sW2RdOnl9KTtyZXR1cm57Li4uXyxkYXRhOnt4Ol8ueC1uLHk6Xy55LXIsZW5hYmxlZDp7W3BdOmksW2RdOmF9fX19fX0sVlI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7b3B0aW9uczplLGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50Om8scmVjdHM6cyxtaWRkbGV3YXJlRGF0YTppfT10LHtvZmZzZXQ6YT0wLG1haW5BeGlzOmw9ITAsY3Jvc3NBeGlzOnU9ITB9PVFuKGUsdCksYz17eDpuLHk6cn0sZj16bihvKSxkPWNkKGYpO2xldCBwPWNbZF0sbT1jW2ZdO2NvbnN0IHk9UW4oYSx0KSxfPXR5cGVvZiB5PT0ibnVtYmVyIj97bWFpbkF4aXM6eSxjcm9zc0F4aXM6MH06e21haW5BeGlzOjAsY3Jvc3NBeGlzOjAsLi4ueX07aWYobCl7Y29uc3QgaD1kPT09InkiPyJoZWlnaHQiOiJ3aWR0aCIsYj1zLnJlZmVyZW5jZVtkXS1zLmZsb2F0aW5nW2hdK18ubWFpbkF4aXMseD1zLnJlZmVyZW5jZVtkXStzLnJlZmVyZW5jZVtoXS1fLm1haW5BeGlzO3A8Yj9wPWI6cD54JiYocD14KX1pZih1KXt2YXIgdyx2O2NvbnN0IGg9ZD09PSJ5Ij8id2lkdGgiOiJoZWlnaHQiLGI9ZzAuaGFzKFRuKG8pKSx4PXMucmVmZXJlbmNlW2ZdLXMuZmxvYXRpbmdbaF0rKGImJigodz1pLm9mZnNldCk9PW51bGw/dm9pZCAwOndbZl0pfHwwKSsoYj8wOl8uY3Jvc3NBeGlzKSxTPXMucmVmZXJlbmNlW2ZdK3MucmVmZXJlbmNlW2hdKyhiPzA6KCh2PWkub2Zmc2V0KT09bnVsbD92b2lkIDA6dltmXSl8fDApLShiP18uY3Jvc3NBeGlzOjApO208eD9tPXg6bT5TJiYobT1TKX1yZXR1cm57W2RdOnAsW2ZdOm19fX19LFVSPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6InNpemUiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXt2YXIgbixyO2NvbnN0e3BsYWNlbWVudDpvLHJlY3RzOnMscGxhdGZvcm06aSxlbGVtZW50czphfT10LHthcHBseTpsPSgpPT57fSwuLi51fT1RbihlLHQpLGM9YXdhaXQgaS5kZXRlY3RPdmVyZmxvdyh0LHUpLGY9VG4obyksZD1WbihvKSxwPXpuKG8pPT09InkiLHt3aWR0aDptLGhlaWdodDp5fT1zLmZsb2F0aW5nO2xldCBfLHc7Zj09PSJ0b3AifHxmPT09ImJvdHRvbSI/KF89Zix3PWQ9PT0oYXdhaXQoaS5pc1JUTD09bnVsbD92b2lkIDA6aS5pc1JUTChhLmZsb2F0aW5nKSk/InN0YXJ0IjoiZW5kIik/ImxlZnQiOiJyaWdodCIpOih3PWYsXz1kPT09ImVuZCI/InRvcCI6ImJvdHRvbSIpO2NvbnN0IHY9eS1jLnRvcC1jLmJvdHRvbSxoPW0tYy5sZWZ0LWMucmlnaHQsYj1Lbih5LWNbX10sdikseD1LbihtLWNbd10saCksUz0hdC5taWRkbGV3YXJlRGF0YS5zaGlmdDtsZXQgaz1iLFQ9eDtpZigobj10Lm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSE9bnVsbCYmbi5lbmFibGVkLngmJihUPWgpLChyPXQubWlkZGxld2FyZURhdGEuc2hpZnQpIT1udWxsJiZyLmVuYWJsZWQueSYmKGs9diksUyYmIWQpe2NvbnN0IFA9UXQoYy5sZWZ0LDApLEY9UXQoYy5yaWdodCwwKSxEPVF0KGMudG9wLDApLFc9UXQoYy5ib3R0b20sMCk7cD9UPW0tMiooUCE9PTB8fEYhPT0wP1ArRjpRdChjLmxlZnQsYy5yaWdodCkpOms9eS0yKihEIT09MHx8VyE9PTA/RCtXOlF0KGMudG9wLGMuYm90dG9tKSl9YXdhaXQgbCh7Li4udCxhdmFpbGFibGVXaWR0aDpULGF2YWlsYWJsZUhlaWdodDprfSk7Y29uc3QgQz1hd2FpdCBpLmdldERpbWVuc2lvbnMoYS5mbG9hdGluZyk7cmV0dXJuIG0hPT1DLndpZHRofHx5IT09Qy5oZWlnaHQ/e3Jlc2V0OntyZWN0czohMH19Ont9fX19O2Z1bmN0aW9uIGpsKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUifWZ1bmN0aW9uIEdvKGUpe3JldHVybiBwZChlKT8oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6IiNkb2N1bWVudCJ9ZnVuY3Rpb24gU24oZSl7dmFyIHQ7cmV0dXJuKGU9PW51bGx8fCh0PWUub3duZXJEb2N1bWVudCk9PW51bGw/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9ZnVuY3Rpb24gaHIoZSl7dmFyIHQ7cmV0dXJuKHQ9KHBkKGUpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8d2luZG93LmRvY3VtZW50KT09bnVsbD92b2lkIDA6dC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gcGQoZSl7cmV0dXJuIGpsKCk/ZSBpbnN0YW5jZW9mIE5vZGV8fGUgaW5zdGFuY2VvZiBTbihlKS5Ob2RlOiExfWZ1bmN0aW9uIFluKGUpe3JldHVybiBqbCgpP2UgaW5zdGFuY2VvZiBFbGVtZW50fHxlIGluc3RhbmNlb2YgU24oZSkuRWxlbWVudDohMX1mdW5jdGlvbiBVcihlKXtyZXR1cm4gamwoKT9lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fGUgaW5zdGFuY2VvZiBTbihlKS5IVE1MRWxlbWVudDohMX1mdW5jdGlvbiBYbShlKXtyZXR1cm4hamwoKXx8dHlwZW9mIFNoYWRvd1Jvb3Q+InUiPyExOmUgaW5zdGFuY2VvZiBTaGFkb3dSb290fHxlIGluc3RhbmNlb2YgU24oZSkuU2hhZG93Um9vdH1mdW5jdGlvbiBVaShlKXtjb25zdHtvdmVyZmxvdzp0LG92ZXJmbG93WDpuLG92ZXJmbG93WTpyLGRpc3BsYXk6b309Sm4oZSk7cmV0dXJuL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3QodCtyK24pJiZvIT09ImlubGluZSImJm8hPT0iY29udGVudHMifWZ1bmN0aW9uIEhSKGUpe3JldHVybi9eKHRhYmxlfHRkfHRoKSQvLnRlc3QoR28oZSkpfWZ1bmN0aW9uIFZsKGUpe3RyeXtpZihlLm1hdGNoZXMoIjpwb3BvdmVyLW9wZW4iKSlyZXR1cm4hMH1jYXRjaHt9dHJ5e3JldHVybiBlLm1hdGNoZXMoIjptb2RhbCIpfWNhdGNoe3JldHVybiExfX1jb25zdCBXUj0vdHJhbnNmb3JtfHRyYW5zbGF0ZXxzY2FsZXxyb3RhdGV8cGVyc3BlY3RpdmV8ZmlsdGVyLyxHUj0vcGFpbnR8bGF5b3V0fHN0cmljdHxjb250ZW50Lyxrbz1lPT4hIWUmJmUhPT0ibm9uZSI7bGV0IEZjO2Z1bmN0aW9uIG1kKGUpe2NvbnN0IHQ9WW4oZSk/Sm4oZSk6ZTtyZXR1cm4ga28odC50cmFuc2Zvcm0pfHxrbyh0LnRyYW5zbGF0ZSl8fGtvKHQuc2NhbGUpfHxrbyh0LnJvdGF0ZSl8fGtvKHQucGVyc3BlY3RpdmUpfHwhaGQoKSYmKGtvKHQuYmFja2Ryb3BGaWx0ZXIpfHxrbyh0LmZpbHRlcikpfHxXUi50ZXN0KHQud2lsbENoYW5nZXx8IiIpfHxHUi50ZXN0KHQuY29udGFpbnx8IiIpfWZ1bmN0aW9uIEtSKGUpe2xldCB0PWxvKGUpO2Zvcig7VXIodCkmJiFPcyh0KTspe2lmKG1kKHQpKXJldHVybiB0O2lmKFZsKHQpKXJldHVybiBudWxsO3Q9bG8odCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaGQoKXtyZXR1cm4gRmM9PW51bGwmJihGYz10eXBlb2YgQ1NTPCJ1IiYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoIi13ZWJraXQtYmFja2Ryb3AtZmlsdGVyIiwibm9uZSIpKSxGY31mdW5jdGlvbiBPcyhlKXtyZXR1cm4vXihodG1sfGJvZHl8I2RvY3VtZW50KSQvLnRlc3QoR28oZSkpfWZ1bmN0aW9uIEpuKGUpe3JldHVybiBTbihlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIFVsKGUpe3JldHVybiBZbihlKT97c2Nyb2xsTGVmdDplLnNjcm9sbExlZnQsc2Nyb2xsVG9wOmUuc2Nyb2xsVG9wfTp7c2Nyb2xsTGVmdDplLnNjcm9sbFgsc2Nyb2xsVG9wOmUuc2Nyb2xsWX19ZnVuY3Rpb24gbG8oZSl7aWYoR28oZSk9PT0iaHRtbCIpcmV0dXJuIGU7Y29uc3QgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxYbShlKSYmZS5ob3N0fHxocihlKTtyZXR1cm4gWG0odCk/dC5ob3N0OnR9ZnVuY3Rpb24geTAoZSl7Y29uc3QgdD1sbyhlKTtyZXR1cm4gT3ModCk/ZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudC5ib2R5OmUuYm9keTpVcih0KSYmVWkodCk/dDp5MCh0KX1mdW5jdGlvbiBPaShlLHQsbil7dmFyIHI7dD09PXZvaWQgMCYmKHQ9W10pLG49PT12b2lkIDAmJihuPSEwKTtjb25zdCBvPXkwKGUpLHM9bz09PSgocj1lLm93bmVyRG9jdW1lbnQpPT1udWxsP3ZvaWQgMDpyLmJvZHkpLGk9U24obyk7aWYocyl7Y29uc3QgYT1qdShpKTtyZXR1cm4gdC5jb25jYXQoaSxpLnZpc3VhbFZpZXdwb3J0fHxbXSxVaShvKT9vOltdLGEmJm4/T2koYSk6W10pfWVsc2UgcmV0dXJuIHQuY29uY2F0KG8sT2kobyxbXSxuKSl9ZnVuY3Rpb24ganUoZSl7cmV0dXJuIGUucGFyZW50JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wYXJlbnQpP2UuZnJhbWVFbGVtZW50Om51bGx9ZnVuY3Rpb24gdjAoZSl7Y29uc3QgdD1KbihlKTtsZXQgbj1wYXJzZUZsb2F0KHQud2lkdGgpfHwwLHI9cGFyc2VGbG9hdCh0LmhlaWdodCl8fDA7Y29uc3Qgbz1VcihlKSxzPW8/ZS5vZmZzZXRXaWR0aDpuLGk9bz9lLm9mZnNldEhlaWdodDpyLGE9WmEobikhPT1zfHxaYShyKSE9PWk7cmV0dXJuIGEmJihuPXMscj1pKSx7d2lkdGg6bixoZWlnaHQ6ciwkOmF9fWZ1bmN0aW9uIGdkKGUpe3JldHVybiBZbihlKT9lOmUuY29udGV4dEVsZW1lbnR9ZnVuY3Rpb24gYnMoZSl7Y29uc3QgdD1nZChlKTtpZighVXIodCkpcmV0dXJuIGZyKDEpO2NvbnN0IG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6cixoZWlnaHQ6bywkOnN9PXYwKHQpO2xldCBpPShzP1phKG4ud2lkdGgpOm4ud2lkdGgpL3IsYT0ocz9aYShuLmhlaWdodCk6bi5oZWlnaHQpL287cmV0dXJuKCFpfHwhTnVtYmVyLmlzRmluaXRlKGkpKSYmKGk9MSksKCFhfHwhTnVtYmVyLmlzRmluaXRlKGEpKSYmKGE9MSkse3g6aSx5OmF9fWNvbnN0IFFSPWZyKDApO2Z1bmN0aW9uIGIwKGUpe2NvbnN0IHQ9U24oZSk7cmV0dXJuIWhkKCl8fCF0LnZpc3VhbFZpZXdwb3J0P1FSOnt4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfX1mdW5jdGlvbiBZUihlLHQsbil7cmV0dXJuIHQ9PT12b2lkIDAmJih0PSExKSwhbnx8dCYmbiE9PVNuKGUpPyExOnR9ZnVuY3Rpb24gVm8oZSx0LG4scil7dD09PXZvaWQgMCYmKHQ9ITEpLG49PT12b2lkIDAmJihuPSExKTtjb25zdCBvPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1nZChlKTtsZXQgaT1mcigxKTt0JiYocj9ZbihyKSYmKGk9YnMocikpOmk9YnMoZSkpO2NvbnN0IGE9WVIocyxuLHIpP2IwKHMpOmZyKDApO2xldCBsPShvLmxlZnQrYS54KS9pLngsdT0oby50b3ArYS55KS9pLnksYz1vLndpZHRoL2kueCxmPW8uaGVpZ2h0L2kueTtpZihzKXtjb25zdCBkPVNuKHMpLHA9ciYmWW4ocik/U24ocik6cjtsZXQgbT1kLHk9anUobSk7Zm9yKDt5JiZyJiZwIT09bTspe2NvbnN0IF89YnMoeSksdz15LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9Sm4oeSksaD13LmxlZnQrKHkuY2xpZW50TGVmdCtwYXJzZUZsb2F0KHYucGFkZGluZ0xlZnQpKSpfLngsYj13LnRvcCsoeS5jbGllbnRUb3ArcGFyc2VGbG9hdCh2LnBhZGRpbmdUb3ApKSpfLnk7bCo9Xy54LHUqPV8ueSxjKj1fLngsZio9Xy55LGwrPWgsdSs9YixtPVNuKHkpLHk9anUobSl9fXJldHVybiBBcyh7d2lkdGg6YyxoZWlnaHQ6Zix4OmwseTp1fSl9ZnVuY3Rpb24gSGwoZSx0KXtjb25zdCBuPVVsKGUpLnNjcm9sbExlZnQ7cmV0dXJuIHQ/dC5sZWZ0K246Vm8oaHIoZSkpLmxlZnQrbn1mdW5jdGlvbiB3MChlLHQpe2NvbnN0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPW4ubGVmdCt0LnNjcm9sbExlZnQtSGwoZSxuKSxvPW4udG9wK3Quc2Nyb2xsVG9wO3JldHVybnt4OnIseTpvfX1mdW5jdGlvbiBKUihlKXtsZXR7ZWxlbWVudHM6dCxyZWN0Om4sb2Zmc2V0UGFyZW50OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBzPW89PT0iZml4ZWQiLGk9aHIociksYT10P1ZsKHQuZmxvYXRpbmcpOiExO2lmKHI9PT1pfHxhJiZzKXJldHVybiBuO2xldCBsPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LHU9ZnIoMSk7Y29uc3QgYz1mcigwKSxmPVVyKHIpO2lmKChmfHwhZiYmIXMpJiYoKEdvKHIpIT09ImJvZHkifHxVaShpKSkmJihsPVVsKHIpKSxmKSl7Y29uc3QgcD1WbyhyKTt1PWJzKHIpLGMueD1wLngrci5jbGllbnRMZWZ0LGMueT1wLnkrci5jbGllbnRUb3B9Y29uc3QgZD1pJiYhZiYmIXM/dzAoaSxsKTpmcigwKTtyZXR1cm57d2lkdGg6bi53aWR0aCp1LngsaGVpZ2h0Om4uaGVpZ2h0KnUueSx4Om4ueCp1LngtbC5zY3JvbGxMZWZ0KnUueCtjLngrZC54LHk6bi55KnUueS1sLnNjcm9sbFRvcCp1LnkrYy55K2QueX19ZnVuY3Rpb24gWFIoZSl7cmV0dXJuIEFycmF5LmZyb20oZS5nZXRDbGllbnRSZWN0cygpKX1mdW5jdGlvbiBaUihlKXtjb25zdCB0PWhyKGUpLG49VWwoZSkscj1lLm93bmVyRG9jdW1lbnQuYm9keSxvPVF0KHQuc2Nyb2xsV2lkdGgsdC5jbGllbnRXaWR0aCxyLnNjcm9sbFdpZHRoLHIuY2xpZW50V2lkdGgpLHM9UXQodC5zY3JvbGxIZWlnaHQsdC5jbGllbnRIZWlnaHQsci5zY3JvbGxIZWlnaHQsci5jbGllbnRIZWlnaHQpO2xldCBpPS1uLnNjcm9sbExlZnQrSGwoZSk7Y29uc3QgYT0tbi5zY3JvbGxUb3A7cmV0dXJuIEpuKHIpLmRpcmVjdGlvbj09PSJydGwiJiYoaSs9UXQodC5jbGllbnRXaWR0aCxyLmNsaWVudFdpZHRoKS1vKSx7d2lkdGg6byxoZWlnaHQ6cyx4OmkseTphfX1jb25zdCBabT0yNTtmdW5jdGlvbiBlMihlLHQpe2NvbnN0IG49U24oZSkscj1ocihlKSxvPW4udmlzdWFsVmlld3BvcnQ7bGV0IHM9ci5jbGllbnRXaWR0aCxpPXIuY2xpZW50SGVpZ2h0LGE9MCxsPTA7aWYobyl7cz1vLndpZHRoLGk9by5oZWlnaHQ7Y29uc3QgYz1oZCgpOyghY3x8YyYmdD09PSJmaXhlZCIpJiYoYT1vLm9mZnNldExlZnQsbD1vLm9mZnNldFRvcCl9Y29uc3QgdT1IbChyKTtpZih1PD0wKXtjb25zdCBjPXIub3duZXJEb2N1bWVudCxmPWMuYm9keSxkPWdldENvbXB1dGVkU3R5bGUoZikscD1jLmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCImJnBhcnNlRmxvYXQoZC5tYXJnaW5MZWZ0KStwYXJzZUZsb2F0KGQubWFyZ2luUmlnaHQpfHwwLG09TWF0aC5hYnMoci5jbGllbnRXaWR0aC1mLmNsaWVudFdpZHRoLXApO208PVptJiYocy09bSl9ZWxzZSB1PD1abSYmKHMrPXUpO3JldHVybnt3aWR0aDpzLGhlaWdodDppLHg6YSx5Omx9fWZ1bmN0aW9uIHQyKGUsdCl7Y29uc3Qgbj1WbyhlLCEwLHQ9PT0iZml4ZWQiKSxyPW4udG9wK2UuY2xpZW50VG9wLG89bi5sZWZ0K2UuY2xpZW50TGVmdCxzPVVyKGUpP2JzKGUpOmZyKDEpLGk9ZS5jbGllbnRXaWR0aCpzLngsYT1lLmNsaWVudEhlaWdodCpzLnksbD1vKnMueCx1PXIqcy55O3JldHVybnt3aWR0aDppLGhlaWdodDphLHg6bCx5OnV9fWZ1bmN0aW9uIGVoKGUsdCxuKXtsZXQgcjtpZih0PT09InZpZXdwb3J0IilyPWUyKGUsbik7ZWxzZSBpZih0PT09ImRvY3VtZW50IilyPVpSKGhyKGUpKTtlbHNlIGlmKFluKHQpKXI9dDIodCxuKTtlbHNle2NvbnN0IG89YjAoZSk7cj17eDp0Lngtby54LHk6dC55LW8ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19cmV0dXJuIEFzKHIpfWZ1bmN0aW9uIF8wKGUsdCl7Y29uc3Qgbj1sbyhlKTtyZXR1cm4gbj09PXR8fCFZbihuKXx8T3Mobik/ITE6Sm4obikucG9zaXRpb249PT0iZml4ZWQifHxfMChuLHQpfWZ1bmN0aW9uIG4yKGUsdCl7Y29uc3Qgbj10LmdldChlKTtpZihuKXJldHVybiBuO2xldCByPU9pKGUsW10sITEpLmZpbHRlcihhPT5ZbihhKSYmR28oYSkhPT0iYm9keSIpLG89bnVsbDtjb25zdCBzPUpuKGUpLnBvc2l0aW9uPT09ImZpeGVkIjtsZXQgaT1zP2xvKGUpOmU7Zm9yKDtZbihpKSYmIU9zKGkpOyl7Y29uc3QgYT1KbihpKSxsPW1kKGkpOyFsJiZhLnBvc2l0aW9uPT09ImZpeGVkIiYmKG89bnVsbCksKHM/IWwmJiFvOiFsJiZhLnBvc2l0aW9uPT09InN0YXRpYyImJiEhbyYmKG8ucG9zaXRpb249PT0iYWJzb2x1dGUifHxvLnBvc2l0aW9uPT09ImZpeGVkIil8fFVpKGkpJiYhbCYmXzAoZSxpKSk/cj1yLmZpbHRlcihjPT5jIT09aSk6bz1hLGk9bG8oaSl9cmV0dXJuIHQuc2V0KGUscikscn1mdW5jdGlvbiByMihlKXtsZXR7ZWxlbWVudDp0LGJvdW5kYXJ5Om4scm9vdEJvdW5kYXJ5OnIsc3RyYXRlZ3k6b309ZTtjb25zdCBpPVsuLi5uPT09ImNsaXBwaW5nQW5jZXN0b3JzIj9WbCh0KT9bXTpuMih0LHRoaXMuX2MpOltdLmNvbmNhdChuKSxyXSxhPWVoKHQsaVswXSxvKTtsZXQgbD1hLnRvcCx1PWEucmlnaHQsYz1hLmJvdHRvbSxmPWEubGVmdDtmb3IobGV0IGQ9MTtkPGkubGVuZ3RoO2QrKyl7Y29uc3QgcD1laCh0LGlbZF0sbyk7bD1RdChwLnRvcCxsKSx1PUtuKHAucmlnaHQsdSksYz1LbihwLmJvdHRvbSxjKSxmPVF0KHAubGVmdCxmKX1yZXR1cm57d2lkdGg6dS1mLGhlaWdodDpjLWwseDpmLHk6bH19ZnVuY3Rpb24gbzIoZSl7Y29uc3R7d2lkdGg6dCxoZWlnaHQ6bn09djAoZSk7cmV0dXJue3dpZHRoOnQsaGVpZ2h0Om59fWZ1bmN0aW9uIHMyKGUsdCxuKXtjb25zdCByPVVyKHQpLG89aHIodCkscz1uPT09ImZpeGVkIixpPVZvKGUsITAscyx0KTtsZXQgYT17c2Nyb2xsTGVmdDowLHNjcm9sbFRvcDowfTtjb25zdCBsPWZyKDApO2Z1bmN0aW9uIHUoKXtsLng9SGwobyl9aWYocnx8IXImJiFzKWlmKChHbyh0KSE9PSJib2R5Inx8VWkobykpJiYoYT1VbCh0KSkscil7Y29uc3QgcD1Wbyh0LCEwLHMsdCk7bC54PXAueCt0LmNsaWVudExlZnQsbC55PXAueSt0LmNsaWVudFRvcH1lbHNlIG8mJnUoKTtzJiYhciYmbyYmdSgpO2NvbnN0IGM9byYmIXImJiFzP3cwKG8sYSk6ZnIoMCksZj1pLmxlZnQrYS5zY3JvbGxMZWZ0LWwueC1jLngsZD1pLnRvcCthLnNjcm9sbFRvcC1sLnktYy55O3JldHVybnt4OmYseTpkLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX1mdW5jdGlvbiB6YyhlKXtyZXR1cm4gSm4oZSkucG9zaXRpb249PT0ic3RhdGljIn1mdW5jdGlvbiB0aChlLHQpe2lmKCFVcihlKXx8Sm4oZSkucG9zaXRpb249PT0iZml4ZWQiKXJldHVybiBudWxsO2lmKHQpcmV0dXJuIHQoZSk7bGV0IG49ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGhyKGUpPT09biYmKG49bi5vd25lckRvY3VtZW50LmJvZHkpLG59ZnVuY3Rpb24geDAoZSx0KXtjb25zdCBuPVNuKGUpO2lmKFZsKGUpKXJldHVybiBuO2lmKCFVcihlKSl7bGV0IG89bG8oZSk7Zm9yKDtvJiYhT3Mobyk7KXtpZihZbihvKSYmIXpjKG8pKXJldHVybiBvO289bG8obyl9cmV0dXJuIG59bGV0IHI9dGgoZSx0KTtmb3IoO3ImJkhSKHIpJiZ6YyhyKTspcj10aChyLHQpO3JldHVybiByJiZPcyhyKSYmemMocikmJiFtZChyKT9uOnJ8fEtSKGUpfHxufWNvbnN0IGkyPWFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fHgwLG49dGhpcy5nZXREaW1lbnNpb25zLHI9YXdhaXQgbihlLmZsb2F0aW5nKTtyZXR1cm57cmVmZXJlbmNlOnMyKGUucmVmZXJlbmNlLGF3YWl0IHQoZS5mbG9hdGluZyksZS5zdHJhdGVneSksZmxvYXRpbmc6e3g6MCx5OjAsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9fX07ZnVuY3Rpb24gYTIoZSl7cmV0dXJuIEpuKGUpLmRpcmVjdGlvbj09PSJydGwifWNvbnN0IGwyPXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpKUixnZXREb2N1bWVudEVsZW1lbnQ6aHIsZ2V0Q2xpcHBpbmdSZWN0OnIyLGdldE9mZnNldFBhcmVudDp4MCxnZXRFbGVtZW50UmVjdHM6aTIsZ2V0Q2xpZW50UmVjdHM6WFIsZ2V0RGltZW5zaW9uczpvMixnZXRTY2FsZTpicyxpc0VsZW1lbnQ6WW4saXNSVEw6YTJ9O2Z1bmN0aW9uIFMwKGUsdCl7cmV0dXJuIGUueD09PXQueCYmZS55PT09dC55JiZlLndpZHRoPT09dC53aWR0aCYmZS5oZWlnaHQ9PT10LmhlaWdodH1mdW5jdGlvbiBjMihlLHQpe2xldCBuPW51bGwscjtjb25zdCBvPWhyKGUpO2Z1bmN0aW9uIHMoKXt2YXIgYTtjbGVhclRpbWVvdXQociksKGE9bik9PW51bGx8fGEuZGlzY29ubmVjdCgpLG49bnVsbH1mdW5jdGlvbiBpKGEsbCl7YT09PXZvaWQgMCYmKGE9ITEpLGw9PT12b2lkIDAmJihsPTEpLHMoKTtjb25zdCB1PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse2xlZnQ6Yyx0b3A6Zix3aWR0aDpkLGhlaWdodDpwfT11O2lmKGF8fHQoKSwhZHx8IXApcmV0dXJuO2NvbnN0IG09Z2EoZikseT1nYShvLmNsaWVudFdpZHRoLShjK2QpKSxfPWdhKG8uY2xpZW50SGVpZ2h0LShmK3ApKSx3PWdhKGMpLGg9e3Jvb3RNYXJnaW46LW0rInB4ICIrLXkrInB4ICIrLV8rInB4ICIrLXcrInB4Iix0aHJlc2hvbGQ6UXQoMCxLbigxLGwpKXx8MX07bGV0IGI9ITA7ZnVuY3Rpb24geChTKXtjb25zdCBrPVNbMF0uaW50ZXJzZWN0aW9uUmF0aW87aWYoayE9PWwpe2lmKCFiKXJldHVybiBpKCk7az9pKCExLGspOnI9c2V0VGltZW91dCgoKT0+e2koITEsMWUtNyl9LDFlMyl9az09PTEmJiFTMCh1LGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpJiZpKCksYj0hMX10cnl7bj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoeCx7Li4uaCxyb290Om8ub3duZXJEb2N1bWVudH0pfWNhdGNoe249bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHgsaCl9bi5vYnNlcnZlKGUpfXJldHVybiBpKCEwKSxzfWZ1bmN0aW9uIHUyKGUsdCxuLHIpe3I9PT12b2lkIDAmJihyPXt9KTtjb25zdHthbmNlc3RvclNjcm9sbDpvPSEwLGFuY2VzdG9yUmVzaXplOnM9ITAsZWxlbWVudFJlc2l6ZTppPXR5cGVvZiBSZXNpemVPYnNlcnZlcj09ImZ1bmN0aW9uIixsYXlvdXRTaGlmdDphPXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcj09ImZ1bmN0aW9uIixhbmltYXRpb25GcmFtZTpsPSExfT1yLHU9Z2QoZSksYz1vfHxzP1suLi51P09pKHUpOltdLC4uLnQ/T2kodCk6W11dOltdO2MuZm9yRWFjaCh3PT57byYmdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLG4se3Bhc3NpdmU6ITB9KSxzJiZ3LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KTtjb25zdCBmPXUmJmE/YzIodSxuKTpudWxsO2xldCBkPS0xLHA9bnVsbDtpJiYocD1uZXcgUmVzaXplT2JzZXJ2ZXIodz0+e2xldFt2XT13O3YmJnYudGFyZ2V0PT09dSYmcCYmdCYmKHAudW5vYnNlcnZlKHQpLGNhbmNlbEFuaW1hdGlvbkZyYW1lKGQpLGQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIGg7KGg9cCk9PW51bGx8fGgub2JzZXJ2ZSh0KX0pKSxuKCl9KSx1JiYhbCYmcC5vYnNlcnZlKHUpLHQmJnAub2JzZXJ2ZSh0KSk7bGV0IG0seT1sP1ZvKGUpOm51bGw7bCYmXygpO2Z1bmN0aW9uIF8oKXtjb25zdCB3PVZvKGUpO3kmJiFTMCh5LHcpJiZuKCkseT13LG09cmVxdWVzdEFuaW1hdGlvbkZyYW1lKF8pfXJldHVybiBuKCksKCk9Pnt2YXIgdztjLmZvckVhY2godj0+e28mJnYucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixuKSxzJiZ2LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KSxmPy4oKSwodz1wKT09bnVsbHx8dy5kaXNjb25uZWN0KCkscD1udWxsLGwmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKG0pfX1jb25zdCBmMj16UiwkcT1MUixkMj1qUixuaD0kUixwMj1VUixtMj1NUixoMj1OUixNcT1xUixnMj1WUix5Mj0oZSx0LG4pPT57Y29uc3Qgcj1uZXcgTWFwLG89e3BsYXRmb3JtOmwyLC4uLm59LHM9ey4uLm8ucGxhdGZvcm0sX2M6cn07cmV0dXJuIFJSKGUsdCx7Li4ubyxwbGF0Zm9ybTpzfSl9O2Z1bmN0aW9uIHYyKGUpe3JldHVybiBlIT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCImJiIkZWwiaW4gZX1mdW5jdGlvbiBWdShlKXtpZih2MihlKSl7Y29uc3QgdD1lLiRlbDtyZXR1cm4gcGQodCkmJkdvKHQpPT09IiNjb21tZW50Ij9udWxsOnR9cmV0dXJuIGV9ZnVuY3Rpb24gYXMoZSl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTpnKGUpfWZ1bmN0aW9uIGIyKGUpe3JldHVybntuYW1lOiJhcnJvdyIsb3B0aW9uczplLGZuKHQpe2NvbnN0IG49VnUoYXMoZS5lbGVtZW50KSk7cmV0dXJuIG49PW51bGw/e306aDIoe2VsZW1lbnQ6bixwYWRkaW5nOmUucGFkZGluZ30pLmZuKHQpfX19ZnVuY3Rpb24gazAoZSl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+InUiPzE6KGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5kZXZpY2VQaXhlbFJhdGlvfHwxfWZ1bmN0aW9uIHJoKGUsdCl7Y29uc3Qgbj1rMChlKTtyZXR1cm4gTWF0aC5yb3VuZCh0Km4pL259ZnVuY3Rpb24gdzIoZSx0LG4pe249PT12b2lkIDAmJihuPXt9KTtjb25zdCByPW4ud2hpbGVFbGVtZW50c01vdW50ZWQsbz1OKCgpPT57dmFyIGs7cmV0dXJuKGs9YXMobi5vcGVuKSkhPW51bGw/azohMH0pLHM9TigoKT0+YXMobi5taWRkbGV3YXJlKSksaT1OKCgpPT57dmFyIGs7cmV0dXJuKGs9YXMobi5wbGFjZW1lbnQpKSE9bnVsbD9rOiJib3R0b20ifSksYT1OKCgpPT57dmFyIGs7cmV0dXJuKGs9YXMobi5zdHJhdGVneSkpIT1udWxsP2s6ImFic29sdXRlIn0pLGw9TigoKT0+e3ZhciBrO3JldHVybihrPWFzKG4udHJhbnNmb3JtKSkhPW51bGw/azohMH0pLHU9TigoKT0+VnUoZS52YWx1ZSkpLGM9TigoKT0+VnUodC52YWx1ZSkpLGY9RygwKSxkPUcoMCkscD1HKGEudmFsdWUpLG09RyhpLnZhbHVlKSx5PU9lKHt9KSxfPUcoITEpLHc9TigoKT0+e2NvbnN0IGs9e3Bvc2l0aW9uOnAudmFsdWUsbGVmdDoiMCIsdG9wOiIwIn07aWYoIWMudmFsdWUpcmV0dXJuIGs7Y29uc3QgVD1yaChjLnZhbHVlLGYudmFsdWUpLEM9cmgoYy52YWx1ZSxkLnZhbHVlKTtyZXR1cm4gbC52YWx1ZT97Li4uayx0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK1QrInB4LCAiK0MrInB4KSIsLi4uazAoYy52YWx1ZSk+PTEuNSYme3dpbGxDaGFuZ2U6InRyYW5zZm9ybSJ9fTp7cG9zaXRpb246cC52YWx1ZSxsZWZ0OlQrInB4Iix0b3A6QysicHgifX0pO2xldCB2O2Z1bmN0aW9uIGgoKXtpZih1LnZhbHVlPT1udWxsfHxjLnZhbHVlPT1udWxsKXJldHVybjtjb25zdCBrPW8udmFsdWU7eTIodS52YWx1ZSxjLnZhbHVlLHttaWRkbGV3YXJlOnMudmFsdWUscGxhY2VtZW50OmkudmFsdWUsc3RyYXRlZ3k6YS52YWx1ZX0pLnRoZW4oVD0+e2YudmFsdWU9VC54LGQudmFsdWU9VC55LHAudmFsdWU9VC5zdHJhdGVneSxtLnZhbHVlPVQucGxhY2VtZW50LHkudmFsdWU9VC5taWRkbGV3YXJlRGF0YSxfLnZhbHVlPWshPT0hMX0pfWZ1bmN0aW9uIGIoKXt0eXBlb2Ygdj09ImZ1bmN0aW9uIiYmKHYoKSx2PXZvaWQgMCl9ZnVuY3Rpb24geCgpe2lmKGIoKSxyPT09dm9pZCAwKXtoKCk7cmV0dXJufWlmKHUudmFsdWUhPW51bGwmJmMudmFsdWUhPW51bGwpe3Y9cih1LnZhbHVlLGMudmFsdWUsaCk7cmV0dXJufX1mdW5jdGlvbiBTKCl7by52YWx1ZXx8KF8udmFsdWU9ITEpfXJldHVybiBQZShbcyxpLGEsb10saCx7Zmx1c2g6InN5bmMifSksUGUoW3UsY10seCx7Zmx1c2g6InN5bmMifSksUGUobyxTLHtmbHVzaDoic3luYyJ9KSxxcigpJiZScyhiKSx7eDpUcihmKSx5OlRyKGQpLHN0cmF0ZWd5OlRyKHApLHBsYWNlbWVudDpUcihtKSxtaWRkbGV3YXJlRGF0YTpUcih5KSxpc1Bvc2l0aW9uZWQ6VHIoXyksZmxvYXRpbmdTdHlsZXM6dyx1cGRhdGU6aH19Y29uc3QgXzI9e3NpZGU6ImJvdHRvbSIsc2lkZU9mZnNldDowLHNpZGVGbGlwOiEwLGFsaWduOiJjZW50ZXIiLGFsaWduT2Zmc2V0OjAsYWxpZ25GbGlwOiEwLGFycm93UGFkZGluZzowLGhpZGVTaGlmdGVkQXJyb3c6ITAsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OigpPT5bXSxjb2xsaXNpb25QYWRkaW5nOjAsc3RpY2t5OiJwYXJ0aWFsIixoaWRlV2hlbkRldGFjaGVkOiExLHBvc2l0aW9uU3RyYXRlZ3k6ImZpeGVkIix1cGRhdGVQb3NpdGlvblN0cmF0ZWd5OiJvcHRpbWl6ZWQiLHByaW9yaXRpemVQb3NpdGlvbjohMX0sW3gyLFMyXT1nbigiUG9wcGVyQ29udGVudCIpO3ZhciBrMj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiUG9wcGVyQ29udGVudCIscHJvcHM6c3goe3NpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uXzJ9KSxlbWl0czpbInBsYWNlZCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1kMCgpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6aX09VWUoKSxhPUcoKSxsPUcoKSx7d2lkdGg6dSxoZWlnaHQ6Y309a0kobCksZj1OKCgpPT5uLnNpZGUrKG4uYWxpZ24hPT0iY2VudGVyIj9gLSR7bi5hbGlnbn1gOiIiKSksZD1OKCgpPT50eXBlb2Ygbi5jb2xsaXNpb25QYWRkaW5nPT0ibnVtYmVyIj9uLmNvbGxpc2lvblBhZGRpbmc6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLm4uY29sbGlzaW9uUGFkZGluZ30pLHA9TigoKT0+QXJyYXkuaXNBcnJheShuLmNvbGxpc2lvbkJvdW5kYXJ5KT9uLmNvbGxpc2lvbkJvdW5kYXJ5OltuLmNvbGxpc2lvbkJvdW5kYXJ5XSksbT1OKCgpPT4oe3BhZGRpbmc6ZC52YWx1ZSxib3VuZGFyeTpwLnZhbHVlLmZpbHRlcihfUiksYWx0Qm91bmRhcnk6cC52YWx1ZS5sZW5ndGg+MH0pKSx5PU4oKCk9Pih7bWFpbkF4aXM6bi5zaWRlRmxpcCxjcm9zc0F4aXM6bi5hbGlnbkZsaXB9KSksXz1UUCgoKT0+W2YyKHttYWluQXhpczpuLnNpZGVPZmZzZXQrYy52YWx1ZSxhbGlnbm1lbnRBeGlzOm4uYWxpZ25PZmZzZXR9KSxuLnByaW9yaXRpemVQb3NpdGlvbiYmbi5hdm9pZENvbGxpc2lvbnMmJm5oKHsuLi5tLnZhbHVlLC4uLnkudmFsdWV9KSxuLmF2b2lkQ29sbGlzaW9ucyYmZDIoe21haW5BeGlzOiEwLGNyb3NzQXhpczohIW4ucHJpb3JpdGl6ZVBvc2l0aW9uLGxpbWl0ZXI6bi5zdGlja3k9PT0icGFydGlhbCI/ZzIoKTp2b2lkIDAsLi4ubS52YWx1ZX0pLCFuLnByaW9yaXRpemVQb3NpdGlvbiYmbi5hdm9pZENvbGxpc2lvbnMmJm5oKHsuLi5tLnZhbHVlLC4uLnkudmFsdWV9KSxwMih7Li4ubS52YWx1ZSxhcHBseTooe2VsZW1lbnRzOkQscmVjdHM6VyxhdmFpbGFibGVXaWR0aDpMLGF2YWlsYWJsZUhlaWdodDpqfSk9Pntjb25zdHt3aWR0aDpJLGhlaWdodDpWfT1XLnJlZmVyZW5jZSxCPUQuZmxvYXRpbmcuc3R5bGU7Qi5zZXRQcm9wZXJ0eSgiLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGgiLGAke0x9cHhgKSxCLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQiLGAke2p9cHhgKSxCLnNldFByb3BlcnR5KCItLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aCIsYCR7SX1weGApLEIuc2V0UHJvcGVydHkoIi0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodCIsYCR7Vn1weGApfX0pLGwudmFsdWUmJmIyKHtlbGVtZW50OmwudmFsdWUscGFkZGluZzpuLmFycm93UGFkZGluZ30pLHhSKHthcnJvd1dpZHRoOnUudmFsdWUsYXJyb3dIZWlnaHQ6Yy52YWx1ZX0pLG4uaGlkZVdoZW5EZXRhY2hlZCYmbTIoe3N0cmF0ZWd5OiJyZWZlcmVuY2VIaWRkZW4iLC4uLm0udmFsdWV9KV0pLHc9TigoKT0+bi5yZWZlcmVuY2U/P28uYW5jaG9yLnZhbHVlKSx7ZmxvYXRpbmdTdHlsZXM6dixwbGFjZW1lbnQ6aCxpc1Bvc2l0aW9uZWQ6YixtaWRkbGV3YXJlRGF0YTp4fT13Mih3LGEse3N0cmF0ZWd5Om4ucG9zaXRpb25TdHJhdGVneSxwbGFjZW1lbnQ6Zix3aGlsZUVsZW1lbnRzTW91bnRlZDooLi4uRCk9PnUyKC4uLkQse2xheW91dFNoaWZ0OiFuLmRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0LGFuaW1hdGlvbkZyYW1lOm4udXBkYXRlUG9zaXRpb25TdHJhdGVneT09PSJhbHdheXMifSksbWlkZGxld2FyZTpffSksUz1OKCgpPT5GdShoLnZhbHVlKVswXSksaz1OKCgpPT5GdShoLnZhbHVlKVsxXSk7Q2coKCk9PntiLnZhbHVlJiZyKCJwbGFjZWQiKX0pO2NvbnN0IFQ9TigoKT0+e2NvbnN0IEQ9eC52YWx1ZS5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MDtyZXR1cm4gbi5oaWRlU2hpZnRlZEFycm93JiZEfSksQz1HKCIiKTtvbigoKT0+e2kudmFsdWUmJihDLnZhbHVlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGkudmFsdWUpLnpJbmRleCl9KTtjb25zdCBQPU4oKCk9PngudmFsdWUuYXJyb3c/Lng/PzApLEY9TigoKT0+eC52YWx1ZS5hcnJvdz8ueT8/MCk7cmV0dXJuIFMyKHtwbGFjZWRTaWRlOlMsb25BcnJvd0NoYW5nZTpEPT5sLnZhbHVlPUQsYXJyb3dYOlAsYXJyb3dZOkYsc2hvdWxkSGlkZUFycm93OlR9KSwoRCxXKT0+KFIoKSxfZSgiZGl2Iix7cmVmX2tleToiZmxvYXRpbmdSZWYiLHJlZjphLCJkYXRhLXJla2EtcG9wcGVyLWNvbnRlbnQtd3JhcHBlciI6IiIsc3R5bGU6Um4oey4uLmcodiksdHJhbnNmb3JtOmcoYik/Zyh2KS50cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAtMjAwJSkiLG1pbldpZHRoOiJtYXgtY29udGVudCIsekluZGV4OkMudmFsdWUsIi0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiI6W2coeCkudHJhbnNmb3JtT3JpZ2luPy54LGcoeCkudHJhbnNmb3JtT3JpZ2luPy55XS5qb2luKCIgIiksLi4uZyh4KS5oaWRlPy5yZWZlcmVuY2VIaWRkZW4mJnt2aXNpYmlsaXR5OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUifX0pfSxbcmUoZyhNZSksZmUoe3JlZjpnKHMpfSxELiRhdHRycyx7ImFzLWNoaWxkIjpuLmFzQ2hpbGQsYXM6RC5hcywiZGF0YS1zaWRlIjpTLnZhbHVlLCJkYXRhLWFsaWduIjprLnZhbHVlLHN0eWxlOnthbmltYXRpb246ZyhiKT92b2lkIDA6Im5vbmUifX0pLHtkZWZhdWx0Ok0oKCk9PltVKEQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXMtY2hpbGQiLCJhcyIsImRhdGEtc2lkZSIsImRhdGEtYWxpZ24iLCJzdHlsZSJdKV0sNCkpfX0pLEUyPWsyO2NvbnN0IFQyPXt0b3A6ImJvdHRvbSIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCJ9O3ZhciBDMj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiUG9wcGVyQXJyb3ciLHByb3BzOnt3aWR0aDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhlaWdodDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHJvdW5kZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InN2ZyJ9fSxzZXR1cChlKXtjb25zdHtmb3J3YXJkUmVmOnR9PVVlKCksbj14MigpLHI9TigoKT0+VDJbbi5wbGFjZWRTaWRlLnZhbHVlXSk7cmV0dXJuKG8scyk9PihSKCksX2UoInNwYW4iLHtyZWY6aT0+e2cobikub25BcnJvd0NoYW5nZShpPz92b2lkIDApfSxzdHlsZTpSbih7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OmcobikuYXJyb3dYPy52YWx1ZT9gJHtnKG4pLmFycm93WD8udmFsdWV9cHhgOnZvaWQgMCx0b3A6ZyhuKS5hcnJvd1k/LnZhbHVlP2Ake2cobikuYXJyb3dZPy52YWx1ZX1weGA6dm9pZCAwLFtyLnZhbHVlXTowLHRyYW5zZm9ybU9yaWdpbjp7dG9wOiIiLHJpZ2h0OiIwIDAiLGJvdHRvbToiY2VudGVyIDAiLGxlZnQ6IjEwMCUgMCJ9W2cobikucGxhY2VkU2lkZS52YWx1ZV0sdHJhbnNmb3JtOnt0b3A6InRyYW5zbGF0ZVkoMTAwJSkiLHJpZ2h0OiJ0cmFuc2xhdGVZKDUwJSkgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVYKC01MCUpIixib3R0b206InJvdGF0ZSgxODBkZWcpIixsZWZ0OiJ0cmFuc2xhdGVZKDUwJSkgcm90YXRlKC05MGRlZykgdHJhbnNsYXRlWCg1MCUpIn1bZyhuKS5wbGFjZWRTaWRlLnZhbHVlXSx2aXNpYmlsaXR5Omcobikuc2hvdWxkSGlkZUFycm93LnZhbHVlPyJoaWRkZW4iOnZvaWQgMH0pfSxbcmUod1IsZmUoby4kYXR0cnMse3JlZjpnKHQpLHN0eWxlOntkaXNwbGF5OiJibG9jayJ9LGFzOm8uYXMsImFzLWNoaWxkIjpvLmFzQ2hpbGQscm91bmRlZDpvLnJvdW5kZWQsd2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9KSx7ZGVmYXVsdDpNKCgpPT5bVShvLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImFzIiwiYXMtY2hpbGQiLCJyb3VuZGVkIiwid2lkdGgiLCJoZWlnaHQiXSldLDQpKX19KSxBMj1DMjtmdW5jdGlvbiBPMihlKXtjb25zdCB0PWlkKHtub25jZTpHKCl9KTtyZXR1cm4gTigoKT0+ZT8udmFsdWV8fHQubm9uY2U/LnZhbHVlKX12YXIgUDI9c2Uoe19fbmFtZToiTGFiZWwiLHByb3BzOntmb3I6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoibGFiZWwifX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybiBVZSgpLChuLHIpPT4oUigpLCQoZyhNZSksZmUodCx7b25Nb3VzZWRvd246clswXXx8KHJbMF09bz0+eyFvLmRlZmF1bHRQcmV2ZW50ZWQmJm8uZGV0YWlsPjEmJm8ucHJldmVudERlZmF1bHQoKX0pfSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxJMj1QMjtjb25zdCBVdT0xMDAsW1IyLE4yXT1nbigiUHJvZ3Jlc3NSb290Iiksbmw9ZT0+dHlwZW9mIGU9PSJudW1iZXIiO2Z1bmN0aW9uIEQyKGUsdCl7cmV0dXJuIEFpKGUpfHxubChlKSYmIU51bWJlci5pc05hTihlKSYmZTw9dCYmZT49MD9lOm51bGx9ZnVuY3Rpb24gTDIoZSl7cmV0dXJuIG5sKGUpJiYhTnVtYmVyLmlzTmFOKGUpJiZlPjA/ZTpVdX12YXIgJDI9c2Uoe19fbmFtZToiUHJvZ3Jlc3NSb290Iixwcm9wczp7bW9kZWxWYWx1ZTp7dHlwZTpbTnVtYmVyLG51bGxdLHJlcXVpcmVkOiExfSxtYXg6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6VXV9LGdldFZhbHVlTGFiZWw6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITEsZGVmYXVsdDooZSx0KT0+bmwoZSk/YCR7TWF0aC5yb3VuZChlL3QqVXUpfSVgOnZvaWQgMH0sZ2V0VmFsdWVUZXh0Ont0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwidXBkYXRlOm1heCJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQ7VWUoKTtjb25zdCBvPWFvKG4sIm1vZGVsVmFsdWUiLHIse3Bhc3NpdmU6bi5tb2RlbFZhbHVlPT09dm9pZCAwfSkscz1hbyhuLCJtYXgiLHIse3Bhc3NpdmU6bi5tYXg9PT12b2lkIDB9KTtQZSgoKT0+by52YWx1ZSxhc3luYyBhPT57Y29uc3QgbD1EMihhLG4ubWF4KTtsIT09YSYmKGF3YWl0IGl0KCksby52YWx1ZT1sKX0se2ltbWVkaWF0ZTohMH0pLFBlKCgpPT5uLm1heCxhPT57Y29uc3QgbD1MMihuLm1heCk7bCE9PWEmJihzLnZhbHVlPWwpfSx7aW1tZWRpYXRlOiEwfSk7Y29uc3QgaT1OKCgpPT5BaShvLnZhbHVlKT8iaW5kZXRlcm1pbmF0ZSI6by52YWx1ZT09PXMudmFsdWU/ImNvbXBsZXRlIjoibG9hZGluZyIpO3JldHVybiBOMih7bW9kZWxWYWx1ZTpvLG1heDpzLHByb2dyZXNzU3RhdGU6aX0pLChhLGwpPT4oUigpLCQoZyhNZSkseyJhcy1jaGlsZCI6YS5hc0NoaWxkLGFzOmEuYXMsImFyaWEtdmFsdWVtYXgiOmcocyksImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFsdWVub3ciOm5sKGcobykpP2cobyk6dm9pZCAwLCJhcmlhLXZhbHVldGV4dCI6YS5nZXRWYWx1ZVRleHQ/LihnKG8pLGcocykpLCJhcmlhLWxhYmVsIjphLmdldFZhbHVlTGFiZWwoZyhvKSxnKHMpKSxyb2xlOiJwcm9ncmVzc2JhciIsImRhdGEtc3RhdGUiOmkudmFsdWUsImRhdGEtdmFsdWUiOmcobyk/P3ZvaWQgMCwiZGF0YS1tYXgiOmcocyl9LHtkZWZhdWx0Ok0oKCk9PltVKGEuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTpnKG8pfSldKSxfOjN9LDgsWyJhcy1jaGlsZCIsImFzIiwiYXJpYS12YWx1ZW1heCIsImFyaWEtdmFsdWVub3ciLCJhcmlhLXZhbHVldGV4dCIsImFyaWEtbGFiZWwiLCJkYXRhLXN0YXRlIiwiZGF0YS12YWx1ZSIsImRhdGEtbWF4Il0pKX19KSxNMj0kMixCMj1zZSh7X19uYW1lOiJQcm9ncmVzc0luZGljYXRvciIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPVIyKCk7cmV0dXJuIFVlKCksKHIsbyk9PihSKCksJChnKE1lKSxmZSh0LHsiZGF0YS1zdGF0ZSI6ZyhuKS5wcm9ncmVzc1N0YXRlLnZhbHVlLCJkYXRhLXZhbHVlIjpnKG4pLm1vZGVsVmFsdWU/LnZhbHVlPz92b2lkIDAsImRhdGEtbWF4IjpnKG4pLm1heC52YWx1ZX0pLHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiZGF0YS1zdGF0ZSIsImRhdGEtdmFsdWUiLCJkYXRhLW1heCJdKSl9fSkscTI9QjI7Y29uc3QgRjI9WyIgIiwiRW50ZXIiLCJBcnJvd1VwIiwiQXJyb3dEb3duIl0sejI9WyIgIiwiRW50ZXIiXSxNbj0xMDtmdW5jdGlvbiBQaShlLHQsbil7cmV0dXJuIGU9PT12b2lkIDA/ITE6QXJyYXkuaXNBcnJheShlKT9lLnNvbWUocj0+SHUocix0LG4pKTpIdShlLHQsbil9ZnVuY3Rpb24gSHUoZSx0LG4pe3JldHVybiBlPT09dm9pZCAwfHx0PT09dm9pZCAwPyExOnR5cGVvZiBlPT0ic3RyaW5nIj9lPT09dDp0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKGUsdCk6dHlwZW9mIG49PSJzdHJpbmciP2U/LltuXT09PXQ/LltuXTpJbChlLHQpfWZ1bmN0aW9uIGoyKGUpe3JldHVybiBlPT1udWxsfHxlPT09IiJ8fEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPT09MH1jb25zdCBWMj17a2V5OjAsdmFsdWU6IiJ9LFtobyxFMF09Z24oIlNlbGVjdFJvb3QiKTt2YXIgVTI9c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlNlbGVjdFJvb3QiLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQse3JlcXVpcmVkOm8sZGlzYWJsZWQ6cyxtdWx0aXBsZTppLGRpcjphfT1FbihuKSxsPWFvKG4sIm1vZGVsVmFsdWUiLHIse2RlZmF1bHRWYWx1ZTpuLmRlZmF1bHRWYWx1ZT8/KGkudmFsdWU/W106dm9pZCAwKSxwYXNzaXZlOm4ubW9kZWxWYWx1ZT09PXZvaWQgMCxkZWVwOiEwfSksdT1hbyhuLCJvcGVuIixyLHtkZWZhdWx0VmFsdWU6bi5kZWZhdWx0T3BlbixwYXNzaXZlOm4ub3Blbj09PXZvaWQgMH0pLGM9RygpLGY9RygpLGQ9Ryh7eDowLHk6MH0pLHA9TigoKT0+aS52YWx1ZSYmQXJyYXkuaXNBcnJheShsLnZhbHVlKT9sLnZhbHVlPy5sZW5ndGg9PT0wOkFpKGwudmFsdWUpKTttbyh7aXNQcm92aWRlcjohMH0pO2NvbnN0IG09eUkoYSkseT1iSShjKSxfPUcobmV3IFNldCksdz1OKCgpPT5BcnJheS5mcm9tKF8udmFsdWUpLm1hcChiPT5iLnZhbHVlKS5qb2luKCI7IikpO2Z1bmN0aW9uIHYoYil7aWYoaS52YWx1ZSl7Y29uc3QgeD1BcnJheS5pc0FycmF5KGwudmFsdWUpP1suLi5sLnZhbHVlXTpbXSxTPXguZmluZEluZGV4KGs9Pkh1KGssYixuLmJ5KSk7Uz09PS0xP3gucHVzaChiKTp4LnNwbGljZShTLDEpLGwudmFsdWU9Wy4uLnhdfWVsc2UgbC52YWx1ZT1ifWZ1bmN0aW9uIGgoYil7cmV0dXJuIEFycmF5LmZyb20oXy52YWx1ZSkuZmluZCh4PT5QaShiLHgudmFsdWUsbi5ieSkpfXJldHVybiBFMCh7dHJpZ2dlckVsZW1lbnQ6YyxvblRyaWdnZXJDaGFuZ2U6Yj0+e2MudmFsdWU9Yn0sdmFsdWVFbGVtZW50OmYsb25WYWx1ZUVsZW1lbnRDaGFuZ2U6Yj0+e2YudmFsdWU9Yn0sY29udGVudElkOiIiLG1vZGVsVmFsdWU6bCxvblZhbHVlQ2hhbmdlOnYsYnk6bi5ieSxvcGVuOnUsbXVsdGlwbGU6aSxyZXF1aXJlZDpvLG9uT3BlbkNoYW5nZTpiPT57dS52YWx1ZT1ifSxkaXI6bSx0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWY6ZCxkaXNhYmxlZDpzLGlzRW1wdHlNb2RlbFZhbHVlOnAsb3B0aW9uc1NldDpfLG9uT3B0aW9uQWRkOmI9Pntjb25zdCB4PWgoYi52YWx1ZSk7eCYmXy52YWx1ZS5kZWxldGUoeCksXy52YWx1ZS5hZGQoYil9LG9uT3B0aW9uUmVtb3ZlOmI9Pntjb25zdCB4PWgoYi52YWx1ZSk7eCYmXy52YWx1ZS5kZWxldGUoeCl9fSksKGIseCk9PihSKCksJChnKG1SKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltVKGIuJHNsb3RzLCJkZWZhdWx0Iix7bW9kZWxWYWx1ZTpnKGwpLG9wZW46Zyh1KX0pLGcoeSkmJmIubmFtZT8oUigpLCQoRzIse2tleTp3LnZhbHVlLCJhcmlhLWhpZGRlbiI6InRydWUiLHRhYmluZGV4OiItMSIsbXVsdGlwbGU6ZyhpKSxyZXF1aXJlZDpnKG8pLG5hbWU6Yi5uYW1lLGF1dG9jb21wbGV0ZTpiLmF1dG9jb21wbGV0ZSxkaXNhYmxlZDpnKHMpLHZhbHVlOmcobCl9LHtkZWZhdWx0Ok0oKCk9PltnKEFpKShnKGwpKT8oUigpLF9lKCJvcHRpb24iLFYyKSk6ZGUoInYtaWYiLCEwKSwoUighMCksX2UoR2UsbnVsbCx1cihBcnJheS5mcm9tKF8udmFsdWUpLFM9PihSKCksX2UoIm9wdGlvbiIsZmUoe2tleTpTLnZhbHVlPz8iIn0se3JlZl9mb3I6ITB9LFMpLG51bGwsMTYpKSksMTI4KSldKSxfOjF9LDgsWyJtdWx0aXBsZSIsInJlcXVpcmVkIiwibmFtZSIsImF1dG9jb21wbGV0ZSIsImRpc2FibGVkIiwidmFsdWUiXSkpOmRlKCJ2LWlmIiwhMCldKSxfOjN9KSl9fSksSDI9VTIsVzI9c2Uoe19fbmFtZToiQnViYmxlU2VsZWN0Iixwcm9wczp7YXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcm06e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1HKCkscj1obygpO1BlKCgpPT50LnZhbHVlLChzLGkpPT57Y29uc3QgYT13aW5kb3cuSFRNTFNlbGVjdEVsZW1lbnQucHJvdG90eXBlLHU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLCJ2YWx1ZSIpLnNldDtpZihzIT09aSYmdSYmbi52YWx1ZSl7Y29uc3QgYz1uZXcgRXZlbnQoImNoYW5nZSIse2J1YmJsZXM6ITB9KTt1LmNhbGwobi52YWx1ZSxzKSxuLnZhbHVlLmRpc3BhdGNoRXZlbnQoYyl9fSk7ZnVuY3Rpb24gbyhzKXtyLm9uVmFsdWVDaGFuZ2Uocy50YXJnZXQudmFsdWUpfXJldHVybihzLGkpPT4oUigpLCQoZyhWaSkseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0Ok0oKCk9Plt3dCgic2VsZWN0IixmZSh7cmVmX2tleToic2VsZWN0RWxlbWVudCIscmVmOm59LHQse29uSW5wdXQ6b30pLFtVKHMuJHNsb3RzLCJkZWZhdWx0IildLDE2KV0pLF86M30pKX19KSxHMj1XMixLMj1zZSh7X19uYW1lOiJTZWxlY3RQb3BwZXJQb3NpdGlvbiIscHJvcHM6e3NpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3RhcnQifSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDpNbn0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBuPXBvKGUpO3JldHVybihyLG8pPT4oUigpLCQoZyhFMiksZmUoZyhuKSx7c3R5bGU6e2JveFNpemluZzoiYm9yZGVyLWJveCIsIi0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjoidmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCkiLCItLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodCI6InZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn19KSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFEyPUsyO2NvbnN0IFQwPXtvblZpZXdwb3J0Q2hhbmdlOigpPT57fSxpdGVtVGV4dFJlZkNhbGxiYWNrOigpPT57fSxpdGVtUmVmQ2FsbGJhY2s6KCk9Pnt9fSxbSGksQzBdPWduKCJTZWxlY3RDb250ZW50Iik7dmFyIFkyPXNlKHtfX25hbWU6IlNlbGVjdENvbnRlbnRJbXBsIixwcm9wczp7cG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6Iml0ZW0tYWxpZ25lZCJ9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJzdGFydCJ9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbImNsb3NlQXV0b0ZvY3VzIiwiZXNjYXBlS2V5RG93biIsInBvaW50ZXJEb3duT3V0c2lkZSJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz1obygpO3ZJKCksWGIobi5ib2R5TG9jayk7Y29uc3R7Q29sbGVjdGlvblNsb3Q6cyxnZXRJdGVtczppfT1tbygpLGE9RygpO3QwKGEpO2NvbnN0e3NlYXJjaDpsLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDp1fT1uMCgpLGM9RygpLGY9RygpLGQ9RygpLHA9RyghMSksbT1HKCExKSx5PUcoITEpO2Z1bmN0aW9uIF8oKXtmLnZhbHVlJiZhLnZhbHVlJiZWbShbZi52YWx1ZSxhLnZhbHVlXSl9UGUocCwoKT0+e18oKX0pO2NvbnN0e29uT3BlbkNoYW5nZTp3LHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjp2fT1vO29uKFM9PntpZighYS52YWx1ZSlyZXR1cm47bGV0IGs9e3g6MCx5OjB9O2NvbnN0IFQ9UD0+e2s9e3g6TWF0aC5hYnMoTWF0aC5yb3VuZChQLnBhZ2VYKS0odi52YWx1ZT8ueD8/MCkpLHk6TWF0aC5hYnMoTWF0aC5yb3VuZChQLnBhZ2VZKS0odi52YWx1ZT8ueT8/MCkpfX0sQz1QPT57UC5wb2ludGVyVHlwZSE9PSJ0b3VjaCImJihrLng8PTEwJiZrLnk8PTEwP1AucHJldmVudERlZmF1bHQoKTphLnZhbHVlPy5jb250YWlucyhQLnRhcmdldCl8fHcoITEpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixUKSx2LnZhbHVlPW51bGwpfTt2LnZhbHVlIT09bnVsbCYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixUKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEMse2NhcHR1cmU6ITAsb25jZTohMH0pKSxTKCgpPT57ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLFQpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsQyx7Y2FwdHVyZTohMH0pfSl9KTtmdW5jdGlvbiBoKFMpe2NvbnN0IGs9Uy5jdHJsS2V5fHxTLmFsdEtleXx8Uy5tZXRhS2V5O2lmKFMua2V5PT09IlRhYiImJlMucHJldmVudERlZmF1bHQoKSwhayYmUy5rZXkubGVuZ3RoPT09MSYmdShTLmtleSxpKCkpLFsiQXJyb3dVcCIsIkFycm93RG93biIsIkhvbWUiLCJFbmQiXS5pbmNsdWRlcyhTLmtleSkpe2xldCBDPVsuLi5pKCkubWFwKFA9PlAucmVmKV07aWYoWyJBcnJvd1VwIiwiRW5kIl0uaW5jbHVkZXMoUy5rZXkpJiYoQz1DLnNsaWNlKCkucmV2ZXJzZSgpKSxbIkFycm93VXAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyhTLmtleSkpe2NvbnN0IFA9Uy50YXJnZXQsRj1DLmluZGV4T2YoUCk7Qz1DLnNsaWNlKEYrMSl9c2V0VGltZW91dCgoKT0+Vm0oQykpLFMucHJldmVudERlZmF1bHQoKX19Y29uc3QgYj1OKCgpPT5uLnBvc2l0aW9uPT09InBvcHBlciI/bjp7fSkseD1wbyhiLnZhbHVlKTtyZXR1cm4gQzAoe2NvbnRlbnQ6YSx2aWV3cG9ydDpjLG9uVmlld3BvcnRDaGFuZ2U6Uz0+e2MudmFsdWU9U30saXRlbVJlZkNhbGxiYWNrOihTLGssVCk9Pntjb25zdCBDPSFtLnZhbHVlJiYhVCxQPVBpKG8ubW9kZWxWYWx1ZS52YWx1ZSxrLG8uYnkpO2lmKG8ubXVsdGlwbGUudmFsdWUpe2lmKHkudmFsdWUpcmV0dXJuOyhQfHxDKSYmKGYudmFsdWU9UyxQJiYoeS52YWx1ZT0hMCkpfWVsc2UoUHx8QykmJihmLnZhbHVlPVMpO0MmJihtLnZhbHVlPSEwKX0sc2VsZWN0ZWRJdGVtOmYsc2VsZWN0ZWRJdGVtVGV4dDpkLG9uSXRlbUxlYXZlOigpPT57YS52YWx1ZT8uZm9jdXMoKX0saXRlbVRleHRSZWZDYWxsYmFjazooUyxrLFQpPT57Y29uc3QgQz0hbS52YWx1ZSYmIVQ7KFBpKG8ubW9kZWxWYWx1ZS52YWx1ZSxrLG8uYnkpfHxDKSYmKGQudmFsdWU9Uyl9LGZvY3VzU2VsZWN0ZWRJdGVtOl8scG9zaXRpb246bi5wb3NpdGlvbixpc1Bvc2l0aW9uZWQ6cCxzZWFyY2hSZWY6bH0pLChTLGspPT4oUigpLCQoZyhzKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKGEwKSx7ImFzLWNoaWxkIjoiIixvbk1vdW50QXV0b0ZvY3VzOmtbNl18fChrWzZdPVJyKCgpPT57fSxbInByZXZlbnQiXSkpLG9uVW5tb3VudEF1dG9Gb2N1czprWzddfHwoa1s3XT1UPT57cigiY2xvc2VBdXRvRm9jdXMiLFQpLCFULmRlZmF1bHRQcmV2ZW50ZWQmJihnKG8pLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLFQucHJldmVudERlZmF1bHQoKSl9KX0se2RlZmF1bHQ6TSgoKT0+W3JlKGcoaTApLHsiYXMtY2hpbGQiOiIiLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOlMuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLG9uRm9jdXNPdXRzaWRlOmtbMl18fChrWzJdPVJyKCgpPT57fSxbInByZXZlbnQiXSkpLG9uRGlzbWlzczprWzNdfHwoa1szXT1UPT5nKG8pLm9uT3BlbkNoYW5nZSghMSkpLG9uRXNjYXBlS2V5RG93bjprWzRdfHwoa1s0XT1UPT5yKCJlc2NhcGVLZXlEb3duIixUKSksb25Qb2ludGVyRG93bk91dHNpZGU6a1s1XXx8KGtbNV09VD0+cigicG9pbnRlckRvd25PdXRzaWRlIixUKSl9LHtkZWZhdWx0Ok0oKCk9PlsoUigpLCQoRm4oUy5wb3NpdGlvbj09PSJwb3BwZXIiP1EyOnROKSxmZSh7Li4uUy4kYXR0cnMsLi4uZyh4KX0se2lkOmcobykuY29udGVudElkLHJlZjpUPT57aWYoIVQpcmV0dXJuO2NvbnN0IEM9ZyhBdCkoVCk7Qz8uaGFzQXR0cmlidXRlKCJkYXRhLXJla2EtcG9wcGVyLWNvbnRlbnQtd3JhcHBlciIpP2EudmFsdWU9Qy5maXJzdEVsZW1lbnRDaGlsZDphLnZhbHVlPUN9LHJvbGU6Imxpc3Rib3giLCJkYXRhLXN0YXRlIjpnKG8pLm9wZW4udmFsdWU/Im9wZW4iOiJjbG9zZWQiLGRpcjpnKG8pLmRpci52YWx1ZSxzdHlsZTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdXRsaW5lOiJub25lIn0sb25Db250ZXh0bWVudTprWzBdfHwoa1swXT1ScigoKT0+e30sWyJwcmV2ZW50Il0pKSxvblBsYWNlZDprWzFdfHwoa1sxXT1UPT5wLnZhbHVlPSEwKSxvbktleWRvd246aH0pLHtkZWZhdWx0Ok0oKCk9PltVKFMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiLCJkYXRhLXN0YXRlIiwiZGlyIiwib25LZXlkb3duIl0pKV0pLF86M30sOCxbImRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50cyJdKV0pLF86M30pXSksXzozfSkpfX0pLEoyPVkyO2NvbnN0W1gyLFoyXT1nbigiU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiIpO3ZhciBlTj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsicGxhY2VkIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCx7Z2V0SXRlbXM6b309bW8oKSxzPWhvKCksaT1IaSgpLGE9RyghMSksbD1HKCEwKSx1PUcoKSx7Zm9yd2FyZFJlZjpjLGN1cnJlbnRFbGVtZW50OmZ9PVVlKCkse3ZpZXdwb3J0OmQsc2VsZWN0ZWRJdGVtOnAsc2VsZWN0ZWRJdGVtVGV4dDptLGZvY3VzU2VsZWN0ZWRJdGVtOnl9PWk7ZnVuY3Rpb24gXygpe2lmKHMudHJpZ2dlckVsZW1lbnQudmFsdWUmJnMudmFsdWVFbGVtZW50LnZhbHVlJiZ1LnZhbHVlJiZmLnZhbHVlJiZkPy52YWx1ZSYmcD8udmFsdWUmJm0/LnZhbHVlKXtjb25zdCBoPXMudHJpZ2dlckVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYj1mLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHg9cy52YWx1ZUVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksUz1tLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHMuZGlyLnZhbHVlIT09InJ0bCIpe2NvbnN0IHo9Uy5sZWZ0LWIubGVmdCxZPXgubGVmdC16LEo9aC5sZWZ0LVksbGU9aC53aWR0aCtKLHdlPU1hdGgubWF4KGxlLGIud2lkdGgpLHRlPXdpbmRvdy5pbm5lcldpZHRoLU1uLEU9Um0oWSxNbixNYXRoLm1heChNbix0ZS13ZSkpO3UudmFsdWUuc3R5bGUubWluV2lkdGg9YCR7bGV9cHhgLHUudmFsdWUuc3R5bGUubGVmdD1gJHtFfXB4YH1lbHNle2NvbnN0IHo9Yi5yaWdodC1TLnJpZ2h0LFk9d2luZG93LmlubmVyV2lkdGgteC5yaWdodC16LEo9d2luZG93LmlubmVyV2lkdGgtaC5yaWdodC1ZLGxlPWgud2lkdGgrSix3ZT1NYXRoLm1heChsZSxiLndpZHRoKSx0ZT13aW5kb3cuaW5uZXJXaWR0aC1NbixFPVJtKFksTW4sTWF0aC5tYXgoTW4sdGUtd2UpKTt1LnZhbHVlLnN0eWxlLm1pbldpZHRoPWAke2xlfXB4YCx1LnZhbHVlLnN0eWxlLnJpZ2h0PWAke0V9cHhgfWNvbnN0IGs9bygpLm1hcCh6PT56LnJlZiksVD13aW5kb3cuaW5uZXJIZWlnaHQtTW4qMixDPWQudmFsdWUuc2Nyb2xsSGVpZ2h0LFA9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZi52YWx1ZSksRj1OdW1iZXIucGFyc2VJbnQoUC5ib3JkZXJUb3BXaWR0aCwxMCksRD1OdW1iZXIucGFyc2VJbnQoUC5wYWRkaW5nVG9wLDEwKSxXPU51bWJlci5wYXJzZUludChQLmJvcmRlckJvdHRvbVdpZHRoLDEwKSxMPU51bWJlci5wYXJzZUludChQLnBhZGRpbmdCb3R0b20sMTApLGo9RitEK0MrTCtXLEk9TWF0aC5taW4ocC52YWx1ZS5vZmZzZXRIZWlnaHQqNSxqKSxWPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGQudmFsdWUpLEI9TnVtYmVyLnBhcnNlSW50KFYucGFkZGluZ1RvcCwxMCksaWU9TnVtYmVyLnBhcnNlSW50KFYucGFkZGluZ0JvdHRvbSwxMCksbmU9aC50b3AraC5oZWlnaHQvMi1NbixWZT1ULW5lLE5lPXAudmFsdWUub2Zmc2V0SGVpZ2h0LzIsZXQ9cC52YWx1ZS5vZmZzZXRUb3ArTmUsdmU9RitEK2V0LEllPWotdmU7aWYodmU8PW5lKXtjb25zdCB6PXAudmFsdWU9PT1rLmF0KC0xKTt1LnZhbHVlLnN0eWxlLmJvdHRvbT0iMHB4Ijtjb25zdCBZPWYudmFsdWUuY2xpZW50SGVpZ2h0LWQudmFsdWUub2Zmc2V0VG9wLWQudmFsdWUub2Zmc2V0SGVpZ2h0LEo9TWF0aC5tYXgoVmUsTmUrKHo/aWU6MCkrWStXKSxsZT12ZStKO3UudmFsdWUuc3R5bGUuaGVpZ2h0PWAke2xlfXB4YH1lbHNle2NvbnN0IHo9cC52YWx1ZT09PWtbMF07dS52YWx1ZS5zdHlsZS50b3A9IjBweCI7Y29uc3QgSj1NYXRoLm1heChuZSxGK2QudmFsdWUub2Zmc2V0VG9wKyh6P0I6MCkrTmUpK0llO3UudmFsdWUuc3R5bGUuaGVpZ2h0PWAke0p9cHhgLGQudmFsdWUuc2Nyb2xsVG9wPXZlLW5lK2QudmFsdWUub2Zmc2V0VG9wfXUudmFsdWUuc3R5bGUubWFyZ2luPWAke01ufXB4IDBgLHUudmFsdWUuc3R5bGUubWluSGVpZ2h0PWAke0l9cHhgLHUudmFsdWUuc3R5bGUubWF4SGVpZ2h0PWAke1R9cHhgLHIoInBsYWNlZCIpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+YS52YWx1ZT0hMCl9fWNvbnN0IHc9RygiIik7b3QoYXN5bmMoKT0+e2F3YWl0IGl0KCksXygpLGYudmFsdWUmJih3LnZhbHVlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGYudmFsdWUpLnpJbmRleCl9KTtmdW5jdGlvbiB2KGgpe2gmJmwudmFsdWU9PT0hMCYmKF8oKSx5Py4oKSxsLnZhbHVlPSExKX1yZXR1cm4gSmIocy50cmlnZ2VyRWxlbWVudCwoKT0+e18oKX0pLFoyKHtjb250ZW50V3JhcHBlcjp1LHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOmEsb25TY3JvbGxCdXR0b25DaGFuZ2U6dn0pLChoLGIpPT4oUigpLF9lKCJkaXYiLHtyZWZfa2V5OiJjb250ZW50V3JhcHBlckVsZW1lbnQiLHJlZjp1LHN0eWxlOlJuKHtkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLHBvc2l0aW9uOiJmaXhlZCIsekluZGV4OncudmFsdWV9KX0sW3JlKGcoTWUpLGZlKHtyZWY6ZyhjKSxzdHlsZTp7Ym94U2l6aW5nOiJib3JkZXItYm94IixtYXhIZWlnaHQ6IjEwMCUifX0sey4uLmguJGF0dHJzLC4uLm59KSx7ZGVmYXVsdDpNKCgpPT5bVShoLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNildLDQpKX19KSx0Tj1lTixuTj1zZSh7X19uYW1lOiJTZWxlY3RBcnJvdyIscHJvcHM6e3dpZHRoOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjEwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NX0scm91bmRlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3ZnIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPUhpKFQwKTtyZXR1cm4ocixvKT0+ZyhuKS5wb3NpdGlvbj09PSJwb3BwZXIiPyhSKCksJChnKEEyKSx4dChmZSh7a2V5OjB9LHQpKSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpOmRlKCJ2LWlmIiwhMCl9fSksck49bk4sb049c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlNlbGVjdFByb3ZpZGVyIixwcm9wczp7Y29udGV4dDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9fSxzZXR1cChlKXtyZXR1cm4gRTAoZS5jb250ZXh0KSxDMChUMCksKG4scik9PlUobi4kc2xvdHMsImRlZmF1bHQiKX19KSxzTj1vTjtjb25zdCBpTj17a2V5OjF9O3ZhciBhTj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0Q29udGVudCIscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOlsiY2xvc2VBdXRvRm9jdXMiLCJlc2NhcGVLZXlEb3duIiwicG9pbnRlckRvd25PdXRzaWRlIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLG89JHMobix0KSxzPWhvKCksaT1HKCk7b3QoKCk9PntpLnZhbHVlPW5ldyBEb2N1bWVudEZyYWdtZW50fSk7Y29uc3QgYT1HKCksbD1OKCgpPT5uLmZvcmNlTW91bnR8fHMub3Blbi52YWx1ZSksdT1HKGwudmFsdWUpO3JldHVybiBQZShsLCgpPT57c2V0VGltZW91dCgoKT0+dS52YWx1ZT1sLnZhbHVlKX0pLChjLGYpPT5sLnZhbHVlfHx1LnZhbHVlfHxhLnZhbHVlPy5wcmVzZW50PyhSKCksJChnKHpsKSx7a2V5OjAscmVmX2tleToicHJlc2VuY2VSZWYiLHJlZjphLHByZXNlbnQ6bC52YWx1ZX0se2RlZmF1bHQ6TSgoKT0+W3JlKEoyLHh0KE10KHsuLi5nKG8pLC4uLmMuJGF0dHJzfSkpLHtkZWZhdWx0Ok0oKCk9PltVKGMuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KV0pLF86M30sOCxbInByZXNlbnQiXSkpOmkudmFsdWU/KFIoKSxfZSgiZGl2IixpTixbKFIoKSwkKHZmLHt0bzppLnZhbHVlfSxbcmUoc04se2NvbnRleHQ6ZyhzKX0se2RlZmF1bHQ6TSgoKT0+W1UoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImNvbnRleHQiXSldLDgsWyJ0byJdKSldKSk6ZGUoInYtaWYiLCEwKX19KSxsTj1hTjtjb25zdFtjTix1Tl09Z24oIlNlbGVjdEdyb3VwIik7dmFyIGZOPXNlKHtfX25hbWU6IlNlbGVjdEdyb3VwIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49Q3Modm9pZCAwLCJyZWthLXNlbGVjdC1ncm91cCIpO3JldHVybiB1Tih7aWQ6bn0pLChyLG8pPT4oUigpLCQoZyhNZSksZmUoe3JvbGU6Imdyb3VwIn0sdCx7ImFyaWEtbGFiZWxsZWRieSI6ZyhuKX0pLHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiYXJpYS1sYWJlbGxlZGJ5Il0pKX19KSxkTj1mTjtjb25zdFtBMCxwTl09Z24oIlNlbGVjdEl0ZW0iKTt2YXIgbU49c2Uoe19fbmFtZToiU2VsZWN0SXRlbSIscHJvcHM6e3ZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsic2VsZWN0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCx7ZGlzYWJsZWQ6b309RW4obikscz1obygpLGk9SGkoKSx7Zm9yd2FyZFJlZjphLGN1cnJlbnRFbGVtZW50Omx9PVVlKCkse0NvbGxlY3Rpb25JdGVtOnV9PW1vKCksYz1OKCgpPT5QaShzLm1vZGVsVmFsdWU/LnZhbHVlLG4udmFsdWUscy5ieSkpLGY9RyghMSksZD1HKG4udGV4dFZhbHVlPz8iIikscD1Dcyh2b2lkIDAsInJla2Etc2VsZWN0LWl0ZW0tdGV4dCIpLG09InNlbGVjdC5zZWxlY3QiO2FzeW5jIGZ1bmN0aW9uIHkoYil7aWYoYi5kZWZhdWx0UHJldmVudGVkKXJldHVybjtjb25zdCB4PXtvcmlnaW5hbEV2ZW50OmIsdmFsdWU6bi52YWx1ZX07SmYobSxfLHgpfWFzeW5jIGZ1bmN0aW9uIF8oYil7YXdhaXQgaXQoKSxyKCJzZWxlY3QiLGIpLCFiLmRlZmF1bHRQcmV2ZW50ZWQmJihvLnZhbHVlfHwocy5vblZhbHVlQ2hhbmdlKG4udmFsdWUpLHMubXVsdGlwbGUudmFsdWV8fHMub25PcGVuQ2hhbmdlKCExKSkpfWFzeW5jIGZ1bmN0aW9uIHcoYil7YXdhaXQgaXQoKSwhYi5kZWZhdWx0UHJldmVudGVkJiYoby52YWx1ZT9pLm9uSXRlbUxlYXZlPy4oKTpiLmN1cnJlbnRUYXJnZXQ/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpfWFzeW5jIGZ1bmN0aW9uIHYoYil7YXdhaXQgaXQoKSwhYi5kZWZhdWx0UHJldmVudGVkJiZiLmN1cnJlbnRUYXJnZXQ9PT1ybigpJiZpLm9uSXRlbUxlYXZlPy4oKX1hc3luYyBmdW5jdGlvbiBoKGIpe2F3YWl0IGl0KCksIShiLmRlZmF1bHRQcmV2ZW50ZWR8fGkuc2VhcmNoUmVmPy52YWx1ZSE9PSIiJiZiLmtleT09PSIgIikmJih6Mi5pbmNsdWRlcyhiLmtleSkmJnkoYiksYi5rZXk9PT0iICImJmIucHJldmVudERlZmF1bHQoKSl9aWYobi52YWx1ZT09PSIiKXRocm93IG5ldyBFcnJvcigiQSA8U2VsZWN0SXRlbSAvPiBtdXN0IGhhdmUgYSB2YWx1ZSBwcm9wIHRoYXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBTZWxlY3QgdmFsdWUgY2FuIGJlIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbiBhbmQgc2hvdyB0aGUgcGxhY2Vob2xkZXIuIik7cmV0dXJuIG90KCgpPT57bC52YWx1ZSYmaS5pdGVtUmVmQ2FsbGJhY2sobC52YWx1ZSxuLnZhbHVlLG4uZGlzYWJsZWQpfSkscE4oe3ZhbHVlOm4udmFsdWUsZGlzYWJsZWQ6byx0ZXh0SWQ6cCxpc1NlbGVjdGVkOmMsb25JdGVtVGV4dENoYW5nZTpiPT57ZC52YWx1ZT0oKGQudmFsdWV8fGI/LnRleHRDb250ZW50KT8/IiIpLnRyaW0oKX19KSwoYix4KT0+KFIoKSwkKGcodSkse3ZhbHVlOnt0ZXh0VmFsdWU6ZC52YWx1ZX19LHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSx7cmVmOmcoYSkscm9sZToib3B0aW9uIiwiYXJpYS1sYWJlbGxlZGJ5IjpnKHApLCJkYXRhLWhpZ2hsaWdodGVkIjpmLnZhbHVlPyIiOnZvaWQgMCwiYXJpYS1zZWxlY3RlZCI6Yy52YWx1ZSwiZGF0YS1zdGF0ZSI6Yy52YWx1ZT8iY2hlY2tlZCI6InVuY2hlY2tlZCIsImFyaWEtZGlzYWJsZWQiOmcobyl8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZyhvKT8iIjp2b2lkIDAsdGFiaW5kZXg6ZyhvKT92b2lkIDA6LTEsYXM6Yi5hcywiYXMtY2hpbGQiOmIuYXNDaGlsZCxvbkZvY3VzOnhbMF18fCh4WzBdPVM9PmYudmFsdWU9ITApLG9uQmx1cjp4WzFdfHwoeFsxXT1TPT5mLnZhbHVlPSExKSxvblBvaW50ZXJ1cDp5LG9uUG9pbnRlcmRvd246eFsyXXx8KHhbMl09Uz0+e1MuY3VycmVudFRhcmdldC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSksb25Ub3VjaGVuZDp4WzNdfHwoeFszXT1ScigoKT0+e30sWyJwcmV2ZW50Iiwic3RvcCJdKSksb25Qb2ludGVybW92ZTp3LG9uUG9pbnRlcmxlYXZlOnYsb25LZXlkb3duOmh9LHtkZWZhdWx0Ok0oKCk9PltVKGIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLWhpZ2hsaWdodGVkIiwiYXJpYS1zZWxlY3RlZCIsImRhdGEtc3RhdGUiLCJhcmlhLWRpc2FibGVkIiwiZGF0YS1kaXNhYmxlZCIsInRhYmluZGV4IiwiYXMiLCJhcy1jaGlsZCJdKV0pLF86M30sOCxbInZhbHVlIl0pKX19KSxoTj1tTixnTj1zZSh7X19uYW1lOiJTZWxlY3RJdGVtSW5kaWNhdG9yIixwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InNwYW4ifX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49QTAoKTtyZXR1cm4ocixvKT0+ZyhuKS5pc1NlbGVjdGVkLnZhbHVlPyhSKCksJChnKE1lKSxmZSh7a2V5OjAsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSk6ZGUoInYtaWYiLCEwKX19KSx5Tj1nTix2Tj1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiU2VsZWN0SXRlbVRleHQiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1obygpLHI9SGkoKSxvPUEwKCkse2ZvcndhcmRSZWY6cyxjdXJyZW50RWxlbWVudDppfT1VZSgpLGE9TigoKT0+KHt2YWx1ZTpvLnZhbHVlLGRpc2FibGVkOm8uZGlzYWJsZWQudmFsdWUsdGV4dENvbnRlbnQ6aS52YWx1ZT8udGV4dENvbnRlbnQ/P28udmFsdWU/LnRvU3RyaW5nKCk/PyIifSkpO3JldHVybiBvdCgoKT0+e2kudmFsdWUmJihvLm9uSXRlbVRleHRDaGFuZ2UoaS52YWx1ZSksci5pdGVtVGV4dFJlZkNhbGxiYWNrKGkudmFsdWUsby52YWx1ZSxvLmRpc2FibGVkLnZhbHVlKSxuLm9uT3B0aW9uQWRkKGEudmFsdWUpKX0pLHByKCgpPT57bi5vbk9wdGlvblJlbW92ZShhLnZhbHVlKX0pLChsLHUpPT4oUigpLCQoZyhNZSksZmUoe2lkOmcobykudGV4dElkLHJlZjpnKHMpfSx7Li4udCwuLi5sLiRhdHRyc30pLHtkZWZhdWx0Ok0oKCk9PltVKGwuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2LFsiaWQiXSkpfX0pLGJOPXZOLHdOPXNlKHtfX25hbWU6IlNlbGVjdExhYmVsIixwcm9wczp7Zm9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImRpdiJ9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1jTih7aWQ6IiJ9KTtyZXR1cm4ocixvKT0+KFIoKSwkKGcoTWUpLGZlKHQse2lkOmcobikuaWR9KSx7ZGVmYXVsdDpNKCgpPT5bVShyLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNixbImlkIl0pKX19KSxfTj13Tix4Tj1zZSh7X19uYW1lOiJTZWxlY3RQb3J0YWwiLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuKG4scik9PihSKCksJChnKGxkKSx4dChNdCh0KSkse2RlZmF1bHQ6TSgoKT0+W1Uobi4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKX19KSxTTj14TixrTj1zZSh7X19uYW1lOiJTZWxlY3RTZXBhcmF0b3IiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWU7cmV0dXJuKG4scik9PihSKCksJChnKE1lKSxmZSh7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHtkZWZhdWx0Ok0oKCk9PltVKG4uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksRU49a04sVE49c2Uoe19fbmFtZToiU2VsZWN0VHJpZ2dlciIscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPWhvKCkse2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDpvfT1VZSgpLHM9TigoKT0+bi5kaXNhYmxlZD8udmFsdWV8fHQuZGlzYWJsZWQpO24uY29udGVudElkfHw9Q3Modm9pZCAwLCJyZWthLXNlbGVjdC1jb250ZW50Iiksb3QoKCk9PntuLm9uVHJpZ2dlckNoYW5nZShvLnZhbHVlKX0pO2NvbnN0e2dldEl0ZW1zOml9PW1vKCkse3NlYXJjaDphLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDpsLHJlc2V0VHlwZWFoZWFkOnV9PW4wKCk7ZnVuY3Rpb24gYygpe3MudmFsdWV8fChuLm9uT3BlbkNoYW5nZSghMCksdSgpKX1mdW5jdGlvbiBmKGQpe2MoKSxuLnRyaWdnZXJQb2ludGVyRG93blBvc1JlZi52YWx1ZT17eDpNYXRoLnJvdW5kKGQucGFnZVgpLHk6TWF0aC5yb3VuZChkLnBhZ2VZKX19cmV0dXJuKGQscCk9PihSKCksJChnKGdSKSx7ImFzLWNoaWxkIjoiIixyZWZlcmVuY2U6ZC5yZWZlcmVuY2V9LHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSx7cmVmOmcocikscm9sZToiY29tYm9ib3giLHR5cGU6ZC5hcz09PSJidXR0b24iPyJidXR0b24iOnZvaWQgMCwiYXJpYS1jb250cm9scyI6ZyhuKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOmcobikub3Blbi52YWx1ZXx8ITEsImFyaWEtcmVxdWlyZWQiOmcobikucmVxdWlyZWQ/LnZhbHVlLCJhcmlhLWF1dG9jb21wbGV0ZSI6Im5vbmUiLGRpc2FibGVkOnMudmFsdWUsZGlyOmcobik/LmRpci52YWx1ZSwiZGF0YS1zdGF0ZSI6ZyhuKT8ub3Blbi52YWx1ZT8ib3BlbiI6ImNsb3NlZCIsImRhdGEtZGlzYWJsZWQiOnMudmFsdWU/IiI6dm9pZCAwLCJkYXRhLXBsYWNlaG9sZGVyIjpnKGoyKShnKG4pLm1vZGVsVmFsdWU/LnZhbHVlKT8iIjp2b2lkIDAsImFzLWNoaWxkIjpkLmFzQ2hpbGQsYXM6ZC5hcyxvbkNsaWNrOnBbMF18fChwWzBdPW09PnttPy5jdXJyZW50VGFyZ2V0Py5mb2N1cygpfSksb25Qb2ludGVyZG93bjpwWzFdfHwocFsxXT1tPT57aWYobS5wb2ludGVyVHlwZT09PSJ0b3VjaCIpcmV0dXJuIG0ucHJldmVudERlZmF1bHQoKTtjb25zdCB5PW0udGFyZ2V0O3kuaGFzUG9pbnRlckNhcHR1cmUobS5wb2ludGVySWQpJiZ5LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShtLnBvaW50ZXJJZCksbS5idXR0b249PT0wJiZtLmN0cmxLZXk9PT0hMSYmKGYobSksbS5wcmV2ZW50RGVmYXVsdCgpKX0pLG9uUG9pbnRlcnVwOnBbMl18fChwWzJdPVJyKG09PnttLnBvaW50ZXJUeXBlPT09InRvdWNoIiYmZihtKX0sWyJwcmV2ZW50Il0pKSxvbktleWRvd246cFszXXx8KHBbM109bT0+e2NvbnN0IHk9ZyhhKSE9PSIiOyEobS5jdHJsS2V5fHxtLmFsdEtleXx8bS5tZXRhS2V5KSYmbS5rZXkubGVuZ3RoPT09MSYmeSYmbS5rZXk9PT0iICJ8fChnKGwpKG0ua2V5LGcoaSkoKSksZyhGMikuaW5jbHVkZXMobS5rZXkpJiYoYygpLG0ucHJldmVudERlZmF1bHQoKSkpfSl9LHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJ0eXBlIiwiYXJpYS1jb250cm9scyIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLXJlcXVpcmVkIiwiZGlzYWJsZWQiLCJkaXIiLCJkYXRhLXN0YXRlIiwiZGF0YS1kaXNhYmxlZCIsImRhdGEtcGxhY2Vob2xkZXIiLCJhcy1jaGlsZCIsImFzIl0pXSksXzozfSw4LFsicmVmZXJlbmNlIl0pKX19KSxDTj1UTixBTj1zZSh7X19uYW1lOiJTZWxlY3RWYWx1ZSIscHJvcHM6e3BsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OiIifSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoic3BhbiJ9fSxzZXR1cChlKXtjb25zdCB0PWUse2ZvcndhcmRSZWY6bixjdXJyZW50RWxlbWVudDpyfT1VZSgpLG89aG8oKTtvdCgoKT0+e28udmFsdWVFbGVtZW50PXJ9KTtjb25zdCBzPU4oKCk9PntsZXQgYT1bXTtjb25zdCBsPUFycmF5LmZyb20oby5vcHRpb25zU2V0LnZhbHVlKSx1PWM9PmwuZmluZChmPT5QaShjLGYudmFsdWUsby5ieSkpO3JldHVybiBBcnJheS5pc0FycmF5KG8ubW9kZWxWYWx1ZS52YWx1ZSk/YT1vLm1vZGVsVmFsdWUudmFsdWUubWFwKGM9PnUoYyk/LnRleHRDb250ZW50Pz8iIik6YT1bdShvLm1vZGVsVmFsdWUudmFsdWUpPy50ZXh0Q29udGVudD8/IiJdLGEuZmlsdGVyKEJvb2xlYW4pfSksaT1OKCgpPT5zLnZhbHVlLmxlbmd0aD9zLnZhbHVlLmpvaW4oIiwgIik6dC5wbGFjZWhvbGRlcik7cmV0dXJuKGEsbCk9PihSKCksJChnKE1lKSx7cmVmOmcobiksYXM6YS5hcywiYXMtY2hpbGQiOmEuYXNDaGlsZCxzdHlsZTp7cG9pbnRlckV2ZW50czoibm9uZSJ9LCJkYXRhLXBsYWNlaG9sZGVyIjpzLnZhbHVlLmxlbmd0aD92b2lkIDA6dC5wbGFjZWhvbGRlcn0se2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiLHtzZWxlY3RlZExhYmVsOnMudmFsdWUsbW9kZWxWYWx1ZTpnKG8pLm1vZGVsVmFsdWUudmFsdWV9LCgpPT5bc3QocnQoaS52YWx1ZSksMSldKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXBsYWNlaG9sZGVyIl0pKX19KSxPTj1BTixQTj1zZSh7X19uYW1lOiJTZWxlY3RWaWV3cG9ydCIscHJvcHM6e25vbmNlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLHtub25jZTpufT1Fbih0KSxyPU8yKG4pLG89SGkoKSxzPW8ucG9zaXRpb249PT0iaXRlbS1hbGlnbmVkIj9YMigpOnZvaWQgMCx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50OmF9PVVlKCk7b3QoKCk9PntvPy5vblZpZXdwb3J0Q2hhbmdlKGEudmFsdWUpfSk7Y29uc3QgbD1HKDApO2Z1bmN0aW9uIHUoYyl7Y29uc3QgZj1jLmN1cnJlbnRUYXJnZXQse3Nob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOmQsY29udGVudFdyYXBwZXI6cH09cz8/e307aWYoZD8udmFsdWUmJnA/LnZhbHVlKXtjb25zdCBtPU1hdGguYWJzKGwudmFsdWUtZi5zY3JvbGxUb3ApO2lmKG0+MCl7Y29uc3QgeT13aW5kb3cuaW5uZXJIZWlnaHQtTW4qMixfPU51bWJlci5wYXJzZUZsb2F0KHAudmFsdWUuc3R5bGUubWluSGVpZ2h0KSx3PU51bWJlci5wYXJzZUZsb2F0KHAudmFsdWUuc3R5bGUuaGVpZ2h0KSx2PU1hdGgubWF4KF8sdyk7aWYodjx5KXtjb25zdCBoPXYrbSxiPU1hdGgubWluKHksaCkseD1oLWI7cC52YWx1ZS5zdHlsZS5oZWlnaHQ9YCR7Yn1weGAscC52YWx1ZS5zdHlsZS5ib3R0b209PT0iMHB4IiYmKGYuc2Nyb2xsVG9wPXg+MD94OjAscC52YWx1ZS5zdHlsZS5qdXN0aWZ5Q29udGVudD0iZmxleC1lbmQiKX19fWwudmFsdWU9Zi5zY3JvbGxUb3B9cmV0dXJuKGMsZik9PihSKCksX2UoR2UsbnVsbCxbcmUoZyhNZSksZmUoe3JlZjpnKGkpLCJkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0IjoiIixyb2xlOiJwcmVzZW50YXRpb24ifSx7Li4uYy4kYXR0cnMsLi4udH0se3N0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXg6MSxvdmVyZmxvdzoiaGlkZGVuIGF1dG8ifSxvblNjcm9sbDp1fSkse2RlZmF1bHQ6TSgoKT0+W1UoYy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpLHJlKGcoTWUpLHthczoic3R5bGUiLG5vbmNlOmcocil9LHtkZWZhdWx0Ok0oKCk9PmZbMF18fChmWzBdPVtzdCgiIC8qIEhpZGUgc2Nyb2xsYmFycyBjcm9zcy1icm93c2VyIGFuZCBlbmFibGUgbW9tZW50dW0gc2Nyb2xsIGZvciB0b3VjaCBkZXZpY2VzICovIFtkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0XSB7IHNjcm9sbGJhci13aWR0aDpub25lOyAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfSBbZGF0YS1yZWthLXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfSAiKV0pKSxfOjEsX186WzBdfSw4LFsibm9uY2UiXSldLDY0KSl9fSksSU49UE4sUk49c2Uoe19fbmFtZToiVG9hc3RBbm5vdW5jZUV4Y2x1ZGUiLHByb3BzOnthbHRUZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7cmV0dXJuKHQsbik9PihSKCksJChnKE1lKSx7YXM6dC5hcywiYXMtY2hpbGQiOnQuYXNDaGlsZCwiZGF0YS1yZWthLXRvYXN0LWFubm91bmNlLWV4Y2x1ZGUiOiIiLCJkYXRhLXJla2EtdG9hc3QtYW5ub3VuY2UtYWx0Ijp0LmFsdFRleHR8fHZvaWQgMH0se2RlZmF1bHQ6TSgoKT0+W1UodC4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sOCxbImFzIiwiYXMtY2hpbGQiLCJkYXRhLXJla2EtdG9hc3QtYW5ub3VuY2UtYWx0Il0pKX19KSxPMD1STjtjb25zdFtXbCxOTl09Z24oIlRvYXN0UHJvdmlkZXIiKTt2YXIgRE49c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvYXN0UHJvdmlkZXIiLHByb3BzOntsYWJlbDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDoiTm90aWZpY2F0aW9uIn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NWUzfSxkaXNhYmxlU3dpcGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3dpcGVEaXJlY3Rpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6InJpZ2h0In0sc3dpcGVUaHJlc2hvbGQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NTB9fSxzZXR1cChlKXtjb25zdCB0PWUse2xhYmVsOm4sZHVyYXRpb246cixkaXNhYmxlU3dpcGU6byxzd2lwZURpcmVjdGlvbjpzLHN3aXBlVGhyZXNob2xkOml9PUVuKHQpO21vKHtpc1Byb3ZpZGVyOiEwfSk7Y29uc3QgYT1HKCksbD1HKDApLHU9RyghMSksYz1HKCExKTtpZih0LmxhYmVsJiZ0eXBlb2YgdC5sYWJlbD09InN0cmluZyImJiF0LmxhYmVsLnRyaW0oKSl7Y29uc3QgZj0iSW52YWxpZCBwcm9wIGBsYWJlbGAgc3VwcGxpZWQgdG8gYFRvYXN0UHJvdmlkZXJgLiBFeHBlY3RlZCBub24tZW1wdHkgYHN0cmluZ2AuIjt0aHJvdyBuZXcgRXJyb3IoZil9cmV0dXJuIE5OKHtsYWJlbDpuLGR1cmF0aW9uOnIsZGlzYWJsZVN3aXBlOm8sc3dpcGVEaXJlY3Rpb246cyxzd2lwZVRocmVzaG9sZDppLHRvYXN0Q291bnQ6bCx2aWV3cG9ydDphLG9uVmlld3BvcnRDaGFuZ2UoZil7YS52YWx1ZT1mfSxvblRvYXN0QWRkKCl7bC52YWx1ZSsrfSxvblRvYXN0UmVtb3ZlKCl7bC52YWx1ZS0tfSxpc0ZvY3VzZWRUb2FzdEVzY2FwZUtleURvd25SZWY6dSxpc0Nsb3NlUGF1c2VkUmVmOmN9KSwoZixkKT0+VShmLiRzbG90cywiZGVmYXVsdCIpfX0pLExOPUROLCROPXNlKHtfX25hbWU6IlRvYXN0QW5ub3VuY2UiLHNldHVwKGUpe2NvbnN0IHQ9V2woKSxuPUhQKDFlMykscj1HKCExKTtyZXR1cm4gWWIoKCk9PntyLnZhbHVlPSEwfSksKG8scyk9Pmcobil8fHIudmFsdWU/KFIoKSwkKGcoVmkpLHtrZXk6MCxmZWF0dXJlOiJmdWxseS1oaWRkZW4ifSx7ZGVmYXVsdDpNKCgpPT5bc3QocnQoZyh0KS5sYWJlbC52YWx1ZSkrIiAiLDEpLFUoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30pKTpkZSgidi1pZiIsITApfX0pLE1OPSROO2NvbnN0IEJOPSJ0b2FzdC5zd2lwZVN0YXJ0IixxTj0idG9hc3Quc3dpcGVNb3ZlIixGTj0idG9hc3Quc3dpcGVDYW5jZWwiLHpOPSJ0b2FzdC5zd2lwZUVuZCIsV3U9InRvYXN0LnZpZXdwb3J0UGF1c2UiLEd1PSJ0b2FzdC52aWV3cG9ydFJlc3VtZSI7ZnVuY3Rpb24geWEoZSx0LG4pe2NvbnN0IHI9bi5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmci5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHIuZGlzcGF0Y2hFdmVudChvKX1mdW5jdGlvbiBvaChlLHQsbj0wKXtjb25zdCByPU1hdGguYWJzKGUueCksbz1NYXRoLmFicyhlLnkpLHM9cj5vO3JldHVybiB0PT09ImxlZnQifHx0PT09InJpZ2h0Ij9zJiZyPm46IXMmJm8+bn1mdW5jdGlvbiBqTihlKXtyZXR1cm4gZS5ub2RlVHlwZT09PWUuRUxFTUVOVF9OT0RFfWZ1bmN0aW9uIFAwKGUpe2NvbnN0IHQ9W107cmV0dXJuIEFycmF5LmZyb20oZS5jaGlsZE5vZGVzKS5mb3JFYWNoKHI9PntpZihyLm5vZGVUeXBlPT09ci5URVhUX05PREUmJnIudGV4dENvbnRlbnQmJnQucHVzaChyLnRleHRDb250ZW50KSxqTihyKSl7Y29uc3Qgbz1yLmFyaWFIaWRkZW58fHIuaGlkZGVufHxyLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSIscz1yLmRhdGFzZXQucmVrYVRvYXN0QW5ub3VuY2VFeGNsdWRlPT09IiI7aWYoIW8paWYocyl7Y29uc3QgaT1yLmRhdGFzZXQucmVrYVRvYXN0QW5ub3VuY2VBbHQ7aSYmdC5wdXNoKGkpfWVsc2UgdC5wdXNoKC4uLlAwKHIpKX19KSx0fWNvbnN0W1ZOLFVOXT1nbigiVG9hc3RSb290Iik7dmFyIEhOPXNlKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOiJUb2FzdFJvb3RJbXBsIixwcm9wczp7dHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsaSJ9fSxlbWl0czpbImNsb3NlIiwiZXNjYXBlS2V5RG93biIsInBhdXNlIiwicmVzdW1lIiwic3dpcGVTdGFydCIsInN3aXBlTW92ZSIsInN3aXBlQ2FuY2VsIiwic3dpcGVFbmQiXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBuPWUscj10LHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6c309VWUoKSx7Q29sbGVjdGlvbkl0ZW06aX09bW8oKSxhPVdsKCksbD1HKG51bGwpLHU9RyhudWxsKSxjPU4oKCk9PnR5cGVvZiBuLmR1cmF0aW9uPT0ibnVtYmVyIj9uLmR1cmF0aW9uOmEuZHVyYXRpb24udmFsdWUpLGY9RygwKSxkPUcoYy52YWx1ZSkscD1HKDApLG09RyhjLnZhbHVlKSx5PVliKCgpPT57Y29uc3QgaD1EYXRlLm5vdygpLWYudmFsdWU7bS52YWx1ZT1NYXRoLm1heChkLnZhbHVlLWgsMCl9LHtmcHNMaW1pdDo2MH0pO2Z1bmN0aW9uIF8oaCl7aDw9MHx8aD09PU51bWJlci5QT1NJVElWRV9JTkZJTklUWXx8aG4mJih3aW5kb3cuY2xlYXJUaW1lb3V0KHAudmFsdWUpLGYudmFsdWU9RGF0ZS5ub3coKSxwLnZhbHVlPXdpbmRvdy5zZXRUaW1lb3V0KHcsaCkpfWZ1bmN0aW9uIHcoaCl7Y29uc3QgYj1oPy5wb2ludGVyVHlwZT09PSIiO3MudmFsdWU/LmNvbnRhaW5zKHJuKCkpJiZiJiZhLnZpZXdwb3J0LnZhbHVlPy5mb2N1cygpLGImJihhLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWU9ITEpLHIoImNsb3NlIil9Y29uc3Qgdj1OKCgpPT5zLnZhbHVlP1AwKHMudmFsdWUpOm51bGwpO2lmKG4udHlwZSYmIVsiZm9yZWdyb3VuZCIsImJhY2tncm91bmQiXS5pbmNsdWRlcyhuLnR5cGUpKXtjb25zdCBoPSJJbnZhbGlkIHByb3AgYHR5cGVgIHN1cHBsaWVkIHRvIGBUb2FzdGAuIEV4cGVjdGVkIGBmb3JlZ3JvdW5kIHwgYmFja2dyb3VuZGAuIjt0aHJvdyBuZXcgRXJyb3IoaCl9cmV0dXJuIG9uKGg9Pntjb25zdCBiPWEudmlld3BvcnQudmFsdWU7aWYoYil7Y29uc3QgeD0oKT0+e18oZC52YWx1ZSkseS5yZXN1bWUoKSxyKCJyZXN1bWUiKX0sUz0oKT0+e2NvbnN0IGs9RGF0ZS5ub3coKS1mLnZhbHVlO2QudmFsdWU9ZC52YWx1ZS1rLHdpbmRvdy5jbGVhclRpbWVvdXQocC52YWx1ZSkseS5wYXVzZSgpLHIoInBhdXNlIil9O3JldHVybiBiLmFkZEV2ZW50TGlzdGVuZXIoV3UsUyksYi5hZGRFdmVudExpc3RlbmVyKEd1LHgpLCgpPT57Yi5yZW1vdmVFdmVudExpc3RlbmVyKFd1LFMpLGIucmVtb3ZlRXZlbnRMaXN0ZW5lcihHdSx4KX19fSksUGUoKCk9PltuLm9wZW4sYy52YWx1ZV0sKCk9PntkLnZhbHVlPWMudmFsdWUsbi5vcGVuJiYhYS5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlJiZfKGMudmFsdWUpfSx7aW1tZWRpYXRlOiEwfSksb2QoIkVzY2FwZSIsaD0+e3IoImVzY2FwZUtleURvd24iLGgpLGguZGVmYXVsdFByZXZlbnRlZHx8KGEuaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmLnZhbHVlPSEwLHcoKSl9KSxvdCgoKT0+e2Eub25Ub2FzdEFkZCgpfSkscHIoKCk9PnthLm9uVG9hc3RSZW1vdmUoKX0pLFVOKHtvbkNsb3NlOnd9KSwoaCxiKT0+KFIoKSxfZShHZSxudWxsLFt2LnZhbHVlPyhSKCksJChNTix7a2V5OjAscm9sZToiYWxlcnQiLCJhcmlhLWxpdmUiOmgudHlwZT09PSJmb3JlZ3JvdW5kIj8iYXNzZXJ0aXZlIjoicG9saXRlIn0se2RlZmF1bHQ6TSgoKT0+W3N0KHJ0KHYudmFsdWUpLDEpXSksXzoxfSw4LFsiYXJpYS1saXZlIl0pKTpkZSgidi1pZiIsITApLGcoYSkudmlld3BvcnQudmFsdWU/KFIoKSwkKHZmLHtrZXk6MSx0bzpnKGEpLnZpZXdwb3J0LnZhbHVlfSxbcmUoZyhpKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSxmZSh7cmVmOmcobyksdGFiaW5kZXg6IjAifSxoLiRhdHRycyx7YXM6aC5hcywiYXMtY2hpbGQiOmguYXNDaGlsZCwiZGF0YS1zdGF0ZSI6aC5vcGVuPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1zd2lwZS1kaXJlY3Rpb24iOmcoYSkuc3dpcGVEaXJlY3Rpb24udmFsdWUsc3R5bGU6ZyhhKS5kaXNhYmxlU3dpcGUudmFsdWU/dm9pZCAwOnt1c2VyU2VsZWN0OiJub25lIix0b3VjaEFjdGlvbjoibm9uZSJ9LG9uUG9pbnRlcmRvd246YlswXXx8KGJbMF09UnIoeD0+e2coYSkuZGlzYWJsZVN3aXBlLnZhbHVlfHwobC52YWx1ZT17eDp4LmNsaWVudFgseTp4LmNsaWVudFl9KX0sWyJsZWZ0Il0pKSxvblBvaW50ZXJtb3ZlOmJbMV18fChiWzFdPXg9PntpZihnKGEpLmRpc2FibGVTd2lwZS52YWx1ZXx8IWwudmFsdWUpcmV0dXJuO2NvbnN0IFM9eC5jbGllbnRYLWwudmFsdWUueCxrPXguY2xpZW50WS1sLnZhbHVlLnksVD0hIXUudmFsdWUsQz1bImxlZnQiLCJyaWdodCJdLmluY2x1ZGVzKGcoYSkuc3dpcGVEaXJlY3Rpb24udmFsdWUpLFA9WyJsZWZ0IiwidXAiXS5pbmNsdWRlcyhnKGEpLnN3aXBlRGlyZWN0aW9uLnZhbHVlKT9NYXRoLm1pbjpNYXRoLm1heCxGPUM/UCgwLFMpOjAsRD1DPzA6UCgwLGspLFc9eC5wb2ludGVyVHlwZT09PSJ0b3VjaCI/MTA6MixMPXt4OkYseTpEfSxqPXtvcmlnaW5hbEV2ZW50OngsZGVsdGE6TH07VD8odS52YWx1ZT1MLGcoeWEpKGcocU4pLEk9PnIoInN3aXBlTW92ZSIsSSksaikpOmcob2gpKEwsZyhhKS5zd2lwZURpcmVjdGlvbi52YWx1ZSxXKT8odS52YWx1ZT1MLGcoeWEpKGcoQk4pLEk9PnIoInN3aXBlU3RhcnQiLEkpLGopLHgudGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKHgucG9pbnRlcklkKSk6KE1hdGguYWJzKFMpPld8fE1hdGguYWJzKGspPlcpJiYobC52YWx1ZT1udWxsKX0pLG9uUG9pbnRlcnVwOmJbMl18fChiWzJdPXg9PntpZihnKGEpLmRpc2FibGVTd2lwZS52YWx1ZSlyZXR1cm47Y29uc3QgUz11LnZhbHVlLGs9eC50YXJnZXQ7aWYoay5oYXNQb2ludGVyQ2FwdHVyZSh4LnBvaW50ZXJJZCkmJmsucmVsZWFzZVBvaW50ZXJDYXB0dXJlKHgucG9pbnRlcklkKSx1LnZhbHVlPW51bGwsbC52YWx1ZT1udWxsLFMpe2NvbnN0IFQ9eC5jdXJyZW50VGFyZ2V0LEM9e29yaWdpbmFsRXZlbnQ6eCxkZWx0YTpTfTtnKG9oKShTLGcoYSkuc3dpcGVEaXJlY3Rpb24udmFsdWUsZyhhKS5zd2lwZVRocmVzaG9sZC52YWx1ZSk/Zyh5YSkoZyh6TiksUD0+cigic3dpcGVFbmQiLFApLEMpOmcoeWEpKGcoRk4pLFA9PnIoInN3aXBlQ2FuY2VsIixQKSxDKSxUPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsUD0+UC5wcmV2ZW50RGVmYXVsdCgpLHtvbmNlOiEwfSl9fSl9KSx7ZGVmYXVsdDpNKCgpPT5bVShoLiRzbG90cywiZGVmYXVsdCIse3JlbWFpbmluZzptLnZhbHVlLGR1cmF0aW9uOmMudmFsdWV9KV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIiwiZGF0YS1zdGF0ZSIsImRhdGEtc3dpcGUtZGlyZWN0aW9uIiwic3R5bGUiXSldKSxfOjN9KV0sOCxbInRvIl0pKTpkZSgidi1pZiIsITApXSw2NCkpfX0pLFdOPUhOLEdOPXNlKHtfX25hbWU6IlRvYXN0Q2xvc2UiLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiYnV0dG9uIn19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPVZOKCkse2ZvcndhcmRSZWY6cn09VWUoKTtyZXR1cm4obyxzKT0+KFIoKSwkKE8wLHsiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhNZSksZmUodCx7cmVmOmcociksdHlwZTpvLmFzPT09ImJ1dHRvbiI/ImJ1dHRvbiI6dm9pZCAwLG9uQ2xpY2s6ZyhuKS5vbkNsb3NlfSkse2RlZmF1bHQ6TSgoKT0+W1Uoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJ0eXBlIiwib25DbGljayJdKV0pLF86M30pKX19KSxJMD1HTixLTj1zZSh7X19uYW1lOiJUb2FzdEFjdGlvbiIscHJvcHM6e2FsdFRleHQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtpZighZS5hbHRUZXh0KXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBwcm9wIGBhbHRUZXh0YCBleHBlY3RlZCBvbiBgVG9hc3RBY3Rpb25gIik7Y29uc3R7Zm9yd2FyZFJlZjpufT1VZSgpO3JldHVybihyLG8pPT5yLmFsdFRleHQ/KFIoKSwkKE8wLHtrZXk6MCwiYWx0LXRleHQiOnIuYWx0VGV4dCwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUoSTAse3JlZjpnKG4pLGFzOnIuYXMsImFzLWNoaWxkIjpyLmFzQ2hpbGR9LHtkZWZhdWx0Ok0oKCk9PltVKHIuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDgsWyJhcyIsImFzLWNoaWxkIl0pXSksXzozfSw4LFsiYWx0LXRleHQiXSkpOmRlKCJ2LWlmIiwhMCl9fSksc2g9S04sUU49c2Uoe19fbmFtZToiVG9hc3REZXNjcmlwdGlvbiIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gVWUoKSwobixyKT0+KFIoKSwkKGcoTWUpLHh0KE10KHQpKSx7ZGVmYXVsdDpNKCgpPT5bVShuLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLFlOPVFOLEpOPXNlKHtfX25hbWU6IlRvYXN0UG9ydGFsIixwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lO3JldHVybihuLHIpPT4oUigpLCQoZyhsZCkseHQoTXQodCkpLHtkZWZhdWx0Ok0oKCk9PltVKG4uJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSl9fSksWE49Sk4sWk49c2Uoe19fbmFtZToiVG9hc3RSb290Iixwcm9wczp7ZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImZvcmVncm91bmQifSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGR1cmF0aW9uOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImxpIn19LGVtaXRzOlsiZXNjYXBlS2V5RG93biIsInBhdXNlIiwicmVzdW1lIiwic3dpcGVTdGFydCIsInN3aXBlTW92ZSIsInN3aXBlQ2FuY2VsIiwic3dpcGVFbmQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQse2ZvcndhcmRSZWY6b309VWUoKSxzPWFvKG4sIm9wZW4iLHIse2RlZmF1bHRWYWx1ZTpuLmRlZmF1bHRPcGVuLHBhc3NpdmU6bi5vcGVuPT09dm9pZCAwfSk7cmV0dXJuKGksYSk9PihSKCksJChnKHpsKSx7cHJlc2VudDppLmZvcmNlTW91bnR8fGcocyl9LHtkZWZhdWx0Ok0oKCk9PltyZShXTixmZSh7cmVmOmcobyksb3BlbjpnKHMpLHR5cGU6aS50eXBlLGFzOmkuYXMsImFzLWNoaWxkIjppLmFzQ2hpbGQsZHVyYXRpb246aS5kdXJhdGlvbn0saS4kYXR0cnMse29uQ2xvc2U6YVswXXx8KGFbMF09bD0+cy52YWx1ZT0hMSksb25QYXVzZTphWzFdfHwoYVsxXT1sPT5yKCJwYXVzZSIpKSxvblJlc3VtZTphWzJdfHwoYVsyXT1sPT5yKCJyZXN1bWUiKSksb25Fc2NhcGVLZXlEb3duOmFbM118fChhWzNdPWw9PnIoImVzY2FwZUtleURvd24iLGwpKSxvblN3aXBlU3RhcnQ6YVs0XXx8KGFbNF09bD0+e3IoInN3aXBlU3RhcnQiLGwpLGwuZGVmYXVsdFByZXZlbnRlZHx8bC5jdXJyZW50VGFyZ2V0LnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZSIsInN0YXJ0Iil9KSxvblN3aXBlTW92ZTphWzVdfHwoYVs1XT1sPT57aWYocigic3dpcGVNb3ZlIixsKSwhbC5kZWZhdWx0UHJldmVudGVkKXtjb25zdHt4OnUseTpjfT1sLmRldGFpbC5kZWx0YSxmPWwuY3VycmVudFRhcmdldDtmLnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZSIsIm1vdmUiKSxmLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS14IixgJHt1fXB4YCksZi5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteSIsYCR7Y31weGApfX0pLG9uU3dpcGVDYW5jZWw6YVs2XXx8KGFbNl09bD0+e2lmKHIoInN3aXBlQ2FuY2VsIixsKSwhbC5kZWZhdWx0UHJldmVudGVkKXtjb25zdCB1PWwuY3VycmVudFRhcmdldDt1LnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZSIsImNhbmNlbCIpLHUuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgiKSx1LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15IiksdS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLWVuZC14IiksdS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLWVuZC15Iil9fSksb25Td2lwZUVuZDphWzddfHwoYVs3XT1sPT57aWYocigic3dpcGVFbmQiLGwpLCFsLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0e3g6dSx5OmN9PWwuZGV0YWlsLmRlbHRhLGY9bC5jdXJyZW50VGFyZ2V0O2Yuc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwiZW5kIiksZi5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yZWthLXRvYXN0LXN3aXBlLW1vdmUteCIpLGYuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXkiKSxmLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXgiLGAke3V9cHhgKSxmLnN0eWxlLnNldFByb3BlcnR5KCItLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXkiLGAke2N9cHhgKSxzLnZhbHVlPSExfX0pfSkse2RlZmF1bHQ6TSgoe3JlbWFpbmluZzpsLGR1cmF0aW9uOnV9KT0+W1UoaS4kc2xvdHMsImRlZmF1bHQiLHtyZW1haW5pbmc6bCxkdXJhdGlvbjp1LG9wZW46ZyhzKX0pXSksXzozfSwxNixbIm9wZW4iLCJ0eXBlIiwiYXMiLCJhcy1jaGlsZCIsImR1cmF0aW9uIl0pXSksXzozfSw4LFsicHJlc2VudCJdKSl9fSksZUQ9Wk4sdEQ9c2Uoe19fbmFtZToiVG9hc3RUaXRsZSIscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtyZXR1cm4gVWUoKSwobixyKT0+KFIoKSwkKGcoTWUpLHh0KE10KHQpKSx7ZGVmYXVsdDpNKCgpPT5bVShuLiRzbG90cywiZGVmYXVsdCIpXSksXzozfSwxNikpfX0pLG5EPXRELHJEPXNlKHtfX25hbWU6IkZvY3VzUHJveHkiLGVtaXRzOlsiZm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj10LHI9V2woKTtyZXR1cm4obyxzKT0+KFIoKSwkKGcoVmkpLHt0YWJpbmRleDoiMCIsc3R5bGU6e3Bvc2l0aW9uOiJmaXhlZCJ9LG9uRm9jdXM6c1swXXx8KHNbMF09aT0+e2NvbnN0IGE9aS5yZWxhdGVkVGFyZ2V0OyFnKHIpLnZpZXdwb3J0LnZhbHVlPy5jb250YWlucyhhKSYmbigiZm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0Iil9KX0se2RlZmF1bHQ6TSgoKT0+W1Uoby4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30pKX19KSxpaD1yRCxvRD1zZSh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZToiVG9hc3RWaWV3cG9ydCIscHJvcHM6e2hvdGtleTp7dHlwZTpBcnJheSxyZXF1aXJlZDohMSxkZWZhdWx0OigpPT5bIkY4Il19LGxhYmVsOnt0eXBlOltTdHJpbmcsRnVuY3Rpb25dLHJlcXVpcmVkOiExLGRlZmF1bHQ6Ik5vdGlmaWNhdGlvbnMgKHtob3RrZXl9KSJ9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJvbCJ9fSxzZXR1cChlKXtjb25zdCB0PWUse2hvdGtleTpuLGxhYmVsOnJ9PUVuKHQpLHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6c309VWUoKSx7Q29sbGVjdGlvblNsb3Q6aSxnZXRJdGVtczphfT1tbygpLGw9V2woKSx1PU4oKCk9PmwudG9hc3RDb3VudC52YWx1ZT4wKSxjPUcoKSxmPUcoKSxkPS9LZXkvZyxwPS9EaWdpdC9nLG09TigoKT0+bi52YWx1ZS5qb2luKCIrIikucmVwbGFjZShkLCIiKS5yZXBsYWNlKHAsIiIpKTtvZChuLnZhbHVlLCgpPT57cy52YWx1ZS5mb2N1cygpfSksb3QoKCk9PntsLm9uVmlld3BvcnRDaGFuZ2Uocy52YWx1ZSl9KSxvbihfPT57Y29uc3Qgdz1zLnZhbHVlO2lmKHUudmFsdWUmJncpe2NvbnN0IHY9KCk9PntpZighbC5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlKXtjb25zdCBrPW5ldyBDdXN0b21FdmVudChXdSk7dy5kaXNwYXRjaEV2ZW50KGspLGwuaXNDbG9zZVBhdXNlZFJlZi52YWx1ZT0hMH19LGg9KCk9PntpZihsLmlzQ2xvc2VQYXVzZWRSZWYudmFsdWUpe2NvbnN0IGs9bmV3IEN1c3RvbUV2ZW50KEd1KTt3LmRpc3BhdGNoRXZlbnQoayksbC5pc0Nsb3NlUGF1c2VkUmVmLnZhbHVlPSExfX0sYj1rPT57IXcuY29udGFpbnMoay5yZWxhdGVkVGFyZ2V0KSYmaCgpfSx4PSgpPT57dy5jb250YWlucyhybigpKXx8aCgpfSxTPWs9Pntjb25zdCBUPWsuYWx0S2V5fHxrLmN0cmxLZXl8fGsubWV0YUtleTtpZihrLmtleT09PSJUYWIiJiYhVCl7Y29uc3QgUD1ybigpLEY9ay5zaGlmdEtleTtpZihrLnRhcmdldD09PXcmJkYpe2MudmFsdWU/LmZvY3VzKCk7cmV0dXJufWNvbnN0IEw9eSh7dGFiYmluZ0RpcmVjdGlvbjpGPyJiYWNrd2FyZHMiOiJmb3J3YXJkcyJ9KSxqPUwuZmluZEluZGV4KEk9Pkk9PT1QKTtOYShMLnNsaWNlKGorMSkpP2sucHJldmVudERlZmF1bHQoKTpGP2MudmFsdWU/LmZvY3VzKCk6Zi52YWx1ZT8uZm9jdXMoKX19O3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdiksdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsYiksdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdiksdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHgpLHcuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsUyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHYpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsaCksXygoKT0+e3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsYiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHgpLHcucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsUyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsaCl9KX19KTtmdW5jdGlvbiB5KHt0YWJiaW5nRGlyZWN0aW9uOl99KXtjb25zdCB2PWEoKS5tYXAoaD0+aC5yZWYpLm1hcChoPT57Y29uc3QgYj1baCwuLi5hZChoKV07cmV0dXJuIF89PT0iZm9yd2FyZHMiP2I6Yi5yZXZlcnNlKCl9KTtyZXR1cm4oXz09PSJmb3J3YXJkcyI/di5yZXZlcnNlKCk6dikuZmxhdCgpfXJldHVybihfLHcpPT4oUigpLCQoZyhxSSkse3JvbGU6InJlZ2lvbiIsImFyaWEtbGFiZWwiOnR5cGVvZiBnKHIpPT0ic3RyaW5nIj9nKHIpLnJlcGxhY2UoIntob3RrZXl9IixtLnZhbHVlKTpnKHIpKG0udmFsdWUpLHRhYmluZGV4OiItMSIsc3R5bGU6Um4oe3BvaW50ZXJFdmVudHM6dS52YWx1ZT92b2lkIDA6Im5vbmUifSl9LHtkZWZhdWx0Ok0oKCk9Plt1LnZhbHVlPyhSKCksJChpaCx7a2V5OjAscmVmOnY9Pnt2JiYoYy52YWx1ZT1nKEF0KSh2KSl9LG9uRm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0OndbMF18fCh3WzBdPSgpPT57Y29uc3Qgdj15KHt0YWJiaW5nRGlyZWN0aW9uOiJmb3J3YXJkcyJ9KTtnKE5hKSh2KX0pfSxudWxsLDUxMikpOmRlKCJ2LWlmIiwhMCkscmUoZyhpKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKE1lKSxmZSh7cmVmOmcobyksdGFiaW5kZXg6Ii0xIixhczpfLmFzLCJhcy1jaGlsZCI6Xy5hc0NoaWxkfSxfLiRhdHRycykse2RlZmF1bHQ6TSgoKT0+W1UoXy4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJhcyIsImFzLWNoaWxkIl0pXSksXzozfSksdS52YWx1ZT8oUigpLCQoaWgse2tleToxLHJlZjp2PT57diYmKGYudmFsdWU9ZyhBdCkodikpfSxvbkZvY3VzRnJvbU91dHNpZGVWaWV3cG9ydDp3WzFdfHwod1sxXT0oKT0+e2NvbnN0IHY9eSh7dGFiYmluZ0RpcmVjdGlvbjoiYmFja3dhcmRzIn0pO2coTmEpKHYpfSl9LG51bGwsNTEyKSk6ZGUoInYtaWYiLCEwKV0pLF86M30sOCxbImFyaWEtbGFiZWwiLCJzdHlsZSJdKSl9fSksc0Q9b0Q7Y29uc3RbQnEsaURdPWduKCJUb29sdGlwUHJvdmlkZXIiKTt2YXIgYUQ9c2Uoe2luaGVyaXRBdHRyczohMSxfX25hbWU6IlRvb2x0aXBQcm92aWRlciIscHJvcHM6e2RlbGF5RHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6NzAwfSxza2lwRGVsYXlEdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozMDB9LGRpc2FibGVIb3ZlcmFibGVDb250ZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlnbm9yZU5vbktleWJvYXJkRm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjb250ZW50Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSx7ZGVsYXlEdXJhdGlvbjpuLHNraXBEZWxheUR1cmF0aW9uOnIsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6byxkaXNhYmxlQ2xvc2luZ1RyaWdnZXI6cyxpZ25vcmVOb25LZXlib2FyZEZvY3VzOmksZGlzYWJsZWQ6YSxjb250ZW50Omx9PUVuKHQpO1VlKCk7Y29uc3QgdT1HKCEwKSxjPUcoITEpLHtzdGFydDpmLHN0b3A6ZH09bmQoKCk9Pnt1LnZhbHVlPSEwfSxyLHtpbW1lZGlhdGU6ITF9KTtyZXR1cm4gaUQoe2lzT3BlbkRlbGF5ZWQ6dSxkZWxheUR1cmF0aW9uOm4sb25PcGVuKCl7ZCgpLHUudmFsdWU9ITF9LG9uQ2xvc2UoKXtmKCl9LGlzUG9pbnRlckluVHJhbnNpdFJlZjpjLGRpc2FibGVIb3ZlcmFibGVDb250ZW50Om8sZGlzYWJsZUNsb3NpbmdUcmlnZ2VyOnMsZGlzYWJsZWQ6YSxpZ25vcmVOb25LZXlib2FyZEZvY3VzOmksY29udGVudDpsfSksKHAsbSk9PlUocC4kc2xvdHMsImRlZmF1bHQiKX19KSxsRD1hRDtjb25zdCBfbj17X19uYW1lOiJVSWNvbiIscHJvcHM6e25hbWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sbW9kZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxjdXN0b21pemU6e3R5cGU6W0Z1bmN0aW9uLEJvb2xlYW4sbnVsbF0scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCBuPXBvKFZyKGUsIm1vZGUiLCJzaXplIiwiY3VzdG9taXplIikpO3JldHVybihyLG8pPT57Y29uc3Qgcz1GYjtyZXR1cm4gdHlwZW9mIGUubmFtZT09InN0cmluZyI/KFIoKSwkKHMsZmUoe2tleTowLG5hbWU6ZS5uYW1lfSxnKG4pKSxudWxsLDE2LFsibmFtZSJdKSk6KFIoKSwkKEZuKGUubmFtZSkse2tleToxfSkpfX19O2Z1bmN0aW9uIGNEKGUsdCl7Y29uc3Qgbj1LdShlKSxyPUt1KHQpO3JldHVybiBSMChuLHIpfWZ1bmN0aW9uIFIwKGUsdCl7Y29uc3Qgbj1bXSxyPW5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGUucHJvcHN8fHt9KSwuLi5PYmplY3Qua2V5cyh0LnByb3BzfHx7fSldKTtpZihlLnByb3BzJiZ0LnByb3BzKWZvcihjb25zdCBvIG9mIHIpe2NvbnN0IHM9ZS5wcm9wc1tvXSxpPXQucHJvcHNbb107cyYmaT9uLnB1c2goLi4uUjAoZS5wcm9wcz8uW29dLHQucHJvcHM/LltvXSkpOihzfHxpKSYmbi5wdXNoKG5ldyBhaCgoaXx8cykua2V5LHM/InJlbW92ZWQiOiJhZGRlZCIsaSxzKSl9cmV0dXJuIHIuc2l6ZT09PTAmJmUuaGFzaCE9PXQuaGFzaCYmbi5wdXNoKG5ldyBhaCgodHx8ZSkua2V5LCJjaGFuZ2VkIix0LGUpKSxufWZ1bmN0aW9uIEt1KGUsdD0iIil7aWYoZSYmdHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiBuZXcgbGgodCxlLFlhKGUpKTtjb25zdCBuPXt9LHI9W107Zm9yKGNvbnN0IG8gaW4gZSluW29dPUt1KGVbb10sdD9gJHt0fS4ke299YDpvKSxyLnB1c2gobltvXS5oYXNoKTtyZXR1cm4gbmV3IGxoKHQsZSxgeyR7ci5qb2luKCI6Iil9fWAsbil9Y2xhc3MgYWh7Y29uc3RydWN0b3IodCxuLHIsbyl7dGhpcy5rZXk9dCx0aGlzLnR5cGU9bix0aGlzLm5ld1ZhbHVlPXIsdGhpcy5vbGRWYWx1ZT1vfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudG9KU09OKCl9dG9KU09OKCl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJhZGRlZCI6cmV0dXJuYEFkZGVkICAgXGAke3RoaXMua2V5fVxgYDtjYXNlInJlbW92ZWQiOnJldHVybmBSZW1vdmVkIFxgJHt0aGlzLmtleX1cYGA7Y2FzZSJjaGFuZ2VkIjpyZXR1cm5gQ2hhbmdlZCBcYCR7dGhpcy5rZXl9XGAgZnJvbSBcYCR7dGhpcy5vbGRWYWx1ZT8udG9TdHJpbmcoKXx8Ii0ifVxgIHRvIFxgJHt0aGlzLm5ld1ZhbHVlLnRvU3RyaW5nKCl9XGBgfX19Y2xhc3MgbGh7Y29uc3RydWN0b3IodCxuLHIsbyl7dGhpcy5rZXk9dCx0aGlzLnZhbHVlPW4sdGhpcy5oYXNoPXIsdGhpcy5wcm9wcz1vfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJvcHM/YHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oIiwiKX19YDpKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKX10b0pTT04oKXtjb25zdCB0PXRoaXMua2V5fHwiLiI7cmV0dXJuIHRoaXMucHJvcHM/YCR7dH0oeyR7T2JqZWN0LmtleXModGhpcy5wcm9wcykuam9pbigiLCIpfX0pYDpgJHt0fSgke3RoaXMudmFsdWV9KWB9fWZ1bmN0aW9uIHFxKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBvZiB0KW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBOMChlLHQpe2NvbnN0IG49ey4uLmV9O2Zvcihjb25zdCByIG9mIHQpZGVsZXRlIG5bcl07cmV0dXJuIG59ZnVuY3Rpb24gd24oZSx0LG4pe3R5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9dC5zcGxpdCgiLiIpLm1hcChvPT57Y29uc3Qgcz1OdW1iZXIobyk7cmV0dXJuIE51bWJlci5pc05hTihzKT9vOnN9KSk7bGV0IHI9ZTtmb3IoY29uc3QgbyBvZiB0KXtpZihyPT1udWxsKXJldHVybiBuO3I9cltvXX1yZXR1cm4gciE9PXZvaWQgMD9yOm59ZnVuY3Rpb24geWQoZSl7Y29uc3QgdD1OdW1iZXIucGFyc2VGbG9hdChlKTtyZXR1cm4gTnVtYmVyLmlzTmFOKHQpP2U6dH1mdW5jdGlvbiB1RChlLHQsbil7cmV0dXJuIGU9PT12b2lkIDB8fHQ9PT12b2lkIDA/ITE6dHlwZW9mIGU9PSJzdHJpbmciP2U9PT10OnR5cGVvZiBuPT0iZnVuY3Rpb24iP24oZSx0KTp0eXBlb2Ygbj09InN0cmluZyI/d24oZSxuKT09PXduKHQsbik6SWwoZSx0KX1mdW5jdGlvbiBjaChlKXtpZihlPT1udWxsKXJldHVybiEwO2lmKHR5cGVvZiBlPT0iYm9vbGVhbiJ8fHR5cGVvZiBlPT0ibnVtYmVyIilyZXR1cm4hMTtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGUudHJpbSgpLmxlbmd0aD09PTA7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5sZW5ndGg9PT0wO2lmKGUgaW5zdGFuY2VvZiBNYXB8fGUgaW5zdGFuY2VvZiBTZXQpcmV0dXJuIGUuc2l6ZT09PTA7aWYoZSBpbnN0YW5jZW9mIERhdGV8fGUgaW5zdGFuY2VvZiBSZWdFeHB8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKXJldHVybiExO2lmKHR5cGVvZiBlPT0ib2JqZWN0Iil7Zm9yKGNvbnN0IHQgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB1aChlLHQsbj17fSl7Y29uc3R7dmFsdWVLZXk6cixsYWJlbEtleTpvLGJ5OnN9PW4saT1lLmZpbmQobD0+e2NvbnN0IHU9dHlwZW9mIGw9PSJvYmplY3QiJiZsIT09bnVsbCYmcj93bihsLHIpOmw7cmV0dXJuIHVEKHUsdCxzKX0pO2lmKGNoKHQpJiZpKXJldHVybiBvP3duKGksbyk6dm9pZCAwO2lmKGNoKHQpKXJldHVybjtjb25zdCBhPWk/P3Q7aWYoYSE9bnVsbClyZXR1cm4gdHlwZW9mIGE9PSJvYmplY3QiP28/d24oYSxvKTp2b2lkIDA6U3RyaW5nKGEpfWZ1bmN0aW9uIGZEKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGVbMF0pfWZ1bmN0aW9uIHJsKGUsdCl7cmV0dXJuIWUmJiF0PyIiOlsuLi5BcnJheS5pc0FycmF5KGUpP2U6W2VdLHRdLmZpbHRlcihCb29sZWFuKX1mdW5jdGlvbiBmaChlKXtyZXR1cm4gZS5tYXAodD0+e2lmKCF0LmNoaWxkcmVufHx0eXBlb2YgdC5jaGlsZHJlbj09InN0cmluZyIpcmV0dXJuIHQuY2hpbGRyZW58fCIiO2lmKEFycmF5LmlzQXJyYXkodC5jaGlsZHJlbikpcmV0dXJuIGZoKHQuY2hpbGRyZW4pO2lmKHQuY2hpbGRyZW4uZGVmYXVsdClyZXR1cm4gZmgodC5jaGlsZHJlbi5kZWZhdWx0KCkpfSkuam9pbigiIil9ZnVuY3Rpb24gRnEoZSx0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkucmVkdWNlKChuLFtyLG9dKT0+KG5bcl09dHlwZW9mIG89PSJmdW5jdGlvbiI/byh7Y2xhc3M6dD8uW3JdfSk6byxuKSx7Li4udHx8e319KX1jb25zdFtkRF09Z24oIlVUaGVtZSIsIlJvb3RDb250ZXh0Iik7ZnVuY3Rpb24gTG4oZSx0KXtjb25zdHt1aTpufT1kRCh7dWk6TigoKT0+KHt9KSl9KTtyZXR1cm4gTigoKT0+e2NvbnN0IHI9d24obi52YWx1ZSxlKXx8e307cmV0dXJuIG1uKHQudWk/P3t9LHIpfSl9Y29uc3QgZGg9U3ltYm9sKCJudXh0LXVpLmF2YXRhci1ncm91cCIpO2Z1bmN0aW9uIEQwKGUpe2NvbnN0IHQ9S2UoZGgsdm9pZCAwKSxuPU4oKCk9PmUuc2l6ZT8/dD8udmFsdWUuc2l6ZSk7cmV0dXJuIE50KGRoLE4oKCk9Pih7c2l6ZTpuLnZhbHVlfSkpKSx7c2l6ZTpufX12YXIgcEQ9L1xzKy9nLG1EPWU9PnR5cGVvZiBlIT0ic3RyaW5nInx8IWU/ZTplLnJlcGxhY2UocEQsIiAiKS50cmltKCksb2w9KC4uLmUpPT57Y29uc3QgdD1bXSxuPXI9PntpZighciYmciE9PTAmJnIhPT0wbilyZXR1cm47aWYoQXJyYXkuaXNBcnJheShyKSl7Zm9yKGxldCBzPTAsaT1yLmxlbmd0aDtzPGk7cysrKW4ocltzXSk7cmV0dXJufWNvbnN0IG89dHlwZW9mIHI7aWYobz09PSJzdHJpbmcifHxvPT09Im51bWJlciJ8fG89PT0iYmlnaW50Iil7aWYobz09PSJudW1iZXIiJiZyIT09cilyZXR1cm47dC5wdXNoKFN0cmluZyhyKSl9ZWxzZSBpZihvPT09Im9iamVjdCIpe2NvbnN0IHM9T2JqZWN0LmtleXMocik7Zm9yKGxldCBpPTAsYT1zLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBsPXNbaV07cltsXSYmdC5wdXNoKGwpfX19O2ZvcihsZXQgcj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7Y29uc3Qgcz1lW3JdO3MhPW51bGwmJm4ocyl9cmV0dXJuIHQubGVuZ3RoPjA/bUQodC5qb2luKCIgIikpOnZvaWQgMH0scGg9ZT0+ZT09PSExPyJmYWxzZSI6ZT09PSEwPyJ0cnVlIjplPT09MD8iMCI6ZSxjbj1lPT57aWYoIWV8fHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm4hMDtmb3IoY29uc3QgdCBpbiBlKXJldHVybiExO3JldHVybiEwfSxoRD0oZSx0KT0+e2lmKGU9PT10KXJldHVybiEwO2lmKCFlfHwhdClyZXR1cm4hMTtjb25zdCBuPU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3Qgcz1uW29dO2lmKCFyLmluY2x1ZGVzKHMpfHxlW3NdIT09dFtzXSlyZXR1cm4hMX1yZXR1cm4hMH0sZ0Q9KGUsdCk9Pntmb3IoY29uc3QgbiBpbiB0KWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pKXtjb25zdCByPXRbbl07biBpbiBlP2Vbbl09b2woZVtuXSxyKTplW25dPXJ9cmV0dXJuIGV9LEwwPShlLHQpPT57Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZVtuXTtBcnJheS5pc0FycmF5KHIpP0wwKHIsdCk6ciYmdC5wdXNoKHIpfX0sJDA9KC4uLmUpPT57Y29uc3QgdD1bXTtMMChlLHQpO2NvbnN0IG49W107Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXSYmbi5wdXNoKHRbcl0pO3JldHVybiBufSxRdT0oZSx0KT0+e2NvbnN0IG49e307Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdO2lmKHIgaW4gdCl7Y29uc3Qgcz10W3JdO0FycmF5LmlzQXJyYXkobyl8fEFycmF5LmlzQXJyYXkocyk/bltyXT0kMChzLG8pOnR5cGVvZiBvPT0ib2JqZWN0IiYmdHlwZW9mIHM9PSJvYmplY3QiJiZvJiZzP25bcl09UXUobyxzKTpuW3JdPXMrIiAiK299ZWxzZSBuW3JdPW99Zm9yKGNvbnN0IHIgaW4gdClyIGluIGV8fChuW3JdPXRbcl0pO3JldHVybiBufSx5RD17dHdNZXJnZTohMCx0d01lcmdlQ29uZmlnOnt9fTtmdW5jdGlvbiB2RCgpe2xldCBlPW51bGwsdD17fSxuPSExO3JldHVybntnZXQgY2FjaGVkVHdNZXJnZSgpe3JldHVybiBlfSxzZXQgY2FjaGVkVHdNZXJnZShyKXtlPXJ9LGdldCBjYWNoZWRUd01lcmdlQ29uZmlnKCl7cmV0dXJuIHR9LHNldCBjYWNoZWRUd01lcmdlQ29uZmlnKHIpe3Q9cn0sZ2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2UoKXtyZXR1cm4gbn0sc2V0IGRpZFR3TWVyZ2VDb25maWdDaGFuZ2Uocil7bj1yfSxyZXNldCgpe2U9bnVsbCx0PXt9LG49ITF9fX12YXIgQXI9dkQoKSxiRD1lPT57Y29uc3QgdD0ocixvKT0+e2NvbnN0e2V4dGVuZDpzPW51bGwsc2xvdHM6aT17fSx2YXJpYW50czphPXt9LGNvbXBvdW5kVmFyaWFudHM6bD1bXSxjb21wb3VuZFNsb3RzOnU9W10sZGVmYXVsdFZhcmlhbnRzOmM9e319PXIsZj17Li4ueUQsLi4ub30sZD1zPy5iYXNlP29sKHMuYmFzZSxyPy5iYXNlKTpyPy5iYXNlLHA9cz8udmFyaWFudHMmJiFjbihzLnZhcmlhbnRzKT9RdShhLHMudmFyaWFudHMpOmEsbT1zPy5kZWZhdWx0VmFyaWFudHMmJiFjbihzLmRlZmF1bHRWYXJpYW50cyk/ey4uLnMuZGVmYXVsdFZhcmlhbnRzLC4uLmN9OmM7IWNuKGYudHdNZXJnZUNvbmZpZykmJiFoRChmLnR3TWVyZ2VDb25maWcsQXIuY2FjaGVkVHdNZXJnZUNvbmZpZykmJihBci5kaWRUd01lcmdlQ29uZmlnQ2hhbmdlPSEwLEFyLmNhY2hlZFR3TWVyZ2VDb25maWc9Zi50d01lcmdlQ29uZmlnKTtjb25zdCB5PWNuKHM/LnNsb3RzKSxfPWNuKGkpP3t9OntiYXNlOm9sKHI/LmJhc2UseSYmcz8uYmFzZSksLi4uaX0sdz15P186Z0Qoey4uLnM/LnNsb3RzfSxjbihfKT97YmFzZTpyPy5iYXNlfTpfKSx2PWNuKHM/LmNvbXBvdW5kVmFyaWFudHMpP2w6JDAocz8uY29tcG91bmRWYXJpYW50cyxsKSxoPXg9PntpZihjbihwKSYmY24oaSkmJnkpcmV0dXJuIGUoZCx4Py5jbGFzcyx4Py5jbGFzc05hbWUpKGYpO2lmKHYmJiFBcnJheS5pc0FycmF5KHYpKXRocm93IG5ldyBUeXBlRXJyb3IoYFRoZSAiY29tcG91bmRWYXJpYW50cyIgcHJvcCBtdXN0IGJlIGFuIGFycmF5LiBSZWNlaXZlZDogJHt0eXBlb2Ygdn1gKTtpZih1JiYhQXJyYXkuaXNBcnJheSh1KSl0aHJvdyBuZXcgVHlwZUVycm9yKGBUaGUgImNvbXBvdW5kU2xvdHMiIHByb3AgbXVzdCBiZSBhbiBhcnJheS4gUmVjZWl2ZWQ6ICR7dHlwZW9mIHV9YCk7Y29uc3QgUz0oTCxqPXAsST1udWxsLFY9bnVsbCk9Pntjb25zdCBCPWpbTF07aWYoIUJ8fGNuKEIpKXJldHVybiBudWxsO2NvbnN0IGllPVY/LltMXT8/eD8uW0xdO2lmKGllPT09bnVsbClyZXR1cm4gbnVsbDtjb25zdCBuZT1waChpZSk7aWYodHlwZW9mIG5lPT0ib2JqZWN0IilyZXR1cm4gbnVsbDtjb25zdCBWZT1tPy5bTF0sTmU9bmU/P3BoKFZlKTtyZXR1cm4gQltOZXx8ImZhbHNlIl19LGs9KCk9PntpZighcClyZXR1cm4gbnVsbDtjb25zdCBMPU9iamVjdC5rZXlzKHApLGo9W107Zm9yKGxldCBJPTA7STxMLmxlbmd0aDtJKyspe2NvbnN0IFY9UyhMW0ldLHApO1YmJmoucHVzaChWKX1yZXR1cm4gan0sVD0oTCxqKT0+e2lmKCFwfHx0eXBlb2YgcCE9Im9iamVjdCIpcmV0dXJuIG51bGw7Y29uc3QgST1bXTtmb3IoY29uc3QgViBpbiBwKXtjb25zdCBCPVMoVixwLEwsaiksaWU9TD09PSJiYXNlIiYmdHlwZW9mIEI9PSJzdHJpbmciP0I6QiYmQltMXTtpZSYmSS5wdXNoKGllKX1yZXR1cm4gSX0sQz17fTtmb3IoY29uc3QgTCBpbiB4KXtjb25zdCBqPXhbTF07aiE9PXZvaWQgMCYmKENbTF09ail9Y29uc3QgUD0oTCxqKT0+e2NvbnN0IEk9dHlwZW9mIHg/LltMXT09Im9iamVjdCI/e1tMXTp4W0xdPy5pbml0aWFsfTp7fTtyZXR1cm57Li4ubSwuLi5DLC4uLkksLi4uan19LEY9KEw9W10saik9Pntjb25zdCBJPVtdLFY9TC5sZW5ndGg7Zm9yKGxldCBCPTA7QjxWO0IrKyl7Y29uc3R7Y2xhc3M6aWUsY2xhc3NOYW1lOm5lLC4uLlZlfT1MW0JdO2xldCBOZT0hMDtjb25zdCBldD1QKG51bGwsaik7Zm9yKGNvbnN0IHZlIGluIFZlKXtjb25zdCBJZT1WZVt2ZV0sZWU9ZXRbdmVdO2lmKEFycmF5LmlzQXJyYXkoSWUpKXtpZighSWUuaW5jbHVkZXMoZWUpKXtOZT0hMTticmVha319ZWxzZXtpZigoSWU9PW51bGx8fEllPT09ITEpJiYoZWU9PW51bGx8fGVlPT09ITEpKWNvbnRpbnVlO2lmKGVlIT09SWUpe05lPSExO2JyZWFrfX19TmUmJihpZSYmSS5wdXNoKGllKSxuZSYmSS5wdXNoKG5lKSl9cmV0dXJuIEl9LEQ9TD0+e2NvbnN0IGo9Rih2LEwpO2lmKCFBcnJheS5pc0FycmF5KGopKXJldHVybiBqO2NvbnN0IEk9e30sVj1lO2ZvcihsZXQgQj0wO0I8ai5sZW5ndGg7QisrKXtjb25zdCBpZT1qW0JdO2lmKHR5cGVvZiBpZT09InN0cmluZyIpSS5iYXNlPVYoSS5iYXNlLGllKShmKTtlbHNlIGlmKHR5cGVvZiBpZT09Im9iamVjdCIpZm9yKGNvbnN0IG5lIGluIGllKUlbbmVdPVYoSVtuZV0saWVbbmVdKShmKX1yZXR1cm4gSX0sVz1MPT57aWYodS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtjb25zdCBqPXt9LEk9UChudWxsLEwpO2ZvcihsZXQgVj0wO1Y8dS5sZW5ndGg7VisrKXtjb25zdHtzbG90czpCPVtdLGNsYXNzOmllLGNsYXNzTmFtZTpuZSwuLi5WZX09dVtWXTtpZighY24oVmUpKXtsZXQgTmU9ITA7Zm9yKGNvbnN0IGV0IGluIFZlKXtjb25zdCB2ZT1JW2V0XSxJZT1WZVtldF07aWYodmU9PT12b2lkIDB8fChBcnJheS5pc0FycmF5KEllKT8hSWUuaW5jbHVkZXModmUpOkllIT09dmUpKXtOZT0hMTticmVha319aWYoIU5lKWNvbnRpbnVlfWZvcihsZXQgTmU9MDtOZTxCLmxlbmd0aDtOZSsrKXtjb25zdCBldD1CW05lXTtqW2V0XXx8KGpbZXRdPVtdKSxqW2V0XS5wdXNoKFtpZSxuZV0pfX1yZXR1cm4gan07aWYoIWNuKGkpfHwheSl7Y29uc3QgTD17fTtpZih0eXBlb2Ygdz09Im9iamVjdCImJiFjbih3KSl7Y29uc3Qgaj1lO2Zvcihjb25zdCBJIGluIHcpTFtJXT1WPT57Y29uc3QgQj1EKFYpLGllPVcoVik7cmV0dXJuIGood1tJXSxUKEksViksQj9CW0ldOnZvaWQgMCxpZT9pZVtJXTp2b2lkIDAsVj8uY2xhc3MsVj8uY2xhc3NOYW1lKShmKX19cmV0dXJuIEx9cmV0dXJuIGUoZCxrKCksRih2KSx4Py5jbGFzcyx4Py5jbGFzc05hbWUpKGYpfSxiPSgpPT57aWYoISghcHx8dHlwZW9mIHAhPSJvYmplY3QiKSlyZXR1cm4gT2JqZWN0LmtleXMocCl9O3JldHVybiBoLnZhcmlhbnRLZXlzPWIoKSxoLmV4dGVuZD1zLGguYmFzZT1kLGguc2xvdHM9dyxoLnZhcmlhbnRzPXAsaC5kZWZhdWx0VmFyaWFudHM9bSxoLmNvbXBvdW5kU2xvdHM9dSxoLmNvbXBvdW5kVmFyaWFudHM9dixofTtyZXR1cm57dHY6dCxjcmVhdGVUVjpyPT4obyxzKT0+dChvLHM/UXUocixzKTpyKX19O2NvbnN0IHdEPShlLHQpPT57Y29uc3Qgbj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKW5bcl09ZVtyXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyluW2UubGVuZ3RoK3JdPXRbcl07cmV0dXJuIG59LF9EPShlLHQpPT4oe2NsYXNzR3JvdXBJZDplLHZhbGlkYXRvcjp0fSksTTA9KGU9bmV3IE1hcCx0PW51bGwsbik9Pih7bmV4dFBhcnQ6ZSx2YWxpZGF0b3JzOnQsY2xhc3NHcm91cElkOm59KSxzbD0iLSIsbWg9W10seEQ9ImFyYml0cmFyeS4uIixTRD1lPT57Y29uc3QgdD1FRChlKSx7Y29uZmxpY3RpbmdDbGFzc0dyb3VwczpuLGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczpyfT1lO3JldHVybntnZXRDbGFzc0dyb3VwSWQ6aT0+e2lmKGkuc3RhcnRzV2l0aCgiWyIpJiZpLmVuZHNXaXRoKCJdIikpcmV0dXJuIGtEKGkpO2NvbnN0IGE9aS5zcGxpdChzbCksbD1hWzBdPT09IiImJmEubGVuZ3RoPjE/MTowO3JldHVybiBCMChhLGwsdCl9LGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkczooaSxhKT0+e2lmKGEpe2NvbnN0IGw9cltpXSx1PW5baV07cmV0dXJuIGw/dT93RCh1LGwpOmw6dXx8bWh9cmV0dXJuIG5baV18fG1ofX19LEIwPShlLHQsbik9PntpZihlLmxlbmd0aC10PT09MClyZXR1cm4gbi5jbGFzc0dyb3VwSWQ7Y29uc3Qgbz1lW3RdLHM9bi5uZXh0UGFydC5nZXQobyk7aWYocyl7Y29uc3QgdT1CMChlLHQrMSxzKTtpZih1KXJldHVybiB1fWNvbnN0IGk9bi52YWxpZGF0b3JzO2lmKGk9PT1udWxsKXJldHVybjtjb25zdCBhPXQ9PT0wP2Uuam9pbihzbCk6ZS5zbGljZSh0KS5qb2luKHNsKSxsPWkubGVuZ3RoO2ZvcihsZXQgdT0wO3U8bDt1Kyspe2NvbnN0IGM9aVt1XTtpZihjLnZhbGlkYXRvcihhKSlyZXR1cm4gYy5jbGFzc0dyb3VwSWR9fSxrRD1lPT5lLnNsaWNlKDEsLTEpLmluZGV4T2YoIjoiKT09PS0xP3ZvaWQgMDooKCk9Pntjb25zdCB0PWUuc2xpY2UoMSwtMSksbj10LmluZGV4T2YoIjoiKSxyPXQuc2xpY2UoMCxuKTtyZXR1cm4gcj94RCtyOnZvaWQgMH0pKCksRUQ9ZT0+e2NvbnN0e3RoZW1lOnQsY2xhc3NHcm91cHM6bn09ZTtyZXR1cm4gVEQobix0KX0sVEQ9KGUsdCk9Pntjb25zdCBuPU0wKCk7Zm9yKGNvbnN0IHIgaW4gZSl7Y29uc3Qgbz1lW3JdO3ZkKG8sbixyLHQpfXJldHVybiBufSx2ZD0oZSx0LG4scik9Pntjb25zdCBvPWUubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bztzKyspe2NvbnN0IGk9ZVtzXTtDRChpLHQsbixyKX19LENEPShlLHQsbixyKT0+e2lmKHR5cGVvZiBlPT0ic3RyaW5nIil7QUQoZSx0LG4pO3JldHVybn1pZih0eXBlb2YgZT09ImZ1bmN0aW9uIil7T0QoZSx0LG4scik7cmV0dXJufVBEKGUsdCxuLHIpfSxBRD0oZSx0LG4pPT57Y29uc3Qgcj1lPT09IiI/dDpxMCh0LGUpO3IuY2xhc3NHcm91cElkPW59LE9EPShlLHQsbixyKT0+e2lmKElEKGUpKXt2ZChlKHIpLHQsbixyKTtyZXR1cm59dC52YWxpZGF0b3JzPT09bnVsbCYmKHQudmFsaWRhdG9ycz1bXSksdC52YWxpZGF0b3JzLnB1c2goX0QobixlKSl9LFBEPShlLHQsbixyKT0+e2NvbnN0IG89T2JqZWN0LmVudHJpZXMoZSkscz1vLmxlbmd0aDtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdFthLGxdPW9baV07dmQobCxxMCh0LGEpLG4scil9fSxxMD0oZSx0KT0+e2xldCBuPWU7Y29uc3Qgcj10LnNwbGl0KHNsKSxvPXIubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bztzKyspe2NvbnN0IGk9cltzXTtsZXQgYT1uLm5leHRQYXJ0LmdldChpKTthfHwoYT1NMCgpLG4ubmV4dFBhcnQuc2V0KGksYSkpLG49YX1yZXR1cm4gbn0sSUQ9ZT0+ImlzVGhlbWVHZXR0ZXIiaW4gZSYmZS5pc1RoZW1lR2V0dGVyPT09ITAsUkQ9ZT0+e2lmKGU8MSlyZXR1cm57Z2V0OigpPT57fSxzZXQ6KCk9Pnt9fTtsZXQgdD0wLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPU9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3Qgbz0ocyxpKT0+e25bc109aSx0KyssdD5lJiYodD0wLHI9bixuPU9iamVjdC5jcmVhdGUobnVsbCkpfTtyZXR1cm57Z2V0KHMpe2xldCBpPW5bc107aWYoaSE9PXZvaWQgMClyZXR1cm4gaTtpZigoaT1yW3NdKSE9PXZvaWQgMClyZXR1cm4gbyhzLGkpLGl9LHNldChzLGkpe3MgaW4gbj9uW3NdPWk6byhzLGkpfX19LFl1PSIhIixoaD0iOiIsTkQ9W10sZ2g9KGUsdCxuLHIsbyk9Pih7bW9kaWZpZXJzOmUsaGFzSW1wb3J0YW50TW9kaWZpZXI6dCxiYXNlQ2xhc3NOYW1lOm4sbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjpyLGlzRXh0ZXJuYWw6b30pLEREPWU9Pntjb25zdHtwcmVmaXg6dCxleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZTpufT1lO2xldCByPW89Pntjb25zdCBzPVtdO2xldCBpPTAsYT0wLGw9MCx1O2NvbnN0IGM9by5sZW5ndGg7Zm9yKGxldCB5PTA7eTxjO3krKyl7Y29uc3QgXz1vW3ldO2lmKGk9PT0wJiZhPT09MCl7aWYoXz09PWhoKXtzLnB1c2goby5zbGljZShsLHkpKSxsPXkrMTtjb250aW51ZX1pZihfPT09Ii8iKXt1PXk7Y29udGludWV9fV89PT0iWyI/aSsrOl89PT0iXSI/aS0tOl89PT0iKCI/YSsrOl89PT0iKSImJmEtLX1jb25zdCBmPXMubGVuZ3RoPT09MD9vOm8uc2xpY2UobCk7bGV0IGQ9ZixwPSExO2YuZW5kc1dpdGgoWXUpPyhkPWYuc2xpY2UoMCwtMSkscD0hMCk6Zi5zdGFydHNXaXRoKFl1KSYmKGQ9Zi5zbGljZSgxKSxwPSEwKTtjb25zdCBtPXUmJnU+bD91LWw6dm9pZCAwO3JldHVybiBnaChzLHAsZCxtKX07aWYodCl7Y29uc3Qgbz10K2hoLHM9cjtyPWk9Pmkuc3RhcnRzV2l0aChvKT9zKGkuc2xpY2Uoby5sZW5ndGgpKTpnaChORCwhMSxpLHZvaWQgMCwhMCl9aWYobil7Y29uc3Qgbz1yO3I9cz0+bih7Y2xhc3NOYW1lOnMscGFyc2VDbGFzc05hbWU6b30pfXJldHVybiByfSxMRD1lPT57Y29uc3QgdD1uZXcgTWFwO3JldHVybiBlLm9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzLmZvckVhY2goKG4scik9Pnt0LnNldChuLDFlNityKX0pLG49Pntjb25zdCByPVtdO2xldCBvPVtdO2ZvcihsZXQgcz0wO3M8bi5sZW5ndGg7cysrKXtjb25zdCBpPW5bc10sYT1pWzBdPT09IlsiLGw9dC5oYXMoaSk7YXx8bD8oby5sZW5ndGg+MCYmKG8uc29ydCgpLHIucHVzaCguLi5vKSxvPVtdKSxyLnB1c2goaSkpOm8ucHVzaChpKX1yZXR1cm4gby5sZW5ndGg+MCYmKG8uc29ydCgpLHIucHVzaCguLi5vKSkscn19LCREPWU9Pih7Y2FjaGU6UkQoZS5jYWNoZVNpemUpLHBhcnNlQ2xhc3NOYW1lOkREKGUpLHNvcnRNb2RpZmllcnM6TEQoZSksLi4uU0QoZSl9KSxNRD0vXHMrLyxCRD0oZSx0KT0+e2NvbnN0e3BhcnNlQ2xhc3NOYW1lOm4sZ2V0Q2xhc3NHcm91cElkOnIsZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzOm8sc29ydE1vZGlmaWVyczpzfT10LGk9W10sYT1lLnRyaW0oKS5zcGxpdChNRCk7bGV0IGw9IiI7Zm9yKGxldCB1PWEubGVuZ3RoLTE7dT49MDt1LT0xKXtjb25zdCBjPWFbdV0se2lzRXh0ZXJuYWw6Zixtb2RpZmllcnM6ZCxoYXNJbXBvcnRhbnRNb2RpZmllcjpwLGJhc2VDbGFzc05hbWU6bSxtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uOnl9PW4oYyk7aWYoZil7bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpO2NvbnRpbnVlfWxldCBfPSEheSx3PXIoXz9tLnN1YnN0cmluZygwLHkpOm0pO2lmKCF3KXtpZighXyl7bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpO2NvbnRpbnVlfWlmKHc9cihtKSwhdyl7bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpO2NvbnRpbnVlfV89ITF9Y29uc3Qgdj1kLmxlbmd0aD09PTA/IiI6ZC5sZW5ndGg9PT0xP2RbMF06cyhkKS5qb2luKCI6IiksaD1wP3YrWXU6dixiPWgrdztpZihpLmluZGV4T2YoYik+LTEpY29udGludWU7aS5wdXNoKGIpO2NvbnN0IHg9byh3LF8pO2ZvcihsZXQgUz0wO1M8eC5sZW5ndGg7KytTKXtjb25zdCBrPXhbU107aS5wdXNoKGgrayl9bD1jKyhsLmxlbmd0aD4wPyIgIitsOmwpfXJldHVybiBsfSxxRD0oLi4uZSk9PntsZXQgdD0wLG4scixvPSIiO2Zvcig7dDxlLmxlbmd0aDspKG49ZVt0KytdKSYmKHI9RjAobikpJiYobyYmKG8rPSIgIiksbys9cik7cmV0dXJuIG99LEYwPWU9PntpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7bGV0IHQsbj0iIjtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYodD1GMChlW3JdKSkmJihuJiYobis9IiAiKSxuKz10KTtyZXR1cm4gbn0sSnU9KGUsLi4udCk9PntsZXQgbixyLG8scztjb25zdCBpPWw9Pntjb25zdCB1PXQucmVkdWNlKChjLGYpPT5mKGMpLGUoKSk7cmV0dXJuIG49JEQodSkscj1uLmNhY2hlLmdldCxvPW4uY2FjaGUuc2V0LHM9YSxhKGwpfSxhPWw9Pntjb25zdCB1PXIobCk7aWYodSlyZXR1cm4gdTtjb25zdCBjPUJEKGwsbik7cmV0dXJuIG8obCxjKSxjfTtyZXR1cm4gcz1pLCguLi5sKT0+cyhxRCguLi5sKSl9LEZEPVtdLEl0PWU9Pntjb25zdCB0PW49Pm5bZV18fEZEO3JldHVybiB0LmlzVGhlbWVHZXR0ZXI9ITAsdH0sejA9L15cWyg/Oihcd1tcdy1dKik6KT8oLispXF0kL2ksajA9L15cKCg/Oihcd1tcdy1dKik6KT8oLispXCkkL2ksekQ9L15cZCsoPzpcLlxkKyk/XC9cZCsoPzpcLlxkKyk/JC8sakQ9L14oXGQrKFwuXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLyxWRD0vXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXCguK1wpfF4wJC8sVUQ9L14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpfGNvbG9yLW1peClcKC4rXCkkLyxIRD0vXihpbnNldF8pPy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApXy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApLyxXRD0vXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVwoLitcKSQvLEtyPWU9PnpELnRlc3QoZSksRGU9ZT0+ISFlJiYhTnVtYmVyLmlzTmFOKE51bWJlcihlKSksUXI9ZT0+ISFlJiZOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihlKSksamM9ZT0+ZS5lbmRzV2l0aCgiJSIpJiZEZShlLnNsaWNlKDAsLTEpKSxrcj1lPT5qRC50ZXN0KGUpLFYwPSgpPT4hMCxHRD1lPT5WRC50ZXN0KGUpJiYhVUQudGVzdChlKSxiZD0oKT0+ITEsS0Q9ZT0+SEQudGVzdChlKSxRRD1lPT5XRC50ZXN0KGUpLFlEPWU9PiFnZShlKSYmIXllKGUpLEpEPWU9PmdvKGUsVzAsYmQpLGdlPWU9PnowLnRlc3QoZSksRW89ZT0+Z28oZSxHMCxHRCkseWg9ZT0+Z28oZSxzTCxEZSksWEQ9ZT0+Z28oZSxRMCxWMCksWkQ9ZT0+Z28oZSxLMCxiZCksdmg9ZT0+Z28oZSxVMCxiZCksZUw9ZT0+Z28oZSxIMCxRRCksdmE9ZT0+Z28oZSxZMCxLRCkseWU9ZT0+ajAudGVzdChlKSxRcz1lPT5LbyhlLEcwKSx0TD1lPT5LbyhlLEswKSxiaD1lPT5LbyhlLFUwKSxuTD1lPT5LbyhlLFcwKSxyTD1lPT5LbyhlLEgwKSxiYT1lPT5LbyhlLFkwLCEwKSxvTD1lPT5LbyhlLFEwLCEwKSxnbz0oZSx0LG4pPT57Y29uc3Qgcj16MC5leGVjKGUpO3JldHVybiByP3JbMV0/dChyWzFdKTpuKHJbMl0pOiExfSxLbz0oZSx0LG49ITEpPT57Y29uc3Qgcj1qMC5leGVjKGUpO3JldHVybiByP3JbMV0/dChyWzFdKTpuOiExfSxVMD1lPT5lPT09InBvc2l0aW9uInx8ZT09PSJwZXJjZW50YWdlIixIMD1lPT5lPT09ImltYWdlInx8ZT09PSJ1cmwiLFcwPWU9PmU9PT0ibGVuZ3RoInx8ZT09PSJzaXplInx8ZT09PSJiZy1zaXplIixHMD1lPT5lPT09Imxlbmd0aCIsc0w9ZT0+ZT09PSJudW1iZXIiLEswPWU9PmU9PT0iZmFtaWx5LW5hbWUiLFEwPWU9PmU9PT0ibnVtYmVyInx8ZT09PSJ3ZWlnaHQiLFkwPWU9PmU9PT0ic2hhZG93IixYdT0oKT0+e2NvbnN0IGU9SXQoImNvbG9yIiksdD1JdCgiZm9udCIpLG49SXQoInRleHQiKSxyPUl0KCJmb250LXdlaWdodCIpLG89SXQoInRyYWNraW5nIikscz1JdCgibGVhZGluZyIpLGk9SXQoImJyZWFrcG9pbnQiKSxhPUl0KCJjb250YWluZXIiKSxsPUl0KCJzcGFjaW5nIiksdT1JdCgicmFkaXVzIiksYz1JdCgic2hhZG93IiksZj1JdCgiaW5zZXQtc2hhZG93IiksZD1JdCgidGV4dC1zaGFkb3ciKSxwPUl0KCJkcm9wLXNoYWRvdyIpLG09SXQoImJsdXIiKSx5PUl0KCJwZXJzcGVjdGl2ZSIpLF89SXQoImFzcGVjdCIpLHc9SXQoImVhc2UiKSx2PUl0KCJhbmltYXRlIiksaD0oKT0+WyJhdXRvIiwiYXZvaWQiLCJhbGwiLCJhdm9pZC1wYWdlIiwicGFnZSIsImxlZnQiLCJyaWdodCIsImNvbHVtbiJdLGI9KCk9PlsiY2VudGVyIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwidG9wLWxlZnQiLCJsZWZ0LXRvcCIsInRvcC1yaWdodCIsInJpZ2h0LXRvcCIsImJvdHRvbS1yaWdodCIsInJpZ2h0LWJvdHRvbSIsImJvdHRvbS1sZWZ0IiwibGVmdC1ib3R0b20iXSx4PSgpPT5bLi4uYigpLHllLGdlXSxTPSgpPT5bImF1dG8iLCJoaWRkZW4iLCJjbGlwIiwidmlzaWJsZSIsInNjcm9sbCJdLGs9KCk9PlsiYXV0byIsImNvbnRhaW4iLCJub25lIl0sVD0oKT0+W3llLGdlLGxdLEM9KCk9PltLciwiZnVsbCIsImF1dG8iLC4uLlQoKV0sUD0oKT0+W1FyLCJub25lIiwic3ViZ3JpZCIseWUsZ2VdLEY9KCk9PlsiYXV0byIse3NwYW46WyJmdWxsIixRcix5ZSxnZV19LFFyLHllLGdlXSxEPSgpPT5bUXIsImF1dG8iLHllLGdlXSxXPSgpPT5bImF1dG8iLCJtaW4iLCJtYXgiLCJmciIseWUsZ2VdLEw9KCk9Plsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiZXR3ZWVuIiwiYXJvdW5kIiwiZXZlbmx5Iiwic3RyZXRjaCIsImJhc2VsaW5lIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdLGo9KCk9Plsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJzdHJldGNoIiwiY2VudGVyLXNhZmUiLCJlbmQtc2FmZSJdLEk9KCk9PlsiYXV0byIsLi4uVCgpXSxWPSgpPT5bS3IsImF1dG8iLCJmdWxsIiwiZHZ3IiwiZHZoIiwibHZ3IiwibHZoIiwic3Z3Iiwic3ZoIiwibWluIiwibWF4IiwiZml0IiwuLi5UKCldLEI9KCk9PltLciwic2NyZWVuIiwiZnVsbCIsImR2dyIsImx2dyIsInN2dyIsIm1pbiIsIm1heCIsImZpdCIsLi4uVCgpXSxpZT0oKT0+W0tyLCJzY3JlZW4iLCJmdWxsIiwibGgiLCJkdmgiLCJsdmgiLCJzdmgiLCJtaW4iLCJtYXgiLCJmaXQiLC4uLlQoKV0sbmU9KCk9PltlLHllLGdlXSxWZT0oKT0+Wy4uLmIoKSxiaCx2aCx7cG9zaXRpb246W3llLGdlXX1dLE5lPSgpPT5bIm5vLXJlcGVhdCIse3JlcGVhdDpbIiIsIngiLCJ5Iiwic3BhY2UiLCJyb3VuZCJdfV0sZXQ9KCk9PlsiYXV0byIsImNvdmVyIiwiY29udGFpbiIsbkwsSkQse3NpemU6W3llLGdlXX1dLHZlPSgpPT5bamMsUXMsRW9dLEllPSgpPT5bIiIsIm5vbmUiLCJmdWxsIix1LHllLGdlXSxlZT0oKT0+WyIiLERlLFFzLEVvXSx6PSgpPT5bInNvbGlkIiwiZGFzaGVkIiwiZG90dGVkIiwiZG91YmxlIl0sWT0oKT0+WyJub3JtYWwiLCJtdWx0aXBseSIsInNjcmVlbiIsIm92ZXJsYXkiLCJkYXJrZW4iLCJsaWdodGVuIiwiY29sb3ItZG9kZ2UiLCJjb2xvci1idXJuIiwiaGFyZC1saWdodCIsInNvZnQtbGlnaHQiLCJkaWZmZXJlbmNlIiwiZXhjbHVzaW9uIiwiaHVlIiwic2F0dXJhdGlvbiIsImNvbG9yIiwibHVtaW5vc2l0eSJdLEo9KCk9PltEZSxqYyxiaCx2aF0sbGU9KCk9PlsiIiwibm9uZSIsbSx5ZSxnZV0sd2U9KCk9Plsibm9uZSIsRGUseWUsZ2VdLHRlPSgpPT5bIm5vbmUiLERlLHllLGdlXSxFPSgpPT5bRGUseWUsZ2VdLE89KCk9PltLciwiZnVsbCIsLi4uVCgpXTtyZXR1cm57Y2FjaGVTaXplOjUwMCx0aGVtZTp7YW5pbWF0ZTpbInNwaW4iLCJwaW5nIiwicHVsc2UiLCJib3VuY2UiXSxhc3BlY3Q6WyJ2aWRlbyJdLGJsdXI6W2tyXSxicmVha3BvaW50Oltrcl0sY29sb3I6W1YwXSxjb250YWluZXI6W2tyXSwiZHJvcC1zaGFkb3ciOltrcl0sZWFzZTpbImluIiwib3V0IiwiaW4tb3V0Il0sZm9udDpbWURdLCJmb250LXdlaWdodCI6WyJ0aGluIiwiZXh0cmFsaWdodCIsImxpZ2h0Iiwibm9ybWFsIiwibWVkaXVtIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwiYmxhY2siXSwiaW5zZXQtc2hhZG93Ijpba3JdLGxlYWRpbmc6WyJub25lIiwidGlnaHQiLCJzbnVnIiwibm9ybWFsIiwicmVsYXhlZCIsImxvb3NlIl0scGVyc3BlY3RpdmU6WyJkcmFtYXRpYyIsIm5lYXIiLCJub3JtYWwiLCJtaWRyYW5nZSIsImRpc3RhbnQiLCJub25lIl0scmFkaXVzOltrcl0sc2hhZG93Oltrcl0sc3BhY2luZzpbInB4IixEZV0sdGV4dDpba3JdLCJ0ZXh0LXNoYWRvdyI6W2tyXSx0cmFja2luZzpbInRpZ2h0ZXIiLCJ0aWdodCIsIm5vcm1hbCIsIndpZGUiLCJ3aWRlciIsIndpZGVzdCJdfSxjbGFzc0dyb3Vwczp7YXNwZWN0Olt7YXNwZWN0OlsiYXV0byIsInNxdWFyZSIsS3IsZ2UseWUsX119XSxjb250YWluZXI6WyJjb250YWluZXIiXSxjb2x1bW5zOlt7Y29sdW1uczpbRGUsZ2UseWUsYV19XSwiYnJlYWstYWZ0ZXIiOlt7ImJyZWFrLWFmdGVyIjpoKCl9XSwiYnJlYWstYmVmb3JlIjpbeyJicmVhay1iZWZvcmUiOmgoKX1dLCJicmVhay1pbnNpZGUiOlt7ImJyZWFrLWluc2lkZSI6WyJhdXRvIiwiYXZvaWQiLCJhdm9pZC1wYWdlIiwiYXZvaWQtY29sdW1uIl19XSwiYm94LWRlY29yYXRpb24iOlt7ImJveC1kZWNvcmF0aW9uIjpbInNsaWNlIiwiY2xvbmUiXX1dLGJveDpbe2JveDpbImJvcmRlciIsImNvbnRlbnQiXX1dLGRpc3BsYXk6WyJibG9jayIsImlubGluZS1ibG9jayIsImlubGluZSIsImZsZXgiLCJpbmxpbmUtZmxleCIsInRhYmxlIiwiaW5saW5lLXRhYmxlIiwidGFibGUtY2FwdGlvbiIsInRhYmxlLWNlbGwiLCJ0YWJsZS1jb2x1bW4iLCJ0YWJsZS1jb2x1bW4tZ3JvdXAiLCJ0YWJsZS1mb290ZXItZ3JvdXAiLCJ0YWJsZS1oZWFkZXItZ3JvdXAiLCJ0YWJsZS1yb3ctZ3JvdXAiLCJ0YWJsZS1yb3ciLCJmbG93LXJvb3QiLCJncmlkIiwiaW5saW5lLWdyaWQiLCJjb250ZW50cyIsImxpc3QtaXRlbSIsImhpZGRlbiJdLHNyOlsic3Itb25seSIsIm5vdC1zci1vbmx5Il0sZmxvYXQ6W3tmbG9hdDpbInJpZ2h0IiwibGVmdCIsIm5vbmUiLCJzdGFydCIsImVuZCJdfV0sY2xlYXI6W3tjbGVhcjpbImxlZnQiLCJyaWdodCIsImJvdGgiLCJub25lIiwic3RhcnQiLCJlbmQiXX1dLGlzb2xhdGlvbjpbImlzb2xhdGUiLCJpc29sYXRpb24tYXV0byJdLCJvYmplY3QtZml0Ijpbe29iamVjdDpbImNvbnRhaW4iLCJjb3ZlciIsImZpbGwiLCJub25lIiwic2NhbGUtZG93biJdfV0sIm9iamVjdC1wb3NpdGlvbiI6W3tvYmplY3Q6eCgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzpTKCl9XSwib3ZlcmZsb3cteCI6W3sib3ZlcmZsb3cteCI6UygpfV0sIm92ZXJmbG93LXkiOlt7Im92ZXJmbG93LXkiOlMoKX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOmsoKX1dLCJvdmVyc2Nyb2xsLXgiOlt7Im92ZXJzY3JvbGwteCI6aygpfV0sIm92ZXJzY3JvbGwteSI6W3sib3ZlcnNjcm9sbC15IjprKCl9XSxwb3NpdGlvbjpbInN0YXRpYyIsImZpeGVkIiwiYWJzb2x1dGUiLCJyZWxhdGl2ZSIsInN0aWNreSJdLGluc2V0Olt7aW5zZXQ6QygpfV0sImluc2V0LXgiOlt7Imluc2V0LXgiOkMoKX1dLCJpbnNldC15IjpbeyJpbnNldC15IjpDKCl9XSxzdGFydDpbeyJpbnNldC1zIjpDKCksc3RhcnQ6QygpfV0sZW5kOlt7Imluc2V0LWUiOkMoKSxlbmQ6QygpfV0sImluc2V0LWJzIjpbeyJpbnNldC1icyI6QygpfV0sImluc2V0LWJlIjpbeyJpbnNldC1iZSI6QygpfV0sdG9wOlt7dG9wOkMoKX1dLHJpZ2h0Olt7cmlnaHQ6QygpfV0sYm90dG9tOlt7Ym90dG9tOkMoKX1dLGxlZnQ6W3tsZWZ0OkMoKX1dLHZpc2liaWxpdHk6WyJ2aXNpYmxlIiwiaW52aXNpYmxlIiwiY29sbGFwc2UiXSx6Olt7ejpbUXIsImF1dG8iLHllLGdlXX1dLGJhc2lzOlt7YmFzaXM6W0tyLCJmdWxsIiwiYXV0byIsYSwuLi5UKCldfV0sImZsZXgtZGlyZWN0aW9uIjpbe2ZsZXg6WyJyb3ciLCJyb3ctcmV2ZXJzZSIsImNvbCIsImNvbC1yZXZlcnNlIl19XSwiZmxleC13cmFwIjpbe2ZsZXg6WyJub3dyYXAiLCJ3cmFwIiwid3JhcC1yZXZlcnNlIl19XSxmbGV4Olt7ZmxleDpbRGUsS3IsImF1dG8iLCJpbml0aWFsIiwibm9uZSIsZ2VdfV0sZ3Jvdzpbe2dyb3c6WyIiLERlLHllLGdlXX1dLHNocmluazpbe3NocmluazpbIiIsRGUseWUsZ2VdfV0sb3JkZXI6W3tvcmRlcjpbUXIsImZpcnN0IiwibGFzdCIsIm5vbmUiLHllLGdlXX1dLCJncmlkLWNvbHMiOlt7ImdyaWQtY29scyI6UCgpfV0sImNvbC1zdGFydC1lbmQiOlt7Y29sOkYoKX1dLCJjb2wtc3RhcnQiOlt7ImNvbC1zdGFydCI6RCgpfV0sImNvbC1lbmQiOlt7ImNvbC1lbmQiOkQoKX1dLCJncmlkLXJvd3MiOlt7ImdyaWQtcm93cyI6UCgpfV0sInJvdy1zdGFydC1lbmQiOlt7cm93OkYoKX1dLCJyb3ctc3RhcnQiOlt7InJvdy1zdGFydCI6RCgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOkQoKX1dLCJncmlkLWZsb3ciOlt7ImdyaWQtZmxvdyI6WyJyb3ciLCJjb2wiLCJkZW5zZSIsInJvdy1kZW5zZSIsImNvbC1kZW5zZSJdfV0sImF1dG8tY29scyI6W3siYXV0by1jb2xzIjpXKCl9XSwiYXV0by1yb3dzIjpbeyJhdXRvLXJvd3MiOlcoKX1dLGdhcDpbe2dhcDpUKCl9XSwiZ2FwLXgiOlt7ImdhcC14IjpUKCl9XSwiZ2FwLXkiOlt7ImdhcC15IjpUKCl9XSwianVzdGlmeS1jb250ZW50Ijpbe2p1c3RpZnk6Wy4uLkwoKSwibm9ybWFsIl19XSwianVzdGlmeS1pdGVtcyI6W3sianVzdGlmeS1pdGVtcyI6Wy4uLmooKSwibm9ybWFsIl19XSwianVzdGlmeS1zZWxmIjpbeyJqdXN0aWZ5LXNlbGYiOlsiYXV0byIsLi4uaigpXX1dLCJhbGlnbi1jb250ZW50Ijpbe2NvbnRlbnQ6WyJub3JtYWwiLC4uLkwoKV19XSwiYWxpZ24taXRlbXMiOlt7aXRlbXM6Wy4uLmooKSx7YmFzZWxpbmU6WyIiLCJsYXN0Il19XX1dLCJhbGlnbi1zZWxmIjpbe3NlbGY6WyJhdXRvIiwuLi5qKCkse2Jhc2VsaW5lOlsiIiwibGFzdCJdfV19XSwicGxhY2UtY29udGVudCI6W3sicGxhY2UtY29udGVudCI6TCgpfV0sInBsYWNlLWl0ZW1zIjpbeyJwbGFjZS1pdGVtcyI6Wy4uLmooKSwiYmFzZWxpbmUiXX1dLCJwbGFjZS1zZWxmIjpbeyJwbGFjZS1zZWxmIjpbImF1dG8iLC4uLmooKV19XSxwOlt7cDpUKCl9XSxweDpbe3B4OlQoKX1dLHB5Olt7cHk6VCgpfV0scHM6W3twczpUKCl9XSxwZTpbe3BlOlQoKX1dLHBiczpbe3BiczpUKCl9XSxwYmU6W3twYmU6VCgpfV0scHQ6W3twdDpUKCl9XSxwcjpbe3ByOlQoKX1dLHBiOlt7cGI6VCgpfV0scGw6W3twbDpUKCl9XSxtOlt7bTpJKCl9XSxteDpbe214OkkoKX1dLG15Olt7bXk6SSgpfV0sbXM6W3ttczpJKCl9XSxtZTpbe21lOkkoKX1dLG1iczpbe21iczpJKCl9XSxtYmU6W3ttYmU6SSgpfV0sbXQ6W3ttdDpJKCl9XSxtcjpbe21yOkkoKX1dLG1iOlt7bWI6SSgpfV0sbWw6W3ttbDpJKCl9XSwic3BhY2UteCI6W3sic3BhY2UteCI6VCgpfV0sInNwYWNlLXgtcmV2ZXJzZSI6WyJzcGFjZS14LXJldmVyc2UiXSwic3BhY2UteSI6W3sic3BhY2UteSI6VCgpfV0sInNwYWNlLXktcmV2ZXJzZSI6WyJzcGFjZS15LXJldmVyc2UiXSxzaXplOlt7c2l6ZTpWKCl9XSwiaW5saW5lLXNpemUiOlt7aW5saW5lOlsiYXV0byIsLi4uQigpXX1dLCJtaW4taW5saW5lLXNpemUiOlt7Im1pbi1pbmxpbmUiOlsiYXV0byIsLi4uQigpXX1dLCJtYXgtaW5saW5lLXNpemUiOlt7Im1heC1pbmxpbmUiOlsibm9uZSIsLi4uQigpXX1dLCJibG9jay1zaXplIjpbe2Jsb2NrOlsiYXV0byIsLi4uaWUoKV19XSwibWluLWJsb2NrLXNpemUiOlt7Im1pbi1ibG9jayI6WyJhdXRvIiwuLi5pZSgpXX1dLCJtYXgtYmxvY2stc2l6ZSI6W3sibWF4LWJsb2NrIjpbIm5vbmUiLC4uLmllKCldfV0sdzpbe3c6W2EsInNjcmVlbiIsLi4uVigpXX1dLCJtaW4tdyI6W3sibWluLXciOlthLCJzY3JlZW4iLCJub25lIiwuLi5WKCldfV0sIm1heC13IjpbeyJtYXgtdyI6W2EsInNjcmVlbiIsIm5vbmUiLCJwcm9zZSIse3NjcmVlbjpbaV19LC4uLlYoKV19XSxoOlt7aDpbInNjcmVlbiIsImxoIiwuLi5WKCldfV0sIm1pbi1oIjpbeyJtaW4taCI6WyJzY3JlZW4iLCJsaCIsIm5vbmUiLC4uLlYoKV19XSwibWF4LWgiOlt7Im1heC1oIjpbInNjcmVlbiIsImxoIiwuLi5WKCldfV0sImZvbnQtc2l6ZSI6W3t0ZXh0OlsiYmFzZSIsbixRcyxFb119XSwiZm9udC1zbW9vdGhpbmciOlsiYW50aWFsaWFzZWQiLCJzdWJwaXhlbC1hbnRpYWxpYXNlZCJdLCJmb250LXN0eWxlIjpbIml0YWxpYyIsIm5vdC1pdGFsaWMiXSwiZm9udC13ZWlnaHQiOlt7Zm9udDpbcixvTCxYRF19XSwiZm9udC1zdHJldGNoIjpbeyJmb250LXN0cmV0Y2giOlsidWx0cmEtY29uZGVuc2VkIiwiZXh0cmEtY29uZGVuc2VkIiwiY29uZGVuc2VkIiwic2VtaS1jb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pLWV4cGFuZGVkIiwiZXhwYW5kZWQiLCJleHRyYS1leHBhbmRlZCIsInVsdHJhLWV4cGFuZGVkIixqYyxnZV19XSwiZm9udC1mYW1pbHkiOlt7Zm9udDpbdEwsWkQsdF19XSwiZm9udC1mZWF0dXJlcyI6W3siZm9udC1mZWF0dXJlcyI6W2dlXX1dLCJmdm4tbm9ybWFsIjpbIm5vcm1hbC1udW1zIl0sImZ2bi1vcmRpbmFsIjpbIm9yZGluYWwiXSwiZnZuLXNsYXNoZWQtemVybyI6WyJzbGFzaGVkLXplcm8iXSwiZnZuLWZpZ3VyZSI6WyJsaW5pbmctbnVtcyIsIm9sZHN0eWxlLW51bXMiXSwiZnZuLXNwYWNpbmciOlsicHJvcG9ydGlvbmFsLW51bXMiLCJ0YWJ1bGFyLW51bXMiXSwiZnZuLWZyYWN0aW9uIjpbImRpYWdvbmFsLWZyYWN0aW9ucyIsInN0YWNrZWQtZnJhY3Rpb25zIl0sdHJhY2tpbmc6W3t0cmFja2luZzpbbyx5ZSxnZV19XSwibGluZS1jbGFtcCI6W3sibGluZS1jbGFtcCI6W0RlLCJub25lIix5ZSx5aF19XSxsZWFkaW5nOlt7bGVhZGluZzpbcywuLi5UKCldfV0sImxpc3QtaW1hZ2UiOlt7Imxpc3QtaW1hZ2UiOlsibm9uZSIseWUsZ2VdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbImluc2lkZSIsIm91dHNpZGUiXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbImRpc2MiLCJkZWNpbWFsIiwibm9uZSIseWUsZ2VdfV0sInRleHQtYWxpZ25tZW50Ijpbe3RleHQ6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiLCJqdXN0aWZ5Iiwic3RhcnQiLCJlbmQiXX1dLCJwbGFjZWhvbGRlci1jb2xvciI6W3twbGFjZWhvbGRlcjpuZSgpfV0sInRleHQtY29sb3IiOlt7dGV4dDpuZSgpfV0sInRleHQtZGVjb3JhdGlvbiI6WyJ1bmRlcmxpbmUiLCJvdmVybGluZSIsImxpbmUtdGhyb3VnaCIsIm5vLXVuZGVybGluZSJdLCJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiOlt7ZGVjb3JhdGlvbjpbLi4ueigpLCJ3YXZ5Il19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltEZSwiZnJvbS1mb250IiwiYXV0byIseWUsRW9dfV0sInRleHQtZGVjb3JhdGlvbi1jb2xvciI6W3tkZWNvcmF0aW9uOm5lKCl9XSwidW5kZXJsaW5lLW9mZnNldCI6W3sidW5kZXJsaW5lLW9mZnNldCI6W0RlLCJhdXRvIix5ZSxnZV19XSwidGV4dC10cmFuc2Zvcm0iOlsidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsIm5vcm1hbC1jYXNlIl0sInRleHQtb3ZlcmZsb3ciOlsidHJ1bmNhdGUiLCJ0ZXh0LWVsbGlwc2lzIiwidGV4dC1jbGlwIl0sInRleHQtd3JhcCI6W3t0ZXh0Olsid3JhcCIsIm5vd3JhcCIsImJhbGFuY2UiLCJwcmV0dHkiXX1dLGluZGVudDpbe2luZGVudDpUKCl9XSwidmVydGljYWwtYWxpZ24iOlt7YWxpZ246WyJiYXNlbGluZSIsInRvcCIsIm1pZGRsZSIsImJvdHRvbSIsInRleHQtdG9wIiwidGV4dC1ib3R0b20iLCJzdWIiLCJzdXBlciIseWUsZ2VdfV0sd2hpdGVzcGFjZTpbe3doaXRlc3BhY2U6WyJub3JtYWwiLCJub3dyYXAiLCJwcmUiLCJwcmUtbGluZSIsInByZS13cmFwIiwiYnJlYWstc3BhY2VzIl19XSxicmVhazpbe2JyZWFrOlsibm9ybWFsIiwid29yZHMiLCJhbGwiLCJrZWVwIl19XSx3cmFwOlt7d3JhcDpbImJyZWFrLXdvcmQiLCJhbnl3aGVyZSIsIm5vcm1hbCJdfV0saHlwaGVuczpbe2h5cGhlbnM6WyJub25lIiwibWFudWFsIiwiYXV0byJdfV0sY29udGVudDpbe2NvbnRlbnQ6WyJub25lIix5ZSxnZV19XSwiYmctYXR0YWNobWVudCI6W3tiZzpbImZpeGVkIiwibG9jYWwiLCJzY3JvbGwiXX1dLCJiZy1jbGlwIjpbeyJiZy1jbGlwIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwidGV4dCJdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50Il19XSwiYmctcG9zaXRpb24iOlt7Ymc6VmUoKX1dLCJiZy1yZXBlYXQiOlt7Ymc6TmUoKX1dLCJiZy1zaXplIjpbe2JnOmV0KCl9XSwiYmctaW1hZ2UiOlt7Ymc6WyJub25lIix7bGluZWFyOlt7dG86WyJ0IiwidHIiLCJyIiwiYnIiLCJiIiwiYmwiLCJsIiwidGwiXX0sUXIseWUsZ2VdLHJhZGlhbDpbIiIseWUsZ2VdLGNvbmljOltRcix5ZSxnZV19LHJMLGVMXX1dLCJiZy1jb2xvciI6W3tiZzpuZSgpfV0sImdyYWRpZW50LWZyb20tcG9zIjpbe2Zyb206dmUoKX1dLCJncmFkaWVudC12aWEtcG9zIjpbe3ZpYTp2ZSgpfV0sImdyYWRpZW50LXRvLXBvcyI6W3t0bzp2ZSgpfV0sImdyYWRpZW50LWZyb20iOlt7ZnJvbTpuZSgpfV0sImdyYWRpZW50LXZpYSI6W3t2aWE6bmUoKX1dLCJncmFkaWVudC10byI6W3t0bzpuZSgpfV0scm91bmRlZDpbe3JvdW5kZWQ6SWUoKX1dLCJyb3VuZGVkLXMiOlt7InJvdW5kZWQtcyI6SWUoKX1dLCJyb3VuZGVkLWUiOlt7InJvdW5kZWQtZSI6SWUoKX1dLCJyb3VuZGVkLXQiOlt7InJvdW5kZWQtdCI6SWUoKX1dLCJyb3VuZGVkLXIiOlt7InJvdW5kZWQtciI6SWUoKX1dLCJyb3VuZGVkLWIiOlt7InJvdW5kZWQtYiI6SWUoKX1dLCJyb3VuZGVkLWwiOlt7InJvdW5kZWQtbCI6SWUoKX1dLCJyb3VuZGVkLXNzIjpbeyJyb3VuZGVkLXNzIjpJZSgpfV0sInJvdW5kZWQtc2UiOlt7InJvdW5kZWQtc2UiOkllKCl9XSwicm91bmRlZC1lZSI6W3sicm91bmRlZC1lZSI6SWUoKX1dLCJyb3VuZGVkLWVzIjpbeyJyb3VuZGVkLWVzIjpJZSgpfV0sInJvdW5kZWQtdGwiOlt7InJvdW5kZWQtdGwiOkllKCl9XSwicm91bmRlZC10ciI6W3sicm91bmRlZC10ciI6SWUoKX1dLCJyb3VuZGVkLWJyIjpbeyJyb3VuZGVkLWJyIjpJZSgpfV0sInJvdW5kZWQtYmwiOlt7InJvdW5kZWQtYmwiOkllKCl9XSwiYm9yZGVyLXciOlt7Ym9yZGVyOmVlKCl9XSwiYm9yZGVyLXcteCI6W3siYm9yZGVyLXgiOmVlKCl9XSwiYm9yZGVyLXcteSI6W3siYm9yZGVyLXkiOmVlKCl9XSwiYm9yZGVyLXctcyI6W3siYm9yZGVyLXMiOmVlKCl9XSwiYm9yZGVyLXctZSI6W3siYm9yZGVyLWUiOmVlKCl9XSwiYm9yZGVyLXctYnMiOlt7ImJvcmRlci1icyI6ZWUoKX1dLCJib3JkZXItdy1iZSI6W3siYm9yZGVyLWJlIjplZSgpfV0sImJvcmRlci13LXQiOlt7ImJvcmRlci10IjplZSgpfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjplZSgpfV0sImJvcmRlci13LWIiOlt7ImJvcmRlci1iIjplZSgpfV0sImJvcmRlci13LWwiOlt7ImJvcmRlci1sIjplZSgpfV0sImRpdmlkZS14IjpbeyJkaXZpZGUteCI6ZWUoKX1dLCJkaXZpZGUteC1yZXZlcnNlIjpbImRpdmlkZS14LXJldmVyc2UiXSwiZGl2aWRlLXkiOlt7ImRpdmlkZS15IjplZSgpfV0sImRpdmlkZS15LXJldmVyc2UiOlsiZGl2aWRlLXktcmV2ZXJzZSJdLCJib3JkZXItc3R5bGUiOlt7Ym9yZGVyOlsuLi56KCksImhpZGRlbiIsIm5vbmUiXX1dLCJkaXZpZGUtc3R5bGUiOlt7ZGl2aWRlOlsuLi56KCksImhpZGRlbiIsIm5vbmUiXX1dLCJib3JkZXItY29sb3IiOlt7Ym9yZGVyOm5lKCl9XSwiYm9yZGVyLWNvbG9yLXgiOlt7ImJvcmRlci14IjpuZSgpfV0sImJvcmRlci1jb2xvci15IjpbeyJib3JkZXIteSI6bmUoKX1dLCJib3JkZXItY29sb3ItcyI6W3siYm9yZGVyLXMiOm5lKCl9XSwiYm9yZGVyLWNvbG9yLWUiOlt7ImJvcmRlci1lIjpuZSgpfV0sImJvcmRlci1jb2xvci1icyI6W3siYm9yZGVyLWJzIjpuZSgpfV0sImJvcmRlci1jb2xvci1iZSI6W3siYm9yZGVyLWJlIjpuZSgpfV0sImJvcmRlci1jb2xvci10IjpbeyJib3JkZXItdCI6bmUoKX1dLCJib3JkZXItY29sb3ItciI6W3siYm9yZGVyLXIiOm5lKCl9XSwiYm9yZGVyLWNvbG9yLWIiOlt7ImJvcmRlci1iIjpuZSgpfV0sImJvcmRlci1jb2xvci1sIjpbeyJib3JkZXItbCI6bmUoKX1dLCJkaXZpZGUtY29sb3IiOlt7ZGl2aWRlOm5lKCl9XSwib3V0bGluZS1zdHlsZSI6W3tvdXRsaW5lOlsuLi56KCksIm5vbmUiLCJoaWRkZW4iXX1dLCJvdXRsaW5lLW9mZnNldCI6W3sib3V0bGluZS1vZmZzZXQiOltEZSx5ZSxnZV19XSwib3V0bGluZS13Ijpbe291dGxpbmU6WyIiLERlLFFzLEVvXX1dLCJvdXRsaW5lLWNvbG9yIjpbe291dGxpbmU6bmUoKX1dLHNoYWRvdzpbe3NoYWRvdzpbIiIsIm5vbmUiLGMsYmEsdmFdfV0sInNoYWRvdy1jb2xvciI6W3tzaGFkb3c6bmUoKX1dLCJpbnNldC1zaGFkb3ciOlt7Imluc2V0LXNoYWRvdyI6WyJub25lIixmLGJhLHZhXX1dLCJpbnNldC1zaGFkb3ctY29sb3IiOlt7Imluc2V0LXNoYWRvdyI6bmUoKX1dLCJyaW5nLXciOlt7cmluZzplZSgpfV0sInJpbmctdy1pbnNldCI6WyJyaW5nLWluc2V0Il0sInJpbmctY29sb3IiOlt7cmluZzpuZSgpfV0sInJpbmctb2Zmc2V0LXciOlt7InJpbmctb2Zmc2V0IjpbRGUsRW9dfV0sInJpbmctb2Zmc2V0LWNvbG9yIjpbeyJyaW5nLW9mZnNldCI6bmUoKX1dLCJpbnNldC1yaW5nLXciOlt7Imluc2V0LXJpbmciOmVlKCl9XSwiaW5zZXQtcmluZy1jb2xvciI6W3siaW5zZXQtcmluZyI6bmUoKX1dLCJ0ZXh0LXNoYWRvdyI6W3sidGV4dC1zaGFkb3ciOlsibm9uZSIsZCxiYSx2YV19XSwidGV4dC1zaGFkb3ctY29sb3IiOlt7InRleHQtc2hhZG93IjpuZSgpfV0sb3BhY2l0eTpbe29wYWNpdHk6W0RlLHllLGdlXX1dLCJtaXgtYmxlbmQiOlt7Im1peC1ibGVuZCI6Wy4uLlkoKSwicGx1cy1kYXJrZXIiLCJwbHVzLWxpZ2h0ZXIiXX1dLCJiZy1ibGVuZCI6W3siYmctYmxlbmQiOlkoKX1dLCJtYXNrLWNsaXAiOlt7Im1hc2stY2xpcCI6WyJib3JkZXIiLCJwYWRkaW5nIiwiY29udGVudCIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Il19LCJtYXNrLW5vLWNsaXAiXSwibWFzay1jb21wb3NpdGUiOlt7bWFzazpbImFkZCIsInN1YnRyYWN0IiwiaW50ZXJzZWN0IiwiZXhjbHVkZSJdfV0sIm1hc2staW1hZ2UtbGluZWFyLXBvcyI6W3sibWFzay1saW5lYXIiOltEZV19XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1wb3MiOlt7Im1hc2stbGluZWFyLWZyb20iOkooKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpKKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6bmUoKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1jb2xvciI6W3sibWFzay1saW5lYXItdG8iOm5lKCl9XSwibWFzay1pbWFnZS10LWZyb20tcG9zIjpbeyJtYXNrLXQtZnJvbSI6SigpfV0sIm1hc2staW1hZ2UtdC10by1wb3MiOlt7Im1hc2stdC10byI6SigpfV0sIm1hc2staW1hZ2UtdC1mcm9tLWNvbG9yIjpbeyJtYXNrLXQtZnJvbSI6bmUoKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6bmUoKX1dLCJtYXNrLWltYWdlLXItZnJvbS1wb3MiOlt7Im1hc2stci1mcm9tIjpKKCl9XSwibWFzay1pbWFnZS1yLXRvLXBvcyI6W3sibWFzay1yLXRvIjpKKCl9XSwibWFzay1pbWFnZS1yLWZyb20tY29sb3IiOlt7Im1hc2stci1mcm9tIjpuZSgpfV0sIm1hc2staW1hZ2Utci10by1jb2xvciI6W3sibWFzay1yLXRvIjpuZSgpfV0sIm1hc2staW1hZ2UtYi1mcm9tLXBvcyI6W3sibWFzay1iLWZyb20iOkooKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOkooKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOm5lKCl9XSwibWFzay1pbWFnZS1iLXRvLWNvbG9yIjpbeyJtYXNrLWItdG8iOm5lKCl9XSwibWFzay1pbWFnZS1sLWZyb20tcG9zIjpbeyJtYXNrLWwtZnJvbSI6SigpfV0sIm1hc2staW1hZ2UtbC10by1wb3MiOlt7Im1hc2stbC10byI6SigpfV0sIm1hc2staW1hZ2UtbC1mcm9tLWNvbG9yIjpbeyJtYXNrLWwtZnJvbSI6bmUoKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6bmUoKX1dLCJtYXNrLWltYWdlLXgtZnJvbS1wb3MiOlt7Im1hc2steC1mcm9tIjpKKCl9XSwibWFzay1pbWFnZS14LXRvLXBvcyI6W3sibWFzay14LXRvIjpKKCl9XSwibWFzay1pbWFnZS14LWZyb20tY29sb3IiOlt7Im1hc2steC1mcm9tIjpuZSgpfV0sIm1hc2staW1hZ2UteC10by1jb2xvciI6W3sibWFzay14LXRvIjpuZSgpfV0sIm1hc2staW1hZ2UteS1mcm9tLXBvcyI6W3sibWFzay15LWZyb20iOkooKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOkooKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOm5lKCl9XSwibWFzay1pbWFnZS15LXRvLWNvbG9yIjpbeyJtYXNrLXktdG8iOm5lKCl9XSwibWFzay1pbWFnZS1yYWRpYWwiOlt7Im1hc2stcmFkaWFsIjpbeWUsZ2VdfV0sIm1hc2staW1hZ2UtcmFkaWFsLWZyb20tcG9zIjpbeyJtYXNrLXJhZGlhbC1mcm9tIjpKKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtdG8tcG9zIjpbeyJtYXNrLXJhZGlhbC10byI6SigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLWZyb20tY29sb3IiOlt7Im1hc2stcmFkaWFsLWZyb20iOm5lKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtdG8tY29sb3IiOlt7Im1hc2stcmFkaWFsLXRvIjpuZSgpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6WyJjaXJjbGUiLCJlbGxpcHNlIl19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbInNpZGUiLCJjb3JuZXIiXSxmYXJ0aGVzdDpbInNpZGUiLCJjb3JuZXIiXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOmIoKX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W0RlXX1dLCJtYXNrLWltYWdlLWNvbmljLWZyb20tcG9zIjpbeyJtYXNrLWNvbmljLWZyb20iOkooKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLXBvcyI6W3sibWFzay1jb25pYy10byI6SigpfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1jb2xvciI6W3sibWFzay1jb25pYy1mcm9tIjpuZSgpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tY29sb3IiOlt7Im1hc2stY29uaWMtdG8iOm5lKCl9XSwibWFzay1tb2RlIjpbe21hc2s6WyJhbHBoYSIsImx1bWluYW5jZSIsIm1hdGNoIl19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50IiwiZmlsbCIsInN0cm9rZSIsInZpZXciXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6VmUoKX1dLCJtYXNrLXJlcGVhdCI6W3ttYXNrOk5lKCl9XSwibWFzay1zaXplIjpbe21hc2s6ZXQoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6WyJhbHBoYSIsImx1bWluYW5jZSJdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbIm5vbmUiLHllLGdlXX1dLGZpbHRlcjpbe2ZpbHRlcjpbIiIsIm5vbmUiLHllLGdlXX1dLGJsdXI6W3tibHVyOmxlKCl9XSxicmlnaHRuZXNzOlt7YnJpZ2h0bmVzczpbRGUseWUsZ2VdfV0sY29udHJhc3Q6W3tjb250cmFzdDpbRGUseWUsZ2VdfV0sImRyb3Atc2hhZG93IjpbeyJkcm9wLXNoYWRvdyI6WyIiLCJub25lIixwLGJhLHZhXX1dLCJkcm9wLXNoYWRvdy1jb2xvciI6W3siZHJvcC1zaGFkb3ciOm5lKCl9XSxncmF5c2NhbGU6W3tncmF5c2NhbGU6WyIiLERlLHllLGdlXX1dLCJodWUtcm90YXRlIjpbeyJodWUtcm90YXRlIjpbRGUseWUsZ2VdfV0saW52ZXJ0Olt7aW52ZXJ0OlsiIixEZSx5ZSxnZV19XSxzYXR1cmF0ZTpbe3NhdHVyYXRlOltEZSx5ZSxnZV19XSxzZXBpYTpbe3NlcGlhOlsiIixEZSx5ZSxnZV19XSwiYmFja2Ryb3AtZmlsdGVyIjpbeyJiYWNrZHJvcC1maWx0ZXIiOlsiIiwibm9uZSIseWUsZ2VdfV0sImJhY2tkcm9wLWJsdXIiOlt7ImJhY2tkcm9wLWJsdXIiOmxlKCl9XSwiYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W3siYmFja2Ryb3AtYnJpZ2h0bmVzcyI6W0RlLHllLGdlXX1dLCJiYWNrZHJvcC1jb250cmFzdCI6W3siYmFja2Ryb3AtY29udHJhc3QiOltEZSx5ZSxnZV19XSwiYmFja2Ryb3AtZ3JheXNjYWxlIjpbeyJiYWNrZHJvcC1ncmF5c2NhbGUiOlsiIixEZSx5ZSxnZV19XSwiYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W3siYmFja2Ryb3AtaHVlLXJvdGF0ZSI6W0RlLHllLGdlXX1dLCJiYWNrZHJvcC1pbnZlcnQiOlt7ImJhY2tkcm9wLWludmVydCI6WyIiLERlLHllLGdlXX1dLCJiYWNrZHJvcC1vcGFjaXR5IjpbeyJiYWNrZHJvcC1vcGFjaXR5IjpbRGUseWUsZ2VdfV0sImJhY2tkcm9wLXNhdHVyYXRlIjpbeyJiYWNrZHJvcC1zYXR1cmF0ZSI6W0RlLHllLGdlXX1dLCJiYWNrZHJvcC1zZXBpYSI6W3siYmFja2Ryb3Atc2VwaWEiOlsiIixEZSx5ZSxnZV19XSwiYm9yZGVyLWNvbGxhcHNlIjpbe2JvcmRlcjpbImNvbGxhcHNlIiwic2VwYXJhdGUiXX1dLCJib3JkZXItc3BhY2luZyI6W3siYm9yZGVyLXNwYWNpbmciOlQoKX1dLCJib3JkZXItc3BhY2luZy14IjpbeyJib3JkZXItc3BhY2luZy14IjpUKCl9XSwiYm9yZGVyLXNwYWNpbmcteSI6W3siYm9yZGVyLXNwYWNpbmcteSI6VCgpfV0sInRhYmxlLWxheW91dCI6W3t0YWJsZTpbImF1dG8iLCJmaXhlZCJdfV0sY2FwdGlvbjpbe2NhcHRpb246WyJ0b3AiLCJib3R0b20iXX1dLHRyYW5zaXRpb246W3t0cmFuc2l0aW9uOlsiIiwiYWxsIiwiY29sb3JzIiwib3BhY2l0eSIsInNoYWRvdyIsInRyYW5zZm9ybSIsIm5vbmUiLHllLGdlXX1dLCJ0cmFuc2l0aW9uLWJlaGF2aW9yIjpbe3RyYW5zaXRpb246WyJub3JtYWwiLCJkaXNjcmV0ZSJdfV0sZHVyYXRpb246W3tkdXJhdGlvbjpbRGUsImluaXRpYWwiLHllLGdlXX1dLGVhc2U6W3tlYXNlOlsibGluZWFyIiwiaW5pdGlhbCIsdyx5ZSxnZV19XSxkZWxheTpbe2RlbGF5OltEZSx5ZSxnZV19XSxhbmltYXRlOlt7YW5pbWF0ZTpbIm5vbmUiLHYseWUsZ2VdfV0sYmFja2ZhY2U6W3tiYWNrZmFjZTpbImhpZGRlbiIsInZpc2libGUiXX1dLHBlcnNwZWN0aXZlOlt7cGVyc3BlY3RpdmU6W3kseWUsZ2VdfV0sInBlcnNwZWN0aXZlLW9yaWdpbiI6W3sicGVyc3BlY3RpdmUtb3JpZ2luIjp4KCl9XSxyb3RhdGU6W3tyb3RhdGU6d2UoKX1dLCJyb3RhdGUteCI6W3sicm90YXRlLXgiOndlKCl9XSwicm90YXRlLXkiOlt7InJvdGF0ZS15Ijp3ZSgpfV0sInJvdGF0ZS16IjpbeyJyb3RhdGUteiI6d2UoKX1dLHNjYWxlOlt7c2NhbGU6dGUoKX1dLCJzY2FsZS14IjpbeyJzY2FsZS14Ijp0ZSgpfV0sInNjYWxlLXkiOlt7InNjYWxlLXkiOnRlKCl9XSwic2NhbGUteiI6W3sic2NhbGUteiI6dGUoKX1dLCJzY2FsZS0zZCI6WyJzY2FsZS0zZCJdLHNrZXc6W3tza2V3OkUoKX1dLCJza2V3LXgiOlt7InNrZXcteCI6RSgpfV0sInNrZXcteSI6W3sic2tldy15IjpFKCl9XSx0cmFuc2Zvcm06W3t0cmFuc2Zvcm06W3llLGdlLCIiLCJub25lIiwiZ3B1IiwiY3B1Il19XSwidHJhbnNmb3JtLW9yaWdpbiI6W3tvcmlnaW46eCgpfV0sInRyYW5zZm9ybS1zdHlsZSI6W3t0cmFuc2Zvcm06WyIzZCIsImZsYXQiXX1dLHRyYW5zbGF0ZTpbe3RyYW5zbGF0ZTpPKCl9XSwidHJhbnNsYXRlLXgiOlt7InRyYW5zbGF0ZS14IjpPKCl9XSwidHJhbnNsYXRlLXkiOlt7InRyYW5zbGF0ZS15IjpPKCl9XSwidHJhbnNsYXRlLXoiOlt7InRyYW5zbGF0ZS16IjpPKCl9XSwidHJhbnNsYXRlLW5vbmUiOlsidHJhbnNsYXRlLW5vbmUiXSxhY2NlbnQ6W3thY2NlbnQ6bmUoKX1dLGFwcGVhcmFuY2U6W3thcHBlYXJhbmNlOlsibm9uZSIsImF1dG8iXX1dLCJjYXJldC1jb2xvciI6W3tjYXJldDpuZSgpfV0sImNvbG9yLXNjaGVtZSI6W3tzY2hlbWU6WyJub3JtYWwiLCJkYXJrIiwibGlnaHQiLCJsaWdodC1kYXJrIiwib25seS1kYXJrIiwib25seS1saWdodCJdfV0sY3Vyc29yOlt7Y3Vyc29yOlsiYXV0byIsImRlZmF1bHQiLCJwb2ludGVyIiwid2FpdCIsInRleHQiLCJtb3ZlIiwiaGVscCIsIm5vdC1hbGxvd2VkIiwibm9uZSIsImNvbnRleHQtbWVudSIsInByb2dyZXNzIiwiY2VsbCIsImNyb3NzaGFpciIsInZlcnRpY2FsLXRleHQiLCJhbGlhcyIsImNvcHkiLCJuby1kcm9wIiwiZ3JhYiIsImdyYWJiaW5nIiwiYWxsLXNjcm9sbCIsImNvbC1yZXNpemUiLCJyb3ctcmVzaXplIiwibi1yZXNpemUiLCJlLXJlc2l6ZSIsInMtcmVzaXplIiwidy1yZXNpemUiLCJuZS1yZXNpemUiLCJudy1yZXNpemUiLCJzZS1yZXNpemUiLCJzdy1yZXNpemUiLCJldy1yZXNpemUiLCJucy1yZXNpemUiLCJuZXN3LXJlc2l6ZSIsIm53c2UtcmVzaXplIiwiem9vbS1pbiIsInpvb20tb3V0Iix5ZSxnZV19XSwiZmllbGQtc2l6aW5nIjpbeyJmaWVsZC1zaXppbmciOlsiZml4ZWQiLCJjb250ZW50Il19XSwicG9pbnRlci1ldmVudHMiOlt7InBvaW50ZXItZXZlbnRzIjpbImF1dG8iLCJub25lIl19XSxyZXNpemU6W3tyZXNpemU6WyJub25lIiwiIiwieSIsIngiXX1dLCJzY3JvbGwtYmVoYXZpb3IiOlt7c2Nyb2xsOlsiYXV0byIsInNtb290aCJdfV0sInNjcm9sbC1tIjpbeyJzY3JvbGwtbSI6VCgpfV0sInNjcm9sbC1teCI6W3sic2Nyb2xsLW14IjpUKCl9XSwic2Nyb2xsLW15IjpbeyJzY3JvbGwtbXkiOlQoKX1dLCJzY3JvbGwtbXMiOlt7InNjcm9sbC1tcyI6VCgpfV0sInNjcm9sbC1tZSI6W3sic2Nyb2xsLW1lIjpUKCl9XSwic2Nyb2xsLW1icyI6W3sic2Nyb2xsLW1icyI6VCgpfV0sInNjcm9sbC1tYmUiOlt7InNjcm9sbC1tYmUiOlQoKX1dLCJzY3JvbGwtbXQiOlt7InNjcm9sbC1tdCI6VCgpfV0sInNjcm9sbC1tciI6W3sic2Nyb2xsLW1yIjpUKCl9XSwic2Nyb2xsLW1iIjpbeyJzY3JvbGwtbWIiOlQoKX1dLCJzY3JvbGwtbWwiOlt7InNjcm9sbC1tbCI6VCgpfV0sInNjcm9sbC1wIjpbeyJzY3JvbGwtcCI6VCgpfV0sInNjcm9sbC1weCI6W3sic2Nyb2xsLXB4IjpUKCl9XSwic2Nyb2xsLXB5IjpbeyJzY3JvbGwtcHkiOlQoKX1dLCJzY3JvbGwtcHMiOlt7InNjcm9sbC1wcyI6VCgpfV0sInNjcm9sbC1wZSI6W3sic2Nyb2xsLXBlIjpUKCl9XSwic2Nyb2xsLXBicyI6W3sic2Nyb2xsLXBicyI6VCgpfV0sInNjcm9sbC1wYmUiOlt7InNjcm9sbC1wYmUiOlQoKX1dLCJzY3JvbGwtcHQiOlt7InNjcm9sbC1wdCI6VCgpfV0sInNjcm9sbC1wciI6W3sic2Nyb2xsLXByIjpUKCl9XSwic2Nyb2xsLXBiIjpbeyJzY3JvbGwtcGIiOlQoKX1dLCJzY3JvbGwtcGwiOlt7InNjcm9sbC1wbCI6VCgpfV0sInNuYXAtYWxpZ24iOlt7c25hcDpbInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwiYWxpZ24tbm9uZSJdfV0sInNuYXAtc3RvcCI6W3tzbmFwOlsibm9ybWFsIiwiYWx3YXlzIl19XSwic25hcC10eXBlIjpbe3NuYXA6WyJub25lIiwieCIsInkiLCJib3RoIl19XSwic25hcC1zdHJpY3RuZXNzIjpbe3NuYXA6WyJtYW5kYXRvcnkiLCJwcm94aW1pdHkiXX1dLHRvdWNoOlt7dG91Y2g6WyJhdXRvIiwibm9uZSIsIm1hbmlwdWxhdGlvbiJdfV0sInRvdWNoLXgiOlt7InRvdWNoLXBhbiI6WyJ4IiwibGVmdCIsInJpZ2h0Il19XSwidG91Y2gteSI6W3sidG91Y2gtcGFuIjpbInkiLCJ1cCIsImRvd24iXX1dLCJ0b3VjaC1weiI6WyJ0b3VjaC1waW5jaC16b29tIl0sc2VsZWN0Olt7c2VsZWN0Olsibm9uZSIsInRleHQiLCJhbGwiLCJhdXRvIl19XSwid2lsbC1jaGFuZ2UiOlt7IndpbGwtY2hhbmdlIjpbImF1dG8iLCJzY3JvbGwiLCJjb250ZW50cyIsInRyYW5zZm9ybSIseWUsZ2VdfV0sZmlsbDpbe2ZpbGw6WyJub25lIiwuLi5uZSgpXX1dLCJzdHJva2UtdyI6W3tzdHJva2U6W0RlLFFzLEVvLHloXX1dLHN0cm9rZTpbe3N0cm9rZTpbIm5vbmUiLC4uLm5lKCldfV0sImZvcmNlZC1jb2xvci1hZGp1c3QiOlt7ImZvcmNlZC1jb2xvci1hZGp1c3QiOlsiYXV0byIsIm5vbmUiXX1dfSxjb25mbGljdGluZ0NsYXNzR3JvdXBzOntvdmVyZmxvdzpbIm92ZXJmbG93LXgiLCJvdmVyZmxvdy15Il0sb3ZlcnNjcm9sbDpbIm92ZXJzY3JvbGwteCIsIm92ZXJzY3JvbGwteSJdLGluc2V0OlsiaW5zZXQteCIsImluc2V0LXkiLCJpbnNldC1icyIsImluc2V0LWJlIiwic3RhcnQiLCJlbmQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSwiaW5zZXQteCI6WyJyaWdodCIsImxlZnQiXSwiaW5zZXQteSI6WyJ0b3AiLCJib3R0b20iXSxmbGV4OlsiYmFzaXMiLCJncm93Iiwic2hyaW5rIl0sZ2FwOlsiZ2FwLXgiLCJnYXAteSJdLHA6WyJweCIsInB5IiwicHMiLCJwZSIsInBicyIsInBiZSIsInB0IiwicHIiLCJwYiIsInBsIl0scHg6WyJwciIsInBsIl0scHk6WyJwdCIsInBiIl0sbTpbIm14IiwibXkiLCJtcyIsIm1lIiwibWJzIiwibWJlIiwibXQiLCJtciIsIm1iIiwibWwiXSxteDpbIm1yIiwibWwiXSxteTpbIm10IiwibWIiXSxzaXplOlsidyIsImgiXSwiZm9udC1zaXplIjpbImxlYWRpbmciXSwiZnZuLW5vcm1hbCI6WyJmdm4tb3JkaW5hbCIsImZ2bi1zbGFzaGVkLXplcm8iLCJmdm4tZmlndXJlIiwiZnZuLXNwYWNpbmciLCJmdm4tZnJhY3Rpb24iXSwiZnZuLW9yZGluYWwiOlsiZnZuLW5vcm1hbCJdLCJmdm4tc2xhc2hlZC16ZXJvIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZpZ3VyZSI6WyJmdm4tbm9ybWFsIl0sImZ2bi1zcGFjaW5nIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZyYWN0aW9uIjpbImZ2bi1ub3JtYWwiXSwibGluZS1jbGFtcCI6WyJkaXNwbGF5Iiwib3ZlcmZsb3ciXSxyb3VuZGVkOlsicm91bmRlZC1zIiwicm91bmRlZC1lIiwicm91bmRlZC10Iiwicm91bmRlZC1yIiwicm91bmRlZC1iIiwicm91bmRlZC1sIiwicm91bmRlZC1zcyIsInJvdW5kZWQtc2UiLCJyb3VuZGVkLWVlIiwicm91bmRlZC1lcyIsInJvdW5kZWQtdGwiLCJyb3VuZGVkLXRyIiwicm91bmRlZC1iciIsInJvdW5kZWQtYmwiXSwicm91bmRlZC1zIjpbInJvdW5kZWQtc3MiLCJyb3VuZGVkLWVzIl0sInJvdW5kZWQtZSI6WyJyb3VuZGVkLXNlIiwicm91bmRlZC1lZSJdLCJyb3VuZGVkLXQiOlsicm91bmRlZC10bCIsInJvdW5kZWQtdHIiXSwicm91bmRlZC1yIjpbInJvdW5kZWQtdHIiLCJyb3VuZGVkLWJyIl0sInJvdW5kZWQtYiI6WyJyb3VuZGVkLWJyIiwicm91bmRlZC1ibCJdLCJyb3VuZGVkLWwiOlsicm91bmRlZC10bCIsInJvdW5kZWQtYmwiXSwiYm9yZGVyLXNwYWNpbmciOlsiYm9yZGVyLXNwYWNpbmcteCIsImJvcmRlci1zcGFjaW5nLXkiXSwiYm9yZGVyLXciOlsiYm9yZGVyLXcteCIsImJvcmRlci13LXkiLCJib3JkZXItdy1zIiwiYm9yZGVyLXctZSIsImJvcmRlci13LWJzIiwiYm9yZGVyLXctYmUiLCJib3JkZXItdy10IiwiYm9yZGVyLXctciIsImJvcmRlci13LWIiLCJib3JkZXItdy1sIl0sImJvcmRlci13LXgiOlsiYm9yZGVyLXctciIsImJvcmRlci13LWwiXSwiYm9yZGVyLXcteSI6WyJib3JkZXItdy10IiwiYm9yZGVyLXctYiJdLCJib3JkZXItY29sb3IiOlsiYm9yZGVyLWNvbG9yLXgiLCJib3JkZXItY29sb3IteSIsImJvcmRlci1jb2xvci1zIiwiYm9yZGVyLWNvbG9yLWUiLCJib3JkZXItY29sb3ItYnMiLCJib3JkZXItY29sb3ItYmUiLCJib3JkZXItY29sb3ItdCIsImJvcmRlci1jb2xvci1yIiwiYm9yZGVyLWNvbG9yLWIiLCJib3JkZXItY29sb3ItbCJdLCJib3JkZXItY29sb3IteCI6WyJib3JkZXItY29sb3ItciIsImJvcmRlci1jb2xvci1sIl0sImJvcmRlci1jb2xvci15IjpbImJvcmRlci1jb2xvci10IiwiYm9yZGVyLWNvbG9yLWIiXSx0cmFuc2xhdGU6WyJ0cmFuc2xhdGUteCIsInRyYW5zbGF0ZS15IiwidHJhbnNsYXRlLW5vbmUiXSwidHJhbnNsYXRlLW5vbmUiOlsidHJhbnNsYXRlIiwidHJhbnNsYXRlLXgiLCJ0cmFuc2xhdGUteSIsInRyYW5zbGF0ZS16Il0sInNjcm9sbC1tIjpbInNjcm9sbC1teCIsInNjcm9sbC1teSIsInNjcm9sbC1tcyIsInNjcm9sbC1tZSIsInNjcm9sbC1tYnMiLCJzY3JvbGwtbWJlIiwic2Nyb2xsLW10Iiwic2Nyb2xsLW1yIiwic2Nyb2xsLW1iIiwic2Nyb2xsLW1sIl0sInNjcm9sbC1teCI6WyJzY3JvbGwtbXIiLCJzY3JvbGwtbWwiXSwic2Nyb2xsLW15IjpbInNjcm9sbC1tdCIsInNjcm9sbC1tYiJdLCJzY3JvbGwtcCI6WyJzY3JvbGwtcHgiLCJzY3JvbGwtcHkiLCJzY3JvbGwtcHMiLCJzY3JvbGwtcGUiLCJzY3JvbGwtcGJzIiwic2Nyb2xsLXBiZSIsInNjcm9sbC1wdCIsInNjcm9sbC1wciIsInNjcm9sbC1wYiIsInNjcm9sbC1wbCJdLCJzY3JvbGwtcHgiOlsic2Nyb2xsLXByIiwic2Nyb2xsLXBsIl0sInNjcm9sbC1weSI6WyJzY3JvbGwtcHQiLCJzY3JvbGwtcGIiXSx0b3VjaDpbInRvdWNoLXgiLCJ0b3VjaC15IiwidG91Y2gtcHoiXSwidG91Y2gteCI6WyJ0b3VjaCJdLCJ0b3VjaC15IjpbInRvdWNoIl0sInRvdWNoLXB6IjpbInRvdWNoIl19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczp7ImZvbnQtc2l6ZSI6WyJsZWFkaW5nIl19LG9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzOlsiKiIsIioqIiwiYWZ0ZXIiLCJiYWNrZHJvcCIsImJlZm9yZSIsImRldGFpbHMtY29udGVudCIsImZpbGUiLCJmaXJzdC1sZXR0ZXIiLCJmaXJzdC1saW5lIiwibWFya2VyIiwicGxhY2Vob2xkZXIiLCJzZWxlY3Rpb24iXX19LGlMPShlLHtjYWNoZVNpemU6dCxwcmVmaXg6bixleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZTpyLGV4dGVuZDpvPXt9LG92ZXJyaWRlOnM9e319KT0+KGVpKGUsImNhY2hlU2l6ZSIsdCksZWkoZSwicHJlZml4IixuKSxlaShlLCJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsciksd2EoZS50aGVtZSxzLnRoZW1lKSx3YShlLmNsYXNzR3JvdXBzLHMuY2xhc3NHcm91cHMpLHdhKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwcyxzLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMpLHdhKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzLHMuY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzKSxlaShlLCJvcmRlclNlbnNpdGl2ZU1vZGlmaWVycyIscy5vcmRlclNlbnNpdGl2ZU1vZGlmaWVycyksX2EoZS50aGVtZSxvLnRoZW1lKSxfYShlLmNsYXNzR3JvdXBzLG8uY2xhc3NHcm91cHMpLF9hKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwcyxvLmNvbmZsaWN0aW5nQ2xhc3NHcm91cHMpLF9hKGUuY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzLG8uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzKSxKMChlLG8sIm9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzIiksZSksZWk9KGUsdCxuKT0+e24hPT12b2lkIDAmJihlW3RdPW4pfSx3YT0oZSx0KT0+e2lmKHQpZm9yKGNvbnN0IG4gaW4gdCllaShlLG4sdFtuXSl9LF9hPShlLHQpPT57aWYodClmb3IoY29uc3QgbiBpbiB0KUowKGUsdCxuKX0sSjA9KGUsdCxuKT0+e2NvbnN0IHI9dFtuXTtyIT09dm9pZCAwJiYoZVtuXT1lW25dP2Vbbl0uY29uY2F0KHIpOnIpfSxhTD0oZSwuLi50KT0+dHlwZW9mIGU9PSJmdW5jdGlvbiI/SnUoWHUsZSwuLi50KTpKdSgoKT0+aUwoWHUoKSxlKSwuLi50KSxsTD1KdShYdSk7dmFyIGNMPWU9PmNuKGUpP2xMOmFMKHsuLi5lLGV4dGVuZDp7dGhlbWU6ZS50aGVtZSxjbGFzc0dyb3VwczplLmNsYXNzR3JvdXBzLGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczplLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyxjb25mbGljdGluZ0NsYXNzR3JvdXBzOmUuY29uZmxpY3RpbmdDbGFzc0dyb3VwcywuLi5lLmV4dGVuZH19KSx1TD0oZSx0KT0+e2NvbnN0IG49b2woZSk7cmV0dXJuIW58fCEodD8udHdNZXJnZT8/ITApP246KCghQXIuY2FjaGVkVHdNZXJnZXx8QXIuZGlkVHdNZXJnZUNvbmZpZ0NoYW5nZSkmJihBci5kaWRUd01lcmdlQ29uZmlnQ2hhbmdlPSExLEFyLmNhY2hlZFR3TWVyZ2U9Y0woQXIuY2FjaGVkVHdNZXJnZUNvbmZpZykpLEFyLmNhY2hlZFR3TWVyZ2Uobil8fHZvaWQgMCl9LGZMPSguLi5lKT0+dD0+dUwoZSx0KSx7Y3JlYXRlVFY6ZEx9PWJEKGZMKTtjb25zdCBwTD1Odix1dD1kTChwTC51aT8udHYpLG1MPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wIixiYXNlOiJyb3VuZGVkLWZ1bGwgcmluZyByaW5nLWJnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtaW52ZXJ0ZWQgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6ImJnLXByaW1hcnkiLHNlY29uZGFyeToiYmctc2Vjb25kYXJ5IixzdWNjZXNzOiJiZy1zdWNjZXNzIixpbmZvOiJiZy1pbmZvIix3YXJuaW5nOiJiZy13YXJuaW5nIixlcnJvcjoiYmctZXJyb3IiLG5ldXRyYWw6ImJnLWludmVydGVkIn0sc2l6ZTp7IjN4cyI6ImgtWzRweF0gbWluLXctWzRweF0gdGV4dC1bNHB4XSIsIjJ4cyI6ImgtWzVweF0gbWluLXctWzVweF0gdGV4dC1bNXB4XSIseHM6ImgtWzZweF0gbWluLXctWzZweF0gdGV4dC1bNnB4XSIsc206ImgtWzdweF0gbWluLXctWzdweF0gdGV4dC1bN3B4XSIsbWQ6ImgtWzhweF0gbWluLXctWzhweF0gdGV4dC1bOHB4XSIsbGc6ImgtWzlweF0gbWluLXctWzlweF0gdGV4dC1bOXB4XSIseGw6ImgtWzEwcHhdIG1pbi13LVsxMHB4XSB0ZXh0LVsxMHB4XSIsIjJ4bCI6ImgtWzExcHhdIG1pbi13LVsxMXB4XSB0ZXh0LVsxMXB4XSIsIjN4bCI6ImgtWzEycHhdIG1pbi13LVsxMnB4XSB0ZXh0LVsxMnB4XSJ9LHBvc2l0aW9uOnsidG9wLXJpZ2h0IjoidG9wLTAgcmlnaHQtMCIsImJvdHRvbS1yaWdodCI6ImJvdHRvbS0wIHJpZ2h0LTAiLCJ0b3AtbGVmdCI6InRvcC0wIGxlZnQtMCIsImJvdHRvbS1sZWZ0IjoiYm90dG9tLTAgbGVmdC0wIn0saW5zZXQ6e2ZhbHNlOiIifSxzdGFuZGFsb25lOntmYWxzZToiYWJzb2x1dGUifX0sY29tcG91bmRWYXJpYW50czpbe3Bvc2l0aW9uOiJ0b3AtcmlnaHQiLGluc2V0OiExLGNsYXNzOiItdHJhbnNsYXRlLXktMS8yIHRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1yaWdodCIsaW5zZXQ6ITEsY2xhc3M6InRyYW5zbGF0ZS15LTEvMiB0cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn0se3Bvc2l0aW9uOiJ0b3AtbGVmdCIsaW5zZXQ6ITEsY2xhc3M6Ii10cmFuc2xhdGUteS0xLzIgLXRyYW5zbGF0ZS14LTEvMiB0cmFuc2Zvcm0ifSx7cG9zaXRpb246ImJvdHRvbS1sZWZ0IixpbnNldDohMSxjbGFzczoidHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgdHJhbnNmb3JtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iixwb3NpdGlvbjoidG9wLXJpZ2h0In19LEdsPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUNoaXAiLHByb3BzOml4KHthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0ZXh0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwb3NpdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpbnNldDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHN0YW5kYWxvbmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9fSx7c2hvdzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LHNob3dNb2RpZmllcnM6e319KSxlbWl0czpbInVwZGF0ZTpzaG93Il0sc2V0dXAoZSl7Y29uc3QgdD1lLG49bXgoZSwic2hvdyIse3R5cGU6Qm9vbGVhbixkZWZhdWx0OiEwfSkse3NpemU6cn09RDAodCksbz1TdCgpLHM9TG4oImNoaXAiLHQpLGk9TigoKT0+dXQoe2V4dGVuZDp1dChtTCksLi4uby51aT8uY2hpcHx8e319KSh7Y29sb3I6dC5jb2xvcixzaXplOnIudmFsdWUscG9zaXRpb246dC5wb3NpdGlvbixpbnNldDp0Lmluc2V0LHN0YW5kYWxvbmU6dC5zdGFuZGFsb25lfSkpO3JldHVybihhLGwpPT4oUigpLCQoZyhNZSkse2FzOmUuYXMsImRhdGEtc2xvdCI6InJvb3QiLGNsYXNzOnVlKGkudmFsdWUucm9vdCh7Y2xhc3M6W2cocyk/LnJvb3QsdC5jbGFzc119KSl9LHtkZWZhdWx0Ok0oKCk9PltyZShnKGpvKSx4dChNdChhLiRhdHRycykpLHtkZWZhdWx0Ok0oKCk9PltVKGEuJHNsb3RzLCJkZWZhdWx0IildKSxfOjN9LDE2KSxuLnZhbHVlPyhSKCksX2UoInNwYW4iLHtrZXk6MCwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6dWUoaS52YWx1ZS5iYXNlKHtjbGFzczpnKHMpPy5iYXNlfSkpfSxbVShhLiRzbG90cywiY29udGVudCIse30sKCk9PltzdChydChlLnRleHQpLDEpXSldLDIpKTpkZSgiIiwhMCldKSxfOjN9LDgsWyJhcyIsImNsYXNzIl0pKX19KTtmdW5jdGlvbiBLbChlKXtjb25zdCB0PVN0KCksbj1OKCgpPT5FZShlKSkscj1OKCgpPT5uLnZhbHVlLmljb24mJm4udmFsdWUubGVhZGluZ3x8bi52YWx1ZS5pY29uJiYhbi52YWx1ZS50cmFpbGluZ3x8bi52YWx1ZS5sb2FkaW5nJiYhbi52YWx1ZS50cmFpbGluZ3x8ISFuLnZhbHVlLmxlYWRpbmdJY29uKSxvPU4oKCk9Pm4udmFsdWUuaWNvbiYmbi52YWx1ZS50cmFpbGluZ3x8bi52YWx1ZS5sb2FkaW5nJiZuLnZhbHVlLnRyYWlsaW5nfHwhIW4udmFsdWUudHJhaWxpbmdJY29uKSxzPU4oKCk9Pm4udmFsdWUubG9hZGluZz9uLnZhbHVlLmxvYWRpbmdJY29ufHx0LnVpLmljb25zLmxvYWRpbmc6bi52YWx1ZS5sZWFkaW5nSWNvbnx8bi52YWx1ZS5pY29uKSxpPU4oKCk9Pm4udmFsdWUubG9hZGluZyYmIXIudmFsdWU/bi52YWx1ZS5sb2FkaW5nSWNvbnx8dC51aS5pY29ucy5sb2FkaW5nOm4udmFsdWUudHJhaWxpbmdJY29ufHxuLnZhbHVlLmljb24pO3JldHVybntpc0xlYWRpbmc6cixpc1RyYWlsaW5nOm8sbGVhZGluZ0ljb25OYW1lOnMsdHJhaWxpbmdJY29uTmFtZTppfX1jb25zdCBYMD1TeW1ib2woIm51eHQtdWkuZmllbGQtZ3JvdXAiKTtmdW5jdGlvbiB3ZChlKXtjb25zdCB0PUtlKFgwLHZvaWQgMCk7cmV0dXJue29yaWVudGF0aW9uOk4oKCk9PnQ/LnZhbHVlLm9yaWVudGF0aW9uKSxzaXplOk4oKCk9PmU/LnNpemU/P3Q/LnZhbHVlLnNpemUpfX1jb25zdCBfZD1zZSh7bmFtZToiRmllbGRHcm91cFJlc2V0IixzZXR1cChlLHtzbG90czp0fSl7cmV0dXJuIE50KFgwLE4oKCk9Pih7c2l6ZTp2b2lkIDAsb3JpZW50YXRpb246dm9pZCAwfSkpKSwoKT0+dC5kZWZhdWx0Py4oKX19KSxoTD1TeW1ib2woIm51eHQtdWkuZm9ybS1vcHRpb25zIiksZ0w9U3ltYm9sKCJudXh0LXVpLmZvcm0tZXZlbnRzIiksenE9U3ltYm9sKCJudXh0LXVpLmZvcm0tc3RhdGUiKSxadT1TeW1ib2woIm51eHQtdWkuZm9ybS1maWVsZCIpLFowPVN5bWJvbCgibnV4dC11aS5pbnB1dC1pZCIpLHlMPVN5bWJvbCgibnV4dC11aS5mb3JtLWlucHV0cyIpLHZMPVN5bWJvbCgibnV4dC11aS5mb3JtLWxvYWRpbmciKSxiTD1TeW1ib2woIm51eHQtdWkuZm9ybS1lcnJvcnMiKTtmdW5jdGlvbiB4ZChlLHQpe2NvbnN0IG49S2UoaEwsdm9pZCAwKSxyPUtlKGdMLHZvaWQgMCksbz1LZShadSx2b2lkIDApLHM9S2UoWjAsdm9pZCAwKTtOdChadSx2b2lkIDApLG8mJnMmJih0Py5iaW5kPT09ITE/cy52YWx1ZT12b2lkIDA6ZT8uaWQmJihzLnZhbHVlPWU/LmlkKSk7ZnVuY3Rpb24gaShmLGQscCl7ciYmbyYmZCYmci5lbWl0KHt0eXBlOmYsbmFtZTpkLGVhZ2VyOnB9KX1mdW5jdGlvbiBhKCl7aSgiYmx1ciIsbz8udmFsdWUubmFtZSl9ZnVuY3Rpb24gbCgpe2koImZvY3VzIixvPy52YWx1ZS5uYW1lKX1mdW5jdGlvbiB1KCl7aSgiY2hhbmdlIixvPy52YWx1ZS5uYW1lKX1jb25zdCBjPXRkKCgpPT57aSgiaW5wdXQiLG8/LnZhbHVlLm5hbWUsIXQ/LmRlZmVySW5wdXRWYWxpZGF0aW9ufHxvPy52YWx1ZS5lYWdlclZhbGlkYXRpb24pfSxvPy52YWx1ZS52YWxpZGF0ZU9uSW5wdXREZWxheT8/bj8udmFsdWUudmFsaWRhdGVPbklucHV0RGVsYXk/PzApO3JldHVybntpZDpOKCgpPT5lPy5pZD8/cz8udmFsdWUpLG5hbWU6TigoKT0+ZT8ubmFtZT8/bz8udmFsdWUubmFtZSksc2l6ZTpOKCgpPT5lPy5zaXplPz9vPy52YWx1ZS5zaXplKSxjb2xvcjpOKCgpPT5vPy52YWx1ZS5lcnJvcj8iZXJyb3IiOmU/LmNvbG9yKSxoaWdobGlnaHQ6TigoKT0+bz8udmFsdWUuZXJyb3I/ITA6ZT8uaGlnaGxpZ2h0KSxkaXNhYmxlZDpOKCgpPT5uPy52YWx1ZS5kaXNhYmxlZHx8ZT8uZGlzYWJsZWQpLGVtaXRGb3JtQmx1cjphLGVtaXRGb3JtSW5wdXQ6YyxlbWl0Rm9ybUNoYW5nZTp1LGVtaXRGb3JtRm9jdXM6bCxhcmlhQXR0cnM6TigoKT0+e2lmKCFvPy52YWx1ZSlyZXR1cm47Y29uc3QgZj1bImVycm9yIiwiaGludCIsImRlc2NyaXB0aW9uIiwiaGVscCJdLmZpbHRlcihwPT5vPy52YWx1ZT8uW3BdKS5tYXAocD0+YCR7bz8udmFsdWUuYXJpYUlkfS0ke3B9YCl8fFtdLGQ9eyJhcmlhLWludmFsaWQiOiEhbz8udmFsdWUuZXJyb3J9O3JldHVybiBmLmxlbmd0aD4wJiYoZFsiYXJpYS1kZXNjcmliZWRieSJdPWYuam9pbigiICIpKSxkfSl9fWNvbnN0IHdMPVsiYWN0aXZlIiwiYWN0aXZlQ2xhc3MiLCJhcmlhQ3VycmVudFZhbHVlIiwiYXMiLCJkaXNhYmxlZCIsImRvd25sb2FkIiwiZXhhY3QiLCJleGFjdEFjdGl2ZUNsYXNzIiwiZXhhY3RIYXNoIiwiZXhhY3RRdWVyeSIsImV4dGVybmFsIiwiZm9ybSIsImZvcm1hY3Rpb24iLCJmb3JtZW5jdHlwZSIsImZvcm1tZXRob2QiLCJmb3Jtbm92YWxpZGF0ZSIsImZvcm10YXJnZXQiLCJocmVmIiwiaHJlZmxhbmciLCJpbmFjdGl2ZUNsYXNzIiwibWVkaWEiLCJub1ByZWZldGNoIiwibm9SZWwiLCJvbkNsaWNrIiwicGluZyIsInByZWZldGNoIiwicHJlZmV0Y2hPbiIsInByZWZldGNoZWRDbGFzcyIsInJlZmVycmVycG9saWN5IiwicmVsIiwicmVwbGFjZSIsInRhcmdldCIsInRpdGxlIiwidG8iLCJ0cmFpbGluZ1NsYXNoIiwidHlwZSIsInZpZXdUcmFuc2l0aW9uIl07ZnVuY3Rpb24gX0woZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQuZmlsdGVyKHM9PnMuc3RhcnRzV2l0aCgiYXJpYS0iKSkscj10LmZpbHRlcihzPT5zLnN0YXJ0c1dpdGgoImRhdGEtIikpLG89Wy4uLndMLC4uLm4sLi4ucl07cmV0dXJuIFZyKGUsLi4ubyl9ZnVuY3Rpb24geEwoZSx0KXtjb25zdCBuPWNEKGUsdCkucmVkdWNlKChzLGkpPT4oaS50eXBlPT09ImFkZGVkIiYmcy5hZGQoaS5rZXkpLHMpLG5ldyBTZXQpLHI9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW3NdKT0+IW4uaGFzKHMpKSksbz1PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbc10pPT4hbi5oYXMocykpKTtyZXR1cm4gSWwocixvKX1hc3luYyBmdW5jdGlvbiBTTChlLHQpe3JldHVybiBhd2FpdCBrTCh0KS5jYXRjaChyPT4oe3dpZHRoOjAsaGVpZ2h0OjAscmF0aW86MH0pKX1hc3luYyBmdW5jdGlvbiBrTChlKXtpZih0eXBlb2YgSW1hZ2U+InUiKXRocm93IG5ldyBUeXBlRXJyb3IoIkltYWdlIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4gbmV3IFByb21pc2UoKHQsbik9Pntjb25zdCByPW5ldyBJbWFnZTtyLm9ubG9hZD0oKT0+e2NvbnN0IG89e3dpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0LHJhdGlvOnIud2lkdGgvci5oZWlnaHR9O3Qobyl9LHIub25lcnJvcj1vPT5uKG8pLHIuc3JjPWV9KX1mdW5jdGlvbiB3aChlKXtyZXR1cm4odD0+dCE9PXZvaWQgMD9lW3RdfHx0OmUubWlzc2luZ1ZhbHVlKX1mdW5jdGlvbiBFTChlPXt9KXtjb25zdCB0PWUuZm9ybWF0dGVyLG49ZS5rZXlNYXAmJnR5cGVvZiBlLmtleU1hcCE9ImZ1bmN0aW9uIj93aChlLmtleU1hcCk6ZS5rZXlNYXAscj17fTtmb3IoY29uc3QgbyBpbiBlLnZhbHVlTWFwKXtjb25zdCBzPW8saT1lLnZhbHVlTWFwW3NdO3Jbc109dHlwZW9mIGk9PSJvYmplY3QiP3doKGkpOml9cmV0dXJuIG89Pntjb25zdCBzPVtdO2Zvcihjb25zdCBpIGluIG8pe2NvbnN0IGE9aTtpZih0eXBlb2Ygb1thXT4idSIpY29udGludWU7Y29uc3QgbD10eXBlb2YgclthXT09ImZ1bmN0aW9uIj9yW2FdKG9bYV0pOm9bYV07cy5wdXNoKFtuP24oYSk6YSxsXSl9cmV0dXJuIHQ/cy5tYXAoaT0+dCguLi5pKSkuam9pbihlLmpvaW5XaXRoPz8iJiIpOm5ldyBVUkxTZWFyY2hQYXJhbXMocykudG9TdHJpbmcoKX19ZnVuY3Rpb24gVEwoZT0iIil7aWYoZT09PXZvaWQgMHx8IWUubGVuZ3RoKXJldHVybltdO2NvbnN0IHQ9bmV3IFNldDtmb3IoY29uc3QgbiBvZiBlLnNwbGl0KCIgIikpe2NvbnN0IHI9TnVtYmVyLnBhcnNlSW50KG4ucmVwbGFjZSgieCIsIiIpKTtyJiZ0LmFkZChyKX1yZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBDTChlKXtpZihlLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJgZGVuc2l0aWVzYCBtdXN0IG5vdCBiZSBlbXB0eSwgY29uZmlndXJlIHRvIGAxYCB0byByZW5kZXIgcmVndWxhciBzaXplIG9ubHkgKERQUiAxLjApIil9ZnVuY3Rpb24gUHMoZT0iIil7aWYodHlwZW9mIGU9PSJudW1iZXIiKXJldHVybiBlO2lmKHR5cGVvZiBlPT0ic3RyaW5nIiYmZS5yZXBsYWNlKCJweCIsIiIpLm1hdGNoKC9eXGQrJC9nKSlyZXR1cm4gTnVtYmVyLnBhcnNlSW50KGUsMTApfWZ1bmN0aW9uIEFMKGUpe2NvbnN0IHQ9e307aWYodHlwZW9mIGU9PSJzdHJpbmciKWZvcihjb25zdCBuIG9mIGUuc3BsaXQoL1tccyxdKy8pLmZpbHRlcihyPT5yKSl7Y29uc3Qgcj1uLnNwbGl0KCI6Iik7ci5sZW5ndGghPT0yP3RbIjFweCJdPXJbMF0udHJpbSgpOnRbclswXS50cmltKCldPXJbMV0udHJpbSgpfWVsc2UgT2JqZWN0LmFzc2lnbih0LGUpO3JldHVybiB0fWZ1bmN0aW9uIE9MKGUpe2NvbnN0IHQ9e29wdGlvbnM6ZX0sbj0obyxzPXt9KT0+ZXcodCxvLHMpLHI9KChvLHMsaSk9Pm4obyxtbih7bW9kaWZpZXJzOnN9LGkpKS51cmwpO2Zvcihjb25zdCBvIGluIGUucHJlc2V0cylyW29dPSgocyxpLGEpPT5yKHMsaSx7Li4uZS5wcmVzZXRzW29dLC4uLmF9KSk7cmV0dXJuIHIub3B0aW9ucz1lLHIuZ2V0SW1hZ2U9bixyLmdldE1ldGE9KChvLHMpPT5QTCh0LG8scykpLHIuZ2V0U2l6ZXM9KChvLHMpPT5STCh0LG8scykpLHQuJGltZz1yLHJ9YXN5bmMgZnVuY3Rpb24gUEwoZSx0LG4pe2NvbnN0IHI9ZXcoZSx0LHsuLi5ufSk7cmV0dXJuIHR5cGVvZiByLmdldE1ldGE9PSJmdW5jdGlvbiI/YXdhaXQgci5nZXRNZXRhKCk6YXdhaXQgU0woZSxyLnVybCl9ZnVuY3Rpb24gZXcoZSx0LG4pe2lmKHQmJnR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKGBpbnB1dCBtdXN0IGJlIGEgc3RyaW5nIChyZWNlaXZlZCAke3R5cGVvZiB0fTogJHtKU09OLnN0cmluZ2lmeSh0KX0pYCk7aWYoIXR8fHQuc3RhcnRzV2l0aCgiZGF0YToiKSlyZXR1cm57dXJsOnR9O2NvbnN0e3NldHVwOnIsZGVmYXVsdHM6b309SUwoZSxuLnByb3ZpZGVyfHxlLm9wdGlvbnMucHJvdmlkZXIpLHM9cigpLGk9dHcoZSxuLnByZXNldCk7aWYodD1Obih0KT90OlpTKHQpLCFzLnN1cHBvcnRzQWxpYXMpe2Zvcihjb25zdCBjIGluIGUub3B0aW9ucy5hbGlhcylpZih0LnN0YXJ0c1dpdGgoYykpe2NvbnN0IGY9ZS5vcHRpb25zLmFsaWFzW2NdO2YmJih0PUJpKGYsdC5zbGljZShjLmxlbmd0aCkpKX19aWYocy52YWxpZGF0ZURvbWFpbnMmJk5uKHQpKXtjb25zdCBjPUNsKHQpLmhvc3Q7aWYoIWUub3B0aW9ucy5kb21haW5zLmZpbmQoZj0+Zj09PWMpKXJldHVybnt1cmw6dH19Y29uc3QgYT1tbihuLGksbyksbD17Li4uYSxtb2RpZmllcnM6ey4uLmEubW9kaWZpZXJzLHdpZHRoOmEubW9kaWZpZXJzPy53aWR0aD9QcyhhLm1vZGlmaWVycy53aWR0aCk6dm9pZCAwLGhlaWdodDphLm1vZGlmaWVycz8uaGVpZ2h0P1BzKGEubW9kaWZpZXJzLmhlaWdodCk6dm9pZCAwfX0sdT1zLmdldEltYWdlKHQsbCxlKTtyZXR1cm4gdS5mb3JtYXR8fD1sLm1vZGlmaWVycy5mb3JtYXR8fCIiLHV9ZnVuY3Rpb24gSUwoZSx0KXtjb25zdCBuPWUub3B0aW9ucy5wcm92aWRlcnNbdF07aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByb3ZpZGVyOiAiK3QpO3JldHVybiBufWZ1bmN0aW9uIHR3KGUsdCl7aWYoIXQpcmV0dXJue307aWYoIWUub3B0aW9ucy5wcmVzZXRzW3RdKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmVzZXQ6ICIrdCk7cmV0dXJuIGUub3B0aW9ucy5wcmVzZXRzW3RdfWZ1bmN0aW9uIFJMKGUsdCxuKXtjb25zdCByPXR3KGUsbi5wcmVzZXQpLG89bW4obixyKSxzPVBzKG8ubW9kaWZpZXJzPy53aWR0aCksaT1QcyhvLm1vZGlmaWVycz8uaGVpZ2h0KSxhPW8uc2l6ZXM/QUwoby5zaXplcyk6e30sbD1vLmRlbnNpdGllcz8udHJpbSgpLHU9bD9UTChsKTplLm9wdGlvbnMuZGVuc2l0aWVzO0NMKHUpO2NvbnN0IGM9cyYmaT9pL3M6MCxmPVtdLGQ9W107aWYoT2JqZWN0LmtleXMoYSkubGVuZ3RoPj0xKXtmb3IoY29uc3QgdyBpbiBhKXtjb25zdCB2PV9oKHcsU3RyaW5nKGFbd10pLGksYyxlKTtpZih2IT09dm9pZCAwKXtmLnB1c2goe3NpemU6di5zaXplLHNjcmVlbk1heFdpZHRoOnYuc2NyZWVuTWF4V2lkdGgsbWVkaWE6YChtYXgtd2lkdGg6ICR7di5zY3JlZW5NYXhXaWR0aH1weClgfSk7Zm9yKGNvbnN0IGggb2YgdSlkLnB1c2goe3dpZHRoOnYuX2NXaWR0aCpoLHNyYzp4aChlLHQsbix2LGgpfSl9fU5MKGYpfWVsc2UgZm9yKGNvbnN0IHcgb2YgdSl7Y29uc3Qgdj1PYmplY3Qua2V5cyhhKVswXTtsZXQgaD12P19oKHYsU3RyaW5nKGFbdl0pLGksYyxlKTp2b2lkIDA7aD09PXZvaWQgMCYmKGg9e3NpemU6IiIsc2NyZWVuTWF4V2lkdGg6MCxfY1dpZHRoOm4ubW9kaWZpZXJzPy53aWR0aCxfY0hlaWdodDpuLm1vZGlmaWVycz8uaGVpZ2h0fSksZC5wdXNoKHt3aWR0aDp3LHNyYzp4aChlLHQsbixoLHcpfSl9REwoZCk7Y29uc3QgcD1kW2QubGVuZ3RoLTFdLG09Zi5sZW5ndGg/Zi5tYXAodz0+YCR7dy5tZWRpYT93Lm1lZGlhKyIgIjoiIn0ke3cuc2l6ZX1gKS5qb2luKCIsICIpOnZvaWQgMCx5PW0/InciOiJ4IixfPWQubWFwKHc9PmAke3cuc3JjfSAke3cud2lkdGh9JHt5fWApLmpvaW4oIiwgIik7cmV0dXJue3NpemVzOm0sc3Jjc2V0Ol8sc3JjOnA/LnNyY319ZnVuY3Rpb24gX2goZSx0LG4scixvKXtjb25zdCBzPW8ub3B0aW9ucy5zY3JlZW5zJiZvLm9wdGlvbnMuc2NyZWVuc1tlXXx8TnVtYmVyLnBhcnNlSW50KGUpLGk9dC5lbmRzV2l0aCgidnciKTtpZighaSYmL15cZCskLy50ZXN0KHQpJiYodD10KyJweCIpLCFpJiYhdC5lbmRzV2l0aCgicHgiKSlyZXR1cm47bGV0IGE9TnVtYmVyLnBhcnNlSW50KHQpO2lmKCFzfHwhYSlyZXR1cm47aSYmKGE9TWF0aC5yb3VuZChhLzEwMCpzKSk7Y29uc3QgbD1yP01hdGgucm91bmQoYSpyKTpuO3JldHVybntzaXplOnQsc2NyZWVuTWF4V2lkdGg6cyxfY1dpZHRoOmEsX2NIZWlnaHQ6bH19ZnVuY3Rpb24geGgoZSx0LG4scixvKXtyZXR1cm4gZS4kaW1nKHQsey4uLm4ubW9kaWZpZXJzLHdpZHRoOnIuX2NXaWR0aD9yLl9jV2lkdGgqbzp2b2lkIDAsaGVpZ2h0OnIuX2NIZWlnaHQ/ci5fY0hlaWdodCpvOnZvaWQgMH0sbil9ZnVuY3Rpb24gTkwoZSl7ZS5zb3J0KChuLHIpPT5uLnNjcmVlbk1heFdpZHRoLXIuc2NyZWVuTWF4V2lkdGgpO2xldCB0PW51bGw7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pe2NvbnN0IHI9ZVtuXTtyLm1lZGlhPT09dCYmZS5zcGxpY2UobiwxKSx0PXIubWVkaWF9Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXS5tZWRpYT1lW24rMV0/Lm1lZGlhfHwiIn1mdW5jdGlvbiBETChlKXtlLnNvcnQoKG4scik9Pm4ud2lkdGgtci53aWR0aCk7bGV0IHQ9bnVsbDtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgcj1lW25dO3Iud2lkdGg9PT10JiZlLnNwbGljZShuLDEpLHQ9ci53aWR0aH19ZnVuY3Rpb24gTEwoZSl7bGV0IHQ7cmV0dXJuKCk9PnR8fCh0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoKTplLHQpfWNvbnN0ICRMPUVMKHtrZXlNYXA6e3dpZHRoOiJ3IixoZWlnaHQ6ImgiLGRwcjoiZHByIixmaXQ6ImZpdCIsZ3Jhdml0eToiZyIscXVhbGl0eToicSIsZm9ybWF0OiJmIixzaGFycGVuOiJzaGFycGVuIn0sdmFsdWVNYXA6e2ZpdDp7Y292ZXI6ImNvdmVyIixjb250YWluOiJjb250YWluIixmaWxsOiJzY2FsZS1kb3duIixvdXRzaWRlOiJjcm9wIixpbnNpZGU6InBhZCJ9LGdyYXZpdHk6e2F1dG86ImF1dG8iLHNpZGU6InNpZGUifX0sam9pbldpdGg6IiwiLGZvcm1hdHRlcjooZSx0KT0+RXkoZSx0KX0pLE1MPXt9LEJMPUxMKHtnZXRJbWFnZTooZSx7bW9kaWZpZXJzOnQsYmFzZVVSTDpuPSIvIn0pPT57Y29uc3Qgcj17Li4uTUwsLi4udH0sbz0kTChyKTtyZXR1cm57dXJsOm8/QmkobiwiY2RuLWNnaS9pbWFnZSIsbyxlKTplfX19KSxxTD17c2NyZWVuczp7c206NjQwLG1kOjc2OCxsZzoxMDI0LHhsOjEyODAsIjJ4bCI6MTUzNn0scHJlc2V0czp7fSxwcm92aWRlcjoiY2xvdWRmbGFyZSIsZG9tYWluczpbXSxhbGlhczp7fSxkZW5zaXRpZXM6WzEsMl0sZm9ybWF0Olsid2VicCJdLHByb3ZpZGVyOiJjbG91ZGZsYXJlIixwcm92aWRlcnM6e2Nsb3VkZmxhcmU6e3NldHVwOkJMLGRlZmF1bHRzOnt9fX19LG53PWU9Pntjb25zdCB0PWZvKCksbj1CZSgpO3JldHVybiBuLiRpbWd8fG4uX2ltZ3x8KG4uX2ltZz1PTCh7Li4ucUwsZXZlbnQ6bi5zc3JDb250ZXh0Py5ldmVudCxudXh0OntiYXNlVVJMOnQuYXBwLmJhc2VVUkx9LHJ1bnRpbWVDb25maWc6dH0pKX07ZnVuY3Rpb24gRkwoZSl7cGVyZm9ybWFuY2U/Lm1hcms/LigibWFya19mZWF0dXJlX3VzYWdlIix7ZGV0YWlsOntmZWF0dXJlOmV9fSl9Y29uc3Qgekw9ZT0+e2NvbnN0IHQ9bncoKSxuPU4oKCk9Pih7cHJvdmlkZXI6ZS5wcm92aWRlcixwcmVzZXQ6ZS5wcmVzZXR9KSkscj1OKCgpPT4oe3dpZHRoOlBzKGUud2lkdGgpLGhlaWdodDpQcyhlLmhlaWdodCksY3Jvc3NvcmlnaW46ZS5jcm9zc29yaWdpbj09PSEwPyJhbm9ueW1vdXMiOmUuY3Jvc3NvcmlnaW58fHZvaWQgMCxub25jZTplLm5vbmNlfSkpLG89TigoKT0+KHsuLi5lLm1vZGlmaWVycyx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodCxmb3JtYXQ6ZS5mb3JtYXQscXVhbGl0eTplLnF1YWxpdHl8fHQub3B0aW9ucy5xdWFsaXR5LGJhY2tncm91bmQ6ZS5iYWNrZ3JvdW5kLGZpdDplLmZpdH0pKTtyZXR1cm57cHJvdmlkZXJPcHRpb25zOm4sbm9ybWFsaXplZEF0dHJzOnIsaW1hZ2VNb2RpZmllcnM6b319LGpMPVsic3JjIl0sVkw9e19fbmFtZToiTnV4dEltZyIscHJvcHM6e2N1c3RvbTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpbQm9vbGVhbixTdHJpbmcsTnVtYmVyLEFycmF5XSxyZXF1aXJlZDohMX0scGxhY2Vob2xkZXJDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNyYzp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGZvcm1hdDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHF1YWxpdHk6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiExfSxiYWNrZ3JvdW5kOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZml0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kaWZpZXJzOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0scHJlc2V0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJvdmlkZXI6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxkZW5zaXRpZXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmVsb2FkOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHdpZHRoOnt0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0saGVpZ2h0Ont0eXBlOltTdHJpbmcsTnVtYmVyXSxyZXF1aXJlZDohMX0sY3Jvc3NvcmlnaW46e3R5cGU6W1N0cmluZyxCb29sZWFuXSxyZXF1aXJlZDohMX0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJsb2FkIiwiZXJyb3IiXSxzZXR1cChlLHtleHBvc2U6dCxlbWl0Om59KXtjb25zdCByPWUsbz1uLHM9bncoKSx7cHJvdmlkZXJPcHRpb25zOmksbm9ybWFsaXplZEF0dHJzOmEsaW1hZ2VNb2RpZmllcnM6bH09ekwociksdT1OKCgpPT5zLmdldFNpemVzKHIuc3JjLHsuLi5pLnZhbHVlLHNpemVzOnIuc2l6ZXMsZGVuc2l0aWVzOnIuZGVuc2l0aWVzLG1vZGlmaWVyczpsLnZhbHVlfSkpLGM9RyghMSksZj1veCgpLGQ9TigoKT0+KHsuLi5hLnZhbHVlLCJkYXRhLW51eHQtaW1nIjoiIiwuLi4hci5wbGFjZWhvbGRlcnx8Yy52YWx1ZT97c2l6ZXM6dS52YWx1ZS5zaXplcyxzcmNzZXQ6dS52YWx1ZS5zcmNzZXR9Ont9LC4uLmZ9KSkscD1OKCgpPT57aWYoYy52YWx1ZSlyZXR1cm4hMTtjb25zdCB2PXIucGxhY2Vob2xkZXI9PT0iIj9bMTAsMTBdOnIucGxhY2Vob2xkZXI7aWYoIXYpcmV0dXJuITE7aWYodHlwZW9mIHY9PSJzdHJpbmciKXJldHVybiB2O2NvbnN0W2g9MTAsYj1oLHg9NTAsUz0zXT1BcnJheS5pc0FycmF5KHYpP3Y6dHlwZW9mIHY9PSJudW1iZXIiP1t2XTpbXTtyZXR1cm4gcyhyLnNyYyx7Li4ubC52YWx1ZSx3aWR0aDpoLGhlaWdodDpiLHF1YWxpdHk6eCxibHVyOlN9LGkudmFsdWUpfSksbT1OKCgpPT5yLnNpemVzP3UudmFsdWUuc3JjOnMoci5zcmMsbC52YWx1ZSxpLnZhbHVlKSkseT1OKCgpPT5wLnZhbHVlfHxtLnZhbHVlKSxfPUJlKCkuaXNIeWRyYXRpbmcsdz1TcygiaW1nRWwiKTtyZXR1cm4gdCh7aW1nRWw6d30pLG90KCgpPT57aWYocC52YWx1ZXx8ci5jdXN0b20pe2NvbnN0IHY9bmV3IEltYWdlO20udmFsdWUmJih2LnNyYz1tLnZhbHVlKSxyLnNpemVzJiYodi5zaXplcz11LnZhbHVlLnNpemVzfHwiIix2LnNyY3NldD11LnZhbHVlLnNyY3NldCksdi5kZWNvZGU/di5kZWNvZGUoKS50aGVuKCgpPT57Yy52YWx1ZT0hMCxvKCJsb2FkIixuZXcgRXZlbnQoImxvYWQiKSl9KS5jYXRjaChoPT57bygiZXJyb3IiLGgpfSk6KHYub25sb2FkPWg9PntjLnZhbHVlPSEwLG8oImxvYWQiLGgpfSx2Lm9uZXJyb3I9aD0+e28oImVycm9yIixoKX0pLEZMKCJudXh0LWltYWdlIik7cmV0dXJufXcudmFsdWUmJih3LnZhbHVlLmNvbXBsZXRlJiZfJiYody52YWx1ZS5nZXRBdHRyaWJ1dGUoImRhdGEtZXJyb3IiKT9vKCJlcnJvciIsbmV3IEV2ZW50KCJlcnJvciIpKTpvKCJsb2FkIixuZXcgRXZlbnQoImxvYWQiKSkpLHcudmFsdWUub25sb2FkPXY9PntvKCJsb2FkIix2KX0sdy52YWx1ZS5vbmVycm9yPXY9PntvKCJlcnJvciIsdil9KX0pLCh2LGgpPT5lLmN1c3RvbT9VKHYuJHNsb3RzLCJkZWZhdWx0Iix4dChmZSh7a2V5OjF9LHtpbWdBdHRyczpkLnZhbHVlLGlzTG9hZGVkOmMudmFsdWUsc3JjOnkudmFsdWV9KSkpOihSKCksX2UoImltZyIsZmUoe2tleTowLHJlZl9rZXk6ImltZ0VsIixyZWY6dyxjbGFzczpwLnZhbHVlP2UucGxhY2Vob2xkZXJDbGFzczp2b2lkIDB9LGQudmFsdWUse3NyYzp5LnZhbHVlfSksbnVsbCwxNixqTCkpfX0sVUw9T2JqZWN0LmFzc2lnbihWTCx7X19uYW1lOiJOdXh0SW1nIn0pLEhMPXtzbG90czp7cm9vdDoiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wIHNlbGVjdC1ub25lIHJvdW5kZWQtZnVsbCBhbGlnbi1taWRkbGUgYmctZWxldmF0ZWQiLGltYWdlOiJoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtW2luaGVyaXRdIG9iamVjdC1jb3ZlciIsZmFsbGJhY2s6ImZvbnQtbWVkaXVtIHRleHQtbXV0ZWQgdHJ1bmNhdGUiLGljb246InRleHQtbXV0ZWQgc2hyaW5rLTAifSx2YXJpYW50czp7c2l6ZTp7IjN4cyI6e3Jvb3Q6InNpemUtNCB0ZXh0LVs4cHhdIn0sIjJ4cyI6e3Jvb3Q6InNpemUtNSB0ZXh0LVsxMHB4XSJ9LHhzOntyb290OiJzaXplLTYgdGV4dC14cyJ9LHNtOntyb290OiJzaXplLTcgdGV4dC1zbSJ9LG1kOntyb290OiJzaXplLTggdGV4dC1iYXNlIn0sbGc6e3Jvb3Q6InNpemUtOSB0ZXh0LWxnIn0seGw6e3Jvb3Q6InNpemUtMTAgdGV4dC14bCJ9LCIyeGwiOntyb290OiJzaXplLTExIHRleHQtWzIycHhdIn0sIjN4bCI6e3Jvb3Q6InNpemUtMTIgdGV4dC0yeGwifX19LGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQifX0sVW89T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVQXZhdGFyIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3JjOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYWx0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0ZXh0Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjaGlwOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHN0eWxlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZSxuPU4oKCk9PnR5cGVvZiB0LmFzPT0ic3RyaW5nInx8dHlwZW9mIHQuYXM/LnJlbmRlcj09ImZ1bmN0aW9uIj97cm9vdDp0LmFzfTptbih0LmFzLHtyb290OiJzcGFuIn0pKSxyPU4oKCk9PnQudGV4dHx8KHQuYWx0fHwiIikuc3BsaXQoIiAiKS5tYXAoZD0+ZC5jaGFyQXQoMCkpLmpvaW4oIiIpLnN1YnN0cmluZygwLDIpKSxvPVN0KCkscz1MbigiYXZhdGFyIix0KSx7c2l6ZTppfT1EMCh0KSxhPU4oKCk9PnV0KHtleHRlbmQ6dXQoSEwpLC4uLm8udWk/LmF2YXRhcnx8e319KSh7c2l6ZTppLnZhbHVlfSkpLGw9TigoKT0+YS52YWx1ZS5yb290KHtjbGFzczpbcy52YWx1ZT8ucm9vdCx0LmNsYXNzXX0pKSx1PU4oKCk9Pntjb25zdCBkPWwudmFsdWUuc3BsaXQoIiAiKS5maW5kKHA9Pi9ec2l6ZS1cZCskLy50ZXN0KHApKTtpZihkKXtjb25zdCBwPU51bWJlci5wYXJzZUZsb2F0KGQuc3BsaXQoIi0iKVsxXT8/IiIpO2lmKCFOdW1iZXIuaXNOYU4ocCkpcmV0dXJuIHAqNH1yZXR1cm4gbnVsbH0pLGM9RyghMSk7UGUoKCk9PnQuc3JjLCgpPT57Yy52YWx1ZSYmKGMudmFsdWU9ITEpfSk7ZnVuY3Rpb24gZigpe2MudmFsdWU9ITB9cmV0dXJuKGQscCk9PihSKCksJChGbih0LmNoaXA/R2w6ZyhNZSkpLGZlKHthczpuLnZhbHVlLnJvb3R9LHQuY2hpcD90eXBlb2YgdC5jaGlwPT0ib2JqZWN0Ij97aW5zZXQ6ITAsLi4udC5jaGlwfTp7aW5zZXQ6ITB9Ont9LHsiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6bC52YWx1ZSxzdHlsZTp0LnN0eWxlfSkse2RlZmF1bHQ6TSgoKT0+W2Uuc3JjJiYhYy52YWx1ZT8oUigpLCQoRm4obi52YWx1ZS5pbWd8fGcoVUwpKSxmZSh7a2V5OjAsc3JjOmUuc3JjLGFsdDplLmFsdCx3aWR0aDp1LnZhbHVlLGhlaWdodDp1LnZhbHVlfSxkLiRhdHRycyx7ImRhdGEtc2xvdCI6ImltYWdlIixjbGFzczphLnZhbHVlLmltYWdlKHtjbGFzczpnKHMpPy5pbWFnZX0pLG9uRXJyb3I6Zn0pLG51bGwsMTYsWyJzcmMiLCJhbHQiLCJ3aWR0aCIsImhlaWdodCIsImNsYXNzIl0pKTooUigpLCQoZyhqbykseHQoZmUoe2tleToxfSxkLiRhdHRycykpLHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix7fSwoKT0+W2UuaWNvbj8oUigpLCQoX24se2tleTowLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczp1ZShhLnZhbHVlLmljb24oe2NsYXNzOmcocyk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJmYWxsYmFjayIsY2xhc3M6dWUoYS52YWx1ZS5mYWxsYmFjayh7Y2xhc3M6ZyhzKT8uZmFsbGJhY2t9KSl9LHJ0KHIudmFsdWV8fCLCoCIpLDMpKV0pXSksXzozfSwxNikpXSksXzozfSwxNixbImFzIiwiY2xhc3MiLCJzdHlsZSJdKSl9fSksZWY9e19fbmFtZToiVUxpbmtCYXNlIixwcm9wczp7YXM6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hdmlnYXRlOnt0eXBlOkZ1bmN0aW9uLHJlcXVpcmVkOiExfSx0YXJnZXQ6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGlzRXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2NvbnN0IHQ9ZTtmdW5jdGlvbiBuKHIpe2lmKHQuZGlzYWJsZWQpe3Iuc3RvcFByb3BhZ2F0aW9uKCksci5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1pZih0Lm9uQ2xpY2spZm9yKGNvbnN0IG8gb2YgQXJyYXkuaXNBcnJheSh0Lm9uQ2xpY2spP3Qub25DbGljazpbdC5vbkNsaWNrXSlvKHIpO3QuaHJlZiYmdC5uYXZpZ2F0ZSYmIXQuaXNFeHRlcm5hbCYmdC5uYXZpZ2F0ZShyKX1yZXR1cm4ocixvKT0+KFIoKSwkKGcoTWUpLGZlKGUuaHJlZj97YXM6ImEiLGhyZWY6ZS5kaXNhYmxlZD92b2lkIDA6ZS5ocmVmLCJhcmlhLWRpc2FibGVkIjplLmRpc2FibGVkPyJ0cnVlIjp2b2lkIDAscm9sZTplLmRpc2FibGVkPyJsaW5rIjp2b2lkIDAsdGFiaW5kZXg6ZS5kaXNhYmxlZD8tMTp2b2lkIDB9OmUuYXM9PT0iYnV0dG9uIj97YXM6ZS5hcyx0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkfTp7YXM6ZS5hc30se3JlbDplLnJlbCx0YXJnZXQ6ZS50YXJnZXQsb25DbGljazpufSkse2RlZmF1bHQ6TSgoKT0+W1Uoci4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYsWyJyZWwiLCJ0YXJnZXQiXSkpfX0sV0w9e2Jhc2U6ImZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5Iix2YXJpYW50czp7YWN0aXZlOnt0cnVlOiJ0ZXh0LXByaW1hcnkiLGZhbHNlOiJ0ZXh0LW11dGVkIn0sZGlzYWJsZWQ6e3RydWU6ImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTc1In19LGNvbXBvdW5kVmFyaWFudHM6W3thY3RpdmU6ITEsZGlzYWJsZWQ6ITEsY2xhc3M6WyJob3Zlcjp0ZXh0LWRlZmF1bHQiLCJ0cmFuc2l0aW9uLWNvbG9ycyJdfV19LEdMPU9iamVjdC5hc3NpZ24oe2luaGVyaXRBdHRyczohMX0se19fbmFtZToiVUxpbmsiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6ImJ1dHRvbiJ9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJidXR0b24ifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZXhhY3Q6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3RRdWVyeTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxleGFjdEhhc2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saW5hY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGN1c3RvbTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyYXc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0saHJlZjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxleHRlcm5hbDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0YXJnZXQ6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LHJlbDp7dHlwZTpbU3RyaW5nLE9iamVjdCxudWxsXSxyZXF1aXJlZDohMX0sbm9SZWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJlZmV0Y2hlZENsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJlZmV0Y2hPbjp7dHlwZTpbU3RyaW5nLE9iamVjdF0scmVxdWlyZWQ6ITF9LG5vUHJlZmV0Y2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdTbGFzaDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFjdGl2ZUNsYXNzOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXhhY3RBY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFyaWFDdXJyZW50VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6InBhZ2UifSx2aWV3VHJhbnNpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZXBsYWNlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUsbj1BbCgpLHI9U3QoKSxvPUJlKCkscz1wbyh6UCh0LCJhcyIsInR5cGUiLCJkaXNhYmxlZCIsImFjdGl2ZSIsImV4YWN0IiwiZXhhY3RRdWVyeSIsImV4YWN0SGFzaCIsImFjdGl2ZUNsYXNzIiwiaW5hY3RpdmVDbGFzcyIsInRvIiwiaHJlZiIsInJhdyIsImN1c3RvbSIsImNsYXNzIikpLGk9TigoKT0+dXQoe2V4dGVuZDp1dChXTCksLi4ubW4oe3ZhcmlhbnRzOnthY3RpdmU6e3RydWU6cmwoci51aT8ubGluaz8udmFyaWFudHM/LmFjdGl2ZT8udHJ1ZSx0LmFjdGl2ZUNsYXNzKSxmYWxzZTpybChyLnVpPy5saW5rPy52YXJpYW50cz8uYWN0aXZlPy5mYWxzZSx0LmluYWN0aXZlQ2xhc3MpfX19LHIudWk/Lmxpbmt8fHt9KX0pKSxhPU4oKCk9Pntjb25zdCBkPXQudG8/P3QuaHJlZjtpZighZHx8dHlwZW9mIGQhPSJzdHJpbmcifHx0LmV4dGVybmFsfHxObihkLHthY2NlcHRSZWxhdGl2ZTohMH0pKXJldHVybiBkO2NvbnN0IHA9by4kbG9jYWxlUGF0aDtyZXR1cm4gcD9wKGQpOmR9KSxsPU4oKCk9PiFhLnZhbHVlfHx0LmV4dGVybmFsPyExOnR5cGVvZiBhLnZhbHVlIT0ic3RyaW5nIj8hMDohKE5uKGEudmFsdWUse2FjY2VwdFJlbGF0aXZlOiEwfSl8fHQudGFyZ2V0JiZ0LnRhcmdldCE9PSJfc2VsZiIpKSx1PU4oKCk9PnQubm9SZWw/bnVsbDp0LnJlbD90LnJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIpO2Z1bmN0aW9uIGMoe3JvdXRlOmQsaXNBY3RpdmU6cCxpc0V4YWN0QWN0aXZlOm19PXt9KXtpZih0LmFjdGl2ZSE9PXZvaWQgMClyZXR1cm4gdC5hY3RpdmU7aWYoIWEudmFsdWUpcmV0dXJuITE7aWYodC5leGFjdFF1ZXJ5PT09InBhcnRpYWwiKXtpZigheEwoZC5xdWVyeSxuLnF1ZXJ5KSlyZXR1cm4hMX1lbHNlIGlmKHQuZXhhY3RRdWVyeT09PSEwJiYhSWwoZC5xdWVyeSxuLnF1ZXJ5KSlyZXR1cm4hMTtyZXR1cm4gdC5leGFjdEhhc2gmJmQuaGFzaCE9PW4uaGFzaD8hMTohISh0LmV4YWN0JiZtfHwhdC5leGFjdCYmcCl9ZnVuY3Rpb24gZih7cm91dGU6ZCxpc0FjdGl2ZTpwLGlzRXhhY3RBY3RpdmU6bX09e30pe2NvbnN0IHk9Yyh7cm91dGU6ZCxpc0FjdGl2ZTpwLGlzRXhhY3RBY3RpdmU6bX0pO3JldHVybiB0LnJhdz9bdC5jbGFzcyx5P3QuYWN0aXZlQ2xhc3M6dC5pbmFjdGl2ZUNsYXNzXTppLnZhbHVlKHtjbGFzczp0LmNsYXNzLGFjdGl2ZTp5LGRpc2FibGVkOnQuZGlzYWJsZWR9KX1yZXR1cm4oZCxwKT0+e2NvbnN0IG09Y0M7cmV0dXJuIGwudmFsdWU/KFIoKSwkKG0sZmUoe2tleTowfSxnKHMpLHt0bzphLnZhbHVlLGN1c3RvbToiIn0pLHtkZWZhdWx0Ok0oKHtocmVmOnksbmF2aWdhdGU6Xyxyb3V0ZTp3LGlzQWN0aXZlOnYsaXNFeGFjdEFjdGl2ZTpoLC4uLmJ9KT0+W2UuY3VzdG9tPyhSKCksJChnKGpvKSx7a2V5OjB9LHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix4dChNdCh7Li4uZC4kYXR0cnMsLi4uZS5leGFjdCYmaD97ImFyaWEtY3VycmVudCI6dC5hcmlhQ3VycmVudFZhbHVlfTp7fSxhczplLmFzLHR5cGU6ZS50eXBlLGRpc2FibGVkOmUuZGlzYWJsZWQsaHJlZjp5LG5hdmlnYXRlOl8scmVsOmIucmVsLHRhcmdldDpiLnRhcmdldCxpc0V4dGVybmFsOmIuaXNFeHRlcm5hbCxhY3RpdmU6Yyh7cm91dGU6dyxpc0FjdGl2ZTp2LGlzRXhhY3RBY3RpdmU6aH0pfSkpKV0pLF86Mn0sMTAyNCkpOihSKCksJChlZixmZSh7a2V5OjF9LHsuLi5kLiRhdHRycywuLi5lLmV4YWN0JiZoP3siYXJpYS1jdXJyZW50Ijp0LmFyaWFDdXJyZW50VmFsdWV9Ont9LGFzOmUuYXMsdHlwZTplLnR5cGUsZGlzYWJsZWQ6ZS5kaXNhYmxlZCxocmVmOnksbmF2aWdhdGU6XyxyZWw6Yi5yZWwsdGFyZ2V0OmIudGFyZ2V0LGlzRXh0ZXJuYWw6Yi5pc0V4dGVybmFsfSx7Y2xhc3M6Zih7cm91dGU6dyxpc0FjdGl2ZTp2LGlzRXhhY3RBY3RpdmU6aH0pfSkse2RlZmF1bHQ6TSgoKT0+W1UoZC4kc2xvdHMsImRlZmF1bHQiLHthY3RpdmU6Yyh7cm91dGU6dyxpc0FjdGl2ZTp2LGlzRXhhY3RBY3RpdmU6aH0pfSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKSldKSxfOjN9LDE2LFsidG8iXSkpOmUuY3VzdG9tPyhSKCksJChnKGpvKSx7a2V5OjF9LHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix4dChNdCh7Li4uZC4kYXR0cnMsYXM6ZS5hcyx0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkLC4uLmEudmFsdWU/e2hyZWY6U3RyaW5nKGEudmFsdWUpLHRhcmdldDp0LnRhcmdldCxyZWw6dS52YWx1ZSxpc0V4dGVybmFsOiEwfTp7fSxhY3RpdmU6ZS5hY3RpdmU/PyExfSkpKV0pLF86M30pKTooUigpLCQoZWYsZmUoe2tleToyfSx7Li4uZC4kYXR0cnMsYXM6ZS5hcyx0eXBlOmUudHlwZSxkaXNhYmxlZDplLmRpc2FibGVkLC4uLmEudmFsdWU/e2hyZWY6U3RyaW5nKGEudmFsdWUpLHRhcmdldDp0LnRhcmdldCxyZWw6dS52YWx1ZSxpc0V4dGVybmFsOiEwfTp7fX0se2NsYXNzOmYoKX0pLHtkZWZhdWx0Ok0oKCk9PltVKGQuJHNsb3RzLCJkZWZhdWx0Iix7YWN0aXZlOmUuYWN0aXZlPz8hMX0pXSksXzozfSwxNixbImNsYXNzIl0pKX19fSksS0w9e3Nsb3RzOntiYXNlOlsicm91bmRlZC1tZCBmb250LW1lZGl1bSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGFyaWEtZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNzUgYXJpYS1kaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsYWJlbDoidHJ1bmNhdGUiLGxlYWRpbmdJY29uOiJzaHJpbmstMCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1lLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXMtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0iLHZlcnRpY2FsOiJub3Qtb25seTpmaXJzdDpyb3VuZGVkLWItbm9uZSBub3Qtb25seTpsYXN0OnJvdW5kZWQtdC1ub25lIG5vdC1sYXN0Om5vdC1maXJzdDpyb3VuZGVkLW5vbmUgZm9jdXMtdmlzaWJsZTp6LVsxXSJ9LGNvbG9yOntwcmltYXJ5OiIiLHNlY29uZGFyeToiIixzdWNjZXNzOiIiLGluZm86IiIsd2FybmluZzoiIixlcnJvcjoiIixuZXV0cmFsOiIifSx2YXJpYW50Ontzb2xpZDoiIixvdXRsaW5lOiIiLHNvZnQ6IiIsc3VidGxlOiIiLGdob3N0OiIiLGxpbms6IiJ9LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC14cyBnYXAtMSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00In0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbSBnYXAtMS41IixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSJ9LGxnOntiYXNlOiJweC0zIHB5LTIgdGV4dC1zbSBnYXAtMiIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSx4bDp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZSBnYXAtMiIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6InhzIix0cmFpbGluZ0ljb246InNpemUtNiJ9fSxibG9jazp7dHJ1ZTp7YmFzZToidy1mdWxsIGp1c3RpZnktY2VudGVyIix0cmFpbGluZ0ljb246Im1zLWF1dG8ifX0sc3F1YXJlOnt0cnVlOiIifSxsZWFkaW5nOnt0cnVlOiIifSx0cmFpbGluZzp7dHJ1ZToiIn0sbG9hZGluZzp7dHJ1ZToiIn0sYWN0aXZlOnt0cnVlOntiYXNlOiIifSxmYWxzZTp7YmFzZToiIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1wcmltYXJ5IGhvdmVyOmJnLXByaW1hcnkvNzUgYWN0aXZlOmJnLXByaW1hcnkvNzUgZGlzYWJsZWQ6YmctcHJpbWFyeSBhcmlhLWRpc2FibGVkOmJnLXByaW1hcnkgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1zZWNvbmRhcnkgaG92ZXI6Ymctc2Vjb25kYXJ5Lzc1IGFjdGl2ZTpiZy1zZWNvbmRhcnkvNzUgZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5IGFyaWEtZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5IGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2xpZCIsY2xhc3M6InRleHQtaW52ZXJ0ZWQgYmctc3VjY2VzcyBob3ZlcjpiZy1zdWNjZXNzLzc1IGFjdGl2ZTpiZy1zdWNjZXNzLzc1IGRpc2FibGVkOmJnLXN1Y2Nlc3MgYXJpYS1kaXNhYmxlZDpiZy1zdWNjZXNzIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWluZm8gaG92ZXI6YmctaW5mby83NSBhY3RpdmU6YmctaW5mby83NSBkaXNhYmxlZDpiZy1pbmZvIGFyaWEtZGlzYWJsZWQ6YmctaW5mbyBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy13YXJuaW5nIGhvdmVyOmJnLXdhcm5pbmcvNzUgYWN0aXZlOmJnLXdhcm5pbmcvNzUgZGlzYWJsZWQ6Ymctd2FybmluZyBhcmlhLWRpc2FibGVkOmJnLXdhcm5pbmcgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29saWQiLGNsYXNzOiJ0ZXh0LWludmVydGVkIGJnLWVycm9yIGhvdmVyOmJnLWVycm9yLzc1IGFjdGl2ZTpiZy1lcnJvci83NSBkaXNhYmxlZDpiZy1lcnJvciBhcmlhLWRpc2FibGVkOmJnLWVycm9yIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzUwIHRleHQtcHJpbWFyeSBob3ZlcjpiZy1wcmltYXJ5LzEwIGFjdGl2ZTpiZy1wcmltYXJ5LzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkvNTAgdGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc2Vjb25kYXJ5LzEwIGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoib3V0bGluZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MvNTAgdGV4dC1zdWNjZXNzIGhvdmVyOmJnLXN1Y2Nlc3MvMTAgYWN0aXZlOmJnLXN1Y2Nlc3MvMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzUwIHRleHQtaW5mbyBob3ZlcjpiZy1pbmZvLzEwIGFjdGl2ZTpiZy1pbmZvLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZy81MCB0ZXh0LXdhcm5pbmcgaG92ZXI6Ymctd2FybmluZy8xMCBhY3RpdmU6Ymctd2FybmluZy8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6Im91dGxpbmUiLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvci81MCB0ZXh0LWVycm9yIGhvdmVyOmJnLWVycm9yLzEwIGFjdGl2ZTpiZy1lcnJvci8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgYmctcHJpbWFyeS8xMCBob3ZlcjpiZy1wcmltYXJ5LzE1IGFjdGl2ZTpiZy1wcmltYXJ5LzE1IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLXByaW1hcnkvMTUgZGlzYWJsZWQ6YmctcHJpbWFyeS8xMCBhcmlhLWRpc2FibGVkOmJnLXByaW1hcnkvMTAifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IGJnLXNlY29uZGFyeS8xMCBob3ZlcjpiZy1zZWNvbmRhcnkvMTUgYWN0aXZlOmJnLXNlY29uZGFyeS8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1zZWNvbmRhcnkvMTUgZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIGFyaWEtZGlzYWJsZWQ6Ymctc2Vjb25kYXJ5LzEwIn0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1zdWNjZXNzIGJnLXN1Y2Nlc3MvMTAgaG92ZXI6Ymctc3VjY2Vzcy8xNSBhY3RpdmU6Ymctc3VjY2Vzcy8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1zdWNjZXNzLzE1IGRpc2FibGVkOmJnLXN1Y2Nlc3MvMTAgYXJpYS1kaXNhYmxlZDpiZy1zdWNjZXNzLzEwIn0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC1pbmZvIGJnLWluZm8vMTAgaG92ZXI6YmctaW5mby8xNSBhY3RpdmU6YmctaW5mby8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy1pbmZvLzE1IGRpc2FibGVkOmJnLWluZm8vMTAgYXJpYS1kaXNhYmxlZDpiZy1pbmZvLzEwIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50OiJzb2Z0IixjbGFzczoidGV4dC13YXJuaW5nIGJnLXdhcm5pbmcvMTAgaG92ZXI6Ymctd2FybmluZy8xNSBhY3RpdmU6Ymctd2FybmluZy8xNSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy13YXJuaW5nLzE1IGRpc2FibGVkOmJnLXdhcm5pbmcvMTAgYXJpYS1kaXNhYmxlZDpiZy13YXJuaW5nLzEwIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDoic29mdCIsY2xhc3M6InRleHQtZXJyb3IgYmctZXJyb3IvMTAgaG92ZXI6YmctZXJyb3IvMTUgYWN0aXZlOmJnLWVycm9yLzE1IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWVycm9yLzE1IGRpc2FibGVkOmJnLWVycm9yLzEwIGFyaWEtZGlzYWJsZWQ6YmctZXJyb3IvMTAifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtcHJpbWFyeSByaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5LzI1IGJnLXByaW1hcnkvMTAgaG92ZXI6YmctcHJpbWFyeS8xNSBhY3RpdmU6YmctcHJpbWFyeS8xNSBkaXNhYmxlZDpiZy1wcmltYXJ5LzEwIGFyaWEtZGlzYWJsZWQ6YmctcHJpbWFyeS8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoic3VidGxlIixjbGFzczoidGV4dC1zZWNvbmRhcnkgcmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5LzI1IGJnLXNlY29uZGFyeS8xMCBob3ZlcjpiZy1zZWNvbmRhcnkvMTUgYWN0aXZlOmJnLXNlY29uZGFyeS8xNSBkaXNhYmxlZDpiZy1zZWNvbmRhcnkvMTAgYXJpYS1kaXNhYmxlZDpiZy1zZWNvbmRhcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtc3VjY2VzcyByaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzLzI1IGJnLXN1Y2Nlc3MvMTAgaG92ZXI6Ymctc3VjY2Vzcy8xNSBhY3RpdmU6Ymctc3VjY2Vzcy8xNSBkaXNhYmxlZDpiZy1zdWNjZXNzLzEwIGFyaWEtZGlzYWJsZWQ6Ymctc3VjY2Vzcy8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtaW5mbyByaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvLzI1IGJnLWluZm8vMTAgaG92ZXI6YmctaW5mby8xNSBhY3RpdmU6YmctaW5mby8xNSBkaXNhYmxlZDpiZy1pbmZvLzEwIGFyaWEtZGlzYWJsZWQ6YmctaW5mby8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InRleHQtd2FybmluZyByaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nLzI1IGJnLXdhcm5pbmcvMTAgaG92ZXI6Ymctd2FybmluZy8xNSBhY3RpdmU6Ymctd2FybmluZy8xNSBkaXNhYmxlZDpiZy13YXJuaW5nLzEwIGFyaWEtZGlzYWJsZWQ6Ymctd2FybmluZy8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJzdWJ0bGUiLGNsYXNzOiJ0ZXh0LWVycm9yIHJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yLzI1IGJnLWVycm9yLzEwIGhvdmVyOmJnLWVycm9yLzE1IGFjdGl2ZTpiZy1lcnJvci8xNSBkaXNhYmxlZDpiZy1lcnJvci8xMCBhcmlhLWRpc2FibGVkOmJnLWVycm9yLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC1wcmltYXJ5IGhvdmVyOmJnLXByaW1hcnkvMTAgYWN0aXZlOmJnLXByaW1hcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmctcHJpbWFyeS8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC1zZWNvbmRhcnkgaG92ZXI6Ymctc2Vjb25kYXJ5LzEwIGFjdGl2ZTpiZy1zZWNvbmRhcnkvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc2Vjb25kYXJ5LzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6Imdob3N0IixjbGFzczoidGV4dC1zdWNjZXNzIGhvdmVyOmJnLXN1Y2Nlc3MvMTAgYWN0aXZlOmJnLXN1Y2Nlc3MvMTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Ymctc3VjY2Vzcy8xMCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBhcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50In0se2NvbG9yOiJpbmZvIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtaW5mbyBob3ZlcjpiZy1pbmZvLzEwIGFjdGl2ZTpiZy1pbmZvLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWluZm8vMTAgZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgYXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoiZ2hvc3QiLGNsYXNzOiJ0ZXh0LXdhcm5pbmcgaG92ZXI6Ymctd2FybmluZy8xMCBhY3RpdmU6Ymctd2FybmluZy8xMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpiZy13YXJuaW5nLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6ImVycm9yIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtZXJyb3IgaG92ZXI6YmctZXJyb3IvMTAgYWN0aXZlOmJnLWVycm9yLzEwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWVycm9yLzEwIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmFyaWEtZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQifSx7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LXByaW1hcnkgaG92ZXI6dGV4dC1wcmltYXJ5Lzc1IGFjdGl2ZTp0ZXh0LXByaW1hcnkvNzUgZGlzYWJsZWQ6dGV4dC1wcmltYXJ5IGFyaWEtZGlzYWJsZWQ6dGV4dC1wcmltYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtc2Vjb25kYXJ5IGhvdmVyOnRleHQtc2Vjb25kYXJ5Lzc1IGFjdGl2ZTp0ZXh0LXNlY29uZGFyeS83NSBkaXNhYmxlZDp0ZXh0LXNlY29uZGFyeSBhcmlhLWRpc2FibGVkOnRleHQtc2Vjb25kYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtc3VjY2VzcyBob3Zlcjp0ZXh0LXN1Y2Nlc3MvNzUgYWN0aXZlOnRleHQtc3VjY2Vzcy83NSBkaXNhYmxlZDp0ZXh0LXN1Y2Nlc3MgYXJpYS1kaXNhYmxlZDp0ZXh0LXN1Y2Nlc3MgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtaW5mbyBob3Zlcjp0ZXh0LWluZm8vNzUgYWN0aXZlOnRleHQtaW5mby83NSBkaXNhYmxlZDp0ZXh0LWluZm8gYXJpYS1kaXNhYmxlZDp0ZXh0LWluZm8gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtd2FybmluZyBob3Zlcjp0ZXh0LXdhcm5pbmcvNzUgYWN0aXZlOnRleHQtd2FybmluZy83NSBkaXNhYmxlZDp0ZXh0LXdhcm5pbmcgYXJpYS1kaXNhYmxlZDp0ZXh0LXdhcm5pbmcgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6ImxpbmsiLGNsYXNzOiJ0ZXh0LWVycm9yIGhvdmVyOnRleHQtZXJyb3IvNzUgYWN0aXZlOnRleHQtZXJyb3IvNzUgZGlzYWJsZWQ6dGV4dC1lcnJvciBhcmlhLWRpc2FibGVkOnRleHQtZXJyb3IgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvbGlkIixjbGFzczoidGV4dC1pbnZlcnRlZCBiZy1pbnZlcnRlZCBob3ZlcjpiZy1pbnZlcnRlZC85MCBhY3RpdmU6YmctaW52ZXJ0ZWQvOTAgZGlzYWJsZWQ6YmctaW52ZXJ0ZWQgYXJpYS1kaXNhYmxlZDpiZy1pbnZlcnRlZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJvdXRsaW5lIixjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgdGV4dC1kZWZhdWx0IGJnLWRlZmF1bHQgaG92ZXI6YmctZWxldmF0ZWQgYWN0aXZlOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWRlZmF1bHQgYXJpYS1kaXNhYmxlZDpiZy1kZWZhdWx0IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InNvZnQiLGNsYXNzOiJ0ZXh0LWRlZmF1bHQgYmctZWxldmF0ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgYWN0aXZlOmJnLWFjY2VudGVkLzc1IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmJnLWFjY2VudGVkLzc1IGRpc2FibGVkOmJnLWVsZXZhdGVkIGFyaWEtZGlzYWJsZWQ6YmctZWxldmF0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6InN1YnRsZSIsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIHRleHQtZGVmYXVsdCBiZy1lbGV2YXRlZCBob3ZlcjpiZy1hY2NlbnRlZC83NSBhY3RpdmU6YmctYWNjZW50ZWQvNzUgZGlzYWJsZWQ6YmctZWxldmF0ZWQgYXJpYS1kaXNhYmxlZDpiZy1lbGV2YXRlZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsY2xhc3M6InRleHQtZGVmYXVsdCBob3ZlcjpiZy1lbGV2YXRlZCBhY3RpdmU6YmctZWxldmF0ZWQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6YmctZWxldmF0ZWQgaG92ZXI6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQgZGFyazpob3ZlcjpkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBob3ZlcjphcmlhLWRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6aG92ZXI6YXJpYS1kaXNhYmxlZDpiZy10cmFuc3BhcmVudCJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsY2xhc3M6InRleHQtbXV0ZWQgaG92ZXI6dGV4dC1kZWZhdWx0IGFjdGl2ZTp0ZXh0LWRlZmF1bHQgZGlzYWJsZWQ6dGV4dC1tdXRlZCBhcmlhLWRpc2FibGVkOnRleHQtbXV0ZWQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7c2l6ZToieHMiLHNxdWFyZTohMCxjbGFzczoicC0xIn0se3NpemU6InNtIixzcXVhcmU6ITAsY2xhc3M6InAtMS41In0se3NpemU6Im1kIixzcXVhcmU6ITAsY2xhc3M6InAtMS41In0se3NpemU6ImxnIixzcXVhcmU6ITAsY2xhc3M6InAtMiJ9LHtzaXplOiJ4bCIsc3F1YXJlOiEwLGNsYXNzOiJwLTIifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19XSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJzb2xpZCIsc2l6ZToibWQifX0sTnI9e19fbmFtZToiVUJ1dHRvbiIscHJvcHM6e2xhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWN0aXZlQ29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3RpdmVWYXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc3F1YXJlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGJsb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdBdXRvOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG9uQ2xpY2s6e3R5cGU6W0Z1bmN0aW9uLEFycmF5XSxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGxlYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbGVhZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHJhaWxpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdHJhaWxpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3Q6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZXhhY3RRdWVyeTp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExfSxleGFjdEhhc2g6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saW5hY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHRvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGhyZWY6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXh0ZXJuYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGFyZ2V0Ont0eXBlOltTdHJpbmcsT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxyZWw6e3R5cGU6W1N0cmluZyxPYmplY3QsbnVsbF0scmVxdWlyZWQ6ITF9LG5vUmVsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByZWZldGNoZWRDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHByZWZldGNoOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByZWZldGNoT246e3R5cGU6W1N0cmluZyxPYmplY3RdLHJlcXVpcmVkOiExfSxub1ByZWZldGNoOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nU2xhc2g6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhY3RpdmVDbGFzczp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGV4YWN0QWN0aXZlQ2xhc3M6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhcmlhQ3VycmVudFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdmlld1RyYW5zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVwbGFjZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49enIoKSxyPVN0KCksbz1MbigiYnV0dG9uIix0KSx7b3JpZW50YXRpb246cyxzaXplOml9PXdkKHQpLGE9cG8oX0wodCkpLGw9RyghMSksdT1LZSh2TCx2b2lkIDApO2FzeW5jIGZ1bmN0aW9uIGModyl7bC52YWx1ZT0hMDtjb25zdCB2PUFycmF5LmlzQXJyYXkodC5vbkNsaWNrKT90Lm9uQ2xpY2s6W3Qub25DbGlja107dHJ5e2F3YWl0IFByb21pc2UuYWxsKHYubWFwKGg9Pmg/Lih3KSkpfWZpbmFsbHl7bC52YWx1ZT0hMX19Y29uc3QgZj1OKCgpPT50LmxvYWRpbmd8fHQubG9hZGluZ0F1dG8mJihsLnZhbHVlfHx1Py52YWx1ZSYmdC50eXBlPT09InN1Ym1pdCIpKSx7aXNMZWFkaW5nOmQsaXNUcmFpbGluZzpwLGxlYWRpbmdJY29uTmFtZTptLHRyYWlsaW5nSWNvbk5hbWU6eX09S2woTigoKT0+KHsuLi50LGxvYWRpbmc6Zi52YWx1ZX0pKSksXz1OKCgpPT51dCh7ZXh0ZW5kOnV0KEtMKSwuLi5tbih7dmFyaWFudHM6e2FjdGl2ZTp7dHJ1ZTp7YmFzZTpybChyLnVpPy5idXR0b24/LnZhcmlhbnRzPy5hY3RpdmU/LnRydWU/LmJhc2UsdC5hY3RpdmVDbGFzcyl9LGZhbHNlOntiYXNlOnJsKHIudWk/LmJ1dHRvbj8udmFyaWFudHM/LmFjdGl2ZT8uZmFsc2U/LmJhc2UsdC5pbmFjdGl2ZUNsYXNzKX19fX0sci51aT8uYnV0dG9ufHx7fSl9KSh7Y29sb3I6dC5jb2xvcix2YXJpYW50OnQudmFyaWFudCxzaXplOmkudmFsdWUsbG9hZGluZzpmLnZhbHVlLGJsb2NrOnQuYmxvY2ssc3F1YXJlOnQuc3F1YXJlfHwhbi5kZWZhdWx0JiYhdC5sYWJlbCxsZWFkaW5nOmQudmFsdWUsdHJhaWxpbmc6cC52YWx1ZSxmaWVsZEdyb3VwOnMudmFsdWV9KSk7cmV0dXJuKHcsdik9PihSKCksJChHTCxmZSh7dHlwZTplLnR5cGUsZGlzYWJsZWQ6ZS5kaXNhYmxlZHx8Zi52YWx1ZX0sZyhOMCkoZyhhKSxbInR5cGUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSkse2N1c3RvbToiIn0pLHtkZWZhdWx0Ok0oKHthY3RpdmU6aCwuLi5ifSk9PltyZShlZixmZShiLHsiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6Xy52YWx1ZS5iYXNlKHtjbGFzczpbZyhvKT8uYmFzZSx0LmNsYXNzXSxhY3RpdmU6aCwuLi5oJiZlLmFjdGl2ZVZhcmlhbnQ/e3ZhcmlhbnQ6ZS5hY3RpdmVWYXJpYW50fTp7fSwuLi5oJiZlLmFjdGl2ZUNvbG9yP3tjb2xvcjplLmFjdGl2ZUNvbG9yfTp7fX0pLG9uQ2xpY2s6Y30pLHtkZWZhdWx0Ok0oKCk9PltVKHcuJHNsb3RzLCJsZWFkaW5nIix7dWk6Xy52YWx1ZX0sKCk9PltnKGQpJiZnKG0pPyhSKCksJChfbix7a2V5OjAsbmFtZTpnKG0pLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6dWUoXy52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6ZyhvKT8ubGVhZGluZ0ljb24sYWN0aXZlOmh9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5hdmF0YXI/KFIoKSwkKFVvLGZlKHtrZXk6MSxzaXplOmcobyk/LmxlYWRpbmdBdmF0YXJTaXplfHxfLnZhbHVlLmxlYWRpbmdBdmF0YXJTaXplKCl9LGUuYXZhdGFyLHsiZGF0YS1zbG90IjoibGVhZGluZ0F2YXRhciIsY2xhc3M6Xy52YWx1ZS5sZWFkaW5nQXZhdGFyKHtjbGFzczpnKG8pPy5sZWFkaW5nQXZhdGFyLGFjdGl2ZTpofSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTpkZSgiIiwhMCldKSxVKHcuJHNsb3RzLCJkZWZhdWx0Iix7dWk6Xy52YWx1ZX0sKCk9PltlLmxhYmVsIT09dm9pZCAwJiZlLmxhYmVsIT09bnVsbD8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp1ZShfLnZhbHVlLmxhYmVsKHtjbGFzczpnKG8pPy5sYWJlbCxhY3RpdmU6aH0pKX0scnQoZS5sYWJlbCksMykpOmRlKCIiLCEwKV0pLFUody4kc2xvdHMsInRyYWlsaW5nIix7dWk6Xy52YWx1ZX0sKCk9PltnKHApJiZnKHkpPyhSKCksJChfbix7a2V5OjAsbmFtZTpnKHkpLCJkYXRhLXNsb3QiOiJ0cmFpbGluZ0ljb24iLGNsYXNzOnVlKF8udmFsdWUudHJhaWxpbmdJY29uKHtjbGFzczpnKG8pPy50cmFpbGluZ0ljb24sYWN0aXZlOmh9KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86M30sMTYsWyJ0eXBlIiwiZGlzYWJsZWQiXSkpfX07ZnVuY3Rpb24gUUwoKXtmdW5jdGlvbiBlKHIpe3JldHVybiBMZSgiL2FwaS9ub3RpZmljYXRpb25zIix7cXVlcnk6ey4uLnJ9fSl9ZnVuY3Rpb24gdCgpe3JldHVybiBMZSgiL2FwaS9ub3RpZmljYXRpb25zL3VucmVhZC1jb3VudCIpfWZ1bmN0aW9uIG4ocil7cmV0dXJuIExlKCIvYXBpL25vdGlmaWNhdGlvbnMvOmlkL3JlYWQiLHttZXRob2Q6IlBBVENIIixxdWVyeTp7aWQ6cn19KX1yZXR1cm57ZmV0Y2hOb3RpZmljYXRpb25zOmUsZmV0Y2hVbnJlYWRDb3VudDp0LG1hcmtOb3RpZmljYXRpb25SZWFkOm59fWNvbnN0IFNoPTIwLHJ3PVl5KCJub3RpZmljYXRpb25zIiwoKT0+e2NvbnN0IGU9UUwoKSx0PUcoITEpLG49RyhbXSkscj1HKDApLG89RyghMSkscz1HKCExKSxpPUcoMCk7YXN5bmMgZnVuY3Rpb24gYSgpe3RyeXtjb25zdHtjb3VudDpkfT1hd2FpdCBlLmZldGNoVW5yZWFkQ291bnQoKTtyLnZhbHVlPWR9Y2F0Y2h7fX1hc3luYyBmdW5jdGlvbiBsKCl7cy52YWx1ZT0hMDt0cnl7Y29uc3R7aXRlbXM6ZCxoYXNNb3JlOnB9PWF3YWl0IGUuZmV0Y2hOb3RpZmljYXRpb25zKHtvZmZzZXQ6MCxsaW1pdDpTaH0pO24udmFsdWU9ZCxpLnZhbHVlPWQubGVuZ3RoLG8udmFsdWU9cH1maW5hbGx5e3MudmFsdWU9ITF9fWFzeW5jIGZ1bmN0aW9uIHUoKXtpZighKCFvLnZhbHVlfHxzLnZhbHVlKSl7cy52YWx1ZT0hMDt0cnl7Y29uc3R7aXRlbXM6ZCxoYXNNb3JlOnB9PWF3YWl0IGUuZmV0Y2hOb3RpZmljYXRpb25zKHtvZmZzZXQ6aS52YWx1ZSxsaW1pdDpTaH0pO24udmFsdWU9Wy4uLm4udmFsdWUsLi4uZF0saS52YWx1ZSs9ZC5sZW5ndGgsby52YWx1ZT1wfWZpbmFsbHl7cy52YWx1ZT0hMX19fWFzeW5jIGZ1bmN0aW9uIGMoKXt0LnZhbHVlPSEwLG4udmFsdWUubGVuZ3RoPT09MCYmYXdhaXQgbCgpfWFzeW5jIGZ1bmN0aW9uIGYoZCl7Y29uc3QgcD1hd2FpdCBlLm1hcmtOb3RpZmljYXRpb25SZWFkKGQpO24udmFsdWU9bi52YWx1ZS5tYXAobT0+bS5pZD09PWQ/cDptKSxyLnZhbHVlPjAmJnIudmFsdWUtLX1yZXR1cm57aXNPcGVuOnQsaXRlbXM6bix1bnJlYWRDb3VudDpyLGhhc01vcmU6byxsb2FkaW5nOnMscmVmcmVzaFVucmVhZENvdW50OmEsbG9hZEluaXRpYWw6bCxsb2FkTW9yZTp1LG9wZW46YyxtYXJrUmVhZDpmfX0pLFlMPXNlKHtfX25hbWU6Ik5vdGlmaWNhdGlvbnNCZWxsIixzZXR1cChlKXtjb25zdCB0PXJ3KCk7cmV0dXJuIG90KCgpPT57dC5yZWZyZXNoVW5yZWFkQ291bnQoKX0pLChuLHIpPT57Y29uc3Qgbz1fbixzPUdsLGk9TnI7cmV0dXJuIFIoKSwkKGkse2NvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsc3F1YXJlOiIiLCJhcmlhLWxhYmVsIjoiTm90aWZpY2F0aW9ucyIsImRhdGEtdGVzdGlkIjoibm90aWZpY2F0aW9ucy1iZWxsIixvbkNsaWNrOnJbMF18fChyWzBdPWE9PmcodCkub3BlbigpKX0se2RlZmF1bHQ6TSgoKT0+W3JlKHMse2NvbG9yOiJlcnJvciIsc2hvdzpnKHQpLnVucmVhZENvdW50PjAsaW5zZXQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShvLHtuYW1lOiJpLWx1Y2lkZS1iZWxsIixjbGFzczoic2l6ZS01IHNocmluay0wIn0pXSksXzoxfSw4LFsic2hvdyJdKV0pLF86MX0pfX19KSxKTD1PYmplY3QuYXNzaWduKFlMLHtfX25hbWU6Ik5vdGlmaWNhdGlvbnNCZWxsIn0pO2Z1bmN0aW9uIFhMKGUpe3JldHVybih0LG4pPT5aTCh0LG4sZyhlKSl9ZnVuY3Rpb24gWkwoZSx0LG4pe3JldHVybiB3bihuLGBtZXNzYWdlcy4ke2V9YCxlKS5yZXBsYWNlKC9ceyhcdyspXH0vZywobyxzKT0+YCR7dD8uW3NdPz9geyR7c319YH1gKX1mdW5jdGlvbiBlJChlKXtjb25zdCB0PU4oKCk9PmcoZSkubmFtZSksbj1OKCgpPT5nKGUpLmNvZGUpLHI9TigoKT0+ZyhlKS5kaXIpO3JldHVybntsYW5nOnQsY29kZTpuLGRpcjpyLGxvY2FsZTokZShlKT9lOkcoZSksdDpYTChlKX19ZnVuY3Rpb24gdCQoZSl7cmV0dXJuIG1uKGUse2RpcjoibHRyIn0pfWNvbnN0IGtoPXQkKHtuYW1lOiJFbmdsaXNoIixjb2RlOiJlbiIsbWVzc2FnZXM6e2FsZXJ0OntjbG9zZToiQ2xvc2UifSxhdXRoRm9ybTp7aGlkZVBhc3N3b3JkOiJIaWRlIHBhc3N3b3JkIixzaG93UGFzc3dvcmQ6IlNob3cgcGFzc3dvcmQiLHN1Ym1pdDoiQ29udGludWUifSxiYW5uZXI6e2Nsb3NlOiJDbG9zZSJ9LGNhbGVuZGFyOntuZXh0TW9udGg6Ik5leHQgbW9udGgiLG5leHRZZWFyOiJOZXh0IHllYXIiLHByZXZNb250aDoiUHJldmlvdXMgbW9udGgiLHByZXZZZWFyOiJQcmV2aW91cyB5ZWFyIn0sY2Fyb3VzZWw6e2RvdHM6IkNob29zZSBzbGlkZSB0byBkaXNwbGF5Iixnb3RvOiJHbyB0byBzbGlkZSB7c2xpZGV9IixuZXh0OiJOZXh0IixwcmV2OiJQcmV2In0sY2hhdFByb21wdDp7cGxhY2Vob2xkZXI6IlR5cGUgeW91ciBtZXNzYWdlIGhlcmXigKYifSxjaGF0UHJvbXB0U3VibWl0OntsYWJlbDoiU2VuZCBwcm9tcHQifSxjb2xvck1vZGU6e2Rhcms6IkRhcmsiLGxpZ2h0OiJMaWdodCIsc3dpdGNoVG9EYXJrOiJTd2l0Y2ggdG8gZGFyayBtb2RlIixzd2l0Y2hUb0xpZ2h0OiJTd2l0Y2ggdG8gbGlnaHQgbW9kZSIsc3lzdGVtOiJTeXN0ZW0ifSxjb21tYW5kUGFsZXR0ZTp7YmFjazoiQmFjayIsY2xvc2U6IkNsb3NlIixub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEiLHBsYWNlaG9sZGVyOiJUeXBlIGEgY29tbWFuZCBvciBzZWFyY2jigKYifSxjb250ZW50U2VhcmNoOntsaW5rczoiTGlua3MiLHRoZW1lOiJUaGVtZSJ9LGNvbnRlbnRTZWFyY2hCdXR0b246e2xhYmVsOiJTZWFyY2jigKYifSxjb250ZW50VG9jOnt0aXRsZToiT24gdGhpcyBwYWdlIn0sZHJvcGRvd25NZW51Ontub01hdGNoOiJObyBtYXRjaGluZyBkYXRhIixzZWFyY2g6IlNlYXJjaOKApiJ9LGRhc2hib2FyZFNlYXJjaDp7dGhlbWU6IlRoZW1lIn0sZGFzaGJvYXJkU2VhcmNoQnV0dG9uOntsYWJlbDoiU2VhcmNo4oCmIn0sZGFzaGJvYXJkU2lkZWJhckNvbGxhcHNlOntjb2xsYXBzZToiQ29sbGFwc2Ugc2lkZWJhciIsZXhwYW5kOiJFeHBhbmQgc2lkZWJhciJ9LGRhc2hib2FyZFNpZGViYXJUb2dnbGU6e2Nsb3NlOiJDbG9zZSBzaWRlYmFyIixvcGVuOiJPcGVuIHNpZGViYXIifSxlcnJvcjp7Y2xlYXI6IkJhY2sgdG8gaG9tZSJ9LGZpbGVVcGxvYWQ6e3JlbW92ZUZpbGU6IlJlbW92ZSB7ZmlsZW5hbWV9In0saGVhZGVyOntjbG9zZToiQ2xvc2UgbWVudSIsb3BlbjoiT3BlbiBtZW51In0saW5wdXRNZW51OntjcmVhdGU6J0NyZWF0ZSAie2xhYmVsfSInLG5vRGF0YToiTm8gZGF0YSIsbm9NYXRjaDoiTm8gbWF0Y2hpbmcgZGF0YSJ9LGlucHV0TnVtYmVyOntkZWNyZW1lbnQ6IkRlY3JlbWVudCIsaW5jcmVtZW50OiJJbmNyZW1lbnQifSxsaXN0Ym94Ontub0RhdGE6Ik5vIGRhdGEiLG5vTWF0Y2g6Ik5vIG1hdGNoaW5nIGRhdGEiLHNlYXJjaDoiU2VhcmNo4oCmIn0sbW9kYWw6e2Nsb3NlOiJDbG9zZSJ9LHByaWNpbmdUYWJsZTp7Y2FwdGlvbjoiUHJpY2luZyBwbGFuIGNvbXBhcmlzb24ifSxwcm9zZTp7Y29kZUNvbGxhcHNlOntjbG9zZVRleHQ6IkNvbGxhcHNlIixuYW1lOiJjb2RlIixvcGVuVGV4dDoiRXhwYW5kIn0sY29sbGFwc2libGU6e2Nsb3NlVGV4dDoiSGlkZSIsbmFtZToicHJvcGVydGllcyIsb3BlblRleHQ6IlNob3cifSxwcmU6e2NvcHk6IkNvcHkgY29kZSB0byBjbGlwYm9hcmQifSxwcm9tcHQ6e2NvcHk6IkNvcHkgcHJvbXB0IixvcGVuSW46Ik9wZW4gaW4ge25hbWV9In19LGNoYXRSZWFzb25pbmc6e3RoaW5raW5nOiJUaGlua2luZ+KApiIsdGhvdWdodDoiVGhvdWdodCIsdGhvdWdodEZvcjoiVGhvdWdodCBmb3Ige2R1cmF0aW9ufSJ9LHNpZGViYXI6e2Nsb3NlOiJDbG9zZSIsdG9nZ2xlOiJUb2dnbGUifSxzZWxlY3RNZW51OntjcmVhdGU6J0NyZWF0ZSAie2xhYmVsfSInLG5vRGF0YToiTm8gZGF0YSIsbm9NYXRjaDoiTm8gbWF0Y2hpbmcgZGF0YSIsc2VhcmNoOiJTZWFyY2jigKYifSxzbGlkZW92ZXI6e2Nsb3NlOiJDbG9zZSJ9LHRhYmxlOntub0RhdGE6Ik5vIGRhdGEifSx0b2FzdDp7Y2xvc2U6IkNsb3NlIn19fSksb3c9U3ltYm9sLmZvcigibnV4dC11aS5sb2NhbGUtY29udGV4dCIpLG4kPWU9Pntjb25zdCB0PWV8fHl0KEtlKG93LGtoKSk7cmV0dXJuIGUkKE4oKCk9PnQudmFsdWV8fGtoKSl9LFFsPWVkKG4kKSxzdz1TeW1ib2woIm51eHQtdWkucG9ydGFsLXRhcmdldCIpO2Z1bmN0aW9uIFlsKGUpe2NvbnN0IHQ9S2Uoc3csdm9pZCAwKSxuPU4oKCk9PmUudmFsdWU9PT0hMD90Py52YWx1ZTplLnZhbHVlKSxyPU4oKCk9PnR5cGVvZiBuLnZhbHVlPT0iYm9vbGVhbiI/IW4udmFsdWU6ITEpLG89TigoKT0+dHlwZW9mIG4udmFsdWU9PSJib29sZWFuIj8iYm9keSI6bi52YWx1ZSk7cmV0dXJuIE4oKCk9Pih7dG86by52YWx1ZSxkaXNhYmxlZDpyLnZhbHVlfSkpfWZ1bmN0aW9uIGl3KGUsdD17fSl7Y29uc3Qgbj1lLmRldGFpbC5vcmlnaW5hbEV2ZW50LHI9bi50YXJnZXQ7aWYoIXI/LmlzQ29ubmVjdGVkKXtlLnByZXZlbnREZWZhdWx0KCk7cmV0dXJufXQuc2Nyb2xsYWJsZSYmKG4ub2Zmc2V0WD5yLmNsaWVudFdpZHRofHxuLm9mZnNldFk+ci5jbGllbnRIZWlnaHQpJiZlLnByZXZlbnREZWZhdWx0KCl9Y29uc3QgciQ9e3Nsb3RzOntvdmVybGF5OiJmaXhlZCBpbnNldC0wIGJnLWVsZXZhdGVkLzc1Iixjb250ZW50OiJmaXhlZCBiZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IHNtOnJpbmcgcmluZy1kZWZhdWx0IHNtOnNoYWRvdy1sZyBmbGV4IGZsZXgtY29sIGZvY3VzOm91dGxpbmUtbm9uZSIsaGVhZGVyOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHAtNCBzbTpweC02IG1pbi1oLSgtLXVpLWhlYWRlci1oZWlnaHQpIix3cmFwcGVyOiIiLGJvZHk6ImZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcC00IHNtOnAtNiIsZm9vdGVyOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHAtNCBzbTpweC02Iix0aXRsZToidGV4dC1oaWdobGlnaHRlZCBmb250LXNlbWlib2xkIixkZXNjcmlwdGlvbjoibXQtMSB0ZXh0LW11dGVkIHRleHQtc20iLGNsb3NlOiJhYnNvbHV0ZSB0b3AtNCBlbmQtNCJ9LHZhcmlhbnRzOntzaWRlOnt0b3A6e2NvbnRlbnQ6IiJ9LHJpZ2h0Ontjb250ZW50OiJtYXgtdy1tZCJ9LGJvdHRvbTp7Y29udGVudDoiIn0sbGVmdDp7Y29udGVudDoibWF4LXctbWQifX0saW5zZXQ6e3RydWU6e2NvbnRlbnQ6InJvdW5kZWQtbGcifX0sdHJhbnNpdGlvbjp7dHJ1ZTp7b3ZlcmxheToiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bZmFkZS1pbl8yMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtmYWRlLW91dF8yMDBtc19lYXNlLWluXSJ9fX0sY29tcG91bmRWYXJpYW50czpbe3NpZGU6InRvcCIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Im1heC1oLVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXgtNCB0b3AtNCJ9fSx7c2lkZToidG9wIixpbnNldDohMSxjbGFzczp7Y29udGVudDoibWF4LWgtZnVsbCBpbnNldC14LTAgdG9wLTAifX0se3NpZGU6InJpZ2h0IixpbnNldDohMCxjbGFzczp7Y29udGVudDoidy1bY2FsYygxMDAlLTJyZW0pXSBpbnNldC15LTQgcmlnaHQtNCJ9fSx7c2lkZToicmlnaHQiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJ3LWZ1bGwgaW5zZXQteS0wIHJpZ2h0LTAifX0se3NpZGU6ImJvdHRvbSIsaW5zZXQ6ITAsY2xhc3M6e2NvbnRlbnQ6Im1heC1oLVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXgtNCBib3R0b20tNCJ9fSx7c2lkZToiYm90dG9tIixpbnNldDohMSxjbGFzczp7Y29udGVudDoibWF4LWgtZnVsbCBpbnNldC14LTAgYm90dG9tLTAifX0se3NpZGU6ImxlZnQiLGluc2V0OiEwLGNsYXNzOntjb250ZW50OiJ3LVtjYWxjKDEwMCUtMnJlbSldIGluc2V0LXktNCBsZWZ0LTQifX0se3NpZGU6ImxlZnQiLGluc2V0OiExLGNsYXNzOntjb250ZW50OiJ3LWZ1bGwgaW5zZXQteS0wIGxlZnQtMCJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJ0b3AiLGNsYXNzOntjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzbGlkZS1pbi1mcm9tLXRvcF8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzbGlkZS1vdXQtdG8tdG9wXzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJyaWdodCIsY2xhc3M6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NsaWRlLWluLWZyb20tcmlnaHRfMjAwbXNfZWFzZS1pbi1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2xpZGUtb3V0LXRvLXJpZ2h0XzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJib3R0b20iLGNsYXNzOntjb250ZW50OiJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLVtzbGlkZS1pbi1mcm9tLWJvdHRvbV8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtzbGlkZS1vdXQtdG8tYm90dG9tXzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7dHJhbnNpdGlvbjohMCxzaWRlOiJsZWZ0IixjbGFzczp7Y29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2xpZGUtaW4tZnJvbS1sZWZ0XzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NsaWRlLW91dC10by1sZWZ0XzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fV19LG8kPXtfX25hbWU6IlVTbGlkZW92ZXIiLHByb3BzOnt0aXRsZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG92ZXJsYXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InJpZ2h0In0saW5zZXQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9ydGFsOnt0eXBlOltCb29sZWFuLFN0cmluZ10scmVxdWlyZWQ6ITEsc2tpcENoZWNrOiEwLGRlZmF1bHQ6ITB9LGNsb3NlOnt0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xvc2VJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc21pc3NpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG1vZGFsOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LGVtaXRzOlsiYWZ0ZXI6bGVhdmUiLCJhZnRlcjplbnRlciIsImNsb3NlOnByZXZlbnQiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2VtaXQ6dH0pe2NvbnN0IG49ZSxyPXQsbz16cigpLHt0OnN9PVFsKCksaT1TdCgpLGE9TG4oInNsaWRlb3ZlciIsbiksbD0kcyhWcihuLCJvcGVuIiwiZGVmYXVsdE9wZW4iLCJtb2RhbCIpLHIpLHU9WWwoeXQoKCk9Pm4ucG9ydGFsKSksYz15dCgoKT0+bi5jb250ZW50KSxmPU4oKCk9Pm4uZGlzbWlzc2libGU/e3BvaW50ZXJEb3duT3V0c2lkZTppd306WyJpbnRlcmFjdE91dHNpZGUiLCJlc2NhcGVLZXlEb3duIl0ucmVkdWNlKChtLHkpPT4obVt5XT1fPT57Xy5wcmV2ZW50RGVmYXVsdCgpLHIoImNsb3NlOnByZXZlbnQiKX0sbSkse30pKSxkPU4oKCk9PnV0KHtleHRlbmQ6dXQociQpLC4uLmkudWk/LnNsaWRlb3Zlcnx8e319KSh7dHJhbnNpdGlvbjpuLnRyYW5zaXRpb24sc2lkZTpuLnNpZGUsaW5zZXQ6bi5pbnNldH0pKTtyZXR1cm4ocCxtKT0+KFIoKSwkKGcocjApLHh0KE10KGcobCkpKSx7ZGVmYXVsdDpNKCh7b3Blbjp5LGNsb3NlOl99KT0+W28uZGVmYXVsdD8oUigpLCQoZyhmMCkse2tleTowLCJhcy1jaGlsZCI6IiIsY2xhc3M6dWUobi5jbGFzcyl9LHtkZWZhdWx0Ok0oKCk9PltVKHAuJHNsb3RzLCJkZWZhdWx0Iix7b3Blbjp5fSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSk6ZGUoIiIsITApLHJlKGcodTApLHh0KE10KGcodSkpKSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhfZCksbnVsbCx7ZGVmYXVsdDpNKCgpPT5bZS5vdmVybGF5PyhSKCksJChnKHF1KSx7a2V5OjAsImRhdGEtc2xvdCI6Im92ZXJsYXkiLGNsYXNzOnVlKGQudmFsdWUub3ZlcmxheSh7Y2xhc3M6ZyhhKT8ub3ZlcmxheX0pKX0sbnVsbCw4LFsiY2xhc3MiXSkpOmRlKCIiLCEwKSxyZShnKGMwKSxmZSh7ImRhdGEtc2lkZSI6ZS5zaWRlLCJkYXRhLXNsb3QiOiJjb250ZW50IixjbGFzczpkLnZhbHVlLmNvbnRlbnQoe2NsYXNzOlshby5kZWZhdWx0JiZuLmNsYXNzLGcoYSk/LmNvbnRlbnRdfSl9LGMudmFsdWUse29uQWZ0ZXJFbnRlcjptWzBdfHwobVswXT13PT5yKCJhZnRlcjplbnRlciIpKSxvbkFmdGVyTGVhdmU6bVsxXXx8KG1bMV09dz0+cigiYWZ0ZXI6bGVhdmUiKSl9LFZnKGYudmFsdWUpKSx7ZGVmYXVsdDpNKCgpPT5bIWUudGl0bGUmJiFvLnRpdGxlfHwhZS5kZXNjcmlwdGlvbiYmIW8uZGVzY3JpcHRpb258fG8uY29udGVudD8oUigpLCQoZyhWaSkse2tleTowfSx7ZGVmYXVsdDpNKCgpPT5bIWUudGl0bGUmJiFvLnRpdGxlPyhSKCksJChnKHZzKSx7a2V5OjB9KSk6by5jb250ZW50PyhSKCksJChnKHZzKSx7a2V5OjF9LHtkZWZhdWx0Ok0oKCk9PltVKHAuJHNsb3RzLCJ0aXRsZSIse30sKCk9PltzdChydChlLnRpdGxlKSwxKV0pXSksXzozfSkpOmRlKCIiLCEwKSwhZS5kZXNjcmlwdGlvbiYmIW8uZGVzY3JpcHRpb24/KFIoKSwkKGcoeXMpLHtrZXk6Mn0pKTpvLmNvbnRlbnQ/KFIoKSwkKGcoeXMpLHtrZXk6M30se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsImRlc2NyaXB0aW9uIix7fSwoKT0+W3N0KHJ0KGUuZGVzY3JpcHRpb24pLDEpXSldKSxfOjN9KSk6ZGUoIiIsITApXSksXzozfSkpOmRlKCIiLCEwKSxVKHAuJHNsb3RzLCJjb250ZW50Iix7Y2xvc2U6X30sKCk9PltvLmhlYWRlcnx8ZS50aXRsZXx8by50aXRsZXx8ZS5kZXNjcmlwdGlvbnx8by5kZXNjcmlwdGlvbnx8bi5jbG9zZXx8by5jbG9zZT8oUigpLF9lKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiaGVhZGVyIixjbGFzczp1ZShkLnZhbHVlLmhlYWRlcih7Y2xhc3M6ZyhhKT8uaGVhZGVyfSkpfSxbVShwLiRzbG90cywiaGVhZGVyIix7Y2xvc2U6X30sKCk9PltlLnRpdGxlfHxvLnRpdGxlfHxlLmRlc2NyaXB0aW9ufHxvLmRlc2NyaXB0aW9uPyhSKCksX2UoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJ3cmFwcGVyIixjbGFzczp1ZShkLnZhbHVlLndyYXBwZXIoe2NsYXNzOmcoYSk/LndyYXBwZXJ9KSl9LFtlLnRpdGxlfHxvLnRpdGxlPyhSKCksJChnKHZzKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczp1ZShkLnZhbHVlLnRpdGxlKHtjbGFzczpnKGEpPy50aXRsZX0pKX0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W3N0KHJ0KGUudGl0bGUpLDEpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZGUoIiIsITApLGUuZGVzY3JpcHRpb258fG8uZGVzY3JpcHRpb24/KFIoKSwkKGcoeXMpLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnVlKGQudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmcoYSk/LmRlc2NyaXB0aW9ufSkpfSx7ZGVmYXVsdDpNKCgpPT5bVShwLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bc3QocnQoZS5kZXNjcmlwdGlvbiksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpkZSgiIiwhMCldLDIpKTpkZSgiIiwhMCksVShwLiRzbG90cywiYWN0aW9ucyIpLG4uY2xvc2V8fG8uY2xvc2U/KFIoKSwkKGcobzApLHtrZXk6MSwiYXMtY2hpbGQiOiIifSx7ZGVmYXVsdDpNKCgpPT5bVShwLiRzbG90cywiY2xvc2UiLHt1aTpkLnZhbHVlfSwoKT0+W24uY2xvc2U/KFIoKSwkKE5yLGZlKHtrZXk6MCxpY29uOmUuY2xvc2VJY29ufHxnKGkpLnVpLmljb25zLmNsb3NlLGNvbG9yOiJuZXV0cmFsIix2YXJpYW50OiJnaG9zdCIsImFyaWEtbGFiZWwiOmcocykoInNsaWRlb3Zlci5jbG9zZSIpfSx0eXBlb2Ygbi5jbG9zZT09Im9iamVjdCI/bi5jbG9zZTp7fSx7ImRhdGEtc2xvdCI6ImNsb3NlIixjbGFzczpkLnZhbHVlLmNsb3NlKHtjbGFzczpnKGEpPy5jbG9zZX0pfSksbnVsbCwxNixbImljb24iLCJhcmlhLWxhYmVsIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSksXzoyfSwxMDI0KSk6ZGUoIiIsITApXSldLDIpKTpkZSgiIiwhMCksd3QoImRpdiIseyJkYXRhLXNsb3QiOiJib2R5IixjbGFzczp1ZShkLnZhbHVlLmJvZHkoe2NsYXNzOmcoYSk/LmJvZHl9KSl9LFtVKHAuJHNsb3RzLCJib2R5Iix7Y2xvc2U6X30pXSwyKSxvLmZvb3Rlcj8oUigpLF9lKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczp1ZShkLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZyhhKT8uZm9vdGVyfSkpfSxbVShwLiRzbG90cywiZm9vdGVyIix7Y2xvc2U6X30pXSwyKSk6ZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJkYXRhLXNpZGUiLCJjbGFzcyJdKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwNDApXSksXzozfSwxNikpfX0scyQ9e2tleTowLGNsYXNzOiJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTgifSxpJD17a2V5OjEsY2xhc3M6ImZsZXggZmxleC1jb2wgZ2FwLTEgLW14LTIifSxhJD17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHctZnVsbCB0ZXh0LWxlZnQifSxsJD17Y2xhc3M6InRleHQtc20gZmxleC0xIG1pbi13LTAifSxjJD17Y2xhc3M6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiJ9LHUkPXtjbGFzczoidGV4dC1oaWdobGlnaHRlZCBmb250LW1lZGl1bSB0cnVuY2F0ZSJ9LGYkPVsiZGF0ZXRpbWUiXSxkJD17Y2xhc3M6InRleHQtZGltbWVkIHRydW5jYXRlIn0scCQ9e2tleTowLGNsYXNzOiJwdC0yIHB4LTIifSxtJD1zZSh7X19uYW1lOiJOb3RpZmljYXRpb25zU2xpZGVvdmVyIixzZXR1cChlKXtjb25zdCB0PXJ3KCksbj1OKHtnZXQ6KCk9PnQuaXNPcGVuLHNldDpzPT50LmlzT3Blbj1zfSk7ZnVuY3Rpb24gcihzKXtyZXR1cm4gcy5zcGxpdCgiICIpLm1hcChpPT5pWzBdKS5zbGljZSgwLDIpLmpvaW4oIiIpLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gbyhzKXtjb25zdCBpPURhdGUubm93KCktbmV3IERhdGUocykuZ2V0VGltZSgpLGE9TWF0aC5mbG9vcihpLzZlNCk7aWYoYTwxKXJldHVybiJqdXN0IG5vdyI7aWYoYTw2MClyZXR1cm5gJHthfW0gYWdvYDtjb25zdCBsPU1hdGguZmxvb3IoYS82MCk7cmV0dXJuIGw8MjQ/YCR7bH1oIGFnb2A6YCR7TWF0aC5mbG9vcihsLzI0KX1kIGFnb2B9cmV0dXJuKHMsaSk9Pntjb25zdCBhPVVvLGw9R2wsdT1OcixjPW8kLGY9bngoInNhbml0aXplIik7cmV0dXJuIFIoKSwkKGMse29wZW46ZyhuKSwib25VcGRhdGU6b3BlbiI6aVsxXXx8KGlbMV09ZD0+JGUobik/bi52YWx1ZT1kOm51bGwpLHRpdGxlOiJOb3RpZmljYXRpb25zIn0se2JvZHk6TSgoKT0+W2codCkuaXRlbXMubGVuZ3RoPT09MCYmIWcodCkubG9hZGluZz8oUigpLF9lKCJkaXYiLHMkLCIgWW91J3JlIGFsbCBjYXVnaHQgdXAuICIpKTooUigpLF9lKCJkaXYiLGkkLFsoUighMCksX2UoR2UsbnVsbCx1cihnKHQpLml0ZW1zLGQ9PihSKCksJCh1LHtrZXk6ZC5pZCxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGJsb2NrOiIiLGNsYXNzOiJqdXN0aWZ5LXN0YXJ0IHB5LTIuNSIsb25DbGljazpwPT5nKHQpLm1hcmtSZWFkKGQuaWQpfSx7ZGVmYXVsdDpNKCgpPT5bd3QoImRpdiIsYSQsW3JlKGwse2NvbG9yOiJlcnJvciIsc2hvdzohZC5pc1JlYWQsaW5zZXQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShhLHthbHQ6ZC5zZW5kZXJOYW1lLHRleHQ6cihkLnNlbmRlck5hbWUpLHNpemU6Im1kIn0sbnVsbCw4LFsiYWx0IiwidGV4dCJdKV0pLF86Mn0sMTAzMixbInNob3ciXSksd3QoImRpdiIsbCQsW3d0KCJwIixjJCxbd3QoInNwYW4iLHUkLHJ0KGQuc2VuZGVyTmFtZSksMSksd3QoInRpbWUiLHtkYXRldGltZTpkLmNyZWF0ZWRBdCxjbGFzczoidGV4dC1tdXRlZCB0ZXh0LXhzIHNocmluay0wIn0scnQobyhkLmNyZWF0ZWRBdCkpLDksZiQpXSksUl8od3QoImRpdiIsZCQsbnVsbCw1MTIpLFtbZixkLmJvZHldXSldKV0pXSksXzoyfSwxMDMyLFsib25DbGljayJdKSkpLDEyOCkpLGcodCkuaGFzTW9yZT8oUigpLF9lKCJkaXYiLHAkLFtyZSh1LHtibG9jazoiIixjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoic29mdCIsbG9hZGluZzpnKHQpLmxvYWRpbmcsImRhdGEtdGVzdGlkIjoibm90aWZpY2F0aW9ucy1sb2FkLW1vcmUiLG9uQ2xpY2s6aVswXXx8KGlbMF09ZD0+Zyh0KS5sb2FkTW9yZSgpKX0se2RlZmF1bHQ6TSgoKT0+Wy4uLmlbMl18fChpWzJdPVtzdCgiIExvYWQgbW9yZSAiLC0xKV0pXSksXzoxfSw4LFsibG9hZGluZyJdKV0pKTpkZSgiIiwhMCldKSldKSxfOjF9LDgsWyJvcGVuIl0pfX19KSxoJD1PYmplY3QuYXNzaWduKG0kLHtfX25hbWU6Ik5vdGlmaWNhdGlvbnNTbGlkZW92ZXIifSksZyQ9bHQoKCk9Pntjb25zdHtjb250cmlidXRlOmV9PWpyKCk7ZSh7bmF2YmFySXRlbXM6W3tpZDoibm90aWZpY2F0aW9ucy1iZWxsIixjb21wb25lbnQ6SkwscHJpb3JpdHk6MTB9XSxvdmVybGF5czpbe2lkOiJub3RpZmljYXRpb25zLXNsaWRlb3ZlciIsY29tcG9uZW50OmgkfV19KX0pO2Z1bmN0aW9uIEVoKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5JChlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIHYkKGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihuIT1udWxsKXt2YXIgcixvLHMsaSxhPVtdLGw9ITAsdT0hMTt0cnl7aWYocz0obj1uLmNhbGwoZSkpLm5leHQsdCE9PTApZm9yKDshKGw9KHI9cy5jYWxsKG4pKS5kb25lKSYmKGEucHVzaChyLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2w9ITApO31jYXRjaChjKXt1PSEwLG89Y31maW5hbGx5e3RyeXtpZighbCYmbi5yZXR1cm4hPW51bGwmJihpPW4ucmV0dXJuKCksT2JqZWN0KGkpIT09aSkpcmV0dXJufWZpbmFsbHl7aWYodSl0aHJvdyBvfX1yZXR1cm4gYX19ZnVuY3Rpb24gYiQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gdyQoZSx0KXtyZXR1cm4geSQoZSl8fHYkKGUsdCl8fF8kKGUsdCl8fGIkKCl9ZnVuY3Rpb24gXyQoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIEVoKGUsdCk7dmFyIG49e30udG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4gbj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiP0FycmF5LmZyb20oZSk6bj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9FaChlLHQpOnZvaWQgMH19Y29uc3QgYXc9T2JqZWN0LmVudHJpZXMsVGg9T2JqZWN0LnNldFByb3RvdHlwZU9mLHgkPU9iamVjdC5pc0Zyb3plbixTJD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsayQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtsZXQgc249T2JqZWN0LmZyZWV6ZSxEbj1PYmplY3Quc2VhbCxscz1PYmplY3QuY3JlYXRlLGx3PXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdCx0Zj1sdy5hcHBseSxuZj1sdy5jb25zdHJ1Y3Q7c258fChzbj1mdW5jdGlvbih0KXtyZXR1cm4gdH0pO0RufHwoRG49ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt0Znx8KHRmPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkocj4yP3ItMjowKSxzPTI7czxyO3MrKylvW3MtMl09YXJndW1lbnRzW3NdO3JldHVybiB0LmFwcGx5KG4sbyl9KTtuZnx8KG5mPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gbmV3IHQoLi4ucil9KTtjb25zdCBlcz1PdChBcnJheS5wcm90b3R5cGUuZm9yRWFjaCksRSQ9T3QoQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKSxDaD1PdChBcnJheS5wcm90b3R5cGUucG9wKSx0cz1PdChBcnJheS5wcm90b3R5cGUucHVzaCksVCQ9T3QoQXJyYXkucHJvdG90eXBlLnNwbGljZSksZW49QXJyYXkuaXNBcnJheSx0aT1PdChTdHJpbmcucHJvdG90eXBlLnRvTG93ZXJDYXNlKSxWYz1PdChTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nKSxBaD1PdChTdHJpbmcucHJvdG90eXBlLm1hdGNoKSxucz1PdChTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLE9oPU90KFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiksQyQ9T3QoU3RyaW5nLnByb3RvdHlwZS50cmltKSxBJD1PdChOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5nKSxPJD1PdChCb29sZWFuLnByb3RvdHlwZS50b1N0cmluZyksUGg9dHlwZW9mIEJpZ0ludD4idSI/bnVsbDpPdChCaWdJbnQucHJvdG90eXBlLnRvU3RyaW5nKSxJaD10eXBlb2YgU3ltYm9sPiJ1Ij9udWxsOk90KFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcpLGh0PU90KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLFlzPU90KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpLEJ0PU90KFJlZ0V4cC5wcm90b3R5cGUudGVzdCkseGE9UCQoVHlwZUVycm9yKTtmdW5jdGlvbiBPdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIFJlZ0V4cCYmKHQubGFzdEluZGV4PTApO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspcltvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gdGYoZSx0LHIpfX1mdW5jdGlvbiBQJChlKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gbmYoZSxuKX19ZnVuY3Rpb24gUmUoZSx0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06dGk7aWYoVGgmJlRoKGUsbnVsbCksIWVuKHQpKXJldHVybiBlO2xldCByPXQubGVuZ3RoO2Zvcig7ci0tOyl7bGV0IG89dFtyXTtpZih0eXBlb2Ygbz09InN0cmluZyIpe2NvbnN0IHM9bihvKTtzIT09byYmKHgkKHQpfHwodFtyXT1zKSxvPXMpfWVbb109ITB9cmV0dXJuIGV9ZnVuY3Rpb24gSSQoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaHQoZSx0KXx8KGVbdF09bnVsbCk7cmV0dXJuIGV9ZnVuY3Rpb24gdW4oZSl7Y29uc3QgdD1scyhudWxsKTtmb3IoY29uc3QgciBvZiBhdyhlKSl7dmFyIG49dyQociwyKTtjb25zdCBvPW5bMF0scz1uWzFdO2h0KGUsbykmJihlbihzKT90W29dPUkkKHMpOnMmJnR5cGVvZiBzPT0ib2JqZWN0IiYmcy5jb25zdHJ1Y3Rvcj09PU9iamVjdD90W29dPXVuKHMpOnRbb109cyl9cmV0dXJuIHR9ZnVuY3Rpb24gUiQoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6cmV0dXJuIGU7Y2FzZSJudW1iZXIiOnJldHVybiBBJChlKTtjYXNlImJvb2xlYW4iOnJldHVybiBPJChlKTtjYXNlImJpZ2ludCI6cmV0dXJuIFBoP1BoKGUpOiIwIjtjYXNlInN5bWJvbCI6cmV0dXJuIEloP0loKGUpOiJTeW1ib2woKSI7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiBZcyhlKTtjYXNlImZ1bmN0aW9uIjpjYXNlIm9iamVjdCI6e2lmKGU9PT1udWxsKXJldHVybiBZcyhlKTtjb25zdCB0PWUsbj1Bbyh0LCJ0b1N0cmluZyIpO2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXtjb25zdCByPW4odCk7cmV0dXJuIHR5cGVvZiByPT0ic3RyaW5nIj9yOllzKHIpfXJldHVybiBZcyhlKX1kZWZhdWx0OnJldHVybiBZcyhlKX19ZnVuY3Rpb24gQW8oZSx0KXtmb3IoO2UhPT1udWxsOyl7Y29uc3Qgcj1rJChlLHQpO2lmKHIpe2lmKHIuZ2V0KXJldHVybiBPdChyLmdldCk7aWYodHlwZW9mIHIudmFsdWU9PSJmdW5jdGlvbiIpcmV0dXJuIE90KHIudmFsdWUpfWU9UyQoZSl9ZnVuY3Rpb24gbigpe3JldHVybiBudWxsfXJldHVybiBufWZ1bmN0aW9uIE4kKGUpe3RyeXtyZXR1cm4gQnQoZSwiIiksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IFJoPXNuKFsiYSIsImFiYnIiLCJhY3JvbnltIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiZGkiLCJiZG8iLCJiaWciLCJibGluayIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY2VudGVyIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImNvbnRlbnQiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZCIsImRlY29yYXRvciIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXIiLCJkaXYiLCJkbCIsImR0IiwiZWxlbWVudCIsImVtIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWFycXVlZSIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGVyIiwibmF2Iiwibm9iciIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGljdHVyZSIsInByZSIsInByb2dyZXNzIiwicSIsInJwIiwicnQiLCJydWJ5IiwicyIsInNhbXAiLCJzZWFyY2giLCJzZWN0aW9uIiwic2VsZWN0Iiwic2hhZG93Iiwic2xvdCIsInNtYWxsIiwic291cmNlIiwic3BhY2VyIiwic3BhbiIsInN0cmlrZSIsInN0cm9uZyIsInN0eWxlIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRlbXBsYXRlIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidHIiLCJ0cmFjayIsInR0IiwidSIsInVsIiwidmFyIiwidmlkZW8iLCJ3YnIiXSksVWM9c24oWyJzdmciLCJhIiwiYWx0Z2x5cGgiLCJhbHRnbHlwaGRlZiIsImFsdGdseXBoaXRlbSIsImFuaW1hdGVjb2xvciIsImFuaW1hdGVtb3Rpb24iLCJhbmltYXRldHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcHBhdGgiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJlbnRlcmtleWhpbnQiLCJleHBvcnRwYXJ0cyIsImZpbHRlciIsImZvbnQiLCJnIiwiZ2x5cGgiLCJnbHlwaHJlZiIsImhrZXJuIiwiaW1hZ2UiLCJpbnB1dG1vZGUiLCJsaW5lIiwibGluZWFyZ3JhZGllbnQiLCJtYXJrZXIiLCJtYXNrIiwibWV0YWRhdGEiLCJtcGF0aCIsInBhcnQiLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdHlsZSIsInN3aXRjaCIsInN5bWJvbCIsInRleHQiLCJ0ZXh0cGF0aCIsInRpdGxlIiwidHJlZiIsInRzcGFuIiwidmlldyIsInZrZXJuIl0pLEhjPXNuKFsiZmVCbGVuZCIsImZlQ29sb3JNYXRyaXgiLCJmZUNvbXBvbmVudFRyYW5zZmVyIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRGlzdGFudExpZ2h0IiwiZmVEcm9wU2hhZG93IiwiZmVGbG9vZCIsImZlRnVuY0EiLCJmZUZ1bmNCIiwiZmVGdW5jRyIsImZlRnVuY1IiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNZXJnZU5vZGUiLCJmZU1vcnBob2xvZ3kiLCJmZU9mZnNldCIsImZlUG9pbnRMaWdodCIsImZlU3BlY3VsYXJMaWdodGluZyIsImZlU3BvdExpZ2h0IiwiZmVUaWxlIiwiZmVUdXJidWxlbmNlIl0pLEQkPXNuKFsiYW5pbWF0ZSIsImNvbG9yLXByb2ZpbGUiLCJjdXJzb3IiLCJkaXNjYXJkIiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXNyYyIsImZvbnQtZmFjZS11cmkiLCJmb3JlaWdub2JqZWN0IiwiaGF0Y2giLCJoYXRjaHBhdGgiLCJtZXNoIiwibWVzaGdyYWRpZW50IiwibWVzaHBhdGNoIiwibWVzaHJvdyIsIm1pc3NpbmctZ2x5cGgiLCJzY3JpcHQiLCJzZXQiLCJzb2xpZGNvbG9yIiwidW5rbm93biIsInVzZSJdKSxXYz1zbihbIm1hdGgiLCJtZW5jbG9zZSIsIm1lcnJvciIsIm1mZW5jZWQiLCJtZnJhYyIsIm1nbHlwaCIsIm1pIiwibWxhYmVsZWR0ciIsIm1tdWx0aXNjcmlwdHMiLCJtbiIsIm1vIiwibW92ZXIiLCJtcGFkZGVkIiwibXBoYW50b20iLCJtcm9vdCIsIm1yb3ciLCJtcyIsIm1zcGFjZSIsIm1zcXJ0IiwibXN0eWxlIiwibXN1YiIsIm1zdXAiLCJtc3Vic3VwIiwibXRhYmxlIiwibXRkIiwibXRleHQiLCJtdHIiLCJtdW5kZXIiLCJtdW5kZXJvdmVyIiwibXByZXNjcmlwdHMiXSksTCQ9c24oWyJtYWN0aW9uIiwibWFsaWduZ3JvdXAiLCJtYWxpZ25tYXJrIiwibWxvbmdkaXYiLCJtc2NhcnJpZXMiLCJtc2NhcnJ5IiwibXNncm91cCIsIm1zdGFjayIsIm1zbGluZSIsIm1zcm93Iiwic2VtYW50aWNzIiwiYW5ub3RhdGlvbiIsImFubm90YXRpb24teG1sIiwibXByZXNjcmlwdHMiLCJub25lIl0pLE5oPXNuKFsiI3RleHQiXSksRGg9c24oWyJhY2NlcHQiLCJhY3Rpb24iLCJhbGlnbiIsImFsdCIsImF1dG9jYXBpdGFsaXplIiwiYXV0b2NvbXBsZXRlIiwiYXV0b3BpY3R1cmVpbnBpY3R1cmUiLCJhdXRvcGxheSIsImJhY2tncm91bmQiLCJiZ2NvbG9yIiwiYm9yZGVyIiwiY2FwdHVyZSIsImNlbGxwYWRkaW5nIiwiY2VsbHNwYWNpbmciLCJjaGVja2VkIiwiY2l0ZSIsImNsYXNzIiwiY2xlYXIiLCJjb2xvciIsImNvbHMiLCJjb2xzcGFuIiwiY29tbWFuZCIsImNvbW1hbmRmb3IiLCJjb250cm9scyIsImNvbnRyb2xzbGlzdCIsImNvb3JkcyIsImNyb3Nzb3JpZ2luIiwiZGF0ZXRpbWUiLCJkZWNvZGluZyIsImRlZmF1bHQiLCJkaXIiLCJkaXNhYmxlZCIsImRpc2FibGVwaWN0dXJlaW5waWN0dXJlIiwiZGlzYWJsZXJlbW90ZXBsYXliYWNrIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmN0eXBlIiwiZW50ZXJrZXloaW50IiwiZXhwb3J0cGFydHMiLCJmYWNlIiwiZm9yIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhpZ2giLCJocmVmIiwiaHJlZmxhbmciLCJpZCIsImluZXJ0IiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJsb29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIsIm11dGVkIiwibmFtZSIsIm5vbmNlIiwibm9zaGFkZSIsIm5vdmFsaWRhdGUiLCJub3dyYXAiLCJvcGVuIiwib3B0aW11bSIsInBhcnQiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvcG92ZXIiLCJwb3BvdmVydGFyZ2V0IiwicG9wb3ZlcnRhcmdldGFjdGlvbiIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwicm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzbG90Iiwic3BhbiIsInNyY2xhbmciLCJzdGFydCIsInNyYyIsInNyY3NldCIsInN0ZXAiLCJzdHlsZSIsInN1bW1hcnkiLCJ0YWJpbmRleCIsInRpdGxlIiwidHJhbnNsYXRlIiwidHlwZSIsInVzZW1hcCIsInZhbGlnbiIsInZhbHVlIiwid2lkdGgiLCJ3cmFwIiwieG1sbnMiXSksR2M9c24oWyJhY2NlbnQtaGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFkZGl0aXZlIiwiYWxpZ25tZW50LWJhc2VsaW5lIiwiYW1wbGl0dWRlIiwiYXNjZW50IiwiYXR0cmlidXRlbmFtZSIsImF0dHJpYnV0ZXR5cGUiLCJhemltdXRoIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2VsaW5lLXNoaWZ0IiwiYmVnaW4iLCJiaWFzIiwiYnkiLCJjbGFzcyIsImNsaXAiLCJjbGlwcGF0aHVuaXRzIiwiY2xpcC1wYXRoIiwiY2xpcC1ydWxlIiwiY29sb3IiLCJjb2xvci1pbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwiY29sb3ItcHJvZmlsZSIsImNvbG9yLXJlbmRlcmluZyIsImN4IiwiY3kiLCJkIiwiZHgiLCJkeSIsImRpZmZ1c2Vjb25zdGFudCIsImRpcmVjdGlvbiIsImRpc3BsYXkiLCJkaXZpc29yIiwiZHVyIiwiZWRnZW1vZGUiLCJlbGV2YXRpb24iLCJlbmQiLCJleHBvbmVudCIsImZpbGwiLCJmaWxsLW9wYWNpdHkiLCJmaWxsLXJ1bGUiLCJmaWx0ZXIiLCJmaWx0ZXJ1bml0cyIsImZsb29kLWNvbG9yIiwiZmxvb2Qtb3BhY2l0eSIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zaXplLWFkanVzdCIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXZhcmlhbnQiLCJmb250LXdlaWdodCIsImZ4IiwiZnkiLCJnMSIsImcyIiwiZ2x5cGgtbmFtZSIsImdseXBocmVmIiwiZ3JhZGllbnR1bml0cyIsImdyYWRpZW50dHJhbnNmb3JtIiwiaGVpZ2h0IiwiaHJlZiIsImlkIiwiaW1hZ2UtcmVuZGVyaW5nIiwiaW4iLCJpbjIiLCJpbnRlcmNlcHQiLCJrIiwiazEiLCJrMiIsImszIiwiazQiLCJrZXJuaW5nIiwia2V5cG9pbnRzIiwia2V5c3BsaW5lcyIsImtleXRpbWVzIiwibGFuZyIsImxlbmd0aGFkanVzdCIsImxldHRlci1zcGFjaW5nIiwia2VybmVsbWF0cml4Iiwia2VybmVsdW5pdGxlbmd0aCIsImxpZ2h0aW5nLWNvbG9yIiwibG9jYWwiLCJtYXJrZXItZW5kIiwibWFya2VyLW1pZCIsIm1hcmtlci1zdGFydCIsIm1hcmtlcmhlaWdodCIsIm1hcmtlcnVuaXRzIiwibWFya2Vyd2lkdGgiLCJtYXNrY29udGVudHVuaXRzIiwibWFza3VuaXRzIiwibWF4IiwibWFzayIsIm1hc2stdHlwZSIsIm1lZGlhIiwibWV0aG9kIiwibW9kZSIsIm1pbiIsIm5hbWUiLCJudW1vY3RhdmVzIiwib2Zmc2V0Iiwib3BlcmF0b3IiLCJvcGFjaXR5Iiwib3JkZXIiLCJvcmllbnQiLCJvcmllbnRhdGlvbiIsIm9yaWdpbiIsIm92ZXJmbG93IiwicGFpbnQtb3JkZXIiLCJwYXRoIiwicGF0aGxlbmd0aCIsInBhdHRlcm5jb250ZW50dW5pdHMiLCJwYXR0ZXJudHJhbnNmb3JtIiwicGF0dGVybnVuaXRzIiwicG9pbnRzIiwicHJlc2VydmVhbHBoYSIsInByZXNlcnZlYXNwZWN0cmF0aW8iLCJwcmltaXRpdmV1bml0cyIsInIiLCJyeCIsInJ5IiwicmFkaXVzIiwicmVmeCIsInJlZnkiLCJyZXBlYXRjb3VudCIsInJlcGVhdGR1ciIsInJlc3RhcnQiLCJyZXN1bHQiLCJyb3RhdGUiLCJzY2FsZSIsInNlZWQiLCJzaGFwZS1yZW5kZXJpbmciLCJzbG9wZSIsInNwZWN1bGFyY29uc3RhbnQiLCJzcGVjdWxhcmV4cG9uZW50Iiwic3ByZWFkbWV0aG9kIiwic3RhcnRvZmZzZXQiLCJzdGRkZXZpYXRpb24iLCJzdGl0Y2h0aWxlcyIsInN0b3AtY29sb3IiLCJzdG9wLW9wYWNpdHkiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtbGluZWNhcCIsInN0cm9rZS1saW5lam9pbiIsInN0cm9rZS1taXRlcmxpbWl0Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2UiLCJzdHJva2Utd2lkdGgiLCJzdHlsZSIsInN1cmZhY2VzY2FsZSIsInN5c3RlbWxhbmd1YWdlIiwidGFiaW5kZXgiLCJ0YWJsZXZhbHVlcyIsInRhcmdldHgiLCJ0YXJnZXR5IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtLW9yaWdpbiIsInRleHQtYW5jaG9yIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1yZW5kZXJpbmciLCJ0ZXh0bGVuZ3RoIiwidHlwZSIsInUxIiwidTIiLCJ1bmljb2RlIiwidmFsdWVzIiwidmlld2JveCIsInZpc2liaWxpdHkiLCJ2ZXJzaW9uIiwidmVydC1hZHYteSIsInZlcnQtb3JpZ2luLXgiLCJ2ZXJ0LW9yaWdpbi15Iiwid2lkdGgiLCJ3b3JkLXNwYWNpbmciLCJ3cmFwIiwid3JpdGluZy1tb2RlIiwieGNoYW5uZWxzZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ4IiwieDEiLCJ4MiIsInhtbG5zIiwieSIsInkxIiwieTIiLCJ6Iiwiem9vbWFuZHBhbiJdKSxMaD1zbihbImFjY2VudCIsImFjY2VudHVuZGVyIiwiYWxpZ24iLCJiZXZlbGxlZCIsImNsb3NlIiwiY29sdW1uYWxpZ24iLCJjb2x1bW5saW5lcyIsImNvbHVtbnNwYWNpbmciLCJjb2x1bW5zcGFuIiwiZGVub21hbGlnbiIsImRlcHRoIiwiZGlyIiwiZGlzcGxheSIsImRpc3BsYXlzdHlsZSIsImVuY29kaW5nIiwiZmVuY2UiLCJmcmFtZSIsImhlaWdodCIsImhyZWYiLCJpZCIsImxhcmdlb3AiLCJsZW5ndGgiLCJsaW5ldGhpY2tuZXNzIiwibHF1b3RlIiwibHNwYWNlIiwibWF0aGJhY2tncm91bmQiLCJtYXRoY29sb3IiLCJtYXRoc2l6ZSIsIm1hdGh2YXJpYW50IiwibWF4c2l6ZSIsIm1pbnNpemUiLCJtb3ZhYmxlbGltaXRzIiwibm90YXRpb24iLCJudW1hbGlnbiIsIm9wZW4iLCJyb3dhbGlnbiIsInJvd2xpbmVzIiwicm93c3BhY2luZyIsInJvd3NwYW4iLCJyc3BhY2UiLCJycXVvdGUiLCJzY3JpcHRsZXZlbCIsInNjcmlwdG1pbnNpemUiLCJzY3JpcHRzaXplbXVsdGlwbGllciIsInNlbGVjdGlvbiIsInNlcGFyYXRvciIsInNlcGFyYXRvcnMiLCJzdHJldGNoeSIsInN1YnNjcmlwdHNoaWZ0Iiwic3Vwc2NyaXB0c2hpZnQiLCJzeW1tZXRyaWMiLCJ2b2Zmc2V0Iiwid2lkdGgiLCJ4bWxucyJdKSxTYT1zbihbInhsaW5rOmhyZWYiLCJ4bWw6aWQiLCJ4bGluazp0aXRsZSIsInhtbDpzcGFjZSIsInhtbG5zOnhsaW5rIl0pLCQkPURuKC97e1tcd1xXXSp8Xltcd1xXXSp9fS9nKSxNJD1EbigvPCVbXHdcV10qfF5bXHdcV10qJT4vZyksQiQ9RG4oL1wke1tcd1xXXSovZykscSQ9RG4oL15kYXRhLVtcLVx3Llx1MDBCNy1cdUZGRkZdKyQvKSxGJD1EbigvXmFyaWEtW1wtXHddKyQvKSwkaD1EbigvXig/Oig/Oig/OmZ8aHQpdHBzP3xtYWlsdG98dGVsfGNhbGx0b3xzbXN8Y2lkfHhtcHB8bWF0cml4KTp8W15hLXpdfFthLXorLlwtXSsoPzpbXmEteisuXC06XXwkKSkvaSkseiQ9RG4oL14oPzpcdytzY3JpcHR8ZGF0YSk6L2kpLGokPURuKC9bXHUwMDAwLVx1MDAyMFx1MDBBMFx1MTY4MFx1MTgwRVx1MjAwMC1cdTIwMjlcdTIwNUZcdTMwMDBdL2cpLFYkPURuKC9eaHRtbCQvaSksVSQ9RG4oL15bYS16XVsuXHddKigtWy5cd10rKSskL2kpLHJzPXtlbGVtZW50OjEsdGV4dDozLHByb2dyZXNzaW5nSW5zdHJ1Y3Rpb246Nyxjb21tZW50OjgsZG9jdW1lbnQ6OX0sSCQ9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIHdpbmRvdz4idSI/bnVsbDp3aW5kb3d9LFckPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QifHx0eXBlb2YgdC5jcmVhdGVQb2xpY3khPSJmdW5jdGlvbiIpcmV0dXJuIG51bGw7bGV0IHI9bnVsbDtjb25zdCBvPSJkYXRhLXR0LXBvbGljeS1zdWZmaXgiO24mJm4uaGFzQXR0cmlidXRlKG8pJiYocj1uLmdldEF0dHJpYnV0ZShvKSk7Y29uc3Qgcz0iZG9tcHVyaWZ5Iisocj8iIyIrcjoiIik7dHJ5e3JldHVybiB0LmNyZWF0ZVBvbGljeShzLHtjcmVhdGVIVE1MKGkpe3JldHVybiBpfSxjcmVhdGVTY3JpcHRVUkwoaSl7cmV0dXJuIGl9fSl9Y2F0Y2h7cmV0dXJuIG51bGx9fSxNaD1mdW5jdGlvbigpe3JldHVybnthZnRlclNhbml0aXplQXR0cmlidXRlczpbXSxhZnRlclNhbml0aXplRWxlbWVudHM6W10sYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTTpbXSxiZWZvcmVTYW5pdGl6ZUF0dHJpYnV0ZXM6W10sYmVmb3JlU2FuaXRpemVFbGVtZW50czpbXSxiZWZvcmVTYW5pdGl6ZVNoYWRvd0RPTTpbXSx1cG9uU2FuaXRpemVBdHRyaWJ1dGU6W10sdXBvblNhbml0aXplRWxlbWVudDpbXSx1cG9uU2FuaXRpemVTaGFkb3dOb2RlOltdfX07ZnVuY3Rpb24gY3coKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06SCQoKTtjb25zdCB0PXhlPT5jdyh4ZSk7aWYodC52ZXJzaW9uPSIzLjQuNSIsdC5yZW1vdmVkPVtdLCFlfHwhZS5kb2N1bWVudHx8ZS5kb2N1bWVudC5ub2RlVHlwZSE9PXJzLmRvY3VtZW50fHwhZS5FbGVtZW50KXJldHVybiB0LmlzU3VwcG9ydGVkPSExLHQ7bGV0IG49ZS5kb2N1bWVudDtjb25zdCByPW4sbz1yLmN1cnJlbnRTY3JpcHQscz1lLkRvY3VtZW50RnJhZ21lbnQsaT1lLkhUTUxUZW1wbGF0ZUVsZW1lbnQsYT1lLk5vZGUsbD1lLkVsZW1lbnQsdT1lLk5vZGVGaWx0ZXIsYz1lLk5hbWVkTm9kZU1hcCxmPWM9PT12b2lkIDA/ZS5OYW1lZE5vZGVNYXB8fGUuTW96TmFtZWRBdHRyTWFwOmMsZD1lLkhUTUxGb3JtRWxlbWVudCxwPWUuRE9NUGFyc2VyLG09ZS50cnVzdGVkVHlwZXMseT1sLnByb3RvdHlwZSxfPUFvKHksImNsb25lTm9kZSIpLHc9QW8oeSwicmVtb3ZlIiksdj1Bbyh5LCJuZXh0U2libGluZyIpLGg9QW8oeSwiY2hpbGROb2RlcyIpLGI9QW8oeSwicGFyZW50Tm9kZSIpLHg9YSYmYS5wcm90b3R5cGU/QW8oYS5wcm90b3R5cGUsIm5vZGVUeXBlIik6bnVsbDtpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7Y29uc3QgeGU9bi5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3hlLmNvbnRlbnQmJnhlLmNvbnRlbnQub3duZXJEb2N1bWVudCYmKG49eGUuY29udGVudC5vd25lckRvY3VtZW50KX1sZXQgUyxrPSIiO2NvbnN0IFQ9bixDPVQuaW1wbGVtZW50YXRpb24sUD1ULmNyZWF0ZU5vZGVJdGVyYXRvcixGPVQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxEPVQuZ2V0RWxlbWVudHNCeVRhZ05hbWUsVz1yLmltcG9ydE5vZGU7bGV0IEw9TWgoKTt0LmlzU3VwcG9ydGVkPXR5cGVvZiBhdz09ImZ1bmN0aW9uIiYmdHlwZW9mIGI9PSJmdW5jdGlvbiImJkMmJkMuY3JlYXRlSFRNTERvY3VtZW50IT09dm9pZCAwO2NvbnN0IGo9JCQsST1NJCxWPUIkLEI9cSQsaWU9RiQsbmU9eiQsVmU9aiQsTmU9VSQ7bGV0IGV0PSRoLHZlPW51bGw7Y29uc3QgSWU9UmUoe30sWy4uLlJoLC4uLlVjLC4uLkhjLC4uLldjLC4uLk5oXSk7bGV0IGVlPW51bGw7Y29uc3Qgej1SZSh7fSxbLi4uRGgsLi4uR2MsLi4uTGgsLi4uU2FdKTtsZXQgWT1PYmplY3Quc2VhbChscyhudWxsLHt0YWdOYW1lQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZU5hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTohMX19KSksSj1udWxsLGxlPW51bGw7Y29uc3Qgd2U9T2JqZWN0LnNlYWwobHMobnVsbCx7dGFnQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZUNoZWNrOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsfX0pKTtsZXQgdGU9ITAsRT0hMCxPPSExLHE9ITAsSz0hMSxIPSEwLFg9ITEsY2U9ITEsYWU9ITEsb2U9ITEsWj0hMSxrZT0hMSxwZT0hMCxiZT0hMTtjb25zdCBBZT0idXNlci1jb250ZW50LSI7bGV0IHplPSEwLEhlPSExLFdlPXt9LEplPW51bGw7Y29uc3QgcHQ9UmUoe30sWyJhbm5vdGF0aW9uLXhtbCIsImF1ZGlvIiwiY29sZ3JvdXAiLCJkZXNjIiwiZm9yZWlnbm9iamVjdCIsImhlYWQiLCJpZnJhbWUiLCJtYXRoIiwibWkiLCJtbiIsIm1vIiwibXMiLCJtdGV4dCIsIm5vZW1iZWQiLCJub2ZyYW1lcyIsIm5vc2NyaXB0IiwicGxhaW50ZXh0Iiwic2NyaXB0Iiwic3R5bGUiLCJzdmciLCJ0ZW1wbGF0ZSIsInRoZWFkIiwidGl0bGUiLCJ2aWRlbyIsInhtcCJdKTtsZXQgYW49bnVsbDtjb25zdCBXdD1SZSh7fSxbImF1ZGlvIiwidmlkZW8iLCJpbWciLCJzb3VyY2UiLCJpbWFnZSIsInRyYWNrIl0pO2xldCBncj1udWxsO2NvbnN0IE1zPVJlKHt9LFsiYWx0IiwiY2xhc3MiLCJmb3IiLCJpZCIsImxhYmVsIiwibmFtZSIsInBhdHRlcm4iLCJwbGFjZWhvbGRlciIsInJvbGUiLCJzdW1tYXJ5IiwidGl0bGUiLCJ2YWx1ZSIsInN0eWxlIiwieG1sbnMiXSksRHQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLFh0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseW49Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2xldCB5cj15bixabD0hMSxlYz1udWxsO2NvbnN0IEx3PVJlKHt9LFtEdCxYdCx5bl0sVmMpO2xldCB0Yz1SZSh7fSxbIm1pIiwibW8iLCJtbiIsIm1zIiwibXRleHQiXSksbmM9UmUoe30sWyJhbm5vdGF0aW9uLXhtbCJdKTtjb25zdCAkdz1SZSh7fSxbInRpdGxlIiwic3R5bGUiLCJmb250IiwiYSIsInNjcmlwdCJdKTtsZXQgQnM9bnVsbDtjb25zdCBNdz1bImFwcGxpY2F0aW9uL3hodG1sK3htbCIsInRleHQvaHRtbCJdLEJ3PSJ0ZXh0L2h0bWwiO2xldCBQdD1udWxsLFFvPW51bGw7Y29uc3QgcXc9bi5jcmVhdGVFbGVtZW50KCJmb3JtIiksQ2Q9ZnVuY3Rpb24oQSl7cmV0dXJuIEEgaW5zdGFuY2VvZiBSZWdFeHB8fEEgaW5zdGFuY2VvZiBGdW5jdGlvbn0scmM9ZnVuY3Rpb24oKXtsZXQgQT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307aWYoUW8mJlFvPT09QSlyZXR1cm47KCFBfHx0eXBlb2YgQSE9Im9iamVjdCIpJiYoQT17fSksQT11bihBKSxCcz1Ndy5pbmRleE9mKEEuUEFSU0VSX01FRElBX1RZUEUpPT09LTE/Qnc6QS5QQVJTRVJfTUVESUFfVFlQRSxQdD1Ccz09PSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiP1ZjOnRpLHZlPWh0KEEsIkFMTE9XRURfVEFHUyIpJiZlbihBLkFMTE9XRURfVEFHUyk/UmUoe30sQS5BTExPV0VEX1RBR1MsUHQpOkllLGVlPWh0KEEsIkFMTE9XRURfQVRUUiIpJiZlbihBLkFMTE9XRURfQVRUUik/UmUoe30sQS5BTExPV0VEX0FUVFIsUHQpOnosZWM9aHQoQSwiQUxMT1dFRF9OQU1FU1BBQ0VTIikmJmVuKEEuQUxMT1dFRF9OQU1FU1BBQ0VTKT9SZSh7fSxBLkFMTE9XRURfTkFNRVNQQUNFUyxWYyk6THcsZ3I9aHQoQSwiQUREX1VSSV9TQUZFX0FUVFIiKSYmZW4oQS5BRERfVVJJX1NBRkVfQVRUUik/UmUodW4oTXMpLEEuQUREX1VSSV9TQUZFX0FUVFIsUHQpOk1zLGFuPWh0KEEsIkFERF9EQVRBX1VSSV9UQUdTIikmJmVuKEEuQUREX0RBVEFfVVJJX1RBR1MpP1JlKHVuKFd0KSxBLkFERF9EQVRBX1VSSV9UQUdTLFB0KTpXdCxKZT1odChBLCJGT1JCSURfQ09OVEVOVFMiKSYmZW4oQS5GT1JCSURfQ09OVEVOVFMpP1JlKHt9LEEuRk9SQklEX0NPTlRFTlRTLFB0KTpwdCxKPWh0KEEsIkZPUkJJRF9UQUdTIikmJmVuKEEuRk9SQklEX1RBR1MpP1JlKHt9LEEuRk9SQklEX1RBR1MsUHQpOnVuKHt9KSxsZT1odChBLCJGT1JCSURfQVRUUiIpJiZlbihBLkZPUkJJRF9BVFRSKT9SZSh7fSxBLkZPUkJJRF9BVFRSLFB0KTp1bih7fSksV2U9aHQoQSwiVVNFX1BST0ZJTEVTIik/QS5VU0VfUFJPRklMRVMmJnR5cGVvZiBBLlVTRV9QUk9GSUxFUz09Im9iamVjdCI/dW4oQS5VU0VfUFJPRklMRVMpOkEuVVNFX1BST0ZJTEVTOiExLHRlPUEuQUxMT1dfQVJJQV9BVFRSIT09ITEsRT1BLkFMTE9XX0RBVEFfQVRUUiE9PSExLE89QS5BTExPV19VTktOT1dOX1BST1RPQ09MU3x8ITEscT1BLkFMTE9XX1NFTEZfQ0xPU0VfSU5fQVRUUiE9PSExLEs9QS5TQUZFX0ZPUl9URU1QTEFURVN8fCExLEg9QS5TQUZFX0ZPUl9YTUwhPT0hMSxYPUEuV0hPTEVfRE9DVU1FTlR8fCExLG9lPUEuUkVUVVJOX0RPTXx8ITEsWj1BLlJFVFVSTl9ET01fRlJBR01FTlR8fCExLGtlPUEuUkVUVVJOX1RSVVNURURfVFlQRXx8ITEsYWU9QS5GT1JDRV9CT0RZfHwhMSxwZT1BLlNBTklUSVpFX0RPTSE9PSExLGJlPUEuU0FOSVRJWkVfTkFNRURfUFJPUFN8fCExLHplPUEuS0VFUF9DT05URU5UIT09ITEsSGU9QS5JTl9QTEFDRXx8ITEsZXQ9TiQoQS5BTExPV0VEX1VSSV9SRUdFWFApP0EuQUxMT1dFRF9VUklfUkVHRVhQOiRoLHlyPXR5cGVvZiBBLk5BTUVTUEFDRT09InN0cmluZyI/QS5OQU1FU1BBQ0U6eW4sdGM9aHQoQSwiTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTIikmJkEuTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTJiZ0eXBlb2YgQS5NQVRITUxfVEVYVF9JTlRFR1JBVElPTl9QT0lOVFM9PSJvYmplY3QiP3VuKEEuTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTKTpSZSh7fSxbIm1pIiwibW8iLCJtbiIsIm1zIiwibXRleHQiXSksbmM9aHQoQSwiSFRNTF9JTlRFR1JBVElPTl9QT0lOVFMiKSYmQS5IVE1MX0lOVEVHUkFUSU9OX1BPSU5UUyYmdHlwZW9mIEEuSFRNTF9JTlRFR1JBVElPTl9QT0lOVFM9PSJvYmplY3QiP3VuKEEuSFRNTF9JTlRFR1JBVElPTl9QT0lOVFMpOlJlKHt9LFsiYW5ub3RhdGlvbi14bWwiXSk7Y29uc3QgUT1odChBLCJDVVNUT01fRUxFTUVOVF9IQU5ETElORyIpJiZBLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiZ0eXBlb2YgQS5DVVNUT01fRUxFTUVOVF9IQU5ETElORz09Im9iamVjdCI/dW4oQS5DVVNUT01fRUxFTUVOVF9IQU5ETElORyk6bHMobnVsbCk7aWYoWT1scyhudWxsKSxodChRLCJ0YWdOYW1lQ2hlY2siKSYmQ2QoUS50YWdOYW1lQ2hlY2spJiYoWS50YWdOYW1lQ2hlY2s9US50YWdOYW1lQ2hlY2spLGh0KFEsImF0dHJpYnV0ZU5hbWVDaGVjayIpJiZDZChRLmF0dHJpYnV0ZU5hbWVDaGVjaykmJihZLmF0dHJpYnV0ZU5hbWVDaGVjaz1RLmF0dHJpYnV0ZU5hbWVDaGVjayksaHQoUSwiYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzIikmJnR5cGVvZiBRLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cz09ImJvb2xlYW4iJiYoWS5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM9US5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMpLEsmJihFPSExKSxaJiYob2U9ITApLFdlJiYodmU9UmUoe30sTmgpLGVlPWxzKG51bGwpLFdlLmh0bWw9PT0hMCYmKFJlKHZlLFJoKSxSZShlZSxEaCkpLFdlLnN2Zz09PSEwJiYoUmUodmUsVWMpLFJlKGVlLEdjKSxSZShlZSxTYSkpLFdlLnN2Z0ZpbHRlcnM9PT0hMCYmKFJlKHZlLEhjKSxSZShlZSxHYyksUmUoZWUsU2EpKSxXZS5tYXRoTWw9PT0hMCYmKFJlKHZlLFdjKSxSZShlZSxMaCksUmUoZWUsU2EpKSksd2UudGFnQ2hlY2s9bnVsbCx3ZS5hdHRyaWJ1dGVDaGVjaz1udWxsLGh0KEEsIkFERF9UQUdTIikmJih0eXBlb2YgQS5BRERfVEFHUz09ImZ1bmN0aW9uIj93ZS50YWdDaGVjaz1BLkFERF9UQUdTOmVuKEEuQUREX1RBR1MpJiYodmU9PT1JZSYmKHZlPXVuKHZlKSksUmUodmUsQS5BRERfVEFHUyxQdCkpKSxodChBLCJBRERfQVRUUiIpJiYodHlwZW9mIEEuQUREX0FUVFI9PSJmdW5jdGlvbiI/d2UuYXR0cmlidXRlQ2hlY2s9QS5BRERfQVRUUjplbihBLkFERF9BVFRSKSYmKGVlPT09eiYmKGVlPXVuKGVlKSksUmUoZWUsQS5BRERfQVRUUixQdCkpKSxodChBLCJBRERfVVJJX1NBRkVfQVRUUiIpJiZlbihBLkFERF9VUklfU0FGRV9BVFRSKSYmUmUoZ3IsQS5BRERfVVJJX1NBRkVfQVRUUixQdCksaHQoQSwiRk9SQklEX0NPTlRFTlRTIikmJmVuKEEuRk9SQklEX0NPTlRFTlRTKSYmKEplPT09cHQmJihKZT11bihKZSkpLFJlKEplLEEuRk9SQklEX0NPTlRFTlRTLFB0KSksaHQoQSwiQUREX0ZPUkJJRF9DT05URU5UUyIpJiZlbihBLkFERF9GT1JCSURfQ09OVEVOVFMpJiYoSmU9PT1wdCYmKEplPXVuKEplKSksUmUoSmUsQS5BRERfRk9SQklEX0NPTlRFTlRTLFB0KSksemUmJih2ZVsiI3RleHQiXT0hMCksWCYmUmUodmUsWyJodG1sIiwiaGVhZCIsImJvZHkiXSksdmUudGFibGUmJihSZSh2ZSxbInRib2R5Il0pLGRlbGV0ZSBKLnRib2R5KSxBLlRSVVNURURfVFlQRVNfUE9MSUNZKXtpZih0eXBlb2YgQS5UUlVTVEVEX1RZUEVTX1BPTElDWS5jcmVhdGVIVE1MIT0iZnVuY3Rpb24iKXRocm93IHhhKCdUUlVTVEVEX1RZUEVTX1BPTElDWSBjb25maWd1cmF0aW9uIG9wdGlvbiBtdXN0IHByb3ZpZGUgYSAiY3JlYXRlSFRNTCIgaG9vay4nKTtpZih0eXBlb2YgQS5UUlVTVEVEX1RZUEVTX1BPTElDWS5jcmVhdGVTY3JpcHRVUkwhPSJmdW5jdGlvbiIpdGhyb3cgeGEoJ1RSVVNURURfVFlQRVNfUE9MSUNZIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG11c3QgcHJvdmlkZSBhICJjcmVhdGVTY3JpcHRVUkwiIGhvb2suJyk7Uz1BLlRSVVNURURfVFlQRVNfUE9MSUNZLGs9Uy5jcmVhdGVIVE1MKCIiKX1lbHNlIFM9PT12b2lkIDAmJihTPVckKG0sbykpLFMhPT1udWxsJiZ0eXBlb2Ygaz09InN0cmluZyImJihrPVMuY3JlYXRlSFRNTCgiIikpO3NuJiZzbihBKSxRbz1BfSxBZD1SZSh7fSxbLi4uVWMsLi4uSGMsLi4uRCRdKSxPZD1SZSh7fSxbLi4uV2MsLi4uTCRdKSxGdz1mdW5jdGlvbihBKXtsZXQgUT1iKEEpOyghUXx8IVEudGFnTmFtZSkmJihRPXtuYW1lc3BhY2VVUkk6eXIsdGFnTmFtZToidGVtcGxhdGUifSk7Y29uc3QgbWU9dGkoQS50YWdOYW1lKSxxZT10aShRLnRhZ05hbWUpO3JldHVybiBlY1tBLm5hbWVzcGFjZVVSSV0/QS5uYW1lc3BhY2VVUkk9PT1YdD9RLm5hbWVzcGFjZVVSST09PXluP21lPT09InN2ZyI6US5uYW1lc3BhY2VVUkk9PT1EdD9tZT09PSJzdmciJiYocWU9PT0iYW5ub3RhdGlvbi14bWwifHx0Y1txZV0pOiEhQWRbbWVdOkEubmFtZXNwYWNlVVJJPT09RHQ/US5uYW1lc3BhY2VVUkk9PT15bj9tZT09PSJtYXRoIjpRLm5hbWVzcGFjZVVSST09PVh0P21lPT09Im1hdGgiJiZuY1txZV06ISFPZFttZV06QS5uYW1lc3BhY2VVUkk9PT15bj9RLm5hbWVzcGFjZVVSST09PVh0JiYhbmNbcWVdfHxRLm5hbWVzcGFjZVVSST09PUR0JiYhdGNbcWVdPyExOiFPZFttZV0mJigkd1ttZV18fCFBZFttZV0pOiEhKEJzPT09ImFwcGxpY2F0aW9uL3hodG1sK3htbCImJmVjW0EubmFtZXNwYWNlVVJJXSk6ITF9LCRuPWZ1bmN0aW9uKEEpe3RzKHQucmVtb3ZlZCx7ZWxlbWVudDpBfSk7dHJ5e2IoQSkucmVtb3ZlQ2hpbGQoQSl9Y2F0Y2h7dyhBKX19LHlvPWZ1bmN0aW9uKEEsUSl7dHJ5e3RzKHQucmVtb3ZlZCx7YXR0cmlidXRlOlEuZ2V0QXR0cmlidXRlTm9kZShBKSxmcm9tOlF9KX1jYXRjaHt0cyh0LnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206UX0pfWlmKFEucmVtb3ZlQXR0cmlidXRlKEEpLEE9PT0iaXMiKWlmKG9lfHxaKXRyeXskbihRKX1jYXRjaHt9ZWxzZSB0cnl7US5zZXRBdHRyaWJ1dGUoQSwiIil9Y2F0Y2h7fX0sUGQ9ZnVuY3Rpb24oQSl7bGV0IFE9bnVsbCxtZT1udWxsO2lmKGFlKUE9IjxyZW1vdmU+PC9yZW1vdmU+IitBO2Vsc2V7Y29uc3QgRXQ9QWgoQSwvXltcclxuXHQgXSsvKTttZT1FdCYmRXRbMF19QnM9PT0iYXBwbGljYXRpb24veGh0bWwreG1sIiYmeXI9PT15biYmKEE9JzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48L2hlYWQ+PGJvZHk+JytBKyI8L2JvZHk+PC9odG1sPiIpO2NvbnN0IHFlPVM/Uy5jcmVhdGVIVE1MKEEpOkE7aWYoeXI9PT15bil0cnl7UT1uZXcgcCgpLnBhcnNlRnJvbVN0cmluZyhxZSxCcyl9Y2F0Y2h7fWlmKCFRfHwhUS5kb2N1bWVudEVsZW1lbnQpe1E9Qy5jcmVhdGVEb2N1bWVudCh5ciwidGVtcGxhdGUiLG51bGwpO3RyeXtRLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9Wmw/azpxZX1jYXRjaHt9fWNvbnN0IGt0PVEuYm9keXx8US5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIEEmJm1lJiZrdC5pbnNlcnRCZWZvcmUobi5jcmVhdGVUZXh0Tm9kZShtZSksa3QuY2hpbGROb2Rlc1swXXx8bnVsbCkseXI9PT15bj9ELmNhbGwoUSxYPyJodG1sIjoiYm9keSIpWzBdOlg/US5kb2N1bWVudEVsZW1lbnQ6a3R9LElkPWZ1bmN0aW9uKEEpe3JldHVybiBQLmNhbGwoQS5vd25lckRvY3VtZW50fHxBLEEsdS5TSE9XX0VMRU1FTlR8dS5TSE9XX0NPTU1FTlR8dS5TSE9XX1RFWFR8dS5TSE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT058dS5TSE9XX0NEQVRBX1NFQ1RJT04sbnVsbCl9LFJkPWZ1bmN0aW9uKEEpe0Eubm9ybWFsaXplKCk7Y29uc3QgUT1QLmNhbGwoQS5vd25lckRvY3VtZW50fHxBLEEsdS5TSE9XX1RFWFR8dS5TSE9XX0NPTU1FTlR8dS5TSE9XX0NEQVRBX1NFQ1RJT058dS5TSE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT04sbnVsbCk7bGV0IG1lPVEubmV4dE5vZGUoKTtmb3IoO21lOyl7bGV0IHFlPW1lLmRhdGE7ZXMoW2osSSxWXSxrdD0+e3FlPW5zKHFlLGt0LCIgIil9KSxtZS5kYXRhPXFlLG1lPVEubmV4dE5vZGUoKX19LG9jPWZ1bmN0aW9uKEEpe3JldHVybiBBIGluc3RhbmNlb2YgZCYmKHR5cGVvZiBBLm5vZGVOYW1lIT0ic3RyaW5nInx8dHlwZW9mIEEudGV4dENvbnRlbnQhPSJzdHJpbmcifHx0eXBlb2YgQS5yZW1vdmVDaGlsZCE9ImZ1bmN0aW9uInx8IShBLmF0dHJpYnV0ZXMgaW5zdGFuY2VvZiBmKXx8dHlwZW9mIEEucmVtb3ZlQXR0cmlidXRlIT0iZnVuY3Rpb24ifHx0eXBlb2YgQS5zZXRBdHRyaWJ1dGUhPSJmdW5jdGlvbiJ8fHR5cGVvZiBBLm5hbWVzcGFjZVVSSSE9InN0cmluZyJ8fHR5cGVvZiBBLmluc2VydEJlZm9yZSE9ImZ1bmN0aW9uInx8dHlwZW9mIEEuaGFzQ2hpbGROb2RlcyE9ImZ1bmN0aW9uIil9LEdpPWZ1bmN0aW9uKEEpe2lmKCF4fHx0eXBlb2YgQSE9Im9iamVjdCJ8fEE9PT1udWxsKXJldHVybiExO3RyeXtyZXR1cm4gdHlwZW9mIHgoQSk9PSJudW1iZXIifWNhdGNoe3JldHVybiExfX07ZnVuY3Rpb24gdnIoeGUsQSxRKXtlcyh4ZSxtZT0+e21lLmNhbGwodCxBLFEsUW8pfSl9Y29uc3QgTmQ9ZnVuY3Rpb24oQSl7bGV0IFE9bnVsbDtpZih2cihMLmJlZm9yZVNhbml0aXplRWxlbWVudHMsQSxudWxsKSxvYyhBKSlyZXR1cm4gJG4oQSksITA7Y29uc3QgbWU9UHQoQS5ub2RlTmFtZSk7aWYodnIoTC51cG9uU2FuaXRpemVFbGVtZW50LEEse3RhZ05hbWU6bWUsYWxsb3dlZFRhZ3M6dmV9KSxIJiZBLmhhc0NoaWxkTm9kZXMoKSYmIUdpKEEuZmlyc3RFbGVtZW50Q2hpbGQpJiZCdCgvPFsvXHchXS9nLEEuaW5uZXJIVE1MKSYmQnQoLzxbL1x3IV0vZyxBLnRleHRDb250ZW50KXx8SCYmQS5uYW1lc3BhY2VVUkk9PT15biYmbWU9PT0ic3R5bGUiJiZHaShBLmZpcnN0RWxlbWVudENoaWxkKXx8QS5ub2RlVHlwZT09PXJzLnByb2dyZXNzaW5nSW5zdHJ1Y3Rpb258fEgmJkEubm9kZVR5cGU9PT1ycy5jb21tZW50JiZCdCgvPFsvXHddL2csQS5kYXRhKSlyZXR1cm4gJG4oQSksITA7aWYoSlttZV18fCEod2UudGFnQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmd2UudGFnQ2hlY2sobWUpKSYmIXZlW21lXSl7aWYoIUpbbWVdJiZMZChtZSkmJihZLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmQnQoWS50YWdOYW1lQ2hlY2ssbWUpfHxZLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZZLnRhZ05hbWVDaGVjayhtZSkpKXJldHVybiExO2lmKHplJiYhSmVbbWVdKXtjb25zdCBxZT1iKEEpfHxBLnBhcmVudE5vZGUsa3Q9aChBKXx8QS5jaGlsZE5vZGVzO2lmKGt0JiZxZSl7Y29uc3QgRXQ9a3QubGVuZ3RoO2ZvcihsZXQgbG49RXQtMTtsbj49MDstLWxuKXtjb25zdCBIcj1fKGt0W2xuXSwhMCk7cWUuaW5zZXJ0QmVmb3JlKEhyLHYoQSkpfX19cmV0dXJuICRuKEEpLCEwfXJldHVybiBBIGluc3RhbmNlb2YgbCYmIUZ3KEEpfHwobWU9PT0ibm9zY3JpcHQifHxtZT09PSJub2VtYmVkInx8bWU9PT0ibm9mcmFtZXMiKSYmQnQoLzxcL25vKHNjcmlwdHxlbWJlZHxmcmFtZXMpL2ksQS5pbm5lckhUTUwpPygkbihBKSwhMCk6KEsmJkEubm9kZVR5cGU9PT1ycy50ZXh0JiYoUT1BLnRleHRDb250ZW50LGVzKFtqLEksVl0scWU9PntRPW5zKFEscWUsIiAiKX0pLEEudGV4dENvbnRlbnQhPT1RJiYodHModC5yZW1vdmVkLHtlbGVtZW50OkEuY2xvbmVOb2RlKCl9KSxBLnRleHRDb250ZW50PVEpKSx2cihMLmFmdGVyU2FuaXRpemVFbGVtZW50cyxBLG51bGwpLCExKX0sRGQ9ZnVuY3Rpb24oQSxRLG1lKXtpZihsZVtRXXx8cGUmJihRPT09ImlkInx8UT09PSJuYW1lIikmJihtZSBpbiBufHxtZSBpbiBxdykpcmV0dXJuITE7Y29uc3QgcWU9ZWVbUV18fHdlLmF0dHJpYnV0ZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJndlLmF0dHJpYnV0ZUNoZWNrKFEsQSk7aWYoIShFJiYhbGVbUV0mJkJ0KEIsUSkpKXtpZighKHRlJiZCdChpZSxRKSkpe2lmKCFxZXx8bGVbUV0pe2lmKCEoTGQoQSkmJihZLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmQnQoWS50YWdOYW1lQ2hlY2ssQSl8fFkudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlkudGFnTmFtZUNoZWNrKEEpKSYmKFkuYXR0cmlidXRlTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZCdChZLmF0dHJpYnV0ZU5hbWVDaGVjayxRKXx8WS5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmWS5hdHRyaWJ1dGVOYW1lQ2hlY2soUSxBKSl8fFE9PT0iaXMiJiZZLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyYmKFkudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZCdChZLnRhZ05hbWVDaGVjayxtZSl8fFkudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlkudGFnTmFtZUNoZWNrKG1lKSkpKXJldHVybiExfWVsc2UgaWYoIWdyW1FdKXtpZighQnQoZXQsbnMobWUsVmUsIiIpKSl7aWYoISgoUT09PSJzcmMifHxRPT09InhsaW5rOmhyZWYifHxRPT09ImhyZWYiKSYmQSE9PSJzY3JpcHQiJiZPaChtZSwiZGF0YToiKT09PTAmJmFuW0FdKSl7aWYoIShPJiYhQnQobmUsbnMobWUsVmUsIiIpKSkpe2lmKG1lKXJldHVybiExfX19fX19cmV0dXJuITB9LHp3PVJlKHt9LFsiYW5ub3RhdGlvbi14bWwiLCJjb2xvci1wcm9maWxlIiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXNyYyIsImZvbnQtZmFjZS11cmkiLCJtaXNzaW5nLWdseXBoIl0pLExkPWZ1bmN0aW9uKEEpe3JldHVybiF6d1t0aShBKV0mJkJ0KE5lLEEpfSwkZD1mdW5jdGlvbihBKXt2cihMLmJlZm9yZVNhbml0aXplQXR0cmlidXRlcyxBLG51bGwpO2NvbnN0IFE9QS5hdHRyaWJ1dGVzO2lmKCFRfHxvYyhBKSlyZXR1cm47Y29uc3QgbWU9e2F0dHJOYW1lOiIiLGF0dHJWYWx1ZToiIixrZWVwQXR0cjohMCxhbGxvd2VkQXR0cmlidXRlczplZSxmb3JjZUtlZXBBdHRyOnZvaWQgMH07bGV0IHFlPVEubGVuZ3RoO2Zvcig7cWUtLTspe2NvbnN0IGt0PVFbcWVdLEV0PWt0Lm5hbWUsbG49a3QubmFtZXNwYWNlVVJJLEhyPWt0LnZhbHVlLGJyPVB0KEV0KSxpYz1IcjtsZXQgTHQ9RXQ9PT0idmFsdWUiP2ljOkMkKGljKTtpZihtZS5hdHRyTmFtZT1icixtZS5hdHRyVmFsdWU9THQsbWUua2VlcEF0dHI9ITAsbWUuZm9yY2VLZWVwQXR0cj12b2lkIDAsdnIoTC51cG9uU2FuaXRpemVBdHRyaWJ1dGUsQSxtZSksTHQ9bWUuYXR0clZhbHVlLGJlJiYoYnI9PT0iaWQifHxicj09PSJuYW1lIikmJk9oKEx0LEFlKSE9PTAmJih5byhFdCxBKSxMdD1BZStMdCksSCYmQnQoLygoLS0hP3xdKT4pfDxcLyhzdHlsZXxzY3JpcHR8dGl0bGV8eG1wfHRleHRhcmVhfG5vc2NyaXB0fGlmcmFtZXxub2VtYmVkfG5vZnJhbWVzKS9pLEx0KSl7eW8oRXQsQSk7Y29udGludWV9aWYoYnI9PT0iYXR0cmlidXRlbmFtZSImJkFoKEx0LCJocmVmIikpe3lvKEV0LEEpO2NvbnRpbnVlfWlmKG1lLmZvcmNlS2VlcEF0dHIpY29udGludWU7aWYoIW1lLmtlZXBBdHRyKXt5byhFdCxBKTtjb250aW51ZX1pZighcSYmQnQoL1wvPi9pLEx0KSl7eW8oRXQsQSk7Y29udGludWV9SyYmZXMoW2osSSxWXSxCZD0+e0x0PW5zKEx0LEJkLCIgIil9KTtjb25zdCBNZD1QdChBLm5vZGVOYW1lKTtpZighRGQoTWQsYnIsTHQpKXt5byhFdCxBKTtjb250aW51ZX1pZihTJiZ0eXBlb2YgbT09Im9iamVjdCImJnR5cGVvZiBtLmdldEF0dHJpYnV0ZVR5cGU9PSJmdW5jdGlvbiImJiFsbilzd2l0Y2gobS5nZXRBdHRyaWJ1dGVUeXBlKE1kLGJyKSl7Y2FzZSJUcnVzdGVkSFRNTCI6e0x0PVMuY3JlYXRlSFRNTChMdCk7YnJlYWt9Y2FzZSJUcnVzdGVkU2NyaXB0VVJMIjp7THQ9Uy5jcmVhdGVTY3JpcHRVUkwoTHQpO2JyZWFrfX1pZihMdCE9PWljKXRyeXtsbj9BLnNldEF0dHJpYnV0ZU5TKGxuLEV0LEx0KTpBLnNldEF0dHJpYnV0ZShFdCxMdCksb2MoQSk/JG4oQSk6Q2godC5yZW1vdmVkKX1jYXRjaHt5byhFdCxBKX19dnIoTC5hZnRlclNhbml0aXplQXR0cmlidXRlcyxBLG51bGwpfSxzYz1mdW5jdGlvbihBKXtsZXQgUT1udWxsO2NvbnN0IG1lPUlkKEEpO2Zvcih2cihMLmJlZm9yZVNhbml0aXplU2hhZG93RE9NLEEsbnVsbCk7UT1tZS5uZXh0Tm9kZSgpOyl2cihMLnVwb25TYW5pdGl6ZVNoYWRvd05vZGUsUSxudWxsKSxOZChRKSwkZChRKSxRLmNvbnRlbnQgaW5zdGFuY2VvZiBzJiZzYyhRLmNvbnRlbnQpO3ZyKEwuYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTSxBLG51bGwpfSxLaT1mdW5jdGlvbihBKXtpZihBLm5vZGVUeXBlPT09cnMuZWxlbWVudCYmQS5zaGFkb3dSb290IGluc3RhbmNlb2Ygcyl7Y29uc3QgcWU9QS5zaGFkb3dSb290O0tpKHFlKSxzYyhxZSl9Y29uc3QgUT1BLmNoaWxkTm9kZXM7aWYoIVEpcmV0dXJuO2NvbnN0IG1lPVtdO2VzKFEscWU9Pnt0cyhtZSxxZSl9KTtmb3IoY29uc3QgcWUgb2YgbWUpS2kocWUpfTtyZXR1cm4gdC5zYW5pdGl6ZT1mdW5jdGlvbih4ZSl7bGV0IEE9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LFE9bnVsbCxtZT1udWxsLHFlPW51bGwsa3Q9bnVsbDtpZihabD0heGUsWmwmJih4ZT0iPCEtLT4iKSx0eXBlb2YgeGUhPSJzdHJpbmciJiYhR2koeGUpJiYoeGU9UiQoeGUpLHR5cGVvZiB4ZSE9InN0cmluZyIpKXRocm93IHhhKCJkaXJ0eSBpcyBub3QgYSBzdHJpbmcsIGFib3J0aW5nIik7aWYoIXQuaXNTdXBwb3J0ZWQpcmV0dXJuIHhlO2lmKGNlfHxyYyhBKSx0LnJlbW92ZWQ9W10sdHlwZW9mIHhlPT0ic3RyaW5nIiYmKEhlPSExKSxIZSl7Y29uc3QgSHI9eGUubm9kZU5hbWU7aWYodHlwZW9mIEhyPT0ic3RyaW5nIil7Y29uc3QgYnI9UHQoSHIpO2lmKCF2ZVticl18fEpbYnJdKXRocm93IHhhKCJyb290IG5vZGUgaXMgZm9yYmlkZGVuIGFuZCBjYW5ub3QgYmUgc2FuaXRpemVkIGluLXBsYWNlIil9S2koeGUpfWVsc2UgaWYoR2koeGUpKVE9UGQoIjwhLS0tLT4iKSxtZT1RLm93bmVyRG9jdW1lbnQuaW1wb3J0Tm9kZSh4ZSwhMCksbWUubm9kZVR5cGU9PT1ycy5lbGVtZW50JiZtZS5ub2RlTmFtZT09PSJCT0RZInx8bWUubm9kZU5hbWU9PT0iSFRNTCI/UT1tZTpRLmFwcGVuZENoaWxkKG1lKSxLaShtZSk7ZWxzZXtpZighb2UmJiFLJiYhWCYmeGUuaW5kZXhPZigiPCIpPT09LTEpcmV0dXJuIFMmJmtlP1MuY3JlYXRlSFRNTCh4ZSk6eGU7aWYoUT1QZCh4ZSksIVEpcmV0dXJuIG9lP251bGw6a2U/azoiIn1RJiZhZSYmJG4oUS5maXJzdENoaWxkKTtjb25zdCBFdD1JZChIZT94ZTpRKTtmb3IoO3FlPUV0Lm5leHROb2RlKCk7KU5kKHFlKSwkZChxZSkscWUuY29udGVudCBpbnN0YW5jZW9mIHMmJnNjKHFlLmNvbnRlbnQpO2lmKEhlKXJldHVybiBLJiZSZCh4ZSkseGU7aWYob2Upe2lmKEsmJlJkKFEpLFopZm9yKGt0PUYuY2FsbChRLm93bmVyRG9jdW1lbnQpO1EuZmlyc3RDaGlsZDspa3QuYXBwZW5kQ2hpbGQoUS5maXJzdENoaWxkKTtlbHNlIGt0PVE7cmV0dXJuKGVlLnNoYWRvd3Jvb3R8fGVlLnNoYWRvd3Jvb3Rtb2RlKSYmKGt0PVcuY2FsbChyLGt0LCEwKSksa3R9bGV0IGxuPVg/US5vdXRlckhUTUw6US5pbm5lckhUTUw7cmV0dXJuIFgmJnZlWyIhZG9jdHlwZSJdJiZRLm93bmVyRG9jdW1lbnQmJlEub3duZXJEb2N1bWVudC5kb2N0eXBlJiZRLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lJiZCdChWJCxRLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKSYmKGxuPSI8IURPQ1RZUEUgIitRLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lK2A+CmArbG4pLEsmJmVzKFtqLEksVl0sSHI9Pntsbj1ucyhsbixIciwiICIpfSksUyYma2U/Uy5jcmVhdGVIVE1MKGxuKTpsbn0sdC5zZXRDb25maWc9ZnVuY3Rpb24oKXtsZXQgeGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O3JjKHhlKSxjZT0hMH0sdC5jbGVhckNvbmZpZz1mdW5jdGlvbigpe1FvPW51bGwsY2U9ITF9LHQuaXNWYWxpZEF0dHJpYnV0ZT1mdW5jdGlvbih4ZSxBLFEpe1FvfHxyYyh7fSk7Y29uc3QgbWU9UHQoeGUpLHFlPVB0KEEpO3JldHVybiBEZChtZSxxZSxRKX0sdC5hZGRIb29rPWZ1bmN0aW9uKHhlLEEpe3R5cGVvZiBBPT0iZnVuY3Rpb24iJiZ0cyhMW3hlXSxBKX0sdC5yZW1vdmVIb29rPWZ1bmN0aW9uKHhlLEEpe2lmKEEhPT12b2lkIDApe2NvbnN0IFE9RSQoTFt4ZV0sQSk7cmV0dXJuIFE9PT0tMT92b2lkIDA6VCQoTFt4ZV0sUSwxKVswXX1yZXR1cm4gQ2goTFt4ZV0pfSx0LnJlbW92ZUhvb2tzPWZ1bmN0aW9uKHhlKXtMW3hlXT1bXX0sdC5yZW1vdmVBbGxIb29rcz1mdW5jdGlvbigpe0w9TWgoKX0sdH12YXIgdXc9Y3coKTt1dy5hZGRIb29rKCJhZnRlclNhbml0aXplQXR0cmlidXRlcyIsZT0+e2UgaW5zdGFuY2VvZiBFbGVtZW50JiZlLnRhZ05hbWU9PT0iQSImJmUuZ2V0QXR0cmlidXRlKCJ0YXJnZXQiKT09PSJfYmxhbmsiJiZlLnNldEF0dHJpYnV0ZSgicmVsIiwibm9vcGVuZXIgbm9yZWZlcnJlciIpfSk7ZnVuY3Rpb24gQmgoZSl7cmV0dXJuIHV3LnNhbml0aXplKHR5cGVvZiBlPT0ic3RyaW5nIj9lOiIiLHtBRERfQVRUUjpbInRhcmdldCJdfSl9Y29uc3QgRyQ9e21vdW50ZWQoZSx0KXtlLmlubmVySFRNTD1CaCh0LnZhbHVlKX0sdXBkYXRlZChlLHQpe3QudmFsdWUhPT10Lm9sZFZhbHVlJiYoZS5pbm5lckhUTUw9QmgodC52YWx1ZSkpfX0sSyQ9bHQoZT0+e2UudnVlQXBwLmRpcmVjdGl2ZSgic2FuaXRpemUiLEckKX0pLFEkPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InByb2R1Y3RzIixsYWJlbDoiUHJvZHVjdHMiLGljb246ImktbHVjaWRlLXBhY2thZ2UiLHRvOiIvcHJvZHVjdHMiLHNlY3Rpb246Im1haW4iLHByaW9yaXR5OjUsYWJpbGl0eTpbInByb2R1Y3Q6bWFuYWdlIiwicHJvZHVjdDp3cml0ZSJdfV19KX0pLFkkPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InByb2plY3RzIixsYWJlbDoiUHJvamVjdHMiLGljb246ImktbHVjaWRlLWZvbGRlci1rYW5iYW4iLHRvOiIvcHJvamVjdHMiLHNlY3Rpb246Im1haW4iLHByaW9yaXR5OjEwfV19KX0pLEokPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InJlZmVycmFsIixsYWJlbDoiUmVmZXJyYWwiLGljb246ImktbHVjaWRlLWdpZnQiLHRvOiIvcmVmZXJyYWwiLHNlY3Rpb246Im1haW4iLHByaW9yaXR5OjIwfV19KX0pLFgkPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InNldHRpbmdzLXNlbGYtaG9zdCIsbGFiZWw6IlNlbGYtaG9zdGluZyIsdG86Ii9zZXR0aW5ncy9zZWxmLWhvc3QiLHNlY3Rpb246InNldHRpbmdzIixwcmlvcml0eTo5MCxhYmlsaXR5Olsic2VsZmhvc3Q6cmVhZCIsInNlbGZob3N0Om1hbmFnZSJdfV19KX0pLFokPXtzbG90czp7cm9vdDoicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIixiYXNlOlsidy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyLTAgYXBwZWFyYW5jZS1ub25lIHBsYWNlaG9sZGVyOnRleHQtZGltbWVkIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS03NSIsInRyYW5zaXRpb24tY29sb3JzIl0sbGVhZGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIHN0YXJ0LTAgZmxleCBpdGVtcy1jZW50ZXIiLGxlYWRpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgZW5kLTAgZmxleCBpdGVtcy1jZW50ZXIiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQifSx2YXJpYW50czp7ZmllbGRHcm91cDp7aG9yaXpvbnRhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtZS1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC1zLW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9LHZlcnRpY2FsOntyb290OiJncm91cCBoYXMtZm9jdXMtdmlzaWJsZTp6LVsxXSIsYmFzZToiZ3JvdXAtbm90LW9ubHk6Z3JvdXAtZmlyc3Q6cm91bmRlZC1iLW5vbmUgZ3JvdXAtbm90LW9ubHk6Z3JvdXAtbGFzdDpyb3VuZGVkLXQtbm9uZSBncm91cC1ub3QtbGFzdDpncm91cC1ub3QtZmlyc3Q6cm91bmRlZC1ub25lIn19LHNpemU6e3hzOntiYXNlOiJweC0yIHB5LTEgdGV4dC1zbS80IGdhcC0xIixsZWFkaW5nOiJwcy0yIix0cmFpbGluZzoicGUtMiIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtLzQgZ2FwLTEuNSIsbGVhZGluZzoicHMtMi41Iix0cmFpbGluZzoicGUtMi41IixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LG1kOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtYmFzZS81IGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSIsdHJhaWxpbmc6InBlLTIuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZS81IGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSx4bDp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZSBnYXAtMiIsbGVhZGluZzoicHMtMyIsdHJhaWxpbmc6InBlLTMiLGxlYWRpbmdJY29uOiJzaXplLTYiLGxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTYifX0sdmFyaWFudDp7b3V0bGluZToidGV4dC1oaWdobGlnaHRlZCBiZy1kZWZhdWx0IHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9fSxjb21wb3VuZFZhcmlhbnRzOlt7Y29sb3I6InByaW1hcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctZXJyb3IifSx7Y29sb3I6InByaW1hcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctcHJpbWFyeSJ9LHtjb2xvcjoic2Vjb25kYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXNlY29uZGFyeSJ9LHtjb2xvcjoic3VjY2VzcyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zdWNjZXNzIn0se2NvbG9yOiJpbmZvIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWluZm8ifSx7Y29sb3I6Indhcm5pbmciLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctd2FybmluZyJ9LHtjb2xvcjoiZXJyb3IiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctZXJyb3IifSx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQifSx7Y29sb3I6Im5ldXRyYWwiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW52ZXJ0ZWQifSx7bGVhZGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBzLTcifSx7bGVhZGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBzLTgifSx7bGVhZGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBzLTkifSx7bGVhZGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBzLTEwIn0se2xlYWRpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwcy0xMSJ9LHt0cmFpbGluZzohMCxzaXplOiJ4cyIsY2xhc3M6InBlLTcifSx7dHJhaWxpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwZS04In0se3RyYWlsaW5nOiEwLHNpemU6Im1kIixjbGFzczoicGUtOSJ9LHt0cmFpbGluZzohMCxzaXplOiJsZyIsY2xhc3M6InBlLTEwIn0se3RyYWlsaW5nOiEwLHNpemU6InhsIixjbGFzczoicGUtMTEifSx7bG9hZGluZzohMCxsZWFkaW5nOiEwLGNsYXNzOntsZWFkaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITEsdHJhaWxpbmc6ITAsY2xhc3M6e3RyYWlsaW5nSWNvbjoiYW5pbWF0ZS1zcGluIn19LHtmaXhlZDohMSxzaXplOiJ4cyIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToic20iLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6Im1kIixjbGFzczoibWQ6dGV4dC1zbSJ9LHtmaXhlZDohMSxzaXplOiJsZyIsY2xhc3M6Im1kOnRleHQtc20ifV0sZGVmYXVsdFZhcmlhbnRzOntzaXplOiJtZCIsY29sb3I6InByaW1hcnkiLHZhcmlhbnQ6Im91dGxpbmUifX0sZU09WyJpZCIsInR5cGUiLCJ2YWx1ZSIsIm5hbWUiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJhdXRvY29tcGxldGUiXSxmdz1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVJbnB1dCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGlkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJ0ZXh0In0scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxjb2xvcjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx2YXJpYW50Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2NvbXBsZXRlOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiJvZmYifSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saGlnaGxpZ2h0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZpeGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsTW9kaWZpZXJzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxsb2FkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbInVwZGF0ZTptb2RlbFZhbHVlIiwiYmx1ciIsImNoYW5nZSJdLHNldHVwKGUse2V4cG9zZTp0LGVtaXQ6bn0pe2NvbnN0IHI9ZSxvPW4scz16cigpLGk9YW8ociwibW9kZWxWYWx1ZSIsbyx7ZGVmYXVsdFZhbHVlOnIuZGVmYXVsdFZhbHVlfSksYT1TdCgpLGw9TG4oImlucHV0IixyKSx7ZW1pdEZvcm1CbHVyOnUsZW1pdEZvcm1JbnB1dDpjLGVtaXRGb3JtQ2hhbmdlOmYsc2l6ZTpkLGNvbG9yOnAsaWQ6bSxuYW1lOnksaGlnaGxpZ2h0Ol8sZGlzYWJsZWQ6dyxlbWl0Rm9ybUZvY3VzOnYsYXJpYUF0dHJzOmh9PXhkKHIse2RlZmVySW5wdXRWYWxpZGF0aW9uOiEwfSkse29yaWVudGF0aW9uOmIsc2l6ZTp4fT13ZChyKSx7aXNMZWFkaW5nOlMsaXNUcmFpbGluZzprLGxlYWRpbmdJY29uTmFtZTpULHRyYWlsaW5nSWNvbk5hbWU6Q309S2wociksUD1OKCgpPT54LnZhbHVlfHxkLnZhbHVlKSxGPU4oKCk9PnV0KHtleHRlbmQ6dXQoWiQpLC4uLmEudWk/LmlucHV0fHx7fX0pKHt0eXBlOnIudHlwZSxjb2xvcjpwLnZhbHVlLHZhcmlhbnQ6ci52YXJpYW50LHNpemU6UD8udmFsdWUsbG9hZGluZzpyLmxvYWRpbmcsaGlnaGxpZ2h0Ol8udmFsdWUsZml4ZWQ6ci5maXhlZCxsZWFkaW5nOlMudmFsdWV8fCEhci5hdmF0YXJ8fCEhcy5sZWFkaW5nLHRyYWlsaW5nOmsudmFsdWV8fCEhcy50cmFpbGluZyxmaWVsZEdyb3VwOmIudmFsdWV9KSksRD1TcygiaW5wdXRSZWYiKTtmdW5jdGlvbiBXKEIpe3IubW9kZWxNb2RpZmllcnM/LnRyaW0mJih0eXBlb2YgQj09InN0cmluZyJ8fEI9PT1udWxsfHxCPT09dm9pZCAwKSYmKEI9Qj8udHJpbSgpPz9udWxsKSwoci5tb2RlbE1vZGlmaWVycz8ubnVtYmVyfHxyLnR5cGU9PT0ibnVtYmVyIikmJihCPXlkKEIpKSxyLm1vZGVsTW9kaWZpZXJzPy5udWxsYWJsZSYmKEJ8fD1udWxsKSxyLm1vZGVsTW9kaWZpZXJzPy5vcHRpb25hbCYmIXIubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiZCIT09bnVsbCYmKEJ8fD12b2lkIDApLGkudmFsdWU9QixjKCl9ZnVuY3Rpb24gTChCKXtyLm1vZGVsTW9kaWZpZXJzPy5sYXp5fHxXKEIudGFyZ2V0LnZhbHVlKX1mdW5jdGlvbiBqKEIpe2NvbnN0IGllPUIudGFyZ2V0LnZhbHVlO3IubW9kZWxNb2RpZmllcnM/LmxhenkmJlcoaWUpLHIubW9kZWxNb2RpZmllcnM/LnRyaW0mJihCLnRhcmdldC52YWx1ZT1pZS50cmltKCkpLGYoKSxvKCJjaGFuZ2UiLEIpfWZ1bmN0aW9uIEkoQil7dSgpLG8oImJsdXIiLEIpfWZ1bmN0aW9uIFYoKXtyLmF1dG9mb2N1cyYmRC52YWx1ZT8uZm9jdXMoKX1yZXR1cm4gb3QoKCk9PntzZXRUaW1lb3V0KCgpPT57VigpfSxyLmF1dG9mb2N1c0RlbGF5KX0pLHQoe2lucHV0UmVmOkR9KSwoQixpZSk9PihSKCksJChnKE1lKSx7YXM6ZS5hcywiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6dWUoRi52YWx1ZS5yb290KHtjbGFzczpbZyhsKT8ucm9vdCxyLmNsYXNzXX0pKX0se2RlZmF1bHQ6TSgoKT0+W3d0KCJpbnB1dCIsZmUoe2lkOmcobSkscmVmX2tleToiaW5wdXRSZWYiLHJlZjpELHR5cGU6ZS50eXBlLHZhbHVlOmcoaSksbmFtZTpnKHkpLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkYudmFsdWUuYmFzZSh7Y2xhc3M6ZyhsKT8uYmFzZX0pLGRpc2FibGVkOmcodykscmVxdWlyZWQ6ZS5yZXF1aXJlZCxhdXRvY29tcGxldGU6ZS5hdXRvY29tcGxldGV9LHsuLi5CLiRhdHRycywuLi5nKGgpfSx7b25JbnB1dDpMLG9uQmx1cjpJLG9uQ2hhbmdlOmosb25Gb2N1czppZVswXXx8KGllWzBdPSguLi5uZSk9PmcodikmJmcodikoLi4ubmUpKX0pLG51bGwsMTYsZU0pLFUoQi4kc2xvdHMsImRlZmF1bHQiLHt1aTpGLnZhbHVlfSksZyhTKXx8ZS5hdmF0YXJ8fHMubGVhZGluZz8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOnVlKEYudmFsdWUubGVhZGluZyh7Y2xhc3M6ZyhsKT8ubGVhZGluZ30pKX0sW1UoQi4kc2xvdHMsImxlYWRpbmciLHt1aTpGLnZhbHVlfSwoKT0+W2coUykmJmcoVCk/KFIoKSwkKF9uLHtrZXk6MCxuYW1lOmcoVCksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp1ZShGLnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczpnKGwpPy5sZWFkaW5nSWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8oUigpLCQoVW8sZmUoe2tleToxLHNpemU6ZyhsKT8ubGVhZGluZ0F2YXRhclNpemV8fEYudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpGLnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmcobCk/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLGcoayl8fHMudHJhaWxpbmc/KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6dWUoRi52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZyhsKT8udHJhaWxpbmd9KSl9LFtVKEIuJHNsb3RzLCJ0cmFpbGluZyIse3VpOkYudmFsdWV9LCgpPT5bZyhDKT8oUigpLCQoX24se2tleTowLG5hbWU6ZyhDKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczp1ZShGLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZyhsKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fSksdE09e3Nsb3RzOntyb290OiIiLHdyYXBwZXI6IiIsbGFiZWxXcmFwcGVyOiJmbGV4IGNvbnRlbnQtY2VudGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTEiLGxhYmVsOiJibG9jayBmb250LW1lZGl1bSB0ZXh0LWRlZmF1bHQiLGNvbnRhaW5lcjoicmVsYXRpdmUiLGRlc2NyaXB0aW9uOiJ0ZXh0LW11dGVkIixlcnJvcjoibXQtMiB0ZXh0LWVycm9yIixoaW50OiJ0ZXh0LW11dGVkIixoZWxwOiJtdC0yIHRleHQtbXV0ZWQifSx2YXJpYW50czp7c2l6ZTp7eHM6e3Jvb3Q6InRleHQteHMifSxzbTp7cm9vdDoidGV4dC14cyJ9LG1kOntyb290OiJ0ZXh0LXNtIn0sbGc6e3Jvb3Q6InRleHQtc20ifSx4bDp7cm9vdDoidGV4dC1iYXNlIn19LHJlcXVpcmVkOnt0cnVlOntsYWJlbDoiYWZ0ZXI6Y29udGVudC1bJyonXSBhZnRlcjptcy0wLjUgYWZ0ZXI6dGV4dC1lcnJvciJ9fSxvcmllbnRhdGlvbjp7dmVydGljYWw6e2NvbnRhaW5lcjoibXQtMSJ9LGhvcml6b250YWw6e3Jvb3Q6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHBsYWNlLWl0ZW1zLWJhc2VsaW5lIGdhcC0yIn19fSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIixvcmllbnRhdGlvbjoidmVydGljYWwifX0sbk09WyJpZCJdLHJNPVsiaWQiXSxvTT1bImlkIl0sc009WyJpZCJdLGR3PXtfX25hbWU6IlVGb3JtRmllbGQiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3JQYXR0ZXJuOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGxhYmVsOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoZWxwOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZXJyb3I6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0saGludDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNpemU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZWFnZXJWYWxpZGF0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbGlkYXRlT25JbnB1dERlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY2xhc3M6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdWk6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49enIoKSxyPVN0KCksbz1MbigiZm9ybUZpZWxkIix0KSxzPU4oKCk9PnV0KHtleHRlbmQ6dXQodE0pLC4uLnIudWk/LmZvcm1GaWVsZHx8e319KSh7c2l6ZTp0LnNpemUscmVxdWlyZWQ6dC5yZXF1aXJlZCxvcmllbnRhdGlvbjp0Lm9yaWVudGF0aW9ufSkpLGk9S2UoYkwsbnVsbCksYT1OKCgpPT50LmVycm9yfHxpPy52YWx1ZT8uZmluZChmPT5mLm5hbWU9PT10Lm5hbWV8fHQuZXJyb3JQYXR0ZXJuJiZmLm5hbWU/Lm1hdGNoKHQuZXJyb3JQYXR0ZXJuKSk/Lm1lc3NhZ2UpLGw9RyhiZigpKSx1PWwudmFsdWUsYz1LZSh5TCx2b2lkIDApO3JldHVybiBQZShsLCgpPT57YyYmdC5uYW1lJiYoYy52YWx1ZVt0Lm5hbWVdPXtpZDpsLnZhbHVlLHBhdHRlcm46dC5lcnJvclBhdHRlcm59KX0se2ltbWVkaWF0ZTohMH0pLE50KFowLGwpLE50KFp1LE4oKCk9Pih7ZXJyb3I6YS52YWx1ZSxuYW1lOnQubmFtZSxzaXplOnQuc2l6ZSxlYWdlclZhbGlkYXRpb246dC5lYWdlclZhbGlkYXRpb24sdmFsaWRhdGVPbklucHV0RGVsYXk6dC52YWxpZGF0ZU9uSW5wdXREZWxheSxlcnJvclBhdHRlcm46dC5lcnJvclBhdHRlcm4saGludDp0LmhpbnQsZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvbixoZWxwOnQuaGVscCxhcmlhSWQ6dX0pKSksKGYsZCk9PihSKCksJChnKE1lKSx7YXM6ZS5hcywiZGF0YS1vcmllbnRhdGlvbiI6ZS5vcmllbnRhdGlvbiwiZGF0YS1zbG90Ijoicm9vdCIsY2xhc3M6dWUocy52YWx1ZS5yb290KHtjbGFzczpbZyhvKT8ucm9vdCx0LmNsYXNzXX0pKX0se2RlZmF1bHQ6TSgoKT0+W3d0KCJkaXYiLHsiZGF0YS1zbG90Ijoid3JhcHBlciIsY2xhc3M6dWUocy52YWx1ZS53cmFwcGVyKHtjbGFzczpnKG8pPy53cmFwcGVyfSkpfSxbZS5sYWJlbHx8bi5sYWJlbD8oUigpLF9lKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoibGFiZWxXcmFwcGVyIixjbGFzczp1ZShzLnZhbHVlLmxhYmVsV3JhcHBlcih7Y2xhc3M6ZyhvKT8ubGFiZWxXcmFwcGVyfSkpfSxbcmUoZyhJMikse2ZvcjpsLnZhbHVlLCJkYXRhLXNsb3QiOiJsYWJlbCIsY2xhc3M6dWUocy52YWx1ZS5sYWJlbCh7Y2xhc3M6ZyhvKT8ubGFiZWx9KSl9LHtkZWZhdWx0Ok0oKCk9PltVKGYuJHNsb3RzLCJsYWJlbCIse2xhYmVsOmUubGFiZWx9LCgpPT5bc3QocnQoZS5sYWJlbCksMSldKV0pLF86M30sOCxbImZvciIsImNsYXNzIl0pLGUuaGludHx8bi5oaW50PyhSKCksX2UoInNwYW4iLHtrZXk6MCxpZDpgJHtnKHUpfS1oaW50YCwiZGF0YS1zbG90IjoiaGludCIsY2xhc3M6dWUocy52YWx1ZS5oaW50KHtjbGFzczpnKG8pPy5oaW50fSkpfSxbVShmLiRzbG90cywiaGludCIse2hpbnQ6ZS5oaW50fSwoKT0+W3N0KHJ0KGUuaGludCksMSldKV0sMTAsbk0pKTpkZSgiIiwhMCldLDIpKTpkZSgiIiwhMCksZS5kZXNjcmlwdGlvbnx8bi5kZXNjcmlwdGlvbj8oUigpLF9lKCJwIix7a2V5OjEsaWQ6YCR7Zyh1KX0tZGVzY3JpcHRpb25gLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6dWUocy52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZyhvKT8uZGVzY3JpcHRpb259KSl9LFtVKGYuJHNsb3RzLCJkZXNjcmlwdGlvbiIse2Rlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb259LCgpPT5bc3QocnQoZS5kZXNjcmlwdGlvbiksMSldKV0sMTAsck0pKTpkZSgiIiwhMCldLDIpLHd0KCJkaXYiLHtjbGFzczp1ZShbKGUubGFiZWx8fCEhbi5sYWJlbHx8ZS5kZXNjcmlwdGlvbnx8ISFuLmRlc2NyaXB0aW9uKSYmcy52YWx1ZS5jb250YWluZXIoe2NsYXNzOmcobyk/LmNvbnRhaW5lcn0pXSl9LFtVKGYuJHNsb3RzLCJkZWZhdWx0Iix7ZXJyb3I6YS52YWx1ZX0pLHQuZXJyb3IhPT0hMSYmKHR5cGVvZiBhLnZhbHVlPT0ic3RyaW5nIiYmYS52YWx1ZXx8bi5lcnJvcik/KFIoKSxfZSgiZGl2Iix7a2V5OjAsaWQ6YCR7Zyh1KX0tZXJyb3JgLCJkYXRhLXNsb3QiOiJlcnJvciIsY2xhc3M6dWUocy52YWx1ZS5lcnJvcih7Y2xhc3M6ZyhvKT8uZXJyb3J9KSl9LFtVKGYuJHNsb3RzLCJlcnJvciIse2Vycm9yOmEudmFsdWV9LCgpPT5bc3QocnQoYS52YWx1ZSksMSldKV0sMTAsb00pKTplLmhlbHB8fG4uaGVscD8oUigpLF9lKCJkaXYiLHtrZXk6MSxpZDpgJHtnKHUpfS1oZWxwYCwiZGF0YS1zbG90IjoiaGVscCIsY2xhc3M6dWUocy52YWx1ZS5oZWxwKHtjbGFzczpnKG8pPy5oZWxwfSkpfSxbVShmLiRzbG90cywiaGVscCIse2hlbHA6ZS5oZWxwfSwoKT0+W3N0KHJ0KGUuaGVscCksMSldKV0sMTAsc00pKTpkZSgiIiwhMCldLDIpXSksXzozfSw4LFsiYXMiLCJkYXRhLW9yaWVudGF0aW9uIiwiY2xhc3MiXSkpfX0saU09e3Nsb3RzOntyb290OiJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIiLGJhc2U6WyJ3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBhcHBlYXJhbmNlLW5vbmUgcGxhY2Vob2xkZXI6dGV4dC1kaW1tZWQgZm9jdXM6b3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTc1IiwidHJhbnNpdGlvbi1jb2xvcnMiXSxsZWFkaW5nOiJhYnNvbHV0ZSBzdGFydC0wIGZsZXggaXRlbXMtc3RhcnQiLGxlYWRpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nOiJhYnNvbHV0ZSBlbmQtMCBmbGV4IGl0ZW1zLXN0YXJ0Iix0cmFpbGluZ0ljb246InNocmluay0wIHRleHQtZGltbWVkIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6e3Jvb3Q6Imdyb3VwIGhhcy1mb2N1cy12aXNpYmxlOnotWzFdIixiYXNlOiJncm91cC1ub3Qtb25seTpncm91cC1maXJzdDpyb3VuZGVkLWUtbm9uZSBncm91cC1ub3Qtb25seTpncm91cC1sYXN0OnJvdW5kZWQtcy1ub25lIGdyb3VwLW5vdC1sYXN0Omdyb3VwLW5vdC1maXJzdDpyb3VuZGVkLW5vbmUifSx2ZXJ0aWNhbDp7cm9vdDoiZ3JvdXAgaGFzLWZvY3VzLXZpc2libGU6ei1bMV0iLGJhc2U6Imdyb3VwLW5vdC1vbmx5Omdyb3VwLWZpcnN0OnJvdW5kZWQtYi1ub25lIGdyb3VwLW5vdC1vbmx5Omdyb3VwLWxhc3Q6cm91bmRlZC10LW5vbmUgZ3JvdXAtbm90LWxhc3Q6Z3JvdXAtbm90LWZpcnN0OnJvdW5kZWQtbm9uZSJ9fSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQtc20vNCBnYXAtMSIsbGVhZGluZzoicHMtMiBpbnNldC15LTEiLHRyYWlsaW5nOiJwZS0yIGluc2V0LXktMSIsbGVhZGluZ0ljb246InNpemUtNCIsbGVhZGluZ0F2YXRhclNpemU6IjN4cyIsdHJhaWxpbmdJY29uOiJzaXplLTQifSxzbTp7YmFzZToicHgtMi41IHB5LTEuNSB0ZXh0LXNtLzQgZ2FwLTEuNSIsbGVhZGluZzoicHMtMi41IGluc2V0LXktMS41Iix0cmFpbGluZzoicGUtMi41IGluc2V0LXktMS41IixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCJ9LG1kOntiYXNlOiJweC0yLjUgcHktMS41IHRleHQtYmFzZS81IGdhcC0xLjUiLGxlYWRpbmc6InBzLTIuNSBpbnNldC15LTEuNSIsdHJhaWxpbmc6InBlLTIuNSBpbnNldC15LTEuNSIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUifSxsZzp7YmFzZToicHgtMyBweS0yIHRleHQtYmFzZS81IGdhcC0yIixsZWFkaW5nOiJwcy0zIGluc2V0LXktMiIsdHJhaWxpbmc6InBlLTMgaW5zZXQteS0yIixsZWFkaW5nSWNvbjoic2l6ZS01IixsZWFkaW5nQXZhdGFyU2l6ZToiMnhzIix0cmFpbGluZ0ljb246InNpemUtNSJ9LHhsOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlIGdhcC0yIixsZWFkaW5nOiJwcy0zIGluc2V0LXktMiIsdHJhaWxpbmc6InBlLTMgaW5zZXQteS0yIixsZWFkaW5nSWNvbjoic2l6ZS02IixsZWFkaW5nQXZhdGFyU2l6ZToieHMiLHRyYWlsaW5nSWNvbjoic2l6ZS02In19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCIsc29mdDoidGV4dC1oaWdobGlnaHRlZCBiZy1lbGV2YXRlZC81MCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1lbGV2YXRlZC81MCIsc3VidGxlOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkIHJpbmcgcmluZy1pbnNldCByaW5nLWFjY2VudGVkIixnaG9zdDoidGV4dC1oaWdobGlnaHRlZCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1lbGV2YXRlZCBmb2N1czpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmJnLXRyYW5zcGFyZW50Iixub25lOiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50In0sY29sb3I6e3ByaW1hcnk6IiIsc2Vjb25kYXJ5OiIiLHN1Y2Nlc3M6IiIsaW5mbzoiIix3YXJuaW5nOiIiLGVycm9yOiIiLG5ldXRyYWw6IiJ9LGxlYWRpbmc6e3RydWU6IiJ9LHRyYWlsaW5nOnt0cnVlOiIifSxsb2FkaW5nOnt0cnVlOiIifSxoaWdobGlnaHQ6e3RydWU6IiJ9LGZpeGVkOntmYWxzZToiIn0sdHlwZTp7ZmlsZToiZmlsZTptZS0xLjUgZmlsZTpmb250LW1lZGl1bSBmaWxlOnRleHQtbXV0ZWQgZmlsZTpvdXRsaW5lLW5vbmUifSxhdXRvcmVzaXplOnt0cnVlOntiYXNlOiJyZXNpemUtbm9uZSJ9fX0sY29tcG91bmRWYXJpYW50czpbe2NvbG9yOiJwcmltYXJ5Iix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWVycm9yIn0se2NvbG9yOiJwcmltYXJ5IixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXByaW1hcnkifSx7Y29sb3I6InNlY29uZGFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1zZWNvbmRhcnkifSx7Y29sb3I6InN1Y2Nlc3MiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc3VjY2VzcyJ9LHtjb2xvcjoiaW5mbyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbmZvIn0se2NvbG9yOiJ3YXJuaW5nIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXdhcm5pbmcifSx7Y29sb3I6ImVycm9yIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWVycm9yIn0se2NvbG9yOiJuZXV0cmFsIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLWludmVydGVkIn0se2NvbG9yOiJuZXV0cmFsIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLWludmVydGVkIn0se2xlYWRpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwcy03In0se2xlYWRpbmc6ITAsc2l6ZToic20iLGNsYXNzOiJwcy04In0se2xlYWRpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwcy05In0se2xlYWRpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwcy0xMCJ9LHtsZWFkaW5nOiEwLHNpemU6InhsIixjbGFzczoicHMtMTEifSx7dHJhaWxpbmc6ITAsc2l6ZToieHMiLGNsYXNzOiJwZS03In0se3RyYWlsaW5nOiEwLHNpemU6InNtIixjbGFzczoicGUtOCJ9LHt0cmFpbGluZzohMCxzaXplOiJtZCIsY2xhc3M6InBlLTkifSx7dHJhaWxpbmc6ITAsc2l6ZToibGciLGNsYXNzOiJwZS0xMCJ9LHt0cmFpbGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBlLTExIn0se2xvYWRpbmc6ITAsbGVhZGluZzohMCxjbGFzczp7bGVhZGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7bG9hZGluZzohMCxsZWFkaW5nOiExLHRyYWlsaW5nOiEwLGNsYXNzOnt0cmFpbGluZ0ljb246ImFuaW1hdGUtc3BpbiJ9fSx7Zml4ZWQ6ITEsc2l6ZToieHMiLGNsYXNzOiJtZDp0ZXh0LXhzIn0se2ZpeGVkOiExLHNpemU6InNtIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJtZCIsY2xhc3M6Im1kOnRleHQtc20ifSx7Zml4ZWQ6ITEsc2l6ZToibGciLGNsYXNzOiJtZDp0ZXh0LXNtIn1dLGRlZmF1bHRWYXJpYW50czp7c2l6ZToibWQiLGNvbG9yOiJwcmltYXJ5Iix2YXJpYW50OiJvdXRsaW5lIn19LGFNPVsiaWQiLCJ2YWx1ZSIsIm5hbWUiLCJyb3dzIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsInJlcXVpcmVkIl0scHc9T2JqZWN0LmFzc2lnbih7aW5oZXJpdEF0dHJzOiExfSx7X19uYW1lOiJVVGV4dGFyZWEiLHByb3BzOnthczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHZhcmlhbnQ6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2l6ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sYXV0b3Jlc2l6ZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvcmVzaXplRGVsYXk6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExLGRlZmF1bHQ6MH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scm93czp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDozfSxtYXhyb3dzOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGhpZ2hsaWdodDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmaXhlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXZhdGFyOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGVhZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsZWFkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0cmFpbGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFpbGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbG9hZGluZzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxsb2FkaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJ1cGRhdGU6bW9kZWxWYWx1ZSIsImJsdXIiLCJjaGFuZ2UiXSxzZXR1cChlLHtleHBvc2U6dCxlbWl0Om59KXtjb25zdCByPWUsbz1uLHM9enIoKSxpPWFvKHIsIm1vZGVsVmFsdWUiLG8se2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRWYWx1ZX0pLGE9U3QoKSxsPUxuKCJ0ZXh0YXJlYSIscikse2VtaXRGb3JtRm9jdXM6dSxlbWl0Rm9ybUJsdXI6YyxlbWl0Rm9ybUlucHV0OmYsZW1pdEZvcm1DaGFuZ2U6ZCxzaXplOnAsY29sb3I6bSxpZDp5LG5hbWU6XyxoaWdobGlnaHQ6dyxkaXNhYmxlZDp2LGFyaWFBdHRyczpofT14ZChyLHtkZWZlcklucHV0VmFsaWRhdGlvbjohMH0pLHtpc0xlYWRpbmc6Yixpc1RyYWlsaW5nOngsbGVhZGluZ0ljb25OYW1lOlMsdHJhaWxpbmdJY29uTmFtZTprfT1LbChyKSxUPU4oKCk9PnV0KHtleHRlbmQ6dXQoaU0pLC4uLmEudWk/LnRleHRhcmVhfHx7fX0pKHtjb2xvcjptLnZhbHVlLHZhcmlhbnQ6ci52YXJpYW50LHNpemU6cD8udmFsdWUsbG9hZGluZzpyLmxvYWRpbmcsaGlnaGxpZ2h0OncudmFsdWUsZml4ZWQ6ci5maXhlZCxhdXRvcmVzaXplOnIuYXV0b3Jlc2l6ZSxsZWFkaW5nOmIudmFsdWV8fCEhci5hdmF0YXJ8fCEhcy5sZWFkaW5nLHRyYWlsaW5nOngudmFsdWV8fCEhcy50cmFpbGluZ30pKSxDPVNzKCJ0ZXh0YXJlYVJlZiIpO2Z1bmN0aW9uIFAoSSl7ci5tb2RlbE1vZGlmaWVycz8udHJpbSYmKHR5cGVvZiBJPT0ic3RyaW5nInx8ST09PW51bGx8fEk9PT12b2lkIDApJiYoST1JPy50cmltKCk/P251bGwpLHIubW9kZWxNb2RpZmllcnM/Lm51bWJlciYmKEk9eWQoSSkpLHIubW9kZWxNb2RpZmllcnM/Lm51bGxhYmxlJiYoSXx8PW51bGwpLHIubW9kZWxNb2RpZmllcnM/Lm9wdGlvbmFsJiYhci5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJkkhPT1udWxsJiYoSXx8PXZvaWQgMCksaS52YWx1ZT1JLGYoKX1mdW5jdGlvbiBGKEkpe2ooKSxyLm1vZGVsTW9kaWZpZXJzPy5sYXp5fHxQKEkudGFyZ2V0LnZhbHVlKX1mdW5jdGlvbiBEKEkpe2NvbnN0IFY9SS50YXJnZXQudmFsdWU7ci5tb2RlbE1vZGlmaWVycz8ubGF6eSYmUChWKSxyLm1vZGVsTW9kaWZpZXJzPy50cmltJiYoSS50YXJnZXQudmFsdWU9Vi50cmltKCkpLGQoKSxvKCJjaGFuZ2UiLEkpfWZ1bmN0aW9uIFcoSSl7YygpLG8oImJsdXIiLEkpfWZ1bmN0aW9uIEwoKXtyLmF1dG9mb2N1cyYmQy52YWx1ZT8uZm9jdXMoKX1mdW5jdGlvbiBqKCl7aWYoci5hdXRvcmVzaXplJiZDLnZhbHVlKXtDLnZhbHVlLnJvd3M9ci5yb3dzO2NvbnN0IEk9Qy52YWx1ZS5zdHlsZS5vdmVyZmxvdztDLnZhbHVlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2NvbnN0IFY9d2luZG93LmdldENvbXB1dGVkU3R5bGUoQy52YWx1ZSksQj1OdW1iZXIucGFyc2VJbnQoVi5wYWRkaW5nVG9wKSxpZT1OdW1iZXIucGFyc2VJbnQoVi5wYWRkaW5nQm90dG9tKSxuZT1CK2llLFZlPU51bWJlci5wYXJzZUludChWLmxpbmVIZWlnaHQpLHtzY3JvbGxIZWlnaHQ6TmV9PUMudmFsdWUsZXQ9KE5lLW5lKS9WZTtldD5yLnJvd3MmJihDLnZhbHVlLnJvd3M9ci5tYXhyb3dzP01hdGgubWluKGV0LHIubWF4cm93cyk6ZXQpLEMudmFsdWUuc3R5bGUub3ZlcmZsb3c9SX19cmV0dXJuIFBlKGksKCk9PntpdChqKX0pLG90KCgpPT57c2V0VGltZW91dCgoKT0+e0woKX0sci5hdXRvZm9jdXNEZWxheSksc2V0VGltZW91dCgoKT0+e2ooKX0sci5hdXRvcmVzaXplRGVsYXkpfSksdCh7dGV4dGFyZWFSZWY6QyxhdXRvUmVzaXplOmp9KSwoSSxWKT0+KFIoKSwkKGcoTWUpLHthczplLmFzLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczp1ZShULnZhbHVlLnJvb3Qoe2NsYXNzOltnKGwpPy5yb290LHIuY2xhc3NdfSkpfSx7ZGVmYXVsdDpNKCgpPT5bd3QoInRleHRhcmVhIixmZSh7aWQ6Zyh5KSxyZWZfa2V5OiJ0ZXh0YXJlYVJlZiIscmVmOkMsdmFsdWU6ZyhpKSxuYW1lOmcoXykscm93czplLnJvd3MscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlciwiZGF0YS1zbG90IjoiYmFzZSIsY2xhc3M6VC52YWx1ZS5iYXNlKHtjbGFzczpnKGwpPy5iYXNlfSksZGlzYWJsZWQ6Zyh2KSxyZXF1aXJlZDplLnJlcXVpcmVkfSx7Li4uSS4kYXR0cnMsLi4uZyhoKX0se29uSW5wdXQ6RixvbkJsdXI6VyxvbkNoYW5nZTpELG9uRm9jdXM6VlswXXx8KFZbMF09KC4uLkIpPT5nKHUpJiZnKHUpKC4uLkIpKX0pLG51bGwsMTYsYU0pLFUoSS4kc2xvdHMsImRlZmF1bHQiLHt1aTpULnZhbHVlfSksZyhiKXx8ZS5hdmF0YXJ8fHMubGVhZGluZz8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6ImxlYWRpbmciLGNsYXNzOnVlKFQudmFsdWUubGVhZGluZyh7Y2xhc3M6ZyhsKT8ubGVhZGluZ30pKX0sW1UoSS4kc2xvdHMsImxlYWRpbmciLHt1aTpULnZhbHVlfSwoKT0+W2coYikmJmcoUyk/KFIoKSwkKF9uLHtrZXk6MCxuYW1lOmcoUyksImRhdGEtc2xvdCI6ImxlYWRpbmdJY29uIixjbGFzczp1ZShULnZhbHVlLmxlYWRpbmdJY29uKHtjbGFzczpnKGwpPy5sZWFkaW5nSWNvbn0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTplLmF2YXRhcj8oUigpLCQoVW8sZmUoe2tleToxLHNpemU6ZyhsKT8ubGVhZGluZ0F2YXRhclNpemV8fFQudmFsdWUubGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJsZWFkaW5nQXZhdGFyIixjbGFzczpULnZhbHVlLmxlYWRpbmdBdmF0YXIoe2NsYXNzOmcobCk/LmxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLGcoeCl8fHMudHJhaWxpbmc/KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6dWUoVC52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZyhsKT8udHJhaWxpbmd9KSl9LFtVKEkuJHNsb3RzLCJ0cmFpbGluZyIse3VpOlQudmFsdWV9LCgpPT5bZyhrKT8oUigpLCQoX24se2tleTowLG5hbWU6ZyhrKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczp1ZShULnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZyhsKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApXSksXzozfSw4LFsiYXMiLCJjbGFzcyJdKSl9fSksbE09e3Nsb3RzOntvdmVybGF5OiJmaXhlZCBpbnNldC0wIixjb250ZW50OiJiZy1kZWZhdWx0IGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IGZsZXggZmxleC1jb2wgZm9jdXM6b3V0bGluZS1ub25lIixoZWFkZXI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcC00IHNtOnB4LTYgbWluLWgtKC0tdWktaGVhZGVyLWhlaWdodCkiLHdyYXBwZXI6IiIsYm9keToiZmxleC0xIHAtNCBzbTpwLTYiLGZvb3RlcjoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBwLTQgc206cHgtNiIsdGl0bGU6InRleHQtaGlnaGxpZ2h0ZWQgZm9udC1zZW1pYm9sZCIsZGVzY3JpcHRpb246Im10LTEgdGV4dC1tdXRlZCB0ZXh0LXNtIixjbG9zZToiYWJzb2x1dGUgdG9wLTQgZW5kLTQifSx2YXJpYW50czp7dHJhbnNpdGlvbjp7dHJ1ZTp7b3ZlcmxheToiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bZmFkZS1pbl8yMDBtc19lYXNlLW91dF0gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLVtmYWRlLW91dF8yMDBtc19lYXNlLWluXSIsY29udGVudDoiZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bc2NhbGUtaW5fMjAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bc2NhbGUtb3V0XzIwMG1zX2Vhc2UtaW5dIn19LGZ1bGxzY3JlZW46e3RydWU6e2NvbnRlbnQ6Imluc2V0LTAifSxmYWxzZTp7Y29udGVudDoidy1bY2FsYygxMDB2dy0ycmVtKV0gbWF4LXctbGcgcm91bmRlZC1sZyBzaGFkb3ctbGcgcmluZyByaW5nLWRlZmF1bHQifX0sb3ZlcmxheTp7dHJ1ZTp7b3ZlcmxheToiYmctZWxldmF0ZWQvNzUifX0sc2Nyb2xsYWJsZTp7dHJ1ZTp7b3ZlcmxheToib3ZlcmZsb3cteS1hdXRvIixjb250ZW50OiJyZWxhdGl2ZSJ9LGZhbHNlOntjb250ZW50OiJmaXhlZCIsYm9keToib3ZlcmZsb3cteS1hdXRvIn19fSxjb21wb3VuZFZhcmlhbnRzOlt7c2Nyb2xsYWJsZTohMCxmdWxsc2NyZWVuOiExLGNsYXNzOntvdmVybGF5OiJncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciBwLTQgc206cHktOCJ9fSx7c2Nyb2xsYWJsZTohMSxmdWxsc2NyZWVuOiExLGNsYXNzOntjb250ZW50OiJ0b3AtMS8yIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBtYXgtaC1bY2FsYygxMDBkdmgtMnJlbSldIHNtOm1heC1oLVtjYWxjKDEwMGR2aC00cmVtKV0gb3ZlcmZsb3ctaGlkZGVuIn19XX0sbXc9e19fbmFtZToiVU1vZGFsIixwcm9wczp7dGl0bGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkZXNjcmlwdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGNvbnRlbnQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxvdmVybGF5Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sc2Nyb2xsYWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0cmFuc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sZnVsbHNjcmVlbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sY2xvc2U6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbG9zZUljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzbWlzc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbW9kYWw6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6WyJhZnRlcjpsZWF2ZSIsImFmdGVyOmVudGVyIiwiY2xvc2U6cHJldmVudCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCxvPXpyKCkse3Q6c309UWwoKSxpPVN0KCksYT1MbigibW9kYWwiLG4pLGw9JHMoVnIobiwib3BlbiIsImRlZmF1bHRPcGVuIiwibW9kYWwiKSxyKSx1PVlsKHl0KCgpPT5uLnBvcnRhbCkpLGM9eXQoKCk9Pm4uY29udGVudCksZj1OKCgpPT5uLmRpc21pc3NpYmxlP3twb2ludGVyRG93bk91dHNpZGU6eT0+aXcoeSx7c2Nyb2xsYWJsZTpuLnNjcm9sbGFibGV9KX06WyJpbnRlcmFjdE91dHNpZGUiLCJlc2NhcGVLZXlEb3duIl0ucmVkdWNlKChfLHcpPT4oX1t3XT12PT57di5wcmV2ZW50RGVmYXVsdCgpLHIoImNsb3NlOnByZXZlbnQiKX0sXykse30pKSxbZCxwXT1RUCgpLG09TigoKT0+dXQoe2V4dGVuZDp1dChsTSksLi4uaS51aT8ubW9kYWx8fHt9fSkoe3RyYW5zaXRpb246bi50cmFuc2l0aW9uLGZ1bGxzY3JlZW46bi5mdWxsc2NyZWVuLG92ZXJsYXk6bi5vdmVybGF5LHNjcm9sbGFibGU6bi5zY3JvbGxhYmxlfSkpO3JldHVybih5LF8pPT4oUigpLCQoZyhyMCkseHQoTXQoZyhsKSkpLHtkZWZhdWx0Ok0oKHtvcGVuOncsY2xvc2U6dn0pPT5bcmUoZyhkKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltyZShnKGMwKSxmZSh7ImRhdGEtc2xvdCI6ImNvbnRlbnQiLGNsYXNzOm0udmFsdWUuY29udGVudCh7Y2xhc3M6WyFvLmRlZmF1bHQmJm4uY2xhc3MsZyhhKT8uY29udGVudF19KX0sYy52YWx1ZSx7b25BZnRlckVudGVyOl9bMF18fChfWzBdPWg9PnIoImFmdGVyOmVudGVyIikpLG9uQWZ0ZXJMZWF2ZTpfWzFdfHwoX1sxXT1oPT5yKCJhZnRlcjpsZWF2ZSIpKX0sVmcoZi52YWx1ZSkpLHtkZWZhdWx0Ok0oKCk9PlshZS50aXRsZSYmIW8udGl0bGV8fCFlLmRlc2NyaXB0aW9uJiYhby5kZXNjcmlwdGlvbnx8by5jb250ZW50PyhSKCksJChnKFZpKSx7a2V5OjB9LHtkZWZhdWx0Ok0oKCk9PlshZS50aXRsZSYmIW8udGl0bGU/KFIoKSwkKGcodnMpLHtrZXk6MH0pKTpvLmNvbnRlbnQ/KFIoKSwkKGcodnMpLHtrZXk6MX0se2RlZmF1bHQ6TSgoKT0+W1UoeS4kc2xvdHMsInRpdGxlIix7fSwoKT0+W3N0KHJ0KGUudGl0bGUpLDEpXSldKSxfOjN9KSk6ZGUoIiIsITApLCFlLmRlc2NyaXB0aW9uJiYhby5kZXNjcmlwdGlvbj8oUigpLCQoZyh5cykse2tleToyfSkpOm8uY29udGVudD8oUigpLCQoZyh5cykse2tleTozfSx7ZGVmYXVsdDpNKCgpPT5bVSh5LiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bc3QocnQoZS5kZXNjcmlwdGlvbiksMSldKV0pLF86M30pKTpkZSgiIiwhMCldKSxfOjN9KSk6ZGUoIiIsITApLFUoeS4kc2xvdHMsImNvbnRlbnQiLHtjbG9zZTp2fSwoKT0+W28uaGVhZGVyfHxlLnRpdGxlfHxvLnRpdGxlfHxlLmRlc2NyaXB0aW9ufHxvLmRlc2NyaXB0aW9ufHxuLmNsb3NlfHxvLmNsb3NlPyhSKCksX2UoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJoZWFkZXIiLGNsYXNzOnVlKG0udmFsdWUuaGVhZGVyKHtjbGFzczpnKGEpPy5oZWFkZXJ9KSl9LFtVKHkuJHNsb3RzLCJoZWFkZXIiLHtjbG9zZTp2fSwoKT0+W2UudGl0bGV8fG8udGl0bGV8fGUuZGVzY3JpcHRpb258fG8uZGVzY3JpcHRpb24/KFIoKSxfZSgiZGl2Iix7a2V5OjAsImRhdGEtc2xvdCI6IndyYXBwZXIiLGNsYXNzOnVlKG0udmFsdWUud3JhcHBlcih7Y2xhc3M6ZyhhKT8ud3JhcHBlcn0pKX0sW2UudGl0bGV8fG8udGl0bGU/KFIoKSwkKGcodnMpLHtrZXk6MCwiZGF0YS1zbG90IjoidGl0bGUiLGNsYXNzOnVlKG0udmFsdWUudGl0bGUoe2NsYXNzOmcoYSk/LnRpdGxlfSkpfSx7ZGVmYXVsdDpNKCgpPT5bVSh5LiRzbG90cywidGl0bGUiLHt9LCgpPT5bc3QocnQoZS50aXRsZSksMSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpkZSgiIiwhMCksZS5kZXNjcmlwdGlvbnx8by5kZXNjcmlwdGlvbj8oUigpLCQoZyh5cykse2tleToxLCJkYXRhLXNsb3QiOiJkZXNjcmlwdGlvbiIsY2xhc3M6dWUobS52YWx1ZS5kZXNjcmlwdGlvbih7Y2xhc3M6ZyhhKT8uZGVzY3JpcHRpb259KSl9LHtkZWZhdWx0Ok0oKCk9PltVKHkuJHNsb3RzLCJkZXNjcmlwdGlvbiIse30sKCk9PltzdChydChlLmRlc2NyaXB0aW9uKSwxKV0pXSksXzozfSw4LFsiY2xhc3MiXSkpOmRlKCIiLCEwKV0sMikpOmRlKCIiLCEwKSxVKHkuJHNsb3RzLCJhY3Rpb25zIiksbi5jbG9zZXx8by5jbG9zZT8oUigpLCQoZyhvMCkse2tleToxLCJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0Ok0oKCk9PltVKHkuJHNsb3RzLCJjbG9zZSIse3VpOm0udmFsdWV9LCgpPT5bbi5jbG9zZT8oUigpLCQoTnIsZmUoe2tleTowLGljb246ZS5jbG9zZUljb258fGcoaSkudWkuaWNvbnMuY2xvc2UsY29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IiwiYXJpYS1sYWJlbCI6ZyhzKSgibW9kYWwuY2xvc2UiKX0sdHlwZW9mIG4uY2xvc2U9PSJvYmplY3QiP24uY2xvc2U6e30seyJkYXRhLXNsb3QiOiJjbG9zZSIsY2xhc3M6bS52YWx1ZS5jbG9zZSh7Y2xhc3M6ZyhhKT8uY2xvc2V9KX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTpkZSgiIiwhMCldKV0pLF86Mn0sMTAyNCkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLG8uYm9keT8oUigpLF9lKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90IjoiYm9keSIsY2xhc3M6dWUobS52YWx1ZS5ib2R5KHtjbGFzczpnKGEpPy5ib2R5fSkpfSxbVSh5LiRzbG90cywiYm9keSIse2Nsb3NlOnZ9KV0sMikpOmRlKCIiLCEwKSxvLmZvb3Rlcj8oUigpLF9lKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiZm9vdGVyIixjbGFzczp1ZShtLnZhbHVlLmZvb3Rlcih7Y2xhc3M6ZyhhKT8uZm9vdGVyfSkpfSxbVSh5LiRzbG90cywiZm9vdGVyIix7Y2xvc2U6dn0pXSwyKSk6ZGUoIiIsITApXSldKSxfOjJ9LDEwNDAsWyJjbGFzcyJdKV0pLF86Mn0sMTAyNCksby5kZWZhdWx0PyhSKCksJChnKGYwKSx7a2V5OjAsImFzLWNoaWxkIjoiIixjbGFzczp1ZShuLmNsYXNzKX0se2RlZmF1bHQ6TSgoKT0+W1UoeS4kc2xvdHMsImRlZmF1bHQiLHtvcGVuOnd9KV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTpkZSgiIiwhMCkscmUoZyh1MCkseHQoTXQoZyh1KSkpLHtkZWZhdWx0Ok0oKCk9PltyZShnKF9kKSxudWxsLHtkZWZhdWx0Ok0oKCk9PltlLnNjcm9sbGFibGU/KFIoKSwkKGcocXUpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6dWUobS52YWx1ZS5vdmVybGF5KHtjbGFzczpnKGEpPy5vdmVybGF5fSkpfSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhwKSldKSxfOjF9LDgsWyJjbGFzcyJdKSk6KFIoKSxfZShHZSx7a2V5OjF9LFtlLm92ZXJsYXk/KFIoKSwkKGcocXUpLHtrZXk6MCwiZGF0YS1zbG90Ijoib3ZlcmxheSIsY2xhc3M6dWUobS52YWx1ZS5vdmVybGF5KHtjbGFzczpnKGEpPy5vdmVybGF5fSkpfSxudWxsLDgsWyJjbGFzcyJdKSk6ZGUoIiIsITApLHJlKGcocCkpXSw2NCkpXSksXzoxfSldKSxfOjF9LDE2KV0pLF86M30sMTYpKX19O2Z1bmN0aW9uIGh3KCl7ZnVuY3Rpb24gZShvKXtyZXR1cm4gTGUoIi9hcGkvc3VwcG9ydC90aWNrZXRzIix7bWV0aG9kOiJQT1NUIixib2R5Om99KX1mdW5jdGlvbiB0KG89e30pe3JldHVybiBMZSgiL2FwaS9zdXBwb3J0L3RpY2tldHMiLHtxdWVyeTp7Li4ub319KX1mdW5jdGlvbiBuKG8pe3JldHVybiBMZSgiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkIix7cXVlcnk6e2lkOm99fSl9ZnVuY3Rpb24gcihvLHMpe3JldHVybiBMZSgiL2FwaS9zdXBwb3J0L3RpY2tldHMvOmlkL21lc3NhZ2VzIix7bWV0aG9kOiJQT1NUIixxdWVyeTp7aWQ6b30sYm9keTp7Ym9keTpzfX0pfXJldHVybntjcmVhdGVUaWNrZXQ6ZSxmZXRjaFRpY2tldHM6dCxmZXRjaFRpY2tldDpuLHBvc3RNZXNzYWdlOnJ9fWNvbnN0IGd3PSgpPT5pbygic3VwcG9ydC5mZWVkYmFja09wZW4iLCgpPT4hMSkseXc9KCk9PmlvKCJzdXBwb3J0LnRpY2tldE9wZW4iLCgpPT4hMSksdnc9U3ltYm9sKCJudXh0LXVpLnRvYXN0LW1heCIpO2Z1bmN0aW9uIFNkKCl7Y29uc3QgZT1pbygidG9hc3RzIiwoKT0+W10pLHQ9S2Uodncsdm9pZCAwKSxuPUcoITEpLHI9W10sbz0oKT0+YCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLDkpfWA7YXN5bmMgZnVuY3Rpb24gcygpe2lmKCEobi52YWx1ZXx8ci5sZW5ndGg9PT0wKSl7Zm9yKG4udmFsdWU9ITA7ci5sZW5ndGg+MDspe2NvbnN0IGM9ci5zaGlmdCgpO2F3YWl0IGl0KCksZS52YWx1ZT1bLi4uZS52YWx1ZSxjXS5zbGljZSgtKHQ/LnZhbHVlPz81KSl9bi52YWx1ZT0hMX19ZnVuY3Rpb24gaShjKXtjb25zdCBmPXtpZDpvKCksb3BlbjohMCwuLi5jfSxkPWUudmFsdWUuZmluZEluZGV4KHA9PnAuaWQ9PT1mLmlkKTtyZXR1cm4gZCE9PS0xPyhlLnZhbHVlW2RdPXsuLi5lLnZhbHVlW2RdLC4uLmYsX2R1cGxpY2F0ZTooZS52YWx1ZVtkXS5fZHVwbGljYXRlfHwwKSsxfSxmKTooci5wdXNoKGYpLHMoKSxmKX1mdW5jdGlvbiBhKGMsZil7Y29uc3QgZD1lLnZhbHVlLmZpbmRJbmRleChwPT5wLmlkPT09Yyk7ZCE9PS0xJiYoZS52YWx1ZVtkXT17Li4uZS52YWx1ZVtkXSwuLi5mLGR1cmF0aW9uOmYuZHVyYXRpb24sb3BlbjohMCxfdXBkYXRlZDohMH0saXQoKCk9Pntjb25zdCBwPWUudmFsdWUuZmluZEluZGV4KG09Pm0uaWQ9PT1jKTtwIT09LTEmJmUudmFsdWVbcF0uX3VwZGF0ZWQmJihlLnZhbHVlW3BdPXsuLi5lLnZhbHVlW3BdLF91cGRhdGVkOnZvaWQgMH0pfSkpfWZ1bmN0aW9uIGwoYyl7Y29uc3QgZj1lLnZhbHVlLmZpbmRJbmRleChkPT5kLmlkPT09Yyk7ZiE9PS0xJiZlLnZhbHVlW2ZdLl91cGRhdGVkfHwoZiE9PS0xJiYoZS52YWx1ZVtmXT17Li4uZS52YWx1ZVtmXSxvcGVuOiExfSksc2V0VGltZW91dCgoKT0+e2UudmFsdWU9ZS52YWx1ZS5maWx0ZXIoZD0+ZC5pZCE9PWMpfSwyMDApKX1mdW5jdGlvbiB1KCl7ZS52YWx1ZT1bXX1yZXR1cm57dG9hc3RzOmUsYWRkOmksdXBkYXRlOmEscmVtb3ZlOmwsY2xlYXI6dX19Y29uc3QgTXI9U3ltYm9sLmZvcigiQHRzLXBhdHRlcm4vbWF0Y2hlciIpLGNNPVN5bWJvbC5mb3IoIkB0cy1wYXR0ZXJuL2lzVmFyaWFkaWMiKSxpbD0iQHRzLXBhdHRlcm4vYW5vbnltb3VzLXNlbGVjdC1rZXkiLHJmPWU9PiEhKGUmJnR5cGVvZiBlPT0ib2JqZWN0IiksRGE9ZT0+ZSYmISFlW01yXSxhcj0oZSx0LG4pPT57aWYoRGEoZSkpe2NvbnN0IHI9ZVtNcl0oKSx7bWF0Y2hlZDpvLHNlbGVjdGlvbnM6c309ci5tYXRjaCh0KTtyZXR1cm4gbyYmcyYmT2JqZWN0LmtleXMocykuZm9yRWFjaChpPT5uKGksc1tpXSkpLG99aWYocmYoZSkpe2lmKCFyZih0KSlyZXR1cm4hMTtpZihBcnJheS5pc0FycmF5KGUpKXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4hMTtsZXQgcj1bXSxvPVtdLHM9W107Zm9yKGNvbnN0IGkgb2YgZS5rZXlzKCkpe2NvbnN0IGE9ZVtpXTtEYShhKSYmYVtjTV0/cy5wdXNoKGEpOnMubGVuZ3RoP28ucHVzaChhKTpyLnB1c2goYSl9aWYocy5sZW5ndGgpe2lmKHMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXR0ZXJuIGVycm9yOiBVc2luZyBgLi4uUC5hcnJheSguLi4pYCBzZXZlcmFsIHRpbWVzIGluIGEgc2luZ2xlIHBhdHRlcm4gaXMgbm90IGFsbG93ZWQuIik7aWYodC5sZW5ndGg8ci5sZW5ndGgrby5sZW5ndGgpcmV0dXJuITE7Y29uc3QgaT10LnNsaWNlKDAsci5sZW5ndGgpLGE9by5sZW5ndGg9PT0wP1tdOnQuc2xpY2UoLW8ubGVuZ3RoKSxsPXQuc2xpY2Uoci5sZW5ndGgsby5sZW5ndGg9PT0wPzEvMDotby5sZW5ndGgpO3JldHVybiByLmV2ZXJ5KCh1LGMpPT5hcih1LGlbY10sbikpJiZvLmV2ZXJ5KCh1LGMpPT5hcih1LGFbY10sbikpJiYocy5sZW5ndGg9PT0wfHxhcihzWzBdLGwsbikpfXJldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoJiZlLmV2ZXJ5KChpLGEpPT5hcihpLHRbYV0sbikpfXJldHVybiBSZWZsZWN0Lm93bktleXMoZSkuZXZlcnkocj0+e2NvbnN0IG89ZVtyXTtyZXR1cm4ociBpbiB0fHxEYShzPW8pJiZzW01yXSgpLm1hdGNoZXJUeXBlPT09Im9wdGlvbmFsIikmJmFyKG8sdFtyXSxuKTt2YXIgc30pfXJldHVybiBPYmplY3QuaXModCxlKX0sY289ZT0+e3ZhciB0LG4scjtyZXR1cm4gcmYoZSk/RGEoZSk/KHQ9KG49KHI9ZVtNcl0oKSkuZ2V0U2VsZWN0aW9uS2V5cyk9PW51bGw/dm9pZCAwOm4uY2FsbChyKSkhPW51bGw/dDpbXTpBcnJheS5pc0FycmF5KGUpP0lpKGUsY28pOklpKE9iamVjdC52YWx1ZXMoZSksY28pOltdfSxJaT0oZSx0KT0+ZS5yZWR1Y2UoKG4scik9Pm4uY29uY2F0KHQocikpLFtdKTtmdW5jdGlvbiBDbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHtvcHRpb25hbDooKT0+dU0oZSksYW5kOnQ9PmR0KGUsdCksb3I6dD0+Zk0oZSx0KSxzZWxlY3Q6dD0+dD09PXZvaWQgMD9xaChlKTpxaCh0LGUpfSl9ZnVuY3Rpb24gdU0oZSl7cmV0dXJuIENuKHtbTXJdOigpPT4oe21hdGNoOnQ9PntsZXQgbj17fTtjb25zdCByPShvLHMpPT57bltvXT1zfTtyZXR1cm4gdD09PXZvaWQgMD8oY28oZSkuZm9yRWFjaChvPT5yKG8sdm9pZCAwKSkse21hdGNoZWQ6ITAsc2VsZWN0aW9uczpufSk6e21hdGNoZWQ6YXIoZSx0LHIpLHNlbGVjdGlvbnM6bn19LGdldFNlbGVjdGlvbktleXM6KCk9PmNvKGUpLG1hdGNoZXJUeXBlOiJvcHRpb25hbCJ9KX0pfWZ1bmN0aW9uIGR0KC4uLmUpe3JldHVybiBDbih7W01yXTooKT0+KHttYXRjaDp0PT57bGV0IG49e307Y29uc3Qgcj0obyxzKT0+e25bb109c307cmV0dXJue21hdGNoZWQ6ZS5ldmVyeShvPT5hcihvLHQscikpLHNlbGVjdGlvbnM6bn19LGdldFNlbGVjdGlvbktleXM6KCk9PklpKGUsY28pLG1hdGNoZXJUeXBlOiJhbmQifSl9KX1mdW5jdGlvbiBmTSguLi5lKXtyZXR1cm4gQ24oe1tNcl06KCk9Pih7bWF0Y2g6dD0+e2xldCBuPXt9O2NvbnN0IHI9KG8scyk9PntuW29dPXN9O3JldHVybiBJaShlLGNvKS5mb3JFYWNoKG89PnIobyx2b2lkIDApKSx7bWF0Y2hlZDplLnNvbWUobz0+YXIobyx0LHIpKSxzZWxlY3Rpb25zOm59fSxnZXRTZWxlY3Rpb25LZXlzOigpPT5JaShlLGNvKSxtYXRjaGVyVHlwZToib3IifSl9KX1mdW5jdGlvbiBRZShlKXtyZXR1cm57W01yXTooKT0+KHttYXRjaDp0PT4oe21hdGNoZWQ6ISFlKHQpfSl9KX19ZnVuY3Rpb24gcWgoLi4uZSl7Y29uc3QgdD10eXBlb2YgZVswXT09InN0cmluZyI/ZVswXTp2b2lkIDAsbj1lLmxlbmd0aD09PTI/ZVsxXTp0eXBlb2YgZVswXT09InN0cmluZyI/dm9pZCAwOmVbMF07cmV0dXJuIENuKHtbTXJdOigpPT4oe21hdGNoOnI9PntsZXQgbz17W3Q/P2lsXTpyfTtyZXR1cm57bWF0Y2hlZDpuPT09dm9pZCAwfHxhcihuLHIsKHMsaSk9PntvW3NdPWl9KSxzZWxlY3Rpb25zOm99fSxnZXRTZWxlY3Rpb25LZXlzOigpPT5bdD8/aWxdLmNvbmNhdChuPT09dm9pZCAwP1tdOmNvKG4pKX0pfSl9ZnVuY3Rpb24gYncoZSl7cmV0dXJuITB9ZnVuY3Rpb24gdHIoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIn1mdW5jdGlvbiBYcihlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifWZ1bmN0aW9uIFpyKGUpe3JldHVybiB0eXBlb2YgZT09ImJpZ2ludCJ9Q24oUWUoYncpKTtDbihRZShidykpO2NvbnN0IGVvPWU9Pk9iamVjdC5hc3NpZ24oQ24oZSkse3N0YXJ0c1dpdGg6dD0+e3JldHVybiBlbyhkdChlLChuPXQsUWUocj0+WHIocikmJnIuc3RhcnRzV2l0aChuKSkpKSk7dmFyIG59LGVuZHNXaXRoOnQ9PntyZXR1cm4gZW8oZHQoZSwobj10LFFlKHI9PlhyKHIpJiZyLmVuZHNXaXRoKG4pKSkpKTt2YXIgbn0sbWluTGVuZ3RoOnQ9PmVvKGR0KGUsKG49PlFlKHI9PlhyKHIpJiZyLmxlbmd0aD49bikpKHQpKSksbGVuZ3RoOnQ9PmVvKGR0KGUsKG49PlFlKHI9PlhyKHIpJiZyLmxlbmd0aD09PW4pKSh0KSkpLG1heExlbmd0aDp0PT5lbyhkdChlLChuPT5RZShyPT5YcihyKSYmci5sZW5ndGg8PW4pKSh0KSkpLGluY2x1ZGVzOnQ9PntyZXR1cm4gZW8oZHQoZSwobj10LFFlKHI9PlhyKHIpJiZyLmluY2x1ZGVzKG4pKSkpKTt2YXIgbn0scmVnZXg6dD0+e3JldHVybiBlbyhkdChlLChuPXQsUWUocj0+WHIocikmJiEhci5tYXRjaChuKSkpKSk7dmFyIG59fSksZE09ZW8oUWUoWHIpKSxucj1lPT5PYmplY3QuYXNzaWduKENuKGUpLHtiZXR3ZWVuOih0LG4pPT5ucihkdChlLCgocixvKT0+UWUocz0+dHIocykmJnI8PXMmJm8+PXMpKSh0LG4pKSksbHQ6dD0+bnIoZHQoZSwobj0+UWUocj0+dHIocikmJnI8bikpKHQpKSksZ3Q6dD0+bnIoZHQoZSwobj0+UWUocj0+dHIocikmJnI+bikpKHQpKSksbHRlOnQ9Pm5yKGR0KGUsKG49PlFlKHI9PnRyKHIpJiZyPD1uKSkodCkpKSxndGU6dD0+bnIoZHQoZSwobj0+UWUocj0+dHIocikmJnI+PW4pKSh0KSkpLGludDooKT0+bnIoZHQoZSxRZSh0PT50cih0KSYmTnVtYmVyLmlzSW50ZWdlcih0KSkpKSxmaW5pdGU6KCk9Pm5yKGR0KGUsUWUodD0+dHIodCkmJk51bWJlci5pc0Zpbml0ZSh0KSkpKSxwb3NpdGl2ZTooKT0+bnIoZHQoZSxRZSh0PT50cih0KSYmdD4wKSkpLG5lZ2F0aXZlOigpPT5ucihkdChlLFFlKHQ9PnRyKHQpJiZ0PDApKSl9KTtucihRZSh0cikpO2NvbnN0IHRvPWU9Pk9iamVjdC5hc3NpZ24oQ24oZSkse2JldHdlZW46KHQsbik9PnRvKGR0KGUsKChyLG8pPT5RZShzPT5acihzKSYmcjw9cyYmbz49cykpKHQsbikpKSxsdDp0PT50byhkdChlLChuPT5RZShyPT5acihyKSYmcjxuKSkodCkpKSxndDp0PT50byhkdChlLChuPT5RZShyPT5acihyKSYmcj5uKSkodCkpKSxsdGU6dD0+dG8oZHQoZSwobj0+UWUocj0+WnIocikmJnI8PW4pKSh0KSkpLGd0ZTp0PT50byhkdChlLChuPT5RZShyPT5acihyKSYmcj49bikpKHQpKSkscG9zaXRpdmU6KCk9PnRvKGR0KGUsUWUodD0+WnIodCkmJnQ+MCkpKSxuZWdhdGl2ZTooKT0+dG8oZHQoZSxRZSh0PT5acih0KSYmdDwwKSkpfSk7dG8oUWUoWnIpKTtDbihRZShmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJib29sZWFuIn0pKTtDbihRZShmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJzeW1ib2wifSkpO0NuKFFlKGZ1bmN0aW9uKGUpe3JldHVybiBlPT1udWxsfSkpO0NuKFFlKGZ1bmN0aW9uKGUpe3JldHVybiBlIT1udWxsfSkpO3ZhciBrYT17X19wcm90b19fOm51bGwsc3RyaW5nOmRNfTtjbGFzcyBwTSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe2xldCBuO3RyeXtuPUpTT04uc3RyaW5naWZ5KHQpfWNhdGNoe249dH1zdXBlcihgUGF0dGVybiBtYXRjaGluZyBlcnJvcjogbm8gcGF0dGVybiBtYXRjaGVzIHZhbHVlICR7bn1gKSx0aGlzLmlucHV0PXZvaWQgMCx0aGlzLmlucHV0PXR9fWNvbnN0IG9mPXttYXRjaGVkOiExLHZhbHVlOnZvaWQgMH07ZnVuY3Rpb24gbU0oZSl7cmV0dXJuIG5ldyBhbChlLG9mKX1jbGFzcyBhbHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuaW5wdXQ9dm9pZCAwLHRoaXMuc3RhdGU9dm9pZCAwLHRoaXMuaW5wdXQ9dCx0aGlzLnN0YXRlPW59d2l0aCguLi50KXtpZih0aGlzLnN0YXRlLm1hdGNoZWQpcmV0dXJuIHRoaXM7Y29uc3Qgbj10W3QubGVuZ3RoLTFdLHI9W3RbMF1dO2xldCBvO3QubGVuZ3RoPT09MyYmdHlwZW9mIHRbMV09PSJmdW5jdGlvbiI/bz10WzFdOnQubGVuZ3RoPjImJnIucHVzaCguLi50LnNsaWNlKDEsdC5sZW5ndGgtMSkpO2xldCBzPSExLGk9e307Y29uc3QgYT0odSxjKT0+e3M9ITAsaVt1XT1jfSxsPSFyLnNvbWUodT0+YXIodSx0aGlzLmlucHV0LGEpKXx8byYmIW8odGhpcy5pbnB1dCk/b2Y6e21hdGNoZWQ6ITAsdmFsdWU6bihzP2lsIGluIGk/aVtpbF06aTp0aGlzLmlucHV0LHRoaXMuaW5wdXQpfTtyZXR1cm4gbmV3IGFsKHRoaXMuaW5wdXQsbCl9d2hlbih0LG4pe2lmKHRoaXMuc3RhdGUubWF0Y2hlZClyZXR1cm4gdGhpcztjb25zdCByPSEhdCh0aGlzLmlucHV0KTtyZXR1cm4gbmV3IGFsKHRoaXMuaW5wdXQscj97bWF0Y2hlZDohMCx2YWx1ZTpuKHRoaXMuaW5wdXQsdGhpcy5pbnB1dCl9Om9mKX1vdGhlcndpc2UodCl7cmV0dXJuIHRoaXMuc3RhdGUubWF0Y2hlZD90aGlzLnN0YXRlLnZhbHVlOnQodGhpcy5pbnB1dCl9ZXhoYXVzdGl2ZSh0PWhNKXtyZXR1cm4gdGhpcy5zdGF0ZS5tYXRjaGVkP3RoaXMuc3RhdGUudmFsdWU6dCh0aGlzLmlucHV0KX1ydW4oKXtyZXR1cm4gdGhpcy5leGhhdXN0aXZlKCl9cmV0dXJuVHlwZSgpe3JldHVybiB0aGlzfW5hcnJvdygpe3JldHVybiB0aGlzfX1mdW5jdGlvbiBoTShlKXt0aHJvdyBuZXcgcE0oZSl9ZnVuY3Rpb24ganEoZSx0KXtLUChlKX1mdW5jdGlvbiB3dyhlKXtyZXR1cm4gbU0oZSkud2l0aCh7Y29kZTprYS5zdHJpbmd9LHQ9PmBmaXJlYmFzZS5lcnJvcnNbJyR7dC5jb2RlfSddYCkud2l0aCh7cmVzcG9uc2U6e2RhdGE6e21lc3NhZ2U6a2Euc3RyaW5nfX19LHQ9PnQucmVzcG9uc2UuZGF0YS5tZXNzYWdlKS53aXRoKHtkYXRhOnttZXNzYWdlOmthLnN0cmluZ319LHQ9PnQuZGF0YS5tZXNzYWdlKS53aXRoKHttZXNzYWdlOmthLnN0cmluZ30sdD0+dC5tZXNzYWdlKS5vdGhlcndpc2UoKCk9PiJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIil9Y29uc3QgZ009e2NsYXNzOiJmbGV4IGZsZXgtY29sIGdhcC00In0seU09e2NsYXNzOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIHctZnVsbCJ9LHZNPXNlKHtfX25hbWU6IlN1cHBvcnRGZWVkYmFja01vZGFsIixwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxlbWl0czpbInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCxvPWd3KCkscz1OKHtnZXQ6KCk9Pm4ub3Blbnx8by52YWx1ZSxzZXQ6cD0+e28udmFsdWU9cCxyKCJ1cGRhdGU6b3BlbiIscCl9fSksaT1odygpLGE9U2QoKSxsPUcoITEpLHU9RygiIiksYz1HKCIiKSxmPU4oKCk9PnUudmFsdWUudHJpbSgpLmxlbmd0aD4wJiZjLnZhbHVlLnRyaW0oKS5sZW5ndGg+MCk7YXN5bmMgZnVuY3Rpb24gZCgpe2lmKGYudmFsdWUpe2wudmFsdWU9ITA7dHJ5e2F3YWl0IGkuY3JlYXRlVGlja2V0KHtraW5kOiJmZWVkYmFjayIsc3ViamVjdDp1LnZhbHVlLnRyaW0oKSxib2R5OmMudmFsdWUudHJpbSgpfSksYS5hZGQoe3RpdGxlOiJUaGFua3MgZm9yIHlvdXIgZmVlZGJhY2siLGRlc2NyaXB0aW9uOiJXZSdsbCBmb2xsb3cgdXAgaW4geW91ciByZXF1ZXN0cy4iLGNvbG9yOiJzdWNjZXNzIn0pLHUudmFsdWU9IiIsYy52YWx1ZT0iIixzLnZhbHVlPSExLGF3YWl0IEF2KCJzdXBwb3J0LXRpY2tldHMiKX1jYXRjaChwKXthLmFkZCh7dGl0bGU6IkNvdWxkIG5vdCBzZW5kIixkZXNjcmlwdGlvbjp3dyhwKSxjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtsLnZhbHVlPSExfX19cmV0dXJuKHAsbSk9Pntjb25zdCB5PWZ3LF89ZHcsdz1wdyx2PU5yLGg9bXc7cmV0dXJuIFIoKSwkKGgse29wZW46ZyhzKSwib25VcGRhdGU6b3BlbiI6bVszXXx8KG1bM109Yj0+JGUocyk/cy52YWx1ZT1iOm51bGwpLHRpdGxlOiJTZW5kIGZlZWRiYWNrIixkZXNjcmlwdGlvbjoiVGVsbCB1cyB3aGF0J3Mgd29ya2luZyBvciB3aGF0IGNvdWxkIGJlIGJldHRlci4ifSx7Ym9keTpNKCgpPT5bd3QoImRpdiIsZ00sW3JlKF8se2xhYmVsOiJTdWJqZWN0IixyZXF1aXJlZDoiIn0se2RlZmF1bHQ6TSgoKT0+W3JlKHkse21vZGVsVmFsdWU6Zyh1KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6bVswXXx8KG1bMF09Yj0+JGUodSk/dS52YWx1ZT1iOm51bGwpLHBsYWNlaG9sZGVyOiJBIHNob3J0IHN1bW1hcnkiLGNsYXNzOiJ3LWZ1bGwifSxudWxsLDgsWyJtb2RlbFZhbHVlIl0pXSksXzoxfSkscmUoXyx7bGFiZWw6Ik1lc3NhZ2UiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUodyx7bW9kZWxWYWx1ZTpnKGMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjptWzFdfHwobVsxXT1iPT4kZShjKT9jLnZhbHVlPWI6bnVsbCkscm93czo1LHBsYWNlaG9sZGVyOiJZb3VyIGZlZWRiYWNr4oCmIixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSJdKV0pLF86MX0pXSldKSxmb290ZXI6TSgoKT0+W3d0KCJkaXYiLHlNLFtyZSh2LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoiZ2hvc3QiLGxhYmVsOiJDYW5jZWwiLG9uQ2xpY2s6bVsyXXx8KG1bMl09Yj0+cy52YWx1ZT0hMSl9KSxyZSh2LHtsYWJlbDoiU2VuZCBmZWVkYmFjayIsbG9hZGluZzpnKGwpLGRpc2FibGVkOiFnKGYpLG9uQ2xpY2s6ZH0sbnVsbCw4LFsibG9hZGluZyIsImRpc2FibGVkIl0pXSldKSxfOjF9LDgsWyJvcGVuIl0pfX19KSxiTT1PYmplY3QuYXNzaWduKHZNLHtfX25hbWU6IlN1cHBvcnRGZWVkYmFja01vZGFsIn0pO2Z1bmN0aW9uIHdNKGUsdCxuLHIsbyl7Y29uc3Qgcz1TdCgpLGk9e307Zm9yKGNvbnN0IGEgb2YgcilpW2FdPU4oKCk9PihvPy5bYV0hPT12b2lkIDA/RWUob1thXSk6d24odCxhKSk/P3MudWk/LltlXT8uZGVmYXVsdFZhcmlhbnRzPy5bYV0/P24uZGVmYXVsdFZhcmlhbnRzPy5bYV0pO3JldHVybiBpfWNvbnN0IEZoPXtzbG90czp7YmFzZTpbInJlbGF0aXZlIGdyb3VwIHJvdW5kZWQtbWQgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS03NSIsInRyYW5zaXRpb24tY29sb3JzIl0sbGVhZGluZzoiYWJzb2x1dGUgaW5zZXQteS0wIHN0YXJ0LTAgZmxleCBpdGVtcy1jZW50ZXIiLGxlYWRpbmdJY29uOiJzaHJpbmstMCB0ZXh0LWRpbW1lZCIsbGVhZGluZ0F2YXRhcjoic2hyaW5rLTAiLGxlYWRpbmdBdmF0YXJTaXplOiIiLHRyYWlsaW5nOiJhYnNvbHV0ZSBpbnNldC15LTAgZW5kLTAgZmxleCBpdGVtcy1jZW50ZXIiLHRyYWlsaW5nSWNvbjoic2hyaW5rLTAgdGV4dC1kaW1tZWQiLHZhbHVlOiJ0cnVuY2F0ZSBwb2ludGVyLWV2ZW50cy1ub25lIixwbGFjZWhvbGRlcjoidHJ1bmNhdGUgdGV4dC1kaW1tZWQiLGFycm93OiJmaWxsLWJnIHN0cm9rZS1kZWZhdWx0Iixjb250ZW50OiJtYXgtaC02MCB3LSgtLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgpIGJnLWRlZmF1bHQgc2hhZG93LWxnIHJvdW5kZWQtbWQgcmluZyByaW5nLWRlZmF1bHQgb3ZlcmZsb3ctaGlkZGVuIG9yaWdpbi0oLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIHBvaW50ZXItZXZlbnRzLWF1dG8gZmxleCBmbGV4LWNvbCIsdmlld3BvcnQ6InJlbGF0aXZlIGRpdmlkZS15IGRpdmlkZS1kZWZhdWx0IHNjcm9sbC1weS0xIG92ZXJmbG93LXktYXV0byBmbGV4LTEiLGdyb3VwOiJwLTEgaXNvbGF0ZSIsZW1wdHk6InRleHQtY2VudGVyIHRleHQtbXV0ZWQiLGxhYmVsOiJmb250LXNlbWlib2xkIHRleHQtaGlnaGxpZ2h0ZWQiLHNlcGFyYXRvcjoiLW14LTEgbXktMSBoLXB4IGJnLWJvcmRlciIsaXRlbTpbImdyb3VwIHJlbGF0aXZlIHctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IHNlbGVjdC1ub25lIG91dGxpbmUtbm9uZSBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOnotWy0xXSBiZWZvcmU6aW5zZXQtcHggYmVmb3JlOnJvdW5kZWQtbWQgZGF0YS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGF0YS1kaXNhYmxlZDpvcGFjaXR5LTc1IHRleHQtZGVmYXVsdCBkYXRhLWhpZ2hsaWdodGVkOm5vdC1kYXRhLWRpc2FibGVkOnRleHQtaGlnaGxpZ2h0ZWQgZGF0YS1oaWdobGlnaHRlZDpub3QtZGF0YS1kaXNhYmxlZDpiZWZvcmU6YmctZWxldmF0ZWQvNTAiLCJ0cmFuc2l0aW9uLWNvbG9ycyBiZWZvcmU6dHJhbnNpdGlvbi1jb2xvcnMiXSxpdGVtTGVhZGluZ0ljb246WyJzaHJpbmstMCB0ZXh0LWRpbW1lZCBncm91cC1kYXRhLWhpZ2hsaWdodGVkOm5vdC1ncm91cC1kYXRhLWRpc2FibGVkOnRleHQtZGVmYXVsdCIsInRyYW5zaXRpb24tY29sb3JzIl0saXRlbUxlYWRpbmdBdmF0YXI6InNocmluay0wIixpdGVtTGVhZGluZ0F2YXRhclNpemU6IiIsaXRlbUxlYWRpbmdDaGlwOiJzaHJpbmstMCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToiIixpdGVtVHJhaWxpbmc6Im1zLWF1dG8gaW5saW5lLWZsZXggZ2FwLTEuNSBpdGVtcy1jZW50ZXIiLGl0ZW1UcmFpbGluZ0ljb246InNocmluay0wIixpdGVtV3JhcHBlcjoiZmxleC0xIGZsZXggZmxleC1jb2wgbWluLXctMCIsaXRlbUxhYmVsOiJ0cnVuY2F0ZSIsaXRlbURlc2NyaXB0aW9uOiJ0cnVuY2F0ZSB0ZXh0LW11dGVkIn0sdmFyaWFudHM6e2ZpZWxkR3JvdXA6e2hvcml6b250YWw6Im5vdC1vbmx5OmZpcnN0OnJvdW5kZWQtZS1ub25lIG5vdC1vbmx5Omxhc3Q6cm91bmRlZC1zLW5vbmUgbm90LWxhc3Q6bm90LWZpcnN0OnJvdW5kZWQtbm9uZSBmb2N1cy12aXNpYmxlOnotWzFdIix2ZXJ0aWNhbDoibm90LW9ubHk6Zmlyc3Q6cm91bmRlZC1iLW5vbmUgbm90LW9ubHk6bGFzdDpyb3VuZGVkLXQtbm9uZSBub3QtbGFzdDpub3QtZmlyc3Q6cm91bmRlZC1ub25lIGZvY3VzLXZpc2libGU6ei1bMV0ifSxzaXplOnt4czp7YmFzZToicHgtMiBweS0xIHRleHQteHMgZ2FwLTEiLGxlYWRpbmc6InBzLTIiLHRyYWlsaW5nOiJwZS0yIixsZWFkaW5nSWNvbjoic2l6ZS00IixsZWFkaW5nQXZhdGFyU2l6ZToiM3hzIix0cmFpbGluZ0ljb246InNpemUtNCIsbGFiZWw6InAtMSB0ZXh0LVsxMHB4XS8zIGdhcC0xIixpdGVtOiJwLTEgdGV4dC14cyBnYXAtMSIsaXRlbUxlYWRpbmdJY29uOiJzaXplLTQiLGl0ZW1MZWFkaW5nQXZhdGFyU2l6ZToiM3hzIixpdGVtTGVhZGluZ0NoaXA6InNpemUtNCIsaXRlbUxlYWRpbmdDaGlwU2l6ZToic20iLGl0ZW1UcmFpbGluZ0ljb246InNpemUtNCIsZW1wdHk6InAtMiB0ZXh0LXhzIn0sc206e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC14cyBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTQiLGxlYWRpbmdBdmF0YXJTaXplOiIzeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS00IixsYWJlbDoicC0xLjUgdGV4dC1bMTBweF0vMyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXhzIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS00IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjN4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTQiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6InNtIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTQiLGVtcHR5OiJwLTIuNSB0ZXh0LXhzIn0sbWQ6e2Jhc2U6InB4LTIuNSBweS0xLjUgdGV4dC1zbSBnYXAtMS41IixsZWFkaW5nOiJwcy0yLjUiLHRyYWlsaW5nOiJwZS0yLjUiLGxlYWRpbmdJY29uOiJzaXplLTUiLGxlYWRpbmdBdmF0YXJTaXplOiIyeHMiLHRyYWlsaW5nSWNvbjoic2l6ZS01IixsYWJlbDoicC0xLjUgdGV4dC14cyBnYXAtMS41IixpdGVtOiJwLTEuNSB0ZXh0LXNtIGdhcC0xLjUiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTIuNSB0ZXh0LXNtIn0sbGc6e2Jhc2U6InB4LTMgcHktMiB0ZXh0LXNtIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNSIsbGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsdHJhaWxpbmdJY29uOiJzaXplLTUiLGxhYmVsOiJwLTIgdGV4dC14cyBnYXAtMiIsaXRlbToicC0yIHRleHQtc20gZ2FwLTIiLGl0ZW1MZWFkaW5nSWNvbjoic2l6ZS01IixpdGVtTGVhZGluZ0F2YXRhclNpemU6IjJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTUiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6Im1kIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTUiLGVtcHR5OiJwLTMgdGV4dC1zbSJ9LHhsOntiYXNlOiJweC0zIHB5LTIgdGV4dC1iYXNlIGdhcC0yIixsZWFkaW5nOiJwcy0zIix0cmFpbGluZzoicGUtMyIsbGVhZGluZ0ljb246InNpemUtNiIsbGVhZGluZ0F2YXRhclNpemU6InhzIix0cmFpbGluZ0ljb246InNpemUtNiIsbGFiZWw6InAtMiB0ZXh0LXNtIGdhcC0yIixpdGVtOiJwLTIgdGV4dC1iYXNlIGdhcC0yIixpdGVtTGVhZGluZ0ljb246InNpemUtNiIsaXRlbUxlYWRpbmdBdmF0YXJTaXplOiJ4cyIsaXRlbUxlYWRpbmdDaGlwOiJzaXplLTYiLGl0ZW1MZWFkaW5nQ2hpcFNpemU6ImxnIixpdGVtVHJhaWxpbmdJY29uOiJzaXplLTYiLGVtcHR5OiJwLTMgdGV4dC1iYXNlIn19LHZhcmlhbnQ6e291dGxpbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZGVmYXVsdCByaW5nIHJpbmctaW5zZXQgcmluZy1hY2NlbnRlZCBob3ZlcjpiZy1lbGV2YXRlZCBkaXNhYmxlZDpiZy1kZWZhdWx0Iixzb2Z0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLWVsZXZhdGVkLzUwIGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLWVsZXZhdGVkLzUwIixzdWJ0bGU6InRleHQtaGlnaGxpZ2h0ZWQgYmctZWxldmF0ZWQgcmluZyByaW5nLWluc2V0IHJpbmctYWNjZW50ZWQgaG92ZXI6YmctYWNjZW50ZWQvNzUgZGlzYWJsZWQ6YmctZWxldmF0ZWQiLGdob3N0OiJ0ZXh0LWhpZ2hsaWdodGVkIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWVsZXZhdGVkIGZvY3VzOmJnLWVsZXZhdGVkIGRpc2FibGVkOmJnLXRyYW5zcGFyZW50IGRhcms6ZGlzYWJsZWQ6YmctdHJhbnNwYXJlbnQiLG5vbmU6InRleHQtaGlnaGxpZ2h0ZWQgYmctdHJhbnNwYXJlbnQifSxjb2xvcjp7cHJpbWFyeToiIixzZWNvbmRhcnk6IiIsc3VjY2VzczoiIixpbmZvOiIiLHdhcm5pbmc6IiIsZXJyb3I6IiIsbmV1dHJhbDoiIn0sbGVhZGluZzp7dHJ1ZToiIn0sdHJhaWxpbmc6e3RydWU6IiJ9LGxvYWRpbmc6e3RydWU6IiJ9LGhpZ2hsaWdodDp7dHJ1ZToiIn0sZml4ZWQ6e2ZhbHNlOiIifSx0eXBlOntmaWxlOiJmaWxlOm1lLTEuNSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1tdXRlZCBmaWxlOm91dGxpbmUtbm9uZSJ9LHBvc2l0aW9uOntwb3BwZXI6e2NvbnRlbnQ6ImRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3NjYWxlLWluXzEwMG1zX2Vhc2Utb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtW3NjYWxlLW91dF8xMDBtc19lYXNlLWluXSJ9LCJpdGVtLWFsaWduZWQiOntjb250ZW50OiIifX19LGNvbXBvdW5kVmFyaWFudHM6W3tjb2xvcjoicHJpbWFyeSIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIix2YXJpYW50Olsib3V0bGluZSIsInN1YnRsZSJdLGNsYXNzOiJmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLHZhcmlhbnQ6WyJvdXRsaW5lIiwic3VidGxlIl0sY2xhc3M6ImZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluc2V0IGZvY3VzOnJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1lcnJvciJ9LHtjb2xvcjoicHJpbWFyeSIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1wcmltYXJ5In0se2NvbG9yOiJzZWNvbmRhcnkiLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctc2Vjb25kYXJ5In0se2NvbG9yOiJzdWNjZXNzIixoaWdobGlnaHQ6ITAsY2xhc3M6InJpbmcgcmluZy1pbnNldCByaW5nLXN1Y2Nlc3MifSx7Y29sb3I6ImluZm8iLGhpZ2hsaWdodDohMCxjbGFzczoicmluZyByaW5nLWluc2V0IHJpbmctaW5mbyJ9LHtjb2xvcjoid2FybmluZyIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy13YXJuaW5nIn0se2NvbG9yOiJlcnJvciIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1lcnJvciJ9LHtjb2xvcjoibmV1dHJhbCIsdmFyaWFudDpbIm91dGxpbmUiLCJzdWJ0bGUiXSxjbGFzczoiZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1pbnZlcnRlZCJ9LHtjb2xvcjoibmV1dHJhbCIsaGlnaGxpZ2h0OiEwLGNsYXNzOiJyaW5nIHJpbmctaW5zZXQgcmluZy1pbnZlcnRlZCJ9LHtsZWFkaW5nOiEwLHNpemU6InhzIixjbGFzczoicHMtNyJ9LHtsZWFkaW5nOiEwLHNpemU6InNtIixjbGFzczoicHMtOCJ9LHtsZWFkaW5nOiEwLHNpemU6Im1kIixjbGFzczoicHMtOSJ9LHtsZWFkaW5nOiEwLHNpemU6ImxnIixjbGFzczoicHMtMTAifSx7bGVhZGluZzohMCxzaXplOiJ4bCIsY2xhc3M6InBzLTExIn0se3RyYWlsaW5nOiEwLHNpemU6InhzIixjbGFzczoicGUtNyJ9LHt0cmFpbGluZzohMCxzaXplOiJzbSIsY2xhc3M6InBlLTgifSx7dHJhaWxpbmc6ITAsc2l6ZToibWQiLGNsYXNzOiJwZS05In0se3RyYWlsaW5nOiEwLHNpemU6ImxnIixjbGFzczoicGUtMTAifSx7dHJhaWxpbmc6ITAsc2l6ZToieGwiLGNsYXNzOiJwZS0xMSJ9LHtsb2FkaW5nOiEwLGxlYWRpbmc6ITAsY2xhc3M6e2xlYWRpbmdJY29uOiJhbmltYXRlLXNwaW4ifX0se2xvYWRpbmc6ITAsbGVhZGluZzohMSx0cmFpbGluZzohMCxjbGFzczp7dHJhaWxpbmdJY29uOiJhbmltYXRlLXNwaW4ifX0se2ZpeGVkOiExLHNpemU6InhzIixjbGFzczoibWQ6dGV4dC14cyJ9LHtmaXhlZDohMSxzaXplOiJzbSIsY2xhc3M6Im1kOnRleHQteHMifSx7Zml4ZWQ6ITEsc2l6ZToibWQiLGNsYXNzOiJtZDp0ZXh0LXNtIn0se2ZpeGVkOiExLHNpemU6ImxnIixjbGFzczoibWQ6dGV4dC1zbSJ9XSxkZWZhdWx0VmFyaWFudHM6e3NpemU6Im1kIixjb2xvcjoicHJpbWFyeSIsdmFyaWFudDoib3V0bGluZSIscG9zaXRpb246InBvcHBlciJ9fSxfTT1PYmplY3QuYXNzaWduKHtpbmhlcml0QXR0cnM6ITF9LHtfX25hbWU6IlVTZWxlY3QiLHByb3BzOntpZDp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sY29sb3I6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdmFyaWFudDp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzZWxlY3RlZEljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29udGVudDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGFycm93Ont0eXBlOltCb29sZWFuLE9iamVjdF0scmVxdWlyZWQ6ITF9LHBvcnRhbDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLHJlcXVpcmVkOiExLHNraXBDaGVjazohMCxkZWZhdWx0OiEwfSx2YWx1ZUtleTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6InZhbHVlIn0sbGFiZWxLZXk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OiJsYWJlbCJ9LGRlc2NyaXB0aW9uS2V5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiZGVzY3JpcHRpb24ifSxpdGVtczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtb2RlbE1vZGlmaWVyczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxoaWdobGlnaHQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9mb2N1c0RlbGF5Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxuYW1lOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhdmF0YXI6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxsZWFkaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxlYWRpbmdJY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRyYWlsaW5nOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbG9hZGluZ0ljb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOlsiY2hhbmdlIiwiYmx1ciIsImZvY3VzIiwidXBkYXRlOm1vZGVsVmFsdWUiLCJ1cGRhdGU6b3BlbiJdLHNldHVwKGUse2V4cG9zZTp0LGVtaXQ6bn0pe2NvbnN0IHI9ZSxvPW4scz16cigpLGk9U3QoKSxhPUxuKCJzZWxlY3QiLHIpLGw9JHMoVnIociwib3BlbiIsImRlZmF1bHRPcGVuIiwiZGlzYWJsZWQiLCJhdXRvY29tcGxldGUiLCJyZXF1aXJlZCIsIm11bHRpcGxlIiksbyksdT1ZbCh5dCgoKT0+ci5wb3J0YWwpKSx7cG9zaXRpb246Y309d00oInNlbGVjdCIscixGaCxbInBvc2l0aW9uIl0se3Bvc2l0aW9uOigpPT5yLmNvbnRlbnQ/LnBvc2l0aW9ufSksZj15dCgoKT0+bW4oci5jb250ZW50LHtzaWRlOiJib3R0b20iLHNpZGVPZmZzZXQ6OCxjb2xsaXNpb25QYWRkaW5nOjgscG9zaXRpb246Yy52YWx1ZX0pKSxkPXl0KCgpPT5tbihyLmFycm93LHtyb3VuZGVkOiEwfSkpLHtlbWl0Rm9ybUNoYW5nZTpwLGVtaXRGb3JtSW5wdXQ6bSxlbWl0Rm9ybUJsdXI6eSxlbWl0Rm9ybUZvY3VzOl8sc2l6ZTp3LGNvbG9yOnYsaWQ6aCxuYW1lOmIsaGlnaGxpZ2h0OngsZGlzYWJsZWQ6UyxhcmlhQXR0cnM6a309eGQocikse29yaWVudGF0aW9uOlQsc2l6ZTpDfT13ZChyKSx7aXNMZWFkaW5nOlAsaXNUcmFpbGluZzpGLGxlYWRpbmdJY29uTmFtZTpELHRyYWlsaW5nSWNvbk5hbWU6V309S2woeXQoKCk9Pm1uKHIse3RyYWlsaW5nSWNvbjppLnVpLmljb25zLmNoZXZyb25Eb3dufSkpKSxMPU4oKCk9PkMudmFsdWV8fHcudmFsdWUpLGo9TigoKT0+Yy52YWx1ZT09PSJpdGVtLWFsaWduZWQiKSxJPU4oKCk9PnV0KHtleHRlbmQ6dXQoRmgpLC4uLmkudWk/LnNlbGVjdHx8e319KSh7Y29sb3I6di52YWx1ZSx2YXJpYW50OnIudmFyaWFudCxzaXplOkw/LnZhbHVlLGxvYWRpbmc6ci5sb2FkaW5nLGhpZ2hsaWdodDp4LnZhbHVlLGxlYWRpbmc6UC52YWx1ZXx8ISFyLmF2YXRhcnx8ISFzLmxlYWRpbmcsdHJhaWxpbmc6Ri52YWx1ZXx8ISFzLnRyYWlsaW5nLGZpZWxkR3JvdXA6VC52YWx1ZSxwb3NpdGlvbjpjLnZhbHVlfSkpLFY9TigoKT0+ci5pdGVtcz8ubGVuZ3RoP2ZEKHIuaXRlbXMpP3IuaXRlbXM6W3IuaXRlbXNdOltdKSxCPU4oKCk9PlYudmFsdWUuZmxhdE1hcChlZT0+ZWUpKTtmdW5jdGlvbiBpZShlZSl7aWYoci5tdWx0aXBsZSYmQXJyYXkuaXNBcnJheShlZSkpe2NvbnN0IHo9ZWUubWFwKFk9PnVoKEIudmFsdWUsWSx7bGFiZWxLZXk6ci5sYWJlbEtleSx2YWx1ZUtleTpyLnZhbHVlS2V5fSkpLmZpbHRlcihZPT5ZIT1udWxsJiZZIT09IiIpO3JldHVybiB6Lmxlbmd0aD4wP3ouam9pbigiLCAiKTp2b2lkIDB9cmV0dXJuIHVoKEIudmFsdWUsZWUse2xhYmVsS2V5OnIubGFiZWxLZXksdmFsdWVLZXk6ci52YWx1ZUtleX0pfWNvbnN0IG5lPVNzKCJ0cmlnZ2VyUmVmIik7ZnVuY3Rpb24gVmUoKXtyLmF1dG9mb2N1cyYmbmUudmFsdWU/LiRlbD8uZm9jdXMoe2ZvY3VzVmlzaWJsZTohMH0pfW90KCgpPT57c2V0VGltZW91dCgoKT0+e1ZlKCl9LHIuYXV0b2ZvY3VzRGVsYXkpfSk7ZnVuY3Rpb24gTmUoZWUpe3IubW9kZWxNb2RpZmllcnM/LnRyaW0mJih0eXBlb2YgZWU9PSJzdHJpbmcifHxlZT09PW51bGx8fGVlPT09dm9pZCAwKSYmKGVlPWVlPy50cmltKCk/P251bGwpLHIubW9kZWxNb2RpZmllcnM/Lm51bWJlciYmKGVlPXlkKGVlKSksci5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJihlZT8/PW51bGwpLHIubW9kZWxNb2RpZmllcnM/Lm9wdGlvbmFsJiYhci5tb2RlbE1vZGlmaWVycz8ubnVsbGFibGUmJmVlIT09bnVsbCYmKGVlPz89dm9pZCAwKTtjb25zdCB6PW5ldyBFdmVudCgiY2hhbmdlIix7dGFyZ2V0Ont2YWx1ZTplZX19KTtvKCJjaGFuZ2UiLHopLHAoKSxtKCl9ZnVuY3Rpb24gZXQoZWUpe2lmKGVlKXtjb25zdCB6PW5ldyBGb2N1c0V2ZW50KCJmb2N1cyIpO28oImZvY3VzIix6KSxfKCl9ZWxzZXtjb25zdCB6PW5ldyBGb2N1c0V2ZW50KCJibHVyIik7bygiYmx1ciIseikseSgpfX1mdW5jdGlvbiB2ZShlZSl7cmV0dXJuIHR5cGVvZiBlZT09Im9iamVjdCImJmVlIT09bnVsbH1jb25zdCBJZT1Tcygidmlld3BvcnRSZWYiKTtyZXR1cm4gdCh7dHJpZ2dlclJlZjp5dCgoKT0+bmUudmFsdWU/LiRlbCksdmlld3BvcnRSZWY6eXQoKCk9Pntjb25zdCBlZT1JZS52YWx1ZTtyZXR1cm4gZWUmJnR5cGVvZiBlZT09Im9iamVjdCImJiIkZWwiaW4gZWU/ZWUuJGVsOmVlfSl9KSwoZWUseik9PihSKCksJChnKEgyKSxmZSh7bmFtZTpnKGIpfSxnKGwpLHthdXRvY29tcGxldGU6ZS5hdXRvY29tcGxldGUsZGlzYWJsZWQ6ZyhTKSwiZGVmYXVsdC12YWx1ZSI6ZS5kZWZhdWx0VmFsdWUsIm1vZGVsLXZhbHVlIjplLm1vZGVsVmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOk5lLCJvblVwZGF0ZTpvcGVuIjpldH0pLHtkZWZhdWx0Ok0oKHttb2RlbFZhbHVlOlksb3BlbjpKfSk9PltyZShnKENOKSxmZSh7aWQ6ZyhoKSxyZWZfa2V5OiJ0cmlnZ2VyUmVmIixyZWY6bmUsImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOkkudmFsdWUuYmFzZSh7Y2xhc3M6W2coYSk/LmJhc2Usci5jbGFzc119KX0sey4uLmVlLiRhdHRycywuLi5nKGspfSkse2RlZmF1bHQ6TSgoKT0+W2coUCl8fGUuYXZhdGFyfHxzLmxlYWRpbmc/KFIoKSxfZSgic3BhbiIse2tleTowLCJkYXRhLXNsb3QiOiJsZWFkaW5nIixjbGFzczp1ZShJLnZhbHVlLmxlYWRpbmcoe2NsYXNzOmcoYSk/LmxlYWRpbmd9KSl9LFtVKGVlLiRzbG90cywibGVhZGluZyIse21vZGVsVmFsdWU6WSxvcGVuOkosdWk6SS52YWx1ZX0sKCk9PltnKFApJiZnKEQpPyhSKCksJChfbix7a2V5OjAsbmFtZTpnKEQpLCJkYXRhLXNsb3QiOiJsZWFkaW5nSWNvbiIsY2xhc3M6dWUoSS52YWx1ZS5sZWFkaW5nSWNvbih7Y2xhc3M6ZyhhKT8ubGVhZGluZ0ljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZS5hdmF0YXI/KFIoKSwkKFVvLGZlKHtrZXk6MSxzaXplOmcoYSk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8SS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJpdGVtTGVhZGluZ0F2YXRhciIsY2xhc3M6SS52YWx1ZS5pdGVtTGVhZGluZ0F2YXRhcih7Y2xhc3M6ZyhhKT8uaXRlbUxlYWRpbmdBdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApLChSKCEwKSxfZShHZSxudWxsLHVyKFtpZShZKV0sbGU9PihSKCksJChnKE9OKSx7a2V5OmxlLCJkYXRhLXNsb3QiOmxlIT1udWxsPyJ2YWx1ZSI6InBsYWNlaG9sZGVyIixjbGFzczp1ZShsZSE9bnVsbD9JLnZhbHVlLnZhbHVlKHtjbGFzczpnKGEpPy52YWx1ZX0pOkkudmFsdWUucGxhY2Vob2xkZXIoe2NsYXNzOmcoYSk/LnBsYWNlaG9sZGVyfSkpfSx7ZGVmYXVsdDpNKCgpPT5bVShlZS4kc2xvdHMsImRlZmF1bHQiLHttb2RlbFZhbHVlOlksb3BlbjpKLHVpOkkudmFsdWV9LCgpPT5bc3QocnQobGU/P2UucGxhY2Vob2xkZXI/PyLCoCIpLDEpXSldKSxfOjJ9LDEwMzIsWyJkYXRhLXNsb3QiLCJjbGFzcyJdKSkpLDEyOCkpLGcoRil8fHMudHJhaWxpbmc/KFIoKSxfZSgic3BhbiIse2tleToxLCJkYXRhLXNsb3QiOiJ0cmFpbGluZyIsY2xhc3M6dWUoSS52YWx1ZS50cmFpbGluZyh7Y2xhc3M6ZyhhKT8udHJhaWxpbmd9KSl9LFtVKGVlLiRzbG90cywidHJhaWxpbmciLHttb2RlbFZhbHVlOlksb3BlbjpKLHVpOkkudmFsdWV9LCgpPT5bZyhXKT8oUigpLCQoX24se2tleTowLG5hbWU6ZyhXKSwiZGF0YS1zbG90IjoidHJhaWxpbmdJY29uIixjbGFzczp1ZShJLnZhbHVlLnRyYWlsaW5nSWNvbih7Y2xhc3M6ZyhhKT8udHJhaWxpbmdJY29ufSkpfSxudWxsLDgsWyJuYW1lIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pXSwyKSk6ZGUoIiIsITApXSksXzoyfSwxMDQwLFsiaWQiLCJjbGFzcyJdKSxyZShnKFNOKSx4dChNdChnKHUpKSkse2RlZmF1bHQ6TSgoKT0+W3JlKGcoX2QpLG51bGwse2RlZmF1bHQ6TSgoKT0+W3JlKGcobE4pLGZlKHsiZGF0YS1zbG90IjoiY29udGVudCIsY2xhc3M6SS52YWx1ZS5jb250ZW50KHtjbGFzczpnKGEpPy5jb250ZW50fSl9LGYudmFsdWUpLHtkZWZhdWx0Ok0oKCk9PltVKGVlLiRzbG90cywiY29udGVudC10b3AiKSwoUigpLCQoRm4oai52YWx1ZT9nKElOKToiZGl2Iikse3JlZl9rZXk6InZpZXdwb3J0UmVmIixyZWY6SWUscm9sZToicHJlc2VudGF0aW9uIiwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnVlKEkudmFsdWUudmlld3BvcnQoe2NsYXNzOmcoYSk/LnZpZXdwb3J0fSkpfSx7ZGVmYXVsdDpNKCgpPT5bKFIoITApLF9lKEdlLG51bGwsdXIoVi52YWx1ZSwobGUsd2UpPT4oUigpLCQoZyhkTikse2tleTpgZ3JvdXAtJHt3ZX1gLCJkYXRhLXNsb3QiOiJncm91cCIsY2xhc3M6dWUoSS52YWx1ZS5ncm91cCh7Y2xhc3M6ZyhhKT8uZ3JvdXB9KSl9LHtkZWZhdWx0Ok0oKCk9PlsoUighMCksX2UoR2UsbnVsbCx1cihsZSwodGUsRSk9PihSKCksX2UoR2Use2tleTpgZ3JvdXAtJHt3ZX0tJHtFfWB9LFt2ZSh0ZSkmJnRlLnR5cGU9PT0ibGFiZWwiPyhSKCksJChnKF9OKSx7a2V5OjAsImRhdGEtc2xvdCI6ImxhYmVsIixjbGFzczp1ZShJLnZhbHVlLmxhYmVsKHtjbGFzczpbZyhhKT8ubGFiZWwsdGUudWk/LmxhYmVsLHRlLmNsYXNzXX0pKX0se2RlZmF1bHQ6TSgoKT0+W3N0KHJ0KGcod24pKHRlLHIubGFiZWxLZXkpKSwxKV0pLF86Mn0sMTAzMixbImNsYXNzIl0pKTp2ZSh0ZSkmJnRlLnR5cGU9PT0ic2VwYXJhdG9yIj8oUigpLCQoZyhFTikse2tleToxLCJkYXRhLXNsb3QiOiJzZXBhcmF0b3IiLGNsYXNzOnVlKEkudmFsdWUuc2VwYXJhdG9yKHtjbGFzczpbZyhhKT8uc2VwYXJhdG9yLHRlLnVpPy5zZXBhcmF0b3IsdGUuY2xhc3NdfSkpfSxudWxsLDgsWyJjbGFzcyJdKSk6KFIoKSwkKGcoaE4pLHtrZXk6MiwiZGF0YS1zbG90IjoiaXRlbSIsY2xhc3M6dWUoSS52YWx1ZS5pdGVtKHtjbGFzczpbZyhhKT8uaXRlbSx2ZSh0ZSkmJnRlLnVpPy5pdGVtLHZlKHRlKSYmdGUuY2xhc3NdfSkpLGRpc2FibGVkOnZlKHRlKSYmdGUuZGlzYWJsZWQsdmFsdWU6dmUodGUpP2cod24pKHRlLHIudmFsdWVLZXkpOnRlLG9uU2VsZWN0Ok89PnZlKHRlKSYmdGUub25TZWxlY3Q/LihPKX0se2RlZmF1bHQ6TSgoKT0+W1UoZWUuJHNsb3RzLCJpdGVtIix7aXRlbTp0ZSxpbmRleDpFLHVpOkkudmFsdWV9LCgpPT5bVShlZS4kc2xvdHMsIml0ZW0tbGVhZGluZyIse2l0ZW06dGUsaW5kZXg6RSx1aTpJLnZhbHVlfSwoKT0+W3ZlKHRlKSYmdGUuaWNvbj8oUigpLCQoX24se2tleTowLG5hbWU6dGUuaWNvbiwiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdJY29uIixjbGFzczp1ZShJLnZhbHVlLml0ZW1MZWFkaW5nSWNvbih7Y2xhc3M6W2coYSk/Lml0ZW1MZWFkaW5nSWNvbix0ZS51aT8uaXRlbUxlYWRpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pKTp2ZSh0ZSkmJnRlLmF2YXRhcj8oUigpLCQoVW8sZmUoe2tleToxLHNpemU6dGUudWk/Lml0ZW1MZWFkaW5nQXZhdGFyU2l6ZXx8ZyhhKT8uaXRlbUxlYWRpbmdBdmF0YXJTaXplfHxJLnZhbHVlLml0ZW1MZWFkaW5nQXZhdGFyU2l6ZSgpfSx7cmVmX2ZvcjohMH0sdGUuYXZhdGFyLHsiZGF0YS1zbG90IjoiaXRlbUxlYWRpbmdBdmF0YXIiLGNsYXNzOkkudmFsdWUuaXRlbUxlYWRpbmdBdmF0YXIoe2NsYXNzOltnKGEpPy5pdGVtTGVhZGluZ0F2YXRhcix0ZS51aT8uaXRlbUxlYWRpbmdBdmF0YXJdfSl9KSxudWxsLDE2LFsic2l6ZSIsImNsYXNzIl0pKTp2ZSh0ZSkmJnRlLmNoaXA/KFIoKSwkKEdsLGZlKHtrZXk6MixzaXplOnRlLnVpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxnKGEpPy5pdGVtTGVhZGluZ0NoaXBTaXplfHxJLnZhbHVlLml0ZW1MZWFkaW5nQ2hpcFNpemUoKSxpbnNldDoiIixzdGFuZGFsb25lOiIifSx7cmVmX2ZvcjohMH0sdGUuY2hpcCx7ImRhdGEtc2xvdCI6Iml0ZW1MZWFkaW5nQ2hpcCIsY2xhc3M6SS52YWx1ZS5pdGVtTGVhZGluZ0NoaXAoe2NsYXNzOltnKGEpPy5pdGVtTGVhZGluZ0NoaXAsdGUudWk/Lml0ZW1MZWFkaW5nQ2hpcF19KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmRlKCIiLCEwKV0pLHd0KCJzcGFuIix7ImRhdGEtc2xvdCI6Iml0ZW1XcmFwcGVyIixjbGFzczp1ZShJLnZhbHVlLml0ZW1XcmFwcGVyKHtjbGFzczpbZyhhKT8uaXRlbVdyYXBwZXIsdmUodGUpJiZ0ZS51aT8uaXRlbVdyYXBwZXJdfSkpfSxbcmUoZyhiTikseyJkYXRhLXNsb3QiOiJpdGVtTGFiZWwiLGNsYXNzOnVlKEkudmFsdWUuaXRlbUxhYmVsKHtjbGFzczpbZyhhKT8uaXRlbUxhYmVsLHZlKHRlKSYmdGUudWk/Lml0ZW1MYWJlbF19KSl9LHtkZWZhdWx0Ok0oKCk9PltVKGVlLiRzbG90cywiaXRlbS1sYWJlbCIse2l0ZW06dGUsaW5kZXg6RX0sKCk9PltzdChydCh2ZSh0ZSk/Zyh3bikodGUsci5sYWJlbEtleSk6dGUpLDEpXSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSx2ZSh0ZSkmJihnKHduKSh0ZSxyLmRlc2NyaXB0aW9uS2V5KXx8c1siaXRlbS1kZXNjcmlwdGlvbiJdKT8oUigpLF9lKCJzcGFuIix7a2V5OjAsImRhdGEtc2xvdCI6Iml0ZW1EZXNjcmlwdGlvbiIsY2xhc3M6dWUoSS52YWx1ZS5pdGVtRGVzY3JpcHRpb24oe2NsYXNzOltnKGEpPy5pdGVtRGVzY3JpcHRpb24sdmUodGUpJiZ0ZS51aT8uaXRlbURlc2NyaXB0aW9uXX0pKX0sW1UoZWUuJHNsb3RzLCJpdGVtLWRlc2NyaXB0aW9uIix7aXRlbTp0ZSxpbmRleDpFfSwoKT0+W3N0KHJ0KGcod24pKHRlLHIuZGVzY3JpcHRpb25LZXkpKSwxKV0pXSwyKSk6ZGUoIiIsITApXSwyKSx3dCgic3BhbiIseyJkYXRhLXNsb3QiOiJpdGVtVHJhaWxpbmciLGNsYXNzOnVlKEkudmFsdWUuaXRlbVRyYWlsaW5nKHtjbGFzczpbZyhhKT8uaXRlbVRyYWlsaW5nLHZlKHRlKSYmdGUudWk/Lml0ZW1UcmFpbGluZ119KSl9LFtVKGVlLiRzbG90cywiaXRlbS10cmFpbGluZyIse2l0ZW06dGUsaW5kZXg6RSx1aTpJLnZhbHVlfSkscmUoZyh5TikseyJhcy1jaGlsZCI6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShfbix7bmFtZTplLnNlbGVjdGVkSWNvbnx8ZyhpKS51aS5pY29ucy5jaGVjaywiZGF0YS1zbG90IjoiaXRlbVRyYWlsaW5nSWNvbiIsY2xhc3M6dWUoSS52YWx1ZS5pdGVtVHJhaWxpbmdJY29uKHtjbGFzczpbZyhhKT8uaXRlbVRyYWlsaW5nSWNvbix2ZSh0ZSkmJnRlLnVpPy5pdGVtVHJhaWxpbmdJY29uXX0pKX0sbnVsbCw4LFsibmFtZSIsImNsYXNzIl0pXSksXzoyfSwxMDI0KV0sMildKV0pLF86Mn0sMTAzMixbImNsYXNzIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm9uU2VsZWN0Il0pKV0sNjQpKSksMTI4KSldKSxfOjJ9LDEwMzIsWyJjbGFzcyJdKSkpLDEyOCkpXSksXzozfSw4LFsiY2xhc3MiXSkpLFUoZWUuJHNsb3RzLCJjb250ZW50LWJvdHRvbSIpLGUuYXJyb3c/KFIoKSwkKGcock4pLGZlKHtrZXk6MH0sZC52YWx1ZSx7ImRhdGEtc2xvdCI6ImFycm93IixjbGFzczpJLnZhbHVlLmFycm93KHtjbGFzczpnKGEpPy5hcnJvd30pfSksbnVsbCwxNixbImNsYXNzIl0pKTpkZSgiIiwhMCldKSxfOjN9LDE2LFsiY2xhc3MiXSldKSxfOjN9KV0pLF86M30sMTYpXSksXzozfSwxNixbIm5hbWUiLCJhdXRvY29tcGxldGUiLCJkaXNhYmxlZCIsImRlZmF1bHQtdmFsdWUiLCJtb2RlbC12YWx1ZSJdKSl9fSksVGU9U3ltYm9sLmZvcigiZHJpenpsZTplbnRpdHlLaW5kIik7ZnVuY3Rpb24gdm4oZSx0KXtpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiB0KXJldHVybiEwO2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxUZSkpdGhyb3cgbmV3IEVycm9yKGBDbGFzcyAiJHt0Lm5hbWU/PyI8dW5rbm93bj4ifSIgZG9lc24ndCBsb29rIGxpa2UgYSBEcml6emxlIGVudGl0eS4gSWYgdGhpcyBpcyBpbmNvcnJlY3QgYW5kIHRoZSBjbGFzcyBpcyBwcm92aWRlZCBieSBEcml6emxlLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcuYCk7bGV0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpLmNvbnN0cnVjdG9yO2lmKG4pZm9yKDtuOyl7aWYoVGUgaW4gbiYmbltUZV09PT10W1RlXSlyZXR1cm4hMDtuPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKX1yZXR1cm4hMX1jbGFzcyBrZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMudGFibGU9dCx0aGlzLmNvbmZpZz1uLHRoaXMubmFtZT1uLm5hbWUsdGhpcy5rZXlBc05hbWU9bi5rZXlBc05hbWUsdGhpcy5ub3ROdWxsPW4ubm90TnVsbCx0aGlzLmRlZmF1bHQ9bi5kZWZhdWx0LHRoaXMuZGVmYXVsdEZuPW4uZGVmYXVsdEZuLHRoaXMub25VcGRhdGVGbj1uLm9uVXBkYXRlRm4sdGhpcy5oYXNEZWZhdWx0PW4uaGFzRGVmYXVsdCx0aGlzLnByaW1hcnk9bi5wcmltYXJ5S2V5LHRoaXMuaXNVbmlxdWU9bi5pc1VuaXF1ZSx0aGlzLnVuaXF1ZU5hbWU9bi51bmlxdWVOYW1lLHRoaXMudW5pcXVlVHlwZT1uLnVuaXF1ZVR5cGUsdGhpcy5kYXRhVHlwZT1uLmRhdGFUeXBlLHRoaXMuY29sdW1uVHlwZT1uLmNvbHVtblR5cGUsdGhpcy5nZW5lcmF0ZWQ9bi5nZW5lcmF0ZWQsdGhpcy5nZW5lcmF0ZWRJZGVudGl0eT1uLmdlbmVyYXRlZElkZW50aXR5fXN0YXRpY1tUZV09IkNvbHVtbiI7bmFtZTtrZXlBc05hbWU7cHJpbWFyeTtub3ROdWxsO2RlZmF1bHQ7ZGVmYXVsdEZuO29uVXBkYXRlRm47aGFzRGVmYXVsdDtpc1VuaXF1ZTt1bmlxdWVOYW1lO3VuaXF1ZVR5cGU7ZGF0YVR5cGU7Y29sdW1uVHlwZTtlbnVtVmFsdWVzPXZvaWQgMDtnZW5lcmF0ZWQ9dm9pZCAwO2dlbmVyYXRlZElkZW50aXR5PXZvaWQgMDtjb25maWc7bWFwRnJvbURyaXZlclZhbHVlKHQpe3JldHVybiB0fW1hcFRvRHJpdmVyVmFsdWUodCl7cmV0dXJuIHR9c2hvdWxkRGlzYWJsZUluc2VydCgpe3JldHVybiB0aGlzLmNvbmZpZy5nZW5lcmF0ZWQhPT12b2lkIDAmJnRoaXMuY29uZmlnLmdlbmVyYXRlZC50eXBlIT09ImJ5RGVmYXVsdCJ9fWNsYXNzIHhNe3N0YXRpY1tUZV09IkNvbHVtbkJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jb25maWc9e25hbWU6dCxrZXlBc05hbWU6dD09PSIiLG5vdE51bGw6ITEsZGVmYXVsdDp2b2lkIDAsaGFzRGVmYXVsdDohMSxwcmltYXJ5S2V5OiExLGlzVW5pcXVlOiExLHVuaXF1ZU5hbWU6dm9pZCAwLHVuaXF1ZVR5cGU6dm9pZCAwLGRhdGFUeXBlOm4sY29sdW1uVHlwZTpyLGdlbmVyYXRlZDp2b2lkIDB9fSR0eXBlKCl7cmV0dXJuIHRoaXN9bm90TnVsbCgpe3JldHVybiB0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9ZGVmYXVsdCh0KXtyZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdD10LHRoaXMuY29uZmlnLmhhc0RlZmF1bHQ9ITAsdGhpc30kZGVmYXVsdEZuKHQpe3JldHVybiB0aGlzLmNvbmZpZy5kZWZhdWx0Rm49dCx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHRoaXN9JGRlZmF1bHQ9dGhpcy4kZGVmYXVsdEZuOyRvblVwZGF0ZUZuKHQpe3JldHVybiB0aGlzLmNvbmZpZy5vblVwZGF0ZUZuPXQsdGhpcy5jb25maWcuaGFzRGVmYXVsdD0hMCx0aGlzfSRvblVwZGF0ZT10aGlzLiRvblVwZGF0ZUZuO3ByaW1hcnlLZXkoKXtyZXR1cm4gdGhpcy5jb25maWcucHJpbWFyeUtleT0hMCx0aGlzLmNvbmZpZy5ub3ROdWxsPSEwLHRoaXN9c2V0TmFtZSh0KXt0aGlzLmNvbmZpZy5uYW1lPT09IiImJih0aGlzLmNvbmZpZy5uYW1lPXQpfX1jb25zdCB3cz1TeW1ib2wuZm9yKCJkcml6emxlOk5hbWUiKSx6aD1TeW1ib2wuZm9yKCJkcml6emxlOmlzUGdFbnVtIik7ZnVuY3Rpb24gU00oZSl7cmV0dXJuISFlJiZ0eXBlb2YgZT09ImZ1bmN0aW9uIiYmemggaW4gZSYmZVt6aF09PT0hMH1jbGFzcyBfd3tzdGF0aWNbVGVdPSJTdWJxdWVyeSI7Y29uc3RydWN0b3IodCxuLHIsbz0hMSxzPVtdKXt0aGlzLl89e2JyYW5kOiJTdWJxdWVyeSIsc3FsOnQsc2VsZWN0ZWRGaWVsZHM6bixhbGlhczpyLGlzV2l0aDpvLHVzZWRUYWJsZXM6c319fWNvbnN0IGtNPXtzdGFydEFjdGl2ZVNwYW4oZSx0KXtyZXR1cm4gdCgpfX0scGk9U3ltYm9sLmZvcigiZHJpenpsZTpWaWV3QmFzZUNvbmZpZyIpLEtjPVN5bWJvbC5mb3IoImRyaXp6bGU6U2NoZW1hIiksamg9U3ltYm9sLmZvcigiZHJpenpsZTpDb2x1bW5zIiksVmg9U3ltYm9sLmZvcigiZHJpenpsZTpFeHRyYUNvbmZpZ0NvbHVtbnMiKSxRYz1TeW1ib2wuZm9yKCJkcml6emxlOk9yaWdpbmFsTmFtZSIpLFljPVN5bWJvbC5mb3IoImRyaXp6bGU6QmFzZU5hbWUiKSxsbD1TeW1ib2wuZm9yKCJkcml6emxlOklzQWxpYXMiKSxVaD1TeW1ib2wuZm9yKCJkcml6emxlOkV4dHJhQ29uZmlnQnVpbGRlciIpLEVNPVN5bWJvbC5mb3IoImRyaXp6bGU6SXNEcml6emxlVGFibGUiKTtjbGFzcyBxdHtzdGF0aWNbVGVdPSJUYWJsZSI7c3RhdGljIFN5bWJvbD17TmFtZTp3cyxTY2hlbWE6S2MsT3JpZ2luYWxOYW1lOlFjLENvbHVtbnM6amgsRXh0cmFDb25maWdDb2x1bW5zOlZoLEJhc2VOYW1lOlljLElzQWxpYXM6bGwsRXh0cmFDb25maWdCdWlsZGVyOlVofTtbd3NdO1tRY107W0tjXTtbamhdO1tWaF07W1ljXTtbbGxdPSExO1tFTV09ITA7W1VoXT12b2lkIDA7Y29uc3RydWN0b3IodCxuLHIpe3RoaXNbd3NdPXRoaXNbUWNdPXQsdGhpc1tLY109bix0aGlzW1ljXT1yfX1mdW5jdGlvbiBUTShlKXtyZXR1cm4gZSE9bnVsbCYmdHlwZW9mIGUuZ2V0U1FMPT0iZnVuY3Rpb24ifWZ1bmN0aW9uIENNKGUpe2NvbnN0IHQ9e3NxbDoiIixwYXJhbXM6W119O2Zvcihjb25zdCBuIG9mIGUpdC5zcWwrPW4uc3FsLHQucGFyYW1zLnB1c2goLi4ubi5wYXJhbXMpLG4udHlwaW5ncz8ubGVuZ3RoJiYodC50eXBpbmdzfHwodC50eXBpbmdzPVtdKSx0LnR5cGluZ3MucHVzaCguLi5uLnR5cGluZ3MpKTtyZXR1cm4gdH1jbGFzcyBCbntzdGF0aWNbVGVdPSJTdHJpbmdDaHVuayI7dmFsdWU7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZT1BcnJheS5pc0FycmF5KHQpP3Q6W3RdfWdldFNRTCgpe3JldHVybiBuZXcgQ3QoW3RoaXNdKX19Y2xhc3MgQ3R7Y29uc3RydWN0b3IodCl7dGhpcy5xdWVyeUNodW5rcz10O2Zvcihjb25zdCBuIG9mIHQpaWYodm4obixxdCkpe2NvbnN0IHI9bltxdC5TeW1ib2wuU2NoZW1hXTt0aGlzLnVzZWRUYWJsZXMucHVzaChyPT09dm9pZCAwP25bcXQuU3ltYm9sLk5hbWVdOnIrIi4iK25bcXQuU3ltYm9sLk5hbWVdKX19c3RhdGljW1RlXT0iU1FMIjtkZWNvZGVyPXh3O3Nob3VsZElubGluZVBhcmFtcz0hMTt1c2VkVGFibGVzPVtdO2FwcGVuZCh0KXtyZXR1cm4gdGhpcy5xdWVyeUNodW5rcy5wdXNoKC4uLnQucXVlcnlDaHVua3MpLHRoaXN9dG9RdWVyeSh0KXtyZXR1cm4ga00uc3RhcnRBY3RpdmVTcGFuKCJkcml6emxlLmJ1aWxkU1FMIixuPT57Y29uc3Qgcj10aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKHRoaXMucXVlcnlDaHVua3MsdCk7cmV0dXJuIG4/LnNldEF0dHJpYnV0ZXMoeyJkcml6emxlLnF1ZXJ5LnRleHQiOnIuc3FsLCJkcml6emxlLnF1ZXJ5LnBhcmFtcyI6SlNPTi5zdHJpbmdpZnkoci5wYXJhbXMpfSkscn0pfWJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKHQsbil7Y29uc3Qgcj1PYmplY3QuYXNzaWduKHt9LG4se2lubGluZVBhcmFtczpuLmlubGluZVBhcmFtc3x8dGhpcy5zaG91bGRJbmxpbmVQYXJhbXMscGFyYW1TdGFydEluZGV4Om4ucGFyYW1TdGFydEluZGV4fHx7dmFsdWU6MH19KSx7Y2FzaW5nOm8sZXNjYXBlTmFtZTpzLGVzY2FwZVBhcmFtOmkscHJlcGFyZVR5cGluZzphLGlubGluZVBhcmFtczpsLHBhcmFtU3RhcnRJbmRleDp1fT1yO3JldHVybiBDTSh0Lm1hcChjPT57aWYodm4oYyxCbikpcmV0dXJue3NxbDpjLnZhbHVlLmpvaW4oIiIpLHBhcmFtczpbXX07aWYodm4oYyxzZikpcmV0dXJue3NxbDpzKGMudmFsdWUpLHBhcmFtczpbXX07aWYoYz09PXZvaWQgMClyZXR1cm57c3FsOiIiLHBhcmFtczpbXX07aWYoQXJyYXkuaXNBcnJheShjKSl7Y29uc3QgZj1bbmV3IEJuKCIoIildO2Zvcihjb25zdFtkLHBdb2YgYy5lbnRyaWVzKCkpZi5wdXNoKHApLGQ8Yy5sZW5ndGgtMSYmZi5wdXNoKG5ldyBCbigiLCAiKSk7cmV0dXJuIGYucHVzaChuZXcgQm4oIikiKSksdGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhmLHIpfWlmKHZuKGMsQ3QpKXJldHVybiB0aGlzLmJ1aWxkUXVlcnlGcm9tU291cmNlUGFyYW1zKGMucXVlcnlDaHVua3Msey4uLnIsaW5saW5lUGFyYW1zOmx8fGMuc2hvdWxkSW5saW5lUGFyYW1zfSk7aWYodm4oYyxxdCkpe2NvbnN0IGY9Y1txdC5TeW1ib2wuU2NoZW1hXSxkPWNbcXQuU3ltYm9sLk5hbWVdO3JldHVybntzcWw6Zj09PXZvaWQgMHx8Y1tsbF0/cyhkKTpzKGYpKyIuIitzKGQpLHBhcmFtczpbXX19aWYodm4oYyxrZCkpe2NvbnN0IGY9by5nZXRDb2x1bW5DYXNpbmcoYyk7aWYobi5pbnZva2VTb3VyY2U9PT0iaW5kZXhlcyIpcmV0dXJue3NxbDpzKGYpLHBhcmFtczpbXX07Y29uc3QgZD1jLnRhYmxlW3F0LlN5bWJvbC5TY2hlbWFdO3JldHVybntzcWw6Yy50YWJsZVtsbF18fGQ9PT12b2lkIDA/cyhjLnRhYmxlW3F0LlN5bWJvbC5OYW1lXSkrIi4iK3MoZik6cyhkKSsiLiIrcyhjLnRhYmxlW3F0LlN5bWJvbC5OYW1lXSkrIi4iK3MoZikscGFyYW1zOltdfX1pZih2bihjLE9NKSl7Y29uc3QgZj1jW3BpXS5zY2hlbWEsZD1jW3BpXS5uYW1lO3JldHVybntzcWw6Zj09PXZvaWQgMHx8Y1twaV0uaXNBbGlhcz9zKGQpOnMoZikrIi4iK3MoZCkscGFyYW1zOltdfX1pZih2bihjLGt3KSl7aWYodm4oYy52YWx1ZSxsZikpcmV0dXJue3NxbDppKHUudmFsdWUrKyxjKSxwYXJhbXM6W2NdLHR5cGluZ3M6WyJub25lIl19O2NvbnN0IGY9Yy52YWx1ZT09PW51bGw/bnVsbDpjLmVuY29kZXIubWFwVG9Ecml2ZXJWYWx1ZShjLnZhbHVlKTtpZih2bihmLEN0KSlyZXR1cm4gdGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhbZl0scik7aWYobClyZXR1cm57c3FsOnRoaXMubWFwSW5saW5lUGFyYW0oZixyKSxwYXJhbXM6W119O2xldCBkPVsibm9uZSJdO3JldHVybiBhJiYoZD1bYShjLmVuY29kZXIpXSkse3NxbDppKHUudmFsdWUrKyxmKSxwYXJhbXM6W2ZdLHR5cGluZ3M6ZH19cmV0dXJuIHZuKGMsbGYpP3tzcWw6aSh1LnZhbHVlKyssYykscGFyYW1zOltjXSx0eXBpbmdzOlsibm9uZSJdfTp2bihjLEN0LkFsaWFzZWQpJiZjLmZpZWxkQWxpYXMhPT12b2lkIDA/e3NxbDpzKGMuZmllbGRBbGlhcykscGFyYW1zOltdfTp2bihjLF93KT9jLl8uaXNXaXRoP3tzcWw6cyhjLl8uYWxpYXMpLHBhcmFtczpbXX06dGhpcy5idWlsZFF1ZXJ5RnJvbVNvdXJjZVBhcmFtcyhbbmV3IEJuKCIoIiksYy5fLnNxbCxuZXcgQm4oIikgIiksbmV3IHNmKGMuXy5hbGlhcyldLHIpOlNNKGMpP2Muc2NoZW1hP3tzcWw6cyhjLnNjaGVtYSkrIi4iK3MoYy5lbnVtTmFtZSkscGFyYW1zOltdfTp7c3FsOnMoYy5lbnVtTmFtZSkscGFyYW1zOltdfTpUTShjKT9jLnNob3VsZE9taXRTUUxQYXJlbnM/LigpP3RoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW2MuZ2V0U1FMKCldLHIpOnRoaXMuYnVpbGRRdWVyeUZyb21Tb3VyY2VQYXJhbXMoW25ldyBCbigiKCIpLGMuZ2V0U1FMKCksbmV3IEJuKCIpIildLHIpOmw/e3NxbDp0aGlzLm1hcElubGluZVBhcmFtKGMscikscGFyYW1zOltdfTp7c3FsOmkodS52YWx1ZSsrLGMpLHBhcmFtczpbY10sdHlwaW5nczpbIm5vbmUiXX19KSl9bWFwSW5saW5lUGFyYW0odCx7ZXNjYXBlU3RyaW5nOm59KXtpZih0PT09bnVsbClyZXR1cm4ibnVsbCI7aWYodHlwZW9mIHQ9PSJudW1iZXIifHx0eXBlb2YgdD09ImJvb2xlYW4iKXJldHVybiB0LnRvU3RyaW5nKCk7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiBuKHQpO2lmKHR5cGVvZiB0PT0ib2JqZWN0Iil7Y29uc3Qgcj10LnRvU3RyaW5nKCk7cmV0dXJuIG4ocj09PSJbb2JqZWN0IE9iamVjdF0iP0pTT04uc3RyaW5naWZ5KHQpOnIpfXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBwYXJhbSB2YWx1ZTogIit0KX1nZXRTUUwoKXtyZXR1cm4gdGhpc31hcyh0KXtyZXR1cm4gdD09PXZvaWQgMD90aGlzOm5ldyBDdC5BbGlhc2VkKHRoaXMsdCl9bWFwV2l0aCh0KXtyZXR1cm4gdGhpcy5kZWNvZGVyPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3ttYXBGcm9tRHJpdmVyVmFsdWU6dH06dCx0aGlzfWlubGluZVBhcmFtcygpe3JldHVybiB0aGlzLnNob3VsZElubGluZVBhcmFtcz0hMCx0aGlzfWlmKHQpe3JldHVybiB0P3RoaXM6dm9pZCAwfX1jbGFzcyBzZntjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXR9c3RhdGljW1RlXT0iTmFtZSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBDdChbdGhpc10pfX1jb25zdCB4dz17bWFwRnJvbURyaXZlclZhbHVlOmU9PmV9LFN3PXttYXBUb0RyaXZlclZhbHVlOmU9PmV9Oyh7Li4ueHcsLi4uU3d9KTtjbGFzcyBrd3tjb25zdHJ1Y3Rvcih0LG49U3cpe3RoaXMudmFsdWU9dCx0aGlzLmVuY29kZXI9bn1zdGF0aWNbVGVdPSJQYXJhbSI7YnJhbmQ7Z2V0U1FMKCl7cmV0dXJuIG5ldyBDdChbdGhpc10pfX1mdW5jdGlvbiBhZihlLC4uLnQpe2NvbnN0IG49W107KHQubGVuZ3RoPjB8fGUubGVuZ3RoPjAmJmVbMF0hPT0iIikmJm4ucHVzaChuZXcgQm4oZVswXSkpO2Zvcihjb25zdFtyLG9db2YgdC5lbnRyaWVzKCkpbi5wdXNoKG8sbmV3IEJuKGVbcisxXSkpO3JldHVybiBuZXcgQ3Qobil9KGU9PntmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBDdChbXSl9ZS5lbXB0eT10O2Z1bmN0aW9uIG4obCl7cmV0dXJuIG5ldyBDdChsKX1lLmZyb21MaXN0PW47ZnVuY3Rpb24gcihsKXtyZXR1cm4gbmV3IEN0KFtuZXcgQm4obCldKX1lLnJhdz1yO2Z1bmN0aW9uIG8obCx1KXtjb25zdCBjPVtdO2Zvcihjb25zdFtmLGRdb2YgbC5lbnRyaWVzKCkpZj4wJiZ1IT09dm9pZCAwJiZjLnB1c2godSksYy5wdXNoKGQpO3JldHVybiBuZXcgQ3QoYyl9ZS5qb2luPW87ZnVuY3Rpb24gcyhsKXtyZXR1cm4gbmV3IHNmKGwpfWUuaWRlbnRpZmllcj1zO2Z1bmN0aW9uIGkobCl7cmV0dXJuIG5ldyBsZihsKX1lLnBsYWNlaG9sZGVyPWk7ZnVuY3Rpb24gYShsLHUpe3JldHVybiBuZXcga3cobCx1KX1lLnBhcmFtPWF9KShhZnx8KGFmPXt9KSk7KGU9PntjbGFzcyB0e2NvbnN0cnVjdG9yKHIsbyl7dGhpcy5zcWw9cix0aGlzLmZpZWxkQWxpYXM9b31zdGF0aWNbVGVdPSJTUUwuQWxpYXNlZCI7aXNTZWxlY3Rpb25GaWVsZD0hMTtnZXRTUUwoKXtyZXR1cm4gdGhpcy5zcWx9Y2xvbmUoKXtyZXR1cm4gbmV3IHQodGhpcy5zcWwsdGhpcy5maWVsZEFsaWFzKX19ZS5BbGlhc2VkPXR9KShDdHx8KEN0PXt9KSk7Y2xhc3MgbGZ7Y29uc3RydWN0b3IodCl7dGhpcy5uYW1lPXR9c3RhdGljW1RlXT0iUGxhY2Vob2xkZXIiO2dldFNRTCgpe3JldHVybiBuZXcgQ3QoW3RoaXNdKX19Y29uc3QgQU09U3ltYm9sLmZvcigiZHJpenpsZTpJc0RyaXp6bGVWaWV3Iik7Y2xhc3MgT017c3RhdGljW1RlXT0iVmlldyI7W3BpXTtbQU1dPSEwO2NvbnN0cnVjdG9yKHtuYW1lOnQsc2NoZW1hOm4sc2VsZWN0ZWRGaWVsZHM6cixxdWVyeTpvfSl7dGhpc1twaV09e25hbWU6dCxvcmlnaW5hbE5hbWU6dCxzY2hlbWE6bixzZWxlY3RlZEZpZWxkczpyLHF1ZXJ5Om8saXNFeGlzdGluZzohbyxpc0FsaWFzOiExfX1nZXRTUUwoKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9fWtkLnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9O3F0LnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9O193LnByb3RvdHlwZS5nZXRTUUw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEN0KFt0aGlzXSl9O2Z1bmN0aW9uIFdpKGUsdCl7cmV0dXJue25hbWU6dHlwZW9mIGU9PSJzdHJpbmciJiZlLmxlbmd0aD4wP2U6IiIsY29uZmlnOnR5cGVvZiBlPT0ib2JqZWN0Ij9lOnR9fWNvbnN0IEV3PXR5cGVvZiBUZXh0RGVjb2Rlcj4idSI/bnVsbDpuZXcgVGV4dERlY29kZXI7Y2xhc3MgUE17c3RhdGljW1RlXT0iU1FMaXRlRm9yZWlnbktleUJ1aWxkZXIiO3JlZmVyZW5jZTtfb25VcGRhdGU7X29uRGVsZXRlO2NvbnN0cnVjdG9yKHQsbil7dGhpcy5yZWZlcmVuY2U9KCk9Pntjb25zdHtuYW1lOnIsY29sdW1uczpvLGZvcmVpZ25Db2x1bW5zOnN9PXQoKTtyZXR1cm57bmFtZTpyLGNvbHVtbnM6byxmb3JlaWduVGFibGU6c1swXS50YWJsZSxmb3JlaWduQ29sdW1uczpzfX0sbiYmKHRoaXMuX29uVXBkYXRlPW4ub25VcGRhdGUsdGhpcy5fb25EZWxldGU9bi5vbkRlbGV0ZSl9b25VcGRhdGUodCl7cmV0dXJuIHRoaXMuX29uVXBkYXRlPXQsdGhpc31vbkRlbGV0ZSh0KXtyZXR1cm4gdGhpcy5fb25EZWxldGU9dCx0aGlzfWJ1aWxkKHQpe3JldHVybiBuZXcgSU0odCx0aGlzKX19Y2xhc3MgSU17Y29uc3RydWN0b3IodCxuKXt0aGlzLnRhYmxlPXQsdGhpcy5yZWZlcmVuY2U9bi5yZWZlcmVuY2UsdGhpcy5vblVwZGF0ZT1uLl9vblVwZGF0ZSx0aGlzLm9uRGVsZXRlPW4uX29uRGVsZXRlfXN0YXRpY1tUZV09IlNRTGl0ZUZvcmVpZ25LZXkiO3JlZmVyZW5jZTtvblVwZGF0ZTtvbkRlbGV0ZTtnZXROYW1lKCl7Y29uc3R7bmFtZTp0LGNvbHVtbnM6bixmb3JlaWduQ29sdW1uczpyfT10aGlzLnJlZmVyZW5jZSgpLG89bi5tYXAoYT0+YS5uYW1lKSxzPXIubWFwKGE9PmEubmFtZSksaT1bdGhpcy50YWJsZVt3c10sLi4ubyxyWzBdLnRhYmxlW3dzXSwuLi5zXTtyZXR1cm4gdD8/YCR7aS5qb2luKCJfIil9X2ZrYH19ZnVuY3Rpb24gUk0oZSx0KXtyZXR1cm5gJHtlW3dzXX1fJHt0LmpvaW4oIl8iKX1fdW5pcXVlYH1jbGFzcyBYbiBleHRlbmRzIHhNe3N0YXRpY1tUZV09IlNRTGl0ZUNvbHVtbkJ1aWxkZXIiO2ZvcmVpZ25LZXlDb25maWdzPVtdO3JlZmVyZW5jZXModCxuPXt9KXtyZXR1cm4gdGhpcy5mb3JlaWduS2V5Q29uZmlncy5wdXNoKHtyZWY6dCxhY3Rpb25zOm59KSx0aGlzfXVuaXF1ZSh0KXtyZXR1cm4gdGhpcy5jb25maWcuaXNVbmlxdWU9ITAsdGhpcy5jb25maWcudW5pcXVlTmFtZT10LHRoaXN9Z2VuZXJhdGVkQWx3YXlzQXModCxuKXtyZXR1cm4gdGhpcy5jb25maWcuZ2VuZXJhdGVkPXthczp0LHR5cGU6ImFsd2F5cyIsbW9kZTpuPy5tb2RlPz8idmlydHVhbCJ9LHRoaXN9YnVpbGRGb3JlaWduS2V5cyh0LG4pe3JldHVybiB0aGlzLmZvcmVpZ25LZXlDb25maWdzLm1hcCgoe3JlZjpyLGFjdGlvbnM6b30pPT4oKHMsaSk9Pntjb25zdCBhPW5ldyBQTSgoKT0+e2NvbnN0IGw9cygpO3JldHVybntjb2x1bW5zOlt0XSxmb3JlaWduQ29sdW1uczpbbF19fSk7cmV0dXJuIGkub25VcGRhdGUmJmEub25VcGRhdGUoaS5vblVwZGF0ZSksaS5vbkRlbGV0ZSYmYS5vbkRlbGV0ZShpLm9uRGVsZXRlKSxhLmJ1aWxkKG4pfSkocixvKSl9fWNsYXNzIFpuIGV4dGVuZHMga2R7Y29uc3RydWN0b3IodCxuKXtuLnVuaXF1ZU5hbWV8fChuLnVuaXF1ZU5hbWU9Uk0odCxbbi5uYW1lXSkpLHN1cGVyKHQsbiksdGhpcy50YWJsZT10fXN0YXRpY1tUZV09IlNRTGl0ZUNvbHVtbiJ9Y2xhc3MgTk0gZXh0ZW5kcyBYbntzdGF0aWNbVGVdPSJTUUxpdGVCaWdJbnRCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJiaWdpbnQiLCJTUUxpdGVCaWdJbnQiKX1idWlsZCh0KXtyZXR1cm4gbmV3IERNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBETSBleHRlbmRzIFpue3N0YXRpY1tUZV09IlNRTGl0ZUJpZ0ludCI7Z2V0U1FMVHlwZSgpe3JldHVybiJibG9iIn1tYXBGcm9tRHJpdmVyVmFsdWUodCl7aWYodHlwZW9mIEJ1ZmZlcjwidSImJkJ1ZmZlci5mcm9tKXtjb25zdCBuPUJ1ZmZlci5pc0J1ZmZlcih0KT90OnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9CdWZmZXIuZnJvbSh0KTp0LmJ1ZmZlcj9CdWZmZXIuZnJvbSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTpCdWZmZXIuZnJvbSh0KTtyZXR1cm4gQmlnSW50KG4udG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEJpZ0ludChFdy5kZWNvZGUodCkpfW1hcFRvRHJpdmVyVmFsdWUodCl7cmV0dXJuIEJ1ZmZlci5mcm9tKHQudG9TdHJpbmcoKSl9fWNsYXNzIExNIGV4dGVuZHMgWG57c3RhdGljW1RlXT0iU1FMaXRlQmxvYkpzb25CdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJqc29uIiwiU1FMaXRlQmxvYkpzb24iKX1idWlsZCh0KXtyZXR1cm4gbmV3ICRNKHQsdGhpcy5jb25maWcpfX1jbGFzcyAkTSBleHRlbmRzIFpue3N0YXRpY1tUZV09IlNRTGl0ZUJsb2JKc29uIjtnZXRTUUxUeXBlKCl7cmV0dXJuImJsb2IifW1hcEZyb21Ecml2ZXJWYWx1ZSh0KXtpZih0eXBlb2YgQnVmZmVyPCJ1IiYmQnVmZmVyLmZyb20pe2NvbnN0IG49QnVmZmVyLmlzQnVmZmVyKHQpP3Q6dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP0J1ZmZlci5mcm9tKHQpOnQuYnVmZmVyP0J1ZmZlci5mcm9tKHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpOkJ1ZmZlci5mcm9tKHQpO3JldHVybiBKU09OLnBhcnNlKG4udG9TdHJpbmcoInV0ZjgiKSl9cmV0dXJuIEpTT04ucGFyc2UoRXcuZGVjb2RlKHQpKX1tYXBUb0RyaXZlclZhbHVlKHQpe3JldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh0KSl9fWNsYXNzIE1NIGV4dGVuZHMgWG57c3RhdGljW1RlXT0iU1FMaXRlQmxvYkJ1ZmZlckJ1aWxkZXIiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsImJ1ZmZlciIsIlNRTGl0ZUJsb2JCdWZmZXIiKX1idWlsZCh0KXtyZXR1cm4gbmV3IEJNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBCTSBleHRlbmRzIFpue3N0YXRpY1tUZV09IlNRTGl0ZUJsb2JCdWZmZXIiO21hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHQpP3Q6QnVmZmVyLmZyb20odCl9Z2V0U1FMVHlwZSgpe3JldHVybiJibG9iIn19ZnVuY3Rpb24gcU0oZSx0KXtjb25zdHtuYW1lOm4sY29uZmlnOnJ9PVdpKGUsdCk7cmV0dXJuIHI/Lm1vZGU9PT0ianNvbiI/bmV3IExNKG4pOnI/Lm1vZGU9PT0iYmlnaW50Ij9uZXcgTk0obik6bmV3IE1NKG4pfWNsYXNzIEZNIGV4dGVuZHMgWG57c3RhdGljW1RlXT0iU1FMaXRlQ3VzdG9tQ29sdW1uQnVpbGRlciI7Y29uc3RydWN0b3IodCxuLHIpe3N1cGVyKHQsImN1c3RvbSIsIlNRTGl0ZUN1c3RvbUNvbHVtbiIpLHRoaXMuY29uZmlnLmZpZWxkQ29uZmlnPW4sdGhpcy5jb25maWcuY3VzdG9tVHlwZVBhcmFtcz1yfWJ1aWxkKHQpe3JldHVybiBuZXcgek0odCx0aGlzLmNvbmZpZyl9fWNsYXNzIHpNIGV4dGVuZHMgWm57c3RhdGljW1RlXT0iU1FMaXRlQ3VzdG9tQ29sdW1uIjtzcWxOYW1lO21hcFRvO21hcEZyb207Y29uc3RydWN0b3IodCxuKXtzdXBlcih0LG4pLHRoaXMuc3FsTmFtZT1uLmN1c3RvbVR5cGVQYXJhbXMuZGF0YVR5cGUobi5maWVsZENvbmZpZyksdGhpcy5tYXBUbz1uLmN1c3RvbVR5cGVQYXJhbXMudG9Ecml2ZXIsdGhpcy5tYXBGcm9tPW4uY3VzdG9tVHlwZVBhcmFtcy5mcm9tRHJpdmVyfWdldFNRTFR5cGUoKXtyZXR1cm4gdGhpcy5zcWxOYW1lfW1hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gdHlwZW9mIHRoaXMubWFwRnJvbT09ImZ1bmN0aW9uIj90aGlzLm1hcEZyb20odCk6dH1tYXBUb0RyaXZlclZhbHVlKHQpe3JldHVybiB0eXBlb2YgdGhpcy5tYXBUbz09ImZ1bmN0aW9uIj90aGlzLm1hcFRvKHQpOnR9fWZ1bmN0aW9uIGpNKGUpe3JldHVybih0LG4pPT57Y29uc3R7bmFtZTpyLGNvbmZpZzpvfT1XaSh0LG4pO3JldHVybiBuZXcgRk0ocixvLGUpfX1jbGFzcyBFZCBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZUJhc2VJbnRlZ2VyQnVpbGRlciI7Y29uc3RydWN0b3IodCxuLHIpe3N1cGVyKHQsbixyKSx0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSExfXByaW1hcnlLZXkodCl7cmV0dXJuIHQ/LmF1dG9JbmNyZW1lbnQmJih0aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50PSEwKSx0aGlzLmNvbmZpZy5oYXNEZWZhdWx0PSEwLHN1cGVyLnByaW1hcnlLZXkoKX19Y2xhc3MgVGQgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVCYXNlSW50ZWdlciI7YXV0b0luY3JlbWVudD10aGlzLmNvbmZpZy5hdXRvSW5jcmVtZW50O2dldFNRTFR5cGUoKXtyZXR1cm4iaW50ZWdlciJ9fWNsYXNzIFZNIGV4dGVuZHMgRWR7c3RhdGljW1RlXT0iU1FMaXRlSW50ZWdlckJ1aWxkZXIiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIm51bWJlciIsIlNRTGl0ZUludGVnZXIiKX1idWlsZCh0KXtyZXR1cm4gbmV3IFVNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBVTSBleHRlbmRzIFRke3N0YXRpY1tUZV09IlNRTGl0ZUludGVnZXIifWNsYXNzIEhNIGV4dGVuZHMgRWR7c3RhdGljW1RlXT0iU1FMaXRlVGltZXN0YW1wQnVpbGRlciI7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0LCJkYXRlIiwiU1FMaXRlVGltZXN0YW1wIiksdGhpcy5jb25maWcubW9kZT1ufWRlZmF1bHROb3coKXtyZXR1cm4gdGhpcy5kZWZhdWx0KGFmYChjYXN0KChqdWxpYW5kYXkoJ25vdycpIC0gMjQ0MDU4Ny41KSo4NjQwMDAwMCBhcyBpbnRlZ2VyKSlgKX1idWlsZCh0KXtyZXR1cm4gbmV3IFdNKHQsdGhpcy5jb25maWcpfX1jbGFzcyBXTSBleHRlbmRzIFRke3N0YXRpY1tUZV09IlNRTGl0ZVRpbWVzdGFtcCI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gdGhpcy5jb25maWcubW9kZT09PSJ0aW1lc3RhbXAiP25ldyBEYXRlKHQqMWUzKTpuZXcgRGF0ZSh0KX1tYXBUb0RyaXZlclZhbHVlKHQpe2NvbnN0IG49dC5nZXRUaW1lKCk7cmV0dXJuIHRoaXMuY29uZmlnLm1vZGU9PT0idGltZXN0YW1wIj9NYXRoLmZsb29yKG4vMWUzKTpufX1jbGFzcyBHTSBleHRlbmRzIEVke3N0YXRpY1tUZV09IlNRTGl0ZUJvb2xlYW5CdWlsZGVyIjtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsImJvb2xlYW4iLCJTUUxpdGVCb29sZWFuIiksdGhpcy5jb25maWcubW9kZT1ufWJ1aWxkKHQpe3JldHVybiBuZXcgS00odCx0aGlzLmNvbmZpZyl9fWNsYXNzIEtNIGV4dGVuZHMgVGR7c3RhdGljW1RlXT0iU1FMaXRlQm9vbGVhbiI7bW9kZT10aGlzLmNvbmZpZy5tb2RlO21hcEZyb21Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gTnVtYmVyKHQpPT09MX1tYXBUb0RyaXZlclZhbHVlKHQpe3JldHVybiB0PzE6MH19ZnVuY3Rpb24gYXQoZSx0KXtjb25zdHtuYW1lOm4sY29uZmlnOnJ9PVdpKGUsdCk7cmV0dXJuIHI/Lm1vZGU9PT0idGltZXN0YW1wInx8cj8ubW9kZT09PSJ0aW1lc3RhbXBfbXMiP25ldyBITShuLHIubW9kZSk6cj8ubW9kZT09PSJib29sZWFuIj9uZXcgR00obixyLm1vZGUpOm5ldyBWTShuKX1jbGFzcyBRTSBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZU51bWVyaWNCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJzdHJpbmciLCJTUUxpdGVOdW1lcmljIil9YnVpbGQodCl7cmV0dXJuIG5ldyBZTSh0LHRoaXMuY29uZmlnKX19Y2xhc3MgWU0gZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVOdW1lcmljIjttYXBGcm9tRHJpdmVyVmFsdWUodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OlN0cmluZyh0KX1nZXRTUUxUeXBlKCl7cmV0dXJuIm51bWVyaWMifX1jbGFzcyBKTSBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZU51bWVyaWNOdW1iZXJCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJudW1iZXIiLCJTUUxpdGVOdW1lcmljTnVtYmVyIil9YnVpbGQodCl7cmV0dXJuIG5ldyBYTSh0LHRoaXMuY29uZmlnKX19Y2xhc3MgWE0gZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVOdW1lcmljTnVtYmVyIjttYXBGcm9tRHJpdmVyVmFsdWUodCl7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyIj90Ok51bWJlcih0KX1tYXBUb0RyaXZlclZhbHVlPVN0cmluZztnZXRTUUxUeXBlKCl7cmV0dXJuIm51bWVyaWMifX1jbGFzcyBaTSBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZU51bWVyaWNCaWdJbnRCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJiaWdpbnQiLCJTUUxpdGVOdW1lcmljQmlnSW50Iil9YnVpbGQodCl7cmV0dXJuIG5ldyBlQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgZUIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVOdW1lcmljQmlnSW50IjttYXBGcm9tRHJpdmVyVmFsdWU9QmlnSW50O21hcFRvRHJpdmVyVmFsdWU9U3RyaW5nO2dldFNRTFR5cGUoKXtyZXR1cm4ibnVtZXJpYyJ9fWZ1bmN0aW9uIHRCKGUsdCl7Y29uc3R7bmFtZTpuLGNvbmZpZzpyfT1XaShlLHQpLG89cj8ubW9kZTtyZXR1cm4gbz09PSJudW1iZXIiP25ldyBKTShuKTpvPT09ImJpZ2ludCI/bmV3IFpNKG4pOm5ldyBRTShuKX1jbGFzcyBuQiBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZVJlYWxCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJudW1iZXIiLCJTUUxpdGVSZWFsIil9YnVpbGQodCl7cmV0dXJuIG5ldyByQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgckIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVSZWFsIjtnZXRTUUxUeXBlKCl7cmV0dXJuInJlYWwifX1mdW5jdGlvbiBvQihlKXtyZXR1cm4gbmV3IG5CKGU/PyIiKX1jbGFzcyBzQiBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZVRleHRCdWlsZGVyIjtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsInN0cmluZyIsIlNRTGl0ZVRleHQiKSx0aGlzLmNvbmZpZy5lbnVtVmFsdWVzPW4uZW51bSx0aGlzLmNvbmZpZy5sZW5ndGg9bi5sZW5ndGh9YnVpbGQodCl7cmV0dXJuIG5ldyBpQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgaUIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVUZXh0IjtlbnVtVmFsdWVzPXRoaXMuY29uZmlnLmVudW1WYWx1ZXM7bGVuZ3RoPXRoaXMuY29uZmlnLmxlbmd0aDtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsbil9Z2V0U1FMVHlwZSgpe3JldHVybmB0ZXh0JHt0aGlzLmNvbmZpZy5sZW5ndGg/YCgke3RoaXMuY29uZmlnLmxlbmd0aH0pYDoiIn1gfX1jbGFzcyBhQiBleHRlbmRzIFhue3N0YXRpY1tUZV09IlNRTGl0ZVRleHRKc29uQnVpbGRlciI7Y29uc3RydWN0b3IodCl7c3VwZXIodCwianNvbiIsIlNRTGl0ZVRleHRKc29uIil9YnVpbGQodCl7cmV0dXJuIG5ldyBsQih0LHRoaXMuY29uZmlnKX19Y2xhc3MgbEIgZXh0ZW5kcyBabntzdGF0aWNbVGVdPSJTUUxpdGVUZXh0SnNvbiI7Z2V0U1FMVHlwZSgpe3JldHVybiJ0ZXh0In1tYXBGcm9tRHJpdmVyVmFsdWUodCl7cmV0dXJuIEpTT04ucGFyc2UodCl9bWFwVG9Ecml2ZXJWYWx1ZSh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9fWZ1bmN0aW9uIGhlKGUsdD17fSl7Y29uc3R7bmFtZTpuLGNvbmZpZzpyfT1XaShlLHQpO3JldHVybiByLm1vZGU9PT0ianNvbiI/bmV3IGFCKG4pOm5ldyBzQihuLHIpfWZ1bmN0aW9uIGNCKCl7cmV0dXJue2Jsb2I6cU0sY3VzdG9tVHlwZTpqTSxpbnRlZ2VyOmF0LG51bWVyaWM6dEIscmVhbDpvQix0ZXh0OmhlfX1jb25zdCBjZj1TeW1ib2wuZm9yKCJkcml6emxlOlNRTGl0ZUlubGluZUZvcmVpZ25LZXlzIik7Y2xhc3MgSGggZXh0ZW5kcyBxdHtzdGF0aWNbVGVdPSJTUUxpdGVUYWJsZSI7c3RhdGljIFN5bWJvbD1PYmplY3QuYXNzaWduKHt9LHF0LlN5bWJvbCx7SW5saW5lRm9yZWlnbktleXM6Y2Z9KTtbcXQuU3ltYm9sLkNvbHVtbnNdO1tjZl09W107W3F0LlN5bWJvbC5FeHRyYUNvbmZpZ0J1aWxkZXJdPXZvaWQgMH1mdW5jdGlvbiB1QihlLHQsbixyLG89ZSl7Y29uc3Qgcz1uZXcgSGgoZSxyLG8pLGk9dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChjQigpKTp0LGE9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGkpLm1hcCgoW3UsY10pPT57Y29uc3QgZj1jO2Yuc2V0TmFtZSh1KTtjb25zdCBkPWYuYnVpbGQocyk7cmV0dXJuIHNbY2ZdLnB1c2goLi4uZi5idWlsZEZvcmVpZ25LZXlzKGQscykpLFt1LGRdfSkpLGw9T2JqZWN0LmFzc2lnbihzLGEpO3JldHVybiBsW3F0LlN5bWJvbC5Db2x1bW5zXT1hLGxbcXQuU3ltYm9sLkV4dHJhQ29uZmlnQ29sdW1uc109YSxuJiYobFtIaC5TeW1ib2wuRXh0cmFDb25maWdCdWlsZGVyXT1uKSxsfWNvbnN0IGVyPShlLHQsbik9PnVCKGUsdCxuKTtjbGFzcyBUd3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMubmFtZT10LHRoaXMudW5pcXVlPW59c3RhdGljW1RlXT0iU1FMaXRlSW5kZXhCdWlsZGVyT24iO29uKC4uLnQpe3JldHVybiBuZXcgZkIodGhpcy5uYW1lLHQsdGhpcy51bmlxdWUpfX1jbGFzcyBmQntzdGF0aWNbVGVdPSJTUUxpdGVJbmRleEJ1aWxkZXIiO2NvbmZpZztjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jb25maWc9e25hbWU6dCxjb2x1bW5zOm4sdW5pcXVlOnIsd2hlcmU6dm9pZCAwfX13aGVyZSh0KXtyZXR1cm4gdGhpcy5jb25maWcud2hlcmU9dCx0aGlzfWJ1aWxkKHQpe3JldHVybiBuZXcgZEIodGhpcy5jb25maWcsdCl9fWNsYXNzIGRCe3N0YXRpY1tUZV09IlNRTGl0ZUluZGV4Ijtjb25maWc7Y29uc3RydWN0b3IodCxuKXt0aGlzLmNvbmZpZz17Li4udCx0YWJsZTpufX19ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIG5ldyBUdyhlLCExKX1mdW5jdGlvbiBKbChlKXtyZXR1cm4gbmV3IFR3KGUsITApfXZhciBDdz0oZT0+KGUuR09PR0xFPSJnb29nbGUiLGUuR0lUSFVCPSJnaXRodWIiLGUpKShDd3x8e30pLEF3PShlPT4oZS5TSUdOX0lOPSJhdXRoOnNpZ25faW4iLGUuU0lHTl9VUD0iYXV0aDpzaWduX3VwIixlLklNUEVSU09OQVRFX1NUQVJUPSJhdXRoOmltcGVyc29uYXRlX3N0YXJ0IixlLklNUEVSU09OQVRFX1NUT1A9ImF1dGg6aW1wZXJzb25hdGVfc3RvcCIsZSkpKEF3fHx7fSk7ZnVuY3Rpb24gT3coZSl7cmV0dXJuIE9iamVjdC52YWx1ZXMoZSl9Y29uc3QgdW89ZXIoInVzZXJzIix7aWQ6aGUoImlkIikucHJpbWFyeUtleSgpLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5jcnlwdG8ucmFuZG9tVVVJRCgpKSx1c2VybmFtZTpoZSgidXNlcm5hbWUiKSxuYW1lOmhlKCJuYW1lIikscHJpbWFyeV9lbWFpbDpoZSgicHJpbWFyeV9lbWFpbCIpLnVuaXF1ZSgpLm5vdE51bGwoKSxwcmltYXJ5X3Bob25lOmhlKCJwcmltYXJ5X3Bob25lIikudW5pcXVlKCksYXZhdGFyOmhlKCJhdmF0YXIiKSx2ZXJpZmllZDphdCgidmVyaWZpZWQiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITEpLGVtYWlsX25vdGlmaWNhdGlvbnM6YXQoImVtYWlsX25vdGlmaWNhdGlvbnMiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITApLGJpbzpoZSgiYmlvIiksbm90aWZpY2F0aW9uX3ByZWZzOmhlKCJub3RpZmljYXRpb25fcHJlZnMiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdCh7ZW1haWw6ITAscHJvZHVjdF91cGRhdGVzOiEwLHdlZWtseV9kaWdlc3Q6ITEsaW1wb3J0YW50X3VwZGF0ZXM6ITB9KSxjdXN0b21fZGF0YTpoZSgiY3VzdG9tX2RhdGEiLHttb2RlOiJqc29uIn0pLiR0eXBlKCkuZGVmYXVsdCh7fSksbGFzdF9zaWduX2luX2F0OmF0KCJsYXN0X3NpZ25faW5fYXQiLHttb2RlOiJ0aW1lc3RhbXAifSksaXNfc3VzcGVuZGVkOmF0KCJpc19zdXNwZW5kZWQiLHttb2RlOiJib29sZWFuIn0pLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmF0KCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W0h0KCJ1c2Vyc191c2VybmFtZV9pZHgiKS5vbihlLnVzZXJuYW1lKSxIdCgidXNlcnNfbmFtZV9pZHgiKS5vbihlLm5hbWUpXSk7ZXIoImlkZW50aXRpZXMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6aGUoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT51by5pZCx7b25EZWxldGU6ImNhc2NhZGUiLG9uVXBkYXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxwcm92aWRlcjpoZSgicHJvdmlkZXIiLHtlbnVtOk93KEN3KX0pLm5vdE51bGwoKSxwcm92aWRlcl91c2VyX2lkOmhlKCJwcm92aWRlcl91c2VyX2lkIikubm90TnVsbCgpLHByb3ZpZGVyX2RhdGE6aGUoInByb3ZpZGVyX2RhdGEiLHttb2RlOiJqc29uIn0pLiR0eXBlKCksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6YXQoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bSHQoImlkZW50aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpLEpsKCJpZGVudGl0aWVzX3Byb3ZpZGVyX3VuaXF1ZV9pZHgiKS5vbihlLnByb3ZpZGVyLGUucHJvdmlkZXJfdXNlcl9pZCldKTtlcigiYWN0aXZpdGllcyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDpoZSgidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSIsb25VcGRhdGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGFjdGlvbjpoZSgiYWN0aW9uIix7ZW51bTpPdyhBdyl9KS5ub3ROdWxsKCksYWN0aW9uX3JlZl9pZDpoZSgiYWN0aW9uX3JlZl9pZCIpLHRlc3Q6aGUoInRlc3QiLHttb2RlOiJqc29uIn0pLG1ldGFkYXRhOmhlKCJtZXRhZGF0YSIse21vZGU6Impzb24ifSksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bSHQoImFjdGl2aXRpZXNfdXNlcl9pZF9pZHgiKS5vbihlLnVzZXJfaWQpXSk7Y29uc3QgWGw9ZXIoIm9yZ2FuaXphdGlvbnMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG5hbWU6aGUoIm5hbWUiKS5ub3ROdWxsKCksc2x1ZzpoZSgic2x1ZyIpLm5vdE51bGwoKS51bmlxdWUoKSxvd25lcl9pZDpoZSgib3duZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT51by5pZCx7b25EZWxldGU6InNldCBudWxsIn0pLGlzX3BlcnNvbmFsOmF0KCJpc19wZXJzb25hbCIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGlzX3N5c3RlbTphdCgiaXNfc3lzdGVtIix7bW9kZToiYm9vbGVhbiJ9KS5ub3ROdWxsKCkuZGVmYXVsdCghMSksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLHVwZGF0ZWRfYXQ6YXQoInVwZGF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpLiRvblVwZGF0ZSgoKT0+bmV3IERhdGUpfSxlPT5bSHQoIm9yZ2FuaXphdGlvbnNfaXNfc3lzdGVtX2lkeCIpLm9uKGUuaXNfc3lzdGVtKV0pLHBCPWVyKCJvcmdhbml6YXRpb25fbWVtYmVycyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksdXNlcl9pZDpoZSgidXNlcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToiY2FzY2FkZSJ9KS5ub3ROdWxsKCksb3JnYW5pemF0aW9uX2lkOmhlKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5YbC5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGFiaWxpdGllczpoZSgiYWJpbGl0aWVzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxjcmVhdGVkX2F0OmF0KCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSksdXBkYXRlZF9hdDphdCgidXBkYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSkuJG9uVXBkYXRlKCgpPT5uZXcgRGF0ZSl9LGU9PltKbCgib3JnX21lbWJlcnNfdXNlcl9vcmdfdW5pcXVlIikub24oZS51c2VyX2lkLGUub3JnYW5pemF0aW9uX2lkKSxIdCgib3JnX21lbWJlcnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKV0pO2VyKCJwZXJtaXNzaW9ucyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksa2V5OmhlKCJrZXkiKS5ub3ROdWxsKCkudW5pcXVlKCksc3ViamVjdDpoZSgic3ViamVjdCIpLm5vdE51bGwoKSxhY3Rpb246aGUoImFjdGlvbiIpLm5vdE51bGwoKSxzY29wZTpoZSgic2NvcGUiKSxvcmdfa2luZDpoZSgib3JnX2tpbmQiLHtlbnVtOlsic3lzdGVtIiwidGVuYW50Il19KS5ub3ROdWxsKCksZGVzY3JpcHRpb246aGUoImRlc2NyaXB0aW9uIiksY3JlYXRlZF9hdDphdCgiY3JlYXRlZF9hdCIse21vZGU6InRpbWVzdGFtcCJ9KS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+bmV3IERhdGUpfSxlPT5bSHQoInBlcm1pc3Npb25zX3N1YmplY3RfaWR4Iikub24oZS5zdWJqZWN0KV0pO2NvbnN0IFB3PWVyKCJyb2xlcyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOmhlKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5YbC5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLG5hbWU6aGUoIm5hbWUiKS5ub3ROdWxsKCksZGVzY3JpcHRpb246aGUoImRlc2NyaXB0aW9uIikscGVybWlzc2lvbnM6aGUoInBlcm1pc3Npb25zIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLm5vdE51bGwoKS5kZWZhdWx0KFtdKSxpc19zeXN0ZW06YXQoImlzX3N5c3RlbSIse21vZGU6ImJvb2xlYW4ifSkubm90TnVsbCgpLmRlZmF1bHQoITEpLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmF0KCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W0psKCJyb2xlc19vcmdfbmFtZV91bmlxdWUiKS5vbihlLm9yZ2FuaXphdGlvbl9pZCxlLm5hbWUpLEh0KCJyb2xlc19vcmdfaWR4Iikub24oZS5vcmdhbml6YXRpb25faWQpXSk7ZXIoIm9yZ2FuaXphdGlvbl9tZW1iZXJfcm9sZXMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLG1lbWJlcl9pZDpoZSgibWVtYmVyX2lkIikucmVmZXJlbmNlcygoKT0+cEIuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxyb2xlX2lkOmhlKCJyb2xlX2lkIikucmVmZXJlbmNlcygoKT0+UHcuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxjcmVhdGVkX2F0OmF0KCJjcmVhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKS4kZGVmYXVsdEZuKCgpPT5uZXcgRGF0ZSl9LGU9PltKbCgibWVtYmVyX3JvbGVzX3VuaXF1ZSIpLm9uKGUubWVtYmVyX2lkLGUucm9sZV9pZCksSHQoIm1lbWJlcl9yb2xlc19tZW1iZXJfaWR4Iikub24oZS5tZW1iZXJfaWQpLEh0KCJtZW1iZXJfcm9sZXNfcm9sZV9pZHgiKS5vbihlLnJvbGVfaWQpXSk7ZXIoIm9yZ2FuaXphdGlvbl9pbnZpdGF0aW9ucyIse2lkOmhlKCJpZCIpLnByaW1hcnlLZXkoKS5ub3ROdWxsKCkuJGRlZmF1bHRGbigoKT0+Y3J5cHRvLnJhbmRvbVVVSUQoKSksb3JnYW5pemF0aW9uX2lkOmhlKCJvcmdhbml6YXRpb25faWQiKS5yZWZlcmVuY2VzKCgpPT5YbC5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLGVtYWlsOmhlKCJlbWFpbCIpLm5vdE51bGwoKSxyb2xlX2lkOmhlKCJyb2xlX2lkIikucmVmZXJlbmNlcygoKT0+UHcuaWQse29uRGVsZXRlOiJzZXQgbnVsbCJ9KSx0b2tlbjpoZSgidG9rZW4iKS5ub3ROdWxsKCkudW5pcXVlKCksaW52aXRlZF9ieTpoZSgiaW52aXRlZF9ieSIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSkscHJvamVjdF9pZHM6aGUoInByb2plY3RfaWRzIix7bW9kZToianNvbiJ9KS4kdHlwZSgpLmRlZmF1bHQoW10pLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxleHBpcmVzX2F0OmF0KCJleHBpcmVzX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLm5vdE51bGwoKX0sZT0+W0h0KCJvcmdfaW52aXRhdGlvbnNfb3JnX2lkeCIpLm9uKGUub3JnYW5pemF0aW9uX2lkKSxIdCgib3JnX2ludml0YXRpb25zX3Rva2VuX2lkeCIpLm9uKGUudG9rZW4pXSk7Y29uc3QgbUI9WyJmZWVkYmFjayIsInN1cHBvcnQiXSxJdz1bImFjY291bnQiLCJiaWxsaW5nIiwidGVjaG5pY2FsIiwib3RoZXIiXSxoQj1bIm9wZW4iLCJhY3RpdmUiLCJjbG9zZWQiXSxSdz1bInVzZXIiLCJhZ2VudCJdLGdCPWVyKCJzdXBwb3J0X3RpY2tldHMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHVzZXJfaWQ6aGUoInVzZXJfaWQiKS5yZWZlcmVuY2VzKCgpPT51by5pZCx7b25EZWxldGU6ImNhc2NhZGUifSkubm90TnVsbCgpLG9yZ2FuaXphdGlvbl9pZDpoZSgib3JnYW5pemF0aW9uX2lkIikucmVmZXJlbmNlcygoKT0+WGwuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxraW5kOmhlKCJraW5kIix7ZW51bTptQn0pLm5vdE51bGwoKSxjYXRlZ29yeTpoZSgiY2F0ZWdvcnkiLHtlbnVtOkl3fSksc3ViamVjdDpoZSgic3ViamVjdCIpLm5vdE51bGwoKSxzdGF0dXM6aGUoInN0YXR1cyIse2VudW06aEJ9KS5ub3ROdWxsKCkuZGVmYXVsdCgib3BlbiIpLGFzc2lnbmVkX3RvOmhlKCJhc3NpZ25lZF90byIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksbGFzdF9tZXNzYWdlX2F0OmF0KCJsYXN0X21lc3NhZ2VfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSxsYXN0X21lc3NhZ2Vfcm9sZTpoZSgibGFzdF9tZXNzYWdlX3JvbGUiLHtlbnVtOlJ3fSkubm90TnVsbCgpLmRlZmF1bHQoInVzZXIiKSxyZW1pbmRlcl9zZW50X2F0OmF0KCJyZW1pbmRlcl9zZW50X2F0Iix7bW9kZToidGltZXN0YW1wIn0pLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKSx1cGRhdGVkX2F0OmF0KCJ1cGRhdGVkX2F0Iix7bW9kZToidGltZXN0YW1wIn0pLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKS4kb25VcGRhdGUoKCk9Pm5ldyBEYXRlKX0sZT0+W0h0KCJzdXBwb3J0X3RpY2tldHNfdXNlcl9pZHgiKS5vbihlLnVzZXJfaWQpLEh0KCJzdXBwb3J0X3RpY2tldHNfc3RhdHVzX2lkeCIpLm9uKGUuc3RhdHVzKSxIdCgic3VwcG9ydF90aWNrZXRzX2Fzc2lnbmVkX2lkeCIpLm9uKGUuYXNzaWduZWRfdG8pLEh0KCJzdXBwb3J0X3RpY2tldHNfcmVtaW5kZXJfaWR4Iikub24oZS5sYXN0X21lc3NhZ2Vfcm9sZSxlLmxhc3RfbWVzc2FnZV9hdCldKTtlcigic3VwcG9ydF90aWNrZXRfbWVzc2FnZXMiLHtpZDpoZSgiaWQiKS5wcmltYXJ5S2V5KCkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9PmNyeXB0by5yYW5kb21VVUlEKCkpLHRpY2tldF9pZDpoZSgidGlja2V0X2lkIikucmVmZXJlbmNlcygoKT0+Z0IuaWQse29uRGVsZXRlOiJjYXNjYWRlIn0pLm5vdE51bGwoKSxhdXRob3JfaWQ6aGUoImF1dGhvcl9pZCIpLnJlZmVyZW5jZXMoKCk9PnVvLmlkLHtvbkRlbGV0ZToic2V0IG51bGwifSksYXV0aG9yX3JvbGU6aGUoImF1dGhvcl9yb2xlIix7ZW51bTpSd30pLm5vdE51bGwoKSxib2R5OmhlKCJib2R5Iikubm90TnVsbCgpLGNyZWF0ZWRfYXQ6YXQoImNyZWF0ZWRfYXQiLHttb2RlOiJ0aW1lc3RhbXAifSkubm90TnVsbCgpLiRkZWZhdWx0Rm4oKCk9Pm5ldyBEYXRlKX0sZT0+W0h0KCJzdXBwb3J0X3RpY2tldF9tZXNzYWdlc190aWNrZXRfaWR4Iikub24oZS50aWNrZXRfaWQsZS5jcmVhdGVkX2F0KV0pO2NvbnN0IHlCPXtjbGFzczoiZmxleCBmbGV4LWNvbCBnYXAtNCJ9LHZCPXtjbGFzczoiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiB3LWZ1bGwifSxiQj1zZSh7X19uYW1lOiJTdXBwb3J0VGlja2V0TW9kYWwiLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX19LGVtaXRzOlsidXBkYXRlOm9wZW4iXSxzZXR1cChlLHtlbWl0OnR9KXtjb25zdCBuPWUscj10LG89eXcoKSxzPU4oe2dldDooKT0+bi5vcGVufHxvLnZhbHVlLHNldDp5PT57by52YWx1ZT15LHIoInVwZGF0ZTpvcGVuIix5KX19KSxpPWh3KCksYT1TZCgpLGw9RyghMSksdT1HKCksYz1HKCIiKSxmPUcoIiIpLGQ9SXcubWFwKHk9Pih7bGFiZWw6eS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt5LnNsaWNlKDEpLHZhbHVlOnl9KSkscD1OKCgpPT4hIXUudmFsdWUmJmMudmFsdWUudHJpbSgpLmxlbmd0aD4wJiZmLnZhbHVlLnRyaW0oKS5sZW5ndGg+MCk7YXN5bmMgZnVuY3Rpb24gbSgpe2lmKCEoIXAudmFsdWV8fCF1LnZhbHVlKSl7bC52YWx1ZT0hMDt0cnl7YXdhaXQgaS5jcmVhdGVUaWNrZXQoe2tpbmQ6InN1cHBvcnQiLGNhdGVnb3J5OnUudmFsdWUsc3ViamVjdDpjLnZhbHVlLnRyaW0oKSxib2R5OmYudmFsdWUudHJpbSgpfSksYS5hZGQoe3RpdGxlOiJSZXF1ZXN0IHN1Ym1pdHRlZCIsZGVzY3JpcHRpb246IldlJ2xsIHJlcGx5IGluIHlvdXIgcmVxdWVzdHMuIixjb2xvcjoic3VjY2VzcyJ9KSx1LnZhbHVlPXZvaWQgMCxjLnZhbHVlPSIiLGYudmFsdWU9IiIscy52YWx1ZT0hMSxhd2FpdCBBdigic3VwcG9ydC10aWNrZXRzIil9Y2F0Y2goeSl7YS5hZGQoe3RpdGxlOiJDb3VsZCBub3Qgc3VibWl0IixkZXNjcmlwdGlvbjp3dyh5KSxjb2xvcjoiZXJyb3IifSl9ZmluYWxseXtsLnZhbHVlPSExfX19cmV0dXJuKHksXyk9Pntjb25zdCB3PV9NLHY9ZHcsaD1mdyxiPXB3LHg9TnIsUz1tdztyZXR1cm4gUigpLCQoUyx7b3BlbjpnKHMpLCJvblVwZGF0ZTpvcGVuIjpfWzRdfHwoX1s0XT1rPT4kZShzKT9zLnZhbHVlPWs6bnVsbCksdGl0bGU6IkhlbHAgJiBzdXBwb3J0IixkZXNjcmlwdGlvbjoiVGVsbCB1cyB3aGF0IHlvdSBuZWVkIGhlbHAgd2l0aC4ifSx7Ym9keTpNKCgpPT5bd3QoImRpdiIseUIsW3JlKHYse2xhYmVsOiJDYXRlZ29yeSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZSh3LHttb2RlbFZhbHVlOmcodSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOl9bMF18fChfWzBdPWs9PiRlKHUpP3UudmFsdWU9azpudWxsKSxpdGVtczpnKGQpLCJ2YWx1ZS1rZXkiOiJ2YWx1ZSIscGxhY2Vob2xkZXI6IkNob29zZSBhIGNhdGVnb3J5IixjbGFzczoidy1mdWxsIn0sbnVsbCw4LFsibW9kZWxWYWx1ZSIsIml0ZW1zIl0pXSksXzoxfSkscmUodix7bGFiZWw6IlN1YmplY3QiLHJlcXVpcmVkOiIifSx7ZGVmYXVsdDpNKCgpPT5bcmUoaCx7bW9kZWxWYWx1ZTpnKGMpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpfWzFdfHwoX1sxXT1rPT4kZShjKT9jLnZhbHVlPWs6bnVsbCkscGxhY2Vob2xkZXI6IkEgc2hvcnQgc3VtbWFyeSIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KSxyZSh2LHtsYWJlbDoiTWVzc2FnZSIscmVxdWlyZWQ6IiJ9LHtkZWZhdWx0Ok0oKCk9PltyZShiLHttb2RlbFZhbHVlOmcoZiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOl9bMl18fChfWzJdPWs9PiRlKGYpP2YudmFsdWU9azpudWxsKSxyb3dzOjUscGxhY2Vob2xkZXI6IkRlc2NyaWJlIHRoZSBpc3N1ZeKApiIsY2xhc3M6InctZnVsbCJ9LG51bGwsOCxbIm1vZGVsVmFsdWUiXSldKSxfOjF9KV0pXSksZm9vdGVyOk0oKCk9Plt3dCgiZGl2Iix2QixbcmUoeCx7Y29sb3I6Im5ldXRyYWwiLHZhcmlhbnQ6Imdob3N0IixsYWJlbDoiQ2FuY2VsIixvbkNsaWNrOl9bM118fChfWzNdPWs9PnMudmFsdWU9ITEpfSkscmUoeCx7bGFiZWw6IlN1Ym1pdCByZXF1ZXN0Iixsb2FkaW5nOmcobCksZGlzYWJsZWQ6IWcocCksb25DbGljazptfSxudWxsLDgsWyJsb2FkaW5nIiwiZGlzYWJsZWQiXSldKV0pLF86MX0sOCxbIm9wZW4iXSl9fX0pLHdCPU9iamVjdC5hc3NpZ24oYkIse19fbmFtZToiU3VwcG9ydFRpY2tldE1vZGFsIn0pLF9CPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InN1cHBvcnQtcmVxdWVzdHMiLGxhYmVsOiJNeSBSZXF1ZXN0cyIsaWNvbjoiaS1sdWNpZGUtaW5ib3giLHRvOiIvc3VwcG9ydCIsc2VjdGlvbjoibWFpbiIscHJpb3JpdHk6MzB9LHtpZDoic3VwcG9ydC1mZWVkYmFjayIsbGFiZWw6IkZlZWRiYWNrIixpY29uOiJpLWx1Y2lkZS1tZXNzYWdlLWNpcmNsZSIsc2VjdGlvbjoic3ViIixwcmlvcml0eToxMCxvblNlbGVjdDooKT0+e2d3KCkudmFsdWU9ITB9fSx7aWQ6InN1cHBvcnQtdGlja2V0IixsYWJlbDoiSGVscCAmIFN1cHBvcnQiLGljb246ImktbHVjaWRlLWluZm8iLHNlY3Rpb246InN1YiIscHJpb3JpdHk6MjAsb25TZWxlY3Q6KCk9Pnt5dygpLnZhbHVlPSEwfX1dLG92ZXJsYXlzOlt7aWQ6InN1cHBvcnQtZmVlZGJhY2stbW9kYWwiLGNvbXBvbmVudDpiTX0se2lkOiJzdXBwb3J0LXRpY2tldC1tb2RhbCIsY29tcG9uZW50OndCfV19KX0pLHhCPWx0KCgpPT57Y29uc3R7Y29udHJpYnV0ZTplfT1qcigpO2Uoe25hdkl0ZW1zOlt7aWQ6InN5c3RlbS1hZG1pbiIsbGFiZWw6IlN5c3RlbSBBZG1pbmlzdHJhdGlvbiIsaWNvbjoiaS1sdWNpZGUtc2hpZWxkLWNoZWNrIixzZWN0aW9uOiJzdWIiLHByaW9yaXR5OjAsdHlwZToidHJpZ2dlciIsZGVmYXVsdE9wZW46ITAsYWJpbGl0eToic3lzdGVtOm1hbmFnZSIsY2hpbGRyZW46W3tpZDoic3lzdGVtLW5vdGlmaWNhdGlvbnMiLGxhYmVsOiJOb3RpZmljYXRpb25zIix0bzoiL3N5c3RlbS9ub3RpZmljYXRpb25zIixzZWN0aW9uOiJzdWIiLHByaW9yaXR5OjB9LHtpZDoic3lzdGVtLXRpY2tldHMiLGxhYmVsOiJUaWNrZXRzIix0bzoiL3N5c3RlbS90aWNrZXRzIixzZWN0aW9uOiJzdWIiLHByaW9yaXR5OjEwLGFiaWxpdHk6InN1cHBvcnQ6bWFuYWdlIn1dfV19KX0pLFNCPVt6ayxWayxLayxFQyxUQyxDQyxBQyxPQyxQQyxOQywkQyxNQyxCQyxaQyxyQSxyTyxvTyxaTyxlUCxnJCxLJCxRJCxZJCxKJCxYJCxfQix4Ql0sa0I9c2Uoe25hbWU6Ik51eHRMb2FkaW5nSW5kaWNhdG9yIixwcm9wczp7dGhyb3R0bGU6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MjAwfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsZGVmYXVsdDoyZTN9LGhpZGVEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDo1MDB9LHJlc2V0RGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6NDAwfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6M30sY29sb3I6e3R5cGU6W1N0cmluZyxCb29sZWFuXSxkZWZhdWx0OiJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCMwMGRjODIgMCUsIzM0Y2RmZSA1MCUsIzAwNDdlMSAxMDAlKSJ9LGVycm9yQ29sb3I6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsI2Y4NzE3MSAwJSwjZWY0NDQ0IDEwMCUpIn0sZXN0aW1hdGVkUHJvZ3Jlc3M6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtzbG90czp0LGV4cG9zZTpufSl7Y29uc3R7cHJvZ3Jlc3M6cixpc0xvYWRpbmc6byxlcnJvcjpzLHN0YXJ0OmksZmluaXNoOmEsY2xlYXI6bH09QWEoe2R1cmF0aW9uOmUuZHVyYXRpb24sdGhyb3R0bGU6ZS50aHJvdHRsZSxoaWRlRGVsYXk6ZS5oaWRlRGVsYXkscmVzZXREZWxheTplLnJlc2V0RGVsYXksZXN0aW1hdGVkUHJvZ3Jlc3M6ZS5lc3RpbWF0ZWRQcm9ncmVzc30pO3JldHVybiBuKHtwcm9ncmVzczpyLGlzTG9hZGluZzpvLGVycm9yOnMsc3RhcnQ6aSxmaW5pc2g6YSxjbGVhcjpsfSksKCk9PkZlKCJkaXYiLHtjbGFzczoibnV4dC1sb2FkaW5nLWluZGljYXRvciIsc3R5bGU6e3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjAscmlnaHQ6MCxsZWZ0OjAscG9pbnRlckV2ZW50czoibm9uZSIsd2lkdGg6ImF1dG8iLGhlaWdodDpgJHtlLmhlaWdodH1weGAsb3BhY2l0eTpvLnZhbHVlPzE6MCxiYWNrZ3JvdW5kOnMudmFsdWU/ZS5lcnJvckNvbG9yOmUuY29sb3J8fHZvaWQgMCxiYWNrZ3JvdW5kU2l6ZTpgJHtyLnZhbHVlPjA/MTAwL3IudmFsdWUqMTAwOjB9JSBhdXRvYCx0cmFuc2Zvcm06YHNjYWxlWCgke3IudmFsdWV9JSlgLHRyYW5zZm9ybU9yaWdpbjoibGVmdCIsdHJhbnNpdGlvbjoidHJhbnNmb3JtIDAuMXMsIGhlaWdodCAwLjRzLCBvcGFjaXR5IDAuNHMiLHpJbmRleDo5OTk5OTl9fSx0KX19KSxFQj1zZSh7bmFtZToiTnV4dFJvdXRlQW5ub3VuY2VyIixwcm9wczp7YXRvbWljOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scG9saXRlbmVzczp7dHlwZTpTdHJpbmcsZGVmYXVsdDoicG9saXRlIn19LHNldHVwKGUse3Nsb3RzOnQsZXhwb3NlOm59KXtjb25zdHtzZXQ6cixwb2xpdGU6byxhc3NlcnRpdmU6cyxtZXNzYWdlOmkscG9saXRlbmVzczphfT1pQyh7cG9saXRlbmVzczplLnBvbGl0ZW5lc3N9KSxsPU4oKCk9PntpZihhLnZhbHVlPT09ImFzc2VydGl2ZSIpcmV0dXJuImFsZXJ0IjtpZihhLnZhbHVlIT09Im9mZiIpcmV0dXJuInN0YXR1cyJ9KTtyZXR1cm4gbih7c2V0OnIscG9saXRlOm8sYXNzZXJ0aXZlOnMsbWVzc2FnZTppLHBvbGl0ZW5lc3M6YX0pLCgpPT5GZSgic3BhbiIse2NsYXNzOiJudXh0LXJvdXRlLWFubm91bmNlciIsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9fSxGZSgic3BhbiIse3JvbGU6bC52YWx1ZSwiYXJpYS1saXZlIjphLnZhbHVlLCJhcmlhLWF0b21pYyI6ZS5hdG9taWMsc3R5bGU6e2JvcmRlcjoiMCIsY2xpcDoicmVjdCgwIDAgMCAwKSIsImNsaXAtcGF0aCI6Imluc2V0KDUwJSkiLGhlaWdodDoiMXB4Iix3aWR0aDoiMXB4IixvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoiYWJzb2x1dGUiLCJ3aGl0ZS1zcGFjZSI6Im5vd3JhcCIsIndvcmQtd3JhcCI6Im5vcm1hbCIsbWFyZ2luOiItMXB4IixwYWRkaW5nOiIwIn19LHQuZGVmYXVsdD90LmRlZmF1bHQoe21lc3NhZ2U6aS52YWx1ZX0pOmkudmFsdWUpKX19KSxOdz0oZT0iUm91dGVQcm92aWRlciIpPT5zZSh7bmFtZTplLHByb3BzOntyb3V0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LHZub2RlOk9iamVjdCx2bm9kZVJlZjpPYmplY3QscmVuZGVyS2V5OlN0cmluZyx0cmFja1Jvb3ROb2RlczpCb29sZWFufSxzZXR1cCh0KXtjb25zdCBuPXQucmVuZGVyS2V5LHI9dC5yb3V0ZSxvPXt9O2Zvcihjb25zdCBzIGluIHQucm91dGUpT2JqZWN0LmRlZmluZVByb3BlcnR5KG8scyx7Z2V0OigpPT5uPT09dC5yZW5kZXJLZXk/dC5yb3V0ZVtzXTpyW3NdLGVudW1lcmFibGU6ITB9KTtyZXR1cm4gTnQocW8sUG4obykpLCgpPT50LnZub2RlP0ZlKHQudm5vZGUse3JlZjp0LnZub2RlUmVmfSk6dC52bm9kZX19KSxUQj1OdygpLFdoPW5ldyBXZWFrTWFwLENCPXNlKHtuYW1lOiJOdXh0UGFnZSIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntuYW1lOnt0eXBlOlN0cmluZ30sdHJhbnNpdGlvbjp7dHlwZTpbQm9vbGVhbixPYmplY3RdLGRlZmF1bHQ6dm9pZCAwfSxrZWVwYWxpdmU6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxkZWZhdWx0OnZvaWQgMH0scm91dGU6e3R5cGU6T2JqZWN0fSxwYWdlS2V5Ont0eXBlOltGdW5jdGlvbixTdHJpbmddLGRlZmF1bHQ6bnVsbH19LHNldHVwKGUse2F0dHJzOnQsc2xvdHM6bixleHBvc2U6cn0pe2NvbnN0IG89QmUoKSxzPUcoKSxpPUtlKHFvLG51bGwpO2xldCBhO3Ioe3BhZ2VSZWY6c30pO2NvbnN0IGw9S2UoanksbnVsbCk7bGV0IHU7Y29uc3QgYz1vLmRlZmVySHlkcmF0aW9uKCk7bGV0IGY9ITEsZD0wO2lmKG8uaXNIeWRyYXRpbmcpe2NvbnN0IG09by5ob29rcy5ob29rT25jZSgiYXBwOmVycm9yIixjKTtKdCgpLmJlZm9yZUVhY2gobSl9ZS5wYWdlS2V5JiZQZSgoKT0+ZS5wYWdlS2V5LChtLHkpPT57bSE9PXkmJm8uY2FsbEhvb2soInBhZ2U6bG9hZGluZzpzdGFydCIpfSk7bGV0IHA9ITE7e2NvbnN0IG09SnQoKS5iZWZvcmVSZXNvbHZlKCgpPT57cD0hMX0pO0hvKCgpPT57bSgpLGMoKX0pfXJldHVybigpPT5GZSh2dix7bmFtZTplLm5hbWUscm91dGU6ZS5yb3V0ZSwuLi50fSx7ZGVmYXVsdDptPT57Y29uc3QgeT1BQihpLG0ucm91dGUsbS5Db21wb25lbnQpLF89aSYmaS5tYXRjaGVkLmxlbmd0aD09PW0ucm91dGUubWF0Y2hlZC5sZW5ndGg7aWYoIW0uQ29tcG9uZW50KXtpZih1JiYhXylyZXR1cm4gdTtjKCk7cmV0dXJufWlmKHUmJmwmJiFsLmlzQ3VycmVudChtLnJvdXRlKSlyZXR1cm4gdTtpZih5JiZpJiYoIWx8fGw/LmlzQ3VycmVudChpKSkpcmV0dXJuIF98fHU/dTpudWxsO2NvbnN0IHc9VHUobSxlLnBhZ2VLZXkpLHY9T0IoaSxtLnJvdXRlLG0uQ29tcG9uZW50KTshby5pc0h5ZHJhdGluZyYmYT09PXcmJiF2JiZpdCgoKT0+e3B8fChwPSEwLG8uY2FsbEhvb2soInBhZ2U6bG9hZGluZzplbmQiKSl9KSxmJiZhIT09dyYmZCsrLGE9dztjb25zdCBoPSEhKGUudHJhbnNpdGlvbj8/bS5yb3V0ZS5tZXRhLnBhZ2VUcmFuc2l0aW9uPz9PcCksYj1oJiZ4dihbZS50cmFuc2l0aW9uLG0ucm91dGUubWV0YS5wYWdlVHJhbnNpdGlvbixPcCx7b25BZnRlckxlYXZlKCl7b1sifnRyYW5zaXRpb25GaW5pc2giXT8uKCksZGVsZXRlIG9bIn50cmFuc2l0aW9uRmluaXNoIl0sZGVsZXRlIG9bIn50cmFuc2l0aW9uUHJvbWlzZSJdLG8uY2FsbEhvb2soInBhZ2U6dHJhbnNpdGlvbjpmaW5pc2giLG0uQ29tcG9uZW50KX19XSkseD1lLmtlZXBhbGl2ZT8/bS5yb3V0ZS5tZXRhLmtlZXBhbGl2ZT8/QTE7cmV0dXJuIHU9d3YoaCYmYixhVCh4LEZlKENmLHtrZXk6ZCxzdXNwZW5zaWJsZTohMCxvblBlbmRpbmc6KCk9PntmPSEwLGgmJiFvWyJ+dHJhbnNpdGlvblByb21pc2UiXSYmKG9bIn50cmFuc2l0aW9uUHJvbWlzZSJdPW5ldyBQcm9taXNlKFM9PntvWyJ+dHJhbnNpdGlvbkZpbmlzaCJdPVN9KSksby5jYWxsSG9vaygicGFnZTpzdGFydCIsbS5Db21wb25lbnQpfSxvblJlc29sdmU6YXN5bmMoKT0+e2Y9ITE7dHJ5e2F3YWl0IGl0KCksby5fcm91dGUuc3luYz8uKCksYXdhaXQgby5jYWxsSG9vaygicGFnZTpmaW5pc2giLG0uQ29tcG9uZW50KSwhcCYmIXYmJihwPSEwLGF3YWl0IG8uY2FsbEhvb2soInBhZ2U6bG9hZGluZzplbmQiKSl9ZmluYWxseXtjKCl9fX0se2RlZmF1bHQ6KCk9Pntjb25zdCBTPXtrZXk6d3x8dm9pZCAwLHZub2RlOm4uZGVmYXVsdD9QQihuLmRlZmF1bHQsbSk6bS5Db21wb25lbnQscm91dGU6bS5yb3V0ZSxyZW5kZXJLZXk6d3x8dm9pZCAwLHRyYWNrUm9vdE5vZGVzOmgsdm5vZGVSZWY6c307aWYoIXgpcmV0dXJuIEZlKFRCLFMpO2NvbnN0IGs9bS5Db21wb25lbnQudHlwZSxUPWs7bGV0IEM9V2guZ2V0KFQpO3JldHVybiBDfHwoQz1OdyhrLm5hbWV8fGsuX19uYW1lKSxXaC5zZXQoVCxDKSksRmUoQyxTKX19KSkpLmRlZmF1bHQoKSx1fX0pfX0pO2Z1bmN0aW9uIEFCKGUsdCxuKXtpZighZSlyZXR1cm4hMTtjb25zdCByPXQubWF0Y2hlZC5maW5kSW5kZXgobz0+by5jb21wb25lbnRzPy5kZWZhdWx0PT09bj8udHlwZSk7cmV0dXJuIXJ8fHI9PT0tMT8hMTp0Lm1hdGNoZWQuc2xpY2UoMCxyKS5zb21lKChvLHMpPT5vLmNvbXBvbmVudHM/LmRlZmF1bHQhPT1lLm1hdGNoZWRbc10/LmNvbXBvbmVudHM/LmRlZmF1bHQpfHxuJiZUdSh7cm91dGU6dCxDb21wb25lbnQ6bn0pIT09VHUoe3JvdXRlOmUsQ29tcG9uZW50Om59KX1mdW5jdGlvbiBPQihlLHQsbil7cmV0dXJuIGU/dC5tYXRjaGVkLmZpbmRJbmRleChvPT5vLmNvbXBvbmVudHM/LmRlZmF1bHQ9PT1uPy50eXBlKTx0Lm1hdGNoZWQubGVuZ3RoLTE6ITF9ZnVuY3Rpb24gUEIoZSx0KXtjb25zdCBuPWUodCk7cmV0dXJuIG4ubGVuZ3RoPT09MT9GZShuWzBdKTpGZShHZSx2b2lkIDAsbil9Y29uc3QgRHc9dHYsSUI9c2Uoe25hbWU6IkxheW91dExvYWRlciIsaW5oZXJpdEF0dHJzOiExLHByb3BzOntuYW1lOlN0cmluZyxsYXlvdXRQcm9wczpPYmplY3R9LHNldHVwKGUsdCl7cmV0dXJuKCk9PkZlKG9vW2UubmFtZV0sZS5sYXlvdXRQcm9wcyx0LnNsb3RzKX19KSxSQj17bmFtZTp7dHlwZTpbU3RyaW5nLEJvb2xlYW4sT2JqZWN0XSxkZWZhdWx0Om51bGx9LGZhbGxiYWNrOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0Om51bGx9fSxOQj1zZSh7bmFtZToiTnV4dExheW91dCIsaW5oZXJpdEF0dHJzOiExLHByb3BzOlJCLHNldHVwKGUsdCl7Y29uc3Qgbj1CZSgpLHI9S2UocW8pLHM9IXJ8fHI9PT1BbCgpP2F2KCk6cixpPU4oKCk9PntsZXQgYz1nKGUubmFtZSk/P3M/Lm1ldGEubGF5b3V0Pz9EdyhzPy5wYXRoKS5hcHBMYXlvdXQ/PyJkZWZhdWx0IjtyZXR1cm4gYyYmIShjIGluIG9vKSYmZS5mYWxsYmFjayYmKGM9ZyhlLmZhbGxiYWNrKSksY30pLGE9T2UoKTt0LmV4cG9zZSh7bGF5b3V0UmVmOmF9KTtjb25zdCBsPW4uZGVmZXJIeWRyYXRpb24oKTtpZihuLmlzSHlkcmF0aW5nKXtjb25zdCBjPW4uaG9va3MuaG9va09uY2UoImFwcDplcnJvciIsbCk7SnQoKS5iZWZvcmVFYWNoKGMpfWxldCB1O3JldHVybigpPT57Y29uc3QgZj0hIWkudmFsdWUmJmkudmFsdWUgaW4gb28mJiEhKHM/Lm1ldGEubGF5b3V0VHJhbnNpdGlvbj8/QXApLGQ9ZiYmeHYoW3M/Lm1ldGEubGF5b3V0VHJhbnNpdGlvbixBcCx7b25CZWZvcmVMZWF2ZSgpe25bIn50cmFuc2l0aW9uUHJvbWlzZSJdPW5ldyBQcm9taXNlKG09PntuWyJ+dHJhbnNpdGlvbkZpbmlzaCJdPW19KX0sb25BZnRlckxlYXZlKCl7blsifnRyYW5zaXRpb25GaW5pc2giXT8uKCksZGVsZXRlIG5bIn50cmFuc2l0aW9uRmluaXNoIl0sZGVsZXRlIG5bIn50cmFuc2l0aW9uUHJvbWlzZSJdfX1dKSxwPXU7cmV0dXJuIHU9aS52YWx1ZSx3dihkLHtkZWZhdWx0OigpPT5GZShDZix7c3VzcGVuc2libGU6ITAsb25SZXNvbHZlOmFzeW5jKCk9Pnthd2FpdCBpdChsKX19LHtkZWZhdWx0OigpPT5GZShEQix7bGF5b3V0UHJvcHM6ZmUodC5hdHRycyxzLm1ldGEubGF5b3V0UHJvcHM/P3t9LHtyZWY6YX0pLGtleTppLnZhbHVlfHx2b2lkIDAsbmFtZTppLnZhbHVlLHNob3VsZFByb3ZpZGU6IWUubmFtZSxpc1JlbmRlcmluZ05ld0xheW91dDptPT5tIT09cCYmbT09PWkudmFsdWUsaGFzVHJhbnNpdGlvbjpmfSx0LnNsb3RzKX0pfSkuZGVmYXVsdCgpfX19KSxEQj1zZSh7bmFtZToiTnV4dExheW91dFByb3ZpZGVyIixpbmhlcml0QXR0cnM6ITEscHJvcHM6e25hbWU6e3R5cGU6W1N0cmluZyxCb29sZWFuXX0sbGF5b3V0UHJvcHM6e3R5cGU6T2JqZWN0fSxoYXNUcmFuc2l0aW9uOnt0eXBlOkJvb2xlYW59LHNob3VsZFByb3ZpZGU6e3R5cGU6Qm9vbGVhbn0saXNSZW5kZXJpbmdOZXdMYXlvdXQ6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITB9fSxzZXR1cChlLHQpe2NvbnN0IG49ZS5uYW1lO2Uuc2hvdWxkUHJvdmlkZSYmTnQoankse2lzQ3VycmVudDpzPT5uPT09ITF8fG49PT0ocy5tZXRhLmxheW91dD8/RHcocy5wYXRoKS5hcHBMYXlvdXQ/PyJkZWZhdWx0Iil9KTtjb25zdCByPUtlKHFvKTtpZihyJiZyPT09QWwoKSl7Y29uc3Qgcz1hdigpLGk9e307Zm9yKGNvbnN0IGEgaW4gcyl7Y29uc3QgbD1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGwse2VudW1lcmFibGU6ITAsZ2V0OigpPT5lLmlzUmVuZGVyaW5nTmV3TGF5b3V0KGUubmFtZSk/c1tsXTpyW2xdfSl9TnQocW8sUG4oaSkpfXJldHVybigpPT4hbnx8dHlwZW9mIG49PSJzdHJpbmciJiYhKG4gaW4gb28pP3Quc2xvdHMuZGVmYXVsdD8uKCk6RmUoSUIse2tleTpuLGxheW91dFByb3BzOmUubGF5b3V0UHJvcHMsbmFtZTpufSx0LnNsb3RzKX19KSxMQj17c2xvdHM6e3Jvb3Q6ImdhcC0yIixiYXNlOiJyZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLWFjY2VudGVkIixpbmRpY2F0b3I6InJvdW5kZWQtZnVsbCBzaXplLWZ1bGwgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwIGVhc2Utb3V0IixzdGF0dXM6ImZsZXggdGV4dC1kaW1tZWQgdHJhbnNpdGlvbi1bd2lkdGhdIGR1cmF0aW9uLTIwMCIsc3RlcHM6ImdyaWQgaXRlbXMtZW5kIixzdGVwOiJ0cnVuY2F0ZSB0ZXh0LWVuZCByb3ctc3RhcnQtMSBjb2wtc3RhcnQtMSB0cmFuc2l0aW9uLW9wYWNpdHkifSx2YXJpYW50czp7YW5pbWF0aW9uOntjYXJvdXNlbDoiIiwiY2Fyb3VzZWwtaW52ZXJzZSI6IiIsc3dpbmc6IiIsZWxhc3RpYzoiIn0sY29sb3I6e3ByaW1hcnk6e2luZGljYXRvcjoiYmctcHJpbWFyeSIsc3RlcHM6InRleHQtcHJpbWFyeSJ9LHNlY29uZGFyeTp7aW5kaWNhdG9yOiJiZy1zZWNvbmRhcnkiLHN0ZXBzOiJ0ZXh0LXNlY29uZGFyeSJ9LHN1Y2Nlc3M6e2luZGljYXRvcjoiYmctc3VjY2VzcyIsc3RlcHM6InRleHQtc3VjY2VzcyJ9LGluZm86e2luZGljYXRvcjoiYmctaW5mbyIsc3RlcHM6InRleHQtaW5mbyJ9LHdhcm5pbmc6e2luZGljYXRvcjoiYmctd2FybmluZyIsc3RlcHM6InRleHQtd2FybmluZyJ9LGVycm9yOntpbmRpY2F0b3I6ImJnLWVycm9yIixzdGVwczoidGV4dC1lcnJvciJ9LG5ldXRyYWw6e2luZGljYXRvcjoiYmctaW52ZXJ0ZWQiLHN0ZXBzOiJ0ZXh0LWludmVydGVkIn19LHNpemU6eyIyeHMiOntzdGF0dXM6InRleHQteHMiLHN0ZXBzOiJ0ZXh0LXhzIn0seHM6e3N0YXR1czoidGV4dC14cyIsc3RlcHM6InRleHQteHMifSxzbTp7c3RhdHVzOiJ0ZXh0LXNtIixzdGVwczoidGV4dC1zbSJ9LG1kOntzdGF0dXM6InRleHQtc20iLHN0ZXBzOiJ0ZXh0LXNtIn0sbGc6e3N0YXR1czoidGV4dC1zbSIsc3RlcHM6InRleHQtc20ifSx4bDp7c3RhdHVzOiJ0ZXh0LWJhc2UiLHN0ZXBzOiJ0ZXh0LWJhc2UifSwiMnhsIjp7c3RhdHVzOiJ0ZXh0LWJhc2UiLHN0ZXBzOiJ0ZXh0LWJhc2UifX0sc3RlcDp7YWN0aXZlOntzdGVwOiJvcGFjaXR5LTEwMCJ9LGZpcnN0OntzdGVwOiJvcGFjaXR5LTEwMCB0ZXh0LW11dGVkIn0sb3RoZXI6e3N0ZXA6Im9wYWNpdHktMCJ9LGxhc3Q6e3N0ZXA6IiJ9fSxvcmllbnRhdGlvbjp7aG9yaXpvbnRhbDp7cm9vdDoidy1mdWxsIGZsZXggZmxleC1jb2wiLGJhc2U6InctZnVsbCIsc3RhdHVzOiJmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgbWluLXctZml0In0sdmVydGljYWw6e3Jvb3Q6ImgtZnVsbCBmbGV4IGZsZXgtcm93LXJldmVyc2UiLGJhc2U6ImgtZnVsbCIsc3RhdHVzOiJmbGV4LWNvbCBqdXN0aWZ5LWVuZCBtaW4taC1maXQifX0saW52ZXJ0ZWQ6e3RydWU6e3N0YXR1czoic2VsZi1lbmQifX19LGNvbXBvdW5kVmFyaWFudHM6W3tpbnZlcnRlZDohMCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsY2xhc3M6e3N0ZXA6InRleHQtc3RhcnQiLHN0YXR1czoiZmxleC1yb3ctcmV2ZXJzZSJ9fSx7aW52ZXJ0ZWQ6ITAsb3JpZW50YXRpb246InZlcnRpY2FsIixjbGFzczp7c3RlcHM6Iml0ZW1zLXN0YXJ0IixzdGF0dXM6ImZsZXgtY29sLXJldmVyc2UifX0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiIyeHMiLGNsYXNzOiJoLXB4In0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJ4cyIsY2xhc3M6ImgtMC41In0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJzbSIsY2xhc3M6ImgtMSJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToibWQiLGNsYXNzOiJoLTIifSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLHNpemU6ImxnIixjbGFzczoiaC0zIn0se29yaWVudGF0aW9uOiJob3Jpem9udGFsIixzaXplOiJ4bCIsY2xhc3M6ImgtNCJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsc2l6ZToiMnhsIixjbGFzczoiaC01In0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToiMnhzIixjbGFzczoidy1weCJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6InhzIixjbGFzczoidy0wLjUifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJzbSIsY2xhc3M6InctMSJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6Im1kIixjbGFzczoidy0yIn0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsc2l6ZToibGciLGNsYXNzOiJ3LTMifSx7b3JpZW50YXRpb246InZlcnRpY2FsIixzaXplOiJ4bCIsY2xhc3M6InctNCJ9LHtvcmllbnRhdGlvbjoidmVydGljYWwiLHNpemU6IjJ4bCIsY2xhc3M6InctNSJ9LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsYW5pbWF0aW9uOiJjYXJvdXNlbCIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bY2Fyb3VzZWxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIGRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOnJ0bDphbmltYXRlLVtjYXJvdXNlbC1ydGxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGFuaW1hdGlvbjoiY2Fyb3VzZWwiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoiY2Fyb3VzZWwtaW52ZXJzZSIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bY2Fyb3VzZWwtaW52ZXJzZV8yc19lYXNlLWluLW91dF9pbmZpbml0ZV0gZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06cnRsOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2UtcnRsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246InZlcnRpY2FsIixhbmltYXRpb246ImNhcm91c2VsLWludmVyc2UiLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW2Nhcm91c2VsLWludmVyc2UtdmVydGljYWxfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIsYW5pbWF0aW9uOiJzd2luZyIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bc3dpbmdfMnNfZWFzZS1pbi1vdXRfaW5maW5pdGVdIn19LHtvcmllbnRhdGlvbjoidmVydGljYWwiLGFuaW1hdGlvbjoic3dpbmciLGNsYXNzOntpbmRpY2F0b3I6ImRhdGEtW3N0YXRlPWluZGV0ZXJtaW5hdGVdOmFuaW1hdGUtW3N3aW5nLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fSx7b3JpZW50YXRpb246Imhvcml6b250YWwiLGFuaW1hdGlvbjoiZWxhc3RpYyIsY2xhc3M6e2luZGljYXRvcjoiZGF0YS1bc3RhdGU9aW5kZXRlcm1pbmF0ZV06YW5pbWF0ZS1bZWxhc3RpY18yc19lYXNlLWluLW91dF9pbmZpbml0ZV0ifX0se29yaWVudGF0aW9uOiJ2ZXJ0aWNhbCIsYW5pbWF0aW9uOiJlbGFzdGljIixjbGFzczp7aW5kaWNhdG9yOiJkYXRhLVtzdGF0ZT1pbmRldGVybWluYXRlXTphbmltYXRlLVtlbGFzdGljLXZlcnRpY2FsXzJzX2Vhc2UtaW4tb3V0X2luZmluaXRlXSJ9fV0sZGVmYXVsdFZhcmlhbnRzOnthbmltYXRpb246ImNhcm91c2VsIixjb2xvcjoicHJpbWFyeSIsc2l6ZToibWQifX0sJEI9e19fbmFtZToiVVByb2dyZXNzIixwcm9wczp7YXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbWF4Ont0eXBlOltOdW1iZXIsQXJyYXldLHJlcXVpcmVkOiExfSxzdGF0dXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0saW52ZXJ0ZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxzaXplOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoiaG9yaXpvbnRhbCJ9LGFuaW1hdGlvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjbGFzczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1aTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGdldFZhbHVlTGFiZWw6e3R5cGU6RnVuY3Rpb24scmVxdWlyZWQ6ITF9LGdldFZhbHVlVGV4dDp7dHlwZTpGdW5jdGlvbixyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpbTnVtYmVyLG51bGxdLHJlcXVpcmVkOiExLGRlZmF1bHQ6bnVsbH19LGVtaXRzOlsidXBkYXRlOm1vZGVsVmFsdWUiLCJ1cGRhdGU6bWF4Il0sc2V0dXAoZSx7ZW1pdDp0fSl7Y29uc3Qgbj1lLHI9dCxvPXpyKCkse2RpcjpzfT1RbCgpLGk9U3QoKSxhPUxuKCJwcm9ncmVzcyIsbiksbD0kcyhWcihuLCJnZXRWYWx1ZUxhYmVsIiwiZ2V0VmFsdWVUZXh0IiwibW9kZWxWYWx1ZSIpLHIpLHU9TigoKT0+bC52YWx1ZS5tb2RlbFZhbHVlPT09bnVsbCksYz1OKCgpPT5BcnJheS5pc0FycmF5KG4ubWF4KSksZj1OKCgpPT57aWYoISh1LnZhbHVlfHwhbi5tYXgpKXJldHVybiBBcnJheS5pc0FycmF5KG4ubWF4KT9uLm1heC5sZW5ndGgtMTpOdW1iZXIobi5tYXgpfSksZD1OKCgpPT57aWYoIXUudmFsdWUpc3dpdGNoKCEwKXtjYXNlIGwudmFsdWUubW9kZWxWYWx1ZTwwOnJldHVybiAwO2Nhc2UgbC52YWx1ZS5tb2RlbFZhbHVlPihmLnZhbHVlPz8xMDApOnJldHVybiAxMDA7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZChsLnZhbHVlLm1vZGVsVmFsdWUvKGYudmFsdWU/PzEwMCkqMTAwKX19KSxwPU4oKCk9PntpZihkLnZhbHVlIT09dm9pZCAwKXJldHVybiBuLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIj97dHJhbnNmb3JtOmB0cmFuc2xhdGVZKCR7bi5pbnZlcnRlZD8iIjoiLSJ9JHsxMDAtZC52YWx1ZX0lKWB9OnMudmFsdWU9PT0icnRsIj97dHJhbnNmb3JtOmB0cmFuc2xhdGVYKCR7bi5pbnZlcnRlZD8iLSI6IiJ9JHsxMDAtZC52YWx1ZX0lKWB9Ont0cmFuc2Zvcm06YHRyYW5zbGF0ZVgoJHtuLmludmVydGVkPyIiOiItIn0kezEwMC1kLnZhbHVlfSUpYH19KSxtPU4oKCk9Pntjb25zdCBiPWAke01hdGgubWF4KGQudmFsdWU/PzAsMCl9JWA7cmV0dXJuIG4ub3JpZW50YXRpb249PT0idmVydGljYWwiP3toZWlnaHQ6Yn06e3dpZHRoOmJ9fSk7ZnVuY3Rpb24geShiKXtyZXR1cm4gYj09PU51bWJlcihuLm1vZGVsVmFsdWUpfWZ1bmN0aW9uIF8oYil7cmV0dXJuIGI9PT0wfWZ1bmN0aW9uIHcoYil7cmV0dXJuIGI9PT1mLnZhbHVlfWZ1bmN0aW9uIHYoYil7cmV0dXJuIGI9TnVtYmVyKGIpLHkoYikmJiFfKGIpPyJhY3RpdmUiOl8oYikmJnkoYik/ImZpcnN0Ijp3KGIpJiZ5KGIpPyJsYXN0Ijoib3RoZXIifWNvbnN0IGg9TigoKT0+dXQoe2V4dGVuZDp1dChMQiksLi4uaS51aT8ucHJvZ3Jlc3N8fHt9fSkoe2FuaW1hdGlvbjpuLmFuaW1hdGlvbixzaXplOm4uc2l6ZSxjb2xvcjpuLmNvbG9yLG9yaWVudGF0aW9uOm4ub3JpZW50YXRpb24saW52ZXJ0ZWQ6bi5pbnZlcnRlZH0pKTtyZXR1cm4oYix4KT0+KFIoKSwkKGcoTWUpLHthczplLmFzLCJkYXRhLW9yaWVudGF0aW9uIjplLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczp1ZShoLnZhbHVlLnJvb3Qoe2NsYXNzOltnKGEpPy5yb290LG4uY2xhc3NdfSkpfSx7ZGVmYXVsdDpNKCgpPT5bIXUudmFsdWUmJihlLnN0YXR1c3x8by5zdGF0dXMpPyhSKCksX2UoImRpdiIse2tleTowLCJkYXRhLXNsb3QiOiJzdGF0dXMiLGNsYXNzOnVlKGgudmFsdWUuc3RhdHVzKHtjbGFzczpnKGEpPy5zdGF0dXN9KSksc3R5bGU6Um4obS52YWx1ZSl9LFtVKGIuJHNsb3RzLCJzdGF0dXMiLHtwZXJjZW50OmQudmFsdWV9LCgpPT5bc3QocnQoZC52YWx1ZSkrIiUgIiwxKV0pXSw2KSk6ZGUoIiIsITApLHJlKGcoTTIpLGZlKGcobCkse21heDpmLnZhbHVlLCJkYXRhLXNsb3QiOiJiYXNlIixjbGFzczpoLnZhbHVlLmJhc2Uoe2NsYXNzOmcoYSk/LmJhc2V9KSxzdHlsZTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVaKDApIn19KSx7ZGVmYXVsdDpNKCgpPT5bcmUoZyhxMikseyJkYXRhLXNsb3QiOiJpbmRpY2F0b3IiLGNsYXNzOnVlKGgudmFsdWUuaW5kaWNhdG9yKHtjbGFzczpnKGEpPy5pbmRpY2F0b3J9KSksc3R5bGU6Um4ocC52YWx1ZSl9LG51bGwsOCxbImNsYXNzIiwic3R5bGUiXSldKSxfOjF9LDE2LFsibWF4IiwiY2xhc3MiXSksYy52YWx1ZT8oUigpLF9lKCJkaXYiLHtrZXk6MSwiZGF0YS1zbG90Ijoic3RlcHMiLGNsYXNzOnVlKGgudmFsdWUuc3RlcHMoe2NsYXNzOmcoYSk/LnN0ZXBzfSkpfSxbKFIoITApLF9lKEdlLG51bGwsdXIoZS5tYXgsKFMsayk9PihSKCksX2UoImRpdiIse2tleTprLCJkYXRhLXNsb3QiOiJzdGVwIixjbGFzczp1ZShoLnZhbHVlLnN0ZXAoe2NsYXNzOmcoYSk/LnN0ZXAsc3RlcDp2KGspfSkpfSxbVShiLiRzbG90cyxgc3RlcC0ke2t9YCx7c3RlcDpTfSwoKT0+W3N0KHJ0KFMpLDEpXSldLDIpKSksMTI4KSldLDIpKTpkZSgiIiwhMCldKSxfOjN9LDgsWyJhcyIsImRhdGEtb3JpZW50YXRpb24iLCJjbGFzcyJdKSl9fSxNQj17c2xvdHM6e3Jvb3Q6InJlbGF0aXZlIGdyb3VwIG92ZXJmbG93LWhpZGRlbiBiZy1kZWZhdWx0IHNoYWRvdy1sZyByb3VuZGVkLWxnIHJpbmcgcmluZy1kZWZhdWx0IHAtNCBmbGV4IGdhcC0yLjUgZm9jdXM6b3V0bGluZS1ub25lIix3cmFwcGVyOiJ3LTAgZmxleC0xIGZsZXggZmxleC1jb2wiLHRpdGxlOiJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtaGlnaGxpZ2h0ZWQiLGRlc2NyaXB0aW9uOiJ0ZXh0LXNtIHRleHQtbXV0ZWQiLGljb246InNocmluay0wIHNpemUtNSIsYXZhdGFyOiJzaHJpbmstMCIsYXZhdGFyU2l6ZToiMnhsIixhY3Rpb25zOiJmbGV4IGdhcC0xLjUgc2hyaW5rLTAiLHByb2dyZXNzOiJhYnNvbHV0ZSBpbnNldC14LTAgYm90dG9tLTAiLGNsb3NlOiJwLTAifSx2YXJpYW50czp7Y29sb3I6e3ByaW1hcnk6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeSIsaWNvbjoidGV4dC1wcmltYXJ5In0sc2Vjb25kYXJ5Ontyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXNlY29uZGFyeSIsaWNvbjoidGV4dC1zZWNvbmRhcnkifSxzdWNjZXNzOntyb290OiJmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctaW5zZXQgZm9jdXMtdmlzaWJsZTpyaW5nLXN1Y2Nlc3MiLGljb246InRleHQtc3VjY2VzcyJ9LGluZm86e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW5mbyIsaWNvbjoidGV4dC1pbmZvIn0sd2FybmluZzp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy13YXJuaW5nIixpY29uOiJ0ZXh0LXdhcm5pbmcifSxlcnJvcjp7cm9vdDoiZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWluc2V0IGZvY3VzLXZpc2libGU6cmluZy1lcnJvciIsaWNvbjoidGV4dC1lcnJvciJ9LG5ldXRyYWw6e3Jvb3Q6ImZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1pbnNldCBmb2N1cy12aXNpYmxlOnJpbmctaW52ZXJ0ZWQiLGljb246InRleHQtaGlnaGxpZ2h0ZWQifX0sb3JpZW50YXRpb246e2hvcml6b250YWw6e3Jvb3Q6Iml0ZW1zLWNlbnRlciIsYWN0aW9uczoiaXRlbXMtY2VudGVyIn0sdmVydGljYWw6e3Jvb3Q6Iml0ZW1zLXN0YXJ0IixhY3Rpb25zOiJpdGVtcy1zdGFydCBtdC0yLjUifX0sdGl0bGU6e3RydWU6e2Rlc2NyaXB0aW9uOiJtdC0xIn19fSxkZWZhdWx0VmFyaWFudHM6e2NvbG9yOiJwcmltYXJ5In19LEJCPXtfX25hbWU6IlVUb2FzdCIscHJvcHM6e2FzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHRpdGxlOnt0eXBlOltTdHJpbmcsT2JqZWN0LEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sZGVzY3JpcHRpb246e3R5cGU6W1N0cmluZyxPYmplY3QsRnVuY3Rpb25dLHJlcXVpcmVkOiExfSxpY29uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGF2YXRhcjp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGNvbG9yOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDoidmVydGljYWwifSxjbG9zZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsb3NlSWNvbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhY3Rpb25zOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxwcm9ncmVzczp7dHlwZTpbQm9vbGVhbixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfX0sZW1pdHM6WyJlc2NhcGVLZXlEb3duIiwicGF1c2UiLCJyZXN1bWUiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwic3dpcGVDYW5jZWwiLCJzd2lwZUVuZCIsInVwZGF0ZTpvcGVuIl0sc2V0dXAoZSx7ZXhwb3NlOnQsZW1pdDpufSl7Y29uc3Qgcj1lLG89bixzPXpyKCkse3Q6aX09UWwoKSxhPVN0KCksbD1MbigidG9hc3QiLHIpLHU9JHMoVnIociwiYXMiLCJkZWZhdWx0T3BlbiIsIm9wZW4iLCJkdXJhdGlvbiIsInR5cGUiKSxvKSxjPU4oKCk9PnV0KHtleHRlbmQ6dXQoTUIpLC4uLmEudWk/LnRvYXN0fHx7fX0pKHtjb2xvcjpyLmNvbG9yLG9yaWVudGF0aW9uOnIub3JpZW50YXRpb24sdGl0bGU6ISFyLnRpdGxlfHwhIXMudGl0bGV9KSksZj1Tcygicm9vdFJlZiIpLGQ9RygwKTtyZXR1cm4gb3QoKCk9PntmLnZhbHVlPy4kZWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKGQudmFsdWU9Zi52YWx1ZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KX0pLHQoe2hlaWdodDpkfSksKHAsbSk9PihSKCksJChnKGVEKSxmZSh7cmVmX2tleToicm9vdFJlZiIscmVmOmZ9LGcodSkseyJkYXRhLW9yaWVudGF0aW9uIjplLm9yaWVudGF0aW9uLCJkYXRhLXNsb3QiOiJyb290IixjbGFzczpjLnZhbHVlLnJvb3Qoe2NsYXNzOltnKGwpPy5yb290LHIuY2xhc3NdfSksc3R5bGU6eyItLWhlaWdodCI6ZC52YWx1ZX19KSx7ZGVmYXVsdDpNKCh7cmVtYWluaW5nOnksZHVyYXRpb246XyxvcGVuOnd9KT0+W1UocC4kc2xvdHMsImxlYWRpbmciLHt1aTpjLnZhbHVlfSwoKT0+W2UuYXZhdGFyPyhSKCksJChVbyxmZSh7a2V5OjAsc2l6ZTpnKGwpPy5hdmF0YXJTaXplfHxjLnZhbHVlLmF2YXRhclNpemUoKX0sZS5hdmF0YXIseyJkYXRhLXNsb3QiOiJhdmF0YXIiLGNsYXNzOmMudmFsdWUuYXZhdGFyKHtjbGFzczpnKGwpPy5hdmF0YXJ9KX0pLG51bGwsMTYsWyJzaXplIiwiY2xhc3MiXSkpOmUuaWNvbj8oUigpLCQoX24se2tleToxLG5hbWU6ZS5pY29uLCJkYXRhLXNsb3QiOiJpY29uIixjbGFzczp1ZShjLnZhbHVlLmljb24oe2NsYXNzOmcobCk/Lmljb259KSl9LG51bGwsOCxbIm5hbWUiLCJjbGFzcyJdKSk6ZGUoIiIsITApXSksd3QoImRpdiIseyJkYXRhLXNsb3QiOiJ3cmFwcGVyIixjbGFzczp1ZShjLnZhbHVlLndyYXBwZXIoe2NsYXNzOmcobCk/LndyYXBwZXJ9KSl9LFtlLnRpdGxlfHxzLnRpdGxlPyhSKCksJChnKG5EKSx7a2V5OjAsImRhdGEtc2xvdCI6InRpdGxlIixjbGFzczp1ZShjLnZhbHVlLnRpdGxlKHtjbGFzczpnKGwpPy50aXRsZX0pKX0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsInRpdGxlIix7fSwoKT0+W3R5cGVvZiBlLnRpdGxlPT0iZnVuY3Rpb24iPyhSKCksJChGbihlLnRpdGxlKCkpLHtrZXk6MH0pKTp0eXBlb2YgZS50aXRsZT09Im9iamVjdCI/KFIoKSwkKEZuKGUudGl0bGUpLHtrZXk6MX0pKTooUigpLF9lKEdlLHtrZXk6Mn0sW3N0KHJ0KGUudGl0bGUpLDEpXSw2NCkpXSldKSxfOjN9LDgsWyJjbGFzcyJdKSk6ZGUoIiIsITApLGUuZGVzY3JpcHRpb258fHMuZGVzY3JpcHRpb24/KFIoKSwkKGcoWU4pLHtrZXk6MSwiZGF0YS1zbG90IjoiZGVzY3JpcHRpb24iLGNsYXNzOnVlKGMudmFsdWUuZGVzY3JpcHRpb24oe2NsYXNzOmcobCk/LmRlc2NyaXB0aW9ufSkpfSx7ZGVmYXVsdDpNKCgpPT5bVShwLiRzbG90cywiZGVzY3JpcHRpb24iLHt9LCgpPT5bdHlwZW9mIGUuZGVzY3JpcHRpb249PSJmdW5jdGlvbiI/KFIoKSwkKEZuKGUuZGVzY3JpcHRpb24oKSkse2tleTowfSkpOnR5cGVvZiBlLmRlc2NyaXB0aW9uPT0ib2JqZWN0Ij8oUigpLCQoRm4oZS5kZXNjcmlwdGlvbikse2tleToxfSkpOihSKCksX2UoR2Use2tleToyfSxbc3QocnQoZS5kZXNjcmlwdGlvbiksMSldLDY0KSldKV0pLF86M30sOCxbImNsYXNzIl0pKTpkZSgiIiwhMCksZS5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJihlLmFjdGlvbnM/Lmxlbmd0aHx8cy5hY3Rpb25zKT8oUigpLF9lKCJkaXYiLHtrZXk6MiwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6dWUoYy52YWx1ZS5hY3Rpb25zKHtjbGFzczpnKGwpPy5hY3Rpb25zfSkpfSxbVShwLiRzbG90cywiYWN0aW9ucyIse30sKCk9PlsoUighMCksX2UoR2UsbnVsbCx1cihlLmFjdGlvbnMsKHYsaCk9PihSKCksJChnKHNoKSx7a2V5OmgsImFsdC10ZXh0Ijp2LmxhYmVsfHwiQWN0aW9uIiwiYXMtY2hpbGQiOiIiLG9uQ2xpY2s6bVswXXx8KG1bMF09UnIoKCk9Pnt9LFsic3RvcCJdKSl9LHtkZWZhdWx0Ok0oKCk9PltyZShOcixmZSh7c2l6ZToieHMiLGNvbG9yOmUuY29sb3J9LHtyZWZfZm9yOiEwfSx2KSxudWxsLDE2LFsiY29sb3IiXSldKSxfOjJ9LDEwMzIsWyJhbHQtdGV4dCJdKSkpLDEyOCkpXSldLDIpKTpkZSgiIiwhMCldLDIpLGUub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJihlLmFjdGlvbnM/Lmxlbmd0aHx8cy5hY3Rpb25zKXx8ZS5jbG9zZT8oUigpLF9lKCJkaXYiLHtrZXk6MCwiZGF0YS1zbG90IjoiYWN0aW9ucyIsY2xhc3M6dWUoYy52YWx1ZS5hY3Rpb25zKHtjbGFzczpnKGwpPy5hY3Rpb25zLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIn0pKX0sW2Uub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJihlLmFjdGlvbnM/Lmxlbmd0aHx8cy5hY3Rpb25zKT9VKHAuJHNsb3RzLCJhY3Rpb25zIix7a2V5OjB9LCgpPT5bKFIoITApLF9lKEdlLG51bGwsdXIoZS5hY3Rpb25zLCh2LGgpPT4oUigpLCQoZyhzaCkse2tleTpoLCJhbHQtdGV4dCI6di5sYWJlbHx8IkFjdGlvbiIsImFzLWNoaWxkIjoiIixvbkNsaWNrOm1bMV18fChtWzFdPVJyKCgpPT57fSxbInN0b3AiXSkpfSx7ZGVmYXVsdDpNKCgpPT5bcmUoTnIsZmUoe3NpemU6InhzIixjb2xvcjplLmNvbG9yfSx7cmVmX2ZvcjohMH0sdiksbnVsbCwxNixbImNvbG9yIl0pXSksXzoyfSwxMDMyLFsiYWx0LXRleHQiXSkpKSwxMjgpKV0pOmRlKCIiLCEwKSxlLmNsb3NlfHxzLmNsb3NlPyhSKCksJChnKEkwKSx7a2V5OjEsImFzLWNoaWxkIjoiIn0se2RlZmF1bHQ6TSgoKT0+W1UocC4kc2xvdHMsImNsb3NlIix7dWk6Yy52YWx1ZX0sKCk9PltlLmNsb3NlPyhSKCksJChOcixmZSh7a2V5OjAsaWNvbjplLmNsb3NlSWNvbnx8ZyhhKS51aS5pY29ucy5jbG9zZSxjb2xvcjoibmV1dHJhbCIsdmFyaWFudDoibGluayIsImFyaWEtbGFiZWwiOmcoaSkoInRvYXN0LmNsb3NlIil9LHR5cGVvZiBlLmNsb3NlPT0ib2JqZWN0Ij9lLmNsb3NlOnt9LHsiZGF0YS1zbG90IjoiY2xvc2UiLGNsYXNzOmMudmFsdWUuY2xvc2Uoe2NsYXNzOmcobCk/LmNsb3NlfSksb25DbGljazptWzJdfHwobVsyXT1ScigoKT0+e30sWyJzdG9wIl0pKX0pLG51bGwsMTYsWyJpY29uIiwiYXJpYS1sYWJlbCIsImNsYXNzIl0pKTpkZSgiIiwhMCldKV0pLF86M30pKTpkZSgiIiwhMCldLDIpKTpkZSgiIiwhMCksZS5wcm9ncmVzcyYmdyYmeT4wJiZfPyhSKCksJCgkQixmZSh7a2V5OjEsIm1vZGVsLXZhbHVlIjp5L18qMTAwLGNvbG9yOmUuY29sb3J9LHR5cGVvZiBlLnByb2dyZXNzPT0ib2JqZWN0Ij9lLnByb2dyZXNzOnt9LHtzaXplOiJzbSIsImRhdGEtc2xvdCI6InByb2dyZXNzIixjbGFzczpjLnZhbHVlLnByb2dyZXNzKHtjbGFzczpnKGwpPy5wcm9ncmVzc30pfSksbnVsbCwxNixbIm1vZGVsLXZhbHVlIiwiY29sb3IiLCJjbGFzcyJdKSk6ZGUoIiIsITApXSksXzozfSwxNixbImRhdGEtb3JpZW50YXRpb24iLCJjbGFzcyIsInN0eWxlIl0pKX19LHFCPXtzbG90czp7dmlld3BvcnQ6ImZpeGVkIGZsZXggZmxleC1jb2wgdy1bY2FsYygxMDAlLTJyZW0pXSBzbTp3LTk2IHotWzEwMF0gZGF0YS1bZXhwYW5kZWQ9dHJ1ZV06aC0oLS1oZWlnaHQpIGZvY3VzOm91dGxpbmUtbm9uZSIsYmFzZToicG9pbnRlci1ldmVudHMtYXV0byBhYnNvbHV0ZSBpbnNldC14LTAgei0oLS1pbmRleCkgdHJhbnNmb3JtLSgtLXRyYW5zZm9ybSkgZGF0YS1bZXhwYW5kZWQ9ZmFsc2VdOmRhdGEtW2Zyb250PWZhbHNlXTpoLSgtLWZyb250LWhlaWdodCkgZGF0YS1bZXhwYW5kZWQ9ZmFsc2VdOmRhdGEtW2Zyb250PWZhbHNlXToqOm9wYWNpdHktMCBkYXRhLVtmcm9udD1mYWxzZV06Kjp0cmFuc2l0aW9uLW9wYWNpdHkgZGF0YS1bZnJvbnQ9ZmFsc2VdOio6ZHVyYXRpb24tMTAwIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1bdG9hc3QtY2xvc2VkXzIwMG1zX2Vhc2UtaW4tb3V0XSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmRhdGEtW2V4cGFuZGVkPWZhbHNlXTpkYXRhLVtmcm9udD1mYWxzZV06YW5pbWF0ZS1bdG9hc3QtY29sbGFwc2VkLWNsb3NlZF8yMDBtc19lYXNlLWluLW91dF0gZGF0YS1bc3RhdGU9b3Blbl06ZGF0YS1bcHVsc2luZz1vZGRdOmFuaW1hdGUtW3RvYXN0LXB1bHNlLWFfMzAwbXNfZWFzZS1vdXRdIGRhdGEtW3N0YXRlPW9wZW5dOmRhdGEtW3B1bHNpbmc9ZXZlbl06YW5pbWF0ZS1bdG9hc3QtcHVsc2UtYl8zMDBtc19lYXNlLW91dF0gZGF0YS1bc3dpcGU9bW92ZV06dHJhbnNpdGlvbi1ub25lIHRyYW5zaXRpb24tW3RyYW5zZm9ybSx0cmFuc2xhdGUsaGVpZ2h0XSBkdXJhdGlvbi0yMDAgZWFzZS1vdXQifSx2YXJpYW50czp7cG9zaXRpb246eyJ0b3AtbGVmdCI6e3ZpZXdwb3J0OiJsZWZ0LTQifSwidG9wLWNlbnRlciI6e3ZpZXdwb3J0OiJsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiJ9LCJ0b3AtcmlnaHQiOnt2aWV3cG9ydDoicmlnaHQtNCJ9LCJib3R0b20tbGVmdCI6e3ZpZXdwb3J0OiJsZWZ0LTQifSwiYm90dG9tLWNlbnRlciI6e3ZpZXdwb3J0OiJsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiJ9LCJib3R0b20tcmlnaHQiOnt2aWV3cG9ydDoicmlnaHQtNCJ9fSxzd2lwZURpcmVjdGlvbjp7dXA6ImRhdGEtW3N3aXBlPWVuZF06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtdXBfMjAwbXNfZWFzZS1vdXRdIixyaWdodDoiZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLVt0b2FzdC1zbGlkZS1yaWdodF8yMDBtc19lYXNlLW91dF0iLGRvd246ImRhdGEtW3N3aXBlPWVuZF06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtZG93bl8yMDBtc19lYXNlLW91dF0iLGxlZnQ6ImRhdGEtW3N3aXBlPWVuZF06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtbGVmdF8yMDBtc19lYXNlLW91dF0ifX0sY29tcG91bmRWYXJpYW50czpbe3Bvc2l0aW9uOlsidG9wLWxlZnQiLCJ0b3AtY2VudGVyIiwidG9wLXJpZ2h0Il0sY2xhc3M6e3ZpZXdwb3J0OiJ0b3AtNCIsYmFzZToidG9wLTAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1bdG9hc3Qtc2xpZGUtaW4tZnJvbS10b3BfMjAwbXNfZWFzZS1pbi1vdXRdIn19LHtwb3NpdGlvbjpbImJvdHRvbS1sZWZ0IiwiYm90dG9tLWNlbnRlciIsImJvdHRvbS1yaWdodCJdLGNsYXNzOnt2aWV3cG9ydDoiYm90dG9tLTQiLGJhc2U6ImJvdHRvbS0wIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtW3RvYXN0LXNsaWRlLWluLWZyb20tYm90dG9tXzIwMG1zX2Vhc2UtaW4tb3V0XSJ9fSx7c3dpcGVEaXJlY3Rpb246WyJsZWZ0IiwicmlnaHQiXSxjbGFzczoiZGF0YS1bc3dpcGU9bW92ZV06dHJhbnNsYXRlLXgtKC0tcmVrYS10b2FzdC1zd2lwZS1tb3ZlLXgpIGRhdGEtW3N3aXBlPWVuZF06dHJhbnNsYXRlLXgtKC0tcmVrYS10b2FzdC1zd2lwZS1lbmQteCkgZGF0YS1bc3dpcGU9Y2FuY2VsXTp0cmFuc2xhdGUteC0wIn0se3N3aXBlRGlyZWN0aW9uOlsidXAiLCJkb3duIl0sY2xhc3M6ImRhdGEtW3N3aXBlPW1vdmVdOnRyYW5zbGF0ZS15LSgtLXJla2EtdG9hc3Qtc3dpcGUtbW92ZS15KSBkYXRhLVtzd2lwZT1lbmRdOnRyYW5zbGF0ZS15LSgtLXJla2EtdG9hc3Qtc3dpcGUtZW5kLXkpIGRhdGEtW3N3aXBlPWNhbmNlbF06dHJhbnNsYXRlLXktMCJ9XSxkZWZhdWx0VmFyaWFudHM6e3Bvc2l0aW9uOiJib3R0b20tcmlnaHQifX0sRkI9e25hbWU6IlRvYXN0ZXIifSx6Qj1PYmplY3QuYXNzaWduKEZCLHtwcm9wczp7cG9zaXRpb246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZXhwYW5kOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0scHJvZ3Jlc3M6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDohMH0sbWF4Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMSxkZWZhdWx0OjV9LGNsYXNzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sbGFiZWw6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITEsZGVmYXVsdDo1ZTN9LGRpc2FibGVTd2lwZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzd2lwZVRocmVzaG9sZDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtjb25zdCB0PWUse3RvYXN0czpuLHJlbW92ZTpyfT1TZCgpLG89U3QoKSxzPUxuKCJ0b2FzdGVyIix0KTtOdCh2dyx5dCgoKT0+dC5tYXgpKTtjb25zdCBpPXBvKFZyKHQsImR1cmF0aW9uIiwibGFiZWwiLCJzd2lwZVRocmVzaG9sZCIsImRpc2FibGVTd2lwZSIpKSxhPVlsKHl0KCgpPT50LnBvcnRhbCkpLGw9TigoKT0+e3N3aXRjaCh0LnBvc2l0aW9uKXtjYXNlInRvcC1jZW50ZXIiOnJldHVybiJ1cCI7Y2FzZSJ0b3AtcmlnaHQiOmNhc2UiYm90dG9tLXJpZ2h0IjpyZXR1cm4icmlnaHQiO2Nhc2UiYm90dG9tLWNlbnRlciI6cmV0dXJuImRvd24iO2Nhc2UidG9wLWxlZnQiOmNhc2UiYm90dG9tLWxlZnQiOnJldHVybiJsZWZ0In1yZXR1cm4icmlnaHQifSksdT1OKCgpPT51dCh7ZXh0ZW5kOnV0KHFCKSwuLi5vLnVpPy50b2FzdGVyfHx7fX0pKHtwb3NpdGlvbjp0LnBvc2l0aW9uLHN3aXBlRGlyZWN0aW9uOmwudmFsdWV9KSk7ZnVuY3Rpb24gYyh3LHYpe3d8fHIodil9Y29uc3QgZj1HKCExKSxkPU4oKCk9PnQuZXhwYW5kfHxmLnZhbHVlKSxwPUcoW10pLG09TigoKT0+cC52YWx1ZS5yZWR1Y2UoKHcse2hlaWdodDp2fSk9PncrdisxNiwwKSkseT1OKCgpPT5wLnZhbHVlW3AudmFsdWUubGVuZ3RoLTFdPy5oZWlnaHR8fDApO2Z1bmN0aW9uIF8odyl7cmV0dXJuIHAudmFsdWUuc2xpY2UodysxKS5yZWR1Y2UoKHYse2hlaWdodDpofSk9PnYraCsxNiwwKX1yZXR1cm4odyx2KT0+KFIoKSwkKGcoTE4pLGZlKHsic3dpcGUtZGlyZWN0aW9uIjpsLnZhbHVlfSxnKGkpKSx7ZGVmYXVsdDpNKCgpPT5bVSh3LiRzbG90cywiZGVmYXVsdCIpLChSKCEwKSxfZShHZSxudWxsLHVyKGcobiksKGgsYik9PihSKCksJChCQixmZSh7a2V5OmguaWQscmVmX2ZvcjohMCxyZWZfa2V5OiJyZWZzIixyZWY6cCxwcm9ncmVzczplLnByb2dyZXNzfSx7cmVmX2ZvcjohMH0sZyhOMCkoaCxbImlkIiwiY2xvc2UiLCJfZHVwbGljYXRlIiwiX3VwZGF0ZWQiXSkse2Nsb3NlOmguY2xvc2UsImRhdGEtZXhwYW5kZWQiOmQudmFsdWUsImRhdGEtZnJvbnQiOiFkLnZhbHVlJiZiPT09ZyhuKS5sZW5ndGgtMSwiZGF0YS1wdWxzaW5nIjpoLl9kdXBsaWNhdGU/aC5fZHVwbGljYXRlJTI9PT0wPyJldmVuIjoib2RkIjp2b2lkIDAsc3R5bGU6eyItLWluZGV4IjpiLWcobikubGVuZ3RoK2cobikubGVuZ3RoLCItLWJlZm9yZSI6ZyhuKS5sZW5ndGgtMS1iLCItLW9mZnNldCI6XyhiKSwiLS1zY2FsZSI6ZC52YWx1ZT8iMSI6ImNhbGMoMSAtIHZhcigtLWJlZm9yZSkgKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIsIi0tdHJhbnNsYXRlIjpkLnZhbHVlPyJjYWxjKHZhcigtLW9mZnNldCkgKiB2YXIoLS10cmFuc2xhdGUtZmFjdG9yKSkiOiJjYWxjKHZhcigtLWJlZm9yZSkgKiB2YXIoLS1nYXApKSIsIi0tdHJhbnNmb3JtIjoidHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUpKSBzY2FsZSh2YXIoLS1zY2FsZSkpIn0sImRhdGEtc2xvdCI6ImJhc2UiLGNsYXNzOnUudmFsdWUuYmFzZSh7Y2xhc3M6W2cocyk/LmJhc2UsaC5vbkNsaWNrPyJjdXJzb3ItcG9pbnRlciI6dm9pZCAwXX0pLCJvblVwZGF0ZTpvcGVuIjp4PT5jKHgsaC5pZCksb25DbGljazp4PT5oLm9uQ2xpY2smJmgub25DbGljayhoKX0pLG51bGwsMTYsWyJwcm9ncmVzcyIsImNsb3NlIiwiZGF0YS1leHBhbmRlZCIsImRhdGEtZnJvbnQiLCJkYXRhLXB1bHNpbmciLCJzdHlsZSIsImNsYXNzIiwib25VcGRhdGU6b3BlbiIsIm9uQ2xpY2siXSkpKSwxMjgpKSxyZShnKFhOKSx4dChNdChnKGEpKSkse2RlZmF1bHQ6TSgoKT0+W3JlKGcoc0QpLHsiZGF0YS1leHBhbmRlZCI6ZC52YWx1ZSwiZGF0YS1zbG90Ijoidmlld3BvcnQiLGNsYXNzOnVlKHUudmFsdWUudmlld3BvcnQoe2NsYXNzOltnKHMpPy52aWV3cG9ydCx0LmNsYXNzXX0pKSxzdHlsZTpSbih7Ii0tc2NhbGUtZmFjdG9yIjoiMC4wNSIsIi0tdHJhbnNsYXRlLWZhY3RvciI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjFweCI6Ii0xcHgiLCItLWdhcCI6ZS5wb3NpdGlvbj8uc3RhcnRzV2l0aCgidG9wIik/IjE2cHgiOiItMTZweCIsIi0tZnJvbnQtaGVpZ2h0IjpgJHt5LnZhbHVlfXB4YCwiLS1oZWlnaHQiOmAke20udmFsdWV9cHhgfSksb25Nb3VzZWVudGVyOnZbMF18fCh2WzBdPWg9PmYudmFsdWU9ITApLG9uTW91c2VsZWF2ZTp2WzFdfHwodlsxXT1oPT5mLnZhbHVlPSExKX0sbnVsbCw4LFsiZGF0YS1leHBhbmRlZCIsImNsYXNzIiwic3R5bGUiXSldKSxfOjF9LDE2KV0pLF86M30sMTYsWyJzd2lwZS1kaXJlY3Rpb24iXSkpfX0pLGpCPU9iamVjdC5hc3NpZ24oekIse19fbmFtZToiVVRvYXN0ZXIifSk7ZnVuY3Rpb24gVkIoKXtjb25zdCBlPVBuKFtdKSx0PSh1LGMpPT57Y29uc3R7cHJvcHM6ZixkZWZhdWx0T3BlbjpkLGRlc3Ryb3lPbkNsb3NlOnB9PWN8fHt9LG09YnQoe2lkOlN5bWJvbCgiIiksaXNPcGVuOiEhZCxjb21wb25lbnQ6TG8odSksaXNNb3VudGVkOiEhZCxkZXN0cm95T25DbG9zZTohIXAsb3JpZ2luYWxQcm9wczpmfHx7fSxwcm9wczp7Li4uZn19KTtyZXR1cm4gZS5wdXNoKG0pLHsuLi5tLG9wZW46eT0+bihtLmlkLHkpLGNsb3NlOnk9PnIobS5pZCx5KSxwYXRjaDp5PT5pKG0uaWQseSl9fSxuPSh1LGMpPT57Y29uc3QgZj1hKHUpO2M/Zi5wcm9wcz17Li4uZi5vcmlnaW5hbFByb3BzLC4uLmN9OmYucHJvcHM9ey4uLmYub3JpZ2luYWxQcm9wc30sZi5pc09wZW49ITAsZi5pc01vdW50ZWQ9ITA7Y29uc3QgZD1uZXcgUHJvbWlzZShwPT5mLnJlc29sdmVQcm9taXNlPXApO3JldHVybiBPYmplY3QuYXNzaWduKGQse2lkOnUsaXNNb3VudGVkOmYuaXNNb3VudGVkLGlzT3BlbjpmLmlzT3BlbixyZXN1bHQ6ZH0pfSxyPSh1LGMpPT57Y29uc3QgZj1hKHUpO2YuaXNPcGVuPSExLGYucmVzb2x2ZVByb21pc2UmJihmLnJlc29sdmVQcm9taXNlKGMpLGYucmVzb2x2ZVByb21pc2U9dm9pZCAwKX0sbz0oKT0+e2UuZm9yRWFjaCh1PT5yKHUuaWQpKX0scz11PT57Y29uc3QgYz1hKHUpO2lmKGMuaXNNb3VudGVkPSExLGMuZGVzdHJveU9uQ2xvc2Upe2NvbnN0IGY9ZS5maW5kSW5kZXgoZD0+ZC5pZD09PXUpO2Uuc3BsaWNlKGYsMSl9fSxpPSh1LGMpPT57Y29uc3QgZj1hKHUpO2YucHJvcHM9ey4uLmYucHJvcHMsLi4uY319LGE9dT0+e2NvbnN0IGM9ZS5maW5kKGY9PmYuaWQ9PT11KTtpZighYyl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXkgbm90IGZvdW5kIik7cmV0dXJuIGN9O3JldHVybntvdmVybGF5czplLG9wZW46bixjbG9zZTpyLGNsb3NlQWxsOm8sY3JlYXRlOnQscGF0Y2g6aSx1bm1vdW50OnMsaXNPcGVuOnU9PmEodSkuaXNPcGVufX1jb25zdCBVQj1lZChWQiksSEI9e19fbmFtZToiVU92ZXJsYXlQcm92aWRlciIsc2V0dXAoZSl7Y29uc3R7b3ZlcmxheXM6dCx1bm1vdW50Om4sY2xvc2U6cn09VUIoKSxvPU4oKCk9PnQuZmlsdGVyKGE9PmEuaXNNb3VudGVkKSkscz1hPT57cihhKSxuKGEpfSxpPShhLGwpPT57cihhLGwpfTtyZXR1cm4oYSxsKT0+KFIoITApLF9lKEdlLG51bGwsdXIoby52YWx1ZSx1PT4oUigpLCQoRm4odS5jb21wb25lbnQpLGZlKHtrZXk6dS5pZH0se3JlZl9mb3I6ITB9LHUucHJvcHMse29wZW46dS5pc09wZW4sIm9uVXBkYXRlOm9wZW4iOmM9PnUuaXNPcGVuPWMsb25DbG9zZTpjPT5pKHUuaWQsYyksIm9uQWZ0ZXI6bGVhdmUiOmM9PnModS5pZCl9KSxudWxsLDE2LFsib3BlbiIsIm9uVXBkYXRlOm9wZW4iLCJvbkNsb3NlIiwib25BZnRlcjpsZWF2ZSJdKSkpLDEyOCkpfX0sV0I9e25hbWU6IkFwcCJ9LEdCPU9iamVjdC5hc3NpZ24oV0Ise3Byb3BzOnt0b29sdGlwOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMX0sdG9hc3Rlcjp7dHlwZTpbT2JqZWN0LG51bGxdLHJlcXVpcmVkOiExfSxsb2NhbGU6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiExfSxwb3J0YWw6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxyZXF1aXJlZDohMSxza2lwQ2hlY2s6ITAsZGVmYXVsdDoiYm9keSJ9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHNjcm9sbEJvZHk6e3R5cGU6W0Jvb2xlYW4sT2JqZWN0XSxyZXF1aXJlZDohMX0sbm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7Y29uc3QgdD1lLG49cG8oVnIodCwic2Nyb2xsQm9keSIpKSxyPXl0KCgpPT50LnRvb2x0aXApLG89eXQoKCk9PnQudG9hc3Rlcikscz15dCgoKT0+dC5sb2NhbGUpO3JldHVybiBOdChvdyxzKSxOdChzdyx5dCgoKT0+dC5wb3J0YWwpKSwoYSxsKT0+KFIoKSwkKGcobUkpLGZlKHsidXNlLWlkIjooKT0+YmYoKSxkaXI6dC5kaXJ8fHMudmFsdWU/LmRpcixsb2NhbGU6cy52YWx1ZT8uY29kZX0sZyhuKSkse2RlZmF1bHQ6TSgoKT0+W3JlKGcobEQpLHh0KE10KHIudmFsdWUpKSx7ZGVmYXVsdDpNKCgpPT5bZS50b2FzdGVyIT09bnVsbD8oUigpLCQoakIseHQoZmUoe2tleTowfSxvLnZhbHVlKSkse2RlZmF1bHQ6TSgoKT0+W1UoYS4kc2xvdHMsImRlZmF1bHQiKV0pLF86M30sMTYpKTpVKGEuJHNsb3RzLCJkZWZhdWx0Iix7a2V5OjF9KSxyZShIQildKSxfOjN9LDE2KV0pLF86M30sMTYsWyJ1c2UtaWQiLCJkaXIiLCJsb2NhbGUiXSkpfX0pLEtCPU9iamVjdC5hc3NpZ24oR0Ise19fbmFtZToiVUFwcCJ9KSxRQj0oZSx0KT0+e2NvbnN0IG49ZS5fX3ZjY09wdHN8fGU7Zm9yKGNvbnN0W3Isb11vZiB0KW5bcl09bztyZXR1cm4gbn0sWUI9R1QoRUIpLEpCPXt9O2Z1bmN0aW9uIFhCKGUsdCl7Y29uc3Qgbj1rQixyPVlCLG89Q0Iscz1OQixpPUtCO3JldHVybiBSKCksJChpLG51bGwse2RlZmF1bHQ6TSgoKT0+W3JlKG4pLHJlKHIpLHJlKHMsbnVsbCx7ZGVmYXVsdDpNKCgpPT5bcmUobyldKSxfOjF9KV0pLF86MX0pfWNvbnN0IFpCPVFCKEpCLFtbInJlbmRlciIsWEJdXSksZXE9e19fbmFtZToibnV4dC1lcnJvci1wYWdlIixwcm9wczp7ZXJyb3I6T2JqZWN0fSxzZXR1cChlKXtjb25zdCBuPWUuZXJyb3Iscj1OdW1iZXIobi5zdGF0dXNDb2RlfHw1MDApLG89cj09PTQwNCxzPW4uc3RhdHVzTWVzc2FnZT8/KG8/IlBhZ2UgTm90IEZvdW5kIjoiSW50ZXJuYWwgU2VydmVyIEVycm9yIiksaT1uLm1lc3NhZ2V8fG4udG9TdHJpbmcoKSxhPXZvaWQgMCxjPW8/dmkoKCk9PlhlKCgpPT5pbXBvcnQoIi4vRFBmWmtsMmUuanMiKSxfX3ZpdGVfX21hcERlcHMoWzYyLDYzXSksaW1wb3J0Lm1ldGEudXJsKSk6dmkoKCk9PlhlKCgpPT5pbXBvcnQoIi4vWlpzZlA5S1ouanMiKSxfX3ZpdGVfX21hcERlcHMoWzY0LDY1XSksaW1wb3J0Lm1ldGEudXJsKSk7cmV0dXJuKGYsZCk9PihSKCksJChnKGMpLHh0KE10KHtzdGF0dXM6ZyhyKSxzdGF0dXNUZXh0Omcocyksc3RhdHVzQ29kZTpnKHIpLHN0YXR1c01lc3NhZ2U6ZyhzKSxkZXNjcmlwdGlvbjpnKGkpLHN0YWNrOmcoYSl9KSksbnVsbCwxNikpfX0sdHE9e2tleTowfSxHaD17X19uYW1lOiJudXh0LXJvb3QiLHNldHVwKGUpe2NvbnN0IHQ9KCk9Pm51bGwsbj1CZSgpLHI9bi5kZWZlckh5ZHJhdGlvbigpO2lmKG4uaXNIeWRyYXRpbmcpe2NvbnN0IHU9bi5ob29rcy5ob29rT25jZSgiYXBwOmVycm9yIixyKTtKdCgpLmJlZm9yZUVhY2godSl9Y29uc3Qgbz0hMTtOdChxbyxBbCgpKSxuLmhvb2tzLmNhbGxIb29rV2l0aCh1PT51Lm1hcChjPT5jKCkpLCJ2dWU6c2V0dXAiKTtjb25zdCBzPU9sKCksaT0hMSxhPS9ib3RcYnxjaHJvbWUtbGlnaHRob3VzZXxmYWNlYm9va2V4dGVybmFsaGl0fGdvb2dsZVxiL2k7RmcoKHUsYyxmKT0+e2lmKG4uaG9va3MuY2FsbEhvb2soInZ1ZTplcnJvciIsdSxjLGYpPy5jYXRjaChkPT57fSksYS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKXJldHVybiBuLmhvb2tzLmNhbGxIb29rKCJhcHA6ZXJyb3IiLHUpLCExO2lmKEh5KHUpJiYodS5mYXRhbHx8dS51bmhhbmRsZWQpKXJldHVybiBuLnJ1bldpdGhDb250ZXh0KCgpPT5Dbyh1KSksITF9KTtjb25zdCBsPSExO3JldHVybih1LGMpPT4oUigpLCQoQ2Yse29uUmVzb2x2ZTpnKHIpfSx7ZGVmYXVsdDpNKCgpPT5bZyhpKT8oUigpLF9lKCJkaXYiLHRxKSk6ZyhzKT8oUigpLCQoZyhlcSkse2tleToxLGVycm9yOmcocyl9LG51bGwsOCxbImVycm9yIl0pKTpnKGwpPyhSKCksJChnKHQpLHtrZXk6Mixjb250ZXh0OmcobCl9LG51bGwsOCxbImNvbnRleHQiXSkpOmcobyk/KFIoKSwkKEZuKGcobykpLHtrZXk6M30pKTooUigpLCQoZyhaQikse2tleTo0fSkpXSksXzoxfSw4LFsib25SZXNvbHZlIl0pKX19O2xldCBLaDt7bGV0IGU7S2g9YXN5bmMgZnVuY3Rpb24oKXtpZihlKXJldHVybiBlO2NvbnN0IG49ISEod2luZG93Ll9fTlVYVF9fPy5zZXJ2ZXJSZW5kZXJlZD8/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9fTlVYVF9EQVRBX18iKT8uZGF0YXNldC5zc3I9PT0idHJ1ZSIpLHI9bj9FUyhHaCk6a1MoR2gpLG89TDEoe3Z1ZUFwcDpyfSk7YXN5bmMgZnVuY3Rpb24gcyhpKXthd2FpdCBvLmNhbGxIb29rKCJhcHA6ZXJyb3IiLGkpLG8ucGF5bG9hZC5lcnJvcnx8PXNvKGkpfXIuY29uZmlnLmVycm9ySGFuZGxlcj1zLG8uaG9vaygiYXBwOnN1c3BlbnNlOnJlc29sdmUiLCgpPT57ci5jb25maWcuZXJyb3JIYW5kbGVyPT09cyYmKHIuY29uZmlnLmVycm9ySGFuZGxlcj12b2lkIDApfSksIW4mJlBwLmlkJiZvLmhvb2soImFwcDpzdXNwZW5zZTpyZXNvbHZlIiwoKT0+e2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFBwLmlkKT8ucmVtb3ZlKCl9KTt0cnl7YXdhaXQgQjEobyxTQil9Y2F0Y2goaSl7cyhpKX10cnl7YXdhaXQgby5ob29rcy5jYWxsSG9vaygiYXBwOmNyZWF0ZWQiLHIpLGF3YWl0IG8uaG9va3MuY2FsbEhvb2soImFwcDpiZWZvcmVNb3VudCIsciksci5tb3VudChSMSksYXdhaXQgby5ob29rcy5jYWxsSG9vaygiYXBwOm1vdW50ZWQiLHIpLGF3YWl0IGl0KCl9Y2F0Y2goaSl7cyhpKX1yZXR1cm4gcn0sZT1LaCgpLmNhdGNoKHQ9Pnt0aHJvdyB0fSl9ZXhwb3J0e0ZlIGFzICQsbnEgYXMgQSxnQyBhcyBCLEpkIGFzIEMsZHcgYXMgRCxfTSBhcyBFLEdlIGFzIEYsJGUgYXMgRyxmdyBhcyBILFVvIGFzIEksU3QgYXMgSixMbiBhcyBLLFUgYXMgTCx1ZSBhcyBNLHV0IGFzIE4sQ0IgYXMgTyxNZSBhcyBQLGNxIGFzIFEsUGUgYXMgUixidCBhcyBTLEtlIGFzIFQsbXggYXMgVSxtdyBhcyBWLGl4IGFzIFcsVHEgYXMgWCxTcSBhcyBZLGlxIGFzIFosUUIgYXMgXyx3dCBhcyBhLGYyIGFzIGEkLEJpIGFzIGEwLE50IGFzIGExLENzIGFzIGEyLG1vIGFzIGEzLG90IGFzIGE0LHByIGFzIGE1LGl0IGFzIGE2LGduIGFzIGE3LFVlIGFzIGE4LGFvIGFzIGE5LGdxIGFzIGFBLFFQIGFzIGFCLFNzIGFzIGFDLHBvIGFzIGFELFJuIGFzIGFFLHl0IGFzIGFGLG1uIGFzIGFHLEZvIGFzIGFILFJfIGFzIGFJLHNxIGFzIGFKLGdMIGFzIGFLLHpxIGFzIGFMLCRyIGFzIGFNLEVxIGFzIGFOLGJMIGFzIGFPLHlMIGFzIGFQLHZMIGFzIGFRLGhMIGFzIGFSLHJxIGFzIGFTLGh3IGFzIGFULEF2IGFzIGFVLGpyIGFzIGFWLGxxIGFzIGFXLHpQIGFzIGFYLEhvIGFzIGFZLG5oIGFzIGFaLGQyIGFzIGFfLGZlIGFzIGFhLFJyIGFzIGFiLEZuIGFzIGFjLEFpIGFzIGFkLElsIGFzIGFlLGJJIGFzIGFmLHpsIGFzIGFnLHpyIGFzIGFoLCRzIGFzIGFpLFZyIGFzIGFqLHhkIGFzIGFrLGJmIGFzIGFsLHdNIGFzIGFtLG94IGFzIGFuLEkyIGFzIGFvLFRpIGFzIGFwLGJxIGFzIGFxLHB3IGFzIGFyLExlIGFzIGFzLHdxIGFzIGF0LEVuIGFzIGF1LHh0IGFzIGF2LE10IGFzIGF3LFFsIGFzIGF4LE9lIGFzIGF5LG9uIGFzIGF6LHJlIGFzIGIsX3EgYXMgYiQsaDIgYXMgYjAscDIgYXMgYjEsJHEgYXMgYjIsbTIgYXMgYjMsTXEgYXMgYjQseTIgYXMgYjUsZkQgYXMgYjYscXEgYXMgYjcsTjAgYXMgYjgsbXQgYXMgYjksRFAgYXMgYkEsQ3EgYXMgYkIsR0wgYXMgYkMsZmggYXMgYkQsQmUgYXMgYkUsUnMgYXMgYkYsRnEgYXMgYkcscXUgYXMgYkgsYzAgYXMgYkkscjAgYXMgYkosZjAgYXMgYkssdTAgYXMgYkwsVmcgYXMgYk0sVmkgYXMgYk4sdnMgYXMgYk8seXMgYXMgYlAsaXcgYXMgYlEsbyQgYXMgYlIsRWUgYXMgYlMseXEgYXMgYlQsdnEgYXMgYlUsX0wgYXMgYlYsZWYgYXMgYlcsaW8gYXMgYlgsdGQgYXMgYlksVXQgYXMgYloseHEgYXMgYl8sTG8gYXMgYmEsd2wgYXMgYmIseUkgYXMgYmMsbVIgYXMgYmQsQm0gYXMgYmUsaHEgYXMgYmYsZ1IgYXMgYmcsWGIgYXMgYmgsdkkgYXMgYmksdDAgYXMgYmoscm4gYXMgYmssYTAgYXMgYmwsaTAgYXMgYm0sRTIgYXMgYm4sQTIgYXMgYm8sbGQgYXMgYnAsWWwgYXMgYnEsd2QgYXMgYnIsS2wgYXMgYnMsd24gYXMgYnQsR2wgYXMgYnUsX2QgYXMgYnYsdWggYXMgYncsdUQgYXMgYngsamUgYXMgYnkseWQgYXMgYnosX2UgYXMgYyxqUCBhcyBjMCxobiBhcyBjMSx2ZiBhcyBjMixKYiBhcyBjMyxBdCBhcyBjNCxxciBhcyBjNSxrcSBhcyBjNixuMCBhcyBjNyxMXyBhcyBjOCxvcSBhcyBjOSxKZiBhcyBjYSxBcSBhcyBjYixDSSBhcyBjYyxwbiBhcyBjZCxfXyBhcyBjZSxCcSBhcyBjZixuZCBhcyBjZyxHbiBhcyBjaCxlZCBhcyBjaSxLSSBhcyBjaixzeCBhcyBjayxfMiBhcyBjbCxEcSBhcyBjbSxQcSBhcyBjbixHSSBhcyBjbyxWbSBhcyBjcCxMcSBhcyBjcSxqbSBhcyBjcixPcSBhcyBjcyxOcSBhcyBjdCxRSSBhcyBjdSxScSBhcyBjdixJcSBhcyBjdyxxZyBhcyBjeCxGbCBhcyBjeSxzdCBhcyBkLGNDIGFzIGUsc2UgYXMgZixTZCBhcyBnLCQgYXMgaCxnIGFzIGksTnIgYXMgaixfbiBhcyBrLE4gYXMgbCxmbyBhcyBtLE1mIGFzIG4sUiBhcyBvLFlUIGFzIHAsdXIgYXMgcSxHIGFzIHIsTHYgYXMgcyxydCBhcyB0LERrIGFzIHUsZGUgYXMgdixNIGFzIHcsQWwgYXMgeCxKdCBhcyB5LGpxIGFzIHp9Owo=", "/_nuxt/s3p0c03M.js": "aW1wb3J0e18gYXMgbH1mcm9tIi4vQzFPUWl5VUQuanMiO2ltcG9ydHtmIGFzIGksbiBhcyB1LG8saCBhcyBtLHcgYXMgYSxhIGFzIHQsaSBhcyBmLGMgYXMgaCxiIGFzIHMsayBhcyBiLHYgYXMgeCxsIGFzICQsdSBhcyBnfWZyb20iLi9vOHRkX0cwSi5qcyI7aW1wb3J0e18gYXMga31mcm9tIi4vQlNSS3FHclAuanMiO2ltcG9ydHtfIGFzIHl9ZnJvbSIuL0JkNC1PYzM2LmpzIjtpbXBvcnR7XyBhcyBVfWZyb20iLi9DbDRpNHJTTS5qcyI7aW1wb3J0Ii4vQ3RhMTVzRy0uanMiO2ltcG9ydCIuL0NjNnppaC1SLmpzIjtpbXBvcnQiLi9naHFZYklTVC5qcyI7aW1wb3J0Ii4vQmhXUzE4aTcuanMiO2ltcG9ydCIuL18ybFNkcjEzLmpzIjtjb25zdCBCPXtjbGFzczoic3BhY2UteS0yIHRleHQtc20ifSxDPXtrZXk6MCxjbGFzczoiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIifSx3PWkoe19fbmFtZToiRGFzaGJvYXJkR2V0dGluZ1N0YXJ0ZWQiLHNldHVwKF8pe2NvbnN0IHI9dSgpLG49JCgoKT0+KHIuY3VycmVudFVzZXI/LmFiaWxpdGllcz8/W10pLmluY2x1ZGVzKCJ1c2VyOmltcGVyc29uYXRlIikpO3JldHVybihjLGUpPT57Y29uc3QgZD1iLHA9aztyZXR1cm4gbygpLG0ocCxudWxsLHtoZWFkZXI6YSgoKT0+Wy4uLmVbMF18fChlWzBdPVt0KCJwIix7Y2xhc3M6ImZvbnQtc2VtaWJvbGQgdGV4dC1oaWdobGlnaHRlZCJ9LCIgR2V0IHN0YXJ0ZWQgIiwtMSldKV0pLGRlZmF1bHQ6YSgoKT0+W3QoInVsIixCLFtmKG4pPyhvKCksaCgibGkiLEMsW3MoZCx7bmFtZToiaS1sdWNpZGUtdXNlci1jb2ciLGNsYXNzOiJzaXplLTQgdGV4dC1tdXRlZCJ9KSxlWzFdfHwoZVsxXT10KCJzcGFuIix7Y2xhc3M6InRleHQtbXV0ZWQifSwiVXNlIHRoZSBkcm9wZG93biBhdCB0aGUgdG9wIG9mIHRoZSBzaWRlYmFyIHRvIGltcGVyc29uYXRlIGFueSB1c2VyLiIsLTEpKV0pKTp4KCIiLCEwKV0pXSksXzoxfSl9fX0pLEQ9e2NsYXNzOiJzcGFjZS15LTYifSxQPWkoe19fbmFtZToiZGFzaGJvYXJkIixzZXR1cChfKXtyZXR1cm4gZyh7dGl0bGU6IkRhc2hib2FyZCJ9KSwocixuKT0+e2NvbnN0IGM9bDtyZXR1cm4gbygpLG0oYyx7aWQ6ImRhc2hib2FyZCJ9LHtoZWFkZXI6YSgoKT0+W3MoeSx7dGl0bGU6IkhvbWUifSldKSxib2R5OmEoKCk9Plt0KCJkaXYiLEQsW3MoVSkscyh3KV0pXSksXzoxfSl9fX0pO2V4cG9ydHtQIGFzIGRlZmF1bHR9Owo=", "/favicon.ico": "AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AIIHcAJCC3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C2wBwgNsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAgdsAgILdAJ+C3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfgdwAkIDfABCB3AC/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gdwAv4DfACAAAAAAAAAAAAAAAACC2gBggtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gdwAv4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA34DfACAAAAAAAAAAAAAAAACC3ADfgtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gt4Ar4LcAP+C3AD/gtwA/4LbAMCC3QCfgt0An4LdAJ+C3QCfgt0An4HbAM+C3AD/gtwA/4LcAP+C3AD/gtwA3wAAAAAAAAAAAAAAAIDfACCC3QCfgt0An4LdAJ+C3QCfgt0An4LdAJ+C3QCfg9wAv4LcAP+C3AD/gtwA/4HcAL+A3wAggtwA/4LcAP+C3AD/gdsAzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfACCC2gDQgtwA/4LcAP+C3AD/gdsAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACB3AC/gtwA/4LcAP+C3AD/gN8AIAAAAACC3QCPgtwA/4LcAP+C3AD/gtoAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfABCC3ADfgtwA/4LcAP+C3ADvgN8AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNwAUILcAP+C3AD/gtwA/4LbAI8AAAAAAAAAAIDfACCC3ADfgtwA/4LcAP+C3ADfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDcAFCC3AD/gtwA/4LcAP+C3ACfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfABCB3ADfgtwA/4LcAP+C3ADvgN8AEAAAAAAAAAAAAAAAAILaAGCC3AD/gtwA/4LcAP+B2wCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIHaAKCC3AD/gtwA/4LcAP+A3wAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgdsAgILcAP+C3AD/gtwA/4LbAHAAAAAAAAAAAAAAAAAAAAAAAAAAAILcAN+C3AD/gtwA/4LcAP+A3wAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AIILcAP+C3AD/gtwA/4LcAN8AAAAAAAAAAAAAAAAAAAAAAAAAAIDfACCC3ADvgtwA/4LcAP+B3AC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AMILcAP+C3AD/gtwA/4LcAJ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgt0Af4LcAP+C3AD/gtwA/4LaAGAAAAAAAAAAAAAAAAAAAAAAgdwAv4LcAP+C3AD/gtwA/4DbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgdoAoILcAP+C3AD/gtwA/4DcAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA3wAwgtwA/4LcAP+C3AD/gtwA34DfACAAAAAAAAAAAIDbAECC3AD/gtwA/4LcAP+C3ACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA3wAggtwA/4LcAP+C3AD/gtwA3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIHaAKCC3AD/gtwA/4LcAP+C3AD/gdwAkAAAAAAAAAAAgd0Az4LcAP+C3AD/gtwA74DfACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC3QB/gtwA/4LcAP+C3AD/gtoAYAAAAAAAAAAAAAAAAAAAAACA2wBAgtwA/4LcAP+C3AD/gtwA/4LcAP+C3AD/gN8AIILbAHCC3AD/gtwA/4LcAP+B2wCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC3ADfgtwA/4LcAP+C3ADfgN8AIAAAAAAAAAAAAAAAAIHcAL+C3AD/gtwA/4LcAO+C3AD/gtwA/4LcAP+D3ACvgtwA74LcAP+C3AD/gtwA34DfABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILaAGCC3AD/gtwA/4LcAP+C3ACfAAAAAAAAAACC2wBwgtwA/4LcAP+C3AD/gdsAgIHaAKCC3AD/gtwA/4LcAP+C3AD/gtwA/4LcAP+A2wBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILeAK+C3AD/gtwA/4LcAP+A3wAggN8AEILcAO+C3AD/gtwA/4LcAN+A3wAQgN8AIILcAN+C3AD/gtwA/4LcAP+C3AD/gdwAvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgN8AIILcAP+C3AD/gtwA/4HcAL+B2wCAgtwA/4LcAP+C3AD/gNwAUAAAAAAAAAAAg90Ab4LcAP+C3AD/gtwA/4LcAP+A2gAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgdoAoILcAP+C3AD/gtwA/4LcAP+C3AD/gtwA/4HcAL8AAAAAAAAAAAAAAAAAAAAAgtoA0ILcAP+C3AD/gt0AfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA3wAggtwA34LcAP+C3AD/gtwA/4LcAP+C3AD/gNsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAgNsAQIDbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC2gBggtwA/4LcAP+C3AD/gtwA/4LbAI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC3ADfgtwA/4LcAP+C3ADvgN8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDfACCB3ACQgdwAkIDfACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////8AB8AAAAHAAAAA4AAAAOAAB+B/4IPwP8GD+D+Bwfwfg+D8Hwfg/g8H8H4GD/B+Bg/4PAAf/BwAH/wYAD/+AAB//gBgf/8A8P//APn//4H////B////w/////////////////////////////8=", "/robots.txt": "VXNlci1BZ2VudDogKgpEaXNhbGxvdzoK" }, "migrations": [{ "name": "0000_outgoing_leo", "sql": "CREATE TABLE `activities` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`action` text NOT NULL,\n\t`action_ref_id` text,\n\t`test` text,\n\t`metadata` text,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE cascade ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `activities_user_id_idx` ON `activities` (`user_id`);--> statement-breakpoint\nCREATE TABLE `identities` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`provider` text NOT NULL,\n\t`provider_user_id` text NOT NULL,\n\t`provider_data` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE cascade ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `identities_user_id_idx` ON `identities` (`user_id`);--> statement-breakpoint\nCREATE UNIQUE INDEX `identities_provider_unique_idx` ON `identities` (`provider`,`provider_user_id`);--> statement-breakpoint\nCREATE TABLE `users` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`username` text,\n\t`name` text,\n\t`primary_email` text NOT NULL,\n\t`primary_phone` text,\n\t`avatar` text,\n\t`verified` integer DEFAULT false,\n\t`email_notifications` integer DEFAULT true,\n\t`abilities` text DEFAULT '[]' NOT NULL,\n\t`custom_data` text DEFAULT '{}',\n\t`last_sign_in_at` integer,\n\t`is_suspended` integer DEFAULT false,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `users_primary_email_unique` ON `users` (`primary_email`);--> statement-breakpoint\nCREATE UNIQUE INDEX `users_primary_phone_unique` ON `users` (`primary_phone`);--> statement-breakpoint\nCREATE INDEX `users_username_idx` ON `users` (`username`);--> statement-breakpoint\nCREATE INDEX `users_name_idx` ON `users` (`name`);" }, { "name": "0001_goofy_quasar", "sql": "CREATE TABLE `organization_members` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`abilities` text DEFAULT '[]' NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `org_members_user_org_unique` ON `organization_members` (`user_id`,`organization_id`);--> statement-breakpoint\nCREATE INDEX `org_members_org_idx` ON `organization_members` (`organization_id`);--> statement-breakpoint\nCREATE TABLE `organizations` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`name` text NOT NULL,\n\t`slug` text NOT NULL,\n\t`owner_id` text,\n\t`is_personal` integer DEFAULT false NOT NULL,\n\t`is_system` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`owner_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `organizations_slug_unique` ON `organizations` (`slug`);--> statement-breakpoint\nCREATE INDEX `organizations_is_system_idx` ON `organizations` (`is_system`);--> statement-breakpoint\nALTER TABLE `users` DROP COLUMN `abilities`;" }, { "name": "0002_sad_cable", "sql": "CREATE TABLE `permissions` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`key` text NOT NULL,\n\t`subject` text NOT NULL,\n\t`action` text NOT NULL,\n\t`scope` text,\n\t`org_kind` text NOT NULL,\n\t`description` text,\n\t`created_at` integer NOT NULL\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `permissions_key_unique` ON `permissions` (`key`);--> statement-breakpoint\nCREATE INDEX `permissions_subject_idx` ON `permissions` (`subject`);" }, { "name": "0003_narrow_swordsman", "sql": "CREATE TABLE `todos` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`user_id` text,\n\t`title` text NOT NULL,\n\t`completed` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `todos_org_idx` ON `todos` (`organization_id`);" }, { "name": "0004_cloudy_nicolaos", "sql": "CREATE TABLE `notifications` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`user_id` text NOT NULL,\n\t`sender_name` text NOT NULL,\n\t`body` text NOT NULL,\n\t`is_read` integer DEFAULT false NOT NULL,\n\t`dedupe_key` text,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `notifications_user_org_idx` ON `notifications` (`user_id`,`organization_id`);--> statement-breakpoint\nCREATE INDEX `notifications_created_idx` ON `notifications` (`created_at`);--> statement-breakpoint\nCREATE UNIQUE INDEX `notifications_dedupe_idx` ON `notifications` (`user_id`,`organization_id`,`dedupe_key`);" }, { "name": "0005_sweet_gideon", "sql": "ALTER TABLE `users` ADD `bio` text;--> statement-breakpoint\nALTER TABLE `users` ADD `notification_prefs` text DEFAULT '{\"email\":true,\"product_updates\":true,\"weekly_digest\":false,\"important_updates\":true}';" }, { "name": "0006_cooing_vindicator", "sql": "CREATE TABLE `organization_invitations` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`email` text NOT NULL,\n\t`role` text DEFAULT 'member' NOT NULL,\n\t`token` text NOT NULL,\n\t`invited_by` text,\n\t`created_at` integer NOT NULL,\n\t`expires_at` integer NOT NULL,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`invited_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `organization_invitations_token_unique` ON `organization_invitations` (`token`);--> statement-breakpoint\nCREATE INDEX `org_invitations_org_idx` ON `organization_invitations` (`organization_id`);--> statement-breakpoint\nCREATE INDEX `org_invitations_token_idx` ON `organization_invitations` (`token`);" }, { "name": "0007_roles_and_member_roles", "sql": "CREATE TABLE `roles` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`name` text NOT NULL,\n\t`description` text,\n\t`permissions` text DEFAULT '[]' NOT NULL,\n\t`is_system` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `roles_org_name_unique` ON `roles` (`organization_id`,`name`);--> statement-breakpoint\nCREATE INDEX `roles_org_idx` ON `roles` (`organization_id`);--> statement-breakpoint\nCREATE TABLE `organization_member_roles` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`member_id` text NOT NULL,\n\t`role_id` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`member_id`) REFERENCES `organization_members`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `member_roles_unique` ON `organization_member_roles` (`member_id`,`role_id`);--> statement-breakpoint\nCREATE INDEX `member_roles_member_idx` ON `organization_member_roles` (`member_id`);--> statement-breakpoint\nCREATE INDEX `member_roles_role_idx` ON `organization_member_roles` (`role_id`);--> statement-breakpoint\nALTER TABLE `organization_invitations` ADD `role_id` text REFERENCES roles(id) ON DELETE set null;--> statement-breakpoint\nALTER TABLE `organization_invitations` DROP COLUMN `role`;\n" }, { "name": "0008_tense_guardian", "sql": "CREATE TABLE `organization_credits` (\n\t`organization_id` text PRIMARY KEY NOT NULL,\n\t`balance` integer DEFAULT 0 NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE TABLE `transactions` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`user_id` text,\n\t`type` text NOT NULL,\n\t`status` text DEFAULT 'pending' NOT NULL,\n\t`amount` integer NOT NULL,\n\t`gateway_ref` text,\n\t`sepay_event_id` text,\n\t`metadata` text DEFAULT '{}',\n\t`expires_at` integer,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `transactions_gateway_ref_unique` ON `transactions` (`gateway_ref`);--> statement-breakpoint\nCREATE UNIQUE INDEX `transactions_sepay_event_id_unique` ON `transactions` (`sepay_event_id`);--> statement-breakpoint\nCREATE INDEX `transactions_org_idx` ON `transactions` (`organization_id`);--> statement-breakpoint\nCREATE INDEX `transactions_status_idx` ON `transactions` (`status`);" }, { "name": "0009_condemned_sandman", "sql": "CREATE TABLE `referrals` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`referrer_id` text NOT NULL,\n\t`referee_id` text NOT NULL,\n\t`source` text DEFAULT 'link' NOT NULL,\n\t`reward_paid` integer DEFAULT false NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`referrer_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`referee_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `referrals_referee_unique` ON `referrals` (`referee_id`);--> statement-breakpoint\nCREATE INDEX `referrals_referrer_idx` ON `referrals` (`referrer_id`);--> statement-breakpoint\nCREATE TABLE `user_referrals` (\n\t`user_id` text PRIMARY KEY NOT NULL,\n\t`code` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `user_referrals_code_unique` ON `user_referrals` (`code`);" }, { "name": "0010_abnormal_barracuda", "sql": "CREATE TABLE `support_ticket_messages` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`ticket_id` text NOT NULL,\n\t`author_id` text,\n\t`author_role` text NOT NULL,\n\t`body` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\tFOREIGN KEY (`ticket_id`) REFERENCES `support_tickets`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`author_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `support_ticket_messages_ticket_idx` ON `support_ticket_messages` (`ticket_id`,`created_at`);--> statement-breakpoint\nCREATE TABLE `support_tickets` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`user_id` text NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`kind` text NOT NULL,\n\t`category` text,\n\t`subject` text NOT NULL,\n\t`status` text DEFAULT 'open' NOT NULL,\n\t`assigned_to` text,\n\t`last_message_at` integer NOT NULL,\n\t`last_message_role` text DEFAULT 'user' NOT NULL,\n\t`reminder_sent_at` integer,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`assigned_to`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `support_tickets_user_idx` ON `support_tickets` (`user_id`);--> statement-breakpoint\nCREATE INDEX `support_tickets_status_idx` ON `support_tickets` (`status`);--> statement-breakpoint\nCREATE INDEX `support_tickets_assigned_idx` ON `support_tickets` (`assigned_to`);--> statement-breakpoint\nCREATE INDEX `support_tickets_reminder_idx` ON `support_tickets` (`last_message_role`,`last_message_at`);" }, { "name": "0011_drop_todos_add_products", "sql": "DROP TABLE `todos`;\n--> statement-breakpoint\nCREATE TABLE `products` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`name` text NOT NULL,\n\t`description` text,\n\t`type` text DEFAULT 'one_time' NOT NULL,\n\t`price` integer NOT NULL,\n\t`price_currency` text DEFAULT 'USD' NOT NULL,\n\t`billing_interval` text,\n\t`status` text DEFAULT 'active' NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer\n);\n--> statement-breakpoint\nCREATE INDEX `products_status_idx` ON `products` (`status`);\n--> statement-breakpoint\nCREATE INDEX `products_type_idx` ON `products` (`type`);\n" }, { "name": "0012_project_layer", "sql": "ALTER TABLE `organization_invitations` ADD `project_ids` text DEFAULT '[]';\n--> statement-breakpoint\nCREATE TABLE `projects` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`name` text NOT NULL,\n\t`description` text,\n\t`status` text DEFAULT 'active' NOT NULL,\n\t`created_by` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`created_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `projects_org_idx` ON `projects` (`organization_id`);\n--> statement-breakpoint\nCREATE INDEX `projects_status_idx` ON `projects` (`status`);\n--> statement-breakpoint\nCREATE TABLE `project_products` (\n\t`project_id` text NOT NULL,\n\t`product_id` text NOT NULL,\n\t`quantity` integer DEFAULT 1 NOT NULL,\n\t`added_at` integer NOT NULL,\n\tPRIMARY KEY(`project_id`, `product_id`),\n\tFOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE TABLE `project_members` (\n\t`project_id` text NOT NULL,\n\t`user_id` text NOT NULL,\n\t`role` text DEFAULT 'member' NOT NULL,\n\t`added_at` integer NOT NULL,\n\tPRIMARY KEY(`project_id`, `user_id`),\n\tFOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `project_members_user_idx` ON `project_members` (`user_id`);\n" }, { "name": "0013_invoice_billing", "sql": "CREATE TABLE `organization_billing_settings` (\n\t`organization_id` text PRIMARY KEY NOT NULL,\n\t`company_name` text,\n\t`tax_id` text,\n\t`address` text,\n\t`city` text,\n\t`country` text DEFAULT 'US',\n\t`currency` text DEFAULT 'USD' NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE TABLE `invoices` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`number` text NOT NULL,\n\t`status` text DEFAULT 'draft' NOT NULL,\n\t`currency` text DEFAULT 'USD' NOT NULL,\n\t`subtotal` integer DEFAULT 0 NOT NULL,\n\t`tax` integer DEFAULT 0 NOT NULL,\n\t`total` integer DEFAULT 0 NOT NULL,\n\t`issued_at` integer,\n\t`due_at` integer,\n\t`paid_at` integer,\n\t`notes` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `invoices_number_unique` ON `invoices` (`number`);\n--> statement-breakpoint\nCREATE INDEX `invoices_org_idx` ON `invoices` (`organization_id`);\n--> statement-breakpoint\nCREATE INDEX `invoices_status_idx` ON `invoices` (`status`);\n--> statement-breakpoint\nCREATE TABLE `invoice_items` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`invoice_id` text NOT NULL,\n\t`description` text NOT NULL,\n\t`quantity` integer DEFAULT 1 NOT NULL,\n\t`unit_price` integer NOT NULL,\n\t`currency` text DEFAULT 'USD' NOT NULL,\n\t`amount` integer NOT NULL,\n\tFOREIGN KEY (`invoice_id`) REFERENCES `invoices`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE INDEX `invoice_items_invoice_idx` ON `invoice_items` (`invoice_id`);\n" }, { "name": "0014_migrate_todo_abilities", "sql": "UPDATE organization_members\nSET abilities = (\n SELECT json_group_array(DISTINCT mapped)\n FROM (\n SELECT\n CASE\n WHEN value = 'todo:manage' THEN 'project:manage'\n WHEN value = 'todo:read' THEN 'project:read'\n WHEN value = 'todo:write' THEN 'project:write'\n WHEN value = 'todo:delete:self' THEN 'project:write'\n ELSE value\n END AS mapped\n FROM json_each(abilities)\n )\n)\nWHERE abilities LIKE '%todo:%';\n" }, { "name": "0015_grant_billing_abilities", "sql": "-- Grant billing:manage + billing:read to org admins (identified by user:manage)\nUPDATE organization_members\nSET abilities = json_insert(\n json_insert(abilities, '$[#]', 'billing:read'),\n '$[#]', 'billing:manage'\n)\nWHERE json_type(abilities) = 'array'\n AND abilities LIKE '%user:manage%'\n AND abilities NOT LIKE '%billing:manage%';\n--> statement-breakpoint\n-- Grant billing:read to regular members (identified by project:read/write, not already billing-capable)\nUPDATE organization_members\nSET abilities = json_insert(abilities, '$[#]', 'billing:read')\nWHERE json_type(abilities) = 'array'\n AND (abilities LIKE '%project:read%' OR abilities LIKE '%project:write%')\n AND abilities NOT LIKE '%billing:read%'\n AND abilities NOT LIKE '%billing:manage%';\n" }, { "name": "0016_aromatic_jack_murdock", "sql": "CREATE TABLE `selfhost_audit` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`actor_user_id` text,\n\t`action` text NOT NULL,\n\t`success` integer NOT NULL,\n\t`cf_account_id` text,\n\t`error_message` text,\n\t`started_at` integer NOT NULL,\n\t`finished_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade,\n\tFOREIGN KEY (`actor_user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE set null\n);\n--> statement-breakpoint\nCREATE INDEX `selfhost_audit_org_idx` ON `selfhost_audit` (`organization_id`);--> statement-breakpoint\nCREATE INDEX `selfhost_audit_started_idx` ON `selfhost_audit` (`started_at`);--> statement-breakpoint\nCREATE TABLE `selfhost_deployments` (\n\t`organization_id` text PRIMARY KEY NOT NULL,\n\t`cf_account_id` text,\n\t`cf_script_name` text,\n\t`workers_dev_url` text,\n\t`deployed_version` text,\n\t`deployed_at` integer,\n\t`cf_token_ciphertext` text,\n\t`cf_token_iv` text,\n\t`cf_token_expires_at` integer,\n\t`status` text DEFAULT 'idle' NOT NULL,\n\t`last_error` text,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n" }, { "name": "0017_brave_pete_wisdom", "sql": "CREATE TABLE `selfhost_deployment_secrets` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`organization_id` text NOT NULL,\n\t`key` text NOT NULL,\n\t`ciphertext` text NOT NULL,\n\t`iv` text NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer,\n\tFOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade\n);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `selfhost_secrets_org_key_unique` ON `selfhost_deployment_secrets` (`organization_id`,`key`);\n" }], "version": "v2.0.1" } \ No newline at end of file diff --git a/bundle.sha256 b/bundle.sha256 deleted file mode 100644 index 0638cdcb..00000000 --- a/bundle.sha256 +++ /dev/null @@ -1 +0,0 @@ -6fc3dde206a7f0ae38699bb3c4e01b2d7e6e4f3be87e53e405090b5782754d99 \ No newline at end of file diff --git a/layers/selfhost/app/api/useSelfhostApi.ts b/layers/selfhost/app/api/useSelfhostApi.ts index 1fbda027..841d1924 100644 --- a/layers/selfhost/app/api/useSelfhostApi.ts +++ b/layers/selfhost/app/api/useSelfhostApi.ts @@ -50,6 +50,12 @@ export function useSelfhostApi() { }) } + function revealSelfhostSecret(key: string) { + return $http<{ key: string, value: string, updatedAt: string | null }>( + `/api/selfhost/secrets/${encodeURIComponent(key)}/reveal`, + ) + } + function testSelfhostEmail(to: string) { return $http<{ reachable: boolean, status: number, workerUrl: string, note: string }>('/api/selfhost/test-email', { method: 'POST', @@ -57,7 +63,7 @@ export function useSelfhostApi() { }) } - return { fetchSelfhostStatus, listCloudflareAccounts, deploySelfhost, disconnectSelfhost, fetchSelfhostAudit, fetchSelfhostSecrets, patchSelfhostSecrets, testSelfhostEmail } + return { fetchSelfhostStatus, listCloudflareAccounts, deploySelfhost, disconnectSelfhost, fetchSelfhostAudit, fetchSelfhostSecrets, patchSelfhostSecrets, revealSelfhostSecret, testSelfhostEmail } } export interface SelfhostSecretItem { diff --git a/layers/selfhost/app/components/Selfhost/SelfhostSecretImportModal.vue b/layers/selfhost/app/components/Selfhost/SelfhostSecretImportModal.vue new file mode 100644 index 00000000..0460e9e9 --- /dev/null +++ b/layers/selfhost/app/components/Selfhost/SelfhostSecretImportModal.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/layers/selfhost/app/components/Selfhost/SelfhostSecretsCard.vue b/layers/selfhost/app/components/Selfhost/SelfhostSecretsCard.vue deleted file mode 100644 index 3933cd3e..00000000 --- a/layers/selfhost/app/components/Selfhost/SelfhostSecretsCard.vue +++ /dev/null @@ -1,182 +0,0 @@ - - - diff --git a/layers/selfhost/app/components/Selfhost/SelfhostSecretsTable.vue b/layers/selfhost/app/components/Selfhost/SelfhostSecretsTable.vue new file mode 100644 index 00000000..188cd8d1 --- /dev/null +++ b/layers/selfhost/app/components/Selfhost/SelfhostSecretsTable.vue @@ -0,0 +1,485 @@ + + + + + diff --git a/layers/selfhost/app/pages/settings/self-host.vue b/layers/selfhost/app/pages/settings/self-host.vue index 075b2b19..d8dd2d44 100644 --- a/layers/selfhost/app/pages/settings/self-host.vue +++ b/layers/selfhost/app/pages/settings/self-host.vue @@ -1,7 +1,7 @@